summaryrefslogtreecommitdiff
path: root/lib/uri/uri.gemspec
AgeCommit message (Expand)Author
2020-08-18Update the license for the default gems to dual licensesHiroshi SHIBATA
2020-03-12Add workaround for test-bundler failureKazuhiro NISHIYAMA
2019-11-11Revert "Revert "Promote uri to default gems""Hiroshi SHIBATA
2019-11-09Revert "Promote uri to default gems"Hiroshi SHIBATA
2019-11-09Promote uri to default gemsHiroshi SHIBATA
.9%;'/> -rw-r--r--.cirrus.yml133
-rw-r--r--.dir-locals.el39
-rw-r--r--.document31
-rw-r--r--.editorconfig14
-rw-r--r--.gdbinit209
-rw-r--r--.git-blame-ignore-revs24
-rw-r--r--.gitattributes2
-rw-r--r--.github/SECURITY.md9
-rw-r--r--.github/auto_request_review.yml14
-rw-r--r--.github/dependabot.yml6
-rw-r--r--.github/workflows/annocheck.yml161
-rw-r--r--.github/workflows/auto_request_review.yml19
-rw-r--r--.github/workflows/baseruby.yml78
-rw-r--r--.github/workflows/bundled_gems.yml138
-rw-r--r--.github/workflows/check_dependencies.yml79
-rw-r--r--.github/workflows/check_misc.yml112
-rw-r--r--.github/workflows/cirrus-notify.yml46
-rw-r--r--.github/workflows/codeql-analysis.yml110
-rw-r--r--.github/workflows/compilers.yml286
-rw-r--r--.github/workflows/dependabot_automerge.yml26
-rw-r--r--.github/workflows/macos.yml115
-rw-r--r--.github/workflows/mingw.yml179
-rw-r--r--.github/workflows/rjit-bindgen.yml104
-rw-r--r--.github/workflows/rjit.yml134
-rw-r--r--.github/workflows/scorecards.yml72
-rw-r--r--.github/workflows/spec_guards.yml61
-rw-r--r--.github/workflows/ubuntu.yml144
-rw-r--r--.github/workflows/wasm.yml134
-rw-r--r--.github/workflows/windows.yml157
-rw-r--r--.github/workflows/yjit-ubuntu.yml177
-rw-r--r--.gitignore64
-rw-r--r--.indent.pro17
-rw-r--r--.rdoc_options4
-rw-r--r--.rspec_parallel2
-rw-r--r--.travis.yml280
-rw-r--r--BSDL6
-rw-r--r--CONTRIBUTING.md5
-rw-r--r--COPYING76
-rw-r--r--COPYING.ja66
-rw-r--r--LEGAL1255
-rw-r--r--Makefile.in531
-rw-r--r--NEWS577
-rw-r--r--NEWS.md127
-rw-r--r--README.ja.md75
-rw-r--r--README.md176
-rw-r--r--acinclude.m446
-rw-r--r--aclocal.m415
-rw-r--r--addr2line.c2345
-rw-r--r--addr2line.h7
-rw-r--r--appveyor.yml55
-rw-r--r--array.c7948
-rw-r--r--array.rb157
-rw-r--r--ast.c773
-rw-r--r--ast.rb276
-rwxr-xr-xautogen.sh17
-rwxr-xr-xbasictest/test.rb30
-rw-r--r--benchmark/README.md74
-rw-r--r--benchmark/app_aobench.rb297
-rw-r--r--benchmark/app_erb.yml23
-rw-r--r--benchmark/app_pentomino.rb130
-rw-r--r--benchmark/array_flatten.yml19
-rw-r--r--benchmark/array_intersection.yml14
-rw-r--r--benchmark/array_max_float.yml30
-rw-r--r--benchmark/array_max_int.yml31
-rw-r--r--benchmark/array_max_str.yml30
-rw-r--r--benchmark/array_min.yml31
-rw-r--r--benchmark/array_sample.yml4
-rw-r--r--benchmark/array_sort_int.yml15
-rw-r--r--benchmark/array_values_at_int.rb2
-rw-r--r--benchmark/array_values_at_range.rb2
-rw-r--r--benchmark/attr_accessor.yml29
-rw-r--r--benchmark/bm_app_answer.rb (renamed from benchmark/app_answer.rb)0
-rw-r--r--benchmark/bm_app_aobench.rb291
-rw-r--r--benchmark/bm_app_erb.rb26
-rw-r--r--benchmark/bm_app_factorial.rb (renamed from benchmark/app_factorial.rb)0
-rw-r--r--benchmark/bm_app_fib.rb (renamed from benchmark/app_fib.rb)0
-rw-r--r--benchmark/bm_app_lc_fizzbuzz.rb (renamed from benchmark/app_lc_fizzbuzz.rb)0
-rw-r--r--benchmark/bm_app_mandelbrot.rb (renamed from benchmark/app_mandelbrot.rb)0
-rw-r--r--benchmark/bm_app_pentomino.rb259
-rw-r--r--benchmark/bm_app_raise.rb (renamed from benchmark/app_raise.rb)0
-rw-r--r--benchmark/bm_app_strconcat.rb (renamed from benchmark/app_strconcat.rb)0
-rw-r--r--benchmark/bm_app_tak.rb (renamed from benchmark/app_tak.rb)0
-rw-r--r--benchmark/bm_app_tarai.rb (renamed from benchmark/app_tarai.rb)0
-rw-r--r--benchmark/bm_app_uri.rb (renamed from benchmark/app_uri.rb)0
-rw-r--r--benchmark/bm_array_sample_100k_10.rb (renamed from benchmark/array_sample_100k_10.rb)0
-rw-r--r--benchmark/bm_array_sample_100k_11.rb (renamed from benchmark/array_sample_100k_11.rb)0
-rw-r--r--benchmark/bm_array_sample_100k__100.rb (renamed from benchmark/array_sample_100k__100.rb)0
-rw-r--r--benchmark/bm_array_sample_100k__1k.rb (renamed from benchmark/array_sample_100k__1k.rb)0
-rw-r--r--benchmark/bm_array_sample_100k__6k.rb (renamed from benchmark/array_sample_100k__6k.rb)0
-rw-r--r--benchmark/bm_array_sample_100k___10k.rb (renamed from benchmark/array_sample_100k___10k.rb)0
-rw-r--r--benchmark/bm_array_sample_100k___50k.rb (renamed from benchmark/array_sample_100k___50k.rb)0
-rw-r--r--benchmark/bm_array_shift.rb (renamed from benchmark/array_shift.rb)0
-rw-r--r--benchmark/bm_array_small_and.rb (renamed from benchmark/array_small_and.rb)0
-rw-r--r--benchmark/bm_array_small_diff.rb (renamed from benchmark/array_small_diff.rb)0
-rw-r--r--benchmark/bm_array_small_or.rb (renamed from benchmark/array_small_or.rb)0
-rw-r--r--benchmark/bm_array_sort_block.rb (renamed from benchmark/array_sort_block.rb)0
-rw-r--r--benchmark/bm_array_sort_float.rb (renamed from benchmark/array_sort_float.rb)0
-rw-r--r--benchmark/bm_bighash.rb (renamed from benchmark/bighash.rb)0
-rw-r--r--benchmark/bm_dir_empty_p.rb (renamed from benchmark/dir_empty_p.rb)0
-rw-r--r--benchmark/bm_erb_render.rb26
-rw-r--r--benchmark/bm_file_chmod.rb (renamed from benchmark/file_chmod.rb)0
-rw-r--r--benchmark/bm_file_rename.rb11
-rw-r--r--benchmark/bm_hash_aref_dsym.rb (renamed from benchmark/hash_aref_dsym.rb)0
-rw-r--r--benchmark/bm_hash_aref_dsym_long.rb (renamed from benchmark/hash_aref_dsym_long.rb)0
-rw-r--r--benchmark/bm_hash_aref_fix.rb (renamed from benchmark/hash_aref_fix.rb)0
-rw-r--r--benchmark/bm_hash_aref_flo.rb (renamed from benchmark/hash_aref_flo.rb)0
-rw-r--r--benchmark/bm_hash_aref_miss.rb (renamed from benchmark/hash_aref_miss.rb)0
-rw-r--r--benchmark/bm_hash_aref_str.rb (renamed from benchmark/hash_aref_str.rb)0
-rw-r--r--benchmark/bm_hash_aref_sym.rb (renamed from benchmark/hash_aref_sym.rb)0
-rw-r--r--benchmark/bm_hash_aref_sym_long.rb (renamed from benchmark/hash_aref_sym_long.rb)0
-rw-r--r--benchmark/bm_hash_flatten.rb (renamed from benchmark/hash_flatten.rb)0
-rw-r--r--benchmark/bm_hash_ident_flo.rb (renamed from benchmark/hash_ident_flo.rb)0
-rw-r--r--benchmark/bm_hash_ident_num.rb (renamed from benchmark/hash_ident_num.rb)0
-rw-r--r--benchmark/bm_hash_ident_obj.rb (renamed from benchmark/hash_ident_obj.rb)0
-rw-r--r--benchmark/bm_hash_ident_str.rb (renamed from benchmark/hash_ident_str.rb)0
-rw-r--r--benchmark/bm_hash_ident_sym.rb (renamed from benchmark/hash_ident_sym.rb)0
-rw-r--r--benchmark/bm_hash_keys.rb (renamed from benchmark/hash_keys.rb)0
-rw-r--r--benchmark/bm_hash_long.rb (renamed from benchmark/hash_long.rb)0
-rw-r--r--benchmark/bm_hash_shift.rb (renamed from benchmark/hash_shift.rb)0
-rw-r--r--benchmark/bm_hash_shift_u16.rb (renamed from benchmark/hash_shift_u16.rb)0
-rw-r--r--benchmark/bm_hash_shift_u24.rb (renamed from benchmark/hash_shift_u24.rb)0
-rw-r--r--benchmark/bm_hash_shift_u32.rb (renamed from benchmark/hash_shift_u32.rb)0
-rw-r--r--benchmark/bm_hash_small2.rb (renamed from benchmark/hash_small2.rb)0
-rw-r--r--benchmark/bm_hash_small4.rb (renamed from benchmark/hash_small4.rb)0
-rw-r--r--benchmark/bm_hash_small8.rb (renamed from benchmark/hash_small8.rb)0
-rw-r--r--benchmark/bm_hash_to_proc.rb (renamed from benchmark/hash_to_proc.rb)0
-rw-r--r--benchmark/bm_hash_values.rb (renamed from benchmark/hash_values.rb)0
-rw-r--r--benchmark/bm_int_quo.rb (renamed from benchmark/int_quo.rb)0
-rw-r--r--benchmark/bm_io_copy_stream_write.rb (renamed from benchmark/io_copy_stream_write.rb)0
-rw-r--r--benchmark/bm_io_copy_stream_write_socket.rb (renamed from benchmark/io_copy_stream_write_socket.rb)0
-rw-r--r--benchmark/bm_io_file_create.rb (renamed from benchmark/io_file_create.rb)0
-rw-r--r--benchmark/bm_io_file_read.rb (renamed from benchmark/io_file_read.rb)0
-rw-r--r--benchmark/bm_io_file_write.rb (renamed from benchmark/io_file_write.rb)0
-rw-r--r--benchmark/bm_io_nonblock_noex.rb (renamed from benchmark/io_nonblock_noex.rb)0
-rw-r--r--benchmark/bm_io_nonblock_noex2.rb (renamed from benchmark/io_nonblock_noex2.rb)0
-rw-r--r--benchmark/bm_io_pipe_rw.rb (renamed from benchmark/io_pipe_rw.rb)0
-rw-r--r--benchmark/bm_io_select.rb (renamed from benchmark/io_select.rb)0
-rw-r--r--benchmark/bm_io_select2.rb (renamed from benchmark/io_select2.rb)0
-rw-r--r--benchmark/bm_io_select3.rb (renamed from benchmark/io_select3.rb)0
-rw-r--r--benchmark/bm_loop_for.rb (renamed from benchmark/loop_for.rb)0
-rw-r--r--benchmark/bm_loop_generator.rb14
-rw-r--r--benchmark/bm_loop_times.rb (renamed from benchmark/loop_times.rb)0
-rw-r--r--benchmark/bm_loop_whileloop.rb (renamed from benchmark/loop_whileloop.rb)0
-rw-r--r--benchmark/bm_loop_whileloop2.rb (renamed from benchmark/loop_whileloop2.rb)0
-rw-r--r--benchmark/bm_marshal_dump_flo.rb (renamed from benchmark/marshal_dump_flo.rb)0
-rw-r--r--benchmark/bm_marshal_dump_load_geniv.rb (renamed from benchmark/marshal_dump_load_geniv.rb)0
-rw-r--r--benchmark/bm_marshal_dump_load_time.rb (renamed from benchmark/marshal_dump_load_time.rb)0
-rw-r--r--benchmark/bm_require.rb7
-rw-r--r--benchmark/bm_require_thread.rb15
-rw-r--r--benchmark/bm_securerandom.rb (renamed from benchmark/securerandom.rb)0
-rw-r--r--benchmark/bm_so_ackermann.rb19
-rw-r--r--benchmark/bm_so_array.rb23
-rw-r--r--benchmark/bm_so_binary_trees.rb (renamed from benchmark/so_binary_trees.rb)0
-rw-r--r--benchmark/bm_so_concatenate.rb18
-rw-r--r--benchmark/bm_so_count_words.rb19
-rw-r--r--benchmark/bm_so_exception.rb61
-rw-r--r--benchmark/bm_so_fannkuch.rb (renamed from benchmark/so_fannkuch.rb)0
-rw-r--r--benchmark/bm_so_fasta.rb (renamed from benchmark/so_fasta.rb)0
-rw-r--r--benchmark/bm_so_k_nucleotide.rb48
-rw-r--r--benchmark/bm_so_lists.rb (renamed from benchmark/so_lists.rb)0
-rw-r--r--benchmark/bm_so_mandelbrot.rb (renamed from benchmark/so_mandelbrot.rb)0
-rw-r--r--benchmark/bm_so_matrix.rb48
-rwxr-xr-xbenchmark/bm_so_meteor_contest.rb563
-rw-r--r--benchmark/bm_so_nbody.rb148
-rw-r--r--benchmark/bm_so_nested_loop.rb24
-rw-r--r--benchmark/bm_so_nsieve.rb (renamed from benchmark/so_nsieve.rb)0
-rw-r--r--benchmark/bm_so_nsieve_bits.rb (renamed from benchmark/so_nsieve_bits.rb)0
-rw-r--r--benchmark/bm_so_object.rb56
-rw-r--r--benchmark/bm_so_partial_sums.rb (renamed from benchmark/so_partial_sums.rb)0
-rw-r--r--benchmark/bm_so_pidigits.rb (renamed from benchmark/so_pidigits.rb)0
-rw-r--r--benchmark/bm_so_random.rb (renamed from benchmark/so_random.rb)0
-rw-r--r--benchmark/bm_so_reverse_complement.rb30
-rw-r--r--benchmark/bm_so_sieve.rb (renamed from benchmark/so_sieve.rb)0
-rw-r--r--benchmark/bm_so_spectralnorm.rb (renamed from benchmark/so_spectralnorm.rb)0
-rw-r--r--benchmark/bm_string_index.rb (renamed from benchmark/string_index.rb)0
-rw-r--r--benchmark/bm_string_scan_re.rb (renamed from benchmark/string_scan_re.rb)0
-rw-r--r--benchmark/bm_string_scan_str.rb (renamed from benchmark/string_scan_str.rb)0
-rw-r--r--benchmark/bm_time_subsec.rb (renamed from benchmark/time_subsec.rb)0
-rw-r--r--benchmark/bm_vm1_attr_ivar.rb14
-rw-r--r--benchmark/bm_vm1_attr_ivar_set.rb14
-rw-r--r--benchmark/bm_vm1_block.rb10
-rwxr-xr-xbenchmark/bm_vm1_blockparam.rb9
-rwxr-xr-xbenchmark/bm_vm1_blockparam_call.rb9
-rwxr-xr-xbenchmark/bm_vm1_blockparam_pass.rb13
-rwxr-xr-xbenchmark/bm_vm1_blockparam_yield.rb9
-rw-r--r--benchmark/bm_vm1_const.rb8
-rw-r--r--benchmark/bm_vm1_ensure.rb11
-rw-r--r--benchmark/bm_vm1_float_simple.rb7
-rw-r--r--benchmark/bm_vm1_gc_short_lived.rb10
-rw-r--r--benchmark/bm_vm1_gc_short_with_complex_long.rb27
-rw-r--r--benchmark/bm_vm1_gc_short_with_long.rb13
-rw-r--r--benchmark/bm_vm1_gc_short_with_symbol.rb15
-rw-r--r--benchmark/bm_vm1_gc_wb_ary.rb12
-rw-r--r--benchmark/bm_vm1_gc_wb_ary_promoted.rb14
-rw-r--r--benchmark/bm_vm1_gc_wb_obj.rb15
-rw-r--r--benchmark/bm_vm1_gc_wb_obj_promoted.rb17
-rw-r--r--benchmark/bm_vm1_ivar.rb8
-rw-r--r--benchmark/bm_vm1_ivar_set.rb6
-rw-r--r--benchmark/bm_vm1_length.rb9
-rw-r--r--benchmark/bm_vm1_lvar_init.rb18
-rw-r--r--benchmark/bm_vm1_lvar_set.rb5
-rw-r--r--benchmark/bm_vm1_neq.rb8
-rw-r--r--benchmark/bm_vm1_not.rb7
-rw-r--r--benchmark/bm_vm1_rescue.rb7
-rw-r--r--benchmark/bm_vm1_simplereturn.rb9
-rw-r--r--benchmark/bm_vm1_swap.rb8
-rw-r--r--benchmark/bm_vm1_yield.rb10
-rw-r--r--benchmark/bm_vm2_array.rb5
-rw-r--r--benchmark/bm_vm2_bigarray.rb106
-rw-r--r--benchmark/bm_vm2_bighash.rb5
-rw-r--r--benchmark/bm_vm2_case.rb14
-rw-r--r--benchmark/bm_vm2_case_lit.rb19
-rw-r--r--benchmark/bm_vm2_defined_method.rb9
-rw-r--r--benchmark/bm_vm2_dstr.rb6
-rw-r--r--benchmark/bm_vm2_eval.rb6
-rw-r--r--benchmark/bm_vm2_fiber_switch.rb9
-rw-r--r--benchmark/bm_vm2_method.rb9
-rw-r--r--benchmark/bm_vm2_method_missing.rb12
-rw-r--r--benchmark/bm_vm2_method_with_block.rb9
-rw-r--r--benchmark/bm_vm2_module_ann_const_set.rb5
-rw-r--r--benchmark/bm_vm2_module_const_set.rb8
-rw-r--r--benchmark/bm_vm2_mutex.rb9
-rw-r--r--benchmark/bm_vm2_newlambda.rb5
-rw-r--r--benchmark/bm_vm2_poly_method.rb20
-rw-r--r--benchmark/bm_vm2_poly_method_ov.rb20
-rw-r--r--benchmark/bm_vm2_poly_singleton.rb14
-rw-r--r--benchmark/bm_vm2_proc.rb14
-rw-r--r--benchmark/bm_vm2_raise1.rb18
-rw-r--r--benchmark/bm_vm2_raise2.rb18
-rw-r--r--benchmark/bm_vm2_regexp.rb6
-rw-r--r--benchmark/bm_vm2_send.rb12
-rw-r--r--benchmark/bm_vm2_string_literal.rb5
-rw-r--r--benchmark/bm_vm2_struct_big_aref_hi.rb7
-rw-r--r--benchmark/bm_vm2_struct_big_aref_lo.rb7
-rw-r--r--benchmark/bm_vm2_struct_big_aset.rb7
-rw-r--r--benchmark/bm_vm2_struct_big_href_hi.rb7
-rw-r--r--benchmark/bm_vm2_struct_big_href_lo.rb7
-rw-r--r--benchmark/bm_vm2_struct_big_hset.rb7
-rw-r--r--benchmark/bm_vm2_struct_small_aref.rb7
-rw-r--r--benchmark/bm_vm2_struct_small_aset.rb7
-rw-r--r--benchmark/bm_vm2_struct_small_href.rb7
-rw-r--r--benchmark/bm_vm2_struct_small_hset.rb7
-rw-r--r--benchmark/bm_vm2_super.rb20
-rw-r--r--benchmark/bm_vm2_unif1.rb8
-rw-r--r--benchmark/bm_vm2_zsuper.rb20
-rw-r--r--benchmark/bm_vm3_backtrace.rb (renamed from benchmark/vm_backtrace.rb)0
-rw-r--r--benchmark/bm_vm3_clearmethodcache.rb (renamed from benchmark/vm_clearmethodcache.rb)0
-rw-r--r--benchmark/bm_vm3_gc.rb (renamed from benchmark/vm_gc.rb)0
-rw-r--r--benchmark/bm_vm3_gc_old_full.rb (renamed from benchmark/vm_gc_old_full.rb)0
-rw-r--r--benchmark/bm_vm3_gc_old_immediate.rb (renamed from benchmark/vm_gc_old_immediate.rb)0
-rw-r--r--benchmark/bm_vm3_gc_old_lazy.rb (renamed from benchmark/vm_gc_old_lazy.rb)0
-rw-r--r--benchmark/bm_vm_symbol_block_pass.rb (renamed from benchmark/vm_symbol_block_pass.rb)0
-rw-r--r--benchmark/bm_vm_thread_alive_check1.rb6
-rw-r--r--benchmark/bm_vm_thread_close.rb (renamed from benchmark/vm_thread_close.rb)0
-rw-r--r--benchmark/bm_vm_thread_condvar1.rb28
-rw-r--r--benchmark/bm_vm_thread_condvar2.rb35
-rw-r--r--benchmark/bm_vm_thread_create_join.rb (renamed from benchmark/vm_thread_create_join.rb)0
-rw-r--r--benchmark/bm_vm_thread_mutex1.rb (renamed from benchmark/vm_thread_mutex1.rb)0
-rw-r--r--benchmark/bm_vm_thread_mutex2.rb (renamed from benchmark/vm_thread_mutex2.rb)0
-rw-r--r--benchmark/bm_vm_thread_mutex3.rb (renamed from benchmark/vm_thread_mutex3.rb)0
-rw-r--r--benchmark/bm_vm_thread_pass.rb15
-rw-r--r--benchmark/bm_vm_thread_pass_flood.rb10
-rw-r--r--benchmark/bm_vm_thread_pipe.rb (renamed from benchmark/vm_thread_pipe.rb)0
-rw-r--r--benchmark/bm_vm_thread_queue.rb18
-rw-r--r--benchmark/bm_vm_thread_sized_queue.rb (renamed from benchmark/vm_thread_sized_queue.rb)0
-rw-r--r--benchmark/bm_vm_thread_sized_queue2.rb (renamed from benchmark/vm_thread_sized_queue2.rb)0
-rw-r--r--benchmark/bm_vm_thread_sized_queue3.rb (renamed from benchmark/vm_thread_sized_queue3.rb)0
-rw-r--r--benchmark/bm_vm_thread_sized_queue4.rb (renamed from benchmark/vm_thread_sized_queue4.rb)0
-rw-r--r--benchmark/buffer_each.yml27
-rw-r--r--benchmark/buffer_get.yml25
-rw-r--r--benchmark/cgi_escape_html.yml31
-rw-r--r--benchmark/complex_float_add.yml7
-rw-r--r--benchmark/complex_float_div.yml7
-rw-r--r--benchmark/complex_float_mul.yml7
-rw-r--r--benchmark/complex_float_new.yml7
-rw-r--r--benchmark/complex_float_power.yml7
-rw-r--r--benchmark/complex_float_sub.yml7
-rw-r--r--benchmark/constant_invalidation.rb22
-rwxr-xr-xbenchmark/driver.rb441
-rw-r--r--benchmark/enum_lazy_flat_map.yml16
-rw-r--r--benchmark/enum_lazy_grep_v_100.rb4
-rw-r--r--benchmark/enum_lazy_grep_v_20.rb4
-rw-r--r--benchmark/enum_lazy_grep_v_50.rb4
-rw-r--r--benchmark/enum_lazy_uniq_100.rb4
-rw-r--r--benchmark/enum_lazy_uniq_20.rb4
-rw-r--r--benchmark/enum_lazy_uniq_50.rb4
-rw-r--r--benchmark/enum_lazy_zip.yml22
-rw-r--r--benchmark/enum_minmax.yml25
-rw-r--r--benchmark/enum_sort.yml15
-rw-r--r--benchmark/enum_tally.yml4
-rw-r--r--benchmark/erb_escape_html.yml31
-rw-r--r--benchmark/erb_render.yml24
-rw-r--r--benchmark/fiber_chain.yml36
-rw-r--r--benchmark/fiber_locals.yml8
-rw-r--r--benchmark/file_rename.rb11
-rw-r--r--benchmark/float_methods.yml14
-rw-r--r--benchmark/float_neg_posi.yml8
-rw-r--r--benchmark/float_to_s.yml7
-rw-r--r--benchmark/gc/aobench.rb2
-rw-r--r--benchmark/gc/binary_trees.rb2
-rw-r--r--benchmark/gc/gcbench.rb3
-rw-r--r--benchmark/gc/pentomino.rb2
-rw-r--r--benchmark/hash_aref_array.rb5
-rw-r--r--benchmark/hash_defaults.yml6
-rw-r--r--benchmark/hash_dup.yml8
-rw-r--r--benchmark/hash_first.yml11
-rw-r--r--benchmark/hash_literal_small2.rb3
-rw-r--r--benchmark/hash_literal_small4.rb3
-rw-r--r--benchmark/hash_literal_small8.rb3
-rw-r--r--benchmark/io_write.rb22
-rw-r--r--benchmark/irb_color.yml13
-rw-r--r--benchmark/irb_exec.yml10
-rw-r--r--benchmark/iseq_load_from_binary.yml25
-rw-r--r--benchmark/ivar_extend.yml23
-rw-r--r--benchmark/kernel_clone.yml6
-rw-r--r--benchmark/kernel_float.yml5
-rw-r--r--benchmark/kernel_tap.yml6
-rw-r--r--benchmark/kernel_then.yml6
-rw-r--r--benchmark/keyword_arguments.yml13
-rw-r--r--benchmark/lib/benchmark_driver/output/driver.rb36
-rw-r--r--benchmark/lib/benchmark_driver/runner/cstime.rb22
-rw-r--r--benchmark/lib/benchmark_driver/runner/cutime.rb22
-rw-r--r--benchmark/lib/benchmark_driver/runner/peak.rb151
-rw-r--r--benchmark/lib/benchmark_driver/runner/ractor.rb122
-rw-r--r--benchmark/lib/benchmark_driver/runner/size.rb25
-rw-r--r--benchmark/lib/benchmark_driver/runner/stime.rb22
-rw-r--r--benchmark/lib/benchmark_driver/runner/total.rb137
-rw-r--r--benchmark/lib/benchmark_driver/runner/utime.rb22
-rw-r--r--benchmark/lib/load.rb18
-rw-r--r--benchmark/loop_generator.rb14
-rw-r--r--benchmark/make_fasta_output.rb19
-rw-r--r--benchmark/marshal_dump_load_integer.yml22
-rw-r--r--benchmark/masgn.yml53
-rw-r--r--benchmark/match_gt4.rb1
-rw-r--r--benchmark/match_small.rb1
-rw-r--r--benchmark/memory_wrapper.rb16
-rw-r--r--benchmark/method_bind_call.yml16
-rw-r--r--benchmark/module_eqq.yml27
-rw-r--r--benchmark/nil_p.yml9
-rw-r--r--benchmark/nilclass.yml6
-rw-r--r--benchmark/num_zero_p.yml8
-rw-r--r--benchmark/numeric_methods.yml29
-rw-r--r--benchmark/object_allocate.yml21
-rw-r--r--benchmark/objspace_dump_all.yml13
-rw-r--r--benchmark/other-lang/fact.py2
-rw-r--r--benchmark/pm_array.yml19
-rw-r--r--benchmark/prepare_require.rb25
-rw-r--r--benchmark/prepare_require_thread.rb2
-rw-r--r--benchmark/prepare_so_count_words.rb15
-rw-r--r--benchmark/prepare_so_k_nucleotide.rb2
-rw-r--r--benchmark/prepare_so_reverse_complement.rb2
-rw-r--r--benchmark/ractor_const.yml4
-rw-r--r--benchmark/ractor_float_to_s.yml8
-rw-r--r--benchmark/range_last.yml4
-rw-r--r--benchmark/range_min.yml2
-rw-r--r--benchmark/realpath.yml30
-rw-r--r--benchmark/report.rb79
-rw-r--r--benchmark/require.yml32
-rw-r--r--benchmark/require_thread.yml40
-rw-r--r--benchmark/run.rb127
-rw-r--r--benchmark/runc.rb27
-rw-r--r--benchmark/so_ackermann.rb19
-rw-r--r--benchmark/so_array.rb23
-rw-r--r--benchmark/so_concatenate.rb18
-rw-r--r--benchmark/so_count_words.yml65
-rw-r--r--benchmark/so_exception.rb61
-rw-r--r--benchmark/so_k_nucleotide.yml155
-rw-r--r--benchmark/so_matrix.rb48
-rw-r--r--benchmark/so_meteor_contest.rb563
-rw-r--r--benchmark/so_nbody.rb148
-rw-r--r--benchmark/so_nested_loop.rb24
-rw-r--r--benchmark/so_object.rb56
-rw-r--r--benchmark/so_reverse_complement.yml137
-rw-r--r--benchmark/string_capitalize.yml10
-rw-r--r--benchmark/string_casecmp.yml26
-rw-r--r--benchmark/string_casecmp_p.yml26
-rw-r--r--benchmark/string_concat.yml51
-rw-r--r--benchmark/string_downcase.yml18
-rw-r--r--benchmark/string_slice.yml11
-rw-r--r--benchmark/string_split.yml22
-rw-r--r--benchmark/string_swapcase.yml18
-rw-r--r--benchmark/string_upcase.yml18
-rw-r--r--benchmark/time_at.yml7
-rw-r--r--benchmark/time_new.yml4
-rw-r--r--benchmark/time_now.yml3
-rw-r--r--benchmark/time_parse.yml10
-rw-r--r--benchmark/time_strptime.yml13
-rw-r--r--benchmark/vm_array.yml4
-rw-r--r--benchmark/vm_attr_ivar.yml14
-rw-r--r--benchmark/vm_attr_ivar_set.yml14
-rw-r--r--benchmark/vm_bigarray.yml105
-rw-r--r--benchmark/vm_bighash.yml4
-rw-r--r--benchmark/vm_block.yml9
-rw-r--r--benchmark/vm_block_handler.yml27
-rw-r--r--benchmark/vm_blockparam.yml7
-rw-r--r--benchmark/vm_blockparam_call.yml8
-rw-r--r--benchmark/vm_blockparam_pass.yml12
-rw-r--r--benchmark/vm_blockparam_yield.yml8
-rw-r--r--benchmark/vm_call_bmethod.yml37
-rw-r--r--benchmark/vm_call_method_missing.yml62
-rw-r--r--benchmark/vm_call_send_iseq.yml77
-rw-r--r--benchmark/vm_call_symproc.yml83
-rw-r--r--benchmark/vm_case.yml13
-rw-r--r--benchmark/vm_case_classes.yml9
-rw-r--r--benchmark/vm_case_lit.yml23
-rw-r--r--benchmark/vm_const.yml13
-rw-r--r--benchmark/vm_cvar.yml20
-rw-r--r--benchmark/vm_defined_method.yml8
-rw-r--r--benchmark/vm_dstr.yml6
-rw-r--r--benchmark/vm_dstr_ary.rb6
-rw-r--r--benchmark/vm_dstr_bool.rb7
-rw-r--r--benchmark/vm_dstr_class_module.rb10
-rw-r--r--benchmark/vm_dstr_digit.rb7
-rw-r--r--benchmark/vm_dstr_int.rb5
-rw-r--r--benchmark/vm_dstr_nil.rb6
-rw-r--r--benchmark/vm_dstr_obj.rb6
-rw-r--r--benchmark/vm_dstr_obj_def.rb8
-rw-r--r--benchmark/vm_dstr_str.rb6
-rw-r--r--benchmark/vm_dstr_sym.rb6
-rw-r--r--benchmark/vm_ensure.yml14
-rw-r--r--benchmark/vm_eval.yml4
-rw-r--r--benchmark/vm_fiber_allocate.yml8
-rw-r--r--benchmark/vm_fiber_count.yml10
-rw-r--r--benchmark/vm_fiber_reuse.yml14
-rw-r--r--benchmark/vm_fiber_reuse_gc.yml12
-rw-r--r--benchmark/vm_fiber_switch.yml9
-rw-r--r--benchmark/vm_float_simple.yml8
-rw-r--r--benchmark/vm_freezeobj.yml6
-rw-r--r--benchmark/vm_freezestring.yml10
-rw-r--r--benchmark/vm_gc_short_lived.yml9
-rw-r--r--benchmark/vm_gc_short_with_complex_long.yml25
-rw-r--r--benchmark/vm_gc_short_with_long.yml13
-rw-r--r--benchmark/vm_gc_short_with_symbol.yml13
-rw-r--r--benchmark/vm_gc_wb_ary.yml12
-rw-r--r--benchmark/vm_gc_wb_ary_promoted.yml15
-rw-r--r--benchmark/vm_gc_wb_obj.yml15
-rw-r--r--benchmark/vm_gc_wb_obj_promoted.yml17
-rw-r--r--benchmark/vm_iclass_super.yml20
-rw-r--r--benchmark/vm_ivar.yml6
-rw-r--r--benchmark/vm_ivar_embedded_obj_init.yml14
-rw-r--r--benchmark/vm_ivar_extended_obj_init.yml16
-rw-r--r--benchmark/vm_ivar_generic_get.yml17
-rw-r--r--benchmark/vm_ivar_generic_set.yml14
-rw-r--r--benchmark/vm_ivar_get.yml37
-rw-r--r--benchmark/vm_ivar_get_unintialized.yml12
-rw-r--r--benchmark/vm_ivar_lazy_set.yml12
-rw-r--r--benchmark/vm_ivar_of_class.yml12
-rw-r--r--benchmark/vm_ivar_of_class_set.yml11
-rw-r--r--benchmark/vm_ivar_set.yml5
-rw-r--r--benchmark/vm_ivar_set_on_instance.yml35
-rw-r--r--benchmark/vm_ivar_set_subclass.yml20
-rw-r--r--benchmark/vm_length.yml8
-rw-r--r--benchmark/vm_lvar_cond_set.yml8
-rw-r--r--benchmark/vm_lvar_init.yml21
-rw-r--r--benchmark/vm_lvar_set.yml4
-rw-r--r--benchmark/vm_method.yml8
-rw-r--r--benchmark/vm_method_missing.yml11
-rw-r--r--benchmark/vm_method_with_block.yml8
-rw-r--r--benchmark/vm_module_ann_const_set.yml4
-rw-r--r--benchmark/vm_module_const_set.yml8
-rw-r--r--benchmark/vm_mutex.yml8
-rw-r--r--benchmark/vm_neq.yml7
-rw-r--r--benchmark/vm_newlambda.yml4
-rw-r--r--benchmark/vm_not.yml6
-rw-r--r--benchmark/vm_poly_method.yml24
-rw-r--r--benchmark/vm_poly_method_ov.yml24
-rw-r--r--benchmark/vm_poly_same_method.yml25
-rw-r--r--benchmark/vm_poly_singleton.yml18
-rw-r--r--benchmark/vm_proc.yml12
-rw-r--r--benchmark/vm_raise1.yml16
-rw-r--r--benchmark/vm_raise2.yml16
-rw-r--r--benchmark/vm_regexp.yml8
-rw-r--r--benchmark/vm_rescue.yml6
-rw-r--r--benchmark/vm_send.yml14
-rw-r--r--benchmark/vm_send_cfunc.yml14
-rw-r--r--benchmark/vm_simplereturn.yml7
-rw-r--r--benchmark/vm_string_literal.yml4
-rw-r--r--benchmark/vm_struct_big_aref_hi.yml7
-rw-r--r--benchmark/vm_struct_big_aref_lo.yml7
-rw-r--r--benchmark/vm_struct_big_aset.yml11
-rw-r--r--benchmark/vm_struct_big_href_hi.yml7
-rw-r--r--benchmark/vm_struct_big_href_lo.yml7
-rw-r--r--benchmark/vm_struct_big_hset.yml11
-rw-r--r--benchmark/vm_struct_small_aref.yml7
-rw-r--r--benchmark/vm_struct_small_aset.yml11
-rw-r--r--benchmark/vm_struct_small_href.yml7
-rw-r--r--benchmark/vm_struct_small_hset.yml7
-rw-r--r--benchmark/vm_super.yml17
-rw-r--r--benchmark/vm_swap.yml7
-rw-r--r--benchmark/vm_thread_alive_check.yml8
-rw-r--r--benchmark/vm_thread_condvar1.rb28
-rw-r--r--benchmark/vm_thread_condvar2.rb35
-rw-r--r--benchmark/vm_thread_pass.rb15
-rw-r--r--benchmark/vm_thread_pass_flood.rb10
-rw-r--r--benchmark/vm_thread_queue.rb18
-rw-r--r--benchmark/vm_thread_sleep.yml4
-rw-r--r--benchmark/vm_unif1.yml7
-rw-r--r--benchmark/vm_yield.yml13
-rw-r--r--benchmark/vm_zsuper.yml18
-rw-r--r--benchmark/wc.input.base25
-rw-r--r--bignum.c1692
-rwxr-xr-xbin/erb171
-rwxr-xr-xbin/gem21
-rwxr-xr-xbin/irb11
-rwxr-xr-xbin/rdoc44
-rwxr-xr-xbin/ri (renamed from libexec/ri)0
-rw-r--r--bootstraptest/pending.rb24
-rwxr-xr-xbootstraptest/runner.rb826
-rw-r--r--bootstraptest/test_attr.rb16
-rw-r--r--bootstraptest/test_autoload.rb30
-rw-r--r--bootstraptest/test_constant_cache.rb187
-rw-r--r--bootstraptest/test_eval.rb40
-rw-r--r--bootstraptest/test_exception.rb2
-rw-r--r--bootstraptest/test_fiber.rb39
-rw-r--r--bootstraptest/test_flow.rb8
-rw-r--r--bootstraptest/test_fork.rb4
-rw-r--r--bootstraptest/test_gc.rb2
-rw-r--r--bootstraptest/test_insns.rb133
-rw-r--r--bootstraptest/test_io.rb5
-rw-r--r--bootstraptest/test_jump.rb30
-rw-r--r--bootstraptest/test_literal.rb7
-rw-r--r--bootstraptest/test_literal_suffix.rb6
-rw-r--r--bootstraptest/test_load.rb2
-rw-r--r--bootstraptest/test_method.rb2
-rw-r--r--bootstraptest/test_objectspace.rb9
-rw-r--r--bootstraptest/test_proc.rb17
-rw-r--r--bootstraptest/test_ractor.rb1743
-rw-r--r--bootstraptest/test_rjit.rb44
-rw-r--r--bootstraptest/test_syntax.rb8
-rw-r--r--bootstraptest/test_thread.rb48
-rw-r--r--bootstraptest/test_yjit.rb3965
-rw-r--r--bootstraptest/test_yjit_30k_ifelse.rb241023
-rw-r--r--bootstraptest/test_yjit_30k_methods.rb121018
-rw-r--r--bootstraptest/test_yjit_rust_port.rb422
-rw-r--r--builtin.c70
-rw-r--r--builtin.h117
-rw-r--r--ccan/build_assert/build_assert.h12
-rw-r--r--ccan/check_type/check_type.h28
-rw-r--r--ccan/container_of/container_of.h52
-rw-r--r--ccan/list/list.h612
-rw-r--r--ccan/str/str.h9
-rw-r--r--class.c2200
-rw-r--r--common.mk16964
-rw-r--r--compar.c162
-rw-r--r--compile.c15982
-rw-r--r--complex.c1651
-rw-r--r--configure.ac3331
-rw-r--r--constant.h20
-rw-r--r--cont.c3502
-rw-r--r--coroutine/amd64/Context.S46
-rw-r--r--coroutine/amd64/Context.h85
-rw-r--r--coroutine/arm32/Context.S33
-rw-r--r--coroutine/arm32/Context.h59
-rw-r--r--coroutine/arm64/Context.S73
-rw-r--r--coroutine/arm64/Context.h83
-rw-r--r--coroutine/asyncify/Context.c10
-rw-r--r--coroutine/asyncify/Context.h89
-rw-r--r--coroutine/emscripten/Context.c8
-rw-r--r--coroutine/emscripten/Context.h77
-rw-r--r--coroutine/loongarch64/Context.S73
-rw-r--r--coroutine/loongarch64/Context.h46
-rw-r--r--coroutine/ppc/Context.S90
-rw-r--r--coroutine/ppc/Context.h58
-rw-r--r--coroutine/ppc64/Context.S89
-rw-r--r--coroutine/ppc64/Context.h57
-rw-r--r--coroutine/ppc64le/Context.S75
-rw-r--r--coroutine/ppc64le/Context.h57
-rw-r--r--coroutine/pthread/Context.c272
-rw-r--r--coroutine/pthread/Context.h63
-rw-r--r--coroutine/riscv64/Context.S87
-rw-r--r--coroutine/riscv64/Context.h46
-rw-r--r--coroutine/ucontext/Context.c23
-rw-r--r--coroutine/ucontext/Context.h79
-rw-r--r--coroutine/universal/Context.S16
-rw-r--r--coroutine/universal/Context.h21
-rw-r--r--coroutine/win32/Context.S47
-rw-r--r--coroutine/win32/Context.asm55
-rw-r--r--coroutine/win32/Context.h65
-rw-r--r--coroutine/win64/Context.S77
-rw-r--r--coroutine/win64/Context.asm79
-rw-r--r--coroutine/win64/Context.h75
-rw-r--r--coroutine/x86/Context.S42
-rw-r--r--coroutine/x86/Context.h61
-rw-r--r--coverage/README4
-rw-r--r--cygwin/GNUmakefile.in52
-rw-r--r--darray.h179
-rw-r--r--debug.c567
-rw-r--r--debug_counter.c133
-rw-r--r--debug_counter.h397
-rw-r--r--defs/gmake.mk400
-rw-r--r--defs/id.def66
-rw-r--r--defs/keywords4
-rw-r--r--defs/known_errors.def251
-rw-r--r--defs/lex.c.src4
-rw-r--r--defs/separated_version.mk2
-rw-r--r--defs/tags.mk18
-rw-r--r--dir.c2853
-rw-r--r--dir.rb314
-rw-r--r--dln.c1440
-rw-r--r--dln.h26
-rw-r--r--dln_find.c284
-rw-r--r--dmydln.c2
-rw-r--r--dmyenc.c2
-rw-r--r--doc/.document7
-rw-r--r--doc/ChangeLog-0.06_to_0.52 (renamed from doc/ChangeLog/ChangeLog-0.06_to_0.52)0
-rw-r--r--doc/ChangeLog-0.50_to_0.60 (renamed from doc/ChangeLog/ChangeLog-0.50_to_0.60)0
-rw-r--r--doc/ChangeLog-0.60_to_1.13955
-rw-r--r--doc/ChangeLog-1.8.024350
-rw-r--r--doc/ChangeLog-1.9.392772
-rw-r--r--doc/ChangeLog-2.0.024015
-rw-r--r--doc/ChangeLog-2.1.018060
-rw-r--r--doc/ChangeLog-2.2.0 (renamed from doc/ChangeLog/ChangeLog-2.2.0)0
-rw-r--r--doc/ChangeLog-2.3.012187
-rw-r--r--doc/ChangeLog-2.4.09492
-rw-r--r--doc/ChangeLog-20166
-rw-r--r--doc/ChangeLog-YARV6917
-rw-r--r--doc/ChangeLog/ChangeLog-0.60_to_1.13955
-rw-r--r--doc/ChangeLog/ChangeLog-1.8.024350
-rw-r--r--doc/ChangeLog/ChangeLog-1.9.392772
-rw-r--r--doc/ChangeLog/ChangeLog-2.0.024015
-rw-r--r--doc/ChangeLog/ChangeLog-2.1.018060
-rw-r--r--doc/ChangeLog/ChangeLog-2.3.012188
-rw-r--r--doc/ChangeLog/ChangeLog-2.4.09492
-rw-r--r--doc/ChangeLog/ChangeLog-YARV6917
-rw-r--r--doc/NEWS-1.8.7 (renamed from doc/NEWS/NEWS-1.8.7)0
-rw-r--r--doc/NEWS-1.9.1 (renamed from doc/NEWS/NEWS-1.9.1)0
-rw-r--r--doc/NEWS-1.9.2509
-rw-r--r--doc/NEWS-1.9.3 (renamed from doc/NEWS/NEWS-1.9.3)0
-rw-r--r--doc/NEWS-2.0.0531
-rw-r--r--doc/NEWS-2.1.0376
-rw-r--r--doc/NEWS-2.2.0361
-rw-r--r--doc/NEWS-2.3.0404
-rw-r--r--doc/NEWS-2.4.0397
-rw-r--r--doc/NEWS/NEWS-1.9.2509
-rw-r--r--doc/NEWS/NEWS-2.0.0529
-rw-r--r--doc/NEWS/NEWS-2.1.0376
-rw-r--r--doc/NEWS/NEWS-2.2.0359
-rw-r--r--doc/NEWS/NEWS-2.3.0384
-rw-r--r--doc/NEWS/NEWS-2.4.0399
-rw-r--r--doc/NEWS/NEWS-2.5.0565
-rw-r--r--doc/NEWS/NEWS-2.6.0662
-rw-r--r--doc/NEWS/NEWS-2.7.0845
-rw-r--r--doc/NEWS/NEWS-3.0.0.md829
-rw-r--r--doc/NEWS/NEWS-3.1.0.md660
-rw-r--r--doc/NEWS/NEWS-3.2.0.md820
-rw-r--r--doc/bsearch.rdoc120
-rw-r--r--doc/bug_triaging.rdoc79
-rw-r--r--doc/case_mapping.rdoc116
-rw-r--r--doc/character_selectors.rdoc97
-rw-r--r--doc/command_injection.rdoc29
-rw-r--r--doc/contributing.md12
-rw-r--r--doc/contributing.rdoc460
-rw-r--r--doc/contributing/building_ruby.md193
-rw-r--r--doc/contributing/documentation_guide.md430
-rw-r--r--doc/contributing/glossary.md41
-rw-r--r--doc/contributing/making_changes_to_ruby.md28
-rw-r--r--doc/contributing/making_changes_to_stdlibs.md49
-rw-r--r--doc/contributing/reporting_issues.md91
-rw-r--r--doc/contributing/testing_ruby.md138
-rw-r--r--doc/contributors.rdoc793
-rw-r--r--doc/csv/arguments/io.rdoc5
-rw-r--r--doc/csv/options/common/col_sep.rdoc63
-rw-r--r--doc/csv/options/common/quote_char.rdoc42
-rw-r--r--doc/csv/options/common/row_sep.rdoc100
-rw-r--r--doc/csv/options/generating/force_quotes.rdoc17
-rw-r--r--doc/csv/options/generating/quote_empty.rdoc12
-rw-r--r--doc/csv/options/generating/write_converters.rdoc33
-rw-r--r--doc/csv/options/generating/write_empty_value.rdoc15
-rw-r--r--doc/csv/options/generating/write_headers.rdoc29
-rw-r--r--doc/csv/options/generating/write_nil_value.rdoc14
-rw-r--r--doc/csv/options/parsing/converters.rdoc46
-rw-r--r--doc/csv/options/parsing/empty_value.rdoc13
-rw-r--r--doc/csv/options/parsing/field_size_limit.rdoc39
-rw-r--r--doc/csv/options/parsing/header_converters.rdoc43
-rw-r--r--doc/csv/options/parsing/headers.rdoc63
-rw-r--r--doc/csv/options/parsing/liberal_parsing.rdoc19
-rw-r--r--doc/csv/options/parsing/nil_value.rdoc12
-rw-r--r--doc/csv/options/parsing/return_headers.rdoc22
-rw-r--r--doc/csv/options/parsing/skip_blanks.rdoc31
-rw-r--r--doc/csv/options/parsing/skip_lines.rdoc37
-rw-r--r--doc/csv/options/parsing/strip.rdoc15
-rw-r--r--doc/csv/options/parsing/unconverted_fields.rdoc27
-rw-r--r--doc/csv/recipes/filtering.rdoc156
-rw-r--r--doc/csv/recipes/generating.rdoc244
-rw-r--r--doc/csv/recipes/parsing.rdoc543
-rw-r--r--doc/csv/recipes/recipes.rdoc6
-rw-r--r--doc/date/calendars.rdoc62
-rw-r--r--doc/dig_methods.rdoc82
-rw-r--r--doc/distribution.md47
-rw-r--r--doc/dtrace_probes.rdoc78
-rw-r--r--doc/encodings.rdoc479
-rw-r--r--doc/etc.rd.ja75
-rw-r--r--doc/examples/files.rdoc26
-rw-r--r--doc/extension.ja.rdoc118
-rw-r--r--doc/extension.rdoc540
-rw-r--r--doc/fiber.md232
-rw-r--r--doc/format_specifications.rdoc348
-rw-r--r--doc/globals.rdoc87
-rw-r--r--doc/implicit_conversion.rdoc221
-rw-r--r--doc/irb/irb.rd.ja86
-rw-r--r--doc/keywords.rdoc10
-rw-r--r--doc/maintainers.md516
-rw-r--r--doc/maintainers.rdoc293
-rw-r--r--doc/marshal.rdoc4
-rw-r--r--doc/matchdata/begin.rdoc30
-rw-r--r--doc/matchdata/end.rdoc30
-rw-r--r--doc/matchdata/offset.rdoc31
-rw-r--r--doc/math/math.rdoc117
-rw-r--r--doc/memory_view.md167
-rw-r--r--doc/net-http/examples.rdoc31
-rw-r--r--doc/net-http/included_getters.rdoc3
-rw-r--r--doc/optparse/.document1
-rw-r--r--doc/optparse/argument_converters.rdoc380
-rw-r--r--doc/optparse/creates_option.rdoc7
-rw-r--r--doc/optparse/option_params.rdoc509
-rw-r--r--doc/optparse/ruby/argument_keywords.rb6
-rw-r--r--doc/optparse/ruby/argument_strings.rb6
-rw-r--r--doc/optparse/ruby/argv.rb2
-rw-r--r--doc/optparse/ruby/array.rb6
-rw-r--r--doc/optparse/ruby/basic.rb17
-rw-r--r--doc/optparse/ruby/block.rb9
-rw-r--r--doc/optparse/ruby/collected_options.rb8
-rw-r--r--doc/optparse/ruby/custom_converter.rb9
-rw-r--r--doc/optparse/ruby/date.rb6
-rw-r--r--doc/optparse/ruby/datetime.rb6
-rw-r--r--doc/optparse/ruby/decimal_integer.rb7
-rw-r--r--doc/optparse/ruby/decimal_numeric.rb7
-rw-r--r--doc/optparse/ruby/default_values.rb8
-rw-r--r--doc/optparse/ruby/descriptions.rb15
-rw-r--r--doc/optparse/ruby/explicit_array_values.rb9
-rw-r--r--doc/optparse/ruby/explicit_hash_values.rb9
-rw-r--r--doc/optparse/ruby/false_class.rb6
-rw-r--r--doc/optparse/ruby/float.rb6
-rw-r--r--doc/optparse/ruby/help.rb18
-rw-r--r--doc/optparse/ruby/help_banner.rb7
-rw-r--r--doc/optparse/ruby/help_format.rb25
-rw-r--r--doc/optparse/ruby/help_program_name.rb7
-rw-r--r--doc/optparse/ruby/integer.rb6
-rw-r--r--doc/optparse/ruby/long_names.rb9
-rw-r--r--doc/optparse/ruby/long_optional.rb6
-rw-r--r--doc/optparse/ruby/long_required.rb6
-rw-r--r--doc/optparse/ruby/long_simple.rb9
-rw-r--r--doc/optparse/ruby/long_with_negation.rb6
-rw-r--r--doc/optparse/ruby/match_converter.rb9
-rw-r--r--doc/optparse/ruby/matched_values.rb6
-rw-r--r--doc/optparse/ruby/method.rb11
-rw-r--r--doc/optparse/ruby/missing_options.rb12
-rw-r--r--doc/optparse/ruby/mixed_names.rb12
-rw-r--r--doc/optparse/ruby/name_abbrev.rb9
-rw-r--r--doc/optparse/ruby/no_abbreviation.rb10
-rw-r--r--doc/optparse/ruby/numeric.rb6
-rw-r--r--doc/optparse/ruby/object.rb6
-rw-r--r--doc/optparse/ruby/octal_integer.rb7
-rw-r--r--doc/optparse/ruby/optional_argument.rb9
-rw-r--r--doc/optparse/ruby/parse.rb13
-rw-r--r--doc/optparse/ruby/parse_bang.rb13
-rw-r--r--doc/optparse/ruby/proc.rb13
-rw-r--r--doc/optparse/ruby/regexp.rb6
-rw-r--r--doc/optparse/ruby/required_argument.rb9
-rw-r--r--doc/optparse/ruby/shellwords.rb6
-rw-r--r--doc/optparse/ruby/short_names.rb9
-rw-r--r--doc/optparse/ruby/short_optional.rb6
-rw-r--r--doc/optparse/ruby/short_range.rb6
-rw-r--r--doc/optparse/ruby/short_required.rb6
-rw-r--r--doc/optparse/ruby/short_simple.rb9
-rw-r--r--doc/optparse/ruby/string.rb6
-rw-r--r--doc/optparse/ruby/terminator.rb6
-rw-r--r--doc/optparse/ruby/time.rb6
-rw-r--r--doc/optparse/ruby/true_class.rb6
-rw-r--r--doc/optparse/ruby/uri.rb6
-rw-r--r--doc/optparse/tutorial.rdoc835
-rw-r--r--doc/packed_data.rdoc590
-rw-r--r--doc/ractor.md952
-rw-r--r--doc/rdoc/markup_reference.rb1257
-rw-r--r--doc/regexp.rdoc159
-rw-r--r--doc/rjit/README.md53
-rw-r--r--doc/security.rdoc13
-rw-r--r--doc/shell.rd.ja335
-rw-r--r--doc/signals.rdoc106
-rw-r--r--doc/standard_library.rdoc124
-rw-r--r--doc/strftime_formatting.rdoc527
-rw-r--r--doc/string/b.rdoc14
-rw-r--r--doc/string/bytes.rdoc6
-rw-r--r--doc/string/bytesize.rdoc11
-rw-r--r--doc/string/center.rdoc16
-rw-r--r--doc/string/chars.rdoc5
-rw-r--r--doc/string/chomp.rdoc29
-rw-r--r--doc/string/chop.rdoc16
-rw-r--r--doc/string/codepoints.rdoc6
-rw-r--r--doc/string/delete_prefix.rdoc8
-rw-r--r--doc/string/delete_suffix.rdoc8
-rw-r--r--doc/string/each_byte.rdoc17
-rw-r--r--doc/string/each_char.rdoc17
-rw-r--r--doc/string/each_codepoint.rdoc18
-rw-r--r--doc/string/each_grapheme_cluster.rdoc12
-rw-r--r--doc/string/each_line.rdoc60
-rw-r--r--doc/string/encode.rdoc47
-rw-r--r--doc/string/end_with_p.rdoc11
-rw-r--r--doc/string/force_encoding.rdoc20
-rw-r--r--doc/string/grapheme_clusters.rdoc6
-rw-r--r--doc/string/index.rdoc38
-rw-r--r--doc/string/length.rdoc12
-rw-r--r--doc/string/ljust.rdoc16
-rw-r--r--doc/string/new.rdoc51
-rw-r--r--doc/string/ord.rdoc6
-rw-r--r--doc/string/partition.rdoc24
-rw-r--r--doc/string/rjust.rdoc16
-rw-r--r--doc/string/rpartition.rdoc24
-rw-r--r--doc/string/scrub.rdoc25
-rw-r--r--doc/string/split.rdoc86
-rw-r--r--doc/string/start_with_p.rdoc18
-rw-r--r--doc/string/sum.rdoc11
-rw-r--r--doc/symbol/casecmp.rdoc27
-rw-r--r--doc/symbol/casecmp_p.rdoc26
-rw-r--r--doc/syntax.rdoc7
-rw-r--r--doc/syntax/assignment.rdoc39
-rw-r--r--doc/syntax/calling_methods.rdoc115
-rw-r--r--doc/syntax/comments.rdoc253
-rw-r--r--doc/syntax/control_expressions.rdoc104
-rw-r--r--doc/syntax/exceptions.rdoc9
-rw-r--r--doc/syntax/literals.rdoc298
-rw-r--r--doc/syntax/methods.rdoc239
-rw-r--r--doc/syntax/miscellaneous.rdoc32
-rw-r--r--doc/syntax/modules_and_classes.rdoc42
-rw-r--r--doc/syntax/pattern_matching.rdoc522
-rw-r--r--doc/syntax/precedence.rdoc6
-rw-r--r--doc/syntax/refinements.rdoc18
-rw-r--r--doc/timezones.rdoc108
-rw-r--r--doc/windows.md234
-rw-r--r--doc/yjit/yjit.md361
-rw-r--r--doc/yjit/yjit_hacking.md75
-rw-r--r--enc/Makefile.in4
-rw-r--r--enc/ascii.c8
-rw-r--r--enc/cesu_8.c469
-rw-r--r--enc/cp949.c2
-rw-r--r--enc/depend10139
-rw-r--r--enc/encdb.c4
-rw-r--r--enc/encinit.c.erb1
-rw-r--r--enc/euc_jp.c4
-rw-r--r--enc/gb2312.c4
-rw-r--r--enc/iso_8859_11.c2
-rw-r--r--enc/iso_8859_6.c2
-rw-r--r--enc/iso_8859_8.c2
-rw-r--r--enc/jis/props.h.blt4
-rw-r--r--enc/jis/props.kwd2
-rw-r--r--enc/jis/props.src2
-rwxr-xr-xenc/make_encmake.rb14
-rw-r--r--enc/shift_jis.c4
-rw-r--r--enc/trans/JIS/JISX0212%UCS.src2
-rw-r--r--enc/trans/JIS/UCS%JISX0212.src2
-rw-r--r--enc/trans/big5-uao-tbl.rb2
-rw-r--r--enc/trans/cesu_8.trans85
-rw-r--r--enc/trans/cp850-tbl.rb2
-rw-r--r--enc/trans/cp852-tbl.rb2
-rw-r--r--enc/trans/cp855-tbl.rb2
-rw-r--r--enc/trans/escape.trans3
-rw-r--r--enc/trans/gbk-tbl.rb2
-rw-r--r--enc/trans/ibm437-tbl.rb2
-rw-r--r--enc/trans/ibm720-tbl.rb122
-rw-r--r--enc/trans/ibm775-tbl.rb2
-rw-r--r--enc/trans/ibm852-tbl.rb2
-rw-r--r--enc/trans/ibm855-tbl.rb2
-rw-r--r--enc/trans/ibm857-tbl.rb2
-rw-r--r--enc/trans/ibm860-tbl.rb2
-rw-r--r--enc/trans/ibm861-tbl.rb2
-rw-r--r--enc/trans/ibm862-tbl.rb2
-rw-r--r--enc/trans/ibm863-tbl.rb2
-rw-r--r--enc/trans/ibm865-tbl.rb2
-rw-r--r--enc/trans/ibm866-tbl.rb2
-rw-r--r--enc/trans/ibm869-tbl.rb2
-rw-r--r--enc/trans/koi8-r-tbl.rb2
-rw-r--r--enc/trans/koi8-u-tbl.rb2
-rw-r--r--enc/trans/maccroatian-tbl.rb2
-rw-r--r--enc/trans/maccyrillic-tbl.rb2
-rw-r--r--enc/trans/macgreek-tbl.rb2
-rw-r--r--enc/trans/maciceland-tbl.rb2
-rw-r--r--enc/trans/macroman-tbl.rb2
-rw-r--r--enc/trans/macromania-tbl.rb2
-rw-r--r--enc/trans/macturkish-tbl.rb2
-rw-r--r--enc/trans/macukraine-tbl.rb2
-rw-r--r--enc/trans/newline.trans30
-rw-r--r--enc/trans/single_byte.trans3
-rw-r--r--enc/trans/transdb.c2
-rw-r--r--enc/trans/windows-1250-tbl.rb2
-rw-r--r--enc/trans/windows-1251-tbl.rb2
-rw-r--r--enc/trans/windows-1252-tbl.rb2
-rw-r--r--enc/trans/windows-1253-tbl.rb2
-rw-r--r--enc/trans/windows-1254-tbl.rb2
-rw-r--r--enc/trans/windows-1256-tbl.rb2
-rw-r--r--enc/trans/windows-1257-tbl.rb2
-rw-r--r--enc/trans/windows-874-tbl.rb2
-rw-r--r--enc/unicode.c31
-rw-r--r--enc/unicode/10.0.0/casefold.h7044
-rw-r--r--enc/unicode/10.0.0/name2ctype.h38381
-rw-r--r--enc/unicode/15.0.0/casefold.h7629
-rw-r--r--enc/unicode/15.0.0/name2ctype.h45690
-rwxr-xr-xenc/unicode/case-folding.rb419
-rw-r--r--enc/utf_16_32.h2
-rw-r--r--enc/windows_1250.c2
-rw-r--r--enc/windows_1251.c2
-rw-r--r--enc/windows_1252.c2
-rw-r--r--enc/windows_1253.c2
-rw-r--r--enc/windows_1254.c2
-rw-r--r--enc/windows_1257.c2
-rw-r--r--enc/windows_31j.c2
-rw-r--r--enc/x_emoji.h4
-rw-r--r--encindex.h11
-rw-r--r--encoding.c1248
-rw-r--r--enum.c3403
-rw-r--r--enumerator.c3319
-rw-r--r--error.c2141
-rw-r--r--eval.c1688
-rw-r--r--eval_error.c580
-rw-r--r--eval_intern.h133
-rw-r--r--eval_jump.c52
-rw-r--r--ext/-test-/RUBY_ALIGNOF/c.c15
-rw-r--r--ext/-test-/RUBY_ALIGNOF/cpp.cpp9
-rw-r--r--ext/-test-/RUBY_ALIGNOF/depend161
-rw-r--r--ext/-test-/RUBY_ALIGNOF/extconf.rb6
-rw-r--r--ext/-test-/abi/abi.c11
-rw-r--r--ext/-test-/abi/extconf.rb4
-rw-r--r--ext/-test-/arith_seq/beg_len_step/beg_len_step.c19
-rw-r--r--ext/-test-/arith_seq/beg_len_step/depend160
-rw-r--r--ext/-test-/arith_seq/beg_len_step/extconf.rb2
-rw-r--r--ext/-test-/arith_seq/extract/depend160
-rw-r--r--ext/-test-/arith_seq/extract/extconf.rb2
-rw-r--r--ext/-test-/arith_seq/extract/extract.c27
-rw-r--r--ext/-test-/array/concat/depend161
-rw-r--r--ext/-test-/array/concat/extconf.rb2
-rw-r--r--ext/-test-/array/concat/to_ary_concat.c38
-rw-r--r--ext/-test-/array/resize/depend148
-rw-r--r--ext/-test-/array/resize/resize.c6
-rw-r--r--ext/-test-/auto_ext.rb1
-rw-r--r--ext/-test-/bignum/big2str.c14
-rw-r--r--ext/-test-/bignum/bigzero.c2
-rw-r--r--ext/-test-/bignum/depend1086
-rw-r--r--ext/-test-/bignum/div.c10
-rw-r--r--ext/-test-/bignum/intpack.c42
-rw-r--r--ext/-test-/bignum/mul.c30
-rw-r--r--ext/-test-/bignum/str2big.c18
-rw-r--r--ext/-test-/bug-14834/bug-14384.c39
-rw-r--r--ext/-test-/bug-14834/depend161
-rw-r--r--ext/-test-/bug-14834/extconf.rb2
-rw-r--r--ext/-test-/bug-3571/bug.c2
-rw-r--r--ext/-test-/bug-3571/depend161
-rw-r--r--ext/-test-/bug-5832/depend161
-rw-r--r--ext/-test-/bug_reporter/depend161
-rw-r--r--ext/-test-/class/depend298
-rw-r--r--ext/-test-/cxxanyargs/cxxanyargs.cpp961
-rw-r--r--ext/-test-/cxxanyargs/depend13
-rw-r--r--ext/-test-/cxxanyargs/extconf.rb46
-rw-r--r--ext/-test-/cxxanyargs/failure.cpp13
-rw-r--r--ext/-test-/cxxanyargs/failurem1.cpp13
-rw-r--r--ext/-test-/debug/depend446
-rw-r--r--ext/-test-/debug/inspector.c14
-rw-r--r--ext/-test-/debug/profile_frames.c27
-rw-r--r--ext/-test-/dln/empty/depend158
-rw-r--r--ext/-test-/dln/empty/empty.c2
-rw-r--r--ext/-test-/econv/append.c15
-rw-r--r--ext/-test-/econv/extconf.rb3
-rw-r--r--ext/-test-/econv/init.c11
-rw-r--r--ext/-test-/enumerator_kw/depend161
-rw-r--r--ext/-test-/enumerator_kw/enumerator_kw.c22
-rw-r--r--ext/-test-/enumerator_kw/extconf.rb1
-rw-r--r--ext/-test-/eval/eval.c13
-rw-r--r--ext/-test-/eval/extconf.rb2
-rw-r--r--ext/-test-/exception/depend607
-rw-r--r--ext/-test-/exception/enc_raise.c2
-rw-r--r--ext/-test-/fatal/depend161
-rw-r--r--ext/-test-/fatal/rb_fatal.c3
-rw-r--r--ext/-test-/file/depend464
-rw-r--r--ext/-test-/file/fs.c16
-rw-r--r--ext/-test-/float/depend325
-rw-r--r--ext/-test-/funcall/depend161
-rw-r--r--ext/-test-/funcall/funcall.c44
-rw-r--r--ext/-test-/gvl/call_without_gvl/call_without_gvl.c50
-rw-r--r--ext/-test-/gvl/call_without_gvl/depend148
-rw-r--r--ext/-test-/hash/depend320
-rw-r--r--ext/-test-/integer/core_ext.c18
-rw-r--r--ext/-test-/integer/depend463
-rw-r--r--ext/-test-/iseq_load/depend161
-rw-r--r--ext/-test-/iter/break.c4
-rw-r--r--ext/-test-/iter/depend479
-rw-r--r--ext/-test-/iter/yield.c2
-rw-r--r--ext/-test-/load/dot.dot/depend158
-rw-r--r--ext/-test-/load/dot.dot/dot.dot.c2
-rw-r--r--ext/-test-/load/protect/depend161
-rw-r--r--ext/-test-/marshal/compat/depend161
-rw-r--r--ext/-test-/marshal/internal_ivar/depend161
-rw-r--r--ext/-test-/marshal/internal_ivar/internal_ivar.c20
-rw-r--r--ext/-test-/marshal/usr/depend161
-rw-r--r--ext/-test-/memory_status/depend161
-rw-r--r--ext/-test-/memory_status/memory_status.c35
-rw-r--r--ext/-test-/memory_view/depend162
-rw-r--r--ext/-test-/memory_view/extconf.rb5
-rw-r--r--ext/-test-/memory_view/memory_view.c450
-rw-r--r--ext/-test-/method/depend320
-rw-r--r--ext/-test-/notimplement/bug.c2
-rw-r--r--ext/-test-/notimplement/depend161
-rw-r--r--ext/-test-/num2int/depend161
-rw-r--r--ext/-test-/num2int/num2int.c26
-rw-r--r--ext/-test-/path_to_class/depend161
-rw-r--r--ext/-test-/popen_deadlock/depend162
-rw-r--r--ext/-test-/popen_deadlock/extconf.rb1
-rw-r--r--ext/-test-/postponed_job/depend163
-rw-r--r--ext/-test-/postponed_job/postponed_job.c49
-rw-r--r--ext/-test-/printf/depend176
-rw-r--r--ext/-test-/printf/printf.c64
-rw-r--r--ext/-test-/proc/depend479
-rw-r--r--ext/-test-/proc/super.c2
-rw-r--r--ext/-test-/random/bad_version.c135
-rw-r--r--ext/-test-/random/depend479
-rw-r--r--ext/-test-/random/extconf.rb3
-rw-r--r--ext/-test-/random/init.c11
-rw-r--r--ext/-test-/random/loop.c111
-rw-r--r--ext/-test-/rational/depend168
-rw-r--r--ext/-test-/rational/rat.c23
-rw-r--r--ext/-test-/rb_call_super_kw/depend161
-rw-r--r--ext/-test-/rb_call_super_kw/extconf.rb1
-rw-r--r--ext/-test-/rb_call_super_kw/rb_call_super_kw.c15
-rw-r--r--ext/-test-/recursion/depend161
-rw-r--r--ext/-test-/regexp/depend321
-rw-r--r--ext/-test-/scan_args/depend161
-rwxr-xr-x[-rw-r--r--]ext/-test-/scan_args/extconf.rb0
-rw-r--r--ext/-test-/scan_args/scan_args.c21
-rw-r--r--ext/-test-/st/foreach/depend161
-rw-r--r--ext/-test-/st/foreach/foreach.c102
-rw-r--r--ext/-test-/st/numhash/depend161
-rw-r--r--ext/-test-/st/numhash/numhash.c21
-rw-r--r--ext/-test-/st/update/depend161
-rw-r--r--ext/-test-/st/update/update.c12
-rw-r--r--ext/-test-/string/capacity.c11
-rw-r--r--ext/-test-/string/coderange.c18
-rw-r--r--ext/-test-/string/cstr.c21
-rw-r--r--ext/-test-/string/depend2670
-rw-r--r--ext/-test-/string/enc_dummy.c15
-rw-r--r--ext/-test-/string/enc_str_buf_cat.c14
-rw-r--r--ext/-test-/string/fstring.c15
-rw-r--r--ext/-test-/string/normalize.c2
-rw-r--r--ext/-test-/string/qsort.c14
-rw-r--r--ext/-test-/string/rb_interned_str.c14
-rw-r--r--ext/-test-/struct/depend600
-rw-r--r--ext/-test-/struct/member.c2
-rw-r--r--ext/-test-/symbol/depend320
-rw-r--r--ext/-test-/symbol/init.c8
-rw-r--r--ext/-test-/symbol/type.c6
-rw-r--r--ext/-test-/thread/instrumentation/depend163
-rw-r--r--ext/-test-/thread/instrumentation/extconf.rb2
-rw-r--r--ext/-test-/thread/instrumentation/instrumentation.c136
-rw-r--r--ext/-test-/thread_fd/depend160
-rw-r--r--ext/-test-/thread_fd/extconf.rb2
-rw-r--r--ext/-test-/thread_fd/thread_fd.c30
-rw-r--r--ext/-test-/thread_fd_close/depend16
-rw-r--r--ext/-test-/thread_fd_close/extconf.rb2
-rw-r--r--ext/-test-/thread_fd_close/thread_fd_close.c14
-rw-r--r--ext/-test-/time/depend484
-rw-r--r--ext/-test-/time/leap_second.c15
-rw-r--r--ext/-test-/tracepoint/depend296
-rw-r--r--ext/-test-/tracepoint/gc_hook.c39
-rw-r--r--ext/-test-/tracepoint/tracepoint.c54
-rw-r--r--ext/-test-/typeddata/depend161
-rw-r--r--ext/-test-/typeddata/typeddata.c6
-rw-r--r--ext/-test-/vm/at_exit.c12
-rw-r--r--ext/-test-/vm/depend148
-rw-r--r--ext/-test-/wait/depend173
-rw-r--r--ext/-test-/wait/extconf.rb2
-rw-r--r--ext/-test-/wait/wait.c39
-rw-r--r--ext/-test-/wait_for_single_fd/depend16
-rw-r--r--ext/-test-/wait_for_single_fd/extconf.rb2
-rw-r--r--ext/-test-/wait_for_single_fd/wait_for_single_fd.c30
-rw-r--r--ext/-test-/win32/console/attribute.c31
-rw-r--r--ext/-test-/win32/fd_setsize/fd_setsize.c10
-rw-r--r--ext/.document20
-rw-r--r--ext/Setup4
-rw-r--r--ext/Setup.atheos7
-rw-r--r--ext/Setup.nt5
-rw-r--r--ext/bigdecimal/bigdecimal.c3909
-rw-r--r--ext/bigdecimal/bigdecimal.gemspec43
-rw-r--r--ext/bigdecimal/bigdecimal.h289
-rw-r--r--ext/bigdecimal/bits.h141
-rw-r--r--ext/bigdecimal/depend314
-rw-r--r--ext/bigdecimal/extconf.rb61
-rw-r--r--ext/bigdecimal/feature.h68
-rw-r--r--ext/bigdecimal/lib/bigdecimal.rb5
-rw-r--r--ext/bigdecimal/lib/bigdecimal/jacobian.rb10
-rw-r--r--ext/bigdecimal/lib/bigdecimal/util.rb67
-rw-r--r--ext/bigdecimal/missing.c27
-rw-r--r--ext/bigdecimal/missing.h196
-rw-r--r--ext/bigdecimal/missing/dtoa.c3462
-rw-r--r--ext/bigdecimal/sample/linear.rb21
-rw-r--r--ext/bigdecimal/sample/nlsolve.rb10
-rw-r--r--ext/bigdecimal/static_assert.h54
-rw-r--r--ext/cgi/escape/depend159
-rw-r--r--ext/cgi/escape/escape.c452
-rw-r--r--ext/continuation/depend148
-rw-r--r--ext/coverage/coverage.c576
-rw-r--r--ext/coverage/depend185
-rw-r--r--ext/coverage/lib/coverage.rb14
-rw-r--r--ext/date/date.gemspec36
-rw-r--r--ext/date/date_core.c2868
-rw-r--r--ext/date/date_parse.c377
-rw-r--r--ext/date/date_strftime.c2
-rw-r--r--ext/date/date_strptime.c187
-rw-r--r--ext/date/depend627
-rw-r--r--ext/date/extconf.rb7
-rw-r--r--ext/date/lib/date.rb13
-rw-r--r--ext/date/prereq.mk13
-rw-r--r--ext/date/update-abbr52
-rw-r--r--ext/date/zonetab.h2063
-rw-r--r--ext/date/zonetab.list162
-rw-r--r--ext/dbm/dbm.c1155
-rw-r--r--ext/dbm/dbm.gemspec21
-rw-r--r--ext/dbm/depend13
-rw-r--r--ext/dbm/extconf.rb290
-rw-r--r--ext/digest/bubblebabble/bubblebabble.c3
-rw-r--r--ext/digest/bubblebabble/depend152
-rw-r--r--ext/digest/bubblebabble/extconf.rb2
-rw-r--r--ext/digest/depend150
-rw-r--r--ext/digest/digest.c63
-rw-r--r--ext/digest/digest.gemspec44
-rw-r--r--ext/digest/digest.h23
-rw-r--r--ext/digest/digest_conf.rb71
-rw-r--r--ext/digest/extconf.rb2
-rw-r--r--ext/digest/lib/digest.rb18
-rw-r--r--ext/digest/lib/digest/loader.rb3
-rw-r--r--ext/digest/lib/digest/version.rb5
-rw-r--r--ext/digest/md5/depend317
-rw-r--r--ext/digest/md5/extconf.rb2
-rw-r--r--ext/digest/md5/md5.c2
-rw-r--r--ext/digest/md5/md5cc.h7
-rw-r--r--ext/digest/md5/md5init.c13
-rw-r--r--ext/digest/md5/md5ossl.h15
-rw-r--r--ext/digest/rmd160/depend316
-rw-r--r--ext/digest/rmd160/extconf.rb6
-rw-r--r--ext/digest/rmd160/rmd160init.c13
-rw-r--r--ext/digest/rmd160/rmd160ossl.h20
-rw-r--r--ext/digest/sha1/depend317
-rw-r--r--ext/digest/sha1/extconf.rb4
-rw-r--r--ext/digest/sha1/sha1init.c13
-rw-r--r--ext/digest/sha1/sha1ossl.h22
-rw-r--r--ext/digest/sha2/depend316
-rw-r--r--ext/digest/sha2/extconf.rb4
-rw-r--r--ext/digest/sha2/lib/sha2.rb2
-rw-r--r--ext/digest/sha2/lib/sha2/loader.rb3
-rw-r--r--ext/digest/sha2/sha2.c16
-rw-r--r--ext/digest/sha2/sha2init.c16
-rw-r--r--ext/digest/sha2/sha2ossl.h27
-rw-r--r--ext/erb/escape/escape.c95
-rw-r--r--ext/erb/escape/extconf.rb7
-rw-r--r--ext/etc/depend160
-rw-r--r--ext/etc/etc.c202
-rw-r--r--ext/etc/etc.gemspec41
-rw-r--r--ext/etc/extconf.rb9
-rw-r--r--ext/etc/mkconstants.rb16
-rwxr-xr-xext/extmk.rb158
-rw-r--r--ext/fcntl/depend150
-rw-r--r--ext/fcntl/fcntl.c37
-rw-r--r--ext/fcntl/fcntl.gemspec19
-rw-r--r--ext/fiber/depend1
-rw-r--r--ext/fiber/extconf.rb4
-rw-r--r--ext/fiber/fiber.c8
-rw-r--r--ext/fiddle/closure.c168
-rw-r--r--ext/fiddle/conversions.c241
-rw-r--r--ext/fiddle/conversions.h17
-rw-r--r--ext/fiddle/depend1254
-rw-r--r--ext/fiddle/extconf.rb136
-rw-r--r--ext/fiddle/extlibs5
-rw-r--r--ext/fiddle/fiddle.c390
-rw-r--r--ext/fiddle/fiddle.gemspec54
-rw-r--r--ext/fiddle/fiddle.h164
-rw-r--r--ext/fiddle/function.c366
-rw-r--r--ext/fiddle/handle.c141
-rw-r--r--ext/fiddle/lib/fiddle.rb51
-rw-r--r--ext/fiddle/lib/fiddle/closure.rb25
-rw-r--r--ext/fiddle/lib/fiddle/cparser.rb129
-rw-r--r--ext/fiddle/lib/fiddle/function.rb11
-rw-r--r--ext/fiddle/lib/fiddle/import.rb20
-rw-r--r--ext/fiddle/lib/fiddle/pack.rb52
-rw-r--r--ext/fiddle/lib/fiddle/struct.rb381
-rw-r--r--ext/fiddle/lib/fiddle/types.rb35
-rw-r--r--ext/fiddle/lib/fiddle/value.rb49
-rw-r--r--ext/fiddle/lib/fiddle/version.rb3
-rw-r--r--ext/fiddle/memory_view.c321
-rw-r--r--ext/fiddle/pinned.c123
-rw-r--r--ext/fiddle/pointer.c186
-rwxr-xr-x[-rw-r--r--]ext/fiddle/win32/fficonfig.h0
-rwxr-xr-xext/fiddle/win32/libffi-config.rb12
-rwxr-xr-x[-rw-r--r--]ext/fiddle/win32/libffi.mk.tmpl0
-rw-r--r--ext/gdbm/README1
-rw-r--r--ext/gdbm/depend13
-rw-r--r--ext/gdbm/extconf.rb19
-rw-r--r--ext/gdbm/gdbm.c1305
-rw-r--r--ext/gdbm/gdbm.gemspec27
-rw-r--r--ext/io/console/console.c851
-rw-r--r--ext/io/console/depend161
-rw-r--r--ext/io/console/extconf.rb19
-rw-r--r--ext/io/console/io-console.gemspec37
-rw-r--r--ext/io/nonblock/depend159
-rw-r--r--ext/io/nonblock/io-nonblock.gemspec25
-rw-r--r--ext/io/nonblock/nonblock.c67
-rw-r--r--ext/io/wait/depend160
-rw-r--r--ext/io/wait/extconf.rb31
-rw-r--r--ext/io/wait/io-wait.gemspec38
-rw-r--r--ext/io/wait/wait.c274
-rw-r--r--ext/json/VERSION1
-rw-r--r--ext/json/depend2
-rw-r--r--ext/json/extconf.rb1
-rw-r--r--ext/json/generator/depend162
-rw-r--r--ext/json/generator/generator.c285
-rw-r--r--ext/json/generator/generator.h7
-rw-r--r--ext/json/json.gemspecbin2260 -> 5474 bytes-rw-r--r--ext/json/lib/json.rb578
-rw-r--r--ext/json/lib/json/add/bigdecimal.rb4
-rw-r--r--ext/json/lib/json/add/complex.rb5
-rw-r--r--ext/json/lib/json/add/ostruct.rb2
-rw-r--r--ext/json/lib/json/add/rational.rb5
-rw-r--r--ext/json/lib/json/add/regexp.rb4
-rw-r--r--ext/json/lib/json/add/set.rb29
-rw-r--r--ext/json/lib/json/common.rb497
-rw-r--r--ext/json/lib/json/version.rb2
-rw-r--r--ext/json/parser/depend161
-rw-r--r--ext/json/parser/extconf.rb26
-rw-r--r--ext/json/parser/parser.c4726
-rw-r--r--ext/json/parser/parser.h7
-rw-r--r--ext/json/parser/parser.rl173
-rw-r--r--ext/json/parser/prereq.mk5
-rw-r--r--ext/monitor/depend160
-rw-r--r--ext/monitor/extconf.rb2
-rw-r--r--ext/monitor/lib/monitor.rb283
-rw-r--r--ext/monitor/monitor.c225
-rw-r--r--ext/nkf/depend157
-rw-r--r--ext/nkf/nkf-utf8/config.h2
-rw-r--r--ext/nkf/nkf-utf8/nkf.c75
-rw-r--r--ext/nkf/nkf-utf8/nkf.h4
-rw-r--r--ext/nkf/nkf-utf8/utf8tbl.c158
-rw-r--r--ext/nkf/nkf.c96
-rw-r--r--ext/nkf/nkf.gemspec34
-rw-r--r--ext/objspace/depend547
-rw-r--r--ext/objspace/lib/objspace.rb135
-rw-r--r--ext/objspace/lib/objspace/trace.rb45
-rw-r--r--ext/objspace/object_tracing.c268
-rw-r--r--ext/objspace/objspace.c658
-rw-r--r--ext/objspace/objspace_dump.c881
-rw-r--r--ext/openssl/History.md337
-rw-r--r--ext/openssl/depend5217
-rw-r--r--ext/openssl/deprecation.rb23
-rw-r--r--ext/openssl/extconf.rb165
-rw-r--r--ext/openssl/lib/openssl.rb33
-rw-r--r--ext/openssl/lib/openssl/bn.rb2
-rw-r--r--ext/openssl/lib/openssl/buffering.rb59
-rw-r--r--ext/openssl/lib/openssl/cipher.rb2
-rw-r--r--ext/openssl/lib/openssl/config.rb474
-rw-r--r--ext/openssl/lib/openssl/digest.rb26
-rw-r--r--ext/openssl/lib/openssl/hmac.rb78
-rw-r--r--ext/openssl/lib/openssl/marshal.rb30
-rw-r--r--ext/openssl/lib/openssl/pkcs5.rb2
-rw-r--r--ext/openssl/lib/openssl/pkey.rb448
-rw-r--r--ext/openssl/lib/openssl/ssl.rb72
-rw-r--r--ext/openssl/lib/openssl/version.rb5
-rw-r--r--ext/openssl/lib/openssl/x509.rb178
-rw-r--r--ext/openssl/openssl.gemspec63
-rw-r--r--ext/openssl/openssl_missing.c66
-rw-r--r--ext/openssl/openssl_missing.h104
-rw-r--r--ext/openssl/ossl.c182
-rw-r--r--ext/openssl/ossl.h45
-rw-r--r--ext/openssl/ossl_asn1.c65
-rw-r--r--ext/openssl/ossl_bn.c432
-rw-r--r--ext/openssl/ossl_bn.h3
-rw-r--r--ext/openssl/ossl_cipher.c70
-rw-r--r--ext/openssl/ossl_config.c453
-rw-r--r--ext/openssl/ossl_config.h11
-rw-r--r--ext/openssl/ossl_digest.c93
-rw-r--r--ext/openssl/ossl_engine.c45
-rw-r--r--ext/openssl/ossl_hmac.c205
-rw-r--r--ext/openssl/ossl_kdf.c36
-rw-r--r--ext/openssl/ossl_ns_spki.c2
-rw-r--r--ext/openssl/ossl_ocsp.c75
-rw-r--r--ext/openssl/ossl_ocsp.h6
-rw-r--r--ext/openssl/ossl_pkcs12.c24
-rw-r--r--ext/openssl/ossl_pkcs7.c123
-rw-r--r--ext/openssl/ossl_pkcs7.h16
-rw-r--r--ext/openssl/ossl_pkey.c1473
-rw-r--r--ext/openssl/ossl_pkey.h119
-rw-r--r--ext/openssl/ossl_pkey_dh.c472
-rw-r--r--ext/openssl/ossl_pkey_dsa.c505
-rw-r--r--ext/openssl/ossl_pkey_ec.c529
-rw-r--r--ext/openssl/ossl_pkey_rsa.c599
-rw-r--r--ext/openssl/ossl_rand.c42
-rw-r--r--ext/openssl/ossl_ssl.c1012
-rw-r--r--ext/openssl/ossl_ssl_session.c57
-rw-r--r--ext/openssl/ossl_ts.c1539
-rw-r--r--ext/openssl/ossl_ts.h16
-rw-r--r--ext/openssl/ossl_version.h15
-rw-r--r--ext/openssl/ossl_x509.c87
-rw-r--r--ext/openssl/ossl_x509cert.c182
-rw-r--r--ext/openssl/ossl_x509crl.c23
-rw-r--r--ext/openssl/ossl_x509ext.c17
-rw-r--r--ext/openssl/ossl_x509name.c21
-rw-r--r--ext/openssl/ossl_x509req.c23
-rw-r--r--ext/openssl/ossl_x509revoked.c6
-rw-r--r--ext/openssl/ossl_x509store.c285
-rw-r--r--ext/openssl/ruby_missing.h24
-rw-r--r--ext/pathname/depend159
-rw-r--r--ext/pathname/extconf.rb2
-rw-r--r--ext/pathname/lib/pathname.rb53
-rw-r--r--ext/pathname/pathname.c128
-rw-r--r--ext/pathname/pathname.gemspec32
-rw-r--r--ext/psych/.gitignore12
-rw-r--r--ext/psych/depend809
-rw-r--r--ext/psych/extconf.rb70
-rw-r--r--ext/psych/lib/psych.rb409
-rw-r--r--ext/psych/lib/psych/class_loader.rb18
-rw-r--r--ext/psych/lib/psych/core_ext.rb2
-rw-r--r--ext/psych/lib/psych/exception.rb18
-rw-r--r--ext/psych/lib/psych/handler.rb4
-rw-r--r--ext/psych/lib/psych/handlers/document_stream.rb2
-rw-r--r--ext/psych/lib/psych/handlers/recorder.rb2
-rw-r--r--ext/psych/lib/psych/json/stream.rb4
-rw-r--r--ext/psych/lib/psych/json/tree_builder.rb2
-rw-r--r--ext/psych/lib/psych/nodes.rb14
-rw-r--r--ext/psych/lib/psych/nodes/alias.rb2
-rw-r--r--ext/psych/lib/psych/nodes/document.rb2
-rw-r--r--ext/psych/lib/psych/nodes/mapping.rb2
-rw-r--r--ext/psych/lib/psych/nodes/node.rb15
-rw-r--r--ext/psych/lib/psych/nodes/scalar.rb4
-rw-r--r--ext/psych/lib/psych/nodes/sequence.rb2
-rw-r--r--ext/psych/lib/psych/nodes/stream.rb2
-rw-r--r--ext/psych/lib/psych/parser.rb13
-rw-r--r--ext/psych/lib/psych/scalar_scanner.rb81
-rw-r--r--ext/psych/lib/psych/syntax_error.rb2
-rw-r--r--ext/psych/lib/psych/tree_builder.rb6
-rw-r--r--ext/psych/lib/psych/versions.rb7
-rw-r--r--ext/psych/lib/psych/visitors.rb12
-rw-r--r--ext/psych/lib/psych/visitors/json_tree.rb2
-rw-r--r--ext/psych/lib/psych/visitors/to_ruby.rb83
-rw-r--r--ext/psych/lib/psych/visitors/visitor.rb20
-rw-r--r--ext/psych/lib/psych/visitors/yaml_tree.rb146
-rw-r--r--ext/psych/psych.c9
-rw-r--r--ext/psych/psych.gemspec41
-rw-r--r--ext/psych/psych_emitter.c1
-rw-r--r--ext/psych/psych_parser.c100
-rw-r--r--ext/psych/psych_yaml_tree.c12
-rw-r--r--ext/psych/yaml/api.c1392
-rw-r--r--ext/psych/yaml/config.h10
-rw-r--r--ext/psych/yaml/dumper.c394
-rw-r--r--ext/psych/yaml/emitter.c2329
-rw-r--r--ext/psych/yaml/loader.c444
-rw-r--r--ext/psych/yaml/parser.c1370
-rw-r--r--ext/psych/yaml/reader.c469
-rw-r--r--ext/psych/yaml/scanner.c3574
-rw-r--r--ext/psych/yaml/writer.c141
-rw-r--r--ext/psych/yaml/yaml.h1971
-rw-r--r--ext/psych/yaml/yaml_private.h662
-rw-r--r--ext/pty/depend168
-rw-r--r--ext/pty/extconf.rb10
-rw-r--r--ext/pty/lib/expect.rb16
-rw-r--r--ext/pty/pty.c302
-rw-r--r--ext/racc/cparse/README2
-rw-r--r--ext/racc/cparse/cparse.c50
-rw-r--r--ext/racc/cparse/depend149
-rw-r--r--ext/racc/cparse/extconf.rb7
-rw-r--r--ext/rbconfig/sizeof/depend296
-rw-r--r--ext/readline/README10
-rw-r--r--ext/readline/README.ja386
-rw-r--r--ext/readline/depend18
-rw-r--r--ext/readline/extconf.rb112
-rw-r--r--ext/readline/readline.c2101
-rw-r--r--ext/ripper/depend212
-rw-r--r--ext/ripper/eventids2.c342
-rw-r--r--ext/ripper/extconf.rb11
-rw-r--r--ext/ripper/lib/ripper/core.rb2
-rw-r--r--ext/ripper/lib/ripper/lexer.rb207
-rw-r--r--ext/ripper/lib/ripper/sexp.rb39
-rw-r--r--ext/ripper/tools/dsl.rb88
-rwxr-xr-x[-rw-r--r--]ext/ripper/tools/generate-param-macros.rb0
-rwxr-xr-x[-rw-r--r--]ext/ripper/tools/generate.rb9
-rwxr-xr-x[-rw-r--r--]ext/ripper/tools/preproc.rb53
-rwxr-xr-x[-rw-r--r--]ext/ripper/tools/strip.rb0
-rw-r--r--ext/rubyvm/depend2
-rw-r--r--ext/rubyvm/lib/forwardable/impl.rb5
-rw-r--r--ext/sdbm/_sdbm.c952
-rw-r--r--ext/sdbm/depend25
-rw-r--r--ext/sdbm/extconf.rb5
-rw-r--r--ext/sdbm/init.c1065
-rw-r--r--ext/sdbm/sdbm.gemspec22
-rw-r--r--ext/sdbm/sdbm.h86
-rw-r--r--ext/socket/addrinfo.h36
-rw-r--r--ext/socket/ancdata.c296
-rw-r--r--ext/socket/basicsocket.c155
-rw-r--r--ext/socket/constants.c7
-rw-r--r--ext/socket/depend2820
-rw-r--r--ext/socket/extconf.rb53
-rw-r--r--ext/socket/getaddrinfo.c900
-rw-r--r--ext/socket/getnameinfo.c226
-rw-r--r--ext/socket/ifaddr.c11
-rw-r--r--ext/socket/init.c453
-rw-r--r--ext/socket/ipsocket.c220
-rw-r--r--ext/socket/lib/socket.rb20
-rw-r--r--ext/socket/mkconstants.rb71
-rw-r--r--ext/socket/option.c106
-rw-r--r--ext/socket/raddrinfo.c541
-rw-r--r--ext/socket/rubysocket.h118
-rw-r--r--ext/socket/socket.c640
-rw-r--r--ext/socket/sockssocket.c18
-rw-r--r--ext/socket/tcpserver.c26
-rw-r--r--ext/socket/tcpsocket.c30
-rw-r--r--ext/socket/udpsocket.c64
-rw-r--r--ext/socket/unixserver.c31
-rw-r--r--ext/socket/unixsocket.c183
-rw-r--r--ext/stringio/depend159
-rw-r--r--ext/stringio/stringio.c667
-rw-r--r--ext/stringio/stringio.gemspec52
-rw-r--r--ext/strscan/depend160
-rw-r--r--ext/strscan/extconf.rb9
-rw-r--r--ext/strscan/strscan.c434
-rw-r--r--ext/strscan/strscan.gemspec41
-rw-r--r--ext/syslog/depend148
-rw-r--r--ext/syslog/extconf.rb2
-rw-r--r--ext/syslog/lib/syslog/logger.rb4
-rw-r--r--ext/syslog/syslog.c32
-rw-r--r--ext/syslog/syslog.gemspec28
-rw-r--r--ext/win32/depend2
-rw-r--r--ext/win32/lib/Win32API.rb47
-rw-r--r--ext/win32/lib/win32/importer.rb9
-rw-r--r--ext/win32/lib/win32/registry.rb14
-rw-r--r--ext/win32/lib/win32/resolv.rb14
-rw-r--r--ext/win32/lib/win32/resolv9x.rb253
-rw-r--r--ext/win32/lib/win32/sspi.rb627
-rw-r--r--ext/win32/resolv/depend17
-rw-r--r--ext/win32/resolv/resolv.c18
-rw-r--r--ext/win32ole/lib/win32ole.rb2
-rw-r--r--ext/win32ole/sample/xml.rb12
-rw-r--r--ext/win32ole/win32ole.c207
-rw-r--r--ext/win32ole/win32ole.gemspec32
-rw-r--r--ext/win32ole/win32ole.h4
-rw-r--r--ext/win32ole/win32ole_error.c3
-rw-r--r--ext/win32ole/win32ole_error.h4
-rw-r--r--ext/win32ole/win32ole_event.c26
-rw-r--r--ext/win32ole/win32ole_method.c9
-rw-r--r--ext/win32ole/win32ole_method.h2
-rw-r--r--ext/win32ole/win32ole_param.c3
-rw-r--r--ext/win32ole/win32ole_record.c5
-rw-r--r--ext/win32ole/win32ole_record.h2
-rw-r--r--ext/win32ole/win32ole_type.c7
-rw-r--r--ext/win32ole/win32ole_type.h2
-rw-r--r--ext/win32ole/win32ole_typelib.c21
-rw-r--r--ext/win32ole/win32ole_typelib.h2
-rw-r--r--ext/win32ole/win32ole_variable.c6
-rw-r--r--ext/win32ole/win32ole_variable.h2
-rw-r--r--ext/win32ole/win32ole_variant.c12
-rw-r--r--ext/win32ole/win32ole_variant.h2
-rw-r--r--ext/win32ole/win32ole_variant_m.c4
-rw-r--r--ext/win32ole/win32ole_variant_m.h2
-rw-r--r--ext/zlib/.gitignore1
-rw-r--r--ext/zlib/depend159
-rw-r--r--ext/zlib/extconf.rb20
-rw-r--r--ext/zlib/zlib.c644
-rw-r--r--ext/zlib/zlib.gemspec24
-rw-r--r--file.c4344
-rw-r--r--gc.c12987
-rw-r--r--gc.h116
-rw-r--r--gc.rb296
-rw-r--r--gem_prelude.rb34
-rw-r--r--gems/bundled_gems29
-rw-r--r--golf_prelude.rb7
-rw-r--r--goruby.c44
-rw-r--r--hash.c6763
-rw-r--r--hrtime.h227
-rw-r--r--ia64.s42
-rw-r--r--id_table.c163
-rw-r--r--id_table.h10
-rw-r--r--include/ruby.h31
-rw-r--r--include/ruby/assert.h234
-rw-r--r--include/ruby/atomic.h890
-rw-r--r--include/ruby/backward.h85
-rw-r--r--include/ruby/backward/2/assume.h56
-rw-r--r--include/ruby/backward/2/attributes.h161
-rw-r--r--include/ruby/backward/2/bool.h36
-rw-r--r--include/ruby/backward/2/gcc_version_since.h37
-rw-r--r--include/ruby/backward/2/inttypes.h131
-rw-r--r--include/ruby/backward/2/limits.h99
-rw-r--r--include/ruby/backward/2/long_long.h73
-rw-r--r--include/ruby/backward/2/r_cast.h32
-rw-r--r--include/ruby/backward/2/rmodule.h36
-rw-r--r--include/ruby/backward/2/stdalign.h30
-rw-r--r--include/ruby/backward/2/stdarg.h69
-rw-r--r--include/ruby/backward/classext.h18
-rw-r--r--include/ruby/backward/cxxanyargs.hpp700
-rw-r--r--include/ruby/backward/rubyio.h6
-rw-r--r--include/ruby/backward/rubysig.h47
-rw-r--r--include/ruby/backward/st.h6
-rw-r--r--include/ruby/backward/util.h6
-rw-r--r--include/ruby/debug.h628
-rw-r--r--include/ruby/defines.h386
-rw-r--r--include/ruby/encoding.h444
-rw-r--r--include/ruby/fiber/scheduler.h402
-rw-r--r--include/ruby/intern.h997
-rw-r--r--include/ruby/internal/abi.h58
-rw-r--r--include/ruby/internal/anyargs.h376
-rw-r--r--include/ruby/internal/arithmetic.h39
-rw-r--r--include/ruby/internal/arithmetic/char.h81
-rw-r--r--include/ruby/internal/arithmetic/double.h72
-rw-r--r--include/ruby/internal/arithmetic/fixnum.h60
-rw-r--r--include/ruby/internal/arithmetic/gid_t.h41
-rw-r--r--include/ruby/internal/arithmetic/int.h264
-rw-r--r--include/ruby/internal/arithmetic/intptr_t.h74
-rw-r--r--include/ruby/internal/arithmetic/long.h356
-rw-r--r--include/ruby/internal/arithmetic/long_long.h135
-rw-r--r--include/ruby/internal/arithmetic/mode_t.h41
-rw-r--r--include/ruby/internal/arithmetic/off_t.h62
-rw-r--r--include/ruby/internal/arithmetic/pid_t.h41
-rw-r--r--include/ruby/internal/arithmetic/short.h113
-rw-r--r--include/ruby/internal/arithmetic/size_t.h66
-rw-r--r--include/ruby/internal/arithmetic/st_data_t.h75
-rw-r--r--include/ruby/internal/arithmetic/uid_t.h41
-rw-r--r--include/ruby/internal/assume.h87
-rw-r--r--include/ruby/internal/attr/alloc_size.h32
-rw-r--r--include/ruby/internal/attr/artificial.h46
-rw-r--r--include/ruby/internal/attr/cold.h37
-rw-r--r--include/ruby/internal/attr/const.h46
-rw-r--r--include/ruby/internal/attr/constexpr.h84
-rw-r--r--include/ruby/internal/attr/deprecated.h75
-rw-r--r--include/ruby/internal/attr/diagnose_if.h42
-rw-r--r--include/ruby/internal/attr/enum_extensibility.h32
-rw-r--r--include/ruby/internal/attr/error.h32
-rw-r--r--include/ruby/internal/attr/flag_enum.h33
-rw-r--r--include/ruby/internal/attr/forceinline.h40
-rw-r--r--include/ruby/internal/attr/format.h38
-rw-r--r--include/ruby/internal/attr/maybe_unused.h38
-rw-r--r--include/ruby/internal/attr/noalias.h69
-rw-r--r--include/ruby/internal/attr/nodiscard.h45
-rw-r--r--include/ruby/internal/attr/noexcept.h91
-rw-r--r--include/ruby/internal/attr/noinline.h35
-rw-r--r--include/ruby/internal/attr/nonnull.h34
-rw-r--r--include/ruby/internal/attr/noreturn.h48
-rw-r--r--include/ruby/internal/attr/packed_struct.h43
-rw-r--r--include/ruby/internal/attr/pure.h43
-rw-r--r--include/ruby/internal/attr/restrict.h44
-rw-r--r--include/ruby/internal/attr/returns_nonnull.h37
-rw-r--r--include/ruby/internal/attr/warning.h32
-rw-r--r--include/ruby/internal/attr/weakref.h32
-rw-r--r--include/ruby/internal/cast.h50
-rw-r--r--include/ruby/internal/compiler_is.h45
-rw-r--r--include/ruby/internal/compiler_is/apple.h40
-rw-r--r--include/ruby/internal/compiler_is/clang.h37
-rw-r--r--include/ruby/internal/compiler_is/gcc.h45
-rw-r--r--include/ruby/internal/compiler_is/intel.h40
-rw-r--r--include/ruby/internal/compiler_is/msvc.h56
-rw-r--r--include/ruby/internal/compiler_is/sunpro.h54
-rw-r--r--include/ruby/internal/compiler_since.h61
-rw-r--r--include/ruby/internal/config.h151
-rw-r--r--include/ruby/internal/constant_p.h38
-rw-r--r--include/ruby/internal/core.h35
-rw-r--r--include/ruby/internal/core/rarray.h570
-rw-r--r--include/ruby/internal/core/rbasic.h158
-rw-r--r--include/ruby/internal/core/rbignum.h80
-rw-r--r--include/ruby/internal/core/rclass.h93
-rw-r--r--include/ruby/internal/core/rdata.h386
-rw-r--r--include/ruby/internal/core/rfile.h51
-rw-r--r--include/ruby/internal/core/rhash.h131
-rw-r--r--include/ruby/internal/core/rmatch.h146
-rw-r--r--include/ruby/internal/core/robject.h157
-rw-r--r--include/ruby/internal/core/rregexp.h168
-rw-r--r--include/ruby/internal/core/rstring.h526
-rw-r--r--include/ruby/internal/core/rstruct.h121
-rw-r--r--include/ruby/internal/core/rtypeddata.h609
-rw-r--r--include/ruby/internal/ctype.h545
-rw-r--r--include/ruby/internal/dllexport.h80
-rw-r--r--include/ruby/internal/dosish.h89
-rw-r--r--include/ruby/internal/encoding/coderange.h202
-rw-r--r--include/ruby/internal/encoding/ctype.h258
-rw-r--r--include/ruby/internal/encoding/encoding.h1043
-rw-r--r--include/ruby/internal/encoding/pathname.h184
-rw-r--r--include/ruby/internal/encoding/re.h46
-rw-r--r--include/ruby/internal/encoding/sprintf.h78
-rw-r--r--include/ruby/internal/encoding/string.h346
-rw-r--r--include/ruby/internal/encoding/symbol.h100
-rw-r--r--include/ruby/internal/encoding/transcode.h562
-rw-r--r--include/ruby/internal/error.h594
-rw-r--r--include/ruby/internal/eval.h400
-rw-r--r--include/ruby/internal/event.h154
-rw-r--r--include/ruby/internal/fl_type.h957
-rw-r--r--include/ruby/internal/gc.h853
-rw-r--r--include/ruby/internal/glob.h113
-rw-r--r--include/ruby/internal/globals.h209
-rw-r--r--include/ruby/internal/has/attribute.h163
-rw-r--r--include/ruby/internal/has/builtin.h117
-rw-r--r--include/ruby/internal/has/c_attribute.h38
-rw-r--r--include/ruby/internal/has/cpp_attribute.h86
-rw-r--r--include/ruby/internal/has/declspec_attribute.h47
-rw-r--r--include/ruby/internal/has/extension.h33
-rw-r--r--include/ruby/internal/has/feature.h31
-rw-r--r--include/ruby/internal/has/warning.h31
-rw-r--r--include/ruby/internal/intern/array.h657
-rw-r--r--include/ruby/internal/intern/bignum.h846
-rw-r--r--include/ruby/internal/intern/class.h394
-rw-r--r--include/ruby/internal/intern/compar.h62
-rw-r--r--include/ruby/internal/intern/complex.h253
-rw-r--r--include/ruby/internal/intern/cont.h282
-rw-r--r--include/ruby/internal/intern/dir.h42
-rw-r--r--include/ruby/internal/intern/enum.h73
-rw-r--r--include/ruby/internal/intern/enumerator.h259
-rw-r--r--include/ruby/internal/intern/error.h287
-rw-r--r--include/ruby/internal/intern/eval.h222
-rw-r--r--include/ruby/internal/intern/file.h213
-rw-r--r--include/ruby/internal/intern/hash.h320
-rw-r--r--include/ruby/internal/intern/io.h661
-rw-r--r--include/ruby/internal/intern/load.h218
-rw-r--r--include/ruby/internal/intern/marshal.h112
-rw-r--r--include/ruby/internal/intern/numeric.h208
-rw-r--r--include/ruby/internal/intern/object.h501
-rw-r--r--include/ruby/internal/intern/parse.h194
-rw-r--r--include/ruby/internal/intern/proc.h353
-rw-r--r--include/ruby/internal/intern/process.h273
-rw-r--r--include/ruby/internal/intern/random.h116
-rw-r--r--include/ruby/internal/intern/range.h89
-rw-r--r--include/ruby/internal/intern/rational.h172
-rw-r--r--include/ruby/internal/intern/re.h249
-rw-r--r--include/ruby/internal/intern/ruby.h77
-rw-r--r--include/ruby/internal/intern/select.h86
-rw-r--r--include/ruby/internal/intern/select/largesize.h214
-rw-r--r--include/ruby/internal/intern/select/posix.h144
-rw-r--r--include/ruby/internal/intern/select/win32.h259
-rw-r--r--include/ruby/internal/intern/signal.h152
-rw-r--r--include/ruby/internal/intern/sprintf.h159
-rw-r--r--include/ruby/internal/intern/string.h1757
-rw-r--r--include/ruby/internal/intern/struct.h203
-rw-r--r--include/ruby/internal/intern/thread.h492
-rw-r--r--include/ruby/internal/intern/time.h161
-rw-r--r--include/ruby/internal/intern/variable.h628
-rw-r--r--include/ruby/internal/intern/vm.h431
-rw-r--r--include/ruby/internal/interpreter.h304
-rw-r--r--include/ruby/internal/iterator.h513
-rw-r--r--include/ruby/internal/memory.h666
-rw-r--r--include/ruby/internal/method.h205
-rw-r--r--include/ruby/internal/module.h177
-rw-r--r--include/ruby/internal/newobj.h199
-rw-r--r--include/ruby/internal/scan_args.h534
-rw-r--r--include/ruby/internal/special_consts.h362
-rw-r--r--include/ruby/internal/static_assert.h77
-rw-r--r--include/ruby/internal/stdalign.h135
-rw-r--r--include/ruby/internal/stdbool.h51
-rw-r--r--include/ruby/internal/symbol.h332
-rw-r--r--include/ruby/internal/value.h133
-rw-r--r--include/ruby/internal/value_type.h449
-rw-r--r--include/ruby/internal/variable.h337
-rw-r--r--include/ruby/internal/warning_push.h124
-rw-r--r--include/ruby/internal/xmalloc.h392
-rw-r--r--include/ruby/io.h998
-rw-r--r--include/ruby/io/buffer.h98
-rw-r--r--include/ruby/memory_view.h325
-rw-r--r--include/ruby/missing.h244
-rw-r--r--include/ruby/onigmo.h21
-rw-r--r--include/ruby/ractor.h264
-rw-r--r--include/ruby/random.h359
-rw-r--r--include/ruby/re.h199
-rw-r--r--include/ruby/regex.h21
-rw-r--r--include/ruby/ruby.h2730
-rw-r--r--include/ruby/st.h132
-rw-r--r--include/ruby/subst.h9
-rw-r--r--include/ruby/thread.h246
-rw-r--r--include/ruby/thread_native.h187
-rw-r--r--include/ruby/util.h268
-rw-r--r--include/ruby/version.h159
-rw-r--r--include/ruby/vm.h62
-rw-r--r--include/ruby/win32.h151
-rw-r--r--inits.c53
-rw-r--r--insns.def1460
-rw-r--r--internal.h2058
-rw-r--r--internal/array.h162
-rw-r--r--internal/basic_operators.h63
-rw-r--r--internal/bignum.h244
-rw-r--r--internal/bits.h564
-rw-r--r--internal/class.h221
-rw-r--r--internal/cmdlineopt.h61
-rw-r--r--internal/compar.h29
-rw-r--r--internal/compile.h35
-rw-r--r--internal/compilers.h107
-rw-r--r--internal/complex.h29
-rw-r--r--internal/cont.h32
-rw-r--r--internal/dir.h16
-rw-r--r--internal/enc.h19
-rw-r--r--internal/encoding.h32
-rw-r--r--internal/enum.h18
-rw-r--r--internal/enumerator.h21
-rw-r--r--internal/error.h191
-rw-r--r--internal/eval.h32
-rw-r--r--internal/file.h38
-rw-r--r--internal/fixnum.h184
-rw-r--r--internal/gc.h333
-rw-r--r--internal/hash.h216
-rw-r--r--internal/imemo.h241
-rw-r--r--internal/inits.h50
-rw-r--r--internal/io.h38
-rw-r--r--internal/load.h18
-rw-r--r--internal/loadpath.h16
-rw-r--r--internal/math.h23
-rw-r--r--internal/missing.h18
-rw-r--r--internal/numeric.h273
-rw-r--r--internal/object.h59
-rw-r--r--internal/parse.h25
-rw-r--r--internal/proc.h30
-rw-r--r--internal/process.h138
-rw-r--r--internal/ractor.h6
-rw-r--r--internal/random.h16
-rw-r--r--internal/range.h40
-rw-r--r--internal/rational.h71
-rw-r--r--internal/re.h28
-rw-r--r--internal/sanitizers.h186
-rw-r--r--internal/serial.h23
-rw-r--r--internal/signal.h21
-rw-r--r--internal/static_assert.h16
-rw-r--r--internal/string.h145
-rw-r--r--internal/struct.h152
-rw-r--r--internal/symbol.h42
-rw-r--r--internal/thread.h61
-rw-r--r--internal/time.h34
-rw-r--r--internal/transcode.h20
-rw-r--r--internal/util.h27
-rw-r--r--internal/variable.h88
-rw-r--r--internal/vm.h124
-rw-r--r--internal/warnings.h16
-rw-r--r--io.c11466
-rw-r--r--io.rb123
-rw-r--r--io_buffer.c3426
-rw-r--r--iseq.c3419
-rw-r--r--iseq.h240
-rw-r--r--kernel.rb219
-rw-r--r--lex.c.blt4
-rw-r--r--lib/.document24
-rw-r--r--lib/English.gemspec22
-rw-r--r--lib/English.rb80
-rw-r--r--lib/abbrev.gemspec29
-rw-r--r--lib/abbrev.rb1
-rw-r--r--lib/base64.gemspec27
-rw-r--r--lib/base64.rb12
-rw-r--r--lib/benchmark.rb42
-rw-r--r--lib/benchmark/benchmark.gemspec29
-rw-r--r--lib/benchmark/version.rb4
-rw-r--r--lib/bundler.rb661
-rw-r--r--lib/bundler/.document1
-rw-r--r--lib/bundler/build_metadata.rb43
-rw-r--r--lib/bundler/bundler.gemspec43
-rw-r--r--lib/bundler/capistrano.rb22
-rw-r--r--lib/bundler/cli.rb894
-rw-r--r--lib/bundler/cli/add.rb47
-rw-r--r--lib/bundler/cli/binstubs.rb57
-rw-r--r--lib/bundler/cli/cache.rb43
-rw-r--r--lib/bundler/cli/check.rb40
-rw-r--r--lib/bundler/cli/clean.rb25
-rw-r--r--lib/bundler/cli/common.rb130
-rw-r--r--lib/bundler/cli/config.rb203
-rw-r--r--lib/bundler/cli/console.rb43
-rw-r--r--lib/bundler/cli/doctor.rb157
-rw-r--r--lib/bundler/cli/exec.rb88
-rw-r--r--lib/bundler/cli/fund.rb36
-rw-r--r--lib/bundler/cli/gem.rb465
-rw-r--r--lib/bundler/cli/info.rb94
-rw-r--r--lib/bundler/cli/init.rb51
-rw-r--r--lib/bundler/cli/inject.rb60
-rw-r--r--lib/bundler/cli/install.rb189
-rw-r--r--lib/bundler/cli/issue.rb41
-rw-r--r--lib/bundler/cli/list.rb66
-rw-r--r--lib/bundler/cli/lock.rb70
-rw-r--r--lib/bundler/cli/open.rb31
-rw-r--r--lib/bundler/cli/outdated.rb297
-rw-r--r--lib/bundler/cli/platform.rb48
-rw-r--r--lib/bundler/cli/plugin.rb41
-rw-r--r--lib/bundler/cli/pristine.rb52
-rw-r--r--lib/bundler/cli/remove.rb17
-rw-r--r--lib/bundler/cli/show.rb75
-rw-r--r--lib/bundler/cli/update.rb122
-rw-r--r--lib/bundler/cli/viz.rb31
-rw-r--r--lib/bundler/compact_index_client.rb119
-rw-r--r--lib/bundler/compact_index_client/cache.rb101
-rw-r--r--lib/bundler/compact_index_client/gem_parser.rb28
-rw-r--r--lib/bundler/compact_index_client/updater.rb117
-rw-r--r--lib/bundler/constants.rb7
-rw-r--r--lib/bundler/current_ruby.rb92
-rw-r--r--lib/bundler/definition.rb923
-rw-r--r--lib/bundler/dependency.rb98
-rw-r--r--lib/bundler/deployment.rb69
-rw-r--r--lib/bundler/deprecate.rb44
-rw-r--r--lib/bundler/digest.rb71
-rw-r--r--lib/bundler/dsl.rb583
-rw-r--r--lib/bundler/endpoint_specification.rb143
-rw-r--r--lib/bundler/env.rb148
-rw-r--r--lib/bundler/environment_preserver.rb86
-rw-r--r--lib/bundler/errors.rb175
-rw-r--r--lib/bundler/feature_flag.rb54
-rw-r--r--lib/bundler/fetcher.rb310
-rw-r--r--lib/bundler/fetcher/base.rb50
-rw-r--r--lib/bundler/fetcher/compact_index.rb133
-rw-r--r--lib/bundler/fetcher/dependency.rb78
-rw-r--r--lib/bundler/fetcher/downloader.rb87
-rw-r--r--lib/bundler/fetcher/index.rb26
-rw-r--r--lib/bundler/force_platform.rb18
-rw-r--r--lib/bundler/friendly_errors.rb126
-rw-r--r--lib/bundler/gem_helper.rb237
-rw-r--r--lib/bundler/gem_helpers.rb117
-rw-r--r--lib/bundler/gem_tasks.rb7
-rw-r--r--lib/bundler/gem_version_promoter.rb145
-rw-r--r--lib/bundler/graph.rb152
-rw-r--r--lib/bundler/index.rb175
-rw-r--r--lib/bundler/injector.rb287
-rw-r--r--lib/bundler/inline.rb73
-rw-r--r--lib/bundler/installer.rb267
-rw-r--r--lib/bundler/installer/gem_installer.rb84
-rw-r--r--lib/bundler/installer/parallel_installer.rb220
-rw-r--r--lib/bundler/installer/standalone.rb103
-rw-r--r--lib/bundler/lazy_specification.rb159
-rw-r--r--lib/bundler/lockfile_generator.rb95
-rw-r--r--lib/bundler/lockfile_parser.rb224
-rw-r--r--lib/bundler/man/.document1
-rw-r--r--lib/bundler/man/bundle-add.182
-rw-r--r--lib/bundler/man/bundle-add.1.ronn58
-rw-r--r--lib/bundler/man/bundle-binstubs.142
-rw-r--r--lib/bundler/man/bundle-binstubs.1.ronn41
-rw-r--r--lib/bundler/man/bundle-cache.161
-rw-r--r--lib/bundler/man/bundle-cache.1.ronn79
-rw-r--r--lib/bundler/man/bundle-check.131
-rw-r--r--lib/bundler/man/bundle-check.1.ronn26
-rw-r--r--lib/bundler/man/bundle-clean.124
-rw-r--r--lib/bundler/man/bundle-clean.1.ronn18
-rw-r--r--lib/bundler/man/bundle-config.1515
-rw-r--r--lib/bundler/man/bundle-config.1.ronn408
-rw-r--r--lib/bundler/man/bundle-console.153
-rw-r--r--lib/bundler/man/bundle-console.1.ronn44
-rw-r--r--lib/bundler/man/bundle-doctor.144
-rw-r--r--lib/bundler/man/bundle-doctor.1.ronn33
-rw-r--r--lib/bundler/man/bundle-exec.1165
-rw-r--r--lib/bundler/man/bundle-exec.1.ronn152
-rw-r--r--lib/bundler/man/bundle-gem.1105
-rw-r--r--lib/bundler/man/bundle-gem.1.ronn117
-rw-r--r--lib/bundler/man/bundle-help.113
-rw-r--r--lib/bundler/man/bundle-help.1.ronn12
-rw-r--r--lib/bundler/man/bundle-info.120
-rw-r--r--lib/bundler/man/bundle-info.1.ronn17
-rw-r--r--lib/bundler/man/bundle-init.129
-rw-r--r--lib/bundler/man/bundle-init.1.ronn31
-rw-r--r--lib/bundler/man/bundle-inject.136
-rw-r--r--lib/bundler/man/bundle-inject.1.ronn24
-rw-r--r--lib/bundler/man/bundle-install.1313
-rw-r--r--lib/bundler/man/bundle-install.1.ronn382
-rw-r--r--lib/bundler/man/bundle-list.150
-rw-r--r--lib/bundler/man/bundle-list.1.ronn33
-rw-r--r--lib/bundler/man/bundle-lock.184
-rw-r--r--lib/bundler/man/bundle-lock.1.ronn94
-rw-r--r--lib/bundler/man/bundle-open.152
-rw-r--r--lib/bundler/man/bundle-open.1.ronn27
-rw-r--r--lib/bundler/man/bundle-outdated.1148
-rw-r--r--lib/bundler/man/bundle-outdated.1.ronn102
-rw-r--r--lib/bundler/man/bundle-platform.171
-rw-r--r--lib/bundler/man/bundle-platform.1.ronn49
-rw-r--r--lib/bundler/man/bundle-plugin.181
-rw-r--r--lib/bundler/man/bundle-plugin.1.ronn59
-rw-r--r--lib/bundler/man/bundle-pristine.134
-rw-r--r--lib/bundler/man/bundle-pristine.1.ronn34
-rw-r--r--lib/bundler/man/bundle-remove.131
-rw-r--r--lib/bundler/man/bundle-remove.1.ronn23
-rw-r--r--lib/bundler/man/bundle-show.123
-rw-r--r--lib/bundler/man/bundle-show.1.ronn21
-rw-r--r--lib/bundler/man/bundle-update.1394
-rw-r--r--lib/bundler/man/bundle-update.1.ronn351
-rw-r--r--lib/bundler/man/bundle-version.135
-rw-r--r--lib/bundler/man/bundle-version.1.ronn24
-rw-r--r--lib/bundler/man/bundle-viz.142
-rw-r--r--lib/bundler/man/bundle-viz.1.ronn32
-rw-r--r--lib/bundler/man/bundle.1141
-rw-r--r--lib/bundler/man/bundle.1.ronn116
-rw-r--r--lib/bundler/man/gemfile.5731
-rw-r--r--lib/bundler/man/gemfile.5.ronn542
-rw-r--r--lib/bundler/man/index.txt29
-rw-r--r--lib/bundler/match_metadata.rb13
-rw-r--r--lib/bundler/match_platform.rb23
-rw-r--r--lib/bundler/match_remote_metadata.rb29
-rw-r--r--lib/bundler/mirror.rb221
-rw-r--r--lib/bundler/plugin.rb352
-rw-r--r--lib/bundler/plugin/api.rb81
-rw-r--r--lib/bundler/plugin/api/source.rb320
-rw-r--r--lib/bundler/plugin/dsl.rb53
-rw-r--r--lib/bundler/plugin/events.rb61
-rw-r--r--lib/bundler/plugin/index.rb185
-rw-r--r--lib/bundler/plugin/installer.rb112
-rw-r--r--lib/bundler/plugin/installer/git.rb34
-rw-r--r--lib/bundler/plugin/installer/rubygems.rb19
-rw-r--r--lib/bundler/plugin/source_list.rb31
-rw-r--r--lib/bundler/process_lock.rb24
-rw-r--r--lib/bundler/remote_specification.rb117
-rw-r--r--lib/bundler/resolver.rb413
-rw-r--r--lib/bundler/resolver/base.rb107
-rw-r--r--lib/bundler/resolver/candidate.rb94
-rw-r--r--lib/bundler/resolver/incompatibility.rb15
-rw-r--r--lib/bundler/resolver/package.rb72
-rw-r--r--lib/bundler/resolver/root.rb25
-rw-r--r--lib/bundler/resolver/spec_group.rb82
-rw-r--r--lib/bundler/retry.rb66
-rw-r--r--lib/bundler/ruby_dsl.rb18
-rw-r--r--lib/bundler/ruby_version.rb124
-rw-r--r--lib/bundler/rubygems_ext.rb373
-rw-r--r--lib/bundler/rubygems_gem_installer.rb172
-rw-r--r--lib/bundler/rubygems_integration.rb562
-rw-r--r--lib/bundler/runtime.rb307
-rw-r--r--lib/bundler/safe_marshal.rb31
-rw-r--r--lib/bundler/self_manager.rb168
-rw-r--r--lib/bundler/settings.rb514
-rw-r--r--lib/bundler/settings/validator.rb102
-rw-r--r--lib/bundler/setup.rb30
-rw-r--r--lib/bundler/shared_helpers.rb343
-rw-r--r--lib/bundler/similarity_detector.rb63
-rw-r--r--lib/bundler/source.rb114
-rw-r--r--lib/bundler/source/gemspec.rb18
-rw-r--r--lib/bundler/source/git.rb353
-rw-r--r--lib/bundler/source/git/git_proxy.rb408
-rw-r--r--lib/bundler/source/metadata.rb62
-rw-r--r--lib/bundler/source/path.rb260
-rw-r--r--lib/bundler/source/path/installer.rb53
-rw-r--r--lib/bundler/source/rubygems.rb509
-rw-r--r--lib/bundler/source/rubygems/remote.rb68
-rw-r--r--lib/bundler/source/rubygems_aggregate.rb68
-rw-r--r--lib/bundler/source_list.rb231
-rw-r--r--lib/bundler/source_map.rb71
-rw-r--r--lib/bundler/spec_set.rb216
-rw-r--r--lib/bundler/stub_specification.rb116
-rw-r--r--lib/bundler/templates/.document1
-rw-r--r--lib/bundler/templates/Executable27
-rw-r--r--lib/bundler/templates/Executable.bundler109
-rw-r--r--lib/bundler/templates/Executable.standalone14
-rw-r--r--lib/bundler/templates/Gemfile5
-rw-r--r--lib/bundler/templates/newgem/CHANGELOG.md.tt5
-rw-r--r--lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt84
-rw-r--r--lib/bundler/templates/newgem/Cargo.toml.tt7
-rw-r--r--lib/bundler/templates/newgem/Gemfile.tt26
-rw-r--r--lib/bundler/templates/newgem/LICENSE.txt.tt21
-rw-r--r--lib/bundler/templates/newgem/README.md.tt45
-rw-r--r--lib/bundler/templates/newgem/Rakefile.tt67
-rw-r--r--lib/bundler/templates/newgem/bin/console.tt11
-rw-r--r--lib/bundler/templates/newgem/bin/setup.tt8
-rw-r--r--lib/bundler/templates/newgem/circleci/config.yml.tt25
-rw-r--r--lib/bundler/templates/newgem/exe/newgem.tt3
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt15
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt10
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt6
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/newgem.c.tt9
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/newgem.h.tt6
-rw-r--r--lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt12
-rw-r--r--lib/bundler/templates/newgem/github/workflows/main.yml.tt37
-rw-r--r--lib/bundler/templates/newgem/gitignore.tt23
-rw-r--r--lib/bundler/templates/newgem/gitlab-ci.yml.tt18
-rw-r--r--lib/bundler/templates/newgem/lib/newgem.rb.tt15
-rw-r--r--lib/bundler/templates/newgem/lib/newgem/version.rb.tt9
-rw-r--r--lib/bundler/templates/newgem/newgem.gemspec.tt50
-rw-r--r--lib/bundler/templates/newgem/rspec.tt3
-rw-r--r--lib/bundler/templates/newgem/rubocop.yml.tt13
-rw-r--r--lib/bundler/templates/newgem/sig/newgem.rbs.tt8
-rw-r--r--lib/bundler/templates/newgem/spec/newgem_spec.rb.tt11
-rw-r--r--lib/bundler/templates/newgem/spec/spec_helper.rb.tt15
-rw-r--r--lib/bundler/templates/newgem/standard.yml.tt3
-rw-r--r--lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt6
-rw-r--r--lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt13
-rw-r--r--lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt15
-rw-r--r--lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt6
-rw-r--r--lib/bundler/ui.rb9
-rw-r--r--lib/bundler/ui/rg_proxy.rb19
-rw-r--r--lib/bundler/ui/shell.rb165
-rw-r--r--lib/bundler/ui/silent.rb85
-rw-r--r--lib/bundler/uri_credentials_filter.rb43
-rw-r--r--lib/bundler/uri_normalizer.rb23
-rw-r--r--lib/bundler/vendor/.document1
-rw-r--r--lib/bundler/vendor/connection_pool/lib/connection_pool.rb128
-rw-r--r--lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb174
-rw-r--r--lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb3
-rw-r--r--lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb56
-rw-r--r--lib/bundler/vendor/fileutils/lib/fileutils.rb2706
-rw-r--r--lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb1073
-rw-r--r--lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb40
-rw-r--r--lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb53
-rw-r--r--lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb79
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub.rb31
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb20
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb189
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb182
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb150
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb43
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb121
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb45
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb19
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb60
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb105
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb3
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb129
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb411
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb243
-rw-r--r--lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb178
-rw-r--r--lib/bundler/vendor/thor/lib/thor.rb516
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions.rb340
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/create_file.rb104
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/create_link.rb61
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/directory.rb108
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb143
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb375
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb119
-rw-r--r--lib/bundler/vendor/thor/lib/thor/base.rb699
-rw-r--r--lib/bundler/vendor/thor/lib/thor/command.rb142
-rw-r--r--lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb103
-rw-r--r--lib/bundler/vendor/thor/lib/thor/error.rb115
-rw-r--r--lib/bundler/vendor/thor/lib/thor/group.rb281
-rw-r--r--lib/bundler/vendor/thor/lib/thor/invocation.rb178
-rw-r--r--lib/bundler/vendor/thor/lib/thor/line_editor.rb17
-rw-r--r--lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb37
-rw-r--r--lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb88
-rw-r--r--lib/bundler/vendor/thor/lib/thor/nested_context.rb29
-rw-r--r--lib/bundler/vendor/thor/lib/thor/parser.rb4
-rw-r--r--lib/bundler/vendor/thor/lib/thor/parser/argument.rb70
-rw-r--r--lib/bundler/vendor/thor/lib/thor/parser/arguments.rb179
-rw-r--r--lib/bundler/vendor/thor/lib/thor/parser/option.rb159
-rw-r--r--lib/bundler/vendor/thor/lib/thor/parser/options.rb255
-rw-r--r--lib/bundler/vendor/thor/lib/thor/rake_compat.rb72
-rw-r--r--lib/bundler/vendor/thor/lib/thor/runner.rb325
-rw-r--r--lib/bundler/vendor/thor/lib/thor/shell.rb81
-rw-r--r--lib/bundler/vendor/thor/lib/thor/shell/basic.rb512
-rw-r--r--lib/bundler/vendor/thor/lib/thor/shell/color.rb157
-rw-r--r--lib/bundler/vendor/thor/lib/thor/shell/html.rb126
-rw-r--r--lib/bundler/vendor/thor/lib/thor/util.rb284
-rw-r--r--lib/bundler/vendor/thor/lib/thor/version.rb3
-rw-r--r--lib/bundler/vendor/tsort/lib/tsort.rb452
-rw-r--r--lib/bundler/vendor/uri/lib/uri.rb104
-rw-r--r--lib/bundler/vendor/uri/lib/uri/common.rb729
-rw-r--r--lib/bundler/vendor/uri/lib/uri/file.rb100
-rw-r--r--lib/bundler/vendor/uri/lib/uri/ftp.rb267
-rw-r--r--lib/bundler/vendor/uri/lib/uri/generic.rb1587
-rw-r--r--lib/bundler/vendor/uri/lib/uri/http.rb125
-rw-r--r--lib/bundler/vendor/uri/lib/uri/https.rb23
-rw-r--r--lib/bundler/vendor/uri/lib/uri/ldap.rb261
-rw-r--r--lib/bundler/vendor/uri/lib/uri/ldaps.rb22
-rw-r--r--lib/bundler/vendor/uri/lib/uri/mailto.rb293
-rw-r--r--lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb539
-rw-r--r--lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb119
-rw-r--r--lib/bundler/vendor/uri/lib/uri/version.rb6
-rw-r--r--lib/bundler/vendor/uri/lib/uri/ws.rb83
-rw-r--r--lib/bundler/vendor/uri/lib/uri/wss.rb23
-rw-r--r--lib/bundler/vendored_fileutils.rb4
-rw-r--r--lib/bundler/vendored_persistent.rb15
-rw-r--r--lib/bundler/vendored_pub_grub.rb4
-rw-r--r--lib/bundler/vendored_thor.rb8
-rw-r--r--lib/bundler/vendored_tsort.rb4
-rw-r--r--lib/bundler/vendored_uri.rb4
-rw-r--r--lib/bundler/version.rb13
-rw-r--r--lib/bundler/vlad.rb17
-rw-r--r--lib/bundler/worker.rb117
-rw-r--r--lib/bundler/yaml_serializer.rb89
-rw-r--r--lib/cgi.rb5
-rw-r--r--lib/cgi/cgi.gemspec42
-rw-r--r--lib/cgi/cookie.rb57
-rw-r--r--lib/cgi/core.rb78
-rw-r--r--lib/cgi/html.rb6
-rw-r--r--lib/cgi/session.rb72
-rw-r--r--lib/cgi/session/pstore.rb19
-rw-r--r--lib/cgi/util.rb109
-rw-r--r--lib/cmath.gemspec24
-rw-r--r--lib/cmath.rb435
-rw-r--r--lib/csv.gemspec21
-rw-r--r--lib/csv.rb4324
-rw-r--r--lib/csv/core_ext/array.rb9
-rw-r--r--lib/csv/core_ext/string.rb9
-rw-r--r--lib/csv/csv.gemspec64
-rw-r--r--lib/csv/delete_suffix.rb18
-rw-r--r--lib/csv/fields_converter.rb89
-rw-r--r--lib/csv/input_record_separator.rb18
-rw-r--r--lib/csv/match_p.rb20
-rw-r--r--lib/csv/parser.rb1288
-rw-r--r--lib/csv/row.rb757
-rw-r--r--lib/csv/table.rb1055
-rw-r--r--lib/csv/version.rb6
-rw-r--r--lib/csv/writer.rb210
-rw-r--r--lib/debug.rb1111
-rw-r--r--lib/delegate.rb120
-rw-r--r--lib/delegate/delegate.gemspec29
-rw-r--r--lib/did_you_mean.rb155
-rw-r--r--lib/did_you_mean/core_ext/name_error.rb57
-rw-r--r--lib/did_you_mean/did_you_mean.gemspec27
-rw-r--r--lib/did_you_mean/experimental.rb2
-rw-r--r--lib/did_you_mean/formatter.rb44
-rw-r--r--lib/did_you_mean/formatters/plain_formatter.rb4
-rw-r--r--lib/did_you_mean/formatters/verbose_formatter.rb10
-rw-r--r--lib/did_you_mean/jaro_winkler.rb87
-rw-r--r--lib/did_you_mean/levenshtein.rb57
-rw-r--r--lib/did_you_mean/spell_checker.rb46
-rw-r--r--lib/did_you_mean/spell_checkers/key_error_checker.rb20
-rw-r--r--lib/did_you_mean/spell_checkers/method_name_checker.rb79
-rw-r--r--lib/did_you_mean/spell_checkers/name_error_checkers.rb20
-rw-r--r--lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb49
-rw-r--r--lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb85
-rw-r--r--lib/did_you_mean/spell_checkers/null_checker.rb6
-rw-r--r--lib/did_you_mean/spell_checkers/pattern_key_name_checker.rb20
-rw-r--r--lib/did_you_mean/spell_checkers/require_path_checker.rb39
-rw-r--r--lib/did_you_mean/tree_spell_checker.rb109
-rw-r--r--lib/did_you_mean/verbose.rb2
-rw-r--r--lib/did_you_mean/version.rb3
-rw-r--r--lib/drb/drb.gemspec43
-rw-r--r--lib/drb/drb.rb301
-rw-r--r--lib/drb/extserv.rb6
-rw-r--r--lib/drb/extservm.rb11
-rw-r--r--lib/drb/gw.rb2
-rw-r--r--lib/drb/observer.rb2
-rw-r--r--lib/drb/ssl.rb12
-rw-r--r--lib/drb/timeridconv.rb2
-rw-r--r--lib/drb/unix.rb8
-rw-r--r--lib/drb/version.rb3
-rw-r--r--lib/drb/weakidconv.rb59
-rw-r--r--lib/e2mmap.rb177
-rw-r--r--lib/erb.gemspec38
-rw-r--r--lib/erb.rb651
-rw-r--r--lib/erb/compiler.rb471
-rw-r--r--lib/erb/def_method.rb46
-rw-r--r--lib/erb/util.rb62
-rw-r--r--lib/erb/version.rb5
-rw-r--r--lib/error_highlight.rb2
-rw-r--r--lib/error_highlight/base.rb545
-rw-r--r--lib/error_highlight/core_ext.rb47
-rw-r--r--lib/error_highlight/error_highlight.gemspec27
-rw-r--r--lib/error_highlight/formatter.rb23
-rw-r--r--lib/error_highlight/version.rb3
-rw-r--r--lib/fileutils.gemspec30
-rw-r--r--lib/fileutils.rb1900
-rw-r--r--lib/find.gemspec31
-rw-r--r--lib/find.rb12
-rw-r--r--lib/forwardable.rb47
-rw-r--r--lib/forwardable/forwardable.gemspec26
-rw-r--r--lib/forwardable/impl.rb9
-rw-r--r--lib/getoptlong.rb576
-rw-r--r--lib/getoptlong/getoptlong.gemspec30
-rw-r--r--lib/ipaddr.gemspec28
-rw-r--r--lib/ipaddr.rb149
-rw-r--r--lib/irb.rb538
-rw-r--r--lib/irb/.document1
-rw-r--r--lib/irb/cmd/backtrace.rb21
-rw-r--r--lib/irb/cmd/break.rb21
-rw-r--r--lib/irb/cmd/catch.rb21
-rw-r--r--lib/irb/cmd/chws.rb22
-rw-r--r--lib/irb/cmd/continue.rb17
-rw-r--r--lib/irb/cmd/debug.rb136
-rw-r--r--lib/irb/cmd/delete.rb17
-rw-r--r--lib/irb/cmd/edit.rb61
-rw-r--r--lib/irb/cmd/finish.rb17
-rw-r--r--lib/irb/cmd/fork.rb19
-rw-r--r--lib/irb/cmd/help.rb53
-rw-r--r--lib/irb/cmd/info.rb21
-rw-r--r--lib/irb/cmd/irb_info.rb37
-rw-r--r--lib/irb/cmd/load.rb49
-rw-r--r--lib/irb/cmd/ls.rb132
-rw-r--r--lib/irb/cmd/measure.rb48
-rw-r--r--lib/irb/cmd/next.rb17
-rw-r--r--lib/irb/cmd/nop.rb38
-rw-r--r--lib/irb/cmd/pushws.rb26
-rw-r--r--lib/irb/cmd/show_cmds.rb39
-rw-r--r--lib/irb/cmd/show_source.rb112
-rw-r--r--lib/irb/cmd/step.rb17
-rw-r--r--lib/irb/cmd/subirb.rb53
-rw-r--r--lib/irb/cmd/whereami.rb25
-rw-r--r--lib/irb/color.rb260
-rw-r--r--lib/irb/color_printer.rb55
-rw-r--r--lib/irb/completion.rb392
-rw-r--r--lib/irb/context.rb299
-rw-r--r--lib/irb/easter-egg.rb138
-rw-r--r--lib/irb/ext/change-ws.rb7
-rw-r--r--lib/irb/ext/history.rb68
-rw-r--r--lib/irb/ext/loader.rb50
-rw-r--r--lib/irb/ext/multi-irb.rb19
-rw-r--r--lib/irb/ext/save-history.rb54
-rw-r--r--lib/irb/ext/tracer.rb26
-rw-r--r--lib/irb/ext/use-loader.rb17
-rw-r--r--lib/irb/ext/workspaces.rb7
-rw-r--r--lib/irb/extend-command.rb366
-rw-r--r--lib/irb/frame.rb25
-rw-r--r--lib/irb/help.rb11
-rw-r--r--lib/irb/init.rb218
-rw-r--r--lib/irb/input-method.rb321
-rw-r--r--lib/irb/inspector.rb36
-rw-r--r--lib/irb/irb.gemspec45
-rw-r--r--lib/irb/lc/.document4
-rw-r--r--lib/irb/lc/error.rb74
-rw-r--r--lib/irb/lc/help-message94
-rw-r--r--lib/irb/lc/ja/encoding_aliases.rb11
-rw-r--r--lib/irb/lc/ja/error.rb78
-rw-r--r--lib/irb/lc/ja/help-message29
-rw-r--r--lib/irb/locale.rb75
-rw-r--r--lib/irb/magic-file.rb38
-rw-r--r--lib/irb/notifier.rb28
-rw-r--r--lib/irb/output-method.rb18
-rw-r--r--lib/irb/ruby-lex.rb1657
-rw-r--r--lib/irb/ruby-token.rb267
-rw-r--r--lib/irb/ruby_logo.aa37
-rw-r--r--lib/irb/slex.rb282
-rw-r--r--lib/irb/version.rb11
-rw-r--r--lib/irb/workspace.rb96
-rw-r--r--lib/irb/ws-for-case-2.rb6
-rw-r--r--lib/irb/xmp.rb10
-rw-r--r--lib/logger.rb1145
-rw-r--r--lib/logger/errors.rb9
-rw-r--r--lib/logger/formatter.rb36
-rw-r--r--lib/logger/log_device.rb207
-rw-r--r--lib/logger/logger.gemspec26
-rw-r--r--lib/logger/period.rb47
-rw-r--r--lib/logger/severity.rb38
-rw-r--r--lib/logger/version.rb5
-rw-r--r--lib/matrix.rb2148
-rw-r--r--lib/matrix/eigenvalue_decomposition.rb883
-rw-r--r--lib/matrix/lup_decomposition.rb219
-rw-r--r--lib/mkmf.rb461
-rw-r--r--lib/monitor.rb324
-rw-r--r--lib/mutex_m.gemspec28
-rw-r--r--lib/mutex_m.rb35
-rw-r--r--lib/net/ftp.rb1493
-rw-r--r--lib/net/http.rb2175
-rw-r--r--lib/net/http/backward.rb38
-rw-r--r--lib/net/http/exceptions.rb52
-rw-r--r--lib/net/http/generic_request.rb110
-rw-r--r--lib/net/http/header.rb777
-rw-r--r--lib/net/http/net-http.gemspec39
-rw-r--r--lib/net/http/request.rb77
-rw-r--r--lib/net/http/requests.rb350
-rw-r--r--lib/net/http/response.rb366
-rw-r--r--lib/net/http/responses.rb1319
-rw-r--r--lib/net/http/status.rb17
-rw-r--r--lib/net/https.rb2
-rw-r--r--lib/net/imap.rb3725
-rw-r--r--lib/net/net-protocol.gemspec33
-rw-r--r--lib/net/pop.rb1022
-rw-r--r--lib/net/protocol.rb180
-rw-r--r--lib/net/smtp.rb1078
-rw-r--r--lib/observer.rb27
-rw-r--r--lib/observer/observer.gemspec32
-rw-r--r--lib/open-uri.gemspec32
-rw-r--r--lib/open-uri.rb91
-rw-r--r--lib/open3.rb117
-rw-r--r--lib/open3/open3.gemspec33
-rw-r--r--lib/open3/version.rb3
-rw-r--r--lib/optparse.rb456
-rw-r--r--lib/optparse/ac.rb9
-rw-r--r--lib/optparse/date.rb2
-rw-r--r--lib/optparse/kwargs.rb7
-rw-r--r--lib/optparse/optparse.gemspec30
-rw-r--r--lib/optparse/shellwords.rb2
-rw-r--r--lib/optparse/time.rb2
-rw-r--r--lib/optparse/uri.rb2
-rw-r--r--lib/ostruct.rb285
-rw-r--r--lib/ostruct/ostruct.gemspec27
-rw-r--r--lib/pp.gemspec34
-rw-r--r--lib/pp.rb139
-rw-r--r--lib/prettyprint.gemspec29
-rw-r--r--lib/prettyprint.rb8
-rw-r--r--lib/prime.rb467
-rw-r--r--lib/profile.rb11
-rw-r--r--lib/profiler.rb149
-rw-r--r--lib/pstore.rb584
-rw-r--r--lib/pstore/pstore.gemspec32
-rw-r--r--lib/racc.rb6
-rw-r--r--lib/racc/compat.rb33
-rw-r--r--lib/racc/debugflags.rb60
-rw-r--r--lib/racc/exception.rb16
-rw-r--r--lib/racc/grammar.rb1118
-rw-r--r--lib/racc/grammarfileparser.rb561
-rw-r--r--lib/racc/info.rb17
-rw-r--r--lib/racc/iset.rb92
-rw-r--r--lib/racc/logfilegenerator.rb212
-rw-r--r--lib/racc/parser-text.rb637
-rw-r--r--lib/racc/parser.rb85
-rw-r--r--lib/racc/parserfilegenerator.rb470
-rw-r--r--lib/racc/racc.gemspec58
-rw-r--r--lib/racc/rdoc/grammar.en.rdoc219
-rw-r--r--lib/racc/sourcetext.rb35
-rw-r--r--lib/racc/state.rb972
-rw-r--r--lib/racc/statetransitiontable.rb311
-rw-r--r--lib/racc/static.rb5
-rw-r--r--lib/random/formatter.rb245
-rw-r--r--lib/rdoc.rb117
-rw-r--r--lib/rdoc/.document1
-rw-r--r--lib/rdoc/any_method.rb60
-rw-r--r--lib/rdoc/class_module.rb2
-rw-r--r--lib/rdoc/code_objects.rb3
-rw-r--r--lib/rdoc/comment.rb63
-rw-r--r--lib/rdoc/context.rb67
-rw-r--r--lib/rdoc/context/section.rb15
-rw-r--r--lib/rdoc/cross_reference.rb108
-rw-r--r--lib/rdoc/encoding.rb48
-rw-r--r--lib/rdoc/erb_partial.rb2
-rw-r--r--lib/rdoc/erbio.rb10
-rw-r--r--lib/rdoc/generator.rb10
-rw-r--r--lib/rdoc/generator/darkfish.rb24
-rw-r--r--lib/rdoc/generator/json_index.rb5
-rw-r--r--lib/rdoc/generator/markup.rb16
-rw-r--r--lib/rdoc/generator/pot.rb6
-rw-r--r--lib/rdoc/generator/template/darkfish/_head.rhtml27
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml4
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml32
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml14
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml4
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml14
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml12
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml10
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml32
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml10
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml8
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml33
-rw-r--r--lib/rdoc/generator/template/darkfish/class.rhtml114
-rw-r--r--lib/rdoc/generator/template/darkfish/css/rdoc.css63
-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttfbin138268 -> 71200 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttfbin138680 -> 71692 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/index.rhtml9
-rw-r--r--lib/rdoc/generator/template/darkfish/js/darkfish.js2
-rw-r--r--lib/rdoc/generator/template/darkfish/js/search.js2
-rw-r--r--lib/rdoc/generator/template/darkfish/servlet_root.rhtml31
-rw-r--r--lib/rdoc/generator/template/darkfish/table_of_contents.rhtml39
-rw-r--r--lib/rdoc/generator/template/json_index/js/navigation.js5
-rw-r--r--lib/rdoc/i18n.rb4
-rw-r--r--lib/rdoc/known_classes.rb9
-rw-r--r--lib/rdoc/markdown.rb787
-rw-r--r--lib/rdoc/markdown/literals.rb123
-rw-r--r--lib/rdoc/markup.rb723
-rw-r--r--lib/rdoc/markup/attr_span.rb10
-rw-r--r--lib/rdoc/markup/attribute_manager.rb163
-rw-r--r--lib/rdoc/markup/attributes.rb12
-rw-r--r--lib/rdoc/markup/formatter.rb47
-rw-r--r--lib/rdoc/markup/formatter_test_case.rb764
-rw-r--r--lib/rdoc/markup/heading.rb6
-rw-r--r--lib/rdoc/markup/inline.rb2
-rw-r--r--lib/rdoc/markup/parser.rb126
-rw-r--r--lib/rdoc/markup/pre_process.rb5
-rw-r--r--lib/rdoc/markup/regexp_handling.rb41
-rw-r--r--lib/rdoc/markup/special.rb41
-rw-r--r--lib/rdoc/markup/table.rb47
-rw-r--r--lib/rdoc/markup/text_formatter_test_case.rb (renamed from test/rdoc/support/text_formatter_test_case.rb)0
-rw-r--r--lib/rdoc/markup/to_bs.rb6
-rw-r--r--lib/rdoc/markup/to_html.rb108
-rw-r--r--lib/rdoc/markup/to_html_crossref.rb65
-rw-r--r--lib/rdoc/markup/to_html_snippet.rb18
-rw-r--r--lib/rdoc/markup/to_joined_paragraph.rb1
-rw-r--r--lib/rdoc/markup/to_label.rb20
-rw-r--r--lib/rdoc/markup/to_markdown.rb16
-rw-r--r--lib/rdoc/markup/to_rdoc.rb63
-rw-r--r--lib/rdoc/markup/to_table_of_contents.rb1
-rw-r--r--lib/rdoc/markup/to_tt_only.rb4
-rw-r--r--lib/rdoc/method_attr.rb2
-rw-r--r--lib/rdoc/normal_class.rb2
-rw-r--r--lib/rdoc/normal_module.rb2
-rw-r--r--lib/rdoc/options.rb169
-rw-r--r--lib/rdoc/parser.rb37
-rw-r--r--lib/rdoc/parser/c.rb379
-rw-r--r--lib/rdoc/parser/changelog.rb159
-rw-r--r--lib/rdoc/parser/ripper_state_lex.rb159
-rw-r--r--lib/rdoc/parser/ruby.rb340
-rw-r--r--lib/rdoc/parser/ruby_tools.rb22
-rw-r--r--lib/rdoc/rd.rb7
-rw-r--r--lib/rdoc/rd/block_parser.rb119
-rw-r--r--lib/rdoc/rd/inline_parser.rb277
-rw-r--r--lib/rdoc/rdoc.gemspec218
-rw-r--r--lib/rdoc/rdoc.rb110
-rw-r--r--lib/rdoc/ri.rb9
-rw-r--r--lib/rdoc/ri/driver.rb149
-rw-r--r--lib/rdoc/ri/paths.rb20
-rw-r--r--lib/rdoc/ri/task.rb2
-rw-r--r--lib/rdoc/rubygems_hook.rb10
-rw-r--r--lib/rdoc/servlet.rb31
-rw-r--r--lib/rdoc/single_class.rb5
-rw-r--r--lib/rdoc/stats.rb7
-rw-r--r--lib/rdoc/stats/normal.rb34
-rw-r--r--lib/rdoc/store.rb71
-rw-r--r--lib/rdoc/task.rb38
-rw-r--r--lib/rdoc/test_case.rb203
-rw-r--r--lib/rdoc/text.rb28
-rw-r--r--lib/rdoc/token_stream.rb13
-rw-r--r--lib/rdoc/tom_doc.rb25
-rw-r--r--lib/rdoc/top_level.rb10
-rw-r--r--lib/rdoc/version.rb10
-rw-r--r--lib/readline.gemspec33
-rw-r--r--lib/readline.rb7
-rw-r--r--lib/reline.rb607
-rw-r--r--lib/reline/ansi.rb357
-rw-r--r--lib/reline/config.rb401
-rw-r--r--lib/reline/general_io.rb113
-rw-r--r--lib/reline/history.rb76
-rw-r--r--lib/reline/key_actor.rb7
-rw-r--r--lib/reline/key_actor/base.rb19
-rw-r--r--lib/reline/key_actor/emacs.rb517
-rw-r--r--lib/reline/key_actor/vi_command.rb518
-rw-r--r--lib/reline/key_actor/vi_insert.rb517
-rw-r--r--lib/reline/key_stroke.rb105
-rw-r--r--lib/reline/kill_ring.rb125
-rw-r--r--lib/reline/line_editor.rb3279
-rw-r--r--lib/reline/reline.gemspec25
-rw-r--r--lib/reline/terminfo.rb174
-rw-r--r--lib/reline/unicode.rb662
-rw-r--r--lib/reline/unicode/east_asian_width.rb1196
-rw-r--r--lib/reline/version.rb3
-rw-r--r--lib/reline/windows.rb501
-rw-r--r--lib/resolv-replace.gemspec22
-rw-r--r--lib/resolv.gemspec29
-rw-r--r--lib/resolv.rb98
-rw-r--r--lib/rexml/attlistdecl.rb63
-rw-r--r--lib/rexml/attribute.rb192
-rw-r--r--lib/rexml/cdata.rb68
-rw-r--r--lib/rexml/child.rb97
-rw-r--r--lib/rexml/comment.rb80
-rw-r--r--lib/rexml/doctype.rb270
-rw-r--r--lib/rexml/document.rb291
-rw-r--r--lib/rexml/dtd/attlistdecl.rb11
-rw-r--r--lib/rexml/dtd/dtd.rb47
-rw-r--r--lib/rexml/dtd/elementdecl.rb18
-rw-r--r--lib/rexml/dtd/entitydecl.rb57
-rw-r--r--lib/rexml/dtd/notationdecl.rb40
-rw-r--r--lib/rexml/element.rb1265
-rw-r--r--lib/rexml/encoding.rb51
-rw-r--r--lib/rexml/entity.rb171
-rw-r--r--lib/rexml/formatters/default.rb112
-rw-r--r--lib/rexml/formatters/pretty.rb142
-rw-r--r--lib/rexml/formatters/transitive.rb58
-rw-r--r--lib/rexml/functions.rb421
-rw-r--r--lib/rexml/instruction.rb71
-rw-r--r--lib/rexml/light/node.rb196
-rw-r--r--lib/rexml/namespace.rb48
-rw-r--r--lib/rexml/node.rb76
-rw-r--r--lib/rexml/output.rb30
-rw-r--r--lib/rexml/parent.rb166
-rw-r--r--lib/rexml/parseexception.rb52
-rw-r--r--lib/rexml/parsers/baseparser.rb533
-rw-r--r--lib/rexml/parsers/lightparser.rb59
-rw-r--r--lib/rexml/parsers/pullparser.rb197
-rw-r--r--lib/rexml/parsers/sax2parser.rb273
-rw-r--r--lib/rexml/parsers/streamparser.rb61
-rw-r--r--lib/rexml/parsers/treeparser.rb101
-rw-r--r--lib/rexml/parsers/ultralightparser.rb57
-rw-r--r--lib/rexml/parsers/xpathparser.rb657
-rw-r--r--lib/rexml/quickpath.rb266
-rw-r--r--lib/rexml/rexml.rb32
-rw-r--r--lib/rexml/sax2listener.rb98
-rw-r--r--lib/rexml/security.rb28
-rw-r--r--lib/rexml/source.rb297
-rw-r--r--lib/rexml/streamlistener.rb93
-rw-r--r--lib/rexml/syncenumerator.rb33
-rw-r--r--lib/rexml/text.rb426
-rw-r--r--lib/rexml/undefinednamespaceexception.rb9
-rw-r--r--lib/rexml/validation/relaxng.rb539
-rw-r--r--lib/rexml/validation/validation.rb144
-rw-r--r--lib/rexml/validation/validationexception.rb10
-rw-r--r--lib/rexml/xmldecl.rb116
-rw-r--r--lib/rexml/xmltokens.rb85
-rw-r--r--lib/rexml/xpath.rb81
-rw-r--r--lib/rexml/xpath_parser.rb704
-rw-r--r--lib/rinda/rinda.gemspec35
-rw-r--r--lib/rinda/rinda.rb2
-rw-r--r--lib/rinda/ring.rb2
-rw-r--r--lib/rinda/tuplespace.rb2
-rw-r--r--lib/rss.rb92
-rw-r--r--lib/rss/0.9.rb462
-rw-r--r--lib/rss/1.0.rb485
-rw-r--r--lib/rss/2.0.rb143
-rw-r--r--lib/rss/atom.rb1025
-rw-r--r--lib/rss/content.rb34
-rw-r--r--lib/rss/content/1.0.rb10
-rw-r--r--lib/rss/content/2.0.rb12
-rw-r--r--lib/rss/converter.rb171
-rw-r--r--lib/rss/dublincore.rb164
-rw-r--r--lib/rss/dublincore/1.0.rb13
-rw-r--r--lib/rss/dublincore/2.0.rb13
-rw-r--r--lib/rss/dublincore/atom.rb17
-rw-r--r--lib/rss/image.rb198
-rw-r--r--lib/rss/itunes.rb413
-rw-r--r--lib/rss/maker.rb79
-rw-r--r--lib/rss/maker/0.9.rb509
-rw-r--r--lib/rss/maker/1.0.rb436
-rw-r--r--lib/rss/maker/2.0.rb224
-rw-r--r--lib/rss/maker/atom.rb173
-rw-r--r--lib/rss/maker/base.rb945
-rw-r--r--lib/rss/maker/content.rb22
-rw-r--r--lib/rss/maker/dublincore.rb122
-rw-r--r--lib/rss/maker/entry.rb164
-rw-r--r--lib/rss/maker/feed.rb427
-rw-r--r--lib/rss/maker/image.rb112
-rw-r--r--lib/rss/maker/itunes.rb243
-rw-r--r--lib/rss/maker/slash.rb34
-rw-r--r--lib/rss/maker/syndication.rb19
-rw-r--r--lib/rss/maker/taxonomy.rb119
-rw-r--r--lib/rss/maker/trackback.rb62
-rw-r--r--lib/rss/parser.rb571
-rw-r--r--lib/rss/rexmlparser.rb50
-rw-r--r--lib/rss/rss.rb1346
-rw-r--r--lib/rss/slash.rb52
-rw-r--r--lib/rss/syndication.rb69
-rw-r--r--lib/rss/taxonomy.rb148
-rw-r--r--lib/rss/trackback.rb291
-rw-r--r--lib/rss/utils.rb200
-rw-r--r--lib/rss/xml-stylesheet.rb106
-rw-r--r--lib/rss/xml.rb72
-rw-r--r--lib/rss/xmlparser.rb95
-rw-r--r--lib/rss/xmlscanner.rb122
-rw-r--r--lib/ruby2_keywords.gemspec23
-rw-r--r--lib/ruby_vm/rjit/assembler.rb1129
-rw-r--r--lib/ruby_vm/rjit/block.rb11
-rw-r--r--lib/ruby_vm/rjit/branch_stub.rb24
-rw-r--r--lib/ruby_vm/rjit/c_pointer.rb360
-rw-r--r--lib/ruby_vm/rjit/c_type.rb91
-rw-r--r--lib/ruby_vm/rjit/code_block.rb87
-rw-r--r--lib/ruby_vm/rjit/compiler.rb509
-rw-r--r--lib/ruby_vm/rjit/context.rb377
-rw-r--r--lib/ruby_vm/rjit/entry_stub.rb7
-rw-r--r--lib/ruby_vm/rjit/exit_compiler.rb164
-rw-r--r--lib/ruby_vm/rjit/hooks.rb36
-rw-r--r--lib/ruby_vm/rjit/insn_compiler.rb5955
-rw-r--r--lib/ruby_vm/rjit/invariants.rb155
-rw-r--r--lib/ruby_vm/rjit/jit_state.rb65
-rw-r--r--lib/ruby_vm/rjit/stats.rb188
-rw-r--r--lib/ruby_vm/rjit/type.rb233
-rw-r--r--lib/rubygems.rb746
-rw-r--r--lib/rubygems/available_set.rb24
-rw-r--r--lib/rubygems/basic_specification.rb134
-rw-r--r--lib/rubygems/bundler_version_finder.rb85
-rw-r--r--lib/rubygems/command.rb199
-rw-r--r--lib/rubygems/command_manager.rb80
-rw-r--r--lib/rubygems/commands/build_command.rb105
-rw-r--r--lib/rubygems/commands/cert_command.rb211
-rw-r--r--lib/rubygems/commands/check_command.rb55
-rw-r--r--lib/rubygems/commands/cleanup_command.rb86
-rw-r--r--lib/rubygems/commands/contents_command.rb72
-rw-r--r--lib/rubygems/commands/dependency_command.rb116
-rw-r--r--lib/rubygems/commands/environment_command.rb48
-rw-r--r--lib/rubygems/commands/exec_command.rb249
-rw-r--r--lib/rubygems/commands/fetch_command.rb55
-rw-r--r--lib/rubygems/commands/generate_index_command.rb39
-rw-r--r--lib/rubygems/commands/help_command.rb42
-rw-r--r--lib/rubygems/commands/info_command.rb38
-rw-r--r--lib/rubygems/commands/install_command.rb154
-rw-r--r--lib/rubygems/commands/list_command.rb19
-rw-r--r--lib/rubygems/commands/lock_command.rb24
-rw-r--r--lib/rubygems/commands/mirror_command.rb8
-rw-r--r--lib/rubygems/commands/open_command.rb48
-rw-r--r--lib/rubygems/commands/outdated_command.rb12
-rw-r--r--lib/rubygems/commands/owner_command.rb76
-rw-r--r--lib/rubygems/commands/pristine_command.rb147
-rw-r--r--lib/rubygems/commands/push_command.rb100
-rw-r--r--lib/rubygems/commands/query_command.rb358
-rw-r--r--lib/rubygems/commands/rdoc_command.rb62
-rw-r--r--lib/rubygems/commands/search_command.rb18
-rw-r--r--lib/rubygems/commands/server_command.rb91
-rw-r--r--lib/rubygems/commands/setup_command.rb580
-rw-r--r--lib/rubygems/commands/signin_command.rb23
-rw-r--r--lib/rubygems/commands/signout_command.rb21
-rw-r--r--lib/rubygems/commands/sources_command.rb98
-rw-r--r--lib/rubygems/commands/specification_command.rb62
-rw-r--r--lib/rubygems/commands/stale_command.rb11
-rw-r--r--lib/rubygems/commands/uninstall_command.rb151
-rw-r--r--lib/rubygems/commands/unpack_command.rb83
-rw-r--r--lib/rubygems/commands/update_command.rb256
-rw-r--r--lib/rubygems/commands/which_command.rb27
-rw-r--r--lib/rubygems/commands/yank_command.rb49
-rw-r--r--lib/rubygems/compatibility.rb45
-rw-r--r--lib/rubygems/config_file.rb292
-rw-r--r--lib/rubygems/core_ext/kernel_gem.rb26
-rwxr-xr-x[-rw-r--r--]lib/rubygems/core_ext/kernel_require.rb215
-rw-r--r--lib/rubygems/core_ext/kernel_warn.rb49
-rw-r--r--lib/rubygems/core_ext/tcpsocket_init.rb54
-rw-r--r--lib/rubygems/defaults.rb214
-rw-r--r--lib/rubygems/dependency.rb121
-rw-r--r--lib/rubygems/dependency_installer.rb302
-rw-r--r--lib/rubygems/dependency_list.rb65
-rw-r--r--lib/rubygems/deprecate.rb130
-rw-r--r--lib/rubygems/doctor.rb62
-rw-r--r--lib/rubygems/errors.rb33
-rw-r--r--lib/rubygems/exceptions.rb94
-rw-r--r--lib/rubygems/ext.rb15
-rw-r--r--lib/rubygems/ext/build_error.rb4
-rw-r--r--lib/rubygems/ext/builder.rb170
-rw-r--r--lib/rubygems/ext/cargo_builder.rb360
-rw-r--r--lib/rubygems/ext/cargo_builder/link_flag_converter.rb27
-rw-r--r--lib/rubygems/ext/cmake_builder.rb13
-rw-r--r--lib/rubygems/ext/configure_builder.rb15
-rw-r--r--lib/rubygems/ext/ext_conf_builder.rb109
-rw-r--r--lib/rubygems/ext/rake_builder.rb40
-rw-r--r--lib/rubygems/gem_runner.rb44
-rw-r--r--lib/rubygems/gemcutter_utilities.rb280
-rw-r--r--lib/rubygems/indexer.rb107
-rw-r--r--lib/rubygems/install_default_message.rb6
-rw-r--r--lib/rubygems/install_message.rb6
-rw-r--r--lib/rubygems/install_update_options.rb175
-rw-r--r--lib/rubygems/installer.rb534
-rw-r--r--lib/rubygems/installer_test_case.rb199
-rw-r--r--lib/rubygems/installer_uninstaller_utils.rb27
-rw-r--r--lib/rubygems/local_remote_options.rb61
-rw-r--r--lib/rubygems/mock_gem_ui.rb89
-rw-r--r--lib/rubygems/name_tuple.rb37
-rw-r--r--lib/rubygems/openssl.rb7
-rw-r--r--lib/rubygems/optparse.rb3
-rw-r--r--lib/rubygems/optparse/.document1
-rw-r--r--lib/rubygems/optparse/lib/optionparser.rb2
-rw-r--r--lib/rubygems/optparse/lib/optparse.rb2308
-rw-r--r--lib/rubygems/optparse/lib/optparse/ac.rb54
-rw-r--r--lib/rubygems/optparse/lib/optparse/date.rb18
-rw-r--r--lib/rubygems/optparse/lib/optparse/kwargs.rb22
-rw-r--r--lib/rubygems/optparse/lib/optparse/shellwords.rb7
-rw-r--r--lib/rubygems/optparse/lib/optparse/time.rb11
-rw-r--r--lib/rubygems/optparse/lib/optparse/uri.rb7
-rw-r--r--lib/rubygems/optparse/lib/optparse/version.rb71
-rw-r--r--lib/rubygems/package.rb402
-rw-r--r--lib/rubygems/package/digest_io.rb12
-rw-r--r--lib/rubygems/package/file_source.rb14
-rw-r--r--lib/rubygems/package/io_source.rb10
-rw-r--r--lib/rubygems/package/old.rb41
-rw-r--r--lib/rubygems/package/source.rb2
-rw-r--r--lib/rubygems/package/tar_header.rb156
-rw-r--r--lib/rubygems/package/tar_reader.rb44
-rw-r--r--lib/rubygems/package/tar_reader/entry.rb124
-rw-r--r--lib/rubygems/package/tar_test_case.rb147
-rw-r--r--lib/rubygems/package/tar_writer.rb66
-rw-r--r--lib/rubygems/package_task.rb18
-rw-r--r--lib/rubygems/path_support.rb30
-rw-r--r--lib/rubygems/platform.rb190
-rw-r--r--lib/rubygems/psych_additions.rb10
-rw-r--r--lib/rubygems/psych_tree.rb5
-rw-r--r--lib/rubygems/query_utils.rb349
-rw-r--r--lib/rubygems/rdoc.rb330
-rw-r--r--lib/rubygems/remote_fetcher.rb257
-rw-r--r--lib/rubygems/request.rb112
-rw-r--r--lib/rubygems/request/connection_pools.rb53
-rw-r--r--lib/rubygems/request/http_pool.rb13
-rw-r--r--lib/rubygems/request/https_pool.rb5
-rw-r--r--lib/rubygems/request_set.rb185
-rw-r--r--lib/rubygems/request_set/gem_dependency_api.rb360
-rw-r--r--lib/rubygems/request_set/lockfile.rb66
-rw-r--r--lib/rubygems/request_set/lockfile/parser.rb94
-rw-r--r--lib/rubygems/request_set/lockfile/tokenizer.rb58
-rw-r--r--lib/rubygems/requirement.rb141
-rw-r--r--lib/rubygems/resolver.rb140
-rw-r--r--lib/rubygems/resolver/activation_request.rb95
-rw-r--r--lib/rubygems/resolver/api_set.rb72
-rw-r--r--lib/rubygems/resolver/api_set/gem_parser.rb20
-rw-r--r--lib/rubygems/resolver/api_specification.rb55
-rw-r--r--lib/rubygems/resolver/best_set.rb32
-rw-r--r--lib/rubygems/resolver/composed_set.rb20
-rw-r--r--lib/rubygems/resolver/conflict.rb52
-rw-r--r--lib/rubygems/resolver/current_set.rb6
-rw-r--r--lib/rubygems/resolver/dependency_request.rb17
-rw-r--r--lib/rubygems/resolver/git_set.rb18
-rw-r--r--lib/rubygems/resolver/git_specification.rb24
-rw-r--r--lib/rubygems/resolver/index_set.rb28
-rw-r--r--lib/rubygems/resolver/index_specification.rb53
-rw-r--r--lib/rubygems/resolver/installed_specification.rb20
-rw-r--r--lib/rubygems/resolver/installer_set.rb122
-rw-r--r--lib/rubygems/resolver/local_specification.rb12
-rw-r--r--lib/rubygems/resolver/lock_set.rb28
-rw-r--r--lib/rubygems/resolver/lock_specification.rb28
-rw-r--r--lib/rubygems/resolver/molinillo.rb3
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo.rb11
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb7
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb8
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb51
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb1
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb3
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb3
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb3
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb3
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb13
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb3
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb7
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb63
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb90
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb3
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb14
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb4
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb675
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb5
-rw-r--r--lib/rubygems/resolver/molinillo/lib/molinillo/state.rb12
-rw-r--r--lib/rubygems/resolver/requirement_list.rb4
-rw-r--r--lib/rubygems/resolver/set.rb8
-rw-r--r--lib/rubygems/resolver/source_set.rb13
-rw-r--r--lib/rubygems/resolver/spec_specification.rb20
-rw-r--r--lib/rubygems/resolver/specification.rb35
-rw-r--r--lib/rubygems/resolver/stats.rb1
-rw-r--r--lib/rubygems/resolver/vendor_set.rb14
-rw-r--r--lib/rubygems/resolver/vendor_specification.rb14
-rw-r--r--lib/rubygems/s3_uri_signer.rb177
-rw-r--r--lib/rubygems/safe_yaml.rb37
-rw-r--r--lib/rubygems/security.rb180
-rw-r--r--lib/rubygems/security/policies.rb100
-rw-r--r--lib/rubygems/security/policy.rb99
-rw-r--r--lib/rubygems/security/signer.rb115
-rw-r--r--lib/rubygems/security/trust_dir.rb44
-rw-r--r--lib/rubygems/security_option.rb16
-rw-r--r--lib/rubygems/server.rb878
-rw-r--r--lib/rubygems/source.rb133
-rw-r--r--lib/rubygems/source/git.rb81
-rw-r--r--lib/rubygems/source/installed.rb14
-rw-r--r--lib/rubygems/source/local.rb99
-rw-r--r--lib/rubygems/source/lock.rb15
-rw-r--r--lib/rubygems/source/specific_file.rb16
-rw-r--r--lib/rubygems/source/vendor.rb10
-rw-r--r--lib/rubygems/source_list.rb26
-rw-r--r--lib/rubygems/source_local.rb8
-rw-r--r--lib/rubygems/source_specific_file.rb6
-rw-r--r--lib/rubygems/spec_fetcher.rb142
-rw-r--r--lib/rubygems/specification.rb1599
-rw-r--r--lib/rubygems/specification_policy.rb504
-rw-r--r--lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem (renamed from lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem)0
-rw-r--r--lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem23
-rw-r--r--lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem25
-rw-r--r--lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem21
-rw-r--r--lib/rubygems/stub_specification.rb101
-rw-r--r--lib/rubygems/syck_hack.rb77
-rw-r--r--lib/rubygems/test_case.rb1538
-rw-r--r--lib/rubygems/test_utilities.rb384
-rw-r--r--lib/rubygems/text.rb55
-rw-r--r--lib/rubygems/tsort.rb3
-rw-r--r--lib/rubygems/tsort/.document1
-rw-r--r--lib/rubygems/tsort/lib/tsort.rb452
-rw-r--r--lib/rubygems/uninstaller.rb237
-rw-r--r--lib/rubygems/unknown_command_spell_checker.rb21
-rw-r--r--lib/rubygems/update_suggestion.rb69
-rw-r--r--lib/rubygems/uri.rb126
-rw-r--r--lib/rubygems/uri_formatter.rb11
-rw-r--r--lib/rubygems/user_interaction.rb208
-rw-r--r--lib/rubygems/util.rb123
-rw-r--r--lib/rubygems/util/licenses.rb960
-rw-r--r--lib/rubygems/util/list.rb7
-rw-r--r--lib/rubygems/validator.rb74
-rw-r--r--lib/rubygems/version.rb120
-rw-r--r--lib/rubygems/version_option.rb29
-rw-r--r--lib/rubygems/webauthn_listener.rb92
-rw-r--r--lib/rubygems/webauthn_listener/response.rb161
-rw-r--r--lib/rubygems/yaml_serializer.rb89
-rw-r--r--lib/scanf.gemspec25
-rw-r--r--lib/scanf.rb776
-rw-r--r--lib/securerandom.gemspec29
-rw-r--r--lib/securerandom.rb274
-rw-r--r--lib/set.rb664
-rw-r--r--lib/set/set.gemspec30
-rw-r--r--lib/set/sorted_set.rb6
-rw-r--r--lib/shell.rb461
-rw-r--r--lib/shell/builtin-command.rb147
-rw-r--r--lib/shell/command-processor.rb671
-rw-r--r--lib/shell/error.rb26
-rw-r--r--lib/shell/filter.rb138
-rw-r--r--lib/shell/process-controller.rb309
-rw-r--r--lib/shell/system-command.rb159
-rw-r--r--lib/shell/version.rb16
-rw-r--r--lib/shellwords.gemspec30
-rw-r--r--lib/shellwords.rb44
-rw-r--r--lib/singleton.rb33
-rw-r--r--lib/singleton/singleton.gemspec30
-rw-r--r--lib/sync.rb329
-rw-r--r--lib/syntax_suggest.rb3
-rw-r--r--lib/syntax_suggest/api.rb201
-rw-r--r--lib/syntax_suggest/around_block_scan.rb359
-rw-r--r--lib/syntax_suggest/block_expand.rb159
-rw-r--r--lib/syntax_suggest/capture_code_context.rb231
-rw-r--r--lib/syntax_suggest/clean_document.rb306
-rw-r--r--lib/syntax_suggest/cli.rb130
-rw-r--r--lib/syntax_suggest/code_block.rb100
-rw-r--r--lib/syntax_suggest/code_frontier.rb178
-rw-r--r--lib/syntax_suggest/code_line.rb237
-rw-r--r--lib/syntax_suggest/code_search.rb139
-rw-r--r--lib/syntax_suggest/core_ext.rb114
-rw-r--r--lib/syntax_suggest/display_code_with_line_numbers.rb70
-rw-r--r--lib/syntax_suggest/display_invalid_blocks.rb83
-rw-r--r--lib/syntax_suggest/explain_syntax.rb103
-rw-r--r--lib/syntax_suggest/left_right_lex_count.rb168
-rw-r--r--lib/syntax_suggest/lex_all.rb55
-rw-r--r--lib/syntax_suggest/lex_value.rb70
-rw-r--r--lib/syntax_suggest/parse_blocks_from_indent_line.rb60
-rw-r--r--lib/syntax_suggest/pathname_from_message.rb59
-rw-r--r--lib/syntax_suggest/priority_engulf_queue.rb63
-rw-r--r--lib/syntax_suggest/priority_queue.rb105
-rw-r--r--lib/syntax_suggest/ripper_errors.rb36
-rw-r--r--lib/syntax_suggest/syntax_suggest.gemspec32
-rw-r--r--lib/syntax_suggest/unvisited_lines.rb36
-rw-r--r--lib/syntax_suggest/version.rb5
-rw-r--r--lib/tempfile.gemspec29
-rw-r--r--lib/tempfile.rb207
-rw-r--r--lib/thwait.rb140
-rw-r--r--lib/time.gemspec31
-rw-r--r--lib/time.rb291
-rw-r--r--lib/timeout.rb175
-rw-r--r--lib/timeout/timeout.gemspec30
-rw-r--r--lib/tmpdir.gemspec26
-rw-r--r--lib/tmpdir.rb75
-rw-r--r--lib/tracer.rb286
-rw-r--r--lib/tsort.gemspec29
-rw-r--r--lib/tsort.rb23
-rw-r--r--lib/un.gemspec31
-rw-r--r--lib/un.rb83
-rw-r--r--lib/unicode_normalize/normalize.rb6
-rw-r--r--lib/unicode_normalize/tables.rb10333
-rw-r--r--lib/uri.rb74
-rw-r--r--lib/uri/common.rb577
-rw-r--r--lib/uri/file.rb100
-rw-r--r--lib/uri/ftp.rb68
-rw-r--r--lib/uri/generic.rb402
-rw-r--r--lib/uri/http.rb65
-rw-r--r--lib/uri/https.rb6
-rw-r--r--lib/uri/ldap.rb84
-rw-r--r--lib/uri/ldaps.rb5
-rw-r--r--lib/uri/mailto.rb45
-rw-r--r--lib/uri/rfc2396_parser.rb79
-rw-r--r--lib/uri/rfc3986_parser.rb32
-rw-r--r--lib/uri/uri.gemspec39
-rw-r--r--lib/uri/version.rb6
-rw-r--r--lib/uri/ws.rb83
-rw-r--r--lib/uri/wss.rb23
-rw-r--r--lib/weakref.rb4
-rw-r--r--lib/weakref/weakref.gemspec34
-rw-r--r--lib/webrick.rb227
-rw-r--r--lib/webrick/.document (renamed from tool/lib/webrick/.document)0
-rw-r--r--lib/webrick/accesslog.rb159
-rw-r--r--lib/webrick/cgi.rb313
-rw-r--r--lib/webrick/compat.rb (renamed from tool/lib/webrick/compat.rb)0
-rw-r--r--lib/webrick/config.rb158
-rw-r--r--lib/webrick/cookie.rb172
-rw-r--r--lib/webrick/htmlutils.rb (renamed from tool/lib/webrick/htmlutils.rb)0
-rw-r--r--lib/webrick/httpauth.rb96
-rw-r--r--lib/webrick/httpauth/authenticator.rb117
-rw-r--r--lib/webrick/httpauth/basicauth.rb108
-rw-r--r--lib/webrick/httpauth/digestauth.rb395
-rw-r--r--lib/webrick/httpauth/htdigest.rb132
-rw-r--r--lib/webrick/httpauth/htgroup.rb94
-rw-r--r--lib/webrick/httpauth/htpasswd.rb125
-rw-r--r--lib/webrick/httpauth/userdb.rb (renamed from tool/lib/webrick/httpauth/userdb.rb)0
-rw-r--r--lib/webrick/httpproxy.rb338
-rw-r--r--lib/webrick/httprequest.rb598
-rw-r--r--lib/webrick/httpresponse.rb517
-rw-r--r--lib/webrick/https.rb152
-rw-r--r--lib/webrick/httpserver.rb280
-rw-r--r--lib/webrick/httpservlet.rb23
-rw-r--r--lib/webrick/httpservlet/abstract.rb152
-rw-r--r--lib/webrick/httpservlet/cgi_runner.rb (renamed from tool/lib/webrick/httpservlet/cgi_runner.rb)0
-rw-r--r--lib/webrick/httpservlet/cgihandler.rb120
-rw-r--r--lib/webrick/httpservlet/erbhandler.rb88
-rw-r--r--lib/webrick/httpservlet/filehandler.rb541
-rw-r--r--lib/webrick/httpservlet/prochandler.rb47
-rw-r--r--lib/webrick/httpstatus.rb194
-rw-r--r--lib/webrick/httputils.rb513
-rw-r--r--lib/webrick/httpversion.rb (renamed from tool/lib/webrick/httpversion.rb)0
-rw-r--r--lib/webrick/log.rb (renamed from tool/lib/webrick/log.rb)0
-rw-r--r--lib/webrick/server.rb378
-rw-r--r--lib/webrick/ssl.rb215
-rw-r--r--lib/webrick/utils.rb270
-rw-r--r--lib/webrick/version.rb18
-rw-r--r--lib/webrick/webrick.gemspec29
-rw-r--r--lib/yaml.rb28
-rw-r--r--lib/yaml/store.rb2
-rw-r--r--lib/yaml/yaml.gemspec30
-rwxr-xr-xlibexec/bundle46
-rwxr-xr-xlibexec/bundler4
-rwxr-xr-xlibexec/erb164
-rwxr-xr-xlibexec/irb9
-rwxr-xr-xlibexec/racc320
-rwxr-xr-xlibexec/rdoc43
-rwxr-xr-xlibexec/syntax_suggest7
-rw-r--r--load.c1440
-rw-r--r--loadpath.c1
-rw-r--r--localeinit.c18
-rw-r--r--main.c33
-rw-r--r--man/erb.17
-rw-r--r--man/goruby.12
-rw-r--r--man/index.txt25
-rw-r--r--man/irb.1110
-rw-r--r--man/ruby.170
-rw-r--r--marshal.c2185
-rw-r--r--marshal.rb40
-rw-r--r--math.c742
-rw-r--r--memory_view.c872
-rw-r--r--method.h106
-rw-r--r--mini_builtin.c102
-rw-r--r--miniinit.c2
-rw-r--r--misc/.vscode/launch.json13
-rw-r--r--misc/.vscode/settings.json5
-rw-r--r--misc/.vscode/tasks.json14
-rw-r--r--misc/README19
-rwxr-xr-xmisc/expand_tabs.rb208
-rw-r--r--misc/gdb.py130
-rw-r--r--misc/inf-ruby.el418
-rwxr-xr-xmisc/lldb_cruby.py671
-rw-r--r--misc/lldb_disasm.py250
-rw-r--r--misc/lldb_rb/commands/command_template.py30
-rw-r--r--misc/lldb_rb/commands/heap_page_command.py26
-rw-r--r--misc/lldb_rb/commands/print_flags_command.py31
-rw-r--r--misc/lldb_rb/commands/rb_id2str_command.py49
-rw-r--r--misc/lldb_rb/commands/rclass_ext_command.py14
-rw-r--r--misc/lldb_rb/commands/rp_command.py16
-rw-r--r--misc/lldb_rb/constants.py6
-rw-r--r--misc/lldb_rb/lldb_interface.py8
-rw-r--r--misc/lldb_rb/rb_base_command.py57
-rw-r--r--misc/lldb_rb/rb_heap_structs.py140
-rw-r--r--misc/lldb_rb/utils.py284
-rw-r--r--misc/lldb_yjit.py47
-rw-r--r--misc/rb_optparse.bash5
-rwxr-xr-x[-rw-r--r--]misc/rb_optparse.zsh15
-rw-r--r--misc/rdoc-mode.el166
-rw-r--r--misc/ruby-additional.el181
-rw-r--r--misc/ruby-electric.el583
-rw-r--r--misc/ruby-mode.el1584
-rw-r--r--misc/ruby-style.el17
-rw-r--r--misc/rubydb2x.el104
-rw-r--r--misc/rubydb3x.el115
-rw-r--r--misc/test_lldb_cruby.rb8
-rw-r--r--missing/alloca.c2
-rw-r--r--missing/crypt.h5
-rw-r--r--missing/dtoa.c3470
-rw-r--r--missing/dup2.c60
-rw-r--r--missing/erf.c15
-rw-r--r--missing/explicit_bzero.c12
-rw-r--r--missing/file.h3
-rw-r--r--missing/fileblocks.c1
-rw-r--r--missing/finite.c9
-rw-r--r--missing/flock.c11
-rw-r--r--missing/isinf.c69
-rw-r--r--missing/isnan.c32
-rw-r--r--missing/langinfo.c2
-rw-r--r--missing/memcmp.c3
-rw-r--r--missing/mt19937.c158
-rw-r--r--missing/nan.c28
-rw-r--r--missing/procstat_vm.c85
-rw-r--r--missing/setproctitle.c5
-rw-r--r--missing/signbit.c19
-rw-r--r--missing/stdbool.h20
-rw-r--r--missing/tgamma.c17
-rw-r--r--missing/x86_64-chkstk.s (renamed from missing/x86_64-chkstk.S)0
-rw-r--r--nilclass.rb25
-rw-r--r--node.c1927
-rw-r--r--node.h520
-rw-r--r--numeric.c5681
-rw-r--r--numeric.rb370
-rw-r--r--object.c3447
-rw-r--r--pack.c2787
-rw-r--r--pack.rb31
-rw-r--r--parse.y19418
-rw-r--r--prelude.rb148
-rw-r--r--probes.d11
-rw-r--r--probes_helper.h15
-rw-r--r--proc.c2784
-rw-r--r--process.c3676
-rw-r--r--ractor.c3721
-rw-r--r--ractor.rb969
-rw-r--r--ractor_core.h387
-rw-r--r--random.c1465
-rw-r--r--range.c2274
-rw-r--r--rational.c1697
-rw-r--r--re.c3266
-rw-r--r--regcomp.c65
-rw-r--r--regenc.c15
-rw-r--r--regenc.h12
-rw-r--r--regerror.c11
-rw-r--r--regexec.c896
-rw-r--r--regint.h68
-rw-r--r--regparse.c1037
-rw-r--r--regparse.h2
-rw-r--r--rjit.c477
-rw-r--r--rjit.h103
-rw-r--r--rjit.rb41
-rw-r--r--rjit_c.c541
-rw-r--r--rjit_c.h165
-rw-r--r--rjit_c.rb1690
-rw-r--r--ruby-runner.c64
-rw-r--r--ruby.c2850
-rw-r--r--ruby_assert.h64
-rw-r--r--ruby_atomic.h256
-rw-r--r--rubystub.c29
-rw-r--r--safe.c139
-rw-r--r--sample/README2
-rw-r--r--sample/all-ruby-quine.rb24
-rw-r--r--sample/biorhythm.rb9
-rw-r--r--sample/coverage.rb2
-rw-r--r--sample/dir.rb11
-rw-r--r--sample/drb/README.ja.rdoc2
-rw-r--r--sample/drb/README.rdoc4
-rw-r--r--sample/drb/dchats.rb2
-rw-r--r--sample/drb/http0serv.rb8
-rw-r--r--sample/drb/name.rb3
-rw-r--r--sample/drb/old_tuplespace.rb2
-rw-r--r--sample/exyacc.rb2
-rw-r--r--sample/fact.rb4
-rw-r--r--sample/fib.py2
-rw-r--r--sample/freq.rb12
-rw-r--r--sample/from.rb2
-rw-r--r--sample/getoptlong/abbrev.rb9
-rw-r--r--sample/getoptlong/aliases.rb8
-rw-r--r--sample/getoptlong/argv.rb12
-rw-r--r--sample/getoptlong/each.rb12
-rw-r--r--sample/getoptlong/fibonacci.rb62
-rw-r--r--sample/getoptlong/permute.rb12
-rw-r--r--sample/getoptlong/require_order.rb13
-rw-r--r--sample/getoptlong/return_in_order.rb13
-rw-r--r--sample/getoptlong/simple.rb7
-rw-r--r--sample/getoptlong/types.rb10
-rw-r--r--sample/iseq_loader.rb6
-rw-r--r--sample/list.rb5
-rw-r--r--sample/list3.rb2
-rwxr-xr-xsample/mine.rb8
-rw-r--r--sample/mpart.rb44
-rw-r--r--sample/observ.rb2
-rw-r--r--sample/occur.rb2
-rw-r--r--sample/occur2.rb13
-rw-r--r--sample/openssl/c_rehash.rb3
-rw-r--r--sample/openssl/cert2text.rb7
-rw-r--r--sample/openssl/certstore.rb7
-rw-r--r--sample/openssl/echo_cli.rb2
-rw-r--r--sample/openssl/echo_svr.rb8
-rw-r--r--sample/openssl/gen_csr.rb14
-rw-r--r--sample/openssl/smime_read.rb11
-rw-r--r--sample/openssl/smime_write.rb15
-rw-r--r--sample/ripper/ruby2html.rb6
-rwxr-xr-xsample/rss/blend.rb79
-rwxr-xr-xsample/rss/convert.rb69
-rwxr-xr-xsample/rss/list_description.rb91
-rwxr-xr-xsample/rss/re_read.rb64
-rwxr-xr-xsample/rss/rss_recent.rb85
-rwxr-xr-x[-rw-r--r--]sample/test.rb0
-rw-r--r--sample/testunit/adder.rb13
-rw-r--r--sample/testunit/subtracter.rb12
-rw-r--r--sample/testunit/tc_adder.rb18
-rw-r--r--sample/testunit/tc_subtracter.rb18
-rw-r--r--sample/testunit/ts_examples.rb7
-rw-r--r--sample/timeout.rb18
-rw-r--r--sample/trick2013/kinaba/remarks.markdown4
-rw-r--r--sample/trick2013/mame/music-box.mp4bin0 -> 580724 bytes-rw-r--r--sample/trick2013/mame/remarks.markdown4
-rw-r--r--sample/trick2013/yhara/entry.rb2
-rw-r--r--sample/trick2015/kinaba/entry.rb6
-rw-r--r--sample/trick2015/ksk_1/remarks.markdown2
-rw-r--r--sample/trick2015/ksk_2/remarks.markdown4
-rw-r--r--sample/trick2018/01-kinaba/authors.markdown3
-rw-r--r--sample/trick2018/01-kinaba/entry.rb8
-rw-r--r--sample/trick2018/01-kinaba/remarks.markdown55
-rw-r--r--sample/trick2018/02-mame/authors.markdown3
-rw-r--r--sample/trick2018/02-mame/entry.rb15
-rw-r--r--sample/trick2018/02-mame/remarks.markdown16
-rw-r--r--sample/trick2018/03-tompng/Gemfile2
-rw-r--r--sample/trick2018/03-tompng/Gemfile.lock13
-rw-r--r--sample/trick2018/03-tompng/authors.markdown3
-rw-r--r--sample/trick2018/03-tompng/entry.rb31
-rw-r--r--sample/trick2018/03-tompng/output.txt44
-rw-r--r--sample/trick2018/03-tompng/remarks.markdown19
-rw-r--r--sample/trick2018/03-tompng/trick.pngbin5661 -> 0 bytes-rw-r--r--sample/trick2018/04-colin/authors.markdown3
-rw-r--r--sample/trick2018/04-colin/entry.rb2
-rw-r--r--sample/trick2018/04-colin/remarks.markdown62
-rw-r--r--sample/trick2018/05-tompng/authors.markdown3
-rw-r--r--sample/trick2018/05-tompng/entry.rb41
-rw-r--r--sample/trick2018/05-tompng/preview_of_output.pngbin66800 -> 0 bytes-rw-r--r--sample/trick2018/05-tompng/remarks.markdown31
-rw-r--r--sample/trick2018/README.md16
-rw-r--r--sample/trick2022/01-tompng/Gemfile2
-rw-r--r--sample/trick2022/01-tompng/Gemfile.lock13
-rw-r--r--sample/trick2022/01-tompng/authors.markdown3
-rw-r--r--sample/trick2022/01-tompng/entry.rb40
-rw-r--r--sample/trick2022/01-tompng/remarks.markdown51
-rw-r--r--sample/trick2022/02-tompng/authors.markdown3
-rw-r--r--sample/trick2022/02-tompng/entry.rb32
-rw-r--r--sample/trick2022/02-tompng/remarks.markdown32
-rw-r--r--sample/trick2022/03-mame/authors.markdown3
-rw-r--r--sample/trick2022/03-mame/entry.rb27
-rw-r--r--sample/trick2022/03-mame/remarks.markdown96
-rw-r--r--sample/trick2022/03-mame/test.txt13
-rw-r--r--sample/trick2022/README.md14
-rw-r--r--sample/uumerge.rb2
-rw-r--r--sample/webrick/demo-app.rb66
-rw-r--r--sample/webrick/demo-multipart.cgi12
-rw-r--r--sample/webrick/demo-servlet.rb6
-rw-r--r--sample/webrick/demo-urlencoded.cgi12
-rw-r--r--sample/webrick/hello.cgi11
-rw-r--r--sample/webrick/hello.rb8
-rw-r--r--sample/webrick/httpd.rb23
-rw-r--r--sample/webrick/httpproxy.rb25
-rw-r--r--sample/webrick/httpsd.rb33
-rw-r--r--scheduler.c699
-rw-r--r--shape.c898
-rw-r--r--shape.h232
-rw-r--r--signal.c999
-rw-r--r--siphash.c102
-rw-r--r--siphash.h2
-rw-r--r--sparc.c4
-rw-r--r--spec/README.md87
-rw-r--r--spec/bundler/bundler/build_metadata_spec.rb49
-rw-r--r--spec/bundler/bundler/bundler_spec.rb378
-rw-r--r--spec/bundler/bundler/cli_spec.rb262
-rw-r--r--spec/bundler/bundler/compact_index_client/updater_spec.rb59
-rw-r--r--spec/bundler/bundler/definition_spec.rb292
-rw-r--r--spec/bundler/bundler/dependency_spec.rb160
-rw-r--r--spec/bundler/bundler/digest_spec.rb24
-rw-r--r--spec/bundler/bundler/dsl_spec.rb308
-rw-r--r--spec/bundler/bundler/endpoint_specification_spec.rb83
-rw-r--r--spec/bundler/bundler/env_spec.rb236
-rw-r--r--spec/bundler/bundler/environment_preserver_spec.rb79
-rw-r--r--spec/bundler/bundler/fetcher/base_spec.rb76
-rw-r--r--spec/bundler/bundler/fetcher/compact_index_spec.rb109
-rw-r--r--spec/bundler/bundler/fetcher/dependency_spec.rb283
-rw-r--r--spec/bundler/bundler/fetcher/downloader_spec.rb245
-rw-r--r--spec/bundler/bundler/fetcher/index_spec.rb99
-rw-r--r--spec/bundler/bundler/fetcher_spec.rb192
-rw-r--r--spec/bundler/bundler/friendly_errors_spec.rb234
-rw-r--r--spec/bundler/bundler/gem_helper_spec.rb451
-rw-r--r--spec/bundler/bundler/gem_version_promoter_spec.rb163
-rw-r--r--spec/bundler/bundler/index_spec.rb36
-rw-r--r--spec/bundler/bundler/installer/gem_installer_spec.rb50
-rw-r--r--spec/bundler/bundler/installer/parallel_installer_spec.rb46
-rw-r--r--spec/bundler/bundler/installer/spec_installation_spec.rb66
-rw-r--r--spec/bundler/bundler/lockfile_parser_spec.rb153
-rw-r--r--spec/bundler/bundler/mirror_spec.rb331
-rw-r--r--spec/bundler/bundler/plugin/api/source_spec.rb88
-rw-r--r--spec/bundler/bundler/plugin/api_spec.rb83
-rw-r--r--spec/bundler/bundler/plugin/dsl_spec.rb38
-rw-r--r--spec/bundler/bundler/plugin/events_spec.rb22
-rw-r--r--spec/bundler/bundler/plugin/index_spec.rb204
-rw-r--r--spec/bundler/bundler/plugin/installer_spec.rb131
-rw-r--r--spec/bundler/bundler/plugin/source_list_spec.rb25
-rw-r--r--spec/bundler/bundler/plugin_spec.rb337
-rw-r--r--spec/bundler/bundler/remote_specification_spec.rb187
-rw-r--r--spec/bundler/bundler/resolver/candidate_spec.rb21
-rw-r--r--spec/bundler/bundler/retry_spec.rb81
-rw-r--r--spec/bundler/bundler/ruby_dsl_spec.rb95
-rw-r--r--spec/bundler/bundler/ruby_version_spec.rb500
-rw-r--r--spec/bundler/bundler/rubygems_integration_spec.rb104
-rw-r--r--spec/bundler/bundler/settings/validator_spec.rb111
-rw-r--r--spec/bundler/bundler/settings_spec.rb337
-rw-r--r--spec/bundler/bundler/shared_helpers_spec.rb506
-rw-r--r--spec/bundler/bundler/source/git/git_proxy_spec.rb150
-rw-r--r--spec/bundler/bundler/source/git_spec.rb73
-rw-r--r--spec/bundler/bundler/source/path_spec.rb31
-rw-r--r--spec/bundler/bundler/source/rubygems/remote_spec.rb172
-rw-r--r--spec/bundler/bundler/source/rubygems_spec.rb47
-rw-r--r--spec/bundler/bundler/source_list_spec.rb459
-rw-r--r--spec/bundler/bundler/source_spec.rb174
-rw-r--r--spec/bundler/bundler/spec_set_spec.rb77
-rw-r--r--spec/bundler/bundler/stub_specification_spec.rb47
-rw-r--r--spec/bundler/bundler/ui/shell_spec.rb60
-rw-r--r--spec/bundler/bundler/ui_spec.rb41
-rw-r--r--spec/bundler/bundler/uri_credentials_filter_spec.rb127
-rw-r--r--spec/bundler/bundler/worker_spec.rb69
-rw-r--r--spec/bundler/bundler/yaml_serializer_spec.rb194
-rw-r--r--spec/bundler/cache/cache_path_spec.rb32
-rw-r--r--spec/bundler/cache/gems_spec.rb327
-rw-r--r--spec/bundler/cache/git_spec.rb276
-rw-r--r--spec/bundler/cache/path_spec.rb169
-rw-r--r--spec/bundler/cache/platform_spec.rb49
-rw-r--r--spec/bundler/commands/add_spec.rb305
-rw-r--r--spec/bundler/commands/binstubs_spec.rb556
-rw-r--r--spec/bundler/commands/cache_spec.rb438
-rw-r--r--spec/bundler/commands/check_spec.rb554
-rw-r--r--spec/bundler/commands/clean_spec.rb916
-rw-r--r--spec/bundler/commands/config_spec.rb580
-rw-r--r--spec/bundler/commands/console_spec.rb141
-rw-r--r--spec/bundler/commands/doctor_spec.rb146
-rw-r--r--spec/bundler/commands/exec_spec.rb1254
-rw-r--r--spec/bundler/commands/fund_spec.rb82
-rw-r--r--spec/bundler/commands/help_spec.rb90
-rw-r--r--spec/bundler/commands/info_spec.rb249
-rw-r--r--spec/bundler/commands/init_spec.rb207
-rw-r--r--spec/bundler/commands/inject_spec.rb117
-rw-r--r--spec/bundler/commands/install_spec.rb1106
-rw-r--r--spec/bundler/commands/issue_spec.rb16
-rw-r--r--spec/bundler/commands/licenses_spec.rb37
-rw-r--r--spec/bundler/commands/list_spec.rb195
-rw-r--r--spec/bundler/commands/lock_spec.rb1270
-rw-r--r--spec/bundler/commands/newgem_spec.rb1654
-rw-r--r--spec/bundler/commands/open_spec.rb176
-rw-r--r--spec/bundler/commands/outdated_spec.rb1368
-rw-r--r--spec/bundler/commands/platform_spec.rb1307
-rw-r--r--spec/bundler/commands/post_bundle_message_spec.rb205
-rw-r--r--spec/bundler/commands/pristine_spec.rb221
-rw-r--r--spec/bundler/commands/remove_spec.rb732
-rw-r--r--spec/bundler/commands/show_spec.rb224
-rw-r--r--spec/bundler/commands/update_spec.rb1696
-rw-r--r--spec/bundler/commands/version_spec.rb47
-rw-r--r--spec/bundler/commands/viz_spec.rb144
-rw-r--r--spec/bundler/install/allow_offline_install_spec.rb99
-rw-r--r--spec/bundler/install/binstubs_spec.rb49
-rw-r--r--spec/bundler/install/bundler_spec.rb268
-rw-r--r--spec/bundler/install/deploy_spec.rb473
-rw-r--r--spec/bundler/install/failure_spec.rb51
-rw-r--r--spec/bundler/install/gemfile/eval_gemfile_spec.rb122
-rw-r--r--spec/bundler/install/gemfile/force_ruby_platform_spec.rb118
-rw-r--r--spec/bundler/install/gemfile/gemspec_spec.rb697
-rw-r--r--spec/bundler/install/gemfile/git_spec.rb1623
-rw-r--r--spec/bundler/install/gemfile/groups_spec.rb403
-rw-r--r--spec/bundler/install/gemfile/install_if_spec.rb44
-rw-r--r--spec/bundler/install/gemfile/lockfile_spec.rb48
-rw-r--r--spec/bundler/install/gemfile/path_spec.rb938
-rw-r--r--spec/bundler/install/gemfile/platform_spec.rb618
-rw-r--r--spec/bundler/install/gemfile/ruby_spec.rb123
-rw-r--r--spec/bundler/install/gemfile/sources_spec.rb1672
-rw-r--r--spec/bundler/install/gemfile/specific_platform_spec.rb974
-rw-r--r--spec/bundler/install/gemfile_spec.rb118
-rw-r--r--spec/bundler/install/gems/compact_index_spec.rb945
-rw-r--r--spec/bundler/install/gems/dependency_api_spec.rb759
-rw-r--r--spec/bundler/install/gems/env_spec.rb107
-rw-r--r--spec/bundler/install/gems/flex_spec.rb370
-rw-r--r--spec/bundler/install/gems/fund_spec.rb164
-rw-r--r--spec/bundler/install/gems/mirror_spec.rb39
-rw-r--r--spec/bundler/install/gems/native_extensions_spec.rb188
-rw-r--r--spec/bundler/install/gems/post_install_spec.rb150
-rw-r--r--spec/bundler/install/gems/resolving_spec.rb600
-rw-r--r--spec/bundler/install/gems/standalone_spec.rb515
-rw-r--r--spec/bundler/install/gems/win32_spec.rb25
-rw-r--r--spec/bundler/install/gemspecs_spec.rb161
-rw-r--r--spec/bundler/install/git_spec.rb102
-rw-r--r--spec/bundler/install/global_cache_spec.rb254
-rw-r--r--spec/bundler/install/path_spec.rb226
-rw-r--r--spec/bundler/install/prereleases_spec.rb54
-rw-r--r--spec/bundler/install/process_lock_spec.rb57
-rw-r--r--spec/bundler/install/redownload_spec.rb91
-rw-r--r--spec/bundler/install/security_policy_spec.rb72
-rw-r--r--spec/bundler/install/yanked_spec.rb233
-rw-r--r--spec/bundler/lock/git_spec.rb162
-rw-r--r--spec/bundler/lock/lockfile_spec.rb1522
-rw-r--r--spec/bundler/other/cli_dispatch_spec.rb20
-rw-r--r--spec/bundler/other/ext_spec.rb65
-rw-r--r--spec/bundler/other/major_deprecation_spec.rb649
-rw-r--r--spec/bundler/plugins/command_spec.rb78
-rw-r--r--spec/bundler/plugins/hook_spec.rb109
-rw-r--r--spec/bundler/plugins/install_spec.rb381
-rw-r--r--spec/bundler/plugins/list_spec.rb60
-rw-r--r--spec/bundler/plugins/source/example_spec.rb452
-rw-r--r--spec/bundler/plugins/source_spec.rb111
-rw-r--r--spec/bundler/plugins/uninstall_spec.rb49
-rw-r--r--spec/bundler/quality_es_spec.rb61
-rw-r--r--spec/bundler/quality_spec.rb245
-rw-r--r--spec/bundler/realworld/dependency_api_spec.rb46
-rw-r--r--spec/bundler/realworld/double_check_spec.rb40
-rw-r--r--spec/bundler/realworld/edgecases_spec.rb516
-rw-r--r--spec/bundler/realworld/ffi_spec.rb57
-rw-r--r--spec/bundler/realworld/fixtures/warbler/.gitignore1
-rw-r--r--spec/bundler/realworld/fixtures/warbler/Gemfile7
-rw-r--r--spec/bundler/realworld/fixtures/warbler/Gemfile.lock30
-rw-r--r--spec/bundler/realworld/fixtures/warbler/bin/warbler-example.rb3
-rw-r--r--spec/bundler/realworld/fixtures/warbler/demo/demo.gemspec10
-rw-r--r--spec/bundler/realworld/gemfile_source_header_spec.rb53
-rw-r--r--spec/bundler/realworld/git_spec.rb11
-rw-r--r--spec/bundler/realworld/mirror_probe_spec.rb131
-rw-r--r--spec/bundler/realworld/parallel_spec.rb66
-rw-r--r--spec/bundler/realworld/slow_perf_spec.rb33
-rw-r--r--spec/bundler/resolver/basic_spec.rb350
-rw-r--r--spec/bundler/resolver/platform_spec.rb427
-rw-r--r--spec/bundler/runtime/executable_spec.rb169
-rw-r--r--spec/bundler/runtime/gem_tasks_spec.rb106
-rw-r--r--spec/bundler/runtime/inline_spec.rb601
-rw-r--r--spec/bundler/runtime/load_spec.rb113
-rw-r--r--spec/bundler/runtime/platform_spec.rb464
-rw-r--r--spec/bundler/runtime/require_spec.rb465
-rw-r--r--spec/bundler/runtime/self_management_spec.rb126
-rw-r--r--spec/bundler/runtime/setup_spec.rb1547
-rw-r--r--spec/bundler/runtime/with_unbundled_env_spec.rb302
-rw-r--r--spec/bundler/spec_helper.rb119
-rw-r--r--spec/bundler/support/artifice/compact_index.rb6
-rw-r--r--spec/bundler/support/artifice/compact_index_api_missing.rb13
-rw-r--r--spec/bundler/support/artifice/compact_index_basic_authentication.rb15
-rw-r--r--spec/bundler/support/artifice/compact_index_checksum_mismatch.rb16
-rw-r--r--spec/bundler/support/artifice/compact_index_concurrent_download.rb32
-rw-r--r--spec/bundler/support/artifice/compact_index_creds_diff_host.rb39
-rw-r--r--spec/bundler/support/artifice/compact_index_extra.rb6
-rw-r--r--spec/bundler/support/artifice/compact_index_extra_api.rb6
-rw-r--r--spec/bundler/support/artifice/compact_index_extra_api_missing.rb17
-rw-r--r--spec/bundler/support/artifice/compact_index_extra_missing.rb17
-rw-r--r--spec/bundler/support/artifice/compact_index_forbidden.rb13
-rw-r--r--spec/bundler/support/artifice/compact_index_host_redirect.rb21
-rw-r--r--spec/bundler/support/artifice/compact_index_no_gem.rb13
-rw-r--r--spec/bundler/support/artifice/compact_index_partial_update.rb38
-rw-r--r--spec/bundler/support/artifice/compact_index_partial_update_no_etag_not_incremental.rb40
-rw-r--r--spec/bundler/support/artifice/compact_index_precompiled_before.rb25
-rw-r--r--spec/bundler/support/artifice/compact_index_range_not_satisfiable.rb34
-rw-r--r--spec/bundler/support/artifice/compact_index_rate_limited.rb48
-rw-r--r--spec/bundler/support/artifice/compact_index_redirects.rb21
-rw-r--r--spec/bundler/support/artifice/compact_index_strict_basic_authentication.rb20
-rw-r--r--spec/bundler/support/artifice/compact_index_wrong_dependencies.rb17
-rw-r--r--spec/bundler/support/artifice/compact_index_wrong_gem_checksum.rb20
-rw-r--r--spec/bundler/support/artifice/endpoint.rb6
-rw-r--r--spec/bundler/support/artifice/endpoint_500.rb17
-rw-r--r--spec/bundler/support/artifice/endpoint_api_forbidden.rb13
-rw-r--r--spec/bundler/support/artifice/endpoint_basic_authentication.rb15
-rw-r--r--spec/bundler/support/artifice/endpoint_creds_diff_host.rb39
-rw-r--r--spec/bundler/support/artifice/endpoint_extra.rb33
-rw-r--r--spec/bundler/support/artifice/endpoint_extra_api.rb34
-rw-r--r--spec/bundler/support/artifice/endpoint_extra_missing.rb17
-rw-r--r--spec/bundler/support/artifice/endpoint_fallback.rb19
-rw-r--r--spec/bundler/support/artifice/endpoint_host_redirect.rb17
-rw-r--r--spec/bundler/support/artifice/endpoint_marshal_fail.rb6
-rw-r--r--spec/bundler/support/artifice/endpoint_marshal_fail_basic_authentication.rb15
-rw-r--r--spec/bundler/support/artifice/endpoint_mirror_source.rb17
-rw-r--r--spec/bundler/support/artifice/endpoint_redirect.rb17
-rw-r--r--spec/bundler/support/artifice/endpoint_strict_basic_authentication.rb20
-rw-r--r--spec/bundler/support/artifice/endpoint_timeout.rb15
-rw-r--r--spec/bundler/support/artifice/fail.rb29
-rw-r--r--spec/bundler/support/artifice/helpers/artifice.rb30
-rw-r--r--spec/bundler/support/artifice/helpers/compact_index.rb118
-rw-r--r--spec/bundler/support/artifice/helpers/compact_index_extra.rb33
-rw-r--r--spec/bundler/support/artifice/helpers/compact_index_extra_api.rb48
-rw-r--r--spec/bundler/support/artifice/helpers/endpoint.rb112
-rw-r--r--spec/bundler/support/artifice/helpers/endpoint_extra.rb29
-rw-r--r--spec/bundler/support/artifice/helpers/endpoint_fallback.rb15
-rw-r--r--spec/bundler/support/artifice/helpers/endpoint_marshal_fail.rb9
-rw-r--r--spec/bundler/support/artifice/helpers/rack_request.rb100
-rw-r--r--spec/bundler/support/artifice/vcr.rb152
-rw-r--r--spec/bundler/support/artifice/windows.rb45
-rw-r--r--spec/bundler/support/build_metadata.rb49
-rw-r--r--spec/bundler/support/builders.rb679
-rw-r--r--spec/bundler/support/bundle.rb10
-rw-r--r--spec/bundler/support/command_execution.rb33
-rw-r--r--spec/bundler/support/filters.rb38
-rw-r--r--spec/bundler/support/hax.rb53
-rw-r--r--spec/bundler/support/helpers.rb597
-rw-r--r--spec/bundler/support/indexes.rb419
-rw-r--r--spec/bundler/support/matchers.rb237
-rw-r--r--spec/bundler/support/path.rb311
-rw-r--r--spec/bundler/support/permissions.rb12
-rw-r--r--spec/bundler/support/platforms.rb106
-rw-r--r--spec/bundler/support/rubygems_ext.rb177
-rw-r--r--spec/bundler/support/rubygems_version_manager.rb120
-rw-r--r--spec/bundler/support/silent_logger.rb10
-rw-r--r--spec/bundler/support/switch_rubygems.rb4
-rw-r--r--spec/bundler/support/the_bundle.rb35
-rw-r--r--spec/bundler/update/gemfile_spec.rb47
-rw-r--r--spec/bundler/update/gems/fund_spec.rb50
-rw-r--r--spec/bundler/update/gems/post_install_spec.rb76
-rw-r--r--spec/bundler/update/git_spec.rb336
-rw-r--r--spec/bundler/update/path_spec.rb19
-rw-r--r--spec/bundler/update/redownload_spec.rb34
-rw-r--r--spec/default.mspec27
-rw-r--r--spec/lib/formatter_overrides.rb6
-rw-r--r--spec/lib/spec_coverage.rb1
-rw-r--r--spec/mspec/.gitignore26
-rw-r--r--spec/mspec/.rspec1
-rw-r--r--spec/mspec/.travis.yml18
-rw-r--r--spec/mspec/Gemfile4
-rw-r--r--spec/mspec/Gemfile.lock32
-rw-r--r--spec/mspec/README.md37
-rw-r--r--spec/mspec/Rakefile1
-rwxr-xr-xspec/mspec/bin/mspec2
-rw-r--r--spec/mspec/lib/mspec.rb14
-rwxr-xr-xspec/mspec/lib/mspec/commands/mkspec.rb20
-rw-r--r--spec/mspec/lib/mspec/commands/mspec-ci.rb3
-rw-r--r--spec/mspec/lib/mspec/commands/mspec-run.rb3
-rw-r--r--spec/mspec/lib/mspec/commands/mspec-tag.rb3
-rwxr-xr-xspec/mspec/lib/mspec/commands/mspec.rb79
-rw-r--r--spec/mspec/lib/mspec/expectations/expectations.rb22
-rw-r--r--spec/mspec/lib/mspec/expectations/should.rb32
-rw-r--r--spec/mspec/lib/mspec/guards/bug.rb19
-rw-r--r--spec/mspec/lib/mspec/guards/conflict.rb6
-rw-r--r--spec/mspec/lib/mspec/guards/feature.rb4
-rw-r--r--spec/mspec/lib/mspec/guards/guard.rb2
-rw-r--r--spec/mspec/lib/mspec/guards/platform.rb50
-rw-r--r--spec/mspec/lib/mspec/guards/superuser.rb10
-rw-r--r--spec/mspec/lib/mspec/guards/version.rb65
-rw-r--r--spec/mspec/lib/mspec/helpers.rb1
-rw-r--r--spec/mspec/lib/mspec/helpers/datetime.rb3
-rw-r--r--spec/mspec/lib/mspec/helpers/flunk.rb2
-rw-r--r--spec/mspec/lib/mspec/helpers/frozen_error_class.rb17
-rw-r--r--spec/mspec/lib/mspec/helpers/fs.rb10
-rw-r--r--spec/mspec/lib/mspec/helpers/io.rb40
-rw-r--r--spec/mspec/lib/mspec/helpers/numeric.rb14
-rw-r--r--spec/mspec/lib/mspec/helpers/ruby_exe.rb115
-rw-r--r--spec/mspec/lib/mspec/helpers/scratch.rb4
-rw-r--r--spec/mspec/lib/mspec/helpers/tmp.rb15
-rw-r--r--spec/mspec/lib/mspec/helpers/warning.rb14
-rw-r--r--spec/mspec/lib/mspec/matchers.rb2
-rw-r--r--spec/mspec/lib/mspec/matchers/base.rb92
-rw-r--r--spec/mspec/lib/mspec/matchers/be_close.rb4
-rw-r--r--spec/mspec/lib/mspec/matchers/block_caller.rb30
-rw-r--r--spec/mspec/lib/mspec/matchers/complain.rb25
-rw-r--r--spec/mspec/lib/mspec/matchers/eql.rb8
-rw-r--r--spec/mspec/lib/mspec/matchers/equal.rb8
-rw-r--r--spec/mspec/lib/mspec/matchers/equal_element.rb4
-rw-r--r--spec/mspec/lib/mspec/matchers/have_instance_method.rb2
-rw-r--r--spec/mspec/lib/mspec/matchers/have_method.rb2
-rw-r--r--spec/mspec/lib/mspec/matchers/have_private_instance_method.rb2
-rw-r--r--spec/mspec/lib/mspec/matchers/have_private_method.rb2
-rw-r--r--spec/mspec/lib/mspec/matchers/have_protected_instance_method.rb2
-rw-r--r--spec/mspec/lib/mspec/matchers/have_public_instance_method.rb2
-rw-r--r--spec/mspec/lib/mspec/matchers/have_singleton_method.rb2
-rw-r--r--spec/mspec/lib/mspec/matchers/include.rb4
-rw-r--r--spec/mspec/lib/mspec/matchers/include_any_of.rb29
-rw-r--r--spec/mspec/lib/mspec/matchers/match_yaml.rb6
-rw-r--r--spec/mspec/lib/mspec/matchers/method.rb2
-rw-r--r--spec/mspec/lib/mspec/matchers/output.rb10
-rw-r--r--spec/mspec/lib/mspec/matchers/raise_error.rb58
-rw-r--r--spec/mspec/lib/mspec/matchers/skip.rb5
-rw-r--r--spec/mspec/lib/mspec/mocks/mock.rb22
-rw-r--r--spec/mspec/lib/mspec/mocks/object.rb4
-rw-r--r--spec/mspec/lib/mspec/mocks/proxy.rb6
-rw-r--r--spec/mspec/lib/mspec/runner/actions/constants_leak_checker.rb84
-rw-r--r--spec/mspec/lib/mspec/runner/actions/filter.rb2
-rw-r--r--spec/mspec/lib/mspec/runner/actions/leakchecker.rb140
-rw-r--r--spec/mspec/lib/mspec/runner/actions/profile.rb60
-rw-r--r--spec/mspec/lib/mspec/runner/actions/tag.rb2
-rw-r--r--spec/mspec/lib/mspec/runner/actions/taglist.rb2
-rw-r--r--spec/mspec/lib/mspec/runner/actions/tally.rb14
-rw-r--r--spec/mspec/lib/mspec/runner/actions/timeout.rb129
-rw-r--r--spec/mspec/lib/mspec/runner/context.rb38
-rw-r--r--spec/mspec/lib/mspec/runner/evaluate.rb4
-rw-r--r--spec/mspec/lib/mspec/runner/example.rb14
-rw-r--r--spec/mspec/lib/mspec/runner/exception.rb31
-rw-r--r--spec/mspec/lib/mspec/runner/filters/regexp.rb24
-rw-r--r--spec/mspec/lib/mspec/runner/formatters.rb1
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/base.rb144
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/describe.rb1
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/dotted.rb110
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/file.rb9
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/html.rb10
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/junit.rb15
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/method.rb28
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/multi.rb42
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/profile.rb60
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/specdoc.rb14
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/spinner.rb20
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/stats.rb57
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/summary.rb11
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/unit.rb1
-rw-r--r--spec/mspec/lib/mspec/runner/formatters/yaml.rb10
-rw-r--r--spec/mspec/lib/mspec/runner/mspec.rb103
-rw-r--r--spec/mspec/lib/mspec/runner/object.rb12
-rw-r--r--spec/mspec/lib/mspec/runner/parallel.rb98
-rw-r--r--spec/mspec/lib/mspec/runner/shared.rb10
-rw-r--r--spec/mspec/lib/mspec/runner/tag.rb2
-rw-r--r--spec/mspec/lib/mspec/utils/format.rb24
-rw-r--r--spec/mspec/lib/mspec/utils/name_map.rb58
-rw-r--r--spec/mspec/lib/mspec/utils/options.rb49
-rw-r--r--spec/mspec/lib/mspec/utils/script.rb53
-rw-r--r--spec/mspec/lib/mspec/utils/version.rb2
-rw-r--r--spec/mspec/lib/mspec/utils/warnings.rb65
-rw-r--r--spec/mspec/spec/commands/mkspec_spec.rb196
-rw-r--r--spec/mspec/spec/commands/mspec_ci_spec.rb72
-rw-r--r--spec/mspec/spec/commands/mspec_run_spec.rb74
-rw-r--r--spec/mspec/spec/commands/mspec_spec.rb119
-rw-r--r--spec/mspec/spec/commands/mspec_tag_spec.rb170
-rw-r--r--spec/mspec/spec/expectations/expectations_spec.rb18
-rw-r--r--spec/mspec/spec/expectations/should.rb73
-rw-r--r--spec/mspec/spec/expectations/should_spec.rb28
-rw-r--r--spec/mspec/spec/fixtures/chatty_spec.rb8
-rw-r--r--spec/mspec/spec/fixtures/config.mspec2
-rw-r--r--spec/mspec/spec/fixtures/die_spec.rb7
-rwxr-xr-xspec/mspec/spec/fixtures/my_ruby2
-rw-r--r--spec/mspec/spec/fixtures/should.rb75
-rw-r--r--spec/mspec/spec/guards/block_device_spec.rb26
-rw-r--r--spec/mspec/spec/guards/bug_spec.rb84
-rw-r--r--spec/mspec/spec/guards/conflict_spec.rb32
-rw-r--r--spec/mspec/spec/guards/endian_spec.rb34
-rw-r--r--spec/mspec/spec/guards/feature_spec.rb98
-rw-r--r--spec/mspec/spec/guards/guard_spec.rb222
-rw-r--r--spec/mspec/spec/guards/platform_spec.rb223
-rw-r--r--spec/mspec/spec/guards/quarantine_spec.rb20
-rw-r--r--spec/mspec/spec/guards/superuser_spec.rb22
-rw-r--r--spec/mspec/spec/guards/support_spec.rb28
-rw-r--r--spec/mspec/spec/guards/user_spec.rb10
-rw-r--r--spec/mspec/spec/guards/version_spec.rb90
-rw-r--r--spec/mspec/spec/helpers/argf_spec.rb16
-rw-r--r--spec/mspec/spec/helpers/argv_spec.rb10
-rw-r--r--spec/mspec/spec/helpers/datetime_spec.rb18
-rw-r--r--spec/mspec/spec/helpers/fixture_spec.rb8
-rw-r--r--spec/mspec/spec/helpers/flunk_spec.rb10
-rw-r--r--spec/mspec/spec/helpers/fs_spec.rb60
-rw-r--r--spec/mspec/spec/helpers/io_spec.rb94
-rw-r--r--spec/mspec/spec/helpers/mock_to_path_spec.rb14
-rw-r--r--spec/mspec/spec/helpers/numeric_spec.rb20
-rw-r--r--spec/mspec/spec/helpers/ruby_exe_spec.rb165
-rw-r--r--spec/mspec/spec/helpers/scratch_spec.rb10
-rw-r--r--spec/mspec/spec/helpers/suppress_warning_spec.rb4
-rw-r--r--spec/mspec/spec/helpers/tmp_spec.rb12
-rw-r--r--spec/mspec/spec/integration/interpreter_spec.rb8
-rw-r--r--spec/mspec/spec/integration/object_methods_spec.rb6
-rw-r--r--spec/mspec/spec/integration/run_spec.rb51
-rw-r--r--spec/mspec/spec/integration/tag_spec.rb22
-rw-r--r--spec/mspec/spec/matchers/base_spec.rb265
-rw-r--r--spec/mspec/spec/matchers/be_an_instance_of_spec.rb22
-rw-r--r--spec/mspec/spec/matchers/be_ancestor_of_spec.rb10
-rw-r--r--spec/mspec/spec/matchers/be_close_spec.rb26
-rw-r--r--spec/mspec/spec/matchers/be_computed_by_spec.rb14
-rw-r--r--spec/mspec/spec/matchers/be_empty_spec.rb10
-rw-r--r--spec/mspec/spec/matchers/be_false_spec.rb16
-rw-r--r--spec/mspec/spec/matchers/be_kind_of_spec.rb22
-rw-r--r--spec/mspec/spec/matchers/be_nan_spec.rb12
-rw-r--r--spec/mspec/spec/matchers/be_nil_spec.rb14
-rw-r--r--spec/mspec/spec/matchers/be_true_or_false_spec.rb8
-rw-r--r--spec/mspec/spec/matchers/be_true_spec.rb16
-rw-r--r--spec/mspec/spec/matchers/block_caller_spec.rb6
-rw-r--r--spec/mspec/spec/matchers/complain_spec.rb78
-rw-r--r--spec/mspec/spec/matchers/eql_spec.rb22
-rw-r--r--spec/mspec/spec/matchers/equal_element_spec.rb78
-rw-r--r--spec/mspec/spec/matchers/equal_spec.rb20
-rw-r--r--spec/mspec/spec/matchers/have_class_variable_spec.rb18
-rw-r--r--spec/mspec/spec/matchers/have_constant_spec.rb14
-rw-r--r--spec/mspec/spec/matchers/have_instance_method_spec.rb20
-rw-r--r--spec/mspec/spec/matchers/have_instance_variable_spec.rb18
-rw-r--r--spec/mspec/spec/matchers/have_method_spec.rb24
-rw-r--r--spec/mspec/spec/matchers/have_private_instance_method_spec.rb20
-rw-r--r--spec/mspec/spec/matchers/have_private_method_spec.rb16
-rw-r--r--spec/mspec/spec/matchers/have_protected_instance_method_spec.rb20
-rw-r--r--spec/mspec/spec/matchers/have_public_instance_method_spec.rb20
-rw-r--r--spec/mspec/spec/matchers/have_singleton_method_spec.rb16
-rw-r--r--spec/mspec/spec/matchers/include_any_of_spec.rb42
-rw-r--r--spec/mspec/spec/matchers/include_spec.rb22
-rw-r--r--spec/mspec/spec/matchers/infinity_spec.rb18
-rw-r--r--spec/mspec/spec/matchers/match_yaml_spec.rb22
-rw-r--r--spec/mspec/spec/matchers/output_spec.rb48
-rw-r--r--spec/mspec/spec/matchers/output_to_fd_spec.rb30
-rw-r--r--spec/mspec/spec/matchers/raise_error_spec.rb127
-rw-r--r--spec/mspec/spec/matchers/respond_to_spec.rb26
-rw-r--r--spec/mspec/spec/matchers/signed_zero_spec.rb18
-rw-r--r--spec/mspec/spec/mocks/mock_spec.rb265
-rw-r--r--spec/mspec/spec/mocks/proxy_spec.rb196
-rw-r--r--spec/mspec/spec/runner/actions/filter_spec.rb44
-rw-r--r--spec/mspec/spec/runner/actions/tag_spec.rb144
-rw-r--r--spec/mspec/spec/runner/actions/taglist_spec.rb70
-rw-r--r--spec/mspec/spec/runner/actions/tagpurge_spec.rb66
-rw-r--r--spec/mspec/spec/runner/actions/tally_spec.rb167
-rw-r--r--spec/mspec/spec/runner/actions/timer_spec.rb22
-rw-r--r--spec/mspec/spec/runner/context_spec.rb369
-rw-r--r--spec/mspec/spec/runner/example_spec.rb60
-rw-r--r--spec/mspec/spec/runner/exception_spec.rb50
-rw-r--r--spec/mspec/spec/runner/filters/match_spec.rb16
-rw-r--r--spec/mspec/spec/runner/filters/profile_spec.rb70
-rw-r--r--spec/mspec/spec/runner/filters/regexp_spec.rb22
-rw-r--r--spec/mspec/spec/runner/filters/tag_spec.rb48
-rw-r--r--spec/mspec/spec/runner/formatters/describe_spec.rb24
-rw-r--r--spec/mspec/spec/runner/formatters/dotted_spec.rb121
-rw-r--r--spec/mspec/spec/runner/formatters/file_spec.rb34
-rw-r--r--spec/mspec/spec/runner/formatters/html_spec.rb88
-rw-r--r--spec/mspec/spec/runner/formatters/junit_spec.rb100
-rw-r--r--spec/mspec/spec/runner/formatters/method_spec.rb69
-rw-r--r--spec/mspec/spec/runner/formatters/multi_spec.rb24
-rw-r--r--spec/mspec/spec/runner/formatters/specdoc_spec.rb30
-rw-r--r--spec/mspec/spec/runner/formatters/spinner_spec.rb32
-rw-r--r--spec/mspec/spec/runner/formatters/summary_spec.rb4
-rw-r--r--spec/mspec/spec/runner/formatters/unit_spec.rb33
-rw-r--r--spec/mspec/spec/runner/formatters/yaml_spec.rb79
-rw-r--r--spec/mspec/spec/runner/mspec_spec.rb300
-rw-r--r--spec/mspec/spec/runner/shared_spec.rb20
-rw-r--r--spec/mspec/spec/runner/tag_spec.rb96
-rw-r--r--spec/mspec/spec/spec_helper.rb21
-rw-r--r--spec/mspec/spec/utils/deprecate_spec.rb10
-rw-r--r--spec/mspec/spec/utils/name_map_spec.rb78
-rw-r--r--spec/mspec/spec/utils/options_spec.rb491
-rw-r--r--spec/mspec/spec/utils/script_spec.rb257
-rw-r--r--spec/mspec/spec/utils/version_spec.rb30
-rwxr-xr-xspec/mspec/tool/check_require_spec_helper.rb34
-rwxr-xr-xspec/mspec/tool/pull-latest-mspec-spec26
-rw-r--r--spec/mspec/tool/remove_old_guards.rb51
-rw-r--r--spec/mspec/tool/sync/sync-rubyspec.rb102
-rwxr-xr-xspec/mspec/tool/tag_from_output.rb63
-rwxr-xr-xspec/mspec/tool/wrap_with_guard.rb28
-rw-r--r--spec/ruby/.mspec.constants235
-rw-r--r--spec/ruby/.rubocop.yml133
-rw-r--r--spec/ruby/.rubocop_todo.yml134
-rw-r--r--spec/ruby/.travis.yml36
-rw-r--r--spec/ruby/CHANGES.before-2008-05-1017796
-rw-r--r--spec/ruby/CONTRIBUTING.md174
-rw-r--r--spec/ruby/README.md94
-rw-r--r--spec/ruby/appveyor.yml30
-rw-r--r--spec/ruby/command_line/backtrace_limit_spec.rb48
-rw-r--r--spec/ruby/command_line/dash_a_spec.rb2
-rw-r--r--spec/ruby/command_line/dash_c_spec.rb2
-rw-r--r--spec/ruby/command_line/dash_d_spec.rb2
-rw-r--r--spec/ruby/command_line/dash_e_spec.rb4
-rw-r--r--spec/ruby/command_line/dash_encoding_spec.rb36
-rw-r--r--spec/ruby/command_line/dash_external_encoding_spec.rb15
-rw-r--r--spec/ruby/command_line/dash_internal_encoding_spec.rb15
-rw-r--r--spec/ruby/command_line/dash_l_spec.rb31
-rw-r--r--spec/ruby/command_line/dash_n_spec.rb2
-rw-r--r--spec/ruby/command_line/dash_p_spec.rb2
-rw-r--r--spec/ruby/command_line/dash_r_spec.rb21
-rw-r--r--spec/ruby/command_line/dash_s_spec.rb2
-rw-r--r--spec/ruby/command_line/dash_upper_c_spec.rb20
-rw-r--r--spec/ruby/command_line/dash_upper_e_spec.rb32
-rw-r--r--spec/ruby/command_line/dash_upper_f_spec.rb2
-rw-r--r--spec/ruby/command_line/dash_upper_i_spec.rb42
-rw-r--r--spec/ruby/command_line/dash_upper_k_spec.rb76
-rw-r--r--spec/ruby/command_line/dash_upper_s_spec.rb4
-rw-r--r--spec/ruby/command_line/dash_upper_u_spec.rb8
-rw-r--r--spec/ruby/command_line/dash_upper_w_spec.rb28
-rw-r--r--spec/ruby/command_line/dash_upper_x_spec.rb6
-rw-r--r--spec/ruby/command_line/dash_v_spec.rb9
-rw-r--r--spec/ruby/command_line/dash_w_spec.rb8
-rw-r--r--spec/ruby/command_line/dash_x_spec.rb6
-rw-r--r--spec/ruby/command_line/error_message_spec.rb10
-rw-r--r--spec/ruby/command_line/feature_spec.rb71
-rw-r--r--spec/ruby/command_line/fixtures/backtrace.rb35
-rw-r--r--spec/ruby/command_line/fixtures/bin/hybrid_launcher.sh2
-rw-r--r--[-rwxr-xr-x]spec/ruby/command_line/fixtures/bin/launcher.rb0
-rw-r--r--spec/ruby/command_line/fixtures/dash_upper_c_script.rb (renamed from spec/ruby/command_line/fixtures/change_directory_script.rb)0
-rw-r--r--spec/ruby/command_line/fixtures/freeze_flag_required_diff_enc.rbbin90 -> 121 bytes-rw-r--r--spec/ruby/command_line/fixtures/freeze_flag_two_literals.rb2
-rw-r--r--spec/ruby/command_line/fixtures/test_file.rb2
-rw-r--r--spec/ruby/command_line/frozen_strings_spec.rb41
-rw-r--r--spec/ruby/command_line/rubylib_spec.rb69
-rw-r--r--spec/ruby/command_line/rubyopt_spec.rb80
-rw-r--r--spec/ruby/command_line/shared/change_directory.rb21
-rw-r--r--spec/ruby/command_line/shared/verbose.rb2
-rw-r--r--spec/ruby/command_line/syntax_error_spec.rb6
-rw-r--r--spec/ruby/core/argf/argf_spec.rb2
-rw-r--r--spec/ruby/core/argf/argv_spec.rb2
-rw-r--r--spec/ruby/core/argf/binmode_spec.rb12
-rw-r--r--spec/ruby/core/argf/bytes_spec.rb18
-rw-r--r--spec/ruby/core/argf/chars_spec.rb18
-rw-r--r--spec/ruby/core/argf/close_spec.rb21
-rw-r--r--spec/ruby/core/argf/closed_spec.rb2
-rw-r--r--spec/ruby/core/argf/codepoints_spec.rb18
-rw-r--r--spec/ruby/core/argf/each_byte_spec.rb4
-rw-r--r--spec/ruby/core/argf/each_char_spec.rb4
-rw-r--r--spec/ruby/core/argf/each_codepoint_spec.rb4
-rw-r--r--spec/ruby/core/argf/each_line_spec.rb4
-rw-r--r--spec/ruby/core/argf/each_spec.rb4
-rw-r--r--spec/ruby/core/argf/eof_spec.rb4
-rw-r--r--spec/ruby/core/argf/file_spec.rb2
-rw-r--r--spec/ruby/core/argf/filename_spec.rb4
-rw-r--r--spec/ruby/core/argf/fileno_spec.rb4
-rw-r--r--spec/ruby/core/argf/getc_spec.rb4
-rw-r--r--spec/ruby/core/argf/gets_spec.rb34
-rw-r--r--spec/ruby/core/argf/lineno_spec.rb2
-rw-r--r--spec/ruby/core/argf/lines_spec.rb18
-rw-r--r--spec/ruby/core/argf/path_spec.rb4
-rw-r--r--spec/ruby/core/argf/pos_spec.rb4
-rw-r--r--spec/ruby/core/argf/read_nonblock_spec.rb14
-rw-r--r--spec/ruby/core/argf/read_spec.rb34
-rw-r--r--spec/ruby/core/argf/readchar_spec.rb6
-rw-r--r--spec/ruby/core/argf/readline_spec.rb6
-rw-r--r--spec/ruby/core/argf/readlines_spec.rb4
-rw-r--r--spec/ruby/core/argf/readpartial_spec.rb22
-rw-r--r--spec/ruby/core/argf/rewind_spec.rb4
-rw-r--r--spec/ruby/core/argf/seek_spec.rb4
-rw-r--r--spec/ruby/core/argf/set_encoding_spec.rb2
-rw-r--r--spec/ruby/core/argf/shared/eof.rb2
-rw-r--r--spec/ruby/core/argf/shared/fileno.rb4
-rw-r--r--spec/ruby/core/argf/shared/pos.rb2
-rw-r--r--spec/ruby/core/argf/skip_spec.rb4
-rw-r--r--spec/ruby/core/argf/tell_spec.rb4
-rw-r--r--spec/ruby/core/argf/to_a_spec.rb4
-rw-r--r--spec/ruby/core/argf/to_i_spec.rb4
-rw-r--r--spec/ruby/core/argf/to_io_spec.rb2
-rw-r--r--spec/ruby/core/argf/to_s_spec.rb2
-rw-r--r--spec/ruby/core/array/all_spec.rb13
-rw-r--r--spec/ruby/core/array/allocate_spec.rb4
-rw-r--r--spec/ruby/core/array/any_spec.rb20
-rw-r--r--spec/ruby/core/array/append_spec.rb16
-rw-r--r--spec/ruby/core/array/array_spec.rb2
-rw-r--r--spec/ruby/core/array/assoc_spec.rb4
-rw-r--r--spec/ruby/core/array/at_spec.rb8
-rw-r--r--spec/ruby/core/array/bsearch_index_spec.rb124
-rw-r--r--spec/ruby/core/array/bsearch_spec.rb8
-rw-r--r--spec/ruby/core/array/clear_spec.rb31
-rw-r--r--spec/ruby/core/array/clone_spec.rb10
-rw-r--r--spec/ruby/core/array/collect_spec.rb10
-rw-r--r--spec/ruby/core/array/combination_spec.rb4
-rw-r--r--spec/ruby/core/array/compact_spec.rb36
-rw-r--r--spec/ruby/core/array/comparison_spec.rb4
-rw-r--r--spec/ruby/core/array/concat_spec.rb98
-rw-r--r--spec/ruby/core/array/constructor_spec.rb4
-rw-r--r--spec/ruby/core/array/count_spec.rb13
-rw-r--r--spec/ruby/core/array/cycle_spec.rb20
-rw-r--r--spec/ruby/core/array/deconstruct_spec.rb9
-rw-r--r--spec/ruby/core/array/delete_at_spec.rb28
-rw-r--r--spec/ruby/core/array/delete_if_spec.rb54
-rw-r--r--spec/ruby/core/array/delete_spec.rb28
-rw-r--r--spec/ruby/core/array/difference_spec.rb22
-rw-r--r--spec/ruby/core/array/dig_spec.rb100
-rw-r--r--spec/ruby/core/array/drop_spec.rb35
-rw-r--r--spec/ruby/core/array/drop_while_spec.rb19
-rw-r--r--spec/ruby/core/array/dup_spec.rb6
-rw-r--r--spec/ruby/core/array/each_index_spec.rb26
-rw-r--r--spec/ruby/core/array/each_spec.rb64
-rw-r--r--spec/ruby/core/array/element_reference_spec.rb8
-rw-r--r--spec/ruby/core/array/element_set_spec.rb190
-rw-r--r--spec/ruby/core/array/empty_spec.rb10
-rw-r--r--spec/ruby/core/array/eql_spec.rb12
-rw-r--r--spec/ruby/core/array/equal_value_spec.rb12
-rw-r--r--spec/ruby/core/array/fetch_spec.rb14
-rw-r--r--spec/ruby/core/array/fill_spec.rb143
-rw-r--r--spec/ruby/core/array/filter_spec.rb14
-rw-r--r--spec/ruby/core/array/find_index_spec.rb4
-rw-r--r--spec/ruby/core/array/first_spec.rb14
-rw-r--r--spec/ruby/core/array/fixtures/classes.rb95
-rw-r--r--spec/ruby/core/array/fixtures/encoded_strings.rb16
-rw-r--r--spec/ruby/core/array/flatten_spec.rb88
-rw-r--r--spec/ruby/core/array/frozen_spec.rb10
-rw-r--r--spec/ruby/core/array/hash_spec.rb10
-rw-r--r--spec/ruby/core/array/include_spec.rb4
-rw-r--r--spec/ruby/core/array/index_spec.rb6
-rw-r--r--spec/ruby/core/array/initialize_spec.rb36
-rw-r--r--spec/ruby/core/array/insert_spec.rb18
-rw-r--r--spec/ruby/core/array/inspect_spec.rb6
-rw-r--r--spec/ruby/core/array/intersect_spec.rb66
-rw-r--r--spec/ruby/core/array/intersection_spec.rb90
-rw-r--r--spec/ruby/core/array/join_spec.rb18
-rw-r--r--spec/ruby/core/array/keep_if_spec.rb3
-rw-r--r--spec/ruby/core/array/last_spec.rb14
-rw-r--r--spec/ruby/core/array/length_spec.rb8
-rw-r--r--spec/ruby/core/array/map_spec.rb10
-rw-r--r--spec/ruby/core/array/max_spec.rb14
-rw-r--r--spec/ruby/core/array/min_spec.rb14
-rw-r--r--spec/ruby/core/array/minmax_spec.rb14
-rw-r--r--spec/ruby/core/array/minus_spec.rb88
-rw-r--r--spec/ruby/core/array/multiply_spec.rb74
-rw-r--r--spec/ruby/core/array/new_spec.rb26
-rw-r--r--spec/ruby/core/array/none_spec.rb13
-rw-r--r--spec/ruby/core/array/one_spec.rb13
-rw-r--r--spec/ruby/core/array/pack/a_spec.rb24
-rw-r--r--spec/ruby/core/array/pack/at_spec.rb8
-rw-r--r--spec/ruby/core/array/pack/b_spec.rb28
-rw-r--r--spec/ruby/core/array/pack/buffer_spec.rb76
-rw-r--r--spec/ruby/core/array/pack/c_spec.rb26
-rw-r--r--spec/ruby/core/array/pack/comment_spec.rb6
-rw-r--r--spec/ruby/core/array/pack/d_spec.rb10
-rw-r--r--spec/ruby/core/array/pack/e_spec.rb10
-rw-r--r--spec/ruby/core/array/pack/empty_spec.rb2
-rw-r--r--spec/ruby/core/array/pack/f_spec.rb10
-rw-r--r--spec/ruby/core/array/pack/g_spec.rb10
-rw-r--r--spec/ruby/core/array/pack/h_spec.rb26
-rw-r--r--spec/ruby/core/array/pack/i_spec.rb10
-rw-r--r--spec/ruby/core/array/pack/j_spec.rb319
-rw-r--r--spec/ruby/core/array/pack/l_spec.rb26
-rw-r--r--spec/ruby/core/array/pack/m_spec.rb29
-rw-r--r--spec/ruby/core/array/pack/n_spec.rb10
-rw-r--r--spec/ruby/core/array/pack/p_spec.rb33
-rw-r--r--spec/ruby/core/array/pack/percent_spec.rb4
-rw-r--r--spec/ruby/core/array/pack/q_spec.rb10
-rw-r--r--spec/ruby/core/array/pack/s_spec.rb10
-rw-r--r--spec/ruby/core/array/pack/shared/basic.rb58
-rw-r--r--spec/ruby/core/array/pack/shared/encodings.rb4
-rw-r--r--spec/ruby/core/array/pack/shared/float.rb152
-rw-r--r--spec/ruby/core/array/pack/shared/integer.rb110
-rw-r--r--spec/ruby/core/array/pack/shared/numeric_basic.rb30
-rw-r--r--spec/ruby/core/array/pack/shared/string.rb46
-rw-r--r--spec/ruby/core/array/pack/shared/taint.rb2
-rw-r--r--spec/ruby/core/array/pack/shared/unicode.rb22
-rw-r--r--spec/ruby/core/array/pack/u_spec.rb30
-rw-r--r--spec/ruby/core/array/pack/v_spec.rb10
-rw-r--r--spec/ruby/core/array/pack/w_spec.rb32
-rw-r--r--spec/ruby/core/array/pack/x_spec.rb13
-rw-r--r--spec/ruby/core/array/pack/z_spec.rb22
-rw-r--r--spec/ruby/core/array/partition_spec.rb4
-rw-r--r--spec/ruby/core/array/permutation_spec.rb4
-rw-r--r--spec/ruby/core/array/plus_spec.rb39
-rw-r--r--spec/ruby/core/array/pop_spec.rb70
-rw-r--r--spec/ruby/core/array/prepend_spec.rb12
-rw-r--r--spec/ruby/core/array/product_spec.rb17
-rw-r--r--spec/ruby/core/array/push_spec.rb8
-rw-r--r--spec/ruby/core/array/rassoc_spec.rb6
-rw-r--r--spec/ruby/core/array/reject_spec.rb63
-rw-r--r--spec/ruby/core/array/repeated_combination_spec.rb4
-rw-r--r--spec/ruby/core/array/repeated_permutation_spec.rb2
-rw-r--r--spec/ruby/core/array/replace_spec.rb8
-rw-r--r--spec/ruby/core/array/reverse_each_spec.rb24
-rw-r--r--spec/ruby/core/array/reverse_spec.rb8
-rw-r--r--spec/ruby/core/array/rindex_spec.rb23
-rw-r--r--spec/ruby/core/array/rotate_spec.rb22
-rw-r--r--spec/ruby/core/array/sample_spec.rb71
-rw-r--r--spec/ruby/core/array/select_spec.rb28
-rw-r--r--spec/ruby/core/array/shared/clone.rb26
-rw-r--r--spec/ruby/core/array/shared/collect.rb83
-rw-r--r--spec/ruby/core/array/shared/delete_if.rb24
-rw-r--r--spec/ruby/core/array/shared/difference.rb78
-rw-r--r--spec/ruby/core/array/shared/index.rb4
-rw-r--r--spec/ruby/core/array/shared/inspect.rb49
-rw-r--r--spec/ruby/core/array/shared/intersection.rb85
-rw-r--r--spec/ruby/core/array/shared/iterable_and_tolerating_size_increasing.rb25
-rw-r--r--spec/ruby/core/array/shared/join.rb103
-rw-r--r--spec/ruby/core/array/shared/keep_if.rb49
-rw-r--r--spec/ruby/core/array/shared/push.rb6
-rw-r--r--spec/ruby/core/array/shared/replace.rb6
-rw-r--r--spec/ruby/core/array/shared/select.rb35
-rw-r--r--spec/ruby/core/array/shared/slice.rb482
-rw-r--r--spec/ruby/core/array/shared/union.rb79
-rw-r--r--spec/ruby/core/array/shared/unshift.rb26
-rw-r--r--spec/ruby/core/array/shift_spec.rb34
-rw-r--r--spec/ruby/core/array/shuffle_spec.rb36
-rw-r--r--spec/ruby/core/array/size_spec.rb8
-rw-r--r--spec/ruby/core/array/slice_spec.rb102
-rw-r--r--spec/ruby/core/array/sort_by_spec.rb47
-rw-r--r--spec/ruby/core/array/sort_spec.rb34
-rw-r--r--spec/ruby/core/array/sum_spec.rb106
-rw-r--r--spec/ruby/core/array/take_spec.rb17
-rw-r--r--spec/ruby/core/array/take_while_spec.rb21
-rw-r--r--spec/ruby/core/array/to_a_spec.rb4
-rw-r--r--spec/ruby/core/array/to_ary_spec.rb4
-rw-r--r--spec/ruby/core/array/to_h_spec.rb58
-rw-r--r--spec/ruby/core/array/to_s_spec.rb8
-rw-r--r--spec/ruby/core/array/transpose_spec.rb8
-rw-r--r--spec/ruby/core/array/try_convert_spec.rb8
-rw-r--r--spec/ruby/core/array/union_spec.rb85
-rw-r--r--spec/ruby/core/array/uniq_spec.rb74
-rw-r--r--spec/ruby/core/array/unshift_spec.rb8
-rw-r--r--spec/ruby/core/array/values_at_spec.rb15
-rw-r--r--spec/ruby/core/array/zip_spec.rb12
-rw-r--r--spec/ruby/core/basicobject/__id__spec.rb4
-rw-r--r--spec/ruby/core/basicobject/__send___spec.rb6
-rw-r--r--spec/ruby/core/basicobject/basicobject_spec.rb14
-rw-r--r--spec/ruby/core/basicobject/equal_spec.rb4
-rw-r--r--spec/ruby/core/basicobject/equal_value_spec.rb4
-rw-r--r--spec/ruby/core/basicobject/fixtures/classes.rb228
-rw-r--r--spec/ruby/core/basicobject/initialize_spec.rb4
-rw-r--r--spec/ruby/core/basicobject/instance_eval_spec.rb207
-rw-r--r--spec/ruby/core/basicobject/instance_exec_spec.rb26
-rw-r--r--spec/ruby/core/basicobject/method_missing_spec.rb3
-rw-r--r--spec/ruby/core/basicobject/not_equal_spec.rb2
-rw-r--r--spec/ruby/core/basicobject/not_spec.rb2
-rw-r--r--spec/ruby/core/basicobject/singleton_method_added_spec.rb63
-rw-r--r--spec/ruby/core/basicobject/singleton_method_removed_spec.rb2
-rw-r--r--spec/ruby/core/basicobject/singleton_method_undefined_spec.rb2
-rw-r--r--spec/ruby/core/bignum/abs_spec.rb7
-rw-r--r--spec/ruby/core/bignum/bignum_spec.rb31
-rw-r--r--spec/ruby/core/bignum/bit_and_spec.rb50
-rw-r--r--spec/ruby/core/bignum/bit_length_spec.rb33
-rw-r--r--spec/ruby/core/bignum/bit_or_spec.rb41
-rw-r--r--spec/ruby/core/bignum/bit_xor_spec.rb47
-rw-r--r--spec/ruby/core/bignum/case_compare_spec.rb6
-rw-r--r--spec/ruby/core/bignum/coerce_spec.rb65
-rw-r--r--spec/ruby/core/bignum/comparison_spec.rb162
-rw-r--r--spec/ruby/core/bignum/complement_spec.rb9
-rw-r--r--spec/ruby/core/bignum/div_spec.rb21
-rw-r--r--spec/ruby/core/bignum/divide_spec.rb18
-rw-r--r--spec/ruby/core/bignum/divmod_spec.rb81
-rw-r--r--spec/ruby/core/bignum/element_reference_spec.rb30
-rw-r--r--spec/ruby/core/bignum/eql_spec.rb22
-rw-r--r--spec/ruby/core/bignum/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/bignum/even_spec.rb19
-rw-r--r--spec/ruby/core/bignum/exponent_spec.rb29
-rw-r--r--spec/ruby/core/bignum/fdiv_spec.rb5
-rw-r--r--spec/ruby/core/bignum/gt_spec.rb20
-rw-r--r--spec/ruby/core/bignum/gte_spec.rb19
-rw-r--r--spec/ruby/core/bignum/hash_spec.rb12
-rw-r--r--spec/ruby/core/bignum/left_shift_spec.rb73
-rw-r--r--spec/ruby/core/bignum/lt_spec.rb22
-rw-r--r--spec/ruby/core/bignum/lte_spec.rb24
-rw-r--r--spec/ruby/core/bignum/magnitude_spec.rb6
-rw-r--r--spec/ruby/core/bignum/minus_spec.rb19
-rw-r--r--spec/ruby/core/bignum/modulo_spec.rb10
-rw-r--r--spec/ruby/core/bignum/multiply_spec.rb20
-rw-r--r--spec/ruby/core/bignum/odd_spec.rb19
-rw-r--r--spec/ruby/core/bignum/plus_spec.rb19
-rw-r--r--spec/ruby/core/bignum/remainder_spec.rb21
-rw-r--r--spec/ruby/core/bignum/right_shift_spec.rb99
-rw-r--r--spec/ruby/core/bignum/shared/abs.rb6
-rw-r--r--spec/ruby/core/bignum/shared/divide.rb27
-rw-r--r--spec/ruby/core/bignum/shared/equal.rb31
-rw-r--r--spec/ruby/core/bignum/shared/modulo.rb29
-rw-r--r--spec/ruby/core/bignum/size_spec.rb16
-rw-r--r--spec/ruby/core/bignum/to_f_spec.rb13
-rw-r--r--spec/ruby/core/bignum/to_s_spec.rb48
-rw-r--r--spec/ruby/core/bignum/uminus_spec.rb11
-rw-r--r--spec/ruby/core/binding/clone_spec.rb8
-rw-r--r--spec/ruby/core/binding/dup_spec.rb8
-rw-r--r--spec/ruby/core/binding/eval_spec.rb123
-rw-r--r--spec/ruby/core/binding/fixtures/classes.rb26
-rw-r--r--spec/ruby/core/binding/fixtures/irb.rb3
-rw-r--r--spec/ruby/core/binding/fixtures/irbrc1
-rw-r--r--spec/ruby/core/binding/fixtures/location.rb6
-rw-r--r--spec/ruby/core/binding/irb_spec.rb16
-rw-r--r--spec/ruby/core/binding/local_variable_defined_spec.rb4
-rw-r--r--spec/ruby/core/binding/local_variable_get_spec.rb16
-rw-r--r--spec/ruby/core/binding/local_variable_set_spec.rb12
-rw-r--r--spec/ruby/core/binding/local_variables_spec.rb2
-rw-r--r--spec/ruby/core/binding/location_spec.rb46
-rw-r--r--spec/ruby/core/binding/receiver_spec.rb4
-rw-r--r--spec/ruby/core/binding/source_location_spec.rb9
-rw-r--r--spec/ruby/core/builtin_constants/builtin_constants_spec.rb10
-rw-r--r--spec/ruby/core/class/allocate_spec.rb8
-rw-r--r--spec/ruby/core/class/attached_object_spec.rb31
-rw-r--r--spec/ruby/core/class/dup_spec.rb4
-rw-r--r--spec/ruby/core/class/inherited_spec.rb9
-rw-r--r--spec/ruby/core/class/initialize_spec.rb12
-rw-r--r--spec/ruby/core/class/new_spec.rb21
-rw-r--r--spec/ruby/core/class/subclasses_spec.rb60
-rw-r--r--spec/ruby/core/class/superclass_spec.rb6
-rw-r--r--spec/ruby/core/class/to_s_spec.rb23
-rw-r--r--spec/ruby/core/comparable/between_spec.rb4
-rw-r--r--spec/ruby/core/comparable/clamp_spec.rb124
-rw-r--r--spec/ruby/core/comparable/equal_value_spec.rb43
-rw-r--r--spec/ruby/core/comparable/gt_spec.rb6
-rw-r--r--spec/ruby/core/comparable/gte_spec.rb6
-rw-r--r--spec/ruby/core/comparable/lt_spec.rb12
-rw-r--r--spec/ruby/core/comparable/lte_spec.rb6
-rw-r--r--spec/ruby/core/complex/abs2_spec.rb8
-rw-r--r--spec/ruby/core/complex/abs_spec.rb5
-rw-r--r--spec/ruby/core/complex/angle_spec.rb7
-rw-r--r--spec/ruby/core/complex/arg_spec.rb7
-rw-r--r--spec/ruby/core/complex/coerce_spec.rb69
-rw-r--r--spec/ruby/core/complex/comparison_spec.rb25
-rw-r--r--spec/ruby/core/complex/conj_spec.rb6
-rw-r--r--spec/ruby/core/complex/conjugate_spec.rb6
-rw-r--r--spec/ruby/core/complex/constants_spec.rb6
-rw-r--r--spec/ruby/core/complex/denominator_spec.rb12
-rw-r--r--spec/ruby/core/complex/divide_spec.rb3
-rw-r--r--spec/ruby/core/complex/eql_spec.rb2
-rw-r--r--spec/ruby/core/complex/equal_value_spec.rb92
-rw-r--r--spec/ruby/core/complex/exponent_spec.rb60
-rw-r--r--spec/ruby/core/complex/fdiv_spec.rb20
-rw-r--r--spec/ruby/core/complex/finite_spec.rb52
-rw-r--r--spec/ruby/core/complex/hash_spec.rb16
-rw-r--r--spec/ruby/core/complex/imag_spec.rb5
-rw-r--r--spec/ruby/core/complex/imaginary_spec.rb3
-rw-r--r--spec/ruby/core/complex/infinite_spec.rb50
-rw-r--r--spec/ruby/core/complex/inspect_spec.rb34
-rw-r--r--spec/ruby/core/complex/integer_spec.rb2
-rw-r--r--spec/ruby/core/complex/magnitude_spec.rb5
-rw-r--r--spec/ruby/core/complex/marshal_dump_spec.rb2
-rw-r--r--spec/ruby/core/complex/minus_spec.rb44
-rw-r--r--spec/ruby/core/complex/multiply_spec.rb48
-rw-r--r--spec/ruby/core/complex/negative_spec.rb4
-rw-r--r--spec/ruby/core/complex/numerator_spec.rb18
-rw-r--r--spec/ruby/core/complex/phase_spec.rb4
-rw-r--r--spec/ruby/core/complex/plus_spec.rb44
-rw-r--r--spec/ruby/core/complex/polar_spec.rb39
-rw-r--r--spec/ruby/core/complex/positive_spec.rb4
-rw-r--r--spec/ruby/core/complex/quo_spec.rb3
-rw-r--r--spec/ruby/core/complex/rationalize_spec.rb10
-rw-r--r--spec/ruby/core/complex/real_spec.rb9
-rw-r--r--spec/ruby/core/complex/rect_spec.rb7
-rw-r--r--spec/ruby/core/complex/rectangular_spec.rb7
-rw-r--r--spec/ruby/core/complex/shared/abs.rb10
-rw-r--r--spec/ruby/core/complex/shared/divide.rb82
-rw-r--r--spec/ruby/core/complex/shared/image.rb8
-rw-r--r--spec/ruby/core/complex/shared/rect.rb94
-rw-r--r--spec/ruby/core/complex/to_c_spec.rb12
-rw-r--r--spec/ruby/core/complex/to_f_spec.rb8
-rw-r--r--spec/ruby/core/complex/to_i_spec.rb8
-rw-r--r--spec/ruby/core/complex/to_r_spec.rb8
-rw-r--r--spec/ruby/core/complex/to_s_spec.rb53
-rw-r--r--spec/ruby/core/complex/uminus_spec.rb2
-rw-r--r--spec/ruby/core/conditionvariable/broadcast_spec.rb40
-rw-r--r--spec/ruby/core/conditionvariable/marshal_dump_spec.rb9
-rw-r--r--spec/ruby/core/conditionvariable/signal_spec.rb77
-rw-r--r--spec/ruby/core/conditionvariable/wait_spec.rb175
-rw-r--r--spec/ruby/core/data/constants_spec.rb35
-rw-r--r--spec/ruby/core/data/define_spec.rb36
-rw-r--r--spec/ruby/core/data/fixtures/classes.rb5
-rw-r--r--spec/ruby/core/data/initialize_spec.rb58
-rw-r--r--spec/ruby/core/dir/chdir_spec.rb14
-rw-r--r--spec/ruby/core/dir/children_spec.rb168
-rw-r--r--spec/ruby/core/dir/chroot_spec.rb14
-rw-r--r--spec/ruby/core/dir/close_spec.rb24
-rw-r--r--spec/ruby/core/dir/delete_spec.rb6
-rw-r--r--spec/ruby/core/dir/dir_spec.rb2
-rw-r--r--spec/ruby/core/dir/each_child_spec.rb125
-rw-r--r--spec/ruby/core/dir/each_spec.rb6
-rw-r--r--spec/ruby/core/dir/element_reference_spec.rb6
-rw-r--r--spec/ruby/core/dir/empty_spec.rb48
-rw-r--r--spec/ruby/core/dir/entries_spec.rb18
-rw-r--r--spec/ruby/core/dir/exist_spec.rb8
-rw-r--r--spec/ruby/core/dir/exists_spec.rb15
-rw-r--r--spec/ruby/core/dir/fchdir_spec.rb78
-rw-r--r--spec/ruby/core/dir/fileno_spec.rb8
-rw-r--r--spec/ruby/core/dir/fixtures/common.rb37
-rw-r--r--spec/ruby/core/dir/foreach_spec.rb18
-rw-r--r--spec/ruby/core/dir/getwd_spec.rb6
-rw-r--r--spec/ruby/core/dir/glob_spec.rb109
-rw-r--r--spec/ruby/core/dir/home_spec.rb94
-rw-r--r--spec/ruby/core/dir/initialize_spec.rb4
-rw-r--r--spec/ruby/core/dir/inspect_spec.rb4
-rw-r--r--spec/ruby/core/dir/mkdir_spec.rb86
-rw-r--r--spec/ruby/core/dir/open_spec.rb6
-rw-r--r--spec/ruby/core/dir/path_spec.rb8
-rw-r--r--spec/ruby/core/dir/pos_spec.rb8
-rw-r--r--spec/ruby/core/dir/pwd_spec.rb6
-rw-r--r--spec/ruby/core/dir/read_spec.rb39
-rw-r--r--spec/ruby/core/dir/rewind_spec.rb6
-rw-r--r--spec/ruby/core/dir/rmdir_spec.rb6
-rw-r--r--spec/ruby/core/dir/seek_spec.rb6
-rw-r--r--spec/ruby/core/dir/shared/chroot.rb19
-rw-r--r--spec/ruby/core/dir/shared/closed.rb2
-rw-r--r--spec/ruby/core/dir/shared/delete.rb24
-rw-r--r--spec/ruby/core/dir/shared/exist.rb2
-rw-r--r--spec/ruby/core/dir/shared/glob.rb192
-rw-r--r--spec/ruby/core/dir/shared/open.rb20
-rw-r--r--spec/ruby/core/dir/shared/path.rb22
-rw-r--r--spec/ruby/core/dir/shared/pwd.rb20
-rw-r--r--spec/ruby/core/dir/tell_spec.rb8
-rw-r--r--spec/ruby/core/dir/to_path_spec.rb8
-rw-r--r--spec/ruby/core/dir/unlink_spec.rb6
-rw-r--r--spec/ruby/core/encoding/_dump_spec.rb2
-rw-r--r--spec/ruby/core/encoding/_load_spec.rb2
-rw-r--r--spec/ruby/core/encoding/aliases_spec.rb62
-rw-r--r--spec/ruby/core/encoding/ascii_compatible_spec.rb16
-rw-r--r--spec/ruby/core/encoding/compatible_spec.rb574
-rw-r--r--spec/ruby/core/encoding/converter/asciicompat_encoding_spec.rb60
-rw-r--r--spec/ruby/core/encoding/converter/constants_spec.rb184
-rw-r--r--spec/ruby/core/encoding/converter/convert_spec.rb72
-rw-r--r--spec/ruby/core/encoding/converter/convpath_spec.rb77
-rw-r--r--spec/ruby/core/encoding/converter/destination_encoding_spec.rb16
-rw-r--r--spec/ruby/core/encoding/converter/finish_spec.rb56
-rw-r--r--spec/ruby/core/encoding/converter/insert_output_spec.rb2
-rw-r--r--spec/ruby/core/encoding/converter/inspect_spec.rb2
-rw-r--r--spec/ruby/core/encoding/converter/last_error_spec.rb150
-rw-r--r--spec/ruby/core/encoding/converter/new_spec.rb200
-rw-r--r--spec/ruby/core/encoding/converter/primitive_convert_spec.rb418
-rw-r--r--spec/ruby/core/encoding/converter/primitive_errinfo_spec.rb112
-rw-r--r--spec/ruby/core/encoding/converter/putback_spec.rb99
-rw-r--r--spec/ruby/core/encoding/converter/replacement_spec.rb118
-rw-r--r--spec/ruby/core/encoding/converter/search_convpath_spec.rb89
-rw-r--r--spec/ruby/core/encoding/converter/source_encoding_spec.rb16
-rw-r--r--spec/ruby/core/encoding/default_external_spec.rb109
-rw-r--r--spec/ruby/core/encoding/default_internal_spec.rb141
-rw-r--r--spec/ruby/core/encoding/dummy_spec.rb22
-rw-r--r--spec/ruby/core/encoding/find_spec.rb120
-rw-r--r--spec/ruby/core/encoding/inspect_spec.rb26
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/destination_encoding_name_spec.rb29
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/destination_encoding_spec.rb29
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/error_bytes_spec.rb45
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/incomplete_input_spec.rb43
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/readagain_bytes_spec.rb45
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/source_encoding_name_spec.rb47
-rw-r--r--spec/ruby/core/encoding/invalid_byte_sequence_error/source_encoding_spec.rb55
-rw-r--r--spec/ruby/core/encoding/list_spec.rb66
-rw-r--r--spec/ruby/core/encoding/locale_charmap_spec.rb69
-rw-r--r--spec/ruby/core/encoding/name_list_spec.rb32
-rw-r--r--spec/ruby/core/encoding/name_spec.rb9
-rw-r--r--spec/ruby/core/encoding/names_spec.rb50
-rw-r--r--spec/ruby/core/encoding/replicate_spec.rb41
-rw-r--r--spec/ruby/core/encoding/shared/name.rb2
-rw-r--r--spec/ruby/core/encoding/to_s_spec.rb9
-rw-r--r--spec/ruby/core/encoding/undefined_conversion_error/destination_encoding_name_spec.rb23
-rw-r--r--spec/ruby/core/encoding/undefined_conversion_error/destination_encoding_spec.rb23
-rw-r--r--spec/ruby/core/encoding/undefined_conversion_error/error_char_spec.rb41
-rw-r--r--spec/ruby/core/encoding/undefined_conversion_error/source_encoding_name_spec.rb47
-rw-r--r--spec/ruby/core/encoding/undefined_conversion_error/source_encoding_spec.rb49
-rw-r--r--spec/ruby/core/enumerable/all_spec.rb131
-rw-r--r--spec/ruby/core/enumerable/any_spec.rb209
-rw-r--r--spec/ruby/core/enumerable/chain_spec.rb23
-rw-r--r--spec/ruby/core/enumerable/chunk_spec.rb69
-rw-r--r--spec/ruby/core/enumerable/chunk_while_spec.rb64
-rw-r--r--spec/ruby/core/enumerable/collect_concat_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/collect_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/compact_spec.rb11
-rw-r--r--spec/ruby/core/enumerable/count_spec.rb4
-rw-r--r--spec/ruby/core/enumerable/cycle_spec.rb10
-rw-r--r--spec/ruby/core/enumerable/detect_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/drop_spec.rb14
-rw-r--r--spec/ruby/core/enumerable/drop_while_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/each_cons_spec.rb32
-rw-r--r--spec/ruby/core/enumerable/each_entry_spec.rb10
-rw-r--r--spec/ruby/core/enumerable/each_slice_spec.rb32
-rw-r--r--spec/ruby/core/enumerable/each_with_index_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/each_with_object_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/entries_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/filter_map_spec.rb24
-rw-r--r--spec/ruby/core/enumerable/filter_spec.rb7
-rw-r--r--spec/ruby/core/enumerable/find_all_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/find_index_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/find_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/first_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/fixtures/classes.rb20
-rw-r--r--spec/ruby/core/enumerable/flat_map_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/grep_spec.rb54
-rw-r--r--spec/ruby/core/enumerable/grep_v_spec.rb110
-rw-r--r--spec/ruby/core/enumerable/group_by_spec.rb14
-rw-r--r--spec/ruby/core/enumerable/include_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/inject_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/lazy_spec.rb4
-rw-r--r--spec/ruby/core/enumerable/map_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/max_by_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/max_spec.rb12
-rw-r--r--spec/ruby/core/enumerable/member_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/min_by_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/min_spec.rb12
-rw-r--r--spec/ruby/core/enumerable/minmax_by_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/minmax_spec.rb38
-rw-r--r--spec/ruby/core/enumerable/none_spec.rb181
-rw-r--r--spec/ruby/core/enumerable/one_spec.rb146
-rw-r--r--spec/ruby/core/enumerable/partition_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/reduce_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/reject_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/reverse_each_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/select_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/shared/collect.rb77
-rw-r--r--spec/ruby/core/enumerable/shared/collect_concat.rb4
-rw-r--r--spec/ruby/core/enumerable/shared/entries.rb8
-rw-r--r--spec/ruby/core/enumerable/shared/enumerable_enumeratorized.rb2
-rw-r--r--spec/ruby/core/enumerable/shared/find.rb16
-rw-r--r--spec/ruby/core/enumerable/shared/find_all.rb2
-rw-r--r--spec/ruby/core/enumerable/shared/inject.rb50
-rw-r--r--spec/ruby/core/enumerable/shared/take.rb8
-rw-r--r--spec/ruby/core/enumerable/slice_after_spec.rb10
-rw-r--r--spec/ruby/core/enumerable/slice_before_spec.rb41
-rw-r--r--spec/ruby/core/enumerable/slice_when_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/sort_by_spec.rb13
-rw-r--r--spec/ruby/core/enumerable/sort_spec.rb12
-rw-r--r--spec/ruby/core/enumerable/sum_spec.rb60
-rw-r--r--spec/ruby/core/enumerable/take_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/take_while_spec.rb6
-rw-r--r--spec/ruby/core/enumerable/tally_spec.rb93
-rw-r--r--spec/ruby/core/enumerable/to_a_spec.rb8
-rw-r--r--spec/ruby/core/enumerable/to_h_spec.rb50
-rw-r--r--spec/ruby/core/enumerable/uniq_spec.rb124
-rw-r--r--spec/ruby/core/enumerable/zip_spec.rb24
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/begin_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/each_spec.rb17
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/end_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/eq_spec.rb18
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/exclude_end_spec.rb17
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/first_spec.rb9
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/hash_spec.rb20
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/inspect_spec.rb20
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/last_spec.rb9
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/new_spec.rb17
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/size_spec.rb17
-rw-r--r--spec/ruby/core/enumerator/arithmetic_sequence/step_spec.rb11
-rw-r--r--spec/ruby/core/enumerator/chain/each_spec.rb15
-rw-r--r--spec/ruby/core/enumerator/chain/initialize_spec.rb31
-rw-r--r--spec/ruby/core/enumerator/chain/inspect_spec.rb18
-rw-r--r--spec/ruby/core/enumerator/chain/rewind_spec.rb51
-rw-r--r--spec/ruby/core/enumerator/chain/size_spec.rb22
-rw-r--r--spec/ruby/core/enumerator/each_spec.rb88
-rw-r--r--spec/ruby/core/enumerator/each_with_index_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/each_with_object_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/enum_for_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/enumerator_spec.rb2
-rw-r--r--spec/ruby/core/enumerator/feed_spec.rb8
-rw-r--r--spec/ruby/core/enumerator/first_spec.rb2
-rw-r--r--spec/ruby/core/enumerator/generator/each_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/generator/initialize_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/initialize_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/inject_spec.rb15
-rw-r--r--spec/ruby/core/enumerator/inspect_spec.rb7
-rw-r--r--spec/ruby/core/enumerator/lazy/chunk_spec.rb67
-rw-r--r--spec/ruby/core/enumerator/lazy/chunk_while_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/lazy/collect_concat_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/lazy/collect_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/lazy/compact_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/lazy/drop_spec.rb10
-rw-r--r--spec/ruby/core/enumerator/lazy/drop_while_spec.rb12
-rw-r--r--spec/ruby/core/enumerator/lazy/eager_spec.rb27
-rw-r--r--spec/ruby/core/enumerator/lazy/enum_for_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/lazy/filter_map_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/lazy/filter_spec.rb6
-rw-r--r--spec/ruby/core/enumerator/lazy/find_all_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/lazy/flat_map_spec.rb12
-rw-r--r--spec/ruby/core/enumerator/lazy/force_spec.rb10
-rw-r--r--spec/ruby/core/enumerator/lazy/grep_spec.rb43
-rw-r--r--spec/ruby/core/enumerator/lazy/grep_v_spec.rb161
-rw-r--r--spec/ruby/core/enumerator/lazy/initialize_spec.rb10
-rw-r--r--spec/ruby/core/enumerator/lazy/lazy_spec.rb18
-rw-r--r--spec/ruby/core/enumerator/lazy/map_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/lazy/reject_spec.rb24
-rw-r--r--spec/ruby/core/enumerator/lazy/select_spec.rb43
-rw-r--r--spec/ruby/core/enumerator/lazy/shared/collect.rb10
-rw-r--r--spec/ruby/core/enumerator/lazy/shared/collect_concat.rb12
-rw-r--r--spec/ruby/core/enumerator/lazy/shared/select.rb12
-rw-r--r--spec/ruby/core/enumerator/lazy/shared/to_enum.rb9
-rw-r--r--spec/ruby/core/enumerator/lazy/slice_after_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/lazy/slice_before_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/lazy/slice_when_spec.rb14
-rw-r--r--spec/ruby/core/enumerator/lazy/take_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/lazy/take_while_spec.rb6
-rw-r--r--spec/ruby/core/enumerator/lazy/to_enum_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/lazy/uniq_spec.rb108
-rw-r--r--spec/ruby/core/enumerator/lazy/with_index_spec.rb36
-rw-r--r--spec/ruby/core/enumerator/lazy/zip_spec.rb18
-rw-r--r--spec/ruby/core/enumerator/new_spec.rb119
-rw-r--r--spec/ruby/core/enumerator/next_spec.rb38
-rw-r--r--spec/ruby/core/enumerator/next_values_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/peek_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/peek_values_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/plus_spec.rb33
-rw-r--r--spec/ruby/core/enumerator/produce_spec.rb34
-rw-r--r--spec/ruby/core/enumerator/rewind_spec.rb42
-rw-r--r--spec/ruby/core/enumerator/size_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/to_enum_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/with_index_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/with_object_spec.rb4
-rw-r--r--spec/ruby/core/enumerator/yielder/append_spec.rb18
-rw-r--r--spec/ruby/core/enumerator/yielder/initialize_spec.rb2
-rw-r--r--spec/ruby/core/enumerator/yielder/to_proc_spec.rb16
-rw-r--r--spec/ruby/core/enumerator/yielder/yield_spec.rb19
-rw-r--r--spec/ruby/core/env/assoc_spec.rb12
-rw-r--r--spec/ruby/core/env/clear_spec.rb4
-rw-r--r--spec/ruby/core/env/delete_if_spec.rb41
-rw-r--r--spec/ruby/core/env/delete_spec.rb29
-rw-r--r--spec/ruby/core/env/each_key_spec.rb10
-rw-r--r--spec/ruby/core/env/each_pair_spec.rb6
-rw-r--r--spec/ruby/core/env/each_spec.rb6
-rw-r--r--spec/ruby/core/env/each_value_spec.rb12
-rw-r--r--spec/ruby/core/env/element_reference_spec.rb70
-rw-r--r--spec/ruby/core/env/element_set_spec.rb6
-rw-r--r--spec/ruby/core/env/empty_spec.rb8
-rw-r--r--spec/ruby/core/env/except_spec.rb36
-rw-r--r--spec/ruby/core/env/fetch_spec.rb48
-rw-r--r--spec/ruby/core/env/filter_spec.rb13
-rw-r--r--spec/ruby/core/env/fixtures/common.rb9
-rw-r--r--spec/ruby/core/env/has_key_spec.rb6
-rw-r--r--spec/ruby/core/env/has_value_spec.rb6
-rw-r--r--spec/ruby/core/env/include_spec.rb6
-rw-r--r--spec/ruby/core/env/index_spec.rb16
-rw-r--r--spec/ruby/core/env/indexes_spec.rb2
-rw-r--r--spec/ruby/core/env/indices_spec.rb2
-rw-r--r--spec/ruby/core/env/inspect_spec.rb2
-rw-r--r--spec/ruby/core/env/invert_spec.rb2
-rw-r--r--spec/ruby/core/env/keep_if_spec.rb35
-rw-r--r--spec/ruby/core/env/key_spec.rb10
-rw-r--r--spec/ruby/core/env/keys_spec.rb6
-rw-r--r--spec/ruby/core/env/length_spec.rb6
-rw-r--r--spec/ruby/core/env/member_spec.rb6
-rw-r--r--spec/ruby/core/env/merge_spec.rb6
-rw-r--r--spec/ruby/core/env/rassoc_spec.rb23
-rw-r--r--spec/ruby/core/env/rehash_spec.rb8
-rw-r--r--spec/ruby/core/env/reject_spec.rb38
-rw-r--r--spec/ruby/core/env/replace_spec.rb52
-rw-r--r--spec/ruby/core/env/select_spec.rb36
-rw-r--r--spec/ruby/core/env/shared/each.rb58
-rw-r--r--spec/ruby/core/env/shared/include.rb16
-rw-r--r--spec/ruby/core/env/shared/key.rb28
-rw-r--r--spec/ruby/core/env/shared/select.rb61
-rw-r--r--spec/ruby/core/env/shared/store.rb14
-rw-r--r--spec/ruby/core/env/shared/to_hash.rb19
-rw-r--r--spec/ruby/core/env/shared/update.rb106
-rw-r--r--spec/ruby/core/env/shared/value.rb15
-rw-r--r--spec/ruby/core/env/shift_spec.rb86
-rw-r--r--spec/ruby/core/env/size_spec.rb6
-rw-r--r--spec/ruby/core/env/slice_spec.rb27
-rw-r--r--spec/ruby/core/env/spec_helper.rb26
-rw-r--r--spec/ruby/core/env/store_spec.rb6
-rw-r--r--spec/ruby/core/env/to_a_spec.rb11
-rw-r--r--spec/ruby/core/env/to_h_spec.rb60
-rw-r--r--spec/ruby/core/env/to_hash_spec.rb6
-rw-r--r--spec/ruby/core/env/to_s_spec.rb2
-rw-r--r--spec/ruby/core/env/update_spec.rb25
-rw-r--r--spec/ruby/core/env/value_spec.rb6
-rw-r--r--spec/ruby/core/env/values_at_spec.rb33
-rw-r--r--spec/ruby/core/env/values_spec.rb13
-rw-r--r--spec/ruby/core/exception/args_spec.rb5
-rw-r--r--spec/ruby/core/exception/arguments_spec.rb11
-rw-r--r--spec/ruby/core/exception/backtrace_locations_spec.rb39
-rw-r--r--spec/ruby/core/exception/backtrace_spec.rb33
-rw-r--r--spec/ruby/core/exception/case_compare_spec.rb38
-rw-r--r--spec/ruby/core/exception/cause_spec.rb39
-rw-r--r--spec/ruby/core/exception/destination_encoding_name_spec.rb9
-rw-r--r--spec/ruby/core/exception/destination_encoding_spec.rb9
-rw-r--r--spec/ruby/core/exception/dup_spec.rb74
-rw-r--r--spec/ruby/core/exception/equal_value_spec.rb4
-rw-r--r--spec/ruby/core/exception/errno_spec.rb31
-rw-r--r--spec/ruby/core/exception/error_bytes_spec.rb5
-rw-r--r--spec/ruby/core/exception/error_char_spec.rb5
-rw-r--r--spec/ruby/core/exception/exception_spec.rb78
-rw-r--r--spec/ruby/core/exception/exit_value_spec.rb12
-rw-r--r--spec/ruby/core/exception/fixtures/common.rb33
-rw-r--r--spec/ruby/core/exception/fixtures/thread_fiber_ensure.rb22
-rw-r--r--spec/ruby/core/exception/fixtures/thread_fiber_ensure_non_root_fiber.rb25
-rw-r--r--spec/ruby/core/exception/frozen_error_spec.rb22
-rw-r--r--spec/ruby/core/exception/full_message_spec.rb106
-rw-r--r--spec/ruby/core/exception/hierarchy_spec.rb62
-rw-r--r--spec/ruby/core/exception/incomplete_input_spec.rb5
-rw-r--r--spec/ruby/core/exception/initialize_spec.rb1
-rw-r--r--spec/ruby/core/exception/inspect_spec.rb8
-rw-r--r--spec/ruby/core/exception/interrupt_spec.rb37
-rw-r--r--spec/ruby/core/exception/io_error_spec.rb8
-rw-r--r--spec/ruby/core/exception/key_error_spec.rb19
-rw-r--r--spec/ruby/core/exception/load_error_spec.rb2
-rw-r--r--spec/ruby/core/exception/message_spec.rb4
-rw-r--r--spec/ruby/core/exception/name_error_spec.rb29
-rw-r--r--spec/ruby/core/exception/name_spec.rb44
-rw-r--r--spec/ruby/core/exception/new_spec.rb8
-rw-r--r--spec/ruby/core/exception/no_method_error_spec.rb110
-rw-r--r--spec/ruby/core/exception/range_error_spec.rb7
-rw-r--r--spec/ruby/core/exception/readagain_bytes_spec.rb5
-rw-r--r--spec/ruby/core/exception/reason_spec.rb12
-rw-r--r--spec/ruby/core/exception/receiver_spec.rb116
-rw-r--r--spec/ruby/core/exception/result_spec.rb16
-rw-r--r--spec/ruby/core/exception/script_error_spec.rb15
-rw-r--r--spec/ruby/core/exception/set_backtrace_spec.rb12
-rw-r--r--spec/ruby/core/exception/signal_exception_spec.rb61
-rw-r--r--spec/ruby/core/exception/signm_spec.rb8
-rw-r--r--spec/ruby/core/exception/signo_spec.rb8
-rw-r--r--spec/ruby/core/exception/source_encoding_name_spec.rb9
-rw-r--r--spec/ruby/core/exception/source_encoding_spec.rb9
-rw-r--r--spec/ruby/core/exception/standard_error_spec.rb57
-rw-r--r--spec/ruby/core/exception/status_spec.rb8
-rw-r--r--spec/ruby/core/exception/success_spec.rb14
-rw-r--r--spec/ruby/core/exception/system_call_error_spec.rb90
-rw-r--r--spec/ruby/core/exception/system_exit_spec.rb59
-rw-r--r--spec/ruby/core/exception/system_stack_error_spec.rb7
-rw-r--r--spec/ruby/core/exception/to_s_spec.rb20
-rw-r--r--spec/ruby/core/exception/top_level_spec.rb57
-rw-r--r--spec/ruby/core/exception/uncaught_throw_error_spec.rb9
-rw-r--r--spec/ruby/core/false/and_spec.rb2
-rw-r--r--spec/ruby/core/false/case_compare_spec.rb14
-rw-r--r--spec/ruby/core/false/dup_spec.rb10
-rw-r--r--spec/ruby/core/false/falseclass_spec.rb6
-rw-r--r--spec/ruby/core/false/inspect_spec.rb2
-rw-r--r--spec/ruby/core/false/or_spec.rb2
-rw-r--r--spec/ruby/core/false/to_s_spec.rb10
-rw-r--r--spec/ruby/core/false/xor_spec.rb2
-rw-r--r--spec/ruby/core/fiber/blocking_spec.rb79
-rw-r--r--spec/ruby/core/fiber/fixtures/classes.rb12
-rw-r--r--spec/ruby/core/fiber/inspect_spec.rb38
-rw-r--r--spec/ruby/core/fiber/new_spec.rb62
-rw-r--r--spec/ruby/core/fiber/raise_spec.rb119
-rw-r--r--spec/ruby/core/fiber/resume_spec.rb113
-rw-r--r--spec/ruby/core/fiber/shared/blocking.rb41
-rw-r--r--spec/ruby/core/fiber/storage_spec.rb110
-rw-r--r--spec/ruby/core/fiber/yield_spec.rb80
-rw-r--r--spec/ruby/core/file/absolute_path_spec.rb59
-rw-r--r--spec/ruby/core/file/atime_spec.rb26
-rw-r--r--spec/ruby/core/file/basename_spec.rb43
-rw-r--r--spec/ruby/core/file/birthtime_spec.rb16
-rw-r--r--spec/ruby/core/file/blockdev_spec.rb4
-rw-r--r--spec/ruby/core/file/chardev_spec.rb4
-rw-r--r--spec/ruby/core/file/chmod_spec.rb182
-rw-r--r--spec/ruby/core/file/chown_spec.rb12
-rw-r--r--spec/ruby/core/file/constants/constants_spec.rb2
-rw-r--r--spec/ruby/core/file/constants_spec.rb2
-rw-r--r--spec/ruby/core/file/ctime_spec.rb8
-rw-r--r--spec/ruby/core/file/delete_spec.rb6
-rw-r--r--spec/ruby/core/file/directory_spec.rb4
-rw-r--r--spec/ruby/core/file/dirname_spec.rb41
-rw-r--r--spec/ruby/core/file/empty_spec.rb16
-rw-r--r--spec/ruby/core/file/executable_real_spec.rb4
-rw-r--r--spec/ruby/core/file/executable_spec.rb4
-rw-r--r--spec/ruby/core/file/exist_spec.rb6
-rw-r--r--spec/ruby/core/file/exists_spec.rb6
-rw-r--r--spec/ruby/core/file/expand_path_spec.rb183
-rw-r--r--spec/ruby/core/file/extname_spec.rb54
-rw-r--r--spec/ruby/core/file/file_spec.rb4
-rw-r--r--spec/ruby/core/file/fixtures/file_types.rb36
-rw-r--r--spec/ruby/core/file/flock_spec.rb6
-rw-r--r--spec/ruby/core/file/fnmatch_spec.rb8
-rw-r--r--spec/ruby/core/file/ftype_spec.rb21
-rw-r--r--spec/ruby/core/file/grpowned_spec.rb4
-rw-r--r--spec/ruby/core/file/identical_spec.rb4
-rw-r--r--spec/ruby/core/file/initialize_spec.rb6
-rw-r--r--spec/ruby/core/file/inspect_spec.rb2
-rw-r--r--spec/ruby/core/file/join_spec.rb19
-rw-r--r--spec/ruby/core/file/lchmod_spec.rb24
-rw-r--r--spec/ruby/core/file/lchown_spec.rb6
-rw-r--r--spec/ruby/core/file/link_spec.rb18
-rw-r--r--spec/ruby/core/file/lstat_spec.rb8
-rw-r--r--spec/ruby/core/file/lutime_spec.rb38
-rw-r--r--spec/ruby/core/file/mkfifo_spec.rb74
-rw-r--r--spec/ruby/core/file/mtime_spec.rb30
-rw-r--r--spec/ruby/core/file/new_spec.rb105
-rw-r--r--spec/ruby/core/file/null_spec.rb2
-rw-r--r--spec/ruby/core/file/open_spec.rb293
-rw-r--r--spec/ruby/core/file/owned_spec.rb12
-rw-r--r--spec/ruby/core/file/path_spec.rb33
-rw-r--r--spec/ruby/core/file/pipe_spec.rb6
-rw-r--r--spec/ruby/core/file/printf_spec.rb6
-rw-r--r--spec/ruby/core/file/read_spec.rb4
-rw-r--r--spec/ruby/core/file/readable_real_spec.rb4
-rw-r--r--spec/ruby/core/file/readable_spec.rb4
-rw-r--r--spec/ruby/core/file/readlink_spec.rb6
-rw-r--r--spec/ruby/core/file/realdirpath_spec.rb8
-rw-r--r--spec/ruby/core/file/realpath_spec.rb14
-rw-r--r--spec/ruby/core/file/rename_spec.rb18
-rw-r--r--spec/ruby/core/file/reopen_spec.rb4
-rw-r--r--spec/ruby/core/file/setgid_spec.rb4
-rw-r--r--spec/ruby/core/file/setuid_spec.rb4
-rw-r--r--spec/ruby/core/file/shared/fnmatch.rb32
-rw-r--r--spec/ruby/core/file/shared/open.rb2
-rw-r--r--spec/ruby/core/file/shared/path.rb94
-rw-r--r--spec/ruby/core/file/shared/read.rb10
-rw-r--r--spec/ruby/core/file/shared/stat.rb2
-rw-r--r--spec/ruby/core/file/shared/unlink.rb26
-rw-r--r--spec/ruby/core/file/size_spec.rb10
-rw-r--r--spec/ruby/core/file/socket_spec.rb4
-rw-r--r--spec/ruby/core/file/split_spec.rb13
-rw-r--r--spec/ruby/core/file/stat/atime_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/birthtime_spec.rb4
-rw-r--r--spec/ruby/core/file/stat/blksize_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/blockdev_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/blocks_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/chardev_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/comparison_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/ctime_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/dev_major_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/dev_minor_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/dev_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/directory_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/executable_real_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/executable_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/file_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/ftype_spec.rb8
-rw-r--r--spec/ruby/core/file/stat/gid_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/grpowned_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/ino_spec.rb20
-rw-r--r--spec/ruby/core/file/stat/inspect_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/mode_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/mtime_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/new_spec.rb4
-rw-r--r--spec/ruby/core/file/stat/nlink_spec.rb4
-rw-r--r--spec/ruby/core/file/stat/owned_spec.rb20
-rw-r--r--spec/ruby/core/file/stat/pipe_spec.rb12
-rw-r--r--spec/ruby/core/file/stat/rdev_major_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/rdev_minor_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/rdev_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/readable_real_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/readable_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/setgid_spec.rb10
-rw-r--r--spec/ruby/core/file/stat/setuid_spec.rb10
-rw-r--r--spec/ruby/core/file/stat/size_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/socket_spec.rb10
-rw-r--r--spec/ruby/core/file/stat/sticky_spec.rb10
-rw-r--r--spec/ruby/core/file/stat/symlink_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/uid_spec.rb2
-rw-r--r--spec/ruby/core/file/stat/world_readable_spec.rb8
-rw-r--r--spec/ruby/core/file/stat/world_writable_spec.rb8
-rw-r--r--spec/ruby/core/file/stat/writable_real_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/writable_spec.rb6
-rw-r--r--spec/ruby/core/file/stat/zero_spec.rb6
-rw-r--r--spec/ruby/core/file/stat_spec.rb22
-rw-r--r--spec/ruby/core/file/sticky_spec.rb6
-rw-r--r--spec/ruby/core/file/symlink_spec.rb16
-rw-r--r--spec/ruby/core/file/to_path_spec.rb49
-rw-r--r--spec/ruby/core/file/truncate_spec.rb32
-rw-r--r--spec/ruby/core/file/umask_spec.rb27
-rw-r--r--spec/ruby/core/file/unlink_spec.rb6
-rw-r--r--spec/ruby/core/file/utime_spec.rb79
-rw-r--r--spec/ruby/core/file/world_readable_spec.rb8
-rw-r--r--spec/ruby/core/file/world_writable_spec.rb8
-rw-r--r--spec/ruby/core/file/writable_real_spec.rb4
-rw-r--r--spec/ruby/core/file/writable_spec.rb4
-rw-r--r--spec/ruby/core/file/zero_spec.rb4
-rw-r--r--spec/ruby/core/filetest/blockdev_spec.rb4
-rw-r--r--spec/ruby/core/filetest/chardev_spec.rb4
-rw-r--r--spec/ruby/core/filetest/directory_spec.rb4
-rw-r--r--spec/ruby/core/filetest/executable_real_spec.rb4
-rw-r--r--spec/ruby/core/filetest/executable_spec.rb4
-rw-r--r--spec/ruby/core/filetest/exist_spec.rb4
-rw-r--r--spec/ruby/core/filetest/exists_spec.rb6
-rw-r--r--spec/ruby/core/filetest/file_spec.rb4
-rw-r--r--spec/ruby/core/filetest/grpowned_spec.rb4
-rw-r--r--spec/ruby/core/filetest/identical_spec.rb4
-rw-r--r--spec/ruby/core/filetest/owned_spec.rb8
-rw-r--r--spec/ruby/core/filetest/pipe_spec.rb8
-rw-r--r--spec/ruby/core/filetest/readable_real_spec.rb4
-rw-r--r--spec/ruby/core/filetest/readable_spec.rb4
-rw-r--r--spec/ruby/core/filetest/setgid_spec.rb8
-rw-r--r--spec/ruby/core/filetest/setuid_spec.rb8
-rw-r--r--spec/ruby/core/filetest/size_spec.rb4
-rw-r--r--spec/ruby/core/filetest/socket_spec.rb8
-rw-r--r--spec/ruby/core/filetest/sticky_spec.rb4
-rw-r--r--spec/ruby/core/filetest/symlink_spec.rb4
-rw-r--r--spec/ruby/core/filetest/world_readable_spec.rb2
-rw-r--r--spec/ruby/core/filetest/world_writable_spec.rb2
-rw-r--r--spec/ruby/core/filetest/writable_real_spec.rb4
-rw-r--r--spec/ruby/core/filetest/writable_spec.rb4
-rw-r--r--spec/ruby/core/filetest/zero_spec.rb4
-rw-r--r--spec/ruby/core/fixnum/abs_spec.rb7
-rw-r--r--spec/ruby/core/fixnum/bit_and_spec.rb46
-rw-r--r--spec/ruby/core/fixnum/bit_length_spec.rb42
-rw-r--r--spec/ruby/core/fixnum/bit_or_spec.rb26
-rw-r--r--spec/ruby/core/fixnum/bit_xor_spec.rb24
-rw-r--r--spec/ruby/core/fixnum/case_compare_spec.rb6
-rw-r--r--spec/ruby/core/fixnum/coerce_spec.rb39
-rw-r--r--spec/ruby/core/fixnum/comparison_spec.rb26
-rw-r--r--spec/ruby/core/fixnum/complement_spec.rb10
-rw-r--r--spec/ruby/core/fixnum/div_spec.rb44
-rw-r--r--spec/ruby/core/fixnum/divide_spec.rb35
-rw-r--r--spec/ruby/core/fixnum/divmod_spec.rb35
-rw-r--r--spec/ruby/core/fixnum/element_reference_spec.rb80
-rw-r--r--spec/ruby/core/fixnum/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/fixnum/even_spec.rb23
-rw-r--r--spec/ruby/core/fixnum/exponent_spec.rb76
-rw-r--r--spec/ruby/core/fixnum/fdiv_spec.rb49
-rw-r--r--spec/ruby/core/fixnum/fixnum_spec.rb31
-rw-r--r--spec/ruby/core/fixnum/gt_spec.rb19
-rw-r--r--spec/ruby/core/fixnum/gte_spec.rb20
-rw-r--r--spec/ruby/core/fixnum/hash_spec.rb11
-rw-r--r--spec/ruby/core/fixnum/left_shift_spec.rb91
-rw-r--r--spec/ruby/core/fixnum/lt_spec.rb19
-rw-r--r--spec/ruby/core/fixnum/lte_spec.rb20
-rw-r--r--spec/ruby/core/fixnum/magnitude_spec.rb6
-rw-r--r--spec/ruby/core/fixnum/minus_spec.rb29
-rw-r--r--spec/ruby/core/fixnum/modulo_spec.rb10
-rw-r--r--spec/ruby/core/fixnum/multiply_spec.rb27
-rw-r--r--spec/ruby/core/fixnum/odd_spec.rb23
-rw-r--r--spec/ruby/core/fixnum/plus_spec.rb29
-rw-r--r--spec/ruby/core/fixnum/right_shift_spec.rb91
-rw-r--r--spec/ruby/core/fixnum/shared/abs.rb9
-rw-r--r--spec/ruby/core/fixnum/shared/equal.rb24
-rw-r--r--spec/ruby/core/fixnum/shared/modulo.rb42
-rw-r--r--spec/ruby/core/fixnum/size_spec.rb19
-rw-r--r--spec/ruby/core/fixnum/succ_spec.rb15
-rw-r--r--spec/ruby/core/fixnum/to_f_spec.rb9
-rw-r--r--spec/ruby/core/fixnum/to_s_spec.rb50
-rw-r--r--spec/ruby/core/fixnum/uminus_spec.rb16
-rw-r--r--spec/ruby/core/fixnum/zero_spec.rb9
-rw-r--r--spec/ruby/core/float/abs_spec.rb5
-rw-r--r--spec/ruby/core/float/angle_spec.rb3
-rw-r--r--spec/ruby/core/float/arg_spec.rb3
-rw-r--r--spec/ruby/core/float/case_compare_spec.rb4
-rw-r--r--spec/ruby/core/float/ceil_spec.rb16
-rw-r--r--spec/ruby/core/float/coerce_spec.rb6
-rw-r--r--spec/ruby/core/float/comparison_spec.rb103
-rw-r--r--spec/ruby/core/float/constants_spec.rb2
-rw-r--r--spec/ruby/core/float/denominator_spec.rb2
-rw-r--r--spec/ruby/core/float/divide_spec.rb15
-rw-r--r--spec/ruby/core/float/divmod_spec.rb14
-rw-r--r--spec/ruby/core/float/dup_spec.rb12
-rw-r--r--spec/ruby/core/float/eql_spec.rb2
-rw-r--r--spec/ruby/core/float/equal_value_spec.rb4
-rw-r--r--spec/ruby/core/float/exponent_spec.rb2
-rw-r--r--spec/ruby/core/float/fdiv_spec.rb4
-rw-r--r--spec/ruby/core/float/finite_spec.rb10
-rw-r--r--spec/ruby/core/float/fixtures/classes.rb4
-rw-r--r--spec/ruby/core/float/float_spec.rb6
-rw-r--r--spec/ruby/core/float/floor_spec.rb16
-rw-r--r--spec/ruby/core/float/gt_spec.rb30
-rw-r--r--spec/ruby/core/float/gte_spec.rb30
-rw-r--r--spec/ruby/core/float/hash_spec.rb2
-rw-r--r--spec/ruby/core/float/infinite_spec.rb2
-rw-r--r--spec/ruby/core/float/inspect_spec.rb6
-rw-r--r--spec/ruby/core/float/lt_spec.rb30
-rw-r--r--spec/ruby/core/float/lte_spec.rb30
-rw-r--r--spec/ruby/core/float/magnitude_spec.rb5
-rw-r--r--spec/ruby/core/float/minus_spec.rb7
-rw-r--r--spec/ruby/core/float/modulo_spec.rb8
-rw-r--r--spec/ruby/core/float/multiply_spec.rb11
-rw-r--r--spec/ruby/core/float/nan_spec.rb8
-rw-r--r--spec/ruby/core/float/negative_spec.rb33
-rw-r--r--spec/ruby/core/float/next_float_spec.rb4
-rw-r--r--spec/ruby/core/float/numerator_spec.rb2
-rw-r--r--spec/ruby/core/float/phase_spec.rb3
-rw-r--r--spec/ruby/core/float/plus_spec.rb7
-rw-r--r--spec/ruby/core/float/positive_spec.rb33
-rw-r--r--spec/ruby/core/float/prev_float_spec.rb4
-rw-r--r--spec/ruby/core/float/quo_spec.rb4
-rw-r--r--spec/ruby/core/float/rationalize_spec.rb10
-rw-r--r--spec/ruby/core/float/round_spec.rb151
-rw-r--r--spec/ruby/core/float/shared/abs.rb2
-rw-r--r--spec/ruby/core/float/shared/arg.rb36
-rw-r--r--spec/ruby/core/float/shared/arithmetic_exception_in_coerce.rb11
-rw-r--r--spec/ruby/core/float/shared/comparison_exception_in_coerce.rb11
-rw-r--r--spec/ruby/core/float/shared/equal.rb21
-rw-r--r--spec/ruby/core/float/shared/modulo.rb4
-rw-r--r--spec/ruby/core/float/shared/quo.rb8
-rw-r--r--spec/ruby/core/float/shared/to_i.rb4
-rw-r--r--spec/ruby/core/float/shared/to_s.rb308
-rw-r--r--spec/ruby/core/float/to_f_spec.rb2
-rw-r--r--spec/ruby/core/float/to_i_spec.rb6
-rw-r--r--spec/ruby/core/float/to_int_spec.rb6
-rw-r--r--spec/ruby/core/float/to_r_spec.rb2
-rw-r--r--spec/ruby/core/float/to_s_spec.rb120
-rw-r--r--spec/ruby/core/float/truncate_spec.rb20
-rw-r--r--spec/ruby/core/float/uminus_spec.rb4
-rw-r--r--spec/ruby/core/float/uplus_spec.rb2
-rw-r--r--spec/ruby/core/float/zero_spec.rb8
-rw-r--r--spec/ruby/core/gc/auto_compact_spec.rb26
-rw-r--r--spec/ruby/core/gc/count_spec.rb12
-rw-r--r--spec/ruby/core/gc/disable_spec.rb4
-rw-r--r--spec/ruby/core/gc/enable_spec.rb4
-rw-r--r--spec/ruby/core/gc/garbage_collect_spec.rb2
-rw-r--r--spec/ruby/core/gc/measure_total_time_spec.rb19
-rw-r--r--spec/ruby/core/gc/profiler/clear_spec.rb2
-rw-r--r--spec/ruby/core/gc/profiler/disable_spec.rb4
-rw-r--r--spec/ruby/core/gc/profiler/enable_spec.rb4
-rw-r--r--spec/ruby/core/gc/profiler/enabled_spec.rb2
-rw-r--r--spec/ruby/core/gc/profiler/report_spec.rb2
-rw-r--r--spec/ruby/core/gc/profiler/result_spec.rb2
-rw-r--r--spec/ruby/core/gc/profiler/total_time_spec.rb2
-rw-r--r--spec/ruby/core/gc/start_spec.rb6
-rw-r--r--spec/ruby/core/gc/stat_spec.rb62
-rw-r--r--spec/ruby/core/gc/stress_spec.rb2
-rw-r--r--spec/ruby/core/gc/total_time_spec.rb15
-rw-r--r--spec/ruby/core/hash/allocate_spec.rb2
-rw-r--r--spec/ruby/core/hash/any_spec.rb6
-rw-r--r--spec/ruby/core/hash/assoc_spec.rb2
-rw-r--r--spec/ruby/core/hash/clear_spec.rb10
-rw-r--r--spec/ruby/core/hash/clone_spec.rb5
-rw-r--r--spec/ruby/core/hash/compact_spec.rb106
-rw-r--r--spec/ruby/core/hash/compare_by_identity_spec.rb24
-rw-r--r--spec/ruby/core/hash/constructor_spec.rb34
-rw-r--r--spec/ruby/core/hash/deconstruct_keys_spec.rb23
-rw-r--r--spec/ruby/core/hash/default_proc_spec.rb24
-rw-r--r--spec/ruby/core/hash/default_spec.rb12
-rw-r--r--spec/ruby/core/hash/delete_if_spec.rb18
-rw-r--r--spec/ruby/core/hash/delete_spec.rb10
-rw-r--r--spec/ruby/core/hash/dig_spec.rb108
-rw-r--r--spec/ruby/core/hash/each_key_spec.rb12
-rw-r--r--spec/ruby/core/hash/each_pair_spec.rb16
-rw-r--r--spec/ruby/core/hash/each_spec.rb16
-rw-r--r--spec/ruby/core/hash/each_value_spec.rb12
-rw-r--r--spec/ruby/core/hash/element_reference_spec.rb18
-rw-r--r--spec/ruby/core/hash/element_set_spec.rb8
-rw-r--r--spec/ruby/core/hash/empty_spec.rb14
-rw-r--r--spec/ruby/core/hash/eql_spec.rb6
-rw-r--r--spec/ruby/core/hash/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/hash/except_spec.rb34
-rw-r--r--spec/ruby/core/hash/fetch_spec.rb30
-rw-r--r--spec/ruby/core/hash/fetch_values_spec.rb48
-rw-r--r--spec/ruby/core/hash/filter_spec.rb10
-rw-r--r--spec/ruby/core/hash/fixtures/classes.rb7
-rw-r--r--spec/ruby/core/hash/fixtures/name.rb30
-rw-r--r--spec/ruby/core/hash/flatten_spec.rb4
-rw-r--r--spec/ruby/core/hash/gt_spec.rb66
-rw-r--r--spec/ruby/core/hash/gte_spec.rb66
-rw-r--r--spec/ruby/core/hash/has_key_spec.rb9
-rw-r--r--spec/ruby/core/hash/has_value_spec.rb9
-rw-r--r--spec/ruby/core/hash/hash_spec.rb19
-rw-r--r--spec/ruby/core/hash/include_spec.rb8
-rw-r--r--spec/ruby/core/hash/index_spec.rb12
-rw-r--r--spec/ruby/core/hash/initialize_spec.rb45
-rw-r--r--spec/ruby/core/hash/inspect_spec.rb6
-rw-r--r--spec/ruby/core/hash/invert_spec.rb4
-rw-r--r--spec/ruby/core/hash/keep_if_spec.rb18
-rw-r--r--spec/ruby/core/hash/key_spec.rb12
-rw-r--r--spec/ruby/core/hash/keys_spec.rb4
-rw-r--r--spec/ruby/core/hash/length_spec.rb8
-rw-r--r--spec/ruby/core/hash/lt_spec.rb66
-rw-r--r--spec/ruby/core/hash/lte_spec.rb66
-rw-r--r--spec/ruby/core/hash/member_spec.rb8
-rw-r--r--spec/ruby/core/hash/merge_spec.rb49
-rw-r--r--spec/ruby/core/hash/new_spec.rb10
-rw-r--r--spec/ruby/core/hash/rassoc_spec.rb2
-rw-r--r--spec/ruby/core/hash/rehash_spec.rb66
-rw-r--r--spec/ruby/core/hash/reject_spec.rb29
-rw-r--r--spec/ruby/core/hash/replace_spec.rb8
-rw-r--r--spec/ruby/core/hash/ruby2_keywords_hash_spec.rb83
-rw-r--r--spec/ruby/core/hash/select_spec.rb81
-rw-r--r--spec/ruby/core/hash/shared/comparison.rb6
-rw-r--r--spec/ruby/core/hash/shared/each.rb56
-rw-r--r--spec/ruby/core/hash/shared/eql.rb14
-rw-r--r--spec/ruby/core/hash/shared/index.rb26
-rw-r--r--spec/ruby/core/hash/shared/replace.rb14
-rw-r--r--spec/ruby/core/hash/shared/select.rb91
-rw-r--r--spec/ruby/core/hash/shared/store.rb27
-rw-r--r--spec/ruby/core/hash/shared/to_s.rb38
-rw-r--r--spec/ruby/core/hash/shared/update.rb31
-rw-r--r--spec/ruby/core/hash/shift_spec.rb67
-rw-r--r--spec/ruby/core/hash/size_spec.rb8
-rw-r--r--spec/ruby/core/hash/slice_spec.rb71
-rw-r--r--spec/ruby/core/hash/sort_spec.rb4
-rw-r--r--spec/ruby/core/hash/store_spec.rb8
-rw-r--r--spec/ruby/core/hash/to_a_spec.rb16
-rw-r--r--spec/ruby/core/hash/to_h_spec.rb42
-rw-r--r--spec/ruby/core/hash/to_hash_spec.rb4
-rw-r--r--spec/ruby/core/hash/to_proc_spec.rb128
-rw-r--r--spec/ruby/core/hash/to_s_spec.rb6
-rw-r--r--spec/ruby/core/hash/transform_keys_spec.rb185
-rw-r--r--spec/ruby/core/hash/transform_values_spec.rb148
-rw-r--r--spec/ruby/core/hash/try_convert_spec.rb8
-rw-r--r--spec/ruby/core/hash/update_spec.rb8
-rw-r--r--spec/ruby/core/hash/value_spec.rb9
-rw-r--r--spec/ruby/core/hash/values_at_spec.rb8
-rw-r--r--spec/ruby/core/hash/values_spec.rb4
-rw-r--r--spec/ruby/core/integer/abs_spec.rb6
-rw-r--r--spec/ruby/core/integer/allbits_spec.rb10
-rw-r--r--spec/ruby/core/integer/anybits_spec.rb10
-rw-r--r--spec/ruby/core/integer/bit_and_spec.rb97
-rw-r--r--spec/ruby/core/integer/bit_length_spec.rb76
-rw-r--r--spec/ruby/core/integer/bit_or_spec.rb89
-rw-r--r--spec/ruby/core/integer/bit_xor_spec.rb93
-rw-r--r--spec/ruby/core/integer/case_compare_spec.rb6
-rw-r--r--spec/ruby/core/integer/ceil_spec.rb28
-rw-r--r--spec/ruby/core/integer/ceildiv_spec.rb22
-rw-r--r--spec/ruby/core/integer/chr_spec.rb104
-rw-r--r--spec/ruby/core/integer/coerce_spec.rb104
-rw-r--r--spec/ruby/core/integer/comparison_spec.rb177
-rw-r--r--spec/ruby/core/integer/complement_spec.rb20
-rw-r--r--spec/ruby/core/integer/constants_spec.rb41
-rw-r--r--spec/ruby/core/integer/denominator_spec.rb2
-rw-r--r--spec/ruby/core/integer/digits_spec.rb71
-rw-r--r--spec/ruby/core/integer/div_spec.rb146
-rw-r--r--spec/ruby/core/integer/divide_spec.rb89
-rw-r--r--spec/ruby/core/integer/divmod_spec.rb117
-rw-r--r--spec/ruby/core/integer/downto_spec.rb12
-rw-r--r--spec/ruby/core/integer/dup_spec.rb17
-rw-r--r--spec/ruby/core/integer/element_reference_spec.rb188
-rw-r--r--spec/ruby/core/integer/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/integer/even_spec.rb44
-rw-r--r--spec/ruby/core/integer/exponent_spec.rb7
-rw-r--r--spec/ruby/core/integer/fdiv_spec.rb100
-rw-r--r--spec/ruby/core/integer/fixtures/classes.rb4
-rw-r--r--spec/ruby/core/integer/floor_spec.rb28
-rw-r--r--spec/ruby/core/integer/gcd_spec.rb25
-rw-r--r--spec/ruby/core/integer/gcdlcm_spec.rb14
-rw-r--r--spec/ruby/core/integer/gt_spec.rb43
-rw-r--r--spec/ruby/core/integer/gte_spec.rb43
-rw-r--r--spec/ruby/core/integer/integer_spec.rb16
-rw-r--r--spec/ruby/core/integer/lcm_spec.rb14
-rw-r--r--spec/ruby/core/integer/left_shift_spec.rb213
-rw-r--r--spec/ruby/core/integer/lt_spec.rb45
-rw-r--r--spec/ruby/core/integer/lte_spec.rb53
-rw-r--r--spec/ruby/core/integer/magnitude_spec.rb6
-rw-r--r--spec/ruby/core/integer/minus_spec.rb43
-rw-r--r--spec/ruby/core/integer/modulo_spec.rb10
-rw-r--r--spec/ruby/core/integer/multiply_spec.rb45
-rw-r--r--spec/ruby/core/integer/next_spec.rb6
-rw-r--r--spec/ruby/core/integer/nobits_spec.rb10
-rw-r--r--spec/ruby/core/integer/numerator_spec.rb2
-rw-r--r--spec/ruby/core/integer/odd_spec.rb42
-rw-r--r--spec/ruby/core/integer/ord_spec.rb2
-rw-r--r--spec/ruby/core/integer/plus_spec.rb58
-rw-r--r--spec/ruby/core/integer/pow_spec.rb51
-rw-r--r--spec/ruby/core/integer/pred_spec.rb2
-rw-r--r--spec/ruby/core/integer/rationalize_spec.rb6
-rw-r--r--spec/ruby/core/integer/remainder_spec.rb51
-rw-r--r--spec/ruby/core/integer/right_shift_spec.rb235
-rw-r--r--spec/ruby/core/integer/round_spec.rb74
-rw-r--r--spec/ruby/core/integer/shared/abs.rb18
-rw-r--r--spec/ruby/core/integer/shared/arithmetic_coerce.rb31
-rw-r--r--spec/ruby/core/integer/shared/comparison_coerce.rb11
-rw-r--r--spec/ruby/core/integer/shared/equal.rb58
-rw-r--r--spec/ruby/core/integer/shared/exponent.rb126
-rw-r--r--spec/ruby/core/integer/shared/integer_rounding.rb24
-rw-r--r--spec/ruby/core/integer/shared/modulo.rb74
-rw-r--r--spec/ruby/core/integer/size_spec.rb34
-rw-r--r--spec/ruby/core/integer/sqrt_spec.rb48
-rw-r--r--spec/ruby/core/integer/succ_spec.rb6
-rw-r--r--spec/ruby/core/integer/times_spec.rb2
-rw-r--r--spec/ruby/core/integer/to_f_spec.rb23
-rw-r--r--spec/ruby/core/integer/to_i_spec.rb6
-rw-r--r--spec/ruby/core/integer/to_int_spec.rb6
-rw-r--r--spec/ruby/core/integer/to_r_spec.rb8
-rw-r--r--spec/ruby/core/integer/to_s_spec.rb95
-rw-r--r--spec/ruby/core/integer/truncate_spec.rb28
-rw-r--r--spec/ruby/core/integer/try_convert_spec.rb50
-rw-r--r--spec/ruby/core/integer/uminus_spec.rb30
-rw-r--r--spec/ruby/core/integer/upto_spec.rb12
-rw-r--r--spec/ruby/core/integer/zero_spec.rb21
-rw-r--r--spec/ruby/core/io/advise_spec.rb33
-rw-r--r--spec/ruby/core/io/binmode_spec.rb10
-rw-r--r--spec/ruby/core/io/binread_spec.rb20
-rw-r--r--spec/ruby/core/io/binwrite_spec.rb6
-rw-r--r--spec/ruby/core/io/bytes_spec.rb70
-rw-r--r--spec/ruby/core/io/chars_spec.rb34
-rw-r--r--spec/ruby/core/io/close_on_exec_spec.rb46
-rw-r--r--spec/ruby/core/io/close_read_spec.rb44
-rw-r--r--spec/ruby/core/io/close_spec.rb70
-rw-r--r--spec/ruby/core/io/close_write_spec.rb44
-rw-r--r--spec/ruby/core/io/closed_spec.rb4
-rw-r--r--spec/ruby/core/io/codepoints_spec.rb49
-rw-r--r--spec/ruby/core/io/constants_spec.rb2
-rw-r--r--spec/ruby/core/io/copy_stream_spec.rb54
-rw-r--r--spec/ruby/core/io/dup_spec.rb57
-rw-r--r--spec/ruby/core/io/each_byte_spec.rb6
-rw-r--r--spec/ruby/core/io/each_char_spec.rb6
-rw-r--r--spec/ruby/core/io/each_codepoint_spec.rb14
-rw-r--r--spec/ruby/core/io/each_line_spec.rb6
-rw-r--r--spec/ruby/core/io/each_spec.rb6
-rw-r--r--spec/ruby/core/io/eof_spec.rb36
-rw-r--r--spec/ruby/core/io/external_encoding_spec.rb313
-rw-r--r--spec/ruby/core/io/fcntl_spec.rb6
-rw-r--r--spec/ruby/core/io/fdatasync_spec.rb2
-rw-r--r--spec/ruby/core/io/fileno_spec.rb6
-rw-r--r--spec/ruby/core/io/fixtures/classes.rb37
-rw-r--r--spec/ruby/core/io/fixtures/copy_in_out.rb2
-rw-r--r--spec/ruby/core/io/flush_spec.rb35
-rw-r--r--spec/ruby/core/io/for_fd_spec.rb4
-rw-r--r--spec/ruby/core/io/foreach_spec.rb8
-rw-r--r--spec/ruby/core/io/fsync_spec.rb6
-rw-r--r--spec/ruby/core/io/getbyte_spec.rb6
-rw-r--r--spec/ruby/core/io/getc_spec.rb6
-rw-r--r--spec/ruby/core/io/gets_spec.rb127
-rw-r--r--spec/ruby/core/io/initialize_spec.rb35
-rw-r--r--spec/ruby/core/io/inspect_spec.rb2
-rw-r--r--spec/ruby/core/io/internal_encoding_spec.rb241
-rw-r--r--spec/ruby/core/io/io_spec.rb2
-rw-r--r--spec/ruby/core/io/ioctl_spec.rb14
-rw-r--r--spec/ruby/core/io/isatty_spec.rb4
-rw-r--r--spec/ruby/core/io/lineno_spec.rb53
-rw-r--r--spec/ruby/core/io/lines_spec.rb58
-rw-r--r--spec/ruby/core/io/new_spec.rb6
-rw-r--r--spec/ruby/core/io/nonblock_spec.rb70
-rw-r--r--spec/ruby/core/io/open_spec.rb14
-rw-r--r--spec/ruby/core/io/output_spec.rb12
-rw-r--r--spec/ruby/core/io/path_spec.rb14
-rw-r--r--spec/ruby/core/io/pid_spec.rb6
-rw-r--r--spec/ruby/core/io/pipe_spec.rb31
-rw-r--r--spec/ruby/core/io/popen_spec.rb81
-rw-r--r--spec/ruby/core/io/pos_spec.rb7
-rw-r--r--spec/ruby/core/io/pread_spec.rb50
-rw-r--r--spec/ruby/core/io/print_spec.rb34
-rw-r--r--spec/ruby/core/io/printf_spec.rb6
-rw-r--r--spec/ruby/core/io/putc_spec.rb4
-rw-r--r--spec/ruby/core/io/puts_spec.rb44
-rw-r--r--spec/ruby/core/io/pwrite_spec.rb43
-rw-r--r--spec/ruby/core/io/read_nonblock_spec.rb93
-rw-r--r--spec/ruby/core/io/read_spec.rb336
-rw-r--r--spec/ruby/core/io/readbyte_spec.rb6
-rw-r--r--spec/ruby/core/io/readchar_spec.rb76
-rw-r--r--spec/ruby/core/io/readline_spec.rb49
-rw-r--r--spec/ruby/core/io/readlines_spec.rb102
-rw-r--r--spec/ruby/core/io/readpartial_spec.rb35
-rw-r--r--spec/ruby/core/io/reopen_spec.rb47
-rw-r--r--spec/ruby/core/io/rewind_spec.rb23
-rw-r--r--spec/ruby/core/io/seek_spec.rb14
-rw-r--r--spec/ruby/core/io/select_spec.rb34
-rw-r--r--spec/ruby/core/io/set_encoding_by_bom_spec.rb262
-rw-r--r--spec/ruby/core/io/set_encoding_spec.rb331
-rw-r--r--spec/ruby/core/io/shared/binwrite.rb31
-rw-r--r--spec/ruby/core/io/shared/chars.rb4
-rw-r--r--spec/ruby/core/io/shared/codepoints.rb6
-rw-r--r--spec/ruby/core/io/shared/each.rb102
-rw-r--r--spec/ruby/core/io/shared/new.rb203
-rw-r--r--spec/ruby/core/io/shared/pos.rb16
-rw-r--r--spec/ruby/core/io/shared/readlines.rb174
-rw-r--r--spec/ruby/core/io/shared/tty.rb7
-rw-r--r--spec/ruby/core/io/shared/write.rb90
-rw-r--r--spec/ruby/core/io/stat_spec.rb6
-rw-r--r--spec/ruby/core/io/sync_spec.rb8
-rw-r--r--spec/ruby/core/io/sysopen_spec.rb8
-rw-r--r--spec/ruby/core/io/sysread_spec.rb46
-rw-r--r--spec/ruby/core/io/sysseek_spec.rb17
-rw-r--r--spec/ruby/core/io/syswrite_spec.rb38
-rw-r--r--spec/ruby/core/io/tell_spec.rb8
-rw-r--r--spec/ruby/core/io/to_i_spec.rb6
-rw-r--r--spec/ruby/core/io/to_io_spec.rb4
-rw-r--r--spec/ruby/core/io/try_convert_spec.rb8
-rw-r--r--spec/ruby/core/io/tty_spec.rb4
-rw-r--r--spec/ruby/core/io/ungetbyte_spec.rb16
-rw-r--r--spec/ruby/core/io/ungetc_spec.rb49
-rw-r--r--spec/ruby/core/io/write_nonblock_spec.rb36
-rw-r--r--spec/ruby/core/io/write_spec.rb199
-rw-r--r--spec/ruby/core/kernel/Array_spec.rb8
-rw-r--r--spec/ruby/core/kernel/Complex_spec.rb276
-rw-r--r--spec/ruby/core/kernel/Float_spec.rb117
-rw-r--r--spec/ruby/core/kernel/Hash_spec.rb16
-rw-r--r--spec/ruby/core/kernel/Integer_spec.rb331
-rw-r--r--spec/ruby/core/kernel/Rational_spec.rb4
-rw-r--r--spec/ruby/core/kernel/String_spec.rb12
-rw-r--r--spec/ruby/core/kernel/__callee___spec.rb4
-rw-r--r--spec/ruby/core/kernel/__dir___spec.rb32
-rw-r--r--spec/ruby/core/kernel/__method___spec.rb4
-rw-r--r--spec/ruby/core/kernel/abort_spec.rb6
-rw-r--r--spec/ruby/core/kernel/at_exit_spec.rb39
-rw-r--r--spec/ruby/core/kernel/autoload_spec.rb70
-rw-r--r--spec/ruby/core/kernel/backtick_spec.rb36
-rw-r--r--spec/ruby/core/kernel/binding_spec.rb6
-rw-r--r--spec/ruby/core/kernel/block_given_spec.rb4
-rw-r--r--spec/ruby/core/kernel/caller_locations_spec.rb60
-rw-r--r--spec/ruby/core/kernel/caller_spec.rb39
-rw-r--r--spec/ruby/core/kernel/case_compare_spec.rb4
-rw-r--r--spec/ruby/core/kernel/catch_spec.rb10
-rw-r--r--spec/ruby/core/kernel/chomp_spec.rb40
-rw-r--r--spec/ruby/core/kernel/chop_spec.rb40
-rw-r--r--spec/ruby/core/kernel/class_spec.rb6
-rw-r--r--spec/ruby/core/kernel/clone_spec.rb133
-rw-r--r--spec/ruby/core/kernel/comparison_spec.rb2
-rw-r--r--spec/ruby/core/kernel/define_singleton_method_spec.rb55
-rw-r--r--spec/ruby/core/kernel/display_spec.rb4
-rw-r--r--spec/ruby/core/kernel/dup_spec.rb14
-rw-r--r--spec/ruby/core/kernel/enum_for_spec.rb2
-rw-r--r--spec/ruby/core/kernel/eql_spec.rb5
-rw-r--r--spec/ruby/core/kernel/equal_value_spec.rb4
-rw-r--r--spec/ruby/core/kernel/eval_spec.rb255
-rw-r--r--spec/ruby/core/kernel/exec_spec.rb4
-rw-r--r--spec/ruby/core/kernel/exit_spec.rb16
-rw-r--r--spec/ruby/core/kernel/extend_spec.rb18
-rw-r--r--spec/ruby/core/kernel/fail_spec.rb25
-rw-r--r--spec/ruby/core/kernel/fixtures/Complex.rb5
-rw-r--r--spec/ruby/core/kernel/fixtures/__dir__.rb2
-rw-r--r--spec/ruby/core/kernel/fixtures/autoload_c.rb5
-rw-r--r--spec/ruby/core/kernel/fixtures/autoload_from_included_module.rb9
-rw-r--r--spec/ruby/core/kernel/fixtures/autoload_from_included_module2.rb9
-rw-r--r--spec/ruby/core/kernel/fixtures/caller_at_exit.rb7
-rw-r--r--spec/ruby/core/kernel/fixtures/classes.rb127
-rw-r--r--spec/ruby/core/kernel/fixtures/eval_return_with_lambda.rb2
-rw-r--r--spec/ruby/core/kernel/fixtures/singleton_methods.rb13
-rw-r--r--spec/ruby/core/kernel/fixtures/warn_core_method.rb14
-rw-r--r--spec/ruby/core/kernel/fixtures/warn_require.rb1
-rw-r--r--spec/ruby/core/kernel/fixtures/warn_require_caller.rb2
-rw-r--r--spec/ruby/core/kernel/fork_spec.rb6
-rw-r--r--spec/ruby/core/kernel/format_spec.rb5
-rw-r--r--spec/ruby/core/kernel/freeze_spec.rb40
-rw-r--r--spec/ruby/core/kernel/frozen_spec.rb44
-rw-r--r--spec/ruby/core/kernel/gets_spec.rb4
-rw-r--r--spec/ruby/core/kernel/global_variables_spec.rb4
-rw-r--r--spec/ruby/core/kernel/gsub_spec.rb6
-rw-r--r--spec/ruby/core/kernel/initialize_clone_spec.rb28
-rw-r--r--spec/ruby/core/kernel/initialize_copy_spec.rb29
-rw-r--r--spec/ruby/core/kernel/initialize_dup_spec.rb20
-rw-r--r--spec/ruby/core/kernel/inspect_spec.rb20
-rw-r--r--spec/ruby/core/kernel/instance_of_spec.rb12
-rw-r--r--spec/ruby/core/kernel/instance_variable_defined_spec.rb6
-rw-r--r--spec/ruby/core/kernel/instance_variable_get_spec.rb36
-rw-r--r--spec/ruby/core/kernel/instance_variable_set_spec.rb56
-rw-r--r--spec/ruby/core/kernel/instance_variables_spec.rb21
-rw-r--r--spec/ruby/core/kernel/is_a_spec.rb6
-rw-r--r--spec/ruby/core/kernel/iterator_spec.rb18
-rw-r--r--spec/ruby/core/kernel/itself_spec.rb4
-rw-r--r--spec/ruby/core/kernel/kind_of_spec.rb6
-rw-r--r--spec/ruby/core/kernel/lambda_spec.rb78
-rw-r--r--spec/ruby/core/kernel/load_spec.rb8
-rw-r--r--spec/ruby/core/kernel/local_variables_spec.rb15
-rw-r--r--spec/ruby/core/kernel/loop_spec.rb22
-rw-r--r--spec/ruby/core/kernel/match_spec.rb36
-rw-r--r--spec/ruby/core/kernel/method_spec.rb53
-rw-r--r--spec/ruby/core/kernel/methods_spec.rb6
-rw-r--r--spec/ruby/core/kernel/nil_spec.rb14
-rw-r--r--spec/ruby/core/kernel/not_match_spec.rb4
-rw-r--r--spec/ruby/core/kernel/object_id_spec.rb4
-rw-r--r--spec/ruby/core/kernel/open_spec.rb70
-rw-r--r--spec/ruby/core/kernel/p_spec.rb44
-rw-r--r--spec/ruby/core/kernel/pp_spec.rb9
-rw-r--r--spec/ruby/core/kernel/print_spec.rb16
-rw-r--r--spec/ruby/core/kernel/printf_spec.rb28
-rw-r--r--spec/ruby/core/kernel/private_methods_spec.rb6
-rw-r--r--spec/ruby/core/kernel/proc_spec.rb34
-rw-r--r--spec/ruby/core/kernel/protected_methods_spec.rb6
-rw-r--r--spec/ruby/core/kernel/public_method_spec.rb14
-rw-r--r--spec/ruby/core/kernel/public_methods_spec.rb6
-rw-r--r--spec/ruby/core/kernel/public_send_spec.rb28
-rw-r--r--spec/ruby/core/kernel/putc_spec.rb6
-rw-r--r--spec/ruby/core/kernel/puts_spec.rb4
-rw-r--r--spec/ruby/core/kernel/raise_spec.rb46
-rw-r--r--spec/ruby/core/kernel/rand_spec.rb66
-rw-r--r--spec/ruby/core/kernel/readline_spec.rb4
-rw-r--r--spec/ruby/core/kernel/readlines_spec.rb4
-rw-r--r--spec/ruby/core/kernel/remove_instance_variable_spec.rb23
-rw-r--r--spec/ruby/core/kernel/require_relative_spec.rb136
-rw-r--r--spec/ruby/core/kernel/require_spec.rb28
-rw-r--r--spec/ruby/core/kernel/respond_to_missing_spec.rb4
-rw-r--r--spec/ruby/core/kernel/respond_to_spec.rb9
-rw-r--r--spec/ruby/core/kernel/select_spec.rb6
-rw-r--r--spec/ruby/core/kernel/send_spec.rb8
-rw-r--r--spec/ruby/core/kernel/set_trace_func_spec.rb4
-rw-r--r--spec/ruby/core/kernel/shared/dup_clone.rb94
-rw-r--r--spec/ruby/core/kernel/shared/kind_of.rb23
-rw-r--r--spec/ruby/core/kernel/shared/lambda.rb4
-rw-r--r--spec/ruby/core/kernel/shared/load.rb84
-rw-r--r--spec/ruby/core/kernel/shared/method.rb14
-rw-r--r--spec/ruby/core/kernel/shared/require.rb235
-rw-r--r--spec/ruby/core/kernel/shared/sprintf.rb1010
-rw-r--r--spec/ruby/core/kernel/shared/sprintf_encoding.rb53
-rw-r--r--spec/ruby/core/kernel/shared/then.rb20
-rw-r--r--spec/ruby/core/kernel/singleton_class_spec.rb24
-rw-r--r--spec/ruby/core/kernel/singleton_method_spec.rb2
-rw-r--r--spec/ruby/core/kernel/singleton_methods_spec.rb32
-rw-r--r--spec/ruby/core/kernel/sleep_spec.rb53
-rw-r--r--spec/ruby/core/kernel/spawn_spec.rb8
-rw-r--r--spec/ruby/core/kernel/sprintf_spec.rb16
-rw-r--r--spec/ruby/core/kernel/srand_spec.rb28
-rw-r--r--spec/ruby/core/kernel/sub_spec.rb4
-rw-r--r--spec/ruby/core/kernel/syscall_spec.rb4
-rw-r--r--spec/ruby/core/kernel/system_spec.rb34
-rw-r--r--spec/ruby/core/kernel/taint_spec.rb50
-rw-r--r--spec/ruby/core/kernel/tainted_spec.rb25
-rw-r--r--spec/ruby/core/kernel/tap_spec.rb6
-rw-r--r--spec/ruby/core/kernel/test_spec.rb4
-rw-r--r--spec/ruby/core/kernel/then_spec.rb6
-rw-r--r--spec/ruby/core/kernel/throw_spec.rb16
-rw-r--r--spec/ruby/core/kernel/to_enum_spec.rb2
-rw-r--r--spec/ruby/core/kernel/to_s_spec.rb12
-rw-r--r--spec/ruby/core/kernel/trace_var_spec.rb6
-rw-r--r--spec/ruby/core/kernel/trap_spec.rb7
-rw-r--r--spec/ruby/core/kernel/trust_spec.rb35
-rw-r--r--spec/ruby/core/kernel/untaint_spec.rb35
-rw-r--r--spec/ruby/core/kernel/untrace_var_spec.rb4
-rw-r--r--spec/ruby/core/kernel/untrust_spec.rb34
-rw-r--r--spec/ruby/core/kernel/untrusted_spec.rb38
-rw-r--r--spec/ruby/core/kernel/warn_spec.rb254
-rw-r--r--spec/ruby/core/kernel/yield_self_spec.rb28
-rw-r--r--spec/ruby/core/main/define_method_spec.rb4
-rw-r--r--spec/ruby/core/main/fixtures/classes.rb8
-rw-r--r--spec/ruby/core/main/fixtures/using.rb1
-rw-r--r--spec/ruby/core/main/fixtures/using_in_main.rb5
-rw-r--r--spec/ruby/core/main/fixtures/using_in_method.rb5
-rw-r--r--spec/ruby/core/main/include_spec.rb4
-rw-r--r--spec/ruby/core/main/private_spec.rb49
-rw-r--r--spec/ruby/core/main/public_spec.rb46
-rw-r--r--spec/ruby/core/main/ruby2_keywords_spec.rb9
-rw-r--r--spec/ruby/core/main/to_s_spec.rb2
-rw-r--r--spec/ruby/core/main/using_spec.rb241
-rw-r--r--spec/ruby/core/marshal/dump_spec.rb448
-rw-r--r--spec/ruby/core/marshal/fixtures/classes.rb4
-rw-r--r--spec/ruby/core/marshal/fixtures/marshal_data.rb158
-rw-r--r--spec/ruby/core/marshal/float_spec.rb2
-rw-r--r--spec/ruby/core/marshal/load_spec.rb4
-rw-r--r--spec/ruby/core/marshal/major_version_spec.rb2
-rw-r--r--spec/ruby/core/marshal/minor_version_spec.rb2
-rw-r--r--spec/ruby/core/marshal/restore_spec.rb4
-rw-r--r--spec/ruby/core/marshal/shared/load.rb806
-rw-r--r--spec/ruby/core/matchdata/allocate_spec.rb8
-rw-r--r--spec/ruby/core/matchdata/begin_spec.rb110
-rw-r--r--spec/ruby/core/matchdata/captures_spec.rb10
-rw-r--r--spec/ruby/core/matchdata/dup_spec.rb14
-rw-r--r--spec/ruby/core/matchdata/element_reference_spec.rb40
-rw-r--r--spec/ruby/core/matchdata/end_spec.rb110
-rw-r--r--spec/ruby/core/matchdata/eql_spec.rb6
-rw-r--r--spec/ruby/core/matchdata/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/matchdata/fixtures/classes.rb3
-rw-r--r--spec/ruby/core/matchdata/hash_spec.rb2
-rw-r--r--spec/ruby/core/matchdata/inspect_spec.rb8
-rw-r--r--spec/ruby/core/matchdata/length_spec.rb6
-rw-r--r--spec/ruby/core/matchdata/match_length_spec.rb34
-rw-r--r--spec/ruby/core/matchdata/match_spec.rb34
-rw-r--r--spec/ruby/core/matchdata/named_captures_spec.rb28
-rw-r--r--spec/ruby/core/matchdata/names_spec.rb2
-rw-r--r--spec/ruby/core/matchdata/offset_spec.rb2
-rw-r--r--spec/ruby/core/matchdata/post_match_spec.rb34
-rw-r--r--spec/ruby/core/matchdata/pre_match_spec.rb34
-rw-r--r--spec/ruby/core/matchdata/regexp_spec.rb13
-rw-r--r--spec/ruby/core/matchdata/shared/eql.rb2
-rw-r--r--spec/ruby/core/matchdata/size_spec.rb6
-rw-r--r--spec/ruby/core/matchdata/string_spec.rb15
-rw-r--r--spec/ruby/core/matchdata/to_a_spec.rb10
-rw-r--r--spec/ruby/core/matchdata/to_s_spec.rb10
-rw-r--r--spec/ruby/core/matchdata/values_at_spec.rb73
-rw-r--r--spec/ruby/core/math/acos_spec.rb22
-rw-r--r--spec/ruby/core/math/acosh_spec.rb18
-rw-r--r--spec/ruby/core/math/asin_spec.rb20
-rw-r--r--spec/ruby/core/math/asinh_spec.rb8
-rw-r--r--spec/ruby/core/math/atan2_spec.rb16
-rw-r--r--spec/ruby/core/math/atan_spec.rb8
-rw-r--r--spec/ruby/core/math/atanh_spec.rb6
-rw-r--r--spec/ruby/core/math/cbrt_spec.rb8
-rw-r--r--spec/ruby/core/math/constants_spec.rb4
-rw-r--r--spec/ruby/core/math/cos_spec.rb32
-rw-r--r--spec/ruby/core/math/cosh_spec.rb8
-rw-r--r--spec/ruby/core/math/erf_spec.rb8
-rw-r--r--spec/ruby/core/math/erfc_spec.rb8
-rw-r--r--spec/ruby/core/math/exp_spec.rb8
-rw-r--r--spec/ruby/core/math/frexp_spec.rb8
-rw-r--r--spec/ruby/core/math/gamma_spec.rb6
-rw-r--r--spec/ruby/core/math/hypot_spec.rb8
-rw-r--r--spec/ruby/core/math/ldexp_spec.rb20
-rw-r--r--spec/ruby/core/math/lgamma_spec.rb10
-rw-r--r--spec/ruby/core/math/log10_spec.rb14
-rw-r--r--spec/ruby/core/math/log2_spec.rb14
-rw-r--r--spec/ruby/core/math/log_spec.rb20
-rw-r--r--spec/ruby/core/math/sin_spec.rb8
-rw-r--r--spec/ruby/core/math/sinh_spec.rb8
-rw-r--r--spec/ruby/core/math/sqrt_spec.rb12
-rw-r--r--spec/ruby/core/math/tan_spec.rb14
-rw-r--r--spec/ruby/core/math/tanh_spec.rb8
-rw-r--r--spec/ruby/core/method/arity_spec.rb4
-rw-r--r--spec/ruby/core/method/call_spec.rb8
-rw-r--r--spec/ruby/core/method/case_compare_spec.rb7
-rw-r--r--spec/ruby/core/method/clone_spec.rb4
-rw-r--r--spec/ruby/core/method/compose_spec.rb100
-rw-r--r--spec/ruby/core/method/curry_spec.rb14
-rw-r--r--spec/ruby/core/method/element_reference_spec.rb8
-rw-r--r--spec/ruby/core/method/eql_spec.rb6
-rw-r--r--spec/ruby/core/method/equal_value_spec.rb6
-rw-r--r--spec/ruby/core/method/fixtures/classes.rb62
-rw-r--r--spec/ruby/core/method/hash_spec.rb6
-rw-r--r--spec/ruby/core/method/inspect_spec.rb6
-rw-r--r--spec/ruby/core/method/name_spec.rb4
-rw-r--r--spec/ruby/core/method/original_name_spec.rb22
-rw-r--r--spec/ruby/core/method/owner_spec.rb10
-rw-r--r--spec/ruby/core/method/parameters_spec.rb54
-rw-r--r--spec/ruby/core/method/private_spec.rb21
-rw-r--r--spec/ruby/core/method/protected_spec.rb21
-rw-r--r--spec/ruby/core/method/public_spec.rb21
-rw-r--r--spec/ruby/core/method/receiver_spec.rb4
-rw-r--r--spec/ruby/core/method/shared/call.rb4
-rw-r--r--spec/ruby/core/method/shared/eql.rb4
-rw-r--r--spec/ruby/core/method/shared/to_s.rb57
-rw-r--r--spec/ruby/core/method/source_location_spec.rb28
-rw-r--r--spec/ruby/core/method/super_method_spec.rb25
-rw-r--r--spec/ruby/core/method/to_proc_spec.rb19
-rw-r--r--spec/ruby/core/method/to_s_spec.rb6
-rw-r--r--spec/ruby/core/method/unbind_spec.rb41
-rw-r--r--spec/ruby/core/module/alias_method_spec.rb64
-rw-r--r--spec/ruby/core/module/allocate_spec.rb14
-rw-r--r--spec/ruby/core/module/ancestors_spec.rb4
-rw-r--r--spec/ruby/core/module/append_features_spec.rb26
-rw-r--r--spec/ruby/core/module/attr_accessor_spec.rb60
-rw-r--r--spec/ruby/core/module/attr_reader_spec.rb35
-rw-r--r--spec/ruby/core/module/attr_spec.rb50
-rw-r--r--spec/ruby/core/module/attr_writer_spec.rb45
-rw-r--r--spec/ruby/core/module/autoload_spec.rb682
-rw-r--r--spec/ruby/core/module/case_compare_spec.rb4
-rw-r--r--spec/ruby/core/module/class_eval_spec.rb6
-rw-r--r--spec/ruby/core/module/class_exec_spec.rb6
-rw-r--r--spec/ruby/core/module/class_variable_defined_spec.rb14
-rw-r--r--spec/ruby/core/module/class_variable_get_spec.rb22
-rw-r--r--spec/ruby/core/module/class_variable_set_spec.rb24
-rw-r--r--spec/ruby/core/module/class_variables_spec.rb12
-rw-r--r--spec/ruby/core/module/comparison_spec.rb6
-rw-r--r--spec/ruby/core/module/const_added_spec.rb125
-rw-r--r--spec/ruby/core/module/const_defined_spec.rb55
-rw-r--r--spec/ruby/core/module/const_get_spec.rb91
-rw-r--r--spec/ruby/core/module/const_missing_spec.rb15
-rw-r--r--spec/ruby/core/module/const_set_spec.rb90
-rw-r--r--spec/ruby/core/module/const_source_location_spec.rb230
-rw-r--r--spec/ruby/core/module/constants_spec.rb26
-rw-r--r--spec/ruby/core/module/define_method_spec.rb294
-rw-r--r--spec/ruby/core/module/define_singleton_method_spec.rb6
-rw-r--r--spec/ruby/core/module/deprecate_constant_spec.rb87
-rw-r--r--spec/ruby/core/module/eql_spec.rb8
-rw-r--r--spec/ruby/core/module/equal_spec.rb8
-rw-r--r--spec/ruby/core/module/equal_value_spec.rb8
-rw-r--r--spec/ruby/core/module/extend_object_spec.rb20
-rw-r--r--spec/ruby/core/module/extended_spec.rb4
-rw-r--r--spec/ruby/core/module/fixtures/autoload_callback.rb2
-rw-r--r--spec/ruby/core/module/fixtures/autoload_during_autoload.rb7
-rw-r--r--spec/ruby/core/module/fixtures/autoload_during_require.rb4
-rw-r--r--spec/ruby/core/module/fixtures/autoload_during_require_current_file.rb5
-rw-r--r--spec/ruby/core/module/fixtures/autoload_exception.rb3
-rw-r--r--spec/ruby/core/module/fixtures/autoload_location.rb3
-rw-r--r--spec/ruby/core/module/fixtures/autoload_nested.rb8
-rw-r--r--spec/ruby/core/module/fixtures/autoload_o.rb1
-rw-r--r--spec/ruby/core/module/fixtures/autoload_overridden.rb3
-rw-r--r--spec/ruby/core/module/fixtures/autoload_raise.rb2
-rw-r--r--spec/ruby/core/module/fixtures/autoload_required_directly.rb7
-rw-r--r--spec/ruby/core/module/fixtures/autoload_required_directly_nested.rb1
-rw-r--r--spec/ruby/core/module/fixtures/autoload_required_directly_no_constant.rb2
-rw-r--r--spec/ruby/core/module/fixtures/autoload_scope.rb8
-rw-r--r--spec/ruby/core/module/fixtures/autoload_self_during_require.rb5
-rw-r--r--spec/ruby/core/module/fixtures/autoload_subclass.rb4
-rw-r--r--spec/ruby/core/module/fixtures/classes.rb22
-rw-r--r--spec/ruby/core/module/fixtures/constants_autoload.rb6
-rw-r--r--spec/ruby/core/module/fixtures/constants_autoload_a.rb2
-rw-r--r--spec/ruby/core/module/fixtures/constants_autoload_b.rb2
-rw-r--r--spec/ruby/core/module/fixtures/constants_autoload_c.rb3
-rw-r--r--spec/ruby/core/module/fixtures/constants_autoload_d.rb4
-rw-r--r--spec/ruby/core/module/fixtures/multi/foo.rb6
-rw-r--r--spec/ruby/core/module/fixtures/multi/foo/bar_baz.rb11
-rw-r--r--spec/ruby/core/module/fixtures/refine.rb12
-rw-r--r--spec/ruby/core/module/freeze_spec.rb4
-rw-r--r--spec/ruby/core/module/gt_spec.rb6
-rw-r--r--spec/ruby/core/module/gte_spec.rb6
-rw-r--r--spec/ruby/core/module/include_spec.rb361
-rw-r--r--spec/ruby/core/module/included_modules_spec.rb6
-rw-r--r--spec/ruby/core/module/included_spec.rb6
-rw-r--r--spec/ruby/core/module/initialize_copy_spec.rb10
-rw-r--r--spec/ruby/core/module/initialize_spec.rb4
-rw-r--r--spec/ruby/core/module/instance_method_spec.rb50
-rw-r--r--spec/ruby/core/module/instance_methods_spec.rb4
-rw-r--r--spec/ruby/core/module/lt_spec.rb6
-rw-r--r--spec/ruby/core/module/lte_spec.rb6
-rw-r--r--spec/ruby/core/module/method_added_spec.rb96
-rw-r--r--spec/ruby/core/module/method_defined_spec.rb59
-rw-r--r--spec/ruby/core/module/method_removed_spec.rb4
-rw-r--r--spec/ruby/core/module/method_undefined_spec.rb4
-rw-r--r--spec/ruby/core/module/module_eval_spec.rb6
-rw-r--r--spec/ruby/core/module/module_exec_spec.rb6
-rw-r--r--spec/ruby/core/module/module_function_spec.rb54
-rw-r--r--spec/ruby/core/module/name_spec.rb76
-rw-r--r--spec/ruby/core/module/nesting_spec.rb4
-rw-r--r--spec/ruby/core/module/new_spec.rb4
-rw-r--r--spec/ruby/core/module/prepend_features_spec.rb20
-rw-r--r--spec/ruby/core/module/prepend_spec.rb470
-rw-r--r--spec/ruby/core/module/prepended_spec.rb2
-rw-r--r--spec/ruby/core/module/private_class_method_spec.rb36
-rw-r--r--spec/ruby/core/module/private_constant_spec.rb10
-rw-r--r--spec/ruby/core/module/private_instance_methods_spec.rb6
-rw-r--r--spec/ruby/core/module/private_method_defined_spec.rb64
-rw-r--r--spec/ruby/core/module/private_spec.rb36
-rw-r--r--spec/ruby/core/module/protected_instance_methods_spec.rb6
-rw-r--r--spec/ruby/core/module/protected_method_defined_spec.rb64
-rw-r--r--spec/ruby/core/module/protected_spec.rb35
-rw-r--r--spec/ruby/core/module/public_class_method_spec.rb34
-rw-r--r--spec/ruby/core/module/public_constant_spec.rb4
-rw-r--r--spec/ruby/core/module/public_instance_method_spec.rb14
-rw-r--r--spec/ruby/core/module/public_instance_methods_spec.rb6
-rw-r--r--spec/ruby/core/module/public_method_defined_spec.rb16
-rw-r--r--spec/ruby/core/module/public_spec.rb33
-rw-r--r--spec/ruby/core/module/refine_spec.rb796
-rw-r--r--spec/ruby/core/module/remove_class_variable_spec.rb12
-rw-r--r--spec/ruby/core/module/remove_const_spec.rb51
-rw-r--r--spec/ruby/core/module/remove_method_spec.rb63
-rw-r--r--spec/ruby/core/module/ruby2_keywords_spec.rb319
-rw-r--r--spec/ruby/core/module/shared/class_eval.rb71
-rw-r--r--spec/ruby/core/module/shared/class_exec.rb4
-rw-r--r--spec/ruby/core/module/shared/set_visibility.rb51
-rw-r--r--spec/ruby/core/module/singleton_class_spec.rb12
-rw-r--r--spec/ruby/core/module/to_s_spec.rb58
-rw-r--r--spec/ruby/core/module/undef_method_spec.rb70
-rw-r--r--spec/ruby/core/module/using_spec.rb102
-rw-r--r--spec/ruby/core/mutex/lock_spec.rb21
-rw-r--r--spec/ruby/core/mutex/locked_spec.rb2
-rw-r--r--spec/ruby/core/mutex/owned_spec.rb14
-rw-r--r--spec/ruby/core/mutex/sleep_spec.rb38
-rw-r--r--spec/ruby/core/mutex/synchronize_spec.rb43
-rw-r--r--spec/ruby/core/mutex/try_lock_spec.rb2
-rw-r--r--spec/ruby/core/mutex/unlock_spec.rb10
-rw-r--r--spec/ruby/core/nil/and_spec.rb2
-rw-r--r--spec/ruby/core/nil/case_compare_spec.rb13
-rw-r--r--spec/ruby/core/nil/dup_spec.rb10
-rw-r--r--spec/ruby/core/nil/inspect_spec.rb2
-rw-r--r--spec/ruby/core/nil/match_spec.rb21
-rw-r--r--spec/ruby/core/nil/nil_spec.rb4
-rw-r--r--spec/ruby/core/nil/nilclass_spec.rb6
-rw-r--r--spec/ruby/core/nil/or_spec.rb2
-rw-r--r--spec/ruby/core/nil/rationalize_spec.rb6
-rw-r--r--spec/ruby/core/nil/to_a_spec.rb2
-rw-r--r--spec/ruby/core/nil/to_c_spec.rb2
-rw-r--r--spec/ruby/core/nil/to_f_spec.rb2
-rw-r--r--spec/ruby/core/nil/to_h_spec.rb2
-rw-r--r--spec/ruby/core/nil/to_i_spec.rb4
-rw-r--r--spec/ruby/core/nil/to_r_spec.rb2
-rw-r--r--spec/ruby/core/nil/to_s_spec.rb10
-rw-r--r--spec/ruby/core/nil/xor_spec.rb2
-rw-r--r--spec/ruby/core/numeric/abs2_spec.rb2
-rw-r--r--spec/ruby/core/numeric/abs_spec.rb5
-rw-r--r--spec/ruby/core/numeric/angle_spec.rb6
-rw-r--r--spec/ruby/core/numeric/arg_spec.rb6
-rw-r--r--spec/ruby/core/numeric/ceil_spec.rb4
-rw-r--r--spec/ruby/core/numeric/clone_spec.rb32
-rw-r--r--spec/ruby/core/numeric/coerce_spec.rb49
-rw-r--r--spec/ruby/core/numeric/comparison_spec.rb4
-rw-r--r--spec/ruby/core/numeric/conj_spec.rb6
-rw-r--r--spec/ruby/core/numeric/conjugate_spec.rb6
-rw-r--r--spec/ruby/core/numeric/denominator_spec.rb2
-rw-r--r--spec/ruby/core/numeric/div_spec.rb10
-rw-r--r--spec/ruby/core/numeric/divmod_spec.rb4
-rw-r--r--spec/ruby/core/numeric/dup_spec.rb16
-rw-r--r--spec/ruby/core/numeric/eql_spec.rb4
-rw-r--r--spec/ruby/core/numeric/fdiv_spec.rb4
-rw-r--r--spec/ruby/core/numeric/finite_spec.rb12
-rw-r--r--spec/ruby/core/numeric/floor_spec.rb4
-rw-r--r--spec/ruby/core/numeric/i_spec.rb2
-rw-r--r--spec/ruby/core/numeric/imag_spec.rb6
-rw-r--r--spec/ruby/core/numeric/imaginary_spec.rb6
-rw-r--r--spec/ruby/core/numeric/infinite_spec.rb12
-rw-r--r--spec/ruby/core/numeric/integer_spec.rb6
-rw-r--r--spec/ruby/core/numeric/magnitude_spec.rb5
-rw-r--r--spec/ruby/core/numeric/modulo_spec.rb4
-rw-r--r--spec/ruby/core/numeric/negative_spec.rb60
-rw-r--r--spec/ruby/core/numeric/nonzero_spec.rb4
-rw-r--r--spec/ruby/core/numeric/numerator_spec.rb2
-rw-r--r--spec/ruby/core/numeric/numeric_spec.rb2
-rw-r--r--spec/ruby/core/numeric/phase_spec.rb6
-rw-r--r--spec/ruby/core/numeric/polar_spec.rb50
-rw-r--r--spec/ruby/core/numeric/positive_spec.rb60
-rw-r--r--spec/ruby/core/numeric/quo_spec.rb33
-rw-r--r--spec/ruby/core/numeric/real_spec.rb34
-rw-r--r--spec/ruby/core/numeric/rect_spec.rb6
-rw-r--r--spec/ruby/core/numeric/rectangular_spec.rb6
-rw-r--r--spec/ruby/core/numeric/remainder_spec.rb7
-rw-r--r--spec/ruby/core/numeric/round_spec.rb4
-rw-r--r--spec/ruby/core/numeric/shared/abs.rb4
-rw-r--r--spec/ruby/core/numeric/shared/arg.rb38
-rw-r--r--spec/ruby/core/numeric/shared/conj.rb20
-rw-r--r--spec/ruby/core/numeric/shared/imag.rb26
-rw-r--r--spec/ruby/core/numeric/shared/rect.rb4
-rw-r--r--spec/ruby/core/numeric/shared/step.rb291
-rw-r--r--spec/ruby/core/numeric/singleton_method_added_spec.rb12
-rw-r--r--spec/ruby/core/numeric/step_spec.rb155
-rw-r--r--spec/ruby/core/numeric/to_c_spec.rb2
-rw-r--r--spec/ruby/core/numeric/to_int_spec.rb4
-rw-r--r--spec/ruby/core/numeric/truncate_spec.rb4
-rw-r--r--spec/ruby/core/numeric/uminus_spec.rb2
-rw-r--r--spec/ruby/core/numeric/uplus_spec.rb4
-rw-r--r--spec/ruby/core/numeric/zero_spec.rb8
-rw-r--r--spec/ruby/core/objectspace/_id2ref_spec.rb43
-rw-r--r--spec/ruby/core/objectspace/add_finalizer_spec.rb2
-rw-r--r--spec/ruby/core/objectspace/call_finalizer_spec.rb2
-rw-r--r--spec/ruby/core/objectspace/count_objects_spec.rb2
-rw-r--r--spec/ruby/core/objectspace/define_finalizer_spec.rb219
-rw-r--r--spec/ruby/core/objectspace/each_object_spec.rb26
-rw-r--r--spec/ruby/core/objectspace/finalizers_spec.rb2
-rw-r--r--spec/ruby/core/objectspace/fixtures/classes.rb2
-rw-r--r--spec/ruby/core/objectspace/garbage_collect_spec.rb10
-rw-r--r--spec/ruby/core/objectspace/remove_finalizer_spec.rb2
-rw-r--r--spec/ruby/core/objectspace/undefine_finalizer_spec.rb2
-rw-r--r--spec/ruby/core/objectspace/weakkeymap/delete_spec.rb40
-rw-r--r--spec/ruby/core/objectspace/weakkeymap/element_reference_spec.rb26
-rw-r--r--spec/ruby/core/objectspace/weakkeymap/element_set_spec.rb71
-rw-r--r--spec/ruby/core/objectspace/weakkeymap/getkey_spec.rb14
-rw-r--r--spec/ruby/core/objectspace/weakkeymap/inspect_spec.rb17
-rw-r--r--spec/ruby/core/objectspace/weakkeymap/key_spec.rb33
-rw-r--r--spec/ruby/core/objectspace/weakmap/delete_spec.rb30
-rw-r--r--spec/ruby/core/objectspace/weakmap/each_key_spec.rb11
-rw-r--r--spec/ruby/core/objectspace/weakmap/each_pair_spec.rb11
-rw-r--r--spec/ruby/core/objectspace/weakmap/each_spec.rb11
-rw-r--r--spec/ruby/core/objectspace/weakmap/each_value_spec.rb11
-rw-r--r--spec/ruby/core/objectspace/weakmap/element_reference_spec.rb24
-rw-r--r--spec/ruby/core/objectspace/weakmap/element_set_spec.rb38
-rw-r--r--spec/ruby/core/objectspace/weakmap/include_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/inspect_spec.rb25
-rw-r--r--spec/ruby/core/objectspace/weakmap/key_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/keys_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/length_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/member_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/shared/each.rb10
-rw-r--r--spec/ruby/core/objectspace/weakmap/shared/include.rb30
-rw-r--r--spec/ruby/core/objectspace/weakmap/shared/members.rb14
-rw-r--r--spec/ruby/core/objectspace/weakmap/shared/size.rb14
-rw-r--r--spec/ruby/core/objectspace/weakmap/size_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap/values_spec.rb6
-rw-r--r--spec/ruby/core/objectspace/weakmap_spec.rb12
-rw-r--r--spec/ruby/core/proc/allocate_spec.rb4
-rw-r--r--spec/ruby/core/proc/arity_spec.rb2
-rw-r--r--spec/ruby/core/proc/binding_spec.rb6
-rw-r--r--spec/ruby/core/proc/block_pass_spec.rb26
-rw-r--r--spec/ruby/core/proc/call_spec.rb6
-rw-r--r--spec/ruby/core/proc/case_compare_spec.rb6
-rw-r--r--spec/ruby/core/proc/clone_spec.rb6
-rw-r--r--spec/ruby/core/proc/compose_spec.rb162
-rw-r--r--spec/ruby/core/proc/curry_spec.rb62
-rw-r--r--spec/ruby/core/proc/dup_spec.rb6
-rw-r--r--spec/ruby/core/proc/element_reference_spec.rb17
-rw-r--r--spec/ruby/core/proc/eql_spec.rb12
-rw-r--r--spec/ruby/core/proc/equal_value_spec.rb12
-rw-r--r--spec/ruby/core/proc/fixtures/proc_aref.rb9
-rw-r--r--spec/ruby/core/proc/fixtures/proc_aref_frozen.rb10
-rw-r--r--spec/ruby/core/proc/fixtures/source_location.rb8
-rw-r--r--spec/ruby/core/proc/hash_spec.rb6
-rw-r--r--spec/ruby/core/proc/inspect_spec.rb4
-rw-r--r--spec/ruby/core/proc/lambda_spec.rb20
-rw-r--r--spec/ruby/core/proc/new_spec.rb57
-rw-r--r--spec/ruby/core/proc/parameters_spec.rb89
-rw-r--r--spec/ruby/core/proc/ruby2_keywords_spec.rb78
-rw-r--r--spec/ruby/core/proc/shared/call.rb33
-rw-r--r--spec/ruby/core/proc/shared/call_arguments.rb24
-rw-r--r--spec/ruby/core/proc/shared/compose.rb22
-rw-r--r--spec/ruby/core/proc/shared/dup.rb2
-rw-r--r--spec/ruby/core/proc/shared/equal.rb38
-rw-r--r--spec/ruby/core/proc/shared/to_s.rb47
-rw-r--r--spec/ruby/core/proc/source_location_spec.rb38
-rw-r--r--spec/ruby/core/proc/to_proc_spec.rb4
-rw-r--r--spec/ruby/core/proc/to_s_spec.rb4
-rw-r--r--spec/ruby/core/proc/yield_spec.rb6
-rw-r--r--spec/ruby/core/process/_fork_spec.rb24
-rw-r--r--spec/ruby/core/process/abort_spec.rb4
-rw-r--r--spec/ruby/core/process/argv0_spec.rb25
-rw-r--r--spec/ruby/core/process/clock_getres_spec.rb33
-rw-r--r--spec/ruby/core/process/clock_gettime_spec.rb152
-rw-r--r--spec/ruby/core/process/constants_spec.rb23
-rw-r--r--spec/ruby/core/process/daemon_spec.rb14
-rw-r--r--spec/ruby/core/process/detach_spec.rb33
-rw-r--r--spec/ruby/core/process/egid_spec.rb43
-rw-r--r--spec/ruby/core/process/euid_spec.rb45
-rw-r--r--spec/ruby/core/process/exec_spec.rb69
-rw-r--r--spec/ruby/core/process/exit_spec.rb6
-rw-r--r--spec/ruby/core/process/fixtures/argv0.rb6
-rw-r--r--spec/ruby/core/process/fixtures/clocks.rb18
-rw-r--r--spec/ruby/core/process/fixtures/common.rb8
-rw-r--r--spec/ruby/core/process/fixtures/in.txt1
-rw-r--r--spec/ruby/core/process/fixtures/map_fd.rb3
-rw-r--r--spec/ruby/core/process/fork_spec.rb4
-rw-r--r--spec/ruby/core/process/getpgid_spec.rb2
-rw-r--r--spec/ruby/core/process/getpgrp_spec.rb2
-rw-r--r--spec/ruby/core/process/getpriority_spec.rb10
-rw-r--r--spec/ruby/core/process/getrlimit_spec.rb35
-rw-r--r--spec/ruby/core/process/gid/change_privilege_spec.rb2
-rw-r--r--spec/ruby/core/process/gid/eid_spec.rb2
-rw-r--r--spec/ruby/core/process/gid/grant_privilege_spec.rb2
-rw-r--r--spec/ruby/core/process/gid/re_exchange_spec.rb2
-rw-r--r--spec/ruby/core/process/gid/re_exchangeable_spec.rb2
-rw-r--r--spec/ruby/core/process/gid/rid_spec.rb2
-rw-r--r--spec/ruby/core/process/gid/sid_available_spec.rb2
-rw-r--r--spec/ruby/core/process/gid/switch_spec.rb2
-rw-r--r--spec/ruby/core/process/gid_spec.rb2
-rw-r--r--spec/ruby/core/process/groups_spec.rb19
-rw-r--r--spec/ruby/core/process/initgroups_spec.rb30
-rw-r--r--spec/ruby/core/process/kill_spec.rb20
-rw-r--r--spec/ruby/core/process/last_status_spec.rb18
-rw-r--r--spec/ruby/core/process/maxgroups_spec.rb4
-rw-r--r--spec/ruby/core/process/pid_spec.rb4
-rw-r--r--spec/ruby/core/process/ppid_spec.rb20
-rw-r--r--spec/ruby/core/process/set_proctitle_spec.rb2
-rw-r--r--spec/ruby/core/process/setpgid_spec.rb5
-rw-r--r--spec/ruby/core/process/setpgrp_spec.rb2
-rw-r--r--spec/ruby/core/process/setpriority_spec.rb33
-rw-r--r--spec/ruby/core/process/setrlimit_spec.rb29
-rw-r--r--spec/ruby/core/process/setsid_spec.rb39
-rw-r--r--spec/ruby/core/process/spawn_spec.rb408
-rw-r--r--spec/ruby/core/process/status/bit_and_spec.rb2
-rw-r--r--spec/ruby/core/process/status/coredump_spec.rb2
-rw-r--r--spec/ruby/core/process/status/equal_value_spec.rb14
-rw-r--r--spec/ruby/core/process/status/exited_spec.rb9
-rw-r--r--spec/ruby/core/process/status/exitstatus_spec.rb18
-rw-r--r--spec/ruby/core/process/status/inspect_spec.rb2
-rw-r--r--spec/ruby/core/process/status/pid_spec.rb2
-rw-r--r--spec/ruby/core/process/status/right_shift_spec.rb2
-rw-r--r--spec/ruby/core/process/status/signaled_spec.rb8
-rw-r--r--spec/ruby/core/process/status/stopped_spec.rb2
-rw-r--r--spec/ruby/core/process/status/stopsig_spec.rb2
-rw-r--r--spec/ruby/core/process/status/success_spec.rb16
-rw-r--r--spec/ruby/core/process/status/termsig_spec.rb24
-rw-r--r--spec/ruby/core/process/status/to_i_spec.rb12
-rw-r--r--spec/ruby/core/process/status/to_int_spec.rb2
-rw-r--r--spec/ruby/core/process/status/to_s_spec.rb2
-rw-r--r--spec/ruby/core/process/status/wait_spec.rb102
-rw-r--r--spec/ruby/core/process/sys/getegid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/geteuid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/getgid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/getuid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/issetugid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/setegid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/seteuid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/setgid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/setregid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/setresgid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/setresuid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/setreuid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/setrgid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/setruid_spec.rb2
-rw-r--r--spec/ruby/core/process/sys/setuid_spec.rb2
-rw-r--r--spec/ruby/core/process/times_spec.rb57
-rw-r--r--spec/ruby/core/process/uid/change_privilege_spec.rb2
-rw-r--r--spec/ruby/core/process/uid/eid_spec.rb2
-rw-r--r--spec/ruby/core/process/uid/grant_privilege_spec.rb2
-rw-r--r--spec/ruby/core/process/uid/re_exchange_spec.rb2
-rw-r--r--spec/ruby/core/process/uid/re_exchangeable_spec.rb2
-rw-r--r--spec/ruby/core/process/uid/rid_spec.rb2
-rw-r--r--spec/ruby/core/process/uid/sid_available_spec.rb2
-rw-r--r--spec/ruby/core/process/uid/switch_spec.rb2
-rw-r--r--spec/ruby/core/process/uid_spec.rb63
-rw-r--r--spec/ruby/core/process/wait2_spec.rb21
-rw-r--r--spec/ruby/core/process/wait_spec.rb21
-rw-r--r--spec/ruby/core/process/waitall_spec.rb6
-rw-r--r--spec/ruby/core/process/waitpid2_spec.rb2
-rw-r--r--spec/ruby/core/process/waitpid_spec.rb4
-rw-r--r--spec/ruby/core/queue/append_spec.rb6
-rw-r--r--spec/ruby/core/queue/clear_spec.rb6
-rw-r--r--spec/ruby/core/queue/close_spec.rb6
-rw-r--r--spec/ruby/core/queue/closed_spec.rb6
-rw-r--r--spec/ruby/core/queue/deq_spec.rb6
-rw-r--r--spec/ruby/core/queue/empty_spec.rb6
-rw-r--r--spec/ruby/core/queue/enq_spec.rb6
-rw-r--r--spec/ruby/core/queue/initialize_spec.rb62
-rw-r--r--spec/ruby/core/queue/length_spec.rb6
-rw-r--r--spec/ruby/core/queue/num_waiting_spec.rb6
-rw-r--r--spec/ruby/core/queue/pop_spec.rb6
-rw-r--r--spec/ruby/core/queue/push_spec.rb6
-rw-r--r--spec/ruby/core/queue/shift_spec.rb6
-rw-r--r--spec/ruby/core/queue/size_spec.rb6
-rw-r--r--spec/ruby/core/random/bytes_spec.rb23
-rw-r--r--spec/ruby/core/random/default_spec.rb44
-rw-r--r--spec/ruby/core/random/equal_value_spec.rb2
-rw-r--r--spec/ruby/core/random/fixtures/classes.rb15
-rw-r--r--spec/ruby/core/random/new_seed_spec.rb6
-rw-r--r--spec/ruby/core/random/new_spec.rb5
-rw-r--r--spec/ruby/core/random/rand_spec.rb42
-rw-r--r--spec/ruby/core/random/random_number_spec.rb8
-rw-r--r--spec/ruby/core/random/raw_seed_spec.rb9
-rw-r--r--spec/ruby/core/random/seed_spec.rb2
-rw-r--r--spec/ruby/core/random/shared/bytes.rb17
-rw-r--r--spec/ruby/core/random/shared/rand.rb9
-rw-r--r--spec/ruby/core/random/shared/urandom.rb23
-rw-r--r--spec/ruby/core/random/srand_spec.rb2
-rw-r--r--spec/ruby/core/random/urandom_spec.rb28
-rw-r--r--spec/ruby/core/range/begin_spec.rb6
-rw-r--r--spec/ruby/core/range/bsearch_spec.rb315
-rw-r--r--spec/ruby/core/range/case_compare_spec.rb22
-rw-r--r--spec/ruby/core/range/clone_spec.rb26
-rw-r--r--spec/ruby/core/range/count_spec.rb12
-rw-r--r--spec/ruby/core/range/cover_spec.rb9
-rw-r--r--spec/ruby/core/range/dup_spec.rb16
-rw-r--r--spec/ruby/core/range/each_spec.rb62
-rw-r--r--spec/ruby/core/range/end_spec.rb6
-rw-r--r--spec/ruby/core/range/eql_spec.rb8
-rw-r--r--spec/ruby/core/range/equal_value_spec.rb16
-rw-r--r--spec/ruby/core/range/exclude_end_spec.rb22
-rw-r--r--spec/ruby/core/range/first_spec.rb18
-rw-r--r--spec/ruby/core/range/fixtures/classes.rb25
-rw-r--r--spec/ruby/core/range/frozen_spec.rb27
-rw-r--r--spec/ruby/core/range/hash_spec.rb12
-rw-r--r--spec/ruby/core/range/include_spec.rb10
-rw-r--r--spec/ruby/core/range/initialize_spec.rb31
-rw-r--r--spec/ruby/core/range/inspect_spec.rb21
-rw-r--r--spec/ruby/core/range/last_spec.rb24
-rw-r--r--spec/ruby/core/range/max_spec.rb27
-rw-r--r--spec/ruby/core/range/member_spec.rb10
-rw-r--r--spec/ruby/core/range/min_spec.rb15
-rw-r--r--spec/ruby/core/range/minmax_spec.rb132
-rw-r--r--spec/ruby/core/range/new_spec.rb53
-rw-r--r--spec/ruby/core/range/percent_spec.rb16
-rw-r--r--spec/ruby/core/range/range_spec.rb2
-rw-r--r--spec/ruby/core/range/shared/cover.rb106
-rw-r--r--spec/ruby/core/range/shared/cover_and_include.rb18
-rw-r--r--spec/ruby/core/range/shared/equal_value.rb8
-rw-r--r--spec/ruby/core/range/shared/include.rb6
-rw-r--r--spec/ruby/core/range/size_spec.rb36
-rw-r--r--spec/ruby/core/range/step_spec.rb260
-rw-r--r--spec/ruby/core/range/to_a_spec.rb21
-rw-r--r--spec/ruby/core/range/to_s_spec.rb16
-rw-r--r--spec/ruby/core/rational/abs_spec.rb5
-rw-r--r--spec/ruby/core/rational/ceil_spec.rb5
-rw-r--r--spec/ruby/core/rational/coerce_spec.rb5
-rw-r--r--spec/ruby/core/rational/comparison_spec.rb16
-rw-r--r--spec/ruby/core/rational/denominator_spec.rb5
-rw-r--r--spec/ruby/core/rational/div_spec.rb11
-rw-r--r--spec/ruby/core/rational/divide_spec.rb13
-rw-r--r--spec/ruby/core/rational/divmod_spec.rb9
-rw-r--r--spec/ruby/core/rational/equal_value_spec.rb11
-rw-r--r--spec/ruby/core/rational/exponent_spec.rb5
-rw-r--r--spec/ruby/core/rational/fdiv_spec.rb5
-rw-r--r--spec/ruby/core/rational/floor_spec.rb5
-rw-r--r--spec/ruby/core/rational/hash_spec.rb5
-rw-r--r--spec/ruby/core/rational/inspect_spec.rb5
-rw-r--r--spec/ruby/core/rational/integer_spec.rb8
-rw-r--r--spec/ruby/core/rational/magnitude_spec.rb5
-rw-r--r--spec/ruby/core/rational/marshal_dump_spec.rb2
-rw-r--r--spec/ruby/core/rational/minus_spec.rb50
-rw-r--r--spec/ruby/core/rational/modulo_spec.rb5
-rw-r--r--spec/ruby/core/rational/multiply_spec.rb13
-rw-r--r--spec/ruby/core/rational/numerator_spec.rb5
-rw-r--r--spec/ruby/core/rational/plus_spec.rb13
-rw-r--r--spec/ruby/core/rational/quo_spec.rb5
-rw-r--r--spec/ruby/core/rational/rational_spec.rb6
-rw-r--r--spec/ruby/core/rational/rationalize_spec.rb6
-rw-r--r--spec/ruby/core/rational/remainder_spec.rb5
-rw-r--r--spec/ruby/core/rational/round_spec.rb5
-rw-r--r--spec/ruby/core/rational/to_f_spec.rb5
-rw-r--r--spec/ruby/core/rational/to_i_spec.rb5
-rw-r--r--spec/ruby/core/rational/to_r_spec.rb9
-rw-r--r--spec/ruby/core/rational/to_s_spec.rb5
-rw-r--r--spec/ruby/core/rational/truncate_spec.rb5
-rw-r--r--spec/ruby/core/rational/zero_spec.rb1
-rw-r--r--spec/ruby/core/refinement/append_features_spec.rb21
-rw-r--r--spec/ruby/core/refinement/extend_object_spec.rb21
-rw-r--r--spec/ruby/core/refinement/fixtures/classes.rb10
-rw-r--r--spec/ruby/core/refinement/import_methods_spec.rb269
-rw-r--r--spec/ruby/core/refinement/include_spec.rb27
-rw-r--r--spec/ruby/core/refinement/prepend_features_spec.rb21
-rw-r--r--spec/ruby/core/refinement/prepend_spec.rb27
-rw-r--r--spec/ruby/core/regexp/case_compare_spec.rb14
-rw-r--r--spec/ruby/core/regexp/casefold_spec.rb6
-rw-r--r--spec/ruby/core/regexp/compile_spec.rb19
-rw-r--r--spec/ruby/core/regexp/encoding_spec.rb10
-rw-r--r--spec/ruby/core/regexp/eql_spec.rb4
-rw-r--r--spec/ruby/core/regexp/equal_value_spec.rb4
-rw-r--r--spec/ruby/core/regexp/escape_spec.rb4
-rw-r--r--spec/ruby/core/regexp/fixed_encoding_spec.rb2
-rw-r--r--spec/ruby/core/regexp/hash_spec.rb2
-rw-r--r--spec/ruby/core/regexp/initialize_spec.rb18
-rw-r--r--spec/ruby/core/regexp/inspect_spec.rb2
-rw-r--r--spec/ruby/core/regexp/last_match_spec.rb46
-rw-r--r--spec/ruby/core/regexp/match_spec.rb86
-rw-r--r--spec/ruby/core/regexp/named_captures_spec.rb2
-rw-r--r--spec/ruby/core/regexp/names_spec.rb2
-rw-r--r--spec/ruby/core/regexp/new_spec.rb27
-rw-r--r--spec/ruby/core/regexp/options_spec.rb10
-rw-r--r--spec/ruby/core/regexp/quote_spec.rb4
-rw-r--r--spec/ruby/core/regexp/shared/new.rb613
-rw-r--r--spec/ruby/core/regexp/shared/new_ascii.rb464
-rw-r--r--spec/ruby/core/regexp/shared/new_ascii_8bit.rb553
-rw-r--r--spec/ruby/core/regexp/shared/quote.rb16
-rw-r--r--spec/ruby/core/regexp/source_spec.rb24
-rw-r--r--spec/ruby/core/regexp/timeout_spec.rb35
-rw-r--r--spec/ruby/core/regexp/to_s_spec.rb2
-rw-r--r--spec/ruby/core/regexp/try_convert_spec.rb8
-rw-r--r--spec/ruby/core/regexp/union_spec.rb40
-rw-r--r--spec/ruby/core/signal/fixtures/trap_all.rb15
-rw-r--r--spec/ruby/core/signal/list_spec.rb6
-rw-r--r--spec/ruby/core/signal/signame_spec.rb21
-rw-r--r--spec/ruby/core/signal/trap_spec.rb224
-rw-r--r--spec/ruby/core/sizedqueue/append_spec.rb11
-rw-r--r--spec/ruby/core/sizedqueue/clear_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/close_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/closed_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/deq_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/empty_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/enq_spec.rb11
-rw-r--r--spec/ruby/core/sizedqueue/length_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/max_spec.rb10
-rw-r--r--spec/ruby/core/sizedqueue/new_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/num_waiting_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/pop_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/push_spec.rb11
-rw-r--r--spec/ruby/core/sizedqueue/shift_spec.rb6
-rw-r--r--spec/ruby/core/sizedqueue/size_spec.rb6
-rw-r--r--spec/ruby/core/string/allocate_spec.rb4
-rw-r--r--spec/ruby/core/string/append_spec.rb12
-rw-r--r--spec/ruby/core/string/ascii_only_spec.rb130
-rw-r--r--spec/ruby/core/string/b_spec.rb27
-rw-r--r--spec/ruby/core/string/bytes_spec.rb34
-rw-r--r--spec/ruby/core/string/bytesize_spec.rb52
-rw-r--r--spec/ruby/core/string/byteslice_spec.rb26
-rw-r--r--spec/ruby/core/string/capitalize_spec.rb190
-rw-r--r--spec/ruby/core/string/case_compare_spec.rb10
-rw-r--r--spec/ruby/core/string/casecmp_spec.rb134
-rw-r--r--spec/ruby/core/string/center_spec.rb99
-rw-r--r--spec/ruby/core/string/chars_spec.rb15
-rw-r--r--spec/ruby/core/string/chomp_spec.rb189
-rw-r--r--spec/ruby/core/string/chop_spec.rb74
-rw-r--r--spec/ruby/core/string/chr_spec.rb82
-rw-r--r--spec/ruby/core/string/clear_spec.rb60
-rw-r--r--spec/ruby/core/string/clone_spec.rb9
-rw-r--r--spec/ruby/core/string/codepoints_spec.rb26
-rw-r--r--spec/ruby/core/string/comparison_spec.rb8
-rw-r--r--spec/ruby/core/string/concat_spec.rb37
-rw-r--r--spec/ruby/core/string/count_spec.rb16
-rw-r--r--spec/ruby/core/string/crypt_spec.rb135
-rw-r--r--spec/ruby/core/string/dedup_spec.rb8
-rw-r--r--spec/ruby/core/string/delete_prefix_spec.rb128
-rw-r--r--spec/ruby/core/string/delete_spec.rb47
-rw-r--r--spec/ruby/core/string/delete_suffix_spec.rb128
-rw-r--r--spec/ruby/core/string/downcase_spec.rb189
-rw-r--r--spec/ruby/core/string/dump_spec.rb152
-rw-r--r--spec/ruby/core/string/dup_spec.rb23
-rw-r--r--spec/ruby/core/string/each_byte_spec.rb4
-rw-r--r--spec/ruby/core/string/each_char_spec.rb9
-rw-r--r--spec/ruby/core/string/each_codepoint_spec.rb14
-rw-r--r--spec/ruby/core/string/each_grapheme_cluster_spec.rb18
-rw-r--r--spec/ruby/core/string/each_line_spec.rb12
-rw-r--r--spec/ruby/core/string/element_reference_spec.rb6
-rw-r--r--spec/ruby/core/string/element_set_spec.rb458
-rw-r--r--spec/ruby/core/string/empty_spec.rb14
-rw-r--r--spec/ruby/core/string/encode_spec.rb293
-rw-r--r--spec/ruby/core/string/encoding_spec.rb371
-rw-r--r--spec/ruby/core/string/end_with_spec.rb50
-rw-r--r--spec/ruby/core/string/eql_spec.rb6
-rw-r--r--spec/ruby/core/string/equal_value_spec.rb10
-rw-r--r--spec/ruby/core/string/fixtures/classes.rb13
-rw-r--r--spec/ruby/core/string/fixtures/iso-8859-9-encoding.rb2
-rw-r--r--spec/ruby/core/string/fixtures/to_c.rb5
-rw-r--r--spec/ruby/core/string/force_encoding_spec.rb92
-rw-r--r--spec/ruby/core/string/freeze_spec.rb7
-rw-r--r--spec/ruby/core/string/getbyte_spec.rb8
-rw-r--r--spec/ruby/core/string/grapheme_clusters_spec.rb14
-rw-r--r--spec/ruby/core/string/gsub_spec.rb249
-rw-r--r--spec/ruby/core/string/hash_spec.rb4
-rw-r--r--spec/ruby/core/string/hex_spec.rb4
-rw-r--r--spec/ruby/core/string/include_spec.rb26
-rw-r--r--spec/ruby/core/string/index_spec.rb83
-rw-r--r--spec/ruby/core/string/initialize_spec.rb6
-rw-r--r--spec/ruby/core/string/insert_spec.rb65
-rw-r--r--spec/ruby/core/string/inspect_spec.rb52
-rw-r--r--spec/ruby/core/string/intern_spec.rb8
-rw-r--r--spec/ruby/core/string/length_spec.rb8
-rw-r--r--spec/ruby/core/string/lines_spec.rb21
-rw-r--r--spec/ruby/core/string/ljust_spec.rb97
-rw-r--r--spec/ruby/core/string/lstrip_spec.rb63
-rw-r--r--spec/ruby/core/string/match_spec.rb66
-rw-r--r--spec/ruby/core/string/modulo_spec.rb227
-rw-r--r--spec/ruby/core/string/multiply_spec.rb8
-rw-r--r--spec/ruby/core/string/new_spec.rb26
-rw-r--r--spec/ruby/core/string/next_spec.rb10
-rw-r--r--spec/ruby/core/string/oct_spec.rb4
-rw-r--r--spec/ruby/core/string/ord_spec.rb45
-rw-r--r--spec/ruby/core/string/partition_spec.rb33
-rw-r--r--spec/ruby/core/string/percent_spec.rb14
-rw-r--r--spec/ruby/core/string/plus_spec.rb26
-rw-r--r--spec/ruby/core/string/prepend_spec.rb50
-rw-r--r--spec/ruby/core/string/replace_spec.rb6
-rw-r--r--spec/ruby/core/string/reverse_spec.rb65
-rw-r--r--spec/ruby/core/string/rindex_spec.rb58
-rw-r--r--spec/ruby/core/string/rjust_spec.rb97
-rw-r--r--spec/ruby/core/string/rpartition_spec.rb46
-rw-r--r--spec/ruby/core/string/rstrip_spec.rb69
-rw-r--r--spec/ruby/core/string/scan_spec.rb57
-rw-r--r--spec/ruby/core/string/scrub_spec.rb82
-rw-r--r--spec/ruby/core/string/setbyte_spec.rb20
-rw-r--r--spec/ruby/core/string/shared/chars.rb92
-rw-r--r--spec/ruby/core/string/shared/codepoints.rb20
-rw-r--r--spec/ruby/core/string/shared/concat.rb84
-rw-r--r--spec/ruby/core/string/shared/dedup.rb57
-rw-r--r--spec/ruby/core/string/shared/each_char_without_block.rb4
-rw-r--r--spec/ruby/core/string/shared/each_line.rb114
-rw-r--r--spec/ruby/core/string/shared/encode.rb48
-rw-r--r--spec/ruby/core/string/shared/eql.rb10
-rw-r--r--spec/ruby/core/string/shared/equal_value.rb6
-rw-r--r--spec/ruby/core/string/shared/grapheme_clusters.rb16
-rw-r--r--spec/ruby/core/string/shared/length.rb55
-rw-r--r--spec/ruby/core/string/shared/partition.rb51
-rw-r--r--spec/ruby/core/string/shared/replace.rb42
-rw-r--r--spec/ruby/core/string/shared/slice.rb307
-rw-r--r--spec/ruby/core/string/shared/strip.rb24
-rw-r--r--spec/ruby/core/string/shared/succ.rb28
-rw-r--r--spec/ruby/core/string/shared/to_s.rb5
-rw-r--r--spec/ruby/core/string/shared/to_sym.rb13
-rw-r--r--spec/ruby/core/string/size_spec.rb8
-rw-r--r--spec/ruby/core/string/slice_spec.rb297
-rw-r--r--spec/ruby/core/string/split_spec.rb413
-rw-r--r--spec/ruby/core/string/squeeze_spec.rb49
-rw-r--r--spec/ruby/core/string/start_with_spec.rb47
-rw-r--r--spec/ruby/core/string/string_spec.rb2
-rw-r--r--spec/ruby/core/string/strip_spec.rb51
-rw-r--r--spec/ruby/core/string/sub_spec.rb185
-rw-r--r--spec/ruby/core/string/succ_spec.rb10
-rw-r--r--spec/ruby/core/string/sum_spec.rb4
-rw-r--r--spec/ruby/core/string/swapcase_spec.rb177
-rw-r--r--spec/ruby/core/string/to_c_spec.rb110
-rw-r--r--spec/ruby/core/string/to_f_spec.rb5
-rw-r--r--spec/ruby/core/string/to_i_spec.rb28
-rw-r--r--spec/ruby/core/string/to_r_spec.rb4
-rw-r--r--spec/ruby/core/string/to_s_spec.rb8
-rw-r--r--spec/ruby/core/string/to_str_spec.rb8
-rw-r--r--spec/ruby/core/string/to_sym_spec.rb8
-rw-r--r--spec/ruby/core/string/tr_s_spec.rb101
-rw-r--r--spec/ruby/core/string/tr_spec.rb77
-rw-r--r--spec/ruby/core/string/try_convert_spec.rb8
-rw-r--r--spec/ruby/core/string/uminus_spec.rb23
-rw-r--r--spec/ruby/core/string/undump_spec.rb441
-rw-r--r--spec/ruby/core/string/unicode_normalize_spec.rb10
-rw-r--r--spec/ruby/core/string/unicode_normalized_spec.rb14
-rw-r--r--spec/ruby/core/string/unpack/a_spec.rb17
-rw-r--r--spec/ruby/core/string/unpack/at_spec.rb10
-rw-r--r--spec/ruby/core/string/unpack/b_spec.rb49
-rw-r--r--spec/ruby/core/string/unpack/c_spec.rb26
-rw-r--r--spec/ruby/core/string/unpack/comment_spec.rb6
-rw-r--r--spec/ruby/core/string/unpack/d_spec.rb8
-rw-r--r--spec/ruby/core/string/unpack/e_spec.rb8
-rw-r--r--spec/ruby/core/string/unpack/f_spec.rb8
-rw-r--r--spec/ruby/core/string/unpack/g_spec.rb8
-rw-r--r--spec/ruby/core/string/unpack/h_spec.rb51
-rw-r--r--spec/ruby/core/string/unpack/i_spec.rb8
-rw-r--r--spec/ruby/core/string/unpack/j_spec.rb427
-rw-r--r--spec/ruby/core/string/unpack/l_spec.rb24
-rw-r--r--spec/ruby/core/string/unpack/m_spec.rb30
-rw-r--r--spec/ruby/core/string/unpack/n_spec.rb8
-rw-r--r--spec/ruby/core/string/unpack/p_spec.rb41
-rw-r--r--spec/ruby/core/string/unpack/percent_spec.rb4
-rw-r--r--spec/ruby/core/string/unpack/q_spec.rb8
-rw-r--r--spec/ruby/core/string/unpack/s_spec.rb8
-rw-r--r--spec/ruby/core/string/unpack/shared/basic.rb12
-rw-r--r--spec/ruby/core/string/unpack/shared/float.rb70
-rw-r--r--spec/ruby/core/string/unpack/shared/integer.rb102
-rw-r--r--spec/ruby/core/string/unpack/shared/taint.rb2
-rw-r--r--spec/ruby/core/string/unpack/shared/unicode.rb16
-rw-r--r--spec/ruby/core/string/unpack/u_spec.rb21
-rw-r--r--spec/ruby/core/string/unpack/v_spec.rb8
-rw-r--r--spec/ruby/core/string/unpack/w_spec.rb34
-rw-r--r--spec/ruby/core/string/unpack/x_spec.rb14
-rw-r--r--spec/ruby/core/string/unpack/z_spec.rb17
-rw-r--r--spec/ruby/core/string/unpack1_spec.rb42
-rw-r--r--spec/ruby/core/string/unpack_spec.rb34
-rw-r--r--spec/ruby/core/string/upcase_spec.rb178
-rw-r--r--spec/ruby/core/string/uplus_spec.rb32
-rw-r--r--spec/ruby/core/string/upto_spec.rb18
-rw-r--r--spec/ruby/core/string/valid_encoding/utf_8_spec.rb214
-rw-r--r--spec/ruby/core/string/valid_encoding_spec.rb244
-rw-r--r--spec/ruby/core/struct/clone_spec.rb7
-rw-r--r--spec/ruby/core/struct/deconstruct_keys_spec.rb76
-rw-r--r--spec/ruby/core/struct/deconstruct_spec.rb10
-rw-r--r--spec/ruby/core/struct/dig_spec.rb72
-rw-r--r--spec/ruby/core/struct/dup_spec.rb7
-rw-r--r--spec/ruby/core/struct/each_pair_spec.rb8
-rw-r--r--spec/ruby/core/struct/each_spec.rb8
-rw-r--r--spec/ruby/core/struct/element_reference_spec.rb16
-rw-r--r--spec/ruby/core/struct/element_set_spec.rb12
-rw-r--r--spec/ruby/core/struct/eql_spec.rb10
-rw-r--r--spec/ruby/core/struct/equal_value_spec.rb8
-rw-r--r--spec/ruby/core/struct/filter_spec.rb10
-rw-r--r--spec/ruby/core/struct/fixtures/classes.rb6
-rw-r--r--spec/ruby/core/struct/hash_spec.rb28
-rw-r--r--spec/ruby/core/struct/initialize_spec.rb22
-rw-r--r--spec/ruby/core/struct/inspect_spec.rb16
-rw-r--r--spec/ruby/core/struct/instance_variable_get_spec.rb16
-rw-r--r--spec/ruby/core/struct/instance_variables_spec.rb4
-rw-r--r--spec/ruby/core/struct/keyword_init_spec.rb40
-rw-r--r--spec/ruby/core/struct/length_spec.rb6
-rw-r--r--spec/ruby/core/struct/members_spec.rb6
-rw-r--r--spec/ruby/core/struct/new_spec.rb159
-rw-r--r--spec/ruby/core/struct/select_spec.rb30
-rw-r--r--spec/ruby/core/struct/shared/dup.rb9
-rw-r--r--spec/ruby/core/struct/shared/equal_value.rb7
-rw-r--r--spec/ruby/core/struct/shared/inspect.rb35
-rw-r--r--spec/ruby/core/struct/shared/select.rb26
-rw-r--r--spec/ruby/core/struct/size_spec.rb6
-rw-r--r--spec/ruby/core/struct/struct_spec.rb6
-rw-r--r--spec/ruby/core/struct/tms/cstime_spec.rb9
-rw-r--r--spec/ruby/core/struct/tms/cutime_spec.rb9
-rw-r--r--spec/ruby/core/struct/tms/element_reference_spec.rb5
-rw-r--r--spec/ruby/core/struct/tms/members_spec.rb5
-rw-r--r--spec/ruby/core/struct/tms/new_spec.rb5
-rw-r--r--spec/ruby/core/struct/tms/stime_spec.rb9
-rw-r--r--spec/ruby/core/struct/tms/utime_spec.rb9
-rw-r--r--spec/ruby/core/struct/to_a_spec.rb6
-rw-r--r--spec/ruby/core/struct/to_h_spec.rb45
-rw-r--r--spec/ruby/core/struct/to_s_spec.rb8
-rw-r--r--spec/ruby/core/struct/values_at_spec.rb59
-rw-r--r--spec/ruby/core/struct/values_spec.rb4
-rw-r--r--spec/ruby/core/symbol/all_symbols_spec.rb13
-rw-r--r--spec/ruby/core/symbol/capitalize_spec.rb23
-rw-r--r--spec/ruby/core/symbol/case_compare_spec.rb2
-rw-r--r--spec/ruby/core/symbol/casecmp_spec.rb148
-rw-r--r--spec/ruby/core/symbol/comparison_spec.rb4
-rw-r--r--spec/ruby/core/symbol/downcase_spec.rb16
-rw-r--r--spec/ruby/core/symbol/dup_spec.rb10
-rw-r--r--spec/ruby/core/symbol/element_reference_spec.rb6
-rw-r--r--spec/ruby/core/symbol/empty_spec.rb2
-rw-r--r--spec/ruby/core/symbol/encoding_spec.rb2
-rw-r--r--spec/ruby/core/symbol/end_with_spec.rb8
-rw-r--r--spec/ruby/core/symbol/equal_value_spec.rb2
-rw-r--r--spec/ruby/core/symbol/id2name_spec.rb6
-rw-r--r--spec/ruby/core/symbol/inspect_spec.rb4
-rw-r--r--spec/ruby/core/symbol/intern_spec.rb2
-rw-r--r--spec/ruby/core/symbol/length_spec.rb4
-rw-r--r--spec/ruby/core/symbol/match_spec.rb75
-rw-r--r--spec/ruby/core/symbol/name_spec.rb19
-rw-r--r--spec/ruby/core/symbol/next_spec.rb4
-rw-r--r--spec/ruby/core/symbol/shared/id2name.rb7
-rw-r--r--spec/ruby/core/symbol/shared/slice.rb42
-rw-r--r--spec/ruby/core/symbol/shared/succ.rb2
-rw-r--r--spec/ruby/core/symbol/size_spec.rb4
-rw-r--r--spec/ruby/core/symbol/slice_spec.rb6
-rw-r--r--spec/ruby/core/symbol/start_with_spec.rb8
-rw-r--r--spec/ruby/core/symbol/succ_spec.rb4
-rw-r--r--spec/ruby/core/symbol/swapcase_spec.rb20
-rw-r--r--spec/ruby/core/symbol/symbol_spec.rb6
-rw-r--r--spec/ruby/core/symbol/to_proc_spec.rb82
-rw-r--r--spec/ruby/core/symbol/to_s_spec.rb6
-rw-r--r--spec/ruby/core/symbol/to_sym_spec.rb2
-rw-r--r--spec/ruby/core/symbol/upcase_spec.rb16
-rw-r--r--spec/ruby/core/systemexit/initialize_spec.rb3
-rw-r--r--spec/ruby/core/systemexit/success_spec.rb6
-rw-r--r--spec/ruby/core/thread/abort_on_exception_spec.rb6
-rw-r--r--spec/ruby/core/thread/add_trace_func_spec.rb2
-rw-r--r--spec/ruby/core/thread/alive_spec.rb24
-rw-r--r--spec/ruby/core/thread/allocate_spec.rb4
-rw-r--r--spec/ruby/core/thread/backtrace/limit_spec.rb15
-rw-r--r--spec/ruby/core/thread/backtrace/location/absolute_path_spec.rb94
-rw-r--r--spec/ruby/core/thread/backtrace/location/base_label_spec.rb41
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/absolute_path.rb4
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/absolute_path_main.rb2
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/absolute_path_method_added.rb10
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/classes.rb18
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/locations_in_main.rb5
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/locations_in_required.rb3
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/main.rb4
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/path.rb2
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/subdir/absolute_path_main_chdir.rb11
-rw-r--r--spec/ruby/core/thread/backtrace/location/fixtures/subdir/sibling.rb1
-rw-r--r--spec/ruby/core/thread/backtrace/location/inspect_spec.rb4
-rw-r--r--spec/ruby/core/thread/backtrace/location/label_spec.rb21
-rw-r--r--spec/ruby/core/thread/backtrace/location/lineno_spec.rb14
-rw-r--r--spec/ruby/core/thread/backtrace/location/path_spec.rb45
-rw-r--r--spec/ruby/core/thread/backtrace/location/to_s_spec.rb4
-rw-r--r--spec/ruby/core/thread/backtrace_locations_spec.rb79
-rw-r--r--spec/ruby/core/thread/backtrace_spec.rb44
-rw-r--r--spec/ruby/core/thread/current_spec.rb20
-rw-r--r--spec/ruby/core/thread/element_reference_spec.rb8
-rw-r--r--spec/ruby/core/thread/element_set_spec.rb12
-rw-r--r--spec/ruby/core/thread/exclusive_spec.rb57
-rw-r--r--spec/ruby/core/thread/exit_spec.rb6
-rw-r--r--spec/ruby/core/thread/fetch_spec.rb36
-rw-r--r--spec/ruby/core/thread/fixtures/classes.rb12
-rw-r--r--spec/ruby/core/thread/fork_spec.rb6
-rw-r--r--spec/ruby/core/thread/group_spec.rb4
-rw-r--r--spec/ruby/core/thread/handle_interrupt_spec.rb125
-rw-r--r--spec/ruby/core/thread/ignore_deadlock_spec.rb21
-rw-r--r--spec/ruby/core/thread/initialize_spec.rb6
-rw-r--r--spec/ruby/core/thread/inspect_spec.rb44
-rw-r--r--spec/ruby/core/thread/join_spec.rb29
-rw-r--r--spec/ruby/core/thread/key_spec.rb8
-rw-r--r--spec/ruby/core/thread/keys_spec.rb4
-rw-r--r--spec/ruby/core/thread/kill_spec.rb34
-rw-r--r--spec/ruby/core/thread/list_spec.rb29
-rw-r--r--spec/ruby/core/thread/main_spec.rb4
-rw-r--r--spec/ruby/core/thread/name_spec.rb106
-rw-r--r--spec/ruby/core/thread/native_thread_id_spec.rb30
-rw-r--r--spec/ruby/core/thread/new_spec.rb43
-rw-r--r--spec/ruby/core/thread/pass_spec.rb4
-rw-r--r--spec/ruby/core/thread/pending_interrupt_spec.rb32
-rw-r--r--spec/ruby/core/thread/priority_spec.rb26
-rw-r--r--spec/ruby/core/thread/raise_spec.rb77
-rw-r--r--spec/ruby/core/thread/report_on_exception_spec.rb221
-rw-r--r--spec/ruby/core/thread/run_spec.rb7
-rw-r--r--spec/ruby/core/thread/set_trace_func_spec.rb2
-rw-r--r--spec/ruby/core/thread/shared/exit.rb67
-rw-r--r--spec/ruby/core/thread/shared/start.rb2
-rw-r--r--spec/ruby/core/thread/shared/to_s.rb53
-rw-r--r--spec/ruby/core/thread/shared/wakeup.rb5
-rw-r--r--spec/ruby/core/thread/start_spec.rb6
-rw-r--r--spec/ruby/core/thread/status_spec.rb4
-rw-r--r--spec/ruby/core/thread/stop_spec.rb24
-rw-r--r--spec/ruby/core/thread/terminate_spec.rb6
-rw-r--r--spec/ruby/core/thread/thread_variable_get_spec.rb2
-rw-r--r--spec/ruby/core/thread/thread_variable_set_spec.rb2
-rw-r--r--spec/ruby/core/thread/thread_variable_spec.rb2
-rw-r--r--spec/ruby/core/thread/thread_variables_spec.rb2
-rw-r--r--spec/ruby/core/thread/to_s_spec.rb6
-rw-r--r--spec/ruby/core/thread/value_spec.rb16
-rw-r--r--spec/ruby/core/thread/wakeup_spec.rb6
-rw-r--r--spec/ruby/core/threadgroup/add_spec.rb47
-rw-r--r--spec/ruby/core/threadgroup/default_spec.rb2
-rw-r--r--spec/ruby/core/threadgroup/enclose_spec.rb13
-rw-r--r--spec/ruby/core/threadgroup/enclosed_spec.rb2
-rw-r--r--spec/ruby/core/threadgroup/fixtures/classes.rb6
-rw-r--r--spec/ruby/core/threadgroup/list_spec.rb13
-rw-r--r--spec/ruby/core/time/_dump_spec.rb7
-rw-r--r--spec/ruby/core/time/_load_spec.rb14
-rw-r--r--spec/ruby/core/time/asctime_spec.rb6
-rw-r--r--spec/ruby/core/time/at_spec.rb192
-rw-r--r--spec/ruby/core/time/ceil_spec.rb44
-rw-r--r--spec/ruby/core/time/comparison_spec.rb12
-rw-r--r--spec/ruby/core/time/ctime_spec.rb6
-rw-r--r--spec/ruby/core/time/day_spec.rb6
-rw-r--r--spec/ruby/core/time/dst_spec.rb6
-rw-r--r--spec/ruby/core/time/dup_spec.rb6
-rw-r--r--spec/ruby/core/time/eql_spec.rb2
-rw-r--r--spec/ruby/core/time/fixtures/classes.rb94
-rw-r--r--spec/ruby/core/time/floor_spec.rb36
-rw-r--r--spec/ruby/core/time/friday_spec.rb6
-rw-r--r--spec/ruby/core/time/getgm_spec.rb6
-rw-r--r--spec/ruby/core/time/getlocal_spec.rb79
-rw-r--r--spec/ruby/core/time/getutc_spec.rb6
-rw-r--r--spec/ruby/core/time/gm_spec.rb14
-rw-r--r--spec/ruby/core/time/gmt_offset_spec.rb6
-rw-r--r--spec/ruby/core/time/gmt_spec.rb6
-rw-r--r--spec/ruby/core/time/gmtime_spec.rb6
-rw-r--r--spec/ruby/core/time/gmtoff_spec.rb6
-rw-r--r--spec/ruby/core/time/hash_spec.rb6
-rw-r--r--spec/ruby/core/time/hour_spec.rb2
-rw-r--r--spec/ruby/core/time/inspect_spec.rb31
-rw-r--r--spec/ruby/core/time/isdst_spec.rb6
-rw-r--r--spec/ruby/core/time/local_spec.rb16
-rw-r--r--spec/ruby/core/time/localtime_spec.rb28
-rw-r--r--spec/ruby/core/time/mday_spec.rb6
-rw-r--r--spec/ruby/core/time/min_spec.rb2
-rw-r--r--spec/ruby/core/time/minus_spec.rb36
-rw-r--r--spec/ruby/core/time/mktime_spec.rb16
-rw-r--r--spec/ruby/core/time/mon_spec.rb6
-rw-r--r--spec/ruby/core/time/monday_spec.rb6
-rw-r--r--spec/ruby/core/time/month_spec.rb6
-rw-r--r--spec/ruby/core/time/new_spec.rb409
-rw-r--r--spec/ruby/core/time/now_spec.rb57
-rw-r--r--spec/ruby/core/time/nsec_spec.rb6
-rw-r--r--spec/ruby/core/time/plus_spec.rb38
-rw-r--r--spec/ruby/core/time/round_spec.rb2
-rw-r--r--spec/ruby/core/time/saturday_spec.rb6
-rw-r--r--spec/ruby/core/time/sec_spec.rb2
-rw-r--r--spec/ruby/core/time/shared/gm.rb41
-rw-r--r--spec/ruby/core/time/shared/gmt_offset.rb6
-rw-r--r--spec/ruby/core/time/shared/gmtime.rb4
-rw-r--r--spec/ruby/core/time/shared/inspect.rb6
-rw-r--r--spec/ruby/core/time/shared/local.rb11
-rw-r--r--spec/ruby/core/time/shared/now.rb17
-rw-r--r--spec/ruby/core/time/shared/time_params.rb41
-rw-r--r--spec/ruby/core/time/shared/to_i.rb7
-rw-r--r--spec/ruby/core/time/strftime_spec.rb57
-rw-r--r--spec/ruby/core/time/subsec_spec.rb4
-rw-r--r--spec/ruby/core/time/succ_spec.rb53
-rw-r--r--spec/ruby/core/time/sunday_spec.rb6
-rw-r--r--spec/ruby/core/time/thursday_spec.rb6
-rw-r--r--spec/ruby/core/time/time_spec.rb2
-rw-r--r--spec/ruby/core/time/to_a_spec.rb2
-rw-r--r--spec/ruby/core/time/to_f_spec.rb2
-rw-r--r--spec/ruby/core/time/to_i_spec.rb6
-rw-r--r--spec/ruby/core/time/to_r_spec.rb2
-rw-r--r--spec/ruby/core/time/to_s_spec.rb4
-rw-r--r--spec/ruby/core/time/tuesday_spec.rb6
-rw-r--r--spec/ruby/core/time/tv_nsec_spec.rb2
-rw-r--r--spec/ruby/core/time/tv_sec_spec.rb6
-rw-r--r--spec/ruby/core/time/tv_usec_spec.rb2
-rw-r--r--spec/ruby/core/time/usec_spec.rb6
-rw-r--r--spec/ruby/core/time/utc_offset_spec.rb6
-rw-r--r--spec/ruby/core/time/utc_spec.rb67
-rw-r--r--spec/ruby/core/time/wday_spec.rb2
-rw-r--r--spec/ruby/core/time/wednesday_spec.rb6
-rw-r--r--spec/ruby/core/time/yday_spec.rb2
-rw-r--r--spec/ruby/core/time/year_spec.rb2
-rw-r--r--spec/ruby/core/time/zone_spec.rb33
-rw-r--r--spec/ruby/core/tracepoint/allow_reentry_spec.rb32
-rw-r--r--spec/ruby/core/tracepoint/binding_spec.rb4
-rw-r--r--spec/ruby/core/tracepoint/callee_id_spec.rb28
-rw-r--r--spec/ruby/core/tracepoint/defined_class_spec.rb5
-rw-r--r--spec/ruby/core/tracepoint/disable_spec.rb65
-rw-r--r--spec/ruby/core/tracepoint/enable_spec.rb568
-rw-r--r--spec/ruby/core/tracepoint/enabled_spec.rb9
-rw-r--r--spec/ruby/core/tracepoint/eval_script_spec.rb23
-rw-r--r--spec/ruby/core/tracepoint/event_spec.rb5
-rw-r--r--spec/ruby/core/tracepoint/fixtures/classes.rb6
-rw-r--r--spec/ruby/core/tracepoint/inspect_spec.rb132
-rw-r--r--spec/ruby/core/tracepoint/lineno_spec.rb16
-rw-r--r--spec/ruby/core/tracepoint/method_id_spec.rb12
-rw-r--r--spec/ruby/core/tracepoint/new_spec.rb38
-rw-r--r--spec/ruby/core/tracepoint/parameters_spec.rb28
-rw-r--r--spec/ruby/core/tracepoint/path_spec.rb20
-rw-r--r--spec/ruby/core/tracepoint/raised_exception_spec.rb8
-rw-r--r--spec/ruby/core/tracepoint/return_value_spec.rb8
-rw-r--r--spec/ruby/core/tracepoint/self_spec.rb20
-rw-r--r--spec/ruby/core/tracepoint/trace_spec.rb7
-rw-r--r--spec/ruby/core/true/and_spec.rb2
-rw-r--r--spec/ruby/core/true/case_compare_spec.rb13
-rw-r--r--spec/ruby/core/true/dup_spec.rb10
-rw-r--r--spec/ruby/core/true/inspect_spec.rb2
-rw-r--r--spec/ruby/core/true/or_spec.rb2
-rw-r--r--spec/ruby/core/true/to_s_spec.rb10
-rw-r--r--spec/ruby/core/true/trueclass_spec.rb6
-rw-r--r--spec/ruby/core/true/xor_spec.rb2
-rw-r--r--spec/ruby/core/unboundmethod/arity_spec.rb2
-rw-r--r--spec/ruby/core/unboundmethod/bind_call_spec.rb58
-rw-r--r--spec/ruby/core/unboundmethod/bind_spec.rb28
-rw-r--r--spec/ruby/core/unboundmethod/clone_spec.rb4
-rw-r--r--spec/ruby/core/unboundmethod/eql_spec.rb2
-rw-r--r--spec/ruby/core/unboundmethod/equal_value_spec.rb80
-rw-r--r--spec/ruby/core/unboundmethod/fixtures/classes.rb21
-rw-r--r--spec/ruby/core/unboundmethod/hash_spec.rb13
-rw-r--r--spec/ruby/core/unboundmethod/inspect_spec.rb8
-rw-r--r--spec/ruby/core/unboundmethod/name_spec.rb4
-rw-r--r--spec/ruby/core/unboundmethod/original_name_spec.rb22
-rw-r--r--spec/ruby/core/unboundmethod/owner_spec.rb11
-rw-r--r--spec/ruby/core/unboundmethod/parameters_spec.rb2
-rw-r--r--spec/ruby/core/unboundmethod/private_spec.rb21
-rw-r--r--spec/ruby/core/unboundmethod/protected_spec.rb21
-rw-r--r--spec/ruby/core/unboundmethod/public_spec.rb21
-rw-r--r--spec/ruby/core/unboundmethod/shared/to_s.rb25
-rw-r--r--spec/ruby/core/unboundmethod/source_location_spec.rb10
-rw-r--r--spec/ruby/core/unboundmethod/super_method_spec.rb27
-rw-r--r--spec/ruby/core/unboundmethod/to_s_spec.rb8
-rw-r--r--spec/ruby/core/warning/element_reference_spec.rb27
-rw-r--r--spec/ruby/core/warning/element_set_spec.rb35
-rw-r--r--spec/ruby/core/warning/warn_spec.rb154
-rw-r--r--spec/ruby/default.mspec24
-rw-r--r--spec/ruby/fixtures/class.rb8
-rw-r--r--spec/ruby/fixtures/code/a/load_fixture.dylib1
-rw-r--r--spec/ruby/fixtures/code/c/load_fixture.rb1
-rw-r--r--spec/ruby/fixtures/code/concurrent.rb2
-rw-r--r--spec/ruby/fixtures/code/concurrent_require_fixture.rb4
-rw-r--r--spec/ruby/fixtures/code/load_fixture.dylib1
-rw-r--r--spec/ruby/fixtures/code/load_fixture.ext.dylib1
-rw-r--r--spec/ruby/fixtures/code/load_fixture_and__FILE__.rb1
-rw-r--r--spec/ruby/fixtures/code/load_wrap_fixture.rb12
-rw-r--r--spec/ruby/fixtures/code/recursive_require_fixture.rb2
-rw-r--r--spec/ruby/fixtures/code/wrap_fixture.rb3
-rw-r--r--spec/ruby/fixtures/code_loading.rb15
-rw-r--r--spec/ruby/fixtures/constants.rb40
-rw-r--r--spec/ruby/fixtures/rational.rb3
-rw-r--r--spec/ruby/language/BEGIN_spec.rb9
-rw-r--r--spec/ruby/language/END_spec.rb33
-rw-r--r--spec/ruby/language/README2
-rw-r--r--spec/ruby/language/alias_spec.rb58
-rw-r--r--spec/ruby/language/and_spec.rb2
-rw-r--r--spec/ruby/language/array_spec.rb11
-rw-r--r--spec/ruby/language/block_spec.rb401
-rw-r--r--spec/ruby/language/break_spec.rb38
-rw-r--r--spec/ruby/language/case_spec.rb276
-rw-r--r--spec/ruby/language/class_spec.rb85
-rw-r--r--spec/ruby/language/class_variable_spec.rb40
-rw-r--r--spec/ruby/language/comment_spec.rb13
-rw-r--r--spec/ruby/language/constants_spec.rb306
-rw-r--r--spec/ruby/language/def_spec.rb160
-rw-r--r--spec/ruby/language/defined_spec.rb151
-rw-r--r--spec/ruby/language/delegation_spec.rb65
-rw-r--r--spec/ruby/language/encoding_spec.rb16
-rw-r--r--spec/ruby/language/ensure_spec.rb156
-rw-r--r--spec/ruby/language/execution_spec.rb2
-rw-r--r--spec/ruby/language/file_spec.rb20
-rw-r--r--spec/ruby/language/fixtures/array.rb21
-rw-r--r--spec/ruby/language/fixtures/block.rb4
-rw-r--r--spec/ruby/language/fixtures/break.rb10
-rw-r--r--spec/ruby/language/fixtures/break_lambda_toplevel.rb2
-rw-r--r--spec/ruby/language/fixtures/break_lambda_toplevel_block.rb2
-rw-r--r--spec/ruby/language/fixtures/break_lambda_toplevel_method.rb2
-rw-r--r--spec/ruby/language/fixtures/bytes_magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/case_magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/constant_visibility.rb18
-rw-r--r--spec/ruby/language/fixtures/def.rb6
-rw-r--r--spec/ruby/language/fixtures/defined.rb8
-rw-r--r--spec/ruby/language/fixtures/delegation.rb11
-rw-r--r--spec/ruby/language/fixtures/emacs_magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/ensure.rb44
-rw-r--r--spec/ruby/language/fixtures/for_scope.rb15
-rw-r--r--spec/ruby/language/fixtures/freeze_magic_comment_required_diff_enc.rbbin120 -> 181 bytes-rw-r--r--spec/ruby/language/fixtures/freeze_magic_comment_two_literals.rb2
-rw-r--r--spec/ruby/language/fixtures/hash_strings_ascii8bit.rb7
-rw-r--r--spec/ruby/language/fixtures/hash_strings_binary.rb7
-rw-r--r--spec/ruby/language/fixtures/magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/metaclass.rb1
-rw-r--r--spec/ruby/language/fixtures/no_magic_comment.rb1
-rw-r--r--spec/ruby/language/fixtures/print_magic_comment_result_at_exit.rb3
-rw-r--r--spec/ruby/language/fixtures/rescue.rb4
-rw-r--r--spec/ruby/language/fixtures/rescue_captures.rb107
-rw-r--r--spec/ruby/language/fixtures/return.rb8
-rw-r--r--spec/ruby/language/fixtures/second_line_magic_comment.rb3
-rw-r--r--spec/ruby/language/fixtures/second_token_magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/send.rb3
-rwxr-xr-xspec/ruby/language/fixtures/shebang_magic_comment.rb3
-rw-r--r--spec/ruby/language/fixtures/squiggly_heredoc.rb32
-rw-r--r--spec/ruby/language/fixtures/super.rb100
-rw-r--r--spec/ruby/language/fixtures/utf16-be-nobom.rbbin68 -> 0 bytes-rw-r--r--spec/ruby/language/fixtures/utf16-le-nobom.rbbin69 -> 0 bytes-rw-r--r--spec/ruby/language/fixtures/utf8-bom.rb2
-rw-r--r--spec/ruby/language/fixtures/utf8-nobom.rb2
-rw-r--r--spec/ruby/language/fixtures/variables.rb72
-rw-r--r--spec/ruby/language/fixtures/vim_magic_comment.rb2
-rw-r--r--spec/ruby/language/fixtures/yield.rb4
-rw-r--r--spec/ruby/language/for_spec.rb17
-rw-r--r--spec/ruby/language/hash_spec.rb159
-rw-r--r--spec/ruby/language/heredoc_spec.rb84
-rw-r--r--spec/ruby/language/if_spec.rb73
-rw-r--r--spec/ruby/language/keyword_arguments_spec.rb397
-rw-r--r--spec/ruby/language/lambda_spec.rb127
-rw-r--r--spec/ruby/language/line_spec.rb8
-rw-r--r--spec/ruby/language/loop_spec.rb4
-rw-r--r--spec/ruby/language/magic_comment_spec.rb110
-rw-r--r--spec/ruby/language/match_spec.rb11
-rw-r--r--spec/ruby/language/metaclass_spec.rb18
-rw-r--r--spec/ruby/language/method_spec.rb940
-rw-r--r--spec/ruby/language/module_spec.rb51
-rw-r--r--spec/ruby/language/next_spec.rb16
-rw-r--r--spec/ruby/language/not_spec.rb2
-rw-r--r--spec/ruby/language/numbered_parameters_spec.rb118
-rw-r--r--spec/ruby/language/numbers_spec.rb18
-rw-r--r--spec/ruby/language/optional_assignments_spec.rb280
-rw-r--r--spec/ruby/language/or_spec.rb14
-rw-r--r--spec/ruby/language/order_spec.rb2
-rw-r--r--spec/ruby/language/pattern_matching_spec.rb1415
-rw-r--r--spec/ruby/language/precedence_spec.rb117
-rw-r--r--spec/ruby/language/predefined/data_spec.rb21
-rw-r--r--spec/ruby/language/predefined/fixtures/data2.rb3
-rw-r--r--spec/ruby/language/predefined/fixtures/data3.rb3
-rw-r--r--spec/ruby/language/predefined/fixtures/data_offset.rb12
-rw-r--r--spec/ruby/language/predefined/fixtures/empty_data.rb3
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_dynamic.rb4
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_dynamic_required.rb2
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_id.rb4
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_id_required.rb1
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_required_before.rb2
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_values.rb9
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_variables.rb4
-rw-r--r--spec/ruby/language/predefined/fixtures/toplevel_binding_variables_required.rb2
-rw-r--r--spec/ruby/language/predefined/toplevel_binding_spec.rb34
-rw-r--r--spec/ruby/language/predefined_spec.rb818
-rw-r--r--spec/ruby/language/private_spec.rb18
-rw-r--r--spec/ruby/language/proc_spec.rb43
-rw-r--r--spec/ruby/language/range_spec.rb30
-rw-r--r--spec/ruby/language/redo_spec.rb6
-rw-r--r--spec/ruby/language/regexp/anchors_spec.rb4
-rw-r--r--spec/ruby/language/regexp/back-references_spec.rb98
-rw-r--r--spec/ruby/language/regexp/character_classes_spec.rb47
-rw-r--r--spec/ruby/language/regexp/empty_checks_spec.rb135
-rw-r--r--spec/ruby/language/regexp/encoding_spec.rb57
-rw-r--r--spec/ruby/language/regexp/escapes_spec.rb112
-rw-r--r--spec/ruby/language/regexp/grouping_spec.rb46
-rw-r--r--spec/ruby/language/regexp/interpolation_spec.rb10
-rw-r--r--spec/ruby/language/regexp/modifiers_spec.rb22
-rw-r--r--spec/ruby/language/regexp/repetition_spec.rb115
-rw-r--r--spec/ruby/language/regexp/subexpression_call_spec.rb50
-rw-r--r--spec/ruby/language/regexp_spec.rb35
-rw-r--r--spec/ruby/language/rescue_spec.rb167
-rw-r--r--spec/ruby/language/retry_spec.rb4
-rw-r--r--spec/ruby/language/return_spec.rb362
-rw-r--r--spec/ruby/language/safe_navigator_spec.rb144
-rw-r--r--spec/ruby/language/safe_spec.rb27
-rw-r--r--spec/ruby/language/send_spec.rb81
-rw-r--r--spec/ruby/language/singleton_class_spec.rb41
-rw-r--r--spec/ruby/language/source_encoding_spec.rb61
-rw-r--r--spec/ruby/language/string_spec.rb135
-rw-r--r--spec/ruby/language/super_spec.rb239
-rw-r--r--spec/ruby/language/symbol_spec.rb8
-rw-r--r--spec/ruby/language/throw_spec.rb10
-rw-r--r--spec/ruby/language/undef_spec.rb14
-rw-r--r--spec/ruby/language/unless_spec.rb2
-rw-r--r--spec/ruby/language/until_spec.rb4
-rw-r--r--spec/ruby/language/variables_spec.rb218
-rw-r--r--spec/ruby/language/while_spec.rb4
-rw-r--r--spec/ruby/language/yield_spec.rb94
-rw-r--r--spec/ruby/library/English/English_spec.rb26
-rw-r--r--spec/ruby/library/English/alias_spec.rb14
-rw-r--r--spec/ruby/library/abbrev/abbrev_spec.rb6
-rw-r--r--spec/ruby/library/base64/decode64_spec.rb22
-rw-r--r--spec/ruby/library/base64/encode64_spec.rb11
-rw-r--r--spec/ruby/library/base64/strict_decode64_spec.rb41
-rw-r--r--spec/ruby/library/base64/strict_encode64_spec.rb19
-rw-r--r--spec/ruby/library/base64/urlsafe_decode64_spec.rb14
-rw-r--r--spec/ruby/library/base64/urlsafe_encode64_spec.rb10
-rw-r--r--spec/ruby/library/bigdecimal/BigDecimal_spec.rb269
-rw-r--r--spec/ruby/library/bigdecimal/abs_spec.rb4
-rw-r--r--spec/ruby/library/bigdecimal/add_spec.rb36
-rw-r--r--spec/ruby/library/bigdecimal/case_compare_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/ceil_spec.rb8
-rw-r--r--spec/ruby/library/bigdecimal/clone_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/coerce_spec.rb2
-rw-r--r--spec/ruby/library/bigdecimal/comparison_spec.rb4
-rw-r--r--spec/ruby/library/bigdecimal/constants_spec.rb70
-rw-r--r--spec/ruby/library/bigdecimal/div_spec.rb56
-rw-r--r--spec/ruby/library/bigdecimal/divide_spec.rb14
-rw-r--r--spec/ruby/library/bigdecimal/divmod_spec.rb28
-rw-r--r--spec/ruby/library/bigdecimal/double_fig_spec.rb2
-rw-r--r--spec/ruby/library/bigdecimal/dup_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/eql_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/equal_value_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/exponent_spec.rb17
-rw-r--r--spec/ruby/library/bigdecimal/finite_spec.rb11
-rw-r--r--spec/ruby/library/bigdecimal/fix_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/floor_spec.rb8
-rw-r--r--spec/ruby/library/bigdecimal/frac_spec.rb4
-rw-r--r--spec/ruby/library/bigdecimal/gt_spec.rb32
-rw-r--r--spec/ruby/library/bigdecimal/gte_spec.rb32
-rw-r--r--spec/ruby/library/bigdecimal/hash_spec.rb30
-rw-r--r--spec/ruby/library/bigdecimal/infinite_spec.rb2
-rw-r--r--spec/ruby/library/bigdecimal/inspect_spec.rb45
-rw-r--r--spec/ruby/library/bigdecimal/limit_spec.rb14
-rw-r--r--spec/ruby/library/bigdecimal/lt_spec.rb32
-rw-r--r--spec/ruby/library/bigdecimal/lte_spec.rb32
-rw-r--r--spec/ruby/library/bigdecimal/minus_spec.rb28
-rw-r--r--spec/ruby/library/bigdecimal/mode_spec.rb14
-rw-r--r--spec/ruby/library/bigdecimal/modulo_spec.rb12
-rw-r--r--spec/ruby/library/bigdecimal/mult_spec.rb14
-rw-r--r--spec/ruby/library/bigdecimal/multiply_spec.rb19
-rw-r--r--spec/ruby/library/bigdecimal/nan_spec.rb24
-rw-r--r--spec/ruby/library/bigdecimal/new_spec.rb109
-rw-r--r--spec/ruby/library/bigdecimal/nonzero_spec.rb2
-rw-r--r--spec/ruby/library/bigdecimal/plus_spec.rb15
-rw-r--r--spec/ruby/library/bigdecimal/power_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/precs_spec.rb42
-rw-r--r--spec/ruby/library/bigdecimal/quo_spec.rb9
-rw-r--r--spec/ruby/library/bigdecimal/remainder_spec.rb58
-rw-r--r--spec/ruby/library/bigdecimal/round_spec.rb264
-rw-r--r--spec/ruby/library/bigdecimal/shared/clone.rb13
-rw-r--r--spec/ruby/library/bigdecimal/shared/eql.rb4
-rw-r--r--spec/ruby/library/bigdecimal/shared/modulo.rb51
-rw-r--r--spec/ruby/library/bigdecimal/shared/mult.rb20
-rw-r--r--spec/ruby/library/bigdecimal/shared/power.rb4
-rw-r--r--spec/ruby/library/bigdecimal/shared/quo.rb18
-rw-r--r--spec/ruby/library/bigdecimal/shared/to_int.rb6
-rw-r--r--spec/ruby/library/bigdecimal/sign_spec.rb3
-rw-r--r--spec/ruby/library/bigdecimal/split_spec.rb4
-rw-r--r--spec/ruby/library/bigdecimal/sqrt_spec.rb24
-rw-r--r--spec/ruby/library/bigdecimal/sub_spec.rb27
-rw-r--r--spec/ruby/library/bigdecimal/to_d_spec.rb10
-rw-r--r--spec/ruby/library/bigdecimal/to_f_spec.rb5
-rw-r--r--spec/ruby/library/bigdecimal/to_i_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/to_int_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/to_r_spec.rb16
-rw-r--r--spec/ruby/library/bigdecimal/to_s_spec.rb66
-rw-r--r--spec/ruby/library/bigdecimal/truncate_spec.rb14
-rw-r--r--spec/ruby/library/bigdecimal/uminus_spec.rb4
-rw-r--r--spec/ruby/library/bigdecimal/uplus_spec.rb5
-rw-r--r--spec/ruby/library/bigdecimal/util_spec.rb40
-rw-r--r--spec/ruby/library/bigdecimal/ver_spec.rb11
-rw-r--r--spec/ruby/library/bigdecimal/zero_spec.rb29
-rw-r--r--spec/ruby/library/bigmath/log_spec.rb2
-rw-r--r--spec/ruby/library/cgi/cookie/domain_spec.rb2
-rw-r--r--spec/ruby/library/cgi/cookie/expires_spec.rb2
-rw-r--r--spec/ruby/library/cgi/cookie/initialize_spec.rb6
-rw-r--r--spec/ruby/library/cgi/cookie/name_spec.rb14
-rw-r--r--spec/ruby/library/cgi/cookie/parse_spec.rb31
-rw-r--r--spec/ruby/library/cgi/cookie/path_spec.rb2
-rw-r--r--spec/ruby/library/cgi/cookie/secure_spec.rb2
-rw-r--r--spec/ruby/library/cgi/cookie/to_s_spec.rb15
-rw-r--r--spec/ruby/library/cgi/cookie/value_spec.rb2
-rw-r--r--spec/ruby/library/cgi/escapeElement_spec.rb2
-rw-r--r--spec/ruby/library/cgi/escapeHTML_spec.rb6
-rw-r--r--spec/ruby/library/cgi/escape_spec.rb18
-rw-r--r--spec/ruby/library/cgi/htmlextension/a_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/base_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/blockquote_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/br_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/caption_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/checkbox_group_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/checkbox_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/doctype_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/file_field_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/form_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/frame_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/frameset_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/hidden_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/html_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/image_button_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/img_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/multipart_form_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/password_field_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/popup_menu_spec.rb6
-rw-r--r--spec/ruby/library/cgi/htmlextension/radio_button_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/radio_group_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/reset_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/scrolling_list_spec.rb6
-rw-r--r--spec/ruby/library/cgi/htmlextension/submit_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/text_field_spec.rb4
-rw-r--r--spec/ruby/library/cgi/htmlextension/textarea_spec.rb4
-rw-r--r--spec/ruby/library/cgi/http_header_spec.rb6
-rw-r--r--spec/ruby/library/cgi/initialize_spec.rb2
-rw-r--r--spec/ruby/library/cgi/out_spec.rb4
-rw-r--r--spec/ruby/library/cgi/parse_spec.rb2
-rw-r--r--spec/ruby/library/cgi/pretty_spec.rb2
-rw-r--r--spec/ruby/library/cgi/print_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/accept_charset_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/accept_encoding_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/accept_language_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/accept_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/auth_type_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/cache_control_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/content_length_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/content_type_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/cookies_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/element_reference_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/from_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/gateway_interface_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/has_key_spec.rb4
-rw-r--r--spec/ruby/library/cgi/queryextension/host_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/include_spec.rb4
-rw-r--r--spec/ruby/library/cgi/queryextension/key_spec.rb4
-rw-r--r--spec/ruby/library/cgi/queryextension/keys_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/multipart_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/negotiate_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/params_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/path_info_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/path_translated_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/pragma_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/query_string_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/raw_cookie2_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/raw_cookie_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/referer_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/remote_addr_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/remote_host_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/remote_ident_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/remote_user_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/request_method_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/script_name_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/server_name_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/server_port_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/server_protocol_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/server_software_spec.rb2
-rw-r--r--spec/ruby/library/cgi/queryextension/user_agent_spec.rb2
-rw-r--r--spec/ruby/library/cgi/rfc1123_date_spec.rb4
-rw-r--r--spec/ruby/library/cgi/shared/http_header.rb2
-rw-r--r--spec/ruby/library/cgi/unescapeElement_spec.rb2
-rw-r--r--spec/ruby/library/cgi/unescapeHTML_spec.rb7
-rw-r--r--spec/ruby/library/cgi/unescape_spec.rb6
-rw-r--r--spec/ruby/library/complex/math/acos_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/acosh_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/asin_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/asinh_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/atan2_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/atan_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/atanh_spec.rb17
-rw-r--r--spec/ruby/library/complex/math/cos_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/cosh_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/exp_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/fixtures/classes.rb4
-rw-r--r--spec/ruby/library/complex/math/log10_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/log_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/shared/acos.rb41
-rw-r--r--spec/ruby/library/complex/math/shared/acosh.rb37
-rw-r--r--spec/ruby/library/complex/math/shared/asin.rb47
-rw-r--r--spec/ruby/library/complex/math/shared/asinh.rb32
-rw-r--r--spec/ruby/library/complex/math/shared/atan.rb32
-rw-r--r--spec/ruby/library/complex/math/shared/atan2.rb34
-rw-r--r--spec/ruby/library/complex/math/shared/atanh.rb30
-rw-r--r--spec/ruby/library/complex/math/shared/cos.rb30
-rw-r--r--spec/ruby/library/complex/math/shared/cosh.rb28
-rw-r--r--spec/ruby/library/complex/math/shared/exp.rb28
-rw-r--r--spec/ruby/library/complex/math/shared/log.rb39
-rw-r--r--spec/ruby/library/complex/math/shared/log10.rb41
-rw-r--r--spec/ruby/library/complex/math/shared/sin.rb30
-rw-r--r--spec/ruby/library/complex/math/shared/sinh.rb28
-rw-r--r--spec/ruby/library/complex/math/shared/sqrt.rb34
-rw-r--r--spec/ruby/library/complex/math/shared/tan.rb28
-rw-r--r--spec/ruby/library/complex/math/shared/tanh.rb32
-rw-r--r--spec/ruby/library/complex/math/sin_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/sinh_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/sqrt_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/tan_spec.rb15
-rw-r--r--spec/ruby/library/complex/math/tanh_spec.rb15
-rw-r--r--spec/ruby/library/complex/numeric/im_spec.rb3
-rw-r--r--spec/ruby/library/conditionvariable/broadcast_spec.rb67
-rw-r--r--spec/ruby/library/conditionvariable/marshal_dump_spec.rb9
-rw-r--r--spec/ruby/library/conditionvariable/signal_spec.rb69
-rw-r--r--spec/ruby/library/conditionvariable/wait_spec.rb25
-rw-r--r--spec/ruby/library/coverage/fixtures/eval_code.rb11
-rw-r--r--spec/ruby/library/coverage/fixtures/spec_helper.rb11
-rw-r--r--spec/ruby/library/coverage/peek_result_spec.rb105
-rw-r--r--spec/ruby/library/coverage/result_spec.rb93
-rw-r--r--spec/ruby/library/coverage/running_spec.rb20
-rw-r--r--spec/ruby/library/coverage/start_spec.rb10
-rw-r--r--spec/ruby/library/csv/basicwriter/close_on_terminate_spec.rb2
-rw-r--r--spec/ruby/library/csv/basicwriter/initialize_spec.rb2
-rw-r--r--spec/ruby/library/csv/basicwriter/terminate_spec.rb2
-rw-r--r--spec/ruby/library/csv/cell/data_spec.rb2
-rw-r--r--spec/ruby/library/csv/cell/initialize_spec.rb2
-rw-r--r--spec/ruby/library/csv/foreach_spec.rb2
-rw-r--r--spec/ruby/library/csv/generate_line_spec.rb2
-rw-r--r--spec/ruby/library/csv/generate_row_spec.rb2
-rw-r--r--spec/ruby/library/csv/generate_spec.rb4
-rw-r--r--spec/ruby/library/csv/iobuf/close_spec.rb2
-rw-r--r--spec/ruby/library/csv/iobuf/initialize_spec.rb2
-rw-r--r--spec/ruby/library/csv/iobuf/read_spec.rb2
-rw-r--r--spec/ruby/library/csv/iobuf/terminate_spec.rb2
-rw-r--r--spec/ruby/library/csv/ioreader/close_on_terminate_spec.rb2
-rw-r--r--spec/ruby/library/csv/ioreader/get_row_spec.rb2
-rw-r--r--spec/ruby/library/csv/ioreader/initialize_spec.rb2
-rw-r--r--spec/ruby/library/csv/ioreader/terminate_spec.rb2
-rw-r--r--spec/ruby/library/csv/liberal_parsing_spec.rb28
-rw-r--r--spec/ruby/library/csv/open_spec.rb2
-rw-r--r--spec/ruby/library/csv/parse_spec.rb12
-rw-r--r--spec/ruby/library/csv/read_spec.rb2
-rw-r--r--spec/ruby/library/csv/readlines_spec.rb14
-rw-r--r--spec/ruby/library/csv/streambuf/add_buf_spec.rb2
-rw-r--r--spec/ruby/library/csv/streambuf/buf_size_spec.rb2
-rw-r--r--spec/ruby/library/csv/streambuf/drop_spec.rb2
-rw-r--r--spec/ruby/library/csv/streambuf/element_reference_spec.rb2
-rw-r--r--spec/ruby/library/csv/streambuf/get_spec.rb2
-rw-r--r--spec/ruby/library/csv/streambuf/idx_is_eos_spec.rb2
-rw-r--r--spec/ruby/library/csv/streambuf/initialize_spec.rb2
-rw-r--r--spec/ruby/library/csv/streambuf/is_eos_spec.rb2
-rw-r--r--spec/ruby/library/csv/streambuf/read_spec.rb2
-rw-r--r--spec/ruby/library/csv/streambuf/rel_buf_spec.rb2
-rw-r--r--spec/ruby/library/csv/streambuf/terminate_spec.rb2
-rw-r--r--spec/ruby/library/csv/stringreader/get_row_spec.rb2
-rw-r--r--spec/ruby/library/csv/stringreader/initialize_spec.rb2
-rw-r--r--spec/ruby/library/csv/writer/add_row_spec.rb2
-rw-r--r--spec/ruby/library/csv/writer/append_spec.rb2
-rw-r--r--spec/ruby/library/csv/writer/close_spec.rb2
-rw-r--r--spec/ruby/library/csv/writer/create_spec.rb2
-rw-r--r--spec/ruby/library/csv/writer/generate_spec.rb2
-rw-r--r--spec/ruby/library/csv/writer/initialize_spec.rb2
-rw-r--r--spec/ruby/library/csv/writer/terminate_spec.rb2
-rw-r--r--spec/ruby/library/date/accessor_spec.rb2
-rw-r--r--spec/ruby/library/date/add_month_spec.rb10
-rw-r--r--spec/ruby/library/date/add_spec.rb10
-rw-r--r--spec/ruby/library/date/ajd_spec.rb2
-rw-r--r--spec/ruby/library/date/ajd_to_amjd_spec.rb2
-rw-r--r--spec/ruby/library/date/ajd_to_jd_spec.rb2
-rw-r--r--spec/ruby/library/date/amjd_spec.rb2
-rw-r--r--spec/ruby/library/date/amjd_to_ajd_spec.rb2
-rw-r--r--spec/ruby/library/date/append_spec.rb2
-rw-r--r--spec/ruby/library/date/asctime_spec.rb2
-rw-r--r--spec/ruby/library/date/boat_spec.rb2
-rw-r--r--spec/ruby/library/date/case_compare_spec.rb2
-rw-r--r--spec/ruby/library/date/civil_spec.rb11
-rw-r--r--spec/ruby/library/date/commercial_spec.rb7
-rw-r--r--spec/ruby/library/date/commercial_to_jd_spec.rb2
-rw-r--r--spec/ruby/library/date/comparison_spec.rb2
-rw-r--r--spec/ruby/library/date/constants_spec.rb10
-rw-r--r--spec/ruby/library/date/conversions_spec.rb2
-rw-r--r--spec/ruby/library/date/ctime_spec.rb2
-rw-r--r--spec/ruby/library/date/cwday_spec.rb2
-rw-r--r--spec/ruby/library/date/cweek_spec.rb2
-rw-r--r--spec/ruby/library/date/cwyear_spec.rb2
-rw-r--r--spec/ruby/library/date/day_fraction_spec.rb2
-rw-r--r--spec/ruby/library/date/day_fraction_to_time_spec.rb2
-rw-r--r--spec/ruby/library/date/day_spec.rb2
-rw-r--r--spec/ruby/library/date/downto_spec.rb2
-rw-r--r--spec/ruby/library/date/england_spec.rb2
-rw-r--r--spec/ruby/library/date/eql_spec.rb2
-rw-r--r--spec/ruby/library/date/format/bag/method_missing_spec.rb2
-rw-r--r--spec/ruby/library/date/format/bag/to_hash_spec.rb2
-rw-r--r--spec/ruby/library/date/friday_spec.rb2
-rw-r--r--spec/ruby/library/date/gregorian_leap_spec.rb3
-rw-r--r--spec/ruby/library/date/gregorian_spec.rb4
-rw-r--r--spec/ruby/library/date/hash_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity/abs_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity/coerce_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity/comparison_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity/d_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity/finite_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity/infinite_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity/nan_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity/uminus_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity/uplus_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity/zero_spec.rb2
-rw-r--r--spec/ruby/library/date/infinity_spec.rb16
-rw-r--r--spec/ruby/library/date/inspect_spec.rb2
-rw-r--r--spec/ruby/library/date/iso8601_spec.rb35
-rw-r--r--spec/ruby/library/date/italy_spec.rb2
-rw-r--r--spec/ruby/library/date/jd_spec.rb4
-rw-r--r--spec/ruby/library/date/jd_to_ajd_spec.rb2
-rw-r--r--spec/ruby/library/date/jd_to_civil_spec.rb2
-rw-r--r--spec/ruby/library/date/jd_to_commercial_spec.rb2
-rw-r--r--spec/ruby/library/date/jd_to_ld_spec.rb2
-rw-r--r--spec/ruby/library/date/jd_to_mjd_spec.rb2
-rw-r--r--spec/ruby/library/date/jd_to_ordinal_spec.rb2
-rw-r--r--spec/ruby/library/date/jd_to_wday_spec.rb2
-rw-r--r--spec/ruby/library/date/julian_leap_spec.rb2
-rw-r--r--spec/ruby/library/date/julian_spec.rb6
-rw-r--r--spec/ruby/library/date/ld_spec.rb2
-rw-r--r--spec/ruby/library/date/ld_to_jd_spec.rb2
-rw-r--r--spec/ruby/library/date/leap_spec.rb2
-rw-r--r--spec/ruby/library/date/mday_spec.rb2
-rw-r--r--spec/ruby/library/date/minus_month_spec.rb14
-rw-r--r--spec/ruby/library/date/minus_spec.rb8
-rw-r--r--spec/ruby/library/date/mjd_spec.rb2
-rw-r--r--spec/ruby/library/date/mjd_to_jd_spec.rb2
-rw-r--r--spec/ruby/library/date/mon_spec.rb2
-rw-r--r--spec/ruby/library/date/monday_spec.rb2
-rw-r--r--spec/ruby/library/date/month_spec.rb2
-rw-r--r--spec/ruby/library/date/new_spec.rb8
-rw-r--r--spec/ruby/library/date/new_start_spec.rb2
-rw-r--r--spec/ruby/library/date/next_day_spec.rb2
-rw-r--r--spec/ruby/library/date/next_month_spec.rb2
-rw-r--r--spec/ruby/library/date/next_spec.rb2
-rw-r--r--spec/ruby/library/date/next_year_spec.rb2
-rw-r--r--spec/ruby/library/date/ordinal_spec.rb5
-rw-r--r--spec/ruby/library/date/ordinal_to_jd_spec.rb2
-rw-r--r--spec/ruby/library/date/parse_spec.rb32
-rw-r--r--spec/ruby/library/date/plus_spec.rb4
-rw-r--r--spec/ruby/library/date/prev_day_spec.rb2
-rw-r--r--spec/ruby/library/date/prev_month_spec.rb2
-rw-r--r--spec/ruby/library/date/prev_year_spec.rb2
-rw-r--r--spec/ruby/library/date/relationship_spec.rb2
-rw-r--r--spec/ruby/library/date/rfc3339_spec.rb13
-rw-r--r--spec/ruby/library/date/right_shift_spec.rb2
-rw-r--r--spec/ruby/library/date/saturday_spec.rb2
-rw-r--r--spec/ruby/library/date/shared/civil.rb24
-rw-r--r--spec/ruby/library/date/shared/commercial.rb18
-rw-r--r--spec/ruby/library/date/shared/valid_jd.rb13
-rw-r--r--spec/ruby/library/date/start_spec.rb2
-rw-r--r--spec/ruby/library/date/step_spec.rb2
-rw-r--r--spec/ruby/library/date/strftime_spec.rb20
-rw-r--r--spec/ruby/library/date/strptime_spec.rb2
-rw-r--r--spec/ruby/library/date/succ_spec.rb2
-rw-r--r--spec/ruby/library/date/sunday_spec.rb2
-rw-r--r--spec/ruby/library/date/thursday_spec.rb2
-rw-r--r--spec/ruby/library/date/time_to_day_fraction_spec.rb2
-rw-r--r--spec/ruby/library/date/to_s_spec.rb2
-rw-r--r--spec/ruby/library/date/today_spec.rb2
-rw-r--r--spec/ruby/library/date/tuesday_spec.rb2
-rw-r--r--spec/ruby/library/date/upto_spec.rb2
-rw-r--r--spec/ruby/library/date/valid_civil_spec.rb5
-rw-r--r--spec/ruby/library/date/valid_commercial_spec.rb6
-rw-r--r--spec/ruby/library/date/valid_date_spec.rb4
-rw-r--r--spec/ruby/library/date/valid_jd_spec.rb5
-rw-r--r--spec/ruby/library/date/valid_ordinal_spec.rb5
-rw-r--r--spec/ruby/library/date/valid_time_spec.rb2
-rw-r--r--spec/ruby/library/date/wday_spec.rb2
-rw-r--r--spec/ruby/library/date/wednesday_spec.rb2
-rw-r--r--spec/ruby/library/date/yday_spec.rb2
-rw-r--r--spec/ruby/library/date/year_spec.rb2
-rw-r--r--spec/ruby/library/date/zone_to_diff_spec.rb2
-rw-r--r--spec/ruby/library/datetime/_strptime_spec.rb2
-rw-r--r--spec/ruby/library/datetime/add_spec.rb9
-rw-r--r--spec/ruby/library/datetime/civil_spec.rb2
-rw-r--r--spec/ruby/library/datetime/commercial_spec.rb2
-rw-r--r--spec/ruby/library/datetime/hour_spec.rb14
-rw-r--r--spec/ruby/library/datetime/httpdate_spec.rb2
-rw-r--r--spec/ruby/library/datetime/iso8601_spec.rb2
-rw-r--r--spec/ruby/library/datetime/jd_spec.rb2
-rw-r--r--spec/ruby/library/datetime/jisx0301_spec.rb2
-rw-r--r--spec/ruby/library/datetime/min_spec.rb4
-rw-r--r--spec/ruby/library/datetime/minute_spec.rb4
-rw-r--r--spec/ruby/library/datetime/new_offset_spec.rb2
-rw-r--r--spec/ruby/library/datetime/new_spec.rb4
-rw-r--r--spec/ruby/library/datetime/now_spec.rb6
-rw-r--r--spec/ruby/library/datetime/offset_spec.rb2
-rw-r--r--spec/ruby/library/datetime/ordinal_spec.rb2
-rw-r--r--spec/ruby/library/datetime/parse_spec.rb14
-rw-r--r--spec/ruby/library/datetime/rfc2822_spec.rb2
-rw-r--r--spec/ruby/library/datetime/rfc3339_spec.rb2
-rw-r--r--spec/ruby/library/datetime/rfc822_spec.rb2
-rw-r--r--spec/ruby/library/datetime/sec_fraction_spec.rb2
-rw-r--r--spec/ruby/library/datetime/sec_spec.rb4
-rw-r--r--spec/ruby/library/datetime/second_fraction_spec.rb2
-rw-r--r--spec/ruby/library/datetime/second_spec.rb4
-rw-r--r--spec/ruby/library/datetime/shared/min.rb12
-rw-r--r--spec/ruby/library/datetime/shared/sec.rb8
-rw-r--r--spec/ruby/library/datetime/strftime_spec.rb28
-rw-r--r--spec/ruby/library/datetime/strptime_spec.rb2
-rw-r--r--spec/ruby/library/datetime/subtract_spec.rb19
-rw-r--r--spec/ruby/library/datetime/to_date_spec.rb4
-rw-r--r--spec/ruby/library/datetime/to_datetime_spec.rb2
-rw-r--r--spec/ruby/library/datetime/to_s_spec.rb4
-rw-r--r--spec/ruby/library/datetime/to_time_spec.rb44
-rw-r--r--spec/ruby/library/datetime/xmlschema_spec.rb2
-rw-r--r--spec/ruby/library/datetime/zone_spec.rb2
-rw-r--r--spec/ruby/library/delegate/delegate_class/instance_method_spec.rb8
-rw-r--r--spec/ruby/library/delegate/delegate_class/instance_methods_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegate_class/private_instance_methods_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegate_class/protected_instance_methods_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegate_class/public_instance_methods_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegate_class/respond_to_missing_spec.rb1
-rw-r--r--spec/ruby/library/delegate/delegator/case_compare_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/compare_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/complement_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/eql_spec.rb59
-rw-r--r--spec/ruby/library/delegate/delegator/equal_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/equal_value_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/frozen_spec.rb10
-rw-r--r--spec/ruby/library/delegate/delegator/hash_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/marshal_spec.rb2
-rw-r--r--spec/ruby/library/delegate/delegator/method_spec.rb12
-rw-r--r--spec/ruby/library/delegate/delegator/methods_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/not_equal_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/not_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/private_methods_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/protected_methods_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/public_methods_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/send_spec.rb12
-rw-r--r--spec/ruby/library/delegate/delegator/taint_spec.rb19
-rw-r--r--spec/ruby/library/delegate/delegator/tap_spec.rb4
-rw-r--r--spec/ruby/library/delegate/delegator/trust_spec.rb18
-rw-r--r--spec/ruby/library/delegate/delegator/untaint_spec.rb22
-rw-r--r--spec/ruby/library/delegate/delegator/untrust_spec.rb19
-rw-r--r--spec/ruby/library/digest/bubblebabble_spec.rb10
-rw-r--r--spec/ruby/library/digest/hexencode_spec.rb8
-rw-r--r--spec/ruby/library/digest/instance/append_spec.rb7
-rw-r--r--spec/ruby/library/digest/instance/new_spec.rb19
-rw-r--r--spec/ruby/library/digest/instance/shared/update.rb8
-rw-r--r--spec/ruby/library/digest/instance/update_spec.rb7
-rw-r--r--spec/ruby/library/digest/md5/append_spec.rb8
-rw-r--r--spec/ruby/library/digest/md5/block_length_spec.rb5
-rw-r--r--spec/ruby/library/digest/md5/digest_bang_spec.rb4
-rw-r--r--spec/ruby/library/digest/md5/digest_length_spec.rb5
-rw-r--r--spec/ruby/library/digest/md5/digest_spec.rb4
-rw-r--r--spec/ruby/library/digest/md5/equal_spec.rb5
-rw-r--r--spec/ruby/library/digest/md5/file_spec.rb10
-rw-r--r--spec/ruby/library/digest/md5/hexdigest_bang_spec.rb4
-rw-r--r--spec/ruby/library/digest/md5/hexdigest_spec.rb4
-rw-r--r--spec/ruby/library/digest/md5/inspect_spec.rb5
-rw-r--r--spec/ruby/library/digest/md5/length_spec.rb7
-rw-r--r--spec/ruby/library/digest/md5/reset_spec.rb5
-rw-r--r--spec/ruby/library/digest/md5/shared/constants.rb1
-rw-r--r--spec/ruby/library/digest/md5/size_spec.rb7
-rw-r--r--spec/ruby/library/digest/md5/to_s_spec.rb4
-rw-r--r--spec/ruby/library/digest/md5/update_spec.rb6
-rw-r--r--spec/ruby/library/digest/sha1/digest_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha1/file_spec.rb10
-rw-r--r--spec/ruby/library/digest/sha1/shared/constants.rb3
-rw-r--r--spec/ruby/library/digest/sha2/hexdigest_spec.rb32
-rw-r--r--spec/ruby/library/digest/sha256/append_spec.rb8
-rw-r--r--spec/ruby/library/digest/sha256/block_length_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha256/digest_bang_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha256/digest_length_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha256/digest_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha256/equal_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha256/file_spec.rb14
-rw-r--r--spec/ruby/library/digest/sha256/hexdigest_bang_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha256/hexdigest_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha256/inspect_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha256/length_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha256/reset_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha256/shared/constants.rb1
-rw-r--r--spec/ruby/library/digest/sha256/size_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha256/to_s_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha256/update_spec.rb6
-rw-r--r--spec/ruby/library/digest/sha384/append_spec.rb8
-rw-r--r--spec/ruby/library/digest/sha384/block_length_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha384/digest_bang_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha384/digest_length_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha384/digest_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha384/equal_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha384/file_spec.rb10
-rw-r--r--spec/ruby/library/digest/sha384/hexdigest_bang_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha384/hexdigest_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha384/inspect_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha384/length_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha384/reset_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha384/shared/constants.rb1
-rw-r--r--spec/ruby/library/digest/sha384/size_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha384/to_s_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha384/update_spec.rb6
-rw-r--r--spec/ruby/library/digest/sha512/append_spec.rb8
-rw-r--r--spec/ruby/library/digest/sha512/block_length_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha512/digest_bang_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha512/digest_length_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha512/digest_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha512/equal_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha512/file_spec.rb10
-rw-r--r--spec/ruby/library/digest/sha512/hexdigest_bang_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha512/hexdigest_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha512/inspect_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha512/length_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha512/reset_spec.rb5
-rw-r--r--spec/ruby/library/digest/sha512/shared/constants.rb1
-rw-r--r--spec/ruby/library/digest/sha512/size_spec.rb7
-rw-r--r--spec/ruby/library/digest/sha512/to_s_spec.rb4
-rw-r--r--spec/ruby/library/digest/sha512/update_spec.rb6
-rw-r--r--spec/ruby/library/drb/start_service_spec.rb4
-rw-r--r--spec/ruby/library/erb/def_class_spec.rb2
-rw-r--r--spec/ruby/library/erb/def_method_spec.rb2
-rw-r--r--spec/ruby/library/erb/def_module_spec.rb2
-rw-r--r--spec/ruby/library/erb/defmethod/def_erb_method_spec.rb5
-rw-r--r--spec/ruby/library/erb/filename_spec.rb6
-rw-r--r--spec/ruby/library/erb/fixtures/classes.rb5
-rw-r--r--spec/ruby/library/erb/new_spec.rb57
-rw-r--r--spec/ruby/library/erb/result_spec.rb6
-rw-r--r--spec/ruby/library/erb/run_spec.rb7
-rw-r--r--spec/ruby/library/erb/src_spec.rb2
-rw-r--r--spec/ruby/library/erb/util/h_spec.rb4
-rw-r--r--spec/ruby/library/erb/util/html_escape_spec.rb5
-rw-r--r--spec/ruby/library/erb/util/shared/url_encode.rb16
-rw-r--r--spec/ruby/library/erb/util/u_spec.rb5
-rw-r--r--spec/ruby/library/erb/util/url_encode_spec.rb4
-rw-r--r--spec/ruby/library/etc/confstr_spec.rb14
-rw-r--r--spec/ruby/library/etc/endgrent_spec.rb6
-rw-r--r--spec/ruby/library/etc/endpwent_spec.rb6
-rw-r--r--spec/ruby/library/etc/getgrent_spec.rb6
-rw-r--r--spec/ruby/library/etc/getgrgid_spec.rb87
-rw-r--r--spec/ruby/library/etc/getgrnam_spec.rb6
-rw-r--r--spec/ruby/library/etc/getlogin_spec.rb9
-rw-r--r--spec/ruby/library/etc/getpwent_spec.rb6
-rw-r--r--spec/ruby/library/etc/getpwnam_spec.rb4
-rw-r--r--spec/ruby/library/etc/getpwuid_spec.rb4
-rw-r--r--spec/ruby/library/etc/group_spec.rb17
-rw-r--r--spec/ruby/library/etc/nprocessors_spec.rb2
-rw-r--r--spec/ruby/library/etc/passwd_spec.rb15
-rw-r--r--spec/ruby/library/etc/struct_group_spec.rb10
-rw-r--r--spec/ruby/library/etc/struct_passwd_spec.rb4
-rw-r--r--spec/ruby/library/etc/sysconf_spec.rb22
-rw-r--r--spec/ruby/library/etc/sysconfdir_spec.rb8
-rw-r--r--spec/ruby/library/etc/systmpdir_spec.rb8
-rw-r--r--spec/ruby/library/expect/expect_spec.rb5
-rw-r--r--spec/ruby/library/fiber/alive_spec.rb76
-rw-r--r--spec/ruby/library/fiber/current_spec.rb96
-rw-r--r--spec/ruby/library/fiber/resume_spec.rb31
-rw-r--r--spec/ruby/library/fiber/transfer_spec.rb137
-rw-r--r--spec/ruby/library/fiddle/handle/initialize_spec.rb10
-rw-r--r--spec/ruby/library/find/find_spec.rb4
-rw-r--r--spec/ruby/library/find/prune_spec.rb2
-rw-r--r--spec/ruby/library/getoptlong/each_option_spec.rb6
-rw-r--r--spec/ruby/library/getoptlong/each_spec.rb6
-rw-r--r--spec/ruby/library/getoptlong/error_message_spec.rb2
-rw-r--r--spec/ruby/library/getoptlong/get_option_spec.rb6
-rw-r--r--spec/ruby/library/getoptlong/get_spec.rb6
-rw-r--r--spec/ruby/library/getoptlong/initialize_spec.rb2
-rw-r--r--spec/ruby/library/getoptlong/ordering_spec.rb6
-rw-r--r--spec/ruby/library/getoptlong/set_options_spec.rb16
-rw-r--r--spec/ruby/library/getoptlong/shared/get.rb12
-rw-r--r--spec/ruby/library/getoptlong/terminate_spec.rb4
-rw-r--r--spec/ruby/library/getoptlong/terminated_spec.rb8
-rw-r--r--spec/ruby/library/io-wait/fixtures/classes.rb12
-rw-r--r--spec/ruby/library/io-wait/wait_readable_spec.rb27
-rw-r--r--spec/ruby/library/io-wait/wait_spec.rb148
-rw-r--r--spec/ruby/library/io-wait/wait_writable_spec.rb20
-rw-r--r--spec/ruby/library/ipaddr/hton_spec.rb2
-rw-r--r--spec/ruby/library/ipaddr/ipv4_conversion_spec.rb12
-rw-r--r--spec/ruby/library/ipaddr/new_spec.rb57
-rw-r--r--spec/ruby/library/ipaddr/operator_spec.rb17
-rw-r--r--spec/ruby/library/ipaddr/reverse_spec.rb6
-rw-r--r--spec/ruby/library/ipaddr/to_s_spec.rb2
-rw-r--r--spec/ruby/library/logger/device/close_spec.rb19
-rw-r--r--spec/ruby/library/logger/device/new_spec.rb12
-rw-r--r--spec/ruby/library/logger/device/write_spec.rb19
-rw-r--r--spec/ruby/library/logger/logger/add_spec.rb10
-rw-r--r--spec/ruby/library/logger/logger/close_spec.rb6
-rw-r--r--spec/ruby/library/logger/logger/datetime_format_spec.rb6
-rw-r--r--spec/ruby/library/logger/logger/debug_spec.rb8
-rw-r--r--spec/ruby/library/logger/logger/error_spec.rb8
-rw-r--r--spec/ruby/library/logger/logger/fatal_spec.rb8
-rw-r--r--spec/ruby/library/logger/logger/info_spec.rb8
-rw-r--r--spec/ruby/library/logger/logger/new_spec.rb98
-rw-r--r--spec/ruby/library/logger/logger/unknown_spec.rb6
-rw-r--r--spec/ruby/library/logger/logger/warn_spec.rb8
-rw-r--r--spec/ruby/library/logger/severity_spec.rb2
-rw-r--r--spec/ruby/library/mathn/bignum/exponent_spec.rb21
-rw-r--r--spec/ruby/library/mathn/complex/Complex_spec.rb14
-rw-r--r--spec/ruby/library/mathn/fixnum/exponent_spec.rb17
-rw-r--r--spec/ruby/library/mathn/float/exponent_spec.rb17
-rw-r--r--spec/ruby/library/mathn/integer/from_prime_division_spec.rb11
-rw-r--r--spec/ruby/library/mathn/integer/prime_division_spec.rb21
-rw-r--r--spec/ruby/library/mathn/math/fixtures/classes.rb3
-rw-r--r--spec/ruby/library/mathn/math/rsqrt_spec.rb17
-rw-r--r--spec/ruby/library/mathn/math/shared/rsqrt.rb21
-rw-r--r--spec/ruby/library/mathn/math/shared/sqrt.rb25
-rw-r--r--spec/ruby/library/mathn/math/sqrt_spec.rb17
-rw-r--r--spec/ruby/library/mathn/rational/Rational_spec.rb14
-rw-r--r--spec/ruby/library/mathn/rational/inspect_spec.rb15
-rw-r--r--spec/ruby/library/matrix/I_spec.rb11
-rw-r--r--spec/ruby/library/matrix/antisymmetric_spec.rb38
-rw-r--r--spec/ruby/library/matrix/build_spec.rb119
-rw-r--r--spec/ruby/library/matrix/clone_spec.rb39
-rw-r--r--spec/ruby/library/matrix/coerce_spec.rb13
-rw-r--r--spec/ruby/library/matrix/collect_spec.rb11
-rw-r--r--spec/ruby/library/matrix/column_size_spec.rb21
-rw-r--r--spec/ruby/library/matrix/column_spec.rb55
-rw-r--r--spec/ruby/library/matrix/column_vector_spec.rb39
-rw-r--r--spec/ruby/library/matrix/column_vectors_spec.rb39
-rw-r--r--spec/ruby/library/matrix/columns_spec.rb69
-rw-r--r--spec/ruby/library/matrix/conj_spec.rb11
-rw-r--r--spec/ruby/library/matrix/conjugate_spec.rb11
-rw-r--r--spec/ruby/library/matrix/constructor_spec.rb105
-rw-r--r--spec/ruby/library/matrix/det_spec.rb13
-rw-r--r--spec/ruby/library/matrix/determinant_spec.rb13
-rw-r--r--spec/ruby/library/matrix/diagonal_spec.rb107
-rw-r--r--spec/ruby/library/matrix/divide_spec.rb88
-rw-r--r--spec/ruby/library/matrix/each_spec.rb121
-rw-r--r--spec/ruby/library/matrix/each_with_index_spec.rb135
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalue_matrix_spec.rb15
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/eigenvalues_spec.rb37
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/eigenvector_matrix_spec.rb35
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/eigenvectors_spec.rb39
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/initialize_spec.rb41
-rw-r--r--spec/ruby/library/matrix/eigenvalue_decomposition/to_a_spec.rb29
-rw-r--r--spec/ruby/library/matrix/element_reference_spec.rb33
-rw-r--r--spec/ruby/library/matrix/empty_spec.rb109
-rw-r--r--spec/ruby/library/matrix/eql_spec.rb17
-rw-r--r--spec/ruby/library/matrix/equal_value_spec.rb17
-rw-r--r--spec/ruby/library/matrix/exponent_spec.rb96
-rw-r--r--spec/ruby/library/matrix/find_index_spec.rb223
-rw-r--r--spec/ruby/library/matrix/hash_spec.rb23
-rw-r--r--spec/ruby/library/matrix/hermitian_spec.rb55
-rw-r--r--spec/ruby/library/matrix/identity_spec.rb11
-rw-r--r--spec/ruby/library/matrix/imag_spec.rb11
-rw-r--r--spec/ruby/library/matrix/imaginary_spec.rb11
-rw-r--r--spec/ruby/library/matrix/inspect_spec.rb41
-rw-r--r--spec/ruby/library/matrix/inv_spec.rb13
-rw-r--r--spec/ruby/library/matrix/inverse_from_spec.rb11
-rw-r--r--spec/ruby/library/matrix/inverse_spec.rb13
-rw-r--r--spec/ruby/library/matrix/lower_triangular_spec.rb41
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/determinant_spec.rb35
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/initialize_spec.rb23
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/l_spec.rb29
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/p_spec.rb29
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/solve_spec.rb87
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/to_a_spec.rb55
-rw-r--r--spec/ruby/library/matrix/lup_decomposition/u_spec.rb29
-rw-r--r--spec/ruby/library/matrix/map_spec.rb11
-rw-r--r--spec/ruby/library/matrix/minor_spec.rb137
-rw-r--r--spec/ruby/library/matrix/minus_spec.rb69
-rw-r--r--spec/ruby/library/matrix/multiply_spec.rb107
-rw-r--r--spec/ruby/library/matrix/new_spec.rb13
-rw-r--r--spec/ruby/library/matrix/normal_spec.rb43
-rw-r--r--spec/ruby/library/matrix/orthogonal_spec.rb43
-rw-r--r--spec/ruby/library/matrix/permutation_spec.rb53
-rw-r--r--spec/ruby/library/matrix/plus_spec.rb69
-rw-r--r--spec/ruby/library/matrix/rank_spec.rb31
-rw-r--r--spec/ruby/library/matrix/real_spec.rb66
-rw-r--r--spec/ruby/library/matrix/rect_spec.rb11
-rw-r--r--spec/ruby/library/matrix/rectangular_spec.rb11
-rw-r--r--spec/ruby/library/matrix/regular_spec.rb47
-rw-r--r--spec/ruby/library/matrix/round_spec.rb33
-rw-r--r--spec/ruby/library/matrix/row_size_spec.rb21
-rw-r--r--spec/ruby/library/matrix/row_spec.rb57
-rw-r--r--spec/ruby/library/matrix/row_vector_spec.rb35
-rw-r--r--spec/ruby/library/matrix/row_vectors_spec.rb39
-rw-r--r--spec/ruby/library/matrix/rows_spec.rb67
-rw-r--r--spec/ruby/library/matrix/scalar/Fail_spec.rb11
-rw-r--r--spec/ruby/library/matrix/scalar/Raise_spec.rb11
-rw-r--r--spec/ruby/library/matrix/scalar/divide_spec.rb11
-rw-r--r--spec/ruby/library/matrix/scalar/exponent_spec.rb11
-rw-r--r--spec/ruby/library/matrix/scalar/included_spec.rb11
-rw-r--r--spec/ruby/library/matrix/scalar/initialize_spec.rb11
-rw-r--r--spec/ruby/library/matrix/scalar/minus_spec.rb11
-rw-r--r--spec/ruby/library/matrix/scalar/multiply_spec.rb11
-rw-r--r--spec/ruby/library/matrix/scalar/plus_spec.rb11
-rw-r--r--spec/ruby/library/matrix/scalar_spec.rb95
-rw-r--r--spec/ruby/library/matrix/shared/collect.rb2
-rw-r--r--spec/ruby/library/matrix/shared/conjugate.rb2
-rw-r--r--spec/ruby/library/matrix/shared/determinant.rb4
-rw-r--r--spec/ruby/library/matrix/shared/equal_value.rb2
-rw-r--r--spec/ruby/library/matrix/shared/identity.rb2
-rw-r--r--spec/ruby/library/matrix/shared/imaginary.rb2
-rw-r--r--spec/ruby/library/matrix/shared/inverse.rb4
-rw-r--r--spec/ruby/library/matrix/shared/rectangular.rb2
-rw-r--r--spec/ruby/library/matrix/shared/trace.rb2
-rw-r--r--spec/ruby/library/matrix/shared/transpose.rb2
-rw-r--r--spec/ruby/library/matrix/singular_spec.rb49
-rw-r--r--spec/ruby/library/matrix/square_spec.rb43
-rw-r--r--spec/ruby/library/matrix/symmetric_spec.rb47
-rw-r--r--spec/ruby/library/matrix/t_spec.rb11
-rw-r--r--spec/ruby/library/matrix/to_a_spec.rb19
-rw-r--r--spec/ruby/library/matrix/to_s_spec.rb11
-rw-r--r--spec/ruby/library/matrix/tr_spec.rb13
-rw-r--r--spec/ruby/library/matrix/trace_spec.rb13
-rw-r--r--spec/ruby/library/matrix/transpose_spec.rb11
-rw-r--r--spec/ruby/library/matrix/unit_spec.rb11
-rw-r--r--spec/ruby/library/matrix/unitary_spec.rb52
-rw-r--r--spec/ruby/library/matrix/upper_triangular_spec.rb41
-rw-r--r--spec/ruby/library/matrix/vector/cross_product_spec.rb23
-rw-r--r--spec/ruby/library/matrix/vector/each2_spec.rb83
-rw-r--r--spec/ruby/library/matrix/vector/eql_spec.rb25
-rw-r--r--spec/ruby/library/matrix/vector/inner_product_spec.rb35
-rw-r--r--spec/ruby/library/matrix/vector/normalize_spec.rb31
-rw-r--r--spec/ruby/library/matrix/zero_spec.rb77
-rw-r--r--spec/ruby/library/mkmf/mkmf_spec.rb7
-rw-r--r--spec/ruby/library/monitor/enter_spec.rb28
-rw-r--r--spec/ruby/library/monitor/exit_spec.rb10
-rw-r--r--spec/ruby/library/monitor/mon_initialize_spec.rb31
-rw-r--r--spec/ruby/library/monitor/new_cond_spec.rb88
-rw-r--r--spec/ruby/library/monitor/synchronize_spec.rb41
-rw-r--r--spec/ruby/library/monitor/try_enter_spec.rb39
-rw-r--r--spec/ruby/library/net/FTPError_spec.rb13
-rw-r--r--spec/ruby/library/net/FTPPermError_spec.rb19
-rw-r--r--spec/ruby/library/net/FTPProtoError_spec.rb19
-rw-r--r--spec/ruby/library/net/FTPReplyError_spec.rb19
-rw-r--r--spec/ruby/library/net/FTPTempError_spec.rb19
-rw-r--r--spec/ruby/library/net/ftp/abort_spec.rb99
-rw-r--r--spec/ruby/library/net/ftp/acct_spec.rb115
-rw-r--r--spec/ruby/library/net/ftp/binary_spec.rb35
-rw-r--r--spec/ruby/library/net/ftp/chdir_spec.rb147
-rw-r--r--spec/ruby/library/net/ftp/close_spec.rb49
-rw-r--r--spec/ruby/library/net/ftp/closed_spec.rb33
-rw-r--r--spec/ruby/library/net/ftp/connect_spec.rb97
-rw-r--r--spec/ruby/library/net/ftp/debug_mode_spec.rb35
-rw-r--r--spec/ruby/library/net/ftp/default_passive_spec.rb7
-rw-r--r--spec/ruby/library/net/ftp/delete_spec.rb117
-rw-r--r--spec/ruby/library/net/ftp/dir_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/fixtures/server.rb4
-rw-r--r--spec/ruby/library/net/ftp/get_spec.rb33
-rw-r--r--spec/ruby/library/net/ftp/getbinaryfile_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/getdir_spec.rb13
-rw-r--r--spec/ruby/library/net/ftp/gettextfile_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/help_spec.rb105
-rw-r--r--spec/ruby/library/net/ftp/initialize_spec.rb449
-rw-r--r--spec/ruby/library/net/ftp/last_response_code_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/last_response_spec.rb41
-rw-r--r--spec/ruby/library/net/ftp/lastresp_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/list_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/login_spec.rb381
-rw-r--r--spec/ruby/library/net/ftp/ls_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/mdtm_spec.rb61
-rw-r--r--spec/ruby/library/net/ftp/mkdir_spec.rb99
-rw-r--r--spec/ruby/library/net/ftp/mtime_spec.rb75
-rw-r--r--spec/ruby/library/net/ftp/nlst_spec.rb145
-rw-r--r--spec/ruby/library/net/ftp/noop_spec.rb61
-rw-r--r--spec/ruby/library/net/ftp/open_spec.rb75
-rw-r--r--spec/ruby/library/net/ftp/passive_spec.rb39
-rw-r--r--spec/ruby/library/net/ftp/put_spec.rb33
-rw-r--r--spec/ruby/library/net/ftp/putbinaryfile_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/puttextfile_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/pwd_spec.rb105
-rw-r--r--spec/ruby/library/net/ftp/quit_spec.rb53
-rw-r--r--spec/ruby/library/net/ftp/rename_spec.rb161
-rw-r--r--spec/ruby/library/net/ftp/resume_spec.rb35
-rw-r--r--spec/ruby/library/net/ftp/retrbinary_spec.rb49
-rw-r--r--spec/ruby/library/net/ftp/retrlines_spec.rb57
-rw-r--r--spec/ruby/library/net/ftp/return_code_spec.rb37
-rw-r--r--spec/ruby/library/net/ftp/rmdir_spec.rb115
-rw-r--r--spec/ruby/library/net/ftp/sendcmd_spec.rb107
-rw-r--r--spec/ruby/library/net/ftp/set_socket_spec.rb15
-rw-r--r--spec/ruby/library/net/ftp/shared/getbinaryfile.rb32
-rw-r--r--spec/ruby/library/net/ftp/shared/gettextfile.rb20
-rw-r--r--spec/ruby/library/net/ftp/shared/list.rb20
-rw-r--r--spec/ruby/library/net/ftp/shared/putbinaryfile.rb36
-rw-r--r--spec/ruby/library/net/ftp/shared/puttextfile.rb24
-rw-r--r--spec/ruby/library/net/ftp/site_spec.rb105
-rw-r--r--spec/ruby/library/net/ftp/size_spec.rb95
-rw-r--r--spec/ruby/library/net/ftp/status_spec.rb103
-rw-r--r--spec/ruby/library/net/ftp/storbinary_spec.rb75
-rw-r--r--spec/ruby/library/net/ftp/storlines_spec.rb67
-rw-r--r--spec/ruby/library/net/ftp/system_spec.rb95
-rw-r--r--spec/ruby/library/net/ftp/voidcmd_spec.rb107
-rw-r--r--spec/ruby/library/net/ftp/welcome_spec.rb41
-rw-r--r--spec/ruby/library/net/http/HTTPBadResponse_spec.rb2
-rw-r--r--spec/ruby/library/net/http/HTTPClientExcepton_spec.rb12
-rw-r--r--spec/ruby/library/net/http/HTTPError_spec.rb2
-rw-r--r--spec/ruby/library/net/http/HTTPFatalError_spec.rb2
-rw-r--r--spec/ruby/library/net/http/HTTPHeaderSyntaxError_spec.rb2
-rw-r--r--spec/ruby/library/net/http/HTTPRetriableError_spec.rb2
-rw-r--r--spec/ruby/library/net/http/HTTPServerException_spec.rb10
-rw-r--r--spec/ruby/library/net/http/http/Proxy_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/active_spec.rb6
-rw-r--r--spec/ruby/library/net/http/http/address_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/close_on_empty_response_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/copy_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/default_port_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/delete_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/finish_spec.rb6
-rw-r--r--spec/ruby/library/net/http/http/fixtures/http_server.rb150
-rw-r--r--spec/ruby/library/net/http/http/get2_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/get_print_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/get_response_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/get_spec.rb76
-rw-r--r--spec/ruby/library/net/http/http/head2_spec.rb9
-rw-r--r--spec/ruby/library/net/http/http/head_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/http_default_port_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/https_default_port_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/initialize_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/inspect_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/is_version_1_1_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/is_version_1_2_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/lock_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/mkcol_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/move_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/new_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/newobj_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/open_timeout_spec.rb23
-rw-r--r--spec/ruby/library/net/http/http/options_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/port_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/post2_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/post_form_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/post_spec.rb61
-rw-r--r--spec/ruby/library/net/http/http/propfind_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/proppatch_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/proxy_address_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/proxy_class_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/proxy_pass_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/proxy_port_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/proxy_user_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/put2_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/put_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/read_timeout_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/request_get_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/request_head_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/request_post_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/request_put_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/request_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/request_types_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/send_request_spec.rb8
-rw-r--r--spec/ruby/library/net/http/http/set_debug_output_spec.rb6
-rw-r--r--spec/ruby/library/net/http/http/shared/request_get.rb2
-rw-r--r--spec/ruby/library/net/http/http/shared/request_head.rb2
-rw-r--r--spec/ruby/library/net/http/http/shared/request_post.rb2
-rw-r--r--spec/ruby/library/net/http/http/shared/request_put.rb2
-rw-r--r--spec/ruby/library/net/http/http/socket_type_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/start_spec.rb6
-rw-r--r--spec/ruby/library/net/http/http/started_spec.rb6
-rw-r--r--spec/ruby/library/net/http/http/trace_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/unlock_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/use_ssl_spec.rb2
-rw-r--r--spec/ruby/library/net/http/http/version_1_1_spec.rb4
-rw-r--r--spec/ruby/library/net/http/http/version_1_2_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpexceptions/initialize_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpexceptions/response_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/body_exist_spec.rb7
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/body_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/body_stream_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/exec_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/inspect_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/method_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/path_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/request_body_permitted_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/response_body_permitted_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpgenericrequest/set_body_internal_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/add_field_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/basic_auth_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/canonical_each_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/chunked_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/content_length_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/content_range_spec.rb10
-rw-r--r--spec/ruby/library/net/http/httpheader/content_type_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/delete_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/each_capitalized_name_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/each_capitalized_spec.rb7
-rw-r--r--spec/ruby/library/net/http/httpheader/each_header_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/each_key_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/each_name_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/each_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/each_value_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/element_reference_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/element_set_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/fetch_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/form_data_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/get_fields_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/initialize_http_header_spec.rb9
-rw-r--r--spec/ruby/library/net/http/httpheader/key_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/length_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/main_type_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/proxy_basic_auth_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/range_length_spec.rb10
-rw-r--r--spec/ruby/library/net/http/httpheader/range_spec.rb14
-rw-r--r--spec/ruby/library/net/http/httpheader/set_content_type_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/set_form_data_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/set_range_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/shared/set_range.rb12
-rw-r--r--spec/ruby/library/net/http/httpheader/size_spec.rb6
-rw-r--r--spec/ruby/library/net/http/httpheader/sub_type_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/to_hash_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpheader/type_params_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httprequest/initialize_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/body_permitted_spec.rb14
-rw-r--r--spec/ruby/library/net/http/httpresponse/body_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpresponse/code_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/code_type_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/entity_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpresponse/error_spec.rb14
-rw-r--r--spec/ruby/library/net/http/httpresponse/error_type_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpresponse/exception_type_spec.rb4
-rw-r--r--spec/ruby/library/net/http/httpresponse/header_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/http_version_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/initialize_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/inspect_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/message_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/msg_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/read_body_spec.rb12
-rw-r--r--spec/ruby/library/net/http/httpresponse/read_header_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/read_new_spec.rb3
-rw-r--r--spec/ruby/library/net/http/httpresponse/reading_body_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/response_spec.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/shared/body.rb2
-rw-r--r--spec/ruby/library/net/http/httpresponse/value_spec.rb14
-rw-r--r--spec/ruby/library/objectspace/dump_all_spec.rb114
-rw-r--r--spec/ruby/library/objectspace/dump_spec.rb74
-rw-r--r--spec/ruby/library/objectspace/fixtures/trace.rb5
-rw-r--r--spec/ruby/library/objectspace/memsize_of_all_spec.rb22
-rw-r--r--spec/ruby/library/objectspace/memsize_of_spec.rb34
-rw-r--r--spec/ruby/library/objectspace/reachable_objects_from_spec.rb61
-rw-r--r--spec/ruby/library/objectspace/trace_object_allocations_spec.rb149
-rw-r--r--spec/ruby/library/objectspace/trace_spec.rb15
-rw-r--r--spec/ruby/library/observer/add_observer_spec.rb4
-rw-r--r--spec/ruby/library/observer/count_observers_spec.rb4
-rw-r--r--spec/ruby/library/observer/delete_observer_spec.rb4
-rw-r--r--spec/ruby/library/observer/delete_observers_spec.rb4
-rw-r--r--spec/ruby/library/observer/notify_observers_spec.rb6
-rw-r--r--spec/ruby/library/open3/capture2_spec.rb2
-rw-r--r--spec/ruby/library/open3/capture2e_spec.rb2
-rw-r--r--spec/ruby/library/open3/capture3_spec.rb2
-rw-r--r--spec/ruby/library/open3/pipeline_r_spec.rb2
-rw-r--r--spec/ruby/library/open3/pipeline_rw_spec.rb2
-rw-r--r--spec/ruby/library/open3/pipeline_spec.rb2
-rw-r--r--spec/ruby/library/open3/pipeline_start_spec.rb2
-rw-r--r--spec/ruby/library/open3/pipeline_w_spec.rb2
-rw-r--r--spec/ruby/library/open3/popen2_spec.rb2
-rw-r--r--spec/ruby/library/open3/popen2e_spec.rb2
-rw-r--r--spec/ruby/library/open3/popen3_spec.rb4
-rw-r--r--spec/ruby/library/openssl/cipher_spec.rb4
-rw-r--r--spec/ruby/library/openssl/config/freeze_spec.rb30
-rw-r--r--spec/ruby/library/openssl/digest_spec.rb63
-rw-r--r--spec/ruby/library/openssl/hmac/digest_spec.rb6
-rw-r--r--spec/ruby/library/openssl/hmac/hexdigest_spec.rb6
-rw-r--r--spec/ruby/library/openssl/random/pseudo_bytes_spec.rb4
-rw-r--r--spec/ruby/library/openssl/random/random_bytes_spec.rb4
-rw-r--r--spec/ruby/library/openssl/random/shared/random_bytes.rb4
-rw-r--r--spec/ruby/library/openssl/x509/name/parse_spec.rb6
-rw-r--r--spec/ruby/library/openssl/x509/name/verify_spec.rb78
-rw-r--r--spec/ruby/library/openstruct/delete_field_spec.rb2
-rw-r--r--spec/ruby/library/openstruct/element_reference_spec.rb2
-rw-r--r--spec/ruby/library/openstruct/element_set_spec.rb2
-rw-r--r--spec/ruby/library/openstruct/equal_value_spec.rb4
-rw-r--r--spec/ruby/library/openstruct/frozen_spec.rb14
-rw-r--r--spec/ruby/library/openstruct/initialize_spec.rb2
-rw-r--r--spec/ruby/library/openstruct/inspect_spec.rb6
-rw-r--r--spec/ruby/library/openstruct/marshal_dump_spec.rb2
-rw-r--r--spec/ruby/library/openstruct/marshal_load_spec.rb4
-rw-r--r--spec/ruby/library/openstruct/method_missing_spec.rb37
-rw-r--r--spec/ruby/library/openstruct/new_spec.rb2
-rw-r--r--spec/ruby/library/openstruct/to_h_spec.rb41
-rw-r--r--spec/ruby/library/openstruct/to_s_spec.rb6
-rw-r--r--spec/ruby/library/optionparser/order_spec.rb38
-rw-r--r--spec/ruby/library/optionparser/parse_spec.rb38
-rw-r--r--spec/ruby/library/pathname/absolute_spec.rb11
-rw-r--r--spec/ruby/library/pathname/birthtime_spec.rb16
-rw-r--r--spec/ruby/library/pathname/divide_spec.rb6
-rw-r--r--spec/ruby/library/pathname/empty_spec.rb48
-rw-r--r--spec/ruby/library/pathname/equal_value_spec.rb3
-rw-r--r--spec/ruby/library/pathname/glob_spec.rb84
-rw-r--r--spec/ruby/library/pathname/hash_spec.rb3
-rw-r--r--spec/ruby/library/pathname/inspect_spec.rb10
-rw-r--r--spec/ruby/library/pathname/join_spec.rb2
-rw-r--r--spec/ruby/library/pathname/new_spec.rb17
-rw-r--r--spec/ruby/library/pathname/parent_spec.rb3
-rw-r--r--spec/ruby/library/pathname/pathname_spec.rb19
-rw-r--r--spec/ruby/library/pathname/plus_spec.rb6
-rw-r--r--spec/ruby/library/pathname/realdirpath_spec.rb2
-rw-r--r--spec/ruby/library/pathname/realpath_spec.rb2
-rw-r--r--spec/ruby/library/pathname/relative_path_from_spec.rb6
-rw-r--r--spec/ruby/library/pathname/relative_spec.rb11
-rw-r--r--spec/ruby/library/pathname/root_spec.rb13
-rw-r--r--spec/ruby/library/pathname/shared/plus.rb8
-rw-r--r--spec/ruby/library/pathname/sub_spec.rb3
-rw-r--r--spec/ruby/library/pp/pp_spec.rb13
-rw-r--r--spec/ruby/library/prime/each_spec.rb249
-rw-r--r--spec/ruby/library/prime/instance_spec.rb33
-rw-r--r--spec/ruby/library/prime/int_from_prime_division_spec.rb21
-rw-r--r--spec/ruby/library/prime/integer/each_prime_spec.rb21
-rw-r--r--spec/ruby/library/prime/integer/from_prime_division_spec.rb21
-rw-r--r--spec/ruby/library/prime/integer/prime_division_spec.rb33
-rw-r--r--spec/ruby/library/prime/integer/prime_spec.rb29
-rw-r--r--spec/ruby/library/prime/next_spec.rb13
-rw-r--r--spec/ruby/library/prime/prime_division_spec.rb39
-rw-r--r--spec/ruby/library/prime/prime_spec.rb29
-rw-r--r--spec/ruby/library/prime/succ_spec.rb13
-rw-r--r--spec/ruby/library/rbconfig/rbconfig_spec.rb101
-rw-r--r--spec/ruby/library/rbconfig/sizeof/limits_spec.rb40
-rw-r--r--spec/ruby/library/rbconfig/sizeof/sizeof_spec.rb30
-rw-r--r--spec/ruby/library/rbconfig/unicode_emoji_version_spec.rb23
-rw-r--r--spec/ruby/library/rbconfig/unicode_version_spec.rb23
-rw-r--r--spec/ruby/library/readline/basic_quote_characters_spec.rb2
-rw-r--r--spec/ruby/library/readline/basic_word_break_characters_spec.rb2
-rw-r--r--spec/ruby/library/readline/completer_quote_characters_spec.rb2
-rw-r--r--spec/ruby/library/readline/completer_word_break_characters_spec.rb2
-rw-r--r--spec/ruby/library/readline/completion_append_character_spec.rb2
-rw-r--r--spec/ruby/library/readline/completion_case_fold_spec.rb2
-rw-r--r--spec/ruby/library/readline/completion_proc_spec.rb4
-rw-r--r--spec/ruby/library/readline/constants_spec.rb2
-rw-r--r--spec/ruby/library/readline/emacs_editing_mode_spec.rb2
-rw-r--r--spec/ruby/library/readline/filename_quote_characters_spec.rb2
-rw-r--r--spec/ruby/library/readline/history/append_spec.rb4
-rw-r--r--spec/ruby/library/readline/history/delete_at_spec.rb13
-rw-r--r--spec/ruby/library/readline/history/each_spec.rb8
-rw-r--r--spec/ruby/library/readline/history/element_reference_spec.rb19
-rw-r--r--spec/ruby/library/readline/history/element_set_spec.rb6
-rw-r--r--spec/ruby/library/readline/history/empty_spec.rb2
-rw-r--r--spec/ruby/library/readline/history/history_spec.rb2
-rw-r--r--spec/ruby/library/readline/history/length_spec.rb4
-rw-r--r--spec/ruby/library/readline/history/pop_spec.rb9
-rw-r--r--spec/ruby/library/readline/history/push_spec.rb4
-rw-r--r--spec/ruby/library/readline/history/shift_spec.rb9
-rw-r--r--spec/ruby/library/readline/history/size_spec.rb4
-rw-r--r--spec/ruby/library/readline/history/to_s_spec.rb2
-rw-r--r--spec/ruby/library/readline/readline_spec.rb7
-rw-r--r--spec/ruby/library/readline/spec_helper.rb6
-rw-r--r--spec/ruby/library/readline/vi_editing_mode_spec.rb2
-rw-r--r--spec/ruby/library/resolv/fixtures/hosts1
-rw-r--r--spec/ruby/library/resolv/get_address_spec.rb16
-rw-r--r--spec/ruby/library/resolv/get_addresses_spec.rb14
-rw-r--r--spec/ruby/library/resolv/get_name_spec.rb15
-rw-r--r--spec/ruby/library/resolv/get_names_spec.rb13
-rw-r--r--spec/ruby/library/rexml/attribute/clone_spec.rb19
-rw-r--r--spec/ruby/library/rexml/attribute/element_spec.rb35
-rw-r--r--spec/ruby/library/rexml/attribute/equal_value_spec.rb27
-rw-r--r--spec/ruby/library/rexml/attribute/hash_spec.rb23
-rw-r--r--spec/ruby/library/rexml/attribute/initialize_spec.rb47
-rw-r--r--spec/ruby/library/rexml/attribute/inspect_spec.rb32
-rw-r--r--spec/ruby/library/rexml/attribute/namespace_spec.rb41
-rw-r--r--spec/ruby/library/rexml/attribute/node_type_spec.rb17
-rw-r--r--spec/ruby/library/rexml/attribute/prefix_spec.rb27
-rw-r--r--spec/ruby/library/rexml/attribute/remove_spec.rb33
-rw-r--r--spec/ruby/library/rexml/attribute/to_s_spec.rb23
-rw-r--r--spec/ruby/library/rexml/attribute/to_string_spec.rb24
-rw-r--r--spec/ruby/library/rexml/attribute/value_spec.rb24
-rw-r--r--spec/ruby/library/rexml/attribute/write_spec.rb37
-rw-r--r--spec/ruby/library/rexml/attribute/xpath_spec.rb30
-rw-r--r--spec/ruby/library/rexml/attributes/add_spec.rb13
-rw-r--r--spec/ruby/library/rexml/attributes/append_spec.rb13
-rw-r--r--spec/ruby/library/rexml/attributes/delete_all_spec.rb53
-rw-r--r--spec/ruby/library/rexml/attributes/delete_spec.rb45
-rw-r--r--spec/ruby/library/rexml/attributes/each_attribute_spec.rb38
-rw-r--r--spec/ruby/library/rexml/attributes/each_spec.rb41
-rw-r--r--spec/ruby/library/rexml/attributes/element_reference_spec.rb30
-rw-r--r--spec/ruby/library/rexml/attributes/element_set_spec.rb42
-rw-r--r--spec/ruby/library/rexml/attributes/get_attribute_ns_spec.rb25
-rw-r--r--spec/ruby/library/rexml/attributes/get_attribute_spec.rb47
-rw-r--r--spec/ruby/library/rexml/attributes/initialize_spec.rb29
-rw-r--r--spec/ruby/library/rexml/attributes/length_spec.rb13
-rw-r--r--spec/ruby/library/rexml/attributes/namespaces_spec.rb11
-rw-r--r--spec/ruby/library/rexml/attributes/prefixes_spec.rb39
-rw-r--r--spec/ruby/library/rexml/attributes/shared/length.rb2
-rw-r--r--spec/ruby/library/rexml/attributes/size_spec.rb13
-rw-r--r--spec/ruby/library/rexml/attributes/to_a_spec.rb30
-rw-r--r--spec/ruby/library/rexml/cdata/clone_spec.rb17
-rw-r--r--spec/ruby/library/rexml/cdata/initialize_spec.rb39
-rw-r--r--spec/ruby/library/rexml/cdata/to_s_spec.rb13
-rw-r--r--spec/ruby/library/rexml/cdata/value_spec.rb13
-rw-r--r--spec/ruby/library/rexml/document/add_element_spec.rb53
-rw-r--r--spec/ruby/library/rexml/document/add_spec.rb91
-rw-r--r--spec/ruby/library/rexml/document/clone_spec.rb35
-rw-r--r--spec/ruby/library/rexml/document/doctype_spec.rb25
-rw-r--r--spec/ruby/library/rexml/document/encoding_spec.rb35
-rw-r--r--spec/ruby/library/rexml/document/expanded_name_spec.rb25
-rw-r--r--spec/ruby/library/rexml/document/new_spec.rb57
-rw-r--r--spec/ruby/library/rexml/document/node_type_spec.rb13
-rw-r--r--spec/ruby/library/rexml/document/root_spec.rb19
-rw-r--r--spec/ruby/library/rexml/document/stand_alone_spec.rb33
-rw-r--r--spec/ruby/library/rexml/document/version_spec.rb23
-rw-r--r--spec/ruby/library/rexml/document/write_spec.rb59
-rw-r--r--spec/ruby/library/rexml/document/xml_decl_spec.rb25
-rw-r--r--spec/ruby/library/rexml/element/add_attribute_spec.rb67
-rw-r--r--spec/ruby/library/rexml/element/add_attributes_spec.rb37
-rw-r--r--spec/ruby/library/rexml/element/add_element_spec.rb64
-rw-r--r--spec/ruby/library/rexml/element/add_namespace_spec.rb38
-rw-r--r--spec/ruby/library/rexml/element/add_text_spec.rb39
-rw-r--r--spec/ruby/library/rexml/element/attribute_spec.rb29
-rw-r--r--spec/ruby/library/rexml/element/attributes_spec.rb29
-rw-r--r--spec/ruby/library/rexml/element/cdatas_spec.rb39
-rw-r--r--spec/ruby/library/rexml/element/clone_spec.rb49
-rw-r--r--spec/ruby/library/rexml/element/comments_spec.rb33
-rw-r--r--spec/ruby/library/rexml/element/delete_attribute_spec.rb63
-rw-r--r--spec/ruby/library/rexml/element/delete_element_spec.rb83
-rw-r--r--spec/ruby/library/rexml/element/delete_namespace_spec.rb39
-rw-r--r--spec/ruby/library/rexml/element/document_spec.rb27
-rw-r--r--spec/ruby/library/rexml/element/each_element_with_attribute_spec.rb59
-rw-r--r--spec/ruby/library/rexml/element/each_element_with_text_spec.rb51
-rw-r--r--spec/ruby/library/rexml/element/element_reference_spec.rb19
-rw-r--r--spec/ruby/library/rexml/element/get_text_spec.rb29
-rw-r--r--spec/ruby/library/rexml/element/has_attributes_spec.rb27
-rw-r--r--spec/ruby/library/rexml/element/has_elements_spec.rb29
-rw-r--r--spec/ruby/library/rexml/element/has_text_spec.rb25
-rw-r--r--spec/ruby/library/rexml/element/inspect_spec.rb43
-rw-r--r--spec/ruby/library/rexml/element/instructions_spec.rb35
-rw-r--r--spec/ruby/library/rexml/element/namespace_spec.rb43
-rw-r--r--spec/ruby/library/rexml/element/namespaces_spec.rb53
-rw-r--r--spec/ruby/library/rexml/element/new_spec.rb57
-rw-r--r--spec/ruby/library/rexml/element/next_element_spec.rb33
-rw-r--r--spec/ruby/library/rexml/element/node_type_spec.rb13
-rw-r--r--spec/ruby/library/rexml/element/prefixes_spec.rb37
-rw-r--r--spec/ruby/library/rexml/element/previous_element_spec.rb33
-rw-r--r--spec/ruby/library/rexml/element/raw_spec.rb37
-rw-r--r--spec/ruby/library/rexml/element/root_spec.rb45
-rw-r--r--spec/ruby/library/rexml/element/text_spec.rb91
-rw-r--r--spec/ruby/library/rexml/element/texts_spec.rb25
-rw-r--r--spec/ruby/library/rexml/element/whitespace_spec.rb35
-rw-r--r--spec/ruby/library/rexml/node/each_recursive_spec.rb37
-rw-r--r--spec/ruby/library/rexml/node/find_first_recursive_spec.rb43
-rw-r--r--spec/ruby/library/rexml/node/index_in_parent_spec.rb25
-rw-r--r--spec/ruby/library/rexml/node/next_sibling_node_spec.rb35
-rw-r--r--spec/ruby/library/rexml/node/parent_spec.rb34
-rw-r--r--spec/ruby/library/rexml/node/previous_sibling_node_spec.rb35
-rw-r--r--spec/ruby/library/rexml/shared/each_element.rb2
-rw-r--r--spec/ruby/library/rexml/shared/elements_to_a.rb4
-rw-r--r--spec/ruby/library/rexml/text/append_spec.rb17
-rw-r--r--spec/ruby/library/rexml/text/clone_spec.rb17
-rw-r--r--spec/ruby/library/rexml/text/comparison_spec.rb41
-rw-r--r--spec/ruby/library/rexml/text/empty_spec.rb19
-rw-r--r--spec/ruby/library/rexml/text/indent_text_spec.rb38
-rw-r--r--spec/ruby/library/rexml/text/inspect_spec.rb13
-rw-r--r--spec/ruby/library/rexml/text/new_spec.rb96
-rw-r--r--spec/ruby/library/rexml/text/node_type_spec.rb13
-rw-r--r--spec/ruby/library/rexml/text/normalize_spec.rb13
-rw-r--r--spec/ruby/library/rexml/text/read_with_substitution_spec.rb20
-rw-r--r--spec/ruby/library/rexml/text/to_s_spec.rb28
-rw-r--r--spec/ruby/library/rexml/text/unnormalize_spec.rb13
-rw-r--r--spec/ruby/library/rexml/text/value_spec.rb57
-rw-r--r--spec/ruby/library/rexml/text/wrap_spec.rb32
-rw-r--r--spec/ruby/library/rexml/text/write_with_substitution_spec.rb55
-rw-r--r--spec/ruby/library/ripper/lex_spec.rb23
-rw-r--r--spec/ruby/library/ripper/sexp_spec.rb13
-rw-r--r--spec/ruby/library/rubygems/gem/bin_path_spec.rb34
-rw-r--r--spec/ruby/library/rubygems/gem/load_path_insert_index_spec.rb10
-rw-r--r--spec/ruby/library/scanf/io/block_scanf_spec.rb7
-rw-r--r--spec/ruby/library/scanf/io/fixtures/date.txt4
-rw-r--r--spec/ruby/library/scanf/io/fixtures/helloworld.txt1
-rw-r--r--spec/ruby/library/scanf/io/scanf_spec.rb35
-rw-r--r--spec/ruby/library/scanf/io/shared/block_scanf.rb28
-rw-r--r--spec/ruby/library/scanf/string/block_scanf_spec.rb7
-rw-r--r--spec/ruby/library/scanf/string/scanf_spec.rb53
-rw-r--r--spec/ruby/library/scanf/string/shared/block_scanf.rb25
-rw-r--r--spec/ruby/library/securerandom/base64_spec.rb4
-rw-r--r--spec/ruby/library/securerandom/bytes_spec.rb8
-rw-r--r--spec/ruby/library/securerandom/hex_spec.rb6
-rw-r--r--spec/ruby/library/securerandom/random_bytes_spec.rb7
-rw-r--r--spec/ruby/library/securerandom/random_number_spec.rb56
-rw-r--r--spec/ruby/library/set/add_spec.rb4
-rw-r--r--spec/ruby/library/set/append_spec.rb4
-rw-r--r--spec/ruby/library/set/case_compare_spec.rb17
-rw-r--r--spec/ruby/library/set/case_equality_spec.rb10
-rw-r--r--spec/ruby/library/set/classify_spec.rb2
-rw-r--r--spec/ruby/library/set/clear_spec.rb2
-rw-r--r--spec/ruby/library/set/collect_spec.rb4
-rw-r--r--spec/ruby/library/set/compare_by_identity_spec.rb268
-rw-r--r--spec/ruby/library/set/comparison_spec.rb29
-rw-r--r--spec/ruby/library/set/constructor_spec.rb2
-rw-r--r--spec/ruby/library/set/delete_if_spec.rb2
-rw-r--r--spec/ruby/library/set/delete_spec.rb2
-rw-r--r--spec/ruby/library/set/difference_spec.rb4
-rw-r--r--spec/ruby/library/set/disjoint_spec.rb23
-rw-r--r--spec/ruby/library/set/divide_spec.rb2
-rw-r--r--spec/ruby/library/set/each_spec.rb3
-rw-r--r--spec/ruby/library/set/empty_spec.rb2
-rw-r--r--spec/ruby/library/set/enumerable/to_set_spec.rb14
-rw-r--r--spec/ruby/library/set/eql_spec.rb2
-rw-r--r--spec/ruby/library/set/equal_value_spec.rb9
-rw-r--r--spec/ruby/library/set/exclusion_spec.rb8
-rw-r--r--spec/ruby/library/set/filter_spec.rb6
-rw-r--r--spec/ruby/library/set/fixtures/set_like.rb31
-rw-r--r--spec/ruby/library/set/flatten_merge_spec.rb4
-rw-r--r--spec/ruby/library/set/flatten_spec.rb19
-rw-r--r--spec/ruby/library/set/hash_spec.rb2
-rw-r--r--spec/ruby/library/set/include_spec.rb4
-rw-r--r--spec/ruby/library/set/initialize_clone_spec.rb18
-rw-r--r--spec/ruby/library/set/initialize_spec.rb51
-rw-r--r--spec/ruby/library/set/inspect_spec.rb4
-rw-r--r--spec/ruby/library/set/intersect_spec.rb23
-rw-r--r--spec/ruby/library/set/intersection_spec.rb4
-rw-r--r--spec/ruby/library/set/join_spec.rb31
-rw-r--r--spec/ruby/library/set/keep_if_spec.rb2
-rw-r--r--spec/ruby/library/set/length_spec.rb4
-rw-r--r--spec/ruby/library/set/map_spec.rb4
-rw-r--r--spec/ruby/library/set/member_spec.rb4
-rw-r--r--spec/ruby/library/set/merge_spec.rb6
-rw-r--r--spec/ruby/library/set/minus_spec.rb4
-rw-r--r--spec/ruby/library/set/plus_spec.rb4
-rw-r--r--spec/ruby/library/set/pretty_print_cycle_spec.rb2
-rw-r--r--spec/ruby/library/set/pretty_print_spec.rb22
-rw-r--r--spec/ruby/library/set/proper_subset_spec.rb17
-rw-r--r--spec/ruby/library/set/proper_superset_spec.rb17
-rw-r--r--spec/ruby/library/set/reject_spec.rb2
-rw-r--r--spec/ruby/library/set/replace_spec.rb2
-rw-r--r--spec/ruby/library/set/select_spec.rb42
-rw-r--r--spec/ruby/library/set/shared/difference.rb4
-rw-r--r--spec/ruby/library/set/shared/inspect.rb8
-rw-r--r--spec/ruby/library/set/shared/intersection.rb4
-rw-r--r--spec/ruby/library/set/shared/select.rb42
-rw-r--r--spec/ruby/library/set/shared/union.rb4
-rw-r--r--spec/ruby/library/set/size_spec.rb4
-rw-r--r--spec/ruby/library/set/sortedset/add_spec.rb61
-rw-r--r--spec/ruby/library/set/sortedset/append_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/case_equality_spec.rb9
-rw-r--r--spec/ruby/library/set/sortedset/classify_spec.rb43
-rw-r--r--spec/ruby/library/set/sortedset/clear_spec.rb27
-rw-r--r--spec/ruby/library/set/sortedset/collect_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/constructor_spec.rb23
-rw-r--r--spec/ruby/library/set/sortedset/delete_if_spec.rb59
-rw-r--r--spec/ruby/library/set/sortedset/delete_spec.rb57
-rw-r--r--spec/ruby/library/set/sortedset/difference_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/divide_spec.rb55
-rw-r--r--spec/ruby/library/set/sortedset/each_spec.rb41
-rw-r--r--spec/ruby/library/set/sortedset/empty_spec.rb17
-rw-r--r--spec/ruby/library/set/sortedset/eql_spec.rb25
-rw-r--r--spec/ruby/library/set/sortedset/equal_value_spec.rb21
-rw-r--r--spec/ruby/library/set/sortedset/exclusion_spec.rb29
-rw-r--r--spec/ruby/library/set/sortedset/filter_spec.rb10
-rw-r--r--spec/ruby/library/set/sortedset/flatten_merge_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/flatten_spec.rb69
-rw-r--r--spec/ruby/library/set/sortedset/hash_spec.rb21
-rw-r--r--spec/ruby/library/set/sortedset/include_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/initialize_spec.rb51
-rw-r--r--spec/ruby/library/set/sortedset/inspect_spec.rb17
-rw-r--r--spec/ruby/library/set/sortedset/intersection_spec.rb19
-rw-r--r--spec/ruby/library/set/sortedset/keep_if_spec.rb49
-rw-r--r--spec/ruby/library/set/sortedset/length_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/map_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/member_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/merge_spec.rb31
-rw-r--r--spec/ruby/library/set/sortedset/minus_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/plus_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/pretty_print_cycle_spec.rb17
-rw-r--r--spec/ruby/library/set/sortedset/pretty_print_spec.rb25
-rw-r--r--spec/ruby/library/set/sortedset/proper_subset_spec.rb53
-rw-r--r--spec/ruby/library/set/sortedset/proper_superset_spec.rb53
-rw-r--r--spec/ruby/library/set/sortedset/reject_spec.rb65
-rw-r--r--spec/ruby/library/set/sortedset/replace_spec.rb27
-rw-r--r--spec/ruby/library/set/sortedset/select_spec.rb37
-rw-r--r--spec/ruby/library/set/sortedset/shared/difference.rb4
-rw-r--r--spec/ruby/library/set/sortedset/shared/intersection.rb4
-rw-r--r--spec/ruby/library/set/sortedset/shared/select.rb35
-rw-r--r--spec/ruby/library/set/sortedset/shared/union.rb4
-rw-r--r--spec/ruby/library/set/sortedset/size_spec.rb13
-rw-r--r--spec/ruby/library/set/sortedset/sortedset_spec.rb22
-rw-r--r--spec/ruby/library/set/sortedset/subset_spec.rb53
-rw-r--r--spec/ruby/library/set/sortedset/subtract_spec.rb27
-rw-r--r--spec/ruby/library/set/sortedset/superset_spec.rb53
-rw-r--r--spec/ruby/library/set/sortedset/to_a_spec.rb27
-rw-r--r--spec/ruby/library/set/sortedset/union_spec.rb19
-rw-r--r--spec/ruby/library/set/subset_spec.rb17
-rw-r--r--spec/ruby/library/set/subtract_spec.rb2
-rw-r--r--spec/ruby/library/set/superset_spec.rb17
-rw-r--r--spec/ruby/library/set/to_a_spec.rb2
-rw-r--r--spec/ruby/library/set/to_s_spec.rb15
-rw-r--r--spec/ruby/library/set/union_spec.rb4
-rw-r--r--spec/ruby/library/shellwords/shellwords_spec.rb14
-rw-r--r--spec/ruby/library/singleton/allocate_spec.rb6
-rw-r--r--spec/ruby/library/singleton/clone_spec.rb6
-rw-r--r--spec/ruby/library/singleton/dump_spec.rb4
-rw-r--r--spec/ruby/library/singleton/dup_spec.rb6
-rw-r--r--spec/ruby/library/singleton/instance_spec.rb4
-rw-r--r--spec/ruby/library/singleton/load_spec.rb4
-rw-r--r--spec/ruby/library/singleton/new_spec.rb6
-rw-r--r--spec/ruby/library/socket/addrinfo/afamily_spec.rb5
-rw-r--r--spec/ruby/library/socket/addrinfo/bind_spec.rb5
-rw-r--r--spec/ruby/library/socket/addrinfo/canonname_spec.rb14
-rw-r--r--spec/ruby/library/socket/addrinfo/connect_from_spec.rb75
-rw-r--r--spec/ruby/library/socket/addrinfo/connect_spec.rb35
-rw-r--r--spec/ruby/library/socket/addrinfo/connect_to_spec.rb75
-rw-r--r--spec/ruby/library/socket/addrinfo/family_addrinfo_spec.rb115
-rw-r--r--spec/ruby/library/socket/addrinfo/foreach_spec.rb9
-rw-r--r--spec/ruby/library/socket/addrinfo/getaddrinfo_spec.rb91
-rw-r--r--spec/ruby/library/socket/addrinfo/getnameinfo_spec.rb42
-rw-r--r--spec/ruby/library/socket/addrinfo/initialize_spec.rb346
-rw-r--r--spec/ruby/library/socket/addrinfo/inspect_sockaddr_spec.rb55
-rw-r--r--spec/ruby/library/socket/addrinfo/inspect_spec.rb65
-rw-r--r--spec/ruby/library/socket/addrinfo/ip_address_spec.rb38
-rw-r--r--spec/ruby/library/socket/addrinfo/ip_port_spec.rb7
-rw-r--r--spec/ruby/library/socket/addrinfo/ip_spec.rb36
-rw-r--r--spec/ruby/library/socket/addrinfo/ip_unpack_spec.rb7
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv4_loopback_spec.rb17
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv4_multicast_spec.rb39
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv4_private_spec.rb14
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv4_spec.rb5
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_linklocal_spec.rb23
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_loopback_spec.rb9
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_mc_global_spec.rb20
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_mc_linklocal_spec.rb19
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_mc_nodelocal_spec.rb18
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_mc_orglocal_spec.rb18
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_mc_sitelocal_spec.rb18
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_multicast_spec.rb26
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_sitelocal_spec.rb23
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_spec.rb5
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_to_ipv4_spec.rb71
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_unique_local_spec.rb18
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_unspecified_spec.rb15
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_v4compat_spec.rb20
-rw-r--r--spec/ruby/library/socket/addrinfo/ipv6_v4mapped_spec.rb20
-rw-r--r--spec/ruby/library/socket/addrinfo/listen_spec.rb34
-rw-r--r--spec/ruby/library/socket/addrinfo/marshal_dump_spec.rb84
-rw-r--r--spec/ruby/library/socket/addrinfo/marshal_load_spec.rb35
-rw-r--r--spec/ruby/library/socket/addrinfo/pfamily_spec.rb11
-rw-r--r--spec/ruby/library/socket/addrinfo/protocol_spec.rb28
-rw-r--r--spec/ruby/library/socket/addrinfo/shared/to_sockaddr.rb24
-rw-r--r--spec/ruby/library/socket/addrinfo/socktype_spec.rb27
-rw-r--r--spec/ruby/library/socket/addrinfo/tcp_spec.rb42
-rw-r--r--spec/ruby/library/socket/addrinfo/to_s_spec.rb7
-rw-r--r--spec/ruby/library/socket/addrinfo/to_sockaddr_spec.rb7
-rw-r--r--spec/ruby/library/socket/addrinfo/udp_spec.rb42
-rw-r--r--spec/ruby/library/socket/addrinfo/unix_path_spec.rb23
-rw-r--r--spec/ruby/library/socket/addrinfo/unix_spec.rb39
-rw-r--r--spec/ruby/library/socket/ancillarydata/cmsg_is_spec.rb33
-rw-r--r--spec/ruby/library/socket/ancillarydata/data_spec.rb9
-rw-r--r--spec/ruby/library/socket/ancillarydata/family_spec.rb9
-rw-r--r--spec/ruby/library/socket/ancillarydata/initialize_spec.rb284
-rw-r--r--spec/ruby/library/socket/ancillarydata/int_spec.rb43
-rw-r--r--spec/ruby/library/socket/ancillarydata/ip_pktinfo_spec.rb145
-rw-r--r--spec/ruby/library/socket/ancillarydata/ipv6_pktinfo_addr_spec.rb11
-rw-r--r--spec/ruby/library/socket/ancillarydata/ipv6_pktinfo_ifindex_spec.rb11
-rw-r--r--spec/ruby/library/socket/ancillarydata/ipv6_pktinfo_spec.rb89
-rw-r--r--spec/ruby/library/socket/ancillarydata/level_spec.rb9
-rw-r--r--spec/ruby/library/socket/ancillarydata/type_spec.rb9
-rw-r--r--spec/ruby/library/socket/ancillarydata/unix_rights_spec.rb61
-rw-r--r--spec/ruby/library/socket/basicsocket/close_read_spec.rb18
-rw-r--r--spec/ruby/library/socket/basicsocket/close_write_spec.rb18
-rw-r--r--spec/ruby/library/socket/basicsocket/connect_address_spec.rb154
-rw-r--r--spec/ruby/library/socket/basicsocket/do_not_reverse_lookup_spec.rb68
-rw-r--r--spec/ruby/library/socket/basicsocket/for_fd_spec.rb25
-rw-r--r--spec/ruby/library/socket/basicsocket/getpeereid_spec.rb36
-rw-r--r--spec/ruby/library/socket/basicsocket/getpeername_spec.rb9
-rw-r--r--spec/ruby/library/socket/basicsocket/getsockname_spec.rb8
-rw-r--r--spec/ruby/library/socket/basicsocket/getsockopt_spec.rb148
-rw-r--r--spec/ruby/library/socket/basicsocket/ioctl_spec.rb3
-rw-r--r--spec/ruby/library/socket/basicsocket/local_address_spec.rb10
-rw-r--r--spec/ruby/library/socket/basicsocket/read_nonblock_spec.rb44
-rw-r--r--spec/ruby/library/socket/basicsocket/recv_nonblock_spec.rb92
-rw-r--r--spec/ruby/library/socket/basicsocket/recv_spec.rb91
-rw-r--r--spec/ruby/library/socket/basicsocket/recvmsg_nonblock_spec.rb224
-rw-r--r--spec/ruby/library/socket/basicsocket/recvmsg_spec.rb197
-rw-r--r--spec/ruby/library/socket/basicsocket/remote_address_spec.rb10
-rw-r--r--spec/ruby/library/socket/basicsocket/send_spec.rb139
-rw-r--r--spec/ruby/library/socket/basicsocket/sendmsg_nonblock_spec.rb118
-rw-r--r--spec/ruby/library/socket/basicsocket/sendmsg_spec.rb111
-rw-r--r--spec/ruby/library/socket/basicsocket/setsockopt_spec.rb149
-rw-r--r--spec/ruby/library/socket/basicsocket/shutdown_spec.rb155
-rw-r--r--spec/ruby/library/socket/basicsocket/write_nonblock_spec.rb43
-rw-r--r--spec/ruby/library/socket/constants/constants_spec.rb26
-rw-r--r--spec/ruby/library/socket/fixtures/classes.rb89
-rw-r--r--spec/ruby/library/socket/ipsocket/addr_spec.rb67
-rw-r--r--spec/ruby/library/socket/ipsocket/getaddress_spec.rb16
-rw-r--r--spec/ruby/library/socket/ipsocket/peeraddr_spec.rb72
-rw-r--r--spec/ruby/library/socket/ipsocket/recvfrom_spec.rb59
-rw-r--r--spec/ruby/library/socket/option/bool_spec.rb12
-rw-r--r--spec/ruby/library/socket/option/initialize_spec.rb83
-rw-r--r--spec/ruby/library/socket/option/inspect_spec.rb5
-rw-r--r--spec/ruby/library/socket/option/int_spec.rb25
-rw-r--r--spec/ruby/library/socket/option/linger_spec.rb22
-rw-r--r--spec/ruby/library/socket/option/new_spec.rb10
-rw-r--r--spec/ruby/library/socket/shared/address.rb249
-rw-r--r--spec/ruby/library/socket/shared/pack_sockaddr.rb64
-rw-r--r--spec/ruby/library/socket/shared/recv_nonblock.rb54
-rw-r--r--spec/ruby/library/socket/shared/socketpair.rb115
-rw-r--r--spec/ruby/library/socket/socket/accept_loop_spec.rb84
-rw-r--r--spec/ruby/library/socket/socket/accept_nonblock_spec.rb120
-rw-r--r--spec/ruby/library/socket/socket/accept_spec.rb123
-rw-r--r--spec/ruby/library/socket/socket/bind_spec.rb107
-rw-r--r--spec/ruby/library/socket/socket/connect_nonblock_spec.rb146
-rw-r--r--spec/ruby/library/socket/socket/connect_spec.rb58
-rw-r--r--spec/ruby/library/socket/socket/for_fd_spec.rb5
-rw-r--r--spec/ruby/library/socket/socket/getaddrinfo_spec.rb279
-rw-r--r--spec/ruby/library/socket/socket/gethostbyaddr_spec.rb126
-rw-r--r--spec/ruby/library/socket/socket/gethostbyname_spec.rb136
-rw-r--r--spec/ruby/library/socket/socket/gethostname_spec.rb4
-rw-r--r--spec/ruby/library/socket/socket/getifaddrs_spec.rb117
-rw-r--r--spec/ruby/library/socket/socket/getnameinfo_spec.rb89
-rw-r--r--spec/ruby/library/socket/socket/getservbyname_spec.rb14
-rw-r--r--spec/ruby/library/socket/socket/getservbyport_spec.rb23
-rw-r--r--spec/ruby/library/socket/socket/initialize_spec.rb87
-rw-r--r--spec/ruby/library/socket/socket/ip_address_list_spec.rb50
-rw-r--r--spec/ruby/library/socket/socket/ipv6only_bang_spec.rb20
-rw-r--r--spec/ruby/library/socket/socket/listen_spec.rb54
-rw-r--r--spec/ruby/library/socket/socket/local_address_spec.rb43
-rw-r--r--spec/ruby/library/socket/socket/new_spec.rb4
-rw-r--r--spec/ruby/library/socket/socket/pack_sockaddr_in_spec.rb6
-rw-r--r--spec/ruby/library/socket/socket/pack_sockaddr_un_spec.rb6
-rw-r--r--spec/ruby/library/socket/socket/pair_spec.rb6
-rw-r--r--spec/ruby/library/socket/socket/recvfrom_nonblock_spec.rb120
-rw-r--r--spec/ruby/library/socket/socket/recvfrom_spec.rb94
-rw-r--r--spec/ruby/library/socket/socket/remote_address_spec.rb54
-rw-r--r--spec/ruby/library/socket/socket/sockaddr_in_spec.rb6
-rw-r--r--spec/ruby/library/socket/socket/sockaddr_un_spec.rb6
-rw-r--r--spec/ruby/library/socket/socket/socket_spec.rb4
-rw-r--r--spec/ruby/library/socket/socket/socketpair_spec.rb6
-rw-r--r--spec/ruby/library/socket/socket/sysaccept_spec.rb93
-rw-r--r--spec/ruby/library/socket/socket/tcp_server_loop_spec.rb54
-rw-r--r--spec/ruby/library/socket/socket/tcp_server_sockets_spec.rb39
-rw-r--r--spec/ruby/library/socket/socket/tcp_spec.rb70
-rw-r--r--spec/ruby/library/socket/socket/udp_server_loop_on_spec.rb47
-rw-r--r--spec/ruby/library/socket/socket/udp_server_loop_spec.rb59
-rw-r--r--spec/ruby/library/socket/socket/udp_server_recv_spec.rb35
-rw-r--r--spec/ruby/library/socket/socket/udp_server_sockets_spec.rb39
-rw-r--r--spec/ruby/library/socket/socket/unix_server_loop_spec.rb58
-rw-r--r--spec/ruby/library/socket/socket/unix_server_socket_spec.rb48
-rw-r--r--spec/ruby/library/socket/socket/unix_spec.rb45
-rw-r--r--spec/ruby/library/socket/socket/unpack_sockaddr_in_spec.rb33
-rw-r--r--spec/ruby/library/socket/socket/unpack_sockaddr_un_spec.rb14
-rw-r--r--spec/ruby/library/socket/spec_helper.rb13
-rw-r--r--spec/ruby/library/socket/tcpserver/accept_nonblock_spec.rb53
-rw-r--r--spec/ruby/library/socket/tcpserver/accept_spec.rb61
-rw-r--r--spec/ruby/library/socket/tcpserver/gets_spec.rb6
-rw-r--r--spec/ruby/library/socket/tcpserver/initialize_spec.rb101
-rw-r--r--spec/ruby/library/socket/tcpserver/listen_spec.rb28
-rw-r--r--spec/ruby/library/socket/tcpserver/new_spec.rb61
-rw-r--r--spec/ruby/library/socket/tcpserver/sysaccept_spec.rb46
-rw-r--r--spec/ruby/library/socket/tcpsocket/gethostbyname_spec.rb74
-rw-r--r--spec/ruby/library/socket/tcpsocket/initialize_spec.rb66
-rw-r--r--spec/ruby/library/socket/tcpsocket/local_address_spec.rb73
-rw-r--r--spec/ruby/library/socket/tcpsocket/new_spec.rb5
-rw-r--r--spec/ruby/library/socket/tcpsocket/open_spec.rb3
-rw-r--r--spec/ruby/library/socket/tcpsocket/partially_closable_spec.rb6
-rw-r--r--spec/ruby/library/socket/tcpsocket/recv_nonblock_spec.rb26
-rw-r--r--spec/ruby/library/socket/tcpsocket/recv_spec.rb28
-rw-r--r--spec/ruby/library/socket/tcpsocket/remote_address_spec.rb72
-rw-r--r--spec/ruby/library/socket/tcpsocket/setsockopt_spec.rb4
-rw-r--r--spec/ruby/library/socket/tcpsocket/shared/new.rb33
-rw-r--r--spec/ruby/library/socket/udpsocket/bind_spec.rb53
-rw-r--r--spec/ruby/library/socket/udpsocket/connect_spec.rb35
-rw-r--r--spec/ruby/library/socket/udpsocket/initialize_spec.rb40
-rw-r--r--spec/ruby/library/socket/udpsocket/inspect_spec.rb17
-rw-r--r--spec/ruby/library/socket/udpsocket/local_address_spec.rb80
-rw-r--r--spec/ruby/library/socket/udpsocket/new_spec.rb8
-rw-r--r--spec/ruby/library/socket/udpsocket/open_spec.rb4
-rw-r--r--spec/ruby/library/socket/udpsocket/recvfrom_nonblock_spec.rb102
-rw-r--r--spec/ruby/library/socket/udpsocket/remote_address_spec.rb79
-rw-r--r--spec/ruby/library/socket/udpsocket/send_spec.rb90
-rw-r--r--spec/ruby/library/socket/udpsocket/write_spec.rb6
-rw-r--r--spec/ruby/library/socket/unixserver/accept_nonblock_spec.rb64
-rw-r--r--spec/ruby/library/socket/unixserver/accept_spec.rb60
-rw-r--r--spec/ruby/library/socket/unixserver/for_fd_spec.rb4
-rw-r--r--spec/ruby/library/socket/unixserver/initialize_spec.rb28
-rw-r--r--spec/ruby/library/socket/unixserver/listen_spec.rb21
-rw-r--r--spec/ruby/library/socket/unixserver/new_spec.rb4
-rw-r--r--spec/ruby/library/socket/unixserver/open_spec.rb5
-rw-r--r--spec/ruby/library/socket/unixserver/shared/new.rb5
-rw-r--r--spec/ruby/library/socket/unixserver/sysaccept_spec.rb52
-rw-r--r--spec/ruby/library/socket/unixsocket/addr_spec.rb14
-rw-r--r--spec/ruby/library/socket/unixsocket/initialize_spec.rb38
-rw-r--r--spec/ruby/library/socket/unixsocket/inspect_spec.rb4
-rw-r--r--spec/ruby/library/socket/unixsocket/local_address_spec.rb96
-rw-r--r--spec/ruby/library/socket/unixsocket/new_spec.rb4
-rw-r--r--spec/ruby/library/socket/unixsocket/open_spec.rb9
-rw-r--r--spec/ruby/library/socket/unixsocket/pair_spec.rb6
-rw-r--r--spec/ruby/library/socket/unixsocket/partially_closable_spec.rb6
-rw-r--r--spec/ruby/library/socket/unixsocket/path_spec.rb4
-rw-r--r--spec/ruby/library/socket/unixsocket/peeraddr_spec.rb8
-rw-r--r--spec/ruby/library/socket/unixsocket/recv_io_spec.rb49
-rw-r--r--spec/ruby/library/socket/unixsocket/recvfrom_spec.rb57
-rw-r--r--spec/ruby/library/socket/unixsocket/remote_address_spec.rb45
-rw-r--r--spec/ruby/library/socket/unixsocket/send_io_spec.rb27
-rw-r--r--spec/ruby/library/socket/unixsocket/shared/new.rb6
-rw-r--r--spec/ruby/library/socket/unixsocket/socketpair_spec.rb40
-rw-r--r--spec/ruby/library/stringio/append_spec.rb21
-rw-r--r--spec/ruby/library/stringio/binmode_spec.rb18
-rw-r--r--spec/ruby/library/stringio/bytes_spec.rb32
-rw-r--r--spec/ruby/library/stringio/chars_spec.rb32
-rw-r--r--spec/ruby/library/stringio/close_read_spec.rb15
-rw-r--r--spec/ruby/library/stringio/close_spec.rb23
-rw-r--r--spec/ruby/library/stringio/close_write_spec.rb15
-rw-r--r--spec/ruby/library/stringio/closed_read_spec.rb4
-rw-r--r--spec/ruby/library/stringio/closed_spec.rb4
-rw-r--r--spec/ruby/library/stringio/closed_write_spec.rb4
-rw-r--r--spec/ruby/library/stringio/codepoints_spec.rb22
-rw-r--r--spec/ruby/library/stringio/each_byte_spec.rb4
-rw-r--r--spec/ruby/library/stringio/each_char_spec.rb6
-rw-r--r--spec/ruby/library/stringio/each_codepoint_spec.rb9
-rw-r--r--spec/ruby/library/stringio/each_line_spec.rb16
-rw-r--r--spec/ruby/library/stringio/each_spec.rb20
-rw-r--r--spec/ruby/library/stringio/eof_spec.rb6
-rw-r--r--spec/ruby/library/stringio/external_encoding_spec.rb24
-rw-r--r--spec/ruby/library/stringio/fcntl_spec.rb6
-rw-r--r--spec/ruby/library/stringio/fileno_spec.rb6
-rw-r--r--spec/ruby/library/stringio/flush_spec.rb4
-rw-r--r--spec/ruby/library/stringio/fsync_spec.rb4
-rw-r--r--spec/ruby/library/stringio/getbyte_spec.rb10
-rw-r--r--spec/ruby/library/stringio/getc_spec.rb10
-rw-r--r--spec/ruby/library/stringio/getch_spec.rb32
-rw-r--r--spec/ruby/library/stringio/getpass_spec.rb11
-rw-r--r--spec/ruby/library/stringio/gets_spec.rb25
-rw-r--r--spec/ruby/library/stringio/initialize_spec.rb134
-rw-r--r--spec/ruby/library/stringio/inspect_spec.rb19
-rw-r--r--spec/ruby/library/stringio/internal_encoding_spec.rb2
-rw-r--r--spec/ruby/library/stringio/isatty_spec.rb6
-rw-r--r--spec/ruby/library/stringio/length_spec.rb6
-rw-r--r--spec/ruby/library/stringio/lineno_spec.rb2
-rw-r--r--spec/ruby/library/stringio/lines_spec.rb56
-rw-r--r--spec/ruby/library/stringio/new_spec.rb8
-rw-r--r--spec/ruby/library/stringio/open_spec.rb25
-rw-r--r--spec/ruby/library/stringio/path_spec.rb6
-rw-r--r--spec/ruby/library/stringio/pid_spec.rb4
-rw-r--r--spec/ruby/library/stringio/pos_spec.rb8
-rw-r--r--spec/ruby/library/stringio/print_spec.rb18
-rw-r--r--spec/ruby/library/stringio/printf_spec.rb42
-rw-r--r--spec/ruby/library/stringio/putc_spec.rb25
-rw-r--r--spec/ruby/library/stringio/puts_spec.rb45
-rw-r--r--spec/ruby/library/stringio/read_nonblock_spec.rb39
-rw-r--r--spec/ruby/library/stringio/read_spec.rb4
-rw-r--r--spec/ruby/library/stringio/readbyte_spec.rb8
-rw-r--r--spec/ruby/library/stringio/readchar_spec.rb8
-rw-r--r--spec/ruby/library/stringio/readline_spec.rb45
-rw-r--r--spec/ruby/library/stringio/readlines_spec.rb41
-rw-r--r--spec/ruby/library/stringio/readpartial_spec.rb14
-rw-r--r--spec/ruby/library/stringio/reopen_spec.rb79
-rw-r--r--spec/ruby/library/stringio/rewind_spec.rb4
-rw-r--r--spec/ruby/library/stringio/seek_spec.rb18
-rw-r--r--spec/ruby/library/stringio/set_encoding_spec.rb24
-rw-r--r--spec/ruby/library/stringio/shared/codepoints.rb6
-rw-r--r--spec/ruby/library/stringio/shared/each.rb67
-rw-r--r--spec/ruby/library/stringio/shared/each_byte.rb4
-rw-r--r--spec/ruby/library/stringio/shared/each_char.rb4
-rw-r--r--spec/ruby/library/stringio/shared/getc.rb4
-rw-r--r--spec/ruby/library/stringio/shared/read.rb22
-rw-r--r--spec/ruby/library/stringio/shared/readchar.rb6
-rw-r--r--spec/ruby/library/stringio/shared/sysread.rb2
-rw-r--r--spec/ruby/library/stringio/shared/write.rb71
-rw-r--r--spec/ruby/library/stringio/size_spec.rb6
-rw-r--r--spec/ruby/library/stringio/string_spec.rb6
-rw-r--r--spec/ruby/library/stringio/stringio_spec.rb3
-rw-r--r--spec/ruby/library/stringio/sync_spec.rb4
-rw-r--r--spec/ruby/library/stringio/sysread_spec.rb6
-rw-r--r--spec/ruby/library/stringio/syswrite_spec.rb6
-rw-r--r--spec/ruby/library/stringio/tell_spec.rb6
-rw-r--r--spec/ruby/library/stringio/truncate_spec.rb24
-rw-r--r--spec/ruby/library/stringio/tty_spec.rb6
-rw-r--r--spec/ruby/library/stringio/ungetbyte_spec.rb40
-rw-r--r--spec/ruby/library/stringio/ungetc_spec.rb10
-rw-r--r--spec/ruby/library/stringio/write_nonblock_spec.rb12
-rw-r--r--spec/ruby/library/stringio/write_spec.rb6
-rw-r--r--spec/ruby/library/stringscanner/append_spec.rb6
-rw-r--r--spec/ruby/library/stringscanner/beginning_of_line_spec.rb6
-rw-r--r--spec/ruby/library/stringscanner/bol_spec.rb6
-rw-r--r--spec/ruby/library/stringscanner/check_spec.rb11
-rw-r--r--spec/ruby/library/stringscanner/check_until_spec.rb8
-rw-r--r--spec/ruby/library/stringscanner/clear_spec.rb16
-rw-r--r--spec/ruby/library/stringscanner/concat_spec.rb10
-rw-r--r--spec/ruby/library/stringscanner/dup_spec.rb4
-rw-r--r--spec/ruby/library/stringscanner/element_reference_spec.rb11
-rw-r--r--spec/ruby/library/stringscanner/empty_spec.rb16
-rw-r--r--spec/ruby/library/stringscanner/eos_spec.rb6
-rw-r--r--spec/ruby/library/stringscanner/exist_spec.rb8
-rw-r--r--spec/ruby/library/stringscanner/get_byte_spec.rb4
-rw-r--r--spec/ruby/library/stringscanner/getbyte_spec.rb16
-rw-r--r--spec/ruby/library/stringscanner/getch_spec.rb4
-rw-r--r--spec/ruby/library/stringscanner/initialize_spec.rb3
-rw-r--r--spec/ruby/library/stringscanner/inspect_spec.rb2
-rw-r--r--spec/ruby/library/stringscanner/match_spec.rb2
-rw-r--r--spec/ruby/library/stringscanner/matched_size_spec.rb23
-rw-r--r--spec/ruby/library/stringscanner/matched_spec.rb4
-rw-r--r--spec/ruby/library/stringscanner/must_C_version_spec.rb2
-rw-r--r--spec/ruby/library/stringscanner/peek_spec.rb7
-rw-r--r--spec/ruby/library/stringscanner/peep_spec.rb16
-rw-r--r--spec/ruby/library/stringscanner/pointer_spec.rb8
-rw-r--r--spec/ruby/library/stringscanner/pos_spec.rb8
-rw-r--r--spec/ruby/library/stringscanner/post_match_spec.rb4
-rw-r--r--spec/ruby/library/stringscanner/pre_match_spec.rb4
-rw-r--r--spec/ruby/library/stringscanner/reset_spec.rb2
-rw-r--r--spec/ruby/library/stringscanner/rest_size_spec.rb6
-rw-r--r--spec/ruby/library/stringscanner/rest_spec.rb4
-rw-r--r--spec/ruby/library/stringscanner/restsize_spec.rb16
-rw-r--r--spec/ruby/library/stringscanner/scan_full_spec.rb2
-rw-r--r--spec/ruby/library/stringscanner/scan_spec.rb56
-rw-r--r--spec/ruby/library/stringscanner/scan_until_spec.rb8
-rw-r--r--spec/ruby/library/stringscanner/search_full_spec.rb8
-rw-r--r--spec/ruby/library/stringscanner/shared/concat.rb12
-rw-r--r--spec/ruby/library/stringscanner/shared/extract_range.rb11
-rw-r--r--spec/ruby/library/stringscanner/shared/extract_range_matched.rb9
-rw-r--r--spec/ruby/library/stringscanner/shared/matched_size.rb21
-rw-r--r--spec/ruby/library/stringscanner/shared/peek.rb12
-rw-r--r--spec/ruby/library/stringscanner/shared/pos.rb4
-rw-r--r--spec/ruby/library/stringscanner/size_spec.rb17
-rw-r--r--spec/ruby/library/stringscanner/skip_spec.rb2
-rw-r--r--spec/ruby/library/stringscanner/skip_until_spec.rb8
-rw-r--r--spec/ruby/library/stringscanner/string_spec.rb2
-rw-r--r--spec/ruby/library/stringscanner/terminate_spec.rb6
-rw-r--r--spec/ruby/library/stringscanner/unscan_spec.rb6
-rw-r--r--spec/ruby/library/syslog/alert_spec.rb4
-rw-r--r--spec/ruby/library/syslog/close_spec.rb8
-rw-r--r--spec/ruby/library/syslog/constants_spec.rb2
-rw-r--r--spec/ruby/library/syslog/crit_spec.rb4
-rw-r--r--spec/ruby/library/syslog/debug_spec.rb4
-rw-r--r--spec/ruby/library/syslog/emerg_spec.rb4
-rw-r--r--spec/ruby/library/syslog/err_spec.rb4
-rw-r--r--spec/ruby/library/syslog/facility_spec.rb2
-rw-r--r--spec/ruby/library/syslog/ident_spec.rb4
-rw-r--r--spec/ruby/library/syslog/info_spec.rb4
-rw-r--r--spec/ruby/library/syslog/inspect_spec.rb2
-rw-r--r--spec/ruby/library/syslog/instance_spec.rb2
-rw-r--r--spec/ruby/library/syslog/log_spec.rb22
-rw-r--r--spec/ruby/library/syslog/mask_spec.rb10
-rw-r--r--spec/ruby/library/syslog/notice_spec.rb4
-rw-r--r--spec/ruby/library/syslog/open_spec.rb8
-rw-r--r--spec/ruby/library/syslog/opened_spec.rb2
-rw-r--r--spec/ruby/library/syslog/options_spec.rb2
-rw-r--r--spec/ruby/library/syslog/reopen_spec.rb4
-rw-r--r--spec/ruby/library/syslog/shared/log.rb15
-rw-r--r--spec/ruby/library/syslog/shared/reopen.rb4
-rw-r--r--spec/ruby/library/syslog/warning_spec.rb4
-rw-r--r--spec/ruby/library/tempfile/_close_spec.rb2
-rw-r--r--spec/ruby/library/tempfile/callback_spec.rb2
-rw-r--r--spec/ruby/library/tempfile/close_spec.rb8
-rw-r--r--spec/ruby/library/tempfile/delete_spec.rb4
-rw-r--r--spec/ruby/library/tempfile/initialize_spec.rb11
-rw-r--r--spec/ruby/library/tempfile/length_spec.rb4
-rw-r--r--spec/ruby/library/tempfile/open_spec.rb19
-rw-r--r--spec/ruby/library/tempfile/path_spec.rb2
-rw-r--r--spec/ruby/library/tempfile/shared/unlink.rb2
-rw-r--r--spec/ruby/library/tempfile/size_spec.rb4
-rw-r--r--spec/ruby/library/tempfile/unlink_spec.rb4
-rw-r--r--spec/ruby/library/thread/exclusive_spec.rb12
-rw-r--r--spec/ruby/library/thread/queue/append_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue/clear_spec.rb9
-rw-r--r--spec/ruby/library/thread/queue/close_spec.rb9
-rw-r--r--spec/ruby/library/thread/queue/closed_spec.rb9
-rw-r--r--spec/ruby/library/thread/queue/deq_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue/empty_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue/enq_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue/length_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue/num_waiting_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue/pop_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue/push_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue/shift_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue/size_spec.rb7
-rw-r--r--spec/ruby/library/thread/queue_spec.rb8
-rw-r--r--spec/ruby/library/thread/shared/queue/clear.rb10
-rw-r--r--spec/ruby/library/thread/shared/queue/close.rb26
-rw-r--r--spec/ruby/library/thread/shared/queue/closed.rb (renamed from spec/ruby/shared/queue/closed.rb)0
-rw-r--r--spec/ruby/library/thread/shared/queue/deque.rb37
-rw-r--r--spec/ruby/library/thread/shared/queue/empty.rb (renamed from spec/ruby/shared/queue/empty.rb)0
-rw-r--r--spec/ruby/library/thread/shared/queue/enque.rb10
-rw-r--r--spec/ruby/library/thread/shared/queue/length.rb (renamed from spec/ruby/shared/queue/length.rb)0
-rw-r--r--spec/ruby/library/thread/shared/queue/num_waiting.rb (renamed from spec/ruby/shared/queue/num_waiting.rb)0
-rw-r--r--spec/ruby/library/thread/sizedqueue/append_spec.rb12
-rw-r--r--spec/ruby/library/thread/sizedqueue/clear_spec.rb9
-rw-r--r--spec/ruby/library/thread/sizedqueue/close_spec.rb9
-rw-r--r--spec/ruby/library/thread/sizedqueue/closed_spec.rb9
-rw-r--r--spec/ruby/library/thread/sizedqueue/deq_spec.rb7
-rw-r--r--spec/ruby/library/thread/sizedqueue/empty_spec.rb7
-rw-r--r--spec/ruby/library/thread/sizedqueue/enq_spec.rb12
-rw-r--r--spec/ruby/library/thread/sizedqueue/length_spec.rb7
-rw-r--r--spec/ruby/library/thread/sizedqueue/max_spec.rb52
-rw-r--r--spec/ruby/library/thread/sizedqueue/new_spec.rb25
-rw-r--r--spec/ruby/library/thread/sizedqueue/num_waiting_spec.rb18
-rw-r--r--spec/ruby/library/thread/sizedqueue/pop_spec.rb7
-rw-r--r--spec/ruby/library/thread/sizedqueue/push_spec.rb12
-rw-r--r--spec/ruby/library/thread/sizedqueue/shared/enque.rb34
-rw-r--r--spec/ruby/library/thread/sizedqueue/shift_spec.rb7
-rw-r--r--spec/ruby/library/thread/sizedqueue/size_spec.rb7
-rw-r--r--spec/ruby/library/thread/sizedqueue_spec.rb8
-rw-r--r--spec/ruby/library/time/httpdate_spec.rb2
-rw-r--r--spec/ruby/library/time/iso8601_spec.rb4
-rw-r--r--spec/ruby/library/time/rfc2822_spec.rb4
-rw-r--r--spec/ruby/library/time/rfc822_spec.rb4
-rw-r--r--spec/ruby/library/time/shared/rfc2822.rb2
-rw-r--r--spec/ruby/library/time/to_date_spec.rb2
-rw-r--r--spec/ruby/library/time/to_datetime_spec.rb20
-rw-r--r--spec/ruby/library/time/to_time_spec.rb20
-rw-r--r--spec/ruby/library/time/xmlschema_spec.rb4
-rw-r--r--spec/ruby/library/timeout/error_spec.rb2
-rw-r--r--spec/ruby/library/timeout/timeout_spec.rb29
-rw-r--r--spec/ruby/library/tmpdir/dir/mktmpdir_spec.rb12
-rw-r--r--spec/ruby/library/tmpdir/dir/tmpdir_spec.rb2
-rw-r--r--spec/ruby/library/uri/decode_www_form_component_spec.rb2
-rw-r--r--spec/ruby/library/uri/decode_www_form_spec.rb2
-rw-r--r--spec/ruby/library/uri/encode_www_form_component_spec.rb2
-rw-r--r--spec/ruby/library/uri/encode_www_form_spec.rb2
-rw-r--r--spec/ruby/library/uri/eql_spec.rb6
-rw-r--r--spec/ruby/library/uri/equality_spec.rb6
-rw-r--r--spec/ruby/library/uri/escape/decode_spec.rb2
-rw-r--r--spec/ruby/library/uri/escape/encode_spec.rb2
-rw-r--r--spec/ruby/library/uri/escape/escape_spec.rb2
-rw-r--r--spec/ruby/library/uri/escape/unescape_spec.rb2
-rw-r--r--spec/ruby/library/uri/extract_spec.rb2
-rw-r--r--spec/ruby/library/uri/ftp/build_spec.rb2
-rw-r--r--spec/ruby/library/uri/ftp/merge_spec.rb2
-rw-r--r--spec/ruby/library/uri/ftp/new2_spec.rb2
-rw-r--r--spec/ruby/library/uri/ftp/path_spec.rb2
-rw-r--r--spec/ruby/library/uri/ftp/set_typecode_spec.rb2
-rw-r--r--spec/ruby/library/uri/ftp/to_s_spec.rb2
-rw-r--r--spec/ruby/library/uri/ftp/typecode_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/absolute_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/build2_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/build_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/coerce_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/component_ary_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/component_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/default_port_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/eql_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/equal_value_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/fragment_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/hash_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/hierarchical_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/host_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/inspect_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/merge_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/minus_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/normalize_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/opaque_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/password_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/path_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/plus_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/port_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/query_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/registry_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/relative_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/route_from_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/route_to_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/scheme_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/select_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_fragment_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_host_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_opaque_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_password_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_path_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_port_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_query_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_registry_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_scheme_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_user_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/set_userinfo_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/to_s_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/use_registry_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/user_spec.rb2
-rw-r--r--spec/ruby/library/uri/generic/userinfo_spec.rb2
-rw-r--r--spec/ruby/library/uri/http/build_spec.rb2
-rw-r--r--spec/ruby/library/uri/http/request_uri_spec.rb2
-rw-r--r--spec/ruby/library/uri/join_spec.rb4
-rw-r--r--spec/ruby/library/uri/ldap/attributes_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/build_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/dn_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/extensions_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/filter_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/hierarchical_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/scope_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/set_attributes_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/set_dn_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/set_extensions_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/set_filter_spec.rb2
-rw-r--r--spec/ruby/library/uri/ldap/set_scope_spec.rb2
-rw-r--r--spec/ruby/library/uri/mailto/build_spec.rb10
-rw-r--r--spec/ruby/library/uri/mailto/headers_spec.rb2
-rw-r--r--spec/ruby/library/uri/mailto/set_headers_spec.rb2
-rw-r--r--spec/ruby/library/uri/mailto/set_to_spec.rb2
-rw-r--r--spec/ruby/library/uri/mailto/to_mailtext_spec.rb2
-rw-r--r--spec/ruby/library/uri/mailto/to_rfc822text_spec.rb2
-rw-r--r--spec/ruby/library/uri/mailto/to_s_spec.rb2
-rw-r--r--spec/ruby/library/uri/mailto/to_spec.rb2
-rw-r--r--spec/ruby/library/uri/merge_spec.rb2
-rw-r--r--spec/ruby/library/uri/normalize_spec.rb4
-rw-r--r--spec/ruby/library/uri/parse_spec.rb4
-rw-r--r--spec/ruby/library/uri/parser/escape_spec.rb2
-rw-r--r--spec/ruby/library/uri/parser/extract_spec.rb4
-rw-r--r--spec/ruby/library/uri/parser/inspect_spec.rb2
-rw-r--r--spec/ruby/library/uri/parser/join_spec.rb4
-rw-r--r--spec/ruby/library/uri/parser/make_regexp_spec.rb2
-rw-r--r--spec/ruby/library/uri/parser/parse_spec.rb6
-rw-r--r--spec/ruby/library/uri/parser/split_spec.rb2
-rw-r--r--spec/ruby/library/uri/parser/unescape_spec.rb2
-rw-r--r--spec/ruby/library/uri/plus_spec.rb6
-rw-r--r--spec/ruby/library/uri/regexp_spec.rb2
-rw-r--r--spec/ruby/library/uri/route_from_spec.rb2
-rw-r--r--spec/ruby/library/uri/route_to_spec.rb2
-rw-r--r--spec/ruby/library/uri/select_spec.rb12
-rw-r--r--spec/ruby/library/uri/set_component_spec.rb24
-rw-r--r--spec/ruby/library/uri/shared/join.rb2
-rw-r--r--spec/ruby/library/uri/shared/parse.rb4
-rw-r--r--spec/ruby/library/uri/split_spec.rb2
-rw-r--r--spec/ruby/library/uri/uri_spec.rb4
-rw-r--r--spec/ruby/library/uri/util/make_components_hash_spec.rb2
-rw-r--r--spec/ruby/library/weakref/__getobj___spec.rb6
-rw-r--r--spec/ruby/library/weakref/allocate_spec.rb8
-rw-r--r--spec/ruby/library/weakref/fixtures/classes.rb6
-rw-r--r--spec/ruby/library/weakref/new_spec.rb13
-rw-r--r--spec/ruby/library/weakref/send_spec.rb6
-rw-r--r--spec/ruby/library/weakref/weakref_alive_spec.rb8
-rw-r--r--spec/ruby/library/win32ole/fixtures/classes.rb16
-rw-r--r--spec/ruby/library/win32ole/fixtures/event.xml4
-rw-r--r--spec/ruby/library/win32ole/win32ole/_getproperty_spec.rb16
-rw-r--r--spec/ruby/library/win32ole/win32ole/_invoke_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole/codepage_spec.rb5
-rw-r--r--spec/ruby/library/win32ole/win32ole/connect_spec.rb7
-rw-r--r--spec/ruby/library/win32ole/win32ole/const_load_spec.rb5
-rw-r--r--spec/ruby/library/win32ole/win32ole/constants_spec.rb5
-rw-r--r--spec/ruby/library/win32ole/win32ole/create_guid_spec.rb5
-rw-r--r--spec/ruby/library/win32ole/win32ole/invoke_spec.rb16
-rw-r--r--spec/ruby/library/win32ole/win32ole/locale_spec.rb7
-rw-r--r--spec/ruby/library/win32ole/win32ole/new_spec.rb9
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_func_methods_spec.rb19
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_get_methods_spec.rb5
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_method_help_spec.rb7
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_method_spec.rb7
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_methods_spec.rb19
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_obj_help_spec.rb14
-rw-r--r--spec/ruby/library/win32ole/win32ole/ole_put_methods_spec.rb19
-rw-r--r--spec/ruby/library/win32ole/win32ole/setproperty_spec.rb7
-rw-r--r--spec/ruby/library/win32ole/win32ole/shared/ole_method.rb18
-rw-r--r--spec/ruby/library/win32ole/win32ole/shared/setproperty.rb22
-rw-r--r--spec/ruby/library/win32ole/win32ole_event/new_spec.rb47
-rw-r--r--spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb105
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/dispid_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/event_interface_spec.rb37
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/event_spec.rb27
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/helpcontext_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/helpfile_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/helpstring_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/invkind_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/invoke_kind_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/name_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/new_spec.rb11
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/offset_vtbl_spec.rb5
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/params_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/return_type_detail_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/return_type_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/return_vtype_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/shared/name.rb2
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/size_opt_params_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/size_params_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/to_s_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_method/visible_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/default_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/input_spec.rb5
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/name_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/ole_type_detail_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/ole_type_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/optional_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/retval_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/shared/name.rb2
-rw-r--r--spec/ruby/library/win32ole/win32ole_param/to_s_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/guid_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/helpcontext_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/helpfile_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/helpstring_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/major_version_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/minor_version_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/name_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/new_spec.rb22
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/ole_classes_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/ole_methods_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/ole_type_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/progid_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/progids_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/shared/name.rb2
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/src_type_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/to_s_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/typekind_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/typelibs_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/variables_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_type/visible_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/name_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/ole_type_detail_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/ole_type_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/to_s_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/value_spec.rb3
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/variable_kind_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/varkind_spec.rb1
-rw-r--r--spec/ruby/library/win32ole/win32ole_variable/visible_spec.rb1
-rw-r--r--spec/ruby/library/yaml/add_builtin_type_spec.rb2
-rw-r--r--spec/ruby/library/yaml/add_domain_type_spec.rb2
-rw-r--r--spec/ruby/library/yaml/add_private_type_spec.rb2
-rw-r--r--spec/ruby/library/yaml/add_ruby_type_spec.rb2
-rw-r--r--spec/ruby/library/yaml/detect_implicit_spec.rb2
-rw-r--r--spec/ruby/library/yaml/dump_spec.rb11
-rw-r--r--spec/ruby/library/yaml/dump_stream_spec.rb4
-rw-r--r--spec/ruby/library/yaml/each_node_spec.rb2
-rw-r--r--spec/ruby/library/yaml/emitter_spec.rb2
-rw-r--r--spec/ruby/library/yaml/fixtures/common.rb6
-rw-r--r--spec/ruby/library/yaml/fixtures/example_class.rb8
-rw-r--r--spec/ruby/library/yaml/generic_parser_spec.rb2
-rw-r--r--spec/ruby/library/yaml/load_documents_spec.rb10
-rw-r--r--spec/ruby/library/yaml/load_file_spec.rb4
-rw-r--r--spec/ruby/library/yaml/load_spec.rb137
-rw-r--r--spec/ruby/library/yaml/load_stream_spec.rb8
-rw-r--r--spec/ruby/library/yaml/object_maker_spec.rb2
-rw-r--r--spec/ruby/library/yaml/parse_documents_spec.rb2
-rw-r--r--spec/ruby/library/yaml/parse_file_spec.rb10
-rw-r--r--spec/ruby/library/yaml/parse_spec.rb4
-rw-r--r--spec/ruby/library/yaml/parser_spec.rb2
-rw-r--r--spec/ruby/library/yaml/quick_emit_spec.rb2
-rw-r--r--spec/ruby/library/yaml/read_type_class_spec.rb2
-rw-r--r--spec/ruby/library/yaml/shared/load.rb136
-rw-r--r--spec/ruby/library/yaml/tagurize_spec.rb11
-rw-r--r--spec/ruby/library/yaml/to_yaml_spec.rb11
-rw-r--r--spec/ruby/library/yaml/transfer_spec.rb2
-rw-r--r--spec/ruby/library/yaml/try_implicit_spec.rb2
-rw-r--r--spec/ruby/library/yaml/unsafe_load_spec.rb9
-rw-r--r--spec/ruby/library/zlib/adler32_spec.rb6
-rw-r--r--spec/ruby/library/zlib/crc32_spec.rb8
-rw-r--r--spec/ruby/library/zlib/crc_table_spec.rb145
-rw-r--r--spec/ruby/library/zlib/deflate/append_spec.rb1
-rw-r--r--spec/ruby/library/zlib/deflate/deflate_spec.rb9
-rw-r--r--spec/ruby/library/zlib/deflate/flush_spec.rb1
-rw-r--r--spec/ruby/library/zlib/deflate/new_spec.rb2
-rw-r--r--spec/ruby/library/zlib/deflate/params_spec.rb2
-rw-r--r--spec/ruby/library/zlib/deflate/set_dictionary_spec.rb3
-rw-r--r--spec/ruby/library/zlib/deflate_spec.rb8
-rw-r--r--spec/ruby/library/zlib/gunzip_spec.rb14
-rw-r--r--spec/ruby/library/zlib/gzip_spec.rb15
-rw-r--r--spec/ruby/library/zlib/gzipfile/close_spec.rb9
-rw-r--r--spec/ruby/library/zlib/gzipfile/closed_spec.rb7
-rw-r--r--spec/ruby/library/zlib/gzipfile/comment_spec.rb5
-rw-r--r--spec/ruby/library/zlib/gzipfile/crc_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipfile/finish_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipfile/level_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipfile/mtime_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipfile/orig_name_spec.rb5
-rw-r--r--spec/ruby/library/zlib/gzipfile/os_code_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipfile/sync_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipfile/to_io_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipfile/wrap_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipreader/each_byte_spec.rb4
-rw-r--r--spec/ruby/library/zlib/gzipreader/each_line_spec.rb5
-rw-r--r--spec/ruby/library/zlib/gzipreader/each_spec.rb5
-rw-r--r--spec/ruby/library/zlib/gzipreader/eof_spec.rb8
-rw-r--r--spec/ruby/library/zlib/gzipreader/getc_spec.rb6
-rw-r--r--spec/ruby/library/zlib/gzipreader/gets_spec.rb4
-rw-r--r--spec/ruby/library/zlib/gzipreader/lineno_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipreader/new_spec.rb2
-rw-r--r--spec/ruby/library/zlib/gzipreader/open_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipreader/pos_spec.rb7
-rw-r--r--spec/ruby/library/zlib/gzipreader/read_spec.rb12
-rw-r--r--spec/ruby/library/zlib/gzipreader/readchar_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipreader/readline_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipreader/readlines_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipreader/readpartial_spec.rb4
-rw-r--r--spec/ruby/library/zlib/gzipreader/rewind_spec.rb5
-rw-r--r--spec/ruby/library/zlib/gzipreader/shared/each.rb4
-rw-r--r--spec/ruby/library/zlib/gzipreader/tell_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipreader/ungetbyte_spec.rb12
-rw-r--r--spec/ruby/library/zlib/gzipreader/ungetc_spec.rb36
-rw-r--r--spec/ruby/library/zlib/gzipreader/unused_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/append_spec.rb4
-rw-r--r--spec/ruby/library/zlib/gzipwriter/comment_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/flush_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/mtime_spec.rb4
-rw-r--r--spec/ruby/library/zlib/gzipwriter/new_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/open_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/orig_name_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/pos_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/print_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/printf_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/putc_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/puts_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/tell_spec.rb1
-rw-r--r--spec/ruby/library/zlib/gzipwriter/write_spec.rb4
-rw-r--r--spec/ruby/library/zlib/inflate/append_spec.rb4
-rw-r--r--spec/ruby/library/zlib/inflate/finish_spec.rb1
-rw-r--r--spec/ruby/library/zlib/inflate/inflate_spec.rb11
-rw-r--r--spec/ruby/library/zlib/inflate/new_spec.rb2
-rw-r--r--spec/ruby/library/zlib/inflate/set_dictionary_spec.rb3
-rw-r--r--spec/ruby/library/zlib/inflate/sync_point_spec.rb1
-rw-r--r--spec/ruby/library/zlib/inflate/sync_spec.rb1
-rw-r--r--spec/ruby/library/zlib/inflate_spec.rb8
-rw-r--r--spec/ruby/library/zlib/zlib_version_spec.rb9
-rw-r--r--spec/ruby/library/zlib/zstream/adler_spec.rb2
-rw-r--r--spec/ruby/library/zlib/zstream/avail_in_spec.rb2
-rw-r--r--spec/ruby/library/zlib/zstream/avail_out_spec.rb2
-rw-r--r--spec/ruby/library/zlib/zstream/close_spec.rb1
-rw-r--r--spec/ruby/library/zlib/zstream/closed_spec.rb1
-rw-r--r--spec/ruby/library/zlib/zstream/data_type_spec.rb2
-rw-r--r--spec/ruby/library/zlib/zstream/end_spec.rb1
-rw-r--r--spec/ruby/library/zlib/zstream/ended_spec.rb1
-rw-r--r--spec/ruby/library/zlib/zstream/finish_spec.rb1
-rw-r--r--spec/ruby/library/zlib/zstream/finished_spec.rb1
-rw-r--r--spec/ruby/library/zlib/zstream/flush_next_in_spec.rb1
-rw-r--r--spec/ruby/library/zlib/zstream/flush_next_out_spec.rb6
-rw-r--r--spec/ruby/library/zlib/zstream/reset_spec.rb1
-rw-r--r--spec/ruby/library/zlib/zstream/stream_end_spec.rb1
-rw-r--r--spec/ruby/library/zlib/zstream/total_in_spec.rb1
-rw-r--r--spec/ruby/library/zlib/zstream/total_out_spec.rb1
-rw-r--r--spec/ruby/optional/capi/README9
-rw-r--r--spec/ruby/optional/capi/array_spec.rb60
-rw-r--r--spec/ruby/optional/capi/basic_object_spec.rb24
-rw-r--r--spec/ruby/optional/capi/bignum_spec.rb34
-rw-r--r--spec/ruby/optional/capi/binding_spec.rb28
-rw-r--r--spec/ruby/optional/capi/boolean_spec.rb2
-rw-r--r--spec/ruby/optional/capi/class_spec.rb208
-rw-r--r--spec/ruby/optional/capi/complex_spec.rb2
-rw-r--r--spec/ruby/optional/capi/constants_spec.rb111
-rw-r--r--spec/ruby/optional/capi/data_spec.rb18
-rw-r--r--spec/ruby/optional/capi/debug_spec.rb66
-rw-r--r--spec/ruby/optional/capi/encoding_spec.rb317
-rw-r--r--spec/ruby/optional/capi/enumerator_spec.rb29
-rw-r--r--spec/ruby/optional/capi/exception_spec.rb97
-rw-r--r--spec/ruby/optional/capi/ext/array_spec.c241
-rw-r--r--spec/ruby/optional/capi/ext/basic_object_spec.c19
-rw-r--r--spec/ruby/optional/capi/ext/bignum_spec.c59
-rw-r--r--spec/ruby/optional/capi/ext/binding_spec.c19
-rw-r--r--spec/ruby/optional/capi/ext/boolean_spec.c5
-rw-r--r--spec/ruby/optional/capi/ext/class_id_under_autoload_spec.c8
-rw-r--r--spec/ruby/optional/capi/ext/class_spec.c150
-rw-r--r--spec/ruby/optional/capi/ext/class_under_autoload_spec.c8
-rw-r--r--spec/ruby/optional/capi/ext/complex_spec.c33
-rw-r--r--spec/ruby/optional/capi/ext/constants_spec.c694
-rw-r--r--spec/ruby/optional/capi/ext/data_spec.c30
-rw-r--r--spec/ruby/optional/capi/ext/debug_spec.c93
-rw-r--r--spec/ruby/optional/capi/ext/encoding_spec.c323
-rw-r--r--spec/ruby/optional/capi/ext/enumerator_spec.c19
-rw-r--r--spec/ruby/optional/capi/ext/exception_spec.c41
-rw-r--r--spec/ruby/optional/capi/ext/fiber_spec.c69
-rw-r--r--spec/ruby/optional/capi/ext/file_spec.c15
-rw-r--r--spec/ruby/optional/capi/ext/fixnum_spec.c28
-rw-r--r--spec/ruby/optional/capi/ext/float_spec.c27
-rw-r--r--spec/ruby/optional/capi/ext/gc_spec.c81
-rw-r--r--spec/ruby/optional/capi/ext/globals_spec.c130
-rw-r--r--spec/ruby/optional/capi/ext/hash_spec.c106
-rw-r--r--spec/ruby/optional/capi/ext/integer_spec.c17
-rw-r--r--spec/ruby/optional/capi/ext/io_spec.c258
-rw-r--r--spec/ruby/optional/capi/ext/kernel_spec.c255
-rw-r--r--spec/ruby/optional/capi/ext/language_spec.c42
-rw-r--r--spec/ruby/optional/capi/ext/marshal_spec.c14
-rw-r--r--spec/ruby/optional/capi/ext/module_spec.c148
-rw-r--r--spec/ruby/optional/capi/ext/module_under_autoload_spec.c8
-rw-r--r--spec/ruby/optional/capi/ext/mutex_spec.c38
-rw-r--r--spec/ruby/optional/capi/ext/numeric_spec.c154
-rw-r--r--spec/ruby/optional/capi/ext/object_spec.c358
-rw-r--r--spec/ruby/optional/capi/ext/proc_spec.c85
-rw-r--r--spec/ruby/optional/capi/ext/range_spec.c18
-rw-r--r--spec/ruby/optional/capi/ext/rational_spec.c43
-rw-r--r--spec/ruby/optional/capi/ext/rbasic_spec.c100
-rw-r--r--spec/ruby/optional/capi/ext/regexp_spec.c58
-rw-r--r--spec/ruby/optional/capi/ext/rubyspec.h593
-rw-r--r--spec/ruby/optional/capi/ext/st_spec.c12
-rw-r--r--spec/ruby/optional/capi/ext/string_spec.c585
-rw-r--r--spec/ruby/optional/capi/ext/struct_spec.c48
-rw-r--r--spec/ruby/optional/capi/ext/symbol_spec.c76
-rw-r--r--spec/ruby/optional/capi/ext/thread_spec.c98
-rw-r--r--spec/ruby/optional/capi/ext/time_spec.c48
-rw-r--r--spec/ruby/optional/capi/ext/tracepoint_spec.c49
-rw-r--r--spec/ruby/optional/capi/ext/typed_data_spec.c94
-rw-r--r--spec/ruby/optional/capi/ext/util_spec.c101
-rw-r--r--spec/ruby/optional/capi/fiber_spec.rb89
-rw-r--r--spec/ruby/optional/capi/file_spec.rb4
-rw-r--r--spec/ruby/optional/capi/fixnum_spec.rb113
-rw-r--r--spec/ruby/optional/capi/fixtures/class.rb24
-rw-r--r--spec/ruby/optional/capi/fixtures/module.rb4
-rw-r--r--spec/ruby/optional/capi/fixtures/object.rb29
-rw-r--r--spec/ruby/optional/capi/fixtures/read.txt1
-rw-r--r--spec/ruby/optional/capi/float_spec.rb15
-rw-r--r--spec/ruby/optional/capi/gc_spec.rb67
-rw-r--r--spec/ruby/optional/capi/globals_spec.rb91
-rw-r--r--spec/ruby/optional/capi/hash_spec.rb43
-rw-r--r--spec/ruby/optional/capi/integer_spec.rb17
-rw-r--r--spec/ruby/optional/capi/io_spec.rb201
-rw-r--r--spec/ruby/optional/capi/kernel_spec.rb358
-rw-r--r--spec/ruby/optional/capi/language_spec.rb37
-rw-r--r--spec/ruby/optional/capi/marshal_spec.rb2
-rw-r--r--spec/ruby/optional/capi/module_spec.rb106
-rw-r--r--spec/ruby/optional/capi/mutex_spec.rb17
-rw-r--r--spec/ruby/optional/capi/numeric_spec.rb320
-rw-r--r--spec/ruby/optional/capi/object_spec.rb366
-rw-r--r--spec/ruby/optional/capi/proc_spec.rb81
-rw-r--r--spec/ruby/optional/capi/rake_helper.rb1
-rw-r--r--spec/ruby/optional/capi/range_spec.rb8
-rw-r--r--spec/ruby/optional/capi/rational_spec.rb2
-rw-r--r--spec/ruby/optional/capi/rbasic_spec.rb42
-rw-r--r--spec/ruby/optional/capi/regexp_spec.rb61
-rw-r--r--spec/ruby/optional/capi/shared/rbasic.rb29
-rw-r--r--spec/ruby/optional/capi/spec_helper.rb87
-rw-r--r--spec/ruby/optional/capi/st_spec.rb2
-rw-r--r--spec/ruby/optional/capi/string_spec.rb596
-rw-r--r--spec/ruby/optional/capi/struct_spec.rb44
-rw-r--r--spec/ruby/optional/capi/symbol_spec.rb49
-rw-r--r--spec/ruby/optional/capi/thread_spec.rb88
-rw-r--r--spec/ruby/optional/capi/time_spec.rb165
-rw-r--r--spec/ruby/optional/capi/tracepoint_spec.rb56
-rw-r--r--spec/ruby/optional/capi/typed_data_spec.rb46
-rw-r--r--spec/ruby/optional/capi/util_spec.rb185
-rw-r--r--spec/ruby/security/cve_2010_1330_spec.rb19
-rw-r--r--spec/ruby/security/cve_2011_4815_spec.rb14
-rw-r--r--spec/ruby/security/cve_2013_4164_spec.rb6
-rw-r--r--spec/ruby/security/cve_2014_8080_spec.rb52
-rw-r--r--spec/ruby/security/cve_2017_17742_spec.rb37
-rw-r--r--spec/ruby/security/cve_2018_16396_spec.rb7
-rw-r--r--spec/ruby/security/cve_2018_6914_spec.rb55
-rw-r--r--spec/ruby/security/cve_2018_8778_spec.rb10
-rw-r--r--spec/ruby/security/cve_2018_8779_spec.rb30
-rw-r--r--spec/ruby/security/cve_2018_8780_spec.rb43
-rw-r--r--spec/ruby/security/cve_2019_8321_spec.rb20
-rw-r--r--spec/ruby/security/cve_2019_8322_spec.rb21
-rw-r--r--spec/ruby/security/cve_2019_8323_spec.rb36
-rw-r--r--spec/ruby/security/cve_2019_8325_spec.rb46
-rw-r--r--spec/ruby/security/cve_2020_10663_spec.rb39
-rw-r--r--spec/ruby/shared/basicobject/method_missing.rb36
-rw-r--r--spec/ruby/shared/basicobject/send.rb28
-rw-r--r--spec/ruby/shared/complex/Complex.rb133
-rw-r--r--spec/ruby/shared/complex/abs.rb12
-rw-r--r--spec/ruby/shared/complex/abs2.rb12
-rw-r--r--spec/ruby/shared/complex/arg.rb (renamed from spec/ruby/core/complex/shared/arg.rb)0
-rw-r--r--spec/ruby/shared/complex/coerce.rb70
-rw-r--r--spec/ruby/shared/complex/conjugate.rb (renamed from spec/ruby/core/complex/shared/conjugate.rb)0
-rw-r--r--spec/ruby/shared/complex/constants.rb7
-rw-r--r--spec/ruby/shared/complex/denominator.rb13
-rw-r--r--spec/ruby/shared/complex/divide.rb84
-rw-r--r--spec/ruby/shared/complex/equal_value.rb93
-rw-r--r--spec/ruby/shared/complex/exponent.rb61
-rw-r--r--spec/ruby/shared/complex/float/arg.rb38
-rw-r--r--spec/ruby/shared/complex/hash.rb16
-rw-r--r--spec/ruby/shared/complex/image.rb10
-rw-r--r--spec/ruby/shared/complex/inspect.rb14
-rw-r--r--spec/ruby/shared/complex/minus.rb45
-rw-r--r--spec/ruby/shared/complex/multiply.rb49
-rw-r--r--spec/ruby/shared/complex/numerator.rb19
-rw-r--r--spec/ruby/shared/complex/numeric/arg.rb38
-rw-r--r--spec/ruby/shared/complex/numeric/conj.rb20
-rw-r--r--spec/ruby/shared/complex/numeric/imag.rb26
-rw-r--r--spec/ruby/shared/complex/numeric/polar.rb50
-rw-r--r--spec/ruby/shared/complex/numeric/real.rb30
-rw-r--r--spec/ruby/shared/complex/plus.rb45
-rw-r--r--spec/ruby/shared/complex/polar.rb22
-rw-r--r--spec/ruby/shared/complex/real.rb8
-rw-r--r--spec/ruby/shared/complex/rect.rb96
-rw-r--r--spec/ruby/shared/complex/to_s.rb44
-rw-r--r--spec/ruby/shared/enumerable/minmax.rb24
-rw-r--r--spec/ruby/shared/enumerator/each.rb89
-rw-r--r--spec/ruby/shared/enumerator/enum_cons.rb12
-rw-r--r--spec/ruby/shared/enumerator/enum_for.rb7
-rw-r--r--spec/ruby/shared/enumerator/new.rb42
-rw-r--r--spec/ruby/shared/enumerator/next.rb28
-rw-r--r--spec/ruby/shared/enumerator/rewind.rb39
-rw-r--r--spec/ruby/shared/enumerator/with_index.rb15
-rw-r--r--spec/ruby/shared/enumerator/with_object.rb2
-rw-r--r--spec/ruby/shared/fiber/resume.rb40
-rw-r--r--spec/ruby/shared/file/directory.rb6
-rw-r--r--spec/ruby/shared/file/executable.rb45
-rw-r--r--spec/ruby/shared/file/executable_real.rb43
-rw-r--r--spec/ruby/shared/file/exist.rb6
-rw-r--r--spec/ruby/shared/file/file.rb8
-rw-r--r--spec/ruby/shared/file/grpowned.rb3
-rw-r--r--spec/ruby/shared/file/identical.rb12
-rw-r--r--spec/ruby/shared/file/readable.rb21
-rw-r--r--spec/ruby/shared/file/readable_real.rb16
-rw-r--r--spec/ruby/shared/file/size.rb2
-rw-r--r--spec/ruby/shared/file/world_readable.rb16
-rw-r--r--spec/ruby/shared/file/world_writable.rb16
-rw-r--r--spec/ruby/shared/file/writable.rb22
-rw-r--r--spec/ruby/shared/file/writable_real.rb24
-rw-r--r--spec/ruby/shared/file/zero.rb8
-rw-r--r--spec/ruby/shared/hash/key_error.rb23
-rw-r--r--spec/ruby/shared/io/putc.rb12
-rw-r--r--spec/ruby/shared/kernel/at_exit.rb67
-rw-r--r--spec/ruby/shared/kernel/complex.rb133
-rw-r--r--spec/ruby/shared/kernel/fixtures/END.rb3
-rw-r--r--spec/ruby/shared/kernel/fixtures/at_exit.rb3
-rw-r--r--spec/ruby/shared/kernel/raise.rb123
-rw-r--r--spec/ruby/shared/math/atanh.rb8
-rw-r--r--spec/ruby/shared/process/abort.rb12
-rw-r--r--spec/ruby/shared/process/exit.rb58
-rw-r--r--spec/ruby/shared/process/fork.rb6
-rw-r--r--spec/ruby/shared/queue/clear.rb12
-rw-r--r--spec/ruby/shared/queue/close.rb14
-rw-r--r--spec/ruby/shared/queue/deque.rb147
-rw-r--r--spec/ruby/shared/queue/enque.rb18
-rw-r--r--spec/ruby/shared/rational/Rational.rb91
-rw-r--r--spec/ruby/shared/rational/abs.rb2
-rw-r--r--spec/ruby/shared/rational/arithmetic_exception_in_coerce.rb11
-rw-r--r--spec/ruby/shared/rational/ceil.rb2
-rw-r--r--spec/ruby/shared/rational/coerce.rb15
-rw-r--r--spec/ruby/shared/rational/comparison.rb12
-rw-r--r--spec/ruby/shared/rational/denominator.rb2
-rw-r--r--spec/ruby/shared/rational/div.rb14
-rw-r--r--spec/ruby/shared/rational/divide.rb6
-rw-r--r--spec/ruby/shared/rational/divmod.rb14
-rw-r--r--spec/ruby/shared/rational/equal_value.rb2
-rw-r--r--spec/ruby/shared/rational/exponent.rb66
-rw-r--r--spec/ruby/shared/rational/fdiv.rb2
-rw-r--r--spec/ruby/shared/rational/floor.rb2
-rw-r--r--spec/ruby/shared/rational/hash.rb2
-rw-r--r--spec/ruby/shared/rational/inspect.rb14
-rw-r--r--spec/ruby/shared/rational/marshal_dump.rb2
-rw-r--r--spec/ruby/shared/rational/marshal_load.rb2
-rw-r--r--spec/ruby/shared/rational/minus.rb48
-rw-r--r--spec/ruby/shared/rational/modulo.rb10
-rw-r--r--spec/ruby/shared/rational/multiply.rb2
-rw-r--r--spec/ruby/shared/rational/numerator.rb2
-rw-r--r--spec/ruby/shared/rational/plus.rb2
-rw-r--r--spec/ruby/shared/rational/quo.rb2
-rw-r--r--spec/ruby/shared/rational/remainder.rb2
-rw-r--r--spec/ruby/shared/rational/round.rb58
-rw-r--r--spec/ruby/shared/rational/to_f.rb8
-rw-r--r--spec/ruby/shared/rational/to_i.rb2
-rw-r--r--spec/ruby/shared/rational/to_r.rb14
-rw-r--r--spec/ruby/shared/rational/to_s.rb9
-rw-r--r--spec/ruby/shared/rational/truncate.rb28
-rw-r--r--spec/ruby/shared/sizedqueue/enque.rb113
-rw-r--r--spec/ruby/shared/sizedqueue/max.rb47
-rw-r--r--spec/ruby/shared/sizedqueue/new.rb23
-rw-r--r--spec/ruby/shared/sizedqueue/num_waiting.rb12
-rw-r--r--spec/ruby/shared/string/end_with.rb61
-rw-r--r--spec/ruby/shared/string/start_with.rb76
-rw-r--r--spec/ruby/shared/string/times.rb46
-rw-r--r--spec/ruby/shared/time/strftime_for_date.rb10
-rw-r--r--spec/ruby/shared/time/strftime_for_time.rb8
-rw-r--r--spec/ruby/spec_helper.rb10
-rw-r--r--spec/syntax_suggest/fixtures/derailed_require_tree.rb.txt74
-rwxr-xr-xspec/syntax_suggest/fixtures/rexe.rb.txt569
-rw-r--r--spec/syntax_suggest/fixtures/routes.rb.txt121
-rw-r--r--spec/syntax_suggest/fixtures/ruby_buildpack.rb.txt1344
-rw-r--r--spec/syntax_suggest/fixtures/syntax_tree.rb.txt9234
-rw-r--r--spec/syntax_suggest/fixtures/this_project_extra_def.rb.txt64
-rw-r--r--spec/syntax_suggest/fixtures/webmock.rb.txt35
-rw-r--r--spec/syntax_suggest/integration/exe_cli_spec.rb27
-rw-r--r--spec/syntax_suggest/integration/ruby_command_line_spec.rb193
-rw-r--r--spec/syntax_suggest/integration/syntax_suggest_spec.rb207
-rw-r--r--spec/syntax_suggest/spec_helper.rb104
-rw-r--r--spec/syntax_suggest/unit/api_spec.rb108
-rw-r--r--spec/syntax_suggest/unit/around_block_scan_spec.rb165
-rw-r--r--spec/syntax_suggest/unit/block_expand_spec.rb230
-rw-r--r--spec/syntax_suggest/unit/capture_code_context_spec.rb203
-rw-r--r--spec/syntax_suggest/unit/clean_document_spec.rb260
-rw-r--r--spec/syntax_suggest/unit/cli_spec.rb224
-rw-r--r--spec/syntax_suggest/unit/code_block_spec.rb77
-rw-r--r--spec/syntax_suggest/unit/code_frontier_spec.rb135
-rw-r--r--spec/syntax_suggest/unit/code_line_spec.rb165
-rw-r--r--spec/syntax_suggest/unit/code_search_spec.rb505
-rw-r--r--spec/syntax_suggest/unit/core_ext_spec.rb34
-rw-r--r--spec/syntax_suggest/unit/display_invalid_blocks_spec.rb174
-rw-r--r--spec/syntax_suggest/unit/explain_syntax_spec.rb255
-rw-r--r--spec/syntax_suggest/unit/lex_all_spec.rb29
-rw-r--r--spec/syntax_suggest/unit/pathname_from_message_spec.rb56
-rw-r--r--spec/syntax_suggest/unit/priority_queue_spec.rb95
-rw-r--r--sprintf.c1678
-rw-r--r--st.c1137
-rw-r--r--strftime.c72
-rw-r--r--string.c10750
-rw-r--r--string.rb552
-rw-r--r--struct.c1890
-rw-r--r--symbol.c1028
-rw-r--r--symbol.h37
-rw-r--r--symbol.rb13
-rw-r--r--template/Doxyfile.tmpl2506
-rw-r--r--template/GNUmakefile.in28
-rw-r--r--template/Makefile.in641
-rw-r--r--template/builtin_binary.inc.tmpl30
-rw-r--r--template/call_iseq_optimized.inc.tmpl68
-rw-r--r--template/configure-ext.mk.tmpl8
-rw-r--r--template/depend.tmpl2
-rw-r--r--template/encdb.h.tmpl51
-rw-r--r--template/exts.mk.tmpl43
-rw-r--r--template/fake.rb.in39
-rw-r--r--template/id.c.tmpl4
-rw-r--r--template/id.h.tmpl10
-rw-r--r--template/insns.inc.tmpl24
-rw-r--r--template/insns_info.inc.tmpl109
-rw-r--r--template/minsns.inc.tmpl14
-rw-r--r--template/opt_sc.inc.tmpl35
-rw-r--r--template/optinsn.inc.tmpl78
-rw-r--r--template/optunifs.inc.tmpl67
-rw-r--r--template/prelude.c.tmpl219
-rwxr-xr-xtemplate/ruby-gdb.in6
-rwxr-xr-xtemplate/ruby-lldb.in6
-rw-r--r--template/ruby-runner.h.in2
-rw-r--r--template/ruby.pc.in19
-rw-r--r--template/sizes.c.tmpl2
-rw-r--r--template/transdb.h.tmpl21
-rw-r--r--template/unicode_norm_gen.tmpl22
-rw-r--r--template/verconf.h.tmpl2
-rw-r--r--template/vm.inc.tmpl33
-rw-r--r--template/vmtc.inc.tmpl21
-rw-r--r--template/yarvarch.en (renamed from doc/yarvarch.en)0
-rw-r--r--template/yarvarch.ja (renamed from doc/yarvarch.ja)0
-rw-r--r--template/yasmdata.rb.tmpl20
-rw-r--r--test/-ext-/arith_seq/test_arith_seq_beg_len_step.rb52
-rw-r--r--test/-ext-/arith_seq/test_arith_seq_extract.rb40
-rw-r--r--test/-ext-/array/test_resize.rb8
-rw-r--r--test/-ext-/array/test_to_ary_concat.rb20
-rw-r--r--test/-ext-/bignum/test_big2str.rb38
-rw-r--r--test/-ext-/bignum/test_bigzero.rb20
-rw-r--r--test/-ext-/bignum/test_div.rb38
-rw-r--r--test/-ext-/bignum/test_mul.rb260
-rw-r--r--test/-ext-/bignum/test_pack.rb737
-rw-r--r--test/-ext-/bignum/test_str2big.rb52
-rw-r--r--test/-ext-/bug_reporter/test_bug_reporter.rb15
-rw-r--r--test/-ext-/debug/test_debug.rb2
-rw-r--r--test/-ext-/debug/test_profile_frames.rb74
-rw-r--r--test/-ext-/econv/test_append.rb23
-rw-r--r--test/-ext-/eval/test_eval.rb12
-rw-r--r--test/-ext-/exception/test_data_error.rb2
-rw-r--r--test/-ext-/exception/test_enc_raise.rb2
-rw-r--r--test/-ext-/exception/test_ensured.rb2
-rw-r--r--test/-ext-/exception/test_exception_at_throwing.rb2
-rw-r--r--test/-ext-/float/test_nextafter.rb4
-rw-r--r--test/-ext-/funcall/test_funcall.rb11
-rw-r--r--test/-ext-/funcall/test_passing_block.rb46
-rw-r--r--test/-ext-/gvl/test_last_thread.rb3
-rw-r--r--test/-ext-/gvl/test_ubf_async_safe.rb20
-rw-r--r--test/-ext-/hash/test_delete.rb2
-rw-r--r--test/-ext-/integer/test_integer.rb12
-rw-r--r--test/-ext-/integer/test_my_integer.rb2
-rw-r--r--test/-ext-/iseq_load/test_iseq_load.rb75
-rw-r--r--test/-ext-/iter/test_yield_block.rb2
-rw-r--r--test/-ext-/marshal/test_internal_ivar.rb8
-rw-r--r--test/-ext-/method/test_arity.rb2
-rw-r--r--test/-ext-/num2int/test_num2int.rb4
-rw-r--r--test/-ext-/popen_deadlock/test_popen_deadlock.rb2
-rw-r--r--test/-ext-/postponed_job/test_postponed_job.rb11
-rw-r--r--test/-ext-/proc/test_bmethod.rb4
-rw-r--r--test/-ext-/rational/test_rat.rb44
-rw-r--r--test/-ext-/string/test_capacity.rb51
-rw-r--r--test/-ext-/string/test_cstr.rb14
-rw-r--r--test/-ext-/string/test_ellipsize.rb2
-rw-r--r--test/-ext-/string/test_enc_str_buf_cat.rb9
-rw-r--r--test/-ext-/string/test_fstring.rb40
-rw-r--r--test/-ext-/string/test_interned_str.rb12
-rw-r--r--test/-ext-/string/test_modify_expand.rb3
-rw-r--r--test/-ext-/string/test_normalize.rb8
-rw-r--r--test/-ext-/string/test_rb_str_dup.rb6
-rw-r--r--test/-ext-/string/test_set_len.rb10
-rw-r--r--test/-ext-/string/test_too_many_dummy_encodings.rb15
-rw-r--r--test/-ext-/struct/test_duplicate.rb4
-rw-r--r--test/-ext-/symbol/noninterned_name.rb2
-rw-r--r--test/-ext-/symbol/test_inadvertent_creation.rb21
-rw-r--r--test/-ext-/symbol/test_type.rb9
-rw-r--r--test/-ext-/test_abi.rb47
-rw-r--r--test/-ext-/test_bug-14834.rb12
-rw-r--r--test/-ext-/test_enumerator_kw.rb11
-rw-r--r--test/-ext-/test_notimplement.rb31
-rw-r--r--test/-ext-/test_printf.rb13
-rw-r--r--test/-ext-/test_random.rb45
-rw-r--r--test/-ext-/test_scan_args.rb72
-rw-r--r--test/-ext-/thread/test_instrumentation_api.rb91
-rw-r--r--test/-ext-/thread_fd/test_thread_fd_close.rb24
-rw-r--r--test/-ext-/thread_fd_close/test_thread_fd_close.rb25
-rw-r--r--test/-ext-/tracepoint/test_tracepoint.rb24
-rw-r--r--test/-ext-/wait/test_wait.rb36
-rw-r--r--test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb53
-rw-r--r--test/-ext-/win32/test_console_attr.rb29
-rw-r--r--test/benchmark/test_benchmark.rb19
-rw-r--r--test/bigdecimal/helper.rb39
-rw-r--r--test/bigdecimal/test_bigdecimal.rb692
-rw-r--r--test/bigdecimal/test_bigdecimal_util.rb95
-rw-r--r--test/bigdecimal/test_bigmath.rb2
-rw-r--r--test/bigdecimal/test_ractor.rb23
-rw-r--r--test/bigdecimal/testbase.rb28
-rw-r--r--test/cgi/test_cgi_cookie.rb90
-rw-r--r--test/cgi/test_cgi_core.rb4
-rw-r--r--test/cgi/test_cgi_header.rb8
-rw-r--r--test/cgi/test_cgi_multipart.rb3
-rw-r--r--test/cgi/test_cgi_util.rb157
-rw-r--r--test/colors (renamed from tool/colors)0
-rw-r--r--test/coverage/autostart.rb2
-rw-r--r--test/coverage/main.rb1
-rw-r--r--test/coverage/test_coverage.rb532
-rw-r--r--test/csv/base.rb9
-rw-r--r--test/csv/helper.rb42
-rw-r--r--test/csv/interface/test_delegation.rb47
-rw-r--r--test/csv/interface/test_read.rb381
-rw-r--r--test/csv/interface/test_read_write.rb124
-rw-r--r--test/csv/interface/test_write.rb217
-rw-r--r--test/csv/parse/test_column_separator.rb40
-rw-r--r--test/csv/parse/test_convert.rb165
-rw-r--r--test/csv/parse/test_each.rb23
-rw-r--r--test/csv/parse/test_general.rb341
-rw-r--r--test/csv/parse/test_header.rb342
-rw-r--r--test/csv/parse/test_inputs_scanner.rb63
-rw-r--r--test/csv/parse/test_invalid.rb52
-rw-r--r--test/csv/parse/test_liberal_parsing.rb171
-rw-r--r--test/csv/parse/test_quote_char_nil.rb93
-rw-r--r--test/csv/parse/test_read.rb27
-rw-r--r--test/csv/parse/test_rewind.rb40
-rw-r--r--test/csv/parse/test_row_separator.rb16
-rw-r--r--test/csv/parse/test_skip_lines.rb118
-rw-r--r--test/csv/parse/test_strip.rb112
-rw-r--r--test/csv/parse/test_unconverted_fields.rb117
-rwxr-xr-xtest/csv/test_csv_parsing.rb244
-rwxr-xr-xtest/csv/test_csv_writing.rb98
-rwxr-xr-x[-rw-r--r--]test/csv/test_data_converters.rb291
-rwxr-xr-x[-rw-r--r--]test/csv/test_encodings.rb109
-rwxr-xr-x[-rw-r--r--]test/csv/test_features.rb203
-rwxr-xr-xtest/csv/test_headers.rb305
-rwxr-xr-xtest/csv/test_interface.rb393
-rw-r--r--test/csv/test_patterns.rb27
-rwxr-xr-x[-rw-r--r--]test/csv/test_row.rb89
-rwxr-xr-x[-rw-r--r--]test/csv/test_table.rb318
-rw-r--r--test/csv/ts_all.rb21
-rw-r--r--test/csv/write/test_converters.rb53
-rw-r--r--test/csv/write/test_force_quotes.rb78
-rw-r--r--test/csv/write/test_general.rb246
-rw-r--r--test/csv/write/test_quote_empty.rb70
-rw-r--r--test/date/test_date.rb54
-rw-r--r--test/date/test_date_arith.rb22
-rw-r--r--test/date/test_date_attr.rb20
-rw-r--r--test/date/test_date_base.rb435
-rw-r--r--test/date/test_date_conv.rb35
-rw-r--r--test/date/test_date_marshal.rb21
-rw-r--r--test/date/test_date_new.rb110
-rw-r--r--test/date/test_date_parse.rb209
-rw-r--r--test/date/test_date_ractor.rb27
-rw-r--r--test/date/test_date_strftime.rb20
-rw-r--r--test/date/test_date_strptime.rb28
-rw-r--r--test/date/test_switch_hitter.rb57
-rw-r--r--test/dbm/test_dbm.rb634
-rw-r--r--test/did_you_mean/core_ext/test_name_error_extension.rb55
-rw-r--r--test/did_you_mean/edit_distance/test_jaro_winkler.rb36
-rw-r--r--test/did_you_mean/fixtures/book.rb4
-rw-r--r--test/did_you_mean/fixtures/mini_dir.yml15
-rw-r--r--test/did_you_mean/fixtures/rspec_dir.yml112
-rw-r--r--test/did_you_mean/helper.rb43
-rw-r--r--test/did_you_mean/spell_checking/test_class_name_check.rb81
-rw-r--r--test/did_you_mean/spell_checking/test_key_name_check.rb54
-rw-r--r--test/did_you_mean/spell_checking/test_method_name_check.rb165
-rw-r--r--test/did_you_mean/spell_checking/test_pattern_key_name_check.rb20
-rw-r--r--test/did_you_mean/spell_checking/test_require_path_check.rb32
-rw-r--r--test/did_you_mean/spell_checking/test_uncorrectable_name_check.rb15
-rw-r--r--test/did_you_mean/spell_checking/test_variable_name_check.rb152
-rw-r--r--test/did_you_mean/test_ractor_compatibility.rb117
-rw-r--r--test/did_you_mean/test_spell_checker.rb78
-rw-r--r--test/did_you_mean/test_tree_spell_checker.rb170
-rw-r--r--test/did_you_mean/tree_spell/change_word.rb61
-rw-r--r--test/did_you_mean/tree_spell/human_typo.rb69
-rw-r--r--test/did_you_mean/tree_spell/test_change_word.rb38
-rw-r--r--test/did_you_mean/tree_spell/test_human_typo.rb24
-rw-r--r--test/digest/test_digest.rb8
-rw-r--r--test/digest/test_digest_extend.rb15
-rw-r--r--test/digest/test_ractor.rb97
-rw-r--r--test/drb/drbtest.rb108
-rw-r--r--test/drb/test_drb.rb136
-rw-r--r--test/drb/test_drbobject.rb69
-rw-r--r--test/drb/test_drbssl.rb63
-rw-r--r--test/drb/test_drbunix.rb26
-rw-r--r--test/drb/ut_drb.rb21
-rw-r--r--test/dtrace/helper.rb100
-rw-r--r--test/dtrace/test_array_create.rb8
-rw-r--r--test/dtrace/test_function_entry.rb9
-rw-r--r--test/dtrace/test_hash_create.rb6
-rw-r--r--test/dtrace/test_method_cache.rb2
-rw-r--r--test/dtrace/test_require.rb6
-rw-r--r--test/dtrace/test_singleton_function.rb9
-rw-r--r--test/dtrace/test_string.rb6
-rw-r--r--test/erb/test_erb.rb150
-rw-r--r--test/erb/test_erb_command.rb10
-rw-r--r--test/erb/test_erb_m17n.rb2
-rw-r--r--test/error_highlight/test_error_highlight.rb1352
-rw-r--r--test/etc/test_etc.rb28
-rw-r--r--test/excludes/TestArray.rb1
-rw-r--r--test/excludes/TestArraySubclass.rb1
-rw-r--r--test/excludes/TestGem.rb4
-rw-r--r--test/excludes/TestThread.rb12
-rw-r--r--test/excludes/TestThreadQueue.rb9
-rw-r--r--test/excludes/_appveyor/TestArray.rb7
-rw-r--r--test/fiber/autoload.rb3
-rw-r--r--test/fiber/http.rb54
-rw-r--r--test/fiber/scheduler.rb467
-rw-r--r--test/fiber/test_address_resolve.rb278
-rw-r--r--test/fiber/test_backtrace.rb22
-rw-r--r--test/fiber/test_enumerator.rb45
-rw-r--r--test/fiber/test_io.rb194
-rw-r--r--test/fiber/test_io_buffer.rb199
-rw-r--r--test/fiber/test_mutex.rb240
-rw-r--r--test/fiber/test_process.rb51
-rw-r--r--test/fiber/test_queue.rb42
-rw-r--r--test/fiber/test_ractor.rb23
-rw-r--r--test/fiber/test_scheduler.rb185
-rw-r--r--test/fiber/test_sleep.rb71
-rw-r--r--test/fiber/test_storage.rb115
-rw-r--r--test/fiber/test_thread.rb108
-rw-r--r--test/fiber/test_timeout.rb51
-rw-r--r--test/fiddle/helper.rb83
-rw-r--r--test/fiddle/test_c_struct_builder.rb69
-rw-r--r--test/fiddle/test_c_struct_entry.rb130
-rw-r--r--test/fiddle/test_c_union_entity.rb15
-rw-r--r--test/fiddle/test_closure.rb106
-rw-r--r--test/fiddle/test_cparser.rb179
-rw-r--r--test/fiddle/test_fiddle.rb41
-rw-r--r--test/fiddle/test_func.rb118
-rw-r--r--test/fiddle/test_function.rb169
-rw-r--r--test/fiddle/test_handle.rb61
-rw-r--r--test/fiddle/test_import.rb393
-rw-r--r--test/fiddle/test_memory_view.rb143
-rw-r--r--test/fiddle/test_pack.rb37
-rw-r--r--test/fiddle/test_pinned.rb28
-rw-r--r--test/fiddle/test_pointer.rb124
-rw-r--r--test/fileutils/clobber.rb5
-rw-r--r--test/fileutils/test_dryrun.rb2
-rw-r--r--test/fileutils/test_fileutils.rb296
-rw-r--r--test/fileutils/test_nowrite.rb2
-rw-r--r--test/fileutils/test_verbose.rb2
-rw-r--r--test/fileutils/visibility_tests.rb5
-rw-r--r--test/fixtures/fake_sorted_set_gem/sorted_set.rb9
-rw-r--r--test/gdbm/test_gdbm.rb733
-rw-r--r--test/io/console/test_io_console.rb234
-rw-r--r--test/io/nonblock/test_flush.rb3
-rw-r--r--test/io/wait/test_io_wait.rb58
-rw-r--r--test/io/wait/test_io_wait_uncommon.rb77
-rw-r--r--test/io/wait/test_ractor.rb17
-rw-r--r--test/irb/helper.rb79
-rw-r--r--test/irb/test_cmd.rb892
-rw-r--r--test/irb/test_color.rb275
-rw-r--r--test/irb/test_color_printer.rb70
-rw-r--r--test/irb/test_completion.rb357
-rw-r--r--test/irb/test_context.rb721
-rw-r--r--test/irb/test_debug_cmd.rb303
-rw-r--r--test/irb/test_history.rb209
-rw-r--r--test/irb/test_init.rb156
-rw-r--r--test/irb/test_input_method.rb79
-rw-r--r--test/irb/test_locale.rb118
-rw-r--r--test/irb/test_option.rb7
-rw-r--r--test/irb/test_raise_no_backtrace_exception.rb48
-rw-r--r--test/irb/test_ruby-lex.rb108
-rw-r--r--test/irb/test_ruby_lex.rb841
-rw-r--r--test/irb/test_workspace.rb52
-rw-r--r--test/irb/yamatanooroti/test_rendering.rb250
-rw-r--r--test/json/fixtures/fail29.json1
-rw-r--r--test/json/fixtures/fail30.json1
-rw-r--r--test/json/fixtures/fail31.json1
-rw-r--r--test/json/fixtures/fail32.json1
-rw-r--r--test/json/json_addition_test.rb8
-rw-r--r--test/json/json_common_interface_test.rb51
-rw-r--r--test/json/json_fixtures_test.rb10
-rw-r--r--test/json/json_generator_test.rb38
-rw-r--r--test/json/json_parser_test.rb58
-rw-r--r--test/json/ractor_test.rb30
-rw-r--r--test/json/test_helper.rb10
-rw-r--r--test/lib/-test-/integer.rb14
-rw-r--r--test/lib/envutil.rb298
-rw-r--r--test/lib/find_executable.rb (renamed from tool/lib/find_executable.rb)0
-rw-r--r--test/lib/iseq_loader_checker.rb75
-rw-r--r--test/lib/jit_support.rb25
-rw-r--r--test/lib/leakchecker.rb229
-rw-r--r--test/lib/memory_status.rb149
-rw-r--r--test/lib/minitest/README.txt457
-rw-r--r--test/lib/minitest/autorun.rb14
-rw-r--r--test/lib/minitest/benchmark.rb418
-rw-r--r--test/lib/minitest/mock.rb196
-rw-r--r--test/lib/minitest/unit.rb1414
-rw-r--r--test/lib/profile_test_all.rb91
-rw-r--r--test/lib/test/unit.rb1176
-rw-r--r--test/lib/test/unit/assertions.rb943
-rw-r--r--test/lib/test/unit/parallel.rb208
-rw-r--r--test/lib/test/unit/testcase.rb36
-rw-r--r--test/lib/tracepointchecker.rb126
-rw-r--r--test/lib/with_different_ofs.rb4
-rw-r--r--test/lib/zombie_hunter.rb9
-rw-r--r--test/logger/test_formatter.rb35
-rw-r--r--test/logger/test_logdevice.rb35
-rw-r--r--test/logger/test_logger.rb61
-rw-r--r--test/logger/test_logperiod.rb80
-rw-r--r--test/logger/test_severity.rb44
-rw-r--r--test/matrix/test_matrix.rb651
-rw-r--r--test/matrix/test_vector.rb231
-rw-r--r--test/minitest/metametameta.rb71
-rw-r--r--test/minitest/test_minitest_benchmark.rb131
-rw-r--r--test/minitest/test_minitest_mock.rb404
-rw-r--r--test/minitest/test_minitest_unit.rb1779
-rw-r--r--test/misc/test_ruby_mode.rb183
-rw-r--r--test/mkmf/base.rb236
-rw-r--r--test/mkmf/test_config.rb16
-rw-r--r--test/mkmf/test_constant.rb60
-rw-r--r--test/mkmf/test_convertible.rb48
-rw-r--r--test/mkmf/test_egrep_cpp.rb13
-rw-r--r--test/mkmf/test_find_executable.rb82
-rw-r--r--test/mkmf/test_flags.rb92
-rw-r--r--test/mkmf/test_framework.rb70
-rw-r--r--test/mkmf/test_have_func.rb18
-rw-r--r--test/mkmf/test_have_library.rb84
-rw-r--r--test/mkmf/test_have_macro.rb46
-rw-r--r--test/mkmf/test_install.rb28
-rw-r--r--test/mkmf/test_libs.rb153
-rw-r--r--test/mkmf/test_mkmf.rb13
-rw-r--r--test/mkmf/test_pkg_config.rb66
-rw-r--r--test/mkmf/test_signedness.rb38
-rw-r--r--test/mkmf/test_sizeof.rb74
-rw-r--r--test/monitor/test_monitor.rb107
-rw-r--r--test/net/ftp/test_buffered_socket.rb48
-rw-r--r--test/net/ftp/test_ftp.rb2471
-rw-r--r--test/net/ftp/test_mlsx_entry.rb98
-rw-r--r--test/net/http/test_http.rb276
-rw-r--r--test/net/http/test_http_request.rb19
-rw-r--r--test/net/http/test_httpheader.rb46
-rw-r--r--test/net/http/test_httpresponse.rb284
-rw-r--r--test/net/http/test_https.rb187
-rw-r--r--test/net/http/test_https_proxy.rb2
-rw-r--r--test/net/http/utils.rb25
-rw-r--r--test/net/imap/Makefile (renamed from test/net/fixtures/Makefile)0
-rw-r--r--test/net/imap/test_imap.rb770
-rw-r--r--test/net/imap/test_imap_response_parser.rb322
-rw-r--r--test/net/pop/test_pop.rb166
-rw-r--r--test/net/protocol/test_protocol.rb130
-rw-r--r--test/net/smtp/test_response.rb100
-rw-r--r--test/net/smtp/test_smtp.rb200
-rw-r--r--test/net/smtp/test_ssl_socket.rb97
-rw-r--r--test/objspace/test_objspace.rb496
-rw-r--r--test/objspace/test_ractor.rb17
-rw-r--r--test/open-uri/test_open-uri.rb363
-rw-r--r--test/open-uri/test_ssl.rb372
-rw-r--r--test/openssl/fixtures/pkey/certificate.derbin1325 -> 0 bytes-rw-r--r--test/openssl/fixtures/pkey/dh-1.pem13
-rw-r--r--test/openssl/fixtures/pkey/empty.der0
-rw-r--r--test/openssl/fixtures/pkey/empty.pem0
-rw-r--r--test/openssl/fixtures/pkey/fullchain.pem56
-rw-r--r--test/openssl/fixtures/pkey/garbage.txt1
-rw-r--r--test/openssl/fixtures/pkey/p256_too_large.pem5
-rw-r--r--test/openssl/fixtures/pkey/p384_invalid.pem6
-rw-r--r--test/openssl/fixtures/pkey/rsa-1.pem51
-rw-r--r--test/openssl/fixtures/pkey/rsa-2.pem51
-rw-r--r--test/openssl/fixtures/pkey/rsa-3.pem51
-rw-r--r--test/openssl/test_asn1.rb73
-rw-r--r--test/openssl/test_bn.rb131
-rw-r--r--test/openssl/test_buffering.rb11
-rw-r--r--test/openssl/test_cipher.rb90
-rw-r--r--test/openssl/test_config.rb194
-rw-r--r--test/openssl/test_digest.rb64
-rw-r--r--test/openssl/test_engine.rb40
-rw-r--r--test/openssl/test_fips.rb4
-rw-r--r--test/openssl/test_hmac.rb36
-rw-r--r--test/openssl/test_kdf.rb2
-rw-r--r--test/openssl/test_ns_spki.rb6
-rw-r--r--test/openssl/test_ocsp.rb46
-rw-r--r--test/openssl/test_ossl.rb65
-rw-r--r--test/openssl/test_pair.rb86
-rw-r--r--test/openssl/test_pkcs12.rb299
-rw-r--r--test/openssl/test_pkcs7.rb44
-rw-r--r--test/openssl/test_pkey.rb177
-rw-r--r--test/openssl/test_pkey_dh.rb111
-rw-r--r--test/openssl/test_pkey_dsa.rb109
-rw-r--r--test/openssl/test_pkey_ec.rb231
-rw-r--r--test/openssl/test_pkey_rsa.rb383
-rw-r--r--test/openssl/test_random.rb2
-rw-r--r--test/openssl/test_ssl.rb870
-rw-r--r--test/openssl/test_ssl_session.rb13
-rw-r--r--test/openssl/test_ts.rb680
-rw-r--r--test/openssl/test_x509attr.rb12
-rw-r--r--test/openssl/test_x509cert.rb143
-rw-r--r--test/openssl/test_x509crl.rb45
-rw-r--r--test/openssl/test_x509ext.rb15
-rw-r--r--test/openssl/test_x509name.rb33
-rw-r--r--test/openssl/test_x509req.rb40
-rw-r--r--test/openssl/test_x509store.rb414
-rw-r--r--test/openssl/ut_eof.rb14
-rw-r--r--test/openssl/utils.rb157
-rw-r--r--test/optparse/test_acceptable.rb3
-rw-r--r--test/optparse/test_autoconf.rb11
-rw-r--r--test/optparse/test_bash_completion.rb4
-rw-r--r--test/optparse/test_cclass.rb2
-rw-r--r--test/optparse/test_did_you_mean.rb48
-rw-r--r--test/optparse/test_getopts.rb20
-rw-r--r--test/optparse/test_kwargs.rb4
-rw-r--r--test/optparse/test_load.rb141
-rw-r--r--test/optparse/test_noarg.rb6
-rw-r--r--test/optparse/test_optarg.rb2
-rw-r--r--test/optparse/test_optparse.rb45
-rw-r--r--test/optparse/test_placearg.rb8
-rw-r--r--test/optparse/test_reqarg.rb10
-rw-r--r--test/optparse/test_summary.rb36
-rw-r--r--test/optparse/test_zsh_completion.rb4
-rw-r--r--test/ostruct/test_ostruct.rb206
-rw-r--r--test/pathname/test_pathname.rb294
-rw-r--r--test/pathname/test_ractor.rb22
-rw-r--r--test/psych/helper.rb40
-rw-r--r--test/psych/test_alias_and_anchor.rb12
-rw-r--r--test/psych/test_array.rb22
-rw-r--r--test/psych/test_class.rb4
-rw-r--r--test/psych/test_coder.rb141
-rw-r--r--test/psych/test_date_time.rb24
-rw-r--r--test/psych/test_deprecated.rb4
-rw-r--r--test/psych/test_document.rb2
-rw-r--r--test/psych/test_emitter.rb10
-rw-r--r--test/psych/test_encoding.rb15
-rw-r--r--test/psych/test_exception.rb69
-rw-r--r--test/psych/test_hash.rb100
-rw-r--r--test/psych/test_marshalable.rb12
-rw-r--r--test/psych/test_merge_keys.rb34
-rw-r--r--test/psych/test_nil.rb4
-rw-r--r--test/psych/test_numeric.rb12
-rw-r--r--test/psych/test_object.rb15
-rw-r--r--test/psych/test_object_references.rb12
-rw-r--r--test/psych/test_omap.rb4
-rw-r--r--test/psych/test_parser.rb28
-rw-r--r--test/psych/test_psych.rb281
-rw-r--r--test/psych/test_ractor.rb50
-rw-r--r--test/psych/test_safe_load.rb110
-rw-r--r--test/psych/test_scalar_scanner.rb92
-rw-r--r--test/psych/test_serialize_subclasses.rb4
-rw-r--r--test/psych/test_set.rb6
-rw-r--r--test/psych/test_stream.rb16
-rw-r--r--test/psych/test_string.rb27
-rw-r--r--test/psych/test_struct.rb6
-rw-r--r--test/psych/test_tainted.rb131
-rw-r--r--test/psych/test_yaml.rb69
-rw-r--r--test/psych/test_yaml_special_cases.rb130
-rw-r--r--test/psych/test_yamlstore.rb47
-rw-r--r--test/psych/visitors/test_to_ruby.rb5
-rw-r--r--test/psych/visitors/test_yaml_tree.rb15
-rw-r--r--test/racc/assets/cadenza.y170
-rw-r--r--test/racc/assets/cast.y926
-rw-r--r--test/racc/assets/chk.y126
-rw-r--r--test/racc/assets/conf.y16
-rw-r--r--test/racc/assets/csspool.y729
-rw-r--r--test/racc/assets/digraph.y29
-rw-r--r--test/racc/assets/echk.y118
-rw-r--r--test/racc/assets/edtf.y583
-rw-r--r--test/racc/assets/err.y60
-rw-r--r--test/racc/assets/error_recovery.y35
-rw-r--r--test/racc/assets/expect.y7
-rw-r--r--test/racc/assets/firstline.y4
-rw-r--r--test/racc/assets/huia.y318
-rw-r--r--test/racc/assets/ichk.y102
-rw-r--r--test/racc/assets/ifelse.y14
-rw-r--r--test/racc/assets/intp.y546
-rw-r--r--test/racc/assets/journey.y47
-rw-r--r--test/racc/assets/liquor.y313
-rw-r--r--test/racc/assets/machete.y423
-rw-r--r--test/racc/assets/macruby.y2197
-rw-r--r--test/racc/assets/mailp.y437
-rw-r--r--test/racc/assets/mediacloth.y599
-rw-r--r--test/racc/assets/mof.y649
-rw-r--r--test/racc/assets/namae.y302
-rw-r--r--test/racc/assets/nasl.y626
-rw-r--r--test/racc/assets/newsyn.y25
-rw-r--r--test/racc/assets/noend.y4
-rw-r--r--test/racc/assets/nokogiri-css.y255
-rw-r--r--test/racc/assets/nonass.y41
-rw-r--r--test/racc/assets/normal.y27
-rw-r--r--test/racc/assets/norule.y4
-rw-r--r--test/racc/assets/nullbug1.y25
-rw-r--r--test/racc/assets/nullbug2.y15
-rw-r--r--test/racc/assets/opal.y1807
-rw-r--r--test/racc/assets/opt.y123
-rw-r--r--test/racc/assets/percent.y35
-rw-r--r--test/racc/assets/php_serialization.y98
-rw-r--r--test/racc/assets/recv.y97
-rw-r--r--test/racc/assets/riml.y665
-rw-r--r--test/racc/assets/rrconf.y14
-rw-r--r--test/racc/assets/ruby18.y1943
-rw-r--r--test/racc/assets/ruby19.y2174
-rw-r--r--test/racc/assets/ruby20.y2350
-rw-r--r--test/racc/assets/ruby21.y2359
-rw-r--r--test/racc/assets/ruby22.y2381
-rw-r--r--test/racc/assets/scan.y72
-rw-r--r--test/racc/assets/syntax.y50
-rw-r--r--test/racc/assets/tp_plus.y622
-rw-r--r--test/racc/assets/twowaysql.y278
-rw-r--r--test/racc/assets/unterm.y5
-rw-r--r--test/racc/assets/useless.y12
-rw-r--r--test/racc/assets/yyerr.y46
-rw-r--r--test/racc/bench.y36
-rw-r--r--test/racc/case.rb111
-rw-r--r--test/racc/infini.y8
-rw-r--r--test/racc/regress/README.txt7
-rw-r--r--test/racc/regress/cadenza798
-rw-r--r--test/racc/regress/cast3947
-rw-r--r--test/racc/regress/csspool2316
-rw-r--r--test/racc/regress/edtf1796
-rw-r--r--test/racc/regress/huia1683
-rw-r--r--test/racc/regress/journey224
-rw-r--r--test/racc/regress/liquor887
-rw-r--r--test/racc/regress/machete835
-rw-r--r--test/racc/regress/mediacloth1465
-rw-r--r--test/racc/regress/mof1370
-rw-r--r--test/racc/regress/namae636
-rw-r--r--test/racc/regress/nasl2550
-rw-r--r--test/racc/regress/nokogiri-css838
-rw-r--r--test/racc/regress/opal10109
-rw-r--r--test/racc/regress/php_serialization338
-rw-r--r--test/racc/regress/riml4039
-rw-r--r--test/racc/regress/ruby189947
-rw-r--r--test/racc/regress/ruby2211182
-rw-r--r--test/racc/regress/tp_plus1935
-rw-r--r--test/racc/regress/twowaysql558
-rw-r--r--test/racc/scandata/brace7
-rw-r--r--test/racc/scandata/gvar1
-rw-r--r--test/racc/scandata/normal4
-rw-r--r--test/racc/scandata/percent18
-rw-r--r--test/racc/scandata/slash10
-rw-r--r--test/racc/src.intp34
-rw-r--r--test/racc/start.y20
-rw-r--r--test/racc/test_chk_y.rb52
-rw-r--r--test/racc/test_grammar_file_parser.rb15
-rw-r--r--test/racc/test_racc_command.rb339
-rw-r--r--test/racc/test_scan_y.rb52
-rw-r--r--test/racc/testscanner.rb51
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Markdown Documentation - Basics.text4
-rw-r--r--test/rdoc/helper.rb5
-rw-r--r--test/rdoc/support/formatter_test_case.rb764
-rw-r--r--test/rdoc/support/test_case.rb217
-rw-r--r--test/rdoc/test_rdoc_alias.rb3
-rw-r--r--test/rdoc/test_rdoc_any_method.rb119
-rw-r--r--test/rdoc/test_rdoc_attr.rb5
-rw-r--r--test/rdoc/test_rdoc_class_module.rb67
-rw-r--r--test/rdoc/test_rdoc_code_object.rb4
-rw-r--r--test/rdoc/test_rdoc_comment.rb16
-rw-r--r--test/rdoc/test_rdoc_constant.rb4
-rw-r--r--test/rdoc/test_rdoc_context.rb40
-rw-r--r--test/rdoc/test_rdoc_context_section.rb12
-rw-r--r--test/rdoc/test_rdoc_cross_reference.rb86
-rw-r--r--test/rdoc/test_rdoc_encoding.rb102
-rw-r--r--test/rdoc/test_rdoc_extend.rb11
-rw-r--r--test/rdoc/test_rdoc_generator_darkfish.rb137
-rw-r--r--test/rdoc/test_rdoc_generator_json_index.rb33
-rw-r--r--test/rdoc/test_rdoc_generator_markup.rb2
-rw-r--r--test/rdoc/test_rdoc_generator_pot.rb2
-rw-r--r--test/rdoc/test_rdoc_generator_pot_po.rb2
-rw-r--r--test/rdoc/test_rdoc_generator_pot_po_entry.rb2
-rw-r--r--test/rdoc/test_rdoc_generator_ri.rb2
-rw-r--r--test/rdoc/test_rdoc_i18n_locale.rb10
-rw-r--r--test/rdoc/test_rdoc_i18n_text.rb2
-rw-r--r--test/rdoc/test_rdoc_include.rb14
-rw-r--r--test/rdoc/test_rdoc_markdown.rb92
-rw-r--r--test/rdoc/test_rdoc_markdown_test.rb10
-rw-r--r--test/rdoc/test_rdoc_markup.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_attribute_manager.rb57
-rw-r--r--test/rdoc/test_rdoc_markup_attributes.rb10
-rw-r--r--test/rdoc/test_rdoc_markup_document.rb4
-rw-r--r--test/rdoc/test_rdoc_markup_formatter.rb57
-rw-r--r--test/rdoc/test_rdoc_markup_hard_break.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_heading.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_include.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_indented_paragraph.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_paragraph.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_parser.rb62
-rw-r--r--test/rdoc/test_rdoc_markup_pre_process.rb4
-rw-r--r--test/rdoc/test_rdoc_markup_raw.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_to_ansi.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_to_bs.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_to_html.rb169
-rw-r--r--test/rdoc/test_rdoc_markup_to_html_crossref.rb128
-rw-r--r--test/rdoc/test_rdoc_markup_to_html_snippet.rb14
-rw-r--r--test/rdoc/test_rdoc_markup_to_joined_paragraph.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_to_label.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_to_markdown.rb6
-rw-r--r--test/rdoc/test_rdoc_markup_to_rdoc.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_to_table_of_contents.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_to_tt_only.rb2
-rw-r--r--test/rdoc/test_rdoc_markup_verbatim.rb2
-rw-r--r--test/rdoc/test_rdoc_method_attr.rb3
-rw-r--r--test/rdoc/test_rdoc_normal_class.rb7
-rw-r--r--test/rdoc/test_rdoc_normal_module.rb3
-rw-r--r--test/rdoc/test_rdoc_options.rb262
-rw-r--r--test/rdoc/test_rdoc_parser.rb24
-rw-r--r--test/rdoc/test_rdoc_parser_c.rb329
-rw-r--r--test/rdoc/test_rdoc_parser_changelog.rb171
-rw-r--r--test/rdoc/test_rdoc_parser_markdown.rb2
-rw-r--r--test/rdoc/test_rdoc_parser_rd.rb2
-rw-r--r--test/rdoc/test_rdoc_parser_ruby.rb679
-rw-r--r--test/rdoc/test_rdoc_parser_simple.rb2
-rw-r--r--test/rdoc/test_rdoc_rd.rb2
-rw-r--r--test/rdoc/test_rdoc_rd_block_parser.rb23
-rw-r--r--test/rdoc/test_rdoc_rd_inline.rb2
-rw-r--r--test/rdoc/test_rdoc_rd_inline_parser.rb2
-rw-r--r--test/rdoc/test_rdoc_rdoc.rb231
-rw-r--r--test/rdoc/test_rdoc_require.rb3
-rw-r--r--test/rdoc/test_rdoc_ri_driver.rb266
-rw-r--r--test/rdoc/test_rdoc_ri_paths.rb16
-rw-r--r--test/rdoc/test_rdoc_rubygems_hook.rb95
-rw-r--r--test/rdoc/test_rdoc_servlet.rb45
-rw-r--r--test/rdoc/test_rdoc_single_class.rb2
-rw-r--r--test/rdoc/test_rdoc_stats.rb2
-rw-r--r--test/rdoc/test_rdoc_store.rb63
-rw-r--r--test/rdoc/test_rdoc_task.rb26
-rw-r--r--test/rdoc/test_rdoc_text.rb53
-rw-r--r--test/rdoc/test_rdoc_token_stream.rb17
-rw-r--r--test/rdoc/test_rdoc_tom_doc.rb62
-rw-r--r--test/rdoc/test_rdoc_top_level.rb12
-rw-r--r--test/rdoc/xref_data.rb38
-rw-r--r--test/rdoc/xref_test_case.rb32
-rw-r--r--test/readline/test_readline.rb620
-rw-r--r--test/readline/test_readline_history.rb293
-rw-r--r--test/reline/helper.rb169
-rw-r--r--test/reline/test_ansi_with_terminfo.rb96
-rw-r--r--test/reline/test_ansi_without_terminfo.rb75
-rw-r--r--test/reline/test_config.rb412
-rw-r--r--test/reline/test_history.rb308
-rw-r--r--test/reline/test_key_actor_emacs.rb2379
-rw-r--r--test/reline/test_key_actor_vi.rb1465
-rw-r--r--test/reline/test_key_stroke.rb79
-rw-r--r--test/reline/test_kill_ring.rb268
-rw-r--r--test/reline/test_line_editor.rb13
-rw-r--r--test/reline/test_macro.rb41
-rw-r--r--test/reline/test_reline.rb389
-rw-r--r--test/reline/test_reline_key.rb53
-rw-r--r--test/reline/test_string_processing.rb81
-rw-r--r--test/reline/test_terminfo.rb61
-rw-r--r--test/reline/test_unicode.rb65
-rw-r--r--test/reline/test_within_pipe.rb78
-rw-r--r--test/reline/windows/test_key_event_record.rb41
-rwxr-xr-xtest/reline/yamatanooroti/multiline_repl236
-rw-r--r--test/reline/yamatanooroti/termination_checker.rb26
-rw-r--r--test/reline/yamatanooroti/test_rendering.rb1543
-rw-r--r--test/resolv/test_addr.rb26
-rw-r--r--test/resolv/test_dns.rb210
-rw-r--r--test/resolv/test_mdns.rb29
-rw-r--r--test/resolv/test_resource.rb8
-rw-r--r--test/rexml/data/LostineRiver.kml.gzbin0 -> 50154 bytes-rw-r--r--test/rexml/data/ProductionSupport.xml29
-rw-r--r--test/rexml/data/axis.xml25
-rw-r--r--test/rexml/data/bad.xml5
-rw-r--r--test/rexml/data/basic.xml11
-rw-r--r--test/rexml/data/basicupdate.xml47
-rw-r--r--test/rexml/data/broken.rss20
-rw-r--r--test/rexml/data/contents.xml70
-rw-r--r--test/rexml/data/dash.xml12
-rw-r--r--test/rexml/data/defaultNamespace.xml6
-rw-r--r--test/rexml/data/doctype_test.xml34
-rw-r--r--test/rexml/data/documentation.xml542
-rw-r--r--test/rexml/data/euc.xml296
-rw-r--r--test/rexml/data/evaluate.xml28
-rw-r--r--test/rexml/data/fibo.xml29
-rw-r--r--test/rexml/data/foo.xml10
-rw-r--r--test/rexml/data/google.2.xml156
-rw-r--r--test/rexml/data/id.xml21
-rw-r--r--test/rexml/data/iso8859-1.xml4
-rw-r--r--test/rexml/data/jaxen24.xml2
-rw-r--r--test/rexml/data/jaxen3.xml15
-rw-r--r--test/rexml/data/lang.xml11
-rw-r--r--test/rexml/data/lang0.xml18
-rw-r--r--test/rexml/data/message.xml27
-rw-r--r--test/rexml/data/moreover.xml244
-rw-r--r--test/rexml/data/much_ado.xml6850
-rw-r--r--test/rexml/data/namespaces.xml18
-rw-r--r--test/rexml/data/nitf.xml67
-rw-r--r--test/rexml/data/numbers.xml18
-rw-r--r--test/rexml/data/ofbiz-issues-full-177.xml13971
-rw-r--r--test/rexml/data/pi.xml13
-rw-r--r--test/rexml/data/pi2.xml6
-rw-r--r--test/rexml/data/project.xml1
-rw-r--r--test/rexml/data/simple.xml2
-rw-r--r--test/rexml/data/stream_accents.xml4
-rw-r--r--test/rexml/data/t63-1.xmlbin0 -> 161690 bytes-rw-r--r--test/rexml/data/t63-2.svg2828
-rw-r--r--test/rexml/data/t75.xml31
-rw-r--r--test/rexml/data/test/tests.xml683
-rw-r--r--test/rexml/data/test/tests.xsl369
-rw-r--r--test/rexml/data/testNamespaces.xml22
-rw-r--r--test/rexml/data/testsrc.xml64
-rw-r--r--test/rexml/data/text.xml10
-rw-r--r--test/rexml/data/ticket_61.xml4
-rw-r--r--test/rexml/data/ticket_68.xml590
-rw-r--r--test/rexml/data/tutorial.xml678
-rw-r--r--test/rexml/data/underscore.xml6
-rw-r--r--test/rexml/data/utf16.xmlbin0 -> 207464 bytes-rw-r--r--test/rexml/data/web.xml42
-rw-r--r--test/rexml/data/web2.xml7
-rw-r--r--test/rexml/data/working.rss202
-rw-r--r--test/rexml/data/xmlfile-bug.xml15
-rw-r--r--test/rexml/data/xp.tst27
-rw-r--r--test/rexml/data/yahoo.xml80
-rw-r--r--test/rexml/listener.rb51
-rw-r--r--test/rexml/parse/test_document_type_declaration.rb50
-rw-r--r--test/rexml/parse/test_notation_declaration.rb100
-rw-r--r--test/rexml/parser/test_sax2.rb203
-rw-r--r--test/rexml/parser/test_stream.rb32
-rw-r--r--test/rexml/parser/test_tree.rb43
-rw-r--r--test/rexml/parser/test_ultra_light.rb70
-rw-r--r--test/rexml/rexml_test_utils.rb7
-rw-r--r--test/rexml/test_attributes.rb223
-rw-r--r--test/rexml/test_attributes_mixin.rb32
-rw-r--r--test/rexml/test_changing_encoding.rb45
-rw-r--r--test/rexml/test_comment.rb26
-rw-r--r--test/rexml/test_contrib.rb585
-rw-r--r--test/rexml/test_core.rb1468
-rw-r--r--test/rexml/test_doctype.rb107
-rw-r--r--test/rexml/test_document.rb416
-rw-r--r--test/rexml/test_element.rb18
-rw-r--r--test/rexml/test_elements.rb119
-rw-r--r--test/rexml/test_encoding.rb108
-rw-r--r--test/rexml/test_entity.rb206
-rw-r--r--test/rexml/test_functions.rb238
-rw-r--r--test/rexml/test_functions_number.rb35
-rw-r--r--test/rexml/test_jaxen.rb130
-rw-r--r--test/rexml/test_light.rb107
-rw-r--r--test/rexml/test_lightparser.rb16
-rw-r--r--test/rexml/test_listener.rb131
-rw-r--r--test/rexml/test_martin_fowler.rb40
-rw-r--r--test/rexml/test_namespace.rb41
-rw-r--r--test/rexml/test_order.rb110
-rw-r--r--test/rexml/test_preceding_sibling.rb41
-rw-r--r--test/rexml/test_pullparser.rb103
-rw-r--r--test/rexml/test_rexml_issuezilla.rb19
-rw-r--r--test/rexml/test_sax.rb287
-rw-r--r--test/rexml/test_stream.rb130
-rw-r--r--test/rexml/test_text.rb22
-rw-r--r--test/rexml/test_ticket_80.rb59
-rw-r--r--test/rexml/test_validation_rng.rb793
-rw-r--r--test/rexml/test_xml_declaration.rb36
-rw-r--r--test/rexml/xpath/test_attribute.rb30
-rw-r--r--test/rexml/xpath/test_axis_preceding_sibling.rb40
-rw-r--r--test/rexml/xpath/test_base.rb1090
-rw-r--r--test/rexml/xpath/test_node.rb43
-rw-r--r--test/rexml/xpath/test_predicate.rb83
-rw-r--r--test/rexml/xpath/test_text.rb77
-rw-r--r--test/rinda/test_rinda.rb152
-rw-r--r--test/ripper/assert_parse_files.rb45
-rw-r--r--test/ripper/dummyparser.rb6
-rw-r--r--test/ripper/test_files.rb50
-rw-r--r--test/ripper/test_files_ext.rb8
-rw-r--r--test/ripper/test_files_lib.rb14
-rw-r--r--test/ripper/test_files_sample.rb8
-rw-r--r--test/ripper/test_files_test.rb8
-rw-r--r--test/ripper/test_files_test_1.rb9
-rw-r--r--test/ripper/test_files_test_2.rb9
-rw-r--r--test/ripper/test_lexer.rb176
-rw-r--r--test/ripper/test_parser_events.rb231
-rw-r--r--test/ripper/test_ripper.rb19
-rw-r--r--test/ripper/test_scanner_events.rb124
-rw-r--r--test/ripper/test_sexp.rb418
-rw-r--r--test/rss/dot.pngbin0 -> 111 bytes-rw-r--r--test/rss/rss-assertions.rb2091
-rw-r--r--test/rss/rss-testcase.rb479
-rw-r--r--test/rss/test_1.0.rb308
-rw-r--r--test/rss/test_2.0.rb412
-rw-r--r--test/rss/test_accessor.rb104
-rw-r--r--test/rss/test_atom.rb684
-rw-r--r--test/rss/test_content.rb105
-rw-r--r--test/rss/test_dublincore.rb270
-rw-r--r--test/rss/test_image.rb215
-rw-r--r--test/rss/test_inherit.rb41
-rw-r--r--test/rss/test_itunes.rb352
-rw-r--r--test/rss/test_maker_0.9.rb477
-rw-r--r--test/rss/test_maker_1.0.rb519
-rw-r--r--test/rss/test_maker_2.0.rb758
-rw-r--r--test/rss/test_maker_atom_entry.rb394
-rw-r--r--test/rss/test_maker_atom_feed.rb455
-rw-r--r--test/rss/test_maker_content.rb48
-rw-r--r--test/rss/test_maker_dc.rb150
-rw-r--r--test/rss/test_maker_image.rb63
-rw-r--r--test/rss/test_maker_itunes.rb480
-rw-r--r--test/rss/test_maker_slash.rb38
-rw-r--r--test/rss/test_maker_sy.rb45
-rw-r--r--test/rss/test_maker_taxo.rb82
-rw-r--r--test/rss/test_maker_trackback.rb42
-rw-r--r--test/rss/test_maker_xml-stylesheet.rb84
-rw-r--r--test/rss/test_parser.rb65
-rw-r--r--test/rss/test_parser_1.0.rb529
-rw-r--r--test/rss/test_parser_2.0.rb123
-rw-r--r--test/rss/test_parser_atom_entry.rb164
-rw-r--r--test/rss/test_parser_atom_feed.rb277
-rw-r--r--test/rss/test_setup_maker_0.9.rb247
-rw-r--r--test/rss/test_setup_maker_1.0.rb551
-rw-r--r--test/rss/test_setup_maker_2.0.rb309
-rw-r--r--test/rss/test_setup_maker_atom_entry.rb410
-rw-r--r--test/rss/test_setup_maker_atom_feed.rb446
-rw-r--r--test/rss/test_setup_maker_itunes.rb144
-rw-r--r--test/rss/test_setup_maker_slash.rb39
-rw-r--r--test/rss/test_slash.rb65
-rw-r--r--test/rss/test_syndication.rb126
-rw-r--r--test/rss/test_taxonomy.rb173
-rw-r--r--test/rss/test_to_s.rb701
-rw-r--r--test/rss/test_trackback.rb136
-rw-r--r--test/rss/test_version.rb10
-rw-r--r--test/rss/test_xml-stylesheet.rb109
-rw-r--r--test/ruby/enc/test_case_comprehensive.rb10
-rw-r--r--test/ruby/enc/test_case_mapping.rb33
-rw-r--r--test/ruby/enc/test_cesu8.rb113
-rw-r--r--test/ruby/enc/test_emoji_breaks.rb155
-rw-r--r--test/ruby/enc/test_grapheme_breaks.rb116
-rw-r--r--test/ruby/enc/test_regex_casefold.rb6
-rw-r--r--test/ruby/marshaltestlib.rb4
-rw-r--r--test/ruby/rjit/test_assembler.rb366
-rw-r--r--test/ruby/sentence.rb2
-rw-r--r--test/ruby/test_alias.rb67
-rw-r--r--test/ruby/test_argf.rb158
-rw-r--r--test/ruby/test_arithmetic_sequence.rb491
-rw-r--r--test/ruby/test_arity.rb43
-rw-r--r--test/ruby/test_array.rb901
-rw-r--r--test/ruby/test_assignment.rb206
-rw-r--r--test/ruby/test_ast.rb1098
-rw-r--r--test/ruby/test_autoload.rb291
-rw-r--r--test/ruby/test_backtrace.rb131
-rw-r--r--test/ruby/test_basicinstructions.rb6
-rw-r--r--test/ruby/test_beginendblock.rb5
-rw-r--r--test/ruby/test_bignum.rb115
-rw-r--r--test/ruby/test_call.rb994
-rw-r--r--test/ruby/test_case.rb12
-rw-r--r--test/ruby/test_class.rb242
-rw-r--r--test/ruby/test_clone.rb81
-rw-r--r--test/ruby/test_comparable.rb34
-rw-r--r--test/ruby/test_complex.rb258
-rw-r--r--test/ruby/test_complex2.rb2
-rw-r--r--test/ruby/test_complexrational.rb12
-rw-r--r--test/ruby/test_const.rb39
-rw-r--r--test/ruby/test_continuation.rb17
-rw-r--r--test/ruby/test_data.rb266
-rw-r--r--test/ruby/test_default_gems.rb27
-rw-r--r--test/ruby/test_defined.rb175
-rw-r--r--test/ruby/test_dir.rb401
-rw-r--r--test/ruby/test_dir_m17n.rb75
-rw-r--r--test/ruby/test_dup.rb110
-rw-r--r--test/ruby/test_econv.rb27
-rw-r--r--test/ruby/test_encoding.rb25
-rw-r--r--test/ruby/test_enum.rb331
-rw-r--r--test/ruby/test_enumerator.rb354
-rw-r--r--test/ruby/test_env.rb1022
-rw-r--r--test/ruby/test_eval.rb129
-rw-r--r--test/ruby/test_exception.rb667
-rw-r--r--test/ruby/test_fiber.rb243
-rw-r--r--test/ruby/test_file.rb149
-rw-r--r--test/ruby/test_file_exhaustive.rb302
-rw-r--r--test/ruby/test_fixnum.rb1
-rw-r--r--test/ruby/test_flip.rb3
-rw-r--r--test/ruby/test_float.rb107
-rw-r--r--test/ruby/test_fnmatch.rb31
-rw-r--r--test/ruby/test_frozen.rb30
-rw-r--r--test/ruby/test_frozen_error.rb57
-rw-r--r--test/ruby/test_gc.rb274
-rw-r--r--test/ruby/test_gc_compact.rb447
-rw-r--r--test/ruby/test_hash.rb754
-rw-r--r--test/ruby/test_ifunless.rb2
-rw-r--r--test/ruby/test_inlinecache.rb110
-rw-r--r--test/ruby/test_insns_leaf.rb46
-rw-r--r--test/ruby/test_integer.rb223
-rw-r--r--test/ruby/test_integer_comb.rb23
-rw-r--r--test/ruby/test_io.rb714
-rw-r--r--test/ruby/test_io_buffer.rb486
-rw-r--r--test/ruby/test_io_m17n.rb173
-rw-r--r--test/ruby/test_io_timeout.rb58
-rw-r--r--test/ruby/test_iseq.rb436
-rw-r--r--test/ruby/test_iterator.rb30
-rw-r--r--test/ruby/test_key_error.rb42
-rw-r--r--test/ruby/test_keyword.rb3789
-rw-r--r--test/ruby/test_lambda.rb171
-rw-r--r--test/ruby/test_lazy_enumerator.rb132
-rw-r--r--test/ruby/test_literal.rb114
-rw-r--r--test/ruby/test_m17n.rb114
-rw-r--r--test/ruby/test_m17n_comb.rb42
-rw-r--r--test/ruby/test_marshal.rb304
-rw-r--r--test/ruby/test_math.rb55
-rw-r--r--test/ruby/test_memory_view.rb341
-rw-r--r--test/ruby/test_method.rb623
-rw-r--r--test/ruby/test_method_cache.rb76
-rw-r--r--test/ruby/test_module.rb1222
-rw-r--r--test/ruby/test_name_error.rb156
-rw-r--r--test/ruby/test_nomethod_error.rb109
-rw-r--r--test/ruby/test_not.rb2
-rw-r--r--test/ruby/test_notimp.rb85
-rw-r--r--test/ruby/test_numeric.rb128
-rw-r--r--test/ruby/test_object.rb189
-rw-r--r--test/ruby/test_objectspace.rb78
-rw-r--r--test/ruby/test_optimization.rb203
-rw-r--r--test/ruby/test_pack.rb119
-rw-r--r--test/ruby/test_parse.rb795
-rw-r--r--test/ruby/test_path.rb8
-rw-r--r--test/ruby/test_pattern_matching.rb1721
-rw-r--r--test/ruby/test_pipe.rb19
-rw-r--r--test/ruby/test_primitive.rb78
-rw-r--r--test/ruby/test_proc.rb560
-rw-r--r--test/ruby/test_process.rb477
-rw-r--r--test/ruby/test_rand.rb364
-rw-r--r--test/ruby/test_random_formatter.rb123
-rw-r--r--test/ruby/test_range.rb426
-rw-r--r--test/ruby/test_rational.rb104
-rw-r--r--test/ruby/test_refinement.rb766
-rw-r--r--test/ruby/test_regexp.rb669
-rw-r--r--test/ruby/test_require.rb282
-rw-r--r--test/ruby/test_require_lib.rb27
-rw-r--r--test/ruby/test_rubyoptions.rb348
-rw-r--r--test/ruby/test_rubyvm.rb57
-rw-r--r--test/ruby/test_settracefunc.rb1105
-rw-r--r--test/ruby/test_shapes.rb491
-rw-r--r--test/ruby/test_signal.rb67
-rw-r--r--test/ruby/test_sprintf.rb33
-rw-r--r--test/ruby/test_stack.rb82
-rw-r--r--test/ruby/test_string.rb1248
-rw-r--r--test/ruby/test_struct.rb139
-rw-r--r--test/ruby/test_super.rb141
-rw-r--r--test/ruby/test_symbol.rb119
-rw-r--r--test/ruby/test_syntax.rb924
-rw-r--r--test/ruby/test_system.rb54
-rw-r--r--test/ruby/test_thread.rb332
-rw-r--r--test/ruby/test_thread_cv.rb246
-rw-r--r--test/ruby/test_thread_queue.rb708
-rw-r--r--test/ruby/test_time.rb314
-rw-r--r--test/ruby/test_time_tz.rb374
-rw-r--r--test/ruby/test_trace.rb11
-rw-r--r--test/ruby/test_transcode.rb92
-rw-r--r--test/ruby/test_undef.rb18
-rw-r--r--test/ruby/test_variable.rb254
-rw-r--r--test/ruby/test_vm_dump.rb4
-rw-r--r--test/ruby/test_weakkeymap.rb125
-rw-r--r--test/ruby/test_weakmap.rb127
-rw-r--r--test/ruby/test_yjit.rb1420
-rw-r--r--test/ruby/test_yjit_exit_locations.rb110
-rw-r--r--test/rubygems/alternate_cert.pem28
-rw-r--r--test/rubygems/alternate_cert_32.pem30
-rw-r--r--test/rubygems/alternate_key.pem50
-rw-r--r--test/rubygems/bad_rake.rb1
-rw-r--r--test/rubygems/bogussources.rb9
-rw-r--r--test/rubygems/bundler_test_gem.rb424
-rw-r--r--test/rubygems/child_cert.pem31
-rw-r--r--test/rubygems/child_cert_32.pem31
-rw-r--r--test/rubygems/child_key.pem50
-rw-r--r--test/rubygems/data/excon-0.7.7.gemspec.rzbin388 -> 0 bytes-rw-r--r--test/rubygems/data/null-required-ruby-version.gemspec.rzbin403 -> 0 bytes-rw-r--r--test/rubygems/data/null-required-rubygems-version.gemspec.rzbin421 -> 0 bytes-rw-r--r--test/rubygems/data/null-type.gemspec.rzbin0 -> 554 bytes-rw-r--r--test/rubygems/data/pry-0.4.7.gemspec.rzbin433 -> 0 bytes-rw-r--r--test/rubygems/encrypted_private_key.pem52
-rw-r--r--test/rubygems/expired_cert.pem30
-rw-r--r--test/rubygems/fake_certlib/openssl.rb1
-rw-r--r--test/rubygems/fix_openssl_warnings.rb13
-rw-r--r--test/rubygems/future_cert.pem30
-rw-r--r--test/rubygems/future_cert_32.pem30
-rw-r--r--test/rubygems/good_rake.rb1
-rw-r--r--test/rubygems/grandchild_cert.pem31
-rw-r--r--test/rubygems/grandchild_cert_32.pem31
-rw-r--r--test/rubygems/grandchild_key.pem50
-rw-r--r--test/rubygems/helper.rb1566
-rw-r--r--test/rubygems/installer_test_case.rb248
-rw-r--r--test/rubygems/invalid_issuer_cert.pem32
-rw-r--r--test/rubygems/invalid_issuer_cert_32.pem32
-rw-r--r--test/rubygems/invalid_key.pem50
-rw-r--r--test/rubygems/invalid_signer_cert.pem30
-rw-r--r--test/rubygems/invalid_signer_cert_32.pem30
-rw-r--r--test/rubygems/invalidchild_cert.pem31
-rw-r--r--test/rubygems/invalidchild_cert_32.pem31
-rw-r--r--test/rubygems/invalidchild_key.pem50
-rw-r--r--test/rubygems/mock_gem_ui.rb86
-rw-r--r--test/rubygems/package/tar_test_case.rb175
-rw-r--r--test/rubygems/packages/Bluebie-legs-0.6.2.gembin14336 -> 0 bytes-rw-r--r--test/rubygems/packages/ascii_binder-0.1.10.1.gembin244736 -> 0 bytes-rw-r--r--test/rubygems/packages/ill-formatted-platform-1.0.0.10.gembin10240 -> 0 bytes-rw-r--r--test/rubygems/plugin/exception/rubygems_plugin.rb3
-rw-r--r--test/rubygems/plugin/load/rubygems_plugin.rb1
-rw-r--r--test/rubygems/plugin/scripterror/rubygems_plugin.rb4
-rw-r--r--test/rubygems/plugin/standarderror/rubygems_plugin.rb3
-rw-r--r--test/rubygems/private_ec_key.pem9
-rw-r--r--test/rubygems/private_key.pem50
-rw-r--r--test/rubygems/public_cert.pem32
-rw-r--r--test/rubygems/public_cert_32.pem30
-rw-r--r--test/rubygems/public_key.pem14
-rw-r--r--test/rubygems/rubygems/commands/crash_command.rb3
-rw-r--r--test/rubygems/rubygems_plugin.rb8
-rw-r--r--test/rubygems/simple_gem.rb1
-rw-r--r--test/rubygems/specifications/bar-0.0.2.gemspec2
-rw-r--r--test/rubygems/specifications/rubyforge-0.0.1.gemspec14
-rw-r--r--test/rubygems/test_bundled_ca.rb92
-rw-r--r--test/rubygems/test_config.rb20
-rw-r--r--test/rubygems/test_deprecate.rb109
-rw-r--r--test/rubygems/test_exit.rb17
-rw-r--r--test/rubygems/test_gem.rb1776
-rw-r--r--test/rubygems/test_gem_available_set.rb50
-rw-r--r--test/rubygems/test_gem_bundler_version_finder.rb85
-rw-r--r--test/rubygems/test_gem_command.rb228
-rw-r--r--test/rubygems/test_gem_command_manager.rb276
-rw-r--r--test/rubygems/test_gem_commands_build_command.rb657
-rw-r--r--test/rubygems/test_gem_commands_cert_command.rb421
-rw-r--r--test/rubygems/test_gem_commands_check_command.rb23
-rw-r--r--test/rubygems/test_gem_commands_cleanup_command.rb168
-rw-r--r--test/rubygems/test_gem_commands_contents_command.rb119
-rw-r--r--test/rubygems/test_gem_commands_dependency_command.rb124
-rw-r--r--test/rubygems/test_gem_commands_environment_command.rb115
-rw-r--r--test/rubygems/test_gem_commands_exec_command.rb857
-rw-r--r--test/rubygems/test_gem_commands_fetch_command.rb197
-rw-r--r--test/rubygems/test_gem_commands_generate_index_command.rb52
-rw-r--r--test/rubygems/test_gem_commands_help_command.rb53
-rw-r--r--test/rubygems/test_gem_commands_info_command.rb70
-rw-r--r--test/rubygems/test_gem_commands_install_command.rb856
-rw-r--r--test/rubygems/test_gem_commands_list_command.rb13
-rw-r--r--test/rubygems/test_gem_commands_lock_command.rb26
-rw-r--r--test/rubygems/test_gem_commands_mirror.rb8
-rw-r--r--test/rubygems/test_gem_commands_open_command.rb59
-rw-r--r--test/rubygems/test_gem_commands_outdated_command.rb33
-rw-r--r--test/rubygems/test_gem_commands_owner_command.rb392
-rw-r--r--test/rubygems/test_gem_commands_pristine_command.rb419
-rw-r--r--test/rubygems/test_gem_commands_push_command.rb361
-rw-r--r--test/rubygems/test_gem_commands_query_command.rb398
-rw-r--r--test/rubygems/test_gem_commands_search_command.rb8
-rw-r--r--test/rubygems/test_gem_commands_server_command.rb54
-rw-r--r--test/rubygems/test_gem_commands_setup_command.rb494
-rw-r--r--test/rubygems/test_gem_commands_signin_command.rb225
-rw-r--r--test/rubygems/test_gem_commands_signout_command.rb19
-rw-r--r--test/rubygems/test_gem_commands_sources_command.rb301
-rw-r--r--test/rubygems/test_gem_commands_specification_command.rb138
-rw-r--r--test/rubygems/test_gem_commands_stale_command.rb18
-rw-r--r--test/rubygems/test_gem_commands_uninstall_command.rb409
-rw-r--r--test/rubygems/test_gem_commands_unpack_command.rb85
-rw-r--r--test/rubygems/test_gem_commands_update_command.rb530
-rw-r--r--test/rubygems/test_gem_commands_which_command.rb34
-rw-r--r--test/rubygems/test_gem_commands_yank_command.rb219
-rw-r--r--test/rubygems/test_gem_config_file.rb264
-rw-r--r--test/rubygems/test_gem_dependency.rb187
-rw-r--r--test/rubygems/test_gem_dependency_installer.rb708
-rw-r--r--test/rubygems/test_gem_dependency_list.rb131
-rw-r--r--test/rubygems/test_gem_dependency_resolution_error.rb22
-rw-r--r--test/rubygems/test_gem_doctor.rb124
-rw-r--r--test/rubygems/test_gem_ext_builder.rb248
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder.rb167
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore1
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec10
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock233
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml10
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs27
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb3
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore1
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock248
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml10
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec10
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs51
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb34
-rw-r--r--test/rubygems/test_gem_ext_cargo_builder_unit.rb60
-rw-r--r--test/rubygems/test_gem_ext_cmake_builder.rb71
-rw-r--r--test/rubygems/test_gem_ext_configure_builder.rb55
-rw-r--r--test/rubygems/test_gem_ext_ext_conf_builder.rb158
-rw-r--r--test/rubygems/test_gem_ext_rake_builder.rb91
-rw-r--r--test/rubygems/test_gem_gem_runner.rb100
-rw-r--r--test/rubygems/test_gem_gemcutter_utilities.rb277
-rw-r--r--test/rubygems/test_gem_impossible_dependencies_error.rb12
-rw-r--r--test/rubygems/test_gem_indexer.rb232
-rw-r--r--test/rubygems/test_gem_install_update_options.rb120
-rw-r--r--test/rubygems/test_gem_installer.rb2023
-rw-r--r--test/rubygems/test_gem_local_remote_options.rb29
-rw-r--r--test/rubygems/test_gem_name_tuple.rb12
-rw-r--r--test/rubygems/test_gem_package.rb824
-rw-r--r--test/rubygems/test_gem_package_old.rb115
-rw-r--r--test/rubygems/test_gem_package_tar_header.rb164
-rw-r--r--test/rubygems/test_gem_package_tar_reader.rb67
-rw-r--r--test/rubygems/test_gem_package_tar_reader_entry.rb208
-rw-r--r--test/rubygems/test_gem_package_tar_writer.rb263
-rw-r--r--test/rubygems/test_gem_package_task.rb84
-rw-r--r--test/rubygems/test_gem_path_support.rb80
-rw-r--r--test/rubygems/test_gem_platform.rb599
-rw-r--r--test/rubygems/test_gem_rdoc.rb181
-rw-r--r--test/rubygems/test_gem_remote_fetcher.rb1016
-rw-r--r--test/rubygems/test_gem_request.rb260
-rw-r--r--test/rubygems/test_gem_request_connection_pools.rb86
-rw-r--r--test/rubygems/test_gem_request_set.rb321
-rw-r--r--test/rubygems/test_gem_request_set_gem_dependency_api.rb593
-rw-r--r--test/rubygems/test_gem_request_set_lockfile.rb191
-rw-r--r--test/rubygems/test_gem_request_set_lockfile_parser.rb151
-rw-r--r--test/rubygems/test_gem_request_set_lockfile_tokenizer.rb275
-rw-r--r--test/rubygems/test_gem_requirement.rb228
-rw-r--r--test/rubygems/test_gem_resolver.rb402
-rw-r--r--test/rubygems/test_gem_resolver_activation_request.rb53
-rw-r--r--test/rubygems/test_gem_resolver_api_set.rb180
-rw-r--r--test/rubygems/test_gem_resolver_api_specification.rb106
-rw-r--r--test/rubygems/test_gem_resolver_best_set.rb95
-rw-r--r--test/rubygems/test_gem_resolver_composed_set.rb6
-rw-r--r--test/rubygems/test_gem_resolver_conflict.rb38
-rw-r--r--test/rubygems/test_gem_resolver_dependency_request.rb58
-rw-r--r--test/rubygems/test_gem_resolver_git_set.rb48
-rw-r--r--test/rubygems/test_gem_resolver_git_specification.rb47
-rw-r--r--test/rubygems/test_gem_resolver_index_set.rb54
-rw-r--r--test/rubygems/test_gem_resolver_index_specification.rb44
-rw-r--r--test/rubygems/test_gem_resolver_installed_specification.rb15
-rw-r--r--test/rubygems/test_gem_resolver_installer_set.rb158
-rw-r--r--test/rubygems/test_gem_resolver_local_specification.rb18
-rw-r--r--test/rubygems/test_gem_resolver_lock_set.rb34
-rw-r--r--test/rubygems/test_gem_resolver_lock_specification.rb40
-rw-r--r--test/rubygems/test_gem_resolver_requirement_list.rb6
-rw-r--r--test/rubygems/test_gem_resolver_specification.rb22
-rw-r--r--test/rubygems/test_gem_resolver_vendor_set.rb22
-rw-r--r--test/rubygems/test_gem_resolver_vendor_specification.rb25
-rw-r--r--test/rubygems/test_gem_security.rb225
-rw-r--r--test/rubygems/test_gem_security_policy.rb252
-rw-r--r--test/rubygems/test_gem_security_signer.rb107
-rw-r--r--test/rubygems/test_gem_security_trust_dir.rb46
-rw-r--r--test/rubygems/test_gem_server.rb607
-rw-r--r--test/rubygems/test_gem_silent_ui.rb90
-rw-r--r--test/rubygems/test_gem_source.rb141
-rw-r--r--test/rubygems/test_gem_source_fetch_problem.rb27
-rw-r--r--test/rubygems/test_gem_source_git.rb159
-rw-r--r--test/rubygems/test_gem_source_installed.rb36
-rw-r--r--test/rubygems/test_gem_source_list.rb11
-rw-r--r--test/rubygems/test_gem_source_local.rb32
-rw-r--r--test/rubygems/test_gem_source_lock.rb68
-rw-r--r--test/rubygems/test_gem_source_specific_file.rb38
-rw-r--r--test/rubygems/test_gem_source_subpath_problem.rb50
-rw-r--r--test/rubygems/test_gem_source_vendor.rb30
-rw-r--r--test/rubygems/test_gem_spec_fetcher.rb155
-rw-r--r--test/rubygems/test_gem_specification.rb2401
-rw-r--r--test/rubygems/test_gem_stream_ui.rb96
-rw-r--r--test/rubygems/test_gem_stub_specification.rb100
-rw-r--r--test/rubygems/test_gem_text.rb14
-rw-r--r--test/rubygems/test_gem_uninstaller.rb388
-rw-r--r--test/rubygems/test_gem_unsatisfiable_dependency_error.rb10
-rw-r--r--test/rubygems/test_gem_update_suggestion.rb209
-rw-r--r--test/rubygems/test_gem_uri.rb41
-rw-r--r--test/rubygems/test_gem_uri_formatter.rb32
-rw-r--r--test/rubygems/test_gem_util.rb83
-rw-r--r--test/rubygems/test_gem_validator.rb28
-rw-r--r--test/rubygems/test_gem_version.rb139
-rw-r--r--test/rubygems/test_gem_version_option.rb36
-rw-r--r--test/rubygems/test_kernel.rb121
-rw-r--r--test/rubygems/test_project_sanity.rb49
-rw-r--r--test/rubygems/test_remote_fetch_error.rb17
-rw-r--r--test/rubygems/test_require.rb608
-rw-r--r--test/rubygems/test_rubygems.rb76
-rw-r--r--test/rubygems/test_webauthn_listener.rb126
-rw-r--r--test/rubygems/test_webauthn_listener_response.rb93
-rw-r--r--test/rubygems/utilities.rb435
-rw-r--r--test/rubygems/wrong_key_cert.pem30
-rw-r--r--test/rubygems/wrong_key_cert_32.pem30
-rw-r--r--test/runner.rb46
-rw-r--r--test/scanf/data.txt6
-rw-r--r--test/scanf/test_scanf.rb305
-rw-r--r--test/scanf/test_scanfblocks.rb82
-rw-r--r--test/scanf/test_scanfio.rb28
-rw-r--r--test/sdbm/test_sdbm.rb544
-rw-r--r--test/shell/test_command_processor.rb100
-rw-r--r--test/socket/test_addrinfo.rb28
-rw-r--r--test/socket/test_basicsocket.rb7
-rw-r--r--test/socket/test_nonblock.rb16
-rw-r--r--test/socket/test_socket.rb91
-rw-r--r--test/socket/test_sockopt.rb2
-rw-r--r--test/socket/test_tcp.rb45
-rw-r--r--test/socket/test_udp.rb10
-rw-r--r--test/socket/test_unix.rb167
-rw-r--r--test/stringio/test_ractor.rb23
-rw-r--r--test/stringio/test_stringio.rb213
-rw-r--r--test/strscan/test_ractor.rb28
-rw-r--r--test/strscan/test_stringscanner.rb368
-rw-r--r--test/syslog/test_syslog_logger.rb15
-rw-r--r--test/test_cmath.rb76
-rw-r--r--test/test_delegate.rb141
-rw-r--r--test/test_extlibs.rb5
-rw-r--r--test/test_find.rb16
-rw-r--r--test/test_forwardable.rb67
-rw-r--r--test/test_getoptlong.rb163
-rw-r--r--test/test_ipaddr.rb100
-rw-r--r--test/test_mutex_m.rb53
-rw-r--r--test/test_open3.rb33
-rw-r--r--test/test_pp.rb40
-rw-r--r--test/test_prime.rb198
-rw-r--r--test/test_pstore.rb38
-rw-r--r--test/test_pty.rb37
-rw-r--r--test/test_rbconfig.rb9
-rw-r--r--test/test_securerandom.rb116
-rw-r--r--test/test_set.rb239
-rw-r--r--test/test_shellwords.rb5
-rw-r--r--test/test_sorted_set.rb45
-rw-r--r--test/test_syslog.rb9
-rw-r--r--test/test_tempfile.rb76
-rw-r--r--test/test_time.rb81
-rw-r--r--test/test_timeout.rb78
-rw-r--r--test/test_tmpdir.rb106
-rw-r--r--test/test_tracer.rb56
-rw-r--r--test/test_trick.rb246
-rw-r--r--test/test_unicode_normalize.rb22
-rw-r--r--test/test_win32api.rb24
-rw-r--r--test/testunit/test4test_hideskip.rb10
-rw-r--r--test/testunit/test4test_redefinition.rb14
-rw-r--r--test/testunit/test4test_sorting.rb18
-rw-r--r--test/testunit/test_assertion.rb29
-rw-r--r--test/testunit/test_hideskip.rb17
-rw-r--r--test/testunit/test_parallel.rb200
-rw-r--r--test/testunit/test_redefinition.rb16
-rw-r--r--test/testunit/test_sorting.rb18
-rw-r--r--test/testunit/tests_for_parallel/ptest_first.rb (renamed from tool/test/testunit/tests_for_parallel/ptest_first.rb)0
-rw-r--r--test/testunit/tests_for_parallel/ptest_forth.rb (renamed from tool/test/testunit/tests_for_parallel/ptest_forth.rb)0
-rw-r--r--test/testunit/tests_for_parallel/ptest_second.rb (renamed from tool/test/testunit/tests_for_parallel/ptest_second.rb)0
-rw-r--r--test/testunit/tests_for_parallel/ptest_third.rb (renamed from tool/test/testunit/tests_for_parallel/ptest_third.rb)0
-rw-r--r--test/testunit/tests_for_parallel/runner.rb14
-rw-r--r--test/thread/test_cv.rb239
-rw-r--r--test/thread/test_queue.rb616
-rw-r--r--test/thread/test_sync.rb68
-rw-r--r--test/uri/test_common.rb130
-rw-r--r--test/uri/test_file.rb67
-rw-r--r--test/uri/test_ftp.rb10
-rw-r--r--test/uri/test_generic.rb98
-rw-r--r--test/uri/test_http.rb35
-rw-r--r--test/uri/test_ldap.rb16
-rw-r--r--test/uri/test_parser.rb34
-rw-r--r--test/uri/test_ws.rb65
-rw-r--r--test/uri/test_wss.rb65
-rw-r--r--test/webrick/.htaccess (renamed from tool/test/webrick/.htaccess)0
-rw-r--r--test/webrick/test_cgi.rb170
-rw-r--r--test/webrick/test_config.rb (renamed from tool/test/webrick/test_config.rb)0
-rw-r--r--test/webrick/test_cookie.rb (renamed from tool/test/webrick/test_cookie.rb)0
-rw-r--r--test/webrick/test_do_not_reverse_lookup.rb (renamed from tool/test/webrick/test_do_not_reverse_lookup.rb)0
-rw-r--r--test/webrick/test_filehandler.rb351
-rw-r--r--test/webrick/test_htmlutils.rb (renamed from tool/test/webrick/test_htmlutils.rb)0
-rw-r--r--test/webrick/test_httpauth.rb348
-rw-r--r--test/webrick/test_httpproxy.rb328
-rw-r--r--test/webrick/test_httprequest.rb417
-rw-r--r--test/webrick/test_httpresponse.rb247
-rw-r--r--test/webrick/test_https.rb (renamed from tool/test/webrick/test_https.rb)0
-rw-r--r--test/webrick/test_httpserver.rb510
-rw-r--r--test/webrick/test_httputils.rb (renamed from tool/test/webrick/test_httputils.rb)0
-rw-r--r--test/webrick/test_httpversion.rb (renamed from tool/test/webrick/test_httpversion.rb)0
-rw-r--r--test/webrick/test_server.rb162
-rw-r--r--test/webrick/test_ssl_server.rb67
-rw-r--r--test/webrick/test_utils.rb110
-rw-r--r--test/webrick/utils.rb74
-rw-r--r--test/webrick/webrick.cgi (renamed from tool/test/webrick/webrick.cgi)0
-rw-r--r--test/webrick/webrick.rhtml (renamed from tool/test/webrick/webrick.rhtml)0
-rw-r--r--test/webrick/webrick_long_filename.cgi (renamed from tool/test/webrick/webrick_long_filename.cgi)0
-rw-r--r--test/win32ole/available_ole.rb41
-rw-r--r--test/win32ole/test_err_in_callback.rb2
-rw-r--r--test/win32ole/test_thread.rb2
-rw-r--r--test/win32ole/test_win32ole.rb49
-rw-r--r--test/win32ole/test_win32ole_event.rb90
-rw-r--r--test/win32ole/test_win32ole_method.rb13
-rw-r--r--test/win32ole/test_win32ole_method_event.rb36
-rw-r--r--test/win32ole/test_win32ole_param.rb53
-rw-r--r--test/win32ole/test_win32ole_param_event.rb30
-rw-r--r--test/win32ole/test_win32ole_record.rb20
-rw-r--r--test/win32ole/test_win32ole_type.rb52
-rw-r--r--test/win32ole/test_win32ole_type_event.rb44
-rw-r--r--test/win32ole/test_win32ole_variable.rb4
-rw-r--r--test/win32ole/test_win32ole_variant.rb2
-rw-r--r--test/win32ole/test_win32ole_variant_outarg.rb2
-rw-r--r--test/win32ole/test_word.rb2
-rw-r--r--test/yaml/test_store.rb6
-rw-r--r--test/zlib/test_zlib.rb284
-rw-r--r--thread.c3910
-rw-r--r--thread_none.c286
-rw-r--r--thread_none.h20
-rw-r--r--thread_pthread.c2687
-rw-r--r--thread_pthread.h112
-rw-r--r--thread_sync.c1036
-rw-r--r--thread_sync.rb68
-rw-r--r--thread_win32.c592
-rw-r--r--thread_win32.h45
-rw-r--r--time.c4048
-rw-r--r--timev.h38
-rw-r--r--timev.rb404
-rw-r--r--tool/annocheck/Dockerfile4
-rw-r--r--tool/annocheck/Dockerfile-copy7
-rwxr-xr-xtool/bisect.sh46
-rw-r--r--tool/bundler/dev_gems.rb19
-rw-r--r--tool/bundler/dev_gems.rb.lock57
-rw-r--r--tool/bundler/rubocop_gems.rb12
-rw-r--r--tool/bundler/rubocop_gems.rb.lock73
-rw-r--r--tool/bundler/standard_gems.rb12
-rw-r--r--tool/bundler/standard_gems.rb.lock81
-rw-r--r--tool/bundler/test_gems.rb12
-rw-r--r--tool/bundler/test_gems.rb.lock45
-rwxr-xr-xtool/change_maker.rb47
-rwxr-xr-xtool/checksum.rb8
-rw-r--r--tool/ci_functions.sh29
-rw-r--r--tool/colorize.rb41
-rwxr-xr-xtool/darwin-ar6
-rwxr-xr-xtool/darwin-cc6
-rwxr-xr-xtool/disable_ipv6.sh9
-rw-r--r--tool/downloader.rb188
-rw-r--r--tool/dummy-rake-compiler/rake/extensiontask.rb9
-rwxr-xr-xtool/enc-case-folding.rb416
-rw-r--r--tool/enc-emoji-citrus-gen.rb8
-rwxr-xr-xtool/enc-unicode.rb153
-rw-r--r--tool/eval.rb4
-rwxr-xr-xtool/expand-config.rb16
-rwxr-xr-xtool/extlibs.rb209
-rw-r--r--tool/fake.rb39
-rwxr-xr-xtool/fetch-bundled_gems.rb34
-rwxr-xr-xtool/file2lastrev.rb101
-rwxr-xr-xtool/format-release262
-rwxr-xr-xtool/gem-unpack.rb18
-rwxr-xr-xtool/gen-github-release.rb59
-rwxr-xr-xtool/gen-mailmap.rb47
-rwxr-xr-xtool/gen_ruby_tapset.rb11
-rw-r--r--tool/generate-backport-changelog.rb99
-rw-r--r--tool/generic_erb.rb51
-rwxr-xr-xtool/git-refresh3
-rw-r--r--tool/gperf.sed1
-rwxr-xr-xtool/id2token.rb12
-rwxr-xr-xtool/ifchange32
-rwxr-xr-xtool/insns2vm.rb17
-rwxr-xr-xtool/instruction.rb1249
-rwxr-xr-xtool/intern_ids.rb35
-rw-r--r--tool/jisx0208.rb (renamed from tool/lib/jisx0208.rb)0
-rwxr-xr-xtool/leaked-globals71
-rw-r--r--tool/lib/-test-/integer.rb14
-rw-r--r--tool/lib/bundled_gem.rb107
-rw-r--r--tool/lib/colorize.rb57
-rw-r--r--tool/lib/core_assertions.rb817
-rw-r--r--tool/lib/envutil.rb380
-rw-r--r--tool/lib/gc_checker.rb36
-rw-r--r--tool/lib/helper.rb4
-rw-r--r--tool/lib/iseq_loader_checker.rb81
-rw-r--r--tool/lib/leakchecker.rb321
-rw-r--r--tool/lib/memory_status.rb151
-rw-r--r--tool/lib/output.rb57
-rw-r--r--tool/lib/profile_test_all.rb91
-rw-r--r--tool/lib/test/unit.rb1822
-rw-r--r--tool/lib/test/unit/assertions.rb833
-rw-r--r--tool/lib/test/unit/parallel.rb216
-rw-r--r--tool/lib/test/unit/testcase.rb296
-rw-r--r--tool/lib/tracepointchecker.rb126
-rw-r--r--tool/lib/vcs.rb846
-rw-r--r--tool/lib/vpath.rb92
-rw-r--r--tool/lib/webrick.rb232
-rw-r--r--tool/lib/webrick/accesslog.rb157
-rw-r--r--tool/lib/webrick/cgi.rb313
-rw-r--r--tool/lib/webrick/config.rb158
-rw-r--r--tool/lib/webrick/cookie.rb172
-rw-r--r--tool/lib/webrick/httpauth.rb96
-rw-r--r--tool/lib/webrick/httpauth/authenticator.rb117
-rw-r--r--tool/lib/webrick/httpauth/basicauth.rb116
-rw-r--r--tool/lib/webrick/httpauth/digestauth.rb395
-rw-r--r--tool/lib/webrick/httpauth/htdigest.rb132
-rw-r--r--tool/lib/webrick/httpauth/htgroup.rb97
-rw-r--r--tool/lib/webrick/httpauth/htpasswd.rb158
-rw-r--r--tool/lib/webrick/httpproxy.rb354
-rw-r--r--tool/lib/webrick/httprequest.rb636
-rw-r--r--tool/lib/webrick/httpresponse.rb564
-rw-r--r--tool/lib/webrick/https.rb152
-rw-r--r--tool/lib/webrick/httpserver.rb293
-rw-r--r--tool/lib/webrick/httpservlet.rb23
-rw-r--r--tool/lib/webrick/httpservlet/abstract.rb152
-rw-r--r--tool/lib/webrick/httpservlet/cgihandler.rb126
-rw-r--r--tool/lib/webrick/httpservlet/erbhandler.rb88
-rw-r--r--tool/lib/webrick/httpservlet/filehandler.rb552
-rw-r--r--tool/lib/webrick/httpservlet/prochandler.rb47
-rw-r--r--tool/lib/webrick/httpstatus.rb194
-rw-r--r--tool/lib/webrick/httputils.rb512
-rw-r--r--tool/lib/webrick/server.rb381
-rw-r--r--tool/lib/webrick/ssl.rb215
-rw-r--r--tool/lib/webrick/utils.rb265
-rw-r--r--tool/lib/webrick/version.rb18
-rw-r--r--tool/lib/zombie_hunter.rb10
-rwxr-xr-xtool/ln_sr.rb131
-rw-r--r--tool/m4/_colorize_result_prepare.m434
-rw-r--r--tool/m4/ac_msg_result.m45
-rw-r--r--tool/m4/colorize_result.m49
-rw-r--r--tool/m4/ruby_append_option.m45
-rw-r--r--tool/m4/ruby_append_options.m47
-rw-r--r--tool/m4/ruby_check_builtin_func.m410
-rw-r--r--tool/m4/ruby_check_builtin_setjmp.m427
-rw-r--r--tool/m4/ruby_check_printf_prefix.m429
-rw-r--r--tool/m4/ruby_check_setjmp.m417
-rw-r--r--tool/m4/ruby_check_signedness.m45
-rw-r--r--tool/m4/ruby_check_sizeof.m4108
-rw-r--r--tool/m4/ruby_check_sysconf.m413
-rw-r--r--tool/m4/ruby_cppoutfile.m418
-rw-r--r--tool/m4/ruby_decl_attribute.m445
-rw-r--r--tool/m4/ruby_default_arch.m412
-rw-r--r--tool/m4/ruby_define_if.m46
-rw-r--r--tool/m4/ruby_defint.m440
-rw-r--r--tool/m4/ruby_dtrace_available.m420
-rw-r--r--tool/m4/ruby_dtrace_postprocess.m430
-rw-r--r--tool/m4/ruby_func_attribute.m47
-rw-r--r--tool/m4/ruby_mingw32.m424
-rw-r--r--tool/m4/ruby_prepend_option.m45
-rw-r--r--tool/m4/ruby_prog_gnu_ld.m410
-rw-r--r--tool/m4/ruby_prog_makedirs.m49
-rw-r--r--tool/m4/ruby_replace_funcs.m413
-rw-r--r--tool/m4/ruby_replace_type.m468
-rw-r--r--tool/m4/ruby_require_funcs.m413
-rw-r--r--tool/m4/ruby_rm_recursive.m418
-rw-r--r--tool/m4/ruby_setjmp_type.m452
-rw-r--r--tool/m4/ruby_stack_grow_direction.m430
-rw-r--r--tool/m4/ruby_thread.m480
-rw-r--r--tool/m4/ruby_try_cflags.m419
-rw-r--r--tool/m4/ruby_try_cxxflags.m417
-rw-r--r--tool/m4/ruby_try_ldflags.m415
-rw-r--r--tool/m4/ruby_type_attribute.m48
-rw-r--r--tool/m4/ruby_universal_arch.m4122
-rw-r--r--tool/m4/ruby_wasm_tools.m424
-rw-r--r--tool/m4/ruby_werror_flag.m418
-rwxr-xr-xtool/make-snapshot442
-rw-r--r--tool/make_hgraph.rb7
-rwxr-xr-xtool/merger.rb444
-rw-r--r--tool/mk_builtin_loader.rb394
-rw-r--r--tool/mk_call_iseq_optimized.rb73
-rwxr-xr-xtool/mkconfig.rb112
-rwxr-xr-xtool/mkrunnable.rb30
-rwxr-xr-xtool/node_name.rb8
-rwxr-xr-xtool/outdate-bundled-gems.rb135
-rw-r--r--tool/prereq.status3
-rwxr-xr-xtool/pull-latest-mspec-spec18
-rw-r--r--tool/rakelib/sync_tool.rake17
-rwxr-xr-xtool/rbinstall.rb583
-rw-r--r--tool/rbs_skip_tests32
-rwxr-xr-xtool/rbuninstall.rb18
-rwxr-xr-xtool/redmine-backporter.rb126
-rwxr-xr-xtool/release.sh47
-rwxr-xr-xtool/releng/gen-mail.rb55
-rwxr-xr-xtool/releng/gen-release-note.rb36
-rwxr-xr-xtool/releng/update-www-meta.rb213
-rwxr-xr-xtool/rjit/bindgen.rb664
-rw-r--r--tool/ruby_vm/controllers/application_controller.rb26
-rw-r--r--tool/ruby_vm/helpers/c_escape.rb128
-rw-r--r--tool/ruby_vm/helpers/dumper.rb114
-rw-r--r--tool/ruby_vm/helpers/scanner.rb53
-rw-r--r--tool/ruby_vm/loaders/insns_def.rb100
-rw-r--r--tool/ruby_vm/loaders/opt_insn_unif_def.rb34
-rw-r--r--tool/ruby_vm/loaders/opt_operand_def.rb56
-rw-r--r--tool/ruby_vm/loaders/vm_opts_h.rb37
-rw-r--r--tool/ruby_vm/models/attribute.rb59
-rwxr-xr-xtool/ruby_vm/models/bare_instructions.rb240
-rw-r--r--tool/ruby_vm/models/c_expr.rb45
-rw-r--r--tool/ruby_vm/models/instructions.rb22
-rw-r--r--tool/ruby_vm/models/instructions_unifications.rb43
-rw-r--r--tool/ruby_vm/models/operands_unifications.rb142
-rw-r--r--tool/ruby_vm/models/trace_instructions.rb71
-rw-r--r--tool/ruby_vm/models/typemap.rb63
-rw-r--r--tool/ruby_vm/scripts/converter.rb29
-rw-r--r--tool/ruby_vm/scripts/insns2vm.rb101
-rw-r--r--tool/ruby_vm/tests/.gitkeep0
-rw-r--r--tool/ruby_vm/views/_attributes.erb35
-rw-r--r--tool/ruby_vm/views/_c_expr.erb17
-rw-r--r--tool/ruby_vm/views/_comptime_insn_stack_increase.erb62
-rw-r--r--tool/ruby_vm/views/_copyright.erb31
-rw-r--r--tool/ruby_vm/views/_insn_entry.erb76
-rw-r--r--tool/ruby_vm/views/_insn_len_info.erb28
-rw-r--r--tool/ruby_vm/views/_insn_name_info.erb44
-rw-r--r--tool/ruby_vm/views/_insn_operand_info.erb53
-rw-r--r--tool/ruby_vm/views/_insn_sp_pc_dependency.erb27
-rw-r--r--tool/ruby_vm/views/_insn_type_chars.erb32
-rw-r--r--tool/ruby_vm/views/_leaf_helpers.erb79
-rw-r--r--tool/ruby_vm/views/_notice.erb22
-rw-r--r--tool/ruby_vm/views/_sp_inc_helpers.erb37
-rw-r--r--tool/ruby_vm/views/_trace_instruction.erb21
-rw-r--r--tool/ruby_vm/views/insns.inc.erb26
-rw-r--r--tool/ruby_vm/views/insns_info.inc.erb22
-rw-r--r--tool/ruby_vm/views/lib/ruby_vm/rjit/instruction.rb.erb14
-rw-r--r--tool/ruby_vm/views/opt_sc.inc.erb40
-rw-r--r--tool/ruby_vm/views/optinsn.inc.erb71
-rw-r--r--tool/ruby_vm/views/optunifs.inc.erb21
-rw-r--r--tool/ruby_vm/views/vm.inc.erb30
-rw-r--r--tool/ruby_vm/views/vmtc.inc.erb21
-rw-r--r--tool/rubyspec_temp.rb13
-rwxr-xr-xtool/runruby.rb51
-rw-r--r--tool/search-cgvars.rb55
-rwxr-xr-xtool/strip-rdoc.rb30
-rw-r--r--[-rwxr-xr-x]tool/sync_default_gems.rb952
-rwxr-xr-xtool/sync_test_lib.rb101
-rwxr-xr-xtool/test-annocheck.sh33
-rw-r--r--tool/test-bundled-gems.rb97
-rw-r--r--tool/test-coverage.rb40
-rw-r--r--tool/test/runner.rb23
-rw-r--r--tool/test/test_jisx0208.rb2
-rwxr-xr-xtool/test/test_sync_default_gems.rb150
-rw-r--r--tool/test/testunit/metametameta.rb70
-rw-r--r--tool/test/testunit/test4test_hideskip.rb14
-rw-r--r--tool/test/testunit/test4test_redefinition.rb14
-rw-r--r--tool/test/testunit/test4test_sorting.rb18
-rw-r--r--tool/test/testunit/test_assertion.rb53
-rw-r--r--tool/test/testunit/test_hideskip.rb21
-rw-r--r--tool/test/testunit/test_minitest_unit.rb1488
-rw-r--r--tool/test/testunit/test_parallel.rb219
-rw-r--r--tool/test/testunit/test_redefinition.rb11
-rw-r--r--tool/test/testunit/test_sorting.rb75
-rw-r--r--tool/test/testunit/tests_for_parallel/runner.rb14
-rw-r--r--tool/test/testunit/tests_for_parallel/test4test_hungup.rb15
-rw-r--r--tool/test/webrick/test_cgi.rb170
-rw-r--r--tool/test/webrick/test_filehandler.rb403
-rw-r--r--tool/test/webrick/test_htgroup.rb19
-rw-r--r--tool/test/webrick/test_httpauth.rb366
-rw-r--r--tool/test/webrick/test_httpproxy.rb467
-rw-r--r--tool/test/webrick/test_httprequest.rb488
-rw-r--r--tool/test/webrick/test_httpresponse.rb282
-rw-r--r--tool/test/webrick/test_httpserver.rb543
-rw-r--r--tool/test/webrick/test_httpstatus.rb35
-rw-r--r--tool/test/webrick/test_server.rb191
-rw-r--r--tool/test/webrick/test_ssl_server.rb67
-rw-r--r--tool/test/webrick/test_utils.rb110
-rw-r--r--tool/test/webrick/utils.rb84
-rw-r--r--tool/transcode-tblgen.rb54
-rwxr-xr-xtool/travis_retry.sh13
-rwxr-xr-xtool/travis_wait.sh18
-rwxr-xr-xtool/update-NEWS-gemlist.rb39
-rw-r--r--tool/update-NEWS-refs.rb37
-rwxr-xr-xtool/update-bundled_gems.rb27
-rwxr-xr-xtool/update-deps83
-rw-r--r--tool/vcs.rb495
-rw-r--r--tool/vpath.rb87
-rwxr-xr-xtool/wasm-clangw9
-rwxr-xr-xtool/ytab.sed67
-rw-r--r--trace_point.rb419
-rw-r--r--transcode.c880
-rw-r--r--transcode_data.h37
-rw-r--r--transient_heap.c990
-rw-r--r--transient_heap.h65
-rw-r--r--util.c3666
-rw-r--r--variable.c3884
-rw-r--r--variable.h30
-rw-r--r--version.c102
-rw-r--r--version.h74
-rw-r--r--vm.c3363
-rw-r--r--vm_args.c1087
-rw-r--r--vm_backtrace.c1205
-rw-r--r--vm_callinfo.h574
-rw-r--r--vm_core.h1299
-rw-r--r--vm_debug.h99
-rw-r--r--vm_dump.c1345
-rw-r--r--vm_eval.c2087
-rw-r--r--vm_exec.c82
-rw-r--r--vm_exec.h84
-rw-r--r--vm_insnhelper.c6821
-rw-r--r--vm_insnhelper.h173
-rw-r--r--vm_method.c2566
-rw-r--r--vm_opts.h36
-rw-r--r--vm_sync.c302
-rw-r--r--vm_sync.h137
-rw-r--r--vm_trace.c1525
-rw-r--r--vsnprintf.c32
-rw-r--r--warning.rb53
-rw-r--r--wasm/GNUmakefile.in32
-rw-r--r--wasm/README.md70
-rw-r--r--wasm/asyncify.h23
-rw-r--r--wasm/fiber.c83
-rw-r--r--wasm/fiber.h43
-rw-r--r--wasm/machine.c62
-rw-r--r--wasm/machine.h25
-rw-r--r--wasm/machine_core.S25
-rw-r--r--wasm/missing.c199
-rw-r--r--wasm/runtime.c47
-rw-r--r--wasm/setjmp.c204
-rw-r--r--wasm/setjmp.h95
-rw-r--r--wasm/setjmp_core.S27
-rw-r--r--wasm/tests/fiber_test.c66
-rw-r--r--wasm/tests/machine_test.c115
-rw-r--r--wasm/tests/setjmp_test.c108
-rwxr-xr-xwasm/wasm-opt36
-rw-r--r--weakmap.c977
-rw-r--r--win32/Makefile.sub367
-rw-r--r--win32/README.win32141
-rwxr-xr-xwin32/configure.bat49
-rw-r--r--win32/dir.h9
-rw-r--r--win32/file.c640
-rw-r--r--win32/file.h38
-rwxr-xr-xwin32/ifchange.bat44
-rwxr-xr-xwin32/mkexports.rb27
-rwxr-xr-xwin32/resource.rb4
-rwxr-xr-xwin32/rm.bat2
-rw-r--r--[-rwxr-xr-x]win32/rtname.cmd0
-rw-r--r--win32/ruby.manifest8
-rw-r--r--win32/setup.mak140
-rw-r--r--win32/win32.c6392
-rw-r--r--yjit.c1147
-rw-r--r--yjit.h72
-rw-r--r--yjit.rb401
-rw-r--r--yjit/.gitignore2
-rw-r--r--yjit/Cargo.lock49
-rw-r--r--yjit/Cargo.toml50
-rw-r--r--yjit/bindgen/Cargo.lock311
-rw-r--r--yjit/bindgen/Cargo.toml10
-rw-r--r--yjit/bindgen/src/main.rs458
-rw-r--r--yjit/not_gmake.mk18
-rw-r--r--yjit/src/asm/arm64/README.md16
-rw-r--r--yjit/src/asm/arm64/arg/bitmask_imm.rs255
-rw-r--r--yjit/src/asm/arm64/arg/condition.rs52
-rw-r--r--yjit/src/asm/arm64/arg/inst_offset.rs47
-rw-r--r--yjit/src/asm/arm64/arg/mod.rs18
-rw-r--r--yjit/src/asm/arm64/arg/sf.rs19
-rw-r--r--yjit/src/asm/arm64/arg/shifted_imm.rs81
-rw-r--r--yjit/src/asm/arm64/arg/sys_reg.rs6
-rw-r--r--yjit/src/asm/arm64/arg/truncate.rs66
-rw-r--r--yjit/src/asm/arm64/inst/atomic.rs86
-rw-r--r--yjit/src/asm/arm64/inst/branch.rs100
-rw-r--r--yjit/src/asm/arm64/inst/branch_cond.rs78
-rw-r--r--yjit/src/asm/arm64/inst/breakpoint.rs55
-rw-r--r--yjit/src/asm/arm64/inst/call.rs104
-rw-r--r--yjit/src/asm/arm64/inst/conditional.rs73
-rw-r--r--yjit/src/asm/arm64/inst/data_imm.rs143
-rw-r--r--yjit/src/asm/arm64/inst/data_reg.rs192
-rw-r--r--yjit/src/asm/arm64/inst/halfword_imm.rs179
-rw-r--r--yjit/src/asm/arm64/inst/load_literal.rs89
-rw-r--r--yjit/src/asm/arm64/inst/load_register.rs108
-rw-r--r--yjit/src/asm/arm64/inst/load_store.rs249
-rw-r--r--yjit/src/asm/arm64/inst/load_store_exclusive.rs109
-rw-r--r--yjit/src/asm/arm64/inst/logical_imm.rs154
-rw-r--r--yjit/src/asm/arm64/inst/logical_reg.rs207
-rw-r--r--yjit/src/asm/arm64/inst/mod.rs50
-rw-r--r--yjit/src/asm/arm64/inst/mov.rs155
-rw-r--r--yjit/src/asm/arm64/inst/nop.rs44
-rw-r--r--yjit/src/asm/arm64/inst/pc_rel.rs107
-rw-r--r--yjit/src/asm/arm64/inst/reg_pair.rs212
-rw-r--r--yjit/src/asm/arm64/inst/sbfm.rs103
-rw-r--r--yjit/src/asm/arm64/inst/shift_imm.rs147
-rw-r--r--yjit/src/asm/arm64/inst/sys_reg.rs86
-rw-r--r--yjit/src/asm/arm64/inst/test_bit.rs133
-rw-r--r--yjit/src/asm/arm64/mod.rs1580
-rw-r--r--yjit/src/asm/arm64/opnd.rs195
-rw-r--r--yjit/src/asm/mod.rs818
-rw-r--r--yjit/src/asm/x86_64/mod.rs1419
-rw-r--r--yjit/src/asm/x86_64/tests.rs449
-rw-r--r--yjit/src/backend/arm64/mod.rs1617
-rw-r--r--yjit/src/backend/ir.rs1861
-rw-r--r--yjit/src/backend/mod.rs8
-rw-r--r--yjit/src/backend/tests.rs331
-rw-r--r--yjit/src/backend/x86_64/mod.rs1058
-rw-r--r--yjit/src/codegen.rs8577
-rw-r--r--yjit/src/core.rs3289
-rw-r--r--yjit/src/cruby.rs738
-rw-r--r--yjit/src/cruby_bindings.inc.rs1339
-rw-r--r--yjit/src/disasm.rs354
-rw-r--r--yjit/src/invariants.rs541
-rw-r--r--yjit/src/lib.rs18
-rw-r--r--yjit/src/options.rs208
-rw-r--r--yjit/src/stats.rs785
-rw-r--r--yjit/src/utils.rs277
-rw-r--r--yjit/src/virtualmem.rs443
-rw-r--r--yjit/src/yjit.rs177
-rw-r--r--yjit/yjit.mk110
9999 files changed, 626490 insertions, 1493358 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
deleted file mode 100644
index 2762a5759c..0000000000
--- a/.appveyor.yml
+++ /dev/null
@@ -1,132 +0,0 @@
----
-version: '{build}'
-init:
- - git config --global user.name git
- - git config --global user.email svn-admin@ruby-lang.org
- - git config --global core.autocrlf false
- - git config --global core.eol lf
- - git config --global advice.detachedHead 0
-shallow_clone: true
-clone_depth: 10
-platform:
- - x64
-skip_commits:
- message: /\[DOC\]/
- files:
- - doc/*
- - '**/*.md'
- - '**/*.rdoc'
- - '**/.document'
- - '**/*.[1-8]'
- - '**/*.ronn'
-environment:
- ruby_version: "25-%Platform%"
- matrix:
- # Test only the oldest supported version because AppVeyor is unstable, its concurrency
- # is limited, and compatibility issues that happen only in newer versions are rare.
- # You may test some other stuff on GitHub Actions instead.
- - build: vs
- vs: 120
- ssl: OpenSSL-v111
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- GEMS_FOR_TEST: ""
- RELINE_TEST_ENCODING: "UTF-8"
-cache:
- - c:\Tools\vcpkg\installed\
-for:
--
- matrix:
- only:
- - build: vs
- install:
- - ver
- - chcp
- - SET BITS=%Platform:x86=32%
- - SET BITS=%BITS:x=%
- - SET OPENSSL_DIR=C:\%ssl%-Win%BITS%
- - cd C:\Tools\vcpkg
- - git pull -q
- - .\bootstrap-vcpkg.bat
- - cd %APPVEYOR_BUILD_FOLDER%
- - vcpkg --triplet %Platform%-windows install --x-use-aria2 libffi libyaml readline zlib
- - CALL SET vcvars=%%^VS%VS%COMNTOOLS^%%..\..\VC\vcvarsall.bat
- - SET vcvars
- - '"%vcvars%" %Platform:x64=amd64%'
- - SET ruby_path=C:\Ruby%ruby_version:-x86=%
- - SET PATH=\usr\local\bin;%ruby_path%\bin;%PATH%;C:\msys64\mingw64\bin;C:\msys64\usr\bin
- - ruby --version
- - 'cl'
- - echo> Makefile srcdir=.
- - echo>> Makefile MSC_VER=0
- - echo>> Makefile RT=none
- - echo>> Makefile RT_VER=0
- - echo>> Makefile BUILTIN_ENCOBJS=nul
- - type win32\Makefile.sub >> Makefile
- - nmake %mflags% up VCSUP="echo Update OK"
- - nmake %mflags% extract-extlibs
- - del Makefile
- - mkdir \usr\local\bin
- - mkdir \usr\local\include
- - mkdir \usr\local\lib
- - for %%I in (%OPENSSL_DIR%\*.dll) do mklink /h \usr\local\bin\%%~nxI %%I
- - for %%I in (c:\Tools\vcpkg\installed\%Platform%-windows\bin\*.dll) do (
- if not %%~nI == readline mklink \usr\local\bin\%%~nxI %%I
- )
- - attrib +r /s /d
- - mkdir %Platform%-mswin_%vs%
- build_script:
- - set HAVE_GIT=no
- - cd %APPVEYOR_BUILD_FOLDER%
- - cd %Platform%-mswin_%vs%
- - >-
- ..\win32\configure.bat
- --with-opt-dir="/usr/local;c:/Tools/vcpkg/installed/%Platform%-windows"
- --with-openssl-dir=%OPENSSL_DIR:\=/%
- - nmake -l
- - nmake install-nodoc
- - \usr\bin\ruby -v -e "p :locale => Encoding.find('locale'), :filesystem => Encoding.find('filesystem')"
- - if not "%GEMS_FOR_TEST%" == "" \usr\bin\gem install --no-document %GEMS_FOR_TEST%
- - \usr\bin\ruby -ropenssl -e "puts 'Build ' + OpenSSL::OPENSSL_VERSION, 'Runtime ' + OpenSSL::OPENSSL_LIBRARY_VERSION"
- test_script:
- - set /a JOBS=%NUMBER_OF_PROCESSORS%
- - nmake -l "TESTOPTS=-v -q" btest
- - nmake -l "TESTOPTS=-v -q" test-basic
- - >-
- nmake -l "TESTOPTS=-v --timeout-scale=3.0
- --excludes=../test/excludes/_appveyor -j%JOBS%
- --exclude win32ole
- --exclude test_bignum
- --exclude test_syntax
- --exclude test_open-uri
- --exclude test_bundled_ca
- " test-all
- # separately execute tests without -j which may crash worker with -j.
- - >-
- nmake -l
- "TESTOPTS=-v --timeout-scale=3.0 --excludes=../test/excludes/_appveyor"
- TESTS="
- ../test/win32ole
- ../test/ruby/test_bignum.rb
- ../test/ruby/test_syntax.rb
- ../test/open-uri/test_open-uri.rb
- ../test/rubygems/test_bundled_ca.rb
- " test-all
- - nmake -l test-spec MSPECOPT=-fs # not using `-j` because sometimes `mspec -j` silently dies on Windows
-notifications:
- - provider: Webhook
- method: POST
- url:
- secure: CcFlJNDJ/a6to7u3Z4Fnz6dScEPNx7hTha2GkSRlV+1U6dqmxY/7uBcLXYb9gR3jfQk6w+2o/HrjNAyXMNGU/JOka3s2WRI4VKitzM+lQ08owvJIh0R7LxrGH0J2e81U # ruby-lang slack: ruby/simpler-alerts-bot
- body: >-
- {{^isPullRequest}}
- {
- "ci": "AppVeyor CI",
- "env": "Visual Studio 2013",
- "url": "{{buildUrl}}",
- "commit": "{{commitId}}",
- "branch": "{{branch}}"
- }
- {{/isPullRequest}}
- on_build_success: false
- on_build_failure: true
- on_build_status_changed: false
diff --git a/.cirrus.yml b/.cirrus.yml
deleted file mode 100644
index be76e4ab4a..0000000000
--- a/.cirrus.yml
+++ /dev/null
@@ -1,133 +0,0 @@
-# This CI is used to test Arm cases. We can set the maximum 16 tasks.
-# The entire testing design is inspired from .github/workflows/compilers.yml.
-
-# By default, Cirrus mounts an empty volume to `/tmp`
-# which triggers all sorts of warnings like "system temporary path is world-writable: /tmp".
-# Lets workaround it by specifying a custom volume mount point.
-env:
- CIRRUS_VOLUME: /cirrus-ci-volume
- LANG: C.UTF-8
-
-task:
- name: Arm64 Graviton2 / $CC
- skip: "changesIncludeOnly('doc/**', '**.{md,rdoc,ronn,[1-8]}', '.document')"
- arm_container:
- # We use the arm64 images at https://github.com/ruby/ruby-ci-image/pkgs/container/ruby-ci-image .
- image: ghcr.io/ruby/ruby-ci-image:$CC
- # Define the used cpu core in each matrix task. We can use total 16 cpu
- # cores in entire matrix. [cpu] = [total cpu: 16] / [number of tasks]
- cpu: 8
- # We can request maximum 4 GB per cpu.
- # [memory per task] = [memory per cpu: 4 GB] * [cpu]
- memory: 32G
- env:
- CIRRUS_CLONE_DEPTH: 50
- optflags: '-O1'
- debugflags: '-ggdb3'
- RUBY_PREFIX: /tmp/ruby-prefix
- RUBY_DEBUG: ci rgengc
- RUBY_TESTOPTS: >-
- -q
- --color=always
- --tty=no
- matrix:
- CC: clang-12
- CC: gcc-11
- id_script: id
- set_env_script:
- # Set `GNUMAKEFLAGS`, because the flags are GNU make specific. Note using
- # the `make` environment variable used in compilers.yml causes some rubygems
- # tests to fail.
- # https://github.com/rubygems/rubygems/issues/4921
- - echo "GNUMAKEFLAGS=-s -j$((1 + $CIRRUS_CPU))" >> "$CIRRUS_ENV"
- - cat "$CIRRUS_ENV"
- # Arm containers are executed in AWS's EKS, and it's not yet supporting IPv6
- # See https://github.com/aws/containers-roadmap/issues/835
- disable_ipv6_script: sudo ./tool/disable_ipv6.sh
- autogen_script: ./autogen.sh
- configure_script: >-
- ./configure -C
- --enable-debug-env
- --disable-install-doc
- --with-ext=-test-/cxxanyargs,+
- --prefix="$RUBY_PREFIX"
- make_extract-extlibs_script: make extract-extlibs
- make_incs_script: make incs
- make_script: make
- make_test_script: make test
- make_install_script: make install
- install_gems_for_test_script: $RUBY_PREFIX/bin/gem install --no-doc timezone tzinfo
- make_test-tool_script: make test-tool
- make_test-all_script: make test-all
- make_test-spec_script: make test-spec
-
-# The following is to test YJIT on ARM64 CPUs available on Cirrus CI
-yjit_task:
- name: Arm64 Graviton2 / $CC YJIT
- auto_cancellation: $CIRRUS_BRANCH != 'master'
- skip: "changesIncludeOnly('doc/**', '**.{md,rdoc,ronn,[1-8]}', '.document')"
- arm_container:
- # We use the arm64 images at https://github.com/ruby/ruby-ci-image/pkgs/container/ruby-ci-image .
- image: ghcr.io/ruby/ruby-ci-image:$CC
- # Define the used cpu core in each matrix task. We can use total 16 cpu
- # cores in entire matrix. [cpu] = [total cpu: 16] / [number of tasks]
- cpu: 8
- # We can request maximum 4 GB per cpu.
- # [memory per task] = [memory per cpu: 4 GB] * [cpu]
- memory: 32G
- env:
- CIRRUS_CLONE_DEPTH: 50
- optflags: '-O1'
- debugflags: '-ggdb3'
- RUBY_PREFIX: /tmp/ruby-prefix
- RUBY_DEBUG: ci rgengc
- RUBY_TESTOPTS: >-
- -q
- --color=always
- --tty=no
- matrix:
- - CC: clang-12
- configure: --enable-yjit=dev
- rustup_init: --default-toolchain=1.58.0
- - CC: gcc-11
- configure: --enable-yjit
- id_script: id
- set_env_script:
- # Set `GNUMAKEFLAGS`, because the flags are GNU make specific. Note using
- # the `make` environment variable used in compilers.yml causes some rubygems
- # tests to fail.
- # https://github.com/rubygems/rubygems/issues/4921
- - echo "GNUMAKEFLAGS=-s -j$((1 + $CIRRUS_CPU))" >> "$CIRRUS_ENV"
- - echo RUST_BACKTRACE=1 >> "$CIRRUS_ENV"
- - cat "$CIRRUS_ENV"
- # Arm containers are executed in AWS's EKS, and it's not yet supporting IPv6
- # See https://github.com/aws/containers-roadmap/issues/835
- disable_ipv6_script: sudo ./tool/disable_ipv6.sh
- install_rust_script:
- - sudo apt-get update -y
- - sudo apt-get install -y curl
- - "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y $rustup_init"
- autogen_script: ./autogen.sh
- configure_script: >-
- source $HOME/.cargo/env && ./configure -C
- --enable-debug-env
- --disable-install-doc
- --with-ext=-test-/cxxanyargs,+
- --prefix="$RUBY_PREFIX"
- $configure
- make_miniruby_script: source $HOME/.cargo/env && make miniruby
- make_bindgen_script: |
- if [[ "$CC" = "clang-12" ]]; then
- source $HOME/.cargo/env && make yjit-bindgen
- else
- echo "only running bindgen on clang image"
- fi
- boot_miniruby_script: ./miniruby --yjit-call-threshold=1 -e0
- test_dump_insns_script: ./miniruby --yjit-call-threshold=1 --yjit-dump-insns -e0
- output_stats_script: ./miniruby --yjit-call-threshold=1 --yjit-stats -e0
- full_build_script: source $HOME/.cargo/env && make
- cargo_test_script: source $HOME/.cargo/env && cd yjit && cargo test
- make_test_script: source $HOME/.cargo/env && make test RUN_OPTS="--yjit-call-threshold=1 --yjit-verify-ctx"
- make_test_all_script: source $HOME/.cargo/env && make test-all RUN_OPTS="--yjit-call-threshold=1 --yjit-verify-ctx" TESTOPTS="$RUBY_TESTOPTS"
- make_test_spec_script: source $HOME/.cargo/env && make test-spec RUN_OPTS="--yjit-call-threshold=1 --yjit-verify-ctx"
- clippy_script: source $HOME/.cargo/env && cd yjit && cargo clippy --all-targets --all-features
diff --git a/.dir-locals.el b/.dir-locals.el
deleted file mode 100644
index 8f4b96445c..0000000000
--- a/.dir-locals.el
+++ /dev/null
@@ -1,39 +0,0 @@
-;; Copyright (c) 2018 Urabe, Shyouhei. All rights reserved.
-;;
-;; This file is a part of the programming language Ruby. Permission is hereby
-;; granted, to either redistribute and/or modify this file, provided that the
-;; conditions mentioned in the file COPYING are met. Consult the file for
-;; details.
-
-((nil .
- ((indent-tabs-mode . nil)
- (require-final-newline . t)
- (tab-width . 8)
- (show-trailing-whitespace . t)
- (whitespace-line-column . 80))) ;; See also [Misc #12277]
-
- ;; (bat-mode . ((buffer-file-coding-system . utf-8-dos)))
-
- (ruby-mode . ((ruby-indent-level . 2)))
-
- (rdoc-mode . ((fill-column . 74)))
-
- (yaml-mode . ((yaml-indent-offset . 2)))
-
- (makefile-mode . ((indent-tabs-mode . t)))
-
- (c-mode . ((c-file-style . "ruby")))
-
- (c++-mode . ((c-file-style . "ruby")))
-
- (change-log-mode .
- ((buffer-file-coding-system . us-ascii)
- (indent-tabs-mode . t)
- (change-log-indent-text . 2)
- (add-log-time-format . (lambda (&optional x y)
- (let* ((time (or x (current-time)))
- (system-time-locale "C")
- (diff (+ (cadr time) 32400))
- (lo (% diff 65536))
- (hi (+ (car time) (/ diff 65536))))
- (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t)))))))
diff --git a/.document b/.document
index 70c62324a4..eeb565b08b 100644
--- a/.document
+++ b/.document
@@ -9,27 +9,8 @@
# prelude
prelude.rb
-rbconfig.rb
-array.rb
-ast.rb
-dir.rb
-gc.rb
-io.rb
-kernel.rb
-marshal.rb
-rjit.rb
-numeric.rb
-nilclass.rb
-pack.rb
-ractor.rb
-string.rb
-symbol.rb
-timev.rb
-thread_sync.rb
-trace_point.rb
-warning.rb
-yjit.rb
+rbconfig.rb
# the lib/ directory (which has its own .document file)
lib
@@ -38,17 +19,9 @@ lib
ext
# rdoc files
-NEWS.md
+NEWS
README.md
README.ja.md
-COPYING
-COPYING.ja
-
-LEGAL
-
-# win32/README.win32 linked from README.md
-win32
-
doc
diff --git a/.editorconfig b/.editorconfig
index 4633a7acae..49cc692091 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -3,7 +3,7 @@ root = true
[*]
end_of_line = lf
indent_size = 4
-indent_style = space
+indent_style = tab
insert_final_newline = true
tab_width = 8
trim_trailing_whitespace = true
@@ -13,18 +13,12 @@ end_of_line = crlf
[*.gemspec]
indent_size = 2
+indent_style = space
[*.rb]
indent_size = 2
+indent_style = space
[*.yml]
indent_size = 2
-
-[{*[Mm]akefile*,*.mak,*.mk,depend}]
-indent_style = tab
-
-[enc/*]
-indent_size = 2
-
-[reg*.[ch]]
-indent_size = 2
+indent_style = space
diff --git a/.gdbinit b/.gdbinit
index f5980388f2..a188ffa172 100644
--- a/.gdbinit
+++ b/.gdbinit
@@ -1,5 +1,3 @@
-set startup-with-shell off
-
define hook-run
set $color_type = 0
set $color_highlite = 0
@@ -67,7 +65,7 @@ define rp
printf "%sT_OBJECT%s: ", $color_type, $color_end
print ((struct RObject *)($arg0))->basic
if ($flags & ROBJECT_EMBED)
- print/x *((VALUE*)((struct RObject*)($arg0))->as.ary) @ (rb_shape_get_shape($arg0)->capacity)
+ print/x *((VALUE*)((struct RObject*)($arg0))->as.ary) @ (ROBJECT_EMBED_LEN_MAX+0)
else
print (((struct RObject *)($arg0))->as.heap)
if (((struct RObject*)($arg0))->as.heap.numiv) > 0
@@ -104,8 +102,8 @@ define rp
(($rsflags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
set print address off
output *(char *)(($rsflags & RUBY_FL_USER1) ? \
- ((struct RString*)$regsrc)->as.heap.ptr : \
- ((struct RString*)$regsrc)->as.ary) @ $len
+ ((struct RString*)$regsrc)->as.heap.ptr : \
+ ((struct RString*)$regsrc)->as.ary) @ $len
set print address on
printf " len:%ld ", $len
if $flags & RUBY_FL_USER6
@@ -126,26 +124,26 @@ define rp
printf "%sT_ARRAY%s: len=%ld ", $color_type, $color_end, $len
printf "(embed) "
if ($len == 0)
- printf "{(empty)} "
+ printf "{(empty)} "
else
- print/x *((VALUE*)((struct RArray*)($arg0))->as.ary) @ $len
- printf " "
+ print/x *((VALUE*)((struct RArray*)($arg0))->as.ary) @ $len
+ printf " "
end
else
set $len = ((struct RArray*)($arg0))->as.heap.len
printf "%sT_ARRAY%s: len=%ld ", $color_type, $color_end, $len
if ($flags & RUBY_FL_USER2)
- printf "(shared) shared="
- output/x ((struct RArray*)($arg0))->as.heap.aux.shared_root
- printf " "
+ printf "(shared) shared="
+ output/x ((struct RArray*)($arg0))->as.heap.aux.shared
+ printf " "
else
- printf "(ownership) capa=%ld ", ((struct RArray*)($arg0))->as.heap.aux.capa
+ printf "(ownership) capa=%ld ", ((struct RArray*)($arg0))->as.heap.aux.capa
end
if ($len == 0)
- printf "{(empty)} "
+ printf "{(empty)} "
else
- print/x *((VALUE*)((struct RArray*)($arg0))->as.heap.ptr) @ $len
- printf " "
+ print/x *((VALUE*)((struct RArray*)($arg0))->as.heap.ptr) @ $len
+ printf " "
end
end
print (struct RArray *)($arg0)
@@ -156,12 +154,8 @@ define rp
else
if ($flags & RUBY_T_MASK) == RUBY_T_HASH
printf "%sT_HASH%s: ", $color_type, $color_end,
- if (((struct RHash *)($arg0))->basic.flags & RHASH_ST_TABLE_FLAG)
- printf "st len=%ld ", ((struct RHash *)($arg0))->as.st->num_entries
- else
- printf "li len=%ld bound=%ld ", \
- ((((struct RHash *)($arg0))->basic.flags & RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT), \
- ((((struct RHash *)($arg0))->basic.flags & RHASH_AR_TABLE_BOUND_MASK) >> RHASH_AR_TABLE_BOUND_SHIFT)
+ if ((struct RHash *)($arg0))->ntbl
+ printf "len=%ld ", ((struct RHash *)($arg0))->ntbl->num_entries
end
print (struct RHash *)($arg0)
else
@@ -265,10 +259,6 @@ define rp
printf "%sT_ZOMBIE%s: ", $color_type, $color_end
print (struct RData *)($arg0)
else
- if ($flags & RUBY_T_MASK) == RUBY_T_MOVED
- printf "%sT_MOVED%s: ", $color_type, $color_end
- print *(struct RMoved *)$arg0
- else
printf "%sunknown%s: ", $color_type, $color_end
print (struct RBasic *)($arg0)
end
@@ -304,7 +294,6 @@ define rp
end
end
end
- end
end
document rp
Print a Ruby's VALUE.
@@ -445,8 +434,8 @@ define output_string
(($flags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
if $len > 0
output *(char *)(($flags & RUBY_FL_USER1) ? \
- ((struct RString*)($arg0))->as.heap.ptr : \
- ((struct RString*)($arg0))->as.ary) @ $len
+ ((struct RString*)($arg0))->as.heap.ptr : \
+ ((struct RString*)($arg0))->as.ary) @ $len
else
output ""
end
@@ -459,8 +448,8 @@ define print_string
(($flags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
if $len > 0
printf "%s", *(char *)(($flags & RUBY_FL_USER1) ? \
- ((struct RString*)($arg0))->as.heap.ptr : \
- ((struct RString*)($arg0))->as.ary) @ $len
+ ((struct RString*)($arg0))->as.heap.ptr : \
+ ((struct RString*)($arg0))->as.ary) @ $len
end
end
@@ -544,13 +533,13 @@ end
define rp_class
printf "(struct RClass *) %p", (void*)$arg0
- if RCLASS_ORIGIN((struct RClass *)($arg0)) != $arg0
- printf " -> %p", RCLASS_ORIGIN((struct RClass *)($arg0))
+ if ((struct RClass *)($arg0))->ptr.origin_ != $arg0
+ printf " -> %p", ((struct RClass *)($arg0))->ptr.origin_
end
printf "\n"
rb_classname $arg0
print/x *(struct RClass *)($arg0)
- print *RCLASS_EXT((struct RClass *)($arg0))
+ print *((struct RClass *)($arg0))->ptr
end
document rp_class
Print the content of a Class/Module.
@@ -709,6 +698,12 @@ define nd_cval
rp ($arg0).u3.value
end
+
+define nd_cnt
+ printf "%su3.cnt%s: ", $color_highlite, $color_end
+ p ($arg0).u3.cnt
+end
+
define nd_tbl
printf "%su1.tbl%s: ", $color_highlite, $color_end
p ($arg0).u1.tbl
@@ -747,6 +742,12 @@ define nd_lit
rp ($arg0).u1.value
end
+
+define nd_frml
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
define nd_rest
printf "%su2.argc%s: ", $color_highlite, $color_end
p ($arg0).u2.argc
@@ -773,6 +774,12 @@ define nd_args
rp ($arg0).u3.node
end
+
+define nd_noex
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
define nd_defn
printf "%su3.node%s: ", $color_highlite, $color_end
rp ($arg0).u3.node
@@ -790,6 +797,17 @@ define nd_new
end
+define nd_cfnc
+ printf "%su1.cfunc%s: ", $color_highlite, $color_end
+ p ($arg0).u1.cfunc
+end
+
+define nd_argc
+ printf "%su2.argc%s: ", $color_highlite, $color_end
+ p ($arg0).u2.argc
+end
+
+
define nd_cname
printf "%su1.id%s: ", $color_highlite, $color_end
p ($arg0).u1.id
@@ -868,22 +886,22 @@ define rb_numtable_entry
set $rb_numtable_p = $rb_numtable_tbl->as.packed.bins
while $rb_numtable_p && $rb_numtable_p < $rb_numtable_tbl->as.packed.bins+$rb_numtable_tbl->num_entries
if $rb_numtable_p.k == $rb_numtable_id
- set $rb_numtable_key = $rb_numtable_p.k
- set $rb_numtable_rec = $rb_numtable_p.v
- set $rb_numtable_p = 0
+ set $rb_numtable_key = $rb_numtable_p.k
+ set $rb_numtable_rec = $rb_numtable_p.v
+ set $rb_numtable_p = 0
else
- set $rb_numtable_p = $rb_numtable_p + 1
+ set $rb_numtable_p = $rb_numtable_p + 1
end
end
else
set $rb_numtable_p = $rb_numtable_tbl->as.big.bins[st_numhash($rb_numtable_id) % $rb_numtable_tbl->num_bins]
while $rb_numtable_p
if $rb_numtable_p->key == $rb_numtable_id
- set $rb_numtable_key = $rb_numtable_p->key
- set $rb_numtable_rec = $rb_numtable_p->record
- set $rb_numtable_p = 0
+ set $rb_numtable_key = $rb_numtable_p->key
+ set $rb_numtable_rec = $rb_numtable_p->record
+ set $rb_numtable_p = 0
else
- set $rb_numtable_p = $rb_numtable_p->next
+ set $rb_numtable_p = $rb_numtable_p->next
end
end
end
@@ -961,7 +979,7 @@ define iseq
set $operand_size = ((INSN*)($arg0))->operand_size
set $operands = ((INSN*)($arg0))->operands
while $i < $operand_size
- rp $operands[$i++]
+ rp $operands[$i++]
end
end
end
@@ -979,8 +997,8 @@ end
define rb_ps_vm
print $ps_vm = (rb_vm_t*)$arg0
- set $ps_thread_ln = $ps_vm->ractor.main_ractor.threads.set.n.next
- set $ps_thread_ln_last = $ps_vm->ractor.main_ractor.threads.set.n.prev
+ set $ps_thread_ln = $ps_vm->living_threads.n.next
+ set $ps_thread_ln_last = $ps_vm->living_threads.n.prev
while 1
set $ps_thread_th = (rb_thread_t *)$ps_thread_ln
set $ps_thread = (VALUE)($ps_thread_th->self)
@@ -1003,55 +1021,24 @@ define print_lineno
set $pos = $pos - 1
end
- set $index = 0
- set $size = $iseq->body->insns_info.size
- set $table = $iseq->body->insns_info.body
- set $positions = $iseq->body->insns_info.positions
+ set $i = 0
+ set $size = $iseq->body->insns_info_size
+ set $table = $iseq->body->insns_info
#printf "size: %d\n", $size
if $size == 0
else
- if $size == 1
- printf "%d", $table[0].line_no
- else
- if $positions
- # get_insn_info_linear_search
- set $index = 1
- while $index < $size
- #printf "table[%d]: position: %d, line: %d, pos: %d\n", $i, $positions[$i], $table[$i].line_no, $pos
- if $positions[$index] > $pos
- loop_break
- end
- set $index = $index + 1
- if $positions[$index] == $pos
- loop_break
- end
+ set $i = 1
+ while $i < $size
+ #printf "table[%d]: position: %d, line: %d, pos: %d\n", $i, $table[$i].position, $table[$i].line_no, $pos
+ if $table[$i].position > $pos
+ loop_break
end
- else
- # get_insn_info_succinct_bitvector
- set $sd = $iseq->body->insns_info.succ_index_table
- set $immediate_table_size = sizeof($sd->imm_part) / sizeof(uint64_t) * 9
- if $pos < $immediate_table_size
- set $i = $pos / 9
- set $j = $pos % 9
- set $index = ((int)($sd->imm_part[$i] >> ($j * 7))) & 0x7f
- else
- set $block_index = ($pos - $immediate_table_size) / 512
- set $block = &$sd->succ_part[$block_index]
- set $block_bit_index = ($pos - $immediate_table_size) % 512
- set $small_block_index = $block_bit_index / 64
- set $small_block_popcount = $small_block_index == 0 ? 0 : (((int)($block->small_block_ranks >> (($small_block_index - 1) * 9))) & 0x1ff)
- set $x = $block->bits[$small_block_index] << (63 - $block_bit_index % 64)
- set $x = ($x & 0x5555555555555555) + ($x >> 1 & 0x5555555555555555)
- set $x = ($x & 0x3333333333333333) + ($x >> 2 & 0x3333333333333333)
- set $x = ($x & 0x0707070707070707) + ($x >> 4 & 0x0707070707070707)
- set $x = ($x & 0x001f001f001f001f) + ($x >> 8 & 0x001f001f001f001f)
- set $x = ($x & 0x0000003f0000003f) + ($x >>16 & 0x0000003f0000003f)
- set $popcnt = ($x & 0x7f) + ($x >>32 & 0x7f)
- set $index = $block->rank + $small_block_popcount + $popcnt
+ set $i = $i + 1
+ if $table[$i].position == $pos
+ loop_break
end
end
- printf "%d", $table[$index-1].line_no
- end
+ printf "%d", $table[$i-1].line_no
end
end
@@ -1078,9 +1065,9 @@ define print_id
else
set $serial = (rb_id_serial_t)$id
end
- if $serial && $serial <= ruby_global_symbols.last_id
+ if $serial && $serial <= global_symbols.last_id
set $idx = $serial / ID_ENTRY_UNIT
- set $ids = (struct RArray *)ruby_global_symbols.ids
+ set $ids = (struct RArray *)global_symbols.ids
set $flags = $ids->basic.flags
if ($flags & RUBY_FL_USER1)
set $idsptr = $ids->as.ary
@@ -1102,11 +1089,11 @@ define print_id
set $arylen = $ary->as.heap.len
end
set $result = $aryptr[($serial % ID_ENTRY_UNIT) * ID_ENTRY_SIZE + $t]
- if $result != RUBY_Qnil
+ if $result != RUBY_Qnil
print_string $result
- else
- echo undef
- end
+ else
+ echo undef
+ end
end
end
end
@@ -1279,9 +1266,9 @@ document rb_count_objects
Counts all objects grouped by type.
end
-# Details: https://bugs.ruby-lang.org/projects/ruby-master/wiki/MachineInstructionsTraceWithGDB
+# Details: https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/MachineInstructionsTraceWithGDB
define trace_machine_instructions
- set logging enabled
+ set logging on
set height 0
set width 0
display/i $pc
@@ -1318,35 +1305,3 @@ define dump_node
((struct RString*)$str)->as.heap.ptr : \
((struct RString*)$str)->as.ary)
end
-
-define print_flags
- printf "RUBY_FL_WB_PROTECTED: %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_WB_PROTECTED ? "1" : "0"
- printf "RUBY_FL_PROMOTED0 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_PROMOTED0 ? "1" : "0"
- printf "RUBY_FL_PROMOTED1 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_PROMOTED1 ? "1" : "0"
- printf "RUBY_FL_FINALIZE : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_FINALIZE ? "1" : "0"
- printf "RUBY_FL_SHAREABLE : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_SHAREABLE ? "1" : "0"
- printf "RUBY_FL_EXIVAR : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_EXIVAR ? "1" : "0"
- printf "RUBY_FL_FREEZE : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_FREEZE ? "1" : "0"
-
- printf "RUBY_FL_USER0 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER0 ? "1" : "0"
- printf "RUBY_FL_USER1 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER1 ? "1" : "0"
- printf "RUBY_FL_USER2 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER2 ? "1" : "0"
- printf "RUBY_FL_USER3 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER3 ? "1" : "0"
- printf "RUBY_FL_USER4 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER4 ? "1" : "0"
- printf "RUBY_FL_USER5 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER5 ? "1" : "0"
- printf "RUBY_FL_USER6 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER6 ? "1" : "0"
- printf "RUBY_FL_USER7 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER7 ? "1" : "0"
- printf "RUBY_FL_USER8 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER8 ? "1" : "0"
- printf "RUBY_FL_USER9 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER9 ? "1" : "0"
- printf "RUBY_FL_USER10 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER10 ? "1" : "0"
- printf "RUBY_FL_USER11 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER11 ? "1" : "0"
- printf "RUBY_FL_USER12 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER12 ? "1" : "0"
- printf "RUBY_FL_USER13 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER13 ? "1" : "0"
- printf "RUBY_FL_USER14 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER14 ? "1" : "0"
- printf "RUBY_FL_USER15 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER15 ? "1" : "0"
- printf "RUBY_FL_USER16 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER16 ? "1" : "0"
- printf "RUBY_FL_USER17 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER17 ? "1" : "0"
- printf "RUBY_FL_USER18 : %s\n", ((struct RBasic*)($arg0))->flags & RUBY_FL_USER18 ? "1" : "0"
-end
-
-source misc/gdb.py
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
deleted file mode 100644
index 6c35dbcf83..0000000000
--- a/.git-blame-ignore-revs
+++ /dev/null
@@ -1,24 +0,0 @@
-# This is a file used by GitHub to ignore the following commits on `git blame`.
-#
-# You can also do the same thing in your local repository with:
-# $ git config --local blame.ignoreRevsFile .git-blame-ignore-revs
-
-# Expand tabs
-5b21e94bebed90180d8ff63dad03b8b948361089
-c5e9af9c9d890578182a21e7b71b50334cd5579e
-
-# Enable Style/StringLiterals cop for RubyGems/Bundler
-d7ffd3fea402239b16833cc434404a7af82d44f3
-
-# [ruby/digest] Revert tab-expansion in external files
-48b09aae7ec5632209229dcc294dd0d75a93a17f
-8a65cf3b61c60e4cb886f59a73ff6db44364bfa9
-39dc9f9093901d40d2998653948d5da38b18ee2c
-
-# [ruby/io-nonblock] Revert tab expansion
-f28287d34c03f472ffe90ea262bdde9affd4b965
-0d842fecb4f75ab3b1d4097ebdb8e88f51558041
-4ba2c66761d6a293abdfba409241d31063cefd62
-
-# Make benchmark indentation consistent
-fc4acf8cae82e5196186d3278d831f2438479d91
diff --git a/.gitattributes b/.gitattributes
index d0c2d266b4..6ca2f89462 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -4,5 +4,3 @@ bin svn-properties=svn:ignore=ruby
bin/* diff=ruby
tool/update-deps diff=ruby
tool/make-snapshot diff=ruby
-tool/format-release diff=ruby
-tool/leaked-globals diff=ruby
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
deleted file mode 100644
index 56baa29942..0000000000
--- a/.github/SECURITY.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Security Policy
-
-## Supported Versions
-
-See <https://www.ruby-lang.org/en/downloads/branches/>.
-
-## Reporting a Vulnerability
-
-See <https://www.ruby-lang.org/en/security/>.
diff --git a/.github/auto_request_review.yml b/.github/auto_request_review.yml
deleted file mode 100644
index f694a1c72f..0000000000
--- a/.github/auto_request_review.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-files:
- 'yjit*': [team:yjit]
- 'yjit/**/*': [team:yjit]
- 'yjit/src/cruby_bindings.inc.rs': []
- 'doc/yjit/*': [team:yjit]
- 'bootstraptest/test_yjit*': [team:yjit]
- 'test/ruby/test_yjit*': [team:yjit]
- '.github/workflows/yjit*': [team:yjit]
-options:
- ignore_draft: true
- # This currently doesn't work as intended. We want to skip reviews when only
- # cruby_bingings.inc.rs is modified, but this skips reviews even when other
- # yjit files are modified as well. To be enabled after fixing the behavior.
- #last_files_match_only: true
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index 6778b0493a..0000000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-version: 2
-updates:
- - package-ecosystem: 'github-actions'
- directory: '/'
- schedule:
- interval: 'daily'
diff --git a/.github/workflows/annocheck.yml b/.github/workflows/annocheck.yml
deleted file mode 100644
index 7c26f9276d..0000000000
--- a/.github/workflows/annocheck.yml
+++ /dev/null
@@ -1,161 +0,0 @@
-name: Annocheck
-
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-# GitHub actions does not support YAML anchors. This creative use of
-# environment variables (plus the "echo $GITHUB_ENV" hack) is to reroute that
-# restriction.
-env:
- default_cc: clang-15
- append_cc: ''
-
- # -O1 is faster than -O3 in our tests... Majority of time are consumed trying
- # to optimize binaries. Also GitHub Actions run on relatively modern CPUs
- # compared to, say, GCC 4 or Clang 3. We don't specify `-march=native`
- # because compilers tend not understand what the CPU is.
- optflags: '-O1'
-
- # -g0 disables backtraces when SEGV. Do not set that.
- debugflags: '-ggdb3'
-
- default_configure: >-
- --enable-debug-env
- --disable-install-doc
- --with-ext=-test-/cxxanyargs,+
- append_configure: >-
- --without-valgrind
- --without-jemalloc
- --without-gmp
-
- CONFIGURE_TTY: never
- GITPULLOPTIONS: --no-tags origin ${{github.ref}}
- RUBY_DEBUG: ci rgengc
- RUBY_TESTOPTS: >-
- -q
- --color=always
- --tty=no
-
-permissions:
- contents: read
-
-jobs:
- compile:
- strategy:
- fail-fast: false
- matrix:
- env:
- - {}
- entry:
- - name: 'gcc-11 annocheck'
- container: gcc-11
- env:
- # Minimal flags to pass the check.
- default_cc: 'gcc-11 -fcf-protection -Wa,--generate-missing-build-notes=yes'
- optflags: '-O2'
- LDFLAGS: '-Wl,-z,now'
- # FIXME: Drop skipping options
- # https://bugs.ruby-lang.org/issues/18061
- # https://sourceware.org/annobin/annobin.html/Test-pie.html
- TEST_ANNOCHECK_OPTS: "--skip-pie --skip-gaps"
- check: true
-
- name: ${{ matrix.entry.name }}
- runs-on: ubuntu-latest
- container:
- image: ghcr.io/ruby/ruby-ci-image:${{ matrix.entry.container || matrix.entry.env.default_cc || 'clang-15' }}
- options: --user root
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- env: ${{ matrix.entry.env || matrix.env }}
- steps:
- - run: id
- working-directory:
- - run: mkdir build
- working-directory:
- - name: setenv
- run: |
- echo "GNUMAKEFLAGS=-sj$((1 + $(nproc --all)))" >> $GITHUB_ENV
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- path: src
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: src/.downloaded-cache
- key: downloaded-cache
- - name: autogen
- run: |
- if [ ! -f ./autogen.sh ]; then
- ls -la
- fi
- ./autogen.sh
- working-directory: src
- - name: Run configure
- run: >
- ../src/configure -C ${default_configure} ${append_configure}
- --${{
- matrix.entry.crosshost && 'host' || 'with-gcc'
- }}=${{
- matrix.entry.crosshost || '"${default_cc}${append_cc:+ $append_cc}"'
- }}
- --${{ matrix.entry.shared || 'enable' }}-shared
- - run: make extract-extlibs
- - run: make incs
- - run: make showflags
- - run: make
- - run: make test
- - run: make install
- if: ${{ matrix.entry.check }}
- - run: make test-tool
- if: ${{ matrix.entry.check }}
- ### test-all doesn't work: https://github.com/ruby/ruby/actions/runs/4340112185/jobs/7578344307
- # - run: make test-all TESTS='-- ruby -ext-'
- # if: ${{ matrix.entry.check }}
- ### test-spec doesn't work: https://github.com/ruby/ruby/actions/runs/4340193212/jobs/7578505652
- # - run: make test-spec
- # env:
- # CHECK_LEAKS: true
- # if: ${{ matrix.entry.check }}
- - run: make test-annocheck
- if: ${{ matrix.entry.check && endsWith(matrix.entry.name, 'annocheck') }}
-
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ github.workflow }} / ${{ matrix.entry.name }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
-
-defaults:
- run:
- working-directory: build
diff --git a/.github/workflows/auto_request_review.yml b/.github/workflows/auto_request_review.yml
deleted file mode 100644
index 340aae4391..0000000000
--- a/.github/workflows/auto_request_review.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-name: Auto Request Review
-on:
- pull_request_target:
- types: [opened, ready_for_review, reopened]
-
-permissions:
- contents: read
-
-jobs:
- auto-request-review:
- name: Auto Request Review
- runs-on: ubuntu-latest
- if: ${{ github.repository == 'ruby/ruby' }}
- steps:
- - name: Request review based on files changes and/or groups the author belongs to
- uses: necojackarc/auto-request-review@5f91f424cabb3211c669e49e79da8363f7df395b # v0.10.0
- with:
- # scope: public_repo
- token: ${{ secrets.MATZBOT_GITHUB_TOKEN }}
diff --git a/.github/workflows/baseruby.yml b/.github/workflows/baseruby.yml
deleted file mode 100644
index cc8727bc4e..0000000000
--- a/.github/workflows/baseruby.yml
+++ /dev/null
@@ -1,78 +0,0 @@
-name: BASERUBY Check
-
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-jobs:
- baseruby:
- name: BASERUBY
- runs-on: ubuntu-20.04
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- strategy:
- matrix:
- ruby:
- - ruby-2.5
-# - ruby-2.6
-# - ruby-2.7
- - ruby-3.0
- - ruby-3.1
- - ruby-3.2
-
- steps:
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: .downloaded-cache
- key: downloaded-cache
- - uses: ruby/setup-ruby@d2b39ad0b52eca07d23f3aa14fdf2a3fcc1f411c # v1.148.0
- with:
- ruby-version: ${{ matrix.ruby }}
- bundler: none
- - run: echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
- - run: sudo apt-get install build-essential autoconf bison libyaml-dev
- - run: ./autogen.sh
- - run: ./configure --disable-install-doc
- - run: make common-srcs
- - run: make incs
- - run: make all
- - run: make test
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ github.workflow }} / BASERUBY @ ${{ matrix.ruby }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
diff --git a/.github/workflows/bundled_gems.yml b/.github/workflows/bundled_gems.yml
deleted file mode 100644
index 3396e562c0..0000000000
--- a/.github/workflows/bundled_gems.yml
+++ /dev/null
@@ -1,138 +0,0 @@
-name: bundled_gems
-
-on:
- push:
- branches: [ "master" ]
- paths:
- - '.github/workflows/bundled_gems.yml'
- - 'gems/bundled_gems'
- pull_request:
- branches: [ "master" ]
- paths:
- - '.github/workflows/bundled_gems.yml'
- - 'gems/bundled_gems'
- merge_group:
- branches: [ "master" ]
- paths:
- - '.github/workflows/bundled_gems.yml'
- - 'gems/bundled_gems'
- schedule:
- - cron: '45 6 * * *'
- workflow_dispatch:
-
-permissions: # added using https://github.com/step-security/secure-workflows
- contents: read
-
-jobs:
- update:
- permissions:
- contents: write # for Git to git push
- if: ${{ github.event_name != 'schedule' || github.repository == 'ruby/ruby' }}
- name: update ${{ github.workflow }}
- runs-on: ubuntu-latest
- steps:
- - name: git config
- run: |
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
-
- - name: Set ENV
- run: |
- echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
- echo "TODAY=$(date +%F)" >> $GITHUB_ENV
-
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: .downloaded-cache
- key: downloaded-cache-${{ github.sha }}
- restore-keys: |
- downloaded-cache
-
- - name: Download previous gems list
- run: |
- data=bundled_gems.json
- mkdir -p .downloaded-cache
- ln -s .downloaded-cache/$data .
- curl -O -R -z ./$data https://stdgems.org/$data
-
- - name: Update bundled gems list
- run: |
- ruby -i~ tool/update-bundled_gems.rb gems/bundled_gems
-
- - name: Maintain updated gems list in NEWS
- run: |
- ruby tool/update-NEWS-gemlist.rb bundled
-
- - name: Check diffs
- id: diff
- run: |
- git add -- NEWS.md
- git diff --no-ext-diff --ignore-submodules --quiet -- gems/bundled_gems
- continue-on-error: true
-
- - name: Install libraries
- run: |
- set -x
- sudo apt-get update -q || :
- sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev bison autoconf ruby
- if: ${{ steps.diff.outcome == 'failure' }}
-
- - name: Build
- run: |
- ./autogen.sh
- ./configure -C --disable-install-doc
- make
- if: ${{ steps.diff.outcome == 'failure' }}
-
- - name: Prepare bundled gems
- run: |
- make -s prepare-gems
- if: ${{ steps.diff.outcome == 'failure' }}
-
- - name: Test bundled gems
- run: |
- make -s test-bundled-gems
- git add -- gems/bundled_gems
- timeout-minutes: 30
- env:
- RUBY_TESTOPTS: "-q --tty=no"
- TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
- if: ${{ steps.diff.outcome == 'failure' }}
-
- - name: Show diffs
- id: show
- run: |
- git diff --cached --color --no-ext-diff --ignore-submodules --exit-code --
- continue-on-error: true
-
- - name: Commit
- run: |
- git pull --ff-only origin ${GITHUB_REF#refs/heads/}
- message="Update bundled gems list at "
- if [ ${{ steps.diff.outcome }} = success ]; then
- git commit --message="${message}${GITHUB_SHA:0:30} [ci skip]"
- else
- git commit --message="${message}${TODAY}"
- fi
- git push origin ${GITHUB_REF#refs/heads/}
- env:
- EMAIL: svn-admin@ruby-lang.org
- GIT_AUTHOR_NAME: git
- GIT_COMMITTER_NAME: git
- if: ${{ github.repository == 'ruby/ruby' && !startsWith(github.event_name, 'pull') && steps.show.outcome == 'failure' }}
-
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ github.workflow }} / update",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
diff --git a/.github/workflows/check_dependencies.yml b/.github/workflows/check_dependencies.yml
deleted file mode 100644
index cbd88a3e0d..0000000000
--- a/.github/workflows/check_dependencies.yml
+++ /dev/null
@@ -1,79 +0,0 @@
-name: Check Dependencies
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-jobs:
- update-deps:
- strategy:
- matrix:
- os: [ubuntu-20.04]
- fail-fast: true
- runs-on: ${{ matrix.os }}
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- steps:
- - name: Install libraries
- run: |
- set -x
- sudo apt-get update -q || :
- sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev bison autoconf ruby
- if: ${{ contains(matrix.os, 'ubuntu') }}
- - name: Install libraries
- run: |
- brew upgrade
- brew install gmp libffi openssl@1.1 zlib autoconf automake libtool readline
- if: ${{ contains(matrix.os, 'macos') }}
- - name: git config
- run: |
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: .downloaded-cache
- key: downloaded-cache
- - run: ./autogen.sh
- - name: Run configure
- run: ./configure -C --disable-install-doc --disable-rubygems --with-gcc 'optflags=-O0' 'debugflags=-save-temps=obj -g'
- - run: make all golf
- - run: ruby tool/update-deps --fix
- - run: git diff --no-ext-diff --ignore-submodules --exit-code
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ matrix.os }} / Dependencies need to update",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
diff --git a/.github/workflows/check_misc.yml b/.github/workflows/check_misc.yml
deleted file mode 100644
index 403fa26d1f..0000000000
--- a/.github/workflows/check_misc.yml
+++ /dev/null
@@ -1,112 +0,0 @@
-name: Miscellaneous checks
-on: [push, pull_request, merge_group]
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-jobs:
- checks:
- permissions:
- contents: write # for Git to git push
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- - name: Check if C-sources are US-ASCII
- run: |
- grep -r -n '[^ -~]' -- *.[chy] include internal win32/*.[ch] && exit 1 || :
- - name: Check for trailing spaces
- run: |
- git grep -I -n '[ ]$' -- '*.rb' '*.[chy]' '*.rs' && exit 1 || :
- git grep -n '^[ ][ ]*$' -- '*.md' && exit 1 || :
- - name: Check for bash specific substitution in configure.ac
- run: |
- git grep -n '\${[A-Za-z_0-9]*/' -- configure.ac && exit 1 || :
- - name: Check for header macros
- run: |
- fail=
- for header in ruby/*.h; do
- git grep -l -F -e $header -e HAVE_`echo $header | tr a-z./ A-Z__` -- . > /dev/null && continue
- fail=1
- echo $header
- done
- exit $fail
- working-directory: include
-
- - id: gems
- run: true
- if: ${{ github.ref == 'refs/heads/master' }}
-
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: .downloaded-cache
- key: downloaded-cache-${{ github.sha }}
- restore-keys: |
- downloaded-cache
- if: steps.gems.outcome == 'success'
-
- - name: Download previous gems list
- run: |
- data=default_gems.json
- mkdir -p .downloaded-cache
- ln -s .downloaded-cache/$data .
- curl -O -R -z ./$data https://stdgems.org/$data
- if: steps.gems.outcome == 'success'
-
- - name: Make default gems list
- run: |
- #!ruby
- require 'rubygems'
- $:.unshift "lib"
- rgver = File.foreach("lib/rubygems.rb") do |line|
- break $1 if /^\s*VERSION\s*=\s*"([^"]+)"/ =~ line
- end
- gems = Dir.glob("{ext,lib}/**/*.gemspec").map do |f|
- spec = Gem::Specification.load(f)
- "#{spec.name} #{spec.version}"
- end.sort
- File.open("gems/default_gems", "w") do |f|
- f.puts "RubyGems #{rgver}"
- f.puts gems
- end
- shell: ruby --disable=gems {0}
- if: steps.gems.outcome == 'success'
-
- - name: Maintain updated gems list in NEWS
- run: |
- ruby tool/update-NEWS-gemlist.rb default
- if: steps.gems.outcome == 'success'
-
- - name: Check diffs
- id: diff
- run: |
- git diff --color --no-ext-diff --ignore-submodules --exit-code NEWS.md
- continue-on-error: true
- if: steps.gems.outcome == 'success'
- - name: Commit
- run: |
- git pull --ff-only origin ${GITHUB_REF#refs/heads/}
- git commit --message="Update default gems list at ${GITHUB_SHA:0:30} [ci skip]" NEWS.md
- git push origin ${GITHUB_REF#refs/heads/}
- env:
- EMAIL: svn-admin@ruby-lang.org
- GIT_AUTHOR_NAME: git
- GIT_COMMITTER_NAME: git
- if: ${{ github.repository == 'ruby/ruby' && !startsWith(github.event_name, 'pull') && steps.diff.outcome == 'failure' }}
-
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ github.workflow }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
diff --git a/.github/workflows/cirrus-notify.yml b/.github/workflows/cirrus-notify.yml
deleted file mode 100644
index 4829a2e2bd..0000000000
--- a/.github/workflows/cirrus-notify.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-on:
- check_suite:
- type: ['completed']
-name: Cirrus CI failure notification
-
-permissions:
- contents: read
-
-jobs:
- cirrus-notify:
- name: After Cirrus CI Failure
- if: >-
- github.event.check_suite.app.name == 'Cirrus CI'
- && github.event.check_suite.conclusion != 'success'
- && github.event.check_suite.conclusion != 'cancelled'
- && github.event.check_suite.conclusion != 'skipped'
- && github.event.check_suite.head_branch == 'master'
- runs-on: ubuntu-latest
- steps:
- - uses: octokit/request-action@89a1754fe82ca777b044ca8e79e9881a42f15a93 # v2.1.7
- id: get_failed_check_run
- with:
- route: GET /repos/${{ github.repository }}/check-suites/${{ github.event.check_suite.id }}/check-runs?status=completed
- mediaType: '{"previews": ["antiope"]}'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Dump GitHub context
- env:
- GITHUB_CONTEXT: ${{ toJson(github) }}
- run: echo "$GITHUB_CONTEXT"
- - name: Dump check_runs
- env:
- CHECK_RUNS: ${{ steps.get_failed_check_run.outputs.data }}
- run: echo "$CHECK_RUNS"
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "Cirrus CI",
- "env": "Cirrus CI",
- "url": "${{ fromJson(steps.get_failed_check_run.outputs.data).check_runs[0].html_url }}",
- "commit": "${{ github.event.check_suite.head_commit.id }}",
- "branch": "${{ github.event.check_suite.head_branch }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
deleted file mode 100644
index 782424b0d6..0000000000
--- a/.github/workflows/codeql-analysis.yml
+++ /dev/null
@@ -1,110 +0,0 @@
-name: "CodeQL"
-
-on:
- push:
- branches: [ "master" ]
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- schedule:
- - cron: '0 12 * * *'
- workflow_dispatch:
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions: # added using https://github.com/step-security/secure-workflows
- contents: read
-
-jobs:
- analyze:
- name: Analyze
- runs-on: ubuntu-latest
- permissions:
- actions: read # for github/codeql-action/init to get workflow details
- contents: read # for actions/checkout to fetch code
- security-events: write # for github/codeql-action/autobuild to send a status report
- # CodeQL fails to run pull requests from dependabot due to missing write access to upload results.
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') && github.event.head_commit.pusher.name != 'dependabot[bot]' }}
-
- env:
- enable_install_doc: no
-
- strategy:
- fail-fast: false
- matrix:
- language: [ 'cpp', 'ruby' ]
-
- steps:
- - name: Install libraries
- run: |
- set -x
- sudo apt-get update -q || :
- sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev bison autoconf ruby
-
- - name: Checkout repository
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
-
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: .downloaded-cache
- key: downloaded-cache
-
- - name: Remove an obsolete rubygems vendored file
- run: sudo rm /usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb
-
- - name: Initialize CodeQL
- uses: github/codeql-action/init@29b1f65c5e92e24fe6b6647da1eaabe529cec70f # v2.3.3
- with:
- languages: ${{ matrix.language }}
-
- - name: Set ENV
- run: echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
-
- - name: Autobuild
- uses: github/codeql-action/autobuild@29b1f65c5e92e24fe6b6647da1eaabe529cec70f # v2.3.3
-
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@29b1f65c5e92e24fe6b6647da1eaabe529cec70f # v2.3.3
- with:
- category: "/language:${{matrix.language}}"
- upload: False
- output: sarif-results
-
- - name: filter-sarif
- uses: advanced-security/filter-sarif@f3b8118a9349d88f7b1c0c488476411145b6270d # v1.0
- with:
- patterns: |
- +**/*.rb
- -lib/uri/mailto.rb:rb/overly-large-range
- -lib/uri/rfc3986_parser.rb:rb/overly-large-range
- -lib/bundler/vendor/uri/lib/uri/mailto.rb:rb/overly-large-range
- -lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb:rb/overly-large-range
- -test/ruby/test_io.rb:rb/non-constant-kernel-open
- -test/open-uri/test_open-uri.rb:rb/non-constant-kernel-open
- -test/open-uri/test_ssl.rb:rb/non-constant-kernel-open
- -spec/ruby/core/io/binread_spec.rb:rb/non-constant-kernel-open
- -spec/ruby/core/io/readlines_spec.rb:rb/non-constant-kernel-open
- -spec/ruby/core/io/foreach_spec.rb:rb/non-constant-kernel-open
- -spec/ruby/core/io/write_spec.rb:rb/non-constant-kernel-open
- -spec/ruby/core/io/read_spec.rb:rb/non-constant-kernel-open
- -spec/ruby/core/kernel/open_spec.rb:rb/non-constant-kernel-open
- input: sarif-results/${{ matrix.language }}.sarif
- output: sarif-results/${{ matrix.language }}.sarif
- if: ${{ matrix.language == 'ruby' }}
-
- - name: Upload SARIF
- uses: github/codeql-action/upload-sarif@29b1f65c5e92e24fe6b6647da1eaabe529cec70f # v2.3.3
- with:
- sarif_file: sarif-results/${{ matrix.language }}.sarif
diff --git a/.github/workflows/compilers.yml b/.github/workflows/compilers.yml
deleted file mode 100644
index f7951a7237..0000000000
--- a/.github/workflows/compilers.yml
+++ /dev/null
@@ -1,286 +0,0 @@
-name: Compilations
-
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-# GitHub actions does not support YAML anchors. This creative use of
-# environment variables (plus the "echo $GITHUB_ENV" hack) is to reroute that
-# restriction.
-env:
- default_cc: clang-16
- append_cc: ''
-
- # -O1 is faster than -O3 in our tests... Majority of time are consumed trying
- # to optimize binaries. Also GitHub Actions run on relatively modern CPUs
- # compared to, say, GCC 4 or Clang 3. We don't specify `-march=native`
- # because compilers tend not understand what the CPU is.
- optflags: '-O1'
-
- # -g0 disables backtraces when SEGV. Do not set that.
- debugflags: '-ggdb3'
-
- default_configure: >-
- --enable-debug-env
- --disable-install-doc
- --with-ext=-test-/cxxanyargs,+
- append_configure: >-
- --without-valgrind
- --without-jemalloc
- --without-gmp
-
- CONFIGURE_TTY: never
- GITPULLOPTIONS: --no-tags origin ${{github.ref}}
- RUBY_DEBUG: ci rgengc
- RUBY_TESTOPTS: >-
- -q
- --color=always
- --tty=no
-
-permissions:
- contents: read
-
-jobs:
- compile:
- strategy:
- fail-fast: false
- matrix:
- env:
- - {}
- entry:
- - { name: gcc-13, env: { default_cc: gcc-13 } }
- - { name: gcc-12, env: { default_cc: gcc-12 } }
- - { name: gcc-11, env: { default_cc: gcc-11 } }
- - { name: gcc-10, env: { default_cc: gcc-10 } }
- - { name: gcc-9, env: { default_cc: gcc-9 } }
- - { name: gcc-8, env: { default_cc: gcc-8 } }
- - { name: gcc-7, env: { default_cc: gcc-7 } }
- - name: 'gcc-11 LTO'
- container: gcc-11
- env:
- default_cc: 'gcc-11 -flto=auto -ffat-lto-objects'
- optflags: '-O2'
- shared: disable
- # check: true
- - { name: clang-17, env: { default_cc: clang-17 } }
- - { name: clang-16, env: { default_cc: clang-16 } }
- - { name: clang-15, env: { default_cc: clang-15 } }
- - { name: clang-14, env: { default_cc: clang-14 } }
- - { name: clang-13, env: { default_cc: clang-13 } }
- - { name: clang-12, env: { default_cc: clang-12 } }
- - { name: clang-11, env: { default_cc: clang-11 } }
- - { name: clang-10, env: { default_cc: clang-10 } }
- - { name: clang-9, env: { default_cc: clang-9 } }
- - { name: clang-8, env: { default_cc: clang-8 } }
- - { name: clang-7, env: { default_cc: clang-7 } }
- - { name: clang-6.0, env: { default_cc: clang-6.0 } }
- - name: 'clang-14 LTO'
- container: clang-14
- env:
- default_cc: 'clang-14 -flto=auto'
- optflags: '-O2'
- shared: disable
- # check: true
-
- - { name: ext/Setup }
-
-# - { name: aarch64-linux-gnu, crosshost: aarch64-linux-gnu, container: crossbuild-essential-arm64 }
-# - { name: arm-linux-gnueabi, crosshost: arm-linux-gnueabi }
-# - { name: arm-linux-gnueabihf, crosshost: arm-linux-gnueabihf }
-# - { name: i686-w64-mingw32, crosshost: i686-w64-mingw32 }
-# - { name: powerpc-linux-gnu, crosshost: powerpc-linux-gnu }
-# - { name: powerpc64le-linux-gnu, crosshost: powerpc64le-linux-gnu, container: crossbuild-essential-ppc64el }
-# - { name: s390x-linux-gnu, crosshost: s390x-linux-gnu, container: crossbuild-essential-s390x }
-# - { name: x86_64-w64-mingw32, crosshost: x86_64-w64-mingw32, container: mingw-w64 }
-
- # -Wno-strict-prototypes is necessary with current clang-15 since
- # older autoconf generate functions without prototype and -pedantic
- # now implies strict-prototypes. Disabling the error but leaving the
- # warning generates a lot of noise from use of ANYARGS in
- # rb_define_method() and friends.
- # See: https://github.com/llvm/llvm-project/commit/11da1b53d8cd3507959022cd790d5a7ad4573d94
- - { name: c99, env: { append_cc: '-std=c99 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } }
-# - { name: c11, env: { append_cc: '-std=c11 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } }
-# - { name: c17, env: { append_cc: '-std=c17 -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } }
- - { name: c2x, env: { append_cc: '-std=c2x -Werror=pedantic -pedantic-errors -Wno-strict-prototypes' } }
- - { name: c++98, env: { CXXFLAGS: '-std=c++98 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
-# - { name: c++11, env: { CXXFLAGS: '-std=c++11 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
-# - { name: c++14, env: { CXXFLAGS: '-std=c++14 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
-# - { name: c++17, env: { CXXFLAGS: '-std=c++17 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
- - { name: c++2a, env: { CXXFLAGS: '-std=c++2a -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
-
- - { name: '-O0', env: { optflags: '-O0 -march=x86-64 -mtune=generic' } }
-# - { name: '-O3', env: { optflags: '-O3 -march=x86-64 -mtune=generic' }, check: true }
-
- - { name: gmp, env: { append_configure: '--with-gmp' } }
- - { name: jemalloc, env: { append_configure: '--with-jemalloc' } }
- - { name: valgrind, env: { append_configure: '--with-valgrind' } }
- - { name: 'coroutine=ucontext', env: { append_configure: '--with-coroutine=ucontext' } }
- - { name: 'coroutine=pthread', env: { append_configure: '--with-coroutine=pthread' } }
- - { name: disable-jit-support, env: { append_configure: '--disable-jit-support' } }
- - { name: disable-dln, env: { append_configure: '--disable-dln' } }
- - { name: enable-mkmf-verbose, env: { append_configure: '--enable-mkmf-verbose' } }
- - { name: disable-rubygems, env: { append_configure: '--disable-rubygems' } }
- - { name: RUBY_DEVEL, env: { append_configure: '--enable-devel' } }
-
- - { name: OPT_THREADED_CODE=1, env: { cppflags: '-DOPT_THREADED_CODE=1' } }
- - { name: OPT_THREADED_CODE=2, env: { cppflags: '-DOPT_THREADED_CODE=2' } }
- - { name: OPT_THREADED_CODE=3, env: { cppflags: '-DOPT_THREADED_CODE=3' } }
-
- - { name: NDEBUG, env: { cppflags: '-DNDEBUG' } }
- - { name: RUBY_DEBUG, env: { cppflags: '-DRUBY_DEBUG' } }
-# - { name: ARRAY_DEBUG, env: { cppflags: '-DARRAY_DEBUG' } }
-# - { name: BIGNUM_DEBUG, env: { cppflags: '-DBIGNUM_DEBUG' } }
-# - { name: CCAN_LIST_DEBUG, env: { cppflags: '-DCCAN_LIST_DEBUG' } }
-# - { name: CPDEBUG=-1, env: { cppflags: '-DCPDEBUG=-1' } }
-# - { name: ENC_DEBUG, env: { cppflags: '-DENC_DEBUG' } }
-# - { name: GC_DEBUG, env: { cppflags: '-DGC_DEBUG' } }
-# - { name: HASH_DEBUG, env: { cppflags: '-DHASH_DEBUG' } }
-# - { name: ID_TABLE_DEBUG, env: { cppflags: '-DID_TABLE_DEBUG' } }
-# - { name: RGENGC_DEBUG=-1, env: { cppflags: '-DRGENGC_DEBUG=-1' } }
-# - { name: SYMBOL_DEBUG, env: { cppflags: '-DSYMBOL_DEBUG' } }
-
-# - { name: RGENGC_CHECK_MODE, env: { cppflags: '-DRGENGC_CHECK_MODE' } }
-# - { name: TRANSIENT_HEAP_CHECK_MODE, env: { cppflags: '-DTRANSIENT_HEAP_CHECK_MODE' } }
-# - { name: VM_CHECK_MODE, env: { cppflags: '-DVM_CHECK_MODE' } }
-
- - { name: USE_EMBED_CI=0, env: { cppflags: '-DUSE_EMBED_CI=0' } }
- - { name: USE_FLONUM=0, env: { cppflags: '-DUSE_FLONUM=0' } }
-# - { name: USE_GC_MALLOC_OBJ_INFO_DETAILS, env: { cppflags: '-DUSE_GC_MALLOC_OBJ_INFO_DETAILS' } }
- - { name: USE_LAZY_LOAD, env: { cppflags: '-DUSE_LAZY_LOAD' } }
-# - { name: USE_SYMBOL_GC=0, env: { cppflags: '-DUSE_SYMBOL_GC=0' } }
-# - { name: USE_THREAD_CACHE=0, env: { cppflags: '-DUSE_THREAD_CACHE=0' } }
-# - { name: USE_TRANSIENT_HEAP=0, env: { cppflags: '-DUSE_TRANSIENT_HEAP=0' } }
- - { name: USE_RUBY_DEBUG_LOG=1, env: { cppflags: '-DUSE_RUBY_DEBUG_LOG=1' } }
-# - { name: USE_DEBUG_COUNTER, env: { cppflags: '-DUSE_DEBUG_COUNTER=1', RUBY_DEBUG_COUNTER_DISABLE: '1' } }
-
- - { name: DEBUG_FIND_TIME_NUMGUESS, env: { cppflags: '-DDEBUG_FIND_TIME_NUMGUESS' } }
- - { name: DEBUG_INTEGER_PACK, env: { cppflags: '-DDEBUG_INTEGER_PACK' } }
-# - { name: ENABLE_PATH_CHECK, env: { cppflags: '-DENABLE_PATH_CHECK' } }
-
- - { name: GC_DEBUG_STRESS_TO_CLASS, env: { cppflags: '-DGC_DEBUG_STRESS_TO_CLASS' } }
-# - { name: GC_ENABLE_LAZY_SWEEP=0, env: { cppflags: '-DGC_ENABLE_LAZY_SWEEP=0' } }
-# - { name: GC_PROFILE_DETAIL_MEMOTY, env: { cppflags: '-DGC_PROFILE_DETAIL_MEMOTY' } }
-# - { name: GC_PROFILE_MORE_DETAIL, env: { cppflags: '-DGC_PROFILE_MORE_DETAIL' } }
-
-# - { name: CALC_EXACT_MALLOC_SIZE, env: { cppflags: '-DCALC_EXACT_MALLOC_SIZE' } }
-# - { name: MALLOC_ALLOCATED_SIZE_CHECK, env: { cppflags: '-DMALLOC_ALLOCATED_SIZE_CHECK' } }
-
-# - { name: IBF_ISEQ_ENABLE_LOCAL_BUFFER, env: { cppflags: '-DIBF_ISEQ_ENABLE_LOCAL_BUFFER' } }
-
-# - { name: RGENGC_ESTIMATE_OLDMALLOC, env: { cppflags: '-DRGENGC_ESTIMATE_OLDMALLOC' } }
-# - { name: RGENGC_FORCE_MAJOR_GC, env: { cppflags: '-DRGENGC_FORCE_MAJOR_GC' } }
-# - { name: RGENGC_OBJ_INFO, env: { cppflags: '-DRGENGC_OBJ_INFO' } }
-# - { name: RGENGC_OLD_NEWOBJ_CHECK, env: { cppflags: '-DRGENGC_OLD_NEWOBJ_CHECK' } }
-# - { name: RGENGC_PROFILE, env: { cppflags: '-DRGENGC_PROFILE' } }
-
-# - { name: VM_DEBUG_BP_CHECK, env: { cppflags: '-DVM_DEBUG_BP_CHECK' } }
-# - { name: VM_DEBUG_VERIFY_METHOD_CACHE, env: { cppflags: '-DVM_DEBUG_VERIFY_METHOD_CACHE' } }
-
- - { name: enable-yjit, env: { append_configure: '--enable-yjit --disable-rjit' }, rust: true }
- - { name: enable-rjit, env: { append_configure: '--enable-rjit --disable-yjit' } }
- - { name: YJIT_FORCE_ENABLE, env: { cppflags: '-DYJIT_FORCE_ENABLE' }, rust: true }
-# - { name: RJIT_FORCE_ENABLE, env: { cppflags: '-DRJIT_FORCE_ENABLE' } }
-
- name: ${{ matrix.entry.name }}
- runs-on: ubuntu-latest
- container:
- image: ghcr.io/ruby/ruby-ci-image:${{ matrix.entry.container || matrix.entry.env.default_cc || 'clang-16' }}
- options: --user root
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- env: ${{ matrix.entry.env || matrix.env }}
- steps:
- - run: id
- working-directory:
- - run: mkdir build
- working-directory:
- - name: setenv
- run: |
- echo "GNUMAKEFLAGS=-sj$((1 + $(nproc --all)))" >> $GITHUB_ENV
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- path: src
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: src/.downloaded-cache
- key: downloaded-cache
- - name: Install Rust
- if: ${{ matrix.entry.rust }}
- run: sudo apt-get update && sudo apt install -y rustc
- - name: autogen
- run: |
- if [ ! -f ./autogen.sh ]; then
- ls -la
- fi
- ./autogen.sh
- working-directory: src
- - name: Run configure
- run: >
- ../src/configure -C ${default_configure} ${append_configure}
- --${{
- matrix.entry.crosshost && 'host' || 'with-gcc'
- }}=${{
- matrix.entry.crosshost || '"${default_cc}${append_cc:+ $append_cc}"'
- }}
- --${{ matrix.entry.shared || 'enable' }}-shared
- - name: Add to ext/Setup # statically link just the etc extension
- run: mkdir ext && echo etc >> ext/Setup
- if: ${{ matrix.entry.name == 'ext/Setup' }}
- - run: make extract-extlibs
- - run: make incs
- - run: make showflags
- - run: make
- - run: make test
- - run: make install
- if: ${{ matrix.entry.check }}
- - run: make test-tool
- if: ${{ matrix.entry.check }}
- - run: make test-all TESTS='-- ruby -ext-'
- if: ${{ matrix.entry.check }}
- - run: make test-spec
- env:
- CHECK_LEAKS: true
- if: ${{ matrix.entry.check }}
- - run: make test-annocheck
- if: ${{ matrix.entry.check && endsWith(matrix.entry.name, 'annocheck') }}
-
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ github.workflow }} / ${{ matrix.entry.name }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
-
-defaults:
- run:
- working-directory: build
diff --git a/.github/workflows/dependabot_automerge.yml b/.github/workflows/dependabot_automerge.yml
deleted file mode 100644
index 09aeca83c3..0000000000
--- a/.github/workflows/dependabot_automerge.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-# from https://github.com/gofiber/swagger/blob/main/.github/workflows/dependabot_automerge.yml
-name: Dependabot auto-merge
-on:
- pull_request_target:
-
-jobs:
- automerge:
- runs-on: ubuntu-latest
- if: ${{ github.actor == 'dependabot[bot]' }}
- steps:
- - name: Dependabot metadata
- uses: dependabot/fetch-metadata@efb5c8deb113433243b6b08de1aa879d5aa01cf7 # v1.4.0
- id: metadata
- - name: Wait for status checks
- uses: lewagon/wait-on-check-action@e106e5c43e8ca1edea6383a39a01c5ca495fd812 # v1.3.1
- with:
- repo-token: ${{ secrets.MATZBOT_GITHUB_TOKEN }}
- ref: ${{ github.event.pull_request.head.sha || github.sha }}
- check-regexp: 'make \(check, .*\)'
- wait-interval: 30
- - name: Auto-merge for Dependabot PRs
- if: ${{ steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch'}}
- run: gh pr merge --auto --rebase "$PR_URL"
- env:
- PR_URL: ${{github.event.pull_request.html_url}}
- GITHUB_TOKEN: ${{ secrets.MATZBOT_GITHUB_TOKEN }}
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
deleted file mode 100644
index 4228e0d4d5..0000000000
--- a/.github/workflows/macos.yml
+++ /dev/null
@@ -1,115 +0,0 @@
-name: macOS
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-jobs:
- make:
- strategy:
- matrix:
- test_task: ["check"] # "test-bundler-parallel", "test-bundled-gems"
- os:
- - macos-11
- - macos-12
- fail-fast: false
- env:
- GITPULLOPTIONS: --no-tags origin ${{github.ref}}
- runs-on: ${{ matrix.os }}
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- steps:
- - run: mkdir build
- working-directory:
- - name: git config
- run: |
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- path: src
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: src/.downloaded-cache
- key: downloaded-cache
- - name: Install libraries
- run: |
- brew upgrade
- brew install gmp libffi openssl@1.1 zlib autoconf automake libtool readline bison
- working-directory: src
- - name: Set ENV
- run: |
- echo "MAKEFLAGS=-j$((1 + $(sysctl -n hw.activecpu)))" >> $GITHUB_ENV
- echo "PATH="/usr/local/opt/bison/bin:$PATH"" >> $GITHUB_ENV
- for lib in openssl@1.1 readline; do
- CONFIGURE_ARGS="${CONFIGURE_ARGS:+$CONFIGURE_ARGS }--with-${lib%@*}-dir=$(brew --prefix $lib)"
- done
- echo CONFIGURE_ARGS="${CONFIGURE_ARGS}" >> $GITHUB_ENV
- - run: ./autogen.sh
- working-directory: src
- - name: Run configure
- run: ../src/configure -C --disable-install-doc
- - run: make incs
- - run: make prepare-gems
- if: ${{ matrix.test_task == 'test-bundled-gems' }}
- - run: make
- - name: make ${{ matrix.test_task }}
- run: |
- make -s ${{ matrix.test_task }} ${TESTS:+TESTS=`echo "$TESTS" | sed 's| |$$/ -n!/|g;s|^|-n!/|;s|$|$$/|'`}
- timeout-minutes: 40
- env:
- RUBY_TESTOPTS: "-q --tty=no"
- TESTS: ${{ matrix.test_task == 'check' && matrix.skipped_tests || '' }}
- TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
- PRECHECK_BUNDLED_GEMS: "no"
- - name: make skipped tests
- run: |
- make -s test-all TESTS=`echo "$TESTS" | sed 's| |$$/ -n/|g;s|^|-n/|;s|$|$$/|'`
- env:
- GNUMAKEFLAGS: ""
- RUBY_TESTOPTS: "-v --tty=no"
- TESTS: ${{ matrix.skipped_tests }}
- PRECHECK_BUNDLED_GEMS: "no"
- if: ${{ matrix.test_task == 'check' && matrix.skipped_tests != '' }}
- continue-on-error: ${{ matrix.continue-on-skipped_tests || false }}
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ matrix.os }} / ${{ matrix.test_task }}${{ matrix.configure }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
-
-defaults:
- run:
- working-directory: build
diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml
deleted file mode 100644
index 8e0a006d3c..0000000000
--- a/.github/workflows/mingw.yml
+++ /dev/null
@@ -1,179 +0,0 @@
-name: MinGW
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-# Notes:
-# Actions console encoding causes issues, see test-all & test-spec steps
-#
-jobs:
- make:
- runs-on: windows-2022
- name: ${{ github.workflow }} (${{ matrix.msystem }})
- env:
- MSYSTEM: ${{ matrix.msystem }}
- MSYS2_ARCH: x86_64
- CHOST: "x86_64-w64-mingw32"
- CFLAGS: "-march=x86-64 -mtune=generic -O3 -pipe"
- CXXFLAGS: "-march=x86-64 -mtune=generic -O3 -pipe"
- CPPFLAGS: "-D_FORTIFY_SOURCE=2 -D__USE_MINGW_ANSI_STDIO=1 -DFD_SETSIZE=2048"
- LDFLAGS: "-pipe"
- GITPULLOPTIONS: --no-tags origin ${{github.ref}}
- strategy:
- matrix:
- include:
- # To mitigate flakiness of MinGW CI, we test only one runtime that newer MSYS2 uses.
- - msystem: "UCRT64"
- base_ruby: head
- test_task: "check"
- test-all-opts: "--name=!/TestObjSpace#test_reachable_objects_during_iteration/"
- fail-fast: false
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- steps:
- - run: mkdir build
- working-directory:
- - name: git config
- run: |
- git config --global core.autocrlf false
- git config --global core.eol lf
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- path: src
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: src/.downloaded-cache
- key: downloaded-cache
- - name: Set up Ruby & MSYS2
- uses: ruby/setup-ruby@d2b39ad0b52eca07d23f3aa14fdf2a3fcc1f411c # v1.148.0
- with:
- ruby-version: ${{ matrix.base_ruby }}
- - name: set env
- run: |
- echo "GNUMAKEFLAGS=-j$((2 * NUMBER_OF_PROCESSORS))" >> $GITHUB_ENV
-
- - name: where check
- run: |
- # show where
- mv /c/Windows/System32/libcrypto-1_1-x64.dll /c/Windows/System32/libcrypto-1_1-x64.dll_
- mv /c/Windows/System32/libssl-1_1-x64.dll /c/Windows/System32/libssl-1_1-x64.dll_
- result=true
- for e in gcc.exe ragel.exe make.exe bison.exe libcrypto-1_1-x64.dll libssl-1_1-x64.dll; do
- echo '##['group']'$'\033[93m'$e$'\033[m'
- where $e || result=false
- echo '##['endgroup']'
- done
- $result
-
- - name: version check
- run: |
- # show version
- result=true
- for e in gcc ragel make bison "openssl version"; do
- case "$e" in *" "*) ;; *) e="$e --version";; esac
- echo '##['group']'$'\033[93m'$e$'\033[m'
- $e || result=false
- echo '##['endgroup']'
- done
- $result
-
- - name: autogen
- run: |
- ./autogen.sh
- working-directory: src
-
- - name: configure
- run: >
- ../src/configure --disable-install-doc --prefix=/.
- --build=$CHOST --host=$CHOST --target=$CHOST
-
- - name: update
- run: |
- make incs
-
- - name: download gems
- run: |
- make update-gems
-
- - name: make all
- timeout-minutes: 30
- run: |
- make
-
- - name: make install
- run: |
- make DESTDIR=../install install-nodoc
-
- - name: test
- timeout-minutes: 30
- run: |
- make test
- env:
- GNUMAKEFLAGS: ""
- RUBY_TESTOPTS: "-v --tty=no"
- if: ${{matrix.test_task == 'check' || matrix.test_task == 'test'}}
-
- - name: test-all
- timeout-minutes: 45
- run: |
- # Actions uses UTF8, causes test failures, similar to normal OS setup
- chcp.com 437
- make ${{ StartsWith(matrix.test_task, 'test/') && matrix.test_task || 'test-all' }}
- env:
- RUBY_TESTOPTS: >-
- --retry --job-status=normal --show-skip --timeout-scale=1.5
- ${{ matrix.test-all-opts }}
- BUNDLER_VERSION:
- if: ${{matrix.test_task == 'check' || matrix.test_task == 'test-all' || StartsWith(matrix.test_task, 'test/')}}
-
- - name: test-spec
- timeout-minutes: 10
- run: |
- make ${{ StartsWith(matrix.test_task, 'spec/') && matrix.test_task || 'test-spec' }}
- if: ${{matrix.test_task == 'check' || matrix.test_task == 'test-spec' || StartsWith(matrix.test_task, 'spec/')}}
-
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ github.workflow }} ${{ matrix.msystem }} / ${{ matrix.test_task }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
-
-defaults:
- run:
- working-directory: build
- shell: sh
diff --git a/.github/workflows/rjit-bindgen.yml b/.github/workflows/rjit-bindgen.yml
deleted file mode 100644
index dafbc367f4..0000000000
--- a/.github/workflows/rjit-bindgen.yml
+++ /dev/null
@@ -1,104 +0,0 @@
-name: RJIT bindgen
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-jobs:
- make:
- strategy:
- matrix:
- include:
- - task: rjit-bindgen
- fail-fast: false
- runs-on: ubuntu-20.04
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- steps:
- - run: mkdir build
- working-directory:
- - name: Set ENV
- run: |
- echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
- - name: Install libraries
- run: |
- set -x
- sudo apt-get update -q || :
- sudo apt-get install --no-install-recommends -q -y \
- build-essential \
- libssl-dev libyaml-dev libreadline6-dev \
- zlib1g-dev libncurses5-dev libffi-dev \
- libclang1-10 \
- bison autoconf
- sudo apt-get install -q -y pkg-config || :
- - name: Set up Ruby
- uses: ruby/setup-ruby@d2b39ad0b52eca07d23f3aa14fdf2a3fcc1f411c # v1.148.0
- with:
- ruby-version: '3.1'
- - name: git config
- run: |
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- path: src
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: src/.downloaded-cache
- key: downloaded-cache
- - name: Fixed world writable dirs
- run: |
- chmod -v go-w $HOME $HOME/.config
- sudo chmod -R go-w /usr/share
- sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
- - run: ./autogen.sh
- working-directory: src
- - name: Run configure
- run: ../src/configure -C --disable-install-doc --prefix=$(pwd)/install --enable-yjit=dev_nodebug
- - run: make incs
- - run: make
- - run: make install
- - run: make ${{ matrix.task }}
- - run: git diff --exit-code
- working-directory: src
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "RJIT / bindgen",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
-
-defaults:
- run:
- working-directory: build
diff --git a/.github/workflows/rjit.yml b/.github/workflows/rjit.yml
deleted file mode 100644
index dce7b78631..0000000000
--- a/.github/workflows/rjit.yml
+++ /dev/null
@@ -1,134 +0,0 @@
-name: RJIT
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- - '**.[1-8]'
- - '**.ronn'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- - '**.[1-8]'
- - '**.ronn'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- - '**.[1-8]'
- - '**.ronn'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-jobs:
- make:
- strategy:
- matrix:
- # main variables included in the job name
- test_task: [check]
- run_opts: ['--rjit-call-threshold=1']
- arch: ['']
- fail-fast: false
- env:
- GITPULLOPTIONS: --no-tags origin ${{github.ref}}
- RUBY_DEBUG: ci
- SETARCH: ${{ matrix.arch && format('setarch {0}', matrix.arch) }}
- runs-on: ubuntu-22.04
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- steps:
- - run: mkdir build
- working-directory:
- - name: Set ENV
- run: |
- echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
- - name: Install libraries
- env:
- arch: ${{matrix.arch}}
- run: |
- set -x
- arch=${arch:+:${arch/i[3-6]86/i386}}
- ${arch:+sudo dpkg --add-architecture ${arch#:}}
- sudo apt-get update -q || :
- sudo apt-get install --no-install-recommends -q -y \
- ${arch:+cross}build-essential${arch/:/-} \
- libssl-dev${arch} libyaml-dev${arch} libreadline6-dev${arch} \
- zlib1g-dev${arch} libncurses5-dev${arch} libffi-dev${arch} \
- bison autoconf ruby libcapstone-dev
- sudo apt-get install -q -y pkg-config${arch} || :
- - name: git config
- run: |
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.1.0
- with:
- path: src
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.0.11
- with:
- path: src/.downloaded-cache
- key: downloaded-cache
- - name: Fixed world writable dirs
- run: |
- chmod -v go-w $HOME $HOME/.config
- sudo chmod -R go-w /usr/share
- sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
- - run: ./autogen.sh
- working-directory: src
- - name: Run configure
- env:
- arch: ${{matrix.arch}}
- run: >-
- $SETARCH ../src/configure -C --disable-install-doc cppflags=-DRUBY_DEBUG
- ${arch:+--target=$arch-$OSTYPE --host=$arch-$OSTYPE}
- - run: $SETARCH make
- - name: make test
- run: |
- $SETARCH make -s test RUN_OPTS="$RUN_OPTS"
- timeout-minutes: 30
- env:
- GNUMAKEFLAGS: ""
- RUBY_TESTOPTS: "-v --tty=no"
- RUN_OPTS: ${{ matrix.run_opts }}
- - name: make test-all
- run: |
- $SETARCH make -s test-all RUN_OPTS="$RUN_OPTS"
- timeout-minutes: 40
- env:
- GNUMAKEFLAGS: ""
- RUBY_TESTOPTS: "-v --tty=no"
- RUN_OPTS: ${{ matrix.run_opts }}
- - name: make test-spec
- run: |
- $SETARCH make -s test-spec RUN_OPTS="$RUN_OPTS"
- timeout-minutes: 10
- env:
- GNUMAKEFLAGS: ""
- RUN_OPTS: ${{ matrix.run_opts }}
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "RJIT / ${{ matrix.run_opts }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
-
-defaults:
- run:
- working-directory: build
diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml
deleted file mode 100644
index 9d0ed43b8d..0000000000
--- a/.github/workflows/scorecards.yml
+++ /dev/null
@@ -1,72 +0,0 @@
-# This workflow uses actions that are not certified by GitHub. They are provided
-# by a third-party and are governed by separate terms of service, privacy
-# policy, and support documentation.
-
-name: Scorecards supply-chain security
-on:
- # For Branch-Protection check. Only the default branch is supported. See
- # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
- branch_protection_rule:
- # To guarantee Maintained check is occasionally updated. See
- # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
- schedule:
- - cron: '22 4 * * 2'
- # push:
- # branches: [ "master" ]
-
-# Declare default permissions as read only.
-permissions: read-all
-
-jobs:
- analysis:
- name: Scorecards analysis
- runs-on: ubuntu-latest
- permissions:
- # Needed to upload the results to code-scanning dashboard.
- security-events: write
- # Needed to publish results and get a badge (see publish_results below).
- id-token: write
- # Uncomment the permissions below if installing in a private repository.
- # contents: read
- # actions: read
-
- steps:
- - name: "Checkout code"
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- persist-credentials: false
-
- - name: "Run analysis"
- uses: ossf/scorecard-action@80e868c13c90f172d68d1f4501dee99e2479f7af # v2.1.3
- with:
- results_file: results.sarif
- results_format: sarif
- # (Optional) Read-only PAT token. Uncomment the `repo_token` line below if:
- # - you want to enable the Branch-Protection check on a *public* repository, or
- # - you are installing Scorecards on a *private* repository
- # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
- repo_token: ${{ secrets.SCORECARD_READ_TOKEN }}
-
- # Public repositories:
- # - Publish results to OpenSSF REST API for easy access by consumers
- # - Allows the repository to include the Scorecard badge.
- # - See https://github.com/ossf/scorecard-action#publishing-results.
- # For private repositories:
- # - `publish_results` will always be set to `false`, regardless
- # of the value entered here.
- publish_results: true
-
- # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
- # format to the repository Actions tab.
- # - name: "Upload artifact"
- # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- # with:
- # name: SARIF file
- # path: results.sarif
- # retention-days: 5
-
- # Upload the results to GitHub's code scanning dashboard.
- - name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@29b1f65c5e92e24fe6b6647da1eaabe529cec70f # v2.1.27
- with:
- sarif_file: results.sarif
diff --git a/.github/workflows/spec_guards.yml b/.github/workflows/spec_guards.yml
deleted file mode 100644
index 50072412cf..0000000000
--- a/.github/workflows/spec_guards.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-name: Rubyspec Version Guards Check
-
-on:
- push:
- paths:
- - 'spec/**'
- - '!spec/*.md'
- pull_request:
- paths-ignore:
- - 'spec/**'
- - '!spec/*.md'
- merge_group:
- paths-ignore:
- - 'spec/**'
- - '!spec/*.md'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-jobs:
- rubyspec:
- name: Rubyspec
- runs-on: ubuntu-20.04
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- strategy:
- matrix:
- # Specs from ruby/spec should still run on all supported Ruby versions.
- # This also ensures the needed ruby_version_is guards are there, see spec/README.md.
- ruby:
- - ruby-2.7
- - ruby-3.1
- - ruby-3.2
-
- steps:
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- - uses: ruby/setup-ruby@d2b39ad0b52eca07d23f3aa14fdf2a3fcc1f411c # v1.148.0
- with:
- ruby-version: ${{ matrix.ruby }}
- bundler: none
- - run: gem install webrick
- - run: ruby ../mspec/bin/mspec
- working-directory: spec/ruby
- env:
- CHECK_LEAKS: true
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ github.workflow }} / rubyspec @ ${{ matrix.ruby }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml
deleted file mode 100644
index 3deabea9e9..0000000000
--- a/.github/workflows/ubuntu.yml
+++ /dev/null
@@ -1,144 +0,0 @@
-name: Ubuntu
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-jobs:
- make:
- strategy:
- matrix:
- test_task: [check]
- arch: ['']
- configure: ['cppflags=-DVM_CHECK_MODE']
- # specifying everything else with `include` to avoid redundant tests
- include:
- - test_task: check
- arch: i686
- - test_task: check
- configure: '--enable-shared --enable-load-relative'
- - test_task: test-all TESTS=--repeat-count=2
- - test_task: test-bundler-parallel
- - test_task: test-bundled-gems
- fail-fast: false
- env:
- GITPULLOPTIONS: --no-tags origin ${{github.ref}}
- RUBY_DEBUG: ci
- SETARCH: ${{ matrix.arch && format('setarch {0}', matrix.arch) }}
- runs-on: ubuntu-20.04
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- steps:
- - run: mkdir build
- working-directory:
- - name: Set ENV
- run: |
- echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
- - name: Install libraries
- env:
- arch: ${{matrix.arch}}
- run: |
- set -x
- arch=${arch:+:${arch/i[3-6]86/i386}}
- ${arch:+sudo dpkg --add-architecture ${arch#:}}
- sudo apt-get update -q || :
- sudo apt-get install --no-install-recommends -q -y \
- ${arch:+cross}build-essential${arch/:/-} \
- libssl-dev${arch} libyaml-dev${arch} libreadline6-dev${arch} \
- zlib1g-dev${arch} libncurses5-dev${arch} libffi-dev${arch} \
- bison autoconf ruby
- sudo apt-get install -q -y pkg-config${arch} || :
- - name: git config
- run: |
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- path: src
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: src/.downloaded-cache
- key: downloaded-cache
- - name: Fixed world writable dirs
- run: |
- chmod -v go-w $HOME $HOME/.config
- sudo chmod -R go-w /usr/share
- sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
- - run: ./autogen.sh
- working-directory: src
- - name: Run configure
- env:
- arch: ${{matrix.arch}}
- configure: ${{matrix.configure}}
- run: >-
- $SETARCH ../src/configure -C --disable-install-doc ${configure:-cppflags=-DRUBY_DEBUG}
- ${arch:+--target=$arch-$OSTYPE --host=$arch-$OSTYPE}
- - run: $SETARCH make incs
- - run: $SETARCH make prepare-gems
- if: ${{ matrix.test_task == 'test-bundled-gems' }}
- - run: $SETARCH make
- - name: Create dummy files in build dir
- run: |
- $SETARCH ./miniruby -e '(("a".."z").to_a+("A".."Z").to_a+("0".."9").to_a+%w[foo bar test zzz]).each{|basename|File.write("#{basename}.rb", "raise %(do not load #{basename}.rb)")}'
- if: ${{ matrix.test_task == 'check' }}
- - name: make ${{ matrix.test_task }}
- run: >-
- $SETARCH make -s ${{ matrix.test_task }}
- ${TESTS:+TESTS=`echo "$TESTS" | sed 's| |$$/ -n!/|g;s|^|-n!/|;s|$|$$/|'`}
- ${{ contains(matrix.test_task, 'bundle') && '' || 'RUBYOPT=-w' }}
- timeout-minutes: 40
- env:
- RUBY_TESTOPTS: "-q --tty=no"
- TESTS: ${{ matrix.test_task == 'check' && matrix.skipped_tests || '' }}
- TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
- PRECHECK_BUNDLED_GEMS: "no"
- - name: make skipped tests
- run: |
- $SETARCH make -s test-all TESTS=`echo "$TESTS" | sed 's| |$$/ -n/|g;s|^|-n/|;s|$|$$/|'`
- env:
- GNUMAKEFLAGS: ""
- RUBY_TESTOPTS: "-v --tty=no"
- TESTS: ${{ matrix.skipped_tests }}
- if: ${{ matrix.test_task == 'check' && matrix.skipped_tests != '' }}
- continue-on-error: ${{ matrix.continue-on-skipped_tests || false }}
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ github.workflow }} / ${{ matrix.test_task }} ${{ matrix.configure }}${{ matrix.arch }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
-
-defaults:
- run:
- working-directory: build
diff --git a/.github/workflows/wasm.yml b/.github/workflows/wasm.yml
deleted file mode 100644
index 3a7bd5e8be..0000000000
--- a/.github/workflows/wasm.yml
+++ /dev/null
@@ -1,134 +0,0 @@
-name: WebAssembly
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions: # added using https://github.com/step-security/secure-workflows
- contents: read
-
-jobs:
- make:
- strategy:
- matrix:
- entry:
-# # wasmtime can't compile non-optimized Asyncified binary due to locals explosion
-# - { name: O0-debuginfo, optflags: "-O0", debugflags: "-g", wasmoptflags: "-O1" }
-# - { name: O1, optflags: "-O1", debugflags: "" , wasmoptflags: "-O1" }
- - { name: O2, optflags: "-O2", debugflags: "" , wasmoptflags: "-O2" }
-# - { name: O3, optflags: "-O3", debugflags: "" , wasmoptflags: "-O3" }
-# # -O4 is equivalent to -O3 in clang, but it's different in wasm-opt
-# - { name: O4, optflags: "-O3", debugflags: "" , wasmoptflags: "-O4" }
-# - { name: Oz, optflags: "-Oz", debugflags: "" , wasmoptflags: "-Oz" }
- fail-fast: false
- env:
- RUBY_TESTOPTS: '-q --tty=no'
- GITPULLOPTIONS: --no-tags origin ${{github.ref}}
- WASI_SDK_VERSION_MAJOR: 14
- WASI_SDK_VERSION_MINOR: 0
- BINARYEN_VERSION: 109
- WASMTIME_VERSION: v0.33.0
- runs-on: ubuntu-20.04
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- steps:
- - run: mkdir build
- working-directory:
- - name: git config
- run: |
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- path: src
- - name: Install libraries
- run: |
- set -ex
- sudo apt-get update -q || :
- sudo apt-get install --no-install-recommends -q -y ruby bison make autoconf git wget
-
- wasi_sdk_deb="wasi-sdk_${WASI_SDK_VERSION_MAJOR}.${WASI_SDK_VERSION_MINOR}_amd64.deb"
- wget "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION_MAJOR}/${wasi_sdk_deb}"
- sudo dpkg -i "$wasi_sdk_deb"
- rm -f "$wasi_sdk_deb"
-
- mkdir build-sdk
- pushd build-sdk
-
- wasmtime_url="https://github.com/bytecodealliance/wasmtime/releases/download/${WASMTIME_VERSION}/wasmtime-${WASMTIME_VERSION}-x86_64-linux.tar.xz"
- wget -O - "$wasmtime_url" | tar xJf -
- sudo ln -fs "$PWD/wasmtime-${WASMTIME_VERSION}-x86_64-linux/wasmtime" /usr/local/bin/wasmtime
-
- binaryen_tarball="binaryen-version_${BINARYEN_VERSION}-x86_64-linux.tar.gz"
- binaryen_url="https://github.com/WebAssembly/binaryen/releases/download/version_${BINARYEN_VERSION}/${binaryen_tarball}"
- wget -O - "$binaryen_url" | tar xfz -
- sudo ln -fs "$PWD/binaryen-version_${BINARYEN_VERSION}/bin/wasm-opt" /usr/local/bin/wasm-opt
- working-directory: src
- - name: Set ENV
- run: |
- echo "MAKEFLAGS=-j$((1 + $(sysctl -n hw.activecpu)))" >> $GITHUB_ENV
- echo "WASI_SDK_PATH=/opt/wasi-sdk" >> $GITHUB_ENV
- - run: ./autogen.sh
- working-directory: src
- - name: Run configure
- run: |
- ../src/configure \
- --host wasm32-unknown-wasi \
- --with-static-linked-ext \
- LDFLAGS=" \
- -Xlinker --stack-first \
- -Xlinker -z -Xlinker stack-size=16777216 \
- " \
- optflags="${{ matrix.entry.optflags }}" \
- debugflags="${{ matrix.entry.debugflags }}" \
- wasmoptflags="${{ matrix.entry.wasmoptflags }} ${{ matrix.entry.debugflags }}"
-
- # miniruby may not be built when cross-compling
- - run: make mini ruby
- - name: Run basictest
- run: wasmtime run ./../build/miniruby --mapdir /::./ -- basictest/test.rb
- working-directory: src
- - name: Run bootstraptest (no thread)
- run: |
- NO_THREAD_TESTS="$(grep -L Thread -R ./bootstraptest | awk -F/ '{ print $NF }' | uniq | sed -n 's/test_\(.*\).rb/\1/p' | paste -s -d, -)"
- ruby ./bootstraptest/runner.rb --ruby="$(which wasmtime) run $PWD/../build/ruby --mapdir /::./ -- " --verbose "--sets=$NO_THREAD_TESTS"
- working-directory: src
-
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ github.workflow }} / ${{ matrix.name }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
-
-defaults:
- run:
- working-directory: build
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
deleted file mode 100644
index 311db28744..0000000000
--- a/.github/workflows/windows.yml
+++ /dev/null
@@ -1,157 +0,0 @@
-name: Windows
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-jobs:
- make:
- strategy:
- matrix:
- include:
- - vs: 2019
- - vs: 2022
- fail-fast: false
- runs-on: windows-${{ matrix.vs < 2022 && '2019' || matrix.vs }}
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- name: VisualStudio ${{ matrix.vs }}
- env:
- GITPULLOPTIONS: --no-tags origin ${{github.ref}}
- PATCH: C:\msys64\usr\bin\patch.exe
- OS_VER: windows-${{ matrix.vs < 2022 && '2019' || matrix.vs }}
- steps:
- - run: md build
- working-directory:
- - uses: msys2/setup-msys2@d40200dc2db4c351366b048a9565ad82919e1c24 # v2
- id: setup-msys2
- with:
- update: true
- install: >-
- patch
- if: ${{ env.OS_VER != 'windows-2019' }}
- - name: patch path
- shell: msys2 {0}
- run: echo PATCH=$(cygpath -wa $(command -v patch)) >> $GITHUB_ENV
- if: ${{ steps.setup-msys2.outcome == 'success' }}
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: C:\vcpkg\downloads
- key: ${{ runner.os }}-vcpkg-download-${{ env.OS_VER }}-${{ github.sha }}
- restore-keys: |
- ${{ runner.os }}-vcpkg-download-${{ env.OS_VER }}-
- ${{ runner.os }}-vcpkg-download-
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: C:\vcpkg\installed
- key: ${{ runner.os }}-vcpkg-installed-${{ matrix.os }}-${{ github.sha }}
- restore-keys: |
- ${{ runner.os }}-vcpkg-installed-${{ matrix.os }}-
- ${{ runner.os }}-vcpkg-installed-
- - name: Install libraries with vcpkg
- run: |
- vcpkg --triplet x64-windows install libffi libyaml openssl readline zlib
- - name: Install libraries with scoop
- run: |
- iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
- Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH
- scoop install winflexbison
- shell: pwsh
- - name: git config
- run: |
- git config --global core.autocrlf false
- git config --global core.eol lf
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- path: src
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: src/.downloaded-cache
- key: downloaded-cache
- - name: setup env
- # %TEMP% is inconsistent with %TMP% and test-all expects they are consistent.
- # https://github.com/actions/virtual-environments/issues/712#issuecomment-613004302
- run: |
- set VS=${{ matrix.vs }}
- set VCVARS=${{ matrix.vcvars }}
- if not "%VCVARS%" == "" goto :vcset
- set VCVARS="C:\Program Files (x86)\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
- if not exist %VCVARS% set VCVARS="C:\Program Files\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
- :vcset
- set | C:\msys64\usr\bin\sort > old.env
- call %VCVARS%
- set TMP=%USERPROFILE%\AppData\Local\Temp
- set TEMP=%USERPROFILE%\AppData\Local\Temp
- set /a TEST_JOBS=(15 * %NUMBER_OF_PROCESSORS% / 10) > nul
- set | C:\msys64\usr\bin\sort > new.env
- C:\msys64\usr\bin\comm -13 old.env new.env >> %GITHUB_ENV%
- del *.env
- - name: compiler version
- run: cl
- - name: link libraries
- run: |
- for %%I in (C:\vcpkg\installed\x64-windows\bin\*.dll) do (
- if not %%~nI == readline mklink %%~nxI %%I
- )
- for %%I in (libcrypto-1_1-x64 libssl-1_1-x64) do (
- ren c:\Windows\System32\%%I.dll %%I.dll_
- )
- - name: Configure
- run: >-
- ../src/win32/configure.bat --disable-install-doc
- --with-opt-dir=C:/vcpkg/installed/x64-windows
- - run: nmake incs
- - run: nmake extract-extlibs
- - run: nmake
- - run: nmake test
- timeout-minutes: 5
- - run: nmake test-spec
- timeout-minutes: 10
- - run: nmake test-all
- env:
- RUBY_TESTOPTS: -j${{env.TEST_JOBS}} --job-status=normal
- timeout-minutes: 60
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "VS${{ matrix.vs }} / ${{ matrix.test_task || 'check' }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
-
-defaults:
- run:
- working-directory: build
- shell: cmd
diff --git a/.github/workflows/yjit-ubuntu.yml b/.github/workflows/yjit-ubuntu.yml
deleted file mode 100644
index 710171723a..0000000000
--- a/.github/workflows/yjit-ubuntu.yml
+++ /dev/null
@@ -1,177 +0,0 @@
-name: YJIT Ubuntu
-on:
- push:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- pull_request:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
- merge_group:
- paths-ignore:
- - 'doc/**'
- - '**/man'
- - '**.md'
- - '**.rdoc'
- - '**/.document'
-
-concurrency:
- group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
- cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
-
-permissions:
- contents: read
-
-jobs:
- cargo:
- name: Rust cargo test
- # GitHub Action's image seems to already contain a Rust 1.58.0.
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- # For now we can't run cargo test --offline because it complains about the
- # capstone dependency, even though the dependency is optional
- #- run: cargo test --offline
- - run: RUST_BACKTRACE=1 cargo test
- working-directory: yjit
- # Also compile and test with all features enabled
- - run: RUST_BACKTRACE=1 cargo test --all-features
- working-directory: yjit
- # Check that we can build in release mode too
- - run: cargo build --release
- working-directory: yjit
- lint:
- name: Rust lint
- # GitHub Action's image seems to already contain a Rust 1.58.0.
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- # Check that we don't have linting errors in release mode, too
- - run: cargo clippy --all-targets --all-features
- working-directory: yjit
- make:
- strategy:
- fail-fast: false
- matrix:
- include:
- - test_task: "yjit-bindgen"
- hint: "To fix: use patch in logs"
- configure: "--with-gcc=clang-12 --enable-yjit=dev"
-
- - test_task: "check"
- # YJIT should be automatically built in release mode on x86-64 Linux with rustc present
- #configure: "--enable-yjit RUSTC='rustc +1.58.0'"
- configure: "RUSTC='rustc +1.58.0'"
- rust_version: "1.58.0"
-
- - test_task: "check"
- configure: "--enable-yjit=dev"
-
- - test_task: "check"
- configure: "--enable-yjit=dev"
- yjit_opts: "--yjit-call-threshold=1 --yjit-verify-ctx"
-
- - test_task: "test-all TESTS=--repeat-count=2"
- configure: "--enable-yjit=dev"
-
- - test_task: "test-bundled-gems"
- configure: "--enable-yjit=dev"
-
- - test_task: "yjit-bench"
- configure: "--enable-yjit=dev"
- yjit_bench_opts: "--yjit-stats"
- env:
- GITPULLOPTIONS: --no-tags origin ${{github.ref}}
- RUN_OPTS: ${{ matrix.yjit_opts }}
- YJIT_BENCH_OPTS: ${{ matrix.yjit_bench_opts }}
- RUBY_DEBUG: ci
- BUNDLE_JOBS: 8 # for yjit-bench
- RUST_BACKTRACE: 1
- runs-on: ubuntu-20.04
- if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
- steps:
- - run: mkdir build
- working-directory:
- - name: Install libraries
- run: |
- set -x
- sudo apt-get update -q || :
- sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev bison autoconf ruby
- - name: Install Rust
- if: ${{ matrix.rust_version }}
- run: rustup install ${{ matrix.rust_version }} --profile minimal
- - name: git config
- run: |
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
- - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- with:
- path: src
- - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
- with:
- path: src/.downloaded-cache
- key: downloaded-cache
- - name: Fixed world writable dirs
- run: |
- chmod -v go-w $HOME $HOME/.config
- sudo chmod -R go-w /usr/share
- sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
- - name: Set ENV
- run: |
- echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
- - run: ./autogen.sh
- working-directory: src
- - name: Run configure
- run: ../src/configure -C --disable-install-doc --prefix=$(pwd)/install ${{ matrix.configure }}
- - run: make incs
- - run: make prepare-gems
- if: ${{ matrix.test_task == 'test-bundled-gems' }}
- - run: make -j
- - name: Create dummy files in build dir
- run: |
- ./miniruby -e '(("a".."z").to_a+("A".."Z").to_a+("0".."9").to_a+%w[foo bar test zzz]).each{|basename|File.write("#{basename}.rb", "raise %(do not load #{basename}.rb)")}'
- if: ${{ matrix.test_task == 'check' }}
- - name: Enable YJIT through ENV
- run: echo "RUBY_YJIT_ENABLE=1" >> $GITHUB_ENV
- # Check that the binary was built with YJIT
- - name: Check YJIT enabled
- run: ./miniruby --yjit -v | grep "+YJIT"
- - name: make ${{ matrix.test_task }}
- run: make -s -j ${{ matrix.test_task }} RUN_OPTS="$RUN_OPTS" YJIT_BENCH_OPTS="$YJIT_BENCH_OPTS"
- timeout-minutes: 60
- env:
- RUBY_TESTOPTS: "-q --tty=no"
- TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
- PRECHECK_BUNDLED_GEMS: "no"
- SYNTAX_SUGGEST_TIMEOUT: "5"
- continue-on-error: ${{ matrix.test_task == 'yjit-bench' }}
- - name: Show ${{ github.event.pull_request.base.ref }} GitHub URL for yjit-bench comparison
- run: echo "https://github.com/${BASE_REPO}/commit/${BASE_SHA}"
- env:
- BASE_REPO: ${{ github.event.pull_request.base.repo.full_name }}
- BASE_SHA: ${{ github.event.pull_request.base.sha }}
- if: ${{ matrix.test_task == 'yjit-bench' && startsWith(github.event_name, 'pull') }}
- - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1
- with:
- payload: |
- {
- "ci": "GitHub Actions",
- "env": "${{ github.workflow }} / ${{ matrix.test_task }} ${{ matrix.configure }}",
- "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
- "commit": "${{ github.sha }}",
- "branch": "${{ github.ref_name }}"
- }
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
- if: ${{ failure() && github.event_name == 'push' }}
-
-defaults:
- run:
- working-directory: build
diff --git a/.gitignore b/.gitignore
index ca1783479d..efc7fd5864 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,32 +4,25 @@
*.a
*.bak
*.bc
-*.bundle
*.dSYM
*.dmyh
*.dylib
*.elc
*.i
-*.ii
*.inc
*.log
*.o
-*.o.tmp
*.obj
*.old
*.orig
-*.pch
*.pdb
-*.rbinc
*.rej
*.s
*.sav
-*.sl
-*.so
-*.so.*
*.swp
*.yarb
*~
+.*-*
.*.list
.*.time
.DS_Store
@@ -39,8 +32,6 @@
.pc
.ppack
.svn
-.time
-.ruby-version
Makefile
cygruby*.def
extconf.h
@@ -49,8 +40,6 @@ y.tab.c
*.gcda
*.gcno
*.gcov
-*.vscode
-!misc/.vscode
lcov*.info
# /
@@ -61,11 +50,7 @@ lcov*.info
/*.pc
/*.rc
/*_prelude.c
-/.downloaded-cache
-/.top-enc.mk
-/build*/
/COPYING.LIB
-/ChangeLog
/Doxyfile
/GNUmakefile
/README.atheos
@@ -75,7 +60,6 @@ lcov*.info
/archive
/autom4te*.cache
/automake
-/benchmark/benchmark-driver
/beos
/bmlog-*
/breakpoints.gdb
@@ -123,18 +107,14 @@ lcov*.info
/rename2.h
/repack
/revision.h
-/revision.tmp
-/ripper.tmp.y
/riscos
/rubicon
/ruby
/ruby-runner
/ruby-runner.h
/ruby-man.rd.gz
-/rubyspec_temp
/run.gdb
/sizes.c
-/static-ruby
/test.rb
/test-coverage.dat
/tmp
@@ -145,13 +125,6 @@ lcov*.info
/web
/yasmdata.rb
-# /bin/
-
-/bin/*.exe
-/bin/*.dll
-/bin/goruby
-/bin/ruby
-
# /benchmark/
/benchmark/bm_require.data
/benchmark/bmx_*.rb
@@ -164,35 +137,27 @@ lcov*.info
/enc/jis/props.h
/enc/unicode/data
-# /coroutine/
-!/coroutine/**/*.s
-
# /enc/trans/
/enc/trans/*.c
/enc/trans/*.def
/enc/trans/*.exp
/enc/trans/*.lib
+/enc/trans/.time
# /exe/
-/exe/goruby
/exe/ruby
+/exe/.time
# /ext/
/ext/extinit.c
/ext/configure-ext.mk
/ext/*/exts.mk
-# /ext/-test-/cxxanyargs
-/ext/-test-/cxxanyargs/failure*.failed
-
# /ext/-test-/win32/dln/
/ext/-test-/win32/dln/dlntest.dll
/ext/-test-/win32/dln/dlntest.exp
/ext/-test-/win32/dln/dlntest.lib
-# /ext/-test-/gems
-/ext/-test-/gems
-
# /ext/etc/
/ext/etc/constdefs.h
@@ -205,7 +170,6 @@ lcov*.info
# /ext/ripper/
/ext/ripper/eventids1.c
-/ext/ripper/.eventids2-check
/ext/ripper/eventids2table.c
/ext/ripper/ripper.*
/ext/ripper/ids1
@@ -221,13 +185,6 @@ lcov*.info
/gems/src
/gems/*-*
-# /lib/
-/lib/ruby/[1-9]*.*
-/lib/ruby/vendor_ruby
-
-# /misc/
-/misc/**/__pycache__
-
# /spec/bundler
/.rspec_status
@@ -237,17 +194,4 @@ lcov*.info
# /win32/
/win32/*.ico
-
-# RJIT
-/include/ruby-*/*/rb_rjit_min_header-*.h
-/lib/ruby_vm/rjit/instruction.rb
-/lib/ruby_vm/rjit/instruction.rb
-/rjit_config.h
-/rb_rjit_header.h*
-
-# YJIT
-/yjit-bench
-/yjit_exit_locations.dump
-
-# /wasm/
-/wasm/tests/*.wasm
+/win32/.time
diff --git a/.indent.pro b/.indent.pro
index 1d61cbcad1..6a207a0554 100644
--- a/.indent.pro
+++ b/.indent.pro
@@ -2,15 +2,12 @@
-nbbb
-nbc
-br
--brs
-nbs
-ncdb
--nce
--cdw
--cli2
--cbi2
+-ce
+-cli0.5
-ndj
--ncs
+-ei
-nfc1
-i4
-l120
@@ -19,14 +16,6 @@
-psl
-sc
-sob
--sbi4
--nut
--par
-TID
-TVALUE
--Tst_data_t
--Tst_index_t
--Tst_table
--Trb_data_type_t
--TFILE
diff --git a/.rdoc_options b/.rdoc_options
deleted file mode 100644
index 760507c7a2..0000000000
--- a/.rdoc_options
+++ /dev/null
@@ -1,4 +0,0 @@
----
-page_dir: doc
-main_page: README.md
-title: Documentation for Ruby development version
diff --git a/.rspec_parallel b/.rspec_parallel
deleted file mode 100644
index aaff198a32..0000000000
--- a/.rspec_parallel
+++ /dev/null
@@ -1,2 +0,0 @@
---format progress
---format ParallelTests::RSpec::RuntimeLogger --out tmp/parallel_runtime_rspec.log
diff --git a/.travis.yml b/.travis.yml
index 665feba914..a9117d190f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,3 @@
-# -*- YAML -*-
# Copyright (C) 2011 Urabe, Shyouhei. All rights reserved.
#
# This file is a part of the programming language Ruby. Permission is hereby
@@ -6,230 +5,105 @@
# conditions mentioned in the file COPYING are met. Consult the file for
# details.
-# We only manage non-amd64 free pipelines.
-# https://docs.travis-ci.com/user/billing-overview/
+# This is a Travis-CI build configuration file. The list of configurations
+# available is located in
+#
+# http://about.travis-ci.org/docs/user/build-configuration/
+#
+# and as Ruby itself is a project written in C language,
+#
+# http://about.travis-ci.org/docs/user/languages/c/
+#
+# is also a good place to look at.
language: c
+dist: trusty
-os: linux
-
-if: commit_message !~ /\[DOC\]/
-
-dist: focal
-
-git:
- quiet: true
-
-cache:
- ccache: true
- directories:
- - $HOME/config_2nd
- - $HOME/.downloaded-cache
+# temporary workaround for https://github.com/travis-ci/travis-ci/issues/8892
+sudo: required
+group: deprecated-2017Q4
-env:
- global:
- # The tests skipped in `make test-all`.
- - TEST_ALL_SKIPPED_TESTS=
- # The tests executed separately by `make test-all`.
- - TEST_ALL_SEPARATED_TESTS=
- # Reset timestamps early
- - _=$(touch NEWS && find . -type f -exec touch -r NEWS {} +)
- - CONFIGURE_TTY=no
- - CCACHE_COMPILERCHECK=none
- - CCACHE_NOCOMPRESS=1
- - CCACHE_MAXSIZE=512Mi
- - NPROC="`nproc`"
- # JOBS and SETARCH are overridden when necessary; see below.
- - JOBS=-j$((1+${NPROC}))
- - SETARCH=
- - RUBY_PREFIX=/tmp/ruby-prefix
- - GEMS_FOR_TEST='timezone tzinfo'
- # https://github.com/travis-ci/travis-build/blob/e411371dda21430a60f61b8f3f57943d2fe4d344/lib/travis/build/bash/travis_apt_get_options.bash#L7
- - travis_apt_get_options='--allow-downgrades --allow-remove-essential --allow-change-held-packages'
- - travis_apt_get_options="-yq --no-install-suggests --no-install-recommends $travis_apt_get_options"
- # -O1 is faster than -O3 in our tests.
- - optflags=-O1
- # -g0 disables backtraces when SEGV. Do not set that.
- - debugflags=-ggdb3
+compiler:
+ - gcc
-.org.ruby-lang.ci.matrix-definitions:
+os:
+ - linux
- - &gcc-10
- compiler: gcc-10
- before_install:
- - tool/travis_retry.sh sudo bash -c "rm -rf '${TRAVIS_ROOT}/var/lib/apt/lists/'* && exec apt-get update -yq"
- - >-
- tool/travis_retry.sh sudo -E apt-get $travis_apt_get_options install
- ccache
- gcc-10
- g++-10
- libffi-dev
- libncurses-dev
- libncursesw5-dev
- libreadline-dev
- libssl-dev
- libyaml-dev
- openssl
- zlib1g-dev
-
- # --------
-
- - &arm64-linux
- name: arm64-linux
- arch: arm64
- <<: *gcc-10
-
- - &ppc64le-linux
- name: ppc64le-linux
- arch: ppc64le
- <<: *gcc-10
-
- - &s390x-linux
- name: s390x-linux
- arch: s390x
- <<: *gcc-10
-
- - &arm32-linux
- name: arm32-linux
- arch: arm64
- # https://packages.ubuntu.com/focal/crossbuild-essential-armhf
- compiler: arm-linux-gnueabihf-gcc
- env:
- - SETARCH='setarch linux32 --verbose --32bit'
- # The "TestReadline#test_interrupt_in_other_thread" started failing on arm32
- # from https://www.travis-ci.com/github/ruby/ruby/jobs/529005145
- - TEST_ALL_SKIPPED_TESTS=test_interrupt_in_other_thread
- before_install:
- - sudo dpkg --add-architecture armhf
- - tool/travis_retry.sh sudo bash -c "rm -rf '${TRAVIS_ROOT}/var/lib/apt/lists/'* && exec apt-get update -yq"
- - >-
- tool/travis_retry.sh sudo -E apt-get $travis_apt_get_options install
- ccache
- crossbuild-essential-armhf
- libc6:armhf
- libstdc++-10-dev:armhf
- libffi-dev:armhf
- libncurses-dev:armhf
- libncursesw5-dev:armhf
- libreadline-dev:armhf
- libssl-dev:armhf
- libyaml-dev:armhf
- linux-libc-dev:armhf
- zlib1g-dev:armhf
-
-matrix:
- include:
- # Build every commit (Allowed Failures):
- - <<: *arm32-linux
- # Comment out as the 2nd arm64 pipeline is unstable.
- # - <<: *arm64-linux
- - <<: *ppc64le-linux
- - <<: *s390x-linux
- allow_failures:
- # We see multiple errors indicating errors on the Travis environment itself in a short while:
- # https://app.travis-ci.com/github/ruby/ruby/jobs/544382885
- # https://app.travis-ci.com/github/ruby/ruby/jobs/544361370
- # It's not a fault of Ruby's arm32 support but just Travis arm32 seems unsable.
- - name: arm32-linux
- # - name: arm64-linux
- # We see "Some worker was crashed." in about 40% of recent ppc64le-linux jobs
- # e.g. https://app.travis-ci.com/github/ruby/ruby/jobs/530959548
- - name: ppc64le-linux
- # Tentatively disable, because often hungs up **after** all tests
- # have finished successfully and saving caches.
- - name: s390x-linux
- fast_finish: true
+before_install:
+ - "CONFIG_FLAG="
+ - "JOBS=-j`nproc`"
before_script:
- - . tool/ci_functions.sh
- - |-
- if [ -n "${TEST_ALL_SKIPPED_TESTS}" ]; then
- TEST_ALL_OPTS="${TEST_ALL_OPTS} $(ci_to_excluded_test_opts "${TEST_ALL_SKIPPED_TESTS}")"
- if [ -z "${TEST_ALL_SEPARATED_TESTS}" ]; then
- TEST_ALL_SEPARATED_TESTS="${TEST_ALL_SKIPPED_TESTS}"
- fi
- fi
- - |-
- if [ -n "${TEST_ALL_SEPARATED_TESTS}" ]; then
- TEST_ALL_OPTS_SEPARATED="$(ci_to_included_test_opts "${TEST_ALL_SEPARATED_TESTS}")"
- fi
- - echo TEST_ALL_OPTS="${TEST_ALL_OPTS}" TEST_ALL_OPTS_SEPARATED="${TEST_ALL_OPTS_SEPARATED}"
- - rm -fr .ext autom4te.cache
- - |-
- [ -d ~/.downloaded-cache ] ||
- mkdir ~/.downloaded-cache
- - ln -s ~/.downloaded-cache
+ - "echo JOBS=$JOBS"
+ - "uname -a"
+ - "uname -r"
+ - "rm -fr .ext autom4te.cache"
+ - "echo $TERM"
- "> config.status"
- - "> .rbconfig.time"
- - sed -f tool/prereq.status template/Makefile.in common.mk > Makefile
- - make -s $JOBS up
- - make -s $JOBS srcs
- - rm -f config.status Makefile rbconfig.rb .rbconfig.time
- - |-
- if [ -d ~/config_2nd ]; then
- cp -pr ~/config_2nd build
- else
- mkdir build
- fi
- - mkdir config_1st config_2nd gems/src
- - chmod -R a-w .
- - chmod -R u+w build config_1st config_2nd gems/src
- - cd build
- - |-
- case "$CC" in
- gcc*) CC="ccache $CC${GCC_FLAGS:+ }$GCC_FLAGS -fno-diagnostics-color";;
- clang*) CC="ccache $CC${GCC_FLAGS:+ }$GCC_FLAGS -fno-color-diagnostics";;
- esac
- - |-
- [ ! -f config.cache ] ||
- [ "$CC" = "`sed -n s/^ac_cv_prog_CC=//p config.cache`" ] ||
- (set -x; exec rm config.cache)
- - $SETARCH ../configure -C --disable-install-doc --prefix=$RUBY_PREFIX $CONFIG_FLAG
- - cp -pr config.cache config.status .ext/include ../config_1st
- - $SETARCH make reconfig
- - cp -pr config.cache config.status .ext/include ../config_2nd
- - (cd .. && exec diff -ru config_1st config_2nd)
- - chmod u+w ..
- - rm -rf ~/config_2nd
- - mv ../config_2nd ~
- - chmod u-w ..
- - $SETARCH make -s $JOBS
- - make -s install
- - |-
- [ -z "${GEMS_FOR_TEST}" ] ||
- $RUBY_PREFIX/bin/gem install --no-document $GEMS_FOR_TEST
- - echo "raise 'do not load ~/.irbrc in test'" > ~/.irbrc
+ - "sed -f tool/prereq.status Makefile.in common.mk > Makefile"
+ - "make update-config_files"
+ - "make touch-unicode-files"
+ - "make -s $JOBS srcs UNICODE_FILES=."
+ - "requests=; for req in ${RUBYSPEC_PULL_REQUEST//,/ }; do
+ requests=\"$requests +refs/pull/$req/merge:\";
+ done"
+ - "${requests:+git -C spec/ruby -c user.email=none -c user.name=none pull --no-edit origin $requests}"
+ - "${requests:+git -C spec/ruby log --oneline origin/master..@}"
+ - "rm config.status Makefile rbconfig.rb .rbconfig.time"
+ - "mkdir build config_1st config_2nd"
+ - "chmod -R a-w ."
+ - "chmod u+w build config_1st config_2nd"
+ - "cd build"
+ - "../configure -C --disable-install-doc --with-gcc=$CC $CONFIG_FLAG"
+ - "cp -pr config.cache config.status .ext/include ../config_1st"
+ - "make reconfig"
+ - "cp -pr config.cache config.status .ext/include ../config_2nd"
+ - "(cd .. && exec diff -ru config_1st config_2nd)"
+ - "make -s $JOBS"
script:
- - $SETARCH make -s test -o showflags TESTOPTS="${TESTOPTS=$JOBS -q --tty=no}"
- - ../tool/travis_wait.sh $SETARCH make -s test-all -o exts TESTOPTS="$JOBS -q --tty=no ${TEST_ALL_OPTS}" RUBYOPT="-w"
- # Run the failing tests separately returning ok status to check if it works,
- # visualize them.
- - |
- if [ -n "${TEST_ALL_OPTS_SEPARATED}" ]; then
- $SETARCH make -s test-all -o exts TESTOPTS="$JOBS -v --tty=no ${TEST_ALL_OPTS_SEPARATED}" RUBYOPT="-w" || :
- fi
- - $SETARCH make -s test-spec MSPECOPT=-ff # not using `-j` because sometimes `mspec -j` silently dies
- - $SETARCH make -s -o showflags leaked-globals
-
-# We enable Travis on the specific branches or forked repositories here.
-if: (repo = ruby/ruby AND (branch = master OR branch =~ /^ruby_\d_\d$/)) OR repo != ruby/ruby
+ - "make -s test TESTOPTS=--color=never"
+ - "make -s $JOBS test-all -o exts TESTOPTS='-q --color=never --job-status=normal'"
+ - "make -s $JOBS test-spec MSPECOPT=-j"
+
+# Branch matrix. Not all branches are Travis-ready so we limit branches here.
+branches:
+ only:
+ - trunk
+ - ruby_2_2
+ - ruby_2_3
+ - ruby_2_4
+ - ruby_2_5
+ - /^feature\//
+ - /^bug\//
# We want to be notified when something happens.
notifications:
irc:
channels:
- "chat.freenode.net#ruby-core"
+ - "chat.freenode.net#ruby-ja"
on_success: change # [always|never|change] # default: always
on_failure: always # [always|never|change] # default: always
template:
- "%{message} by @%{author}: See %{build_url}"
- webhooks:
- urls:
- - secure: mRsoS/UbqDkKkW5p3AEqM27d4SZnV6Gsylo3bm8T/deltQzTsGzZwrm7OIBXZv0UFZdE68XmPlyHfZFLSP2V9QZ7apXMf9/vw0GtcSe1gchtnjpAPF6lYBn7nMCbVPPx9cS0dwL927fjdRM1vj7IKZ2bk4F0lAJ25R25S6teqdk= # ruby-lang slack: ruby/simpler-alerts-bot (travis)
- on_success: never
+ slack:
+ rooms:
+ - secure: i1GLETSKye85ea6dGNA3MxI/5myChmMFiZtBd5C69xK+s1sBFqEgOSbaSf9KHc0CYrHVyNhQMaZRruieV7xS+6Pfs0Zvxf1DO6QQTWC2KhkqwFDLvZncAzjoyASdR90hbr+iRPOngQ+HJuE94zemALAwEqNAinzA74PMiJXktqY= # ruby:<token>#commits
+ - secure: ah7UEHBvncXT7bM5mvYIQAO+tIyV/wl7nXLb7wQD16dO2v8Gragy0mWjB79Q09hrrMGmp6H9bCDpdGS80boIA5EHaHoG4QaP0i9bsSt8U2AMWgZtfyIgQKJ4H2kXkGlrjO+AXTgnIkP7LNjdgAVUUTGQPb26T3QmoN2Splt+fIQ= # ruby:<token>#alerts
+ on_pull_requests: false
+ on_success: change
on_failure: always
email:
- - jaruga@ruby-lang.org
+ - ko1c-failure@atdot.net
+
+# Local Variables:
+# mode: YAML
+# coding: utf-8-unix
+# indent-tabs-mode: nil
+# tab-width: 4
+# fill-column: 79
+# default-justification: full
+# End:
diff --git a/BSDL b/BSDL
index 66d93598aa..a009caefea 100644
--- a/BSDL
+++ b/BSDL
@@ -4,10 +4,10 @@ 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.
+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.
+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
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 13df6087ca..ffdf2dd4b8 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1 +1,4 @@
-See ["Contributing to Ruby"](https://docs.ruby-lang.org/en/master/contributing_md.html), which includes setup and build instructions.
+Please see the [official issue tracker] and wiki [HowToContribute].
+
+[official issue tracker]: https://bugs.ruby-lang.org
+[HowToContribute]: https://bugs.ruby-lang.org/projects/ruby/wiki/HowToContribute
diff --git a/COPYING b/COPYING
index 48e5a96de7..f06056fb45 100644
--- a/COPYING
+++ b/COPYING
@@ -2,55 +2,55 @@ Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
You can redistribute it and/or modify it under either the terms of the
2-clause BSDL (see the file BSDL), or the conditions below:
-1. You may make and give away verbatim copies of the source form of the
- software without restriction, provided that you duplicate all of the
- original copyright notices and associated disclaimers.
+ 1. You may make and give away verbatim copies of the source form of the
+ software without restriction, provided that you duplicate all of the
+ original copyright notices and associated disclaimers.
-2. You may modify your copy of the software in any way, provided that
- you do at least ONE of the following:
+ 2. You may modify your copy of the software in any way, provided that
+ you do at least ONE of the following:
- a. place your modifications in the Public Domain or otherwise
- make them Freely Available, such as by posting said
- modifications to Usenet or an equivalent medium, or by allowing
- the author to include your modifications in the software.
+ a) place your modifications in the Public Domain or otherwise
+ make them Freely Available, such as by posting said
+ modifications to Usenet or an equivalent medium, or by allowing
+ the author to include your modifications in the software.
- b. use the modified software only within your corporation or
- organization.
+ b) use the modified software only within your corporation or
+ organization.
- c. give non-standard binaries non-standard names, with
- instructions on where to get the original software distribution.
+ c) give non-standard binaries non-standard names, with
+ instructions on where to get the original software distribution.
- d. make other distribution arrangements with the author.
+ d) make other distribution arrangements with the author.
-3. You may distribute the software in object code or binary form,
- provided that you do at least ONE of the following:
+ 3. You may distribute the software in object code or binary form,
+ provided that you do at least ONE of the following:
- a. distribute the binaries and library files of the software,
- together with instructions (in the manual page or equivalent)
- on where to get the original distribution.
+ a) distribute the binaries and library files of the software,
+ together with instructions (in the manual page or equivalent)
+ on where to get the original distribution.
- b. accompany the distribution with the machine-readable source of
- the software.
+ b) accompany the distribution with the machine-readable source of
+ the software.
- c. give non-standard binaries non-standard names, with
- instructions on where to get the original software distribution.
+ c) give non-standard binaries non-standard names, with
+ instructions on where to get the original software distribution.
- d. make other distribution arrangements with the author.
+ d) make other distribution arrangements with the author.
-4. You may modify and include the part of the software into any other
- software (possibly commercial). But some files in the distribution
- are not written by the author, so that they are not under these terms.
+ 4. You may modify and include the part of the software into any other
+ software (possibly commercial). But some files in the distribution
+ are not written by the author, so that they are not under these terms.
- For the list of those files and their copying conditions, see the
- file LEGAL.
+ For the list of those files and their copying conditions, see the
+ file LEGAL.
-5. The scripts and library files supplied as input to or produced as
- output from the software do not automatically fall under the
- copyright of the software, but belong to whomever generated them,
- and may be sold commercially, and may be aggregated with this
- software.
+ 5. The scripts and library files supplied as input to or produced as
+ output from the software do not automatically fall under the
+ copyright of the software, but belong to whomever generated them,
+ and may be sold commercially, and may be aggregated with this
+ software.
-6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE.
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE.
diff --git a/COPYING.ja b/COPYING.ja
index 230376bc60..e50d01c8d1 100644
--- a/COPYING.ja
+++ b/COPYING.ja
@@ -2,50 +2,50 @@
ã¾ãŸã¯ä»¥ä¸‹ã«ç¤ºã™æ¡ä»¶ã§æœ¬ãƒ—ログラムをå†é…布ã§ãã¾ã™
2-clause BSDLã«ã¤ã„ã¦ã¯BSDLファイルをå‚ç…§ã—ã¦ä¸‹ã•ã„.
-1. 複製ã¯åˆ¶é™ãªã自由ã§ã™ï¼Ž
+ 1. 複製ã¯åˆ¶é™ãªã自由ã§ã™ï¼Ž
-2. ä»¥ä¸‹ã®æ¡ä»¶ã®ã„ãšã‚Œã‹ã‚’満ãŸã™æ™‚ã«æœ¬ãƒ—ログラムã®ã‚½ãƒ¼ã‚¹ã‚’
- 自由ã«å¤‰æ›´ã§ãã¾ã™ï¼Ž
+ 2. ä»¥ä¸‹ã®æ¡ä»¶ã®ã„ãšã‚Œã‹ã‚’満ãŸã™æ™‚ã«æœ¬ãƒ—ログラムã®ã‚½ãƒ¼ã‚¹ã‚’
+ 自由ã«å¤‰æ›´ã§ãã¾ã™ï¼Ž
- a. ãƒãƒƒãƒˆãƒ‹ãƒ¥ãƒ¼ã‚ºã«ãƒã‚¹ãƒˆã—ãŸã‚Šï¼Œä½œè€…ã«å¤‰æ›´ã‚’é€ä»˜ã™ã‚‹
- ãªã©ã®æ–¹æ³•ã§ï¼Œå¤‰æ›´ã‚’公開ã™ã‚‹ï¼Ž
+ (a) ãƒãƒƒãƒˆãƒ‹ãƒ¥ãƒ¼ã‚ºã«ãƒã‚¹ãƒˆã—ãŸã‚Šï¼Œä½œè€…ã«å¤‰æ›´ã‚’é€ä»˜ã™ã‚‹
+ ãªã©ã®æ–¹æ³•ã§ï¼Œå¤‰æ›´ã‚’公開ã™ã‚‹ï¼Ž
- b. 変更ã—ãŸæœ¬ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã‚’è‡ªåˆ†ã®æ‰€å±žã™ã‚‹çµ„織内部ã ã‘ã§
- 使ã†ï¼Ž
+ (b) 変更ã—ãŸæœ¬ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã‚’è‡ªåˆ†ã®æ‰€å±žã™ã‚‹çµ„織内部ã ã‘ã§
+ 使ã†ï¼Ž
- c. 変更点を明示ã—ãŸã†ãˆï¼Œã‚½ãƒ•トウェアã®åå‰ã‚’変更ã™ã‚‹ï¼Ž
- ãã®ã‚½ãƒ•トウェアをé…布ã™ã‚‹æ™‚ã«ã¯å¤‰æ›´å‰ã®æœ¬ãƒ—ログラ
- ãƒ ã‚‚åŒæ™‚ã«é…布ã™ã‚‹ï¼Žã¾ãŸã¯å¤‰æ›´å‰ã®æœ¬ãƒ—ログラムã®ã‚½ãƒ¼
- スã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
+ (c) 変更点を明示ã—ãŸã†ãˆï¼Œã‚½ãƒ•トウェアã®åå‰ã‚’変更ã™ã‚‹ï¼Ž
+ ãã®ã‚½ãƒ•トウェアをé…布ã™ã‚‹æ™‚ã«ã¯å¤‰æ›´å‰ã®æœ¬ãƒ—ログラ
+ ãƒ ã‚‚åŒæ™‚ã«é…布ã™ã‚‹ï¼Žã¾ãŸã¯å¤‰æ›´å‰ã®æœ¬ãƒ—ログラムã®ã‚½ãƒ¼
+ スã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
- d. ãã®ä»–ã®å¤‰æ›´æ¡ä»¶ã‚’作者ã¨åˆæ„ã™ã‚‹ï¼Ž
+ (d) ãã®ä»–ã®å¤‰æ›´æ¡ä»¶ã‚’作者ã¨åˆæ„ã™ã‚‹ï¼Ž
-3. ä»¥ä¸‹ã®æ¡ä»¶ã®ã„ãšã‚Œã‹ã‚’満ãŸã™æ™‚ã«æœ¬ãƒ—ログラムをコンパイ
- ルã—ãŸã‚ªãƒ–ジェクトコードや実行形å¼ã§ã‚‚é…布ã§ãã¾ã™ï¼Ž
+ 3. ä»¥ä¸‹ã®æ¡ä»¶ã®ã„ãšã‚Œã‹ã‚’満ãŸã™æ™‚ã«æœ¬ãƒ—ログラムをコンパイ
+ ルã—ãŸã‚ªãƒ–ジェクトコードや実行形å¼ã§ã‚‚é…布ã§ãã¾ã™ï¼Ž
- a. ãƒã‚¤ãƒŠãƒªã‚’å—ã‘å–ã£ãŸäººãŒã‚½ãƒ¼ã‚¹ã‚’入手ã§ãるよã†ã«ï¼Œ
- ソースã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
+ (a) ãƒã‚¤ãƒŠãƒªã‚’å—ã‘å–ã£ãŸäººãŒã‚½ãƒ¼ã‚¹ã‚’入手ã§ãるよã†ã«ï¼Œ
+ ソースã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
- b. 機械å¯èª­ãªã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’添付ã™ã‚‹ï¼Ž
+ (b) 機械å¯èª­ãªã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’添付ã™ã‚‹ï¼Ž
- c. 変更を行ã£ãŸãƒã‚¤ãƒŠãƒªã¯åå‰ã‚’変更ã—ãŸã†ãˆï¼Œã‚ªãƒªã‚¸ãƒŠ
- ルã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
+ (c) 変更を行ã£ãŸãƒã‚¤ãƒŠãƒªã¯åå‰ã‚’変更ã—ãŸã†ãˆï¼Œã‚ªãƒªã‚¸ãƒŠ
+ ルã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
- d. ãã®ä»–ã®é…布æ¡ä»¶ã‚’作者ã¨åˆæ„ã™ã‚‹ï¼Ž
+ (d) ãã®ä»–ã®é…布æ¡ä»¶ã‚’作者ã¨åˆæ„ã™ã‚‹ï¼Ž
-4. ä»–ã®ãƒ—ログラムã¸ã®å¼•用ã¯ã„ã‹ãªã‚‹ç›®çš„ã§ã‚れ自由ã§ã™ï¼ŽãŸ
- ã ã—,本プログラムã«å«ã¾ã‚Œã‚‹ä»–ã®ä½œè€…ã«ã‚ˆã‚‹ã‚³ãƒ¼ãƒ‰ã¯ï¼Œã
- れãžã‚Œã®ä½œè€…ã®æ„å‘ã«ã‚ˆã‚‹åˆ¶é™ãŒåŠ ãˆã‚‰ã‚Œã‚‹å ´åˆãŒã‚りã¾ã™ï¼Ž
+ 4. ä»–ã®ãƒ—ログラムã¸ã®å¼•用ã¯ã„ã‹ãªã‚‹ç›®çš„ã§ã‚れ自由ã§ã™ï¼ŽãŸ
+ ã ã—,本プログラムã«å«ã¾ã‚Œã‚‹ä»–ã®ä½œè€…ã«ã‚ˆã‚‹ã‚³ãƒ¼ãƒ‰ã¯ï¼Œã
+ れãžã‚Œã®ä½œè€…ã®æ„å‘ã«ã‚ˆã‚‹åˆ¶é™ãŒåŠ ãˆã‚‰ã‚Œã‚‹å ´åˆãŒã‚りã¾ã™ï¼Ž
- ãれらファイルã®ä¸€è¦§ã¨ãれãžã‚Œã®é…布æ¡ä»¶ãªã©ã«ä»˜ã„ã¦ã¯
- LEGALファイルをå‚ç…§ã—ã¦ãã ã•ã„.
+ ãれらファイルã®ä¸€è¦§ã¨ãれãžã‚Œã®é…布æ¡ä»¶ãªã©ã«ä»˜ã„ã¦ã¯
+ LEGALファイルをå‚ç…§ã—ã¦ãã ã•ã„.
-5. 本プログラムã¸ã®å…¥åŠ›ã¨ãªã‚‹ã‚¹ã‚¯ãƒªãƒ—トãŠã‚ˆã³ï¼Œæœ¬ãƒ—ログラ
- ムã‹ã‚‰ã®å‡ºåŠ›ã®æ¨©åˆ©ã¯æœ¬ãƒ—ログラムã®ä½œè€…ã§ã¯ãªã,ãれãž
- れã®å…¥å‡ºåŠ›ã‚’ç”Ÿæˆã—ãŸäººã«å±žã—ã¾ã™ï¼Žã¾ãŸï¼Œæœ¬ãƒ—ログラムã«
- 組ã¿è¾¼ã¾ã‚Œã‚‹ãŸã‚ã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã«ã¤ã„ã¦ã‚‚åŒæ§˜ã§ã™ï¼Ž
+ 5. 本プログラムã¸ã®å…¥åŠ›ã¨ãªã‚‹ã‚¹ã‚¯ãƒªãƒ—トãŠã‚ˆã³ï¼Œæœ¬ãƒ—ログラ
+ ムã‹ã‚‰ã®å‡ºåŠ›ã®æ¨©åˆ©ã¯æœ¬ãƒ—ログラムã®ä½œè€…ã§ã¯ãªã,ãれãž
+ れã®å…¥å‡ºåŠ›ã‚’ç”Ÿæˆã—ãŸäººã«å±žã—ã¾ã™ï¼Žã¾ãŸï¼Œæœ¬ãƒ—ログラムã«
+ 組ã¿è¾¼ã¾ã‚Œã‚‹ãŸã‚ã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã«ã¤ã„ã¦ã‚‚åŒæ§˜ã§ã™ï¼Ž
-6. 本プログラムã¯ç„¡ä¿è¨¼ã§ã™ï¼Žä½œè€…ã¯æœ¬ãƒ—ログラムをサãƒãƒ¼ãƒˆ
- ã™ã‚‹æ„å¿—ã¯ã‚りã¾ã™ãŒï¼Œãƒ—ログラム自身ã®ãƒã‚°ã‚ã‚‹ã„ã¯æœ¬ãƒ—
- ログラムã®å®Ÿè¡Œãªã©ã‹ã‚‰ç™ºç”Ÿã™ã‚‹ã„ã‹ãªã‚‹æå®³ã«å¯¾ã—ã¦ã‚‚責
- 任をæŒã¡ã¾ã›ã‚“.
+ 6. 本プログラムã¯ç„¡ä¿è¨¼ã§ã™ï¼Žä½œè€…ã¯æœ¬ãƒ—ログラムをサãƒãƒ¼ãƒˆ
+ ã™ã‚‹æ„å¿—ã¯ã‚りã¾ã™ãŒï¼Œãƒ—ログラム自身ã®ãƒã‚°ã‚ã‚‹ã„ã¯æœ¬ãƒ—
+ ログラムã®å®Ÿè¡Œãªã©ã‹ã‚‰ç™ºç”Ÿã™ã‚‹ã„ã‹ãªã‚‹æå®³ã«å¯¾ã—ã¦ã‚‚責
+ 任をæŒã¡ã¾ã›ã‚“.
diff --git a/LEGAL b/LEGAL
index e352c55ee5..0479751691 100644
--- a/LEGAL
+++ b/LEGAL
@@ -1,248 +1,159 @@
-# -*- rdoc -*-
-
-= LEGAL NOTICE INFORMATION
---------------------------
+LEGAL NOTICE INFORMATION
+------------------------
All the files in this distribution are covered under either the Ruby's
license (see the file COPYING) or public-domain except some files
mentioned below.
-[addr2line.c]
-
- A part of this file is from FreeBSD.
-
- >>>
- Copyright (c) 1986, 1988, 1991, 1993::
- The Regents of the University of California. All rights reserved.
-
- (c) UNIX System Laboratories, Inc.
-
- All or some portions of this file are derived from material licensed
- to the University of California by American Telephone and Telegraph
- Co. or Unix System Laboratories, Inc. and are reproduced herein with
- the permission of UNIX System Laboratories, Inc.
-
- 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.
- 4. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
-
- @(#)subr_prf.c 8.3 (Berkeley) 1/21/94
-
-
-[ccan/build_assert/build_assert.h]
-[ccan/check_type/check_type.h]
-[ccan/container_of/container_of.h]
-[ccan/str/str.h]
-
- These files are licensed under the {CC0}[https://creativecommons.org/choose/zero/].
-
-[ccan/list/list.h]
-
- This file is licensed under the {MIT License}[rdoc-label:label-MIT+License].
-
-[coroutine]
-
- Unless otherwise specified, these files are licensed under the
- {MIT License}[rdoc-label:label-MIT+License].
-
-[include/ruby/onigmo.h]
-[include/ruby/oniguruma.h]
-[regcomp.c]
-[regenc.c]
-[regenc.h]
-[regerror.c]
-[regexec.c]
-[regint.h]
-[regparse.c]
-[regparse.h]
-[enc/ascii.c]
-[enc/big5.c]
-[enc/cp949.c]
-[enc/emacs_mule.c]
-[enc/encdb.c]
-[enc/euc_jp.c]
-[enc/euc_kr.c]
-[enc/euc_tw.c]
-[enc/gb18030.c]
-[enc/gb2312.c]
-[enc/gbk.c]
-[enc/iso_8859_1.c]
-[enc/iso_8859_10.c]
-[enc/iso_8859_11.c]
-[enc/iso_8859_13.c]
-[enc/iso_8859_14.c]
-[enc/iso_8859_15.c]
-[enc/iso_8859_16.c]
-[enc/iso_8859_2.c]
-[enc/iso_8859_3.c]
-[enc/iso_8859_4.c]
-[enc/iso_8859_5.c]
-[enc/iso_8859_6.c]
-[enc/iso_8859_7.c]
-[enc/iso_8859_8.c]
-[enc/iso_8859_9.c]
-[enc/koi8_r.c]
-[enc/koi8_u.c]
-[enc/shift_jis.c]
-[enc/unicode.c]
-[enc/us_ascii.c]
-[enc/utf_16be.c]
-[enc/utf_16le.c]
-[enc/utf_32be.c]
-[enc/utf_32le.c]
-[enc/utf_8.c]
-[enc/windows_1251.c]
-[enc/windows_31j.c]
-
- Onigmo (Oniguruma-mod) LICENSE
-
- >>>
- Copyright (c) 2002-2009:: K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- Copyright (c) 2011-2014:: K.Takata <kentkt AT csc DOT jp>
- 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.
-
- Oniguruma LICENSE
-
- >>>
- Copyright (c) 2002-2009:: K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- 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.
-
- * https://github.com/k-takata/Onigmo/
- * https://github.com/kkos/oniguruma
- * https://svnweb.freebsd.org/ports/head/devel/oniguruma/
+ccan/build_assert/build_assert.h
+ccan/check_type/check_type.h
+ccan/container_of/container_of.h
+ccan/str/str.h
- When this software is partly used or it is distributed with Ruby,
- this of Ruby follows the license of Ruby.
+ These files are licensed under the CC0.
-[enc/windows_1250.c]
-[enc/windows_1252.c]
+ https://creativecommons.org/choose/zero/
- >>>
- Copyright (c) 2006-2007:: Byte <byte AT mail DOT kna DOT ru>
- K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- 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.
+ccan/list/list.h
-[enc/cesu_8.c]
-[enc/windows_1253.c]
-[enc/windows_1254.c]
-[enc/windows_1257.c]
-
- >>>
- Copyright (c) 2002-2007:: K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- All rights reserved.
+ This file is licensed under the MIT License.
- 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.
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
-[enc/trans/GB/GB12345%UCS.src]
-[enc/trans/GB/UCS%GB12345.src]
-[enc/trans/GB/GB2312%UCS.src]
-[enc/trans/GB/UCS%GB2312.src]
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
- These files have this explanatory texts.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+
+include/ruby/onigmo.h:
+include/ruby/oniguruma.h:
+regcomp.c:
+regenc.[ch]:
+regerror.c:
+regexec.c:
+regint.h:
+regparse.[ch]:
+enc/ascii.c
+enc/big5.c
+enc/cp949.c
+enc/emacs_mule.c
+enc/encdb.c
+enc/euc_jp.c
+enc/euc_kr.c
+enc/euc_tw.c
+enc/gb18030.c
+enc/gb2312.c
+enc/gbk.c
+enc/iso_8859_1.c
+enc/iso_8859_10.c
+enc/iso_8859_11.c
+enc/iso_8859_13.c
+enc/iso_8859_14.c
+enc/iso_8859_15.c
+enc/iso_8859_16.c
+enc/iso_8859_2.c
+enc/iso_8859_3.c
+enc/iso_8859_4.c
+enc/iso_8859_5.c
+enc/iso_8859_6.c
+enc/iso_8859_7.c
+enc/iso_8859_8.c
+enc/iso_8859_9.c
+enc/koi8_r.c
+enc/koi8_u.c
+enc/shift_jis.c
+enc/unicode.c
+enc/us_ascii.c
+enc/utf_16be.c
+enc/utf_16le.c
+enc/utf_32be.c
+enc/utf_32le.c
+enc/utf_8.c
+enc/windows_1251.c
+
+Onigmo (Oniguruma-mod) LICENSE
+------------------------------
+
+/*-
+ * Copyright (c) 2002-2009 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2011-2014 K.Takata <kentkt AT csc DOT jp>
+ * 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.
+ */
+
+
+Oniguruma LICENSE
+-----------------
+
+/*-
+ * Copyright (c) 2002-2009 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * 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.
+ */
+
+https://github.com/k-takata/Onigmo/
+https://github.com/kkos/oniguruma
+https://svnweb.freebsd.org/ports/head/devel/oniguruma/
+
+ When this software is partly used or it is distributed with Ruby,
+ this of Ruby follows the license of Ruby.
+
+enc/trans/GB/GB12345%UCS.src:
+enc/trans/GB/UCS%GB12345.src:
+enc/trans/GB/GB2312%UCS.src:
+enc/trans/GB/UCS%GB2312.src:
- >>>
This mapping data was created from files provided by Unicode, Inc.
(The Unicode Consortium). The files were used to create a product supporting
Unicode, as explicitly permitted in the files' copyright notices.
@@ -250,82 +161,56 @@ mentioned below.
files for any particular purpose, and has ceased to publish the files many
years ago.
-[enc/trans/JIS/JISX0201-KANA%UCS.src]
-[enc/trans/JIS/JISX0208\@1990%UCS.src]
-[enc/trans/JIS/JISX0212%UCS.src]
-[enc/trans/JIS/UCS%JISX0201-KANA.src]
-[enc/trans/JIS/UCS%JISX0208@1990.src]
-[enc/trans/JIS/UCS%JISX0212.src]
+enc/trans/JIS/JISX0201-KANA%UCS.src:
+enc/trans/JIS/JISX0208@1990%UCS.src:
+enc/trans/JIS/JISX0212%UCS.src:
+enc/trans/JIS/UCS%JISX0201-KANA.src:
+enc/trans/JIS/UCS%JISX0208@1990.src:
+enc/trans/JIS/UCS%JISX0212.src:
- These files are copyrighted as the following.
-
- >>>
© 2015 Unicode®, Inc.
-
For terms of use, see http://www.unicode.org/terms_of_use.html
-[enc/trans/JIS/JISX0213-1%UCS@BMP.src]
-[enc/trans/JIS/JISX0213-1%UCS@SIP.src]
-[enc/trans/JIS/JISX0213-2%UCS@BMP.src]
-[enc/trans/JIS/JISX0213-2%UCS@SIP.src]
-
- These files are copyrighted as the following.
-
- >>>
- Copyright (C) 2001:: earthian@tama.or.jp, All Rights Reserved.
- Copyright (C) 2001:: I'O, All Rights Reserved.
- Copyright (C) 2006:: Project X0213, All Rights Reserved.
- You can use, modify, distribute this table freely.
-
-[enc/trans/JIS/UCS@BMP%JISX0213-1.src]
-[enc/trans/JIS/UCS@BMP%JISX0213-2.src]
-[enc/trans/JIS/UCS@SIP%JISX0213-1.src]
-[enc/trans/JIS/UCS@SIP%JISX0213-2.src]
-
- These files are copyrighted as the following.
-
- >>>
- Copyright (C) 2001:: earthian@tama.or.jp, All Rights Reserved.
- Copyright (C) 2001:: I'O, All Rights Reserved.
- You can use, modify, distribute this table freely.
-
-[enc/trans/ucm/glibc-BIG5-2.3.3.ucm]
-[enc/trans/ucm/glibc-BIG5HKSCS-2.3.3.ucm]
-
- >>>
- Copyright (C) 2001-2005:: International Business Machines
- Corporation and others. All Rights Reserved.
+enc/trans/JIS/JISX0213-1%UCS@BMP.src:
+enc/trans/JIS/JISX0213-1%UCS@SIP.src:
+enc/trans/JIS/JISX0213-2%UCS@BMP.src:
+enc/trans/JIS/JISX0213-2%UCS@SIP.src:
-[enc/trans/ucm/windows-950-2000.ucm]
-[enc/trans/ucm/windows-950_hkscs-2001.ucm]
+ Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
+ Copyright (C) 2001 I'O, All Rights Reserved.
+ Copyright (C) 2006 Project X0213, All Rights Reserved.
+ You can use, modify, distribute this table freely.
- >>>
- Copyright (C) 2001-2002:: International Business Machines
- Corporation and others. All Rights Reserved.
+enc/trans/JIS/UCS@BMP%JISX0213-1.src:
+enc/trans/JIS/UCS@BMP%JISX0213-2.src:
+enc/trans/JIS/UCS@SIP%JISX0213-1.src:
+enc/trans/JIS/UCS@SIP%JISX0213-2.src:
+ Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
+ Copyright (C) 2001 I'O, All Rights Reserved.
+ You can use, modify, distribute this table freely.
-[configure]
+configure:
This file is free software.
- >>>
- Copyright (C) 1992-1996, 1998-2012:: Free Software Foundation, Inc.
+ Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
-[tool/config.guess]
-[tool/config.sub]
+tool/config.guess:
+tool/config.sub:
As long as you distribute these files with the file configure, they
are covered under the Ruby's license.
- >>>
- Copyright 1992-2018:: Free Software Foundation, Inc.
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999
+ Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
+ the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
@@ -334,85 +219,54 @@ mentioned below.
General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, see <https://www.gnu.org/licenses/>.
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception to the GNU General Public License, if you
distribute this file as part of a program that contains a
configuration script generated by Autoconf, you may include it under
- the same distribution terms that you use for the rest of that
- program. This Exception is an additional permission under section 7
- of the GNU General Public License, version 3 ("GPLv3").
+ the same distribution terms that you use for the rest of that program.
-[tool/lib/test/*]
-[tool/lib/core_assertions.rb]
+parse.c:
- Some of methods on these files are based on MiniTest 4. MiniTest 4 is
- distributed under the MIT License.
-
- >>>
- Copyright (c) Ryan Davis, seattle.rb
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- 'Software'), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-[parse.c]
-[parse.h]
-
- These files are licensed under the GPL, but are incorporated into Ruby and
+ This file is licensed under the GPL, but is incorporated into Ruby and
redistributed under the terms of the Ruby license, as permitted by the
exception to the GPL below.
- >>>
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018:: Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
- As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
+ /* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison.
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
-[missing/dtoa.c]
+util.c (partly):
- This file is under these licenses.
-
- >>>
- Copyright (c) 1991, 2000, 2001:: by Lucent Technologies.
+ Copyright (c) 1991, 2000, 2001 by Lucent Technologies.
Permission to use, copy, modify, and distribute this software for any
purpose without fee is hereby granted, provided that this entire notice
@@ -425,74 +279,71 @@ mentioned below.
REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
- >>>
- Copyright (c) 2004-2008:: David Schultz <das@FreeBSD.ORG>
- 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.
-
-[win32/win32.c]
-[include/ruby/win32.h]
+win32/win32.[ch]:
You can apply the Artistic License to these files. (or GPL,
alternatively)
- >>>
- Copyright (c) 1993:: Intergraph Corporation
+ Copyright (c) 1993, Intergraph Corporation
You may distribute under the terms of either the GNU General Public
License or the Artistic License, as specified in the perl README file.
-[missing/mt19937.c]
+util.c (partly):
+
+ Copyright (c) 2004-2008 David Schultz <das@FreeBSD.ORG>
+ 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.
+
+random.c
This file is under the new-style BSD license.
- >>>
- A C-program for MT19937, with initialization improved 2002/2/10.::
+ A C-program for MT19937, with initialization improved 2002/2/10.
Coded by Takuji Nishimura and Makoto Matsumoto.
-
This is a faster version by taking Shawn Cokus's optimization,
Matthe Bellew's simplification, Isaku Wada's real version.
Before using, initialize the state by using init_genrand(seed)
or init_by_array(init_key, key_length).
- Copyright (C) 1997 - 2002:: Makoto Matsumoto and Takuji Nishimura,
- All rights reserved.
+ Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
+ 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.
+ 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.
+ 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.
- 3. The names of its contributors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
+ 3. The names of its contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
@@ -513,13 +364,12 @@ mentioned below.
The Wayback Machine url: http://web.archive.org/web/19990429082237/http://www.math.keio.ac.jp/matumoto/emt.html
-[missing/procstat_vm.c]
+vm_dump.c:procstat_vm
This file is under the new-style BSD license.
- >>>
- Copyright (c) 2007:: Robert N. M. Watson
- All rights reserved.
+ Copyright (c) 2007 Robert N. M. Watson
+ All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
@@ -544,65 +394,146 @@ mentioned below.
$FreeBSD: head/usr.bin/procstat/procstat_vm.c 261780 2014-02-11 21:57:37Z jhb $
-[vsnprintf.c]
+vsnprintf.c:
- This file is under the {old-style BSD license}[rdoc-label:label-Old-style+BSD+license].
+ This file is under the old-style BSD license. Note that the
+ paragraph 3 below is now null and void.
- >>>
- Copyright (c) 1990, 1993::
- The Regents of the University of California. All rights reserved.
+ Copyright (c) 1990, 1993
+ The Regents of the University of California. All rights reserved.
This code is derived from software contributed to Berkeley by
Chris Torek.
-[st.c]
-[strftime.c]
-[include/ruby/st.h]
-[missing/acosh.c]
-[missing/alloca.c]
-[missing/erf.c]
-[missing/hypot.c]
-[missing/lgamma_r.c]
-[missing/memcmp.c]
-[missing/memmove.c]
-[missing/strchr.c]
-[missing/strerror.c]
-[missing/strstr.c]
-[missing/tgamma.c]
-[ext/date/date_strftime.c]
-[ext/digest/sha1/sha1.c]
-[ext/digest/sha1/sha1.h]
+ 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.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
+
+ IMPORTANT NOTE:
+ --------------
+ From ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
+ paragraph 3 above is now null and void.
+
+st.c:
+strftime.c:
+include/ruby/st.h:
+missing/acosh.c:
+missing/alloca.c:
+missing/dup2.c:
+missing/erf.c:
+missing/finite.c:
+missing/hypot.c:
+missing/isinf.c:
+missing/isnan.c:
+missing/lgamma_r.c:
+missing/memcmp.c:
+missing/memmove.c:
+missing/strchr.c:
+missing/strerror.c:
+missing/strstr.c:
+missing/tgamma.c:
+ext/date/date_strftime.c:
+ext/digest/sha1/sha1.[ch]:
+ext/sdbm/_sdbm.c:
+ext/sdbm/sdbm.h:
These files are all under public domain.
-[missing/crypt.c]
+missing/crypt.c:
- This file is under the {old-style BSD license}[rdoc-label:label-Old-style+BSD+license].
+ This file is under the old-style BSD license. Note that the
+ paragraph 3 below is now null and void.
- >>>
- Copyright (c) 1989, 1993::
- The Regents of the University of California. All rights reserved.
+ Copyright (c) 1989, 1993
+ The Regents of the University of California. All rights reserved.
This code is derived from software contributed to Berkeley by
Tom Truscott.
-[missing/setproctitle.c]
+ 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.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- This file is under the {old-style BSD license}[rdoc-label:label-Old-style+BSD+license].
+missing/setproctitle.c
- >>>
- Copyright 2003:: Damien Miller
- Copyright (c) 1983, 1995-1997:: Eric P. Allman
- Copyright (c) 1988, 1993::
- The Regents of the University of California. All rights reserved.
+ This file is under the old-style BSD license. Note that the
+ paragraph 3 below is now null and void.
-[missing/strlcat.c]
-[missing/strlcpy.c]
+ Copyright 2003 Damien Miller
+ Copyright (c) 1983, 1995-1997 Eric P. Allman
+ Copyright (c) 1988, 1993
+ The Regents of the University of California. 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.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
+
+missing/strlcat.c
+missing/strlcpy.c
These files are under an ISC-style license.
- >>>
- Copyright (c) 1998, 2015:: Todd C. Miller <Todd.Miller@courtesan.com>
+ Copyright (c) 1998, 2015 Todd C. Miller <Todd.Miller@courtesan.com>
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -616,26 +547,23 @@ mentioned below.
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-[missing/langinfo.c]
+missing/langinfo.c
This file is from http://www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c.
Ruby uses a modified version. The file contains the following
author/copyright notice:
- >>>
- Markus.Kuhn@cl.cam.ac.uk -- 2002-03-11::
- Permission to use, copy, modify, and distribute this software
- for any purpose and without fee is hereby granted. The author
- disclaims all warranties with regard to this software.
+ Markus.Kuhn@cl.cam.ac.uk -- 2002-03-11
+ Permission to use, copy, modify, and distribute this software
+ for any purpose and without fee is hereby granted. The author
+ disclaims all warranties with regard to this software.
-[ext/digest/md5/md5.c]
-[ext/digest/md5/md5.h]
+ext/digest/md5/md5.[ch]:
These files are under the following license. Ruby uses modified
versions of them.
- >>>
- Copyright (C) 1999, 2000:: Aladdin Enterprises. All rights reserved.
+ Copyright (C) 1999, 2000 Aladdin Enterprises. All rights reserved.
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -656,27 +584,23 @@ mentioned below.
L. Peter Deutsch
ghost@aladdin.com
-[ext/digest/rmd160/rmd160.c]
-[ext/digest/rmd160/rmd160.h]
+ext/digest/rmd160/rmd160.[ch]:
These files have the following copyright information, and by the
author we are allowed to use it under the new-style BSD license.
- >>>
- AUTHOR:: Antoon Bosselaers, ESAT-COSIC
+ AUTHOR: Antoon Bosselaers, ESAT-COSIC
(Arranged for libc by Todd C. Miller)
- DATE:: 1 March 1996
+ DATE: 1 March 1996
- Copyright (c):: Katholieke Universiteit Leuven
+ Copyright (c) Katholieke Universiteit Leuven
1996, All Rights Reserved
-[ext/digest/sha2/sha2.c]
-[ext/digest/sha2/sha2.h]
+ext/digest/sha2/sha2.[ch]:
These files are under the new-style BSD license.
- >>>
- Copyright 2000:: Aaron D. Gifford. All rights reserved.
+ Copyright 2000 Aaron D. Gifford. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
@@ -702,97 +626,96 @@ mentioned below.
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-[ext/json/generator/generator.c]
+ext/json/generator/generator.c:
- The file contains the following copyright notice.
+ Copyright 2001-2004 Unicode, Inc.
- >>>
- Copyright 2001-2004:: Unicode, Inc.
+ Disclaimer
- Disclaimer::
+ This source code is provided as is by Unicode, Inc. No claims are
+ made as to fitness for any particular purpose. No warranties of any
+ kind are expressed or implied. The recipient agrees to determine
+ applicability of information provided. If this file has been
+ purchased on magnetic or optical media from Unicode, Inc., the
+ sole remedy for any claim will be exchange of defective media
+ within 90 days of receipt.
- This source code is provided as is by Unicode, Inc. No claims are
- made as to fitness for any particular purpose. No warranties of any
- kind are expressed or implied. The recipient agrees to determine
- applicability of information provided. If this file has been
- purchased on magnetic or optical media from Unicode, Inc., the
- sole remedy for any claim will be exchange of defective media
- within 90 days of receipt.
+ Limitations on Rights to Redistribute This Code
- Limitations on Rights to Redistribute This Code::
+ Unicode, Inc. hereby grants the right to freely use the information
+ supplied in this file in the creation of products supporting the
+ Unicode Standard, and to make copies of this file in any form
+ for internal or external distribution as long as this notice
+ remains attached.
- Unicode, Inc. hereby grants the right to freely use the information
- supplied in this file in the creation of products supporting the
- Unicode Standard, and to make copies of this file in any form
- for internal or external distribution as long as this notice
- remains attached.
-
-[ext/nkf/nkf-utf8/config.h]
-[ext/nkf/nkf-utf8/nkf.c]
-[ext/nkf/nkf-utf8/utf8tbl.c]
+ext/nkf/nkf-utf8/config.h:
+ext/nkf/nkf-utf8/nkf.c:
+ext/nkf/nkf-utf8/utf8tbl.c:
These files are under the following license. So to speak, it is
copyrighted semi-public-domain software.
- >>>
- Copyright (C) 1987:: Fujitsu LTD. (Itaru ICHIKAWA)
-
- Everyone is permitted to do anything on this program
- including copying, modifying, improving,
- as long as you don't try to pretend that you wrote it.
- i.e., the above copyright notice has to appear in all copies.
- Binary distribution requires original version messages.
- You don't have to ask before copying, redistribution or publishing.
- THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
-
-[ext/psych]
-[test/psych]
-
- The files under these directories are under the following license.
-
- >>>
- Copyright 2009:: Aaron Patterson, et al.
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the 'Software'), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
-[ext/pty/pty.c]
-
- >>>
- C) Copyright 1998:: by Akinori Ito.
-
- This software may be redistributed freely for this purpose, in full
- or in part, provided that this entire copyright notice is included
- on any copies of this software and applications and derivations thereof.
-
- This software is provided on an "as is" basis, without warranty of any
- kind, either expressed or implied, as to any matter including, but not
- limited to warranty of fitness of purpose, or merchantability, or
- results obtained from use of this software.
-
-[ext/socket/addrinfo.h]
-[ext/socket/getaddrinfo.c]
-[ext/socket/getnameinfo.c]
+ Copyright (C) 1987, Fujitsu LTD. (Itaru ICHIKAWA)
+ Everyone is permitted to do anything on this program
+ including copying, modifying, improving,
+ as long as you don't try to pretend that you wrote it.
+ i.e., the above copyright notice has to appear in all copies.
+ Binary distribution requires original version messages.
+ You don't have to ask before copying, redistribution or publishing.
+ THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
+
+ext/psych:
+test/psych:
+
+ Copyright 2009 Aaron Patterson, et al.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the 'Software'), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+ext/psych/yaml:
+
+ Copyright (c) 2006 Kirill Simonov
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+ext/socket/addrinfo.h:
+ext/socket/getaddrinfo.c:
+ext/socket/getnameinfo.c:
These files are under the new-style BSD license.
- >>>
- Copyright (C) 1995, 1996, 1997, 1998, and 1999:: WIDE Project.
+ Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -819,16 +742,15 @@ mentioned below.
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-[ext/win32ole/win32ole.c]
+ext/win32ole/win32ole.c:
You can apply the Artistic License to this file. (or GPL,
alternatively)
- >>>
- (c) 1995:: Microsoft Corporation. All rights reserved.
+ (c) 1995 Microsoft Corporation. All rights reserved.
Developed by ActiveWare Internet Corp., http://www.ActiveWare.com
- Other modifications Copyright (c) 1997, 1998:: by Gurusamy Sarathy
+ Other modifications Copyright (c) 1997, 1998 by Gurusamy Sarathy
<gsar@umich.edu> and Jan Dubois <jan.dubois@ibm.net>
You may distribute under the terms of either the GNU General Public
@@ -837,17 +759,16 @@ mentioned below.
The Wayback Machine url: http://web.archive.org/web/19970607104352/http://www.activeware.com:80/
-[lib/rdoc/generator/template/darkfish/css/fonts.css]
+lib/rdoc/generator/template/darkfish/css/fonts.css:
- This file is licensed under the {SIL Open Font License}[http://scripts.sil.org/OFL].
+ This file is licensed under the SIL Open Font License.
-[spec/mspec]
-[spec/ruby]
+ http://scripts.sil.org/OFL
- The files under these directories are under the following license.
+spec/mspec:
+spec/ruby:
- >>>
- Copyright (c) 2008:: Engine Yard, Inc. All rights reserved.
+ Copyright (c) 2008 Engine Yard, Inc. All rights reserved.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
@@ -870,224 +791,60 @@ mentioned below.
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
-[lib/rubygems.rb]
-[lib/rubygems]
-[test/rubygems]
-
- RubyGems is under the following license.
-
- >>>
- RubyGems is copyrighted free software by Chad Fowler, Rich Kilmer, Jim
- Weirich and others. You can redistribute it and/or modify it under
- either the terms of the {MIT license}[rdoc-label:label-MIT+License], or the conditions
- below:
-
- 1. You may make and give away verbatim copies of the source form of the
- software without restriction, provided that you duplicate all of the
- original copyright notices and associated disclaimers.
-
- 2. You may modify your copy of the software in any way, provided that
- you do at least ONE of the following:
+lib/rubygems.rb:
+lib/rubygems:
+test/rubygems:
- a. place your modifications in the Public Domain or otherwise
- make them Freely Available, such as by posting said
- modifications to Usenet or an equivalent medium, or by allowing
- the author to include your modifications in the software.
+ RubyGems is copyrighted free software by Chad Fowler, Rich Kilmer, Jim
+ Weirich and others. You can redistribute it and/or modify it under
+ either the terms of the MIT license (see the file MIT.txt), or the
+ conditions below:
- b. use the modified software only within your corporation or
- organization.
+ 1. You may make and give away verbatim copies of the source form of the
+ software without restriction, provided that you duplicate all of the
+ original copyright notices and associated disclaimers.
- c. give non-standard executables non-standard names, with
- instructions on where to get the original software distribution.
+ 2. You may modify your copy of the software in any way, provided that
+ you do at least ONE of the following:
- d. make other distribution arrangements with the author.
+ a. place your modifications in the Public Domain or otherwise
+ make them Freely Available, such as by posting said
+ modifications to Usenet or an equivalent medium, or by allowing
+ the author to include your modifications in the software.
- 3. You may distribute the software in object code or executable
- form, provided that you do at least ONE of the following:
+ b. use the modified software only within your corporation or
+ organization.
- a. distribute the executables and library files of the software,
- together with instructions (in the manual page or equivalent)
- on where to get the original distribution.
+ c. give non-standard executables non-standard names, with
+ instructions on where to get the original software distribution.
- b. accompany the distribution with the machine-readable source of
- the software.
+ d. make other distribution arrangements with the author.
- c. give non-standard executables non-standard names, with
- instructions on where to get the original software distribution.
+ 3. You may distribute the software in object code or executable
+ form, provided that you do at least ONE of the following:
- d. make other distribution arrangements with the author.
+ a. distribute the executables and library files of the software,
+ together with instructions (in the manual page or equivalent)
+ on where to get the original distribution.
- 4. You may modify and include the part of the software into any other
- software (possibly commercial).
+ b. accompany the distribution with the machine-readable source of
+ the software.
- 5. The scripts and library files supplied as input to or produced as
- output from the software do not automatically fall under the
- copyright of the software, but belong to whomever generated them,
- and may be sold commercially, and may be aggregated with this
- software.
+ c. give non-standard executables non-standard names, with
+ instructions on where to get the original software distribution.
- 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE.
+ d . make other distribution arrangements with the author.
-[lib/bundler]
-[lib/bundler.rb]
-[spec/bundler]
+ 4. You may modify and include the part of the software into any other
+ software (possibly commercial).
- Bundler is under the following license.
+ 5. The scripts and library files supplied as input to or produced as
+ output from the software do not automatically fall under the
+ copyright of the software, but belong to whomever generated them,
+ and may be sold commercially, and may be aggregated with this
+ software.
- >>>
- Portions copyright (c) 2010:: Andre Arko
- Portions copyright (c) 2009:: Engine Yard
-
- {MIT License}[rdoc-label:label-MIT+License]
-
-[lib/bundler/vendor/thor]
-
- Thor is under the following license.
-
- >>>
- Copyright (c) 2008 Yehuda Katz, Eric Hodel, et al.
-
- {MIT License}[rdoc-label:label-MIT+License]
-
-[lib/rubygems/resolver/molinillo]
-
- molinillo is under the following license.
-
- >>>
- Copyright (c) 2014 Samuel E. Giddins segiddins@segiddins.me
-
- {MIT License}[rdoc-label:label-MIT+License]
-
-[lib/bundler/vendor/pub_grub]
-
- pub_grub is under the following license.
-
- >>>
- Copyright (c) 2018 John Hawthorn
-
- {MIT License}[rdoc-label:label-MIT+License]
-
-[lib/bundler/vendor/connection_pool]
-
- connection_pool is under the following license.
-
- >>>
- Copyright (c) 2011 Mike Perham
-
- {MIT License}[rdoc-label:label-MIT+License]
-
-[lib/bundler/vendor/net-http-persistent]
-
- net-http-persistent is under the following license.
-
- >>>
- Copyright (c) Eric Hodel, Aaron Patterson
-
- {MIT License}[rdoc-label:label-MIT+License]
-
-[lib/did_you_mean]
-[lib/did_you_mean.rb]
-[test/did_you_mean]
-
- did_you_mean is under the following license.
-
- >>>
- Copyright (c) 2014-2016 Yuki Nishijima
-
- {MIT License}[rdoc-label:label-MIT+License]
-
-[lib/error_highlight]
-[lib/error_highlight.rb]
-[test/error_highlight]
-
- error_highlight is under the following license.
-
- >>>
- Copyright (c) 2021 Yusuke Endoh
-
- {MIT License}[rdoc-label:label-MIT+License]
-
-[benchmark/so_ackermann.rb]
-[benchmark/so_array.rb]
-[benchmark/so_binary_trees.rb]
-[benchmark/so_concatenate.rb]
-[benchmark/so_count_words.yml]
-[benchmark/so_exception.rb]
-[benchmark/so_fannkuch.rb]
-[benchmark/so_fasta.rb]
-[benchmark/so_k_nucleotide.yml]
-[benchmark/so_lists.rb]
-[benchmark/so_mandelbrot.rb]
-[benchmark/so_matrix.rb]
-[benchmark/so_meteor_contest.rb]
-[benchmark/so_nbody.rb]
-[benchmark/so_nested_loop.rb]
-[benchmark/so_nsieve.rb]
-[benchmark/so_nsieve_bits.rb]
-[benchmark/so_object.rb]
-[benchmark/so_partial_sums.rb]
-[benchmark/so_pidigits.rb]
-[benchmark/so_random.rb]
-[benchmark/so_reverse_complement.yml]
-[benchmark/so_sieve.rb]
-[benchmark/so_spectralnorm.rb]
-
- These files are very old copy of then-called "The Great Computer Language
- Shootout". LEGAL SITUATION OF THESE FILES ARE UNCLEAR because the original
- site has been lost. Upstream diverged to delete several benchmarks listed
- above.
-
-== MIT License
->>>
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-== Old-style BSD license
->>>
- 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.
- 3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
-
- IMPORTANT NOTE::
-
- From ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
- paragraph 3 above is now null and void.
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE.
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000000..25075f5900
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,531 @@
+SHELL = /bin/sh
+NULLCMD = @NULLCMD@
+n=$(NULLCMD)
+ECHO1 = $(V:1=$n)
+RUNCMD = $(SHELL)
+CDPATH = .
+CHDIR = @CHDIR@
+exec = exec
+NULL = /dev/null
+PATH_SEPARATOR = @PATH_SEPARATOR@
+
+#### Start of system configuration section. ####
+
+srcdir = @srcdir@
+top_srcdir = $(srcdir)
+hdrdir = $(srcdir)/include
+PLATFORM_DIR = @PLATFORM_DIR@
+
+CC = @CC@
+CPP = @CPP@
+LD = @LD@
+YACC = bison
+PURIFY =
+AUTOCONF = autoconf
+ACLOCAL = aclocal
+CONFIGURE = @CONFIGURE@
+@SET_MAKE@
+MKFILES = @MAKEFILES@
+BASERUBY = @BASERUBY@
+HAVE_BASERUBY = @HAVE_BASERUBY@
+TEST_RUNNABLE = @TEST_RUNNABLE@
+CROSS_COMPILING = @CROSS_COMPILING@
+DOXYGEN = @DOXYGEN@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+bindir = @bindir@
+sbindir = @sbindir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+datarootdir = @datarootdir@
+datadir = @datadir@
+arch = @arch@
+sitearch = @sitearch@
+sitedir = @sitedir@
+archlibdir = @archlibdir@
+ruby_version = @ruby_version@
+
+TESTUI = console
+TESTS =
+INSTALLDOC = @INSTALLDOC@
+DOCTARGETS = @RDOCTARGET@ @CAPITARGET@
+
+EXTOUT = @EXTOUT@
+arch_hdrdir = $(EXTOUT)/include/$(arch)
+VPATH = $(arch_hdrdir)/ruby:$(hdrdir)/ruby:$(srcdir):$(srcdir)/missing
+
+empty =
+CC_VERSION = @CC_VERSION@
+OUTFLAG = @OUTFLAG@$(empty)
+COUTFLAG = @COUTFLAG@$(empty)
+ARCH_FLAG = @ARCH_FLAG@
+CFLAGS_NO_ARCH = @CFLAGS@
+CFLAGS = $(CFLAGS_NO_ARCH) $(ARCH_FLAG)
+cflags = @cflags@
+optflags = @optflags@
+debugflags = @debugflags@
+warnflags = @warnflags@ @strict_warnflags@
+cppflags = @cppflags@
+XCFLAGS = @XCFLAGS@
+CPPFLAGS = @CPPFLAGS@ $(INCFLAGS)
+LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
+EXTLDFLAGS = @EXTLDFLAGS@
+XLDFLAGS = @XLDFLAGS@ $(EXTLDFLAGS)
+EXTLIBS =
+LIBS = @LIBS@ $(EXTLIBS)
+MISSING = @LIBOBJS@ @ALLOCA@
+ENABLE_SHARED = @ENABLE_SHARED@
+LDSHARED = @LIBRUBY_LDSHARED@
+DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(XLDFLAGS) $(ARCH_FLAG)
+SOLIBS = @SOLIBS@
+ENABLE_DEBUG_ENV = @ENABLE_DEBUG_ENV@
+MAINLIBS = @MAINLIBS@
+ARCHMINIOBJS = @MINIOBJS@
+DLNOBJ = @DLNOBJ@
+ENCOBJS = @ENCOBJS@
+EXTOBJS = @EXTOBJS@
+BUILTIN_ENCOBJS = @BUILTIN_ENCOBJS@
+BUILTIN_TRANSSRCS = @BUILTIN_TRANSSRCS@
+BUILTIN_TRANSOBJS = @BUILTIN_TRANSOBJS@
+POSTLINK = @POSTLINK@
+
+RUBY_BASE_NAME=@RUBY_BASE_NAME@
+RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@
+RUBY_API_VERSION=@RUBY_API_VERSION@
+RUBY_INSTALL_NAME=@RUBY_INSTALL_NAME@
+RUBY_SO_NAME=@RUBY_SO_NAME@
+EXEEXT = @EXEEXT@
+LIBEXT = @LIBEXT@
+PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
+RUBY = $(RUBY_INSTALL_NAME)
+MINIRUBY = @MINIRUBY@\
+ $(MINIRUBYOPT)
+# RUNRUBY_COMMAND:: runruby.rb or baseruby. do not append options directly
+RUNRUBY_COMMAND = @RUNRUBY_COMMAND@
+# RUNRUBY:: run ruby with RUN_OPTS which is passed to ruby
+RUNRUBY = @RUNRUBY@ $(RUN_OPTS)
+# RUNRUBY_DEBUGGER:: debugging option for runruby.rb
+RUNRUBY_DEBUGGER = --debugger='gdb -x run.gdb --quiet --args'
+XRUBY = @XRUBY@
+BTESTRUBY = @BTESTRUBY@\
+ $(MINIRUBYOPT)
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+XRUBY_LIBDIR = @XRUBY_LIBDIR@
+XRUBY_RUBYLIBDIR = @XRUBY_RUBYLIBDIR@
+XRUBY_RUBYHDRDIR = @XRUBY_RUBYHDRDIR@
+BOOTSTRAPRUBY = @BOOTSTRAPRUBY@
+
+#### End of system configuration section. ####
+
+MAJOR= @MAJOR@
+MINOR= @MINOR@
+TEENY= @TEENY@
+RUBY_PROGRAM_VERSION = @RUBY_PROGRAM_VERSION@
+
+LIBRUBY_A = @LIBRUBY_A@
+LIBRUBY_SO = @LIBRUBY_SO@
+LIBRUBY_SONAME= @LIBRUBY_SONAME@
+LIBRUBY_ALIASES= @LIBRUBY_ALIASES@
+LIBRUBY = @LIBRUBY@
+LIBRUBYARG = @LIBRUBYARG@
+LIBRUBYARG_STATIC = @LIBRUBYARG_STATIC@
+LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@
+LIBRUBY_RELATIVE = @LIBRUBY_RELATIVE@
+LIBRUBY_A_OBJS = @LIBRUBY_A_OBJS@
+
+DTRACE_REBUILD_OBJS = $(DTRACE_REBUILD:yes=$(DTRACE_DEPENDENT_OBJS))
+
+DTRACE_DEPENDENT_OBJS = array.$(OBJEXT) \
+ eval.$(OBJEXT) \
+ gc.$(OBJEXT) \
+ hash.$(OBJEXT) \
+ load.$(OBJEXT) \
+ object.$(OBJEXT) \
+ parse.$(OBJEXT) \
+ string.$(OBJEXT) \
+ symbol.$(OBJEXT) \
+ vm.$(OBJEXT)
+
+THREAD_MODEL = @THREAD_MODEL@
+
+PREP = @PREP@
+ARCHFILE = @ARCHFILE@
+SETUP =
+EXTSTATIC = @EXTSTATIC@
+ENCSTATIC = @ENCSTATIC@
+SET_LC_MESSAGES = env LC_MESSAGES=C
+
+MAKEDIRS = @MKDIR_P@
+CP = cp
+MV = mv
+RM = rm -f
+RMDIR = @RMDIR@
+RMDIRS = @RMDIRS@
+RMALL = @RMALL@
+NM = @NM@
+AR = @AR@
+ARFLAGS = @ARFLAGS@$(empty)
+RANLIB = @RANLIB@
+AS = @AS@
+ASFLAGS = @ASFLAGS@ $(INCFLAGS)
+IFCHANGE = $(srcdir)/tool/ifchange
+SET_LC_MESSAGES = env LC_MESSAGES=C
+OBJDUMP = @OBJDUMP@
+OBJCOPY = @OBJCOPY@
+HAVE_GIT = @HAVE_GIT@
+GIT = @GIT@
+VCS = @VCS@
+VCSUP = @VCSUP@
+DTRACE = @DTRACE@ @DTRACE_OPT@
+DTRACE_EXT = @DTRACE_EXT@
+DTRACE_OBJ = @DTRACE_OBJ@
+DTRACE_REBUILD= @DTRACE_REBUILD@
+DTRACE_GLOMMED_OBJ = $(DTRACE_REBUILD:yes=ruby-glommed.$(OBJEXT))
+
+OBJEXT = @OBJEXT@
+ASMEXT = S
+SOEXT = @SOEXT@
+DLEXT = @DLEXT@
+MANTYPE = @MANTYPE@
+SYMBOL_PREFIX = @SYMBOL_PREFIX@
+
+INSTALLED_LIST= .installed.list
+
+NEWLINE_C = enc/trans/newline.c
+MINIPRELUDE_C = miniprelude.c
+PRELUDE_C = prelude.c
+RBCONFIG = .rbconfig.time
+
+MAINSRC = $(MAINOBJ:@OBJEXT@=c)
+
+SRC_FILE = $<
+OS_SRC_FILE = $<
+DEST_FILE = $@
+OS_DEST_FILE = $@
+
+MESSAGE_BEGIN = @for line in
+MESSAGE_END = ; do echo "$$line"; done
+ECHO_BEGIN = @sep=''; for word in
+ECHO_END = ; do echo @ECHO_N@ "$$sep'$$word'@ECHO_C@"; sep=' '; done; echo
+
+DESTDIR = @DESTDIR@
+
+configure_args = @configure_args@
+#### End of variables
+
+.SUFFIXES: .inc .h .c .y .i .$(DTRACE_EXT)
+
+all:
+
+# Prevent GNU make v3 from overflowing arg limit on SysV.
+.NOEXPORT:
+
+miniruby$(EXEEXT):
+ @-if test -f $@; then $(MV) -f $@ $@.old; $(RM) $@.old; fi
+ $(ECHO) linking $@
+ $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(MAINLIBS) $(LIBS) $(OUTFLAG)$@
+ $(Q) $(POSTLINK)
+
+$(PROGRAM):
+ @$(RM) $@
+ $(ECHO) linking $@
+ $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@
+ $(Q) $(POSTLINK)
+
+# We must `rm' the library each time this rule is invoked because "updating" a
+# MAB library on Apple/NeXT (see --enable-fat-binary in configure) is not
+# supported.
+$(LIBRUBY_A):
+ @$(RM) $@
+ $(ECHO) linking static-library $@
+ $(Q) $(AR) $(ARFLAGS) $@ $(LIBRUBY_A_OBJS) $(INITOBJS)
+ @-$(RANLIB) $@ 2> /dev/null || true
+
+verify-static-library: $(LIBRUBY_A)
+ $(ECHO) verifying static-library $@
+ @$(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)conftest$(EXEEXT)
+ @$(RMALL) conftest$(EXEEXT) conftest.c conftest.dSYM
+
+$(LIBRUBY_SO):
+ @-$(PRE_LIBRUBY_UPDATE)
+ $(ECHO) linking shared-library $@
+ $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) $(EXTSOLIBS) $(OUTFLAG)$@
+ -$(Q) $(OBJCOPY) -w -L '$(SYMBOL_PREFIX)Init_*' -L '$(SYMBOL_PREFIX)ruby_static_id_*' \
+ -L '$(SYMBOL_PREFIX)*_threadptr_*' -L '$(SYMBOL_PREFIX)*_ec_*' $@
+ $(Q) $(POSTLINK)
+ @-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link rescue nil; \
+ File.symlink "$(LIBRUBY_SO)", link}' \
+ $(LIBRUBY_ALIASES) || true
+
+ruby_pc = @ruby_pc@
+$(ruby_pc):
+ @./config.status --file=$@:$(srcdir)/template/ruby.pc.in
+
+ruby-runner.h: template/ruby-runner.h.in
+ @./config.status --file=$@:$(srcdir)/template/$(@F).in
+
+$(RBCONFIG): $(PREP)
+
+rbconfig.rb: $(RBCONFIG)
+
+install-cross: $(arch)-fake.rb $(RBCONFIG) rbconfig.rb $(arch_hdrdir)/ruby/config.h \
+ $(LIBRUBY_A) $(LIBRUBY_SO) $(ARCHFILE)
+ $(ECHO) installing cross-compiling stuff
+ $(Q) $(MAKEDIRS) $(XRUBY_RUBYLIBDIR)/$(arch) $(XRUBY_RUBYHDRDIR)/$(arch)/ruby
+ $(Q) sed '/^\$$:\.unshift/q' $(arch)-fake.rb > fake.rb
+ $(Q) $(BASERUBY) -p \
+ -e '~/^\s*CONFIG\["LDFLAGS"\]/ and' \
+ -e '$$_[/(?=\s*"$$)/] = %q[ #{(CONFIG["LIBPATHFLAG"]%File.dirname(__FILE__)).strip}]' \
+ rbconfig.rb > fake-rbconfig.rb
+ $(INSTALL_SCRIPT) fake.rb $(XRUBY_RUBYLIBDIR)/$(arch)/fake.rb
+ $(INSTALL_SCRIPT) fake-rbconfig.rb $(XRUBY_RUBYLIBDIR)/$(arch)/rbconfig.rb
+ @$(RM) fake.rb fake-rbconfig.rb
+ $(INSTALL_DATA) $(arch_hdrdir)/ruby/config.h $(XRUBY_RUBYHDRDIR)/$(arch)/ruby
+ $(INSTALL_DATA) $(top_srcdir)/include/ruby/win32.h $(XRUBY_RUBYHDRDIR)/ruby
+ $(INSTALL_DATA) $(LIBRUBY) $(LIBRUBY_A) $(XRUBY_RUBYLIBDIR)/$(arch)
+ $(INSTALL_PROGRAM) $(LIBRUBY_SO) $(XRUBY_RUBYLIBDIR)/$(arch)
+
+Makefile: $(srcdir)/Makefile.in $(srcdir)/enc/Makefile.in
+
+$(MKFILES): config.status $(srcdir)/version.h
+ @[ -f $@ ] && mv $@ $@.old
+ MAKE=$(MAKE) $(SHELL) ./config.status $@
+ @cmp $@ $@.old > /dev/null 2>&1 && echo $@ unchanged && exit 0; \
+ { \
+ echo "all:; -@rm -f conftest.mk"; \
+ echo "conftest.mk: .force; @echo AUTO_REMAKE"; \
+ echo ".force:"; \
+ } > conftest.mk || exit 1; \
+ $(MAKE) -f conftest.mk | grep '^AUTO_REMAKE$$' >/dev/null 2>&1 || \
+ { echo "$@ updated, restart."; exit 1; }
+
+uncommon.mk: $(srcdir)/common.mk
+ sed 's/{\$$([^(){}]*)[^{}]*}//g' $< > $@
+
+.PHONY: reconfig
+reconfig-args = $(srcdir)/$(CONFIGURE) $(configure_args)
+config.status-args = ./config.status --recheck
+reconfig-exec-0 = test -t 1 && { CONFIGURE_TTY=yes; export CONFIGURE_TTY; }; exec 3>&1; exit `exec 4>&1; { "$$@" 3>&- 4>&-; echo $$? 1>&4; } | fgrep -v '(cached)' 1>&3 3>&- 4>&-`
+reconfig-exec-1 = set -x; "$$@"
+
+reconfig config.status: $(srcdir)/$(CONFIGURE) $(srcdir)/enc/Makefile.in \
+ $(srcdir)/include/ruby/version.h
+ @PWD= MINIRUBY="$(MINIRUBY)"; export MINIRUBY; \
+ set $(SHELL) $($@-args); $(reconfig-exec-$(V))
+
+$(srcdir)/$(CONFIGURE): $(srcdir)/configure.ac $(srcdir)/aclocal.m4
+ $(CHDIR) $(srcdir) && exec $(AUTOCONF) -o $(@F)
+
+$(srcdir)/aclocal.m4:
+ $(CHDIR) $(srcdir) && \
+ type $(ACLOCAL) >/dev/null 2>&1 && exec $(ACLOCAL); \
+ touch $(@F)
+
+prereq: $(srcdir)/$(CONFIGURE)
+
+incs: id.h
+all-incs: probes.h
+
+# Things which should be considered:
+# * with gperf v.s. without gperf
+# * committers may have various versions of gperf
+# * ./configure v.s. ../ruby/configure
+# * GNU make v.s. HP-UX make # HP-UX make invokes the action if lex.c and keywords has same mtime.
+# * svn checkout generate a file with mtime as current time
+# * ext4 and XFS has a mtime with fractional part
+lex.c: defs/keywords
+ @\
+ if cmp -s $(srcdir)/defs/lex.c.src $?; then \
+ [ $(Q) ] && echo copying $@ || set -x; \
+ $(CP) $(srcdir)/lex.c.blt $@; \
+ else \
+ [ $(Q) ] && echo generating $@ || set -x; \
+ gperf -C -P -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $? \
+ | sed -f $(srcdir)/tool/gperf.sed \
+ > $@.tmp && \
+ $(MV) $@.tmp $@ && \
+ $(CP) $? $(srcdir)/defs/lex.c.src && \
+ $(CP) $@ $(srcdir)/lex.c.blt; \
+ fi
+
+JIS_PROPS_OPTIONS = -k1,3 -7 -c -j1 -i1 -t -C -P -t --ignore-case -H onig_jis_property_hash -Q onig_jis_property_pool -N onig_jis_property
+
+$(srcdir)/enc/jis/props.h: enc/jis/props.kwd
+ $(MAKEDIRS) $(@D)
+ @set +e; \
+ if cmp -s $(?:.kwd=.src) $?; then \
+ set -x; \
+ $(CP) $(?:.kwd=.h.blt) $@; \
+ else \
+ set -x; \
+ gperf $(JIS_PROPS_OPTIONS) $? | \
+ sed -f $(srcdir)/tool/gperf.sed > $@ && \
+ $(CP) $? $(?:.kwd=.src) && \
+ $(CP) $@ $(?:.kwd=.h.blt); \
+ fi
+
+.c.@OBJEXT@:
+ @$(ECHO) compiling $<
+ $(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c $<
+
+.s.@OBJEXT@:
+ @$(ECHO) assembling $<
+ $(Q) $(AS) $(ASFLAGS) -o $@ $<
+
+.c.S:
+ @$(ECHO) translating $<
+ $(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -S $<
+
+.c.i:
+ @$(ECHO) preprocessing $<
+ $(Q) $(CPP) $(warnflags) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -E $< > $@
+
+.d.h:
+ @$(ECHO) translating probes $<
+ $(Q) $(DTRACE) -o $@.tmp -h -C $(INCFLAGS) -s $<
+ $(Q) sed -e 's/RUBY_/RUBY_DTRACE_/g' -e 's/PROBES_H_TMP/RUBY_PROBES_H/' -e 's/(char \*/(const char */g' -e 's/, char \*/, const char */g' $@.tmp > $@
+ $(Q) $(RM) $@.tmp
+
+.dmyh.h:
+ @$(ECHO) making dummy $(DEST_FILE)
+ $(Q)echo '#include "$(*F).dmyh"' > $@
+
+probes.stamp: $(DTRACE_REBUILD_OBJS)
+ $(Q) if test -f $@ -o -f probes.$(OBJEXT); then \
+ $(RM) $(DTRACE_REBUILD_OBJS) $@; \
+ $(ECHO0) "rebuilding objects which were modified by \"dtrace -G\""; \
+ $(MAKE) $(DTRACE_REBUILD_OBJS); \
+ fi
+ $(Q) touch $@
+
+probes.@OBJEXT@: $(srcdir)/probes.d $(DTRACE_REBUILD:yes=probes.stamp)
+ @$(ECHO) processing probes in object files
+ $(Q) $(RM) $@
+ $(Q) $(DTRACE) -G -C $(INCFLAGS) -s $(srcdir)/probes.d -o $@ $(DTRACE_REBUILD_OBJS)
+
+# DTrace static library hacks described here:
+# http://mail.opensolaris.org/pipermail/dtrace-discuss/2005-August/000207.html
+ruby-glommed.$(OBJEXT):
+ @$(ECHO) generating a glommed object with DTrace probes for static library
+ $(Q) $(LD) -r -o $@ $(OBJS)
+
+clean-local::
+ $(Q)$(RM) ext/extinit.c ext/extinit.$(OBJEXT) ext/ripper/y.output \
+ enc/encinit.c enc/encinit.$(OBJEXT)
+ -$(Q)$(RM) $(pkgconfig_DATA)
+ -$(Q)$(RMALL) exe/ ruby-runner.h *.dSYM
+
+distclean-local::
+ $(Q)$(RM) ext/config.cache $(RBCONFIG) Doxyfile
+ -$(Q)$(RM) run.gdb
+ -$(Q)$(RM) $(INSTALLED_LIST) $(arch_hdrdir)/ruby/config.h verconf.h
+ -$(Q)$(RMDIRS) $(arch_hdrdir)/ruby 2> /dev/null || true
+
+ext/clean.sub gems/clean.sub:: ext/clean.mk
+ext/distclean.sub gems/distclean.sub:: ext/distclean.mk
+ext/realclean.sub gems/realclean.sub:: ext/realclean.mk
+
+ext/clean.mk ext/distclean.mk ext/realclean.mk::
+ -$(Q) if [ -f $(EXTS_MK) ]; then exec $(MAKE) -f $(EXTS_MK) $(@F:.mk=); fi
+
+ext/clean:: ext/clean.sub
+ext/distclean:: ext/distclean.sub
+ext/realclean:: ext/realclean.sub
+gems/clean:: gems/clean.sub
+gems/distclean:: gems/distclean.sub
+gems/realclean:: gems/realclean.sub
+
+ext/clean.sub ext/distclean.sub ext/realclean.sub \
+gems/clean.sub gems/distclean.sub gems/realclean.sub::
+ $(Q) set dummy `echo "${EXTS}" | tr , ' '`; shift; \
+ test "$$#" = 0 && set .; \
+ set dummy `\
+ cd $(@D) 2>/dev/null && \
+ find "$$@" \( -name Makefile -o -name exts.mk \) -print | \
+ sed -n 's:^\./::;s:^:$(@D)/:;s:/[^/][^/]*$$::p' | sort -u; \
+ `; shift; \
+ for dir do \
+ $(RM) "$$dir/exts.mk"; \
+ if [ -f "$$dir/Makefile" ]; then \
+ echo $(@F:.sub=)ing "$$dir"; \
+ (cd "$$dir" && exec $(MAKE) $(mflags) $(@F:.sub=)); \
+ fi; \
+ done || true
+
+ext/distclean ext/realclean gems/distclean gems/realclean::
+ $(Q) set dummy `echo "${EXTS}" | tr , ' '`; shift; \
+ test "$$#" = 0 && set .; \
+ cd $(@D) 2>/dev/null && \
+ find "$$@" -type d -empty -exec $(RMDIRS) {} + 2> /dev/null || true
+ $(Q) $(RMDIRS) $(@D) 2> /dev/null || true
+
+clean-enc distclean-enc realclean-enc:
+ @test -f "$(ENC_MK)" || exit 0; \
+ echo $(@:-enc=ing) encodings; \
+ exec $(MAKE) $(MAKE_ENC) $(@:-enc=)
+
+ext/extinit.$(OBJEXT): ext/extinit.c $(SETUP)
+ $(ECHO) compiling $@
+ $(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c ext/extinit.c
+
+enc/encinit.$(OBJEXT): enc/encinit.c $(SETUP)
+
+test-bundled-gems-run:
+ $(Q) set -e; while read gem _; do \
+ echo testing $$gem gem && \
+ $(XRUBY) -C $(srcdir)/gems/src/$$gem -Ilib ../../../.bundle/bin/rake; \
+ done < $(srcdir)/gems/bundled_gems
+
+update-src::
+ @$(CHDIR) "$(srcdir)" && LC_TIME=C exec $(VCSUP)
+
+update-download:: update-config_files
+
+after-update:: prereq
+
+gcov:
+ $(Q) $(BASERUBY) $(srcdir)/tool/run-gcov.rb
+
+lcov:
+ $(Q) $(BASERUBY) $(srcdir)/tool/run-lcov.rb
+
+update-doclie:
+ $(Q) $(srcdir)/tool/git-refresh -C $(srcdir)/coverage $(Q1:0=-q) \
+ --branch $(DOCLIE_GIT_REF) \
+ $(DOCLIE_GIT_URL) doclie $(GIT_OPTS)
+
+update-simplecov-html:
+ $(Q) $(srcdir)/tool/git-refresh -C $(srcdir)/coverage $(Q1:0=-q) \
+ --branch $(SIMPLECOV_HTML_GIT_REF) \
+ $(SIMPLECOV_HTML_GIT_URL) simplecov-html $(GIT_OPTS)
+
+update-simplecov:
+ $(Q) $(srcdir)/tool/git-refresh -C $(srcdir)/coverage $(Q1:0=-q) \
+ --branch $(SIMPLECOV_GIT_REF) \
+ $(SIMPLECOV_GIT_URL) simplecov $(GIT_OPTS)
+
+update-coverage: update-simplecov update-simplecov-html update-doclie
+
+INSNS = opt_sc.inc optinsn.inc optunifs.inc insns.inc insns_info.inc \
+ vmtc.inc vm.inc
+
+$(INSNS): $(srcdir)/insns.def vm_opts.h \
+ $(srcdir)/defs/opt_operand.def $(srcdir)/defs/opt_insn_unif.def \
+ $(srcdir)/tool/instruction.rb $(srcdir)/tool/insns2vm.rb
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) -Ku $(srcdir)/tool/insns2vm.rb $(INSNS2VMOPT) $@
+
+verconf.h: $(RBCONFIG)
+
+loadpath: verconf.h
+ @$(CPP) $(XCFLAGS) $(CPPFLAGS) $(srcdir)/loadpath.c | \
+ sed -e '1,/^const char ruby_initial_load_paths/d;/;/,$$d' \
+ -e '/^ /!d;s/ *"\\0"$$//;s/" *"//g'
+
+un-runnable:
+ $(ECHO) cannot make runnable, configure with --enable-load-relative.
+ $(Q) exit 1
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000000..e1b91f38b7
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,577 @@
+# -*- rdoc -*-
+
+= NEWS for Ruby 2.5.0
+
+This document is a list of user visible feature changes made between
+releases except for bug fixes.
+
+Note that each entry is kept so brief that no reason behind or
+reference information is supplied with. For a full list of changes
+with all sufficient information, see the ChangeLog file or Redmine
+(e.g. <tt>https://bugs.ruby-lang.org/issues/$FEATURE_OR_BUG_NUMBER</tt>)
+
+== Changes since the 2.4.0 release
+
+=== Language changes
+
+* Top-level constant look-up is removed. [Feature #11547]
+
+* rescue/else/ensure are allowed inside do/end blocks. [Feature #12906]
+
+* refinements take place in string interpolations. [Feature #13812]
+
+=== Core classes updates (outstanding ones only)
+
+* Array
+
+ * New methods:
+
+ * Array#append [Feature #12746]
+ * Array#prepend [Feature #12746]
+
+* Data
+
+ * Is deprecated. It was a base class for C extensions, and it's not
+ necessary to expose in Ruby level. [Feature #3072]
+
+* Exception
+
+ * New methods:
+
+ * Exception#full_message to retrieve a String expression of an exception,
+ formatted in the same way in which Ruby prints out an uncaught exception.
+ [Feature #14141] [experimental]
+
+* Dir
+
+ * Dir.glob provides new optional keyword argument, :base.
+ [Feature #13056]
+ * Dir.chdir (without block arg), Dir.open, Dir.new, Dir.mkdir, Dir.rmdir,
+ Dir.empty? releases GVL
+
+ * New methods:
+
+ * Dir.children [Feature #11302]
+ * Dir.each_child [Feature #11302]
+
+* Enumerable
+
+ * Enumerable#{any?,all?,none?,one?} accept a pattern argument [Feature #11286]
+
+* File
+
+ * File.open accepts :newline option to imply text mode. [Bug #13350]
+ * File#path raises an IOError for files opened with
+ File::Constants::TMPFILE option. [Feature #13568]
+ * File.stat, File.exist?, and other rb_stat()-using methods release GVL
+ [Bug #13941]
+ * File.rename releases GVL [Feature #13951]
+ * File::Stat#{atime,mtime,ctime} support fractional second timestamps on
+ Windows 8 and later [Feature #13726]
+ * File::Stat#ino and File.indentical? support ReFS 128bit ino on Windows 8.1
+ and later [Feature #13731]
+ * File.readable?, File.readable_real?, File.writable?, File.writable_real?,
+ File.executable?, File.executable_real?, File.mkfifo, File.readlink,
+ File.truncate, File#truncate, File.chmod, File.lchmod, File.chown,
+ File.lchown, File.unlink, File.utime, File.lstat release GVL
+
+ * New method:
+
+ * File.lutime [Feature #4052]
+
+* Exception
+
+ * Exception#full_message takes :highlight and :order options [Bug #14324]
+
+* Hash
+
+ * New methods:
+
+ * Hash#transform_keys [Feature #13583]
+ * Hash#transform_keys! [Feature #13583]
+ * Hash#slice [Feature #8499]
+
+* IO
+
+ * IO#copy_stream tries copy offload with copy_file_range(2) [Feature #13867]
+
+ * New methods:
+
+ * IO#pread [Feature #4532]
+ * IO#pwrite [Feature #4532]
+ * IO#write accepts multiple arguments [Feature #9323]
+
+* IOError
+
+ * IO#close might raise an error with message "stream closed",
+ but it is refined to "stream closed in another thread". The new message
+ is more clear for user.
+ [Bug #13405]
+
+* Integer
+
+ * Integer#step no longer hides errors from coerce method when
+ given a step value which cannot be compared with #> to 0.
+ [Feature #7688]
+ * Integer#{round,floor,ceil,truncate} always return an Integer.
+ [Bug #13420]
+ * Integer#pow accepts modulo argument for calculating modular
+ exponentiation. [Feature #12508] [Feature #11003]
+
+ * New methods:
+
+ * Integer#allbits?, Integer#anybits?, Integer#nobits? [Feature #12753]
+ * Integer.sqrt [Feature #13219]
+
+* Kernel
+
+ * Kernel#yield_self [Feature #6721]
+ * Kernel#pp [Feature #14123]
+ * Kernel#warn(..., uplevel:n) [Feature #12882]
+
+* Method
+
+ * New methods:
+
+ * Method#=== that invokes Method#call, as same as Proc#=== [Feature #14142]
+
+* Module
+
+ * Module#{attr,attr_accessor,attr_reader,attr_writer} become public [Feature #14132]
+ * Module#{define_method,alias_method,undef_method,remove_method} become public [Feature #14133]
+
+* Numeric
+
+ * Numerical comparison operators (<,<=,>=,>) no longer hide exceptions
+ from #coerce method internally. Return nil in #coerce if the coercion is
+ impossible. [Feature #7688]
+
+* Process
+
+ * Precision of Process.times is improved if getrusage(2) exists. [Feature #11952]
+
+ * New method:
+
+ * Process.last_status as an alias of $? [Feature #14043]
+
+* Range
+ * Range#initialize no longer hides exceptions when comparing begin and
+ end with #<=> and raise a "bad value for range" ArgumentError
+ but instead lets the exception from the #<=> call go through.
+ [Feature #7688]
+
+* Regexp
+
+ * Update to Onigmo 6.1.3-669ac9997619954c298da971fcfacccf36909d05.
+
+ * Support absence operator https://github.com/k-takata/Onigmo/issues/82
+
+ * Support new 5 emoji-related Unicode character properties
+
+* RubyVM::InstructionSequence
+
+ * New method:
+
+ * RubyVM::InstructionSequence#each_child
+ * RubyVM::InstructionSequence#trace_points
+
+* String
+
+ * String#-@ deduplicates unfrozen strings. Already-frozen
+ strings remain unchanged for compatibility. [Feature #13077]
+ * -"literal" (String#-@) optimized to return the same object
+ (same as "literal".freeze in Ruby 2.1+) [Feature #13295]
+ * String#{casecmp,casecmp?} return nil for non-string arguments
+ instead of raising a TypeError. [Bug #13312]
+ * String#start_with? accepts a regexp [Feature #13712]
+
+ * New methods:
+
+ * String#delete_prefix, String#delete_prefix! [Feature #12694]
+ * String#delete_suffix, String#delete_suffix! [Feature #13665]
+ * String#each_grapheme_cluster and String#grapheme_clusters to
+ enumerate grapheme clusters [Feature #13780]
+ * String#undump to unescape String#dump'ed string [Feature #12275]
+
+* Struct
+
+ * Struct.new takes `keyword_init: true` option to initialize members
+ with keyword arguments. [Feature #11925]
+
+* Regexp/String: Update Unicode version from 9.0.0 to 10.0.0 [Feature #13685]
+
+* Thread
+
+ * Description set by Thread#name= is now visible on Windows 10.
+
+ * New method:
+ * Thread#fetch [Feature #13009]
+
+ * The default of Thread.report_on_exception is now true,
+ showing unhandled exceptions terminating threads on $stderr.
+ [Feature #14143]
+
+* Time
+
+ * Time#at receives 3rd argument which specifies the unit of 2nd argument.
+ [Feature #13919]
+
+* KeyError
+
+ * New methods:
+
+ * KeyError#receiver [Feature #12063]
+ * KeyError#key [Feature #12063]
+
+* FrozenError
+
+ * New exception class. [Feature #13224]
+
+=== Stdlib updates (outstanding ones only)
+
+* BigDecimal
+
+ * Update to BigDecimal 1.3.4
+
+ * The following features are added:
+
+ * BigDecimal::VERSION
+
+ * The following features have been deprecated,
+ and are planned to be removed in the version 1.4.0:
+
+ * BigDecimal.new
+
+ * BigDecimal.ver
+
+ * BigDecimal#clone and #dup now do not make a new instance,
+ but returns the receiver itself.
+
+* Coverage
+
+ * Support branch coverage and method coverage measurement. [Feature #13901]
+ Branch coverage tells you which branches are executed, and which not.
+ Method coverage tells you which methods are invoked, and which not.
+ By running a test suite with this new feature, you can know which branches
+ and methods are executed by a test, and evaluate total coverage of a test
+ suite more strictly.
+
+ You can specify the measuring target by an option to `Coverage.start`:
+
+ Coverage.start(lines: true, branches: true, methods: true)
+
+ After some Ruby files are loaded, you can use `Coverage.result` to get
+ the coverage result:
+
+ Coverage.result
+ #=> { "/path/to/file.rb"=>
+ # { :lines => [1, 2, 0, nil, ...],
+ # :branches =>
+ # { [:if, 0, 2, 1, 6, 4] =>
+ # { [:then, 1, 3, 2, 3, 8] => 0,
+ # [:else, 2, 5, 2, 5, 8] => 2
+ # }
+ # },
+ # :methods => {
+ # [Object, :foo, 1, 0, 7, 3] => 2
+ # }
+ # }
+ # }
+
+ The result type of line coverage is not changed; it is just an array that
+ contains numbers, which means the count that each line was executed,
+ or `nil`s, which means that the line is not relevant.
+
+ The result type of branch coverage is:
+
+ { (jump base) => { (jump target) => (counter) } }
+
+ where jump base and targets have the format
+
+ [type, unique-id, start lineno, start column, end lineno, end column]
+
+ For example, `[:if, 0, 2, 1, 6, 4]` reads an `if` statement that ranges from
+ line 2 and column 1, to line 6 and column 4. `[:then, 1, 3, 2, 3, 8]` reads
+ a `then` clause that ranges from line 3 and column 2, to line 3 and column 8.
+ Note that lineno starts from 1, and that columnno starts from 0. So, the
+ above example shows a branch from the `if` to the `then` was never executed,
+ and a branch from the `if` to the `else` was executed twice.
+
+ The result type of method coverage is:
+
+ { (method key) => (counter) }
+
+ where method key has the format
+
+ [class, method-name, start lineno, start column, end lineno, end column]
+
+ For example, `[Object, :foo, 1, 0, 7, 3]` reads `Object#foo` that ranges from
+ line 1 and column 0, to line 7 and column 3. The above example shows this
+ `Object#foo` was invoked twice.
+
+ Note: To keep compatibility, passing no option to `Coverage.start` will measure
+ only line coverage, and `Coverage.result` will return the old format:
+
+ Coverage.result
+ #=> { "/path/to/file.rb"=> [1, 2, 0, nil, ...] }
+
+* DRb
+
+ * ACL::ACLEntry.new no longer suppresses IPAddr::InvalidPrefixError.
+
+* ERB
+
+ * Add ERB#result_with_hash to render a template with local variables passed
+ with a Hash object. [Feature #8631]
+
+ * Default template file encoding is changed from ASCII-8BIT to UTF-8 in erb
+ command. [Bug #14095]
+
+ * Carriage returns are changed to be trimmed properly if trim_mode is specified
+ and used. Duplicated newlines will be removed on Windows. [Bug #5339] [Bug #11464]
+
+* IPAddr
+
+ * IPAddr no longer accepts invalid address mask. [Bug #13399]
+ * IPAddr#{ipv4_compat,ipv4_compat?} are marked for deprecation. [Bug #13769]
+
+ * New methods:
+
+ * IPAddr#prefix
+ * IPAddr#loopback?
+ * IPAddr#private? [Feature #11666]
+ * IPAddr#link_local? [Feature #10912]
+
+
+* IRB
+
+ * Print backtrace and error message in reverse order [Feature #8661] [experimental]
+ * `binding.irb` automatically requires irb and runs [Bug #13099] [experimental]
+ * `binding.irb` on its start shows source around the line where it was called
+ [Feature #14124]
+
+* Matrix
+
+ * New methods:
+
+ * Matrix.combine and Matrix#combine [Feature #10903]
+ * Matrix#{hadamard_product,entrywise_product}
+
+* Net::HTTP
+
+ * Net::HTTP.new supports no_proxy parameter [Feature #11195]
+ * Net::HTTP#{min_version,max_version}, [Feature #9450]
+ * Add more HTTP status classes
+ * Net::HTTP::STATUS_CODES is added as HTTP Status Code Repository [Misc #12935]
+ * Net::HTTP#{proxy_user,proxy_pass} reflect http_proxy environment variable
+ if the system's environment variable is multiuser safe. [Bug #12921]
+
+* open-uri
+ * URI.open method defined as an alias to open-uri's Kernel.open.
+ open-uri's Kernel.open will be deprecated in future.
+
+* OpenSSL
+
+ * Updated Ruby/OpenSSL from version 2.0 to 2.1. Changes are noted in
+ "Version 2.1.0" section in ext/openssl/History.md.
+
+* Pathname
+
+ * New method:
+
+ * Pathname#glob [Feature #7360]
+
+* Psych
+
+ * Update to Psych 3.0.2.
+
+ * Convert fallback option to a keyword argument
+ https://github.com/ruby/psych/pull/342
+ * Add :symbolize_names option to Psych.load, Psych.safe_load like JSON.parse
+ https://github.com/ruby/psych/pull/333, https://github.com/ruby/psych/pull/337
+ * Add Psych::Handler#event_location
+ https://github.com/ruby/psych/pull/326
+ * Make frozen string literal = true
+ https://github.com/ruby/psych/pull/320
+ * Preserve time zone offset when deserializing times
+ https://github.com/ruby/psych/pull/316
+ * Remove deprecated method aliases for syck gem
+ https://github.com/ruby/psych/pull/312
+
+* RbConfig
+
+ * RbConfig::LIMITS is added to provide the limits of C types.
+ This is available when rbconfig/sizeof is loaded.
+
+* Ripper
+
+ * Ripper::EXPR_BEG and so on for Ripper#state.
+
+ * New method:
+
+ * Ripper#state to tell the state of scanner. [Feature #13686]
+
+* RDoc
+
+ * Update to RDoc 6.0.1.
+
+ * Replace IRB based lexer with Ripper.
+ * https://github.com/ruby/rdoc/pull/512
+ * This much improves the speed of generating documents.
+ * It also facilitates supporting new syntax in the future.
+ * Support many new syntaxes of Ruby from the past few years.
+ * Use "frozen_string_literal: true".
+ Performance survey: https://gist.github.com/aycabta/abdfaa75ea8a6877eeb734e942e73800
+ * Support did_you_mean.
+
+* Rubygems
+
+ * Update to Rubygems 2.7.3.
+ * http://blog.rubygems.org/2017/11/28/2.7.3-released.html
+ * http://blog.rubygems.org/2017/11/08/2.7.2-released.html
+ * http://blog.rubygems.org/2017/11/03/2.7.1-released.html
+ * http://blog.rubygems.org/2017/11/01/2.7.0-released.html
+ * http://blog.rubygems.org/2017/10/09/2.6.14-released.html
+ * http://blog.rubygems.org/2017/08/27/2.6.13-released.html
+
+* SecureRandom
+
+ * New method:
+
+ * SecureRandom.alphanumeric
+
+* Set
+
+ * New methods:
+
+ * Set#to_s as alias to #inspect [Feature #13676]
+ * Set#=== as alias to #include? [Feature #13801]
+ * Set#reset [Feature #6589]
+
+* StringIO
+
+ * StringIO#write accepts multiple arguments
+
+* StringScanner
+
+ * New methods:
+
+ * StringScanner#size, StringScanner#captures, StringScanner#values_at [Feature #836]
+
+* URI
+
+ * Relative path operations no longer collapse consecutive slashes to a single slash. [Bug #8352]
+
+* WEBrick
+
+ * Add Server Name Indication (SNI) support [Feature #13729]
+ * support Proc objects as body responses [Feature #855]
+ * released as a RubyGem [Feature #13173]
+ * avoid unintended behavior from Kernel#open [Misc #14216]
+
+* Zlib
+
+ * Zlib::GzipWriter#write accepts multiple arguments
+
+=== Compatibility issues (excluding feature bug fixes)
+
+* Socket
+
+ * BasicSocket#read_nonblock and BasicSocket#write_nonblock no
+ longer set the O_NONBLOCK file description flag as side effect
+ (on Linux only) [Feature #13362]
+
+* Random
+
+ * Random.raw_seed renamed to become Random.urandom. It is now
+ applicable to non-seeding purposes due to [Bug #9569].
+
+* Socket
+
+ * Socket::Ifaddr#vhid is added [Feature #13803]
+
+* ConditionVariable, Queue and SizedQueue reimplemented for speed.
+ They no longer subclass Struct. [Feature #13552]
+
+=== Stdlib compatibility issues (excluding feature bug fixes)
+
+* Gemification
+
+ * Promote following standard libraries to default gems.
+ * cmath
+ * csv
+ * date
+ * dbm
+ * etc
+ * fcntl
+ * fiddle
+ * fileutils
+ * gdbm
+ * ipaddr
+ * scanf
+ * sdbm
+ * stringio
+ * strscan
+ * webrick
+ * zlib
+
+* Logger
+
+ * Logger.new("| command") had been working to open a command
+ unintentionally. It was prohibited, and now Logger#initialize
+ treats a String argument only as a filename, as its specification.
+ [Bug #14212]
+
+* Net::HTTP
+
+ * Net::HTTP#start now passes :ENV to p_addr by default. [Bug #13351]
+ To avoid this, pass nil explicitly.
+
+* mathn.rb
+
+ * Removed from stdlib. [Feature #10169]
+
+* Rubygems
+
+ * Removed "ubygems.rb" file from stdlib. It's needless since Ruby 1.9.
+
+=== C API updates
+
+=== Supported platform changes
+
+* Drop support of NaCl platform
+
+ * https://bugs.chromium.org/p/chromium/issues/detail?id=239656#c160
+
+=== Implementation improvements
+
+* (This might not be a "user visible feature change" but) Hash class's
+ hash function is now SipHash13. [Feature #13017]
+
+* SecureRandom now prefers OS-provided sources than OpenSSL. [Bug #9569]
+
+* Mutex rewritten to be smaller and faster [Feature #13517]
+
+* Performance of block passing using block parameters is improved by
+ lazy Proc allocation [Feature #14045]
+
+* Dynamic instrumentation for TracePoint hooks instead of using "trace"
+ instruction to avoid overhead [Feature #14104]
+
+* ERB now generates code from a template which runs 2 times faster than Ruby 2.4
+
+=== Miscellaneous changes
+
+* Print backtrace and error message in reverse order if STDERR is unchanged and a tty.
+ [Feature #8661] [experimental]
+
+* Print error message in bold/underlined text if STDERR is unchanged and a tty.
+ [Feature #14140] [experimental]
+
+* configure option --with-ext now mandates its arguments. So for
+ instance if you run ./configure --with-ext=openssl,+ then the
+ openssl library is guaranteed compiled, otherwise the build fails
+ abnormally.
+
+ Note however to always add the ",+" at the end of the argument.
+ Otherwise nothing but openssl are built. [Feature #13302]
diff --git a/NEWS.md b/NEWS.md
deleted file mode 100644
index 6e226122b6..0000000000
--- a/NEWS.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# NEWS for Ruby 3.3.0
-
-This document is a list of user-visible feature changes
-since the **3.2.0** release, except for bug fixes.
-
-Note that each entry is kept to a minimum, see links for details.
-
-## Language changes
-
-## Command line options
-
-* A new `performance` warning category was introduced.
- They are not displayed by default even in verbose mode.
- Turn them on with `-W:performance` or `Warning[:performance] = true`. [[Feature #19538]]
-
-## Core classes updates
-
-Note: We're only listing outstanding class updates.
-
-* Array
-
- * `Array#pack` now raises ArgumentError for unknown directives. [[Bug #19150]]
-
-* Dir
-
- * `Dir.for_fd` added for returning a Dir object for the directory specified
- by the provided directory file descriptor. [[Feature #19347]]
- * `Dir.fchdir` added for changing the directory to the directory specified
- by the provided directory file descriptor. [[Feature #19347]]
- * `Dir#chdir` added for changing the directory to the directory specified
- by the provided `Dir` object. [[Feature #19347]]
-
-* MatchData
-
- * MatchData#named_captures now accepts optional `symbolize_names` keyword. [[Feature #19591]]
-
-* String
-
- * `String#unpack` now raises ArgumentError for unknown directives. [[Bug #19150]]
- * `String#bytesplice` now accepts new arguments index/length or range of the source string to be copied. [[Feature #19314]]
-
-* ObjectSpace::WeakKeyMap
-
- * New core class to build collections with weak references.
- The class use equality semantic to lookup keys like a regular hash,
- but it doesn't hold strong references on the keys. [[Feature #18498]]
-
-## Stdlib updates
-
-The following default gems are updated.
-
-* RubyGems 3.5.0.dev
-* bigdecimal 3.1.4
-* bundler 2.5.0.dev
-* csv 3.2.7
-* fiddle 1.1.2
-* fileutils 1.7.1
-* irb 1.6.4
-* optparse 0.4.0.pre.1
-* psych 5.1.0
-* reline 0.3.3
-* stringio 3.0.7
-* strscan 3.0.7
-* syntax_suggest 1.0.4
-* time 0.2.2
-* timeout 0.3.2
-* uri 0.12.1
-
-The following bundled gems are updated.
-
-* minitest 5.18.0
-* rbs 3.1.0
-* typeprof 0.21.7
-* debug 1.8.0
-
-See GitHub releases like [Logger](https://github.com/ruby/logger/releases) or
-changelog for details of the default gems or bundled gems.
-
-## Supported platforms
-
-## Compatibility issues
-
-## Stdlib compatibility issues
-
-### `ext/readline` is retired
-
-* We have `reline` that is pure Ruby implementation compatible with `ext/readline` API. We rely on `reline` in the future. If you need to use `ext/readline`, you can install `ext/readline` via rubygems.org with `gem install readline-ext`.
-* We no longer need to install libraries like `libreadline` or `libedit`.
-
-## C API updates
-
-## Implementation improvements
-
-* `defined?(@ivar)` is optimized with Object Shapes.
-
-### YJIT
-
-* Significant performance improvements over 3.2
- * Splat and rest arguments support has been improved.
- * Registers are allocated for stack operations of the virtual machine.
- * More calls with optional arguments are compiled.
- * `Integer#!=`, `String#!=`, `Kernel#block_given?`, `Kernel#is_a?`,
- `Kernel#instance_of?`, `Module#===` are specially optimized.
- * Instance variables no longer exit to the interpreter
- with megamorphic Object Shapes.
-* Metadata for compiled code uses a lot less memory.
-* Improved code generation on ARM64
-* Option to start YJIT in paused mode and then later enable it manually
- * `--yjit-pause` and `RubyVM::YJIT.resume`
- * This can be used to enable YJIT only once your application is done booting
-* Exit tracing option now supports sampling
- * `--trace-exits-sample-rate=N`
-* Multiple bug fixes
-
-### RJIT
-
-* Introduced a pure-Ruby JIT compiler RJIT and replaced MJIT.
- * RJIT supports only x86\_64 architecture on Unix platforms.
- * Unlike MJIT, it doesn't require a C compiler at runtime.
-* RJIT exists only for experimental purposes.
- * You should keep using YJIT in production.
-
-[Feature #18498]: https://bugs.ruby-lang.org/issues/18498
-[Bug #19150]: https://bugs.ruby-lang.org/issues/19150
-[Feature #19314]: https://bugs.ruby-lang.org/issues/19314
-[Feature #19347]: https://bugs.ruby-lang.org/issues/19347
-[Feature #19538]: https://bugs.ruby-lang.org/issues/19538
diff --git a/README.ja.md b/README.ja.md
index 66f9e4e37f..2902216f99 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -1,11 +1,3 @@
-[![Actions Status: MinGW](https://github.com/ruby/ruby/workflows/MinGW/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"MinGW")
-[![Actions Status: RJIT](https://github.com/ruby/ruby/workflows/RJIT/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"RJIT")
-[![Actions Status: Ubuntu](https://github.com/ruby/ruby/workflows/Ubuntu/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"Ubuntu")
-[![Actions Status: Windows](https://github.com/ruby/ruby/workflows/Windows/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"Windows")
-[![AppVeyor status](https://ci.appveyor.com/api/projects/status/0sy8rrxut4o0k960/branch/master?svg=true)](https://ci.appveyor.com/project/ruby/ruby/branch/master)
-[![Travis Status](https://app.travis-ci.com/ruby/ruby.svg?branch=master)](https://app.travis-ci.com/ruby/ruby)
-[![Cirrus Status](https://api.cirrus-ci.com/github/ruby/ruby.svg)](https://cirrus-ci.com/github/ruby/ruby/master)
-
# Rubyã¨ã¯
Rubyã¯ã‚·ãƒ³ãƒ—ルã‹ã¤å¼·åŠ›ãªã‚ªãƒ–ジェクト指å‘スクリプト言語ã§ã™ï¼Ž Rubyã¯ç´”粋ãªã‚ªãƒ–ジェクト指å‘言語ã¨ã—ã¦è¨­è¨ˆã•れã¦ã„ã‚‹ã®ã§ï¼Œ
@@ -18,37 +10,40 @@ Rubyã¯ãƒ†ã‚­ã‚¹ãƒˆå‡¦ç†é–¢ä¿‚ã®èƒ½åŠ›ãªã©ã«å„ªã‚Œï¼ŒPerlã¨åŒã˜ãらã„
* ã‚·ãƒ³ãƒ—ãƒ«ãªæ–‡æ³•
* 普通ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘æ©Ÿèƒ½(クラス,メソッドコールãªã©)
-* 特殊ãªã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘æ©Ÿèƒ½(Mixin,特異メソッドãªã©)
+* 特殊ãªã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘æ©Ÿèƒ½(Mixin, 特異メソッドãªã©)
* 演算å­ã‚ªãƒ¼ãƒãƒ¼ãƒ­ãƒ¼ãƒ‰
* ä¾‹å¤–å‡¦ç†æ©Ÿèƒ½
* イテレータã¨ã‚¯ãƒ­ãƒ¼ã‚¸ãƒ£
* ガーベージコレクタ
* ダイナミックローディング (アーキテクãƒãƒ£ã«ã‚ˆã‚‹)
-* ç§»æ¤æ€§ãŒé«˜ã„.多ãã®Unix-like/POSIX互æ›ãƒ—ラットフォーム上ã§å‹•ãã ã‘ã§ãªã,Windows, macOS,
- Haikuãªã©ã®ä¸Šã§ã‚‚å‹•ã cf.
- https://github.com/ruby/ruby/blob/master/doc/contributing.rdoc#platform-maintainers
+* ç§»æ¤æ€§ãŒé«˜ã„.多ãã®Unix-like/POSIX互æ›ãƒ—ラットフォーム上ã§å‹•ãã ã‘ã§ãªã,Windows, Mac OS
+ X,Haikuãªã©ã®ä¸Šã§ã‚‚å‹•ã cf.
+ https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatformsJa
## 入手法
-サードパーティーツールを使ã£ãŸæ–¹æ³•ã‚’å«ã‚€Rubyã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ–¹æ³•ã®ä¸€è¦§ã¯
+### FTPã§
+
+以下ã®å ´æ‰€ã«ãŠã„ã¦ã‚りã¾ã™ï¼Ž
+
+ftp://ftp.ruby-lang.org/pub/ruby/
-https://www.ruby-lang.org/ja/downloads/
+### Subversionã§
-ã‚’å‚ç…§ã—ã¦ãã ã•ã„.
+開発先端ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã§å–å¾—ã§ãã¾ã™ï¼Ž
-### Git
+ $ svn co https://svn.ruby-lang.org/repos/ruby/trunk/ ruby
-ミラーをGitHubã«å…¬é–‹ã—ã¦ã„ã¾ã™ï¼Ž 以下ã®ã‚³ãƒžãƒ³ãƒ‰ã§ãƒªãƒã‚¸ãƒˆãƒªã‚’å–å¾—ã§ãã¾ã™ï¼Ž
+ä»–ã«é–‹ç™ºä¸­ã®ãƒ–ランãƒã®ä¸€è¦§ã¯æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã§è¦‹ã‚‰ã‚Œã¾ã™ï¼Ž
- $ git clone https://github.com/ruby/ruby.git
+ $ svn ls https://svn.ruby-lang.org/repos/ruby/branches/
-ä»–ã®ãƒ–ランãƒã®ä¸€è¦§ã¯æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã§è¦‹ã‚‰ã‚Œã¾ã™ï¼Ž
+### Gitã§
- $ git ls-remote https://github.com/ruby/ruby.git
+Subversionã®ãƒŸãƒ©ãƒ¼ã‚’GitHubã«å…¬é–‹ã—ã¦ã„ã¾ã™ï¼Ž 以下ã®ã‚³ãƒžãƒ³ãƒ‰ã§ãƒªãƒã‚¸ãƒˆãƒªã‚’å–å¾—ã§ãã¾ã™ï¼Ž
-Rubyリãƒã‚¸ãƒˆãƒªã®æœ¬æ¥ã®master㯠https://git.ruby-lang.org/ruby.git ã«ã‚りã¾ã™ï¼Ž
-コミッタã¯ã“ã¡ã‚‰ã‚’使ã„ã¾ã™ï¼Ž
+ $ git clone git://github.com/ruby/ruby.git
## ホームページ
@@ -60,33 +55,38 @@ https://www.ruby-lang.org/
## メーリングリスト
-Rubyã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆãŒã‚りã¾ã™ï¼Žå‚åŠ å¸Œæœ›ã®æ–¹ã¯ [ruby-list-request@ml.ruby-lang.org] ã¾ã§ä»¶åã«
+Rubyã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆãŒã‚りã¾ã™ï¼Žå‚åŠ å¸Œæœ›ã®æ–¹ã¯
+
+mailto:ruby-list-request@ruby-lang.org
+
+ã¾ã§æœ¬æ–‡ã«
- join
+ subscribe
ã¨æ›¸ã„ã¦é€ã£ã¦ä¸‹ã•ã„.
-Ruby開発者å‘ã‘メーリングリストもã‚りã¾ã™ï¼Žã“ã¡ã‚‰ã§ã¯rubyã®ãƒã‚°ï¼Œå°†æ¥ã®ä»•様拡張ãªã©å®Ÿè£…上ã®å•題ã«ã¤ã„ã¦è­°è«–ã•れã¦ã„ã¾ã™ï¼Ž
-å‚åŠ å¸Œæœ›ã®æ–¹ã¯ [ruby-dev-request@ml.ruby-lang.org] ã¾ã§ruby-listã¨åŒæ§˜ã®æ–¹æ³•ã§ãƒ¡ãƒ¼ãƒ«ã—ã¦ãã ã•ã„.
+Ruby開発者å‘ã‘メーリングリストもã‚りã¾ã™ï¼Žã“ã¡ã‚‰ã§ã¯rubyã®ãƒã‚°ï¼Œå°†æ¥ã®ä»•様拡張ãªã©å®Ÿè£…上ã®å•題ã«ã¤ã„ã¦è­°è«–ã•れã¦ã„ã¾ã™ï¼Ž å‚åŠ å¸Œæœ›ã®æ–¹ã¯
+
+mailto:ruby-dev-request@ruby-lang.org
+
+ã¾ã§ruby-listã¨åŒæ§˜ã®æ–¹æ³•ã§ãƒ¡ãƒ¼ãƒ«ã—ã¦ãã ã•ã„.
Ruby拡張モジュールã«ã¤ã„ã¦è©±ã—åˆã†ruby-extãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã¨æ•°å­¦é–¢ä¿‚ã®è©±é¡Œã«ã¤ã„ã¦è©±ã—åˆã†ruby-mathメーリングリストã¨
英語ã§rubyã«ã¤ã„ã¦è©±ã—åˆã†ruby-talkメーリングリストもã‚りã¾ã™ï¼Žå‚加方法ã¯ã©ã‚Œã‚‚åŒã˜ã§ã™ï¼Ž
-[ruby-list-request@ml.ruby-lang.org]: mailto:ruby-list-request@ml.ruby-lang.org?subject=join
-[ruby-dev-request@ml.ruby-lang.org]: mailto:ruby-dev-request@ml.ruby-lang.org?subject=join
-
## コンパイル・インストール
ä»¥ä¸‹ã®æ‰‹é †ã§è¡Œã£ã¦ãã ã•ã„.
-1. (Gitリãƒã‚¸ãƒˆãƒªã‹ã‚‰å–å¾—ã—ãŸã‚½ãƒ¼ã‚¹ã‚’ビルドã™ã‚‹å ´åˆ) `./autogen.sh` を実行ã—ã¦æ–°ã—ã `configure` を生æˆã™ã‚‹
+1. ã‚‚ã— `configure` ファイルãŒè¦‹ã¤ã‹ã‚‰ãªã„,もã—ã㯠`configure.ac` よりå¤ã„よã†ãªã‚‰ï¼Œ `autoconf` を実行ã—ã¦
+ æ–°ã—ã `configure` を生æˆã™ã‚‹
2. `configure` を実行ã—㦠`Makefile` ãªã©ã‚’生æˆã™ã‚‹
環境ã«ã‚ˆã£ã¦ã¯ãƒ‡ãƒ•ォルトã®Cコンパイラ用オプションãŒä»˜ãã¾ã™ï¼Ž `configure` オプション㧠`optflags=..`
`warnflags=..` ç­‰ã§ä¸Šæ›¸ãã§ãã¾ã™ï¼Ž
-3. (å¿…è¦ãªã‚‰ã°)`include/ruby/defines.h` を編集ã™ã‚‹
+3. (å¿…è¦ãªã‚‰ã°)`defines.h` を編集ã™ã‚‹
多分,必è¦ç„¡ã„ã¨æ€ã„ã¾ã™ï¼Ž
@@ -95,8 +95,7 @@ Ruby拡張モジュールã«ã¤ã„ã¦è©±ã—åˆã†ruby-extメーリングリスãƒ
`ext/Setup` ã«è¨˜è¿°ã—ãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯é™çš„ã«ãƒªãƒ³ã‚¯ã•れã¾ã™ï¼Ž
ダイナミックローディングをサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„アーキテクãƒãƒ£ã§ã¯ `Setup` ã®1行目ã®ã€Œ`option nodynamic`ã€ã¨ã„ã†è¡Œã®ã‚³
- メントを外ã™å¿…è¦ãŒã‚りã¾ã™ï¼Ž
- ã¾ãŸï¼Œã“ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’利用ã™ã‚‹ãŸã‚ã«ã¯ï¼Œã‚らã‹ã˜ã‚é™çš„ã«ãƒªãƒ³ã‚¯ã‚’ã—ã¦ãŠãå¿…è¦ãŒã‚りã¾ã™ï¼Ž
+ メントを外ã™å¿…è¦ãŒã‚りã¾ã™ï¼Žã¾ãŸï¼Œã“ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’利用ã™ã‚‹ãŸã‚ã«ã¯ï¼Œã‚らã‹ã˜ã‚é™çš„ã«ãƒªãƒ³ã‚¯ã‚’ã—ã¦ãŠãå¿…è¦ãŒã‚りã¾ã™ï¼Ž
5. `make` を実行ã—ã¦ã‚³ãƒ³ãƒ‘イルã™ã‚‹
@@ -156,17 +155,17 @@ UNIXã§ã‚れ㰠`configure` ãŒã»ã¨ã‚“ã©ã®å·®ç•°ã‚’å¸åŽã—ã¦ãれるã¯
## フィードãƒãƒƒã‚¯
-Rubyã«é–¢ã™ã‚‹è³ªå•㯠[Ruby-Talk](英語)や [Ruby-List](日本語)や,
-[stackoverflow] ãªã©ã®Webã‚µã‚¤ãƒˆã«æŠ•ç¨¿ã—ã¦ãã ã•ã„.
+Rubyã«é–¢ã™ã‚‹è³ªå•㯠Ruby-Talk(英語)や Ruby-List(日本語) (https://www.ruby-lang.org/ja/community/mailing-lists) や,
+stackoverflow (https://ja.stackoverflow.com/) ãªã©ã®Webã‚µã‚¤ãƒˆã«æŠ•ç¨¿ã—ã¦ãã ã•ã„.
ãƒã‚°å ±å‘Šã¯ https://bugs.ruby-lang.org ã§å—ã‘付ã‘ã¦ã„ã¾ã™ï¼Ž
-[Ruby-Talk]: https://www.ruby-lang.org/en/community/mailing-lists
-[Ruby-List]: https://www.ruby-lang.org/ja/community/mailing-lists
-[stackoverflow]: https://ja.stackoverflow.com/
## 著者
Rubyã®ã‚ªãƒªã‚¸ãƒŠãƒ«ç‰ˆã¯ï¼Œ1995å¹´ã«ã¾ã¤ã‚‚ã¨ã‚†ãã²ã‚æ°ã«ã‚ˆã£ã¦è¨­è¨ˆãƒ»é–‹ç™ºã•れã¾ã—ãŸï¼Ž
<mailto:matz@ruby-lang.org>
+
+---
+created at: Thu Aug 3 11:57:36 JST 1995
diff --git a/README.md b/README.md
index 715f53287a..7a24329fe8 100644
--- a/README.md
+++ b/README.md
@@ -1,31 +1,27 @@
-[![Actions Status: MinGW](https://github.com/ruby/ruby/workflows/MinGW/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"MinGW")
-[![Actions Status: RJIT](https://github.com/ruby/ruby/workflows/RJIT/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"RJIT")
-[![Actions Status: Ubuntu](https://github.com/ruby/ruby/workflows/Ubuntu/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"Ubuntu")
-[![Actions Status: Windows](https://github.com/ruby/ruby/workflows/Windows/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"Windows")
-[![AppVeyor status](https://ci.appveyor.com/api/projects/status/0sy8rrxut4o0k960/branch/master?svg=true)](https://ci.appveyor.com/project/ruby/ruby/branch/master)
-[![Travis Status](https://app.travis-ci.com/ruby/ruby.svg?branch=master)](https://app.travis-ci.com/ruby/ruby)
-[![Cirrus Status](https://api.cirrus-ci.com/github/ruby/ruby.svg)](https://cirrus-ci.com/github/ruby/ruby/master)
+[![Build Status](https://travis-ci.org/ruby/ruby.svg)](https://travis-ci.org/ruby/ruby)
+[![Build status](https://ci.appveyor.com/api/projects/status/0sy8rrxut4o0k960/branch/trunk?svg=true)](https://ci.appveyor.com/project/ruby/ruby/branch/trunk)
-# What is Ruby?
+# What's Ruby
-Ruby is an interpreted object-oriented programming language often
-used for web development. It also offers many scripting features
-to process plain text and serialized files, or manage system tasks.
-It is simple, straightforward, and extensible.
+Ruby is the 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.
## Features of Ruby
-* Simple Syntax
-* **Normal** Object-oriented Features (e.g. class, method calls)
-* **Advanced** Object-oriented Features (e.g. mix-in, singleton-method)
-* Operator Overloading
-* Exception Handling
-* Iterators and Closures
-* Garbage Collection
-* Dynamic Loading of Object Files (on some architectures)
-* Highly Portable (works on many Unix-like/POSIX compatible platforms as
- well as Windows, macOS, etc.) cf.
- https://github.com/ruby/ruby/blob/master/doc/maintainers.md#platform-maintainers
+* Simple Syntax
+* **Normal** Object-oriented Features (e.g. class, method calls)
+* **Advanced** Object-oriented Features (e.g. mix-in, singleton-method)
+* Operator Overloading
+* Exception Handling
+* Iterators and Closures
+* Garbage Collection
+* Dynamic Loading of Object Files (on some architectures)
+* Highly Portable (works on many Unix-like/POSIX compatible platforms as
+ well as Windows, macOS, Haiku, etc.) cf.
+ https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatforms
+
## How to get Ruby
@@ -34,64 +30,146 @@ like rvm, see:
https://www.ruby-lang.org/en/downloads/
-You can download release packages and the snapshot of the repository. If you want to
-download whole versions of Ruby, please visit https://www.ruby-lang.org/en/downloads/releases/.
+The Ruby distribution files can be found on the following FTP site:
+
+ftp://ftp.ruby-lang.org/pub/ruby/
+
+The trunk of the Ruby source tree can be checked out with the following
+command:
-### Download with Git
+ $ svn co https://svn.ruby-lang.org/repos/ruby/trunk/ ruby
-The mirror of the Ruby source tree can be checked out with the following command:
+Or if you are using git then use the following command:
$ git clone https://github.com/ruby/ruby.git
There are some other branches under development. Try the following command
to see the list of branches:
- $ git ls-remote https://github.com/ruby/ruby.git
+ $ svn ls https://svn.ruby-lang.org/repos/ruby/branches/
-You may also want to use https://git.ruby-lang.org/ruby.git (actual master of Ruby source)
-if you are a committer.
+Or if you are using git then use the following command:
-## How to build
-
-see [Building Ruby](doc/contributing/building_ruby.md)
+ $ git ls-remote git://github.com/ruby/ruby.git
## Ruby home page
-https://www.ruby-lang.org/
+The URL of the Ruby home page is:
-## Documentation
-
-- [English](https://docs.ruby-lang.org/en/master/index.html)
-- [Japanese](https://docs.ruby-lang.org/ja/master/index.html)
+https://www.ruby-lang.org/
## Mailing list
-There is a mailing list to discuss Ruby. To subscribe to this list, please
+There is a mailing list to talk about Ruby. To subscribe to this list, please
send the following phrase:
- join
+ subscribe
+
+in the mail body (not subject) to the address
+<mailto:ruby-talk-request@ruby-lang.org>.
+
+## How to compile and install
+
+This is what you need to do to compile and install Ruby:
+
+1. If you want to use Microsoft Visual C++ to compile Ruby, read
+ [win32/README.win32](win32/README.win32) instead of this document.
+
+2. If `./configure` does not exist or is older than `configure.ac`, run
+ `autoconf` to (re)generate configure.
+
+3. Run `./configure`, which will generate `config.h` and `Makefile`.
+
+ Some C compiler flags may be added by default depending on your
+ environment. Specify `optflags=..` and `warnflags=..` as necessary to
+ override them.
+
+4. Edit `defines.h` if you need. Usually this step will not be needed.
+
+5. Remove comment mark(`#`) before the module names from `ext/Setup` (or add
+ module names if not present), if you want to link modules statically.
+
+ If you don't want to compile non static extension modules (probably on
+ architectures which do not allow dynamic loading), remove comment mark
+ from the line "`#option nodynamic`" in `ext/Setup`.
-in the mail subject (not body) to the address [ruby-talk-request@ml.ruby-lang.org].
+ Usually this step will not be needed.
-[ruby-talk-request@ml.ruby-lang.org]: mailto:ruby-talk-request@ml.ruby-lang.org?subject=join
+6. Run `make`.
+
+ * On Mac, set RUBY\_CODESIGN environment variable with a signing identity.
+ It uses the identity to sign `ruby` binary. See also codesign(1).
+
+7. Optionally, run '`make check`' to check whether the compiled Ruby
+ interpreter works well. If you see the message "`check succeeded`", your
+ Ruby works as it should (hopefully).
+
+8. Optionally, run `make update-gems` and `make extract-gems`.
+
+ If you want to install bundled gems, run `make update-gems` and
+ `make extract-gems` before running `make install`.
+
+9. Run '`make install`'.
+
+ This command will create the following directories and install files into
+ them.
+
+ * `${DESTDIR}${prefix}/bin`
+ * `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}`
+ * `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
+ * `${DESTDIR}${prefix}/lib`
+ * `${DESTDIR}${prefix}/lib/ruby`
+ * `${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}`
+ * `${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
+ * `${DESTDIR}${prefix}/lib/ruby/site_ruby`
+ * `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}`
+ * `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
+ * `${DESTDIR}${prefix}/lib/ruby/vendor_ruby`
+ * `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}`
+ * `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
+ * `${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}`
+ * `${DESTDIR}${prefix}/share/man/man1`
+ * `${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system`
+
+
+ If Ruby's API version is '*x.y.z*', the `${MAJOR}` is '*x*', the
+ `${MINOR}` is '*y*', and the `${TEENY}` is '*z*'.
+
+ **NOTE**: teeny of the API version may be different from one of Ruby's
+ program version
+
+ You may have to be a super user to install Ruby.
+
+
+If you fail to compile Ruby, please send the detailed error report with the
+error log and machine/OS type, to help others.
+
+Some extension libraries may not get compiled because of lack of necessary
+external libraries and/or headers, then you will need to run '`make distclean-ext`'
+to remove old configuration after installing them in such case.
## Copying
-See the file [COPYING](rdoc-ref:COPYING).
+See the file [COPYING](COPYING).
## Feedback
-Questions about the Ruby language can be asked on the [Ruby-Talk](https://www.ruby-lang.org/en/community/mailing-lists) mailing list
-or on websites like https://stackoverflow.com.
+Questions about the Ruby language can be asked on the Ruby-Talk mailing list
+(https://www.ruby-lang.org/en/community/mailing-lists) or on websites like
+(https://stackoverflow.com).
-Bugs should be reported at https://bugs.ruby-lang.org. Read ["Reporting Issues"](https://docs.ruby-lang.org/en/master/contributing/reporting_issues_md.html) for more information.
+Bug reports should be filed at https://bugs.ruby-lang.org. Read [HowToReport] for more information.
+
+[HowToReport]: https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport
## Contributing
-See ["Contributing to Ruby"](https://docs.ruby-lang.org/en/master/contributing_md.html), which includes setup and build instructions.
+See the file [CONTRIBUTING.md](CONTRIBUTING.md)
+
## The Author
-Ruby was originally designed and developed by Yukihiro Matsumoto (Matz) in 1995.
+Ruby was originally designed and developed by Yukihiro Matsumoto (Matz) in
+1995.
-<matz@ruby-lang.org>
+<mailto:matz@ruby-lang.org>
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 0000000000..99b24e6d93
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,46 @@
+# -*- autoconf -*-
+
+AC_DEFUN([_COLORIZE_RESULT_PREPARE], [
+ msg_checking= msg_result_yes= msg_result_no= msg_result_other= msg_reset=
+ AS_IF([test "x${CONFIGURE_TTY}" = xyes -o -t 1], [
+ msg_begin="`tput smso 2>/dev/null`"
+ AS_CASE(["$msg_begin"], ['@<:@'*m],
+ [msg_begin="`echo "$msg_begin" | sed ['s/[0-9]*m$//']`"
+ msg_checking="${msg_begin}33m"
+ AS_IF([test ${TEST_COLORS:+set}], [
+ msg_result_yes=[`expr ":$TEST_COLORS:" : ".*:pass=\([^:]*\):"`]
+ msg_result_no=[`expr ":$TEST_COLORS:" : ".*:fail=\([^:]*\):"`]
+ msg_result_other=[`expr ":$TEST_COLORS:" : ".*:skip=\([^:]*\):"`]
+ ])
+ msg_result_yes="${msg_begin}${msg_result_yes:-32;1}m"
+ msg_result_no="${msg_begin}${msg_result_no:-31;1}m"
+ msg_result_other="${msg_begin}${msg_result_other:-33;1}m"
+ msg_reset="${msg_begin}m"
+ ])
+ AS_UNSET(msg_begin)
+ ])
+ AS_REQUIRE_SHELL_FN([colorize_result],
+ [AS_FUNCTION_DESCRIBE([colorize_result], [MSG], [Colorize result])],
+ [AS_CASE(["$[]1"],
+ [yes], [AS_ECHO(["${msg_result_yes}$[]1${msg_reset}]")],
+ [no], [AS_ECHO(["${msg_result_no}$[]1${msg_reset}]")],
+ [AS_ECHO(["${msg_result_other}$[]1${msg_reset}]")])])
+])
+
+AC_DEFUN([COLORIZE_RESULT], [AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
+ AS_LITERAL_IF([$1],
+ [m4_case([$1],
+ [yes], [AS_ECHO(["${msg_result_yes}$1${msg_reset}"])],
+ [no], [AS_ECHO(["${msg_result_no}$1${msg_reset}"])],
+ [AS_ECHO(["${msg_result_other}$1${msg_reset}"])])],
+ [colorize_result "$1"]) dnl
+])
+
+AC_DEFUN([AC_CHECKING],[dnl
+AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
+AS_MESSAGE([checking ${msg_checking}$1${msg_reset}...])])
+
+AC_DEFUN([AC_MSG_RESULT], [dnl
+{ _AS_ECHO_LOG([result: $1])
+COLORIZE_RESULT([$1]); dnl
+}])
diff --git a/aclocal.m4 b/aclocal.m4
index e69de29bb2..18ba297b05 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -0,0 +1,15 @@
+# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
+
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_include([acinclude.m4])
diff --git a/addr2line.c b/addr2line.c
index 2f54c14162..09fcc3c225 100644
--- a/addr2line.c
+++ b/addr2line.c
@@ -8,26 +8,20 @@
**********************************************************************/
-#if defined(__clang__)
-#pragma clang diagnostic ignored "-Wgnu-empty-initializer"
-#pragma clang diagnostic ignored "-Wgcc-compat"
-#endif
-
-#include "ruby/internal/config.h"
-#include "ruby/defines.h"
+#include "ruby/config.h"
#include "ruby/missing.h"
#include "addr2line.h"
#include <stdio.h>
#include <errno.h>
-#ifdef HAVE_LIBPROC_H
-#include <libproc.h>
+#ifdef HAVE_STDBOOL_H
+#include <stdbool.h>
+#else
+#include "missing/stdbool.h"
#endif
-#include "ruby/internal/stdbool.h"
-
-#if defined(USE_ELF) || defined(HAVE_MACH_O_LOADER_H)
+#ifdef USE_ELF
#include <fcntl.h>
#include <limits.h>
@@ -40,6 +34,12 @@
#include <sys/stat.h>
#include <unistd.h>
+#ifdef __OpenBSD__
+#include <elf_abi.h>
+#else
+#include <elf.h>
+#endif
+
/* Make alloca work the best possible way. */
#ifdef __GNUC__
# ifndef alloca
@@ -63,20 +63,24 @@ void *alloca();
# include <dlfcn.h>
#endif
-#ifdef HAVE_MACH_O_LOADER_H
-# include <crt_externs.h>
-# include <mach-o/fat.h>
-# include <mach-o/loader.h>
-# include <mach-o/nlist.h>
-# include <mach-o/stab.h>
-#endif
+#define DW_LNS_copy 0x01
+#define DW_LNS_advance_pc 0x02
+#define DW_LNS_advance_line 0x03
+#define DW_LNS_set_file 0x04
+#define DW_LNS_set_column 0x05
+#define DW_LNS_negate_stmt 0x06
+#define DW_LNS_set_basic_block 0x07
+#define DW_LNS_const_add_pc 0x08
+#define DW_LNS_fixed_advance_pc 0x09
+#define DW_LNS_set_prologue_end 0x0a /* DWARF3 */
+#define DW_LNS_set_epilogue_begin 0x0b /* DWARF3 */
+#define DW_LNS_set_isa 0x0c /* DWARF3 */
-#ifdef USE_ELF
-# ifdef __OpenBSD__
-# include <elf_abi.h>
-# else
-# include <elf.h>
-# endif
+/* Line number extended opcode name. */
+#define DW_LNE_end_sequence 0x01
+#define DW_LNE_set_address 0x02
+#define DW_LNE_define_file 0x03
+#define DW_LNE_set_discriminator 0x04 /* DWARF4 */
#ifndef ElfW
# if SIZEOF_VOIDP == 8
@@ -92,44 +96,17 @@ void *alloca();
# define ELF_ST_TYPE ELF32_ST_TYPE
# endif
#endif
-#endif
-
-#ifdef SHF_COMPRESSED
-# if defined(ELFCOMPRESS_ZLIB) && defined(HAVE_LIBZ)
- /* FreeBSD 11.0 lacks ELFCOMPRESS_ZLIB */
-# include <zlib.h>
-# define SUPPORT_COMPRESSED_DEBUG_LINE
-# endif
-#else /* compatibility with glibc < 2.22 */
-# define SHF_COMPRESSED 0
-#endif
-
#ifndef PATH_MAX
#define PATH_MAX 4096
#endif
-#define DW_LNS_copy 0x01
-#define DW_LNS_advance_pc 0x02
-#define DW_LNS_advance_line 0x03
-#define DW_LNS_set_file 0x04
-#define DW_LNS_set_column 0x05
-#define DW_LNS_negate_stmt 0x06
-#define DW_LNS_set_basic_block 0x07
-#define DW_LNS_const_add_pc 0x08
-#define DW_LNS_fixed_advance_pc 0x09
-#define DW_LNS_set_prologue_end 0x0a /* DWARF3 */
-#define DW_LNS_set_epilogue_begin 0x0b /* DWARF3 */
-#define DW_LNS_set_isa 0x0c /* DWARF3 */
-
-/* Line number extended opcode name. */
-#define DW_LNE_end_sequence 0x01
-#define DW_LNE_set_address 0x02
-#define DW_LNE_define_file 0x03
-#define DW_LNE_set_discriminator 0x04 /* DWARF4 */
+#ifndef SHF_COMPRESSED /* compatibility with glibc < 2.22 */
+#define SHF_COMPRESSED 0
+#endif
-PRINTF_ARGS(static int kprintf(const char *fmt, ...), 1, 2);
+int kprintf(const char *fmt, ...);
-typedef struct line_info {
+typedef struct {
const char *dirname;
const char *filename;
const char *path; /* object path */
@@ -138,72 +115,27 @@ typedef struct line_info {
uintptr_t base_addr;
uintptr_t saddr;
const char *sname; /* function name */
-
- struct line_info *next;
} line_info_t;
-
-struct dwarf_section {
- char *ptr;
- size_t size;
- uint64_t flags;
-};
-
-typedef struct obj_info {
+typedef struct obj_info obj_info_t;
+struct obj_info {
const char *path; /* object path */
- char *mapped;
+ int fd;
+ void *mapped;
size_t mapped_size;
- void *uncompressed;
uintptr_t base_addr;
- uintptr_t vmaddr;
- struct dwarf_section debug_abbrev;
- struct dwarf_section debug_info;
- struct dwarf_section debug_line;
- struct dwarf_section debug_ranges;
- struct dwarf_section debug_str_offsets;
- struct dwarf_section debug_addr;
- struct dwarf_section debug_rnglists;
- struct dwarf_section debug_str;
- struct dwarf_section debug_line_str;
- struct obj_info *next;
-} obj_info_t;
-
-#define DWARF_SECTION_COUNT 9
-
-static struct dwarf_section *
-obj_dwarf_section_at(obj_info_t *obj, int n)
-{
- struct dwarf_section *ary[] = {
- &obj->debug_abbrev,
- &obj->debug_info,
- &obj->debug_line,
- &obj->debug_ranges,
- &obj->debug_str_offsets,
- &obj->debug_addr,
- &obj->debug_rnglists,
- &obj->debug_str,
- &obj->debug_line_str
- };
- if (n < 0 || DWARF_SECTION_COUNT <= n) {
- abort();
- }
- return ary[n];
-}
-
-struct debug_section_definition {
- const char *name;
- struct dwarf_section *dwarf;
+ obj_info_t *next;
};
/* Avoid consuming stack as this module may be used from signal handler */
-static char binary_filename[PATH_MAX + 1];
+static char binary_filename[PATH_MAX];
static unsigned long
-uleb128(const char **p)
+uleb128(char **p)
{
unsigned long r = 0;
int s = 0;
for (;;) {
- unsigned char b = (unsigned char)*(*p)++;
+ unsigned char b = *(unsigned char *)(*p)++;
if (b < 0x80) {
r += (unsigned long)b << s;
break;
@@ -215,12 +147,12 @@ uleb128(const char **p)
}
static long
-sleb128(const char **p)
+sleb128(char **p)
{
long r = 0;
int s = 0;
for (;;) {
- unsigned char b = (unsigned char)*(*p)++;
+ unsigned char b = *(unsigned char *)(*p)++;
if (b < 0x80) {
if (b & 0x40) {
r -= (0x80 - b) << s;
@@ -237,7 +169,7 @@ sleb128(const char **p)
}
static const char *
-get_nth_dirname(unsigned long dir, const char *p)
+get_nth_dirname(unsigned long dir, char *p)
{
if (!dir--) {
return "";
@@ -254,191 +186,141 @@ get_nth_dirname(unsigned long dir, const char *p)
return p;
}
-static const char *parse_ver5_debug_line_header(const char *p, int idx, uint8_t format, obj_info_t *obj, const char **out_path, uint64_t *out_directory_index);
-
static void
-fill_filename(int file, uint8_t format, uint16_t version, const char *include_directories, const char *filenames, line_info_t *line, obj_info_t *obj)
+fill_filename(int file, char *include_directories, char *filenames,
+ line_info_t *line)
{
int i;
- const char *p = filenames;
- const char *filename;
+ char *p = filenames;
+ char *filename;
unsigned long dir;
- if (version >= 5) {
- const char *path;
- uint64_t directory_index = -1;
- parse_ver5_debug_line_header(filenames, file, format, obj, &path, &directory_index);
- line->filename = path;
- parse_ver5_debug_line_header(include_directories, (int)directory_index, format, obj, &path, NULL);
- line->dirname = path;
- }
- else {
- for (i = 1; i <= file; i++) {
- filename = p;
- if (!*p) {
- /* Need to output binary file name? */
- kprintf("Unexpected file number %d in %s at %tx\n",
- file, binary_filename, filenames - obj->mapped);
- return;
- }
- while (*p) p++;
- p++;
- dir = uleb128(&p);
- /* last modified. */
- uleb128(&p);
- /* size of the file. */
- uleb128(&p);
-
- if (i == file) {
- line->filename = filename;
- line->dirname = get_nth_dirname(dir, include_directories);
- }
- }
+ for (i = 1; i <= file; i++) {
+ filename = p;
+ if (!*p) {
+ /* Need to output binary file name? */
+ kprintf("Unexpected file number %d in %s\n",
+ file, binary_filename);
+ return;
+ }
+ while (*p) p++;
+ p++;
+ dir = uleb128(&p);
+ /* last modified. */
+ uleb128(&p);
+ /* size of the file. */
+ uleb128(&p);
+
+ if (i == file) {
+ line->filename = filename;
+ line->dirname = get_nth_dirname(dir, include_directories);
+ }
}
}
static void
fill_line(int num_traces, void **traces, uintptr_t addr, int file, int line,
- uint8_t format, uint16_t version, const char *include_directories, const char *filenames,
+ char *include_directories, char *filenames,
obj_info_t *obj, line_info_t *lines, int offset)
{
int i;
- addr += obj->base_addr - obj->vmaddr;
+ addr += obj->base_addr;
for (i = offset; i < num_traces; i++) {
uintptr_t a = (uintptr_t)traces[i];
/* We assume one line code doesn't result >100 bytes of native code.
We may want more reliable way eventually... */
if (addr < a && a < addr + 100) {
- fill_filename(file, format, version, include_directories, filenames, &lines[i], obj);
+ fill_filename(file, include_directories, filenames, &lines[i]);
lines[i].line = line;
}
}
}
-struct LineNumberProgramHeader {
- uint64_t unit_length;
- uint16_t version;
- uint8_t format; /* 4 or 8 */
- uint64_t header_length;
- uint8_t minimum_instruction_length;
- uint8_t maximum_operations_per_instruction;
- uint8_t default_is_stmt;
- int8_t line_base;
- uint8_t line_range;
- uint8_t opcode_base;
- /* uint8_t standard_opcode_lengths[opcode_base-1]; */
- const char *include_directories;
- const char *filenames;
- const char *cu_start;
- const char *cu_end;
-};
-
static int
-parse_debug_line_header(obj_info_t *obj, const char **pp, struct LineNumberProgramHeader *header)
+parse_debug_line_cu(int num_traces, void **traces, char **debug_line,
+ obj_info_t *obj, line_info_t *lines, int offset)
{
- const char *p = *pp;
- header->unit_length = *(uint32_t *)p;
- p += sizeof(uint32_t);
-
- header->format = 4;
- if (header->unit_length == 0xffffffff) {
- header->unit_length = *(uint64_t *)p;
- p += sizeof(uint64_t);
- header->format = 8;
- }
+ char *p, *cu_end, *cu_start, *include_directories, *filenames;
+ unsigned long unit_length;
+ int default_is_stmt, line_base;
+ unsigned int header_length, minimum_instruction_length, line_range,
+ opcode_base;
+ /* unsigned char *standard_opcode_lengths; */
- header->cu_end = p + header->unit_length;
+ /* The registers. */
+ unsigned long addr = 0;
+ unsigned int file = 1;
+ unsigned int line = 1;
+ /* unsigned int column = 0; */
+ int is_stmt;
+ /* int basic_block = 0; */
+ /* int end_sequence = 0; */
+ /* int prologue_end = 0; */
+ /* int epilogue_begin = 0; */
+ /* unsigned int isa = 0; */
- header->version = *(uint16_t *)p;
- p += sizeof(uint16_t);
- if (header->version > 5) return -1;
+ p = *debug_line;
- if (header->version >= 5) {
- /* address_size = *(uint8_t *)p++; */
- /* segment_selector_size = *(uint8_t *)p++; */
- p += 2;
+ unit_length = *(unsigned int *)p;
+ p += sizeof(unsigned int);
+ if (unit_length == 0xffffffff) {
+ unit_length = *(unsigned long *)p;
+ p += sizeof(unsigned long);
}
- header->header_length = header->format == 4 ? *(uint32_t *)p : *(uint64_t *)p;
- p += header->format;
- header->cu_start = p + header->header_length;
+ cu_end = p + unit_length;
- header->minimum_instruction_length = *(uint8_t *)p++;
+ /*dwarf_version = *(unsigned short *)p;*/
+ p += 2;
- if (header->version >= 4) {
- /* maximum_operations_per_instruction = *(uint8_t *)p; */
- if (*p != 1) return -1; /* For non-VLIW architectures, this field is 1 */
- p++;
- }
+ header_length = *(unsigned int *)p;
+ p += sizeof(unsigned int);
- header->default_is_stmt = *(uint8_t *)p++;
- header->line_base = *(int8_t *)p++;
- header->line_range = *(uint8_t *)p++;
- header->opcode_base = *(uint8_t *)p++;
- /* header->standard_opcode_lengths = (uint8_t *)p - 1; */
- p += header->opcode_base - 1;
-
- if (header->version >= 5) {
- header->include_directories = p;
- p = parse_ver5_debug_line_header(p, -1, header->format, obj, NULL, NULL);
- header->filenames = p;
- }
- else {
- header->include_directories = p;
+ cu_start = p + header_length;
- /* temporary measure for compress-debug-sections */
- if (p >= header->cu_end) return -1;
+ minimum_instruction_length = *(unsigned char *)p;
+ p++;
- /* skip include directories */
- while (*p) {
- p = memchr(p, '\0', header->cu_end - p);
- if (!p) return -1;
- p++;
- }
- p++;
+ is_stmt = default_is_stmt = *(unsigned char *)p;
+ p++;
- header->filenames = p;
- }
+ line_base = *(signed char *)p;
+ p++;
- *pp = header->cu_start;
+ line_range = *(unsigned char *)p;
+ p++;
- return 0;
-}
+ opcode_base = *(unsigned char *)p;
+ p++;
-static int
-parse_debug_line_cu(int num_traces, void **traces, const char **debug_line,
- obj_info_t *obj, line_info_t *lines, int offset)
-{
- const char *p = (const char *)*debug_line;
- struct LineNumberProgramHeader header;
+ /* standard_opcode_lengths = (unsigned char *)p - 1; */
+ p += opcode_base - 1;
- /* The registers. */
- unsigned long addr = 0;
- unsigned int file = 1;
- unsigned int line = 1;
- /* unsigned int column = 0; */
- int is_stmt;
- /* int basic_block = 0; */
- /* int end_sequence = 0; */
- /* int prologue_end = 0; */
- /* int epilogue_begin = 0; */
- /* unsigned int isa = 0; */
+ include_directories = p;
- if (parse_debug_line_header(obj, &p, &header))
- return -1;
- is_stmt = header.default_is_stmt;
+ /* temporary measure for compress-debug-sections */
+ if (p >= cu_end) return -1;
+
+ /* skip include directories */
+ while (*p) {
+ p = memchr(p, '\0', cu_end - p);
+ if (!p) return -1;
+ p++;
+ }
+ p++;
+
+ filenames = p;
+
+ p = cu_start;
#define FILL_LINE() \
do { \
fill_line(num_traces, traces, addr, file, line, \
- header.format, \
- header.version, \
- header.include_directories, \
- header.filenames, \
+ include_directories, filenames, \
obj, lines, offset); \
/*basic_block = prologue_end = epilogue_begin = 0;*/ \
} while (0)
- while (p < header.cu_end) {
+ while (p < cu_end) {
unsigned long a;
unsigned char op = *p++;
switch (op) {
@@ -446,7 +328,7 @@ parse_debug_line_cu(int num_traces, void **traces, const char **debug_line,
FILL_LINE();
break;
case DW_LNS_advance_pc:
- a = uleb128(&p) * header.minimum_instruction_length;
+ a = uleb128(&p);
addr += a;
break;
case DW_LNS_advance_line: {
@@ -467,13 +349,12 @@ parse_debug_line_cu(int num_traces, void **traces, const char **debug_line,
/*basic_block = 1; */
break;
case DW_LNS_const_add_pc:
- a = ((255UL - header.opcode_base) / header.line_range) *
- header.minimum_instruction_length;
+ a = ((255 - opcode_base) / line_range) *
+ minimum_instruction_length;
addr += a;
break;
case DW_LNS_fixed_advance_pc:
- a = *(uint16_t *)p;
- p += sizeof(uint16_t);
+ a = *(unsigned char *)p++;
addr += a;
break;
case DW_LNS_set_prologue_end:
@@ -486,7 +367,7 @@ parse_debug_line_cu(int num_traces, void **traces, const char **debug_line,
/* isa = (unsigned int)*/(void)uleb128(&p);
break;
case 0:
- a = uleb128(&p);
+ a = *(unsigned char *)p++;
op = *p++;
switch (op) {
case DW_LNE_end_sequence:
@@ -496,7 +377,7 @@ parse_debug_line_cu(int num_traces, void **traces, const char **debug_line,
file = 1;
line = 1;
/* column = 0; */
- is_stmt = header.default_is_stmt;
+ is_stmt = default_is_stmt;
/* end_sequence = 0; */
/* isa = 0; */
break;
@@ -518,25 +399,27 @@ parse_debug_line_cu(int num_traces, void **traces, const char **debug_line,
}
break;
default: {
- uint8_t adjusted_opcode = op - header.opcode_base;
- uint8_t operation_advance = adjusted_opcode / header.line_range;
- /* NOTE: this code doesn't support VLIW */
- addr += operation_advance * header.minimum_instruction_length;
- line += header.line_base + (adjusted_opcode % header.line_range);
+ unsigned long addr_incr;
+ unsigned long line_incr;
+ a = op - opcode_base;
+ addr_incr = (a / line_range) * minimum_instruction_length;
+ line_incr = line_base + (a % line_range);
+ addr += (unsigned int)addr_incr;
+ line += (unsigned int)line_incr;
FILL_LINE();
}
}
}
- *debug_line = (char *)p;
+ *debug_line = p;
return 0;
}
static int
parse_debug_line(int num_traces, void **traces,
- const char *debug_line, unsigned long size,
+ char *debug_line, unsigned long size,
obj_info_t *obj, line_info_t *lines, int offset)
{
- const char *debug_line_end = debug_line + size;
+ char *debug_line_end = debug_line + size;
while (debug_line < debug_line_end) {
if (parse_debug_line_cu(num_traces, traces, &debug_line, obj, lines, offset))
return -1;
@@ -561,26 +444,13 @@ append_obj(obj_info_t **objp)
*objp = newobj;
}
-#ifdef USE_ELF
-/* Ideally we should check 4 paths to follow gnu_debuglink:
- *
- * - /usr/lib/debug/.build-id/ab/cdef1234.debug
- * - /usr/bin/ruby.debug
- * - /usr/bin/.debug/ruby.debug
- * - /usr/lib/debug/usr/bin/ruby.debug.
- *
- * but we handle only two cases for now as the two formats are
- * used by some linux distributions.
- *
- * See GDB's info for detail.
- * https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html
- */
-
-// check the path pattern of "/usr/lib/debug/usr/bin/ruby.debug"
static void
follow_debuglink(const char *debuglink, int num_traces, void **traces,
obj_info_t **objp, line_info_t *lines, int offset)
{
+ /* Ideally we should check 4 paths to follow gnu_debuglink,
+ but we handle only one case for now as this format is used
+ by some linux distributions. See GDB's info for detail. */
static const char global_debug_dir[] = "/usr/lib/debug";
const size_t global_debug_dir_len = sizeof(global_debug_dir) - 1;
char *p;
@@ -608,1394 +478,6 @@ follow_debuglink(const char *debuglink, int num_traces, void **traces,
fill_lines(num_traces, traces, 0, objp, lines, offset);
}
-// check the path pattern of "/usr/lib/debug/.build-id/ab/cdef1234.debug"
-static void
-follow_debuglink_build_id(const char *build_id, size_t build_id_size, int num_traces, void **traces,
- obj_info_t **objp, line_info_t *lines, int offset)
-{
- static const char global_debug_dir[] = "/usr/lib/debug/.build-id/";
- const size_t global_debug_dir_len = sizeof(global_debug_dir) - 1;
- char *p;
- obj_info_t *o1 = *objp, *o2;
- size_t i;
-
- if (PATH_MAX < global_debug_dir_len + 1 + build_id_size * 2 + 6) return;
-
- memcpy(binary_filename, global_debug_dir, global_debug_dir_len);
- p = binary_filename + global_debug_dir_len;
- for (i = 0; i < build_id_size; i++) {
- static const char tbl[] = "0123456789abcdef";
- unsigned char n = build_id[i];
- *p++ = tbl[n / 16];
- *p++ = tbl[n % 16];
- if (i == 0) *p++ = '/';
- }
- strcpy(p, ".debug");
-
- append_obj(objp);
- o2 = *objp;
- o2->base_addr = o1->base_addr;
- o2->path = o1->path;
- fill_lines(num_traces, traces, 0, objp, lines, offset);
-}
-#endif
-
-enum
-{
- DW_TAG_compile_unit = 0x11,
- DW_TAG_inlined_subroutine = 0x1d,
- DW_TAG_subprogram = 0x2e,
-};
-
-/* Attributes encodings */
-enum
-{
- DW_AT_sibling = 0x01,
- DW_AT_location = 0x02,
- DW_AT_name = 0x03,
- /* Reserved 0x04 */
- /* Reserved 0x05 */
- /* Reserved 0x06 */
- /* Reserved 0x07 */
- /* Reserved 0x08 */
- DW_AT_ordering = 0x09,
- /* Reserved 0x0a */
- DW_AT_byte_size = 0x0b,
- /* Reserved 0x0c */
- DW_AT_bit_size = 0x0d,
- /* Reserved 0x0e */
- /* Reserved 0x0f */
- DW_AT_stmt_list = 0x10,
- DW_AT_low_pc = 0x11,
- DW_AT_high_pc = 0x12,
- DW_AT_language = 0x13,
- /* Reserved 0x14 */
- DW_AT_discr = 0x15,
- DW_AT_discr_value = 0x16,
- DW_AT_visibility = 0x17,
- DW_AT_import = 0x18,
- DW_AT_string_length = 0x19,
- DW_AT_common_reference = 0x1a,
- DW_AT_comp_dir = 0x1b,
- DW_AT_const_value = 0x1c,
- DW_AT_containing_type = 0x1d,
- DW_AT_default_value = 0x1e,
- /* Reserved 0x1f */
- DW_AT_inline = 0x20,
- DW_AT_is_optional = 0x21,
- DW_AT_lower_bound = 0x22,
- /* Reserved 0x23 */
- /* Reserved 0x24 */
- DW_AT_producer = 0x25,
- /* Reserved 0x26 */
- DW_AT_prototyped = 0x27,
- /* Reserved 0x28 */
- /* Reserved 0x29 */
- DW_AT_return_addr = 0x2a,
- /* Reserved 0x2b */
- DW_AT_start_scope = 0x2c,
- /* Reserved 0x2d */
- DW_AT_bit_stride = 0x2e,
- DW_AT_upper_bound = 0x2f,
- /* Reserved 0x30 */
- DW_AT_abstract_origin = 0x31,
- DW_AT_accessibility = 0x32,
- DW_AT_address_class = 0x33,
- DW_AT_artificial = 0x34,
- DW_AT_base_types = 0x35,
- DW_AT_calling_convention = 0x36,
- DW_AT_count = 0x37,
- DW_AT_data_member_location = 0x38,
- DW_AT_decl_column = 0x39,
- DW_AT_decl_file = 0x3a,
- DW_AT_decl_line = 0x3b,
- DW_AT_declaration = 0x3c,
- DW_AT_discr_list = 0x3d,
- DW_AT_encoding = 0x3e,
- DW_AT_external = 0x3f,
- DW_AT_frame_base = 0x40,
- DW_AT_friend = 0x41,
- DW_AT_identifier_case = 0x42,
- /* Reserved 0x43 */
- DW_AT_namelist_item = 0x44,
- DW_AT_priority = 0x45,
- DW_AT_segment = 0x46,
- DW_AT_specification = 0x47,
- DW_AT_static_link = 0x48,
- DW_AT_type = 0x49,
- DW_AT_use_location = 0x4a,
- DW_AT_variable_parameter = 0x4b,
- DW_AT_virtuality = 0x4c,
- DW_AT_vtable_elem_location = 0x4d,
- DW_AT_allocated = 0x4e,
- DW_AT_associated = 0x4f,
- DW_AT_data_location = 0x50,
- DW_AT_byte_stride = 0x51,
- DW_AT_entry_pc = 0x52,
- DW_AT_use_UTF8 = 0x53,
- DW_AT_extension = 0x54,
- DW_AT_ranges = 0x55,
- DW_AT_trampoline = 0x56,
- DW_AT_call_column = 0x57,
- DW_AT_call_file = 0x58,
- DW_AT_call_line = 0x59,
- DW_AT_description = 0x5a,
- DW_AT_binary_scale = 0x5b,
- DW_AT_decimal_scale = 0x5c,
- DW_AT_small = 0x5d,
- DW_AT_decimal_sign = 0x5e,
- DW_AT_digit_count = 0x5f,
- DW_AT_picture_string = 0x60,
- DW_AT_mutable = 0x61,
- DW_AT_threads_scaled = 0x62,
- DW_AT_explicit = 0x63,
- DW_AT_object_pointer = 0x64,
- DW_AT_endianity = 0x65,
- DW_AT_elemental = 0x66,
- DW_AT_pure = 0x67,
- DW_AT_recursive = 0x68,
- DW_AT_signature = 0x69,
- DW_AT_main_subprogram = 0x6a,
- DW_AT_data_bit_offset = 0x6b,
- DW_AT_const_expr = 0x6c,
- DW_AT_enum_class = 0x6d,
- DW_AT_linkage_name = 0x6e,
- DW_AT_string_length_bit_size = 0x6f,
- DW_AT_string_length_byte_size = 0x70,
- DW_AT_rank = 0x71,
- DW_AT_str_offsets_base = 0x72,
- DW_AT_addr_base = 0x73,
- DW_AT_rnglists_base = 0x74,
- /* Reserved 0x75 */
- DW_AT_dwo_name = 0x76,
- DW_AT_reference = 0x77,
- DW_AT_rvalue_reference = 0x78,
- DW_AT_macros = 0x79,
- DW_AT_call_all_calls = 0x7a,
- DW_AT_call_all_source_calls = 0x7b,
- DW_AT_call_all_tail_calls = 0x7c,
- DW_AT_call_return_pc = 0x7d,
- DW_AT_call_value = 0x7e,
- DW_AT_call_origin = 0x7f,
- DW_AT_call_parameter = 0x80,
- DW_AT_call_pc = 0x81,
- DW_AT_call_tail_call = 0x82,
- DW_AT_call_target = 0x83,
- DW_AT_call_target_clobbered = 0x84,
- DW_AT_call_data_location = 0x85,
- DW_AT_call_data_value = 0x86,
- DW_AT_noreturn = 0x87,
- DW_AT_alignment = 0x88,
- DW_AT_export_symbols = 0x89,
- DW_AT_deleted = 0x8a,
- DW_AT_defaulted = 0x8b,
- DW_AT_loclists_base = 0x8c,
- DW_AT_lo_user = 0x2000,
- DW_AT_hi_user = 0x3fff
-};
-
-/* Attribute form encodings */
-enum
-{
- DW_FORM_addr = 0x01,
- /* Reserved 0x02 */
- DW_FORM_block2 = 0x03,
- DW_FORM_block4 = 0x04,
- DW_FORM_data2 = 0x05,
- DW_FORM_data4 = 0x06,
- DW_FORM_data8 = 0x07,
- DW_FORM_string = 0x08,
- DW_FORM_block = 0x09,
- DW_FORM_block1 = 0x0a,
- DW_FORM_data1 = 0x0b,
- DW_FORM_flag = 0x0c,
- DW_FORM_sdata = 0x0d,
- DW_FORM_strp = 0x0e,
- DW_FORM_udata = 0x0f,
- DW_FORM_ref_addr = 0x10,
- DW_FORM_ref1 = 0x11,
- DW_FORM_ref2 = 0x12,
- DW_FORM_ref4 = 0x13,
- DW_FORM_ref8 = 0x14,
- DW_FORM_ref_udata = 0x15,
- DW_FORM_indirect = 0x16,
- DW_FORM_sec_offset = 0x17,
- DW_FORM_exprloc = 0x18,
- DW_FORM_flag_present = 0x19,
- DW_FORM_strx = 0x1a,
- DW_FORM_addrx = 0x1b,
- DW_FORM_ref_sup4 = 0x1c,
- DW_FORM_strp_sup = 0x1d,
- DW_FORM_data16 = 0x1e,
- DW_FORM_line_strp = 0x1f,
- DW_FORM_ref_sig8 = 0x20,
- DW_FORM_implicit_const = 0x21,
- DW_FORM_loclistx = 0x22,
- DW_FORM_rnglistx = 0x23,
- DW_FORM_ref_sup8 = 0x24,
- DW_FORM_strx1 = 0x25,
- DW_FORM_strx2 = 0x26,
- DW_FORM_strx3 = 0x27,
- DW_FORM_strx4 = 0x28,
- DW_FORM_addrx1 = 0x29,
- DW_FORM_addrx2 = 0x2a,
- DW_FORM_addrx3 = 0x2b,
- DW_FORM_addrx4 = 0x2c,
-
- /* GNU extensions for referring to .gnu_debugaltlink dwz-compressed info */
- DW_FORM_GNU_ref_alt = 0x1f20,
- DW_FORM_GNU_strp_alt = 0x1f21
-};
-
-/* Range list entry encodings */
-enum {
- DW_RLE_end_of_list = 0x00,
- DW_RLE_base_addressx = 0x01,
- DW_RLE_startx_endx = 0x02,
- DW_RLE_startx_length = 0x03,
- DW_RLE_offset_pair = 0x04,
- DW_RLE_base_address = 0x05,
- DW_RLE_start_end = 0x06,
- DW_RLE_start_length = 0x07
-};
-
-enum {
- VAL_none = 0,
- VAL_cstr = 1,
- VAL_data = 2,
- VAL_uint = 3,
- VAL_int = 4,
- VAL_addr = 5
-};
-
-# define ABBREV_TABLE_SIZE 256
-typedef struct {
- obj_info_t *obj;
- const char *file;
- uint8_t current_version;
- const char *current_cu;
- uint64_t current_low_pc;
- uint64_t current_str_offsets_base;
- uint64_t current_addr_base;
- uint64_t current_rnglists_base;
- const char *debug_line_cu_end;
- uint8_t debug_line_format;
- uint16_t debug_line_version;
- const char *debug_line_files;
- const char *debug_line_directories;
- const char *p;
- const char *cu_end;
- const char *pend;
- const char *q0;
- const char *q;
- int format; // 4 or 8
- uint8_t address_size;
- int level;
- const char *abbrev_table[ABBREV_TABLE_SIZE];
-} DebugInfoReader;
-
-typedef struct {
- ptrdiff_t pos;
- int tag;
- int has_children;
-} DIE;
-
-typedef struct {
- union {
- const char *ptr;
- uint64_t uint64;
- int64_t int64;
- uint64_t addr_idx;
- } as;
- uint64_t off;
- uint64_t at;
- uint64_t form;
- size_t size;
- int type;
-} DebugInfoValue;
-
-#if defined(WORDS_BIGENDIAN)
-#define MERGE_2INTS(a,b,sz) (((uint64_t)(a)<<sz)|(b))
-#else
-#define MERGE_2INTS(a,b,sz) (((uint64_t)(b)<<sz)|(a))
-#endif
-
-static uint16_t
-get_uint16(const uint8_t *p)
-{
- return (uint16_t)MERGE_2INTS(p[0],p[1],8);
-}
-
-static uint32_t
-get_uint32(const uint8_t *p)
-{
- return (uint32_t)MERGE_2INTS(get_uint16(p),get_uint16(p+2),16);
-}
-
-static uint64_t
-get_uint64(const uint8_t *p)
-{
- return MERGE_2INTS(get_uint32(p),get_uint32(p+4),32);
-}
-
-static uint8_t
-read_uint8(const char **ptr)
-{
- const char *p = *ptr;
- *ptr = (p + 1);
- return (uint8_t)*p;
-}
-
-static uint16_t
-read_uint16(const char **ptr)
-{
- const char *p = *ptr;
- *ptr = (p + 2);
- return get_uint16((const uint8_t *)p);
-}
-
-static uint32_t
-read_uint24(const char **ptr)
-{
- const char *p = *ptr;
- *ptr = (p + 3);
- return ((uint8_t)*p << 16) | get_uint16((const uint8_t *)p+1);
-}
-
-static uint32_t
-read_uint32(const char **ptr)
-{
- const char *p = *ptr;
- *ptr = (p + 4);
- return get_uint32((const uint8_t *)p);
-}
-
-static uint64_t
-read_uint64(const char **ptr)
-{
- const unsigned char *p = (const unsigned char *)*ptr;
- *ptr = (char *)(p + 8);
- return get_uint64(p);
-}
-
-static uintptr_t
-read_uintptr(const char **ptr)
-{
- const unsigned char *p = (const unsigned char *)*ptr;
- *ptr = (char *)(p + SIZEOF_VOIDP);
-#if SIZEOF_VOIDP == 8
- return get_uint64(p);
-#else
- return get_uint32(p);
-#endif
-}
-
-static uint64_t
-read_uint(DebugInfoReader *reader)
-{
- if (reader->format == 4) {
- return read_uint32(&reader->p);
- } else { /* 64 bit */
- return read_uint64(&reader->p);
- }
-}
-
-static uint64_t
-read_uleb128(DebugInfoReader *reader)
-{
- return uleb128(&reader->p);
-}
-
-static int64_t
-read_sleb128(DebugInfoReader *reader)
-{
- return sleb128(&reader->p);
-}
-
-static void
-debug_info_reader_init(DebugInfoReader *reader, obj_info_t *obj)
-{
- reader->file = obj->mapped;
- reader->obj = obj;
- reader->p = obj->debug_info.ptr;
- reader->pend = obj->debug_info.ptr + obj->debug_info.size;
- reader->debug_line_cu_end = obj->debug_line.ptr;
- reader->current_low_pc = 0;
- reader->current_str_offsets_base = 0;
- reader->current_addr_base = 0;
- reader->current_rnglists_base = 0;
-}
-
-static void
-di_skip_die_attributes(const char **p)
-{
- for (;;) {
- uint64_t at = uleb128(p);
- uint64_t form = uleb128(p);
- if (!at && !form) break;
- switch (form) {
- default:
- break;
- case DW_FORM_implicit_const:
- sleb128(p);
- break;
- }
- }
-}
-
-static void
-di_read_debug_abbrev_cu(DebugInfoReader *reader)
-{
- uint64_t prev = 0;
- const char *p = reader->q0;
- for (;;) {
- uint64_t abbrev_number = uleb128(&p);
- if (abbrev_number <= prev) break;
- if (abbrev_number < ABBREV_TABLE_SIZE) {
- reader->abbrev_table[abbrev_number] = p;
- }
- prev = abbrev_number;
- uleb128(&p); /* tag */
- p++; /* has_children */
- di_skip_die_attributes(&p);
- }
-}
-
-static int
-di_read_debug_line_cu(DebugInfoReader *reader)
-{
- const char *p;
- struct LineNumberProgramHeader header;
-
- p = (const char *)reader->debug_line_cu_end;
- if (parse_debug_line_header(reader->obj, &p, &header))
- return -1;
-
- reader->debug_line_cu_end = (char *)header.cu_end;
- reader->debug_line_format = header.format;
- reader->debug_line_version = header.version;
- reader->debug_line_directories = (char *)header.include_directories;
- reader->debug_line_files = (char *)header.filenames;
-
- return 0;
-}
-
-static void
-set_addr_idx_value(DebugInfoValue *v, uint64_t n)
-{
- v->as.addr_idx = n;
- v->type = VAL_addr;
-}
-
-static void
-set_uint_value(DebugInfoValue *v, uint64_t n)
-{
- v->as.uint64 = n;
- v->type = VAL_uint;
-}
-
-static void
-set_int_value(DebugInfoValue *v, int64_t n)
-{
- v->as.int64 = n;
- v->type = VAL_int;
-}
-
-static void
-set_cstr_value(DebugInfoValue *v, const char *s)
-{
- v->as.ptr = s;
- v->off = 0;
- v->type = VAL_cstr;
-}
-
-static void
-set_cstrp_value(DebugInfoValue *v, const char *s, uint64_t off)
-{
- v->as.ptr = s;
- v->off = off;
- v->type = VAL_cstr;
-}
-
-static void
-set_data_value(DebugInfoValue *v, const char *s)
-{
- v->as.ptr = s;
- v->type = VAL_data;
-}
-
-static const char *
-get_cstr_value(DebugInfoValue *v)
-{
- if (v->as.ptr) {
- return v->as.ptr + v->off;
- } else {
- return NULL;
- }
-}
-
-static const char *
-resolve_strx(DebugInfoReader *reader, uint64_t idx)
-{
- const char *p = reader->obj->debug_str_offsets.ptr + reader->current_str_offsets_base;
- uint64_t off;
- if (reader->format == 4) {
- off = ((uint32_t *)p)[idx];
- }
- else {
- off = ((uint64_t *)p)[idx];
- }
- return reader->obj->debug_str.ptr + off;
-}
-
-static void
-debug_info_reader_read_value(DebugInfoReader *reader, uint64_t form, DebugInfoValue *v)
-{
- switch (form) {
- case DW_FORM_addr:
- if (reader->address_size == 4) {
- set_uint_value(v, read_uint32(&reader->p));
- } else if (reader->address_size == 8) {
- set_uint_value(v, read_uint64(&reader->p));
- } else {
- fprintf(stderr,"unknown address_size:%d", reader->address_size);
- abort();
- }
- break;
- case DW_FORM_block2:
- v->size = read_uint16(&reader->p);
- set_data_value(v, reader->p);
- reader->p += v->size;
- break;
- case DW_FORM_block4:
- v->size = read_uint32(&reader->p);
- set_data_value(v, reader->p);
- reader->p += v->size;
- break;
- case DW_FORM_data2:
- set_uint_value(v, read_uint16(&reader->p));
- break;
- case DW_FORM_data4:
- set_uint_value(v, read_uint32(&reader->p));
- break;
- case DW_FORM_data8:
- set_uint_value(v, read_uint64(&reader->p));
- break;
- case DW_FORM_string:
- v->size = strlen(reader->p);
- set_cstr_value(v, reader->p);
- reader->p += v->size + 1;
- break;
- case DW_FORM_block:
- v->size = uleb128(&reader->p);
- set_data_value(v, reader->p);
- reader->p += v->size;
- break;
- case DW_FORM_block1:
- v->size = read_uint8(&reader->p);
- set_data_value(v, reader->p);
- reader->p += v->size;
- break;
- case DW_FORM_data1:
- set_uint_value(v, read_uint8(&reader->p));
- break;
- case DW_FORM_flag:
- set_uint_value(v, read_uint8(&reader->p));
- break;
- case DW_FORM_sdata:
- set_int_value(v, read_sleb128(reader));
- break;
- case DW_FORM_strp:
- set_cstrp_value(v, reader->obj->debug_str.ptr, read_uint(reader));
- break;
- case DW_FORM_udata:
- set_uint_value(v, read_uleb128(reader));
- break;
- case DW_FORM_ref_addr:
- if (reader->format == 4) {
- set_uint_value(v, read_uint32(&reader->p));
- } else if (reader->format == 8) {
- set_uint_value(v, read_uint64(&reader->p));
- } else {
- fprintf(stderr,"unknown format:%d", reader->format);
- abort();
- }
- break;
- case DW_FORM_ref1:
- set_uint_value(v, read_uint8(&reader->p));
- break;
- case DW_FORM_ref2:
- set_uint_value(v, read_uint16(&reader->p));
- break;
- case DW_FORM_ref4:
- set_uint_value(v, read_uint32(&reader->p));
- break;
- case DW_FORM_ref8:
- set_uint_value(v, read_uint64(&reader->p));
- break;
- case DW_FORM_ref_udata:
- set_uint_value(v, uleb128(&reader->p));
- break;
- case DW_FORM_indirect:
- /* TODO: read the referred value */
- set_uint_value(v, uleb128(&reader->p));
- break;
- case DW_FORM_sec_offset:
- set_uint_value(v, read_uint(reader)); /* offset */
- /* addrptr: debug_addr */
- /* lineptr: debug_line */
- /* loclist: debug_loclists */
- /* loclistptr: debug_loclists */
- /* macptr: debug_macro */
- /* rnglist: debug_rnglists */
- /* rnglistptr: debug_rnglists */
- /* stroffsetsptr: debug_str_offsets */
- break;
- case DW_FORM_exprloc:
- v->size = (size_t)read_uleb128(reader);
- set_data_value(v, reader->p);
- reader->p += v->size;
- break;
- case DW_FORM_flag_present:
- set_uint_value(v, 1);
- break;
- case DW_FORM_strx:
- set_cstr_value(v, resolve_strx(reader, uleb128(&reader->p)));
- break;
- case DW_FORM_addrx:
- set_addr_idx_value(v, uleb128(&reader->p));
- break;
- case DW_FORM_ref_sup4:
- set_uint_value(v, read_uint32(&reader->p));
- break;
- case DW_FORM_strp_sup:
- set_uint_value(v, read_uint(reader));
- /* *p = reader->sup_file + reader->sup_str->sh_offset + ret; */
- break;
- case DW_FORM_data16:
- v->size = 16;
- set_data_value(v, reader->p);
- reader->p += v->size;
- break;
- case DW_FORM_line_strp:
- set_cstrp_value(v, reader->obj->debug_line_str.ptr, read_uint(reader));
- break;
- case DW_FORM_ref_sig8:
- set_uint_value(v, read_uint64(&reader->p));
- break;
- case DW_FORM_implicit_const:
- set_int_value(v, sleb128(&reader->q));
- break;
- case DW_FORM_loclistx:
- set_uint_value(v, read_uleb128(reader));
- break;
- case DW_FORM_rnglistx:
- set_uint_value(v, read_uleb128(reader));
- break;
- case DW_FORM_ref_sup8:
- set_uint_value(v, read_uint64(&reader->p));
- break;
- case DW_FORM_strx1:
- set_cstr_value(v, resolve_strx(reader, read_uint8(&reader->p)));
- break;
- case DW_FORM_strx2:
- set_cstr_value(v, resolve_strx(reader, read_uint16(&reader->p)));
- break;
- case DW_FORM_strx3:
- set_cstr_value(v, resolve_strx(reader, read_uint24(&reader->p)));
- break;
- case DW_FORM_strx4:
- set_cstr_value(v, resolve_strx(reader, read_uint32(&reader->p)));
- break;
- case DW_FORM_addrx1:
- set_addr_idx_value(v, read_uint8(&reader->p));
- break;
- case DW_FORM_addrx2:
- set_addr_idx_value(v, read_uint16(&reader->p));
- break;
- case DW_FORM_addrx3:
- set_addr_idx_value(v, read_uint24(&reader->p));
- break;
- case DW_FORM_addrx4:
- set_addr_idx_value(v, read_uint32(&reader->p));
- break;
- /* we have no support for actually reading the real values of these refs out
- * of the .gnu_debugaltlink dwz-compressed debuginfo at the moment, but "read"
- * them anyway so that we advance the reader by the right amount. */
- case DW_FORM_GNU_ref_alt:
- case DW_FORM_GNU_strp_alt:
- read_uint(reader);
- set_uint_value(v, 0);
- break;
- case 0:
- goto fail;
- break;
- }
- return;
-
- fail:
- fprintf(stderr, "%d: unsupported form: %#"PRIx64"\n", __LINE__, form);
- exit(1);
-}
-
-/* find abbrev in current compilation unit */
-static const char *
-di_find_abbrev(DebugInfoReader *reader, uint64_t abbrev_number)
-{
- const char *p;
- if (abbrev_number < ABBREV_TABLE_SIZE) {
- return reader->abbrev_table[abbrev_number];
- }
- p = reader->abbrev_table[ABBREV_TABLE_SIZE-1];
- /* skip 255th record */
- uleb128(&p); /* tag */
- p++; /* has_children */
- di_skip_die_attributes(&p);
- for (uint64_t n = uleb128(&p); abbrev_number != n; n = uleb128(&p)) {
- if (n == 0) {
- fprintf(stderr,"%d: Abbrev Number %"PRId64" not found\n",__LINE__, abbrev_number);
- exit(1);
- }
- uleb128(&p); /* tag */
- p++; /* has_children */
- di_skip_die_attributes(&p);
- }
- return p;
-}
-
-#if 0
-static void
-hexdump0(const unsigned char *p, size_t n)
-{
- size_t i;
- fprintf(stderr, " 0 1 2 3 4 5 6 7 8 9 A B C D E F\n");
- for (i=0; i < n; i++){
- switch (i & 15) {
- case 0:
- fprintf(stderr, "%02" PRIdSIZE ": %02X ", i/16, p[i]);
- break;
- case 15:
- fprintf(stderr, "%02X\n", p[i]);
- break;
- default:
- fprintf(stderr, "%02X ", p[i]);
- break;
- }
- }
- if ((i & 15) != 15) {
- fprintf(stderr, "\n");
- }
-}
-#define hexdump(p,n) hexdump0((const unsigned char *)p, n)
-
-static void
-div_inspect(DebugInfoValue *v)
-{
- switch (v->type) {
- case VAL_uint:
- fprintf(stderr,"%d: type:%d size:%" PRIxSIZE " v:%"PRIx64"\n",__LINE__,v->type,v->size,v->as.uint64);
- break;
- case VAL_int:
- fprintf(stderr,"%d: type:%d size:%" PRIxSIZE " v:%"PRId64"\n",__LINE__,v->type,v->size,(int64_t)v->as.uint64);
- break;
- case VAL_cstr:
- fprintf(stderr,"%d: type:%d size:%" PRIxSIZE " v:'%s'\n",__LINE__,v->type,v->size,v->as.ptr);
- break;
- case VAL_data:
- fprintf(stderr,"%d: type:%d size:%" PRIxSIZE " v:\n",__LINE__,v->type,v->size);
- hexdump(v->as.ptr, 16);
- break;
- }
-}
-#endif
-
-static DIE *
-di_read_die(DebugInfoReader *reader, DIE *die)
-{
- uint64_t abbrev_number = uleb128(&reader->p);
- if (abbrev_number == 0) {
- reader->level--;
- return NULL;
- }
-
- reader->q = di_find_abbrev(reader, abbrev_number);
-
- die->pos = reader->p - reader->obj->debug_info.ptr - 1;
- die->tag = (int)uleb128(&reader->q); /* tag */
- die->has_children = *reader->q++; /* has_children */
- if (die->has_children) {
- reader->level++;
- }
- return die;
-}
-
-static DebugInfoValue *
-di_read_record(DebugInfoReader *reader, DebugInfoValue *vp)
-{
- uint64_t at = uleb128(&reader->q);
- uint64_t form = uleb128(&reader->q);
- if (!at || !form) return NULL;
- vp->at = at;
- vp->form = form;
- debug_info_reader_read_value(reader, form, vp);
- return vp;
-}
-
-static void
-di_skip_records(DebugInfoReader *reader)
-{
- for (;;) {
- DebugInfoValue v = {{}};
- uint64_t at = uleb128(&reader->q);
- uint64_t form = uleb128(&reader->q);
- if (!at || !form) return;
- debug_info_reader_read_value(reader, form, &v);
- }
-}
-
-typedef struct addr_header {
- const char *ptr;
- uint64_t unit_length;
- uint8_t format;
- uint8_t address_size;
- /* uint8_t segment_selector_size; */
-} addr_header_t;
-
-static void
-addr_header_init(obj_info_t *obj, addr_header_t *header) {
- const char *p = obj->debug_addr.ptr;
-
- header->ptr = p;
-
- if (!p) return;
-
- header->unit_length = *(uint32_t *)p;
- p += sizeof(uint32_t);
-
- header->format = 4;
- if (header->unit_length == 0xffffffff) {
- header->unit_length = *(uint64_t *)p;
- p += sizeof(uint64_t);
- header->format = 8;
- }
-
- p += 2; /* version */
- header->address_size = *p++;
- p++; /* segment_selector_size */
-}
-
-static uint64_t
-read_addr(addr_header_t *header, uint64_t addr_base, uint64_t idx) {
- if (header->address_size == 4) {
- return ((uint32_t*)(header->ptr + addr_base))[idx];
- }
- else {
- return ((uint64_t*)(header->ptr + addr_base))[idx];
- }
-}
-
-typedef struct rnglists_header {
- uint64_t unit_length;
- uint8_t format;
- uint8_t address_size;
- uint32_t offset_entry_count;
-} rnglists_header_t;
-
-static void
-rnglists_header_init(obj_info_t *obj, rnglists_header_t *header) {
- const char *p = obj->debug_rnglists.ptr;
-
- if (!p) return;
-
- header->unit_length = *(uint32_t *)p;
- p += sizeof(uint32_t);
-
- header->format = 4;
- if (header->unit_length == 0xffffffff) {
- header->unit_length = *(uint64_t *)p;
- p += sizeof(uint64_t);
- header->format = 8;
- }
-
- p += 2; /* version */
- header->address_size = *p++;
- p++; /* segment_selector_size */
- header->offset_entry_count = *(uint32_t *)p;
-}
-
-typedef struct {
- uint64_t low_pc;
- uint64_t high_pc;
- uint64_t ranges;
- bool low_pc_set;
- bool high_pc_set;
- bool ranges_set;
-} ranges_t;
-
-static void
-ranges_set(ranges_t *ptr, DebugInfoValue *v, addr_header_t *addr_header, uint64_t addr_base)
-{
- uint64_t n = 0;
- if (v->type == VAL_uint) {
- n = v->as.uint64;
- }
- else if (v->type == VAL_addr) {
- n = read_addr(addr_header, addr_base, v->as.addr_idx);
- }
- switch (v->at) {
- case DW_AT_low_pc:
- ptr->low_pc = n;
- ptr->low_pc_set = true;
- break;
- case DW_AT_high_pc:
- if (v->form == DW_FORM_addr) {
- ptr->high_pc = n;
- }
- else {
- ptr->high_pc = ptr->low_pc + n;
- }
- ptr->high_pc_set = true;
- break;
- case DW_AT_ranges:
- ptr->ranges = n;
- ptr->ranges_set = true;
- break;
- }
-}
-
-static uint64_t
-read_dw_form_addr(DebugInfoReader *reader, const char **ptr)
-{
- const char *p = *ptr;
- *ptr = p + reader->address_size;
- if (reader->address_size == 4) {
- return read_uint32(&p);
- } else if (reader->address_size == 8) {
- return read_uint64(&p);
- } else {
- fprintf(stderr,"unknown address_size:%d", reader->address_size);
- abort();
- }
-}
-
-static uintptr_t
-ranges_include(DebugInfoReader *reader, ranges_t *ptr, uint64_t addr, rnglists_header_t *rnglists_header)
-{
- if (ptr->high_pc_set) {
- if (ptr->ranges_set || !ptr->low_pc_set) {
- exit(1);
- }
- if (ptr->low_pc <= addr && addr <= ptr->high_pc) {
- return (uintptr_t)ptr->low_pc;
- }
- }
- else if (ptr->ranges_set) {
- /* TODO: support base address selection entry */
- const char *p;
- uint64_t base = ptr->low_pc_set ? ptr->low_pc : reader->current_low_pc;
- bool base_valid = true;
- if (reader->current_version >= 5) {
- if (rnglists_header->offset_entry_count == 0) {
- // DW_FORM_sec_offset
- p = reader->obj->debug_rnglists.ptr + ptr->ranges + reader->current_rnglists_base;
- }
- else {
- // DW_FORM_rnglistx
- const char *offset_array = reader->obj->debug_rnglists.ptr + reader->current_rnglists_base;
- if (rnglists_header->format == 4) {
- p = offset_array + ((uint32_t *)offset_array)[ptr->ranges];
- }
- else {
- p = offset_array + ((uint64_t *)offset_array)[ptr->ranges];
- }
- }
- for (;;) {
- uint8_t rle = read_uint8(&p);
- uintptr_t from = 0, to = 0;
- if (rle == DW_RLE_end_of_list) break;
- switch (rle) {
- case DW_RLE_base_addressx:
- uleb128(&p);
- base_valid = false; /* not supported yet */
- break;
- case DW_RLE_startx_endx:
- uleb128(&p);
- uleb128(&p);
- break;
- case DW_RLE_startx_length:
- uleb128(&p);
- uleb128(&p);
- break;
- case DW_RLE_offset_pair:
- if (!base_valid) break;
- from = (uintptr_t)base + uleb128(&p);
- to = (uintptr_t)base + uleb128(&p);
- break;
- case DW_RLE_base_address:
- base = read_dw_form_addr(reader, &p);
- base_valid = true;
- break;
- case DW_RLE_start_end:
- from = (uintptr_t)read_dw_form_addr(reader, &p);
- to = (uintptr_t)read_dw_form_addr(reader, &p);
- break;
- case DW_RLE_start_length:
- from = (uintptr_t)read_dw_form_addr(reader, &p);
- to = from + uleb128(&p);
- break;
- }
- if (from <= addr && addr < to) {
- return from;
- }
- }
- return false;
- }
- p = reader->obj->debug_ranges.ptr + ptr->ranges;
- for (;;) {
- uintptr_t from = read_uintptr(&p);
- uintptr_t to = read_uintptr(&p);
- if (!from && !to) break;
- if (from == UINTPTR_MAX) {
- /* base address selection entry */
- base = to;
- }
- else if (base + from <= addr && addr < base + to) {
- return (uintptr_t)base + from;
- }
- }
- }
- else if (ptr->low_pc_set) {
- if (ptr->low_pc == addr) {
- return (uintptr_t)ptr->low_pc;
- }
- }
- return false;
-}
-
-#if 0
-static void
-ranges_inspect(DebugInfoReader *reader, ranges_t *ptr)
-{
- if (ptr->high_pc_set) {
- if (ptr->ranges_set || !ptr->low_pc_set) {
- fprintf(stderr,"low_pc_set:%d high_pc_set:%d ranges_set:%d\n",ptr->low_pc_set,ptr->high_pc_set,ptr->ranges_set);
- exit(1);
- }
- fprintf(stderr,"low_pc:%"PRIx64" high_pc:%"PRIx64"\n",ptr->low_pc,ptr->high_pc);
- }
- else if (ptr->ranges_set) {
- char *p = reader->obj->debug_ranges.ptr + ptr->ranges;
- fprintf(stderr,"low_pc:%"PRIx64" ranges:%"PRIx64" %lx ",ptr->low_pc,ptr->ranges, p-reader->obj->mapped);
- for (;;) {
- uintptr_t from = read_uintptr(&p);
- uintptr_t to = read_uintptr(&p);
- if (!from && !to) break;
- fprintf(stderr,"%"PRIx64"-%"PRIx64" ",ptr->low_pc+from,ptr->low_pc+to);
- }
- fprintf(stderr,"\n");
- }
- else if (ptr->low_pc_set) {
- fprintf(stderr,"low_pc:%"PRIx64"\n",ptr->low_pc);
- }
- else {
- fprintf(stderr,"empty\n");
- }
-}
-#endif
-
-static int
-di_read_cu(DebugInfoReader *reader)
-{
- uint64_t unit_length;
- uint16_t version;
- uint64_t debug_abbrev_offset;
- reader->format = 4;
- reader->current_cu = reader->p;
- unit_length = read_uint32(&reader->p);
- if (unit_length == 0xffffffff) {
- unit_length = read_uint64(&reader->p);
- reader->format = 8;
- }
- reader->cu_end = reader->p + unit_length;
- version = read_uint16(&reader->p);
- reader->current_version = version;
- if (version > 5) {
- return -1;
- }
- else if (version == 5) {
- /* unit_type = */ read_uint8(&reader->p);
- reader->address_size = read_uint8(&reader->p);
- debug_abbrev_offset = read_uint(reader);
- }
- else {
- debug_abbrev_offset = read_uint(reader);
- reader->address_size = read_uint8(&reader->p);
- }
- reader->q0 = reader->obj->debug_abbrev.ptr + debug_abbrev_offset;
-
- reader->level = 0;
- di_read_debug_abbrev_cu(reader);
- if (di_read_debug_line_cu(reader)) return -1;
-
- do {
- DIE die;
-
- if (!di_read_die(reader, &die)) continue;
-
- if (die.tag != DW_TAG_compile_unit) {
- di_skip_records(reader);
- break;
- }
-
- reader->current_str_offsets_base = 0;
- reader->current_addr_base = 0;
- reader->current_rnglists_base = 0;
-
- DebugInfoValue low_pc = {{}};
- /* enumerate abbrev */
- for (;;) {
- DebugInfoValue v = {{}};
- if (!di_read_record(reader, &v)) break;
- switch (v.at) {
- case DW_AT_low_pc:
- // clang may output DW_AT_addr_base after DW_AT_low_pc.
- // We need to resolve the DW_FORM_addr* after DW_AT_addr_base is parsed.
- low_pc = v;
- break;
- case DW_AT_str_offsets_base:
- reader->current_str_offsets_base = v.as.uint64;
- break;
- case DW_AT_addr_base:
- reader->current_addr_base = v.as.uint64;
- break;
- case DW_AT_rnglists_base:
- reader->current_rnglists_base = v.as.uint64;
- break;
- }
- }
- // Resolve the DW_FORM_addr of DW_AT_low_pc
- switch (low_pc.type) {
- case VAL_uint:
- reader->current_low_pc = low_pc.as.uint64;
- break;
- case VAL_addr:
- {
- addr_header_t header = {};
- addr_header_init(reader->obj, &header);
- reader->current_low_pc = read_addr(&header, reader->current_addr_base, low_pc.as.addr_idx);
- }
- break;
- }
- } while (0);
-
- return 0;
-}
-
-static void
-read_abstract_origin(DebugInfoReader *reader, uint64_t form, uint64_t abstract_origin, line_info_t *line)
-{
- const char *p = reader->p;
- const char *q = reader->q;
- int level = reader->level;
- DIE die;
-
- switch (form) {
- case DW_FORM_ref1:
- case DW_FORM_ref2:
- case DW_FORM_ref4:
- case DW_FORM_ref8:
- case DW_FORM_ref_udata:
- reader->p = reader->current_cu + abstract_origin;
- break;
- case DW_FORM_ref_addr:
- goto finish; /* not supported yet */
- case DW_FORM_ref_sig8:
- goto finish; /* not supported yet */
- case DW_FORM_ref_sup4:
- case DW_FORM_ref_sup8:
- goto finish; /* not supported yet */
- default:
- goto finish;
- }
- if (!di_read_die(reader, &die)) goto finish;
-
- /* enumerate abbrev */
- for (;;) {
- DebugInfoValue v = {{}};
- if (!di_read_record(reader, &v)) break;
- switch (v.at) {
- case DW_AT_name:
- line->sname = get_cstr_value(&v);
- break;
- }
- }
-
- finish:
- reader->p = p;
- reader->q = q;
- reader->level = level;
-}
-
-static void
-debug_info_read(DebugInfoReader *reader, int num_traces, void **traces,
- line_info_t *lines, int offset) {
-
- addr_header_t addr_header = {};
- addr_header_init(reader->obj, &addr_header);
-
- rnglists_header_t rnglists_header = {};
- rnglists_header_init(reader->obj, &rnglists_header);
-
- while (reader->p < reader->cu_end) {
- DIE die;
- ranges_t ranges = {};
- line_info_t line = {};
-
- if (!di_read_die(reader, &die)) continue;
- /* fprintf(stderr,"%d:%tx: <%d>\n",__LINE__,die.pos,reader->level,die.tag); */
-
- if (die.tag != DW_TAG_subprogram && die.tag != DW_TAG_inlined_subroutine) {
- skip_die:
- di_skip_records(reader);
- continue;
- }
-
- /* enumerate abbrev */
- for (;;) {
- DebugInfoValue v = {{}};
- /* ptrdiff_t pos = reader->p - reader->p0; */
- if (!di_read_record(reader, &v)) break;
- /* fprintf(stderr,"\n%d:%tx: AT:%lx FORM:%lx\n",__LINE__,pos,v.at,v.form); */
- /* div_inspect(&v); */
- switch (v.at) {
- case DW_AT_name:
- line.sname = get_cstr_value(&v);
- break;
- case DW_AT_call_file:
- fill_filename((int)v.as.uint64, reader->debug_line_format, reader->debug_line_version, reader->debug_line_directories, reader->debug_line_files, &line, reader->obj);
- break;
- case DW_AT_call_line:
- line.line = (int)v.as.uint64;
- break;
- case DW_AT_low_pc:
- case DW_AT_high_pc:
- case DW_AT_ranges:
- ranges_set(&ranges, &v, &addr_header, reader->current_addr_base);
- break;
- case DW_AT_declaration:
- goto skip_die;
- case DW_AT_inline:
- /* 1 or 3 */
- break; /* goto skip_die; */
- case DW_AT_abstract_origin:
- read_abstract_origin(reader, v.form, v.as.uint64, &line);
- break; /* goto skip_die; */
- }
- }
- /* ranges_inspect(reader, &ranges); */
- /* fprintf(stderr,"%d:%tx: %x ",__LINE__,diepos,die.tag); */
- for (int i=offset; i < num_traces; i++) {
- uintptr_t addr = (uintptr_t)traces[i];
- uintptr_t offset = addr - reader->obj->base_addr + reader->obj->vmaddr;
- uintptr_t saddr = ranges_include(reader, &ranges, offset, &rnglists_header);
- if (saddr) {
- /* fprintf(stdout, "%d:%tx: %d %lx->%lx %x %s: %s/%s %d %s %s %s\n",__LINE__,die.pos, i,addr,offset, die.tag,line.sname,line.dirname,line.filename,line.line,reader->obj->path,line.sname,lines[i].sname); */
- if (lines[i].sname) {
- line_info_t *lp = malloc(sizeof(line_info_t));
- memcpy(lp, &lines[i], sizeof(line_info_t));
- lines[i].next = lp;
- lp->dirname = line.dirname;
- lp->filename = line.filename;
- lp->line = line.line;
- lp->saddr = 0;
- }
- lines[i].path = reader->obj->path;
- lines[i].base_addr = line.base_addr;
- lines[i].sname = line.sname;
- lines[i].saddr = saddr + reader->obj->base_addr - reader->obj->vmaddr;
- }
- }
- }
-}
-
-// This function parses the following attributes of Line Number Program Header in DWARF 5:
-//
-// * directory_entry_format_count
-// * directory_entry_format
-// * directories_count
-// * directories
-//
-// or
-//
-// * file_name_entry_format_count
-// * file_name_entry_format
-// * file_names_count
-// * file_names
-//
-// It records DW_LNCT_path and DW_LNCT_directory_index at the index "idx".
-static const char *
-parse_ver5_debug_line_header(const char *p, int idx, uint8_t format, obj_info_t *obj, const char **out_path, uint64_t *out_directory_index) {
- int i, j;
- int entry_format_count = *(uint8_t *)p++;
- const char *entry_format = p;
-
- /* skip the part of entry_format */
- for (i = 0; i < entry_format_count * 2; i++) uleb128(&p);
-
- int entry_count = (int)uleb128(&p);
-
- DebugInfoReader reader;
- debug_info_reader_init(&reader, obj);
- reader.format = format;
- reader.p = p;
- for (j = 0; j < entry_count; j++) {
- const char *format = entry_format;
- for (i = 0; i < entry_format_count; i++) {
- DebugInfoValue v = {{}};
- unsigned long dw_lnct = uleb128(&format);
- unsigned long dw_form = uleb128(&format);
- debug_info_reader_read_value(&reader, dw_form, &v);
- if (dw_lnct == 1 /* DW_LNCT_path */ && v.type == VAL_cstr && out_path)
- *out_path = v.as.ptr + v.off;
- if (dw_lnct == 2 /* DW_LNCT_directory_index */ && v.type == VAL_uint && out_directory_index)
- *out_directory_index = v.as.uint64;
- }
- if (j == idx) return 0;
- }
-
- return reader.p;
-}
-
-#ifdef USE_ELF
-static unsigned long
-uncompress_debug_section(ElfW(Shdr) *shdr, char *file, char **ptr)
-{
- *ptr = NULL;
-#ifdef SUPPORT_COMPRESSED_DEBUG_LINE
- ElfW(Chdr) *chdr = (ElfW(Chdr) *)(file + shdr->sh_offset);
- unsigned long destsize = chdr->ch_size;
- int ret = 0;
-
- if (chdr->ch_type != ELFCOMPRESS_ZLIB) {
- /* unsupported compression type */
- return 0;
- }
-
- *ptr = malloc(destsize);
- if (!*ptr) return 0;
- ret = uncompress((Bytef *)*ptr, &destsize,
- (const Bytef*)chdr + sizeof(ElfW(Chdr)),
- shdr->sh_size - sizeof(ElfW(Chdr)));
- if (ret != Z_OK) goto fail;
- return destsize;
-
-fail:
- free(*ptr);
- *ptr = NULL;
-#endif
- return 0;
-}
-
/* read file and fill lines */
static uintptr_t
fill_lines(int num_traces, void **traces, int check_debuglink,
@@ -2003,10 +485,10 @@ fill_lines(int num_traces, void **traces, int check_debuglink,
{
int i, j;
char *shstr;
+ char *section_name;
ElfW(Ehdr) *ehdr;
ElfW(Shdr) *shdr, *shstr_shdr;
- ElfW(Shdr) *gnu_debuglink_shdr = NULL;
- ElfW(Shdr) *note_gnu_build_id = NULL;
+ ElfW(Shdr) *debug_line_shdr = NULL, *gnu_debuglink_shdr = NULL;
int fd;
off_t filesize;
char *file;
@@ -2014,6 +496,7 @@ fill_lines(int num_traces, void **traces, int check_debuglink,
ElfW(Shdr) *dynsym_shdr = NULL, *dynstr_shdr = NULL;
obj_info_t *obj = *objp;
uintptr_t dladdr_fbase = 0;
+ bool compressed_p = false;
fd = open(binary_filename, O_RDONLY);
if (fd < 0) {
@@ -2042,7 +525,6 @@ fill_lines(int num_traces, void **traces, int check_debuglink,
kprintf("mmap: %s\n", strerror(e));
goto fail;
}
- close(fd);
ehdr = (ElfW(Ehdr) *)file;
if (memcmp(ehdr->e_ident, "\177ELF", 4) != 0) {
@@ -2050,8 +532,11 @@ fill_lines(int num_traces, void **traces, int check_debuglink,
* Huh? Maybe filename was overridden by setproctitle() and
* it match non-elf file.
*/
+ close(fd);
goto fail;
}
+
+ obj->fd = fd;
obj->mapped = file;
obj->mapped_size = (size_t)filesize;
@@ -2061,7 +546,7 @@ fill_lines(int num_traces, void **traces, int check_debuglink,
shstr = file + shstr_shdr->sh_offset;
for (i = 0; i < ehdr->e_shnum; i++) {
- char *section_name = shstr + shdr[i].sh_name;
+ section_name = shstr + shdr[i].sh_name;
switch (shdr[i].sh_type) {
case SHT_STRTAB:
if (!strcmp(section_name, ".strtab")) {
@@ -2079,44 +564,16 @@ fill_lines(int num_traces, void **traces, int check_debuglink,
/* if (!strcmp(section_name, ".dynsym")) */
dynsym_shdr = shdr + i;
break;
- case SHT_NOTE:
- if (!strcmp(section_name, ".note.gnu.build-id")) {
- note_gnu_build_id = shdr + i;
- }
- break;
case SHT_PROGBITS:
- if (!strcmp(section_name, ".gnu_debuglink")) {
+ if (!strcmp(section_name, ".debug_line")) {
+ if (shdr[i].sh_flags & SHF_COMPRESSED) {
+ compressed_p = true;
+ }
+ debug_line_shdr = shdr + i;
+ }
+ else if (!strcmp(section_name, ".gnu_debuglink")) {
gnu_debuglink_shdr = shdr + i;
}
- else {
- const char *debug_section_names[] = {
- ".debug_abbrev",
- ".debug_info",
- ".debug_line",
- ".debug_ranges",
- ".debug_str_offsets",
- ".debug_addr",
- ".debug_rnglists",
- ".debug_str",
- ".debug_line_str"
- };
-
- for (j=0; j < DWARF_SECTION_COUNT; j++) {
- struct dwarf_section *s = obj_dwarf_section_at(obj, j);
-
- if (strcmp(section_name, debug_section_names[j]) != 0)
- continue;
-
- s->ptr = file + shdr[i].sh_offset;
- s->size = shdr[i].sh_size;
- s->flags = shdr[i].sh_flags;
- if (s->flags & SHF_COMPRESSED) {
- s->size = uncompress_debug_section(&shdr[i], file, &s->ptr);
- if (!s->size) goto fail;
- }
- break;
- }
- }
break;
}
}
@@ -2128,22 +585,20 @@ fill_lines(int num_traces, void **traces, int check_debuglink,
char *strtab = file + dynstr_shdr->sh_offset;
ElfW(Sym) *symtab = (ElfW(Sym) *)(file + dynsym_shdr->sh_offset);
int symtab_count = (int)(dynsym_shdr->sh_size / sizeof(ElfW(Sym)));
- void *handle = dlopen(NULL, RTLD_NOW|RTLD_LOCAL);
- if (handle) {
- for (j = 0; j < symtab_count; j++) {
- ElfW(Sym) *sym = &symtab[j];
- Dl_info info;
- void *s;
- if (ELF_ST_TYPE(sym->st_info) != STT_FUNC || sym->st_size == 0) continue;
- s = dlsym(handle, strtab + sym->st_name);
- if (s && dladdr(s, &info)) {
- obj->base_addr = dladdr_fbase;
- dladdr_fbase = (uintptr_t)info.dli_fbase;
- break;
- }
- }
- dlclose(handle);
- }
+ for (j = 0; j < symtab_count; j++) {
+ ElfW(Sym) *sym = &symtab[j];
+ Dl_info info;
+ void *h, *s;
+ if (ELF_ST_TYPE(sym->st_info) != STT_FUNC || sym->st_size <= 0) continue;
+ h = dlopen(NULL, RTLD_NOW|RTLD_LOCAL);
+ if (!h) continue;
+ s = dlsym(h, strtab + sym->st_name);
+ if (!s) continue;
+ if (dladdr(s, &info)) {
+ dladdr_fbase = (uintptr_t)info.dli_fbase;
+ break;
+ }
+ }
if (ehdr->e_type == ET_EXEC) {
obj->base_addr = 0;
}
@@ -2154,48 +609,33 @@ fill_lines(int num_traces, void **traces, int check_debuglink,
}
}
- if (obj->debug_info.ptr && obj->debug_abbrev.ptr) {
- DebugInfoReader reader;
- debug_info_reader_init(&reader, obj);
- i = 0;
- while (reader.p < reader.pend) {
- /* fprintf(stderr, "%d:%tx: CU[%d]\n", __LINE__, reader.p - reader.obj->debug_info.ptr, i++); */
- if (di_read_cu(&reader)) goto use_symtab;
- debug_info_read(&reader, num_traces, traces, lines, offset);
- }
- }
- else {
- /* This file doesn't have dwarf, use symtab or dynsym */
-use_symtab:
- if (!symtab_shdr) {
- /* This file doesn't have symtab, use dynsym instead */
- symtab_shdr = dynsym_shdr;
- strtab_shdr = dynstr_shdr;
- }
-
- if (symtab_shdr && strtab_shdr) {
- char *strtab = file + strtab_shdr->sh_offset;
- ElfW(Sym) *symtab = (ElfW(Sym) *)(file + symtab_shdr->sh_offset);
- int symtab_count = (int)(symtab_shdr->sh_size / sizeof(ElfW(Sym)));
- for (j = 0; j < symtab_count; j++) {
- ElfW(Sym) *sym = &symtab[j];
- uintptr_t saddr = (uintptr_t)sym->st_value + obj->base_addr;
- if (ELF_ST_TYPE(sym->st_info) != STT_FUNC) continue;
- for (i = offset; i < num_traces; i++) {
- uintptr_t d = (uintptr_t)traces[i] - saddr;
- if (lines[i].line > 0 || d > (uintptr_t)sym->st_size)
- continue;
- /* fill symbol name and addr from .symtab */
- if (!lines[i].sname) lines[i].sname = strtab + sym->st_name;
- lines[i].saddr = saddr;
- lines[i].path = obj->path;
- lines[i].base_addr = obj->base_addr;
- }
- }
- }
+ if (!symtab_shdr) {
+ symtab_shdr = dynsym_shdr;
+ strtab_shdr = dynstr_shdr;
+ }
+
+ if (symtab_shdr && strtab_shdr) {
+ char *strtab = file + strtab_shdr->sh_offset;
+ ElfW(Sym) *symtab = (ElfW(Sym) *)(file + symtab_shdr->sh_offset);
+ int symtab_count = (int)(symtab_shdr->sh_size / sizeof(ElfW(Sym)));
+ for (j = 0; j < symtab_count; j++) {
+ ElfW(Sym) *sym = &symtab[j];
+ uintptr_t saddr = (uintptr_t)sym->st_value + obj->base_addr;
+ if (ELF_ST_TYPE(sym->st_info) != STT_FUNC || sym->st_size <= 0) continue;
+ for (i = offset; i < num_traces; i++) {
+ uintptr_t d = (uintptr_t)traces[i] - saddr;
+ if (lines[i].line > 0 || d <= 0 || d > (uintptr_t)sym->st_size)
+ continue;
+ /* fill symbol name and addr from .symtab */
+ lines[i].sname = strtab + sym->st_name;
+ lines[i].saddr = saddr;
+ lines[i].path = obj->path;
+ lines[i].base_addr = obj->base_addr;
+ }
+ }
}
- if (!obj->debug_line.ptr) {
+ if (!debug_line_shdr) {
/* This file doesn't have .debug_line section,
let's check .gnu_debuglink section instead. */
if (gnu_debuglink_shdr && check_debuglink) {
@@ -2203,251 +643,23 @@ use_symtab:
num_traces, traces,
objp, lines, offset);
}
- if (note_gnu_build_id && check_debuglink) {
- ElfW(Nhdr) *nhdr = (ElfW(Nhdr)*) (file + note_gnu_build_id->sh_offset);
- const char *build_id = (char *)(nhdr + 1) + nhdr->n_namesz;
- follow_debuglink_build_id(build_id, nhdr->n_descsz,
- num_traces, traces,
- objp, lines, offset);
- }
goto finish;
}
- if (parse_debug_line(num_traces, traces,
- obj->debug_line.ptr,
- obj->debug_line.size,
- obj, lines, offset) == -1)
- goto fail;
-
+ if (!compressed_p &&
+ parse_debug_line(num_traces, traces,
+ file + debug_line_shdr->sh_offset,
+ debug_line_shdr->sh_size,
+ obj, lines, offset))
+ goto fail;
finish:
return dladdr_fbase;
fail:
return (uintptr_t)-1;
}
-#else /* Mach-O */
-/* read file and fill lines */
-static uintptr_t
-fill_lines(int num_traces, void **traces, int check_debuglink,
- obj_info_t **objp, line_info_t *lines, int offset)
-{
-# ifdef __LP64__
-# define LP(x) x##_64
-# else
-# define LP(x) x
-# endif
- int fd;
- off_t filesize;
- char *file, *p = NULL;
- obj_info_t *obj = *objp;
- struct LP(mach_header) *header;
- uintptr_t dladdr_fbase = 0;
-
- {
- char *s = binary_filename;
- char *base = strrchr(binary_filename, '/')+1;
- size_t max = PATH_MAX;
- size_t size = strlen(binary_filename);
- size_t basesize = size - (base - binary_filename);
- s += size;
- max -= size;
- p = s;
- size = strlcpy(s, ".dSYM/Contents/Resources/DWARF/", max);
- if (size == 0) goto fail;
- s += size;
- max -= size;
- if (max <= basesize) goto fail;
- memcpy(s, base, basesize);
- s[basesize] = 0;
-
- fd = open(binary_filename, O_RDONLY);
- if (fd < 0) {
- *p = 0; /* binary_filename becomes original file name */
- fd = open(binary_filename, O_RDONLY);
- if (fd < 0) {
- goto fail;
- }
- }
- }
-
- filesize = lseek(fd, 0, SEEK_END);
- if (filesize < 0) {
- int e = errno;
- close(fd);
- kprintf("lseek: %s\n", strerror(e));
- goto fail;
- }
-#if SIZEOF_OFF_T > SIZEOF_SIZE_T
- if (filesize > (off_t)SIZE_MAX) {
- close(fd);
- kprintf("Too large file %s\n", binary_filename);
- goto fail;
- }
-#endif
- lseek(fd, 0, SEEK_SET);
- /* async-signal unsafe */
- file = (char *)mmap(NULL, (size_t)filesize, PROT_READ, MAP_SHARED, fd, 0);
- if (file == MAP_FAILED) {
- int e = errno;
- close(fd);
- kprintf("mmap: %s\n", strerror(e));
- goto fail;
- }
- close(fd);
-
- obj->mapped = file;
- obj->mapped_size = (size_t)filesize;
-
- header = (struct LP(mach_header) *)file;
- if (header->magic == LP(MH_MAGIC)) {
- /* non universal binary */
- p = file;
- }
- else if (header->magic == FAT_CIGAM) {
- struct LP(mach_header) *mhp = _NSGetMachExecuteHeader();
- struct fat_header *fat = (struct fat_header *)file;
- char *q = file + sizeof(*fat);
- uint32_t nfat_arch = __builtin_bswap32(fat->nfat_arch);
- /* fprintf(stderr,"%d: fat:%s %d\n",__LINE__, binary_filename,nfat_arch); */
- for (uint32_t i = 0; i < nfat_arch; i++) {
- struct fat_arch *arch = (struct fat_arch *)q;
- cpu_type_t cputype = __builtin_bswap32(arch->cputype);
- cpu_subtype_t cpusubtype = __builtin_bswap32(arch->cpusubtype);
- uint32_t offset = __builtin_bswap32(arch->offset);
- /* fprintf(stderr,"%d: fat %d %x/%x %x/%x\n",__LINE__, i, mhp->cputype,mhp->cpusubtype, cputype,cpusubtype); */
- if (mhp->cputype == cputype &&
- (cpu_subtype_t)(mhp->cpusubtype & ~CPU_SUBTYPE_MASK) == cpusubtype) {
- p = file + offset;
- file = p;
- header = (struct LP(mach_header) *)p;
- if (header->magic == LP(MH_MAGIC)) {
- goto found_mach_header;
- }
- break;
- }
- q += sizeof(*arch);
- }
- kprintf("'%s' is not a Mach-O universal binary file!\n",binary_filename);
- close(fd);
- goto fail;
- }
- else {
- kprintf("'%s' is not a "
-# ifdef __LP64__
- "64"
-# else
- "32"
-# endif
- "-bit Mach-O file!\n",binary_filename);
- close(fd);
- goto fail;
- }
-found_mach_header:
- p += sizeof(*header);
-
- for (uint32_t i = 0; i < (uint32_t)header->ncmds; i++) {
- struct load_command *lcmd = (struct load_command *)p;
- switch (lcmd->cmd) {
- case LP(LC_SEGMENT):
- {
- static const char *debug_section_names[] = {
- "__debug_abbrev",
- "__debug_info",
- "__debug_line",
- "__debug_ranges",
- "__debug_str_offsets",
- "__debug_addr",
- "__debug_rnglists",
- "__debug_str",
- "__debug_line_str",
- };
- struct LP(segment_command) *scmd = (struct LP(segment_command) *)lcmd;
- if (strcmp(scmd->segname, "__TEXT") == 0) {
- obj->vmaddr = scmd->vmaddr;
- }
- else if (strcmp(scmd->segname, "__DWARF") == 0) {
- p += sizeof(struct LP(segment_command));
- for (uint64_t i = 0; i < scmd->nsects; i++) {
- struct LP(section) *sect = (struct LP(section) *)p;
- p += sizeof(struct LP(section));
- for (int j=0; j < DWARF_SECTION_COUNT; j++) {
- struct dwarf_section *s = obj_dwarf_section_at(obj, j);
-
- if (strcmp(sect->sectname, debug_section_names[j]) != 0)
- continue;
-
- s->ptr = file + sect->offset;
- s->size = sect->size;
- s->flags = sect->flags;
- if (s->flags & SHF_COMPRESSED) {
- goto fail;
- }
- break;
- }
- }
- }
- }
- break;
-
- case LC_SYMTAB:
- {
- struct symtab_command *cmd = (struct symtab_command *)lcmd;
- struct LP(nlist) *nl = (struct LP(nlist) *)(file + cmd->symoff);
- char *strtab = file + cmd->stroff, *sname = 0;
- uint32_t j;
- uintptr_t saddr = 0;
- /* kprintf("[%2d]: %x/symtab %p\n", i, cmd->cmd, (void *)p); */
- for (j = 0; j < cmd->nsyms; j++) {
- uintptr_t symsize, d;
- struct LP(nlist) *e = &nl[j];
- /* kprintf("[%2d][%4d]: %02x/%x/%x: %s %llx\n", i, j, e->n_type,e->n_sect,e->n_desc,strtab+e->n_un.n_strx,e->n_value); */
- if (e->n_type != N_FUN) continue;
- if (e->n_sect) {
- saddr = (uintptr_t)e->n_value + obj->base_addr - obj->vmaddr;
- sname = strtab + e->n_un.n_strx;
- /* kprintf("[%2d][%4d]: %02x/%x/%x: %s %llx\n", i, j, e->n_type,e->n_sect,e->n_desc,strtab+e->n_un.n_strx,e->n_value); */
- continue;
- }
- for (int k = offset; k < num_traces; k++) {
- d = (uintptr_t)traces[k] - saddr;
- symsize = e->n_value;
- /* kprintf("%lx %lx %lx\n",saddr,symsize,traces[k]); */
- if (lines[k].line > 0 || d > (uintptr_t)symsize)
- continue;
- /* fill symbol name and addr from .symtab */
- if (!lines[k].sname) lines[k].sname = sname;
- lines[k].saddr = saddr;
- lines[k].path = obj->path;
- lines[k].base_addr = obj->base_addr;
- }
- }
- }
- }
- p += lcmd->cmdsize;
- }
-
- if (obj->debug_info.ptr && obj->debug_abbrev.ptr) {
- DebugInfoReader reader;
- debug_info_reader_init(&reader, obj);
- while (reader.p < reader.pend) {
- if (di_read_cu(&reader)) goto fail;
- debug_info_read(&reader, num_traces, traces, lines, offset);
- }
- }
-
- if (parse_debug_line(num_traces, traces,
- obj->debug_line.ptr,
- obj->debug_line.size,
- obj, lines, offset) == -1)
- goto fail;
-
- return dladdr_fbase;
-fail:
- return (uintptr_t)-1;
-}
-#endif
#define HAVE_MAIN_EXE_PATH
-#if defined(__FreeBSD__) || defined(__DragonFly__)
+#if defined(__FreeBSD__)
# include <sys/sysctl.h>
#endif
/* ssize_t main_exe_path(void)
@@ -2456,21 +668,16 @@ fail:
* and returns strlen(binary_filename).
* it is NUL terminated.
*/
-#if defined(__linux__) || defined(__NetBSD__)
+#if defined(__linux__)
static ssize_t
main_exe_path(void)
{
-# if defined(__linux__)
-# define PROC_SELF_EXE "/proc/self/exe"
-# elif defined(__NetBSD__)
-# define PROC_SELF_EXE "/proc/curproc/exe"
-# endif
+# define PROC_SELF_EXE "/proc/self/exe"
ssize_t len = readlink(PROC_SELF_EXE, binary_filename, PATH_MAX);
- if (len < 0) return 0;
binary_filename[len] = 0;
return len;
}
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__)
static ssize_t
main_exe_path(void)
{
@@ -2484,69 +691,10 @@ main_exe_path(void)
len--; /* sysctl sets strlen+1 */
return len;
}
-#elif defined(HAVE_LIBPROC_H)
-static ssize_t
-main_exe_path(void)
-{
- int len = proc_pidpath(getpid(), binary_filename, PATH_MAX);
- if (len == 0) return 0;
- binary_filename[len] = 0;
- return len;
-}
#else
#undef HAVE_MAIN_EXE_PATH
#endif
-static void
-print_line0(line_info_t *line, void *address)
-{
- uintptr_t addr = (uintptr_t)address;
- uintptr_t d = addr - line->saddr;
- if (!address) {
- /* inlined */
- if (line->dirname && line->dirname[0]) {
- kprintf("%s(%s) %s/%s:%d\n", line->path, line->sname, line->dirname, line->filename, line->line);
- }
- else {
- kprintf("%s(%s) %s:%d\n", line->path, line->sname, line->filename, line->line);
- }
- }
- else if (!line->path) {
- kprintf("[0x%"PRIxPTR"]\n", addr);
- }
- else if (!line->sname) {
- kprintf("%s(0x%"PRIxPTR") [0x%"PRIxPTR"]\n", line->path, addr-line->base_addr, addr);
- }
- else if (!line->saddr) {
- kprintf("%s(%s) [0x%"PRIxPTR"]\n", line->path, line->sname, addr);
- }
- else if (line->line <= 0) {
- kprintf("%s(%s+0x%"PRIxPTR") [0x%"PRIxPTR"]\n", line->path, line->sname,
- d, addr);
- }
- else if (!line->filename) {
- kprintf("%s(%s+0x%"PRIxPTR") [0x%"PRIxPTR"] ???:%d\n", line->path, line->sname,
- d, addr, line->line);
- }
- else if (line->dirname && line->dirname[0]) {
- kprintf("%s(%s+0x%"PRIxPTR") [0x%"PRIxPTR"] %s/%s:%d\n", line->path, line->sname,
- d, addr, line->dirname, line->filename, line->line);
- }
- else {
- kprintf("%s(%s+0x%"PRIxPTR") [0x%"PRIxPTR"] %s:%d\n", line->path, line->sname,
- d, addr, line->filename, line->line);
- }
-}
-
-static void
-print_line(line_info_t *line, void *address)
-{
- print_line0(line, address);
- if (line->next) {
- print_line(line->next, NULL);
- }
-}
-
void
rb_dump_backtrace_with_lines(int num_traces, void **traces)
{
@@ -2556,7 +704,6 @@ rb_dump_backtrace_with_lines(int num_traces, void **traces)
obj_info_t *obj = NULL;
/* 2 is NULL + main executable */
void **dladdr_fbases = (void **)calloc(num_traces+2, sizeof(void *));
-
#ifdef HAVE_MAIN_EXE_PATH
char *main_path = NULL; /* used on printing backtrace */
ssize_t len;
@@ -2587,8 +734,8 @@ rb_dump_backtrace_with_lines(int num_traces, void **traces)
/* if the binary is strip-ed, this may effect */
for (p=dladdr_fbases; *p; p++) {
if (*p == info.dli_fbase) {
- if (info.dli_fname) lines[i].path = info.dli_fname;
- if (info.dli_sname) lines[i].sname = info.dli_sname;
+ lines[i].path = info.dli_fname;
+ lines[i].sname = info.dli_sname;
goto next_line;
}
}
@@ -2598,11 +745,7 @@ rb_dump_backtrace_with_lines(int num_traces, void **traces)
obj->base_addr = (uintptr_t)info.dli_fbase;
path = info.dli_fname;
obj->path = path;
- if (path) lines[i].path = path;
- if (info.dli_sname) {
- lines[i].sname = info.dli_sname;
- lines[i].saddr = (uintptr_t)info.dli_saddr;
- }
+ lines[i].path = path;
strlcpy(binary_filename, path, PATH_MAX);
if (fill_lines(num_traces, traces, 1, &obj, lines, i) == (uintptr_t)-1)
break;
@@ -2613,36 +756,46 @@ next_line:
/* output */
for (i = 0; i < num_traces; i++) {
- print_line(&lines[i], traces[i]);
-
+ line_info_t *line = &lines[i];
+ uintptr_t addr = (uintptr_t)traces[i];
+ uintptr_t d = addr - line->saddr;
+ if (!line->path) {
+ kprintf("[0x%lx]\n", addr);
+ }
+ else if (!line->saddr || !line->sname) {
+ kprintf("%s(0x%lx) [0x%lx]\n", line->path, addr-line->base_addr, addr);
+ }
+ else if (line->line <= 0) {
+ kprintf("%s(%s+0x%lx) [0x%lx]\n", line->path, line->sname,
+ d, addr);
+ }
+ else if (!line->filename) {
+ kprintf("%s(%s+0x%lx) [0x%lx] ???:%d\n", line->path, line->sname,
+ d, addr, line->line);
+ }
+ else if (line->dirname && line->dirname[0]) {
+ kprintf("%s(%s+0x%lx) [0x%lx] %s/%s:%d\n", line->path, line->sname,
+ d, addr, line->dirname, line->filename, line->line);
+ }
+ else {
+ kprintf("%s(%s+0x%lx) [0x%lx] %s:%d\n", line->path, line->sname,
+ d, addr, line->filename, line->line);
+ }
/* FreeBSD's backtrace may show _start and so on */
- if (lines[i].sname && strcmp("main", lines[i].sname) == 0)
+ if (line->sname && strcmp("main", line->sname) == 0)
break;
}
/* free */
while (obj) {
obj_info_t *o = obj;
- for (i=0; i < DWARF_SECTION_COUNT; i++) {
- struct dwarf_section *s = obj_dwarf_section_at(obj, i);
- if (s->flags & SHF_COMPRESSED) {
- free(s->ptr);
- }
- }
- if (obj->mapped_size) {
- munmap(obj->mapped, obj->mapped_size);
- }
obj = o->next;
+ if (o->fd) {
+ munmap(o->mapped, o->mapped_size);
+ close(o->fd);
+ }
free(o);
}
- for (i = 0; i < num_traces; i++) {
- line_info_t *line = lines[i].next;
- while (line) {
- line_info_t *l = line;
- line = line->next;
- free(l);
- }
- }
free(lines);
free(dladdr_fbases);
}
@@ -2688,7 +841,7 @@ next_line:
#define MAXNBUF (sizeof(intmax_t) * CHAR_BIT + 1)
static inline int toupper(int c) { return ('A' <= c && c <= 'Z') ? (c&0x5f) : c; }
#define hex2ascii(hex) (hex2ascii_data[hex])
-static const char hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz";
+char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz";
static inline int imax(int a, int b) { return (a > b ? a : b); }
static int kvprintf(char const *fmt, void (*func)(int), void *arg, int radix, va_list ap);
@@ -2702,7 +855,7 @@ static void putce(int c)
(void)ret;
}
-static int
+int
kprintf(const char *fmt, ...)
{
va_list ap;
diff --git a/addr2line.h b/addr2line.h
index f09b665800..d99f010934 100644
--- a/addr2line.h
+++ b/addr2line.h
@@ -1,5 +1,3 @@
-#ifndef RUBY_ADDR2LINE_H
-#define RUBY_ADDR2LINE_H
/**********************************************************************
addr2line.h -
@@ -10,7 +8,10 @@
**********************************************************************/
-#if (defined(USE_ELF) || defined(HAVE_MACH_O_LOADER_H))
+#ifndef RUBY_ADDR2LINE_H
+#define RUBY_ADDR2LINE_H
+
+#ifdef USE_ELF
void
rb_dump_backtrace_with_lines(int num_traces, void **traces);
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 0000000000..22c7bdce6a
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,55 @@
+---
+shallow_clone: true
+platform:
+ - x64
+environment:
+ ruby_version: "24-%Platform%"
+ zlib_version: "1.2.11"
+ matrix:
+ - vs: "120"
+install:
+ - chcp
+ - SET BITS=%Platform:x86=32%
+ - SET BITS=%BITS:x=%
+ - SET OPENSSL_DIR=c:\OpenSSL-Win%BITS%
+ - CALL SET vcvars=%%^VS%VS%COMNTOOLS^%%..\..\VC\vcvarsall.bat
+ - SET vcvars
+ - '"%vcvars%" %Platform:x64=amd64%'
+ - SET ruby_path=C:\Ruby%ruby_version:-x86=%
+ - SET PATH=\usr\local\bin;%ruby_path%\bin;%PATH%;C:\msys64\mingw64\bin;C:\msys64\usr\bin
+ - ruby --version
+ - 'cl'
+ - SET
+ - echo> Makefile srcdir=.
+ - echo>> Makefile MSC_VER=0
+ - echo>> Makefile RT=none
+ - echo>> Makefile RT_VER=0
+ - echo>> Makefile BUILTIN_ENCOBJS=nul
+ - type win32\Makefile.sub >> Makefile
+ - nmake %mflags% touch-unicode-files
+ - nmake %mflags% up incs UNICODE_FILES=.
+ - del Makefile
+ - mkdir \usr\local\bin
+ - mkdir \usr\local\include
+ - mkdir \usr\local\lib
+ - appveyor DownloadFile https://zlib.net/zlib%zlib_version:.=%.zip
+ - 7z x -o%APPVEYOR_BUILD_FOLDER%\ext\zlib zlib%zlib_version:.=%.zip
+ - for %%I in (%OPENSSL_DIR%\*.dll) do mklink /h \usr\local\bin\%%~nxI %%I
+ - mkdir %Platform%-mswin_%vs%
+ - ps: Get-ChildItem "win32" -Recurse | foreach {$_.Attributes = 'Readonly'}
+ - ps: Get-Item $env:Platform"-mswin_"$env:vs | foreach {$_.Attributes = 'Normal'}
+build_script:
+ - cd %APPVEYOR_BUILD_FOLDER%
+ - cd %Platform%-mswin_%vs%
+ - ..\win32\configure.bat --without-ext=+,dbm,gdbm,readline --with-opt-dir=/usr/local --with-openssl-dir=%OPENSSL_DIR:\=/%
+ - nmake -l
+ - nmake install-nodoc
+ - \usr\bin\ruby -v -e "p :locale => Encoding.find('locale'), :filesystem => Encoding.find('filesystem')"
+test_script:
+ - set /a JOBS=%NUMBER_OF_PROCESSORS%
+ - nmake -l "TESTOPTS=-v -q" btest
+ - nmake -l "TESTOPTS=-v -q" test-basic
+ - nmake -l "TESTOPTS=-q -j%JOBS%" test-all
+ - nmake -l test-spec
+matrix:
+ fast_finish: true
diff --git a/array.c b/array.c
index fc7eebd050..1600e484fe 100644
--- a/array.c
+++ b/array.c
@@ -11,60 +11,20 @@
**********************************************************************/
-#include "debug_counter.h"
-#include "id.h"
#include "internal.h"
-#include "internal/array.h"
-#include "internal/compar.h"
-#include "internal/enum.h"
-#include "internal/gc.h"
-#include "internal/hash.h"
-#include "internal/numeric.h"
-#include "internal/object.h"
-#include "internal/proc.h"
-#include "internal/rational.h"
-#include "internal/vm.h"
-#include "probes.h"
-#include "ruby/encoding.h"
-#include "ruby/st.h"
#include "ruby/util.h"
-#include "transient_heap.h"
-#include "builtin.h"
+#include "ruby/st.h"
+#include "probes.h"
+#include "id.h"
+#include "debug_counter.h"
-#if !ARRAY_DEBUG
-# undef NDEBUG
+#ifndef ARRAY_DEBUG
# define NDEBUG
#endif
#include "ruby_assert.h"
VALUE rb_cArray;
-/* Flags of RArray
- *
- * 1: RARRAY_EMBED_FLAG
- * The array is embedded (its contents follow the header, rather than
- * being on a separately allocated buffer).
- * 2: RARRAY_SHARED_FLAG (equal to ELTS_SHARED)
- * The array is shared. The buffer this array points to is owned by
- * another array (the shared root).
- * 3-9: RARRAY_EMBED_LEN
- * The length of the array when RARRAY_EMBED_FLAG is set.
- * 12: RARRAY_SHARED_ROOT_FLAG
- * The array is a shared root that does reference counting. The buffer
- * this array points to is owned by this array but may be pointed to
- * by other arrays.
- * Note: Frozen arrays may be a shared root without this flag being
- * set. Frozen arrays do not have reference counting because
- * they cannot be modified. Not updating the reference count
- * improves copy-on-write performance. Their reference count is
- * assumed to be infinity.
- * 13: RARRAY_TRANSIENT_FLAG
- * The buffer of the array is allocated on the transient heap.
- * 14: RARRAY_PTR_IN_USE_FLAG
- * The buffer of the array is in use. This is only used during
- * debugging.
- */
-
/* for OPTIMIZED_CMP: */
#define id_cmp idCmp
@@ -72,41 +32,33 @@ VALUE rb_cArray;
#define ARY_MAX_SIZE (LONG_MAX / (int)sizeof(VALUE))
#define SMALL_ARRAY_LEN 16
-RBIMPL_ATTR_MAYBE_UNUSED()
-static int
-should_be_T_ARRAY(VALUE ary)
-{
- return RB_TYPE_P(ary, T_ARRAY);
-}
+# define ARY_SHARED_P(ary) \
+ (assert(!FL_TEST((ary), ELTS_SHARED) || !FL_TEST((ary), RARRAY_EMBED_FLAG)), \
+ FL_TEST((ary),ELTS_SHARED)!=0)
+# define ARY_EMBED_P(ary) \
+ (assert(!FL_TEST((ary), ELTS_SHARED) || !FL_TEST((ary), RARRAY_EMBED_FLAG)), \
+ FL_TEST((ary), RARRAY_EMBED_FLAG)!=0)
#define ARY_HEAP_PTR(a) (assert(!ARY_EMBED_P(a)), RARRAY(a)->as.heap.ptr)
#define ARY_HEAP_LEN(a) (assert(!ARY_EMBED_P(a)), RARRAY(a)->as.heap.len)
-#define ARY_HEAP_CAPA(a) (assert(!ARY_EMBED_P(a)), assert(!ARY_SHARED_ROOT_P(a)), \
- RARRAY(a)->as.heap.aux.capa)
-
#define ARY_EMBED_PTR(a) (assert(ARY_EMBED_P(a)), RARRAY(a)->as.ary)
#define ARY_EMBED_LEN(a) \
(assert(ARY_EMBED_P(a)), \
(long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & \
- (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)))
-#define ARY_HEAP_SIZE(a) (assert(!ARY_EMBED_P(a)), assert(ARY_OWNS_HEAP_P(a)), ARY_CAPA(a) * sizeof(VALUE))
-
-#define ARY_OWNS_HEAP_P(a) (assert(should_be_T_ARRAY((VALUE)(a))), \
- !FL_TEST_RAW((a), RARRAY_SHARED_FLAG|RARRAY_EMBED_FLAG))
+ (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)))
+#define ARY_HEAP_SIZE(a) (assert(!ARY_EMBED_P(a)), assert(ARY_OWNS_HEAP_P(a)), RARRAY(a)->as.heap.aux.capa * sizeof(VALUE))
+#define ARY_OWNS_HEAP_P(a) (!FL_TEST((a), ELTS_SHARED|RARRAY_EMBED_FLAG))
#define FL_SET_EMBED(a) do { \
assert(!ARY_SHARED_P(a)); \
FL_SET((a), RARRAY_EMBED_FLAG); \
- RARY_TRANSIENT_UNSET(a); \
- ary_verify(a); \
} while (0)
-
#define FL_UNSET_EMBED(ary) FL_UNSET((ary), RARRAY_EMBED_FLAG|RARRAY_EMBED_LEN_MASK)
#define FL_SET_SHARED(ary) do { \
assert(!ARY_EMBED_P(ary)); \
- FL_SET((ary), RARRAY_SHARED_FLAG); \
+ FL_SET((ary), ELTS_SHARED); \
} while (0)
-#define FL_UNSET_SHARED(ary) FL_UNSET((ary), RARRAY_SHARED_FLAG)
+#define FL_UNSET_SHARED(ary) FL_UNSET((ary), ELTS_SHARED)
#define ARY_SET_PTR(ary, p) do { \
assert(!ARY_EMBED_P(ary)); \
@@ -116,6 +68,7 @@ should_be_T_ARRAY(VALUE ary)
#define ARY_SET_EMBED_LEN(ary, n) do { \
long tmp_n = (n); \
assert(ARY_EMBED_P(ary)); \
+ assert(!OBJ_FROZEN(ary)); \
RBASIC(ary)->flags &= ~RARRAY_EMBED_LEN_MASK; \
RBASIC(ary)->flags |= (tmp_n) << RARRAY_EMBED_LEN_SHIFT; \
} while (0)
@@ -147,8 +100,8 @@ should_be_T_ARRAY(VALUE ary)
} \
} while (0)
-#define ARY_CAPA(ary) (ARY_EMBED_P(ary) ? ary_embed_capa(ary) : \
- ARY_SHARED_ROOT_P(ary) ? RARRAY_LEN(ary) : ARY_HEAP_CAPA(ary))
+#define ARY_CAPA(ary) (ARY_EMBED_P(ary) ? RARRAY_EMBED_LEN_MAX : \
+ ARY_SHARED_ROOT_P(ary) ? RARRAY_LEN(ary) : RARRAY(ary)->as.heap.aux.capa)
#define ARY_SET_CAPA(ary, n) do { \
assert(!ARY_EMBED_P(ary)); \
assert(!ARY_SHARED_P(ary)); \
@@ -156,167 +109,44 @@ should_be_T_ARRAY(VALUE ary)
RARRAY(ary)->as.heap.aux.capa = (n); \
} while (0)
-#define ARY_SHARED_ROOT_OCCUPIED(ary) (!OBJ_FROZEN(ary) && ARY_SHARED_ROOT_REFCNT(ary) == 1)
-#define ARY_SET_SHARED_ROOT_REFCNT(ary, value) do { \
+#define ARY_SHARED(ary) (assert(ARY_SHARED_P(ary)), RARRAY(ary)->as.heap.aux.shared)
+#define ARY_SET_SHARED(ary, value) do { \
+ const VALUE _ary_ = (ary); \
+ const VALUE _value_ = (value); \
+ assert(!ARY_EMBED_P(_ary_)); \
+ assert(ARY_SHARED_P(_ary_)); \
+ assert(ARY_SHARED_ROOT_P(_value_)); \
+ RB_OBJ_WRITE(_ary_, &RARRAY(_ary_)->as.heap.aux.shared, _value_); \
+} while (0)
+#define RARRAY_SHARED_ROOT_FLAG FL_USER5
+#define ARY_SHARED_ROOT_P(ary) (FL_TEST((ary), RARRAY_SHARED_ROOT_FLAG))
+#define ARY_SHARED_NUM(ary) \
+ (assert(ARY_SHARED_ROOT_P(ary)), RARRAY(ary)->as.heap.aux.capa)
+#define ARY_SHARED_OCCUPIED(ary) (ARY_SHARED_NUM(ary) == 1)
+#define ARY_SET_SHARED_NUM(ary, value) do { \
assert(ARY_SHARED_ROOT_P(ary)); \
- assert(!OBJ_FROZEN(ary)); \
- assert((value) >= 0); \
RARRAY(ary)->as.heap.aux.capa = (value); \
} while (0)
#define FL_SET_SHARED_ROOT(ary) do { \
- assert(!OBJ_FROZEN(ary)); \
assert(!ARY_EMBED_P(ary)); \
- assert(!RARRAY_TRANSIENT_P(ary)); \
FL_SET((ary), RARRAY_SHARED_ROOT_FLAG); \
} while (0)
-static inline void
-ARY_SET(VALUE a, long i, VALUE v)
-{
- assert(!ARY_SHARED_P(a));
- assert(!OBJ_FROZEN(a));
-
- RARRAY_ASET(a, i, v);
-}
-#undef RARRAY_ASET
-
-static long
-ary_embed_capa(VALUE ary)
-{
- size_t size = rb_gc_obj_slot_size(ary) - offsetof(struct RArray, as.ary);
- assert(size % sizeof(VALUE) == 0);
- return size / sizeof(VALUE);
-}
-
-static size_t
-ary_embed_size(long capa)
-{
- return offsetof(struct RArray, as.ary) + (sizeof(VALUE) * capa);
-}
-
-static bool
-ary_embeddable_p(long capa)
-{
- return rb_gc_size_allocatable_p(ary_embed_size(capa));
-}
-
-bool
-rb_ary_embeddable_p(VALUE ary)
-{
- /* An array cannot be turned embeddable when the array is:
- * - Shared root: other objects may point to the buffer of this array
- * so we cannot make it embedded.
- * - Frozen: this array may also be a shared root without the shared root
- * flag.
- * - Shared: we don't want to re-embed an array that points to a shared
- * root (to save memory).
- */
- return !(ARY_SHARED_ROOT_P(ary) || OBJ_FROZEN(ary) || ARY_SHARED_P(ary));
-}
-
-size_t
-rb_ary_size_as_embedded(VALUE ary)
-{
- size_t real_size;
-
- if (ARY_EMBED_P(ary)) {
- real_size = ary_embed_size(ARY_EMBED_LEN(ary));
- }
- else if (rb_ary_embeddable_p(ary)) {
- real_size = ary_embed_size(ARY_HEAP_CAPA(ary));
- }
- else {
- real_size = sizeof(struct RArray);
- }
- return real_size;
-}
-
-
-#if ARRAY_DEBUG
-#define ary_verify(ary) ary_verify_(ary, __FILE__, __LINE__)
-
-static VALUE
-ary_verify_(VALUE ary, const char *file, int line)
-{
- assert(RB_TYPE_P(ary, T_ARRAY));
-
- if (ARY_SHARED_P(ary)) {
- VALUE root = ARY_SHARED_ROOT(ary);
- const VALUE *ptr = ARY_HEAP_PTR(ary);
- const VALUE *root_ptr = RARRAY_CONST_PTR_TRANSIENT(root);
- long len = ARY_HEAP_LEN(ary), root_len = RARRAY_LEN(root);
- assert(ARY_SHARED_ROOT_P(root) || OBJ_FROZEN(root));
- assert(root_ptr <= ptr && ptr + len <= root_ptr + root_len);
- ary_verify(root);
- }
- else if (ARY_EMBED_P(ary)) {
- assert(!RARRAY_TRANSIENT_P(ary));
- assert(!ARY_SHARED_P(ary));
- assert(RARRAY_LEN(ary) <= ary_embed_capa(ary));
- }
- else {
-#if 1
- const VALUE *ptr = RARRAY_CONST_PTR_TRANSIENT(ary);
- long i, len = RARRAY_LEN(ary);
- volatile VALUE v;
- if (len > 1) len = 1; /* check only HEAD */
- for (i=0; i<len; i++) {
- v = ptr[i]; /* access check */
- }
- v = v;
-#endif
- }
-
-#if USE_TRANSIENT_HEAP
- if (RARRAY_TRANSIENT_P(ary)) {
- assert(rb_transient_heap_managed_ptr_p(RARRAY_CONST_PTR_TRANSIENT(ary)));
- }
-#endif
-
- rb_transient_heap_verify();
-
- return ary;
-}
-
-void
-rb_ary_verify(VALUE ary)
-{
- ary_verify(ary);
-}
-#else
-#define ary_verify(ary) ((void)0)
-#endif
-
-VALUE *
-rb_ary_ptr_use_start(VALUE ary)
-{
-#if ARRAY_DEBUG
- FL_SET_RAW(ary, RARRAY_PTR_IN_USE_FLAG);
-#endif
- return (VALUE *)RARRAY_CONST_PTR_TRANSIENT(ary);
-}
-
-void
-rb_ary_ptr_use_end(VALUE ary)
-{
-#if ARRAY_DEBUG
- FL_UNSET_RAW(ary, RARRAY_PTR_IN_USE_FLAG);
-#endif
-}
+#define ARY_SET(a, i, v) RARRAY_ASET((assert(!ARY_SHARED_P(a)), (a)), (i), (v))
void
-rb_mem_clear(VALUE *mem, long size)
+rb_mem_clear(register VALUE *mem, register long size)
{
while (size--) {
- *mem++ = Qnil;
+ *mem++ = Qnil;
}
}
static void
ary_mem_clear(VALUE ary, long beg, long size)
{
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
- rb_mem_clear(ptr + beg, size);
+ RARRAY_PTR_USE(ary, ptr, {
+ rb_mem_clear(ptr + beg, size);
});
}
@@ -324,38 +154,44 @@ static inline void
memfill(register VALUE *mem, register long size, register VALUE val)
{
while (size--) {
- *mem++ = val;
+ *mem++ = val;
}
}
static void
ary_memfill(VALUE ary, long beg, long size, VALUE val)
{
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
- memfill(ptr + beg, size, val);
- RB_OBJ_WRITTEN(ary, Qundef, val);
+ RARRAY_PTR_USE(ary, ptr, {
+ memfill(ptr + beg, size, val);
+ RB_OBJ_WRITTEN(ary, Qundef, val);
});
}
static void
ary_memcpy0(VALUE ary, long beg, long argc, const VALUE *argv, VALUE buff_owner_ary)
{
+#if 1
assert(!ARY_SHARED_P(buff_owner_ary));
if (argc > (int)(128/sizeof(VALUE)) /* is magic number (cache line size) */) {
- rb_gc_writebarrier_remember(buff_owner_ary);
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
- MEMCPY(ptr+beg, argv, VALUE, argc);
- });
+ rb_gc_writebarrier_remember(buff_owner_ary);
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMCPY(ptr+beg, argv, VALUE, argc);
+ });
}
else {
- int i;
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
- for (i=0; i<argc; i++) {
- RB_OBJ_WRITE(buff_owner_ary, &ptr[i+beg], argv[i]);
- }
- });
+ int i;
+ RARRAY_PTR_USE(ary, ptr, {
+ for (i=0; i<argc; i++) {
+ RB_OBJ_WRITE(buff_owner_ary, &ptr[i+beg], argv[i]);
+ }
+ });
}
+#else
+ /* giveup write barrier (traditional way) */
+ RARRAY_PTR(buff_owner_ary);
+ MEMCPY(RARRAY_PTR(ary)+beg, argv, VALUE, argc);
+#endif
}
static void
@@ -364,198 +200,49 @@ ary_memcpy(VALUE ary, long beg, long argc, const VALUE *argv)
ary_memcpy0(ary, beg, argc, argv, ary);
}
-static VALUE *
-ary_heap_alloc(VALUE ary, size_t capa)
-{
- VALUE *ptr = rb_transient_heap_alloc(ary, sizeof(VALUE) * capa);
-
- if (ptr != NULL) {
- RARY_TRANSIENT_SET(ary);
- }
- else {
- RARY_TRANSIENT_UNSET(ary);
- ptr = ALLOC_N(VALUE, capa);
- }
-
- return ptr;
-}
-
-static void
-ary_heap_free_ptr(VALUE ary, const VALUE *ptr, long size)
-{
- if (RARRAY_TRANSIENT_P(ary)) {
- /* ignore it */
- }
- else {
- ruby_sized_xfree((void *)ptr, size);
- }
-}
-
-static void
-ary_heap_free(VALUE ary)
-{
- if (RARRAY_TRANSIENT_P(ary)) {
- RARY_TRANSIENT_UNSET(ary);
- }
- else {
- ary_heap_free_ptr(ary, ARY_HEAP_PTR(ary), ARY_HEAP_SIZE(ary));
- }
-}
-
-static size_t
-ary_heap_realloc(VALUE ary, size_t new_capa)
-{
- size_t alloc_capa = new_capa;
- size_t old_capa = ARY_HEAP_CAPA(ary);
-
- if (RARRAY_TRANSIENT_P(ary)) {
- if (new_capa <= old_capa) {
- /* do nothing */
- alloc_capa = old_capa;
- }
- else {
- VALUE *new_ptr = rb_transient_heap_alloc(ary, sizeof(VALUE) * new_capa);
-
- if (new_ptr == NULL) {
- new_ptr = ALLOC_N(VALUE, new_capa);
- RARY_TRANSIENT_UNSET(ary);
- }
-
- MEMCPY(new_ptr, ARY_HEAP_PTR(ary), VALUE, old_capa);
- ARY_SET_PTR(ary, new_ptr);
- }
- }
- else {
- SIZED_REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, new_capa, old_capa);
- }
- ary_verify(ary);
-
- return alloc_capa;
-}
-
-#if USE_TRANSIENT_HEAP
-static inline void
-rb_ary_transient_heap_evacuate_(VALUE ary, int transient, int promote)
-{
- if (transient) {
- assert(!ARY_SHARED_ROOT_P(ary));
-
- VALUE *new_ptr;
- const VALUE *old_ptr = ARY_HEAP_PTR(ary);
- long capa = ARY_HEAP_CAPA(ary);
-
- assert(ARY_OWNS_HEAP_P(ary));
- assert(RARRAY_TRANSIENT_P(ary));
- assert(!ARY_PTR_USING_P(ary));
-
- if (promote) {
- new_ptr = ALLOC_N(VALUE, capa);
- RARY_TRANSIENT_UNSET(ary);
- }
- else {
- new_ptr = ary_heap_alloc(ary, capa);
- }
-
- MEMCPY(new_ptr, old_ptr, VALUE, capa);
- /* do not use ARY_SET_PTR() because they assert !frozen */
- RARRAY(ary)->as.heap.ptr = new_ptr;
- }
-
- ary_verify(ary);
-}
-
-void
-rb_ary_transient_heap_evacuate(VALUE ary, int promote)
-{
- rb_ary_transient_heap_evacuate_(ary, RARRAY_TRANSIENT_P(ary), promote);
-}
-
-void
-rb_ary_detransient(VALUE ary)
-{
- assert(RARRAY_TRANSIENT_P(ary));
- rb_ary_transient_heap_evacuate_(ary, TRUE, TRUE);
-}
-#else
-void
-rb_ary_detransient(VALUE ary)
-{
- /* do nothing */
-}
-#endif
-
-void
-rb_ary_make_embedded(VALUE ary)
-{
- assert(rb_ary_embeddable_p(ary));
- if (!ARY_EMBED_P(ary)) {
- const VALUE *buf = ARY_HEAP_PTR(ary);
- long len = ARY_HEAP_LEN(ary);
- bool was_transient = RARRAY_TRANSIENT_P(ary);
-
- // FL_SET_EMBED also unsets the transient flag
- FL_SET_EMBED(ary);
- ARY_SET_EMBED_LEN(ary, len);
-
- MEMCPY((void *)ARY_EMBED_PTR(ary), (void *)buf, VALUE, len);
-
- if (!was_transient) {
- ary_heap_free_ptr(ary, buf, len * sizeof(VALUE));
- }
- }
-}
-
static void
ary_resize_capa(VALUE ary, long capacity)
{
assert(RARRAY_LEN(ary) <= capacity);
assert(!OBJ_FROZEN(ary));
assert(!ARY_SHARED_P(ary));
-
- if (capacity > ary_embed_capa(ary)) {
- size_t new_capa = capacity;
+ if (capacity > RARRAY_EMBED_LEN_MAX) {
if (ARY_EMBED_P(ary)) {
long len = ARY_EMBED_LEN(ary);
- VALUE *ptr = ary_heap_alloc(ary, capacity);
-
+ VALUE *ptr = ALLOC_N(VALUE, (capacity));
MEMCPY(ptr, ARY_EMBED_PTR(ary), VALUE, len);
FL_UNSET_EMBED(ary);
ARY_SET_PTR(ary, ptr);
ARY_SET_HEAP_LEN(ary, len);
}
else {
- new_capa = ary_heap_realloc(ary, capacity);
+ SIZED_REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, capacity, RARRAY(ary)->as.heap.aux.capa);
}
- ARY_SET_CAPA(ary, new_capa);
+ ARY_SET_CAPA(ary, (capacity));
}
else {
if (!ARY_EMBED_P(ary)) {
- long len = ARY_HEAP_LEN(ary);
- long old_capa = ARY_HEAP_CAPA(ary);
- const VALUE *ptr = ARY_HEAP_PTR(ary);
+ long len = RARRAY_LEN(ary);
+ const VALUE *ptr = RARRAY_CONST_PTR(ary);
- if (len > capacity) len = capacity;
+ if (len > capacity) len = capacity;
MEMCPY((VALUE *)RARRAY(ary)->as.ary, ptr, VALUE, len);
- ary_heap_free_ptr(ary, ptr, old_capa);
-
FL_SET_EMBED(ary);
ARY_SET_LEN(ary, len);
+ ruby_xfree((VALUE *)ptr);
}
}
-
- ary_verify(ary);
}
static inline void
ary_shrink_capa(VALUE ary)
{
long capacity = ARY_HEAP_LEN(ary);
- long old_capa = ARY_HEAP_CAPA(ary);
+ long old_capa = RARRAY(ary)->as.heap.aux.capa;
assert(!ARY_SHARED_P(ary));
assert(old_capa >= capacity);
- if (old_capa > capacity) ary_heap_realloc(ary, capacity);
-
- ary_verify(ary);
+ if (old_capa > capacity)
+ REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, capacity);
}
static void
@@ -564,126 +251,106 @@ ary_double_capa(VALUE ary, long min)
long new_capa = ARY_CAPA(ary) / 2;
if (new_capa < ARY_DEFAULT_SIZE) {
- new_capa = ARY_DEFAULT_SIZE;
+ new_capa = ARY_DEFAULT_SIZE;
}
if (new_capa >= ARY_MAX_SIZE - min) {
- new_capa = (ARY_MAX_SIZE - min) / 2;
+ new_capa = (ARY_MAX_SIZE - min) / 2;
}
new_capa += min;
ary_resize_capa(ary, new_capa);
-
- ary_verify(ary);
}
static void
-rb_ary_decrement_share(VALUE shared_root)
+rb_ary_decrement_share(VALUE shared)
{
- if (!OBJ_FROZEN(shared_root)) {
- long num = ARY_SHARED_ROOT_REFCNT(shared_root);
- ARY_SET_SHARED_ROOT_REFCNT(shared_root, num - 1);
+ if (shared) {
+ long num = ARY_SHARED_NUM(shared) - 1;
+ if (num == 0) {
+ rb_ary_free(shared);
+ rb_gc_force_recycle(shared);
+ }
+ else if (num > 0) {
+ ARY_SET_SHARED_NUM(shared, num);
+ }
}
}
static void
rb_ary_unshare(VALUE ary)
{
- VALUE shared_root = ARY_SHARED_ROOT(ary);
- rb_ary_decrement_share(shared_root);
+ VALUE shared = RARRAY(ary)->as.heap.aux.shared;
+ rb_ary_decrement_share(shared);
FL_UNSET_SHARED(ary);
}
-static void
-rb_ary_reset(VALUE ary)
+static inline void
+rb_ary_unshare_safe(VALUE ary)
{
- if (ARY_OWNS_HEAP_P(ary)) {
- ary_heap_free(ary);
- }
- else if (ARY_SHARED_P(ary)) {
- rb_ary_unshare(ary);
+ if (ARY_SHARED_P(ary) && !ARY_EMBED_P(ary)) {
+ rb_ary_unshare(ary);
}
-
- FL_SET_EMBED(ary);
- ARY_SET_EMBED_LEN(ary, 0);
}
static VALUE
-rb_ary_increment_share(VALUE shared_root)
+rb_ary_increment_share(VALUE shared)
{
- if (!OBJ_FROZEN(shared_root)) {
- long num = ARY_SHARED_ROOT_REFCNT(shared_root);
- assert(num >= 0);
- ARY_SET_SHARED_ROOT_REFCNT(shared_root, num + 1);
+ long num = ARY_SHARED_NUM(shared);
+ if (num >= 0) {
+ ARY_SET_SHARED_NUM(shared, num + 1);
}
- return shared_root;
+ return shared;
}
static void
-rb_ary_set_shared(VALUE ary, VALUE shared_root)
+rb_ary_set_shared(VALUE ary, VALUE shared)
{
- assert(!ARY_EMBED_P(ary));
- assert(!OBJ_FROZEN(ary));
- assert(ARY_SHARED_ROOT_P(shared_root) || OBJ_FROZEN(shared_root));
-
- rb_ary_increment_share(shared_root);
+ rb_ary_increment_share(shared);
FL_SET_SHARED(ary);
- RB_OBJ_WRITE(ary, &RARRAY(ary)->as.heap.aux.shared_root, shared_root);
-
- RB_DEBUG_COUNTER_INC(obj_ary_shared_create);
+ ARY_SET_SHARED(ary, shared);
}
static inline void
rb_ary_modify_check(VALUE ary)
{
rb_check_frozen(ary);
- ary_verify(ary);
}
void
-rb_ary_cancel_sharing(VALUE ary)
+rb_ary_modify(VALUE ary)
{
+ rb_ary_modify_check(ary);
if (ARY_SHARED_P(ary)) {
- long shared_len, len = RARRAY_LEN(ary);
- VALUE shared_root = ARY_SHARED_ROOT(ary);
-
- ary_verify(shared_root);
-
- if (len <= ary_embed_capa(ary)) {
- const VALUE *ptr = ARY_HEAP_PTR(ary);
+ long shared_len, len = RARRAY_LEN(ary);
+ VALUE shared = ARY_SHARED(ary);
+ if (len <= RARRAY_EMBED_LEN_MAX) {
+ const VALUE *ptr = ARY_HEAP_PTR(ary);
FL_UNSET_SHARED(ary);
FL_SET_EMBED(ary);
- MEMCPY((VALUE *)ARY_EMBED_PTR(ary), ptr, VALUE, len);
- rb_ary_decrement_share(shared_root);
+ MEMCPY((VALUE *)ARY_EMBED_PTR(ary), ptr, VALUE, len);
+ rb_ary_decrement_share(shared);
ARY_SET_EMBED_LEN(ary, len);
}
- else if (ARY_SHARED_ROOT_OCCUPIED(shared_root) && len > ((shared_len = RARRAY_LEN(shared_root))>>1)) {
- long shift = RARRAY_CONST_PTR_TRANSIENT(ary) - RARRAY_CONST_PTR_TRANSIENT(shared_root);
- FL_UNSET_SHARED(ary);
- ARY_SET_PTR(ary, RARRAY_CONST_PTR_TRANSIENT(shared_root));
- ARY_SET_CAPA(ary, shared_len);
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
- MEMMOVE(ptr, ptr+shift, VALUE, len);
- });
- FL_SET_EMBED(shared_root);
- rb_ary_decrement_share(shared_root);
- }
+ else if (ARY_SHARED_OCCUPIED(shared) && len > ((shared_len = RARRAY_LEN(shared))>>1)) {
+ long shift = RARRAY_CONST_PTR(ary) - RARRAY_CONST_PTR(shared);
+ FL_UNSET_SHARED(ary);
+ ARY_SET_PTR(ary, RARRAY_CONST_PTR(shared));
+ ARY_SET_CAPA(ary, shared_len);
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr, ptr+shift, VALUE, len);
+ });
+ FL_SET_EMBED(shared);
+ rb_ary_decrement_share(shared);
+ }
else {
- VALUE *ptr = ary_heap_alloc(ary, len);
- MEMCPY(ptr, ARY_HEAP_PTR(ary), VALUE, len);
+ VALUE *ptr = ALLOC_N(VALUE, len);
+ MEMCPY(ptr, RARRAY_CONST_PTR(ary), VALUE, len);
rb_ary_unshare(ary);
ARY_SET_CAPA(ary, len);
ARY_SET_PTR(ary, ptr);
}
- rb_gc_writebarrier_remember(ary);
+ rb_gc_writebarrier_remember(ary);
}
- ary_verify(ary);
-}
-
-void
-rb_ary_modify(VALUE ary)
-{
- rb_ary_modify_check(ary);
- rb_ary_cancel_sharing(ary);
}
static VALUE
@@ -694,58 +361,48 @@ ary_ensure_room_for_push(VALUE ary, long add_len)
long capa;
if (old_len > ARY_MAX_SIZE - add_len) {
- rb_raise(rb_eIndexError, "index %ld too big", new_len);
+ rb_raise(rb_eIndexError, "index %ld too big", new_len);
}
if (ARY_SHARED_P(ary)) {
- if (new_len > ary_embed_capa(ary)) {
- VALUE shared_root = ARY_SHARED_ROOT(ary);
- if (ARY_SHARED_ROOT_OCCUPIED(shared_root)) {
- if (ARY_HEAP_PTR(ary) - RARRAY_CONST_PTR_TRANSIENT(shared_root) + new_len <= RARRAY_LEN(shared_root)) {
- rb_ary_modify_check(ary);
-
- ary_verify(ary);
- ary_verify(shared_root);
- return shared_root;
- }
- else {
- /* if array is shared, then it is likely it participate in push/shift pattern */
- rb_ary_modify(ary);
- capa = ARY_CAPA(ary);
- if (new_len > capa - (capa >> 6)) {
- ary_double_capa(ary, new_len);
- }
- ary_verify(ary);
- return ary;
- }
- }
- }
- ary_verify(ary);
- rb_ary_modify(ary);
+ if (new_len > RARRAY_EMBED_LEN_MAX) {
+ VALUE shared = ARY_SHARED(ary);
+ if (ARY_SHARED_OCCUPIED(shared)) {
+ if (RARRAY_CONST_PTR(ary) - RARRAY_CONST_PTR(shared) + new_len <= RARRAY_LEN(shared)) {
+ rb_ary_modify_check(ary);
+ return shared;
+ }
+ else {
+ /* if array is shared, then it is likely it participate in push/shift pattern */
+ rb_ary_modify(ary);
+ capa = ARY_CAPA(ary);
+ if (new_len > capa - (capa >> 6)) {
+ ary_double_capa(ary, new_len);
+ }
+ return ary;
+ }
+ }
+ }
+ rb_ary_modify(ary);
}
else {
- rb_ary_modify_check(ary);
+ rb_ary_modify_check(ary);
}
capa = ARY_CAPA(ary);
if (new_len > capa) {
- ary_double_capa(ary, new_len);
+ ary_double_capa(ary, new_len);
}
- ary_verify(ary);
return ary;
}
/*
* call-seq:
- * array.freeze -> self
+ * ary.freeze -> ary
*
- * Freezes +self+; returns +self+:
+ * Calls Object#freeze on +ary+ to prevent any further
+ * modification. A RuntimeError will be raised if a modification
+ * attempt is made.
*
- * a = []
- * a.frozen? # => false
- * a.freeze
- * a.frozen? # => true
- *
- * An attempt to modify a frozen \Array raises FrozenError.
*/
VALUE
@@ -754,6 +411,21 @@ rb_ary_freeze(VALUE ary)
return rb_obj_freeze(ary);
}
+/*
+ * call-seq:
+ * ary.frozen? -> true or false
+ *
+ * Return +true+ if this array is frozen (or temporarily frozen
+ * while being sorted). See also Object#frozen?
+ */
+
+static VALUE
+rb_ary_frozen_p(VALUE ary)
+{
+ if (OBJ_FROZEN(ary)) return Qtrue;
+ return Qfalse;
+}
+
/* This can be used to take a snapshot of an array (with
e.g. rb_ary_replace) and check later whether the array has been
modified from the snapshot. The snapshot is cheap, though if
@@ -765,22 +437,18 @@ VALUE
rb_ary_shared_with_p(VALUE ary1, VALUE ary2)
{
if (!ARY_EMBED_P(ary1) && ARY_SHARED_P(ary1) &&
- !ARY_EMBED_P(ary2) && ARY_SHARED_P(ary2) &&
- ARY_SHARED_ROOT(ary1) == ARY_SHARED_ROOT(ary2) &&
- ARY_HEAP_LEN(ary1) == ARY_HEAP_LEN(ary2)) {
- return Qtrue;
+ !ARY_EMBED_P(ary2) && ARY_SHARED_P(ary2) &&
+ RARRAY(ary1)->as.heap.aux.shared == RARRAY(ary2)->as.heap.aux.shared &&
+ RARRAY(ary1)->as.heap.len == RARRAY(ary2)->as.heap.len) {
+ return Qtrue;
}
return Qfalse;
}
static VALUE
-ary_alloc_embed(VALUE klass, long capa)
+ary_alloc(VALUE klass)
{
- size_t size = ary_embed_size(capa);
- assert(rb_gc_size_allocatable_p(size));
- NEWOBJ_OF(ary, struct RArray, klass,
- T_ARRAY | RARRAY_EMBED_FLAG | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0),
- size, 0);
+ NEWOBJ_OF(ary, struct RArray, klass, T_ARRAY | RARRAY_EMBED_FLAG | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0));
/* Created array is:
* FL_SET_EMBED((VALUE)ary);
* ARY_SET_EMBED_LEN((VALUE)ary, 0);
@@ -789,19 +457,10 @@ ary_alloc_embed(VALUE klass, long capa)
}
static VALUE
-ary_alloc_heap(VALUE klass)
-{
- NEWOBJ_OF(ary, struct RArray, klass,
- T_ARRAY | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0),
- sizeof(struct RArray), 0);
- return (VALUE)ary;
-}
-
-static VALUE
empty_ary_alloc(VALUE klass)
{
RUBY_DTRACE_CREATE_HOOK(ARRAY, 0);
- return ary_alloc_embed(klass, 0);
+ return ary_alloc(klass);
}
static VALUE
@@ -810,24 +469,20 @@ ary_new(VALUE klass, long capa)
VALUE ary,*ptr;
if (capa < 0) {
- rb_raise(rb_eArgError, "negative array size (or size too big)");
+ rb_raise(rb_eArgError, "negative array size (or size too big)");
}
if (capa > ARY_MAX_SIZE) {
- rb_raise(rb_eArgError, "array size too big");
+ rb_raise(rb_eArgError, "array size too big");
}
RUBY_DTRACE_CREATE_HOOK(ARRAY, capa);
- if (ary_embeddable_p(capa)) {
- ary = ary_alloc_embed(klass, capa);
- }
- else {
- ary = ary_alloc_heap(klass);
- ARY_SET_CAPA(ary, capa);
- assert(!ARY_EMBED_P(ary));
-
- ptr = ary_heap_alloc(ary, capa);
+ ary = ary_alloc(klass);
+ if (capa > RARRAY_EMBED_LEN_MAX) {
+ ptr = ALLOC_N(VALUE, capa);
+ FL_UNSET_EMBED(ary);
ARY_SET_PTR(ary, ptr);
+ ARY_SET_CAPA(ary, capa);
ARY_SET_HEAP_LEN(ary, 0);
}
@@ -843,7 +498,7 @@ rb_ary_new_capa(long capa)
VALUE
rb_ary_new(void)
{
- return rb_ary_new_capa(0);
+ return rb_ary_new2(RARRAY_EMBED_LEN_MAX);
}
VALUE
@@ -857,7 +512,7 @@ VALUE
va_start(ar, n);
for (i=0; i<n; i++) {
- ARY_SET(ary, i, va_arg(ar, VALUE));
+ ARY_SET(ary, i, va_arg(ar, VALUE));
}
va_end(ar);
@@ -872,8 +527,8 @@ rb_ary_tmp_new_from_values(VALUE klass, long n, const VALUE *elts)
ary = ary_new(klass, n);
if (n > 0 && elts) {
- ary_memcpy(ary, 0, n, elts);
- ARY_SET_LEN(ary, n);
+ ary_memcpy(ary, 0, n, elts);
+ ARY_SET_LEN(ary, n);
}
return ary;
@@ -885,86 +540,16 @@ rb_ary_new_from_values(long n, const VALUE *elts)
return rb_ary_tmp_new_from_values(rb_cArray, n, elts);
}
-static VALUE
-ec_ary_alloc_embed(rb_execution_context_t *ec, VALUE klass, long capa)
-{
- size_t size = ary_embed_size(capa);
- assert(rb_gc_size_allocatable_p(size));
- NEWOBJ_OF(ary, struct RArray, klass,
- T_ARRAY | RARRAY_EMBED_FLAG | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0),
- size, ec);
- /* Created array is:
- * FL_SET_EMBED((VALUE)ary);
- * ARY_SET_EMBED_LEN((VALUE)ary, 0);
- */
- return (VALUE)ary;
-}
-
-static VALUE
-ec_ary_alloc_heap(rb_execution_context_t *ec, VALUE klass)
-{
- NEWOBJ_OF(ary, struct RArray, klass,
- T_ARRAY | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0),
- sizeof(struct RArray), ec);
- return (VALUE)ary;
-}
-
-static VALUE
-ec_ary_new(rb_execution_context_t *ec, VALUE klass, long capa)
-{
- VALUE ary,*ptr;
-
- if (capa < 0) {
- rb_raise(rb_eArgError, "negative array size (or size too big)");
- }
- if (capa > ARY_MAX_SIZE) {
- rb_raise(rb_eArgError, "array size too big");
- }
-
- RUBY_DTRACE_CREATE_HOOK(ARRAY, capa);
-
- if (ary_embeddable_p(capa)) {
- ary = ec_ary_alloc_embed(ec, klass, capa);
- }
- else {
- ary = ec_ary_alloc_heap(ec, klass);
- ARY_SET_CAPA(ary, capa);
- assert(!ARY_EMBED_P(ary));
-
- ptr = ary_heap_alloc(ary, capa);
- ARY_SET_PTR(ary, ptr);
- ARY_SET_HEAP_LEN(ary, 0);
- }
-
- return ary;
-}
-
VALUE
-rb_ec_ary_new_from_values(rb_execution_context_t *ec, long n, const VALUE *elts)
+rb_ary_tmp_new(long capa)
{
- VALUE ary;
-
- ary = ec_ary_new(ec, rb_cArray, n);
- if (n > 0 && elts) {
- ary_memcpy(ary, 0, n, elts);
- ARY_SET_LEN(ary, n);
- }
-
- return ary;
+ return ary_new(0, capa);
}
VALUE
-rb_ary_hidden_new(long capa)
+rb_ary_tmp_new_fill(long capa)
{
VALUE ary = ary_new(0, capa);
- rb_ary_transient_heap_evacuate(ary, TRUE);
- return ary;
-}
-
-VALUE
-rb_ary_hidden_new_fill(long capa)
-{
- VALUE ary = rb_ary_hidden_new(capa);
ary_memfill(ary, 0, capa, Qnil);
ARY_SET_LEN(ary, capa);
return ary;
@@ -974,29 +559,11 @@ void
rb_ary_free(VALUE ary)
{
if (ARY_OWNS_HEAP_P(ary)) {
- if (USE_DEBUG_COUNTER &&
- !ARY_SHARED_ROOT_P(ary) &&
- ARY_HEAP_CAPA(ary) > RARRAY_LEN(ary)) {
- RB_DEBUG_COUNTER_INC(obj_ary_extracapa);
- }
-
- if (RARRAY_TRANSIENT_P(ary)) {
- RB_DEBUG_COUNTER_INC(obj_ary_transient);
- }
- else {
- RB_DEBUG_COUNTER_INC(obj_ary_ptr);
- ary_heap_free(ary);
- }
+ RB_DEBUG_COUNTER_INC(obj_ary_ptr);
+ ruby_sized_xfree((void *)ARY_HEAP_PTR(ary), ARY_HEAP_SIZE(ary));
}
else {
- RB_DEBUG_COUNTER_INC(obj_ary_embed);
- }
-
- if (ARY_SHARED_P(ary)) {
- RB_DEBUG_COUNTER_INC(obj_ary_shared);
- }
- if (ARY_SHARED_ROOT_P(ary) && ARY_SHARED_ROOT_OCCUPIED(ary)) {
- RB_DEBUG_COUNTER_INC(obj_ary_shared_root_occupied);
+ RB_DEBUG_COUNTER_INC(obj_ary_embed);
}
}
@@ -1004,65 +571,51 @@ RUBY_FUNC_EXPORTED size_t
rb_ary_memsize(VALUE ary)
{
if (ARY_OWNS_HEAP_P(ary)) {
- return ARY_CAPA(ary) * sizeof(VALUE);
+ return ARY_CAPA(ary) * sizeof(VALUE);
}
else {
- return 0;
+ return 0;
}
}
+static inline void
+ary_discard(VALUE ary)
+{
+ rb_ary_free(ary);
+ RBASIC(ary)->flags |= RARRAY_EMBED_FLAG;
+ RBASIC(ary)->flags &= ~RARRAY_EMBED_LEN_MASK;
+}
+
static VALUE
ary_make_shared(VALUE ary)
{
- ary_verify(ary);
-
+ assert(!ARY_EMBED_P(ary));
if (ARY_SHARED_P(ary)) {
- return ARY_SHARED_ROOT(ary);
+ return ARY_SHARED(ary);
}
else if (ARY_SHARED_ROOT_P(ary)) {
- return ary;
+ return ary;
}
else if (OBJ_FROZEN(ary)) {
- if (!ARY_EMBED_P(ary)) {
- rb_ary_transient_heap_evacuate(ary, TRUE);
- ary_shrink_capa(ary);
- }
- return ary;
+ ary_shrink_capa(ary);
+ FL_SET_SHARED_ROOT(ary);
+ ARY_SET_SHARED_NUM(ary, 1);
+ return ary;
}
else {
- rb_ary_transient_heap_evacuate(ary, TRUE);
-
- long capa = ARY_CAPA(ary);
- long len = RARRAY_LEN(ary);
-
- /* Shared roots cannot be embedded because the reference count
- * (refcnt) is stored in as.heap.aux.capa. */
- VALUE shared = ary_alloc_heap(0);
- FL_SET_SHARED_ROOT(shared);
-
- if (ARY_EMBED_P(ary)) {
- /* Cannot use ary_heap_alloc because we don't want to allocate
- * on the transient heap. */
- VALUE *ptr = ALLOC_N(VALUE, capa);
- ARY_SET_PTR(shared, ptr);
- ary_memcpy(shared, 0, len, RARRAY_CONST_PTR(ary));
-
- FL_UNSET_EMBED(ary);
- ARY_SET_HEAP_LEN(ary, len);
- ARY_SET_PTR(ary, ptr);
- }
- else {
- ARY_SET_PTR(shared, RARRAY_CONST_PTR(ary));
- }
-
- ARY_SET_LEN(shared, capa);
- ary_mem_clear(shared, len, capa - len);
- rb_ary_set_shared(ary, shared);
+ long capa = ARY_CAPA(ary), len = RARRAY_LEN(ary);
+ NEWOBJ_OF(shared, struct RArray, 0, T_ARRAY | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0));
+ FL_UNSET_EMBED(shared);
- ary_verify(shared);
- ary_verify(ary);
-
- return shared;
+ ARY_SET_LEN((VALUE)shared, capa);
+ ARY_SET_PTR((VALUE)shared, RARRAY_CONST_PTR(ary));
+ ary_mem_clear((VALUE)shared, len, capa - len);
+ FL_SET_SHARED_ROOT(shared);
+ ARY_SET_SHARED_NUM((VALUE)shared, 1);
+ FL_SET_SHARED(ary);
+ ARY_SET_SHARED(ary, (VALUE)shared);
+ OBJ_FREEZE(shared);
+ return (VALUE)shared;
}
}
@@ -1071,11 +624,9 @@ ary_make_substitution(VALUE ary)
{
long len = RARRAY_LEN(ary);
- if (ary_embeddable_p(len)) {
- VALUE subst = rb_ary_new_capa(len);
- assert(ARY_EMBED_P(subst));
-
- ary_memcpy(subst, 0, len, RARRAY_CONST_PTR_TRANSIENT(ary));
+ if (len <= RARRAY_EMBED_LEN_MAX) {
+ VALUE subst = rb_ary_new2(len);
+ ary_memcpy(subst, 0, len, RARRAY_CONST_PTR(ary));
ARY_SET_EMBED_LEN(subst, len);
return subst;
}
@@ -1103,30 +654,23 @@ rb_check_array_type(VALUE ary)
return rb_check_convert_type_with_id(ary, T_ARRAY, "Array", idTo_ary);
}
-VALUE
-rb_check_to_array(VALUE ary)
-{
- return rb_check_convert_type_with_id(ary, T_ARRAY, "Array", idTo_a);
-}
-
-VALUE
-rb_to_array(VALUE ary)
-{
- return rb_convert_type_with_id(ary, T_ARRAY, "Array", idTo_a);
-}
-
/*
* call-seq:
- * Array.try_convert(object) -> object, new_array, or nil
+ * Array.try_convert(obj) -> array or nil
*
- * If +object+ is an \Array object, returns +object+.
+ * Tries to convert +obj+ into an array, using +to_ary+ method. Returns the
+ * converted array or +nil+ if +obj+ cannot be converted for any reason.
+ * This method can be used to check if an argument is an array.
*
- * Otherwise if +object+ responds to <tt>:to_ary</tt>,
- * calls <tt>object.to_ary</tt> and returns the result.
+ * Array.try_convert([1]) #=> [1]
+ * Array.try_convert("1") #=> nil
*
- * Returns +nil+ if +object+ does not respond to <tt>:to_ary</tt>
+ * if tmp = Array.try_convert(arg)
+ * # the argument is an array
+ * elsif tmp = String.try_convert(arg)
+ * # the argument is a string
+ * end
*
- * Raises an exception unless <tt>object.to_ary</tt> returns an \Array object.
*/
static VALUE
@@ -1135,76 +679,60 @@ rb_ary_s_try_convert(VALUE dummy, VALUE ary)
return rb_check_array_type(ary);
}
-/* :nodoc: */
-static VALUE
-rb_ary_s_new(int argc, VALUE *argv, VALUE klass)
-{
- VALUE ary;
-
- if (klass == rb_cArray) {
- long size = 0;
- if (argc > 0 && FIXNUM_P(argv[0])) {
- size = FIX2LONG(argv[0]);
- if (size < 0) size = 0;
- }
-
- ary = ary_new(klass, size);
-
- rb_obj_call_init_kw(ary, argc, argv, RB_PASS_CALLED_KEYWORDS);
- }
- else {
- ary = rb_class_new_instance_pass_kw(argc, argv, klass);
- }
-
- return ary;
-}
-
/*
* call-seq:
- * Array.new -> new_empty_array
- * Array.new(array) -> new_array
- * Array.new(size) -> new_array
- * Array.new(size, default_value) -> new_array
- * Array.new(size) {|index| ... } -> new_array
+ * Array.new(size=0, default=nil)
+ * Array.new(array)
+ * Array.new(size) {|index| block }
+ *
+ * Returns a new array.
+ *
+ * In the first form, if no arguments are sent, the new array will be empty.
+ * When a +size+ and an optional +default+ are sent, an array is created with
+ * +size+ copies of +default+. Take notice that all elements will reference the
+ * same object +default+.
+ *
+ * The second form creates a copy of the array passed as a parameter (the
+ * array is generated by calling to_ary on the parameter).
+ *
+ * first_array = ["Matz", "Guido"]
+ *
+ * second_array = Array.new(first_array) #=> ["Matz", "Guido"]
*
- * Returns a new \Array.
+ * first_array.equal? second_array #=> false
*
- * With no block and no arguments, returns a new empty \Array object.
+ * In the last form, an array of the given size is created. Each element in
+ * this array is created by passing the element's index to the given block
+ * and storing the return value.
*
- * With no block and a single \Array argument +array+,
- * returns a new \Array formed from +array+:
+ * Array.new(3){ |index| index ** 2 }
+ * # => [0, 1, 4]
*
- * a = Array.new([:foo, 'bar', 2])
- * a.class # => Array
- * a # => [:foo, "bar", 2]
+ * == Common gotchas
*
- * With no block and a single \Integer argument +size+,
- * returns a new \Array of the given size
- * whose elements are all +nil+:
+ * When sending the second parameter, the same object will be used as the
+ * value for all the array elements:
*
- * a = Array.new(3)
- * a # => [nil, nil, nil]
+ * a = Array.new(2, Hash.new)
+ * # => [{}, {}]
*
- * With no block and arguments +size+ and +default_value+,
- * returns an \Array of the given size;
- * each element is that same +default_value+:
+ * a[0]['cat'] = 'feline'
+ * a # => [{"cat"=>"feline"}, {"cat"=>"feline"}]
*
- * a = Array.new(3, 'x')
- * a # => ['x', 'x', 'x']
+ * a[1]['cat'] = 'Felix'
+ * a # => [{"cat"=>"Felix"}, {"cat"=>"Felix"}]
*
- * With a block and argument +size+,
- * returns an \Array of the given size;
- * the block is called with each successive integer +index+;
- * the element for that +index+ is the return value from the block:
+ * Since all the Array elements store the same hash, changes to one of them
+ * will affect them all.
*
- * a = Array.new(3) {|index| "Element #{index}" }
- * a # => ["Element 0", "Element 1", "Element 2"]
+ * If multiple copies are what you want, you should use the block
+ * version which uses the result of that block each time an element
+ * of the array needs to be initialized:
*
- * Raises ArgumentError if +size+ is negative.
+ * a = Array.new(2) { Hash.new }
+ * a[0]['cat'] = 'feline'
+ * a # => [{"cat"=>"feline"}, {}]
*
- * With a block and no argument,
- * or a single argument +0+,
- * ignores the block and returns a new empty \Array.
*/
static VALUE
@@ -1215,48 +743,51 @@ rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
rb_ary_modify(ary);
if (argc == 0) {
- rb_ary_reset(ary);
- assert(ARY_EMBED_P(ary));
- assert(ARY_EMBED_LEN(ary) == 0);
- if (rb_block_given_p()) {
- rb_warning("given block not used");
- }
- return ary;
+ if (ARY_OWNS_HEAP_P(ary) && RARRAY_CONST_PTR(ary) != 0) {
+ ruby_sized_xfree((void *)RARRAY_CONST_PTR(ary), ARY_HEAP_SIZE(ary));
+ }
+ rb_ary_unshare_safe(ary);
+ FL_SET_EMBED(ary);
+ ARY_SET_EMBED_LEN(ary, 0);
+ if (rb_block_given_p()) {
+ rb_warning("given block not used");
+ }
+ return ary;
}
rb_scan_args(argc, argv, "02", &size, &val);
if (argc == 1 && !FIXNUM_P(size)) {
- val = rb_check_array_type(size);
- if (!NIL_P(val)) {
- rb_ary_replace(ary, val);
- return ary;
- }
+ val = rb_check_array_type(size);
+ if (!NIL_P(val)) {
+ rb_ary_replace(ary, val);
+ return ary;
+ }
}
len = NUM2LONG(size);
/* NUM2LONG() may call size.to_int, ary can be frozen, modified, etc */
if (len < 0) {
- rb_raise(rb_eArgError, "negative array size");
+ rb_raise(rb_eArgError, "negative array size");
}
if (len > ARY_MAX_SIZE) {
- rb_raise(rb_eArgError, "array size too big");
+ rb_raise(rb_eArgError, "array size too big");
}
/* recheck after argument conversion */
rb_ary_modify(ary);
ary_resize_capa(ary, len);
if (rb_block_given_p()) {
- long i;
+ long i;
- if (argc == 2) {
- rb_warn("block supersedes default value argument");
- }
- for (i=0; i<len; i++) {
- rb_ary_store(ary, i, rb_yield(LONG2NUM(i)));
- ARY_SET_LEN(ary, i + 1);
- }
+ if (argc == 2) {
+ rb_warn("block supersedes default value argument");
+ }
+ for (i=0; i<len; i++) {
+ rb_ary_store(ary, i, rb_yield(LONG2NUM(i)));
+ ARY_SET_LEN(ary, i + 1);
+ }
}
else {
- ary_memfill(ary, 0, len, val);
- ARY_SET_LEN(ary, len);
+ ary_memfill(ary, 0, len, val);
+ ARY_SET_LEN(ary, len);
}
return ary;
}
@@ -1264,7 +795,7 @@ rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
/*
* Returns a new array populated with the given objects.
*
- * Array.[]( 1, 'a', /^A/) # => [1, "a", /^A/]
+ * Array.[]( 1, 'a', /^A/ ) # => [1, "a", /^A/]
* Array[ 1, 'a', /^A/ ] # => [1, "a", /^A/]
* [ 1, 'a', /^A/ ] # => [1, "a", /^A/]
*/
@@ -1287,26 +818,26 @@ rb_ary_store(VALUE ary, long idx, VALUE val)
long len = RARRAY_LEN(ary);
if (idx < 0) {
- idx += len;
- if (idx < 0) {
- rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
- idx - len, -len);
- }
+ idx += len;
+ if (idx < 0) {
+ rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
+ idx - len, -len);
+ }
}
else if (idx >= ARY_MAX_SIZE) {
- rb_raise(rb_eIndexError, "index %ld too big", idx);
+ rb_raise(rb_eIndexError, "index %ld too big", idx);
}
rb_ary_modify(ary);
if (idx >= ARY_CAPA(ary)) {
- ary_double_capa(ary, idx);
+ ary_double_capa(ary, idx);
}
if (idx > len) {
- ary_mem_clear(ary, len, idx - len + 1);
+ ary_mem_clear(ary, len, idx - len + 1);
}
if (idx >= len) {
- ARY_SET_LEN(ary, idx + 1);
+ ARY_SET_LEN(ary, idx + 1);
}
ARY_SET(ary, idx, val);
}
@@ -1318,87 +849,31 @@ ary_make_partial(VALUE ary, VALUE klass, long offset, long len)
assert(len >= 0);
assert(offset+len <= RARRAY_LEN(ary));
- const size_t rarray_embed_capa_max = (sizeof(struct RArray) - offsetof(struct RArray, as.ary)) / sizeof(VALUE);
-
- if ((size_t)len <= rarray_embed_capa_max && ary_embeddable_p(len)) {
- VALUE result = ary_alloc_embed(klass, len);
- ary_memcpy(result, 0, len, RARRAY_CONST_PTR_TRANSIENT(ary) + offset);
+ if (len <= RARRAY_EMBED_LEN_MAX) {
+ VALUE result = ary_alloc(klass);
+ ary_memcpy(result, 0, len, RARRAY_CONST_PTR(ary) + offset);
ARY_SET_EMBED_LEN(result, len);
return result;
}
else {
- VALUE shared = ary_make_shared(ary);
+ VALUE shared, result = ary_alloc(klass);
+ FL_UNSET_EMBED(result);
- VALUE result = ary_alloc_heap(klass);
- assert(!ARY_EMBED_P(result));
-
- ARY_SET_PTR(result, RARRAY_CONST_PTR_TRANSIENT(ary));
+ shared = ary_make_shared(ary);
+ ARY_SET_PTR(result, RARRAY_CONST_PTR(ary));
ARY_SET_LEN(result, RARRAY_LEN(ary));
rb_ary_set_shared(result, shared);
ARY_INCREASE_PTR(result, offset);
ARY_SET_LEN(result, len);
-
- ary_verify(shared);
- ary_verify(result);
- return result;
- }
-}
-
-static VALUE
-ary_make_partial_step(VALUE ary, VALUE klass, long offset, long len, long step)
-{
- assert(offset >= 0);
- assert(len >= 0);
- assert(offset+len <= RARRAY_LEN(ary));
- assert(step != 0);
-
- const VALUE *values = RARRAY_CONST_PTR_TRANSIENT(ary);
- const long orig_len = len;
-
- if (step > 0 && step >= len) {
- VALUE result = ary_new(klass, 1);
- VALUE *ptr = (VALUE *)ARY_EMBED_PTR(result);
- RB_OBJ_WRITE(result, ptr, values[offset]);
- ARY_SET_EMBED_LEN(result, 1);
return result;
}
- else if (step < 0 && step < -len) {
- step = -len;
- }
-
- long ustep = (step < 0) ? -step : step;
- len = roomof(len, ustep);
-
- long i;
- long j = offset + ((step > 0) ? 0 : (orig_len - 1));
-
- VALUE result = ary_new(klass, len);
- if (ARY_EMBED_P(result)) {
- VALUE *ptr = (VALUE *)ARY_EMBED_PTR(result);
- for (i = 0; i < len; ++i) {
- RB_OBJ_WRITE(result, ptr+i, values[j]);
- j += step;
- }
- ARY_SET_EMBED_LEN(result, len);
- }
- else {
- RARRAY_PTR_USE_TRANSIENT(result, ptr, {
- for (i = 0; i < len; ++i) {
- RB_OBJ_WRITE(result, ptr+i, values[j]);
- j += step;
- }
- });
- ARY_SET_LEN(result, len);
- }
-
- return result;
}
static VALUE
ary_make_shared_copy(VALUE ary)
{
- return ary_make_partial(ary, rb_cArray, 0, RARRAY_LEN(ary));
+ return ary_make_partial(ary, rb_obj_class(ary), 0, RARRAY_LEN(ary));
}
enum ary_take_pos_flags
@@ -1408,61 +883,53 @@ enum ary_take_pos_flags
};
static VALUE
-ary_take_first_or_last_n(VALUE ary, long n, enum ary_take_pos_flags last)
+ary_take_first_or_last(int argc, const VALUE *argv, VALUE ary, enum ary_take_pos_flags last)
{
- long len = RARRAY_LEN(ary);
+ VALUE nv;
+ long n;
+ long len;
long offset = 0;
+ rb_scan_args(argc, argv, "1", &nv);
+ n = NUM2LONG(nv);
+ len = RARRAY_LEN(ary);
if (n > len) {
- n = len;
+ n = len;
}
else if (n < 0) {
- rb_raise(rb_eArgError, "negative array size");
+ rb_raise(rb_eArgError, "negative array size");
}
if (last) {
- offset = len - n;
+ offset = len - n;
}
return ary_make_partial(ary, rb_cArray, offset, n);
}
-static VALUE
-ary_take_first_or_last(int argc, const VALUE *argv, VALUE ary, enum ary_take_pos_flags last)
-{
- argc = rb_check_arity(argc, 0, 1);
- /* the case optional argument is omitted should be handled in
- * callers of this function. if another arity case is added,
- * this arity check needs to rewrite. */
- RUBY_ASSERT_ALWAYS(argc == 1);
- return ary_take_first_or_last_n(ary, NUM2LONG(argv[0]), last);
-}
-
/*
* call-seq:
- * array << object -> self
+ * ary << obj -> ary
*
- * Appends +object+ to +self+; returns +self+:
+ * Append---Pushes the given object on to the end of this array. This
+ * expression returns the array itself, so several appends
+ * may be chained together.
*
- * a = [:foo, 'bar', 2]
- * a << :baz # => [:foo, "bar", 2, :baz]
- *
- * Appends +object+ as one element, even if it is another \Array:
- *
- * a = [:foo, 'bar', 2]
- * a1 = a << [3, 4]
- * a1 # => [:foo, "bar", 2, [3, 4]]
+ * a = [ 1, 2 ]
+ * a << "c" << "d" << [ 3, 4 ]
+ * #=> [ 1, 2, "c", "d", [ 3, 4 ] ]
+ * a
+ * #=> [ 1, 2, "c", "d", [ 3, 4 ] ]
*
*/
VALUE
rb_ary_push(VALUE ary, VALUE item)
{
- long idx = RARRAY_LEN((ary_verify(ary), ary));
+ long idx = RARRAY_LEN(ary);
VALUE target_ary = ary_ensure_room_for_push(ary, 1);
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
- RB_OBJ_WRITE(target_ary, &ptr[idx], item);
+ RARRAY_PTR_USE(ary, ptr, {
+ RB_OBJ_WRITE(target_ary, &ptr[idx], item);
});
ARY_SET_LEN(ary, idx + 1);
- ary_verify(ary);
return ary;
}
@@ -1478,22 +945,18 @@ rb_ary_cat(VALUE ary, const VALUE *argv, long len)
/*
* call-seq:
- * array.push(*objects) -> self
- *
- * Appends trailing elements.
- *
- * Appends each argument in +objects+ to +self+; returns +self+:
- *
- * a = [:foo, 'bar', 2]
- * a.push(:baz, :bat) # => [:foo, "bar", 2, :baz, :bat]
- *
- * Appends each argument as one element, even if it is another \Array:
- *
- * a = [:foo, 'bar', 2]
- * a1 = a.push([:baz, :bat], [:bam, :bad])
- * a1 # => [:foo, "bar", 2, [:baz, :bat], [:bam, :bad]]
- *
- * Related: #pop, #shift, #unshift.
+ * ary.push(obj, ... ) -> ary
+ *
+ * Append --- Pushes the given object(s) on to the end of this array. This
+ * expression returns the array itself, so several appends
+ * may be chained together. See also Array#pop for the opposite
+ * effect.
+ *
+ * a = [ "a", "b", "c" ]
+ * a.push("d", "e", "f")
+ * #=> ["a", "b", "c", "d", "e", "f"]
+ * [1, 2, 3].push(4).push(5)
+ * #=> [1, 2, 3, 4, 5]
*/
static VALUE
@@ -1510,46 +973,32 @@ rb_ary_pop(VALUE ary)
n = RARRAY_LEN(ary);
if (n == 0) return Qnil;
if (ARY_OWNS_HEAP_P(ary) &&
- n * 3 < ARY_CAPA(ary) &&
- ARY_CAPA(ary) > ARY_DEFAULT_SIZE)
+ n * 3 < ARY_CAPA(ary) &&
+ ARY_CAPA(ary) > ARY_DEFAULT_SIZE)
{
- ary_resize_capa(ary, n * 2);
+ ary_resize_capa(ary, n * 2);
}
--n;
ARY_SET_LEN(ary, n);
- ary_verify(ary);
return RARRAY_AREF(ary, n);
}
/*
* call-seq:
- * array.pop -> object or nil
- * array.pop(n) -> new_array
- *
- * Removes and returns trailing elements.
- *
- * When no argument is given and +self+ is not empty,
- * removes and returns the last element:
- *
- * a = [:foo, 'bar', 2]
- * a.pop # => 2
- * a # => [:foo, "bar"]
- *
- * Returns +nil+ if the array is empty.
+ * ary.pop -> obj or nil
+ * ary.pop(n) -> new_ary
*
- * When a non-negative \Integer argument +n+ is given and is in range,
+ * Removes the last element from +self+ and returns it, or
+ * +nil+ if the array is empty.
*
- * removes and returns the last +n+ elements in a new \Array:
- * a = [:foo, 'bar', 2]
- * a.pop(2) # => ["bar", 2]
+ * If a number +n+ is given, returns an array of the last +n+ elements
+ * (or less) just like <code>array.slice!(-n, n)</code> does. See also
+ * Array#push for the opposite effect.
*
- * If +n+ is positive and out of range,
- * removes and returns all elements:
- *
- * a = [:foo, 'bar', 2]
- * a.pop(50) # => [:foo, "bar", 2]
- *
- * Related: #push, #shift, #unshift.
+ * a = [ "a", "b", "c", "d" ]
+ * a.pop #=> "d"
+ * a.pop(2) #=> ["b", "c"]
+ * a #=> ["a"]
*/
static VALUE
@@ -1558,13 +1007,12 @@ rb_ary_pop_m(int argc, VALUE *argv, VALUE ary)
VALUE result;
if (argc == 0) {
- return rb_ary_pop(ary);
+ return rb_ary_pop(ary);
}
rb_ary_modify_check(ary);
result = ary_take_first_or_last(argc, argv, ary, ARY_TAKE_LAST);
ARY_INCREASE_LEN(ary, -RARRAY_LEN(result));
- ary_verify(ary);
return result;
}
@@ -1574,49 +1022,52 @@ rb_ary_shift(VALUE ary)
VALUE top;
long len = RARRAY_LEN(ary);
- if (len == 0) {
- rb_ary_modify_check(ary);
- return Qnil;
- }
-
+ rb_ary_modify_check(ary);
+ if (len == 0) return Qnil;
top = RARRAY_AREF(ary, 0);
-
- rb_ary_behead(ary, 1);
+ if (!ARY_SHARED_P(ary)) {
+ if (len < ARY_DEFAULT_SIZE) {
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr, ptr+1, VALUE, len-1);
+ }); /* WB: no new reference */
+ ARY_INCREASE_LEN(ary, -1);
+ return top;
+ }
+ assert(!ARY_EMBED_P(ary)); /* ARY_EMBED_LEN_MAX < ARY_DEFAULT_SIZE */
+
+ ARY_SET(ary, 0, Qnil);
+ ary_make_shared(ary);
+ }
+ else if (ARY_SHARED_OCCUPIED(ARY_SHARED(ary))) {
+ RARRAY_PTR_USE(ary, ptr, ptr[0] = Qnil);
+ }
+ ARY_INCREASE_PTR(ary, 1); /* shift ptr */
+ ARY_INCREASE_LEN(ary, -1);
return top;
}
/*
* call-seq:
- * array.shift -> object or nil
- * array.shift(n) -> new_array
- *
- * Removes and returns leading elements.
- *
- * When no argument is given, removes and returns the first element:
+ * ary.shift -> obj or nil
+ * ary.shift(n) -> new_ary
*
- * a = [:foo, 'bar', 2]
- * a.shift # => :foo
- * a # => ['bar', 2]
+ * Removes the first element of +self+ and returns it (shifting all
+ * other elements down by one). Returns +nil+ if the array
+ * is empty.
*
- * Returns +nil+ if +self+ is empty.
+ * If a number +n+ is given, returns an array of the first +n+ elements
+ * (or less) just like <code>array.slice!(0, n)</code> does. With +ary+
+ * containing only the remainder elements, not including what was shifted to
+ * +new_ary+. See also Array#unshift for the opposite effect.
*
- * When positive \Integer argument +n+ is given, removes the first +n+ elements;
- * returns those elements in a new \Array:
+ * args = [ "-m", "-q", "filename" ]
+ * args.shift #=> "-m"
+ * args #=> ["-q", "filename"]
*
- * a = [:foo, 'bar', 2]
- * a.shift(2) # => [:foo, 'bar']
- * a # => [2]
- *
- * If +n+ is as large as or larger than <tt>self.length</tt>,
- * removes all elements; returns those elements in a new \Array:
- *
- * a = [:foo, 'bar', 2]
- * a.shift(3) # => [:foo, 'bar', 2]
- *
- * If +n+ is zero, returns a new empty \Array; +self+ is unmodified.
- *
- * Related: #push, #pop, #unshift.
+ * args = [ "-m", "-q", "filename" ]
+ * args.shift(2) #=> ["-m", "-q"]
+ * args #=> ["filename"]
*/
static VALUE
@@ -1626,156 +1077,116 @@ rb_ary_shift_m(int argc, VALUE *argv, VALUE ary)
long n;
if (argc == 0) {
- return rb_ary_shift(ary);
+ return rb_ary_shift(ary);
}
rb_ary_modify_check(ary);
result = ary_take_first_or_last(argc, argv, ary, ARY_TAKE_FIRST);
n = RARRAY_LEN(result);
- rb_ary_behead(ary,n);
-
- return result;
-}
-
-VALUE
-rb_ary_behead(VALUE ary, long n)
-{
- if (n <= 0) {
- return ary;
- }
-
- rb_ary_modify_check(ary);
-
- if (!ARY_SHARED_P(ary)) {
- if (ARY_EMBED_P(ary) || RARRAY_LEN(ary) < ARY_DEFAULT_SIZE) {
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
- MEMMOVE(ptr, ptr + n, VALUE, RARRAY_LEN(ary) - n);
- }); /* WB: no new reference */
- ARY_INCREASE_LEN(ary, -n);
- ary_verify(ary);
- return ary;
- }
-
- ary_mem_clear(ary, 0, n);
- ary_make_shared(ary);
+ if (ARY_SHARED_P(ary)) {
+ if (ARY_SHARED_OCCUPIED(ARY_SHARED(ary))) {
+ setup_occupied_shared:
+ ary_mem_clear(ary, 0, n);
+ }
+ ARY_INCREASE_PTR(ary, n);
}
- else if (ARY_SHARED_ROOT_OCCUPIED(ARY_SHARED_ROOT(ary))) {
- ary_mem_clear(ary, 0, n);
+ else {
+ if (RARRAY_LEN(ary) < ARY_DEFAULT_SIZE) {
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr, ptr+n, VALUE, RARRAY_LEN(ary)-n);
+ }); /* WB: no new reference */
+ }
+ else {
+ ary_make_shared(ary);
+ goto setup_occupied_shared;
+ }
}
-
- ARY_INCREASE_PTR(ary, n);
ARY_INCREASE_LEN(ary, -n);
- ary_verify(ary);
-
- return ary;
-}
-static VALUE
-make_room_for_unshift(VALUE ary, const VALUE *head, VALUE *sharedp, int argc, long capa, long len)
-{
- if (head - sharedp < argc) {
- long room = capa - len - argc;
-
- room -= room >> 4;
- MEMMOVE((VALUE *)sharedp + argc + room, head, VALUE, len);
- head = sharedp + argc + room;
- }
- ARY_SET_PTR(ary, head - argc);
- assert(ARY_SHARED_ROOT_OCCUPIED(ARY_SHARED_ROOT(ary)));
-
- ary_verify(ary);
- return ARY_SHARED_ROOT(ary);
+ return result;
}
static VALUE
-ary_modify_for_unshift(VALUE ary, int argc)
+ary_ensure_room_for_unshift(VALUE ary, int argc)
{
long len = RARRAY_LEN(ary);
long new_len = len + argc;
long capa;
const VALUE *head, *sharedp;
- rb_ary_modify(ary);
- capa = ARY_CAPA(ary);
- if (capa - (capa >> 6) <= new_len) {
- ary_double_capa(ary, new_len);
+ if (len > ARY_MAX_SIZE - argc) {
+ rb_raise(rb_eIndexError, "index %ld too big", new_len);
}
- /* use shared array for big "queues" */
- if (new_len > ARY_DEFAULT_SIZE * 4 && !ARY_EMBED_P(ary)) {
- ary_verify(ary);
-
- /* make a room for unshifted items */
- capa = ARY_CAPA(ary);
- ary_make_shared(ary);
+ rb_ary_modify(ary);
- head = sharedp = RARRAY_CONST_PTR_TRANSIENT(ary);
- return make_room_for_unshift(ary, head, (void *)sharedp, argc, capa, len);
+ if (ARY_SHARED_P(ary)) {
+ VALUE shared = ARY_SHARED(ary);
+ capa = RARRAY_LEN(shared);
+ if (ARY_SHARED_OCCUPIED(shared) && capa > new_len) {
+ head = RARRAY_CONST_PTR(ary);
+ sharedp = RARRAY_CONST_PTR(shared);
+ goto makeroom_if_need;
+ }
}
- else {
- /* sliding items */
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
- MEMMOVE(ptr + argc, ptr, VALUE, len);
- });
- ary_verify(ary);
- return ary;
+ capa = ARY_CAPA(ary);
+ if (capa - (capa >> 6) <= new_len) {
+ ary_double_capa(ary, new_len);
}
-}
-static VALUE
-ary_ensure_room_for_unshift(VALUE ary, int argc)
-{
- long len = RARRAY_LEN(ary);
- long new_len = len + argc;
-
- if (len > ARY_MAX_SIZE - argc) {
- rb_raise(rb_eIndexError, "index %ld too big", new_len);
- }
- else if (! ARY_SHARED_P(ary)) {
- return ary_modify_for_unshift(ary, argc);
+ /* use shared array for big "queues" */
+ if (new_len > ARY_DEFAULT_SIZE * 4) {
+ /* make a room for unshifted items */
+ capa = ARY_CAPA(ary);
+ ary_make_shared(ary);
+
+ head = sharedp = RARRAY_CONST_PTR(ary);
+ goto makeroom;
+ makeroom_if_need:
+ if (head - sharedp < argc) {
+ long room;
+ makeroom:
+ room = capa - new_len;
+ room -= room >> 4;
+ MEMMOVE((VALUE *)sharedp + argc + room, head, VALUE, len);
+ head = sharedp + argc + room;
+ }
+ ARY_SET_PTR(ary, head - argc);
+ assert(ARY_SHARED_OCCUPIED(ARY_SHARED(ary)));
+ return ARY_SHARED(ary);
}
else {
- VALUE shared_root = ARY_SHARED_ROOT(ary);
- long capa = RARRAY_LEN(shared_root);
+ /* sliding items */
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr + argc, ptr, VALUE, len);
+ });
- if (! ARY_SHARED_ROOT_OCCUPIED(shared_root)) {
- return ary_modify_for_unshift(ary, argc);
- }
- else if (new_len > capa) {
- return ary_modify_for_unshift(ary, argc);
- }
- else {
- const VALUE * head = RARRAY_CONST_PTR_TRANSIENT(ary);
- void *sharedp = (void *)RARRAY_CONST_PTR_TRANSIENT(shared_root);
-
- rb_ary_modify_check(ary);
- return make_room_for_unshift(ary, head, sharedp, argc, capa, len);
- }
+ return ary;
}
}
/*
* call-seq:
- * array.unshift(*objects) -> self
- *
- * Prepends the given +objects+ to +self+:
+ * ary.unshift(obj, ...) -> ary
*
- * a = [:foo, 'bar', 2]
- * a.unshift(:bam, :bat) # => [:bam, :bat, :foo, "bar", 2]
+ * Prepends objects to the front of +self+, moving other elements upwards.
+ * See also Array#shift for the opposite effect.
*
- * Related: #push, #pop, #shift.
+ * a = [ "b", "c", "d" ]
+ * a.unshift("a") #=> ["a", "b", "c", "d"]
+ * a.unshift(1, 2) #=> [ 1, 2, "a", "b", "c", "d"]
*/
-VALUE
+static VALUE
rb_ary_unshift_m(int argc, VALUE *argv, VALUE ary)
{
long len = RARRAY_LEN(ary);
VALUE target_ary;
if (argc == 0) {
- rb_ary_modify_check(ary);
- return ary;
+ rb_ary_modify_check(ary);
+ return ary;
}
target_ary = ary_ensure_room_for_unshift(ary, argc);
@@ -1787,7 +1198,7 @@ rb_ary_unshift_m(int argc, VALUE *argv, VALUE ary)
VALUE
rb_ary_unshift(VALUE ary, VALUE item)
{
- return rb_ary_unshift_m(1, &item, ary);
+ return rb_ary_unshift_m(1,&item,ary);
}
/* faster version - use this if you don't need to treat negative offset */
@@ -1797,7 +1208,7 @@ rb_ary_elt(VALUE ary, long offset)
long len = RARRAY_LEN(ary);
if (len == 0) return Qnil;
if (offset < 0 || len <= offset) {
- return Qnil;
+ return Qnil;
}
return RARRAY_AREF(ary, offset);
}
@@ -1805,11 +1216,21 @@ rb_ary_elt(VALUE ary, long offset)
VALUE
rb_ary_entry(VALUE ary, long offset)
{
- return rb_ary_entry_internal(ary, offset);
+ long len = RARRAY_LEN(ary);
+ const VALUE *ptr = RARRAY_CONST_PTR(ary);
+ if (len == 0) return Qnil;
+ if (offset < 0) {
+ offset += len;
+ if (offset < 0) return Qnil;
+ }
+ else if (len <= offset) {
+ return Qnil;
+ }
+ return ptr[offset];
}
VALUE
-rb_ary_subseq_step(VALUE ary, long beg, long len, long step)
+rb_ary_subseq(VALUE ary, long beg, long len)
{
VALUE klass;
long alen = RARRAY_LEN(ary);
@@ -1818,127 +1239,47 @@ rb_ary_subseq_step(VALUE ary, long beg, long len, long step)
if (beg < 0 || len < 0) return Qnil;
if (alen < len || alen < beg + len) {
- len = alen - beg;
+ len = alen - beg;
}
- klass = rb_cArray;
+ klass = rb_obj_class(ary);
if (len == 0) return ary_new(klass, 0);
- if (step == 0)
- rb_raise(rb_eArgError, "slice step cannot be zero");
- if (step == 1)
- return ary_make_partial(ary, klass, beg, len);
- else
- return ary_make_partial_step(ary, klass, beg, len, step);
-}
-VALUE
-rb_ary_subseq(VALUE ary, long beg, long len)
-{
- return rb_ary_subseq_step(ary, beg, len, 1);
+ return ary_make_partial(ary, klass, beg, len);
}
-static VALUE rb_ary_aref2(VALUE ary, VALUE b, VALUE e);
-
/*
* call-seq:
- * array[index] -> object or nil
- * array[start, length] -> object or nil
- * array[range] -> object or nil
- * array[aseq] -> object or nil
- * array.slice(index) -> object or nil
- * array.slice(start, length) -> object or nil
- * array.slice(range) -> object or nil
- * array.slice(aseq) -> object or nil
- *
- * Returns elements from +self+; does not modify +self+.
- *
- * When a single \Integer argument +index+ is given, returns the element at offset +index+:
- *
- * a = [:foo, 'bar', 2]
- * a[0] # => :foo
- * a[2] # => 2
- * a # => [:foo, "bar", 2]
- *
- * If +index+ is negative, counts relative to the end of +self+:
- *
- * a = [:foo, 'bar', 2]
- * a[-1] # => 2
- * a[-2] # => "bar"
- *
- * If +index+ is out of range, returns +nil+.
- *
- * When two \Integer arguments +start+ and +length+ are given,
- * returns a new \Array of size +length+ containing successive elements beginning at offset +start+:
- *
- * a = [:foo, 'bar', 2]
- * a[0, 2] # => [:foo, "bar"]
- * a[1, 2] # => ["bar", 2]
- *
- * If <tt>start + length</tt> is greater than <tt>self.length</tt>,
- * returns all elements from offset +start+ to the end:
- *
- * a = [:foo, 'bar', 2]
- * a[0, 4] # => [:foo, "bar", 2]
- * a[1, 3] # => ["bar", 2]
- * a[2, 2] # => [2]
- *
- * If <tt>start == self.size</tt> and <tt>length >= 0</tt>,
- * returns a new empty \Array.
- *
- * If +length+ is negative, returns +nil+.
- *
- * When a single \Range argument +range+ is given,
- * treats <tt>range.min</tt> as +start+ above
- * and <tt>range.size</tt> as +length+ above:
- *
- * a = [:foo, 'bar', 2]
- * a[0..1] # => [:foo, "bar"]
- * a[1..2] # => ["bar", 2]
- *
- * Special case: If <tt>range.start == a.size</tt>, returns a new empty \Array.
- *
- * If <tt>range.end</tt> is negative, calculates the end index from the end:
- *
- * a = [:foo, 'bar', 2]
- * a[0..-1] # => [:foo, "bar", 2]
- * a[0..-2] # => [:foo, "bar"]
- * a[0..-3] # => [:foo]
- *
- * If <tt>range.start</tt> is negative, calculates the start index from the end:
- *
- * a = [:foo, 'bar', 2]
- * a[-1..2] # => [2]
- * a[-2..2] # => ["bar", 2]
- * a[-3..2] # => [:foo, "bar", 2]
- *
- * If <tt>range.start</tt> is larger than the array size, returns +nil+.
- *
- * a = [:foo, 'bar', 2]
- * a[4..1] # => nil
- * a[4..0] # => nil
- * a[4..-1] # => nil
- *
- * When a single Enumerator::ArithmeticSequence argument +aseq+ is given,
- * returns an \Array of elements corresponding to the indexes produced by
- * the sequence.
- *
- * a = ['--', 'data1', '--', 'data2', '--', 'data3']
- * a[(1..).step(2)] # => ["data1", "data2", "data3"]
- *
- * Unlike slicing with range, if the start or the end of the arithmetic sequence
- * is larger than array size, throws RangeError.
- *
- * a = ['--', 'data1', '--', 'data2', '--', 'data3']
- * a[(1..11).step(2)]
- * # RangeError (((1..11).step(2)) out of range)
- * a[(7..).step(2)]
- * # RangeError (((7..).step(2)) out of range)
- *
- * If given a single argument, and its type is not one of the listed, tries to
- * convert it to Integer, and raises if it is impossible:
- *
- * a = [:foo, 'bar', 2]
- * # Raises TypeError (no implicit conversion of Symbol into Integer):
- * a[:foo]
+ * ary[index] -> obj or nil
+ * ary[start, length] -> new_ary or nil
+ * ary[range] -> new_ary or nil
+ * ary.slice(index) -> obj or nil
+ * ary.slice(start, length) -> new_ary or nil
+ * ary.slice(range) -> new_ary or nil
+ *
+ * Element Reference --- Returns the element at +index+, or returns a
+ * subarray starting at the +start+ index and continuing for +length+
+ * elements, or returns a subarray specified by +range+ of indices.
+ *
+ * Negative indices count backward from the end of the array (-1 is the last
+ * element). For +start+ and +range+ cases the starting index is just before
+ * an element. Additionally, an empty array is returned when the starting
+ * index for an element range is at the end of the array.
+ *
+ * Returns +nil+ if the index (or starting index) are out of range.
+ *
+ * a = [ "a", "b", "c", "d", "e" ]
+ * a[2] + a[0] + a[1] #=> "cab"
+ * a[6] #=> nil
+ * a[1, 2] #=> [ "b", "c" ]
+ * a[1..3] #=> [ "b", "c", "d" ]
+ * a[4..7] #=> [ "e" ]
+ * a[6..10] #=> nil
+ * a[-3, 3] #=> [ "c", "d", "e" ]
+ * # special cases
+ * a[5] #=> nil
+ * a[6, 1] #=> nil
+ * a[5, 1] #=> []
+ * a[5..10] #=> []
*
*/
@@ -1947,18 +1288,18 @@ rb_ary_aref(int argc, const VALUE *argv, VALUE ary)
{
rb_check_arity(argc, 1, 2);
if (argc == 2) {
- return rb_ary_aref2(ary, argv[0], argv[1]);
+ return rb_ary_aref2(ary, argv[0], argv[1]);
}
return rb_ary_aref1(ary, argv[0]);
}
-static VALUE
+VALUE
rb_ary_aref2(VALUE ary, VALUE b, VALUE e)
{
long beg = NUM2LONG(b);
long len = NUM2LONG(e);
if (beg < 0) {
- beg += RARRAY_LEN(ary);
+ beg += RARRAY_LEN(ary);
}
return rb_ary_subseq(ary, beg, len);
}
@@ -1966,34 +1307,35 @@ rb_ary_aref2(VALUE ary, VALUE b, VALUE e)
VALUE
rb_ary_aref1(VALUE ary, VALUE arg)
{
- long beg, len, step;
+ long beg, len;
/* special case - speeding up */
if (FIXNUM_P(arg)) {
- return rb_ary_entry(ary, FIX2LONG(arg));
+ return rb_ary_entry(ary, FIX2LONG(arg));
}
- /* check if idx is Range or ArithmeticSequence */
- switch (rb_arithmetic_sequence_beg_len_step(arg, &beg, &len, &step, RARRAY_LEN(ary), 0)) {
+ /* check if idx is Range */
+ switch (rb_range_beg_len(arg, &beg, &len, RARRAY_LEN(ary), 0)) {
case Qfalse:
- break;
+ break;
case Qnil:
- return Qnil;
+ return Qnil;
default:
- return rb_ary_subseq_step(ary, beg, len, step);
+ return rb_ary_subseq(ary, beg, len);
}
-
return rb_ary_entry(ary, NUM2LONG(arg));
}
/*
* call-seq:
- * array.at(index) -> object
+ * ary.at(index) -> obj or nil
*
- * Returns the element at \Integer offset +index+; does not modify +self+.
- * a = [:foo, 'bar', 2]
- * a.at(0) # => :foo
- * a.at(2) # => 2
+ * Returns the element at +index+. A negative index counts from the end of
+ * +self+. Returns +nil+ if the index is out of range. See also
+ * Array#[].
*
+ * a = [ "a", "b", "c", "d", "e" ]
+ * a.at(0) #=> "a"
+ * a.at(-1) #=> "e"
*/
VALUE
@@ -2002,79 +1344,83 @@ rb_ary_at(VALUE ary, VALUE pos)
return rb_ary_entry(ary, NUM2LONG(pos));
}
-#if 0
+/*
+ * call-seq:
+ * ary.first -> obj or nil
+ * ary.first(n) -> new_ary
+ *
+ * Returns the first element, or the first +n+ elements, of the array.
+ * If the array is empty, the first form returns +nil+, and the
+ * second form returns an empty array. See also Array#last for
+ * the opposite effect.
+ *
+ * a = [ "q", "r", "s", "t" ]
+ * a.first #=> "q"
+ * a.first(2) #=> ["q", "r"]
+ */
+
static VALUE
rb_ary_first(int argc, VALUE *argv, VALUE ary)
{
if (argc == 0) {
- if (RARRAY_LEN(ary) == 0) return Qnil;
- return RARRAY_AREF(ary, 0);
+ if (RARRAY_LEN(ary) == 0) return Qnil;
+ return RARRAY_AREF(ary, 0);
}
else {
- return ary_take_first_or_last(argc, argv, ary, ARY_TAKE_FIRST);
+ return ary_take_first_or_last(argc, argv, ary, ARY_TAKE_FIRST);
}
}
-#endif
-
-static VALUE
-ary_first(VALUE self)
-{
- return (RARRAY_LEN(self) == 0) ? Qnil : RARRAY_AREF(self, 0);
-}
-static VALUE
-ary_last(VALUE self)
-{
- long len = RARRAY_LEN(self);
- return (len == 0) ? Qnil : RARRAY_AREF(self, len-1);
-}
+/*
+ * call-seq:
+ * ary.last -> obj or nil
+ * ary.last(n) -> new_ary
+ *
+ * Returns the last element(s) of +self+. If the array is empty,
+ * the first form returns +nil+.
+ *
+ * See also Array#first for the opposite effect.
+ *
+ * a = [ "w", "x", "y", "z" ]
+ * a.last #=> "z"
+ * a.last(2) #=> ["y", "z"]
+ */
VALUE
-rb_ary_last(int argc, const VALUE *argv, VALUE ary) // used by parse.y
+rb_ary_last(int argc, const VALUE *argv, VALUE ary)
{
if (argc == 0) {
- return ary_last(ary);
+ long len = RARRAY_LEN(ary);
+ if (len == 0) return Qnil;
+ return RARRAY_AREF(ary, len-1);
}
else {
- return ary_take_first_or_last(argc, argv, ary, ARY_TAKE_LAST);
+ return ary_take_first_or_last(argc, argv, ary, ARY_TAKE_LAST);
}
}
/*
* call-seq:
- * array.fetch(index) -> element
- * array.fetch(index, default_value) -> element
- * array.fetch(index) {|index| ... } -> element
- *
- * Returns the element at offset +index+.
- *
- * With the single \Integer argument +index+,
- * returns the element at offset +index+:
- *
- * a = [:foo, 'bar', 2]
- * a.fetch(1) # => "bar"
- *
- * If +index+ is negative, counts from the end of the array:
- *
- * a = [:foo, 'bar', 2]
- * a.fetch(-1) # => 2
- * a.fetch(-2) # => "bar"
- *
- * With arguments +index+ and +default_value+,
- * returns the element at offset +index+ if index is in range,
- * otherwise returns +default_value+:
- *
- * a = [:foo, 'bar', 2]
- * a.fetch(1, nil) # => "bar"
- *
- * With argument +index+ and a block,
- * returns the element at offset +index+ if index is in range
- * (and the block is not called); otherwise calls the block with index and returns its return value:
- *
- * a = [:foo, 'bar', 2]
- * a.fetch(1) {|index| raise 'Cannot happen' } # => "bar"
- * a.fetch(50) {|index| "Value for #{index}" } # => "Value for 50"
- *
+ * ary.fetch(index) -> obj
+ * ary.fetch(index, default) -> obj
+ * ary.fetch(index) { |index| block } -> obj
+ *
+ * Tries to return the element at position +index+, but throws an IndexError
+ * exception if the referenced +index+ lies outside of the array bounds. This
+ * error can be prevented by supplying a second argument, which will act as a
+ * +default+ value.
+ *
+ * Alternatively, if a block is given it will only be executed when an
+ * invalid +index+ is referenced.
+ *
+ * Negative values of +index+ count from the end of the array.
+ *
+ * a = [ 11, 22, 33, 44 ]
+ * a.fetch(1) #=> 22
+ * a.fetch(-1) #=> 44
+ * a.fetch(4, 'cat') #=> "cat"
+ * a.fetch(100) { |i| puts "#{i} is out of bounds" }
+ * #=> "100 is out of bounds"
*/
static VALUE
@@ -2087,58 +1433,48 @@ rb_ary_fetch(int argc, VALUE *argv, VALUE ary)
rb_scan_args(argc, argv, "11", &pos, &ifnone);
block_given = rb_block_given_p();
if (block_given && argc == 2) {
- rb_warn("block supersedes default value argument");
+ rb_warn("block supersedes default value argument");
}
idx = NUM2LONG(pos);
if (idx < 0) {
- idx += RARRAY_LEN(ary);
+ idx += RARRAY_LEN(ary);
}
if (idx < 0 || RARRAY_LEN(ary) <= idx) {
- if (block_given) return rb_yield(pos);
- if (argc == 1) {
- rb_raise(rb_eIndexError, "index %ld outside of array bounds: %ld...%ld",
- idx - (idx < 0 ? RARRAY_LEN(ary) : 0), -RARRAY_LEN(ary), RARRAY_LEN(ary));
- }
- return ifnone;
+ if (block_given) return rb_yield(pos);
+ if (argc == 1) {
+ rb_raise(rb_eIndexError, "index %ld outside of array bounds: %ld...%ld",
+ idx - (idx < 0 ? RARRAY_LEN(ary) : 0), -RARRAY_LEN(ary), RARRAY_LEN(ary));
+ }
+ return ifnone;
}
return RARRAY_AREF(ary, idx);
}
/*
* call-seq:
- * array.index(object) -> integer or nil
- * array.index {|element| ... } -> integer or nil
- * array.index -> new_enumerator
- *
- * Returns the index of a specified element.
- *
- * When argument +object+ is given but no block,
- * returns the index of the first element +element+
- * for which <tt>object == element</tt>:
- *
- * a = [:foo, 'bar', 2, 'bar']
- * a.index('bar') # => 1
- *
- * Returns +nil+ if no such element found.
+ * ary.find_index(obj) -> int or nil
+ * ary.find_index { |item| block } -> int or nil
+ * ary.find_index -> Enumerator
+ * ary.index(obj) -> int or nil
+ * ary.index { |item| block } -> int or nil
+ * ary.index -> Enumerator
*
- * When both argument +object+ and a block are given,
- * calls the block with each successive element;
- * returns the index of the first element for which the block returns a truthy value:
+ * Returns the _index_ of the first object in +ary+ such that the object is
+ * <code>==</code> to +obj+.
*
- * a = [:foo, 'bar', 2, 'bar']
- * a.index {|element| element == 'bar' } # => 1
+ * If a block is given instead of an argument, returns the _index_ of the
+ * first object for which the block returns +true+. Returns +nil+ if no
+ * match is found.
*
- * Returns +nil+ if the block never returns a truthy value.
+ * See also Array#rindex.
*
- * When neither an argument nor a block is given, returns a new Enumerator:
+ * An Enumerator is returned if neither a block nor argument is given.
*
- * a = [:foo, 'bar', 2]
- * e = a.index
- * e # => #<Enumerator: [:foo, "bar", 2]:index>
- * e.each {|element| element == 'bar' } # => 1
- *
- * Related: #rindex.
+ * a = [ "a", "b", "c" ]
+ * a.index("b") #=> 1
+ * a.index("z") #=> nil
+ * a.index { |x| x == "b" } #=> 1
*/
static VALUE
@@ -2148,58 +1484,49 @@ rb_ary_index(int argc, VALUE *argv, VALUE ary)
long i;
if (argc == 0) {
- RETURN_ENUMERATOR(ary, 0, 0);
- for (i=0; i<RARRAY_LEN(ary); i++) {
- if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
- return LONG2NUM(i);
- }
- }
- return Qnil;
+ RETURN_ENUMERATOR(ary, 0, 0);
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
+ return LONG2NUM(i);
+ }
+ }
+ return Qnil;
}
rb_check_arity(argc, 0, 1);
val = argv[0];
if (rb_block_given_p())
- rb_warn("given block not used");
+ rb_warn("given block not used");
for (i=0; i<RARRAY_LEN(ary); i++) {
- VALUE e = RARRAY_AREF(ary, i);
- if (rb_equal(e, val)) {
- return LONG2NUM(i);
- }
+ VALUE e = RARRAY_AREF(ary, i);
+ if (rb_equal(e, val)) {
+ return LONG2NUM(i);
+ }
}
return Qnil;
}
/*
* call-seq:
- * array.rindex(object) -> integer or nil
- * array.rindex {|element| ... } -> integer or nil
- * array.rindex -> new_enumerator
- *
- * Returns the index of the last element for which <tt>object == element</tt>.
+ * ary.rindex(obj) -> int or nil
+ * ary.rindex { |item| block } -> int or nil
+ * ary.rindex -> Enumerator
*
- * When argument +object+ is given but no block, returns the index of the last such element found:
+ * Returns the _index_ of the last object in +self+ <code>==</code> to +obj+.
*
- * a = [:foo, 'bar', 2, 'bar']
- * a.rindex('bar') # => 3
+ * If a block is given instead of an argument, returns the _index_ of the
+ * first object for which the block returns +true+, starting from the last
+ * object.
*
- * Returns +nil+ if no such object found.
+ * Returns +nil+ if no match is found.
*
- * When a block is given but no argument, calls the block with each successive element;
- * returns the index of the last element for which the block returns a truthy value:
+ * See also Array#index.
*
- * a = [:foo, 'bar', 2, 'bar']
- * a.rindex {|element| element == 'bar' } # => 3
+ * If neither block nor argument is given, an Enumerator is returned instead.
*
- * Returns +nil+ if the block never returns a truthy value.
- *
- * When neither an argument nor a block is given, returns a new \Enumerator:
- *
- * a = [:foo, 'bar', 2, 'bar']
- * e = a.rindex
- * e # => #<Enumerator: [:foo, "bar", 2, "bar"]:rindex>
- * e.each {|element| element == 'bar' } # => 3
- *
- * Related: #index.
+ * a = [ "a", "b", "b", "b", "c" ]
+ * a.rindex("b") #=> 3
+ * a.rindex("z") #=> nil
+ * a.rindex { |x| x == "b" } #=> 3
*/
static VALUE
@@ -2209,28 +1536,25 @@ rb_ary_rindex(int argc, VALUE *argv, VALUE ary)
long i = RARRAY_LEN(ary), len;
if (argc == 0) {
- RETURN_ENUMERATOR(ary, 0, 0);
- while (i--) {
- if (RTEST(rb_yield(RARRAY_AREF(ary, i))))
- return LONG2NUM(i);
- if (i > (len = RARRAY_LEN(ary))) {
- i = len;
- }
- }
- return Qnil;
+ RETURN_ENUMERATOR(ary, 0, 0);
+ while (i--) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i))))
+ return LONG2NUM(i);
+ if (i > (len = RARRAY_LEN(ary))) {
+ i = len;
+ }
+ }
+ return Qnil;
}
rb_check_arity(argc, 0, 1);
val = argv[0];
if (rb_block_given_p())
- rb_warn("given block not used");
+ rb_warn("given block not used");
while (i--) {
- VALUE e = RARRAY_AREF(ary, i);
- if (rb_equal(e, val)) {
- return LONG2NUM(i);
- }
- if (i > RARRAY_LEN(ary)) {
- break;
- }
+ VALUE e = RARRAY_AREF(ary, i);
+ if (rb_equal(e, val)) {
+ return LONG2NUM(i);
+ }
}
return Qnil;
}
@@ -2253,64 +1577,57 @@ rb_ary_splice(VALUE ary, long beg, long len, const VALUE *rptr, long rlen)
if (len < 0) rb_raise(rb_eIndexError, "negative length (%ld)", len);
olen = RARRAY_LEN(ary);
if (beg < 0) {
- beg += olen;
- if (beg < 0) {
- rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
- beg - olen, -olen);
- }
+ beg += olen;
+ if (beg < 0) {
+ rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
+ beg - olen, -olen);
+ }
}
if (olen < len || olen < beg + len) {
- len = olen - beg;
+ len = olen - beg;
}
{
- const VALUE *optr = RARRAY_CONST_PTR_TRANSIENT(ary);
- rofs = (rptr >= optr && rptr < optr + olen) ? rptr - optr : -1;
+ const VALUE *optr = RARRAY_CONST_PTR(ary);
+ rofs = (rptr >= optr && rptr < optr + olen) ? rptr - optr : -1;
}
if (beg >= olen) {
- VALUE target_ary;
- if (beg > ARY_MAX_SIZE - rlen) {
- rb_raise(rb_eIndexError, "index %ld too big", beg);
- }
- target_ary = ary_ensure_room_for_push(ary, rlen-len); /* len is 0 or negative */
- len = beg + rlen;
- ary_mem_clear(ary, olen, beg - olen);
- if (rlen > 0) {
- if (rofs != -1) rptr = RARRAY_CONST_PTR_TRANSIENT(ary) + rofs;
- ary_memcpy0(ary, beg, rlen, rptr, target_ary);
- }
- ARY_SET_LEN(ary, len);
+ VALUE target_ary;
+ if (beg > ARY_MAX_SIZE - rlen) {
+ rb_raise(rb_eIndexError, "index %ld too big", beg);
+ }
+ target_ary = ary_ensure_room_for_push(ary, rlen-len); /* len is 0 or negative */
+ len = beg + rlen;
+ ary_mem_clear(ary, olen, beg - olen);
+ if (rlen > 0) {
+ if (rofs != -1) rptr = RARRAY_CONST_PTR(ary) + rofs;
+ ary_memcpy0(ary, beg, rlen, rptr, target_ary);
+ }
+ ARY_SET_LEN(ary, len);
}
else {
- long alen;
-
- if (olen - len > ARY_MAX_SIZE - rlen) {
- rb_raise(rb_eIndexError, "index %ld too big", olen + rlen - len);
- }
- rb_ary_modify(ary);
- alen = olen + rlen - len;
- if (alen >= ARY_CAPA(ary)) {
- ary_double_capa(ary, alen);
- }
-
- if (len != rlen) {
- RARRAY_PTR_USE_TRANSIENT(ary, ptr,
- MEMMOVE(ptr + beg + rlen, ptr + beg + len,
- VALUE, olen - (beg + len)));
- ARY_SET_LEN(ary, alen);
- }
- if (rlen > 0) {
- if (rofs != -1) rptr = RARRAY_CONST_PTR_TRANSIENT(ary) + rofs;
- /* give up wb-protected ary */
- RB_OBJ_WB_UNPROTECT_FOR(ARRAY, ary);
-
- /* do not use RARRAY_PTR() because it can causes GC.
- * ary can contain T_NONE object because it is not cleared.
- */
- RARRAY_PTR_USE_TRANSIENT(ary, ptr,
- MEMMOVE(ptr + beg, rptr, VALUE, rlen));
- }
+ long alen;
+
+ if (olen - len > ARY_MAX_SIZE - rlen) {
+ rb_raise(rb_eIndexError, "index %ld too big", olen + rlen - len);
+ }
+ rb_ary_modify(ary);
+ alen = olen + rlen - len;
+ if (alen >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, alen);
+ }
+
+ if (len != rlen) {
+ RARRAY_PTR_USE(ary, ptr,
+ MEMMOVE(ptr + beg + rlen, ptr + beg + len,
+ VALUE, olen - (beg + len)));
+ ARY_SET_LEN(ary, alen);
+ }
+ if (rlen > 0) {
+ if (rofs != -1) rptr = RARRAY_CONST_PTR(ary) + rofs;
+ MEMMOVE(RARRAY_PTR(ary) + beg, rptr, VALUE, rlen);
+ }
}
}
@@ -2321,14 +1638,22 @@ rb_ary_set_len(VALUE ary, long len)
rb_ary_modify_check(ary);
if (ARY_SHARED_P(ary)) {
- rb_raise(rb_eRuntimeError, "can't set length of shared ");
+ rb_raise(rb_eRuntimeError, "can't set length of shared ");
}
if (len > (capa = (long)ARY_CAPA(ary))) {
- rb_bug("probable buffer overflow: %ld for %ld", len, capa);
+ rb_bug("probable buffer overflow: %ld for %ld", len, capa);
}
ARY_SET_LEN(ary, len);
}
+/*!
+ * expands or shrinks \a ary to \a len elements.
+ * expanded region will be filled with Qnil.
+ * \param ary an array
+ * \param len new size
+ * \return \a ary
+ * \post the size of \a ary is \a len.
+ */
VALUE
rb_ary_resize(VALUE ary, long len)
{
@@ -2338,231 +1663,117 @@ rb_ary_resize(VALUE ary, long len)
olen = RARRAY_LEN(ary);
if (len == olen) return ary;
if (len > ARY_MAX_SIZE) {
- rb_raise(rb_eIndexError, "index %ld too big", len);
+ rb_raise(rb_eIndexError, "index %ld too big", len);
}
if (len > olen) {
- if (len >= ARY_CAPA(ary)) {
- ary_double_capa(ary, len);
- }
- ary_mem_clear(ary, olen, len - olen);
- ARY_SET_LEN(ary, len);
+ if (len >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, len);
+ }
+ ary_mem_clear(ary, olen, len - olen);
+ ARY_SET_LEN(ary, len);
}
else if (ARY_EMBED_P(ary)) {
ARY_SET_EMBED_LEN(ary, len);
}
- else if (len <= ary_embed_capa(ary)) {
- const VALUE *ptr = ARY_HEAP_PTR(ary);
- long ptr_capa = ARY_HEAP_SIZE(ary);
- bool is_malloc_ptr = !ARY_SHARED_P(ary) && !RARRAY_TRANSIENT_P(ary);
-
- FL_UNSET(ary, RARRAY_TRANSIENT_FLAG);
- FL_SET_EMBED(ary);
-
- MEMCPY((VALUE *)ARY_EMBED_PTR(ary), ptr, VALUE, len); /* WB: no new reference */
+ else if (len <= RARRAY_EMBED_LEN_MAX) {
+ VALUE tmp[RARRAY_EMBED_LEN_MAX];
+ MEMCPY(tmp, ARY_HEAP_PTR(ary), VALUE, len);
+ ary_discard(ary);
+ MEMCPY((VALUE *)ARY_EMBED_PTR(ary), tmp, VALUE, len); /* WB: no new reference */
ARY_SET_EMBED_LEN(ary, len);
-
- if (is_malloc_ptr) ruby_sized_xfree((void *)ptr, ptr_capa);
}
else {
- if (olen > len + ARY_DEFAULT_SIZE) {
- size_t new_capa = ary_heap_realloc(ary, len);
- ARY_SET_CAPA(ary, new_capa);
- }
- ARY_SET_HEAP_LEN(ary, len);
+ if (olen > len + ARY_DEFAULT_SIZE) {
+ SIZED_REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, len, RARRAY(ary)->as.heap.aux.capa);
+ ARY_SET_CAPA(ary, len);
+ }
+ ARY_SET_HEAP_LEN(ary, len);
}
- ary_verify(ary);
return ary;
}
-static VALUE
-ary_aset_by_rb_ary_store(VALUE ary, long key, VALUE val)
-{
- rb_ary_store(ary, key, val);
- return val;
-}
-
-static VALUE
-ary_aset_by_rb_ary_splice(VALUE ary, long beg, long len, VALUE val)
-{
- VALUE rpl = rb_ary_to_ary(val);
- rb_ary_splice(ary, beg, len, RARRAY_CONST_PTR_TRANSIENT(rpl), RARRAY_LEN(rpl));
- RB_GC_GUARD(rpl);
- return val;
-}
-
/*
* call-seq:
- * array[index] = object -> object
- * array[start, length] = object -> object
- * array[range] = object -> object
- *
- * Assigns elements in +self+; returns the given +object+.
- *
- * When \Integer argument +index+ is given, assigns +object+ to an element in +self+.
- *
- * If +index+ is non-negative, assigns +object+ the element at offset +index+:
- *
- * a = [:foo, 'bar', 2]
- * a[0] = 'foo' # => "foo"
- * a # => ["foo", "bar", 2]
- *
- * If +index+ is greater than <tt>self.length</tt>, extends the array:
- *
- * a = [:foo, 'bar', 2]
- * a[7] = 'foo' # => "foo"
- * a # => [:foo, "bar", 2, nil, nil, nil, nil, "foo"]
- *
- * If +index+ is negative, counts backwards from the end of the array:
- *
- * a = [:foo, 'bar', 2]
- * a[-1] = 'two' # => "two"
- * a # => [:foo, "bar", "two"]
- *
- * When \Integer arguments +start+ and +length+ are given and +object+ is not an \Array,
- * removes <tt>length - 1</tt> elements beginning at offset +start+,
- * and assigns +object+ at offset +start+:
- *
- * a = [:foo, 'bar', 2]
- * a[0, 2] = 'foo' # => "foo"
- * a # => ["foo", 2]
- *
- * If +start+ is negative, counts backwards from the end of the array:
- *
- * a = [:foo, 'bar', 2]
- * a[-2, 2] = 'foo' # => "foo"
- * a # => [:foo, "foo"]
- *
- * If +start+ is non-negative and outside the array (<tt> >= self.size</tt>),
- * extends the array with +nil+, assigns +object+ at offset +start+,
- * and ignores +length+:
- *
- * a = [:foo, 'bar', 2]
- * a[6, 50] = 'foo' # => "foo"
- * a # => [:foo, "bar", 2, nil, nil, nil, "foo"]
- *
- * If +length+ is zero, shifts elements at and following offset +start+
- * and assigns +object+ at offset +start+:
- *
- * a = [:foo, 'bar', 2]
- * a[1, 0] = 'foo' # => "foo"
- * a # => [:foo, "foo", "bar", 2]
- *
- * If +length+ is too large for the existing array, does not extend the array:
- *
- * a = [:foo, 'bar', 2]
- * a[1, 5] = 'foo' # => "foo"
- * a # => [:foo, "foo"]
- *
- * When \Range argument +range+ is given and +object+ is an \Array,
- * removes <tt>length - 1</tt> elements beginning at offset +start+,
- * and assigns +object+ at offset +start+:
- *
- * a = [:foo, 'bar', 2]
- * a[0..1] = 'foo' # => "foo"
- * a # => ["foo", 2]
- *
- * if <tt>range.begin</tt> is negative, counts backwards from the end of the array:
- *
- * a = [:foo, 'bar', 2]
- * a[-2..2] = 'foo' # => "foo"
- * a # => [:foo, "foo"]
- *
- * If the array length is less than <tt>range.begin</tt>,
- * assigns +object+ at offset <tt>range.begin</tt>, and ignores +length+:
- *
- * a = [:foo, 'bar', 2]
- * a[6..50] = 'foo' # => "foo"
- * a # => [:foo, "bar", 2, nil, nil, nil, "foo"]
- *
- * If <tt>range.end</tt> is zero, shifts elements at and following offset +start+
- * and assigns +object+ at offset +start+:
- *
- * a = [:foo, 'bar', 2]
- * a[1..0] = 'foo' # => "foo"
- * a # => [:foo, "foo", "bar", 2]
- *
- * If <tt>range.end</tt> is negative, assigns +object+ at offset +start+,
- * retains <tt>range.end.abs -1</tt> elements past that, and removes those beyond:
- *
- * a = [:foo, 'bar', 2]
- * a[1..-1] = 'foo' # => "foo"
- * a # => [:foo, "foo"]
- * a = [:foo, 'bar', 2]
- * a[1..-2] = 'foo' # => "foo"
- * a # => [:foo, "foo", 2]
- * a = [:foo, 'bar', 2]
- * a[1..-3] = 'foo' # => "foo"
- * a # => [:foo, "foo", "bar", 2]
- * a = [:foo, 'bar', 2]
- *
- * If <tt>range.end</tt> is too large for the existing array,
- * replaces array elements, but does not extend the array with +nil+ values:
- *
- * a = [:foo, 'bar', 2]
- * a[1..5] = 'foo' # => "foo"
- * a # => [:foo, "foo"]
- *
+ * ary[index] = obj -> obj
+ * ary[start, length] = obj or other_ary or nil -> obj or other_ary or nil
+ * ary[range] = obj or other_ary or nil -> obj or other_ary or nil
+ *
+ * Element Assignment --- Sets the element at +index+, or replaces a subarray
+ * from the +start+ index for +length+ elements, or replaces a subarray
+ * specified by the +range+ of indices.
+ *
+ * If indices are greater than the current capacity of the array, the array
+ * grows automatically. Elements are inserted into the array at +start+ if
+ * +length+ is zero.
+ *
+ * Negative indices will count backward from the end of the array. For
+ * +start+ and +range+ cases the starting index is just before an element.
+ *
+ * An IndexError is raised if a negative index points past the beginning of
+ * the array.
+ *
+ * See also Array#push, and Array#unshift.
+ *
+ * a = Array.new
+ * a[4] = "4"; #=> [nil, nil, nil, nil, "4"]
+ * a[0, 3] = [ 'a', 'b', 'c' ] #=> ["a", "b", "c", nil, "4"]
+ * a[1..2] = [ 1, 2 ] #=> ["a", 1, 2, nil, "4"]
+ * a[0, 2] = "?" #=> ["?", 2, nil, "4"]
+ * a[0..2] = "A" #=> ["A", "4"]
+ * a[-1] = "Z" #=> ["A", "Z"]
+ * a[1..-1] = nil #=> ["A", nil]
+ * a[1..-1] = [] #=> ["A"]
+ * a[0, 0] = [ 1, 2 ] #=> [1, 2, "A"]
+ * a[3, 0] = "B" #=> [1, 2, "A", "B"]
*/
static VALUE
rb_ary_aset(int argc, VALUE *argv, VALUE ary)
{
long offset, beg, len;
+ VALUE rpl;
- rb_check_arity(argc, 2, 3);
- rb_ary_modify_check(ary);
if (argc == 3) {
- beg = NUM2LONG(argv[0]);
- len = NUM2LONG(argv[1]);
- return ary_aset_by_rb_ary_splice(ary, beg, len, argv[2]);
+ rb_ary_modify_check(ary);
+ beg = NUM2LONG(argv[0]);
+ len = NUM2LONG(argv[1]);
+ goto range;
}
+ rb_check_arity(argc, 2, 2);
+ rb_ary_modify_check(ary);
if (FIXNUM_P(argv[0])) {
- offset = FIX2LONG(argv[0]);
- return ary_aset_by_rb_ary_store(ary, offset, argv[1]);
+ offset = FIX2LONG(argv[0]);
+ goto fixnum;
}
if (rb_range_beg_len(argv[0], &beg, &len, RARRAY_LEN(ary), 1)) {
- /* check if idx is Range */
- return ary_aset_by_rb_ary_splice(ary, beg, len, argv[1]);
+ /* check if idx is Range */
+ range:
+ rpl = rb_ary_to_ary(argv[argc-1]);
+ rb_ary_splice(ary, beg, len, RARRAY_CONST_PTR(rpl), RARRAY_LEN(rpl));
+ RB_GC_GUARD(rpl);
+ return argv[argc-1];
}
offset = NUM2LONG(argv[0]);
- return ary_aset_by_rb_ary_store(ary, offset, argv[1]);
+fixnum:
+ rb_ary_store(ary, offset, argv[1]);
+ return argv[1];
}
/*
* call-seq:
- * array.insert(index, *objects) -> self
- *
- * Inserts given +objects+ before or after the element at \Integer index +offset+;
- * returns +self+.
- *
- * When +index+ is non-negative, inserts all given +objects+
- * before the element at offset +index+:
- *
- * a = [:foo, 'bar', 2]
- * a.insert(1, :bat, :bam) # => [:foo, :bat, :bam, "bar", 2]
- *
- * Extends the array if +index+ is beyond the array (<tt>index >= self.size</tt>):
- *
- * a = [:foo, 'bar', 2]
- * a.insert(5, :bat, :bam)
- * a # => [:foo, "bar", 2, nil, nil, :bat, :bam]
+ * ary.insert(index, obj...) -> ary
*
- * Does nothing if no objects given:
+ * Inserts the given values before the element with the given +index+.
*
- * a = [:foo, 'bar', 2]
- * a.insert(1)
- * a.insert(50)
- * a.insert(-50)
- * a # => [:foo, "bar", 2]
- *
- * When +index+ is negative, inserts all given +objects+
- * _after_ the element at offset <tt>index+self.size</tt>:
- *
- * a = [:foo, 'bar', 2]
- * a.insert(-2, :bat, :bam)
- * a # => [:foo, "bar", :bat, :bam, 2]
+ * Negative indices count backwards from the end of the array, where +-1+ is
+ * the last element. If a negative index is used, the given values will be
+ * inserted after that element, so using an index of +-1+ will insert the
+ * values at the end of the array.
*
+ * a = %w{ a b c d }
+ * a.insert(2, 99) #=> ["a", "b", 99, "c", "d"]
+ * a.insert(-2, 1, 2, 3) #=> ["a", "b", 99, "c", 1, 2, 3, "d"]
*/
static VALUE
@@ -2575,15 +1786,15 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary)
pos = NUM2LONG(argv[0]);
if (argc == 1) return ary;
if (pos == -1) {
- pos = RARRAY_LEN(ary);
+ pos = RARRAY_LEN(ary);
}
else if (pos < 0) {
- long minpos = -RARRAY_LEN(ary) - 1;
- if (pos < minpos) {
- rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
- pos, minpos);
- }
- pos++;
+ long minpos = -RARRAY_LEN(ary) - 1;
+ if (pos < minpos) {
+ rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
+ pos, minpos);
+ }
+ pos++;
}
rb_ary_splice(ary, pos, 0, argv + 1, argc - 1);
return ary;
@@ -2600,104 +1811,50 @@ ary_enum_length(VALUE ary, VALUE args, VALUE eobj)
/*
* call-seq:
- * array.each {|element| ... } -> self
- * array.each -> Enumerator
- *
- * Iterates over array elements.
- *
- * When a block given, passes each successive array element to the block;
- * returns +self+:
- *
- * a = [:foo, 'bar', 2]
- * a.each {|element| puts "#{element.class} #{element}" }
- *
- * Output:
+ * ary.each { |item| block } -> ary
+ * ary.each -> Enumerator
*
- * Symbol foo
- * String bar
- * Integer 2
+ * Calls the given block once for each element in +self+, passing that element
+ * as a parameter. Returns the array itself.
*
- * Allows the array to be modified during iteration:
+ * If no block is given, an Enumerator is returned.
*
- * a = [:foo, 'bar', 2]
- * a.each {|element| puts element; a.clear if element.to_s.start_with?('b') }
+ * a = [ "a", "b", "c" ]
+ * a.each {|x| print x, " -- " }
*
- * Output:
+ * produces:
*
- * foo
- * bar
- *
- * When no block given, returns a new \Enumerator:
- * a = [:foo, 'bar', 2]
- *
- * e = a.each
- * e # => #<Enumerator: [:foo, "bar", 2]:each>
- * a1 = e.each {|element| puts "#{element.class} #{element}" }
- *
- * Output:
- *
- * Symbol foo
- * String bar
- * Integer 2
- *
- * Related: #each_index, #reverse_each.
+ * a -- b -- c --
*/
VALUE
rb_ary_each(VALUE ary)
{
long i;
- ary_verify(ary);
+
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
for (i=0; i<RARRAY_LEN(ary); i++) {
- rb_yield(RARRAY_AREF(ary, i));
+ rb_yield(RARRAY_AREF(ary, i));
}
return ary;
}
/*
* call-seq:
- * array.each_index {|index| ... } -> self
- * array.each_index -> Enumerator
+ * ary.each_index { |index| block } -> ary
+ * ary.each_index -> Enumerator
*
- * Iterates over array indexes.
+ * Same as Array#each, but passes the +index+ of the element instead of the
+ * element itself.
*
- * When a block given, passes each successive array index to the block;
- * returns +self+:
+ * An Enumerator is returned if no block is given.
*
- * a = [:foo, 'bar', 2]
- * a.each_index {|index| puts "#{index} #{a[index]}" }
+ * a = [ "a", "b", "c" ]
+ * a.each_index {|x| print x, " -- " }
*
- * Output:
+ * produces:
*
- * 0 foo
- * 1 bar
- * 2 2
- *
- * Allows the array to be modified during iteration:
- *
- * a = [:foo, 'bar', 2]
- * a.each_index {|index| puts index; a.clear if index > 0 }
- *
- * Output:
- *
- * 0
- * 1
- *
- * When no block given, returns a new \Enumerator:
- *
- * a = [:foo, 'bar', 2]
- * e = a.each_index
- * e # => #<Enumerator: [:foo, "bar", 2]:each_index>
- * a1 = e.each {|index| puts "#{index} #{a[index]}"}
- *
- * Output:
- *
- * 0 foo
- * 1 bar
- * 2 2
- *
- * Related: #each, #reverse_each.
+ * 0 -- 1 -- 2 --
*/
static VALUE
@@ -2707,54 +1864,24 @@ rb_ary_each_index(VALUE ary)
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
for (i=0; i<RARRAY_LEN(ary); i++) {
- rb_yield(LONG2NUM(i));
+ rb_yield(LONG2NUM(i));
}
return ary;
}
/*
* call-seq:
- * array.reverse_each {|element| ... } -> self
- * array.reverse_each -> Enumerator
- *
- * Iterates backwards over array elements.
- *
- * When a block given, passes, in reverse order, each element to the block;
- * returns +self+:
- *
- * a = [:foo, 'bar', 2]
- * a.reverse_each {|element| puts "#{element.class} #{element}" }
- *
- * Output:
- *
- * Integer 2
- * String bar
- * Symbol foo
+ * ary.reverse_each { |item| block } -> ary
+ * ary.reverse_each -> Enumerator
*
- * Allows the array to be modified during iteration:
+ * Same as Array#each, but traverses +self+ in reverse order.
*
- * a = [:foo, 'bar', 2]
- * a.reverse_each {|element| puts element; a.clear if element.to_s.start_with?('b') }
+ * a = [ "a", "b", "c" ]
+ * a.reverse_each {|x| print x, " " }
*
- * Output:
+ * produces:
*
- * 2
- * bar
- *
- * When no block given, returns a new \Enumerator:
- *
- * a = [:foo, 'bar', 2]
- * e = a.reverse_each
- * e # => #<Enumerator: [:foo, "bar", 2]:reverse_each>
- * a1 = e.each {|element| puts "#{element.class} #{element}" }
- *
- * Output:
- *
- * Integer 2
- * String bar
- * Symbol foo
- *
- * Related: #each, #each_index.
+ * c b a
*/
static VALUE
@@ -2765,21 +1892,24 @@ rb_ary_reverse_each(VALUE ary)
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
len = RARRAY_LEN(ary);
while (len--) {
- long nlen;
- rb_yield(RARRAY_AREF(ary, len));
- nlen = RARRAY_LEN(ary);
- if (nlen < len) {
- len = nlen;
- }
+ long nlen;
+ rb_yield(RARRAY_AREF(ary, len));
+ nlen = RARRAY_LEN(ary);
+ if (nlen < len) {
+ len = nlen;
+ }
}
return ary;
}
/*
* call-seq:
- * array.length -> an_integer
+ * ary.length -> int
+ *
+ * Returns the number of elements in +self+. May be zero.
*
- * Returns the count of elements in +self+.
+ * [ 1, 2, 3, 4, 5 ].length #=> 5
+ * [].length #=> 0
*/
static VALUE
@@ -2791,16 +1921,19 @@ rb_ary_length(VALUE ary)
/*
* call-seq:
- * array.empty? -> true or false
+ * ary.empty? -> true or false
*
- * Returns +true+ if the count of elements in +self+ is zero,
- * +false+ otherwise.
+ * Returns +true+ if +self+ contains no elements.
+ *
+ * [].empty? #=> true
*/
static VALUE
rb_ary_empty_p(VALUE ary)
{
- return RBOOL(RARRAY_LEN(ary) == 0);
+ if (RARRAY_LEN(ary) == 0)
+ return Qtrue;
+ return Qfalse;
}
VALUE
@@ -2808,18 +1941,15 @@ rb_ary_dup(VALUE ary)
{
long len = RARRAY_LEN(ary);
VALUE dup = rb_ary_new2(len);
- ary_memcpy(dup, 0, len, RARRAY_CONST_PTR_TRANSIENT(ary));
+ ary_memcpy(dup, 0, len, RARRAY_CONST_PTR(ary));
ARY_SET_LEN(dup, len);
-
- ary_verify(ary);
- ary_verify(dup);
return dup;
}
VALUE
rb_ary_resurrect(VALUE ary)
{
- return ary_make_partial(ary, rb_cArray, 0, RARRAY_LEN(ary));
+ return rb_ary_new4(RARRAY_LEN(ary), RARRAY_CONST_PTR(ary));
}
extern VALUE rb_output_fs;
@@ -2836,15 +1966,15 @@ recursive_join(VALUE obj, VALUE argp, int recur)
int *first = (int *)arg[3];
if (recur) {
- rb_raise(rb_eArgError, "recursive array join");
+ rb_raise(rb_eArgError, "recursive array join");
}
else {
- ary_join_1(obj, ary, sep, 0, result, first);
+ ary_join_1(obj, ary, sep, 0, result, first);
}
return Qnil;
}
-static long
+static void
ary_join_0(VALUE ary, VALUE sep, long max, VALUE result)
{
long i;
@@ -2852,40 +1982,11 @@ ary_join_0(VALUE ary, VALUE sep, long max, VALUE result)
if (max > 0) rb_enc_copy(result, RARRAY_AREF(ary, 0));
for (i=0; i<max; i++) {
- val = RARRAY_AREF(ary, i);
- if (!RB_TYPE_P(val, T_STRING)) break;
- if (i > 0 && !NIL_P(sep))
- rb_str_buf_append(result, sep);
- rb_str_buf_append(result, val);
- }
- return i;
-}
-
-static void
-ary_join_1_str(VALUE dst, VALUE src, int *first)
-{
- rb_str_buf_append(dst, src);
- if (*first) {
- rb_enc_copy(dst, src);
- *first = FALSE;
- }
-}
-
-static void
-ary_join_1_ary(VALUE obj, VALUE ary, VALUE sep, VALUE result, VALUE val, int *first)
-{
- if (val == ary) {
- rb_raise(rb_eArgError, "recursive array join");
- }
- else {
- VALUE args[4];
-
- *first = FALSE;
- args[0] = val;
- args[1] = sep;
- args[2] = result;
- args[3] = (VALUE)first;
- rb_exec_recursive(recursive_join, obj, (VALUE)args);
+ val = RARRAY_AREF(ary, i);
+ if (i > 0 && !NIL_P(sep))
+ rb_str_buf_append(result, sep);
+ rb_str_buf_append(result, val);
+ if (OBJ_TAINTED(val)) OBJ_TAINT(result);
}
}
@@ -2895,25 +1996,50 @@ ary_join_1(VALUE obj, VALUE ary, VALUE sep, long i, VALUE result, int *first)
VALUE val, tmp;
for (; i<RARRAY_LEN(ary); i++) {
- if (i > 0 && !NIL_P(sep))
- rb_str_buf_append(result, sep);
-
- val = RARRAY_AREF(ary, i);
- if (RB_TYPE_P(val, T_STRING)) {
- ary_join_1_str(result, val, first);
- }
- else if (RB_TYPE_P(val, T_ARRAY)) {
- ary_join_1_ary(val, ary, sep, result, val, first);
- }
- else if (!NIL_P(tmp = rb_check_string_type(val))) {
- ary_join_1_str(result, tmp, first);
- }
- else if (!NIL_P(tmp = rb_check_array_type(val))) {
- ary_join_1_ary(val, ary, sep, result, tmp, first);
- }
- else {
- ary_join_1_str(result, rb_obj_as_string(val), first);
- }
+ if (i > 0 && !NIL_P(sep))
+ rb_str_buf_append(result, sep);
+
+ val = RARRAY_AREF(ary, i);
+ if (RB_TYPE_P(val, T_STRING)) {
+ str_join:
+ rb_str_buf_append(result, val);
+ if (*first) {
+ rb_enc_copy(result, val);
+ *first = FALSE;
+ }
+ }
+ else if (RB_TYPE_P(val, T_ARRAY)) {
+ obj = val;
+ ary_join:
+ if (val == ary) {
+ rb_raise(rb_eArgError, "recursive array join");
+ }
+ else {
+ VALUE args[4];
+
+ *first = FALSE;
+ args[0] = val;
+ args[1] = sep;
+ args[2] = result;
+ args[3] = (VALUE)first;
+ rb_exec_recursive(recursive_join, obj, (VALUE)args);
+ }
+ }
+ else {
+ tmp = rb_check_string_type(val);
+ if (!NIL_P(tmp)) {
+ val = tmp;
+ goto str_join;
+ }
+ tmp = rb_check_array_type(val);
+ if (!NIL_P(tmp)) {
+ obj = val;
+ val = tmp;
+ goto ary_join;
+ }
+ val = rb_obj_as_string(val);
+ goto str_join;
+ }
}
}
@@ -2921,36 +2047,36 @@ VALUE
rb_ary_join(VALUE ary, VALUE sep)
{
long len = 1, i;
+ int taint = FALSE;
VALUE val, tmp, result;
if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new(0, 0);
+ if (OBJ_TAINTED(ary)) taint = TRUE;
if (!NIL_P(sep)) {
- StringValue(sep);
- len += RSTRING_LEN(sep) * (RARRAY_LEN(ary) - 1);
+ StringValue(sep);
+ len += RSTRING_LEN(sep) * (RARRAY_LEN(ary) - 1);
}
for (i=0; i<RARRAY_LEN(ary); i++) {
- val = RARRAY_AREF(ary, i);
- tmp = rb_check_string_type(val);
-
- if (NIL_P(tmp) || tmp != val) {
- int first;
- long n = RARRAY_LEN(ary);
- if (i > n) i = n;
- result = rb_str_buf_new(len + (n-i)*10);
- rb_enc_associate(result, rb_usascii_encoding());
- i = ary_join_0(ary, sep, i, result);
- first = i == 0;
- ary_join_1(ary, ary, sep, i, result, &first);
- return result;
- }
+ val = RARRAY_AREF(ary, i);
+ tmp = rb_check_string_type(val);
- len += RSTRING_LEN(tmp);
- }
+ if (NIL_P(tmp) || tmp != val) {
+ int first;
+ result = rb_str_buf_new(len + (RARRAY_LEN(ary)-i)*10);
+ rb_enc_associate(result, rb_usascii_encoding());
+ if (taint) OBJ_TAINT(result);
+ ary_join_0(ary, sep, i, result);
+ first = i == 0;
+ ary_join_1(ary, ary, sep, i, result, &first);
+ return result;
+ }
- result = rb_str_new(0, len);
- rb_str_set_len(result, 0);
+ len += RSTRING_LEN(tmp);
+ }
+ result = rb_str_buf_new(len);
+ if (taint) OBJ_TAINT(result);
ary_join_0(ary, sep, RARRAY_LEN(ary), result);
return result;
@@ -2958,43 +2084,29 @@ rb_ary_join(VALUE ary, VALUE sep)
/*
* call-seq:
- * array.join ->new_string
- * array.join(separator = $,) -> new_string
- *
- * Returns the new \String formed by joining the array elements after conversion.
- * For each element +element+:
- *
- * - Uses <tt>element.to_s</tt> if +element+ is not a <tt>kind_of?(Array)</tt>.
- * - Uses recursive <tt>element.join(separator)</tt> if +element+ is a <tt>kind_of?(Array)</tt>.
- *
- * With no argument, joins using the output field separator, <tt>$,</tt>:
- *
- * a = [:foo, 'bar', 2]
- * $, # => nil
- * a.join # => "foobar2"
+ * ary.join(separator=$,) -> str
*
- * With \string argument +separator+, joins using that separator:
+ * Returns a string created by converting each element of the array to
+ * a string, separated by the given +separator+.
+ * If the +separator+ is +nil+, it uses current <code>$,</code>.
+ * If both the +separator+ and <code>$,</code> are +nil+,
+ * it uses an empty string.
*
- * a = [:foo, 'bar', 2]
- * a.join("\n") # => "foo\nbar\n2"
+ * [ "a", "b", "c" ].join #=> "abc"
+ * [ "a", "b", "c" ].join("-") #=> "a-b-c"
*
- * Joins recursively for nested Arrays:
- *
- * a = [:foo, [:bar, [:baz, :bat]]]
- * a.join # => "foobarbazbat"
+ * For nested arrays, join is applied recursively:
*
+ * [ "a", [1, 2, [:x, :y]], "b" ].join("-") #=> "a-1-2-x-y-b"
*/
+
static VALUE
rb_ary_join_m(int argc, VALUE *argv, VALUE ary)
{
VALUE sep;
- if (rb_check_arity(argc, 0, 1) == 0 || NIL_P(sep = argv[0])) {
- sep = rb_output_fs;
- if (!NIL_P(sep)) {
- rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "$, is set to non-nil value");
- }
- }
+ rb_scan_args(argc, argv, "01", &sep);
+ if (NIL_P(sep)) sep = rb_output_fs;
return rb_ary_join(ary, sep);
}
@@ -3002,31 +2114,32 @@ rb_ary_join_m(int argc, VALUE *argv, VALUE ary)
static VALUE
inspect_ary(VALUE ary, VALUE dummy, int recur)
{
+ int tainted = OBJ_TAINTED(ary);
long i;
VALUE s, str;
if (recur) return rb_usascii_str_new_cstr("[...]");
str = rb_str_buf_new2("[");
for (i=0; i<RARRAY_LEN(ary); i++) {
- s = rb_inspect(RARRAY_AREF(ary, i));
- if (i > 0) rb_str_buf_cat2(str, ", ");
- else rb_enc_copy(str, s);
- rb_str_buf_append(str, s);
+ s = rb_inspect(RARRAY_AREF(ary, i));
+ if (OBJ_TAINTED(s)) tainted = TRUE;
+ if (i > 0) rb_str_buf_cat2(str, ", ");
+ else rb_enc_copy(str, s);
+ rb_str_buf_append(str, s);
}
rb_str_buf_cat2(str, "]");
+ if (tainted) OBJ_TAINT(str);
return str;
}
/*
* call-seq:
- * array.inspect -> new_string
+ * ary.inspect -> string
+ * ary.to_s -> string
*
- * Returns the new \String formed by calling method <tt>#inspect</tt>
- * on each array element:
- *
- * a = [:foo, 'bar', 2]
- * a.inspect # => "[:foo, \"bar\", 2]"
+ * Creates a string representation of +self+.
*
+ * [ "a", "b", "c" ].to_s #=> "[\"a\", \"b\", \"c\"]"
*/
static VALUE
@@ -3044,59 +2157,33 @@ rb_ary_to_s(VALUE ary)
/*
* call-seq:
- * to_a -> self or new_array
- *
- * When +self+ is an instance of \Array, returns +self+:
- *
- * a = [:foo, 'bar', 2]
- * a.to_a # => [:foo, "bar", 2]
+ * ary.to_a -> ary
*
- * Otherwise, returns a new \Array containing the elements of +self+:
- *
- * class MyArray < Array; end
- * a = MyArray.new(['foo', 'bar', 'two'])
- * a.instance_of?(Array) # => false
- * a.kind_of?(Array) # => true
- * a1 = a.to_a
- * a1 # => ["foo", "bar", "two"]
- * a1.class # => Array # Not MyArray
+ * Returns +self+.
*
+ * If called on a subclass of Array, converts the receiver to an Array object.
*/
static VALUE
rb_ary_to_a(VALUE ary)
{
if (rb_obj_class(ary) != rb_cArray) {
- VALUE dup = rb_ary_new2(RARRAY_LEN(ary));
- rb_ary_replace(dup, ary);
- return dup;
+ VALUE dup = rb_ary_new2(RARRAY_LEN(ary));
+ rb_ary_replace(dup, ary);
+ return dup;
}
return ary;
}
/*
* call-seq:
- * array.to_h -> new_hash
- * array.to_h {|item| ... } -> new_hash
- *
- * Returns a new \Hash formed from +self+.
- *
- * When a block is given, calls the block with each array element;
- * the block must return a 2-element \Array whose two elements
- * form a key-value pair in the returned \Hash:
- *
- * a = ['foo', :bar, 1, [2, 3], {baz: 4}]
- * h = a.to_h {|item| [item, item] }
- * h # => {"foo"=>"foo", :bar=>:bar, 1=>1, [2, 3]=>[2, 3], {:baz=>4}=>{:baz=>4}}
- *
- * When no block is given, +self+ must be an \Array of 2-element sub-arrays,
- * each sub-array is formed into a key-value pair in the new \Hash:
+ * ary.to_h -> hash
*
- * [].to_h # => {}
- * a = [['foo', 'zero'], ['bar', 'one'], ['baz', 'two']]
- * h = a.to_h
- * h # => {"foo"=>"zero", "bar"=>"one", "baz"=>"two"}
+ * Returns the result of interpreting <i>ary</i> as an array of
+ * <tt>[key, value]</tt> pairs.
*
+ * [[:foo, :bar], [1, 2]].to_h
+ * # => {:foo => :bar, 1 => 2}
*/
static VALUE
@@ -3104,28 +2191,25 @@ rb_ary_to_h(VALUE ary)
{
long i;
VALUE hash = rb_hash_new_with_size(RARRAY_LEN(ary));
- int block_given = rb_block_given_p();
-
for (i=0; i<RARRAY_LEN(ary); i++) {
- const VALUE e = rb_ary_elt(ary, i);
- const VALUE elt = block_given ? rb_yield_force_blockarg(e) : e;
- const VALUE key_value_pair = rb_check_array_type(elt);
- if (NIL_P(key_value_pair)) {
- rb_raise(rb_eTypeError, "wrong element type %"PRIsVALUE" at %ld (expected array)",
- rb_obj_class(elt), i);
- }
- if (RARRAY_LEN(key_value_pair) != 2) {
- rb_raise(rb_eArgError, "wrong array length at %ld (expected 2, was %ld)",
- i, RARRAY_LEN(key_value_pair));
- }
- rb_hash_aset(hash, RARRAY_AREF(key_value_pair, 0), RARRAY_AREF(key_value_pair, 1));
+ const VALUE elt = rb_ary_elt(ary, i);
+ const VALUE key_value_pair = rb_check_array_type(elt);
+ if (NIL_P(key_value_pair)) {
+ rb_raise(rb_eTypeError, "wrong element type %"PRIsVALUE" at %ld (expected array)",
+ rb_obj_class(elt), i);
+ }
+ if (RARRAY_LEN(key_value_pair) != 2) {
+ rb_raise(rb_eArgError, "wrong array length at %ld (expected 2, was %ld)",
+ i, RARRAY_LEN(key_value_pair));
+ }
+ rb_hash_aset(hash, RARRAY_AREF(key_value_pair, 0), RARRAY_AREF(key_value_pair, 1));
}
return hash;
}
/*
* call-seq:
- * array.to_ary -> self
+ * ary.to_ary -> ary
*
* Returns +self+.
*/
@@ -3140,9 +2224,9 @@ static void
ary_reverse(VALUE *p1, VALUE *p2)
{
while (p1 < p2) {
- VALUE tmp = *p1;
- *p1++ = *p2;
- *p2-- = tmp;
+ VALUE tmp = *p1;
+ *p1++ = *p2;
+ *p2-- = tmp;
}
}
@@ -3154,23 +2238,23 @@ rb_ary_reverse(VALUE ary)
rb_ary_modify(ary);
if (len > 1) {
- RARRAY_PTR_USE_TRANSIENT(ary, p1, {
- p2 = p1 + len - 1; /* points last item */
- ary_reverse(p1, p2);
- }); /* WB: no new reference */
+ RARRAY_PTR_USE(ary, p1, {
+ p2 = p1 + len - 1; /* points last item */
+ ary_reverse(p1, p2);
+ }); /* WB: no new reference */
}
return ary;
}
/*
* call-seq:
- * array.reverse! -> self
- *
- * Reverses +self+ in place:
+ * ary.reverse! -> ary
*
- * a = ['foo', 'bar', 'two']
- * a.reverse! # => ["two", "bar", "foo"]
+ * Reverses +self+ in place.
*
+ * a = [ "a", "b", "c" ]
+ * a.reverse! #=> ["c", "b", "a"]
+ * a #=> ["c", "b", "a"]
*/
static VALUE
@@ -3181,14 +2265,12 @@ rb_ary_reverse_bang(VALUE ary)
/*
* call-seq:
- * array.reverse -> new_array
+ * ary.reverse -> new_ary
*
- * Returns a new \Array with the elements of +self+ in reverse order:
- *
- * a = ['foo', 'bar', 'two']
- * a1 = a.reverse
- * a1 # => ["two", "bar", "foo"]
+ * Returns a new array containing +self+'s elements in reverse order.
*
+ * [ "a", "b", "c" ].reverse #=> ["c", "b", "a"]
+ * [ 1 ].reverse #=> [1]
*/
static VALUE
@@ -3198,9 +2280,9 @@ rb_ary_reverse_m(VALUE ary)
VALUE dup = rb_ary_new2(len);
if (len > 0) {
- const VALUE *p1 = RARRAY_CONST_PTR_TRANSIENT(ary);
- VALUE *p2 = (VALUE *)RARRAY_CONST_PTR_TRANSIENT(dup) + len - 1;
- do *p2-- = *p1++; while (--len > 0);
+ const VALUE *p1 = RARRAY_CONST_PTR(ary);
+ VALUE *p2 = (VALUE *)RARRAY_CONST_PTR(dup) + len - 1;
+ do *p2-- = *p1++; while (--len > 0);
}
ARY_SET_LEN(dup, RARRAY_LEN(ary));
return dup;
@@ -3212,143 +2294,73 @@ rotate_count(long cnt, long len)
return (cnt < 0) ? (len - (~cnt % len) - 1) : (cnt % len);
}
-static void
-ary_rotate_ptr(VALUE *ptr, long len, long cnt)
-{
- if (cnt == 1) {
- VALUE tmp = *ptr;
- memmove(ptr, ptr + 1, sizeof(VALUE)*(len - 1));
- *(ptr + len - 1) = tmp;
- }
- else if (cnt == len - 1) {
- VALUE tmp = *(ptr + len - 1);
- memmove(ptr + 1, ptr, sizeof(VALUE)*(len - 1));
- *ptr = tmp;
- }
- else {
- --len;
- if (cnt < len) ary_reverse(ptr + cnt, ptr + len);
- if (--cnt > 0) ary_reverse(ptr, ptr + cnt);
- if (len > 0) ary_reverse(ptr, ptr + len);
- }
-}
-
VALUE
rb_ary_rotate(VALUE ary, long cnt)
{
rb_ary_modify(ary);
if (cnt != 0) {
- long len = RARRAY_LEN(ary);
- if (len > 1 && (cnt = rotate_count(cnt, len)) > 0) {
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, ary_rotate_ptr(ptr, len, cnt));
- return ary;
- }
+ VALUE *ptr = RARRAY_PTR(ary);
+ long len = RARRAY_LEN(ary);
+
+ if (len > 0 && (cnt = rotate_count(cnt, len)) > 0) {
+ --len;
+ if (cnt < len) ary_reverse(ptr + cnt, ptr + len);
+ if (--cnt > 0) ary_reverse(ptr, ptr + cnt);
+ if (len > 0) ary_reverse(ptr, ptr + len);
+ return ary;
+ }
}
+
return Qnil;
}
/*
* call-seq:
- * array.rotate! -> self
- * array.rotate!(count) -> self
- *
- * Rotates +self+ in place by moving elements from one end to the other; returns +self+.
- *
- * When no argument given, rotates the first element to the last position:
- *
- * a = [:foo, 'bar', 2, 'bar']
- * a.rotate! # => ["bar", 2, "bar", :foo]
- *
- * When given a non-negative \Integer +count+,
- * rotates +count+ elements from the beginning to the end:
- *
- * a = [:foo, 'bar', 2]
- * a.rotate!(2)
- * a # => [2, :foo, "bar"]
- *
- * If +count+ is large, uses <tt>count % array.size</tt> as the count:
- *
- * a = [:foo, 'bar', 2]
- * a.rotate!(20)
- * a # => [2, :foo, "bar"]
- *
- * If +count+ is zero, returns +self+ unmodified:
- *
- * a = [:foo, 'bar', 2]
- * a.rotate!(0)
- * a # => [:foo, "bar", 2]
- *
- * When given a negative Integer +count+, rotates in the opposite direction,
- * from end to beginning:
+ * ary.rotate!(count=1) -> ary
*
- * a = [:foo, 'bar', 2]
- * a.rotate!(-2)
- * a # => ["bar", 2, :foo]
- *
- * If +count+ is small (far from zero), uses <tt>count % array.size</tt> as the count:
+ * Rotates +self+ in place so that the element at +count+ comes first, and
+ * returns +self+.
*
- * a = [:foo, 'bar', 2]
- * a.rotate!(-5)
- * a # => ["bar", 2, :foo]
+ * If +count+ is negative then it rotates in the opposite direction, starting
+ * from the end of the array where +-1+ is the last element.
*
+ * a = [ "a", "b", "c", "d" ]
+ * a.rotate! #=> ["b", "c", "d", "a"]
+ * a #=> ["b", "c", "d", "a"]
+ * a.rotate!(2) #=> ["d", "a", "b", "c"]
+ * a.rotate!(-3) #=> ["a", "b", "c", "d"]
*/
static VALUE
rb_ary_rotate_bang(int argc, VALUE *argv, VALUE ary)
{
- long n = (rb_check_arity(argc, 0, 1) ? NUM2LONG(argv[0]) : 1);
+ long n = 1;
+
+ switch (argc) {
+ case 1: n = NUM2LONG(argv[0]);
+ case 0: break;
+ default: rb_scan_args(argc, argv, "01", NULL);
+ }
rb_ary_rotate(ary, n);
return ary;
}
/*
* call-seq:
- * array.rotate -> new_array
- * array.rotate(count) -> new_array
- *
- * Returns a new \Array formed from +self+ with elements
- * rotated from one end to the other.
- *
- * When no argument given, returns a new \Array that is like +self+,
- * except that the first element has been rotated to the last position:
- *
- * a = [:foo, 'bar', 2, 'bar']
- * a1 = a.rotate
- * a1 # => ["bar", 2, "bar", :foo]
- *
- * When given a non-negative \Integer +count+,
- * returns a new \Array with +count+ elements rotated from the beginning to the end:
- *
- * a = [:foo, 'bar', 2]
- * a1 = a.rotate(2)
- * a1 # => [2, :foo, "bar"]
- *
- * If +count+ is large, uses <tt>count % array.size</tt> as the count:
- *
- * a = [:foo, 'bar', 2]
- * a1 = a.rotate(20)
- * a1 # => [2, :foo, "bar"]
- *
- * If +count+ is zero, returns a copy of +self+, unmodified:
+ * ary.rotate(count=1) -> new_ary
*
- * a = [:foo, 'bar', 2]
- * a1 = a.rotate(0)
- * a1 # => [:foo, "bar", 2]
+ * Returns a new array by rotating +self+ so that the element at +count+ is
+ * the first element of the new array.
*
- * When given a negative \Integer +count+, rotates in the opposite direction,
- * from end to beginning:
- *
- * a = [:foo, 'bar', 2]
- * a1 = a.rotate(-2)
- * a1 # => ["bar", 2, :foo]
- *
- * If +count+ is small (far from zero), uses <tt>count % array.size</tt> as the count:
- *
- * a = [:foo, 'bar', 2]
- * a1 = a.rotate(-5)
- * a1 # => ["bar", 2, :foo]
+ * If +count+ is negative then it rotates in the opposite direction, starting
+ * from the end of +self+ where +-1+ is the last element.
*
+ * a = [ "a", "b", "c", "d" ]
+ * a.rotate #=> ["b", "c", "d", "a"]
+ * a #=> ["a", "b", "c", "d"]
+ * a.rotate(2) #=> ["c", "d", "a", "b"]
+ * a.rotate(-3) #=> ["b", "c", "d", "a"]
*/
static VALUE
@@ -3356,17 +2368,22 @@ rb_ary_rotate_m(int argc, VALUE *argv, VALUE ary)
{
VALUE rotated;
const VALUE *ptr;
- long len;
- long cnt = (rb_check_arity(argc, 0, 1) ? NUM2LONG(argv[0]) : 1);
+ long len, cnt = 1;
+
+ switch (argc) {
+ case 1: cnt = NUM2LONG(argv[0]);
+ case 0: break;
+ default: rb_scan_args(argc, argv, "01", NULL);
+ }
len = RARRAY_LEN(ary);
rotated = rb_ary_new2(len);
if (len > 0) {
- cnt = rotate_count(cnt, len);
- ptr = RARRAY_CONST_PTR_TRANSIENT(ary);
- len -= cnt;
- ary_memcpy(rotated, 0, len, ptr + cnt);
- ary_memcpy(rotated, len, cnt, ptr);
+ cnt = rotate_count(cnt, len);
+ ptr = RARRAY_CONST_PTR(ary);
+ len -= cnt;
+ ary_memcpy(rotated, 0, len, ptr + cnt);
+ ary_memcpy(rotated, len, cnt, ptr);
}
ARY_SET_LEN(rotated, RARRAY_LEN(ary));
return rotated;
@@ -3374,27 +2391,18 @@ rb_ary_rotate_m(int argc, VALUE *argv, VALUE ary)
struct ary_sort_data {
VALUE ary;
- VALUE receiver;
+ struct cmp_opt_data cmp_opt;
};
static VALUE
sort_reentered(VALUE ary)
{
if (RBASIC(ary)->klass) {
- rb_raise(rb_eRuntimeError, "sort reentered");
+ rb_raise(rb_eRuntimeError, "sort reentered");
}
return Qnil;
}
-static void
-sort_returned(struct ary_sort_data *data)
-{
- if (rb_obj_frozen_p(data->receiver)) {
- rb_raise(rb_eFrozenError, "array frozen during sort");
- }
- sort_reentered(data->ary);
-}
-
static int
sort_1(const void *ap, const void *bp, void *dummy)
{
@@ -3408,7 +2416,7 @@ sort_1(const void *ap, const void *bp, void *dummy)
args[1] = b;
retval = rb_yield_values2(2, args);
n = rb_cmpint(retval, a, b);
- sort_returned(data);
+ sort_reentered(data->ary);
return n;
}
@@ -3420,64 +2428,47 @@ sort_2(const void *ap, const void *bp, void *dummy)
VALUE a = *(const VALUE *)ap, b = *(const VALUE *)bp;
int n;
- if (FIXNUM_P(a) && FIXNUM_P(b) && CMP_OPTIMIZABLE(INTEGER)) {
- if ((long)a > (long)b) return 1;
- if ((long)a < (long)b) return -1;
- return 0;
+ if (FIXNUM_P(a) && FIXNUM_P(b) && CMP_OPTIMIZABLE(data->cmp_opt, Fixnum)) {
+ if ((long)a > (long)b) return 1;
+ if ((long)a < (long)b) return -1;
+ return 0;
}
- if (STRING_P(a) && STRING_P(b) && CMP_OPTIMIZABLE(STRING)) {
- return rb_str_cmp(a, b);
+ if (STRING_P(a) && STRING_P(b) && CMP_OPTIMIZABLE(data->cmp_opt, String)) {
+ return rb_str_cmp(a, b);
}
- if (RB_FLOAT_TYPE_P(a) && CMP_OPTIMIZABLE(FLOAT)) {
- return rb_float_cmp(a, b);
+ if (RB_FLOAT_TYPE_P(a) && CMP_OPTIMIZABLE(data->cmp_opt, Float)) {
+ return rb_float_cmp(a, b);
}
retval = rb_funcallv(a, id_cmp, 1, &b);
n = rb_cmpint(retval, a, b);
- sort_returned(data);
+ sort_reentered(data->ary);
return n;
}
/*
* call-seq:
- * array.sort! -> self
- * array.sort! {|a, b| ... } -> self
- *
- * Returns +self+ with its elements sorted in place.
- *
- * With no block, compares elements using operator <tt><=></tt>
- * (see Comparable):
+ * ary.sort! -> ary
+ * ary.sort! { |a, b| block } -> ary
*
- * a = 'abcde'.split('').shuffle
- * a # => ["e", "b", "d", "a", "c"]
- * a.sort!
- * a # => ["a", "b", "c", "d", "e"]
+ * Sorts +self+ in place.
*
- * With a block, calls the block with each element pair;
- * for each element pair +a+ and +b+, the block should return an integer:
+ * Comparisons for the sort will be done using the <code><=></code> operator
+ * or using an optional code block.
*
- * - Negative when +b+ is to follow +a+.
- * - Zero when +a+ and +b+ are equivalent.
- * - Positive when +a+ is to follow +b+.
+ * The block must implement a comparison between +a+ and +b+ and return
+ * an integer less than 0 when +b+ follows +a+, +0+ when +a+ and +b+
+ * are equivalent, or an integer greater than 0 when +a+ follows +b+.
*
- * Example:
+ * The result is not guaranteed to be stable. When the comparison of two
+ * elements returns +0+, the order of the elements is unpredictable.
*
- * a = 'abcde'.split('').shuffle
- * a # => ["e", "b", "d", "a", "c"]
- * a.sort! {|a, b| a <=> b }
- * a # => ["a", "b", "c", "d", "e"]
- * a.sort! {|a, b| b <=> a }
- * a # => ["e", "d", "c", "b", "a"]
- *
- * When the block returns zero, the order for +a+ and +b+ is indeterminate,
- * and may be unstable:
- *
- * a = 'abcde'.split('').shuffle
- * a # => ["e", "b", "d", "a", "c"]
- * a.sort! {|a, b| 0 }
- * a # => ["d", "e", "c", "a", "b"]
+ * ary = [ "d", "a", "e", "c", "b" ]
+ * ary.sort! #=> ["a", "b", "c", "d", "e"]
+ * ary.sort! { |a, b| b <=> a } #=> ["e", "d", "c", "b", "a"]
*
+ * See also Enumerable#sort_by.
*/
VALUE
@@ -3486,23 +2477,25 @@ rb_ary_sort_bang(VALUE ary)
rb_ary_modify(ary);
assert(!ARY_SHARED_P(ary));
if (RARRAY_LEN(ary) > 1) {
- VALUE tmp = ary_make_substitution(ary); /* only ary refers tmp */
- struct ary_sort_data data;
- long len = RARRAY_LEN(ary);
- RBASIC_CLEAR_CLASS(tmp);
- data.ary = tmp;
- data.receiver = ary;
- RARRAY_PTR_USE(tmp, ptr, {
- ruby_qsort(ptr, len, sizeof(VALUE),
- rb_block_given_p()?sort_1:sort_2, &data);
- }); /* WB: no new reference */
- rb_ary_modify(ary);
+ VALUE tmp = ary_make_substitution(ary); /* only ary refers tmp */
+ struct ary_sort_data data;
+ long len = RARRAY_LEN(ary);
+
+ RBASIC_CLEAR_CLASS(tmp);
+ data.ary = tmp;
+ data.cmp_opt.opt_methods = 0;
+ data.cmp_opt.opt_inited = 0;
+ RARRAY_PTR_USE(tmp, ptr, {
+ ruby_qsort(ptr, len, sizeof(VALUE),
+ rb_block_given_p()?sort_1:sort_2, &data);
+ }); /* WB: no new reference */
+ rb_ary_modify(ary);
if (ARY_EMBED_P(tmp)) {
if (ARY_SHARED_P(ary)) { /* ary might be destructively operated in the given block */
rb_ary_unshare(ary);
- FL_SET_EMBED(ary);
+ FL_SET_EMBED(ary);
}
- ary_memcpy(ary, 0, ARY_EMBED_LEN(tmp), ARY_EMBED_PTR(tmp));
+ ary_memcpy(ary, 0, ARY_EMBED_LEN(tmp), ARY_EMBED_PTR(tmp));
ARY_SET_LEN(ary, ARY_EMBED_LEN(tmp));
}
else {
@@ -3520,65 +2513,46 @@ rb_ary_sort_bang(VALUE ary)
rb_ary_unshare(ary);
}
else {
- ary_heap_free(ary);
+ ruby_sized_xfree((void *)ARY_HEAP_PTR(ary), ARY_HEAP_SIZE(ary));
}
- ARY_SET_PTR(ary, ARY_HEAP_PTR(tmp));
+ ARY_SET_PTR(ary, RARRAY_CONST_PTR(tmp));
ARY_SET_HEAP_LEN(ary, len);
- ARY_SET_CAPA(ary, ARY_HEAP_LEN(tmp));
+ ARY_SET_CAPA(ary, RARRAY_LEN(tmp));
}
/* tmp was lost ownership for the ptr */
FL_UNSET(tmp, FL_FREEZE);
FL_SET_EMBED(tmp);
ARY_SET_EMBED_LEN(tmp, 0);
FL_SET(tmp, FL_FREEZE);
- }
+ }
/* tmp will be GC'ed. */
RBASIC_SET_CLASS_RAW(tmp, rb_cArray); /* rb_cArray must be marked */
}
- ary_verify(ary);
return ary;
}
/*
* call-seq:
- * array.sort -> new_array
- * array.sort {|a, b| ... } -> new_array
- *
- * Returns a new \Array whose elements are those from +self+, sorted.
- *
- * With no block, compares elements using operator <tt><=></tt>
- * (see Comparable):
+ * ary.sort -> new_ary
+ * ary.sort { |a, b| block } -> new_ary
*
- * a = 'abcde'.split('').shuffle
- * a # => ["e", "b", "d", "a", "c"]
- * a1 = a.sort
- * a1 # => ["a", "b", "c", "d", "e"]
+ * Returns a new array created by sorting +self+.
*
- * With a block, calls the block with each element pair;
- * for each element pair +a+ and +b+, the block should return an integer:
+ * Comparisons for the sort will be done using the <code><=></code> operator
+ * or using an optional code block.
*
- * - Negative when +b+ is to follow +a+.
- * - Zero when +a+ and +b+ are equivalent.
- * - Positive when +a+ is to follow +b+.
+ * The block must implement a comparison between +a+ and +b+ and return
+ * an integer less than 0 when +b+ follows +a+, +0+ when +a+ and +b+
+ * are equivalent, or an integer greater than 0 when +a+ follows +b+.
*
- * Example:
+ * The result is not guaranteed to be stable. When the comparison of two
+ * elements returns +0+, the order of the elements is unpredictable.
*
- * a = 'abcde'.split('').shuffle
- * a # => ["e", "b", "d", "a", "c"]
- * a1 = a.sort {|a, b| a <=> b }
- * a1 # => ["a", "b", "c", "d", "e"]
- * a2 = a.sort {|a, b| b <=> a }
- * a2 # => ["e", "d", "c", "b", "a"]
+ * ary = [ "d", "a", "e", "c", "b" ]
+ * ary.sort #=> ["a", "b", "c", "d", "e"]
+ * ary.sort { |a, b| b <=> a } #=> ["e", "d", "c", "b", "a"]
*
- * When the block returns zero, the order for +a+ and +b+ is indeterminate,
- * and may be unstable:
- *
- * a = 'abcde'.split('').shuffle
- * a # => ["e", "b", "d", "a", "c"]
- * a1 = a.sort {|a, b| 0 }
- * a1 # => ["c", "e", "b", "d", "a"]
- *
- * Related: Enumerable#sort_by.
+ * See also Enumerable#sort_by.
*/
VALUE
@@ -3593,12 +2567,55 @@ static VALUE rb_ary_bsearch_index(VALUE ary);
/*
* call-seq:
- * array.bsearch {|element| ... } -> object
- * array.bsearch -> new_enumerator
- *
- * Returns an element from +self+ selected by a binary search.
- *
- * See {Binary Searching}[rdoc-ref:bsearch.rdoc].
+ * ary.bsearch {|x| block } -> elem
+ *
+ * By using binary search, finds a value from this array which meets
+ * the given condition in O(log n) where n is the size of the array.
+ *
+ * You can use this method in two modes: a find-minimum mode and
+ * a find-any mode. In either case, the elements of the array must be
+ * monotone (or sorted) with respect to the block.
+ *
+ * In find-minimum mode (this is a good choice for typical use cases),
+ * the block must always return true or false, and there must be an index i
+ * (0 <= i <= ary.size) so that:
+ *
+ * - the block returns false for any element whose index is less than
+ * i, and
+ * - the block returns true for any element whose index is greater
+ * than or equal to i.
+ *
+ * This method returns the i-th element. If i is equal to ary.size,
+ * it returns nil.
+ *
+ * ary = [0, 4, 7, 10, 12]
+ * ary.bsearch {|x| x >= 4 } #=> 4
+ * ary.bsearch {|x| x >= 6 } #=> 7
+ * ary.bsearch {|x| x >= -1 } #=> 0
+ * ary.bsearch {|x| x >= 100 } #=> nil
+ *
+ * In find-any mode (this behaves like libc's bsearch(3)), the block
+ * must always return a number, and there must be two indices i and j
+ * (0 <= i <= j <= ary.size) so that:
+ *
+ * - the block returns a positive number for ary[k] if 0 <= k < i,
+ * - the block returns zero for ary[k] if i <= k < j, and
+ * - the block returns a negative number for ary[k] if
+ * j <= k < ary.size.
+ *
+ * Under this condition, this method returns any element whose index
+ * is within i...j. If i is equal to j (i.e., there is no element
+ * that satisfies the block), this method returns nil.
+ *
+ * ary = [0, 4, 7, 10, 12]
+ * # try to find v such that 4 <= v < 8
+ * ary.bsearch {|x| 1 - x / 4 } #=> 4 or 7
+ * # try to find v such that 8 <= v < 10
+ * ary.bsearch {|x| 4 - x / 2 } #=> nil
+ *
+ * You must not mix the two modes at a time; the block must always
+ * return either true/false, or always return a number. It is
+ * undefined which value is actually picked up at each iteration.
*/
static VALUE
@@ -3607,18 +2624,22 @@ rb_ary_bsearch(VALUE ary)
VALUE index_result = rb_ary_bsearch_index(ary);
if (FIXNUM_P(index_result)) {
- return rb_ary_entry(ary, FIX2LONG(index_result));
+ return rb_ary_entry(ary, FIX2LONG(index_result));
}
return index_result;
}
/*
* call-seq:
- * array.bsearch_index {|element| ... } -> integer or nil
- * array.bsearch_index -> new_enumerator
+ * ary.bsearch_index {|x| block } -> int or nil
+ *
+ * By using binary search, finds an index of a value from this array which
+ * meets the given condition in O(log n) where n is the size of the array.
*
- * Searches +self+ as described at method #bsearch,
- * but returns the _index_ of the found element instead of the element itself.
+ * It supports two modes, depending on the nature of the block. They are
+ * exactly the same as in the case of the #bsearch method, with the only difference
+ * being that this method returns the index of the element instead of the
+ * element itself. For more details consult the documentation for #bsearch.
*/
static VALUE
@@ -3630,39 +2651,39 @@ rb_ary_bsearch_index(VALUE ary)
RETURN_ENUMERATOR(ary, 0, 0);
while (low < high) {
- mid = low + ((high - low) / 2);
- val = rb_ary_entry(ary, mid);
- v = rb_yield(val);
- if (FIXNUM_P(v)) {
- if (v == INT2FIX(0)) return INT2FIX(mid);
- smaller = (SIGNED_VALUE)v < 0; /* Fixnum preserves its sign-bit */
- }
- else if (v == Qtrue) {
- satisfied = 1;
- smaller = 1;
- }
- else if (!RTEST(v)) {
- smaller = 0;
- }
- else if (rb_obj_is_kind_of(v, rb_cNumeric)) {
- const VALUE zero = INT2FIX(0);
- switch (rb_cmpint(rb_funcallv(v, id_cmp, 1, &zero), v, zero)) {
- case 0: return INT2FIX(mid);
- case 1: smaller = 1; break;
- case -1: smaller = 0;
- }
- }
- else {
- rb_raise(rb_eTypeError, "wrong argument type %"PRIsVALUE
- " (must be numeric, true, false or nil)",
- rb_obj_class(v));
- }
- if (smaller) {
- high = mid;
- }
- else {
- low = mid + 1;
- }
+ mid = low + ((high - low) / 2);
+ val = rb_ary_entry(ary, mid);
+ v = rb_yield(val);
+ if (FIXNUM_P(v)) {
+ if (v == INT2FIX(0)) return INT2FIX(mid);
+ smaller = (SIGNED_VALUE)v < 0; /* Fixnum preserves its sign-bit */
+ }
+ else if (v == Qtrue) {
+ satisfied = 1;
+ smaller = 1;
+ }
+ else if (v == Qfalse || v == Qnil) {
+ smaller = 0;
+ }
+ else if (rb_obj_is_kind_of(v, rb_cNumeric)) {
+ const VALUE zero = INT2FIX(0);
+ switch (rb_cmpint(rb_funcallv(v, id_cmp, 1, &zero), v, zero)) {
+ case 0: return INT2FIX(mid);
+ case 1: smaller = 1; break;
+ case -1: smaller = 0;
+ }
+ }
+ else {
+ rb_raise(rb_eTypeError, "wrong argument type %"PRIsVALUE
+ " (must be numeric, true, false or nil)",
+ rb_obj_class(v));
+ }
+ if (smaller) {
+ high = mid;
+ }
+ else {
+ low = mid + 1;
+ }
}
if (!satisfied) return Qnil;
return INT2FIX(low);
@@ -3677,28 +2698,18 @@ sort_by_i(RB_BLOCK_CALL_FUNC_ARGLIST(i, dummy))
/*
* call-seq:
- * array.sort_by! {|element| ... } -> self
- * array.sort_by! -> new_enumerator
- *
- * Sorts the elements of +self+ in place,
- * using an ordering determined by the block; returns self.
+ * ary.sort_by! { |obj| block } -> ary
+ * ary.sort_by! -> Enumerator
*
- * Calls the block with each successive element;
- * sorts elements based on the values returned from the block.
+ * Sorts +self+ in place using a set of keys generated by mapping the
+ * values in +self+ through the given block.
*
- * For duplicates returned by the block, the ordering is indeterminate, and may be unstable.
+ * The result is not guaranteed to be stable. When two keys are equal,
+ * the order of the corresponding elements is unpredictable.
*
- * This example sorts strings based on their sizes:
- *
- * a = ['aaaa', 'bbb', 'cc', 'd']
- * a.sort_by! {|element| element.size }
- * a # => ["d", "cc", "bbb", "aaaa"]
- *
- * Returns a new \Enumerator if no block given:
- *
- * a = ['aaaa', 'bbb', 'cc', 'd']
- * a.sort_by! # => #<Enumerator: ["aaaa", "bbb", "cc", "d"]:sort_by!>
+ * If no block is given, an Enumerator is returned instead.
*
+ * See also Enumerable#sort_by.
*/
static VALUE
@@ -3716,21 +2727,23 @@ rb_ary_sort_by_bang(VALUE ary)
/*
* call-seq:
- * array.map {|element| ... } -> new_array
- * array.map -> new_enumerator
+ * ary.collect { |item| block } -> new_ary
+ * ary.map { |item| block } -> new_ary
+ * ary.collect -> Enumerator
+ * ary.map -> Enumerator
+ *
+ * Invokes the given block once for each element of +self+.
*
- * Calls the block, if given, with each element of +self+;
- * returns a new \Array whose elements are the return values from the block:
+ * Creates a new array containing the values returned by the block.
*
- * a = [:foo, 'bar', 2]
- * a1 = a.map {|element| element.class }
- * a1 # => [Symbol, String, Integer]
+ * See also Enumerable#collect.
*
- * Returns a new \Enumerator if no block given:
- * a = [:foo, 'bar', 2]
- * a1 = a.map
- * a1 # => #<Enumerator: [:foo, "bar", 2]:map>
+ * If no block is given, an Enumerator is returned instead.
*
+ * a = [ "a", "b", "c", "d" ]
+ * a.collect { |x| x + "!" } #=> ["a!", "b!", "c!", "d!"]
+ * a.map.with_index { |x, i| x * i } #=> ["", "b", "cc", "ddd"]
+ * a #=> ["a", "b", "c", "d"]
*/
static VALUE
@@ -3742,7 +2755,7 @@ rb_ary_collect(VALUE ary)
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
collect = rb_ary_new2(RARRAY_LEN(ary));
for (i = 0; i < RARRAY_LEN(ary); i++) {
- rb_ary_push(collect, rb_yield(RARRAY_AREF(ary, i)));
+ rb_ary_push(collect, rb_yield_force_blockarg(RARRAY_AREF(ary, i)));
}
return collect;
}
@@ -3750,21 +2763,23 @@ rb_ary_collect(VALUE ary)
/*
* call-seq:
- * array.map! {|element| ... } -> self
- * array.map! -> new_enumerator
+ * ary.collect! {|item| block } -> ary
+ * ary.map! {|item| block } -> ary
+ * ary.collect! -> Enumerator
+ * ary.map! -> Enumerator
*
- * Calls the block, if given, with each element;
- * replaces the element with the block's return value:
+ * Invokes the given block once for each element of +self+, replacing the
+ * element with the value returned by the block.
*
- * a = [:foo, 'bar', 2]
- * a.map! { |element| element.class } # => [Symbol, String, Integer]
+ * See also Enumerable#collect.
*
- * Returns a new \Enumerator if no block given:
- *
- * a = [:foo, 'bar', 2]
- * a1 = a.map!
- * a1 # => #<Enumerator: [:foo, "bar", 2]:map!>
+ * If no block is given, an Enumerator is returned instead.
*
+ * a = [ "a", "b", "c", "d" ]
+ * a.map! {|x| x + "!" }
+ * a #=> [ "a!", "b!", "c!", "d!" ]
+ * a.collect!.with_index {|x, i| x[0...i] }
+ * a #=> ["", "b", "c!", "d!"]
*/
static VALUE
@@ -3775,7 +2790,7 @@ rb_ary_collect_bang(VALUE ary)
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
rb_ary_modify(ary);
for (i = 0; i < RARRAY_LEN(ary); i++) {
- rb_ary_store(ary, i, rb_yield(RARRAY_AREF(ary, i)));
+ rb_ary_store(ary, i, rb_yield(RARRAY_AREF(ary, i)));
}
return ary;
}
@@ -3787,127 +2802,66 @@ rb_get_values_at(VALUE obj, long olen, int argc, const VALUE *argv, VALUE (*func
long beg, len, i, j;
for (i=0; i<argc; i++) {
- if (FIXNUM_P(argv[i])) {
- rb_ary_push(result, (*func)(obj, FIX2LONG(argv[i])));
- continue;
- }
- /* check if idx is Range */
- if (rb_range_beg_len(argv[i], &beg, &len, olen, 1)) {
- long end = olen < beg+len ? olen : beg+len;
- for (j = beg; j < end; j++) {
- rb_ary_push(result, (*func)(obj, j));
- }
- if (beg + len > j)
- rb_ary_resize(result, RARRAY_LEN(result) + (beg + len) - j);
- continue;
- }
- rb_ary_push(result, (*func)(obj, NUM2LONG(argv[i])));
+ if (FIXNUM_P(argv[i])) {
+ rb_ary_push(result, (*func)(obj, FIX2LONG(argv[i])));
+ continue;
+ }
+ /* check if idx is Range */
+ if (rb_range_beg_len(argv[i], &beg, &len, olen, 1)) {
+ long end = olen < beg+len ? olen : beg+len;
+ for (j = beg; j < end; j++) {
+ rb_ary_push(result, (*func)(obj, j));
+ }
+ if (beg + len > j)
+ rb_ary_resize(result, RARRAY_LEN(result) + (beg + len) - j);
+ continue;
+ }
+ rb_ary_push(result, (*func)(obj, NUM2LONG(argv[i])));
}
return result;
}
-static VALUE
-append_values_at_single(VALUE result, VALUE ary, long olen, VALUE idx)
-{
- long beg, len;
- if (FIXNUM_P(idx)) {
- beg = FIX2LONG(idx);
- }
- /* check if idx is Range */
- else if (rb_range_beg_len(idx, &beg, &len, olen, 1)) {
- if (len > 0) {
- const VALUE *const src = RARRAY_CONST_PTR_TRANSIENT(ary);
- const long end = beg + len;
- const long prevlen = RARRAY_LEN(result);
- if (beg < olen) {
- rb_ary_cat(result, src + beg, end > olen ? olen-beg : len);
- }
- if (end > olen) {
- rb_ary_store(result, prevlen + len - 1, Qnil);
- }
- }
- return result;
- }
- else {
- beg = NUM2LONG(idx);
- }
- return rb_ary_push(result, rb_ary_entry(ary, beg));
-}
-
/*
* call-seq:
- * array.values_at(*indexes) -> new_array
- *
- * Returns a new \Array whose elements are the elements
- * of +self+ at the given \Integer or \Range +indexes+.
- *
- * For each positive +index+, returns the element at offset +index+:
- *
- * a = [:foo, 'bar', 2]
- * a.values_at(0, 2) # => [:foo, 2]
- * a.values_at(0..1) # => [:foo, "bar"]
- *
- * The given +indexes+ may be in any order, and may repeat:
+ * ary.values_at(selector, ...) -> new_ary
*
- * a = [:foo, 'bar', 2]
- * a.values_at(2, 0, 1, 0, 2) # => [2, :foo, "bar", :foo, 2]
- * a.values_at(1, 0..2) # => ["bar", :foo, "bar", 2]
+ * Returns an array containing the elements in +self+ corresponding to the
+ * given +selector+(s).
*
- * Assigns +nil+ for an +index+ that is too large:
+ * The selectors may be either integer indices or ranges.
*
- * a = [:foo, 'bar', 2]
- * a.values_at(0, 3, 1, 3) # => [:foo, nil, "bar", nil]
- *
- * Returns a new empty \Array if no arguments given.
- *
- * For each negative +index+, counts backward from the end of the array:
- *
- * a = [:foo, 'bar', 2]
- * a.values_at(-1, -3) # => [2, :foo]
- *
- * Assigns +nil+ for an +index+ that is too small:
- *
- * a = [:foo, 'bar', 2]
- * a.values_at(0, -5, 1, -6, 2) # => [:foo, nil, "bar", nil, 2]
- *
- * The given +indexes+ may have a mixture of signs:
- *
- * a = [:foo, 'bar', 2]
- * a.values_at(0, -2, 1, -1) # => [:foo, "bar", "bar", 2]
+ * See also Array#select.
*
+ * a = %w{ a b c d e f }
+ * a.values_at(1, 3, 5) # => ["b", "d", "f"]
+ * a.values_at(1, 3, 5, 7) # => ["b", "d", "f", nil]
+ * a.values_at(-1, -2, -2, -7) # => ["f", "e", "e", nil]
+ * a.values_at(4..6, 3...6) # => ["e", "f", nil, "d", "e", "f"]
*/
static VALUE
rb_ary_values_at(int argc, VALUE *argv, VALUE ary)
{
- long i, olen = RARRAY_LEN(ary);
- VALUE result = rb_ary_new_capa(argc);
- for (i = 0; i < argc; ++i) {
- append_values_at_single(result, ary, olen, argv[i]);
- }
- RB_GC_GUARD(ary);
- return result;
+ return rb_get_values_at(ary, RARRAY_LEN(ary), argc, argv, rb_ary_entry);
}
/*
* call-seq:
- * array.select {|element| ... } -> new_array
- * array.select -> new_enumerator
+ * ary.select { |item| block } -> new_ary
+ * ary.select -> Enumerator
*
- * Calls the block, if given, with each element of +self+;
- * returns a new \Array containing those elements of +self+
- * for which the block returns a truthy value:
+ * Returns a new array containing all elements of +ary+
+ * for which the given +block+ returns a true value.
*
- * a = [:foo, 'bar', 2, :bam]
- * a1 = a.select {|element| element.to_s.start_with?('b') }
- * a1 # => ["bar", :bam]
+ * If no block is given, an Enumerator is returned instead.
*
- * Returns a new \Enumerator if no block given:
+ * [1,2,3,4,5].select { |num| num.even? } #=> [2, 4]
*
- * a = [:foo, 'bar', 2, :bam]
- * a.select # => #<Enumerator: [:foo, "bar", 2, :bam]:select>
+ * a = %w{ a b c d e f }
+ * a.select { |v| v =~ /[aeiou]/ } #=> ["a", "e"]
*
+ * See also Enumerable#select.
*/
static VALUE
@@ -3919,9 +2873,9 @@ rb_ary_select(VALUE ary)
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
result = rb_ary_new2(RARRAY_LEN(ary));
for (i = 0; i < RARRAY_LEN(ary); i++) {
- if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
- rb_ary_push(result, rb_ary_elt(ary, i));
- }
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
+ rb_ary_push(result, rb_ary_elt(ary, i));
+ }
}
return result;
}
@@ -3939,12 +2893,12 @@ select_bang_i(VALUE a)
long i1, i2;
for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); arg->len[0] = ++i1) {
- VALUE v = RARRAY_AREF(ary, i1);
- if (!RTEST(rb_yield(v))) continue;
- if (i1 != i2) {
- rb_ary_store(ary, i2, v);
- }
- arg->len[1] = ++i2;
+ VALUE v = RARRAY_AREF(ary, i1);
+ if (!RTEST(rb_yield(v))) continue;
+ if (i1 != i2) {
+ rb_ary_store(ary, i2, v);
+ }
+ arg->len[1] = ++i2;
}
return (i1 == i2) ? Qnil : ary;
}
@@ -3958,38 +2912,33 @@ select_bang_ensure(VALUE a)
long i1 = arg->len[0], i2 = arg->len[1];
if (i2 < len && i2 < i1) {
- long tail = 0;
- rb_ary_modify(ary);
- if (i1 < len) {
- tail = len - i1;
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
- MEMMOVE(ptr + i2, ptr + i1, VALUE, tail);
- });
- }
- ARY_SET_LEN(ary, i2 + tail);
+ long tail = 0;
+ if (i1 < len) {
+ tail = len - i1;
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr + i2, ptr + i1, VALUE, tail);
+ });
+ }
+ ARY_SET_LEN(ary, i2 + tail);
}
return ary;
}
/*
* call-seq:
- * array.select! {|element| ... } -> self or nil
- * array.select! -> new_enumerator
- *
- * Calls the block, if given with each element of +self+;
- * removes from +self+ those elements for which the block returns +false+ or +nil+.
+ * ary.select! {|item| block } -> ary or nil
+ * ary.select! -> Enumerator
*
- * Returns +self+ if any elements were removed:
+ * Invokes the given block passing in successive elements from +self+,
+ * deleting elements for which the block returns a +false+ value.
*
- * a = [:foo, 'bar', 2, :bam]
- * a.select! {|element| element.to_s.start_with?('b') } # => ["bar", :bam]
+ * The array may not be changed instantly every time the block is called.
*
- * Returns +nil+ if no elements were removed.
+ * If changes were made, it will return +self+, otherwise it returns +nil+.
*
- * Returns a new \Enumerator if no block given:
+ * See also Array#keep_if
*
- * a = [:foo, 'bar', 2, :bam]
- * a.select! # => #<Enumerator: [:foo, "bar", 2, :bam]:select!>
+ * If no block is given, an Enumerator is returned instead.
*
*/
@@ -4008,20 +2957,18 @@ rb_ary_select_bang(VALUE ary)
/*
* call-seq:
- * array.keep_if {|element| ... } -> self
- * array.keep_if -> new_enumeration
+ * ary.keep_if { |item| block } -> ary
+ * ary.keep_if -> Enumerator
*
- * Retains those elements for which the block returns a truthy value;
- * deletes all other elements; returns +self+:
+ * Deletes every element of +self+ for which the given block evaluates to
+ * +false+.
*
- * a = [:foo, 'bar', 2, :bam]
- * a.keep_if {|element| element.to_s.start_with?('b') } # => ["bar", :bam]
+ * See also Array#select!
*
- * Returns a new \Enumerator if no block given:
- *
- * a = [:foo, 'bar', 2, :bam]
- * a.keep_if # => #<Enumerator: [:foo, "bar", 2, :bam]:keep_if>
+ * If no block is given, an Enumerator is returned instead.
*
+ * a = %w{ a b c d e f }
+ * a.keep_if { |v| v =~ /[aeiou]/ } #=> ["a", "e"]
*/
static VALUE
@@ -4037,48 +2984,32 @@ ary_resize_smaller(VALUE ary, long len)
{
rb_ary_modify(ary);
if (RARRAY_LEN(ary) > len) {
- ARY_SET_LEN(ary, len);
- if (len * 2 < ARY_CAPA(ary) &&
- ARY_CAPA(ary) > ARY_DEFAULT_SIZE) {
- ary_resize_capa(ary, len * 2);
- }
+ ARY_SET_LEN(ary, len);
+ if (len * 2 < ARY_CAPA(ary) &&
+ ARY_CAPA(ary) > ARY_DEFAULT_SIZE) {
+ ary_resize_capa(ary, len * 2);
+ }
}
}
/*
* call-seq:
- * array.delete(obj) -> deleted_object
- * array.delete(obj) {|nosuch| ... } -> deleted_object or block_return
- *
- * Removes zero or more elements from +self+.
- *
- * When no block is given,
- * removes from +self+ each element +ele+ such that <tt>ele == obj</tt>;
- * returns the last deleted element:
- *
- * s1 = 'bar'; s2 = 'bar'
- * a = [:foo, s1, 2, s2]
- * a.delete('bar') # => "bar"
- * a # => [:foo, 2]
- *
- * Returns +nil+ if no elements removed.
- *
- * When a block is given,
- * removes from +self+ each element +ele+ such that <tt>ele == obj</tt>.
+ * ary.delete(obj) -> item or nil
+ * ary.delete(obj) { block } -> item or result of block
*
- * If any such elements are found, ignores the block
- * and returns the last deleted element:
+ * Deletes all items from +self+ that are equal to +obj+.
*
- * s1 = 'bar'; s2 = 'bar'
- * a = [:foo, s1, 2, s2]
- * deleted_obj = a.delete('bar') {|obj| fail 'Cannot happen' }
- * a # => [:foo, 2]
+ * Returns the last deleted item, or +nil+ if no matching item is found.
*
- * If no such elements are found, returns the block's return value:
- *
- * a = [:foo, 'bar', 2]
- * a.delete(:nosuch) {|obj| "#{obj} not found" } # => "nosuch not found"
+ * If the optional code block is given, the result of the block is returned if
+ * the item is not found. (To remove +nil+ elements and get an informative
+ * return value, use Array#compact!)
*
+ * a = [ "a", "b", "b", "b", "c" ]
+ * a.delete("b") #=> "b"
+ * a #=> ["a", "c"]
+ * a.delete("z") #=> nil
+ * a.delete("z") { "not found" } #=> "not found"
*/
VALUE
@@ -4088,27 +3019,26 @@ rb_ary_delete(VALUE ary, VALUE item)
long i1, i2;
for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
- VALUE e = RARRAY_AREF(ary, i1);
+ VALUE e = RARRAY_AREF(ary, i1);
- if (rb_equal(e, item)) {
- v = e;
- continue;
- }
- if (i1 != i2) {
- rb_ary_store(ary, i2, e);
- }
- i2++;
+ if (rb_equal(e, item)) {
+ v = e;
+ continue;
+ }
+ if (i1 != i2) {
+ rb_ary_store(ary, i2, e);
+ }
+ i2++;
}
if (RARRAY_LEN(ary) == i2) {
- if (rb_block_given_p()) {
- return rb_yield(item);
- }
- return Qnil;
+ if (rb_block_given_p()) {
+ return rb_yield(item);
+ }
+ return Qnil;
}
ary_resize_smaller(ary, i2);
- ary_verify(ary);
return v;
}
@@ -4118,18 +3048,18 @@ rb_ary_delete_same(VALUE ary, VALUE item)
long i1, i2;
for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
- VALUE e = RARRAY_AREF(ary, i1);
+ VALUE e = RARRAY_AREF(ary, i1);
- if (e == item) {
- continue;
- }
- if (i1 != i2) {
- rb_ary_store(ary, i2, e);
- }
- i2++;
+ if (e == item) {
+ continue;
+ }
+ if (i1 != i2) {
+ rb_ary_store(ary, i2, e);
+ }
+ i2++;
}
if (RARRAY_LEN(ary) == i2) {
- return;
+ return;
}
ary_resize_smaller(ary, i2);
@@ -4143,41 +3073,33 @@ rb_ary_delete_at(VALUE ary, long pos)
if (pos >= len) return Qnil;
if (pos < 0) {
- pos += len;
- if (pos < 0) return Qnil;
+ pos += len;
+ if (pos < 0) return Qnil;
}
rb_ary_modify(ary);
del = RARRAY_AREF(ary, pos);
- RARRAY_PTR_USE_TRANSIENT(ary, ptr, {
- MEMMOVE(ptr+pos, ptr+pos+1, VALUE, len-pos-1);
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr+pos, ptr+pos+1, VALUE, len-pos-1);
});
ARY_INCREASE_LEN(ary, -1);
- ary_verify(ary);
+
return del;
}
/*
* call-seq:
- * array.delete_at(index) -> deleted_object or nil
- *
- * Deletes an element from +self+, per the given \Integer +index+.
- *
- * When +index+ is non-negative, deletes the element at offset +index+:
- *
- * a = [:foo, 'bar', 2]
- * a.delete_at(1) # => "bar"
- * a # => [:foo, 2]
- *
- * If index is too large, returns +nil+.
+ * ary.delete_at(index) -> obj or nil
*
- * When +index+ is negative, counts backward from the end of the array:
+ * Deletes the element at the specified +index+, returning that element, or
+ * +nil+ if the +index+ is out of range.
*
- * a = [:foo, 'bar', 2]
- * a.delete_at(-2) # => "bar"
- * a # => [:foo, 2]
+ * See also Array#slice!
*
- * If +index+ is too small (far from zero), returns nil.
+ * a = ["ant", "bat", "cat", "dog"]
+ * a.delete_at(2) #=> "cat"
+ * a #=> ["ant", "bat", "dog"]
+ * a.delete_at(99) #=> nil
*/
static VALUE
@@ -4186,133 +3108,73 @@ rb_ary_delete_at_m(VALUE ary, VALUE pos)
return rb_ary_delete_at(ary, NUM2LONG(pos));
}
-static VALUE
-ary_slice_bang_by_rb_ary_splice(VALUE ary, long pos, long len)
-{
- const long orig_len = RARRAY_LEN(ary);
-
- if (len < 0) {
- return Qnil;
- }
- else if (pos < -orig_len) {
- return Qnil;
- }
- else if (pos < 0) {
- pos += orig_len;
- }
- else if (orig_len < pos) {
- return Qnil;
- }
- if (orig_len < pos + len) {
- len = orig_len - pos;
- }
- if (len == 0) {
- return rb_ary_new2(0);
- }
- else {
- VALUE arg2 = rb_ary_new4(len, RARRAY_CONST_PTR_TRANSIENT(ary)+pos);
- rb_ary_splice(ary, pos, len, 0, 0);
- return arg2;
- }
-}
-
/*
* call-seq:
- * array.slice!(n) -> object or nil
- * array.slice!(start, length) -> new_array or nil
- * array.slice!(range) -> new_array or nil
- *
- * Removes and returns elements from +self+.
- *
- * When the only argument is an \Integer +n+,
- * removes and returns the _nth_ element in +self+:
- *
- * a = [:foo, 'bar', 2]
- * a.slice!(1) # => "bar"
- * a # => [:foo, 2]
- *
- * If +n+ is negative, counts backwards from the end of +self+:
- *
- * a = [:foo, 'bar', 2]
- * a.slice!(-1) # => 2
- * a # => [:foo, "bar"]
- *
- * If +n+ is out of range, returns +nil+.
- *
- * When the only arguments are Integers +start+ and +length+,
- * removes +length+ elements from +self+ beginning at offset +start+;
- * returns the deleted objects in a new \Array:
- *
- * a = [:foo, 'bar', 2]
- * a.slice!(0, 2) # => [:foo, "bar"]
- * a # => [2]
- *
- * If <tt>start + length</tt> exceeds the array size,
- * removes and returns all elements from offset +start+ to the end:
- *
- * a = [:foo, 'bar', 2]
- * a.slice!(1, 50) # => ["bar", 2]
- * a # => [:foo]
- *
- * If <tt>start == a.size</tt> and +length+ is non-negative,
- * returns a new empty \Array.
- *
- * If +length+ is negative, returns +nil+.
- *
- * When the only argument is a \Range object +range+,
- * treats <tt>range.min</tt> as +start+ above and <tt>range.size</tt> as +length+ above:
- *
- * a = [:foo, 'bar', 2]
- * a.slice!(1..2) # => ["bar", 2]
- * a # => [:foo]
- *
- * If <tt>range.start == a.size</tt>, returns a new empty \Array.
- *
- * If <tt>range.start</tt> is larger than the array size, returns +nil+.
- *
- * If <tt>range.end</tt> is negative, counts backwards from the end of the array:
- *
- * a = [:foo, 'bar', 2]
- * a.slice!(0..-2) # => [:foo, "bar"]
- * a # => [2]
- *
- * If <tt>range.start</tt> is negative,
- * calculates the start index backwards from the end of the array:
- *
- * a = [:foo, 'bar', 2]
- * a.slice!(-2..2) # => ["bar", 2]
- * a # => [:foo]
- *
+ * ary.slice!(index) -> obj or nil
+ * ary.slice!(start, length) -> new_ary or nil
+ * ary.slice!(range) -> new_ary or nil
+ *
+ * Deletes the element(s) given by an +index+ (optionally up to +length+
+ * elements) or by a +range+.
+ *
+ * Returns the deleted object (or objects), or +nil+ if the +index+ is out of
+ * range.
+ *
+ * a = [ "a", "b", "c" ]
+ * a.slice!(1) #=> "b"
+ * a #=> ["a", "c"]
+ * a.slice!(-1) #=> "c"
+ * a #=> ["a"]
+ * a.slice!(100) #=> nil
+ * a #=> ["a"]
*/
static VALUE
rb_ary_slice_bang(int argc, VALUE *argv, VALUE ary)
{
- VALUE arg1;
- long pos, len;
+ VALUE arg1, arg2;
+ long pos, len, orig_len;
rb_ary_modify_check(ary);
- rb_check_arity(argc, 1, 2);
- arg1 = argv[0];
-
if (argc == 2) {
- pos = NUM2LONG(argv[0]);
- len = NUM2LONG(argv[1]);
- return ary_slice_bang_by_rb_ary_splice(ary, pos, len);
+ pos = NUM2LONG(argv[0]);
+ len = NUM2LONG(argv[1]);
+ delete_pos_len:
+ if (len < 0) return Qnil;
+ orig_len = RARRAY_LEN(ary);
+ if (pos < 0) {
+ pos += orig_len;
+ if (pos < 0) return Qnil;
+ }
+ else if (orig_len < pos) return Qnil;
+ if (orig_len < pos + len) {
+ len = orig_len - pos;
+ }
+ if (len == 0) return rb_ary_new2(0);
+ arg2 = rb_ary_new4(len, RARRAY_CONST_PTR(ary)+pos);
+ RBASIC_SET_CLASS(arg2, rb_obj_class(ary));
+ rb_ary_splice(ary, pos, len, 0, 0);
+ return arg2;
+ }
+
+ if (argc != 1) {
+ /* error report */
+ rb_scan_args(argc, argv, "11", NULL, NULL);
}
+ arg1 = argv[0];
if (!FIXNUM_P(arg1)) {
- switch (rb_range_beg_len(arg1, &pos, &len, RARRAY_LEN(ary), 0)) {
- case Qtrue:
- /* valid range */
- return ary_slice_bang_by_rb_ary_splice(ary, pos, len);
- case Qnil:
- /* invalid range */
- return Qnil;
- default:
- /* not a range */
- break;
- }
+ switch (rb_range_beg_len(arg1, &pos, &len, RARRAY_LEN(ary), 0)) {
+ case Qtrue:
+ /* valid range */
+ goto delete_pos_len;
+ case Qnil:
+ /* invalid range */
+ return Qnil;
+ default:
+ /* not a range */
+ break;
+ }
}
return rb_ary_delete_at(ary, NUM2LONG(arg1));
@@ -4324,11 +3186,10 @@ ary_reject(VALUE orig, VALUE result)
long i;
for (i = 0; i < RARRAY_LEN(orig); i++) {
- VALUE v = RARRAY_AREF(orig, i);
-
- if (!RTEST(rb_yield(v))) {
- rb_ary_push(result, v);
- }
+ VALUE v = RARRAY_AREF(orig, i);
+ if (!RTEST(rb_yield(v))) {
+ rb_ary_push(result, v);
+ }
}
return result;
}
@@ -4341,12 +3202,12 @@ reject_bang_i(VALUE a)
long i1, i2;
for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); arg->len[0] = ++i1) {
- VALUE v = RARRAY_AREF(ary, i1);
- if (RTEST(rb_yield(v))) continue;
- if (i1 != i2) {
- rb_ary_store(ary, i2, v);
- }
- arg->len[1] = ++i2;
+ VALUE v = RARRAY_AREF(ary, i1);
+ if (RTEST(rb_yield(v))) continue;
+ if (i1 != i2) {
+ rb_ary_store(ary, i2, v);
+ }
+ arg->len[1] = ++i2;
}
return (i1 == i2) ? Qnil : ary;
}
@@ -4355,6 +3216,7 @@ static VALUE
ary_reject_bang(VALUE ary)
{
struct select_bang_arg args;
+
rb_ary_modify_check(ary);
args.ary = ary;
args.len[0] = args.len[1] = 0;
@@ -4363,23 +3225,17 @@ ary_reject_bang(VALUE ary)
/*
* call-seq:
- * array.reject! {|element| ... } -> self or nil
- * array.reject! -> new_enumerator
- *
- * Removes each element for which the block returns a truthy value.
+ * ary.reject! { |item| block } -> ary or nil
+ * ary.reject! -> Enumerator
*
- * Returns +self+ if any elements removed:
+ * Deletes every element of +self+ for which the block evaluates to +true+,
+ * if no changes were made returns +nil+.
*
- * a = [:foo, 'bar', 2, 'bat']
- * a.reject! {|element| element.to_s.start_with?('b') } # => [:foo, 2]
+ * The array may not be changed instantly every time the block is called.
*
- * Returns +nil+ if no elements removed.
- *
- * Returns a new \Enumerator if no block given:
- *
- * a = [:foo, 'bar', 2]
- * a.reject! # => #<Enumerator: [:foo, "bar", 2]:reject!>
+ * See also Enumerable#reject and Array#delete_if.
*
+ * If no block is given, an Enumerator is returned instead.
*/
static VALUE
@@ -4392,21 +3248,15 @@ rb_ary_reject_bang(VALUE ary)
/*
* call-seq:
- * array.reject {|element| ... } -> new_array
- * array.reject -> new_enumerator
- *
- * Returns a new \Array whose elements are all those from +self+
- * for which the block returns +false+ or +nil+:
+ * ary.reject {|item| block } -> new_ary
+ * ary.reject -> Enumerator
*
- * a = [:foo, 'bar', 2, 'bat']
- * a1 = a.reject {|element| element.to_s.start_with?('b') }
- * a1 # => [:foo, 2]
+ * Returns a new array containing the items in +self+ for which the given
+ * block is not +true+. The ordering of non-rejected elements is maintained.
*
- * Returns a new \Enumerator if no block given:
- *
- * a = [:foo, 'bar', 2]
- * a.reject # => #<Enumerator: [:foo, "bar", 2]:reject>
+ * See also Array#delete_if
*
+ * If no block is given, an Enumerator is returned instead.
*/
static VALUE
@@ -4422,26 +3272,25 @@ rb_ary_reject(VALUE ary)
/*
* call-seq:
- * array.delete_if {|element| ... } -> self
- * array.delete_if -> Enumerator
+ * ary.delete_if { |item| block } -> ary
+ * ary.delete_if -> Enumerator
*
- * Removes each element in +self+ for which the block returns a truthy value;
- * returns +self+:
+ * Deletes every element of +self+ for which block evaluates to +true+.
*
- * a = [:foo, 'bar', 2, 'bat']
- * a.delete_if {|element| element.to_s.start_with?('b') } # => [:foo, 2]
+ * The array is changed instantly every time the block is called, not after
+ * the iteration is over.
*
- * Returns a new \Enumerator if no block given:
+ * See also Array#reject!
*
- * a = [:foo, 'bar', 2]
- * a.delete_if # => #<Enumerator: [:foo, "bar", 2]:delete_if>
+ * If no block is given, an Enumerator is returned instead.
*
-3 */
+ * scores = [ 97, 42, 75 ]
+ * scores.delete_if {|score| score < 80 } #=> [97]
+ */
static VALUE
rb_ary_delete_if(VALUE ary)
{
- ary_verify(ary);
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
ary_reject_bang(ary);
return ary;
@@ -4451,9 +3300,9 @@ static VALUE
take_i(RB_BLOCK_CALL_FUNC_ARGLIST(val, cbarg))
{
VALUE *args = (VALUE *)cbarg;
+ if (args[1]-- == 0) rb_iter_break();
if (argc > 1) val = rb_ary_new4(argc, argv);
rb_ary_push(args[0], val);
- if (--args[1] == 0) rb_iter_break();
return Qnil;
}
@@ -4463,71 +3312,38 @@ take_items(VALUE obj, long n)
VALUE result = rb_check_array_type(obj);
VALUE args[2];
- if (n == 0) return result;
if (!NIL_P(result)) return rb_ary_subseq(result, 0, n);
result = rb_ary_new2(n);
args[0] = result; args[1] = (VALUE)n;
- if (UNDEF_P(rb_check_block_call(obj, idEach, 0, 0, take_i, (VALUE)args)))
- rb_raise(rb_eTypeError, "wrong argument type %"PRIsVALUE" (must respond to :each)",
- rb_obj_class(obj));
+ if (rb_check_block_call(obj, idEach, 0, 0, take_i, (VALUE)args) == Qundef)
+ rb_raise(rb_eTypeError, "wrong argument type %"PRIsVALUE" (must respond to :each)",
+ rb_obj_class(obj));
return result;
}
/*
* call-seq:
- * array.zip(*other_arrays) -> new_array
- * array.zip(*other_arrays) {|other_array| ... } -> nil
- *
- * When no block given, returns a new \Array +new_array+ of size <tt>self.size</tt>
- * whose elements are Arrays.
- *
- * Each nested array <tt>new_array[n]</tt> is of size <tt>other_arrays.size+1</tt>,
- * and contains:
- *
- * - The _nth_ element of +self+.
- * - The _nth_ element of each of the +other_arrays+.
- *
- * If all +other_arrays+ and +self+ are the same size:
+ * ary.zip(arg, ...) -> new_ary
+ * ary.zip(arg, ...) { |arr| block } -> nil
*
- * a = [:a0, :a1, :a2, :a3]
- * b = [:b0, :b1, :b2, :b3]
- * c = [:c0, :c1, :c2, :c3]
- * d = a.zip(b, c)
- * d # => [[:a0, :b0, :c0], [:a1, :b1, :c1], [:a2, :b2, :c2], [:a3, :b3, :c3]]
+ * Converts any arguments to arrays, then merges elements of +self+ with
+ * corresponding elements from each argument.
*
- * If any array in +other_arrays+ is smaller than +self+,
- * fills to <tt>self.size</tt> with +nil+:
+ * This generates a sequence of <code>ary.size</code> _n_-element arrays,
+ * where _n_ is one more than the count of arguments.
*
- * a = [:a0, :a1, :a2, :a3]
- * b = [:b0, :b1, :b2]
- * c = [:c0, :c1]
- * d = a.zip(b, c)
- * d # => [[:a0, :b0, :c0], [:a1, :b1, :c1], [:a2, :b2, nil], [:a3, nil, nil]]
+ * If the size of any argument is less than the size of the initial array,
+ * +nil+ values are supplied.
*
- * If any array in +other_arrays+ is larger than +self+,
- * its trailing elements are ignored:
- *
- * a = [:a0, :a1, :a2, :a3]
- * b = [:b0, :b1, :b2, :b3, :b4]
- * c = [:c0, :c1, :c2, :c3, :c4, :c5]
- * d = a.zip(b, c)
- * d # => [[:a0, :b0, :c0], [:a1, :b1, :c1], [:a2, :b2, :c2], [:a3, :b3, :c3]]
- *
- * When a block is given, calls the block with each of the sub-arrays (formed as above); returns +nil+:
- *
- * a = [:a0, :a1, :a2, :a3]
- * b = [:b0, :b1, :b2, :b3]
- * c = [:c0, :c1, :c2, :c3]
- * a.zip(b, c) {|sub_array| p sub_array} # => nil
- *
- * Output:
- *
- * [:a0, :b0, :c0]
- * [:a1, :b1, :c1]
- * [:a2, :b2, :c2]
- * [:a3, :b3, :c3]
+ * If a block is given, it is invoked for each output +array+, otherwise an
+ * array of arrays is returned.
*
+ * a = [ 4, 5, 6 ]
+ * b = [ 7, 8, 9 ]
+ * [1, 2, 3].zip(a, b) #=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
+ * [1, 2].zip(a, b) #=> [[1, 4, 7], [2, 5, 8]]
+ * a.zip([1, 2], [8]) #=> [[4, 1, 8], [5, 2, nil], [6, nil, nil]]
*/
static VALUE
@@ -4538,51 +3354,51 @@ rb_ary_zip(int argc, VALUE *argv, VALUE ary)
VALUE result = Qnil;
for (i=0; i<argc; i++) {
- argv[i] = take_items(argv[i], len);
+ argv[i] = take_items(argv[i], len);
}
if (rb_block_given_p()) {
- int arity = rb_block_arity();
-
- if (arity > 1) {
- VALUE work, *tmp;
-
- tmp = ALLOCV_N(VALUE, work, argc+1);
-
- for (i=0; i<RARRAY_LEN(ary); i++) {
- tmp[0] = RARRAY_AREF(ary, i);
- for (j=0; j<argc; j++) {
- tmp[j+1] = rb_ary_elt(argv[j], i);
- }
- rb_yield_values2(argc+1, tmp);
- }
-
- if (work) ALLOCV_END(work);
- }
- else {
- for (i=0; i<RARRAY_LEN(ary); i++) {
- VALUE tmp = rb_ary_new2(argc+1);
-
- rb_ary_push(tmp, RARRAY_AREF(ary, i));
- for (j=0; j<argc; j++) {
- rb_ary_push(tmp, rb_ary_elt(argv[j], i));
- }
- rb_yield(tmp);
- }
- }
+ int arity = rb_block_arity();
+
+ if (arity > 1) {
+ VALUE work, *tmp;
+
+ tmp = ALLOCV_N(VALUE, work, argc+1);
+
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ tmp[0] = RARRAY_AREF(ary, i);
+ for (j=0; j<argc; j++) {
+ tmp[j+1] = rb_ary_elt(argv[j], i);
+ }
+ rb_yield_values2(argc+1, tmp);
+ }
+
+ if (work) ALLOCV_END(work);
+ }
+ else {
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ VALUE tmp = rb_ary_new2(argc+1);
+
+ rb_ary_push(tmp, RARRAY_AREF(ary, i));
+ for (j=0; j<argc; j++) {
+ rb_ary_push(tmp, rb_ary_elt(argv[j], i));
+ }
+ rb_yield(tmp);
+ }
+ }
}
else {
- result = rb_ary_new_capa(len);
+ result = rb_ary_new_capa(len);
- for (i=0; i<len; i++) {
- VALUE tmp = rb_ary_new_capa(argc+1);
+ for (i=0; i<len; i++) {
+ VALUE tmp = rb_ary_new_capa(argc+1);
- rb_ary_push(tmp, RARRAY_AREF(ary, i));
- for (j=0; j<argc; j++) {
- rb_ary_push(tmp, rb_ary_elt(argv[j], i));
- }
- rb_ary_push(result, tmp);
- }
+ rb_ary_push(tmp, RARRAY_AREF(ary, i));
+ for (j=0; j<argc; j++) {
+ rb_ary_push(tmp, rb_ary_elt(argv[j], i));
+ }
+ rb_ary_push(result, tmp);
+ }
}
return result;
@@ -4590,14 +3406,15 @@ rb_ary_zip(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
- * array.transpose -> new_array
+ * ary.transpose -> new_ary
*
- * Transposes the rows and columns in an \Array of Arrays;
- * the nested Arrays must all be the same size:
+ * Assumes that +self+ is an array of arrays and transposes the rows and
+ * columns.
*
- * a = [[:a0, :a1], [:b0, :b1], [:c0, :c1]]
- * a.transpose # => [[:a0, :b0, :c0], [:a1, :b1, :c1]]
+ * a = [[1,2], [3,4], [5,6]]
+ * a.transpose #=> [[1, 3, 5], [2, 4, 6]]
*
+ * If the length of the subarrays don't match, an IndexError is raised.
*/
static VALUE
@@ -4609,34 +3426,36 @@ rb_ary_transpose(VALUE ary)
alen = RARRAY_LEN(ary);
if (alen == 0) return rb_ary_dup(ary);
for (i=0; i<alen; i++) {
- tmp = to_ary(rb_ary_elt(ary, i));
- if (elen < 0) { /* first element */
- elen = RARRAY_LEN(tmp);
- result = rb_ary_new2(elen);
- for (j=0; j<elen; j++) {
- rb_ary_store(result, j, rb_ary_new2(alen));
- }
- }
- else if (elen != RARRAY_LEN(tmp)) {
- rb_raise(rb_eIndexError, "element size differs (%ld should be %ld)",
- RARRAY_LEN(tmp), elen);
- }
- for (j=0; j<elen; j++) {
- rb_ary_store(rb_ary_elt(result, j), i, rb_ary_elt(tmp, j));
- }
+ tmp = to_ary(rb_ary_elt(ary, i));
+ if (elen < 0) { /* first element */
+ elen = RARRAY_LEN(tmp);
+ result = rb_ary_new2(elen);
+ for (j=0; j<elen; j++) {
+ rb_ary_store(result, j, rb_ary_new2(alen));
+ }
+ }
+ else if (elen != RARRAY_LEN(tmp)) {
+ rb_raise(rb_eIndexError, "element size differs (%ld should be %ld)",
+ RARRAY_LEN(tmp), elen);
+ }
+ for (j=0; j<elen; j++) {
+ rb_ary_store(rb_ary_elt(result, j), i, rb_ary_elt(tmp, j));
+ }
}
return result;
}
/*
* call-seq:
- * array.replace(other_array) -> self
+ * ary.replace(other_ary) -> ary
+ * ary.initialize_copy(other_ary) -> ary
*
- * Replaces the content of +self+ with the content of +other_array+; returns +self+:
- *
- * a = [:foo, 'bar', 2]
- * a.replace(['foo', :bar, 3]) # => ["foo", :bar, 3]
+ * Replaces the contents of +self+ with the contents of +other_ary+,
+ * truncating or expanding if necessary.
*
+ * a = [ "a", "b", "c", "d", "e" ]
+ * a.replace([ "x", "y", "z" ]) #=> ["x", "y", "z"]
+ * a #=> ["x", "y", "z"]
*/
VALUE
@@ -4646,268 +3465,94 @@ rb_ary_replace(VALUE copy, VALUE orig)
orig = to_ary(orig);
if (copy == orig) return copy;
- rb_ary_reset(copy);
-
- /* orig has enough space to embed the contents of orig. */
- if (RARRAY_LEN(orig) <= ary_embed_capa(copy)) {
- assert(ARY_EMBED_P(copy));
- ary_memcpy(copy, 0, RARRAY_LEN(orig), RARRAY_CONST_PTR_TRANSIENT(orig));
- ARY_SET_EMBED_LEN(copy, RARRAY_LEN(orig));
- }
- /* orig is embedded but copy does not have enough space to embed the
- * contents of orig. */
- else if (ARY_EMBED_P(orig)) {
- long len = ARY_EMBED_LEN(orig);
- VALUE *ptr = ary_heap_alloc(copy, len);
-
- FL_UNSET_EMBED(copy);
- ARY_SET_PTR(copy, ptr);
- ARY_SET_LEN(copy, len);
- ARY_SET_CAPA(copy, len);
+ if (RARRAY_LEN(orig) <= RARRAY_EMBED_LEN_MAX) {
+ VALUE shared = 0;
- // No allocation and exception expected that could leave `copy` in a
- // bad state from the edits above.
- ary_memcpy(copy, 0, len, RARRAY_CONST_PTR_TRANSIENT(orig));
+ if (ARY_OWNS_HEAP_P(copy)) {
+ RARRAY_PTR_USE(copy, ptr, ruby_sized_xfree(ptr, ARY_HEAP_SIZE(copy)));
+ }
+ else if (ARY_SHARED_P(copy)) {
+ shared = ARY_SHARED(copy);
+ FL_UNSET_SHARED(copy);
+ }
+ FL_SET_EMBED(copy);
+ ary_memcpy(copy, 0, RARRAY_LEN(orig), RARRAY_CONST_PTR(orig));
+ if (shared) {
+ rb_ary_decrement_share(shared);
+ }
+ ARY_SET_LEN(copy, RARRAY_LEN(orig));
}
- /* Otherwise, orig is on heap and copy does not have enough space to embed
- * the contents of orig. */
else {
- VALUE shared_root = ary_make_shared(orig);
+ VALUE shared = ary_make_shared(orig);
+ if (ARY_OWNS_HEAP_P(copy)) {
+ RARRAY_PTR_USE(copy, ptr, ruby_sized_xfree(ptr, ARY_HEAP_SIZE(copy)));
+ }
+ else {
+ rb_ary_unshare_safe(copy);
+ }
FL_UNSET_EMBED(copy);
- ARY_SET_PTR(copy, ARY_HEAP_PTR(orig));
- ARY_SET_LEN(copy, ARY_HEAP_LEN(orig));
- rb_ary_set_shared(copy, shared_root);
+ ARY_SET_PTR(copy, RARRAY_CONST_PTR(orig));
+ ARY_SET_LEN(copy, RARRAY_LEN(orig));
+ rb_ary_set_shared(copy, shared);
}
- ary_verify(copy);
return copy;
}
/*
* call-seq:
- * array.clear -> self
+ * ary.clear -> ary
*
- * Removes all elements from +self+:
- *
- * a = [:foo, 'bar', 2]
- * a.clear # => []
+ * Removes all elements from +self+.
*
+ * a = [ "a", "b", "c", "d", "e" ]
+ * a.clear #=> [ ]
*/
VALUE
rb_ary_clear(VALUE ary)
{
rb_ary_modify_check(ary);
+ ARY_SET_LEN(ary, 0);
if (ARY_SHARED_P(ary)) {
- if (!ARY_EMBED_P(ary)) {
- rb_ary_unshare(ary);
- FL_SET_EMBED(ary);
- ARY_SET_EMBED_LEN(ary, 0);
- }
+ if (!ARY_EMBED_P(ary)) {
+ rb_ary_unshare(ary);
+ FL_SET_EMBED(ary);
+ }
}
- else {
- ARY_SET_LEN(ary, 0);
- if (ARY_DEFAULT_SIZE * 2 < ARY_CAPA(ary)) {
- ary_resize_capa(ary, ARY_DEFAULT_SIZE * 2);
- }
+ else if (ARY_DEFAULT_SIZE * 2 < ARY_CAPA(ary)) {
+ ary_resize_capa(ary, ARY_DEFAULT_SIZE * 2);
}
- ary_verify(ary);
return ary;
}
/*
* call-seq:
- * array.fill(obj) -> self
- * array.fill(obj, start) -> self
- * array.fill(obj, start, length) -> self
- * array.fill(obj, range) -> self
- * array.fill {|index| ... } -> self
- * array.fill(start) {|index| ... } -> self
- * array.fill(start, length) {|index| ... } -> self
- * array.fill(range) {|index| ... } -> self
- *
- * Replaces specified elements in +self+ with specified objects; returns +self+.
- *
- * With argument +obj+ and no block given, replaces all elements with that one object:
- *
- * a = ['a', 'b', 'c', 'd']
- * a # => ["a", "b", "c", "d"]
- * a.fill(:X) # => [:X, :X, :X, :X]
- *
- * With arguments +obj+ and \Integer +start+, and no block given,
- * replaces elements based on the given start.
- *
- * If +start+ is in range (<tt>0 <= start < array.size</tt>),
- * replaces all elements from offset +start+ through the end:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, 2) # => ["a", "b", :X, :X]
- *
- * If +start+ is too large (<tt>start >= array.size</tt>), does nothing:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, 4) # => ["a", "b", "c", "d"]
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, 5) # => ["a", "b", "c", "d"]
- *
- * If +start+ is negative, counts from the end (starting index is <tt>start + array.size</tt>):
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, -2) # => ["a", "b", :X, :X]
- *
- * If +start+ is too small (less than and far from zero), replaces all elements:
+ * ary.fill(obj) -> ary
+ * ary.fill(obj, start [, length]) -> ary
+ * ary.fill(obj, range ) -> ary
+ * ary.fill { |index| block } -> ary
+ * ary.fill(start [, length] ) { |index| block } -> ary
+ * ary.fill(range) { |index| block } -> ary
*
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, -6) # => [:X, :X, :X, :X]
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, -50) # => [:X, :X, :X, :X]
+ * The first three forms set the selected elements of +self+ (which
+ * may be the entire array) to +obj+.
*
- * With arguments +obj+, \Integer +start+, and \Integer +length+, and no block given,
- * replaces elements based on the given +start+ and +length+.
+ * A +start+ of +nil+ is equivalent to zero.
*
- * If +start+ is in range, replaces +length+ elements beginning at offset +start+:
+ * A +length+ of +nil+ is equivalent to the length of the array.
*
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, 1, 1) # => ["a", :X, "c", "d"]
+ * The last three forms fill the array with the value of the given block,
+ * which is passed the absolute index of each element to be filled.
*
- * If +start+ is negative, counts from the end:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, -2, 1) # => ["a", "b", :X, "d"]
- *
- * If +start+ is large (<tt>start >= array.size</tt>), extends +self+ with +nil+:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, 5, 0) # => ["a", "b", "c", "d", nil]
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, 5, 2) # => ["a", "b", "c", "d", nil, :X, :X]
- *
- * If +length+ is zero or negative, replaces no elements:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, 1, 0) # => ["a", "b", "c", "d"]
- * a.fill(:X, 1, -1) # => ["a", "b", "c", "d"]
- *
- * With arguments +obj+ and \Range +range+, and no block given,
- * replaces elements based on the given range.
- *
- * If the range is positive and ascending (<tt>0 < range.begin <= range.end</tt>),
- * replaces elements from <tt>range.begin</tt> to <tt>range.end</tt>:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, (1..1)) # => ["a", :X, "c", "d"]
- *
- * If <tt>range.first</tt> is negative, replaces no elements:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, (-1..1)) # => ["a", "b", "c", "d"]
- *
- * If <tt>range.last</tt> is negative, counts from the end:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, (0..-2)) # => [:X, :X, :X, "d"]
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, (1..-2)) # => ["a", :X, :X, "d"]
- *
- * If <tt>range.last</tt> and <tt>range.last</tt> are both negative,
- * both count from the end of the array:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, (-1..-1)) # => ["a", "b", "c", :X]
- * a = ['a', 'b', 'c', 'd']
- * a.fill(:X, (-2..-2)) # => ["a", "b", :X, "d"]
- *
- * With no arguments and a block given, calls the block with each index;
- * replaces the corresponding element with the block's return value:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "new_3"]
- *
- * With argument +start+ and a block given, calls the block with each index
- * from offset +start+ to the end; replaces the corresponding element
- * with the block's return value.
- *
- * If start is in range (<tt>0 <= start < array.size</tt>),
- * replaces from offset +start+ to the end:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(1) { |index| "new_#{index}" } # => ["a", "new_1", "new_2", "new_3"]
- *
- * If +start+ is too large(<tt>start >= array.size</tt>), does nothing:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(4) { |index| fail 'Cannot happen' } # => ["a", "b", "c", "d"]
- * a = ['a', 'b', 'c', 'd']
- * a.fill(4) { |index| fail 'Cannot happen' } # => ["a", "b", "c", "d"]
- *
- * If +start+ is negative, counts from the end:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(-2) { |index| "new_#{index}" } # => ["a", "b", "new_2", "new_3"]
- *
- * If start is too small (<tt>start <= -array.size</tt>, replaces all elements:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(-6) { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "new_3"]
- * a = ['a', 'b', 'c', 'd']
- * a.fill(-50) { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "new_3"]
- *
- * With arguments +start+ and +length+, and a block given,
- * calls the block for each index specified by start length;
- * replaces the corresponding element with the block's return value.
- *
- * If +start+ is in range, replaces +length+ elements beginning at offset +start+:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(1, 1) { |index| "new_#{index}" } # => ["a", "new_1", "c", "d"]
- *
- * If start is negative, counts from the end:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(-2, 1) { |index| "new_#{index}" } # => ["a", "b", "new_2", "d"]
- *
- * If +start+ is large (<tt>start >= array.size</tt>), extends +self+ with +nil+:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(5, 0) { |index| "new_#{index}" } # => ["a", "b", "c", "d", nil]
- * a = ['a', 'b', 'c', 'd']
- * a.fill(5, 2) { |index| "new_#{index}" } # => ["a", "b", "c", "d", nil, "new_5", "new_6"]
- *
- * If +length+ is zero or less, replaces no elements:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(1, 0) { |index| "new_#{index}" } # => ["a", "b", "c", "d"]
- * a.fill(1, -1) { |index| "new_#{index}" } # => ["a", "b", "c", "d"]
- *
- * With arguments +obj+ and +range+, and a block given,
- * calls the block with each index in the given range;
- * replaces the corresponding element with the block's return value.
- *
- * If the range is positive and ascending (<tt>range 0 < range.begin <= range.end</tt>,
- * replaces elements from <tt>range.begin</tt> to <tt>range.end</tt>:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(1..1) { |index| "new_#{index}" } # => ["a", "new_1", "c", "d"]
- *
- * If +range.first+ is negative, does nothing:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(-1..1) { |index| fail 'Cannot happen' } # => ["a", "b", "c", "d"]
- *
- * If <tt>range.last</tt> is negative, counts from the end:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(0..-2) { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "d"]
- * a = ['a', 'b', 'c', 'd']
- * a.fill(1..-2) { |index| "new_#{index}" } # => ["a", "new_1", "new_2", "d"]
- *
- * If <tt>range.first</tt> and <tt>range.last</tt> are both negative,
- * both count from the end:
- *
- * a = ['a', 'b', 'c', 'd']
- * a.fill(-1..-1) { |index| "new_#{index}" } # => ["a", "b", "c", "new_3"]
- * a = ['a', 'b', 'c', 'd']
- * a.fill(-2..-2) { |index| "new_#{index}" } # => ["a", "b", "new_2", "d"]
+ * Negative values of +start+ count from the end of the array, where +-1+ is
+ * the last element.
*
+ * a = [ "a", "b", "c", "d" ]
+ * a.fill("x") #=> ["x", "x", "x", "x"]
+ * a.fill("z", 2, 2) #=> ["x", "x", "z", "z"]
+ * a.fill("y", 0..1) #=> ["y", "y", "z", "z"]
+ * a.fill { |i| i*i } #=> [0, 1, 4, 9]
+ * a.fill(-2) { |i| i*i*i } #=> [0, 1, 8, 27]
*/
static VALUE
@@ -4917,74 +3562,84 @@ rb_ary_fill(int argc, VALUE *argv, VALUE ary)
long beg = 0, end = 0, len = 0;
if (rb_block_given_p()) {
- rb_scan_args(argc, argv, "02", &arg1, &arg2);
- argc += 1; /* hackish */
+ rb_scan_args(argc, argv, "02", &arg1, &arg2);
+ argc += 1; /* hackish */
}
else {
- rb_scan_args(argc, argv, "12", &item, &arg1, &arg2);
+ rb_scan_args(argc, argv, "12", &item, &arg1, &arg2);
}
switch (argc) {
case 1:
- beg = 0;
- len = RARRAY_LEN(ary);
- break;
+ beg = 0;
+ len = RARRAY_LEN(ary);
+ break;
case 2:
- if (rb_range_beg_len(arg1, &beg, &len, RARRAY_LEN(ary), 1)) {
- break;
- }
- /* fall through */
+ if (rb_range_beg_len(arg1, &beg, &len, RARRAY_LEN(ary), 1)) {
+ break;
+ }
+ /* fall through */
case 3:
- beg = NIL_P(arg1) ? 0 : NUM2LONG(arg1);
- if (beg < 0) {
- beg = RARRAY_LEN(ary) + beg;
- if (beg < 0) beg = 0;
- }
- len = NIL_P(arg2) ? RARRAY_LEN(ary) - beg : NUM2LONG(arg2);
- break;
+ beg = NIL_P(arg1) ? 0 : NUM2LONG(arg1);
+ if (beg < 0) {
+ beg = RARRAY_LEN(ary) + beg;
+ if (beg < 0) beg = 0;
+ }
+ len = NIL_P(arg2) ? RARRAY_LEN(ary) - beg : NUM2LONG(arg2);
+ break;
}
rb_ary_modify(ary);
if (len < 0) {
return ary;
}
if (beg >= ARY_MAX_SIZE || len > ARY_MAX_SIZE - beg) {
- rb_raise(rb_eArgError, "argument too big");
+ rb_raise(rb_eArgError, "argument too big");
}
end = beg + len;
if (RARRAY_LEN(ary) < end) {
- if (end >= ARY_CAPA(ary)) {
- ary_resize_capa(ary, end);
- }
- ary_mem_clear(ary, RARRAY_LEN(ary), end - RARRAY_LEN(ary));
- ARY_SET_LEN(ary, end);
+ if (end >= ARY_CAPA(ary)) {
+ ary_resize_capa(ary, end);
+ }
+ ary_mem_clear(ary, RARRAY_LEN(ary), end - RARRAY_LEN(ary));
+ ARY_SET_LEN(ary, end);
}
- if (UNDEF_P(item)) {
- VALUE v;
- long i;
+ if (item == Qundef) {
+ VALUE v;
+ long i;
- for (i=beg; i<end; i++) {
- v = rb_yield(LONG2NUM(i));
- if (i>=RARRAY_LEN(ary)) break;
- ARY_SET(ary, i, v);
- }
+ for (i=beg; i<end; i++) {
+ v = rb_yield(LONG2NUM(i));
+ if (i>=RARRAY_LEN(ary)) break;
+ ARY_SET(ary, i, v);
+ }
}
else {
- ary_memfill(ary, beg, len, item);
+ ary_memfill(ary, beg, len, item);
}
return ary;
}
/*
* call-seq:
- * array + other_array -> new_array
+ * ary + other_ary -> new_ary
*
- * Returns a new \Array containing all elements of +array+
- * followed by all elements of +other_array+:
+ * Concatenation --- Returns a new array built by concatenating the
+ * two arrays together to produce a third array.
*
- * a = [0, 1] + [2, 3]
- * a # => [0, 1, 2, 3]
+ * [ 1, 2, 3 ] + [ 4, 5 ] #=> [ 1, 2, 3, 4, 5 ]
+ * a = [ "a", "b", "c" ]
+ * c = a + [ "d", "e", "f" ]
+ * c #=> [ "a", "b", "c", "d", "e", "f" ]
+ * a #=> [ "a", "b", "c" ]
*
- * Related: #concat.
+ * Note that
+ * x += y
+ * is the same as
+ * x = x + y
+ * This means that it produces a new array. As a consequence,
+ * repeated use of <code>+=</code> on arrays can be quite inefficient.
+ *
+ * See also Array#concat.
*/
VALUE
@@ -4999,8 +3654,8 @@ rb_ary_plus(VALUE x, VALUE y)
len = xlen + ylen;
z = rb_ary_new2(len);
- ary_memcpy(z, 0, xlen, RARRAY_CONST_PTR_TRANSIENT(x));
- ary_memcpy(z, xlen, ylen, RARRAY_CONST_PTR_TRANSIENT(y));
+ ary_memcpy(z, 0, xlen, RARRAY_CONST_PTR(x));
+ ary_memcpy(z, xlen, ylen, RARRAY_CONST_PTR(y));
ARY_SET_LEN(z, len);
return z;
}
@@ -5010,20 +3665,29 @@ ary_append(VALUE x, VALUE y)
{
long n = RARRAY_LEN(y);
if (n > 0) {
- rb_ary_splice(x, RARRAY_LEN(x), 0, RARRAY_CONST_PTR_TRANSIENT(y), n);
+ rb_ary_splice(x, RARRAY_LEN(x), 0, RARRAY_CONST_PTR(y), n);
}
- RB_GC_GUARD(y);
return x;
}
/*
* call-seq:
- * array.concat(*other_arrays) -> self
+ * ary.concat(other_ary1, other_ary2,...) -> ary
+ *
+ * Appends the elements of +other_ary+s to +self+.
+ *
+ * [ "a", "b" ].concat( ["c", "d"] ) #=> [ "a", "b", "c", "d" ]
+ * [ "a" ].concat( ["b"], ["c", "d"] ) #=> [ "a", "b", "c", "d" ]
+ * [ "a" ].concat #=> [ "a" ]
*
- * Adds to +array+ all elements from each \Array in +other_arrays+; returns +self+:
+ * a = [ 1, 2, 3 ]
+ * a.concat( [ 4, 5 ] )
+ * a #=> [ 1, 2, 3, 4, 5 ]
+ *
+ * a = [ 1, 2 ]
+ * a.concat(a, a) #=> [1, 2, 1, 2, 1, 2]
*
- * a = [0, 1]
- * a.concat([2, 3], [4, 5]) # => [0, 1, 2, 3, 4, 5]
+ * See also Array#+.
*/
static VALUE
@@ -5032,18 +3696,17 @@ rb_ary_concat_multi(int argc, VALUE *argv, VALUE ary)
rb_ary_modify_check(ary);
if (argc == 1) {
- rb_ary_concat(ary, argv[0]);
+ rb_ary_concat(ary, argv[0]);
}
else if (argc > 1) {
- int i;
- VALUE args = rb_ary_hidden_new(argc);
- for (i = 0; i < argc; i++) {
- rb_ary_concat(args, argv[i]);
- }
- ary_append(ary, args);
+ int i;
+ VALUE args = rb_ary_tmp_new(argc);
+ for (i = 0; i < argc; i++) {
+ rb_ary_concat(args, argv[i]);
+ }
+ ary_append(ary, args);
}
- ary_verify(ary);
return ary;
}
@@ -5055,19 +3718,18 @@ rb_ary_concat(VALUE x, VALUE y)
/*
* call-seq:
- * array * n -> new_array
- * array * string_separator -> new_string
+ * ary * int -> new_ary
+ * ary * str -> new_string
*
- * When non-negative argument \Integer +n+ is given,
- * returns a new \Array built by concatenating the +n+ copies of +self+:
+ * Repetition --- With a String argument, equivalent to
+ * <code>ary.join(str)</code>.
*
- * a = ['x', 'y']
- * a * 3 # => ["x", "y", "x", "y", "x", "y"]
+ * Otherwise, returns a new array built by concatenating the +int+ copies of
+ * +self+.
*
- * When \String argument +string_separator+ is given,
- * equivalent to <tt>array.join(string_separator)</tt>:
*
- * [0, [0, 1], {foo: 0}] * ', ' # => "0, 0, 1, {:foo=>0}"
+ * [ 1, 2, 3 ] * 3 #=> [ 1, 2, 3, 1, 2, 3, 1, 2, 3 ]
+ * [ 1, 2, 3 ] * "," #=> "1,2,3"
*
*/
@@ -5080,54 +3742,61 @@ rb_ary_times(VALUE ary, VALUE times)
tmp = rb_check_string_type(times);
if (!NIL_P(tmp)) {
- return rb_ary_join(ary, tmp);
+ return rb_ary_join(ary, tmp);
}
len = NUM2LONG(times);
if (len == 0) {
- ary2 = ary_new(rb_cArray, 0);
- goto out;
+ ary2 = ary_new(rb_obj_class(ary), 0);
+ goto out;
}
if (len < 0) {
- rb_raise(rb_eArgError, "negative argument");
+ rb_raise(rb_eArgError, "negative argument");
}
if (ARY_MAX_SIZE/len < RARRAY_LEN(ary)) {
- rb_raise(rb_eArgError, "argument too big");
+ rb_raise(rb_eArgError, "argument too big");
}
len *= RARRAY_LEN(ary);
- ary2 = ary_new(rb_cArray, len);
+ ary2 = ary_new(rb_obj_class(ary), len);
ARY_SET_LEN(ary2, len);
- ptr = RARRAY_CONST_PTR_TRANSIENT(ary);
+ ptr = RARRAY_CONST_PTR(ary);
t = RARRAY_LEN(ary);
if (0 < t) {
- ary_memcpy(ary2, 0, t, ptr);
- while (t <= len/2) {
- ary_memcpy(ary2, t, t, RARRAY_CONST_PTR_TRANSIENT(ary2));
+ ary_memcpy(ary2, 0, t, ptr);
+ while (t <= len/2) {
+ ary_memcpy(ary2, t, t, RARRAY_CONST_PTR(ary2));
t *= 2;
}
if (t < len) {
- ary_memcpy(ary2, t, len-t, RARRAY_CONST_PTR_TRANSIENT(ary2));
+ ary_memcpy(ary2, t, len-t, RARRAY_CONST_PTR(ary2));
}
}
out:
+ OBJ_INFECT(ary2, ary);
+
return ary2;
}
/*
* call-seq:
- * array.assoc(obj) -> found_array or nil
+ * ary.assoc(obj) -> element_ary or nil
*
- * Returns the first element in +self+ that is an \Array
- * whose first element <tt>==</tt> +obj+:
+ * Searches through an array whose elements are also arrays comparing +obj+
+ * with the first element of each contained array using <code>obj.==</code>.
*
- * a = [{foo: 0}, [2, 4], [4, 5, 6], [4, 5]]
- * a.assoc(4) # => [4, 5, 6]
+ * Returns the first contained array that matches (that is, the first
+ * associated array), or +nil+ if no match is found.
*
- * Returns +nil+ if no such element is found.
+ * See also Array#rassoc
*
- * Related: #rassoc.
+ * s1 = [ "colors", "red", "blue", "green" ]
+ * s2 = [ "letters", "a", "b", "c" ]
+ * s3 = "foo"
+ * a = [ s1, s2, s3 ]
+ * a.assoc("letters") #=> [ "letters", "a", "b", "c" ]
+ * a.assoc("foo") #=> nil
*/
VALUE
@@ -5137,27 +3806,30 @@ rb_ary_assoc(VALUE ary, VALUE key)
VALUE v;
for (i = 0; i < RARRAY_LEN(ary); ++i) {
- v = rb_check_array_type(RARRAY_AREF(ary, i));
- if (!NIL_P(v) && RARRAY_LEN(v) > 0 &&
- rb_equal(RARRAY_AREF(v, 0), key))
- return v;
+ v = rb_check_array_type(RARRAY_AREF(ary, i));
+ if (!NIL_P(v) && RARRAY_LEN(v) > 0 &&
+ rb_equal(RARRAY_AREF(v, 0), key))
+ return v;
}
return Qnil;
}
/*
* call-seq:
- * array.rassoc(obj) -> found_array or nil
+ * ary.rassoc(obj) -> element_ary or nil
+ *
+ * Searches through the array whose elements are also arrays.
*
- * Returns the first element in +self+ that is an \Array
- * whose second element <tt>==</tt> +obj+:
+ * Compares +obj+ with the second element of each contained array using
+ * <code>obj.==</code>.
*
- * a = [{foo: 0}, [2, 4], [4, 5, 6], [4, 5]]
- * a.rassoc(4) # => [2, 4]
+ * Returns the first contained array that matches +obj+.
*
- * Returns +nil+ if no such element is found.
+ * See also Array#assoc.
*
- * Related: #assoc.
+ * a = [ [ 1, "one"], [2, "two"], [3, "three"], ["ii", "two"] ]
+ * a.rassoc("two") #=> [2, "two"]
+ * a.rassoc("four") #=> nil
*/
VALUE
@@ -5167,11 +3839,11 @@ rb_ary_rassoc(VALUE ary, VALUE value)
VALUE v;
for (i = 0; i < RARRAY_LEN(ary); ++i) {
- v = RARRAY_AREF(ary, i);
- if (RB_TYPE_P(v, T_ARRAY) &&
- RARRAY_LEN(v) > 1 &&
- rb_equal(RARRAY_AREF(v, 1), value))
- return v;
+ v = RARRAY_AREF(ary, i);
+ if (RB_TYPE_P(v, T_ARRAY) &&
+ RARRAY_LEN(v) > 1 &&
+ rb_equal(RARRAY_AREF(v, 1), value))
+ return v;
}
return Qnil;
}
@@ -5184,48 +3856,43 @@ recursive_equal(VALUE ary1, VALUE ary2, int recur)
if (recur) return Qtrue; /* Subtle! */
- /* rb_equal() can evacuate ptrs */
p1 = RARRAY_CONST_PTR(ary1);
p2 = RARRAY_CONST_PTR(ary2);
len1 = RARRAY_LEN(ary1);
for (i = 0; i < len1; i++) {
- if (*p1 != *p2) {
- if (rb_equal(*p1, *p2)) {
- len1 = RARRAY_LEN(ary1);
- if (len1 != RARRAY_LEN(ary2))
- return Qfalse;
- if (len1 < i)
- return Qtrue;
- p1 = RARRAY_CONST_PTR(ary1) + i;
- p2 = RARRAY_CONST_PTR(ary2) + i;
- }
- else {
- return Qfalse;
- }
- }
- p1++;
- p2++;
+ if (*p1 != *p2) {
+ if (rb_equal(*p1, *p2)) {
+ len1 = RARRAY_LEN(ary1);
+ if (len1 != RARRAY_LEN(ary2))
+ return Qfalse;
+ if (len1 < i)
+ return Qtrue;
+ p1 = RARRAY_CONST_PTR(ary1) + i;
+ p2 = RARRAY_CONST_PTR(ary2) + i;
+ }
+ else {
+ return Qfalse;
+ }
+ }
+ p1++;
+ p2++;
}
return Qtrue;
}
/*
* call-seq:
- * array == other_array -> true or false
- *
- * Returns +true+ if both <tt>array.size == other_array.size</tt>
- * and for each index +i+ in +array+, <tt>array[i] == other_array[i]</tt>:
+ * ary == other_ary -> bool
*
- * a0 = [:foo, 'bar', 2]
- * a1 = [:foo, 'bar', 2.0]
- * a1 == a0 # => true
- * [] == [] # => true
+ * Equality --- Two arrays are equal if they contain the same number of
+ * elements and if each element is equal to (according to Object#==) the
+ * corresponding element in +other_ary+.
*
- * Otherwise, returns +false+.
+ * [ "a", "c" ] == [ "a", "c", 7 ] #=> false
+ * [ "a", "c", 7 ] == [ "a", "c", 7 ] #=> true
+ * [ "a", "c", 7 ] == [ "a", "d", "f" ] #=> false
*
- * This method is different from method Array#eql?,
- * which compares elements using <tt>Object#eql?</tt>.
*/
static VALUE
@@ -5233,13 +3900,13 @@ rb_ary_equal(VALUE ary1, VALUE ary2)
{
if (ary1 == ary2) return Qtrue;
if (!RB_TYPE_P(ary2, T_ARRAY)) {
- if (!rb_respond_to(ary2, idTo_ary)) {
- return Qfalse;
- }
- return rb_equal(ary2, ary1);
+ if (!rb_respond_to(ary2, idTo_ary)) {
+ return Qfalse;
+ }
+ return rb_equal(ary2, ary1);
}
if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return Qfalse;
- if (RARRAY_CONST_PTR_TRANSIENT(ary1) == RARRAY_CONST_PTR_TRANSIENT(ary2)) return Qtrue;
+ if (RARRAY_CONST_PTR(ary1) == RARRAY_CONST_PTR(ary2)) return Qtrue;
return rb_exec_recursive_paired(recursive_equal, ary1, ary2, ary2);
}
@@ -5250,27 +3917,18 @@ recursive_eql(VALUE ary1, VALUE ary2, int recur)
if (recur) return Qtrue; /* Subtle! */
for (i=0; i<RARRAY_LEN(ary1); i++) {
- if (!rb_eql(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
- return Qfalse;
+ if (!rb_eql(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
+ return Qfalse;
}
return Qtrue;
}
/*
* call-seq:
- * array.eql? other_array -> true or false
- *
- * Returns +true+ if +self+ and +other_array+ are the same size,
- * and if, for each index +i+ in +self+, <tt>self[i].eql? other_array[i]</tt>:
- *
- * a0 = [:foo, 'bar', 2]
- * a1 = [:foo, 'bar', 2]
- * a1.eql?(a0) # => true
+ * ary.eql?(other) -> true or false
*
- * Otherwise, returns +false+.
- *
- * This method is different from method Array#==,
- * which compares using method <tt>Object#==</tt>.
+ * Returns +true+ if +self+ and +other+ are the same object,
+ * or are both arrays with the same content (according to Object#eql?).
*/
static VALUE
@@ -5279,55 +3937,49 @@ rb_ary_eql(VALUE ary1, VALUE ary2)
if (ary1 == ary2) return Qtrue;
if (!RB_TYPE_P(ary2, T_ARRAY)) return Qfalse;
if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return Qfalse;
- if (RARRAY_CONST_PTR_TRANSIENT(ary1) == RARRAY_CONST_PTR_TRANSIENT(ary2)) return Qtrue;
+ if (RARRAY_CONST_PTR(ary1) == RARRAY_CONST_PTR(ary2)) return Qtrue;
return rb_exec_recursive_paired(recursive_eql, ary1, ary2, ary2);
}
-VALUE
-rb_ary_hash_values(long len, const VALUE *elements)
-{
- long i;
- st_index_t h;
- VALUE n;
-
- h = rb_hash_start(len);
- h = rb_hash_uint(h, (st_index_t)rb_ary_hash_values);
- for (i=0; i<len; i++) {
- n = rb_hash(elements[i]);
- h = rb_hash_uint(h, NUM2LONG(n));
- }
- h = rb_hash_end(h);
- return ST2FIX(h);
-}
-
/*
* call-seq:
- * array.hash -> integer
+ * ary.hash -> integer
*
- * Returns the integer hash value for +self+.
+ * Compute a hash-code for this array.
*
- * Two arrays with the same content will have the same hash code (and will compare using eql?):
- *
- * [0, 1, 2].hash == [0, 1, 2].hash # => true
- * [0, 1, 2].hash == [0, 1, 3].hash # => false
+ * Two arrays with the same content will have the same hash code (and will
+ * compare using #eql?).
*
+ * See also Object#hash.
*/
static VALUE
rb_ary_hash(VALUE ary)
{
- return rb_ary_hash_values(RARRAY_LEN(ary), RARRAY_CONST_PTR(ary));
+ long i;
+ st_index_t h;
+ VALUE n;
+
+ h = rb_hash_start(RARRAY_LEN(ary));
+ h = rb_hash_uint(h, (st_index_t)rb_ary_hash);
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ n = rb_hash(RARRAY_AREF(ary, i));
+ h = rb_hash_uint(h, NUM2LONG(n));
+ }
+ h = rb_hash_end(h);
+ return ST2FIX(h);
}
/*
* call-seq:
- * array.include?(obj) -> true or false
+ * ary.include?(object) -> true or false
*
- * Returns +true+ if for some index +i+ in +self+, <tt>obj == self[i]</tt>;
- * otherwise +false+:
+ * Returns +true+ if the given +object+ is present in +self+ (that is, if any
+ * element <code>==</code> +object+), otherwise returns +false+.
*
- * [0, 1, 2].include?(2) # => true
- * [0, 1, 2].include?(3) # => false
+ * a = [ "a", "b", "c" ]
+ * a.include?("b") #=> true
+ * a.include?("z") #=> false
*/
VALUE
@@ -5337,10 +3989,10 @@ rb_ary_includes(VALUE ary, VALUE item)
VALUE e;
for (i=0; i<RARRAY_LEN(ary); i++) {
- e = RARRAY_AREF(ary, i);
- if (rb_equal(e, item)) {
- return Qtrue;
- }
+ e = RARRAY_AREF(ary, i);
+ if (rb_equal(e, item)) {
+ return Qtrue;
+ }
}
return Qfalse;
}
@@ -5352,10 +4004,10 @@ rb_ary_includes_by_eql(VALUE ary, VALUE item)
VALUE e;
for (i=0; i<RARRAY_LEN(ary); i++) {
- e = RARRAY_AREF(ary, i);
- if (rb_eql(item, e)) {
- return Qtrue;
- }
+ e = RARRAY_AREF(ary, i);
+ if (rb_eql(item, e)) {
+ return Qtrue;
+ }
}
return Qfalse;
}
@@ -5368,46 +4020,45 @@ recursive_cmp(VALUE ary1, VALUE ary2, int recur)
if (recur) return Qundef; /* Subtle! */
len = RARRAY_LEN(ary1);
if (len > RARRAY_LEN(ary2)) {
- len = RARRAY_LEN(ary2);
+ len = RARRAY_LEN(ary2);
}
for (i=0; i<len; i++) {
- VALUE e1 = rb_ary_elt(ary1, i), e2 = rb_ary_elt(ary2, i);
- VALUE v = rb_funcallv(e1, id_cmp, 1, &e2);
- if (v != INT2FIX(0)) {
- return v;
- }
+ VALUE e1 = rb_ary_elt(ary1, i), e2 = rb_ary_elt(ary2, i);
+ VALUE v = rb_funcallv(e1, id_cmp, 1, &e2);
+ if (v != INT2FIX(0)) {
+ return v;
+ }
}
return Qundef;
}
/*
* call-seq:
- * array <=> other_array -> -1, 0, or 1
- *
- * Returns -1, 0, or 1 as +self+ is less than, equal to, or greater than +other_array+.
- * For each index +i+ in +self+, evaluates <tt>result = self[i] <=> other_array[i]</tt>.
- *
- * Returns -1 if any result is -1:
+ * ary <=> other_ary -> -1, 0, +1 or nil
*
- * [0, 1, 2] <=> [0, 1, 3] # => -1
+ * Comparison --- Returns an integer (+-1+, +0+, or <code>+1</code>) if this
+ * array is less than, equal to, or greater than +other_ary+.
*
- * Returns 1 if any result is 1:
+ * Each object in each array is compared (using the <=> operator).
*
- * [0, 1, 2] <=> [0, 1, 1] # => 1
+ * Arrays are compared in an "element-wise" manner; the first element of +ary+
+ * is compared with the first one of +other_ary+ using the <=> operator, then
+ * each of the second elements, etc...
+ * As soon as the result of any such comparison is non zero (i.e. the two
+ * corresponding elements are not equal), that result is returned for the
+ * whole array comparison.
*
- * When all results are zero:
+ * If all the elements are equal, then the result is based on a comparison of
+ * the array lengths. Thus, two arrays are "equal" according to Array#<=> if,
+ * and only if, they have the same length and the value of each element is
+ * equal to the value of the corresponding element in the other array.
*
- * - Returns -1 if +array+ is smaller than +other_array+:
+ * +nil+ is returned if the +other_ary+ is not an array or if the comparison
+ * of two elements returned +nil+.
*
- * [0, 1, 2] <=> [0, 1, 2, 3] # => -1
- *
- * - Returns 1 if +array+ is larger than +other_array+:
- *
- * [0, 1, 2] <=> [0, 1] # => 1
- *
- * - Returns 0 if +array+ and +other_array+ are the same size:
- *
- * [0, 1, 2] <=> [0, 1, 2] # => 0
+ * [ "a", "a", "c" ] <=> [ "a", "b", "c" ] #=> -1
+ * [ 1, 2, 3, 4, 5, 6 ] <=> [ 1, 2 ] #=> +1
+ * [ 1, 2 ] <=> [ 1, :two ] #=> nil
*
*/
@@ -5421,7 +4072,7 @@ rb_ary_cmp(VALUE ary1, VALUE ary2)
if (NIL_P(ary2)) return Qnil;
if (ary1 == ary2) return INT2FIX(0);
v = rb_exec_recursive_paired(recursive_cmp, ary1, ary2, ary2);
- if (!UNDEF_P(v)) return v;
+ if (v != Qundef) return v;
len = RARRAY_LEN(ary1) - RARRAY_LEN(ary2);
if (len == 0) return INT2FIX(0);
if (len > 0) return INT2FIX(1);
@@ -5434,8 +4085,8 @@ ary_add_hash(VALUE hash, VALUE ary)
long i;
for (i=0; i<RARRAY_LEN(ary); i++) {
- VALUE elt = RARRAY_AREF(ary, i);
- rb_hash_add_new_element(hash, elt, elt);
+ VALUE elt = RARRAY_AREF(ary, i);
+ rb_hash_add_new_element(hash, elt, elt);
}
return hash;
}
@@ -5463,8 +4114,8 @@ ary_add_hash_by(VALUE hash, VALUE ary)
long i;
for (i = 0; i < RARRAY_LEN(ary); ++i) {
- VALUE v = rb_ary_elt(ary, i), k = rb_yield(v);
- rb_hash_add_new_element(hash, k, v);
+ VALUE v = rb_ary_elt(ary, i), k = rb_yield(v);
+ rb_hash_add_new_element(hash, k, v);
}
return hash;
}
@@ -5476,23 +4127,35 @@ ary_make_hash_by(VALUE ary)
return ary_add_hash_by(hash, ary);
}
+static inline void
+ary_recycle_hash(VALUE hash)
+{
+ assert(RBASIC_CLASS(hash) == 0);
+ if (RHASH(hash)->ntbl) {
+ st_table *tbl = RHASH(hash)->ntbl;
+ st_free_table(tbl);
+ }
+ rb_gc_force_recycle(hash);
+}
+
/*
* call-seq:
- * array - other_array -> new_array
+ * ary - other_ary -> new_ary
+ *
+ * Array Difference
*
- * Returns a new \Array containing only those elements from +array+
- * that are not found in \Array +other_array+;
- * items are compared using <tt>eql?</tt>;
- * the order from +array+ is preserved:
+ * Returns a new array that is a copy of the original array, removing any
+ * items that also appear in +other_ary+. The order is preserved from the
+ * original array.
*
- * [0, 1, 1, 2, 1, 1, 3, 1, 1] - [1] # => [0, 2, 3]
- * [0, 1, 2, 3] - [3, 0] # => [1, 2]
- * [0, 1, 2] - [4] # => [0, 1, 2]
+ * It compares elements using their #hash and #eql? methods for efficiency.
*
- * Related: Array#difference.
+ * [ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ] #=> [ 3, 3, 5 ]
+ *
+ * If you need set-like behavior, see the library class Set.
*/
-VALUE
+static VALUE
rb_ary_diff(VALUE ary1, VALUE ary2)
{
VALUE ary3;
@@ -5500,97 +4163,39 @@ rb_ary_diff(VALUE ary1, VALUE ary2)
long i;
ary2 = to_ary(ary2);
- if (RARRAY_LEN(ary2) == 0) { return ary_make_shared_copy(ary1); }
ary3 = rb_ary_new();
if (RARRAY_LEN(ary1) <= SMALL_ARRAY_LEN || RARRAY_LEN(ary2) <= SMALL_ARRAY_LEN) {
- for (i=0; i<RARRAY_LEN(ary1); i++) {
- VALUE elt = rb_ary_elt(ary1, i);
- if (rb_ary_includes_by_eql(ary2, elt)) continue;
- rb_ary_push(ary3, elt);
- }
- return ary3;
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ VALUE elt = rb_ary_elt(ary1, i);
+ if (rb_ary_includes_by_eql(ary2, elt)) continue;
+ rb_ary_push(ary3, elt);
+ }
+ return ary3;
}
hash = ary_make_hash(ary2);
for (i=0; i<RARRAY_LEN(ary1); i++) {
- if (rb_hash_stlike_lookup(hash, RARRAY_AREF(ary1, i), NULL)) continue;
- rb_ary_push(ary3, rb_ary_elt(ary1, i));
+ if (st_lookup(rb_hash_tbl_raw(hash), RARRAY_AREF(ary1, i), 0)) continue;
+ rb_ary_push(ary3, rb_ary_elt(ary1, i));
}
-
+ ary_recycle_hash(hash);
return ary3;
}
/*
* call-seq:
- * array.difference(*other_arrays) -> new_array
- *
- * Returns a new \Array containing only those elements from +self+
- * that are not found in any of the Arrays +other_arrays+;
- * items are compared using <tt>eql?</tt>; order from +self+ is preserved:
- *
- * [0, 1, 1, 2, 1, 1, 3, 1, 1].difference([1]) # => [0, 2, 3]
- * [0, 1, 2, 3].difference([3, 0], [1, 3]) # => [2]
- * [0, 1, 2].difference([4]) # => [0, 1, 2]
- *
- * Returns a copy of +self+ if no arguments given.
- *
- * Related: Array#-.
- */
-
-static VALUE
-rb_ary_difference_multi(int argc, VALUE *argv, VALUE ary)
-{
- VALUE ary_diff;
- long i, length;
- volatile VALUE t0;
- bool *is_hash = ALLOCV_N(bool, t0, argc);
- ary_diff = rb_ary_new();
- length = RARRAY_LEN(ary);
-
- for (i = 0; i < argc; i++) {
- argv[i] = to_ary(argv[i]);
- is_hash[i] = (length > SMALL_ARRAY_LEN && RARRAY_LEN(argv[i]) > SMALL_ARRAY_LEN);
- if (is_hash[i]) argv[i] = ary_make_hash(argv[i]);
- }
-
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- int j;
- VALUE elt = rb_ary_elt(ary, i);
- for (j = 0; j < argc; j++) {
- if (is_hash[j]) {
- if (rb_hash_stlike_lookup(argv[j], RARRAY_AREF(ary, i), NULL))
- break;
- }
- else {
- if (rb_ary_includes_by_eql(argv[j], elt)) break;
- }
- }
- if (j == argc) rb_ary_push(ary_diff, elt);
- }
-
- ALLOCV_END(t0);
-
- return ary_diff;
-}
-
-
-/*
- * call-seq:
- * array & other_array -> new_array
- *
- * Returns a new \Array containing each element found in both +array+ and \Array +other_array+;
- * duplicates are omitted; items are compared using <tt>eql?</tt>
- * (items must also implement +hash+ correctly):
+ * ary & other_ary -> new_ary
*
- * [0, 1, 2, 3] & [1, 2] # => [1, 2]
- * [0, 1, 0, 1] & [0, 1] # => [0, 1]
+ * Set Intersection --- Returns a new array containing unique elements common to the
+ * two arrays. The order is preserved from the original array.
*
- * Preserves order from +array+:
+ * It compares elements using their #hash and #eql? methods for efficiency.
*
- * [0, 1, 2] & [3, 2, 1, 0] # => [0, 1, 2]
+ * [ 1, 1, 3, 5 ] & [ 3, 2, 1 ] #=> [ 1, 3 ]
+ * [ 'a', 'b', 'b', 'z' ] & [ 'a', 'b', 'c' ] #=> [ 'a', 'b' ]
*
- * Related: Array#intersection.
+ * See also Array#uniq.
*/
@@ -5598,70 +4203,39 @@ static VALUE
rb_ary_and(VALUE ary1, VALUE ary2)
{
VALUE hash, ary3, v;
+ st_table *table;
st_data_t vv;
long i;
ary2 = to_ary(ary2);
ary3 = rb_ary_new();
- if (RARRAY_LEN(ary1) == 0 || RARRAY_LEN(ary2) == 0) return ary3;
+ if (RARRAY_LEN(ary2) == 0) return ary3;
if (RARRAY_LEN(ary1) <= SMALL_ARRAY_LEN && RARRAY_LEN(ary2) <= SMALL_ARRAY_LEN) {
- for (i=0; i<RARRAY_LEN(ary1); i++) {
- v = RARRAY_AREF(ary1, i);
- if (!rb_ary_includes_by_eql(ary2, v)) continue;
- if (rb_ary_includes_by_eql(ary3, v)) continue;
- rb_ary_push(ary3, v);
- }
- return ary3;
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ v = RARRAY_AREF(ary1, i);
+ if (!rb_ary_includes_by_eql(ary2, v)) continue;
+ if (rb_ary_includes_by_eql(ary3, v)) continue;
+ rb_ary_push(ary3, v);
+ }
+ return ary3;
}
hash = ary_make_hash(ary2);
+ table = rb_hash_tbl_raw(hash);
for (i=0; i<RARRAY_LEN(ary1); i++) {
- v = RARRAY_AREF(ary1, i);
- vv = (st_data_t)v;
- if (rb_hash_stlike_delete(hash, &vv, 0)) {
- rb_ary_push(ary3, v);
- }
+ v = RARRAY_AREF(ary1, i);
+ vv = (st_data_t)v;
+ if (st_delete(table, &vv, 0)) {
+ rb_ary_push(ary3, v);
+ }
}
+ ary_recycle_hash(hash);
return ary3;
}
-/*
- * call-seq:
- * array.intersection(*other_arrays) -> new_array
- *
- * Returns a new \Array containing each element found both in +self+
- * and in all of the given Arrays +other_arrays+;
- * duplicates are omitted; items are compared using <tt>eql?</tt>
- * (items must also implement +hash+ correctly):
- *
- * [0, 1, 2, 3].intersection([0, 1, 2], [0, 1, 3]) # => [0, 1]
- * [0, 0, 1, 1, 2, 3].intersection([0, 1, 2], [0, 1, 3]) # => [0, 1]
- *
- * Preserves order from +self+:
- *
- * [0, 1, 2].intersection([2, 1, 0]) # => [0, 1, 2]
- *
- * Returns a copy of +self+ if no arguments given.
- *
- * Related: Array#&.
- */
-
-static VALUE
-rb_ary_intersection_multi(int argc, VALUE *argv, VALUE ary)
-{
- VALUE result = rb_ary_dup(ary);
- int i;
-
- for (i = 0; i < argc; i++) {
- result = rb_ary_and(result, argv[i]);
- }
-
- return result;
-}
-
static int
ary_hash_orset(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
{
@@ -5670,532 +4244,165 @@ ary_hash_orset(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
return ST_CONTINUE;
}
-static void
-rb_ary_union(VALUE ary_union, VALUE ary)
-{
- long i;
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- VALUE elt = rb_ary_elt(ary, i);
- if (rb_ary_includes_by_eql(ary_union, elt)) continue;
- rb_ary_push(ary_union, elt);
- }
-}
-
-static void
-rb_ary_union_hash(VALUE hash, VALUE ary2)
-{
- long i;
- for (i = 0; i < RARRAY_LEN(ary2); i++) {
- VALUE elt = RARRAY_AREF(ary2, i);
- if (!rb_hash_stlike_update(hash, (st_data_t)elt, ary_hash_orset, (st_data_t)elt)) {
- RB_OBJ_WRITTEN(hash, Qundef, elt);
- }
- }
-}
-
/*
* call-seq:
- * array | other_array -> new_array
+ * ary | other_ary -> new_ary
+ *
+ * Set Union --- Returns a new array by joining +ary+ with +other_ary+,
+ * excluding any duplicates and preserving the order from the given arrays.
*
- * Returns the union of +array+ and \Array +other_array+;
- * duplicates are removed; order is preserved;
- * items are compared using <tt>eql?</tt>:
+ * It compares elements using their #hash and #eql? methods for efficiency.
*
- * [0, 1] | [2, 3] # => [0, 1, 2, 3]
- * [0, 1, 1] | [2, 2, 3] # => [0, 1, 2, 3]
- * [0, 1, 2] | [3, 2, 1, 0] # => [0, 1, 2, 3]
+ * [ "a", "b", "c" ] | [ "c", "d", "a" ] #=> [ "a", "b", "c", "d" ]
+ * [ "c", "d", "a" ] | [ "a", "b", "c" ] #=> [ "c", "d", "a", "b" ]
*
- * Related: Array#union.
+ * See also Array#uniq.
*/
static VALUE
rb_ary_or(VALUE ary1, VALUE ary2)
{
- VALUE hash;
+ VALUE hash, ary3;
+ long i;
ary2 = to_ary(ary2);
if (RARRAY_LEN(ary1) + RARRAY_LEN(ary2) <= SMALL_ARRAY_LEN) {
- VALUE ary3 = rb_ary_new();
- rb_ary_union(ary3, ary1);
- rb_ary_union(ary3, ary2);
- return ary3;
+ ary3 = rb_ary_new();
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ VALUE elt = rb_ary_elt(ary1, i);
+ if (rb_ary_includes_by_eql(ary3, elt)) continue;
+ rb_ary_push(ary3, elt);
+ }
+ for (i=0; i<RARRAY_LEN(ary2); i++) {
+ VALUE elt = rb_ary_elt(ary2, i);
+ if (rb_ary_includes_by_eql(ary3, elt)) continue;
+ rb_ary_push(ary3, elt);
+ }
+ return ary3;
}
hash = ary_make_hash(ary1);
- rb_ary_union_hash(hash, ary2);
-
- return rb_hash_values(hash);
-}
-
-/*
- * call-seq:
- * array.union(*other_arrays) -> new_array
- *
- * Returns a new \Array that is the union of +self+ and all given Arrays +other_arrays+;
- * duplicates are removed; order is preserved; items are compared using <tt>eql?</tt>:
- *
- * [0, 1, 2, 3].union([4, 5], [6, 7]) # => [0, 1, 2, 3, 4, 5, 6, 7]
- * [0, 1, 1].union([2, 1], [3, 1]) # => [0, 1, 2, 3]
- * [0, 1, 2, 3].union([3, 2], [1, 0]) # => [0, 1, 2, 3]
- *
- * Returns a copy of +self+ if no arguments given.
- *
- * Related: Array#|.
- */
-
-static VALUE
-rb_ary_union_multi(int argc, VALUE *argv, VALUE ary)
-{
- int i;
- long sum;
- VALUE hash;
-
- sum = RARRAY_LEN(ary);
- for (i = 0; i < argc; i++) {
- argv[i] = to_ary(argv[i]);
- sum += RARRAY_LEN(argv[i]);
- }
-
- if (sum <= SMALL_ARRAY_LEN) {
- VALUE ary_union = rb_ary_new();
-
- rb_ary_union(ary_union, ary);
- for (i = 0; i < argc; i++) rb_ary_union(ary_union, argv[i]);
-
- return ary_union;
- }
-
- hash = ary_make_hash(ary);
- for (i = 0; i < argc; i++) rb_ary_union_hash(hash, argv[i]);
-
- return rb_hash_values(hash);
-}
-
-/*
- * call-seq:
- * ary.intersect?(other_ary) -> true or false
- *
- * Returns +true+ if the array and +other_ary+ have at least one element in
- * common, otherwise returns +false+:
- *
- * a = [ 1, 2, 3 ]
- * b = [ 3, 4, 5 ]
- * c = [ 5, 6, 7 ]
- * a.intersect?(b) #=> true
- * a.intersect?(c) #=> false
- *
- * Array elements are compared using <tt>eql?</tt>
- * (items must also implement +hash+ correctly).
- */
-
-static VALUE
-rb_ary_intersect_p(VALUE ary1, VALUE ary2)
-{
- VALUE hash, v, result, shorter, longer;
- st_data_t vv;
- long i;
-
- ary2 = to_ary(ary2);
- if (RARRAY_LEN(ary1) == 0 || RARRAY_LEN(ary2) == 0) return Qfalse;
-
- if (RARRAY_LEN(ary1) <= SMALL_ARRAY_LEN && RARRAY_LEN(ary2) <= SMALL_ARRAY_LEN) {
- for (i=0; i<RARRAY_LEN(ary1); i++) {
- v = RARRAY_AREF(ary1, i);
- if (rb_ary_includes_by_eql(ary2, v)) return Qtrue;
- }
- return Qfalse;
- }
-
- shorter = ary1;
- longer = ary2;
- if (RARRAY_LEN(ary1) > RARRAY_LEN(ary2)) {
- longer = ary1;
- shorter = ary2;
- }
-
- hash = ary_make_hash(shorter);
- result = Qfalse;
-
- for (i=0; i<RARRAY_LEN(longer); i++) {
- v = RARRAY_AREF(longer, i);
- vv = (st_data_t)v;
- if (rb_hash_stlike_lookup(hash, vv, 0)) {
- result = Qtrue;
- break;
- }
- }
-
- return result;
-}
-
-static VALUE
-ary_max_generic(VALUE ary, long i, VALUE vmax)
-{
- RUBY_ASSERT(i > 0 && i < RARRAY_LEN(ary));
-
- VALUE v;
- for (; i < RARRAY_LEN(ary); ++i) {
- v = RARRAY_AREF(ary, i);
-
- if (rb_cmpint(rb_funcallv(vmax, id_cmp, 1, &v), vmax, v) < 0) {
- vmax = v;
- }
- }
-
- return vmax;
-}
-
-static VALUE
-ary_max_opt_fixnum(VALUE ary, long i, VALUE vmax)
-{
- const long n = RARRAY_LEN(ary);
- RUBY_ASSERT(i > 0 && i < n);
- RUBY_ASSERT(FIXNUM_P(vmax));
-
- VALUE v;
- for (; i < n; ++i) {
- v = RARRAY_AREF(ary, i);
-
- if (FIXNUM_P(v)) {
- if ((long)vmax < (long)v) {
- vmax = v;
- }
- }
- else {
- return ary_max_generic(ary, i, vmax);
- }
- }
-
- return vmax;
-}
-
-static VALUE
-ary_max_opt_float(VALUE ary, long i, VALUE vmax)
-{
- const long n = RARRAY_LEN(ary);
- RUBY_ASSERT(i > 0 && i < n);
- RUBY_ASSERT(RB_FLOAT_TYPE_P(vmax));
-
- VALUE v;
- for (; i < n; ++i) {
- v = RARRAY_AREF(ary, i);
-
- if (RB_FLOAT_TYPE_P(v)) {
- if (rb_float_cmp(vmax, v) < 0) {
- vmax = v;
- }
- }
- else {
- return ary_max_generic(ary, i, vmax);
- }
- }
-
- return vmax;
-}
-
-static VALUE
-ary_max_opt_string(VALUE ary, long i, VALUE vmax)
-{
- const long n = RARRAY_LEN(ary);
- RUBY_ASSERT(i > 0 && i < n);
- RUBY_ASSERT(STRING_P(vmax));
-
- VALUE v;
- for (; i < n; ++i) {
- v = RARRAY_AREF(ary, i);
-
- if (STRING_P(v)) {
- if (rb_str_cmp(vmax, v) < 0) {
- vmax = v;
- }
- }
- else {
- return ary_max_generic(ary, i, vmax);
- }
- }
-
- return vmax;
+ for (i=0; i<RARRAY_LEN(ary2); i++) {
+ VALUE elt = RARRAY_AREF(ary2, i);
+ if (!st_update(RHASH_TBL_RAW(hash), (st_data_t)elt, ary_hash_orset, (st_data_t)elt)) {
+ RB_OBJ_WRITTEN(hash, Qundef, elt);
+ }
+ }
+ ary3 = rb_hash_values(hash);
+ ary_recycle_hash(hash);
+ return ary3;
}
/*
* call-seq:
- * array.max -> element
- * array.max {|a, b| ... } -> element
- * array.max(n) -> new_array
- * array.max(n) {|a, b| ... } -> new_array
- *
- * Returns one of the following:
- *
- * - The maximum-valued element from +self+.
- * - A new \Array of maximum-valued elements selected from +self+.
- *
- * When no block is given, each element in +self+ must respond to method <tt><=></tt>
- * with an \Integer.
- *
- * With no argument and no block, returns the element in +self+
- * having the maximum value per method <tt><=></tt>:
- *
- * [0, 1, 2].max # => 2
- *
- * With an argument \Integer +n+ and no block, returns a new \Array with at most +n+ elements,
- * in descending order per method <tt><=></tt>:
+ * ary.max -> obj
+ * ary.max { |a, b| block } -> obj
+ * ary.max(n) -> array
+ * ary.max(n) { |a, b| block } -> array
*
- * [0, 1, 2, 3].max(3) # => [3, 2, 1]
- * [0, 1, 2, 3].max(6) # => [3, 2, 1, 0]
+ * Returns the object in _ary_ with the maximum value. The
+ * first form assumes all objects implement <code>Comparable</code>;
+ * the second uses the block to return <em>a <=> b</em>.
*
- * When a block is given, the block must return an \Integer.
+ * ary = %w(albatross dog horse)
+ * ary.max #=> "horse"
+ * ary.max { |a, b| a.length <=> b.length } #=> "albatross"
*
- * With a block and no argument, calls the block <tt>self.size-1</tt> times to compare elements;
- * returns the element having the maximum value per the block:
- *
- * ['0', '00', '000'].max {|a, b| a.size <=> b.size } # => "000"
- *
- * With an argument +n+ and a block, returns a new \Array with at most +n+ elements,
- * in descending order per the block:
- *
- * ['0', '00', '000'].max(2) {|a, b| a.size <=> b.size } # => ["000", "00"]
+ * If the +n+ argument is given, maximum +n+ elements are returned
+ * as an array.
*
+ * ary = %w[albatross dog horse]
+ * ary.max(2) #=> ["horse", "dog"]
+ * ary.max(2) {|a, b| a.length <=> b.length } #=> ["albatross", "horse"]
*/
static VALUE
rb_ary_max(int argc, VALUE *argv, VALUE ary)
{
+ struct cmp_opt_data cmp_opt = { 0, 0 };
VALUE result = Qundef, v;
VALUE num;
long i;
- if (rb_check_arity(argc, 0, 1) && !NIL_P(num = argv[0]))
+ rb_scan_args(argc, argv, "01", &num);
+
+ if (!NIL_P(num))
return rb_nmin_run(ary, num, 0, 1, 1);
- const long n = RARRAY_LEN(ary);
if (rb_block_given_p()) {
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- v = RARRAY_AREF(ary, i);
- if (UNDEF_P(result) || rb_cmpint(rb_yield_values(2, v, result), v, result) > 0) {
- result = v;
- }
- }
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ v = RARRAY_AREF(ary, i);
+ if (result == Qundef || rb_cmpint(rb_yield_values(2, v, result), v, result) > 0) {
+ result = v;
+ }
+ }
}
- else if (n > 0) {
- result = RARRAY_AREF(ary, 0);
- if (n > 1) {
- if (FIXNUM_P(result) && CMP_OPTIMIZABLE(INTEGER)) {
- return ary_max_opt_fixnum(ary, 1, result);
- }
- else if (STRING_P(result) && CMP_OPTIMIZABLE(STRING)) {
- return ary_max_opt_string(ary, 1, result);
- }
- else if (RB_FLOAT_TYPE_P(result) && CMP_OPTIMIZABLE(FLOAT)) {
- return ary_max_opt_float(ary, 1, result);
- }
- else {
- return ary_max_generic(ary, 1, result);
- }
- }
- }
- if (UNDEF_P(result)) return Qnil;
+ else {
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ v = RARRAY_AREF(ary, i);
+ if (result == Qundef || OPTIMIZED_CMP(v, result, cmp_opt) > 0) {
+ result = v;
+ }
+ }
+ }
+ if (result == Qundef) return Qnil;
return result;
}
-static VALUE
-ary_min_generic(VALUE ary, long i, VALUE vmin)
-{
- RUBY_ASSERT(i > 0 && i < RARRAY_LEN(ary));
-
- VALUE v;
- for (; i < RARRAY_LEN(ary); ++i) {
- v = RARRAY_AREF(ary, i);
-
- if (rb_cmpint(rb_funcallv(vmin, id_cmp, 1, &v), vmin, v) > 0) {
- vmin = v;
- }
- }
-
- return vmin;
-}
-
-static VALUE
-ary_min_opt_fixnum(VALUE ary, long i, VALUE vmin)
-{
- const long n = RARRAY_LEN(ary);
- RUBY_ASSERT(i > 0 && i < n);
- RUBY_ASSERT(FIXNUM_P(vmin));
-
- VALUE a;
- for (; i < n; ++i) {
- a = RARRAY_AREF(ary, i);
-
- if (FIXNUM_P(a)) {
- if ((long)vmin > (long)a) {
- vmin = a;
- }
- }
- else {
- return ary_min_generic(ary, i, vmin);
- }
- }
-
- return vmin;
-}
-
-static VALUE
-ary_min_opt_float(VALUE ary, long i, VALUE vmin)
-{
- const long n = RARRAY_LEN(ary);
- RUBY_ASSERT(i > 0 && i < n);
- RUBY_ASSERT(RB_FLOAT_TYPE_P(vmin));
-
- VALUE a;
- for (; i < n; ++i) {
- a = RARRAY_AREF(ary, i);
-
- if (RB_FLOAT_TYPE_P(a)) {
- if (rb_float_cmp(vmin, a) > 0) {
- vmin = a;
- }
- }
- else {
- return ary_min_generic(ary, i, vmin);
- }
- }
-
- return vmin;
-}
-
-static VALUE
-ary_min_opt_string(VALUE ary, long i, VALUE vmin)
-{
- const long n = RARRAY_LEN(ary);
- RUBY_ASSERT(i > 0 && i < n);
- RUBY_ASSERT(STRING_P(vmin));
-
- VALUE a;
- for (; i < n; ++i) {
- a = RARRAY_AREF(ary, i);
-
- if (STRING_P(a)) {
- if (rb_str_cmp(vmin, a) > 0) {
- vmin = a;
- }
- }
- else {
- return ary_min_generic(ary, i, vmin);
- }
- }
-
- return vmin;
-}
-
/*
* call-seq:
- * array.min -> element
- * array.min { |a, b| ... } -> element
- * array.min(n) -> new_array
- * array.min(n) { |a, b| ... } -> new_array
- *
- * Returns one of the following:
- *
- * - The minimum-valued element from +self+.
- * - A new \Array of minimum-valued elements selected from +self+.
- *
- * When no block is given, each element in +self+ must respond to method <tt><=></tt>
- * with an \Integer.
- *
- * With no argument and no block, returns the element in +self+
- * having the minimum value per method <tt><=></tt>:
- *
- * [0, 1, 2].min # => 0
- *
- * With \Integer argument +n+ and no block, returns a new \Array with at most +n+ elements,
- * in ascending order per method <tt><=></tt>:
- *
- * [0, 1, 2, 3].min(3) # => [0, 1, 2]
- * [0, 1, 2, 3].min(6) # => [0, 1, 2, 3]
+ * ary.min -> obj
+ * ary.min {| a,b | block } -> obj
+ * ary.min(n) -> array
+ * ary.min(n) {| a,b | block } -> array
*
- * When a block is given, the block must return an Integer.
+ * Returns the object in _ary_ with the minimum value. The
+ * first form assumes all objects implement <code>Comparable</code>;
+ * the second uses the block to return <em>a <=> b</em>.
*
- * With a block and no argument, calls the block <tt>self.size-1</tt> times to compare elements;
- * returns the element having the minimum value per the block:
+ * ary = %w(albatross dog horse)
+ * ary.min #=> "albatross"
+ * ary.min { |a, b| a.length <=> b.length } #=> "dog"
*
- * ['0', '00', '000'].min { |a, b| a.size <=> b.size } # => "0"
- *
- * With an argument +n+ and a block, returns a new \Array with at most +n+ elements,
- * in ascending order per the block:
- *
- * ['0', '00', '000'].min(2) {|a, b| a.size <=> b.size } # => ["0", "00"]
+ * If the +n+ argument is given, minimum +n+ elements are returned
+ * as an array.
*
+ * ary = %w[albatross dog horse]
+ * ary.min(2) #=> ["albatross", "dog"]
+ * ary.min(2) {|a, b| a.length <=> b.length } #=> ["dog", "horse"]
*/
static VALUE
rb_ary_min(int argc, VALUE *argv, VALUE ary)
{
+ struct cmp_opt_data cmp_opt = { 0, 0 };
VALUE result = Qundef, v;
VALUE num;
long i;
- if (rb_check_arity(argc, 0, 1) && !NIL_P(num = argv[0]))
+ rb_scan_args(argc, argv, "01", &num);
+
+ if (!NIL_P(num))
return rb_nmin_run(ary, num, 0, 0, 1);
- const long n = RARRAY_LEN(ary);
if (rb_block_given_p()) {
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- v = RARRAY_AREF(ary, i);
- if (UNDEF_P(result) || rb_cmpint(rb_yield_values(2, v, result), v, result) < 0) {
- result = v;
- }
- }
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ v = RARRAY_AREF(ary, i);
+ if (result == Qundef || rb_cmpint(rb_yield_values(2, v, result), v, result) < 0) {
+ result = v;
+ }
+ }
}
- else if (n > 0) {
- result = RARRAY_AREF(ary, 0);
- if (n > 1) {
- if (FIXNUM_P(result) && CMP_OPTIMIZABLE(INTEGER)) {
- return ary_min_opt_fixnum(ary, 1, result);
- }
- else if (STRING_P(result) && CMP_OPTIMIZABLE(STRING)) {
- return ary_min_opt_string(ary, 1, result);
- }
- else if (RB_FLOAT_TYPE_P(result) && CMP_OPTIMIZABLE(FLOAT)) {
- return ary_min_opt_float(ary, 1, result);
- }
- else {
- return ary_min_generic(ary, 1, result);
- }
- }
- }
- if (UNDEF_P(result)) return Qnil;
+ else {
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ v = RARRAY_AREF(ary, i);
+ if (result == Qundef || OPTIMIZED_CMP(v, result, cmp_opt) < 0) {
+ result = v;
+ }
+ }
+ }
+ if (result == Qundef) return Qnil;
return result;
}
-/*
- * call-seq:
- * array.minmax -> [min_val, max_val]
- * array.minmax {|a, b| ... } -> [min_val, max_val]
- *
- * Returns a new 2-element \Array containing the minimum and maximum values
- * from +self+, either per method <tt><=></tt> or per a given block:.
- *
- * When no block is given, each element in +self+ must respond to method <tt><=></tt>
- * with an \Integer;
- * returns a new 2-element \Array containing the minimum and maximum values
- * from +self+, per method <tt><=></tt>:
- *
- * [0, 1, 2].minmax # => [0, 2]
- *
- * When a block is given, the block must return an \Integer;
- * the block is called <tt>self.size-1</tt> times to compare elements;
- * returns a new 2-element \Array containing the minimum and maximum values
- * from +self+, per the block:
- *
- * ['0', '00', '000'].minmax {|a, b| a.size <=> b.size } # => ["0", "000"]
- *
- */
-static VALUE
-rb_ary_minmax(VALUE ary)
-{
- if (rb_block_given_p()) {
- return rb_call_super(0, NULL);
- }
- return rb_assoc_new(rb_ary_min(0, 0, ary), rb_ary_max(0, 0, ary));
-}
-
static int
push_value(st_data_t key, st_data_t val, st_data_t ary)
{
@@ -6205,33 +4412,31 @@ push_value(st_data_t key, st_data_t val, st_data_t ary)
/*
* call-seq:
- * array.uniq! -> self or nil
- * array.uniq! {|element| ... } -> self or nil
+ * ary.uniq! -> ary or nil
+ * ary.uniq! { |item| ... } -> ary or nil
*
- * Removes duplicate elements from +self+, the first occurrence always being retained;
- * returns +self+ if any elements removed, +nil+ otherwise.
+ * Removes duplicate elements from +self+.
*
- * With no block given, identifies and removes elements using method <tt>eql?</tt>
- * to compare.
+ * If a block is given, it will use the return value of the block for
+ * comparison.
*
- * Returns +self+ if any elements removed:
+ * It compares values using their #hash and #eql? methods for efficiency.
*
- * a = [0, 0, 1, 1, 2, 2]
- * a.uniq! # => [0, 1, 2]
+ * +self+ is traversed in order, and the first occurrence is kept.
*
- * Returns +nil+ if no elements removed.
+ * Returns +nil+ if no changes are made (that is, no duplicates are found).
*
- * With a block given, calls the block for each element;
- * identifies (using method <tt>eql?</tt>) and removes
- * elements for which the block returns duplicate values.
+ * a = [ "a", "a", "b", "b", "c" ]
+ * a.uniq! # => ["a", "b", "c"]
*
- * Returns +self+ if any elements removed:
+ * b = [ "a", "b", "c" ]
+ * b.uniq! # => nil
*
- * a = ['a', 'aa', 'aaa', 'b', 'bb', 'bbb']
- * a.uniq! {|element| element.size } # => ['a', 'aa', 'aaa']
+ * c = [["student","sam"], ["student","george"], ["teacher","matz"]]
+ * c.uniq! { |s| s.first } # => [["student", "sam"], ["teacher", "matz"]]
*
- * Returns +nil+ if no elements removed.
*/
+
static VALUE
rb_ary_uniq_bang(VALUE ary)
{
@@ -6242,46 +4447,45 @@ rb_ary_uniq_bang(VALUE ary)
if (RARRAY_LEN(ary) <= 1)
return Qnil;
if (rb_block_given_p())
- hash = ary_make_hash_by(ary);
+ hash = ary_make_hash_by(ary);
else
- hash = ary_make_hash(ary);
+ hash = ary_make_hash(ary);
hash_size = RHASH_SIZE(hash);
if (RARRAY_LEN(ary) == hash_size) {
- return Qnil;
+ return Qnil;
}
rb_ary_modify_check(ary);
ARY_SET_LEN(ary, 0);
if (ARY_SHARED_P(ary) && !ARY_EMBED_P(ary)) {
- rb_ary_unshare(ary);
- FL_SET_EMBED(ary);
+ rb_ary_unshare(ary);
+ FL_SET_EMBED(ary);
}
ary_resize_capa(ary, hash_size);
- rb_hash_foreach(hash, push_value, ary);
+ st_foreach(rb_hash_tbl_raw(hash), push_value, ary);
+ ary_recycle_hash(hash);
return ary;
}
/*
* call-seq:
- * array.uniq -> new_array
- * array.uniq {|element| ... } -> new_array
+ * ary.uniq -> new_ary
+ * ary.uniq { |item| ... } -> new_ary
*
- * Returns a new \Array containing those elements from +self+ that are not duplicates,
- * the first occurrence always being retained.
+ * Returns a new array by removing duplicate values in +self+.
*
- * With no block given, identifies and omits duplicates using method <tt>eql?</tt>
- * to compare:
+ * If a block is given, it will use the return value of the block for comparison.
*
- * a = [0, 0, 1, 1, 2, 2]
- * a.uniq # => [0, 1, 2]
+ * It compares values using their #hash and #eql? methods for efficiency.
*
- * With a block given, calls the block for each element;
- * identifies (using method <tt>eql?</tt>) and omits duplicate values,
- * that is, those elements for which the block returns the same value:
+ * +self+ is traversed in order, and the first occurrence is kept.
*
- * a = ['a', 'aa', 'aaa', 'b', 'bb', 'bbb']
- * a.uniq {|element| element.size } # => ["a", "aa", "aaa"]
+ * a = [ "a", "a", "b", "b", "c" ]
+ * a.uniq # => ["a", "b", "c"]
+ *
+ * b = [["student","sam"], ["student","george"], ["teacher","matz"]]
+ * b.uniq { |s| s.first } # => [["student", "sam"], ["teacher", "matz"]]
*
*/
@@ -6290,29 +4494,32 @@ rb_ary_uniq(VALUE ary)
{
VALUE hash, uniq;
- if (RARRAY_LEN(ary) <= 1) {
- hash = 0;
- uniq = rb_ary_dup(ary);
- }
- else if (rb_block_given_p()) {
- hash = ary_make_hash_by(ary);
- uniq = rb_hash_values(hash);
+ if (RARRAY_LEN(ary) <= 1)
+ return rb_ary_dup(ary);
+ if (rb_block_given_p()) {
+ hash = ary_make_hash_by(ary);
+ uniq = rb_hash_values(hash);
}
else {
- hash = ary_make_hash(ary);
- uniq = rb_hash_values(hash);
+ hash = ary_make_hash(ary);
+ uniq = rb_hash_values(hash);
}
+ RBASIC_SET_CLASS(uniq, rb_obj_class(ary));
+ ary_recycle_hash(hash);
return uniq;
}
/*
* call-seq:
- * array.compact! -> self or nil
+ * ary.compact! -> ary or nil
+ *
+ * Removes +nil+ elements from the array.
*
- * Removes all +nil+ elements from +self+.
+ * Returns +nil+ if no changes were made, otherwise returns the array.
*
- * Returns +self+ if any elements removed, otherwise +nil+.
+ * [ "a", nil, "b", nil, "c" ].compact! #=> [ "a", "b", "c" ]
+ * [ "a", "b", "c" ].compact! #=> nil
*/
static VALUE
@@ -6322,16 +4529,16 @@ rb_ary_compact_bang(VALUE ary)
long n;
rb_ary_modify(ary);
- p = t = (VALUE *)RARRAY_CONST_PTR_TRANSIENT(ary); /* WB: no new reference */
+ p = t = (VALUE *)RARRAY_CONST_PTR(ary); /* WB: no new reference */
end = p + RARRAY_LEN(ary);
while (t < end) {
- if (NIL_P(*t)) t++;
- else *p++ = *t++;
+ if (NIL_P(*t)) t++;
+ else *p++ = *t++;
}
- n = p - RARRAY_CONST_PTR_TRANSIENT(ary);
+ n = p - RARRAY_CONST_PTR(ary);
if (RARRAY_LEN(ary) == n) {
- return Qnil;
+ return Qnil;
}
ary_resize_smaller(ary, n);
@@ -6340,12 +4547,12 @@ rb_ary_compact_bang(VALUE ary)
/*
* call-seq:
- * array.compact -> new_array
+ * ary.compact -> new_ary
*
- * Returns a new \Array containing all non-+nil+ elements from +self+:
+ * Returns a copy of +self+ with all +nil+ elements removed.
*
- * a = [nil, 0, nil, 1, nil, 2, nil]
- * a.compact # => [0, 1, 2]
+ * [ "a", nil, "b", nil, "c", nil ].compact
+ * #=> [ "a", "b", "c" ]
*/
static VALUE
@@ -6358,29 +4565,23 @@ rb_ary_compact(VALUE ary)
/*
* call-seq:
- * array.count -> an_integer
- * array.count(obj) -> an_integer
- * array.count {|element| ... } -> an_integer
- *
- * Returns a count of specified elements.
- *
- * With no argument and no block, returns the count of all elements:
- *
- * [0, 1, 2].count # => 3
- * [].count # => 0
+ * ary.count -> int
+ * ary.count(obj) -> int
+ * ary.count { |item| block } -> int
*
- * With argument +obj+, returns the count of elements <tt>==</tt> to +obj+:
+ * Returns the number of elements.
*
- * [0, 1, 2, 0.0].count(0) # => 2
- * [0, 1, 2].count(3) # => 0
+ * If an argument is given, counts the number of elements which equal +obj+
+ * using <code>==</code>.
*
- * With no argument and a block given, calls the block with each element;
- * returns the count of elements for which the block returns a truthy value:
+ * If a block is given, counts the number of elements for which the block
+ * returns a true value.
*
- * [0, 1, 2, 3].count {|element| element > 1} # => 2
+ * ary = [1, 2, 4, 2]
+ * ary.count #=> 4
+ * ary.count(2) #=> 2
+ * ary.count { |x| x%2 == 0 } #=> 3
*
- * With argument +obj+ and a block given, issues a warning, ignores the block,
- * and returns the count of elements <tt>==</tt> to +obj+.
*/
static VALUE
@@ -6388,152 +4589,108 @@ rb_ary_count(int argc, VALUE *argv, VALUE ary)
{
long i, n = 0;
- if (rb_check_arity(argc, 0, 1) == 0) {
- VALUE v;
+ if (argc == 0) {
+ VALUE v;
- if (!rb_block_given_p())
- return LONG2NUM(RARRAY_LEN(ary));
+ if (!rb_block_given_p())
+ return LONG2NUM(RARRAY_LEN(ary));
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- v = RARRAY_AREF(ary, i);
- if (RTEST(rb_yield(v))) n++;
- }
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ v = RARRAY_AREF(ary, i);
+ if (RTEST(rb_yield(v))) n++;
+ }
}
else {
- VALUE obj = argv[0];
+ VALUE obj;
- if (rb_block_given_p()) {
- rb_warn("given block not used");
- }
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- if (rb_equal(RARRAY_AREF(ary, i), obj)) n++;
- }
+ rb_scan_args(argc, argv, "1", &obj);
+ if (rb_block_given_p()) {
+ rb_warn("given block not used");
+ }
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (rb_equal(RARRAY_AREF(ary, i), obj)) n++;
+ }
}
return LONG2NUM(n);
}
static VALUE
-flatten(VALUE ary, int level)
+flatten(VALUE ary, int level, int *modified)
{
- long i;
- VALUE stack, result, tmp = 0, elt, vmemo;
- st_table *memo = 0;
+ long i = 0;
+ VALUE stack, result, tmp, elt;
+ st_table *memo;
st_data_t id;
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- elt = RARRAY_AREF(ary, i);
- tmp = rb_check_array_type(elt);
- if (!NIL_P(tmp)) {
- break;
- }
- }
- if (i == RARRAY_LEN(ary)) {
- return ary;
- }
-
- result = ary_new(0, RARRAY_LEN(ary));
- ary_memcpy(result, 0, i, RARRAY_CONST_PTR_TRANSIENT(ary));
- ARY_SET_LEN(result, i);
-
stack = ary_new(0, ARY_DEFAULT_SIZE);
- rb_ary_push(stack, ary);
- rb_ary_push(stack, LONG2NUM(i + 1));
-
- if (level < 0) {
- vmemo = rb_hash_new();
- RBASIC_CLEAR_CLASS(vmemo);
- memo = st_init_numtable();
- rb_hash_st_table_set(vmemo, memo);
- st_insert(memo, (st_data_t)ary, (st_data_t)Qtrue);
- st_insert(memo, (st_data_t)tmp, (st_data_t)Qtrue);
- }
-
- ary = tmp;
- i = 0;
+ result = ary_new(0, RARRAY_LEN(ary));
+ memo = st_init_numtable();
+ st_insert(memo, (st_data_t)ary, (st_data_t)Qtrue);
+ *modified = 0;
while (1) {
- while (i < RARRAY_LEN(ary)) {
- elt = RARRAY_AREF(ary, i++);
- if (level >= 0 && RARRAY_LEN(stack) / 2 >= level) {
- rb_ary_push(result, elt);
- continue;
- }
- tmp = rb_check_array_type(elt);
- if (RBASIC(result)->klass) {
- if (memo) {
- RB_GC_GUARD(vmemo);
- st_clear(memo);
- }
- rb_raise(rb_eRuntimeError, "flatten reentered");
- }
- if (NIL_P(tmp)) {
- rb_ary_push(result, elt);
- }
- else {
- if (memo) {
- id = (st_data_t)tmp;
- if (st_is_member(memo, id)) {
- st_clear(memo);
- rb_raise(rb_eArgError, "tried to flatten recursive array");
- }
- st_insert(memo, id, (st_data_t)Qtrue);
- }
- rb_ary_push(stack, ary);
- rb_ary_push(stack, LONG2NUM(i));
- ary = tmp;
- i = 0;
- }
- }
- if (RARRAY_LEN(stack) == 0) {
- break;
- }
- if (memo) {
- id = (st_data_t)ary;
- st_delete(memo, &id, 0);
- }
- tmp = rb_ary_pop(stack);
- i = NUM2LONG(tmp);
- ary = rb_ary_pop(stack);
- }
-
- if (memo) {
- st_clear(memo);
- }
-
- RBASIC_SET_CLASS(result, rb_cArray);
+ while (i < RARRAY_LEN(ary)) {
+ elt = RARRAY_AREF(ary, i++);
+ if (level >= 0 && RARRAY_LEN(stack) / 2 >= level) {
+ rb_ary_push(result, elt);
+ continue;
+ }
+ tmp = rb_check_array_type(elt);
+ if (RBASIC(result)->klass) {
+ rb_raise(rb_eRuntimeError, "flatten reentered");
+ }
+ if (NIL_P(tmp)) {
+ rb_ary_push(result, elt);
+ }
+ else {
+ *modified = 1;
+ id = (st_data_t)tmp;
+ if (st_lookup(memo, id, 0)) {
+ st_free_table(memo);
+ rb_raise(rb_eArgError, "tried to flatten recursive array");
+ }
+ st_insert(memo, id, (st_data_t)Qtrue);
+ rb_ary_push(stack, ary);
+ rb_ary_push(stack, LONG2NUM(i));
+ ary = tmp;
+ i = 0;
+ }
+ }
+ if (RARRAY_LEN(stack) == 0) {
+ break;
+ }
+ id = (st_data_t)ary;
+ st_delete(memo, &id, 0);
+ tmp = rb_ary_pop(stack);
+ i = NUM2LONG(tmp);
+ ary = rb_ary_pop(stack);
+ }
+
+ st_free_table(memo);
+
+ RBASIC_SET_CLASS(result, rb_obj_class(ary));
return result;
}
/*
* call-seq:
- * array.flatten! -> self or nil
- * array.flatten!(level) -> self or nil
- *
- * Replaces each nested \Array in +self+ with the elements from that \Array;
- * returns +self+ if any changes, +nil+ otherwise.
+ * ary.flatten! -> ary or nil
+ * ary.flatten!(level) -> ary or nil
*
- * With non-negative \Integer argument +level+, flattens recursively through +level+ levels:
+ * Flattens +self+ in place.
*
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten!(1) # => [0, 1, [2, 3], 4, 5]
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten!(2) # => [0, 1, 2, 3, 4, 5]
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten!(3) # => [0, 1, 2, 3, 4, 5]
- * [0, 1, 2].flatten!(1) # => nil
+ * Returns +nil+ if no modifications were made (i.e., the array contains no
+ * subarrays.)
*
- * With no argument, a +nil+ argument, or with negative argument +level+, flattens all levels:
- *
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten! # => [0, 1, 2, 3, 4, 5]
- * [0, 1, 2].flatten! # => nil
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten!(-1) # => [0, 1, 2, 3, 4, 5]
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten!(-2) # => [0, 1, 2, 3, 4, 5]
- * [0, 1, 2].flatten!(-1) # => nil
+ * The optional +level+ argument determines the level of recursion to flatten.
*
+ * a = [ 1, 2, [3, [4, 5] ] ]
+ * a.flatten! #=> [1, 2, 3, 4, 5]
+ * a.flatten! #=> nil
+ * a #=> [1, 2, 3, 4, 5]
+ * a = [ 1, 2, [3, [4, 5] ] ]
+ * a.flatten!(1) #=> [1, 2, 3, [4, 5]]
*/
static VALUE
@@ -6542,14 +4699,15 @@ rb_ary_flatten_bang(int argc, VALUE *argv, VALUE ary)
int mod = 0, level = -1;
VALUE result, lv;
- lv = (rb_check_arity(argc, 0, 1) ? argv[0] : Qnil);
+ rb_scan_args(argc, argv, "01", &lv);
rb_ary_modify_check(ary);
if (!NIL_P(lv)) level = NUM2INT(lv);
if (level == 0) return Qnil;
- result = flatten(ary, level);
- if (result == ary) {
- return Qnil;
+ result = flatten(ary, level, &mod);
+ if (mod == 0) {
+ ary_discard(result);
+ return Qnil;
}
if (!(mod = ARY_EMBED_P(result))) rb_obj_freeze(result);
rb_ary_replace(ary, result);
@@ -6560,212 +4718,284 @@ rb_ary_flatten_bang(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
- * array.flatten -> new_array
- * array.flatten(level) -> new_array
- *
- * Returns a new \Array that is a recursive flattening of +self+:
- * - Each non-Array element is unchanged.
- * - Each \Array is replaced by its individual elements.
- *
- * With non-negative \Integer argument +level+, flattens recursively through +level+ levels:
- *
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten(0) # => [0, [1, [2, 3], 4], 5]
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten(1) # => [0, 1, [2, 3], 4, 5]
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten(2) # => [0, 1, 2, 3, 4, 5]
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten(3) # => [0, 1, 2, 3, 4, 5]
- *
- * With no argument, a +nil+ argument, or with negative argument +level+, flattens all levels:
- *
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten # => [0, 1, 2, 3, 4, 5]
- * [0, 1, 2].flatten # => [0, 1, 2]
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten(-1) # => [0, 1, 2, 3, 4, 5]
- * a = [ 0, [ 1, [2, 3], 4 ], 5 ]
- * a.flatten(-2) # => [0, 1, 2, 3, 4, 5]
- * [0, 1, 2].flatten(-1) # => [0, 1, 2]
+ * ary.flatten -> new_ary
+ * ary.flatten(level) -> new_ary
+ *
+ * Returns a new array that is a one-dimensional flattening of +self+
+ * (recursively).
*
+ * That is, for every element that is an array, extract its elements into
+ * the new array.
+ *
+ * The optional +level+ argument determines the level of recursion to
+ * flatten.
+ *
+ * s = [ 1, 2, 3 ] #=> [1, 2, 3]
+ * t = [ 4, 5, 6, [7, 8] ] #=> [4, 5, 6, [7, 8]]
+ * a = [ s, t, 9, 10 ] #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
+ * a.flatten #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+ * a = [ 1, 2, [3, [4, 5] ] ]
+ * a.flatten(1) #=> [1, 2, 3, [4, 5]]
*/
static VALUE
rb_ary_flatten(int argc, VALUE *argv, VALUE ary)
{
- int level = -1;
- VALUE result;
+ int mod = 0, level = -1;
+ VALUE result, lv;
- if (rb_check_arity(argc, 0, 1) && !NIL_P(argv[0])) {
- level = NUM2INT(argv[0]);
- if (level == 0) return ary_make_shared_copy(ary);
- }
+ rb_scan_args(argc, argv, "01", &lv);
+ if (!NIL_P(lv)) level = NUM2INT(lv);
+ if (level == 0) return ary_make_shared_copy(ary);
- result = flatten(ary, level);
- if (result == ary) {
- result = ary_make_shared_copy(ary);
- }
+ result = flatten(ary, level, &mod);
+ OBJ_INFECT(result, ary);
return result;
}
+#define OPTHASH_GIVEN_P(opts) \
+ (argc > 0 && !NIL_P((opts) = rb_check_hash_type(argv[argc-1])) && (--argc, 1))
+static ID id_random;
+
#define RAND_UPTO(max) (long)rb_random_ulong_limited((randgen), (max)-1)
+/*
+ * call-seq:
+ * ary.shuffle! -> ary
+ * ary.shuffle!(random: rng) -> ary
+ *
+ * Shuffles elements in +self+ in place.
+ *
+ * a = [ 1, 2, 3 ] #=> [1, 2, 3]
+ * a.shuffle! #=> [2, 3, 1]
+ * a #=> [2, 3, 1]
+ *
+ * The optional +rng+ argument will be used as the random number generator.
+ *
+ * a.shuffle!(random: Random.new(1)) #=> [1, 3, 2]
+ */
+
static VALUE
-rb_ary_shuffle_bang(rb_execution_context_t *ec, VALUE ary, VALUE randgen)
+rb_ary_shuffle_bang(int argc, VALUE *argv, VALUE ary)
{
+ VALUE opts, randgen = rb_cRandom;
long i, len;
+ if (OPTHASH_GIVEN_P(opts)) {
+ VALUE rnd;
+ ID keyword_ids[1];
+
+ keyword_ids[0] = id_random;
+ rb_get_kwargs(opts, keyword_ids, 0, 1, &rnd);
+ if (rnd != Qundef) {
+ randgen = rnd;
+ }
+ }
+ rb_check_arity(argc, 0, 0);
rb_ary_modify(ary);
i = len = RARRAY_LEN(ary);
RARRAY_PTR_USE(ary, ptr, {
- while (i) {
- long j = RAND_UPTO(i);
- VALUE tmp;
- if (len != RARRAY_LEN(ary) || ptr != RARRAY_CONST_PTR_TRANSIENT(ary)) {
- rb_raise(rb_eRuntimeError, "modified during shuffle");
- }
- tmp = ptr[--i];
- ptr[i] = ptr[j];
- ptr[j] = tmp;
- }
+ while (i) {
+ long j = RAND_UPTO(i);
+ VALUE tmp;
+ if (len != RARRAY_LEN(ary) || ptr != RARRAY_CONST_PTR(ary)) {
+ rb_raise(rb_eRuntimeError, "modified during shuffle");
+ }
+ tmp = ptr[--i];
+ ptr[i] = ptr[j];
+ ptr[j] = tmp;
+ }
}); /* WB: no new reference */
return ary;
}
+
+/*
+ * call-seq:
+ * ary.shuffle -> new_ary
+ * ary.shuffle(random: rng) -> new_ary
+ *
+ * Returns a new array with elements of +self+ shuffled.
+ *
+ * a = [ 1, 2, 3 ] #=> [1, 2, 3]
+ * a.shuffle #=> [2, 3, 1]
+ * a #=> [1, 2, 3]
+ *
+ * The optional +rng+ argument will be used as the random number generator.
+ *
+ * a.shuffle(random: Random.new(1)) #=> [1, 3, 2]
+ */
+
static VALUE
-rb_ary_shuffle(rb_execution_context_t *ec, VALUE ary, VALUE randgen)
+rb_ary_shuffle(int argc, VALUE *argv, VALUE ary)
{
ary = rb_ary_dup(ary);
- rb_ary_shuffle_bang(ec, ary, randgen);
+ rb_ary_shuffle_bang(argc, argv, ary);
return ary;
}
+
+/*
+ * call-seq:
+ * ary.sample -> obj
+ * ary.sample(random: rng) -> obj
+ * ary.sample(n) -> new_ary
+ * ary.sample(n, random: rng) -> new_ary
+ *
+ * Choose a random element or +n+ random elements from the array.
+ *
+ * The elements are chosen by using random and unique indices into the array
+ * in order to ensure that an element doesn't repeat itself unless the array
+ * already contained duplicate elements.
+ *
+ * If the array is empty the first form returns +nil+ and the second form
+ * returns an empty array.
+ *
+ * The optional +rng+ argument will be used as the random number generator.
+ *
+ * a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
+ * a.sample #=> 7
+ * a.sample(4) #=> [6, 4, 2, 5]
+ */
+
+
static VALUE
-ary_sample(rb_execution_context_t *ec, VALUE ary, VALUE randgen, VALUE nv, VALUE to_array)
+rb_ary_sample(int argc, VALUE *argv, VALUE ary)
{
- VALUE result;
+ VALUE nv, result;
+ VALUE opts, randgen = rb_cRandom;
long n, len, i, j, k, idx[10];
long rnds[numberof(idx)];
long memo_threshold;
+ if (OPTHASH_GIVEN_P(opts)) {
+ VALUE rnd;
+ ID keyword_ids[1];
+
+ keyword_ids[0] = id_random;
+ rb_get_kwargs(opts, keyword_ids, 0, 1, &rnd);
+ if (rnd != Qundef) {
+ randgen = rnd;
+ }
+ }
len = RARRAY_LEN(ary);
- if (!to_array) {
- if (len < 2)
- i = 0;
- else
- i = RAND_UPTO(len);
+ if (argc == 0) {
+ if (len < 2)
+ i = 0;
+ else
+ i = RAND_UPTO(len);
- return rb_ary_elt(ary, i);
+ return rb_ary_elt(ary, i);
}
+ rb_scan_args(argc, argv, "1", &nv);
n = NUM2LONG(nv);
if (n < 0) rb_raise(rb_eArgError, "negative sample number");
if (n > len) n = len;
if (n <= numberof(idx)) {
- for (i = 0; i < n; ++i) {
- rnds[i] = RAND_UPTO(len - i);
- }
+ for (i = 0; i < n; ++i) {
+ rnds[i] = RAND_UPTO(len - i);
+ }
}
k = len;
len = RARRAY_LEN(ary);
if (len < k && n <= numberof(idx)) {
- for (i = 0; i < n; ++i) {
- if (rnds[i] >= len) return rb_ary_new_capa(0);
- }
+ for (i = 0; i < n; ++i) {
+ if (rnds[i] >= len) return rb_ary_new_capa(0);
+ }
}
if (n > len) n = len;
switch (n) {
case 0:
- return rb_ary_new_capa(0);
+ return rb_ary_new_capa(0);
case 1:
- i = rnds[0];
- return rb_ary_new_from_args(1, RARRAY_AREF(ary, i));
+ i = rnds[0];
+ return rb_ary_new_from_values(1, &RARRAY_AREF(ary, i));
case 2:
- i = rnds[0];
- j = rnds[1];
- if (j >= i) j++;
- return rb_ary_new_from_args(2, RARRAY_AREF(ary, i), RARRAY_AREF(ary, j));
+ i = rnds[0];
+ j = rnds[1];
+ if (j >= i) j++;
+ return rb_ary_new_from_args(2, RARRAY_AREF(ary, i), RARRAY_AREF(ary, j));
case 3:
- i = rnds[0];
- j = rnds[1];
- k = rnds[2];
- {
- long l = j, g = i;
- if (j >= i) l = i, g = ++j;
- if (k >= l && (++k >= g)) ++k;
- }
- return rb_ary_new_from_args(3, RARRAY_AREF(ary, i), RARRAY_AREF(ary, j), RARRAY_AREF(ary, k));
+ i = rnds[0];
+ j = rnds[1];
+ k = rnds[2];
+ {
+ long l = j, g = i;
+ if (j >= i) l = i, g = ++j;
+ if (k >= l && (++k >= g)) ++k;
+ }
+ return rb_ary_new_from_args(3, RARRAY_AREF(ary, i), RARRAY_AREF(ary, j), RARRAY_AREF(ary, k));
}
memo_threshold =
- len < 2560 ? len / 128 :
- len < 5120 ? len / 64 :
- len < 10240 ? len / 32 :
- len / 16;
+ len < 2560 ? len / 128 :
+ len < 5120 ? len / 64 :
+ len < 10240 ? len / 32 :
+ len / 16;
if (n <= numberof(idx)) {
- long sorted[numberof(idx)];
- sorted[0] = idx[0] = rnds[0];
- for (i=1; i<n; i++) {
- k = rnds[i];
- for (j = 0; j < i; ++j) {
- if (k < sorted[j]) break;
- ++k;
- }
- memmove(&sorted[j+1], &sorted[j], sizeof(sorted[0])*(i-j));
- sorted[j] = idx[i] = k;
- }
- result = rb_ary_new_capa(n);
- RARRAY_PTR_USE_TRANSIENT(result, ptr_result, {
- for (i=0; i<n; i++) {
- ptr_result[i] = RARRAY_AREF(ary, idx[i]);
- }
- });
+ long sorted[numberof(idx)];
+ sorted[0] = idx[0] = rnds[0];
+ for (i=1; i<n; i++) {
+ k = rnds[i];
+ for (j = 0; j < i; ++j) {
+ if (k < sorted[j]) break;
+ ++k;
+ }
+ memmove(&sorted[j+1], &sorted[j], sizeof(sorted[0])*(i-j));
+ sorted[j] = idx[i] = k;
+ }
+ result = rb_ary_new_capa(n);
+ RARRAY_PTR_USE(result, ptr_result, {
+ for (i=0; i<n; i++) {
+ ptr_result[i] = RARRAY_AREF(ary, idx[i]);
+ }
+ });
}
else if (n <= memo_threshold / 2) {
- long max_idx = 0;
+ long max_idx = 0;
#undef RUBY_UNTYPED_DATA_WARNING
#define RUBY_UNTYPED_DATA_WARNING 0
- VALUE vmemo = Data_Wrap_Struct(0, 0, st_free_table, 0);
- st_table *memo = st_init_numtable_with_size(n);
- DATA_PTR(vmemo) = memo;
- result = rb_ary_new_capa(n);
- RARRAY_PTR_USE(result, ptr_result, {
- for (i=0; i<n; i++) {
- long r = RAND_UPTO(len-i) + i;
- ptr_result[i] = r;
- if (r > max_idx) max_idx = r;
- }
- len = RARRAY_LEN(ary);
- if (len <= max_idx) n = 0;
- else if (n > len) n = len;
- RARRAY_PTR_USE_TRANSIENT(ary, ptr_ary, {
- for (i=0; i<n; i++) {
- long j2 = j = ptr_result[i];
- long i2 = i;
- st_data_t value;
- if (st_lookup(memo, (st_data_t)i, &value)) i2 = (long)value;
- if (st_lookup(memo, (st_data_t)j, &value)) j2 = (long)value;
- st_insert(memo, (st_data_t)j, (st_data_t)i2);
- ptr_result[i] = ptr_ary[j2];
- }
- });
- });
- DATA_PTR(vmemo) = 0;
- st_free_table(memo);
+ VALUE vmemo = Data_Wrap_Struct(0, 0, st_free_table, 0);
+ st_table *memo = st_init_numtable_with_size(n);
+ DATA_PTR(vmemo) = memo;
+ result = rb_ary_new_capa(n);
+ RARRAY_PTR_USE(result, ptr_result, {
+ for (i=0; i<n; i++) {
+ long r = RAND_UPTO(len-i) + i;
+ ptr_result[i] = r;
+ if (r > max_idx) max_idx = r;
+ }
+ len = RARRAY_LEN(ary);
+ if (len <= max_idx) n = 0;
+ else if (n > len) n = len;
+ RARRAY_PTR_USE(ary, ptr_ary, {
+ for (i=0; i<n; i++) {
+ long j2 = j = ptr_result[i];
+ long i2 = i;
+ st_data_t value;
+ if (st_lookup(memo, (st_data_t)i, &value)) i2 = (long)value;
+ if (st_lookup(memo, (st_data_t)j, &value)) j2 = (long)value;
+ st_insert(memo, (st_data_t)j, (st_data_t)i2);
+ ptr_result[i] = ptr_ary[j2];
+ }
+ });
+ });
+ DATA_PTR(vmemo) = 0;
+ st_free_table(memo);
}
else {
- result = rb_ary_dup(ary);
- RBASIC_CLEAR_CLASS(result);
- RB_GC_GUARD(ary);
- RARRAY_PTR_USE(result, ptr_result, {
- for (i=0; i<n; i++) {
- j = RAND_UPTO(len-i) + i;
- nv = ptr_result[j];
- ptr_result[j] = ptr_result[i];
- ptr_result[i] = nv;
- }
- });
- RBASIC_SET_CLASS_RAW(result, rb_cArray);
+ result = rb_ary_dup(ary);
+ RBASIC_CLEAR_CLASS(result);
+ RB_GC_GUARD(ary);
+ RARRAY_PTR_USE(result, ptr_result, {
+ for (i=0; i<n; i++) {
+ j = RAND_UPTO(len-i) + i;
+ nv = ptr_result[j];
+ ptr_result[j] = ptr_result[i];
+ ptr_result[i] = nv;
+ }
+ });
+ RBASIC_SET_CLASS_RAW(result, rb_cArray);
}
ARY_SET_LEN(result, n);
@@ -6773,21 +5003,15 @@ ary_sample(rb_execution_context_t *ec, VALUE ary, VALUE randgen, VALUE nv, VALUE
}
static VALUE
-ary_sample0(rb_execution_context_t *ec, VALUE ary)
-{
- return ary_sample(ec, ary, rb_cRandom, Qfalse, Qfalse);
-}
-
-static VALUE
rb_ary_cycle_size(VALUE self, VALUE args, VALUE eobj)
{
long mul;
VALUE n = Qnil;
if (args && (RARRAY_LEN(args) > 0)) {
- n = RARRAY_AREF(args, 0);
+ n = RARRAY_AREF(args, 0);
}
if (RARRAY_LEN(self) == 0) return INT2FIX(0);
- if (NIL_P(n)) return DBL2NUM(HUGE_VAL);
+ if (n == Qnil) return DBL2NUM(INFINITY);
mul = NUM2LONG(n);
if (mul <= 0) return INT2FIX(0);
n = LONG2FIX(mul);
@@ -6796,50 +5020,38 @@ rb_ary_cycle_size(VALUE self, VALUE args, VALUE eobj)
/*
* call-seq:
- * array.cycle {|element| ... } -> nil
- * array.cycle(count) {|element| ... } -> nil
- * array.cycle -> new_enumerator
- * array.cycle(count) -> new_enumerator
- *
- * When called with positive \Integer argument +count+ and a block,
- * calls the block with each element, then does so again,
- * until it has done so +count+ times; returns +nil+:
- *
- * output = []
- * [0, 1].cycle(2) {|element| output.push(element) } # => nil
- * output # => [0, 1, 0, 1]
- *
- * If +count+ is zero or negative, does not call the block:
+ * ary.cycle(n=nil) { |obj| block } -> nil
+ * ary.cycle(n=nil) -> Enumerator
*
- * [0, 1].cycle(0) {|element| fail 'Cannot happen' } # => nil
- * [0, 1].cycle(-1) {|element| fail 'Cannot happen' } # => nil
+ * Calls the given block for each element +n+ times or forever if +nil+ is
+ * given.
*
- * When a block is given, and argument is omitted or +nil+, cycles forever:
+ * Does nothing if a non-positive number is given or the array is empty.
*
- * # Prints 0 and 1 forever.
- * [0, 1].cycle {|element| puts element }
- * [0, 1].cycle(nil) {|element| puts element }
+ * Returns +nil+ if the loop has finished without getting interrupted.
*
- * When no block is given, returns a new \Enumerator:
+ * If no block is given, an Enumerator is returned instead.
*
- * [0, 1].cycle(2) # => #<Enumerator: [0, 1]:cycle(2)>
- * [0, 1].cycle # => # => #<Enumerator: [0, 1]:cycle>
- * [0, 1].cycle.first(5) # => [0, 1, 0, 1, 0]
+ * a = ["a", "b", "c"]
+ * a.cycle { |x| puts x } # print, a, b, c, a, b, c,.. forever.
+ * a.cycle(2) { |x| puts x } # print, a, b, c, a, b, c.
*
*/
+
static VALUE
rb_ary_cycle(int argc, VALUE *argv, VALUE ary)
{
long n, i;
+ VALUE nv = Qnil;
- rb_check_arity(argc, 0, 1);
+ rb_scan_args(argc, argv, "01", &nv);
RETURN_SIZED_ENUMERATOR(ary, argc, argv, rb_ary_cycle_size);
- if (argc == 0 || NIL_P(argv[0])) {
+ if (NIL_P(nv)) {
n = -1;
}
else {
- n = NUM2LONG(argv[0]);
+ n = NUM2LONG(nv);
if (n <= 0) return Qnil;
}
@@ -6851,6 +5063,11 @@ rb_ary_cycle(int argc, VALUE *argv, VALUE ary)
return Qnil;
}
+#define tmpbuf(n, size) rb_str_tmp_new((n)*(size))
+#define tmpbuf_discard(s) (rb_str_resize((s), 0L), RBASIC_SET_CLASS_RAW(s, rb_cString))
+#define tmpary(n) rb_ary_tmp_new(n)
+#define tmpary_discard(a) (ary_discard(a), RBASIC_SET_CLASS_RAW(a, rb_cArray))
+
/*
* Build a ruby array of the corresponding values and yield it to the
* associated block.
@@ -6860,9 +5077,11 @@ static int
yield_indexed_values(const VALUE values, const long r, const long *const p)
{
const VALUE result = rb_ary_new2(r);
+ VALUE *const result_array = RARRAY_PTR(result);
+ const VALUE *const values_array = RARRAY_CONST_PTR(values);
long i;
- for (i = 0; i < r; i++) ARY_SET(result, i, RARRAY_AREF(values, p[i]));
+ for (i = 0; i < r; i++) result_array[i] = values_array[p[i]];
ARY_SET_LEN(result, r);
rb_yield(result);
return !RBASIC(values)->klass;
@@ -6886,52 +5105,52 @@ permute0(const long n, const long r, long *const p, char *const used, const VALU
long i = 0, index = 0;
for (;;) {
- const char *const unused = memchr(&used[i], 0, n-i);
- if (!unused) {
- if (!index) break;
- i = p[--index]; /* pop index */
- used[i++] = 0; /* index unused */
- }
- else {
- i = unused - used;
- p[index] = i;
- used[i] = 1; /* mark index used */
- ++index;
- if (index < r-1) { /* if not done yet */
- p[index] = i = 0;
- continue;
- }
- for (i = 0; i < n; ++i) {
- if (used[i]) continue;
- p[index] = i;
- if (!yield_indexed_values(values, r, p)) {
- rb_raise(rb_eRuntimeError, "permute reentered");
- }
- }
- i = p[--index]; /* pop index */
- used[i] = 0; /* index unused */
- p[index] = ++i;
- }
+ const char *const unused = memchr(&used[i], 0, n-i);
+ if (!unused) {
+ if (!index) break;
+ i = p[--index]; /* pop index */
+ used[i++] = 0; /* index unused */
+ }
+ else {
+ i = unused - used;
+ p[index] = i;
+ used[i] = 1; /* mark index used */
+ ++index;
+ if (index < r-1) { /* if not done yet */
+ p[index] = i = 0;
+ continue;
+ }
+ for (i = 0; i < n; ++i) {
+ if (used[i]) continue;
+ p[index] = i;
+ if (!yield_indexed_values(values, r, p)) {
+ rb_raise(rb_eRuntimeError, "permute reentered");
+ }
+ }
+ i = p[--index]; /* pop index */
+ used[i] = 0; /* index unused */
+ p[index] = ++i;
+ }
}
}
/*
* Returns the product of from, from-1, ..., from - how_many + 1.
- * https://en.wikipedia.org/wiki/Pochhammer_symbol
+ * http://en.wikipedia.org/wiki/Pochhammer_symbol
*/
static VALUE
descending_factorial(long from, long how_many)
{
VALUE cnt;
if (how_many > 0) {
- cnt = LONG2FIX(from);
- while (--how_many > 0) {
- long v = --from;
- cnt = rb_int_mul(cnt, LONG2FIX(v));
- }
+ cnt = LONG2FIX(from);
+ while (--how_many > 0) {
+ long v = --from;
+ cnt = rb_int_mul(cnt, LONG2FIX(v));
+ }
}
else {
- cnt = LONG2FIX(how_many == 0);
+ cnt = LONG2FIX(how_many == 0);
}
return cnt;
}
@@ -6942,18 +5161,18 @@ binomial_coefficient(long comb, long size)
VALUE r;
long i;
if (comb > size-comb) {
- comb = size-comb;
+ comb = size-comb;
}
if (comb < 0) {
- return LONG2FIX(0);
+ return LONG2FIX(0);
}
else if (comb == 0) {
- return LONG2FIX(1);
+ return LONG2FIX(1);
}
r = LONG2FIX(size);
for (i = 1; i < comb; ++i) {
- r = rb_int_mul(r, LONG2FIX(size - i));
- r = rb_int_idiv(r, LONG2FIX(i + 1));
+ r = rb_int_mul(r, LONG2FIX(size - i));
+ r = rb_int_idiv(r, LONG2FIX(i + 1));
}
return r;
}
@@ -6969,118 +5188,66 @@ rb_ary_permutation_size(VALUE ary, VALUE args, VALUE eobj)
/*
* call-seq:
- * array.permutation {|element| ... } -> self
- * array.permutation(n) {|element| ... } -> self
- * array.permutation -> new_enumerator
- * array.permutation(n) -> new_enumerator
- *
- * When invoked with a block, yield all permutations of elements of +self+; returns +self+.
- * The order of permutations is indeterminate.
- *
- * When a block and an in-range positive \Integer argument +n+ (<tt>0 < n <= self.size</tt>)
- * are given, calls the block with all +n+-tuple permutations of +self+.
- *
- * Example:
- *
- * a = [0, 1, 2]
- * a.permutation(2) {|permutation| p permutation }
- *
- * Output:
- *
- * [0, 1]
- * [0, 2]
- * [1, 0]
- * [1, 2]
- * [2, 0]
- * [2, 1]
- *
- * Another example:
- *
- * a = [0, 1, 2]
- * a.permutation(3) {|permutation| p permutation }
+ * ary.permutation { |p| block } -> ary
+ * ary.permutation -> Enumerator
+ * ary.permutation(n) { |p| block } -> ary
+ * ary.permutation(n) -> Enumerator
*
- * Output:
+ * When invoked with a block, yield all permutations of length +n+ of the
+ * elements of the array, then return the array itself.
*
- * [0, 1, 2]
- * [0, 2, 1]
- * [1, 0, 2]
- * [1, 2, 0]
- * [2, 0, 1]
- * [2, 1, 0]
+ * If +n+ is not specified, yield all permutations of all elements.
*
- * When +n+ is zero, calls the block once with a new empty \Array:
+ * The implementation makes no guarantees about the order in which the
+ * permutations are yielded.
*
- * a = [0, 1, 2]
- * a.permutation(0) {|permutation| p permutation }
+ * If no block is given, an Enumerator is returned instead.
*
- * Output:
- *
- * []
- *
- * When +n+ is out of range (negative or larger than <tt>self.size</tt>),
- * does not call the block:
- *
- * a = [0, 1, 2]
- * a.permutation(-1) {|permutation| fail 'Cannot happen' }
- * a.permutation(4) {|permutation| fail 'Cannot happen' }
- *
- * When a block given but no argument,
- * behaves the same as <tt>a.permutation(a.size)</tt>:
- *
- * a = [0, 1, 2]
- * a.permutation {|permutation| p permutation }
- *
- * Output:
- *
- * [0, 1, 2]
- * [0, 2, 1]
- * [1, 0, 2]
- * [1, 2, 0]
- * [2, 0, 1]
- * [2, 1, 0]
- *
- * Returns a new \Enumerator if no block given:
- *
- * a = [0, 1, 2]
- * a.permutation # => #<Enumerator: [0, 1, 2]:permutation>
- * a.permutation(2) # => #<Enumerator: [0, 1, 2]:permutation(2)>
+ * Examples:
*
+ * a = [1, 2, 3]
+ * a.permutation.to_a #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
+ * a.permutation(1).to_a #=> [[1],[2],[3]]
+ * a.permutation(2).to_a #=> [[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]
+ * a.permutation(3).to_a #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
+ * a.permutation(0).to_a #=> [[]] # one permutation of length 0
+ * a.permutation(4).to_a #=> [] # no permutations of length 4
*/
static VALUE
rb_ary_permutation(int argc, VALUE *argv, VALUE ary)
{
+ VALUE num;
long r, n, i;
n = RARRAY_LEN(ary); /* Array length */
RETURN_SIZED_ENUMERATOR(ary, argc, argv, rb_ary_permutation_size); /* Return enumerator if no block */
- r = n;
- if (rb_check_arity(argc, 0, 1) && !NIL_P(argv[0]))
- r = NUM2LONG(argv[0]); /* Permutation size from argument */
+ rb_scan_args(argc, argv, "01", &num);
+ r = NIL_P(num) ? n : NUM2LONG(num); /* Permutation size from argument */
if (r < 0 || n < r) {
- /* no permutations: yield nothing */
+ /* no permutations: yield nothing */
}
else if (r == 0) { /* exactly one permutation: the zero-length array */
- rb_yield(rb_ary_new2(0));
+ rb_yield(rb_ary_new2(0));
}
else if (r == 1) { /* this is a special, easy case */
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
- }
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
}
else { /* this is the general case */
- volatile VALUE t0;
- long *p = ALLOCV_N(long, t0, r+roomof(n, sizeof(long)));
- char *used = (char*)(p + r);
- VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
- RBASIC_CLEAR_CLASS(ary0);
+ volatile VALUE t0;
+ long *p = ALLOCV_N(long, t0, r+roomof(n, sizeof(long)));
+ char *used = (char*)(p + r);
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ RBASIC_CLEAR_CLASS(ary0);
- MEMZERO(used, char, n); /* initialize array */
+ MEMZERO(used, char, n); /* initialize array */
- permute0(n, r, p, used, ary0); /* compute and yield permutations */
- ALLOCV_END(t0);
- RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ permute0(n, r, p, used, ary0); /* compute and yield permutations */
+ ALLOCV_END(t0);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
}
return ary;
}
@@ -7093,16 +5260,16 @@ combinate0(const long len, const long n, long *const stack, const VALUE values)
MEMZERO(stack+1, long, n);
stack[0] = -1;
for (;;) {
- for (lev++; lev < n; lev++) {
- stack[lev+1] = stack[lev]+1;
- }
- if (!yield_indexed_values(values, n, stack+1)) {
- rb_raise(rb_eRuntimeError, "combination reentered");
- }
- do {
- if (lev == 0) return;
- stack[lev--]++;
- } while (stack[lev+1]+n == len+lev+1);
+ for (lev++; lev < n; lev++) {
+ stack[lev+1] = stack[lev]+1;
+ }
+ if (!yield_indexed_values(values, n, stack+1)) {
+ rb_raise(rb_eRuntimeError, "combination reentered");
+ }
+ do {
+ if (lev == 0) return;
+ stack[lev--]++;
+ } while (stack[lev+1]+n == len+lev+1);
}
}
@@ -7117,55 +5284,26 @@ rb_ary_combination_size(VALUE ary, VALUE args, VALUE eobj)
/*
* call-seq:
- * array.combination(n) {|element| ... } -> self
- * array.combination(n) -> new_enumerator
- *
- * Calls the block, if given, with combinations of elements of +self+;
- * returns +self+. The order of combinations is indeterminate.
- *
- * When a block and an in-range positive \Integer argument +n+ (<tt>0 < n <= self.size</tt>)
- * are given, calls the block with all +n+-tuple combinations of +self+.
- *
- * Example:
- *
- * a = [0, 1, 2]
- * a.combination(2) {|combination| p combination }
- *
- * Output:
- *
- * [0, 1]
- * [0, 2]
- * [1, 2]
- *
- * Another example:
- *
- * a = [0, 1, 2]
- * a.combination(3) {|combination| p combination }
- *
- * Output:
- *
- * [0, 1, 2]
- *
- * When +n+ is zero, calls the block once with a new empty \Array:
- *
- * a = [0, 1, 2]
- * a1 = a.combination(0) {|combination| p combination }
- *
- * Output:
+ * ary.combination(n) { |c| block } -> ary
+ * ary.combination(n) -> Enumerator
*
- * []
+ * When invoked with a block, yields all combinations of length +n+ of elements
+ * from the array and then returns the array itself.
*
- * When +n+ is out of range (negative or larger than <tt>self.size</tt>),
- * does not call the block:
+ * The implementation makes no guarantees about the order in which the
+ * combinations are yielded.
*
- * a = [0, 1, 2]
- * a.combination(-1) {|combination| fail 'Cannot happen' }
- * a.combination(4) {|combination| fail 'Cannot happen' }
+ * If no block is given, an Enumerator is returned instead.
*
- * Returns a new \Enumerator if no block given:
+ * Examples:
*
- * a = [0, 1, 2]
- * a.combination(2) # => #<Enumerator: [0, 1, 2]:combination(2)>
+ * a = [1, 2, 3, 4]
+ * a.combination(1).to_a #=> [[1],[2],[3],[4]]
+ * a.combination(2).to_a #=> [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
+ * a.combination(3).to_a #=> [[1,2,3],[1,2,4],[1,3,4],[2,3,4]]
+ * a.combination(4).to_a #=> [[1,2,3,4]]
+ * a.combination(0).to_a #=> [[]] # one combination of length 0
+ * a.combination(5).to_a #=> [] # no combinations of length 5
*
*/
@@ -7178,25 +5316,25 @@ rb_ary_combination(VALUE ary, VALUE num)
RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_combination_size);
len = RARRAY_LEN(ary);
if (n < 0 || len < n) {
- /* yield nothing */
+ /* yield nothing */
}
else if (n == 0) {
- rb_yield(rb_ary_new2(0));
+ rb_yield(rb_ary_new2(0));
}
else if (n == 1) {
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
- }
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
}
else {
- VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
- volatile VALUE t0;
- long *stack = ALLOCV_N(long, t0, n+1);
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ volatile VALUE t0;
+ long *stack = ALLOCV_N(long, t0, n+1);
- RBASIC_CLEAR_CLASS(ary0);
- combinate0(len, n, stack, ary0);
- ALLOCV_END(t0);
- RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ RBASIC_CLEAR_CLASS(ary0);
+ combinate0(len, n, stack, ary0);
+ ALLOCV_END(t0);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
}
return ary;
}
@@ -7220,19 +5358,19 @@ rpermute0(const long n, const long r, long *const p, const VALUE values)
p[index] = i;
for (;;) {
- if (++index < r-1) {
- p[index] = i = 0;
- continue;
- }
- for (i = 0; i < n; ++i) {
- p[index] = i;
- if (!yield_indexed_values(values, r, p)) {
- rb_raise(rb_eRuntimeError, "repeated permute reentered");
- }
- }
- do {
- if (index <= 0) return;
- } while ((i = ++p[--index]) >= n);
+ if (++index < r-1) {
+ p[index] = i = 0;
+ continue;
+ }
+ for (i = 0; i < n; ++i) {
+ p[index] = i;
+ if (!yield_indexed_values(values, r, p)) {
+ rb_raise(rb_eRuntimeError, "repeated permute reentered");
+ }
+ }
+ do {
+ if (index <= 0) return;
+ } while ((i = ++p[--index]) >= n);
}
}
@@ -7243,79 +5381,37 @@ rb_ary_repeated_permutation_size(VALUE ary, VALUE args, VALUE eobj)
long k = NUM2LONG(RARRAY_AREF(args, 0));
if (k < 0) {
- return LONG2FIX(0);
+ return LONG2FIX(0);
}
if (n <= 0) {
- return LONG2FIX(!k);
+ return LONG2FIX(!k);
}
return rb_int_positive_pow(n, (unsigned long)k);
}
/*
* call-seq:
- * array.repeated_permutation(n) {|permutation| ... } -> self
- * array.repeated_permutation(n) -> new_enumerator
- *
- * Calls the block with each repeated permutation of length +n+ of the elements of +self+;
- * each permutation is an \Array;
- * returns +self+. The order of the permutations is indeterminate.
- *
- * When a block and a positive \Integer argument +n+ are given, calls the block with each
- * +n+-tuple repeated permutation of the elements of +self+.
- * The number of permutations is <tt>self.size**n</tt>.
- *
- * +n+ = 1:
- *
- * a = [0, 1, 2]
- * a.repeated_permutation(1) {|permutation| p permutation }
- *
- * Output:
- *
- * [0]
- * [1]
- * [2]
- *
- * +n+ = 2:
- *
- * a.repeated_permutation(2) {|permutation| p permutation }
- *
- * Output:
- *
- * [0, 0]
- * [0, 1]
- * [0, 2]
- * [1, 0]
- * [1, 1]
- * [1, 2]
- * [2, 0]
- * [2, 1]
- * [2, 2]
+ * ary.repeated_permutation(n) { |p| block } -> ary
+ * ary.repeated_permutation(n) -> Enumerator
*
- * If +n+ is zero, calls the block once with an empty \Array.
+ * When invoked with a block, yield all repeated permutations of length +n+ of
+ * the elements of the array, then return the array itself.
*
- * If +n+ is negative, does not call the block:
+ * The implementation makes no guarantees about the order in which the repeated
+ * permutations are yielded.
*
- * a.repeated_permutation(-1) {|permutation| fail 'Cannot happen' }
+ * If no block is given, an Enumerator is returned instead.
*
- * Returns a new \Enumerator if no block given:
- *
- * a = [0, 1, 2]
- * a.repeated_permutation(2) # => #<Enumerator: [0, 1, 2]:permutation(2)>
- *
- * Using Enumerators, it's convenient to show the permutations and counts
- * for some values of +n+:
- *
- * e = a.repeated_permutation(0)
- * e.size # => 1
- * e.to_a # => [[]]
- * e = a.repeated_permutation(1)
- * e.size # => 3
- * e.to_a # => [[0], [1], [2]]
- * e = a.repeated_permutation(2)
- * e.size # => 9
- * e.to_a # => [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
+ * Examples:
*
+ * a = [1, 2]
+ * a.repeated_permutation(1).to_a #=> [[1], [2]]
+ * a.repeated_permutation(2).to_a #=> [[1,1],[1,2],[2,1],[2,2]]
+ * a.repeated_permutation(3).to_a #=> [[1,1,1],[1,1,2],[1,2,1],[1,2,2],
+ * # [2,1,1],[2,1,2],[2,2,1],[2,2,2]]
+ * a.repeated_permutation(0).to_a #=> [[]] # one permutation of length 0
*/
+
static VALUE
rb_ary_repeated_permutation(VALUE ary, VALUE num)
{
@@ -7326,25 +5422,25 @@ rb_ary_repeated_permutation(VALUE ary, VALUE num)
r = NUM2LONG(num); /* Permutation size from argument */
if (r < 0) {
- /* no permutations: yield nothing */
+ /* no permutations: yield nothing */
}
else if (r == 0) { /* exactly one permutation: the zero-length array */
- rb_yield(rb_ary_new2(0));
+ rb_yield(rb_ary_new2(0));
}
else if (r == 1) { /* this is a special, easy case */
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
- }
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
}
else { /* this is the general case */
- volatile VALUE t0;
- long *p = ALLOCV_N(long, t0, r);
- VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
- RBASIC_CLEAR_CLASS(ary0);
+ volatile VALUE t0;
+ long *p = ALLOCV_N(long, t0, r);
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ RBASIC_CLEAR_CLASS(ary0);
- rpermute0(n, r, p, ary0); /* compute and yield repeated permutations */
- ALLOCV_END(t0);
- RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ rpermute0(n, r, p, ary0); /* compute and yield repeated permutations */
+ ALLOCV_END(t0);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
}
return ary;
}
@@ -7356,19 +5452,19 @@ rcombinate0(const long n, const long r, long *const p, const long rest, const VA
p[index] = i;
for (;;) {
- if (++index < r-1) {
- p[index] = i;
- continue;
- }
- for (; i < n; ++i) {
- p[index] = i;
- if (!yield_indexed_values(values, r, p)) {
- rb_raise(rb_eRuntimeError, "repeated combination reentered");
- }
- }
- do {
- if (index <= 0) return;
- } while ((i = ++p[--index]) >= n);
+ if (++index < r-1) {
+ p[index] = i;
+ continue;
+ }
+ for (; i < n; ++i) {
+ p[index] = i;
+ if (!yield_indexed_values(values, r, p)) {
+ rb_raise(rb_eRuntimeError, "repeated combination reentered");
+ }
+ }
+ do {
+ if (index <= 0) return;
+ } while ((i = ++p[--index]) >= n);
}
}
@@ -7378,71 +5474,35 @@ rb_ary_repeated_combination_size(VALUE ary, VALUE args, VALUE eobj)
long n = RARRAY_LEN(ary);
long k = NUM2LONG(RARRAY_AREF(args, 0));
if (k == 0) {
- return LONG2FIX(1);
+ return LONG2FIX(1);
}
return binomial_coefficient(k, n + k - 1);
}
/*
* call-seq:
- * array.repeated_combination(n) {|combination| ... } -> self
- * array.repeated_combination(n) -> new_enumerator
- *
- * Calls the block with each repeated combination of length +n+ of the elements of +self+;
- * each combination is an \Array;
- * returns +self+. The order of the combinations is indeterminate.
- *
- * When a block and a positive \Integer argument +n+ are given, calls the block with each
- * +n+-tuple repeated combination of the elements of +self+.
- * The number of combinations is <tt>(n+1)(n+2)/2</tt>.
- *
- * +n+ = 1:
- *
- * a = [0, 1, 2]
- * a.repeated_combination(1) {|combination| p combination }
- *
- * Output:
+ * ary.repeated_combination(n) { |c| block } -> ary
+ * ary.repeated_combination(n) -> Enumerator
*
- * [0]
- * [1]
- * [2]
+ * When invoked with a block, yields all repeated combinations of length +n+ of
+ * elements from the array and then returns the array itself.
*
- * +n+ = 2:
+ * The implementation makes no guarantees about the order in which the repeated
+ * combinations are yielded.
*
- * a.repeated_combination(2) {|combination| p combination }
+ * If no block is given, an Enumerator is returned instead.
*
- * Output:
+ * Examples:
*
- * [0, 0]
- * [0, 1]
- * [0, 2]
- * [1, 1]
- * [1, 2]
- * [2, 2]
- *
- * If +n+ is zero, calls the block once with an empty \Array.
- *
- * If +n+ is negative, does not call the block:
- *
- * a.repeated_combination(-1) {|combination| fail 'Cannot happen' }
- *
- * Returns a new \Enumerator if no block given:
- *
- * a = [0, 1, 2]
- * a.repeated_combination(2) # => #<Enumerator: [0, 1, 2]:combination(2)>
- *
- * Using Enumerators, it's convenient to show the combinations and counts
- * for some values of +n+:
- *
- * e = a.repeated_combination(0)
- * e.size # => 1
- * e.to_a # => [[]]
- * e = a.repeated_combination(1)
- * e.size # => 3
- * e.to_a # => [[0], [1], [2]]
- * e = a.repeated_combination(2)
- * e.size # => 6
- * e.to_a # => [[0, 0], [0, 1], [0, 2], [1, 1], [1, 2], [2, 2]]
+ * a = [1, 2, 3]
+ * a.repeated_combination(1).to_a #=> [[1], [2], [3]]
+ * a.repeated_combination(2).to_a #=> [[1,1],[1,2],[1,3],[2,2],[2,3],[3,3]]
+ * a.repeated_combination(3).to_a #=> [[1,1,1],[1,1,2],[1,1,3],[1,2,2],[1,2,3],
+ * # [1,3,3],[2,2,2],[2,2,3],[2,3,3],[3,3,3]]
+ * a.repeated_combination(4).to_a #=> [[1,1,1,1],[1,1,1,2],[1,1,1,3],[1,1,2,2],[1,1,2,3],
+ * # [1,1,3,3],[1,2,2,2],[1,2,2,3],[1,2,3,3],[1,3,3,3],
+ * # [2,2,2,2],[2,2,2,3],[2,2,3,3],[2,3,3,3],[3,3,3,3]]
+ * a.repeated_combination(0).to_a #=> [[]] # one combination of length 0
*
*/
@@ -7455,105 +5515,67 @@ rb_ary_repeated_combination(VALUE ary, VALUE num)
RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_repeated_combination_size); /* Return enumerator if no block */
len = RARRAY_LEN(ary);
if (n < 0) {
- /* yield nothing */
+ /* yield nothing */
}
else if (n == 0) {
- rb_yield(rb_ary_new2(0));
+ rb_yield(rb_ary_new2(0));
}
else if (n == 1) {
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
- }
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
}
else if (len == 0) {
- /* yield nothing */
+ /* yield nothing */
}
else {
- volatile VALUE t0;
- long *p = ALLOCV_N(long, t0, n);
- VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
- RBASIC_CLEAR_CLASS(ary0);
+ volatile VALUE t0;
+ long *p = ALLOCV_N(long, t0, n);
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ RBASIC_CLEAR_CLASS(ary0);
- rcombinate0(len, n, p, n, ary0); /* compute and yield repeated combinations */
- ALLOCV_END(t0);
- RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ rcombinate0(len, n, p, n, ary0); /* compute and yield repeated combinations */
+ ALLOCV_END(t0);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
}
return ary;
}
/*
* call-seq:
- * array.product(*other_arrays) -> new_array
- * array.product(*other_arrays) {|combination| ... } -> self
- *
- * Computes and returns or yields all combinations of elements from all the Arrays,
- * including both +self+ and +other_arrays+:
- *
- * - The number of combinations is the product of the sizes of all the arrays,
- * including both +self+ and +other_arrays+.
- * - The order of the returned combinations is indeterminate.
- *
- * When no block is given, returns the combinations as an \Array of Arrays:
- *
- * a = [0, 1, 2]
- * a1 = [3, 4]
- * a2 = [5, 6]
- * p = a.product(a1)
- * p.size # => 6 # a.size * a1.size
- * p # => [[0, 3], [0, 4], [1, 3], [1, 4], [2, 3], [2, 4]]
- * p = a.product(a1, a2)
- * p.size # => 12 # a.size * a1.size * a2.size
- * p # => [[0, 3, 5], [0, 3, 6], [0, 4, 5], [0, 4, 6], [1, 3, 5], [1, 3, 6], [1, 4, 5], [1, 4, 6], [2, 3, 5], [2, 3, 6], [2, 4, 5], [2, 4, 6]]
- *
- * If any argument is an empty \Array, returns an empty \Array.
+ * ary.product(other_ary, ...) -> new_ary
+ * ary.product(other_ary, ...) { |p| block } -> ary
*
- * If no argument is given, returns an \Array of 1-element Arrays,
- * each containing an element of +self+:
+ * Returns an array of all combinations of elements from all arrays.
*
- * a.product # => [[0], [1], [2]]
+ * The length of the returned array is the product of the length of +self+ and
+ * the argument arrays.
*
- * When a block is given, yields each combination as an \Array; returns +self+:
- *
- * a.product(a1) {|combination| p combination }
- *
- * Output:
- *
- * [0, 3]
- * [0, 4]
- * [1, 3]
- * [1, 4]
- * [2, 3]
- * [2, 4]
- *
- * If any argument is an empty \Array, does not call the block:
- *
- * a.product(a1, a2, []) {|combination| fail 'Cannot happen' }
- *
- * If no argument is given, yields each element of +self+ as a 1-element \Array:
- *
- * a.product {|combination| p combination }
- *
- * Output:
- *
- * [0]
- * [1]
- * [2]
+ * If given a block, #product will yield all combinations and return +self+
+ * instead.
*
+ * [1,2,3].product([4,5]) #=> [[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]
+ * [1,2].product([1,2]) #=> [[1,1],[1,2],[2,1],[2,2]]
+ * [1,2].product([3,4],[5,6]) #=> [[1,3,5],[1,3,6],[1,4,5],[1,4,6],
+ * # [2,3,5],[2,3,6],[2,4,5],[2,4,6]]
+ * [1,2].product() #=> [[1],[2]]
+ * [1,2].product([]) #=> []
*/
static VALUE
rb_ary_product(int argc, VALUE *argv, VALUE ary)
{
int n = argc+1; /* How many arrays we're operating on */
- volatile VALUE t0 = rb_ary_hidden_new(n);
- volatile VALUE t1 = Qundef;
+ volatile VALUE t0 = tmpary(n);
+ volatile VALUE t1 = tmpbuf(n, sizeof(int));
VALUE *arrays = RARRAY_PTR(t0); /* The arrays we're computing the product of */
- int *counters = ALLOCV_N(int, t1, n); /* The current position in each one */
+ int *counters = (int*)RSTRING_PTR(t1); /* The current position in each one */
VALUE result = Qnil; /* The array we'll be returning, when no block given */
long i,j;
long resultlen = 1;
RBASIC_CLEAR_CLASS(t0);
+ RBASIC_CLEAR_CLASS(t1);
/* initialize the arrays of arrays */
ARY_SET_LEN(t0, n);
@@ -7566,84 +5588,81 @@ rb_ary_product(int argc, VALUE *argv, VALUE ary)
/* Otherwise, allocate and fill in an array of results */
if (rb_block_given_p()) {
- /* Make defensive copies of arrays; exit if any is empty */
- for (i = 0; i < n; i++) {
- if (RARRAY_LEN(arrays[i]) == 0) goto done;
- arrays[i] = ary_make_shared_copy(arrays[i]);
- }
+ /* Make defensive copies of arrays; exit if any is empty */
+ for (i = 0; i < n; i++) {
+ if (RARRAY_LEN(arrays[i]) == 0) goto done;
+ arrays[i] = ary_make_shared_copy(arrays[i]);
+ }
}
else {
- /* Compute the length of the result array; return [] if any is empty */
- for (i = 0; i < n; i++) {
- long k = RARRAY_LEN(arrays[i]);
- if (k == 0) {
- result = rb_ary_new2(0);
- goto done;
- }
+ /* Compute the length of the result array; return [] if any is empty */
+ for (i = 0; i < n; i++) {
+ long k = RARRAY_LEN(arrays[i]);
+ if (k == 0) {
+ result = rb_ary_new2(0);
+ goto done;
+ }
if (MUL_OVERFLOW_LONG_P(resultlen, k))
- rb_raise(rb_eRangeError, "too big to product");
- resultlen *= k;
- }
- result = rb_ary_new2(resultlen);
+ rb_raise(rb_eRangeError, "too big to product");
+ resultlen *= k;
+ }
+ result = rb_ary_new2(resultlen);
}
for (;;) {
- int m;
- /* fill in one subarray */
- VALUE subarray = rb_ary_new2(n);
- for (j = 0; j < n; j++) {
- rb_ary_push(subarray, rb_ary_entry(arrays[j], counters[j]));
- }
-
- /* put it on the result array */
- if (NIL_P(result)) {
- FL_SET(t0, RARRAY_SHARED_ROOT_FLAG);
- rb_yield(subarray);
- if (!FL_TEST(t0, RARRAY_SHARED_ROOT_FLAG)) {
- rb_raise(rb_eRuntimeError, "product reentered");
- }
- else {
- FL_UNSET(t0, RARRAY_SHARED_ROOT_FLAG);
- }
- }
- else {
- rb_ary_push(result, subarray);
- }
-
- /*
- * Increment the last counter. If it overflows, reset to 0
- * and increment the one before it.
- */
- m = n-1;
- counters[m]++;
- while (counters[m] == RARRAY_LEN(arrays[m])) {
- counters[m] = 0;
- /* If the first counter overflows, we are done */
- if (--m < 0) goto done;
- counters[m]++;
- }
+ int m;
+ /* fill in one subarray */
+ VALUE subarray = rb_ary_new2(n);
+ for (j = 0; j < n; j++) {
+ rb_ary_push(subarray, rb_ary_entry(arrays[j], counters[j]));
+ }
+
+ /* put it on the result array */
+ if (NIL_P(result)) {
+ FL_SET(t0, FL_USER5);
+ rb_yield(subarray);
+ if (! FL_TEST(t0, FL_USER5)) {
+ rb_raise(rb_eRuntimeError, "product reentered");
+ }
+ else {
+ FL_UNSET(t0, FL_USER5);
+ }
+ }
+ else {
+ rb_ary_push(result, subarray);
+ }
+
+ /*
+ * Increment the last counter. If it overflows, reset to 0
+ * and increment the one before it.
+ */
+ m = n-1;
+ counters[m]++;
+ while (counters[m] == RARRAY_LEN(arrays[m])) {
+ counters[m] = 0;
+ /* If the first counter overflows, we are done */
+ if (--m < 0) goto done;
+ counters[m]++;
+ }
}
-
done:
- ALLOCV_END(t1);
+ tmpary_discard(t0);
+ tmpbuf_discard(t1);
return NIL_P(result) ? ary : result;
}
/*
* call-seq:
- * array.take(n) -> new_array
+ * ary.take(n) -> new_ary
+ *
+ * Returns first +n+ elements from the array.
*
- * Returns a new \Array containing the first +n+ element of +self+,
- * where +n+ is a non-negative \Integer;
- * does not modify +self+.
+ * If a negative number is given, raises an ArgumentError.
*
- * Examples:
+ * See also Array#drop
*
- * a = [0, 1, 2, 3, 4, 5]
- * a.take(1) # => [0]
- * a.take(2) # => [0, 1]
- * a.take(50) # => [0, 1, 2, 3, 4, 5]
- * a # => [0, 1, 2, 3, 4, 5]
+ * a = [1, 2, 3, 4, 5, 0]
+ * a.take(3) #=> [1, 2, 3]
*
*/
@@ -7652,31 +5671,25 @@ rb_ary_take(VALUE obj, VALUE n)
{
long len = NUM2LONG(n);
if (len < 0) {
- rb_raise(rb_eArgError, "attempt to take negative size");
+ rb_raise(rb_eArgError, "attempt to take negative size");
}
return rb_ary_subseq(obj, 0, len);
}
/*
* call-seq:
- * array.take_while {|element| ... } -> new_array
- * array.take_while -> new_enumerator
+ * ary.take_while { |obj| block } -> new_ary
+ * ary.take_while -> Enumerator
*
- * Returns a new \Array containing zero or more leading elements of +self+;
- * does not modify +self+.
+ * Passes elements to the block until the block returns +nil+ or +false+, then
+ * stops iterating and returns an array of all prior elements.
*
- * With a block given, calls the block with each successive element of +self+;
- * stops if the block returns +false+ or +nil+;
- * returns a new \Array containing those elements for which the block returned a truthy value:
+ * If no block is given, an Enumerator is returned instead.
*
- * a = [0, 1, 2, 3, 4, 5]
- * a.take_while {|element| element < 3 } # => [0, 1, 2]
- * a.take_while {|element| true } # => [0, 1, 2, 3, 4, 5]
- * a # => [0, 1, 2, 3, 4, 5]
+ * See also Array#drop_while
*
- * With no block given, returns a new \Enumerator:
- *
- * [0, 1].take_while # => #<Enumerator: [0, 1]:take_while>
+ * a = [1, 2, 3, 4, 5, 0]
+ * a.take_while { |i| i < 3 } #=> [1, 2]
*
*/
@@ -7687,25 +5700,24 @@ rb_ary_take_while(VALUE ary)
RETURN_ENUMERATOR(ary, 0, 0);
for (i = 0; i < RARRAY_LEN(ary); i++) {
- if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) break;
+ if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) break;
}
return rb_ary_take(ary, LONG2FIX(i));
}
/*
* call-seq:
- * array.drop(n) -> new_array
+ * ary.drop(n) -> new_ary
+ *
+ * Drops first +n+ elements from +ary+ and returns the rest of the elements in
+ * an array.
*
- * Returns a new \Array containing all but the first +n+ element of +self+,
- * where +n+ is a non-negative \Integer;
- * does not modify +self+.
+ * If a negative number is given, raises an ArgumentError.
*
- * Examples:
+ * See also Array#take
*
- * a = [0, 1, 2, 3, 4, 5]
- * a.drop(0) # => [0, 1, 2, 3, 4, 5]
- * a.drop(1) # => [1, 2, 3, 4, 5]
- * a.drop(2) # => [2, 3, 4, 5]
+ * a = [1, 2, 3, 4, 5, 0]
+ * a.drop(3) #=> [4, 5, 0]
*
*/
@@ -7715,32 +5727,29 @@ rb_ary_drop(VALUE ary, VALUE n)
VALUE result;
long pos = NUM2LONG(n);
if (pos < 0) {
- rb_raise(rb_eArgError, "attempt to drop negative size");
+ rb_raise(rb_eArgError, "attempt to drop negative size");
}
result = rb_ary_subseq(ary, pos, RARRAY_LEN(ary));
- if (NIL_P(result)) result = rb_ary_new();
+ if (result == Qnil) result = rb_ary_new();
return result;
}
/*
* call-seq:
- * array.drop_while {|element| ... } -> new_array
- * array.drop_while -> new_enumerator
-
- * Returns a new \Array containing zero or more trailing elements of +self+;
- * does not modify +self+.
+ * ary.drop_while { |obj| block } -> new_ary
+ * ary.drop_while -> Enumerator
*
- * With a block given, calls the block with each successive element of +self+;
- * stops if the block returns +false+ or +nil+;
- * returns a new \Array _omitting_ those elements for which the block returned a truthy value:
+ * Drops elements up to, but not including, the first element for which the
+ * block returns +nil+ or +false+ and returns an array containing the
+ * remaining elements.
*
- * a = [0, 1, 2, 3, 4, 5]
- * a.drop_while {|element| element < 3 } # => [3, 4, 5]
+ * If no block is given, an Enumerator is returned instead.
*
- * With no block given, returns a new \Enumerator:
+ * See also Array#take_while
*
- * [0, 1].drop_while # => # => #<Enumerator: [0, 1]:drop_while>
+ * a = [1, 2, 3, 4, 5, 0]
+ * a.drop_while {|i| i < 3 } #=> [3, 4, 5, 0]
*
*/
@@ -7751,286 +5760,59 @@ rb_ary_drop_while(VALUE ary)
RETURN_ENUMERATOR(ary, 0, 0);
for (i = 0; i < RARRAY_LEN(ary); i++) {
- if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) break;
+ if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) break;
}
return rb_ary_drop(ary, LONG2FIX(i));
}
/*
* call-seq:
- * array.any? -> true or false
- * array.any? {|element| ... } -> true or false
- * array.any?(obj) -> true or false
- *
- * Returns +true+ if any element of +self+ meets a given criterion.
- *
- * With no block given and no argument, returns +true+ if +self+ has any truthy element,
- * +false+ otherwise:
- *
- * [nil, 0, false].any? # => true
- * [nil, false].any? # => false
- * [].any? # => false
- *
- * With a block given and no argument, calls the block with each element in +self+;
- * returns +true+ if the block returns any truthy value, +false+ otherwise:
+ * ary.any? [{ |obj| block }] -> true or false
*
- * [0, 1, 2].any? {|element| element > 1 } # => true
- * [0, 1, 2].any? {|element| element > 2 } # => false
- *
- * If argument +obj+ is given, returns +true+ if +obj+.<tt>===</tt> any element,
- * +false+ otherwise:
- *
- * ['food', 'drink'].any?(/foo/) # => true
- * ['food', 'drink'].any?(/bar/) # => false
- * [].any?(/foo/) # => false
- * [0, 1, 2].any?(1) # => true
- * [0, 1, 2].any?(3) # => false
- *
- * Related: Enumerable#any?
+ * See also Enumerable#any?
*/
static VALUE
rb_ary_any_p(int argc, VALUE *argv, VALUE ary)
{
long i, len = RARRAY_LEN(ary);
+ const VALUE *ptr = RARRAY_CONST_PTR(ary);
rb_check_arity(argc, 0, 1);
if (!len) return Qfalse;
if (argc) {
- if (rb_block_given_p()) {
- rb_warn("given block not used");
- }
- for (i = 0; i < RARRAY_LEN(ary); ++i) {
- if (RTEST(rb_funcall(argv[0], idEqq, 1, RARRAY_AREF(ary, i)))) return Qtrue;
- }
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ if (RTEST(rb_funcall(argv[0], idEqq, 1, RARRAY_AREF(ary, i)))) return Qtrue;
+ }
}
else if (!rb_block_given_p()) {
- for (i = 0; i < len; ++i) {
- if (RTEST(RARRAY_AREF(ary, i))) return Qtrue;
- }
+ for (i = 0; i < len; ++i) if (RTEST(ptr[i])) return Qtrue;
}
else {
- for (i = 0; i < RARRAY_LEN(ary); ++i) {
- if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) return Qtrue;
- }
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) return Qtrue;
+ }
}
return Qfalse;
}
/*
- * call-seq:
- * array.all? -> true or false
- * array.all? {|element| ... } -> true or false
- * array.all?(obj) -> true or false
- *
- * Returns +true+ if all elements of +self+ meet a given criterion.
- *
- * With no block given and no argument, returns +true+ if +self+ contains only truthy elements,
- * +false+ otherwise:
- *
- * [0, 1, :foo].all? # => true
- * [0, nil, 2].all? # => false
- * [].all? # => true
- *
- * With a block given and no argument, calls the block with each element in +self+;
- * returns +true+ if the block returns only truthy values, +false+ otherwise:
- *
- * [0, 1, 2].all? { |element| element < 3 } # => true
- * [0, 1, 2].all? { |element| element < 2 } # => false
- *
- * If argument +obj+ is given, returns +true+ if <tt>obj.===</tt> every element, +false+ otherwise:
- *
- * ['food', 'fool', 'foot'].all?(/foo/) # => true
- * ['food', 'drink'].all?(/bar/) # => false
- * [].all?(/foo/) # => true
- * [0, 0, 0].all?(0) # => true
- * [0, 1, 2].all?(1) # => false
- *
- * Related: Enumerable#all?
- */
-
-static VALUE
-rb_ary_all_p(int argc, VALUE *argv, VALUE ary)
-{
- long i, len = RARRAY_LEN(ary);
-
- rb_check_arity(argc, 0, 1);
- if (!len) return Qtrue;
- if (argc) {
- if (rb_block_given_p()) {
- rb_warn("given block not used");
- }
- for (i = 0; i < RARRAY_LEN(ary); ++i) {
- if (!RTEST(rb_funcall(argv[0], idEqq, 1, RARRAY_AREF(ary, i)))) return Qfalse;
- }
- }
- else if (!rb_block_given_p()) {
- for (i = 0; i < len; ++i) {
- if (!RTEST(RARRAY_AREF(ary, i))) return Qfalse;
- }
- }
- else {
- for (i = 0; i < RARRAY_LEN(ary); ++i) {
- if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) return Qfalse;
- }
- }
- return Qtrue;
-}
-
-/*
- * call-seq:
- * array.none? -> true or false
- * array.none? {|element| ... } -> true or false
- * array.none?(obj) -> true or false
- *
- * Returns +true+ if no element of +self+ meet a given criterion.
- *
- * With no block given and no argument, returns +true+ if +self+ has no truthy elements,
- * +false+ otherwise:
- *
- * [nil, false].none? # => true
- * [nil, 0, false].none? # => false
- * [].none? # => true
- *
- * With a block given and no argument, calls the block with each element in +self+;
- * returns +true+ if the block returns no truthy value, +false+ otherwise:
- *
- * [0, 1, 2].none? {|element| element > 3 } # => true
- * [0, 1, 2].none? {|element| element > 1 } # => false
- *
- * If argument +obj+ is given, returns +true+ if <tt>obj.===</tt> no element, +false+ otherwise:
- *
- * ['food', 'drink'].none?(/bar/) # => true
- * ['food', 'drink'].none?(/foo/) # => false
- * [].none?(/foo/) # => true
- * [0, 1, 2].none?(3) # => true
- * [0, 1, 2].none?(1) # => false
- *
- * Related: Enumerable#none?
- */
-
-static VALUE
-rb_ary_none_p(int argc, VALUE *argv, VALUE ary)
-{
- long i, len = RARRAY_LEN(ary);
-
- rb_check_arity(argc, 0, 1);
- if (!len) return Qtrue;
- if (argc) {
- if (rb_block_given_p()) {
- rb_warn("given block not used");
- }
- for (i = 0; i < RARRAY_LEN(ary); ++i) {
- if (RTEST(rb_funcall(argv[0], idEqq, 1, RARRAY_AREF(ary, i)))) return Qfalse;
- }
- }
- else if (!rb_block_given_p()) {
- for (i = 0; i < len; ++i) {
- if (RTEST(RARRAY_AREF(ary, i))) return Qfalse;
- }
- }
- else {
- for (i = 0; i < RARRAY_LEN(ary); ++i) {
- if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) return Qfalse;
- }
- }
- return Qtrue;
-}
-
-/*
- * call-seq:
- * array.one? -> true or false
- * array.one? {|element| ... } -> true or false
- * array.one?(obj) -> true or false
- *
- * Returns +true+ if exactly one element of +self+ meets a given criterion.
- *
- * With no block given and no argument, returns +true+ if +self+ has exactly one truthy element,
- * +false+ otherwise:
- *
- * [nil, 0].one? # => true
- * [0, 0].one? # => false
- * [nil, nil].one? # => false
- * [].one? # => false
- *
- * With a block given and no argument, calls the block with each element in +self+;
- * returns +true+ if the block a truthy value for exactly one element, +false+ otherwise:
- *
- * [0, 1, 2].one? {|element| element > 0 } # => false
- * [0, 1, 2].one? {|element| element > 1 } # => true
- * [0, 1, 2].one? {|element| element > 2 } # => false
- *
- * If argument +obj+ is given, returns +true+ if <tt>obj.===</tt> exactly one element,
- * +false+ otherwise:
- *
- * [0, 1, 2].one?(0) # => true
- * [0, 0, 1].one?(0) # => false
- * [1, 1, 2].one?(0) # => false
- * ['food', 'drink'].one?(/bar/) # => false
- * ['food', 'drink'].one?(/foo/) # => true
- * [].one?(/foo/) # => false
- *
- * Related: Enumerable#one?
- */
-
-static VALUE
-rb_ary_one_p(int argc, VALUE *argv, VALUE ary)
-{
- long i, len = RARRAY_LEN(ary);
- VALUE result = Qfalse;
-
- rb_check_arity(argc, 0, 1);
- if (!len) return Qfalse;
- if (argc) {
- if (rb_block_given_p()) {
- rb_warn("given block not used");
- }
- for (i = 0; i < RARRAY_LEN(ary); ++i) {
- if (RTEST(rb_funcall(argv[0], idEqq, 1, RARRAY_AREF(ary, i)))) {
- if (result) return Qfalse;
- result = Qtrue;
- }
- }
- }
- else if (!rb_block_given_p()) {
- for (i = 0; i < len; ++i) {
- if (RTEST(RARRAY_AREF(ary, i))) {
- if (result) return Qfalse;
- result = Qtrue;
- }
- }
- }
- else {
- for (i = 0; i < RARRAY_LEN(ary); ++i) {
- if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
- if (result) return Qfalse;
- result = Qtrue;
- }
- }
- }
- return result;
-}
-
-/*
- * call-seq:
- * array.dig(index, *identifiers) -> object
- *
- * Finds and returns the object in nested objects
- * that is specified by +index+ and +identifiers+.
- * The nested objects may be instances of various classes.
- * See {Dig Methods}[rdoc-ref:dig_methods.rdoc].
+ * call-seq:
+ * ary.dig(idx, ...) -> object
*
- * Examples:
+ * Extracts the nested value specified by the sequence of <i>idx</i>
+ * objects by calling +dig+ at each step, returning +nil+ if any
+ * intermediate step is +nil+.
*
- * a = [:foo, [:bar, :baz, [:bat, :bam]]]
- * a.dig(1) # => [:bar, :baz, [:bat, :bam]]
- * a.dig(1, 2) # => [:bat, :bam]
- * a.dig(1, 2, 0) # => :bat
- * a.dig(1, 2, 3) # => nil
+ * a = [[1, [2, 3]]]
*
+ * a.dig(0, 1, 1) #=> 3
+ * a.dig(1, 2, 3) #=> nil
+ * a.dig(0, 0, 0) #=> TypeError: Integer does not have #dig method
+ * [42, {foo: :bar}].dig(1, :foo) #=> :bar
*/
-static VALUE
+VALUE
rb_ary_dig(int argc, VALUE *argv, VALUE self)
{
rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);
@@ -8045,8 +5827,14 @@ finish_exact_sum(long n, VALUE r, VALUE v, int z)
{
if (n != 0)
v = rb_fix_plus(LONG2FIX(n), v);
- if (!UNDEF_P(r)) {
- v = rb_rational_plus(r, v);
+ if (r != Qundef) {
+ /* r can be an Integer when mathn is loaded */
+ if (FIXNUM_P(r))
+ v = rb_fix_plus(r, v);
+ else if (RB_TYPE_P(r, T_BIGNUM))
+ v = rb_big_plus(r, v);
+ else
+ v = rb_rational_plus(r, v);
}
else if (!n && z) {
v = rb_fix_plus(LONG2FIX(0), v);
@@ -8056,41 +5844,43 @@ finish_exact_sum(long n, VALUE r, VALUE v, int z)
/*
* call-seq:
- * array.sum(init = 0) -> object
- * array.sum(init = 0) {|element| ... } -> object
+ * ary.sum(init=0) -> number
+ * ary.sum(init=0) {|e| expr } -> number
+ *
+ * Returns the sum of elements.
+ * For example, [e1, e2, e3].sum returns init + e1 + e2 + e3.
*
- * When no block is given, returns the object equivalent to:
+ * If a block is given, the block is applied to each element
+ * before addition.
*
- * sum = init
- * array.each {|element| sum += element }
- * sum
+ * If <i>ary</i> is empty, it returns <i>init</i>.
*
- * For example, <tt>[e1, e2, e3].sum</tt> returns <tt>init + e1 + e2 + e3</tt>.
+ * [].sum #=> 0
+ * [].sum(0.0) #=> 0.0
+ * [1, 2, 3].sum #=> 6
+ * [3, 5.5].sum #=> 8.5
+ * [2.5, 3.0].sum(0.0) {|e| e * e } #=> 15.25
+ * [Object.new].sum #=> TypeError
*
- * Examples:
+ * The (arithmetic) mean value of an array can be obtained as follows.
*
- * a = [0, 1, 2, 3]
- * a.sum # => 6
- * a.sum(100) # => 106
+ * mean = ary.sum(0.0) / ary.length
*
- * The elements need not be numeric, but must be <tt>+</tt>-compatible
- * with each other and with +init+:
+ * This method can be used for non-numeric objects by
+ * explicit <i>init</i> argument.
*
- * a = ['abc', 'def', 'ghi']
- * a.sum('jkl') # => "jklabcdefghi"
+ * ["a", "b", "c"].sum("") #=> "abc"
+ * [[1], [[2]], [3]].sum([]) #=> [1, [2], 3]
*
- * When a block is given, it is called with each element
- * and the block's return value (instead of the element itself) is used as the addend:
+ * However, Array#join and Array#flatten is faster than Array#sum for
+ * array of strings and array of arrays.
*
- * a = ['zero', 1, :two]
- * s = a.sum('Coerced and concatenated: ') {|element| element.to_s }
- * s # => "Coerced and concatenated: zero1two"
+ * ["a", "b", "c"].join #=> "abc"
+ * [[1], [[2]], [3]].flatten(1) #=> [1, [2], 3]
*
- * Notes:
*
- * - Array#join and Array#flatten may be faster than Array#sum
- * for an \Array of Strings or an \Array of Arrays.
- * - Array#sum method may not respect method redefinition of "+" methods such as Integer#+.
+ * Array#sum method may not respect method redefinition of "+" methods
+ * such as Integer#+.
*
*/
@@ -8101,7 +5891,8 @@ rb_ary_sum(int argc, VALUE *argv, VALUE ary)
long i, n;
int block_given;
- v = (rb_check_arity(argc, 0, 1) ? argv[0] : LONG2FIX(0));
+ if (rb_scan_args(argc, argv, "01", &v) == 0)
+ v = LONG2FIX(0);
block_given = rb_block_given_p();
@@ -8110,12 +5901,6 @@ rb_ary_sum(int argc, VALUE *argv, VALUE ary)
n = 0;
r = Qundef;
-
- if (!FIXNUM_P(v) && !RB_BIGNUM_TYPE_P(v) && !RB_TYPE_P(v, T_RATIONAL)) {
- i = 0;
- goto init_is_a_value;
- }
-
for (i = 0; i < RARRAY_LEN(ary); i++) {
e = RARRAY_AREF(ary, i);
if (block_given)
@@ -8127,10 +5912,10 @@ rb_ary_sum(int argc, VALUE *argv, VALUE ary)
n = 0;
}
}
- else if (RB_BIGNUM_TYPE_P(e))
+ else if (RB_TYPE_P(e, T_BIGNUM))
v = rb_big_plus(e, v);
else if (RB_TYPE_P(e, T_RATIONAL)) {
- if (UNDEF_P(r))
+ if (r == Qundef)
r = e;
else
r = rb_rational_plus(r, e);
@@ -8147,15 +5932,15 @@ rb_ary_sum(int argc, VALUE *argv, VALUE ary)
if (RB_FLOAT_TYPE_P(e)) {
/*
* Kahan-Babuska balancing compensated summation algorithm
- * See https://link.springer.com/article/10.1007/s00607-005-0139-x
+ * See http://link.springer.com/article/10.1007/s00607-005-0139-x
*/
double f, c;
- double x, t;
f = NUM2DBL(v);
c = 0.0;
goto has_float_value;
for (; i < RARRAY_LEN(ary); i++) {
+ double x, t;
e = RARRAY_AREF(ary, i);
if (block_given)
e = rb_yield(e);
@@ -8164,7 +5949,7 @@ rb_ary_sum(int argc, VALUE *argv, VALUE ary)
x = RFLOAT_VALUE(e);
else if (FIXNUM_P(e))
x = FIX2LONG(e);
- else if (RB_BIGNUM_TYPE_P(e))
+ else if (RB_TYPE_P(e, T_BIGNUM))
x = rb_big2dbl(e);
else if (RB_TYPE_P(e, T_RATIONAL))
x = rb_num2dbl(e);
@@ -8200,7 +5985,6 @@ rb_ary_sum(int argc, VALUE *argv, VALUE ary)
}
goto has_some_value;
- init_is_a_value:
for (; i < RARRAY_LEN(ary); i++) {
e = RARRAY_AREF(ary, i);
if (block_given)
@@ -8211,135 +5995,56 @@ rb_ary_sum(int argc, VALUE *argv, VALUE ary)
return v;
}
-static VALUE
-rb_ary_deconstruct(VALUE ary)
-{
- return ary;
-}
-
/*
- * An \Array is an ordered, integer-indexed collection of objects, called _elements_.
- * Any object (even another array) may be an array element,
- * and an array can contain objects of different types.
- *
- * == \Array Indexes
- *
- * \Array indexing starts at 0, as in C or Java.
- *
- * A positive index is an offset from the first element:
- *
- * - Index 0 indicates the first element.
- * - Index 1 indicates the second element.
- * - ...
- *
- * A negative index is an offset, backwards, from the end of the array:
- *
- * - Index -1 indicates the last element.
- * - Index -2 indicates the next-to-last element.
- * - ...
- *
- * A non-negative index is <i>in range</i> if and only if it is smaller than
- * the size of the array. For a 3-element array:
- *
- * - Indexes 0 through 2 are in range.
- * - Index 3 is out of range.
- *
- * A negative index is <i>in range</i> if and only if its absolute value is
- * not larger than the size of the array. For a 3-element array:
- *
- * - Indexes -1 through -3 are in range.
- * - Index -4 is out of range.
- *
- * Although the effective index into an array is always an integer,
- * some methods (both within and outside of class \Array)
- * accept one or more non-integer arguments that are
- * {integer-convertible objects}[rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects].
+ * Arrays are ordered, integer-indexed collections of any object.
*
+ * Array indexing starts at 0, as in C or Java. A negative index is assumed
+ * to be relative to the end of the array---that is, an index of -1 indicates
+ * the last element of the array, -2 is the next to last element in the
+ * array, and so on.
*
* == Creating Arrays
*
- * You can create an \Array object explicitly with:
- *
- * - An {array literal}[rdoc-ref:literals.rdoc@Array+Literals]:
- *
- * [1, 'one', :one, [2, 'two', :two]]
- *
- * - A {%w or %W: string-array Literal}[rdoc-ref:literals.rdoc@25w+and+-25W-3A+String-Array+Literals]:
- *
- * %w[foo bar baz] # => ["foo", "bar", "baz"]
- * %w[1 % *] # => ["1", "%", "*"]
+ * A new array can be created by using the literal constructor
+ * <code>[]</code>. Arrays can contain different types of objects. For
+ * example, the array below contains an Integer, a String and a Float:
*
- * - A {%i pr %I: symbol-array Literal}[rdoc-ref:literals.rdoc@25i+and+-25I-3A+Symbol-Array+Literals]:
+ * ary = [1, "two", 3.0] #=> [1, "two", 3.0]
*
- * %i[foo bar baz] # => [:foo, :bar, :baz]
- * %i[1 % *] # => [:"1", :%, :*]
+ * An array can also be created by explicitly calling Array.new with zero, one
+ * (the initial size of the Array) or two arguments (the initial size and a
+ * default object).
*
- * - \Method Kernel#Array:
+ * ary = Array.new #=> []
+ * Array.new(3) #=> [nil, nil, nil]
+ * Array.new(3, true) #=> [true, true, true]
*
- * Array(["a", "b"]) # => ["a", "b"]
- * Array(1..5) # => [1, 2, 3, 4, 5]
- * Array(key: :value) # => [[:key, :value]]
- * Array(nil) # => []
- * Array(1) # => [1]
- * Array({:a => "a", :b => "b"}) # => [[:a, "a"], [:b, "b"]]
+ * Note that the second argument populates the array with references to the
+ * same object. Therefore, it is only recommended in cases when you need to
+ * instantiate arrays with natively immutable objects such as Symbols,
+ * numbers, true or false.
*
- * - \Method Array.new:
+ * To create an array with separate objects a block can be passed instead.
+ * This method is safe to use with mutable objects such as hashes, strings or
+ * other arrays:
*
- * Array.new # => []
- * Array.new(3) # => [nil, nil, nil]
- * Array.new(4) {Hash.new} # => [{}, {}, {}, {}]
- * Array.new(3, true) # => [true, true, true]
+ * Array.new(4) { Hash.new } #=> [{}, {}, {}, {}]
+ * Array.new(4) {|i| i.to_s } #=> ["0", "1", "2", "3"]
*
- * Note that the last example above populates the array
- * with references to the same object.
- * This is recommended only in cases where that object is a natively immutable object
- * such as a symbol, a numeric, +nil+, +true+, or +false+.
+ * This is also a quick way to build up multi-dimensional arrays:
*
- * Another way to create an array with various objects, using a block;
- * this usage is safe for mutable objects such as hashes, strings or
- * other arrays:
+ * empty_table = Array.new(3) { Array.new(3) }
+ * #=> [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
*
- * Array.new(4) {|i| i.to_s } # => ["0", "1", "2", "3"]
+ * An array can also be created by using the Array() method, provided by
+ * Kernel, which tries to call #to_ary, then #to_a on its argument.
*
- * Here is a way to create a multi-dimensional array:
- *
- * Array.new(3) {Array.new(3)}
- * # => [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
- *
- * A number of Ruby methods, both in the core and in the standard library,
- * provide instance method +to_a+, which converts an object to an array.
- *
- * - ARGF#to_a
- * - Array#to_a
- * - Enumerable#to_a
- * - Hash#to_a
- * - MatchData#to_a
- * - NilClass#to_a
- * - OptionParser#to_a
- * - Range#to_a
- * - Set#to_a
- * - Struct#to_a
- * - Time#to_a
- * - Benchmark::Tms#to_a
- * - CSV::Table#to_a
- * - Enumerator::Lazy#to_a
- * - Gem::List#to_a
- * - Gem::NameTuple#to_a
- * - Gem::Platform#to_a
- * - Gem::RequestSet::Lockfile::Tokenizer#to_a
- * - Gem::SourceList#to_a
- * - OpenSSL::X509::Extension#to_a
- * - OpenSSL::X509::Name#to_a
- * - Racc::ISet#to_a
- * - Rinda::RingFinger#to_a
- * - Ripper::Lexer::Elem#to_a
- * - RubyVM::InstructionSequence#to_a
- * - YAML::DBM#to_a
+ * Array({:a => "a", :b => "b"}) #=> [[:a, "a"], [:b, "b"]]
*
* == Example Usage
*
* In addition to the methods it mixes in through the Enumerable module, the
- * \Array class has proprietary methods for accessing, searching and otherwise
+ * Array class has proprietary methods for accessing, searching and otherwise
* manipulating arrays.
*
* Some of the more common ones are illustrated below.
@@ -8387,7 +6092,7 @@ rb_ary_deconstruct(VALUE ary)
*
* arr.drop(3) #=> [4, 5, 6]
*
- * == Obtaining Information about an \Array
+ * == Obtaining Information about an Array
*
* Arrays keep track of their own length at all times. To query an array
* about the number of elements it contains, use #length, #count or #size.
@@ -8425,7 +6130,7 @@ rb_ary_deconstruct(VALUE ary)
* arr.insert(3, 'orange', 'pear', 'grapefruit')
* #=> [0, 1, 2, "orange", "pear", "grapefruit", "apple", 3, 4, 5, 6]
*
- * == Removing Items from an \Array
+ * == Removing Items from an Array
*
* The method #pop removes the last element in an array and returns it:
*
@@ -8467,15 +6172,15 @@ rb_ary_deconstruct(VALUE ary)
*
* == Iterating over Arrays
*
- * Like all classes that include the Enumerable module, \Array has an each
+ * Like all classes that include the Enumerable module, Array has an each
* method, which defines what elements should be iterated over and how. In
- * case of Array's #each, all elements in the \Array instance are yielded to
+ * case of Array's #each, all elements in the Array instance are yielded to
* the supplied block in sequence.
*
* Note that this operation leaves the array unchanged.
*
* arr = [1, 2, 3, 4, 5]
- * arr.each {|a| print a -= 10, " "}
+ * arr.each { |a| print a -= 10, " " }
* # prints: -9 -8 -7 -6 -5
* #=> [1, 2, 3, 4, 5]
*
@@ -8484,19 +6189,18 @@ rb_ary_deconstruct(VALUE ary)
*
* words = %w[first second third fourth fifth sixth]
* str = ""
- * words.reverse_each {|word| str += "#{word} "}
+ * words.reverse_each { |word| str += "#{word} " }
* p str #=> "sixth fifth fourth third second first "
*
* The #map method can be used to create a new array based on the original
* array, but with the values modified by the supplied block:
*
- * arr.map {|a| 2*a} #=> [2, 4, 6, 8, 10]
+ * arr.map { |a| 2*a } #=> [2, 4, 6, 8, 10]
* arr #=> [1, 2, 3, 4, 5]
- * arr.map! {|a| a**2} #=> [1, 4, 9, 16, 25]
+ * arr.map! { |a| a**2 } #=> [1, 4, 9, 16, 25]
* arr #=> [1, 4, 9, 16, 25]
*
- *
- * == Selecting Items from an \Array
+ * == Selecting Items from an Array
*
* Elements can be selected from an array according to criteria defined in a
* block. The selection can happen in a destructive or a non-destructive
@@ -8507,9 +6211,9 @@ rb_ary_deconstruct(VALUE ary)
* === Non-destructive Selection
*
* arr = [1, 2, 3, 4, 5, 6]
- * arr.select {|a| a > 3} #=> [4, 5, 6]
- * arr.reject {|a| a < 3} #=> [3, 4, 5, 6]
- * arr.drop_while {|a| a < 4} #=> [4, 5, 6]
+ * arr.select { |a| a > 3 } #=> [4, 5, 6]
+ * arr.reject { |a| a < 3 } #=> [3, 4, 5, 6]
+ * arr.drop_while { |a| a < 4 } #=> [4, 5, 6]
* arr #=> [1, 2, 3, 4, 5, 6]
*
* === Destructive Selection
@@ -8520,205 +6224,25 @@ rb_ary_deconstruct(VALUE ary)
* Similar to #select vs. #reject, #delete_if and #keep_if have the exact
* opposite result when supplied with the same block:
*
- * arr.delete_if {|a| a < 4} #=> [4, 5, 6]
+ * arr.delete_if { |a| a < 4 } #=> [4, 5, 6]
* arr #=> [4, 5, 6]
*
* arr = [1, 2, 3, 4, 5, 6]
- * arr.keep_if {|a| a < 4} #=> [1, 2, 3]
+ * arr.keep_if { |a| a < 4 } #=> [1, 2, 3]
* arr #=> [1, 2, 3]
*
- * == What's Here
- *
- * First, what's elsewhere. \Class \Array:
- *
- * - Inherits from {class Object}[rdoc-ref:Object@What-27s+Here].
- * - Includes {module Enumerable}[rdoc-ref:Enumerable@What-27s+Here],
- * which provides dozens of additional methods.
- *
- * Here, class \Array provides methods that are useful for:
- *
- * - {Creating an Array}[rdoc-ref:Array@Methods+for+Creating+an+Array]
- * - {Querying}[rdoc-ref:Array@Methods+for+Querying]
- * - {Comparing}[rdoc-ref:Array@Methods+for+Comparing]
- * - {Fetching}[rdoc-ref:Array@Methods+for+Fetching]
- * - {Assigning}[rdoc-ref:Array@Methods+for+Assigning]
- * - {Deleting}[rdoc-ref:Array@Methods+for+Deleting]
- * - {Combining}[rdoc-ref:Array@Methods+for+Combining]
- * - {Iterating}[rdoc-ref:Array@Methods+for+Iterating]
- * - {Converting}[rdoc-ref:Array@Methods+for+Converting]
- * - {And more....}[rdoc-ref:Array@Other+Methods]
- *
- * === Methods for Creating an \Array
- *
- * - ::[]: Returns a new array populated with given objects.
- * - ::new: Returns a new array.
- * - ::try_convert: Returns a new array created from a given object.
- *
- * === Methods for Querying
- *
- * - #length, #size: Returns the count of elements.
- * - #include?: Returns whether any element <tt>==</tt> a given object.
- * - #empty?: Returns whether there are no elements.
- * - #all?: Returns whether all elements meet a given criterion.
- * - #any?: Returns whether any element meets a given criterion.
- * - #none?: Returns whether no element <tt>==</tt> a given object.
- * - #one?: Returns whether exactly one element <tt>==</tt> a given object.
- * - #count: Returns the count of elements that meet a given criterion.
- * - #find_index, #index: Returns the index of the first element that meets a given criterion.
- * - #rindex: Returns the index of the last element that meets a given criterion.
- * - #hash: Returns the integer hash code.
- *
- * === Methods for Comparing
- *
- * - #<=>: Returns -1, 0, or 1 * as +self+ is less than, equal to, or
- * greater than a given object.
- * - #==: Returns whether each element in +self+ is <tt>==</tt> to the corresponding element
- * in a given object.
- * - #eql?: Returns whether each element in +self+ is <tt>eql?</tt> to the corresponding
- * element in a given object.
-
- * === Methods for Fetching
- *
- * These methods do not modify +self+.
- *
- * - #[]: Returns one or more elements.
- * - #fetch: Returns the element at a given offset.
- * - #first: Returns one or more leading elements.
- * - #last: Returns one or more trailing elements.
- * - #max: Returns one or more maximum-valued elements,
- * as determined by <tt><=></tt> or a given block.
- * - #min: Returns one or more minimum-valued elements,
- * as determined by <tt><=></tt> or a given block.
- * - #minmax: Returns the minimum-valued and maximum-valued elements,
- * as determined by <tt><=></tt> or a given block.
- * - #assoc: Returns the first element that is an array
- * whose first element <tt>==</tt> a given object.
- * - #rassoc: Returns the first element that is an array
- * whose second element <tt>==</tt> a given object.
- * - #at: Returns the element at a given offset.
- * - #values_at: Returns the elements at given offsets.
- * - #dig: Returns the object in nested objects
- * that is specified by a given index and additional arguments.
- * - #drop: Returns trailing elements as determined by a given index.
- * - #take: Returns leading elements as determined by a given index.
- * - #drop_while: Returns trailing elements as determined by a given block.
- * - #take_while: Returns leading elements as determined by a given block.
- * - #slice: Returns consecutive elements as determined by a given argument.
- * - #sort: Returns all elements in an order determined by <tt><=></tt> or a given block.
- * - #reverse: Returns all elements in reverse order.
- * - #compact: Returns an array containing all non-+nil+ elements.
- * - #select, #filter: Returns an array containing elements selected by a given block.
- * - #uniq: Returns an array containing non-duplicate elements.
- * - #rotate: Returns all elements with some rotated from one end to the other.
- * - #bsearch: Returns an element selected via a binary search
- * as determined by a given block.
- * - #bsearch_index: Returns the index of an element selected via a binary search
- * as determined by a given block.
- * - #sample: Returns one or more random elements.
- * - #shuffle: Returns elements in a random order.
- *
- * === Methods for Assigning
- *
- * These methods add, replace, or reorder elements in +self+.
- *
- * - #[]=: Assigns specified elements with a given object.
- * - #push, #append, #<<: Appends trailing elements.
- * - #unshift, #prepend: Prepends leading elements.
- * - #insert: Inserts given objects at a given offset; does not replace elements.
- * - #concat: Appends all elements from given arrays.
- * - #fill: Replaces specified elements with specified objects.
- * - #replace: Replaces the content of +self+ with the content of a given array.
- * - #reverse!: Replaces +self+ with its elements reversed.
- * - #rotate!: Replaces +self+ with its elements rotated.
- * - #shuffle!: Replaces +self+ with its elements in random order.
- * - #sort!: Replaces +self+ with its elements sorted,
- * as determined by <tt><=></tt> or a given block.
- * - #sort_by!: Replaces +self+ with its elements sorted, as determined by a given block.
- *
- * === Methods for Deleting
- *
- * Each of these methods removes elements from +self+:
- *
- * - #pop: Removes and returns the last element.
- * - #shift: Removes and returns the first element.
- * - #compact!: Removes all +nil+ elements.
- * - #delete: Removes elements equal to a given object.
- * - #delete_at: Removes the element at a given offset.
- * - #delete_if: Removes elements specified by a given block.
- * - #keep_if: Removes elements not specified by a given block.
- * - #reject!: Removes elements specified by a given block.
- * - #select!, #filter!: Removes elements not specified by a given block.
- * - #slice!: Removes and returns a sequence of elements.
- * - #uniq!: Removes duplicates.
- *
- * === Methods for Combining
- *
- * - #&: Returns an array containing elements found both in +self+ and a given array.
- * - #intersection: Returns an array containing elements found both in +self+
- * and in each given array.
- * - #+: Returns an array containing all elements of +self+ followed by all elements of a given array.
- * - #-: Returns an array containing all elements of +self+ that are not found in a given array.
- * - #|: Returns an array containing all elements of +self+ and all elements of a given array,
- * duplicates removed.
- * - #union: Returns an array containing all elements of +self+ and all elements of given arrays,
- * duplicates removed.
- * - #difference: Returns an array containing all elements of +self+ that are not found
- * in any of the given arrays..
- * - #product: Returns or yields all combinations of elements from +self+ and given arrays.
- *
- * === Methods for Iterating
- *
- * - #each: Passes each element to a given block.
- * - #reverse_each: Passes each element, in reverse order, to a given block.
- * - #each_index: Passes each element index to a given block.
- * - #cycle: Calls a given block with each element, then does so again,
- * for a specified number of times, or forever.
- * - #combination: Calls a given block with combinations of elements of +self+;
- * a combination does not use the same element more than once.
- * - #permutation: Calls a given block with permutations of elements of +self+;
- * a permutation does not use the same element more than once.
- * - #repeated_combination: Calls a given block with combinations of elements of +self+;
- * a combination may use the same element more than once.
- * - #repeated_permutation: Calls a given block with permutations of elements of +self+;
- * a permutation may use the same element more than once.
- *
- * === Methods for Converting
- *
- * - #map, #collect: Returns an array containing the block return-value for each element.
- * - #map!, #collect!: Replaces each element with a block return-value.
- * - #flatten: Returns an array that is a recursive flattening of +self+.
- * - #flatten!: Replaces each nested array in +self+ with the elements from that array.
- * - #inspect, #to_s: Returns a new String containing the elements.
- * - #join: Returns a newsString containing the elements joined by the field separator.
- * - #to_a: Returns +self+ or a new array containing all elements.
- * - #to_ary: Returns +self+.
- * - #to_h: Returns a new hash formed from the elements.
- * - #transpose: Transposes +self+, which must be an array of arrays.
- * - #zip: Returns a new array of arrays containing +self+ and given arrays;
- * follow the link for details.
- *
- * === Other Methods
- *
- * - #*: Returns one of the following:
- *
- * - With integer argument +n+, a new array that is the concatenation
- * of +n+ copies of +self+.
- * - With string argument +field_separator+, a new string that is equivalent to
- * <tt>join(field_separator)</tt>.
- *
- * - #abbrev: Returns a hash of unambiguous abbreviations for elements.
- * - #pack: Packs the elements into a binary sequence.
- * - #sum: Returns a sum of elements according to either <tt>+</tt> or a given block.
*/
void
Init_Array(void)
{
+#undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
+
rb_cArray = rb_define_class("Array", rb_cObject);
rb_include_module(rb_cArray, rb_mEnumerable);
rb_define_alloc_func(rb_cArray, empty_ary_alloc);
- rb_define_singleton_method(rb_cArray, "new", rb_ary_s_new, -1);
rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1);
rb_define_singleton_method(rb_cArray, "try_convert", rb_ary_s_try_convert, 1);
rb_define_method(rb_cArray, "initialize", rb_ary_initialize, -1);
@@ -8729,6 +6253,7 @@ Init_Array(void)
rb_define_method(rb_cArray, "to_a", rb_ary_to_a, 0);
rb_define_method(rb_cArray, "to_h", rb_ary_to_h, 0);
rb_define_method(rb_cArray, "to_ary", rb_ary_to_ary_m, 0);
+ rb_define_method(rb_cArray, "frozen?", rb_ary_frozen_p, 0);
rb_define_method(rb_cArray, "==", rb_ary_equal, 1);
rb_define_method(rb_cArray, "eql?", rb_ary_eql, 1);
@@ -8738,11 +6263,9 @@ Init_Array(void)
rb_define_method(rb_cArray, "[]=", rb_ary_aset, -1);
rb_define_method(rb_cArray, "at", rb_ary_at, 1);
rb_define_method(rb_cArray, "fetch", rb_ary_fetch, -1);
+ rb_define_method(rb_cArray, "first", rb_ary_first, -1);
+ rb_define_method(rb_cArray, "last", rb_ary_last, -1);
rb_define_method(rb_cArray, "concat", rb_ary_concat_multi, -1);
- rb_define_method(rb_cArray, "union", rb_ary_union_multi, -1);
- rb_define_method(rb_cArray, "difference", rb_ary_difference_multi, -1);
- rb_define_method(rb_cArray, "intersection", rb_ary_intersection_multi, -1);
- rb_define_method(rb_cArray, "intersect?", rb_ary_intersect_p, 1);
rb_define_method(rb_cArray, "<<", rb_ary_push, 1);
rb_define_method(rb_cArray, "push", rb_ary_push_m, -1);
rb_define_alias(rb_cArray, "append", "push");
@@ -8755,7 +6278,7 @@ Init_Array(void)
rb_define_method(rb_cArray, "each_index", rb_ary_each_index, 0);
rb_define_method(rb_cArray, "reverse_each", rb_ary_reverse_each, 0);
rb_define_method(rb_cArray, "length", rb_ary_length, 0);
- rb_define_method(rb_cArray, "size", rb_ary_length, 0);
+ rb_define_alias(rb_cArray, "size", "length");
rb_define_method(rb_cArray, "empty?", rb_ary_empty_p, 0);
rb_define_method(rb_cArray, "find_index", rb_ary_index, -1);
rb_define_method(rb_cArray, "index", rb_ary_index, -1);
@@ -8774,8 +6297,6 @@ Init_Array(void)
rb_define_method(rb_cArray, "map!", rb_ary_collect_bang, 0);
rb_define_method(rb_cArray, "select", rb_ary_select, 0);
rb_define_method(rb_cArray, "select!", rb_ary_select_bang, 0);
- rb_define_method(rb_cArray, "filter", rb_ary_select, 0);
- rb_define_method(rb_cArray, "filter!", rb_ary_select_bang, 0);
rb_define_method(rb_cArray, "keep_if", rb_ary_keep_if, 0);
rb_define_method(rb_cArray, "values_at", rb_ary_values_at, -1);
rb_define_method(rb_cArray, "delete", rb_ary_delete, 1);
@@ -8806,7 +6327,6 @@ Init_Array(void)
rb_define_method(rb_cArray, "max", rb_ary_max, -1);
rb_define_method(rb_cArray, "min", rb_ary_min, -1);
- rb_define_method(rb_cArray, "minmax", rb_ary_minmax, 0);
rb_define_method(rb_cArray, "uniq", rb_ary_uniq, 0);
rb_define_method(rb_cArray, "uniq!", rb_ary_uniq_bang, 0);
@@ -8815,6 +6335,9 @@ Init_Array(void)
rb_define_method(rb_cArray, "flatten", rb_ary_flatten, -1);
rb_define_method(rb_cArray, "flatten!", rb_ary_flatten_bang, -1);
rb_define_method(rb_cArray, "count", rb_ary_count, -1);
+ rb_define_method(rb_cArray, "shuffle!", rb_ary_shuffle_bang, -1);
+ rb_define_method(rb_cArray, "shuffle", rb_ary_shuffle, -1);
+ rb_define_method(rb_cArray, "sample", rb_ary_sample, -1);
rb_define_method(rb_cArray, "cycle", rb_ary_cycle, -1);
rb_define_method(rb_cArray, "permutation", rb_ary_permutation, -1);
rb_define_method(rb_cArray, "combination", rb_ary_combination, 1);
@@ -8829,13 +6352,8 @@ Init_Array(void)
rb_define_method(rb_cArray, "bsearch", rb_ary_bsearch, 0);
rb_define_method(rb_cArray, "bsearch_index", rb_ary_bsearch_index, 0);
rb_define_method(rb_cArray, "any?", rb_ary_any_p, -1);
- rb_define_method(rb_cArray, "all?", rb_ary_all_p, -1);
- rb_define_method(rb_cArray, "none?", rb_ary_none_p, -1);
- rb_define_method(rb_cArray, "one?", rb_ary_one_p, -1);
rb_define_method(rb_cArray, "dig", rb_ary_dig, -1);
rb_define_method(rb_cArray, "sum", rb_ary_sum, -1);
- rb_define_method(rb_cArray, "deconstruct", rb_ary_deconstruct, 0);
+ id_random = rb_intern("random");
}
-
-#include "array.rbinc"
diff --git a/array.rb b/array.rb
deleted file mode 100644
index 358b6a5d79..0000000000
--- a/array.rb
+++ /dev/null
@@ -1,157 +0,0 @@
-class Array
- # call-seq:
- # array.shuffle!(random: Random) -> array
- #
- # Shuffles the elements of +self+ in place.
- # a = [1, 2, 3] #=> [1, 2, 3]
- # a.shuffle! #=> [2, 3, 1]
- # a #=> [2, 3, 1]
- #
- # The optional +random+ argument will be used as the random number generator:
- # a.shuffle!(random: Random.new(1)) #=> [1, 3, 2]
- def shuffle!(random: Random)
- Primitive.rb_ary_shuffle_bang(random)
- end
-
- # call-seq:
- # array.shuffle(random: Random) -> new_ary
- #
- # Returns a new array with elements of +self+ shuffled.
- # a = [1, 2, 3] #=> [1, 2, 3]
- # a.shuffle #=> [2, 3, 1]
- # a #=> [1, 2, 3]
- #
- # The optional +random+ argument will be used as the random number generator:
- # a.shuffle(random: Random.new(1)) #=> [1, 3, 2]
- def shuffle(random: Random)
- Primitive.rb_ary_shuffle(random)
- end
-
- # call-seq:
- # array.sample(random: Random) -> object
- # array.sample(n, random: Random) -> new_ary
- #
- # Returns random elements from +self+.
- #
- # When no arguments are given, returns a random element from +self+:
- # a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- # a.sample # => 3
- # a.sample # => 8
- # If +self+ is empty, returns +nil+.
- #
- # When argument +n+ is given, returns a new \Array containing +n+ random
- # elements from +self+:
- # a.sample(3) # => [8, 9, 2]
- # a.sample(6) # => [9, 6, 10, 3, 1, 4]
- # Returns no more than <tt>a.size</tt> elements
- # (because no new duplicates are introduced):
- # a.sample(a.size * 2) # => [6, 4, 1, 8, 5, 9, 10, 2, 3, 7]
- # But +self+ may contain duplicates:
- # a = [1, 1, 1, 2, 2, 3]
- # a.sample(a.size * 2) # => [1, 1, 3, 2, 1, 2]
- # The argument +n+ must be a non-negative numeric value.
- # The order of the result array is unrelated to the order of +self+.
- # Returns a new empty \Array if +self+ is empty.
- #
- # The optional +random+ argument will be used as the random number generator:
- # a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- # a.sample(random: Random.new(1)) #=> 6
- # a.sample(4, random: Random.new(1)) #=> [6, 10, 9, 2]
- def sample(n = (ary = false), random: Random)
- if Primitive.mandatory_only?
- # Primitive.cexpr! %{ rb_ary_sample(self, rb_cRandom, Qfalse, Qfalse) }
- Primitive.ary_sample0
- else
- # Primitive.cexpr! %{ rb_ary_sample(self, random, n, ary) }
- Primitive.ary_sample(random, n, ary)
- end
- end
-
- # call-seq:
- # array.first -> object or nil
- # array.first(n) -> new_array
- #
- # Returns elements from +self+; does not modify +self+.
- #
- # When no argument is given, returns the first element:
- #
- # a = [:foo, 'bar', 2]
- # a.first # => :foo
- # a # => [:foo, "bar", 2]
- #
- # If +self+ is empty, returns +nil+.
- #
- # When non-negative \Integer argument +n+ is given,
- # returns the first +n+ elements in a new \Array:
- #
- # a = [:foo, 'bar', 2]
- # a.first(2) # => [:foo, "bar"]
- #
- # If <tt>n >= array.size</tt>, returns all elements:
- #
- # a = [:foo, 'bar', 2]
- # a.first(50) # => [:foo, "bar", 2]
- #
- # If <tt>n == 0</tt> returns an new empty \Array:
- #
- # a = [:foo, 'bar', 2]
- # a.first(0) # []
- #
- # Related: #last.
- def first n = unspecified = true
- if Primitive.mandatory_only?
- Primitive.attr! :leaf
- Primitive.cexpr! %q{ ary_first(self) }
- else
- if unspecified
- Primitive.cexpr! %q{ ary_first(self) }
- else
- Primitive.cexpr! %q{ ary_take_first_or_last_n(self, NUM2LONG(n), ARY_TAKE_FIRST) }
- end
- end
- end
-
- # call-seq:
- # array.last -> object or nil
- # array.last(n) -> new_array
- #
- # Returns elements from +self+; +self+ is not modified.
- #
- # When no argument is given, returns the last element:
- #
- # a = [:foo, 'bar', 2]
- # a.last # => 2
- # a # => [:foo, "bar", 2]
- #
- # If +self+ is empty, returns +nil+.
- #
- # When non-negative \Integer argument +n+ is given,
- # returns the last +n+ elements in a new \Array:
- #
- # a = [:foo, 'bar', 2]
- # a.last(2) # => ["bar", 2]
- #
- # If <tt>n >= array.size</tt>, returns all elements:
- #
- # a = [:foo, 'bar', 2]
- # a.last(50) # => [:foo, "bar", 2]
- #
- # If <tt>n == 0</tt>, returns an new empty \Array:
- #
- # a = [:foo, 'bar', 2]
- # a.last(0) # []
- #
- # Related: #first.
- def last n = unspecified = true
- if Primitive.mandatory_only?
- Primitive.attr! :leaf
- Primitive.cexpr! %q{ ary_last(self) }
- else
- if unspecified
- Primitive.cexpr! %q{ ary_last(self) }
- else
- Primitive.cexpr! %q{ ary_take_first_or_last_n(self, NUM2LONG(n), ARY_TAKE_LAST) }
- end
- end
- end
-end
diff --git a/ast.c b/ast.c
deleted file mode 100644
index d60e5d3fcf..0000000000
--- a/ast.c
+++ /dev/null
@@ -1,773 +0,0 @@
-/* indent-tabs-mode: nil */
-#include "internal.h"
-#include "internal/parse.h"
-#include "internal/symbol.h"
-#include "internal/warnings.h"
-#include "iseq.h"
-#include "node.h"
-#include "ruby.h"
-#include "ruby/encoding.h"
-#include "ruby/util.h"
-#include "vm_core.h"
-
-#include "builtin.h"
-
-static VALUE rb_mAST;
-static VALUE rb_cNode;
-
-struct ASTNodeData {
- rb_ast_t *ast;
- const NODE *node;
-};
-
-static void
-node_gc_mark(void *ptr)
-{
- struct ASTNodeData *data = (struct ASTNodeData *)ptr;
- rb_gc_mark((VALUE)data->ast);
-}
-
-static size_t
-node_memsize(const void *ptr)
-{
- struct ASTNodeData *data = (struct ASTNodeData *)ptr;
- return rb_ast_memsize(data->ast);
-}
-
-static const rb_data_type_t rb_node_type = {
- "AST/node",
- {node_gc_mark, RUBY_TYPED_DEFAULT_FREE, node_memsize,},
- 0, 0,
- RUBY_TYPED_FREE_IMMEDIATELY,
-};
-
-static VALUE rb_ast_node_alloc(VALUE klass);
-
-static void
-setup_node(VALUE obj, rb_ast_t *ast, const NODE *node)
-{
- struct ASTNodeData *data;
-
- TypedData_Get_Struct(obj, struct ASTNodeData, &rb_node_type, data);
- data->ast = ast;
- data->node = node;
-}
-
-static VALUE
-ast_new_internal(rb_ast_t *ast, const NODE *node)
-{
- VALUE obj;
-
- obj = rb_ast_node_alloc(rb_cNode);
- setup_node(obj, ast, node);
-
- return obj;
-}
-
-static VALUE rb_ast_parse_str(VALUE str, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens);
-static VALUE rb_ast_parse_file(VALUE path, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens);
-
-static VALUE
-ast_parse_new(void)
-{
- return rb_parser_set_context(rb_parser_new(), NULL, 0);
-}
-
-static VALUE
-ast_parse_done(rb_ast_t *ast)
-{
- if (!ast->body.root) {
- rb_ast_dispose(ast);
- rb_exc_raise(GET_EC()->errinfo);
- }
-
- return ast_new_internal(ast, (NODE *)ast->body.root);
-}
-
-static VALUE
-ast_s_parse(rb_execution_context_t *ec, VALUE module, VALUE str, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
-{
- return rb_ast_parse_str(str, keep_script_lines, error_tolerant, keep_tokens);
-}
-
-static VALUE
-rb_ast_parse_str(VALUE str, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
-{
- rb_ast_t *ast = 0;
-
- StringValue(str);
- VALUE vparser = ast_parse_new();
- if (RTEST(keep_script_lines)) rb_parser_keep_script_lines(vparser);
- if (RTEST(error_tolerant)) rb_parser_error_tolerant(vparser);
- if (RTEST(keep_tokens)) rb_parser_keep_tokens(vparser);
- ast = rb_parser_compile_string_path(vparser, Qnil, str, 1);
- return ast_parse_done(ast);
-}
-
-static VALUE
-ast_s_parse_file(rb_execution_context_t *ec, VALUE module, VALUE path, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
-{
- return rb_ast_parse_file(path, keep_script_lines, error_tolerant, keep_tokens);
-}
-
-static VALUE
-rb_ast_parse_file(VALUE path, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
-{
- VALUE f;
- rb_ast_t *ast = 0;
- rb_encoding *enc = rb_utf8_encoding();
-
- FilePathValue(path);
- f = rb_file_open_str(path, "r");
- rb_funcall(f, rb_intern("set_encoding"), 2, rb_enc_from_encoding(enc), rb_str_new_cstr("-"));
- VALUE vparser = ast_parse_new();
- if (RTEST(keep_script_lines)) rb_parser_keep_script_lines(vparser);
- if (RTEST(error_tolerant)) rb_parser_error_tolerant(vparser);
- if (RTEST(keep_tokens)) rb_parser_keep_tokens(vparser);
- ast = rb_parser_compile_file_path(vparser, Qnil, f, 1);
- rb_io_close(f);
- return ast_parse_done(ast);
-}
-
-static VALUE
-lex_array(VALUE array, int index)
-{
- VALUE str = rb_ary_entry(array, index);
- if (!NIL_P(str)) {
- StringValue(str);
- if (!rb_enc_asciicompat(rb_enc_get(str))) {
- rb_raise(rb_eArgError, "invalid source encoding");
- }
- }
- return str;
-}
-
-static VALUE
-rb_ast_parse_array(VALUE array, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
-{
- rb_ast_t *ast = 0;
-
- array = rb_check_array_type(array);
- VALUE vparser = ast_parse_new();
- if (RTEST(keep_script_lines)) rb_parser_keep_script_lines(vparser);
- if (RTEST(error_tolerant)) rb_parser_error_tolerant(vparser);
- if (RTEST(keep_tokens)) rb_parser_keep_tokens(vparser);
- ast = rb_parser_compile_generic(vparser, lex_array, Qnil, array, 1);
- return ast_parse_done(ast);
-}
-
-static VALUE node_children(rb_ast_t*, const NODE*);
-
-static VALUE
-node_find(VALUE self, const int node_id)
-{
- VALUE ary;
- long i;
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
-
- if (nd_node_id(data->node) == node_id) return self;
-
- ary = node_children(data->ast, data->node);
-
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- VALUE child = RARRAY_AREF(ary, i);
-
- if (CLASS_OF(child) == rb_cNode) {
- VALUE result = node_find(child, node_id);
- if (RTEST(result)) return result;
- }
- }
-
- return Qnil;
-}
-
-extern VALUE rb_e_script;
-
-static VALUE
-script_lines(VALUE path)
-{
- VALUE hash, lines;
- ID script_lines;
- CONST_ID(script_lines, "SCRIPT_LINES__");
- if (!rb_const_defined_at(rb_cObject, script_lines)) return Qnil;
- hash = rb_const_get_at(rb_cObject, script_lines);
- if (!RB_TYPE_P(hash, T_HASH)) return Qnil;
- lines = rb_hash_lookup(hash, path);
- if (!RB_TYPE_P(lines, T_ARRAY)) return Qnil;
- return lines;
-}
-
-static VALUE
-node_id_for_backtrace_location(rb_execution_context_t *ec, VALUE module, VALUE location)
-{
- int node_id;
-
- if (!rb_frame_info_p(location)) {
- rb_raise(rb_eTypeError, "Thread::Backtrace::Location object expected");
- }
-
- node_id = rb_get_node_id_from_frame_info(location);
- if (node_id == -1) {
- return Qnil;
- }
-
- return INT2NUM(node_id);
-}
-
-static VALUE
-ast_s_of(rb_execution_context_t *ec, VALUE module, VALUE body, VALUE keep_script_lines, VALUE error_tolerant, VALUE keep_tokens)
-{
- VALUE node, lines = Qnil;
- const rb_iseq_t *iseq;
- int node_id;
-
- if (rb_frame_info_p(body)) {
- iseq = rb_get_iseq_from_frame_info(body);
- node_id = rb_get_node_id_from_frame_info(body);
- }
- else {
- iseq = NULL;
-
- if (rb_obj_is_proc(body)) {
- iseq = vm_proc_iseq(body);
-
- if (!rb_obj_is_iseq((VALUE)iseq)) return Qnil;
- }
- else {
- iseq = rb_method_iseq(body);
- }
- if (iseq) {
- node_id = ISEQ_BODY(iseq)->location.node_id;
- }
- }
-
- if (!iseq) {
- return Qnil;
- }
- lines = ISEQ_BODY(iseq)->variable.script_lines;
-
- VALUE path = rb_iseq_path(iseq);
- int e_option = RSTRING_LEN(path) == 2 && memcmp(RSTRING_PTR(path), "-e", 2) == 0;
-
- if (NIL_P(lines) && rb_iseq_from_eval_p(iseq) && !e_option) {
- rb_raise(rb_eArgError, "cannot get AST for method defined in eval");
- }
-
- if (!NIL_P(lines) || !NIL_P(lines = script_lines(path))) {
- node = rb_ast_parse_array(lines, keep_script_lines, error_tolerant, keep_tokens);
- }
- else if (e_option) {
- node = rb_ast_parse_str(rb_e_script, keep_script_lines, error_tolerant, keep_tokens);
- }
- else {
- node = rb_ast_parse_file(path, keep_script_lines, error_tolerant, keep_tokens);
- }
-
- return node_find(node, node_id);
-}
-
-static VALUE
-rb_ast_node_alloc(VALUE klass)
-{
- struct ASTNodeData *data;
- VALUE obj = TypedData_Make_Struct(klass, struct ASTNodeData, &rb_node_type, data);
-
- return obj;
-}
-
-static const char*
-node_type_to_str(const NODE *node)
-{
- return (ruby_node_name(nd_type(node)) + rb_strlen_lit("NODE_"));
-}
-
-static VALUE
-ast_node_type(rb_execution_context_t *ec, VALUE self)
-{
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
-
- return rb_sym_intern_ascii_cstr(node_type_to_str(data->node));
-}
-
-static VALUE
-ast_node_node_id(rb_execution_context_t *ec, VALUE self)
-{
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
-
- return INT2FIX(nd_node_id(data->node));
-}
-
-#define NEW_CHILD(ast, node) node ? ast_new_internal(ast, node) : Qnil
-
-static VALUE
-rb_ary_new_from_node_args(rb_ast_t *ast, long n, ...)
-{
- va_list ar;
- VALUE ary;
- long i;
-
- ary = rb_ary_new2(n);
-
- va_start(ar, n);
- for (i=0; i<n; i++) {
- NODE *node;
- node = va_arg(ar, NODE *);
- rb_ary_push(ary, NEW_CHILD(ast, node));
- }
- va_end(ar);
- return ary;
-}
-
-static VALUE
-dump_block(rb_ast_t *ast, const NODE *node)
-{
- VALUE ary = rb_ary_new();
- do {
- rb_ary_push(ary, NEW_CHILD(ast, node->nd_head));
- } while (node->nd_next &&
- nd_type_p(node->nd_next, NODE_BLOCK) &&
- (node = node->nd_next, 1));
- if (node->nd_next) {
- rb_ary_push(ary, NEW_CHILD(ast, node->nd_next));
- }
-
- return ary;
-}
-
-static VALUE
-dump_array(rb_ast_t *ast, const NODE *node)
-{
- VALUE ary = rb_ary_new();
- rb_ary_push(ary, NEW_CHILD(ast, node->nd_head));
-
- while (node->nd_next && nd_type_p(node->nd_next, NODE_LIST)) {
- node = node->nd_next;
- rb_ary_push(ary, NEW_CHILD(ast, node->nd_head));
- }
- rb_ary_push(ary, NEW_CHILD(ast, node->nd_next));
-
- return ary;
-}
-
-static VALUE
-var_name(ID id)
-{
- if (!id) return Qnil;
- if (!rb_id2str(id)) return Qnil;
- return ID2SYM(id);
-}
-
-static VALUE
-no_name_rest(void)
-{
- ID rest;
- CONST_ID(rest, "NODE_SPECIAL_NO_NAME_REST");
- return ID2SYM(rest);
-}
-
-static VALUE
-rest_arg(rb_ast_t *ast, const NODE *rest_arg)
-{
- return NODE_NAMED_REST_P(rest_arg) ? NEW_CHILD(ast, rest_arg) : no_name_rest();
-}
-
-static VALUE
-node_children(rb_ast_t *ast, const NODE *node)
-{
- char name[sizeof("$") + DECIMAL_SIZE_OF(long)];
-
- enum node_type type = nd_type(node);
- switch (type) {
- case NODE_BLOCK:
- return dump_block(ast, node);
- case NODE_IF:
- return rb_ary_new_from_node_args(ast, 3, node->nd_cond, node->nd_body, node->nd_else);
- case NODE_UNLESS:
- return rb_ary_new_from_node_args(ast, 3, node->nd_cond, node->nd_body, node->nd_else);
- case NODE_CASE:
- return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
- case NODE_CASE2:
- return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
- case NODE_CASE3:
- return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
- case NODE_WHEN:
- return rb_ary_new_from_node_args(ast, 3, node->nd_head, node->nd_body, node->nd_next);
- case NODE_IN:
- return rb_ary_new_from_node_args(ast, 3, node->nd_head, node->nd_body, node->nd_next);
- case NODE_WHILE:
- case NODE_UNTIL:
- return rb_ary_push(rb_ary_new_from_node_args(ast, 2, node->nd_cond, node->nd_body),
- RBOOL(node->nd_state));
- case NODE_ITER:
- case NODE_FOR:
- return rb_ary_new_from_node_args(ast, 2, node->nd_iter, node->nd_body);
- case NODE_FOR_MASGN:
- return rb_ary_new_from_node_args(ast, 1, node->nd_var);
- case NODE_BREAK:
- case NODE_NEXT:
- case NODE_RETURN:
- return rb_ary_new_from_node_args(ast, 1, node->nd_stts);
- case NODE_REDO:
- return rb_ary_new_from_node_args(ast, 0);
- case NODE_RETRY:
- return rb_ary_new_from_node_args(ast, 0);
- case NODE_BEGIN:
- return rb_ary_new_from_node_args(ast, 1, node->nd_body);
- case NODE_RESCUE:
- return rb_ary_new_from_node_args(ast, 3, node->nd_head, node->nd_resq, node->nd_else);
- case NODE_RESBODY:
- return rb_ary_new_from_node_args(ast, 3, node->nd_args, node->nd_body, node->nd_head);
- case NODE_ENSURE:
- return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_ensr);
- case NODE_AND:
- case NODE_OR:
- {
- VALUE ary = rb_ary_new();
-
- while (1) {
- rb_ary_push(ary, NEW_CHILD(ast, node->nd_1st));
- if (!node->nd_2nd || !nd_type_p(node->nd_2nd, type))
- break;
- node = node->nd_2nd;
- }
- rb_ary_push(ary, NEW_CHILD(ast, node->nd_2nd));
- return ary;
- }
- case NODE_MASGN:
- if (NODE_NAMED_REST_P(node->nd_args)) {
- return rb_ary_new_from_node_args(ast, 3, node->nd_value, node->nd_head, node->nd_args);
- }
- else {
- return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_value),
- NEW_CHILD(ast, node->nd_head),
- no_name_rest());
- }
- case NODE_LASGN:
- case NODE_DASGN:
- case NODE_IASGN:
- case NODE_CVASGN:
- case NODE_GASGN:
- if (NODE_REQUIRED_KEYWORD_P(node)) {
- return rb_ary_new_from_args(2, var_name(node->nd_vid), ID2SYM(rb_intern("NODE_SPECIAL_REQUIRED_KEYWORD")));
- }
- return rb_ary_new_from_args(2, var_name(node->nd_vid), NEW_CHILD(ast, node->nd_value));
- case NODE_CDECL:
- if (node->nd_vid) {
- return rb_ary_new_from_args(2, ID2SYM(node->nd_vid), NEW_CHILD(ast, node->nd_value));
- }
- return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_else), ID2SYM(node->nd_else->nd_mid), NEW_CHILD(ast, node->nd_value));
- case NODE_OP_ASGN1:
- return rb_ary_new_from_args(4, NEW_CHILD(ast, node->nd_recv),
- ID2SYM(node->nd_mid),
- NEW_CHILD(ast, node->nd_args->nd_head),
- NEW_CHILD(ast, node->nd_args->nd_body));
- case NODE_OP_ASGN2:
- return rb_ary_new_from_args(5, NEW_CHILD(ast, node->nd_recv),
- RBOOL(node->nd_next->nd_aid),
- ID2SYM(node->nd_next->nd_vid),
- ID2SYM(node->nd_next->nd_mid),
- NEW_CHILD(ast, node->nd_value));
- case NODE_OP_ASGN_AND:
- return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_head), ID2SYM(idANDOP),
- NEW_CHILD(ast, node->nd_value));
- case NODE_OP_ASGN_OR:
- return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_head), ID2SYM(idOROP),
- NEW_CHILD(ast, node->nd_value));
- case NODE_OP_CDECL:
- return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_head),
- ID2SYM(node->nd_aid),
- NEW_CHILD(ast, node->nd_value));
- case NODE_CALL:
- case NODE_OPCALL:
- case NODE_QCALL:
- return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_recv),
- ID2SYM(node->nd_mid),
- NEW_CHILD(ast, node->nd_args));
- case NODE_FCALL:
- return rb_ary_new_from_args(2, ID2SYM(node->nd_mid),
- NEW_CHILD(ast, node->nd_args));
- case NODE_VCALL:
- return rb_ary_new_from_args(1, ID2SYM(node->nd_mid));
- case NODE_SUPER:
- return rb_ary_new_from_node_args(ast, 1, node->nd_args);
- case NODE_ZSUPER:
- return rb_ary_new_from_node_args(ast, 0);
- case NODE_LIST:
- case NODE_VALUES:
- return dump_array(ast, node);
- case NODE_ZLIST:
- return rb_ary_new_from_node_args(ast, 0);
- case NODE_HASH:
- return rb_ary_new_from_node_args(ast, 1, node->nd_head);
- case NODE_YIELD:
- return rb_ary_new_from_node_args(ast, 1, node->nd_head);
- case NODE_LVAR:
- case NODE_DVAR:
- return rb_ary_new_from_args(1, var_name(node->nd_vid));
- case NODE_IVAR:
- case NODE_CONST:
- case NODE_CVAR:
- case NODE_GVAR:
- return rb_ary_new_from_args(1, ID2SYM(node->nd_vid));
- case NODE_NTH_REF:
- snprintf(name, sizeof(name), "$%ld", node->nd_nth);
- return rb_ary_new_from_args(1, ID2SYM(rb_intern(name)));
- case NODE_BACK_REF:
- name[0] = '$';
- name[1] = (char)node->nd_nth;
- name[2] = '\0';
- return rb_ary_new_from_args(1, ID2SYM(rb_intern(name)));
- case NODE_MATCH2:
- if (node->nd_args) {
- return rb_ary_new_from_node_args(ast, 3, node->nd_recv, node->nd_value, node->nd_args);
- }
- return rb_ary_new_from_node_args(ast, 2, node->nd_recv, node->nd_value);
- case NODE_MATCH3:
- return rb_ary_new_from_node_args(ast, 2, node->nd_recv, node->nd_value);
- case NODE_MATCH:
- case NODE_LIT:
- case NODE_STR:
- case NODE_XSTR:
- return rb_ary_new_from_args(1, node->nd_lit);
- case NODE_ONCE:
- return rb_ary_new_from_node_args(ast, 1, node->nd_body);
- case NODE_DSTR:
- case NODE_DXSTR:
- case NODE_DREGX:
- case NODE_DSYM:
- {
- NODE *n = node->nd_next;
- VALUE head = Qnil, next = Qnil;
- if (n) {
- head = NEW_CHILD(ast, n->nd_head);
- next = NEW_CHILD(ast, n->nd_next);
- }
- return rb_ary_new_from_args(3, node->nd_lit, head, next);
- }
- case NODE_EVSTR:
- return rb_ary_new_from_node_args(ast, 1, node->nd_body);
- case NODE_ARGSCAT:
- return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
- case NODE_ARGSPUSH:
- return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
- case NODE_SPLAT:
- return rb_ary_new_from_node_args(ast, 1, node->nd_head);
- case NODE_BLOCK_PASS:
- return rb_ary_new_from_node_args(ast, 2, node->nd_head, node->nd_body);
- case NODE_DEFN:
- return rb_ary_new_from_args(2, ID2SYM(node->nd_mid), NEW_CHILD(ast, node->nd_defn));
- case NODE_DEFS:
- return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_recv), ID2SYM(node->nd_mid), NEW_CHILD(ast, node->nd_defn));
- case NODE_ALIAS:
- return rb_ary_new_from_node_args(ast, 2, node->nd_1st, node->nd_2nd);
- case NODE_VALIAS:
- return rb_ary_new_from_args(2, ID2SYM(node->nd_alias), ID2SYM(node->nd_orig));
- case NODE_UNDEF:
- return rb_ary_new_from_node_args(ast, 1, node->nd_undef);
- case NODE_CLASS:
- return rb_ary_new_from_node_args(ast, 3, node->nd_cpath, node->nd_super, node->nd_body);
- case NODE_MODULE:
- return rb_ary_new_from_node_args(ast, 2, node->nd_cpath, node->nd_body);
- case NODE_SCLASS:
- return rb_ary_new_from_node_args(ast, 2, node->nd_recv, node->nd_body);
- case NODE_COLON2:
- return rb_ary_new_from_args(2, NEW_CHILD(ast, node->nd_head), ID2SYM(node->nd_mid));
- case NODE_COLON3:
- return rb_ary_new_from_args(1, ID2SYM(node->nd_mid));
- case NODE_DOT2:
- case NODE_DOT3:
- case NODE_FLIP2:
- case NODE_FLIP3:
- return rb_ary_new_from_node_args(ast, 2, node->nd_beg, node->nd_end);
- case NODE_SELF:
- return rb_ary_new_from_node_args(ast, 0);
- case NODE_NIL:
- return rb_ary_new_from_node_args(ast, 0);
- case NODE_TRUE:
- return rb_ary_new_from_node_args(ast, 0);
- case NODE_FALSE:
- return rb_ary_new_from_node_args(ast, 0);
- case NODE_ERRINFO:
- return rb_ary_new_from_node_args(ast, 0);
- case NODE_DEFINED:
- return rb_ary_new_from_node_args(ast, 1, node->nd_head);
- case NODE_POSTEXE:
- return rb_ary_new_from_node_args(ast, 1, node->nd_body);
- case NODE_ATTRASGN:
- return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_recv), ID2SYM(node->nd_mid), NEW_CHILD(ast, node->nd_args));
- case NODE_LAMBDA:
- return rb_ary_new_from_node_args(ast, 1, node->nd_body);
- case NODE_OPT_ARG:
- return rb_ary_new_from_node_args(ast, 2, node->nd_body, node->nd_next);
- case NODE_KW_ARG:
- return rb_ary_new_from_node_args(ast, 2, node->nd_body, node->nd_next);
- case NODE_POSTARG:
- if (NODE_NAMED_REST_P(node->nd_1st)) {
- return rb_ary_new_from_node_args(ast, 2, node->nd_1st, node->nd_2nd);
- }
- return rb_ary_new_from_args(2, no_name_rest(),
- NEW_CHILD(ast, node->nd_2nd));
- case NODE_ARGS:
- {
- struct rb_args_info *ainfo = node->nd_ainfo;
- return rb_ary_new_from_args(10,
- INT2NUM(ainfo->pre_args_num),
- NEW_CHILD(ast, ainfo->pre_init),
- NEW_CHILD(ast, ainfo->opt_args),
- var_name(ainfo->first_post_arg),
- INT2NUM(ainfo->post_args_num),
- NEW_CHILD(ast, ainfo->post_init),
- (ainfo->rest_arg == NODE_SPECIAL_EXCESSIVE_COMMA
- ? ID2SYM(rb_intern("NODE_SPECIAL_EXCESSIVE_COMMA"))
- : var_name(ainfo->rest_arg)),
- (ainfo->no_kwarg ? Qfalse : NEW_CHILD(ast, ainfo->kw_args)),
- (ainfo->no_kwarg ? Qfalse : NEW_CHILD(ast, ainfo->kw_rest_arg)),
- var_name(ainfo->block_arg));
- }
- case NODE_SCOPE:
- {
- rb_ast_id_table_t *tbl = node->nd_tbl;
- int i, size = tbl ? tbl->size : 0;
- VALUE locals = rb_ary_new_capa(size);
- for (i = 0; i < size; i++) {
- rb_ary_push(locals, var_name(tbl->ids[i]));
- }
- return rb_ary_new_from_args(3, locals, NEW_CHILD(ast, node->nd_args), NEW_CHILD(ast, node->nd_body));
- }
- case NODE_ARYPTN:
- {
- struct rb_ary_pattern_info *apinfo = node->nd_apinfo;
- VALUE rest = rest_arg(ast, apinfo->rest_arg);
- return rb_ary_new_from_args(4,
- NEW_CHILD(ast, node->nd_pconst),
- NEW_CHILD(ast, apinfo->pre_args),
- rest,
- NEW_CHILD(ast, apinfo->post_args));
- }
- case NODE_FNDPTN:
- {
- struct rb_fnd_pattern_info *fpinfo = node->nd_fpinfo;
- VALUE pre_rest = rest_arg(ast, fpinfo->pre_rest_arg);
- VALUE post_rest = rest_arg(ast, fpinfo->post_rest_arg);
- return rb_ary_new_from_args(4,
- NEW_CHILD(ast, node->nd_pconst),
- pre_rest,
- NEW_CHILD(ast, fpinfo->args),
- post_rest);
- }
- case NODE_HSHPTN:
- {
- VALUE kwrest = node->nd_pkwrestarg == NODE_SPECIAL_NO_REST_KEYWORD ? ID2SYM(rb_intern("NODE_SPECIAL_NO_REST_KEYWORD")) :
- NEW_CHILD(ast, node->nd_pkwrestarg);
-
- return rb_ary_new_from_args(3,
- NEW_CHILD(ast, node->nd_pconst),
- NEW_CHILD(ast, node->nd_pkwargs),
- kwrest);
- }
- case NODE_ERROR:
- return rb_ary_new_from_node_args(ast, 0);
- case NODE_ARGS_AUX:
- case NODE_LAST:
- break;
- }
-
- rb_bug("node_children: unknown node: %s", ruby_node_name(type));
-}
-
-static VALUE
-ast_node_children(rb_execution_context_t *ec, VALUE self)
-{
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
-
- return node_children(data->ast, data->node);
-}
-
-static VALUE
-ast_node_first_lineno(rb_execution_context_t *ec, VALUE self)
-{
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
-
- return INT2NUM(nd_first_lineno(data->node));
-}
-
-static VALUE
-ast_node_first_column(rb_execution_context_t *ec, VALUE self)
-{
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
-
- return INT2NUM(nd_first_column(data->node));
-}
-
-static VALUE
-ast_node_last_lineno(rb_execution_context_t *ec, VALUE self)
-{
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
-
- return INT2NUM(nd_last_lineno(data->node));
-}
-
-static VALUE
-ast_node_last_column(rb_execution_context_t *ec, VALUE self)
-{
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
-
- return INT2NUM(nd_last_column(data->node));
-}
-
-static VALUE
-ast_node_all_tokens(rb_execution_context_t *ec, VALUE self)
-{
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
-
- return rb_ast_tokens(data->ast);
-}
-
-static VALUE
-ast_node_inspect(rb_execution_context_t *ec, VALUE self)
-{
- VALUE str;
- VALUE cname;
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
-
- cname = rb_class_path(rb_obj_class(self));
- str = rb_str_new2("#<");
-
- rb_str_append(str, cname);
- rb_str_catf(str, ":%s@%d:%d-%d:%d>",
- node_type_to_str(data->node),
- nd_first_lineno(data->node), nd_first_column(data->node),
- nd_last_lineno(data->node), nd_last_column(data->node));
-
- return str;
-}
-
-static VALUE
-ast_node_script_lines(rb_execution_context_t *ec, VALUE self)
-{
- struct ASTNodeData *data;
- TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
- VALUE ret = data->ast->body.script_lines;
- if (!RB_TYPE_P(ret, T_ARRAY)) return Qnil;
- return ret;
-}
-
-#include "ast.rbinc"
-
-void
-Init_ast(void)
-{
- rb_mAST = rb_define_module_under(rb_cRubyVM, "AbstractSyntaxTree");
- rb_cNode = rb_define_class_under(rb_mAST, "Node", rb_cObject);
- rb_undef_alloc_func(rb_cNode);
-}
diff --git a/ast.rb b/ast.rb
deleted file mode 100644
index ec870d8c7a..0000000000
--- a/ast.rb
+++ /dev/null
@@ -1,276 +0,0 @@
-# for ast.c
-
-# AbstractSyntaxTree provides methods to parse Ruby code into
-# abstract syntax trees. The nodes in the tree
-# are instances of RubyVM::AbstractSyntaxTree::Node.
-#
-# This module is MRI specific as it exposes implementation details
-# of the MRI abstract syntax tree.
-#
-# This module is experimental and its API is not stable, therefore it might
-# change without notice. As examples, the order of children nodes is not
-# guaranteed, the number of children nodes might change, there is no way to
-# access children nodes by name, etc.
-#
-# If you are looking for a stable API or an API working under multiple Ruby
-# implementations, consider using the _parser_ gem or Ripper. If you would
-# like to make RubyVM::AbstractSyntaxTree stable, please join the discussion
-# at https://bugs.ruby-lang.org/issues/14844.
-#
-module RubyVM::AbstractSyntaxTree
-
- # call-seq:
- # RubyVM::AbstractSyntaxTree.parse(string, keep_script_lines: false, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
- #
- # Parses the given _string_ into an abstract syntax tree,
- # returning the root node of that tree.
- #
- # RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
- # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-1:9>
- #
- # If <tt>keep_script_lines: true</tt> option is provided, the text of the parsed
- # source is associated with nodes and is available via Node#script_lines.
- #
- # If <tt>keep_tokens: true</tt> option is provided, Node#tokens are populated.
- #
- # SyntaxError is raised if the given _string_ is invalid syntax. To overwrite this
- # behavior, <tt>error_tolerant: true</tt> can be provided. In this case, the parser
- # will produce a tree where expressions with syntax errors would be represented by
- # Node with <tt>type=:ERROR</tt>.
- #
- # root = RubyVM::AbstractSyntaxTree.parse("x = 1; p(x; y=2")
- # # <internal:ast>:33:in `parse': syntax error, unexpected ';', expecting ')' (SyntaxError)
- # # x = 1; p(x; y=2
- # # ^
- #
- # root = RubyVM::AbstractSyntaxTree.parse("x = 1; p(x; y=2", error_tolerant: true)
- # # (SCOPE@1:0-1:15
- # # tbl: [:x, :y]
- # # args: nil
- # # body: (BLOCK@1:0-1:15 (LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)) (ERROR@1:7-1:11) (LASGN@1:12-1:15 :y (LIT@1:14-1:15 2))))
- # root.children.last.children
- # # [(LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)),
- # # (ERROR@1:7-1:11),
- # # (LASGN@1:12-1:15 :y (LIT@1:14-1:15 2))]
- #
- # Note that parsing continues even after the errored expression.
- #
- def self.parse string, keep_script_lines: false, error_tolerant: false, keep_tokens: false
- Primitive.ast_s_parse string, keep_script_lines, error_tolerant, keep_tokens
- end
-
- # call-seq:
- # RubyVM::AbstractSyntaxTree.parse_file(pathname, keep_script_lines: false, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
- #
- # Reads the file from _pathname_, then parses it like ::parse,
- # returning the root node of the abstract syntax tree.
- #
- # SyntaxError is raised if _pathname_'s contents are not
- # valid Ruby syntax.
- #
- # RubyVM::AbstractSyntaxTree.parse_file("my-app/app.rb")
- # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-31:3>
- #
- # See ::parse for explanation of keyword argument meaning and usage.
- def self.parse_file pathname, keep_script_lines: false, error_tolerant: false, keep_tokens: false
- Primitive.ast_s_parse_file pathname, keep_script_lines, error_tolerant, keep_tokens
- end
-
- # call-seq:
- # RubyVM::AbstractSyntaxTree.of(proc, keep_script_lines: false, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
- # RubyVM::AbstractSyntaxTree.of(method, keep_script_lines: false, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
- #
- # Returns AST nodes of the given _proc_ or _method_.
- #
- # RubyVM::AbstractSyntaxTree.of(proc {1 + 2})
- # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:35-1:42>
- #
- # def hello
- # puts "hello, world"
- # end
- #
- # RubyVM::AbstractSyntaxTree.of(method(:hello))
- # # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-3:3>
- #
- # See ::parse for explanation of keyword argument meaning and usage.
- def self.of body, keep_script_lines: false, error_tolerant: false, keep_tokens: false
- Primitive.ast_s_of body, keep_script_lines, error_tolerant, keep_tokens
- end
-
- # call-seq:
- # RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(backtrace_location) -> integer
- #
- # Returns the node id for the given backtrace location.
- #
- # begin
- # raise
- # rescue => e
- # loc = e.backtrace_locations.first
- # RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(loc)
- # end # => 0
- def self.node_id_for_backtrace_location backtrace_location
- Primitive.node_id_for_backtrace_location backtrace_location
- end
-
- # RubyVM::AbstractSyntaxTree::Node instances are created by parse methods in
- # RubyVM::AbstractSyntaxTree.
- #
- # This class is MRI specific.
- #
- class Node
-
- # call-seq:
- # node.type -> symbol
- #
- # Returns the type of this node as a symbol.
- #
- # root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
- # root.type # => :SCOPE
- # lasgn = root.children[2]
- # lasgn.type # => :LASGN
- # call = lasgn.children[1]
- # call.type # => :OPCALL
- def type
- Primitive.ast_node_type
- end
-
- # call-seq:
- # node.first_lineno -> integer
- #
- # The line number in the source code where this AST's text began.
- def first_lineno
- Primitive.ast_node_first_lineno
- end
-
- # call-seq:
- # node.first_column -> integer
- #
- # The column number in the source code where this AST's text began.
- def first_column
- Primitive.ast_node_first_column
- end
-
- # call-seq:
- # node.last_lineno -> integer
- #
- # The line number in the source code where this AST's text ended.
- def last_lineno
- Primitive.ast_node_last_lineno
- end
-
- # call-seq:
- # node.last_column -> integer
- #
- # The column number in the source code where this AST's text ended.
- def last_column
- Primitive.ast_node_last_column
- end
-
- # call-seq:
- # node.tokens -> array
- #
- # Returns tokens corresponding to the location of the node.
- # Returns +nil+ if +keep_tokens+ is not enabled when #parse method is called.
- #
- # root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true)
- # root.tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
- # root.tokens.map{_1[2]}.join # => "x = 1 + 2"
- #
- # Token is an array of:
- #
- # - id
- # - token type
- # - source code text
- # - location [ first_lineno, first_column, last_lineno, last_column ]
- def tokens
- return nil unless all_tokens
-
- all_tokens.each_with_object([]) do |token, a|
- loc = token.last
- if ([first_lineno, first_column] <=> [loc[0], loc[1]]) <= 0 &&
- ([last_lineno, last_column] <=> [loc[2], loc[3]]) >= 0
- a << token
- end
- end
- end
-
- # call-seq:
- # node.all_tokens -> array
- #
- # Returns all tokens for the input script regardless the receiver node.
- # Returns +nil+ if +keep_tokens+ is not enabled when #parse method is called.
- #
- # root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true)
- # root.all_tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
- # root.children[-1].all_tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
- def all_tokens
- Primitive.ast_node_all_tokens
- end
-
- # call-seq:
- # node.children -> array
- #
- # Returns AST nodes under this one. Each kind of node
- # has different children, depending on what kind of node it is.
- #
- # The returned array may contain other nodes or <code>nil</code>.
- def children
- Primitive.ast_node_children
- end
-
- # call-seq:
- # node.inspect -> string
- #
- # Returns debugging information about this node as a string.
- def inspect
- Primitive.ast_node_inspect
- end
-
- # call-seq:
- # node.node_id -> integer
- #
- # Returns an internal node_id number.
- # Note that this is an API for ruby internal use, debugging,
- # and research. Do not use this for any other purpose.
- # The compatibility is not guaranteed.
- def node_id
- Primitive.ast_node_node_id
- end
-
- # call-seq:
- # node.script_lines -> array
- #
- # Returns the original source code as an array of lines.
- #
- # Note that this is an API for ruby internal use, debugging,
- # and research. Do not use this for any other purpose.
- # The compatibility is not guaranteed.
- def script_lines
- Primitive.ast_node_script_lines
- end
-
- # call-seq:
- # node.source -> string
- #
- # Returns the code fragment that corresponds to this AST.
- #
- # Note that this is an API for ruby internal use, debugging,
- # and research. Do not use this for any other purpose.
- # The compatibility is not guaranteed.
- #
- # Also note that this API may return an incomplete code fragment
- # that does not parse; for example, a here document following
- # an expression may be dropped.
- def source
- lines = script_lines
- if lines
- lines = lines[first_lineno - 1 .. last_lineno - 1]
- lines[-1] = lines[-1][0...last_column]
- lines[0] = lines[0][first_column..-1]
- lines.join
- else
- nil
- end
- end
- end
-end
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index f8cdf3c0c1..0000000000
--- a/autogen.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-PWD=
-case "$0" in
-*/*) srcdir=`dirname $0`;;
-*) srcdir="";;
-esac
-
-symlink='--install --symlink'
-case " $* " in
- *" -i "*|*" --install "*)
- # reset to copy missing standard auxiliary files, instead of symlinks
- symlink=
- ;;
-esac
-
-exec ${AUTORECONF:-autoreconf} ${symlink} "$@" ${srcdir:+"$srcdir"}
diff --git a/basictest/test.rb b/basictest/test.rb
index 95875b52a6..25d52ca1ef 100755
--- a/basictest/test.rb
+++ b/basictest/test.rb
@@ -35,7 +35,7 @@ class Progress
# dircolors-like style
colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:\n]*)/)] : {}
begin
- File.read(File.join(__dir__, "../tool/colors")).scan(/(\w+)=([^:\n]*)/) do |n, c|
+ File.read(File.join(__dir__, "../test/colors")).scan(/(\w+)=([^:\n]*)/) do |n, c|
colors[n] ||= c
end
rescue
@@ -984,6 +984,13 @@ test_ok($z == 0)
test_check "iterator"
+test_ok(!iterator?)
+
+def ttt
+ test_ok(iterator?)
+end
+ttt{}
+
# yield at top level
test_ok(!defined?(yield))
@@ -1425,6 +1432,9 @@ marity_test(:test_ok)
marity_test(:marity_test)
marity_test(:p)
+lambda(&method(:test_ok)).call(true)
+lambda(&block_get{|a,n| test_ok(a,n)}).call(true, 2)
+
class ITER_TEST1
def a
block_given?
@@ -1729,7 +1739,7 @@ a = nil
test_ok(defined?(a))
test_ok(a == nil)
-# multiple assignment
+# multiple asignment
a, b = 1, 2
test_ok(a == 1 && b == 2)
@@ -1960,8 +1970,6 @@ test_ok(p1.call == 5)
test_ok(i7 == nil)
end
-# WASI doesn't support spawning a new process for now.
-unless /wasi/ =~ RUBY_PLATFORM
test_check "system"
test_ok(`echo foobar` == "foobar\n")
test_ok(`./miniruby -e 'print "foobar"'` == 'foobar')
@@ -2012,7 +2020,6 @@ test_ok(done)
File.unlink script_tmp or `/bin/rm -f "#{script_tmp}"`
File.unlink "#{script_tmp}.bak" or `/bin/rm -f "#{script_tmp}.bak"`
-end # not /wasi/ =~ RUBY_PLATFORM
test_check "const"
TEST1 = 1
@@ -2140,7 +2147,7 @@ $_ = foobar
test_ok($_ == foobar)
class Gods
- @@rule = "Uranus"
+ @@rule = "Uranus" # private to Gods
def ruler0
@@rule
end
@@ -2163,7 +2170,7 @@ module Olympians
end
class Titans < Gods
- @@rule = "Cronus" # modifies @@rule in Gods
+ @@rule = "Cronus" # do not affect @@rule in Gods
include Olympians
def ruler4
@@rule
@@ -2178,14 +2185,7 @@ test_ok(Titans.ruler2 == "Cronus")
atlas = Titans.new
test_ok(atlas.ruler0 == "Cronus")
test_ok(atlas.ruler3 == "Zeus")
-begin
- atlas.ruler4
-rescue RuntimeError => e
- test_ok(e.message.include?("class variable @@rule of Olympians is overtaken by Gods"))
-else
- test_ok(false)
-end
-test_ok(atlas.ruler3 == "Zeus")
+test_ok(atlas.ruler4 == "Cronus")
test_check "trace"
$x = 1234
diff --git a/benchmark/README.md b/benchmark/README.md
deleted file mode 100644
index e11381cad9..0000000000
--- a/benchmark/README.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# ruby/benchmark
-
-This directory has benchmark definitions to be run with
-[benchmark\_driver.gem](https://github.com/benchmark-driver/benchmark-driver).
-
-## Normal usage
-
-Execute `gem install benchmark_driver` and run a command like:
-
-```bash
-# Run a benchmark script with the ruby in the $PATH
-benchmark-driver benchmark/app_fib.rb
-
-# Run benchmark scripts with multiple Ruby executables or options
-benchmark-driver benchmark/*.rb -e /path/to/ruby -e '/path/to/ruby --jit'
-
-# Or compare Ruby versions managed by rbenv
-benchmark-driver benchmark/*.rb --rbenv '2.5.1;2.6.0-preview2 --jit'
-
-# You can collect many metrics in many ways
-benchmark-driver benchmark/*.rb --runner memory --output markdown
-
-# Some are defined with YAML for complex setup or accurate measurement
-benchmark-driver benchmark/*.yml
-```
-
-See also:
-
-```console
-Usage: benchmark-driver [options] RUBY|YAML...
- -r, --runner TYPE Specify runner type: ips, time, memory, once, block (default: ips)
- -o, --output TYPE Specify output type: compare, simple, markdown, record, all (default: compare)
- -e, --executables EXECS Ruby executables (e1::path1 arg1; e2::path2 arg2;...)
- --rbenv VERSIONS Ruby executables in rbenv (x.x.x arg1;y.y.y arg2;...)
- --repeat-count NUM Try benchmark NUM times and use the fastest result or the worst memory usage
- --repeat-result TYPE Yield "best", "average" or "worst" result with --repeat-count (default: best)
- --alternate Alternate executables instead of running the same executable in a row with --repeat-count
- --bundler Install and use gems specified in Gemfile
- --filter REGEXP Filter out benchmarks with given regexp
- --run-duration SECONDS Warmup estimates loop_count to run for this duration (default: 3)
- --timeout SECONDS Timeout ruby command execution with timeout(1)
- -v, --verbose Verbose mode. Multiple -v options increase visilibity (max: 2)
-```
-
-## make benchmark
-
-Using `make benchmark`, `make update-benchmark-driver` automatically downloads
-the supported version of benchmark\_driver, and it runs benchmarks with the downloaded
-benchmark\_driver.
-
-```bash
-# Run all benchmarks with the ruby in the $PATH and the built ruby
-make benchmark
-
-# Or compare with specific ruby binary
-make benchmark COMPARE_RUBY="/path/to/ruby --jit"
-
-# Run vm benchmarks
-make benchmark ITEM=vm
-
-# Run some limited benchmarks in ITEM-matched files
-make benchmark ITEM=vm OPTS=--filter=block
-
-# You can specify the benchmark by an exact filename instead of using the default argument:
-# ARGS = $$(find $(srcdir)/benchmark -maxdepth 1 -name '*$(ITEM)*.yml' -o -name '*$(ITEM)*.rb')
-make benchmark ARGS=benchmark/erb_render.yml
-
-# You can specify any option via $OPTS
-make benchmark OPTS="--help"
-
-# With `make benchmark`, some special runner plugins are available:
-# -r peak, -r size, -r total, -r utime, -r stime, -r cutime, -r cstime
-make benchmark ITEM=vm_bigarray OPTS="-r peak"
-```
diff --git a/benchmark/app_aobench.rb b/benchmark/app_aobench.rb
deleted file mode 100644
index 16296af12b..0000000000
--- a/benchmark/app_aobench.rb
+++ /dev/null
@@ -1,297 +0,0 @@
-# coding: US-ASCII
-
-# AO render benchmark
-# Original program (C) Syoyo Fujita in Javascript (and other languages)
-# https://code.google.com/p/aobench/
-# Ruby(yarv2llvm) version by Hideki Miura
-#
-
-IMAGE_WIDTH = 256
-IMAGE_HEIGHT = 256
-NSUBSAMPLES = 2
-NAO_SAMPLES = 8
-
-srand(0)
-
-class Vec
- def initialize(x, y, z)
- @x = x
- @y = y
- @z = z
- end
-
- attr_accessor :x, :y, :z
-
- def vadd(b)
- Vec.new(@x + b.x, @y + b.y, @z + b.z)
- end
-
- def vsub(b)
- Vec.new(@x - b.x, @y - b.y, @z - b.z)
- end
-
- def vcross(b)
- Vec.new(@y * b.z - @z * b.y,
- @z * b.x - @x * b.z,
- @x * b.y - @y * b.x)
- end
-
- def vdot(b)
- @x * b.x + @y * b.y + @z * b.z
- end
-
- def vlength
- Math.sqrt(@x * @x + @y * @y + @z * @z)
- end
-
- def vnormalize
- len = vlength
- v = Vec.new(@x, @y, @z)
- if len > 1.0e-17 then
- v.x = v.x / len
- v.y = v.y / len
- v.z = v.z / len
- end
- v
- end
-end
-
-
-class Sphere
- def initialize(center, radius)
- @center = center
- @radius = radius
- end
-
- attr_reader :center, :radius
-
- def intersect(ray, isect)
- rs = ray.org.vsub(@center)
- b = rs.vdot(ray.dir)
- c = rs.vdot(rs) - (@radius * @radius)
- d = b * b - c
- if d > 0.0 then
- t = - b - Math.sqrt(d)
-
- if t > 0.0 and t < isect.t then
- isect.t = t
- isect.hit = true
- isect.pl = Vec.new(ray.org.x + ray.dir.x * t,
- ray.org.y + ray.dir.y * t,
- ray.org.z + ray.dir.z * t)
- n = isect.pl.vsub(@center)
- isect.n = n.vnormalize
- else
- 0.0
- end
- end
- nil
- end
-end
-
-class Plane
- def initialize(p, n)
- @p = p
- @n = n
- end
-
- def intersect(ray, isect)
- d = -@p.vdot(@n)
- v = ray.dir.vdot(@n)
- v0 = v
- if v < 0.0 then
- v0 = -v
- end
- if v0 < 1.0e-17 then
- return
- end
-
- t = -(ray.org.vdot(@n) + d) / v
-
- if t > 0.0 and t < isect.t then
- isect.hit = true
- isect.t = t
- isect.n = @n
- isect.pl = Vec.new(ray.org.x + t * ray.dir.x,
- ray.org.y + t * ray.dir.y,
- ray.org.z + t * ray.dir.z)
- end
- nil
- end
-end
-
-class Ray
- def initialize(org, dir)
- @org = org
- @dir = dir
- end
-
- attr_accessor :org, :dir
-end
-
-class Isect
- def initialize
- @t = 10000000.0
- @hit = false
- @pl = Vec.new(0.0, 0.0, 0.0)
- @n = Vec.new(0.0, 0.0, 0.0)
- end
-
- attr_accessor :t, :hit, :pl, :n
-end
-
-def clamp(f)
- i = f * 255.5
- if i > 255.0 then
- i = 255.0
- end
- if i < 0.0 then
- i = 0.0
- end
- i.to_i
-end
-
-def otherBasis(basis, n)
- basis[2] = Vec.new(n.x, n.y, n.z)
- basis[1] = Vec.new(0.0, 0.0, 0.0)
-
- if n.x < 0.6 and n.x > -0.6 then
- basis[1].x = 1.0
- elsif n.y < 0.6 and n.y > -0.6 then
- basis[1].y = 1.0
- elsif n.z < 0.6 and n.z > -0.6 then
- basis[1].z = 1.0
- else
- basis[1].x = 1.0
- end
-
- basis[0] = basis[1].vcross(basis[2])
- basis[0] = basis[0].vnormalize
-
- basis[1] = basis[2].vcross(basis[0])
- basis[1] = basis[1].vnormalize
-end
-
-class Scene
- def initialize
- @spheres = Array.new
- @spheres[0] = Sphere.new(Vec.new(-2.0, 0.0, -3.5), 0.5)
- @spheres[1] = Sphere.new(Vec.new(-0.5, 0.0, -3.0), 0.5)
- @spheres[2] = Sphere.new(Vec.new(1.0, 0.0, -2.2), 0.5)
- @plane = Plane.new(Vec.new(0.0, -0.5, 0.0), Vec.new(0.0, 1.0, 0.0))
- end
-
- def ambient_occlusion(isect)
- basis = Array.new
- otherBasis(basis, isect.n)
-
- ntheta = NAO_SAMPLES
- nphi = NAO_SAMPLES
- eps = 0.0001
- occlusion = 0.0
-
- p0 = Vec.new(isect.pl.x + eps * isect.n.x,
- isect.pl.y + eps * isect.n.y,
- isect.pl.z + eps * isect.n.z)
- nphi.times do |j|
- ntheta.times do |i|
- r = rand
- phi = 2.0 * 3.14159265 * rand
- x = Math.cos(phi) * Math.sqrt(1.0 - r)
- y = Math.sin(phi) * Math.sqrt(1.0 - r)
- z = Math.sqrt(r)
-
- rx = x * basis[0].x + y * basis[1].x + z * basis[2].x
- ry = x * basis[0].y + y * basis[1].y + z * basis[2].y
- rz = x * basis[0].z + y * basis[1].z + z * basis[2].z
-
- raydir = Vec.new(rx, ry, rz)
- ray = Ray.new(p0, raydir)
-
- occisect = Isect.new
- @spheres[0].intersect(ray, occisect)
- @spheres[1].intersect(ray, occisect)
- @spheres[2].intersect(ray, occisect)
- @plane.intersect(ray, occisect)
- if occisect.hit then
- occlusion = occlusion + 1.0
- else
- 0.0
- end
- end
- end
-
- occlusion = (ntheta.to_f * nphi.to_f - occlusion) / (ntheta.to_f * nphi.to_f)
-
- Vec.new(occlusion, occlusion, occlusion)
- end
-
- def render(w, h, nsubsamples)
- cnt = 0
- nsf = nsubsamples.to_f
- h.times do |y|
- w.times do |x|
- rad = Vec.new(0.0, 0.0, 0.0)
-
- # Subsampling
- nsubsamples.times do |v|
- nsubsamples.times do |u|
-
- cnt = cnt + 1
- wf = w.to_f
- hf = h.to_f
- xf = x.to_f
- yf = y.to_f
- uf = u.to_f
- vf = v.to_f
-
- px = (xf + (uf / nsf) - (wf / 2.0)) / (wf / 2.0)
- py = -(yf + (vf / nsf) - (hf / 2.0)) / (hf / 2.0)
-
- eye = Vec.new(px, py, -1.0).vnormalize
-
- ray = Ray.new(Vec.new(0.0, 0.0, 0.0), eye)
-
- isect = Isect.new
- @spheres[0].intersect(ray, isect)
- @spheres[1].intersect(ray, isect)
- @spheres[2].intersect(ray, isect)
- @plane.intersect(ray, isect)
- if isect.hit then
- col = ambient_occlusion(isect)
- rad.x = rad.x + col.x
- rad.y = rad.y + col.y
- rad.z = rad.z + col.z
- end
- end
- end
-
- r = rad.x / (nsf * nsf)
- g = rad.y / (nsf * nsf)
- b = rad.z / (nsf * nsf)
- printf("%c", clamp(r))
- printf("%c", clamp(g))
- printf("%c", clamp(b))
- end
- nil
- end
-
- nil
- end
-end
-
-alias printf_orig printf
-def printf *args
- # $fp.printf(*args)
-end
-
-# File.open("ao.ppm", "w") do |fp|
- # $fp = fp
- printf("P6\n")
- printf("%d %d\n", IMAGE_WIDTH, IMAGE_HEIGHT)
- printf("255\n")
- Scene.new.render(IMAGE_WIDTH, IMAGE_HEIGHT, NSUBSAMPLES)
-# end
-
-undef printf
-alias printf printf_orig
diff --git a/benchmark/app_erb.yml b/benchmark/app_erb.yml
deleted file mode 100644
index 31e29b7644..0000000000
--- a/benchmark/app_erb.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Create many HTML strings with ERB.
-#
-prelude: |
- require 'erb'
-
- data = <<erb
- <html>
- <head> <%= title %> </head>
- <body>
- <h1> <%= title %> </h1>
- <p>
- <%= content %>
- </p>
- </body>
- </html>
- erb
-
- title = "hello world!"
- content = "hello world!\n" * 10
-benchmark:
- app_erb: ERB.new(data).result(binding)
-loop_count: 15000
diff --git a/benchmark/app_pentomino.rb b/benchmark/app_pentomino.rb
deleted file mode 100644
index 47be7b203f..0000000000
--- a/benchmark/app_pentomino.rb
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/local/bin/ruby
-# This program is contributed by Shin Nishiyama
-
-
-# modified by K.Sasada
-
-NP = 5
-ROW = 8 + NP
-COL = 8
-
-$p = []
-$b = []
-$no = 0
-
-def piece(n, a, nb)
- nb.each{|x|
- a[n] = x
- if n == NP-1
- $p << [a.sort]
- else
- nbc=nb.dup
- [-ROW, -1, 1, ROW].each{|d|
- if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
- nbc << x+d
- end
- }
- nbc.delete x
- piece(n+1,a[0..n],nbc)
- end
- }
-end
-
-def kikaku(a)
- a.collect {|x| x - a[0]}
-end
-def ud(a)
- kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
-end
-def rl(a)
- kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
-end
-def xy(a)
- kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
-end
-
-def mkpieces
- piece(0,[],[0])
- $p.each do |a|
- a0 = a[0]
- a[1] = ud(a0)
- a[2] = rl(a0)
- a[3] = ud(rl(a0))
- a[4] = xy(a0)
- a[5] = ud(xy(a0))
- a[6] = rl(xy(a0))
- a[7] = ud(rl(xy(a0)))
- a.sort!
- a.uniq!
- end
- $p.uniq!.sort! {|x,y| x[0] <=> y[0] }
-end
-
-def mkboard
- (0...ROW*COL).each{|i|
- if i % ROW >= ROW-NP
- $b[i] = -2
- else
- $b[i] = -1
- end
- $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
- }
-end
-
-def pboard
- return # skip print
- print "No. #$no\n"
- (0...COL).each{|i|
- print "|"
- (0...ROW-NP).each{|j|
- x = $b[i*ROW+j]
- if x < 0
- print "..|"
- else
- printf "%2d|",x+1
- end
- }
- print "\n"
- }
- print "\n"
-end
-
-$pnum=[]
-def setpiece(a,pos)
- if a.length == $p.length then
- $no += 1
- pboard
- return
- end
- while $b[pos] != -1
- pos += 1
- end
- ($pnum - a).each do |i|
- $p[i].each do |x|
- f = 0
- x.each{|s|
- if $b[pos+s] != -1
- f=1
- break
- end
- }
- if f == 0 then
- x.each{|s|
- $b[pos+s] = i
- }
- a << i
- setpiece(a.dup, pos)
- a.pop
- x.each{|s|
- $b[pos+s] = -1
- }
- end
- end
- end
-end
-
-mkpieces
-mkboard
-$p[4] = [$p[4][0]]
-$pnum = (0...$p.length).to_a
-setpiece([],0)
diff --git a/benchmark/array_flatten.yml b/benchmark/array_flatten.yml
deleted file mode 100644
index 88ef544ba0..0000000000
--- a/benchmark/array_flatten.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-prelude: |
- small_flat_ary = 5.times.to_a
- large_flat_ary = 100.times.to_a
- small_pairs_ary = [[1, 2]] * 5
- large_pairs_ary = [[1, 2]] * 100
- mostly_flat_ary = 100.times.to_a.push([101, 102])
-
-benchmark:
- small_flat_ary.flatten: small_flat_ary.flatten
- small_flat_ary.flatten!: small_flat_ary.flatten!
- large_flat_ary.flatten: large_flat_ary.flatten
- large_flat_ary.flatten!: large_flat_ary.flatten!
- small_pairs_ary.flatten: small_pairs_ary.flatten
- small_pairs_ary.flatten!: small_pairs_ary.dup.flatten!
- large_pairs_ary.flatten: large_pairs_ary.flatten
- large_pairs_ary.flatten!: large_pairs_ary.dup.flatten!
- mostly_flat_ary.flatten: mostly_flat_ary.flatten
- mostly_flat_ary.flatten!: mostly_flat_ary.dup.flatten!
-loop_count: 10000
diff --git a/benchmark/array_intersection.yml b/benchmark/array_intersection.yml
deleted file mode 100644
index 26705323fd..0000000000
--- a/benchmark/array_intersection.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-prelude: |
- small1 = [1, 2, 3]
- small2 = [1, 2, 3, 4, 5]
- small3 = [2, 3, 4, 5]
- small4 = [2]
- big1 = [1, 2, 3, 4] * 64
- big2 = [1, 2, 3] * 64
- big3 = [1, 2] * 64
-
-benchmark:
- small-&: small1 & small2 & small3 & small4
- small-intersection: small1.intersection(small2, small3, small4)
- big-&: big1 & big2 & big3
- big-intersection: big1.intersection(big2, big3)
diff --git a/benchmark/array_max_float.yml b/benchmark/array_max_float.yml
deleted file mode 100644
index ace1ae2e14..0000000000
--- a/benchmark/array_max_float.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-prelude: |
- ary2 = 2.times.map(&:to_f).shuffle
- ary10 = 10.times.map(&:to_f).shuffle
- ary100 = 100.times.map(&:to_f).shuffle
- ary500 = 500.times.map(&:to_f).shuffle
- ary1000 = 1000.times.map(&:to_f).shuffle
- ary2000 = 2500.times.map(&:to_f).shuffle
- ary3000 = 2500.times.map(&:to_f).shuffle
- ary5000 = 5000.times.map(&:to_f).shuffle
- ary10000 = 10000.times.map(&:to_f).shuffle
- ary20000 = 20000.times.map(&:to_f).shuffle
- ary50000 = 50000.times.map(&:to_f).shuffle
- ary100000 = 100000.times.map(&:to_f).shuffle
-
-benchmark:
- ary2.max: ary2.max
- ary10.max: ary10.max
- ary100.max: ary100.max
- ary500.max: ary500.max
- ary1000.max: ary1000.max
- ary2000.max: ary2000.max
- ary3000.max: ary3000.max
- ary5000.max: ary5000.max
- ary10000.max: ary10000.max
- ary20000.max: ary20000.max
- ary50000.max: ary50000.max
- ary100000.max: ary100000.max
-
-loop_count: 10000
-
diff --git a/benchmark/array_max_int.yml b/benchmark/array_max_int.yml
deleted file mode 100644
index acd83684d0..0000000000
--- a/benchmark/array_max_int.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-prelude: |
- ary2 = 2.times.to_a.shuffle
- ary10 = 10.times.to_a.shuffle
- ary100 = 100.times.to_a.shuffle
- ary500 = 500.times.to_a.shuffle
- ary1000 = 1000.times.to_a.shuffle
- ary2000 = 2500.times.to_a.shuffle
- ary3000 = 2500.times.to_a.shuffle
- ary5000 = 5000.times.to_a.shuffle
- ary10000 = 10000.times.to_a.shuffle
- ary20000 = 20000.times.to_a.shuffle
- ary50000 = 50000.times.to_a.shuffle
- ary100000 = 100000.times.to_a.shuffle
- ary1000000 = 1000000.times.to_a.shuffle
-
-benchmark:
- ary2.max: ary2.max
- ary10.max: ary10.max
- ary100.max: ary100.max
- ary500.max: ary500.max
- ary1000.max: ary1000.max
- ary2000.max: ary2000.max
- ary3000.max: ary3000.max
- ary5000.max: ary5000.max
- ary10000.max: ary10000.max
- ary20000.max: ary20000.max
- ary50000.max: ary50000.max
- ary100000.max: ary100000.max
- ary1000000.max: ary1000000.max
-
-loop_count: 10000
diff --git a/benchmark/array_max_str.yml b/benchmark/array_max_str.yml
deleted file mode 100644
index 2aeed010f2..0000000000
--- a/benchmark/array_max_str.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-prelude: |
- ary2 = 2.times.map(&:to_s).shuffle
- ary10 = 10.times.map(&:to_s).shuffle
- ary100 = 100.times.map(&:to_s).shuffle
- ary500 = 500.times.map(&:to_s).shuffle
- ary1000 = 1000.times.map(&:to_s).shuffle
- ary2000 = 2500.times.map(&:to_s).shuffle
- ary3000 = 2500.times.map(&:to_s).shuffle
- ary5000 = 5000.times.map(&:to_s).shuffle
- ary10000 = 10000.times.map(&:to_s).shuffle
- ary20000 = 20000.times.map(&:to_s).shuffle
- ary50000 = 50000.times.map(&:to_s).shuffle
- ary100000 = 100000.times.map(&:to_s).shuffle
-
-benchmark:
- ary2.max: ary2.max
- ary10.max: ary10.max
- ary100.max: ary100.max
- ary500.max: ary500.max
- ary1000.max: ary1000.max
- ary2000.max: ary2000.max
- ary3000.max: ary3000.max
- ary5000.max: ary5000.max
- ary10000.max: ary10000.max
- ary20000.max: ary20000.max
- ary50000.max: ary50000.max
- ary100000.max: ary100000.max
-
-loop_count: 10000
-
diff --git a/benchmark/array_min.yml b/benchmark/array_min.yml
deleted file mode 100644
index 53e5072b14..0000000000
--- a/benchmark/array_min.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-prelude: |
- ary2 = 2.times.to_a.shuffle
- ary10 = 10.times.to_a.shuffle
- ary100 = 100.times.to_a.shuffle
- ary500 = 500.times.to_a.shuffle
- ary1000 = 1000.times.to_a.shuffle
- ary2000 = 2500.times.to_a.shuffle
- ary3000 = 2500.times.to_a.shuffle
- ary5000 = 5000.times.to_a.shuffle
- ary10000 = 10000.times.to_a.shuffle
- ary20000 = 20000.times.to_a.shuffle
- ary50000 = 50000.times.to_a.shuffle
- ary100000 = 100000.times.to_a.shuffle
- ary1000000 = 1000000.times.to_a.shuffle
-
-benchmark:
- ary2.min: ary2.min
- ary10.min: ary10.min
- ary100.min: ary100.min
- ary500.min: ary500.min
- ary1000.min: ary1000.min
- ary2000.min: ary2000.min
- ary3000.min: ary3000.min
- ary5000.min: ary5000.min
- ary10000.min: ary10000.min
- ary20000.min: ary20000.min
- ary50000.min: ary50000.min
- ary100000.min: ary100000.min
- ary1000000.min: ary1000000.min
-
-loop_count: 10000
diff --git a/benchmark/array_sample.yml b/benchmark/array_sample.yml
deleted file mode 100644
index 1cd2b34794..0000000000
--- a/benchmark/array_sample.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-prelude: ary = (1..10_000).to_a
-benchmark:
- - ary.sample
- - ary.sample(2)
diff --git a/benchmark/array_sort_int.yml b/benchmark/array_sort_int.yml
deleted file mode 100644
index 7b9027ebf7..0000000000
--- a/benchmark/array_sort_int.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-prelude: |
- ary2 = 2.times.to_a.shuffle
- ary10 = 10.times.to_a.shuffle
- ary100 = 100.times.to_a.shuffle
- ary1000 = 1000.times.to_a.shuffle
- ary10000 = 10000.times.to_a.shuffle
-
-benchmark:
- ary2.sort: ary2.sort
- ary10.sort: ary10.sort
- ary100.sort: ary100.sort
- ary1000.sort: ary1000.sort
- ary10000.sort: ary10000.sort
-
-loop_count: 10000
diff --git a/benchmark/array_values_at_int.rb b/benchmark/array_values_at_int.rb
deleted file mode 100644
index 6cb394cb9f..0000000000
--- a/benchmark/array_values_at_int.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-ary = Array.new(10000) {|i| i}
-100000.times { ary.values_at(500) }
diff --git a/benchmark/array_values_at_range.rb b/benchmark/array_values_at_range.rb
deleted file mode 100644
index 5b53806d1c..0000000000
--- a/benchmark/array_values_at_range.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-ary = Array.new(10000) {|i| i}
-100000.times { ary.values_at(1..2000) }
diff --git a/benchmark/attr_accessor.yml b/benchmark/attr_accessor.yml
deleted file mode 100644
index 82134cdf9b..0000000000
--- a/benchmark/attr_accessor.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-prelude: |
- class C
- attr_accessor :x
- def initialize
- @x = nil
- end
- class_eval <<-END
- def ar
- #{'x;'*256}
- end
- def aw
- #{'self.x = nil;'*256}
- end
- def arm
- m = method(:x)
- #{'m.call;'*256}
- end
- def awm
- m = method(:x=)
- #{'m.call(nil);'*256}
- end
- END
- end
- obj = C.new
-benchmark:
- attr_reader: "obj.ar"
- attr_writer: "obj.aw"
- attr_reader_method: "obj.arm"
- attr_writer_method: "obj.awm"
diff --git a/benchmark/app_answer.rb b/benchmark/bm_app_answer.rb
index 3cd8a8fd37..3cd8a8fd37 100644
--- a/benchmark/app_answer.rb
+++ b/benchmark/bm_app_answer.rb
diff --git a/benchmark/bm_app_aobench.rb b/benchmark/bm_app_aobench.rb
new file mode 100644
index 0000000000..2bd6acfaf8
--- /dev/null
+++ b/benchmark/bm_app_aobench.rb
@@ -0,0 +1,291 @@
+# AO render benchmark
+# Original program (C) Syoyo Fujita in Javascript (and other languages)
+# https://code.google.com/p/aobench/
+# Ruby(yarv2llvm) version by Hideki Miura
+#
+
+IMAGE_WIDTH = 256
+IMAGE_HEIGHT = 256
+NSUBSAMPLES = 2
+NAO_SAMPLES = 8
+
+class Vec
+ def initialize(x, y, z)
+ @x = x
+ @y = y
+ @z = z
+ end
+
+ attr_accessor :x, :y, :z
+
+ def vadd(b)
+ Vec.new(@x + b.x, @y + b.y, @z + b.z)
+ end
+
+ def vsub(b)
+ Vec.new(@x - b.x, @y - b.y, @z - b.z)
+ end
+
+ def vcross(b)
+ Vec.new(@y * b.z - @z * b.y,
+ @z * b.x - @x * b.z,
+ @x * b.y - @y * b.x)
+ end
+
+ def vdot(b)
+ @x * b.x + @y * b.y + @z * b.z
+ end
+
+ def vlength
+ Math.sqrt(@x * @x + @y * @y + @z * @z)
+ end
+
+ def vnormalize
+ len = vlength
+ v = Vec.new(@x, @y, @z)
+ if len > 1.0e-17 then
+ v.x = v.x / len
+ v.y = v.y / len
+ v.z = v.z / len
+ end
+ v
+ end
+end
+
+
+class Sphere
+ def initialize(center, radius)
+ @center = center
+ @radius = radius
+ end
+
+ attr_reader :center, :radius
+
+ def intersect(ray, isect)
+ rs = ray.org.vsub(@center)
+ b = rs.vdot(ray.dir)
+ c = rs.vdot(rs) - (@radius * @radius)
+ d = b * b - c
+ if d > 0.0 then
+ t = - b - Math.sqrt(d)
+
+ if t > 0.0 and t < isect.t then
+ isect.t = t
+ isect.hit = true
+ isect.pl = Vec.new(ray.org.x + ray.dir.x * t,
+ ray.org.y + ray.dir.y * t,
+ ray.org.z + ray.dir.z * t)
+ n = isect.pl.vsub(@center)
+ isect.n = n.vnormalize
+ else
+ 0.0
+ end
+ end
+ nil
+ end
+end
+
+class Plane
+ def initialize(p, n)
+ @p = p
+ @n = n
+ end
+
+ def intersect(ray, isect)
+ d = -@p.vdot(@n)
+ v = ray.dir.vdot(@n)
+ v0 = v
+ if v < 0.0 then
+ v0 = -v
+ end
+ if v0 < 1.0e-17 then
+ return
+ end
+
+ t = -(ray.org.vdot(@n) + d) / v
+
+ if t > 0.0 and t < isect.t then
+ isect.hit = true
+ isect.t = t
+ isect.n = @n
+ isect.pl = Vec.new(ray.org.x + t * ray.dir.x,
+ ray.org.y + t * ray.dir.y,
+ ray.org.z + t * ray.dir.z)
+ end
+ nil
+ end
+end
+
+class Ray
+ def initialize(org, dir)
+ @org = org
+ @dir = dir
+ end
+
+ attr_accessor :org, :dir
+end
+
+class Isect
+ def initialize
+ @t = 10000000.0
+ @hit = false
+ @pl = Vec.new(0.0, 0.0, 0.0)
+ @n = Vec.new(0.0, 0.0, 0.0)
+ end
+
+ attr_accessor :t, :hit, :pl, :n
+end
+
+def clamp(f)
+ i = f * 255.5
+ if i > 255.0 then
+ i = 255.0
+ end
+ if i < 0.0 then
+ i = 0.0
+ end
+ i.to_i
+end
+
+def otherBasis(basis, n)
+ basis[2] = Vec.new(n.x, n.y, n.z)
+ basis[1] = Vec.new(0.0, 0.0, 0.0)
+
+ if n.x < 0.6 and n.x > -0.6 then
+ basis[1].x = 1.0
+ elsif n.y < 0.6 and n.y > -0.6 then
+ basis[1].y = 1.0
+ elsif n.z < 0.6 and n.z > -0.6 then
+ basis[1].z = 1.0
+ else
+ basis[1].x = 1.0
+ end
+
+ basis[0] = basis[1].vcross(basis[2])
+ basis[0] = basis[0].vnormalize
+
+ basis[1] = basis[2].vcross(basis[0])
+ basis[1] = basis[1].vnormalize
+end
+
+class Scene
+ def initialize
+ @spheres = Array.new
+ @spheres[0] = Sphere.new(Vec.new(-2.0, 0.0, -3.5), 0.5)
+ @spheres[1] = Sphere.new(Vec.new(-0.5, 0.0, -3.0), 0.5)
+ @spheres[2] = Sphere.new(Vec.new(1.0, 0.0, -2.2), 0.5)
+ @plane = Plane.new(Vec.new(0.0, -0.5, 0.0), Vec.new(0.0, 1.0, 0.0))
+ end
+
+ def ambient_occlusion(isect)
+ basis = Array.new
+ otherBasis(basis, isect.n)
+
+ ntheta = NAO_SAMPLES
+ nphi = NAO_SAMPLES
+ eps = 0.0001
+ occlusion = 0.0
+
+ p0 = Vec.new(isect.pl.x + eps * isect.n.x,
+ isect.pl.y + eps * isect.n.y,
+ isect.pl.z + eps * isect.n.z)
+ nphi.times do |j|
+ ntheta.times do |i|
+ r = rand
+ phi = 2.0 * 3.14159265 * rand
+ x = Math.cos(phi) * Math.sqrt(1.0 - r)
+ y = Math.sin(phi) * Math.sqrt(1.0 - r)
+ z = Math.sqrt(r)
+
+ rx = x * basis[0].x + y * basis[1].x + z * basis[2].x
+ ry = x * basis[0].y + y * basis[1].y + z * basis[2].y
+ rz = x * basis[0].z + y * basis[1].z + z * basis[2].z
+
+ raydir = Vec.new(rx, ry, rz)
+ ray = Ray.new(p0, raydir)
+
+ occisect = Isect.new
+ @spheres[0].intersect(ray, occisect)
+ @spheres[1].intersect(ray, occisect)
+ @spheres[2].intersect(ray, occisect)
+ @plane.intersect(ray, occisect)
+ if occisect.hit then
+ occlusion = occlusion + 1.0
+ else
+ 0.0
+ end
+ end
+ end
+
+ occlusion = (ntheta.to_f * nphi.to_f - occlusion) / (ntheta.to_f * nphi.to_f)
+
+ Vec.new(occlusion, occlusion, occlusion)
+ end
+
+ def render(w, h, nsubsamples)
+ cnt = 0
+ nsf = nsubsamples.to_f
+ h.times do |y|
+ w.times do |x|
+ rad = Vec.new(0.0, 0.0, 0.0)
+
+ # Subsampling
+ nsubsamples.times do |v|
+ nsubsamples.times do |u|
+
+ cnt = cnt + 1
+ wf = w.to_f
+ hf = h.to_f
+ xf = x.to_f
+ yf = y.to_f
+ uf = u.to_f
+ vf = v.to_f
+
+ px = (xf + (uf / nsf) - (wf / 2.0)) / (wf / 2.0)
+ py = -(yf + (vf / nsf) - (hf / 2.0)) / (hf / 2.0)
+
+ eye = Vec.new(px, py, -1.0).vnormalize
+
+ ray = Ray.new(Vec.new(0.0, 0.0, 0.0), eye)
+
+ isect = Isect.new
+ @spheres[0].intersect(ray, isect)
+ @spheres[1].intersect(ray, isect)
+ @spheres[2].intersect(ray, isect)
+ @plane.intersect(ray, isect)
+ if isect.hit then
+ col = ambient_occlusion(isect)
+ rad.x = rad.x + col.x
+ rad.y = rad.y + col.y
+ rad.z = rad.z + col.z
+ end
+ end
+ end
+
+ r = rad.x / (nsf * nsf)
+ g = rad.y / (nsf * nsf)
+ b = rad.z / (nsf * nsf)
+ printf("%c", clamp(r))
+ printf("%c", clamp(g))
+ printf("%c", clamp(b))
+ end
+ nil
+ end
+
+ nil
+ end
+end
+
+alias printf_orig printf
+def printf *args
+end
+
+# File.open("ao.ppm", "w") do |fp|
+ printf("P6\n")
+ printf("%d %d\n", IMAGE_WIDTH, IMAGE_HEIGHT)
+ printf("255\n", IMAGE_WIDTH, IMAGE_HEIGHT)
+ Scene.new.render(IMAGE_WIDTH, IMAGE_HEIGHT, NSUBSAMPLES)
+# end
+
+undef printf
+alias printf printf_orig
diff --git a/benchmark/bm_app_erb.rb b/benchmark/bm_app_erb.rb
new file mode 100644
index 0000000000..77c66a7949
--- /dev/null
+++ b/benchmark/bm_app_erb.rb
@@ -0,0 +1,26 @@
+#
+# Create many HTML strings with ERB.
+#
+
+require 'erb'
+
+data = DATA.read
+max = 15_000
+title = "hello world!"
+content = "hello world!\n" * 10
+
+max.times{
+ ERB.new(data).result(binding)
+}
+
+__END__
+
+<html>
+ <head> <%= title %> </head>
+ <body>
+ <h1> <%= title %> </h1>
+ <p>
+ <%= content %>
+ </p>
+ </body>
+</html>
diff --git a/benchmark/app_factorial.rb b/benchmark/bm_app_factorial.rb
index 45f471dfdb..45f471dfdb 100644
--- a/benchmark/app_factorial.rb
+++ b/benchmark/bm_app_factorial.rb
diff --git a/benchmark/app_fib.rb b/benchmark/bm_app_fib.rb
index 34a7b2e725..34a7b2e725 100644
--- a/benchmark/app_fib.rb
+++ b/benchmark/bm_app_fib.rb
diff --git a/benchmark/app_lc_fizzbuzz.rb b/benchmark/bm_app_lc_fizzbuzz.rb
index f09574bbeb..f09574bbeb 100644
--- a/benchmark/app_lc_fizzbuzz.rb
+++ b/benchmark/bm_app_lc_fizzbuzz.rb
diff --git a/benchmark/app_mandelbrot.rb b/benchmark/bm_app_mandelbrot.rb
index 801b75e8e2..801b75e8e2 100644
--- a/benchmark/app_mandelbrot.rb
+++ b/benchmark/bm_app_mandelbrot.rb
diff --git a/benchmark/bm_app_pentomino.rb b/benchmark/bm_app_pentomino.rb
new file mode 100644
index 0000000000..59c63f358e
--- /dev/null
+++ b/benchmark/bm_app_pentomino.rb
@@ -0,0 +1,259 @@
+#!/usr/local/bin/ruby
+# This program is contributed by Shin Nishiyama
+
+
+# modified by K.Sasada
+
+NP = 5
+ROW = 8 + NP
+COL = 8
+
+$p = []
+$b = []
+$no = 0
+
+def piece(n, a, nb)
+ nb.each{|x|
+ a[n] = x
+ if n == NP-1
+ $p << [a.sort]
+ else
+ nbc=nb.dup
+ [-ROW, -1, 1, ROW].each{|d|
+ if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
+ nbc << x+d
+ end
+ }
+ nbc.delete x
+ piece(n+1,a[0..n],nbc)
+ end
+ }
+end
+
+def kikaku(a)
+ a.collect {|x| x - a[0]}
+end
+def ud(a)
+ kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
+end
+def rl(a)
+ kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
+end
+def xy(a)
+ kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
+end
+
+def mkpieces
+ piece(0,[],[0])
+ $p.each do |a|
+ a0 = a[0]
+ a[1] = ud(a0)
+ a[2] = rl(a0)
+ a[3] = ud(rl(a0))
+ a[4] = xy(a0)
+ a[5] = ud(xy(a0))
+ a[6] = rl(xy(a0))
+ a[7] = ud(rl(xy(a0)))
+ a.sort!
+ a.uniq!
+ end
+ $p.uniq!.sort! {|x,y| x[0] <=> y[0] }
+end
+
+def mkboard
+ (0...ROW*COL).each{|i|
+ if i % ROW >= ROW-NP
+ $b[i] = -2
+ else
+ $b[i] = -1
+ end
+ $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
+ }
+end
+
+def pboard
+ return # skip print
+ print "No. #$no\n"
+ (0...COL).each{|i|
+ print "|"
+ (0...ROW-NP).each{|j|
+ x = $b[i*ROW+j]
+ if x < 0
+ print "..|"
+ else
+ printf "%2d|",x+1
+ end
+ }
+ print "\n"
+ }
+ print "\n"
+end
+
+$pnum=[]
+def setpiece(a,pos)
+ if a.length == $p.length then
+ $no += 1
+ pboard
+ return
+ end
+ while $b[pos] != -1
+ pos += 1
+ end
+ ($pnum - a).each do |i|
+ $p[i].each do |x|
+ f = 0
+ x.each{|s|
+ if $b[pos+s] != -1
+ f=1
+ break
+ end
+ }
+ if f == 0 then
+ x.each{|s|
+ $b[pos+s] = i
+ }
+ a << i
+ setpiece(a.dup, pos)
+ a.pop
+ x.each{|s|
+ $b[pos+s] = -1
+ }
+ end
+ end
+ end
+end
+
+mkpieces
+mkboard
+$p[4] = [$p[4][0]]
+$pnum = (0...$p.length).to_a
+setpiece([],0)
+
+
+__END__
+
+# original
+
+NP = 5
+ROW = 8 + NP
+COL = 8
+
+$p = []
+$b = []
+$no = 0
+
+def piece(n,a,nb)
+ for x in nb
+ a[n] = x
+ if n == NP-1
+ $p << [a.sort]
+ else
+ nbc=nb.dup
+ for d in [-ROW, -1, 1, ROW]
+ if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
+ nbc << x+d
+ end
+ end
+ nbc.delete x
+ piece(n+1,a[0..n],nbc)
+ end
+ end
+end
+
+def kikaku(a)
+ a.collect {|x| x - a[0]}
+end
+def ud(a)
+ kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
+end
+def rl(a)
+ kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
+end
+def xy(a)
+ kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
+end
+
+def mkpieces
+ piece(0,[],[0])
+ $p.each do |a|
+ a0 = a[0]
+ a[1] = ud(a0)
+ a[2] = rl(a0)
+ a[3] = ud(rl(a0))
+ a[4] = xy(a0)
+ a[5] = ud(xy(a0))
+ a[6] = rl(xy(a0))
+ a[7] = ud(rl(xy(a0)))
+ a.sort!
+ a.uniq!
+ end
+ $p.uniq!.sort! {|x,y| x[0] <=> y[0] }
+end
+
+def mkboard
+ for i in 0...ROW*COL
+ if i % ROW >= ROW-NP
+ $b[i] = -2
+ else
+ $b[i] = -1
+ end
+ $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
+ end
+end
+
+def pboard
+ print "No. #$no\n"
+ for i in 0...COL
+ print "|"
+ for j in 0...ROW-NP
+ x = $b[i*ROW+j]
+ if x < 0
+ print "..|"
+ else
+ printf "%2d|",x+1
+ end
+ end
+ print "\n"
+ end
+ print "\n"
+end
+
+$pnum=[]
+def setpiece(a,pos)
+ if a.length == $p.length then
+ $no += 1
+ pboard
+ return
+ end
+ while $b[pos] != -1
+ pos += 1
+ end
+ ($pnum - a).each do |i|
+ $p[i].each do |x|
+ f = 0
+ for s in x do
+ if $b[pos+s] != -1
+ f=1
+ break
+ end
+ end
+ if f == 0 then
+ for s in x do
+ $b[pos+s] = i
+ end
+ a << i
+ setpiece(a.dup, pos)
+ a.pop
+ for s in x do
+ $b[pos+s] = -1
+ end
+ end
+ end
+ end
+end
+
+mkpieces
+mkboard
+$p[4] = [$p[4][0]]
+$pnum = (0...$p.length).to_a
+setpiece([],0)
diff --git a/benchmark/app_raise.rb b/benchmark/bm_app_raise.rb
index 5db8f95d50..5db8f95d50 100644
--- a/benchmark/app_raise.rb
+++ b/benchmark/bm_app_raise.rb
diff --git a/benchmark/app_strconcat.rb b/benchmark/bm_app_strconcat.rb
index 7eed7c1aed..7eed7c1aed 100644
--- a/benchmark/app_strconcat.rb
+++ b/benchmark/bm_app_strconcat.rb
diff --git a/benchmark/app_tak.rb b/benchmark/bm_app_tak.rb
index efe5380f4e..efe5380f4e 100644
--- a/benchmark/app_tak.rb
+++ b/benchmark/bm_app_tak.rb
diff --git a/benchmark/app_tarai.rb b/benchmark/bm_app_tarai.rb
index 4c146f5ccf..4c146f5ccf 100644
--- a/benchmark/app_tarai.rb
+++ b/benchmark/bm_app_tarai.rb
diff --git a/benchmark/app_uri.rb b/benchmark/bm_app_uri.rb
index 586edfd5dc..586edfd5dc 100644
--- a/benchmark/app_uri.rb
+++ b/benchmark/bm_app_uri.rb
diff --git a/benchmark/array_sample_100k_10.rb b/benchmark/bm_array_sample_100k_10.rb
index 5f41ecc32b..5f41ecc32b 100644
--- a/benchmark/array_sample_100k_10.rb
+++ b/benchmark/bm_array_sample_100k_10.rb
diff --git a/benchmark/array_sample_100k_11.rb b/benchmark/bm_array_sample_100k_11.rb
index 18b1715319..18b1715319 100644
--- a/benchmark/array_sample_100k_11.rb
+++ b/benchmark/bm_array_sample_100k_11.rb
diff --git a/benchmark/array_sample_100k__100.rb b/benchmark/bm_array_sample_100k__100.rb
index 22863afe89..22863afe89 100644
--- a/benchmark/array_sample_100k__100.rb
+++ b/benchmark/bm_array_sample_100k__100.rb
diff --git a/benchmark/array_sample_100k__1k.rb b/benchmark/bm_array_sample_100k__1k.rb
index 4cd79e6c67..4cd79e6c67 100644
--- a/benchmark/array_sample_100k__1k.rb
+++ b/benchmark/bm_array_sample_100k__1k.rb
diff --git a/benchmark/array_sample_100k__6k.rb b/benchmark/bm_array_sample_100k__6k.rb
index b3d264249e..b3d264249e 100644
--- a/benchmark/array_sample_100k__6k.rb
+++ b/benchmark/bm_array_sample_100k__6k.rb
diff --git a/benchmark/array_sample_100k___10k.rb b/benchmark/bm_array_sample_100k___10k.rb
index 5dd55ec058..5dd55ec058 100644
--- a/benchmark/array_sample_100k___10k.rb
+++ b/benchmark/bm_array_sample_100k___10k.rb
diff --git a/benchmark/array_sample_100k___50k.rb b/benchmark/bm_array_sample_100k___50k.rb
index 1506732c3c..1506732c3c 100644
--- a/benchmark/array_sample_100k___50k.rb
+++ b/benchmark/bm_array_sample_100k___50k.rb
diff --git a/benchmark/array_shift.rb b/benchmark/bm_array_shift.rb
index 798bb9e3f4..798bb9e3f4 100644
--- a/benchmark/array_shift.rb
+++ b/benchmark/bm_array_shift.rb
diff --git a/benchmark/array_small_and.rb b/benchmark/bm_array_small_and.rb
index e53a6edae6..e53a6edae6 100644
--- a/benchmark/array_small_and.rb
+++ b/benchmark/bm_array_small_and.rb
diff --git a/benchmark/array_small_diff.rb b/benchmark/bm_array_small_diff.rb
index 9661ee48db..9661ee48db 100644
--- a/benchmark/array_small_diff.rb
+++ b/benchmark/bm_array_small_diff.rb
diff --git a/benchmark/array_small_or.rb b/benchmark/bm_array_small_or.rb
index c58b5fd1ff..c58b5fd1ff 100644
--- a/benchmark/array_small_or.rb
+++ b/benchmark/bm_array_small_or.rb
diff --git a/benchmark/array_sort_block.rb b/benchmark/bm_array_sort_block.rb
index 3579786056..3579786056 100644
--- a/benchmark/array_sort_block.rb
+++ b/benchmark/bm_array_sort_block.rb
diff --git a/benchmark/array_sort_float.rb b/benchmark/bm_array_sort_float.rb
index 9a6e2f8bd2..9a6e2f8bd2 100644
--- a/benchmark/array_sort_float.rb
+++ b/benchmark/bm_array_sort_float.rb
diff --git a/benchmark/bighash.rb b/benchmark/bm_bighash.rb
index e2ad5a5c94..e2ad5a5c94 100644
--- a/benchmark/bighash.rb
+++ b/benchmark/bm_bighash.rb
diff --git a/benchmark/dir_empty_p.rb b/benchmark/bm_dir_empty_p.rb
index 8329c757cf..8329c757cf 100644
--- a/benchmark/dir_empty_p.rb
+++ b/benchmark/bm_dir_empty_p.rb
diff --git a/benchmark/bm_erb_render.rb b/benchmark/bm_erb_render.rb
new file mode 100644
index 0000000000..d2929b0553
--- /dev/null
+++ b/benchmark/bm_erb_render.rb
@@ -0,0 +1,26 @@
+require 'erb'
+
+data = DATA.read
+max = 1_500_000
+title = "hello world!"
+content = "hello world!\n" * 10
+
+src = "def self.render(title, content); #{ERB.new(data).src}; end"
+mod = Module.new
+mod.instance_eval(src, "(ERB)")
+
+max.times do
+ mod.render(title, content)
+end
+
+__END__
+
+<html>
+ <head> <%= title %> </head>
+ <body>
+ <h1> <%= title %> </h1>
+ <p>
+ <%= content %>
+ </p>
+ </body>
+</html>
diff --git a/benchmark/file_chmod.rb b/benchmark/bm_file_chmod.rb
index 1cd4760c9d..1cd4760c9d 100644
--- a/benchmark/file_chmod.rb
+++ b/benchmark/bm_file_chmod.rb
diff --git a/benchmark/bm_file_rename.rb b/benchmark/bm_file_rename.rb
new file mode 100644
index 0000000000..3bf6a5ef35
--- /dev/null
+++ b/benchmark/bm_file_rename.rb
@@ -0,0 +1,11 @@
+# rename file
+require 'tempfile'
+
+max = 100_000
+tmp = [ Tempfile.new('rename-a'), Tempfile.new('rename-b') ]
+a, b = tmp.map { |x| x.path }
+max.times do
+ File.rename(a, b)
+ File.rename(b, a)
+end
+tmp.each { |t| t.close! }
diff --git a/benchmark/hash_aref_dsym.rb b/benchmark/bm_hash_aref_dsym.rb
index af4f8c36d4..af4f8c36d4 100644
--- a/benchmark/hash_aref_dsym.rb
+++ b/benchmark/bm_hash_aref_dsym.rb
diff --git a/benchmark/hash_aref_dsym_long.rb b/benchmark/bm_hash_aref_dsym_long.rb
index 9d7759379e..9d7759379e 100644
--- a/benchmark/hash_aref_dsym_long.rb
+++ b/benchmark/bm_hash_aref_dsym_long.rb
diff --git a/benchmark/hash_aref_fix.rb b/benchmark/bm_hash_aref_fix.rb
index 1346890582..1346890582 100644
--- a/benchmark/hash_aref_fix.rb
+++ b/benchmark/bm_hash_aref_fix.rb
diff --git a/benchmark/hash_aref_flo.rb b/benchmark/bm_hash_aref_flo.rb
index 2217274c82..2217274c82 100644
--- a/benchmark/hash_aref_flo.rb
+++ b/benchmark/bm_hash_aref_flo.rb
diff --git a/benchmark/hash_aref_miss.rb b/benchmark/bm_hash_aref_miss.rb
index b0913dd4bb..b0913dd4bb 100644
--- a/benchmark/hash_aref_miss.rb
+++ b/benchmark/bm_hash_aref_miss.rb
diff --git a/benchmark/hash_aref_str.rb b/benchmark/bm_hash_aref_str.rb
index 19439b061b..19439b061b 100644
--- a/benchmark/hash_aref_str.rb
+++ b/benchmark/bm_hash_aref_str.rb
diff --git a/benchmark/hash_aref_sym.rb b/benchmark/bm_hash_aref_sym.rb
index f75d163fe6..f75d163fe6 100644
--- a/benchmark/hash_aref_sym.rb
+++ b/benchmark/bm_hash_aref_sym.rb
diff --git a/benchmark/hash_aref_sym_long.rb b/benchmark/bm_hash_aref_sym_long.rb
index 9dab8df7be..9dab8df7be 100644
--- a/benchmark/hash_aref_sym_long.rb
+++ b/benchmark/bm_hash_aref_sym_long.rb
diff --git a/benchmark/hash_flatten.rb b/benchmark/bm_hash_flatten.rb
index e944aae9f2..e944aae9f2 100644
--- a/benchmark/hash_flatten.rb
+++ b/benchmark/bm_hash_flatten.rb
diff --git a/benchmark/hash_ident_flo.rb b/benchmark/bm_hash_ident_flo.rb
index 0c7edfed3e..0c7edfed3e 100644
--- a/benchmark/hash_ident_flo.rb
+++ b/benchmark/bm_hash_ident_flo.rb
diff --git a/benchmark/hash_ident_num.rb b/benchmark/bm_hash_ident_num.rb
index b226736c6f..b226736c6f 100644
--- a/benchmark/hash_ident_num.rb
+++ b/benchmark/bm_hash_ident_num.rb
diff --git a/benchmark/hash_ident_obj.rb b/benchmark/bm_hash_ident_obj.rb
index 4b3b58edec..4b3b58edec 100644
--- a/benchmark/hash_ident_obj.rb
+++ b/benchmark/bm_hash_ident_obj.rb
diff --git a/benchmark/hash_ident_str.rb b/benchmark/bm_hash_ident_str.rb
index 8582b38e31..8582b38e31 100644
--- a/benchmark/hash_ident_str.rb
+++ b/benchmark/bm_hash_ident_str.rb
diff --git a/benchmark/hash_ident_sym.rb b/benchmark/bm_hash_ident_sym.rb
index 4c81e3d28e..4c81e3d28e 100644
--- a/benchmark/hash_ident_sym.rb
+++ b/benchmark/bm_hash_ident_sym.rb
diff --git a/benchmark/hash_keys.rb b/benchmark/bm_hash_keys.rb
index 6863cd01f9..6863cd01f9 100644
--- a/benchmark/hash_keys.rb
+++ b/benchmark/bm_hash_keys.rb
diff --git a/benchmark/hash_long.rb b/benchmark/bm_hash_long.rb
index 03d9109602..03d9109602 100644
--- a/benchmark/hash_long.rb
+++ b/benchmark/bm_hash_long.rb
diff --git a/benchmark/hash_shift.rb b/benchmark/bm_hash_shift.rb
index a645671a5b..a645671a5b 100644
--- a/benchmark/hash_shift.rb
+++ b/benchmark/bm_hash_shift.rb
diff --git a/benchmark/hash_shift_u16.rb b/benchmark/bm_hash_shift_u16.rb
index ec800d0342..ec800d0342 100644
--- a/benchmark/hash_shift_u16.rb
+++ b/benchmark/bm_hash_shift_u16.rb
diff --git a/benchmark/hash_shift_u24.rb b/benchmark/bm_hash_shift_u24.rb
index de4e0fa696..de4e0fa696 100644
--- a/benchmark/hash_shift_u24.rb
+++ b/benchmark/bm_hash_shift_u24.rb
diff --git a/benchmark/hash_shift_u32.rb b/benchmark/bm_hash_shift_u32.rb
index 656aa55583..656aa55583 100644
--- a/benchmark/hash_shift_u32.rb
+++ b/benchmark/bm_hash_shift_u32.rb
diff --git a/benchmark/hash_small2.rb b/benchmark/bm_hash_small2.rb
index 45485d9c71..45485d9c71 100644
--- a/benchmark/hash_small2.rb
+++ b/benchmark/bm_hash_small2.rb
diff --git a/benchmark/hash_small4.rb b/benchmark/bm_hash_small4.rb
index acd4084334..acd4084334 100644
--- a/benchmark/hash_small4.rb
+++ b/benchmark/bm_hash_small4.rb
diff --git a/benchmark/hash_small8.rb b/benchmark/bm_hash_small8.rb
index 9cffcc91b6..9cffcc91b6 100644
--- a/benchmark/hash_small8.rb
+++ b/benchmark/bm_hash_small8.rb
diff --git a/benchmark/hash_to_proc.rb b/benchmark/bm_hash_to_proc.rb
index 2b675bf509..2b675bf509 100644
--- a/benchmark/hash_to_proc.rb
+++ b/benchmark/bm_hash_to_proc.rb
diff --git a/benchmark/hash_values.rb b/benchmark/bm_hash_values.rb
index 069441302f..069441302f 100644
--- a/benchmark/hash_values.rb
+++ b/benchmark/bm_hash_values.rb
diff --git a/benchmark/int_quo.rb b/benchmark/bm_int_quo.rb
index e22a3f8c30..e22a3f8c30 100644
--- a/benchmark/int_quo.rb
+++ b/benchmark/bm_int_quo.rb
diff --git a/benchmark/io_copy_stream_write.rb b/benchmark/bm_io_copy_stream_write.rb
index 3fd87250a4..3fd87250a4 100644
--- a/benchmark/io_copy_stream_write.rb
+++ b/benchmark/bm_io_copy_stream_write.rb
diff --git a/benchmark/io_copy_stream_write_socket.rb b/benchmark/bm_io_copy_stream_write_socket.rb
index 11f369bd0d..11f369bd0d 100644
--- a/benchmark/io_copy_stream_write_socket.rb
+++ b/benchmark/bm_io_copy_stream_write_socket.rb
diff --git a/benchmark/io_file_create.rb b/benchmark/bm_io_file_create.rb
index 2f205c1333..2f205c1333 100644
--- a/benchmark/io_file_create.rb
+++ b/benchmark/bm_io_file_create.rb
diff --git a/benchmark/io_file_read.rb b/benchmark/bm_io_file_read.rb
index b9e796ed30..b9e796ed30 100644
--- a/benchmark/io_file_read.rb
+++ b/benchmark/bm_io_file_read.rb
diff --git a/benchmark/io_file_write.rb b/benchmark/bm_io_file_write.rb
index aa1be0e5fe..aa1be0e5fe 100644
--- a/benchmark/io_file_write.rb
+++ b/benchmark/bm_io_file_write.rb
diff --git a/benchmark/io_nonblock_noex.rb b/benchmark/bm_io_nonblock_noex.rb
index da9357fdc6..da9357fdc6 100644
--- a/benchmark/io_nonblock_noex.rb
+++ b/benchmark/bm_io_nonblock_noex.rb
diff --git a/benchmark/io_nonblock_noex2.rb b/benchmark/bm_io_nonblock_noex2.rb
index 56819d049b..56819d049b 100644
--- a/benchmark/io_nonblock_noex2.rb
+++ b/benchmark/bm_io_nonblock_noex2.rb
diff --git a/benchmark/io_pipe_rw.rb b/benchmark/bm_io_pipe_rw.rb
index 6862a8ae61..6862a8ae61 100644
--- a/benchmark/io_pipe_rw.rb
+++ b/benchmark/bm_io_pipe_rw.rb
diff --git a/benchmark/io_select.rb b/benchmark/bm_io_select.rb
index 19248daeb1..19248daeb1 100644
--- a/benchmark/io_select.rb
+++ b/benchmark/bm_io_select.rb
diff --git a/benchmark/io_select2.rb b/benchmark/bm_io_select2.rb
index 10e37d71b2..10e37d71b2 100644
--- a/benchmark/io_select2.rb
+++ b/benchmark/bm_io_select2.rb
diff --git a/benchmark/io_select3.rb b/benchmark/bm_io_select3.rb
index 7d0ba1f092..7d0ba1f092 100644
--- a/benchmark/io_select3.rb
+++ b/benchmark/bm_io_select3.rb
diff --git a/benchmark/loop_for.rb b/benchmark/bm_loop_for.rb
index 0fc4cc1511..0fc4cc1511 100644
--- a/benchmark/loop_for.rb
+++ b/benchmark/bm_loop_for.rb
diff --git a/benchmark/bm_loop_generator.rb b/benchmark/bm_loop_generator.rb
new file mode 100644
index 0000000000..d3375c744c
--- /dev/null
+++ b/benchmark/bm_loop_generator.rb
@@ -0,0 +1,14 @@
+max = 600000
+
+if defined? Fiber
+ gen = (1..max).each
+ loop do
+ gen.next
+ end
+else
+ require 'generator'
+ gen = Generator.new((0..max))
+ while gen.next?
+ gen.next
+ end
+end
diff --git a/benchmark/loop_times.rb b/benchmark/bm_loop_times.rb
index 521f72ad1a..521f72ad1a 100644
--- a/benchmark/loop_times.rb
+++ b/benchmark/bm_loop_times.rb
diff --git a/benchmark/loop_whileloop.rb b/benchmark/bm_loop_whileloop.rb
index 0072822c06..0072822c06 100644
--- a/benchmark/loop_whileloop.rb
+++ b/benchmark/bm_loop_whileloop.rb
diff --git a/benchmark/loop_whileloop2.rb b/benchmark/bm_loop_whileloop2.rb
index 47d02dffc4..47d02dffc4 100644
--- a/benchmark/loop_whileloop2.rb
+++ b/benchmark/bm_loop_whileloop2.rb
diff --git a/benchmark/marshal_dump_flo.rb b/benchmark/bm_marshal_dump_flo.rb
index 9b8d0c6afb..9b8d0c6afb 100644
--- a/benchmark/marshal_dump_flo.rb
+++ b/benchmark/bm_marshal_dump_flo.rb
diff --git a/benchmark/marshal_dump_load_geniv.rb b/benchmark/bm_marshal_dump_load_geniv.rb
index 8252ad90fa..8252ad90fa 100644
--- a/benchmark/marshal_dump_load_geniv.rb
+++ b/benchmark/bm_marshal_dump_load_geniv.rb
diff --git a/benchmark/marshal_dump_load_time.rb b/benchmark/bm_marshal_dump_load_time.rb
index e29743b791..e29743b791 100644
--- a/benchmark/marshal_dump_load_time.rb
+++ b/benchmark/bm_marshal_dump_load_time.rb
diff --git a/benchmark/bm_require.rb b/benchmark/bm_require.rb
new file mode 100644
index 0000000000..b8abc88f41
--- /dev/null
+++ b/benchmark/bm_require.rb
@@ -0,0 +1,7 @@
+$:.push File.join(File.dirname(__FILE__), "bm_require.data")
+
+1.upto(10000) do |i|
+ require "c#{i}"
+end
+
+$:.pop
diff --git a/benchmark/bm_require_thread.rb b/benchmark/bm_require_thread.rb
new file mode 100644
index 0000000000..e54db6c6e5
--- /dev/null
+++ b/benchmark/bm_require_thread.rb
@@ -0,0 +1,15 @@
+$:.push File.join(File.dirname(__FILE__), "bm_require.data")
+
+i=0
+t = Thread.new do
+ while true
+ i = i+1 # dummy loop
+ end
+end
+
+1.upto(100) do |i|
+ require "c#{i}"
+end
+
+$:.pop
+t.kill
diff --git a/benchmark/securerandom.rb b/benchmark/bm_securerandom.rb
index a082ea6d5b..a082ea6d5b 100644
--- a/benchmark/securerandom.rb
+++ b/benchmark/bm_securerandom.rb
diff --git a/benchmark/bm_so_ackermann.rb b/benchmark/bm_so_ackermann.rb
new file mode 100644
index 0000000000..7db5be9050
--- /dev/null
+++ b/benchmark/bm_so_ackermann.rb
@@ -0,0 +1,19 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: ackermann-ruby.code,v 1.4 2004/11/13 07:40:41 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+
+def ack(m, n)
+ if m == 0 then
+ n + 1
+ elsif n == 0 then
+ ack(m - 1, 1)
+ else
+ ack(m - 1, ack(m, n - 1))
+ end
+end
+
+NUM = 9
+ack(3, NUM)
+
+
diff --git a/benchmark/bm_so_array.rb b/benchmark/bm_so_array.rb
new file mode 100644
index 0000000000..2b8fce8f99
--- /dev/null
+++ b/benchmark/bm_so_array.rb
@@ -0,0 +1,23 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: ary-ruby.code,v 1.4 2004/11/13 07:41:27 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# with help from Paul Brannan and Mark Hubbart
+
+n = 9000 # Integer(ARGV.shift || 1)
+
+x = Array.new(n)
+y = Array.new(n, 0)
+
+n.times{|bi|
+ x[bi] = bi + 1
+}
+
+(0 .. 999).each do |e|
+ (n-1).step(0,-1) do |bi|
+ y[bi] += x.at(bi)
+ end
+end
+# puts "#{y.first} #{y.last}"
+
+
diff --git a/benchmark/so_binary_trees.rb b/benchmark/bm_so_binary_trees.rb
index b1693e4109..b1693e4109 100644
--- a/benchmark/so_binary_trees.rb
+++ b/benchmark/bm_so_binary_trees.rb
diff --git a/benchmark/bm_so_concatenate.rb b/benchmark/bm_so_concatenate.rb
new file mode 100644
index 0000000000..873214de7c
--- /dev/null
+++ b/benchmark/bm_so_concatenate.rb
@@ -0,0 +1,18 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: strcat-ruby.code,v 1.4 2004/11/13 07:43:28 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# based on code from Aristarkh A Zagorodnikov and Dat Nguyen
+
+STUFF = "hello\n"
+i = 0
+while i<10
+ i += 1
+ hello = ''
+ 4_000_000.times do |e|
+ hello << STUFF
+ end
+end
+# puts hello.length
+
+
diff --git a/benchmark/bm_so_count_words.rb b/benchmark/bm_so_count_words.rb
new file mode 100644
index 0000000000..65f6337a4a
--- /dev/null
+++ b/benchmark/bm_so_count_words.rb
@@ -0,0 +1,19 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: wc-ruby.code,v 1.4 2004/11/13 07:43:32 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# with help from Paul Brannan
+
+input = open(File.join(File.dirname($0), 'wc.input'), 'rb')
+
+nl = nw = nc = 0
+while true
+ tmp = input.read(4096) or break
+ data = tmp << (input.gets || "")
+ nc += data.length
+ nl += data.count("\n")
+ ((data.strip! || data).tr!("\n", " ") || data).squeeze!
+ nw += data.count(" ") + 1
+end
+# STDERR.puts "#{nl} #{nw} #{nc}"
+
diff --git a/benchmark/bm_so_exception.rb b/benchmark/bm_so_exception.rb
new file mode 100644
index 0000000000..deb003a594
--- /dev/null
+++ b/benchmark/bm_so_exception.rb
@@ -0,0 +1,61 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: except-ruby.code,v 1.4 2004/11/13 07:41:33 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+
+$HI = 0
+$LO = 0
+NUM = 250000 # Integer(ARGV[0] || 1)
+
+
+class Lo_Exception < Exception
+ def initialize(num)
+ @value = num
+ end
+end
+
+class Hi_Exception < Exception
+ def initialize(num)
+ @value = num
+ end
+end
+
+def some_function(num)
+ begin
+ hi_function(num)
+ rescue
+ print "We shouldn't get here, exception is: #{$!.type}\n"
+ end
+end
+
+def hi_function(num)
+ begin
+ lo_function(num)
+ rescue Hi_Exception
+ $HI = $HI + 1
+ end
+end
+
+def lo_function(num)
+ begin
+ blowup(num)
+ rescue Lo_Exception
+ $LO = $LO + 1
+ end
+end
+
+def blowup(num)
+ if num % 2 == 0
+ raise Lo_Exception.new(num)
+ else
+ raise Hi_Exception.new(num)
+ end
+end
+
+
+i = 1
+max = NUM+1
+while i < max
+ i += 1
+ some_function(i+1)
+end
diff --git a/benchmark/so_fannkuch.rb b/benchmark/bm_so_fannkuch.rb
index bac5ecd44c..bac5ecd44c 100644
--- a/benchmark/so_fannkuch.rb
+++ b/benchmark/bm_so_fannkuch.rb
diff --git a/benchmark/so_fasta.rb b/benchmark/bm_so_fasta.rb
index dcc6b39507..dcc6b39507 100644
--- a/benchmark/so_fasta.rb
+++ b/benchmark/bm_so_fasta.rb
diff --git a/benchmark/bm_so_k_nucleotide.rb b/benchmark/bm_so_k_nucleotide.rb
new file mode 100644
index 0000000000..dadab3e79c
--- /dev/null
+++ b/benchmark/bm_so_k_nucleotide.rb
@@ -0,0 +1,48 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org
+#
+# contributed by jose fco. gonzalez
+# modified by Sokolov Yura
+
+seq = String.new
+
+def frecuency( seq,length )
+ n, table = seq.length - length + 1, Hash.new(0)
+ f, i = nil, nil
+ (0 ... length).each do |f|
+ (f ... n).step(length) do |i|
+ table[seq[i,length]] += 1
+ end
+ end
+ [n,table]
+
+end
+
+def sort_by_freq( seq,length )
+ n,table = frecuency( seq,length )
+ a, b, v = nil, nil, nil
+ table.sort{|a,b| b[1] <=> a[1]}.each do |v|
+ puts "%s %.3f" % [v[0].upcase,((v[1]*100).to_f/n)]
+ end
+ puts
+end
+
+def find_seq( seq,s )
+ n,table = frecuency( seq,s.length )
+ puts "#{table[s].to_s}\t#{s.upcase}"
+end
+
+input = open(File.join(File.dirname($0), 'fasta.output.100000'), 'rb')
+
+line = input.gets while line !~ /^>THREE/
+line = input.gets
+
+while (line !~ /^>/) & line do
+ seq << line.chomp
+ line = input.gets
+end
+
+[1,2].each {|i| sort_by_freq( seq,i ) }
+
+%w(ggt ggta ggtatt ggtattttaatt ggtattttaatttatagt).each{|s| find_seq( seq,s) }
+
diff --git a/benchmark/so_lists.rb b/benchmark/bm_so_lists.rb
index e8f4a2a5f7..e8f4a2a5f7 100644
--- a/benchmark/so_lists.rb
+++ b/benchmark/bm_so_lists.rb
diff --git a/benchmark/so_mandelbrot.rb b/benchmark/bm_so_mandelbrot.rb
index 76331c64b8..76331c64b8 100644
--- a/benchmark/so_mandelbrot.rb
+++ b/benchmark/bm_so_mandelbrot.rb
diff --git a/benchmark/bm_so_matrix.rb b/benchmark/bm_so_matrix.rb
new file mode 100644
index 0000000000..e2c5c8e559
--- /dev/null
+++ b/benchmark/bm_so_matrix.rb
@@ -0,0 +1,48 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: matrix-ruby.code,v 1.4 2004/11/13 07:42:14 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+
+n = 60 #Integer(ARGV.shift || 1)
+
+size = 40
+
+def mkmatrix(rows, cols)
+ count = 1
+ mx = Array.new(rows)
+ (0 .. (rows - 1)).each do |bi|
+ row = Array.new(cols, 0)
+ (0 .. (cols - 1)).each do |j|
+ row[j] = count
+ count += 1
+ end
+ mx[bi] = row
+ end
+ mx
+end
+
+def mmult(rows, cols, m1, m2)
+ m3 = Array.new(rows)
+ (0 .. (rows - 1)).each do |bi|
+ row = Array.new(cols, 0)
+ (0 .. (cols - 1)).each do |j|
+ val = 0
+ (0 .. (cols - 1)).each do |k|
+ val += m1.at(bi).at(k) * m2.at(k).at(j)
+ end
+ row[j] = val
+ end
+ m3[bi] = row
+ end
+ m3
+end
+
+m1 = mkmatrix(size, size)
+m2 = mkmatrix(size, size)
+mm = Array.new
+n.times do
+ mm = mmult(size, size, m1, m2)
+end
+# puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}"
+
+
diff --git a/benchmark/bm_so_meteor_contest.rb b/benchmark/bm_so_meteor_contest.rb
new file mode 100755
index 0000000000..8c136baa6c
--- /dev/null
+++ b/benchmark/bm_so_meteor_contest.rb
@@ -0,0 +1,563 @@
+#!/usr/bin/env ruby
+#
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org
+# contributed by Kevin Barnes (Ruby novice)
+
+# PROGRAM: the main body is at the bottom.
+# 1) read about the problem here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/
+# 2) see how I represent a board as a bitmask by reading the blank_board comments
+# 3) read as your mental paths take you
+
+def print *args
+end
+
+# class to represent all information about a particular rotation of a particular piece
+class Rotation
+ # an array (by location) containing a bit mask for how the piece maps at the given location.
+ # if the rotation is invalid at that location the mask will contain false
+ attr_reader :start_masks
+
+ # maps a direction to a relative location. these differ depending on whether it is an even or
+ # odd row being mapped from
+ @@rotation_even_adder = { :west => -1, :east => 1, :nw => -7, :ne => -6, :sw => 5, :se => 6 }
+ @@rotation_odd_adder = { :west => -1, :east => 1, :nw => -6, :ne => -5, :sw => 6, :se => 7 }
+
+ def initialize( directions )
+ @even_offsets, @odd_offsets = normalize_offsets( get_values( directions ))
+
+ @even_mask = mask_for_offsets( @even_offsets)
+ @odd_mask = mask_for_offsets( @odd_offsets)
+
+ @start_masks = Array.new(60)
+
+ # create the rotational masks by placing the base mask at the location and seeing if
+ # 1) it overlaps the boundaries and 2) it produces a prunable board. if either of these
+ # is true the piece cannot be placed
+ 0.upto(59) do | offset |
+ mask = is_even(offset) ? (@even_mask << offset) : (@odd_mask << offset)
+ if (blank_board & mask == 0 && !prunable(blank_board | mask, 0, true)) then
+ imask = compute_required( mask, offset)
+ @start_masks[offset] = [ mask, imask, imask | mask ]
+ else
+ @start_masks[offset] = false
+ end
+ end
+ end
+
+ def compute_required( mask, offset )
+ board = blank_board
+ 0.upto(offset) { | i | board |= 1 << i }
+ board |= mask
+ return 0 if (!prunable(board | mask, offset))
+ board = flood_fill(board,58)
+ count = 0
+ imask = 0
+ 0.upto(59) do | i |
+ if (board[i] == 0) then
+ imask |= (1 << i)
+ count += 1
+ end
+ end
+ (count > 0 && count < 5) ? imask : 0
+ end
+
+ def flood_fill( board, location)
+ return board if (board[location] == 1)
+ board |= 1 << location
+ row, col = location.divmod(6)
+ board = flood_fill( board, location - 1) if (col > 0)
+ board = flood_fill( board, location + 1) if (col < 4)
+ if (row % 2 == 0) then
+ board = flood_fill( board, location - 7) if (col > 0 && row > 0)
+ board = flood_fill( board, location - 6) if (row > 0)
+ board = flood_fill( board, location + 6) if (row < 9)
+ board = flood_fill( board, location + 5) if (col > 0 && row < 9)
+ else
+ board = flood_fill( board, location - 5) if (col < 4 && row > 0)
+ board = flood_fill( board, location - 6) if (row > 0)
+ board = flood_fill( board, location + 6) if (row < 9)
+ board = flood_fill( board, location + 7) if (col < 4 && row < 9)
+ end
+ board
+ end
+
+ # given a location, produces a list of relative locations covered by the piece at this rotation
+ def offsets( location)
+ if is_even( location) then
+ @even_offsets.collect { | value | value + location }
+ else
+ @odd_offsets.collect { | value | value + location }
+ end
+ end
+
+ # returns a set of offsets relative to the top-left most piece of the rotation (by even or odd rows)
+ # this is hard to explain. imagine we have this partial board:
+ # 0 0 0 0 0 x [positions 0-5]
+ # 0 0 1 1 0 x [positions 6-11]
+ # 0 0 1 0 0 x [positions 12-17]
+ # 0 1 0 0 0 x [positions 18-23]
+ # 0 1 0 0 0 x [positions 24-29]
+ # 0 0 0 0 0 x [positions 30-35]
+ # ...
+ # The top-left of the piece is at position 8, the
+ # board would be passed as a set of positions (values array) containing [8,9,14,19,25] not necessarily in that
+ # sorted order. Since that array starts on an odd row, the offsets for an odd row are: [0,1,6,11,17] obtained
+ # by subtracting 8 from everything. Now imagine the piece shifted up and to the right so it's on an even row:
+ # 0 0 0 1 1 x [positions 0-5]
+ # 0 0 1 0 0 x [positions 6-11]
+ # 0 0 1 0 0 x [positions 12-17]
+ # 0 1 0 0 0 x [positions 18-23]
+ # 0 0 0 0 0 x [positions 24-29]
+ # 0 0 0 0 0 x [positions 30-35]
+ # ...
+ # Now the positions are [3,4,8,14,19] which after subtracting the lowest value (3) gives [0,1,5,11,16] thus, the
+ # offsets for this particular piece are (in even, odd order) [0,1,5,11,16],[0,1,6,11,17] which is what
+ # this function would return
+ def normalize_offsets( values)
+ min = values.min
+ even_min = is_even(min)
+ other_min = even_min ? min + 6 : min + 7
+ other_values = values.collect do | value |
+ if is_even(value) then
+ value + 6 - other_min
+ else
+ value + 7 - other_min
+ end
+ end
+ values.collect! { | value | value - min }
+
+ if even_min then
+ [values, other_values]
+ else
+ [other_values, values]
+ end
+ end
+
+ # produce a bitmask representation of an array of offset locations
+ def mask_for_offsets( offsets )
+ mask = 0
+ offsets.each { | value | mask = mask + ( 1 << value ) }
+ mask
+ end
+
+ # finds a "safe" position that a position as described by a list of directions can be placed
+ # without falling off any edge of the board. the values returned a location to place the first piece
+ # at so it will fit after making the described moves
+ def start_adjust( directions )
+ south = east = 0;
+ directions.each do | direction |
+ east += 1 if ( direction == :sw || direction == :nw || direction == :west )
+ south += 1 if ( direction == :nw || direction == :ne )
+ end
+ south * 6 + east
+ end
+
+ # given a set of directions places the piece (as defined by a set of directions) on the board at
+ # a location that will not take it off the edge
+ def get_values( directions )
+ start = start_adjust(directions)
+ values = [ start ]
+ directions.each do | direction |
+ if (start % 12 >= 6) then
+ start += @@rotation_odd_adder[direction]
+ else
+ start += @@rotation_even_adder[direction]
+ end
+ values += [ start ]
+ end
+
+ # some moves take you back to an existing location, we'll strip duplicates
+ values.uniq
+ end
+end
+
+# describes a piece and caches information about its rotations to as to be efficient for iteration
+# ATTRIBUTES:
+# rotations -- all the rotations of the piece
+# type -- a numeic "name" of the piece
+# masks -- an array by location of all legal rotational masks (a n inner array) for that location
+# placed -- the mask that this piece was last placed at (not a location, but the actual mask used)
+class Piece
+ attr_reader :rotations, :type, :masks
+ attr_accessor :placed
+
+ # transform hashes that change one direction into another when you either flip or rotate a set of directions
+ @@flip_converter = { :west => :west, :east => :east, :nw => :sw, :ne => :se, :sw => :nw, :se => :ne }
+ @@rotate_converter = { :west => :nw, :east => :se, :nw => :ne, :ne => :east, :sw => :west, :se => :sw }
+
+ def initialize( directions, type )
+ @type = type
+ @rotations = Array.new();
+ @map = {}
+
+ generate_rotations( directions )
+ directions.collect! { | value | @@flip_converter[value] }
+ generate_rotations( directions )
+
+ # creates the masks AND a map that returns [location, rotation] for any given mask
+ # this is used when a board is found and we want to draw it, otherwise the map is unused
+ @masks = Array.new();
+ 0.upto(59) do | i |
+ even = true
+ @masks[i] = @rotations.collect do | rotation |
+ mask = rotation.start_masks[i]
+ @map[mask[0]] = [ i, rotation ] if (mask)
+ mask || nil
+ end
+ @masks[i].compact!
+ end
+ end
+
+ # rotates a set of directions through all six angles and adds a Rotation to the list for each one
+ def generate_rotations( directions )
+ 6.times do
+ rotations.push( Rotation.new(directions))
+ directions.collect! { | value | @@rotate_converter[value] }
+ end
+ end
+
+ # given a board string, adds this piece to the board at whatever location/rotation
+ # important: the outbound board string is 5 wide, the normal location notation is six wide (padded)
+ def fill_string( board_string)
+ location, rotation = @map[@placed]
+ rotation.offsets(location).each do | offset |
+ row, col = offset.divmod(6)
+ board_string[ row*5 + col, 1 ] = @type.to_s
+ end
+ end
+end
+
+# a blank bit board having this form:
+#
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 1 1 1 1 1 1
+#
+# where left lest significant bit is the top left and the most significant is the lower right
+# the actual board only consists of the 0 places, the 1 places are blockers to keep things from running
+# off the edges or bottom
+def blank_board
+ 0b111111100000100000100000100000100000100000100000100000100000100000
+end
+
+def full_board
+ 0b111111111111111111111111111111111111111111111111111111111111111111
+end
+
+# determines if a location (bit position) is in an even row
+def is_even( location)
+ (location % 12) < 6
+end
+
+# support function that create three utility maps:
+# $converter -- for each row an array that maps a five bit row (via array mapping)
+# to the a five bit representation of the bits below it
+# $bit_count -- maps a five bit row (via array mapping) to the number of 1s in the row
+# @@new_regions -- maps a five bit row (via array mapping) to an array of "region" arrays
+# a region array has three values the first is a mask of bits in the region,
+# the second is the count of those bits and the third is identical to the first
+# examples:
+# 0b10010 => [ 0b01100, 2, 0b01100 ], [ 0b00001, 1, 0b00001]
+# 0b01010 => [ 0b10000, 1, 0b10000 ], [ 0b00100, 1, 0b00100 ], [ 0b00001, 1, 0b00001]
+# 0b10001 => [ 0b01110, 3, 0b01110 ]
+def create_collector_support
+ odd_map = [0b11, 0b110, 0b1100, 0b11000, 0b10000]
+ even_map = [0b1, 0b11, 0b110, 0b1100, 0b11000]
+
+ all_odds = Array.new(0b100000)
+ all_evens = Array.new(0b100000)
+ bit_counts = Array.new(0b100000)
+ new_regions = Array.new(0b100000)
+ 0.upto(0b11111) do | i |
+ bit_count = odd = even = 0
+ 0.upto(4) do | bit |
+ if (i[bit] == 1) then
+ bit_count += 1
+ odd |= odd_map[bit]
+ even |= even_map[bit]
+ end
+ end
+ all_odds[i] = odd
+ all_evens[i] = even
+ bit_counts[i] = bit_count
+ new_regions[i] = create_regions( i)
+ end
+
+ $converter = []
+ 10.times { | row | $converter.push((row % 2 == 0) ? all_evens : all_odds) }
+ $bit_counts = bit_counts
+ $regions = new_regions.collect { | set | set.collect { | value | [ value, bit_counts[value], value] } }
+end
+
+# determines if a board is punable, meaning that there is no possibility that it
+# can be filled up with pieces. A board is prunable if there is a grouping of unfilled spaces
+# that are not a multiple of five. The following board is an example of a prunable board:
+# 0 0 1 0 0
+# 0 1 0 0 0
+# 1 1 0 0 0
+# 0 1 0 0 0
+# 0 0 0 0 0
+# ...
+#
+# This board is prunable because the top left corner is only 3 bits in area, no piece will ever fit it
+# parameters:
+# board -- an initial bit board (6 bit padded rows, see blank_board for format)
+# location -- starting location, everything above and to the left is already full
+# slotting -- set to true only when testing initial pieces, when filling normally
+# additional assumptions are possible
+#
+# Algorithm:
+# The algorithm starts at the top row (as determined by location) and iterates a row at a time
+# maintainng counts of active open areas (kept in the collector array) each collector contains
+# three values at the start of an iteration:
+# 0: mask of bits that would be adjacent to the collector in this row
+# 1: the number of bits collected so far
+# 2: a scratch space starting as zero, but used during the computation to represent
+# the empty bits in the new row that are adjacent (position 0)
+# The exact procedure is described in-code
+def prunable( board, location, slotting = false)
+ collectors = []
+ # loop across the rows
+ (location / 6).to_i.upto(9) do | row_on |
+ # obtain a set of regions representing the bits of the current row.
+ regions = $regions[(board >> (row_on * 6)) & 0b11111]
+ converter = $converter[row_on]
+
+ # track the number of collectors at the start of the cycle so that
+ # we don't compute against newly created collectors, only existing collectors
+ initial_collector_count = collectors.length
+
+ # loop against the regions. For each region of the row
+ # we will see if it connects to one or more existing collectors.
+ # if it connects to 1 collector, the bits from the region are added to the
+ # bits of the collector and the mask is placed in collector[2]
+ # If the region overlaps more than one collector then all the collectors
+ # it overlaps with are merged into the first one (the others are set to nil in the array)
+ # if NO collectors are found then the region is copied as a new collector
+ regions.each do | region |
+ collector_found = nil
+ region_mask = region[2]
+ initial_collector_count.times do | collector_num |
+ collector = collectors[collector_num]
+ if (collector) then
+ collector_mask = collector[0]
+ if (collector_mask & region_mask != 0) then
+ if (collector_found) then
+ collector_found[0] |= collector_mask
+ collector_found[1] += collector[1]
+ collector_found[2] |= collector[2]
+ collectors[collector_num] = nil
+ else
+ collector_found = collector
+ collector[1] += region[1]
+ collector[2] |= region_mask
+ end
+ end
+ end
+ end
+ if (collector_found == nil) then
+ collectors.push(Array.new(region))
+ end
+ end
+
+ # check the existing collectors, if any collector overlapped no bits in the region its [2] value will
+ # be zero. The size of any such reaason is tested if it is not a multiple of five true is returned since
+ # the board is prunable. if it is a multiple of five it is removed.
+ # Collector that are still active have a new adjacent value [0] set based n the matched bits
+ # and have [2] cleared out for the next cycle.
+ collectors.length.times do | collector_num |
+ collector = collectors[collector_num]
+ if (collector) then
+ if (collector[2] == 0) then
+ return true if (collector[1] % 5 != 0)
+ collectors[collector_num] = nil
+ else
+ # if a collector matches all bits in the row then we can return unprunable early for the
+ # following reasons:
+ # 1) there can be no more unavailable bits bince we fill from the top left downward
+ # 2) all previous regions have been closed or joined so only this region can fail
+ # 3) this region must be good since there can never be only 1 region that is nuot
+ # a multiple of five
+ # this rule only applies when filling normally, so we ignore the rule if we are "slotting"
+ # in pieces to see what configurations work for them (the only other time this algorithm is used).
+ return false if (collector[2] == 0b11111 && !slotting)
+ collector[0] = converter[collector[2]]
+ collector[2] = 0
+ end
+ end
+ end
+
+ # get rid of all the empty converters for the next round
+ collectors.compact!
+ end
+ return false if (collectors.length <= 1) # 1 collector or less and the region is fine
+ collectors.any? { | collector | (collector[1] % 5) != 0 } # more than 1 and we test them all for bad size
+end
+
+# creates a region given a row mask. see prunable for what a "region" is
+def create_regions( value )
+ regions = []
+ cur_region = 0
+ 5.times do | bit |
+ if (value[bit] == 0) then
+ cur_region |= 1 << bit
+ else
+ if (cur_region != 0 ) then
+ regions.push( cur_region)
+ cur_region = 0;
+ end
+ end
+ end
+ regions.push(cur_region) if (cur_region != 0)
+ regions
+end
+
+# find up to the counted number of solutions (or all solutions) and prints the final result
+def find_all
+ find_top( 1)
+ find_top( 0)
+ print_results
+end
+
+# show the board
+def print_results
+ print "#{@boards_found} solutions found\n\n"
+ print_full_board( @min_board)
+ print "\n"
+ print_full_board( @max_board)
+ print "\n"
+end
+
+# finds solutions. This special version of the main function is only used for the top level
+# the reason for it is basically to force a particular ordering on how the rotations are tested for
+# the first piece. It is called twice, first looking for placements of the odd rotations and then
+# looking for placements of the even locations.
+#
+# WHY?
+# Since any found solution has an inverse we want to maximize finding solutions that are not already found
+# as an inverse. The inverse will ALWAYS be 3 one of the piece configurations that is exactly 3 rotations away
+# (an odd number). Checking even vs odd then produces a higher probability of finding more pieces earlier
+# in the cycle. We still need to keep checking all the permutations, but our probability of finding one will
+# diminsh over time. Since we are TOLD how many to search for this lets us exit before checking all pieces
+# this bennifit is very great when seeking small numbers of solutions and is 0 when looking for more than the
+# maximum number
+def find_top( rotation_skip)
+ board = blank_board
+ (@pieces.length-1).times do
+ piece = @pieces.shift
+ piece.masks[0].each do | mask, imask, cmask |
+ if ((rotation_skip += 1) % 2 == 0) then
+ piece.placed = mask
+ find( 1, 1, board | mask)
+ end
+ end
+ @pieces.push(piece)
+ end
+ piece = @pieces.shift
+ @pieces.push(piece)
+end
+
+# the normail find routine, iterates through the available pieces, checks all rotations at the current location
+# and adds any boards found. depth is achieved via recursion. the overall approach is described
+# here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/
+# parameters:
+# start_location -- where to start looking for place for the next piece at
+# placed -- number of pieces placed
+# board -- current state of the board
+#
+# see in-code comments
+def find( start_location, placed, board)
+ # find the next location to place a piece by looking for an empty bit
+ while board[start_location] == 1
+ start_location += 1
+ end
+
+ @pieces.length.times do
+ piece = @pieces.shift
+ piece.masks[start_location].each do | mask, imask, cmask |
+ if ( board & cmask == imask) then
+ piece.placed = mask
+ if (placed == 9) then
+ add_board
+ else
+ find( start_location + 1, placed + 1, board | mask)
+ end
+ end
+ end
+ @pieces.push(piece)
+ end
+end
+
+# print the board
+def print_full_board( board_string)
+ 10.times do | row |
+ print " " if (row % 2 == 1)
+ 5.times do | col |
+ print "#{board_string[row*5 + col,1]} "
+ end
+ print "\n"
+ end
+end
+
+# when a board is found we "draw it" into a string and then flip that string, adding both to
+# the list (hash) of solutions if they are unique.
+def add_board
+ board_string = "99999999999999999999999999999999999999999999999999"
+ @all_pieces.each { | piece | piece.fill_string( board_string ) }
+ save( board_string)
+ save( board_string.reverse)
+end
+
+# adds a board string to the list (if new) and updates the current best/worst board
+def save( board_string)
+ if (@all_boards[board_string] == nil) then
+ @min_board = board_string if (board_string < @min_board)
+ @max_board = board_string if (board_string > @max_board)
+ @all_boards.store(board_string,true)
+ @boards_found += 1
+
+ # the exit motif is a time saver. Ideally the function should return, but those tests
+ # take noticeable time (performance).
+ if (@boards_found == @stop_count) then
+ print_results
+ exit(0)
+ end
+ end
+end
+
+
+##
+## MAIN BODY :)
+##
+create_collector_support
+@pieces = [
+ Piece.new( [ :nw, :ne, :east, :east ], 2),
+ Piece.new( [ :ne, :se, :east, :ne ], 7),
+ Piece.new( [ :ne, :east, :ne, :nw ], 1),
+ Piece.new( [ :east, :sw, :sw, :se ], 6),
+ Piece.new( [ :east, :ne, :se, :ne ], 5),
+ Piece.new( [ :east, :east, :east, :se ], 0),
+ Piece.new( [ :ne, :nw, :se, :east, :se ], 4),
+ Piece.new( [ :se, :se, :se, :west ], 9),
+ Piece.new( [ :se, :se, :east, :se ], 8),
+ Piece.new( [ :east, :east, :sw, :se ], 3)
+ ];
+
+@all_pieces = Array.new( @pieces)
+
+@min_board = "99999999999999999999999999999999999999999999999999"
+@max_board = "00000000000000000000000000000000000000000000000000"
+@stop_count = ARGV[0].to_i || 2089
+@all_boards = {}
+@boards_found = 0
+
+find_all ######## DO IT!!!
diff --git a/benchmark/bm_so_nbody.rb b/benchmark/bm_so_nbody.rb
new file mode 100644
index 0000000000..d6c5bb9e61
--- /dev/null
+++ b/benchmark/bm_so_nbody.rb
@@ -0,0 +1,148 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org
+#
+# Optimized for Ruby by Jesse Millikan
+# From version ported by Michael Neumann from the C gcc version,
+# which was written by Christoph Bauer.
+
+SOLAR_MASS = 4 * Math::PI**2
+DAYS_PER_YEAR = 365.24
+
+def _puts *args
+end
+
+class Planet
+ attr_accessor :x, :y, :z, :vx, :vy, :vz, :mass
+
+ def initialize(x, y, z, vx, vy, vz, mass)
+ @x, @y, @z = x, y, z
+ @vx, @vy, @vz = vx * DAYS_PER_YEAR, vy * DAYS_PER_YEAR, vz * DAYS_PER_YEAR
+ @mass = mass * SOLAR_MASS
+ end
+
+ def move_from_i(bodies, nbodies, dt, i)
+ while i < nbodies
+ b2 = bodies[i]
+ dx = @x - b2.x
+ dy = @y - b2.y
+ dz = @z - b2.z
+
+ distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
+ mag = dt / (distance * distance * distance)
+ b_mass_mag, b2_mass_mag = @mass * mag, b2.mass * mag
+
+ @vx -= dx * b2_mass_mag
+ @vy -= dy * b2_mass_mag
+ @vz -= dz * b2_mass_mag
+ b2.vx += dx * b_mass_mag
+ b2.vy += dy * b_mass_mag
+ b2.vz += dz * b_mass_mag
+ i += 1
+ end
+
+ @x += dt * @vx
+ @y += dt * @vy
+ @z += dt * @vz
+ end
+end
+
+def energy(bodies)
+ e = 0.0
+ nbodies = bodies.size
+
+ for i in 0 ... nbodies
+ b = bodies[i]
+ e += 0.5 * b.mass * (b.vx * b.vx + b.vy * b.vy + b.vz * b.vz)
+ for j in (i + 1) ... nbodies
+ b2 = bodies[j]
+ dx = b.x - b2.x
+ dy = b.y - b2.y
+ dz = b.z - b2.z
+ distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
+ e -= (b.mass * b2.mass) / distance
+ end
+ end
+ e
+end
+
+def offset_momentum(bodies)
+ px, py, pz = 0.0, 0.0, 0.0
+
+ for b in bodies
+ m = b.mass
+ px += b.vx * m
+ py += b.vy * m
+ pz += b.vz * m
+ end
+
+ b = bodies[0]
+ b.vx = - px / SOLAR_MASS
+ b.vy = - py / SOLAR_MASS
+ b.vz = - pz / SOLAR_MASS
+end
+
+BODIES = [
+ # sun
+ Planet.new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0),
+
+ # jupiter
+ Planet.new(
+ 4.84143144246472090e+00,
+ -1.16032004402742839e+00,
+ -1.03622044471123109e-01,
+ 1.66007664274403694e-03,
+ 7.69901118419740425e-03,
+ -6.90460016972063023e-05,
+ 9.54791938424326609e-04),
+
+ # saturn
+ Planet.new(
+ 8.34336671824457987e+00,
+ 4.12479856412430479e+00,
+ -4.03523417114321381e-01,
+ -2.76742510726862411e-03,
+ 4.99852801234917238e-03,
+ 2.30417297573763929e-05,
+ 2.85885980666130812e-04),
+
+ # uranus
+ Planet.new(
+ 1.28943695621391310e+01,
+ -1.51111514016986312e+01,
+ -2.23307578892655734e-01,
+ 2.96460137564761618e-03,
+ 2.37847173959480950e-03,
+ -2.96589568540237556e-05,
+ 4.36624404335156298e-05),
+
+ # neptune
+ Planet.new(
+ 1.53796971148509165e+01,
+ -2.59193146099879641e+01,
+ 1.79258772950371181e-01,
+ 2.68067772490389322e-03,
+ 1.62824170038242295e-03,
+ -9.51592254519715870e-05,
+ 5.15138902046611451e-05)
+]
+
+init = 200_000 # ARGV[0]
+n = Integer(init)
+
+offset_momentum(BODIES)
+
+puts "%.9f" % energy(BODIES)
+
+nbodies = BODIES.size
+dt = 0.01
+
+n.times do
+ i = 0
+ while i < nbodies
+ b = BODIES[i]
+ b.move_from_i(BODIES, nbodies, dt, i + 1)
+ i += 1
+ end
+end
+
+puts "%.9f" % energy(BODIES)
diff --git a/benchmark/bm_so_nested_loop.rb b/benchmark/bm_so_nested_loop.rb
new file mode 100644
index 0000000000..a0513f8c47
--- /dev/null
+++ b/benchmark/bm_so_nested_loop.rb
@@ -0,0 +1,24 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: nestedloop-ruby.code,v 1.4 2004/11/13 07:42:22 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# from Avi Bryant
+
+n = 16 # Integer(ARGV.shift || 1)
+x = 0
+n.times do
+ n.times do
+ n.times do
+ n.times do
+ n.times do
+ n.times do
+ x += 1
+ end
+ end
+ end
+ end
+ end
+end
+# puts x
+
+
diff --git a/benchmark/so_nsieve.rb b/benchmark/bm_so_nsieve.rb
index a65cc78233..a65cc78233 100644
--- a/benchmark/so_nsieve.rb
+++ b/benchmark/bm_so_nsieve.rb
diff --git a/benchmark/so_nsieve_bits.rb b/benchmark/bm_so_nsieve_bits.rb
index 6f958ee44e..6f958ee44e 100644
--- a/benchmark/so_nsieve_bits.rb
+++ b/benchmark/bm_so_nsieve_bits.rb
diff --git a/benchmark/bm_so_object.rb b/benchmark/bm_so_object.rb
new file mode 100644
index 0000000000..e8607c7199
--- /dev/null
+++ b/benchmark/bm_so_object.rb
@@ -0,0 +1,56 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: objinst-ruby.code,v 1.4 2004/11/13 07:42:25 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# with help from Aristarkh Zagorodnikov
+
+class Toggle
+ def initialize(start_state)
+ @bool = start_state
+ end
+
+ def value
+ @bool
+ end
+
+ def activate
+ @bool = !@bool
+ self
+ end
+end
+
+class NthToggle < Toggle
+ def initialize(start_state, max_counter)
+ super start_state
+ @count_max = max_counter
+ @counter = 0
+ end
+
+ def activate
+ @counter += 1
+ if @counter >= @count_max
+ @bool = !@bool
+ @counter = 0
+ end
+ self
+ end
+end
+
+n = 1500000 # (ARGV.shift || 1).to_i
+
+toggle = Toggle.new 1
+5.times do
+ toggle.activate.value ? 'true' : 'false'
+end
+n.times do
+ toggle = Toggle.new 1
+end
+
+ntoggle = NthToggle.new 1, 3
+8.times do
+ ntoggle.activate.value ? 'true' : 'false'
+end
+n.times do
+ ntoggle = NthToggle.new 1, 3
+end
+
diff --git a/benchmark/so_partial_sums.rb b/benchmark/bm_so_partial_sums.rb
index 630b45cb8d..630b45cb8d 100644
--- a/benchmark/so_partial_sums.rb
+++ b/benchmark/bm_so_partial_sums.rb
diff --git a/benchmark/so_pidigits.rb b/benchmark/bm_so_pidigits.rb
index 9a537b2d1c..9a537b2d1c 100644
--- a/benchmark/so_pidigits.rb
+++ b/benchmark/bm_so_pidigits.rb
diff --git a/benchmark/so_random.rb b/benchmark/bm_so_random.rb
index a66b9e8e63..a66b9e8e63 100644
--- a/benchmark/so_random.rb
+++ b/benchmark/bm_so_random.rb
diff --git a/benchmark/bm_so_reverse_complement.rb b/benchmark/bm_so_reverse_complement.rb
new file mode 100644
index 0000000000..82ea666994
--- /dev/null
+++ b/benchmark/bm_so_reverse_complement.rb
@@ -0,0 +1,30 @@
+#!/usr/bin/ruby
+# The Great Computer Language Shootout
+# http://shootout.alioth.debian.org/
+#
+# Contributed by Peter Bjarke Olsen
+# Modified by Doug King
+
+seq=Array.new
+
+def revcomp(seq)
+ seq.reverse!.tr!('wsatugcyrkmbdhvnATUGCYRKMBDHVN','WSTAACGRYMKVHDBNTAACGRYMKVHDBN')
+ stringlen=seq.length
+ 0.step(stringlen-1,60) {|x| print seq.slice(x,60) , "\n"}
+end
+
+input = open(File.join(File.dirname($0), 'fasta.output.2500000'), 'rb')
+
+while input.gets
+ if $_ =~ />/
+ if seq.length != 0
+ revcomp(seq.join)
+ seq=Array.new
+ end
+ puts $_
+ else
+ $_.sub(/\n/,'')
+ seq.push $_
+ end
+end
+revcomp(seq.join)
diff --git a/benchmark/so_sieve.rb b/benchmark/bm_so_sieve.rb
index 43dc302648..43dc302648 100644
--- a/benchmark/so_sieve.rb
+++ b/benchmark/bm_so_sieve.rb
diff --git a/benchmark/so_spectralnorm.rb b/benchmark/bm_so_spectralnorm.rb
index 6b97206689..6b97206689 100644
--- a/benchmark/so_spectralnorm.rb
+++ b/benchmark/bm_so_spectralnorm.rb
diff --git a/benchmark/string_index.rb b/benchmark/bm_string_index.rb
index 7783111082..7783111082 100644
--- a/benchmark/string_index.rb
+++ b/benchmark/bm_string_index.rb
diff --git a/benchmark/string_scan_re.rb b/benchmark/bm_string_scan_re.rb
index b0d60201a9..b0d60201a9 100644
--- a/benchmark/string_scan_re.rb
+++ b/benchmark/bm_string_scan_re.rb
diff --git a/benchmark/string_scan_str.rb b/benchmark/bm_string_scan_str.rb
index 42440bd948..42440bd948 100644
--- a/benchmark/string_scan_str.rb
+++ b/benchmark/bm_string_scan_str.rb
diff --git a/benchmark/time_subsec.rb b/benchmark/bm_time_subsec.rb
index 505021c701..505021c701 100644
--- a/benchmark/time_subsec.rb
+++ b/benchmark/bm_time_subsec.rb
diff --git a/benchmark/bm_vm1_attr_ivar.rb b/benchmark/bm_vm1_attr_ivar.rb
new file mode 100644
index 0000000000..16906f3605
--- /dev/null
+++ b/benchmark/bm_vm1_attr_ivar.rb
@@ -0,0 +1,14 @@
+class C
+ attr_reader :a, :b
+ def initialize
+ @a = nil
+ @b = nil
+ end
+end
+obj = C.new
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ j = obj.a
+ k = obj.b
+end
diff --git a/benchmark/bm_vm1_attr_ivar_set.rb b/benchmark/bm_vm1_attr_ivar_set.rb
new file mode 100644
index 0000000000..7e7a6b48c0
--- /dev/null
+++ b/benchmark/bm_vm1_attr_ivar_set.rb
@@ -0,0 +1,14 @@
+class C
+ attr_accessor :a, :b
+ def initialize
+ @a = nil
+ @b = nil
+ end
+end
+obj = C.new
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ obj.a = 1
+ obj.b = 2
+end
diff --git a/benchmark/bm_vm1_block.rb b/benchmark/bm_vm1_block.rb
new file mode 100644
index 0000000000..a9f56b15ea
--- /dev/null
+++ b/benchmark/bm_vm1_block.rb
@@ -0,0 +1,10 @@
+def m
+ yield
+end
+
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ m{
+ }
+end
diff --git a/benchmark/bm_vm1_blockparam.rb b/benchmark/bm_vm1_blockparam.rb
new file mode 100755
index 0000000000..11680a2e61
--- /dev/null
+++ b/benchmark/bm_vm1_blockparam.rb
@@ -0,0 +1,9 @@
+def m &b
+end
+
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ m{}
+end
+
diff --git a/benchmark/bm_vm1_blockparam_call.rb b/benchmark/bm_vm1_blockparam_call.rb
new file mode 100755
index 0000000000..f6102a2b5a
--- /dev/null
+++ b/benchmark/bm_vm1_blockparam_call.rb
@@ -0,0 +1,9 @@
+def m &b
+ b.call
+end
+
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ m{}
+end
diff --git a/benchmark/bm_vm1_blockparam_pass.rb b/benchmark/bm_vm1_blockparam_pass.rb
new file mode 100755
index 0000000000..10029a257a
--- /dev/null
+++ b/benchmark/bm_vm1_blockparam_pass.rb
@@ -0,0 +1,13 @@
+def bp_yield
+ yield
+end
+
+def bp_pass &b
+ bp_yield &b
+end
+
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ bp_pass{}
+end
diff --git a/benchmark/bm_vm1_blockparam_yield.rb b/benchmark/bm_vm1_blockparam_yield.rb
new file mode 100755
index 0000000000..6dc01ced7c
--- /dev/null
+++ b/benchmark/bm_vm1_blockparam_yield.rb
@@ -0,0 +1,9 @@
+def bp_yield &b
+ yield
+end
+
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ bp_yield{}
+end
diff --git a/benchmark/bm_vm1_const.rb b/benchmark/bm_vm1_const.rb
new file mode 100644
index 0000000000..ac59ebccf1
--- /dev/null
+++ b/benchmark/bm_vm1_const.rb
@@ -0,0 +1,8 @@
+Const = 1
+
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ j = Const
+ k = Const
+end
diff --git a/benchmark/bm_vm1_ensure.rb b/benchmark/bm_vm1_ensure.rb
new file mode 100644
index 0000000000..a1596145f2
--- /dev/null
+++ b/benchmark/bm_vm1_ensure.rb
@@ -0,0 +1,11 @@
+i = 0
+while i<30_000_000 # benchmark loop 1
+ i += 1
+ begin
+ begin
+ ensure
+ end
+ ensure
+ end
+end
+
diff --git a/benchmark/bm_vm1_float_simple.rb b/benchmark/bm_vm1_float_simple.rb
new file mode 100644
index 0000000000..d4581439ff
--- /dev/null
+++ b/benchmark/bm_vm1_float_simple.rb
@@ -0,0 +1,7 @@
+i = 0.0; f = 0.0
+while i<30_000_000
+ i += 1
+ f += 0.1; f -= 0.1
+ f += 0.1; f -= 0.1
+ f += 0.1; f -= 0.1
+end
diff --git a/benchmark/bm_vm1_gc_short_lived.rb b/benchmark/bm_vm1_gc_short_lived.rb
new file mode 100644
index 0000000000..e78bca5668
--- /dev/null
+++ b/benchmark/bm_vm1_gc_short_lived.rb
@@ -0,0 +1,10 @@
+i = 0
+while i<30_000_000 # while loop 1
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+ i+=1
+end
diff --git a/benchmark/bm_vm1_gc_short_with_complex_long.rb b/benchmark/bm_vm1_gc_short_with_complex_long.rb
new file mode 100644
index 0000000000..b66052dee0
--- /dev/null
+++ b/benchmark/bm_vm1_gc_short_with_complex_long.rb
@@ -0,0 +1,27 @@
+def nested_hash h, n
+ if n == 0
+ ''
+ else
+ 10.times{
+ h[Object.new] = nested_hash(h, n-1)
+ }
+ end
+end
+
+long_lived = Hash.new
+nested_hash long_lived, 6
+
+GC.start
+GC.start
+
+i = 0
+while i<30_000_000 # while loop 1
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+ i+=1
+end
+
diff --git a/benchmark/bm_vm1_gc_short_with_long.rb b/benchmark/bm_vm1_gc_short_with_long.rb
new file mode 100644
index 0000000000..298dbc845b
--- /dev/null
+++ b/benchmark/bm_vm1_gc_short_with_long.rb
@@ -0,0 +1,13 @@
+long_lived = Array.new(1_000_000){|i| "#{i}"}
+GC.start
+GC.start
+i = 0
+while i<30_000_000 # while loop 1
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+ i+=1
+end
diff --git a/benchmark/bm_vm1_gc_short_with_symbol.rb b/benchmark/bm_vm1_gc_short_with_symbol.rb
new file mode 100644
index 0000000000..6b15c1b7bf
--- /dev/null
+++ b/benchmark/bm_vm1_gc_short_with_symbol.rb
@@ -0,0 +1,15 @@
+# make many symbols
+50_000.times{|i| sym = "sym#{i}".to_sym}
+GC.start
+GC.start
+
+i = 0
+while i<30_000_000 # while loop 1
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+ i+=1
+end
diff --git a/benchmark/bm_vm1_gc_wb_ary.rb b/benchmark/bm_vm1_gc_wb_ary.rb
new file mode 100644
index 0000000000..1b030386cf
--- /dev/null
+++ b/benchmark/bm_vm1_gc_wb_ary.rb
@@ -0,0 +1,12 @@
+short_lived_ary = []
+
+if RUBY_VERSION >= "2.2.0"
+ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true)
+end
+
+i = 0
+short_lived = ''
+while i<30_000_000 # while loop 1
+ short_lived_ary[0] = short_lived # write barrier
+ i+=1
+end
diff --git a/benchmark/bm_vm1_gc_wb_ary_promoted.rb b/benchmark/bm_vm1_gc_wb_ary_promoted.rb
new file mode 100644
index 0000000000..ebc369a60f
--- /dev/null
+++ b/benchmark/bm_vm1_gc_wb_ary_promoted.rb
@@ -0,0 +1,14 @@
+long_lived = []
+
+if RUBY_VERSION > "2.2.0"
+ 3.times{ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true) }
+elsif
+ GC.start
+end
+
+i = 0
+short_lived = ''
+while i<30_000_000 # while loop 1
+ long_lived[0] = short_lived # write barrier
+ i+=1
+end
diff --git a/benchmark/bm_vm1_gc_wb_obj.rb b/benchmark/bm_vm1_gc_wb_obj.rb
new file mode 100644
index 0000000000..96f4261915
--- /dev/null
+++ b/benchmark/bm_vm1_gc_wb_obj.rb
@@ -0,0 +1,15 @@
+class C
+ attr_accessor :foo
+end
+short_lived_obj = C.new
+
+if RUBY_VERSION >= "2.2.0"
+ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true)
+end
+
+i = 0
+short_lived = ''
+while i<30_000_000 # while loop 1
+ short_lived_obj.foo = short_lived # write barrier
+ i+=1
+end
diff --git a/benchmark/bm_vm1_gc_wb_obj_promoted.rb b/benchmark/bm_vm1_gc_wb_obj_promoted.rb
new file mode 100644
index 0000000000..674c413992
--- /dev/null
+++ b/benchmark/bm_vm1_gc_wb_obj_promoted.rb
@@ -0,0 +1,17 @@
+class C
+ attr_accessor :foo
+end
+long_lived = C.new
+
+if RUBY_VERSION >= "2.2.0"
+ 3.times{ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true) }
+elsif
+ GC.start
+end
+
+i = 0
+short_lived = ''
+while i<30_000_000 # while loop 1
+ long_lived.foo = short_lived # write barrier
+ i+=1
+end
diff --git a/benchmark/bm_vm1_ivar.rb b/benchmark/bm_vm1_ivar.rb
new file mode 100644
index 0000000000..68a73cf92f
--- /dev/null
+++ b/benchmark/bm_vm1_ivar.rb
@@ -0,0 +1,8 @@
+@a = 1
+
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ j = @a
+ k = @a
+end
diff --git a/benchmark/bm_vm1_ivar_set.rb b/benchmark/bm_vm1_ivar_set.rb
new file mode 100644
index 0000000000..bd81b06c34
--- /dev/null
+++ b/benchmark/bm_vm1_ivar_set.rb
@@ -0,0 +1,6 @@
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ @a = 1
+ @b = 2
+end
diff --git a/benchmark/bm_vm1_length.rb b/benchmark/bm_vm1_length.rb
new file mode 100644
index 0000000000..353de3ab0e
--- /dev/null
+++ b/benchmark/bm_vm1_length.rb
@@ -0,0 +1,9 @@
+a = 'abc'
+b = [1, 2, 3]
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ a.length
+ b.length
+end
+
diff --git a/benchmark/bm_vm1_lvar_init.rb b/benchmark/bm_vm1_lvar_init.rb
new file mode 100644
index 0000000000..36f2068811
--- /dev/null
+++ b/benchmark/bm_vm1_lvar_init.rb
@@ -0,0 +1,18 @@
+def m v
+ unless v
+ # unreachable code
+ v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = v9 = v10 =
+ v11 = v12 = v13 = v14 = v15 = v16 = v17 = v18 = v19 = v20 =
+ v21 = v22 = v23 = v24 = v25 = v26 = v27 = v28 = v29 = v30 =
+ v31 = v32 = v33 = v34 = v35 = v36 = v37 = v38 = v39 = v40 =
+ v41 = v42 = v43 = v44 = v45 = v46 = v47 = v48 = v49 = v50 = 1
+ end
+end
+
+i = 0
+
+while i<30_000_000 # while loop 1
+ i += 1
+ m i
+end
+
diff --git a/benchmark/bm_vm1_lvar_set.rb b/benchmark/bm_vm1_lvar_set.rb
new file mode 100644
index 0000000000..222e864134
--- /dev/null
+++ b/benchmark/bm_vm1_lvar_set.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ a = b = c = d = e = f = g = h = j = k = l = m = n = o = p = q = r = 1
+end
diff --git a/benchmark/bm_vm1_neq.rb b/benchmark/bm_vm1_neq.rb
new file mode 100644
index 0000000000..bbb4ae07a4
--- /dev/null
+++ b/benchmark/bm_vm1_neq.rb
@@ -0,0 +1,8 @@
+i = 0
+obj1 = Object.new
+obj2 = Object.new
+
+while i<30_000_000 # while loop 1
+ i += 1
+ obj1 != obj2
+end
diff --git a/benchmark/bm_vm1_not.rb b/benchmark/bm_vm1_not.rb
new file mode 100644
index 0000000000..b09ecdcc21
--- /dev/null
+++ b/benchmark/bm_vm1_not.rb
@@ -0,0 +1,7 @@
+i = 0
+obj = Object.new
+
+while i<30_000_000 # while loop 1
+ i += 1
+ !obj
+end
diff --git a/benchmark/bm_vm1_rescue.rb b/benchmark/bm_vm1_rescue.rb
new file mode 100644
index 0000000000..b0d3e2bdfa
--- /dev/null
+++ b/benchmark/bm_vm1_rescue.rb
@@ -0,0 +1,7 @@
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ begin
+ rescue
+ end
+end
diff --git a/benchmark/bm_vm1_simplereturn.rb b/benchmark/bm_vm1_simplereturn.rb
new file mode 100644
index 0000000000..63f9f21675
--- /dev/null
+++ b/benchmark/bm_vm1_simplereturn.rb
@@ -0,0 +1,9 @@
+def m
+ return 1
+end
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ m
+end
+
diff --git a/benchmark/bm_vm1_swap.rb b/benchmark/bm_vm1_swap.rb
new file mode 100644
index 0000000000..918f8b2112
--- /dev/null
+++ b/benchmark/bm_vm1_swap.rb
@@ -0,0 +1,8 @@
+a = 1
+b = 2
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ a, b = b, a
+end
+
diff --git a/benchmark/bm_vm1_yield.rb b/benchmark/bm_vm1_yield.rb
new file mode 100644
index 0000000000..775597cea6
--- /dev/null
+++ b/benchmark/bm_vm1_yield.rb
@@ -0,0 +1,10 @@
+def m
+ i = 0
+ while i<30_000_000 # while loop 1
+ i += 1
+ yield
+ end
+end
+
+m{}
+
diff --git a/benchmark/bm_vm2_array.rb b/benchmark/bm_vm2_array.rb
new file mode 100644
index 0000000000..df9037c83c
--- /dev/null
+++ b/benchmark/bm_vm2_array.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ a = [1,2,3,4,5,6,7,8,9,10]
+end
diff --git a/benchmark/bm_vm2_bigarray.rb b/benchmark/bm_vm2_bigarray.rb
new file mode 100644
index 0000000000..b02509d6a2
--- /dev/null
+++ b/benchmark/bm_vm2_bigarray.rb
@@ -0,0 +1,106 @@
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ a = [
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ ]
+end
diff --git a/benchmark/bm_vm2_bighash.rb b/benchmark/bm_vm2_bighash.rb
new file mode 100644
index 0000000000..5e3f437bb8
--- /dev/null
+++ b/benchmark/bm_vm2_bighash.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<60_000 # benchmark loop 2
+ i += 1
+ a = {0=>0, 1=>1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9, 10=>10, 11=>11, 12=>12, 13=>13, 14=>14, 15=>15, 16=>16, 17=>17, 18=>18, 19=>19, 20=>20, 21=>21, 22=>22, 23=>23, 24=>24, 25=>25, 26=>26, 27=>27, 28=>28, 29=>29, 30=>30, 31=>31, 32=>32, 33=>33, 34=>34, 35=>35, 36=>36, 37=>37, 38=>38, 39=>39, 40=>40, 41=>41, 42=>42, 43=>43, 44=>44, 45=>45, 46=>46, 47=>47, 48=>48, 49=>49, 50=>50, 51=>51, 52=>52, 53=>53, 54=>54, 55=>55, 56=>56, 57=>57, 58=>58, 59=>59, 60=>60, 61=>61, 62=>62, 63=>63, 64=>64, 65=>65, 66=>66, 67=>67, 68=>68, 69=>69, 70=>70, 71=>71, 72=>72, 73=>73, 74=>74, 75=>75, 76=>76, 77=>77, 78=>78, 79=>79, 80=>80, 81=>81, 82=>82, 83=>83, 84=>84, 85=>85, 86=>86, 87=>87, 88=>88, 89=>89, 90=>90, 91=>91, 92=>92, 93=>93, 94=>94, 95=>95, 96=>96, 97=>97, 98=>98, 99=>99, 100=>100, 101=>101, 102=>102, 103=>103, 104=>104, 105=>105, 106=>106, 107=>107, 108=>108, 109=>109, 110=>110, 111=>111, 112=>112, 113=>113, 114=>114, 115=>115, 116=>116, 117=>117, 118=>118, 119=>119, 120=>120, 121=>121, 122=>122, 123=>123, 124=>124, 125=>125, 126=>126, 127=>127, 128=>128, 129=>129, 130=>130, 131=>131, 132=>132, 133=>133, 134=>134, 135=>135, 136=>136, 137=>137, 138=>138, 139=>139, 140=>140, 141=>141, 142=>142, 143=>143, 144=>144, 145=>145, 146=>146, 147=>147, 148=>148, 149=>149, 150=>150, 151=>151, 152=>152, 153=>153, 154=>154, 155=>155, 156=>156, 157=>157, 158=>158, 159=>159, 160=>160, 161=>161, 162=>162, 163=>163, 164=>164, 165=>165, 166=>166, 167=>167, 168=>168, 169=>169, 170=>170, 171=>171, 172=>172, 173=>173, 174=>174, 175=>175, 176=>176, 177=>177, 178=>178, 179=>179, 180=>180, 181=>181, 182=>182, 183=>183, 184=>184, 185=>185, 186=>186, 187=>187, 188=>188, 189=>189, 190=>190, 191=>191, 192=>192, 193=>193, 194=>194, 195=>195, 196=>196, 197=>197, 198=>198, 199=>199, 200=>200, 201=>201, 202=>202, 203=>203, 204=>204, 205=>205, 206=>206, 207=>207, 208=>208, 209=>209, 210=>210, 211=>211, 212=>212, 213=>213, 214=>214, 215=>215, 216=>216, 217=>217, 218=>218, 219=>219, 220=>220, 221=>221, 222=>222, 223=>223, 224=>224, 225=>225, 226=>226, 227=>227, 228=>228, 229=>229, 230=>230, 231=>231, 232=>232, 233=>233, 234=>234, 235=>235, 236=>236, 237=>237, 238=>238, 239=>239, 240=>240, 241=>241, 242=>242, 243=>243, 244=>244, 245=>245, 246=>246, 247=>247, 248=>248, 249=>249, 250=>250, 251=>251, 252=>252, 253=>253, 254=>254, 255=>255, 256=>256, 257=>257, 258=>258, 259=>259, 260=>260, 261=>261, 262=>262, 263=>263, 264=>264, 265=>265, 266=>266, 267=>267, 268=>268, 269=>269, 270=>270, 271=>271, 272=>272, 273=>273, 274=>274, 275=>275, 276=>276, 277=>277, 278=>278, 279=>279, 280=>280, 281=>281, 282=>282, 283=>283, 284=>284, 285=>285, 286=>286, 287=>287, 288=>288, 289=>289, 290=>290, 291=>291, 292=>292, 293=>293, 294=>294, 295=>295, 296=>296, 297=>297, 298=>298, 299=>299, 300=>300, 301=>301, 302=>302, 303=>303, 304=>304, 305=>305, 306=>306, 307=>307, 308=>308, 309=>309, 310=>310, 311=>311, 312=>312, 313=>313, 314=>314, 315=>315, 316=>316, 317=>317, 318=>318, 319=>319, 320=>320, 321=>321, 322=>322, 323=>323, 324=>324, 325=>325, 326=>326, 327=>327, 328=>328, 329=>329, 330=>330, 331=>331, 332=>332, 333=>333, 334=>334, 335=>335, 336=>336, 337=>337, 338=>338, 339=>339, 340=>340, 341=>341, 342=>342, 343=>343, 344=>344, 345=>345, 346=>346, 347=>347, 348=>348, 349=>349, 350=>350, 351=>351, 352=>352, 353=>353, 354=>354, 355=>355, 356=>356, 357=>357, 358=>358, 359=>359, 360=>360, 361=>361, 362=>362, 363=>363, 364=>364, 365=>365, 366=>366, 367=>367, 368=>368, 369=>369, 370=>370, 371=>371, 372=>372, 373=>373, 374=>374, 375=>375, 376=>376, 377=>377, 378=>378, 379=>379, 380=>380, 381=>381, 382=>382, 383=>383, 384=>384, 385=>385, 386=>386, 387=>387, 388=>388, 389=>389, 390=>390, 391=>391, 392=>392, 393=>393, 394=>394, 395=>395, 396=>396, 397=>397, 398=>398, 399=>399, 400=>400, 401=>401, 402=>402, 403=>403, 404=>404, 405=>405, 406=>406, 407=>407, 408=>408, 409=>409, 410=>410, 411=>411, 412=>412, 413=>413, 414=>414, 415=>415, 416=>416, 417=>417, 418=>418, 419=>419, 420=>420, 421=>421, 422=>422, 423=>423, 424=>424, 425=>425, 426=>426, 427=>427, 428=>428, 429=>429, 430=>430, 431=>431, 432=>432, 433=>433, 434=>434, 435=>435, 436=>436, 437=>437, 438=>438, 439=>439, 440=>440, 441=>441, 442=>442, 443=>443, 444=>444, 445=>445, 446=>446, 447=>447, 448=>448, 449=>449, 450=>450, 451=>451, 452=>452, 453=>453, 454=>454, 455=>455, 456=>456, 457=>457, 458=>458, 459=>459, 460=>460, 461=>461, 462=>462, 463=>463, 464=>464, 465=>465, 466=>466, 467=>467, 468=>468, 469=>469, 470=>470, 471=>471, 472=>472, 473=>473, 474=>474, 475=>475, 476=>476, 477=>477, 478=>478, 479=>479, 480=>480, 481=>481, 482=>482, 483=>483, 484=>484, 485=>485, 486=>486, 487=>487, 488=>488, 489=>489, 490=>490, 491=>491, 492=>492, 493=>493, 494=>494, 495=>495, 496=>496, 497=>497, 498=>498, 499=>499, 500=>500,}
+end
diff --git a/benchmark/bm_vm2_case.rb b/benchmark/bm_vm2_case.rb
new file mode 100644
index 0000000000..adc6e4df0a
--- /dev/null
+++ b/benchmark/bm_vm2_case.rb
@@ -0,0 +1,14 @@
+i = 0
+while i<6_000_000 # while loop 2
+ case :foo
+ when :bar
+ raise
+ when :baz
+ raise
+ when :boo
+ raise
+ when :foo
+ i += 1
+ end
+end
+
diff --git a/benchmark/bm_vm2_case_lit.rb b/benchmark/bm_vm2_case_lit.rb
new file mode 100644
index 0000000000..c62b294e0e
--- /dev/null
+++ b/benchmark/bm_vm2_case_lit.rb
@@ -0,0 +1,19 @@
+i = 0
+@ret = [ "foo", true, false, :sym, 6, nil, 0.1, 0xffffffffffffffff ]
+def foo(i)
+ @ret[i % @ret.size]
+end
+
+while i<6_000_000 # while loop 2
+ case foo(i)
+ when "foo" then :foo
+ when true then true
+ when false then false
+ when :sym then :sym
+ when 6 then :fix
+ when nil then nil
+ when 0.1 then :float
+ when 0xffffffffffffffff then :big
+ end
+ i += 1
+end
diff --git a/benchmark/bm_vm2_defined_method.rb b/benchmark/bm_vm2_defined_method.rb
new file mode 100644
index 0000000000..053ed6c912
--- /dev/null
+++ b/benchmark/bm_vm2_defined_method.rb
@@ -0,0 +1,9 @@
+class Object
+ define_method(:m){}
+end
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ m; m; m; m; m; m; m; m;
+end
diff --git a/benchmark/bm_vm2_dstr.rb b/benchmark/bm_vm2_dstr.rb
new file mode 100644
index 0000000000..58c0f7bbc3
--- /dev/null
+++ b/benchmark/bm_vm2_dstr.rb
@@ -0,0 +1,6 @@
+i = 0
+x = y = 'z'
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
diff --git a/benchmark/bm_vm2_eval.rb b/benchmark/bm_vm2_eval.rb
new file mode 100644
index 0000000000..307cfc28ef
--- /dev/null
+++ b/benchmark/bm_vm2_eval.rb
@@ -0,0 +1,6 @@
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ eval("1")
+end
+
diff --git a/benchmark/bm_vm2_fiber_switch.rb b/benchmark/bm_vm2_fiber_switch.rb
new file mode 100644
index 0000000000..c6f615d71d
--- /dev/null
+++ b/benchmark/bm_vm2_fiber_switch.rb
@@ -0,0 +1,9 @@
+# based on benchmark for [ruby-core:65518] [Feature #10341] by Knut Franke
+fib = Fiber.new do
+ loop { Fiber.yield }
+end
+i = 0
+while i< 6_000_000 # benchmark loop 2
+ i += 1
+ fib.resume
+end
diff --git a/benchmark/bm_vm2_method.rb b/benchmark/bm_vm2_method.rb
new file mode 100644
index 0000000000..a8ccff7138
--- /dev/null
+++ b/benchmark/bm_vm2_method.rb
@@ -0,0 +1,9 @@
+def m
+ nil
+end
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ m; m; m; m; m; m; m; m;
+end
diff --git a/benchmark/bm_vm2_method_missing.rb b/benchmark/bm_vm2_method_missing.rb
new file mode 100644
index 0000000000..2badc73101
--- /dev/null
+++ b/benchmark/bm_vm2_method_missing.rb
@@ -0,0 +1,12 @@
+class C
+ def method_missing mid
+ end
+end
+
+obj = C.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m;
+end
diff --git a/benchmark/bm_vm2_method_with_block.rb b/benchmark/bm_vm2_method_with_block.rb
new file mode 100644
index 0000000000..b4efb4f520
--- /dev/null
+++ b/benchmark/bm_vm2_method_with_block.rb
@@ -0,0 +1,9 @@
+def m
+ nil
+end
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ m{}; m{}; m{}; m{}; m{}; m{}; m{}; m{};
+end
diff --git a/benchmark/bm_vm2_module_ann_const_set.rb b/benchmark/bm_vm2_module_ann_const_set.rb
new file mode 100644
index 0000000000..12ccfd2ff3
--- /dev/null
+++ b/benchmark/bm_vm2_module_ann_const_set.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ Module.new.const_set(:X, Module.new)
+end
diff --git a/benchmark/bm_vm2_module_const_set.rb b/benchmark/bm_vm2_module_const_set.rb
new file mode 100644
index 0000000000..f4d4c1b2e7
--- /dev/null
+++ b/benchmark/bm_vm2_module_const_set.rb
@@ -0,0 +1,8 @@
+i = 0
+module M
+end
+$VERBOSE = nil
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ M.const_set(:X, Module.new)
+end
diff --git a/benchmark/bm_vm2_mutex.rb b/benchmark/bm_vm2_mutex.rb
new file mode 100644
index 0000000000..5d16480c6b
--- /dev/null
+++ b/benchmark/bm_vm2_mutex.rb
@@ -0,0 +1,9 @@
+require 'thread'
+
+m = Thread::Mutex.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ m.synchronize{}
+end
diff --git a/benchmark/bm_vm2_newlambda.rb b/benchmark/bm_vm2_newlambda.rb
new file mode 100644
index 0000000000..6422c9b0d0
--- /dev/null
+++ b/benchmark/bm_vm2_newlambda.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ lambda {}
+end
diff --git a/benchmark/bm_vm2_poly_method.rb b/benchmark/bm_vm2_poly_method.rb
new file mode 100644
index 0000000000..c82c0e4bce
--- /dev/null
+++ b/benchmark/bm_vm2_poly_method.rb
@@ -0,0 +1,20 @@
+class C1
+ def m
+ 1
+ end
+end
+class C2
+ def m
+ 2
+ end
+end
+
+o1 = C1.new
+o2 = C2.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ o = (i % 2 == 0) ? o1 : o2
+ o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
+ i += 1
+end
diff --git a/benchmark/bm_vm2_poly_method_ov.rb b/benchmark/bm_vm2_poly_method_ov.rb
new file mode 100644
index 0000000000..aa5fd1dd38
--- /dev/null
+++ b/benchmark/bm_vm2_poly_method_ov.rb
@@ -0,0 +1,20 @@
+class C1
+ def m
+ 1
+ end
+end
+class C2
+ def m
+ 2
+ end
+end
+
+o1 = C1.new
+o2 = C2.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ o = (i % 2 == 0) ? o1 : o2
+# o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
+ i += 1
+end
diff --git a/benchmark/bm_vm2_poly_singleton.rb b/benchmark/bm_vm2_poly_singleton.rb
new file mode 100644
index 0000000000..0dba4320c4
--- /dev/null
+++ b/benchmark/bm_vm2_poly_singleton.rb
@@ -0,0 +1,14 @@
+class C1
+ def m; 1; end
+end
+
+o1 = C1.new
+o2 = C1.new
+o2.singleton_class
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ o = (i % 2 == 0) ? o1 : o2
+ o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
+ i += 1
+end
diff --git a/benchmark/bm_vm2_proc.rb b/benchmark/bm_vm2_proc.rb
new file mode 100644
index 0000000000..65e5217371
--- /dev/null
+++ b/benchmark/bm_vm2_proc.rb
@@ -0,0 +1,14 @@
+def m &b
+ b
+end
+
+pr = m{
+ a = 1
+}
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ pr.call
+end
+
diff --git a/benchmark/bm_vm2_raise1.rb b/benchmark/bm_vm2_raise1.rb
new file mode 100644
index 0000000000..aa5387987f
--- /dev/null
+++ b/benchmark/bm_vm2_raise1.rb
@@ -0,0 +1,18 @@
+def rec n
+ if n > 0
+ rec n-1
+ else
+ raise
+ end
+end
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+
+ begin
+ rec 1
+ rescue
+ # ignore
+ end
+end
diff --git a/benchmark/bm_vm2_raise2.rb b/benchmark/bm_vm2_raise2.rb
new file mode 100644
index 0000000000..1f61c63157
--- /dev/null
+++ b/benchmark/bm_vm2_raise2.rb
@@ -0,0 +1,18 @@
+def rec n
+ if n > 0
+ rec n-1
+ else
+ raise
+ end
+end
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+
+ begin
+ rec 10
+ rescue
+ # ignore
+ end
+end
diff --git a/benchmark/bm_vm2_regexp.rb b/benchmark/bm_vm2_regexp.rb
new file mode 100644
index 0000000000..55f9e957a3
--- /dev/null
+++ b/benchmark/bm_vm2_regexp.rb
@@ -0,0 +1,6 @@
+i = 0
+str = 'xxxhogexxx'
+while i<6_000_000 # benchmark loop 2
+ /hoge/ =~ str
+ i += 1
+end
diff --git a/benchmark/bm_vm2_send.rb b/benchmark/bm_vm2_send.rb
new file mode 100644
index 0000000000..6a3ab6fdab
--- /dev/null
+++ b/benchmark/bm_vm2_send.rb
@@ -0,0 +1,12 @@
+class C
+ def m
+ end
+end
+
+o = C.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ o.__send__ :m
+end
diff --git a/benchmark/bm_vm2_string_literal.rb b/benchmark/bm_vm2_string_literal.rb
new file mode 100644
index 0000000000..1d73036849
--- /dev/null
+++ b/benchmark/bm_vm2_string_literal.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+end
diff --git a/benchmark/bm_vm2_struct_big_aref_hi.rb b/benchmark/bm_vm2_struct_big_aref_hi.rb
new file mode 100644
index 0000000000..22cb26b0a5
--- /dev/null
+++ b/benchmark/bm_vm2_struct_big_aref_hi.rb
@@ -0,0 +1,7 @@
+s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+x = s.new
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x.z # x[25]
+end
diff --git a/benchmark/bm_vm2_struct_big_aref_lo.rb b/benchmark/bm_vm2_struct_big_aref_lo.rb
new file mode 100644
index 0000000000..5e61a7087e
--- /dev/null
+++ b/benchmark/bm_vm2_struct_big_aref_lo.rb
@@ -0,0 +1,7 @@
+s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+x = s.new
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x.k # x[10]
+end
diff --git a/benchmark/bm_vm2_struct_big_aset.rb b/benchmark/bm_vm2_struct_big_aset.rb
new file mode 100644
index 0000000000..5a1c3d16f3
--- /dev/null
+++ b/benchmark/bm_vm2_struct_big_aset.rb
@@ -0,0 +1,7 @@
+s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+x = s.new
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x.k = i # x[10] = i
+end
diff --git a/benchmark/bm_vm2_struct_big_href_hi.rb b/benchmark/bm_vm2_struct_big_href_hi.rb
new file mode 100644
index 0000000000..fff940a80a
--- /dev/null
+++ b/benchmark/bm_vm2_struct_big_href_hi.rb
@@ -0,0 +1,7 @@
+s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+x = s.new
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x[:z]
+end
diff --git a/benchmark/bm_vm2_struct_big_href_lo.rb b/benchmark/bm_vm2_struct_big_href_lo.rb
new file mode 100644
index 0000000000..5e4085d59d
--- /dev/null
+++ b/benchmark/bm_vm2_struct_big_href_lo.rb
@@ -0,0 +1,7 @@
+s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+x = s.new
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x[:k]
+end
diff --git a/benchmark/bm_vm2_struct_big_hset.rb b/benchmark/bm_vm2_struct_big_hset.rb
new file mode 100644
index 0000000000..9c0cee4141
--- /dev/null
+++ b/benchmark/bm_vm2_struct_big_hset.rb
@@ -0,0 +1,7 @@
+s = Struct.new(*('a'..'z').map { |x| x.to_sym })
+x = s.new
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x[:k] = i
+end
diff --git a/benchmark/bm_vm2_struct_small_aref.rb b/benchmark/bm_vm2_struct_small_aref.rb
new file mode 100644
index 0000000000..8eaa555b41
--- /dev/null
+++ b/benchmark/bm_vm2_struct_small_aref.rb
@@ -0,0 +1,7 @@
+s = Struct.new(:a, :b, :c)
+x = s.new
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x.a
+end
diff --git a/benchmark/bm_vm2_struct_small_aset.rb b/benchmark/bm_vm2_struct_small_aset.rb
new file mode 100644
index 0000000000..ecd0f95669
--- /dev/null
+++ b/benchmark/bm_vm2_struct_small_aset.rb
@@ -0,0 +1,7 @@
+s = Struct.new(:a, :b, :c)
+x = s.new
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x.a = i
+end
diff --git a/benchmark/bm_vm2_struct_small_href.rb b/benchmark/bm_vm2_struct_small_href.rb
new file mode 100644
index 0000000000..2c88fee6bf
--- /dev/null
+++ b/benchmark/bm_vm2_struct_small_href.rb
@@ -0,0 +1,7 @@
+s = Struct.new(:a, :b, :c)
+x = s.new
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x[:a]
+end
diff --git a/benchmark/bm_vm2_struct_small_hset.rb b/benchmark/bm_vm2_struct_small_hset.rb
new file mode 100644
index 0000000000..33c36d20f1
--- /dev/null
+++ b/benchmark/bm_vm2_struct_small_hset.rb
@@ -0,0 +1,7 @@
+s = Struct.new(:a, :b, :c)
+x = s.new
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ x[:a] = 1
+end
diff --git a/benchmark/bm_vm2_super.rb b/benchmark/bm_vm2_super.rb
new file mode 100644
index 0000000000..afd8579e7b
--- /dev/null
+++ b/benchmark/bm_vm2_super.rb
@@ -0,0 +1,20 @@
+
+class C
+ def m
+ 1
+ end
+end
+
+class CC < C
+ def m
+ super()
+ end
+end
+
+obj = CC.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ obj.m
+ i += 1
+end
diff --git a/benchmark/bm_vm2_unif1.rb b/benchmark/bm_vm2_unif1.rb
new file mode 100644
index 0000000000..1774625942
--- /dev/null
+++ b/benchmark/bm_vm2_unif1.rb
@@ -0,0 +1,8 @@
+i = 0
+def m a, b
+end
+
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ m 100, 200
+end
diff --git a/benchmark/bm_vm2_zsuper.rb b/benchmark/bm_vm2_zsuper.rb
new file mode 100644
index 0000000000..2a43e62217
--- /dev/null
+++ b/benchmark/bm_vm2_zsuper.rb
@@ -0,0 +1,20 @@
+i = 0
+
+class C
+ def m a
+ 1
+ end
+end
+
+class CC < C
+ def m a
+ super
+ end
+end
+
+obj = CC.new
+
+while i<6_000_000 # benchmark loop 2
+ obj.m 10
+ i += 1
+end
diff --git a/benchmark/vm_backtrace.rb b/benchmark/bm_vm3_backtrace.rb
index 0fbf73e1ca..0fbf73e1ca 100644
--- a/benchmark/vm_backtrace.rb
+++ b/benchmark/bm_vm3_backtrace.rb
diff --git a/benchmark/vm_clearmethodcache.rb b/benchmark/bm_vm3_clearmethodcache.rb
index 9661323cd2..9661323cd2 100644
--- a/benchmark/vm_clearmethodcache.rb
+++ b/benchmark/bm_vm3_clearmethodcache.rb
diff --git a/benchmark/vm_gc.rb b/benchmark/bm_vm3_gc.rb
index e668026915..e668026915 100644
--- a/benchmark/vm_gc.rb
+++ b/benchmark/bm_vm3_gc.rb
diff --git a/benchmark/vm_gc_old_full.rb b/benchmark/bm_vm3_gc_old_full.rb
index cfdfc8c5a5..cfdfc8c5a5 100644
--- a/benchmark/vm_gc_old_full.rb
+++ b/benchmark/bm_vm3_gc_old_full.rb
diff --git a/benchmark/vm_gc_old_immediate.rb b/benchmark/bm_vm3_gc_old_immediate.rb
index ad22feb655..ad22feb655 100644
--- a/benchmark/vm_gc_old_immediate.rb
+++ b/benchmark/bm_vm3_gc_old_immediate.rb
diff --git a/benchmark/vm_gc_old_lazy.rb b/benchmark/bm_vm3_gc_old_lazy.rb
index b74d44baf1..b74d44baf1 100644
--- a/benchmark/vm_gc_old_lazy.rb
+++ b/benchmark/bm_vm3_gc_old_lazy.rb
diff --git a/benchmark/vm_symbol_block_pass.rb b/benchmark/bm_vm_symbol_block_pass.rb
index 1d433353e1..1d433353e1 100644
--- a/benchmark/vm_symbol_block_pass.rb
+++ b/benchmark/bm_vm_symbol_block_pass.rb
diff --git a/benchmark/bm_vm_thread_alive_check1.rb b/benchmark/bm_vm_thread_alive_check1.rb
new file mode 100644
index 0000000000..c993accdda
--- /dev/null
+++ b/benchmark/bm_vm_thread_alive_check1.rb
@@ -0,0 +1,6 @@
+5_000.times{
+ t = Thread.new{}
+ while t.alive?
+ Thread.pass
+ end
+}
diff --git a/benchmark/vm_thread_close.rb b/benchmark/bm_vm_thread_close.rb
index 3e9a265ce8..3e9a265ce8 100644
--- a/benchmark/vm_thread_close.rb
+++ b/benchmark/bm_vm_thread_close.rb
diff --git a/benchmark/bm_vm_thread_condvar1.rb b/benchmark/bm_vm_thread_condvar1.rb
new file mode 100644
index 0000000000..cf5706b23e
--- /dev/null
+++ b/benchmark/bm_vm_thread_condvar1.rb
@@ -0,0 +1,28 @@
+# two threads, two mutex, two condvar ping-pong
+require 'thread'
+m1 = Mutex.new
+m2 = Mutex.new
+cv1 = ConditionVariable.new
+cv2 = ConditionVariable.new
+max = 100000
+i = 0
+wait = nil
+m2.synchronize do
+ wait = Thread.new do
+ m1.synchronize do
+ m2.synchronize { cv2.signal }
+ while (i += 1) < max
+ cv1.wait(m1)
+ cv2.signal
+ end
+ end
+ end
+ cv2.wait(m2)
+end
+m1.synchronize do
+ while i < max
+ cv1.signal
+ cv2.wait(m1)
+ end
+end
+wait.join
diff --git a/benchmark/bm_vm_thread_condvar2.rb b/benchmark/bm_vm_thread_condvar2.rb
new file mode 100644
index 0000000000..7c8dc19481
--- /dev/null
+++ b/benchmark/bm_vm_thread_condvar2.rb
@@ -0,0 +1,35 @@
+# many threads, one mutex, many condvars
+require 'thread'
+m = Mutex.new
+cv1 = ConditionVariable.new
+cv2 = ConditionVariable.new
+max = 1000
+n = 100
+waiting = 0
+scvs = []
+waiters = n.times.map do |i|
+ start_cv = ConditionVariable.new
+ scvs << start_cv
+ start_mtx = Mutex.new
+ start_mtx.synchronize do
+ th = Thread.new(start_mtx, start_cv) do |sm, scv|
+ m.synchronize do
+ sm.synchronize { scv.signal }
+ max.times do
+ cv2.signal if (waiting += 1) == n
+ cv1.wait(m)
+ end
+ end
+ end
+ start_cv.wait(start_mtx)
+ th
+ end
+end
+m.synchronize do
+ max.times do
+ cv2.wait(m) until waiting == n
+ waiting = 0
+ cv1.broadcast
+ end
+end
+waiters.each(&:join)
diff --git a/benchmark/vm_thread_create_join.rb b/benchmark/bm_vm_thread_create_join.rb
index 393cd45df9..393cd45df9 100644
--- a/benchmark/vm_thread_create_join.rb
+++ b/benchmark/bm_vm_thread_create_join.rb
diff --git a/benchmark/vm_thread_mutex1.rb b/benchmark/bm_vm_thread_mutex1.rb
index 66e42c85e1..66e42c85e1 100644
--- a/benchmark/vm_thread_mutex1.rb
+++ b/benchmark/bm_vm_thread_mutex1.rb
diff --git a/benchmark/vm_thread_mutex2.rb b/benchmark/bm_vm_thread_mutex2.rb
index 6e6c804c31..6e6c804c31 100644
--- a/benchmark/vm_thread_mutex2.rb
+++ b/benchmark/bm_vm_thread_mutex2.rb
diff --git a/benchmark/vm_thread_mutex3.rb b/benchmark/bm_vm_thread_mutex3.rb
index c750dc542a..c750dc542a 100644
--- a/benchmark/vm_thread_mutex3.rb
+++ b/benchmark/bm_vm_thread_mutex3.rb
diff --git a/benchmark/bm_vm_thread_pass.rb b/benchmark/bm_vm_thread_pass.rb
new file mode 100644
index 0000000000..b5b3c0bc85
--- /dev/null
+++ b/benchmark/bm_vm_thread_pass.rb
@@ -0,0 +1,15 @@
+# Plenty Thtread.pass
+# A performance may depend on GVL implementation.
+
+tmax = (ARGV.shift || 2).to_i
+lmax = 200_000 / tmax
+
+(1..tmax).map{
+ Thread.new{
+ lmax.times{
+ Thread.pass
+ }
+ }
+}.each{|t| t.join}
+
+
diff --git a/benchmark/bm_vm_thread_pass_flood.rb b/benchmark/bm_vm_thread_pass_flood.rb
new file mode 100644
index 0000000000..a660aafc18
--- /dev/null
+++ b/benchmark/bm_vm_thread_pass_flood.rb
@@ -0,0 +1,10 @@
+# n.b. this is a good test for GVL when pinned to a single CPU
+
+1000.times{
+ Thread.new{loop{Thread.pass}}
+}
+
+i = 0
+while i<10000
+ i += 1
+end
diff --git a/benchmark/vm_thread_pipe.rb b/benchmark/bm_vm_thread_pipe.rb
index 112a621905..112a621905 100644
--- a/benchmark/vm_thread_pipe.rb
+++ b/benchmark/bm_vm_thread_pipe.rb
diff --git a/benchmark/bm_vm_thread_queue.rb b/benchmark/bm_vm_thread_queue.rb
new file mode 100644
index 0000000000..274ceda366
--- /dev/null
+++ b/benchmark/bm_vm_thread_queue.rb
@@ -0,0 +1,18 @@
+require 'thread'
+
+n = 1_000_000
+q = Thread::Queue.new
+consumer = Thread.new{
+ while q.pop
+ # consuming
+ end
+}
+
+producer = Thread.new{
+ n.times{
+ q.push true
+ }
+ q.push nil
+}
+
+consumer.join
diff --git a/benchmark/vm_thread_sized_queue.rb b/benchmark/bm_vm_thread_sized_queue.rb
index 7b9af5482b..7b9af5482b 100644
--- a/benchmark/vm_thread_sized_queue.rb
+++ b/benchmark/bm_vm_thread_sized_queue.rb
diff --git a/benchmark/vm_thread_sized_queue2.rb b/benchmark/bm_vm_thread_sized_queue2.rb
index de9f55e978..de9f55e978 100644
--- a/benchmark/vm_thread_sized_queue2.rb
+++ b/benchmark/bm_vm_thread_sized_queue2.rb
diff --git a/benchmark/vm_thread_sized_queue3.rb b/benchmark/bm_vm_thread_sized_queue3.rb
index ce5f1796d8..ce5f1796d8 100644
--- a/benchmark/vm_thread_sized_queue3.rb
+++ b/benchmark/bm_vm_thread_sized_queue3.rb
diff --git a/benchmark/vm_thread_sized_queue4.rb b/benchmark/bm_vm_thread_sized_queue4.rb
index a9b7d80ec0..a9b7d80ec0 100644
--- a/benchmark/vm_thread_sized_queue4.rb
+++ b/benchmark/bm_vm_thread_sized_queue4.rb
diff --git a/benchmark/buffer_each.yml b/benchmark/buffer_each.yml
deleted file mode 100644
index 417941104e..0000000000
--- a/benchmark/buffer_each.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-prelude: |
- # frozen_string_literal: true
- Warning[:experimental] = false
- string = "The quick brown fox jumped over the lazy dog."
- array = string.bytes
- buffer = IO::Buffer.for(string)
-benchmark:
- string.each_byte: |
- upcased = String.new
- string.each_byte do |byte|
- upcased << (byte ^ 32)
- end
- array.each: |
- upcased = String.new
- array.each do |byte|
- upcased << (byte ^ 32)
- end
- buffer.each: |
- upcased = String.new
- buffer.each(:U8) do |offset, byte|
- upcased << (byte ^ 32)
- end
- buffer.each_byte: |
- upcased = String.new
- buffer.each_byte do |byte|
- upcased << (byte ^ 32)
- end
diff --git a/benchmark/buffer_get.yml b/benchmark/buffer_get.yml
deleted file mode 100644
index 9e1f99d64e..0000000000
--- a/benchmark/buffer_get.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-prelude: |
- # frozen_string_literal: true
- Warning[:experimental] = false
- string = "The quick brown fox jumped over the lazy dog."
- buffer = IO::Buffer.for(string)
- format = [:U32, :U32, :U32, :U32]
-benchmark:
- string.unpack1: |
- [
- string.unpack1("N"),
- string.unpack1("N", offset: 4),
- string.unpack1("N", offset: 8),
- string.unpack1("N", offset: 12),
- ]
- buffer.get_value: |
- [
- buffer.get_value(:U32, 0),
- buffer.get_value(:U32, 4),
- buffer.get_value(:U32, 8),
- buffer.get_value(:U32, 12),
- ]
- buffer.get_values: |
- buffer.get_values(format, 0)
- string.unpack: |
- string.unpack("NNNN")
diff --git a/benchmark/cgi_escape_html.yml b/benchmark/cgi_escape_html.yml
deleted file mode 100644
index 655be9d7d8..0000000000
--- a/benchmark/cgi_escape_html.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-prelude: |
- # frozen_string_literal: true
- require 'cgi/escape'
-benchmark:
- - script: CGI.escapeHTML("")
- loop_count: 20000000
- - script: CGI.escapeHTML("abcde")
- loop_count: 20000000
- - script: CGI.escapeHTML("abcd<")
- loop_count: 20000000
- - script: CGI.escapeHTML("'&\"<>")
- loop_count: 5000000
- - prelude: long_no_escape = "abcde" * 300
- script: CGI.escapeHTML(long_no_escape)
- loop_count: 1000000
- - prelude: long_all_escape = "'&\"<>" * 10
- script: CGI.escapeHTML(long_all_escape)
- loop_count: 1000000
- - prelude: | # http://example.com/
- example_html = <<~HTML
- <body>
- <div>
- <h1>Example Domain</h1>
- <p>This domain is established to be used for illustrative examples in documents. You may use this
- domain in examples without prior coordination or asking for permission.</p>
- <p><a href="http://www.iana.org/domains/example">More information...</a></p>
- </div>
- </body>
- HTML
- script: CGI.escapeHTML(example_html)
- loop_count: 1000000
diff --git a/benchmark/complex_float_add.yml b/benchmark/complex_float_add.yml
deleted file mode 100644
index d0150c5e5b..0000000000
--- a/benchmark/complex_float_add.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- max, min = 1000.0, -1000.0
- a = Complex(rand(max)+min, rand(max)+min)
- b = Complex(rand(max)+min, rand(max)+min)
-benchmark:
- complex_float_add: c = a + b
-loop_count: 1000000
diff --git a/benchmark/complex_float_div.yml b/benchmark/complex_float_div.yml
deleted file mode 100644
index b9f5e1d51c..0000000000
--- a/benchmark/complex_float_div.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- max, min = 1000.0, -1000.0
- a = Complex(rand(max)+min, rand(max)+min)
- b = Complex(rand(max)+min, rand(max)+min)
-benchmark:
- complex_float_div: c = a / b
-loop_count: 1000000
diff --git a/benchmark/complex_float_mul.yml b/benchmark/complex_float_mul.yml
deleted file mode 100644
index 59b096a6dc..0000000000
--- a/benchmark/complex_float_mul.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- max, min = 1000.0, -1000.0
- a = Complex(rand(max)+min, rand(max)+min)
- b = Complex(rand(max)+min, rand(max)+min)
-benchmark:
- complex_float_mul: c = a * b
-loop_count: 1000000
diff --git a/benchmark/complex_float_new.yml b/benchmark/complex_float_new.yml
deleted file mode 100644
index 6fcde3125b..0000000000
--- a/benchmark/complex_float_new.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- max, min = 1000.0, -1000.0
- a = Complex(rand(max)+min, rand(max)+min)
- b = Complex(rand(max)+min, rand(max)+min)
-benchmark:
- complex_float_new: c = Complex(a, b)
-loop_count: 1000000
diff --git a/benchmark/complex_float_power.yml b/benchmark/complex_float_power.yml
deleted file mode 100644
index c40a31ab55..0000000000
--- a/benchmark/complex_float_power.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- max, min = 1000.0, -1000.0
- a = Complex(rand(max)+min, rand(max)+min)
- b = Complex(rand(max)+min, rand(max)+min)
-benchmark:
- complex_float_power: c = a ** b
-loop_count: 1000000
diff --git a/benchmark/complex_float_sub.yml b/benchmark/complex_float_sub.yml
deleted file mode 100644
index 3fafe7cdbe..0000000000
--- a/benchmark/complex_float_sub.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- max, min = 1000.0, -1000.0
- a = Complex(rand(max)+min, rand(max)+min)
- b = Complex(rand(max)+min, rand(max)+min)
-benchmark:
- complex_float_sub: c = a - b
-loop_count: 1000000
diff --git a/benchmark/constant_invalidation.rb b/benchmark/constant_invalidation.rb
deleted file mode 100644
index a95ec6f37e..0000000000
--- a/benchmark/constant_invalidation.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-$VERBOSE = nil
-
-CONSTANT1 = 1
-CONSTANT2 = 1
-CONSTANT3 = 1
-CONSTANT4 = 1
-CONSTANT5 = 1
-
-def constants
- [CONSTANT1, CONSTANT2, CONSTANT3, CONSTANT4, CONSTANT5]
-end
-
-500_000.times do
- constants
-
- # With previous behavior, this would cause all of the constant caches
- # associated with the constant lookups listed above to invalidate, meaning
- # they would all have to be fetched again. With current behavior, it only
- # invalidates when a name matches, so the following constant set shouldn't
- # impact the constant lookups listed above.
- INVALIDATE = true
-end
diff --git a/benchmark/driver.rb b/benchmark/driver.rb
new file mode 100755
index 0000000000..469fc99f40
--- /dev/null
+++ b/benchmark/driver.rb
@@ -0,0 +1,441 @@
+#!/usr/bin/env ruby
+#
+# Ruby Benchmark driver
+#
+
+first = true
+
+begin
+ require 'optparse'
+rescue LoadError
+ if first
+ first = false
+ $:.unshift File.join(File.dirname(__FILE__), '../lib')
+ retry
+ else
+ raise
+ end
+end
+
+require 'benchmark'
+require 'pp'
+require 'tempfile'
+
+class BenchmarkDriver
+ def self.benchmark(opt)
+ driver = self.new(opt[:execs], opt[:dir], opt)
+ begin
+ driver.run
+ ensure
+ driver.show_results
+ end
+ end
+
+ def self.load(input, type, opt)
+ case type
+ when 'yaml'
+ require 'yaml'
+ h = YAML.load(input)
+ when 'json'
+ require 'json'
+ h = JSON.load(input)
+ else
+ h = eval(input.read)
+ end
+ results = h[:results] || h["results"]
+ obj = allocate
+ obj.instance_variable_set("@execs", h[:executables] || h["executables"])
+ obj.instance_variable_set("@results", results)
+ obj.instance_variable_set("@opt", opt)
+ [1, 2].each do |i|
+ loop = results.assoc((n = "loop_whileloop#{i}").intern) || results.assoc(n)
+ obj.instance_variable_set("@loop_wl#{i}", loop ? loop[1].map {|t,*|t} : nil)
+ end
+ obj.instance_variable_set("@measure_target", opt[:measure_target] || opt["measure_target"])
+ obj
+ end
+
+ def output *args
+ puts(*args)
+ @output and @output.puts(*args)
+ end
+
+ def message *args
+ output(*args) if @verbose
+ end
+
+ def message_print *args
+ if @verbose
+ print(*args)
+ STDOUT.flush
+ @output and @output.print(*args)
+ end
+ end
+
+ def progress_message *args
+ unless STDOUT.tty?
+ STDERR.print(*args)
+ STDERR.flush
+ end
+ end
+
+ def initialize execs, dir, opt = {}
+ @execs = execs.map{|e|
+ e.strip!
+ next if e.empty?
+
+ if /(.+)::(.+)/ =~ e
+ # ex) ruby-a::/path/to/ruby-a
+ label = $1.strip
+ path = $2
+ version = `#{path} -v`.chomp
+ else
+ path = e
+ version = label = `#{path} -v`.chomp
+ end
+ [path, label, version]
+ }.compact
+
+ @dir = dir
+ @repeat = opt[:repeat] || 1
+ @repeat = 1 if @repeat < 1
+ @pattern = opt[:pattern] || nil
+ @exclude = opt[:exclude] || nil
+ @verbose = opt[:quiet] ? false : (opt[:verbose] || false)
+ @output = opt[:output] ? open(opt[:output], 'w') : nil
+ @loop_wl1 = @loop_wl2 = nil
+ @ruby_arg = opt[:ruby_arg] || nil
+ @measure_target = opt[:measure_target]
+ @opt = opt
+
+ # [[name, [[r-1-1, r-1-2, ...], [r-2-1, r-2-2, ...]]], ...]
+ @results = []
+
+ if @verbose
+ @start_time = Time.now
+ message @start_time
+ @execs.each_with_index{|(path, label, version), i|
+ message "target #{i}: " + (label == version ? "#{label}" : "#{label} (#{version})") + " at \"#{path}\""
+ }
+ message "measure target: #{@measure_target}"
+ end
+ end
+
+ def adjusted_results name, results
+ s = nil
+ results.each_with_index{|e, i|
+ r = e.min
+ case name
+ when /^vm1_/
+ if @loop_wl1
+ r -= @loop_wl1[i]
+ r = 0 if r < 0
+ s = '*'
+ end
+ when /^vm2_/
+ if @loop_wl2
+ r -= @loop_wl2[i]
+ r = 0 if r < 0
+ s = '*'
+ end
+ end
+ yield r
+ }
+ s
+ end
+
+ def show_results
+ case @opt[:format]
+ when :tsv
+ strformat = "\t%1$s"
+ numformat = "\t%1$*2$.3f"
+ minwidth = 0
+ name_width = 0
+ when :markdown
+ markdown = true
+ strformat = "|%1$-*2$s"
+ numformat = "|%1$*2$.3f"
+ when :plain
+ strformat = " %1$-*2$s"
+ numformat = " %1$*2$.3f"
+ end
+
+ name_width ||= @results.map {|v, result|
+ v.size + (case v; when /^vm1_/; @loop_wl1; when /^vm2_/; @loop_wl2; end ? 1 : 0)
+ }.max
+ minwidth ||= 7
+ width = @execs.map{|(_, v)| [v.size, minwidth].max}
+
+ output
+
+ if @verbose
+ message '-----------------------------------------------------------'
+ message 'raw data:'
+ message
+ message PP.pp(@results, "", 79)
+ message
+ message "Elapsed time: #{Time.now - @start_time} (sec)"
+ end
+
+ if rawdata_output = @opt[:rawdata_output]
+ h = {}
+ h[:cpuinfo] = File.read('/proc/cpuinfo') if File.exist?('/proc/cpuinfo')
+ h[:executables] = @execs
+ h[:results] = @results
+ if (type = File.extname(rawdata_output)).empty?
+ type = rawdata_output
+ rawdata_output = @output.path.sub(/\.[^.\/]+\z/, '') << '.' << rawdata_output
+ end
+ case type
+ when 'yaml'
+ require 'yaml'
+ h = YAML.dump(h)
+ when 'json'
+ require 'json'
+ h = JSON.pretty_generate(h)
+ else
+ require 'pp'
+ h = h.pretty_inspect
+ end
+ open(rawdata_output, 'w') {|f| f.puts h}
+ end
+
+ output '-----------------------------------------------------------'
+ output 'benchmark results:'
+
+ if @verbose and @repeat > 1
+ output "minimum results in each #{@repeat} measurements."
+ end
+
+ output({
+ real: "Execution time (sec)",
+ peak: "Memory usage (peak) (B)",
+ size: "Memory usage (last size) (B)",
+ }[@measure_target])
+ output if markdown
+ output ["name".ljust(name_width), @execs.map.with_index{|(_, v), i| sprintf(strformat, v, width[i])}].join("").rstrip
+ output ["-"*name_width, width.map{|n|":".rjust(n, "-")}].join("|") if markdown
+ @results.each{|v, result|
+ rets = []
+ s = adjusted_results(v, result){|r|
+ rets << sprintf(numformat, r, width[rets.size])
+ }
+ v += s if s
+ output [v.ljust(name_width), rets].join("")
+ }
+
+ if @execs.size > 1
+ output
+ output({
+ real: "Speedup ratio: compare with the result of `#{@execs[0][1]}' (greater is better)",
+ peak: "Memory consuming ratio (peak) with the result of `#{@execs[0][1]}' (greater is better)",
+ size: "Memory consuming ratio (size) with the result of `#{@execs[0][1]}' (greater is better)",
+ }[@measure_target])
+ output if markdown
+ output ["name".ljust(name_width), @execs[1..-1].map.with_index{|(_, v), i| sprintf(strformat, v, width[i])}].join("").rstrip
+ output ["-"*name_width, width[1..-1].map{|n|":".rjust(n, "-")}].join("|") if markdown
+ @results.each{|v, result|
+ rets = []
+ first_value = nil
+ s = adjusted_results(v, result){|r|
+ if first_value
+ if r == 0
+ rets << "Error"
+ else
+ rets << sprintf(numformat, first_value/Float(r), width[rets.size+1])
+ end
+ else
+ first_value = r
+ end
+ }
+ v += s if s
+ output [v.ljust(name_width), rets].join("")
+ }
+ end
+
+ if @opt[:output]
+ output
+ output "Log file: #{@opt[:output]}"
+ end
+ end
+
+ def files
+ flag = {}
+ @files = Dir.glob(File.join(@dir, 'bm*.rb')).map{|file|
+ next if @pattern && /#{@pattern}/ !~ File.basename(file)
+ next if @exclude && /#{@exclude}/ =~ File.basename(file)
+ case file
+ when /bm_(vm[12])_/, /bm_loop_(whileloop2?).rb/
+ flag[$1] = true
+ end
+ file
+ }.compact
+
+ if flag['vm1'] && !flag['whileloop']
+ @files << File.join(@dir, 'bm_loop_whileloop.rb')
+ elsif flag['vm2'] && !flag['whileloop2']
+ @files << File.join(@dir, 'bm_loop_whileloop2.rb')
+ end
+
+ @files.sort!
+ progress_message "total: #{@files.size * @repeat} trial(s) (#{@repeat} trial(s) for #{@files.size} benchmark(s))\n"
+ @files
+ end
+
+ def run
+ files.each_with_index{|file, i|
+ @i = i
+ r = measure_file(file)
+
+ if /bm_loop_whileloop.rb/ =~ file
+ @loop_wl1 = r[1].map{|e| e.min}
+ elsif /bm_loop_whileloop2.rb/ =~ file
+ @loop_wl2 = r[1].map{|e| e.min}
+ end
+ }
+ end
+
+ def measure_file file
+ name = File.basename(file, '.rb').sub(/^bm_/, '')
+ prepare_file = File.join(File.dirname(file), "prepare_#{name}.rb")
+ load prepare_file if FileTest.exist?(prepare_file)
+
+ if @verbose
+ output
+ output '-----------------------------------------------------------'
+ output name
+ output
+ output File.read(file)
+ output
+ end
+
+ result = [name]
+ result << @execs.map{|(e, v)|
+ (0...@repeat).map{
+ message_print "#{v}\t"
+ progress_message '.'
+
+ m = measure(e, file)
+ message "#{m}"
+ m
+ }
+ }
+ @results << result
+ result
+ end
+
+ unless defined?(File::NULL)
+ if File.exist?('/dev/null')
+ File::NULL = '/dev/null'
+ end
+ end
+
+ def measure executable, file
+ case @measure_target
+ when :real
+ cmd = "#{executable} #{@ruby_arg} #{file}"
+ m = Benchmark.measure{
+ system(cmd, out: File::NULL)
+ }
+ result = m.real
+ when :peak, :size
+ tmp = Tempfile.new("benchmark-memory-wrapper-data")
+ wrapper = "#{File.join(__dir__, 'memory_wrapper.rb')} #{tmp.path} #{@measure_target}"
+ cmd = "#{executable} #{@ruby_arg} #{wrapper} #{file}"
+ system(cmd, out: File::NULL)
+ result = tmp.read.to_i
+ tmp.close
+ else
+ raise "unknown measure target"
+ end
+
+ if $? != 0
+ raise $?.inspect if $? && $?.signaled?
+ output "\`#{cmd}\' exited with abnormal status (#{$?})"
+ 0
+ else
+ result
+ end
+ end
+end
+
+if __FILE__ == $0
+ opt = {
+ :execs => [],
+ :dir => File.dirname(__FILE__),
+ :repeat => 1,
+ :measure_target => :real,
+ :output => nil,
+ :raw_output => nil,
+ :format => :tsv,
+ }
+ formats = {
+ :tsv => ".tsv",
+ :markdown => ".md",
+ :plain => ".txt",
+ }
+
+ parser = OptionParser.new{|o|
+ o.on('-e', '--executables [EXECS]',
+ "Specify benchmark one or more targets (e1::path1; e2::path2; e3::path3;...)"){|e|
+ e.split(/;/).each{|path|
+ opt[:execs] << path
+ }
+ }
+ o.on('--rbenv [VERSIONS]', 'Specify benchmark targets with rbenv version (vX.X.X;vX.X.X;...)'){|v|
+ v.split(/;/).each{|version|
+ opt[:execs] << "#{version}::#{`RBENV_VERSION='#{version}' rbenv which ruby`.rstrip}"
+ }
+ }
+ o.on('-d', '--directory [DIRECTORY]', "Benchmark suites directory"){|d|
+ opt[:dir] = d
+ }
+ o.on('-p', '--pattern [PATTERN]', "Benchmark name pattern"){|p|
+ opt[:pattern] = p
+ }
+ o.on('-x', '--exclude [PATTERN]', "Benchmark exclude pattern"){|e|
+ opt[:exclude] = e
+ }
+ o.on('-r', '--repeat-count [NUM]', "Repeat count"){|n|
+ opt[:repeat] = n.to_i
+ }
+ o.on('-o', '--output-file [FILE]', "Output file"){|f|
+ opt[:output] = f
+ }
+ o.on('--ruby-arg [ARG]', "Optional argument for ruby"){|a|
+ opt[:ruby_arg] = a
+ }
+ o.on('--measure-target [TARGET]', 'real (execution time), peak, size (memory)'){|mt|
+ opt[:measure_target] = mt.to_sym
+ }
+ o.on('--rawdata-output [FILE]', 'output rawdata'){|r|
+ opt[:rawdata_output] = r
+ }
+ o.on('--load-rawdata=FILE', 'input rawdata'){|r|
+ opt[:rawdata_input] = r
+ }
+ o.on('-f', "--format=FORMAT", "output format (#{formats.keys.join(",")})", formats.keys){|r|
+ opt[:format] = r
+ }
+ o.on('-v', '--verbose'){|v|
+ opt[:verbose] = v
+ }
+ o.on('-q', '--quiet', "Run without notify information except result table."){|q|
+ opt[:quiet] = q
+ opt[:verbose] = false
+ }
+ }
+
+ parser.parse!(ARGV)
+
+ if input = opt[:rawdata_input]
+ b = open(input) {|f|
+ BenchmarkDriver.load(f, File.extname(input)[1..-1], opt)
+ }
+ b.show_results
+ else
+ opt[:output] ||= "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}#{formats[opt[:format]]}"
+ BenchmarkDriver.benchmark(opt)
+ end
+end
+
diff --git a/benchmark/enum_lazy_flat_map.yml b/benchmark/enum_lazy_flat_map.yml
deleted file mode 100644
index 0ee390a441..0000000000
--- a/benchmark/enum_lazy_flat_map.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-prelude: |
- num = (1..).lazy.take(100)
- ary2 = [[1,2]].cycle.lazy.take(10)
- ary10 = [[*1..10]].cycle.lazy.take(10)
- ary20 = [[*1..20]].cycle.lazy.take(10)
- ary50 = [[*1..50]].cycle.lazy.take(10)
- ary100 = [[*1..100]].cycle.lazy.take(10)
-
-benchmark:
- num3: num.flat_map {|x| x}.take(3).to_a
- num10: num.flat_map {|x| x}.take(3).to_a
- ary2: ary2.flat_map {|x| x}.take(3).to_a
- ary10: ary10.flat_map {|x| x}.take(3).to_a
- ary20: ary20.flat_map {|x| x}.take(3).to_a
- ary50: ary50.flat_map {|x| x}.take(3).to_a
- ary100: ary100.flat_map {|x| x}.take(3).to_a
diff --git a/benchmark/enum_lazy_grep_v_100.rb b/benchmark/enum_lazy_grep_v_100.rb
deleted file mode 100644
index 8832392e65..0000000000
--- a/benchmark/enum_lazy_grep_v_100.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-grep_data = (1..10).to_a * 1000
-N = 100
-enum = grep_data.lazy.grep_v(->(i){i == 0}).grep_v(->(i){i == 0})
-N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_grep_v_20.rb b/benchmark/enum_lazy_grep_v_20.rb
deleted file mode 100644
index 329509fa8f..0000000000
--- a/benchmark/enum_lazy_grep_v_20.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-grep_data = (1..10).to_a * 1000
-N = 100
-enum = grep_data.lazy.grep_v(->(i){i > 2}).grep_v(->(i){i > 2})
-N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_grep_v_50.rb b/benchmark/enum_lazy_grep_v_50.rb
deleted file mode 100644
index 02ea4d4e71..0000000000
--- a/benchmark/enum_lazy_grep_v_50.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-grep_data = (1..10).to_a * 1000
-N = 100
-enum = grep_data.lazy.grep_v(->(i){i > 5}).grep_v(->(i){i > 5})
-N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_uniq_100.rb b/benchmark/enum_lazy_uniq_100.rb
deleted file mode 100644
index 2e6434d9c4..0000000000
--- a/benchmark/enum_lazy_uniq_100.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-uniq_data = (1..10_000).to_a
-N = 100
-enum = uniq_data.lazy.uniq {|i| i % 10000}.uniq {|i| i % 10000}
-N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_uniq_20.rb b/benchmark/enum_lazy_uniq_20.rb
deleted file mode 100644
index 75e6398fee..0000000000
--- a/benchmark/enum_lazy_uniq_20.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-uniq_data = (1..10_000).to_a
-N = 100
-enum = uniq_data.lazy.uniq {|i| i % 2000}.uniq {|i| i % 2000}
-N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_uniq_50.rb b/benchmark/enum_lazy_uniq_50.rb
deleted file mode 100644
index 59a39b78ff..0000000000
--- a/benchmark/enum_lazy_uniq_50.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-uniq_data = (1..10_000).to_a
-N = 100
-enum = uniq_data.lazy.uniq {|i| i % 5000}.uniq {|i| i % 5000}
-N.times {enum.each {}}
diff --git a/benchmark/enum_lazy_zip.yml b/benchmark/enum_lazy_zip.yml
deleted file mode 100644
index 4566ff0261..0000000000
--- a/benchmark/enum_lazy_zip.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-prelude: |
- a = (1..3).lazy
- b = a.map {|x| x}
-
-benchmark:
- first_ary: a.zip(["a", "b", "c"]).first
- first_nonary: a.zip("a".."c").first
- first_noarg: a.zip.first
-
- take3_ary: a.zip(["a", "b", "c"]).take(3).force
- take3_nonary: a.zip("a".."c").take(3).force
- take3_noarg: a.zip.take(3).force
-
- chain-first_ary: b.zip(["a", "b", "c"]).first
- chain-first_nonary: b.zip("a".."c").first
- chain-first_noarg: b.zip.first
-
- chain-take3_ary: b.zip(["a", "b", "c"]).take(3).force
- chain-take3_nonary: b.zip("a".."c").take(3).force
- chain-take3_noarg: b.zip.take(3).force
-
- block: a.zip("a".."c") {|x, y| [x, y]}
diff --git a/benchmark/enum_minmax.yml b/benchmark/enum_minmax.yml
deleted file mode 100644
index 9d01731abb..0000000000
--- a/benchmark/enum_minmax.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-prelude: |
- set2 = 2.times.to_a.shuffle.to_set
- set10 = 10.times.to_a.shuffle.to_set
- set100 = 100.times.to_a.shuffle.to_set
- set1000 = 1000.times.to_a.shuffle.to_set
- set10000 = 10000.times.to_a.shuffle.to_set
-
-benchmark:
- set2.min: set2.min
- set10.min: set10.min
- set100.min: set100.min
- set1000.min: set1000.min
- set10000.min: set10000.min
- set2.max: set2.max
- set10.max: set10.max
- set100.max: set100.max
- set1000.max: set1000.max
- set10000.max: set10000.max
- set2.minmax: set2.minmax
- set10.minmax: set10.minmax
- set100.minmax: set100.minmax
- set1000.minmax: set1000.minmax
- set10000.minmax: set10000.minmax
-
-loop_count: 10000
diff --git a/benchmark/enum_sort.yml b/benchmark/enum_sort.yml
deleted file mode 100644
index 6f26e748c6..0000000000
--- a/benchmark/enum_sort.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-prelude: |
- set2 = 2.times.to_a.shuffle.to_set
- set10 = 10.times.to_a.shuffle.to_set
- set100 = 100.times.to_a.shuffle.to_set
- set1000 = 1000.times.to_a.shuffle.to_set
- set10000 = 10000.times.to_a.shuffle.to_set
-
-benchmark:
- set2.sort_by: set2.sort_by { 0 }
- set10.sort_by: set10.sort_by { 0 }
- set100.sort_by: set100.sort_by { 0 }
- set1000.sort_by: set1000.sort_by { 0 }
- set10000.sort_by: set10000.sort_by { 0 }
-
-loop_count: 10000
diff --git a/benchmark/enum_tally.yml b/benchmark/enum_tally.yml
deleted file mode 100644
index edd2e040a0..0000000000
--- a/benchmark/enum_tally.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-prelude: |
- list = ("aaa".."zzz").to_a*10
-benchmark:
- tally: list.tally
diff --git a/benchmark/erb_escape_html.yml b/benchmark/erb_escape_html.yml
deleted file mode 100644
index ca28d756e7..0000000000
--- a/benchmark/erb_escape_html.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-prelude: |
- # frozen_string_literal: true
- require 'erb'
-benchmark:
- - script: ERB::Util.html_escape("")
- loop_count: 20000000
- - script: ERB::Util.html_escape("abcde")
- loop_count: 20000000
- - script: ERB::Util.html_escape("abcd<")
- loop_count: 20000000
- - script: ERB::Util.html_escape("'&\"<>")
- loop_count: 5000000
- - prelude: long_no_escape = "abcde" * 300
- script: ERB::Util.html_escape(long_no_escape)
- loop_count: 1000000
- - prelude: long_all_escape = "'&\"<>" * 10
- script: ERB::Util.html_escape(long_all_escape)
- loop_count: 1000000
- - prelude: | # http://example.com/
- example_html = <<~HTML
- <body>
- <div>
- <h1>Example Domain</h1>
- <p>This domain is established to be used for illustrative examples in documents. You may use this
- domain in examples without prior coordination or asking for permission.</p>
- <p><a href="http://www.iana.org/domains/example">More information...</a></p>
- </div>
- </body>
- HTML
- script: ERB::Util.html_escape(example_html)
- loop_count: 1000000
diff --git a/benchmark/erb_render.yml b/benchmark/erb_render.yml
deleted file mode 100644
index 15f6c3880b..0000000000
--- a/benchmark/erb_render.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-prelude: |
- require 'erb'
-
- data = <<erb
- <html>
- <head> <%= title %> </head>
- <body>
- <h1> <%= title %> </h1>
- <p>
- <%= content %>
- </p>
- </body>
- </html>
- erb
-
- title = "hello world!"
- content = "hello world!\n" * 10
-
- src = "def self.render(title, content); #{ERB.new(data).src}; end"
- mod = Module.new
- mod.instance_eval(src, "(ERB)")
-benchmark:
- erb_render: mod.render(title, content)
-loop_count: 1500000
diff --git a/benchmark/fiber_chain.yml b/benchmark/fiber_chain.yml
deleted file mode 100644
index a36c759f8e..0000000000
--- a/benchmark/fiber_chain.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-prelude: |
- def make_link(previous)
- Fiber.new do
- while message = previous.resume
- Fiber.yield(message)
- end
- end
- end
-
- def make_chain(length = 1000, &block)
- chain = Fiber.new(&block)
-
- (length - 1).times do
- chain = make_link(chain)
- end
-
- return chain
- end
-
- message = "Hello World!"
-
- chain = make_chain do
- while true
- Fiber.yield(message)
- end
- end
-benchmark:
- make_chain: |
- make_chain(100) do
- while true
- Fiber.yield(message)
- end
- end
- resume_chain: |
- chain.resume
-loop_count: 5000
diff --git a/benchmark/fiber_locals.yml b/benchmark/fiber_locals.yml
deleted file mode 100644
index 8588686477..0000000000
--- a/benchmark/fiber_locals.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- th = Thread.current
- th[:key] = :val
-benchmark:
- key?: th.key?(:key)
- []: th[:key]
- keys: th.keys
-loop_count: 1_000_000
diff --git a/benchmark/file_rename.rb b/benchmark/file_rename.rb
deleted file mode 100644
index bbb44aebac..0000000000
--- a/benchmark/file_rename.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-# rename file
-require 'tempfile'
-
-max = 100_000
-tmp = [ Tempfile.new('rename-a'), Tempfile.new('rename-b') ]
-a, b = tmp.map { |x| x.path }
-tmp.each { |t| t.close } # Windows can't rename files without closing them
-max.times do
- File.rename(a, b)
- File.rename(b, a)
-end
diff --git a/benchmark/float_methods.yml b/benchmark/float_methods.yml
deleted file mode 100644
index 56ea41effc..0000000000
--- a/benchmark/float_methods.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-prelude: |
- flo = 4.2
-benchmark:
- to_f: |
- flo.to_f
- abs: |
- flo.abs
- magnitude: |
- flo.magnitude
- -@: |
- -flo
- zero?: |
- flo.zero?
-loop_count: 20000000
diff --git a/benchmark/float_neg_posi.yml b/benchmark/float_neg_posi.yml
deleted file mode 100644
index 172db1bf6d..0000000000
--- a/benchmark/float_neg_posi.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- flo = 4.2
-benchmark:
- negative?: |
- flo.negative?
- positive?: |
- flo.positive?
-loop_count: 20000000
diff --git a/benchmark/float_to_s.yml b/benchmark/float_to_s.yml
deleted file mode 100644
index 0abae5cdb8..0000000000
--- a/benchmark/float_to_s.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- floats = [*0.0.step(1.0, 0.0001)]
-
-benchmark:
- to_s: floats.each {|f| f.to_s}
-
-loop_count: 1000
diff --git a/benchmark/gc/aobench.rb b/benchmark/gc/aobench.rb
index 275f58b924..2eed7abc83 100644
--- a/benchmark/gc/aobench.rb
+++ b/benchmark/gc/aobench.rb
@@ -1 +1 @@
-require_relative '../app_aobench'
+require_relative '../bm_app_aobench.rb'
diff --git a/benchmark/gc/binary_trees.rb b/benchmark/gc/binary_trees.rb
index 83347cdd20..af8ea722aa 100644
--- a/benchmark/gc/binary_trees.rb
+++ b/benchmark/gc/binary_trees.rb
@@ -1 +1 @@
-require_relative '../so_binary_trees'
+require_relative '../bm_so_binary_trees.rb'
diff --git a/benchmark/gc/gcbench.rb b/benchmark/gc/gcbench.rb
index 23d0b91c6c..09a404466a 100644
--- a/benchmark/gc/gcbench.rb
+++ b/benchmark/gc/gcbench.rb
@@ -3,12 +3,11 @@ require 'pp'
require 'optparse'
$list = true
-$gcprof = false
+$gcprof = true
opt = OptionParser.new
opt.on('-q'){$list = false}
opt.on('-d'){$gcprof = false}
-opt.on('-p'){$gcprof = true}
opt.parse!(ARGV)
script = File.join(File.dirname(__FILE__), ARGV.shift)
diff --git a/benchmark/gc/pentomino.rb b/benchmark/gc/pentomino.rb
index 8ebdff7d1d..94ba74be89 100644
--- a/benchmark/gc/pentomino.rb
+++ b/benchmark/gc/pentomino.rb
@@ -1 +1 @@
-require_relative '../app_pentomino'
+require_relative '../bm_app_pentomino.rb'
diff --git a/benchmark/hash_aref_array.rb b/benchmark/hash_aref_array.rb
deleted file mode 100644
index ac7a683d95..0000000000
--- a/benchmark/hash_aref_array.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-h = {}
-arrays = (0..99).each_slice(10).to_a
-#STDERR.puts arrays.inspect
-arrays.each { |s| h[s] = s }
-200_000.times { arrays.each { |s| h[s] } }
diff --git a/benchmark/hash_defaults.yml b/benchmark/hash_defaults.yml
deleted file mode 100644
index 833f10e1c7..0000000000
--- a/benchmark/hash_defaults.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-prelude: |
- h = Hash.new { :foo }
-benchmark:
- default_aref: h[1]
- default_method: h.default(1)
-loop_count: 1000000
diff --git a/benchmark/hash_dup.yml b/benchmark/hash_dup.yml
deleted file mode 100644
index 65f521ec94..0000000000
--- a/benchmark/hash_dup.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- small_hash = { a: 1 }
- larger_hash = 20.times.map { |i| [('a'.ord + i).chr.to_sym, i] }.to_h
-
-benchmark:
- dup_small: small_hash.dup
- dup_larger: larger_hash.dup
-loop_count: 10000
diff --git a/benchmark/hash_first.yml b/benchmark/hash_first.yml
deleted file mode 100644
index c26df1a7ed..0000000000
--- a/benchmark/hash_first.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-prelude: |
- hash1 = 1_000_000.times.to_h { [rand, true]}
- hash2 = hash1.dup
- hash2.keys[1..100_000].each { hash2.delete _1 }
- hash2.delete hash2.first[0]
-
-benchmark:
- hash1: hash1.first
- hash2: hash2.first
-
-loop_count: 100_000
diff --git a/benchmark/hash_literal_small2.rb b/benchmark/hash_literal_small2.rb
deleted file mode 100644
index c188529260..0000000000
--- a/benchmark/hash_literal_small2.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-# frozen_string_literal: true
-
-1_000_000.times.map { { "foo" => "bar", "bar" => "baz" } }
diff --git a/benchmark/hash_literal_small4.rb b/benchmark/hash_literal_small4.rb
deleted file mode 100644
index 739f71b5b0..0000000000
--- a/benchmark/hash_literal_small4.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-# frozen_string_literal: true
-
-1_000_000.times.map { { "foo" => "bar", "bar" => "baz", "baz" => "lol", "lol" => "lgtm" } }
diff --git a/benchmark/hash_literal_small8.rb b/benchmark/hash_literal_small8.rb
deleted file mode 100644
index 53d80af535..0000000000
--- a/benchmark/hash_literal_small8.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-# frozen_string_literal: true
-
-1_000_000.times.map { { "foo" => "bar", "bar" => "baz", "baz" => "lol", "lol" => "lgtm", "lgtm" => "nope", "nope" => "ok", "ok" => "again", "again" => "wait" } }
diff --git a/benchmark/io_write.rb b/benchmark/io_write.rb
deleted file mode 100644
index cdb409948b..0000000000
--- a/benchmark/io_write.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'benchmark'
-
-i, o = IO.pipe
-o.sync = true
-
-DOT = ".".freeze
-
-chunks = 100_000.times.collect{DOT}
-
-thread = Thread.new do
- while i.read(1024)
- end
-end
-
-100.times do
- o.write(*chunks)
-end
-
-o.close
-thread.join
diff --git a/benchmark/irb_color.yml b/benchmark/irb_color.yml
deleted file mode 100644
index ebdc8d7e8b..0000000000
--- a/benchmark/irb_color.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-prelude: |
- require 'irb/color'
- code = <<~'CODE'
- def self.foo # bar
- :"erb #{ERB.new("<%= self %>", trim_mode: ?-).result}"
- end
- CODE
-benchmark:
- irb_color_complete: |
- IRB::Color.colorize_code(code, complete: true)
- irb_color_incomplete: |
- IRB::Color.colorize_code(code, complete: false)
-loop_count: 2000000
diff --git a/benchmark/irb_exec.yml b/benchmark/irb_exec.yml
deleted file mode 100644
index 28933f8b38..0000000000
--- a/benchmark/irb_exec.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-prelude: |
- # frozen_string_literal: true
- require 'rbconfig'
- irb_f = [File.join(File.dirname(RbConfig.ruby), 'irb'), '-f']
-benchmark:
- irb_exec: |
- IO.popen(irb_f, 'w') do |io|
- io.write('exit')
- end
-loop_count: 30
diff --git a/benchmark/iseq_load_from_binary.yml b/benchmark/iseq_load_from_binary.yml
deleted file mode 100644
index 7e9d73bdd4..0000000000
--- a/benchmark/iseq_load_from_binary.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-prelude: |
- symbol = RubyVM::InstructionSequence.compile(":foo; :bar; :baz; :egg; :spam").to_binary
-
- define_method = RubyVM::InstructionSequence.compile(%{
- def foo; end
- def bar; end
- def baz; end
- def egg; end
- def spam; end
- }).to_binary
-
- all = RubyVM::InstructionSequence.compile(%{
- module Foo; def foo; :foo; end; end
- module Bar; def bar; :bar; end; end
- module Baz; def baz; :baz; end; end
- class Egg; def egg; :egg; end; end
- class Spaml; def spam; :spam; end; end
- }).to_binary
-
-benchmark:
- symbol: RubyVM::InstructionSequence.load_from_binary(symbol)
- define_method: RubyVM::InstructionSequence.load_from_binary(define_method)
- all: RubyVM::InstructionSequence.load_from_binary(all)
-
-loop_count: 100_000
diff --git a/benchmark/ivar_extend.yml b/benchmark/ivar_extend.yml
deleted file mode 100644
index eb9ee923f5..0000000000
--- a/benchmark/ivar_extend.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-prelude: |
- class Embedded
- def initialize
- @a = 1
- @b = 1
- @c = 1
- end
- end
-
- class Extended
- def initialize
- @a = 1
- @b = 1
- @c = 1
- @d = 1
- @e = 1
- @f = 1
- end
- end
-benchmark:
- embedded: Embedded.new
- extended: Extended.new
-loop_count: 20_000_000
diff --git a/benchmark/kernel_clone.yml b/benchmark/kernel_clone.yml
deleted file mode 100644
index 069b23abcd..0000000000
--- a/benchmark/kernel_clone.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-prelude: "object = Object.new"
-benchmark:
- clone: "object.clone"
- clone_true: "object.clone(freeze: true)"
- clone_false: "object.clone(freeze: false)"
-loop_count: 10000
diff --git a/benchmark/kernel_float.yml b/benchmark/kernel_float.yml
deleted file mode 100644
index 215f6750fc..0000000000
--- a/benchmark/kernel_float.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-benchmark:
- float: "Float(42)"
- float_true: "Float(42, exception: true)"
- float_false: "Float(42, exception: false)"
-loop_count: 10000
diff --git a/benchmark/kernel_tap.yml b/benchmark/kernel_tap.yml
deleted file mode 100644
index 4dcbb31b4d..0000000000
--- a/benchmark/kernel_tap.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-prelude: |
- obj = Object.new
- x = nil
-benchmark:
- kernel_tap: obj.tap { |o| x = o }
-loop_count: 20000000
diff --git a/benchmark/kernel_then.yml b/benchmark/kernel_then.yml
deleted file mode 100644
index 85f7341e33..0000000000
--- a/benchmark/kernel_then.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-benchmark:
- kernel_then: 1.then { |i| i + 1 }
- kernel_then_enum: 1.then
- kernel_yield_self: 1.yield_self { |i| i + 1 }
- kernel_yield_self_enum: 1.yield_self
-loop_count: 20000000
diff --git a/benchmark/keyword_arguments.yml b/benchmark/keyword_arguments.yml
deleted file mode 100644
index fce6bce0b8..0000000000
--- a/benchmark/keyword_arguments.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-prelude: |
- h = {a: 1}
- def kw(a: 1) a end
- def kws(**kw) kw end
-benchmark:
- kw_to_kw: "kw(a: 1)"
- kw_splat_to_kw: "kw(**h)"
- kw_to_kw_splat: "kws(a: 1)"
- kw_splat_to_kw_splat: "kws(**h)"
- kw_and_splat_to_kw: "kw(a: 1, **h)"
- kw_splats_to_kw: "kw(**h, **h)"
- kw_and_splat_to_kw_splat: "kws(a: 1, **h)"
- kw_splats_to_kw_splat: "kws(**h, **h)"
diff --git a/benchmark/lib/benchmark_driver/output/driver.rb b/benchmark/lib/benchmark_driver/output/driver.rb
deleted file mode 100644
index d22236e9fb..0000000000
--- a/benchmark/lib/benchmark_driver/output/driver.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'benchmark_driver/output/simple'
-
-# This replicates the legacy benchmark/driver.rb behavior.
-class BenchmarkDriver::Output::Driver < BenchmarkDriver::Output::Simple
- def initialize(*)
- super
- @stdout = $stdout
- @strio = StringIO.new
- $stdout = IOMultiplexer.new(@stdout, @strio)
- end
-
- def with_benchmark(*)
- super
- ensure
- logfile = "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}.log"
- puts "\nLog file: #{logfile}"
-
- $stdout = @stdout
- File.write(logfile, @strio.tap(&:rewind).read)
- end
-
- class IOMultiplexer
- def initialize(io1, io2)
- @io1 = io1
- @io2 = io2
- end
-
- [:write, :sync, :sync=, :puts, :print, :flush].each do |method|
- define_method(method) do |*args|
- @io1.send(method, *args)
- @io2.send(method, *args)
- end
- end
- end
- private_constant :IOMultiplexer
-end
diff --git a/benchmark/lib/benchmark_driver/runner/cstime.rb b/benchmark/lib/benchmark_driver/runner/cstime.rb
deleted file mode 100644
index 3c3453e527..0000000000
--- a/benchmark/lib/benchmark_driver/runner/cstime.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'benchmark_driver/runner/total'
-
-class BenchmarkDriver::Runner::Cstime < BenchmarkDriver::Runner::Total
- METRIC = BenchmarkDriver::Metric.new(name: 'cstime', unit: 's', larger_better: false)
-
- # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
- Job = Class.new(BenchmarkDriver::DefaultJob)
- # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
- JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
-
- private
-
- # Overriding BenchmarkDriver::Runner::Total#metric
- def metric
- METRIC
- end
-
- # Overriding BenchmarkDriver::Runner::Total#target
- def target
- :cstime
- end
-end
diff --git a/benchmark/lib/benchmark_driver/runner/cutime.rb b/benchmark/lib/benchmark_driver/runner/cutime.rb
deleted file mode 100644
index e139962ef2..0000000000
--- a/benchmark/lib/benchmark_driver/runner/cutime.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'benchmark_driver/runner/total'
-
-class BenchmarkDriver::Runner::Cutime < BenchmarkDriver::Runner::Total
- METRIC = BenchmarkDriver::Metric.new(name: 'cutime', unit: 's', larger_better: false)
-
- # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
- Job = Class.new(BenchmarkDriver::DefaultJob)
- # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
- JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
-
- private
-
- # Overriding BenchmarkDriver::Runner::Total#metric
- def metric
- METRIC
- end
-
- # Overriding BenchmarkDriver::Runner::Total#target
- def target
- :cutime
- end
-end
diff --git a/benchmark/lib/benchmark_driver/runner/peak.rb b/benchmark/lib/benchmark_driver/runner/peak.rb
deleted file mode 100644
index d04f2e51ff..0000000000
--- a/benchmark/lib/benchmark_driver/runner/peak.rb
+++ /dev/null
@@ -1,151 +0,0 @@
-require 'benchmark_driver/struct'
-require 'benchmark_driver/metric'
-require 'benchmark_driver/default_job'
-require 'benchmark_driver/default_job_parser'
-require 'tempfile'
-
-class BenchmarkDriver::Runner::Peak
- METRIC = BenchmarkDriver::Metric.new(
- name: 'Peak memory usage', unit: 'bytes', larger_better: false, worse_word: 'larger',
- )
-
- # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
- Job = Class.new(BenchmarkDriver::DefaultJob)
- # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
- JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
-
- # @param [BenchmarkDriver::Config::RunnerConfig] config
- # @param [BenchmarkDriver::Output] output
- # @param [BenchmarkDriver::Context] contexts
- def initialize(config:, output:, contexts:)
- @config = config
- @output = output
- @contexts = contexts
- end
-
- # This method is dynamically called by `BenchmarkDriver::JobRunner.run`
- # @param [Array<BenchmarkDriver::Runner::Peak::Job>] jobs
- def run(jobs)
- if jobs.any? { |job| job.loop_count.nil? }
- jobs = jobs.map do |job|
- job.loop_count ? job : Job.new(job.to_h.merge(loop_count: 1))
- end
- end
-
- @output.with_benchmark do
- jobs.each do |job|
- @output.with_job(name: job.name) do
- job.runnable_contexts(@contexts).each do |context|
- value = BenchmarkDriver::Repeater.with_repeat(config: @config, larger_better: false) do
- run_benchmark(job, context: context)
- end
- @output.with_context(name: context.name, executable: context.executable, gems: context.gems, prelude: context.prelude) do
- @output.report(values: { metric => value }, loop_count: job.loop_count)
- end
- end
- end
- end
- end
- end
-
- private
-
- # @param [BenchmarkDriver::Runner::Ips::Job] job - loop_count is not nil
- # @param [BenchmarkDriver::Context] context
- # @return [BenchmarkDriver::Metrics]
- def run_benchmark(job, context:)
- benchmark = BenchmarkScript.new(
- preludes: [context.prelude, job.prelude],
- script: job.script,
- teardown: job.teardown,
- loop_count: job.loop_count,
- )
-
- memory_status = File.expand_path('../../../../tool/lib/memory_status', __dir__)
- Tempfile.open(['benchmark_driver-', '.rb']) do |f|
- with_script(benchmark.render) do |path|
- output = IO.popen([*context.executable.command, path, f.path, target, memory_status], &:read)
- if $?.success?
- Integer(f.read)
- else
- $stdout.print(output)
- BenchmarkDriver::Result::ERROR
- end
- end
- end
- end
-
- # Overridden by BenchmarkDriver::Runner::Size
- def target
- 'peak'
- end
-
- # Overridden by BenchmarkDriver::Runner::Size
- def metric
- METRIC
- end
-
- def with_script(script)
- if @config.verbose >= 2
- sep = '-' * 30
- $stdout.puts "\n\n#{sep}[Script begin]#{sep}\n#{script}#{sep}[Script end]#{sep}\n\n"
- end
-
- Tempfile.open(['benchmark_driver-', '.rb']) do |f|
- f.puts script
- f.close
- return yield(f.path)
- end
- end
-
- # @param [String] prelude
- # @param [String] script
- # @param [String] teardown
- # @param [Integer] loop_count
- BenchmarkScript = ::BenchmarkDriver::Struct.new(:preludes, :script, :teardown, :loop_count) do
- def render
- prelude = preludes.reject(&:nil?).reject(&:empty?).join("\n")
- <<-RUBY
-#{prelude}
-#{while_loop(script, loop_count)}
-#{teardown}
-
-result_file, target, memory_status = ARGV
-require_relative memory_status
-
-ms = Memory::Status.new
-case target.to_sym
-when :peak
- key = ms.respond_to?(:hwm) ? :hwm : :peak
-when :size
- key = ms.respond_to?(:rss) ? :rss : :size
-else
- raise('unexpected target: ' + target)
-end
-
-File.write(result_file, ms[key])
- RUBY
- end
-
- private
-
- def while_loop(content, times)
- if !times.is_a?(Integer) || times <= 0
- raise ArgumentError.new("Unexpected times: #{times.inspect}")
- end
-
- if times > 1
- <<-RUBY
-__bmdv_i = 0
-while __bmdv_i < #{times}
- #{content}
- __bmdv_i += 1
-end
- RUBY
- else
- content
- end
- end
- end
- private_constant :BenchmarkScript
-end
diff --git a/benchmark/lib/benchmark_driver/runner/ractor.rb b/benchmark/lib/benchmark_driver/runner/ractor.rb
deleted file mode 100644
index c730b8e4a5..0000000000
--- a/benchmark/lib/benchmark_driver/runner/ractor.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-require 'erb'
-
-# A runner to measure performance *inside* Ractor
-class BenchmarkDriver::Runner::Ractor < BenchmarkDriver::Runner::Ips
- # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
- Job = Class.new(BenchmarkDriver::DefaultJob) do
- attr_accessor :ractor
- end
-
- # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
- JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC]).extend(Module.new{
- def parse(ractor: 1, **kwargs)
- super(**kwargs).each do |job|
- job.ractor = ractor
- end
- end
- })
-
- private
-
- unless private_instance_methods.include?(:run_benchmark)
- raise "#run_benchmark is no longer defined in BenchmarkDriver::Runner::Ips"
- end
-
- # @param [BenchmarkDriver::Runner::Ips::Job] job - loop_count is not nil
- # @param [BenchmarkDriver::Context] context
- # @return [BenchmarkDriver::Metrics]
- def run_benchmark(job, context:)
- benchmark = BenchmarkScript.new(
- preludes: [context.prelude, job.prelude],
- script: job.script,
- teardown: job.teardown,
- loop_count: job.loop_count,
- )
-
- results = job.ractor.times.map do
- Tempfile.open('benchmark_driver_result')
- end
- duration = with_script(benchmark.render(results: results.map(&:path))) do |path|
- success = execute(*context.executable.command, path, exception: false)
- if success && ((value = results.map { |f| Float(f.read) }.max) > 0)
- value
- else
- BenchmarkDriver::Result::ERROR
- end
- end
- results.each(&:close)
-
- value_duration(
- loop_count: job.loop_count,
- duration: duration,
- )
- end
-
- # @param [String] prelude
- # @param [String] script
- # @param [String] teardown
- # @param [Integer] loop_count
- BenchmarkScript = ::BenchmarkDriver::Struct.new(:preludes, :script, :teardown, :loop_count) do
- # @param [String] result - A file to write result
- def render(results:)
- prelude = preludes.reject(&:nil?).reject(&:empty?).join("\n")
- ERB.new(<<-RUBY).result_with_hash(results: results)
-Warning[:experimental] = false
-# shareable-constant-value: experimental_everything
-#{prelude}
-
-if #{loop_count} == 1
- __bmdv_loop_before = 0
- __bmdv_loop_after = 0
-else
- __bmdv_loop_before = Time.new
- #{while_loop('', loop_count, id: 0)}
- __bmdv_loop_after = Time.new
-end
-
-__bmdv_ractors = []
-<% results.size.times do %>
-__bmdv_ractors << Ractor.new(__bmdv_loop_after - __bmdv_loop_before) { |__bmdv_loop_time|
- __bmdv_time = Time
- __bmdv_script_before = __bmdv_time.new
- #{while_loop(script, loop_count, id: 1)}
- __bmdv_script_after = __bmdv_time.new
-
- (__bmdv_script_after - __bmdv_script_before) - __bmdv_loop_time
-}
-<% end %>
-
-# Wait for all Ractors before executing code to write results
-__bmdv_ractors.map!(&:take)
-
-<% results.each do |result| %>
-File.write(<%= result.dump %>, __bmdv_ractors.shift)
-<% end %>
-
-#{teardown}
- RUBY
- end
-
- private
-
- # id is to prevent:
- # can not isolate a Proc because it accesses outer variables (__bmdv_i)
- def while_loop(content, times, id:)
- if !times.is_a?(Integer) || times <= 0
- raise ArgumentError.new("Unexpected times: #{times.inspect}")
- elsif times == 1
- return content
- end
-
- # TODO: execute in batch
- <<-RUBY
-__bmdv_i#{id} = 0
-while __bmdv_i#{id} < #{times}
- #{content}
- __bmdv_i#{id} += 1
-end
- RUBY
- end
- end
- private_constant :BenchmarkScript
-end
diff --git a/benchmark/lib/benchmark_driver/runner/size.rb b/benchmark/lib/benchmark_driver/runner/size.rb
deleted file mode 100644
index 1b31f901c7..0000000000
--- a/benchmark/lib/benchmark_driver/runner/size.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'benchmark_driver/runner/peak'
-
-# Actually the same as BenchmarkDriver::Runner::Memory
-class BenchmarkDriver::Runner::Size < BenchmarkDriver::Runner::Peak
- METRIC = BenchmarkDriver::Metric.new(
- name: 'Max resident set size', unit: 'bytes', larger_better: false, worse_word: 'larger',
- )
-
- # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
- Job = Class.new(BenchmarkDriver::DefaultJob)
- # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
- JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
-
- private
-
- # Overriding BenchmarkDriver::Runner::Peak#metric
- def metric
- METRIC
- end
-
- # Overriding BenchmarkDriver::Runner::Peak#target
- def target
- 'size'
- end
-end
diff --git a/benchmark/lib/benchmark_driver/runner/stime.rb b/benchmark/lib/benchmark_driver/runner/stime.rb
deleted file mode 100644
index 4577fb0bf8..0000000000
--- a/benchmark/lib/benchmark_driver/runner/stime.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'benchmark_driver/runner/total'
-
-class BenchmarkDriver::Runner::Stime < BenchmarkDriver::Runner::Total
- METRIC = BenchmarkDriver::Metric.new(name: 'stime', unit: 's', larger_better: false)
-
- # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
- Job = Class.new(BenchmarkDriver::DefaultJob)
- # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
- JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
-
- private
-
- # Overriding BenchmarkDriver::Runner::Total#metric
- def metric
- METRIC
- end
-
- # Overriding BenchmarkDriver::Runner::Total#target
- def target
- :stime
- end
-end
diff --git a/benchmark/lib/benchmark_driver/runner/total.rb b/benchmark/lib/benchmark_driver/runner/total.rb
deleted file mode 100644
index 64dc14f84e..0000000000
--- a/benchmark/lib/benchmark_driver/runner/total.rb
+++ /dev/null
@@ -1,137 +0,0 @@
-require 'benchmark_driver/struct'
-require 'benchmark_driver/metric'
-require 'benchmark_driver/default_job'
-require 'benchmark_driver/default_job_parser'
-require 'tempfile'
-
-class BenchmarkDriver::Runner::Total
- METRIC = BenchmarkDriver::Metric.new(name: 'Total time', unit: 's', larger_better: false)
-
- # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
- Job = Class.new(BenchmarkDriver::DefaultJob)
- # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
- JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
-
- # @param [BenchmarkDriver::Config::RunnerConfig] config
- # @param [BenchmarkDriver::Output] output
- # @param [BenchmarkDriver::Context] contexts
- def initialize(config:, output:, contexts:)
- @config = config
- @output = output
- @contexts = contexts
- end
-
- # This method is dynamically called by `BenchmarkDriver::JobRunner.run`
- # @param [Array<BenchmarkDriver::Runner::Total::Job>] jobs
- def run(jobs)
- if jobs.any? { |job| job.loop_count.nil? }
- raise 'missing loop_count is not supported in Ruby repository'
- end
-
- @output.with_benchmark do
- jobs.each do |job|
- @output.with_job(name: job.name) do
- job.runnable_contexts(@contexts).each do |context|
- duration = BenchmarkDriver::Repeater.with_repeat(config: @config, larger_better: false) do
- run_benchmark(job, context: context)
- end
- @output.with_context(name: context.name, executable: context.executable, gems: context.gems, prelude: context.prelude) do
- @output.report(values: { metric => duration }, duration: duration, loop_count: job.loop_count)
- end
- end
- end
- end
- end
- end
-
- private
-
- # @param [BenchmarkDriver::Runner::Ips::Job] job - loop_count is not nil
- # @param [BenchmarkDriver::Context] context
- # @return [BenchmarkDriver::Metrics]
- def run_benchmark(job, context:)
- benchmark = BenchmarkScript.new(
- preludes: [context.prelude, job.prelude],
- script: job.script,
- teardown: job.teardown,
- loop_count: job.loop_count,
- )
-
- Tempfile.open(['benchmark_driver-', '.rb']) do |f|
- with_script(benchmark.render(result: f.path, target: target)) do |path|
- IO.popen([*context.executable.command, path], &:read) # TODO: print stdout if verbose=2
- if $?.success?
- Float(f.read)
- else
- BenchmarkDriver::Result::ERROR
- end
- end
- end
- end
-
- # This method is overridden by some subclasses
- def metric
- METRIC
- end
-
- # This method is overridden by some subclasses
- def target
- :total
- end
-
- def with_script(script)
- if @config.verbose >= 2
- sep = '-' * 30
- $stdout.puts "\n\n#{sep}[Script begin]#{sep}\n#{script}#{sep}[Script end]#{sep}\n\n"
- end
-
- Tempfile.open(['benchmark_driver-', '.rb']) do |f|
- f.puts script
- f.close
- return yield(f.path)
- end
- end
-
- # @param [String] prelude
- # @param [String] script
- # @param [String] teardown
- # @param [Integer] loop_count
- BenchmarkScript = ::BenchmarkDriver::Struct.new(:preludes, :script, :teardown, :loop_count) do
- # @param [String] result - A file to write result
- def render(result:, target:)
- prelude = preludes.reject(&:nil?).reject(&:empty?).join("\n")
- <<-RUBY
-#{prelude}
-
-require 'benchmark'
-__bmdv_result = Benchmark.measure {
- #{while_loop(script, loop_count)}
-}
-
-#{teardown}
-
-File.write(#{result.dump}, __bmdv_result.#{target})
- RUBY
- end
-
- private
-
- def while_loop(content, times)
- if !times.is_a?(Integer) || times <= 0
- raise ArgumentError.new("Unexpected times: #{times.inspect}")
- elsif times == 1
- return content
- end
-
- # TODO: execute in batch
- <<-RUBY
-__bmdv_i = 0
-while __bmdv_i < #{times}
- #{content}
- __bmdv_i += 1
-end
- RUBY
- end
- end
- private_constant :BenchmarkScript
-end
diff --git a/benchmark/lib/benchmark_driver/runner/utime.rb b/benchmark/lib/benchmark_driver/runner/utime.rb
deleted file mode 100644
index b61d83a188..0000000000
--- a/benchmark/lib/benchmark_driver/runner/utime.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'benchmark_driver/runner/total'
-
-class BenchmarkDriver::Runner::Utime < BenchmarkDriver::Runner::Total
- METRIC = BenchmarkDriver::Metric.new(name: 'utime', unit: 's', larger_better: false)
-
- # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
- Job = Class.new(BenchmarkDriver::DefaultJob)
- # Dynamically fetched and used by `BenchmarkDriver::JobParser.parse`
- JobParser = BenchmarkDriver::DefaultJobParser.for(klass: Job, metrics: [METRIC])
-
- private
-
- # Overriding BenchmarkDriver::Runner::Total#metric
- def metric
- METRIC
- end
-
- # Overriding BenchmarkDriver::Runner::Total#target
- def target
- :utime
- end
-end
diff --git a/benchmark/lib/load.rb b/benchmark/lib/load.rb
deleted file mode 100644
index 31b770c484..0000000000
--- a/benchmark/lib/load.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-# How to use this file:
-# 1. write a `$(srcdir)/test.rb` like:
-=begin
-require_relative 'benchmark/lib/load'
-
-Benchmark.driver(repeat_count: 5){|x|
- x.executable name: 'clean-miniruby', command: %w'../clean-trunk/miniruby'
- x.executable name: 'modif-miniruby', command: %w'./miniruby'
-
- x.report %q{
- h = {a: 1, b: 2, c: 3, d: 4}
- }
-}
-=end
-#
-# 2. `make run`
-$:.unshift(File.join(__dir__, '../benchmark-driver/lib'))
-require 'benchmark_driver'
diff --git a/benchmark/loop_generator.rb b/benchmark/loop_generator.rb
deleted file mode 100644
index 6a3194b670..0000000000
--- a/benchmark/loop_generator.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-max = 6000000
-
-if defined? Fiber
- gen = (1..max).each
- loop do
- gen.next
- end
-else
- require 'generator'
- gen = Generator.new((0..max))
- while gen.next?
- gen.next
- end
-end
diff --git a/benchmark/make_fasta_output.rb b/benchmark/make_fasta_output.rb
new file mode 100644
index 0000000000..b6d787ae27
--- /dev/null
+++ b/benchmark/make_fasta_output.rb
@@ -0,0 +1,19 @@
+# prepare 'fasta.output'
+
+def prepare_fasta_output n
+ filebase = File.join(File.dirname($0), 'fasta.output')
+ script = File.join(File.dirname($0), 'bm_so_fasta.rb')
+ file = "#{filebase}.#{n}"
+
+ unless FileTest.exist?(file)
+ STDERR.puts "preparing #{file}"
+
+ open(file, 'w'){|f|
+ ARGV[0] = n
+ $stdout = f
+ load script
+ $stdout = STDOUT
+ }
+ end
+end
+
diff --git a/benchmark/marshal_dump_load_integer.yml b/benchmark/marshal_dump_load_integer.yml
deleted file mode 100644
index 78ebf823d2..0000000000
--- a/benchmark/marshal_dump_load_integer.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-prelude: |
- smallint_array = 1000.times.map { |x| x }
- bigint32_array = 1000.times.map { |x| x + 2**32 }
- bigint64_array = 1000.times.map { |x| x + 2**64 }
-
- smallint_dump = Marshal.dump(smallint_array)
- bigint32_dump = Marshal.dump(bigint32_array)
- bigint64_dump = Marshal.dump(bigint64_array)
-benchmark:
- marshal_dump_integer_small: |
- Marshal.dump(smallint_array)
- marshal_dump_integer_over_32_bit: |
- Marshal.dump(bigint32_array)
- marshal_dump_integer_over_64_bit: |
- Marshal.dump(bigint64_array)
- marshal_load_integer_small: |
- Marshal.load(smallint_dump)
- marshal_load_integer_over_32_bit: |
- Marshal.load(bigint32_dump)
- marshal_load_integer_over_64_bit: |
- Marshal.load(bigint64_dump)
-loop_count: 4000
diff --git a/benchmark/masgn.yml b/benchmark/masgn.yml
deleted file mode 100644
index 31cb8ee4a3..0000000000
--- a/benchmark/masgn.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-prelude: |
- a = [nil] * 3
- b = Class.new{attr_writer :a, :b, :c}.new
- c = d = e = f = g = h = i = nil
-benchmark:
- array2_2: "c = (a[0], a[1] = 1, 2)"
- array2_3: "c = (a[0], a[1] = 1, 2, 3)"
- array3_2: "c = (a[0], a[1], a[2] = 1, 2)"
- array3_3: "c = (a[0], a[1], a[2] = 1, 2, 3)"
- attr2_2: "c = (b.a, b.b = 1, 2)"
- attr2_3: "c = (b.a, b.b = 1, 2, 3)"
- attr3_2: "c = (b.a, b.b, b.c = 1, 2)"
- attr3_3: "c = (b.a, b.b, b.c = 1, 2, 3)"
- lvar2_2: "c = (d, e = 1, 2)"
- lvar2_3: "c = (d, e = 1, 2, 3)"
- lvar3_2: "c = (d, e, f = 1, 2)"
- lvar3_3: "c = (d, e, f = 1, 2, 3)"
- array2_2p: "(a[0], a[1] = 1, 2; nil)"
- array2_3p: "(a[0], a[1] = 1, 2, 3; nil)"
- array3_2p: "(a[0], a[1], a[2] = 1, 2; nil)"
- array3_3p: "(a[0], a[1], a[2] = 1, 2, 3; nil)"
- attr2_2p: "(b.a, b.b = 1, 2; nil)"
- attr2_3p: "(b.a, b.b = 1, 2, 3; nil)"
- attr3_2p: "(b.a, b.b, b.c = 1, 2; nil)"
- attr3_3p: "(b.a, b.b, b.c = 1, 2, 3; nil)"
- lvar2_2p: "(d, e = 1, 2; nil)"
- lvar2_3p: "(d, e = 1, 2, 3; nil)"
- lvar3_2p: "(d, e, f = 1, 2; nil)"
- lvar3_3p: "(d, e, f = 1, 2, 3; nil)"
- array2_2lv: "c = (a[0], a[1] = g, h)"
- array2_ilv: "c = (a[0], a[1] = g, h, i)"
- arrayi_2lv: "c = (a[0], a[1], a[2] = g, h)"
- arrayi_ilv: "c = (a[0], a[1], a[2] = g, h, i)"
- attr2_2lv: "c = (b.a, b.b = g, h)"
- attr2_ilv: "c = (b.a, b.b = g, h, i)"
- attri_2lv: "c = (b.a, b.b, b.c = g, h)"
- attri_ilv: "c = (b.a, b.b, b.c = g, h, i)"
- lvar2_2lv: "c = (d, e = g, h)"
- lvar2_ilv: "c = (d, e = g, h, i)"
- lvari_2lv: "c = (d, e, f = g, h)"
- lvari_ilv: "c = (d, e, f = g, h, i)"
- array2_2plv: "(a[0], a[1] = g, h; nil)"
- array2_iplv: "(a[0], a[1] = g, h, i; nil)"
- arrayi_2plv: "(a[0], a[1], a[2] = g, h; nil)"
- arrayi_iplv: "(a[0], a[1], a[2] = g, h, i; nil)"
- attr2_2plv: "(b.a, b.b = g, h; nil)"
- attr2_iplv: "(b.a, b.b = g, h, i; nil)"
- attri_2plv: "(b.a, b.b, b.c = g, h; nil)"
- attri_iplv: "(b.a, b.b, b.c = g, h, i; nil)"
- lvar2_2plv: "(d, e = g, h; nil)"
- lvar2_iplv: "(d, e = g, h, i; nil)"
- lvari_2plv: "(d, e, f = g, h; nil)"
- lvari_iplv: "(d, e, f = g, h, i; nil)"
diff --git a/benchmark/match_gt4.rb b/benchmark/match_gt4.rb
deleted file mode 100644
index ffda109912..0000000000
--- a/benchmark/match_gt4.rb
+++ /dev/null
@@ -1 +0,0 @@
-1000000.times { /(.)(.)(\d+)(\d)/.match("THX1138.") }
diff --git a/benchmark/match_small.rb b/benchmark/match_small.rb
deleted file mode 100644
index 3b743d484a..0000000000
--- a/benchmark/match_small.rb
+++ /dev/null
@@ -1 +0,0 @@
-1000000.times { 'haystack'.match(/hay/) }
diff --git a/benchmark/memory_wrapper.rb b/benchmark/memory_wrapper.rb
new file mode 100644
index 0000000000..3f4451a037
--- /dev/null
+++ b/benchmark/memory_wrapper.rb
@@ -0,0 +1,16 @@
+
+write_file, target, script_file = ARGV
+
+load(script_file)
+require_relative '../test/lib/memory_status'
+open(write_file, 'wb'){|f|
+ ms = Memory::Status.new
+ case target.to_sym
+ when :peak
+ key = ms.respond_to?(:hwm) ? :hwm : :peak
+ when :size
+ key = ms.respond_to?(:rss) ? :rss : :size
+ end
+
+ f.puts ms[key]
+}
diff --git a/benchmark/method_bind_call.yml b/benchmark/method_bind_call.yml
deleted file mode 100644
index 9e0e046ed4..0000000000
--- a/benchmark/method_bind_call.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-prelude: |
- named_module = Kernel
-
- module FakeName
- def self.name
- "NotMyame".freeze
- end
- end
-
- MOD_NAME = Module.instance_method(:name)
-
-benchmark:
- fastpath: MOD_NAME.bind_call(Kernel)
- slowpath: MOD_NAME.bind_call(FakeName)
-
-loop_count: 100_000
diff --git a/benchmark/module_eqq.yml b/benchmark/module_eqq.yml
deleted file mode 100644
index a561fb86dc..0000000000
--- a/benchmark/module_eqq.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-prelude: |
- class SimpleClass; end
- class MediumClass
- 10.times { include Module.new }
- end
- class LargeClass
- 100.times { include Module.new }
- end
- class HugeClass
- 300.times { include Module.new }
- end
- SimpleObj = SimpleClass.new
- MediumObj = MediumClass.new
- LargeObj = LargeClass.new
- HugeObj = HugeClass.new
-benchmark:
- simple_class_eqq_simple_obj: |
- SimpleClass === SimpleObj
- medium_class_eqq_simple_obj: |
- MediumClass === SimpleObj
- simple_class_eqq_medium_obj: |
- SimpleClass === MediumObj
- simple_class_eqq_large_obj: |
- SimpleClass === LargeObj
- simple_class_eqq_huge_obj: |
- SimpleClass === HugeObj
-loop_count: 20000000
diff --git a/benchmark/nil_p.yml b/benchmark/nil_p.yml
deleted file mode 100644
index 79ba4f2177..0000000000
--- a/benchmark/nil_p.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-prelude: |
- class Niller; def nil?; true; end; end
- xnil, notnil = nil, Object.new
- niller = Niller.new
-benchmark:
- - xnil.nil?
- - notnil.nil?
- - niller.nil?
-loop_count: 10000000
diff --git a/benchmark/nilclass.yml b/benchmark/nilclass.yml
deleted file mode 100644
index fba67a5f6a..0000000000
--- a/benchmark/nilclass.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-benchmark:
- to_i: |
- nil.to_i
- to_f: |
- nil.to_f
-loop_count: 100000
diff --git a/benchmark/num_zero_p.yml b/benchmark/num_zero_p.yml
deleted file mode 100644
index 2195963433..0000000000
--- a/benchmark/num_zero_p.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-benchmark:
- - 0.zero?
- - 1.zero?
- - 0r.zero?
- - 1r.zero?
- - 0i.zero?
- - 1i.zero?
-loop_count: 50000000
diff --git a/benchmark/numeric_methods.yml b/benchmark/numeric_methods.yml
deleted file mode 100644
index 1384902935..0000000000
--- a/benchmark/numeric_methods.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-prelude: |
- int = 42
- flo = 4.2
-benchmark:
- real?: |
- int.real?
- integer?: |
- flo.integer?
- finite?: |
- int.finite?
- infinite?: |
- int.infinite?
- integer_real: |
- int.real
- float_real: |
- flo.real
- integr_imag: |
- int.imag
- float_imag: |
- flo.imag
- integer_conj: |
- int.conj
- float_conj: |
- flo.conj
- integer_numerator: |
- int.numerator
- integer_denominator: |
- int.denominator
-loop_count: 20000000
diff --git a/benchmark/object_allocate.yml b/benchmark/object_allocate.yml
deleted file mode 100644
index 93ff463e41..0000000000
--- a/benchmark/object_allocate.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-prelude: |
- class Eight
- 8.times { include(Module.new) }
- end
- class ThirtyTwo
- 32.times { include(Module.new) }
- end
- class SixtyFour
- 64.times { include(Module.new) }
- end
- class OneTwentyEight
- 128.times { include(Module.new) }
- end
- # Disable GC to see raw throughput:
- GC.disable
-benchmark:
- allocate_8_deep: Eight.new
- allocate_32_deep: ThirtyTwo.new
- allocate_64_deep: SixtyFour.new
- allocate_128_deep: OneTwentyEight.new
-loop_count: 100000
diff --git a/benchmark/objspace_dump_all.yml b/benchmark/objspace_dump_all.yml
deleted file mode 100644
index ebab562d2e..0000000000
--- a/benchmark/objspace_dump_all.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-prelude: |
- require 'objspace'
- require 'tempfile'
- $objs = 1_000.times.map { Object.new }
- $strings = 1_000.times.map { |i| "string #{i}" }
- $file = Tempfile.new('heap')
- $dev_null = File.open(File::NULL, 'w+')
-
-benchmark:
- dump_all_string: "ObjectSpace.dump_all(output: :string)"
- dump_all_file: "ObjectSpace.dump_all(output: $file)"
- dump_all_dev_null: "ObjectSpace.dump_all(output: $dev_null)"
-loop_count: 1
diff --git a/benchmark/other-lang/fact.py b/benchmark/other-lang/fact.py
index 1ce9f76275..01593965d9 100644
--- a/benchmark/other-lang/fact.py
+++ b/benchmark/other-lang/fact.py
@@ -3,7 +3,7 @@
def factL(n):
r = 1
- for x in range(2, n+1):
+ for x in range(2, n):
r *= x
return r
diff --git a/benchmark/pm_array.yml b/benchmark/pm_array.yml
deleted file mode 100644
index babb65a289..0000000000
--- a/benchmark/pm_array.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-prelude: |
- def call(*val)
- case val
- in [String => body]
- [200, {}, [body]]
- in [Integer => status]
- [status, {}, [""]]
- in [Integer, String] => response
- [response[0], {}, [response[1]]]
- in [Integer, Hash, String] => response
- [response[0], response[1], [response[2]]]
- end
- end
-
-benchmark:
- first_match: call("ok")
- second_match: call(401)
- third_match: call(200, "ok")
- fourth_match: call(201, {}, "created")
diff --git a/benchmark/prepare_require.rb b/benchmark/prepare_require.rb
new file mode 100644
index 0000000000..c4786f04ad
--- /dev/null
+++ b/benchmark/prepare_require.rb
@@ -0,0 +1,25 @@
+require "fileutils"
+
+def prepare
+ num_files = 10000
+
+ basename = File.dirname($0)
+ data_dir = File.join(basename, "bm_require.data")
+
+ # skip if all of files exists
+ if File.exist?(File.join(data_dir, "c#{num_files}.rb"))
+ return
+ end
+
+ FileUtils.mkdir_p(data_dir)
+
+ 1.upto(num_files) do |i|
+ f = File.open("#{data_dir}/c#{i}.rb", "w")
+ f.puts <<-END
+ class C#{i}
+ end
+ END
+ end
+end
+
+prepare
diff --git a/benchmark/prepare_require_thread.rb b/benchmark/prepare_require_thread.rb
new file mode 100644
index 0000000000..339ecb8b39
--- /dev/null
+++ b/benchmark/prepare_require_thread.rb
@@ -0,0 +1,2 @@
+load File.join(File.dirname(__FILE__), "prepare_require.rb")
+
diff --git a/benchmark/prepare_so_count_words.rb b/benchmark/prepare_so_count_words.rb
new file mode 100644
index 0000000000..ee2138cdb2
--- /dev/null
+++ b/benchmark/prepare_so_count_words.rb
@@ -0,0 +1,15 @@
+# prepare 'wc.input'
+
+def prepare_wc_input
+ wcinput = File.join(File.dirname($0), 'wc.input')
+ wcbase = File.join(File.dirname($0), 'wc.input.base')
+ unless FileTest.exist?(wcinput)
+ data = File.read(wcbase)
+ 13.times{
+ data << data
+ }
+ open(wcinput, 'w'){|f| f.write data}
+ end
+end
+
+prepare_wc_input
diff --git a/benchmark/prepare_so_k_nucleotide.rb b/benchmark/prepare_so_k_nucleotide.rb
new file mode 100644
index 0000000000..d83aeb7a7e
--- /dev/null
+++ b/benchmark/prepare_so_k_nucleotide.rb
@@ -0,0 +1,2 @@
+require_relative 'make_fasta_output'
+prepare_fasta_output(100_000)
diff --git a/benchmark/prepare_so_reverse_complement.rb b/benchmark/prepare_so_reverse_complement.rb
new file mode 100644
index 0000000000..da3ec2df14
--- /dev/null
+++ b/benchmark/prepare_so_reverse_complement.rb
@@ -0,0 +1,2 @@
+require_relative 'make_fasta_output'
+prepare_fasta_output(2_500_000)
diff --git a/benchmark/ractor_const.yml b/benchmark/ractor_const.yml
deleted file mode 100644
index d7ab74bdca..0000000000
--- a/benchmark/ractor_const.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-type: lib/benchmark_driver/runner/ractor
-benchmark:
- ractor_const: Object
-ractor: 1
diff --git a/benchmark/ractor_float_to_s.yml b/benchmark/ractor_float_to_s.yml
deleted file mode 100644
index 8f492be668..0000000000
--- a/benchmark/ractor_float_to_s.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-type: lib/benchmark_driver/runner/ractor
-prelude: |
- FLOATS = [*0.0.step(1.0, 0.001)]
-benchmark:
- ractor_float_to_s: |
- FLOATS.each {|f| f.to_s}
-loop_count: 100
-ractor: 2
diff --git a/benchmark/range_last.yml b/benchmark/range_last.yml
deleted file mode 100644
index a6674f82ee..0000000000
--- a/benchmark/range_last.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-benchmark:
- - (1..1_000_000).last(100)
- - (1..1_000_000).last(1000)
- - (1..1_000_000).last(10000)
diff --git a/benchmark/range_min.yml b/benchmark/range_min.yml
deleted file mode 100644
index 9e60dd7308..0000000000
--- a/benchmark/range_min.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-benchmark:
- - (1..10).min
diff --git a/benchmark/realpath.yml b/benchmark/realpath.yml
deleted file mode 100644
index 90a029d5b9..0000000000
--- a/benchmark/realpath.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-prelude: |
- f = File
- pwd = Dir.pwd
- Dir.mkdir('b') unless f.directory?('b')
- f.write('b/a', '') unless f.file?('b/a')
-
- relative = 'b/a'
- absolute = File.join(pwd, relative)
- dir = 'b'
- file = 'a'
-
- relative_dir = 'b/c'
- absolute_dir = File.join(pwd, relative_dir)
- file_dir = 'c'
-benchmark:
- relative_nil: "f.realpath(relative, nil)"
- absolute_nil: "f.realpath(absolute, nil)"
- relative_relative: "f.realpath(file, dir)"
- absolute_relative: "f.realpath(absolute, dir)"
- relative_absolute: "f.realpath(relative, pwd)"
- relative_nil_dir: "f.realdirpath(relative_dir, nil)"
- absolute_nil_dir: "f.realdirpath(absolute_dir, nil)"
- relative_relative_dir: "f.realdirpath(file_dir, dir)"
- absolute_relative_dir: "f.realdirpath(absolute_dir, dir)"
- relative_absolute_dir: "f.realdirpath(relative_dir, pwd)"
- relative_nil_notexist: "f.realpath(relative_dir, nil) rescue nil"
- absolute_nil_notexist: "f.realpath(absolute_dir, nil) rescue nil"
- relative_relative_notexist: "f.realpath(file_dir, dir) rescue nil"
- absolute_relative_notexist: "f.realpath(absolute_dir, dir) rescue nil"
- relative_absolute_notexist: "f.realpath(relative_dir, pwd) rescue nil"
diff --git a/benchmark/report.rb b/benchmark/report.rb
new file mode 100644
index 0000000000..d2dc56b1e1
--- /dev/null
+++ b/benchmark/report.rb
@@ -0,0 +1,79 @@
+#
+# YARV benchmark driver
+#
+
+require 'yarvutil'
+require 'benchmark'
+require 'rbconfig'
+
+def exec_command type, file, w
+ <<-EOP
+ $DRIVER_PATH = '#{File.dirname($0)}'
+ $LOAD_PATH.replace $LOAD_PATH | #{$LOAD_PATH.inspect}
+ require 'benchmark'
+ require 'yarvutil'
+# print '#{type}'
+ begin
+ puts Benchmark.measure{
+ #{w}('#{file}')
+ }.utime
+ rescue Exception => exec_command_error_variable
+ puts "\t" + exec_command_error_variable.message
+ end
+ EOP
+end
+
+def benchmark cmd
+ rubybin = ENV['RUBY'] || RbConfig.ruby
+
+ IO.popen(rubybin, 'r+'){|io|
+ io.write cmd
+ io.close_write
+ return io.gets
+ }
+end
+
+def ruby_exec file
+ prog = exec_command 'ruby', file, 'load'
+ benchmark prog
+end
+
+def yarv_exec file
+ prog = exec_command 'yarv', file, 'YARVUtil.load_bm'
+ benchmark prog
+end
+
+$wr = $wy = nil
+
+def measure bench
+ file = File.dirname($0) + "/bm_#{bench}.rb"
+ r = ruby_exec(file).to_f
+ y = yarv_exec(file).to_f
+ puts "#{bench}\t#{r}\t#{y}"
+end
+
+def measure2
+ r = ruby_exec.to_f
+ y = yarv_exec.to_f
+ puts r/y
+end
+
+if $0 == __FILE__
+ %w{
+ whileloop
+ whileloop2
+ times
+ const
+ method
+ poly_method
+ block
+ rescue
+ rescue2
+ }.each{|bench|
+ measure bench
+ }
+end
+
+
+
+
diff --git a/benchmark/require.yml b/benchmark/require.yml
deleted file mode 100644
index 09f218cf08..0000000000
--- a/benchmark/require.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-prelude: |
- require "fileutils"
-
- def prepare
- num_files = 10000
-
- basename = File.dirname($0)
- data_dir = File.join(basename, "bm_require.data")
-
- # skip if all of files exists
- if File.exist?(File.join(data_dir, "c#{num_files}.rb"))
- return
- end
-
- FileUtils.mkdir_p(data_dir)
-
- 1.upto(num_files) do |i|
- File.write("#{data_dir}/c#{i}.rb", "class C#{i}\n""end\n")
- end
- end
-
- prepare
-benchmark:
- require: |
- $:.push File.join(File.dirname(__FILE__), "bm_require.data")
-
- 1.upto(10000) do |i|
- require "c#{i}"
- end
-
- $:.pop
-loop_count: 1
diff --git a/benchmark/require_thread.yml b/benchmark/require_thread.yml
deleted file mode 100644
index 0c63257106..0000000000
--- a/benchmark/require_thread.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-prelude: |
- require "fileutils"
-
- def prepare
- num_files = 10000
-
- basename = File.dirname($0)
- data_dir = File.join(basename, "bm_require.data")
-
- # skip if all of files exists
- if File.exist?(File.join(data_dir, "c#{num_files}.rb"))
- return
- end
-
- FileUtils.mkdir_p(data_dir)
-
- 1.upto(num_files) do |i|
- File.write("#{data_dir}/c#{i}.rb", "class C#{i}\n""end\n")
- end
- end
-
- prepare
-benchmark:
- require_thread: |
- $:.push File.join(File.dirname(__FILE__), "bm_require.data")
-
- i=0
- t = Thread.new do
- while true
- i = i+1 # dummy loop
- end
- end
-
- 1.upto(100) do |i|
- require "c#{i}"
- end
-
- $:.pop
- t.kill
-loop_count: 1
diff --git a/benchmark/run.rb b/benchmark/run.rb
new file mode 100644
index 0000000000..0cd2363849
--- /dev/null
+++ b/benchmark/run.rb
@@ -0,0 +1,127 @@
+#
+# Ruby benchmark driver
+#
+
+require 'benchmark'
+require 'rbconfig'
+
+$matzrubyonly = false
+$rubyonly = false
+
+$results = []
+
+# prepare 'wc.input'
+def prepare_wc_input
+ wcinput = File.join(File.dirname($0), 'wc.input')
+ wcbase = File.join(File.dirname($0), 'wc.input.base')
+ unless FileTest.exist?(wcinput)
+ data = File.read(wcbase)
+ 13.times{
+ data << data
+ }
+ open(wcinput, 'w'){|f| f.write data}
+ end
+end
+
+prepare_wc_input
+
+def bm file
+ prog = File.readlines(file).map{|e| e.rstrip}.join("\n")
+ return if prog.empty?
+
+ /[a-z]+_(.+)\.rb/ =~ file
+ bm_name = $1
+ puts '-----------------------------------------------------------' unless $rubyonly || $matzrubyonly
+ puts "#{bm_name}: "
+
+
+puts <<EOS unless $matzrubyonly || $rubyonly
+#{prog}
+--
+EOS
+ begin
+ result = [bm_name]
+ result << matzruby_exec(file) unless $rubyonly
+ result << ruby_exec(file) unless $matzrubyonly
+ $results << result
+
+ rescue Exception => e
+ puts
+ puts "** benchmark failure: #{e}"
+ puts e.backtrace
+ end
+end
+
+def benchmark file, bin
+ m = Benchmark.measure{
+ `#{bin} #{$opts} #{file}`
+ }
+ sec = '%.3f' % m.real
+ puts " #{sec}"
+ sec
+end
+
+def ruby_exec file
+ print 'ruby'
+ benchmark file, $ruby_program
+end
+
+def matzruby_exec file
+ print 'matz'
+ rubylib = ENV['RUBYLIB']
+ ENV['RUBYLIB'] = ''
+ r = benchmark file, $matzruby_program
+ ENV['RUBYLIB'] = rubylib
+ r
+end
+
+if $0 == __FILE__
+ ARGV.each{|arg|
+ case arg
+ when /\A--ruby=(.+)/
+ $ruby_program = $1
+ when /\A--matzruby=(.+)/
+ $matzruby_program = $1
+ when /\A--opts=(.+)/
+ $opts = $1
+ when /\A(-r|--only-ruby)\z/
+ $rubyonly = true
+ when /\A(-m|--only-matzruby)\z/
+ $matzrubyonly = true
+ end
+ }
+ ARGV.delete_if{|arg|
+ /\A-/ =~ arg
+ }
+
+ puts "MatzRuby:"
+ system("#{$matzruby_program} -v")
+ puts "Ruby:"
+ system("#{$ruby_program} -v")
+ puts
+
+ if ARGV.empty?
+ Dir.glob(File.dirname(__FILE__) + '/bm_*.rb').sort.each{|file|
+ bm file
+ }
+ else
+ ARGV.each{|file|
+ Dir.glob(File.join(File.dirname(__FILE__), file + '*')){|ef|
+ # file = "#{File.dirname(__FILE__)}/#{file}.rb"
+ bm ef
+ }
+ }
+ end
+
+ puts
+ puts "-- benchmark summary ---------------------------"
+ $results.each{|res|
+ print res.shift, "\t"
+ (res||[]).each{|result|
+ /([\d\.]+)/ =~ result
+ print $1 + "\t" if $1
+ }
+ puts
+ }
+end
+
diff --git a/benchmark/runc.rb b/benchmark/runc.rb
new file mode 100644
index 0000000000..97c5cef045
--- /dev/null
+++ b/benchmark/runc.rb
@@ -0,0 +1,27 @@
+#
+#
+#
+
+require 'benchmark'
+require 'rbconfig'
+
+$rubybin = ENV['RUBY'] || RbConfig.ruby
+
+def runfile file
+ puts file
+ file = File.join(File.dirname($0), 'contrib', file)
+ Benchmark.bm{|x|
+ x.report('ruby'){
+ system("#{$rubybin} #{file}")
+ }
+ x.report('yarv'){
+ system("#{$rubybin} -rite -I.. #{file}")
+ }
+ }
+end
+
+ARGV.each{|file|
+ runfile file
+}
+
+
diff --git a/benchmark/so_ackermann.rb b/benchmark/so_ackermann.rb
deleted file mode 100644
index 4effa1ecaf..0000000000
--- a/benchmark/so_ackermann.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/ruby
-# -*- Ruby -*-
-# $Id: ackermann-ruby.code,v 1.4 2004/11/13 07:40:41 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-
-def ack(m, n)
- if m == 0 then
- n + 1
- elsif n == 0 then
- ack(m - 1, 1)
- else
- ack(m - 1, ack(m, n - 1))
- end
-end
-
-NUM = 9
-ack(3, NUM)
-
-
diff --git a/benchmark/so_array.rb b/benchmark/so_array.rb
deleted file mode 100644
index 767e03db5f..0000000000
--- a/benchmark/so_array.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/ruby
-# -*- Ruby -*-
-# $Id: ary-ruby.code,v 1.4 2004/11/13 07:41:27 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-# with help from Paul Brannan and Mark Hubbart
-
-n = 9000 # Integer(ARGV.shift || 1)
-
-x = Array.new(n)
-y = Array.new(n, 0)
-
-n.times{|bi|
- x[bi] = bi + 1
-}
-
-(0 .. 999).each do |e|
- (n-1).step(0,-1) do |bi|
- y[bi] += x.at(bi)
- end
-end
-# puts "#{y.first} #{y.last}"
-
-
diff --git a/benchmark/so_concatenate.rb b/benchmark/so_concatenate.rb
deleted file mode 100644
index 4468e20ac8..0000000000
--- a/benchmark/so_concatenate.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/ruby
-# -*- Ruby -*-
-# $Id: strcat-ruby.code,v 1.4 2004/11/13 07:43:28 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-# based on code from Aristarkh A Zagorodnikov and Dat Nguyen
-
-STUFF = "hello\n"
-i = 0
-while i<10
- i += 1
- hello = ''
- 4_000_000.times do |e|
- hello << STUFF
- end
-end
-# puts hello.length
-
-
diff --git a/benchmark/so_count_words.yml b/benchmark/so_count_words.yml
deleted file mode 100644
index 99683505f9..0000000000
--- a/benchmark/so_count_words.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-prelude: |
- #!/usr/bin/ruby
-
- wc_input_base = <<EOS
- Subject: Re: Who was Izchak Miller?
- From: "Jane D. Anonymous" <nobody@yale.edu>
- Date: 1996/04/28
- Message-Id: <4lv7bc$oh@news.ycc.yale.edu>
- References: <317C405E.5DFA@panix.com> <4lk6vl$gde@ns.oar.net>
- To: 75176.2330@compuserve.com
- Content-Type: text/plain; charset=us-ascii
- Organization: Yale University
- X-Url: news:4lk6vl$gde@ns.oar.net
- Mime-Version: 1.0
- Newsgroups: rec.games.roguelike.nethack
- X-Mailer: Mozilla 1.1N (Macintosh; I; 68K)
-
- Hello there, Izchak Miller was my father. When I was younger I spent
- many a night, hunched over the keyboard with a cup of tea, playing
- nethack with him and my brother. my dad was a philosopher with a strong
- weakness for fantasy/sci fi. I remember when he started to get involved
- with the Nethack team- my brother's Dungeons and Dragons monster book
- found a regular place beside my dad's desk. it's nice to see him living
- on in the game he loved so much :-).
- Tamar Miller
-
- The following is a really long word of 5000 characters:
-
- wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
- EOS
-
- # prepare 'wc.input'
-
- def prepare_wc_input(wcbase)
- wcinput = File.join(File.dirname($0), 'wc.input')
- unless FileTest.exist?(wcinput)
- data = wcbase.dup
- 13.times{
- data << data
- }
- open(wcinput, 'w'){|f| f.write data}
- end
- end
-
- prepare_wc_input(wc_input_base)
-
-benchmark:
- so_count_words: |
- # $Id: wc-ruby.code,v 1.4 2004/11/13 07:43:32 bfulgham Exp $
- # http://www.bagley.org/~doug/shootout/
- # with help from Paul Brannan
- input = open(File.join(File.dirname($0), 'wc.input'), 'rb')
-
- nl = nw = nc = 0
- while true
- tmp = input.read(4096) or break
- data = tmp << (input.gets || "")
- nc += data.length
- nl += data.count("\n")
- ((data.strip! || data).tr!("\n", " ") || data).squeeze!
- nw += data.count(" ") + 1
- end
- # STDERR.puts "#{nl} #{nw} #{nc}"
-
-loop_count: 1
diff --git a/benchmark/so_exception.rb b/benchmark/so_exception.rb
deleted file mode 100644
index eb205b4df1..0000000000
--- a/benchmark/so_exception.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/ruby
-# -*- Ruby -*-
-# $Id: except-ruby.code,v 1.4 2004/11/13 07:41:33 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-
-$HI = 0
-$LO = 0
-NUM = 250000 # Integer(ARGV[0] || 1)
-
-
-class Lo_Exception < Exception
- def initialize(num)
- @value = num
- end
-end
-
-class Hi_Exception < Exception
- def initialize(num)
- @value = num
- end
-end
-
-def some_function(num)
- begin
- hi_function(num)
- rescue
- print "We shouldn't get here, exception is: #{$!.type}\n"
- end
-end
-
-def hi_function(num)
- begin
- lo_function(num)
- rescue Hi_Exception
- $HI = $HI + 1
- end
-end
-
-def lo_function(num)
- begin
- blowup(num)
- rescue Lo_Exception
- $LO = $LO + 1
- end
-end
-
-def blowup(num)
- if num % 2 == 0
- raise Lo_Exception.new(num)
- else
- raise Hi_Exception.new(num)
- end
-end
-
-
-i = 1
-max = NUM+1
-while i < max
- i += 1
- some_function(i+1)
-end
diff --git a/benchmark/so_k_nucleotide.yml b/benchmark/so_k_nucleotide.yml
deleted file mode 100644
index d7df086c39..0000000000
--- a/benchmark/so_k_nucleotide.yml
+++ /dev/null
@@ -1,155 +0,0 @@
-prelude: |
- bm_so_fasta = <<'EOS'
- # The Computer Language Shootout
- # http://shootout.alioth.debian.org/
- # Contributed by Sokolov Yura
-
- $last = 42.0
- def gen_random(max, im=139968, ia=3877, ic=29573)
- (max * ($last = ($last * ia + ic) % im)) / im
- end
-
- alu =
- "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"+
- "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"+
- "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"+
- "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"+
- "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"+
- "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"+
- "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"
-
- iub = [
- ["a", 0.27],
- ["c", 0.12],
- ["g", 0.12],
- ["t", 0.27],
-
- ["B", 0.02],
- ["D", 0.02],
- ["H", 0.02],
- ["K", 0.02],
- ["M", 0.02],
- ["N", 0.02],
- ["R", 0.02],
- ["S", 0.02],
- ["V", 0.02],
- ["W", 0.02],
- ["Y", 0.02],
- ]
- homosapiens = [
- ["a", 0.3029549426680],
- ["c", 0.1979883004921],
- ["g", 0.1975473066391],
- ["t", 0.3015094502008],
- ]
-
- def make_repeat_fasta(id, desc, src, n)
- puts ">#{id} #{desc}"
- v = nil
- width = 60
- l = src.length
- s = src * ((n / l) + 1)
- s.slice!(n, l)
- puts(s.scan(/.{1,#{width}}/).join("\n"))
- end
-
- def make_random_fasta(id, desc, table, n)
- puts ">#{id} #{desc}"
- rand, v = nil,nil
- width = 60
- chunk = 1 * width
- prob = 0.0
- table.each{|v| v[1]= (prob += v[1])}
- for i in 1..(n/width)
- puts((1..width).collect{
- rand = gen_random(1.0)
- table.find{|v| v[1]>rand}[0]
- }.join)
- end
- if n%width != 0
- puts((1..(n%width)).collect{
- rand = gen_random(1.0)
- table.find{|v| v[1]>rand}[0]
- }.join)
- end
- end
-
-
- n = (ARGV[0] or 250_000).to_i
-
- make_repeat_fasta('ONE', 'Homo sapiens alu', alu, n*2)
- make_random_fasta('TWO', 'IUB ambiguity codes', iub, n*3)
- make_random_fasta('THREE', 'Homo sapiens frequency', homosapiens, n*5)
- EOS
-benchmark:
- - name: so_k_nucleotide
- prelude: |
- script = File.join(File.dirname($0), 'bm_so_fasta.rb')
- File.write(script, bm_so_fasta)
-
- def prepare_fasta_output n
- filebase = File.join(File.dirname($0), 'fasta.output')
- script = File.join(File.dirname($0), 'bm_so_fasta.rb')
- file = "#{filebase}.#{n}"
-
- unless FileTest.exist?(file)
- STDERR.puts "preparing #{file}"
-
- open(file, 'w'){|f|
- ARGV[0] = n
- $stdout = f
- load script
- $stdout = STDOUT
- }
- end
- end
- prepare_fasta_output(100_000)
- script: |
- # The Computer Language Shootout
- # http://shootout.alioth.debian.org
- #
- # contributed by jose fco. gonzalez
- # modified by Sokolov Yura
-
- seq = String.new
-
- def frecuency( seq,length )
- n, table = seq.length - length + 1, Hash.new(0)
- f, i = nil, nil
- (0 ... length).each do |f|
- (f ... n).step(length) do |i|
- table[seq[i,length]] += 1
- end
- end
- [n,table]
-
- end
-
- def sort_by_freq( seq,length )
- n,table = frecuency( seq,length )
- a, b, v = nil, nil, nil
- table.sort{|a,b| b[1] <=> a[1]}.each do |v|
- puts "%s %.3f" % [v[0].upcase,((v[1]*100).to_f/n)]
- end
- puts
- end
-
- def find_seq( seq,s )
- n,table = frecuency( seq,s.length )
- puts "#{table[s].to_s}\t#{s.upcase}"
- end
-
- input = open(File.join(File.dirname($0), 'fasta.output.100000'), 'rb')
-
- line = input.gets while line !~ /^>THREE/
- line = input.gets
-
- while (line !~ /^>/) & line do
- seq << line.chomp
- line = input.gets
- end
-
- [1,2].each {|i| sort_by_freq( seq,i ) }
-
- %w(ggt ggta ggtatt ggtattttaatt ggtattttaatttatagt).each{|s| find_seq( seq,s) }
- loop_count: 1
diff --git a/benchmark/so_matrix.rb b/benchmark/so_matrix.rb
deleted file mode 100644
index 2d1e72bda9..0000000000
--- a/benchmark/so_matrix.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/ruby
-# -*- Ruby -*-
-# $Id: matrix-ruby.code,v 1.4 2004/11/13 07:42:14 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-
-n = 60 #Integer(ARGV.shift || 1)
-
-size = 40
-
-def mkmatrix(rows, cols)
- count = 1
- mx = Array.new(rows)
- (0 .. (rows - 1)).each do |bi|
- row = Array.new(cols, 0)
- (0 .. (cols - 1)).each do |j|
- row[j] = count
- count += 1
- end
- mx[bi] = row
- end
- mx
-end
-
-def mmult(rows, cols, m1, m2)
- m3 = Array.new(rows)
- (0 .. (rows - 1)).each do |bi|
- row = Array.new(cols, 0)
- (0 .. (cols - 1)).each do |j|
- val = 0
- (0 .. (cols - 1)).each do |k|
- val += m1.at(bi).at(k) * m2.at(k).at(j)
- end
- row[j] = val
- end
- m3[bi] = row
- end
- m3
-end
-
-m1 = mkmatrix(size, size)
-m2 = mkmatrix(size, size)
-mm = Array.new
-n.times do
- mm = mmult(size, size, m1, m2)
-end
-# puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}"
-
-
diff --git a/benchmark/so_meteor_contest.rb b/benchmark/so_meteor_contest.rb
deleted file mode 100644
index d8c8e3ab9c..0000000000
--- a/benchmark/so_meteor_contest.rb
+++ /dev/null
@@ -1,563 +0,0 @@
-#!/usr/bin/env ruby
-#
-# The Computer Language Shootout
-# http://shootout.alioth.debian.org
-# contributed by Kevin Barnes (Ruby novice)
-
-# PROGRAM: the main body is at the bottom.
-# 1) read about the problem here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/
-# 2) see how I represent a board as a bitmask by reading the blank_board comments
-# 3) read as your mental paths take you
-
-def print *args
-end
-
-# class to represent all information about a particular rotation of a particular piece
-class Rotation
- # an array (by location) containing a bit mask for how the piece maps at the given location.
- # if the rotation is invalid at that location the mask will contain false
- attr_reader :start_masks
-
- # maps a direction to a relative location. these differ depending on whether it is an even or
- # odd row being mapped from
- @@rotation_even_adder = { :west => -1, :east => 1, :nw => -7, :ne => -6, :sw => 5, :se => 6 }
- @@rotation_odd_adder = { :west => -1, :east => 1, :nw => -6, :ne => -5, :sw => 6, :se => 7 }
-
- def initialize( directions )
- @even_offsets, @odd_offsets = normalize_offsets( get_values( directions ))
-
- @even_mask = mask_for_offsets( @even_offsets)
- @odd_mask = mask_for_offsets( @odd_offsets)
-
- @start_masks = Array.new(60)
-
- # create the rotational masks by placing the base mask at the location and seeing if
- # 1) it overlaps the boundaries and 2) it produces a prunable board. if either of these
- # is true the piece cannot be placed
- 0.upto(59) do | offset |
- mask = is_even(offset) ? (@even_mask << offset) : (@odd_mask << offset)
- if (blank_board & mask == 0 && !prunable(blank_board | mask, 0, true)) then
- imask = compute_required( mask, offset)
- @start_masks[offset] = [ mask, imask, imask | mask ]
- else
- @start_masks[offset] = false
- end
- end
- end
-
- def compute_required( mask, offset )
- board = blank_board
- 0.upto(offset) { | i | board |= 1 << i }
- board |= mask
- return 0 if (!prunable(board | mask, offset))
- board = flood_fill(board,58)
- count = 0
- imask = 0
- 0.upto(59) do | i |
- if (board[i] == 0) then
- imask |= (1 << i)
- count += 1
- end
- end
- (count > 0 && count < 5) ? imask : 0
- end
-
- def flood_fill( board, location)
- return board if (board[location] == 1)
- board |= 1 << location
- row, col = location.divmod(6)
- board = flood_fill( board, location - 1) if (col > 0)
- board = flood_fill( board, location + 1) if (col < 4)
- if (row % 2 == 0) then
- board = flood_fill( board, location - 7) if (col > 0 && row > 0)
- board = flood_fill( board, location - 6) if (row > 0)
- board = flood_fill( board, location + 6) if (row < 9)
- board = flood_fill( board, location + 5) if (col > 0 && row < 9)
- else
- board = flood_fill( board, location - 5) if (col < 4 && row > 0)
- board = flood_fill( board, location - 6) if (row > 0)
- board = flood_fill( board, location + 6) if (row < 9)
- board = flood_fill( board, location + 7) if (col < 4 && row < 9)
- end
- board
- end
-
- # given a location, produces a list of relative locations covered by the piece at this rotation
- def offsets( location)
- if is_even( location) then
- @even_offsets.collect { | value | value + location }
- else
- @odd_offsets.collect { | value | value + location }
- end
- end
-
- # returns a set of offsets relative to the top-left most piece of the rotation (by even or odd rows)
- # this is hard to explain. imagine we have this partial board:
- # 0 0 0 0 0 x [positions 0-5]
- # 0 0 1 1 0 x [positions 6-11]
- # 0 0 1 0 0 x [positions 12-17]
- # 0 1 0 0 0 x [positions 18-23]
- # 0 1 0 0 0 x [positions 24-29]
- # 0 0 0 0 0 x [positions 30-35]
- # ...
- # The top-left of the piece is at position 8, the
- # board would be passed as a set of positions (values array) containing [8,9,14,19,25] not necessarily in that
- # sorted order. Since that array starts on an odd row, the offsets for an odd row are: [0,1,6,11,17] obtained
- # by subtracting 8 from everything. Now imagine the piece shifted up and to the right so it's on an even row:
- # 0 0 0 1 1 x [positions 0-5]
- # 0 0 1 0 0 x [positions 6-11]
- # 0 0 1 0 0 x [positions 12-17]
- # 0 1 0 0 0 x [positions 18-23]
- # 0 0 0 0 0 x [positions 24-29]
- # 0 0 0 0 0 x [positions 30-35]
- # ...
- # Now the positions are [3,4,8,14,19] which after subtracting the lowest value (3) gives [0,1,5,11,16] thus, the
- # offsets for this particular piece are (in even, odd order) [0,1,5,11,16],[0,1,6,11,17] which is what
- # this function would return
- def normalize_offsets( values)
- min = values.min
- even_min = is_even(min)
- other_min = even_min ? min + 6 : min + 7
- other_values = values.collect do | value |
- if is_even(value) then
- value + 6 - other_min
- else
- value + 7 - other_min
- end
- end
- values.collect! { | value | value - min }
-
- if even_min then
- [values, other_values]
- else
- [other_values, values]
- end
- end
-
- # produce a bitmask representation of an array of offset locations
- def mask_for_offsets( offsets )
- mask = 0
- offsets.each { | value | mask = mask + ( 1 << value ) }
- mask
- end
-
- # finds a "safe" position that a position as described by a list of directions can be placed
- # without falling off any edge of the board. the values returned a location to place the first piece
- # at so it will fit after making the described moves
- def start_adjust( directions )
- south = east = 0;
- directions.each do | direction |
- east += 1 if ( direction == :sw || direction == :nw || direction == :west )
- south += 1 if ( direction == :nw || direction == :ne )
- end
- south * 6 + east
- end
-
- # given a set of directions places the piece (as defined by a set of directions) on the board at
- # a location that will not take it off the edge
- def get_values( directions )
- start = start_adjust(directions)
- values = [ start ]
- directions.each do | direction |
- if (start % 12 >= 6) then
- start += @@rotation_odd_adder[direction]
- else
- start += @@rotation_even_adder[direction]
- end
- values += [ start ]
- end
-
- # some moves take you back to an existing location, we'll strip duplicates
- values.uniq
- end
-end
-
-# describes a piece and caches information about its rotations to as to be efficient for iteration
-# ATTRIBUTES:
-# rotations -- all the rotations of the piece
-# type -- a numeic "name" of the piece
-# masks -- an array by location of all legal rotational masks (a n inner array) for that location
-# placed -- the mask that this piece was last placed at (not a location, but the actual mask used)
-class Piece
- attr_reader :rotations, :type, :masks
- attr_accessor :placed
-
- # transform hashes that change one direction into another when you either flip or rotate a set of directions
- @@flip_converter = { :west => :west, :east => :east, :nw => :sw, :ne => :se, :sw => :nw, :se => :ne }
- @@rotate_converter = { :west => :nw, :east => :se, :nw => :ne, :ne => :east, :sw => :west, :se => :sw }
-
- def initialize( directions, type )
- @type = type
- @rotations = Array.new();
- @map = {}
-
- generate_rotations( directions )
- directions.collect! { | value | @@flip_converter[value] }
- generate_rotations( directions )
-
- # creates the masks AND a map that returns [location, rotation] for any given mask
- # this is used when a board is found and we want to draw it, otherwise the map is unused
- @masks = Array.new();
- 0.upto(59) do | i |
- even = true
- @masks[i] = @rotations.collect do | rotation |
- mask = rotation.start_masks[i]
- @map[mask[0]] = [ i, rotation ] if (mask)
- mask || nil
- end
- @masks[i].compact!
- end
- end
-
- # rotates a set of directions through all six angles and adds a Rotation to the list for each one
- def generate_rotations( directions )
- 6.times do
- rotations.push( Rotation.new(directions))
- directions.collect! { | value | @@rotate_converter[value] }
- end
- end
-
- # given a board string, adds this piece to the board at whatever location/rotation
- # important: the outbound board string is 5 wide, the normal location notation is six wide (padded)
- def fill_string( board_string)
- location, rotation = @map[@placed]
- rotation.offsets(location).each do | offset |
- row, col = offset.divmod(6)
- board_string[ row*5 + col, 1 ] = @type.to_s
- end
- end
-end
-
-# a blank bit board having this form:
-#
-# 0 0 0 0 0 1
-# 0 0 0 0 0 1
-# 0 0 0 0 0 1
-# 0 0 0 0 0 1
-# 0 0 0 0 0 1
-# 0 0 0 0 0 1
-# 0 0 0 0 0 1
-# 0 0 0 0 0 1
-# 0 0 0 0 0 1
-# 0 0 0 0 0 1
-# 1 1 1 1 1 1
-#
-# where left lest significant bit is the top left and the most significant is the lower right
-# the actual board only consists of the 0 places, the 1 places are blockers to keep things from running
-# off the edges or bottom
-def blank_board
- 0b111111100000100000100000100000100000100000100000100000100000100000
-end
-
-def full_board
- 0b111111111111111111111111111111111111111111111111111111111111111111
-end
-
-# determines if a location (bit position) is in an even row
-def is_even( location)
- (location % 12) < 6
-end
-
-# support function that create three utility maps:
-# $converter -- for each row an array that maps a five bit row (via array mapping)
-# to the a five bit representation of the bits below it
-# $bit_count -- maps a five bit row (via array mapping) to the number of 1s in the row
-# @@new_regions -- maps a five bit row (via array mapping) to an array of "region" arrays
-# a region array has three values the first is a mask of bits in the region,
-# the second is the count of those bits and the third is identical to the first
-# examples:
-# 0b10010 => [ 0b01100, 2, 0b01100 ], [ 0b00001, 1, 0b00001]
-# 0b01010 => [ 0b10000, 1, 0b10000 ], [ 0b00100, 1, 0b00100 ], [ 0b00001, 1, 0b00001]
-# 0b10001 => [ 0b01110, 3, 0b01110 ]
-def create_collector_support
- odd_map = [0b11, 0b110, 0b1100, 0b11000, 0b10000]
- even_map = [0b1, 0b11, 0b110, 0b1100, 0b11000]
-
- all_odds = Array.new(0b100000)
- all_evens = Array.new(0b100000)
- bit_counts = Array.new(0b100000)
- new_regions = Array.new(0b100000)
- 0.upto(0b11111) do | i |
- bit_count = odd = even = 0
- 0.upto(4) do | bit |
- if (i[bit] == 1) then
- bit_count += 1
- odd |= odd_map[bit]
- even |= even_map[bit]
- end
- end
- all_odds[i] = odd
- all_evens[i] = even
- bit_counts[i] = bit_count
- new_regions[i] = create_regions( i)
- end
-
- $converter = []
- 10.times { | row | $converter.push((row % 2 == 0) ? all_evens : all_odds) }
- $bit_counts = bit_counts
- $regions = new_regions.collect { | set | set.collect { | value | [ value, bit_counts[value], value] } }
-end
-
-# determines if a board is punable, meaning that there is no possibility that it
-# can be filled up with pieces. A board is prunable if there is a grouping of unfilled spaces
-# that are not a multiple of five. The following board is an example of a prunable board:
-# 0 0 1 0 0
-# 0 1 0 0 0
-# 1 1 0 0 0
-# 0 1 0 0 0
-# 0 0 0 0 0
-# ...
-#
-# This board is prunable because the top left corner is only 3 bits in area, no piece will ever fit it
-# parameters:
-# board -- an initial bit board (6 bit padded rows, see blank_board for format)
-# location -- starting location, everything above and to the left is already full
-# slotting -- set to true only when testing initial pieces, when filling normally
-# additional assumptions are possible
-#
-# Algorithm:
-# The algorithm starts at the top row (as determined by location) and iterates a row at a time
-# maintainng counts of active open areas (kept in the collector array) each collector contains
-# three values at the start of an iteration:
-# 0: mask of bits that would be adjacent to the collector in this row
-# 1: the number of bits collected so far
-# 2: a scratch space starting as zero, but used during the computation to represent
-# the empty bits in the new row that are adjacent (position 0)
-# The exact procedure is described in-code
-def prunable( board, location, slotting = false)
- collectors = []
- # loop across the rows
- (location / 6).to_i.upto(9) do | row_on |
- # obtain a set of regions representing the bits of the current row.
- regions = $regions[(board >> (row_on * 6)) & 0b11111]
- converter = $converter[row_on]
-
- # track the number of collectors at the start of the cycle so that
- # we don't compute against newly created collectors, only existing collectors
- initial_collector_count = collectors.length
-
- # loop against the regions. For each region of the row
- # we will see if it connects to one or more existing collectors.
- # if it connects to 1 collector, the bits from the region are added to the
- # bits of the collector and the mask is placed in collector[2]
- # If the region overlaps more than one collector then all the collectors
- # it overlaps with are merged into the first one (the others are set to nil in the array)
- # if NO collectors are found then the region is copied as a new collector
- regions.each do | region |
- collector_found = nil
- region_mask = region[2]
- initial_collector_count.times do | collector_num |
- collector = collectors[collector_num]
- if (collector) then
- collector_mask = collector[0]
- if (collector_mask & region_mask != 0) then
- if (collector_found) then
- collector_found[0] |= collector_mask
- collector_found[1] += collector[1]
- collector_found[2] |= collector[2]
- collectors[collector_num] = nil
- else
- collector_found = collector
- collector[1] += region[1]
- collector[2] |= region_mask
- end
- end
- end
- end
- if (collector_found == nil) then
- collectors.push(Array.new(region))
- end
- end
-
- # check the existing collectors, if any collector overlapped no bits in the region its [2] value will
- # be zero. The size of any such reaason is tested if it is not a multiple of five true is returned since
- # the board is prunable. if it is a multiple of five it is removed.
- # Collector that are still active have a new adjacent value [0] set based n the matched bits
- # and have [2] cleared out for the next cycle.
- collectors.length.times do | collector_num |
- collector = collectors[collector_num]
- if (collector) then
- if (collector[2] == 0) then
- return true if (collector[1] % 5 != 0)
- collectors[collector_num] = nil
- else
- # if a collector matches all bits in the row then we can return unprunable early for the
- # following reasons:
- # 1) there can be no more unavailable bits bince we fill from the top left downward
- # 2) all previous regions have been closed or joined so only this region can fail
- # 3) this region must be good since there can never be only 1 region that is nuot
- # a multiple of five
- # this rule only applies when filling normally, so we ignore the rule if we are "slotting"
- # in pieces to see what configurations work for them (the only other time this algorithm is used).
- return false if (collector[2] == 0b11111 && !slotting)
- collector[0] = converter[collector[2]]
- collector[2] = 0
- end
- end
- end
-
- # get rid of all the empty converters for the next round
- collectors.compact!
- end
- return false if (collectors.length <= 1) # 1 collector or less and the region is fine
- collectors.any? { | collector | (collector[1] % 5) != 0 } # more than 1 and we test them all for bad size
-end
-
-# creates a region given a row mask. see prunable for what a "region" is
-def create_regions( value )
- regions = []
- cur_region = 0
- 5.times do | bit |
- if (value[bit] == 0) then
- cur_region |= 1 << bit
- else
- if (cur_region != 0 ) then
- regions.push( cur_region)
- cur_region = 0;
- end
- end
- end
- regions.push(cur_region) if (cur_region != 0)
- regions
-end
-
-# find up to the counted number of solutions (or all solutions) and prints the final result
-def find_all
- find_top( 1)
- find_top( 0)
- print_results
-end
-
-# show the board
-def print_results
- print "#{@boards_found} solutions found\n\n"
- print_full_board( @min_board)
- print "\n"
- print_full_board( @max_board)
- print "\n"
-end
-
-# finds solutions. This special version of the main function is only used for the top level
-# the reason for it is basically to force a particular ordering on how the rotations are tested for
-# the first piece. It is called twice, first looking for placements of the odd rotations and then
-# looking for placements of the even locations.
-#
-# WHY?
-# Since any found solution has an inverse we want to maximize finding solutions that are not already found
-# as an inverse. The inverse will ALWAYS be 3 one of the piece configurations that is exactly 3 rotations away
-# (an odd number). Checking even vs odd then produces a higher probability of finding more pieces earlier
-# in the cycle. We still need to keep checking all the permutations, but our probability of finding one will
-# diminish over time. Since we are TOLD how many to search for this lets us exit before checking all pieces
-# this bennifit is very great when seeking small numbers of solutions and is 0 when looking for more than the
-# maximum number
-def find_top( rotation_skip)
- board = blank_board
- (@pieces.length-1).times do
- piece = @pieces.shift
- piece.masks[0].each do | mask, imask, cmask |
- if ((rotation_skip += 1) % 2 == 0) then
- piece.placed = mask
- find( 1, 1, board | mask)
- end
- end
- @pieces.push(piece)
- end
- piece = @pieces.shift
- @pieces.push(piece)
-end
-
-# the normail find routine, iterates through the available pieces, checks all rotations at the current location
-# and adds any boards found. depth is achieved via recursion. the overall approach is described
-# here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/
-# parameters:
-# start_location -- where to start looking for place for the next piece at
-# placed -- number of pieces placed
-# board -- current state of the board
-#
-# see in-code comments
-def find( start_location, placed, board)
- # find the next location to place a piece by looking for an empty bit
- while board[start_location] == 1
- start_location += 1
- end
-
- @pieces.length.times do
- piece = @pieces.shift
- piece.masks[start_location].each do | mask, imask, cmask |
- if ( board & cmask == imask) then
- piece.placed = mask
- if (placed == 9) then
- add_board
- else
- find( start_location + 1, placed + 1, board | mask)
- end
- end
- end
- @pieces.push(piece)
- end
-end
-
-# print the board
-def print_full_board( board_string)
- 10.times do | row |
- print " " if (row % 2 == 1)
- 5.times do | col |
- print "#{board_string[row*5 + col,1]} "
- end
- print "\n"
- end
-end
-
-# when a board is found we "draw it" into a string and then flip that string, adding both to
-# the list (hash) of solutions if they are unique.
-def add_board
- board_string = "99999999999999999999999999999999999999999999999999"
- @all_pieces.each { | piece | piece.fill_string( board_string ) }
- save( board_string)
- save( board_string.reverse)
-end
-
-# adds a board string to the list (if new) and updates the current best/worst board
-def save( board_string)
- if (@all_boards[board_string] == nil) then
- @min_board = board_string if (board_string < @min_board)
- @max_board = board_string if (board_string > @max_board)
- @all_boards.store(board_string,true)
- @boards_found += 1
-
- # the exit motif is a time saver. Ideally the function should return, but those tests
- # take noticeable time (performance).
- if (@boards_found == @stop_count) then
- print_results
- exit(0)
- end
- end
-end
-
-
-##
-## MAIN BODY :)
-##
-create_collector_support
-@pieces = [
- Piece.new( [ :nw, :ne, :east, :east ], 2),
- Piece.new( [ :ne, :se, :east, :ne ], 7),
- Piece.new( [ :ne, :east, :ne, :nw ], 1),
- Piece.new( [ :east, :sw, :sw, :se ], 6),
- Piece.new( [ :east, :ne, :se, :ne ], 5),
- Piece.new( [ :east, :east, :east, :se ], 0),
- Piece.new( [ :ne, :nw, :se, :east, :se ], 4),
- Piece.new( [ :se, :se, :se, :west ], 9),
- Piece.new( [ :se, :se, :east, :se ], 8),
- Piece.new( [ :east, :east, :sw, :se ], 3)
- ];
-
-@all_pieces = Array.new( @pieces)
-
-@min_board = "99999999999999999999999999999999999999999999999999"
-@max_board = "00000000000000000000000000000000000000000000000000"
-@stop_count = ARGV[0].to_i || 2089
-@all_boards = {}
-@boards_found = 0
-
-find_all ######## DO IT!!!
diff --git a/benchmark/so_nbody.rb b/benchmark/so_nbody.rb
deleted file mode 100644
index 9884fc4edc..0000000000
--- a/benchmark/so_nbody.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-# The Computer Language Shootout
-# http://shootout.alioth.debian.org
-#
-# Optimized for Ruby by Jesse Millikan
-# From version ported by Michael Neumann from the C gcc version,
-# which was written by Christoph Bauer.
-
-SOLAR_MASS = 4 * Math::PI**2
-DAYS_PER_YEAR = 365.24
-
-def _puts *args
-end
-
-class Planet
- attr_accessor :x, :y, :z, :vx, :vy, :vz, :mass
-
- def initialize(x, y, z, vx, vy, vz, mass)
- @x, @y, @z = x, y, z
- @vx, @vy, @vz = vx * DAYS_PER_YEAR, vy * DAYS_PER_YEAR, vz * DAYS_PER_YEAR
- @mass = mass * SOLAR_MASS
- end
-
- def move_from_i(bodies, nbodies, dt, i)
- while i < nbodies
- b2 = bodies[i]
- dx = @x - b2.x
- dy = @y - b2.y
- dz = @z - b2.z
-
- distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
- mag = dt / (distance * distance * distance)
- b_mass_mag, b2_mass_mag = @mass * mag, b2.mass * mag
-
- @vx -= dx * b2_mass_mag
- @vy -= dy * b2_mass_mag
- @vz -= dz * b2_mass_mag
- b2.vx += dx * b_mass_mag
- b2.vy += dy * b_mass_mag
- b2.vz += dz * b_mass_mag
- i += 1
- end
-
- @x += dt * @vx
- @y += dt * @vy
- @z += dt * @vz
- end
-end
-
-def energy(bodies)
- e = 0.0
- nbodies = bodies.size
-
- for i in 0 ... nbodies
- b = bodies[i]
- e += 0.5 * b.mass * (b.vx * b.vx + b.vy * b.vy + b.vz * b.vz)
- for j in (i + 1) ... nbodies
- b2 = bodies[j]
- dx = b.x - b2.x
- dy = b.y - b2.y
- dz = b.z - b2.z
- distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
- e -= (b.mass * b2.mass) / distance
- end
- end
- e
-end
-
-def offset_momentum(bodies)
- px, py, pz = 0.0, 0.0, 0.0
-
- for b in bodies
- m = b.mass
- px += b.vx * m
- py += b.vy * m
- pz += b.vz * m
- end
-
- b = bodies[0]
- b.vx = - px / SOLAR_MASS
- b.vy = - py / SOLAR_MASS
- b.vz = - pz / SOLAR_MASS
-end
-
-BODIES = [
- # sun
- Planet.new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0),
-
- # jupiter
- Planet.new(
- 4.84143144246472090e+00,
- -1.16032004402742839e+00,
- -1.03622044471123109e-01,
- 1.66007664274403694e-03,
- 7.69901118419740425e-03,
- -6.90460016972063023e-05,
- 9.54791938424326609e-04),
-
- # saturn
- Planet.new(
- 8.34336671824457987e+00,
- 4.12479856412430479e+00,
- -4.03523417114321381e-01,
- -2.76742510726862411e-03,
- 4.99852801234917238e-03,
- 2.30417297573763929e-05,
- 2.85885980666130812e-04),
-
- # uranus
- Planet.new(
- 1.28943695621391310e+01,
- -1.51111514016986312e+01,
- -2.23307578892655734e-01,
- 2.96460137564761618e-03,
- 2.37847173959480950e-03,
- -2.96589568540237556e-05,
- 4.36624404335156298e-05),
-
- # neptune
- Planet.new(
- 1.53796971148509165e+01,
- -2.59193146099879641e+01,
- 1.79258772950371181e-01,
- 2.68067772490389322e-03,
- 1.62824170038242295e-03,
- -9.51592254519715870e-05,
- 5.15138902046611451e-05)
-]
-
-init = 200_000 # ARGV[0]
-n = Integer(init)
-
-offset_momentum(BODIES)
-
-puts "%.9f" % energy(BODIES)
-
-nbodies = BODIES.size
-dt = 0.01
-
-n.times do
- i = 0
- while i < nbodies
- b = BODIES[i]
- b.move_from_i(BODIES, nbodies, dt, i + 1)
- i += 1
- end
-end
-
-puts "%.9f" % energy(BODIES)
diff --git a/benchmark/so_nested_loop.rb b/benchmark/so_nested_loop.rb
deleted file mode 100644
index 766fcf7b84..0000000000
--- a/benchmark/so_nested_loop.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/ruby
-# -*- Ruby -*-
-# $Id: nestedloop-ruby.code,v 1.4 2004/11/13 07:42:22 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-# from Avi Bryant
-
-n = 16 # Integer(ARGV.shift || 1)
-x = 0
-n.times do
- n.times do
- n.times do
- n.times do
- n.times do
- n.times do
- x += 1
- end
- end
- end
- end
- end
-end
-# puts x
-
-
diff --git a/benchmark/so_object.rb b/benchmark/so_object.rb
deleted file mode 100644
index 131f44624c..0000000000
--- a/benchmark/so_object.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/ruby
-# -*- Ruby -*-
-# $Id: objinst-ruby.code,v 1.4 2004/11/13 07:42:25 bfulgham Exp $
-# http://www.bagley.org/~doug/shootout/
-# with help from Aristarkh Zagorodnikov
-
-class Toggle
- def initialize(start_state)
- @bool = start_state
- end
-
- def value
- @bool
- end
-
- def activate
- @bool = !@bool
- self
- end
-end
-
-class NthToggle < Toggle
- def initialize(start_state, max_counter)
- super start_state
- @count_max = max_counter
- @counter = 0
- end
-
- def activate
- @counter += 1
- if @counter >= @count_max
- @bool = !@bool
- @counter = 0
- end
- self
- end
-end
-
-n = 1500000 # (ARGV.shift || 1).to_i
-
-toggle = Toggle.new 1
-5.times do
- toggle.activate.value ? 'true' : 'false'
-end
-n.times do
- toggle = Toggle.new 1
-end
-
-ntoggle = NthToggle.new 1, 3
-8.times do
- ntoggle.activate.value ? 'true' : 'false'
-end
-n.times do
- ntoggle = NthToggle.new 1, 3
-end
-
diff --git a/benchmark/so_reverse_complement.yml b/benchmark/so_reverse_complement.yml
deleted file mode 100644
index de05eedfc4..0000000000
--- a/benchmark/so_reverse_complement.yml
+++ /dev/null
@@ -1,137 +0,0 @@
-prelude: |
- bm_so_fasta = <<'EOS'
- # The Computer Language Shootout
- # http://shootout.alioth.debian.org/
- # Contributed by Sokolov Yura
-
- $last = 42.0
- def gen_random(max, im=139968, ia=3877, ic=29573)
- (max * ($last = ($last * ia + ic) % im)) / im
- end
-
- alu =
- "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"+
- "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"+
- "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"+
- "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"+
- "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"+
- "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"+
- "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"
-
- iub = [
- ["a", 0.27],
- ["c", 0.12],
- ["g", 0.12],
- ["t", 0.27],
-
- ["B", 0.02],
- ["D", 0.02],
- ["H", 0.02],
- ["K", 0.02],
- ["M", 0.02],
- ["N", 0.02],
- ["R", 0.02],
- ["S", 0.02],
- ["V", 0.02],
- ["W", 0.02],
- ["Y", 0.02],
- ]
- homosapiens = [
- ["a", 0.3029549426680],
- ["c", 0.1979883004921],
- ["g", 0.1975473066391],
- ["t", 0.3015094502008],
- ]
-
- def make_repeat_fasta(id, desc, src, n)
- puts ">#{id} #{desc}"
- v = nil
- width = 60
- l = src.length
- s = src * ((n / l) + 1)
- s.slice!(n, l)
- puts(s.scan(/.{1,#{width}}/).join("\n"))
- end
-
- def make_random_fasta(id, desc, table, n)
- puts ">#{id} #{desc}"
- rand, v = nil,nil
- width = 60
- chunk = 1 * width
- prob = 0.0
- table.each{|v| v[1]= (prob += v[1])}
- for i in 1..(n/width)
- puts((1..width).collect{
- rand = gen_random(1.0)
- table.find{|v| v[1]>rand}[0]
- }.join)
- end
- if n%width != 0
- puts((1..(n%width)).collect{
- rand = gen_random(1.0)
- table.find{|v| v[1]>rand}[0]
- }.join)
- end
- end
-
-
- n = (ARGV[0] or 250_000).to_i
-
- make_repeat_fasta('ONE', 'Homo sapiens alu', alu, n*2)
- make_random_fasta('TWO', 'IUB ambiguity codes', iub, n*3)
- make_random_fasta('THREE', 'Homo sapiens frequency', homosapiens, n*5)
- EOS
-benchmark:
- - name: so_reverse_complement
- prelude: |
- script = File.join(File.dirname($0), 'bm_so_fasta.rb')
- File.write(script, bm_so_fasta)
-
- def prepare_fasta_output n
- filebase = File.join(File.dirname($0), 'fasta.output')
- script = File.join(File.dirname($0), 'bm_so_fasta.rb')
- file = "#{filebase}.#{n}"
-
- unless FileTest.exist?(file)
- STDERR.puts "preparing #{file}"
-
- open(file, 'w'){|f|
- ARGV[0] = n
- $stdout = f
- load script
- $stdout = STDOUT
- }
- end
- end
- prepare_fasta_output(2_500_000)
- script: |
- # The Great Computer Language Shootout
- # http://shootout.alioth.debian.org/
- #
- # Contributed by Peter Bjarke Olsen
- # Modified by Doug King
-
- seq=Array.new
-
- def revcomp(seq)
- seq.reverse!.tr!('wsatugcyrkmbdhvnATUGCYRKMBDHVN','WSTAACGRYMKVHDBNTAACGRYMKVHDBN')
- stringlen=seq.length
- 0.step(stringlen-1,60) {|x| print seq.slice(x,60) , "\n"}
- end
-
- input = open(File.join(File.dirname($0), 'fasta.output.2500000'), 'rb')
-
- while input.gets
- if $_ =~ />/
- if seq.length != 0
- revcomp(seq.join)
- seq=Array.new
- end
- puts $_
- else
- $_.sub(/\n/,'')
- seq.push $_
- end
- end
- revcomp(seq.join)
- loop_count: 1
diff --git a/benchmark/string_capitalize.yml b/benchmark/string_capitalize.yml
deleted file mode 100644
index 7d23fd3d35..0000000000
--- a/benchmark/string_capitalize.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-prelude: |
- str1 = [*"a".."m",*"N".."Z",*"0".."9"].join("")
- str10 = str1 * 10
- str100 = str10 * 10
- str1000 = str100 * 10
-benchmark:
- capitalize-1: str1.capitalize
- capitalize-10: str10.capitalize
- capitalize-100: str100.capitalize
- capitalize-1000: str1000.capitalize
diff --git a/benchmark/string_casecmp.yml b/benchmark/string_casecmp.yml
deleted file mode 100644
index 2354040a04..0000000000
--- a/benchmark/string_casecmp.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-prelude: |
- lstr1 = [*"a".."z",*"0".."9"].join("")
- lstr10 = lstr1 * 10
- lstr100 = lstr10 * 10
- lstr1000 = lstr100 * 10
- lnonascii1 = [*"\u{e0}".."\u{ff}"].join("")
- lnonascii10 = lnonascii1 * 10
- lnonascii100 = lnonascii10 * 10
- lnonascii1000 = lnonascii100 * 10
- ustr1 = [*"A".."Z",*"0".."9"].join("")
- ustr10 = ustr1 * 10
- ustr100 = ustr10 * 10
- ustr1000 = ustr100 * 10
- unonascii1 = [*"\u{c0}".."\u{df}"].join("")
- unonascii10 = unonascii1 * 10
- unonascii100 = unonascii10 * 10
- unonascii1000 = unonascii100 * 10
-benchmark:
- casecmp-1: lstr1.casecmp(ustr1)
- casecmp-10: lstr10.casecmp(ustr10)
- casecmp-100: lstr100.casecmp(ustr100)
- casecmp-1000: lstr1000.casecmp(ustr1000)
- casecmp-nonascii1: lnonascii1.casecmp(unonascii1)
- casecmp-nonascii10: lnonascii10.casecmp(unonascii10)
- casecmp-nonascii100: lnonascii100.casecmp(unonascii100)
- casecmp-nonascii1000: lnonascii1000.casecmp(unonascii1000)
diff --git a/benchmark/string_casecmp_p.yml b/benchmark/string_casecmp_p.yml
deleted file mode 100644
index a790ce7d55..0000000000
--- a/benchmark/string_casecmp_p.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-prelude: |
- lstr1 = [*"a".."z",*"0".."9"].join("")
- lstr10 = lstr1 * 10
- lstr100 = lstr10 * 10
- lstr1000 = lstr100 * 10
- lnonascii1 = [*"\u{e0}".."\u{ff}"].join("")
- lnonascii10 = lnonascii1 * 10
- lnonascii100 = lnonascii10 * 10
- lnonascii1000 = lnonascii100 * 10
- ustr1 = [*"A".."Z",*"0".."9"].join("")
- ustr10 = ustr1 * 10
- ustr100 = ustr10 * 10
- ustr1000 = ustr100 * 10
- unonascii1 = [*"\u{c0}".."\u{df}"].join("")
- unonascii10 = unonascii1 * 10
- unonascii100 = unonascii10 * 10
- unonascii1000 = unonascii100 * 10
-benchmark:
- casecmp_p-1: lstr1.casecmp?(ustr1)
- casecmp_p-10: lstr10.casecmp?(ustr10)
- casecmp_p-100: lstr100.casecmp?(ustr100)
- casecmp_p-1000: lstr1000.casecmp?(ustr1000)
- casecmp_p-nonascii1: lnonascii1.casecmp?(unonascii1)
- casecmp_p-nonascii10: lnonascii10.casecmp?(unonascii10)
- casecmp_p-nonascii100: lnonascii100.casecmp?(unonascii100)
- casecmp_p-nonascii1000: lnonascii1000.casecmp?(unonascii1000)
diff --git a/benchmark/string_concat.yml b/benchmark/string_concat.yml
deleted file mode 100644
index da14692f5e..0000000000
--- a/benchmark/string_concat.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-prelude: |
- CHUNK = "a" * 64
- UCHUNK = "é" * 32
- SHORT = "a" * (GC::INTERNAL_CONSTANTS[:BASE_SLOT_SIZE] / 2)
- LONG = "a" * (GC::INTERNAL_CONSTANTS[:BASE_SLOT_SIZE] * 2)
- GC.disable # GC causes a lot of variance
-benchmark:
- binary_concat_7bit: |
- buffer = String.new(capacity: 4096, encoding: Encoding::BINARY)
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- utf8_concat_7bit: |
- buffer = String.new(capacity: 4096, encoding: Encoding::UTF_8)
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
- utf8_concat_UTF8: |
- buffer = String.new(capacity: 4096, encoding: Encoding::UTF_8)
- buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
- buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
- buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
- buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
- buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
- buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
- buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
- buffer << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK << UCHUNK
- interpolation: |
- buffer = "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
- "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
- "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
- "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
- "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
- "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
- "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
- "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}" \
- "#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}#{CHUNK}"
- interpolation_same_size_pool: |
- buffer = "#{SHORT}#{SHORT}"
- interpolation_switching_size_pools: |
- buffer = "#{SHORT}#{LONG}"
diff --git a/benchmark/string_downcase.yml b/benchmark/string_downcase.yml
deleted file mode 100644
index 1fea6afbec..0000000000
--- a/benchmark/string_downcase.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-prelude: |
- str1 = [*"A".."Z",*"0".."9"].join("")
- str10 = str1 * 10
- str100 = str10 * 10
- str1000 = str100 * 10
- nonascii1 = [*"\u{c0}".."\u{df}"].join("")
- nonascii10 = nonascii1 * 10
- nonascii100 = nonascii10 * 10
- nonascii1000 = nonascii100 * 10
-benchmark:
- downcase-1: str1.upcase
- downcase-10: str10.upcase
- downcase-100: str100.upcase
- downcase-1000: str1000.upcase
- downcase-nonascii1: nonascii1.downcase
- downcase-nonascii10: nonascii10.downcase
- downcase-nonascii100: nonascii100.downcase
- downcase-nonascii1000: nonascii1000.downcase
diff --git a/benchmark/string_slice.yml b/benchmark/string_slice.yml
deleted file mode 100644
index fc2393c5d1..0000000000
--- a/benchmark/string_slice.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-prelude: |
- long_string = "x"*1000+"-hår"
-benchmark:
- regexp-short: |
- "x-hår".slice!(/-(.)(.)(.)/, 3)
- regexp-long: |
- long_string.dup.slice!(/-(.)(.)(.)/, 3)
- string-short: |
- "x-hår".slice!("r")
- string-long: |
- long_string.dup.slice!("r")
diff --git a/benchmark/string_split.yml b/benchmark/string_split.yml
deleted file mode 100644
index cc2c7d7855..0000000000
--- a/benchmark/string_split.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-prelude: |
- str1 = [*0..5].join(" ") + " "
- str10 = str1 * 10
- str100 = str10 * 10
- str1000 = str100 * 10
-benchmark:
- to_chars-1: str1.split('')
- to_chars-10: str10.split('')
- to_chars-100: str100.split('')
- to_chars-1000: str1000.split('')
- to_words-1: str1.split(' ')
- to_words-10: str10.split(' ')
- to_words-100: str100.split(' ')
- to_words-1000: str1000.split(' ')
- re_chars-1: str1.split(//)
- re_chars-10: str10.split(//)
- re_chars-100: str100.split(//)
- re_chars-1000: str1000.split(//)
- re_space-1: str1.split(/ /)
- re_space-10: str10.split(/ /)
- re_space-100: str100.split(/ /)
- re_space-1000: str1000.split(/ /)
diff --git a/benchmark/string_swapcase.yml b/benchmark/string_swapcase.yml
deleted file mode 100644
index eeb5928907..0000000000
--- a/benchmark/string_swapcase.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-prelude: |
- str1 = [*"A".."M",*"n".."z",*"0".."9"].join("")
- str10 = str1 * 10
- str100 = str10 * 10
- str1000 = str100 * 10
- nonascii1 = [*"\u{c0}".."\u{cf}",*"\u{f0}".."\u{ff}"].join("")
- nonascii10 = nonascii1 * 10
- nonascii100 = nonascii10 * 10
- nonascii1000 = nonascii100 * 10
-benchmark:
- swapcase-1: str1.swapcase
- swapcase-10: str10.swapcase
- swapcase-100: str100.swapcase
- swapcase-1000: str1000.swapcase
- swapcase-nonascii1: nonascii1.swapcase
- swapcase-nonascii10: nonascii10.swapcase
- swapcase-nonascii100: nonascii100.swapcase
- swapcase-nonascii1000: nonascii1000.swapcase
diff --git a/benchmark/string_upcase.yml b/benchmark/string_upcase.yml
deleted file mode 100644
index dab84bbde2..0000000000
--- a/benchmark/string_upcase.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-prelude: |
- str1 = [*"a".."z",*"0".."9"].join("")
- str10 = str1 * 10
- str100 = str10 * 10
- str1000 = str100 * 10
- nonascii1 = [*"\u{e0}".."\u{ff}"].join("")
- nonascii10 = nonascii1 * 10
- nonascii100 = nonascii10 * 10
- nonascii1000 = nonascii100 * 10
-benchmark:
- upcase-1: str1.upcase
- upcase-10: str10.upcase
- upcase-100: str100.upcase
- upcase-1000: str1000.upcase
- upcase-nonascii1: nonascii1.upcase
- upcase-nonascii10: nonascii10.upcase
- upcase-nonascii100: nonascii100.upcase
- upcase-nonascii1000: nonascii1000.upcase
diff --git a/benchmark/time_at.yml b/benchmark/time_at.yml
deleted file mode 100644
index 3247efbe77..0000000000
--- a/benchmark/time_at.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- # frozen_string_literal: true
-benchmark:
- - 'Time.at(0)'
- - 'Time.at(0, 500)'
- - 'Time.at(0, in: "+09:00")'
- - 'Time.at(0, 500, in: "+09:00")'
diff --git a/benchmark/time_new.yml b/benchmark/time_new.yml
deleted file mode 100644
index 5947dd3a41..0000000000
--- a/benchmark/time_new.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-benchmark:
- - 'Time.new(2021)'
- - 'Time.new(2021, 8, 22)'
- - 'Time.new(2021, 8, 22, in: "+09:00")'
diff --git a/benchmark/time_now.yml b/benchmark/time_now.yml
deleted file mode 100644
index f6d6a31489..0000000000
--- a/benchmark/time_now.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-benchmark:
- - 'Time.now'
- - 'Time.now(in: "+09:00")'
diff --git a/benchmark/time_parse.yml b/benchmark/time_parse.yml
deleted file mode 100644
index 6060b58bc6..0000000000
--- a/benchmark/time_parse.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-prelude: |
- require 'time'
- inspect = "2021-08-23 09:57:02 +0900"
- iso8601 = "2021-08-23T09:57:02+09:00"
-benchmark:
- - Time.iso8601(iso8601)
- - Time.parse(iso8601)
- - Time.parse(inspect)
- - Time.new(iso8601) rescue Time.iso8601(iso8601)
- - Time.new(inspect) rescue Time.parse(inspect)
diff --git a/benchmark/time_strptime.yml b/benchmark/time_strptime.yml
deleted file mode 100644
index 8d89ebb7a7..0000000000
--- a/benchmark/time_strptime.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-prelude: |
- require 'time'
-benchmark:
- - Time.strptime("28/Aug/2005:06:54:20 +0000", "%d/%b/%Y:%T %z")
- - Time.strptime("1", "%s")
- - Time.strptime("0 +0100", "%s %z")
- - Time.strptime("0 UTC", "%s %z")
- - Time.strptime("1.5", "%s.%N")
- - Time.strptime("1.000000000001", "%s.%N")
- - Time.strptime("20010203 -0200", "%Y%m%d %z")
- - Time.strptime("20010203 UTC", "%Y%m%d %z")
- - Time.strptime("2018-365", "%Y-%j")
- - Time.strptime("2018-091", "%Y-%j")
diff --git a/benchmark/vm_array.yml b/benchmark/vm_array.yml
deleted file mode 100644
index 2a177237ef..0000000000
--- a/benchmark/vm_array.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-benchmark:
- vm_array: |
- a = [1,2,3,4,5,6,7,8,9,10]
-loop_count: 6000000
diff --git a/benchmark/vm_attr_ivar.yml b/benchmark/vm_attr_ivar.yml
deleted file mode 100644
index 75b803478e..0000000000
--- a/benchmark/vm_attr_ivar.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-prelude: |
- class C
- attr_reader :a, :b
- def initialize
- @a = nil
- @b = nil
- end
- end
- obj = C.new
-benchmark:
- vm_attr_ivar: |
- j = obj.a
- k = obj.b
-loop_count: 30000000
diff --git a/benchmark/vm_attr_ivar_set.yml b/benchmark/vm_attr_ivar_set.yml
deleted file mode 100644
index a0d379b18a..0000000000
--- a/benchmark/vm_attr_ivar_set.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-prelude: |
- class C
- attr_accessor :a, :b
- def initialize
- @a = nil
- @b = nil
- end
- end
- obj = C.new
-benchmark:
- vm_attr_ivar_set: |
- obj.a = 1
- obj.b = 2
-loop_count: 30000000
diff --git a/benchmark/vm_bigarray.yml b/benchmark/vm_bigarray.yml
deleted file mode 100644
index 8b2d3f3443..0000000000
--- a/benchmark/vm_bigarray.yml
+++ /dev/null
@@ -1,105 +0,0 @@
-benchmark:
- vm_bigarray: |
- a = [
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- ]
-loop_count: 6000000
diff --git a/benchmark/vm_bighash.yml b/benchmark/vm_bighash.yml
deleted file mode 100644
index 4dacfde793..0000000000
--- a/benchmark/vm_bighash.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-benchmark:
- vm_bighash: |
- a = {0=>0, 1=>1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9, 10=>10, 11=>11, 12=>12, 13=>13, 14=>14, 15=>15, 16=>16, 17=>17, 18=>18, 19=>19, 20=>20, 21=>21, 22=>22, 23=>23, 24=>24, 25=>25, 26=>26, 27=>27, 28=>28, 29=>29, 30=>30, 31=>31, 32=>32, 33=>33, 34=>34, 35=>35, 36=>36, 37=>37, 38=>38, 39=>39, 40=>40, 41=>41, 42=>42, 43=>43, 44=>44, 45=>45, 46=>46, 47=>47, 48=>48, 49=>49, 50=>50, 51=>51, 52=>52, 53=>53, 54=>54, 55=>55, 56=>56, 57=>57, 58=>58, 59=>59, 60=>60, 61=>61, 62=>62, 63=>63, 64=>64, 65=>65, 66=>66, 67=>67, 68=>68, 69=>69, 70=>70, 71=>71, 72=>72, 73=>73, 74=>74, 75=>75, 76=>76, 77=>77, 78=>78, 79=>79, 80=>80, 81=>81, 82=>82, 83=>83, 84=>84, 85=>85, 86=>86, 87=>87, 88=>88, 89=>89, 90=>90, 91=>91, 92=>92, 93=>93, 94=>94, 95=>95, 96=>96, 97=>97, 98=>98, 99=>99, 100=>100, 101=>101, 102=>102, 103=>103, 104=>104, 105=>105, 106=>106, 107=>107, 108=>108, 109=>109, 110=>110, 111=>111, 112=>112, 113=>113, 114=>114, 115=>115, 116=>116, 117=>117, 118=>118, 119=>119, 120=>120, 121=>121, 122=>122, 123=>123, 124=>124, 125=>125, 126=>126, 127=>127, 128=>128, 129=>129, 130=>130, 131=>131, 132=>132, 133=>133, 134=>134, 135=>135, 136=>136, 137=>137, 138=>138, 139=>139, 140=>140, 141=>141, 142=>142, 143=>143, 144=>144, 145=>145, 146=>146, 147=>147, 148=>148, 149=>149, 150=>150, 151=>151, 152=>152, 153=>153, 154=>154, 155=>155, 156=>156, 157=>157, 158=>158, 159=>159, 160=>160, 161=>161, 162=>162, 163=>163, 164=>164, 165=>165, 166=>166, 167=>167, 168=>168, 169=>169, 170=>170, 171=>171, 172=>172, 173=>173, 174=>174, 175=>175, 176=>176, 177=>177, 178=>178, 179=>179, 180=>180, 181=>181, 182=>182, 183=>183, 184=>184, 185=>185, 186=>186, 187=>187, 188=>188, 189=>189, 190=>190, 191=>191, 192=>192, 193=>193, 194=>194, 195=>195, 196=>196, 197=>197, 198=>198, 199=>199, 200=>200, 201=>201, 202=>202, 203=>203, 204=>204, 205=>205, 206=>206, 207=>207, 208=>208, 209=>209, 210=>210, 211=>211, 212=>212, 213=>213, 214=>214, 215=>215, 216=>216, 217=>217, 218=>218, 219=>219, 220=>220, 221=>221, 222=>222, 223=>223, 224=>224, 225=>225, 226=>226, 227=>227, 228=>228, 229=>229, 230=>230, 231=>231, 232=>232, 233=>233, 234=>234, 235=>235, 236=>236, 237=>237, 238=>238, 239=>239, 240=>240, 241=>241, 242=>242, 243=>243, 244=>244, 245=>245, 246=>246, 247=>247, 248=>248, 249=>249, 250=>250, 251=>251, 252=>252, 253=>253, 254=>254, 255=>255, 256=>256, 257=>257, 258=>258, 259=>259, 260=>260, 261=>261, 262=>262, 263=>263, 264=>264, 265=>265, 266=>266, 267=>267, 268=>268, 269=>269, 270=>270, 271=>271, 272=>272, 273=>273, 274=>274, 275=>275, 276=>276, 277=>277, 278=>278, 279=>279, 280=>280, 281=>281, 282=>282, 283=>283, 284=>284, 285=>285, 286=>286, 287=>287, 288=>288, 289=>289, 290=>290, 291=>291, 292=>292, 293=>293, 294=>294, 295=>295, 296=>296, 297=>297, 298=>298, 299=>299, 300=>300, 301=>301, 302=>302, 303=>303, 304=>304, 305=>305, 306=>306, 307=>307, 308=>308, 309=>309, 310=>310, 311=>311, 312=>312, 313=>313, 314=>314, 315=>315, 316=>316, 317=>317, 318=>318, 319=>319, 320=>320, 321=>321, 322=>322, 323=>323, 324=>324, 325=>325, 326=>326, 327=>327, 328=>328, 329=>329, 330=>330, 331=>331, 332=>332, 333=>333, 334=>334, 335=>335, 336=>336, 337=>337, 338=>338, 339=>339, 340=>340, 341=>341, 342=>342, 343=>343, 344=>344, 345=>345, 346=>346, 347=>347, 348=>348, 349=>349, 350=>350, 351=>351, 352=>352, 353=>353, 354=>354, 355=>355, 356=>356, 357=>357, 358=>358, 359=>359, 360=>360, 361=>361, 362=>362, 363=>363, 364=>364, 365=>365, 366=>366, 367=>367, 368=>368, 369=>369, 370=>370, 371=>371, 372=>372, 373=>373, 374=>374, 375=>375, 376=>376, 377=>377, 378=>378, 379=>379, 380=>380, 381=>381, 382=>382, 383=>383, 384=>384, 385=>385, 386=>386, 387=>387, 388=>388, 389=>389, 390=>390, 391=>391, 392=>392, 393=>393, 394=>394, 395=>395, 396=>396, 397=>397, 398=>398, 399=>399, 400=>400, 401=>401, 402=>402, 403=>403, 404=>404, 405=>405, 406=>406, 407=>407, 408=>408, 409=>409, 410=>410, 411=>411, 412=>412, 413=>413, 414=>414, 415=>415, 416=>416, 417=>417, 418=>418, 419=>419, 420=>420, 421=>421, 422=>422, 423=>423, 424=>424, 425=>425, 426=>426, 427=>427, 428=>428, 429=>429, 430=>430, 431=>431, 432=>432, 433=>433, 434=>434, 435=>435, 436=>436, 437=>437, 438=>438, 439=>439, 440=>440, 441=>441, 442=>442, 443=>443, 444=>444, 445=>445, 446=>446, 447=>447, 448=>448, 449=>449, 450=>450, 451=>451, 452=>452, 453=>453, 454=>454, 455=>455, 456=>456, 457=>457, 458=>458, 459=>459, 460=>460, 461=>461, 462=>462, 463=>463, 464=>464, 465=>465, 466=>466, 467=>467, 468=>468, 469=>469, 470=>470, 471=>471, 472=>472, 473=>473, 474=>474, 475=>475, 476=>476, 477=>477, 478=>478, 479=>479, 480=>480, 481=>481, 482=>482, 483=>483, 484=>484, 485=>485, 486=>486, 487=>487, 488=>488, 489=>489, 490=>490, 491=>491, 492=>492, 493=>493, 494=>494, 495=>495, 496=>496, 497=>497, 498=>498, 499=>499, 500=>500,}
-loop_count: 60000
diff --git a/benchmark/vm_block.yml b/benchmark/vm_block.yml
deleted file mode 100644
index 68b3e40bf5..0000000000
--- a/benchmark/vm_block.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-prelude: |
- def m
- yield
- end
-benchmark:
- vm_block: |
- m{
- }
-loop_count: 30000000
diff --git a/benchmark/vm_block_handler.yml b/benchmark/vm_block_handler.yml
deleted file mode 100644
index 461d7953ad..0000000000
--- a/benchmark/vm_block_handler.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-# :FIXME: is there a way to benchmark block_handler_type_ifunc?
-
-prelude: |
- p = proc{_1}
- o = Object.new
- def o.each
- i = 0
- while i < 3_000_000 do
- yield i
- i += 1
- end
- end
-
-benchmark:
- - name: block_handler_type_iseq
- script: |
- o.each{_1}
-
- - name: block_handler_type_symbol
- script: |
- o.each(&:itself)
-
- - name: block_handler_type_proc
- script: |
- o.each(&p)
-
-loop_count: 1
diff --git a/benchmark/vm_blockparam.yml b/benchmark/vm_blockparam.yml
deleted file mode 100644
index 5e5a0170a2..0000000000
--- a/benchmark/vm_blockparam.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- def m &b
- end
-benchmark:
- vm_blockparam: |
- m{}
-loop_count: 30000000
diff --git a/benchmark/vm_blockparam_call.yml b/benchmark/vm_blockparam_call.yml
deleted file mode 100644
index a7d8d366ea..0000000000
--- a/benchmark/vm_blockparam_call.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- def m &b
- b.call
- end
-benchmark:
- vm_blockparam_call: |
- m{}
-loop_count: 30000000
diff --git a/benchmark/vm_blockparam_pass.yml b/benchmark/vm_blockparam_pass.yml
deleted file mode 100644
index 841f5e7a63..0000000000
--- a/benchmark/vm_blockparam_pass.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-prelude: |
- def bp_yield
- yield
- end
-
- def bp_pass &b
- bp_yield &b
- end
-benchmark:
- vm_blockparam_pass: |
- bp_pass{}
-loop_count: 30000000
diff --git a/benchmark/vm_blockparam_yield.yml b/benchmark/vm_blockparam_yield.yml
deleted file mode 100644
index 8ea9b46ed2..0000000000
--- a/benchmark/vm_blockparam_yield.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- def bp_yield &b
- yield
- end
-benchmark:
- vm_blockparam_yield: |
- bp_yield{}
-loop_count: 30000000
diff --git a/benchmark/vm_call_bmethod.yml b/benchmark/vm_call_bmethod.yml
deleted file mode 100644
index 40136e5aa4..0000000000
--- a/benchmark/vm_call_bmethod.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-prelude: |
- define_method(:a0){}
- define_method(:a1){|a| a}
- define_method(:s){|*a| a}
- define_method(:b){|kw: 1| kw}
-
- t0 = 0.times.to_a
- t1 = 1.times.to_a
- t10 = 10.times.to_a
- t100 = 100.times.to_a
- kw = {kw: 2}
-benchmark:
- bmethod_simple_0: |
- a0
- bmethod_simple_1: |
- a1(1)
- bmethod_simple_0_splat: |
- a0(*t0)
- bmethod_simple_1_splat: |
- a1(*t1)
- bmethod_no_splat: |
- s
- bmethod_0_splat: |
- s(*t0)
- bmethod_1_splat: |
- s(*t1)
- bmethod_10_splat: |
- s(*t10)
- bmethod_100_splat: |
- s(*t100)
- bmethod_kw: |
- b(kw: 1)
- bmethod_no_kw: |
- b
- bmethod_kw_splat: |
- b(**kw)
-loop_count: 6000000
diff --git a/benchmark/vm_call_method_missing.yml b/benchmark/vm_call_method_missing.yml
deleted file mode 100644
index f890796f11..0000000000
--- a/benchmark/vm_call_method_missing.yml
+++ /dev/null
@@ -1,62 +0,0 @@
-prelude: |
- class A0
- def method_missing(m); m end
- end
- class A1
- def method_missing(m, a) a; end
- end
- class S
- def method_missing(m, *a) a; end
- end
- class B
- def method_missing(m, kw: 1) kw end
- end
- class SB
- def method_missing(m, *a, kw: 1) kw end
- end
-
- t0 = 0.times.to_a
- t1 = 1.times.to_a
- t10 = 10.times.to_a
- t200 = 200.times.to_a
- kw = {kw: 2}
-
- a0 = A0.new
- a1 = A1.new
- s = S.new
- b = B.new
- sb = SB.new
-benchmark:
- method_missing_simple_0: |
- a0.()
- method_missing_simple_1: |
- a1.x(1)
- method_missing_simple_0_splat: |
- a0.(*t0)
- method_missing_simple_1_splat: |
- a1.(*t1)
- method_missing_no_splat: |
- s.()
- method_missing_0_splat: |
- s.(*t0)
- method_missing_1_splat: |
- s.(*t1)
- method_missing_10_splat: |
- s.(*t10)
- method_missing_200_splat: |
- s.(*t200)
- method_missing_kw: |
- b.(kw: 1)
- method_missing_no_kw: |
- b.()
- method_missing_kw_splat: |
- b.(**kw)
- method_missing_0_splat_kw: |
- sb.(*t0, **kw)
- method_missing_1_splat_kw: |
- sb.(*t1, **kw)
- method_missing_10_splat_kw: |
- sb.(*t10, **kw)
- method_missing_200_splat_kw: |
- sb.(*t200, **kw)
-loop_count: 1000000
diff --git a/benchmark/vm_call_send_iseq.yml b/benchmark/vm_call_send_iseq.yml
deleted file mode 100644
index 60ff23c475..0000000000
--- a/benchmark/vm_call_send_iseq.yml
+++ /dev/null
@@ -1,77 +0,0 @@
-prelude: |
- def a0; end
- def a1(a) a; end
- def s(*a) a; end
- def b(kw: 1) kw end
- def sb(*a, kw: 1) kw end
-
- t0 = 0.times.to_a
- t1 = 1.times.to_a
- t10 = 10.times.to_a
- t200 = 200.times.to_a
-
- a0_t0 = [:a0, *t0]
- a1_t1 = [:a1, *t1]
- s_t0 = [:s, *t0]
- s_t1 = [:s, *t1]
- s_t10 = [:s, *t10]
- s_t200 = [:s, *t200]
- sb_t0 = [:sb, *t0]
- sb_t1 = [:sb, *t1]
- sb_t10 = [:sb, *t10]
- sb_t200 = [:sb, *t200]
- kw = {kw: 2}
-benchmark:
- send_simple_0: |
- send(:a0)
- send_simple_1: |
- send(:a1, 1)
- send_simple_0_splat: |
- send(:a0, *t0)
- send_simple_1_splat: |
- send(:a1, *t1)
- send_simple_0_splat_comb: |
- send(*a0_t0)
- send_simple_1_splat_comb: |
- send(*a1_t1)
- send_no_splat: |
- send(:s)
- send_0_splat: |
- send(:s, *t0)
- send_1_splat: |
- send(:s, *t1)
- send_10_splat: |
- send(:s, *t10)
- send_200_splat: |
- send(:s, *t200)
- send_0_splat_comb: |
- send(*s_t0)
- send_1_splat_comb: |
- send(*s_t1)
- send_10_splat_comb: |
- send(*s_t10)
- send_200_splat_comb: |
- send(*s_t200)
- send_kw: |
- send(:b, kw: 1)
- send_no_kw: |
- send(:b)
- send_kw_splat: |
- send(:b, **kw)
- send_0_splat_kw: |
- send(:sb, *t0, **kw)
- send_1_splat_kw: |
- send(:sb, *t1, **kw)
- send_10_splat_kw: |
- send(:sb, *t10, **kw)
- send_200_splat_kw: |
- send(:sb, *t200, **kw)
- send_0_splat_comb_kw: |
- send(*sb_t0, **kw)
- send_1_splat_comb_kw: |
- send(*sb_t1, **kw)
- send_10_splat_comb_kw: |
- send(*sb_t10, **kw)
- send_200_splat_comb_kw: |
- send(*sb_t200, **kw)
-loop_count: 3000000
diff --git a/benchmark/vm_call_symproc.yml b/benchmark/vm_call_symproc.yml
deleted file mode 100644
index 16e0ac579e..0000000000
--- a/benchmark/vm_call_symproc.yml
+++ /dev/null
@@ -1,83 +0,0 @@
-prelude: |
- def self.a0; end
- def self.a1(a) a; end
- def self.s(*a) a; end
- def self.b(kw: 1) kw end
- def self.sb(*a, kw: 1) kw end
-
- t0 = 0.times.to_a
- t1 = 1.times.to_a
- t10 = 10.times.to_a
- t200 = 200.times.to_a
-
- a0_t0 = [self, *t0]
- a1_t1 = [self, *t1]
- s_t0 = [self, *t0]
- s_t1 = [self, *t1]
- s_t10 = [self, *t10]
- s_t200 = [self, *t200]
- sb_t0 = [self, *t0]
- sb_t1 = [self, *t1]
- sb_t10 = [self, *t10]
- sb_t200 = [self, *t200]
- kw = {kw: 2}
-
- a0 = :a0.to_proc
- a1 = :a1.to_proc
- s = :s.to_proc
- b = :b.to_proc
- sb = :sb.to_proc
-benchmark:
- symproc_simple_0: |
- a0.(self)
- symproc_simple_1: |
- a1.(self, 1)
- symproc_simple_0_splat: |
- a0.(self, *t0)
- symproc_simple_1_splat: |
- a1.(self, *t1)
- symproc_simple_0_splat_comb: |
- a0.(*a0_t0)
- symproc_simple_1_splat_comb: |
- a1.(*a1_t1)
- symproc_no_splat: |
- s.(self)
- symproc_0_splat: |
- s.(self, *t0)
- symproc_1_splat: |
- s.(self, *t1)
- symproc_10_splat: |
- s.(self, *t10)
- symproc_200_splat: |
- s.(self, *t200)
- symproc_0_splat_comb: |
- s.(*s_t0)
- symproc_1_splat_comb: |
- s.(*s_t1)
- symproc_10_splat_comb: |
- s.(*s_t10)
- symproc_200_splat_comb: |
- s.(*s_t200)
- symproc_kw: |
- b.(self, kw: 1)
- symproc_no_kw: |
- b.(self)
- symproc_kw_splat: |
- b.(self, **kw)
- symproc_0_splat_kw: |
- sb.(self, *t0, **kw)
- symproc_1_splat_kw: |
- sb.(self, *t1, **kw)
- symproc_10_splat_kw: |
- sb.(self, *t10, **kw)
- symproc_200_splat_kw: |
- sb.(self, *t200, **kw)
- symproc_0_splat_comb_kw: |
- sb.(*sb_t0, **kw)
- symproc_1_splat_comb_kw: |
- sb.(*sb_t1, **kw)
- symproc_10_splat_comb_kw: |
- sb.(*sb_t10, **kw)
- symproc_200_splat_comb_kw: |
- sb.(*sb_t200, **kw)
-loop_count: 1000000
diff --git a/benchmark/vm_case.yml b/benchmark/vm_case.yml
deleted file mode 100644
index b26a491a15..0000000000
--- a/benchmark/vm_case.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-benchmark:
- vm_case: |
- case :foo
- when :bar
- raise
- when :baz
- raise
- when :boo
- raise
- when :foo
- # noop
- end
-loop_count: 6000000
diff --git a/benchmark/vm_case_classes.yml b/benchmark/vm_case_classes.yml
deleted file mode 100644
index cacc4f0464..0000000000
--- a/benchmark/vm_case_classes.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-benchmark:
- vm_case_classes: |
- case :foo
- when Hash
- raise
- when Array
- raise
- end
-loop_count: 6000000
diff --git a/benchmark/vm_case_lit.yml b/benchmark/vm_case_lit.yml
deleted file mode 100644
index 9f91801544..0000000000
--- a/benchmark/vm_case_lit.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-# loop_count is not utilized since `i` is involved in the script
-benchmark:
- vm_case_lit: |
- i = 0
- @ret = [ "foo", true, false, :sym, 6, nil, 0.1, 0xffffffffffffffff ]
- def foo(i)
- @ret[i % @ret.size]
- end
-
- while i<6_000_000
- case foo(i)
- when "foo" then :foo
- when true then true
- when false then false
- when :sym then :sym
- when 6 then :fix
- when nil then nil
- when 0.1 then :float
- when 0xffffffffffffffff then :big
- end
- i += 1
- end
-loop_count: 1
diff --git a/benchmark/vm_const.yml b/benchmark/vm_const.yml
deleted file mode 100644
index 8939ca0cd3..0000000000
--- a/benchmark/vm_const.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-prelude: |
- Const = 1
- A = B = C = D = E = F = G = H = I = J = K = L = M = N = O = P = Q = R = S = T = U = V = W = X = Y = Z = 1
- def foo
- A; B; C; D; E; F; G; H; I; J; K; L; M; N; O; P; Q; R; S; T; U; V; W; X; Y; Z
- end
-benchmark:
- vm_const: |
- j = Const
- k = Const
- vm_const_many: |
- foo
-loop_count: 30000000
diff --git a/benchmark/vm_cvar.yml b/benchmark/vm_cvar.yml
deleted file mode 100644
index 1d0e161829..0000000000
--- a/benchmark/vm_cvar.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-prelude: |
- class A
- @@foo = 1
-
- def self.foo
- @@foo
- end
-
- ("A".."Z").each do |module_name|
- eval <<-EOM
- module #{module_name}
- end
-
- include #{module_name}
- EOM
- end
- end
-benchmark:
- vm_cvar: A.foo
-loop_count: 600000
diff --git a/benchmark/vm_defined_method.yml b/benchmark/vm_defined_method.yml
deleted file mode 100644
index 347e0cfd33..0000000000
--- a/benchmark/vm_defined_method.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- class Object
- define_method(:m){}
- end
-benchmark:
- vm_defined_method: |
- m; m; m; m; m; m; m; m;
-loop_count: 6000000
diff --git a/benchmark/vm_dstr.yml b/benchmark/vm_dstr.yml
deleted file mode 100644
index 30c7a3193c..0000000000
--- a/benchmark/vm_dstr.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-prelude: |
- x = y = 'z'
-benchmark:
- vm_dstr: |
- str = "foo#{x}bar#{y}baz"
-loop_count: 6000000
diff --git a/benchmark/vm_dstr_ary.rb b/benchmark/vm_dstr_ary.rb
deleted file mode 100644
index 1d3aa3b97b..0000000000
--- a/benchmark/vm_dstr_ary.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-i = 0
-x = y = []
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{x}bar#{y}baz"
-end
diff --git a/benchmark/vm_dstr_bool.rb b/benchmark/vm_dstr_bool.rb
deleted file mode 100644
index 631ca54755..0000000000
--- a/benchmark/vm_dstr_bool.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-i = 0
-x = true
-y = false
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{x}bar#{y}baz"
-end
diff --git a/benchmark/vm_dstr_class_module.rb b/benchmark/vm_dstr_class_module.rb
deleted file mode 100644
index becf0861c7..0000000000
--- a/benchmark/vm_dstr_class_module.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-i = 0
-class A; end unless defined?(A)
-module B; end unless defined?(B)
-x = A
-y = B
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{x}bar#{y}baz"
-end
-
diff --git a/benchmark/vm_dstr_digit.rb b/benchmark/vm_dstr_digit.rb
deleted file mode 100644
index caaa395192..0000000000
--- a/benchmark/vm_dstr_digit.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-i = 0
-x = 0
-y = 9
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{x}bar#{y}baz"
-end
diff --git a/benchmark/vm_dstr_int.rb b/benchmark/vm_dstr_int.rb
deleted file mode 100644
index ed380d7595..0000000000
--- a/benchmark/vm_dstr_int.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-i = 0
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{i}bar#{i}baz"
-end
diff --git a/benchmark/vm_dstr_nil.rb b/benchmark/vm_dstr_nil.rb
deleted file mode 100644
index ec4f5d6c67..0000000000
--- a/benchmark/vm_dstr_nil.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-i = 0
-x = y = nil
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{x}bar#{y}baz"
-end
diff --git a/benchmark/vm_dstr_obj.rb b/benchmark/vm_dstr_obj.rb
deleted file mode 100644
index fb78637ead..0000000000
--- a/benchmark/vm_dstr_obj.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-i = 0
-x = y = Object.new
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{x}bar#{y}baz"
-end
diff --git a/benchmark/vm_dstr_obj_def.rb b/benchmark/vm_dstr_obj_def.rb
deleted file mode 100644
index 99ff7b98fb..0000000000
--- a/benchmark/vm_dstr_obj_def.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-i = 0
-o = Object.new
-def o.to_s; -""; end
-x = y = o
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{x}bar#{y}baz"
-end
diff --git a/benchmark/vm_dstr_str.rb b/benchmark/vm_dstr_str.rb
deleted file mode 100644
index 45fc107892..0000000000
--- a/benchmark/vm_dstr_str.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-i = 0
-x = y = ""
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{x}bar#{y}baz"
-end
diff --git a/benchmark/vm_dstr_sym.rb b/benchmark/vm_dstr_sym.rb
deleted file mode 100644
index 484b8f8150..0000000000
--- a/benchmark/vm_dstr_sym.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-i = 0
-x = y = :z
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{x}bar#{y}baz"
-end
diff --git a/benchmark/vm_ensure.yml b/benchmark/vm_ensure.yml
deleted file mode 100644
index 4ea62f30de..0000000000
--- a/benchmark/vm_ensure.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-# Not utilizing loop_count since using it for this is too unstable for now
-benchmark:
- vm_ensure: |
- i = 0
- while i<30_000_000
- i += 1
- begin
- begin
- ensure
- end
- ensure
- end
- end
-loop_count: 1
diff --git a/benchmark/vm_eval.yml b/benchmark/vm_eval.yml
deleted file mode 100644
index 7ba1a8d1de..0000000000
--- a/benchmark/vm_eval.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-benchmark:
- vm_eval: |
- eval("1")
-loop_count: 6000000
diff --git a/benchmark/vm_fiber_allocate.yml b/benchmark/vm_fiber_allocate.yml
deleted file mode 100644
index b5a54e1ddf..0000000000
--- a/benchmark/vm_fiber_allocate.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- # Disable GC to see raw throughput:
- GC.disable
-benchmark:
- vm_fiber_allocate: |
- fiber = Fiber.new{Fiber.yield}
- fiber.resume
-loop_count: 100000
diff --git a/benchmark/vm_fiber_count.yml b/benchmark/vm_fiber_count.yml
deleted file mode 100644
index b83d3152d4..0000000000
--- a/benchmark/vm_fiber_count.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-# On Linux, you will need to increase the maximum number of memory maps:
-# sudo sysctl -w vm.max_map_count=200000
-prelude: |
- fibers = []
-benchmark:
- vm_fiber_count: |
- fiber = Fiber.new{Fiber.yield}
- fibers << fiber
- fiber.resume
-loop_count: 100000
diff --git a/benchmark/vm_fiber_reuse.yml b/benchmark/vm_fiber_reuse.yml
deleted file mode 100644
index 4ca41085b1..0000000000
--- a/benchmark/vm_fiber_reuse.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-prelude: |
- GC.disable
- fibers = []
-benchmark:
- vm_fiber_reuse: |
- 1024.times do
- fiber = Fiber.new{Fiber.yield}
- fibers << fiber
- fiber.resume
- end
-
- fibers.clear
- GC.start
-loop_count: 200
diff --git a/benchmark/vm_fiber_reuse_gc.yml b/benchmark/vm_fiber_reuse_gc.yml
deleted file mode 100644
index 892622f121..0000000000
--- a/benchmark/vm_fiber_reuse_gc.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# https://bugs.ruby-lang.org/issues/16009
-prelude: |
- fibers = []
-benchmark:
- vm_fiber_reuse_gc: |
- 2000.times do
- fiber = Fiber.new{Fiber.yield}
- fibers << fiber
- fiber.resume
- end
- fibers.clear
-loop_count: 100
diff --git a/benchmark/vm_fiber_switch.yml b/benchmark/vm_fiber_switch.yml
deleted file mode 100644
index 3de36b66eb..0000000000
--- a/benchmark/vm_fiber_switch.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-prelude: |
- # based on benchmark for [ruby-core:65518] [Feature #10341] by Knut Franke
- fib = Fiber.new do
- loop { Fiber.yield }
- end
-benchmark:
- vm_fiber_switch: |
- fib.resume
-loop_count: 20000000
diff --git a/benchmark/vm_float_simple.yml b/benchmark/vm_float_simple.yml
deleted file mode 100644
index 92f5fd52ab..0000000000
--- a/benchmark/vm_float_simple.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- f = 0.0
-benchmark:
- vm_float_simple: |
- f += 0.1; f -= 0.1
- f += 0.1; f -= 0.1
- f += 0.1; f -= 0.1
-loop_count: 30000000
diff --git a/benchmark/vm_freezeobj.yml b/benchmark/vm_freezeobj.yml
deleted file mode 100644
index 69a795a354..0000000000
--- a/benchmark/vm_freezeobj.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-prelude: |
- objs = 100000.times.map { Object.new }
-benchmark:
- vm_freeze_obj: |
- objs.map(&:freeze)
-loop_count: 600
diff --git a/benchmark/vm_freezestring.yml b/benchmark/vm_freezestring.yml
deleted file mode 100644
index facc9aa043..0000000000
--- a/benchmark/vm_freezestring.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-prelude: |
- class String
- def freeze
- -self
- end
- end
-benchmark:
- vm_freezestring: |
- "tXnL1BP5T1WPXMjuFNLQtallEtRcay1t2lHtJSrlVsDgvunlbtfpr/DGdH0NGYE9".freeze
-loop_count: 6000000
diff --git a/benchmark/vm_gc_short_lived.yml b/benchmark/vm_gc_short_lived.yml
deleted file mode 100644
index 29c803fee3..0000000000
--- a/benchmark/vm_gc_short_lived.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-benchmark:
- vm_gc_short_lived: |
- a = '' # short-lived String
- b = ''
- c = ''
- d = ''
- e = ''
- f = ''
-loop_count: 30000000
diff --git a/benchmark/vm_gc_short_with_complex_long.yml b/benchmark/vm_gc_short_with_complex_long.yml
deleted file mode 100644
index 4b6c3ed7b9..0000000000
--- a/benchmark/vm_gc_short_with_complex_long.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-prelude: |
- def nested_hash h, n
- if n == 0
- ''
- else
- 10.times{
- h[Object.new] = nested_hash(h, n-1)
- }
- end
- end
-
- long_lived = Hash.new
- nested_hash long_lived, 6
-
- GC.start
- GC.start
-benchmark:
- vm_gc_short_with_complex_long: |
- a = '' # short-lived String
- b = ''
- c = ''
- d = ''
- e = ''
- f = ''
-loop_count: 30000000
diff --git a/benchmark/vm_gc_short_with_long.yml b/benchmark/vm_gc_short_with_long.yml
deleted file mode 100644
index 03ba0f95a9..0000000000
--- a/benchmark/vm_gc_short_with_long.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-prelude: |
- long_lived = Array.new(1_000_000){|i| "#{i}"}
- GC.start
- GC.start
-benchmark:
- vm_gc_short_with_long: |
- a = '' # short-lived String
- b = ''
- c = ''
- d = ''
- e = ''
- f = ''
-loop_count: 30000000
diff --git a/benchmark/vm_gc_short_with_symbol.yml b/benchmark/vm_gc_short_with_symbol.yml
deleted file mode 100644
index 129b8bf4ed..0000000000
--- a/benchmark/vm_gc_short_with_symbol.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-prelude: |
- 50_000.times{|i| sym = "sym#{i}".to_sym}
- GC.start
- GC.start
-benchmark:
- vm_gc_short_with_symbol: |
- a = '' # short-lived String
- b = ''
- c = ''
- d = ''
- e = ''
- f = ''
-loop_count: 30000000
diff --git a/benchmark/vm_gc_wb_ary.yml b/benchmark/vm_gc_wb_ary.yml
deleted file mode 100644
index e3293e72d0..0000000000
--- a/benchmark/vm_gc_wb_ary.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-prelude: |
- short_lived_ary = []
-
- if RUBY_VERSION >= "2.2.0"
- GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true)
- end
-
- short_lived = ''
-benchmark:
- vm_gc_wb_ary: |
- short_lived_ary[0] = short_lived # write barrier
-loop_count: 30000000
diff --git a/benchmark/vm_gc_wb_ary_promoted.yml b/benchmark/vm_gc_wb_ary_promoted.yml
deleted file mode 100644
index 003995945b..0000000000
--- a/benchmark/vm_gc_wb_ary_promoted.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-prelude: |
- long_lived = []
-
- if RUBY_VERSION > "2.2.0"
- 3.times{ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true) }
- elsif
- GC.start
- end
-
- short_lived = ''
-
-benchmark:
- vm_gc_wb_ary_promoted: |
- long_lived[0] = short_lived # write barrier
-loop_count: 30000000
diff --git a/benchmark/vm_gc_wb_obj.yml b/benchmark/vm_gc_wb_obj.yml
deleted file mode 100644
index a2a2ce2d18..0000000000
--- a/benchmark/vm_gc_wb_obj.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-prelude: |
- class C
- attr_accessor :foo
- end
- short_lived_obj = C.new
-
- if RUBY_VERSION >= "2.2.0"
- GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true)
- end
-
- short_lived = ''
-benchmark:
- vm_gc_wb_obj: |
- short_lived_obj.foo = short_lived # write barrier
-loop_count: 30000000
diff --git a/benchmark/vm_gc_wb_obj_promoted.yml b/benchmark/vm_gc_wb_obj_promoted.yml
deleted file mode 100644
index 00a454ba72..0000000000
--- a/benchmark/vm_gc_wb_obj_promoted.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-prelude: |
- class C
- attr_accessor :foo
- end
- long_lived = C.new
-
- if RUBY_VERSION >= "2.2.0"
- 3.times{ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true) }
- elsif
- GC.start
- end
-
- short_lived = ''
-benchmark:
- vm_gc_wb_obj_promoted: |
- long_lived.foo = short_lived # write barrier
-loop_count: 30000000
diff --git a/benchmark/vm_iclass_super.yml b/benchmark/vm_iclass_super.yml
deleted file mode 100644
index 21bb7db247..0000000000
--- a/benchmark/vm_iclass_super.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-prelude: |
- class C
- def m
- 1
- end
-
- ("A".."M").each do |module_name|
- eval <<-EOM
- module #{module_name}
- def m; super; end
- end
- prepend #{module_name}
- EOM
- end
- end
-
- obj = C.new
-benchmark:
- vm_iclass_super: obj.m
-loop_count: 6000000
diff --git a/benchmark/vm_ivar.yml b/benchmark/vm_ivar.yml
deleted file mode 100644
index 119531d5ef..0000000000
--- a/benchmark/vm_ivar.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-prelude: "@a = 1\n"
-benchmark:
- vm_ivar: |
- j = @a
- k = @a
-loop_count: 30000000
diff --git a/benchmark/vm_ivar_embedded_obj_init.yml b/benchmark/vm_ivar_embedded_obj_init.yml
deleted file mode 100644
index 74fe20a630..0000000000
--- a/benchmark/vm_ivar_embedded_obj_init.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-prelude: |
- class C
- def set_ivars
- @a = nil
- @b = nil
- @c = nil
- end
- end
-
- c = C.new
-benchmark:
- vm_ivar_embedded_obj_init: |
- c.set_ivars
-loop_count: 30000000
diff --git a/benchmark/vm_ivar_extended_obj_init.yml b/benchmark/vm_ivar_extended_obj_init.yml
deleted file mode 100644
index f054bab282..0000000000
--- a/benchmark/vm_ivar_extended_obj_init.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-prelude: |
- class C
- def set_ivars
- @a = nil
- @b = nil
- @c = nil
- @d = nil
- @e = nil
- end
- end
-
- c = C.new
-benchmark:
- vm_ivar_extended_obj_init: |
- c.set_ivars
-loop_count: 30000000
diff --git a/benchmark/vm_ivar_generic_get.yml b/benchmark/vm_ivar_generic_get.yml
deleted file mode 100644
index dae2d37671..0000000000
--- a/benchmark/vm_ivar_generic_get.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-prelude: |
- class C < Array
- attr_reader :a, :b, :c
- def initialize
- @a = nil
- @b = nil
- @c = nil
- end
- end
-
- c = C.new
-benchmark:
- vm_ivar_generic_get: |
- c.a
- c.b
- c.c
-loop_count: 30000000
diff --git a/benchmark/vm_ivar_generic_set.yml b/benchmark/vm_ivar_generic_set.yml
deleted file mode 100644
index 102a6577fb..0000000000
--- a/benchmark/vm_ivar_generic_set.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-prelude: |
- class C < Array
- def set_ivars
- @a = nil
- @b = nil
- @c = nil
- end
- end
-
- c = C.new
-benchmark:
- vm_ivar_generic_set: |
- c.set_ivars
-loop_count: 30000000
diff --git a/benchmark/vm_ivar_get.yml b/benchmark/vm_ivar_get.yml
deleted file mode 100644
index 9174af6965..0000000000
--- a/benchmark/vm_ivar_get.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-prelude: |
- class Example
- def initialize
- @v0 = 1
- @v1 = 2
- @v3 = 3
- @levar = 1
- end
-
- def get_value_loop
- sum = 0
-
- i = 0
- while i < 1000000
- # 10 times to de-emphasize loop overhead
- sum += @levar
- sum += @levar
- sum += @levar
- sum += @levar
- sum += @levar
- sum += @levar
- sum += @levar
- sum += @levar
- sum += @levar
- sum += @levar
- i += 1
- end
-
- return sum
- end
- end
-
- obj = Example.new
-benchmark:
- vm_ivar_get: |
- obj.get_value_loop
-loop_count: 100
diff --git a/benchmark/vm_ivar_get_unintialized.yml b/benchmark/vm_ivar_get_unintialized.yml
deleted file mode 100644
index a1ccfb06ce..0000000000
--- a/benchmark/vm_ivar_get_unintialized.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-prelude: |
- class Example
- def read
- @uninitialized
- end
- end
-
- obj = Example.new
-benchmark:
- vm_ivar_get_uninitialized: |
- obj.read
-loop_count: 30000000
diff --git a/benchmark/vm_ivar_lazy_set.yml b/benchmark/vm_ivar_lazy_set.yml
deleted file mode 100644
index 7372ffcfbc..0000000000
--- a/benchmark/vm_ivar_lazy_set.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-prelude: |
- class Example
- def lazy_set
- @uninitialized ||= 123
- end
- end
-
- objs = 10000000.times.map { Example.new }
-benchmark:
- vm_ivar_lazy_set: |
- objs.each(&:lazy_set)
-loop_count: 1
diff --git a/benchmark/vm_ivar_of_class.yml b/benchmark/vm_ivar_of_class.yml
deleted file mode 100644
index 172e28b2fd..0000000000
--- a/benchmark/vm_ivar_of_class.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-prelude: |
- class C
- @a = 1
- def self.a
- _a = @a; _a = @a; _a = @a; _a = @a; _a = @a;
- _a = @a; _a = @a; _a = @a; _a = @a; _a = @a;
- end
- end
-benchmark:
- vm_ivar_of_class: |
- a = C.a
-loop_count: 30000000
diff --git a/benchmark/vm_ivar_of_class_set.yml b/benchmark/vm_ivar_of_class_set.yml
deleted file mode 100644
index 2ea5199423..0000000000
--- a/benchmark/vm_ivar_of_class_set.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-prelude: |
- class C
- @a = 1
- def self.a o
- @a = o; @a = o; @a = o; @a = o; @a = o; @a = o;
- end
- end
-benchmark:
- vm_ivar_of_class_set: |
- a = C.a(nil)
-loop_count: 30000000
diff --git a/benchmark/vm_ivar_set.yml b/benchmark/vm_ivar_set.yml
deleted file mode 100644
index 8bbb60043b..0000000000
--- a/benchmark/vm_ivar_set.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-benchmark:
- vm_ivar_set: |
- @a = 1
- @b = 2
-loop_count: 30000000
diff --git a/benchmark/vm_ivar_set_on_instance.yml b/benchmark/vm_ivar_set_on_instance.yml
deleted file mode 100644
index 91857b7742..0000000000
--- a/benchmark/vm_ivar_set_on_instance.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-prelude: |
- class TheClass
- def initialize
- @v0 = 1
- @v1 = 2
- @v3 = 3
- @levar = 1
- end
-
- def set_value_loop
- # 1M
- i = 0
- while i < 1000000
- # 10 times to de-emphasize loop overhead
- @levar = i
- @levar = i
- @levar = i
- @levar = i
- @levar = i
- @levar = i
- @levar = i
- @levar = i
- @levar = i
- @levar = i
- i += 1
- end
- end
- end
-
- obj = TheClass.new
-
-benchmark:
- vm_ivar_set_on_instance: |
- obj.set_value_loop
-loop_count: 100
diff --git a/benchmark/vm_ivar_set_subclass.yml b/benchmark/vm_ivar_set_subclass.yml
deleted file mode 100644
index bc8bf5bf6b..0000000000
--- a/benchmark/vm_ivar_set_subclass.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-prelude: |
- class A
- def set_ivars
- @a = nil
- @b = nil
- @c = nil
- @d = nil
- @e = nil
- end
- end
- class B < A; end
- class C < A; end
-
- b = B.new
- c = C.new
-benchmark:
- vm_ivar_init_subclass: |
- b.set_ivars
- c.set_ivars
-loop_count: 3000000
diff --git a/benchmark/vm_length.yml b/benchmark/vm_length.yml
deleted file mode 100644
index 5fd94e7d86..0000000000
--- a/benchmark/vm_length.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- a = 'abc'
- b = [1, 2, 3]
-benchmark:
- vm_length: |
- a.length
- b.length
-loop_count: 30000000
diff --git a/benchmark/vm_lvar_cond_set.yml b/benchmark/vm_lvar_cond_set.yml
deleted file mode 100644
index 1845f9d12e..0000000000
--- a/benchmark/vm_lvar_cond_set.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-benchmark:
- vm_lvar_cond_set: |
- a ||= 1
- b ||= 1
- c ||= 1
- d ||= 1
- nil
-loop_count: 30000000
diff --git a/benchmark/vm_lvar_init.yml b/benchmark/vm_lvar_init.yml
deleted file mode 100644
index 70a9b1c0ca..0000000000
--- a/benchmark/vm_lvar_init.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-# while loop cost is not removed because `i` is used in the script
-benchmark:
- vm_lvar_init: |
- def m v
- unless v
- # unreachable code
- v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = v9 = v10 =
- v11 = v12 = v13 = v14 = v15 = v16 = v17 = v18 = v19 = v20 =
- v21 = v22 = v23 = v24 = v25 = v26 = v27 = v28 = v29 = v30 =
- v31 = v32 = v33 = v34 = v35 = v36 = v37 = v38 = v39 = v40 =
- v41 = v42 = v43 = v44 = v45 = v46 = v47 = v48 = v49 = v50 = 1
- end
- end
-
- i = 0
-
- while i<30_000_000
- i += 1
- m i
- end
-loop_count: 1
diff --git a/benchmark/vm_lvar_set.yml b/benchmark/vm_lvar_set.yml
deleted file mode 100644
index f29f763d81..0000000000
--- a/benchmark/vm_lvar_set.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-benchmark:
- vm_lvar_set: |
- a = b = c = d = e = f = g = h = j = k = l = m = n = o = p = q = r = 1
-loop_count: 30000000
diff --git a/benchmark/vm_method.yml b/benchmark/vm_method.yml
deleted file mode 100644
index d45e4ec572..0000000000
--- a/benchmark/vm_method.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- def m
- nil
- end
-benchmark:
- vm_method: |
- m; m; m; m; m; m; m; m;
-loop_count: 6000000
diff --git a/benchmark/vm_method_missing.yml b/benchmark/vm_method_missing.yml
deleted file mode 100644
index 3da456c0bb..0000000000
--- a/benchmark/vm_method_missing.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-prelude: |
- class C
- def method_missing mid
- end
- end
-
- obj = C.new
-benchmark:
- vm_method_missing: |
- obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m;
-loop_count: 6000000
diff --git a/benchmark/vm_method_with_block.yml b/benchmark/vm_method_with_block.yml
deleted file mode 100644
index 281a481394..0000000000
--- a/benchmark/vm_method_with_block.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- def m
- nil
- end
-benchmark:
- vm_method_with_block: |
- m{}; m{}; m{}; m{}; m{}; m{}; m{}; m{};
-loop_count: 6000000
diff --git a/benchmark/vm_module_ann_const_set.yml b/benchmark/vm_module_ann_const_set.yml
deleted file mode 100644
index 243229ba4a..0000000000
--- a/benchmark/vm_module_ann_const_set.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-benchmark:
- vm_module_ann_const_set: |
- Module.new.const_set(:X, Module.new)
-loop_count: 6000000
diff --git a/benchmark/vm_module_const_set.yml b/benchmark/vm_module_const_set.yml
deleted file mode 100644
index e5a24181a9..0000000000
--- a/benchmark/vm_module_const_set.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- module M
- end
- $VERBOSE = nil
-benchmark:
- vm_module_const_set: |
- M.const_set(:X, Module.new)
-loop_count: 6000000
diff --git a/benchmark/vm_mutex.yml b/benchmark/vm_mutex.yml
deleted file mode 100644
index abcf1e28ce..0000000000
--- a/benchmark/vm_mutex.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- require 'thread'
-
- m = Thread::Mutex.new
-benchmark:
- vm_mutex: |
- m.synchronize{}
-loop_count: 6000000
diff --git a/benchmark/vm_neq.yml b/benchmark/vm_neq.yml
deleted file mode 100644
index fb04d15ae8..0000000000
--- a/benchmark/vm_neq.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- obj1 = Object.new
- obj2 = Object.new
-benchmark:
- vm_neq: |
- obj1 != obj2
-loop_count: 30000000
diff --git a/benchmark/vm_newlambda.yml b/benchmark/vm_newlambda.yml
deleted file mode 100644
index 0b9787d91a..0000000000
--- a/benchmark/vm_newlambda.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-benchmark:
- vm_newlambda: |
- lambda {}
-loop_count: 6000000
diff --git a/benchmark/vm_not.yml b/benchmark/vm_not.yml
deleted file mode 100644
index c68dde3c50..0000000000
--- a/benchmark/vm_not.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-prelude: |
- obj = Object.new
-benchmark:
- vm_not: |
- !obj
-loop_count: 30000000
diff --git a/benchmark/vm_poly_method.yml b/benchmark/vm_poly_method.yml
deleted file mode 100644
index dd2f4e71de..0000000000
--- a/benchmark/vm_poly_method.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-# loop_count is not utilized since `i` is involved in the script
-benchmark:
- vm_poly_method: |
- class C1
- def m
- 1
- end
- end
- class C2
- def m
- 2
- end
- end
-
- o1 = C1.new
- o2 = C2.new
-
- i = 0
- while i<6_000_000
- o = (i % 2 == 0) ? o1 : o2
- o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
- i += 1
- end
-loop_count: 1
diff --git a/benchmark/vm_poly_method_ov.yml b/benchmark/vm_poly_method_ov.yml
deleted file mode 100644
index bca1b62729..0000000000
--- a/benchmark/vm_poly_method_ov.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-# loop_count is not utilized since `i` is involved in the script
-benchmark:
- vm_poly_method_ov: |
- class C1
- def m
- 1
- end
- end
- class C2
- def m
- 2
- end
- end
-
- o1 = C1.new
- o2 = C2.new
-
- i = 0
- while i<6_000_000
- o = (i % 2 == 0) ? o1 : o2
- # o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
- i += 1
- end
-loop_count: 1
diff --git a/benchmark/vm_poly_same_method.yml b/benchmark/vm_poly_same_method.yml
deleted file mode 100644
index 6c5404ac84..0000000000
--- a/benchmark/vm_poly_same_method.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-prelude: |
- module AR; end
- class AR::Base
- def create_or_update
- nil
- end
- def save
- create_or_update
- end
- end
- class Foo < AR::Base; end
- class Bar < AR::Base; end
- o1 = Foo.new
- o2 = Bar.new
-benchmark:
- vm_poly_same_method: |
- o1.save; o2.save;
- o1.save; o2.save;
- o1.save; o2.save;
- o1.save; o2.save;
- o1.save; o2.save;
- o1.save; o2.save;
- o1.save; o2.save;
- o1.save; o2.save;
-loop_count: 6000000
diff --git a/benchmark/vm_poly_singleton.yml b/benchmark/vm_poly_singleton.yml
deleted file mode 100644
index c7923160fb..0000000000
--- a/benchmark/vm_poly_singleton.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-# loop_count is not utilized since `i` is involved in the script
-benchmark:
- vm_poly_singleton: |
- class C1
- def m; 1; end
- end
-
- o1 = C1.new
- o2 = C1.new
- o2.singleton_class
-
- i = 0
- while i<6_000_000 # benchmark loop 2
- o = (i % 2 == 0) ? o1 : o2
- o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
- i += 1
- end
-loop_count: 1
diff --git a/benchmark/vm_proc.yml b/benchmark/vm_proc.yml
deleted file mode 100644
index 2f8de6c272..0000000000
--- a/benchmark/vm_proc.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-prelude: |
- def m &b
- b
- end
-
- pr = m{
- a = 1
- }
-benchmark:
- vm_proc: |
- pr.call
-loop_count: 6000000
diff --git a/benchmark/vm_raise1.yml b/benchmark/vm_raise1.yml
deleted file mode 100644
index 247d9f70ee..0000000000
--- a/benchmark/vm_raise1.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-prelude: |
- def rec n
- if n > 0
- rec n-1
- else
- raise
- end
- end
-benchmark:
- vm_raise1: |
- begin
- rec 1
- rescue
- # ignore
- end
-loop_count: 6000000
diff --git a/benchmark/vm_raise2.yml b/benchmark/vm_raise2.yml
deleted file mode 100644
index f0fa047b3c..0000000000
--- a/benchmark/vm_raise2.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-prelude: |
- def rec n
- if n > 0
- rec n-1
- else
- raise
- end
- end
-benchmark:
- vm_raise2: |
- begin
- rec 10
- rescue
- # ignore
- end
-loop_count: 6000000
diff --git a/benchmark/vm_regexp.yml b/benchmark/vm_regexp.yml
deleted file mode 100644
index 2aa3d94dbd..0000000000
--- a/benchmark/vm_regexp.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-prelude: |
- str = 'xxxhogexxx'
-benchmark:
- vm_regexp: |
- /hoge/ =~ str
- vm_regexp_invert: |
- str =~ /hoge/
-loop_count: 6000000
diff --git a/benchmark/vm_rescue.yml b/benchmark/vm_rescue.yml
deleted file mode 100644
index b4a0af521f..0000000000
--- a/benchmark/vm_rescue.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-benchmark:
- vm_rescue: |
- begin
- rescue
- end
-loop_count: 30000000
diff --git a/benchmark/vm_send.yml b/benchmark/vm_send.yml
deleted file mode 100644
index f31bc7ac89..0000000000
--- a/benchmark/vm_send.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-prelude: |
- class C
- def m
- end
- end
-
- o = C.new
- m = :m
-benchmark:
- vm_send: |
- o.__send__ :m
- vm_send_var: |
- o.__send__ m
-loop_count: 6000000
diff --git a/benchmark/vm_send_cfunc.yml b/benchmark/vm_send_cfunc.yml
deleted file mode 100644
index 6f12b65176..0000000000
--- a/benchmark/vm_send_cfunc.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-prelude: |
- ary = []
- kw = {a: 1}
- empty_kw = {}
- kw_ary = [Hash.ruby2_keywords_hash(a: 1)]
- empty_kw_ary = [Hash.ruby2_keywords_hash({})]
-benchmark:
- vm_send_cfunc: itself
- vm_send_cfunc_splat: itself(*ary)
- vm_send_cfunc_splat_kw_hash: equal?(*kw_ary)
- vm_send_cfunc_splat_empty_kw_hash: itself(*empty_kw_ary)
- vm_send_cfunc_splat_kw: equal?(*ary, **kw)
- vm_send_cfunc_splat_empty_kw: itself(*ary, **empty_kw)
-loop_count: 20000000
diff --git a/benchmark/vm_simplereturn.yml b/benchmark/vm_simplereturn.yml
deleted file mode 100644
index c9829cff0b..0000000000
--- a/benchmark/vm_simplereturn.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- def m
- return 1
- end
-benchmark:
- vm_simplereturn: m
-loop_count: 30000000
diff --git a/benchmark/vm_string_literal.yml b/benchmark/vm_string_literal.yml
deleted file mode 100644
index 64439c7980..0000000000
--- a/benchmark/vm_string_literal.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-benchmark:
- vm_string_literal: |
- x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-loop_count: 6000000
diff --git a/benchmark/vm_struct_big_aref_hi.yml b/benchmark/vm_struct_big_aref_hi.yml
deleted file mode 100644
index 4cf78970cb..0000000000
--- a/benchmark/vm_struct_big_aref_hi.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- s = Struct.new(*('a'..'z').map { |x| x.to_sym })
- x = s.new
-benchmark:
- vm_struct_big_aref_hi: |
- x.z # x[25]
-loop_count: 6000000
diff --git a/benchmark/vm_struct_big_aref_lo.yml b/benchmark/vm_struct_big_aref_lo.yml
deleted file mode 100644
index c91af27fa5..0000000000
--- a/benchmark/vm_struct_big_aref_lo.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- s = Struct.new(*('a'..'z').map { |x| x.to_sym })
- x = s.new
-benchmark:
- vm_struct_big_aref_lo: |
- x.k # x[10]
-loop_count: 6000000
diff --git a/benchmark/vm_struct_big_aset.yml b/benchmark/vm_struct_big_aset.yml
deleted file mode 100644
index 69550d14ea..0000000000
--- a/benchmark/vm_struct_big_aset.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# loop_count is not utilized since `i` is involved in the script
-benchmark:
- vm_struct_big_aset: |
- s = Struct.new(*('a'..'z').map { |x| x.to_sym })
- x = s.new
- i = 0
- while i<6_000_000
- i += 1
- x.k = i # x[10] = i
- end
-loop_count: 1
diff --git a/benchmark/vm_struct_big_href_hi.yml b/benchmark/vm_struct_big_href_hi.yml
deleted file mode 100644
index 09b764dd13..0000000000
--- a/benchmark/vm_struct_big_href_hi.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- s = Struct.new(*('a'..'z').map { |x| x.to_sym })
- x = s.new
-benchmark:
- vm_struct_big_href_hi: |
- x[:z]
-loop_count: 6000000
diff --git a/benchmark/vm_struct_big_href_lo.yml b/benchmark/vm_struct_big_href_lo.yml
deleted file mode 100644
index d2f00b220f..0000000000
--- a/benchmark/vm_struct_big_href_lo.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- s = Struct.new(*('a'..'z').map { |x| x.to_sym })
- x = s.new
-benchmark:
- vm_struct_big_href_lo: |
- x[:k]
-loop_count: 6000000
diff --git a/benchmark/vm_struct_big_hset.yml b/benchmark/vm_struct_big_hset.yml
deleted file mode 100644
index fc45cbee9c..0000000000
--- a/benchmark/vm_struct_big_hset.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# loop_count is not utilized since `i` is involved in the script
-benchmark:
- vm_struct_big_hset: |
- s = Struct.new(*('a'..'z').map { |x| x.to_sym })
- x = s.new
- i = 0
- while i<6_000_000
- i += 1
- x[:k] = i
- end
-loop_count: 1
diff --git a/benchmark/vm_struct_small_aref.yml b/benchmark/vm_struct_small_aref.yml
deleted file mode 100644
index 5a83251d1e..0000000000
--- a/benchmark/vm_struct_small_aref.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- s = Struct.new(:a, :b, :c)
- x = s.new
-benchmark:
- vm_struct_small_aref: |
- x.a
-loop_count: 6000000
diff --git a/benchmark/vm_struct_small_aset.yml b/benchmark/vm_struct_small_aset.yml
deleted file mode 100644
index 74f435f126..0000000000
--- a/benchmark/vm_struct_small_aset.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# loop_count is not utilized since `i` is involved in the script
-benchmark:
- vm_struct_small_aset: |
- s = Struct.new(:a, :b, :c)
- x = s.new
- i = 0
- while i<6_000_000
- i += 1
- x.a = i
- end
-loop_count: 1
diff --git a/benchmark/vm_struct_small_href.yml b/benchmark/vm_struct_small_href.yml
deleted file mode 100644
index 6b7d7f39e7..0000000000
--- a/benchmark/vm_struct_small_href.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- s = Struct.new(:a, :b, :c)
- x = s.new
-benchmark:
- vm_struct_small_href: |
- x[:a]
-loop_count: 6000000
diff --git a/benchmark/vm_struct_small_hset.yml b/benchmark/vm_struct_small_hset.yml
deleted file mode 100644
index 5d43b150de..0000000000
--- a/benchmark/vm_struct_small_hset.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- s = Struct.new(:a, :b, :c)
- x = s.new
-benchmark:
- vm_struct_small_hset: |
- x[:a] = 1
-loop_count: 6000000
diff --git a/benchmark/vm_super.yml b/benchmark/vm_super.yml
deleted file mode 100644
index 0d1e965c6e..0000000000
--- a/benchmark/vm_super.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-prelude: |
- class C
- def m
- 1
- end
- end
-
- class CC < C
- def m
- super()
- end
- end
-
- obj = CC.new
-benchmark:
- vm_super: obj.m
-loop_count: 6000000
diff --git a/benchmark/vm_swap.yml b/benchmark/vm_swap.yml
deleted file mode 100644
index e824a65e0a..0000000000
--- a/benchmark/vm_swap.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- a = 1
- b = 2
-benchmark:
- vm_swap: |
- a, b = b, a
-loop_count: 30000000
diff --git a/benchmark/vm_thread_alive_check.yml b/benchmark/vm_thread_alive_check.yml
deleted file mode 100644
index d21737d3e8..0000000000
--- a/benchmark/vm_thread_alive_check.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-benchmark:
- vm_thread_alive_check: |
- t = Thread.new{}
- while t.alive?
- Thread.pass
- end
-loop_count: 50_000
-
diff --git a/benchmark/vm_thread_condvar1.rb b/benchmark/vm_thread_condvar1.rb
deleted file mode 100644
index feed27c3ad..0000000000
--- a/benchmark/vm_thread_condvar1.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# two threads, two mutex, two condvar ping-pong
-require 'thread'
-m1 = Thread::Mutex.new
-m2 = Thread::Mutex.new
-cv1 = Thread::ConditionVariable.new
-cv2 = Thread::ConditionVariable.new
-max = 100000
-i = 0
-wait = nil
-m2.synchronize do
- wait = Thread.new do
- m1.synchronize do
- m2.synchronize { cv2.signal }
- while (i += 1) < max
- cv1.wait(m1)
- cv2.signal
- end
- end
- end
- cv2.wait(m2)
-end
-m1.synchronize do
- while i < max
- cv1.signal
- cv2.wait(m1)
- end
-end
-wait.join
diff --git a/benchmark/vm_thread_condvar2.rb b/benchmark/vm_thread_condvar2.rb
deleted file mode 100644
index 6590c4134b..0000000000
--- a/benchmark/vm_thread_condvar2.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# many threads, one mutex, many condvars
-require 'thread'
-m = Thread::Mutex.new
-cv1 = Thread::ConditionVariable.new
-cv2 = Thread::ConditionVariable.new
-max = 1000
-n = 100
-waiting = 0
-scvs = []
-waiters = n.times.map do |i|
- start_cv = Thread::ConditionVariable.new
- scvs << start_cv
- start_mtx = Thread::Mutex.new
- start_mtx.synchronize do
- th = Thread.new(start_mtx, start_cv) do |sm, scv|
- m.synchronize do
- sm.synchronize { scv.signal }
- max.times do
- cv2.signal if (waiting += 1) == n
- cv1.wait(m)
- end
- end
- end
- start_cv.wait(start_mtx)
- th
- end
-end
-m.synchronize do
- max.times do
- cv2.wait(m) until waiting == n
- waiting = 0
- cv1.broadcast
- end
-end
-waiters.each(&:join)
diff --git a/benchmark/vm_thread_pass.rb b/benchmark/vm_thread_pass.rb
deleted file mode 100644
index 438bd08d45..0000000000
--- a/benchmark/vm_thread_pass.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-# Plenty Thread.pass
-# A performance may depend on GVL implementation.
-
-tmax = (ARGV.shift || 8).to_i
-lmax = 400_000 / tmax
-
-(1..tmax).map{
- Thread.new{
- lmax.times{
- Thread.pass
- }
- }
-}.each{|t| t.join}
-
-
diff --git a/benchmark/vm_thread_pass_flood.rb b/benchmark/vm_thread_pass_flood.rb
deleted file mode 100644
index 65df8e6154..0000000000
--- a/benchmark/vm_thread_pass_flood.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# n.b. this is a good test for GVL when pinned to a single CPU
-
-5_000.times{
- Thread.new{loop{Thread.pass}}
-}
-
-i = 0
-while i<10_000
- i += 1
-end
diff --git a/benchmark/vm_thread_queue.rb b/benchmark/vm_thread_queue.rb
deleted file mode 100644
index 1dd3696a3c..0000000000
--- a/benchmark/vm_thread_queue.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'thread'
-
-n = 10_000_000
-q = Thread::Queue.new
-consumer = Thread.new{
- while q.pop
- # consuming
- end
-}
-
-producer = Thread.new{
- n.times{
- q.push true
- }
- q.push nil
-}
-
-consumer.join
diff --git a/benchmark/vm_thread_sleep.yml b/benchmark/vm_thread_sleep.yml
deleted file mode 100644
index 96901d8466..0000000000
--- a/benchmark/vm_thread_sleep.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-benchmark:
- vm_thread_sleep: |
- Thread.new { sleep }
-loop_count: 10_000
diff --git a/benchmark/vm_unif1.yml b/benchmark/vm_unif1.yml
deleted file mode 100644
index 04187bb0e2..0000000000
--- a/benchmark/vm_unif1.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-prelude: |
- def m a, b
- end
-benchmark:
- vm_unif1: |
- m 100, 200
-loop_count: 6000000
diff --git a/benchmark/vm_yield.yml b/benchmark/vm_yield.yml
deleted file mode 100644
index 230be3d84f..0000000000
--- a/benchmark/vm_yield.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-# while loop cost is not removed due to benchmark_driver.gem's limitation
-benchmark:
- vm_yield: |
- def m
- i = 0
- while i<30_000_000
- i += 1
- yield
- end
- end
-
- m{}
-loop_count: 1
diff --git a/benchmark/vm_zsuper.yml b/benchmark/vm_zsuper.yml
deleted file mode 100644
index bfb5837578..0000000000
--- a/benchmark/vm_zsuper.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-prelude: |
- class C
- def m a
- 1
- end
- end
-
- class CC < C
- def m a
- super
- end
- end
-
- obj = CC.new
-benchmark:
- vm_zsuper: |
- obj.m 10
-loop_count: 6000000
diff --git a/benchmark/wc.input.base b/benchmark/wc.input.base
new file mode 100644
index 0000000000..41143fbac0
--- /dev/null
+++ b/benchmark/wc.input.base
@@ -0,0 +1,25 @@
+Subject: Re: Who was Izchak Miller?
+From: "Jane D. Anonymous" <nobody@yale.edu>
+Date: 1996/04/28
+Message-Id: <4lv7bc$oh@news.ycc.yale.edu>
+References: <317C405E.5DFA@panix.com> <4lk6vl$gde@ns.oar.net>
+To: 75176.2330@compuserve.com
+Content-Type: text/plain; charset=us-ascii
+Organization: Yale University
+X-Url: news:4lk6vl$gde@ns.oar.net
+Mime-Version: 1.0
+Newsgroups: rec.games.roguelike.nethack
+X-Mailer: Mozilla 1.1N (Macintosh; I; 68K)
+
+Hello there, Izchak Miller was my father. When I was younger I spent
+many a night, hunched over the keyboard with a cup of tea, playing
+nethack with him and my brother. my dad was a philosopher with a strong
+weakness for fantasy/sci fi. I remember when he started to get involved
+with the Nethack team- my brother's Dungeons and Dragons monster book
+found a regular place beside my dad's desk. it's nice to see him living
+on in the game he loved so much :-).
+ Tamar Miller
+
+The following is a really long word of 5000 characters:
+
+wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
diff --git a/bignum.c b/bignum.c
index bef92f5a33..7ffb798e5e 100644
--- a/bignum.c
+++ b/bignum.c
@@ -9,45 +9,32 @@
**********************************************************************/
-#include "ruby/internal/config.h"
-
-#include <ctype.h>
-#include <float.h>
-#include <math.h>
+#include "internal.h"
+#include "ruby/thread.h"
+#include "ruby/util.h"
+#include "id.h"
#ifdef HAVE_STRINGS_H
-# include <strings.h>
+#include <strings.h>
#endif
-
+#include <math.h>
+#include <float.h>
+#include <ctype.h>
#ifdef HAVE_IEEEFP_H
-# include <ieeefp.h>
+#include <ieeefp.h>
#endif
+#include "ruby_assert.h"
-#if !defined(USE_GMP)
#if defined(HAVE_LIBGMP) && defined(HAVE_GMP_H)
-# define USE_GMP 1
-#else
-# define USE_GMP 0
-#endif
-#endif
-#if USE_GMP
-# include <gmp.h>
+#define USE_GMP
+#include <gmp.h>
#endif
-#include "id.h"
-#include "internal.h"
-#include "internal/bignum.h"
-#include "internal/complex.h"
-#include "internal/gc.h"
-#include "internal/numeric.h"
-#include "internal/object.h"
-#include "internal/sanitizers.h"
-#include "internal/variable.h"
-#include "internal/warnings.h"
-#include "ruby/thread.h"
-#include "ruby/util.h"
-#include "ruby_assert.h"
+#define RB_BIGNUM_TYPE_P(x) RB_TYPE_P((x), T_BIGNUM)
+#ifndef RUBY_INTEGER_UNIFICATION
+VALUE rb_cBignum;
+#endif
const char ruby_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz";
#ifndef SIZEOF_BDIGIT_DBL
@@ -78,7 +65,8 @@ STATIC_ASSERT(sizeof_long_and_sizeof_bdigit, SIZEOF_BDIGIT % SIZEOF_LONG == 0);
#else
# define HOST_BIGENDIAN_P 0
#endif
-/* (!LSHIFTABLE(d, n) ? 0 : (n)) is the same as n but suppress a warning, C4293, by Visual Studio. */
+#define ALIGNOF(type) ((int)offsetof(struct { char f1; type f2; }, f2))
+/* (!LSHIFTABLE(d, n) ? 0 : (n)) is same as n but suppress a warning, C4293, by Visual Studio. */
#define LSHIFTABLE(d, n) ((n) < sizeof(d) * CHAR_BIT)
#define LSHIFTX(d, n) (!LSHIFTABLE(d, n) ? 0 : ((d) << (!LSHIFTABLE(d, n) ? 0 : (n))))
#define CLEAR_LOWBITS(d, numbits) ((d) & LSHIFTX(~((d)*0), (numbits)))
@@ -105,8 +93,8 @@ STATIC_ASSERT(sizeof_long_and_sizeof_bdigit, SIZEOF_BDIGIT % SIZEOF_LONG == 0);
#endif
#define BIGZEROP(x) (BIGNUM_LEN(x) == 0 || \
- (BDIGITS(x)[0] == 0 && \
- (BIGNUM_LEN(x) == 1 || bigzero_p(x))))
+ (BDIGITS(x)[0] == 0 && \
+ (BIGNUM_LEN(x) == 1 || bigzero_p(x))))
#define BIGSIZE(x) (BIGNUM_LEN(x) == 0 ? (size_t)0 : \
BDIGITS(x)[BIGNUM_LEN(x)-1] ? \
(size_t)(BIGNUM_LEN(x)*SIZEOF_BDIGIT - nlz(BDIGITS(x)[BIGNUM_LEN(x)-1])/CHAR_BIT) : \
@@ -151,7 +139,7 @@ STATIC_ASSERT(sizeof_long_and_sizeof_bdigit, SIZEOF_BDIGIT % SIZEOF_LONG == 0);
#define GMP_DIV_DIGITS 20
#define GMP_BIG2STR_DIGITS 20
#define GMP_STR2BIG_DIGITS 20
-#if USE_GMP
+#ifdef USE_GMP
# define NAIVE_MUL_DIGITS GMP_MUL_DIGITS
#else
# define NAIVE_MUL_DIGITS KARATSUBA_MUL_DIGITS
@@ -162,11 +150,15 @@ typedef void (mulfunc_t)(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, c
static mulfunc_t bary_mul_toom3_start;
static mulfunc_t bary_mul_karatsuba_start;
static BDIGIT bigdivrem_single(BDIGIT *qds, const BDIGIT *xds, size_t xn, BDIGIT y);
+static void bary_divmod(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn);
+static VALUE bigmul0(VALUE x, VALUE y);
+static void bary_mul_toom3(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn);
static VALUE bignew_1(VALUE klass, size_t len, int sign);
static inline VALUE bigtrunc(VALUE x);
static VALUE bigsq(VALUE x);
+static void bigdivmod(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp);
static inline VALUE power_cache_get_power(int base, int power_level, size_t *numdigits_ret);
#if SIZEOF_BDIGIT <= SIZEOF_INT
@@ -394,7 +386,6 @@ bdigitdbl2bary(BDIGIT *ds, size_t n, BDIGIT_DBL num)
static int
bary_cmp(const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
{
- size_t i;
BARY_TRUNC(xds, xn);
BARY_TRUNC(yds, yn);
@@ -403,12 +394,11 @@ bary_cmp(const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
if (xn > yn)
return 1;
- for (i = 0; i < xn; i++)
- if (xds[xn - i - 1] != yds[yn - i - 1])
- break;
- if (i == xn)
+ while (xn-- && xds[xn] == yds[xn])
+ ;
+ if (xn == (size_t)-1)
return 0;
- return xds[xn - i - 1] < yds[yn - i - 1] ? -1 : 1;
+ return xds[xn] < yds[xn] ? -1 : 1;
}
static BDIGIT
@@ -419,9 +409,9 @@ bary_small_lshift(BDIGIT *zds, const BDIGIT *xds, size_t n, int shift)
assert(0 <= shift && shift < BITSPERDIG);
for (i=0; i<n; i++) {
- num = num | (BDIGIT_DBL)*xds++ << shift;
- *zds++ = BIGLO(num);
- num = BIGDN(num);
+ num = num | (BDIGIT_DBL)*xds++ << shift;
+ *zds++ = BIGLO(num);
+ num = BIGDN(num);
}
return BIGLO(num);
}
@@ -429,17 +419,16 @@ bary_small_lshift(BDIGIT *zds, const BDIGIT *xds, size_t n, int shift)
static void
bary_small_rshift(BDIGIT *zds, const BDIGIT *xds, size_t n, int shift, BDIGIT higher_bdigit)
{
- size_t i;
BDIGIT_DBL num = 0;
assert(0 <= shift && shift < BITSPERDIG);
num = BIGUP(higher_bdigit);
- for (i = 0; i < n; i++) {
- BDIGIT x = xds[n - i - 1];
- num = (num | x) >> shift;
- zds[n - i - 1] = BIGLO(num);
- num = BIGUP(x);
+ while (n--) {
+ BDIGIT x = xds[n];
+ num = (num | x) >> shift;
+ zds[n] = BIGLO(num);
+ num = BIGUP(x);
}
}
@@ -449,7 +438,7 @@ bary_zero_p(const BDIGIT *xds, size_t xn)
if (xn == 0)
return 1;
do {
- if (xds[--xn]) return 0;
+ if (xds[--xn]) return 0;
} while (xn);
return 1;
}
@@ -457,15 +446,15 @@ bary_zero_p(const BDIGIT *xds, size_t xn)
static void
bary_neg(BDIGIT *ds, size_t n)
{
- size_t i;
- for (i = 0; i < n; i++)
- ds[n - i - 1] = BIGLO(~ds[n - i - 1]);
+ while (n--)
+ ds[n] = BIGLO(~ds[n]);
}
static int
bary_2comp(BDIGIT *ds, size_t n)
{
size_t i;
+ i = 0;
for (i = 0; i < n; i++) {
if (ds[i] != 0) {
goto non_zero;
@@ -628,12 +617,8 @@ static int
bytes_2comp(unsigned char *buf, size_t len)
{
size_t i;
- for (i = 0; i < len; i++) {
- signed char c = buf[i];
- signed int d = ~c;
- unsigned int e = d & 0xFF;
- buf[i] = e;
- }
+ for (i = 0; i < len; i++)
+ buf[i] = ~buf[i];
for (i = 0; i < len; i++) {
buf[i]++;
if (buf[i] != 0)
@@ -683,7 +668,7 @@ bary_pack(int sign, BDIGIT *ds, size_t num_bdigits, void *words, size_t numwords
return ((1 < de - dp || CLEAR_LOWBITS(d, 8) != 0) ? 2 : 1) * sign;
}
#if defined(HAVE_UINT16_T) && 2 <= SIZEOF_BDIGIT
- if (wordsize == 2 && (uintptr_t)words % RUBY_ALIGNOF(uint16_t) == 0) {
+ if (wordsize == 2 && (uintptr_t)words % ALIGNOF(uint16_t) == 0) {
uint16_t u = (uint16_t)(d = dp[0]);
if (need_swap) u = swap16(u);
*((uint16_t *)words) = u;
@@ -691,7 +676,7 @@ bary_pack(int sign, BDIGIT *ds, size_t num_bdigits, void *words, size_t numwords
}
#endif
#if defined(HAVE_UINT32_T) && 4 <= SIZEOF_BDIGIT
- if (wordsize == 4 && (uintptr_t)words % RUBY_ALIGNOF(uint32_t) == 0) {
+ if (wordsize == 4 && (uintptr_t)words % ALIGNOF(uint32_t) == 0) {
uint32_t u = (uint32_t)(d = dp[0]);
if (need_swap) u = swap32(u);
*((uint32_t *)words) = u;
@@ -699,7 +684,7 @@ bary_pack(int sign, BDIGIT *ds, size_t num_bdigits, void *words, size_t numwords
}
#endif
#if defined(HAVE_UINT64_T) && 8 <= SIZEOF_BDIGIT
- if (wordsize == 8 && (uintptr_t)words % RUBY_ALIGNOF(uint64_t) == 0) {
+ if (wordsize == 8 && (uintptr_t)words % ALIGNOF(uint64_t) == 0) {
uint64_t u = (uint64_t)(d = dp[0]);
if (need_swap) u = swap64(u);
*((uint64_t *)words) = u;
@@ -714,7 +699,7 @@ bary_pack(int sign, BDIGIT *ds, size_t num_bdigits, void *words, size_t numwords
return (1 < de - dp || FILL_LOWBITS(d, 8) != -1) ? -2 : -1;
}
#if defined(HAVE_UINT16_T) && 2 <= SIZEOF_BDIGIT
- if (wordsize == 2 && (uintptr_t)words % RUBY_ALIGNOF(uint16_t) == 0) {
+ if (wordsize == 2 && (uintptr_t)words % ALIGNOF(uint16_t) == 0) {
uint16_t u = (uint16_t)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
if (need_swap) u = swap16(u);
*((uint16_t *)words) = u;
@@ -723,7 +708,7 @@ bary_pack(int sign, BDIGIT *ds, size_t num_bdigits, void *words, size_t numwords
}
#endif
#if defined(HAVE_UINT32_T) && 4 <= SIZEOF_BDIGIT
- if (wordsize == 4 && (uintptr_t)words % RUBY_ALIGNOF(uint32_t) == 0) {
+ if (wordsize == 4 && (uintptr_t)words % ALIGNOF(uint32_t) == 0) {
uint32_t u = (uint32_t)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
if (need_swap) u = swap32(u);
*((uint32_t *)words) = u;
@@ -732,7 +717,7 @@ bary_pack(int sign, BDIGIT *ds, size_t num_bdigits, void *words, size_t numwords
}
#endif
#if defined(HAVE_UINT64_T) && 8 <= SIZEOF_BDIGIT
- if (wordsize == 8 && (uintptr_t)words % RUBY_ALIGNOF(uint64_t) == 0) {
+ if (wordsize == 8 && (uintptr_t)words % ALIGNOF(uint64_t) == 0) {
uint64_t u = (uint64_t)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
if (need_swap) u = swap64(u);
*((uint64_t *)words) = u;
@@ -775,7 +760,7 @@ bary_pack(int sign, BDIGIT *ds, size_t num_bdigits, void *words, size_t numwords
}
#endif
if (nails == 0 && SIZEOF_BDIGIT == sizeof(BDIGIT) &&
- wordsize % SIZEOF_BDIGIT == 0 && (uintptr_t)words % RUBY_ALIGNOF(BDIGIT) == 0) {
+ wordsize % SIZEOF_BDIGIT == 0 && (uintptr_t)words % ALIGNOF(BDIGIT) == 0) {
size_t bdigits_per_word = wordsize / SIZEOF_BDIGIT;
size_t src_num_bdigits = de - dp;
size_t dst_num_bdigits = numwords * bdigits_per_word;
@@ -977,7 +962,7 @@ integer_unpack_num_bdigits_small(size_t numwords, size_t wordsize, size_t nails,
{
/* nlp_bits stands for number of leading padding bits */
size_t num_bits = (wordsize * CHAR_BIT - nails) * numwords;
- size_t num_bdigits = roomof(num_bits, BITSPERDIG);
+ size_t num_bdigits = (num_bits + BITSPERDIG - 1) / BITSPERDIG;
*nlp_bits_ret = (int)(num_bdigits * BITSPERDIG - num_bits);
return num_bdigits;
}
@@ -987,7 +972,7 @@ integer_unpack_num_bdigits_generic(size_t numwords, size_t wordsize, size_t nail
{
/* BITSPERDIG = SIZEOF_BDIGIT * CHAR_BIT */
/* num_bits = (wordsize * CHAR_BIT - nails) * numwords */
- /* num_bdigits = roomof(num_bits, BITSPERDIG) */
+ /* num_bdigits = (num_bits + BITSPERDIG - 1) / BITSPERDIG */
/* num_bits = CHAR_BIT * (wordsize * numwords) - nails * numwords = CHAR_BIT * num_bytes1 - nails * numwords */
size_t num_bytes1 = wordsize * numwords;
@@ -1055,7 +1040,6 @@ integer_unpack_num_bdigits(size_t numwords, size_t wordsize, size_t nails, int *
size_t num_bdigits1 = integer_unpack_num_bdigits_generic(numwords, wordsize, nails, &nlp_bits1);
assert(num_bdigits == num_bdigits1);
assert(*nlp_bits_ret == nlp_bits1);
- (void)num_bdigits1;
}
#endif
}
@@ -1096,13 +1080,6 @@ integer_unpack_single_bdigit(BDIGIT u, size_t size, int flags, BDIGIT *dp)
return sign;
}
-#ifdef HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED
-#define reinterpret_cast(type, value) (type) \
- __builtin_assume_aligned((value), sizeof(*(type)NULL));
-#else
-#define reinterpret_cast(type, value) (type)value
-#endif
-
static int
bary_unpack_internal(BDIGIT *bdigits, size_t num_bdigits, const void *words, size_t numwords, size_t wordsize, size_t nails, int flags, int nlp_bits)
{
@@ -1123,24 +1100,23 @@ bary_unpack_internal(BDIGIT *bdigits, size_t num_bdigits, const void *words, siz
return integer_unpack_single_bdigit(*(uint8_t *)buf, sizeof(uint8_t), flags, dp);
}
#if defined(HAVE_UINT16_T) && 2 <= SIZEOF_BDIGIT
- if (wordsize == 2 && (uintptr_t)words % RUBY_ALIGNOF(uint16_t) == 0) {
- uint16_t u = *reinterpret_cast(const uint16_t *, buf);
+ if (wordsize == 2 && (uintptr_t)words % ALIGNOF(uint16_t) == 0) {
+ uint16_t u = *(uint16_t *)buf;
return integer_unpack_single_bdigit(need_swap ? swap16(u) : u, sizeof(uint16_t), flags, dp);
}
#endif
#if defined(HAVE_UINT32_T) && 4 <= SIZEOF_BDIGIT
- if (wordsize == 4 && (uintptr_t)words % RUBY_ALIGNOF(uint32_t) == 0) {
- uint32_t u = *reinterpret_cast(const uint32_t *, buf);
+ if (wordsize == 4 && (uintptr_t)words % ALIGNOF(uint32_t) == 0) {
+ uint32_t u = *(uint32_t *)buf;
return integer_unpack_single_bdigit(need_swap ? swap32(u) : u, sizeof(uint32_t), flags, dp);
}
#endif
#if defined(HAVE_UINT64_T) && 8 <= SIZEOF_BDIGIT
- if (wordsize == 8 && (uintptr_t)words % RUBY_ALIGNOF(uint64_t) == 0) {
- uint64_t u = *reinterpret_cast(const uint64_t *, buf);
+ if (wordsize == 8 && (uintptr_t)words % ALIGNOF(uint64_t) == 0) {
+ uint64_t u = *(uint64_t *)buf;
return integer_unpack_single_bdigit(need_swap ? swap64(u) : u, sizeof(uint64_t), flags, dp);
}
#endif
-#undef reinterpret_cast
}
#if !defined(WORDS_BIGENDIAN)
if (nails == 0 && SIZEOF_BDIGIT == sizeof(BDIGIT) &&
@@ -1350,9 +1326,9 @@ bary_subb(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yd
num = borrow ? -1 : 0;
for (i = 0; i < sn; i++) {
- num += (BDIGIT_DBL_SIGNED)xds[i] - yds[i];
- zds[i] = BIGLO(num);
- num = BIGDN(num);
+ num += (BDIGIT_DBL_SIGNED)xds[i] - yds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
}
if (yn <= xn) {
for (; i < xn; i++) {
@@ -1371,7 +1347,7 @@ bary_subb(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yd
}
if (num == 0) goto num_is_zero;
for (; i < zn; i++) {
- zds[i] = BDIGMAX;
+ zds[i] = BDIGMAX;
}
return 1;
@@ -1379,10 +1355,10 @@ bary_subb(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yd
if (xds == zds && xn == zn)
return 0;
for (; i < xn; i++) {
- zds[i] = xds[i];
+ zds[i] = xds[i];
}
for (; i < zn; i++) {
- zds[i] = 0;
+ zds[i] = 0;
}
return 0;
}
@@ -1409,27 +1385,27 @@ bary_addc(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yd
assert(yn <= zn);
if (xn > yn) {
- const BDIGIT *tds;
- tds = xds; xds = yds; yds = tds;
- i = xn; xn = yn; yn = i;
+ const BDIGIT *tds;
+ tds = xds; xds = yds; yds = tds;
+ i = xn; xn = yn; yn = i;
}
num = carry ? 1 : 0;
for (i = 0; i < xn; i++) {
- num += (BDIGIT_DBL)xds[i] + yds[i];
- zds[i] = BIGLO(num);
- num = BIGDN(num);
+ num += (BDIGIT_DBL)xds[i] + yds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
}
for (; i < yn; i++) {
if (num == 0) goto num_is_zero;
- num += yds[i];
- zds[i] = BIGLO(num);
- num = BIGDN(num);
+ num += yds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
}
for (; i < zn; i++) {
if (num == 0) goto num_is_zero;
- zds[i] = BIGLO(num);
- num = BIGDN(num);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
}
return num != 0;
@@ -1437,10 +1413,10 @@ bary_addc(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yd
if (yds == zds && yn == zn)
return 0;
for (; i < yn; i++) {
- zds[i] = yds[i];
+ zds[i] = yds[i];
}
for (; i < zn; i++) {
- zds[i] = 0;
+ zds[i] = 0;
}
return 0;
}
@@ -1456,9 +1432,7 @@ bary_add_one(BDIGIT *ds, size_t n)
{
size_t i;
for (i = 0; i < n; i++) {
- BDIGIT_DBL n = ds[i];
- n += 1;
- ds[i] = BIGLO(n);
+ ds[i] = BIGLO(ds[i]+1);
if (ds[i] != 0)
return 0;
}
@@ -1526,16 +1500,15 @@ bigdivrem_mulsub(BDIGIT *zds, size_t zn, BDIGIT x, const BDIGIT *yds, size_t yn)
i = 0;
do {
- BDIGIT_DBL_SIGNED ee;
+ BDIGIT_DBL ee;
t2 += (BDIGIT_DBL)yds[i] * x;
ee = num - BIGLO(t2);
- num = (BDIGIT_DBL_SIGNED)zds[i] + ee;
+ num = (BDIGIT_DBL)zds[i] + ee;
if (ee) zds[i] = BIGLO(num);
num = BIGDN(num);
t2 = BIGDN(t2);
} while (++i < yn);
- num -= (BDIGIT_DBL_SIGNED)t2;
- num += (BDIGIT_DBL_SIGNED)zds[yn]; /* borrow from high digit; don't update */
+ num += zds[i] - t2; /* borrow from high digit; don't update */
return num;
}
@@ -1579,7 +1552,7 @@ rb_big_mul_normal(VALUE x, VALUE y)
/* efficient squaring (2 times faster than normal multiplication)
* ref: Handbook of Applied Cryptography, Algorithm 14.16
- * https://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf
+ * http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf
*/
static void
bary_sq_fast(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn)
@@ -1597,30 +1570,30 @@ bary_sq_fast(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn)
return;
for (i = 0; i < xn-1; i++) {
- v = (BDIGIT_DBL)xds[i];
- if (!v)
+ v = (BDIGIT_DBL)xds[i];
+ if (!v)
continue;
- c = (BDIGIT_DBL)zds[i + i] + v * v;
- zds[i + i] = BIGLO(c);
- c = BIGDN(c);
- v *= 2;
+ c = (BDIGIT_DBL)zds[i + i] + v * v;
+ zds[i + i] = BIGLO(c);
+ c = BIGDN(c);
+ v *= 2;
vl = BIGLO(v);
vh = (int)BIGDN(v);
- for (j = i + 1; j < xn; j++) {
- w = (BDIGIT_DBL)xds[j];
- c += (BDIGIT_DBL)zds[i + j] + vl * w;
- zds[i + j] = BIGLO(c);
- c = BIGDN(c);
- if (vh)
+ for (j = i + 1; j < xn; j++) {
+ w = (BDIGIT_DBL)xds[j];
+ c += (BDIGIT_DBL)zds[i + j] + vl * w;
+ zds[i + j] = BIGLO(c);
+ c = BIGDN(c);
+ if (vh)
c += w;
- }
- if (c) {
- c += (BDIGIT_DBL)zds[i + xn];
- zds[i + xn] = BIGLO(c);
- c = BIGDN(c);
+ }
+ if (c) {
+ c += (BDIGIT_DBL)zds[i + xn];
+ zds[i + xn] = BIGLO(c);
+ c = BIGDN(c);
if (c)
zds[i + xn + 1] += (BDIGIT)c;
- }
+ }
}
/* i == xn-1 */
@@ -1645,21 +1618,13 @@ rb_big_sq_fast(VALUE x)
return z;
}
-static inline size_t
-max_size(size_t a, size_t b)
-{
- return (a > b ? a : b);
-}
-
/* balancing multiplication by slicing larger argument */
static void
-bary_mul_balance_with_mulfunc(BDIGIT *const zds, const size_t zn,
- const BDIGIT *const xds, const size_t xn,
- const BDIGIT *const yds, const size_t yn,
- BDIGIT *wds, size_t wn, mulfunc_t *const mulfunc)
+bary_mul_balance_with_mulfunc(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn, mulfunc_t *mulfunc)
{
VALUE work = 0;
- size_t n;
+ size_t yn0 = yn;
+ size_t r, n;
assert(xn + yn <= zn);
assert(xn <= yn);
@@ -1667,26 +1632,14 @@ bary_mul_balance_with_mulfunc(BDIGIT *const zds, const size_t zn,
BDIGITS_ZERO(zds, xn);
- if (wn < xn) {
- /* The condition when a new buffer is needed:
- * 1. (2(xn+r) > zn-(yn-r)) => (2xn+r > zn-yn), at the last
- * iteration (or r == 0)
- * 2. (2(xn+xn) > zn-(yn-r-xn)) => (3xn-r > zn-yn), at the
- * previous iteration.
- */
- const size_t r = yn % xn;
- if (2*xn + yn + max_size(xn-r, r) > zn) {
- wn = xn;
- wds = ALLOCV_N(BDIGIT, work, wn);
- }
- }
-
n = 0;
- while (yn > n) {
- const size_t r = (xn > (yn - n) ? (yn - n) : xn);
- const size_t tn = (xn + r);
+ while (yn > 0) {
+ BDIGIT *tds;
+ size_t tn;
+ r = xn > yn ? yn : xn;
+ tn = xn + r;
if (2 * (xn + r) <= zn - n) {
- BDIGIT *const tds = zds + n + xn + r;
+ tds = zds + n + xn + r;
mulfunc(tds, tn, xds, xn, yds + n, r, wds, wn);
BDIGITS_ZERO(zds + n + xn, r);
bary_add(zds + n, tn,
@@ -1694,25 +1647,21 @@ bary_mul_balance_with_mulfunc(BDIGIT *const zds, const size_t zn,
tds, tn);
}
else {
- BDIGIT *const tds = zds + n;
if (wn < xn) {
- /* xn is invariant, only once here */
-#if 0
wn = xn;
wds = ALLOCV_N(BDIGIT, work, wn);
-#else
- rb_bug("wds is not enough: %" PRIdSIZE " for %" PRIdSIZE, wn, xn);
-#endif
}
+ tds = zds + n;
MEMCPY(wds, zds + n, BDIGIT, xn);
mulfunc(tds, tn, xds, xn, yds + n, r, wds+xn, wn-xn);
bary_add(zds + n, tn,
zds + n, tn,
wds, xn);
}
- n += r;
+ yn -= r;
+ n += r;
}
- BDIGITS_ZERO(zds+xn+yn, zn - (xn+yn));
+ BDIGITS_ZERO(zds+xn+yn0, zn - (xn+yn0));
if (work)
ALLOCV_END(work);
@@ -2029,7 +1978,7 @@ bary_mul_toom3(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGI
}
/*
- * ref. https://en.wikipedia.org/wiki/Toom%E2%80%93Cook_multiplication
+ * ref. http://en.wikipedia.org/wiki/Toom%E2%80%93Cook_multiplication
*
* x(b) = x0 * b^0 + x1 * b^1 + x2 * b^2
* y(b) = y0 * b^0 + y1 * b^1 + y2 * b^2
@@ -2102,21 +2051,21 @@ bary_mul_toom3(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGI
v3n = u3n; v3ds = u3ds; v3p = u3p;
}
else {
- /* v1 <- y0 + y2 */
+ /* v1 <- y0 + y2 */
bary_add(v1ds, v1n, y0ds, y0n, y2ds, y2n);
v1p = 1;
- /* y(-1) : v2 <- v1 - y1 = y0 - y1 + y2 */
+ /* y(-1) : v2 <- v1 - y1 = y0 - y1 + y2 */
v2p = 1;
if (bary_sub(v2ds, v2n, v1ds, v1n, y1ds, y1n)) {
bary_2comp(v2ds, v2n);
v2p = 0;
}
- /* y(1) : v1 <- v1 + y1 = y0 + y1 + y2 */
+ /* y(1) : v1 <- v1 + y1 = y0 + y1 + y2 */
bary_add(v1ds, v1n, v1ds, v1n, y1ds, y1n);
- /* y(-2) : v3 <- 2 * (v2 + y2) - y0 = y0 - 2 * (y1 - 2 * y2) */
+ /* y(-2) : v3 <- 2 * (v2 + y2) - y0 = y0 - 2 * (y1 - 2 * y2) */
v3p = 1;
if (v2p) {
bary_add(v3ds, v3n, v2ds, v2n, y2ds, y2n);
@@ -2309,24 +2258,11 @@ rb_big_mul_toom3(VALUE x, VALUE y)
return z;
}
-#if USE_GMP
-static inline void
-bdigits_to_mpz(mpz_t mp, const BDIGIT *digits, size_t len)
-{
- const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGIT)*CHAR_BIT;
- mpz_import(mp, len, -1, sizeof(BDIGIT), 0, nails, digits);
-}
-
-static inline void
-bdigits_from_mpz(mpz_t mp, BDIGIT *digits, size_t *len)
-{
- const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGIT)*CHAR_BIT;
- mpz_export(digits, len, -1, sizeof(BDIGIT), 0, nails, mp);
-}
-
+#ifdef USE_GMP
static void
bary_mul_gmp(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGIT)*CHAR_BIT;
mpz_t x, y, z;
size_t count;
@@ -2335,15 +2271,15 @@ bary_mul_gmp(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT
mpz_init(x);
mpz_init(y);
mpz_init(z);
- bdigits_to_mpz(x, xds, xn);
+ mpz_import(x, xn, -1, sizeof(BDIGIT), 0, nails, xds);
if (xds == yds && xn == yn) {
mpz_mul(z, x, x);
}
else {
- bdigits_to_mpz(y, yds, yn);
+ mpz_import(y, yn, -1, sizeof(BDIGIT), 0, nails, yds);
mpz_mul(z, x, y);
}
- bdigits_from_mpz(z, zds, &count);
+ mpz_export(zds, &count, -1, sizeof(BDIGIT), 0, nails, z);
BDIGITS_ZERO(zds+count, zn-count);
mpz_clear(x);
mpz_clear(y);
@@ -2382,9 +2318,9 @@ bary_sparse_p(const BDIGIT *ds, size_t n)
{
long c = 0;
- if ( ds[2 * n / 5]) c++;
- if (c <= 1 && ds[ n / 2]) c++;
- if (c <= 1 && ds[3 * n / 5]) c++;
+ if ( ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
+ if (c <= 1 && ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
+ if (c <= 1 && ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
return (c <= 1) ? 1 : 0;
}
@@ -2447,8 +2383,8 @@ bary_mul_precheck(BDIGIT **zdsp, size_t *znp, const BDIGIT **xdsp, size_t *xnp,
if (xn > yn) {
const BDIGIT *tds;
size_t tn;
- tds = xds; xds = yds; yds = tds;
- tn = xn; xn = yn; yn = tn;
+ tds = xds; xds = yds; yds = tds;
+ tn = xn; xn = yn; yn = tn;
}
assert(xn <= yn);
@@ -2492,7 +2428,12 @@ bary_mul_karatsuba_branch(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn,
{
/* normal multiplication when x is small */
if (xn < KARATSUBA_MUL_DIGITS) {
- goto normal;
+ normal:
+ if (xds == yds && xn == yn)
+ bary_sq_fast(zds, zn, xds, xn);
+ else
+ bary_short_mul(zds, zn, xds, xn, yds, yn);
+ return;
}
/* normal multiplication when x or y is a sparse bignum */
@@ -2510,15 +2451,6 @@ bary_mul_karatsuba_branch(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn,
/* multiplication by karatsuba method */
bary_mul_karatsuba(zds, zn, xds, xn, yds, yn, wds, wn);
- return;
-
- normal:
- if (xds == yds && xn == yn) {
- bary_sq_fast(zds, zn, xds, xn);
- }
- else {
- bary_short_mul(zds, zn, xds, xn, yds, yn);
- }
}
static void
@@ -2574,7 +2506,7 @@ bary_mul(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds
}
}
-#if USE_GMP
+#ifdef USE_GMP
bary_mul_gmp(zds, zn, xds, xn, yds, yn);
#else
bary_mul_toom3_start(zds, zn, xds, xn, yds, yn, NULL, 0);
@@ -2598,31 +2530,30 @@ bigdivrem1(void *ptr)
BDIGIT q;
do {
- if (bds->stop) {
- bds->zn = zn;
- return 0;
+ if (bds->stop) {
+ bds->zn = zn;
+ return 0;
}
- if (zds[zn-1] == yds[yn-1]) q = BDIGMAX;
- else q = (BDIGIT)((BIGUP(zds[zn-1]) + zds[zn-2])/yds[yn-1]);
- if (q) {
+ if (zds[zn-1] == yds[yn-1]) q = BDIGMAX;
+ else q = (BDIGIT)((BIGUP(zds[zn-1]) + zds[zn-2])/yds[yn-1]);
+ if (q) {
num = bigdivrem_mulsub(zds+zn-(yn+1), yn+1,
q,
yds, yn);
- while (num) { /* "add back" required */
- q--;
+ while (num) { /* "add back" required */
+ q--;
num = bary_add(zds+zn-(yn+1), yn,
zds+zn-(yn+1), yn,
yds, yn);
num--;
- }
- }
+ }
+ }
zn--;
- zds[zn] = q;
+ zds[zn] = q;
} while (zn > yn);
return 0;
}
-/* async-signal-safe */
static void
rb_big_stop(void *ptr)
{
@@ -2645,9 +2576,10 @@ bigdivrem_single1(BDIGIT *qds, const BDIGIT *xds, size_t xn, BDIGIT x_higher_bdi
size_t i;
BDIGIT_DBL t2;
t2 = x_higher_bdigit;
- for (i = 0; i < xn; i++) {
- t2 = BIGUP(t2) + xds[xn - i - 1];
- qds[xn - i - 1] = (BDIGIT)(t2 / y);
+ i = xn;
+ while (i--) {
+ t2 = BIGUP(t2) + xds[i];
+ qds[i] = (BDIGIT)(t2 / y);
t2 %= y;
}
return (BDIGIT)t2;
@@ -2686,16 +2618,16 @@ bigdivrem_restoring(BDIGIT *zds, size_t zn, BDIGIT *yds, size_t yn)
bds.zn = zn - ynzero;
if (bds.zn > 10000 || bds.yn > 10000) {
retry:
- bds.stop = Qfalse;
- rb_nogvl(bigdivrem1, &bds, rb_big_stop, &bds, RB_NOGVL_UBF_ASYNC_SAFE);
+ bds.stop = Qfalse;
+ rb_thread_call_without_gvl(bigdivrem1, &bds, rb_big_stop, &bds);
- if (bds.stop == Qtrue) {
- /* execute trap handler, but exception was not raised. */
- goto retry;
- }
+ if (bds.stop == Qtrue) {
+ /* execute trap handler, but exception was not raised. */
+ goto retry;
+ }
}
else {
- bigdivrem1(&bds);
+ bigdivrem1(&bds);
}
}
@@ -2794,10 +2726,11 @@ rb_big_divrem_normal(VALUE x, VALUE y)
return rb_assoc_new(q, r);
}
-#if USE_GMP
+#ifdef USE_GMP
static void
bary_divmod_gmp(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGIT)*CHAR_BIT;
mpz_t x, y, q, r;
size_t count;
@@ -2811,8 +2744,8 @@ bary_divmod_gmp(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xd
if (qds) mpz_init(q);
if (rds) mpz_init(r);
- bdigits_to_mpz(x, xds, xn);
- bdigits_to_mpz(y, yds, yn);
+ mpz_import(x, xn, -1, sizeof(BDIGIT), 0, nails, xds);
+ mpz_import(y, yn, -1, sizeof(BDIGIT), 0, nails, yds);
if (!rds) {
mpz_fdiv_q(q, x, y);
@@ -2828,13 +2761,13 @@ bary_divmod_gmp(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xd
mpz_clear(y);
if (qds) {
- bdigits_from_mpz(q, qds, &count);
+ mpz_export(qds, &count, -1, sizeof(BDIGIT), 0, nails, q);
BDIGITS_ZERO(qds+count, qn-count);
mpz_clear(q);
}
if (rds) {
- bdigits_from_mpz(r, rds, &count);
+ mpz_export(rds, &count, -1, sizeof(BDIGIT), 0, nails, r);
BDIGITS_ZERO(rds+count, rn-count);
mpz_clear(r);
}
@@ -2878,7 +2811,7 @@ rb_big_divrem_gmp(VALUE x, VALUE y)
static void
bary_divmod_branch(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
{
-#if USE_GMP
+#ifdef USE_GMP
if (GMP_DIV_DIGITS < xn) {
bary_divmod_gmp(qds, qn, rds, rn, xds, xn, yds, yn);
return;
@@ -2933,8 +2866,29 @@ bary_divmod(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, s
}
-#ifndef BIGNUM_DEBUG
-# define BIGNUM_DEBUG (0+RUBY_DEBUG)
+#define BIGNUM_DEBUG 0
+#if BIGNUM_DEBUG
+#define ON_DEBUG(x) do { x; } while (0)
+static void
+dump_bignum(VALUE x)
+{
+ long i;
+ printf("%c0x0", BIGNUM_SIGN(x) ? '+' : '-');
+ for (i = BIGNUM_LEN(x); i--; ) {
+ printf("_%0*"PRIxBDIGIT, SIZEOF_BDIGIT*2, BDIGITS(x)[i]);
+ }
+ printf(", len=%"PRIuSIZE, BIGNUM_LEN(x));
+ puts("");
+}
+
+static VALUE
+rb_big_dump(VALUE x)
+{
+ dump_bignum(x);
+ return x;
+}
+#else
+#define ON_DEBUG(x)
#endif
static int
@@ -2953,7 +2907,7 @@ int
rb_cmpint(VALUE val, VALUE a, VALUE b)
{
if (NIL_P(val)) {
- rb_cmperr(a, b);
+ rb_cmperr(a, b);
}
if (FIXNUM_P(val)) {
long l = FIX2LONG(val);
@@ -2962,9 +2916,9 @@ rb_cmpint(VALUE val, VALUE a, VALUE b)
return 0;
}
if (RB_BIGNUM_TYPE_P(val)) {
- if (BIGZEROP(val)) return 0;
- if (BIGNUM_SIGN(val)) return 1;
- return -1;
+ if (BIGZEROP(val)) return 0;
+ if (BIGNUM_SIGN(val)) return 1;
+ return -1;
}
if (RTEST(rb_funcall(val, '>', 1, INT2FIX(0)))) return 1;
if (RTEST(rb_funcall(val, '<', 1, INT2FIX(0)))) return -1;
@@ -2972,44 +2926,44 @@ rb_cmpint(VALUE val, VALUE a, VALUE b)
}
#define BIGNUM_SET_LEN(b,l) \
- (BIGNUM_EMBED_P(b) ? \
+ ((RBASIC(b)->flags & BIGNUM_EMBED_FLAG) ? \
(void)(RBASIC(b)->flags = \
- (RBASIC(b)->flags & ~BIGNUM_EMBED_LEN_MASK) | \
- ((l) << BIGNUM_EMBED_LEN_SHIFT)) : \
+ (RBASIC(b)->flags & ~BIGNUM_EMBED_LEN_MASK) | \
+ ((l) << BIGNUM_EMBED_LEN_SHIFT)) : \
(void)(RBIGNUM(b)->as.heap.len = (l)))
static void
rb_big_realloc(VALUE big, size_t len)
{
BDIGIT *ds;
- if (BIGNUM_EMBED_P(big)) {
- if (BIGNUM_EMBED_LEN_MAX < len) {
- ds = ALLOC_N(BDIGIT, len);
- MEMCPY(ds, RBIGNUM(big)->as.ary, BDIGIT, BIGNUM_EMBED_LEN_MAX);
- RBIGNUM(big)->as.heap.len = BIGNUM_LEN(big);
- RBIGNUM(big)->as.heap.digits = ds;
- FL_UNSET_RAW(big, BIGNUM_EMBED_FLAG);
- }
+ if (RBASIC(big)->flags & BIGNUM_EMBED_FLAG) {
+ if (BIGNUM_EMBED_LEN_MAX < len) {
+ ds = ALLOC_N(BDIGIT, len);
+ MEMCPY(ds, RBIGNUM(big)->as.ary, BDIGIT, BIGNUM_EMBED_LEN_MAX);
+ RBIGNUM(big)->as.heap.len = BIGNUM_LEN(big);
+ RBIGNUM(big)->as.heap.digits = ds;
+ RBASIC(big)->flags &= ~BIGNUM_EMBED_FLAG;
+ }
}
else {
- if (len <= BIGNUM_EMBED_LEN_MAX) {
- ds = RBIGNUM(big)->as.heap.digits;
- FL_SET_RAW(big, BIGNUM_EMBED_FLAG);
- BIGNUM_SET_LEN(big, len);
+ if (len <= BIGNUM_EMBED_LEN_MAX) {
+ ds = RBIGNUM(big)->as.heap.digits;
+ RBASIC(big)->flags |= BIGNUM_EMBED_FLAG;
+ BIGNUM_SET_LEN(big, len);
(void)VALGRIND_MAKE_MEM_UNDEFINED((void*)RBIGNUM(big)->as.ary, sizeof(RBIGNUM(big)->as.ary));
- if (ds) {
- MEMCPY(RBIGNUM(big)->as.ary, ds, BDIGIT, len);
- xfree(ds);
- }
- }
- else {
- if (BIGNUM_LEN(big) == 0) {
- RBIGNUM(big)->as.heap.digits = ALLOC_N(BDIGIT, len);
- }
- else {
- REALLOC_N(RBIGNUM(big)->as.heap.digits, BDIGIT, len);
- }
- }
+ if (ds) {
+ MEMCPY(RBIGNUM(big)->as.ary, ds, BDIGIT, len);
+ xfree(ds);
+ }
+ }
+ else {
+ if (BIGNUM_LEN(big) == 0) {
+ RBIGNUM(big)->as.heap.digits = ALLOC_N(BDIGIT, len);
+ }
+ else {
+ REALLOC_N(RBIGNUM(big)->as.heap.digits, BDIGIT, len);
+ }
+ }
}
}
@@ -3023,21 +2977,19 @@ rb_big_resize(VALUE big, size_t len)
static VALUE
bignew_1(VALUE klass, size_t len, int sign)
{
- NEWOBJ_OF(big, struct RBignum, klass,
- T_BIGNUM | (RGENGC_WB_PROTECTED_BIGNUM ? FL_WB_PROTECTED : 0), sizeof(struct RBignum), 0);
- VALUE bigv = (VALUE)big;
- BIGNUM_SET_SIGN(bigv, sign);
+ NEWOBJ_OF(big, struct RBignum, klass, T_BIGNUM | (RGENGC_WB_PROTECTED_BIGNUM ? FL_WB_PROTECTED : 0));
+ BIGNUM_SET_SIGN(big, sign);
if (len <= BIGNUM_EMBED_LEN_MAX) {
- FL_SET_RAW(bigv, BIGNUM_EMBED_FLAG);
- BIGNUM_SET_LEN(bigv, len);
- (void)VALGRIND_MAKE_MEM_UNDEFINED((void*)big->as.ary, sizeof(big->as.ary));
+ RBASIC(big)->flags |= BIGNUM_EMBED_FLAG;
+ BIGNUM_SET_LEN(big, len);
+ (void)VALGRIND_MAKE_MEM_UNDEFINED((void*)RBIGNUM(big)->as.ary, sizeof(RBIGNUM(big)->as.ary));
}
else {
- big->as.heap.digits = ALLOC_N(BDIGIT, len);
- big->as.heap.len = len;
+ RBIGNUM(big)->as.heap.digits = ALLOC_N(BDIGIT, len);
+ RBIGNUM(big)->as.heap.len = len;
}
- OBJ_FREEZE(bigv);
- return bigv;
+ OBJ_FREEZE(big);
+ return (VALUE)big;
}
VALUE
@@ -3096,7 +3048,7 @@ abs2twocomp(VALUE *xp, long *n_ret)
MEMCPY(BDIGITS(z), ds, BDIGIT, n);
bary_2comp(BDIGITS(z), n);
hibits = BDIGMAX;
- *xp = z;
+ *xp = z;
}
*n_ret = n;
return hibits;
@@ -3120,7 +3072,7 @@ bigtrunc(VALUE x)
if (len == 0) return x;
while (--len && !ds[len]);
if (BIGNUM_LEN(x) > len+1) {
- rb_big_resize(x, len+1);
+ rb_big_resize(x, len+1);
}
return x;
}
@@ -3173,7 +3125,7 @@ static VALUE
bignorm(VALUE x)
{
if (RB_BIGNUM_TYPE_P(x)) {
- x = bigfixize(x);
+ x = bigfixize(x);
}
return x;
}
@@ -3185,7 +3137,7 @@ rb_big_norm(VALUE x)
}
VALUE
-rb_uint2big(uintptr_t n)
+rb_uint2big(VALUE n)
{
long i;
VALUE big = bignew(bdigit_roomof(SIZEOF_VALUE), 1);
@@ -3195,8 +3147,8 @@ rb_uint2big(uintptr_t n)
digits[0] = n;
#else
for (i = 0; i < bdigit_roomof(SIZEOF_VALUE); i++) {
- digits[i] = BIGLO(n);
- n = BIGDN(n);
+ digits[i] = BIGLO(n);
+ n = BIGDN(n);
}
#endif
@@ -3207,7 +3159,7 @@ rb_uint2big(uintptr_t n)
}
VALUE
-rb_int2big(intptr_t n)
+rb_int2big(SIGNED_VALUE n)
{
long neg = 0;
VALUE u;
@@ -3215,27 +3167,27 @@ rb_int2big(intptr_t n)
if (n < 0) {
u = 1 + (VALUE)(-(n + 1)); /* u = -n avoiding overflow */
- neg = 1;
+ neg = 1;
}
else {
u = n;
}
big = rb_uint2big(u);
if (neg) {
- BIGNUM_SET_NEGATIVE_SIGN(big);
+ BIGNUM_SET_NEGATIVE_SIGN(big);
}
return big;
}
VALUE
-rb_uint2inum(uintptr_t n)
+rb_uint2inum(VALUE n)
{
if (POSFIXABLE(n)) return LONG2FIX(n);
return rb_uint2big(n);
}
VALUE
-rb_int2inum(intptr_t n)
+rb_int2inum(SIGNED_VALUE n)
{
if (FIXABLE(n)) return LONG2FIX(n);
return rb_int2big(n);
@@ -3381,7 +3333,7 @@ absint_numwords_generic(size_t numbytes, int nlz_bits_in_msbyte, size_t word_num
if (sign == 2) {
#if defined __GNUC__ && (__GNUC__ == 4 && __GNUC_MINOR__ == 4)
- *nlz_bits_ret = 0;
+ *nlz_bits_ret = 0;
#endif
return (size_t)-1;
}
@@ -3414,7 +3366,7 @@ rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret)
size_t numbytes;
int nlz_bits_in_msbyte;
size_t numwords;
- size_t nlz_bits = 0;
+ size_t nlz_bits;
if (word_numbits == 0)
return (size_t)-1;
@@ -3429,7 +3381,6 @@ rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret)
numwords0 = absint_numwords_generic(numbytes, nlz_bits_in_msbyte, word_numbits, &nlz_bits0);
assert(numwords0 == numwords);
assert(nlz_bits0 == nlz_bits);
- (void)numwords0;
}
#endif
}
@@ -3617,7 +3568,7 @@ rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t
}
/*
- * Import an integer from a buffer.
+ * Import an integer into a buffer.
*
* [words] buffer to import.
* [numwords] the size of given buffer as number of words.
@@ -3701,7 +3652,7 @@ rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t na
}
else if (num_bdigits == numberof(fixbuf)) {
val = bignew((long)num_bdigits+1, 0);
- MEMCPY(BDIGITS(val), fixbuf, BDIGIT, num_bdigits);
+ MEMCPY(BDIGITS(val), fixbuf, BDIGIT, num_bdigits);
BDIGITS(val)[num_bdigits++] = 1;
}
else {
@@ -3713,11 +3664,11 @@ rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t na
BDIGIT_DBL u = fixbuf[0] + BIGUP(fixbuf[1]);
if (u == 0)
return LONG2FIX(0);
- if (0 < sign && POSFIXABLE(u))
- return LONG2FIX((long)u);
- if (sign < 0 && BDIGIT_MSB(fixbuf[1]) == 0 &&
+ if (0 < sign && POSFIXABLE(u))
+ return LONG2FIX(u);
+ if (sign < 0 && BDIGIT_MSB(fixbuf[1]) == 0 &&
NEGFIXABLE(-(BDIGIT_DBL_SIGNED)u))
- return LONG2FIX((long)-(BDIGIT_DBL_SIGNED)u);
+ return LONG2FIX(-(BDIGIT_DBL_SIGNED)u);
val = bignew((long)num_bdigits, 0 <= sign);
MEMCPY(BDIGITS(val), fixbuf, BDIGIT, num_bdigits);
}
@@ -3767,41 +3718,42 @@ str2big_scan_digits(const char *s, const char *str, int base, int badcheck, size
int c;
if (!len) {
- *num_digits_p = 0;
- *len_p = 0;
- return TRUE;
+ *num_digits_p = 0;
+ *len_p = 0;
+ return TRUE;
}
- if (badcheck && *str == '_') return FALSE;
+ if (badcheck && *str == '_') goto bad;
while ((c = *str++) != 0) {
- if (c == '_') {
- if (nondigit) {
- if (badcheck) return FALSE;
- break;
- }
- nondigit = (char) c;
- }
- else if ((c = conv_digit(c)) < 0 || c >= base) {
- break;
- }
- else {
- nondigit = 0;
- num_digits++;
- digits_end = str;
- }
- if (len > 0 && !--len) break;
- }
- if (badcheck && nondigit) return FALSE;
+ if (c == '_') {
+ if (nondigit) {
+ if (badcheck) goto bad;
+ break;
+ }
+ nondigit = (char) c;
+ }
+ else if ((c = conv_digit(c)) < 0 || c >= base) {
+ break;
+ }
+ else {
+ nondigit = 0;
+ num_digits++;
+ digits_end = str;
+ }
+ if (len > 0 && !--len) break;
+ }
+ if (badcheck && nondigit) goto bad;
if (badcheck && len) {
- str--;
- while (*str && ISSPACE(*str)) {
- str++;
- if (len > 0 && !--len) break;
- }
- if (len && *str) {
- return FALSE;
- }
+ str--;
+ while (*str && ISSPACE(*str)) {
+ str++;
+ if (len > 0 && !--len) break;
+ }
+ if (len && *str) {
+ bad:
+ return FALSE;
+ }
}
*num_digits_p = num_digits;
*len_p = digits_end - digits_start;
@@ -3976,7 +3928,7 @@ str2big_karatsuba(
return z;
}
-#if USE_GMP
+#ifdef USE_GMP
static VALUE
str2big_gmp(
int sign,
@@ -3986,6 +3938,7 @@ str2big_gmp(
size_t num_bdigits,
int base)
{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGIT)*CHAR_BIT;
char *buf, *p;
const char *q;
VALUE tmps;
@@ -4008,7 +3961,7 @@ str2big_gmp(
zn = num_bdigits;
z = bignew(zn, sign);
zds = BDIGITS(z);
- bdigits_from_mpz(mz, BDIGITS(z), &count);
+ mpz_export(BDIGITS(z), &count, -1, sizeof(BDIGIT), 0, nails, mz);
BDIGITS_ZERO(zds+count, zn-count);
mpz_clear(mz);
@@ -4019,8 +3972,6 @@ str2big_gmp(
}
#endif
-static VALUE rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base);
-
/*
* Parse +str+ as Ruby Integer, i.e., underscores, 0d and 0b prefixes.
*
@@ -4043,8 +3994,8 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)
char *end;
VALUE ret = rb_cstr_parse_inum(str, -1, (badcheck ? NULL : &end), base);
if (NIL_P(ret)) {
- if (badcheck) rb_invalid_str(str, "Integer()");
- ret = INT2FIX(0);
+ if (badcheck) rb_invalid_str(str, "Integer()");
+ ret = INT2FIX(0);
}
return ret;
}
@@ -4068,7 +4019,7 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)
VALUE
rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits,
- int base, int flags)
+ int base, int flags)
{
const char *const s = str;
char sign = 1;
@@ -4085,82 +4036,85 @@ rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits,
const int badcheck = !endp;
#define ADV(n) do {\
- if (len > 0 && len <= (n)) goto bad; \
- str += (n); \
- len -= (n); \
+ if (len > 0 && len <= (n)) goto bad; \
+ str += (n); \
+ len -= (n); \
} while (0)
#define ASSERT_LEN() do {\
- assert(len != 0); \
- if (len0 >= 0) assert(s + len0 == str + len); \
+ assert(len != 0); \
+ if (len0 >= 0) assert(s + len0 == str + len); \
} while (0)
if (!str) {
- goto bad;
+ bad:
+ if (endp) *endp = (char *)str;
+ if (ndigits) *ndigits = num_digits;
+ return z;
}
if (len && (flags & RB_INT_PARSE_SIGN)) {
- while (ISSPACE(*str)) ADV(1);
+ while (ISSPACE(*str)) ADV(1);
- if (str[0] == '+') {
- ADV(1);
- }
- else if (str[0] == '-') {
- ADV(1);
- sign = 0;
- }
- ASSERT_LEN();
+ if (str[0] == '+') {
+ ADV(1);
+ }
+ else if (str[0] == '-') {
+ ADV(1);
+ sign = 0;
+ }
+ ASSERT_LEN();
}
if (base <= 0) {
- if (str[0] == '0' && len > 1) {
- switch (str[1]) {
- case 'x': case 'X':
- base = 16;
- ADV(2);
- break;
- case 'b': case 'B':
- base = 2;
- ADV(2);
- break;
- case 'o': case 'O':
- base = 8;
- ADV(2);
- break;
- case 'd': case 'D':
- base = 10;
- ADV(2);
- break;
- default:
- base = 8;
- }
- }
- else if (base < -1) {
- base = -base;
- }
- else {
- base = 10;
- }
+ if (str[0] == '0' && len > 1) {
+ switch (str[1]) {
+ case 'x': case 'X':
+ base = 16;
+ ADV(2);
+ break;
+ case 'b': case 'B':
+ base = 2;
+ ADV(2);
+ break;
+ case 'o': case 'O':
+ base = 8;
+ ADV(2);
+ break;
+ case 'd': case 'D':
+ base = 10;
+ ADV(2);
+ break;
+ default:
+ base = 8;
+ }
+ }
+ else if (base < -1) {
+ base = -base;
+ }
+ else {
+ base = 10;
+ }
}
else if (len == 1 || !(flags & RB_INT_PARSE_PREFIX)) {
- /* no prefix */
+ /* no prefix */
}
else if (base == 2) {
- if (str[0] == '0' && (str[1] == 'b'||str[1] == 'B')) {
- ADV(2);
- }
+ if (str[0] == '0' && (str[1] == 'b'||str[1] == 'B')) {
+ ADV(2);
+ }
}
else if (base == 8) {
- if (str[0] == '0' && (str[1] == 'o'||str[1] == 'O')) {
- ADV(2);
- }
+ if (str[0] == '0' && (str[1] == 'o'||str[1] == 'O')) {
+ ADV(2);
+ }
}
else if (base == 10) {
- if (str[0] == '0' && (str[1] == 'd'||str[1] == 'D')) {
- ADV(2);
- }
+ if (str[0] == '0' && (str[1] == 'd'||str[1] == 'D')) {
+ ADV(2);
+ }
}
else if (base == 16) {
- if (str[0] == '0' && (str[1] == 'x'||str[1] == 'X')) {
- ADV(2);
- }
+ if (str[0] == '0' && (str[1] == 'x'||str[1] == 'X')) {
+ ADV(2);
+ }
}
if (!valid_radix_p(base)) {
invalid_radix(base);
@@ -4168,79 +4122,80 @@ rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits,
if (!len) goto bad;
num_digits = str - s;
if (*str == '0' && len != 1) { /* squeeze preceding 0s */
- int us = 0;
- const char *end = len < 0 ? NULL : str + len;
- ++num_digits;
- while ((c = *++str) == '0' ||
- ((flags & RB_INT_PARSE_UNDERSCORE) && c == '_')) {
- if (c == '_') {
- if (++us >= 2)
- break;
- }
- else {
- ++num_digits;
- us = 0;
- }
- if (str == end) break;
- }
- if (!c || ISSPACE(c)) --str;
- if (end) len = end - str;
+ int us = 0;
+ const char *end = len < 0 ? NULL : str + len;
+ ++num_digits;
+ while ((c = *++str) == '0' ||
+ ((flags & RB_INT_PARSE_UNDERSCORE) && c == '_')) {
+ if (c == '_') {
+ if (++us >= 2)
+ break;
+ }
+ else {
+ ++num_digits;
+ us = 0;
+ }
+ if (str == end) break;
+ }
+ if (!c || ISSPACE(c)) --str;
+ if (end) len = end - str;
+ ASSERT_LEN();
}
c = *str;
c = conv_digit(c);
if (c < 0 || c >= base) {
- if (!badcheck && num_digits) z = INT2FIX(0);
- goto bad;
+ if (!badcheck && num_digits) z = INT2FIX(0);
+ goto bad;
}
if (ndigits) *ndigits = num_digits;
val = ruby_scan_digits(str, len, base, &num_digits, &ov);
if (!ov) {
- const char *end = &str[num_digits];
- if (num_digits > 0 && *end == '_' && (flags & RB_INT_PARSE_UNDERSCORE))
- goto bigparse;
- if (endp) *endp = (char *)end;
- if (ndigits) *ndigits += num_digits;
- if (badcheck) {
- if (num_digits == 0) return Qnil; /* no number */
- while (len < 0 ? *end : end < str + len) {
- if (!ISSPACE(*end)) return Qnil; /* trailing garbage */
- end++;
- }
- }
-
- if (POSFIXABLE(val)) {
- if (sign) return LONG2FIX(val);
- else {
- long result = -(long)val;
- return LONG2FIX(result);
- }
- }
- else {
- VALUE big = rb_uint2big(val);
- BIGNUM_SET_SIGN(big, sign);
- return bignorm(big);
- }
+ const char *end = &str[num_digits];
+ if (num_digits > 0 && *end == '_' && (flags & RB_INT_PARSE_UNDERSCORE))
+ goto bigparse;
+ if (endp) *endp = (char *)end;
+ if (ndigits) *ndigits += num_digits;
+ if (badcheck) {
+ if (num_digits == 0) return Qnil; /* no number */
+ while (len < 0 ? *end : end < str + len) {
+ if (!ISSPACE(*end)) return Qnil; /* trailing garbage */
+ end++;
+ }
+ }
+
+ if (POSFIXABLE(val)) {
+ if (sign) return LONG2FIX(val);
+ else {
+ long result = -(long)val;
+ return LONG2FIX(result);
+ }
+ }
+ else {
+ VALUE big = rb_uint2big(val);
+ BIGNUM_SET_SIGN(big, sign);
+ return bignorm(big);
+ }
}
bigparse:
digits_start = str;
if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len))
- goto bad;
+ goto bad;
if (endp) *endp = (char *)(str + len);
if (ndigits) *ndigits += num_digits;
digits_end = digits_start + len;
if (POW2_P(base)) {
z = str2big_poweroftwo(sign, digits_start, digits_end, num_digits,
- bit_length(base-1));
+ bit_length(base-1));
}
else {
int digits_per_bdigits_dbl;
maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
num_bdigits = roomof(num_digits, digits_per_bdigits_dbl)*2;
-#if USE_GMP
+#ifdef USE_GMP
if (GMP_STR2BIG_DIGITS < num_bdigits) {
z = str2big_gmp(sign, digits_start, digits_end, num_digits,
num_bdigits, base);
@@ -4258,22 +4213,17 @@ rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits,
}
return bignorm(z);
-
- bad:
- if (endp) *endp = (char *)str;
- if (ndigits) *ndigits = num_digits;
- return z;
}
-static VALUE
+VALUE
rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base)
{
return rb_int_parse_cstr(str, len, endp, NULL, base,
- RB_INT_PARSE_DEFAULT);
+ RB_INT_PARSE_DEFAULT);
}
VALUE
-rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception)
+rb_str_to_inum(VALUE str, int base, int badcheck)
{
VALUE ret;
const char *s;
@@ -4285,22 +4235,13 @@ rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception)
RSTRING_GETMEM(str, s, len);
ret = rb_cstr_parse_inum(s, len, (badcheck ? NULL : &end), base);
if (NIL_P(ret)) {
- if (badcheck) {
- if (!raise_exception) return Qnil;
- invalid_integer(str);
- }
- ret = INT2FIX(0);
+ if (badcheck) invalid_integer(str);
+ ret = INT2FIX(0);
}
return ret;
}
VALUE
-rb_str_to_inum(VALUE str, int base, int badcheck)
-{
- return rb_str_convert_to_inum(str, base, badcheck, TRUE);
-}
-
-VALUE
rb_str2big_poweroftwo(VALUE arg, int base, int badcheck)
{
int positive_p = 1;
@@ -4318,14 +4259,14 @@ rb_str2big_poweroftwo(VALUE arg, int base, int badcheck)
s = str = StringValueCStr(arg);
len = RSTRING_LEN(arg);
if (*str == '-') {
- len--;
+ len--;
str++;
positive_p = 0;
}
digits_start = str;
if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len))
- invalid_integer(arg);
+ invalid_integer(arg);
digits_end = digits_start + len;
z = str2big_poweroftwo(positive_p, digits_start, digits_end, num_digits,
@@ -4357,14 +4298,14 @@ rb_str2big_normal(VALUE arg, int base, int badcheck)
s = str = StringValuePtr(arg);
len = RSTRING_LEN(arg);
if (len > 0 && *str == '-') {
- len--;
+ len--;
str++;
positive_p = 0;
}
digits_start = str;
if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len))
- invalid_integer(arg);
+ invalid_integer(arg);
digits_end = digits_start + len;
maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
@@ -4399,14 +4340,14 @@ rb_str2big_karatsuba(VALUE arg, int base, int badcheck)
s = str = StringValuePtr(arg);
len = RSTRING_LEN(arg);
if (len > 0 && *str == '-') {
- len--;
+ len--;
str++;
positive_p = 0;
}
digits_start = str;
if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len))
- invalid_integer(arg);
+ invalid_integer(arg);
digits_end = digits_start + len;
maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
@@ -4420,7 +4361,7 @@ rb_str2big_karatsuba(VALUE arg, int base, int badcheck)
return bignorm(z);
}
-#if USE_GMP
+#ifdef USE_GMP
VALUE
rb_str2big_gmp(VALUE arg, int base, int badcheck)
{
@@ -4442,14 +4383,14 @@ rb_str2big_gmp(VALUE arg, int base, int badcheck)
s = str = StringValuePtr(arg);
len = RSTRING_LEN(arg);
if (len > 0 && *str == '-') {
- len--;
+ len--;
str++;
positive_p = 0;
}
digits_start = str;
if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len))
- invalid_integer(arg);
+ invalid_integer(arg);
digits_end = digits_start + len;
maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
@@ -4476,8 +4417,8 @@ rb_ull2big(unsigned LONG_LONG n)
digits[0] = n;
#else
for (i = 0; i < bdigit_roomof(SIZEOF_LONG_LONG); i++) {
- digits[i] = BIGLO(n);
- n = BIGDN(n);
+ digits[i] = BIGLO(n);
+ n = BIGDN(n);
}
#endif
@@ -4496,14 +4437,14 @@ rb_ll2big(LONG_LONG n)
if (n < 0) {
u = 1 + (unsigned LONG_LONG)(-(n + 1)); /* u = -n avoiding overflow */
- neg = 1;
+ neg = 1;
}
else {
u = n;
}
big = rb_ull2big(u);
if (neg) {
- BIGNUM_SET_NEGATIVE_SIGN(big);
+ BIGNUM_SET_NEGATIVE_SIGN(big);
}
return big;
}
@@ -4511,14 +4452,14 @@ rb_ll2big(LONG_LONG n)
VALUE
rb_ull2inum(unsigned LONG_LONG n)
{
- if (POSFIXABLE(n)) return LONG2FIX((long)n);
+ if (POSFIXABLE(n)) return LONG2FIX(n);
return rb_ull2big(n);
}
VALUE
rb_ll2inum(LONG_LONG n)
{
- if (FIXABLE(n)) return LONG2FIX((long)n);
+ if (FIXABLE(n)) return LONG2FIX(n);
return rb_ll2big(n);
}
@@ -4533,7 +4474,7 @@ rb_uint128t2big(uint128_t n)
BDIGIT *digits = BDIGITS(big);
for (i = 0; i < bdigit_roomof(SIZEOF_INT128_T); i++) {
- digits[i] = BIGLO(RSHIFT(n ,BITSPERDIG*i));
+ digits[i] = BIGLO(RSHIFT(n ,BITSPERDIG*i));
}
i = bdigit_roomof(SIZEOF_INT128_T);
@@ -4551,14 +4492,14 @@ rb_int128t2big(int128_t n)
if (n < 0) {
u = 1 + (uint128_t)(-(n + 1)); /* u = -n avoiding overflow */
- neg = 1;
+ neg = 1;
}
else {
u = n;
}
big = rb_uint128t2big(u);
if (neg) {
- BIGNUM_SET_NEGATIVE_SIGN(big);
+ BIGNUM_SET_NEGATIVE_SIGN(big);
}
return big;
}
@@ -4587,14 +4528,11 @@ big_shift3(VALUE x, int lshift_p, size_t shift_numdigits, int shift_numbits)
if (lshift_p) {
if (LONG_MAX < shift_numdigits) {
- too_big:
- rb_raise(rb_eRangeError, "shift width too big");
+ rb_raise(rb_eArgError, "too big number");
}
s1 = shift_numdigits;
s2 = shift_numbits;
- if ((size_t)s1 != shift_numdigits) goto too_big;
xn = BIGNUM_LEN(x);
- if (LONG_MAX/SIZEOF_BDIGIT <= xn+s1) goto too_big;
z = bignew(xn+s1+1, BIGNUM_SIGN(x));
zds = BDIGITS(z);
BDIGITS_ZERO(zds, s1);
@@ -4685,6 +4623,12 @@ static size_t base36_numdigits_cache[35][MAX_BASE36_POWER_TABLE_ENTRIES];
static void
power_cache_init(void)
{
+ int i, j;
+ for (i = 0; i < 35; ++i) {
+ for (j = 0; j < MAX_BASE36_POWER_TABLE_ENTRIES; ++j) {
+ base36_power_cache[i][j] = Qnil;
+ }
+ }
}
static inline VALUE
@@ -4707,8 +4651,8 @@ power_cache_get_power(int base, int power_level, size_t *numdigits_ret)
if (MAX_BASE36_POWER_TABLE_ENTRIES <= power_level)
rb_bug("too big power number requested: maxpow_in_bdigit_dbl(%d)**(2**%d)", base, power_level);
- VALUE power = base36_power_cache[base - 2][power_level];
- if (!power) {
+ if (NIL_P(base36_power_cache[base - 2][power_level])) {
+ VALUE power;
size_t numdigits;
if (power_level == 0) {
int numdigits0;
@@ -4724,11 +4668,11 @@ power_cache_get_power(int base, int power_level, size_t *numdigits_ret)
rb_obj_hide(power);
base36_power_cache[base - 2][power_level] = power;
base36_numdigits_cache[base - 2][power_level] = numdigits;
- rb_gc_register_mark_object(power);
+ rb_gc_register_mark_object(power);
}
if (numdigits_ret)
*numdigits_ret = base36_numdigits_cache[base - 2][power_level];
- return power;
+ return base36_power_cache[base - 2][power_level];
}
struct big2str_struct {
@@ -4775,7 +4719,7 @@ big2str_2bdigits(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t tail
} while (num);
len = sizeof(buf) - j;
big2str_alloc(b2s, len + taillen);
- MEMCPY(b2s->ptr, buf + j, char, len);
+ MEMCPY(b2s->ptr, buf + j, char, len);
}
else {
p = b2s->ptr;
@@ -4792,7 +4736,7 @@ big2str_2bdigits(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t tail
static void
big2str_karatsuba(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t wn,
- int power_level, size_t taillen)
+ int power_level, size_t taillen)
{
VALUE b;
size_t half_numdigits, lower_numdigits;
@@ -4822,17 +4766,17 @@ big2str_karatsuba(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t wn,
*/
if (xn == 0 || bary_zero_p(xds, xn)) {
- if (b2s->ptr) {
+ if (b2s->ptr) {
/* When x is zero, power_cache_get_power(base, power_level) should be cached already. */
power_cache_get_power(b2s->base, power_level, &len);
- memset(b2s->ptr, '0', len);
+ memset(b2s->ptr, '0', len);
b2s->ptr += len;
- }
+ }
return;
}
if (power_level == 0) {
- big2str_2bdigits(b2s, xds, xn, taillen);
+ big2str_2bdigits(b2s, xds, xn, taillen);
return;
}
@@ -4860,7 +4804,7 @@ big2str_karatsuba(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t wn,
memset(b2s->ptr, '0', len);
b2s->ptr += len;
}
- big2str_2bdigits(b2s, xds, xn, taillen);
+ big2str_2bdigits(b2s, xds, xn, taillen);
}
else {
BDIGIT *qds, *rds;
@@ -4964,11 +4908,11 @@ big2str_generic(VALUE x, int base)
BARY_TRUNC(xds, xn);
if (xn == 0) {
- return rb_usascii_str_new2("0");
+ return rb_usascii_str_new2("0");
}
if (!valid_radix_p(base))
- invalid_radix(base);
+ invalid_radix(base);
if (xn >= LONG_MAX/BITSPERDIG) {
rb_raise(rb_eRangeError, "bignum too big to convert into `string'");
@@ -5005,7 +4949,7 @@ big2str_generic(VALUE x, int base)
b2s_data.ptr = NULL;
if (power_level == 0) {
- big2str_2bdigits(&b2s_data, xds, xn, 0);
+ big2str_2bdigits(&b2s_data, xds, xn, 0);
}
else {
VALUE tmpw = 0;
@@ -5014,7 +4958,7 @@ big2str_generic(VALUE x, int base)
wn = power_level * BIGDIVREM_EXTRA_WORDS + BIGNUM_LEN(power);
wds = ALLOCV_N(BDIGIT, tmpw, xn + wn);
MEMCPY(wds, xds, BDIGIT, xn);
- big2str_karatsuba(&b2s_data, wds, xn, wn, power_level, 0);
+ big2str_karatsuba(&b2s_data, wds, xn, wn, power_level, 0);
if (tmpw)
ALLOCV_END(tmpw);
}
@@ -5033,10 +4977,11 @@ rb_big2str_generic(VALUE x, int base)
return big2str_generic(x, base);
}
-#if USE_GMP
+#ifdef USE_GMP
static VALUE
big2str_gmp(VALUE x, int base)
{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGIT)*CHAR_BIT;
mpz_t mx;
size_t size;
VALUE str;
@@ -5044,7 +4989,7 @@ big2str_gmp(VALUE x, int base)
size_t xn = BIGNUM_LEN(x);
mpz_init(mx);
- bdigits_to_mpz(mx, xds, xn);
+ mpz_import(mx, xn, -1, sizeof(BDIGIT), 0, nails, xds);
size = mpz_sizeinbase(mx, base);
@@ -5080,7 +5025,7 @@ rb_big2str1(VALUE x, int base)
size_t xn;
if (FIXNUM_P(x)) {
- return rb_fix2str(x, base);
+ return rb_fix2str(x, base);
}
bigtrunc(x);
@@ -5089,11 +5034,11 @@ rb_big2str1(VALUE x, int base)
BARY_TRUNC(xds, xn);
if (xn == 0) {
- return rb_usascii_str_new2("0");
+ return rb_usascii_str_new2("0");
}
if (!valid_radix_p(base))
- invalid_radix(base);
+ invalid_radix(base);
if (xn >= LONG_MAX/BITSPERDIG) {
rb_raise(rb_eRangeError, "bignum too big to convert into `string'");
@@ -5104,7 +5049,7 @@ rb_big2str1(VALUE x, int base)
return big2str_base_poweroftwo(x, base);
}
-#if USE_GMP
+#ifdef USE_GMP
if (GMP_BIG2STR_DIGITS < xn) {
return big2str_gmp(x, base);
}
@@ -5122,9 +5067,6 @@ rb_big2str(VALUE x, int base)
static unsigned long
big2ulong(VALUE x, const char *type)
{
-#if SIZEOF_LONG > SIZEOF_BDIGIT
- size_t i;
-#endif
size_t len = BIGNUM_LEN(x);
unsigned long num;
BDIGIT *ds;
@@ -5139,9 +5081,9 @@ big2ulong(VALUE x, const char *type)
num = (unsigned long)ds[0];
#else
num = 0;
- for (i = 0; i < len; i++) {
- num <<= BITSPERDIG;
- num += (unsigned long)ds[len - i - 1]; /* overflow is already checked */
+ while (len--) {
+ num <<= BITSPERDIG;
+ num += (unsigned long)ds[len]; /* overflow is already checked */
}
#endif
return num;
@@ -5183,9 +5125,6 @@ rb_big2long(VALUE x)
static unsigned LONG_LONG
big2ull(VALUE x, const char *type)
{
-#if SIZEOF_LONG_LONG > SIZEOF_BDIGIT
- size_t i;
-#endif
size_t len = BIGNUM_LEN(x);
unsigned LONG_LONG num;
BDIGIT *ds = BDIGITS(x);
@@ -5193,14 +5132,14 @@ big2ull(VALUE x, const char *type)
if (len == 0)
return 0;
if (BIGSIZE(x) > SIZEOF_LONG_LONG)
- rb_raise(rb_eRangeError, "bignum too big to convert into `%s'", type);
+ rb_raise(rb_eRangeError, "bignum too big to convert into `%s'", type);
#if SIZEOF_LONG_LONG <= SIZEOF_BDIGIT
num = (unsigned LONG_LONG)ds[0];
#else
num = 0;
- for (i = 0; i < len; i++) {
- num = BIGUP(num);
- num += ds[len - i - 1];
+ while (len--) {
+ num = BIGUP(num);
+ num += ds[len];
}
#endif
return num;
@@ -5249,23 +5188,23 @@ dbl2big(double d)
double u = (d < 0)?-d:d;
if (isinf(d)) {
- rb_raise(rb_eFloatDomainError, d < 0 ? "-Infinity" : "Infinity");
+ rb_raise(rb_eFloatDomainError, d < 0 ? "-Infinity" : "Infinity");
}
if (isnan(d)) {
- rb_raise(rb_eFloatDomainError, "NaN");
+ rb_raise(rb_eFloatDomainError, "NaN");
}
while (1.0 <= u) {
- u /= (double)(BIGRAD);
- i++;
+ u /= (double)(BIGRAD);
+ i++;
}
z = bignew(i, d>=0);
digits = BDIGITS(z);
while (i--) {
- u *= BIGRAD;
- c = (BDIGIT)u;
- u -= c;
- digits[i] = c;
+ u *= BIGRAD;
+ c = (BDIGIT)u;
+ u -= c;
+ digits[i] = c;
}
return z;
@@ -5285,48 +5224,43 @@ big2dbl(VALUE x)
BDIGIT *ds = BDIGITS(x), dl;
if (i) {
- bits = i * BITSPERDIG - nlz(ds[i-1]);
- if (bits > DBL_MANT_DIG+DBL_MAX_EXP) {
- d = HUGE_VAL;
- }
- else {
- if (bits > DBL_MANT_DIG+1)
- lo = (bits -= DBL_MANT_DIG+1) / BITSPERDIG;
- else
- bits = 0;
- while (--i > lo) {
- d = ds[i] + BIGRAD*d;
- }
- dl = ds[i];
- if (bits && (dl & ((BDIGIT)1 << (bits %= BITSPERDIG)))) {
- int carry = (dl & ~(BDIGMAX << bits)) != 0;
- if (!carry) {
- while (i-- > 0) {
- carry = ds[i] != 0;
- if (carry) break;
- }
- }
- if (carry) {
- BDIGIT mask = BDIGMAX;
- BDIGIT bit = 1;
- mask <<= bits;
- bit <<= bits;
- dl &= mask;
- dl += bit;
- dl = BIGLO(dl);
- if (!dl) d += 1;
- }
- }
- d = dl + BIGRAD*d;
- if (lo) {
- if (lo > INT_MAX / BITSPERDIG)
- d = HUGE_VAL;
- else if (lo < INT_MIN / BITSPERDIG)
- d = 0.0;
- else
- d = ldexp(d, (int)(lo * BITSPERDIG));
- }
- }
+ bits = i * BITSPERDIG - nlz(ds[i-1]);
+ if (bits > DBL_MANT_DIG+DBL_MAX_EXP) {
+ d = HUGE_VAL;
+ }
+ else {
+ if (bits > DBL_MANT_DIG+1)
+ lo = (bits -= DBL_MANT_DIG+1) / BITSPERDIG;
+ else
+ bits = 0;
+ while (--i > lo) {
+ d = ds[i] + BIGRAD*d;
+ }
+ dl = ds[i];
+ if (bits && (dl & ((BDIGIT)1 << (bits %= BITSPERDIG)))) {
+ int carry = (dl & ~(BDIGMAX << bits)) != 0;
+ if (!carry) {
+ while (i-- > 0) {
+ carry = ds[i] != 0;
+ if (carry) break;
+ }
+ }
+ if (carry) {
+ dl &= BDIGMAX << bits;
+ dl = BIGLO(dl + ((BDIGIT)1 << bits));
+ if (!dl) d += 1;
+ }
+ }
+ d = dl + BIGRAD*d;
+ if (lo) {
+ if (lo > INT_MAX / BITSPERDIG)
+ d = HUGE_VAL;
+ else if (lo < INT_MIN / BITSPERDIG)
+ d = 0.0;
+ else
+ d = ldexp(d, (int)(lo * BITSPERDIG));
+ }
+ }
}
if (BIGNUM_NEGATIVE_P(x)) d = -d;
return d;
@@ -5338,11 +5272,11 @@ rb_big2dbl(VALUE x)
double d = big2dbl(x);
if (isinf(d)) {
- rb_warning("Integer out of Float range");
- if (d < 0.0)
- d = -HUGE_VAL;
- else
- d = HUGE_VAL;
+ rb_warning("Bignum out of Float range");
+ if (d < 0.0)
+ d = -HUGE_VAL;
+ else
+ d = HUGE_VAL;
}
return d;
}
@@ -5397,22 +5331,13 @@ rb_integer_float_cmp(VALUE x, VALUE y)
return INT2FIX(-1);
}
-#if SIZEOF_LONG * CHAR_BIT >= DBL_MANT_DIG /* assume FLT_RADIX == 2 */
-COMPILER_WARNING_PUSH
-#if __has_warning("-Wimplicit-int-float-conversion")
-COMPILER_WARNING_IGNORED(-Wimplicit-int-float-conversion)
-#endif
-static const double LONG_MAX_as_double = LONG_MAX;
-COMPILER_WARNING_POP
-#endif
-
VALUE
rb_integer_float_eq(VALUE x, VALUE y)
{
double yd = RFLOAT_VALUE(y);
double yi, yf;
- if (!isfinite(yd))
+ if (isnan(yd) || isinf(yd))
return Qfalse;
yf = modf(yd, &yi);
if (yf != 0)
@@ -5420,45 +5345,48 @@ rb_integer_float_eq(VALUE x, VALUE y)
if (FIXNUM_P(x)) {
#if SIZEOF_LONG * CHAR_BIT < DBL_MANT_DIG /* assume FLT_RADIX == 2 */
double xd = (double)FIX2LONG(x);
- return RBOOL(xd == yd);
+ if (xd != yd)
+ return Qfalse;
+ return Qtrue;
#else
long xn, yn;
- if (yi < LONG_MIN || LONG_MAX_as_double <= yi)
+ if (yi < LONG_MIN || LONG_MAX < yi)
return Qfalse;
xn = FIX2LONG(x);
yn = (long)yi;
- return RBOOL(xn == yn);
+ if (xn != yn)
+ return Qfalse;
+ return Qtrue;
#endif
}
y = rb_dbl2big(yi);
return rb_big_eq(x, y);
}
-
VALUE
rb_big_cmp(VALUE x, VALUE y)
{
if (FIXNUM_P(y)) {
- x = bigfixize(x);
+ x = bigfixize(x);
if (FIXNUM_P(x)) {
- /* SIGNED_VALUE and Fixnum have same sign-bits, same
- * order */
- SIGNED_VALUE sx = (SIGNED_VALUE)x, sy = (SIGNED_VALUE)y;
- if (sx < sy) return INT2FIX(-1);
- return INT2FIX(sx > sy);
+ /* SIGNED_VALUE and Fixnum have same sign-bits, same
+ * order */
+ SIGNED_VALUE sx = (SIGNED_VALUE)x, sy = (SIGNED_VALUE)y;
+ if (sx < sy) return INT2FIX(-1);
+ return INT2FIX(sx > sy);
}
}
else if (RB_BIGNUM_TYPE_P(y)) {
- if (BIGNUM_SIGN(x) == BIGNUM_SIGN(y)) {
- int cmp = bary_cmp(BDIGITS(x), BIGNUM_LEN(x), BDIGITS(y), BIGNUM_LEN(y));
- return INT2FIX(BIGNUM_SIGN(x) ? cmp : -cmp);
- }
+ if (BIGNUM_SIGN(x) == BIGNUM_SIGN(y)) {
+ int cmp = bary_cmp(BDIGITS(x), BIGNUM_LEN(x), BDIGITS(y), BIGNUM_LEN(y));
+ return INT2FIX(BIGNUM_SIGN(x) ? cmp : -cmp);
+ }
}
else if (RB_FLOAT_TYPE_P(y)) {
return rb_integer_float_cmp(x, y);
}
else {
- return rb_num_coerce_cmp(x, y, idCmp);
+ return rb_num_coerce_cmp(x, y, idCmp);
}
return INT2FIX(BIGNUM_SIGN(x) ? 1 : -1);
}
@@ -5477,30 +5405,30 @@ big_op(VALUE x, VALUE y, enum big_op_t op)
int n;
if (RB_INTEGER_TYPE_P(y)) {
- rel = rb_big_cmp(x, y);
+ rel = rb_big_cmp(x, y);
}
else if (RB_FLOAT_TYPE_P(y)) {
rel = rb_integer_float_cmp(x, y);
}
else {
- ID id = 0;
- switch (op) {
- case big_op_gt: id = '>'; break;
- case big_op_ge: id = idGE; break;
- case big_op_lt: id = '<'; break;
- case big_op_le: id = idLE; break;
- }
- return rb_num_coerce_relop(x, y, id);
+ ID id = 0;
+ switch (op) {
+ case big_op_gt: id = '>'; break;
+ case big_op_ge: id = idGE; break;
+ case big_op_lt: id = '<'; break;
+ case big_op_le: id = idLE; break;
+ }
+ return rb_num_coerce_relop(x, y, id);
}
if (NIL_P(rel)) return Qfalse;
n = FIX2INT(rel);
switch (op) {
- case big_op_gt: return RBOOL(n > 0);
- case big_op_ge: return RBOOL(n >= 0);
- case big_op_lt: return RBOOL(n < 0);
- case big_op_le: return RBOOL(n <= 0);
+ case big_op_gt: return n > 0 ? Qtrue : Qfalse;
+ case big_op_ge: return n >= 0 ? Qtrue : Qfalse;
+ case big_op_lt: return n < 0 ? Qtrue : Qfalse;
+ case big_op_le: return n <= 0 ? Qtrue : Qfalse;
}
return Qundef;
}
@@ -5534,8 +5462,8 @@ rb_big_le(VALUE x, VALUE y)
* big == obj -> true or false
*
* Returns <code>true</code> only if <i>obj</i> has the same value
- * as <i>big</i>. Contrast this with Integer#eql?, which requires
- * <i>obj</i> to be an Integer.
+ * as <i>big</i>. Contrast this with <code>Integer#eql?</code>, which
+ * requires <i>obj</i> to be a <code>Integer</code>.
*
* 68719476736 == 68719476736.0 #=> true
*/
@@ -5544,7 +5472,7 @@ VALUE
rb_big_eq(VALUE x, VALUE y)
{
if (FIXNUM_P(y)) {
- return RBOOL(bignorm(x) == y);
+ return bignorm(x) == y ? Qtrue : Qfalse;
}
else if (RB_BIGNUM_TYPE_P(y)) {
}
@@ -5552,11 +5480,12 @@ rb_big_eq(VALUE x, VALUE y)
return rb_integer_float_eq(x, y);
}
else {
- return rb_equal(y, x);
+ return rb_equal(y, x);
}
if (BIGNUM_SIGN(x) != BIGNUM_SIGN(y)) return Qfalse;
if (BIGNUM_LEN(x) != BIGNUM_LEN(y)) return Qfalse;
- return RBOOL(MEMCMP(BDIGITS(x),BDIGITS(y),BDIGIT,BIGNUM_LEN(y)) == 0);
+ if (MEMCMP(BDIGITS(x),BDIGITS(y),BDIGIT,BIGNUM_LEN(y)) != 0) return Qfalse;
+ return Qtrue;
}
VALUE
@@ -5565,7 +5494,8 @@ rb_big_eql(VALUE x, VALUE y)
if (!RB_BIGNUM_TYPE_P(y)) return Qfalse;
if (BIGNUM_SIGN(x) != BIGNUM_SIGN(y)) return Qfalse;
if (BIGNUM_LEN(x) != BIGNUM_LEN(y)) return Qfalse;
- return RBOOL(MEMCMP(BDIGITS(x),BDIGITS(y),BDIGIT,BIGNUM_LEN(y)) == 0);
+ if (MEMCMP(BDIGITS(x),BDIGITS(y),BDIGIT,BIGNUM_LEN(y)) != 0) return Qfalse;
+ return Qtrue;
}
VALUE
@@ -5659,10 +5589,10 @@ bigsub_int(VALUE x, long y0)
assert(xn == zn);
num = (BDIGIT_DBL_SIGNED)xds[0] - y;
if (xn == 1 && num < 0) {
- BIGNUM_NEGATE(z);
- zds[0] = (BDIGIT)-num;
- RB_GC_GUARD(x);
- return bignorm(z);
+ BIGNUM_NEGATE(z);
+ zds[0] = (BDIGIT)-num;
+ RB_GC_GUARD(x);
+ return bignorm(z);
}
zds[0] = BIGLO(num);
num = BIGDN(num);
@@ -5674,10 +5604,10 @@ bigsub_int(VALUE x, long y0)
num = 0;
for (i=0; i < xn; i++) {
if (y == 0) goto y_is_zero_x;
- num += (BDIGIT_DBL_SIGNED)xds[i] - BIGLO(y);
- zds[i] = BIGLO(num);
- num = BIGDN(num);
- y = BIGDN(y);
+ num += (BDIGIT_DBL_SIGNED)xds[i] - BIGLO(y);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ y = BIGDN(y);
}
for (; i < zn; i++) {
if (y == 0) goto y_is_zero_z;
@@ -5692,9 +5622,9 @@ bigsub_int(VALUE x, long y0)
for (; i < xn; i++) {
y_is_zero_x:
if (num == 0) goto num_is_zero_x;
- num += xds[i];
- zds[i] = BIGLO(num);
- num = BIGDN(num);
+ num += xds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
}
#if SIZEOF_BDIGIT < SIZEOF_LONG
for (; i < zn; i++) {
@@ -5708,7 +5638,7 @@ bigsub_int(VALUE x, long y0)
for (; i < xn; i++) {
num_is_zero_x:
- zds[i] = xds[i];
+ zds[i] = xds[i];
}
#if SIZEOF_BDIGIT < SIZEOF_LONG
for (; i < zn; i++) {
@@ -5722,7 +5652,7 @@ bigsub_int(VALUE x, long y0)
assert(num == 0 || num == -1);
if (num < 0) {
get2comp(z);
- BIGNUM_NEGATE(z);
+ BIGNUM_NEGATE(z);
}
RB_GC_GUARD(x);
return bignorm(z);
@@ -5765,17 +5695,17 @@ bigadd_int(VALUE x, long y)
num = 0;
for (i=0; i < xn; i++) {
if (y == 0) goto y_is_zero_x;
- num += (BDIGIT_DBL)xds[i] + BIGLO(y);
- zds[i] = BIGLO(num);
- num = BIGDN(num);
- y = BIGDN(y);
+ num += (BDIGIT_DBL)xds[i] + BIGLO(y);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ y = BIGDN(y);
}
for (; i < zn; i++) {
if (y == 0) goto y_is_zero_z;
- num += BIGLO(y);
- zds[i] = BIGLO(num);
- num = BIGDN(num);
- y = BIGDN(y);
+ num += BIGLO(y);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ y = BIGDN(y);
}
goto finish;
@@ -5784,25 +5714,25 @@ bigadd_int(VALUE x, long y)
for (;i < xn; i++) {
y_is_zero_x:
if (num == 0) goto num_is_zero_x;
- num += (BDIGIT_DBL)xds[i];
- zds[i] = BIGLO(num);
- num = BIGDN(num);
+ num += (BDIGIT_DBL)xds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
}
for (; i < zn; i++) {
y_is_zero_z:
if (num == 0) goto num_is_zero_z;
- zds[i] = BIGLO(num);
- num = BIGDN(num);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
}
goto finish;
for (;i < xn; i++) {
num_is_zero_x:
- zds[i] = xds[i];
+ zds[i] = xds[i];
}
for (; i < zn; i++) {
num_is_zero_z:
- zds[i] = 0;
+ zds[i] = 0;
}
goto finish;
@@ -5819,15 +5749,15 @@ bigadd(VALUE x, VALUE y, int sign)
sign = (sign == BIGNUM_SIGN(y));
if (BIGNUM_SIGN(x) != sign) {
- if (sign) return bigsub(y, x);
- return bigsub(x, y);
+ if (sign) return bigsub(y, x);
+ return bigsub(x, y);
}
if (BIGNUM_LEN(x) > BIGNUM_LEN(y)) {
- len = BIGNUM_LEN(x) + 1;
+ len = BIGNUM_LEN(x) + 1;
}
else {
- len = BIGNUM_LEN(y) + 1;
+ len = BIGNUM_LEN(y) + 1;
}
z = bignew(len, sign);
@@ -5844,26 +5774,26 @@ rb_big_plus(VALUE x, VALUE y)
long n;
if (FIXNUM_P(y)) {
- n = FIX2LONG(y);
- if ((n > 0) != BIGNUM_SIGN(x)) {
- if (n < 0) {
- n = -n;
- }
- return bigsub_int(x, n);
- }
- if (n < 0) {
- n = -n;
- }
- return bigadd_int(x, n);
+ n = FIX2LONG(y);
+ if ((n > 0) != BIGNUM_SIGN(x)) {
+ if (n < 0) {
+ n = -n;
+ }
+ return bigsub_int(x, n);
+ }
+ if (n < 0) {
+ n = -n;
+ }
+ return bigadd_int(x, n);
}
else if (RB_BIGNUM_TYPE_P(y)) {
- return bignorm(bigadd(x, y, 1));
+ return bignorm(bigadd(x, y, 1));
}
else if (RB_FLOAT_TYPE_P(y)) {
- return DBL2NUM(rb_big2dbl(x) + RFLOAT_VALUE(y));
+ return DBL2NUM(rb_big2dbl(x) + RFLOAT_VALUE(y));
}
else {
- return rb_num_coerce_bin(x, y, '+');
+ return rb_num_coerce_bin(x, y, '+');
}
}
@@ -5873,26 +5803,26 @@ rb_big_minus(VALUE x, VALUE y)
long n;
if (FIXNUM_P(y)) {
- n = FIX2LONG(y);
- if ((n > 0) != BIGNUM_SIGN(x)) {
- if (n < 0) {
- n = -n;
- }
- return bigadd_int(x, n);
- }
- if (n < 0) {
- n = -n;
- }
- return bigsub_int(x, n);
+ n = FIX2LONG(y);
+ if ((n > 0) != BIGNUM_SIGN(x)) {
+ if (n < 0) {
+ n = -n;
+ }
+ return bigadd_int(x, n);
+ }
+ if (n < 0) {
+ n = -n;
+ }
+ return bigsub_int(x, n);
}
else if (RB_BIGNUM_TYPE_P(y)) {
- return bignorm(bigadd(x, y, 0));
+ return bignorm(bigadd(x, y, 0));
}
else if (RB_FLOAT_TYPE_P(y)) {
- return DBL2NUM(rb_big2dbl(x) - RFLOAT_VALUE(y));
+ return DBL2NUM(rb_big2dbl(x) - RFLOAT_VALUE(y));
}
else {
- return rb_num_coerce_bin(x, y, '-');
+ return rb_num_coerce_bin(x, y, '-');
}
}
@@ -5951,15 +5881,15 @@ VALUE
rb_big_mul(VALUE x, VALUE y)
{
if (FIXNUM_P(y)) {
- y = rb_int2big(FIX2LONG(y));
+ y = rb_int2big(FIX2LONG(y));
}
else if (RB_BIGNUM_TYPE_P(y)) {
}
else if (RB_FLOAT_TYPE_P(y)) {
- return DBL2NUM(rb_big2dbl(x) * RFLOAT_VALUE(y));
+ return DBL2NUM(rb_big2dbl(x) * RFLOAT_VALUE(y));
}
else {
- return rb_num_coerce_bin(x, y, '*');
+ return rb_num_coerce_bin(x, y, '*');
}
return bignorm(bigmul0(x, y));
@@ -5986,21 +5916,21 @@ bigdivrem(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp)
BARY_TRUNC(xds, xn);
if (xn < yn || (xn == yn && xds[xn - 1] < yds[yn - 1])) {
- if (divp) *divp = rb_int2big(0);
- if (modp) *modp = x;
- return Qnil;
+ if (divp) *divp = rb_int2big(0);
+ if (modp) *modp = x;
+ return Qnil;
}
if (yn == 1) {
- dd = yds[0];
- z = bignew(xn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
- zds = BDIGITS(z);
+ dd = yds[0];
+ z = bignew(xn, BIGNUM_SIGN(x)==BIGNUM_SIGN(y));
+ zds = BDIGITS(z);
dd = bigdivrem_single(zds, xds, xn, dd);
- if (modp) {
- *modp = rb_uint2big((uintptr_t)dd);
- BIGNUM_SET_SIGN(*modp, BIGNUM_SIGN(x));
- }
- if (divp) *divp = z;
- return Qnil;
+ if (modp) {
+ *modp = rb_uint2big((VALUE)dd);
+ BIGNUM_SET_SIGN(*modp, BIGNUM_SIGN(x));
+ }
+ if (divp) *divp = z;
+ return Qnil;
}
if (xn == 2 && yn == 2) {
BDIGIT_DBL x0 = bary2bdigitdbl(xds, 2);
@@ -6065,11 +5995,11 @@ bigdivmod(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp)
bigdivrem(x, y, divp, &mod);
if (BIGNUM_SIGN(x) != BIGNUM_SIGN(y) && !BIGZEROP(mod)) {
- if (divp) *divp = bigadd(*divp, rb_int2big(1), 0);
- if (modp) *modp = bigadd(mod, y, 1);
+ if (divp) *divp = bigadd(*divp, rb_int2big(1), 0);
+ if (modp) *modp = bigadd(mod, y, 1);
}
else if (modp) {
- *modp = mod;
+ *modp = mod;
}
}
@@ -6080,25 +6010,22 @@ rb_big_divide(VALUE x, VALUE y, ID op)
VALUE z;
if (FIXNUM_P(y)) {
- y = rb_int2big(FIX2LONG(y));
+ y = rb_int2big(FIX2LONG(y));
}
else if (RB_BIGNUM_TYPE_P(y)) {
}
else if (RB_FLOAT_TYPE_P(y)) {
- if (op == '/') {
- double dx = rb_big2dbl(x);
- return rb_flo_div_flo(DBL2NUM(dx), y);
- }
- else {
- VALUE v;
- double dy = RFLOAT_VALUE(y);
- if (dy == 0.0) rb_num_zerodiv();
- v = rb_big_divide(x, y, '/');
- return rb_dbl2big(RFLOAT_VALUE(v));
- }
+ if (op == '/') {
+ return DBL2NUM(rb_big2dbl(x) / RFLOAT_VALUE(y));
+ }
+ else {
+ double dy = RFLOAT_VALUE(y);
+ if (dy == 0.0) rb_num_zerodiv();
+ return rb_dbl2big(rb_big2dbl(x) / dy);
+ }
}
else {
- return rb_num_coerce_bin(x, y, op);
+ return rb_num_coerce_bin(x, y, op);
}
bigdivmod(x, y, &z, 0);
@@ -6114,7 +6041,7 @@ rb_big_div(VALUE x, VALUE y)
VALUE
rb_big_idiv(VALUE x, VALUE y)
{
- return rb_big_divide(x, y, idDiv);
+ return rb_big_divide(x, y, rb_intern("div"));
}
VALUE
@@ -6123,10 +6050,10 @@ rb_big_modulo(VALUE x, VALUE y)
VALUE z;
if (FIXNUM_P(y)) {
- y = rb_int2big(FIX2LONG(y));
+ y = rb_int2big(FIX2LONG(y));
}
else if (!RB_BIGNUM_TYPE_P(y)) {
- return rb_num_coerce_bin(x, y, '%');
+ return rb_num_coerce_bin(x, y, '%');
}
bigdivmod(x, y, 0, &z);
@@ -6139,10 +6066,10 @@ rb_big_remainder(VALUE x, VALUE y)
VALUE z;
if (FIXNUM_P(y)) {
- y = rb_int2big(FIX2LONG(y));
+ y = rb_int2big(FIX2LONG(y));
}
else if (!RB_BIGNUM_TYPE_P(y)) {
- return rb_num_coerce_bin(x, y, rb_intern("remainder"));
+ return rb_num_coerce_bin(x, y, rb_intern("remainder"));
}
bigdivrem(x, y, 0, &z);
@@ -6155,10 +6082,10 @@ rb_big_divmod(VALUE x, VALUE y)
VALUE div, mod;
if (FIXNUM_P(y)) {
- y = rb_int2big(FIX2LONG(y));
+ y = rb_int2big(FIX2LONG(y));
}
else if (!RB_BIGNUM_TYPE_P(y)) {
- return rb_num_coerce_bin(x, y, idDivmod);
+ return rb_num_coerce_bin(x, y, rb_intern("divmod"));
}
bigdivmod(x, y, &div, &mod);
@@ -6169,9 +6096,9 @@ static VALUE
big_shift(VALUE x, long n)
{
if (n < 0)
- return big_lshift(x, 1+(unsigned long)(-(n+1)));
+ return big_lshift(x, 1+(unsigned long)(-(n+1)));
else if (n > 0)
- return big_rshift(x, (unsigned long)n);
+ return big_rshift(x, (unsigned long)n);
return x;
}
@@ -6195,9 +6122,9 @@ big_fdiv(VALUE x, VALUE y, long ey)
l = ex - ey;
#if SIZEOF_LONG > SIZEOF_INT
{
- /* Visual C++ can't be here */
- if (l > INT_MAX) return HUGE_VAL;
- if (l < INT_MIN) return 0.0;
+ /* Visual C++ can't be here */
+ if (l > INT_MAX) return INFINITY;
+ if (l < INT_MIN) return 0.0;
}
#endif
return ldexp(big2dbl(z), (int)l);
@@ -6227,29 +6154,29 @@ double
rb_big_fdiv_double(VALUE x, VALUE y)
{
double dx, dy;
- VALUE v;
dx = big2dbl(x);
if (FIXNUM_P(y)) {
- dy = (double)FIX2LONG(y);
- if (isinf(dx))
- return big_fdiv_int(x, rb_int2big(FIX2LONG(y)));
+ dy = (double)FIX2LONG(y);
+ if (isinf(dx))
+ return big_fdiv_int(x, rb_int2big(FIX2LONG(y)));
}
else if (RB_BIGNUM_TYPE_P(y)) {
- return big_fdiv_int(x, y);
+ dy = rb_big2dbl(y);
+ if (isinf(dx) || isinf(dy))
+ return big_fdiv_int(x, y);
}
else if (RB_FLOAT_TYPE_P(y)) {
- dy = RFLOAT_VALUE(y);
- if (isnan(dy))
- return dy;
- if (isinf(dx))
- return big_fdiv_float(x, y);
+ dy = RFLOAT_VALUE(y);
+ if (isnan(dy))
+ return dy;
+ if (isinf(dx))
+ return big_fdiv_float(x, y);
}
else {
- return NUM2DBL(rb_num_coerce_bin(x, y, idFdiv));
+ return NUM2DBL(rb_num_coerce_bin(x, y, rb_intern("fdiv")));
}
- v = rb_flo_div_flo(DBL2NUM(dx), DBL2NUM(dy));
- return NUM2DBL(v);
+ return dx / dy;
}
VALUE
@@ -6266,55 +6193,48 @@ rb_big_pow(VALUE x, VALUE y)
again:
if (y == INT2FIX(0)) return INT2FIX(1);
- if (y == INT2FIX(1)) return x;
if (RB_FLOAT_TYPE_P(y)) {
- d = RFLOAT_VALUE(y);
- if ((BIGNUM_NEGATIVE_P(x) && !BIGZEROP(x))) {
- return rb_dbl_complex_new_polar_pi(pow(-rb_big2dbl(x), d), d);
- }
+ d = RFLOAT_VALUE(y);
+ if ((BIGNUM_NEGATIVE_P(x) && !BIGZEROP(x)) && d != round(d))
+ return rb_funcall(rb_complex_raw1(x), idPow, 1, y);
}
else if (RB_BIGNUM_TYPE_P(y)) {
- y = bignorm(y);
- if (FIXNUM_P(y))
- goto again;
- rb_warn("in a**b, b may be too big");
- d = rb_big2dbl(y);
+ y = bignorm(y);
+ if (FIXNUM_P(y))
+ goto again;
+ rb_warn("in a**b, b may be too big");
+ d = rb_big2dbl(y);
}
else if (FIXNUM_P(y)) {
- yy = FIX2LONG(y);
+ yy = FIX2LONG(y);
- if (yy < 0) {
- x = rb_big_pow(x, LONG2NUM(-yy));
- if (RB_INTEGER_TYPE_P(x))
- return rb_rational_raw(INT2FIX(1), x);
- else
- return DBL2NUM(1.0 / NUM2DBL(x));
- }
- else {
- VALUE z = 0;
- SIGNED_VALUE mask;
+ if (yy < 0)
+ return rb_funcall(rb_rational_raw1(x), idPow, 1, y);
+ else {
+ VALUE z = 0;
+ SIGNED_VALUE mask;
const size_t xbits = rb_absint_numwords(x, 1, NULL);
- const size_t BIGLEN_LIMIT = 32*1024*1024;
+ const size_t BIGLEN_LIMIT = 32*1024*1024;
- if (xbits == (size_t)-1 ||
+ if (xbits == (size_t)-1 ||
(xbits > BIGLEN_LIMIT) ||
(xbits * yy > BIGLEN_LIMIT)) {
- rb_warn("in a**b, b may be too big");
- d = (double)yy;
- }
- else {
- for (mask = FIXNUM_MAX + 1; mask; mask >>= 1) {
- if (z) z = bigsq(z);
- if (yy & mask) {
- z = z ? bigtrunc(bigmul0(z, x)) : x;
- }
- }
- return bignorm(z);
- }
- }
+ rb_warn("in a**b, b may be too big");
+ d = (double)yy;
+ }
+ else {
+ for (mask = FIXNUM_MAX + 1; mask; mask >>= 1) {
+ if (z) z = bigsq(z);
+ if (yy & mask) {
+ z = z ? bigtrunc(bigmul0(z, x)) : x;
+ }
+ }
+ return bignorm(z);
+ }
+ }
}
else {
- return rb_num_coerce_bin(x, y, idPow);
+ return rb_num_coerce_bin(x, y, idPow);
}
return DBL2NUM(pow(rb_big2dbl(x), d));
}
@@ -6334,8 +6254,8 @@ bigand_int(VALUE x, long xn, BDIGIT hibitsx, long y)
xds = BDIGITS(x);
#if SIZEOF_BDIGIT >= SIZEOF_LONG
if (!hibitsy) {
- y &= xds[0];
- return LONG2NUM(y);
+ y &= xds[0];
+ return LONG2NUM(y);
}
#endif
@@ -6364,10 +6284,10 @@ bigand_int(VALUE x, long xn, BDIGIT hibitsx, long y)
}
#endif
for (;i < xn; i++) {
- zds[i] = xds[i] & hibitsy;
+ zds[i] = xds[i] & hibitsy;
}
for (;i < zn; i++) {
- zds[i] = hibitsx & hibitsy;
+ zds[i] = hibitsx & hibitsy;
}
twocomp2abs_bang(z, hibitsx && hibitsy);
RB_GC_GUARD(x);
@@ -6387,12 +6307,12 @@ rb_big_and(VALUE x, VALUE y)
long tmpn;
if (!RB_INTEGER_TYPE_P(y)) {
- return rb_num_coerce_bit(x, y, '&');
+ return rb_num_coerce_bit(x, y, '&');
}
hibitsx = abs2twocomp(&x, &xn);
if (FIXNUM_P(y)) {
- return bigand_int(x, xn, hibitsx, FIX2LONG(y));
+ return bigand_int(x, xn, hibitsx, FIX2LONG(y));
}
hibitsy = abs2twocomp(&y, &yn);
if (xn > yn) {
@@ -6414,10 +6334,10 @@ rb_big_and(VALUE x, VALUE y)
zds = BDIGITS(z);
for (i=0; i<n1; i++) {
- zds[i] = ds1[i] & ds2[i];
+ zds[i] = ds1[i] & ds2[i];
}
for (; i<n2; i++) {
- zds[i] = hibits1 & ds2[i];
+ zds[i] = hibits1 & ds2[i];
}
twocomp2abs_bang(z, hibits1 && hibits2);
RB_GC_GUARD(x);
@@ -6506,12 +6426,12 @@ rb_big_or(VALUE x, VALUE y)
long tmpn;
if (!RB_INTEGER_TYPE_P(y)) {
- return rb_num_coerce_bit(x, y, '|');
+ return rb_num_coerce_bit(x, y, '|');
}
hibitsx = abs2twocomp(&x, &xn);
if (FIXNUM_P(y)) {
- return bigor_int(x, xn, hibitsx, FIX2LONG(y));
+ return bigor_int(x, xn, hibitsx, FIX2LONG(y));
}
hibitsy = abs2twocomp(&y, &yn);
if (xn > yn) {
@@ -6533,10 +6453,10 @@ rb_big_or(VALUE x, VALUE y)
zds = BDIGITS(z);
for (i=0; i<n1; i++) {
- zds[i] = ds1[i] | ds2[i];
+ zds[i] = ds1[i] | ds2[i];
}
for (; i<n2; i++) {
- zds[i] = hibits1 | ds2[i];
+ zds[i] = hibits1 | ds2[i];
}
twocomp2abs_bang(z, hibits1 || hibits2);
RB_GC_GUARD(x);
@@ -6600,12 +6520,12 @@ rb_big_xor(VALUE x, VALUE y)
long tmpn;
if (!RB_INTEGER_TYPE_P(y)) {
- return rb_num_coerce_bit(x, y, '^');
+ return rb_num_coerce_bit(x, y, '^');
}
hibitsx = abs2twocomp(&x, &xn);
if (FIXNUM_P(y)) {
- return bigxor_int(x, xn, hibitsx, FIX2LONG(y));
+ return bigxor_int(x, xn, hibitsx, FIX2LONG(y));
}
hibitsy = abs2twocomp(&y, &yn);
if (xn > yn) {
@@ -6624,10 +6544,10 @@ rb_big_xor(VALUE x, VALUE y)
zds = BDIGITS(z);
for (i=0; i<n1; i++) {
- zds[i] = ds1[i] ^ ds2[i];
+ zds[i] = ds1[i] ^ ds2[i];
}
for (; i<n2; i++) {
- zds[i] = hibitsx ^ ds2[i];
+ zds[i] = hibitsx ^ ds2[i];
}
twocomp2abs_bang(z, (hibits1 ^ hibits2) != 0);
RB_GC_GUARD(x);
@@ -6643,25 +6563,25 @@ rb_big_lshift(VALUE x, VALUE y)
int shift_numbits;
for (;;) {
- if (FIXNUM_P(y)) {
- long l = FIX2LONG(y);
+ if (FIXNUM_P(y)) {
+ long l = FIX2LONG(y);
unsigned long shift;
- if (0 <= l) {
- lshift_p = 1;
+ if (0 <= l) {
+ lshift_p = 1;
shift = l;
}
else {
- lshift_p = 0;
- shift = 1+(unsigned long)(-(l+1));
- }
+ lshift_p = 0;
+ shift = 1+(unsigned long)(-(l+1));
+ }
shift_numbits = (int)(shift & (BITSPERDIG-1));
shift_numdigits = shift >> bit_length(BITSPERDIG-1);
return bignorm(big_shift3(x, lshift_p, shift_numdigits, shift_numbits));
- }
- else if (RB_BIGNUM_TYPE_P(y)) {
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
return bignorm(big_shift2(x, 1, y));
- }
- y = rb_to_int(y);
+ }
+ y = rb_to_int(y);
}
}
@@ -6673,8 +6593,8 @@ rb_big_rshift(VALUE x, VALUE y)
int shift_numbits;
for (;;) {
- if (FIXNUM_P(y)) {
- long l = FIX2LONG(y);
+ if (FIXNUM_P(y)) {
+ long l = FIX2LONG(y);
unsigned long shift;
if (0 <= l) {
lshift_p = 0;
@@ -6682,16 +6602,16 @@ rb_big_rshift(VALUE x, VALUE y)
}
else {
lshift_p = 1;
- shift = 1+(unsigned long)(-(l+1));
- }
+ shift = 1+(unsigned long)(-(l+1));
+ }
shift_numbits = (int)(shift & (BITSPERDIG-1));
shift_numdigits = shift >> bit_length(BITSPERDIG-1);
return bignorm(big_shift3(x, lshift_p, shift_numdigits, shift_numbits));
- }
- else if (RB_BIGNUM_TYPE_P(y)) {
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
return bignorm(big_shift2(x, 0, y));
- }
- y = rb_to_int(y);
+ }
+ y = rb_to_int(y);
}
}
@@ -6705,29 +6625,29 @@ rb_big_aref(VALUE x, VALUE y)
BDIGIT bit;
if (RB_BIGNUM_TYPE_P(y)) {
- if (BIGNUM_NEGATIVE_P(y))
- return INT2FIX(0);
- bigtrunc(y);
- if (BIGSIZE(y) > sizeof(size_t)) {
- return BIGNUM_SIGN(x) ? INT2FIX(0) : INT2FIX(1);
- }
+ if (BIGNUM_NEGATIVE_P(y))
+ return INT2FIX(0);
+ bigtrunc(y);
+ if (BIGSIZE(y) > sizeof(size_t)) {
+ out_of_range:
+ return BIGNUM_SIGN(x) ? INT2FIX(0) : INT2FIX(1);
+ }
#if SIZEOF_SIZE_T <= SIZEOF_LONG
- shift = big2ulong(y, "long");
+ shift = big2ulong(y, "long");
#else
- shift = big2ull(y, "long long");
+ shift = big2ull(y, "long long");
#endif
}
else {
- l = NUM2LONG(y);
- if (l < 0) return INT2FIX(0);
- shift = (size_t)l;
+ l = NUM2LONG(y);
+ if (l < 0) return INT2FIX(0);
+ shift = (size_t)l;
}
s1 = shift/BITSPERDIG;
s2 = shift%BITSPERDIG;
bit = (BDIGIT)1 << s2;
- if (s1 >= BIGNUM_LEN(x))
- return BIGNUM_SIGN(x) ? INT2FIX(0) : INT2FIX(1);
+ if (s1 >= BIGNUM_LEN(x)) goto out_of_range;
xds = BDIGITS(x);
if (BIGNUM_POSITIVE_P(x))
@@ -6751,15 +6671,14 @@ rb_big_hash(VALUE x)
/*
* call-seq:
- * int.coerce(numeric) -> array
+ * big.coerce(numeric) -> array
*
- * Returns an array with both a +numeric+ and a +int+ represented as
- * Integer objects or Float objects.
+ * Returns an array with both a +numeric+ and a +big+ represented as Bignum
+ * objects.
*
- * This is achieved by converting +numeric+ to an Integer or a Float.
+ * This is achieved by converting +numeric+ to a Bignum.
*
- * A TypeError is raised if the +numeric+ is not an Integer or a Float
- * type.
+ * A TypeError is raised if the +numeric+ is not a Fixnum or Bignum type.
*
* (0x3FFFFFFFFFFFFFFF+1).coerce(42) #=> [42, 4611686018427387904]
*/
@@ -6781,8 +6700,8 @@ VALUE
rb_big_abs(VALUE x)
{
if (BIGNUM_NEGATIVE_P(x)) {
- x = rb_big_clone(x);
- BIGNUM_SET_POSITIVE_SIGN(x);
+ x = rb_big_clone(x);
+ BIGNUM_SET_POSITIVE_SIGN(x);
}
return x;
}
@@ -6849,14 +6768,17 @@ rb_big_bit_length(VALUE big)
VALUE
rb_big_odd_p(VALUE num)
{
- return RBOOL(BIGNUM_LEN(num) != 0 && BDIGITS(num)[0] & 1);
+ if (BIGNUM_LEN(num) != 0 && BDIGITS(num)[0] & 1) {
+ return Qtrue;
+ }
+ return Qfalse;
}
VALUE
rb_big_even_p(VALUE num)
{
if (BIGNUM_LEN(num) != 0 && BDIGITS(num)[0] & 1) {
- return Qfalse;
+ return Qfalse;
}
return Qtrue;
}
@@ -6887,34 +6809,26 @@ estimate_initial_sqrt(VALUE *xp, const size_t xn, const BDIGIT *nds, size_t len)
double f;
if (rshift > 0) {
- lowbits = (BDIGIT)d & ~(~(BDIGIT)1U << rshift);
- d >>= rshift;
+ lowbits = (BDIGIT)d & ~(~(BDIGIT)1U << rshift);
+ d >>= rshift;
}
else if (rshift < 0) {
- d <<= -rshift;
- d |= nds[len-dbl_per_bdig-1] >> (BITSPERDIG+rshift);
+ d <<= -rshift;
+ d |= nds[len-dbl_per_bdig-1] >> (BITSPERDIG+rshift);
}
f = sqrt(BDIGIT_DBL_TO_DOUBLE(d));
d = (BDIGIT_DBL)ceil(f);
if (BDIGIT_DBL_TO_DOUBLE(d) == f) {
- if (lowbits || (lowbits = !bary_zero_p(nds, len-dbl_per_bdig)))
- ++d;
+ if (lowbits || (lowbits = !bary_zero_p(nds, len-dbl_per_bdig)))
+ ++d;
}
else {
- lowbits = 1;
+ lowbits = 1;
}
rshift /= 2;
rshift += (2-(len&1))*BITSPERDIG/2;
if (rshift >= 0) {
- if (nlz((BDIGIT)d) + rshift >= BITSPERDIG) {
- /* (d << rshift) does cause overflow.
- * example: Integer.sqrt(0xffff_ffff_ffff_ffff ** 2)
- */
- d = ~(BDIGIT_DBL)0;
- }
- else {
- d <<= rshift;
- }
+ d <<= rshift;
}
BDIGITS_ZERO(xds, xn-2);
bdigitdbl2bary(&xds[xn-2], 2, d);
@@ -6933,49 +6847,52 @@ rb_big_isqrt(VALUE n)
BDIGIT *xds;
if (len <= 2) {
- BDIGIT sq = rb_bdigit_dbl_isqrt(bary2bdigitdbl(nds, len));
+ BDIGIT sq = rb_bdigit_dbl_isqrt(bary2bdigitdbl(nds, len));
#if SIZEOF_BDIGIT > SIZEOF_LONG
- return ULL2NUM(sq);
+ return ULL2NUM(sq);
#else
- return ULONG2NUM(sq);
+ return ULONG2NUM(sq);
#endif
}
else if ((xds = estimate_initial_sqrt(&x, xn, nds, len)) != 0) {
- size_t tn = xn + BIGDIVREM_EXTRA_WORDS;
- VALUE t = bignew_1(0, tn, 1);
- BDIGIT *tds = BDIGITS(t);
- tn = BIGNUM_LEN(t);
-
- /* t = n/x */
- while (bary_divmod_branch(tds, tn, NULL, 0, nds, len, xds, xn),
- bary_cmp(tds, tn, xds, xn) < 0) {
- int carry;
- BARY_TRUNC(tds, tn);
- /* x = (x+t)/2 */
- carry = bary_add(xds, xn, xds, xn, tds, tn);
- bary_small_rshift(xds, xds, xn, 1, carry);
- tn = BIGNUM_LEN(t);
- }
+ size_t tn = xn + BIGDIVREM_EXTRA_WORDS;
+ VALUE t = bignew_1(0, tn, 1);
+ BDIGIT *tds = BDIGITS(t);
+ tn = BIGNUM_LEN(t);
+
+ /* t = n/x */
+ while (bary_divmod_branch(tds, tn, NULL, 0, nds, len, xds, xn),
+ bary_cmp(tds, tn, xds, xn) < 0) {
+ int carry;
+ BARY_TRUNC(tds, tn);
+ /* x = (x+t)/2 */
+ carry = bary_add(xds, xn, xds, xn, tds, tn);
+ bary_small_rshift(xds, xds, xn, 1, carry);
+ tn = BIGNUM_LEN(t);
+ }
+ rb_big_realloc(t, 0);
+ rb_gc_force_recycle(t);
}
RBASIC_SET_CLASS_RAW(x, rb_cInteger);
return x;
}
-#if USE_GMP
+#ifdef USE_GMP
static void
bary_powm_gmp(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, const BDIGIT *mds, size_t mn)
{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGIT)*CHAR_BIT;
mpz_t z, x, y, m;
size_t count;
mpz_init(x);
mpz_init(y);
mpz_init(m);
mpz_init(z);
- bdigits_to_mpz(x, xds, xn);
- bdigits_to_mpz(y, yds, yn);
- bdigits_to_mpz(m, mds, mn);
+ mpz_import(x, xn, -1, sizeof(BDIGIT), 0, nails, xds);
+ mpz_import(y, yn, -1, sizeof(BDIGIT), 0, nails, yds);
+ mpz_import(m, mn, -1, sizeof(BDIGIT), 0, nails, mds);
mpz_powm(z, x, y, m);
- bdigits_from_mpz(z, zds, &count);
+ mpz_export(zds, &count, -1, sizeof(BDIGIT), 0, nails, z);
BDIGITS_ZERO(zds+count, zn-count);
mpz_clear(x);
mpz_clear(y);
@@ -6987,7 +6904,7 @@ bary_powm_gmp(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT
static VALUE
int_pow_tmp3(VALUE x, VALUE y, VALUE m, int nega_flg)
{
-#if USE_GMP
+#ifdef USE_GMP
VALUE z;
size_t xn, yn, mn, zn;
@@ -7005,7 +6922,7 @@ int_pow_tmp3(VALUE x, VALUE y, VALUE m, int nega_flg)
z = bignew(zn, 1);
bary_powm_gmp(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn, BDIGITS(m), mn);
if (nega_flg & BIGNUM_POSITIVE_P(z)) {
- z = rb_big_minus(z, m);
+ z = rb_funcall(z, '-', 1, m);
}
RB_GC_GUARD(x);
RB_GC_GUARD(y);
@@ -7015,25 +6932,25 @@ int_pow_tmp3(VALUE x, VALUE y, VALUE m, int nega_flg)
VALUE tmp = LONG2FIX(1L);
long yy;
- for (/*NOP*/; ! FIXNUM_P(y); y = rb_big_rshift(y, LONG2FIX(1L))) {
- if (RTEST(rb_int_odd_p(y))) {
- tmp = rb_int_mul(tmp, x);
+ for (/*NOP*/; ! FIXNUM_P(y); y = rb_funcall(y, rb_intern(">>"), 1, LONG2FIX(1L))) {
+ if (RTEST(rb_funcall(y, rb_intern("odd?"), 0))) {
+ tmp = rb_funcall(tmp, '*', 1, x);
tmp = rb_int_modulo(tmp, m);
}
- x = rb_int_mul(x, x);
+ x = rb_funcall(x, '*', 1, x);
x = rb_int_modulo(x, m);
}
for (yy = FIX2LONG(y); yy; yy >>= 1L) {
if (yy & 1L) {
- tmp = rb_int_mul(tmp, x);
+ tmp = rb_funcall(tmp, '*', 1, x);
tmp = rb_int_modulo(tmp, m);
}
- x = rb_int_mul(x, x);
+ x = rb_funcall(x, '*', 1, x);
x = rb_int_modulo(x, m);
}
- if (nega_flg && rb_int_positive_p(tmp)) {
- tmp = rb_int_minus(tmp, m);
+ if (nega_flg && RTEST(rb_funcall(tmp, rb_intern("positive?"), 0))) {
+ tmp = rb_funcall(tmp, '-', 1, m);
}
return tmp;
#endif
@@ -7050,7 +6967,7 @@ int_pow_tmp1(VALUE x, VALUE y, long mm, int nega_flg)
long tmp = 1L;
long yy;
- for (/*NOP*/; ! FIXNUM_P(y); y = rb_big_rshift(y, LONG2FIX(1L))) {
+ for (/*NOP*/; ! FIXNUM_P(y); y = rb_funcall(y, idGTGT, 1, LONG2FIX(1L))) {
if (RTEST(rb_int_odd_p(y))) {
tmp = (tmp * xx) % mm;
}
@@ -7086,7 +7003,7 @@ int_pow_tmp2(VALUE x, VALUE y, long mm, int nega_flg)
# define MUL_MODULO(a, b, c) rb_int_modulo(rb_fix_mul_fix((a), (b)), (c))
#endif
- for (/*NOP*/; ! FIXNUM_P(y); y = rb_big_rshift(y, LONG2FIX(1L))) {
+ for (/*NOP*/; ! FIXNUM_P(y); y = rb_funcall(y, idGTGT, 1, LONG2FIX(1L))) {
if (RTEST(rb_int_odd_p(y))) {
tmp2 = MUL_MODULO(tmp2, xx, m);
}
@@ -7127,7 +7044,7 @@ rb_int_powm(int const argc, VALUE * const argv, VALUE const num)
rb_check_arity(argc, 1, 2);
if (argc == 1) {
- return rb_int_pow(num, argv[0]);
+ return rb_funcall(num, rb_intern("**"), 1, argv[0]);
}
else {
VALUE const a = num;
@@ -7137,37 +7054,34 @@ rb_int_powm(int const argc, VALUE * const argv, VALUE const num)
if ( ! RB_INTEGER_TYPE_P(b)) {
rb_raise(rb_eTypeError, "Integer#pow() 2nd argument not allowed unless a 1st argument is integer");
}
- if (rb_int_negative_p(b)) {
+ if (rb_num_negative_int_p(b)) {
rb_raise(rb_eRangeError, "Integer#pow() 1st argument cannot be negative when 2nd argument specified");
}
if (!RB_INTEGER_TYPE_P(m)) {
rb_raise(rb_eTypeError, "Integer#pow() 2nd argument not allowed unless all arguments are integers");
}
- if (rb_int_negative_p(m)) {
- m = rb_int_uminus(m);
+ if (rb_num_negative_int_p(m)) {
+ m = rb_funcall(m, idUMinus, 0);
nega_flg = 1;
}
+ if (!rb_num_positive_int_p(m)) {
+ rb_num_zerodiv();
+ }
if (FIXNUM_P(m)) {
long const half_val = (long)HALF_LONG_MSB;
long const mm = FIX2LONG(m);
- if (!mm) rb_num_zerodiv();
- if (mm == 1) return INT2FIX(0);
if (mm <= half_val) {
return int_pow_tmp1(rb_int_modulo(a, m), b, mm, nega_flg);
- }
- else {
+ } else {
return int_pow_tmp2(rb_int_modulo(a, m), b, mm, nega_flg);
}
- }
- else {
- if (rb_bigzero_p(m)) rb_num_zerodiv();
- if (bignorm(m) == INT2FIX(1)) return INT2FIX(0);
+ } else if (RB_TYPE_P(m, T_BIGNUM)) {
return int_pow_tmp3(rb_int_modulo(a, m), b, m, nega_flg);
}
}
- UNREACHABLE_RETURN(Qnil);
+ UNREACHABLE;
}
/*
@@ -7191,9 +7105,15 @@ rb_int_powm(int const argc, VALUE * const argv, VALUE const num)
void
Init_Bignum(void)
{
+#ifndef RUBY_INTEGER_UNIFICATION
+ rb_cBignum = rb_cInteger;
+#endif
+ rb_define_const(rb_cObject, "Bignum", rb_cInteger);
+ rb_deprecate_constant(rb_cObject, "Bignum");
+
rb_define_method(rb_cInteger, "coerce", rb_int_coerce, 1);
-#if USE_GMP
+#ifdef USE_GMP
/* The version of loaded GMP. */
rb_define_const(rb_cInteger, "GMP_VERSION", rb_sprintf("GMP %s", gmp_version));
#endif
diff --git a/bin/erb b/bin/erb
new file mode 100755
index 0000000000..86f7042fae
--- /dev/null
+++ b/bin/erb
@@ -0,0 +1,171 @@
+#!/usr/bin/env ruby
+# Tiny eRuby --- ERB2
+# Copyright (c) 1999-2000,2002 Masatoshi SEKI
+# You can redistribute it and/or modify it under the same terms as Ruby.
+
+require 'erb'
+
+class ERB
+ module Main
+ def ARGV.switch
+ return nil if self.empty?
+ arg = self.shift
+ return nil if arg == '--'
+ case arg
+ when /\A-(.)(.*)/
+ if $1 == '-'
+ arg, @maybe_arg = arg.split(/=/, 2)
+ return arg
+ end
+ raise 'unknown switch "-"' if $2[0] == ?- and $1 != 'T'
+ if $2.size > 0
+ self.unshift "-#{$2}"
+ @maybe_arg = $2
+ else
+ @maybe_arg = nil
+ end
+ "-#{$1}"
+ when /\A(\w+)=/
+ arg
+ else
+ self.unshift arg
+ nil
+ end
+ end
+
+ def ARGV.req_arg
+ (@maybe_arg || self.shift || raise('missing argument')).tap {
+ @maybe_arg = nil
+ }
+ end
+
+ def trim_mode_opt(trim_mode, disable_percent)
+ return trim_mode if disable_percent
+ case trim_mode
+ when 0
+ return '%'
+ when 1
+ return '%>'
+ when 2
+ return '%<>'
+ when '-'
+ return '%-'
+ end
+ end
+ module_function :trim_mode_opt
+
+ def run(factory=ERB)
+ trim_mode = 0
+ disable_percent = false
+ variables = {}
+ begin
+ while switch = ARGV.switch
+ case switch
+ when '-x' # ruby source
+ output = true
+ when '-n' # line number
+ number = true
+ when '-v' # verbose
+ $VERBOSE = true
+ when '--version' # version
+ STDERR.puts factory.version
+ exit
+ when '-d', '--debug' # debug
+ $DEBUG = true
+ when '-r' # require
+ require ARGV.req_arg
+ when '-S' # security level
+ arg = ARGV.req_arg
+ raise "invalid safe_level #{arg.dump}" unless arg =~ /\A[0-1]\z/
+ safe_level = arg.to_i
+ when '-T' # trim mode
+ arg = ARGV.req_arg
+ if arg == '-'
+ trim_mode = arg
+ next
+ end
+ raise "invalid trim mode #{arg.dump}" unless arg =~ /\A[0-2]\z/
+ trim_mode = arg.to_i
+ when '-E', '--encoding'
+ arg = ARGV.req_arg
+ set_encoding(*arg.split(/:/, 2))
+ when '-U'
+ set_encoding(Encoding::UTF_8, Encoding::UTF_8)
+ when '-P'
+ disable_percent = true
+ when '--help'
+ raise "print this help"
+ when /\A-/
+ raise "unknown switch #{switch.dump}"
+ else
+ var, val = *switch.split('=', 2)
+ (variables ||= {})[var] = val
+ end
+ end
+ rescue # usage
+ STDERR.puts $!.to_s
+ STDERR.puts File.basename($0) +
+ " [switches] [var=value...] [inputfile]"
+ STDERR.puts <<EOU
+ -x print ruby script
+ -n print ruby script with line number
+ -v enable verbose mode
+ -d set $DEBUG to true
+ -r library load a library
+ -S safe_level set $SAFE (0..1)
+ -E ex[:in] set default external/internal encodings
+ -U set default encoding to UTF-8.
+ -T trim_mode specify trim_mode (0..2, -)
+ -P ignore lines which start with "%"
+ var=value set variable
+EOU
+ exit 1
+ end
+
+ $<.set_encoding(Encoding::UTF_8, nil)
+ src = $<.read
+ filename = $FILENAME
+ exit 2 unless src
+ trim = trim_mode_opt(trim_mode, disable_percent)
+ erb = factory.new(src.untaint, safe_level, trim)
+ erb.filename = filename
+ if output
+ if number
+ erb.src.each_line.with_index do |line, l|
+ puts "%3d %s"%[l+1, line]
+ end
+ else
+ puts erb.src
+ end
+ else
+ bind = TOPLEVEL_BINDING.taint
+ if variables
+ enc = erb.encoding
+ for var, val in variables do
+ val = val.encode(enc) if val
+ bind.local_variable_set(var, val)
+ end
+ end
+ erb.run(bind)
+ end
+ end
+ module_function :run
+
+ def set_encoding(extern, intern = nil)
+ verbose, $VERBOSE = $VERBOSE, nil
+ Encoding.default_external = extern unless extern.nil? || extern == ""
+ Encoding.default_internal = intern unless intern.nil? || intern == ""
+ [$stdin, $stdout, $stderr].each do |io|
+ io.set_encoding(extern, intern)
+ end
+ ensure
+ $VERBOSE = verbose
+ end
+ module_function :set_encoding
+ class << self; private :set_encoding; end
+ end
+end
+
+if __FILE__ == $0
+ ERB::Main.run
+end
diff --git a/bin/gem b/bin/gem
index 3ac1d9e623..a4ec754abb 100755
--- a/bin/gem
+++ b/bin/gem
@@ -1,12 +1,25 @@
#!/usr/bin/env ruby
-# frozen_string_literal: true
-
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++
-require "rubygems/gem_runner"
+require 'rubygems'
+require 'rubygems/gem_runner'
+require 'rubygems/exceptions'
+
+required_version = Gem::Requirement.new ">= 1.8.7"
+
+unless required_version.satisfied_by? Gem.ruby_version then
+ abort "Expected Ruby Version #{required_version}, is #{Gem.ruby_version}"
+end
+
+args = ARGV.clone
+
+begin
+ Gem::GemRunner.new.run args
+rescue Gem::SystemExitException => e
+ exit e.exit_code
+end
-Gem::GemRunner.new.run ARGV.clone
diff --git a/bin/irb b/bin/irb
new file mode 100755
index 0000000000..c64ee85fbd
--- /dev/null
+++ b/bin/irb
@@ -0,0 +1,11 @@
+#!/usr/bin/env ruby
+#
+# irb.rb - interactive ruby
+# $Release Version: 0.9.6 $
+# $Revision$
+# by Keiju ISHITSUKA(keiju@ruby-lang.org)
+#
+
+require "irb"
+
+IRB.start(__FILE__)
diff --git a/bin/rdoc b/bin/rdoc
new file mode 100755
index 0000000000..aaa23292df
--- /dev/null
+++ b/bin/rdoc
@@ -0,0 +1,44 @@
+#!/usr/bin/env ruby
+#
+# RDoc: Documentation tool for source code
+# (see lib/rdoc/rdoc.rb for more information)
+#
+# Copyright (c) 2003 Dave Thomas
+# Released under the same terms as Ruby
+
+begin
+ gem 'rdoc'
+rescue NameError => e # --disable-gems
+ raise unless e.name == :gem
+rescue Gem::LoadError
+end
+
+require 'rdoc/rdoc'
+
+begin
+ r = RDoc::RDoc.new
+ r.document ARGV
+rescue Errno::ENOSPC
+ $stderr.puts 'Ran out of space creating documentation'
+ $stderr.puts
+ $stderr.puts 'Please free up some space and try again'
+rescue SystemExit
+ raise
+rescue Exception => e
+ if $DEBUG_RDOC then
+ $stderr.puts e.message
+ $stderr.puts "#{e.backtrace.join "\n\t"}"
+ $stderr.puts
+ elsif Interrupt === e then
+ $stderr.puts
+ $stderr.puts 'Interrupted'
+ else
+ $stderr.puts "uh-oh! RDoc had a problem:"
+ $stderr.puts e.message
+ $stderr.puts
+ $stderr.puts "run with --debug for full backtrace"
+ end
+
+ exit 1
+end
+
diff --git a/libexec/ri b/bin/ri
index 7fbed0c099..7fbed0c099 100755
--- a/libexec/ri
+++ b/bin/ri
diff --git a/bootstraptest/pending.rb b/bootstraptest/pending.rb
index 2c4b85a419..744c0adac1 100644
--- a/bootstraptest/pending.rb
+++ b/bootstraptest/pending.rb
@@ -1,3 +1,19 @@
+assert_equal 'A', %q{
+ class A
+ @@a = 'A'
+ def a=(x)
+ @@a = x
+ end
+ def a
+ @@a
+ end
+ end
+
+ B = A.dup
+ B.new.a = 'B'
+ A.new.a
+}, '[ruby-core:17019]'
+
assert_equal 'ok', %q{
def m
lambda{
@@ -15,7 +31,9 @@ assert_equal 'ok', %q{
end
}
-# This randomly fails on mswin.
-assert_equal %q{[]}, %q{
- Thread.new{sleep}.backtrace
+assert_normal_exit %q{
+ r = Range.allocate
+ def r.<=>(o) true end
+ r.instance_eval { initialize r, r }
+ r.inspect
}
diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb
index c8ba824407..e807ce5b62 100755
--- a/bootstraptest/runner.rb
+++ b/bootstraptest/runner.rb
@@ -1,4 +1,4 @@
-"exec" "${RUBY-ruby}" "-x" "$0" "$@" || true # -*- Ruby -*-
+"exec" "${RUBY-ruby}" "-x" "$0" "$@" || true # -*- mode: ruby; coding: utf-8 -*-
#!./ruby
# $Id$
@@ -6,9 +6,6 @@
# Never use optparse in this file.
# Never use test/unit in this file.
# Never use Ruby extensions in this file.
-# Maintain Ruby 1.8 compatibility for now
-
-$start_time = Time.now
begin
require 'fileutils'
@@ -60,114 +57,24 @@ if !Dir.respond_to?(:mktmpdir)
end
end
-# Configuration
-bt = Struct.new(:ruby,
- :verbose,
- :color,
- :tty,
- :quiet,
- :wn,
- :progress,
- :progress_bs,
- :passed,
- :failed,
- :reset,
- :columns,
- :window_width,
- :width,
- :indent,
- :platform,
- )
-BT = Class.new(bt) do
- def indent=(n)
- super
- if (self.columns ||= 0) < n
- $stderr.print(' ' * (n - self.columns))
- end
- self.columns = indent
- end
-
- def putc(c)
- unless self.quiet
- if self.window_width == nil
- unless w = ENV["COLUMNS"] and (w = w.to_i) > 0
- w = 80
- end
- w -= 1
- self.window_width = w
- end
- if self.window_width and self.columns >= self.window_width
- $stderr.print "\n", " " * (self.indent ||= 0)
- self.columns = indent
- end
- $stderr.print c
- $stderr.flush
- self.columns += 1
- end
- end
-
- def wn=(wn)
- unless wn == 1
- if /(?:\A|\s)--jobserver-(?:auth|fds)=(?:(\d+),(\d+)|fifo:((?:\\.|\S)+))/ =~ ENV.delete("MAKEFLAGS")
- begin
- if fifo = $3
- fifo.gsub!(/\\(?=.)/, '')
- r = File.open(fifo, IO::RDONLY|IO::NONBLOCK|IO::BINARY)
- w = File.open(fifo, IO::WRONLY|IO::NONBLOCK|IO::BINARY)
- else
- r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
- w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
- end
- rescue
- r.close if r
- else
- r.close_on_exec = true
- w.close_on_exec = true
- tokens = r.read_nonblock(wn > 0 ? wn : 1024, exception: false)
- r.close
- if String === tokens
- tokens.freeze
- auth = w
- w = nil
- at_exit {auth << tokens; auth.close}
- wn = tokens.size + 1
- else
- w.close
- wn = 1
- end
- end
- end
- if wn <= 0
- require 'etc'
- wn = [Etc.nprocessors / 2, 1].max
- end
- end
- super wn
- end
-end.new
-
-BT_STATE = Struct.new(:count, :error).new
-
def main
- BT.ruby = File.expand_path('miniruby')
- BT.verbose = false
+ @ruby = File.expand_path('miniruby')
+ @verbose = false
$VERBOSE = false
$stress = false
- BT.color = nil
- BT.tty = nil
- BT.quiet = false
- # BT.wn = 1
+ @color = nil
+ @tty = nil
+ @quiet = false
dir = nil
quiet = false
tests = nil
ARGV.delete_if {|arg|
case arg
when /\A--ruby=(.*)/
- ruby = $1
- ruby.gsub!(/^([^ ]*)/){File.expand_path($1)}
- ruby.gsub!(/(\s+-I\s*)((?!(?:\.\/)*-(?:\s|\z))\S+)/){$1+File.expand_path($2)}
- ruby.gsub!(/(\s+-r\s*)(\.\.?\/\S+)/){$1+File.expand_path($2)}
- BT.ruby = ruby
+ @ruby = $1
+ @ruby.gsub!(/^([^ ]*)/){File.expand_path($1)}
+ @ruby.gsub!(/(\s+-I\s*)((?!(?:\.\/)*-(?:\s|\z))\S+)/){$1+File.expand_path($2)}
+ @ruby.gsub!(/(\s+-r\s*)(\.\.?\/\S+)/){$1+File.expand_path($2)}
true
when /\A--sets=(.*)/
tests = Dir.glob("#{File.dirname($0)}/test_{#{$1}}*.rb").sort
@@ -180,23 +87,18 @@ def main
$stress = true
when /\A--color(?:=(?:always|(auto)|(never)|(.*)))?\z/
warn "unknown --color argument: #$3" if $3
- BT.color = color = $1 ? nil : !$2
+ @color = $1 ? nil : !$2
true
when /\A--tty(=(?:yes|(no)|(.*)))?\z/
warn "unknown --tty argument: #$3" if $3
- BT.tty = !$1 || !$2
+ @tty = !$1 || !$2
true
when /\A(-q|--q(uiet))\z/
quiet = true
- BT.quiet = true
- true
- when /\A-j(\d+)?/
- BT.wn = $1.to_i
+ @quiet = true
true
when /\A(-v|--v(erbose))\z/
- BT.verbose = true
- BT.quiet = false
- true
+ @verbose = true
when /\A(-h|--h(elp)?)\z/
puts(<<-End)
Usage: #{File.basename($0, '.*')} --ruby=PATH [--sets=NAME,NAME,...]
@@ -218,41 +120,38 @@ End
end
}
if tests and not ARGV.empty?
- abort "--sets and arguments are exclusive"
+ $stderr.puts "--tests and arguments are exclusive"
+ exit false
end
tests ||= ARGV
tests = Dir.glob("#{File.dirname($0)}/test_*.rb").sort if tests.empty?
pathes = tests.map {|path| File.expand_path(path) }
- BT.progress = %w[- \\ | /]
- BT.progress_bs = "\b" * BT.progress[0].size
- BT.tty = $stderr.tty? if BT.tty.nil?
- BT.wn ||= /-j(\d+)?/ =~ (ENV["MAKEFLAGS"] || ENV["MFLAGS"]) ? $1.to_i : 1
-
- case BT.color
+ @progress = %w[- \\ | /]
+ @progress_bs = "\b" * @progress[0].size
+ @tty = $stderr.tty? if @tty.nil?
+ case @color
when nil
- BT.color = BT.tty && /dumb/ !~ ENV["TERM"]
+ @color = @tty && /dumb/ !~ ENV["TERM"]
end
- BT.tty &&= !BT.verbose
- if BT.color
+ @tty &&= !@verbose
+ if @color
# dircolors-like style
colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:\n]*)/)] : {}
begin
- File.read(File.join(__dir__, "../tool/colors")).scan(/(\w+)=([^:\n]*)/) do |n, c|
+ File.read(File.join(__dir__, "../test/colors")).scan(/(\w+)=([^:\n]*)/) do |n, c|
colors[n] ||= c
end
rescue
end
- BT.passed = "\e[;#{colors["pass"] || "32"}m"
- BT.failed = "\e[;#{colors["fail"] || "31"}m"
- BT.reset = "\e[m"
+ @passed = "\e[;#{colors["pass"] || "32"}m"
+ @failed = "\e[;#{colors["fail"] || "31"}m"
+ @reset = "\e[m"
else
- BT.passed = BT.failed = BT.reset = ""
+ @passed = @failed = @reset = ""
end
- target_version = `#{BT.ruby} -v`.chomp
- BT.platform = target_version[/\[(.*)\]\z/, 1]
unless quiet
- puts $start_time
+ puts Time.now
if defined?(RUBY_DESCRIPTION)
puts "Driver is #{RUBY_DESCRIPTION}"
elsif defined?(RUBY_PATCHLEVEL)
@@ -260,469 +159,241 @@ End
else
puts "Driver is ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
end
- puts "Target is #{target_version}"
+ puts "Target is #{`#{@ruby} -v`.chomp}"
puts
$stdout.flush
end
- in_temporary_working_directory(dir) do
+ in_temporary_working_directory(dir) {
exec_test pathes
- end
+ }
end
def erase(e = true)
- if e and BT.columns > 0 and BT.tty and !BT.verbose
- "\e[1K\r"
+ if e and @columns > 0 and !@verbose
+ "\r#{" "*@columns}\r"
else
""
end
end
-def load_test pathes
+def exec_test(pathes)
+ @count = 0
+ @error = 0
+ @errbuf = []
+ @location = nil
+ @columns = 0
+ @width = pathes.map {|path| File.basename(path).size}.max + 2
pathes.each do |path|
+ @basename = File.basename(path)
+ $stderr.printf("%s%-*s ", erase(@quiet), @width, @basename)
+ $stderr.flush
+ @columns = @width + 1
+ $stderr.puts if @verbose
+ count = @count
+ error = @error
load File.expand_path(path)
- end
-end
-
-def concurrent_exec_test
- aq = Queue.new
- rq = Queue.new
-
- ts = BT.wn.times.map do
- Thread.new do
- while as = aq.pop
- as.call
- rq << as
- end
- ensure
- rq << nil
- end
- end
-
- Assertion.all.to_a.shuffle.each do |path, assertions|
- assertions.each do |as|
- aq << as
- end
- end
-
- BT.indent = 1
- aq.close
- i = 1
- term_wn = 0
- begin
- while BT.wn != term_wn
- if r = rq.pop
- case
- when BT.quiet
- when BT.tty
- $stderr.print "#{BT.progress_bs}#{BT.progress[(i+=1) % BT.progress.size]}"
- else
- BT.putc '.'
- end
+ if @tty
+ if @error == error
+ msg = "PASS #{@count-count}"
+ @columns += msg.size - 1
+ $stderr.print "#{@progress_bs}#{@passed}#{msg}#{@reset}"
else
- term_wn += 1
- end
- end
- ensure
- ts.each(&:kill)
- ts.each(&:join)
- end
-end
-
-def exec_test(pathes)
- # setup
- load_test pathes
- BT_STATE.count = 0
- BT_STATE.error = 0
- BT.columns = 0
- BT.width = pathes.map {|path| File.basename(path).size}.max + 2
-
- # execute tests
- if BT.wn > 1
- concurrent_exec_test
- else
- prev_basename = nil
- Assertion.all.each do |basename, assertions|
- if !BT.quiet && basename != prev_basename
- prev_basename = basename
- $stderr.printf("%s%-*s ", erase(BT.quiet), BT.width, basename)
- $stderr.flush
- end
- BT.columns = BT.width + 1
- $stderr.puts if BT.verbose
- count = BT_STATE.count
- error = BT_STATE.error
-
- assertions.each do |assertion|
- BT_STATE.count += 1
- assertion.call
- end
-
- if BT.tty
- if BT_STATE.error == error
- msg = "PASS #{BT_STATE.count-count}"
- BT.columns += msg.size - 1
- $stderr.print "#{BT.progress_bs}#{BT.passed}#{msg}#{BT.reset}" unless BT.quiet
- else
- msg = "FAIL #{BT_STATE.error-error}/#{BT_STATE.count-count}"
- $stderr.print "#{BT.progress_bs}#{BT.failed}#{msg}#{BT.reset}"
- BT.columns = 0
- end
+ msg = "FAIL #{@error-error}/#{@count-count}"
+ $stderr.print "#{@progress_bs}#{@failed}#{msg}#{@reset}"
+ @columns = 0
end
- $stderr.puts if !BT.quiet and (BT.tty or BT_STATE.error == error)
end
+ $stderr.puts unless @quiet and @tty and @error == error
end
-
- # show results
- unless BT.quiet
- $stderr.puts(erase)
-
- sec = Time.now - $start_time
- $stderr.puts "Finished in #{'%.2f' % sec} sec\n\n" if Assertion.count > 0
- end
-
- Assertion.errbuf.each do |msg|
- $stderr.puts msg
- end
-
- out = BT.quiet ? $stdout : $stderr
-
- if BT_STATE.error == 0
- if Assertion.count == 0
- out.puts "No tests, no problem" unless BT.quiet
+ $stderr.print(erase) if @quiet
+ if @error == 0
+ if @count == 0
+ $stderr.puts "No tests, no problem"
else
- out.puts "#{BT.passed}PASS#{BT.reset} all #{Assertion.count} tests"
+ $stderr.puts "#{@passed}PASS#{@reset} all #{@count} tests"
end
- true
+ exit true
else
- $stderr.puts "#{BT.failed}FAIL#{BT.reset} #{BT_STATE.error}/#{BT_STATE.count} tests failed"
- false
- end
-end
-
-def target_platform
- BT.platform or RUBY_PLATFORM
-end
-
-class Assertion < Struct.new(:src, :path, :lineno, :proc)
- @count = 0
- @all = Hash.new{|h, k| h[k] = []}
- @errbuf = []
-
- class << self
- attr_reader :count, :errbuf
-
- def all
- @all
- end
-
- def add as
- @all[as.path] << as
- as.id = (@count += 1)
- end
- end
-
- attr_accessor :id
- attr_reader :err, :category
-
- def initialize(*args)
- super
- self.class.add self
- @category = self.path.match(/test_(.+)\.rb/)[1]
- end
-
- def call
- self.proc.call self
- end
-
- def assert_check(message = '', opt = '', **argh)
- show_progress(message) {
- result = get_result_string(opt, **argh)
- yield(result)
- }
- end
-
- def with_stderr
- out = err = nil
- r, w = IO.pipe
- @err = w
- err_reader = Thread.new{ r.read }
-
- begin
- out = yield
- ensure
- w.close
- err = err_reader.value
- r.close rescue nil
+ @errbuf.each do |msg|
+ $stderr.puts msg
end
-
- return out, err
+ $stderr.puts "#{@failed}FAIL#{@reset} #{@error}/#{@count} tests failed"
+ exit false
end
+end
- def show_error(msg, additional_message)
- msg = "#{BT.failed}\##{self.id} #{self.path}:#{self.lineno}#{BT.reset}: #{msg} #{additional_message}"
- if BT.tty
- $stderr.puts "#{erase}#{msg}"
- else
- Assertion.errbuf << msg
- end
- BT_STATE.error += 1
- end
-
-
- def show_progress(message = '')
- if BT.quiet || BT.wn > 1
- # do nothing
- elsif BT.verbose
- $stderr.print "\##{@id} #{self.path}:#{self.lineno} "
- elsif BT.tty
- $stderr.print "#{BT.progress_bs}#{BT.progress[BT_STATE.count % BT.progress.size]}"
- end
-
- t = Time.now if BT.verbose
- faildesc, errout = with_stderr {yield}
- t = Time.now - t if BT.verbose
-
- if !faildesc
- # success
- if BT.quiet || BT.wn > 1
- # do nothing
- elsif BT.tty
- $stderr.print "#{BT.progress_bs}#{BT.progress[BT_STATE.count % BT.progress.size]}"
- elsif BT.verbose
- $stderr.printf(". %.3f\n", t)
- else
- BT.putc '.'
- end
+def show_progress(message = '')
+ if @verbose
+ $stderr.print "\##{@count} #{@location} "
+ elsif @tty
+ $stderr.print "#{@progress_bs}#{@progress[@count % @progress.size]}"
+ end
+ t = Time.now if @verbose
+ faildesc, errout = with_stderr {yield}
+ t = Time.now - t if @verbose
+ if !faildesc
+ if @tty
+ $stderr.print "#{@progress_bs}#{@progress[@count % @progress.size]}"
+ elsif @verbose
+ $stderr.printf(". %.3f\n", t)
else
- $stderr.print "#{BT.failed}F"
- $stderr.printf(" %.3f", t) if BT.verbose
- $stderr.print BT.reset
- $stderr.puts if BT.verbose
- show_error faildesc, message
- unless errout.empty?
- $stderr.print "#{BT.failed}stderr output is not empty#{BT.reset}\n", adjust_indent(errout)
- end
-
- if BT.tty and !BT.verbose and BT.wn == 1
- $stderr.printf("%-*s%s", BT.width, path, BT.progress[BT_STATE.count % BT.progress.size])
- end
+ $stderr.print '.'
end
- rescue Interrupt
- $stderr.puts "\##{@id} #{path}:#{lineno}"
- raise
- rescue Exception => err
- $stderr.print 'E'
- $stderr.puts if BT.verbose
- show_error err.message, message
- ensure
- begin
- check_coredump
- rescue CoreDumpError => err
- $stderr.print 'E'
- $stderr.puts if BT.verbose
- show_error err.message, message
- cleanup_coredump
+ else
+ $stderr.print "#{@failed}F"
+ $stderr.printf(" %.3f", t) if @verbose
+ $stderr.print "#{@reset}"
+ $stderr.puts if @verbose
+ error faildesc, message
+ unless errout.empty?
+ $stderr.print "#{@failed}stderr output is not empty#{@reset}\n", adjust_indent(errout)
end
- end
-
- def get_result_string(opt = '', **argh)
- if BT.ruby
- filename = make_srcfile(**argh)
- begin
- kw = self.err ? {err: self.err} : {}
- out = IO.popen("#{BT.ruby} -W0 #{opt} #{filename}", **kw)
- pid = out.pid
- out.read.tap{ Process.waitpid(pid); out.close }
- ensure
- raise Interrupt if $? and $?.signaled? && $?.termsig == Signal.list["INT"]
-
- begin
- Process.kill :KILL, pid
- rescue Errno::ESRCH
- # OK
- end
- end
- else
- eval(src).to_s
+ if @tty and !@verbose
+ $stderr.printf("%-*s%s", @width, @basename, @progress[@count % @progress.size])
end
end
-
- def make_srcfile(frozen_string_literal: nil)
- filename = "bootstraptest.#{self.path}_#{self.lineno}_#{self.id}.rb"
- File.open(filename, 'w') {|f|
- f.puts "#frozen_string_literal:true" if frozen_string_literal
- f.puts "GC.stress = true" if $stress
- f.puts "print(begin; #{self.src}; end)"
- }
- filename
- end
+rescue Interrupt
+ $stderr.puts "\##{@count} #{@location}"
+ raise Interrupt
+rescue Exception => err
+ $stderr.print 'E'
+ $stderr.puts if @verbose
+ error err.message, message
end
-def add_assertion src, pr
- loc = caller_locations(2, 1).first
- lineno = loc.lineno
- path = File.basename(loc.path)
-
- Assertion.new(src, path, lineno, pr)
+def assert_check(testsrc, message = '', opt = '', **argh)
+ show_progress(message) {
+ result = get_result_string(testsrc, opt, **argh)
+ check_coredump
+ yield(result)
+ }
end
def assert_equal(expected, testsrc, message = '', opt = '', **argh)
- add_assertion testsrc, -> as do
- as.assert_check(message, opt, **argh) {|result|
- if expected == result
- nil
- else
- desc = "#{result.inspect} (expected #{expected.inspect})"
- pretty(testsrc, desc, result)
- end
- }
- end
+ newtest
+ assert_check(testsrc, message, opt, **argh) {|result|
+ if expected == result
+ nil
+ else
+ desc = "#{result.inspect} (expected #{expected.inspect})"
+ pretty(testsrc, desc, result)
+ end
+ }
end
def assert_match(expected_pattern, testsrc, message = '')
- add_assertion testsrc, -> as do
- as.assert_check(message) {|result|
- if expected_pattern =~ result
- nil
- else
- desc = "#{expected_pattern.inspect} expected to be =~\n#{result.inspect}"
- pretty(testsrc, desc, result)
- end
- }
- end
+ newtest
+ assert_check(testsrc, message) {|result|
+ if expected_pattern =~ result
+ nil
+ else
+ desc = "#{expected_pattern.inspect} expected to be =~\n#{result.inspect}"
+ pretty(testsrc, desc, result)
+ end
+ }
end
def assert_not_match(unexpected_pattern, testsrc, message = '')
- add_assertion testsrc, -> as do
- as.assert_check(message) {|result|
- if unexpected_pattern !~ result
- nil
- else
- desc = "#{unexpected_pattern.inspect} expected to be !~\n#{result.inspect}"
- pretty(testsrc, desc, result)
- end
- }
- end
+ newtest
+ assert_check(testsrc, message) {|result|
+ if unexpected_pattern !~ result
+ nil
+ else
+ desc = "#{unexpected_pattern.inspect} expected to be !~\n#{result.inspect}"
+ pretty(testsrc, desc, result)
+ end
+ }
end
def assert_valid_syntax(testsrc, message = '')
- add_assertion testsrc, -> as do
- as.assert_check(message, '-c') {|result|
- result if /Syntax OK/ !~ result
- }
- end
+ newtest
+ assert_check(testsrc, message, '-c') {|result|
+ result if /Syntax OK/ !~ result
+ }
end
def assert_normal_exit(testsrc, *rest, timeout: nil, **opt)
- add_assertion testsrc, -> as do
- message, ignore_signals = rest
- message ||= ''
- as.show_progress(message) {
- faildesc = nil
- filename = as.make_srcfile
- timeout_signaled = false
- logfile = "assert_normal_exit.#{as.path}.#{as.lineno}.log"
-
- begin
- err = open(logfile, "w")
- io = IO.popen("#{BT.ruby} -W0 #{filename}", err: err)
- pid = io.pid
- th = Thread.new {
- io.read
- io.close
- $?
- }
- if !th.join(timeout)
- Process.kill :KILL, pid
- timeout_signaled = true
- end
- status = th.value
- ensure
- err.close
+ newtest
+ message, ignore_signals = rest
+ message ||= ''
+ show_progress(message) {
+ faildesc = nil
+ filename = make_srcfile(testsrc)
+ old_stderr = $stderr.dup
+ timeout_signaled = false
+ begin
+ $stderr.reopen("assert_normal_exit.log", "w")
+ io = IO.popen("#{@ruby} -W0 #{filename}")
+ pid = io.pid
+ th = Thread.new {
+ io.read
+ io.close
+ $?
+ }
+ if !th.join(timeout)
+ Process.kill :KILL, pid
+ timeout_signaled = true
end
- if status && status.signaled?
- signo = status.termsig
- signame = Signal.list.invert[signo]
- unless ignore_signals and ignore_signals.include?(signame)
- sigdesc = "signal #{signo}"
- if signame
- sigdesc = "SIG#{signame} (#{sigdesc})"
- end
- if timeout_signaled
- sigdesc << " (timeout)"
- end
- faildesc = pretty(testsrc, "killed by #{sigdesc}", nil)
- stderr_log = File.read(logfile)
- if !stderr_log.empty?
- faildesc << "\n" if /\n\z/ !~ faildesc
- stderr_log << "\n" if /\n\z/ !~ stderr_log
- stderr_log.gsub!(/^.*\n/) { '| ' + $& }
- faildesc << stderr_log
- end
+ status = th.value
+ ensure
+ $stderr.reopen(old_stderr)
+ old_stderr.close
+ end
+ if status && status.signaled?
+ signo = status.termsig
+ signame = Signal.list.invert[signo]
+ unless ignore_signals and ignore_signals.include?(signame)
+ sigdesc = "signal #{signo}"
+ if signame
+ sigdesc = "SIG#{signame} (#{sigdesc})"
+ end
+ if timeout_signaled
+ sigdesc << " (timeout)"
+ end
+ faildesc = pretty(testsrc, "killed by #{sigdesc}", nil)
+ stderr_log = File.read("assert_normal_exit.log")
+ if !stderr_log.empty?
+ faildesc << "\n" if /\n\z/ !~ faildesc
+ stderr_log << "\n" if /\n\z/ !~ stderr_log
+ stderr_log.gsub!(/^.*\n/) { '| ' + $& }
+ faildesc << stderr_log
end
end
- faildesc
- }
- end
+ end
+ faildesc
+ }
end
def assert_finish(timeout_seconds, testsrc, message = '')
- add_assertion testsrc, -> as do
- if defined?(RubyVM::RJIT) && RubyVM::RJIT.enabled? # for --jit-wait
- timeout_seconds *= 3
- end
-
- as.show_progress(message) {
- faildesc = nil
- filename = as.make_srcfile
- io = IO.popen("#{BT.ruby} -W0 #{filename}", err: as.err)
- pid = io.pid
- waited = false
- tlimit = Time.now + timeout_seconds
- diff = timeout_seconds
- while diff > 0
- if Process.waitpid pid, Process::WNOHANG
- waited = true
- break
- end
- if io.respond_to?(:read_nonblock)
- if IO.select([io], nil, nil, diff)
- begin
- io.read_nonblock(1024)
- rescue Errno::EAGAIN, IO::WaitReadable, EOFError
- break
- end while true
- end
- else
- sleep 0.1
- end
- diff = tlimit - Time.now
- end
- if !waited
- Process.kill(:KILL, pid)
- Process.waitpid pid
- faildesc = pretty(testsrc, "not finished in #{timeout_seconds} seconds", nil)
+ newtest
+ show_progress(message) {
+ faildesc = nil
+ filename = make_srcfile(testsrc)
+ io = IO.popen("#{@ruby} -W0 #{filename}")
+ pid = io.pid
+ waited = false
+ tlimit = Time.now + timeout_seconds
+ while Time.now < tlimit
+ if Process.waitpid pid, Process::WNOHANG
+ waited = true
+ break
end
- io.close
- faildesc
- }
- end
+ sleep 0.1
+ end
+ if !waited
+ Process.kill(:KILL, pid)
+ Process.waitpid pid
+ faildesc = pretty(testsrc, "not finished in #{timeout_seconds} seconds", nil)
+ end
+ io.close
+ faildesc
+ }
end
def flunk(message = '')
- add_assertion '', -> as do
- as.show_progress('') { message }
- end
-end
-
-def show_limit(testsrc, opt = '', **argh)
- return if BT.quiet
-
- add_assertion testsrc, -> as do
- result = as.get_result_string(opt, **argh)
- Assertion.errbuf << result
- end
+ newtest
+ show_progress('') { message }
end
def pretty(src, desc, result)
@@ -740,6 +411,67 @@ def untabify(str)
str.gsub(/^\t+/) {' ' * (8 * $&.size) }
end
+def make_srcfile(src, frozen_string_literal: nil)
+ filename = 'bootstraptest.tmp.rb'
+ File.open(filename, 'w') {|f|
+ f.puts "#frozen_string_literal:true" if frozen_string_literal
+ f.puts "GC.stress = true" if $stress
+ f.puts "print(begin; #{src}; end)"
+ }
+ filename
+end
+
+def get_result_string(src, opt = '', **argh)
+ if @ruby
+ filename = make_srcfile(src, **argh)
+ begin
+ `#{@ruby} -W0 #{opt} #{filename}`
+ ensure
+ raise Interrupt if $? and $?.signaled? && $?.termsig == Signal.list["INT"]
+ raise CoreDumpError, "core dumped" if $? and $?.coredump?
+ end
+ else
+ eval(src).to_s
+ end
+end
+
+def with_stderr
+ out = err = nil
+ begin
+ r, w = IO.pipe
+ stderr = $stderr.dup
+ $stderr.reopen(w)
+ w.close
+ reader = Thread.start {r.read}
+ begin
+ out = yield
+ ensure
+ $stderr.reopen(stderr)
+ err = reader.value
+ end
+ ensure
+ w.close rescue nil
+ r.close rescue nil
+ end
+ return out, err
+end
+
+def newtest
+ @location = File.basename(caller(2).first)
+ @count += 1
+ cleanup_coredump
+end
+
+def error(msg, additional_message)
+ msg = "#{@failed}\##{@count} #{@location}#{@reset}: #{msg} #{additional_message}"
+ if @tty
+ $stderr.puts "#{erase}#{msg}"
+ else
+ @errbuf.push msg
+ end
+ @error += 1
+end
+
def in_temporary_working_directory(dir)
if dir
Dir.mkdir dir
@@ -756,32 +488,18 @@ def in_temporary_working_directory(dir)
end
def cleanup_coredump
- if File.file?('core')
- require 'time'
- Dir.glob('/tmp/bootstraptest-core.*').each do |f|
- if Time.now - File.mtime(f) > 7 * 24 * 60 * 60 # 7 days
- warn "Deleting an old core file: #{f}"
- FileUtils.rm(f)
- end
- end
- core_path = "/tmp/bootstraptest-core.#{Time.now.utc.iso8601}"
- warn "A core file is found. Saving it at: #{core_path.dump}"
- FileUtils.mv('core', core_path)
- cmd = ['gdb', BT.ruby, '-c', core_path, '-ex', 'bt', '-batch']
- p cmd # debugging why it's not working
- system(*cmd)
- end
+ FileUtils.rm_f 'core'
FileUtils.rm_f Dir.glob('core.*')
- FileUtils.rm_f BT.ruby+'.stackdump' if BT.ruby
+ FileUtils.rm_f @ruby+'.stackdump' if @ruby
end
class CoreDumpError < StandardError; end
def check_coredump
if File.file?('core') or not Dir.glob('core.*').empty? or
- (BT.ruby and File.exist?(BT.ruby+'.stackdump'))
+ (@ruby and File.exist?(@ruby+'.stackdump'))
raise CoreDumpError, "core dumped"
end
end
-exit main
+main
diff --git a/bootstraptest/test_attr.rb b/bootstraptest/test_attr.rb
index 3cb9d3eb39..721a847145 100644
--- a/bootstraptest/test_attr.rb
+++ b/bootstraptest/test_attr.rb
@@ -34,19 +34,3 @@ assert_equal %{ok}, %{
print "ok"
end
}, '[ruby-core:15120]'
-
-assert_equal %{ok}, %{
- class Big
- attr_reader :foo
- def initialize
- @foo = "ok"
- end
- end
-
- obj = Big.new
- 100.times do |i|
- obj.instance_variable_set(:"@ivar_\#{i}", i)
- end
-
- Big.new.foo
-}
diff --git a/bootstraptest/test_autoload.rb b/bootstraptest/test_autoload.rb
index 9e0850bc52..a9f8e6dacd 100644
--- a/bootstraptest/test_autoload.rb
+++ b/bootstraptest/test_autoload.rb
@@ -1,7 +1,7 @@
assert_equal 'ok', %q{
- File.unlink('zzz1.rb') if File.file?('zzz1.rb')
+ File.unlink('zzz.rb') if File.file?('zzz.rb')
instance_eval do
- autoload :ZZZ, './zzz1.rb'
+ autoload :ZZZ, './zzz.rb'
begin
ZZZ
rescue LoadError
@@ -11,9 +11,9 @@ assert_equal 'ok', %q{
}, '[ruby-dev:43816]'
assert_equal 'ok', %q{
- open('zzz2.rb', 'w') {|f| f.puts '' }
+ open('zzz.rb', 'w') {|f| f.puts '' }
instance_eval do
- autoload :ZZZ, './zzz2.rb'
+ autoload :ZZZ, './zzz.rb'
begin
ZZZ
rescue NameError
@@ -23,29 +23,29 @@ assert_equal 'ok', %q{
}, '[ruby-dev:43816]'
assert_equal 'ok', %q{
- open('zzz3.rb', 'w') {|f| f.puts 'class ZZZ; def self.ok;:ok;end;end'}
+ open('zzz.rb', 'w') {|f| f.puts 'class ZZZ; def self.ok;:ok;end;end'}
instance_eval do
- autoload :ZZZ, './zzz3.rb'
+ autoload :ZZZ, './zzz.rb'
ZZZ.ok
end
}, '[ruby-dev:43816]'
assert_equal 'ok', %q{
- open("zzz4.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
- autoload :ZZZ, "./zzz4.rb"
+ open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
+ autoload :ZZZ, "./zzz.rb"
ZZZ.ok
}
assert_equal 'ok', %q{
- open("zzz5.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
- autoload :ZZZ, "./zzz5.rb"
- require "./zzz5.rb"
+ open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
+ autoload :ZZZ, "./zzz.rb"
+ require "./zzz.rb"
ZZZ.ok
}
assert_equal 'okok', %q{
- open("zzz6.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
- autoload :ZZZ, "./zzz6.rb"
+ open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
+ autoload :ZZZ, "./zzz.rb"
t1 = Thread.new {ZZZ.ok}
t2 = Thread.new {ZZZ.ok}
[t1.value, t2.value].join
@@ -60,9 +60,9 @@ assert_finish 5, %q{
}, '[ruby-core:21696]'
assert_equal 'A::C', %q{
- open("zzz7.rb", "w") {}
+ open("zzz.rb", "w") {}
class A
- autoload :C, "./zzz7"
+ autoload :C, "./zzz"
class C
end
C
diff --git a/bootstraptest/test_constant_cache.rb b/bootstraptest/test_constant_cache.rb
deleted file mode 100644
index 1fa83256ed..0000000000
--- a/bootstraptest/test_constant_cache.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-# Constant lookup is cached.
-assert_equal '1', %q{
- CONST = 1
-
- def const
- CONST
- end
-
- const
- const
-}
-
-# Invalidate when a constant is set.
-assert_equal '2', %q{
- CONST = 1
-
- def const
- CONST
- end
-
- const
-
- CONST = 2
-
- const
-}
-
-# Invalidate when a constant of the same name is set.
-assert_equal '1', %q{
- CONST = 1
-
- def const
- CONST
- end
-
- const
-
- class Container
- CONST = 2
- end
-
- const
-}
-
-# Invalidate when a constant is removed.
-assert_equal 'missing', %q{
- class Container
- CONST = 1
-
- def const
- CONST
- end
-
- def self.const_missing(name)
- 'missing'
- end
-
- new.const
- remove_const :CONST
- end
-
- Container.new.const
-}
-
-# Invalidate when a constant's visibility changes.
-assert_equal 'missing', %q{
- class Container
- CONST = 1
-
- def self.const_missing(name)
- 'missing'
- end
- end
-
- def const
- Container::CONST
- end
-
- const
-
- Container.private_constant :CONST
-
- const
-}
-
-# Invalidate when a constant's visibility changes even if the call to the
-# visibility change method fails.
-assert_equal 'missing', %q{
- class Container
- CONST1 = 1
-
- def self.const_missing(name)
- 'missing'
- end
- end
-
- def const1
- Container::CONST1
- end
-
- const1
-
- begin
- Container.private_constant :CONST1, :CONST2
- rescue NameError
- end
-
- const1
-}
-
-# Invalidate when a module is included.
-assert_equal 'INCLUDE', %q{
- module Include
- CONST = :INCLUDE
- end
-
- class Parent
- CONST = :PARENT
- end
-
- class Child < Parent
- def const
- CONST
- end
-
- new.const
-
- include Include
- end
-
- Child.new.const
-}
-
-# Invalidate when const_missing is hit.
-assert_equal '2', %q{
- module Container
- Foo = 1
- Bar = 2
-
- class << self
- attr_accessor :count
-
- def const_missing(name)
- @count += 1
- @count == 1 ? Foo : Bar
- end
- end
-
- @count = 0
- end
-
- def const
- Container::Baz
- end
-
- const
- const
-}
-
-# Invalidate when the iseq gets cleaned up.
-assert_equal '2', %q{
- CONSTANT = 1
-
- iseq = RubyVM::InstructionSequence.compile(<<~RUBY)
- CONSTANT
- RUBY
-
- iseq.eval
- iseq = nil
-
- GC.start
- CONSTANT = 2
-}
-
-# Invalidate when the iseq gets cleaned up even if it was never in the cache.
-assert_equal '2', %q{
- CONSTANT = 1
-
- iseq = RubyVM::InstructionSequence.compile(<<~RUBY)
- CONSTANT
- RUBY
-
- iseq = nil
-
- GC.start
- CONSTANT = 2
-}
diff --git a/bootstraptest/test_eval.rb b/bootstraptest/test_eval.rb
index a9f389c673..8e90ac2728 100644
--- a/bootstraptest/test_eval.rb
+++ b/bootstraptest/test_eval.rb
@@ -116,33 +116,6 @@ assert_equal %q{1}, %q{
Const
}
}
-assert_equal %q{1}, %q{
- class TrueClass
- Const = 1
- end
- true.instance_eval %{
- Const
- }
-}
-assert_equal %q{[:Const]}, %q{
- mod = Module.new
- mod.instance_eval %{
- Const = 1
- }
- raise if defined?(Module::Const)
- mod.singleton_class.constants
-}
-assert_equal %q{can't define singleton}, %q{
- begin
- 123.instance_eval %{
- Const = 1
- }
- "bad"
- rescue TypeError => e
- raise "bad" if defined?(Integer::Const)
- e.message
- end
-}
assert_equal %q{top}, %q{
Const = :top
class C
@@ -217,8 +190,7 @@ assert_equal %q{[10, main]}, %q{
}
%w[break next redo].each do |keyword|
- assert_match %r"Can't escape from eval with #{keyword}\b", %{
- $stderr = STDOUT
+ assert_match %r"Can't escape from eval with #{keyword}\z", %{
begin
eval "0 rescue #{keyword}"
rescue SyntaxError => e
@@ -228,7 +200,7 @@ assert_equal %q{[10, main]}, %q{
end
assert_normal_exit %q{
- $stderr = STDOUT
+ STDERR.reopen(STDOUT)
class Foo
def self.add_method
class_eval("def some-bad-name; puts 'hello' unless @some_variable.some_function(''); end")
@@ -277,9 +249,7 @@ assert_equal 'ok', %q{
assert_equal 'ok', %q{
begin
- class A
- 12.instance_eval { @@a }
- end
+ 12.instance_eval { @@a }
rescue NameError
:ok
end
@@ -287,9 +257,7 @@ assert_equal 'ok', %q{
assert_equal 'ok', %q{
begin
- class A
- 12.instance_exec { @@a }
- end
+ 12.instance_exec { @@a }
rescue NameError
:ok
end
diff --git a/bootstraptest/test_exception.rb b/bootstraptest/test_exception.rb
index 0fb6f552b8..35c8d25e37 100644
--- a/bootstraptest/test_exception.rb
+++ b/bootstraptest/test_exception.rb
@@ -402,7 +402,7 @@ assert_equal 'nil', %q{
exc.inspect
}, '[ruby-dev:32608]'
-assert_equal 'divided by 0', %q{
+assert_equal 'exception class/object expected', %q{
class ZeroDivisionError
def self.new(message)
42
diff --git a/bootstraptest/test_fiber.rb b/bootstraptest/test_fiber.rb
deleted file mode 100644
index 2614dd13bf..0000000000
--- a/bootstraptest/test_fiber.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-show_limit %q{
- fibers = []
- begin
- fiber = Fiber.new{Fiber.yield}
- fiber.resume
- fibers << fiber
-
- raise Exception, "skipping" if fibers.count >= 10_000
- rescue Exception => error
- puts "Fiber count: #{fibers.count} (#{error})"
- break
- end while true
-}
-
-assert_equal %q{ok}, %q{
- Fiber.new{
- }.resume
- :ok
-}
-
-assert_equal %q{ok}, %q{
- 100.times.collect{Fiber.new{}}
- :ok
-}
-
-assert_equal %q{ok}, %q{
- fibers = 1000.times.collect{Fiber.new{Fiber.yield}}
- fibers.each(&:resume)
- fibers.each(&:resume)
- :ok
-}
-
-assert_normal_exit %q{
- at_exit { Fiber.new{}.resume }
-}
-
-assert_normal_exit %q{
- Fiber.new(&Object.method(:class_eval)).resume("foo")
-}, '[ruby-dev:34128]'
diff --git a/bootstraptest/test_flow.rb b/bootstraptest/test_flow.rb
index 35f19db588..9da6d45cbd 100644
--- a/bootstraptest/test_flow.rb
+++ b/bootstraptest/test_flow.rb
@@ -534,11 +534,11 @@ assert_equal %Q{ENSURE\n}, %q{
['[ruby-core:39125]', %q{
class Bug5234
include Enumerable
- def each(&block)
+ def each
begin
yield :foo
ensure
- proc(&block)
+ proc
end
end
end
@@ -547,11 +547,11 @@ assert_equal %Q{ENSURE\n}, %q{
['[ruby-dev:45656]', %q{
class Bug6460
include Enumerable
- def each(&block)
+ def each
begin
yield :foo
ensure
- 1.times { Proc.new(&block) }
+ 1.times { Proc.new }
end
end
end
diff --git a/bootstraptest/test_fork.rb b/bootstraptest/test_fork.rb
index 83923dad97..1cd9f7ac6c 100644
--- a/bootstraptest/test_fork.rb
+++ b/bootstraptest/test_fork.rb
@@ -21,9 +21,7 @@ assert_finish 10, %q{
end
}, '[ruby-core:22158]'
-# temporarily stop this test to enable explicit failure when
-# timer thread couldn't be created (r61706 and r61717).
-assert_normal_exit(<<'End', '[ruby-dev:37934]') if false
+assert_normal_exit(<<'End', '[ruby-dev:37934]')
main = Thread.current
Thread.new { sleep 0.01 until main.stop?; Thread.kill main }
Process.setrlimit(:NPROC, 1) if defined?(Process::RLIMIT_NPROC)
diff --git a/bootstraptest/test_gc.rb b/bootstraptest/test_gc.rb
index 9f17e14814..eb68c9845e 100644
--- a/bootstraptest/test_gc.rb
+++ b/bootstraptest/test_gc.rb
@@ -14,7 +14,7 @@ ms = "a".."k"
o.send(meth)
end
end
-}, '[ruby-dev:39453]' unless ENV.fetch('RUN_OPTS', '').include?('rjit') # speed up RJIT CI
+}, '[ruby-dev:39453]'
assert_normal_exit %q{
a = []
diff --git a/bootstraptest/test_insns.rb b/bootstraptest/test_insns.rb
index d2e799f855..4dd888897a 100644
--- a/bootstraptest/test_insns.rb
+++ b/bootstraptest/test_insns.rb
@@ -10,16 +10,15 @@ begin
rescue LoadError
# OK, just skip
else
- if defined? RbConfig::LIMITS
- $FIXNUM_MAX = RbConfig::LIMITS["FIXNUM_MAX"]
- $FIXNUM_MIN = RbConfig::LIMITS["FIXNUM_MIN"]
- end
+ $FIXNUM_MAX = RbConfig::LIMITS["FIXNUM_MAX"]
+ $FIXNUM_MIN = RbConfig::LIMITS["FIXNUM_MIN"]
end
fsl = { frozen_string_literal: true } # used later
tests = [
# insn , expression to generate such insn
[ 'nop', %q{ raise rescue true }, ],
+ [ 'trace', %q{ true }, ],
[ 'setlocal *, 0', %q{ x = true }, ],
[ 'setlocal *, 1', %q{ x = nil; -> { x = true }.call }, ],
@@ -28,27 +27,6 @@ tests = [
[ 'getlocal *, 1', %q{ x = true; -> { x }.call }, ],
[ 'getlocal', %q{ x = true; -> { -> { x }.() }.() }, ],
- [ 'setblockparam', <<-'},', ], # {
- def m&b
- b = # here
- proc { true }
- end
- m { false }.call
- },
- [ 'getblockparam', <<-'},', ], # {
- def m&b
- b # here
- end
- m { true }.call
- },
- [ 'getblockparamproxy', <<-'},', ], # {
- def m&b
- b # here
- .call
- end
- m { true }
- },
-
[ 'setspecial', %q{ true if true..true }, ],
[ 'getspecial', %q{ $&.nil? }, ],
[ 'getspecial', %q{ $`.nil? }, ],
@@ -64,8 +42,8 @@ tests = [
[ 'setinstancevariable', %q{ @x = true }, ],
[ 'getinstancevariable', %q{ @x = true; @x }, ],
- [ 'setclassvariable', %q{ class A; @@x = true; end }, ],
- [ 'getclassvariable', %q{ class A; @@x = true; @@x end }, ],
+ [ 'setclassvariable', %q{ @@x = true }, ],
+ [ 'getclassvariable', %q{ @@x = true; @@x }, ],
[ 'setconstant', %q{ X = true }, ],
[ 'setconstant', %q{ Object::X = true }, ],
@@ -86,24 +64,25 @@ tests = [
[ 'putobject', %q{ /(?<x>x)/ =~ "x"; x == "x" }, ],
[ 'putspecialobject', %q{ {//=>true}[//] }, ],
+ [ 'putiseq', %q{ -> { true }.() }, ],
[ 'putstring', %q{ "true" }, ],
[ 'tostring / concatstrings', %q{ "#{true}" }, ],
+ [ 'freezestring', %q{ "#{true}"}, fsl, ],
+ [ 'freezestring', %q{ "#{true}"}, '-d', fsl, ],
[ 'toregexp', %q{ /#{true}/ =~ "true" && $~ }, ],
- [ 'intern', %q{ :"#{true}" }, ],
[ 'newarray', %q{ ["true"][0] }, ],
- [ 'newarraykwsplat', %q{ [**{x:'true'}][0][:x] }, ],
[ 'duparray', %q{ [ true ][0] }, ],
[ 'expandarray', %q{ y = [ true, false, nil ]; x, = y; x }, ],
[ 'expandarray', %q{ y = [ true, false, nil ]; x, *z = y; x }, ],
[ 'expandarray', %q{ y = [ true, false, nil ]; x, *z, w = y; x }, ],
[ 'splatarray', %q{ x, = *(y = true), false; x }, ],
[ 'concatarray', %q{ ["t", "r", *x = "u", "e"].join }, ],
- [ 'concatarray', <<-'},', ], # {
+ [ 'concatarray', <<~'},', ], # {
class X; def to_a; ['u']; end; end
['t', 'r', *X.new, 'e'].join
},
- [ 'concatarray', <<-'},', ], # {
+ [ 'concatarray', <<~'},', ], # {
r = false
t = [true, nil]
q, w, e = r, *t # here
@@ -112,16 +91,15 @@ tests = [
[ 'newhash', %q{ x = {}; x[x] = true }, ],
[ 'newhash', %q{ x = true; { x => x }[x] }, ],
- [ 'newhashfromarray', %q{ { a: true }[:a] }, ],
[ 'newrange', %q{ x = 1; [*(0..x)][0] == 0 }, ],
[ 'newrange', %q{ x = 1; [*(0...x)][0] == 0 }, ],
[ 'pop', %q{ def x; true; end; x }, ],
[ 'dup', %q{ x = y = true; x }, ],
[ 'dupn', %q{ Object::X ||= true }, ],
+ [ 'dupn', %q{ Object::X ||= true }, ],
[ 'reverse', %q{ q, (w, e), r = 1, [2, 3], 4; e == 3 }, ],
- [ 'swap', %q{ !!defined?([[]]) }, ],
- [ 'swap', <<-'},', ], # {
+ [ 'swap', <<~'},', ], # {
x = [[false, true]]
for i, j in x # here
;
@@ -135,8 +113,7 @@ tests = [
[ 'defined', %q{ !defined?(x) }, ],
[ 'checkkeyword', %q{ def x x:rand;x end; x x: true }, ],
- [ 'checktype', %q{ x = true; "#{x}" }, ],
- [ 'checkmatch', <<-'},', ], # {
+ [ 'checkmatch', <<~'},', ], # {
x = y = true
case x
when false
@@ -146,7 +123,7 @@ tests = [
end
y == nil
},
- [ 'checkmatch', <<-'},', ], # {
+ [ 'checkmatch', <<~'},', ], # {
x, y = true, [false]
case x
when *y # here
@@ -156,7 +133,7 @@ tests = [
end
z
},
- [ 'checkmatch', <<-'},', ], # {
+ [ 'checkmatch', <<~'},', ], # {
x = false
begin
raise
@@ -172,7 +149,7 @@ tests = [
[ 'defineclass', %q{ X = Class.new; class X; true end }, ],
[ 'defineclass', %q{ X = Class.new; class Y < X; true end }, ],
[ 'defineclass', %q{ X = Class.new; class << X; true end }, ],
- [ 'defineclass', <<-'},', ], # {
+ [ 'defineclass', <<~'},', ], # {
X = Class.new
Y = Class.new(X)
class Y < X
@@ -183,7 +160,7 @@ tests = [
[ 'opt_send_without_block', %q{ true.to_s }, ],
[ 'send', %q{ true.tap {|i| i.to_s } }, ],
[ 'leave', %q{ def x; true; end; x }, ],
- [ 'invokesuper', <<-'},', ], # {
+ [ 'invokesuper', <<~'},', ], # {
class X < String
def empty?
super # here
@@ -191,7 +168,7 @@ tests = [
end
X.new.empty?
},
- [ 'invokeblock', <<-'},', ], # {
+ [ 'invokeblock', <<~'},', ], # {
def x
return yield self # here
end
@@ -201,11 +178,8 @@ tests = [
},
[ 'opt_str_freeze', %q{ 'true'.freeze }, ],
- [ 'opt_nil_p', %q{ nil.nil? }, ],
- [ 'opt_nil_p', %q{ !Object.nil? }, ],
- [ 'opt_nil_p', %q{ Class.new{def nil?; true end}.new.nil? }, ],
[ 'opt_str_uminus', %q{ -'true' }, ],
- [ 'opt_str_freeze', <<-'},', ], # {
+ [ 'opt_str_freeze', <<~'},', ], # {
class String
def freeze
true
@@ -214,11 +188,9 @@ tests = [
'true'.freeze
},
- [ 'opt_newarray_send', %q{ ![ ].hash.nil? }, ],
-
- [ 'opt_newarray_send', %q{ [ ].max.nil? }, ],
- [ 'opt_newarray_send', %q{ [1, x = 2, 3].max == 3 }, ],
- [ 'opt_newarray_send', <<-'},', ], # {
+ [ 'opt_newarray_max', %q{ [ ].max.nil? }, ],
+ [ 'opt_newarray_max', %q{ [1, x = 2, 3].max == 3 }, ],
+ [ 'opt_newarray_max', <<~'},', ], # {
class Array
def max
true
@@ -226,9 +198,9 @@ tests = [
end
[1, x = 2, 3].max
},
- [ 'opt_newarray_send', %q{ [ ].min.nil? }, ],
- [ 'opt_newarray_send', %q{ [3, x = 2, 1].min == 1 }, ],
- [ 'opt_newarray_send', <<-'},', ], # {
+ [ 'opt_newarray_min', %q{ [ ].min.nil? }, ],
+ [ 'opt_newarray_min', %q{ [3, x = 2, 1].min == 1 }, ],
+ [ 'opt_newarray_min', <<~'},', ], # {
class Array
def min
true
@@ -244,12 +216,12 @@ tests = [
[ 'branchunless', %q{ x = nil; x &&= true; x.nil? }, ],
[ 'branchnil', %q{ x = true; x&.to_s }, ],
[ 'branchnil', %q{ x = nil; (x&.to_s).nil? }, ],
- [ 'jump', <<-'},', ], # {
+ [ 'jump', <<~'},', ], # {
y = 1
x = if y == 0 then nil elsif y == 1 then true else nil end
x
},
- [ 'jump', <<-'},', ], # {
+ [ 'jump', <<~'},', ], # {
# ultra complicated situation: this ||= assignment only generates
# 15 instructions, not including the class definition.
class X; attr_accessor :x; end
@@ -258,14 +230,14 @@ tests = [
},
[ 'once', %q{ /#{true}/o =~ "true" && $~ }, ],
- [ 'once', <<-'},', ], # {
+ [ 'once', <<~'},', ], # {
def once expr
return /#{expr}/o # here
end
x = once(true); x = once(false); x = once(nil);
x =~ "true" && $~
},
- [ 'once', <<-'},', ], # {
+ [ 'once', <<~'},', ], # {
# recursive once
def once n
return %r/#{
@@ -279,7 +251,7 @@ tests = [
x = once(128); x = once(7); x = once(16);
x =~ "true" && $~
},
- [ 'once', <<-'},', ], # {
+ [ 'once', <<~'},', ], # {
# inter-thread lockup situation
def once n
return Thread.start n do |m|
@@ -327,12 +299,12 @@ tests = [
[ 'opt_mod', %q{ '%s' % [ true ] }, ],
[ 'opt_eq', %q{ 1 == 1 }, ],
- [ 'opt_eq', <<-'},', ], # {
+ [ 'opt_eq', <<~'},', ], # {
class X; def == other; true; end; end
X.new == true
},
[ 'opt_neq', %q{ 1 != 0 }, ],
- [ 'opt_neq', <<-'},', ], # {
+ [ 'opt_neq', <<~'},', ], # {
class X; def != other; true; end; end
X.new != true
},
@@ -364,7 +336,7 @@ tests = [
[ 'opt_aset', %q{ [][0] = true }, ],
[ 'opt_aset', %q{ {}[0] = true }, ],
[ 'opt_aset', %q{ x = 'frue'; x[0] = 't'; x }, ],
- [ 'opt_aset', <<-'},', ], # {
+ [ 'opt_aset', <<~'},', ], # {
# opt_aref / opt_aset mixup situation
class X; def x; {}; end; end
x = X.new
@@ -387,56 +359,31 @@ tests = [
[ 'opt_empty_p', %q{ ''.empty? }, ],
[ 'opt_empty_p', %q{ [].empty? }, ],
[ 'opt_empty_p', %q{ {}.empty? }, ],
- [ 'opt_empty_p', %q{ Thread::Queue.new.empty? }, ],
+ [ 'opt_empty_p', %q{ Queue.new.empty? }, ],
[ 'opt_succ', %q{ 1.succ == 2 }, ],
if defined? $FIXNUM_MAX then
[ 'opt_succ',%Q{ #{ $FIXNUM_MAX }.succ == #{ $FIXNUM_MAX + 1 } }, ]
end,
[ 'opt_succ', %q{ '1'.succ == '2' }, ],
+ [ 'opt_succ', %q{ x = Time.at(0); x.succ == Time.at(1) }, ],
[ 'opt_not', %q{ ! false }, ],
- [ 'opt_neq', <<-'},', ], # {
+ [ 'opt_neq', <<~'},', ], # {
class X; def !; true; end; end
! X.new
},
- [ 'opt_regexpmatch2', %q{ /true/ =~ 'true' && $~ }, ],
- [ 'opt_regexpmatch2', <<-'},', ], # {
+ [ 'opt_regexpmatch1', %q{ /true/ =~ 'true' && $~ }, ],
+ [ 'opt_regexpmatch1', <<~'},', ], # {
class Regexp; def =~ other; true; end; end
/true/ =~ 'true'
},
[ 'opt_regexpmatch2', %q{ 'true' =~ /true/ && $~ }, ],
- [ 'opt_regexpmatch2', <<-'},', ], # {
+ [ 'opt_regexpmatch2', <<~'},', ], # {
class String; def =~ other; true; end; end
'true' =~ /true/
},
]
-# normal path
-tests.compact.each do |(insn, expr, *a)|
- if a.last.is_a?(Hash)
- a = a.dup
- kw = a.pop
- assert_equal 'true', expr, insn, *a, **kw
- else
- assert_equal 'true', expr, insn, *a
- end
-end
-
-# with trace
-tests.compact.each {|(insn, expr, *a)|
- progn = "set_trace_func(proc{})\n" + expr
- if a.last.is_a?(Hash)
- a = a.dup
- kw = a.pop
- assert_equal 'true', progn, 'trace_' + insn, *a, **kw
- else
- assert_equal 'true', progn, 'trace_' + insn, *a
- end
-}
-
-assert_normal_exit("#{<<-"begin;"}\n#{<<-'end;'}")
-begin;
- RubyVM::InstructionSequence.compile("", debug_level: 5)
-end;
+tests.compact.each {|(insn, expr, *a)| assert_equal 'true', expr, insn, *a }
diff --git a/bootstraptest/test_io.rb b/bootstraptest/test_io.rb
index 666e5a011b..89c00d0b88 100644
--- a/bootstraptest/test_io.rb
+++ b/bootstraptest/test_io.rb
@@ -1,4 +1,3 @@
-/freebsd/ =~ RUBY_PLATFORM or
assert_finish 5, %q{
r, w = IO.pipe
t1 = Thread.new { r.sysread(1) }
@@ -31,8 +30,7 @@ assert_finish 10, %q{
end
}, '[ruby-dev:32566]'
-/freebsd/ =~ RUBY_PLATFORM or
-assert_finish 5, %q{
+assert_finish 1, %q{
r, w = IO.pipe
Thread.new {
w << "ab"
@@ -85,7 +83,6 @@ assert_normal_exit %q{
ARGF.set_encoding "foo"
}
-/freebsd/ =~ RUBY_PLATFORM or
10.times do
assert_normal_exit %q{
at_exit { p :foo }
diff --git a/bootstraptest/test_jump.rb b/bootstraptest/test_jump.rb
index d07c47a56d..595aaa7c4b 100644
--- a/bootstraptest/test_jump.rb
+++ b/bootstraptest/test_jump.rb
@@ -146,16 +146,15 @@ assert_equal %q{131}, %q{
end
}
}
-assert_match %r{Invalid retry}, %q{
-$stderr = STDOUT
+assert_equal %q{ok}, %q{
begin
eval %q{
1.times{
retry
}
}
-rescue SyntaxError => e
- e.message
+rescue SyntaxError
+ :ok
end
}
assert_equal %q{3}, %q{
@@ -296,19 +295,14 @@ assert_equal "true", %q{
s.return_eigenclass == class << s; self; end
}, '[ruby-core:21379]'
-assert_match %r{Invalid yield}, %q{
-$stderr = STDOUT
-begin
- eval %q{
- class Object
- def yield_eigenclass
- class << self
- yield self
- end
+assert_equal "true", %q{
+ class Object
+ def yield_eigenclass
+ class << self
+ yield self
end
end
- }
-rescue SyntaxError => e
- e.message
-end
-}
+ end
+ s = "foo"
+ s.yield_eigenclass {|c| c == class << s; self; end }
+}, '[ruby-dev:40975]'
diff --git a/bootstraptest/test_literal.rb b/bootstraptest/test_literal.rb
index a0d4ee08c6..9b3c10d519 100644
--- a/bootstraptest/test_literal.rb
+++ b/bootstraptest/test_literal.rb
@@ -65,11 +65,8 @@ assert_equal ':a3c', ':"a#{1+2}c".inspect'
assert_equal 'Symbol', ':"a#{1+2}c".class'
# xstring
-# WASI doesn't support spawning a new process for now.
-if /wasi/ !~ target_platform
- assert_equal "foo\n", %q(`echo foo`)
- assert_equal "foo\n", %q(s = "foo"; `echo #{s}`)
-end
+assert_equal "foo\n", %q(`echo foo`)
+assert_equal "foo\n", %q(s = "foo"; `echo #{s}`)
# regexp
assert_equal '', '//.source'
diff --git a/bootstraptest/test_literal_suffix.rb b/bootstraptest/test_literal_suffix.rb
index c36fa7078f..4316c9e040 100644
--- a/bootstraptest/test_literal_suffix.rb
+++ b/bootstraptest/test_literal_suffix.rb
@@ -46,9 +46,9 @@ assert_equal '1', '1rescue nil'
assert_equal '10000000000000000001/10000000000000000000',
'1.0000000000000000001r'
-assert_equal 'syntax error, unexpected local variable or method, expecting end-of-input',
+assert_equal 'syntax error, unexpected tIDENTIFIER, expecting end-of-input',
%q{begin eval('1ir', nil, '', 0); rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end}
-assert_equal 'syntax error, unexpected local variable or method, expecting end-of-input',
+assert_equal 'syntax error, unexpected tIDENTIFIER, expecting end-of-input',
%q{begin eval('1.2ir', nil, '', 0); rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end}
-assert_equal 'syntax error, unexpected local variable or method, expecting end-of-input',
+assert_equal 'syntax error, unexpected tIDENTIFIER, expecting end-of-input',
%q{begin eval('1e1r', nil, '', 0); rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end}
diff --git a/bootstraptest/test_load.rb b/bootstraptest/test_load.rb
index 3253582a32..e63c93a8f4 100644
--- a/bootstraptest/test_load.rb
+++ b/bootstraptest/test_load.rb
@@ -12,7 +12,7 @@ assert_equal 'ok', %q{
}
}.map {|t| t.value }
vs[0] == M && vs[1] == M ? :ok : :ng
-}, '[ruby-dev:32048]' unless ENV.fetch('RUN_OPTS', '').include?('rjit') # Thread seems to be switching during JIT. To be fixed later.
+}, '[ruby-dev:32048]'
assert_equal 'ok', %q{
%w[a a/foo b].each {|d| Dir.mkdir(d)}
diff --git a/bootstraptest/test_method.rb b/bootstraptest/test_method.rb
index 04c9eb2d11..3462aa9434 100644
--- a/bootstraptest/test_method.rb
+++ b/bootstraptest/test_method.rb
@@ -22,7 +22,7 @@ assert_match /\Awrong number of arguments \(.*\b0\b.* 1\)\z/, %q{
}
# default argument
-assert_equal '1', 'def m(x=1) x end; m();'
+assert_equal '1', 'def m(x=1) x end; m()'
assert_equal '1', 'def m(x=7) x end; m(1)'
assert_equal '1', 'def m(a,x=1) x end; m(7)'
assert_equal '1', 'def m(a,x=7) x end; m(7,1)'
diff --git a/bootstraptest/test_objectspace.rb b/bootstraptest/test_objectspace.rb
index 63a8d99322..24a1a0ce2c 100644
--- a/bootstraptest/test_objectspace.rb
+++ b/bootstraptest/test_objectspace.rb
@@ -44,12 +44,3 @@ assert_normal_exit %q{
Thread.new {}
end
}, '[ruby-core:37858]'
-
-assert_equal 'ok', %q{
- objects_and_ids = 1000.times.map { o = Object.new; [o, o.object_id] }
- objects_and_ids.each { |expected, id|
- actual = ObjectSpace._id2ref(id)
- raise "expected #{expected.inspect}, got #{actual.inspect}" unless actual.equal?(expected)
- }
- 'ok'
-}
diff --git a/bootstraptest/test_proc.rb b/bootstraptest/test_proc.rb
index 637603243d..c23394e8d2 100644
--- a/bootstraptest/test_proc.rb
+++ b/bootstraptest/test_proc.rb
@@ -224,6 +224,19 @@ assert_equal %q{[[nil, []], [1, []], [1, [2]], [1, [2, 3]]]}, %q{
Proc.new{|a, *b| [a, b]}.call(1, 2, 3),
]
}
+assert_equal %q{0}, %q{
+ pr = proc{
+ $SAFE
+ }
+ $SAFE = 1
+ pr.call
+}
+assert_equal %q{[1, 0]}, %q{
+ pr = proc{
+ $SAFE += 1
+ }
+ [pr.call, $SAFE]
+}
assert_equal %q{1}, %q{
def m(&b)
b
@@ -367,8 +380,8 @@ assert_equal 'ok', %q{
assert_equal 'ok', %q{
class Foo
- def call_it(&block)
- p = Proc.new(&block)
+ def call_it
+ p = Proc.new
p.call
end
end
diff --git a/bootstraptest/test_ractor.rb b/bootstraptest/test_ractor.rb
deleted file mode 100644
index f92b604d2a..0000000000
--- a/bootstraptest/test_ractor.rb
+++ /dev/null
@@ -1,1743 +0,0 @@
-# Ractor.current returns a current ractor
-assert_equal 'Ractor', %q{
- Ractor.current.class
-}
-
-# Ractor.new returns new Ractor
-assert_equal 'Ractor', %q{
- Ractor.new{}.class
-}
-
-# Ractor.allocate is not supported
-assert_equal "[:ok, :ok]", %q{
- rs = []
- begin
- Ractor.allocate
- rescue => e
- rs << :ok if e.message == 'allocator undefined for Ractor'
- end
-
- begin
- Ractor.new{}.dup
- rescue
- rs << :ok if e.message == 'allocator undefined for Ractor'
- end
-
- rs
-}
-
-# A Ractor can have a name
-assert_equal 'test-name', %q{
- r = Ractor.new name: 'test-name' do
- end
- r.name
-}
-
-# If Ractor doesn't have a name, Ractor#name returns nil.
-assert_equal 'nil', %q{
- r = Ractor.new do
- end
- r.name.inspect
-}
-
-# Raises exceptions if initialize with an invalid name
-assert_equal 'ok', %q{
- begin
- r = Ractor.new(name: [{}]) {}
- rescue TypeError => e
- 'ok'
- end
-}
-
-# Ractor.new must call with a block
-assert_equal "must be called with a block", %q{
- begin
- Ractor.new
- rescue ArgumentError => e
- e.message
- end
-}
-
-# Ractor#inspect
-# Return only id and status for main ractor
-assert_equal "#<Ractor:#1 running>", %q{
- Ractor.current.inspect
-}
-
-# Return id, loc, and status for no-name ractor
-assert_match /^#<Ractor:#([^ ]*?) .+:[0-9]+ terminated>$/, %q{
- r = Ractor.new { '' }
- r.take
- sleep 0.1 until r.inspect =~ /terminated/
- r.inspect
-}
-
-# Return id, name, loc, and status for named ractor
-assert_match /^#<Ractor:#([^ ]*?) Test Ractor .+:[0-9]+ terminated>$/, %q{
- r = Ractor.new(name: 'Test Ractor') { '' }
- r.take
- sleep 0.1 until r.inspect =~ /terminated/
- r.inspect
-}
-
-# A return value of a Ractor block will be a message from the Ractor.
-assert_equal 'ok', %q{
- # join
- r = Ractor.new do
- 'ok'
- end
- r.take
-}
-
-# Passed arguments to Ractor.new will be a block parameter
-# The values are passed with Ractor-communication pass.
-assert_equal 'ok', %q{
- # ping-pong with arg
- r = Ractor.new 'ok' do |msg|
- msg
- end
- r.take
-}
-
-# Pass multiple arguments to Ractor.new
-assert_equal 'ok', %q{
- # ping-pong with two args
- r = Ractor.new 'ping', 'pong' do |msg, msg2|
- [msg, msg2]
- end
- 'ok' if r.take == ['ping', 'pong']
-}
-
-# Ractor#send passes an object with copy to a Ractor
-# and Ractor.receive in the Ractor block can receive the passed value.
-assert_equal 'ok', %q{
- r = Ractor.new do
- msg = Ractor.receive
- end
- r.send 'ok'
- r.take
-}
-
-# Ractor#receive_if can filter the message
-assert_equal '[2, 3, 1]', %q{
- r = Ractor.new Ractor.current do |main|
- main << 1
- main << 2
- main << 3
- end
- a = []
- a << Ractor.receive_if{|msg| msg == 2}
- a << Ractor.receive_if{|msg| msg == 3}
- a << Ractor.receive
-}
-
-# Ractor#receive_if with break
-assert_equal '[2, [1, :break], 3]', %q{
- r = Ractor.new Ractor.current do |main|
- main << 1
- main << 2
- main << 3
- end
-
- a = []
- a << Ractor.receive_if{|msg| msg == 2}
- a << Ractor.receive_if{|msg| break [msg, :break]}
- a << Ractor.receive
-}
-
-# Ractor#receive_if can't be called recursively
-assert_equal '[[:e1, 1], [:e2, 2]]', %q{
- r = Ractor.new Ractor.current do |main|
- main << 1
- main << 2
- main << 3
- end
-
- a = []
-
- Ractor.receive_if do |msg|
- begin
- Ractor.receive
- rescue Ractor::Error
- a << [:e1, msg]
- end
- true # delete 1 from queue
- end
-
- Ractor.receive_if do |msg|
- begin
- Ractor.receive_if{}
- rescue Ractor::Error
- a << [:e2, msg]
- end
- true # delete 2 from queue
- end
-
- a #
-}
-
-# dtoa race condition
-assert_equal '[:ok, :ok, :ok]', %q{
- n = 3
- n.times.map{
- Ractor.new{
- 10_000.times{ rand.to_s }
- :ok
- }
- }.map(&:take)
-}
-
-# Ractor.make_shareable issue for locals in proc [Bug #18023]
-assert_equal '[:a, :b, :c, :d, :e]', %q{
- v1, v2, v3, v4, v5 = :a, :b, :c, :d, :e
- closure = Ractor.current.instance_eval{ Proc.new { [v1, v2, v3, v4, v5] } }
-
- Ractor.make_shareable(closure).call
-}
-
-# Ractor.make_shareable issue for locals in proc [Bug #18023]
-assert_equal '[:a, :b, :c, :d, :e, :f, :g]', %q{
- a = :a
- closure = Ractor.current.instance_eval do
- -> {
- b, c, d = :b, :c, :d
- -> {
- e, f, g = :e, :f, :g
- -> { [a, b, c, d, e, f, g] }
- }.call
- }.call
- end
-
- Ractor.make_shareable(closure).call
-}
-
-# Now autoload in non-main Ractor is not supported
-assert_equal 'ok', %q{
- autoload :Foo, 'foo.rb'
- r = Ractor.new do
- p Foo
- rescue Ractor::UnsafeError
- :ok
- end
- r.take
-}
-
-###
-###
-# Ractor still has several memory corruption so skip huge number of tests
-if ENV['GITHUB_WORKFLOW'] &&
- ENV['GITHUB_WORKFLOW'] == 'Compilations'
- # ignore the follow
-else
-
-# Ractor.select(*ractors) receives a values from a ractors.
-# It is similar to select(2) and Go's select syntax.
-# The return value is [ch, received_value]
-assert_equal 'ok', %q{
- # select 1
- r1 = Ractor.new{'r1'}
- r, obj = Ractor.select(r1)
- 'ok' if r == r1 and obj == 'r1'
-}
-
-# Ractor.select from two ractors.
-assert_equal '["r1", "r2"]', %q{
- # select 2
- r1 = Ractor.new{'r1'}
- r2 = Ractor.new{'r2'}
- rs = [r1, r2]
- as = []
- r, obj = Ractor.select(*rs)
- rs.delete(r)
- as << obj
- r, obj = Ractor.select(*rs)
- as << obj
- as.sort #=> ["r1", "r2"]
-}
-
-# Ractor.select from multiple ractors.
-assert_equal 30.times.map { 'ok' }.to_s, %q{
- def test n
- rs = (1..n).map do |i|
- Ractor.new(i) do |i|
- "r#{i}"
- end
- end
- as = []
- all_rs = rs.dup
-
- n.times{
- r, obj = Ractor.select(*rs)
- as << [r, obj]
- rs.delete(r)
- }
-
- if as.map{|r, o| r.object_id}.sort == all_rs.map{|r| r.object_id}.sort &&
- as.map{|r, o| o}.sort == (1..n).map{|i| "r#{i}"}.sort
- 'ok'
- else
- 'ng'
- end
- end
-
- 30.times.map{|i|
- test i
- }
-} unless (ENV.key?('TRAVIS') && ENV['TRAVIS_CPU_ARCH'] == 'arm64') # https://bugs.ruby-lang.org/issues/17878
-
-# Exception for empty select
-assert_match /specify at least one ractor/, %q{
- begin
- Ractor.select
- rescue ArgumentError => e
- e.message
- end
-}
-
-# Outgoing port of a ractor will be closed when the Ractor is terminated.
-assert_equal 'ok', %q{
- r = Ractor.new do
- 'finish'
- end
-
- r.take
- sleep 0.1 until r.inspect =~ /terminated/
-
- begin
- o = r.take
- rescue Ractor::ClosedError
- 'ok'
- else
- "ng: #{o}"
- end
-}
-
-# Raise Ractor::ClosedError when try to send into a terminated ractor
-assert_equal 'ok', %q{
- r = Ractor.new do
- end
-
- r.take # closed
- sleep 0.1 until r.inspect =~ /terminated/
-
- begin
- r.send(1)
- rescue Ractor::ClosedError
- 'ok'
- else
- 'ng'
- end
-}
-
-# Raise Ractor::ClosedError when try to send into a closed actor
-assert_equal 'ok', %q{
- r = Ractor.new { Ractor.receive }
- r.close_incoming
-
- begin
- r.send(1)
- rescue Ractor::ClosedError
- 'ok'
- else
- 'ng'
- end
-}
-
-# Raise Ractor::ClosedError when try to take from closed actor
-assert_equal 'ok', %q{
- r = Ractor.new do
- Ractor.yield 1
- Ractor.receive
- end
-
- r.close_outgoing
- begin
- r.take
- rescue Ractor::ClosedError
- 'ok'
- else
- 'ng'
- end
-}
-
-# Can mix with Thread#interrupt and Ractor#take [Bug #17366]
-assert_equal 'err', %q{
- Ractor.new{
- t = Thread.current
- begin
- Thread.new{ t.raise "err" }.join
- rescue => e
- e.message
- end
- }.take
-}
-
-# Killed Ractor's thread yields nil
-assert_equal 'nil', %q{
- Ractor.new{
- t = Thread.current
- Thread.new{ t.kill }.join
- }.take.inspect #=> nil
-}
-
-# Ractor.yield raises Ractor::ClosedError when outgoing port is closed.
-assert_equal 'ok', %q{
- r = Ractor.new Ractor.current do |main|
- Ractor.receive
- main << true
- Ractor.yield 1
- end
-
- r.close_outgoing
- r << true
- Ractor.receive
-
- begin
- r.take
- rescue Ractor::ClosedError
- 'ok'
- else
- 'ng'
- end
-}
-
-# Raise Ractor::ClosedError when try to send into a ractor with closed incoming port
-assert_equal 'ok', %q{
- r = Ractor.new { Ractor.receive }
- r.close_incoming
-
- begin
- r.send(1)
- rescue Ractor::ClosedError
- 'ok'
- else
- 'ng'
- end
-}
-
-# A ractor with closed incoming port still can send messages out
-assert_equal '[1, 2]', %q{
- r = Ractor.new do
- Ractor.yield 1
- 2
- end
- r.close_incoming
-
- [r.take, r.take]
-}
-
-# Raise Ractor::ClosedError when try to take from a ractor with closed outgoing port
-assert_equal 'ok', %q{
- r = Ractor.new do
- Ractor.yield 1
- Ractor.receive
- end
-
- sleep 0.01 # wait for Ractor.yield in r
- r.close_outgoing
- begin
- r.take
- rescue Ractor::ClosedError
- 'ok'
- else
- 'ng'
- end
-}
-
-# A ractor with closed outgoing port still can receive messages from incoming port
-assert_equal 'ok', %q{
- r = Ractor.new do
- Ractor.receive
- end
-
- r.close_outgoing
- begin
- r.send(1)
- rescue Ractor::ClosedError
- 'ng'
- else
- 'ok'
- end
-}
-
-# Ractor.main returns main ractor
-assert_equal 'true', %q{
- Ractor.new{
- Ractor.main
- }.take == Ractor.current
-}
-
-# a ractor with closed outgoing port should terminate
-assert_equal 'ok', %q{
- Ractor.new do
- close_outgoing
- end
-
- true until Ractor.count == 1
- :ok
-}
-
-# multiple Ractors can receive (wait) from one Ractor
-assert_equal '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]', %q{
- pipe = Ractor.new do
- loop do
- Ractor.yield Ractor.receive
- end
- end
-
- RN = 10
- rs = RN.times.map{|i|
- Ractor.new pipe, i do |pipe, i|
- msg = pipe.take
- msg # ping-pong
- end
- }
- RN.times{|i|
- pipe << i
- }
- RN.times.map{
- r, n = Ractor.select(*rs)
- rs.delete r
- n
- }.sort
-} unless /mswin/ =~ RUBY_PLATFORM # randomly hangs on mswin https://github.com/ruby/ruby/actions/runs/3753871445/jobs/6377551069#step:20:131
-
-# Ractor.select also support multiple take, receive and yield
-assert_equal '[true, true, true]', %q{
- RN = 10
- CR = Ractor.current
-
- rs = (1..RN).map{
- Ractor.new do
- CR.send 'send' + CR.take #=> 'sendyield'
- 'take'
- end
- }
- received = []
- taken = []
- yielded = []
- until received.size == RN && taken.size == RN && yielded.size == RN
- r, v = Ractor.select(CR, *rs, yield_value: 'yield')
- case r
- when :receive
- received << v
- when :yield
- yielded << v
- else
- taken << v
- rs.delete r
- end
- end
- r = [received == ['sendyield'] * RN,
- yielded == [nil] * RN,
- taken == ['take'] * RN,
- ]
-
- STDERR.puts [received, yielded, taken].inspect
- r
-}
-
-# multiple Ractors can send to one Ractor
-assert_equal '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]', %q{
- pipe = Ractor.new do
- loop do
- Ractor.yield Ractor.receive
- end
- end
-
- RN = 10
- RN.times.map{|i|
- Ractor.new pipe, i do |pipe, i|
- pipe << i
- end
- }
- RN.times.map{
- pipe.take
- }.sort
-}
-
-# an exception in a Ractor will be re-raised at Ractor#receive
-assert_equal '[RuntimeError, "ok", true]', %q{
- r = Ractor.new do
- raise 'ok' # exception will be transferred receiver
- end
- begin
- r.take
- rescue Ractor::RemoteError => e
- [e.cause.class, #=> RuntimeError
- e.cause.message, #=> 'ok'
- e.ractor == r] #=> true
- end
-}
-
-# threads in a ractor will killed
-assert_equal '{:ok=>3}', %q{
- Ractor.new Ractor.current do |main|
- q = Thread::Queue.new
- Thread.new do
- q << true
- loop{}
- ensure
- main << :ok
- end
-
- Thread.new do
- q << true
- while true
- end
- ensure
- main << :ok
- end
-
- Thread.new do
- q << true
- sleep 1
- ensure
- main << :ok
- end
-
- # wait for the start of all threads
- 3.times{q.pop}
- end
-
- 3.times.map{Ractor.receive}.tally
-}
-
-# unshareable object are copied
-assert_equal 'false', %q{
- obj = 'str'.dup
- r = Ractor.new obj do |msg|
- msg.object_id
- end
-
- obj.object_id == r.take
-}
-
-# To copy the object, now Marshal#dump is used
-assert_equal "allocator undefined for Thread", %q{
- obj = Thread.new{}
- begin
- r = Ractor.new obj do |msg|
- msg
- end
- rescue TypeError => e
- e.message #=> no _dump_data is defined for class Thread
- else
- 'ng'
- end
-}
-
-# send shareable and unshareable objects
-assert_equal "ok", %q{
- echo_ractor = Ractor.new do
- loop do
- v = Ractor.receive
- Ractor.yield v
- end
- end
-
- class C; end
- module M; end
- S = Struct.new(:a, :b, :c, :d)
-
- shareable_objects = [
- true,
- false,
- nil,
- 1,
- 1.1, # Float
- 1+2r, # Rational
- 3+4i, # Complex
- 2**128, # Bignum
- :sym, # Symbol
- 'xyzzy'.to_sym, # dynamic symbol
- 'frozen'.freeze, # frozen String
- /regexp/, # regexp literal
- /reg{true}exp/.freeze, # frozen dregexp
- [1, 2].freeze, # frozen Array which only refers to shareable
- {a: 1}.freeze, # frozen Hash which only refers to shareable
- [{a: 1}.freeze, 'str'.freeze].freeze, # nested frozen container
- S.new(1, 2).freeze, # frozen Struct
- S.new(1, 2, 3, 4).freeze, # frozen Struct
- (1..2), # Range on Struct
- (1..), # Range on Struct
- (..1), # Range on Struct
- C, # class
- M, # module
- Ractor.current, # Ractor
- ]
-
- unshareable_objects = [
- 'mutable str'.dup,
- [:array],
- {hash: true},
- S.new(1, 2),
- S.new(1, 2, 3, 4),
- S.new("a", 2).freeze, # frozen, but refers to an unshareable object
- ]
-
- results = []
-
- shareable_objects.map{|o|
- echo_ractor << o
- o2 = echo_ractor.take
- results << "#{o} is copied" unless o.object_id == o2.object_id
- }
-
- unshareable_objects.map{|o|
- echo_ractor << o
- o2 = echo_ractor.take
- results << "#{o.inspect} is not copied" if o.object_id == o2.object_id
- }
-
- if results.empty?
- :ok
- else
- results.inspect
- end
-}
-
-# frozen Objects are shareable
-assert_equal [false, true, false].inspect, %q{
- class C
- def initialize freeze
- @a = 1
- @b = :sym
- @c = 'frozen_str'
- @c.freeze if freeze
- @d = true
- end
- end
-
- def check obj1
- obj2 = Ractor.new obj1 do |obj|
- obj
- end.take
-
- obj1.object_id == obj2.object_id
- end
-
- results = []
- results << check(C.new(true)) # false
- results << check(C.new(true).freeze) # true
- results << check(C.new(false).freeze) # false
-}
-
-# move example2: String
-# touching moved object causes an error
-assert_equal 'hello world', %q{
- # move
- r = Ractor.new do
- obj = Ractor.receive
- obj << ' world'
- end
-
- str = 'hello'
- r.send str, move: true
- modified = r.take
-
- begin
- str << ' exception' # raise Ractor::MovedError
- rescue Ractor::MovedError
- modified #=> 'hello world'
- else
- raise 'unreachable'
- end
-}
-
-# move example2: Array
-assert_equal '[0, 1]', %q{
- r = Ractor.new do
- ary = Ractor.receive
- ary << 1
- end
-
- a1 = [0]
- r.send a1, move: true
- a2 = r.take
- begin
- a1 << 2 # raise Ractor::MovedError
- rescue Ractor::MovedError
- a2.inspect
- end
-}
-
-# move with yield
-assert_equal 'hello', %q{
- r = Ractor.new do
- Thread.current.report_on_exception = false
- obj = 'hello'
- Ractor.yield obj, move: true
- obj << 'world'
- end
-
- str = r.take
- begin
- r.take
- rescue Ractor::RemoteError
- str #=> "hello"
- end
-}
-
-# yield/move should not make moved object when the yield is not succeeded
-assert_equal '"str"', %q{
- R = Ractor.new{}
- M = Ractor.current
- r = Ractor.new do
- s = 'str'
- selected_r, v = Ractor.select R, yield_value: s, move: true
- raise if selected_r != R # taken from R
- M.send s.inspect # s should not be a moved object
- end
-
- Ractor.receive
-}
-
-# yield/move can fail
-assert_equal "allocator undefined for Thread", %q{
- r = Ractor.new do
- obj = Thread.new{}
- Ractor.yield obj
- rescue => e
- e.message
- end
- r.take
-}
-
-# Access to global-variables are prohibited
-assert_equal 'can not access global variables $gv from non-main Ractors', %q{
- $gv = 1
- r = Ractor.new do
- $gv
- end
-
- begin
- r.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# Access to global-variables are prohibited
-assert_equal 'can not access global variables $gv from non-main Ractors', %q{
- r = Ractor.new do
- $gv = 1
- end
-
- begin
- r.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# $stdin,out,err is Ractor local, but shared fds
-assert_equal 'ok', %q{
- r = Ractor.new do
- [$stdin, $stdout, $stderr].map{|io|
- [io.object_id, io.fileno]
- }
- end
-
- [$stdin, $stdout, $stderr].zip(r.take){|io, (oid, fno)|
- raise "should not be different object" if io.object_id == oid
- raise "fd should be same" unless io.fileno == fno
- }
- 'ok'
-}
-
-# $stdin,out,err belong to Ractor
-assert_equal 'ok', %q{
- r = Ractor.new do
- $stdin.itself
- $stdout.itself
- $stderr.itself
- 'ok'
- end
-
- r.take
-}
-
-# $DEBUG, $VERBOSE are Ractor local
-assert_equal 'true', %q{
- $DEBUG = true
- $VERBOSE = true
-
- def ractor_local_globals
- /a(b)(c)d/ =~ 'abcd' # for $~
- `echo foo` unless /solaris/ =~ RUBY_PLATFORM
-
- {
- # ractor-local (derived from created ractor): debug
- '$DEBUG' => $DEBUG,
- '$-d' => $-d,
-
- # ractor-local (derived from created ractor): verbose
- '$VERBOSE' => $VERBOSE,
- '$-w' => $-w,
- '$-W' => $-W,
- '$-v' => $-v,
-
- # process-local (readonly): other commandline parameters
- '$-p' => $-p,
- '$-l' => $-l,
- '$-a' => $-a,
-
- # process-local (readonly): getpid
- '$$' => $$,
-
- # thread local: process result
- '$?' => $?,
-
- # scope local: match
- '$~' => $~.inspect,
- '$&' => $&,
- '$`' => $`,
- '$\'' => $',
- '$+' => $+,
- '$1' => $1,
-
- # scope local: last line
- '$_' => $_,
-
- # scope local: last backtrace
- '$@' => $@,
- '$!' => $!,
-
- # ractor local: stdin, out, err
- '$stdin' => $stdin.inspect,
- '$stdout' => $stdout.inspect,
- '$stderr' => $stderr.inspect,
- }
- end
-
- h = Ractor.new do
- ractor_local_globals
- end.take
- ractor_local_globals == h #=> true
-}
-
-# selfs are different objects
-assert_equal 'false', %q{
- r = Ractor.new do
- self.object_id
- end
- r.take == self.object_id #=> false
-}
-
-# self is a Ractor instance
-assert_equal 'true', %q{
- r = Ractor.new do
- self.object_id
- end
- r.object_id == r.take #=> true
-}
-
-# given block Proc will be isolated, so can not access outer variables.
-assert_equal 'ArgumentError', %q{
- begin
- a = true
- r = Ractor.new do
- a
- end
- rescue => e
- e.class
- end
-}
-
-# ivar in shareable-objects are not allowed to access from non-main Ractor
-assert_equal "can not get unshareable values from instance variables of classes/modules from non-main Ractors", %q{
- class C
- @iv = 'str'
- end
-
- r = Ractor.new do
- class C
- p @iv
- end
- end
-
-
- begin
- r.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# ivar in shareable-objects are not allowed to access from non-main Ractor
-assert_equal 'can not access instance variables of shareable objects from non-main Ractors', %q{
- shared = Ractor.new{}
- shared.instance_variable_set(:@iv, 'str')
-
- r = Ractor.new shared do |shared|
- p shared.instance_variable_get(:@iv)
- end
-
- begin
- r.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# ivar in shareable-objects are not allowed to access from non-main Ractor, by @iv (get)
-assert_equal 'can not access instance variables of shareable objects from non-main Ractors', %q{
- class Ractor
- def setup
- @foo = ''
- end
-
- def foo
- @foo
- end
- end
-
- shared = Ractor.new{}
- shared.setup
-
- r = Ractor.new shared do |shared|
- p shared.foo
- end
-
- begin
- r.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# ivar in shareable-objects are not allowed to access from non-main Ractor, by @iv (set)
-assert_equal 'can not access instance variables of shareable objects from non-main Ractors', %q{
- class Ractor
- def setup
- @foo = ''
- end
- end
-
- shared = Ractor.new{}
-
- r = Ractor.new shared do |shared|
- p shared.setup
- end
-
- begin
- r.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# But a shareable object is frozen, it is allowed to access ivars from non-main Ractor
-assert_equal '11', %q{
- [Object.new, [], ].map{|obj|
- obj.instance_variable_set('@a', 1)
- Ractor.make_shareable obj = obj.freeze
-
- Ractor.new obj do |obj|
- obj.instance_variable_get('@a')
- end.take.to_s
- }.join
-}
-
-# and instance variables of classes/modules are accessible if they refer shareable objects
-assert_equal '333', %q{
- class C
- @int = 1
- @str = '-1000'.dup
- @fstr = '100'.freeze
-
- def self.int = @int
- def self.str = @str
- def self.fstr = @fstr
- end
-
- module M
- @int = 2
- @str = '-2000'.dup
- @fstr = '200'.freeze
-
- def self.int = @int
- def self.str = @str
- def self.fstr = @fstr
- end
-
- a = Ractor.new{ C.int }.take
- b = Ractor.new do
- C.str.to_i
- rescue Ractor::IsolationError
- 10
- end.take
- c = Ractor.new do
- C.fstr.to_i
- end.take
-
- d = Ractor.new{ M.int }.take
- e = Ractor.new do
- M.str.to_i
- rescue Ractor::IsolationError
- 20
- end.take
- f = Ractor.new do
- M.fstr.to_i
- end.take
-
-
- # 1 + 10 + 100 + 2 + 20 + 200
- a + b + c + d + e + f
-}
-
-# cvar in shareable-objects are not allowed to access from non-main Ractor
-assert_equal 'can not access class variables from non-main Ractors', %q{
- class C
- @@cv = 'str'
- end
-
- r = Ractor.new do
- class C
- p @@cv
- end
- end
-
- begin
- r.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# also cached cvar in shareable-objects are not allowed to access from non-main Ractor
-assert_equal 'can not access class variables from non-main Ractors', %q{
- class C
- @@cv = 'str'
- def self.cv
- @@cv
- end
- end
-
- C.cv # cache
-
- r = Ractor.new do
- C.cv
- end
-
- begin
- r.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# Getting non-shareable objects via constants by other Ractors is not allowed
-assert_equal 'can not access non-shareable objects in constant C::CONST by non-main Ractor.', %q{
- class C
- CONST = 'str'
- end
- r = Ractor.new do
- C::CONST
- end
- begin
- r.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# Constant cache should care about non-sharable constants
-assert_equal "can not access non-shareable objects in constant Object::STR by non-main Ractor.", %q{
- STR = "hello"
- def str; STR; end
- s = str() # fill const cache
- begin
- Ractor.new{ str() }.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# Setting non-shareable objects into constants by other Ractors is not allowed
-assert_equal 'can not set constants with non-shareable objects by non-main Ractors', %q{
- class C
- end
- r = Ractor.new do
- C::CONST = 'str'
- end
- begin
- r.take
- rescue Ractor::RemoteError => e
- e.cause.message
- end
-}
-
-# define_method is not allowed
-assert_equal "defined with an un-shareable Proc in a different Ractor", %q{
- str = "foo"
- define_method(:buggy){|i| str << "#{i}"}
- begin
- Ractor.new{buggy(10)}.take
- rescue => e
- e.cause.message
- end
-}
-
-# Immutable Array and Hash are shareable, so it can be shared with constants
-assert_equal '[1000, 3]', %q{
- A = Array.new(1000).freeze # [nil, ...]
- H = {a: 1, b: 2, c: 3}.freeze
-
- Ractor.new{ [A.size, H.size] }.take
-}
-
-# Ractor.count
-assert_equal '[1, 4, 3, 2, 1]', %q{
- counts = []
- counts << Ractor.count
- ractors = (1..3).map { Ractor.new { Ractor.receive } }
- counts << Ractor.count
-
- ractors[0].send('End 0').take
- sleep 0.1 until ractors[0].inspect =~ /terminated/
- counts << Ractor.count
-
- ractors[1].send('End 1').take
- sleep 0.1 until ractors[1].inspect =~ /terminated/
- counts << Ractor.count
-
- ractors[2].send('End 2').take
- sleep 0.1 until ractors[2].inspect =~ /terminated/
- counts << Ractor.count
-
- counts.inspect
-}
-
-# ObjectSpace.each_object can not handle unshareable objects with Ractors
-assert_equal '0', %q{
- Ractor.new{
- n = 0
- ObjectSpace.each_object{|o| n += 1 unless Ractor.shareable?(o)}
- n
- }.take
-}
-
-# ObjectSpace._id2ref can not handle unshareable objects with Ractors
-assert_equal 'ok', %q{
- s = 'hello'
-
- Ractor.new s.object_id do |id ;s|
- begin
- s = ObjectSpace._id2ref(id)
- rescue => e
- :ok
- end
- end.take
-}
-
-# Ractor.make_shareable(obj)
-assert_equal 'true', %q{
- class C
- def initialize
- @a = 'foo'
- @b = 'bar'
- end
-
- def freeze
- @c = [:freeze_called]
- super
- end
-
- attr_reader :a, :b, :c
- end
- S = Struct.new(:s1, :s2)
- str = "hello"
- str.instance_variable_set("@iv", "hello")
- /a/ =~ 'a'
- m = $~
- class N < Numeric
- def /(other)
- 1
- end
- end
- ary = []; ary << ary
-
- a = [[1, ['2', '3']],
- {Object.new => "hello"},
- C.new,
- S.new("x", "y"),
- ("a".."b"),
- str,
- ary, # cycle
- /regexp/,
- /#{'r'.upcase}/,
- m,
- Complex(N.new,0),
- Rational(N.new,0),
- true,
- false,
- nil,
- 1, 1.2, 1+3r, 1+4i, # Numeric
- ]
- Ractor.make_shareable(a)
-
- # check all frozen
- a.each{|o|
- raise o.inspect unless o.frozen?
-
- case o
- when C
- raise o.a.inspect unless o.a.frozen?
- raise o.b.inspect unless o.b.frozen?
- raise o.c.inspect unless o.c.frozen? && o.c == [:freeze_called]
- when Rational
- raise o.numerator.inspect unless o.numerator.frozen?
- when Complex
- raise o.real.inspect unless o.real.frozen?
- when Array
- if o[0] == 1
- raise o[1][1].inspect unless o[1][1].frozen?
- end
- when Hash
- o.each{|k, v|
- raise k.inspect unless k.frozen?
- raise v.inspect unless v.frozen?
- }
- end
- }
-
- Ractor.shareable?(a)
-}
-
-# Ractor.make_shareable(obj) doesn't freeze shareable objects
-assert_equal 'true', %q{
- r = Ractor.new{}
- Ractor.make_shareable(a = [r])
- [a.frozen?, a[0].frozen?] == [true, false]
-}
-
-# Ractor.make_shareable(a_proc) makes a proc shareable.
-assert_equal 'true', %q{
- a = [1, [2, 3], {a: "4"}]
-
- pr = Ractor.current.instance_eval do
- Proc.new do
- a
- end
- end
-
- Ractor.make_shareable(a) # referred value should be shareable
- Ractor.make_shareable(pr)
- Ractor.shareable?(pr)
-}
-
-# Ractor.shareable?(recursive_objects)
-assert_equal '[false, false]', %q{
- y = []
- x = [y, {}].freeze
- y << x
- y.freeze
- [Ractor.shareable?(x), Ractor.shareable?(y)]
-}
-
-# Ractor.make_shareable(recursive_objects)
-assert_equal '[:ok, false, false]', %q{
- o = Object.new
- def o.freeze; raise; end
- y = []
- x = [y, o].freeze
- y << x
- y.freeze
- [(Ractor.make_shareable(x) rescue :ok), Ractor.shareable?(x), Ractor.shareable?(y)]
-}
-
-# Ractor.make_shareable with Class/Module
-assert_equal '[C, M]', %q{
- class C; end
- module M; end
-
- Ractor.make_shareable(ary = [C, M])
-}
-
-# define_method() can invoke different Ractor's proc if the proc is shareable.
-assert_equal '1', %q{
- class C
- a = 1
- define_method "foo", Ractor.make_shareable(Proc.new{ a })
- a = 2
- end
-
- Ractor.new{ C.new.foo }.take
-}
-
-# Ractor.make_shareable(a_proc) makes a proc shareable.
-assert_equal 'can not make a Proc shareable because it accesses outer variables (a).', %q{
- a = b = nil
- pr = Ractor.current.instance_eval do
- Proc.new do
- c = b # assign to a is okay because c is block local variable
- # reading b is okay
- a = b # assign to a is not allowed #=> Ractor::Error
- end
- end
-
- begin
- Ractor.make_shareable(pr)
- rescue => e
- e.message
- end
-}
-
-# Ractor.make_shareable(obj, copy: true) makes copied shareable object.
-assert_equal '[false, false, true, true]', %q{
- r = []
- o1 = [1, 2, ["3"]]
-
- o2 = Ractor.make_shareable(o1, copy: true)
- r << Ractor.shareable?(o1) # false
- r << (o1.object_id == o2.object_id) # false
-
- o3 = Ractor.make_shareable(o1)
- r << Ractor.shareable?(o1) # true
- r << (o1.object_id == o3.object_id) # false
- r
-}
-
-# TracePoint with normal Proc should be Ractor local
-assert_equal '[4, 8]', %q{
- rs = []
- TracePoint.new(:line){|tp| rs << tp.lineno if tp.path == __FILE__}.enable do
- Ractor.new{ # line 4
- a = 1
- b = 2
- }.take
- c = 3 # line 8
- end
- rs
-}
-
-# Ractor deep copies frozen objects (ary)
-assert_equal '[true, false]', %q{
- Ractor.new([[]].freeze) { |ary|
- [ary.frozen?, ary.first.frozen? ]
- }.take
-}
-
-# Ractor deep copies frozen objects (str)
-assert_equal '[true, false]', %q{
- s = String.new.instance_eval { @x = []; freeze}
- Ractor.new(s) { |s|
- [s.frozen?, s.instance_variable_get(:@x).frozen?]
- }.take
-}
-
-# Can not trap with not isolated Proc on non-main ractor
-assert_equal '[:ok, :ok]', %q{
- a = []
- Ractor.new{
- trap(:INT){p :ok}
- }.take
- a << :ok
-
- begin
- Ractor.new{
- s = 'str'
- trap(:INT){p s}
- }.take
- rescue => Ractor::RemoteError
- a << :ok
- end
-}
-
-# Ractor-local storage
-assert_equal '[nil, "b", "a"]', %q{
- ans = []
- Ractor.current[:key] = 'a'
- r = Ractor.new{
- Ractor.yield self[:key]
- self[:key] = 'b'
- self[:key]
- }
- ans << r.take
- ans << r.take
- ans << Ractor.current[:key]
-}
-
-###
-### Synchronization tests
-###
-
-N = 100_000
-
-# fstring pool
-assert_equal "#{N}#{N}", %Q{
- N = #{N}
- 2.times.map{
- Ractor.new{
- N.times{|i| -(i.to_s)}
- }
- }.map{|r| r.take}.join
-}
-
-# Generic ivtbl
-n = N/2
-assert_equal "#{n}#{n}", %Q{
- 2.times.map{
- Ractor.new do
- #{n}.times do
- obj = ''
- obj.instance_variable_set("@a", 1)
- obj.instance_variable_set("@b", 1)
- obj.instance_variable_set("@c", 1)
- obj.instance_variable_defined?("@a")
- end
- end
- }.map{|r| r.take}.join
-}
-
-# NameError
-assert_equal "ok", %q{
- obj = "".freeze # NameError refers the receiver indirectly
- begin
- obj.bar
- rescue => err
- end
- begin
- Ractor.new{} << err
- rescue TypeError
- 'ok'
- end
-}
-
-assert_equal "ok", %q{
- GC.disable
- Ractor.new {}
- raise "not ok" unless GC.disable
-
- foo = []
- 10.times { foo << 1 }
-
- GC.start
-
- 'ok'
-}
-
-# Can yield back values while GC is sweeping [Bug #18117]
-assert_equal "ok", %q{
- workers = (0...8).map do
- Ractor.new do
- loop do
- 10_000.times.map { Object.new }
- Ractor.yield Time.now
- end
- end
- end
-
- 1_000.times { idle_worker, tmp_reporter = Ractor.select(*workers) }
- "ok"
-} unless ENV['RUN_OPTS'] =~ /rjit/ # flaky
-
-assert_equal "ok", %q{
- def foo(*); ->{ super }; end
- begin
- Ractor.make_shareable(foo)
- rescue Ractor::IsolationError
- "ok"
- end
-}
-
-assert_equal "ok", %q{
- def foo(**); ->{ super }; end
- begin
- Ractor.make_shareable(foo)
- rescue Ractor::IsolationError
- "ok"
- end
-}
-
-assert_equal "ok", %q{
- def foo(...); ->{ super }; end
- begin
- Ractor.make_shareable(foo)
- rescue Ractor::IsolationError
- "ok"
- end
-}
-
-assert_equal "ok", %q{
- def foo((x), (y)); ->{ super }; end
- begin
- Ractor.make_shareable(foo([], []))
- rescue Ractor::IsolationError
- "ok"
- end
-}
-
-# check method cache invalidation
-assert_equal "ok", %q{
- module M
- def foo
- @foo
- end
- end
-
- class A
- include M
-
- def initialize
- 100.times { |i| instance_variable_set(:"@var_#{i}", "bad: #{i}") }
- @foo = 2
- end
- end
-
- class B
- include M
-
- def initialize
- @foo = 1
- end
- end
-
- Ractor.new do
- b = B.new
- 100_000.times do
- raise unless b.foo == 1
- end
- end
-
- a = A.new
- 100_000.times do
- raise unless a.foo == 2
- end
-
- "ok"
-}
-
-# check method cache invalidation
-assert_equal 'true', %q{
- class C1; def self.foo = 1; end
- class C2; def self.foo = 2; end
- class C3; def self.foo = 3; end
- class C4; def self.foo = 5; end
- class C5; def self.foo = 7; end
- class C6; def self.foo = 11; end
- class C7; def self.foo = 13; end
- class C8; def self.foo = 17; end
-
- LN = 10_000
- RN = 10
- CS = [C1, C2, C3, C4, C5, C6, C7, C8]
- rs = RN.times.map{|i|
- Ractor.new(CS.shuffle){|cs|
- LN.times.sum{
- cs.inject(1){|r, c| r * c.foo} # c.foo invalidates method cache entry
- }
- }
- }
-
- n = CS.inject(1){|r, c| r * c.foo} * LN
- rs.map{|r| r.take} == Array.new(RN){n}
-}
-
-# check experimental warning
-assert_match /\Atest_ractor\.rb:1:\s+warning:\s+Ractor is experimental/, %q{
- Warning[:experimental] = $VERBOSE = true
- STDERR.reopen(STDOUT)
- eval("Ractor.new{}.take", nil, "test_ractor.rb", 1)
-}
-
-## Ractor::Selector
-
-# Selector#empty? returns true
-assert_equal 'true', %q{
- s = Ractor::Selector.new
- s.empty?
-}
-
-# Selector#empty? returns false if there is target ractors
-assert_equal 'false', %q{
- s = Ractor::Selector.new
- s.add Ractor.new{}
- s.empty?
-}
-
-# Selector#clear removes all ractors from the waiting list
-assert_equal 'true', %q{
- s = Ractor::Selector.new
- s.add Ractor.new{10}
- s.add Ractor.new{20}
- s.clear
- s.empty?
-}
-
-# Selector#wait can wait multiple ractors
-assert_equal '[10, 20, true]', %q{
- s = Ractor::Selector.new
- s.add Ractor.new{10}
- s.add Ractor.new{20}
- r, v = s.wait
- vs = []
- vs << v
- r, v = s.wait
- vs << v
- [*vs.sort, s.empty?]
-}
-
-# Selector#wait can wait multiple ractors with receiving.
-assert_equal '30', %q{
- RN = 30
- rs = RN.times.map{
- Ractor.new{ :v }
- }
- s = Ractor::Selector.new(*rs)
-
- results = []
- until s.empty?
- results << s.wait
-
- # Note that s.wait can raise an exception because other Ractors/Threads
- # can take from the same ractors in the waiting set.
- # In this case there is no other takers so `s.wait` doesn't raise an error.
- end
-
- results.size
-}
-
-# Selector#wait can support dynamic addition
-yjit_enabled = ENV.key?('RUBY_YJIT_ENABLE') || ENV.fetch('RUN_OPTS', '').include?('yjit') || BT.ruby.include?('yjit')
-assert_equal '600', %q{
- RN = 100
- s = Ractor::Selector.new
- rs = RN.times.map{
- Ractor.new{
- Ractor.main << Ractor.new{ Ractor.yield :v3; :v4 }
- Ractor.main << Ractor.new{ Ractor.yield :v5; :v6 }
- Ractor.yield :v1
- :v2
- }
- }
-
- rs.each{|r| s.add(r)}
- h = {v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0}
-
- loop do
- case s.wait receive: true
- in :receive, r
- s.add r
- in r, v
- h[v] += 1
- break if h.all?{|k, v| v == RN}
- end
- end
-
- h.sum{|k, v| v}
-} unless yjit_enabled # http://ci.rvm.jp/results/trunk-yjit@ruby-sp2-docker/4466770
-
-# Selector should be GCed (free'ed) withtou trouble
-assert_equal 'ok', %q{
- RN = 30
- rs = RN.times.map{
- Ractor.new{ :v }
- }
- s = Ractor::Selector.new(*rs)
- :ok
-}
-
-end # if !ENV['GITHUB_WORKFLOW']
diff --git a/bootstraptest/test_rjit.rb b/bootstraptest/test_rjit.rb
deleted file mode 100644
index 464af7a6e6..0000000000
--- a/bootstraptest/test_rjit.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-# VM_CALL_OPT_SEND + VM_METHOD_TYPE_ATTRSET
-assert_equal '1', %q{
- class Foo
- attr_writer :foo
-
- def bar
- send(:foo=, 1)
- end
- end
-
- Foo.new.bar
-}
-
-# VM_CALL_OPT_SEND + OPTIMIZED_METHOD_TYPE_CALL
-assert_equal 'foo', %q{
- def bar(&foo)
- foo.send(:call)
- end
-
- bar { :foo }
-}
-
-# VM_CALL_OPT_SEND + OPTIMIZED_METHOD_TYPE_STRUCT_AREF
-assert_equal 'bar', %q{
- def bar(foo)
- foo.send(:bar)
- end
-
- bar(Struct.new(:bar).new(:bar))
-}
-
-# kwargs default w/ checkkeyword + locals (which shouldn't overwrite unspecified_bits)
-assert_equal '1', %q{
- def foo(bar: 1.to_s)
- _ = 1
- bar
- end
-
- def entry
- foo
- end
-
- entry
-}
diff --git a/bootstraptest/test_syntax.rb b/bootstraptest/test_syntax.rb
index 948e2d7809..a111990a1f 100644
--- a/bootstraptest/test_syntax.rb
+++ b/bootstraptest/test_syntax.rb
@@ -268,10 +268,8 @@ assert_equal %q{}, %q{
defined?(@@a)
}
assert_equal %q{class variable}, %q{
- class A
- @@a = 1
- defined?(@@a)
- end
+ @@a = 1
+ defined?(@@a)
}
assert_equal %q{}, %q{
defined?($a)
@@ -628,7 +626,7 @@ assert_equal '2', %q{
}
assert_match /invalid multibyte char/, %q{
- $stderr = STDOUT
+ STDERR.reopen(STDOUT)
eval("\"\xf0".force_encoding("utf-8"))
}, '[ruby-dev:32429]'
diff --git a/bootstraptest/test_thread.rb b/bootstraptest/test_thread.rb
index d7d19e97c9..d16295de8b 100644
--- a/bootstraptest/test_thread.rb
+++ b/bootstraptest/test_thread.rb
@@ -1,14 +1,4 @@
-show_limit %q{
- threads = []
- begin
- threads << Thread.new{sleep}
-
- raise Exception, "skipping" if threads.count >= 10_000
- rescue Exception => error
- puts "Thread count: #{threads.count} (#{error})"
- break
- end while true
-} if false # disable to pass CI
+# Thread and Fiber
assert_equal %q{ok}, %q{
Thread.new{
@@ -46,7 +36,7 @@ begin
}
}
rescue ThreadError => e
- /can't create Thread/ =~ e.message ? :ok : e.message
+ :ok if /can't create Thread/ =~ e.message
end
}
assert_equal %q{ok}, %q{
@@ -60,7 +50,7 @@ begin
}
}
rescue ThreadError => e
- /can't create Thread/ =~ e.message ? :ok : e.message
+ :ok if /can't create Thread/ =~ e.message
end
}
assert_equal %q{ok}, %q{
@@ -243,7 +233,7 @@ assert_equal 'true', %{
}
assert_equal 'ok', %{
- open("zzz_t1.rb", "w") do |f|
+ open("zzz.rb", "w") do |f|
f.puts <<-END
begin
Thread.new { fork { GC.start } }.join
@@ -254,7 +244,7 @@ assert_equal 'ok', %{
end
END
end
- require "./zzz_t1.rb"
+ require "./zzz.rb"
$result
}
@@ -309,6 +299,10 @@ assert_equal 'ok', %q{
}, '[ruby-dev:34492]'
assert_normal_exit %q{
+ at_exit { Fiber.new{}.resume }
+}
+
+assert_normal_exit %q{
g = enum_for(:local_variables)
loop { g.next }
}, '[ruby-dev:34128]'
@@ -334,6 +328,10 @@ assert_normal_exit %q{
}, '[ruby-dev:34128]'
assert_normal_exit %q{
+ Fiber.new(&Object.method(:class_eval)).resume("foo")
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
Thread.new("foo", &Object.method(:class_eval)).join
}, '[ruby-dev:34128]'
@@ -408,7 +406,7 @@ assert_equal 'ok', %q{
}
assert_equal 'ok', %{
- open("zzz_t2.rb", "w") do |f|
+ open("zzz.rb", "w") do |f|
f.puts <<-'end;' # do
begin
m = Thread::Mutex.new
@@ -432,7 +430,7 @@ assert_equal 'ok', %{
end
end;
end
- require "./zzz_t2.rb"
+ require "./zzz.rb"
$result
}
@@ -483,18 +481,4 @@ assert_equal 'foo', %q{
[th1, th2].each {|t| t.join }
GC.start
f.call.source
-} unless ENV['RUN_OPTS'] =~ /rjit/ # flaky
-assert_normal_exit %q{
- class C
- def inspect
- sleep 0.5
- 'C!!'
- end
- end
- Thread.new{
- loop{
- p C.new
- }
- }
- sleep 0.1
-}, timeout: 5
+}
diff --git a/bootstraptest/test_yjit.rb b/bootstraptest/test_yjit.rb
deleted file mode 100644
index a6525e7af9..0000000000
--- a/bootstraptest/test_yjit.rb
+++ /dev/null
@@ -1,3965 +0,0 @@
-# Regression test for GC mishap while doing shape transition
-assert_equal '[:ok]', %q{
- # [Bug #19601]
- class RegressionTest
- def initialize
- @a = @b = @fourth_ivar_does_shape_transition = nil
- end
-
- def extender
- @first_extended_ivar = [:ok]
- end
- end
-
- GC.stress = true
-
- # Used to crash due to GC run in rb_ensure_iv_list_size()
- # not marking the newly allocated [:ok].
- RegressionTest.new.extender.itself
-} unless RUBY_DESCRIPTION.include?('+RJIT') # Skip on RJIT since this uncovers a crash
-
-assert_equal 'true', %q{
- # regression test for tracking type of locals for too long
- def local_setting_cmp(five)
- victim = 5
- five.define_singleton_method(:respond_to?) do |_, _|
- victim = nil
- end
-
- # +1 makes YJIT track that victim is a number and
- # defined? calls respond_to? from above indirectly
- unless (victim + 1) && defined?(five.something)
- # Would return wrong result if we still think `five` is a number
- victim.nil?
- end
- end
-
- local_setting_cmp(Object.new)
- local_setting_cmp(Object.new)
-}
-
-assert_equal '18374962167983112447', %q{
- # regression test for incorrectly discarding 32 bits of a pointer when it
- # comes to default values.
- def large_literal_default(n: 0xff00_fabcafe0_00ff)
- n
- end
-
- def call_graph_root
- large_literal_default
- end
-
- call_graph_root
- call_graph_root
-}
-
-assert_normal_exit %q{
- # regression test for a leak caught by an assert on --yjit-call-threshold=2
- Foo = 1
-
- eval("def foo = [#{(['Foo,']*256).join}]")
-
- foo
- foo
-
- Object.send(:remove_const, :Foo)
-}
-
-assert_normal_exit %q{
- # Test to ensure send on overriden c functions
- # doesn't corrupt the stack
- class Bar
- def bar(x)
- x
- end
- end
-
- class Foo
- def bar
- Bar.new
- end
- end
-
- foo = Foo.new
- # before this change, this line would error
- # because "s" would still be on the stack
- # String.to_s is the overridden method here
- p foo.bar.bar("s".__send__(:to_s))
-}
-
-
-assert_equal '[nil, nil, nil, nil, nil, nil]', %q{
- [NilClass, TrueClass, FalseClass, Integer, Float, Symbol].each do |klass|
- klass.class_eval("def foo = @foo")
- end
-
- [nil, true, false, 0xFABCAFE, 0.42, :cake].map do |instance|
- instance.foo
- instance.foo
- end
-}
-
-assert_equal '[nil, nil, nil, nil, nil, nil]', %q{
- # Tests defined? on non-heap objects
- [NilClass, TrueClass, FalseClass, Integer, Float, Symbol].each do |klass|
- klass.class_eval("def foo = defined?(@foo)")
- end
-
- [nil, true, false, 0xFABCAFE, 0.42, :cake].map do |instance|
- instance.foo
- instance.foo
- end
-}
-
-assert_equal '[nil, "instance-variable", nil, "instance-variable"]', %q{
- # defined? on object that changes shape between calls
- class Foo
- def foo
- defined?(@foo)
- end
-
- def add
- @foo = 1
- end
-
- def remove
- self.remove_instance_variable(:@foo)
- end
- end
-
- obj = Foo.new
- [obj.foo, (obj.add; obj.foo), (obj.remove; obj.foo), (obj.add; obj.foo)]
-}
-
-assert_equal '["instance-variable", 5]', %q{
- # defined? on object too complex for shape information
- class Foo
- def initialize
- 100.times { |i| instance_variable_set("@foo#{i}", i) }
- end
-
- def foo
- [defined?(@foo5), @foo5]
- end
- end
-
- Foo.new.foo
-}
-
-assert_equal '0', %q{
- # This is a regression test for incomplete invalidation from
- # opt_setinlinecache. This test might be brittle, so
- # feel free to remove it in the future if it's too annoying.
- # This test assumes --yjit-call-threshold=2.
- module M
- Foo = 1
- def foo
- Foo
- end
-
- def pin_self_type_then_foo
- _ = @foo
- foo
- end
-
- def only_ints
- 1 + self
- foo
- end
- end
-
- class Integer
- include M
- end
-
- class Sub
- include M
- end
-
- foo_method = M.instance_method(:foo)
-
- dbg = ->(message) do
- return # comment this out to get printouts
-
- $stderr.puts RubyVM::YJIT.disasm(foo_method)
- $stderr.puts message
- end
-
- 2.times { 42.only_ints }
-
- dbg["There should be two versions of getinlineache"]
-
- module M
- remove_const(:Foo)
- end
-
- dbg["There should be no getinlinecaches"]
-
- 2.times do
- 42.only_ints
- rescue NameError => err
- _ = "caught name error #{err}"
- end
-
- dbg["There should be one version of getinlineache"]
-
- 2.times do
- Sub.new.pin_self_type_then_foo
- rescue NameError
- _ = 'second specialization'
- end
-
- dbg["There should be two versions of getinlineache"]
-
- module M
- Foo = 1
- end
-
- dbg["There should still be two versions of getinlineache"]
-
- 42.only_ints
-
- dbg["There should be no getinlinecaches"]
-
- # Find name of the first VM instruction in M#foo.
- insns = RubyVM::InstructionSequence.of(foo_method).to_a
- if defined?(RubyVM::YJIT.blocks_for) && (insns.last.find { Array === _1 }&.first == :opt_getinlinecache)
- RubyVM::YJIT.blocks_for(RubyVM::InstructionSequence.of(foo_method))
- .filter { _1.iseq_start_index == 0 }.count
- else
- 0 # skip the test
- end
-}
-
-# Check that frozen objects are respected
-assert_equal 'great', %q{
- class Foo
- attr_accessor :bar
- def initialize
- @bar = 1
- freeze
- end
- end
-
- foo = Foo.new
-
- 5.times do
- begin
- foo.bar = 2
- rescue FrozenError
- end
- end
-
- foo.bar == 1 ? "great" : "NG"
-}
-
-# Check that global variable set works
-assert_equal 'string', %q{
- def foo
- $foo = "string"
- end
-
- foo
-}
-
-# Check that exceptions work when setting global variables
-assert_equal 'rescued', %q{
- def set_var
- $var = 100
- rescue
- :rescued
- end
-
- set_var
- trace_var(:$var) { raise }
- set_var
-}
-
-# Check that global variables work
-assert_equal 'string', %q{
- $foo = "string"
-
- def foo
- $foo
- end
-
- foo
-}
-
-# Check that exceptions work when getting global variable
-assert_equal 'rescued', %q{
- module Warning
- def warn(message)
- raise
- end
- end
-
- def get_var
- $=
- rescue
- :rescued
- end
-
- $VERBOSE = true
- get_var
- get_var
-}
-
-# Check that global tracepoints work
-assert_equal 'true', %q{
- def foo
- 1
- end
-
- foo
- foo
- foo
-
- called = false
-
- tp = TracePoint.new(:return) { |event|
- if event.method_id == :foo
- called = true
- end
- }
- tp.enable
- foo
- tp.disable
- called
-}
-
-# Check that local tracepoints work
-assert_equal 'true', %q{
- def foo
- 1
- end
-
- foo
- foo
- foo
-
- called = false
-
- tp = TracePoint.new(:return) { |_| called = true }
- tp.enable(target: method(:foo))
- foo
- tp.disable
- called
-}
-
-# Make sure that optional param methods return the correct value
-assert_equal '1', %q{
- def m(ary = [])
- yield(ary)
- end
-
- # Warm the JIT with a 0 param call
- 2.times { m { } }
- m(1) { |v| v }
-}
-
-# Test for topn
-assert_equal 'array', %q{
- def threequals(a)
- case a
- when Array
- "array"
- when Hash
- "hash"
- else
- "unknown"
- end
- end
-
- threequals([])
- threequals([])
- threequals([])
-}
-
-# Test for opt_mod
-assert_equal '2', %q{
- def mod(a, b)
- a % b
- end
-
- mod(7, 5)
- mod(7, 5)
-}
-
-# Test for opt_mult
-assert_equal '12', %q{
- def mult(a, b)
- a * b
- end
-
- mult(6, 2)
- mult(6, 2)
-}
-
-# Test for opt_div
-assert_equal '3', %q{
- def div(a, b)
- a / b
- end
-
- div(6, 2)
- div(6, 2)
-}
-
-# BOP redefined methods work when JIT compiled
-assert_equal 'false', %q{
- def less_than x
- x < 10
- end
-
- class Integer
- def < x
- false
- end
- end
-
- less_than 2
- less_than 2
- less_than 2
-}
-
-# BOP redefinition works on Integer#<
-assert_equal 'false', %q{
- def less_than x
- x < 10
- end
-
- less_than 2
- less_than 2
-
- class Integer
- def < x
- false
- end
- end
-
- less_than 2
-}
-
-# BOP redefinition works on Integer#<=
-assert_equal 'false', %q{
- def le(x, y) = x <= y
-
- le(2, 2)
-
- class Integer
- def <=(_) = false
- end
-
- le(2, 2)
-}
-
-# BOP redefinition works on Integer#>
-assert_equal 'false', %q{
- def gt(x, y) = x > y
-
- gt(3, 2)
-
- class Integer
- def >(_) = false
- end
-
- gt(3, 2)
-}
-
-# BOP redefinition works on Integer#>=
-assert_equal 'false', %q{
- def ge(x, y) = x >= y
-
- ge(2, 2)
-
- class Integer
- def >=(_) = false
- end
-
- ge(2, 2)
-}
-
-# Putobject, less-than operator, fixnums
-assert_equal '2', %q{
- def check_index(index)
- if 0x40000000 < index
- raise "wat? #{index}"
- end
- index
- end
- check_index 2
- check_index 2
-}
-
-# foo leaves a temp on the stack before the call
-assert_equal '6', %q{
- def bar
- return 5
- end
-
- def foo
- return 1 + bar
- end
-
- foo()
- retval = foo()
-}
-
-# Method with one arguments
-# foo leaves a temp on the stack before the call
-assert_equal '7', %q{
- def bar(a)
- return a + 1
- end
-
- def foo
- return 1 + bar(5)
- end
-
- foo()
- retval = foo()
-}
-
-# Method with two arguments
-# foo leaves a temp on the stack before the call
-assert_equal '0', %q{
- def bar(a, b)
- return a - b
- end
-
- def foo
- return 1 + bar(1, 2)
- end
-
- foo()
- retval = foo()
-}
-
-# Passing argument types to callees
-assert_equal '8.5', %q{
- def foo(x, y)
- x + y
- end
-
- def bar
- foo(7, 1.5)
- end
-
- bar
- bar
-}
-
-# Recursive Ruby-to-Ruby calls
-assert_equal '21', %q{
- def fib(n)
- if n < 2
- return n
- end
-
- return fib(n-1) + fib(n-2)
- end
-
- r = fib(8)
-}
-
-# Ruby-to-Ruby call and C call
-assert_normal_exit %q{
- def bar
- puts('hi!')
- end
-
- def foo
- bar
- end
-
- foo()
- foo()
-}
-
-# Method aliasing
-assert_equal '42', %q{
- class Foo
- def method_a
- 42
- end
-
- alias method_b method_a
-
- def method_a
- :somethingelse
- end
- end
-
- @obj = Foo.new
-
- def test
- @obj.method_b
- end
-
- test
- test
-}
-
-# Method aliasing with method from parent class
-assert_equal '777', %q{
- class A
- def method_a
- 777
- end
- end
-
- class B < A
- alias method_b method_a
- end
-
- @obj = B.new
-
- def test
- @obj.method_b
- end
-
- test
- test
-}
-
-# The hash method is a C function and uses the self argument
-assert_equal 'true', %q{
- def lehashself
- hash
- end
-
- a = lehashself
- b = lehashself
- a == b
-}
-
-# Method redefinition (code invalidation) test
-assert_equal '1', %q{
- def ret1
- return 1
- end
-
- klass = Class.new do
- def alias_then_hash(klass, method_to_redefine)
- # Redefine the method to be ret1
- klass.alias_method(method_to_redefine, :ret1)
- hash
- end
- end
-
- instance = klass.new
-
- i = 0
- while i < 12
- if i < 11
- # Redefine the bar method
- instance.alias_then_hash(klass, :bar)
- else
- # Redefine the hash method to be ret1
- retval = instance.alias_then_hash(klass, :hash)
- end
- i += 1
- end
-
- retval
-}
-
-# Code invalidation and opt_getinlinecache
-assert_normal_exit %q{
- class Foo; end
-
- # Uses the class constant Foo
- def use_constant(arg)
- [Foo.new, arg]
- end
-
- def propagate_type
- i = Array.new
- i.itself # make it remember that i is on-heap
- use_constant(i)
- end
-
- propagate_type
- propagate_type
- use_constant(Foo.new)
- class Jo; end # bump global constant state
- use_constant(3)
-}
-
-# Method redefinition (code invalidation) and GC
-assert_equal '7', %q{
- def bar()
- return 5
- end
-
- def foo()
- bar()
- end
-
- foo()
- foo()
-
- def bar()
- return 7
- end
-
- 4.times { GC.start }
-
- foo()
- foo()
-}
-
-# Method redefinition with two block versions
-assert_equal '7', %q{
- def bar()
- return 5
- end
-
- def foo(n)
- return ((n < 5)? 5:false), bar()
- end
-
- foo(4)
- foo(4)
- foo(10)
- foo(10)
-
- def bar()
- return 7
- end
-
- 4.times { GC.start }
-
- foo(4)
- foo(4)[1]
-}
-
-# Method redefinition while the method is on the stack
-assert_equal '[777, 1]', %q{
- def foo
- redef()
- 777
- end
-
- def redef
- # Redefine the global foo
- eval("def foo; 1; end", TOPLEVEL_BINDING)
-
- # Collect dead code
- GC.stress = true
- GC.start
-
- # But we will return to the original foo,
- # which remains alive because it's on the stack
- end
-
- # Must produce [777, 1]
- [foo, foo]
-}
-
-# Test for GC safety. Don't invalidate dead iseqs.
-assert_normal_exit %q{
- Class.new do
- def foo
- itself
- end
-
- new.foo
- new.foo
- new.foo
- new.foo
- end
-
- 4.times { GC.start }
- def itself
- self
- end
-}
-
-# test setinstancevariable on extended objects
-assert_equal '1', %q{
- class Extended
- attr_reader :one
-
- def write_many
- @a = 1
- @b = 2
- @c = 3
- @d = 4
- @one = 1
- end
- end
-
- foo = Extended.new
- foo.write_many
- foo.write_many
- foo.write_many
-}
-
-# test setinstancevariable on embedded objects
-assert_equal '1', %q{
- class Embedded
- attr_reader :one
-
- def write_one
- @one = 1
- end
- end
-
- foo = Embedded.new
- foo.write_one
- foo.write_one
- foo.write_one
-}
-
-# test setinstancevariable after extension
-assert_equal '[10, 11, 12, 13, 1]', %q{
- class WillExtend
- attr_reader :one
-
- def make_extended
- @foo1 = 10
- @foo2 = 11
- @foo3 = 12
- @foo4 = 13
- end
-
- def write_one
- @one = 1
- end
-
- def read_all
- [@foo1, @foo2, @foo3, @foo4, @one]
- end
- end
-
- foo = WillExtend.new
- foo.write_one
- foo.write_one
- foo.make_extended
- foo.write_one
- foo.read_all
-}
-
-# test setinstancevariable on frozen object
-assert_equal 'object was not modified', %q{
- class WillFreeze
- def write
- @ivar = 1
- end
- end
-
- wf = WillFreeze.new
- wf.write
- wf.write
- wf.freeze
-
- begin
- wf.write
- rescue FrozenError
- "object was not modified"
- end
-}
-
-# Test getinstancevariable and inline caches
-assert_equal '6', %q{
- class Foo
- def initialize
- @x1 = 1
- @x2 = 1
- @x2 = 1
- @x3 = 1
- @x4 = 3
- end
-
- def bar
- x = 1
- @x4 + @x4
- end
- end
-
- f = Foo.new
- f.bar
- f.bar
-}
-
-# Test that getinstancevariable codegen checks for extended table size
-assert_equal "nil\n", %q{
- class A
- def read
- @ins1000
- end
- end
-
- ins = A.new
- other = A.new
- 10.times { other.instance_variable_set(:"@otr#{_1}", 'value') }
- 1001.times { ins.instance_variable_set(:"@ins#{_1}", 'value') }
-
- ins.read
- ins.read
- ins.read
-
- p other.read
-}
-
-# Test that opt_aref checks the class of the receiver
-assert_equal 'special', %q{
- def foo(array)
- array[30]
- end
-
- foo([])
- foo([])
-
- special = []
- def special.[](idx)
- 'special'
- end
-
- foo(special)
-}
-
-# Test that object references in generated code get marked and moved
-assert_equal "good", %q{
- def bar
- "good"
- end
-
- def foo
- bar
- end
-
- foo
- foo
-
- begin
- GC.verify_compaction_references(expand_heap: true, toward: :empty)
- rescue NotImplementedError
- # in case compaction isn't supported
- end
-
- foo
-}
-
-# Test polymorphic getinstancevariable. T_OBJECT -> T_STRING
-assert_equal 'ok', %q{
- @hello = @h1 = @h2 = @h3 = @h4 = 'ok'
- str = ""
- str.instance_variable_set(:@hello, 'ok')
-
- public def get
- @hello
- end
-
- get
- get
- str.get
- str.get
-}
-
-# Test polymorphic getinstancevariable, two different classes
-assert_equal 'ok', %q{
- class Embedded
- def initialize
- @ivar = 0
- end
-
- def get
- @ivar
- end
- end
-
- class Extended < Embedded
- def initialize
- @v1 = @v2 = @v3 = @v4 = @ivar = 'ok'
- end
- end
-
- embed = Embedded.new
- extend = Extended.new
-
- embed.get
- embed.get
- extend.get
- extend.get
-}
-
-# Test megamorphic getinstancevariable
-assert_equal 'ok', %q{
- parent = Class.new do
- def initialize
- @hello = @h1 = @h2 = @h3 = @h4 = 'ok'
- end
-
- def get
- @hello
- end
- end
-
- subclasses = 300.times.map { Class.new(parent) }
- subclasses.each { _1.new.get }
- parent.new.get
-}
-
-# Test polymorphic opt_aref. array -> hash
-assert_equal '[42, :key]', %q{
- def index(obj, idx)
- obj[idx]
- end
-
- index([], 0) # get over compilation threshold
-
- [
- index([42], 0),
- index({0=>:key}, 0),
- ]
-}
-
-# Test polymorphic opt_aref. hash -> array -> custom class
-assert_equal '[nil, nil, :custom]', %q{
- def index(obj, idx)
- obj[idx]
- end
-
- custom = Object.new
- def custom.[](_idx)
- :custom
- end
-
- index({}, 0) # get over compilation threshold
-
- [
- index({}, 0),
- index([], 0),
- index(custom, 0)
- ]
-}
-
-# Test polymorphic opt_aref. array -> custom class
-assert_equal '[42, :custom]', %q{
- def index(obj, idx)
- obj[idx]
- end
-
- custom = Object.new
- def custom.[](_idx)
- :custom
- end
-
- index([], 0) # get over compilation threshold
-
- [
- index([42], 0),
- index(custom, 0)
- ]
-}
-
-# Test custom hash method with opt_aref
-assert_equal '[nil, :ok]', %q{
- def index(obj, idx)
- obj[idx]
- end
-
- custom = Object.new
- def custom.hash
- 42
- end
-
- h = {custom => :ok}
-
- [
- index(h, 0),
- index(h, custom)
- ]
-}
-
-# Test default value block for Hash with opt_aref
-assert_equal '[42, :default]', %q{
- def index(obj, idx)
- obj[idx]
- end
-
- h = Hash.new { :default }
- h[0] = 42
-
- [
- index(h, 0),
- index(h, 1)
- ]
-}
-
-# A regression test for making sure cfp->sp is proper when
-# hitting stubs. See :stub-sp-flush:
-assert_equal 'ok', %q{
- class D
- def foo
- Object.new
- end
- end
-
- GC.stress = true
- 10.times do
- D.new.foo
- # ^
- # This hits a stub with sp_offset > 0
- end
-
- :ok
-}
-
-# Test polymorphic callsite, cfunc -> iseq
-assert_equal '[Cfunc, Iseq]', %q{
- public def call_itself
- itself # the polymorphic callsite
- end
-
- class Cfunc; end
-
- class Iseq
- def itself
- self
- end
- end
-
- call_itself # cross threshold
-
- [Cfunc.call_itself, Iseq.call_itself]
-}
-
-# Test polymorphic callsite, iseq -> cfunc
-assert_equal '[Iseq, Cfunc]', %q{
- public def call_itself
- itself # the polymorphic callsite
- end
-
- class Cfunc; end
-
- class Iseq
- def itself
- self
- end
- end
-
- call_itself # cross threshold
-
- [Iseq.call_itself, Cfunc.call_itself]
-}
-
-# attr_reader method
-assert_equal '[100, 299]', %q{
- class A
- attr_reader :foo
-
- def initialize
- @foo = 100
- end
-
- # Make it extended
- def fill!
- @bar = @jojo = @as = @sdfsdf = @foo = 299
- end
- end
-
- def bar(ins)
- ins.foo
- end
-
- ins = A.new
- oth = A.new
- oth.fill!
-
- bar(ins)
- bar(oth)
-
- [bar(ins), bar(oth)]
-}
-
-# get ivar on object, then on hash
-assert_equal '[42, 100]', %q{
- class Hash
- attr_accessor :foo
- end
-
- class A
- attr_reader :foo
-
- def initialize
- @foo = 42
- end
- end
-
- def use(val)
- val.foo
- end
-
-
- h = {}
- h.foo = 100
- obj = A.new
-
- use(obj)
- [use(obj), use(h)]
-}
-
-# get ivar on String
-assert_equal '[nil, nil, 42, 42]', %q{
- # @foo to exercise the getinstancevariable instruction
- public def get_foo
- @foo
- end
-
- get_foo
- get_foo # compile it for the top level object
-
- class String
- attr_reader :foo
- end
-
- def run
- str = String.new
-
- getter = str.foo
- insn = str.get_foo
-
- str.instance_variable_set(:@foo, 42)
-
- [getter, insn, str.foo, str.get_foo]
- end
-
- run
- run
-}
-
-# splatting an empty array on a getter
-assert_equal '42', %q{
- @foo = 42
- module Kernel
- attr_reader :foo
- end
-
- def run
- foo(*[])
- end
-
- run
- run
-}
-
-# splatting an empty array on a specialized method
-assert_equal 'ok', %q{
- def run
- "ok".to_s(*[])
- end
-
- run
- run
-}
-
-# splatting an single element array on a specialized method
-assert_equal '[1]', %q{
- def run
- [].<<(*[1])
- end
-
- run
- run
-}
-
-# specialized method with wrong args
-assert_equal 'ok', %q{
- def run(x)
- "bad".to_s(123) if x
- rescue
- :ok
- end
-
- run(false)
- run(true)
-}
-
-# getinstancevariable on Symbol
-assert_equal '[nil, nil]', %q{
- # @foo to exercise the getinstancevariable instruction
- public def get_foo
- @foo
- end
-
- dyn_sym = ("a" + "b").to_sym
- sym = :static
-
- # compile get_foo
- dyn_sym.get_foo
- dyn_sym.get_foo
-
- [dyn_sym.get_foo, sym.get_foo]
-}
-
-# attr_reader on Symbol
-assert_equal '[nil, nil]', %q{
- class Symbol
- attr_reader :foo
- end
-
- public def get_foo
- foo
- end
-
- dyn_sym = ("a" + "b").to_sym
- sym = :static
-
- # compile get_foo
- dyn_sym.get_foo
- dyn_sym.get_foo
-
- [dyn_sym.get_foo, sym.get_foo]
-}
-
-# passing too few arguments to method with optional parameters
-assert_equal 'raised', %q{
- def opt(a, b = 0)
- end
-
- def use
- opt
- end
-
- use rescue nil
- begin
- use
- :ng
- rescue ArgumentError
- :raised
- end
-}
-
-# passing too many arguments to method with optional parameters
-assert_equal 'raised', %q{
- def opt(a, b = 0)
- end
-
- def use
- opt(1, 2, 3, 4)
- end
-
- use rescue nil
- begin
- use
- :ng
- rescue ArgumentError
- :raised
- end
-}
-
-# test calling Ruby method with a block
-assert_equal '[1, 2, 42]', %q{
- def thing(a, b)
- [a, b, yield]
- end
-
- def use
- thing(1,2) { 42 }
- end
-
- use
- use
-}
-
-# test calling C method with a block
-assert_equal '[42, 42]', %q{
- def use(array, initial)
- array.reduce(initial) { |a, b| a + b }
- end
-
- use([], 0)
- [use([2, 2], 38), use([14, 14, 14], 0)]
-}
-
-# test calling block param
-assert_equal '[1, 2, 42]', %q{
- def foo(&block)
- block.call
- end
-
- [foo {1}, foo {2}, foo {42}]
-}
-
-# test calling without block param
-assert_equal '[1, false, 2, false]', %q{
- def bar
- block_given? && yield
- end
-
- def foo(&block)
- bar(&block)
- end
-
- [foo { 1 }, foo, foo { 2 }, foo]
-}
-
-# test calling block param failing
-assert_equal '42', %q{
- def foo(&block)
- block.call
- end
-
- foo {} # warmup
-
- begin
- foo
- rescue NoMethodError => e
- 42 if nil == e.receiver
- end
-}
-
-# test calling method taking block param
-assert_equal '[Proc, 1, 2, 3, Proc]', %q{
- def three(a, b, c, &block)
- [a, b, c, block.class]
- end
-
- def zero(&block)
- block.class
- end
-
- def use_three
- three(1, 2, 3) {}
- end
-
- def use_zero
- zero {}
- end
-
- use_three
- use_zero
-
- [use_zero] + use_three
-}
-
-# test building empty array
-assert_equal '[]', %q{
- def build_arr
- []
- end
-
- build_arr
- build_arr
-}
-
-# test building array of one element
-assert_equal '[5]', %q{
- def build_arr(val)
- [val]
- end
-
- build_arr(5)
- build_arr(5)
-}
-
-# test building array of several element
-assert_equal '[5, 5, 5, 5, 5]', %q{
- def build_arr(val)
- [val, val, val, val, val]
- end
-
- build_arr(5)
- build_arr(5)
-}
-
-# test building empty hash
-assert_equal '{}', %q{
- def build_hash
- {}
- end
-
- build_hash
- build_hash
-}
-
-# test building hash with values
-assert_equal '{:foo=>:bar}', %q{
- def build_hash(val)
- { foo: val }
- end
-
- build_hash(:bar)
- build_hash(:bar)
-}
-
-# test string interpolation with known types
-assert_equal 'foobar', %q{
- def make_str
- foo = -"foo"
- bar = -"bar"
- "#{foo}#{bar}"
- end
-
- make_str
- make_str
-}
-
-# test string interpolation with unknown types
-assert_equal 'foobar', %q{
- def make_str(foo, bar)
- "#{foo}#{bar}"
- end
-
- make_str("foo", "bar")
- make_str("foo", "bar")
-}
-
-# test string interpolation with known non-strings
-assert_equal 'foo123', %q{
- def make_str
- foo = -"foo"
- bar = 123
- "#{foo}#{bar}"
- end
-
- make_str
- make_str
-}
-
-# test string interpolation with unknown non-strings
-assert_equal 'foo123', %q{
- def make_str(foo, bar)
- "#{foo}#{bar}"
- end
-
- make_str("foo", 123)
- make_str("foo", 123)
-}
-
-# test that invalidation of String#to_s doesn't crash
-assert_equal 'meh', %q{
- def inval_method
- "".to_s
- end
-
- inval_method
-
- class String
- def to_s
- "meh"
- end
- end
-
- inval_method
-}
-
-# test that overriding to_s on a String subclass works consistently
-assert_equal 'meh', %q{
- class MyString < String
- def to_s
- "meh"
- end
- end
-
- def test_to_s(obj)
- obj.to_s
- end
-
- OBJ = MyString.new
-
- # Should return '' both times
- test_to_s("")
- test_to_s("")
-
- # Can return '' if YJIT optimises String#to_s too aggressively
- test_to_s(OBJ)
- test_to_s(OBJ)
-}
-
-# test string interpolation with overridden to_s
-assert_equal 'foo', %q{
- class String
- def to_s
- "bad"
- end
- end
-
- def make_str(foo)
- "#{foo}"
- end
-
- make_str("foo")
- make_str("foo")
-}
-
-# Test that String unary plus returns the same object ID for an unfrozen string.
-assert_equal 'true', %q{
- def jittable_method
- str = "bar"
-
- old_obj_id = str.object_id
- uplus_str = +str
-
- uplus_str.object_id == old_obj_id
- end
- jittable_method
-}
-
-# Test that String unary plus returns a different unfrozen string when given a frozen string
-assert_equal 'false', %q{
- # Logic needs to be inside an ISEQ, such as a method, for YJIT to compile it
- def jittable_method
- frozen_str = "foo".freeze
-
- old_obj_id = frozen_str.object_id
- uplus_str = +frozen_str
-
- uplus_str.object_id == old_obj_id || uplus_str.frozen?
- end
-
- jittable_method
-}
-
-# String-subclass objects should behave as expected inside string-interpolation via concatstrings
-assert_equal 'monkeys / monkeys, yo!', %q{
- class MyString < String
- # This is a terrible idea in production code, but we'd like YJIT to match CRuby
- def to_s
- super + ", yo!"
- end
- end
-
- def jittable_method
- m = MyString.new('monkeys')
- "#{m} / #{m.to_s}"
- end
-
- jittable_method
-}
-
-# String-subclass objects should behave as expected for string equality
-assert_equal 'false', %q{
- class MyString < String
- # This is a terrible idea in production code, but we'd like YJIT to match CRuby
- def ==(b)
- "#{self}_" == b
- end
- end
-
- def jittable_method
- ma = MyString.new("a")
-
- # Check equality with string-subclass receiver
- ma == "a" || ma != "a_" ||
- # Check equality with string receiver
- "a_" == ma || "a" != ma ||
- # Check equality between string subclasses
- ma != MyString.new("a_") ||
- # Make sure "string always equals itself" check isn't used with overridden equality
- ma == ma
- end
- jittable_method
-}
-
-# Test to_s duplicates a string subclass object but not a string
-assert_equal 'false', %q{
- class MyString < String; end
-
- def jittable_method
- a = "a"
- ma = MyString.new("a")
-
- a.object_id != a.to_s.object_id ||
- ma.object_id == ma.to_s.object_id
- end
- jittable_method
-}
-
-# Test freeze on string subclass
-assert_equal 'true', %q{
- class MyString < String; end
-
- def jittable_method
- fma = MyString.new("a").freeze
-
- # Freezing a string subclass should not duplicate it
- fma.object_id == fma.freeze.object_id
- end
- jittable_method
-}
-
-# Test unary minus on string subclass
-assert_equal 'true', %q{
- class MyString < String; end
-
- def jittable_method
- ma = MyString.new("a")
- fma = MyString.new("a").freeze
-
- # Unary minus on frozen string subclass should not duplicate it
- fma.object_id == (-fma).object_id &&
- # Unary minus on unfrozen string subclass should duplicate it
- ma.object_id != (-ma).object_id
- end
- jittable_method
-}
-
-# Test unary plus on string subclass
-assert_equal 'true', %q{
- class MyString < String; end
-
- def jittable_method
- fma = MyString.new("a").freeze
-
- # Unary plus on frozen string subclass should not duplicate it
- fma.object_id != (+fma).object_id
- end
- jittable_method
-}
-
-# Test << operator on string subclass
-assert_equal 'abab', %q{
- class MyString < String; end
-
- def jittable_method
- a = -"a"
- mb = MyString.new("b")
-
- buf = String.new
- mbuf = MyString.new
-
- buf << a << mb
- mbuf << a << mb
-
- buf + mbuf
- end
- jittable_method
-}
-
-# test invokebuiltin as used in struct assignment
-assert_equal '123', %q{
- def foo(obj)
- obj.foo = 123
- end
-
- struct = Struct.new(:foo)
- obj = struct.new
- foo(obj)
- foo(obj)
-}
-
-# test invokebuiltin_delegate as used inside Dir.open
-assert_equal '.', %q{
- def foo(path)
- Dir.open(path).path
- end
-
- foo(".")
- foo(".")
-}
-
-# test invokebuiltin_delegate_leave in method called from jit
-assert_normal_exit %q{
- def foo(obj)
- obj.clone
- end
-
- foo(Object.new)
- foo(Object.new)
-}
-
-# test invokebuiltin_delegate_leave in method called from cfunc
-assert_normal_exit %q{
- def foo(obj)
- [obj].map(&:clone)
- end
-
- foo(Object.new)
- foo(Object.new)
-}
-
-# defining TrueClass#!
-assert_equal '[false, false, :ok]', %q{
- def foo(obj)
- !obj
- end
-
- x = foo(true)
- y = foo(true)
-
- class TrueClass
- def !
- :ok
- end
- end
-
- z = foo(true)
-
- [x, y, z]
-}
-
-# defining FalseClass#!
-assert_equal '[true, true, :ok]', %q{
- def foo(obj)
- !obj
- end
-
- x = foo(false)
- y = foo(false)
-
- class FalseClass
- def !
- :ok
- end
- end
-
- z = foo(false)
-
- [x, y, z]
-}
-
-# defining NilClass#!
-assert_equal '[true, true, :ok]', %q{
- def foo(obj)
- !obj
- end
-
- x = foo(nil)
- y = foo(nil)
-
- class NilClass
- def !
- :ok
- end
- end
-
- z = foo(nil)
-
- [x, y, z]
-}
-
-# polymorphic opt_not
-assert_equal '[true, true, false, false, false, false, false]', %q{
- def foo(obj)
- !obj
- end
-
- foo(0)
- [foo(nil), foo(false), foo(true), foo([]), foo(0), foo(4.2), foo(:sym)]
-}
-
-# getlocal with 2 levels
-assert_equal '7', %q{
- def foo(foo, bar)
- while foo > 0
- while bar > 0
- return foo + bar
- end
- end
- end
-
- foo(5,2)
- foo(5,2)
-}
-
-# test pattern matching
-assert_equal '[:ok, :ok]', %q{
- class C
- def destructure_keys
- {}
- end
- end
-
- pattern_match = ->(i) do
- case i
- in a: 0
- :ng
- else
- :ok
- end
- end
-
- [{}, C.new].map(&pattern_match)
-}
-
-# Call to object with singleton
-assert_equal '123', %q{
- obj = Object.new
- def obj.foo
- 123
- end
-
- def foo(obj)
- obj.foo()
- end
-
- foo(obj)
- foo(obj)
-}
-
-# Call method on an object that has a non-material
-# singleton class.
-# TODO: assert that it takes no side exits? This
-# test case revealed that we were taking exits unnecessarily.
-assert_normal_exit %q{
- def foo(obj)
- obj.itself
- end
-
- o = Object.new.singleton_class
- foo(o)
- foo(o)
-}
-
-# Call to singleton class
-assert_equal '123', %q{
- class Foo
- def self.foo
- 123
- end
- end
-
- def foo(obj)
- obj.foo()
- end
-
- foo(Foo)
- foo(Foo)
-}
-
-# invokesuper edge case
-assert_equal '[:A, [:A, :B]]', %q{
- class B
- def foo = :B
- end
-
- class A < B
- def foo = [:A, super()]
- end
-
- A.new.foo
- A.new.foo # compile A#foo
-
- class C < A
- define_method(:bar, A.instance_method(:foo))
- end
-
- C.new.bar
-}
-
-# Same invokesuper bytecode, multiple destinations
-assert_equal '[:Forward, :SecondTerminus]', %q{
- module Terminus
- def foo = :Terminus
- end
-
- module SecondTerminus
- def foo = :SecondTerminus
- end
-
-
- module Forward
- def foo = [:Forward, super]
- end
-
- class B
- include SecondTerminus
- end
-
- class A < B
- include Terminus
- include Forward
- end
-
- A.new.foo
- A.new.foo # compile
-
- class B
- include Forward
- alias bar foo
- end
-
- # A.ancestors.take(5) == [A, Forward, Terminus, B, Forward, SecondTerminus]
-
- A.new.bar
-}
-
-# invokesuper calling into itself
-assert_equal '[:B, [:B, :m]]', %q{
- module M
- def foo = :m
- end
-
- class B
- include M
- def foo = [:B, super]
- end
-
- ins = B.new
- ins.singleton_class # materialize the singleton class
- ins.foo
- ins.foo # compile
-
- ins.singleton_class.define_method(:bar, B.instance_method(:foo))
- ins.bar
-}
-
-# invokesuper changed ancestor
-assert_equal '[:A, [:M, :B]]', %q{
- class B
- def foo
- :B
- end
- end
-
- class A < B
- def foo
- [:A, super]
- end
- end
-
- module M
- def foo
- [:M, super]
- end
- end
-
- ins = A.new
- ins.foo
- ins.foo
- A.include(M)
- ins.foo
-}
-
-# invokesuper changed ancestor via prepend
-assert_equal '[:A, [:M, :B]]', %q{
- class B
- def foo
- :B
- end
- end
-
- class A < B
- def foo
- [:A, super]
- end
- end
-
- module M
- def foo
- [:M, super]
- end
- end
-
- ins = A.new
- ins.foo
- ins.foo
- B.prepend(M)
- ins.foo
-}
-
-# invokesuper replaced method
-assert_equal '[:A, :Btwo]', %q{
- class B
- def foo
- :B
- end
- end
-
- class A < B
- def foo
- [:A, super]
- end
- end
-
- ins = A.new
- ins.foo
- ins.foo
- class B
- def foo
- :Btwo
- end
- end
- ins.foo
-}
-
-# invokesuper with a block
-assert_equal 'true', %q{
- class A
- def foo = block_given?
- end
-
- class B < A
- def foo = super()
- end
-
- B.new.foo { }
- B.new.foo { }
-}
-
-# invokesuper in a block
-assert_equal '[0, 2]', %q{
- class A
- def foo(x) = x * 2
- end
-
- class B < A
- def foo
- 2.times.map do |x|
- super(x)
- end
- end
- end
-
- B.new.foo
- B.new.foo
-}
-
-# Call to fixnum
-assert_equal '[true, false]', %q{
- def is_odd(obj)
- obj.odd?
- end
-
- is_odd(1)
- is_odd(1)
-
- [is_odd(123), is_odd(456)]
-}
-
-# Call to bignum
-assert_equal '[true, false]', %q{
- def is_odd(obj)
- obj.odd?
- end
-
- bignum = 99999999999999999999
- is_odd(bignum)
- is_odd(bignum)
-
- [is_odd(bignum), is_odd(bignum+1)]
-}
-
-# Call to fixnum and bignum
-assert_equal '[true, false, true, false]', %q{
- def is_odd(obj)
- obj.odd?
- end
-
- bignum = 99999999999999999999
- is_odd(bignum)
- is_odd(bignum)
- is_odd(123)
- is_odd(123)
-
- [is_odd(123), is_odd(456), is_odd(bignum), is_odd(bignum+1)]
-}
-
-# Call to static and dynamic symbol
-assert_equal 'bar', %q{
- def to_string(obj)
- obj.to_s
- end
-
- to_string(:foo)
- to_string(:foo)
- to_string((-"bar").to_sym)
- to_string((-"bar").to_sym)
-}
-
-# Call to flonum and heap float
-assert_equal '[nil, nil, nil, 1]', %q{
- def is_inf(obj)
- obj.infinite?
- end
-
- is_inf(0.0)
- is_inf(0.0)
- is_inf(1e256)
- is_inf(1e256)
-
- [
- is_inf(0.0),
- is_inf(1.0),
- is_inf(1e256),
- is_inf(1.0/0.0)
- ]
-}
-
-assert_equal '[1, 2, 3, 4, 5]', %q{
- def splatarray
- [*(1..5)]
- end
-
- splatarray
- splatarray
-}
-
-assert_equal '[1, 1, 2, 1, 2, 3]', %q{
- def expandarray
- arr = [1, 2, 3]
-
- a, = arr
- b, c, = arr
- d, e, f = arr
-
- [a, b, c, d, e, f]
- end
-
- expandarray
- expandarray
-}
-
-assert_equal '[1, 1]', %q{
- def expandarray_useless_splat
- arr = (1..10).to_a
-
- a, * = arr
- b, (*) = arr
-
- [a, b]
- end
-
- expandarray_useless_splat
- expandarray_useless_splat
-}
-
-assert_equal '[:not_heap, nil, nil]', %q{
- def expandarray_not_heap
- a, b, c = :not_heap
- [a, b, c]
- end
-
- expandarray_not_heap
- expandarray_not_heap
-}
-
-assert_equal '[:not_array, nil, nil]', %q{
- def expandarray_not_array(obj)
- a, b, c = obj
- [a, b, c]
- end
-
- obj = Object.new
- def obj.to_ary
- [:not_array]
- end
-
- expandarray_not_array(obj)
- expandarray_not_array(obj)
-}
-
-assert_equal '[1, 2, nil]', %q{
- def expandarray_rhs_too_small
- a, b, c = [1, 2]
- [a, b, c]
- end
-
- expandarray_rhs_too_small
- expandarray_rhs_too_small
-}
-
-assert_equal '[1, [2]]', %q{
- def expandarray_splat
- a, *b = [1, 2]
- [a, b]
- end
-
- expandarray_splat
- expandarray_splat
-}
-
-assert_equal '2', %q{
- def expandarray_postarg
- *, a = [1, 2]
- a
- end
-
- expandarray_postarg
- expandarray_postarg
-}
-
-assert_equal '10', %q{
- obj = Object.new
- val = nil
- obj.define_singleton_method(:to_ary) { val = 10; [] }
-
- def expandarray_always_call_to_ary(object)
- * = object
- end
-
- expandarray_always_call_to_ary(obj)
- expandarray_always_call_to_ary(obj)
-
- val
-}
-
-# regression test of local type change
-assert_equal '1.1', %q{
-def bar(baz, quux)
- if baz.integer?
- baz, quux = quux, nil
- end
- baz.to_s
-end
-
-bar(123, 1.1)
-bar(123, 1.1)
-}
-
-# test enabling a line TracePoint in a C method call
-assert_equal '[[:line, true]]', %q{
- events = []
- events.instance_variable_set(
- :@tp,
- TracePoint.new(:line) { |tp| events << [tp.event, tp.lineno] if tp.path == __FILE__ }
- )
- def events.to_str
- @tp.enable; ''
- end
-
- # Stay in generated code while enabling tracing
- def events.compiled(obj)
- String(obj)
- @tp.disable; __LINE__
- end
-
- line = events.compiled(events)
- events[0][-1] = (events[0][-1] == line)
-
- events
-}
-
-# test enabling a c_return TracePoint in a C method call
-assert_equal '[[:c_return, :String, :string_alias, "events_to_str"]]', %q{
- events = []
- events.instance_variable_set(:@tp, TracePoint.new(:c_return) { |tp| events << [tp.event, tp.method_id, tp.callee_id, tp.return_value] })
- def events.to_str
- @tp.enable; 'events_to_str'
- end
-
- # Stay in generated code while enabling tracing
- alias string_alias String
- def events.compiled(obj)
- string_alias(obj)
- @tp.disable
- end
-
- events.compiled(events)
-
- events
-} unless defined?(RubyVM::RJIT) && RubyVM::RJIT.enabled? # RJIT calls extra Ruby methods
-
-# test enabling a TracePoint that targets a particular line in a C method call
-assert_equal '[true]', %q{
- events = []
- events.instance_variable_set(:@tp, TracePoint.new(:line) { |tp| events << tp.lineno })
- def events.to_str
- @tp.enable(target: method(:compiled))
- ''
- end
-
- # Stay in generated code while enabling tracing
- def events.compiled(obj)
- String(obj)
- __LINE__
- end
-
- line = events.compiled(events)
- events[0] = (events[0] == line)
-
- events
-}
-
-# test enabling tracing in the middle of splatarray
-assert_equal '[true]', %q{
- events = []
- obj = Object.new
- obj.instance_variable_set(:@tp, TracePoint.new(:line) { |tp| events << tp.lineno })
- def obj.to_a
- @tp.enable(target: method(:compiled))
- []
- end
-
- # Enable tracing in the middle of the splatarray instruction
- def obj.compiled(obj)
- * = *obj
- __LINE__
- end
-
- obj.compiled([])
- line = obj.compiled(obj)
- events[0] = (events[0] == line)
-
- events
-}
-
-# test enabling tracing in the middle of opt_aref. Different since the codegen
-# for it ends in a jump.
-assert_equal '[true]', %q{
- def lookup(hash, tp)
- hash[42]
- tp.disable; __LINE__
- end
-
- lines = []
- tp = TracePoint.new(:line) { lines << _1.lineno if _1.path == __FILE__ }
-
- lookup(:foo, tp)
- lookup({}, tp)
-
- enable_tracing_on_missing = Hash.new { tp.enable }
-
- expected_line = lookup(enable_tracing_on_missing, tp)
-
- lines[0] = true if lines[0] == expected_line
-
- lines
-}
-
-# test enabling c_call tracing before compiling
-assert_equal '[[:c_call, :itself]]', %q{
- def shouldnt_compile
- itself
- end
-
- events = []
- tp = TracePoint.new(:c_call) { |tp| events << [tp.event, tp.method_id] }
-
- # assume first call compiles
- tp.enable { shouldnt_compile }
-
- events
-} unless defined?(RubyVM::RJIT) && RubyVM::RJIT.enabled? # RJIT calls extra Ruby methods
-
-# test enabling c_return tracing before compiling
-assert_equal '[[:c_return, :itself, main]]', %q{
- def shouldnt_compile
- itself
- end
-
- events = []
- tp = TracePoint.new(:c_return) { |tp| events << [tp.event, tp.method_id, tp.return_value] }
-
- # assume first call compiles
- tp.enable { shouldnt_compile }
-
- events
-} unless defined?(RubyVM::RJIT) && RubyVM::RJIT.enabled? # RJIT calls extra Ruby methods
-
-# test c_call invalidation
-assert_equal '[[:c_call, :itself]]', %q{
- # enable the event once to make sure invalidation
- # happens the second time we enable it
- TracePoint.new(:c_call) {}.enable{}
-
- def compiled
- itself
- end
-
- # assume first call compiles
- compiled
-
- events = []
- tp = TracePoint.new(:c_call) { |tp| events << [tp.event, tp.method_id] }
- tp.enable { compiled }
-
- events
-}
-
-# test enabling tracing for a suspended fiber
-assert_equal '[[:return, 42]]', %q{
- def traced_method
- Fiber.yield
- 42
- end
-
- events = []
- tp = TracePoint.new(:return) { events << [_1.event, _1.return_value] }
- # assume first call compiles
- fiber = Fiber.new { traced_method }
- fiber.resume
- tp.enable(target: method(:traced_method))
- fiber.resume
-
- events
-}
-
-# test compiling on non-tracing ractor then running on a tracing one
-assert_equal '[:itself]', %q{
- def traced_method
- itself
- end
-
- tracing_ractor = Ractor.new do
- # 1: start tracing
- events = []
- tp = TracePoint.new(:c_call) { events << _1.method_id }
- tp.enable
- Ractor.yield(nil)
-
- # 3: run compiled method on tracing ractor
- Ractor.yield(nil)
- traced_method
-
- events
- ensure
- tp&.disable
- end
-
- tracing_ractor.take
-
- # 2: compile on non tracing ractor
- traced_method
-
- tracing_ractor.take
- tracing_ractor.take
-}
-
-# Try to hit a lazy branch stub while another ractor enables tracing
-assert_equal '42', %q{
- def compiled(arg)
- if arg
- arg + 1
- else
- itself
- itself
- end
- end
-
- ractor = Ractor.new do
- compiled(false)
- Ractor.yield(nil)
- compiled(41)
- end
-
- tp = TracePoint.new(:line) { itself }
- ractor.take
- tp.enable
-
- ractor.take
-}
-
-# Test equality with changing types
-assert_equal '[true, false, false, false]', %q{
- def eq(a, b)
- a == b
- end
-
- [
- eq("foo", "foo"),
- eq("foo", "bar"),
- eq(:foo, "bar"),
- eq("foo", :bar)
- ]
-}
-
-# Redefined String eq
-assert_equal 'true', %q{
- class String
- def ==(other)
- true
- end
- end
-
- def eq(a, b)
- a == b
- end
-
- eq("foo", "bar")
- eq("foo", "bar")
-}
-
-# Redefined Integer eq
-assert_equal 'true', %q{
- class Integer
- def ==(other)
- true
- end
- end
-
- def eq(a, b)
- a == b
- end
-
- eq(1, 2)
- eq(1, 2)
-}
-
-# aset on array with invalid key
-assert_normal_exit %q{
- def foo(arr)
- arr[:foo] = 123
- end
-
- foo([1]) rescue nil
- foo([1]) rescue nil
-}
-
-# test ractor exception on when setting ivar
-assert_equal '42', %q{
- class A
- def self.foo
- _foo = 1
- _bar = 2
- begin
- @bar = _foo + _bar
- rescue Ractor::IsolationError
- 42
- end
- end
- end
-
- A.foo
- A.foo
-
- Ractor.new { A.foo }.take
-}
-
-assert_equal '["plain", "special", "sub", "plain"]', %q{
- def foo(arg)
- arg.to_s
- end
-
- class Sub < String
- end
-
- special = String.new("special")
- special.singleton_class
-
- [
- foo("plain"),
- foo(special),
- foo(Sub.new("sub")),
- foo("plain")
- ]
-}
-
-assert_equal '["sub", "sub"]', %q{
- def foo(arg)
- arg.to_s
- end
-
- class Sub < String
- def to_s
- super
- end
- end
-
- sub = Sub.new("sub")
-
- [foo(sub), foo(sub)]
-}
-
-assert_equal '[1]', %q{
- def kwargs(value:)
- value
- end
-
- 5.times.map { kwargs(value: 1) }.uniq
-}
-
-assert_equal '[:ok]', %q{
- def kwargs(value:)
- value
- end
-
- 5.times.map { kwargs() rescue :ok }.uniq
-}
-
-assert_equal '[:ok]', %q{
- def kwargs(a:, b: nil)
- value
- end
-
- 5.times.map { kwargs(b: 123) rescue :ok }.uniq
-}
-
-assert_equal '[[1, 2]]', %q{
- def kwargs(left:, right:)
- [left, right]
- end
-
- 5.times.flat_map do
- [
- kwargs(left: 1, right: 2),
- kwargs(right: 2, left: 1)
- ]
- end.uniq
-}
-
-assert_equal '[[1, 2]]', %q{
- def kwargs(lead, kwarg:)
- [lead, kwarg]
- end
-
- 5.times.map { kwargs(1, kwarg: 2) }.uniq
-}
-
-# optional and keyword args
-assert_equal '[[1, 2, 3]]', %q{
- def opt_and_kwargs(a, b=2, c: nil)
- [a,b,c]
- end
-
- 5.times.map { opt_and_kwargs(1, c: 3) }.uniq
-}
-
-assert_equal '[[1, 2, 3]]', %q{
- def opt_and_kwargs(a, b=nil, c: nil)
- [a,b,c]
- end
-
- 5.times.map { opt_and_kwargs(1, 2, c: 3) }.uniq
-}
-
-# Bug #18453
-assert_equal '[[1, nil, 2]]', %q{
- def opt_and_kwargs(a = {}, b: nil, c: nil)
- [a, b, c]
- end
-
- 5.times.map { opt_and_kwargs(1, c: 2) }.uniq
-}
-
-assert_equal '[[{}, nil, 1]]', %q{
- def opt_and_kwargs(a = {}, b: nil, c: nil)
- [a, b, c]
- end
-
- 5.times.map { opt_and_kwargs(c: 1) }.uniq
-}
-
-# leading and keyword arguments are swapped into the right order
-assert_equal '[[1, 2, 3, 4, 5, 6]]', %q{
- def kwargs(five, six, a:, b:, c:, d:)
- [a, b, c, d, five, six]
- end
-
- 5.times.flat_map do
- [
- kwargs(5, 6, a: 1, b: 2, c: 3, d: 4),
- kwargs(5, 6, a: 1, b: 2, d: 4, c: 3),
- kwargs(5, 6, a: 1, c: 3, b: 2, d: 4),
- kwargs(5, 6, a: 1, c: 3, d: 4, b: 2),
- kwargs(5, 6, a: 1, d: 4, b: 2, c: 3),
- kwargs(5, 6, a: 1, d: 4, c: 3, b: 2),
- kwargs(5, 6, b: 2, a: 1, c: 3, d: 4),
- kwargs(5, 6, b: 2, a: 1, d: 4, c: 3),
- kwargs(5, 6, b: 2, c: 3, a: 1, d: 4),
- kwargs(5, 6, b: 2, c: 3, d: 4, a: 1),
- kwargs(5, 6, b: 2, d: 4, a: 1, c: 3),
- kwargs(5, 6, b: 2, d: 4, c: 3, a: 1),
- kwargs(5, 6, c: 3, a: 1, b: 2, d: 4),
- kwargs(5, 6, c: 3, a: 1, d: 4, b: 2),
- kwargs(5, 6, c: 3, b: 2, a: 1, d: 4),
- kwargs(5, 6, c: 3, b: 2, d: 4, a: 1),
- kwargs(5, 6, c: 3, d: 4, a: 1, b: 2),
- kwargs(5, 6, c: 3, d: 4, b: 2, a: 1),
- kwargs(5, 6, d: 4, a: 1, b: 2, c: 3),
- kwargs(5, 6, d: 4, a: 1, c: 3, b: 2),
- kwargs(5, 6, d: 4, b: 2, a: 1, c: 3),
- kwargs(5, 6, d: 4, b: 2, c: 3, a: 1),
- kwargs(5, 6, d: 4, c: 3, a: 1, b: 2),
- kwargs(5, 6, d: 4, c: 3, b: 2, a: 1)
- ]
- end.uniq
-}
-
-# implicit hashes get skipped and don't break compilation
-assert_equal '[[:key]]', %q{
- def implicit(hash)
- hash.keys
- end
-
- 5.times.map { implicit(key: :value) }.uniq
-}
-
-# default values on keywords don't mess up argument order
-assert_equal '[2]', %q{
- def default_value
- 1
- end
-
- def default_expression(value: default_value)
- value
- end
-
- 5.times.map { default_expression(value: 2) }.uniq
-}
-
-# constant default values on keywords
-assert_equal '[3]', %q{
- def default_expression(value: 3)
- value
- end
-
- 5.times.map { default_expression }.uniq
-}
-
-# non-constant default values on keywords
-assert_equal '[3]', %q{
- def default_value
- 3
- end
-
- def default_expression(value: default_value)
- value
- end
-
- 5.times.map { default_expression }.uniq
-}
-
-# reordered optional kwargs
-assert_equal '[[100, 1]]', %q{
- def foo(capacity: 100, max: nil)
- [capacity, max]
- end
-
- 5.times.map { foo(max: 1) }.uniq
-}
-
-# invalid lead param
-assert_equal 'ok', %q{
- def bar(baz: 2)
- baz
- end
-
- def foo
- bar(1, baz: 123)
- end
-
- begin
- foo
- foo
- rescue ArgumentError => e
- print "ok"
- end
-}
-
-# reordered required kwargs
-assert_equal '[[1, 2, 3, 4]]', %q{
- def foo(default1: 1, required1:, default2: 3, required2:)
- [default1, required1, default2, required2]
- end
-
- 5.times.map { foo(required1: 2, required2: 4) }.uniq
-}
-
-# reordered default expression kwargs
-assert_equal '[[:one, :two, 3]]', %q{
- def foo(arg1: (1+0), arg2: (2+0), arg3: (3+0))
- [arg1, arg2, arg3]
- end
-
- 5.times.map { foo(arg2: :two, arg1: :one) }.uniq
-}
-
-# complex kwargs
-assert_equal '[[1, 2, 3, 4]]', %q{
- def foo(required:, specified: 999, simple_default: 3, complex_default: "4".to_i)
- [required, specified, simple_default, complex_default]
- end
-
- 5.times.map { foo(specified: 2, required: 1) }.uniq
-}
-
-# cfunc kwargs
-assert_equal '{:foo=>123}', %q{
- def foo(bar)
- bar.store(:value, foo: 123)
- bar[:value]
- end
-
- foo({})
- foo({})
-}
-
-# cfunc kwargs
-assert_equal '{:foo=>123}', %q{
- def foo(bar)
- bar.replace(foo: 123)
- end
-
- foo({})
- foo({})
-}
-
-# cfunc kwargs
-assert_equal '{:foo=>123, :bar=>456}', %q{
- def foo(bar)
- bar.replace(foo: 123, bar: 456)
- end
-
- foo({})
- foo({})
-}
-
-# variadic cfunc kwargs
-assert_equal '{:foo=>123}', %q{
- def foo(bar)
- bar.merge(foo: 123)
- end
-
- foo({})
- foo({})
-}
-
-# optimized cfunc kwargs
-assert_equal 'false', %q{
- def foo
- :foo.eql?(foo: :foo)
- end
-
- foo
- foo
-}
-
-# attr_reader on frozen object
-assert_equal 'false', %q{
- class Foo
- attr_reader :exception
-
- def failed?
- !exception.nil?
- end
- end
-
- foo = Foo.new.freeze
- foo.failed?
- foo.failed?
-}
-
-# regression test for doing kwarg shuffle before checking for interrupts
-assert_equal 'ok', %q{
- def new_media_drop(attributes:, product_drop:, context:, sources:)
- nil.nomethod rescue nil # force YJIT to bail to side exit
-
- [attributes, product_drop, context, sources]
- end
-
- def load_medias(product_drop: nil, raw_medias:, context:)
- raw_medias.map do |raw_media|
- case new_media_drop(context: context, attributes: raw_media, product_drop: product_drop, sources: [])
- in [Hash, ProductDrop, Context, Array]
- else
- raise "bad shuffle"
- end
- end
- end
-
- class Context; end
-
- class ProductDrop
- attr_reader :title
- def initialize(title)
- @title = title
- end
- end
-
- # Make a thread so we have thread switching interrupts
- th = Thread.new do
- while true; end
- end
- 1_000.times do |i|
- load_medias(product_drop: ProductDrop.new("foo"), raw_medias: [{}, {}], context: Context.new)
- end
- th.kill.join
-
- :ok
-}
-
-# regression test for tracing attr_accessor methods.
-assert_equal "true", %q{
- c = Class.new do
- attr_accessor :x
- alias y x
- alias y= x=
- end
- obj = c.new
-
- ar_meth = obj.method(:x)
- aw_meth = obj.method(:x=)
- aar_meth = obj.method(:y)
- aaw_meth = obj.method(:y=)
- events = []
- trace = TracePoint.new(:c_call, :c_return){|tp|
- next if tp.path != __FILE__
- next if tp.method_id == :call
- case tp.event
- when :c_call
- events << [tp.event, tp.method_id, tp.callee_id]
- when :c_return
- events << [tp.event, tp.method_id, tp.callee_id, tp.return_value]
- end
- }
- test_proc = proc do
- obj.x = 1
- obj.x
- obj.y = 2
- obj.y
- aw_meth.call(1)
- ar_meth.call
- aaw_meth.call(2)
- aar_meth.call
- end
- test_proc.call # populate call caches
- trace.enable(&test_proc)
- expected = [
- [:c_call, :x=, :x=],
- [:c_return, :x=, :x=, 1],
- [:c_call, :x, :x],
- [:c_return, :x, :x, 1],
- [:c_call, :x=, :y=],
- [:c_return, :x=, :y=, 2],
- [:c_call, :x, :y],
- [:c_return, :x, :y, 2],
- ] * 2
-
- expected == events
-}
-
-# duphash
-assert_equal '{:foo=>123}', %q{
- def foo
- {foo: 123}
- end
-
- foo
- foo
-}
-
-# newhash
-assert_equal '{:foo=>2}', %q{
- def foo
- {foo: 1+1}
- end
-
- foo
- foo
-}
-
-# block invalidation edge case
-assert_equal 'undef', %q{
- class A
- def foo(arg)
- arg.times { A.remove_method(:bar) }
- self
- end
-
- def bar
- 4
- end
-
- def use(arg)
- # two consecutive sends. When bar is removed, the return address
- # for calling it is already on foo's control frame
- foo(arg).bar
- rescue NoMethodError
- :undef
- end
- end
-
- A.new.use 0
- A.new.use 0
- A.new.use 1
-}
-
-# block invalidation edge case
-assert_equal 'ok', %q{
- class A
- Good = :ng
- def foo(arg)
- arg.times { A.const_set(:Good, :ok) }
- self
- end
-
- def id(arg)
- arg
- end
-
- def use(arg)
- # send followed by an opt_getinlinecache.
- # The return address remains on the control frame
- # when opt_getinlinecache is invalidated.
- foo(arg).id(Good)
- end
- end
-
- A.new.use 0
- A.new.use 0
- A.new.use 1
-}
-
-assert_equal 'ok', %q{
- # test hitting a branch stub when out of memory
- def nimai(jita)
- if jita
- :ng
- else
- :ok
- end
- end
-
- nimai(true)
- nimai(true)
-
- RubyVM::YJIT.simulate_oom! if defined?(RubyVM::YJIT)
-
- nimai(false)
-}
-
-assert_equal 'new', %q{
- # test block invalidation while out of memory
- def foo
- :old
- end
-
- def test
- foo
- end
-
- def bar
- :bar
- end
-
-
- test
- test
-
- RubyVM::YJIT.simulate_oom! if defined?(RubyVM::YJIT)
-
- # Old simulat_omm! leaves one byte of space and this fills it up
- bar
- bar
-
- def foo
- :new
- end
-
- test
-}
-
-assert_equal 'ok', %q{
- # Try to compile new method while OOM
- def foo
- :ok
- end
-
- RubyVM::YJIT.simulate_oom! if defined?(RubyVM::YJIT)
-
- foo
- foo
-}
-
-# struct aref embedded
-assert_equal '2', %q{
- def foo(s)
- s.foo
- end
-
- S = Struct.new(:foo)
- foo(S.new(1))
- foo(S.new(2))
-}
-
-# struct aref non-embedded
-assert_equal '4', %q{
- def foo(s)
- s.d
- end
-
- S = Struct.new(:a, :b, :c, :d, :e)
- foo(S.new(1,2,3,4,5))
- foo(S.new(1,2,3,4,5))
-}
-
-# struct aset embedded
-assert_equal '123', %q{
- def foo(s)
- s.foo = 123
- end
-
- s = Struct.new(:foo).new
- foo(s)
- s = Struct.new(:foo).new
- foo(s)
- s.foo
-}
-
-# struct aset non-embedded
-assert_equal '[1, 2, 3, 4, 5]', %q{
- def foo(s)
- s.a = 1
- s.b = 2
- s.c = 3
- s.d = 4
- s.e = 5
- end
-
- S = Struct.new(:a, :b, :c, :d, :e)
- s = S.new
- foo(s)
- s = S.new
- foo(s)
- [s.a, s.b, s.c, s.d, s.e]
-}
-
-# struct aref too many args
-assert_equal 'ok', %q{
- def foo(s)
- s.foo(:bad)
- end
-
- s = Struct.new(:foo).new
- foo(s) rescue :ok
- foo(s) rescue :ok
-}
-
-# struct aset too many args
-assert_equal 'ok', %q{
- def foo(s)
- s.set_foo(123, :bad)
- end
-
- s = Struct.new(:foo) do
- alias :set_foo :foo=
- end
- foo(s) rescue :ok
- foo(s) rescue :ok
-}
-
-# File.join is a cfunc accepting variable arguments as a Ruby array (argc = -2)
-assert_equal 'foo/bar', %q{
- def foo
- File.join("foo", "bar")
- end
-
- foo
- foo
-}
-
-# File.join is a cfunc accepting variable arguments as a Ruby array (argc = -2)
-assert_equal '', %q{
- def foo
- File.join()
- end
-
- foo
- foo
-}
-
-# Make sure we're correctly reading RStruct's as.ary union for embedded RStructs
-assert_equal '3,12', %q{
- pt_struct = Struct.new(:x, :y)
- p = pt_struct.new(3, 12)
- def pt_inspect(pt)
- "#{pt.x},#{pt.y}"
- end
-
- # Make sure pt_inspect is JITted
- 10.times { pt_inspect(p) }
-
- # Make sure it's returning '3,12' instead of e.g. '3,false'
- pt_inspect(p)
-}
-
-# Regression test for deadlock between branch_stub_hit and ractor_receive_if
-assert_equal '10', %q{
- r = Ractor.new Ractor.current do |main|
- main << 1
- main << 2
- main << 3
- main << 4
- main << 5
- main << 6
- main << 7
- main << 8
- main << 9
- main << 10
- end
-
- a = []
- a << Ractor.receive_if{|msg| msg == 10}
- a << Ractor.receive_if{|msg| msg == 9}
- a << Ractor.receive_if{|msg| msg == 8}
- a << Ractor.receive_if{|msg| msg == 7}
- a << Ractor.receive_if{|msg| msg == 6}
- a << Ractor.receive_if{|msg| msg == 5}
- a << Ractor.receive_if{|msg| msg == 4}
- a << Ractor.receive_if{|msg| msg == 3}
- a << Ractor.receive_if{|msg| msg == 2}
- a << Ractor.receive_if{|msg| msg == 1}
-
- a.length
-}
-
-# checktype
-assert_equal 'false', %q{
- def function()
- [1, 2] in [Integer, String]
- end
- function()
-}
-
-# opt_send_without_block (VM_METHOD_TYPE_ATTRSET)
-assert_equal 'foo', %q{
- class Foo
- attr_writer :foo
-
- def foo()
- self.foo = "foo"
- end
- end
- foo = Foo.new
- foo.foo
-}
-
-# anytostring, intern
-assert_equal 'true', %q{
- def foo()
- :"#{true}"
- end
- foo()
-}
-
-# toregexp, objtostring
-assert_equal '/true/', %q{
- def foo()
- /#{true}/
- end
- foo().inspect
-}
-
-# concatstrings, objtostring
-assert_equal '9001', %q{
- def foo()
- "#{9001}"
- end
- foo()
-}
-
-# opt_send_without_block (VM_METHOD_TYPE_CFUNC)
-assert_equal 'nil', %q{
- def foo
- nil.inspect # argc: 0
- end
- foo
-}
-assert_equal '4', %q{
- def foo
- 2.pow(2) # argc: 1
- end
- foo
-}
-assert_equal 'aba', %q{
- def foo
- "abc".tr("c", "a") # argc: 2
- end
- foo
-}
-assert_equal 'true', %q{
- def foo
- respond_to?(:inspect) # argc: -1
- end
- foo
-}
-assert_equal '["a", "b"]', %q{
- def foo
- "a\nb".lines(chomp: true) # kwargs
- end
- foo
-}
-
-# invokebuiltin
-assert_equal '123', %q{
- def foo(obj)
- obj.foo = 123
- end
-
- struct = Struct.new(:foo)
- obj = struct.new
- foo(obj)
-}
-
-# invokebuiltin_delegate
-assert_equal '.', %q{
- def foo(path)
- Dir.open(path).path
- end
- foo(".")
-}
-
-# opt_invokebuiltin_delegate_leave
-assert_equal '[0]', %q{"\x00".unpack("c")}
-
-# opt_send_without_block (VM_METHOD_TYPE_ISEQ)
-assert_equal '1', %q{
- def foo = 1
- def bar = foo
- bar
-}
-assert_equal '[1, 2, 3]', %q{
- def foo(a, b) = [1, a, b]
- def bar = foo(2, 3)
- bar
-}
-assert_equal '[1, 2, 3, 4, 5, 6]', %q{
- def foo(a, b, c:, d:, e: 0, f: 6) = [a, b, c, d, e, f]
- def bar = foo(1, 2, c: 3, d: 4, e: 5)
- bar
-}
-assert_equal '[1, 2, 3, 4]', %q{
- def foo(a, b = 2) = [a, b]
- def bar = foo(1) + foo(3, 4)
- bar
-}
-
-assert_equal '1', %q{
- def foo(a) = a
- def bar = foo(1) { 2 }
- bar
-}
-assert_equal '[1, 2]', %q{
- def foo(a, &block) = [a, block.call]
- def bar = foo(1) { 2 }
- bar
-}
-
-# opt_send_without_block (VM_METHOD_TYPE_IVAR)
-assert_equal 'foo', %q{
- class Foo
- attr_reader :foo
-
- def initialize
- @foo = "foo"
- end
- end
- Foo.new.foo
-}
-
-# opt_send_without_block (VM_METHOD_TYPE_OPTIMIZED)
-assert_equal 'foo', %q{
- Foo = Struct.new(:bar)
- Foo.new("bar").bar = "foo"
-}
-assert_equal 'foo', %q{
- Foo = Struct.new(:bar)
- Foo.new("foo").bar
-}
-
-# getblockparamproxy
-assert_equal 'foo', %q{
- def foo(&block)
- block.call
- end
- foo { "foo" }
-}
-
-# getblockparam
-assert_equal 'foo', %q{
- def foo(&block)
- block
- end
- foo { "foo" }.call
-}
-
-assert_equal '[1, 2]', %q{
- def foo
- x = [2]
- [1, *x]
- end
-
- foo
- foo
-}
-
-# respond_to? with changing symbol
-assert_equal 'false', %q{
- def foo(name)
- :sym.respond_to?(name)
- end
- foo(:to_s)
- foo(:to_s)
- foo(:not_exist)
-}
-
-# respond_to? with method being defined
-assert_equal 'true', %q{
- def foo
- :sym.respond_to?(:not_yet_defined)
- end
- foo
- foo
- module Kernel
- def not_yet_defined = true
- end
- foo
-}
-
-# respond_to? with undef method
-assert_equal 'false', %q{
- module Kernel
- def to_be_removed = true
- end
- def foo
- :sym.respond_to?(:to_be_removed)
- end
- foo
- foo
- class Object
- undef_method :to_be_removed
- end
- foo
-}
-
-# respond_to? with respond_to_missing?
-assert_equal 'true', %q{
- class Foo
- end
- def foo(x)
- x.respond_to?(:bar)
- end
- foo(Foo.new)
- foo(Foo.new)
- class Foo
- def respond_to_missing?(*) = true
- end
- foo(Foo.new)
-}
-
-# bmethod
-assert_equal '[1, 2, 3]', %q{
- one = 1
- define_method(:foo) do
- one
- end
-
- 3.times.map { |i| foo + i }
-}
-
-# return inside bmethod
-assert_equal 'ok', %q{
- define_method(:foo) do
- 1.tap { return :ok }
- end
-
- foo
-}
-
-# bmethod optional and keywords
-assert_equal '[[1, nil, 2]]', %q{
- define_method(:opt_and_kwargs) do |a = {}, b: nil, c: nil|
- [a, b, c]
- end
-
- 5.times.map { opt_and_kwargs(1, c: 2) }.uniq
-}
-
-# bmethod with forwarded block
-assert_equal '2', %q{
- define_method(:foo) do |&block|
- block.call
- end
-
- def bar(&block)
- foo(&block)
- end
-
- bar { 1 }
- bar { 2 }
-}
-
-# bmethod with forwarded block and arguments
-assert_equal '5', %q{
- define_method(:foo) do |n, &block|
- n + block.call
- end
-
- def bar(n, &block)
- foo(n, &block)
- end
-
- bar(0) { 1 }
- bar(3) { 2 }
-}
-
-# bmethod with forwarded unwanted block
-assert_equal '1', %q{
- one = 1
- define_method(:foo) do
- one
- end
-
- def bar(&block)
- foo(&block)
- end
-
- bar { }
- bar { }
-}
-
-# test for return stub lifetime issue
-assert_equal '1', %q{
- def foo(n)
- if n == 2
- return 1.times { Object.define_method(:foo) {} }
- end
-
- foo(n + 1)
- end
-
- foo(1)
-}
-
-# case-when with redefined ===
-assert_equal 'ok', %q{
- class Symbol
- def ===(a)
- true
- end
- end
-
- def cw(arg)
- case arg
- when :b
- :ok
- when 4
- :ng
- end
- end
-
- cw(4)
-}
-
-assert_equal 'threw', %q{
- def foo(args)
- wrap(*args)
- rescue ArgumentError
- 'threw'
- end
-
- def wrap(a)
- [a]
- end
-
- foo([Hash.ruby2_keywords_hash({})])
-}
-
-assert_equal 'threw', %q{
- # C call
- def bar(args)
- Array(*args)
- rescue ArgumentError
- 'threw'
- end
-
- bar([Hash.ruby2_keywords_hash({})])
-}
-
-# Test instance_of? and is_a?
-assert_equal 'true', %q{
- 1.instance_of?(Integer) && 1.is_a?(Integer)
-}
-
-# Test instance_of? and is_a? for singleton classes
-assert_equal 'true', %q{
- a = []
- def a.test = :test
- a.instance_of?(Array) && a.is_a?(Array)
-}
-
-# Test instance_of? for singleton_class
-# Yes this does really return false
-assert_equal 'false', %q{
- a = []
- def a.test = :test
- a.instance_of?(a.singleton_class)
-}
-
-# Test is_a? for singleton_class
-assert_equal 'true', %q{
- a = []
- def a.test = :test
- a.is_a?(a.singleton_class)
-}
-
-# Test send with splat to a cfunc
-assert_equal 'true', %q{
- 1.send(:==, 1, *[])
-}
-
-# Test empty splat with cfunc
-assert_equal '2', %q{
- def foo
- Integer.sqrt(4, *[])
- end
- # call twice to deal with constant exiting
- foo
- foo
-}
-
-# Test non-empty splat with cfunc
-assert_equal 'Hello World', %q{
- def bar
- args = ["Hello "]
- greeting = "World"
- greeting.insert(0, *args)
- greeting
- end
- bar
-}
-
-# Regression: this creates a temp stack with > 127 elements
-assert_normal_exit %q{
- def foo(a)
- [
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a, a, a,
- a, a, a, a, a, a, a, a,
- ]
- end
-
- def entry
- foo(1)
- end
-
- entry
-}
-
-# Test that splat and rest combined
-# properly dupe the array
-assert_equal "[]", %q{
- def foo(*rest)
- rest << 1
- end
-
- def test(splat)
- foo(*splat)
- end
-
- EMPTY = []
- custom = Object.new
- def custom.to_a
- EMPTY
- end
-
- test(custom)
- test(custom)
- EMPTY
-}
-
-# Rest with send
-assert_equal '[1, 2, 3]', %q{
- def bar(x, *rest)
- rest.insert(0, x)
- end
- send(:bar, 1, 2, 3)
-}
-
-# Fix splat block arg bad compilation
-assert_equal "foo", %q{
- def literal(*args, &block)
- s = ''.dup
- literal_append(s, *args, &block)
- s
- end
-
- def literal_append(sql, v)
- sql << v
- end
-
- literal("foo")
-}
-
-# regression test for accidentally having a parameter truncated
-# due to Rust/C signature mismatch. Used to crash with
-# > [BUG] rb_vm_insn_addr2insn: invalid insn address ...
-# or
-# > ... `Err` value: TryFromIntError(())'
-assert_normal_exit %q{
- n = 16384
- eval(
- "def foo(arg); " + "_=arg;" * n + '_=1;' + "Object; end"
- )
- foo 1
-}
-
-# Regression test for CantCompile not using starting_ctx
-assert_normal_exit %q{
- class Integer
- def ===(other)
- false
- end
- end
-
- def my_func(x)
- case x
- when 1
- 1
- when 2
- 2
- else
- 3
- end
- end
-
- my_func(1)
-}
-
-# Regression test for CantCompile not using starting_ctx
-assert_equal "ArgumentError", %q{
- def literal(*args, &block)
- s = ''.dup
- args = [1, 2, 3]
- literal_append(s, *args, &block)
- s
- end
-
- def literal_append(sql, v)
- [sql.inspect, v.inspect]
- end
-
- begin
- literal("foo")
- rescue ArgumentError
- "ArgumentError"
- end
-}
-
-# Rest with block
-# Simplified code from railsbench
-assert_equal '[{"/a"=>"b", :as=>:c, :via=>:post}, [], nil]', %q{
- def match(path, *rest, &block)
- [path, rest, block]
- end
-
- def map_method(method, args, &block)
- options = args.last
- args.pop
- options[:via] = method
- match(*args, options, &block)
- end
-
- def post(*args, &block)
- map_method(:post, args, &block)
- end
-
- post "/a" => "b", as: :c
-}
-
-# Test rest and kw_args
-assert_equal '[true, true, true, true]', %q{
- def my_func(*args, base: nil, sort: true)
- [args, base, sort]
- end
-
- def calling_my_func
- results = []
- results << (my_func("test") == [["test"], nil, true])
- results << (my_func("test", base: :base) == [["test"], :base, true])
- results << (my_func("test", sort: false) == [["test"], nil, false])
- results << (my_func("test", "other", base: :base) == [["test", "other"], :base, true])
- results
- end
- calling_my_func
-}
-
-# Test Integer#[] with 2 args
-assert_equal '0', %q{
- 3[0, 0]
-}
-
-# unspecified_bits + checkkeyword
-assert_equal '2', %q{
- def callee = 1
-
- # checkkeyword should see unspecified_bits=0 (use bar), not Integer 1 (set bar = foo).
- def foo(foo, bar: foo) = bar
-
- def entry(&block)
- # write 1 at stack[3]. Calling #callee spills stack[3].
- 1 + (1 + (1 + (1 + callee)))
- # &block is written to a register instead of stack[3]. When &block is popped and
- # unspecified_bits is pushed, it must be written to stack[3], not to a register.
- foo(1, bar: 2, &block)
- end
-
- entry # call branch_stub_hit (spill temps)
- entry # doesn't call branch_stub_hit (not spill temps)
-}
-
-# Test rest and optional_params
-assert_equal '[true, true, true, true]', %q{
- def my_func(stuff, base=nil, sort=true, *args)
- [stuff, base, sort, args]
- end
-
- def calling_my_func
- results = []
- results << (my_func("test") == ["test", nil, true, []])
- results << (my_func("test", :base) == ["test", :base, true, []])
- results << (my_func("test", :base, false) == ["test", :base, false, []])
- results << (my_func("test", :base, false, "other", "other") == ["test", :base, false, ["other", "other"]])
- results
- end
- calling_my_func
-}
-
-# Test rest and optional_params and splat
-assert_equal '[true, true, true, true, true]', %q{
- def my_func(stuff, base=nil, sort=true, *args)
- [stuff, base, sort, args]
- end
-
- def calling_my_func
- results = []
- splat = ["test"]
- results << (my_func(*splat) == ["test", nil, true, []])
- splat = [:base]
- results << (my_func("test", *splat) == ["test", :base, true, []])
- splat = [:base, false]
- results << (my_func("test", *splat) == ["test", :base, false, []])
- splat = [:base, false, "other", "other"]
- results << (my_func("test", *splat) == ["test", :base, false, ["other", "other"]])
- splat = ["test", :base, false, "other", "other"]
- results << (my_func(*splat) == ["test", :base, false, ["other", "other"]])
- results
- end
- calling_my_func
-}
-
-# Regresssion test: rest and optional and splat
-assert_equal 'true', %q{
- def my_func(base=nil, *args)
- [base, args]
- end
-
- def calling_my_func
- array = []
- my_func(:base, :rest1, *array) == [:base, [:rest1]]
- end
-
- calling_my_func
-}
-
-# Fix failed case for large splat
-assert_equal 'true', %q{
- def d(a, b=:b)
- end
-
- def calling_func
- ary = 1380888.times;
- d(*ary)
- end
- begin
- calling_func
- rescue ArgumentError
- true
- end
-} unless defined?(RubyVM::RJIT) && RubyVM::RJIT.enabled? # Not yet working on RJIT
diff --git a/bootstraptest/test_yjit_30k_ifelse.rb b/bootstraptest/test_yjit_30k_ifelse.rb
deleted file mode 100644
index c3afa95e4d..0000000000
--- a/bootstraptest/test_yjit_30k_ifelse.rb
+++ /dev/null
@@ -1,241023 +0,0 @@
-# This is a torture test for the JIT.
-# There are 30K tiny methods with if-else statements in a 30-deep call hierarchy.
-assert_equal '100000', %q{
-
-def fun_l0_n0(x)
- if (x < 1)
- fun_l1_n310(x)
- else
- fun_l1_n485(x)
- end
-end
-
-def fun_l0_n1(x)
- if (x < 1)
- fun_l1_n930(x)
- else
- fun_l1_n418(x)
- end
-end
-
-def fun_l0_n2(x)
- if (x < 1)
- fun_l1_n549(x)
- else
- fun_l1_n44(x)
- end
-end
-
-def fun_l0_n3(x)
- if (x < 1)
- fun_l1_n394(x)
- else
- fun_l1_n447(x)
- end
-end
-
-def fun_l0_n4(x)
- if (x < 1)
- fun_l1_n683(x)
- else
- fun_l1_n547(x)
- end
-end
-
-def fun_l0_n5(x)
- if (x < 1)
- fun_l1_n320(x)
- else
- fun_l1_n896(x)
- end
-end
-
-def fun_l0_n6(x)
- if (x < 1)
- fun_l1_n649(x)
- else
- fun_l1_n243(x)
- end
-end
-
-def fun_l0_n7(x)
- if (x < 1)
- fun_l1_n100(x)
- else
- fun_l1_n243(x)
- end
-end
-
-def fun_l0_n8(x)
- if (x < 1)
- fun_l1_n839(x)
- else
- fun_l1_n720(x)
- end
-end
-
-def fun_l0_n9(x)
- if (x < 1)
- fun_l1_n177(x)
- else
- fun_l1_n555(x)
- end
-end
-
-def fun_l0_n10(x)
- if (x < 1)
- fun_l1_n814(x)
- else
- fun_l1_n900(x)
- end
-end
-
-def fun_l0_n11(x)
- if (x < 1)
- fun_l1_n585(x)
- else
- fun_l1_n901(x)
- end
-end
-
-def fun_l0_n12(x)
- if (x < 1)
- fun_l1_n952(x)
- else
- fun_l1_n270(x)
- end
-end
-
-def fun_l0_n13(x)
- if (x < 1)
- fun_l1_n172(x)
- else
- fun_l1_n209(x)
- end
-end
-
-def fun_l0_n14(x)
- if (x < 1)
- fun_l1_n514(x)
- else
- fun_l1_n414(x)
- end
-end
-
-def fun_l0_n15(x)
- if (x < 1)
- fun_l1_n190(x)
- else
- fun_l1_n100(x)
- end
-end
-
-def fun_l0_n16(x)
- if (x < 1)
- fun_l1_n696(x)
- else
- fun_l1_n997(x)
- end
-end
-
-def fun_l0_n17(x)
- if (x < 1)
- fun_l1_n568(x)
- else
- fun_l1_n820(x)
- end
-end
-
-def fun_l0_n18(x)
- if (x < 1)
- fun_l1_n837(x)
- else
- fun_l1_n588(x)
- end
-end
-
-def fun_l0_n19(x)
- if (x < 1)
- fun_l1_n206(x)
- else
- fun_l1_n126(x)
- end
-end
-
-def fun_l0_n20(x)
- if (x < 1)
- fun_l1_n317(x)
- else
- fun_l1_n722(x)
- end
-end
-
-def fun_l0_n21(x)
- if (x < 1)
- fun_l1_n614(x)
- else
- fun_l1_n372(x)
- end
-end
-
-def fun_l0_n22(x)
- if (x < 1)
- fun_l1_n530(x)
- else
- fun_l1_n862(x)
- end
-end
-
-def fun_l0_n23(x)
- if (x < 1)
- fun_l1_n889(x)
- else
- fun_l1_n271(x)
- end
-end
-
-def fun_l0_n24(x)
- if (x < 1)
- fun_l1_n996(x)
- else
- fun_l1_n717(x)
- end
-end
-
-def fun_l0_n25(x)
- if (x < 1)
- fun_l1_n726(x)
- else
- fun_l1_n939(x)
- end
-end
-
-def fun_l0_n26(x)
- if (x < 1)
- fun_l1_n316(x)
- else
- fun_l1_n293(x)
- end
-end
-
-def fun_l0_n27(x)
- if (x < 1)
- fun_l1_n90(x)
- else
- fun_l1_n596(x)
- end
-end
-
-def fun_l0_n28(x)
- if (x < 1)
- fun_l1_n743(x)
- else
- fun_l1_n782(x)
- end
-end
-
-def fun_l0_n29(x)
- if (x < 1)
- fun_l1_n896(x)
- else
- fun_l1_n247(x)
- end
-end
-
-def fun_l0_n30(x)
- if (x < 1)
- fun_l1_n2(x)
- else
- fun_l1_n377(x)
- end
-end
-
-def fun_l0_n31(x)
- if (x < 1)
- fun_l1_n380(x)
- else
- fun_l1_n655(x)
- end
-end
-
-def fun_l0_n32(x)
- if (x < 1)
- fun_l1_n572(x)
- else
- fun_l1_n778(x)
- end
-end
-
-def fun_l0_n33(x)
- if (x < 1)
- fun_l1_n485(x)
- else
- fun_l1_n282(x)
- end
-end
-
-def fun_l0_n34(x)
- if (x < 1)
- fun_l1_n703(x)
- else
- fun_l1_n179(x)
- end
-end
-
-def fun_l0_n35(x)
- if (x < 1)
- fun_l1_n281(x)
- else
- fun_l1_n572(x)
- end
-end
-
-def fun_l0_n36(x)
- if (x < 1)
- fun_l1_n48(x)
- else
- fun_l1_n286(x)
- end
-end
-
-def fun_l0_n37(x)
- if (x < 1)
- fun_l1_n539(x)
- else
- fun_l1_n86(x)
- end
-end
-
-def fun_l0_n38(x)
- if (x < 1)
- fun_l1_n918(x)
- else
- fun_l1_n778(x)
- end
-end
-
-def fun_l0_n39(x)
- if (x < 1)
- fun_l1_n832(x)
- else
- fun_l1_n94(x)
- end
-end
-
-def fun_l0_n40(x)
- if (x < 1)
- fun_l1_n213(x)
- else
- fun_l1_n580(x)
- end
-end
-
-def fun_l0_n41(x)
- if (x < 1)
- fun_l1_n413(x)
- else
- fun_l1_n793(x)
- end
-end
-
-def fun_l0_n42(x)
- if (x < 1)
- fun_l1_n451(x)
- else
- fun_l1_n779(x)
- end
-end
-
-def fun_l0_n43(x)
- if (x < 1)
- fun_l1_n118(x)
- else
- fun_l1_n778(x)
- end
-end
-
-def fun_l0_n44(x)
- if (x < 1)
- fun_l1_n162(x)
- else
- fun_l1_n901(x)
- end
-end
-
-def fun_l0_n45(x)
- if (x < 1)
- fun_l1_n157(x)
- else
- fun_l1_n280(x)
- end
-end
-
-def fun_l0_n46(x)
- if (x < 1)
- fun_l1_n748(x)
- else
- fun_l1_n881(x)
- end
-end
-
-def fun_l0_n47(x)
- if (x < 1)
- fun_l1_n529(x)
- else
- fun_l1_n732(x)
- end
-end
-
-def fun_l0_n48(x)
- if (x < 1)
- fun_l1_n417(x)
- else
- fun_l1_n483(x)
- end
-end
-
-def fun_l0_n49(x)
- if (x < 1)
- fun_l1_n743(x)
- else
- fun_l1_n525(x)
- end
-end
-
-def fun_l0_n50(x)
- if (x < 1)
- fun_l1_n14(x)
- else
- fun_l1_n309(x)
- end
-end
-
-def fun_l0_n51(x)
- if (x < 1)
- fun_l1_n436(x)
- else
- fun_l1_n304(x)
- end
-end
-
-def fun_l0_n52(x)
- if (x < 1)
- fun_l1_n623(x)
- else
- fun_l1_n590(x)
- end
-end
-
-def fun_l0_n53(x)
- if (x < 1)
- fun_l1_n696(x)
- else
- fun_l1_n53(x)
- end
-end
-
-def fun_l0_n54(x)
- if (x < 1)
- fun_l1_n807(x)
- else
- fun_l1_n523(x)
- end
-end
-
-def fun_l0_n55(x)
- if (x < 1)
- fun_l1_n607(x)
- else
- fun_l1_n609(x)
- end
-end
-
-def fun_l0_n56(x)
- if (x < 1)
- fun_l1_n721(x)
- else
- fun_l1_n994(x)
- end
-end
-
-def fun_l0_n57(x)
- if (x < 1)
- fun_l1_n472(x)
- else
- fun_l1_n818(x)
- end
-end
-
-def fun_l0_n58(x)
- if (x < 1)
- fun_l1_n30(x)
- else
- fun_l1_n954(x)
- end
-end
-
-def fun_l0_n59(x)
- if (x < 1)
- fun_l1_n223(x)
- else
- fun_l1_n148(x)
- end
-end
-
-def fun_l0_n60(x)
- if (x < 1)
- fun_l1_n761(x)
- else
- fun_l1_n40(x)
- end
-end
-
-def fun_l0_n61(x)
- if (x < 1)
- fun_l1_n57(x)
- else
- fun_l1_n858(x)
- end
-end
-
-def fun_l0_n62(x)
- if (x < 1)
- fun_l1_n114(x)
- else
- fun_l1_n767(x)
- end
-end
-
-def fun_l0_n63(x)
- if (x < 1)
- fun_l1_n287(x)
- else
- fun_l1_n752(x)
- end
-end
-
-def fun_l0_n64(x)
- if (x < 1)
- fun_l1_n16(x)
- else
- fun_l1_n229(x)
- end
-end
-
-def fun_l0_n65(x)
- if (x < 1)
- fun_l1_n230(x)
- else
- fun_l1_n954(x)
- end
-end
-
-def fun_l0_n66(x)
- if (x < 1)
- fun_l1_n98(x)
- else
- fun_l1_n320(x)
- end
-end
-
-def fun_l0_n67(x)
- if (x < 1)
- fun_l1_n878(x)
- else
- fun_l1_n985(x)
- end
-end
-
-def fun_l0_n68(x)
- if (x < 1)
- fun_l1_n32(x)
- else
- fun_l1_n648(x)
- end
-end
-
-def fun_l0_n69(x)
- if (x < 1)
- fun_l1_n453(x)
- else
- fun_l1_n466(x)
- end
-end
-
-def fun_l0_n70(x)
- if (x < 1)
- fun_l1_n787(x)
- else
- fun_l1_n802(x)
- end
-end
-
-def fun_l0_n71(x)
- if (x < 1)
- fun_l1_n656(x)
- else
- fun_l1_n347(x)
- end
-end
-
-def fun_l0_n72(x)
- if (x < 1)
- fun_l1_n358(x)
- else
- fun_l1_n336(x)
- end
-end
-
-def fun_l0_n73(x)
- if (x < 1)
- fun_l1_n291(x)
- else
- fun_l1_n536(x)
- end
-end
-
-def fun_l0_n74(x)
- if (x < 1)
- fun_l1_n795(x)
- else
- fun_l1_n606(x)
- end
-end
-
-def fun_l0_n75(x)
- if (x < 1)
- fun_l1_n21(x)
- else
- fun_l1_n720(x)
- end
-end
-
-def fun_l0_n76(x)
- if (x < 1)
- fun_l1_n513(x)
- else
- fun_l1_n300(x)
- end
-end
-
-def fun_l0_n77(x)
- if (x < 1)
- fun_l1_n358(x)
- else
- fun_l1_n332(x)
- end
-end
-
-def fun_l0_n78(x)
- if (x < 1)
- fun_l1_n712(x)
- else
- fun_l1_n906(x)
- end
-end
-
-def fun_l0_n79(x)
- if (x < 1)
- fun_l1_n555(x)
- else
- fun_l1_n850(x)
- end
-end
-
-def fun_l0_n80(x)
- if (x < 1)
- fun_l1_n320(x)
- else
- fun_l1_n892(x)
- end
-end
-
-def fun_l0_n81(x)
- if (x < 1)
- fun_l1_n191(x)
- else
- fun_l1_n187(x)
- end
-end
-
-def fun_l0_n82(x)
- if (x < 1)
- fun_l1_n457(x)
- else
- fun_l1_n718(x)
- end
-end
-
-def fun_l0_n83(x)
- if (x < 1)
- fun_l1_n314(x)
- else
- fun_l1_n697(x)
- end
-end
-
-def fun_l0_n84(x)
- if (x < 1)
- fun_l1_n459(x)
- else
- fun_l1_n500(x)
- end
-end
-
-def fun_l0_n85(x)
- if (x < 1)
- fun_l1_n912(x)
- else
- fun_l1_n992(x)
- end
-end
-
-def fun_l0_n86(x)
- if (x < 1)
- fun_l1_n523(x)
- else
- fun_l1_n201(x)
- end
-end
-
-def fun_l0_n87(x)
- if (x < 1)
- fun_l1_n30(x)
- else
- fun_l1_n829(x)
- end
-end
-
-def fun_l0_n88(x)
- if (x < 1)
- fun_l1_n223(x)
- else
- fun_l1_n799(x)
- end
-end
-
-def fun_l0_n89(x)
- if (x < 1)
- fun_l1_n289(x)
- else
- fun_l1_n289(x)
- end
-end
-
-def fun_l0_n90(x)
- if (x < 1)
- fun_l1_n961(x)
- else
- fun_l1_n694(x)
- end
-end
-
-def fun_l0_n91(x)
- if (x < 1)
- fun_l1_n423(x)
- else
- fun_l1_n848(x)
- end
-end
-
-def fun_l0_n92(x)
- if (x < 1)
- fun_l1_n612(x)
- else
- fun_l1_n358(x)
- end
-end
-
-def fun_l0_n93(x)
- if (x < 1)
- fun_l1_n148(x)
- else
- fun_l1_n312(x)
- end
-end
-
-def fun_l0_n94(x)
- if (x < 1)
- fun_l1_n771(x)
- else
- fun_l1_n205(x)
- end
-end
-
-def fun_l0_n95(x)
- if (x < 1)
- fun_l1_n573(x)
- else
- fun_l1_n692(x)
- end
-end
-
-def fun_l0_n96(x)
- if (x < 1)
- fun_l1_n66(x)
- else
- fun_l1_n936(x)
- end
-end
-
-def fun_l0_n97(x)
- if (x < 1)
- fun_l1_n429(x)
- else
- fun_l1_n949(x)
- end
-end
-
-def fun_l0_n98(x)
- if (x < 1)
- fun_l1_n737(x)
- else
- fun_l1_n338(x)
- end
-end
-
-def fun_l0_n99(x)
- if (x < 1)
- fun_l1_n335(x)
- else
- fun_l1_n739(x)
- end
-end
-
-def fun_l0_n100(x)
- if (x < 1)
- fun_l1_n989(x)
- else
- fun_l1_n735(x)
- end
-end
-
-def fun_l0_n101(x)
- if (x < 1)
- fun_l1_n559(x)
- else
- fun_l1_n478(x)
- end
-end
-
-def fun_l0_n102(x)
- if (x < 1)
- fun_l1_n261(x)
- else
- fun_l1_n162(x)
- end
-end
-
-def fun_l0_n103(x)
- if (x < 1)
- fun_l1_n400(x)
- else
- fun_l1_n156(x)
- end
-end
-
-def fun_l0_n104(x)
- if (x < 1)
- fun_l1_n747(x)
- else
- fun_l1_n361(x)
- end
-end
-
-def fun_l0_n105(x)
- if (x < 1)
- fun_l1_n717(x)
- else
- fun_l1_n522(x)
- end
-end
-
-def fun_l0_n106(x)
- if (x < 1)
- fun_l1_n513(x)
- else
- fun_l1_n150(x)
- end
-end
-
-def fun_l0_n107(x)
- if (x < 1)
- fun_l1_n710(x)
- else
- fun_l1_n602(x)
- end
-end
-
-def fun_l0_n108(x)
- if (x < 1)
- fun_l1_n866(x)
- else
- fun_l1_n111(x)
- end
-end
-
-def fun_l0_n109(x)
- if (x < 1)
- fun_l1_n725(x)
- else
- fun_l1_n448(x)
- end
-end
-
-def fun_l0_n110(x)
- if (x < 1)
- fun_l1_n703(x)
- else
- fun_l1_n127(x)
- end
-end
-
-def fun_l0_n111(x)
- if (x < 1)
- fun_l1_n420(x)
- else
- fun_l1_n666(x)
- end
-end
-
-def fun_l0_n112(x)
- if (x < 1)
- fun_l1_n647(x)
- else
- fun_l1_n567(x)
- end
-end
-
-def fun_l0_n113(x)
- if (x < 1)
- fun_l1_n543(x)
- else
- fun_l1_n992(x)
- end
-end
-
-def fun_l0_n114(x)
- if (x < 1)
- fun_l1_n12(x)
- else
- fun_l1_n470(x)
- end
-end
-
-def fun_l0_n115(x)
- if (x < 1)
- fun_l1_n25(x)
- else
- fun_l1_n917(x)
- end
-end
-
-def fun_l0_n116(x)
- if (x < 1)
- fun_l1_n201(x)
- else
- fun_l1_n110(x)
- end
-end
-
-def fun_l0_n117(x)
- if (x < 1)
- fun_l1_n222(x)
- else
- fun_l1_n747(x)
- end
-end
-
-def fun_l0_n118(x)
- if (x < 1)
- fun_l1_n990(x)
- else
- fun_l1_n794(x)
- end
-end
-
-def fun_l0_n119(x)
- if (x < 1)
- fun_l1_n712(x)
- else
- fun_l1_n5(x)
- end
-end
-
-def fun_l0_n120(x)
- if (x < 1)
- fun_l1_n28(x)
- else
- fun_l1_n89(x)
- end
-end
-
-def fun_l0_n121(x)
- if (x < 1)
- fun_l1_n341(x)
- else
- fun_l1_n983(x)
- end
-end
-
-def fun_l0_n122(x)
- if (x < 1)
- fun_l1_n123(x)
- else
- fun_l1_n452(x)
- end
-end
-
-def fun_l0_n123(x)
- if (x < 1)
- fun_l1_n514(x)
- else
- fun_l1_n949(x)
- end
-end
-
-def fun_l0_n124(x)
- if (x < 1)
- fun_l1_n280(x)
- else
- fun_l1_n281(x)
- end
-end
-
-def fun_l0_n125(x)
- if (x < 1)
- fun_l1_n512(x)
- else
- fun_l1_n772(x)
- end
-end
-
-def fun_l0_n126(x)
- if (x < 1)
- fun_l1_n911(x)
- else
- fun_l1_n693(x)
- end
-end
-
-def fun_l0_n127(x)
- if (x < 1)
- fun_l1_n633(x)
- else
- fun_l1_n574(x)
- end
-end
-
-def fun_l0_n128(x)
- if (x < 1)
- fun_l1_n318(x)
- else
- fun_l1_n266(x)
- end
-end
-
-def fun_l0_n129(x)
- if (x < 1)
- fun_l1_n677(x)
- else
- fun_l1_n10(x)
- end
-end
-
-def fun_l0_n130(x)
- if (x < 1)
- fun_l1_n994(x)
- else
- fun_l1_n48(x)
- end
-end
-
-def fun_l0_n131(x)
- if (x < 1)
- fun_l1_n335(x)
- else
- fun_l1_n473(x)
- end
-end
-
-def fun_l0_n132(x)
- if (x < 1)
- fun_l1_n641(x)
- else
- fun_l1_n48(x)
- end
-end
-
-def fun_l0_n133(x)
- if (x < 1)
- fun_l1_n914(x)
- else
- fun_l1_n818(x)
- end
-end
-
-def fun_l0_n134(x)
- if (x < 1)
- fun_l1_n479(x)
- else
- fun_l1_n761(x)
- end
-end
-
-def fun_l0_n135(x)
- if (x < 1)
- fun_l1_n186(x)
- else
- fun_l1_n692(x)
- end
-end
-
-def fun_l0_n136(x)
- if (x < 1)
- fun_l1_n325(x)
- else
- fun_l1_n279(x)
- end
-end
-
-def fun_l0_n137(x)
- if (x < 1)
- fun_l1_n493(x)
- else
- fun_l1_n293(x)
- end
-end
-
-def fun_l0_n138(x)
- if (x < 1)
- fun_l1_n788(x)
- else
- fun_l1_n364(x)
- end
-end
-
-def fun_l0_n139(x)
- if (x < 1)
- fun_l1_n565(x)
- else
- fun_l1_n63(x)
- end
-end
-
-def fun_l0_n140(x)
- if (x < 1)
- fun_l1_n128(x)
- else
- fun_l1_n299(x)
- end
-end
-
-def fun_l0_n141(x)
- if (x < 1)
- fun_l1_n782(x)
- else
- fun_l1_n195(x)
- end
-end
-
-def fun_l0_n142(x)
- if (x < 1)
- fun_l1_n696(x)
- else
- fun_l1_n117(x)
- end
-end
-
-def fun_l0_n143(x)
- if (x < 1)
- fun_l1_n263(x)
- else
- fun_l1_n683(x)
- end
-end
-
-def fun_l0_n144(x)
- if (x < 1)
- fun_l1_n633(x)
- else
- fun_l1_n92(x)
- end
-end
-
-def fun_l0_n145(x)
- if (x < 1)
- fun_l1_n626(x)
- else
- fun_l1_n201(x)
- end
-end
-
-def fun_l0_n146(x)
- if (x < 1)
- fun_l1_n296(x)
- else
- fun_l1_n425(x)
- end
-end
-
-def fun_l0_n147(x)
- if (x < 1)
- fun_l1_n395(x)
- else
- fun_l1_n750(x)
- end
-end
-
-def fun_l0_n148(x)
- if (x < 1)
- fun_l1_n164(x)
- else
- fun_l1_n580(x)
- end
-end
-
-def fun_l0_n149(x)
- if (x < 1)
- fun_l1_n904(x)
- else
- fun_l1_n264(x)
- end
-end
-
-def fun_l0_n150(x)
- if (x < 1)
- fun_l1_n383(x)
- else
- fun_l1_n558(x)
- end
-end
-
-def fun_l0_n151(x)
- if (x < 1)
- fun_l1_n522(x)
- else
- fun_l1_n735(x)
- end
-end
-
-def fun_l0_n152(x)
- if (x < 1)
- fun_l1_n496(x)
- else
- fun_l1_n562(x)
- end
-end
-
-def fun_l0_n153(x)
- if (x < 1)
- fun_l1_n374(x)
- else
- fun_l1_n561(x)
- end
-end
-
-def fun_l0_n154(x)
- if (x < 1)
- fun_l1_n314(x)
- else
- fun_l1_n368(x)
- end
-end
-
-def fun_l0_n155(x)
- if (x < 1)
- fun_l1_n456(x)
- else
- fun_l1_n189(x)
- end
-end
-
-def fun_l0_n156(x)
- if (x < 1)
- fun_l1_n46(x)
- else
- fun_l1_n620(x)
- end
-end
-
-def fun_l0_n157(x)
- if (x < 1)
- fun_l1_n259(x)
- else
- fun_l1_n742(x)
- end
-end
-
-def fun_l0_n158(x)
- if (x < 1)
- fun_l1_n881(x)
- else
- fun_l1_n786(x)
- end
-end
-
-def fun_l0_n159(x)
- if (x < 1)
- fun_l1_n607(x)
- else
- fun_l1_n177(x)
- end
-end
-
-def fun_l0_n160(x)
- if (x < 1)
- fun_l1_n824(x)
- else
- fun_l1_n415(x)
- end
-end
-
-def fun_l0_n161(x)
- if (x < 1)
- fun_l1_n443(x)
- else
- fun_l1_n787(x)
- end
-end
-
-def fun_l0_n162(x)
- if (x < 1)
- fun_l1_n124(x)
- else
- fun_l1_n529(x)
- end
-end
-
-def fun_l0_n163(x)
- if (x < 1)
- fun_l1_n696(x)
- else
- fun_l1_n96(x)
- end
-end
-
-def fun_l0_n164(x)
- if (x < 1)
- fun_l1_n775(x)
- else
- fun_l1_n549(x)
- end
-end
-
-def fun_l0_n165(x)
- if (x < 1)
- fun_l1_n860(x)
- else
- fun_l1_n212(x)
- end
-end
-
-def fun_l0_n166(x)
- if (x < 1)
- fun_l1_n378(x)
- else
- fun_l1_n904(x)
- end
-end
-
-def fun_l0_n167(x)
- if (x < 1)
- fun_l1_n15(x)
- else
- fun_l1_n640(x)
- end
-end
-
-def fun_l0_n168(x)
- if (x < 1)
- fun_l1_n771(x)
- else
- fun_l1_n861(x)
- end
-end
-
-def fun_l0_n169(x)
- if (x < 1)
- fun_l1_n468(x)
- else
- fun_l1_n586(x)
- end
-end
-
-def fun_l0_n170(x)
- if (x < 1)
- fun_l1_n477(x)
- else
- fun_l1_n674(x)
- end
-end
-
-def fun_l0_n171(x)
- if (x < 1)
- fun_l1_n509(x)
- else
- fun_l1_n64(x)
- end
-end
-
-def fun_l0_n172(x)
- if (x < 1)
- fun_l1_n612(x)
- else
- fun_l1_n828(x)
- end
-end
-
-def fun_l0_n173(x)
- if (x < 1)
- fun_l1_n440(x)
- else
- fun_l1_n204(x)
- end
-end
-
-def fun_l0_n174(x)
- if (x < 1)
- fun_l1_n259(x)
- else
- fun_l1_n947(x)
- end
-end
-
-def fun_l0_n175(x)
- if (x < 1)
- fun_l1_n402(x)
- else
- fun_l1_n588(x)
- end
-end
-
-def fun_l0_n176(x)
- if (x < 1)
- fun_l1_n245(x)
- else
- fun_l1_n540(x)
- end
-end
-
-def fun_l0_n177(x)
- if (x < 1)
- fun_l1_n869(x)
- else
- fun_l1_n249(x)
- end
-end
-
-def fun_l0_n178(x)
- if (x < 1)
- fun_l1_n830(x)
- else
- fun_l1_n210(x)
- end
-end
-
-def fun_l0_n179(x)
- if (x < 1)
- fun_l1_n692(x)
- else
- fun_l1_n222(x)
- end
-end
-
-def fun_l0_n180(x)
- if (x < 1)
- fun_l1_n220(x)
- else
- fun_l1_n281(x)
- end
-end
-
-def fun_l0_n181(x)
- if (x < 1)
- fun_l1_n523(x)
- else
- fun_l1_n618(x)
- end
-end
-
-def fun_l0_n182(x)
- if (x < 1)
- fun_l1_n44(x)
- else
- fun_l1_n422(x)
- end
-end
-
-def fun_l0_n183(x)
- if (x < 1)
- fun_l1_n944(x)
- else
- fun_l1_n230(x)
- end
-end
-
-def fun_l0_n184(x)
- if (x < 1)
- fun_l1_n678(x)
- else
- fun_l1_n121(x)
- end
-end
-
-def fun_l0_n185(x)
- if (x < 1)
- fun_l1_n73(x)
- else
- fun_l1_n398(x)
- end
-end
-
-def fun_l0_n186(x)
- if (x < 1)
- fun_l1_n121(x)
- else
- fun_l1_n689(x)
- end
-end
-
-def fun_l0_n187(x)
- if (x < 1)
- fun_l1_n946(x)
- else
- fun_l1_n613(x)
- end
-end
-
-def fun_l0_n188(x)
- if (x < 1)
- fun_l1_n987(x)
- else
- fun_l1_n785(x)
- end
-end
-
-def fun_l0_n189(x)
- if (x < 1)
- fun_l1_n181(x)
- else
- fun_l1_n644(x)
- end
-end
-
-def fun_l0_n190(x)
- if (x < 1)
- fun_l1_n623(x)
- else
- fun_l1_n679(x)
- end
-end
-
-def fun_l0_n191(x)
- if (x < 1)
- fun_l1_n784(x)
- else
- fun_l1_n274(x)
- end
-end
-
-def fun_l0_n192(x)
- if (x < 1)
- fun_l1_n71(x)
- else
- fun_l1_n773(x)
- end
-end
-
-def fun_l0_n193(x)
- if (x < 1)
- fun_l1_n516(x)
- else
- fun_l1_n496(x)
- end
-end
-
-def fun_l0_n194(x)
- if (x < 1)
- fun_l1_n608(x)
- else
- fun_l1_n460(x)
- end
-end
-
-def fun_l0_n195(x)
- if (x < 1)
- fun_l1_n25(x)
- else
- fun_l1_n437(x)
- end
-end
-
-def fun_l0_n196(x)
- if (x < 1)
- fun_l1_n410(x)
- else
- fun_l1_n674(x)
- end
-end
-
-def fun_l0_n197(x)
- if (x < 1)
- fun_l1_n949(x)
- else
- fun_l1_n708(x)
- end
-end
-
-def fun_l0_n198(x)
- if (x < 1)
- fun_l1_n714(x)
- else
- fun_l1_n119(x)
- end
-end
-
-def fun_l0_n199(x)
- if (x < 1)
- fun_l1_n41(x)
- else
- fun_l1_n865(x)
- end
-end
-
-def fun_l0_n200(x)
- if (x < 1)
- fun_l1_n383(x)
- else
- fun_l1_n90(x)
- end
-end
-
-def fun_l0_n201(x)
- if (x < 1)
- fun_l1_n581(x)
- else
- fun_l1_n273(x)
- end
-end
-
-def fun_l0_n202(x)
- if (x < 1)
- fun_l1_n350(x)
- else
- fun_l1_n425(x)
- end
-end
-
-def fun_l0_n203(x)
- if (x < 1)
- fun_l1_n259(x)
- else
- fun_l1_n922(x)
- end
-end
-
-def fun_l0_n204(x)
- if (x < 1)
- fun_l1_n448(x)
- else
- fun_l1_n741(x)
- end
-end
-
-def fun_l0_n205(x)
- if (x < 1)
- fun_l1_n86(x)
- else
- fun_l1_n618(x)
- end
-end
-
-def fun_l0_n206(x)
- if (x < 1)
- fun_l1_n412(x)
- else
- fun_l1_n646(x)
- end
-end
-
-def fun_l0_n207(x)
- if (x < 1)
- fun_l1_n196(x)
- else
- fun_l1_n496(x)
- end
-end
-
-def fun_l0_n208(x)
- if (x < 1)
- fun_l1_n777(x)
- else
- fun_l1_n150(x)
- end
-end
-
-def fun_l0_n209(x)
- if (x < 1)
- fun_l1_n20(x)
- else
- fun_l1_n718(x)
- end
-end
-
-def fun_l0_n210(x)
- if (x < 1)
- fun_l1_n934(x)
- else
- fun_l1_n416(x)
- end
-end
-
-def fun_l0_n211(x)
- if (x < 1)
- fun_l1_n803(x)
- else
- fun_l1_n636(x)
- end
-end
-
-def fun_l0_n212(x)
- if (x < 1)
- fun_l1_n93(x)
- else
- fun_l1_n791(x)
- end
-end
-
-def fun_l0_n213(x)
- if (x < 1)
- fun_l1_n76(x)
- else
- fun_l1_n172(x)
- end
-end
-
-def fun_l0_n214(x)
- if (x < 1)
- fun_l1_n103(x)
- else
- fun_l1_n381(x)
- end
-end
-
-def fun_l0_n215(x)
- if (x < 1)
- fun_l1_n433(x)
- else
- fun_l1_n349(x)
- end
-end
-
-def fun_l0_n216(x)
- if (x < 1)
- fun_l1_n154(x)
- else
- fun_l1_n740(x)
- end
-end
-
-def fun_l0_n217(x)
- if (x < 1)
- fun_l1_n927(x)
- else
- fun_l1_n886(x)
- end
-end
-
-def fun_l0_n218(x)
- if (x < 1)
- fun_l1_n804(x)
- else
- fun_l1_n6(x)
- end
-end
-
-def fun_l0_n219(x)
- if (x < 1)
- fun_l1_n921(x)
- else
- fun_l1_n121(x)
- end
-end
-
-def fun_l0_n220(x)
- if (x < 1)
- fun_l1_n732(x)
- else
- fun_l1_n224(x)
- end
-end
-
-def fun_l0_n221(x)
- if (x < 1)
- fun_l1_n818(x)
- else
- fun_l1_n105(x)
- end
-end
-
-def fun_l0_n222(x)
- if (x < 1)
- fun_l1_n162(x)
- else
- fun_l1_n700(x)
- end
-end
-
-def fun_l0_n223(x)
- if (x < 1)
- fun_l1_n57(x)
- else
- fun_l1_n734(x)
- end
-end
-
-def fun_l0_n224(x)
- if (x < 1)
- fun_l1_n283(x)
- else
- fun_l1_n87(x)
- end
-end
-
-def fun_l0_n225(x)
- if (x < 1)
- fun_l1_n623(x)
- else
- fun_l1_n363(x)
- end
-end
-
-def fun_l0_n226(x)
- if (x < 1)
- fun_l1_n962(x)
- else
- fun_l1_n660(x)
- end
-end
-
-def fun_l0_n227(x)
- if (x < 1)
- fun_l1_n255(x)
- else
- fun_l1_n536(x)
- end
-end
-
-def fun_l0_n228(x)
- if (x < 1)
- fun_l1_n377(x)
- else
- fun_l1_n249(x)
- end
-end
-
-def fun_l0_n229(x)
- if (x < 1)
- fun_l1_n527(x)
- else
- fun_l1_n691(x)
- end
-end
-
-def fun_l0_n230(x)
- if (x < 1)
- fun_l1_n781(x)
- else
- fun_l1_n494(x)
- end
-end
-
-def fun_l0_n231(x)
- if (x < 1)
- fun_l1_n889(x)
- else
- fun_l1_n967(x)
- end
-end
-
-def fun_l0_n232(x)
- if (x < 1)
- fun_l1_n509(x)
- else
- fun_l1_n910(x)
- end
-end
-
-def fun_l0_n233(x)
- if (x < 1)
- fun_l1_n354(x)
- else
- fun_l1_n5(x)
- end
-end
-
-def fun_l0_n234(x)
- if (x < 1)
- fun_l1_n423(x)
- else
- fun_l1_n788(x)
- end
-end
-
-def fun_l0_n235(x)
- if (x < 1)
- fun_l1_n632(x)
- else
- fun_l1_n705(x)
- end
-end
-
-def fun_l0_n236(x)
- if (x < 1)
- fun_l1_n955(x)
- else
- fun_l1_n908(x)
- end
-end
-
-def fun_l0_n237(x)
- if (x < 1)
- fun_l1_n329(x)
- else
- fun_l1_n2(x)
- end
-end
-
-def fun_l0_n238(x)
- if (x < 1)
- fun_l1_n767(x)
- else
- fun_l1_n766(x)
- end
-end
-
-def fun_l0_n239(x)
- if (x < 1)
- fun_l1_n304(x)
- else
- fun_l1_n507(x)
- end
-end
-
-def fun_l0_n240(x)
- if (x < 1)
- fun_l1_n845(x)
- else
- fun_l1_n777(x)
- end
-end
-
-def fun_l0_n241(x)
- if (x < 1)
- fun_l1_n69(x)
- else
- fun_l1_n260(x)
- end
-end
-
-def fun_l0_n242(x)
- if (x < 1)
- fun_l1_n194(x)
- else
- fun_l1_n412(x)
- end
-end
-
-def fun_l0_n243(x)
- if (x < 1)
- fun_l1_n974(x)
- else
- fun_l1_n922(x)
- end
-end
-
-def fun_l0_n244(x)
- if (x < 1)
- fun_l1_n532(x)
- else
- fun_l1_n530(x)
- end
-end
-
-def fun_l0_n245(x)
- if (x < 1)
- fun_l1_n554(x)
- else
- fun_l1_n656(x)
- end
-end
-
-def fun_l0_n246(x)
- if (x < 1)
- fun_l1_n253(x)
- else
- fun_l1_n235(x)
- end
-end
-
-def fun_l0_n247(x)
- if (x < 1)
- fun_l1_n754(x)
- else
- fun_l1_n775(x)
- end
-end
-
-def fun_l0_n248(x)
- if (x < 1)
- fun_l1_n89(x)
- else
- fun_l1_n129(x)
- end
-end
-
-def fun_l0_n249(x)
- if (x < 1)
- fun_l1_n284(x)
- else
- fun_l1_n642(x)
- end
-end
-
-def fun_l0_n250(x)
- if (x < 1)
- fun_l1_n67(x)
- else
- fun_l1_n867(x)
- end
-end
-
-def fun_l0_n251(x)
- if (x < 1)
- fun_l1_n926(x)
- else
- fun_l1_n442(x)
- end
-end
-
-def fun_l0_n252(x)
- if (x < 1)
- fun_l1_n196(x)
- else
- fun_l1_n583(x)
- end
-end
-
-def fun_l0_n253(x)
- if (x < 1)
- fun_l1_n966(x)
- else
- fun_l1_n810(x)
- end
-end
-
-def fun_l0_n254(x)
- if (x < 1)
- fun_l1_n984(x)
- else
- fun_l1_n752(x)
- end
-end
-
-def fun_l0_n255(x)
- if (x < 1)
- fun_l1_n941(x)
- else
- fun_l1_n744(x)
- end
-end
-
-def fun_l0_n256(x)
- if (x < 1)
- fun_l1_n785(x)
- else
- fun_l1_n610(x)
- end
-end
-
-def fun_l0_n257(x)
- if (x < 1)
- fun_l1_n622(x)
- else
- fun_l1_n730(x)
- end
-end
-
-def fun_l0_n258(x)
- if (x < 1)
- fun_l1_n453(x)
- else
- fun_l1_n641(x)
- end
-end
-
-def fun_l0_n259(x)
- if (x < 1)
- fun_l1_n407(x)
- else
- fun_l1_n818(x)
- end
-end
-
-def fun_l0_n260(x)
- if (x < 1)
- fun_l1_n252(x)
- else
- fun_l1_n205(x)
- end
-end
-
-def fun_l0_n261(x)
- if (x < 1)
- fun_l1_n940(x)
- else
- fun_l1_n678(x)
- end
-end
-
-def fun_l0_n262(x)
- if (x < 1)
- fun_l1_n350(x)
- else
- fun_l1_n496(x)
- end
-end
-
-def fun_l0_n263(x)
- if (x < 1)
- fun_l1_n688(x)
- else
- fun_l1_n193(x)
- end
-end
-
-def fun_l0_n264(x)
- if (x < 1)
- fun_l1_n366(x)
- else
- fun_l1_n790(x)
- end
-end
-
-def fun_l0_n265(x)
- if (x < 1)
- fun_l1_n592(x)
- else
- fun_l1_n93(x)
- end
-end
-
-def fun_l0_n266(x)
- if (x < 1)
- fun_l1_n189(x)
- else
- fun_l1_n467(x)
- end
-end
-
-def fun_l0_n267(x)
- if (x < 1)
- fun_l1_n813(x)
- else
- fun_l1_n7(x)
- end
-end
-
-def fun_l0_n268(x)
- if (x < 1)
- fun_l1_n516(x)
- else
- fun_l1_n271(x)
- end
-end
-
-def fun_l0_n269(x)
- if (x < 1)
- fun_l1_n0(x)
- else
- fun_l1_n121(x)
- end
-end
-
-def fun_l0_n270(x)
- if (x < 1)
- fun_l1_n634(x)
- else
- fun_l1_n726(x)
- end
-end
-
-def fun_l0_n271(x)
- if (x < 1)
- fun_l1_n192(x)
- else
- fun_l1_n468(x)
- end
-end
-
-def fun_l0_n272(x)
- if (x < 1)
- fun_l1_n278(x)
- else
- fun_l1_n355(x)
- end
-end
-
-def fun_l0_n273(x)
- if (x < 1)
- fun_l1_n354(x)
- else
- fun_l1_n87(x)
- end
-end
-
-def fun_l0_n274(x)
- if (x < 1)
- fun_l1_n643(x)
- else
- fun_l1_n806(x)
- end
-end
-
-def fun_l0_n275(x)
- if (x < 1)
- fun_l1_n389(x)
- else
- fun_l1_n559(x)
- end
-end
-
-def fun_l0_n276(x)
- if (x < 1)
- fun_l1_n283(x)
- else
- fun_l1_n539(x)
- end
-end
-
-def fun_l0_n277(x)
- if (x < 1)
- fun_l1_n0(x)
- else
- fun_l1_n351(x)
- end
-end
-
-def fun_l0_n278(x)
- if (x < 1)
- fun_l1_n813(x)
- else
- fun_l1_n513(x)
- end
-end
-
-def fun_l0_n279(x)
- if (x < 1)
- fun_l1_n501(x)
- else
- fun_l1_n967(x)
- end
-end
-
-def fun_l0_n280(x)
- if (x < 1)
- fun_l1_n727(x)
- else
- fun_l1_n232(x)
- end
-end
-
-def fun_l0_n281(x)
- if (x < 1)
- fun_l1_n946(x)
- else
- fun_l1_n693(x)
- end
-end
-
-def fun_l0_n282(x)
- if (x < 1)
- fun_l1_n260(x)
- else
- fun_l1_n525(x)
- end
-end
-
-def fun_l0_n283(x)
- if (x < 1)
- fun_l1_n957(x)
- else
- fun_l1_n817(x)
- end
-end
-
-def fun_l0_n284(x)
- if (x < 1)
- fun_l1_n91(x)
- else
- fun_l1_n735(x)
- end
-end
-
-def fun_l0_n285(x)
- if (x < 1)
- fun_l1_n71(x)
- else
- fun_l1_n24(x)
- end
-end
-
-def fun_l0_n286(x)
- if (x < 1)
- fun_l1_n594(x)
- else
- fun_l1_n747(x)
- end
-end
-
-def fun_l0_n287(x)
- if (x < 1)
- fun_l1_n869(x)
- else
- fun_l1_n414(x)
- end
-end
-
-def fun_l0_n288(x)
- if (x < 1)
- fun_l1_n182(x)
- else
- fun_l1_n835(x)
- end
-end
-
-def fun_l0_n289(x)
- if (x < 1)
- fun_l1_n188(x)
- else
- fun_l1_n949(x)
- end
-end
-
-def fun_l0_n290(x)
- if (x < 1)
- fun_l1_n35(x)
- else
- fun_l1_n259(x)
- end
-end
-
-def fun_l0_n291(x)
- if (x < 1)
- fun_l1_n593(x)
- else
- fun_l1_n810(x)
- end
-end
-
-def fun_l0_n292(x)
- if (x < 1)
- fun_l1_n680(x)
- else
- fun_l1_n564(x)
- end
-end
-
-def fun_l0_n293(x)
- if (x < 1)
- fun_l1_n57(x)
- else
- fun_l1_n91(x)
- end
-end
-
-def fun_l0_n294(x)
- if (x < 1)
- fun_l1_n945(x)
- else
- fun_l1_n807(x)
- end
-end
-
-def fun_l0_n295(x)
- if (x < 1)
- fun_l1_n442(x)
- else
- fun_l1_n123(x)
- end
-end
-
-def fun_l0_n296(x)
- if (x < 1)
- fun_l1_n536(x)
- else
- fun_l1_n987(x)
- end
-end
-
-def fun_l0_n297(x)
- if (x < 1)
- fun_l1_n519(x)
- else
- fun_l1_n657(x)
- end
-end
-
-def fun_l0_n298(x)
- if (x < 1)
- fun_l1_n204(x)
- else
- fun_l1_n437(x)
- end
-end
-
-def fun_l0_n299(x)
- if (x < 1)
- fun_l1_n289(x)
- else
- fun_l1_n385(x)
- end
-end
-
-def fun_l0_n300(x)
- if (x < 1)
- fun_l1_n629(x)
- else
- fun_l1_n803(x)
- end
-end
-
-def fun_l0_n301(x)
- if (x < 1)
- fun_l1_n576(x)
- else
- fun_l1_n921(x)
- end
-end
-
-def fun_l0_n302(x)
- if (x < 1)
- fun_l1_n466(x)
- else
- fun_l1_n475(x)
- end
-end
-
-def fun_l0_n303(x)
- if (x < 1)
- fun_l1_n658(x)
- else
- fun_l1_n333(x)
- end
-end
-
-def fun_l0_n304(x)
- if (x < 1)
- fun_l1_n728(x)
- else
- fun_l1_n749(x)
- end
-end
-
-def fun_l0_n305(x)
- if (x < 1)
- fun_l1_n68(x)
- else
- fun_l1_n552(x)
- end
-end
-
-def fun_l0_n306(x)
- if (x < 1)
- fun_l1_n633(x)
- else
- fun_l1_n958(x)
- end
-end
-
-def fun_l0_n307(x)
- if (x < 1)
- fun_l1_n79(x)
- else
- fun_l1_n386(x)
- end
-end
-
-def fun_l0_n308(x)
- if (x < 1)
- fun_l1_n831(x)
- else
- fun_l1_n176(x)
- end
-end
-
-def fun_l0_n309(x)
- if (x < 1)
- fun_l1_n770(x)
- else
- fun_l1_n334(x)
- end
-end
-
-def fun_l0_n310(x)
- if (x < 1)
- fun_l1_n21(x)
- else
- fun_l1_n643(x)
- end
-end
-
-def fun_l0_n311(x)
- if (x < 1)
- fun_l1_n673(x)
- else
- fun_l1_n298(x)
- end
-end
-
-def fun_l0_n312(x)
- if (x < 1)
- fun_l1_n753(x)
- else
- fun_l1_n817(x)
- end
-end
-
-def fun_l0_n313(x)
- if (x < 1)
- fun_l1_n299(x)
- else
- fun_l1_n350(x)
- end
-end
-
-def fun_l0_n314(x)
- if (x < 1)
- fun_l1_n190(x)
- else
- fun_l1_n519(x)
- end
-end
-
-def fun_l0_n315(x)
- if (x < 1)
- fun_l1_n934(x)
- else
- fun_l1_n416(x)
- end
-end
-
-def fun_l0_n316(x)
- if (x < 1)
- fun_l1_n695(x)
- else
- fun_l1_n377(x)
- end
-end
-
-def fun_l0_n317(x)
- if (x < 1)
- fun_l1_n194(x)
- else
- fun_l1_n747(x)
- end
-end
-
-def fun_l0_n318(x)
- if (x < 1)
- fun_l1_n145(x)
- else
- fun_l1_n761(x)
- end
-end
-
-def fun_l0_n319(x)
- if (x < 1)
- fun_l1_n223(x)
- else
- fun_l1_n237(x)
- end
-end
-
-def fun_l0_n320(x)
- if (x < 1)
- fun_l1_n907(x)
- else
- fun_l1_n653(x)
- end
-end
-
-def fun_l0_n321(x)
- if (x < 1)
- fun_l1_n216(x)
- else
- fun_l1_n67(x)
- end
-end
-
-def fun_l0_n322(x)
- if (x < 1)
- fun_l1_n658(x)
- else
- fun_l1_n948(x)
- end
-end
-
-def fun_l0_n323(x)
- if (x < 1)
- fun_l1_n358(x)
- else
- fun_l1_n926(x)
- end
-end
-
-def fun_l0_n324(x)
- if (x < 1)
- fun_l1_n533(x)
- else
- fun_l1_n252(x)
- end
-end
-
-def fun_l0_n325(x)
- if (x < 1)
- fun_l1_n284(x)
- else
- fun_l1_n670(x)
- end
-end
-
-def fun_l0_n326(x)
- if (x < 1)
- fun_l1_n327(x)
- else
- fun_l1_n298(x)
- end
-end
-
-def fun_l0_n327(x)
- if (x < 1)
- fun_l1_n837(x)
- else
- fun_l1_n890(x)
- end
-end
-
-def fun_l0_n328(x)
- if (x < 1)
- fun_l1_n941(x)
- else
- fun_l1_n794(x)
- end
-end
-
-def fun_l0_n329(x)
- if (x < 1)
- fun_l1_n859(x)
- else
- fun_l1_n970(x)
- end
-end
-
-def fun_l0_n330(x)
- if (x < 1)
- fun_l1_n282(x)
- else
- fun_l1_n569(x)
- end
-end
-
-def fun_l0_n331(x)
- if (x < 1)
- fun_l1_n33(x)
- else
- fun_l1_n525(x)
- end
-end
-
-def fun_l0_n332(x)
- if (x < 1)
- fun_l1_n847(x)
- else
- fun_l1_n540(x)
- end
-end
-
-def fun_l0_n333(x)
- if (x < 1)
- fun_l1_n485(x)
- else
- fun_l1_n756(x)
- end
-end
-
-def fun_l0_n334(x)
- if (x < 1)
- fun_l1_n396(x)
- else
- fun_l1_n781(x)
- end
-end
-
-def fun_l0_n335(x)
- if (x < 1)
- fun_l1_n225(x)
- else
- fun_l1_n417(x)
- end
-end
-
-def fun_l0_n336(x)
- if (x < 1)
- fun_l1_n906(x)
- else
- fun_l1_n301(x)
- end
-end
-
-def fun_l0_n337(x)
- if (x < 1)
- fun_l1_n863(x)
- else
- fun_l1_n409(x)
- end
-end
-
-def fun_l0_n338(x)
- if (x < 1)
- fun_l1_n103(x)
- else
- fun_l1_n460(x)
- end
-end
-
-def fun_l0_n339(x)
- if (x < 1)
- fun_l1_n787(x)
- else
- fun_l1_n434(x)
- end
-end
-
-def fun_l0_n340(x)
- if (x < 1)
- fun_l1_n308(x)
- else
- fun_l1_n875(x)
- end
-end
-
-def fun_l0_n341(x)
- if (x < 1)
- fun_l1_n146(x)
- else
- fun_l1_n566(x)
- end
-end
-
-def fun_l0_n342(x)
- if (x < 1)
- fun_l1_n837(x)
- else
- fun_l1_n770(x)
- end
-end
-
-def fun_l0_n343(x)
- if (x < 1)
- fun_l1_n668(x)
- else
- fun_l1_n60(x)
- end
-end
-
-def fun_l0_n344(x)
- if (x < 1)
- fun_l1_n305(x)
- else
- fun_l1_n388(x)
- end
-end
-
-def fun_l0_n345(x)
- if (x < 1)
- fun_l1_n796(x)
- else
- fun_l1_n920(x)
- end
-end
-
-def fun_l0_n346(x)
- if (x < 1)
- fun_l1_n257(x)
- else
- fun_l1_n229(x)
- end
-end
-
-def fun_l0_n347(x)
- if (x < 1)
- fun_l1_n740(x)
- else
- fun_l1_n372(x)
- end
-end
-
-def fun_l0_n348(x)
- if (x < 1)
- fun_l1_n698(x)
- else
- fun_l1_n63(x)
- end
-end
-
-def fun_l0_n349(x)
- if (x < 1)
- fun_l1_n4(x)
- else
- fun_l1_n119(x)
- end
-end
-
-def fun_l0_n350(x)
- if (x < 1)
- fun_l1_n186(x)
- else
- fun_l1_n352(x)
- end
-end
-
-def fun_l0_n351(x)
- if (x < 1)
- fun_l1_n619(x)
- else
- fun_l1_n583(x)
- end
-end
-
-def fun_l0_n352(x)
- if (x < 1)
- fun_l1_n2(x)
- else
- fun_l1_n275(x)
- end
-end
-
-def fun_l0_n353(x)
- if (x < 1)
- fun_l1_n843(x)
- else
- fun_l1_n986(x)
- end
-end
-
-def fun_l0_n354(x)
- if (x < 1)
- fun_l1_n865(x)
- else
- fun_l1_n64(x)
- end
-end
-
-def fun_l0_n355(x)
- if (x < 1)
- fun_l1_n732(x)
- else
- fun_l1_n332(x)
- end
-end
-
-def fun_l0_n356(x)
- if (x < 1)
- fun_l1_n642(x)
- else
- fun_l1_n559(x)
- end
-end
-
-def fun_l0_n357(x)
- if (x < 1)
- fun_l1_n385(x)
- else
- fun_l1_n532(x)
- end
-end
-
-def fun_l0_n358(x)
- if (x < 1)
- fun_l1_n672(x)
- else
- fun_l1_n721(x)
- end
-end
-
-def fun_l0_n359(x)
- if (x < 1)
- fun_l1_n663(x)
- else
- fun_l1_n590(x)
- end
-end
-
-def fun_l0_n360(x)
- if (x < 1)
- fun_l1_n240(x)
- else
- fun_l1_n743(x)
- end
-end
-
-def fun_l0_n361(x)
- if (x < 1)
- fun_l1_n301(x)
- else
- fun_l1_n943(x)
- end
-end
-
-def fun_l0_n362(x)
- if (x < 1)
- fun_l1_n108(x)
- else
- fun_l1_n975(x)
- end
-end
-
-def fun_l0_n363(x)
- if (x < 1)
- fun_l1_n554(x)
- else
- fun_l1_n135(x)
- end
-end
-
-def fun_l0_n364(x)
- if (x < 1)
- fun_l1_n360(x)
- else
- fun_l1_n821(x)
- end
-end
-
-def fun_l0_n365(x)
- if (x < 1)
- fun_l1_n992(x)
- else
- fun_l1_n158(x)
- end
-end
-
-def fun_l0_n366(x)
- if (x < 1)
- fun_l1_n439(x)
- else
- fun_l1_n506(x)
- end
-end
-
-def fun_l0_n367(x)
- if (x < 1)
- fun_l1_n229(x)
- else
- fun_l1_n714(x)
- end
-end
-
-def fun_l0_n368(x)
- if (x < 1)
- fun_l1_n459(x)
- else
- fun_l1_n874(x)
- end
-end
-
-def fun_l0_n369(x)
- if (x < 1)
- fun_l1_n799(x)
- else
- fun_l1_n406(x)
- end
-end
-
-def fun_l0_n370(x)
- if (x < 1)
- fun_l1_n791(x)
- else
- fun_l1_n669(x)
- end
-end
-
-def fun_l0_n371(x)
- if (x < 1)
- fun_l1_n99(x)
- else
- fun_l1_n344(x)
- end
-end
-
-def fun_l0_n372(x)
- if (x < 1)
- fun_l1_n585(x)
- else
- fun_l1_n388(x)
- end
-end
-
-def fun_l0_n373(x)
- if (x < 1)
- fun_l1_n35(x)
- else
- fun_l1_n369(x)
- end
-end
-
-def fun_l0_n374(x)
- if (x < 1)
- fun_l1_n41(x)
- else
- fun_l1_n378(x)
- end
-end
-
-def fun_l0_n375(x)
- if (x < 1)
- fun_l1_n372(x)
- else
- fun_l1_n406(x)
- end
-end
-
-def fun_l0_n376(x)
- if (x < 1)
- fun_l1_n247(x)
- else
- fun_l1_n563(x)
- end
-end
-
-def fun_l0_n377(x)
- if (x < 1)
- fun_l1_n998(x)
- else
- fun_l1_n302(x)
- end
-end
-
-def fun_l0_n378(x)
- if (x < 1)
- fun_l1_n955(x)
- else
- fun_l1_n333(x)
- end
-end
-
-def fun_l0_n379(x)
- if (x < 1)
- fun_l1_n554(x)
- else
- fun_l1_n863(x)
- end
-end
-
-def fun_l0_n380(x)
- if (x < 1)
- fun_l1_n248(x)
- else
- fun_l1_n297(x)
- end
-end
-
-def fun_l0_n381(x)
- if (x < 1)
- fun_l1_n85(x)
- else
- fun_l1_n726(x)
- end
-end
-
-def fun_l0_n382(x)
- if (x < 1)
- fun_l1_n75(x)
- else
- fun_l1_n990(x)
- end
-end
-
-def fun_l0_n383(x)
- if (x < 1)
- fun_l1_n353(x)
- else
- fun_l1_n218(x)
- end
-end
-
-def fun_l0_n384(x)
- if (x < 1)
- fun_l1_n103(x)
- else
- fun_l1_n192(x)
- end
-end
-
-def fun_l0_n385(x)
- if (x < 1)
- fun_l1_n659(x)
- else
- fun_l1_n996(x)
- end
-end
-
-def fun_l0_n386(x)
- if (x < 1)
- fun_l1_n528(x)
- else
- fun_l1_n654(x)
- end
-end
-
-def fun_l0_n387(x)
- if (x < 1)
- fun_l1_n857(x)
- else
- fun_l1_n638(x)
- end
-end
-
-def fun_l0_n388(x)
- if (x < 1)
- fun_l1_n311(x)
- else
- fun_l1_n877(x)
- end
-end
-
-def fun_l0_n389(x)
- if (x < 1)
- fun_l1_n406(x)
- else
- fun_l1_n191(x)
- end
-end
-
-def fun_l0_n390(x)
- if (x < 1)
- fun_l1_n464(x)
- else
- fun_l1_n684(x)
- end
-end
-
-def fun_l0_n391(x)
- if (x < 1)
- fun_l1_n878(x)
- else
- fun_l1_n635(x)
- end
-end
-
-def fun_l0_n392(x)
- if (x < 1)
- fun_l1_n863(x)
- else
- fun_l1_n486(x)
- end
-end
-
-def fun_l0_n393(x)
- if (x < 1)
- fun_l1_n587(x)
- else
- fun_l1_n387(x)
- end
-end
-
-def fun_l0_n394(x)
- if (x < 1)
- fun_l1_n553(x)
- else
- fun_l1_n789(x)
- end
-end
-
-def fun_l0_n395(x)
- if (x < 1)
- fun_l1_n420(x)
- else
- fun_l1_n148(x)
- end
-end
-
-def fun_l0_n396(x)
- if (x < 1)
- fun_l1_n802(x)
- else
- fun_l1_n845(x)
- end
-end
-
-def fun_l0_n397(x)
- if (x < 1)
- fun_l1_n749(x)
- else
- fun_l1_n742(x)
- end
-end
-
-def fun_l0_n398(x)
- if (x < 1)
- fun_l1_n929(x)
- else
- fun_l1_n458(x)
- end
-end
-
-def fun_l0_n399(x)
- if (x < 1)
- fun_l1_n908(x)
- else
- fun_l1_n188(x)
- end
-end
-
-def fun_l0_n400(x)
- if (x < 1)
- fun_l1_n932(x)
- else
- fun_l1_n854(x)
- end
-end
-
-def fun_l0_n401(x)
- if (x < 1)
- fun_l1_n29(x)
- else
- fun_l1_n666(x)
- end
-end
-
-def fun_l0_n402(x)
- if (x < 1)
- fun_l1_n877(x)
- else
- fun_l1_n518(x)
- end
-end
-
-def fun_l0_n403(x)
- if (x < 1)
- fun_l1_n639(x)
- else
- fun_l1_n618(x)
- end
-end
-
-def fun_l0_n404(x)
- if (x < 1)
- fun_l1_n177(x)
- else
- fun_l1_n487(x)
- end
-end
-
-def fun_l0_n405(x)
- if (x < 1)
- fun_l1_n536(x)
- else
- fun_l1_n860(x)
- end
-end
-
-def fun_l0_n406(x)
- if (x < 1)
- fun_l1_n626(x)
- else
- fun_l1_n894(x)
- end
-end
-
-def fun_l0_n407(x)
- if (x < 1)
- fun_l1_n533(x)
- else
- fun_l1_n367(x)
- end
-end
-
-def fun_l0_n408(x)
- if (x < 1)
- fun_l1_n146(x)
- else
- fun_l1_n546(x)
- end
-end
-
-def fun_l0_n409(x)
- if (x < 1)
- fun_l1_n872(x)
- else
- fun_l1_n387(x)
- end
-end
-
-def fun_l0_n410(x)
- if (x < 1)
- fun_l1_n726(x)
- else
- fun_l1_n973(x)
- end
-end
-
-def fun_l0_n411(x)
- if (x < 1)
- fun_l1_n168(x)
- else
- fun_l1_n783(x)
- end
-end
-
-def fun_l0_n412(x)
- if (x < 1)
- fun_l1_n895(x)
- else
- fun_l1_n901(x)
- end
-end
-
-def fun_l0_n413(x)
- if (x < 1)
- fun_l1_n235(x)
- else
- fun_l1_n593(x)
- end
-end
-
-def fun_l0_n414(x)
- if (x < 1)
- fun_l1_n328(x)
- else
- fun_l1_n693(x)
- end
-end
-
-def fun_l0_n415(x)
- if (x < 1)
- fun_l1_n882(x)
- else
- fun_l1_n290(x)
- end
-end
-
-def fun_l0_n416(x)
- if (x < 1)
- fun_l1_n433(x)
- else
- fun_l1_n220(x)
- end
-end
-
-def fun_l0_n417(x)
- if (x < 1)
- fun_l1_n966(x)
- else
- fun_l1_n74(x)
- end
-end
-
-def fun_l0_n418(x)
- if (x < 1)
- fun_l1_n750(x)
- else
- fun_l1_n547(x)
- end
-end
-
-def fun_l0_n419(x)
- if (x < 1)
- fun_l1_n94(x)
- else
- fun_l1_n794(x)
- end
-end
-
-def fun_l0_n420(x)
- if (x < 1)
- fun_l1_n68(x)
- else
- fun_l1_n970(x)
- end
-end
-
-def fun_l0_n421(x)
- if (x < 1)
- fun_l1_n663(x)
- else
- fun_l1_n388(x)
- end
-end
-
-def fun_l0_n422(x)
- if (x < 1)
- fun_l1_n686(x)
- else
- fun_l1_n67(x)
- end
-end
-
-def fun_l0_n423(x)
- if (x < 1)
- fun_l1_n210(x)
- else
- fun_l1_n64(x)
- end
-end
-
-def fun_l0_n424(x)
- if (x < 1)
- fun_l1_n375(x)
- else
- fun_l1_n205(x)
- end
-end
-
-def fun_l0_n425(x)
- if (x < 1)
- fun_l1_n832(x)
- else
- fun_l1_n325(x)
- end
-end
-
-def fun_l0_n426(x)
- if (x < 1)
- fun_l1_n819(x)
- else
- fun_l1_n601(x)
- end
-end
-
-def fun_l0_n427(x)
- if (x < 1)
- fun_l1_n588(x)
- else
- fun_l1_n875(x)
- end
-end
-
-def fun_l0_n428(x)
- if (x < 1)
- fun_l1_n682(x)
- else
- fun_l1_n523(x)
- end
-end
-
-def fun_l0_n429(x)
- if (x < 1)
- fun_l1_n972(x)
- else
- fun_l1_n891(x)
- end
-end
-
-def fun_l0_n430(x)
- if (x < 1)
- fun_l1_n90(x)
- else
- fun_l1_n655(x)
- end
-end
-
-def fun_l0_n431(x)
- if (x < 1)
- fun_l1_n393(x)
- else
- fun_l1_n454(x)
- end
-end
-
-def fun_l0_n432(x)
- if (x < 1)
- fun_l1_n435(x)
- else
- fun_l1_n860(x)
- end
-end
-
-def fun_l0_n433(x)
- if (x < 1)
- fun_l1_n516(x)
- else
- fun_l1_n246(x)
- end
-end
-
-def fun_l0_n434(x)
- if (x < 1)
- fun_l1_n216(x)
- else
- fun_l1_n78(x)
- end
-end
-
-def fun_l0_n435(x)
- if (x < 1)
- fun_l1_n357(x)
- else
- fun_l1_n61(x)
- end
-end
-
-def fun_l0_n436(x)
- if (x < 1)
- fun_l1_n289(x)
- else
- fun_l1_n507(x)
- end
-end
-
-def fun_l0_n437(x)
- if (x < 1)
- fun_l1_n182(x)
- else
- fun_l1_n289(x)
- end
-end
-
-def fun_l0_n438(x)
- if (x < 1)
- fun_l1_n69(x)
- else
- fun_l1_n549(x)
- end
-end
-
-def fun_l0_n439(x)
- if (x < 1)
- fun_l1_n275(x)
- else
- fun_l1_n723(x)
- end
-end
-
-def fun_l0_n440(x)
- if (x < 1)
- fun_l1_n469(x)
- else
- fun_l1_n243(x)
- end
-end
-
-def fun_l0_n441(x)
- if (x < 1)
- fun_l1_n595(x)
- else
- fun_l1_n624(x)
- end
-end
-
-def fun_l0_n442(x)
- if (x < 1)
- fun_l1_n655(x)
- else
- fun_l1_n896(x)
- end
-end
-
-def fun_l0_n443(x)
- if (x < 1)
- fun_l1_n926(x)
- else
- fun_l1_n503(x)
- end
-end
-
-def fun_l0_n444(x)
- if (x < 1)
- fun_l1_n875(x)
- else
- fun_l1_n110(x)
- end
-end
-
-def fun_l0_n445(x)
- if (x < 1)
- fun_l1_n832(x)
- else
- fun_l1_n154(x)
- end
-end
-
-def fun_l0_n446(x)
- if (x < 1)
- fun_l1_n538(x)
- else
- fun_l1_n75(x)
- end
-end
-
-def fun_l0_n447(x)
- if (x < 1)
- fun_l1_n183(x)
- else
- fun_l1_n718(x)
- end
-end
-
-def fun_l0_n448(x)
- if (x < 1)
- fun_l1_n680(x)
- else
- fun_l1_n93(x)
- end
-end
-
-def fun_l0_n449(x)
- if (x < 1)
- fun_l1_n147(x)
- else
- fun_l1_n924(x)
- end
-end
-
-def fun_l0_n450(x)
- if (x < 1)
- fun_l1_n702(x)
- else
- fun_l1_n830(x)
- end
-end
-
-def fun_l0_n451(x)
- if (x < 1)
- fun_l1_n750(x)
- else
- fun_l1_n447(x)
- end
-end
-
-def fun_l0_n452(x)
- if (x < 1)
- fun_l1_n520(x)
- else
- fun_l1_n69(x)
- end
-end
-
-def fun_l0_n453(x)
- if (x < 1)
- fun_l1_n132(x)
- else
- fun_l1_n877(x)
- end
-end
-
-def fun_l0_n454(x)
- if (x < 1)
- fun_l1_n247(x)
- else
- fun_l1_n69(x)
- end
-end
-
-def fun_l0_n455(x)
- if (x < 1)
- fun_l1_n180(x)
- else
- fun_l1_n645(x)
- end
-end
-
-def fun_l0_n456(x)
- if (x < 1)
- fun_l1_n658(x)
- else
- fun_l1_n487(x)
- end
-end
-
-def fun_l0_n457(x)
- if (x < 1)
- fun_l1_n276(x)
- else
- fun_l1_n528(x)
- end
-end
-
-def fun_l0_n458(x)
- if (x < 1)
- fun_l1_n30(x)
- else
- fun_l1_n456(x)
- end
-end
-
-def fun_l0_n459(x)
- if (x < 1)
- fun_l1_n986(x)
- else
- fun_l1_n552(x)
- end
-end
-
-def fun_l0_n460(x)
- if (x < 1)
- fun_l1_n874(x)
- else
- fun_l1_n396(x)
- end
-end
-
-def fun_l0_n461(x)
- if (x < 1)
- fun_l1_n524(x)
- else
- fun_l1_n335(x)
- end
-end
-
-def fun_l0_n462(x)
- if (x < 1)
- fun_l1_n471(x)
- else
- fun_l1_n578(x)
- end
-end
-
-def fun_l0_n463(x)
- if (x < 1)
- fun_l1_n173(x)
- else
- fun_l1_n456(x)
- end
-end
-
-def fun_l0_n464(x)
- if (x < 1)
- fun_l1_n872(x)
- else
- fun_l1_n745(x)
- end
-end
-
-def fun_l0_n465(x)
- if (x < 1)
- fun_l1_n387(x)
- else
- fun_l1_n776(x)
- end
-end
-
-def fun_l0_n466(x)
- if (x < 1)
- fun_l1_n119(x)
- else
- fun_l1_n428(x)
- end
-end
-
-def fun_l0_n467(x)
- if (x < 1)
- fun_l1_n416(x)
- else
- fun_l1_n738(x)
- end
-end
-
-def fun_l0_n468(x)
- if (x < 1)
- fun_l1_n762(x)
- else
- fun_l1_n694(x)
- end
-end
-
-def fun_l0_n469(x)
- if (x < 1)
- fun_l1_n27(x)
- else
- fun_l1_n562(x)
- end
-end
-
-def fun_l0_n470(x)
- if (x < 1)
- fun_l1_n12(x)
- else
- fun_l1_n812(x)
- end
-end
-
-def fun_l0_n471(x)
- if (x < 1)
- fun_l1_n865(x)
- else
- fun_l1_n94(x)
- end
-end
-
-def fun_l0_n472(x)
- if (x < 1)
- fun_l1_n346(x)
- else
- fun_l1_n39(x)
- end
-end
-
-def fun_l0_n473(x)
- if (x < 1)
- fun_l1_n309(x)
- else
- fun_l1_n158(x)
- end
-end
-
-def fun_l0_n474(x)
- if (x < 1)
- fun_l1_n828(x)
- else
- fun_l1_n229(x)
- end
-end
-
-def fun_l0_n475(x)
- if (x < 1)
- fun_l1_n554(x)
- else
- fun_l1_n121(x)
- end
-end
-
-def fun_l0_n476(x)
- if (x < 1)
- fun_l1_n818(x)
- else
- fun_l1_n390(x)
- end
-end
-
-def fun_l0_n477(x)
- if (x < 1)
- fun_l1_n88(x)
- else
- fun_l1_n73(x)
- end
-end
-
-def fun_l0_n478(x)
- if (x < 1)
- fun_l1_n709(x)
- else
- fun_l1_n680(x)
- end
-end
-
-def fun_l0_n479(x)
- if (x < 1)
- fun_l1_n271(x)
- else
- fun_l1_n439(x)
- end
-end
-
-def fun_l0_n480(x)
- if (x < 1)
- fun_l1_n493(x)
- else
- fun_l1_n562(x)
- end
-end
-
-def fun_l0_n481(x)
- if (x < 1)
- fun_l1_n642(x)
- else
- fun_l1_n221(x)
- end
-end
-
-def fun_l0_n482(x)
- if (x < 1)
- fun_l1_n838(x)
- else
- fun_l1_n345(x)
- end
-end
-
-def fun_l0_n483(x)
- if (x < 1)
- fun_l1_n411(x)
- else
- fun_l1_n266(x)
- end
-end
-
-def fun_l0_n484(x)
- if (x < 1)
- fun_l1_n916(x)
- else
- fun_l1_n791(x)
- end
-end
-
-def fun_l0_n485(x)
- if (x < 1)
- fun_l1_n392(x)
- else
- fun_l1_n68(x)
- end
-end
-
-def fun_l0_n486(x)
- if (x < 1)
- fun_l1_n834(x)
- else
- fun_l1_n783(x)
- end
-end
-
-def fun_l0_n487(x)
- if (x < 1)
- fun_l1_n398(x)
- else
- fun_l1_n627(x)
- end
-end
-
-def fun_l0_n488(x)
- if (x < 1)
- fun_l1_n904(x)
- else
- fun_l1_n167(x)
- end
-end
-
-def fun_l0_n489(x)
- if (x < 1)
- fun_l1_n54(x)
- else
- fun_l1_n28(x)
- end
-end
-
-def fun_l0_n490(x)
- if (x < 1)
- fun_l1_n24(x)
- else
- fun_l1_n9(x)
- end
-end
-
-def fun_l0_n491(x)
- if (x < 1)
- fun_l1_n497(x)
- else
- fun_l1_n297(x)
- end
-end
-
-def fun_l0_n492(x)
- if (x < 1)
- fun_l1_n951(x)
- else
- fun_l1_n534(x)
- end
-end
-
-def fun_l0_n493(x)
- if (x < 1)
- fun_l1_n213(x)
- else
- fun_l1_n808(x)
- end
-end
-
-def fun_l0_n494(x)
- if (x < 1)
- fun_l1_n904(x)
- else
- fun_l1_n94(x)
- end
-end
-
-def fun_l0_n495(x)
- if (x < 1)
- fun_l1_n799(x)
- else
- fun_l1_n817(x)
- end
-end
-
-def fun_l0_n496(x)
- if (x < 1)
- fun_l1_n45(x)
- else
- fun_l1_n860(x)
- end
-end
-
-def fun_l0_n497(x)
- if (x < 1)
- fun_l1_n482(x)
- else
- fun_l1_n783(x)
- end
-end
-
-def fun_l0_n498(x)
- if (x < 1)
- fun_l1_n78(x)
- else
- fun_l1_n785(x)
- end
-end
-
-def fun_l0_n499(x)
- if (x < 1)
- fun_l1_n174(x)
- else
- fun_l1_n87(x)
- end
-end
-
-def fun_l0_n500(x)
- if (x < 1)
- fun_l1_n608(x)
- else
- fun_l1_n7(x)
- end
-end
-
-def fun_l0_n501(x)
- if (x < 1)
- fun_l1_n157(x)
- else
- fun_l1_n718(x)
- end
-end
-
-def fun_l0_n502(x)
- if (x < 1)
- fun_l1_n823(x)
- else
- fun_l1_n549(x)
- end
-end
-
-def fun_l0_n503(x)
- if (x < 1)
- fun_l1_n13(x)
- else
- fun_l1_n502(x)
- end
-end
-
-def fun_l0_n504(x)
- if (x < 1)
- fun_l1_n119(x)
- else
- fun_l1_n191(x)
- end
-end
-
-def fun_l0_n505(x)
- if (x < 1)
- fun_l1_n503(x)
- else
- fun_l1_n974(x)
- end
-end
-
-def fun_l0_n506(x)
- if (x < 1)
- fun_l1_n893(x)
- else
- fun_l1_n582(x)
- end
-end
-
-def fun_l0_n507(x)
- if (x < 1)
- fun_l1_n403(x)
- else
- fun_l1_n228(x)
- end
-end
-
-def fun_l0_n508(x)
- if (x < 1)
- fun_l1_n640(x)
- else
- fun_l1_n362(x)
- end
-end
-
-def fun_l0_n509(x)
- if (x < 1)
- fun_l1_n629(x)
- else
- fun_l1_n824(x)
- end
-end
-
-def fun_l0_n510(x)
- if (x < 1)
- fun_l1_n84(x)
- else
- fun_l1_n330(x)
- end
-end
-
-def fun_l0_n511(x)
- if (x < 1)
- fun_l1_n91(x)
- else
- fun_l1_n523(x)
- end
-end
-
-def fun_l0_n512(x)
- if (x < 1)
- fun_l1_n696(x)
- else
- fun_l1_n126(x)
- end
-end
-
-def fun_l0_n513(x)
- if (x < 1)
- fun_l1_n905(x)
- else
- fun_l1_n496(x)
- end
-end
-
-def fun_l0_n514(x)
- if (x < 1)
- fun_l1_n766(x)
- else
- fun_l1_n523(x)
- end
-end
-
-def fun_l0_n515(x)
- if (x < 1)
- fun_l1_n798(x)
- else
- fun_l1_n698(x)
- end
-end
-
-def fun_l0_n516(x)
- if (x < 1)
- fun_l1_n124(x)
- else
- fun_l1_n356(x)
- end
-end
-
-def fun_l0_n517(x)
- if (x < 1)
- fun_l1_n289(x)
- else
- fun_l1_n782(x)
- end
-end
-
-def fun_l0_n518(x)
- if (x < 1)
- fun_l1_n483(x)
- else
- fun_l1_n586(x)
- end
-end
-
-def fun_l0_n519(x)
- if (x < 1)
- fun_l1_n878(x)
- else
- fun_l1_n37(x)
- end
-end
-
-def fun_l0_n520(x)
- if (x < 1)
- fun_l1_n48(x)
- else
- fun_l1_n216(x)
- end
-end
-
-def fun_l0_n521(x)
- if (x < 1)
- fun_l1_n805(x)
- else
- fun_l1_n846(x)
- end
-end
-
-def fun_l0_n522(x)
- if (x < 1)
- fun_l1_n422(x)
- else
- fun_l1_n190(x)
- end
-end
-
-def fun_l0_n523(x)
- if (x < 1)
- fun_l1_n168(x)
- else
- fun_l1_n272(x)
- end
-end
-
-def fun_l0_n524(x)
- if (x < 1)
- fun_l1_n766(x)
- else
- fun_l1_n125(x)
- end
-end
-
-def fun_l0_n525(x)
- if (x < 1)
- fun_l1_n56(x)
- else
- fun_l1_n224(x)
- end
-end
-
-def fun_l0_n526(x)
- if (x < 1)
- fun_l1_n540(x)
- else
- fun_l1_n303(x)
- end
-end
-
-def fun_l0_n527(x)
- if (x < 1)
- fun_l1_n846(x)
- else
- fun_l1_n955(x)
- end
-end
-
-def fun_l0_n528(x)
- if (x < 1)
- fun_l1_n571(x)
- else
- fun_l1_n640(x)
- end
-end
-
-def fun_l0_n529(x)
- if (x < 1)
- fun_l1_n650(x)
- else
- fun_l1_n107(x)
- end
-end
-
-def fun_l0_n530(x)
- if (x < 1)
- fun_l1_n240(x)
- else
- fun_l1_n139(x)
- end
-end
-
-def fun_l0_n531(x)
- if (x < 1)
- fun_l1_n975(x)
- else
- fun_l1_n970(x)
- end
-end
-
-def fun_l0_n532(x)
- if (x < 1)
- fun_l1_n753(x)
- else
- fun_l1_n147(x)
- end
-end
-
-def fun_l0_n533(x)
- if (x < 1)
- fun_l1_n269(x)
- else
- fun_l1_n292(x)
- end
-end
-
-def fun_l0_n534(x)
- if (x < 1)
- fun_l1_n791(x)
- else
- fun_l1_n69(x)
- end
-end
-
-def fun_l0_n535(x)
- if (x < 1)
- fun_l1_n469(x)
- else
- fun_l1_n58(x)
- end
-end
-
-def fun_l0_n536(x)
- if (x < 1)
- fun_l1_n526(x)
- else
- fun_l1_n265(x)
- end
-end
-
-def fun_l0_n537(x)
- if (x < 1)
- fun_l1_n681(x)
- else
- fun_l1_n646(x)
- end
-end
-
-def fun_l0_n538(x)
- if (x < 1)
- fun_l1_n377(x)
- else
- fun_l1_n969(x)
- end
-end
-
-def fun_l0_n539(x)
- if (x < 1)
- fun_l1_n935(x)
- else
- fun_l1_n556(x)
- end
-end
-
-def fun_l0_n540(x)
- if (x < 1)
- fun_l1_n498(x)
- else
- fun_l1_n439(x)
- end
-end
-
-def fun_l0_n541(x)
- if (x < 1)
- fun_l1_n451(x)
- else
- fun_l1_n35(x)
- end
-end
-
-def fun_l0_n542(x)
- if (x < 1)
- fun_l1_n32(x)
- else
- fun_l1_n795(x)
- end
-end
-
-def fun_l0_n543(x)
- if (x < 1)
- fun_l1_n732(x)
- else
- fun_l1_n530(x)
- end
-end
-
-def fun_l0_n544(x)
- if (x < 1)
- fun_l1_n176(x)
- else
- fun_l1_n735(x)
- end
-end
-
-def fun_l0_n545(x)
- if (x < 1)
- fun_l1_n34(x)
- else
- fun_l1_n989(x)
- end
-end
-
-def fun_l0_n546(x)
- if (x < 1)
- fun_l1_n534(x)
- else
- fun_l1_n705(x)
- end
-end
-
-def fun_l0_n547(x)
- if (x < 1)
- fun_l1_n997(x)
- else
- fun_l1_n883(x)
- end
-end
-
-def fun_l0_n548(x)
- if (x < 1)
- fun_l1_n379(x)
- else
- fun_l1_n33(x)
- end
-end
-
-def fun_l0_n549(x)
- if (x < 1)
- fun_l1_n454(x)
- else
- fun_l1_n516(x)
- end
-end
-
-def fun_l0_n550(x)
- if (x < 1)
- fun_l1_n678(x)
- else
- fun_l1_n652(x)
- end
-end
-
-def fun_l0_n551(x)
- if (x < 1)
- fun_l1_n13(x)
- else
- fun_l1_n864(x)
- end
-end
-
-def fun_l0_n552(x)
- if (x < 1)
- fun_l1_n178(x)
- else
- fun_l1_n996(x)
- end
-end
-
-def fun_l0_n553(x)
- if (x < 1)
- fun_l1_n865(x)
- else
- fun_l1_n703(x)
- end
-end
-
-def fun_l0_n554(x)
- if (x < 1)
- fun_l1_n306(x)
- else
- fun_l1_n24(x)
- end
-end
-
-def fun_l0_n555(x)
- if (x < 1)
- fun_l1_n110(x)
- else
- fun_l1_n123(x)
- end
-end
-
-def fun_l0_n556(x)
- if (x < 1)
- fun_l1_n367(x)
- else
- fun_l1_n117(x)
- end
-end
-
-def fun_l0_n557(x)
- if (x < 1)
- fun_l1_n967(x)
- else
- fun_l1_n662(x)
- end
-end
-
-def fun_l0_n558(x)
- if (x < 1)
- fun_l1_n68(x)
- else
- fun_l1_n47(x)
- end
-end
-
-def fun_l0_n559(x)
- if (x < 1)
- fun_l1_n154(x)
- else
- fun_l1_n344(x)
- end
-end
-
-def fun_l0_n560(x)
- if (x < 1)
- fun_l1_n835(x)
- else
- fun_l1_n577(x)
- end
-end
-
-def fun_l0_n561(x)
- if (x < 1)
- fun_l1_n393(x)
- else
- fun_l1_n419(x)
- end
-end
-
-def fun_l0_n562(x)
- if (x < 1)
- fun_l1_n632(x)
- else
- fun_l1_n630(x)
- end
-end
-
-def fun_l0_n563(x)
- if (x < 1)
- fun_l1_n9(x)
- else
- fun_l1_n109(x)
- end
-end
-
-def fun_l0_n564(x)
- if (x < 1)
- fun_l1_n65(x)
- else
- fun_l1_n123(x)
- end
-end
-
-def fun_l0_n565(x)
- if (x < 1)
- fun_l1_n156(x)
- else
- fun_l1_n921(x)
- end
-end
-
-def fun_l0_n566(x)
- if (x < 1)
- fun_l1_n88(x)
- else
- fun_l1_n743(x)
- end
-end
-
-def fun_l0_n567(x)
- if (x < 1)
- fun_l1_n92(x)
- else
- fun_l1_n27(x)
- end
-end
-
-def fun_l0_n568(x)
- if (x < 1)
- fun_l1_n462(x)
- else
- fun_l1_n988(x)
- end
-end
-
-def fun_l0_n569(x)
- if (x < 1)
- fun_l1_n241(x)
- else
- fun_l1_n199(x)
- end
-end
-
-def fun_l0_n570(x)
- if (x < 1)
- fun_l1_n429(x)
- else
- fun_l1_n530(x)
- end
-end
-
-def fun_l0_n571(x)
- if (x < 1)
- fun_l1_n412(x)
- else
- fun_l1_n530(x)
- end
-end
-
-def fun_l0_n572(x)
- if (x < 1)
- fun_l1_n100(x)
- else
- fun_l1_n270(x)
- end
-end
-
-def fun_l0_n573(x)
- if (x < 1)
- fun_l1_n326(x)
- else
- fun_l1_n191(x)
- end
-end
-
-def fun_l0_n574(x)
- if (x < 1)
- fun_l1_n151(x)
- else
- fun_l1_n354(x)
- end
-end
-
-def fun_l0_n575(x)
- if (x < 1)
- fun_l1_n322(x)
- else
- fun_l1_n534(x)
- end
-end
-
-def fun_l0_n576(x)
- if (x < 1)
- fun_l1_n995(x)
- else
- fun_l1_n658(x)
- end
-end
-
-def fun_l0_n577(x)
- if (x < 1)
- fun_l1_n193(x)
- else
- fun_l1_n444(x)
- end
-end
-
-def fun_l0_n578(x)
- if (x < 1)
- fun_l1_n527(x)
- else
- fun_l1_n517(x)
- end
-end
-
-def fun_l0_n579(x)
- if (x < 1)
- fun_l1_n885(x)
- else
- fun_l1_n218(x)
- end
-end
-
-def fun_l0_n580(x)
- if (x < 1)
- fun_l1_n789(x)
- else
- fun_l1_n711(x)
- end
-end
-
-def fun_l0_n581(x)
- if (x < 1)
- fun_l1_n848(x)
- else
- fun_l1_n321(x)
- end
-end
-
-def fun_l0_n582(x)
- if (x < 1)
- fun_l1_n389(x)
- else
- fun_l1_n360(x)
- end
-end
-
-def fun_l0_n583(x)
- if (x < 1)
- fun_l1_n319(x)
- else
- fun_l1_n972(x)
- end
-end
-
-def fun_l0_n584(x)
- if (x < 1)
- fun_l1_n421(x)
- else
- fun_l1_n659(x)
- end
-end
-
-def fun_l0_n585(x)
- if (x < 1)
- fun_l1_n462(x)
- else
- fun_l1_n302(x)
- end
-end
-
-def fun_l0_n586(x)
- if (x < 1)
- fun_l1_n122(x)
- else
- fun_l1_n50(x)
- end
-end
-
-def fun_l0_n587(x)
- if (x < 1)
- fun_l1_n795(x)
- else
- fun_l1_n622(x)
- end
-end
-
-def fun_l0_n588(x)
- if (x < 1)
- fun_l1_n719(x)
- else
- fun_l1_n390(x)
- end
-end
-
-def fun_l0_n589(x)
- if (x < 1)
- fun_l1_n916(x)
- else
- fun_l1_n925(x)
- end
-end
-
-def fun_l0_n590(x)
- if (x < 1)
- fun_l1_n541(x)
- else
- fun_l1_n139(x)
- end
-end
-
-def fun_l0_n591(x)
- if (x < 1)
- fun_l1_n610(x)
- else
- fun_l1_n509(x)
- end
-end
-
-def fun_l0_n592(x)
- if (x < 1)
- fun_l1_n217(x)
- else
- fun_l1_n452(x)
- end
-end
-
-def fun_l0_n593(x)
- if (x < 1)
- fun_l1_n456(x)
- else
- fun_l1_n888(x)
- end
-end
-
-def fun_l0_n594(x)
- if (x < 1)
- fun_l1_n987(x)
- else
- fun_l1_n462(x)
- end
-end
-
-def fun_l0_n595(x)
- if (x < 1)
- fun_l1_n571(x)
- else
- fun_l1_n429(x)
- end
-end
-
-def fun_l0_n596(x)
- if (x < 1)
- fun_l1_n751(x)
- else
- fun_l1_n773(x)
- end
-end
-
-def fun_l0_n597(x)
- if (x < 1)
- fun_l1_n181(x)
- else
- fun_l1_n340(x)
- end
-end
-
-def fun_l0_n598(x)
- if (x < 1)
- fun_l1_n6(x)
- else
- fun_l1_n39(x)
- end
-end
-
-def fun_l0_n599(x)
- if (x < 1)
- fun_l1_n814(x)
- else
- fun_l1_n320(x)
- end
-end
-
-def fun_l0_n600(x)
- if (x < 1)
- fun_l1_n931(x)
- else
- fun_l1_n535(x)
- end
-end
-
-def fun_l0_n601(x)
- if (x < 1)
- fun_l1_n99(x)
- else
- fun_l1_n154(x)
- end
-end
-
-def fun_l0_n602(x)
- if (x < 1)
- fun_l1_n981(x)
- else
- fun_l1_n817(x)
- end
-end
-
-def fun_l0_n603(x)
- if (x < 1)
- fun_l1_n975(x)
- else
- fun_l1_n364(x)
- end
-end
-
-def fun_l0_n604(x)
- if (x < 1)
- fun_l1_n112(x)
- else
- fun_l1_n226(x)
- end
-end
-
-def fun_l0_n605(x)
- if (x < 1)
- fun_l1_n995(x)
- else
- fun_l1_n95(x)
- end
-end
-
-def fun_l0_n606(x)
- if (x < 1)
- fun_l1_n930(x)
- else
- fun_l1_n77(x)
- end
-end
-
-def fun_l0_n607(x)
- if (x < 1)
- fun_l1_n899(x)
- else
- fun_l1_n957(x)
- end
-end
-
-def fun_l0_n608(x)
- if (x < 1)
- fun_l1_n844(x)
- else
- fun_l1_n119(x)
- end
-end
-
-def fun_l0_n609(x)
- if (x < 1)
- fun_l1_n861(x)
- else
- fun_l1_n74(x)
- end
-end
-
-def fun_l0_n610(x)
- if (x < 1)
- fun_l1_n521(x)
- else
- fun_l1_n46(x)
- end
-end
-
-def fun_l0_n611(x)
- if (x < 1)
- fun_l1_n258(x)
- else
- fun_l1_n208(x)
- end
-end
-
-def fun_l0_n612(x)
- if (x < 1)
- fun_l1_n620(x)
- else
- fun_l1_n427(x)
- end
-end
-
-def fun_l0_n613(x)
- if (x < 1)
- fun_l1_n583(x)
- else
- fun_l1_n400(x)
- end
-end
-
-def fun_l0_n614(x)
- if (x < 1)
- fun_l1_n933(x)
- else
- fun_l1_n810(x)
- end
-end
-
-def fun_l0_n615(x)
- if (x < 1)
- fun_l1_n154(x)
- else
- fun_l1_n879(x)
- end
-end
-
-def fun_l0_n616(x)
- if (x < 1)
- fun_l1_n715(x)
- else
- fun_l1_n862(x)
- end
-end
-
-def fun_l0_n617(x)
- if (x < 1)
- fun_l1_n178(x)
- else
- fun_l1_n285(x)
- end
-end
-
-def fun_l0_n618(x)
- if (x < 1)
- fun_l1_n458(x)
- else
- fun_l1_n217(x)
- end
-end
-
-def fun_l0_n619(x)
- if (x < 1)
- fun_l1_n655(x)
- else
- fun_l1_n405(x)
- end
-end
-
-def fun_l0_n620(x)
- if (x < 1)
- fun_l1_n470(x)
- else
- fun_l1_n306(x)
- end
-end
-
-def fun_l0_n621(x)
- if (x < 1)
- fun_l1_n755(x)
- else
- fun_l1_n425(x)
- end
-end
-
-def fun_l0_n622(x)
- if (x < 1)
- fun_l1_n426(x)
- else
- fun_l1_n737(x)
- end
-end
-
-def fun_l0_n623(x)
- if (x < 1)
- fun_l1_n79(x)
- else
- fun_l1_n55(x)
- end
-end
-
-def fun_l0_n624(x)
- if (x < 1)
- fun_l1_n437(x)
- else
- fun_l1_n79(x)
- end
-end
-
-def fun_l0_n625(x)
- if (x < 1)
- fun_l1_n691(x)
- else
- fun_l1_n198(x)
- end
-end
-
-def fun_l0_n626(x)
- if (x < 1)
- fun_l1_n703(x)
- else
- fun_l1_n585(x)
- end
-end
-
-def fun_l0_n627(x)
- if (x < 1)
- fun_l1_n966(x)
- else
- fun_l1_n425(x)
- end
-end
-
-def fun_l0_n628(x)
- if (x < 1)
- fun_l1_n516(x)
- else
- fun_l1_n744(x)
- end
-end
-
-def fun_l0_n629(x)
- if (x < 1)
- fun_l1_n40(x)
- else
- fun_l1_n942(x)
- end
-end
-
-def fun_l0_n630(x)
- if (x < 1)
- fun_l1_n528(x)
- else
- fun_l1_n440(x)
- end
-end
-
-def fun_l0_n631(x)
- if (x < 1)
- fun_l1_n139(x)
- else
- fun_l1_n403(x)
- end
-end
-
-def fun_l0_n632(x)
- if (x < 1)
- fun_l1_n421(x)
- else
- fun_l1_n510(x)
- end
-end
-
-def fun_l0_n633(x)
- if (x < 1)
- fun_l1_n718(x)
- else
- fun_l1_n388(x)
- end
-end
-
-def fun_l0_n634(x)
- if (x < 1)
- fun_l1_n67(x)
- else
- fun_l1_n342(x)
- end
-end
-
-def fun_l0_n635(x)
- if (x < 1)
- fun_l1_n943(x)
- else
- fun_l1_n941(x)
- end
-end
-
-def fun_l0_n636(x)
- if (x < 1)
- fun_l1_n170(x)
- else
- fun_l1_n527(x)
- end
-end
-
-def fun_l0_n637(x)
- if (x < 1)
- fun_l1_n336(x)
- else
- fun_l1_n496(x)
- end
-end
-
-def fun_l0_n638(x)
- if (x < 1)
- fun_l1_n730(x)
- else
- fun_l1_n10(x)
- end
-end
-
-def fun_l0_n639(x)
- if (x < 1)
- fun_l1_n939(x)
- else
- fun_l1_n940(x)
- end
-end
-
-def fun_l0_n640(x)
- if (x < 1)
- fun_l1_n73(x)
- else
- fun_l1_n439(x)
- end
-end
-
-def fun_l0_n641(x)
- if (x < 1)
- fun_l1_n460(x)
- else
- fun_l1_n828(x)
- end
-end
-
-def fun_l0_n642(x)
- if (x < 1)
- fun_l1_n90(x)
- else
- fun_l1_n113(x)
- end
-end
-
-def fun_l0_n643(x)
- if (x < 1)
- fun_l1_n972(x)
- else
- fun_l1_n15(x)
- end
-end
-
-def fun_l0_n644(x)
- if (x < 1)
- fun_l1_n417(x)
- else
- fun_l1_n228(x)
- end
-end
-
-def fun_l0_n645(x)
- if (x < 1)
- fun_l1_n876(x)
- else
- fun_l1_n152(x)
- end
-end
-
-def fun_l0_n646(x)
- if (x < 1)
- fun_l1_n404(x)
- else
- fun_l1_n147(x)
- end
-end
-
-def fun_l0_n647(x)
- if (x < 1)
- fun_l1_n802(x)
- else
- fun_l1_n824(x)
- end
-end
-
-def fun_l0_n648(x)
- if (x < 1)
- fun_l1_n771(x)
- else
- fun_l1_n421(x)
- end
-end
-
-def fun_l0_n649(x)
- if (x < 1)
- fun_l1_n807(x)
- else
- fun_l1_n955(x)
- end
-end
-
-def fun_l0_n650(x)
- if (x < 1)
- fun_l1_n221(x)
- else
- fun_l1_n367(x)
- end
-end
-
-def fun_l0_n651(x)
- if (x < 1)
- fun_l1_n955(x)
- else
- fun_l1_n401(x)
- end
-end
-
-def fun_l0_n652(x)
- if (x < 1)
- fun_l1_n203(x)
- else
- fun_l1_n909(x)
- end
-end
-
-def fun_l0_n653(x)
- if (x < 1)
- fun_l1_n154(x)
- else
- fun_l1_n535(x)
- end
-end
-
-def fun_l0_n654(x)
- if (x < 1)
- fun_l1_n420(x)
- else
- fun_l1_n393(x)
- end
-end
-
-def fun_l0_n655(x)
- if (x < 1)
- fun_l1_n232(x)
- else
- fun_l1_n981(x)
- end
-end
-
-def fun_l0_n656(x)
- if (x < 1)
- fun_l1_n873(x)
- else
- fun_l1_n510(x)
- end
-end
-
-def fun_l0_n657(x)
- if (x < 1)
- fun_l1_n919(x)
- else
- fun_l1_n706(x)
- end
-end
-
-def fun_l0_n658(x)
- if (x < 1)
- fun_l1_n429(x)
- else
- fun_l1_n112(x)
- end
-end
-
-def fun_l0_n659(x)
- if (x < 1)
- fun_l1_n547(x)
- else
- fun_l1_n712(x)
- end
-end
-
-def fun_l0_n660(x)
- if (x < 1)
- fun_l1_n498(x)
- else
- fun_l1_n695(x)
- end
-end
-
-def fun_l0_n661(x)
- if (x < 1)
- fun_l1_n801(x)
- else
- fun_l1_n659(x)
- end
-end
-
-def fun_l0_n662(x)
- if (x < 1)
- fun_l1_n796(x)
- else
- fun_l1_n229(x)
- end
-end
-
-def fun_l0_n663(x)
- if (x < 1)
- fun_l1_n11(x)
- else
- fun_l1_n620(x)
- end
-end
-
-def fun_l0_n664(x)
- if (x < 1)
- fun_l1_n652(x)
- else
- fun_l1_n416(x)
- end
-end
-
-def fun_l0_n665(x)
- if (x < 1)
- fun_l1_n655(x)
- else
- fun_l1_n331(x)
- end
-end
-
-def fun_l0_n666(x)
- if (x < 1)
- fun_l1_n846(x)
- else
- fun_l1_n1(x)
- end
-end
-
-def fun_l0_n667(x)
- if (x < 1)
- fun_l1_n55(x)
- else
- fun_l1_n32(x)
- end
-end
-
-def fun_l0_n668(x)
- if (x < 1)
- fun_l1_n241(x)
- else
- fun_l1_n627(x)
- end
-end
-
-def fun_l0_n669(x)
- if (x < 1)
- fun_l1_n234(x)
- else
- fun_l1_n996(x)
- end
-end
-
-def fun_l0_n670(x)
- if (x < 1)
- fun_l1_n235(x)
- else
- fun_l1_n761(x)
- end
-end
-
-def fun_l0_n671(x)
- if (x < 1)
- fun_l1_n990(x)
- else
- fun_l1_n236(x)
- end
-end
-
-def fun_l0_n672(x)
- if (x < 1)
- fun_l1_n970(x)
- else
- fun_l1_n595(x)
- end
-end
-
-def fun_l0_n673(x)
- if (x < 1)
- fun_l1_n294(x)
- else
- fun_l1_n440(x)
- end
-end
-
-def fun_l0_n674(x)
- if (x < 1)
- fun_l1_n597(x)
- else
- fun_l1_n956(x)
- end
-end
-
-def fun_l0_n675(x)
- if (x < 1)
- fun_l1_n942(x)
- else
- fun_l1_n352(x)
- end
-end
-
-def fun_l0_n676(x)
- if (x < 1)
- fun_l1_n309(x)
- else
- fun_l1_n294(x)
- end
-end
-
-def fun_l0_n677(x)
- if (x < 1)
- fun_l1_n752(x)
- else
- fun_l1_n447(x)
- end
-end
-
-def fun_l0_n678(x)
- if (x < 1)
- fun_l1_n890(x)
- else
- fun_l1_n497(x)
- end
-end
-
-def fun_l0_n679(x)
- if (x < 1)
- fun_l1_n808(x)
- else
- fun_l1_n881(x)
- end
-end
-
-def fun_l0_n680(x)
- if (x < 1)
- fun_l1_n966(x)
- else
- fun_l1_n460(x)
- end
-end
-
-def fun_l0_n681(x)
- if (x < 1)
- fun_l1_n104(x)
- else
- fun_l1_n262(x)
- end
-end
-
-def fun_l0_n682(x)
- if (x < 1)
- fun_l1_n425(x)
- else
- fun_l1_n177(x)
- end
-end
-
-def fun_l0_n683(x)
- if (x < 1)
- fun_l1_n15(x)
- else
- fun_l1_n458(x)
- end
-end
-
-def fun_l0_n684(x)
- if (x < 1)
- fun_l1_n760(x)
- else
- fun_l1_n997(x)
- end
-end
-
-def fun_l0_n685(x)
- if (x < 1)
- fun_l1_n496(x)
- else
- fun_l1_n223(x)
- end
-end
-
-def fun_l0_n686(x)
- if (x < 1)
- fun_l1_n363(x)
- else
- fun_l1_n543(x)
- end
-end
-
-def fun_l0_n687(x)
- if (x < 1)
- fun_l1_n758(x)
- else
- fun_l1_n473(x)
- end
-end
-
-def fun_l0_n688(x)
- if (x < 1)
- fun_l1_n854(x)
- else
- fun_l1_n999(x)
- end
-end
-
-def fun_l0_n689(x)
- if (x < 1)
- fun_l1_n336(x)
- else
- fun_l1_n388(x)
- end
-end
-
-def fun_l0_n690(x)
- if (x < 1)
- fun_l1_n930(x)
- else
- fun_l1_n478(x)
- end
-end
-
-def fun_l0_n691(x)
- if (x < 1)
- fun_l1_n423(x)
- else
- fun_l1_n83(x)
- end
-end
-
-def fun_l0_n692(x)
- if (x < 1)
- fun_l1_n797(x)
- else
- fun_l1_n427(x)
- end
-end
-
-def fun_l0_n693(x)
- if (x < 1)
- fun_l1_n907(x)
- else
- fun_l1_n1(x)
- end
-end
-
-def fun_l0_n694(x)
- if (x < 1)
- fun_l1_n601(x)
- else
- fun_l1_n809(x)
- end
-end
-
-def fun_l0_n695(x)
- if (x < 1)
- fun_l1_n252(x)
- else
- fun_l1_n233(x)
- end
-end
-
-def fun_l0_n696(x)
- if (x < 1)
- fun_l1_n36(x)
- else
- fun_l1_n796(x)
- end
-end
-
-def fun_l0_n697(x)
- if (x < 1)
- fun_l1_n893(x)
- else
- fun_l1_n926(x)
- end
-end
-
-def fun_l0_n698(x)
- if (x < 1)
- fun_l1_n511(x)
- else
- fun_l1_n88(x)
- end
-end
-
-def fun_l0_n699(x)
- if (x < 1)
- fun_l1_n573(x)
- else
- fun_l1_n718(x)
- end
-end
-
-def fun_l0_n700(x)
- if (x < 1)
- fun_l1_n475(x)
- else
- fun_l1_n539(x)
- end
-end
-
-def fun_l0_n701(x)
- if (x < 1)
- fun_l1_n238(x)
- else
- fun_l1_n253(x)
- end
-end
-
-def fun_l0_n702(x)
- if (x < 1)
- fun_l1_n731(x)
- else
- fun_l1_n225(x)
- end
-end
-
-def fun_l0_n703(x)
- if (x < 1)
- fun_l1_n594(x)
- else
- fun_l1_n16(x)
- end
-end
-
-def fun_l0_n704(x)
- if (x < 1)
- fun_l1_n732(x)
- else
- fun_l1_n354(x)
- end
-end
-
-def fun_l0_n705(x)
- if (x < 1)
- fun_l1_n812(x)
- else
- fun_l1_n218(x)
- end
-end
-
-def fun_l0_n706(x)
- if (x < 1)
- fun_l1_n731(x)
- else
- fun_l1_n343(x)
- end
-end
-
-def fun_l0_n707(x)
- if (x < 1)
- fun_l1_n134(x)
- else
- fun_l1_n752(x)
- end
-end
-
-def fun_l0_n708(x)
- if (x < 1)
- fun_l1_n899(x)
- else
- fun_l1_n854(x)
- end
-end
-
-def fun_l0_n709(x)
- if (x < 1)
- fun_l1_n120(x)
- else
- fun_l1_n193(x)
- end
-end
-
-def fun_l0_n710(x)
- if (x < 1)
- fun_l1_n22(x)
- else
- fun_l1_n254(x)
- end
-end
-
-def fun_l0_n711(x)
- if (x < 1)
- fun_l1_n527(x)
- else
- fun_l1_n921(x)
- end
-end
-
-def fun_l0_n712(x)
- if (x < 1)
- fun_l1_n820(x)
- else
- fun_l1_n96(x)
- end
-end
-
-def fun_l0_n713(x)
- if (x < 1)
- fun_l1_n145(x)
- else
- fun_l1_n226(x)
- end
-end
-
-def fun_l0_n714(x)
- if (x < 1)
- fun_l1_n643(x)
- else
- fun_l1_n407(x)
- end
-end
-
-def fun_l0_n715(x)
- if (x < 1)
- fun_l1_n349(x)
- else
- fun_l1_n450(x)
- end
-end
-
-def fun_l0_n716(x)
- if (x < 1)
- fun_l1_n954(x)
- else
- fun_l1_n707(x)
- end
-end
-
-def fun_l0_n717(x)
- if (x < 1)
- fun_l1_n723(x)
- else
- fun_l1_n762(x)
- end
-end
-
-def fun_l0_n718(x)
- if (x < 1)
- fun_l1_n299(x)
- else
- fun_l1_n332(x)
- end
-end
-
-def fun_l0_n719(x)
- if (x < 1)
- fun_l1_n493(x)
- else
- fun_l1_n521(x)
- end
-end
-
-def fun_l0_n720(x)
- if (x < 1)
- fun_l1_n39(x)
- else
- fun_l1_n17(x)
- end
-end
-
-def fun_l0_n721(x)
- if (x < 1)
- fun_l1_n297(x)
- else
- fun_l1_n800(x)
- end
-end
-
-def fun_l0_n722(x)
- if (x < 1)
- fun_l1_n758(x)
- else
- fun_l1_n135(x)
- end
-end
-
-def fun_l0_n723(x)
- if (x < 1)
- fun_l1_n471(x)
- else
- fun_l1_n351(x)
- end
-end
-
-def fun_l0_n724(x)
- if (x < 1)
- fun_l1_n381(x)
- else
- fun_l1_n281(x)
- end
-end
-
-def fun_l0_n725(x)
- if (x < 1)
- fun_l1_n624(x)
- else
- fun_l1_n162(x)
- end
-end
-
-def fun_l0_n726(x)
- if (x < 1)
- fun_l1_n143(x)
- else
- fun_l1_n417(x)
- end
-end
-
-def fun_l0_n727(x)
- if (x < 1)
- fun_l1_n623(x)
- else
- fun_l1_n19(x)
- end
-end
-
-def fun_l0_n728(x)
- if (x < 1)
- fun_l1_n687(x)
- else
- fun_l1_n574(x)
- end
-end
-
-def fun_l0_n729(x)
- if (x < 1)
- fun_l1_n225(x)
- else
- fun_l1_n871(x)
- end
-end
-
-def fun_l0_n730(x)
- if (x < 1)
- fun_l1_n830(x)
- else
- fun_l1_n273(x)
- end
-end
-
-def fun_l0_n731(x)
- if (x < 1)
- fun_l1_n95(x)
- else
- fun_l1_n864(x)
- end
-end
-
-def fun_l0_n732(x)
- if (x < 1)
- fun_l1_n902(x)
- else
- fun_l1_n522(x)
- end
-end
-
-def fun_l0_n733(x)
- if (x < 1)
- fun_l1_n564(x)
- else
- fun_l1_n55(x)
- end
-end
-
-def fun_l0_n734(x)
- if (x < 1)
- fun_l1_n481(x)
- else
- fun_l1_n880(x)
- end
-end
-
-def fun_l0_n735(x)
- if (x < 1)
- fun_l1_n87(x)
- else
- fun_l1_n693(x)
- end
-end
-
-def fun_l0_n736(x)
- if (x < 1)
- fun_l1_n72(x)
- else
- fun_l1_n396(x)
- end
-end
-
-def fun_l0_n737(x)
- if (x < 1)
- fun_l1_n920(x)
- else
- fun_l1_n852(x)
- end
-end
-
-def fun_l0_n738(x)
- if (x < 1)
- fun_l1_n342(x)
- else
- fun_l1_n959(x)
- end
-end
-
-def fun_l0_n739(x)
- if (x < 1)
- fun_l1_n682(x)
- else
- fun_l1_n714(x)
- end
-end
-
-def fun_l0_n740(x)
- if (x < 1)
- fun_l1_n264(x)
- else
- fun_l1_n325(x)
- end
-end
-
-def fun_l0_n741(x)
- if (x < 1)
- fun_l1_n621(x)
- else
- fun_l1_n339(x)
- end
-end
-
-def fun_l0_n742(x)
- if (x < 1)
- fun_l1_n46(x)
- else
- fun_l1_n766(x)
- end
-end
-
-def fun_l0_n743(x)
- if (x < 1)
- fun_l1_n333(x)
- else
- fun_l1_n353(x)
- end
-end
-
-def fun_l0_n744(x)
- if (x < 1)
- fun_l1_n930(x)
- else
- fun_l1_n964(x)
- end
-end
-
-def fun_l0_n745(x)
- if (x < 1)
- fun_l1_n785(x)
- else
- fun_l1_n114(x)
- end
-end
-
-def fun_l0_n746(x)
- if (x < 1)
- fun_l1_n402(x)
- else
- fun_l1_n803(x)
- end
-end
-
-def fun_l0_n747(x)
- if (x < 1)
- fun_l1_n878(x)
- else
- fun_l1_n870(x)
- end
-end
-
-def fun_l0_n748(x)
- if (x < 1)
- fun_l1_n683(x)
- else
- fun_l1_n287(x)
- end
-end
-
-def fun_l0_n749(x)
- if (x < 1)
- fun_l1_n816(x)
- else
- fun_l1_n849(x)
- end
-end
-
-def fun_l0_n750(x)
- if (x < 1)
- fun_l1_n523(x)
- else
- fun_l1_n555(x)
- end
-end
-
-def fun_l0_n751(x)
- if (x < 1)
- fun_l1_n270(x)
- else
- fun_l1_n660(x)
- end
-end
-
-def fun_l0_n752(x)
- if (x < 1)
- fun_l1_n786(x)
- else
- fun_l1_n749(x)
- end
-end
-
-def fun_l0_n753(x)
- if (x < 1)
- fun_l1_n567(x)
- else
- fun_l1_n325(x)
- end
-end
-
-def fun_l0_n754(x)
- if (x < 1)
- fun_l1_n502(x)
- else
- fun_l1_n610(x)
- end
-end
-
-def fun_l0_n755(x)
- if (x < 1)
- fun_l1_n336(x)
- else
- fun_l1_n354(x)
- end
-end
-
-def fun_l0_n756(x)
- if (x < 1)
- fun_l1_n435(x)
- else
- fun_l1_n484(x)
- end
-end
-
-def fun_l0_n757(x)
- if (x < 1)
- fun_l1_n849(x)
- else
- fun_l1_n42(x)
- end
-end
-
-def fun_l0_n758(x)
- if (x < 1)
- fun_l1_n294(x)
- else
- fun_l1_n483(x)
- end
-end
-
-def fun_l0_n759(x)
- if (x < 1)
- fun_l1_n14(x)
- else
- fun_l1_n9(x)
- end
-end
-
-def fun_l0_n760(x)
- if (x < 1)
- fun_l1_n860(x)
- else
- fun_l1_n645(x)
- end
-end
-
-def fun_l0_n761(x)
- if (x < 1)
- fun_l1_n577(x)
- else
- fun_l1_n0(x)
- end
-end
-
-def fun_l0_n762(x)
- if (x < 1)
- fun_l1_n28(x)
- else
- fun_l1_n834(x)
- end
-end
-
-def fun_l0_n763(x)
- if (x < 1)
- fun_l1_n147(x)
- else
- fun_l1_n177(x)
- end
-end
-
-def fun_l0_n764(x)
- if (x < 1)
- fun_l1_n429(x)
- else
- fun_l1_n646(x)
- end
-end
-
-def fun_l0_n765(x)
- if (x < 1)
- fun_l1_n474(x)
- else
- fun_l1_n22(x)
- end
-end
-
-def fun_l0_n766(x)
- if (x < 1)
- fun_l1_n264(x)
- else
- fun_l1_n549(x)
- end
-end
-
-def fun_l0_n767(x)
- if (x < 1)
- fun_l1_n351(x)
- else
- fun_l1_n813(x)
- end
-end
-
-def fun_l0_n768(x)
- if (x < 1)
- fun_l1_n798(x)
- else
- fun_l1_n684(x)
- end
-end
-
-def fun_l0_n769(x)
- if (x < 1)
- fun_l1_n202(x)
- else
- fun_l1_n982(x)
- end
-end
-
-def fun_l0_n770(x)
- if (x < 1)
- fun_l1_n611(x)
- else
- fun_l1_n52(x)
- end
-end
-
-def fun_l0_n771(x)
- if (x < 1)
- fun_l1_n754(x)
- else
- fun_l1_n7(x)
- end
-end
-
-def fun_l0_n772(x)
- if (x < 1)
- fun_l1_n98(x)
- else
- fun_l1_n149(x)
- end
-end
-
-def fun_l0_n773(x)
- if (x < 1)
- fun_l1_n358(x)
- else
- fun_l1_n603(x)
- end
-end
-
-def fun_l0_n774(x)
- if (x < 1)
- fun_l1_n604(x)
- else
- fun_l1_n318(x)
- end
-end
-
-def fun_l0_n775(x)
- if (x < 1)
- fun_l1_n831(x)
- else
- fun_l1_n635(x)
- end
-end
-
-def fun_l0_n776(x)
- if (x < 1)
- fun_l1_n738(x)
- else
- fun_l1_n563(x)
- end
-end
-
-def fun_l0_n777(x)
- if (x < 1)
- fun_l1_n570(x)
- else
- fun_l1_n671(x)
- end
-end
-
-def fun_l0_n778(x)
- if (x < 1)
- fun_l1_n945(x)
- else
- fun_l1_n840(x)
- end
-end
-
-def fun_l0_n779(x)
- if (x < 1)
- fun_l1_n116(x)
- else
- fun_l1_n942(x)
- end
-end
-
-def fun_l0_n780(x)
- if (x < 1)
- fun_l1_n835(x)
- else
- fun_l1_n244(x)
- end
-end
-
-def fun_l0_n781(x)
- if (x < 1)
- fun_l1_n427(x)
- else
- fun_l1_n556(x)
- end
-end
-
-def fun_l0_n782(x)
- if (x < 1)
- fun_l1_n280(x)
- else
- fun_l1_n926(x)
- end
-end
-
-def fun_l0_n783(x)
- if (x < 1)
- fun_l1_n674(x)
- else
- fun_l1_n560(x)
- end
-end
-
-def fun_l0_n784(x)
- if (x < 1)
- fun_l1_n978(x)
- else
- fun_l1_n139(x)
- end
-end
-
-def fun_l0_n785(x)
- if (x < 1)
- fun_l1_n928(x)
- else
- fun_l1_n11(x)
- end
-end
-
-def fun_l0_n786(x)
- if (x < 1)
- fun_l1_n829(x)
- else
- fun_l1_n239(x)
- end
-end
-
-def fun_l0_n787(x)
- if (x < 1)
- fun_l1_n732(x)
- else
- fun_l1_n829(x)
- end
-end
-
-def fun_l0_n788(x)
- if (x < 1)
- fun_l1_n968(x)
- else
- fun_l1_n596(x)
- end
-end
-
-def fun_l0_n789(x)
- if (x < 1)
- fun_l1_n214(x)
- else
- fun_l1_n158(x)
- end
-end
-
-def fun_l0_n790(x)
- if (x < 1)
- fun_l1_n566(x)
- else
- fun_l1_n390(x)
- end
-end
-
-def fun_l0_n791(x)
- if (x < 1)
- fun_l1_n936(x)
- else
- fun_l1_n31(x)
- end
-end
-
-def fun_l0_n792(x)
- if (x < 1)
- fun_l1_n291(x)
- else
- fun_l1_n835(x)
- end
-end
-
-def fun_l0_n793(x)
- if (x < 1)
- fun_l1_n300(x)
- else
- fun_l1_n658(x)
- end
-end
-
-def fun_l0_n794(x)
- if (x < 1)
- fun_l1_n609(x)
- else
- fun_l1_n156(x)
- end
-end
-
-def fun_l0_n795(x)
- if (x < 1)
- fun_l1_n419(x)
- else
- fun_l1_n534(x)
- end
-end
-
-def fun_l0_n796(x)
- if (x < 1)
- fun_l1_n401(x)
- else
- fun_l1_n281(x)
- end
-end
-
-def fun_l0_n797(x)
- if (x < 1)
- fun_l1_n538(x)
- else
- fun_l1_n905(x)
- end
-end
-
-def fun_l0_n798(x)
- if (x < 1)
- fun_l1_n427(x)
- else
- fun_l1_n978(x)
- end
-end
-
-def fun_l0_n799(x)
- if (x < 1)
- fun_l1_n851(x)
- else
- fun_l1_n57(x)
- end
-end
-
-def fun_l0_n800(x)
- if (x < 1)
- fun_l1_n836(x)
- else
- fun_l1_n306(x)
- end
-end
-
-def fun_l0_n801(x)
- if (x < 1)
- fun_l1_n414(x)
- else
- fun_l1_n679(x)
- end
-end
-
-def fun_l0_n802(x)
- if (x < 1)
- fun_l1_n645(x)
- else
- fun_l1_n115(x)
- end
-end
-
-def fun_l0_n803(x)
- if (x < 1)
- fun_l1_n884(x)
- else
- fun_l1_n801(x)
- end
-end
-
-def fun_l0_n804(x)
- if (x < 1)
- fun_l1_n713(x)
- else
- fun_l1_n974(x)
- end
-end
-
-def fun_l0_n805(x)
- if (x < 1)
- fun_l1_n301(x)
- else
- fun_l1_n589(x)
- end
-end
-
-def fun_l0_n806(x)
- if (x < 1)
- fun_l1_n912(x)
- else
- fun_l1_n766(x)
- end
-end
-
-def fun_l0_n807(x)
- if (x < 1)
- fun_l1_n656(x)
- else
- fun_l1_n765(x)
- end
-end
-
-def fun_l0_n808(x)
- if (x < 1)
- fun_l1_n517(x)
- else
- fun_l1_n964(x)
- end
-end
-
-def fun_l0_n809(x)
- if (x < 1)
- fun_l1_n878(x)
- else
- fun_l1_n69(x)
- end
-end
-
-def fun_l0_n810(x)
- if (x < 1)
- fun_l1_n527(x)
- else
- fun_l1_n841(x)
- end
-end
-
-def fun_l0_n811(x)
- if (x < 1)
- fun_l1_n564(x)
- else
- fun_l1_n541(x)
- end
-end
-
-def fun_l0_n812(x)
- if (x < 1)
- fun_l1_n754(x)
- else
- fun_l1_n681(x)
- end
-end
-
-def fun_l0_n813(x)
- if (x < 1)
- fun_l1_n21(x)
- else
- fun_l1_n561(x)
- end
-end
-
-def fun_l0_n814(x)
- if (x < 1)
- fun_l1_n547(x)
- else
- fun_l1_n631(x)
- end
-end
-
-def fun_l0_n815(x)
- if (x < 1)
- fun_l1_n956(x)
- else
- fun_l1_n889(x)
- end
-end
-
-def fun_l0_n816(x)
- if (x < 1)
- fun_l1_n817(x)
- else
- fun_l1_n957(x)
- end
-end
-
-def fun_l0_n817(x)
- if (x < 1)
- fun_l1_n622(x)
- else
- fun_l1_n827(x)
- end
-end
-
-def fun_l0_n818(x)
- if (x < 1)
- fun_l1_n7(x)
- else
- fun_l1_n208(x)
- end
-end
-
-def fun_l0_n819(x)
- if (x < 1)
- fun_l1_n411(x)
- else
- fun_l1_n742(x)
- end
-end
-
-def fun_l0_n820(x)
- if (x < 1)
- fun_l1_n676(x)
- else
- fun_l1_n144(x)
- end
-end
-
-def fun_l0_n821(x)
- if (x < 1)
- fun_l1_n489(x)
- else
- fun_l1_n963(x)
- end
-end
-
-def fun_l0_n822(x)
- if (x < 1)
- fun_l1_n645(x)
- else
- fun_l1_n953(x)
- end
-end
-
-def fun_l0_n823(x)
- if (x < 1)
- fun_l1_n974(x)
- else
- fun_l1_n75(x)
- end
-end
-
-def fun_l0_n824(x)
- if (x < 1)
- fun_l1_n295(x)
- else
- fun_l1_n249(x)
- end
-end
-
-def fun_l0_n825(x)
- if (x < 1)
- fun_l1_n141(x)
- else
- fun_l1_n633(x)
- end
-end
-
-def fun_l0_n826(x)
- if (x < 1)
- fun_l1_n317(x)
- else
- fun_l1_n152(x)
- end
-end
-
-def fun_l0_n827(x)
- if (x < 1)
- fun_l1_n570(x)
- else
- fun_l1_n377(x)
- end
-end
-
-def fun_l0_n828(x)
- if (x < 1)
- fun_l1_n392(x)
- else
- fun_l1_n477(x)
- end
-end
-
-def fun_l0_n829(x)
- if (x < 1)
- fun_l1_n277(x)
- else
- fun_l1_n276(x)
- end
-end
-
-def fun_l0_n830(x)
- if (x < 1)
- fun_l1_n579(x)
- else
- fun_l1_n648(x)
- end
-end
-
-def fun_l0_n831(x)
- if (x < 1)
- fun_l1_n8(x)
- else
- fun_l1_n25(x)
- end
-end
-
-def fun_l0_n832(x)
- if (x < 1)
- fun_l1_n724(x)
- else
- fun_l1_n617(x)
- end
-end
-
-def fun_l0_n833(x)
- if (x < 1)
- fun_l1_n771(x)
- else
- fun_l1_n619(x)
- end
-end
-
-def fun_l0_n834(x)
- if (x < 1)
- fun_l1_n23(x)
- else
- fun_l1_n127(x)
- end
-end
-
-def fun_l0_n835(x)
- if (x < 1)
- fun_l1_n322(x)
- else
- fun_l1_n327(x)
- end
-end
-
-def fun_l0_n836(x)
- if (x < 1)
- fun_l1_n7(x)
- else
- fun_l1_n600(x)
- end
-end
-
-def fun_l0_n837(x)
- if (x < 1)
- fun_l1_n796(x)
- else
- fun_l1_n782(x)
- end
-end
-
-def fun_l0_n838(x)
- if (x < 1)
- fun_l1_n937(x)
- else
- fun_l1_n899(x)
- end
-end
-
-def fun_l0_n839(x)
- if (x < 1)
- fun_l1_n16(x)
- else
- fun_l1_n349(x)
- end
-end
-
-def fun_l0_n840(x)
- if (x < 1)
- fun_l1_n622(x)
- else
- fun_l1_n960(x)
- end
-end
-
-def fun_l0_n841(x)
- if (x < 1)
- fun_l1_n295(x)
- else
- fun_l1_n176(x)
- end
-end
-
-def fun_l0_n842(x)
- if (x < 1)
- fun_l1_n302(x)
- else
- fun_l1_n639(x)
- end
-end
-
-def fun_l0_n843(x)
- if (x < 1)
- fun_l1_n342(x)
- else
- fun_l1_n373(x)
- end
-end
-
-def fun_l0_n844(x)
- if (x < 1)
- fun_l1_n5(x)
- else
- fun_l1_n787(x)
- end
-end
-
-def fun_l0_n845(x)
- if (x < 1)
- fun_l1_n89(x)
- else
- fun_l1_n951(x)
- end
-end
-
-def fun_l0_n846(x)
- if (x < 1)
- fun_l1_n954(x)
- else
- fun_l1_n982(x)
- end
-end
-
-def fun_l0_n847(x)
- if (x < 1)
- fun_l1_n971(x)
- else
- fun_l1_n917(x)
- end
-end
-
-def fun_l0_n848(x)
- if (x < 1)
- fun_l1_n845(x)
- else
- fun_l1_n343(x)
- end
-end
-
-def fun_l0_n849(x)
- if (x < 1)
- fun_l1_n684(x)
- else
- fun_l1_n683(x)
- end
-end
-
-def fun_l0_n850(x)
- if (x < 1)
- fun_l1_n670(x)
- else
- fun_l1_n256(x)
- end
-end
-
-def fun_l0_n851(x)
- if (x < 1)
- fun_l1_n405(x)
- else
- fun_l1_n123(x)
- end
-end
-
-def fun_l0_n852(x)
- if (x < 1)
- fun_l1_n809(x)
- else
- fun_l1_n691(x)
- end
-end
-
-def fun_l0_n853(x)
- if (x < 1)
- fun_l1_n937(x)
- else
- fun_l1_n92(x)
- end
-end
-
-def fun_l0_n854(x)
- if (x < 1)
- fun_l1_n735(x)
- else
- fun_l1_n948(x)
- end
-end
-
-def fun_l0_n855(x)
- if (x < 1)
- fun_l1_n684(x)
- else
- fun_l1_n566(x)
- end
-end
-
-def fun_l0_n856(x)
- if (x < 1)
- fun_l1_n508(x)
- else
- fun_l1_n35(x)
- end
-end
-
-def fun_l0_n857(x)
- if (x < 1)
- fun_l1_n865(x)
- else
- fun_l1_n930(x)
- end
-end
-
-def fun_l0_n858(x)
- if (x < 1)
- fun_l1_n937(x)
- else
- fun_l1_n241(x)
- end
-end
-
-def fun_l0_n859(x)
- if (x < 1)
- fun_l1_n938(x)
- else
- fun_l1_n108(x)
- end
-end
-
-def fun_l0_n860(x)
- if (x < 1)
- fun_l1_n491(x)
- else
- fun_l1_n119(x)
- end
-end
-
-def fun_l0_n861(x)
- if (x < 1)
- fun_l1_n991(x)
- else
- fun_l1_n198(x)
- end
-end
-
-def fun_l0_n862(x)
- if (x < 1)
- fun_l1_n846(x)
- else
- fun_l1_n513(x)
- end
-end
-
-def fun_l0_n863(x)
- if (x < 1)
- fun_l1_n279(x)
- else
- fun_l1_n229(x)
- end
-end
-
-def fun_l0_n864(x)
- if (x < 1)
- fun_l1_n52(x)
- else
- fun_l1_n765(x)
- end
-end
-
-def fun_l0_n865(x)
- if (x < 1)
- fun_l1_n35(x)
- else
- fun_l1_n572(x)
- end
-end
-
-def fun_l0_n866(x)
- if (x < 1)
- fun_l1_n4(x)
- else
- fun_l1_n645(x)
- end
-end
-
-def fun_l0_n867(x)
- if (x < 1)
- fun_l1_n112(x)
- else
- fun_l1_n758(x)
- end
-end
-
-def fun_l0_n868(x)
- if (x < 1)
- fun_l1_n924(x)
- else
- fun_l1_n251(x)
- end
-end
-
-def fun_l0_n869(x)
- if (x < 1)
- fun_l1_n558(x)
- else
- fun_l1_n818(x)
- end
-end
-
-def fun_l0_n870(x)
- if (x < 1)
- fun_l1_n804(x)
- else
- fun_l1_n746(x)
- end
-end
-
-def fun_l0_n871(x)
- if (x < 1)
- fun_l1_n111(x)
- else
- fun_l1_n407(x)
- end
-end
-
-def fun_l0_n872(x)
- if (x < 1)
- fun_l1_n973(x)
- else
- fun_l1_n384(x)
- end
-end
-
-def fun_l0_n873(x)
- if (x < 1)
- fun_l1_n102(x)
- else
- fun_l1_n199(x)
- end
-end
-
-def fun_l0_n874(x)
- if (x < 1)
- fun_l1_n735(x)
- else
- fun_l1_n903(x)
- end
-end
-
-def fun_l0_n875(x)
- if (x < 1)
- fun_l1_n95(x)
- else
- fun_l1_n720(x)
- end
-end
-
-def fun_l0_n876(x)
- if (x < 1)
- fun_l1_n864(x)
- else
- fun_l1_n970(x)
- end
-end
-
-def fun_l0_n877(x)
- if (x < 1)
- fun_l1_n729(x)
- else
- fun_l1_n207(x)
- end
-end
-
-def fun_l0_n878(x)
- if (x < 1)
- fun_l1_n104(x)
- else
- fun_l1_n209(x)
- end
-end
-
-def fun_l0_n879(x)
- if (x < 1)
- fun_l1_n566(x)
- else
- fun_l1_n918(x)
- end
-end
-
-def fun_l0_n880(x)
- if (x < 1)
- fun_l1_n457(x)
- else
- fun_l1_n104(x)
- end
-end
-
-def fun_l0_n881(x)
- if (x < 1)
- fun_l1_n745(x)
- else
- fun_l1_n476(x)
- end
-end
-
-def fun_l0_n882(x)
- if (x < 1)
- fun_l1_n346(x)
- else
- fun_l1_n642(x)
- end
-end
-
-def fun_l0_n883(x)
- if (x < 1)
- fun_l1_n78(x)
- else
- fun_l1_n210(x)
- end
-end
-
-def fun_l0_n884(x)
- if (x < 1)
- fun_l1_n864(x)
- else
- fun_l1_n439(x)
- end
-end
-
-def fun_l0_n885(x)
- if (x < 1)
- fun_l1_n0(x)
- else
- fun_l1_n414(x)
- end
-end
-
-def fun_l0_n886(x)
- if (x < 1)
- fun_l1_n217(x)
- else
- fun_l1_n444(x)
- end
-end
-
-def fun_l0_n887(x)
- if (x < 1)
- fun_l1_n193(x)
- else
- fun_l1_n788(x)
- end
-end
-
-def fun_l0_n888(x)
- if (x < 1)
- fun_l1_n30(x)
- else
- fun_l1_n793(x)
- end
-end
-
-def fun_l0_n889(x)
- if (x < 1)
- fun_l1_n222(x)
- else
- fun_l1_n936(x)
- end
-end
-
-def fun_l0_n890(x)
- if (x < 1)
- fun_l1_n758(x)
- else
- fun_l1_n52(x)
- end
-end
-
-def fun_l0_n891(x)
- if (x < 1)
- fun_l1_n796(x)
- else
- fun_l1_n424(x)
- end
-end
-
-def fun_l0_n892(x)
- if (x < 1)
- fun_l1_n627(x)
- else
- fun_l1_n284(x)
- end
-end
-
-def fun_l0_n893(x)
- if (x < 1)
- fun_l1_n42(x)
- else
- fun_l1_n193(x)
- end
-end
-
-def fun_l0_n894(x)
- if (x < 1)
- fun_l1_n90(x)
- else
- fun_l1_n158(x)
- end
-end
-
-def fun_l0_n895(x)
- if (x < 1)
- fun_l1_n878(x)
- else
- fun_l1_n396(x)
- end
-end
-
-def fun_l0_n896(x)
- if (x < 1)
- fun_l1_n665(x)
- else
- fun_l1_n731(x)
- end
-end
-
-def fun_l0_n897(x)
- if (x < 1)
- fun_l1_n618(x)
- else
- fun_l1_n152(x)
- end
-end
-
-def fun_l0_n898(x)
- if (x < 1)
- fun_l1_n64(x)
- else
- fun_l1_n697(x)
- end
-end
-
-def fun_l0_n899(x)
- if (x < 1)
- fun_l1_n354(x)
- else
- fun_l1_n657(x)
- end
-end
-
-def fun_l0_n900(x)
- if (x < 1)
- fun_l1_n79(x)
- else
- fun_l1_n794(x)
- end
-end
-
-def fun_l0_n901(x)
- if (x < 1)
- fun_l1_n623(x)
- else
- fun_l1_n392(x)
- end
-end
-
-def fun_l0_n902(x)
- if (x < 1)
- fun_l1_n529(x)
- else
- fun_l1_n708(x)
- end
-end
-
-def fun_l0_n903(x)
- if (x < 1)
- fun_l1_n900(x)
- else
- fun_l1_n830(x)
- end
-end
-
-def fun_l0_n904(x)
- if (x < 1)
- fun_l1_n424(x)
- else
- fun_l1_n564(x)
- end
-end
-
-def fun_l0_n905(x)
- if (x < 1)
- fun_l1_n557(x)
- else
- fun_l1_n612(x)
- end
-end
-
-def fun_l0_n906(x)
- if (x < 1)
- fun_l1_n725(x)
- else
- fun_l1_n166(x)
- end
-end
-
-def fun_l0_n907(x)
- if (x < 1)
- fun_l1_n534(x)
- else
- fun_l1_n159(x)
- end
-end
-
-def fun_l0_n908(x)
- if (x < 1)
- fun_l1_n50(x)
- else
- fun_l1_n201(x)
- end
-end
-
-def fun_l0_n909(x)
- if (x < 1)
- fun_l1_n568(x)
- else
- fun_l1_n276(x)
- end
-end
-
-def fun_l0_n910(x)
- if (x < 1)
- fun_l1_n0(x)
- else
- fun_l1_n324(x)
- end
-end
-
-def fun_l0_n911(x)
- if (x < 1)
- fun_l1_n926(x)
- else
- fun_l1_n524(x)
- end
-end
-
-def fun_l0_n912(x)
- if (x < 1)
- fun_l1_n498(x)
- else
- fun_l1_n650(x)
- end
-end
-
-def fun_l0_n913(x)
- if (x < 1)
- fun_l1_n593(x)
- else
- fun_l1_n860(x)
- end
-end
-
-def fun_l0_n914(x)
- if (x < 1)
- fun_l1_n726(x)
- else
- fun_l1_n440(x)
- end
-end
-
-def fun_l0_n915(x)
- if (x < 1)
- fun_l1_n422(x)
- else
- fun_l1_n627(x)
- end
-end
-
-def fun_l0_n916(x)
- if (x < 1)
- fun_l1_n346(x)
- else
- fun_l1_n932(x)
- end
-end
-
-def fun_l0_n917(x)
- if (x < 1)
- fun_l1_n403(x)
- else
- fun_l1_n58(x)
- end
-end
-
-def fun_l0_n918(x)
- if (x < 1)
- fun_l1_n989(x)
- else
- fun_l1_n579(x)
- end
-end
-
-def fun_l0_n919(x)
- if (x < 1)
- fun_l1_n933(x)
- else
- fun_l1_n434(x)
- end
-end
-
-def fun_l0_n920(x)
- if (x < 1)
- fun_l1_n899(x)
- else
- fun_l1_n377(x)
- end
-end
-
-def fun_l0_n921(x)
- if (x < 1)
- fun_l1_n17(x)
- else
- fun_l1_n637(x)
- end
-end
-
-def fun_l0_n922(x)
- if (x < 1)
- fun_l1_n551(x)
- else
- fun_l1_n693(x)
- end
-end
-
-def fun_l0_n923(x)
- if (x < 1)
- fun_l1_n861(x)
- else
- fun_l1_n248(x)
- end
-end
-
-def fun_l0_n924(x)
- if (x < 1)
- fun_l1_n171(x)
- else
- fun_l1_n75(x)
- end
-end
-
-def fun_l0_n925(x)
- if (x < 1)
- fun_l1_n233(x)
- else
- fun_l1_n444(x)
- end
-end
-
-def fun_l0_n926(x)
- if (x < 1)
- fun_l1_n310(x)
- else
- fun_l1_n941(x)
- end
-end
-
-def fun_l0_n927(x)
- if (x < 1)
- fun_l1_n363(x)
- else
- fun_l1_n567(x)
- end
-end
-
-def fun_l0_n928(x)
- if (x < 1)
- fun_l1_n632(x)
- else
- fun_l1_n840(x)
- end
-end
-
-def fun_l0_n929(x)
- if (x < 1)
- fun_l1_n368(x)
- else
- fun_l1_n713(x)
- end
-end
-
-def fun_l0_n930(x)
- if (x < 1)
- fun_l1_n37(x)
- else
- fun_l1_n355(x)
- end
-end
-
-def fun_l0_n931(x)
- if (x < 1)
- fun_l1_n907(x)
- else
- fun_l1_n784(x)
- end
-end
-
-def fun_l0_n932(x)
- if (x < 1)
- fun_l1_n591(x)
- else
- fun_l1_n844(x)
- end
-end
-
-def fun_l0_n933(x)
- if (x < 1)
- fun_l1_n996(x)
- else
- fun_l1_n943(x)
- end
-end
-
-def fun_l0_n934(x)
- if (x < 1)
- fun_l1_n631(x)
- else
- fun_l1_n643(x)
- end
-end
-
-def fun_l0_n935(x)
- if (x < 1)
- fun_l1_n875(x)
- else
- fun_l1_n89(x)
- end
-end
-
-def fun_l0_n936(x)
- if (x < 1)
- fun_l1_n842(x)
- else
- fun_l1_n595(x)
- end
-end
-
-def fun_l0_n937(x)
- if (x < 1)
- fun_l1_n921(x)
- else
- fun_l1_n271(x)
- end
-end
-
-def fun_l0_n938(x)
- if (x < 1)
- fun_l1_n222(x)
- else
- fun_l1_n170(x)
- end
-end
-
-def fun_l0_n939(x)
- if (x < 1)
- fun_l1_n567(x)
- else
- fun_l1_n463(x)
- end
-end
-
-def fun_l0_n940(x)
- if (x < 1)
- fun_l1_n456(x)
- else
- fun_l1_n192(x)
- end
-end
-
-def fun_l0_n941(x)
- if (x < 1)
- fun_l1_n32(x)
- else
- fun_l1_n951(x)
- end
-end
-
-def fun_l0_n942(x)
- if (x < 1)
- fun_l1_n14(x)
- else
- fun_l1_n135(x)
- end
-end
-
-def fun_l0_n943(x)
- if (x < 1)
- fun_l1_n15(x)
- else
- fun_l1_n234(x)
- end
-end
-
-def fun_l0_n944(x)
- if (x < 1)
- fun_l1_n119(x)
- else
- fun_l1_n33(x)
- end
-end
-
-def fun_l0_n945(x)
- if (x < 1)
- fun_l1_n859(x)
- else
- fun_l1_n497(x)
- end
-end
-
-def fun_l0_n946(x)
- if (x < 1)
- fun_l1_n178(x)
- else
- fun_l1_n369(x)
- end
-end
-
-def fun_l0_n947(x)
- if (x < 1)
- fun_l1_n64(x)
- else
- fun_l1_n356(x)
- end
-end
-
-def fun_l0_n948(x)
- if (x < 1)
- fun_l1_n279(x)
- else
- fun_l1_n244(x)
- end
-end
-
-def fun_l0_n949(x)
- if (x < 1)
- fun_l1_n728(x)
- else
- fun_l1_n548(x)
- end
-end
-
-def fun_l0_n950(x)
- if (x < 1)
- fun_l1_n3(x)
- else
- fun_l1_n698(x)
- end
-end
-
-def fun_l0_n951(x)
- if (x < 1)
- fun_l1_n665(x)
- else
- fun_l1_n198(x)
- end
-end
-
-def fun_l0_n952(x)
- if (x < 1)
- fun_l1_n812(x)
- else
- fun_l1_n964(x)
- end
-end
-
-def fun_l0_n953(x)
- if (x < 1)
- fun_l1_n851(x)
- else
- fun_l1_n877(x)
- end
-end
-
-def fun_l0_n954(x)
- if (x < 1)
- fun_l1_n415(x)
- else
- fun_l1_n379(x)
- end
-end
-
-def fun_l0_n955(x)
- if (x < 1)
- fun_l1_n806(x)
- else
- fun_l1_n919(x)
- end
-end
-
-def fun_l0_n956(x)
- if (x < 1)
- fun_l1_n207(x)
- else
- fun_l1_n798(x)
- end
-end
-
-def fun_l0_n957(x)
- if (x < 1)
- fun_l1_n269(x)
- else
- fun_l1_n416(x)
- end
-end
-
-def fun_l0_n958(x)
- if (x < 1)
- fun_l1_n654(x)
- else
- fun_l1_n236(x)
- end
-end
-
-def fun_l0_n959(x)
- if (x < 1)
- fun_l1_n392(x)
- else
- fun_l1_n623(x)
- end
-end
-
-def fun_l0_n960(x)
- if (x < 1)
- fun_l1_n889(x)
- else
- fun_l1_n279(x)
- end
-end
-
-def fun_l0_n961(x)
- if (x < 1)
- fun_l1_n476(x)
- else
- fun_l1_n201(x)
- end
-end
-
-def fun_l0_n962(x)
- if (x < 1)
- fun_l1_n799(x)
- else
- fun_l1_n570(x)
- end
-end
-
-def fun_l0_n963(x)
- if (x < 1)
- fun_l1_n802(x)
- else
- fun_l1_n114(x)
- end
-end
-
-def fun_l0_n964(x)
- if (x < 1)
- fun_l1_n197(x)
- else
- fun_l1_n422(x)
- end
-end
-
-def fun_l0_n965(x)
- if (x < 1)
- fun_l1_n37(x)
- else
- fun_l1_n691(x)
- end
-end
-
-def fun_l0_n966(x)
- if (x < 1)
- fun_l1_n775(x)
- else
- fun_l1_n854(x)
- end
-end
-
-def fun_l0_n967(x)
- if (x < 1)
- fun_l1_n373(x)
- else
- fun_l1_n306(x)
- end
-end
-
-def fun_l0_n968(x)
- if (x < 1)
- fun_l1_n154(x)
- else
- fun_l1_n122(x)
- end
-end
-
-def fun_l0_n969(x)
- if (x < 1)
- fun_l1_n497(x)
- else
- fun_l1_n456(x)
- end
-end
-
-def fun_l0_n970(x)
- if (x < 1)
- fun_l1_n621(x)
- else
- fun_l1_n931(x)
- end
-end
-
-def fun_l0_n971(x)
- if (x < 1)
- fun_l1_n963(x)
- else
- fun_l1_n613(x)
- end
-end
-
-def fun_l0_n972(x)
- if (x < 1)
- fun_l1_n613(x)
- else
- fun_l1_n508(x)
- end
-end
-
-def fun_l0_n973(x)
- if (x < 1)
- fun_l1_n466(x)
- else
- fun_l1_n929(x)
- end
-end
-
-def fun_l0_n974(x)
- if (x < 1)
- fun_l1_n247(x)
- else
- fun_l1_n610(x)
- end
-end
-
-def fun_l0_n975(x)
- if (x < 1)
- fun_l1_n674(x)
- else
- fun_l1_n609(x)
- end
-end
-
-def fun_l0_n976(x)
- if (x < 1)
- fun_l1_n963(x)
- else
- fun_l1_n601(x)
- end
-end
-
-def fun_l0_n977(x)
- if (x < 1)
- fun_l1_n728(x)
- else
- fun_l1_n242(x)
- end
-end
-
-def fun_l0_n978(x)
- if (x < 1)
- fun_l1_n515(x)
- else
- fun_l1_n113(x)
- end
-end
-
-def fun_l0_n979(x)
- if (x < 1)
- fun_l1_n734(x)
- else
- fun_l1_n271(x)
- end
-end
-
-def fun_l0_n980(x)
- if (x < 1)
- fun_l1_n837(x)
- else
- fun_l1_n733(x)
- end
-end
-
-def fun_l0_n981(x)
- if (x < 1)
- fun_l1_n326(x)
- else
- fun_l1_n213(x)
- end
-end
-
-def fun_l0_n982(x)
- if (x < 1)
- fun_l1_n733(x)
- else
- fun_l1_n198(x)
- end
-end
-
-def fun_l0_n983(x)
- if (x < 1)
- fun_l1_n989(x)
- else
- fun_l1_n700(x)
- end
-end
-
-def fun_l0_n984(x)
- if (x < 1)
- fun_l1_n266(x)
- else
- fun_l1_n348(x)
- end
-end
-
-def fun_l0_n985(x)
- if (x < 1)
- fun_l1_n931(x)
- else
- fun_l1_n646(x)
- end
-end
-
-def fun_l0_n986(x)
- if (x < 1)
- fun_l1_n435(x)
- else
- fun_l1_n747(x)
- end
-end
-
-def fun_l0_n987(x)
- if (x < 1)
- fun_l1_n474(x)
- else
- fun_l1_n638(x)
- end
-end
-
-def fun_l0_n988(x)
- if (x < 1)
- fun_l1_n615(x)
- else
- fun_l1_n283(x)
- end
-end
-
-def fun_l0_n989(x)
- if (x < 1)
- fun_l1_n410(x)
- else
- fun_l1_n289(x)
- end
-end
-
-def fun_l0_n990(x)
- if (x < 1)
- fun_l1_n633(x)
- else
- fun_l1_n77(x)
- end
-end
-
-def fun_l0_n991(x)
- if (x < 1)
- fun_l1_n153(x)
- else
- fun_l1_n255(x)
- end
-end
-
-def fun_l0_n992(x)
- if (x < 1)
- fun_l1_n447(x)
- else
- fun_l1_n239(x)
- end
-end
-
-def fun_l0_n993(x)
- if (x < 1)
- fun_l1_n837(x)
- else
- fun_l1_n582(x)
- end
-end
-
-def fun_l0_n994(x)
- if (x < 1)
- fun_l1_n385(x)
- else
- fun_l1_n939(x)
- end
-end
-
-def fun_l0_n995(x)
- if (x < 1)
- fun_l1_n236(x)
- else
- fun_l1_n497(x)
- end
-end
-
-def fun_l0_n996(x)
- if (x < 1)
- fun_l1_n63(x)
- else
- fun_l1_n721(x)
- end
-end
-
-def fun_l0_n997(x)
- if (x < 1)
- fun_l1_n457(x)
- else
- fun_l1_n376(x)
- end
-end
-
-def fun_l0_n998(x)
- if (x < 1)
- fun_l1_n362(x)
- else
- fun_l1_n478(x)
- end
-end
-
-def fun_l0_n999(x)
- if (x < 1)
- fun_l1_n554(x)
- else
- fun_l1_n422(x)
- end
-end
-
-def fun_l1_n0(x)
- if (x < 1)
- fun_l2_n498(x)
- else
- fun_l2_n461(x)
- end
-end
-
-def fun_l1_n1(x)
- if (x < 1)
- fun_l2_n424(x)
- else
- fun_l2_n137(x)
- end
-end
-
-def fun_l1_n2(x)
- if (x < 1)
- fun_l2_n325(x)
- else
- fun_l2_n95(x)
- end
-end
-
-def fun_l1_n3(x)
- if (x < 1)
- fun_l2_n917(x)
- else
- fun_l2_n469(x)
- end
-end
-
-def fun_l1_n4(x)
- if (x < 1)
- fun_l2_n730(x)
- else
- fun_l2_n147(x)
- end
-end
-
-def fun_l1_n5(x)
- if (x < 1)
- fun_l2_n796(x)
- else
- fun_l2_n907(x)
- end
-end
-
-def fun_l1_n6(x)
- if (x < 1)
- fun_l2_n555(x)
- else
- fun_l2_n309(x)
- end
-end
-
-def fun_l1_n7(x)
- if (x < 1)
- fun_l2_n475(x)
- else
- fun_l2_n193(x)
- end
-end
-
-def fun_l1_n8(x)
- if (x < 1)
- fun_l2_n317(x)
- else
- fun_l2_n284(x)
- end
-end
-
-def fun_l1_n9(x)
- if (x < 1)
- fun_l2_n297(x)
- else
- fun_l2_n370(x)
- end
-end
-
-def fun_l1_n10(x)
- if (x < 1)
- fun_l2_n66(x)
- else
- fun_l2_n959(x)
- end
-end
-
-def fun_l1_n11(x)
- if (x < 1)
- fun_l2_n833(x)
- else
- fun_l2_n250(x)
- end
-end
-
-def fun_l1_n12(x)
- if (x < 1)
- fun_l2_n640(x)
- else
- fun_l2_n588(x)
- end
-end
-
-def fun_l1_n13(x)
- if (x < 1)
- fun_l2_n91(x)
- else
- fun_l2_n294(x)
- end
-end
-
-def fun_l1_n14(x)
- if (x < 1)
- fun_l2_n166(x)
- else
- fun_l2_n943(x)
- end
-end
-
-def fun_l1_n15(x)
- if (x < 1)
- fun_l2_n352(x)
- else
- fun_l2_n363(x)
- end
-end
-
-def fun_l1_n16(x)
- if (x < 1)
- fun_l2_n84(x)
- else
- fun_l2_n278(x)
- end
-end
-
-def fun_l1_n17(x)
- if (x < 1)
- fun_l2_n308(x)
- else
- fun_l2_n341(x)
- end
-end
-
-def fun_l1_n18(x)
- if (x < 1)
- fun_l2_n713(x)
- else
- fun_l2_n575(x)
- end
-end
-
-def fun_l1_n19(x)
- if (x < 1)
- fun_l2_n81(x)
- else
- fun_l2_n301(x)
- end
-end
-
-def fun_l1_n20(x)
- if (x < 1)
- fun_l2_n516(x)
- else
- fun_l2_n164(x)
- end
-end
-
-def fun_l1_n21(x)
- if (x < 1)
- fun_l2_n900(x)
- else
- fun_l2_n963(x)
- end
-end
-
-def fun_l1_n22(x)
- if (x < 1)
- fun_l2_n472(x)
- else
- fun_l2_n288(x)
- end
-end
-
-def fun_l1_n23(x)
- if (x < 1)
- fun_l2_n587(x)
- else
- fun_l2_n515(x)
- end
-end
-
-def fun_l1_n24(x)
- if (x < 1)
- fun_l2_n506(x)
- else
- fun_l2_n711(x)
- end
-end
-
-def fun_l1_n25(x)
- if (x < 1)
- fun_l2_n935(x)
- else
- fun_l2_n177(x)
- end
-end
-
-def fun_l1_n26(x)
- if (x < 1)
- fun_l2_n485(x)
- else
- fun_l2_n368(x)
- end
-end
-
-def fun_l1_n27(x)
- if (x < 1)
- fun_l2_n984(x)
- else
- fun_l2_n290(x)
- end
-end
-
-def fun_l1_n28(x)
- if (x < 1)
- fun_l2_n36(x)
- else
- fun_l2_n837(x)
- end
-end
-
-def fun_l1_n29(x)
- if (x < 1)
- fun_l2_n752(x)
- else
- fun_l2_n311(x)
- end
-end
-
-def fun_l1_n30(x)
- if (x < 1)
- fun_l2_n215(x)
- else
- fun_l2_n376(x)
- end
-end
-
-def fun_l1_n31(x)
- if (x < 1)
- fun_l2_n533(x)
- else
- fun_l2_n92(x)
- end
-end
-
-def fun_l1_n32(x)
- if (x < 1)
- fun_l2_n386(x)
- else
- fun_l2_n283(x)
- end
-end
-
-def fun_l1_n33(x)
- if (x < 1)
- fun_l2_n268(x)
- else
- fun_l2_n256(x)
- end
-end
-
-def fun_l1_n34(x)
- if (x < 1)
- fun_l2_n348(x)
- else
- fun_l2_n464(x)
- end
-end
-
-def fun_l1_n35(x)
- if (x < 1)
- fun_l2_n25(x)
- else
- fun_l2_n33(x)
- end
-end
-
-def fun_l1_n36(x)
- if (x < 1)
- fun_l2_n387(x)
- else
- fun_l2_n341(x)
- end
-end
-
-def fun_l1_n37(x)
- if (x < 1)
- fun_l2_n580(x)
- else
- fun_l2_n476(x)
- end
-end
-
-def fun_l1_n38(x)
- if (x < 1)
- fun_l2_n33(x)
- else
- fun_l2_n33(x)
- end
-end
-
-def fun_l1_n39(x)
- if (x < 1)
- fun_l2_n861(x)
- else
- fun_l2_n52(x)
- end
-end
-
-def fun_l1_n40(x)
- if (x < 1)
- fun_l2_n740(x)
- else
- fun_l2_n943(x)
- end
-end
-
-def fun_l1_n41(x)
- if (x < 1)
- fun_l2_n956(x)
- else
- fun_l2_n159(x)
- end
-end
-
-def fun_l1_n42(x)
- if (x < 1)
- fun_l2_n445(x)
- else
- fun_l2_n775(x)
- end
-end
-
-def fun_l1_n43(x)
- if (x < 1)
- fun_l2_n667(x)
- else
- fun_l2_n282(x)
- end
-end
-
-def fun_l1_n44(x)
- if (x < 1)
- fun_l2_n185(x)
- else
- fun_l2_n210(x)
- end
-end
-
-def fun_l1_n45(x)
- if (x < 1)
- fun_l2_n490(x)
- else
- fun_l2_n21(x)
- end
-end
-
-def fun_l1_n46(x)
- if (x < 1)
- fun_l2_n751(x)
- else
- fun_l2_n639(x)
- end
-end
-
-def fun_l1_n47(x)
- if (x < 1)
- fun_l2_n431(x)
- else
- fun_l2_n917(x)
- end
-end
-
-def fun_l1_n48(x)
- if (x < 1)
- fun_l2_n187(x)
- else
- fun_l2_n170(x)
- end
-end
-
-def fun_l1_n49(x)
- if (x < 1)
- fun_l2_n780(x)
- else
- fun_l2_n77(x)
- end
-end
-
-def fun_l1_n50(x)
- if (x < 1)
- fun_l2_n546(x)
- else
- fun_l2_n759(x)
- end
-end
-
-def fun_l1_n51(x)
- if (x < 1)
- fun_l2_n453(x)
- else
- fun_l2_n951(x)
- end
-end
-
-def fun_l1_n52(x)
- if (x < 1)
- fun_l2_n989(x)
- else
- fun_l2_n716(x)
- end
-end
-
-def fun_l1_n53(x)
- if (x < 1)
- fun_l2_n652(x)
- else
- fun_l2_n36(x)
- end
-end
-
-def fun_l1_n54(x)
- if (x < 1)
- fun_l2_n187(x)
- else
- fun_l2_n760(x)
- end
-end
-
-def fun_l1_n55(x)
- if (x < 1)
- fun_l2_n706(x)
- else
- fun_l2_n927(x)
- end
-end
-
-def fun_l1_n56(x)
- if (x < 1)
- fun_l2_n666(x)
- else
- fun_l2_n295(x)
- end
-end
-
-def fun_l1_n57(x)
- if (x < 1)
- fun_l2_n424(x)
- else
- fun_l2_n447(x)
- end
-end
-
-def fun_l1_n58(x)
- if (x < 1)
- fun_l2_n408(x)
- else
- fun_l2_n337(x)
- end
-end
-
-def fun_l1_n59(x)
- if (x < 1)
- fun_l2_n567(x)
- else
- fun_l2_n765(x)
- end
-end
-
-def fun_l1_n60(x)
- if (x < 1)
- fun_l2_n241(x)
- else
- fun_l2_n701(x)
- end
-end
-
-def fun_l1_n61(x)
- if (x < 1)
- fun_l2_n831(x)
- else
- fun_l2_n382(x)
- end
-end
-
-def fun_l1_n62(x)
- if (x < 1)
- fun_l2_n634(x)
- else
- fun_l2_n908(x)
- end
-end
-
-def fun_l1_n63(x)
- if (x < 1)
- fun_l2_n696(x)
- else
- fun_l2_n48(x)
- end
-end
-
-def fun_l1_n64(x)
- if (x < 1)
- fun_l2_n528(x)
- else
- fun_l2_n110(x)
- end
-end
-
-def fun_l1_n65(x)
- if (x < 1)
- fun_l2_n767(x)
- else
- fun_l2_n973(x)
- end
-end
-
-def fun_l1_n66(x)
- if (x < 1)
- fun_l2_n963(x)
- else
- fun_l2_n673(x)
- end
-end
-
-def fun_l1_n67(x)
- if (x < 1)
- fun_l2_n927(x)
- else
- fun_l2_n309(x)
- end
-end
-
-def fun_l1_n68(x)
- if (x < 1)
- fun_l2_n851(x)
- else
- fun_l2_n160(x)
- end
-end
-
-def fun_l1_n69(x)
- if (x < 1)
- fun_l2_n575(x)
- else
- fun_l2_n800(x)
- end
-end
-
-def fun_l1_n70(x)
- if (x < 1)
- fun_l2_n396(x)
- else
- fun_l2_n382(x)
- end
-end
-
-def fun_l1_n71(x)
- if (x < 1)
- fun_l2_n508(x)
- else
- fun_l2_n763(x)
- end
-end
-
-def fun_l1_n72(x)
- if (x < 1)
- fun_l2_n360(x)
- else
- fun_l2_n848(x)
- end
-end
-
-def fun_l1_n73(x)
- if (x < 1)
- fun_l2_n878(x)
- else
- fun_l2_n83(x)
- end
-end
-
-def fun_l1_n74(x)
- if (x < 1)
- fun_l2_n573(x)
- else
- fun_l2_n284(x)
- end
-end
-
-def fun_l1_n75(x)
- if (x < 1)
- fun_l2_n999(x)
- else
- fun_l2_n954(x)
- end
-end
-
-def fun_l1_n76(x)
- if (x < 1)
- fun_l2_n182(x)
- else
- fun_l2_n997(x)
- end
-end
-
-def fun_l1_n77(x)
- if (x < 1)
- fun_l2_n802(x)
- else
- fun_l2_n409(x)
- end
-end
-
-def fun_l1_n78(x)
- if (x < 1)
- fun_l2_n163(x)
- else
- fun_l2_n417(x)
- end
-end
-
-def fun_l1_n79(x)
- if (x < 1)
- fun_l2_n328(x)
- else
- fun_l2_n688(x)
- end
-end
-
-def fun_l1_n80(x)
- if (x < 1)
- fun_l2_n699(x)
- else
- fun_l2_n356(x)
- end
-end
-
-def fun_l1_n81(x)
- if (x < 1)
- fun_l2_n44(x)
- else
- fun_l2_n302(x)
- end
-end
-
-def fun_l1_n82(x)
- if (x < 1)
- fun_l2_n597(x)
- else
- fun_l2_n892(x)
- end
-end
-
-def fun_l1_n83(x)
- if (x < 1)
- fun_l2_n494(x)
- else
- fun_l2_n547(x)
- end
-end
-
-def fun_l1_n84(x)
- if (x < 1)
- fun_l2_n631(x)
- else
- fun_l2_n922(x)
- end
-end
-
-def fun_l1_n85(x)
- if (x < 1)
- fun_l2_n797(x)
- else
- fun_l2_n874(x)
- end
-end
-
-def fun_l1_n86(x)
- if (x < 1)
- fun_l2_n209(x)
- else
- fun_l2_n365(x)
- end
-end
-
-def fun_l1_n87(x)
- if (x < 1)
- fun_l2_n516(x)
- else
- fun_l2_n371(x)
- end
-end
-
-def fun_l1_n88(x)
- if (x < 1)
- fun_l2_n654(x)
- else
- fun_l2_n88(x)
- end
-end
-
-def fun_l1_n89(x)
- if (x < 1)
- fun_l2_n70(x)
- else
- fun_l2_n521(x)
- end
-end
-
-def fun_l1_n90(x)
- if (x < 1)
- fun_l2_n666(x)
- else
- fun_l2_n749(x)
- end
-end
-
-def fun_l1_n91(x)
- if (x < 1)
- fun_l2_n504(x)
- else
- fun_l2_n339(x)
- end
-end
-
-def fun_l1_n92(x)
- if (x < 1)
- fun_l2_n734(x)
- else
- fun_l2_n277(x)
- end
-end
-
-def fun_l1_n93(x)
- if (x < 1)
- fun_l2_n300(x)
- else
- fun_l2_n826(x)
- end
-end
-
-def fun_l1_n94(x)
- if (x < 1)
- fun_l2_n733(x)
- else
- fun_l2_n560(x)
- end
-end
-
-def fun_l1_n95(x)
- if (x < 1)
- fun_l2_n834(x)
- else
- fun_l2_n644(x)
- end
-end
-
-def fun_l1_n96(x)
- if (x < 1)
- fun_l2_n183(x)
- else
- fun_l2_n238(x)
- end
-end
-
-def fun_l1_n97(x)
- if (x < 1)
- fun_l2_n372(x)
- else
- fun_l2_n753(x)
- end
-end
-
-def fun_l1_n98(x)
- if (x < 1)
- fun_l2_n208(x)
- else
- fun_l2_n543(x)
- end
-end
-
-def fun_l1_n99(x)
- if (x < 1)
- fun_l2_n38(x)
- else
- fun_l2_n974(x)
- end
-end
-
-def fun_l1_n100(x)
- if (x < 1)
- fun_l2_n620(x)
- else
- fun_l2_n503(x)
- end
-end
-
-def fun_l1_n101(x)
- if (x < 1)
- fun_l2_n248(x)
- else
- fun_l2_n189(x)
- end
-end
-
-def fun_l1_n102(x)
- if (x < 1)
- fun_l2_n489(x)
- else
- fun_l2_n390(x)
- end
-end
-
-def fun_l1_n103(x)
- if (x < 1)
- fun_l2_n452(x)
- else
- fun_l2_n22(x)
- end
-end
-
-def fun_l1_n104(x)
- if (x < 1)
- fun_l2_n542(x)
- else
- fun_l2_n135(x)
- end
-end
-
-def fun_l1_n105(x)
- if (x < 1)
- fun_l2_n988(x)
- else
- fun_l2_n118(x)
- end
-end
-
-def fun_l1_n106(x)
- if (x < 1)
- fun_l2_n817(x)
- else
- fun_l2_n534(x)
- end
-end
-
-def fun_l1_n107(x)
- if (x < 1)
- fun_l2_n812(x)
- else
- fun_l2_n206(x)
- end
-end
-
-def fun_l1_n108(x)
- if (x < 1)
- fun_l2_n514(x)
- else
- fun_l2_n300(x)
- end
-end
-
-def fun_l1_n109(x)
- if (x < 1)
- fun_l2_n482(x)
- else
- fun_l2_n376(x)
- end
-end
-
-def fun_l1_n110(x)
- if (x < 1)
- fun_l2_n571(x)
- else
- fun_l2_n758(x)
- end
-end
-
-def fun_l1_n111(x)
- if (x < 1)
- fun_l2_n971(x)
- else
- fun_l2_n811(x)
- end
-end
-
-def fun_l1_n112(x)
- if (x < 1)
- fun_l2_n23(x)
- else
- fun_l2_n844(x)
- end
-end
-
-def fun_l1_n113(x)
- if (x < 1)
- fun_l2_n865(x)
- else
- fun_l2_n149(x)
- end
-end
-
-def fun_l1_n114(x)
- if (x < 1)
- fun_l2_n930(x)
- else
- fun_l2_n327(x)
- end
-end
-
-def fun_l1_n115(x)
- if (x < 1)
- fun_l2_n67(x)
- else
- fun_l2_n442(x)
- end
-end
-
-def fun_l1_n116(x)
- if (x < 1)
- fun_l2_n278(x)
- else
- fun_l2_n653(x)
- end
-end
-
-def fun_l1_n117(x)
- if (x < 1)
- fun_l2_n457(x)
- else
- fun_l2_n179(x)
- end
-end
-
-def fun_l1_n118(x)
- if (x < 1)
- fun_l2_n384(x)
- else
- fun_l2_n594(x)
- end
-end
-
-def fun_l1_n119(x)
- if (x < 1)
- fun_l2_n361(x)
- else
- fun_l2_n770(x)
- end
-end
-
-def fun_l1_n120(x)
- if (x < 1)
- fun_l2_n24(x)
- else
- fun_l2_n269(x)
- end
-end
-
-def fun_l1_n121(x)
- if (x < 1)
- fun_l2_n57(x)
- else
- fun_l2_n2(x)
- end
-end
-
-def fun_l1_n122(x)
- if (x < 1)
- fun_l2_n421(x)
- else
- fun_l2_n339(x)
- end
-end
-
-def fun_l1_n123(x)
- if (x < 1)
- fun_l2_n623(x)
- else
- fun_l2_n985(x)
- end
-end
-
-def fun_l1_n124(x)
- if (x < 1)
- fun_l2_n609(x)
- else
- fun_l2_n530(x)
- end
-end
-
-def fun_l1_n125(x)
- if (x < 1)
- fun_l2_n565(x)
- else
- fun_l2_n155(x)
- end
-end
-
-def fun_l1_n126(x)
- if (x < 1)
- fun_l2_n135(x)
- else
- fun_l2_n971(x)
- end
-end
-
-def fun_l1_n127(x)
- if (x < 1)
- fun_l2_n691(x)
- else
- fun_l2_n503(x)
- end
-end
-
-def fun_l1_n128(x)
- if (x < 1)
- fun_l2_n555(x)
- else
- fun_l2_n67(x)
- end
-end
-
-def fun_l1_n129(x)
- if (x < 1)
- fun_l2_n95(x)
- else
- fun_l2_n192(x)
- end
-end
-
-def fun_l1_n130(x)
- if (x < 1)
- fun_l2_n432(x)
- else
- fun_l2_n771(x)
- end
-end
-
-def fun_l1_n131(x)
- if (x < 1)
- fun_l2_n993(x)
- else
- fun_l2_n539(x)
- end
-end
-
-def fun_l1_n132(x)
- if (x < 1)
- fun_l2_n809(x)
- else
- fun_l2_n902(x)
- end
-end
-
-def fun_l1_n133(x)
- if (x < 1)
- fun_l2_n95(x)
- else
- fun_l2_n928(x)
- end
-end
-
-def fun_l1_n134(x)
- if (x < 1)
- fun_l2_n781(x)
- else
- fun_l2_n832(x)
- end
-end
-
-def fun_l1_n135(x)
- if (x < 1)
- fun_l2_n231(x)
- else
- fun_l2_n392(x)
- end
-end
-
-def fun_l1_n136(x)
- if (x < 1)
- fun_l2_n102(x)
- else
- fun_l2_n449(x)
- end
-end
-
-def fun_l1_n137(x)
- if (x < 1)
- fun_l2_n196(x)
- else
- fun_l2_n909(x)
- end
-end
-
-def fun_l1_n138(x)
- if (x < 1)
- fun_l2_n449(x)
- else
- fun_l2_n190(x)
- end
-end
-
-def fun_l1_n139(x)
- if (x < 1)
- fun_l2_n638(x)
- else
- fun_l2_n149(x)
- end
-end
-
-def fun_l1_n140(x)
- if (x < 1)
- fun_l2_n523(x)
- else
- fun_l2_n297(x)
- end
-end
-
-def fun_l1_n141(x)
- if (x < 1)
- fun_l2_n476(x)
- else
- fun_l2_n161(x)
- end
-end
-
-def fun_l1_n142(x)
- if (x < 1)
- fun_l2_n893(x)
- else
- fun_l2_n686(x)
- end
-end
-
-def fun_l1_n143(x)
- if (x < 1)
- fun_l2_n958(x)
- else
- fun_l2_n899(x)
- end
-end
-
-def fun_l1_n144(x)
- if (x < 1)
- fun_l2_n104(x)
- else
- fun_l2_n912(x)
- end
-end
-
-def fun_l1_n145(x)
- if (x < 1)
- fun_l2_n332(x)
- else
- fun_l2_n579(x)
- end
-end
-
-def fun_l1_n146(x)
- if (x < 1)
- fun_l2_n40(x)
- else
- fun_l2_n468(x)
- end
-end
-
-def fun_l1_n147(x)
- if (x < 1)
- fun_l2_n771(x)
- else
- fun_l2_n314(x)
- end
-end
-
-def fun_l1_n148(x)
- if (x < 1)
- fun_l2_n340(x)
- else
- fun_l2_n203(x)
- end
-end
-
-def fun_l1_n149(x)
- if (x < 1)
- fun_l2_n952(x)
- else
- fun_l2_n265(x)
- end
-end
-
-def fun_l1_n150(x)
- if (x < 1)
- fun_l2_n11(x)
- else
- fun_l2_n303(x)
- end
-end
-
-def fun_l1_n151(x)
- if (x < 1)
- fun_l2_n394(x)
- else
- fun_l2_n317(x)
- end
-end
-
-def fun_l1_n152(x)
- if (x < 1)
- fun_l2_n140(x)
- else
- fun_l2_n906(x)
- end
-end
-
-def fun_l1_n153(x)
- if (x < 1)
- fun_l2_n75(x)
- else
- fun_l2_n485(x)
- end
-end
-
-def fun_l1_n154(x)
- if (x < 1)
- fun_l2_n842(x)
- else
- fun_l2_n370(x)
- end
-end
-
-def fun_l1_n155(x)
- if (x < 1)
- fun_l2_n346(x)
- else
- fun_l2_n833(x)
- end
-end
-
-def fun_l1_n156(x)
- if (x < 1)
- fun_l2_n433(x)
- else
- fun_l2_n373(x)
- end
-end
-
-def fun_l1_n157(x)
- if (x < 1)
- fun_l2_n978(x)
- else
- fun_l2_n99(x)
- end
-end
-
-def fun_l1_n158(x)
- if (x < 1)
- fun_l2_n540(x)
- else
- fun_l2_n987(x)
- end
-end
-
-def fun_l1_n159(x)
- if (x < 1)
- fun_l2_n785(x)
- else
- fun_l2_n478(x)
- end
-end
-
-def fun_l1_n160(x)
- if (x < 1)
- fun_l2_n282(x)
- else
- fun_l2_n222(x)
- end
-end
-
-def fun_l1_n161(x)
- if (x < 1)
- fun_l2_n29(x)
- else
- fun_l2_n946(x)
- end
-end
-
-def fun_l1_n162(x)
- if (x < 1)
- fun_l2_n314(x)
- else
- fun_l2_n758(x)
- end
-end
-
-def fun_l1_n163(x)
- if (x < 1)
- fun_l2_n861(x)
- else
- fun_l2_n799(x)
- end
-end
-
-def fun_l1_n164(x)
- if (x < 1)
- fun_l2_n403(x)
- else
- fun_l2_n413(x)
- end
-end
-
-def fun_l1_n165(x)
- if (x < 1)
- fun_l2_n160(x)
- else
- fun_l2_n794(x)
- end
-end
-
-def fun_l1_n166(x)
- if (x < 1)
- fun_l2_n114(x)
- else
- fun_l2_n238(x)
- end
-end
-
-def fun_l1_n167(x)
- if (x < 1)
- fun_l2_n806(x)
- else
- fun_l2_n233(x)
- end
-end
-
-def fun_l1_n168(x)
- if (x < 1)
- fun_l2_n871(x)
- else
- fun_l2_n53(x)
- end
-end
-
-def fun_l1_n169(x)
- if (x < 1)
- fun_l2_n644(x)
- else
- fun_l2_n503(x)
- end
-end
-
-def fun_l1_n170(x)
- if (x < 1)
- fun_l2_n172(x)
- else
- fun_l2_n289(x)
- end
-end
-
-def fun_l1_n171(x)
- if (x < 1)
- fun_l2_n920(x)
- else
- fun_l2_n851(x)
- end
-end
-
-def fun_l1_n172(x)
- if (x < 1)
- fun_l2_n552(x)
- else
- fun_l2_n822(x)
- end
-end
-
-def fun_l1_n173(x)
- if (x < 1)
- fun_l2_n747(x)
- else
- fun_l2_n265(x)
- end
-end
-
-def fun_l1_n174(x)
- if (x < 1)
- fun_l2_n287(x)
- else
- fun_l2_n762(x)
- end
-end
-
-def fun_l1_n175(x)
- if (x < 1)
- fun_l2_n627(x)
- else
- fun_l2_n951(x)
- end
-end
-
-def fun_l1_n176(x)
- if (x < 1)
- fun_l2_n459(x)
- else
- fun_l2_n962(x)
- end
-end
-
-def fun_l1_n177(x)
- if (x < 1)
- fun_l2_n214(x)
- else
- fun_l2_n145(x)
- end
-end
-
-def fun_l1_n178(x)
- if (x < 1)
- fun_l2_n620(x)
- else
- fun_l2_n995(x)
- end
-end
-
-def fun_l1_n179(x)
- if (x < 1)
- fun_l2_n136(x)
- else
- fun_l2_n283(x)
- end
-end
-
-def fun_l1_n180(x)
- if (x < 1)
- fun_l2_n377(x)
- else
- fun_l2_n672(x)
- end
-end
-
-def fun_l1_n181(x)
- if (x < 1)
- fun_l2_n218(x)
- else
- fun_l2_n434(x)
- end
-end
-
-def fun_l1_n182(x)
- if (x < 1)
- fun_l2_n522(x)
- else
- fun_l2_n525(x)
- end
-end
-
-def fun_l1_n183(x)
- if (x < 1)
- fun_l2_n648(x)
- else
- fun_l2_n725(x)
- end
-end
-
-def fun_l1_n184(x)
- if (x < 1)
- fun_l2_n579(x)
- else
- fun_l2_n974(x)
- end
-end
-
-def fun_l1_n185(x)
- if (x < 1)
- fun_l2_n10(x)
- else
- fun_l2_n514(x)
- end
-end
-
-def fun_l1_n186(x)
- if (x < 1)
- fun_l2_n829(x)
- else
- fun_l2_n754(x)
- end
-end
-
-def fun_l1_n187(x)
- if (x < 1)
- fun_l2_n380(x)
- else
- fun_l2_n401(x)
- end
-end
-
-def fun_l1_n188(x)
- if (x < 1)
- fun_l2_n839(x)
- else
- fun_l2_n453(x)
- end
-end
-
-def fun_l1_n189(x)
- if (x < 1)
- fun_l2_n553(x)
- else
- fun_l2_n553(x)
- end
-end
-
-def fun_l1_n190(x)
- if (x < 1)
- fun_l2_n972(x)
- else
- fun_l2_n187(x)
- end
-end
-
-def fun_l1_n191(x)
- if (x < 1)
- fun_l2_n275(x)
- else
- fun_l2_n11(x)
- end
-end
-
-def fun_l1_n192(x)
- if (x < 1)
- fun_l2_n1(x)
- else
- fun_l2_n927(x)
- end
-end
-
-def fun_l1_n193(x)
- if (x < 1)
- fun_l2_n569(x)
- else
- fun_l2_n557(x)
- end
-end
-
-def fun_l1_n194(x)
- if (x < 1)
- fun_l2_n380(x)
- else
- fun_l2_n187(x)
- end
-end
-
-def fun_l1_n195(x)
- if (x < 1)
- fun_l2_n297(x)
- else
- fun_l2_n813(x)
- end
-end
-
-def fun_l1_n196(x)
- if (x < 1)
- fun_l2_n565(x)
- else
- fun_l2_n514(x)
- end
-end
-
-def fun_l1_n197(x)
- if (x < 1)
- fun_l2_n473(x)
- else
- fun_l2_n64(x)
- end
-end
-
-def fun_l1_n198(x)
- if (x < 1)
- fun_l2_n182(x)
- else
- fun_l2_n363(x)
- end
-end
-
-def fun_l1_n199(x)
- if (x < 1)
- fun_l2_n660(x)
- else
- fun_l2_n506(x)
- end
-end
-
-def fun_l1_n200(x)
- if (x < 1)
- fun_l2_n834(x)
- else
- fun_l2_n348(x)
- end
-end
-
-def fun_l1_n201(x)
- if (x < 1)
- fun_l2_n403(x)
- else
- fun_l2_n432(x)
- end
-end
-
-def fun_l1_n202(x)
- if (x < 1)
- fun_l2_n115(x)
- else
- fun_l2_n145(x)
- end
-end
-
-def fun_l1_n203(x)
- if (x < 1)
- fun_l2_n637(x)
- else
- fun_l2_n4(x)
- end
-end
-
-def fun_l1_n204(x)
- if (x < 1)
- fun_l2_n951(x)
- else
- fun_l2_n753(x)
- end
-end
-
-def fun_l1_n205(x)
- if (x < 1)
- fun_l2_n703(x)
- else
- fun_l2_n563(x)
- end
-end
-
-def fun_l1_n206(x)
- if (x < 1)
- fun_l2_n614(x)
- else
- fun_l2_n563(x)
- end
-end
-
-def fun_l1_n207(x)
- if (x < 1)
- fun_l2_n210(x)
- else
- fun_l2_n139(x)
- end
-end
-
-def fun_l1_n208(x)
- if (x < 1)
- fun_l2_n471(x)
- else
- fun_l2_n346(x)
- end
-end
-
-def fun_l1_n209(x)
- if (x < 1)
- fun_l2_n922(x)
- else
- fun_l2_n54(x)
- end
-end
-
-def fun_l1_n210(x)
- if (x < 1)
- fun_l2_n494(x)
- else
- fun_l2_n41(x)
- end
-end
-
-def fun_l1_n211(x)
- if (x < 1)
- fun_l2_n87(x)
- else
- fun_l2_n190(x)
- end
-end
-
-def fun_l1_n212(x)
- if (x < 1)
- fun_l2_n458(x)
- else
- fun_l2_n885(x)
- end
-end
-
-def fun_l1_n213(x)
- if (x < 1)
- fun_l2_n48(x)
- else
- fun_l2_n225(x)
- end
-end
-
-def fun_l1_n214(x)
- if (x < 1)
- fun_l2_n706(x)
- else
- fun_l2_n694(x)
- end
-end
-
-def fun_l1_n215(x)
- if (x < 1)
- fun_l2_n116(x)
- else
- fun_l2_n233(x)
- end
-end
-
-def fun_l1_n216(x)
- if (x < 1)
- fun_l2_n279(x)
- else
- fun_l2_n857(x)
- end
-end
-
-def fun_l1_n217(x)
- if (x < 1)
- fun_l2_n643(x)
- else
- fun_l2_n289(x)
- end
-end
-
-def fun_l1_n218(x)
- if (x < 1)
- fun_l2_n535(x)
- else
- fun_l2_n833(x)
- end
-end
-
-def fun_l1_n219(x)
- if (x < 1)
- fun_l2_n478(x)
- else
- fun_l2_n793(x)
- end
-end
-
-def fun_l1_n220(x)
- if (x < 1)
- fun_l2_n57(x)
- else
- fun_l2_n64(x)
- end
-end
-
-def fun_l1_n221(x)
- if (x < 1)
- fun_l2_n36(x)
- else
- fun_l2_n74(x)
- end
-end
-
-def fun_l1_n222(x)
- if (x < 1)
- fun_l2_n438(x)
- else
- fun_l2_n616(x)
- end
-end
-
-def fun_l1_n223(x)
- if (x < 1)
- fun_l2_n900(x)
- else
- fun_l2_n744(x)
- end
-end
-
-def fun_l1_n224(x)
- if (x < 1)
- fun_l2_n780(x)
- else
- fun_l2_n213(x)
- end
-end
-
-def fun_l1_n225(x)
- if (x < 1)
- fun_l2_n916(x)
- else
- fun_l2_n471(x)
- end
-end
-
-def fun_l1_n226(x)
- if (x < 1)
- fun_l2_n236(x)
- else
- fun_l2_n980(x)
- end
-end
-
-def fun_l1_n227(x)
- if (x < 1)
- fun_l2_n28(x)
- else
- fun_l2_n291(x)
- end
-end
-
-def fun_l1_n228(x)
- if (x < 1)
- fun_l2_n35(x)
- else
- fun_l2_n353(x)
- end
-end
-
-def fun_l1_n229(x)
- if (x < 1)
- fun_l2_n404(x)
- else
- fun_l2_n254(x)
- end
-end
-
-def fun_l1_n230(x)
- if (x < 1)
- fun_l2_n641(x)
- else
- fun_l2_n464(x)
- end
-end
-
-def fun_l1_n231(x)
- if (x < 1)
- fun_l2_n592(x)
- else
- fun_l2_n646(x)
- end
-end
-
-def fun_l1_n232(x)
- if (x < 1)
- fun_l2_n162(x)
- else
- fun_l2_n215(x)
- end
-end
-
-def fun_l1_n233(x)
- if (x < 1)
- fun_l2_n219(x)
- else
- fun_l2_n772(x)
- end
-end
-
-def fun_l1_n234(x)
- if (x < 1)
- fun_l2_n304(x)
- else
- fun_l2_n963(x)
- end
-end
-
-def fun_l1_n235(x)
- if (x < 1)
- fun_l2_n610(x)
- else
- fun_l2_n716(x)
- end
-end
-
-def fun_l1_n236(x)
- if (x < 1)
- fun_l2_n151(x)
- else
- fun_l2_n498(x)
- end
-end
-
-def fun_l1_n237(x)
- if (x < 1)
- fun_l2_n288(x)
- else
- fun_l2_n261(x)
- end
-end
-
-def fun_l1_n238(x)
- if (x < 1)
- fun_l2_n139(x)
- else
- fun_l2_n18(x)
- end
-end
-
-def fun_l1_n239(x)
- if (x < 1)
- fun_l2_n559(x)
- else
- fun_l2_n148(x)
- end
-end
-
-def fun_l1_n240(x)
- if (x < 1)
- fun_l2_n520(x)
- else
- fun_l2_n250(x)
- end
-end
-
-def fun_l1_n241(x)
- if (x < 1)
- fun_l2_n42(x)
- else
- fun_l2_n196(x)
- end
-end
-
-def fun_l1_n242(x)
- if (x < 1)
- fun_l2_n16(x)
- else
- fun_l2_n540(x)
- end
-end
-
-def fun_l1_n243(x)
- if (x < 1)
- fun_l2_n539(x)
- else
- fun_l2_n890(x)
- end
-end
-
-def fun_l1_n244(x)
- if (x < 1)
- fun_l2_n559(x)
- else
- fun_l2_n423(x)
- end
-end
-
-def fun_l1_n245(x)
- if (x < 1)
- fun_l2_n110(x)
- else
- fun_l2_n711(x)
- end
-end
-
-def fun_l1_n246(x)
- if (x < 1)
- fun_l2_n151(x)
- else
- fun_l2_n407(x)
- end
-end
-
-def fun_l1_n247(x)
- if (x < 1)
- fun_l2_n118(x)
- else
- fun_l2_n209(x)
- end
-end
-
-def fun_l1_n248(x)
- if (x < 1)
- fun_l2_n764(x)
- else
- fun_l2_n932(x)
- end
-end
-
-def fun_l1_n249(x)
- if (x < 1)
- fun_l2_n991(x)
- else
- fun_l2_n828(x)
- end
-end
-
-def fun_l1_n250(x)
- if (x < 1)
- fun_l2_n354(x)
- else
- fun_l2_n53(x)
- end
-end
-
-def fun_l1_n251(x)
- if (x < 1)
- fun_l2_n63(x)
- else
- fun_l2_n292(x)
- end
-end
-
-def fun_l1_n252(x)
- if (x < 1)
- fun_l2_n874(x)
- else
- fun_l2_n544(x)
- end
-end
-
-def fun_l1_n253(x)
- if (x < 1)
- fun_l2_n336(x)
- else
- fun_l2_n57(x)
- end
-end
-
-def fun_l1_n254(x)
- if (x < 1)
- fun_l2_n302(x)
- else
- fun_l2_n90(x)
- end
-end
-
-def fun_l1_n255(x)
- if (x < 1)
- fun_l2_n122(x)
- else
- fun_l2_n888(x)
- end
-end
-
-def fun_l1_n256(x)
- if (x < 1)
- fun_l2_n326(x)
- else
- fun_l2_n616(x)
- end
-end
-
-def fun_l1_n257(x)
- if (x < 1)
- fun_l2_n77(x)
- else
- fun_l2_n622(x)
- end
-end
-
-def fun_l1_n258(x)
- if (x < 1)
- fun_l2_n785(x)
- else
- fun_l2_n229(x)
- end
-end
-
-def fun_l1_n259(x)
- if (x < 1)
- fun_l2_n504(x)
- else
- fun_l2_n766(x)
- end
-end
-
-def fun_l1_n260(x)
- if (x < 1)
- fun_l2_n857(x)
- else
- fun_l2_n823(x)
- end
-end
-
-def fun_l1_n261(x)
- if (x < 1)
- fun_l2_n72(x)
- else
- fun_l2_n875(x)
- end
-end
-
-def fun_l1_n262(x)
- if (x < 1)
- fun_l2_n215(x)
- else
- fun_l2_n549(x)
- end
-end
-
-def fun_l1_n263(x)
- if (x < 1)
- fun_l2_n232(x)
- else
- fun_l2_n96(x)
- end
-end
-
-def fun_l1_n264(x)
- if (x < 1)
- fun_l2_n183(x)
- else
- fun_l2_n351(x)
- end
-end
-
-def fun_l1_n265(x)
- if (x < 1)
- fun_l2_n906(x)
- else
- fun_l2_n154(x)
- end
-end
-
-def fun_l1_n266(x)
- if (x < 1)
- fun_l2_n234(x)
- else
- fun_l2_n547(x)
- end
-end
-
-def fun_l1_n267(x)
- if (x < 1)
- fun_l2_n882(x)
- else
- fun_l2_n802(x)
- end
-end
-
-def fun_l1_n268(x)
- if (x < 1)
- fun_l2_n844(x)
- else
- fun_l2_n430(x)
- end
-end
-
-def fun_l1_n269(x)
- if (x < 1)
- fun_l2_n781(x)
- else
- fun_l2_n738(x)
- end
-end
-
-def fun_l1_n270(x)
- if (x < 1)
- fun_l2_n88(x)
- else
- fun_l2_n439(x)
- end
-end
-
-def fun_l1_n271(x)
- if (x < 1)
- fun_l2_n334(x)
- else
- fun_l2_n508(x)
- end
-end
-
-def fun_l1_n272(x)
- if (x < 1)
- fun_l2_n871(x)
- else
- fun_l2_n562(x)
- end
-end
-
-def fun_l1_n273(x)
- if (x < 1)
- fun_l2_n328(x)
- else
- fun_l2_n356(x)
- end
-end
-
-def fun_l1_n274(x)
- if (x < 1)
- fun_l2_n654(x)
- else
- fun_l2_n511(x)
- end
-end
-
-def fun_l1_n275(x)
- if (x < 1)
- fun_l2_n309(x)
- else
- fun_l2_n840(x)
- end
-end
-
-def fun_l1_n276(x)
- if (x < 1)
- fun_l2_n729(x)
- else
- fun_l2_n72(x)
- end
-end
-
-def fun_l1_n277(x)
- if (x < 1)
- fun_l2_n993(x)
- else
- fun_l2_n858(x)
- end
-end
-
-def fun_l1_n278(x)
- if (x < 1)
- fun_l2_n664(x)
- else
- fun_l2_n50(x)
- end
-end
-
-def fun_l1_n279(x)
- if (x < 1)
- fun_l2_n225(x)
- else
- fun_l2_n403(x)
- end
-end
-
-def fun_l1_n280(x)
- if (x < 1)
- fun_l2_n780(x)
- else
- fun_l2_n396(x)
- end
-end
-
-def fun_l1_n281(x)
- if (x < 1)
- fun_l2_n114(x)
- else
- fun_l2_n114(x)
- end
-end
-
-def fun_l1_n282(x)
- if (x < 1)
- fun_l2_n568(x)
- else
- fun_l2_n610(x)
- end
-end
-
-def fun_l1_n283(x)
- if (x < 1)
- fun_l2_n539(x)
- else
- fun_l2_n990(x)
- end
-end
-
-def fun_l1_n284(x)
- if (x < 1)
- fun_l2_n773(x)
- else
- fun_l2_n622(x)
- end
-end
-
-def fun_l1_n285(x)
- if (x < 1)
- fun_l2_n695(x)
- else
- fun_l2_n101(x)
- end
-end
-
-def fun_l1_n286(x)
- if (x < 1)
- fun_l2_n239(x)
- else
- fun_l2_n242(x)
- end
-end
-
-def fun_l1_n287(x)
- if (x < 1)
- fun_l2_n191(x)
- else
- fun_l2_n839(x)
- end
-end
-
-def fun_l1_n288(x)
- if (x < 1)
- fun_l2_n246(x)
- else
- fun_l2_n179(x)
- end
-end
-
-def fun_l1_n289(x)
- if (x < 1)
- fun_l2_n300(x)
- else
- fun_l2_n975(x)
- end
-end
-
-def fun_l1_n290(x)
- if (x < 1)
- fun_l2_n436(x)
- else
- fun_l2_n14(x)
- end
-end
-
-def fun_l1_n291(x)
- if (x < 1)
- fun_l2_n33(x)
- else
- fun_l2_n303(x)
- end
-end
-
-def fun_l1_n292(x)
- if (x < 1)
- fun_l2_n462(x)
- else
- fun_l2_n399(x)
- end
-end
-
-def fun_l1_n293(x)
- if (x < 1)
- fun_l2_n782(x)
- else
- fun_l2_n521(x)
- end
-end
-
-def fun_l1_n294(x)
- if (x < 1)
- fun_l2_n995(x)
- else
- fun_l2_n944(x)
- end
-end
-
-def fun_l1_n295(x)
- if (x < 1)
- fun_l2_n700(x)
- else
- fun_l2_n250(x)
- end
-end
-
-def fun_l1_n296(x)
- if (x < 1)
- fun_l2_n866(x)
- else
- fun_l2_n566(x)
- end
-end
-
-def fun_l1_n297(x)
- if (x < 1)
- fun_l2_n373(x)
- else
- fun_l2_n881(x)
- end
-end
-
-def fun_l1_n298(x)
- if (x < 1)
- fun_l2_n382(x)
- else
- fun_l2_n729(x)
- end
-end
-
-def fun_l1_n299(x)
- if (x < 1)
- fun_l2_n878(x)
- else
- fun_l2_n192(x)
- end
-end
-
-def fun_l1_n300(x)
- if (x < 1)
- fun_l2_n65(x)
- else
- fun_l2_n434(x)
- end
-end
-
-def fun_l1_n301(x)
- if (x < 1)
- fun_l2_n513(x)
- else
- fun_l2_n617(x)
- end
-end
-
-def fun_l1_n302(x)
- if (x < 1)
- fun_l2_n972(x)
- else
- fun_l2_n482(x)
- end
-end
-
-def fun_l1_n303(x)
- if (x < 1)
- fun_l2_n533(x)
- else
- fun_l2_n774(x)
- end
-end
-
-def fun_l1_n304(x)
- if (x < 1)
- fun_l2_n439(x)
- else
- fun_l2_n351(x)
- end
-end
-
-def fun_l1_n305(x)
- if (x < 1)
- fun_l2_n181(x)
- else
- fun_l2_n74(x)
- end
-end
-
-def fun_l1_n306(x)
- if (x < 1)
- fun_l2_n117(x)
- else
- fun_l2_n962(x)
- end
-end
-
-def fun_l1_n307(x)
- if (x < 1)
- fun_l2_n499(x)
- else
- fun_l2_n183(x)
- end
-end
-
-def fun_l1_n308(x)
- if (x < 1)
- fun_l2_n358(x)
- else
- fun_l2_n226(x)
- end
-end
-
-def fun_l1_n309(x)
- if (x < 1)
- fun_l2_n227(x)
- else
- fun_l2_n425(x)
- end
-end
-
-def fun_l1_n310(x)
- if (x < 1)
- fun_l2_n724(x)
- else
- fun_l2_n278(x)
- end
-end
-
-def fun_l1_n311(x)
- if (x < 1)
- fun_l2_n784(x)
- else
- fun_l2_n888(x)
- end
-end
-
-def fun_l1_n312(x)
- if (x < 1)
- fun_l2_n952(x)
- else
- fun_l2_n849(x)
- end
-end
-
-def fun_l1_n313(x)
- if (x < 1)
- fun_l2_n921(x)
- else
- fun_l2_n31(x)
- end
-end
-
-def fun_l1_n314(x)
- if (x < 1)
- fun_l2_n469(x)
- else
- fun_l2_n856(x)
- end
-end
-
-def fun_l1_n315(x)
- if (x < 1)
- fun_l2_n89(x)
- else
- fun_l2_n949(x)
- end
-end
-
-def fun_l1_n316(x)
- if (x < 1)
- fun_l2_n216(x)
- else
- fun_l2_n410(x)
- end
-end
-
-def fun_l1_n317(x)
- if (x < 1)
- fun_l2_n591(x)
- else
- fun_l2_n203(x)
- end
-end
-
-def fun_l1_n318(x)
- if (x < 1)
- fun_l2_n19(x)
- else
- fun_l2_n461(x)
- end
-end
-
-def fun_l1_n319(x)
- if (x < 1)
- fun_l2_n875(x)
- else
- fun_l2_n996(x)
- end
-end
-
-def fun_l1_n320(x)
- if (x < 1)
- fun_l2_n696(x)
- else
- fun_l2_n987(x)
- end
-end
-
-def fun_l1_n321(x)
- if (x < 1)
- fun_l2_n708(x)
- else
- fun_l2_n150(x)
- end
-end
-
-def fun_l1_n322(x)
- if (x < 1)
- fun_l2_n324(x)
- else
- fun_l2_n814(x)
- end
-end
-
-def fun_l1_n323(x)
- if (x < 1)
- fun_l2_n427(x)
- else
- fun_l2_n472(x)
- end
-end
-
-def fun_l1_n324(x)
- if (x < 1)
- fun_l2_n847(x)
- else
- fun_l2_n482(x)
- end
-end
-
-def fun_l1_n325(x)
- if (x < 1)
- fun_l2_n335(x)
- else
- fun_l2_n854(x)
- end
-end
-
-def fun_l1_n326(x)
- if (x < 1)
- fun_l2_n635(x)
- else
- fun_l2_n276(x)
- end
-end
-
-def fun_l1_n327(x)
- if (x < 1)
- fun_l2_n539(x)
- else
- fun_l2_n885(x)
- end
-end
-
-def fun_l1_n328(x)
- if (x < 1)
- fun_l2_n979(x)
- else
- fun_l2_n558(x)
- end
-end
-
-def fun_l1_n329(x)
- if (x < 1)
- fun_l2_n35(x)
- else
- fun_l2_n696(x)
- end
-end
-
-def fun_l1_n330(x)
- if (x < 1)
- fun_l2_n483(x)
- else
- fun_l2_n218(x)
- end
-end
-
-def fun_l1_n331(x)
- if (x < 1)
- fun_l2_n3(x)
- else
- fun_l2_n324(x)
- end
-end
-
-def fun_l1_n332(x)
- if (x < 1)
- fun_l2_n396(x)
- else
- fun_l2_n718(x)
- end
-end
-
-def fun_l1_n333(x)
- if (x < 1)
- fun_l2_n973(x)
- else
- fun_l2_n663(x)
- end
-end
-
-def fun_l1_n334(x)
- if (x < 1)
- fun_l2_n441(x)
- else
- fun_l2_n468(x)
- end
-end
-
-def fun_l1_n335(x)
- if (x < 1)
- fun_l2_n511(x)
- else
- fun_l2_n455(x)
- end
-end
-
-def fun_l1_n336(x)
- if (x < 1)
- fun_l2_n732(x)
- else
- fun_l2_n14(x)
- end
-end
-
-def fun_l1_n337(x)
- if (x < 1)
- fun_l2_n484(x)
- else
- fun_l2_n482(x)
- end
-end
-
-def fun_l1_n338(x)
- if (x < 1)
- fun_l2_n604(x)
- else
- fun_l2_n683(x)
- end
-end
-
-def fun_l1_n339(x)
- if (x < 1)
- fun_l2_n334(x)
- else
- fun_l2_n710(x)
- end
-end
-
-def fun_l1_n340(x)
- if (x < 1)
- fun_l2_n233(x)
- else
- fun_l2_n394(x)
- end
-end
-
-def fun_l1_n341(x)
- if (x < 1)
- fun_l2_n948(x)
- else
- fun_l2_n473(x)
- end
-end
-
-def fun_l1_n342(x)
- if (x < 1)
- fun_l2_n858(x)
- else
- fun_l2_n466(x)
- end
-end
-
-def fun_l1_n343(x)
- if (x < 1)
- fun_l2_n647(x)
- else
- fun_l2_n604(x)
- end
-end
-
-def fun_l1_n344(x)
- if (x < 1)
- fun_l2_n872(x)
- else
- fun_l2_n965(x)
- end
-end
-
-def fun_l1_n345(x)
- if (x < 1)
- fun_l2_n845(x)
- else
- fun_l2_n701(x)
- end
-end
-
-def fun_l1_n346(x)
- if (x < 1)
- fun_l2_n75(x)
- else
- fun_l2_n332(x)
- end
-end
-
-def fun_l1_n347(x)
- if (x < 1)
- fun_l2_n873(x)
- else
- fun_l2_n575(x)
- end
-end
-
-def fun_l1_n348(x)
- if (x < 1)
- fun_l2_n303(x)
- else
- fun_l2_n445(x)
- end
-end
-
-def fun_l1_n349(x)
- if (x < 1)
- fun_l2_n45(x)
- else
- fun_l2_n312(x)
- end
-end
-
-def fun_l1_n350(x)
- if (x < 1)
- fun_l2_n751(x)
- else
- fun_l2_n316(x)
- end
-end
-
-def fun_l1_n351(x)
- if (x < 1)
- fun_l2_n781(x)
- else
- fun_l2_n165(x)
- end
-end
-
-def fun_l1_n352(x)
- if (x < 1)
- fun_l2_n120(x)
- else
- fun_l2_n595(x)
- end
-end
-
-def fun_l1_n353(x)
- if (x < 1)
- fun_l2_n221(x)
- else
- fun_l2_n827(x)
- end
-end
-
-def fun_l1_n354(x)
- if (x < 1)
- fun_l2_n290(x)
- else
- fun_l2_n27(x)
- end
-end
-
-def fun_l1_n355(x)
- if (x < 1)
- fun_l2_n377(x)
- else
- fun_l2_n28(x)
- end
-end
-
-def fun_l1_n356(x)
- if (x < 1)
- fun_l2_n474(x)
- else
- fun_l2_n811(x)
- end
-end
-
-def fun_l1_n357(x)
- if (x < 1)
- fun_l2_n90(x)
- else
- fun_l2_n559(x)
- end
-end
-
-def fun_l1_n358(x)
- if (x < 1)
- fun_l2_n66(x)
- else
- fun_l2_n234(x)
- end
-end
-
-def fun_l1_n359(x)
- if (x < 1)
- fun_l2_n526(x)
- else
- fun_l2_n674(x)
- end
-end
-
-def fun_l1_n360(x)
- if (x < 1)
- fun_l2_n449(x)
- else
- fun_l2_n364(x)
- end
-end
-
-def fun_l1_n361(x)
- if (x < 1)
- fun_l2_n790(x)
- else
- fun_l2_n835(x)
- end
-end
-
-def fun_l1_n362(x)
- if (x < 1)
- fun_l2_n335(x)
- else
- fun_l2_n22(x)
- end
-end
-
-def fun_l1_n363(x)
- if (x < 1)
- fun_l2_n982(x)
- else
- fun_l2_n449(x)
- end
-end
-
-def fun_l1_n364(x)
- if (x < 1)
- fun_l2_n980(x)
- else
- fun_l2_n861(x)
- end
-end
-
-def fun_l1_n365(x)
- if (x < 1)
- fun_l2_n673(x)
- else
- fun_l2_n267(x)
- end
-end
-
-def fun_l1_n366(x)
- if (x < 1)
- fun_l2_n862(x)
- else
- fun_l2_n559(x)
- end
-end
-
-def fun_l1_n367(x)
- if (x < 1)
- fun_l2_n637(x)
- else
- fun_l2_n275(x)
- end
-end
-
-def fun_l1_n368(x)
- if (x < 1)
- fun_l2_n370(x)
- else
- fun_l2_n763(x)
- end
-end
-
-def fun_l1_n369(x)
- if (x < 1)
- fun_l2_n680(x)
- else
- fun_l2_n476(x)
- end
-end
-
-def fun_l1_n370(x)
- if (x < 1)
- fun_l2_n799(x)
- else
- fun_l2_n724(x)
- end
-end
-
-def fun_l1_n371(x)
- if (x < 1)
- fun_l2_n331(x)
- else
- fun_l2_n927(x)
- end
-end
-
-def fun_l1_n372(x)
- if (x < 1)
- fun_l2_n875(x)
- else
- fun_l2_n350(x)
- end
-end
-
-def fun_l1_n373(x)
- if (x < 1)
- fun_l2_n734(x)
- else
- fun_l2_n172(x)
- end
-end
-
-def fun_l1_n374(x)
- if (x < 1)
- fun_l2_n657(x)
- else
- fun_l2_n765(x)
- end
-end
-
-def fun_l1_n375(x)
- if (x < 1)
- fun_l2_n950(x)
- else
- fun_l2_n85(x)
- end
-end
-
-def fun_l1_n376(x)
- if (x < 1)
- fun_l2_n276(x)
- else
- fun_l2_n892(x)
- end
-end
-
-def fun_l1_n377(x)
- if (x < 1)
- fun_l2_n430(x)
- else
- fun_l2_n173(x)
- end
-end
-
-def fun_l1_n378(x)
- if (x < 1)
- fun_l2_n376(x)
- else
- fun_l2_n876(x)
- end
-end
-
-def fun_l1_n379(x)
- if (x < 1)
- fun_l2_n981(x)
- else
- fun_l2_n314(x)
- end
-end
-
-def fun_l1_n380(x)
- if (x < 1)
- fun_l2_n680(x)
- else
- fun_l2_n600(x)
- end
-end
-
-def fun_l1_n381(x)
- if (x < 1)
- fun_l2_n54(x)
- else
- fun_l2_n158(x)
- end
-end
-
-def fun_l1_n382(x)
- if (x < 1)
- fun_l2_n692(x)
- else
- fun_l2_n673(x)
- end
-end
-
-def fun_l1_n383(x)
- if (x < 1)
- fun_l2_n393(x)
- else
- fun_l2_n723(x)
- end
-end
-
-def fun_l1_n384(x)
- if (x < 1)
- fun_l2_n899(x)
- else
- fun_l2_n940(x)
- end
-end
-
-def fun_l1_n385(x)
- if (x < 1)
- fun_l2_n473(x)
- else
- fun_l2_n846(x)
- end
-end
-
-def fun_l1_n386(x)
- if (x < 1)
- fun_l2_n291(x)
- else
- fun_l2_n864(x)
- end
-end
-
-def fun_l1_n387(x)
- if (x < 1)
- fun_l2_n174(x)
- else
- fun_l2_n466(x)
- end
-end
-
-def fun_l1_n388(x)
- if (x < 1)
- fun_l2_n883(x)
- else
- fun_l2_n613(x)
- end
-end
-
-def fun_l1_n389(x)
- if (x < 1)
- fun_l2_n808(x)
- else
- fun_l2_n169(x)
- end
-end
-
-def fun_l1_n390(x)
- if (x < 1)
- fun_l2_n94(x)
- else
- fun_l2_n93(x)
- end
-end
-
-def fun_l1_n391(x)
- if (x < 1)
- fun_l2_n874(x)
- else
- fun_l2_n400(x)
- end
-end
-
-def fun_l1_n392(x)
- if (x < 1)
- fun_l2_n473(x)
- else
- fun_l2_n239(x)
- end
-end
-
-def fun_l1_n393(x)
- if (x < 1)
- fun_l2_n64(x)
- else
- fun_l2_n760(x)
- end
-end
-
-def fun_l1_n394(x)
- if (x < 1)
- fun_l2_n947(x)
- else
- fun_l2_n354(x)
- end
-end
-
-def fun_l1_n395(x)
- if (x < 1)
- fun_l2_n833(x)
- else
- fun_l2_n563(x)
- end
-end
-
-def fun_l1_n396(x)
- if (x < 1)
- fun_l2_n429(x)
- else
- fun_l2_n280(x)
- end
-end
-
-def fun_l1_n397(x)
- if (x < 1)
- fun_l2_n132(x)
- else
- fun_l2_n486(x)
- end
-end
-
-def fun_l1_n398(x)
- if (x < 1)
- fun_l2_n28(x)
- else
- fun_l2_n135(x)
- end
-end
-
-def fun_l1_n399(x)
- if (x < 1)
- fun_l2_n804(x)
- else
- fun_l2_n406(x)
- end
-end
-
-def fun_l1_n400(x)
- if (x < 1)
- fun_l2_n661(x)
- else
- fun_l2_n216(x)
- end
-end
-
-def fun_l1_n401(x)
- if (x < 1)
- fun_l2_n681(x)
- else
- fun_l2_n849(x)
- end
-end
-
-def fun_l1_n402(x)
- if (x < 1)
- fun_l2_n13(x)
- else
- fun_l2_n205(x)
- end
-end
-
-def fun_l1_n403(x)
- if (x < 1)
- fun_l2_n911(x)
- else
- fun_l2_n63(x)
- end
-end
-
-def fun_l1_n404(x)
- if (x < 1)
- fun_l2_n518(x)
- else
- fun_l2_n845(x)
- end
-end
-
-def fun_l1_n405(x)
- if (x < 1)
- fun_l2_n699(x)
- else
- fun_l2_n963(x)
- end
-end
-
-def fun_l1_n406(x)
- if (x < 1)
- fun_l2_n373(x)
- else
- fun_l2_n485(x)
- end
-end
-
-def fun_l1_n407(x)
- if (x < 1)
- fun_l2_n402(x)
- else
- fun_l2_n582(x)
- end
-end
-
-def fun_l1_n408(x)
- if (x < 1)
- fun_l2_n802(x)
- else
- fun_l2_n420(x)
- end
-end
-
-def fun_l1_n409(x)
- if (x < 1)
- fun_l2_n728(x)
- else
- fun_l2_n50(x)
- end
-end
-
-def fun_l1_n410(x)
- if (x < 1)
- fun_l2_n189(x)
- else
- fun_l2_n588(x)
- end
-end
-
-def fun_l1_n411(x)
- if (x < 1)
- fun_l2_n51(x)
- else
- fun_l2_n23(x)
- end
-end
-
-def fun_l1_n412(x)
- if (x < 1)
- fun_l2_n548(x)
- else
- fun_l2_n200(x)
- end
-end
-
-def fun_l1_n413(x)
- if (x < 1)
- fun_l2_n763(x)
- else
- fun_l2_n581(x)
- end
-end
-
-def fun_l1_n414(x)
- if (x < 1)
- fun_l2_n650(x)
- else
- fun_l2_n535(x)
- end
-end
-
-def fun_l1_n415(x)
- if (x < 1)
- fun_l2_n500(x)
- else
- fun_l2_n579(x)
- end
-end
-
-def fun_l1_n416(x)
- if (x < 1)
- fun_l2_n573(x)
- else
- fun_l2_n154(x)
- end
-end
-
-def fun_l1_n417(x)
- if (x < 1)
- fun_l2_n685(x)
- else
- fun_l2_n14(x)
- end
-end
-
-def fun_l1_n418(x)
- if (x < 1)
- fun_l2_n849(x)
- else
- fun_l2_n91(x)
- end
-end
-
-def fun_l1_n419(x)
- if (x < 1)
- fun_l2_n629(x)
- else
- fun_l2_n698(x)
- end
-end
-
-def fun_l1_n420(x)
- if (x < 1)
- fun_l2_n273(x)
- else
- fun_l2_n303(x)
- end
-end
-
-def fun_l1_n421(x)
- if (x < 1)
- fun_l2_n8(x)
- else
- fun_l2_n476(x)
- end
-end
-
-def fun_l1_n422(x)
- if (x < 1)
- fun_l2_n294(x)
- else
- fun_l2_n338(x)
- end
-end
-
-def fun_l1_n423(x)
- if (x < 1)
- fun_l2_n408(x)
- else
- fun_l2_n187(x)
- end
-end
-
-def fun_l1_n424(x)
- if (x < 1)
- fun_l2_n349(x)
- else
- fun_l2_n896(x)
- end
-end
-
-def fun_l1_n425(x)
- if (x < 1)
- fun_l2_n950(x)
- else
- fun_l2_n186(x)
- end
-end
-
-def fun_l1_n426(x)
- if (x < 1)
- fun_l2_n817(x)
- else
- fun_l2_n605(x)
- end
-end
-
-def fun_l1_n427(x)
- if (x < 1)
- fun_l2_n317(x)
- else
- fun_l2_n31(x)
- end
-end
-
-def fun_l1_n428(x)
- if (x < 1)
- fun_l2_n804(x)
- else
- fun_l2_n547(x)
- end
-end
-
-def fun_l1_n429(x)
- if (x < 1)
- fun_l2_n730(x)
- else
- fun_l2_n711(x)
- end
-end
-
-def fun_l1_n430(x)
- if (x < 1)
- fun_l2_n822(x)
- else
- fun_l2_n749(x)
- end
-end
-
-def fun_l1_n431(x)
- if (x < 1)
- fun_l2_n412(x)
- else
- fun_l2_n366(x)
- end
-end
-
-def fun_l1_n432(x)
- if (x < 1)
- fun_l2_n462(x)
- else
- fun_l2_n601(x)
- end
-end
-
-def fun_l1_n433(x)
- if (x < 1)
- fun_l2_n971(x)
- else
- fun_l2_n878(x)
- end
-end
-
-def fun_l1_n434(x)
- if (x < 1)
- fun_l2_n551(x)
- else
- fun_l2_n172(x)
- end
-end
-
-def fun_l1_n435(x)
- if (x < 1)
- fun_l2_n914(x)
- else
- fun_l2_n640(x)
- end
-end
-
-def fun_l1_n436(x)
- if (x < 1)
- fun_l2_n957(x)
- else
- fun_l2_n846(x)
- end
-end
-
-def fun_l1_n437(x)
- if (x < 1)
- fun_l2_n622(x)
- else
- fun_l2_n995(x)
- end
-end
-
-def fun_l1_n438(x)
- if (x < 1)
- fun_l2_n830(x)
- else
- fun_l2_n537(x)
- end
-end
-
-def fun_l1_n439(x)
- if (x < 1)
- fun_l2_n415(x)
- else
- fun_l2_n863(x)
- end
-end
-
-def fun_l1_n440(x)
- if (x < 1)
- fun_l2_n637(x)
- else
- fun_l2_n354(x)
- end
-end
-
-def fun_l1_n441(x)
- if (x < 1)
- fun_l2_n525(x)
- else
- fun_l2_n656(x)
- end
-end
-
-def fun_l1_n442(x)
- if (x < 1)
- fun_l2_n284(x)
- else
- fun_l2_n722(x)
- end
-end
-
-def fun_l1_n443(x)
- if (x < 1)
- fun_l2_n485(x)
- else
- fun_l2_n794(x)
- end
-end
-
-def fun_l1_n444(x)
- if (x < 1)
- fun_l2_n268(x)
- else
- fun_l2_n443(x)
- end
-end
-
-def fun_l1_n445(x)
- if (x < 1)
- fun_l2_n743(x)
- else
- fun_l2_n723(x)
- end
-end
-
-def fun_l1_n446(x)
- if (x < 1)
- fun_l2_n651(x)
- else
- fun_l2_n544(x)
- end
-end
-
-def fun_l1_n447(x)
- if (x < 1)
- fun_l2_n936(x)
- else
- fun_l2_n50(x)
- end
-end
-
-def fun_l1_n448(x)
- if (x < 1)
- fun_l2_n473(x)
- else
- fun_l2_n749(x)
- end
-end
-
-def fun_l1_n449(x)
- if (x < 1)
- fun_l2_n218(x)
- else
- fun_l2_n266(x)
- end
-end
-
-def fun_l1_n450(x)
- if (x < 1)
- fun_l2_n686(x)
- else
- fun_l2_n629(x)
- end
-end
-
-def fun_l1_n451(x)
- if (x < 1)
- fun_l2_n648(x)
- else
- fun_l2_n322(x)
- end
-end
-
-def fun_l1_n452(x)
- if (x < 1)
- fun_l2_n380(x)
- else
- fun_l2_n720(x)
- end
-end
-
-def fun_l1_n453(x)
- if (x < 1)
- fun_l2_n53(x)
- else
- fun_l2_n830(x)
- end
-end
-
-def fun_l1_n454(x)
- if (x < 1)
- fun_l2_n315(x)
- else
- fun_l2_n742(x)
- end
-end
-
-def fun_l1_n455(x)
- if (x < 1)
- fun_l2_n902(x)
- else
- fun_l2_n111(x)
- end
-end
-
-def fun_l1_n456(x)
- if (x < 1)
- fun_l2_n924(x)
- else
- fun_l2_n109(x)
- end
-end
-
-def fun_l1_n457(x)
- if (x < 1)
- fun_l2_n249(x)
- else
- fun_l2_n865(x)
- end
-end
-
-def fun_l1_n458(x)
- if (x < 1)
- fun_l2_n650(x)
- else
- fun_l2_n960(x)
- end
-end
-
-def fun_l1_n459(x)
- if (x < 1)
- fun_l2_n273(x)
- else
- fun_l2_n544(x)
- end
-end
-
-def fun_l1_n460(x)
- if (x < 1)
- fun_l2_n120(x)
- else
- fun_l2_n322(x)
- end
-end
-
-def fun_l1_n461(x)
- if (x < 1)
- fun_l2_n366(x)
- else
- fun_l2_n534(x)
- end
-end
-
-def fun_l1_n462(x)
- if (x < 1)
- fun_l2_n380(x)
- else
- fun_l2_n25(x)
- end
-end
-
-def fun_l1_n463(x)
- if (x < 1)
- fun_l2_n333(x)
- else
- fun_l2_n303(x)
- end
-end
-
-def fun_l1_n464(x)
- if (x < 1)
- fun_l2_n16(x)
- else
- fun_l2_n239(x)
- end
-end
-
-def fun_l1_n465(x)
- if (x < 1)
- fun_l2_n539(x)
- else
- fun_l2_n988(x)
- end
-end
-
-def fun_l1_n466(x)
- if (x < 1)
- fun_l2_n580(x)
- else
- fun_l2_n86(x)
- end
-end
-
-def fun_l1_n467(x)
- if (x < 1)
- fun_l2_n406(x)
- else
- fun_l2_n706(x)
- end
-end
-
-def fun_l1_n468(x)
- if (x < 1)
- fun_l2_n858(x)
- else
- fun_l2_n393(x)
- end
-end
-
-def fun_l1_n469(x)
- if (x < 1)
- fun_l2_n64(x)
- else
- fun_l2_n482(x)
- end
-end
-
-def fun_l1_n470(x)
- if (x < 1)
- fun_l2_n654(x)
- else
- fun_l2_n833(x)
- end
-end
-
-def fun_l1_n471(x)
- if (x < 1)
- fun_l2_n161(x)
- else
- fun_l2_n91(x)
- end
-end
-
-def fun_l1_n472(x)
- if (x < 1)
- fun_l2_n98(x)
- else
- fun_l2_n661(x)
- end
-end
-
-def fun_l1_n473(x)
- if (x < 1)
- fun_l2_n574(x)
- else
- fun_l2_n133(x)
- end
-end
-
-def fun_l1_n474(x)
- if (x < 1)
- fun_l2_n109(x)
- else
- fun_l2_n702(x)
- end
-end
-
-def fun_l1_n475(x)
- if (x < 1)
- fun_l2_n808(x)
- else
- fun_l2_n584(x)
- end
-end
-
-def fun_l1_n476(x)
- if (x < 1)
- fun_l2_n495(x)
- else
- fun_l2_n708(x)
- end
-end
-
-def fun_l1_n477(x)
- if (x < 1)
- fun_l2_n649(x)
- else
- fun_l2_n290(x)
- end
-end
-
-def fun_l1_n478(x)
- if (x < 1)
- fun_l2_n718(x)
- else
- fun_l2_n998(x)
- end
-end
-
-def fun_l1_n479(x)
- if (x < 1)
- fun_l2_n557(x)
- else
- fun_l2_n359(x)
- end
-end
-
-def fun_l1_n480(x)
- if (x < 1)
- fun_l2_n958(x)
- else
- fun_l2_n86(x)
- end
-end
-
-def fun_l1_n481(x)
- if (x < 1)
- fun_l2_n245(x)
- else
- fun_l2_n124(x)
- end
-end
-
-def fun_l1_n482(x)
- if (x < 1)
- fun_l2_n510(x)
- else
- fun_l2_n170(x)
- end
-end
-
-def fun_l1_n483(x)
- if (x < 1)
- fun_l2_n550(x)
- else
- fun_l2_n9(x)
- end
-end
-
-def fun_l1_n484(x)
- if (x < 1)
- fun_l2_n82(x)
- else
- fun_l2_n351(x)
- end
-end
-
-def fun_l1_n485(x)
- if (x < 1)
- fun_l2_n760(x)
- else
- fun_l2_n560(x)
- end
-end
-
-def fun_l1_n486(x)
- if (x < 1)
- fun_l2_n550(x)
- else
- fun_l2_n881(x)
- end
-end
-
-def fun_l1_n487(x)
- if (x < 1)
- fun_l2_n62(x)
- else
- fun_l2_n213(x)
- end
-end
-
-def fun_l1_n488(x)
- if (x < 1)
- fun_l2_n336(x)
- else
- fun_l2_n855(x)
- end
-end
-
-def fun_l1_n489(x)
- if (x < 1)
- fun_l2_n172(x)
- else
- fun_l2_n479(x)
- end
-end
-
-def fun_l1_n490(x)
- if (x < 1)
- fun_l2_n821(x)
- else
- fun_l2_n767(x)
- end
-end
-
-def fun_l1_n491(x)
- if (x < 1)
- fun_l2_n388(x)
- else
- fun_l2_n307(x)
- end
-end
-
-def fun_l1_n492(x)
- if (x < 1)
- fun_l2_n158(x)
- else
- fun_l2_n725(x)
- end
-end
-
-def fun_l1_n493(x)
- if (x < 1)
- fun_l2_n681(x)
- else
- fun_l2_n767(x)
- end
-end
-
-def fun_l1_n494(x)
- if (x < 1)
- fun_l2_n799(x)
- else
- fun_l2_n458(x)
- end
-end
-
-def fun_l1_n495(x)
- if (x < 1)
- fun_l2_n379(x)
- else
- fun_l2_n152(x)
- end
-end
-
-def fun_l1_n496(x)
- if (x < 1)
- fun_l2_n996(x)
- else
- fun_l2_n296(x)
- end
-end
-
-def fun_l1_n497(x)
- if (x < 1)
- fun_l2_n752(x)
- else
- fun_l2_n481(x)
- end
-end
-
-def fun_l1_n498(x)
- if (x < 1)
- fun_l2_n887(x)
- else
- fun_l2_n343(x)
- end
-end
-
-def fun_l1_n499(x)
- if (x < 1)
- fun_l2_n481(x)
- else
- fun_l2_n368(x)
- end
-end
-
-def fun_l1_n500(x)
- if (x < 1)
- fun_l2_n738(x)
- else
- fun_l2_n349(x)
- end
-end
-
-def fun_l1_n501(x)
- if (x < 1)
- fun_l2_n104(x)
- else
- fun_l2_n841(x)
- end
-end
-
-def fun_l1_n502(x)
- if (x < 1)
- fun_l2_n549(x)
- else
- fun_l2_n684(x)
- end
-end
-
-def fun_l1_n503(x)
- if (x < 1)
- fun_l2_n726(x)
- else
- fun_l2_n41(x)
- end
-end
-
-def fun_l1_n504(x)
- if (x < 1)
- fun_l2_n637(x)
- else
- fun_l2_n830(x)
- end
-end
-
-def fun_l1_n505(x)
- if (x < 1)
- fun_l2_n38(x)
- else
- fun_l2_n815(x)
- end
-end
-
-def fun_l1_n506(x)
- if (x < 1)
- fun_l2_n284(x)
- else
- fun_l2_n599(x)
- end
-end
-
-def fun_l1_n507(x)
- if (x < 1)
- fun_l2_n665(x)
- else
- fun_l2_n763(x)
- end
-end
-
-def fun_l1_n508(x)
- if (x < 1)
- fun_l2_n755(x)
- else
- fun_l2_n51(x)
- end
-end
-
-def fun_l1_n509(x)
- if (x < 1)
- fun_l2_n860(x)
- else
- fun_l2_n273(x)
- end
-end
-
-def fun_l1_n510(x)
- if (x < 1)
- fun_l2_n967(x)
- else
- fun_l2_n141(x)
- end
-end
-
-def fun_l1_n511(x)
- if (x < 1)
- fun_l2_n637(x)
- else
- fun_l2_n953(x)
- end
-end
-
-def fun_l1_n512(x)
- if (x < 1)
- fun_l2_n784(x)
- else
- fun_l2_n941(x)
- end
-end
-
-def fun_l1_n513(x)
- if (x < 1)
- fun_l2_n499(x)
- else
- fun_l2_n189(x)
- end
-end
-
-def fun_l1_n514(x)
- if (x < 1)
- fun_l2_n207(x)
- else
- fun_l2_n187(x)
- end
-end
-
-def fun_l1_n515(x)
- if (x < 1)
- fun_l2_n174(x)
- else
- fun_l2_n316(x)
- end
-end
-
-def fun_l1_n516(x)
- if (x < 1)
- fun_l2_n884(x)
- else
- fun_l2_n72(x)
- end
-end
-
-def fun_l1_n517(x)
- if (x < 1)
- fun_l2_n878(x)
- else
- fun_l2_n423(x)
- end
-end
-
-def fun_l1_n518(x)
- if (x < 1)
- fun_l2_n452(x)
- else
- fun_l2_n733(x)
- end
-end
-
-def fun_l1_n519(x)
- if (x < 1)
- fun_l2_n586(x)
- else
- fun_l2_n987(x)
- end
-end
-
-def fun_l1_n520(x)
- if (x < 1)
- fun_l2_n638(x)
- else
- fun_l2_n276(x)
- end
-end
-
-def fun_l1_n521(x)
- if (x < 1)
- fun_l2_n186(x)
- else
- fun_l2_n498(x)
- end
-end
-
-def fun_l1_n522(x)
- if (x < 1)
- fun_l2_n816(x)
- else
- fun_l2_n687(x)
- end
-end
-
-def fun_l1_n523(x)
- if (x < 1)
- fun_l2_n572(x)
- else
- fun_l2_n878(x)
- end
-end
-
-def fun_l1_n524(x)
- if (x < 1)
- fun_l2_n528(x)
- else
- fun_l2_n188(x)
- end
-end
-
-def fun_l1_n525(x)
- if (x < 1)
- fun_l2_n719(x)
- else
- fun_l2_n146(x)
- end
-end
-
-def fun_l1_n526(x)
- if (x < 1)
- fun_l2_n730(x)
- else
- fun_l2_n209(x)
- end
-end
-
-def fun_l1_n527(x)
- if (x < 1)
- fun_l2_n998(x)
- else
- fun_l2_n544(x)
- end
-end
-
-def fun_l1_n528(x)
- if (x < 1)
- fun_l2_n288(x)
- else
- fun_l2_n682(x)
- end
-end
-
-def fun_l1_n529(x)
- if (x < 1)
- fun_l2_n808(x)
- else
- fun_l2_n651(x)
- end
-end
-
-def fun_l1_n530(x)
- if (x < 1)
- fun_l2_n674(x)
- else
- fun_l2_n643(x)
- end
-end
-
-def fun_l1_n531(x)
- if (x < 1)
- fun_l2_n42(x)
- else
- fun_l2_n457(x)
- end
-end
-
-def fun_l1_n532(x)
- if (x < 1)
- fun_l2_n188(x)
- else
- fun_l2_n218(x)
- end
-end
-
-def fun_l1_n533(x)
- if (x < 1)
- fun_l2_n529(x)
- else
- fun_l2_n541(x)
- end
-end
-
-def fun_l1_n534(x)
- if (x < 1)
- fun_l2_n820(x)
- else
- fun_l2_n426(x)
- end
-end
-
-def fun_l1_n535(x)
- if (x < 1)
- fun_l2_n730(x)
- else
- fun_l2_n36(x)
- end
-end
-
-def fun_l1_n536(x)
- if (x < 1)
- fun_l2_n187(x)
- else
- fun_l2_n96(x)
- end
-end
-
-def fun_l1_n537(x)
- if (x < 1)
- fun_l2_n1(x)
- else
- fun_l2_n905(x)
- end
-end
-
-def fun_l1_n538(x)
- if (x < 1)
- fun_l2_n252(x)
- else
- fun_l2_n597(x)
- end
-end
-
-def fun_l1_n539(x)
- if (x < 1)
- fun_l2_n959(x)
- else
- fun_l2_n26(x)
- end
-end
-
-def fun_l1_n540(x)
- if (x < 1)
- fun_l2_n959(x)
- else
- fun_l2_n266(x)
- end
-end
-
-def fun_l1_n541(x)
- if (x < 1)
- fun_l2_n902(x)
- else
- fun_l2_n957(x)
- end
-end
-
-def fun_l1_n542(x)
- if (x < 1)
- fun_l2_n244(x)
- else
- fun_l2_n407(x)
- end
-end
-
-def fun_l1_n543(x)
- if (x < 1)
- fun_l2_n319(x)
- else
- fun_l2_n19(x)
- end
-end
-
-def fun_l1_n544(x)
- if (x < 1)
- fun_l2_n251(x)
- else
- fun_l2_n92(x)
- end
-end
-
-def fun_l1_n545(x)
- if (x < 1)
- fun_l2_n482(x)
- else
- fun_l2_n177(x)
- end
-end
-
-def fun_l1_n546(x)
- if (x < 1)
- fun_l2_n338(x)
- else
- fun_l2_n152(x)
- end
-end
-
-def fun_l1_n547(x)
- if (x < 1)
- fun_l2_n902(x)
- else
- fun_l2_n243(x)
- end
-end
-
-def fun_l1_n548(x)
- if (x < 1)
- fun_l2_n943(x)
- else
- fun_l2_n930(x)
- end
-end
-
-def fun_l1_n549(x)
- if (x < 1)
- fun_l2_n775(x)
- else
- fun_l2_n338(x)
- end
-end
-
-def fun_l1_n550(x)
- if (x < 1)
- fun_l2_n286(x)
- else
- fun_l2_n347(x)
- end
-end
-
-def fun_l1_n551(x)
- if (x < 1)
- fun_l2_n611(x)
- else
- fun_l2_n108(x)
- end
-end
-
-def fun_l1_n552(x)
- if (x < 1)
- fun_l2_n515(x)
- else
- fun_l2_n478(x)
- end
-end
-
-def fun_l1_n553(x)
- if (x < 1)
- fun_l2_n68(x)
- else
- fun_l2_n943(x)
- end
-end
-
-def fun_l1_n554(x)
- if (x < 1)
- fun_l2_n16(x)
- else
- fun_l2_n280(x)
- end
-end
-
-def fun_l1_n555(x)
- if (x < 1)
- fun_l2_n421(x)
- else
- fun_l2_n412(x)
- end
-end
-
-def fun_l1_n556(x)
- if (x < 1)
- fun_l2_n653(x)
- else
- fun_l2_n527(x)
- end
-end
-
-def fun_l1_n557(x)
- if (x < 1)
- fun_l2_n181(x)
- else
- fun_l2_n179(x)
- end
-end
-
-def fun_l1_n558(x)
- if (x < 1)
- fun_l2_n270(x)
- else
- fun_l2_n367(x)
- end
-end
-
-def fun_l1_n559(x)
- if (x < 1)
- fun_l2_n323(x)
- else
- fun_l2_n453(x)
- end
-end
-
-def fun_l1_n560(x)
- if (x < 1)
- fun_l2_n699(x)
- else
- fun_l2_n904(x)
- end
-end
-
-def fun_l1_n561(x)
- if (x < 1)
- fun_l2_n903(x)
- else
- fun_l2_n559(x)
- end
-end
-
-def fun_l1_n562(x)
- if (x < 1)
- fun_l2_n573(x)
- else
- fun_l2_n880(x)
- end
-end
-
-def fun_l1_n563(x)
- if (x < 1)
- fun_l2_n674(x)
- else
- fun_l2_n420(x)
- end
-end
-
-def fun_l1_n564(x)
- if (x < 1)
- fun_l2_n76(x)
- else
- fun_l2_n702(x)
- end
-end
-
-def fun_l1_n565(x)
- if (x < 1)
- fun_l2_n78(x)
- else
- fun_l2_n741(x)
- end
-end
-
-def fun_l1_n566(x)
- if (x < 1)
- fun_l2_n542(x)
- else
- fun_l2_n762(x)
- end
-end
-
-def fun_l1_n567(x)
- if (x < 1)
- fun_l2_n992(x)
- else
- fun_l2_n416(x)
- end
-end
-
-def fun_l1_n568(x)
- if (x < 1)
- fun_l2_n510(x)
- else
- fun_l2_n68(x)
- end
-end
-
-def fun_l1_n569(x)
- if (x < 1)
- fun_l2_n36(x)
- else
- fun_l2_n152(x)
- end
-end
-
-def fun_l1_n570(x)
- if (x < 1)
- fun_l2_n243(x)
- else
- fun_l2_n421(x)
- end
-end
-
-def fun_l1_n571(x)
- if (x < 1)
- fun_l2_n48(x)
- else
- fun_l2_n50(x)
- end
-end
-
-def fun_l1_n572(x)
- if (x < 1)
- fun_l2_n647(x)
- else
- fun_l2_n614(x)
- end
-end
-
-def fun_l1_n573(x)
- if (x < 1)
- fun_l2_n847(x)
- else
- fun_l2_n598(x)
- end
-end
-
-def fun_l1_n574(x)
- if (x < 1)
- fun_l2_n462(x)
- else
- fun_l2_n492(x)
- end
-end
-
-def fun_l1_n575(x)
- if (x < 1)
- fun_l2_n805(x)
- else
- fun_l2_n23(x)
- end
-end
-
-def fun_l1_n576(x)
- if (x < 1)
- fun_l2_n660(x)
- else
- fun_l2_n271(x)
- end
-end
-
-def fun_l1_n577(x)
- if (x < 1)
- fun_l2_n277(x)
- else
- fun_l2_n259(x)
- end
-end
-
-def fun_l1_n578(x)
- if (x < 1)
- fun_l2_n645(x)
- else
- fun_l2_n638(x)
- end
-end
-
-def fun_l1_n579(x)
- if (x < 1)
- fun_l2_n925(x)
- else
- fun_l2_n801(x)
- end
-end
-
-def fun_l1_n580(x)
- if (x < 1)
- fun_l2_n52(x)
- else
- fun_l2_n703(x)
- end
-end
-
-def fun_l1_n581(x)
- if (x < 1)
- fun_l2_n126(x)
- else
- fun_l2_n511(x)
- end
-end
-
-def fun_l1_n582(x)
- if (x < 1)
- fun_l2_n663(x)
- else
- fun_l2_n158(x)
- end
-end
-
-def fun_l1_n583(x)
- if (x < 1)
- fun_l2_n604(x)
- else
- fun_l2_n498(x)
- end
-end
-
-def fun_l1_n584(x)
- if (x < 1)
- fun_l2_n889(x)
- else
- fun_l2_n197(x)
- end
-end
-
-def fun_l1_n585(x)
- if (x < 1)
- fun_l2_n28(x)
- else
- fun_l2_n298(x)
- end
-end
-
-def fun_l1_n586(x)
- if (x < 1)
- fun_l2_n165(x)
- else
- fun_l2_n340(x)
- end
-end
-
-def fun_l1_n587(x)
- if (x < 1)
- fun_l2_n89(x)
- else
- fun_l2_n947(x)
- end
-end
-
-def fun_l1_n588(x)
- if (x < 1)
- fun_l2_n151(x)
- else
- fun_l2_n163(x)
- end
-end
-
-def fun_l1_n589(x)
- if (x < 1)
- fun_l2_n200(x)
- else
- fun_l2_n855(x)
- end
-end
-
-def fun_l1_n590(x)
- if (x < 1)
- fun_l2_n749(x)
- else
- fun_l2_n232(x)
- end
-end
-
-def fun_l1_n591(x)
- if (x < 1)
- fun_l2_n850(x)
- else
- fun_l2_n897(x)
- end
-end
-
-def fun_l1_n592(x)
- if (x < 1)
- fun_l2_n287(x)
- else
- fun_l2_n266(x)
- end
-end
-
-def fun_l1_n593(x)
- if (x < 1)
- fun_l2_n547(x)
- else
- fun_l2_n937(x)
- end
-end
-
-def fun_l1_n594(x)
- if (x < 1)
- fun_l2_n517(x)
- else
- fun_l2_n602(x)
- end
-end
-
-def fun_l1_n595(x)
- if (x < 1)
- fun_l2_n962(x)
- else
- fun_l2_n387(x)
- end
-end
-
-def fun_l1_n596(x)
- if (x < 1)
- fun_l2_n959(x)
- else
- fun_l2_n885(x)
- end
-end
-
-def fun_l1_n597(x)
- if (x < 1)
- fun_l2_n343(x)
- else
- fun_l2_n704(x)
- end
-end
-
-def fun_l1_n598(x)
- if (x < 1)
- fun_l2_n256(x)
- else
- fun_l2_n213(x)
- end
-end
-
-def fun_l1_n599(x)
- if (x < 1)
- fun_l2_n653(x)
- else
- fun_l2_n630(x)
- end
-end
-
-def fun_l1_n600(x)
- if (x < 1)
- fun_l2_n587(x)
- else
- fun_l2_n899(x)
- end
-end
-
-def fun_l1_n601(x)
- if (x < 1)
- fun_l2_n798(x)
- else
- fun_l2_n318(x)
- end
-end
-
-def fun_l1_n602(x)
- if (x < 1)
- fun_l2_n286(x)
- else
- fun_l2_n586(x)
- end
-end
-
-def fun_l1_n603(x)
- if (x < 1)
- fun_l2_n931(x)
- else
- fun_l2_n370(x)
- end
-end
-
-def fun_l1_n604(x)
- if (x < 1)
- fun_l2_n311(x)
- else
- fun_l2_n476(x)
- end
-end
-
-def fun_l1_n605(x)
- if (x < 1)
- fun_l2_n998(x)
- else
- fun_l2_n953(x)
- end
-end
-
-def fun_l1_n606(x)
- if (x < 1)
- fun_l2_n782(x)
- else
- fun_l2_n225(x)
- end
-end
-
-def fun_l1_n607(x)
- if (x < 1)
- fun_l2_n696(x)
- else
- fun_l2_n797(x)
- end
-end
-
-def fun_l1_n608(x)
- if (x < 1)
- fun_l2_n344(x)
- else
- fun_l2_n247(x)
- end
-end
-
-def fun_l1_n609(x)
- if (x < 1)
- fun_l2_n627(x)
- else
- fun_l2_n410(x)
- end
-end
-
-def fun_l1_n610(x)
- if (x < 1)
- fun_l2_n431(x)
- else
- fun_l2_n56(x)
- end
-end
-
-def fun_l1_n611(x)
- if (x < 1)
- fun_l2_n307(x)
- else
- fun_l2_n857(x)
- end
-end
-
-def fun_l1_n612(x)
- if (x < 1)
- fun_l2_n411(x)
- else
- fun_l2_n59(x)
- end
-end
-
-def fun_l1_n613(x)
- if (x < 1)
- fun_l2_n38(x)
- else
- fun_l2_n880(x)
- end
-end
-
-def fun_l1_n614(x)
- if (x < 1)
- fun_l2_n945(x)
- else
- fun_l2_n723(x)
- end
-end
-
-def fun_l1_n615(x)
- if (x < 1)
- fun_l2_n248(x)
- else
- fun_l2_n56(x)
- end
-end
-
-def fun_l1_n616(x)
- if (x < 1)
- fun_l2_n453(x)
- else
- fun_l2_n4(x)
- end
-end
-
-def fun_l1_n617(x)
- if (x < 1)
- fun_l2_n599(x)
- else
- fun_l2_n966(x)
- end
-end
-
-def fun_l1_n618(x)
- if (x < 1)
- fun_l2_n896(x)
- else
- fun_l2_n666(x)
- end
-end
-
-def fun_l1_n619(x)
- if (x < 1)
- fun_l2_n715(x)
- else
- fun_l2_n918(x)
- end
-end
-
-def fun_l1_n620(x)
- if (x < 1)
- fun_l2_n663(x)
- else
- fun_l2_n144(x)
- end
-end
-
-def fun_l1_n621(x)
- if (x < 1)
- fun_l2_n17(x)
- else
- fun_l2_n411(x)
- end
-end
-
-def fun_l1_n622(x)
- if (x < 1)
- fun_l2_n851(x)
- else
- fun_l2_n858(x)
- end
-end
-
-def fun_l1_n623(x)
- if (x < 1)
- fun_l2_n552(x)
- else
- fun_l2_n503(x)
- end
-end
-
-def fun_l1_n624(x)
- if (x < 1)
- fun_l2_n822(x)
- else
- fun_l2_n239(x)
- end
-end
-
-def fun_l1_n625(x)
- if (x < 1)
- fun_l2_n917(x)
- else
- fun_l2_n120(x)
- end
-end
-
-def fun_l1_n626(x)
- if (x < 1)
- fun_l2_n640(x)
- else
- fun_l2_n603(x)
- end
-end
-
-def fun_l1_n627(x)
- if (x < 1)
- fun_l2_n244(x)
- else
- fun_l2_n114(x)
- end
-end
-
-def fun_l1_n628(x)
- if (x < 1)
- fun_l2_n374(x)
- else
- fun_l2_n295(x)
- end
-end
-
-def fun_l1_n629(x)
- if (x < 1)
- fun_l2_n761(x)
- else
- fun_l2_n920(x)
- end
-end
-
-def fun_l1_n630(x)
- if (x < 1)
- fun_l2_n314(x)
- else
- fun_l2_n571(x)
- end
-end
-
-def fun_l1_n631(x)
- if (x < 1)
- fun_l2_n830(x)
- else
- fun_l2_n838(x)
- end
-end
-
-def fun_l1_n632(x)
- if (x < 1)
- fun_l2_n523(x)
- else
- fun_l2_n453(x)
- end
-end
-
-def fun_l1_n633(x)
- if (x < 1)
- fun_l2_n245(x)
- else
- fun_l2_n173(x)
- end
-end
-
-def fun_l1_n634(x)
- if (x < 1)
- fun_l2_n939(x)
- else
- fun_l2_n774(x)
- end
-end
-
-def fun_l1_n635(x)
- if (x < 1)
- fun_l2_n17(x)
- else
- fun_l2_n166(x)
- end
-end
-
-def fun_l1_n636(x)
- if (x < 1)
- fun_l2_n443(x)
- else
- fun_l2_n297(x)
- end
-end
-
-def fun_l1_n637(x)
- if (x < 1)
- fun_l2_n280(x)
- else
- fun_l2_n776(x)
- end
-end
-
-def fun_l1_n638(x)
- if (x < 1)
- fun_l2_n761(x)
- else
- fun_l2_n866(x)
- end
-end
-
-def fun_l1_n639(x)
- if (x < 1)
- fun_l2_n677(x)
- else
- fun_l2_n855(x)
- end
-end
-
-def fun_l1_n640(x)
- if (x < 1)
- fun_l2_n252(x)
- else
- fun_l2_n766(x)
- end
-end
-
-def fun_l1_n641(x)
- if (x < 1)
- fun_l2_n3(x)
- else
- fun_l2_n115(x)
- end
-end
-
-def fun_l1_n642(x)
- if (x < 1)
- fun_l2_n495(x)
- else
- fun_l2_n340(x)
- end
-end
-
-def fun_l1_n643(x)
- if (x < 1)
- fun_l2_n991(x)
- else
- fun_l2_n119(x)
- end
-end
-
-def fun_l1_n644(x)
- if (x < 1)
- fun_l2_n379(x)
- else
- fun_l2_n519(x)
- end
-end
-
-def fun_l1_n645(x)
- if (x < 1)
- fun_l2_n191(x)
- else
- fun_l2_n872(x)
- end
-end
-
-def fun_l1_n646(x)
- if (x < 1)
- fun_l2_n979(x)
- else
- fun_l2_n980(x)
- end
-end
-
-def fun_l1_n647(x)
- if (x < 1)
- fun_l2_n918(x)
- else
- fun_l2_n455(x)
- end
-end
-
-def fun_l1_n648(x)
- if (x < 1)
- fun_l2_n966(x)
- else
- fun_l2_n529(x)
- end
-end
-
-def fun_l1_n649(x)
- if (x < 1)
- fun_l2_n838(x)
- else
- fun_l2_n529(x)
- end
-end
-
-def fun_l1_n650(x)
- if (x < 1)
- fun_l2_n542(x)
- else
- fun_l2_n42(x)
- end
-end
-
-def fun_l1_n651(x)
- if (x < 1)
- fun_l2_n65(x)
- else
- fun_l2_n460(x)
- end
-end
-
-def fun_l1_n652(x)
- if (x < 1)
- fun_l2_n479(x)
- else
- fun_l2_n251(x)
- end
-end
-
-def fun_l1_n653(x)
- if (x < 1)
- fun_l2_n243(x)
- else
- fun_l2_n77(x)
- end
-end
-
-def fun_l1_n654(x)
- if (x < 1)
- fun_l2_n392(x)
- else
- fun_l2_n940(x)
- end
-end
-
-def fun_l1_n655(x)
- if (x < 1)
- fun_l2_n875(x)
- else
- fun_l2_n157(x)
- end
-end
-
-def fun_l1_n656(x)
- if (x < 1)
- fun_l2_n279(x)
- else
- fun_l2_n237(x)
- end
-end
-
-def fun_l1_n657(x)
- if (x < 1)
- fun_l2_n522(x)
- else
- fun_l2_n174(x)
- end
-end
-
-def fun_l1_n658(x)
- if (x < 1)
- fun_l2_n669(x)
- else
- fun_l2_n399(x)
- end
-end
-
-def fun_l1_n659(x)
- if (x < 1)
- fun_l2_n251(x)
- else
- fun_l2_n56(x)
- end
-end
-
-def fun_l1_n660(x)
- if (x < 1)
- fun_l2_n563(x)
- else
- fun_l2_n731(x)
- end
-end
-
-def fun_l1_n661(x)
- if (x < 1)
- fun_l2_n684(x)
- else
- fun_l2_n292(x)
- end
-end
-
-def fun_l1_n662(x)
- if (x < 1)
- fun_l2_n952(x)
- else
- fun_l2_n1(x)
- end
-end
-
-def fun_l1_n663(x)
- if (x < 1)
- fun_l2_n89(x)
- else
- fun_l2_n562(x)
- end
-end
-
-def fun_l1_n664(x)
- if (x < 1)
- fun_l2_n480(x)
- else
- fun_l2_n488(x)
- end
-end
-
-def fun_l1_n665(x)
- if (x < 1)
- fun_l2_n398(x)
- else
- fun_l2_n493(x)
- end
-end
-
-def fun_l1_n666(x)
- if (x < 1)
- fun_l2_n778(x)
- else
- fun_l2_n702(x)
- end
-end
-
-def fun_l1_n667(x)
- if (x < 1)
- fun_l2_n332(x)
- else
- fun_l2_n441(x)
- end
-end
-
-def fun_l1_n668(x)
- if (x < 1)
- fun_l2_n866(x)
- else
- fun_l2_n442(x)
- end
-end
-
-def fun_l1_n669(x)
- if (x < 1)
- fun_l2_n533(x)
- else
- fun_l2_n970(x)
- end
-end
-
-def fun_l1_n670(x)
- if (x < 1)
- fun_l2_n926(x)
- else
- fun_l2_n883(x)
- end
-end
-
-def fun_l1_n671(x)
- if (x < 1)
- fun_l2_n204(x)
- else
- fun_l2_n769(x)
- end
-end
-
-def fun_l1_n672(x)
- if (x < 1)
- fun_l2_n663(x)
- else
- fun_l2_n367(x)
- end
-end
-
-def fun_l1_n673(x)
- if (x < 1)
- fun_l2_n978(x)
- else
- fun_l2_n750(x)
- end
-end
-
-def fun_l1_n674(x)
- if (x < 1)
- fun_l2_n296(x)
- else
- fun_l2_n608(x)
- end
-end
-
-def fun_l1_n675(x)
- if (x < 1)
- fun_l2_n35(x)
- else
- fun_l2_n200(x)
- end
-end
-
-def fun_l1_n676(x)
- if (x < 1)
- fun_l2_n618(x)
- else
- fun_l2_n286(x)
- end
-end
-
-def fun_l1_n677(x)
- if (x < 1)
- fun_l2_n98(x)
- else
- fun_l2_n264(x)
- end
-end
-
-def fun_l1_n678(x)
- if (x < 1)
- fun_l2_n967(x)
- else
- fun_l2_n884(x)
- end
-end
-
-def fun_l1_n679(x)
- if (x < 1)
- fun_l2_n351(x)
- else
- fun_l2_n854(x)
- end
-end
-
-def fun_l1_n680(x)
- if (x < 1)
- fun_l2_n397(x)
- else
- fun_l2_n56(x)
- end
-end
-
-def fun_l1_n681(x)
- if (x < 1)
- fun_l2_n232(x)
- else
- fun_l2_n400(x)
- end
-end
-
-def fun_l1_n682(x)
- if (x < 1)
- fun_l2_n321(x)
- else
- fun_l2_n500(x)
- end
-end
-
-def fun_l1_n683(x)
- if (x < 1)
- fun_l2_n315(x)
- else
- fun_l2_n509(x)
- end
-end
-
-def fun_l1_n684(x)
- if (x < 1)
- fun_l2_n854(x)
- else
- fun_l2_n921(x)
- end
-end
-
-def fun_l1_n685(x)
- if (x < 1)
- fun_l2_n823(x)
- else
- fun_l2_n995(x)
- end
-end
-
-def fun_l1_n686(x)
- if (x < 1)
- fun_l2_n42(x)
- else
- fun_l2_n92(x)
- end
-end
-
-def fun_l1_n687(x)
- if (x < 1)
- fun_l2_n74(x)
- else
- fun_l2_n577(x)
- end
-end
-
-def fun_l1_n688(x)
- if (x < 1)
- fun_l2_n47(x)
- else
- fun_l2_n664(x)
- end
-end
-
-def fun_l1_n689(x)
- if (x < 1)
- fun_l2_n709(x)
- else
- fun_l2_n92(x)
- end
-end
-
-def fun_l1_n690(x)
- if (x < 1)
- fun_l2_n875(x)
- else
- fun_l2_n893(x)
- end
-end
-
-def fun_l1_n691(x)
- if (x < 1)
- fun_l2_n934(x)
- else
- fun_l2_n339(x)
- end
-end
-
-def fun_l1_n692(x)
- if (x < 1)
- fun_l2_n194(x)
- else
- fun_l2_n915(x)
- end
-end
-
-def fun_l1_n693(x)
- if (x < 1)
- fun_l2_n352(x)
- else
- fun_l2_n212(x)
- end
-end
-
-def fun_l1_n694(x)
- if (x < 1)
- fun_l2_n554(x)
- else
- fun_l2_n461(x)
- end
-end
-
-def fun_l1_n695(x)
- if (x < 1)
- fun_l2_n372(x)
- else
- fun_l2_n652(x)
- end
-end
-
-def fun_l1_n696(x)
- if (x < 1)
- fun_l2_n778(x)
- else
- fun_l2_n350(x)
- end
-end
-
-def fun_l1_n697(x)
- if (x < 1)
- fun_l2_n656(x)
- else
- fun_l2_n467(x)
- end
-end
-
-def fun_l1_n698(x)
- if (x < 1)
- fun_l2_n799(x)
- else
- fun_l2_n983(x)
- end
-end
-
-def fun_l1_n699(x)
- if (x < 1)
- fun_l2_n917(x)
- else
- fun_l2_n801(x)
- end
-end
-
-def fun_l1_n700(x)
- if (x < 1)
- fun_l2_n276(x)
- else
- fun_l2_n778(x)
- end
-end
-
-def fun_l1_n701(x)
- if (x < 1)
- fun_l2_n562(x)
- else
- fun_l2_n558(x)
- end
-end
-
-def fun_l1_n702(x)
- if (x < 1)
- fun_l2_n600(x)
- else
- fun_l2_n120(x)
- end
-end
-
-def fun_l1_n703(x)
- if (x < 1)
- fun_l2_n346(x)
- else
- fun_l2_n975(x)
- end
-end
-
-def fun_l1_n704(x)
- if (x < 1)
- fun_l2_n139(x)
- else
- fun_l2_n241(x)
- end
-end
-
-def fun_l1_n705(x)
- if (x < 1)
- fun_l2_n728(x)
- else
- fun_l2_n62(x)
- end
-end
-
-def fun_l1_n706(x)
- if (x < 1)
- fun_l2_n719(x)
- else
- fun_l2_n955(x)
- end
-end
-
-def fun_l1_n707(x)
- if (x < 1)
- fun_l2_n752(x)
- else
- fun_l2_n122(x)
- end
-end
-
-def fun_l1_n708(x)
- if (x < 1)
- fun_l2_n456(x)
- else
- fun_l2_n128(x)
- end
-end
-
-def fun_l1_n709(x)
- if (x < 1)
- fun_l2_n4(x)
- else
- fun_l2_n399(x)
- end
-end
-
-def fun_l1_n710(x)
- if (x < 1)
- fun_l2_n20(x)
- else
- fun_l2_n746(x)
- end
-end
-
-def fun_l1_n711(x)
- if (x < 1)
- fun_l2_n978(x)
- else
- fun_l2_n886(x)
- end
-end
-
-def fun_l1_n712(x)
- if (x < 1)
- fun_l2_n417(x)
- else
- fun_l2_n337(x)
- end
-end
-
-def fun_l1_n713(x)
- if (x < 1)
- fun_l2_n394(x)
- else
- fun_l2_n713(x)
- end
-end
-
-def fun_l1_n714(x)
- if (x < 1)
- fun_l2_n433(x)
- else
- fun_l2_n985(x)
- end
-end
-
-def fun_l1_n715(x)
- if (x < 1)
- fun_l2_n937(x)
- else
- fun_l2_n709(x)
- end
-end
-
-def fun_l1_n716(x)
- if (x < 1)
- fun_l2_n963(x)
- else
- fun_l2_n842(x)
- end
-end
-
-def fun_l1_n717(x)
- if (x < 1)
- fun_l2_n671(x)
- else
- fun_l2_n954(x)
- end
-end
-
-def fun_l1_n718(x)
- if (x < 1)
- fun_l2_n948(x)
- else
- fun_l2_n128(x)
- end
-end
-
-def fun_l1_n719(x)
- if (x < 1)
- fun_l2_n682(x)
- else
- fun_l2_n973(x)
- end
-end
-
-def fun_l1_n720(x)
- if (x < 1)
- fun_l2_n336(x)
- else
- fun_l2_n643(x)
- end
-end
-
-def fun_l1_n721(x)
- if (x < 1)
- fun_l2_n224(x)
- else
- fun_l2_n96(x)
- end
-end
-
-def fun_l1_n722(x)
- if (x < 1)
- fun_l2_n907(x)
- else
- fun_l2_n776(x)
- end
-end
-
-def fun_l1_n723(x)
- if (x < 1)
- fun_l2_n93(x)
- else
- fun_l2_n410(x)
- end
-end
-
-def fun_l1_n724(x)
- if (x < 1)
- fun_l2_n282(x)
- else
- fun_l2_n134(x)
- end
-end
-
-def fun_l1_n725(x)
- if (x < 1)
- fun_l2_n938(x)
- else
- fun_l2_n603(x)
- end
-end
-
-def fun_l1_n726(x)
- if (x < 1)
- fun_l2_n574(x)
- else
- fun_l2_n976(x)
- end
-end
-
-def fun_l1_n727(x)
- if (x < 1)
- fun_l2_n428(x)
- else
- fun_l2_n658(x)
- end
-end
-
-def fun_l1_n728(x)
- if (x < 1)
- fun_l2_n828(x)
- else
- fun_l2_n226(x)
- end
-end
-
-def fun_l1_n729(x)
- if (x < 1)
- fun_l2_n663(x)
- else
- fun_l2_n292(x)
- end
-end
-
-def fun_l1_n730(x)
- if (x < 1)
- fun_l2_n802(x)
- else
- fun_l2_n853(x)
- end
-end
-
-def fun_l1_n731(x)
- if (x < 1)
- fun_l2_n142(x)
- else
- fun_l2_n339(x)
- end
-end
-
-def fun_l1_n732(x)
- if (x < 1)
- fun_l2_n211(x)
- else
- fun_l2_n35(x)
- end
-end
-
-def fun_l1_n733(x)
- if (x < 1)
- fun_l2_n660(x)
- else
- fun_l2_n179(x)
- end
-end
-
-def fun_l1_n734(x)
- if (x < 1)
- fun_l2_n174(x)
- else
- fun_l2_n224(x)
- end
-end
-
-def fun_l1_n735(x)
- if (x < 1)
- fun_l2_n490(x)
- else
- fun_l2_n564(x)
- end
-end
-
-def fun_l1_n736(x)
- if (x < 1)
- fun_l2_n597(x)
- else
- fun_l2_n153(x)
- end
-end
-
-def fun_l1_n737(x)
- if (x < 1)
- fun_l2_n633(x)
- else
- fun_l2_n358(x)
- end
-end
-
-def fun_l1_n738(x)
- if (x < 1)
- fun_l2_n0(x)
- else
- fun_l2_n858(x)
- end
-end
-
-def fun_l1_n739(x)
- if (x < 1)
- fun_l2_n335(x)
- else
- fun_l2_n531(x)
- end
-end
-
-def fun_l1_n740(x)
- if (x < 1)
- fun_l2_n736(x)
- else
- fun_l2_n653(x)
- end
-end
-
-def fun_l1_n741(x)
- if (x < 1)
- fun_l2_n280(x)
- else
- fun_l2_n684(x)
- end
-end
-
-def fun_l1_n742(x)
- if (x < 1)
- fun_l2_n976(x)
- else
- fun_l2_n987(x)
- end
-end
-
-def fun_l1_n743(x)
- if (x < 1)
- fun_l2_n519(x)
- else
- fun_l2_n633(x)
- end
-end
-
-def fun_l1_n744(x)
- if (x < 1)
- fun_l2_n314(x)
- else
- fun_l2_n579(x)
- end
-end
-
-def fun_l1_n745(x)
- if (x < 1)
- fun_l2_n365(x)
- else
- fun_l2_n972(x)
- end
-end
-
-def fun_l1_n746(x)
- if (x < 1)
- fun_l2_n902(x)
- else
- fun_l2_n715(x)
- end
-end
-
-def fun_l1_n747(x)
- if (x < 1)
- fun_l2_n363(x)
- else
- fun_l2_n407(x)
- end
-end
-
-def fun_l1_n748(x)
- if (x < 1)
- fun_l2_n660(x)
- else
- fun_l2_n814(x)
- end
-end
-
-def fun_l1_n749(x)
- if (x < 1)
- fun_l2_n415(x)
- else
- fun_l2_n162(x)
- end
-end
-
-def fun_l1_n750(x)
- if (x < 1)
- fun_l2_n157(x)
- else
- fun_l2_n406(x)
- end
-end
-
-def fun_l1_n751(x)
- if (x < 1)
- fun_l2_n388(x)
- else
- fun_l2_n212(x)
- end
-end
-
-def fun_l1_n752(x)
- if (x < 1)
- fun_l2_n733(x)
- else
- fun_l2_n283(x)
- end
-end
-
-def fun_l1_n753(x)
- if (x < 1)
- fun_l2_n960(x)
- else
- fun_l2_n20(x)
- end
-end
-
-def fun_l1_n754(x)
- if (x < 1)
- fun_l2_n797(x)
- else
- fun_l2_n202(x)
- end
-end
-
-def fun_l1_n755(x)
- if (x < 1)
- fun_l2_n113(x)
- else
- fun_l2_n953(x)
- end
-end
-
-def fun_l1_n756(x)
- if (x < 1)
- fun_l2_n84(x)
- else
- fun_l2_n390(x)
- end
-end
-
-def fun_l1_n757(x)
- if (x < 1)
- fun_l2_n355(x)
- else
- fun_l2_n761(x)
- end
-end
-
-def fun_l1_n758(x)
- if (x < 1)
- fun_l2_n823(x)
- else
- fun_l2_n37(x)
- end
-end
-
-def fun_l1_n759(x)
- if (x < 1)
- fun_l2_n428(x)
- else
- fun_l2_n130(x)
- end
-end
-
-def fun_l1_n760(x)
- if (x < 1)
- fun_l2_n364(x)
- else
- fun_l2_n680(x)
- end
-end
-
-def fun_l1_n761(x)
- if (x < 1)
- fun_l2_n718(x)
- else
- fun_l2_n885(x)
- end
-end
-
-def fun_l1_n762(x)
- if (x < 1)
- fun_l2_n795(x)
- else
- fun_l2_n342(x)
- end
-end
-
-def fun_l1_n763(x)
- if (x < 1)
- fun_l2_n561(x)
- else
- fun_l2_n593(x)
- end
-end
-
-def fun_l1_n764(x)
- if (x < 1)
- fun_l2_n714(x)
- else
- fun_l2_n168(x)
- end
-end
-
-def fun_l1_n765(x)
- if (x < 1)
- fun_l2_n377(x)
- else
- fun_l2_n109(x)
- end
-end
-
-def fun_l1_n766(x)
- if (x < 1)
- fun_l2_n477(x)
- else
- fun_l2_n871(x)
- end
-end
-
-def fun_l1_n767(x)
- if (x < 1)
- fun_l2_n596(x)
- else
- fun_l2_n81(x)
- end
-end
-
-def fun_l1_n768(x)
- if (x < 1)
- fun_l2_n609(x)
- else
- fun_l2_n454(x)
- end
-end
-
-def fun_l1_n769(x)
- if (x < 1)
- fun_l2_n308(x)
- else
- fun_l2_n890(x)
- end
-end
-
-def fun_l1_n770(x)
- if (x < 1)
- fun_l2_n761(x)
- else
- fun_l2_n342(x)
- end
-end
-
-def fun_l1_n771(x)
- if (x < 1)
- fun_l2_n44(x)
- else
- fun_l2_n1(x)
- end
-end
-
-def fun_l1_n772(x)
- if (x < 1)
- fun_l2_n457(x)
- else
- fun_l2_n571(x)
- end
-end
-
-def fun_l1_n773(x)
- if (x < 1)
- fun_l2_n88(x)
- else
- fun_l2_n622(x)
- end
-end
-
-def fun_l1_n774(x)
- if (x < 1)
- fun_l2_n459(x)
- else
- fun_l2_n446(x)
- end
-end
-
-def fun_l1_n775(x)
- if (x < 1)
- fun_l2_n400(x)
- else
- fun_l2_n918(x)
- end
-end
-
-def fun_l1_n776(x)
- if (x < 1)
- fun_l2_n752(x)
- else
- fun_l2_n696(x)
- end
-end
-
-def fun_l1_n777(x)
- if (x < 1)
- fun_l2_n968(x)
- else
- fun_l2_n988(x)
- end
-end
-
-def fun_l1_n778(x)
- if (x < 1)
- fun_l2_n242(x)
- else
- fun_l2_n496(x)
- end
-end
-
-def fun_l1_n779(x)
- if (x < 1)
- fun_l2_n106(x)
- else
- fun_l2_n637(x)
- end
-end
-
-def fun_l1_n780(x)
- if (x < 1)
- fun_l2_n945(x)
- else
- fun_l2_n238(x)
- end
-end
-
-def fun_l1_n781(x)
- if (x < 1)
- fun_l2_n269(x)
- else
- fun_l2_n582(x)
- end
-end
-
-def fun_l1_n782(x)
- if (x < 1)
- fun_l2_n523(x)
- else
- fun_l2_n201(x)
- end
-end
-
-def fun_l1_n783(x)
- if (x < 1)
- fun_l2_n326(x)
- else
- fun_l2_n744(x)
- end
-end
-
-def fun_l1_n784(x)
- if (x < 1)
- fun_l2_n49(x)
- else
- fun_l2_n943(x)
- end
-end
-
-def fun_l1_n785(x)
- if (x < 1)
- fun_l2_n975(x)
- else
- fun_l2_n560(x)
- end
-end
-
-def fun_l1_n786(x)
- if (x < 1)
- fun_l2_n843(x)
- else
- fun_l2_n240(x)
- end
-end
-
-def fun_l1_n787(x)
- if (x < 1)
- fun_l2_n179(x)
- else
- fun_l2_n423(x)
- end
-end
-
-def fun_l1_n788(x)
- if (x < 1)
- fun_l2_n536(x)
- else
- fun_l2_n112(x)
- end
-end
-
-def fun_l1_n789(x)
- if (x < 1)
- fun_l2_n418(x)
- else
- fun_l2_n443(x)
- end
-end
-
-def fun_l1_n790(x)
- if (x < 1)
- fun_l2_n770(x)
- else
- fun_l2_n127(x)
- end
-end
-
-def fun_l1_n791(x)
- if (x < 1)
- fun_l2_n425(x)
- else
- fun_l2_n364(x)
- end
-end
-
-def fun_l1_n792(x)
- if (x < 1)
- fun_l2_n841(x)
- else
- fun_l2_n112(x)
- end
-end
-
-def fun_l1_n793(x)
- if (x < 1)
- fun_l2_n64(x)
- else
- fun_l2_n294(x)
- end
-end
-
-def fun_l1_n794(x)
- if (x < 1)
- fun_l2_n837(x)
- else
- fun_l2_n325(x)
- end
-end
-
-def fun_l1_n795(x)
- if (x < 1)
- fun_l2_n522(x)
- else
- fun_l2_n307(x)
- end
-end
-
-def fun_l1_n796(x)
- if (x < 1)
- fun_l2_n526(x)
- else
- fun_l2_n957(x)
- end
-end
-
-def fun_l1_n797(x)
- if (x < 1)
- fun_l2_n71(x)
- else
- fun_l2_n871(x)
- end
-end
-
-def fun_l1_n798(x)
- if (x < 1)
- fun_l2_n386(x)
- else
- fun_l2_n354(x)
- end
-end
-
-def fun_l1_n799(x)
- if (x < 1)
- fun_l2_n669(x)
- else
- fun_l2_n237(x)
- end
-end
-
-def fun_l1_n800(x)
- if (x < 1)
- fun_l2_n455(x)
- else
- fun_l2_n549(x)
- end
-end
-
-def fun_l1_n801(x)
- if (x < 1)
- fun_l2_n708(x)
- else
- fun_l2_n611(x)
- end
-end
-
-def fun_l1_n802(x)
- if (x < 1)
- fun_l2_n35(x)
- else
- fun_l2_n239(x)
- end
-end
-
-def fun_l1_n803(x)
- if (x < 1)
- fun_l2_n890(x)
- else
- fun_l2_n27(x)
- end
-end
-
-def fun_l1_n804(x)
- if (x < 1)
- fun_l2_n378(x)
- else
- fun_l2_n567(x)
- end
-end
-
-def fun_l1_n805(x)
- if (x < 1)
- fun_l2_n672(x)
- else
- fun_l2_n320(x)
- end
-end
-
-def fun_l1_n806(x)
- if (x < 1)
- fun_l2_n207(x)
- else
- fun_l2_n691(x)
- end
-end
-
-def fun_l1_n807(x)
- if (x < 1)
- fun_l2_n180(x)
- else
- fun_l2_n912(x)
- end
-end
-
-def fun_l1_n808(x)
- if (x < 1)
- fun_l2_n370(x)
- else
- fun_l2_n529(x)
- end
-end
-
-def fun_l1_n809(x)
- if (x < 1)
- fun_l2_n436(x)
- else
- fun_l2_n465(x)
- end
-end
-
-def fun_l1_n810(x)
- if (x < 1)
- fun_l2_n820(x)
- else
- fun_l2_n995(x)
- end
-end
-
-def fun_l1_n811(x)
- if (x < 1)
- fun_l2_n821(x)
- else
- fun_l2_n898(x)
- end
-end
-
-def fun_l1_n812(x)
- if (x < 1)
- fun_l2_n376(x)
- else
- fun_l2_n999(x)
- end
-end
-
-def fun_l1_n813(x)
- if (x < 1)
- fun_l2_n643(x)
- else
- fun_l2_n478(x)
- end
-end
-
-def fun_l1_n814(x)
- if (x < 1)
- fun_l2_n475(x)
- else
- fun_l2_n137(x)
- end
-end
-
-def fun_l1_n815(x)
- if (x < 1)
- fun_l2_n117(x)
- else
- fun_l2_n685(x)
- end
-end
-
-def fun_l1_n816(x)
- if (x < 1)
- fun_l2_n451(x)
- else
- fun_l2_n643(x)
- end
-end
-
-def fun_l1_n817(x)
- if (x < 1)
- fun_l2_n22(x)
- else
- fun_l2_n939(x)
- end
-end
-
-def fun_l1_n818(x)
- if (x < 1)
- fun_l2_n586(x)
- else
- fun_l2_n206(x)
- end
-end
-
-def fun_l1_n819(x)
- if (x < 1)
- fun_l2_n443(x)
- else
- fun_l2_n661(x)
- end
-end
-
-def fun_l1_n820(x)
- if (x < 1)
- fun_l2_n656(x)
- else
- fun_l2_n93(x)
- end
-end
-
-def fun_l1_n821(x)
- if (x < 1)
- fun_l2_n794(x)
- else
- fun_l2_n354(x)
- end
-end
-
-def fun_l1_n822(x)
- if (x < 1)
- fun_l2_n519(x)
- else
- fun_l2_n446(x)
- end
-end
-
-def fun_l1_n823(x)
- if (x < 1)
- fun_l2_n0(x)
- else
- fun_l2_n233(x)
- end
-end
-
-def fun_l1_n824(x)
- if (x < 1)
- fun_l2_n376(x)
- else
- fun_l2_n186(x)
- end
-end
-
-def fun_l1_n825(x)
- if (x < 1)
- fun_l2_n292(x)
- else
- fun_l2_n303(x)
- end
-end
-
-def fun_l1_n826(x)
- if (x < 1)
- fun_l2_n871(x)
- else
- fun_l2_n515(x)
- end
-end
-
-def fun_l1_n827(x)
- if (x < 1)
- fun_l2_n227(x)
- else
- fun_l2_n232(x)
- end
-end
-
-def fun_l1_n828(x)
- if (x < 1)
- fun_l2_n860(x)
- else
- fun_l2_n341(x)
- end
-end
-
-def fun_l1_n829(x)
- if (x < 1)
- fun_l2_n140(x)
- else
- fun_l2_n304(x)
- end
-end
-
-def fun_l1_n830(x)
- if (x < 1)
- fun_l2_n796(x)
- else
- fun_l2_n943(x)
- end
-end
-
-def fun_l1_n831(x)
- if (x < 1)
- fun_l2_n71(x)
- else
- fun_l2_n8(x)
- end
-end
-
-def fun_l1_n832(x)
- if (x < 1)
- fun_l2_n328(x)
- else
- fun_l2_n836(x)
- end
-end
-
-def fun_l1_n833(x)
- if (x < 1)
- fun_l2_n322(x)
- else
- fun_l2_n653(x)
- end
-end
-
-def fun_l1_n834(x)
- if (x < 1)
- fun_l2_n471(x)
- else
- fun_l2_n147(x)
- end
-end
-
-def fun_l1_n835(x)
- if (x < 1)
- fun_l2_n601(x)
- else
- fun_l2_n249(x)
- end
-end
-
-def fun_l1_n836(x)
- if (x < 1)
- fun_l2_n105(x)
- else
- fun_l2_n63(x)
- end
-end
-
-def fun_l1_n837(x)
- if (x < 1)
- fun_l2_n773(x)
- else
- fun_l2_n597(x)
- end
-end
-
-def fun_l1_n838(x)
- if (x < 1)
- fun_l2_n933(x)
- else
- fun_l2_n964(x)
- end
-end
-
-def fun_l1_n839(x)
- if (x < 1)
- fun_l2_n123(x)
- else
- fun_l2_n533(x)
- end
-end
-
-def fun_l1_n840(x)
- if (x < 1)
- fun_l2_n94(x)
- else
- fun_l2_n127(x)
- end
-end
-
-def fun_l1_n841(x)
- if (x < 1)
- fun_l2_n981(x)
- else
- fun_l2_n819(x)
- end
-end
-
-def fun_l1_n842(x)
- if (x < 1)
- fun_l2_n743(x)
- else
- fun_l2_n747(x)
- end
-end
-
-def fun_l1_n843(x)
- if (x < 1)
- fun_l2_n735(x)
- else
- fun_l2_n110(x)
- end
-end
-
-def fun_l1_n844(x)
- if (x < 1)
- fun_l2_n273(x)
- else
- fun_l2_n753(x)
- end
-end
-
-def fun_l1_n845(x)
- if (x < 1)
- fun_l2_n316(x)
- else
- fun_l2_n391(x)
- end
-end
-
-def fun_l1_n846(x)
- if (x < 1)
- fun_l2_n221(x)
- else
- fun_l2_n251(x)
- end
-end
-
-def fun_l1_n847(x)
- if (x < 1)
- fun_l2_n795(x)
- else
- fun_l2_n513(x)
- end
-end
-
-def fun_l1_n848(x)
- if (x < 1)
- fun_l2_n986(x)
- else
- fun_l2_n472(x)
- end
-end
-
-def fun_l1_n849(x)
- if (x < 1)
- fun_l2_n863(x)
- else
- fun_l2_n759(x)
- end
-end
-
-def fun_l1_n850(x)
- if (x < 1)
- fun_l2_n512(x)
- else
- fun_l2_n502(x)
- end
-end
-
-def fun_l1_n851(x)
- if (x < 1)
- fun_l2_n561(x)
- else
- fun_l2_n697(x)
- end
-end
-
-def fun_l1_n852(x)
- if (x < 1)
- fun_l2_n816(x)
- else
- fun_l2_n90(x)
- end
-end
-
-def fun_l1_n853(x)
- if (x < 1)
- fun_l2_n656(x)
- else
- fun_l2_n174(x)
- end
-end
-
-def fun_l1_n854(x)
- if (x < 1)
- fun_l2_n439(x)
- else
- fun_l2_n90(x)
- end
-end
-
-def fun_l1_n855(x)
- if (x < 1)
- fun_l2_n15(x)
- else
- fun_l2_n402(x)
- end
-end
-
-def fun_l1_n856(x)
- if (x < 1)
- fun_l2_n224(x)
- else
- fun_l2_n177(x)
- end
-end
-
-def fun_l1_n857(x)
- if (x < 1)
- fun_l2_n675(x)
- else
- fun_l2_n113(x)
- end
-end
-
-def fun_l1_n858(x)
- if (x < 1)
- fun_l2_n388(x)
- else
- fun_l2_n529(x)
- end
-end
-
-def fun_l1_n859(x)
- if (x < 1)
- fun_l2_n628(x)
- else
- fun_l2_n93(x)
- end
-end
-
-def fun_l1_n860(x)
- if (x < 1)
- fun_l2_n67(x)
- else
- fun_l2_n90(x)
- end
-end
-
-def fun_l1_n861(x)
- if (x < 1)
- fun_l2_n637(x)
- else
- fun_l2_n68(x)
- end
-end
-
-def fun_l1_n862(x)
- if (x < 1)
- fun_l2_n767(x)
- else
- fun_l2_n86(x)
- end
-end
-
-def fun_l1_n863(x)
- if (x < 1)
- fun_l2_n50(x)
- else
- fun_l2_n777(x)
- end
-end
-
-def fun_l1_n864(x)
- if (x < 1)
- fun_l2_n846(x)
- else
- fun_l2_n783(x)
- end
-end
-
-def fun_l1_n865(x)
- if (x < 1)
- fun_l2_n756(x)
- else
- fun_l2_n703(x)
- end
-end
-
-def fun_l1_n866(x)
- if (x < 1)
- fun_l2_n972(x)
- else
- fun_l2_n249(x)
- end
-end
-
-def fun_l1_n867(x)
- if (x < 1)
- fun_l2_n636(x)
- else
- fun_l2_n841(x)
- end
-end
-
-def fun_l1_n868(x)
- if (x < 1)
- fun_l2_n889(x)
- else
- fun_l2_n899(x)
- end
-end
-
-def fun_l1_n869(x)
- if (x < 1)
- fun_l2_n55(x)
- else
- fun_l2_n45(x)
- end
-end
-
-def fun_l1_n870(x)
- if (x < 1)
- fun_l2_n740(x)
- else
- fun_l2_n722(x)
- end
-end
-
-def fun_l1_n871(x)
- if (x < 1)
- fun_l2_n865(x)
- else
- fun_l2_n695(x)
- end
-end
-
-def fun_l1_n872(x)
- if (x < 1)
- fun_l2_n54(x)
- else
- fun_l2_n581(x)
- end
-end
-
-def fun_l1_n873(x)
- if (x < 1)
- fun_l2_n328(x)
- else
- fun_l2_n861(x)
- end
-end
-
-def fun_l1_n874(x)
- if (x < 1)
- fun_l2_n645(x)
- else
- fun_l2_n121(x)
- end
-end
-
-def fun_l1_n875(x)
- if (x < 1)
- fun_l2_n71(x)
- else
- fun_l2_n329(x)
- end
-end
-
-def fun_l1_n876(x)
- if (x < 1)
- fun_l2_n944(x)
- else
- fun_l2_n95(x)
- end
-end
-
-def fun_l1_n877(x)
- if (x < 1)
- fun_l2_n270(x)
- else
- fun_l2_n801(x)
- end
-end
-
-def fun_l1_n878(x)
- if (x < 1)
- fun_l2_n115(x)
- else
- fun_l2_n414(x)
- end
-end
-
-def fun_l1_n879(x)
- if (x < 1)
- fun_l2_n154(x)
- else
- fun_l2_n605(x)
- end
-end
-
-def fun_l1_n880(x)
- if (x < 1)
- fun_l2_n859(x)
- else
- fun_l2_n307(x)
- end
-end
-
-def fun_l1_n881(x)
- if (x < 1)
- fun_l2_n443(x)
- else
- fun_l2_n267(x)
- end
-end
-
-def fun_l1_n882(x)
- if (x < 1)
- fun_l2_n280(x)
- else
- fun_l2_n175(x)
- end
-end
-
-def fun_l1_n883(x)
- if (x < 1)
- fun_l2_n176(x)
- else
- fun_l2_n286(x)
- end
-end
-
-def fun_l1_n884(x)
- if (x < 1)
- fun_l2_n422(x)
- else
- fun_l2_n469(x)
- end
-end
-
-def fun_l1_n885(x)
- if (x < 1)
- fun_l2_n532(x)
- else
- fun_l2_n795(x)
- end
-end
-
-def fun_l1_n886(x)
- if (x < 1)
- fun_l2_n966(x)
- else
- fun_l2_n46(x)
- end
-end
-
-def fun_l1_n887(x)
- if (x < 1)
- fun_l2_n446(x)
- else
- fun_l2_n944(x)
- end
-end
-
-def fun_l1_n888(x)
- if (x < 1)
- fun_l2_n256(x)
- else
- fun_l2_n757(x)
- end
-end
-
-def fun_l1_n889(x)
- if (x < 1)
- fun_l2_n566(x)
- else
- fun_l2_n992(x)
- end
-end
-
-def fun_l1_n890(x)
- if (x < 1)
- fun_l2_n55(x)
- else
- fun_l2_n121(x)
- end
-end
-
-def fun_l1_n891(x)
- if (x < 1)
- fun_l2_n597(x)
- else
- fun_l2_n257(x)
- end
-end
-
-def fun_l1_n892(x)
- if (x < 1)
- fun_l2_n79(x)
- else
- fun_l2_n249(x)
- end
-end
-
-def fun_l1_n893(x)
- if (x < 1)
- fun_l2_n436(x)
- else
- fun_l2_n738(x)
- end
-end
-
-def fun_l1_n894(x)
- if (x < 1)
- fun_l2_n244(x)
- else
- fun_l2_n184(x)
- end
-end
-
-def fun_l1_n895(x)
- if (x < 1)
- fun_l2_n342(x)
- else
- fun_l2_n794(x)
- end
-end
-
-def fun_l1_n896(x)
- if (x < 1)
- fun_l2_n588(x)
- else
- fun_l2_n235(x)
- end
-end
-
-def fun_l1_n897(x)
- if (x < 1)
- fun_l2_n443(x)
- else
- fun_l2_n462(x)
- end
-end
-
-def fun_l1_n898(x)
- if (x < 1)
- fun_l2_n986(x)
- else
- fun_l2_n282(x)
- end
-end
-
-def fun_l1_n899(x)
- if (x < 1)
- fun_l2_n61(x)
- else
- fun_l2_n516(x)
- end
-end
-
-def fun_l1_n900(x)
- if (x < 1)
- fun_l2_n993(x)
- else
- fun_l2_n337(x)
- end
-end
-
-def fun_l1_n901(x)
- if (x < 1)
- fun_l2_n398(x)
- else
- fun_l2_n425(x)
- end
-end
-
-def fun_l1_n902(x)
- if (x < 1)
- fun_l2_n177(x)
- else
- fun_l2_n741(x)
- end
-end
-
-def fun_l1_n903(x)
- if (x < 1)
- fun_l2_n597(x)
- else
- fun_l2_n331(x)
- end
-end
-
-def fun_l1_n904(x)
- if (x < 1)
- fun_l2_n740(x)
- else
- fun_l2_n527(x)
- end
-end
-
-def fun_l1_n905(x)
- if (x < 1)
- fun_l2_n138(x)
- else
- fun_l2_n248(x)
- end
-end
-
-def fun_l1_n906(x)
- if (x < 1)
- fun_l2_n318(x)
- else
- fun_l2_n941(x)
- end
-end
-
-def fun_l1_n907(x)
- if (x < 1)
- fun_l2_n493(x)
- else
- fun_l2_n376(x)
- end
-end
-
-def fun_l1_n908(x)
- if (x < 1)
- fun_l2_n899(x)
- else
- fun_l2_n745(x)
- end
-end
-
-def fun_l1_n909(x)
- if (x < 1)
- fun_l2_n963(x)
- else
- fun_l2_n384(x)
- end
-end
-
-def fun_l1_n910(x)
- if (x < 1)
- fun_l2_n490(x)
- else
- fun_l2_n702(x)
- end
-end
-
-def fun_l1_n911(x)
- if (x < 1)
- fun_l2_n712(x)
- else
- fun_l2_n810(x)
- end
-end
-
-def fun_l1_n912(x)
- if (x < 1)
- fun_l2_n245(x)
- else
- fun_l2_n609(x)
- end
-end
-
-def fun_l1_n913(x)
- if (x < 1)
- fun_l2_n997(x)
- else
- fun_l2_n241(x)
- end
-end
-
-def fun_l1_n914(x)
- if (x < 1)
- fun_l2_n428(x)
- else
- fun_l2_n697(x)
- end
-end
-
-def fun_l1_n915(x)
- if (x < 1)
- fun_l2_n257(x)
- else
- fun_l2_n626(x)
- end
-end
-
-def fun_l1_n916(x)
- if (x < 1)
- fun_l2_n378(x)
- else
- fun_l2_n457(x)
- end
-end
-
-def fun_l1_n917(x)
- if (x < 1)
- fun_l2_n378(x)
- else
- fun_l2_n958(x)
- end
-end
-
-def fun_l1_n918(x)
- if (x < 1)
- fun_l2_n213(x)
- else
- fun_l2_n962(x)
- end
-end
-
-def fun_l1_n919(x)
- if (x < 1)
- fun_l2_n466(x)
- else
- fun_l2_n461(x)
- end
-end
-
-def fun_l1_n920(x)
- if (x < 1)
- fun_l2_n835(x)
- else
- fun_l2_n460(x)
- end
-end
-
-def fun_l1_n921(x)
- if (x < 1)
- fun_l2_n642(x)
- else
- fun_l2_n680(x)
- end
-end
-
-def fun_l1_n922(x)
- if (x < 1)
- fun_l2_n467(x)
- else
- fun_l2_n225(x)
- end
-end
-
-def fun_l1_n923(x)
- if (x < 1)
- fun_l2_n752(x)
- else
- fun_l2_n462(x)
- end
-end
-
-def fun_l1_n924(x)
- if (x < 1)
- fun_l2_n113(x)
- else
- fun_l2_n59(x)
- end
-end
-
-def fun_l1_n925(x)
- if (x < 1)
- fun_l2_n329(x)
- else
- fun_l2_n994(x)
- end
-end
-
-def fun_l1_n926(x)
- if (x < 1)
- fun_l2_n815(x)
- else
- fun_l2_n249(x)
- end
-end
-
-def fun_l1_n927(x)
- if (x < 1)
- fun_l2_n216(x)
- else
- fun_l2_n591(x)
- end
-end
-
-def fun_l1_n928(x)
- if (x < 1)
- fun_l2_n441(x)
- else
- fun_l2_n437(x)
- end
-end
-
-def fun_l1_n929(x)
- if (x < 1)
- fun_l2_n433(x)
- else
- fun_l2_n185(x)
- end
-end
-
-def fun_l1_n930(x)
- if (x < 1)
- fun_l2_n125(x)
- else
- fun_l2_n940(x)
- end
-end
-
-def fun_l1_n931(x)
- if (x < 1)
- fun_l2_n203(x)
- else
- fun_l2_n292(x)
- end
-end
-
-def fun_l1_n932(x)
- if (x < 1)
- fun_l2_n986(x)
- else
- fun_l2_n234(x)
- end
-end
-
-def fun_l1_n933(x)
- if (x < 1)
- fun_l2_n735(x)
- else
- fun_l2_n20(x)
- end
-end
-
-def fun_l1_n934(x)
- if (x < 1)
- fun_l2_n878(x)
- else
- fun_l2_n166(x)
- end
-end
-
-def fun_l1_n935(x)
- if (x < 1)
- fun_l2_n123(x)
- else
- fun_l2_n52(x)
- end
-end
-
-def fun_l1_n936(x)
- if (x < 1)
- fun_l2_n99(x)
- else
- fun_l2_n336(x)
- end
-end
-
-def fun_l1_n937(x)
- if (x < 1)
- fun_l2_n731(x)
- else
- fun_l2_n363(x)
- end
-end
-
-def fun_l1_n938(x)
- if (x < 1)
- fun_l2_n988(x)
- else
- fun_l2_n978(x)
- end
-end
-
-def fun_l1_n939(x)
- if (x < 1)
- fun_l2_n592(x)
- else
- fun_l2_n932(x)
- end
-end
-
-def fun_l1_n940(x)
- if (x < 1)
- fun_l2_n681(x)
- else
- fun_l2_n868(x)
- end
-end
-
-def fun_l1_n941(x)
- if (x < 1)
- fun_l2_n863(x)
- else
- fun_l2_n457(x)
- end
-end
-
-def fun_l1_n942(x)
- if (x < 1)
- fun_l2_n526(x)
- else
- fun_l2_n960(x)
- end
-end
-
-def fun_l1_n943(x)
- if (x < 1)
- fun_l2_n859(x)
- else
- fun_l2_n478(x)
- end
-end
-
-def fun_l1_n944(x)
- if (x < 1)
- fun_l2_n947(x)
- else
- fun_l2_n889(x)
- end
-end
-
-def fun_l1_n945(x)
- if (x < 1)
- fun_l2_n845(x)
- else
- fun_l2_n211(x)
- end
-end
-
-def fun_l1_n946(x)
- if (x < 1)
- fun_l2_n445(x)
- else
- fun_l2_n600(x)
- end
-end
-
-def fun_l1_n947(x)
- if (x < 1)
- fun_l2_n932(x)
- else
- fun_l2_n534(x)
- end
-end
-
-def fun_l1_n948(x)
- if (x < 1)
- fun_l2_n224(x)
- else
- fun_l2_n32(x)
- end
-end
-
-def fun_l1_n949(x)
- if (x < 1)
- fun_l2_n63(x)
- else
- fun_l2_n121(x)
- end
-end
-
-def fun_l1_n950(x)
- if (x < 1)
- fun_l2_n55(x)
- else
- fun_l2_n90(x)
- end
-end
-
-def fun_l1_n951(x)
- if (x < 1)
- fun_l2_n880(x)
- else
- fun_l2_n936(x)
- end
-end
-
-def fun_l1_n952(x)
- if (x < 1)
- fun_l2_n971(x)
- else
- fun_l2_n40(x)
- end
-end
-
-def fun_l1_n953(x)
- if (x < 1)
- fun_l2_n880(x)
- else
- fun_l2_n200(x)
- end
-end
-
-def fun_l1_n954(x)
- if (x < 1)
- fun_l2_n60(x)
- else
- fun_l2_n473(x)
- end
-end
-
-def fun_l1_n955(x)
- if (x < 1)
- fun_l2_n855(x)
- else
- fun_l2_n601(x)
- end
-end
-
-def fun_l1_n956(x)
- if (x < 1)
- fun_l2_n282(x)
- else
- fun_l2_n542(x)
- end
-end
-
-def fun_l1_n957(x)
- if (x < 1)
- fun_l2_n116(x)
- else
- fun_l2_n584(x)
- end
-end
-
-def fun_l1_n958(x)
- if (x < 1)
- fun_l2_n845(x)
- else
- fun_l2_n814(x)
- end
-end
-
-def fun_l1_n959(x)
- if (x < 1)
- fun_l2_n443(x)
- else
- fun_l2_n239(x)
- end
-end
-
-def fun_l1_n960(x)
- if (x < 1)
- fun_l2_n79(x)
- else
- fun_l2_n556(x)
- end
-end
-
-def fun_l1_n961(x)
- if (x < 1)
- fun_l2_n664(x)
- else
- fun_l2_n282(x)
- end
-end
-
-def fun_l1_n962(x)
- if (x < 1)
- fun_l2_n273(x)
- else
- fun_l2_n393(x)
- end
-end
-
-def fun_l1_n963(x)
- if (x < 1)
- fun_l2_n120(x)
- else
- fun_l2_n506(x)
- end
-end
-
-def fun_l1_n964(x)
- if (x < 1)
- fun_l2_n362(x)
- else
- fun_l2_n631(x)
- end
-end
-
-def fun_l1_n965(x)
- if (x < 1)
- fun_l2_n219(x)
- else
- fun_l2_n260(x)
- end
-end
-
-def fun_l1_n966(x)
- if (x < 1)
- fun_l2_n802(x)
- else
- fun_l2_n732(x)
- end
-end
-
-def fun_l1_n967(x)
- if (x < 1)
- fun_l2_n761(x)
- else
- fun_l2_n580(x)
- end
-end
-
-def fun_l1_n968(x)
- if (x < 1)
- fun_l2_n529(x)
- else
- fun_l2_n783(x)
- end
-end
-
-def fun_l1_n969(x)
- if (x < 1)
- fun_l2_n138(x)
- else
- fun_l2_n434(x)
- end
-end
-
-def fun_l1_n970(x)
- if (x < 1)
- fun_l2_n266(x)
- else
- fun_l2_n522(x)
- end
-end
-
-def fun_l1_n971(x)
- if (x < 1)
- fun_l2_n352(x)
- else
- fun_l2_n51(x)
- end
-end
-
-def fun_l1_n972(x)
- if (x < 1)
- fun_l2_n619(x)
- else
- fun_l2_n68(x)
- end
-end
-
-def fun_l1_n973(x)
- if (x < 1)
- fun_l2_n510(x)
- else
- fun_l2_n74(x)
- end
-end
-
-def fun_l1_n974(x)
- if (x < 1)
- fun_l2_n442(x)
- else
- fun_l2_n258(x)
- end
-end
-
-def fun_l1_n975(x)
- if (x < 1)
- fun_l2_n106(x)
- else
- fun_l2_n364(x)
- end
-end
-
-def fun_l1_n976(x)
- if (x < 1)
- fun_l2_n412(x)
- else
- fun_l2_n669(x)
- end
-end
-
-def fun_l1_n977(x)
- if (x < 1)
- fun_l2_n394(x)
- else
- fun_l2_n435(x)
- end
-end
-
-def fun_l1_n978(x)
- if (x < 1)
- fun_l2_n630(x)
- else
- fun_l2_n686(x)
- end
-end
-
-def fun_l1_n979(x)
- if (x < 1)
- fun_l2_n683(x)
- else
- fun_l2_n99(x)
- end
-end
-
-def fun_l1_n980(x)
- if (x < 1)
- fun_l2_n352(x)
- else
- fun_l2_n394(x)
- end
-end
-
-def fun_l1_n981(x)
- if (x < 1)
- fun_l2_n856(x)
- else
- fun_l2_n11(x)
- end
-end
-
-def fun_l1_n982(x)
- if (x < 1)
- fun_l2_n484(x)
- else
- fun_l2_n230(x)
- end
-end
-
-def fun_l1_n983(x)
- if (x < 1)
- fun_l2_n609(x)
- else
- fun_l2_n882(x)
- end
-end
-
-def fun_l1_n984(x)
- if (x < 1)
- fun_l2_n529(x)
- else
- fun_l2_n589(x)
- end
-end
-
-def fun_l1_n985(x)
- if (x < 1)
- fun_l2_n545(x)
- else
- fun_l2_n139(x)
- end
-end
-
-def fun_l1_n986(x)
- if (x < 1)
- fun_l2_n679(x)
- else
- fun_l2_n938(x)
- end
-end
-
-def fun_l1_n987(x)
- if (x < 1)
- fun_l2_n803(x)
- else
- fun_l2_n454(x)
- end
-end
-
-def fun_l1_n988(x)
- if (x < 1)
- fun_l2_n403(x)
- else
- fun_l2_n976(x)
- end
-end
-
-def fun_l1_n989(x)
- if (x < 1)
- fun_l2_n364(x)
- else
- fun_l2_n96(x)
- end
-end
-
-def fun_l1_n990(x)
- if (x < 1)
- fun_l2_n48(x)
- else
- fun_l2_n442(x)
- end
-end
-
-def fun_l1_n991(x)
- if (x < 1)
- fun_l2_n842(x)
- else
- fun_l2_n810(x)
- end
-end
-
-def fun_l1_n992(x)
- if (x < 1)
- fun_l2_n237(x)
- else
- fun_l2_n145(x)
- end
-end
-
-def fun_l1_n993(x)
- if (x < 1)
- fun_l2_n279(x)
- else
- fun_l2_n783(x)
- end
-end
-
-def fun_l1_n994(x)
- if (x < 1)
- fun_l2_n323(x)
- else
- fun_l2_n829(x)
- end
-end
-
-def fun_l1_n995(x)
- if (x < 1)
- fun_l2_n904(x)
- else
- fun_l2_n738(x)
- end
-end
-
-def fun_l1_n996(x)
- if (x < 1)
- fun_l2_n390(x)
- else
- fun_l2_n169(x)
- end
-end
-
-def fun_l1_n997(x)
- if (x < 1)
- fun_l2_n583(x)
- else
- fun_l2_n993(x)
- end
-end
-
-def fun_l1_n998(x)
- if (x < 1)
- fun_l2_n752(x)
- else
- fun_l2_n240(x)
- end
-end
-
-def fun_l1_n999(x)
- if (x < 1)
- fun_l2_n489(x)
- else
- fun_l2_n175(x)
- end
-end
-
-def fun_l2_n0(x)
- if (x < 1)
- fun_l3_n293(x)
- else
- fun_l3_n569(x)
- end
-end
-
-def fun_l2_n1(x)
- if (x < 1)
- fun_l3_n310(x)
- else
- fun_l3_n785(x)
- end
-end
-
-def fun_l2_n2(x)
- if (x < 1)
- fun_l3_n484(x)
- else
- fun_l3_n800(x)
- end
-end
-
-def fun_l2_n3(x)
- if (x < 1)
- fun_l3_n353(x)
- else
- fun_l3_n871(x)
- end
-end
-
-def fun_l2_n4(x)
- if (x < 1)
- fun_l3_n100(x)
- else
- fun_l3_n796(x)
- end
-end
-
-def fun_l2_n5(x)
- if (x < 1)
- fun_l3_n547(x)
- else
- fun_l3_n663(x)
- end
-end
-
-def fun_l2_n6(x)
- if (x < 1)
- fun_l3_n756(x)
- else
- fun_l3_n69(x)
- end
-end
-
-def fun_l2_n7(x)
- if (x < 1)
- fun_l3_n393(x)
- else
- fun_l3_n333(x)
- end
-end
-
-def fun_l2_n8(x)
- if (x < 1)
- fun_l3_n167(x)
- else
- fun_l3_n47(x)
- end
-end
-
-def fun_l2_n9(x)
- if (x < 1)
- fun_l3_n969(x)
- else
- fun_l3_n772(x)
- end
-end
-
-def fun_l2_n10(x)
- if (x < 1)
- fun_l3_n667(x)
- else
- fun_l3_n62(x)
- end
-end
-
-def fun_l2_n11(x)
- if (x < 1)
- fun_l3_n671(x)
- else
- fun_l3_n303(x)
- end
-end
-
-def fun_l2_n12(x)
- if (x < 1)
- fun_l3_n116(x)
- else
- fun_l3_n537(x)
- end
-end
-
-def fun_l2_n13(x)
- if (x < 1)
- fun_l3_n363(x)
- else
- fun_l3_n426(x)
- end
-end
-
-def fun_l2_n14(x)
- if (x < 1)
- fun_l3_n23(x)
- else
- fun_l3_n800(x)
- end
-end
-
-def fun_l2_n15(x)
- if (x < 1)
- fun_l3_n344(x)
- else
- fun_l3_n590(x)
- end
-end
-
-def fun_l2_n16(x)
- if (x < 1)
- fun_l3_n759(x)
- else
- fun_l3_n531(x)
- end
-end
-
-def fun_l2_n17(x)
- if (x < 1)
- fun_l3_n902(x)
- else
- fun_l3_n948(x)
- end
-end
-
-def fun_l2_n18(x)
- if (x < 1)
- fun_l3_n407(x)
- else
- fun_l3_n743(x)
- end
-end
-
-def fun_l2_n19(x)
- if (x < 1)
- fun_l3_n360(x)
- else
- fun_l3_n953(x)
- end
-end
-
-def fun_l2_n20(x)
- if (x < 1)
- fun_l3_n968(x)
- else
- fun_l3_n685(x)
- end
-end
-
-def fun_l2_n21(x)
- if (x < 1)
- fun_l3_n964(x)
- else
- fun_l3_n210(x)
- end
-end
-
-def fun_l2_n22(x)
- if (x < 1)
- fun_l3_n346(x)
- else
- fun_l3_n902(x)
- end
-end
-
-def fun_l2_n23(x)
- if (x < 1)
- fun_l3_n154(x)
- else
- fun_l3_n52(x)
- end
-end
-
-def fun_l2_n24(x)
- if (x < 1)
- fun_l3_n229(x)
- else
- fun_l3_n137(x)
- end
-end
-
-def fun_l2_n25(x)
- if (x < 1)
- fun_l3_n390(x)
- else
- fun_l3_n445(x)
- end
-end
-
-def fun_l2_n26(x)
- if (x < 1)
- fun_l3_n11(x)
- else
- fun_l3_n113(x)
- end
-end
-
-def fun_l2_n27(x)
- if (x < 1)
- fun_l3_n756(x)
- else
- fun_l3_n935(x)
- end
-end
-
-def fun_l2_n28(x)
- if (x < 1)
- fun_l3_n567(x)
- else
- fun_l3_n984(x)
- end
-end
-
-def fun_l2_n29(x)
- if (x < 1)
- fun_l3_n982(x)
- else
- fun_l3_n335(x)
- end
-end
-
-def fun_l2_n30(x)
- if (x < 1)
- fun_l3_n78(x)
- else
- fun_l3_n571(x)
- end
-end
-
-def fun_l2_n31(x)
- if (x < 1)
- fun_l3_n93(x)
- else
- fun_l3_n455(x)
- end
-end
-
-def fun_l2_n32(x)
- if (x < 1)
- fun_l3_n118(x)
- else
- fun_l3_n713(x)
- end
-end
-
-def fun_l2_n33(x)
- if (x < 1)
- fun_l3_n561(x)
- else
- fun_l3_n0(x)
- end
-end
-
-def fun_l2_n34(x)
- if (x < 1)
- fun_l3_n153(x)
- else
- fun_l3_n77(x)
- end
-end
-
-def fun_l2_n35(x)
- if (x < 1)
- fun_l3_n815(x)
- else
- fun_l3_n642(x)
- end
-end
-
-def fun_l2_n36(x)
- if (x < 1)
- fun_l3_n503(x)
- else
- fun_l3_n428(x)
- end
-end
-
-def fun_l2_n37(x)
- if (x < 1)
- fun_l3_n780(x)
- else
- fun_l3_n301(x)
- end
-end
-
-def fun_l2_n38(x)
- if (x < 1)
- fun_l3_n827(x)
- else
- fun_l3_n444(x)
- end
-end
-
-def fun_l2_n39(x)
- if (x < 1)
- fun_l3_n808(x)
- else
- fun_l3_n76(x)
- end
-end
-
-def fun_l2_n40(x)
- if (x < 1)
- fun_l3_n216(x)
- else
- fun_l3_n943(x)
- end
-end
-
-def fun_l2_n41(x)
- if (x < 1)
- fun_l3_n237(x)
- else
- fun_l3_n935(x)
- end
-end
-
-def fun_l2_n42(x)
- if (x < 1)
- fun_l3_n769(x)
- else
- fun_l3_n564(x)
- end
-end
-
-def fun_l2_n43(x)
- if (x < 1)
- fun_l3_n108(x)
- else
- fun_l3_n180(x)
- end
-end
-
-def fun_l2_n44(x)
- if (x < 1)
- fun_l3_n750(x)
- else
- fun_l3_n614(x)
- end
-end
-
-def fun_l2_n45(x)
- if (x < 1)
- fun_l3_n497(x)
- else
- fun_l3_n584(x)
- end
-end
-
-def fun_l2_n46(x)
- if (x < 1)
- fun_l3_n364(x)
- else
- fun_l3_n218(x)
- end
-end
-
-def fun_l2_n47(x)
- if (x < 1)
- fun_l3_n938(x)
- else
- fun_l3_n707(x)
- end
-end
-
-def fun_l2_n48(x)
- if (x < 1)
- fun_l3_n14(x)
- else
- fun_l3_n178(x)
- end
-end
-
-def fun_l2_n49(x)
- if (x < 1)
- fun_l3_n923(x)
- else
- fun_l3_n493(x)
- end
-end
-
-def fun_l2_n50(x)
- if (x < 1)
- fun_l3_n481(x)
- else
- fun_l3_n193(x)
- end
-end
-
-def fun_l2_n51(x)
- if (x < 1)
- fun_l3_n876(x)
- else
- fun_l3_n59(x)
- end
-end
-
-def fun_l2_n52(x)
- if (x < 1)
- fun_l3_n930(x)
- else
- fun_l3_n813(x)
- end
-end
-
-def fun_l2_n53(x)
- if (x < 1)
- fun_l3_n369(x)
- else
- fun_l3_n972(x)
- end
-end
-
-def fun_l2_n54(x)
- if (x < 1)
- fun_l3_n95(x)
- else
- fun_l3_n573(x)
- end
-end
-
-def fun_l2_n55(x)
- if (x < 1)
- fun_l3_n148(x)
- else
- fun_l3_n369(x)
- end
-end
-
-def fun_l2_n56(x)
- if (x < 1)
- fun_l3_n476(x)
- else
- fun_l3_n54(x)
- end
-end
-
-def fun_l2_n57(x)
- if (x < 1)
- fun_l3_n672(x)
- else
- fun_l3_n592(x)
- end
-end
-
-def fun_l2_n58(x)
- if (x < 1)
- fun_l3_n648(x)
- else
- fun_l3_n169(x)
- end
-end
-
-def fun_l2_n59(x)
- if (x < 1)
- fun_l3_n844(x)
- else
- fun_l3_n422(x)
- end
-end
-
-def fun_l2_n60(x)
- if (x < 1)
- fun_l3_n6(x)
- else
- fun_l3_n763(x)
- end
-end
-
-def fun_l2_n61(x)
- if (x < 1)
- fun_l3_n35(x)
- else
- fun_l3_n316(x)
- end
-end
-
-def fun_l2_n62(x)
- if (x < 1)
- fun_l3_n487(x)
- else
- fun_l3_n469(x)
- end
-end
-
-def fun_l2_n63(x)
- if (x < 1)
- fun_l3_n272(x)
- else
- fun_l3_n909(x)
- end
-end
-
-def fun_l2_n64(x)
- if (x < 1)
- fun_l3_n266(x)
- else
- fun_l3_n347(x)
- end
-end
-
-def fun_l2_n65(x)
- if (x < 1)
- fun_l3_n696(x)
- else
- fun_l3_n499(x)
- end
-end
-
-def fun_l2_n66(x)
- if (x < 1)
- fun_l3_n523(x)
- else
- fun_l3_n834(x)
- end
-end
-
-def fun_l2_n67(x)
- if (x < 1)
- fun_l3_n966(x)
- else
- fun_l3_n454(x)
- end
-end
-
-def fun_l2_n68(x)
- if (x < 1)
- fun_l3_n406(x)
- else
- fun_l3_n644(x)
- end
-end
-
-def fun_l2_n69(x)
- if (x < 1)
- fun_l3_n616(x)
- else
- fun_l3_n90(x)
- end
-end
-
-def fun_l2_n70(x)
- if (x < 1)
- fun_l3_n158(x)
- else
- fun_l3_n910(x)
- end
-end
-
-def fun_l2_n71(x)
- if (x < 1)
- fun_l3_n391(x)
- else
- fun_l3_n761(x)
- end
-end
-
-def fun_l2_n72(x)
- if (x < 1)
- fun_l3_n585(x)
- else
- fun_l3_n405(x)
- end
-end
-
-def fun_l2_n73(x)
- if (x < 1)
- fun_l3_n227(x)
- else
- fun_l3_n583(x)
- end
-end
-
-def fun_l2_n74(x)
- if (x < 1)
- fun_l3_n580(x)
- else
- fun_l3_n110(x)
- end
-end
-
-def fun_l2_n75(x)
- if (x < 1)
- fun_l3_n393(x)
- else
- fun_l3_n643(x)
- end
-end
-
-def fun_l2_n76(x)
- if (x < 1)
- fun_l3_n935(x)
- else
- fun_l3_n593(x)
- end
-end
-
-def fun_l2_n77(x)
- if (x < 1)
- fun_l3_n239(x)
- else
- fun_l3_n704(x)
- end
-end
-
-def fun_l2_n78(x)
- if (x < 1)
- fun_l3_n192(x)
- else
- fun_l3_n722(x)
- end
-end
-
-def fun_l2_n79(x)
- if (x < 1)
- fun_l3_n119(x)
- else
- fun_l3_n426(x)
- end
-end
-
-def fun_l2_n80(x)
- if (x < 1)
- fun_l3_n692(x)
- else
- fun_l3_n895(x)
- end
-end
-
-def fun_l2_n81(x)
- if (x < 1)
- fun_l3_n246(x)
- else
- fun_l3_n340(x)
- end
-end
-
-def fun_l2_n82(x)
- if (x < 1)
- fun_l3_n368(x)
- else
- fun_l3_n255(x)
- end
-end
-
-def fun_l2_n83(x)
- if (x < 1)
- fun_l3_n942(x)
- else
- fun_l3_n595(x)
- end
-end
-
-def fun_l2_n84(x)
- if (x < 1)
- fun_l3_n629(x)
- else
- fun_l3_n622(x)
- end
-end
-
-def fun_l2_n85(x)
- if (x < 1)
- fun_l3_n415(x)
- else
- fun_l3_n615(x)
- end
-end
-
-def fun_l2_n86(x)
- if (x < 1)
- fun_l3_n295(x)
- else
- fun_l3_n809(x)
- end
-end
-
-def fun_l2_n87(x)
- if (x < 1)
- fun_l3_n957(x)
- else
- fun_l3_n452(x)
- end
-end
-
-def fun_l2_n88(x)
- if (x < 1)
- fun_l3_n490(x)
- else
- fun_l3_n184(x)
- end
-end
-
-def fun_l2_n89(x)
- if (x < 1)
- fun_l3_n483(x)
- else
- fun_l3_n963(x)
- end
-end
-
-def fun_l2_n90(x)
- if (x < 1)
- fun_l3_n262(x)
- else
- fun_l3_n458(x)
- end
-end
-
-def fun_l2_n91(x)
- if (x < 1)
- fun_l3_n277(x)
- else
- fun_l3_n30(x)
- end
-end
-
-def fun_l2_n92(x)
- if (x < 1)
- fun_l3_n310(x)
- else
- fun_l3_n215(x)
- end
-end
-
-def fun_l2_n93(x)
- if (x < 1)
- fun_l3_n660(x)
- else
- fun_l3_n798(x)
- end
-end
-
-def fun_l2_n94(x)
- if (x < 1)
- fun_l3_n761(x)
- else
- fun_l3_n10(x)
- end
-end
-
-def fun_l2_n95(x)
- if (x < 1)
- fun_l3_n4(x)
- else
- fun_l3_n65(x)
- end
-end
-
-def fun_l2_n96(x)
- if (x < 1)
- fun_l3_n444(x)
- else
- fun_l3_n378(x)
- end
-end
-
-def fun_l2_n97(x)
- if (x < 1)
- fun_l3_n119(x)
- else
- fun_l3_n96(x)
- end
-end
-
-def fun_l2_n98(x)
- if (x < 1)
- fun_l3_n970(x)
- else
- fun_l3_n471(x)
- end
-end
-
-def fun_l2_n99(x)
- if (x < 1)
- fun_l3_n544(x)
- else
- fun_l3_n1(x)
- end
-end
-
-def fun_l2_n100(x)
- if (x < 1)
- fun_l3_n253(x)
- else
- fun_l3_n332(x)
- end
-end
-
-def fun_l2_n101(x)
- if (x < 1)
- fun_l3_n69(x)
- else
- fun_l3_n946(x)
- end
-end
-
-def fun_l2_n102(x)
- if (x < 1)
- fun_l3_n458(x)
- else
- fun_l3_n885(x)
- end
-end
-
-def fun_l2_n103(x)
- if (x < 1)
- fun_l3_n732(x)
- else
- fun_l3_n601(x)
- end
-end
-
-def fun_l2_n104(x)
- if (x < 1)
- fun_l3_n737(x)
- else
- fun_l3_n530(x)
- end
-end
-
-def fun_l2_n105(x)
- if (x < 1)
- fun_l3_n125(x)
- else
- fun_l3_n561(x)
- end
-end
-
-def fun_l2_n106(x)
- if (x < 1)
- fun_l3_n717(x)
- else
- fun_l3_n660(x)
- end
-end
-
-def fun_l2_n107(x)
- if (x < 1)
- fun_l3_n863(x)
- else
- fun_l3_n211(x)
- end
-end
-
-def fun_l2_n108(x)
- if (x < 1)
- fun_l3_n221(x)
- else
- fun_l3_n718(x)
- end
-end
-
-def fun_l2_n109(x)
- if (x < 1)
- fun_l3_n100(x)
- else
- fun_l3_n673(x)
- end
-end
-
-def fun_l2_n110(x)
- if (x < 1)
- fun_l3_n434(x)
- else
- fun_l3_n348(x)
- end
-end
-
-def fun_l2_n111(x)
- if (x < 1)
- fun_l3_n923(x)
- else
- fun_l3_n413(x)
- end
-end
-
-def fun_l2_n112(x)
- if (x < 1)
- fun_l3_n253(x)
- else
- fun_l3_n461(x)
- end
-end
-
-def fun_l2_n113(x)
- if (x < 1)
- fun_l3_n946(x)
- else
- fun_l3_n406(x)
- end
-end
-
-def fun_l2_n114(x)
- if (x < 1)
- fun_l3_n976(x)
- else
- fun_l3_n354(x)
- end
-end
-
-def fun_l2_n115(x)
- if (x < 1)
- fun_l3_n205(x)
- else
- fun_l3_n798(x)
- end
-end
-
-def fun_l2_n116(x)
- if (x < 1)
- fun_l3_n304(x)
- else
- fun_l3_n145(x)
- end
-end
-
-def fun_l2_n117(x)
- if (x < 1)
- fun_l3_n917(x)
- else
- fun_l3_n276(x)
- end
-end
-
-def fun_l2_n118(x)
- if (x < 1)
- fun_l3_n880(x)
- else
- fun_l3_n532(x)
- end
-end
-
-def fun_l2_n119(x)
- if (x < 1)
- fun_l3_n39(x)
- else
- fun_l3_n549(x)
- end
-end
-
-def fun_l2_n120(x)
- if (x < 1)
- fun_l3_n325(x)
- else
- fun_l3_n250(x)
- end
-end
-
-def fun_l2_n121(x)
- if (x < 1)
- fun_l3_n953(x)
- else
- fun_l3_n259(x)
- end
-end
-
-def fun_l2_n122(x)
- if (x < 1)
- fun_l3_n572(x)
- else
- fun_l3_n747(x)
- end
-end
-
-def fun_l2_n123(x)
- if (x < 1)
- fun_l3_n639(x)
- else
- fun_l3_n810(x)
- end
-end
-
-def fun_l2_n124(x)
- if (x < 1)
- fun_l3_n954(x)
- else
- fun_l3_n814(x)
- end
-end
-
-def fun_l2_n125(x)
- if (x < 1)
- fun_l3_n932(x)
- else
- fun_l3_n275(x)
- end
-end
-
-def fun_l2_n126(x)
- if (x < 1)
- fun_l3_n472(x)
- else
- fun_l3_n184(x)
- end
-end
-
-def fun_l2_n127(x)
- if (x < 1)
- fun_l3_n725(x)
- else
- fun_l3_n497(x)
- end
-end
-
-def fun_l2_n128(x)
- if (x < 1)
- fun_l3_n94(x)
- else
- fun_l3_n801(x)
- end
-end
-
-def fun_l2_n129(x)
- if (x < 1)
- fun_l3_n476(x)
- else
- fun_l3_n936(x)
- end
-end
-
-def fun_l2_n130(x)
- if (x < 1)
- fun_l3_n706(x)
- else
- fun_l3_n738(x)
- end
-end
-
-def fun_l2_n131(x)
- if (x < 1)
- fun_l3_n535(x)
- else
- fun_l3_n401(x)
- end
-end
-
-def fun_l2_n132(x)
- if (x < 1)
- fun_l3_n459(x)
- else
- fun_l3_n998(x)
- end
-end
-
-def fun_l2_n133(x)
- if (x < 1)
- fun_l3_n158(x)
- else
- fun_l3_n288(x)
- end
-end
-
-def fun_l2_n134(x)
- if (x < 1)
- fun_l3_n47(x)
- else
- fun_l3_n104(x)
- end
-end
-
-def fun_l2_n135(x)
- if (x < 1)
- fun_l3_n154(x)
- else
- fun_l3_n239(x)
- end
-end
-
-def fun_l2_n136(x)
- if (x < 1)
- fun_l3_n634(x)
- else
- fun_l3_n718(x)
- end
-end
-
-def fun_l2_n137(x)
- if (x < 1)
- fun_l3_n867(x)
- else
- fun_l3_n578(x)
- end
-end
-
-def fun_l2_n138(x)
- if (x < 1)
- fun_l3_n905(x)
- else
- fun_l3_n434(x)
- end
-end
-
-def fun_l2_n139(x)
- if (x < 1)
- fun_l3_n596(x)
- else
- fun_l3_n516(x)
- end
-end
-
-def fun_l2_n140(x)
- if (x < 1)
- fun_l3_n150(x)
- else
- fun_l3_n901(x)
- end
-end
-
-def fun_l2_n141(x)
- if (x < 1)
- fun_l3_n792(x)
- else
- fun_l3_n50(x)
- end
-end
-
-def fun_l2_n142(x)
- if (x < 1)
- fun_l3_n539(x)
- else
- fun_l3_n206(x)
- end
-end
-
-def fun_l2_n143(x)
- if (x < 1)
- fun_l3_n690(x)
- else
- fun_l3_n788(x)
- end
-end
-
-def fun_l2_n144(x)
- if (x < 1)
- fun_l3_n535(x)
- else
- fun_l3_n868(x)
- end
-end
-
-def fun_l2_n145(x)
- if (x < 1)
- fun_l3_n869(x)
- else
- fun_l3_n865(x)
- end
-end
-
-def fun_l2_n146(x)
- if (x < 1)
- fun_l3_n574(x)
- else
- fun_l3_n798(x)
- end
-end
-
-def fun_l2_n147(x)
- if (x < 1)
- fun_l3_n876(x)
- else
- fun_l3_n658(x)
- end
-end
-
-def fun_l2_n148(x)
- if (x < 1)
- fun_l3_n582(x)
- else
- fun_l3_n694(x)
- end
-end
-
-def fun_l2_n149(x)
- if (x < 1)
- fun_l3_n137(x)
- else
- fun_l3_n187(x)
- end
-end
-
-def fun_l2_n150(x)
- if (x < 1)
- fun_l3_n30(x)
- else
- fun_l3_n666(x)
- end
-end
-
-def fun_l2_n151(x)
- if (x < 1)
- fun_l3_n264(x)
- else
- fun_l3_n236(x)
- end
-end
-
-def fun_l2_n152(x)
- if (x < 1)
- fun_l3_n984(x)
- else
- fun_l3_n469(x)
- end
-end
-
-def fun_l2_n153(x)
- if (x < 1)
- fun_l3_n152(x)
- else
- fun_l3_n578(x)
- end
-end
-
-def fun_l2_n154(x)
- if (x < 1)
- fun_l3_n452(x)
- else
- fun_l3_n807(x)
- end
-end
-
-def fun_l2_n155(x)
- if (x < 1)
- fun_l3_n82(x)
- else
- fun_l3_n589(x)
- end
-end
-
-def fun_l2_n156(x)
- if (x < 1)
- fun_l3_n356(x)
- else
- fun_l3_n454(x)
- end
-end
-
-def fun_l2_n157(x)
- if (x < 1)
- fun_l3_n814(x)
- else
- fun_l3_n376(x)
- end
-end
-
-def fun_l2_n158(x)
- if (x < 1)
- fun_l3_n755(x)
- else
- fun_l3_n966(x)
- end
-end
-
-def fun_l2_n159(x)
- if (x < 1)
- fun_l3_n167(x)
- else
- fun_l3_n571(x)
- end
-end
-
-def fun_l2_n160(x)
- if (x < 1)
- fun_l3_n919(x)
- else
- fun_l3_n771(x)
- end
-end
-
-def fun_l2_n161(x)
- if (x < 1)
- fun_l3_n147(x)
- else
- fun_l3_n936(x)
- end
-end
-
-def fun_l2_n162(x)
- if (x < 1)
- fun_l3_n638(x)
- else
- fun_l3_n23(x)
- end
-end
-
-def fun_l2_n163(x)
- if (x < 1)
- fun_l3_n349(x)
- else
- fun_l3_n46(x)
- end
-end
-
-def fun_l2_n164(x)
- if (x < 1)
- fun_l3_n55(x)
- else
- fun_l3_n795(x)
- end
-end
-
-def fun_l2_n165(x)
- if (x < 1)
- fun_l3_n131(x)
- else
- fun_l3_n233(x)
- end
-end
-
-def fun_l2_n166(x)
- if (x < 1)
- fun_l3_n324(x)
- else
- fun_l3_n215(x)
- end
-end
-
-def fun_l2_n167(x)
- if (x < 1)
- fun_l3_n244(x)
- else
- fun_l3_n641(x)
- end
-end
-
-def fun_l2_n168(x)
- if (x < 1)
- fun_l3_n744(x)
- else
- fun_l3_n337(x)
- end
-end
-
-def fun_l2_n169(x)
- if (x < 1)
- fun_l3_n760(x)
- else
- fun_l3_n82(x)
- end
-end
-
-def fun_l2_n170(x)
- if (x < 1)
- fun_l3_n877(x)
- else
- fun_l3_n566(x)
- end
-end
-
-def fun_l2_n171(x)
- if (x < 1)
- fun_l3_n211(x)
- else
- fun_l3_n101(x)
- end
-end
-
-def fun_l2_n172(x)
- if (x < 1)
- fun_l3_n143(x)
- else
- fun_l3_n537(x)
- end
-end
-
-def fun_l2_n173(x)
- if (x < 1)
- fun_l3_n210(x)
- else
- fun_l3_n150(x)
- end
-end
-
-def fun_l2_n174(x)
- if (x < 1)
- fun_l3_n772(x)
- else
- fun_l3_n42(x)
- end
-end
-
-def fun_l2_n175(x)
- if (x < 1)
- fun_l3_n482(x)
- else
- fun_l3_n606(x)
- end
-end
-
-def fun_l2_n176(x)
- if (x < 1)
- fun_l3_n68(x)
- else
- fun_l3_n888(x)
- end
-end
-
-def fun_l2_n177(x)
- if (x < 1)
- fun_l3_n313(x)
- else
- fun_l3_n947(x)
- end
-end
-
-def fun_l2_n178(x)
- if (x < 1)
- fun_l3_n116(x)
- else
- fun_l3_n812(x)
- end
-end
-
-def fun_l2_n179(x)
- if (x < 1)
- fun_l3_n741(x)
- else
- fun_l3_n994(x)
- end
-end
-
-def fun_l2_n180(x)
- if (x < 1)
- fun_l3_n667(x)
- else
- fun_l3_n335(x)
- end
-end
-
-def fun_l2_n181(x)
- if (x < 1)
- fun_l3_n994(x)
- else
- fun_l3_n502(x)
- end
-end
-
-def fun_l2_n182(x)
- if (x < 1)
- fun_l3_n528(x)
- else
- fun_l3_n272(x)
- end
-end
-
-def fun_l2_n183(x)
- if (x < 1)
- fun_l3_n649(x)
- else
- fun_l3_n200(x)
- end
-end
-
-def fun_l2_n184(x)
- if (x < 1)
- fun_l3_n105(x)
- else
- fun_l3_n897(x)
- end
-end
-
-def fun_l2_n185(x)
- if (x < 1)
- fun_l3_n980(x)
- else
- fun_l3_n651(x)
- end
-end
-
-def fun_l2_n186(x)
- if (x < 1)
- fun_l3_n835(x)
- else
- fun_l3_n388(x)
- end
-end
-
-def fun_l2_n187(x)
- if (x < 1)
- fun_l3_n769(x)
- else
- fun_l3_n162(x)
- end
-end
-
-def fun_l2_n188(x)
- if (x < 1)
- fun_l3_n934(x)
- else
- fun_l3_n874(x)
- end
-end
-
-def fun_l2_n189(x)
- if (x < 1)
- fun_l3_n407(x)
- else
- fun_l3_n180(x)
- end
-end
-
-def fun_l2_n190(x)
- if (x < 1)
- fun_l3_n594(x)
- else
- fun_l3_n929(x)
- end
-end
-
-def fun_l2_n191(x)
- if (x < 1)
- fun_l3_n303(x)
- else
- fun_l3_n528(x)
- end
-end
-
-def fun_l2_n192(x)
- if (x < 1)
- fun_l3_n768(x)
- else
- fun_l3_n226(x)
- end
-end
-
-def fun_l2_n193(x)
- if (x < 1)
- fun_l3_n618(x)
- else
- fun_l3_n821(x)
- end
-end
-
-def fun_l2_n194(x)
- if (x < 1)
- fun_l3_n953(x)
- else
- fun_l3_n969(x)
- end
-end
-
-def fun_l2_n195(x)
- if (x < 1)
- fun_l3_n574(x)
- else
- fun_l3_n344(x)
- end
-end
-
-def fun_l2_n196(x)
- if (x < 1)
- fun_l3_n943(x)
- else
- fun_l3_n304(x)
- end
-end
-
-def fun_l2_n197(x)
- if (x < 1)
- fun_l3_n276(x)
- else
- fun_l3_n502(x)
- end
-end
-
-def fun_l2_n198(x)
- if (x < 1)
- fun_l3_n597(x)
- else
- fun_l3_n197(x)
- end
-end
-
-def fun_l2_n199(x)
- if (x < 1)
- fun_l3_n517(x)
- else
- fun_l3_n34(x)
- end
-end
-
-def fun_l2_n200(x)
- if (x < 1)
- fun_l3_n980(x)
- else
- fun_l3_n672(x)
- end
-end
-
-def fun_l2_n201(x)
- if (x < 1)
- fun_l3_n510(x)
- else
- fun_l3_n804(x)
- end
-end
-
-def fun_l2_n202(x)
- if (x < 1)
- fun_l3_n735(x)
- else
- fun_l3_n367(x)
- end
-end
-
-def fun_l2_n203(x)
- if (x < 1)
- fun_l3_n546(x)
- else
- fun_l3_n502(x)
- end
-end
-
-def fun_l2_n204(x)
- if (x < 1)
- fun_l3_n189(x)
- else
- fun_l3_n639(x)
- end
-end
-
-def fun_l2_n205(x)
- if (x < 1)
- fun_l3_n396(x)
- else
- fun_l3_n862(x)
- end
-end
-
-def fun_l2_n206(x)
- if (x < 1)
- fun_l3_n679(x)
- else
- fun_l3_n881(x)
- end
-end
-
-def fun_l2_n207(x)
- if (x < 1)
- fun_l3_n342(x)
- else
- fun_l3_n522(x)
- end
-end
-
-def fun_l2_n208(x)
- if (x < 1)
- fun_l3_n173(x)
- else
- fun_l3_n323(x)
- end
-end
-
-def fun_l2_n209(x)
- if (x < 1)
- fun_l3_n693(x)
- else
- fun_l3_n160(x)
- end
-end
-
-def fun_l2_n210(x)
- if (x < 1)
- fun_l3_n827(x)
- else
- fun_l3_n580(x)
- end
-end
-
-def fun_l2_n211(x)
- if (x < 1)
- fun_l3_n213(x)
- else
- fun_l3_n100(x)
- end
-end
-
-def fun_l2_n212(x)
- if (x < 1)
- fun_l3_n915(x)
- else
- fun_l3_n531(x)
- end
-end
-
-def fun_l2_n213(x)
- if (x < 1)
- fun_l3_n260(x)
- else
- fun_l3_n279(x)
- end
-end
-
-def fun_l2_n214(x)
- if (x < 1)
- fun_l3_n468(x)
- else
- fun_l3_n257(x)
- end
-end
-
-def fun_l2_n215(x)
- if (x < 1)
- fun_l3_n990(x)
- else
- fun_l3_n740(x)
- end
-end
-
-def fun_l2_n216(x)
- if (x < 1)
- fun_l3_n291(x)
- else
- fun_l3_n625(x)
- end
-end
-
-def fun_l2_n217(x)
- if (x < 1)
- fun_l3_n493(x)
- else
- fun_l3_n726(x)
- end
-end
-
-def fun_l2_n218(x)
- if (x < 1)
- fun_l3_n714(x)
- else
- fun_l3_n793(x)
- end
-end
-
-def fun_l2_n219(x)
- if (x < 1)
- fun_l3_n683(x)
- else
- fun_l3_n715(x)
- end
-end
-
-def fun_l2_n220(x)
- if (x < 1)
- fun_l3_n249(x)
- else
- fun_l3_n266(x)
- end
-end
-
-def fun_l2_n221(x)
- if (x < 1)
- fun_l3_n324(x)
- else
- fun_l3_n22(x)
- end
-end
-
-def fun_l2_n222(x)
- if (x < 1)
- fun_l3_n978(x)
- else
- fun_l3_n885(x)
- end
-end
-
-def fun_l2_n223(x)
- if (x < 1)
- fun_l3_n821(x)
- else
- fun_l3_n412(x)
- end
-end
-
-def fun_l2_n224(x)
- if (x < 1)
- fun_l3_n636(x)
- else
- fun_l3_n641(x)
- end
-end
-
-def fun_l2_n225(x)
- if (x < 1)
- fun_l3_n971(x)
- else
- fun_l3_n288(x)
- end
-end
-
-def fun_l2_n226(x)
- if (x < 1)
- fun_l3_n429(x)
- else
- fun_l3_n323(x)
- end
-end
-
-def fun_l2_n227(x)
- if (x < 1)
- fun_l3_n909(x)
- else
- fun_l3_n267(x)
- end
-end
-
-def fun_l2_n228(x)
- if (x < 1)
- fun_l3_n437(x)
- else
- fun_l3_n985(x)
- end
-end
-
-def fun_l2_n229(x)
- if (x < 1)
- fun_l3_n131(x)
- else
- fun_l3_n298(x)
- end
-end
-
-def fun_l2_n230(x)
- if (x < 1)
- fun_l3_n865(x)
- else
- fun_l3_n288(x)
- end
-end
-
-def fun_l2_n231(x)
- if (x < 1)
- fun_l3_n772(x)
- else
- fun_l3_n531(x)
- end
-end
-
-def fun_l2_n232(x)
- if (x < 1)
- fun_l3_n30(x)
- else
- fun_l3_n422(x)
- end
-end
-
-def fun_l2_n233(x)
- if (x < 1)
- fun_l3_n82(x)
- else
- fun_l3_n32(x)
- end
-end
-
-def fun_l2_n234(x)
- if (x < 1)
- fun_l3_n25(x)
- else
- fun_l3_n518(x)
- end
-end
-
-def fun_l2_n235(x)
- if (x < 1)
- fun_l3_n313(x)
- else
- fun_l3_n179(x)
- end
-end
-
-def fun_l2_n236(x)
- if (x < 1)
- fun_l3_n819(x)
- else
- fun_l3_n586(x)
- end
-end
-
-def fun_l2_n237(x)
- if (x < 1)
- fun_l3_n398(x)
- else
- fun_l3_n921(x)
- end
-end
-
-def fun_l2_n238(x)
- if (x < 1)
- fun_l3_n667(x)
- else
- fun_l3_n795(x)
- end
-end
-
-def fun_l2_n239(x)
- if (x < 1)
- fun_l3_n862(x)
- else
- fun_l3_n222(x)
- end
-end
-
-def fun_l2_n240(x)
- if (x < 1)
- fun_l3_n968(x)
- else
- fun_l3_n320(x)
- end
-end
-
-def fun_l2_n241(x)
- if (x < 1)
- fun_l3_n559(x)
- else
- fun_l3_n50(x)
- end
-end
-
-def fun_l2_n242(x)
- if (x < 1)
- fun_l3_n647(x)
- else
- fun_l3_n232(x)
- end
-end
-
-def fun_l2_n243(x)
- if (x < 1)
- fun_l3_n425(x)
- else
- fun_l3_n815(x)
- end
-end
-
-def fun_l2_n244(x)
- if (x < 1)
- fun_l3_n752(x)
- else
- fun_l3_n690(x)
- end
-end
-
-def fun_l2_n245(x)
- if (x < 1)
- fun_l3_n382(x)
- else
- fun_l3_n817(x)
- end
-end
-
-def fun_l2_n246(x)
- if (x < 1)
- fun_l3_n880(x)
- else
- fun_l3_n380(x)
- end
-end
-
-def fun_l2_n247(x)
- if (x < 1)
- fun_l3_n444(x)
- else
- fun_l3_n75(x)
- end
-end
-
-def fun_l2_n248(x)
- if (x < 1)
- fun_l3_n368(x)
- else
- fun_l3_n314(x)
- end
-end
-
-def fun_l2_n249(x)
- if (x < 1)
- fun_l3_n131(x)
- else
- fun_l3_n398(x)
- end
-end
-
-def fun_l2_n250(x)
- if (x < 1)
- fun_l3_n376(x)
- else
- fun_l3_n449(x)
- end
-end
-
-def fun_l2_n251(x)
- if (x < 1)
- fun_l3_n404(x)
- else
- fun_l3_n301(x)
- end
-end
-
-def fun_l2_n252(x)
- if (x < 1)
- fun_l3_n274(x)
- else
- fun_l3_n430(x)
- end
-end
-
-def fun_l2_n253(x)
- if (x < 1)
- fun_l3_n734(x)
- else
- fun_l3_n255(x)
- end
-end
-
-def fun_l2_n254(x)
- if (x < 1)
- fun_l3_n30(x)
- else
- fun_l3_n944(x)
- end
-end
-
-def fun_l2_n255(x)
- if (x < 1)
- fun_l3_n978(x)
- else
- fun_l3_n898(x)
- end
-end
-
-def fun_l2_n256(x)
- if (x < 1)
- fun_l3_n175(x)
- else
- fun_l3_n477(x)
- end
-end
-
-def fun_l2_n257(x)
- if (x < 1)
- fun_l3_n84(x)
- else
- fun_l3_n772(x)
- end
-end
-
-def fun_l2_n258(x)
- if (x < 1)
- fun_l3_n605(x)
- else
- fun_l3_n144(x)
- end
-end
-
-def fun_l2_n259(x)
- if (x < 1)
- fun_l3_n51(x)
- else
- fun_l3_n542(x)
- end
-end
-
-def fun_l2_n260(x)
- if (x < 1)
- fun_l3_n940(x)
- else
- fun_l3_n316(x)
- end
-end
-
-def fun_l2_n261(x)
- if (x < 1)
- fun_l3_n702(x)
- else
- fun_l3_n197(x)
- end
-end
-
-def fun_l2_n262(x)
- if (x < 1)
- fun_l3_n164(x)
- else
- fun_l3_n21(x)
- end
-end
-
-def fun_l2_n263(x)
- if (x < 1)
- fun_l3_n432(x)
- else
- fun_l3_n496(x)
- end
-end
-
-def fun_l2_n264(x)
- if (x < 1)
- fun_l3_n265(x)
- else
- fun_l3_n40(x)
- end
-end
-
-def fun_l2_n265(x)
- if (x < 1)
- fun_l3_n951(x)
- else
- fun_l3_n723(x)
- end
-end
-
-def fun_l2_n266(x)
- if (x < 1)
- fun_l3_n279(x)
- else
- fun_l3_n167(x)
- end
-end
-
-def fun_l2_n267(x)
- if (x < 1)
- fun_l3_n51(x)
- else
- fun_l3_n283(x)
- end
-end
-
-def fun_l2_n268(x)
- if (x < 1)
- fun_l3_n389(x)
- else
- fun_l3_n264(x)
- end
-end
-
-def fun_l2_n269(x)
- if (x < 1)
- fun_l3_n68(x)
- else
- fun_l3_n484(x)
- end
-end
-
-def fun_l2_n270(x)
- if (x < 1)
- fun_l3_n435(x)
- else
- fun_l3_n204(x)
- end
-end
-
-def fun_l2_n271(x)
- if (x < 1)
- fun_l3_n717(x)
- else
- fun_l3_n763(x)
- end
-end
-
-def fun_l2_n272(x)
- if (x < 1)
- fun_l3_n901(x)
- else
- fun_l3_n332(x)
- end
-end
-
-def fun_l2_n273(x)
- if (x < 1)
- fun_l3_n358(x)
- else
- fun_l3_n608(x)
- end
-end
-
-def fun_l2_n274(x)
- if (x < 1)
- fun_l3_n885(x)
- else
- fun_l3_n490(x)
- end
-end
-
-def fun_l2_n275(x)
- if (x < 1)
- fun_l3_n82(x)
- else
- fun_l3_n87(x)
- end
-end
-
-def fun_l2_n276(x)
- if (x < 1)
- fun_l3_n698(x)
- else
- fun_l3_n846(x)
- end
-end
-
-def fun_l2_n277(x)
- if (x < 1)
- fun_l3_n690(x)
- else
- fun_l3_n457(x)
- end
-end
-
-def fun_l2_n278(x)
- if (x < 1)
- fun_l3_n925(x)
- else
- fun_l3_n674(x)
- end
-end
-
-def fun_l2_n279(x)
- if (x < 1)
- fun_l3_n797(x)
- else
- fun_l3_n315(x)
- end
-end
-
-def fun_l2_n280(x)
- if (x < 1)
- fun_l3_n73(x)
- else
- fun_l3_n2(x)
- end
-end
-
-def fun_l2_n281(x)
- if (x < 1)
- fun_l3_n301(x)
- else
- fun_l3_n315(x)
- end
-end
-
-def fun_l2_n282(x)
- if (x < 1)
- fun_l3_n473(x)
- else
- fun_l3_n639(x)
- end
-end
-
-def fun_l2_n283(x)
- if (x < 1)
- fun_l3_n812(x)
- else
- fun_l3_n241(x)
- end
-end
-
-def fun_l2_n284(x)
- if (x < 1)
- fun_l3_n0(x)
- else
- fun_l3_n445(x)
- end
-end
-
-def fun_l2_n285(x)
- if (x < 1)
- fun_l3_n587(x)
- else
- fun_l3_n806(x)
- end
-end
-
-def fun_l2_n286(x)
- if (x < 1)
- fun_l3_n169(x)
- else
- fun_l3_n546(x)
- end
-end
-
-def fun_l2_n287(x)
- if (x < 1)
- fun_l3_n623(x)
- else
- fun_l3_n677(x)
- end
-end
-
-def fun_l2_n288(x)
- if (x < 1)
- fun_l3_n804(x)
- else
- fun_l3_n80(x)
- end
-end
-
-def fun_l2_n289(x)
- if (x < 1)
- fun_l3_n812(x)
- else
- fun_l3_n197(x)
- end
-end
-
-def fun_l2_n290(x)
- if (x < 1)
- fun_l3_n551(x)
- else
- fun_l3_n896(x)
- end
-end
-
-def fun_l2_n291(x)
- if (x < 1)
- fun_l3_n686(x)
- else
- fun_l3_n884(x)
- end
-end
-
-def fun_l2_n292(x)
- if (x < 1)
- fun_l3_n427(x)
- else
- fun_l3_n251(x)
- end
-end
-
-def fun_l2_n293(x)
- if (x < 1)
- fun_l3_n375(x)
- else
- fun_l3_n309(x)
- end
-end
-
-def fun_l2_n294(x)
- if (x < 1)
- fun_l3_n371(x)
- else
- fun_l3_n184(x)
- end
-end
-
-def fun_l2_n295(x)
- if (x < 1)
- fun_l3_n332(x)
- else
- fun_l3_n250(x)
- end
-end
-
-def fun_l2_n296(x)
- if (x < 1)
- fun_l3_n333(x)
- else
- fun_l3_n254(x)
- end
-end
-
-def fun_l2_n297(x)
- if (x < 1)
- fun_l3_n24(x)
- else
- fun_l3_n528(x)
- end
-end
-
-def fun_l2_n298(x)
- if (x < 1)
- fun_l3_n96(x)
- else
- fun_l3_n653(x)
- end
-end
-
-def fun_l2_n299(x)
- if (x < 1)
- fun_l3_n920(x)
- else
- fun_l3_n475(x)
- end
-end
-
-def fun_l2_n300(x)
- if (x < 1)
- fun_l3_n337(x)
- else
- fun_l3_n378(x)
- end
-end
-
-def fun_l2_n301(x)
- if (x < 1)
- fun_l3_n778(x)
- else
- fun_l3_n216(x)
- end
-end
-
-def fun_l2_n302(x)
- if (x < 1)
- fun_l3_n366(x)
- else
- fun_l3_n562(x)
- end
-end
-
-def fun_l2_n303(x)
- if (x < 1)
- fun_l3_n656(x)
- else
- fun_l3_n779(x)
- end
-end
-
-def fun_l2_n304(x)
- if (x < 1)
- fun_l3_n526(x)
- else
- fun_l3_n783(x)
- end
-end
-
-def fun_l2_n305(x)
- if (x < 1)
- fun_l3_n500(x)
- else
- fun_l3_n744(x)
- end
-end
-
-def fun_l2_n306(x)
- if (x < 1)
- fun_l3_n953(x)
- else
- fun_l3_n394(x)
- end
-end
-
-def fun_l2_n307(x)
- if (x < 1)
- fun_l3_n385(x)
- else
- fun_l3_n937(x)
- end
-end
-
-def fun_l2_n308(x)
- if (x < 1)
- fun_l3_n742(x)
- else
- fun_l3_n984(x)
- end
-end
-
-def fun_l2_n309(x)
- if (x < 1)
- fun_l3_n388(x)
- else
- fun_l3_n704(x)
- end
-end
-
-def fun_l2_n310(x)
- if (x < 1)
- fun_l3_n252(x)
- else
- fun_l3_n585(x)
- end
-end
-
-def fun_l2_n311(x)
- if (x < 1)
- fun_l3_n121(x)
- else
- fun_l3_n815(x)
- end
-end
-
-def fun_l2_n312(x)
- if (x < 1)
- fun_l3_n657(x)
- else
- fun_l3_n338(x)
- end
-end
-
-def fun_l2_n313(x)
- if (x < 1)
- fun_l3_n115(x)
- else
- fun_l3_n748(x)
- end
-end
-
-def fun_l2_n314(x)
- if (x < 1)
- fun_l3_n237(x)
- else
- fun_l3_n319(x)
- end
-end
-
-def fun_l2_n315(x)
- if (x < 1)
- fun_l3_n684(x)
- else
- fun_l3_n428(x)
- end
-end
-
-def fun_l2_n316(x)
- if (x < 1)
- fun_l3_n416(x)
- else
- fun_l3_n499(x)
- end
-end
-
-def fun_l2_n317(x)
- if (x < 1)
- fun_l3_n305(x)
- else
- fun_l3_n888(x)
- end
-end
-
-def fun_l2_n318(x)
- if (x < 1)
- fun_l3_n506(x)
- else
- fun_l3_n579(x)
- end
-end
-
-def fun_l2_n319(x)
- if (x < 1)
- fun_l3_n324(x)
- else
- fun_l3_n459(x)
- end
-end
-
-def fun_l2_n320(x)
- if (x < 1)
- fun_l3_n278(x)
- else
- fun_l3_n89(x)
- end
-end
-
-def fun_l2_n321(x)
- if (x < 1)
- fun_l3_n319(x)
- else
- fun_l3_n903(x)
- end
-end
-
-def fun_l2_n322(x)
- if (x < 1)
- fun_l3_n96(x)
- else
- fun_l3_n334(x)
- end
-end
-
-def fun_l2_n323(x)
- if (x < 1)
- fun_l3_n913(x)
- else
- fun_l3_n309(x)
- end
-end
-
-def fun_l2_n324(x)
- if (x < 1)
- fun_l3_n186(x)
- else
- fun_l3_n453(x)
- end
-end
-
-def fun_l2_n325(x)
- if (x < 1)
- fun_l3_n223(x)
- else
- fun_l3_n761(x)
- end
-end
-
-def fun_l2_n326(x)
- if (x < 1)
- fun_l3_n757(x)
- else
- fun_l3_n700(x)
- end
-end
-
-def fun_l2_n327(x)
- if (x < 1)
- fun_l3_n316(x)
- else
- fun_l3_n3(x)
- end
-end
-
-def fun_l2_n328(x)
- if (x < 1)
- fun_l3_n680(x)
- else
- fun_l3_n275(x)
- end
-end
-
-def fun_l2_n329(x)
- if (x < 1)
- fun_l3_n731(x)
- else
- fun_l3_n971(x)
- end
-end
-
-def fun_l2_n330(x)
- if (x < 1)
- fun_l3_n672(x)
- else
- fun_l3_n389(x)
- end
-end
-
-def fun_l2_n331(x)
- if (x < 1)
- fun_l3_n947(x)
- else
- fun_l3_n778(x)
- end
-end
-
-def fun_l2_n332(x)
- if (x < 1)
- fun_l3_n23(x)
- else
- fun_l3_n478(x)
- end
-end
-
-def fun_l2_n333(x)
- if (x < 1)
- fun_l3_n778(x)
- else
- fun_l3_n894(x)
- end
-end
-
-def fun_l2_n334(x)
- if (x < 1)
- fun_l3_n198(x)
- else
- fun_l3_n830(x)
- end
-end
-
-def fun_l2_n335(x)
- if (x < 1)
- fun_l3_n874(x)
- else
- fun_l3_n861(x)
- end
-end
-
-def fun_l2_n336(x)
- if (x < 1)
- fun_l3_n66(x)
- else
- fun_l3_n47(x)
- end
-end
-
-def fun_l2_n337(x)
- if (x < 1)
- fun_l3_n65(x)
- else
- fun_l3_n849(x)
- end
-end
-
-def fun_l2_n338(x)
- if (x < 1)
- fun_l3_n122(x)
- else
- fun_l3_n891(x)
- end
-end
-
-def fun_l2_n339(x)
- if (x < 1)
- fun_l3_n377(x)
- else
- fun_l3_n862(x)
- end
-end
-
-def fun_l2_n340(x)
- if (x < 1)
- fun_l3_n278(x)
- else
- fun_l3_n495(x)
- end
-end
-
-def fun_l2_n341(x)
- if (x < 1)
- fun_l3_n396(x)
- else
- fun_l3_n842(x)
- end
-end
-
-def fun_l2_n342(x)
- if (x < 1)
- fun_l3_n971(x)
- else
- fun_l3_n296(x)
- end
-end
-
-def fun_l2_n343(x)
- if (x < 1)
- fun_l3_n137(x)
- else
- fun_l3_n815(x)
- end
-end
-
-def fun_l2_n344(x)
- if (x < 1)
- fun_l3_n910(x)
- else
- fun_l3_n515(x)
- end
-end
-
-def fun_l2_n345(x)
- if (x < 1)
- fun_l3_n415(x)
- else
- fun_l3_n766(x)
- end
-end
-
-def fun_l2_n346(x)
- if (x < 1)
- fun_l3_n816(x)
- else
- fun_l3_n169(x)
- end
-end
-
-def fun_l2_n347(x)
- if (x < 1)
- fun_l3_n223(x)
- else
- fun_l3_n776(x)
- end
-end
-
-def fun_l2_n348(x)
- if (x < 1)
- fun_l3_n316(x)
- else
- fun_l3_n497(x)
- end
-end
-
-def fun_l2_n349(x)
- if (x < 1)
- fun_l3_n116(x)
- else
- fun_l3_n536(x)
- end
-end
-
-def fun_l2_n350(x)
- if (x < 1)
- fun_l3_n252(x)
- else
- fun_l3_n981(x)
- end
-end
-
-def fun_l2_n351(x)
- if (x < 1)
- fun_l3_n783(x)
- else
- fun_l3_n596(x)
- end
-end
-
-def fun_l2_n352(x)
- if (x < 1)
- fun_l3_n72(x)
- else
- fun_l3_n978(x)
- end
-end
-
-def fun_l2_n353(x)
- if (x < 1)
- fun_l3_n910(x)
- else
- fun_l3_n493(x)
- end
-end
-
-def fun_l2_n354(x)
- if (x < 1)
- fun_l3_n671(x)
- else
- fun_l3_n297(x)
- end
-end
-
-def fun_l2_n355(x)
- if (x < 1)
- fun_l3_n820(x)
- else
- fun_l3_n456(x)
- end
-end
-
-def fun_l2_n356(x)
- if (x < 1)
- fun_l3_n23(x)
- else
- fun_l3_n760(x)
- end
-end
-
-def fun_l2_n357(x)
- if (x < 1)
- fun_l3_n676(x)
- else
- fun_l3_n531(x)
- end
-end
-
-def fun_l2_n358(x)
- if (x < 1)
- fun_l3_n849(x)
- else
- fun_l3_n592(x)
- end
-end
-
-def fun_l2_n359(x)
- if (x < 1)
- fun_l3_n492(x)
- else
- fun_l3_n845(x)
- end
-end
-
-def fun_l2_n360(x)
- if (x < 1)
- fun_l3_n58(x)
- else
- fun_l3_n896(x)
- end
-end
-
-def fun_l2_n361(x)
- if (x < 1)
- fun_l3_n427(x)
- else
- fun_l3_n434(x)
- end
-end
-
-def fun_l2_n362(x)
- if (x < 1)
- fun_l3_n129(x)
- else
- fun_l3_n582(x)
- end
-end
-
-def fun_l2_n363(x)
- if (x < 1)
- fun_l3_n901(x)
- else
- fun_l3_n405(x)
- end
-end
-
-def fun_l2_n364(x)
- if (x < 1)
- fun_l3_n577(x)
- else
- fun_l3_n550(x)
- end
-end
-
-def fun_l2_n365(x)
- if (x < 1)
- fun_l3_n717(x)
- else
- fun_l3_n660(x)
- end
-end
-
-def fun_l2_n366(x)
- if (x < 1)
- fun_l3_n605(x)
- else
- fun_l3_n755(x)
- end
-end
-
-def fun_l2_n367(x)
- if (x < 1)
- fun_l3_n875(x)
- else
- fun_l3_n784(x)
- end
-end
-
-def fun_l2_n368(x)
- if (x < 1)
- fun_l3_n914(x)
- else
- fun_l3_n351(x)
- end
-end
-
-def fun_l2_n369(x)
- if (x < 1)
- fun_l3_n684(x)
- else
- fun_l3_n932(x)
- end
-end
-
-def fun_l2_n370(x)
- if (x < 1)
- fun_l3_n796(x)
- else
- fun_l3_n920(x)
- end
-end
-
-def fun_l2_n371(x)
- if (x < 1)
- fun_l3_n456(x)
- else
- fun_l3_n188(x)
- end
-end
-
-def fun_l2_n372(x)
- if (x < 1)
- fun_l3_n891(x)
- else
- fun_l3_n905(x)
- end
-end
-
-def fun_l2_n373(x)
- if (x < 1)
- fun_l3_n906(x)
- else
- fun_l3_n993(x)
- end
-end
-
-def fun_l2_n374(x)
- if (x < 1)
- fun_l3_n811(x)
- else
- fun_l3_n629(x)
- end
-end
-
-def fun_l2_n375(x)
- if (x < 1)
- fun_l3_n5(x)
- else
- fun_l3_n304(x)
- end
-end
-
-def fun_l2_n376(x)
- if (x < 1)
- fun_l3_n240(x)
- else
- fun_l3_n859(x)
- end
-end
-
-def fun_l2_n377(x)
- if (x < 1)
- fun_l3_n346(x)
- else
- fun_l3_n196(x)
- end
-end
-
-def fun_l2_n378(x)
- if (x < 1)
- fun_l3_n918(x)
- else
- fun_l3_n371(x)
- end
-end
-
-def fun_l2_n379(x)
- if (x < 1)
- fun_l3_n112(x)
- else
- fun_l3_n269(x)
- end
-end
-
-def fun_l2_n380(x)
- if (x < 1)
- fun_l3_n46(x)
- else
- fun_l3_n397(x)
- end
-end
-
-def fun_l2_n381(x)
- if (x < 1)
- fun_l3_n977(x)
- else
- fun_l3_n647(x)
- end
-end
-
-def fun_l2_n382(x)
- if (x < 1)
- fun_l3_n788(x)
- else
- fun_l3_n418(x)
- end
-end
-
-def fun_l2_n383(x)
- if (x < 1)
- fun_l3_n395(x)
- else
- fun_l3_n268(x)
- end
-end
-
-def fun_l2_n384(x)
- if (x < 1)
- fun_l3_n39(x)
- else
- fun_l3_n950(x)
- end
-end
-
-def fun_l2_n385(x)
- if (x < 1)
- fun_l3_n301(x)
- else
- fun_l3_n241(x)
- end
-end
-
-def fun_l2_n386(x)
- if (x < 1)
- fun_l3_n936(x)
- else
- fun_l3_n416(x)
- end
-end
-
-def fun_l2_n387(x)
- if (x < 1)
- fun_l3_n750(x)
- else
- fun_l3_n152(x)
- end
-end
-
-def fun_l2_n388(x)
- if (x < 1)
- fun_l3_n210(x)
- else
- fun_l3_n824(x)
- end
-end
-
-def fun_l2_n389(x)
- if (x < 1)
- fun_l3_n3(x)
- else
- fun_l3_n872(x)
- end
-end
-
-def fun_l2_n390(x)
- if (x < 1)
- fun_l3_n944(x)
- else
- fun_l3_n49(x)
- end
-end
-
-def fun_l2_n391(x)
- if (x < 1)
- fun_l3_n645(x)
- else
- fun_l3_n604(x)
- end
-end
-
-def fun_l2_n392(x)
- if (x < 1)
- fun_l3_n539(x)
- else
- fun_l3_n374(x)
- end
-end
-
-def fun_l2_n393(x)
- if (x < 1)
- fun_l3_n728(x)
- else
- fun_l3_n620(x)
- end
-end
-
-def fun_l2_n394(x)
- if (x < 1)
- fun_l3_n538(x)
- else
- fun_l3_n233(x)
- end
-end
-
-def fun_l2_n395(x)
- if (x < 1)
- fun_l3_n977(x)
- else
- fun_l3_n351(x)
- end
-end
-
-def fun_l2_n396(x)
- if (x < 1)
- fun_l3_n54(x)
- else
- fun_l3_n958(x)
- end
-end
-
-def fun_l2_n397(x)
- if (x < 1)
- fun_l3_n237(x)
- else
- fun_l3_n54(x)
- end
-end
-
-def fun_l2_n398(x)
- if (x < 1)
- fun_l3_n846(x)
- else
- fun_l3_n234(x)
- end
-end
-
-def fun_l2_n399(x)
- if (x < 1)
- fun_l3_n934(x)
- else
- fun_l3_n128(x)
- end
-end
-
-def fun_l2_n400(x)
- if (x < 1)
- fun_l3_n15(x)
- else
- fun_l3_n288(x)
- end
-end
-
-def fun_l2_n401(x)
- if (x < 1)
- fun_l3_n944(x)
- else
- fun_l3_n455(x)
- end
-end
-
-def fun_l2_n402(x)
- if (x < 1)
- fun_l3_n962(x)
- else
- fun_l3_n785(x)
- end
-end
-
-def fun_l2_n403(x)
- if (x < 1)
- fun_l3_n408(x)
- else
- fun_l3_n689(x)
- end
-end
-
-def fun_l2_n404(x)
- if (x < 1)
- fun_l3_n722(x)
- else
- fun_l3_n704(x)
- end
-end
-
-def fun_l2_n405(x)
- if (x < 1)
- fun_l3_n410(x)
- else
- fun_l3_n543(x)
- end
-end
-
-def fun_l2_n406(x)
- if (x < 1)
- fun_l3_n953(x)
- else
- fun_l3_n351(x)
- end
-end
-
-def fun_l2_n407(x)
- if (x < 1)
- fun_l3_n426(x)
- else
- fun_l3_n467(x)
- end
-end
-
-def fun_l2_n408(x)
- if (x < 1)
- fun_l3_n204(x)
- else
- fun_l3_n163(x)
- end
-end
-
-def fun_l2_n409(x)
- if (x < 1)
- fun_l3_n418(x)
- else
- fun_l3_n896(x)
- end
-end
-
-def fun_l2_n410(x)
- if (x < 1)
- fun_l3_n915(x)
- else
- fun_l3_n800(x)
- end
-end
-
-def fun_l2_n411(x)
- if (x < 1)
- fun_l3_n580(x)
- else
- fun_l3_n507(x)
- end
-end
-
-def fun_l2_n412(x)
- if (x < 1)
- fun_l3_n672(x)
- else
- fun_l3_n938(x)
- end
-end
-
-def fun_l2_n413(x)
- if (x < 1)
- fun_l3_n112(x)
- else
- fun_l3_n927(x)
- end
-end
-
-def fun_l2_n414(x)
- if (x < 1)
- fun_l3_n801(x)
- else
- fun_l3_n604(x)
- end
-end
-
-def fun_l2_n415(x)
- if (x < 1)
- fun_l3_n773(x)
- else
- fun_l3_n951(x)
- end
-end
-
-def fun_l2_n416(x)
- if (x < 1)
- fun_l3_n335(x)
- else
- fun_l3_n157(x)
- end
-end
-
-def fun_l2_n417(x)
- if (x < 1)
- fun_l3_n480(x)
- else
- fun_l3_n106(x)
- end
-end
-
-def fun_l2_n418(x)
- if (x < 1)
- fun_l3_n523(x)
- else
- fun_l3_n969(x)
- end
-end
-
-def fun_l2_n419(x)
- if (x < 1)
- fun_l3_n371(x)
- else
- fun_l3_n698(x)
- end
-end
-
-def fun_l2_n420(x)
- if (x < 1)
- fun_l3_n102(x)
- else
- fun_l3_n47(x)
- end
-end
-
-def fun_l2_n421(x)
- if (x < 1)
- fun_l3_n64(x)
- else
- fun_l3_n574(x)
- end
-end
-
-def fun_l2_n422(x)
- if (x < 1)
- fun_l3_n208(x)
- else
- fun_l3_n904(x)
- end
-end
-
-def fun_l2_n423(x)
- if (x < 1)
- fun_l3_n715(x)
- else
- fun_l3_n414(x)
- end
-end
-
-def fun_l2_n424(x)
- if (x < 1)
- fun_l3_n455(x)
- else
- fun_l3_n219(x)
- end
-end
-
-def fun_l2_n425(x)
- if (x < 1)
- fun_l3_n210(x)
- else
- fun_l3_n160(x)
- end
-end
-
-def fun_l2_n426(x)
- if (x < 1)
- fun_l3_n729(x)
- else
- fun_l3_n512(x)
- end
-end
-
-def fun_l2_n427(x)
- if (x < 1)
- fun_l3_n159(x)
- else
- fun_l3_n482(x)
- end
-end
-
-def fun_l2_n428(x)
- if (x < 1)
- fun_l3_n182(x)
- else
- fun_l3_n687(x)
- end
-end
-
-def fun_l2_n429(x)
- if (x < 1)
- fun_l3_n690(x)
- else
- fun_l3_n856(x)
- end
-end
-
-def fun_l2_n430(x)
- if (x < 1)
- fun_l3_n494(x)
- else
- fun_l3_n365(x)
- end
-end
-
-def fun_l2_n431(x)
- if (x < 1)
- fun_l3_n346(x)
- else
- fun_l3_n82(x)
- end
-end
-
-def fun_l2_n432(x)
- if (x < 1)
- fun_l3_n311(x)
- else
- fun_l3_n412(x)
- end
-end
-
-def fun_l2_n433(x)
- if (x < 1)
- fun_l3_n824(x)
- else
- fun_l3_n494(x)
- end
-end
-
-def fun_l2_n434(x)
- if (x < 1)
- fun_l3_n471(x)
- else
- fun_l3_n174(x)
- end
-end
-
-def fun_l2_n435(x)
- if (x < 1)
- fun_l3_n10(x)
- else
- fun_l3_n319(x)
- end
-end
-
-def fun_l2_n436(x)
- if (x < 1)
- fun_l3_n223(x)
- else
- fun_l3_n518(x)
- end
-end
-
-def fun_l2_n437(x)
- if (x < 1)
- fun_l3_n497(x)
- else
- fun_l3_n685(x)
- end
-end
-
-def fun_l2_n438(x)
- if (x < 1)
- fun_l3_n639(x)
- else
- fun_l3_n695(x)
- end
-end
-
-def fun_l2_n439(x)
- if (x < 1)
- fun_l3_n898(x)
- else
- fun_l3_n114(x)
- end
-end
-
-def fun_l2_n440(x)
- if (x < 1)
- fun_l3_n12(x)
- else
- fun_l3_n344(x)
- end
-end
-
-def fun_l2_n441(x)
- if (x < 1)
- fun_l3_n556(x)
- else
- fun_l3_n684(x)
- end
-end
-
-def fun_l2_n442(x)
- if (x < 1)
- fun_l3_n403(x)
- else
- fun_l3_n528(x)
- end
-end
-
-def fun_l2_n443(x)
- if (x < 1)
- fun_l3_n514(x)
- else
- fun_l3_n943(x)
- end
-end
-
-def fun_l2_n444(x)
- if (x < 1)
- fun_l3_n218(x)
- else
- fun_l3_n94(x)
- end
-end
-
-def fun_l2_n445(x)
- if (x < 1)
- fun_l3_n0(x)
- else
- fun_l3_n731(x)
- end
-end
-
-def fun_l2_n446(x)
- if (x < 1)
- fun_l3_n468(x)
- else
- fun_l3_n197(x)
- end
-end
-
-def fun_l2_n447(x)
- if (x < 1)
- fun_l3_n79(x)
- else
- fun_l3_n900(x)
- end
-end
-
-def fun_l2_n448(x)
- if (x < 1)
- fun_l3_n706(x)
- else
- fun_l3_n250(x)
- end
-end
-
-def fun_l2_n449(x)
- if (x < 1)
- fun_l3_n607(x)
- else
- fun_l3_n514(x)
- end
-end
-
-def fun_l2_n450(x)
- if (x < 1)
- fun_l3_n855(x)
- else
- fun_l3_n223(x)
- end
-end
-
-def fun_l2_n451(x)
- if (x < 1)
- fun_l3_n824(x)
- else
- fun_l3_n426(x)
- end
-end
-
-def fun_l2_n452(x)
- if (x < 1)
- fun_l3_n137(x)
- else
- fun_l3_n555(x)
- end
-end
-
-def fun_l2_n453(x)
- if (x < 1)
- fun_l3_n553(x)
- else
- fun_l3_n130(x)
- end
-end
-
-def fun_l2_n454(x)
- if (x < 1)
- fun_l3_n350(x)
- else
- fun_l3_n545(x)
- end
-end
-
-def fun_l2_n455(x)
- if (x < 1)
- fun_l3_n181(x)
- else
- fun_l3_n950(x)
- end
-end
-
-def fun_l2_n456(x)
- if (x < 1)
- fun_l3_n581(x)
- else
- fun_l3_n957(x)
- end
-end
-
-def fun_l2_n457(x)
- if (x < 1)
- fun_l3_n688(x)
- else
- fun_l3_n560(x)
- end
-end
-
-def fun_l2_n458(x)
- if (x < 1)
- fun_l3_n655(x)
- else
- fun_l3_n323(x)
- end
-end
-
-def fun_l2_n459(x)
- if (x < 1)
- fun_l3_n92(x)
- else
- fun_l3_n796(x)
- end
-end
-
-def fun_l2_n460(x)
- if (x < 1)
- fun_l3_n68(x)
- else
- fun_l3_n152(x)
- end
-end
-
-def fun_l2_n461(x)
- if (x < 1)
- fun_l3_n153(x)
- else
- fun_l3_n929(x)
- end
-end
-
-def fun_l2_n462(x)
- if (x < 1)
- fun_l3_n401(x)
- else
- fun_l3_n248(x)
- end
-end
-
-def fun_l2_n463(x)
- if (x < 1)
- fun_l3_n4(x)
- else
- fun_l3_n906(x)
- end
-end
-
-def fun_l2_n464(x)
- if (x < 1)
- fun_l3_n313(x)
- else
- fun_l3_n911(x)
- end
-end
-
-def fun_l2_n465(x)
- if (x < 1)
- fun_l3_n490(x)
- else
- fun_l3_n430(x)
- end
-end
-
-def fun_l2_n466(x)
- if (x < 1)
- fun_l3_n537(x)
- else
- fun_l3_n470(x)
- end
-end
-
-def fun_l2_n467(x)
- if (x < 1)
- fun_l3_n666(x)
- else
- fun_l3_n695(x)
- end
-end
-
-def fun_l2_n468(x)
- if (x < 1)
- fun_l3_n126(x)
- else
- fun_l3_n201(x)
- end
-end
-
-def fun_l2_n469(x)
- if (x < 1)
- fun_l3_n111(x)
- else
- fun_l3_n741(x)
- end
-end
-
-def fun_l2_n470(x)
- if (x < 1)
- fun_l3_n391(x)
- else
- fun_l3_n83(x)
- end
-end
-
-def fun_l2_n471(x)
- if (x < 1)
- fun_l3_n619(x)
- else
- fun_l3_n425(x)
- end
-end
-
-def fun_l2_n472(x)
- if (x < 1)
- fun_l3_n637(x)
- else
- fun_l3_n865(x)
- end
-end
-
-def fun_l2_n473(x)
- if (x < 1)
- fun_l3_n182(x)
- else
- fun_l3_n350(x)
- end
-end
-
-def fun_l2_n474(x)
- if (x < 1)
- fun_l3_n752(x)
- else
- fun_l3_n815(x)
- end
-end
-
-def fun_l2_n475(x)
- if (x < 1)
- fun_l3_n184(x)
- else
- fun_l3_n683(x)
- end
-end
-
-def fun_l2_n476(x)
- if (x < 1)
- fun_l3_n324(x)
- else
- fun_l3_n232(x)
- end
-end
-
-def fun_l2_n477(x)
- if (x < 1)
- fun_l3_n588(x)
- else
- fun_l3_n586(x)
- end
-end
-
-def fun_l2_n478(x)
- if (x < 1)
- fun_l3_n320(x)
- else
- fun_l3_n599(x)
- end
-end
-
-def fun_l2_n479(x)
- if (x < 1)
- fun_l3_n999(x)
- else
- fun_l3_n678(x)
- end
-end
-
-def fun_l2_n480(x)
- if (x < 1)
- fun_l3_n523(x)
- else
- fun_l3_n637(x)
- end
-end
-
-def fun_l2_n481(x)
- if (x < 1)
- fun_l3_n291(x)
- else
- fun_l3_n347(x)
- end
-end
-
-def fun_l2_n482(x)
- if (x < 1)
- fun_l3_n873(x)
- else
- fun_l3_n435(x)
- end
-end
-
-def fun_l2_n483(x)
- if (x < 1)
- fun_l3_n718(x)
- else
- fun_l3_n903(x)
- end
-end
-
-def fun_l2_n484(x)
- if (x < 1)
- fun_l3_n188(x)
- else
- fun_l3_n751(x)
- end
-end
-
-def fun_l2_n485(x)
- if (x < 1)
- fun_l3_n501(x)
- else
- fun_l3_n235(x)
- end
-end
-
-def fun_l2_n486(x)
- if (x < 1)
- fun_l3_n578(x)
- else
- fun_l3_n224(x)
- end
-end
-
-def fun_l2_n487(x)
- if (x < 1)
- fun_l3_n757(x)
- else
- fun_l3_n145(x)
- end
-end
-
-def fun_l2_n488(x)
- if (x < 1)
- fun_l3_n17(x)
- else
- fun_l3_n727(x)
- end
-end
-
-def fun_l2_n489(x)
- if (x < 1)
- fun_l3_n699(x)
- else
- fun_l3_n102(x)
- end
-end
-
-def fun_l2_n490(x)
- if (x < 1)
- fun_l3_n518(x)
- else
- fun_l3_n15(x)
- end
-end
-
-def fun_l2_n491(x)
- if (x < 1)
- fun_l3_n889(x)
- else
- fun_l3_n798(x)
- end
-end
-
-def fun_l2_n492(x)
- if (x < 1)
- fun_l3_n715(x)
- else
- fun_l3_n27(x)
- end
-end
-
-def fun_l2_n493(x)
- if (x < 1)
- fun_l3_n237(x)
- else
- fun_l3_n130(x)
- end
-end
-
-def fun_l2_n494(x)
- if (x < 1)
- fun_l3_n99(x)
- else
- fun_l3_n223(x)
- end
-end
-
-def fun_l2_n495(x)
- if (x < 1)
- fun_l3_n65(x)
- else
- fun_l3_n811(x)
- end
-end
-
-def fun_l2_n496(x)
- if (x < 1)
- fun_l3_n457(x)
- else
- fun_l3_n527(x)
- end
-end
-
-def fun_l2_n497(x)
- if (x < 1)
- fun_l3_n312(x)
- else
- fun_l3_n902(x)
- end
-end
-
-def fun_l2_n498(x)
- if (x < 1)
- fun_l3_n63(x)
- else
- fun_l3_n948(x)
- end
-end
-
-def fun_l2_n499(x)
- if (x < 1)
- fun_l3_n652(x)
- else
- fun_l3_n752(x)
- end
-end
-
-def fun_l2_n500(x)
- if (x < 1)
- fun_l3_n583(x)
- else
- fun_l3_n427(x)
- end
-end
-
-def fun_l2_n501(x)
- if (x < 1)
- fun_l3_n536(x)
- else
- fun_l3_n671(x)
- end
-end
-
-def fun_l2_n502(x)
- if (x < 1)
- fun_l3_n122(x)
- else
- fun_l3_n170(x)
- end
-end
-
-def fun_l2_n503(x)
- if (x < 1)
- fun_l3_n280(x)
- else
- fun_l3_n390(x)
- end
-end
-
-def fun_l2_n504(x)
- if (x < 1)
- fun_l3_n427(x)
- else
- fun_l3_n267(x)
- end
-end
-
-def fun_l2_n505(x)
- if (x < 1)
- fun_l3_n241(x)
- else
- fun_l3_n345(x)
- end
-end
-
-def fun_l2_n506(x)
- if (x < 1)
- fun_l3_n960(x)
- else
- fun_l3_n537(x)
- end
-end
-
-def fun_l2_n507(x)
- if (x < 1)
- fun_l3_n947(x)
- else
- fun_l3_n3(x)
- end
-end
-
-def fun_l2_n508(x)
- if (x < 1)
- fun_l3_n974(x)
- else
- fun_l3_n597(x)
- end
-end
-
-def fun_l2_n509(x)
- if (x < 1)
- fun_l3_n978(x)
- else
- fun_l3_n70(x)
- end
-end
-
-def fun_l2_n510(x)
- if (x < 1)
- fun_l3_n855(x)
- else
- fun_l3_n259(x)
- end
-end
-
-def fun_l2_n511(x)
- if (x < 1)
- fun_l3_n987(x)
- else
- fun_l3_n182(x)
- end
-end
-
-def fun_l2_n512(x)
- if (x < 1)
- fun_l3_n787(x)
- else
- fun_l3_n656(x)
- end
-end
-
-def fun_l2_n513(x)
- if (x < 1)
- fun_l3_n348(x)
- else
- fun_l3_n242(x)
- end
-end
-
-def fun_l2_n514(x)
- if (x < 1)
- fun_l3_n530(x)
- else
- fun_l3_n718(x)
- end
-end
-
-def fun_l2_n515(x)
- if (x < 1)
- fun_l3_n840(x)
- else
- fun_l3_n302(x)
- end
-end
-
-def fun_l2_n516(x)
- if (x < 1)
- fun_l3_n678(x)
- else
- fun_l3_n732(x)
- end
-end
-
-def fun_l2_n517(x)
- if (x < 1)
- fun_l3_n160(x)
- else
- fun_l3_n344(x)
- end
-end
-
-def fun_l2_n518(x)
- if (x < 1)
- fun_l3_n518(x)
- else
- fun_l3_n830(x)
- end
-end
-
-def fun_l2_n519(x)
- if (x < 1)
- fun_l3_n595(x)
- else
- fun_l3_n95(x)
- end
-end
-
-def fun_l2_n520(x)
- if (x < 1)
- fun_l3_n939(x)
- else
- fun_l3_n954(x)
- end
-end
-
-def fun_l2_n521(x)
- if (x < 1)
- fun_l3_n931(x)
- else
- fun_l3_n686(x)
- end
-end
-
-def fun_l2_n522(x)
- if (x < 1)
- fun_l3_n117(x)
- else
- fun_l3_n501(x)
- end
-end
-
-def fun_l2_n523(x)
- if (x < 1)
- fun_l3_n727(x)
- else
- fun_l3_n712(x)
- end
-end
-
-def fun_l2_n524(x)
- if (x < 1)
- fun_l3_n152(x)
- else
- fun_l3_n453(x)
- end
-end
-
-def fun_l2_n525(x)
- if (x < 1)
- fun_l3_n375(x)
- else
- fun_l3_n186(x)
- end
-end
-
-def fun_l2_n526(x)
- if (x < 1)
- fun_l3_n835(x)
- else
- fun_l3_n465(x)
- end
-end
-
-def fun_l2_n527(x)
- if (x < 1)
- fun_l3_n411(x)
- else
- fun_l3_n208(x)
- end
-end
-
-def fun_l2_n528(x)
- if (x < 1)
- fun_l3_n696(x)
- else
- fun_l3_n537(x)
- end
-end
-
-def fun_l2_n529(x)
- if (x < 1)
- fun_l3_n606(x)
- else
- fun_l3_n682(x)
- end
-end
-
-def fun_l2_n530(x)
- if (x < 1)
- fun_l3_n920(x)
- else
- fun_l3_n592(x)
- end
-end
-
-def fun_l2_n531(x)
- if (x < 1)
- fun_l3_n201(x)
- else
- fun_l3_n27(x)
- end
-end
-
-def fun_l2_n532(x)
- if (x < 1)
- fun_l3_n643(x)
- else
- fun_l3_n642(x)
- end
-end
-
-def fun_l2_n533(x)
- if (x < 1)
- fun_l3_n92(x)
- else
- fun_l3_n576(x)
- end
-end
-
-def fun_l2_n534(x)
- if (x < 1)
- fun_l3_n135(x)
- else
- fun_l3_n738(x)
- end
-end
-
-def fun_l2_n535(x)
- if (x < 1)
- fun_l3_n706(x)
- else
- fun_l3_n810(x)
- end
-end
-
-def fun_l2_n536(x)
- if (x < 1)
- fun_l3_n922(x)
- else
- fun_l3_n456(x)
- end
-end
-
-def fun_l2_n537(x)
- if (x < 1)
- fun_l3_n511(x)
- else
- fun_l3_n279(x)
- end
-end
-
-def fun_l2_n538(x)
- if (x < 1)
- fun_l3_n541(x)
- else
- fun_l3_n826(x)
- end
-end
-
-def fun_l2_n539(x)
- if (x < 1)
- fun_l3_n7(x)
- else
- fun_l3_n362(x)
- end
-end
-
-def fun_l2_n540(x)
- if (x < 1)
- fun_l3_n132(x)
- else
- fun_l3_n819(x)
- end
-end
-
-def fun_l2_n541(x)
- if (x < 1)
- fun_l3_n600(x)
- else
- fun_l3_n155(x)
- end
-end
-
-def fun_l2_n542(x)
- if (x < 1)
- fun_l3_n930(x)
- else
- fun_l3_n827(x)
- end
-end
-
-def fun_l2_n543(x)
- if (x < 1)
- fun_l3_n974(x)
- else
- fun_l3_n957(x)
- end
-end
-
-def fun_l2_n544(x)
- if (x < 1)
- fun_l3_n912(x)
- else
- fun_l3_n503(x)
- end
-end
-
-def fun_l2_n545(x)
- if (x < 1)
- fun_l3_n605(x)
- else
- fun_l3_n966(x)
- end
-end
-
-def fun_l2_n546(x)
- if (x < 1)
- fun_l3_n523(x)
- else
- fun_l3_n105(x)
- end
-end
-
-def fun_l2_n547(x)
- if (x < 1)
- fun_l3_n352(x)
- else
- fun_l3_n762(x)
- end
-end
-
-def fun_l2_n548(x)
- if (x < 1)
- fun_l3_n65(x)
- else
- fun_l3_n714(x)
- end
-end
-
-def fun_l2_n549(x)
- if (x < 1)
- fun_l3_n665(x)
- else
- fun_l3_n799(x)
- end
-end
-
-def fun_l2_n550(x)
- if (x < 1)
- fun_l3_n624(x)
- else
- fun_l3_n131(x)
- end
-end
-
-def fun_l2_n551(x)
- if (x < 1)
- fun_l3_n53(x)
- else
- fun_l3_n377(x)
- end
-end
-
-def fun_l2_n552(x)
- if (x < 1)
- fun_l3_n377(x)
- else
- fun_l3_n532(x)
- end
-end
-
-def fun_l2_n553(x)
- if (x < 1)
- fun_l3_n302(x)
- else
- fun_l3_n593(x)
- end
-end
-
-def fun_l2_n554(x)
- if (x < 1)
- fun_l3_n573(x)
- else
- fun_l3_n727(x)
- end
-end
-
-def fun_l2_n555(x)
- if (x < 1)
- fun_l3_n575(x)
- else
- fun_l3_n838(x)
- end
-end
-
-def fun_l2_n556(x)
- if (x < 1)
- fun_l3_n92(x)
- else
- fun_l3_n137(x)
- end
-end
-
-def fun_l2_n557(x)
- if (x < 1)
- fun_l3_n921(x)
- else
- fun_l3_n683(x)
- end
-end
-
-def fun_l2_n558(x)
- if (x < 1)
- fun_l3_n987(x)
- else
- fun_l3_n646(x)
- end
-end
-
-def fun_l2_n559(x)
- if (x < 1)
- fun_l3_n574(x)
- else
- fun_l3_n493(x)
- end
-end
-
-def fun_l2_n560(x)
- if (x < 1)
- fun_l3_n950(x)
- else
- fun_l3_n139(x)
- end
-end
-
-def fun_l2_n561(x)
- if (x < 1)
- fun_l3_n276(x)
- else
- fun_l3_n491(x)
- end
-end
-
-def fun_l2_n562(x)
- if (x < 1)
- fun_l3_n226(x)
- else
- fun_l3_n840(x)
- end
-end
-
-def fun_l2_n563(x)
- if (x < 1)
- fun_l3_n473(x)
- else
- fun_l3_n907(x)
- end
-end
-
-def fun_l2_n564(x)
- if (x < 1)
- fun_l3_n695(x)
- else
- fun_l3_n951(x)
- end
-end
-
-def fun_l2_n565(x)
- if (x < 1)
- fun_l3_n415(x)
- else
- fun_l3_n12(x)
- end
-end
-
-def fun_l2_n566(x)
- if (x < 1)
- fun_l3_n32(x)
- else
- fun_l3_n759(x)
- end
-end
-
-def fun_l2_n567(x)
- if (x < 1)
- fun_l3_n876(x)
- else
- fun_l3_n297(x)
- end
-end
-
-def fun_l2_n568(x)
- if (x < 1)
- fun_l3_n520(x)
- else
- fun_l3_n713(x)
- end
-end
-
-def fun_l2_n569(x)
- if (x < 1)
- fun_l3_n819(x)
- else
- fun_l3_n505(x)
- end
-end
-
-def fun_l2_n570(x)
- if (x < 1)
- fun_l3_n661(x)
- else
- fun_l3_n447(x)
- end
-end
-
-def fun_l2_n571(x)
- if (x < 1)
- fun_l3_n538(x)
- else
- fun_l3_n532(x)
- end
-end
-
-def fun_l2_n572(x)
- if (x < 1)
- fun_l3_n584(x)
- else
- fun_l3_n304(x)
- end
-end
-
-def fun_l2_n573(x)
- if (x < 1)
- fun_l3_n76(x)
- else
- fun_l3_n512(x)
- end
-end
-
-def fun_l2_n574(x)
- if (x < 1)
- fun_l3_n22(x)
- else
- fun_l3_n328(x)
- end
-end
-
-def fun_l2_n575(x)
- if (x < 1)
- fun_l3_n397(x)
- else
- fun_l3_n640(x)
- end
-end
-
-def fun_l2_n576(x)
- if (x < 1)
- fun_l3_n227(x)
- else
- fun_l3_n236(x)
- end
-end
-
-def fun_l2_n577(x)
- if (x < 1)
- fun_l3_n743(x)
- else
- fun_l3_n974(x)
- end
-end
-
-def fun_l2_n578(x)
- if (x < 1)
- fun_l3_n970(x)
- else
- fun_l3_n229(x)
- end
-end
-
-def fun_l2_n579(x)
- if (x < 1)
- fun_l3_n401(x)
- else
- fun_l3_n672(x)
- end
-end
-
-def fun_l2_n580(x)
- if (x < 1)
- fun_l3_n837(x)
- else
- fun_l3_n804(x)
- end
-end
-
-def fun_l2_n581(x)
- if (x < 1)
- fun_l3_n526(x)
- else
- fun_l3_n763(x)
- end
-end
-
-def fun_l2_n582(x)
- if (x < 1)
- fun_l3_n2(x)
- else
- fun_l3_n692(x)
- end
-end
-
-def fun_l2_n583(x)
- if (x < 1)
- fun_l3_n561(x)
- else
- fun_l3_n394(x)
- end
-end
-
-def fun_l2_n584(x)
- if (x < 1)
- fun_l3_n60(x)
- else
- fun_l3_n682(x)
- end
-end
-
-def fun_l2_n585(x)
- if (x < 1)
- fun_l3_n646(x)
- else
- fun_l3_n776(x)
- end
-end
-
-def fun_l2_n586(x)
- if (x < 1)
- fun_l3_n466(x)
- else
- fun_l3_n91(x)
- end
-end
-
-def fun_l2_n587(x)
- if (x < 1)
- fun_l3_n294(x)
- else
- fun_l3_n813(x)
- end
-end
-
-def fun_l2_n588(x)
- if (x < 1)
- fun_l3_n958(x)
- else
- fun_l3_n64(x)
- end
-end
-
-def fun_l2_n589(x)
- if (x < 1)
- fun_l3_n703(x)
- else
- fun_l3_n937(x)
- end
-end
-
-def fun_l2_n590(x)
- if (x < 1)
- fun_l3_n1(x)
- else
- fun_l3_n970(x)
- end
-end
-
-def fun_l2_n591(x)
- if (x < 1)
- fun_l3_n566(x)
- else
- fun_l3_n750(x)
- end
-end
-
-def fun_l2_n592(x)
- if (x < 1)
- fun_l3_n905(x)
- else
- fun_l3_n840(x)
- end
-end
-
-def fun_l2_n593(x)
- if (x < 1)
- fun_l3_n23(x)
- else
- fun_l3_n862(x)
- end
-end
-
-def fun_l2_n594(x)
- if (x < 1)
- fun_l3_n739(x)
- else
- fun_l3_n4(x)
- end
-end
-
-def fun_l2_n595(x)
- if (x < 1)
- fun_l3_n818(x)
- else
- fun_l3_n117(x)
- end
-end
-
-def fun_l2_n596(x)
- if (x < 1)
- fun_l3_n891(x)
- else
- fun_l3_n599(x)
- end
-end
-
-def fun_l2_n597(x)
- if (x < 1)
- fun_l3_n731(x)
- else
- fun_l3_n960(x)
- end
-end
-
-def fun_l2_n598(x)
- if (x < 1)
- fun_l3_n323(x)
- else
- fun_l3_n811(x)
- end
-end
-
-def fun_l2_n599(x)
- if (x < 1)
- fun_l3_n299(x)
- else
- fun_l3_n188(x)
- end
-end
-
-def fun_l2_n600(x)
- if (x < 1)
- fun_l3_n129(x)
- else
- fun_l3_n730(x)
- end
-end
-
-def fun_l2_n601(x)
- if (x < 1)
- fun_l3_n412(x)
- else
- fun_l3_n353(x)
- end
-end
-
-def fun_l2_n602(x)
- if (x < 1)
- fun_l3_n658(x)
- else
- fun_l3_n774(x)
- end
-end
-
-def fun_l2_n603(x)
- if (x < 1)
- fun_l3_n378(x)
- else
- fun_l3_n722(x)
- end
-end
-
-def fun_l2_n604(x)
- if (x < 1)
- fun_l3_n482(x)
- else
- fun_l3_n949(x)
- end
-end
-
-def fun_l2_n605(x)
- if (x < 1)
- fun_l3_n996(x)
- else
- fun_l3_n169(x)
- end
-end
-
-def fun_l2_n606(x)
- if (x < 1)
- fun_l3_n653(x)
- else
- fun_l3_n966(x)
- end
-end
-
-def fun_l2_n607(x)
- if (x < 1)
- fun_l3_n179(x)
- else
- fun_l3_n113(x)
- end
-end
-
-def fun_l2_n608(x)
- if (x < 1)
- fun_l3_n157(x)
- else
- fun_l3_n692(x)
- end
-end
-
-def fun_l2_n609(x)
- if (x < 1)
- fun_l3_n648(x)
- else
- fun_l3_n318(x)
- end
-end
-
-def fun_l2_n610(x)
- if (x < 1)
- fun_l3_n979(x)
- else
- fun_l3_n642(x)
- end
-end
-
-def fun_l2_n611(x)
- if (x < 1)
- fun_l3_n909(x)
- else
- fun_l3_n986(x)
- end
-end
-
-def fun_l2_n612(x)
- if (x < 1)
- fun_l3_n387(x)
- else
- fun_l3_n586(x)
- end
-end
-
-def fun_l2_n613(x)
- if (x < 1)
- fun_l3_n99(x)
- else
- fun_l3_n690(x)
- end
-end
-
-def fun_l2_n614(x)
- if (x < 1)
- fun_l3_n485(x)
- else
- fun_l3_n733(x)
- end
-end
-
-def fun_l2_n615(x)
- if (x < 1)
- fun_l3_n735(x)
- else
- fun_l3_n827(x)
- end
-end
-
-def fun_l2_n616(x)
- if (x < 1)
- fun_l3_n496(x)
- else
- fun_l3_n912(x)
- end
-end
-
-def fun_l2_n617(x)
- if (x < 1)
- fun_l3_n363(x)
- else
- fun_l3_n845(x)
- end
-end
-
-def fun_l2_n618(x)
- if (x < 1)
- fun_l3_n891(x)
- else
- fun_l3_n964(x)
- end
-end
-
-def fun_l2_n619(x)
- if (x < 1)
- fun_l3_n266(x)
- else
- fun_l3_n189(x)
- end
-end
-
-def fun_l2_n620(x)
- if (x < 1)
- fun_l3_n906(x)
- else
- fun_l3_n218(x)
- end
-end
-
-def fun_l2_n621(x)
- if (x < 1)
- fun_l3_n145(x)
- else
- fun_l3_n279(x)
- end
-end
-
-def fun_l2_n622(x)
- if (x < 1)
- fun_l3_n797(x)
- else
- fun_l3_n328(x)
- end
-end
-
-def fun_l2_n623(x)
- if (x < 1)
- fun_l3_n910(x)
- else
- fun_l3_n250(x)
- end
-end
-
-def fun_l2_n624(x)
- if (x < 1)
- fun_l3_n111(x)
- else
- fun_l3_n884(x)
- end
-end
-
-def fun_l2_n625(x)
- if (x < 1)
- fun_l3_n852(x)
- else
- fun_l3_n985(x)
- end
-end
-
-def fun_l2_n626(x)
- if (x < 1)
- fun_l3_n163(x)
- else
- fun_l3_n885(x)
- end
-end
-
-def fun_l2_n627(x)
- if (x < 1)
- fun_l3_n338(x)
- else
- fun_l3_n562(x)
- end
-end
-
-def fun_l2_n628(x)
- if (x < 1)
- fun_l3_n300(x)
- else
- fun_l3_n245(x)
- end
-end
-
-def fun_l2_n629(x)
- if (x < 1)
- fun_l3_n747(x)
- else
- fun_l3_n123(x)
- end
-end
-
-def fun_l2_n630(x)
- if (x < 1)
- fun_l3_n42(x)
- else
- fun_l3_n46(x)
- end
-end
-
-def fun_l2_n631(x)
- if (x < 1)
- fun_l3_n256(x)
- else
- fun_l3_n960(x)
- end
-end
-
-def fun_l2_n632(x)
- if (x < 1)
- fun_l3_n679(x)
- else
- fun_l3_n393(x)
- end
-end
-
-def fun_l2_n633(x)
- if (x < 1)
- fun_l3_n286(x)
- else
- fun_l3_n147(x)
- end
-end
-
-def fun_l2_n634(x)
- if (x < 1)
- fun_l3_n62(x)
- else
- fun_l3_n994(x)
- end
-end
-
-def fun_l2_n635(x)
- if (x < 1)
- fun_l3_n479(x)
- else
- fun_l3_n502(x)
- end
-end
-
-def fun_l2_n636(x)
- if (x < 1)
- fun_l3_n504(x)
- else
- fun_l3_n557(x)
- end
-end
-
-def fun_l2_n637(x)
- if (x < 1)
- fun_l3_n716(x)
- else
- fun_l3_n763(x)
- end
-end
-
-def fun_l2_n638(x)
- if (x < 1)
- fun_l3_n972(x)
- else
- fun_l3_n391(x)
- end
-end
-
-def fun_l2_n639(x)
- if (x < 1)
- fun_l3_n842(x)
- else
- fun_l3_n740(x)
- end
-end
-
-def fun_l2_n640(x)
- if (x < 1)
- fun_l3_n854(x)
- else
- fun_l3_n52(x)
- end
-end
-
-def fun_l2_n641(x)
- if (x < 1)
- fun_l3_n321(x)
- else
- fun_l3_n109(x)
- end
-end
-
-def fun_l2_n642(x)
- if (x < 1)
- fun_l3_n868(x)
- else
- fun_l3_n926(x)
- end
-end
-
-def fun_l2_n643(x)
- if (x < 1)
- fun_l3_n864(x)
- else
- fun_l3_n98(x)
- end
-end
-
-def fun_l2_n644(x)
- if (x < 1)
- fun_l3_n373(x)
- else
- fun_l3_n105(x)
- end
-end
-
-def fun_l2_n645(x)
- if (x < 1)
- fun_l3_n293(x)
- else
- fun_l3_n846(x)
- end
-end
-
-def fun_l2_n646(x)
- if (x < 1)
- fun_l3_n24(x)
- else
- fun_l3_n83(x)
- end
-end
-
-def fun_l2_n647(x)
- if (x < 1)
- fun_l3_n431(x)
- else
- fun_l3_n772(x)
- end
-end
-
-def fun_l2_n648(x)
- if (x < 1)
- fun_l3_n667(x)
- else
- fun_l3_n108(x)
- end
-end
-
-def fun_l2_n649(x)
- if (x < 1)
- fun_l3_n93(x)
- else
- fun_l3_n394(x)
- end
-end
-
-def fun_l2_n650(x)
- if (x < 1)
- fun_l3_n176(x)
- else
- fun_l3_n315(x)
- end
-end
-
-def fun_l2_n651(x)
- if (x < 1)
- fun_l3_n684(x)
- else
- fun_l3_n635(x)
- end
-end
-
-def fun_l2_n652(x)
- if (x < 1)
- fun_l3_n554(x)
- else
- fun_l3_n88(x)
- end
-end
-
-def fun_l2_n653(x)
- if (x < 1)
- fun_l3_n165(x)
- else
- fun_l3_n962(x)
- end
-end
-
-def fun_l2_n654(x)
- if (x < 1)
- fun_l3_n631(x)
- else
- fun_l3_n80(x)
- end
-end
-
-def fun_l2_n655(x)
- if (x < 1)
- fun_l3_n529(x)
- else
- fun_l3_n711(x)
- end
-end
-
-def fun_l2_n656(x)
- if (x < 1)
- fun_l3_n809(x)
- else
- fun_l3_n44(x)
- end
-end
-
-def fun_l2_n657(x)
- if (x < 1)
- fun_l3_n226(x)
- else
- fun_l3_n939(x)
- end
-end
-
-def fun_l2_n658(x)
- if (x < 1)
- fun_l3_n355(x)
- else
- fun_l3_n750(x)
- end
-end
-
-def fun_l2_n659(x)
- if (x < 1)
- fun_l3_n111(x)
- else
- fun_l3_n883(x)
- end
-end
-
-def fun_l2_n660(x)
- if (x < 1)
- fun_l3_n22(x)
- else
- fun_l3_n544(x)
- end
-end
-
-def fun_l2_n661(x)
- if (x < 1)
- fun_l3_n334(x)
- else
- fun_l3_n58(x)
- end
-end
-
-def fun_l2_n662(x)
- if (x < 1)
- fun_l3_n690(x)
- else
- fun_l3_n647(x)
- end
-end
-
-def fun_l2_n663(x)
- if (x < 1)
- fun_l3_n886(x)
- else
- fun_l3_n142(x)
- end
-end
-
-def fun_l2_n664(x)
- if (x < 1)
- fun_l3_n713(x)
- else
- fun_l3_n710(x)
- end
-end
-
-def fun_l2_n665(x)
- if (x < 1)
- fun_l3_n657(x)
- else
- fun_l3_n24(x)
- end
-end
-
-def fun_l2_n666(x)
- if (x < 1)
- fun_l3_n993(x)
- else
- fun_l3_n741(x)
- end
-end
-
-def fun_l2_n667(x)
- if (x < 1)
- fun_l3_n265(x)
- else
- fun_l3_n143(x)
- end
-end
-
-def fun_l2_n668(x)
- if (x < 1)
- fun_l3_n725(x)
- else
- fun_l3_n272(x)
- end
-end
-
-def fun_l2_n669(x)
- if (x < 1)
- fun_l3_n171(x)
- else
- fun_l3_n95(x)
- end
-end
-
-def fun_l2_n670(x)
- if (x < 1)
- fun_l3_n409(x)
- else
- fun_l3_n774(x)
- end
-end
-
-def fun_l2_n671(x)
- if (x < 1)
- fun_l3_n566(x)
- else
- fun_l3_n251(x)
- end
-end
-
-def fun_l2_n672(x)
- if (x < 1)
- fun_l3_n914(x)
- else
- fun_l3_n716(x)
- end
-end
-
-def fun_l2_n673(x)
- if (x < 1)
- fun_l3_n889(x)
- else
- fun_l3_n339(x)
- end
-end
-
-def fun_l2_n674(x)
- if (x < 1)
- fun_l3_n808(x)
- else
- fun_l3_n858(x)
- end
-end
-
-def fun_l2_n675(x)
- if (x < 1)
- fun_l3_n895(x)
- else
- fun_l3_n180(x)
- end
-end
-
-def fun_l2_n676(x)
- if (x < 1)
- fun_l3_n674(x)
- else
- fun_l3_n183(x)
- end
-end
-
-def fun_l2_n677(x)
- if (x < 1)
- fun_l3_n934(x)
- else
- fun_l3_n292(x)
- end
-end
-
-def fun_l2_n678(x)
- if (x < 1)
- fun_l3_n302(x)
- else
- fun_l3_n511(x)
- end
-end
-
-def fun_l2_n679(x)
- if (x < 1)
- fun_l3_n847(x)
- else
- fun_l3_n70(x)
- end
-end
-
-def fun_l2_n680(x)
- if (x < 1)
- fun_l3_n200(x)
- else
- fun_l3_n436(x)
- end
-end
-
-def fun_l2_n681(x)
- if (x < 1)
- fun_l3_n44(x)
- else
- fun_l3_n145(x)
- end
-end
-
-def fun_l2_n682(x)
- if (x < 1)
- fun_l3_n929(x)
- else
- fun_l3_n605(x)
- end
-end
-
-def fun_l2_n683(x)
- if (x < 1)
- fun_l3_n990(x)
- else
- fun_l3_n641(x)
- end
-end
-
-def fun_l2_n684(x)
- if (x < 1)
- fun_l3_n679(x)
- else
- fun_l3_n976(x)
- end
-end
-
-def fun_l2_n685(x)
- if (x < 1)
- fun_l3_n405(x)
- else
- fun_l3_n658(x)
- end
-end
-
-def fun_l2_n686(x)
- if (x < 1)
- fun_l3_n685(x)
- else
- fun_l3_n379(x)
- end
-end
-
-def fun_l2_n687(x)
- if (x < 1)
- fun_l3_n279(x)
- else
- fun_l3_n415(x)
- end
-end
-
-def fun_l2_n688(x)
- if (x < 1)
- fun_l3_n234(x)
- else
- fun_l3_n634(x)
- end
-end
-
-def fun_l2_n689(x)
- if (x < 1)
- fun_l3_n119(x)
- else
- fun_l3_n234(x)
- end
-end
-
-def fun_l2_n690(x)
- if (x < 1)
- fun_l3_n213(x)
- else
- fun_l3_n102(x)
- end
-end
-
-def fun_l2_n691(x)
- if (x < 1)
- fun_l3_n744(x)
- else
- fun_l3_n31(x)
- end
-end
-
-def fun_l2_n692(x)
- if (x < 1)
- fun_l3_n29(x)
- else
- fun_l3_n238(x)
- end
-end
-
-def fun_l2_n693(x)
- if (x < 1)
- fun_l3_n323(x)
- else
- fun_l3_n388(x)
- end
-end
-
-def fun_l2_n694(x)
- if (x < 1)
- fun_l3_n70(x)
- else
- fun_l3_n356(x)
- end
-end
-
-def fun_l2_n695(x)
- if (x < 1)
- fun_l3_n589(x)
- else
- fun_l3_n949(x)
- end
-end
-
-def fun_l2_n696(x)
- if (x < 1)
- fun_l3_n328(x)
- else
- fun_l3_n472(x)
- end
-end
-
-def fun_l2_n697(x)
- if (x < 1)
- fun_l3_n705(x)
- else
- fun_l3_n709(x)
- end
-end
-
-def fun_l2_n698(x)
- if (x < 1)
- fun_l3_n817(x)
- else
- fun_l3_n927(x)
- end
-end
-
-def fun_l2_n699(x)
- if (x < 1)
- fun_l3_n916(x)
- else
- fun_l3_n66(x)
- end
-end
-
-def fun_l2_n700(x)
- if (x < 1)
- fun_l3_n461(x)
- else
- fun_l3_n648(x)
- end
-end
-
-def fun_l2_n701(x)
- if (x < 1)
- fun_l3_n71(x)
- else
- fun_l3_n218(x)
- end
-end
-
-def fun_l2_n702(x)
- if (x < 1)
- fun_l3_n490(x)
- else
- fun_l3_n706(x)
- end
-end
-
-def fun_l2_n703(x)
- if (x < 1)
- fun_l3_n480(x)
- else
- fun_l3_n665(x)
- end
-end
-
-def fun_l2_n704(x)
- if (x < 1)
- fun_l3_n965(x)
- else
- fun_l3_n394(x)
- end
-end
-
-def fun_l2_n705(x)
- if (x < 1)
- fun_l3_n65(x)
- else
- fun_l3_n761(x)
- end
-end
-
-def fun_l2_n706(x)
- if (x < 1)
- fun_l3_n690(x)
- else
- fun_l3_n50(x)
- end
-end
-
-def fun_l2_n707(x)
- if (x < 1)
- fun_l3_n665(x)
- else
- fun_l3_n589(x)
- end
-end
-
-def fun_l2_n708(x)
- if (x < 1)
- fun_l3_n331(x)
- else
- fun_l3_n299(x)
- end
-end
-
-def fun_l2_n709(x)
- if (x < 1)
- fun_l3_n656(x)
- else
- fun_l3_n966(x)
- end
-end
-
-def fun_l2_n710(x)
- if (x < 1)
- fun_l3_n610(x)
- else
- fun_l3_n767(x)
- end
-end
-
-def fun_l2_n711(x)
- if (x < 1)
- fun_l3_n281(x)
- else
- fun_l3_n942(x)
- end
-end
-
-def fun_l2_n712(x)
- if (x < 1)
- fun_l3_n474(x)
- else
- fun_l3_n373(x)
- end
-end
-
-def fun_l2_n713(x)
- if (x < 1)
- fun_l3_n668(x)
- else
- fun_l3_n881(x)
- end
-end
-
-def fun_l2_n714(x)
- if (x < 1)
- fun_l3_n112(x)
- else
- fun_l3_n914(x)
- end
-end
-
-def fun_l2_n715(x)
- if (x < 1)
- fun_l3_n276(x)
- else
- fun_l3_n946(x)
- end
-end
-
-def fun_l2_n716(x)
- if (x < 1)
- fun_l3_n340(x)
- else
- fun_l3_n474(x)
- end
-end
-
-def fun_l2_n717(x)
- if (x < 1)
- fun_l3_n179(x)
- else
- fun_l3_n740(x)
- end
-end
-
-def fun_l2_n718(x)
- if (x < 1)
- fun_l3_n830(x)
- else
- fun_l3_n139(x)
- end
-end
-
-def fun_l2_n719(x)
- if (x < 1)
- fun_l3_n945(x)
- else
- fun_l3_n98(x)
- end
-end
-
-def fun_l2_n720(x)
- if (x < 1)
- fun_l3_n912(x)
- else
- fun_l3_n457(x)
- end
-end
-
-def fun_l2_n721(x)
- if (x < 1)
- fun_l3_n4(x)
- else
- fun_l3_n798(x)
- end
-end
-
-def fun_l2_n722(x)
- if (x < 1)
- fun_l3_n438(x)
- else
- fun_l3_n677(x)
- end
-end
-
-def fun_l2_n723(x)
- if (x < 1)
- fun_l3_n447(x)
- else
- fun_l3_n418(x)
- end
-end
-
-def fun_l2_n724(x)
- if (x < 1)
- fun_l3_n936(x)
- else
- fun_l3_n572(x)
- end
-end
-
-def fun_l2_n725(x)
- if (x < 1)
- fun_l3_n856(x)
- else
- fun_l3_n429(x)
- end
-end
-
-def fun_l2_n726(x)
- if (x < 1)
- fun_l3_n747(x)
- else
- fun_l3_n823(x)
- end
-end
-
-def fun_l2_n727(x)
- if (x < 1)
- fun_l3_n908(x)
- else
- fun_l3_n446(x)
- end
-end
-
-def fun_l2_n728(x)
- if (x < 1)
- fun_l3_n170(x)
- else
- fun_l3_n546(x)
- end
-end
-
-def fun_l2_n729(x)
- if (x < 1)
- fun_l3_n45(x)
- else
- fun_l3_n76(x)
- end
-end
-
-def fun_l2_n730(x)
- if (x < 1)
- fun_l3_n688(x)
- else
- fun_l3_n826(x)
- end
-end
-
-def fun_l2_n731(x)
- if (x < 1)
- fun_l3_n805(x)
- else
- fun_l3_n88(x)
- end
-end
-
-def fun_l2_n732(x)
- if (x < 1)
- fun_l3_n191(x)
- else
- fun_l3_n395(x)
- end
-end
-
-def fun_l2_n733(x)
- if (x < 1)
- fun_l3_n161(x)
- else
- fun_l3_n600(x)
- end
-end
-
-def fun_l2_n734(x)
- if (x < 1)
- fun_l3_n586(x)
- else
- fun_l3_n770(x)
- end
-end
-
-def fun_l2_n735(x)
- if (x < 1)
- fun_l3_n139(x)
- else
- fun_l3_n108(x)
- end
-end
-
-def fun_l2_n736(x)
- if (x < 1)
- fun_l3_n719(x)
- else
- fun_l3_n210(x)
- end
-end
-
-def fun_l2_n737(x)
- if (x < 1)
- fun_l3_n327(x)
- else
- fun_l3_n138(x)
- end
-end
-
-def fun_l2_n738(x)
- if (x < 1)
- fun_l3_n755(x)
- else
- fun_l3_n785(x)
- end
-end
-
-def fun_l2_n739(x)
- if (x < 1)
- fun_l3_n499(x)
- else
- fun_l3_n998(x)
- end
-end
-
-def fun_l2_n740(x)
- if (x < 1)
- fun_l3_n303(x)
- else
- fun_l3_n646(x)
- end
-end
-
-def fun_l2_n741(x)
- if (x < 1)
- fun_l3_n385(x)
- else
- fun_l3_n202(x)
- end
-end
-
-def fun_l2_n742(x)
- if (x < 1)
- fun_l3_n290(x)
- else
- fun_l3_n617(x)
- end
-end
-
-def fun_l2_n743(x)
- if (x < 1)
- fun_l3_n735(x)
- else
- fun_l3_n322(x)
- end
-end
-
-def fun_l2_n744(x)
- if (x < 1)
- fun_l3_n541(x)
- else
- fun_l3_n841(x)
- end
-end
-
-def fun_l2_n745(x)
- if (x < 1)
- fun_l3_n124(x)
- else
- fun_l3_n927(x)
- end
-end
-
-def fun_l2_n746(x)
- if (x < 1)
- fun_l3_n909(x)
- else
- fun_l3_n981(x)
- end
-end
-
-def fun_l2_n747(x)
- if (x < 1)
- fun_l3_n535(x)
- else
- fun_l3_n154(x)
- end
-end
-
-def fun_l2_n748(x)
- if (x < 1)
- fun_l3_n804(x)
- else
- fun_l3_n837(x)
- end
-end
-
-def fun_l2_n749(x)
- if (x < 1)
- fun_l3_n787(x)
- else
- fun_l3_n890(x)
- end
-end
-
-def fun_l2_n750(x)
- if (x < 1)
- fun_l3_n273(x)
- else
- fun_l3_n539(x)
- end
-end
-
-def fun_l2_n751(x)
- if (x < 1)
- fun_l3_n397(x)
- else
- fun_l3_n630(x)
- end
-end
-
-def fun_l2_n752(x)
- if (x < 1)
- fun_l3_n757(x)
- else
- fun_l3_n294(x)
- end
-end
-
-def fun_l2_n753(x)
- if (x < 1)
- fun_l3_n731(x)
- else
- fun_l3_n121(x)
- end
-end
-
-def fun_l2_n754(x)
- if (x < 1)
- fun_l3_n391(x)
- else
- fun_l3_n640(x)
- end
-end
-
-def fun_l2_n755(x)
- if (x < 1)
- fun_l3_n441(x)
- else
- fun_l3_n731(x)
- end
-end
-
-def fun_l2_n756(x)
- if (x < 1)
- fun_l3_n947(x)
- else
- fun_l3_n175(x)
- end
-end
-
-def fun_l2_n757(x)
- if (x < 1)
- fun_l3_n294(x)
- else
- fun_l3_n732(x)
- end
-end
-
-def fun_l2_n758(x)
- if (x < 1)
- fun_l3_n862(x)
- else
- fun_l3_n490(x)
- end
-end
-
-def fun_l2_n759(x)
- if (x < 1)
- fun_l3_n959(x)
- else
- fun_l3_n58(x)
- end
-end
-
-def fun_l2_n760(x)
- if (x < 1)
- fun_l3_n245(x)
- else
- fun_l3_n201(x)
- end
-end
-
-def fun_l2_n761(x)
- if (x < 1)
- fun_l3_n174(x)
- else
- fun_l3_n763(x)
- end
-end
-
-def fun_l2_n762(x)
- if (x < 1)
- fun_l3_n276(x)
- else
- fun_l3_n624(x)
- end
-end
-
-def fun_l2_n763(x)
- if (x < 1)
- fun_l3_n130(x)
- else
- fun_l3_n452(x)
- end
-end
-
-def fun_l2_n764(x)
- if (x < 1)
- fun_l3_n476(x)
- else
- fun_l3_n519(x)
- end
-end
-
-def fun_l2_n765(x)
- if (x < 1)
- fun_l3_n911(x)
- else
- fun_l3_n28(x)
- end
-end
-
-def fun_l2_n766(x)
- if (x < 1)
- fun_l3_n290(x)
- else
- fun_l3_n528(x)
- end
-end
-
-def fun_l2_n767(x)
- if (x < 1)
- fun_l3_n89(x)
- else
- fun_l3_n284(x)
- end
-end
-
-def fun_l2_n768(x)
- if (x < 1)
- fun_l3_n307(x)
- else
- fun_l3_n832(x)
- end
-end
-
-def fun_l2_n769(x)
- if (x < 1)
- fun_l3_n204(x)
- else
- fun_l3_n358(x)
- end
-end
-
-def fun_l2_n770(x)
- if (x < 1)
- fun_l3_n380(x)
- else
- fun_l3_n938(x)
- end
-end
-
-def fun_l2_n771(x)
- if (x < 1)
- fun_l3_n245(x)
- else
- fun_l3_n156(x)
- end
-end
-
-def fun_l2_n772(x)
- if (x < 1)
- fun_l3_n77(x)
- else
- fun_l3_n842(x)
- end
-end
-
-def fun_l2_n773(x)
- if (x < 1)
- fun_l3_n972(x)
- else
- fun_l3_n143(x)
- end
-end
-
-def fun_l2_n774(x)
- if (x < 1)
- fun_l3_n308(x)
- else
- fun_l3_n713(x)
- end
-end
-
-def fun_l2_n775(x)
- if (x < 1)
- fun_l3_n714(x)
- else
- fun_l3_n329(x)
- end
-end
-
-def fun_l2_n776(x)
- if (x < 1)
- fun_l3_n805(x)
- else
- fun_l3_n141(x)
- end
-end
-
-def fun_l2_n777(x)
- if (x < 1)
- fun_l3_n155(x)
- else
- fun_l3_n873(x)
- end
-end
-
-def fun_l2_n778(x)
- if (x < 1)
- fun_l3_n551(x)
- else
- fun_l3_n293(x)
- end
-end
-
-def fun_l2_n779(x)
- if (x < 1)
- fun_l3_n857(x)
- else
- fun_l3_n551(x)
- end
-end
-
-def fun_l2_n780(x)
- if (x < 1)
- fun_l3_n30(x)
- else
- fun_l3_n230(x)
- end
-end
-
-def fun_l2_n781(x)
- if (x < 1)
- fun_l3_n958(x)
- else
- fun_l3_n463(x)
- end
-end
-
-def fun_l2_n782(x)
- if (x < 1)
- fun_l3_n89(x)
- else
- fun_l3_n514(x)
- end
-end
-
-def fun_l2_n783(x)
- if (x < 1)
- fun_l3_n290(x)
- else
- fun_l3_n394(x)
- end
-end
-
-def fun_l2_n784(x)
- if (x < 1)
- fun_l3_n582(x)
- else
- fun_l3_n927(x)
- end
-end
-
-def fun_l2_n785(x)
- if (x < 1)
- fun_l3_n739(x)
- else
- fun_l3_n822(x)
- end
-end
-
-def fun_l2_n786(x)
- if (x < 1)
- fun_l3_n1(x)
- else
- fun_l3_n162(x)
- end
-end
-
-def fun_l2_n787(x)
- if (x < 1)
- fun_l3_n88(x)
- else
- fun_l3_n800(x)
- end
-end
-
-def fun_l2_n788(x)
- if (x < 1)
- fun_l3_n592(x)
- else
- fun_l3_n235(x)
- end
-end
-
-def fun_l2_n789(x)
- if (x < 1)
- fun_l3_n337(x)
- else
- fun_l3_n204(x)
- end
-end
-
-def fun_l2_n790(x)
- if (x < 1)
- fun_l3_n481(x)
- else
- fun_l3_n361(x)
- end
-end
-
-def fun_l2_n791(x)
- if (x < 1)
- fun_l3_n441(x)
- else
- fun_l3_n883(x)
- end
-end
-
-def fun_l2_n792(x)
- if (x < 1)
- fun_l3_n424(x)
- else
- fun_l3_n387(x)
- end
-end
-
-def fun_l2_n793(x)
- if (x < 1)
- fun_l3_n961(x)
- else
- fun_l3_n710(x)
- end
-end
-
-def fun_l2_n794(x)
- if (x < 1)
- fun_l3_n653(x)
- else
- fun_l3_n869(x)
- end
-end
-
-def fun_l2_n795(x)
- if (x < 1)
- fun_l3_n466(x)
- else
- fun_l3_n195(x)
- end
-end
-
-def fun_l2_n796(x)
- if (x < 1)
- fun_l3_n30(x)
- else
- fun_l3_n137(x)
- end
-end
-
-def fun_l2_n797(x)
- if (x < 1)
- fun_l3_n974(x)
- else
- fun_l3_n911(x)
- end
-end
-
-def fun_l2_n798(x)
- if (x < 1)
- fun_l3_n500(x)
- else
- fun_l3_n607(x)
- end
-end
-
-def fun_l2_n799(x)
- if (x < 1)
- fun_l3_n964(x)
- else
- fun_l3_n425(x)
- end
-end
-
-def fun_l2_n800(x)
- if (x < 1)
- fun_l3_n381(x)
- else
- fun_l3_n618(x)
- end
-end
-
-def fun_l2_n801(x)
- if (x < 1)
- fun_l3_n803(x)
- else
- fun_l3_n697(x)
- end
-end
-
-def fun_l2_n802(x)
- if (x < 1)
- fun_l3_n372(x)
- else
- fun_l3_n331(x)
- end
-end
-
-def fun_l2_n803(x)
- if (x < 1)
- fun_l3_n450(x)
- else
- fun_l3_n707(x)
- end
-end
-
-def fun_l2_n804(x)
- if (x < 1)
- fun_l3_n760(x)
- else
- fun_l3_n800(x)
- end
-end
-
-def fun_l2_n805(x)
- if (x < 1)
- fun_l3_n695(x)
- else
- fun_l3_n426(x)
- end
-end
-
-def fun_l2_n806(x)
- if (x < 1)
- fun_l3_n312(x)
- else
- fun_l3_n517(x)
- end
-end
-
-def fun_l2_n807(x)
- if (x < 1)
- fun_l3_n794(x)
- else
- fun_l3_n37(x)
- end
-end
-
-def fun_l2_n808(x)
- if (x < 1)
- fun_l3_n591(x)
- else
- fun_l3_n933(x)
- end
-end
-
-def fun_l2_n809(x)
- if (x < 1)
- fun_l3_n974(x)
- else
- fun_l3_n69(x)
- end
-end
-
-def fun_l2_n810(x)
- if (x < 1)
- fun_l3_n263(x)
- else
- fun_l3_n628(x)
- end
-end
-
-def fun_l2_n811(x)
- if (x < 1)
- fun_l3_n647(x)
- else
- fun_l3_n133(x)
- end
-end
-
-def fun_l2_n812(x)
- if (x < 1)
- fun_l3_n396(x)
- else
- fun_l3_n872(x)
- end
-end
-
-def fun_l2_n813(x)
- if (x < 1)
- fun_l3_n716(x)
- else
- fun_l3_n254(x)
- end
-end
-
-def fun_l2_n814(x)
- if (x < 1)
- fun_l3_n181(x)
- else
- fun_l3_n786(x)
- end
-end
-
-def fun_l2_n815(x)
- if (x < 1)
- fun_l3_n163(x)
- else
- fun_l3_n175(x)
- end
-end
-
-def fun_l2_n816(x)
- if (x < 1)
- fun_l3_n835(x)
- else
- fun_l3_n713(x)
- end
-end
-
-def fun_l2_n817(x)
- if (x < 1)
- fun_l3_n54(x)
- else
- fun_l3_n280(x)
- end
-end
-
-def fun_l2_n818(x)
- if (x < 1)
- fun_l3_n261(x)
- else
- fun_l3_n958(x)
- end
-end
-
-def fun_l2_n819(x)
- if (x < 1)
- fun_l3_n821(x)
- else
- fun_l3_n418(x)
- end
-end
-
-def fun_l2_n820(x)
- if (x < 1)
- fun_l3_n541(x)
- else
- fun_l3_n547(x)
- end
-end
-
-def fun_l2_n821(x)
- if (x < 1)
- fun_l3_n726(x)
- else
- fun_l3_n386(x)
- end
-end
-
-def fun_l2_n822(x)
- if (x < 1)
- fun_l3_n369(x)
- else
- fun_l3_n781(x)
- end
-end
-
-def fun_l2_n823(x)
- if (x < 1)
- fun_l3_n392(x)
- else
- fun_l3_n357(x)
- end
-end
-
-def fun_l2_n824(x)
- if (x < 1)
- fun_l3_n167(x)
- else
- fun_l3_n764(x)
- end
-end
-
-def fun_l2_n825(x)
- if (x < 1)
- fun_l3_n339(x)
- else
- fun_l3_n853(x)
- end
-end
-
-def fun_l2_n826(x)
- if (x < 1)
- fun_l3_n613(x)
- else
- fun_l3_n767(x)
- end
-end
-
-def fun_l2_n827(x)
- if (x < 1)
- fun_l3_n31(x)
- else
- fun_l3_n35(x)
- end
-end
-
-def fun_l2_n828(x)
- if (x < 1)
- fun_l3_n838(x)
- else
- fun_l3_n939(x)
- end
-end
-
-def fun_l2_n829(x)
- if (x < 1)
- fun_l3_n344(x)
- else
- fun_l3_n568(x)
- end
-end
-
-def fun_l2_n830(x)
- if (x < 1)
- fun_l3_n892(x)
- else
- fun_l3_n564(x)
- end
-end
-
-def fun_l2_n831(x)
- if (x < 1)
- fun_l3_n520(x)
- else
- fun_l3_n897(x)
- end
-end
-
-def fun_l2_n832(x)
- if (x < 1)
- fun_l3_n986(x)
- else
- fun_l3_n523(x)
- end
-end
-
-def fun_l2_n833(x)
- if (x < 1)
- fun_l3_n649(x)
- else
- fun_l3_n776(x)
- end
-end
-
-def fun_l2_n834(x)
- if (x < 1)
- fun_l3_n613(x)
- else
- fun_l3_n170(x)
- end
-end
-
-def fun_l2_n835(x)
- if (x < 1)
- fun_l3_n657(x)
- else
- fun_l3_n790(x)
- end
-end
-
-def fun_l2_n836(x)
- if (x < 1)
- fun_l3_n976(x)
- else
- fun_l3_n785(x)
- end
-end
-
-def fun_l2_n837(x)
- if (x < 1)
- fun_l3_n746(x)
- else
- fun_l3_n448(x)
- end
-end
-
-def fun_l2_n838(x)
- if (x < 1)
- fun_l3_n911(x)
- else
- fun_l3_n978(x)
- end
-end
-
-def fun_l2_n839(x)
- if (x < 1)
- fun_l3_n917(x)
- else
- fun_l3_n484(x)
- end
-end
-
-def fun_l2_n840(x)
- if (x < 1)
- fun_l3_n930(x)
- else
- fun_l3_n617(x)
- end
-end
-
-def fun_l2_n841(x)
- if (x < 1)
- fun_l3_n753(x)
- else
- fun_l3_n587(x)
- end
-end
-
-def fun_l2_n842(x)
- if (x < 1)
- fun_l3_n21(x)
- else
- fun_l3_n256(x)
- end
-end
-
-def fun_l2_n843(x)
- if (x < 1)
- fun_l3_n697(x)
- else
- fun_l3_n828(x)
- end
-end
-
-def fun_l2_n844(x)
- if (x < 1)
- fun_l3_n59(x)
- else
- fun_l3_n855(x)
- end
-end
-
-def fun_l2_n845(x)
- if (x < 1)
- fun_l3_n637(x)
- else
- fun_l3_n667(x)
- end
-end
-
-def fun_l2_n846(x)
- if (x < 1)
- fun_l3_n229(x)
- else
- fun_l3_n379(x)
- end
-end
-
-def fun_l2_n847(x)
- if (x < 1)
- fun_l3_n908(x)
- else
- fun_l3_n53(x)
- end
-end
-
-def fun_l2_n848(x)
- if (x < 1)
- fun_l3_n72(x)
- else
- fun_l3_n882(x)
- end
-end
-
-def fun_l2_n849(x)
- if (x < 1)
- fun_l3_n890(x)
- else
- fun_l3_n153(x)
- end
-end
-
-def fun_l2_n850(x)
- if (x < 1)
- fun_l3_n301(x)
- else
- fun_l3_n404(x)
- end
-end
-
-def fun_l2_n851(x)
- if (x < 1)
- fun_l3_n451(x)
- else
- fun_l3_n365(x)
- end
-end
-
-def fun_l2_n852(x)
- if (x < 1)
- fun_l3_n591(x)
- else
- fun_l3_n974(x)
- end
-end
-
-def fun_l2_n853(x)
- if (x < 1)
- fun_l3_n534(x)
- else
- fun_l3_n649(x)
- end
-end
-
-def fun_l2_n854(x)
- if (x < 1)
- fun_l3_n438(x)
- else
- fun_l3_n853(x)
- end
-end
-
-def fun_l2_n855(x)
- if (x < 1)
- fun_l3_n181(x)
- else
- fun_l3_n888(x)
- end
-end
-
-def fun_l2_n856(x)
- if (x < 1)
- fun_l3_n856(x)
- else
- fun_l3_n139(x)
- end
-end
-
-def fun_l2_n857(x)
- if (x < 1)
- fun_l3_n664(x)
- else
- fun_l3_n659(x)
- end
-end
-
-def fun_l2_n858(x)
- if (x < 1)
- fun_l3_n838(x)
- else
- fun_l3_n157(x)
- end
-end
-
-def fun_l2_n859(x)
- if (x < 1)
- fun_l3_n542(x)
- else
- fun_l3_n512(x)
- end
-end
-
-def fun_l2_n860(x)
- if (x < 1)
- fun_l3_n213(x)
- else
- fun_l3_n954(x)
- end
-end
-
-def fun_l2_n861(x)
- if (x < 1)
- fun_l3_n580(x)
- else
- fun_l3_n525(x)
- end
-end
-
-def fun_l2_n862(x)
- if (x < 1)
- fun_l3_n649(x)
- else
- fun_l3_n376(x)
- end
-end
-
-def fun_l2_n863(x)
- if (x < 1)
- fun_l3_n846(x)
- else
- fun_l3_n643(x)
- end
-end
-
-def fun_l2_n864(x)
- if (x < 1)
- fun_l3_n899(x)
- else
- fun_l3_n667(x)
- end
-end
-
-def fun_l2_n865(x)
- if (x < 1)
- fun_l3_n326(x)
- else
- fun_l3_n664(x)
- end
-end
-
-def fun_l2_n866(x)
- if (x < 1)
- fun_l3_n155(x)
- else
- fun_l3_n369(x)
- end
-end
-
-def fun_l2_n867(x)
- if (x < 1)
- fun_l3_n583(x)
- else
- fun_l3_n12(x)
- end
-end
-
-def fun_l2_n868(x)
- if (x < 1)
- fun_l3_n637(x)
- else
- fun_l3_n711(x)
- end
-end
-
-def fun_l2_n869(x)
- if (x < 1)
- fun_l3_n120(x)
- else
- fun_l3_n449(x)
- end
-end
-
-def fun_l2_n870(x)
- if (x < 1)
- fun_l3_n459(x)
- else
- fun_l3_n83(x)
- end
-end
-
-def fun_l2_n871(x)
- if (x < 1)
- fun_l3_n298(x)
- else
- fun_l3_n6(x)
- end
-end
-
-def fun_l2_n872(x)
- if (x < 1)
- fun_l3_n640(x)
- else
- fun_l3_n319(x)
- end
-end
-
-def fun_l2_n873(x)
- if (x < 1)
- fun_l3_n777(x)
- else
- fun_l3_n903(x)
- end
-end
-
-def fun_l2_n874(x)
- if (x < 1)
- fun_l3_n16(x)
- else
- fun_l3_n50(x)
- end
-end
-
-def fun_l2_n875(x)
- if (x < 1)
- fun_l3_n732(x)
- else
- fun_l3_n711(x)
- end
-end
-
-def fun_l2_n876(x)
- if (x < 1)
- fun_l3_n958(x)
- else
- fun_l3_n949(x)
- end
-end
-
-def fun_l2_n877(x)
- if (x < 1)
- fun_l3_n992(x)
- else
- fun_l3_n592(x)
- end
-end
-
-def fun_l2_n878(x)
- if (x < 1)
- fun_l3_n283(x)
- else
- fun_l3_n178(x)
- end
-end
-
-def fun_l2_n879(x)
- if (x < 1)
- fun_l3_n179(x)
- else
- fun_l3_n963(x)
- end
-end
-
-def fun_l2_n880(x)
- if (x < 1)
- fun_l3_n345(x)
- else
- fun_l3_n585(x)
- end
-end
-
-def fun_l2_n881(x)
- if (x < 1)
- fun_l3_n859(x)
- else
- fun_l3_n204(x)
- end
-end
-
-def fun_l2_n882(x)
- if (x < 1)
- fun_l3_n718(x)
- else
- fun_l3_n354(x)
- end
-end
-
-def fun_l2_n883(x)
- if (x < 1)
- fun_l3_n58(x)
- else
- fun_l3_n34(x)
- end
-end
-
-def fun_l2_n884(x)
- if (x < 1)
- fun_l3_n442(x)
- else
- fun_l3_n853(x)
- end
-end
-
-def fun_l2_n885(x)
- if (x < 1)
- fun_l3_n37(x)
- else
- fun_l3_n665(x)
- end
-end
-
-def fun_l2_n886(x)
- if (x < 1)
- fun_l3_n468(x)
- else
- fun_l3_n283(x)
- end
-end
-
-def fun_l2_n887(x)
- if (x < 1)
- fun_l3_n674(x)
- else
- fun_l3_n940(x)
- end
-end
-
-def fun_l2_n888(x)
- if (x < 1)
- fun_l3_n556(x)
- else
- fun_l3_n191(x)
- end
-end
-
-def fun_l2_n889(x)
- if (x < 1)
- fun_l3_n451(x)
- else
- fun_l3_n33(x)
- end
-end
-
-def fun_l2_n890(x)
- if (x < 1)
- fun_l3_n724(x)
- else
- fun_l3_n355(x)
- end
-end
-
-def fun_l2_n891(x)
- if (x < 1)
- fun_l3_n811(x)
- else
- fun_l3_n969(x)
- end
-end
-
-def fun_l2_n892(x)
- if (x < 1)
- fun_l3_n122(x)
- else
- fun_l3_n956(x)
- end
-end
-
-def fun_l2_n893(x)
- if (x < 1)
- fun_l3_n416(x)
- else
- fun_l3_n373(x)
- end
-end
-
-def fun_l2_n894(x)
- if (x < 1)
- fun_l3_n990(x)
- else
- fun_l3_n148(x)
- end
-end
-
-def fun_l2_n895(x)
- if (x < 1)
- fun_l3_n52(x)
- else
- fun_l3_n605(x)
- end
-end
-
-def fun_l2_n896(x)
- if (x < 1)
- fun_l3_n523(x)
- else
- fun_l3_n929(x)
- end
-end
-
-def fun_l2_n897(x)
- if (x < 1)
- fun_l3_n631(x)
- else
- fun_l3_n167(x)
- end
-end
-
-def fun_l2_n898(x)
- if (x < 1)
- fun_l3_n366(x)
- else
- fun_l3_n666(x)
- end
-end
-
-def fun_l2_n899(x)
- if (x < 1)
- fun_l3_n758(x)
- else
- fun_l3_n441(x)
- end
-end
-
-def fun_l2_n900(x)
- if (x < 1)
- fun_l3_n561(x)
- else
- fun_l3_n766(x)
- end
-end
-
-def fun_l2_n901(x)
- if (x < 1)
- fun_l3_n323(x)
- else
- fun_l3_n348(x)
- end
-end
-
-def fun_l2_n902(x)
- if (x < 1)
- fun_l3_n455(x)
- else
- fun_l3_n78(x)
- end
-end
-
-def fun_l2_n903(x)
- if (x < 1)
- fun_l3_n373(x)
- else
- fun_l3_n646(x)
- end
-end
-
-def fun_l2_n904(x)
- if (x < 1)
- fun_l3_n595(x)
- else
- fun_l3_n742(x)
- end
-end
-
-def fun_l2_n905(x)
- if (x < 1)
- fun_l3_n102(x)
- else
- fun_l3_n140(x)
- end
-end
-
-def fun_l2_n906(x)
- if (x < 1)
- fun_l3_n458(x)
- else
- fun_l3_n528(x)
- end
-end
-
-def fun_l2_n907(x)
- if (x < 1)
- fun_l3_n970(x)
- else
- fun_l3_n841(x)
- end
-end
-
-def fun_l2_n908(x)
- if (x < 1)
- fun_l3_n97(x)
- else
- fun_l3_n250(x)
- end
-end
-
-def fun_l2_n909(x)
- if (x < 1)
- fun_l3_n381(x)
- else
- fun_l3_n44(x)
- end
-end
-
-def fun_l2_n910(x)
- if (x < 1)
- fun_l3_n812(x)
- else
- fun_l3_n225(x)
- end
-end
-
-def fun_l2_n911(x)
- if (x < 1)
- fun_l3_n849(x)
- else
- fun_l3_n683(x)
- end
-end
-
-def fun_l2_n912(x)
- if (x < 1)
- fun_l3_n958(x)
- else
- fun_l3_n590(x)
- end
-end
-
-def fun_l2_n913(x)
- if (x < 1)
- fun_l3_n858(x)
- else
- fun_l3_n140(x)
- end
-end
-
-def fun_l2_n914(x)
- if (x < 1)
- fun_l3_n997(x)
- else
- fun_l3_n959(x)
- end
-end
-
-def fun_l2_n915(x)
- if (x < 1)
- fun_l3_n184(x)
- else
- fun_l3_n910(x)
- end
-end
-
-def fun_l2_n916(x)
- if (x < 1)
- fun_l3_n369(x)
- else
- fun_l3_n180(x)
- end
-end
-
-def fun_l2_n917(x)
- if (x < 1)
- fun_l3_n537(x)
- else
- fun_l3_n927(x)
- end
-end
-
-def fun_l2_n918(x)
- if (x < 1)
- fun_l3_n739(x)
- else
- fun_l3_n222(x)
- end
-end
-
-def fun_l2_n919(x)
- if (x < 1)
- fun_l3_n640(x)
- else
- fun_l3_n406(x)
- end
-end
-
-def fun_l2_n920(x)
- if (x < 1)
- fun_l3_n371(x)
- else
- fun_l3_n976(x)
- end
-end
-
-def fun_l2_n921(x)
- if (x < 1)
- fun_l3_n262(x)
- else
- fun_l3_n532(x)
- end
-end
-
-def fun_l2_n922(x)
- if (x < 1)
- fun_l3_n772(x)
- else
- fun_l3_n368(x)
- end
-end
-
-def fun_l2_n923(x)
- if (x < 1)
- fun_l3_n935(x)
- else
- fun_l3_n109(x)
- end
-end
-
-def fun_l2_n924(x)
- if (x < 1)
- fun_l3_n982(x)
- else
- fun_l3_n643(x)
- end
-end
-
-def fun_l2_n925(x)
- if (x < 1)
- fun_l3_n849(x)
- else
- fun_l3_n266(x)
- end
-end
-
-def fun_l2_n926(x)
- if (x < 1)
- fun_l3_n977(x)
- else
- fun_l3_n803(x)
- end
-end
-
-def fun_l2_n927(x)
- if (x < 1)
- fun_l3_n706(x)
- else
- fun_l3_n441(x)
- end
-end
-
-def fun_l2_n928(x)
- if (x < 1)
- fun_l3_n781(x)
- else
- fun_l3_n374(x)
- end
-end
-
-def fun_l2_n929(x)
- if (x < 1)
- fun_l3_n122(x)
- else
- fun_l3_n851(x)
- end
-end
-
-def fun_l2_n930(x)
- if (x < 1)
- fun_l3_n821(x)
- else
- fun_l3_n904(x)
- end
-end
-
-def fun_l2_n931(x)
- if (x < 1)
- fun_l3_n379(x)
- else
- fun_l3_n211(x)
- end
-end
-
-def fun_l2_n932(x)
- if (x < 1)
- fun_l3_n572(x)
- else
- fun_l3_n169(x)
- end
-end
-
-def fun_l2_n933(x)
- if (x < 1)
- fun_l3_n620(x)
- else
- fun_l3_n703(x)
- end
-end
-
-def fun_l2_n934(x)
- if (x < 1)
- fun_l3_n238(x)
- else
- fun_l3_n220(x)
- end
-end
-
-def fun_l2_n935(x)
- if (x < 1)
- fun_l3_n652(x)
- else
- fun_l3_n822(x)
- end
-end
-
-def fun_l2_n936(x)
- if (x < 1)
- fun_l3_n818(x)
- else
- fun_l3_n384(x)
- end
-end
-
-def fun_l2_n937(x)
- if (x < 1)
- fun_l3_n560(x)
- else
- fun_l3_n875(x)
- end
-end
-
-def fun_l2_n938(x)
- if (x < 1)
- fun_l3_n417(x)
- else
- fun_l3_n900(x)
- end
-end
-
-def fun_l2_n939(x)
- if (x < 1)
- fun_l3_n740(x)
- else
- fun_l3_n431(x)
- end
-end
-
-def fun_l2_n940(x)
- if (x < 1)
- fun_l3_n1(x)
- else
- fun_l3_n147(x)
- end
-end
-
-def fun_l2_n941(x)
- if (x < 1)
- fun_l3_n64(x)
- else
- fun_l3_n317(x)
- end
-end
-
-def fun_l2_n942(x)
- if (x < 1)
- fun_l3_n347(x)
- else
- fun_l3_n778(x)
- end
-end
-
-def fun_l2_n943(x)
- if (x < 1)
- fun_l3_n819(x)
- else
- fun_l3_n446(x)
- end
-end
-
-def fun_l2_n944(x)
- if (x < 1)
- fun_l3_n492(x)
- else
- fun_l3_n381(x)
- end
-end
-
-def fun_l2_n945(x)
- if (x < 1)
- fun_l3_n594(x)
- else
- fun_l3_n413(x)
- end
-end
-
-def fun_l2_n946(x)
- if (x < 1)
- fun_l3_n580(x)
- else
- fun_l3_n838(x)
- end
-end
-
-def fun_l2_n947(x)
- if (x < 1)
- fun_l3_n880(x)
- else
- fun_l3_n768(x)
- end
-end
-
-def fun_l2_n948(x)
- if (x < 1)
- fun_l3_n9(x)
- else
- fun_l3_n888(x)
- end
-end
-
-def fun_l2_n949(x)
- if (x < 1)
- fun_l3_n365(x)
- else
- fun_l3_n322(x)
- end
-end
-
-def fun_l2_n950(x)
- if (x < 1)
- fun_l3_n283(x)
- else
- fun_l3_n921(x)
- end
-end
-
-def fun_l2_n951(x)
- if (x < 1)
- fun_l3_n740(x)
- else
- fun_l3_n336(x)
- end
-end
-
-def fun_l2_n952(x)
- if (x < 1)
- fun_l3_n827(x)
- else
- fun_l3_n683(x)
- end
-end
-
-def fun_l2_n953(x)
- if (x < 1)
- fun_l3_n289(x)
- else
- fun_l3_n915(x)
- end
-end
-
-def fun_l2_n954(x)
- if (x < 1)
- fun_l3_n234(x)
- else
- fun_l3_n198(x)
- end
-end
-
-def fun_l2_n955(x)
- if (x < 1)
- fun_l3_n364(x)
- else
- fun_l3_n152(x)
- end
-end
-
-def fun_l2_n956(x)
- if (x < 1)
- fun_l3_n370(x)
- else
- fun_l3_n786(x)
- end
-end
-
-def fun_l2_n957(x)
- if (x < 1)
- fun_l3_n672(x)
- else
- fun_l3_n375(x)
- end
-end
-
-def fun_l2_n958(x)
- if (x < 1)
- fun_l3_n423(x)
- else
- fun_l3_n448(x)
- end
-end
-
-def fun_l2_n959(x)
- if (x < 1)
- fun_l3_n887(x)
- else
- fun_l3_n33(x)
- end
-end
-
-def fun_l2_n960(x)
- if (x < 1)
- fun_l3_n280(x)
- else
- fun_l3_n334(x)
- end
-end
-
-def fun_l2_n961(x)
- if (x < 1)
- fun_l3_n535(x)
- else
- fun_l3_n524(x)
- end
-end
-
-def fun_l2_n962(x)
- if (x < 1)
- fun_l3_n689(x)
- else
- fun_l3_n426(x)
- end
-end
-
-def fun_l2_n963(x)
- if (x < 1)
- fun_l3_n235(x)
- else
- fun_l3_n286(x)
- end
-end
-
-def fun_l2_n964(x)
- if (x < 1)
- fun_l3_n116(x)
- else
- fun_l3_n308(x)
- end
-end
-
-def fun_l2_n965(x)
- if (x < 1)
- fun_l3_n174(x)
- else
- fun_l3_n823(x)
- end
-end
-
-def fun_l2_n966(x)
- if (x < 1)
- fun_l3_n792(x)
- else
- fun_l3_n29(x)
- end
-end
-
-def fun_l2_n967(x)
- if (x < 1)
- fun_l3_n755(x)
- else
- fun_l3_n689(x)
- end
-end
-
-def fun_l2_n968(x)
- if (x < 1)
- fun_l3_n167(x)
- else
- fun_l3_n287(x)
- end
-end
-
-def fun_l2_n969(x)
- if (x < 1)
- fun_l3_n836(x)
- else
- fun_l3_n892(x)
- end
-end
-
-def fun_l2_n970(x)
- if (x < 1)
- fun_l3_n201(x)
- else
- fun_l3_n677(x)
- end
-end
-
-def fun_l2_n971(x)
- if (x < 1)
- fun_l3_n990(x)
- else
- fun_l3_n251(x)
- end
-end
-
-def fun_l2_n972(x)
- if (x < 1)
- fun_l3_n500(x)
- else
- fun_l3_n686(x)
- end
-end
-
-def fun_l2_n973(x)
- if (x < 1)
- fun_l3_n969(x)
- else
- fun_l3_n819(x)
- end
-end
-
-def fun_l2_n974(x)
- if (x < 1)
- fun_l3_n87(x)
- else
- fun_l3_n120(x)
- end
-end
-
-def fun_l2_n975(x)
- if (x < 1)
- fun_l3_n701(x)
- else
- fun_l3_n569(x)
- end
-end
-
-def fun_l2_n976(x)
- if (x < 1)
- fun_l3_n128(x)
- else
- fun_l3_n310(x)
- end
-end
-
-def fun_l2_n977(x)
- if (x < 1)
- fun_l3_n690(x)
- else
- fun_l3_n5(x)
- end
-end
-
-def fun_l2_n978(x)
- if (x < 1)
- fun_l3_n432(x)
- else
- fun_l3_n964(x)
- end
-end
-
-def fun_l2_n979(x)
- if (x < 1)
- fun_l3_n198(x)
- else
- fun_l3_n161(x)
- end
-end
-
-def fun_l2_n980(x)
- if (x < 1)
- fun_l3_n415(x)
- else
- fun_l3_n768(x)
- end
-end
-
-def fun_l2_n981(x)
- if (x < 1)
- fun_l3_n635(x)
- else
- fun_l3_n569(x)
- end
-end
-
-def fun_l2_n982(x)
- if (x < 1)
- fun_l3_n326(x)
- else
- fun_l3_n338(x)
- end
-end
-
-def fun_l2_n983(x)
- if (x < 1)
- fun_l3_n243(x)
- else
- fun_l3_n48(x)
- end
-end
-
-def fun_l2_n984(x)
- if (x < 1)
- fun_l3_n204(x)
- else
- fun_l3_n141(x)
- end
-end
-
-def fun_l2_n985(x)
- if (x < 1)
- fun_l3_n805(x)
- else
- fun_l3_n577(x)
- end
-end
-
-def fun_l2_n986(x)
- if (x < 1)
- fun_l3_n237(x)
- else
- fun_l3_n833(x)
- end
-end
-
-def fun_l2_n987(x)
- if (x < 1)
- fun_l3_n643(x)
- else
- fun_l3_n629(x)
- end
-end
-
-def fun_l2_n988(x)
- if (x < 1)
- fun_l3_n911(x)
- else
- fun_l3_n712(x)
- end
-end
-
-def fun_l2_n989(x)
- if (x < 1)
- fun_l3_n936(x)
- else
- fun_l3_n300(x)
- end
-end
-
-def fun_l2_n990(x)
- if (x < 1)
- fun_l3_n561(x)
- else
- fun_l3_n281(x)
- end
-end
-
-def fun_l2_n991(x)
- if (x < 1)
- fun_l3_n226(x)
- else
- fun_l3_n203(x)
- end
-end
-
-def fun_l2_n992(x)
- if (x < 1)
- fun_l3_n727(x)
- else
- fun_l3_n437(x)
- end
-end
-
-def fun_l2_n993(x)
- if (x < 1)
- fun_l3_n608(x)
- else
- fun_l3_n169(x)
- end
-end
-
-def fun_l2_n994(x)
- if (x < 1)
- fun_l3_n30(x)
- else
- fun_l3_n980(x)
- end
-end
-
-def fun_l2_n995(x)
- if (x < 1)
- fun_l3_n652(x)
- else
- fun_l3_n122(x)
- end
-end
-
-def fun_l2_n996(x)
- if (x < 1)
- fun_l3_n334(x)
- else
- fun_l3_n668(x)
- end
-end
-
-def fun_l2_n997(x)
- if (x < 1)
- fun_l3_n241(x)
- else
- fun_l3_n515(x)
- end
-end
-
-def fun_l2_n998(x)
- if (x < 1)
- fun_l3_n665(x)
- else
- fun_l3_n54(x)
- end
-end
-
-def fun_l2_n999(x)
- if (x < 1)
- fun_l3_n568(x)
- else
- fun_l3_n652(x)
- end
-end
-
-def fun_l3_n0(x)
- if (x < 1)
- fun_l4_n169(x)
- else
- fun_l4_n923(x)
- end
-end
-
-def fun_l3_n1(x)
- if (x < 1)
- fun_l4_n214(x)
- else
- fun_l4_n506(x)
- end
-end
-
-def fun_l3_n2(x)
- if (x < 1)
- fun_l4_n513(x)
- else
- fun_l4_n409(x)
- end
-end
-
-def fun_l3_n3(x)
- if (x < 1)
- fun_l4_n133(x)
- else
- fun_l4_n293(x)
- end
-end
-
-def fun_l3_n4(x)
- if (x < 1)
- fun_l4_n550(x)
- else
- fun_l4_n95(x)
- end
-end
-
-def fun_l3_n5(x)
- if (x < 1)
- fun_l4_n13(x)
- else
- fun_l4_n508(x)
- end
-end
-
-def fun_l3_n6(x)
- if (x < 1)
- fun_l4_n607(x)
- else
- fun_l4_n140(x)
- end
-end
-
-def fun_l3_n7(x)
- if (x < 1)
- fun_l4_n65(x)
- else
- fun_l4_n90(x)
- end
-end
-
-def fun_l3_n8(x)
- if (x < 1)
- fun_l4_n516(x)
- else
- fun_l4_n445(x)
- end
-end
-
-def fun_l3_n9(x)
- if (x < 1)
- fun_l4_n713(x)
- else
- fun_l4_n487(x)
- end
-end
-
-def fun_l3_n10(x)
- if (x < 1)
- fun_l4_n16(x)
- else
- fun_l4_n547(x)
- end
-end
-
-def fun_l3_n11(x)
- if (x < 1)
- fun_l4_n561(x)
- else
- fun_l4_n530(x)
- end
-end
-
-def fun_l3_n12(x)
- if (x < 1)
- fun_l4_n866(x)
- else
- fun_l4_n187(x)
- end
-end
-
-def fun_l3_n13(x)
- if (x < 1)
- fun_l4_n8(x)
- else
- fun_l4_n458(x)
- end
-end
-
-def fun_l3_n14(x)
- if (x < 1)
- fun_l4_n627(x)
- else
- fun_l4_n122(x)
- end
-end
-
-def fun_l3_n15(x)
- if (x < 1)
- fun_l4_n988(x)
- else
- fun_l4_n4(x)
- end
-end
-
-def fun_l3_n16(x)
- if (x < 1)
- fun_l4_n654(x)
- else
- fun_l4_n863(x)
- end
-end
-
-def fun_l3_n17(x)
- if (x < 1)
- fun_l4_n112(x)
- else
- fun_l4_n223(x)
- end
-end
-
-def fun_l3_n18(x)
- if (x < 1)
- fun_l4_n808(x)
- else
- fun_l4_n161(x)
- end
-end
-
-def fun_l3_n19(x)
- if (x < 1)
- fun_l4_n265(x)
- else
- fun_l4_n860(x)
- end
-end
-
-def fun_l3_n20(x)
- if (x < 1)
- fun_l4_n60(x)
- else
- fun_l4_n943(x)
- end
-end
-
-def fun_l3_n21(x)
- if (x < 1)
- fun_l4_n707(x)
- else
- fun_l4_n990(x)
- end
-end
-
-def fun_l3_n22(x)
- if (x < 1)
- fun_l4_n774(x)
- else
- fun_l4_n686(x)
- end
-end
-
-def fun_l3_n23(x)
- if (x < 1)
- fun_l4_n552(x)
- else
- fun_l4_n935(x)
- end
-end
-
-def fun_l3_n24(x)
- if (x < 1)
- fun_l4_n752(x)
- else
- fun_l4_n279(x)
- end
-end
-
-def fun_l3_n25(x)
- if (x < 1)
- fun_l4_n325(x)
- else
- fun_l4_n440(x)
- end
-end
-
-def fun_l3_n26(x)
- if (x < 1)
- fun_l4_n330(x)
- else
- fun_l4_n233(x)
- end
-end
-
-def fun_l3_n27(x)
- if (x < 1)
- fun_l4_n112(x)
- else
- fun_l4_n399(x)
- end
-end
-
-def fun_l3_n28(x)
- if (x < 1)
- fun_l4_n420(x)
- else
- fun_l4_n570(x)
- end
-end
-
-def fun_l3_n29(x)
- if (x < 1)
- fun_l4_n515(x)
- else
- fun_l4_n485(x)
- end
-end
-
-def fun_l3_n30(x)
- if (x < 1)
- fun_l4_n694(x)
- else
- fun_l4_n279(x)
- end
-end
-
-def fun_l3_n31(x)
- if (x < 1)
- fun_l4_n683(x)
- else
- fun_l4_n396(x)
- end
-end
-
-def fun_l3_n32(x)
- if (x < 1)
- fun_l4_n997(x)
- else
- fun_l4_n978(x)
- end
-end
-
-def fun_l3_n33(x)
- if (x < 1)
- fun_l4_n260(x)
- else
- fun_l4_n895(x)
- end
-end
-
-def fun_l3_n34(x)
- if (x < 1)
- fun_l4_n510(x)
- else
- fun_l4_n147(x)
- end
-end
-
-def fun_l3_n35(x)
- if (x < 1)
- fun_l4_n415(x)
- else
- fun_l4_n590(x)
- end
-end
-
-def fun_l3_n36(x)
- if (x < 1)
- fun_l4_n164(x)
- else
- fun_l4_n990(x)
- end
-end
-
-def fun_l3_n37(x)
- if (x < 1)
- fun_l4_n744(x)
- else
- fun_l4_n981(x)
- end
-end
-
-def fun_l3_n38(x)
- if (x < 1)
- fun_l4_n243(x)
- else
- fun_l4_n385(x)
- end
-end
-
-def fun_l3_n39(x)
- if (x < 1)
- fun_l4_n874(x)
- else
- fun_l4_n941(x)
- end
-end
-
-def fun_l3_n40(x)
- if (x < 1)
- fun_l4_n39(x)
- else
- fun_l4_n115(x)
- end
-end
-
-def fun_l3_n41(x)
- if (x < 1)
- fun_l4_n829(x)
- else
- fun_l4_n991(x)
- end
-end
-
-def fun_l3_n42(x)
- if (x < 1)
- fun_l4_n234(x)
- else
- fun_l4_n359(x)
- end
-end
-
-def fun_l3_n43(x)
- if (x < 1)
- fun_l4_n481(x)
- else
- fun_l4_n368(x)
- end
-end
-
-def fun_l3_n44(x)
- if (x < 1)
- fun_l4_n969(x)
- else
- fun_l4_n716(x)
- end
-end
-
-def fun_l3_n45(x)
- if (x < 1)
- fun_l4_n858(x)
- else
- fun_l4_n446(x)
- end
-end
-
-def fun_l3_n46(x)
- if (x < 1)
- fun_l4_n786(x)
- else
- fun_l4_n418(x)
- end
-end
-
-def fun_l3_n47(x)
- if (x < 1)
- fun_l4_n261(x)
- else
- fun_l4_n346(x)
- end
-end
-
-def fun_l3_n48(x)
- if (x < 1)
- fun_l4_n422(x)
- else
- fun_l4_n710(x)
- end
-end
-
-def fun_l3_n49(x)
- if (x < 1)
- fun_l4_n533(x)
- else
- fun_l4_n599(x)
- end
-end
-
-def fun_l3_n50(x)
- if (x < 1)
- fun_l4_n922(x)
- else
- fun_l4_n90(x)
- end
-end
-
-def fun_l3_n51(x)
- if (x < 1)
- fun_l4_n718(x)
- else
- fun_l4_n854(x)
- end
-end
-
-def fun_l3_n52(x)
- if (x < 1)
- fun_l4_n993(x)
- else
- fun_l4_n996(x)
- end
-end
-
-def fun_l3_n53(x)
- if (x < 1)
- fun_l4_n628(x)
- else
- fun_l4_n589(x)
- end
-end
-
-def fun_l3_n54(x)
- if (x < 1)
- fun_l4_n735(x)
- else
- fun_l4_n258(x)
- end
-end
-
-def fun_l3_n55(x)
- if (x < 1)
- fun_l4_n794(x)
- else
- fun_l4_n559(x)
- end
-end
-
-def fun_l3_n56(x)
- if (x < 1)
- fun_l4_n771(x)
- else
- fun_l4_n812(x)
- end
-end
-
-def fun_l3_n57(x)
- if (x < 1)
- fun_l4_n106(x)
- else
- fun_l4_n144(x)
- end
-end
-
-def fun_l3_n58(x)
- if (x < 1)
- fun_l4_n2(x)
- else
- fun_l4_n49(x)
- end
-end
-
-def fun_l3_n59(x)
- if (x < 1)
- fun_l4_n540(x)
- else
- fun_l4_n164(x)
- end
-end
-
-def fun_l3_n60(x)
- if (x < 1)
- fun_l4_n638(x)
- else
- fun_l4_n984(x)
- end
-end
-
-def fun_l3_n61(x)
- if (x < 1)
- fun_l4_n144(x)
- else
- fun_l4_n236(x)
- end
-end
-
-def fun_l3_n62(x)
- if (x < 1)
- fun_l4_n345(x)
- else
- fun_l4_n65(x)
- end
-end
-
-def fun_l3_n63(x)
- if (x < 1)
- fun_l4_n112(x)
- else
- fun_l4_n216(x)
- end
-end
-
-def fun_l3_n64(x)
- if (x < 1)
- fun_l4_n213(x)
- else
- fun_l4_n370(x)
- end
-end
-
-def fun_l3_n65(x)
- if (x < 1)
- fun_l4_n845(x)
- else
- fun_l4_n672(x)
- end
-end
-
-def fun_l3_n66(x)
- if (x < 1)
- fun_l4_n951(x)
- else
- fun_l4_n415(x)
- end
-end
-
-def fun_l3_n67(x)
- if (x < 1)
- fun_l4_n997(x)
- else
- fun_l4_n760(x)
- end
-end
-
-def fun_l3_n68(x)
- if (x < 1)
- fun_l4_n595(x)
- else
- fun_l4_n517(x)
- end
-end
-
-def fun_l3_n69(x)
- if (x < 1)
- fun_l4_n776(x)
- else
- fun_l4_n550(x)
- end
-end
-
-def fun_l3_n70(x)
- if (x < 1)
- fun_l4_n360(x)
- else
- fun_l4_n836(x)
- end
-end
-
-def fun_l3_n71(x)
- if (x < 1)
- fun_l4_n214(x)
- else
- fun_l4_n532(x)
- end
-end
-
-def fun_l3_n72(x)
- if (x < 1)
- fun_l4_n138(x)
- else
- fun_l4_n881(x)
- end
-end
-
-def fun_l3_n73(x)
- if (x < 1)
- fun_l4_n793(x)
- else
- fun_l4_n866(x)
- end
-end
-
-def fun_l3_n74(x)
- if (x < 1)
- fun_l4_n883(x)
- else
- fun_l4_n730(x)
- end
-end
-
-def fun_l3_n75(x)
- if (x < 1)
- fun_l4_n525(x)
- else
- fun_l4_n188(x)
- end
-end
-
-def fun_l3_n76(x)
- if (x < 1)
- fun_l4_n528(x)
- else
- fun_l4_n723(x)
- end
-end
-
-def fun_l3_n77(x)
- if (x < 1)
- fun_l4_n954(x)
- else
- fun_l4_n581(x)
- end
-end
-
-def fun_l3_n78(x)
- if (x < 1)
- fun_l4_n614(x)
- else
- fun_l4_n941(x)
- end
-end
-
-def fun_l3_n79(x)
- if (x < 1)
- fun_l4_n396(x)
- else
- fun_l4_n539(x)
- end
-end
-
-def fun_l3_n80(x)
- if (x < 1)
- fun_l4_n1(x)
- else
- fun_l4_n708(x)
- end
-end
-
-def fun_l3_n81(x)
- if (x < 1)
- fun_l4_n626(x)
- else
- fun_l4_n418(x)
- end
-end
-
-def fun_l3_n82(x)
- if (x < 1)
- fun_l4_n5(x)
- else
- fun_l4_n108(x)
- end
-end
-
-def fun_l3_n83(x)
- if (x < 1)
- fun_l4_n683(x)
- else
- fun_l4_n679(x)
- end
-end
-
-def fun_l3_n84(x)
- if (x < 1)
- fun_l4_n613(x)
- else
- fun_l4_n596(x)
- end
-end
-
-def fun_l3_n85(x)
- if (x < 1)
- fun_l4_n490(x)
- else
- fun_l4_n178(x)
- end
-end
-
-def fun_l3_n86(x)
- if (x < 1)
- fun_l4_n286(x)
- else
- fun_l4_n724(x)
- end
-end
-
-def fun_l3_n87(x)
- if (x < 1)
- fun_l4_n989(x)
- else
- fun_l4_n711(x)
- end
-end
-
-def fun_l3_n88(x)
- if (x < 1)
- fun_l4_n422(x)
- else
- fun_l4_n259(x)
- end
-end
-
-def fun_l3_n89(x)
- if (x < 1)
- fun_l4_n938(x)
- else
- fun_l4_n123(x)
- end
-end
-
-def fun_l3_n90(x)
- if (x < 1)
- fun_l4_n589(x)
- else
- fun_l4_n231(x)
- end
-end
-
-def fun_l3_n91(x)
- if (x < 1)
- fun_l4_n484(x)
- else
- fun_l4_n439(x)
- end
-end
-
-def fun_l3_n92(x)
- if (x < 1)
- fun_l4_n469(x)
- else
- fun_l4_n737(x)
- end
-end
-
-def fun_l3_n93(x)
- if (x < 1)
- fun_l4_n93(x)
- else
- fun_l4_n907(x)
- end
-end
-
-def fun_l3_n94(x)
- if (x < 1)
- fun_l4_n468(x)
- else
- fun_l4_n219(x)
- end
-end
-
-def fun_l3_n95(x)
- if (x < 1)
- fun_l4_n409(x)
- else
- fun_l4_n921(x)
- end
-end
-
-def fun_l3_n96(x)
- if (x < 1)
- fun_l4_n952(x)
- else
- fun_l4_n167(x)
- end
-end
-
-def fun_l3_n97(x)
- if (x < 1)
- fun_l4_n177(x)
- else
- fun_l4_n462(x)
- end
-end
-
-def fun_l3_n98(x)
- if (x < 1)
- fun_l4_n351(x)
- else
- fun_l4_n89(x)
- end
-end
-
-def fun_l3_n99(x)
- if (x < 1)
- fun_l4_n869(x)
- else
- fun_l4_n502(x)
- end
-end
-
-def fun_l3_n100(x)
- if (x < 1)
- fun_l4_n985(x)
- else
- fun_l4_n297(x)
- end
-end
-
-def fun_l3_n101(x)
- if (x < 1)
- fun_l4_n48(x)
- else
- fun_l4_n895(x)
- end
-end
-
-def fun_l3_n102(x)
- if (x < 1)
- fun_l4_n92(x)
- else
- fun_l4_n36(x)
- end
-end
-
-def fun_l3_n103(x)
- if (x < 1)
- fun_l4_n610(x)
- else
- fun_l4_n616(x)
- end
-end
-
-def fun_l3_n104(x)
- if (x < 1)
- fun_l4_n472(x)
- else
- fun_l4_n689(x)
- end
-end
-
-def fun_l3_n105(x)
- if (x < 1)
- fun_l4_n75(x)
- else
- fun_l4_n161(x)
- end
-end
-
-def fun_l3_n106(x)
- if (x < 1)
- fun_l4_n300(x)
- else
- fun_l4_n767(x)
- end
-end
-
-def fun_l3_n107(x)
- if (x < 1)
- fun_l4_n707(x)
- else
- fun_l4_n229(x)
- end
-end
-
-def fun_l3_n108(x)
- if (x < 1)
- fun_l4_n761(x)
- else
- fun_l4_n97(x)
- end
-end
-
-def fun_l3_n109(x)
- if (x < 1)
- fun_l4_n734(x)
- else
- fun_l4_n290(x)
- end
-end
-
-def fun_l3_n110(x)
- if (x < 1)
- fun_l4_n819(x)
- else
- fun_l4_n567(x)
- end
-end
-
-def fun_l3_n111(x)
- if (x < 1)
- fun_l4_n904(x)
- else
- fun_l4_n322(x)
- end
-end
-
-def fun_l3_n112(x)
- if (x < 1)
- fun_l4_n907(x)
- else
- fun_l4_n667(x)
- end
-end
-
-def fun_l3_n113(x)
- if (x < 1)
- fun_l4_n473(x)
- else
- fun_l4_n620(x)
- end
-end
-
-def fun_l3_n114(x)
- if (x < 1)
- fun_l4_n278(x)
- else
- fun_l4_n998(x)
- end
-end
-
-def fun_l3_n115(x)
- if (x < 1)
- fun_l4_n185(x)
- else
- fun_l4_n962(x)
- end
-end
-
-def fun_l3_n116(x)
- if (x < 1)
- fun_l4_n989(x)
- else
- fun_l4_n993(x)
- end
-end
-
-def fun_l3_n117(x)
- if (x < 1)
- fun_l4_n140(x)
- else
- fun_l4_n456(x)
- end
-end
-
-def fun_l3_n118(x)
- if (x < 1)
- fun_l4_n920(x)
- else
- fun_l4_n701(x)
- end
-end
-
-def fun_l3_n119(x)
- if (x < 1)
- fun_l4_n263(x)
- else
- fun_l4_n837(x)
- end
-end
-
-def fun_l3_n120(x)
- if (x < 1)
- fun_l4_n54(x)
- else
- fun_l4_n964(x)
- end
-end
-
-def fun_l3_n121(x)
- if (x < 1)
- fun_l4_n540(x)
- else
- fun_l4_n543(x)
- end
-end
-
-def fun_l3_n122(x)
- if (x < 1)
- fun_l4_n51(x)
- else
- fun_l4_n453(x)
- end
-end
-
-def fun_l3_n123(x)
- if (x < 1)
- fun_l4_n726(x)
- else
- fun_l4_n785(x)
- end
-end
-
-def fun_l3_n124(x)
- if (x < 1)
- fun_l4_n932(x)
- else
- fun_l4_n583(x)
- end
-end
-
-def fun_l3_n125(x)
- if (x < 1)
- fun_l4_n471(x)
- else
- fun_l4_n518(x)
- end
-end
-
-def fun_l3_n126(x)
- if (x < 1)
- fun_l4_n351(x)
- else
- fun_l4_n825(x)
- end
-end
-
-def fun_l3_n127(x)
- if (x < 1)
- fun_l4_n759(x)
- else
- fun_l4_n203(x)
- end
-end
-
-def fun_l3_n128(x)
- if (x < 1)
- fun_l4_n336(x)
- else
- fun_l4_n861(x)
- end
-end
-
-def fun_l3_n129(x)
- if (x < 1)
- fun_l4_n573(x)
- else
- fun_l4_n568(x)
- end
-end
-
-def fun_l3_n130(x)
- if (x < 1)
- fun_l4_n788(x)
- else
- fun_l4_n259(x)
- end
-end
-
-def fun_l3_n131(x)
- if (x < 1)
- fun_l4_n392(x)
- else
- fun_l4_n932(x)
- end
-end
-
-def fun_l3_n132(x)
- if (x < 1)
- fun_l4_n919(x)
- else
- fun_l4_n650(x)
- end
-end
-
-def fun_l3_n133(x)
- if (x < 1)
- fun_l4_n895(x)
- else
- fun_l4_n983(x)
- end
-end
-
-def fun_l3_n134(x)
- if (x < 1)
- fun_l4_n389(x)
- else
- fun_l4_n358(x)
- end
-end
-
-def fun_l3_n135(x)
- if (x < 1)
- fun_l4_n732(x)
- else
- fun_l4_n747(x)
- end
-end
-
-def fun_l3_n136(x)
- if (x < 1)
- fun_l4_n756(x)
- else
- fun_l4_n592(x)
- end
-end
-
-def fun_l3_n137(x)
- if (x < 1)
- fun_l4_n581(x)
- else
- fun_l4_n24(x)
- end
-end
-
-def fun_l3_n138(x)
- if (x < 1)
- fun_l4_n932(x)
- else
- fun_l4_n599(x)
- end
-end
-
-def fun_l3_n139(x)
- if (x < 1)
- fun_l4_n955(x)
- else
- fun_l4_n148(x)
- end
-end
-
-def fun_l3_n140(x)
- if (x < 1)
- fun_l4_n332(x)
- else
- fun_l4_n677(x)
- end
-end
-
-def fun_l3_n141(x)
- if (x < 1)
- fun_l4_n152(x)
- else
- fun_l4_n696(x)
- end
-end
-
-def fun_l3_n142(x)
- if (x < 1)
- fun_l4_n295(x)
- else
- fun_l4_n205(x)
- end
-end
-
-def fun_l3_n143(x)
- if (x < 1)
- fun_l4_n543(x)
- else
- fun_l4_n951(x)
- end
-end
-
-def fun_l3_n144(x)
- if (x < 1)
- fun_l4_n656(x)
- else
- fun_l4_n494(x)
- end
-end
-
-def fun_l3_n145(x)
- if (x < 1)
- fun_l4_n729(x)
- else
- fun_l4_n749(x)
- end
-end
-
-def fun_l3_n146(x)
- if (x < 1)
- fun_l4_n197(x)
- else
- fun_l4_n3(x)
- end
-end
-
-def fun_l3_n147(x)
- if (x < 1)
- fun_l4_n519(x)
- else
- fun_l4_n36(x)
- end
-end
-
-def fun_l3_n148(x)
- if (x < 1)
- fun_l4_n100(x)
- else
- fun_l4_n463(x)
- end
-end
-
-def fun_l3_n149(x)
- if (x < 1)
- fun_l4_n890(x)
- else
- fun_l4_n947(x)
- end
-end
-
-def fun_l3_n150(x)
- if (x < 1)
- fun_l4_n512(x)
- else
- fun_l4_n982(x)
- end
-end
-
-def fun_l3_n151(x)
- if (x < 1)
- fun_l4_n750(x)
- else
- fun_l4_n781(x)
- end
-end
-
-def fun_l3_n152(x)
- if (x < 1)
- fun_l4_n193(x)
- else
- fun_l4_n530(x)
- end
-end
-
-def fun_l3_n153(x)
- if (x < 1)
- fun_l4_n189(x)
- else
- fun_l4_n209(x)
- end
-end
-
-def fun_l3_n154(x)
- if (x < 1)
- fun_l4_n343(x)
- else
- fun_l4_n44(x)
- end
-end
-
-def fun_l3_n155(x)
- if (x < 1)
- fun_l4_n536(x)
- else
- fun_l4_n228(x)
- end
-end
-
-def fun_l3_n156(x)
- if (x < 1)
- fun_l4_n475(x)
- else
- fun_l4_n790(x)
- end
-end
-
-def fun_l3_n157(x)
- if (x < 1)
- fun_l4_n954(x)
- else
- fun_l4_n242(x)
- end
-end
-
-def fun_l3_n158(x)
- if (x < 1)
- fun_l4_n19(x)
- else
- fun_l4_n735(x)
- end
-end
-
-def fun_l3_n159(x)
- if (x < 1)
- fun_l4_n900(x)
- else
- fun_l4_n456(x)
- end
-end
-
-def fun_l3_n160(x)
- if (x < 1)
- fun_l4_n193(x)
- else
- fun_l4_n606(x)
- end
-end
-
-def fun_l3_n161(x)
- if (x < 1)
- fun_l4_n684(x)
- else
- fun_l4_n622(x)
- end
-end
-
-def fun_l3_n162(x)
- if (x < 1)
- fun_l4_n260(x)
- else
- fun_l4_n582(x)
- end
-end
-
-def fun_l3_n163(x)
- if (x < 1)
- fun_l4_n713(x)
- else
- fun_l4_n601(x)
- end
-end
-
-def fun_l3_n164(x)
- if (x < 1)
- fun_l4_n819(x)
- else
- fun_l4_n642(x)
- end
-end
-
-def fun_l3_n165(x)
- if (x < 1)
- fun_l4_n45(x)
- else
- fun_l4_n777(x)
- end
-end
-
-def fun_l3_n166(x)
- if (x < 1)
- fun_l4_n256(x)
- else
- fun_l4_n92(x)
- end
-end
-
-def fun_l3_n167(x)
- if (x < 1)
- fun_l4_n975(x)
- else
- fun_l4_n962(x)
- end
-end
-
-def fun_l3_n168(x)
- if (x < 1)
- fun_l4_n579(x)
- else
- fun_l4_n208(x)
- end
-end
-
-def fun_l3_n169(x)
- if (x < 1)
- fun_l4_n133(x)
- else
- fun_l4_n636(x)
- end
-end
-
-def fun_l3_n170(x)
- if (x < 1)
- fun_l4_n863(x)
- else
- fun_l4_n168(x)
- end
-end
-
-def fun_l3_n171(x)
- if (x < 1)
- fun_l4_n396(x)
- else
- fun_l4_n654(x)
- end
-end
-
-def fun_l3_n172(x)
- if (x < 1)
- fun_l4_n963(x)
- else
- fun_l4_n420(x)
- end
-end
-
-def fun_l3_n173(x)
- if (x < 1)
- fun_l4_n487(x)
- else
- fun_l4_n573(x)
- end
-end
-
-def fun_l3_n174(x)
- if (x < 1)
- fun_l4_n847(x)
- else
- fun_l4_n476(x)
- end
-end
-
-def fun_l3_n175(x)
- if (x < 1)
- fun_l4_n712(x)
- else
- fun_l4_n522(x)
- end
-end
-
-def fun_l3_n176(x)
- if (x < 1)
- fun_l4_n292(x)
- else
- fun_l4_n717(x)
- end
-end
-
-def fun_l3_n177(x)
- if (x < 1)
- fun_l4_n945(x)
- else
- fun_l4_n146(x)
- end
-end
-
-def fun_l3_n178(x)
- if (x < 1)
- fun_l4_n163(x)
- else
- fun_l4_n28(x)
- end
-end
-
-def fun_l3_n179(x)
- if (x < 1)
- fun_l4_n738(x)
- else
- fun_l4_n502(x)
- end
-end
-
-def fun_l3_n180(x)
- if (x < 1)
- fun_l4_n8(x)
- else
- fun_l4_n56(x)
- end
-end
-
-def fun_l3_n181(x)
- if (x < 1)
- fun_l4_n58(x)
- else
- fun_l4_n155(x)
- end
-end
-
-def fun_l3_n182(x)
- if (x < 1)
- fun_l4_n298(x)
- else
- fun_l4_n580(x)
- end
-end
-
-def fun_l3_n183(x)
- if (x < 1)
- fun_l4_n860(x)
- else
- fun_l4_n176(x)
- end
-end
-
-def fun_l3_n184(x)
- if (x < 1)
- fun_l4_n108(x)
- else
- fun_l4_n986(x)
- end
-end
-
-def fun_l3_n185(x)
- if (x < 1)
- fun_l4_n366(x)
- else
- fun_l4_n110(x)
- end
-end
-
-def fun_l3_n186(x)
- if (x < 1)
- fun_l4_n177(x)
- else
- fun_l4_n158(x)
- end
-end
-
-def fun_l3_n187(x)
- if (x < 1)
- fun_l4_n212(x)
- else
- fun_l4_n803(x)
- end
-end
-
-def fun_l3_n188(x)
- if (x < 1)
- fun_l4_n946(x)
- else
- fun_l4_n281(x)
- end
-end
-
-def fun_l3_n189(x)
- if (x < 1)
- fun_l4_n610(x)
- else
- fun_l4_n691(x)
- end
-end
-
-def fun_l3_n190(x)
- if (x < 1)
- fun_l4_n784(x)
- else
- fun_l4_n300(x)
- end
-end
-
-def fun_l3_n191(x)
- if (x < 1)
- fun_l4_n272(x)
- else
- fun_l4_n809(x)
- end
-end
-
-def fun_l3_n192(x)
- if (x < 1)
- fun_l4_n812(x)
- else
- fun_l4_n633(x)
- end
-end
-
-def fun_l3_n193(x)
- if (x < 1)
- fun_l4_n880(x)
- else
- fun_l4_n267(x)
- end
-end
-
-def fun_l3_n194(x)
- if (x < 1)
- fun_l4_n454(x)
- else
- fun_l4_n567(x)
- end
-end
-
-def fun_l3_n195(x)
- if (x < 1)
- fun_l4_n919(x)
- else
- fun_l4_n184(x)
- end
-end
-
-def fun_l3_n196(x)
- if (x < 1)
- fun_l4_n294(x)
- else
- fun_l4_n150(x)
- end
-end
-
-def fun_l3_n197(x)
- if (x < 1)
- fun_l4_n543(x)
- else
- fun_l4_n319(x)
- end
-end
-
-def fun_l3_n198(x)
- if (x < 1)
- fun_l4_n91(x)
- else
- fun_l4_n378(x)
- end
-end
-
-def fun_l3_n199(x)
- if (x < 1)
- fun_l4_n590(x)
- else
- fun_l4_n195(x)
- end
-end
-
-def fun_l3_n200(x)
- if (x < 1)
- fun_l4_n532(x)
- else
- fun_l4_n346(x)
- end
-end
-
-def fun_l3_n201(x)
- if (x < 1)
- fun_l4_n340(x)
- else
- fun_l4_n129(x)
- end
-end
-
-def fun_l3_n202(x)
- if (x < 1)
- fun_l4_n193(x)
- else
- fun_l4_n676(x)
- end
-end
-
-def fun_l3_n203(x)
- if (x < 1)
- fun_l4_n210(x)
- else
- fun_l4_n982(x)
- end
-end
-
-def fun_l3_n204(x)
- if (x < 1)
- fun_l4_n247(x)
- else
- fun_l4_n550(x)
- end
-end
-
-def fun_l3_n205(x)
- if (x < 1)
- fun_l4_n727(x)
- else
- fun_l4_n737(x)
- end
-end
-
-def fun_l3_n206(x)
- if (x < 1)
- fun_l4_n111(x)
- else
- fun_l4_n952(x)
- end
-end
-
-def fun_l3_n207(x)
- if (x < 1)
- fun_l4_n996(x)
- else
- fun_l4_n865(x)
- end
-end
-
-def fun_l3_n208(x)
- if (x < 1)
- fun_l4_n945(x)
- else
- fun_l4_n488(x)
- end
-end
-
-def fun_l3_n209(x)
- if (x < 1)
- fun_l4_n697(x)
- else
- fun_l4_n366(x)
- end
-end
-
-def fun_l3_n210(x)
- if (x < 1)
- fun_l4_n180(x)
- else
- fun_l4_n995(x)
- end
-end
-
-def fun_l3_n211(x)
- if (x < 1)
- fun_l4_n972(x)
- else
- fun_l4_n783(x)
- end
-end
-
-def fun_l3_n212(x)
- if (x < 1)
- fun_l4_n58(x)
- else
- fun_l4_n430(x)
- end
-end
-
-def fun_l3_n213(x)
- if (x < 1)
- fun_l4_n904(x)
- else
- fun_l4_n703(x)
- end
-end
-
-def fun_l3_n214(x)
- if (x < 1)
- fun_l4_n882(x)
- else
- fun_l4_n648(x)
- end
-end
-
-def fun_l3_n215(x)
- if (x < 1)
- fun_l4_n800(x)
- else
- fun_l4_n680(x)
- end
-end
-
-def fun_l3_n216(x)
- if (x < 1)
- fun_l4_n205(x)
- else
- fun_l4_n185(x)
- end
-end
-
-def fun_l3_n217(x)
- if (x < 1)
- fun_l4_n242(x)
- else
- fun_l4_n834(x)
- end
-end
-
-def fun_l3_n218(x)
- if (x < 1)
- fun_l4_n551(x)
- else
- fun_l4_n399(x)
- end
-end
-
-def fun_l3_n219(x)
- if (x < 1)
- fun_l4_n820(x)
- else
- fun_l4_n403(x)
- end
-end
-
-def fun_l3_n220(x)
- if (x < 1)
- fun_l4_n874(x)
- else
- fun_l4_n584(x)
- end
-end
-
-def fun_l3_n221(x)
- if (x < 1)
- fun_l4_n845(x)
- else
- fun_l4_n56(x)
- end
-end
-
-def fun_l3_n222(x)
- if (x < 1)
- fun_l4_n947(x)
- else
- fun_l4_n299(x)
- end
-end
-
-def fun_l3_n223(x)
- if (x < 1)
- fun_l4_n533(x)
- else
- fun_l4_n184(x)
- end
-end
-
-def fun_l3_n224(x)
- if (x < 1)
- fun_l4_n760(x)
- else
- fun_l4_n507(x)
- end
-end
-
-def fun_l3_n225(x)
- if (x < 1)
- fun_l4_n47(x)
- else
- fun_l4_n712(x)
- end
-end
-
-def fun_l3_n226(x)
- if (x < 1)
- fun_l4_n470(x)
- else
- fun_l4_n760(x)
- end
-end
-
-def fun_l3_n227(x)
- if (x < 1)
- fun_l4_n932(x)
- else
- fun_l4_n292(x)
- end
-end
-
-def fun_l3_n228(x)
- if (x < 1)
- fun_l4_n44(x)
- else
- fun_l4_n855(x)
- end
-end
-
-def fun_l3_n229(x)
- if (x < 1)
- fun_l4_n385(x)
- else
- fun_l4_n284(x)
- end
-end
-
-def fun_l3_n230(x)
- if (x < 1)
- fun_l4_n272(x)
- else
- fun_l4_n407(x)
- end
-end
-
-def fun_l3_n231(x)
- if (x < 1)
- fun_l4_n820(x)
- else
- fun_l4_n375(x)
- end
-end
-
-def fun_l3_n232(x)
- if (x < 1)
- fun_l4_n165(x)
- else
- fun_l4_n38(x)
- end
-end
-
-def fun_l3_n233(x)
- if (x < 1)
- fun_l4_n772(x)
- else
- fun_l4_n179(x)
- end
-end
-
-def fun_l3_n234(x)
- if (x < 1)
- fun_l4_n980(x)
- else
- fun_l4_n678(x)
- end
-end
-
-def fun_l3_n235(x)
- if (x < 1)
- fun_l4_n279(x)
- else
- fun_l4_n834(x)
- end
-end
-
-def fun_l3_n236(x)
- if (x < 1)
- fun_l4_n227(x)
- else
- fun_l4_n11(x)
- end
-end
-
-def fun_l3_n237(x)
- if (x < 1)
- fun_l4_n724(x)
- else
- fun_l4_n659(x)
- end
-end
-
-def fun_l3_n238(x)
- if (x < 1)
- fun_l4_n569(x)
- else
- fun_l4_n693(x)
- end
-end
-
-def fun_l3_n239(x)
- if (x < 1)
- fun_l4_n933(x)
- else
- fun_l4_n897(x)
- end
-end
-
-def fun_l3_n240(x)
- if (x < 1)
- fun_l4_n215(x)
- else
- fun_l4_n784(x)
- end
-end
-
-def fun_l3_n241(x)
- if (x < 1)
- fun_l4_n964(x)
- else
- fun_l4_n430(x)
- end
-end
-
-def fun_l3_n242(x)
- if (x < 1)
- fun_l4_n91(x)
- else
- fun_l4_n190(x)
- end
-end
-
-def fun_l3_n243(x)
- if (x < 1)
- fun_l4_n375(x)
- else
- fun_l4_n638(x)
- end
-end
-
-def fun_l3_n244(x)
- if (x < 1)
- fun_l4_n381(x)
- else
- fun_l4_n324(x)
- end
-end
-
-def fun_l3_n245(x)
- if (x < 1)
- fun_l4_n983(x)
- else
- fun_l4_n248(x)
- end
-end
-
-def fun_l3_n246(x)
- if (x < 1)
- fun_l4_n336(x)
- else
- fun_l4_n647(x)
- end
-end
-
-def fun_l3_n247(x)
- if (x < 1)
- fun_l4_n64(x)
- else
- fun_l4_n957(x)
- end
-end
-
-def fun_l3_n248(x)
- if (x < 1)
- fun_l4_n313(x)
- else
- fun_l4_n662(x)
- end
-end
-
-def fun_l3_n249(x)
- if (x < 1)
- fun_l4_n528(x)
- else
- fun_l4_n448(x)
- end
-end
-
-def fun_l3_n250(x)
- if (x < 1)
- fun_l4_n9(x)
- else
- fun_l4_n424(x)
- end
-end
-
-def fun_l3_n251(x)
- if (x < 1)
- fun_l4_n290(x)
- else
- fun_l4_n416(x)
- end
-end
-
-def fun_l3_n252(x)
- if (x < 1)
- fun_l4_n159(x)
- else
- fun_l4_n780(x)
- end
-end
-
-def fun_l3_n253(x)
- if (x < 1)
- fun_l4_n863(x)
- else
- fun_l4_n192(x)
- end
-end
-
-def fun_l3_n254(x)
- if (x < 1)
- fun_l4_n658(x)
- else
- fun_l4_n816(x)
- end
-end
-
-def fun_l3_n255(x)
- if (x < 1)
- fun_l4_n686(x)
- else
- fun_l4_n586(x)
- end
-end
-
-def fun_l3_n256(x)
- if (x < 1)
- fun_l4_n110(x)
- else
- fun_l4_n290(x)
- end
-end
-
-def fun_l3_n257(x)
- if (x < 1)
- fun_l4_n355(x)
- else
- fun_l4_n862(x)
- end
-end
-
-def fun_l3_n258(x)
- if (x < 1)
- fun_l4_n63(x)
- else
- fun_l4_n205(x)
- end
-end
-
-def fun_l3_n259(x)
- if (x < 1)
- fun_l4_n766(x)
- else
- fun_l4_n130(x)
- end
-end
-
-def fun_l3_n260(x)
- if (x < 1)
- fun_l4_n670(x)
- else
- fun_l4_n313(x)
- end
-end
-
-def fun_l3_n261(x)
- if (x < 1)
- fun_l4_n738(x)
- else
- fun_l4_n796(x)
- end
-end
-
-def fun_l3_n262(x)
- if (x < 1)
- fun_l4_n925(x)
- else
- fun_l4_n267(x)
- end
-end
-
-def fun_l3_n263(x)
- if (x < 1)
- fun_l4_n515(x)
- else
- fun_l4_n298(x)
- end
-end
-
-def fun_l3_n264(x)
- if (x < 1)
- fun_l4_n883(x)
- else
- fun_l4_n809(x)
- end
-end
-
-def fun_l3_n265(x)
- if (x < 1)
- fun_l4_n138(x)
- else
- fun_l4_n665(x)
- end
-end
-
-def fun_l3_n266(x)
- if (x < 1)
- fun_l4_n141(x)
- else
- fun_l4_n641(x)
- end
-end
-
-def fun_l3_n267(x)
- if (x < 1)
- fun_l4_n936(x)
- else
- fun_l4_n233(x)
- end
-end
-
-def fun_l3_n268(x)
- if (x < 1)
- fun_l4_n28(x)
- else
- fun_l4_n351(x)
- end
-end
-
-def fun_l3_n269(x)
- if (x < 1)
- fun_l4_n62(x)
- else
- fun_l4_n17(x)
- end
-end
-
-def fun_l3_n270(x)
- if (x < 1)
- fun_l4_n489(x)
- else
- fun_l4_n408(x)
- end
-end
-
-def fun_l3_n271(x)
- if (x < 1)
- fun_l4_n276(x)
- else
- fun_l4_n799(x)
- end
-end
-
-def fun_l3_n272(x)
- if (x < 1)
- fun_l4_n103(x)
- else
- fun_l4_n804(x)
- end
-end
-
-def fun_l3_n273(x)
- if (x < 1)
- fun_l4_n850(x)
- else
- fun_l4_n388(x)
- end
-end
-
-def fun_l3_n274(x)
- if (x < 1)
- fun_l4_n651(x)
- else
- fun_l4_n484(x)
- end
-end
-
-def fun_l3_n275(x)
- if (x < 1)
- fun_l4_n693(x)
- else
- fun_l4_n20(x)
- end
-end
-
-def fun_l3_n276(x)
- if (x < 1)
- fun_l4_n897(x)
- else
- fun_l4_n328(x)
- end
-end
-
-def fun_l3_n277(x)
- if (x < 1)
- fun_l4_n632(x)
- else
- fun_l4_n120(x)
- end
-end
-
-def fun_l3_n278(x)
- if (x < 1)
- fun_l4_n919(x)
- else
- fun_l4_n921(x)
- end
-end
-
-def fun_l3_n279(x)
- if (x < 1)
- fun_l4_n461(x)
- else
- fun_l4_n219(x)
- end
-end
-
-def fun_l3_n280(x)
- if (x < 1)
- fun_l4_n867(x)
- else
- fun_l4_n682(x)
- end
-end
-
-def fun_l3_n281(x)
- if (x < 1)
- fun_l4_n233(x)
- else
- fun_l4_n589(x)
- end
-end
-
-def fun_l3_n282(x)
- if (x < 1)
- fun_l4_n516(x)
- else
- fun_l4_n970(x)
- end
-end
-
-def fun_l3_n283(x)
- if (x < 1)
- fun_l4_n300(x)
- else
- fun_l4_n934(x)
- end
-end
-
-def fun_l3_n284(x)
- if (x < 1)
- fun_l4_n736(x)
- else
- fun_l4_n516(x)
- end
-end
-
-def fun_l3_n285(x)
- if (x < 1)
- fun_l4_n401(x)
- else
- fun_l4_n539(x)
- end
-end
-
-def fun_l3_n286(x)
- if (x < 1)
- fun_l4_n342(x)
- else
- fun_l4_n142(x)
- end
-end
-
-def fun_l3_n287(x)
- if (x < 1)
- fun_l4_n44(x)
- else
- fun_l4_n311(x)
- end
-end
-
-def fun_l3_n288(x)
- if (x < 1)
- fun_l4_n698(x)
- else
- fun_l4_n407(x)
- end
-end
-
-def fun_l3_n289(x)
- if (x < 1)
- fun_l4_n714(x)
- else
- fun_l4_n324(x)
- end
-end
-
-def fun_l3_n290(x)
- if (x < 1)
- fun_l4_n862(x)
- else
- fun_l4_n807(x)
- end
-end
-
-def fun_l3_n291(x)
- if (x < 1)
- fun_l4_n446(x)
- else
- fun_l4_n378(x)
- end
-end
-
-def fun_l3_n292(x)
- if (x < 1)
- fun_l4_n418(x)
- else
- fun_l4_n194(x)
- end
-end
-
-def fun_l3_n293(x)
- if (x < 1)
- fun_l4_n336(x)
- else
- fun_l4_n895(x)
- end
-end
-
-def fun_l3_n294(x)
- if (x < 1)
- fun_l4_n928(x)
- else
- fun_l4_n154(x)
- end
-end
-
-def fun_l3_n295(x)
- if (x < 1)
- fun_l4_n764(x)
- else
- fun_l4_n335(x)
- end
-end
-
-def fun_l3_n296(x)
- if (x < 1)
- fun_l4_n840(x)
- else
- fun_l4_n513(x)
- end
-end
-
-def fun_l3_n297(x)
- if (x < 1)
- fun_l4_n520(x)
- else
- fun_l4_n838(x)
- end
-end
-
-def fun_l3_n298(x)
- if (x < 1)
- fun_l4_n831(x)
- else
- fun_l4_n344(x)
- end
-end
-
-def fun_l3_n299(x)
- if (x < 1)
- fun_l4_n110(x)
- else
- fun_l4_n19(x)
- end
-end
-
-def fun_l3_n300(x)
- if (x < 1)
- fun_l4_n272(x)
- else
- fun_l4_n952(x)
- end
-end
-
-def fun_l3_n301(x)
- if (x < 1)
- fun_l4_n659(x)
- else
- fun_l4_n439(x)
- end
-end
-
-def fun_l3_n302(x)
- if (x < 1)
- fun_l4_n787(x)
- else
- fun_l4_n189(x)
- end
-end
-
-def fun_l3_n303(x)
- if (x < 1)
- fun_l4_n549(x)
- else
- fun_l4_n594(x)
- end
-end
-
-def fun_l3_n304(x)
- if (x < 1)
- fun_l4_n255(x)
- else
- fun_l4_n822(x)
- end
-end
-
-def fun_l3_n305(x)
- if (x < 1)
- fun_l4_n312(x)
- else
- fun_l4_n935(x)
- end
-end
-
-def fun_l3_n306(x)
- if (x < 1)
- fun_l4_n831(x)
- else
- fun_l4_n299(x)
- end
-end
-
-def fun_l3_n307(x)
- if (x < 1)
- fun_l4_n154(x)
- else
- fun_l4_n520(x)
- end
-end
-
-def fun_l3_n308(x)
- if (x < 1)
- fun_l4_n768(x)
- else
- fun_l4_n676(x)
- end
-end
-
-def fun_l3_n309(x)
- if (x < 1)
- fun_l4_n816(x)
- else
- fun_l4_n447(x)
- end
-end
-
-def fun_l3_n310(x)
- if (x < 1)
- fun_l4_n689(x)
- else
- fun_l4_n244(x)
- end
-end
-
-def fun_l3_n311(x)
- if (x < 1)
- fun_l4_n389(x)
- else
- fun_l4_n326(x)
- end
-end
-
-def fun_l3_n312(x)
- if (x < 1)
- fun_l4_n125(x)
- else
- fun_l4_n502(x)
- end
-end
-
-def fun_l3_n313(x)
- if (x < 1)
- fun_l4_n327(x)
- else
- fun_l4_n123(x)
- end
-end
-
-def fun_l3_n314(x)
- if (x < 1)
- fun_l4_n558(x)
- else
- fun_l4_n940(x)
- end
-end
-
-def fun_l3_n315(x)
- if (x < 1)
- fun_l4_n652(x)
- else
- fun_l4_n10(x)
- end
-end
-
-def fun_l3_n316(x)
- if (x < 1)
- fun_l4_n483(x)
- else
- fun_l4_n315(x)
- end
-end
-
-def fun_l3_n317(x)
- if (x < 1)
- fun_l4_n567(x)
- else
- fun_l4_n540(x)
- end
-end
-
-def fun_l3_n318(x)
- if (x < 1)
- fun_l4_n449(x)
- else
- fun_l4_n760(x)
- end
-end
-
-def fun_l3_n319(x)
- if (x < 1)
- fun_l4_n111(x)
- else
- fun_l4_n173(x)
- end
-end
-
-def fun_l3_n320(x)
- if (x < 1)
- fun_l4_n373(x)
- else
- fun_l4_n615(x)
- end
-end
-
-def fun_l3_n321(x)
- if (x < 1)
- fun_l4_n570(x)
- else
- fun_l4_n27(x)
- end
-end
-
-def fun_l3_n322(x)
- if (x < 1)
- fun_l4_n235(x)
- else
- fun_l4_n695(x)
- end
-end
-
-def fun_l3_n323(x)
- if (x < 1)
- fun_l4_n788(x)
- else
- fun_l4_n57(x)
- end
-end
-
-def fun_l3_n324(x)
- if (x < 1)
- fun_l4_n7(x)
- else
- fun_l4_n75(x)
- end
-end
-
-def fun_l3_n325(x)
- if (x < 1)
- fun_l4_n502(x)
- else
- fun_l4_n459(x)
- end
-end
-
-def fun_l3_n326(x)
- if (x < 1)
- fun_l4_n572(x)
- else
- fun_l4_n324(x)
- end
-end
-
-def fun_l3_n327(x)
- if (x < 1)
- fun_l4_n860(x)
- else
- fun_l4_n250(x)
- end
-end
-
-def fun_l3_n328(x)
- if (x < 1)
- fun_l4_n242(x)
- else
- fun_l4_n667(x)
- end
-end
-
-def fun_l3_n329(x)
- if (x < 1)
- fun_l4_n589(x)
- else
- fun_l4_n236(x)
- end
-end
-
-def fun_l3_n330(x)
- if (x < 1)
- fun_l4_n100(x)
- else
- fun_l4_n476(x)
- end
-end
-
-def fun_l3_n331(x)
- if (x < 1)
- fun_l4_n779(x)
- else
- fun_l4_n667(x)
- end
-end
-
-def fun_l3_n332(x)
- if (x < 1)
- fun_l4_n277(x)
- else
- fun_l4_n441(x)
- end
-end
-
-def fun_l3_n333(x)
- if (x < 1)
- fun_l4_n379(x)
- else
- fun_l4_n331(x)
- end
-end
-
-def fun_l3_n334(x)
- if (x < 1)
- fun_l4_n802(x)
- else
- fun_l4_n588(x)
- end
-end
-
-def fun_l3_n335(x)
- if (x < 1)
- fun_l4_n385(x)
- else
- fun_l4_n918(x)
- end
-end
-
-def fun_l3_n336(x)
- if (x < 1)
- fun_l4_n532(x)
- else
- fun_l4_n254(x)
- end
-end
-
-def fun_l3_n337(x)
- if (x < 1)
- fun_l4_n920(x)
- else
- fun_l4_n134(x)
- end
-end
-
-def fun_l3_n338(x)
- if (x < 1)
- fun_l4_n803(x)
- else
- fun_l4_n746(x)
- end
-end
-
-def fun_l3_n339(x)
- if (x < 1)
- fun_l4_n924(x)
- else
- fun_l4_n878(x)
- end
-end
-
-def fun_l3_n340(x)
- if (x < 1)
- fun_l4_n166(x)
- else
- fun_l4_n776(x)
- end
-end
-
-def fun_l3_n341(x)
- if (x < 1)
- fun_l4_n240(x)
- else
- fun_l4_n898(x)
- end
-end
-
-def fun_l3_n342(x)
- if (x < 1)
- fun_l4_n810(x)
- else
- fun_l4_n423(x)
- end
-end
-
-def fun_l3_n343(x)
- if (x < 1)
- fun_l4_n209(x)
- else
- fun_l4_n514(x)
- end
-end
-
-def fun_l3_n344(x)
- if (x < 1)
- fun_l4_n505(x)
- else
- fun_l4_n321(x)
- end
-end
-
-def fun_l3_n345(x)
- if (x < 1)
- fun_l4_n88(x)
- else
- fun_l4_n39(x)
- end
-end
-
-def fun_l3_n346(x)
- if (x < 1)
- fun_l4_n848(x)
- else
- fun_l4_n357(x)
- end
-end
-
-def fun_l3_n347(x)
- if (x < 1)
- fun_l4_n450(x)
- else
- fun_l4_n704(x)
- end
-end
-
-def fun_l3_n348(x)
- if (x < 1)
- fun_l4_n881(x)
- else
- fun_l4_n916(x)
- end
-end
-
-def fun_l3_n349(x)
- if (x < 1)
- fun_l4_n16(x)
- else
- fun_l4_n996(x)
- end
-end
-
-def fun_l3_n350(x)
- if (x < 1)
- fun_l4_n839(x)
- else
- fun_l4_n697(x)
- end
-end
-
-def fun_l3_n351(x)
- if (x < 1)
- fun_l4_n177(x)
- else
- fun_l4_n859(x)
- end
-end
-
-def fun_l3_n352(x)
- if (x < 1)
- fun_l4_n684(x)
- else
- fun_l4_n778(x)
- end
-end
-
-def fun_l3_n353(x)
- if (x < 1)
- fun_l4_n604(x)
- else
- fun_l4_n280(x)
- end
-end
-
-def fun_l3_n354(x)
- if (x < 1)
- fun_l4_n366(x)
- else
- fun_l4_n576(x)
- end
-end
-
-def fun_l3_n355(x)
- if (x < 1)
- fun_l4_n584(x)
- else
- fun_l4_n228(x)
- end
-end
-
-def fun_l3_n356(x)
- if (x < 1)
- fun_l4_n844(x)
- else
- fun_l4_n799(x)
- end
-end
-
-def fun_l3_n357(x)
- if (x < 1)
- fun_l4_n489(x)
- else
- fun_l4_n905(x)
- end
-end
-
-def fun_l3_n358(x)
- if (x < 1)
- fun_l4_n781(x)
- else
- fun_l4_n565(x)
- end
-end
-
-def fun_l3_n359(x)
- if (x < 1)
- fun_l4_n110(x)
- else
- fun_l4_n326(x)
- end
-end
-
-def fun_l3_n360(x)
- if (x < 1)
- fun_l4_n915(x)
- else
- fun_l4_n489(x)
- end
-end
-
-def fun_l3_n361(x)
- if (x < 1)
- fun_l4_n110(x)
- else
- fun_l4_n733(x)
- end
-end
-
-def fun_l3_n362(x)
- if (x < 1)
- fun_l4_n93(x)
- else
- fun_l4_n549(x)
- end
-end
-
-def fun_l3_n363(x)
- if (x < 1)
- fun_l4_n270(x)
- else
- fun_l4_n883(x)
- end
-end
-
-def fun_l3_n364(x)
- if (x < 1)
- fun_l4_n512(x)
- else
- fun_l4_n555(x)
- end
-end
-
-def fun_l3_n365(x)
- if (x < 1)
- fun_l4_n800(x)
- else
- fun_l4_n672(x)
- end
-end
-
-def fun_l3_n366(x)
- if (x < 1)
- fun_l4_n535(x)
- else
- fun_l4_n320(x)
- end
-end
-
-def fun_l3_n367(x)
- if (x < 1)
- fun_l4_n883(x)
- else
- fun_l4_n365(x)
- end
-end
-
-def fun_l3_n368(x)
- if (x < 1)
- fun_l4_n306(x)
- else
- fun_l4_n614(x)
- end
-end
-
-def fun_l3_n369(x)
- if (x < 1)
- fun_l4_n914(x)
- else
- fun_l4_n20(x)
- end
-end
-
-def fun_l3_n370(x)
- if (x < 1)
- fun_l4_n230(x)
- else
- fun_l4_n585(x)
- end
-end
-
-def fun_l3_n371(x)
- if (x < 1)
- fun_l4_n544(x)
- else
- fun_l4_n752(x)
- end
-end
-
-def fun_l3_n372(x)
- if (x < 1)
- fun_l4_n984(x)
- else
- fun_l4_n738(x)
- end
-end
-
-def fun_l3_n373(x)
- if (x < 1)
- fun_l4_n478(x)
- else
- fun_l4_n618(x)
- end
-end
-
-def fun_l3_n374(x)
- if (x < 1)
- fun_l4_n941(x)
- else
- fun_l4_n746(x)
- end
-end
-
-def fun_l3_n375(x)
- if (x < 1)
- fun_l4_n121(x)
- else
- fun_l4_n798(x)
- end
-end
-
-def fun_l3_n376(x)
- if (x < 1)
- fun_l4_n851(x)
- else
- fun_l4_n681(x)
- end
-end
-
-def fun_l3_n377(x)
- if (x < 1)
- fun_l4_n502(x)
- else
- fun_l4_n538(x)
- end
-end
-
-def fun_l3_n378(x)
- if (x < 1)
- fun_l4_n432(x)
- else
- fun_l4_n226(x)
- end
-end
-
-def fun_l3_n379(x)
- if (x < 1)
- fun_l4_n734(x)
- else
- fun_l4_n684(x)
- end
-end
-
-def fun_l3_n380(x)
- if (x < 1)
- fun_l4_n912(x)
- else
- fun_l4_n116(x)
- end
-end
-
-def fun_l3_n381(x)
- if (x < 1)
- fun_l4_n291(x)
- else
- fun_l4_n464(x)
- end
-end
-
-def fun_l3_n382(x)
- if (x < 1)
- fun_l4_n285(x)
- else
- fun_l4_n943(x)
- end
-end
-
-def fun_l3_n383(x)
- if (x < 1)
- fun_l4_n738(x)
- else
- fun_l4_n532(x)
- end
-end
-
-def fun_l3_n384(x)
- if (x < 1)
- fun_l4_n503(x)
- else
- fun_l4_n724(x)
- end
-end
-
-def fun_l3_n385(x)
- if (x < 1)
- fun_l4_n208(x)
- else
- fun_l4_n683(x)
- end
-end
-
-def fun_l3_n386(x)
- if (x < 1)
- fun_l4_n673(x)
- else
- fun_l4_n230(x)
- end
-end
-
-def fun_l3_n387(x)
- if (x < 1)
- fun_l4_n921(x)
- else
- fun_l4_n800(x)
- end
-end
-
-def fun_l3_n388(x)
- if (x < 1)
- fun_l4_n461(x)
- else
- fun_l4_n369(x)
- end
-end
-
-def fun_l3_n389(x)
- if (x < 1)
- fun_l4_n86(x)
- else
- fun_l4_n403(x)
- end
-end
-
-def fun_l3_n390(x)
- if (x < 1)
- fun_l4_n883(x)
- else
- fun_l4_n92(x)
- end
-end
-
-def fun_l3_n391(x)
- if (x < 1)
- fun_l4_n562(x)
- else
- fun_l4_n826(x)
- end
-end
-
-def fun_l3_n392(x)
- if (x < 1)
- fun_l4_n459(x)
- else
- fun_l4_n821(x)
- end
-end
-
-def fun_l3_n393(x)
- if (x < 1)
- fun_l4_n774(x)
- else
- fun_l4_n376(x)
- end
-end
-
-def fun_l3_n394(x)
- if (x < 1)
- fun_l4_n114(x)
- else
- fun_l4_n451(x)
- end
-end
-
-def fun_l3_n395(x)
- if (x < 1)
- fun_l4_n689(x)
- else
- fun_l4_n13(x)
- end
-end
-
-def fun_l3_n396(x)
- if (x < 1)
- fun_l4_n929(x)
- else
- fun_l4_n777(x)
- end
-end
-
-def fun_l3_n397(x)
- if (x < 1)
- fun_l4_n634(x)
- else
- fun_l4_n329(x)
- end
-end
-
-def fun_l3_n398(x)
- if (x < 1)
- fun_l4_n972(x)
- else
- fun_l4_n572(x)
- end
-end
-
-def fun_l3_n399(x)
- if (x < 1)
- fun_l4_n231(x)
- else
- fun_l4_n14(x)
- end
-end
-
-def fun_l3_n400(x)
- if (x < 1)
- fun_l4_n357(x)
- else
- fun_l4_n881(x)
- end
-end
-
-def fun_l3_n401(x)
- if (x < 1)
- fun_l4_n283(x)
- else
- fun_l4_n614(x)
- end
-end
-
-def fun_l3_n402(x)
- if (x < 1)
- fun_l4_n634(x)
- else
- fun_l4_n653(x)
- end
-end
-
-def fun_l3_n403(x)
- if (x < 1)
- fun_l4_n660(x)
- else
- fun_l4_n127(x)
- end
-end
-
-def fun_l3_n404(x)
- if (x < 1)
- fun_l4_n523(x)
- else
- fun_l4_n467(x)
- end
-end
-
-def fun_l3_n405(x)
- if (x < 1)
- fun_l4_n593(x)
- else
- fun_l4_n78(x)
- end
-end
-
-def fun_l3_n406(x)
- if (x < 1)
- fun_l4_n514(x)
- else
- fun_l4_n783(x)
- end
-end
-
-def fun_l3_n407(x)
- if (x < 1)
- fun_l4_n460(x)
- else
- fun_l4_n137(x)
- end
-end
-
-def fun_l3_n408(x)
- if (x < 1)
- fun_l4_n3(x)
- else
- fun_l4_n224(x)
- end
-end
-
-def fun_l3_n409(x)
- if (x < 1)
- fun_l4_n11(x)
- else
- fun_l4_n531(x)
- end
-end
-
-def fun_l3_n410(x)
- if (x < 1)
- fun_l4_n94(x)
- else
- fun_l4_n717(x)
- end
-end
-
-def fun_l3_n411(x)
- if (x < 1)
- fun_l4_n729(x)
- else
- fun_l4_n526(x)
- end
-end
-
-def fun_l3_n412(x)
- if (x < 1)
- fun_l4_n86(x)
- else
- fun_l4_n26(x)
- end
-end
-
-def fun_l3_n413(x)
- if (x < 1)
- fun_l4_n249(x)
- else
- fun_l4_n572(x)
- end
-end
-
-def fun_l3_n414(x)
- if (x < 1)
- fun_l4_n578(x)
- else
- fun_l4_n512(x)
- end
-end
-
-def fun_l3_n415(x)
- if (x < 1)
- fun_l4_n176(x)
- else
- fun_l4_n414(x)
- end
-end
-
-def fun_l3_n416(x)
- if (x < 1)
- fun_l4_n757(x)
- else
- fun_l4_n385(x)
- end
-end
-
-def fun_l3_n417(x)
- if (x < 1)
- fun_l4_n249(x)
- else
- fun_l4_n180(x)
- end
-end
-
-def fun_l3_n418(x)
- if (x < 1)
- fun_l4_n193(x)
- else
- fun_l4_n294(x)
- end
-end
-
-def fun_l3_n419(x)
- if (x < 1)
- fun_l4_n441(x)
- else
- fun_l4_n932(x)
- end
-end
-
-def fun_l3_n420(x)
- if (x < 1)
- fun_l4_n492(x)
- else
- fun_l4_n239(x)
- end
-end
-
-def fun_l3_n421(x)
- if (x < 1)
- fun_l4_n49(x)
- else
- fun_l4_n738(x)
- end
-end
-
-def fun_l3_n422(x)
- if (x < 1)
- fun_l4_n546(x)
- else
- fun_l4_n285(x)
- end
-end
-
-def fun_l3_n423(x)
- if (x < 1)
- fun_l4_n687(x)
- else
- fun_l4_n973(x)
- end
-end
-
-def fun_l3_n424(x)
- if (x < 1)
- fun_l4_n876(x)
- else
- fun_l4_n591(x)
- end
-end
-
-def fun_l3_n425(x)
- if (x < 1)
- fun_l4_n626(x)
- else
- fun_l4_n739(x)
- end
-end
-
-def fun_l3_n426(x)
- if (x < 1)
- fun_l4_n439(x)
- else
- fun_l4_n709(x)
- end
-end
-
-def fun_l3_n427(x)
- if (x < 1)
- fun_l4_n710(x)
- else
- fun_l4_n305(x)
- end
-end
-
-def fun_l3_n428(x)
- if (x < 1)
- fun_l4_n61(x)
- else
- fun_l4_n520(x)
- end
-end
-
-def fun_l3_n429(x)
- if (x < 1)
- fun_l4_n172(x)
- else
- fun_l4_n12(x)
- end
-end
-
-def fun_l3_n430(x)
- if (x < 1)
- fun_l4_n432(x)
- else
- fun_l4_n174(x)
- end
-end
-
-def fun_l3_n431(x)
- if (x < 1)
- fun_l4_n194(x)
- else
- fun_l4_n673(x)
- end
-end
-
-def fun_l3_n432(x)
- if (x < 1)
- fun_l4_n952(x)
- else
- fun_l4_n798(x)
- end
-end
-
-def fun_l3_n433(x)
- if (x < 1)
- fun_l4_n915(x)
- else
- fun_l4_n263(x)
- end
-end
-
-def fun_l3_n434(x)
- if (x < 1)
- fun_l4_n735(x)
- else
- fun_l4_n882(x)
- end
-end
-
-def fun_l3_n435(x)
- if (x < 1)
- fun_l4_n499(x)
- else
- fun_l4_n947(x)
- end
-end
-
-def fun_l3_n436(x)
- if (x < 1)
- fun_l4_n744(x)
- else
- fun_l4_n187(x)
- end
-end
-
-def fun_l3_n437(x)
- if (x < 1)
- fun_l4_n244(x)
- else
- fun_l4_n366(x)
- end
-end
-
-def fun_l3_n438(x)
- if (x < 1)
- fun_l4_n228(x)
- else
- fun_l4_n866(x)
- end
-end
-
-def fun_l3_n439(x)
- if (x < 1)
- fun_l4_n617(x)
- else
- fun_l4_n924(x)
- end
-end
-
-def fun_l3_n440(x)
- if (x < 1)
- fun_l4_n302(x)
- else
- fun_l4_n691(x)
- end
-end
-
-def fun_l3_n441(x)
- if (x < 1)
- fun_l4_n559(x)
- else
- fun_l4_n758(x)
- end
-end
-
-def fun_l3_n442(x)
- if (x < 1)
- fun_l4_n412(x)
- else
- fun_l4_n544(x)
- end
-end
-
-def fun_l3_n443(x)
- if (x < 1)
- fun_l4_n130(x)
- else
- fun_l4_n764(x)
- end
-end
-
-def fun_l3_n444(x)
- if (x < 1)
- fun_l4_n135(x)
- else
- fun_l4_n65(x)
- end
-end
-
-def fun_l3_n445(x)
- if (x < 1)
- fun_l4_n224(x)
- else
- fun_l4_n148(x)
- end
-end
-
-def fun_l3_n446(x)
- if (x < 1)
- fun_l4_n238(x)
- else
- fun_l4_n808(x)
- end
-end
-
-def fun_l3_n447(x)
- if (x < 1)
- fun_l4_n832(x)
- else
- fun_l4_n460(x)
- end
-end
-
-def fun_l3_n448(x)
- if (x < 1)
- fun_l4_n897(x)
- else
- fun_l4_n817(x)
- end
-end
-
-def fun_l3_n449(x)
- if (x < 1)
- fun_l4_n587(x)
- else
- fun_l4_n926(x)
- end
-end
-
-def fun_l3_n450(x)
- if (x < 1)
- fun_l4_n575(x)
- else
- fun_l4_n274(x)
- end
-end
-
-def fun_l3_n451(x)
- if (x < 1)
- fun_l4_n42(x)
- else
- fun_l4_n714(x)
- end
-end
-
-def fun_l3_n452(x)
- if (x < 1)
- fun_l4_n101(x)
- else
- fun_l4_n470(x)
- end
-end
-
-def fun_l3_n453(x)
- if (x < 1)
- fun_l4_n906(x)
- else
- fun_l4_n724(x)
- end
-end
-
-def fun_l3_n454(x)
- if (x < 1)
- fun_l4_n682(x)
- else
- fun_l4_n709(x)
- end
-end
-
-def fun_l3_n455(x)
- if (x < 1)
- fun_l4_n929(x)
- else
- fun_l4_n274(x)
- end
-end
-
-def fun_l3_n456(x)
- if (x < 1)
- fun_l4_n10(x)
- else
- fun_l4_n101(x)
- end
-end
-
-def fun_l3_n457(x)
- if (x < 1)
- fun_l4_n825(x)
- else
- fun_l4_n632(x)
- end
-end
-
-def fun_l3_n458(x)
- if (x < 1)
- fun_l4_n2(x)
- else
- fun_l4_n723(x)
- end
-end
-
-def fun_l3_n459(x)
- if (x < 1)
- fun_l4_n998(x)
- else
- fun_l4_n546(x)
- end
-end
-
-def fun_l3_n460(x)
- if (x < 1)
- fun_l4_n483(x)
- else
- fun_l4_n445(x)
- end
-end
-
-def fun_l3_n461(x)
- if (x < 1)
- fun_l4_n896(x)
- else
- fun_l4_n993(x)
- end
-end
-
-def fun_l3_n462(x)
- if (x < 1)
- fun_l4_n710(x)
- else
- fun_l4_n529(x)
- end
-end
-
-def fun_l3_n463(x)
- if (x < 1)
- fun_l4_n913(x)
- else
- fun_l4_n65(x)
- end
-end
-
-def fun_l3_n464(x)
- if (x < 1)
- fun_l4_n712(x)
- else
- fun_l4_n412(x)
- end
-end
-
-def fun_l3_n465(x)
- if (x < 1)
- fun_l4_n296(x)
- else
- fun_l4_n37(x)
- end
-end
-
-def fun_l3_n466(x)
- if (x < 1)
- fun_l4_n241(x)
- else
- fun_l4_n649(x)
- end
-end
-
-def fun_l3_n467(x)
- if (x < 1)
- fun_l4_n296(x)
- else
- fun_l4_n80(x)
- end
-end
-
-def fun_l3_n468(x)
- if (x < 1)
- fun_l4_n270(x)
- else
- fun_l4_n192(x)
- end
-end
-
-def fun_l3_n469(x)
- if (x < 1)
- fun_l4_n655(x)
- else
- fun_l4_n605(x)
- end
-end
-
-def fun_l3_n470(x)
- if (x < 1)
- fun_l4_n180(x)
- else
- fun_l4_n807(x)
- end
-end
-
-def fun_l3_n471(x)
- if (x < 1)
- fun_l4_n915(x)
- else
- fun_l4_n902(x)
- end
-end
-
-def fun_l3_n472(x)
- if (x < 1)
- fun_l4_n527(x)
- else
- fun_l4_n638(x)
- end
-end
-
-def fun_l3_n473(x)
- if (x < 1)
- fun_l4_n775(x)
- else
- fun_l4_n572(x)
- end
-end
-
-def fun_l3_n474(x)
- if (x < 1)
- fun_l4_n856(x)
- else
- fun_l4_n182(x)
- end
-end
-
-def fun_l3_n475(x)
- if (x < 1)
- fun_l4_n434(x)
- else
- fun_l4_n232(x)
- end
-end
-
-def fun_l3_n476(x)
- if (x < 1)
- fun_l4_n208(x)
- else
- fun_l4_n37(x)
- end
-end
-
-def fun_l3_n477(x)
- if (x < 1)
- fun_l4_n146(x)
- else
- fun_l4_n764(x)
- end
-end
-
-def fun_l3_n478(x)
- if (x < 1)
- fun_l4_n806(x)
- else
- fun_l4_n148(x)
- end
-end
-
-def fun_l3_n479(x)
- if (x < 1)
- fun_l4_n46(x)
- else
- fun_l4_n488(x)
- end
-end
-
-def fun_l3_n480(x)
- if (x < 1)
- fun_l4_n637(x)
- else
- fun_l4_n48(x)
- end
-end
-
-def fun_l3_n481(x)
- if (x < 1)
- fun_l4_n496(x)
- else
- fun_l4_n891(x)
- end
-end
-
-def fun_l3_n482(x)
- if (x < 1)
- fun_l4_n282(x)
- else
- fun_l4_n736(x)
- end
-end
-
-def fun_l3_n483(x)
- if (x < 1)
- fun_l4_n377(x)
- else
- fun_l4_n603(x)
- end
-end
-
-def fun_l3_n484(x)
- if (x < 1)
- fun_l4_n689(x)
- else
- fun_l4_n201(x)
- end
-end
-
-def fun_l3_n485(x)
- if (x < 1)
- fun_l4_n495(x)
- else
- fun_l4_n721(x)
- end
-end
-
-def fun_l3_n486(x)
- if (x < 1)
- fun_l4_n128(x)
- else
- fun_l4_n400(x)
- end
-end
-
-def fun_l3_n487(x)
- if (x < 1)
- fun_l4_n993(x)
- else
- fun_l4_n53(x)
- end
-end
-
-def fun_l3_n488(x)
- if (x < 1)
- fun_l4_n913(x)
- else
- fun_l4_n814(x)
- end
-end
-
-def fun_l3_n489(x)
- if (x < 1)
- fun_l4_n816(x)
- else
- fun_l4_n196(x)
- end
-end
-
-def fun_l3_n490(x)
- if (x < 1)
- fun_l4_n754(x)
- else
- fun_l4_n451(x)
- end
-end
-
-def fun_l3_n491(x)
- if (x < 1)
- fun_l4_n57(x)
- else
- fun_l4_n597(x)
- end
-end
-
-def fun_l3_n492(x)
- if (x < 1)
- fun_l4_n539(x)
- else
- fun_l4_n893(x)
- end
-end
-
-def fun_l3_n493(x)
- if (x < 1)
- fun_l4_n542(x)
- else
- fun_l4_n956(x)
- end
-end
-
-def fun_l3_n494(x)
- if (x < 1)
- fun_l4_n479(x)
- else
- fun_l4_n448(x)
- end
-end
-
-def fun_l3_n495(x)
- if (x < 1)
- fun_l4_n263(x)
- else
- fun_l4_n912(x)
- end
-end
-
-def fun_l3_n496(x)
- if (x < 1)
- fun_l4_n463(x)
- else
- fun_l4_n112(x)
- end
-end
-
-def fun_l3_n497(x)
- if (x < 1)
- fun_l4_n806(x)
- else
- fun_l4_n486(x)
- end
-end
-
-def fun_l3_n498(x)
- if (x < 1)
- fun_l4_n155(x)
- else
- fun_l4_n298(x)
- end
-end
-
-def fun_l3_n499(x)
- if (x < 1)
- fun_l4_n538(x)
- else
- fun_l4_n908(x)
- end
-end
-
-def fun_l3_n500(x)
- if (x < 1)
- fun_l4_n769(x)
- else
- fun_l4_n681(x)
- end
-end
-
-def fun_l3_n501(x)
- if (x < 1)
- fun_l4_n544(x)
- else
- fun_l4_n749(x)
- end
-end
-
-def fun_l3_n502(x)
- if (x < 1)
- fun_l4_n505(x)
- else
- fun_l4_n66(x)
- end
-end
-
-def fun_l3_n503(x)
- if (x < 1)
- fun_l4_n900(x)
- else
- fun_l4_n917(x)
- end
-end
-
-def fun_l3_n504(x)
- if (x < 1)
- fun_l4_n982(x)
- else
- fun_l4_n707(x)
- end
-end
-
-def fun_l3_n505(x)
- if (x < 1)
- fun_l4_n102(x)
- else
- fun_l4_n564(x)
- end
-end
-
-def fun_l3_n506(x)
- if (x < 1)
- fun_l4_n332(x)
- else
- fun_l4_n367(x)
- end
-end
-
-def fun_l3_n507(x)
- if (x < 1)
- fun_l4_n969(x)
- else
- fun_l4_n354(x)
- end
-end
-
-def fun_l3_n508(x)
- if (x < 1)
- fun_l4_n405(x)
- else
- fun_l4_n485(x)
- end
-end
-
-def fun_l3_n509(x)
- if (x < 1)
- fun_l4_n477(x)
- else
- fun_l4_n629(x)
- end
-end
-
-def fun_l3_n510(x)
- if (x < 1)
- fun_l4_n753(x)
- else
- fun_l4_n78(x)
- end
-end
-
-def fun_l3_n511(x)
- if (x < 1)
- fun_l4_n221(x)
- else
- fun_l4_n637(x)
- end
-end
-
-def fun_l3_n512(x)
- if (x < 1)
- fun_l4_n540(x)
- else
- fun_l4_n267(x)
- end
-end
-
-def fun_l3_n513(x)
- if (x < 1)
- fun_l4_n750(x)
- else
- fun_l4_n626(x)
- end
-end
-
-def fun_l3_n514(x)
- if (x < 1)
- fun_l4_n160(x)
- else
- fun_l4_n32(x)
- end
-end
-
-def fun_l3_n515(x)
- if (x < 1)
- fun_l4_n914(x)
- else
- fun_l4_n967(x)
- end
-end
-
-def fun_l3_n516(x)
- if (x < 1)
- fun_l4_n380(x)
- else
- fun_l4_n83(x)
- end
-end
-
-def fun_l3_n517(x)
- if (x < 1)
- fun_l4_n175(x)
- else
- fun_l4_n830(x)
- end
-end
-
-def fun_l3_n518(x)
- if (x < 1)
- fun_l4_n579(x)
- else
- fun_l4_n773(x)
- end
-end
-
-def fun_l3_n519(x)
- if (x < 1)
- fun_l4_n707(x)
- else
- fun_l4_n690(x)
- end
-end
-
-def fun_l3_n520(x)
- if (x < 1)
- fun_l4_n587(x)
- else
- fun_l4_n754(x)
- end
-end
-
-def fun_l3_n521(x)
- if (x < 1)
- fun_l4_n922(x)
- else
- fun_l4_n156(x)
- end
-end
-
-def fun_l3_n522(x)
- if (x < 1)
- fun_l4_n299(x)
- else
- fun_l4_n937(x)
- end
-end
-
-def fun_l3_n523(x)
- if (x < 1)
- fun_l4_n996(x)
- else
- fun_l4_n786(x)
- end
-end
-
-def fun_l3_n524(x)
- if (x < 1)
- fun_l4_n988(x)
- else
- fun_l4_n930(x)
- end
-end
-
-def fun_l3_n525(x)
- if (x < 1)
- fun_l4_n475(x)
- else
- fun_l4_n43(x)
- end
-end
-
-def fun_l3_n526(x)
- if (x < 1)
- fun_l4_n367(x)
- else
- fun_l4_n167(x)
- end
-end
-
-def fun_l3_n527(x)
- if (x < 1)
- fun_l4_n31(x)
- else
- fun_l4_n394(x)
- end
-end
-
-def fun_l3_n528(x)
- if (x < 1)
- fun_l4_n92(x)
- else
- fun_l4_n304(x)
- end
-end
-
-def fun_l3_n529(x)
- if (x < 1)
- fun_l4_n369(x)
- else
- fun_l4_n458(x)
- end
-end
-
-def fun_l3_n530(x)
- if (x < 1)
- fun_l4_n475(x)
- else
- fun_l4_n8(x)
- end
-end
-
-def fun_l3_n531(x)
- if (x < 1)
- fun_l4_n678(x)
- else
- fun_l4_n970(x)
- end
-end
-
-def fun_l3_n532(x)
- if (x < 1)
- fun_l4_n349(x)
- else
- fun_l4_n853(x)
- end
-end
-
-def fun_l3_n533(x)
- if (x < 1)
- fun_l4_n918(x)
- else
- fun_l4_n820(x)
- end
-end
-
-def fun_l3_n534(x)
- if (x < 1)
- fun_l4_n369(x)
- else
- fun_l4_n445(x)
- end
-end
-
-def fun_l3_n535(x)
- if (x < 1)
- fun_l4_n437(x)
- else
- fun_l4_n930(x)
- end
-end
-
-def fun_l3_n536(x)
- if (x < 1)
- fun_l4_n143(x)
- else
- fun_l4_n986(x)
- end
-end
-
-def fun_l3_n537(x)
- if (x < 1)
- fun_l4_n603(x)
- else
- fun_l4_n818(x)
- end
-end
-
-def fun_l3_n538(x)
- if (x < 1)
- fun_l4_n14(x)
- else
- fun_l4_n994(x)
- end
-end
-
-def fun_l3_n539(x)
- if (x < 1)
- fun_l4_n650(x)
- else
- fun_l4_n115(x)
- end
-end
-
-def fun_l3_n540(x)
- if (x < 1)
- fun_l4_n74(x)
- else
- fun_l4_n559(x)
- end
-end
-
-def fun_l3_n541(x)
- if (x < 1)
- fun_l4_n601(x)
- else
- fun_l4_n756(x)
- end
-end
-
-def fun_l3_n542(x)
- if (x < 1)
- fun_l4_n733(x)
- else
- fun_l4_n274(x)
- end
-end
-
-def fun_l3_n543(x)
- if (x < 1)
- fun_l4_n819(x)
- else
- fun_l4_n97(x)
- end
-end
-
-def fun_l3_n544(x)
- if (x < 1)
- fun_l4_n949(x)
- else
- fun_l4_n868(x)
- end
-end
-
-def fun_l3_n545(x)
- if (x < 1)
- fun_l4_n346(x)
- else
- fun_l4_n0(x)
- end
-end
-
-def fun_l3_n546(x)
- if (x < 1)
- fun_l4_n820(x)
- else
- fun_l4_n188(x)
- end
-end
-
-def fun_l3_n547(x)
- if (x < 1)
- fun_l4_n403(x)
- else
- fun_l4_n670(x)
- end
-end
-
-def fun_l3_n548(x)
- if (x < 1)
- fun_l4_n449(x)
- else
- fun_l4_n96(x)
- end
-end
-
-def fun_l3_n549(x)
- if (x < 1)
- fun_l4_n585(x)
- else
- fun_l4_n388(x)
- end
-end
-
-def fun_l3_n550(x)
- if (x < 1)
- fun_l4_n963(x)
- else
- fun_l4_n979(x)
- end
-end
-
-def fun_l3_n551(x)
- if (x < 1)
- fun_l4_n892(x)
- else
- fun_l4_n583(x)
- end
-end
-
-def fun_l3_n552(x)
- if (x < 1)
- fun_l4_n846(x)
- else
- fun_l4_n508(x)
- end
-end
-
-def fun_l3_n553(x)
- if (x < 1)
- fun_l4_n160(x)
- else
- fun_l4_n428(x)
- end
-end
-
-def fun_l3_n554(x)
- if (x < 1)
- fun_l4_n538(x)
- else
- fun_l4_n641(x)
- end
-end
-
-def fun_l3_n555(x)
- if (x < 1)
- fun_l4_n523(x)
- else
- fun_l4_n697(x)
- end
-end
-
-def fun_l3_n556(x)
- if (x < 1)
- fun_l4_n212(x)
- else
- fun_l4_n0(x)
- end
-end
-
-def fun_l3_n557(x)
- if (x < 1)
- fun_l4_n255(x)
- else
- fun_l4_n860(x)
- end
-end
-
-def fun_l3_n558(x)
- if (x < 1)
- fun_l4_n807(x)
- else
- fun_l4_n865(x)
- end
-end
-
-def fun_l3_n559(x)
- if (x < 1)
- fun_l4_n735(x)
- else
- fun_l4_n352(x)
- end
-end
-
-def fun_l3_n560(x)
- if (x < 1)
- fun_l4_n327(x)
- else
- fun_l4_n739(x)
- end
-end
-
-def fun_l3_n561(x)
- if (x < 1)
- fun_l4_n637(x)
- else
- fun_l4_n628(x)
- end
-end
-
-def fun_l3_n562(x)
- if (x < 1)
- fun_l4_n281(x)
- else
- fun_l4_n394(x)
- end
-end
-
-def fun_l3_n563(x)
- if (x < 1)
- fun_l4_n440(x)
- else
- fun_l4_n179(x)
- end
-end
-
-def fun_l3_n564(x)
- if (x < 1)
- fun_l4_n893(x)
- else
- fun_l4_n396(x)
- end
-end
-
-def fun_l3_n565(x)
- if (x < 1)
- fun_l4_n94(x)
- else
- fun_l4_n134(x)
- end
-end
-
-def fun_l3_n566(x)
- if (x < 1)
- fun_l4_n968(x)
- else
- fun_l4_n444(x)
- end
-end
-
-def fun_l3_n567(x)
- if (x < 1)
- fun_l4_n85(x)
- else
- fun_l4_n281(x)
- end
-end
-
-def fun_l3_n568(x)
- if (x < 1)
- fun_l4_n164(x)
- else
- fun_l4_n229(x)
- end
-end
-
-def fun_l3_n569(x)
- if (x < 1)
- fun_l4_n594(x)
- else
- fun_l4_n756(x)
- end
-end
-
-def fun_l3_n570(x)
- if (x < 1)
- fun_l4_n77(x)
- else
- fun_l4_n370(x)
- end
-end
-
-def fun_l3_n571(x)
- if (x < 1)
- fun_l4_n724(x)
- else
- fun_l4_n965(x)
- end
-end
-
-def fun_l3_n572(x)
- if (x < 1)
- fun_l4_n394(x)
- else
- fun_l4_n595(x)
- end
-end
-
-def fun_l3_n573(x)
- if (x < 1)
- fun_l4_n54(x)
- else
- fun_l4_n41(x)
- end
-end
-
-def fun_l3_n574(x)
- if (x < 1)
- fun_l4_n951(x)
- else
- fun_l4_n414(x)
- end
-end
-
-def fun_l3_n575(x)
- if (x < 1)
- fun_l4_n297(x)
- else
- fun_l4_n126(x)
- end
-end
-
-def fun_l3_n576(x)
- if (x < 1)
- fun_l4_n538(x)
- else
- fun_l4_n276(x)
- end
-end
-
-def fun_l3_n577(x)
- if (x < 1)
- fun_l4_n882(x)
- else
- fun_l4_n152(x)
- end
-end
-
-def fun_l3_n578(x)
- if (x < 1)
- fun_l4_n950(x)
- else
- fun_l4_n822(x)
- end
-end
-
-def fun_l3_n579(x)
- if (x < 1)
- fun_l4_n484(x)
- else
- fun_l4_n99(x)
- end
-end
-
-def fun_l3_n580(x)
- if (x < 1)
- fun_l4_n160(x)
- else
- fun_l4_n98(x)
- end
-end
-
-def fun_l3_n581(x)
- if (x < 1)
- fun_l4_n10(x)
- else
- fun_l4_n537(x)
- end
-end
-
-def fun_l3_n582(x)
- if (x < 1)
- fun_l4_n419(x)
- else
- fun_l4_n285(x)
- end
-end
-
-def fun_l3_n583(x)
- if (x < 1)
- fun_l4_n330(x)
- else
- fun_l4_n732(x)
- end
-end
-
-def fun_l3_n584(x)
- if (x < 1)
- fun_l4_n64(x)
- else
- fun_l4_n461(x)
- end
-end
-
-def fun_l3_n585(x)
- if (x < 1)
- fun_l4_n326(x)
- else
- fun_l4_n134(x)
- end
-end
-
-def fun_l3_n586(x)
- if (x < 1)
- fun_l4_n423(x)
- else
- fun_l4_n945(x)
- end
-end
-
-def fun_l3_n587(x)
- if (x < 1)
- fun_l4_n192(x)
- else
- fun_l4_n459(x)
- end
-end
-
-def fun_l3_n588(x)
- if (x < 1)
- fun_l4_n292(x)
- else
- fun_l4_n697(x)
- end
-end
-
-def fun_l3_n589(x)
- if (x < 1)
- fun_l4_n612(x)
- else
- fun_l4_n902(x)
- end
-end
-
-def fun_l3_n590(x)
- if (x < 1)
- fun_l4_n842(x)
- else
- fun_l4_n300(x)
- end
-end
-
-def fun_l3_n591(x)
- if (x < 1)
- fun_l4_n265(x)
- else
- fun_l4_n906(x)
- end
-end
-
-def fun_l3_n592(x)
- if (x < 1)
- fun_l4_n82(x)
- else
- fun_l4_n417(x)
- end
-end
-
-def fun_l3_n593(x)
- if (x < 1)
- fun_l4_n896(x)
- else
- fun_l4_n794(x)
- end
-end
-
-def fun_l3_n594(x)
- if (x < 1)
- fun_l4_n760(x)
- else
- fun_l4_n83(x)
- end
-end
-
-def fun_l3_n595(x)
- if (x < 1)
- fun_l4_n750(x)
- else
- fun_l4_n778(x)
- end
-end
-
-def fun_l3_n596(x)
- if (x < 1)
- fun_l4_n655(x)
- else
- fun_l4_n8(x)
- end
-end
-
-def fun_l3_n597(x)
- if (x < 1)
- fun_l4_n810(x)
- else
- fun_l4_n824(x)
- end
-end
-
-def fun_l3_n598(x)
- if (x < 1)
- fun_l4_n904(x)
- else
- fun_l4_n921(x)
- end
-end
-
-def fun_l3_n599(x)
- if (x < 1)
- fun_l4_n16(x)
- else
- fun_l4_n96(x)
- end
-end
-
-def fun_l3_n600(x)
- if (x < 1)
- fun_l4_n879(x)
- else
- fun_l4_n757(x)
- end
-end
-
-def fun_l3_n601(x)
- if (x < 1)
- fun_l4_n840(x)
- else
- fun_l4_n62(x)
- end
-end
-
-def fun_l3_n602(x)
- if (x < 1)
- fun_l4_n547(x)
- else
- fun_l4_n45(x)
- end
-end
-
-def fun_l3_n603(x)
- if (x < 1)
- fun_l4_n978(x)
- else
- fun_l4_n646(x)
- end
-end
-
-def fun_l3_n604(x)
- if (x < 1)
- fun_l4_n100(x)
- else
- fun_l4_n654(x)
- end
-end
-
-def fun_l3_n605(x)
- if (x < 1)
- fun_l4_n257(x)
- else
- fun_l4_n465(x)
- end
-end
-
-def fun_l3_n606(x)
- if (x < 1)
- fun_l4_n427(x)
- else
- fun_l4_n489(x)
- end
-end
-
-def fun_l3_n607(x)
- if (x < 1)
- fun_l4_n465(x)
- else
- fun_l4_n48(x)
- end
-end
-
-def fun_l3_n608(x)
- if (x < 1)
- fun_l4_n571(x)
- else
- fun_l4_n332(x)
- end
-end
-
-def fun_l3_n609(x)
- if (x < 1)
- fun_l4_n813(x)
- else
- fun_l4_n462(x)
- end
-end
-
-def fun_l3_n610(x)
- if (x < 1)
- fun_l4_n931(x)
- else
- fun_l4_n913(x)
- end
-end
-
-def fun_l3_n611(x)
- if (x < 1)
- fun_l4_n20(x)
- else
- fun_l4_n933(x)
- end
-end
-
-def fun_l3_n612(x)
- if (x < 1)
- fun_l4_n913(x)
- else
- fun_l4_n787(x)
- end
-end
-
-def fun_l3_n613(x)
- if (x < 1)
- fun_l4_n523(x)
- else
- fun_l4_n735(x)
- end
-end
-
-def fun_l3_n614(x)
- if (x < 1)
- fun_l4_n315(x)
- else
- fun_l4_n913(x)
- end
-end
-
-def fun_l3_n615(x)
- if (x < 1)
- fun_l4_n308(x)
- else
- fun_l4_n865(x)
- end
-end
-
-def fun_l3_n616(x)
- if (x < 1)
- fun_l4_n847(x)
- else
- fun_l4_n506(x)
- end
-end
-
-def fun_l3_n617(x)
- if (x < 1)
- fun_l4_n387(x)
- else
- fun_l4_n551(x)
- end
-end
-
-def fun_l3_n618(x)
- if (x < 1)
- fun_l4_n276(x)
- else
- fun_l4_n991(x)
- end
-end
-
-def fun_l3_n619(x)
- if (x < 1)
- fun_l4_n524(x)
- else
- fun_l4_n202(x)
- end
-end
-
-def fun_l3_n620(x)
- if (x < 1)
- fun_l4_n836(x)
- else
- fun_l4_n548(x)
- end
-end
-
-def fun_l3_n621(x)
- if (x < 1)
- fun_l4_n76(x)
- else
- fun_l4_n5(x)
- end
-end
-
-def fun_l3_n622(x)
- if (x < 1)
- fun_l4_n223(x)
- else
- fun_l4_n438(x)
- end
-end
-
-def fun_l3_n623(x)
- if (x < 1)
- fun_l4_n31(x)
- else
- fun_l4_n590(x)
- end
-end
-
-def fun_l3_n624(x)
- if (x < 1)
- fun_l4_n609(x)
- else
- fun_l4_n513(x)
- end
-end
-
-def fun_l3_n625(x)
- if (x < 1)
- fun_l4_n966(x)
- else
- fun_l4_n278(x)
- end
-end
-
-def fun_l3_n626(x)
- if (x < 1)
- fun_l4_n82(x)
- else
- fun_l4_n100(x)
- end
-end
-
-def fun_l3_n627(x)
- if (x < 1)
- fun_l4_n312(x)
- else
- fun_l4_n746(x)
- end
-end
-
-def fun_l3_n628(x)
- if (x < 1)
- fun_l4_n682(x)
- else
- fun_l4_n791(x)
- end
-end
-
-def fun_l3_n629(x)
- if (x < 1)
- fun_l4_n166(x)
- else
- fun_l4_n678(x)
- end
-end
-
-def fun_l3_n630(x)
- if (x < 1)
- fun_l4_n507(x)
- else
- fun_l4_n778(x)
- end
-end
-
-def fun_l3_n631(x)
- if (x < 1)
- fun_l4_n97(x)
- else
- fun_l4_n13(x)
- end
-end
-
-def fun_l3_n632(x)
- if (x < 1)
- fun_l4_n976(x)
- else
- fun_l4_n794(x)
- end
-end
-
-def fun_l3_n633(x)
- if (x < 1)
- fun_l4_n994(x)
- else
- fun_l4_n743(x)
- end
-end
-
-def fun_l3_n634(x)
- if (x < 1)
- fun_l4_n212(x)
- else
- fun_l4_n754(x)
- end
-end
-
-def fun_l3_n635(x)
- if (x < 1)
- fun_l4_n602(x)
- else
- fun_l4_n997(x)
- end
-end
-
-def fun_l3_n636(x)
- if (x < 1)
- fun_l4_n282(x)
- else
- fun_l4_n133(x)
- end
-end
-
-def fun_l3_n637(x)
- if (x < 1)
- fun_l4_n413(x)
- else
- fun_l4_n952(x)
- end
-end
-
-def fun_l3_n638(x)
- if (x < 1)
- fun_l4_n843(x)
- else
- fun_l4_n783(x)
- end
-end
-
-def fun_l3_n639(x)
- if (x < 1)
- fun_l4_n946(x)
- else
- fun_l4_n833(x)
- end
-end
-
-def fun_l3_n640(x)
- if (x < 1)
- fun_l4_n384(x)
- else
- fun_l4_n444(x)
- end
-end
-
-def fun_l3_n641(x)
- if (x < 1)
- fun_l4_n699(x)
- else
- fun_l4_n26(x)
- end
-end
-
-def fun_l3_n642(x)
- if (x < 1)
- fun_l4_n96(x)
- else
- fun_l4_n623(x)
- end
-end
-
-def fun_l3_n643(x)
- if (x < 1)
- fun_l4_n928(x)
- else
- fun_l4_n8(x)
- end
-end
-
-def fun_l3_n644(x)
- if (x < 1)
- fun_l4_n804(x)
- else
- fun_l4_n618(x)
- end
-end
-
-def fun_l3_n645(x)
- if (x < 1)
- fun_l4_n513(x)
- else
- fun_l4_n214(x)
- end
-end
-
-def fun_l3_n646(x)
- if (x < 1)
- fun_l4_n605(x)
- else
- fun_l4_n920(x)
- end
-end
-
-def fun_l3_n647(x)
- if (x < 1)
- fun_l4_n774(x)
- else
- fun_l4_n297(x)
- end
-end
-
-def fun_l3_n648(x)
- if (x < 1)
- fun_l4_n871(x)
- else
- fun_l4_n75(x)
- end
-end
-
-def fun_l3_n649(x)
- if (x < 1)
- fun_l4_n196(x)
- else
- fun_l4_n277(x)
- end
-end
-
-def fun_l3_n650(x)
- if (x < 1)
- fun_l4_n25(x)
- else
- fun_l4_n681(x)
- end
-end
-
-def fun_l3_n651(x)
- if (x < 1)
- fun_l4_n603(x)
- else
- fun_l4_n46(x)
- end
-end
-
-def fun_l3_n652(x)
- if (x < 1)
- fun_l4_n623(x)
- else
- fun_l4_n604(x)
- end
-end
-
-def fun_l3_n653(x)
- if (x < 1)
- fun_l4_n854(x)
- else
- fun_l4_n955(x)
- end
-end
-
-def fun_l3_n654(x)
- if (x < 1)
- fun_l4_n667(x)
- else
- fun_l4_n988(x)
- end
-end
-
-def fun_l3_n655(x)
- if (x < 1)
- fun_l4_n263(x)
- else
- fun_l4_n831(x)
- end
-end
-
-def fun_l3_n656(x)
- if (x < 1)
- fun_l4_n591(x)
- else
- fun_l4_n593(x)
- end
-end
-
-def fun_l3_n657(x)
- if (x < 1)
- fun_l4_n308(x)
- else
- fun_l4_n547(x)
- end
-end
-
-def fun_l3_n658(x)
- if (x < 1)
- fun_l4_n780(x)
- else
- fun_l4_n174(x)
- end
-end
-
-def fun_l3_n659(x)
- if (x < 1)
- fun_l4_n54(x)
- else
- fun_l4_n681(x)
- end
-end
-
-def fun_l3_n660(x)
- if (x < 1)
- fun_l4_n279(x)
- else
- fun_l4_n282(x)
- end
-end
-
-def fun_l3_n661(x)
- if (x < 1)
- fun_l4_n953(x)
- else
- fun_l4_n832(x)
- end
-end
-
-def fun_l3_n662(x)
- if (x < 1)
- fun_l4_n525(x)
- else
- fun_l4_n850(x)
- end
-end
-
-def fun_l3_n663(x)
- if (x < 1)
- fun_l4_n606(x)
- else
- fun_l4_n167(x)
- end
-end
-
-def fun_l3_n664(x)
- if (x < 1)
- fun_l4_n941(x)
- else
- fun_l4_n591(x)
- end
-end
-
-def fun_l3_n665(x)
- if (x < 1)
- fun_l4_n781(x)
- else
- fun_l4_n162(x)
- end
-end
-
-def fun_l3_n666(x)
- if (x < 1)
- fun_l4_n848(x)
- else
- fun_l4_n133(x)
- end
-end
-
-def fun_l3_n667(x)
- if (x < 1)
- fun_l4_n341(x)
- else
- fun_l4_n212(x)
- end
-end
-
-def fun_l3_n668(x)
- if (x < 1)
- fun_l4_n320(x)
- else
- fun_l4_n131(x)
- end
-end
-
-def fun_l3_n669(x)
- if (x < 1)
- fun_l4_n18(x)
- else
- fun_l4_n385(x)
- end
-end
-
-def fun_l3_n670(x)
- if (x < 1)
- fun_l4_n917(x)
- else
- fun_l4_n988(x)
- end
-end
-
-def fun_l3_n671(x)
- if (x < 1)
- fun_l4_n50(x)
- else
- fun_l4_n27(x)
- end
-end
-
-def fun_l3_n672(x)
- if (x < 1)
- fun_l4_n277(x)
- else
- fun_l4_n238(x)
- end
-end
-
-def fun_l3_n673(x)
- if (x < 1)
- fun_l4_n303(x)
- else
- fun_l4_n643(x)
- end
-end
-
-def fun_l3_n674(x)
- if (x < 1)
- fun_l4_n794(x)
- else
- fun_l4_n906(x)
- end
-end
-
-def fun_l3_n675(x)
- if (x < 1)
- fun_l4_n688(x)
- else
- fun_l4_n312(x)
- end
-end
-
-def fun_l3_n676(x)
- if (x < 1)
- fun_l4_n833(x)
- else
- fun_l4_n900(x)
- end
-end
-
-def fun_l3_n677(x)
- if (x < 1)
- fun_l4_n649(x)
- else
- fun_l4_n822(x)
- end
-end
-
-def fun_l3_n678(x)
- if (x < 1)
- fun_l4_n958(x)
- else
- fun_l4_n939(x)
- end
-end
-
-def fun_l3_n679(x)
- if (x < 1)
- fun_l4_n949(x)
- else
- fun_l4_n887(x)
- end
-end
-
-def fun_l3_n680(x)
- if (x < 1)
- fun_l4_n630(x)
- else
- fun_l4_n508(x)
- end
-end
-
-def fun_l3_n681(x)
- if (x < 1)
- fun_l4_n553(x)
- else
- fun_l4_n940(x)
- end
-end
-
-def fun_l3_n682(x)
- if (x < 1)
- fun_l4_n180(x)
- else
- fun_l4_n950(x)
- end
-end
-
-def fun_l3_n683(x)
- if (x < 1)
- fun_l4_n898(x)
- else
- fun_l4_n374(x)
- end
-end
-
-def fun_l3_n684(x)
- if (x < 1)
- fun_l4_n802(x)
- else
- fun_l4_n527(x)
- end
-end
-
-def fun_l3_n685(x)
- if (x < 1)
- fun_l4_n751(x)
- else
- fun_l4_n967(x)
- end
-end
-
-def fun_l3_n686(x)
- if (x < 1)
- fun_l4_n235(x)
- else
- fun_l4_n559(x)
- end
-end
-
-def fun_l3_n687(x)
- if (x < 1)
- fun_l4_n694(x)
- else
- fun_l4_n819(x)
- end
-end
-
-def fun_l3_n688(x)
- if (x < 1)
- fun_l4_n167(x)
- else
- fun_l4_n91(x)
- end
-end
-
-def fun_l3_n689(x)
- if (x < 1)
- fun_l4_n692(x)
- else
- fun_l4_n422(x)
- end
-end
-
-def fun_l3_n690(x)
- if (x < 1)
- fun_l4_n344(x)
- else
- fun_l4_n738(x)
- end
-end
-
-def fun_l3_n691(x)
- if (x < 1)
- fun_l4_n394(x)
- else
- fun_l4_n603(x)
- end
-end
-
-def fun_l3_n692(x)
- if (x < 1)
- fun_l4_n909(x)
- else
- fun_l4_n528(x)
- end
-end
-
-def fun_l3_n693(x)
- if (x < 1)
- fun_l4_n180(x)
- else
- fun_l4_n22(x)
- end
-end
-
-def fun_l3_n694(x)
- if (x < 1)
- fun_l4_n6(x)
- else
- fun_l4_n777(x)
- end
-end
-
-def fun_l3_n695(x)
- if (x < 1)
- fun_l4_n327(x)
- else
- fun_l4_n948(x)
- end
-end
-
-def fun_l3_n696(x)
- if (x < 1)
- fun_l4_n748(x)
- else
- fun_l4_n706(x)
- end
-end
-
-def fun_l3_n697(x)
- if (x < 1)
- fun_l4_n720(x)
- else
- fun_l4_n693(x)
- end
-end
-
-def fun_l3_n698(x)
- if (x < 1)
- fun_l4_n282(x)
- else
- fun_l4_n755(x)
- end
-end
-
-def fun_l3_n699(x)
- if (x < 1)
- fun_l4_n975(x)
- else
- fun_l4_n415(x)
- end
-end
-
-def fun_l3_n700(x)
- if (x < 1)
- fun_l4_n684(x)
- else
- fun_l4_n738(x)
- end
-end
-
-def fun_l3_n701(x)
- if (x < 1)
- fun_l4_n58(x)
- else
- fun_l4_n892(x)
- end
-end
-
-def fun_l3_n702(x)
- if (x < 1)
- fun_l4_n366(x)
- else
- fun_l4_n189(x)
- end
-end
-
-def fun_l3_n703(x)
- if (x < 1)
- fun_l4_n422(x)
- else
- fun_l4_n535(x)
- end
-end
-
-def fun_l3_n704(x)
- if (x < 1)
- fun_l4_n886(x)
- else
- fun_l4_n223(x)
- end
-end
-
-def fun_l3_n705(x)
- if (x < 1)
- fun_l4_n57(x)
- else
- fun_l4_n62(x)
- end
-end
-
-def fun_l3_n706(x)
- if (x < 1)
- fun_l4_n629(x)
- else
- fun_l4_n479(x)
- end
-end
-
-def fun_l3_n707(x)
- if (x < 1)
- fun_l4_n477(x)
- else
- fun_l4_n302(x)
- end
-end
-
-def fun_l3_n708(x)
- if (x < 1)
- fun_l4_n790(x)
- else
- fun_l4_n262(x)
- end
-end
-
-def fun_l3_n709(x)
- if (x < 1)
- fun_l4_n772(x)
- else
- fun_l4_n995(x)
- end
-end
-
-def fun_l3_n710(x)
- if (x < 1)
- fun_l4_n549(x)
- else
- fun_l4_n651(x)
- end
-end
-
-def fun_l3_n711(x)
- if (x < 1)
- fun_l4_n77(x)
- else
- fun_l4_n555(x)
- end
-end
-
-def fun_l3_n712(x)
- if (x < 1)
- fun_l4_n515(x)
- else
- fun_l4_n734(x)
- end
-end
-
-def fun_l3_n713(x)
- if (x < 1)
- fun_l4_n778(x)
- else
- fun_l4_n884(x)
- end
-end
-
-def fun_l3_n714(x)
- if (x < 1)
- fun_l4_n235(x)
- else
- fun_l4_n637(x)
- end
-end
-
-def fun_l3_n715(x)
- if (x < 1)
- fun_l4_n516(x)
- else
- fun_l4_n249(x)
- end
-end
-
-def fun_l3_n716(x)
- if (x < 1)
- fun_l4_n44(x)
- else
- fun_l4_n307(x)
- end
-end
-
-def fun_l3_n717(x)
- if (x < 1)
- fun_l4_n482(x)
- else
- fun_l4_n4(x)
- end
-end
-
-def fun_l3_n718(x)
- if (x < 1)
- fun_l4_n195(x)
- else
- fun_l4_n410(x)
- end
-end
-
-def fun_l3_n719(x)
- if (x < 1)
- fun_l4_n862(x)
- else
- fun_l4_n91(x)
- end
-end
-
-def fun_l3_n720(x)
- if (x < 1)
- fun_l4_n591(x)
- else
- fun_l4_n391(x)
- end
-end
-
-def fun_l3_n721(x)
- if (x < 1)
- fun_l4_n776(x)
- else
- fun_l4_n129(x)
- end
-end
-
-def fun_l3_n722(x)
- if (x < 1)
- fun_l4_n857(x)
- else
- fun_l4_n160(x)
- end
-end
-
-def fun_l3_n723(x)
- if (x < 1)
- fun_l4_n772(x)
- else
- fun_l4_n567(x)
- end
-end
-
-def fun_l3_n724(x)
- if (x < 1)
- fun_l4_n582(x)
- else
- fun_l4_n100(x)
- end
-end
-
-def fun_l3_n725(x)
- if (x < 1)
- fun_l4_n962(x)
- else
- fun_l4_n846(x)
- end
-end
-
-def fun_l3_n726(x)
- if (x < 1)
- fun_l4_n892(x)
- else
- fun_l4_n334(x)
- end
-end
-
-def fun_l3_n727(x)
- if (x < 1)
- fun_l4_n17(x)
- else
- fun_l4_n690(x)
- end
-end
-
-def fun_l3_n728(x)
- if (x < 1)
- fun_l4_n453(x)
- else
- fun_l4_n234(x)
- end
-end
-
-def fun_l3_n729(x)
- if (x < 1)
- fun_l4_n562(x)
- else
- fun_l4_n139(x)
- end
-end
-
-def fun_l3_n730(x)
- if (x < 1)
- fun_l4_n87(x)
- else
- fun_l4_n513(x)
- end
-end
-
-def fun_l3_n731(x)
- if (x < 1)
- fun_l4_n565(x)
- else
- fun_l4_n289(x)
- end
-end
-
-def fun_l3_n732(x)
- if (x < 1)
- fun_l4_n821(x)
- else
- fun_l4_n290(x)
- end
-end
-
-def fun_l3_n733(x)
- if (x < 1)
- fun_l4_n464(x)
- else
- fun_l4_n929(x)
- end
-end
-
-def fun_l3_n734(x)
- if (x < 1)
- fun_l4_n617(x)
- else
- fun_l4_n230(x)
- end
-end
-
-def fun_l3_n735(x)
- if (x < 1)
- fun_l4_n942(x)
- else
- fun_l4_n770(x)
- end
-end
-
-def fun_l3_n736(x)
- if (x < 1)
- fun_l4_n826(x)
- else
- fun_l4_n414(x)
- end
-end
-
-def fun_l3_n737(x)
- if (x < 1)
- fun_l4_n47(x)
- else
- fun_l4_n357(x)
- end
-end
-
-def fun_l3_n738(x)
- if (x < 1)
- fun_l4_n582(x)
- else
- fun_l4_n652(x)
- end
-end
-
-def fun_l3_n739(x)
- if (x < 1)
- fun_l4_n641(x)
- else
- fun_l4_n479(x)
- end
-end
-
-def fun_l3_n740(x)
- if (x < 1)
- fun_l4_n11(x)
- else
- fun_l4_n965(x)
- end
-end
-
-def fun_l3_n741(x)
- if (x < 1)
- fun_l4_n402(x)
- else
- fun_l4_n512(x)
- end
-end
-
-def fun_l3_n742(x)
- if (x < 1)
- fun_l4_n300(x)
- else
- fun_l4_n942(x)
- end
-end
-
-def fun_l3_n743(x)
- if (x < 1)
- fun_l4_n770(x)
- else
- fun_l4_n690(x)
- end
-end
-
-def fun_l3_n744(x)
- if (x < 1)
- fun_l4_n575(x)
- else
- fun_l4_n158(x)
- end
-end
-
-def fun_l3_n745(x)
- if (x < 1)
- fun_l4_n760(x)
- else
- fun_l4_n552(x)
- end
-end
-
-def fun_l3_n746(x)
- if (x < 1)
- fun_l4_n887(x)
- else
- fun_l4_n319(x)
- end
-end
-
-def fun_l3_n747(x)
- if (x < 1)
- fun_l4_n967(x)
- else
- fun_l4_n561(x)
- end
-end
-
-def fun_l3_n748(x)
- if (x < 1)
- fun_l4_n4(x)
- else
- fun_l4_n766(x)
- end
-end
-
-def fun_l3_n749(x)
- if (x < 1)
- fun_l4_n993(x)
- else
- fun_l4_n991(x)
- end
-end
-
-def fun_l3_n750(x)
- if (x < 1)
- fun_l4_n890(x)
- else
- fun_l4_n663(x)
- end
-end
-
-def fun_l3_n751(x)
- if (x < 1)
- fun_l4_n267(x)
- else
- fun_l4_n449(x)
- end
-end
-
-def fun_l3_n752(x)
- if (x < 1)
- fun_l4_n540(x)
- else
- fun_l4_n226(x)
- end
-end
-
-def fun_l3_n753(x)
- if (x < 1)
- fun_l4_n893(x)
- else
- fun_l4_n116(x)
- end
-end
-
-def fun_l3_n754(x)
- if (x < 1)
- fun_l4_n570(x)
- else
- fun_l4_n192(x)
- end
-end
-
-def fun_l3_n755(x)
- if (x < 1)
- fun_l4_n712(x)
- else
- fun_l4_n81(x)
- end
-end
-
-def fun_l3_n756(x)
- if (x < 1)
- fun_l4_n833(x)
- else
- fun_l4_n24(x)
- end
-end
-
-def fun_l3_n757(x)
- if (x < 1)
- fun_l4_n740(x)
- else
- fun_l4_n803(x)
- end
-end
-
-def fun_l3_n758(x)
- if (x < 1)
- fun_l4_n552(x)
- else
- fun_l4_n551(x)
- end
-end
-
-def fun_l3_n759(x)
- if (x < 1)
- fun_l4_n570(x)
- else
- fun_l4_n677(x)
- end
-end
-
-def fun_l3_n760(x)
- if (x < 1)
- fun_l4_n243(x)
- else
- fun_l4_n677(x)
- end
-end
-
-def fun_l3_n761(x)
- if (x < 1)
- fun_l4_n65(x)
- else
- fun_l4_n660(x)
- end
-end
-
-def fun_l3_n762(x)
- if (x < 1)
- fun_l4_n989(x)
- else
- fun_l4_n761(x)
- end
-end
-
-def fun_l3_n763(x)
- if (x < 1)
- fun_l4_n971(x)
- else
- fun_l4_n280(x)
- end
-end
-
-def fun_l3_n764(x)
- if (x < 1)
- fun_l4_n441(x)
- else
- fun_l4_n506(x)
- end
-end
-
-def fun_l3_n765(x)
- if (x < 1)
- fun_l4_n577(x)
- else
- fun_l4_n586(x)
- end
-end
-
-def fun_l3_n766(x)
- if (x < 1)
- fun_l4_n385(x)
- else
- fun_l4_n60(x)
- end
-end
-
-def fun_l3_n767(x)
- if (x < 1)
- fun_l4_n380(x)
- else
- fun_l4_n32(x)
- end
-end
-
-def fun_l3_n768(x)
- if (x < 1)
- fun_l4_n797(x)
- else
- fun_l4_n437(x)
- end
-end
-
-def fun_l3_n769(x)
- if (x < 1)
- fun_l4_n615(x)
- else
- fun_l4_n369(x)
- end
-end
-
-def fun_l3_n770(x)
- if (x < 1)
- fun_l4_n779(x)
- else
- fun_l4_n194(x)
- end
-end
-
-def fun_l3_n771(x)
- if (x < 1)
- fun_l4_n287(x)
- else
- fun_l4_n819(x)
- end
-end
-
-def fun_l3_n772(x)
- if (x < 1)
- fun_l4_n405(x)
- else
- fun_l4_n738(x)
- end
-end
-
-def fun_l3_n773(x)
- if (x < 1)
- fun_l4_n706(x)
- else
- fun_l4_n174(x)
- end
-end
-
-def fun_l3_n774(x)
- if (x < 1)
- fun_l4_n690(x)
- else
- fun_l4_n841(x)
- end
-end
-
-def fun_l3_n775(x)
- if (x < 1)
- fun_l4_n256(x)
- else
- fun_l4_n179(x)
- end
-end
-
-def fun_l3_n776(x)
- if (x < 1)
- fun_l4_n342(x)
- else
- fun_l4_n359(x)
- end
-end
-
-def fun_l3_n777(x)
- if (x < 1)
- fun_l4_n371(x)
- else
- fun_l4_n680(x)
- end
-end
-
-def fun_l3_n778(x)
- if (x < 1)
- fun_l4_n996(x)
- else
- fun_l4_n343(x)
- end
-end
-
-def fun_l3_n779(x)
- if (x < 1)
- fun_l4_n96(x)
- else
- fun_l4_n893(x)
- end
-end
-
-def fun_l3_n780(x)
- if (x < 1)
- fun_l4_n706(x)
- else
- fun_l4_n140(x)
- end
-end
-
-def fun_l3_n781(x)
- if (x < 1)
- fun_l4_n349(x)
- else
- fun_l4_n317(x)
- end
-end
-
-def fun_l3_n782(x)
- if (x < 1)
- fun_l4_n491(x)
- else
- fun_l4_n616(x)
- end
-end
-
-def fun_l3_n783(x)
- if (x < 1)
- fun_l4_n227(x)
- else
- fun_l4_n356(x)
- end
-end
-
-def fun_l3_n784(x)
- if (x < 1)
- fun_l4_n387(x)
- else
- fun_l4_n532(x)
- end
-end
-
-def fun_l3_n785(x)
- if (x < 1)
- fun_l4_n648(x)
- else
- fun_l4_n34(x)
- end
-end
-
-def fun_l3_n786(x)
- if (x < 1)
- fun_l4_n562(x)
- else
- fun_l4_n476(x)
- end
-end
-
-def fun_l3_n787(x)
- if (x < 1)
- fun_l4_n162(x)
- else
- fun_l4_n384(x)
- end
-end
-
-def fun_l3_n788(x)
- if (x < 1)
- fun_l4_n221(x)
- else
- fun_l4_n617(x)
- end
-end
-
-def fun_l3_n789(x)
- if (x < 1)
- fun_l4_n670(x)
- else
- fun_l4_n350(x)
- end
-end
-
-def fun_l3_n790(x)
- if (x < 1)
- fun_l4_n202(x)
- else
- fun_l4_n112(x)
- end
-end
-
-def fun_l3_n791(x)
- if (x < 1)
- fun_l4_n390(x)
- else
- fun_l4_n868(x)
- end
-end
-
-def fun_l3_n792(x)
- if (x < 1)
- fun_l4_n746(x)
- else
- fun_l4_n833(x)
- end
-end
-
-def fun_l3_n793(x)
- if (x < 1)
- fun_l4_n471(x)
- else
- fun_l4_n60(x)
- end
-end
-
-def fun_l3_n794(x)
- if (x < 1)
- fun_l4_n583(x)
- else
- fun_l4_n470(x)
- end
-end
-
-def fun_l3_n795(x)
- if (x < 1)
- fun_l4_n567(x)
- else
- fun_l4_n218(x)
- end
-end
-
-def fun_l3_n796(x)
- if (x < 1)
- fun_l4_n140(x)
- else
- fun_l4_n690(x)
- end
-end
-
-def fun_l3_n797(x)
- if (x < 1)
- fun_l4_n190(x)
- else
- fun_l4_n437(x)
- end
-end
-
-def fun_l3_n798(x)
- if (x < 1)
- fun_l4_n684(x)
- else
- fun_l4_n843(x)
- end
-end
-
-def fun_l3_n799(x)
- if (x < 1)
- fun_l4_n825(x)
- else
- fun_l4_n354(x)
- end
-end
-
-def fun_l3_n800(x)
- if (x < 1)
- fun_l4_n711(x)
- else
- fun_l4_n606(x)
- end
-end
-
-def fun_l3_n801(x)
- if (x < 1)
- fun_l4_n756(x)
- else
- fun_l4_n464(x)
- end
-end
-
-def fun_l3_n802(x)
- if (x < 1)
- fun_l4_n143(x)
- else
- fun_l4_n962(x)
- end
-end
-
-def fun_l3_n803(x)
- if (x < 1)
- fun_l4_n223(x)
- else
- fun_l4_n293(x)
- end
-end
-
-def fun_l3_n804(x)
- if (x < 1)
- fun_l4_n832(x)
- else
- fun_l4_n632(x)
- end
-end
-
-def fun_l3_n805(x)
- if (x < 1)
- fun_l4_n649(x)
- else
- fun_l4_n259(x)
- end
-end
-
-def fun_l3_n806(x)
- if (x < 1)
- fun_l4_n617(x)
- else
- fun_l4_n993(x)
- end
-end
-
-def fun_l3_n807(x)
- if (x < 1)
- fun_l4_n257(x)
- else
- fun_l4_n712(x)
- end
-end
-
-def fun_l3_n808(x)
- if (x < 1)
- fun_l4_n632(x)
- else
- fun_l4_n563(x)
- end
-end
-
-def fun_l3_n809(x)
- if (x < 1)
- fun_l4_n154(x)
- else
- fun_l4_n561(x)
- end
-end
-
-def fun_l3_n810(x)
- if (x < 1)
- fun_l4_n411(x)
- else
- fun_l4_n42(x)
- end
-end
-
-def fun_l3_n811(x)
- if (x < 1)
- fun_l4_n560(x)
- else
- fun_l4_n531(x)
- end
-end
-
-def fun_l3_n812(x)
- if (x < 1)
- fun_l4_n759(x)
- else
- fun_l4_n588(x)
- end
-end
-
-def fun_l3_n813(x)
- if (x < 1)
- fun_l4_n311(x)
- else
- fun_l4_n813(x)
- end
-end
-
-def fun_l3_n814(x)
- if (x < 1)
- fun_l4_n521(x)
- else
- fun_l4_n877(x)
- end
-end
-
-def fun_l3_n815(x)
- if (x < 1)
- fun_l4_n578(x)
- else
- fun_l4_n37(x)
- end
-end
-
-def fun_l3_n816(x)
- if (x < 1)
- fun_l4_n337(x)
- else
- fun_l4_n562(x)
- end
-end
-
-def fun_l3_n817(x)
- if (x < 1)
- fun_l4_n523(x)
- else
- fun_l4_n445(x)
- end
-end
-
-def fun_l3_n818(x)
- if (x < 1)
- fun_l4_n256(x)
- else
- fun_l4_n551(x)
- end
-end
-
-def fun_l3_n819(x)
- if (x < 1)
- fun_l4_n718(x)
- else
- fun_l4_n463(x)
- end
-end
-
-def fun_l3_n820(x)
- if (x < 1)
- fun_l4_n780(x)
- else
- fun_l4_n103(x)
- end
-end
-
-def fun_l3_n821(x)
- if (x < 1)
- fun_l4_n729(x)
- else
- fun_l4_n331(x)
- end
-end
-
-def fun_l3_n822(x)
- if (x < 1)
- fun_l4_n84(x)
- else
- fun_l4_n176(x)
- end
-end
-
-def fun_l3_n823(x)
- if (x < 1)
- fun_l4_n231(x)
- else
- fun_l4_n681(x)
- end
-end
-
-def fun_l3_n824(x)
- if (x < 1)
- fun_l4_n675(x)
- else
- fun_l4_n837(x)
- end
-end
-
-def fun_l3_n825(x)
- if (x < 1)
- fun_l4_n140(x)
- else
- fun_l4_n932(x)
- end
-end
-
-def fun_l3_n826(x)
- if (x < 1)
- fun_l4_n268(x)
- else
- fun_l4_n908(x)
- end
-end
-
-def fun_l3_n827(x)
- if (x < 1)
- fun_l4_n959(x)
- else
- fun_l4_n643(x)
- end
-end
-
-def fun_l3_n828(x)
- if (x < 1)
- fun_l4_n290(x)
- else
- fun_l4_n718(x)
- end
-end
-
-def fun_l3_n829(x)
- if (x < 1)
- fun_l4_n430(x)
- else
- fun_l4_n114(x)
- end
-end
-
-def fun_l3_n830(x)
- if (x < 1)
- fun_l4_n817(x)
- else
- fun_l4_n296(x)
- end
-end
-
-def fun_l3_n831(x)
- if (x < 1)
- fun_l4_n586(x)
- else
- fun_l4_n345(x)
- end
-end
-
-def fun_l3_n832(x)
- if (x < 1)
- fun_l4_n321(x)
- else
- fun_l4_n805(x)
- end
-end
-
-def fun_l3_n833(x)
- if (x < 1)
- fun_l4_n57(x)
- else
- fun_l4_n373(x)
- end
-end
-
-def fun_l3_n834(x)
- if (x < 1)
- fun_l4_n344(x)
- else
- fun_l4_n654(x)
- end
-end
-
-def fun_l3_n835(x)
- if (x < 1)
- fun_l4_n761(x)
- else
- fun_l4_n295(x)
- end
-end
-
-def fun_l3_n836(x)
- if (x < 1)
- fun_l4_n169(x)
- else
- fun_l4_n184(x)
- end
-end
-
-def fun_l3_n837(x)
- if (x < 1)
- fun_l4_n482(x)
- else
- fun_l4_n127(x)
- end
-end
-
-def fun_l3_n838(x)
- if (x < 1)
- fun_l4_n260(x)
- else
- fun_l4_n662(x)
- end
-end
-
-def fun_l3_n839(x)
- if (x < 1)
- fun_l4_n548(x)
- else
- fun_l4_n197(x)
- end
-end
-
-def fun_l3_n840(x)
- if (x < 1)
- fun_l4_n96(x)
- else
- fun_l4_n17(x)
- end
-end
-
-def fun_l3_n841(x)
- if (x < 1)
- fun_l4_n946(x)
- else
- fun_l4_n447(x)
- end
-end
-
-def fun_l3_n842(x)
- if (x < 1)
- fun_l4_n66(x)
- else
- fun_l4_n110(x)
- end
-end
-
-def fun_l3_n843(x)
- if (x < 1)
- fun_l4_n574(x)
- else
- fun_l4_n887(x)
- end
-end
-
-def fun_l3_n844(x)
- if (x < 1)
- fun_l4_n912(x)
- else
- fun_l4_n465(x)
- end
-end
-
-def fun_l3_n845(x)
- if (x < 1)
- fun_l4_n401(x)
- else
- fun_l4_n903(x)
- end
-end
-
-def fun_l3_n846(x)
- if (x < 1)
- fun_l4_n929(x)
- else
- fun_l4_n238(x)
- end
-end
-
-def fun_l3_n847(x)
- if (x < 1)
- fun_l4_n579(x)
- else
- fun_l4_n924(x)
- end
-end
-
-def fun_l3_n848(x)
- if (x < 1)
- fun_l4_n697(x)
- else
- fun_l4_n157(x)
- end
-end
-
-def fun_l3_n849(x)
- if (x < 1)
- fun_l4_n608(x)
- else
- fun_l4_n426(x)
- end
-end
-
-def fun_l3_n850(x)
- if (x < 1)
- fun_l4_n710(x)
- else
- fun_l4_n360(x)
- end
-end
-
-def fun_l3_n851(x)
- if (x < 1)
- fun_l4_n558(x)
- else
- fun_l4_n152(x)
- end
-end
-
-def fun_l3_n852(x)
- if (x < 1)
- fun_l4_n276(x)
- else
- fun_l4_n895(x)
- end
-end
-
-def fun_l3_n853(x)
- if (x < 1)
- fun_l4_n945(x)
- else
- fun_l4_n251(x)
- end
-end
-
-def fun_l3_n854(x)
- if (x < 1)
- fun_l4_n131(x)
- else
- fun_l4_n677(x)
- end
-end
-
-def fun_l3_n855(x)
- if (x < 1)
- fun_l4_n493(x)
- else
- fun_l4_n631(x)
- end
-end
-
-def fun_l3_n856(x)
- if (x < 1)
- fun_l4_n608(x)
- else
- fun_l4_n556(x)
- end
-end
-
-def fun_l3_n857(x)
- if (x < 1)
- fun_l4_n808(x)
- else
- fun_l4_n672(x)
- end
-end
-
-def fun_l3_n858(x)
- if (x < 1)
- fun_l4_n407(x)
- else
- fun_l4_n648(x)
- end
-end
-
-def fun_l3_n859(x)
- if (x < 1)
- fun_l4_n217(x)
- else
- fun_l4_n763(x)
- end
-end
-
-def fun_l3_n860(x)
- if (x < 1)
- fun_l4_n941(x)
- else
- fun_l4_n159(x)
- end
-end
-
-def fun_l3_n861(x)
- if (x < 1)
- fun_l4_n364(x)
- else
- fun_l4_n241(x)
- end
-end
-
-def fun_l3_n862(x)
- if (x < 1)
- fun_l4_n915(x)
- else
- fun_l4_n729(x)
- end
-end
-
-def fun_l3_n863(x)
- if (x < 1)
- fun_l4_n137(x)
- else
- fun_l4_n317(x)
- end
-end
-
-def fun_l3_n864(x)
- if (x < 1)
- fun_l4_n818(x)
- else
- fun_l4_n782(x)
- end
-end
-
-def fun_l3_n865(x)
- if (x < 1)
- fun_l4_n577(x)
- else
- fun_l4_n418(x)
- end
-end
-
-def fun_l3_n866(x)
- if (x < 1)
- fun_l4_n882(x)
- else
- fun_l4_n7(x)
- end
-end
-
-def fun_l3_n867(x)
- if (x < 1)
- fun_l4_n238(x)
- else
- fun_l4_n944(x)
- end
-end
-
-def fun_l3_n868(x)
- if (x < 1)
- fun_l4_n105(x)
- else
- fun_l4_n465(x)
- end
-end
-
-def fun_l3_n869(x)
- if (x < 1)
- fun_l4_n841(x)
- else
- fun_l4_n262(x)
- end
-end
-
-def fun_l3_n870(x)
- if (x < 1)
- fun_l4_n32(x)
- else
- fun_l4_n992(x)
- end
-end
-
-def fun_l3_n871(x)
- if (x < 1)
- fun_l4_n431(x)
- else
- fun_l4_n391(x)
- end
-end
-
-def fun_l3_n872(x)
- if (x < 1)
- fun_l4_n829(x)
- else
- fun_l4_n879(x)
- end
-end
-
-def fun_l3_n873(x)
- if (x < 1)
- fun_l4_n617(x)
- else
- fun_l4_n657(x)
- end
-end
-
-def fun_l3_n874(x)
- if (x < 1)
- fun_l4_n529(x)
- else
- fun_l4_n717(x)
- end
-end
-
-def fun_l3_n875(x)
- if (x < 1)
- fun_l4_n928(x)
- else
- fun_l4_n476(x)
- end
-end
-
-def fun_l3_n876(x)
- if (x < 1)
- fun_l4_n388(x)
- else
- fun_l4_n949(x)
- end
-end
-
-def fun_l3_n877(x)
- if (x < 1)
- fun_l4_n826(x)
- else
- fun_l4_n560(x)
- end
-end
-
-def fun_l3_n878(x)
- if (x < 1)
- fun_l4_n863(x)
- else
- fun_l4_n122(x)
- end
-end
-
-def fun_l3_n879(x)
- if (x < 1)
- fun_l4_n964(x)
- else
- fun_l4_n793(x)
- end
-end
-
-def fun_l3_n880(x)
- if (x < 1)
- fun_l4_n141(x)
- else
- fun_l4_n132(x)
- end
-end
-
-def fun_l3_n881(x)
- if (x < 1)
- fun_l4_n735(x)
- else
- fun_l4_n592(x)
- end
-end
-
-def fun_l3_n882(x)
- if (x < 1)
- fun_l4_n585(x)
- else
- fun_l4_n341(x)
- end
-end
-
-def fun_l3_n883(x)
- if (x < 1)
- fun_l4_n843(x)
- else
- fun_l4_n692(x)
- end
-end
-
-def fun_l3_n884(x)
- if (x < 1)
- fun_l4_n360(x)
- else
- fun_l4_n833(x)
- end
-end
-
-def fun_l3_n885(x)
- if (x < 1)
- fun_l4_n31(x)
- else
- fun_l4_n62(x)
- end
-end
-
-def fun_l3_n886(x)
- if (x < 1)
- fun_l4_n756(x)
- else
- fun_l4_n699(x)
- end
-end
-
-def fun_l3_n887(x)
- if (x < 1)
- fun_l4_n71(x)
- else
- fun_l4_n256(x)
- end
-end
-
-def fun_l3_n888(x)
- if (x < 1)
- fun_l4_n406(x)
- else
- fun_l4_n493(x)
- end
-end
-
-def fun_l3_n889(x)
- if (x < 1)
- fun_l4_n489(x)
- else
- fun_l4_n874(x)
- end
-end
-
-def fun_l3_n890(x)
- if (x < 1)
- fun_l4_n365(x)
- else
- fun_l4_n910(x)
- end
-end
-
-def fun_l3_n891(x)
- if (x < 1)
- fun_l4_n262(x)
- else
- fun_l4_n665(x)
- end
-end
-
-def fun_l3_n892(x)
- if (x < 1)
- fun_l4_n274(x)
- else
- fun_l4_n849(x)
- end
-end
-
-def fun_l3_n893(x)
- if (x < 1)
- fun_l4_n880(x)
- else
- fun_l4_n739(x)
- end
-end
-
-def fun_l3_n894(x)
- if (x < 1)
- fun_l4_n504(x)
- else
- fun_l4_n128(x)
- end
-end
-
-def fun_l3_n895(x)
- if (x < 1)
- fun_l4_n555(x)
- else
- fun_l4_n281(x)
- end
-end
-
-def fun_l3_n896(x)
- if (x < 1)
- fun_l4_n270(x)
- else
- fun_l4_n225(x)
- end
-end
-
-def fun_l3_n897(x)
- if (x < 1)
- fun_l4_n38(x)
- else
- fun_l4_n26(x)
- end
-end
-
-def fun_l3_n898(x)
- if (x < 1)
- fun_l4_n944(x)
- else
- fun_l4_n217(x)
- end
-end
-
-def fun_l3_n899(x)
- if (x < 1)
- fun_l4_n967(x)
- else
- fun_l4_n853(x)
- end
-end
-
-def fun_l3_n900(x)
- if (x < 1)
- fun_l4_n686(x)
- else
- fun_l4_n760(x)
- end
-end
-
-def fun_l3_n901(x)
- if (x < 1)
- fun_l4_n698(x)
- else
- fun_l4_n842(x)
- end
-end
-
-def fun_l3_n902(x)
- if (x < 1)
- fun_l4_n344(x)
- else
- fun_l4_n701(x)
- end
-end
-
-def fun_l3_n903(x)
- if (x < 1)
- fun_l4_n756(x)
- else
- fun_l4_n321(x)
- end
-end
-
-def fun_l3_n904(x)
- if (x < 1)
- fun_l4_n504(x)
- else
- fun_l4_n228(x)
- end
-end
-
-def fun_l3_n905(x)
- if (x < 1)
- fun_l4_n135(x)
- else
- fun_l4_n57(x)
- end
-end
-
-def fun_l3_n906(x)
- if (x < 1)
- fun_l4_n279(x)
- else
- fun_l4_n912(x)
- end
-end
-
-def fun_l3_n907(x)
- if (x < 1)
- fun_l4_n962(x)
- else
- fun_l4_n418(x)
- end
-end
-
-def fun_l3_n908(x)
- if (x < 1)
- fun_l4_n972(x)
- else
- fun_l4_n14(x)
- end
-end
-
-def fun_l3_n909(x)
- if (x < 1)
- fun_l4_n231(x)
- else
- fun_l4_n763(x)
- end
-end
-
-def fun_l3_n910(x)
- if (x < 1)
- fun_l4_n859(x)
- else
- fun_l4_n243(x)
- end
-end
-
-def fun_l3_n911(x)
- if (x < 1)
- fun_l4_n153(x)
- else
- fun_l4_n136(x)
- end
-end
-
-def fun_l3_n912(x)
- if (x < 1)
- fun_l4_n325(x)
- else
- fun_l4_n113(x)
- end
-end
-
-def fun_l3_n913(x)
- if (x < 1)
- fun_l4_n625(x)
- else
- fun_l4_n179(x)
- end
-end
-
-def fun_l3_n914(x)
- if (x < 1)
- fun_l4_n54(x)
- else
- fun_l4_n88(x)
- end
-end
-
-def fun_l3_n915(x)
- if (x < 1)
- fun_l4_n332(x)
- else
- fun_l4_n3(x)
- end
-end
-
-def fun_l3_n916(x)
- if (x < 1)
- fun_l4_n748(x)
- else
- fun_l4_n21(x)
- end
-end
-
-def fun_l3_n917(x)
- if (x < 1)
- fun_l4_n132(x)
- else
- fun_l4_n132(x)
- end
-end
-
-def fun_l3_n918(x)
- if (x < 1)
- fun_l4_n295(x)
- else
- fun_l4_n429(x)
- end
-end
-
-def fun_l3_n919(x)
- if (x < 1)
- fun_l4_n105(x)
- else
- fun_l4_n984(x)
- end
-end
-
-def fun_l3_n920(x)
- if (x < 1)
- fun_l4_n319(x)
- else
- fun_l4_n304(x)
- end
-end
-
-def fun_l3_n921(x)
- if (x < 1)
- fun_l4_n756(x)
- else
- fun_l4_n639(x)
- end
-end
-
-def fun_l3_n922(x)
- if (x < 1)
- fun_l4_n678(x)
- else
- fun_l4_n209(x)
- end
-end
-
-def fun_l3_n923(x)
- if (x < 1)
- fun_l4_n755(x)
- else
- fun_l4_n941(x)
- end
-end
-
-def fun_l3_n924(x)
- if (x < 1)
- fun_l4_n311(x)
- else
- fun_l4_n272(x)
- end
-end
-
-def fun_l3_n925(x)
- if (x < 1)
- fun_l4_n543(x)
- else
- fun_l4_n896(x)
- end
-end
-
-def fun_l3_n926(x)
- if (x < 1)
- fun_l4_n994(x)
- else
- fun_l4_n671(x)
- end
-end
-
-def fun_l3_n927(x)
- if (x < 1)
- fun_l4_n125(x)
- else
- fun_l4_n852(x)
- end
-end
-
-def fun_l3_n928(x)
- if (x < 1)
- fun_l4_n483(x)
- else
- fun_l4_n350(x)
- end
-end
-
-def fun_l3_n929(x)
- if (x < 1)
- fun_l4_n622(x)
- else
- fun_l4_n511(x)
- end
-end
-
-def fun_l3_n930(x)
- if (x < 1)
- fun_l4_n134(x)
- else
- fun_l4_n288(x)
- end
-end
-
-def fun_l3_n931(x)
- if (x < 1)
- fun_l4_n278(x)
- else
- fun_l4_n800(x)
- end
-end
-
-def fun_l3_n932(x)
- if (x < 1)
- fun_l4_n139(x)
- else
- fun_l4_n966(x)
- end
-end
-
-def fun_l3_n933(x)
- if (x < 1)
- fun_l4_n275(x)
- else
- fun_l4_n506(x)
- end
-end
-
-def fun_l3_n934(x)
- if (x < 1)
- fun_l4_n503(x)
- else
- fun_l4_n204(x)
- end
-end
-
-def fun_l3_n935(x)
- if (x < 1)
- fun_l4_n993(x)
- else
- fun_l4_n126(x)
- end
-end
-
-def fun_l3_n936(x)
- if (x < 1)
- fun_l4_n704(x)
- else
- fun_l4_n462(x)
- end
-end
-
-def fun_l3_n937(x)
- if (x < 1)
- fun_l4_n922(x)
- else
- fun_l4_n722(x)
- end
-end
-
-def fun_l3_n938(x)
- if (x < 1)
- fun_l4_n937(x)
- else
- fun_l4_n195(x)
- end
-end
-
-def fun_l3_n939(x)
- if (x < 1)
- fun_l4_n661(x)
- else
- fun_l4_n265(x)
- end
-end
-
-def fun_l3_n940(x)
- if (x < 1)
- fun_l4_n423(x)
- else
- fun_l4_n230(x)
- end
-end
-
-def fun_l3_n941(x)
- if (x < 1)
- fun_l4_n698(x)
- else
- fun_l4_n226(x)
- end
-end
-
-def fun_l3_n942(x)
- if (x < 1)
- fun_l4_n501(x)
- else
- fun_l4_n816(x)
- end
-end
-
-def fun_l3_n943(x)
- if (x < 1)
- fun_l4_n650(x)
- else
- fun_l4_n925(x)
- end
-end
-
-def fun_l3_n944(x)
- if (x < 1)
- fun_l4_n829(x)
- else
- fun_l4_n647(x)
- end
-end
-
-def fun_l3_n945(x)
- if (x < 1)
- fun_l4_n401(x)
- else
- fun_l4_n791(x)
- end
-end
-
-def fun_l3_n946(x)
- if (x < 1)
- fun_l4_n551(x)
- else
- fun_l4_n104(x)
- end
-end
-
-def fun_l3_n947(x)
- if (x < 1)
- fun_l4_n927(x)
- else
- fun_l4_n213(x)
- end
-end
-
-def fun_l3_n948(x)
- if (x < 1)
- fun_l4_n912(x)
- else
- fun_l4_n609(x)
- end
-end
-
-def fun_l3_n949(x)
- if (x < 1)
- fun_l4_n302(x)
- else
- fun_l4_n157(x)
- end
-end
-
-def fun_l3_n950(x)
- if (x < 1)
- fun_l4_n955(x)
- else
- fun_l4_n492(x)
- end
-end
-
-def fun_l3_n951(x)
- if (x < 1)
- fun_l4_n486(x)
- else
- fun_l4_n412(x)
- end
-end
-
-def fun_l3_n952(x)
- if (x < 1)
- fun_l4_n850(x)
- else
- fun_l4_n885(x)
- end
-end
-
-def fun_l3_n953(x)
- if (x < 1)
- fun_l4_n84(x)
- else
- fun_l4_n622(x)
- end
-end
-
-def fun_l3_n954(x)
- if (x < 1)
- fun_l4_n235(x)
- else
- fun_l4_n67(x)
- end
-end
-
-def fun_l3_n955(x)
- if (x < 1)
- fun_l4_n347(x)
- else
- fun_l4_n757(x)
- end
-end
-
-def fun_l3_n956(x)
- if (x < 1)
- fun_l4_n825(x)
- else
- fun_l4_n10(x)
- end
-end
-
-def fun_l3_n957(x)
- if (x < 1)
- fun_l4_n393(x)
- else
- fun_l4_n482(x)
- end
-end
-
-def fun_l3_n958(x)
- if (x < 1)
- fun_l4_n0(x)
- else
- fun_l4_n556(x)
- end
-end
-
-def fun_l3_n959(x)
- if (x < 1)
- fun_l4_n806(x)
- else
- fun_l4_n783(x)
- end
-end
-
-def fun_l3_n960(x)
- if (x < 1)
- fun_l4_n964(x)
- else
- fun_l4_n843(x)
- end
-end
-
-def fun_l3_n961(x)
- if (x < 1)
- fun_l4_n508(x)
- else
- fun_l4_n874(x)
- end
-end
-
-def fun_l3_n962(x)
- if (x < 1)
- fun_l4_n15(x)
- else
- fun_l4_n197(x)
- end
-end
-
-def fun_l3_n963(x)
- if (x < 1)
- fun_l4_n989(x)
- else
- fun_l4_n380(x)
- end
-end
-
-def fun_l3_n964(x)
- if (x < 1)
- fun_l4_n315(x)
- else
- fun_l4_n196(x)
- end
-end
-
-def fun_l3_n965(x)
- if (x < 1)
- fun_l4_n510(x)
- else
- fun_l4_n275(x)
- end
-end
-
-def fun_l3_n966(x)
- if (x < 1)
- fun_l4_n725(x)
- else
- fun_l4_n94(x)
- end
-end
-
-def fun_l3_n967(x)
- if (x < 1)
- fun_l4_n733(x)
- else
- fun_l4_n577(x)
- end
-end
-
-def fun_l3_n968(x)
- if (x < 1)
- fun_l4_n280(x)
- else
- fun_l4_n702(x)
- end
-end
-
-def fun_l3_n969(x)
- if (x < 1)
- fun_l4_n41(x)
- else
- fun_l4_n343(x)
- end
-end
-
-def fun_l3_n970(x)
- if (x < 1)
- fun_l4_n102(x)
- else
- fun_l4_n785(x)
- end
-end
-
-def fun_l3_n971(x)
- if (x < 1)
- fun_l4_n460(x)
- else
- fun_l4_n388(x)
- end
-end
-
-def fun_l3_n972(x)
- if (x < 1)
- fun_l4_n31(x)
- else
- fun_l4_n421(x)
- end
-end
-
-def fun_l3_n973(x)
- if (x < 1)
- fun_l4_n587(x)
- else
- fun_l4_n401(x)
- end
-end
-
-def fun_l3_n974(x)
- if (x < 1)
- fun_l4_n593(x)
- else
- fun_l4_n418(x)
- end
-end
-
-def fun_l3_n975(x)
- if (x < 1)
- fun_l4_n12(x)
- else
- fun_l4_n929(x)
- end
-end
-
-def fun_l3_n976(x)
- if (x < 1)
- fun_l4_n516(x)
- else
- fun_l4_n402(x)
- end
-end
-
-def fun_l3_n977(x)
- if (x < 1)
- fun_l4_n590(x)
- else
- fun_l4_n876(x)
- end
-end
-
-def fun_l3_n978(x)
- if (x < 1)
- fun_l4_n505(x)
- else
- fun_l4_n94(x)
- end
-end
-
-def fun_l3_n979(x)
- if (x < 1)
- fun_l4_n625(x)
- else
- fun_l4_n344(x)
- end
-end
-
-def fun_l3_n980(x)
- if (x < 1)
- fun_l4_n128(x)
- else
- fun_l4_n454(x)
- end
-end
-
-def fun_l3_n981(x)
- if (x < 1)
- fun_l4_n937(x)
- else
- fun_l4_n277(x)
- end
-end
-
-def fun_l3_n982(x)
- if (x < 1)
- fun_l4_n237(x)
- else
- fun_l4_n113(x)
- end
-end
-
-def fun_l3_n983(x)
- if (x < 1)
- fun_l4_n668(x)
- else
- fun_l4_n668(x)
- end
-end
-
-def fun_l3_n984(x)
- if (x < 1)
- fun_l4_n783(x)
- else
- fun_l4_n771(x)
- end
-end
-
-def fun_l3_n985(x)
- if (x < 1)
- fun_l4_n135(x)
- else
- fun_l4_n967(x)
- end
-end
-
-def fun_l3_n986(x)
- if (x < 1)
- fun_l4_n29(x)
- else
- fun_l4_n313(x)
- end
-end
-
-def fun_l3_n987(x)
- if (x < 1)
- fun_l4_n765(x)
- else
- fun_l4_n885(x)
- end
-end
-
-def fun_l3_n988(x)
- if (x < 1)
- fun_l4_n242(x)
- else
- fun_l4_n622(x)
- end
-end
-
-def fun_l3_n989(x)
- if (x < 1)
- fun_l4_n916(x)
- else
- fun_l4_n518(x)
- end
-end
-
-def fun_l3_n990(x)
- if (x < 1)
- fun_l4_n523(x)
- else
- fun_l4_n468(x)
- end
-end
-
-def fun_l3_n991(x)
- if (x < 1)
- fun_l4_n904(x)
- else
- fun_l4_n601(x)
- end
-end
-
-def fun_l3_n992(x)
- if (x < 1)
- fun_l4_n437(x)
- else
- fun_l4_n77(x)
- end
-end
-
-def fun_l3_n993(x)
- if (x < 1)
- fun_l4_n957(x)
- else
- fun_l4_n619(x)
- end
-end
-
-def fun_l3_n994(x)
- if (x < 1)
- fun_l4_n540(x)
- else
- fun_l4_n108(x)
- end
-end
-
-def fun_l3_n995(x)
- if (x < 1)
- fun_l4_n8(x)
- else
- fun_l4_n428(x)
- end
-end
-
-def fun_l3_n996(x)
- if (x < 1)
- fun_l4_n53(x)
- else
- fun_l4_n278(x)
- end
-end
-
-def fun_l3_n997(x)
- if (x < 1)
- fun_l4_n930(x)
- else
- fun_l4_n671(x)
- end
-end
-
-def fun_l3_n998(x)
- if (x < 1)
- fun_l4_n574(x)
- else
- fun_l4_n879(x)
- end
-end
-
-def fun_l3_n999(x)
- if (x < 1)
- fun_l4_n316(x)
- else
- fun_l4_n93(x)
- end
-end
-
-def fun_l4_n0(x)
- if (x < 1)
- fun_l5_n524(x)
- else
- fun_l5_n284(x)
- end
-end
-
-def fun_l4_n1(x)
- if (x < 1)
- fun_l5_n845(x)
- else
- fun_l5_n863(x)
- end
-end
-
-def fun_l4_n2(x)
- if (x < 1)
- fun_l5_n258(x)
- else
- fun_l5_n860(x)
- end
-end
-
-def fun_l4_n3(x)
- if (x < 1)
- fun_l5_n253(x)
- else
- fun_l5_n763(x)
- end
-end
-
-def fun_l4_n4(x)
- if (x < 1)
- fun_l5_n833(x)
- else
- fun_l5_n807(x)
- end
-end
-
-def fun_l4_n5(x)
- if (x < 1)
- fun_l5_n890(x)
- else
- fun_l5_n669(x)
- end
-end
-
-def fun_l4_n6(x)
- if (x < 1)
- fun_l5_n396(x)
- else
- fun_l5_n388(x)
- end
-end
-
-def fun_l4_n7(x)
- if (x < 1)
- fun_l5_n926(x)
- else
- fun_l5_n661(x)
- end
-end
-
-def fun_l4_n8(x)
- if (x < 1)
- fun_l5_n990(x)
- else
- fun_l5_n765(x)
- end
-end
-
-def fun_l4_n9(x)
- if (x < 1)
- fun_l5_n978(x)
- else
- fun_l5_n342(x)
- end
-end
-
-def fun_l4_n10(x)
- if (x < 1)
- fun_l5_n500(x)
- else
- fun_l5_n758(x)
- end
-end
-
-def fun_l4_n11(x)
- if (x < 1)
- fun_l5_n10(x)
- else
- fun_l5_n796(x)
- end
-end
-
-def fun_l4_n12(x)
- if (x < 1)
- fun_l5_n173(x)
- else
- fun_l5_n87(x)
- end
-end
-
-def fun_l4_n13(x)
- if (x < 1)
- fun_l5_n852(x)
- else
- fun_l5_n93(x)
- end
-end
-
-def fun_l4_n14(x)
- if (x < 1)
- fun_l5_n526(x)
- else
- fun_l5_n144(x)
- end
-end
-
-def fun_l4_n15(x)
- if (x < 1)
- fun_l5_n398(x)
- else
- fun_l5_n632(x)
- end
-end
-
-def fun_l4_n16(x)
- if (x < 1)
- fun_l5_n774(x)
- else
- fun_l5_n716(x)
- end
-end
-
-def fun_l4_n17(x)
- if (x < 1)
- fun_l5_n412(x)
- else
- fun_l5_n95(x)
- end
-end
-
-def fun_l4_n18(x)
- if (x < 1)
- fun_l5_n446(x)
- else
- fun_l5_n885(x)
- end
-end
-
-def fun_l4_n19(x)
- if (x < 1)
- fun_l5_n420(x)
- else
- fun_l5_n420(x)
- end
-end
-
-def fun_l4_n20(x)
- if (x < 1)
- fun_l5_n274(x)
- else
- fun_l5_n813(x)
- end
-end
-
-def fun_l4_n21(x)
- if (x < 1)
- fun_l5_n174(x)
- else
- fun_l5_n781(x)
- end
-end
-
-def fun_l4_n22(x)
- if (x < 1)
- fun_l5_n903(x)
- else
- fun_l5_n224(x)
- end
-end
-
-def fun_l4_n23(x)
- if (x < 1)
- fun_l5_n317(x)
- else
- fun_l5_n900(x)
- end
-end
-
-def fun_l4_n24(x)
- if (x < 1)
- fun_l5_n600(x)
- else
- fun_l5_n515(x)
- end
-end
-
-def fun_l4_n25(x)
- if (x < 1)
- fun_l5_n151(x)
- else
- fun_l5_n790(x)
- end
-end
-
-def fun_l4_n26(x)
- if (x < 1)
- fun_l5_n256(x)
- else
- fun_l5_n449(x)
- end
-end
-
-def fun_l4_n27(x)
- if (x < 1)
- fun_l5_n985(x)
- else
- fun_l5_n763(x)
- end
-end
-
-def fun_l4_n28(x)
- if (x < 1)
- fun_l5_n961(x)
- else
- fun_l5_n86(x)
- end
-end
-
-def fun_l4_n29(x)
- if (x < 1)
- fun_l5_n359(x)
- else
- fun_l5_n894(x)
- end
-end
-
-def fun_l4_n30(x)
- if (x < 1)
- fun_l5_n426(x)
- else
- fun_l5_n983(x)
- end
-end
-
-def fun_l4_n31(x)
- if (x < 1)
- fun_l5_n996(x)
- else
- fun_l5_n343(x)
- end
-end
-
-def fun_l4_n32(x)
- if (x < 1)
- fun_l5_n300(x)
- else
- fun_l5_n719(x)
- end
-end
-
-def fun_l4_n33(x)
- if (x < 1)
- fun_l5_n755(x)
- else
- fun_l5_n623(x)
- end
-end
-
-def fun_l4_n34(x)
- if (x < 1)
- fun_l5_n681(x)
- else
- fun_l5_n410(x)
- end
-end
-
-def fun_l4_n35(x)
- if (x < 1)
- fun_l5_n356(x)
- else
- fun_l5_n351(x)
- end
-end
-
-def fun_l4_n36(x)
- if (x < 1)
- fun_l5_n463(x)
- else
- fun_l5_n402(x)
- end
-end
-
-def fun_l4_n37(x)
- if (x < 1)
- fun_l5_n250(x)
- else
- fun_l5_n681(x)
- end
-end
-
-def fun_l4_n38(x)
- if (x < 1)
- fun_l5_n573(x)
- else
- fun_l5_n622(x)
- end
-end
-
-def fun_l4_n39(x)
- if (x < 1)
- fun_l5_n545(x)
- else
- fun_l5_n210(x)
- end
-end
-
-def fun_l4_n40(x)
- if (x < 1)
- fun_l5_n264(x)
- else
- fun_l5_n239(x)
- end
-end
-
-def fun_l4_n41(x)
- if (x < 1)
- fun_l5_n635(x)
- else
- fun_l5_n224(x)
- end
-end
-
-def fun_l4_n42(x)
- if (x < 1)
- fun_l5_n806(x)
- else
- fun_l5_n125(x)
- end
-end
-
-def fun_l4_n43(x)
- if (x < 1)
- fun_l5_n480(x)
- else
- fun_l5_n625(x)
- end
-end
-
-def fun_l4_n44(x)
- if (x < 1)
- fun_l5_n644(x)
- else
- fun_l5_n465(x)
- end
-end
-
-def fun_l4_n45(x)
- if (x < 1)
- fun_l5_n999(x)
- else
- fun_l5_n759(x)
- end
-end
-
-def fun_l4_n46(x)
- if (x < 1)
- fun_l5_n866(x)
- else
- fun_l5_n536(x)
- end
-end
-
-def fun_l4_n47(x)
- if (x < 1)
- fun_l5_n328(x)
- else
- fun_l5_n533(x)
- end
-end
-
-def fun_l4_n48(x)
- if (x < 1)
- fun_l5_n902(x)
- else
- fun_l5_n919(x)
- end
-end
-
-def fun_l4_n49(x)
- if (x < 1)
- fun_l5_n197(x)
- else
- fun_l5_n262(x)
- end
-end
-
-def fun_l4_n50(x)
- if (x < 1)
- fun_l5_n172(x)
- else
- fun_l5_n731(x)
- end
-end
-
-def fun_l4_n51(x)
- if (x < 1)
- fun_l5_n502(x)
- else
- fun_l5_n149(x)
- end
-end
-
-def fun_l4_n52(x)
- if (x < 1)
- fun_l5_n69(x)
- else
- fun_l5_n536(x)
- end
-end
-
-def fun_l4_n53(x)
- if (x < 1)
- fun_l5_n932(x)
- else
- fun_l5_n482(x)
- end
-end
-
-def fun_l4_n54(x)
- if (x < 1)
- fun_l5_n982(x)
- else
- fun_l5_n207(x)
- end
-end
-
-def fun_l4_n55(x)
- if (x < 1)
- fun_l5_n949(x)
- else
- fun_l5_n9(x)
- end
-end
-
-def fun_l4_n56(x)
- if (x < 1)
- fun_l5_n672(x)
- else
- fun_l5_n924(x)
- end
-end
-
-def fun_l4_n57(x)
- if (x < 1)
- fun_l5_n757(x)
- else
- fun_l5_n609(x)
- end
-end
-
-def fun_l4_n58(x)
- if (x < 1)
- fun_l5_n251(x)
- else
- fun_l5_n471(x)
- end
-end
-
-def fun_l4_n59(x)
- if (x < 1)
- fun_l5_n878(x)
- else
- fun_l5_n626(x)
- end
-end
-
-def fun_l4_n60(x)
- if (x < 1)
- fun_l5_n859(x)
- else
- fun_l5_n646(x)
- end
-end
-
-def fun_l4_n61(x)
- if (x < 1)
- fun_l5_n417(x)
- else
- fun_l5_n587(x)
- end
-end
-
-def fun_l4_n62(x)
- if (x < 1)
- fun_l5_n164(x)
- else
- fun_l5_n861(x)
- end
-end
-
-def fun_l4_n63(x)
- if (x < 1)
- fun_l5_n591(x)
- else
- fun_l5_n79(x)
- end
-end
-
-def fun_l4_n64(x)
- if (x < 1)
- fun_l5_n269(x)
- else
- fun_l5_n336(x)
- end
-end
-
-def fun_l4_n65(x)
- if (x < 1)
- fun_l5_n420(x)
- else
- fun_l5_n557(x)
- end
-end
-
-def fun_l4_n66(x)
- if (x < 1)
- fun_l5_n61(x)
- else
- fun_l5_n690(x)
- end
-end
-
-def fun_l4_n67(x)
- if (x < 1)
- fun_l5_n939(x)
- else
- fun_l5_n139(x)
- end
-end
-
-def fun_l4_n68(x)
- if (x < 1)
- fun_l5_n430(x)
- else
- fun_l5_n625(x)
- end
-end
-
-def fun_l4_n69(x)
- if (x < 1)
- fun_l5_n532(x)
- else
- fun_l5_n909(x)
- end
-end
-
-def fun_l4_n70(x)
- if (x < 1)
- fun_l5_n937(x)
- else
- fun_l5_n886(x)
- end
-end
-
-def fun_l4_n71(x)
- if (x < 1)
- fun_l5_n554(x)
- else
- fun_l5_n898(x)
- end
-end
-
-def fun_l4_n72(x)
- if (x < 1)
- fun_l5_n390(x)
- else
- fun_l5_n690(x)
- end
-end
-
-def fun_l4_n73(x)
- if (x < 1)
- fun_l5_n980(x)
- else
- fun_l5_n248(x)
- end
-end
-
-def fun_l4_n74(x)
- if (x < 1)
- fun_l5_n438(x)
- else
- fun_l5_n247(x)
- end
-end
-
-def fun_l4_n75(x)
- if (x < 1)
- fun_l5_n798(x)
- else
- fun_l5_n399(x)
- end
-end
-
-def fun_l4_n76(x)
- if (x < 1)
- fun_l5_n419(x)
- else
- fun_l5_n754(x)
- end
-end
-
-def fun_l4_n77(x)
- if (x < 1)
- fun_l5_n875(x)
- else
- fun_l5_n18(x)
- end
-end
-
-def fun_l4_n78(x)
- if (x < 1)
- fun_l5_n695(x)
- else
- fun_l5_n336(x)
- end
-end
-
-def fun_l4_n79(x)
- if (x < 1)
- fun_l5_n185(x)
- else
- fun_l5_n627(x)
- end
-end
-
-def fun_l4_n80(x)
- if (x < 1)
- fun_l5_n359(x)
- else
- fun_l5_n465(x)
- end
-end
-
-def fun_l4_n81(x)
- if (x < 1)
- fun_l5_n284(x)
- else
- fun_l5_n232(x)
- end
-end
-
-def fun_l4_n82(x)
- if (x < 1)
- fun_l5_n947(x)
- else
- fun_l5_n748(x)
- end
-end
-
-def fun_l4_n83(x)
- if (x < 1)
- fun_l5_n254(x)
- else
- fun_l5_n836(x)
- end
-end
-
-def fun_l4_n84(x)
- if (x < 1)
- fun_l5_n181(x)
- else
- fun_l5_n789(x)
- end
-end
-
-def fun_l4_n85(x)
- if (x < 1)
- fun_l5_n682(x)
- else
- fun_l5_n547(x)
- end
-end
-
-def fun_l4_n86(x)
- if (x < 1)
- fun_l5_n35(x)
- else
- fun_l5_n157(x)
- end
-end
-
-def fun_l4_n87(x)
- if (x < 1)
- fun_l5_n981(x)
- else
- fun_l5_n724(x)
- end
-end
-
-def fun_l4_n88(x)
- if (x < 1)
- fun_l5_n35(x)
- else
- fun_l5_n914(x)
- end
-end
-
-def fun_l4_n89(x)
- if (x < 1)
- fun_l5_n844(x)
- else
- fun_l5_n668(x)
- end
-end
-
-def fun_l4_n90(x)
- if (x < 1)
- fun_l5_n615(x)
- else
- fun_l5_n415(x)
- end
-end
-
-def fun_l4_n91(x)
- if (x < 1)
- fun_l5_n141(x)
- else
- fun_l5_n538(x)
- end
-end
-
-def fun_l4_n92(x)
- if (x < 1)
- fun_l5_n563(x)
- else
- fun_l5_n60(x)
- end
-end
-
-def fun_l4_n93(x)
- if (x < 1)
- fun_l5_n967(x)
- else
- fun_l5_n549(x)
- end
-end
-
-def fun_l4_n94(x)
- if (x < 1)
- fun_l5_n992(x)
- else
- fun_l5_n34(x)
- end
-end
-
-def fun_l4_n95(x)
- if (x < 1)
- fun_l5_n187(x)
- else
- fun_l5_n980(x)
- end
-end
-
-def fun_l4_n96(x)
- if (x < 1)
- fun_l5_n543(x)
- else
- fun_l5_n318(x)
- end
-end
-
-def fun_l4_n97(x)
- if (x < 1)
- fun_l5_n253(x)
- else
- fun_l5_n709(x)
- end
-end
-
-def fun_l4_n98(x)
- if (x < 1)
- fun_l5_n233(x)
- else
- fun_l5_n963(x)
- end
-end
-
-def fun_l4_n99(x)
- if (x < 1)
- fun_l5_n944(x)
- else
- fun_l5_n688(x)
- end
-end
-
-def fun_l4_n100(x)
- if (x < 1)
- fun_l5_n422(x)
- else
- fun_l5_n805(x)
- end
-end
-
-def fun_l4_n101(x)
- if (x < 1)
- fun_l5_n125(x)
- else
- fun_l5_n729(x)
- end
-end
-
-def fun_l4_n102(x)
- if (x < 1)
- fun_l5_n339(x)
- else
- fun_l5_n394(x)
- end
-end
-
-def fun_l4_n103(x)
- if (x < 1)
- fun_l5_n149(x)
- else
- fun_l5_n839(x)
- end
-end
-
-def fun_l4_n104(x)
- if (x < 1)
- fun_l5_n750(x)
- else
- fun_l5_n514(x)
- end
-end
-
-def fun_l4_n105(x)
- if (x < 1)
- fun_l5_n726(x)
- else
- fun_l5_n251(x)
- end
-end
-
-def fun_l4_n106(x)
- if (x < 1)
- fun_l5_n810(x)
- else
- fun_l5_n46(x)
- end
-end
-
-def fun_l4_n107(x)
- if (x < 1)
- fun_l5_n702(x)
- else
- fun_l5_n224(x)
- end
-end
-
-def fun_l4_n108(x)
- if (x < 1)
- fun_l5_n604(x)
- else
- fun_l5_n24(x)
- end
-end
-
-def fun_l4_n109(x)
- if (x < 1)
- fun_l5_n511(x)
- else
- fun_l5_n529(x)
- end
-end
-
-def fun_l4_n110(x)
- if (x < 1)
- fun_l5_n193(x)
- else
- fun_l5_n210(x)
- end
-end
-
-def fun_l4_n111(x)
- if (x < 1)
- fun_l5_n599(x)
- else
- fun_l5_n85(x)
- end
-end
-
-def fun_l4_n112(x)
- if (x < 1)
- fun_l5_n910(x)
- else
- fun_l5_n292(x)
- end
-end
-
-def fun_l4_n113(x)
- if (x < 1)
- fun_l5_n851(x)
- else
- fun_l5_n269(x)
- end
-end
-
-def fun_l4_n114(x)
- if (x < 1)
- fun_l5_n739(x)
- else
- fun_l5_n439(x)
- end
-end
-
-def fun_l4_n115(x)
- if (x < 1)
- fun_l5_n580(x)
- else
- fun_l5_n656(x)
- end
-end
-
-def fun_l4_n116(x)
- if (x < 1)
- fun_l5_n992(x)
- else
- fun_l5_n703(x)
- end
-end
-
-def fun_l4_n117(x)
- if (x < 1)
- fun_l5_n549(x)
- else
- fun_l5_n300(x)
- end
-end
-
-def fun_l4_n118(x)
- if (x < 1)
- fun_l5_n785(x)
- else
- fun_l5_n596(x)
- end
-end
-
-def fun_l4_n119(x)
- if (x < 1)
- fun_l5_n236(x)
- else
- fun_l5_n84(x)
- end
-end
-
-def fun_l4_n120(x)
- if (x < 1)
- fun_l5_n78(x)
- else
- fun_l5_n610(x)
- end
-end
-
-def fun_l4_n121(x)
- if (x < 1)
- fun_l5_n591(x)
- else
- fun_l5_n557(x)
- end
-end
-
-def fun_l4_n122(x)
- if (x < 1)
- fun_l5_n927(x)
- else
- fun_l5_n40(x)
- end
-end
-
-def fun_l4_n123(x)
- if (x < 1)
- fun_l5_n620(x)
- else
- fun_l5_n173(x)
- end
-end
-
-def fun_l4_n124(x)
- if (x < 1)
- fun_l5_n558(x)
- else
- fun_l5_n330(x)
- end
-end
-
-def fun_l4_n125(x)
- if (x < 1)
- fun_l5_n535(x)
- else
- fun_l5_n636(x)
- end
-end
-
-def fun_l4_n126(x)
- if (x < 1)
- fun_l5_n401(x)
- else
- fun_l5_n747(x)
- end
-end
-
-def fun_l4_n127(x)
- if (x < 1)
- fun_l5_n172(x)
- else
- fun_l5_n124(x)
- end
-end
-
-def fun_l4_n128(x)
- if (x < 1)
- fun_l5_n449(x)
- else
- fun_l5_n619(x)
- end
-end
-
-def fun_l4_n129(x)
- if (x < 1)
- fun_l5_n564(x)
- else
- fun_l5_n306(x)
- end
-end
-
-def fun_l4_n130(x)
- if (x < 1)
- fun_l5_n196(x)
- else
- fun_l5_n170(x)
- end
-end
-
-def fun_l4_n131(x)
- if (x < 1)
- fun_l5_n383(x)
- else
- fun_l5_n87(x)
- end
-end
-
-def fun_l4_n132(x)
- if (x < 1)
- fun_l5_n568(x)
- else
- fun_l5_n54(x)
- end
-end
-
-def fun_l4_n133(x)
- if (x < 1)
- fun_l5_n780(x)
- else
- fun_l5_n184(x)
- end
-end
-
-def fun_l4_n134(x)
- if (x < 1)
- fun_l5_n880(x)
- else
- fun_l5_n38(x)
- end
-end
-
-def fun_l4_n135(x)
- if (x < 1)
- fun_l5_n819(x)
- else
- fun_l5_n440(x)
- end
-end
-
-def fun_l4_n136(x)
- if (x < 1)
- fun_l5_n301(x)
- else
- fun_l5_n676(x)
- end
-end
-
-def fun_l4_n137(x)
- if (x < 1)
- fun_l5_n69(x)
- else
- fun_l5_n333(x)
- end
-end
-
-def fun_l4_n138(x)
- if (x < 1)
- fun_l5_n303(x)
- else
- fun_l5_n69(x)
- end
-end
-
-def fun_l4_n139(x)
- if (x < 1)
- fun_l5_n939(x)
- else
- fun_l5_n103(x)
- end
-end
-
-def fun_l4_n140(x)
- if (x < 1)
- fun_l5_n517(x)
- else
- fun_l5_n24(x)
- end
-end
-
-def fun_l4_n141(x)
- if (x < 1)
- fun_l5_n923(x)
- else
- fun_l5_n968(x)
- end
-end
-
-def fun_l4_n142(x)
- if (x < 1)
- fun_l5_n196(x)
- else
- fun_l5_n841(x)
- end
-end
-
-def fun_l4_n143(x)
- if (x < 1)
- fun_l5_n726(x)
- else
- fun_l5_n715(x)
- end
-end
-
-def fun_l4_n144(x)
- if (x < 1)
- fun_l5_n434(x)
- else
- fun_l5_n771(x)
- end
-end
-
-def fun_l4_n145(x)
- if (x < 1)
- fun_l5_n211(x)
- else
- fun_l5_n963(x)
- end
-end
-
-def fun_l4_n146(x)
- if (x < 1)
- fun_l5_n534(x)
- else
- fun_l5_n5(x)
- end
-end
-
-def fun_l4_n147(x)
- if (x < 1)
- fun_l5_n409(x)
- else
- fun_l5_n298(x)
- end
-end
-
-def fun_l4_n148(x)
- if (x < 1)
- fun_l5_n447(x)
- else
- fun_l5_n474(x)
- end
-end
-
-def fun_l4_n149(x)
- if (x < 1)
- fun_l5_n181(x)
- else
- fun_l5_n87(x)
- end
-end
-
-def fun_l4_n150(x)
- if (x < 1)
- fun_l5_n871(x)
- else
- fun_l5_n201(x)
- end
-end
-
-def fun_l4_n151(x)
- if (x < 1)
- fun_l5_n539(x)
- else
- fun_l5_n855(x)
- end
-end
-
-def fun_l4_n152(x)
- if (x < 1)
- fun_l5_n387(x)
- else
- fun_l5_n730(x)
- end
-end
-
-def fun_l4_n153(x)
- if (x < 1)
- fun_l5_n785(x)
- else
- fun_l5_n774(x)
- end
-end
-
-def fun_l4_n154(x)
- if (x < 1)
- fun_l5_n924(x)
- else
- fun_l5_n414(x)
- end
-end
-
-def fun_l4_n155(x)
- if (x < 1)
- fun_l5_n110(x)
- else
- fun_l5_n669(x)
- end
-end
-
-def fun_l4_n156(x)
- if (x < 1)
- fun_l5_n551(x)
- else
- fun_l5_n456(x)
- end
-end
-
-def fun_l4_n157(x)
- if (x < 1)
- fun_l5_n872(x)
- else
- fun_l5_n397(x)
- end
-end
-
-def fun_l4_n158(x)
- if (x < 1)
- fun_l5_n208(x)
- else
- fun_l5_n464(x)
- end
-end
-
-def fun_l4_n159(x)
- if (x < 1)
- fun_l5_n236(x)
- else
- fun_l5_n532(x)
- end
-end
-
-def fun_l4_n160(x)
- if (x < 1)
- fun_l5_n820(x)
- else
- fun_l5_n146(x)
- end
-end
-
-def fun_l4_n161(x)
- if (x < 1)
- fun_l5_n154(x)
- else
- fun_l5_n388(x)
- end
-end
-
-def fun_l4_n162(x)
- if (x < 1)
- fun_l5_n456(x)
- else
- fun_l5_n309(x)
- end
-end
-
-def fun_l4_n163(x)
- if (x < 1)
- fun_l5_n201(x)
- else
- fun_l5_n728(x)
- end
-end
-
-def fun_l4_n164(x)
- if (x < 1)
- fun_l5_n806(x)
- else
- fun_l5_n156(x)
- end
-end
-
-def fun_l4_n165(x)
- if (x < 1)
- fun_l5_n984(x)
- else
- fun_l5_n996(x)
- end
-end
-
-def fun_l4_n166(x)
- if (x < 1)
- fun_l5_n253(x)
- else
- fun_l5_n527(x)
- end
-end
-
-def fun_l4_n167(x)
- if (x < 1)
- fun_l5_n513(x)
- else
- fun_l5_n145(x)
- end
-end
-
-def fun_l4_n168(x)
- if (x < 1)
- fun_l5_n694(x)
- else
- fun_l5_n841(x)
- end
-end
-
-def fun_l4_n169(x)
- if (x < 1)
- fun_l5_n463(x)
- else
- fun_l5_n193(x)
- end
-end
-
-def fun_l4_n170(x)
- if (x < 1)
- fun_l5_n638(x)
- else
- fun_l5_n252(x)
- end
-end
-
-def fun_l4_n171(x)
- if (x < 1)
- fun_l5_n166(x)
- else
- fun_l5_n134(x)
- end
-end
-
-def fun_l4_n172(x)
- if (x < 1)
- fun_l5_n172(x)
- else
- fun_l5_n179(x)
- end
-end
-
-def fun_l4_n173(x)
- if (x < 1)
- fun_l5_n218(x)
- else
- fun_l5_n124(x)
- end
-end
-
-def fun_l4_n174(x)
- if (x < 1)
- fun_l5_n370(x)
- else
- fun_l5_n742(x)
- end
-end
-
-def fun_l4_n175(x)
- if (x < 1)
- fun_l5_n593(x)
- else
- fun_l5_n542(x)
- end
-end
-
-def fun_l4_n176(x)
- if (x < 1)
- fun_l5_n438(x)
- else
- fun_l5_n606(x)
- end
-end
-
-def fun_l4_n177(x)
- if (x < 1)
- fun_l5_n316(x)
- else
- fun_l5_n92(x)
- end
-end
-
-def fun_l4_n178(x)
- if (x < 1)
- fun_l5_n222(x)
- else
- fun_l5_n461(x)
- end
-end
-
-def fun_l4_n179(x)
- if (x < 1)
- fun_l5_n244(x)
- else
- fun_l5_n536(x)
- end
-end
-
-def fun_l4_n180(x)
- if (x < 1)
- fun_l5_n120(x)
- else
- fun_l5_n905(x)
- end
-end
-
-def fun_l4_n181(x)
- if (x < 1)
- fun_l5_n601(x)
- else
- fun_l5_n62(x)
- end
-end
-
-def fun_l4_n182(x)
- if (x < 1)
- fun_l5_n701(x)
- else
- fun_l5_n25(x)
- end
-end
-
-def fun_l4_n183(x)
- if (x < 1)
- fun_l5_n361(x)
- else
- fun_l5_n433(x)
- end
-end
-
-def fun_l4_n184(x)
- if (x < 1)
- fun_l5_n29(x)
- else
- fun_l5_n302(x)
- end
-end
-
-def fun_l4_n185(x)
- if (x < 1)
- fun_l5_n697(x)
- else
- fun_l5_n849(x)
- end
-end
-
-def fun_l4_n186(x)
- if (x < 1)
- fun_l5_n76(x)
- else
- fun_l5_n402(x)
- end
-end
-
-def fun_l4_n187(x)
- if (x < 1)
- fun_l5_n38(x)
- else
- fun_l5_n818(x)
- end
-end
-
-def fun_l4_n188(x)
- if (x < 1)
- fun_l5_n730(x)
- else
- fun_l5_n456(x)
- end
-end
-
-def fun_l4_n189(x)
- if (x < 1)
- fun_l5_n828(x)
- else
- fun_l5_n796(x)
- end
-end
-
-def fun_l4_n190(x)
- if (x < 1)
- fun_l5_n86(x)
- else
- fun_l5_n976(x)
- end
-end
-
-def fun_l4_n191(x)
- if (x < 1)
- fun_l5_n267(x)
- else
- fun_l5_n497(x)
- end
-end
-
-def fun_l4_n192(x)
- if (x < 1)
- fun_l5_n534(x)
- else
- fun_l5_n449(x)
- end
-end
-
-def fun_l4_n193(x)
- if (x < 1)
- fun_l5_n97(x)
- else
- fun_l5_n595(x)
- end
-end
-
-def fun_l4_n194(x)
- if (x < 1)
- fun_l5_n821(x)
- else
- fun_l5_n823(x)
- end
-end
-
-def fun_l4_n195(x)
- if (x < 1)
- fun_l5_n936(x)
- else
- fun_l5_n490(x)
- end
-end
-
-def fun_l4_n196(x)
- if (x < 1)
- fun_l5_n579(x)
- else
- fun_l5_n684(x)
- end
-end
-
-def fun_l4_n197(x)
- if (x < 1)
- fun_l5_n742(x)
- else
- fun_l5_n874(x)
- end
-end
-
-def fun_l4_n198(x)
- if (x < 1)
- fun_l5_n904(x)
- else
- fun_l5_n394(x)
- end
-end
-
-def fun_l4_n199(x)
- if (x < 1)
- fun_l5_n229(x)
- else
- fun_l5_n406(x)
- end
-end
-
-def fun_l4_n200(x)
- if (x < 1)
- fun_l5_n332(x)
- else
- fun_l5_n803(x)
- end
-end
-
-def fun_l4_n201(x)
- if (x < 1)
- fun_l5_n635(x)
- else
- fun_l5_n294(x)
- end
-end
-
-def fun_l4_n202(x)
- if (x < 1)
- fun_l5_n397(x)
- else
- fun_l5_n924(x)
- end
-end
-
-def fun_l4_n203(x)
- if (x < 1)
- fun_l5_n199(x)
- else
- fun_l5_n751(x)
- end
-end
-
-def fun_l4_n204(x)
- if (x < 1)
- fun_l5_n570(x)
- else
- fun_l5_n70(x)
- end
-end
-
-def fun_l4_n205(x)
- if (x < 1)
- fun_l5_n344(x)
- else
- fun_l5_n713(x)
- end
-end
-
-def fun_l4_n206(x)
- if (x < 1)
- fun_l5_n568(x)
- else
- fun_l5_n40(x)
- end
-end
-
-def fun_l4_n207(x)
- if (x < 1)
- fun_l5_n460(x)
- else
- fun_l5_n311(x)
- end
-end
-
-def fun_l4_n208(x)
- if (x < 1)
- fun_l5_n995(x)
- else
- fun_l5_n147(x)
- end
-end
-
-def fun_l4_n209(x)
- if (x < 1)
- fun_l5_n295(x)
- else
- fun_l5_n752(x)
- end
-end
-
-def fun_l4_n210(x)
- if (x < 1)
- fun_l5_n644(x)
- else
- fun_l5_n555(x)
- end
-end
-
-def fun_l4_n211(x)
- if (x < 1)
- fun_l5_n196(x)
- else
- fun_l5_n418(x)
- end
-end
-
-def fun_l4_n212(x)
- if (x < 1)
- fun_l5_n761(x)
- else
- fun_l5_n66(x)
- end
-end
-
-def fun_l4_n213(x)
- if (x < 1)
- fun_l5_n906(x)
- else
- fun_l5_n521(x)
- end
-end
-
-def fun_l4_n214(x)
- if (x < 1)
- fun_l5_n97(x)
- else
- fun_l5_n431(x)
- end
-end
-
-def fun_l4_n215(x)
- if (x < 1)
- fun_l5_n450(x)
- else
- fun_l5_n58(x)
- end
-end
-
-def fun_l4_n216(x)
- if (x < 1)
- fun_l5_n576(x)
- else
- fun_l5_n675(x)
- end
-end
-
-def fun_l4_n217(x)
- if (x < 1)
- fun_l5_n764(x)
- else
- fun_l5_n653(x)
- end
-end
-
-def fun_l4_n218(x)
- if (x < 1)
- fun_l5_n591(x)
- else
- fun_l5_n398(x)
- end
-end
-
-def fun_l4_n219(x)
- if (x < 1)
- fun_l5_n94(x)
- else
- fun_l5_n411(x)
- end
-end
-
-def fun_l4_n220(x)
- if (x < 1)
- fun_l5_n13(x)
- else
- fun_l5_n117(x)
- end
-end
-
-def fun_l4_n221(x)
- if (x < 1)
- fun_l5_n872(x)
- else
- fun_l5_n799(x)
- end
-end
-
-def fun_l4_n222(x)
- if (x < 1)
- fun_l5_n692(x)
- else
- fun_l5_n99(x)
- end
-end
-
-def fun_l4_n223(x)
- if (x < 1)
- fun_l5_n861(x)
- else
- fun_l5_n999(x)
- end
-end
-
-def fun_l4_n224(x)
- if (x < 1)
- fun_l5_n547(x)
- else
- fun_l5_n955(x)
- end
-end
-
-def fun_l4_n225(x)
- if (x < 1)
- fun_l5_n305(x)
- else
- fun_l5_n894(x)
- end
-end
-
-def fun_l4_n226(x)
- if (x < 1)
- fun_l5_n128(x)
- else
- fun_l5_n662(x)
- end
-end
-
-def fun_l4_n227(x)
- if (x < 1)
- fun_l5_n858(x)
- else
- fun_l5_n323(x)
- end
-end
-
-def fun_l4_n228(x)
- if (x < 1)
- fun_l5_n923(x)
- else
- fun_l5_n206(x)
- end
-end
-
-def fun_l4_n229(x)
- if (x < 1)
- fun_l5_n486(x)
- else
- fun_l5_n603(x)
- end
-end
-
-def fun_l4_n230(x)
- if (x < 1)
- fun_l5_n116(x)
- else
- fun_l5_n887(x)
- end
-end
-
-def fun_l4_n231(x)
- if (x < 1)
- fun_l5_n791(x)
- else
- fun_l5_n762(x)
- end
-end
-
-def fun_l4_n232(x)
- if (x < 1)
- fun_l5_n511(x)
- else
- fun_l5_n890(x)
- end
-end
-
-def fun_l4_n233(x)
- if (x < 1)
- fun_l5_n600(x)
- else
- fun_l5_n777(x)
- end
-end
-
-def fun_l4_n234(x)
- if (x < 1)
- fun_l5_n458(x)
- else
- fun_l5_n379(x)
- end
-end
-
-def fun_l4_n235(x)
- if (x < 1)
- fun_l5_n907(x)
- else
- fun_l5_n463(x)
- end
-end
-
-def fun_l4_n236(x)
- if (x < 1)
- fun_l5_n177(x)
- else
- fun_l5_n732(x)
- end
-end
-
-def fun_l4_n237(x)
- if (x < 1)
- fun_l5_n761(x)
- else
- fun_l5_n936(x)
- end
-end
-
-def fun_l4_n238(x)
- if (x < 1)
- fun_l5_n757(x)
- else
- fun_l5_n733(x)
- end
-end
-
-def fun_l4_n239(x)
- if (x < 1)
- fun_l5_n844(x)
- else
- fun_l5_n527(x)
- end
-end
-
-def fun_l4_n240(x)
- if (x < 1)
- fun_l5_n594(x)
- else
- fun_l5_n620(x)
- end
-end
-
-def fun_l4_n241(x)
- if (x < 1)
- fun_l5_n722(x)
- else
- fun_l5_n779(x)
- end
-end
-
-def fun_l4_n242(x)
- if (x < 1)
- fun_l5_n663(x)
- else
- fun_l5_n237(x)
- end
-end
-
-def fun_l4_n243(x)
- if (x < 1)
- fun_l5_n256(x)
- else
- fun_l5_n366(x)
- end
-end
-
-def fun_l4_n244(x)
- if (x < 1)
- fun_l5_n614(x)
- else
- fun_l5_n895(x)
- end
-end
-
-def fun_l4_n245(x)
- if (x < 1)
- fun_l5_n459(x)
- else
- fun_l5_n193(x)
- end
-end
-
-def fun_l4_n246(x)
- if (x < 1)
- fun_l5_n780(x)
- else
- fun_l5_n175(x)
- end
-end
-
-def fun_l4_n247(x)
- if (x < 1)
- fun_l5_n186(x)
- else
- fun_l5_n488(x)
- end
-end
-
-def fun_l4_n248(x)
- if (x < 1)
- fun_l5_n156(x)
- else
- fun_l5_n807(x)
- end
-end
-
-def fun_l4_n249(x)
- if (x < 1)
- fun_l5_n862(x)
- else
- fun_l5_n537(x)
- end
-end
-
-def fun_l4_n250(x)
- if (x < 1)
- fun_l5_n880(x)
- else
- fun_l5_n528(x)
- end
-end
-
-def fun_l4_n251(x)
- if (x < 1)
- fun_l5_n163(x)
- else
- fun_l5_n94(x)
- end
-end
-
-def fun_l4_n252(x)
- if (x < 1)
- fun_l5_n937(x)
- else
- fun_l5_n582(x)
- end
-end
-
-def fun_l4_n253(x)
- if (x < 1)
- fun_l5_n368(x)
- else
- fun_l5_n584(x)
- end
-end
-
-def fun_l4_n254(x)
- if (x < 1)
- fun_l5_n566(x)
- else
- fun_l5_n449(x)
- end
-end
-
-def fun_l4_n255(x)
- if (x < 1)
- fun_l5_n876(x)
- else
- fun_l5_n0(x)
- end
-end
-
-def fun_l4_n256(x)
- if (x < 1)
- fun_l5_n842(x)
- else
- fun_l5_n469(x)
- end
-end
-
-def fun_l4_n257(x)
- if (x < 1)
- fun_l5_n85(x)
- else
- fun_l5_n961(x)
- end
-end
-
-def fun_l4_n258(x)
- if (x < 1)
- fun_l5_n120(x)
- else
- fun_l5_n893(x)
- end
-end
-
-def fun_l4_n259(x)
- if (x < 1)
- fun_l5_n243(x)
- else
- fun_l5_n630(x)
- end
-end
-
-def fun_l4_n260(x)
- if (x < 1)
- fun_l5_n710(x)
- else
- fun_l5_n715(x)
- end
-end
-
-def fun_l4_n261(x)
- if (x < 1)
- fun_l5_n423(x)
- else
- fun_l5_n910(x)
- end
-end
-
-def fun_l4_n262(x)
- if (x < 1)
- fun_l5_n505(x)
- else
- fun_l5_n532(x)
- end
-end
-
-def fun_l4_n263(x)
- if (x < 1)
- fun_l5_n775(x)
- else
- fun_l5_n236(x)
- end
-end
-
-def fun_l4_n264(x)
- if (x < 1)
- fun_l5_n140(x)
- else
- fun_l5_n295(x)
- end
-end
-
-def fun_l4_n265(x)
- if (x < 1)
- fun_l5_n554(x)
- else
- fun_l5_n88(x)
- end
-end
-
-def fun_l4_n266(x)
- if (x < 1)
- fun_l5_n831(x)
- else
- fun_l5_n307(x)
- end
-end
-
-def fun_l4_n267(x)
- if (x < 1)
- fun_l5_n303(x)
- else
- fun_l5_n960(x)
- end
-end
-
-def fun_l4_n268(x)
- if (x < 1)
- fun_l5_n322(x)
- else
- fun_l5_n264(x)
- end
-end
-
-def fun_l4_n269(x)
- if (x < 1)
- fun_l5_n823(x)
- else
- fun_l5_n374(x)
- end
-end
-
-def fun_l4_n270(x)
- if (x < 1)
- fun_l5_n76(x)
- else
- fun_l5_n918(x)
- end
-end
-
-def fun_l4_n271(x)
- if (x < 1)
- fun_l5_n591(x)
- else
- fun_l5_n45(x)
- end
-end
-
-def fun_l4_n272(x)
- if (x < 1)
- fun_l5_n686(x)
- else
- fun_l5_n836(x)
- end
-end
-
-def fun_l4_n273(x)
- if (x < 1)
- fun_l5_n13(x)
- else
- fun_l5_n676(x)
- end
-end
-
-def fun_l4_n274(x)
- if (x < 1)
- fun_l5_n120(x)
- else
- fun_l5_n180(x)
- end
-end
-
-def fun_l4_n275(x)
- if (x < 1)
- fun_l5_n901(x)
- else
- fun_l5_n101(x)
- end
-end
-
-def fun_l4_n276(x)
- if (x < 1)
- fun_l5_n289(x)
- else
- fun_l5_n238(x)
- end
-end
-
-def fun_l4_n277(x)
- if (x < 1)
- fun_l5_n513(x)
- else
- fun_l5_n887(x)
- end
-end
-
-def fun_l4_n278(x)
- if (x < 1)
- fun_l5_n799(x)
- else
- fun_l5_n763(x)
- end
-end
-
-def fun_l4_n279(x)
- if (x < 1)
- fun_l5_n628(x)
- else
- fun_l5_n373(x)
- end
-end
-
-def fun_l4_n280(x)
- if (x < 1)
- fun_l5_n661(x)
- else
- fun_l5_n826(x)
- end
-end
-
-def fun_l4_n281(x)
- if (x < 1)
- fun_l5_n35(x)
- else
- fun_l5_n409(x)
- end
-end
-
-def fun_l4_n282(x)
- if (x < 1)
- fun_l5_n721(x)
- else
- fun_l5_n719(x)
- end
-end
-
-def fun_l4_n283(x)
- if (x < 1)
- fun_l5_n729(x)
- else
- fun_l5_n901(x)
- end
-end
-
-def fun_l4_n284(x)
- if (x < 1)
- fun_l5_n17(x)
- else
- fun_l5_n482(x)
- end
-end
-
-def fun_l4_n285(x)
- if (x < 1)
- fun_l5_n166(x)
- else
- fun_l5_n53(x)
- end
-end
-
-def fun_l4_n286(x)
- if (x < 1)
- fun_l5_n873(x)
- else
- fun_l5_n383(x)
- end
-end
-
-def fun_l4_n287(x)
- if (x < 1)
- fun_l5_n269(x)
- else
- fun_l5_n49(x)
- end
-end
-
-def fun_l4_n288(x)
- if (x < 1)
- fun_l5_n292(x)
- else
- fun_l5_n353(x)
- end
-end
-
-def fun_l4_n289(x)
- if (x < 1)
- fun_l5_n651(x)
- else
- fun_l5_n606(x)
- end
-end
-
-def fun_l4_n290(x)
- if (x < 1)
- fun_l5_n287(x)
- else
- fun_l5_n444(x)
- end
-end
-
-def fun_l4_n291(x)
- if (x < 1)
- fun_l5_n181(x)
- else
- fun_l5_n195(x)
- end
-end
-
-def fun_l4_n292(x)
- if (x < 1)
- fun_l5_n20(x)
- else
- fun_l5_n58(x)
- end
-end
-
-def fun_l4_n293(x)
- if (x < 1)
- fun_l5_n185(x)
- else
- fun_l5_n759(x)
- end
-end
-
-def fun_l4_n294(x)
- if (x < 1)
- fun_l5_n938(x)
- else
- fun_l5_n849(x)
- end
-end
-
-def fun_l4_n295(x)
- if (x < 1)
- fun_l5_n187(x)
- else
- fun_l5_n469(x)
- end
-end
-
-def fun_l4_n296(x)
- if (x < 1)
- fun_l5_n516(x)
- else
- fun_l5_n314(x)
- end
-end
-
-def fun_l4_n297(x)
- if (x < 1)
- fun_l5_n585(x)
- else
- fun_l5_n344(x)
- end
-end
-
-def fun_l4_n298(x)
- if (x < 1)
- fun_l5_n637(x)
- else
- fun_l5_n103(x)
- end
-end
-
-def fun_l4_n299(x)
- if (x < 1)
- fun_l5_n185(x)
- else
- fun_l5_n593(x)
- end
-end
-
-def fun_l4_n300(x)
- if (x < 1)
- fun_l5_n773(x)
- else
- fun_l5_n758(x)
- end
-end
-
-def fun_l4_n301(x)
- if (x < 1)
- fun_l5_n444(x)
- else
- fun_l5_n945(x)
- end
-end
-
-def fun_l4_n302(x)
- if (x < 1)
- fun_l5_n728(x)
- else
- fun_l5_n484(x)
- end
-end
-
-def fun_l4_n303(x)
- if (x < 1)
- fun_l5_n412(x)
- else
- fun_l5_n106(x)
- end
-end
-
-def fun_l4_n304(x)
- if (x < 1)
- fun_l5_n399(x)
- else
- fun_l5_n234(x)
- end
-end
-
-def fun_l4_n305(x)
- if (x < 1)
- fun_l5_n886(x)
- else
- fun_l5_n406(x)
- end
-end
-
-def fun_l4_n306(x)
- if (x < 1)
- fun_l5_n535(x)
- else
- fun_l5_n338(x)
- end
-end
-
-def fun_l4_n307(x)
- if (x < 1)
- fun_l5_n898(x)
- else
- fun_l5_n859(x)
- end
-end
-
-def fun_l4_n308(x)
- if (x < 1)
- fun_l5_n25(x)
- else
- fun_l5_n476(x)
- end
-end
-
-def fun_l4_n309(x)
- if (x < 1)
- fun_l5_n451(x)
- else
- fun_l5_n665(x)
- end
-end
-
-def fun_l4_n310(x)
- if (x < 1)
- fun_l5_n937(x)
- else
- fun_l5_n555(x)
- end
-end
-
-def fun_l4_n311(x)
- if (x < 1)
- fun_l5_n982(x)
- else
- fun_l5_n89(x)
- end
-end
-
-def fun_l4_n312(x)
- if (x < 1)
- fun_l5_n32(x)
- else
- fun_l5_n908(x)
- end
-end
-
-def fun_l4_n313(x)
- if (x < 1)
- fun_l5_n963(x)
- else
- fun_l5_n267(x)
- end
-end
-
-def fun_l4_n314(x)
- if (x < 1)
- fun_l5_n3(x)
- else
- fun_l5_n60(x)
- end
-end
-
-def fun_l4_n315(x)
- if (x < 1)
- fun_l5_n763(x)
- else
- fun_l5_n488(x)
- end
-end
-
-def fun_l4_n316(x)
- if (x < 1)
- fun_l5_n696(x)
- else
- fun_l5_n663(x)
- end
-end
-
-def fun_l4_n317(x)
- if (x < 1)
- fun_l5_n851(x)
- else
- fun_l5_n487(x)
- end
-end
-
-def fun_l4_n318(x)
- if (x < 1)
- fun_l5_n327(x)
- else
- fun_l5_n433(x)
- end
-end
-
-def fun_l4_n319(x)
- if (x < 1)
- fun_l5_n242(x)
- else
- fun_l5_n471(x)
- end
-end
-
-def fun_l4_n320(x)
- if (x < 1)
- fun_l5_n786(x)
- else
- fun_l5_n622(x)
- end
-end
-
-def fun_l4_n321(x)
- if (x < 1)
- fun_l5_n94(x)
- else
- fun_l5_n934(x)
- end
-end
-
-def fun_l4_n322(x)
- if (x < 1)
- fun_l5_n665(x)
- else
- fun_l5_n386(x)
- end
-end
-
-def fun_l4_n323(x)
- if (x < 1)
- fun_l5_n96(x)
- else
- fun_l5_n466(x)
- end
-end
-
-def fun_l4_n324(x)
- if (x < 1)
- fun_l5_n394(x)
- else
- fun_l5_n595(x)
- end
-end
-
-def fun_l4_n325(x)
- if (x < 1)
- fun_l5_n544(x)
- else
- fun_l5_n688(x)
- end
-end
-
-def fun_l4_n326(x)
- if (x < 1)
- fun_l5_n295(x)
- else
- fun_l5_n206(x)
- end
-end
-
-def fun_l4_n327(x)
- if (x < 1)
- fun_l5_n128(x)
- else
- fun_l5_n607(x)
- end
-end
-
-def fun_l4_n328(x)
- if (x < 1)
- fun_l5_n987(x)
- else
- fun_l5_n109(x)
- end
-end
-
-def fun_l4_n329(x)
- if (x < 1)
- fun_l5_n842(x)
- else
- fun_l5_n217(x)
- end
-end
-
-def fun_l4_n330(x)
- if (x < 1)
- fun_l5_n92(x)
- else
- fun_l5_n774(x)
- end
-end
-
-def fun_l4_n331(x)
- if (x < 1)
- fun_l5_n761(x)
- else
- fun_l5_n34(x)
- end
-end
-
-def fun_l4_n332(x)
- if (x < 1)
- fun_l5_n867(x)
- else
- fun_l5_n645(x)
- end
-end
-
-def fun_l4_n333(x)
- if (x < 1)
- fun_l5_n273(x)
- else
- fun_l5_n592(x)
- end
-end
-
-def fun_l4_n334(x)
- if (x < 1)
- fun_l5_n29(x)
- else
- fun_l5_n985(x)
- end
-end
-
-def fun_l4_n335(x)
- if (x < 1)
- fun_l5_n430(x)
- else
- fun_l5_n346(x)
- end
-end
-
-def fun_l4_n336(x)
- if (x < 1)
- fun_l5_n367(x)
- else
- fun_l5_n686(x)
- end
-end
-
-def fun_l4_n337(x)
- if (x < 1)
- fun_l5_n868(x)
- else
- fun_l5_n5(x)
- end
-end
-
-def fun_l4_n338(x)
- if (x < 1)
- fun_l5_n998(x)
- else
- fun_l5_n64(x)
- end
-end
-
-def fun_l4_n339(x)
- if (x < 1)
- fun_l5_n594(x)
- else
- fun_l5_n311(x)
- end
-end
-
-def fun_l4_n340(x)
- if (x < 1)
- fun_l5_n547(x)
- else
- fun_l5_n573(x)
- end
-end
-
-def fun_l4_n341(x)
- if (x < 1)
- fun_l5_n590(x)
- else
- fun_l5_n923(x)
- end
-end
-
-def fun_l4_n342(x)
- if (x < 1)
- fun_l5_n538(x)
- else
- fun_l5_n118(x)
- end
-end
-
-def fun_l4_n343(x)
- if (x < 1)
- fun_l5_n322(x)
- else
- fun_l5_n970(x)
- end
-end
-
-def fun_l4_n344(x)
- if (x < 1)
- fun_l5_n809(x)
- else
- fun_l5_n958(x)
- end
-end
-
-def fun_l4_n345(x)
- if (x < 1)
- fun_l5_n613(x)
- else
- fun_l5_n199(x)
- end
-end
-
-def fun_l4_n346(x)
- if (x < 1)
- fun_l5_n298(x)
- else
- fun_l5_n273(x)
- end
-end
-
-def fun_l4_n347(x)
- if (x < 1)
- fun_l5_n560(x)
- else
- fun_l5_n803(x)
- end
-end
-
-def fun_l4_n348(x)
- if (x < 1)
- fun_l5_n672(x)
- else
- fun_l5_n952(x)
- end
-end
-
-def fun_l4_n349(x)
- if (x < 1)
- fun_l5_n58(x)
- else
- fun_l5_n267(x)
- end
-end
-
-def fun_l4_n350(x)
- if (x < 1)
- fun_l5_n933(x)
- else
- fun_l5_n773(x)
- end
-end
-
-def fun_l4_n351(x)
- if (x < 1)
- fun_l5_n574(x)
- else
- fun_l5_n692(x)
- end
-end
-
-def fun_l4_n352(x)
- if (x < 1)
- fun_l5_n537(x)
- else
- fun_l5_n312(x)
- end
-end
-
-def fun_l4_n353(x)
- if (x < 1)
- fun_l5_n696(x)
- else
- fun_l5_n739(x)
- end
-end
-
-def fun_l4_n354(x)
- if (x < 1)
- fun_l5_n871(x)
- else
- fun_l5_n86(x)
- end
-end
-
-def fun_l4_n355(x)
- if (x < 1)
- fun_l5_n3(x)
- else
- fun_l5_n950(x)
- end
-end
-
-def fun_l4_n356(x)
- if (x < 1)
- fun_l5_n560(x)
- else
- fun_l5_n45(x)
- end
-end
-
-def fun_l4_n357(x)
- if (x < 1)
- fun_l5_n666(x)
- else
- fun_l5_n874(x)
- end
-end
-
-def fun_l4_n358(x)
- if (x < 1)
- fun_l5_n457(x)
- else
- fun_l5_n7(x)
- end
-end
-
-def fun_l4_n359(x)
- if (x < 1)
- fun_l5_n674(x)
- else
- fun_l5_n985(x)
- end
-end
-
-def fun_l4_n360(x)
- if (x < 1)
- fun_l5_n960(x)
- else
- fun_l5_n228(x)
- end
-end
-
-def fun_l4_n361(x)
- if (x < 1)
- fun_l5_n597(x)
- else
- fun_l5_n487(x)
- end
-end
-
-def fun_l4_n362(x)
- if (x < 1)
- fun_l5_n145(x)
- else
- fun_l5_n278(x)
- end
-end
-
-def fun_l4_n363(x)
- if (x < 1)
- fun_l5_n949(x)
- else
- fun_l5_n353(x)
- end
-end
-
-def fun_l4_n364(x)
- if (x < 1)
- fun_l5_n604(x)
- else
- fun_l5_n250(x)
- end
-end
-
-def fun_l4_n365(x)
- if (x < 1)
- fun_l5_n347(x)
- else
- fun_l5_n964(x)
- end
-end
-
-def fun_l4_n366(x)
- if (x < 1)
- fun_l5_n331(x)
- else
- fun_l5_n657(x)
- end
-end
-
-def fun_l4_n367(x)
- if (x < 1)
- fun_l5_n74(x)
- else
- fun_l5_n504(x)
- end
-end
-
-def fun_l4_n368(x)
- if (x < 1)
- fun_l5_n9(x)
- else
- fun_l5_n993(x)
- end
-end
-
-def fun_l4_n369(x)
- if (x < 1)
- fun_l5_n492(x)
- else
- fun_l5_n155(x)
- end
-end
-
-def fun_l4_n370(x)
- if (x < 1)
- fun_l5_n848(x)
- else
- fun_l5_n178(x)
- end
-end
-
-def fun_l4_n371(x)
- if (x < 1)
- fun_l5_n395(x)
- else
- fun_l5_n837(x)
- end
-end
-
-def fun_l4_n372(x)
- if (x < 1)
- fun_l5_n834(x)
- else
- fun_l5_n719(x)
- end
-end
-
-def fun_l4_n373(x)
- if (x < 1)
- fun_l5_n422(x)
- else
- fun_l5_n776(x)
- end
-end
-
-def fun_l4_n374(x)
- if (x < 1)
- fun_l5_n293(x)
- else
- fun_l5_n385(x)
- end
-end
-
-def fun_l4_n375(x)
- if (x < 1)
- fun_l5_n487(x)
- else
- fun_l5_n61(x)
- end
-end
-
-def fun_l4_n376(x)
- if (x < 1)
- fun_l5_n493(x)
- else
- fun_l5_n629(x)
- end
-end
-
-def fun_l4_n377(x)
- if (x < 1)
- fun_l5_n429(x)
- else
- fun_l5_n157(x)
- end
-end
-
-def fun_l4_n378(x)
- if (x < 1)
- fun_l5_n145(x)
- else
- fun_l5_n988(x)
- end
-end
-
-def fun_l4_n379(x)
- if (x < 1)
- fun_l5_n430(x)
- else
- fun_l5_n246(x)
- end
-end
-
-def fun_l4_n380(x)
- if (x < 1)
- fun_l5_n320(x)
- else
- fun_l5_n284(x)
- end
-end
-
-def fun_l4_n381(x)
- if (x < 1)
- fun_l5_n278(x)
- else
- fun_l5_n163(x)
- end
-end
-
-def fun_l4_n382(x)
- if (x < 1)
- fun_l5_n999(x)
- else
- fun_l5_n907(x)
- end
-end
-
-def fun_l4_n383(x)
- if (x < 1)
- fun_l5_n979(x)
- else
- fun_l5_n370(x)
- end
-end
-
-def fun_l4_n384(x)
- if (x < 1)
- fun_l5_n58(x)
- else
- fun_l5_n60(x)
- end
-end
-
-def fun_l4_n385(x)
- if (x < 1)
- fun_l5_n558(x)
- else
- fun_l5_n524(x)
- end
-end
-
-def fun_l4_n386(x)
- if (x < 1)
- fun_l5_n438(x)
- else
- fun_l5_n799(x)
- end
-end
-
-def fun_l4_n387(x)
- if (x < 1)
- fun_l5_n696(x)
- else
- fun_l5_n463(x)
- end
-end
-
-def fun_l4_n388(x)
- if (x < 1)
- fun_l5_n376(x)
- else
- fun_l5_n943(x)
- end
-end
-
-def fun_l4_n389(x)
- if (x < 1)
- fun_l5_n21(x)
- else
- fun_l5_n663(x)
- end
-end
-
-def fun_l4_n390(x)
- if (x < 1)
- fun_l5_n8(x)
- else
- fun_l5_n348(x)
- end
-end
-
-def fun_l4_n391(x)
- if (x < 1)
- fun_l5_n908(x)
- else
- fun_l5_n695(x)
- end
-end
-
-def fun_l4_n392(x)
- if (x < 1)
- fun_l5_n97(x)
- else
- fun_l5_n466(x)
- end
-end
-
-def fun_l4_n393(x)
- if (x < 1)
- fun_l5_n480(x)
- else
- fun_l5_n972(x)
- end
-end
-
-def fun_l4_n394(x)
- if (x < 1)
- fun_l5_n85(x)
- else
- fun_l5_n849(x)
- end
-end
-
-def fun_l4_n395(x)
- if (x < 1)
- fun_l5_n897(x)
- else
- fun_l5_n13(x)
- end
-end
-
-def fun_l4_n396(x)
- if (x < 1)
- fun_l5_n628(x)
- else
- fun_l5_n743(x)
- end
-end
-
-def fun_l4_n397(x)
- if (x < 1)
- fun_l5_n29(x)
- else
- fun_l5_n185(x)
- end
-end
-
-def fun_l4_n398(x)
- if (x < 1)
- fun_l5_n464(x)
- else
- fun_l5_n742(x)
- end
-end
-
-def fun_l4_n399(x)
- if (x < 1)
- fun_l5_n348(x)
- else
- fun_l5_n70(x)
- end
-end
-
-def fun_l4_n400(x)
- if (x < 1)
- fun_l5_n397(x)
- else
- fun_l5_n132(x)
- end
-end
-
-def fun_l4_n401(x)
- if (x < 1)
- fun_l5_n433(x)
- else
- fun_l5_n77(x)
- end
-end
-
-def fun_l4_n402(x)
- if (x < 1)
- fun_l5_n24(x)
- else
- fun_l5_n160(x)
- end
-end
-
-def fun_l4_n403(x)
- if (x < 1)
- fun_l5_n738(x)
- else
- fun_l5_n174(x)
- end
-end
-
-def fun_l4_n404(x)
- if (x < 1)
- fun_l5_n585(x)
- else
- fun_l5_n670(x)
- end
-end
-
-def fun_l4_n405(x)
- if (x < 1)
- fun_l5_n320(x)
- else
- fun_l5_n245(x)
- end
-end
-
-def fun_l4_n406(x)
- if (x < 1)
- fun_l5_n357(x)
- else
- fun_l5_n742(x)
- end
-end
-
-def fun_l4_n407(x)
- if (x < 1)
- fun_l5_n16(x)
- else
- fun_l5_n227(x)
- end
-end
-
-def fun_l4_n408(x)
- if (x < 1)
- fun_l5_n360(x)
- else
- fun_l5_n18(x)
- end
-end
-
-def fun_l4_n409(x)
- if (x < 1)
- fun_l5_n210(x)
- else
- fun_l5_n253(x)
- end
-end
-
-def fun_l4_n410(x)
- if (x < 1)
- fun_l5_n915(x)
- else
- fun_l5_n605(x)
- end
-end
-
-def fun_l4_n411(x)
- if (x < 1)
- fun_l5_n511(x)
- else
- fun_l5_n118(x)
- end
-end
-
-def fun_l4_n412(x)
- if (x < 1)
- fun_l5_n680(x)
- else
- fun_l5_n445(x)
- end
-end
-
-def fun_l4_n413(x)
- if (x < 1)
- fun_l5_n722(x)
- else
- fun_l5_n440(x)
- end
-end
-
-def fun_l4_n414(x)
- if (x < 1)
- fun_l5_n382(x)
- else
- fun_l5_n380(x)
- end
-end
-
-def fun_l4_n415(x)
- if (x < 1)
- fun_l5_n548(x)
- else
- fun_l5_n462(x)
- end
-end
-
-def fun_l4_n416(x)
- if (x < 1)
- fun_l5_n12(x)
- else
- fun_l5_n952(x)
- end
-end
-
-def fun_l4_n417(x)
- if (x < 1)
- fun_l5_n814(x)
- else
- fun_l5_n720(x)
- end
-end
-
-def fun_l4_n418(x)
- if (x < 1)
- fun_l5_n804(x)
- else
- fun_l5_n243(x)
- end
-end
-
-def fun_l4_n419(x)
- if (x < 1)
- fun_l5_n654(x)
- else
- fun_l5_n950(x)
- end
-end
-
-def fun_l4_n420(x)
- if (x < 1)
- fun_l5_n998(x)
- else
- fun_l5_n937(x)
- end
-end
-
-def fun_l4_n421(x)
- if (x < 1)
- fun_l5_n476(x)
- else
- fun_l5_n245(x)
- end
-end
-
-def fun_l4_n422(x)
- if (x < 1)
- fun_l5_n778(x)
- else
- fun_l5_n950(x)
- end
-end
-
-def fun_l4_n423(x)
- if (x < 1)
- fun_l5_n255(x)
- else
- fun_l5_n438(x)
- end
-end
-
-def fun_l4_n424(x)
- if (x < 1)
- fun_l5_n906(x)
- else
- fun_l5_n329(x)
- end
-end
-
-def fun_l4_n425(x)
- if (x < 1)
- fun_l5_n644(x)
- else
- fun_l5_n512(x)
- end
-end
-
-def fun_l4_n426(x)
- if (x < 1)
- fun_l5_n558(x)
- else
- fun_l5_n925(x)
- end
-end
-
-def fun_l4_n427(x)
- if (x < 1)
- fun_l5_n745(x)
- else
- fun_l5_n168(x)
- end
-end
-
-def fun_l4_n428(x)
- if (x < 1)
- fun_l5_n682(x)
- else
- fun_l5_n298(x)
- end
-end
-
-def fun_l4_n429(x)
- if (x < 1)
- fun_l5_n211(x)
- else
- fun_l5_n608(x)
- end
-end
-
-def fun_l4_n430(x)
- if (x < 1)
- fun_l5_n100(x)
- else
- fun_l5_n287(x)
- end
-end
-
-def fun_l4_n431(x)
- if (x < 1)
- fun_l5_n513(x)
- else
- fun_l5_n764(x)
- end
-end
-
-def fun_l4_n432(x)
- if (x < 1)
- fun_l5_n925(x)
- else
- fun_l5_n857(x)
- end
-end
-
-def fun_l4_n433(x)
- if (x < 1)
- fun_l5_n279(x)
- else
- fun_l5_n429(x)
- end
-end
-
-def fun_l4_n434(x)
- if (x < 1)
- fun_l5_n376(x)
- else
- fun_l5_n811(x)
- end
-end
-
-def fun_l4_n435(x)
- if (x < 1)
- fun_l5_n893(x)
- else
- fun_l5_n136(x)
- end
-end
-
-def fun_l4_n436(x)
- if (x < 1)
- fun_l5_n283(x)
- else
- fun_l5_n508(x)
- end
-end
-
-def fun_l4_n437(x)
- if (x < 1)
- fun_l5_n478(x)
- else
- fun_l5_n589(x)
- end
-end
-
-def fun_l4_n438(x)
- if (x < 1)
- fun_l5_n460(x)
- else
- fun_l5_n589(x)
- end
-end
-
-def fun_l4_n439(x)
- if (x < 1)
- fun_l5_n745(x)
- else
- fun_l5_n5(x)
- end
-end
-
-def fun_l4_n440(x)
- if (x < 1)
- fun_l5_n601(x)
- else
- fun_l5_n322(x)
- end
-end
-
-def fun_l4_n441(x)
- if (x < 1)
- fun_l5_n703(x)
- else
- fun_l5_n322(x)
- end
-end
-
-def fun_l4_n442(x)
- if (x < 1)
- fun_l5_n810(x)
- else
- fun_l5_n363(x)
- end
-end
-
-def fun_l4_n443(x)
- if (x < 1)
- fun_l5_n62(x)
- else
- fun_l5_n995(x)
- end
-end
-
-def fun_l4_n444(x)
- if (x < 1)
- fun_l5_n196(x)
- else
- fun_l5_n156(x)
- end
-end
-
-def fun_l4_n445(x)
- if (x < 1)
- fun_l5_n456(x)
- else
- fun_l5_n820(x)
- end
-end
-
-def fun_l4_n446(x)
- if (x < 1)
- fun_l5_n592(x)
- else
- fun_l5_n214(x)
- end
-end
-
-def fun_l4_n447(x)
- if (x < 1)
- fun_l5_n44(x)
- else
- fun_l5_n769(x)
- end
-end
-
-def fun_l4_n448(x)
- if (x < 1)
- fun_l5_n694(x)
- else
- fun_l5_n909(x)
- end
-end
-
-def fun_l4_n449(x)
- if (x < 1)
- fun_l5_n297(x)
- else
- fun_l5_n134(x)
- end
-end
-
-def fun_l4_n450(x)
- if (x < 1)
- fun_l5_n878(x)
- else
- fun_l5_n475(x)
- end
-end
-
-def fun_l4_n451(x)
- if (x < 1)
- fun_l5_n338(x)
- else
- fun_l5_n700(x)
- end
-end
-
-def fun_l4_n452(x)
- if (x < 1)
- fun_l5_n813(x)
- else
- fun_l5_n41(x)
- end
-end
-
-def fun_l4_n453(x)
- if (x < 1)
- fun_l5_n176(x)
- else
- fun_l5_n758(x)
- end
-end
-
-def fun_l4_n454(x)
- if (x < 1)
- fun_l5_n60(x)
- else
- fun_l5_n608(x)
- end
-end
-
-def fun_l4_n455(x)
- if (x < 1)
- fun_l5_n550(x)
- else
- fun_l5_n607(x)
- end
-end
-
-def fun_l4_n456(x)
- if (x < 1)
- fun_l5_n535(x)
- else
- fun_l5_n478(x)
- end
-end
-
-def fun_l4_n457(x)
- if (x < 1)
- fun_l5_n768(x)
- else
- fun_l5_n613(x)
- end
-end
-
-def fun_l4_n458(x)
- if (x < 1)
- fun_l5_n686(x)
- else
- fun_l5_n208(x)
- end
-end
-
-def fun_l4_n459(x)
- if (x < 1)
- fun_l5_n167(x)
- else
- fun_l5_n875(x)
- end
-end
-
-def fun_l4_n460(x)
- if (x < 1)
- fun_l5_n202(x)
- else
- fun_l5_n440(x)
- end
-end
-
-def fun_l4_n461(x)
- if (x < 1)
- fun_l5_n64(x)
- else
- fun_l5_n845(x)
- end
-end
-
-def fun_l4_n462(x)
- if (x < 1)
- fun_l5_n914(x)
- else
- fun_l5_n699(x)
- end
-end
-
-def fun_l4_n463(x)
- if (x < 1)
- fun_l5_n204(x)
- else
- fun_l5_n723(x)
- end
-end
-
-def fun_l4_n464(x)
- if (x < 1)
- fun_l5_n549(x)
- else
- fun_l5_n375(x)
- end
-end
-
-def fun_l4_n465(x)
- if (x < 1)
- fun_l5_n610(x)
- else
- fun_l5_n596(x)
- end
-end
-
-def fun_l4_n466(x)
- if (x < 1)
- fun_l5_n571(x)
- else
- fun_l5_n618(x)
- end
-end
-
-def fun_l4_n467(x)
- if (x < 1)
- fun_l5_n428(x)
- else
- fun_l5_n315(x)
- end
-end
-
-def fun_l4_n468(x)
- if (x < 1)
- fun_l5_n19(x)
- else
- fun_l5_n301(x)
- end
-end
-
-def fun_l4_n469(x)
- if (x < 1)
- fun_l5_n38(x)
- else
- fun_l5_n895(x)
- end
-end
-
-def fun_l4_n470(x)
- if (x < 1)
- fun_l5_n815(x)
- else
- fun_l5_n303(x)
- end
-end
-
-def fun_l4_n471(x)
- if (x < 1)
- fun_l5_n876(x)
- else
- fun_l5_n221(x)
- end
-end
-
-def fun_l4_n472(x)
- if (x < 1)
- fun_l5_n199(x)
- else
- fun_l5_n354(x)
- end
-end
-
-def fun_l4_n473(x)
- if (x < 1)
- fun_l5_n56(x)
- else
- fun_l5_n197(x)
- end
-end
-
-def fun_l4_n474(x)
- if (x < 1)
- fun_l5_n573(x)
- else
- fun_l5_n616(x)
- end
-end
-
-def fun_l4_n475(x)
- if (x < 1)
- fun_l5_n313(x)
- else
- fun_l5_n209(x)
- end
-end
-
-def fun_l4_n476(x)
- if (x < 1)
- fun_l5_n229(x)
- else
- fun_l5_n51(x)
- end
-end
-
-def fun_l4_n477(x)
- if (x < 1)
- fun_l5_n768(x)
- else
- fun_l5_n368(x)
- end
-end
-
-def fun_l4_n478(x)
- if (x < 1)
- fun_l5_n80(x)
- else
- fun_l5_n411(x)
- end
-end
-
-def fun_l4_n479(x)
- if (x < 1)
- fun_l5_n221(x)
- else
- fun_l5_n266(x)
- end
-end
-
-def fun_l4_n480(x)
- if (x < 1)
- fun_l5_n463(x)
- else
- fun_l5_n71(x)
- end
-end
-
-def fun_l4_n481(x)
- if (x < 1)
- fun_l5_n446(x)
- else
- fun_l5_n610(x)
- end
-end
-
-def fun_l4_n482(x)
- if (x < 1)
- fun_l5_n402(x)
- else
- fun_l5_n449(x)
- end
-end
-
-def fun_l4_n483(x)
- if (x < 1)
- fun_l5_n497(x)
- else
- fun_l5_n521(x)
- end
-end
-
-def fun_l4_n484(x)
- if (x < 1)
- fun_l5_n895(x)
- else
- fun_l5_n361(x)
- end
-end
-
-def fun_l4_n485(x)
- if (x < 1)
- fun_l5_n254(x)
- else
- fun_l5_n366(x)
- end
-end
-
-def fun_l4_n486(x)
- if (x < 1)
- fun_l5_n179(x)
- else
- fun_l5_n154(x)
- end
-end
-
-def fun_l4_n487(x)
- if (x < 1)
- fun_l5_n905(x)
- else
- fun_l5_n30(x)
- end
-end
-
-def fun_l4_n488(x)
- if (x < 1)
- fun_l5_n989(x)
- else
- fun_l5_n640(x)
- end
-end
-
-def fun_l4_n489(x)
- if (x < 1)
- fun_l5_n664(x)
- else
- fun_l5_n87(x)
- end
-end
-
-def fun_l4_n490(x)
- if (x < 1)
- fun_l5_n518(x)
- else
- fun_l5_n986(x)
- end
-end
-
-def fun_l4_n491(x)
- if (x < 1)
- fun_l5_n443(x)
- else
- fun_l5_n532(x)
- end
-end
-
-def fun_l4_n492(x)
- if (x < 1)
- fun_l5_n349(x)
- else
- fun_l5_n373(x)
- end
-end
-
-def fun_l4_n493(x)
- if (x < 1)
- fun_l5_n208(x)
- else
- fun_l5_n404(x)
- end
-end
-
-def fun_l4_n494(x)
- if (x < 1)
- fun_l5_n12(x)
- else
- fun_l5_n608(x)
- end
-end
-
-def fun_l4_n495(x)
- if (x < 1)
- fun_l5_n12(x)
- else
- fun_l5_n42(x)
- end
-end
-
-def fun_l4_n496(x)
- if (x < 1)
- fun_l5_n442(x)
- else
- fun_l5_n809(x)
- end
-end
-
-def fun_l4_n497(x)
- if (x < 1)
- fun_l5_n266(x)
- else
- fun_l5_n259(x)
- end
-end
-
-def fun_l4_n498(x)
- if (x < 1)
- fun_l5_n342(x)
- else
- fun_l5_n275(x)
- end
-end
-
-def fun_l4_n499(x)
- if (x < 1)
- fun_l5_n806(x)
- else
- fun_l5_n797(x)
- end
-end
-
-def fun_l4_n500(x)
- if (x < 1)
- fun_l5_n646(x)
- else
- fun_l5_n426(x)
- end
-end
-
-def fun_l4_n501(x)
- if (x < 1)
- fun_l5_n593(x)
- else
- fun_l5_n860(x)
- end
-end
-
-def fun_l4_n502(x)
- if (x < 1)
- fun_l5_n355(x)
- else
- fun_l5_n411(x)
- end
-end
-
-def fun_l4_n503(x)
- if (x < 1)
- fun_l5_n602(x)
- else
- fun_l5_n26(x)
- end
-end
-
-def fun_l4_n504(x)
- if (x < 1)
- fun_l5_n875(x)
- else
- fun_l5_n716(x)
- end
-end
-
-def fun_l4_n505(x)
- if (x < 1)
- fun_l5_n248(x)
- else
- fun_l5_n388(x)
- end
-end
-
-def fun_l4_n506(x)
- if (x < 1)
- fun_l5_n273(x)
- else
- fun_l5_n11(x)
- end
-end
-
-def fun_l4_n507(x)
- if (x < 1)
- fun_l5_n291(x)
- else
- fun_l5_n464(x)
- end
-end
-
-def fun_l4_n508(x)
- if (x < 1)
- fun_l5_n309(x)
- else
- fun_l5_n198(x)
- end
-end
-
-def fun_l4_n509(x)
- if (x < 1)
- fun_l5_n85(x)
- else
- fun_l5_n375(x)
- end
-end
-
-def fun_l4_n510(x)
- if (x < 1)
- fun_l5_n993(x)
- else
- fun_l5_n311(x)
- end
-end
-
-def fun_l4_n511(x)
- if (x < 1)
- fun_l5_n824(x)
- else
- fun_l5_n936(x)
- end
-end
-
-def fun_l4_n512(x)
- if (x < 1)
- fun_l5_n897(x)
- else
- fun_l5_n995(x)
- end
-end
-
-def fun_l4_n513(x)
- if (x < 1)
- fun_l5_n443(x)
- else
- fun_l5_n511(x)
- end
-end
-
-def fun_l4_n514(x)
- if (x < 1)
- fun_l5_n965(x)
- else
- fun_l5_n506(x)
- end
-end
-
-def fun_l4_n515(x)
- if (x < 1)
- fun_l5_n480(x)
- else
- fun_l5_n464(x)
- end
-end
-
-def fun_l4_n516(x)
- if (x < 1)
- fun_l5_n396(x)
- else
- fun_l5_n355(x)
- end
-end
-
-def fun_l4_n517(x)
- if (x < 1)
- fun_l5_n782(x)
- else
- fun_l5_n624(x)
- end
-end
-
-def fun_l4_n518(x)
- if (x < 1)
- fun_l5_n460(x)
- else
- fun_l5_n920(x)
- end
-end
-
-def fun_l4_n519(x)
- if (x < 1)
- fun_l5_n258(x)
- else
- fun_l5_n296(x)
- end
-end
-
-def fun_l4_n520(x)
- if (x < 1)
- fun_l5_n344(x)
- else
- fun_l5_n180(x)
- end
-end
-
-def fun_l4_n521(x)
- if (x < 1)
- fun_l5_n489(x)
- else
- fun_l5_n818(x)
- end
-end
-
-def fun_l4_n522(x)
- if (x < 1)
- fun_l5_n246(x)
- else
- fun_l5_n25(x)
- end
-end
-
-def fun_l4_n523(x)
- if (x < 1)
- fun_l5_n165(x)
- else
- fun_l5_n835(x)
- end
-end
-
-def fun_l4_n524(x)
- if (x < 1)
- fun_l5_n836(x)
- else
- fun_l5_n838(x)
- end
-end
-
-def fun_l4_n525(x)
- if (x < 1)
- fun_l5_n781(x)
- else
- fun_l5_n183(x)
- end
-end
-
-def fun_l4_n526(x)
- if (x < 1)
- fun_l5_n335(x)
- else
- fun_l5_n809(x)
- end
-end
-
-def fun_l4_n527(x)
- if (x < 1)
- fun_l5_n748(x)
- else
- fun_l5_n674(x)
- end
-end
-
-def fun_l4_n528(x)
- if (x < 1)
- fun_l5_n612(x)
- else
- fun_l5_n933(x)
- end
-end
-
-def fun_l4_n529(x)
- if (x < 1)
- fun_l5_n781(x)
- else
- fun_l5_n174(x)
- end
-end
-
-def fun_l4_n530(x)
- if (x < 1)
- fun_l5_n299(x)
- else
- fun_l5_n677(x)
- end
-end
-
-def fun_l4_n531(x)
- if (x < 1)
- fun_l5_n455(x)
- else
- fun_l5_n211(x)
- end
-end
-
-def fun_l4_n532(x)
- if (x < 1)
- fun_l5_n981(x)
- else
- fun_l5_n605(x)
- end
-end
-
-def fun_l4_n533(x)
- if (x < 1)
- fun_l5_n299(x)
- else
- fun_l5_n30(x)
- end
-end
-
-def fun_l4_n534(x)
- if (x < 1)
- fun_l5_n642(x)
- else
- fun_l5_n652(x)
- end
-end
-
-def fun_l4_n535(x)
- if (x < 1)
- fun_l5_n904(x)
- else
- fun_l5_n133(x)
- end
-end
-
-def fun_l4_n536(x)
- if (x < 1)
- fun_l5_n253(x)
- else
- fun_l5_n330(x)
- end
-end
-
-def fun_l4_n537(x)
- if (x < 1)
- fun_l5_n357(x)
- else
- fun_l5_n533(x)
- end
-end
-
-def fun_l4_n538(x)
- if (x < 1)
- fun_l5_n484(x)
- else
- fun_l5_n438(x)
- end
-end
-
-def fun_l4_n539(x)
- if (x < 1)
- fun_l5_n200(x)
- else
- fun_l5_n235(x)
- end
-end
-
-def fun_l4_n540(x)
- if (x < 1)
- fun_l5_n929(x)
- else
- fun_l5_n875(x)
- end
-end
-
-def fun_l4_n541(x)
- if (x < 1)
- fun_l5_n237(x)
- else
- fun_l5_n688(x)
- end
-end
-
-def fun_l4_n542(x)
- if (x < 1)
- fun_l5_n723(x)
- else
- fun_l5_n308(x)
- end
-end
-
-def fun_l4_n543(x)
- if (x < 1)
- fun_l5_n591(x)
- else
- fun_l5_n93(x)
- end
-end
-
-def fun_l4_n544(x)
- if (x < 1)
- fun_l5_n258(x)
- else
- fun_l5_n205(x)
- end
-end
-
-def fun_l4_n545(x)
- if (x < 1)
- fun_l5_n910(x)
- else
- fun_l5_n529(x)
- end
-end
-
-def fun_l4_n546(x)
- if (x < 1)
- fun_l5_n255(x)
- else
- fun_l5_n262(x)
- end
-end
-
-def fun_l4_n547(x)
- if (x < 1)
- fun_l5_n674(x)
- else
- fun_l5_n813(x)
- end
-end
-
-def fun_l4_n548(x)
- if (x < 1)
- fun_l5_n9(x)
- else
- fun_l5_n709(x)
- end
-end
-
-def fun_l4_n549(x)
- if (x < 1)
- fun_l5_n146(x)
- else
- fun_l5_n801(x)
- end
-end
-
-def fun_l4_n550(x)
- if (x < 1)
- fun_l5_n593(x)
- else
- fun_l5_n428(x)
- end
-end
-
-def fun_l4_n551(x)
- if (x < 1)
- fun_l5_n953(x)
- else
- fun_l5_n238(x)
- end
-end
-
-def fun_l4_n552(x)
- if (x < 1)
- fun_l5_n900(x)
- else
- fun_l5_n246(x)
- end
-end
-
-def fun_l4_n553(x)
- if (x < 1)
- fun_l5_n400(x)
- else
- fun_l5_n150(x)
- end
-end
-
-def fun_l4_n554(x)
- if (x < 1)
- fun_l5_n697(x)
- else
- fun_l5_n681(x)
- end
-end
-
-def fun_l4_n555(x)
- if (x < 1)
- fun_l5_n487(x)
- else
- fun_l5_n784(x)
- end
-end
-
-def fun_l4_n556(x)
- if (x < 1)
- fun_l5_n485(x)
- else
- fun_l5_n984(x)
- end
-end
-
-def fun_l4_n557(x)
- if (x < 1)
- fun_l5_n774(x)
- else
- fun_l5_n864(x)
- end
-end
-
-def fun_l4_n558(x)
- if (x < 1)
- fun_l5_n823(x)
- else
- fun_l5_n527(x)
- end
-end
-
-def fun_l4_n559(x)
- if (x < 1)
- fun_l5_n204(x)
- else
- fun_l5_n114(x)
- end
-end
-
-def fun_l4_n560(x)
- if (x < 1)
- fun_l5_n835(x)
- else
- fun_l5_n930(x)
- end
-end
-
-def fun_l4_n561(x)
- if (x < 1)
- fun_l5_n481(x)
- else
- fun_l5_n471(x)
- end
-end
-
-def fun_l4_n562(x)
- if (x < 1)
- fun_l5_n459(x)
- else
- fun_l5_n526(x)
- end
-end
-
-def fun_l4_n563(x)
- if (x < 1)
- fun_l5_n148(x)
- else
- fun_l5_n473(x)
- end
-end
-
-def fun_l4_n564(x)
- if (x < 1)
- fun_l5_n448(x)
- else
- fun_l5_n389(x)
- end
-end
-
-def fun_l4_n565(x)
- if (x < 1)
- fun_l5_n600(x)
- else
- fun_l5_n405(x)
- end
-end
-
-def fun_l4_n566(x)
- if (x < 1)
- fun_l5_n67(x)
- else
- fun_l5_n145(x)
- end
-end
-
-def fun_l4_n567(x)
- if (x < 1)
- fun_l5_n63(x)
- else
- fun_l5_n206(x)
- end
-end
-
-def fun_l4_n568(x)
- if (x < 1)
- fun_l5_n463(x)
- else
- fun_l5_n288(x)
- end
-end
-
-def fun_l4_n569(x)
- if (x < 1)
- fun_l5_n143(x)
- else
- fun_l5_n879(x)
- end
-end
-
-def fun_l4_n570(x)
- if (x < 1)
- fun_l5_n552(x)
- else
- fun_l5_n517(x)
- end
-end
-
-def fun_l4_n571(x)
- if (x < 1)
- fun_l5_n527(x)
- else
- fun_l5_n680(x)
- end
-end
-
-def fun_l4_n572(x)
- if (x < 1)
- fun_l5_n853(x)
- else
- fun_l5_n97(x)
- end
-end
-
-def fun_l4_n573(x)
- if (x < 1)
- fun_l5_n277(x)
- else
- fun_l5_n329(x)
- end
-end
-
-def fun_l4_n574(x)
- if (x < 1)
- fun_l5_n952(x)
- else
- fun_l5_n515(x)
- end
-end
-
-def fun_l4_n575(x)
- if (x < 1)
- fun_l5_n64(x)
- else
- fun_l5_n576(x)
- end
-end
-
-def fun_l4_n576(x)
- if (x < 1)
- fun_l5_n57(x)
- else
- fun_l5_n499(x)
- end
-end
-
-def fun_l4_n577(x)
- if (x < 1)
- fun_l5_n10(x)
- else
- fun_l5_n208(x)
- end
-end
-
-def fun_l4_n578(x)
- if (x < 1)
- fun_l5_n361(x)
- else
- fun_l5_n447(x)
- end
-end
-
-def fun_l4_n579(x)
- if (x < 1)
- fun_l5_n788(x)
- else
- fun_l5_n299(x)
- end
-end
-
-def fun_l4_n580(x)
- if (x < 1)
- fun_l5_n973(x)
- else
- fun_l5_n753(x)
- end
-end
-
-def fun_l4_n581(x)
- if (x < 1)
- fun_l5_n862(x)
- else
- fun_l5_n110(x)
- end
-end
-
-def fun_l4_n582(x)
- if (x < 1)
- fun_l5_n760(x)
- else
- fun_l5_n256(x)
- end
-end
-
-def fun_l4_n583(x)
- if (x < 1)
- fun_l5_n8(x)
- else
- fun_l5_n922(x)
- end
-end
-
-def fun_l4_n584(x)
- if (x < 1)
- fun_l5_n100(x)
- else
- fun_l5_n230(x)
- end
-end
-
-def fun_l4_n585(x)
- if (x < 1)
- fun_l5_n183(x)
- else
- fun_l5_n350(x)
- end
-end
-
-def fun_l4_n586(x)
- if (x < 1)
- fun_l5_n294(x)
- else
- fun_l5_n673(x)
- end
-end
-
-def fun_l4_n587(x)
- if (x < 1)
- fun_l5_n51(x)
- else
- fun_l5_n718(x)
- end
-end
-
-def fun_l4_n588(x)
- if (x < 1)
- fun_l5_n257(x)
- else
- fun_l5_n111(x)
- end
-end
-
-def fun_l4_n589(x)
- if (x < 1)
- fun_l5_n727(x)
- else
- fun_l5_n585(x)
- end
-end
-
-def fun_l4_n590(x)
- if (x < 1)
- fun_l5_n205(x)
- else
- fun_l5_n308(x)
- end
-end
-
-def fun_l4_n591(x)
- if (x < 1)
- fun_l5_n618(x)
- else
- fun_l5_n970(x)
- end
-end
-
-def fun_l4_n592(x)
- if (x < 1)
- fun_l5_n631(x)
- else
- fun_l5_n513(x)
- end
-end
-
-def fun_l4_n593(x)
- if (x < 1)
- fun_l5_n270(x)
- else
- fun_l5_n737(x)
- end
-end
-
-def fun_l4_n594(x)
- if (x < 1)
- fun_l5_n464(x)
- else
- fun_l5_n217(x)
- end
-end
-
-def fun_l4_n595(x)
- if (x < 1)
- fun_l5_n650(x)
- else
- fun_l5_n616(x)
- end
-end
-
-def fun_l4_n596(x)
- if (x < 1)
- fun_l5_n542(x)
- else
- fun_l5_n613(x)
- end
-end
-
-def fun_l4_n597(x)
- if (x < 1)
- fun_l5_n312(x)
- else
- fun_l5_n7(x)
- end
-end
-
-def fun_l4_n598(x)
- if (x < 1)
- fun_l5_n164(x)
- else
- fun_l5_n592(x)
- end
-end
-
-def fun_l4_n599(x)
- if (x < 1)
- fun_l5_n326(x)
- else
- fun_l5_n894(x)
- end
-end
-
-def fun_l4_n600(x)
- if (x < 1)
- fun_l5_n243(x)
- else
- fun_l5_n233(x)
- end
-end
-
-def fun_l4_n601(x)
- if (x < 1)
- fun_l5_n600(x)
- else
- fun_l5_n7(x)
- end
-end
-
-def fun_l4_n602(x)
- if (x < 1)
- fun_l5_n334(x)
- else
- fun_l5_n282(x)
- end
-end
-
-def fun_l4_n603(x)
- if (x < 1)
- fun_l5_n202(x)
- else
- fun_l5_n252(x)
- end
-end
-
-def fun_l4_n604(x)
- if (x < 1)
- fun_l5_n173(x)
- else
- fun_l5_n685(x)
- end
-end
-
-def fun_l4_n605(x)
- if (x < 1)
- fun_l5_n953(x)
- else
- fun_l5_n416(x)
- end
-end
-
-def fun_l4_n606(x)
- if (x < 1)
- fun_l5_n775(x)
- else
- fun_l5_n372(x)
- end
-end
-
-def fun_l4_n607(x)
- if (x < 1)
- fun_l5_n723(x)
- else
- fun_l5_n894(x)
- end
-end
-
-def fun_l4_n608(x)
- if (x < 1)
- fun_l5_n690(x)
- else
- fun_l5_n26(x)
- end
-end
-
-def fun_l4_n609(x)
- if (x < 1)
- fun_l5_n555(x)
- else
- fun_l5_n717(x)
- end
-end
-
-def fun_l4_n610(x)
- if (x < 1)
- fun_l5_n597(x)
- else
- fun_l5_n106(x)
- end
-end
-
-def fun_l4_n611(x)
- if (x < 1)
- fun_l5_n405(x)
- else
- fun_l5_n588(x)
- end
-end
-
-def fun_l4_n612(x)
- if (x < 1)
- fun_l5_n41(x)
- else
- fun_l5_n558(x)
- end
-end
-
-def fun_l4_n613(x)
- if (x < 1)
- fun_l5_n875(x)
- else
- fun_l5_n492(x)
- end
-end
-
-def fun_l4_n614(x)
- if (x < 1)
- fun_l5_n605(x)
- else
- fun_l5_n461(x)
- end
-end
-
-def fun_l4_n615(x)
- if (x < 1)
- fun_l5_n726(x)
- else
- fun_l5_n534(x)
- end
-end
-
-def fun_l4_n616(x)
- if (x < 1)
- fun_l5_n919(x)
- else
- fun_l5_n404(x)
- end
-end
-
-def fun_l4_n617(x)
- if (x < 1)
- fun_l5_n383(x)
- else
- fun_l5_n324(x)
- end
-end
-
-def fun_l4_n618(x)
- if (x < 1)
- fun_l5_n286(x)
- else
- fun_l5_n157(x)
- end
-end
-
-def fun_l4_n619(x)
- if (x < 1)
- fun_l5_n713(x)
- else
- fun_l5_n388(x)
- end
-end
-
-def fun_l4_n620(x)
- if (x < 1)
- fun_l5_n773(x)
- else
- fun_l5_n790(x)
- end
-end
-
-def fun_l4_n621(x)
- if (x < 1)
- fun_l5_n797(x)
- else
- fun_l5_n720(x)
- end
-end
-
-def fun_l4_n622(x)
- if (x < 1)
- fun_l5_n799(x)
- else
- fun_l5_n423(x)
- end
-end
-
-def fun_l4_n623(x)
- if (x < 1)
- fun_l5_n390(x)
- else
- fun_l5_n941(x)
- end
-end
-
-def fun_l4_n624(x)
- if (x < 1)
- fun_l5_n584(x)
- else
- fun_l5_n191(x)
- end
-end
-
-def fun_l4_n625(x)
- if (x < 1)
- fun_l5_n243(x)
- else
- fun_l5_n208(x)
- end
-end
-
-def fun_l4_n626(x)
- if (x < 1)
- fun_l5_n136(x)
- else
- fun_l5_n791(x)
- end
-end
-
-def fun_l4_n627(x)
- if (x < 1)
- fun_l5_n684(x)
- else
- fun_l5_n341(x)
- end
-end
-
-def fun_l4_n628(x)
- if (x < 1)
- fun_l5_n876(x)
- else
- fun_l5_n27(x)
- end
-end
-
-def fun_l4_n629(x)
- if (x < 1)
- fun_l5_n18(x)
- else
- fun_l5_n867(x)
- end
-end
-
-def fun_l4_n630(x)
- if (x < 1)
- fun_l5_n4(x)
- else
- fun_l5_n871(x)
- end
-end
-
-def fun_l4_n631(x)
- if (x < 1)
- fun_l5_n578(x)
- else
- fun_l5_n988(x)
- end
-end
-
-def fun_l4_n632(x)
- if (x < 1)
- fun_l5_n388(x)
- else
- fun_l5_n258(x)
- end
-end
-
-def fun_l4_n633(x)
- if (x < 1)
- fun_l5_n680(x)
- else
- fun_l5_n814(x)
- end
-end
-
-def fun_l4_n634(x)
- if (x < 1)
- fun_l5_n857(x)
- else
- fun_l5_n595(x)
- end
-end
-
-def fun_l4_n635(x)
- if (x < 1)
- fun_l5_n547(x)
- else
- fun_l5_n725(x)
- end
-end
-
-def fun_l4_n636(x)
- if (x < 1)
- fun_l5_n644(x)
- else
- fun_l5_n485(x)
- end
-end
-
-def fun_l4_n637(x)
- if (x < 1)
- fun_l5_n528(x)
- else
- fun_l5_n653(x)
- end
-end
-
-def fun_l4_n638(x)
- if (x < 1)
- fun_l5_n924(x)
- else
- fun_l5_n956(x)
- end
-end
-
-def fun_l4_n639(x)
- if (x < 1)
- fun_l5_n654(x)
- else
- fun_l5_n979(x)
- end
-end
-
-def fun_l4_n640(x)
- if (x < 1)
- fun_l5_n287(x)
- else
- fun_l5_n778(x)
- end
-end
-
-def fun_l4_n641(x)
- if (x < 1)
- fun_l5_n197(x)
- else
- fun_l5_n682(x)
- end
-end
-
-def fun_l4_n642(x)
- if (x < 1)
- fun_l5_n559(x)
- else
- fun_l5_n812(x)
- end
-end
-
-def fun_l4_n643(x)
- if (x < 1)
- fun_l5_n970(x)
- else
- fun_l5_n43(x)
- end
-end
-
-def fun_l4_n644(x)
- if (x < 1)
- fun_l5_n222(x)
- else
- fun_l5_n741(x)
- end
-end
-
-def fun_l4_n645(x)
- if (x < 1)
- fun_l5_n788(x)
- else
- fun_l5_n72(x)
- end
-end
-
-def fun_l4_n646(x)
- if (x < 1)
- fun_l5_n877(x)
- else
- fun_l5_n371(x)
- end
-end
-
-def fun_l4_n647(x)
- if (x < 1)
- fun_l5_n710(x)
- else
- fun_l5_n783(x)
- end
-end
-
-def fun_l4_n648(x)
- if (x < 1)
- fun_l5_n957(x)
- else
- fun_l5_n801(x)
- end
-end
-
-def fun_l4_n649(x)
- if (x < 1)
- fun_l5_n127(x)
- else
- fun_l5_n664(x)
- end
-end
-
-def fun_l4_n650(x)
- if (x < 1)
- fun_l5_n176(x)
- else
- fun_l5_n511(x)
- end
-end
-
-def fun_l4_n651(x)
- if (x < 1)
- fun_l5_n830(x)
- else
- fun_l5_n107(x)
- end
-end
-
-def fun_l4_n652(x)
- if (x < 1)
- fun_l5_n207(x)
- else
- fun_l5_n894(x)
- end
-end
-
-def fun_l4_n653(x)
- if (x < 1)
- fun_l5_n611(x)
- else
- fun_l5_n443(x)
- end
-end
-
-def fun_l4_n654(x)
- if (x < 1)
- fun_l5_n953(x)
- else
- fun_l5_n214(x)
- end
-end
-
-def fun_l4_n655(x)
- if (x < 1)
- fun_l5_n109(x)
- else
- fun_l5_n706(x)
- end
-end
-
-def fun_l4_n656(x)
- if (x < 1)
- fun_l5_n312(x)
- else
- fun_l5_n914(x)
- end
-end
-
-def fun_l4_n657(x)
- if (x < 1)
- fun_l5_n774(x)
- else
- fun_l5_n530(x)
- end
-end
-
-def fun_l4_n658(x)
- if (x < 1)
- fun_l5_n79(x)
- else
- fun_l5_n303(x)
- end
-end
-
-def fun_l4_n659(x)
- if (x < 1)
- fun_l5_n718(x)
- else
- fun_l5_n196(x)
- end
-end
-
-def fun_l4_n660(x)
- if (x < 1)
- fun_l5_n196(x)
- else
- fun_l5_n661(x)
- end
-end
-
-def fun_l4_n661(x)
- if (x < 1)
- fun_l5_n654(x)
- else
- fun_l5_n17(x)
- end
-end
-
-def fun_l4_n662(x)
- if (x < 1)
- fun_l5_n413(x)
- else
- fun_l5_n214(x)
- end
-end
-
-def fun_l4_n663(x)
- if (x < 1)
- fun_l5_n491(x)
- else
- fun_l5_n927(x)
- end
-end
-
-def fun_l4_n664(x)
- if (x < 1)
- fun_l5_n671(x)
- else
- fun_l5_n611(x)
- end
-end
-
-def fun_l4_n665(x)
- if (x < 1)
- fun_l5_n153(x)
- else
- fun_l5_n127(x)
- end
-end
-
-def fun_l4_n666(x)
- if (x < 1)
- fun_l5_n661(x)
- else
- fun_l5_n590(x)
- end
-end
-
-def fun_l4_n667(x)
- if (x < 1)
- fun_l5_n539(x)
- else
- fun_l5_n692(x)
- end
-end
-
-def fun_l4_n668(x)
- if (x < 1)
- fun_l5_n390(x)
- else
- fun_l5_n423(x)
- end
-end
-
-def fun_l4_n669(x)
- if (x < 1)
- fun_l5_n615(x)
- else
- fun_l5_n449(x)
- end
-end
-
-def fun_l4_n670(x)
- if (x < 1)
- fun_l5_n49(x)
- else
- fun_l5_n632(x)
- end
-end
-
-def fun_l4_n671(x)
- if (x < 1)
- fun_l5_n891(x)
- else
- fun_l5_n915(x)
- end
-end
-
-def fun_l4_n672(x)
- if (x < 1)
- fun_l5_n257(x)
- else
- fun_l5_n719(x)
- end
-end
-
-def fun_l4_n673(x)
- if (x < 1)
- fun_l5_n620(x)
- else
- fun_l5_n473(x)
- end
-end
-
-def fun_l4_n674(x)
- if (x < 1)
- fun_l5_n422(x)
- else
- fun_l5_n776(x)
- end
-end
-
-def fun_l4_n675(x)
- if (x < 1)
- fun_l5_n973(x)
- else
- fun_l5_n32(x)
- end
-end
-
-def fun_l4_n676(x)
- if (x < 1)
- fun_l5_n434(x)
- else
- fun_l5_n85(x)
- end
-end
-
-def fun_l4_n677(x)
- if (x < 1)
- fun_l5_n430(x)
- else
- fun_l5_n702(x)
- end
-end
-
-def fun_l4_n678(x)
- if (x < 1)
- fun_l5_n698(x)
- else
- fun_l5_n482(x)
- end
-end
-
-def fun_l4_n679(x)
- if (x < 1)
- fun_l5_n365(x)
- else
- fun_l5_n83(x)
- end
-end
-
-def fun_l4_n680(x)
- if (x < 1)
- fun_l5_n397(x)
- else
- fun_l5_n356(x)
- end
-end
-
-def fun_l4_n681(x)
- if (x < 1)
- fun_l5_n48(x)
- else
- fun_l5_n458(x)
- end
-end
-
-def fun_l4_n682(x)
- if (x < 1)
- fun_l5_n205(x)
- else
- fun_l5_n693(x)
- end
-end
-
-def fun_l4_n683(x)
- if (x < 1)
- fun_l5_n971(x)
- else
- fun_l5_n656(x)
- end
-end
-
-def fun_l4_n684(x)
- if (x < 1)
- fun_l5_n147(x)
- else
- fun_l5_n314(x)
- end
-end
-
-def fun_l4_n685(x)
- if (x < 1)
- fun_l5_n347(x)
- else
- fun_l5_n281(x)
- end
-end
-
-def fun_l4_n686(x)
- if (x < 1)
- fun_l5_n259(x)
- else
- fun_l5_n395(x)
- end
-end
-
-def fun_l4_n687(x)
- if (x < 1)
- fun_l5_n899(x)
- else
- fun_l5_n319(x)
- end
-end
-
-def fun_l4_n688(x)
- if (x < 1)
- fun_l5_n293(x)
- else
- fun_l5_n831(x)
- end
-end
-
-def fun_l4_n689(x)
- if (x < 1)
- fun_l5_n88(x)
- else
- fun_l5_n938(x)
- end
-end
-
-def fun_l4_n690(x)
- if (x < 1)
- fun_l5_n72(x)
- else
- fun_l5_n172(x)
- end
-end
-
-def fun_l4_n691(x)
- if (x < 1)
- fun_l5_n330(x)
- else
- fun_l5_n70(x)
- end
-end
-
-def fun_l4_n692(x)
- if (x < 1)
- fun_l5_n901(x)
- else
- fun_l5_n984(x)
- end
-end
-
-def fun_l4_n693(x)
- if (x < 1)
- fun_l5_n528(x)
- else
- fun_l5_n659(x)
- end
-end
-
-def fun_l4_n694(x)
- if (x < 1)
- fun_l5_n522(x)
- else
- fun_l5_n219(x)
- end
-end
-
-def fun_l4_n695(x)
- if (x < 1)
- fun_l5_n568(x)
- else
- fun_l5_n997(x)
- end
-end
-
-def fun_l4_n696(x)
- if (x < 1)
- fun_l5_n248(x)
- else
- fun_l5_n508(x)
- end
-end
-
-def fun_l4_n697(x)
- if (x < 1)
- fun_l5_n71(x)
- else
- fun_l5_n590(x)
- end
-end
-
-def fun_l4_n698(x)
- if (x < 1)
- fun_l5_n398(x)
- else
- fun_l5_n125(x)
- end
-end
-
-def fun_l4_n699(x)
- if (x < 1)
- fun_l5_n405(x)
- else
- fun_l5_n129(x)
- end
-end
-
-def fun_l4_n700(x)
- if (x < 1)
- fun_l5_n818(x)
- else
- fun_l5_n792(x)
- end
-end
-
-def fun_l4_n701(x)
- if (x < 1)
- fun_l5_n530(x)
- else
- fun_l5_n849(x)
- end
-end
-
-def fun_l4_n702(x)
- if (x < 1)
- fun_l5_n640(x)
- else
- fun_l5_n558(x)
- end
-end
-
-def fun_l4_n703(x)
- if (x < 1)
- fun_l5_n717(x)
- else
- fun_l5_n113(x)
- end
-end
-
-def fun_l4_n704(x)
- if (x < 1)
- fun_l5_n139(x)
- else
- fun_l5_n743(x)
- end
-end
-
-def fun_l4_n705(x)
- if (x < 1)
- fun_l5_n720(x)
- else
- fun_l5_n713(x)
- end
-end
-
-def fun_l4_n706(x)
- if (x < 1)
- fun_l5_n774(x)
- else
- fun_l5_n90(x)
- end
-end
-
-def fun_l4_n707(x)
- if (x < 1)
- fun_l5_n579(x)
- else
- fun_l5_n692(x)
- end
-end
-
-def fun_l4_n708(x)
- if (x < 1)
- fun_l5_n448(x)
- else
- fun_l5_n146(x)
- end
-end
-
-def fun_l4_n709(x)
- if (x < 1)
- fun_l5_n249(x)
- else
- fun_l5_n163(x)
- end
-end
-
-def fun_l4_n710(x)
- if (x < 1)
- fun_l5_n694(x)
- else
- fun_l5_n532(x)
- end
-end
-
-def fun_l4_n711(x)
- if (x < 1)
- fun_l5_n739(x)
- else
- fun_l5_n424(x)
- end
-end
-
-def fun_l4_n712(x)
- if (x < 1)
- fun_l5_n700(x)
- else
- fun_l5_n761(x)
- end
-end
-
-def fun_l4_n713(x)
- if (x < 1)
- fun_l5_n403(x)
- else
- fun_l5_n941(x)
- end
-end
-
-def fun_l4_n714(x)
- if (x < 1)
- fun_l5_n724(x)
- else
- fun_l5_n863(x)
- end
-end
-
-def fun_l4_n715(x)
- if (x < 1)
- fun_l5_n392(x)
- else
- fun_l5_n617(x)
- end
-end
-
-def fun_l4_n716(x)
- if (x < 1)
- fun_l5_n76(x)
- else
- fun_l5_n896(x)
- end
-end
-
-def fun_l4_n717(x)
- if (x < 1)
- fun_l5_n355(x)
- else
- fun_l5_n533(x)
- end
-end
-
-def fun_l4_n718(x)
- if (x < 1)
- fun_l5_n225(x)
- else
- fun_l5_n273(x)
- end
-end
-
-def fun_l4_n719(x)
- if (x < 1)
- fun_l5_n828(x)
- else
- fun_l5_n163(x)
- end
-end
-
-def fun_l4_n720(x)
- if (x < 1)
- fun_l5_n309(x)
- else
- fun_l5_n702(x)
- end
-end
-
-def fun_l4_n721(x)
- if (x < 1)
- fun_l5_n959(x)
- else
- fun_l5_n370(x)
- end
-end
-
-def fun_l4_n722(x)
- if (x < 1)
- fun_l5_n640(x)
- else
- fun_l5_n96(x)
- end
-end
-
-def fun_l4_n723(x)
- if (x < 1)
- fun_l5_n590(x)
- else
- fun_l5_n332(x)
- end
-end
-
-def fun_l4_n724(x)
- if (x < 1)
- fun_l5_n14(x)
- else
- fun_l5_n161(x)
- end
-end
-
-def fun_l4_n725(x)
- if (x < 1)
- fun_l5_n871(x)
- else
- fun_l5_n643(x)
- end
-end
-
-def fun_l4_n726(x)
- if (x < 1)
- fun_l5_n885(x)
- else
- fun_l5_n142(x)
- end
-end
-
-def fun_l4_n727(x)
- if (x < 1)
- fun_l5_n994(x)
- else
- fun_l5_n823(x)
- end
-end
-
-def fun_l4_n728(x)
- if (x < 1)
- fun_l5_n825(x)
- else
- fun_l5_n315(x)
- end
-end
-
-def fun_l4_n729(x)
- if (x < 1)
- fun_l5_n312(x)
- else
- fun_l5_n28(x)
- end
-end
-
-def fun_l4_n730(x)
- if (x < 1)
- fun_l5_n545(x)
- else
- fun_l5_n87(x)
- end
-end
-
-def fun_l4_n731(x)
- if (x < 1)
- fun_l5_n604(x)
- else
- fun_l5_n999(x)
- end
-end
-
-def fun_l4_n732(x)
- if (x < 1)
- fun_l5_n21(x)
- else
- fun_l5_n170(x)
- end
-end
-
-def fun_l4_n733(x)
- if (x < 1)
- fun_l5_n662(x)
- else
- fun_l5_n407(x)
- end
-end
-
-def fun_l4_n734(x)
- if (x < 1)
- fun_l5_n808(x)
- else
- fun_l5_n653(x)
- end
-end
-
-def fun_l4_n735(x)
- if (x < 1)
- fun_l5_n665(x)
- else
- fun_l5_n925(x)
- end
-end
-
-def fun_l4_n736(x)
- if (x < 1)
- fun_l5_n186(x)
- else
- fun_l5_n817(x)
- end
-end
-
-def fun_l4_n737(x)
- if (x < 1)
- fun_l5_n360(x)
- else
- fun_l5_n527(x)
- end
-end
-
-def fun_l4_n738(x)
- if (x < 1)
- fun_l5_n278(x)
- else
- fun_l5_n759(x)
- end
-end
-
-def fun_l4_n739(x)
- if (x < 1)
- fun_l5_n710(x)
- else
- fun_l5_n909(x)
- end
-end
-
-def fun_l4_n740(x)
- if (x < 1)
- fun_l5_n770(x)
- else
- fun_l5_n382(x)
- end
-end
-
-def fun_l4_n741(x)
- if (x < 1)
- fun_l5_n969(x)
- else
- fun_l5_n583(x)
- end
-end
-
-def fun_l4_n742(x)
- if (x < 1)
- fun_l5_n653(x)
- else
- fun_l5_n258(x)
- end
-end
-
-def fun_l4_n743(x)
- if (x < 1)
- fun_l5_n966(x)
- else
- fun_l5_n705(x)
- end
-end
-
-def fun_l4_n744(x)
- if (x < 1)
- fun_l5_n454(x)
- else
- fun_l5_n748(x)
- end
-end
-
-def fun_l4_n745(x)
- if (x < 1)
- fun_l5_n595(x)
- else
- fun_l5_n865(x)
- end
-end
-
-def fun_l4_n746(x)
- if (x < 1)
- fun_l5_n593(x)
- else
- fun_l5_n615(x)
- end
-end
-
-def fun_l4_n747(x)
- if (x < 1)
- fun_l5_n638(x)
- else
- fun_l5_n651(x)
- end
-end
-
-def fun_l4_n748(x)
- if (x < 1)
- fun_l5_n331(x)
- else
- fun_l5_n847(x)
- end
-end
-
-def fun_l4_n749(x)
- if (x < 1)
- fun_l5_n59(x)
- else
- fun_l5_n805(x)
- end
-end
-
-def fun_l4_n750(x)
- if (x < 1)
- fun_l5_n269(x)
- else
- fun_l5_n904(x)
- end
-end
-
-def fun_l4_n751(x)
- if (x < 1)
- fun_l5_n292(x)
- else
- fun_l5_n459(x)
- end
-end
-
-def fun_l4_n752(x)
- if (x < 1)
- fun_l5_n581(x)
- else
- fun_l5_n353(x)
- end
-end
-
-def fun_l4_n753(x)
- if (x < 1)
- fun_l5_n785(x)
- else
- fun_l5_n745(x)
- end
-end
-
-def fun_l4_n754(x)
- if (x < 1)
- fun_l5_n317(x)
- else
- fun_l5_n604(x)
- end
-end
-
-def fun_l4_n755(x)
- if (x < 1)
- fun_l5_n208(x)
- else
- fun_l5_n318(x)
- end
-end
-
-def fun_l4_n756(x)
- if (x < 1)
- fun_l5_n986(x)
- else
- fun_l5_n83(x)
- end
-end
-
-def fun_l4_n757(x)
- if (x < 1)
- fun_l5_n946(x)
- else
- fun_l5_n314(x)
- end
-end
-
-def fun_l4_n758(x)
- if (x < 1)
- fun_l5_n571(x)
- else
- fun_l5_n919(x)
- end
-end
-
-def fun_l4_n759(x)
- if (x < 1)
- fun_l5_n129(x)
- else
- fun_l5_n191(x)
- end
-end
-
-def fun_l4_n760(x)
- if (x < 1)
- fun_l5_n838(x)
- else
- fun_l5_n29(x)
- end
-end
-
-def fun_l4_n761(x)
- if (x < 1)
- fun_l5_n250(x)
- else
- fun_l5_n892(x)
- end
-end
-
-def fun_l4_n762(x)
- if (x < 1)
- fun_l5_n588(x)
- else
- fun_l5_n59(x)
- end
-end
-
-def fun_l4_n763(x)
- if (x < 1)
- fun_l5_n831(x)
- else
- fun_l5_n668(x)
- end
-end
-
-def fun_l4_n764(x)
- if (x < 1)
- fun_l5_n337(x)
- else
- fun_l5_n514(x)
- end
-end
-
-def fun_l4_n765(x)
- if (x < 1)
- fun_l5_n56(x)
- else
- fun_l5_n718(x)
- end
-end
-
-def fun_l4_n766(x)
- if (x < 1)
- fun_l5_n189(x)
- else
- fun_l5_n103(x)
- end
-end
-
-def fun_l4_n767(x)
- if (x < 1)
- fun_l5_n395(x)
- else
- fun_l5_n313(x)
- end
-end
-
-def fun_l4_n768(x)
- if (x < 1)
- fun_l5_n388(x)
- else
- fun_l5_n757(x)
- end
-end
-
-def fun_l4_n769(x)
- if (x < 1)
- fun_l5_n933(x)
- else
- fun_l5_n979(x)
- end
-end
-
-def fun_l4_n770(x)
- if (x < 1)
- fun_l5_n765(x)
- else
- fun_l5_n472(x)
- end
-end
-
-def fun_l4_n771(x)
- if (x < 1)
- fun_l5_n381(x)
- else
- fun_l5_n527(x)
- end
-end
-
-def fun_l4_n772(x)
- if (x < 1)
- fun_l5_n314(x)
- else
- fun_l5_n990(x)
- end
-end
-
-def fun_l4_n773(x)
- if (x < 1)
- fun_l5_n457(x)
- else
- fun_l5_n413(x)
- end
-end
-
-def fun_l4_n774(x)
- if (x < 1)
- fun_l5_n245(x)
- else
- fun_l5_n85(x)
- end
-end
-
-def fun_l4_n775(x)
- if (x < 1)
- fun_l5_n432(x)
- else
- fun_l5_n987(x)
- end
-end
-
-def fun_l4_n776(x)
- if (x < 1)
- fun_l5_n588(x)
- else
- fun_l5_n352(x)
- end
-end
-
-def fun_l4_n777(x)
- if (x < 1)
- fun_l5_n414(x)
- else
- fun_l5_n586(x)
- end
-end
-
-def fun_l4_n778(x)
- if (x < 1)
- fun_l5_n290(x)
- else
- fun_l5_n776(x)
- end
-end
-
-def fun_l4_n779(x)
- if (x < 1)
- fun_l5_n324(x)
- else
- fun_l5_n918(x)
- end
-end
-
-def fun_l4_n780(x)
- if (x < 1)
- fun_l5_n928(x)
- else
- fun_l5_n107(x)
- end
-end
-
-def fun_l4_n781(x)
- if (x < 1)
- fun_l5_n244(x)
- else
- fun_l5_n434(x)
- end
-end
-
-def fun_l4_n782(x)
- if (x < 1)
- fun_l5_n828(x)
- else
- fun_l5_n141(x)
- end
-end
-
-def fun_l4_n783(x)
- if (x < 1)
- fun_l5_n634(x)
- else
- fun_l5_n206(x)
- end
-end
-
-def fun_l4_n784(x)
- if (x < 1)
- fun_l5_n387(x)
- else
- fun_l5_n57(x)
- end
-end
-
-def fun_l4_n785(x)
- if (x < 1)
- fun_l5_n731(x)
- else
- fun_l5_n670(x)
- end
-end
-
-def fun_l4_n786(x)
- if (x < 1)
- fun_l5_n173(x)
- else
- fun_l5_n657(x)
- end
-end
-
-def fun_l4_n787(x)
- if (x < 1)
- fun_l5_n661(x)
- else
- fun_l5_n286(x)
- end
-end
-
-def fun_l4_n788(x)
- if (x < 1)
- fun_l5_n364(x)
- else
- fun_l5_n520(x)
- end
-end
-
-def fun_l4_n789(x)
- if (x < 1)
- fun_l5_n545(x)
- else
- fun_l5_n417(x)
- end
-end
-
-def fun_l4_n790(x)
- if (x < 1)
- fun_l5_n270(x)
- else
- fun_l5_n550(x)
- end
-end
-
-def fun_l4_n791(x)
- if (x < 1)
- fun_l5_n873(x)
- else
- fun_l5_n321(x)
- end
-end
-
-def fun_l4_n792(x)
- if (x < 1)
- fun_l5_n243(x)
- else
- fun_l5_n406(x)
- end
-end
-
-def fun_l4_n793(x)
- if (x < 1)
- fun_l5_n229(x)
- else
- fun_l5_n400(x)
- end
-end
-
-def fun_l4_n794(x)
- if (x < 1)
- fun_l5_n670(x)
- else
- fun_l5_n535(x)
- end
-end
-
-def fun_l4_n795(x)
- if (x < 1)
- fun_l5_n911(x)
- else
- fun_l5_n786(x)
- end
-end
-
-def fun_l4_n796(x)
- if (x < 1)
- fun_l5_n247(x)
- else
- fun_l5_n775(x)
- end
-end
-
-def fun_l4_n797(x)
- if (x < 1)
- fun_l5_n944(x)
- else
- fun_l5_n14(x)
- end
-end
-
-def fun_l4_n798(x)
- if (x < 1)
- fun_l5_n57(x)
- else
- fun_l5_n644(x)
- end
-end
-
-def fun_l4_n799(x)
- if (x < 1)
- fun_l5_n583(x)
- else
- fun_l5_n599(x)
- end
-end
-
-def fun_l4_n800(x)
- if (x < 1)
- fun_l5_n685(x)
- else
- fun_l5_n366(x)
- end
-end
-
-def fun_l4_n801(x)
- if (x < 1)
- fun_l5_n671(x)
- else
- fun_l5_n386(x)
- end
-end
-
-def fun_l4_n802(x)
- if (x < 1)
- fun_l5_n19(x)
- else
- fun_l5_n403(x)
- end
-end
-
-def fun_l4_n803(x)
- if (x < 1)
- fun_l5_n952(x)
- else
- fun_l5_n237(x)
- end
-end
-
-def fun_l4_n804(x)
- if (x < 1)
- fun_l5_n929(x)
- else
- fun_l5_n737(x)
- end
-end
-
-def fun_l4_n805(x)
- if (x < 1)
- fun_l5_n197(x)
- else
- fun_l5_n322(x)
- end
-end
-
-def fun_l4_n806(x)
- if (x < 1)
- fun_l5_n966(x)
- else
- fun_l5_n531(x)
- end
-end
-
-def fun_l4_n807(x)
- if (x < 1)
- fun_l5_n928(x)
- else
- fun_l5_n802(x)
- end
-end
-
-def fun_l4_n808(x)
- if (x < 1)
- fun_l5_n34(x)
- else
- fun_l5_n107(x)
- end
-end
-
-def fun_l4_n809(x)
- if (x < 1)
- fun_l5_n615(x)
- else
- fun_l5_n628(x)
- end
-end
-
-def fun_l4_n810(x)
- if (x < 1)
- fun_l5_n187(x)
- else
- fun_l5_n424(x)
- end
-end
-
-def fun_l4_n811(x)
- if (x < 1)
- fun_l5_n189(x)
- else
- fun_l5_n639(x)
- end
-end
-
-def fun_l4_n812(x)
- if (x < 1)
- fun_l5_n177(x)
- else
- fun_l5_n580(x)
- end
-end
-
-def fun_l4_n813(x)
- if (x < 1)
- fun_l5_n699(x)
- else
- fun_l5_n595(x)
- end
-end
-
-def fun_l4_n814(x)
- if (x < 1)
- fun_l5_n44(x)
- else
- fun_l5_n966(x)
- end
-end
-
-def fun_l4_n815(x)
- if (x < 1)
- fun_l5_n883(x)
- else
- fun_l5_n580(x)
- end
-end
-
-def fun_l4_n816(x)
- if (x < 1)
- fun_l5_n306(x)
- else
- fun_l5_n564(x)
- end
-end
-
-def fun_l4_n817(x)
- if (x < 1)
- fun_l5_n337(x)
- else
- fun_l5_n912(x)
- end
-end
-
-def fun_l4_n818(x)
- if (x < 1)
- fun_l5_n36(x)
- else
- fun_l5_n164(x)
- end
-end
-
-def fun_l4_n819(x)
- if (x < 1)
- fun_l5_n987(x)
- else
- fun_l5_n38(x)
- end
-end
-
-def fun_l4_n820(x)
- if (x < 1)
- fun_l5_n656(x)
- else
- fun_l5_n647(x)
- end
-end
-
-def fun_l4_n821(x)
- if (x < 1)
- fun_l5_n364(x)
- else
- fun_l5_n838(x)
- end
-end
-
-def fun_l4_n822(x)
- if (x < 1)
- fun_l5_n301(x)
- else
- fun_l5_n850(x)
- end
-end
-
-def fun_l4_n823(x)
- if (x < 1)
- fun_l5_n191(x)
- else
- fun_l5_n812(x)
- end
-end
-
-def fun_l4_n824(x)
- if (x < 1)
- fun_l5_n148(x)
- else
- fun_l5_n332(x)
- end
-end
-
-def fun_l4_n825(x)
- if (x < 1)
- fun_l5_n315(x)
- else
- fun_l5_n763(x)
- end
-end
-
-def fun_l4_n826(x)
- if (x < 1)
- fun_l5_n612(x)
- else
- fun_l5_n993(x)
- end
-end
-
-def fun_l4_n827(x)
- if (x < 1)
- fun_l5_n229(x)
- else
- fun_l5_n388(x)
- end
-end
-
-def fun_l4_n828(x)
- if (x < 1)
- fun_l5_n131(x)
- else
- fun_l5_n283(x)
- end
-end
-
-def fun_l4_n829(x)
- if (x < 1)
- fun_l5_n59(x)
- else
- fun_l5_n280(x)
- end
-end
-
-def fun_l4_n830(x)
- if (x < 1)
- fun_l5_n993(x)
- else
- fun_l5_n160(x)
- end
-end
-
-def fun_l4_n831(x)
- if (x < 1)
- fun_l5_n394(x)
- else
- fun_l5_n528(x)
- end
-end
-
-def fun_l4_n832(x)
- if (x < 1)
- fun_l5_n376(x)
- else
- fun_l5_n201(x)
- end
-end
-
-def fun_l4_n833(x)
- if (x < 1)
- fun_l5_n890(x)
- else
- fun_l5_n867(x)
- end
-end
-
-def fun_l4_n834(x)
- if (x < 1)
- fun_l5_n320(x)
- else
- fun_l5_n237(x)
- end
-end
-
-def fun_l4_n835(x)
- if (x < 1)
- fun_l5_n771(x)
- else
- fun_l5_n83(x)
- end
-end
-
-def fun_l4_n836(x)
- if (x < 1)
- fun_l5_n751(x)
- else
- fun_l5_n2(x)
- end
-end
-
-def fun_l4_n837(x)
- if (x < 1)
- fun_l5_n825(x)
- else
- fun_l5_n930(x)
- end
-end
-
-def fun_l4_n838(x)
- if (x < 1)
- fun_l5_n968(x)
- else
- fun_l5_n136(x)
- end
-end
-
-def fun_l4_n839(x)
- if (x < 1)
- fun_l5_n529(x)
- else
- fun_l5_n626(x)
- end
-end
-
-def fun_l4_n840(x)
- if (x < 1)
- fun_l5_n228(x)
- else
- fun_l5_n915(x)
- end
-end
-
-def fun_l4_n841(x)
- if (x < 1)
- fun_l5_n270(x)
- else
- fun_l5_n813(x)
- end
-end
-
-def fun_l4_n842(x)
- if (x < 1)
- fun_l5_n392(x)
- else
- fun_l5_n60(x)
- end
-end
-
-def fun_l4_n843(x)
- if (x < 1)
- fun_l5_n470(x)
- else
- fun_l5_n699(x)
- end
-end
-
-def fun_l4_n844(x)
- if (x < 1)
- fun_l5_n68(x)
- else
- fun_l5_n163(x)
- end
-end
-
-def fun_l4_n845(x)
- if (x < 1)
- fun_l5_n469(x)
- else
- fun_l5_n472(x)
- end
-end
-
-def fun_l4_n846(x)
- if (x < 1)
- fun_l5_n640(x)
- else
- fun_l5_n311(x)
- end
-end
-
-def fun_l4_n847(x)
- if (x < 1)
- fun_l5_n968(x)
- else
- fun_l5_n414(x)
- end
-end
-
-def fun_l4_n848(x)
- if (x < 1)
- fun_l5_n111(x)
- else
- fun_l5_n340(x)
- end
-end
-
-def fun_l4_n849(x)
- if (x < 1)
- fun_l5_n906(x)
- else
- fun_l5_n278(x)
- end
-end
-
-def fun_l4_n850(x)
- if (x < 1)
- fun_l5_n353(x)
- else
- fun_l5_n590(x)
- end
-end
-
-def fun_l4_n851(x)
- if (x < 1)
- fun_l5_n218(x)
- else
- fun_l5_n341(x)
- end
-end
-
-def fun_l4_n852(x)
- if (x < 1)
- fun_l5_n527(x)
- else
- fun_l5_n273(x)
- end
-end
-
-def fun_l4_n853(x)
- if (x < 1)
- fun_l5_n589(x)
- else
- fun_l5_n417(x)
- end
-end
-
-def fun_l4_n854(x)
- if (x < 1)
- fun_l5_n411(x)
- else
- fun_l5_n848(x)
- end
-end
-
-def fun_l4_n855(x)
- if (x < 1)
- fun_l5_n607(x)
- else
- fun_l5_n65(x)
- end
-end
-
-def fun_l4_n856(x)
- if (x < 1)
- fun_l5_n240(x)
- else
- fun_l5_n24(x)
- end
-end
-
-def fun_l4_n857(x)
- if (x < 1)
- fun_l5_n165(x)
- else
- fun_l5_n362(x)
- end
-end
-
-def fun_l4_n858(x)
- if (x < 1)
- fun_l5_n559(x)
- else
- fun_l5_n253(x)
- end
-end
-
-def fun_l4_n859(x)
- if (x < 1)
- fun_l5_n834(x)
- else
- fun_l5_n217(x)
- end
-end
-
-def fun_l4_n860(x)
- if (x < 1)
- fun_l5_n891(x)
- else
- fun_l5_n369(x)
- end
-end
-
-def fun_l4_n861(x)
- if (x < 1)
- fun_l5_n676(x)
- else
- fun_l5_n614(x)
- end
-end
-
-def fun_l4_n862(x)
- if (x < 1)
- fun_l5_n527(x)
- else
- fun_l5_n318(x)
- end
-end
-
-def fun_l4_n863(x)
- if (x < 1)
- fun_l5_n991(x)
- else
- fun_l5_n997(x)
- end
-end
-
-def fun_l4_n864(x)
- if (x < 1)
- fun_l5_n842(x)
- else
- fun_l5_n370(x)
- end
-end
-
-def fun_l4_n865(x)
- if (x < 1)
- fun_l5_n623(x)
- else
- fun_l5_n741(x)
- end
-end
-
-def fun_l4_n866(x)
- if (x < 1)
- fun_l5_n58(x)
- else
- fun_l5_n953(x)
- end
-end
-
-def fun_l4_n867(x)
- if (x < 1)
- fun_l5_n269(x)
- else
- fun_l5_n341(x)
- end
-end
-
-def fun_l4_n868(x)
- if (x < 1)
- fun_l5_n814(x)
- else
- fun_l5_n849(x)
- end
-end
-
-def fun_l4_n869(x)
- if (x < 1)
- fun_l5_n163(x)
- else
- fun_l5_n246(x)
- end
-end
-
-def fun_l4_n870(x)
- if (x < 1)
- fun_l5_n739(x)
- else
- fun_l5_n524(x)
- end
-end
-
-def fun_l4_n871(x)
- if (x < 1)
- fun_l5_n589(x)
- else
- fun_l5_n592(x)
- end
-end
-
-def fun_l4_n872(x)
- if (x < 1)
- fun_l5_n922(x)
- else
- fun_l5_n401(x)
- end
-end
-
-def fun_l4_n873(x)
- if (x < 1)
- fun_l5_n600(x)
- else
- fun_l5_n184(x)
- end
-end
-
-def fun_l4_n874(x)
- if (x < 1)
- fun_l5_n424(x)
- else
- fun_l5_n627(x)
- end
-end
-
-def fun_l4_n875(x)
- if (x < 1)
- fun_l5_n48(x)
- else
- fun_l5_n127(x)
- end
-end
-
-def fun_l4_n876(x)
- if (x < 1)
- fun_l5_n687(x)
- else
- fun_l5_n451(x)
- end
-end
-
-def fun_l4_n877(x)
- if (x < 1)
- fun_l5_n849(x)
- else
- fun_l5_n480(x)
- end
-end
-
-def fun_l4_n878(x)
- if (x < 1)
- fun_l5_n801(x)
- else
- fun_l5_n60(x)
- end
-end
-
-def fun_l4_n879(x)
- if (x < 1)
- fun_l5_n964(x)
- else
- fun_l5_n790(x)
- end
-end
-
-def fun_l4_n880(x)
- if (x < 1)
- fun_l5_n483(x)
- else
- fun_l5_n817(x)
- end
-end
-
-def fun_l4_n881(x)
- if (x < 1)
- fun_l5_n91(x)
- else
- fun_l5_n776(x)
- end
-end
-
-def fun_l4_n882(x)
- if (x < 1)
- fun_l5_n8(x)
- else
- fun_l5_n726(x)
- end
-end
-
-def fun_l4_n883(x)
- if (x < 1)
- fun_l5_n63(x)
- else
- fun_l5_n570(x)
- end
-end
-
-def fun_l4_n884(x)
- if (x < 1)
- fun_l5_n691(x)
- else
- fun_l5_n117(x)
- end
-end
-
-def fun_l4_n885(x)
- if (x < 1)
- fun_l5_n262(x)
- else
- fun_l5_n38(x)
- end
-end
-
-def fun_l4_n886(x)
- if (x < 1)
- fun_l5_n678(x)
- else
- fun_l5_n108(x)
- end
-end
-
-def fun_l4_n887(x)
- if (x < 1)
- fun_l5_n775(x)
- else
- fun_l5_n751(x)
- end
-end
-
-def fun_l4_n888(x)
- if (x < 1)
- fun_l5_n917(x)
- else
- fun_l5_n769(x)
- end
-end
-
-def fun_l4_n889(x)
- if (x < 1)
- fun_l5_n191(x)
- else
- fun_l5_n662(x)
- end
-end
-
-def fun_l4_n890(x)
- if (x < 1)
- fun_l5_n34(x)
- else
- fun_l5_n806(x)
- end
-end
-
-def fun_l4_n891(x)
- if (x < 1)
- fun_l5_n705(x)
- else
- fun_l5_n198(x)
- end
-end
-
-def fun_l4_n892(x)
- if (x < 1)
- fun_l5_n647(x)
- else
- fun_l5_n0(x)
- end
-end
-
-def fun_l4_n893(x)
- if (x < 1)
- fun_l5_n336(x)
- else
- fun_l5_n795(x)
- end
-end
-
-def fun_l4_n894(x)
- if (x < 1)
- fun_l5_n984(x)
- else
- fun_l5_n751(x)
- end
-end
-
-def fun_l4_n895(x)
- if (x < 1)
- fun_l5_n373(x)
- else
- fun_l5_n12(x)
- end
-end
-
-def fun_l4_n896(x)
- if (x < 1)
- fun_l5_n672(x)
- else
- fun_l5_n17(x)
- end
-end
-
-def fun_l4_n897(x)
- if (x < 1)
- fun_l5_n67(x)
- else
- fun_l5_n183(x)
- end
-end
-
-def fun_l4_n898(x)
- if (x < 1)
- fun_l5_n557(x)
- else
- fun_l5_n43(x)
- end
-end
-
-def fun_l4_n899(x)
- if (x < 1)
- fun_l5_n210(x)
- else
- fun_l5_n904(x)
- end
-end
-
-def fun_l4_n900(x)
- if (x < 1)
- fun_l5_n665(x)
- else
- fun_l5_n173(x)
- end
-end
-
-def fun_l4_n901(x)
- if (x < 1)
- fun_l5_n268(x)
- else
- fun_l5_n907(x)
- end
-end
-
-def fun_l4_n902(x)
- if (x < 1)
- fun_l5_n19(x)
- else
- fun_l5_n145(x)
- end
-end
-
-def fun_l4_n903(x)
- if (x < 1)
- fun_l5_n158(x)
- else
- fun_l5_n261(x)
- end
-end
-
-def fun_l4_n904(x)
- if (x < 1)
- fun_l5_n677(x)
- else
- fun_l5_n880(x)
- end
-end
-
-def fun_l4_n905(x)
- if (x < 1)
- fun_l5_n262(x)
- else
- fun_l5_n790(x)
- end
-end
-
-def fun_l4_n906(x)
- if (x < 1)
- fun_l5_n775(x)
- else
- fun_l5_n785(x)
- end
-end
-
-def fun_l4_n907(x)
- if (x < 1)
- fun_l5_n629(x)
- else
- fun_l5_n312(x)
- end
-end
-
-def fun_l4_n908(x)
- if (x < 1)
- fun_l5_n84(x)
- else
- fun_l5_n605(x)
- end
-end
-
-def fun_l4_n909(x)
- if (x < 1)
- fun_l5_n346(x)
- else
- fun_l5_n245(x)
- end
-end
-
-def fun_l4_n910(x)
- if (x < 1)
- fun_l5_n768(x)
- else
- fun_l5_n47(x)
- end
-end
-
-def fun_l4_n911(x)
- if (x < 1)
- fun_l5_n48(x)
- else
- fun_l5_n406(x)
- end
-end
-
-def fun_l4_n912(x)
- if (x < 1)
- fun_l5_n493(x)
- else
- fun_l5_n608(x)
- end
-end
-
-def fun_l4_n913(x)
- if (x < 1)
- fun_l5_n456(x)
- else
- fun_l5_n176(x)
- end
-end
-
-def fun_l4_n914(x)
- if (x < 1)
- fun_l5_n201(x)
- else
- fun_l5_n233(x)
- end
-end
-
-def fun_l4_n915(x)
- if (x < 1)
- fun_l5_n910(x)
- else
- fun_l5_n790(x)
- end
-end
-
-def fun_l4_n916(x)
- if (x < 1)
- fun_l5_n734(x)
- else
- fun_l5_n685(x)
- end
-end
-
-def fun_l4_n917(x)
- if (x < 1)
- fun_l5_n132(x)
- else
- fun_l5_n112(x)
- end
-end
-
-def fun_l4_n918(x)
- if (x < 1)
- fun_l5_n897(x)
- else
- fun_l5_n196(x)
- end
-end
-
-def fun_l4_n919(x)
- if (x < 1)
- fun_l5_n395(x)
- else
- fun_l5_n186(x)
- end
-end
-
-def fun_l4_n920(x)
- if (x < 1)
- fun_l5_n19(x)
- else
- fun_l5_n810(x)
- end
-end
-
-def fun_l4_n921(x)
- if (x < 1)
- fun_l5_n546(x)
- else
- fun_l5_n34(x)
- end
-end
-
-def fun_l4_n922(x)
- if (x < 1)
- fun_l5_n863(x)
- else
- fun_l5_n928(x)
- end
-end
-
-def fun_l4_n923(x)
- if (x < 1)
- fun_l5_n485(x)
- else
- fun_l5_n182(x)
- end
-end
-
-def fun_l4_n924(x)
- if (x < 1)
- fun_l5_n303(x)
- else
- fun_l5_n17(x)
- end
-end
-
-def fun_l4_n925(x)
- if (x < 1)
- fun_l5_n78(x)
- else
- fun_l5_n816(x)
- end
-end
-
-def fun_l4_n926(x)
- if (x < 1)
- fun_l5_n797(x)
- else
- fun_l5_n761(x)
- end
-end
-
-def fun_l4_n927(x)
- if (x < 1)
- fun_l5_n975(x)
- else
- fun_l5_n220(x)
- end
-end
-
-def fun_l4_n928(x)
- if (x < 1)
- fun_l5_n213(x)
- else
- fun_l5_n815(x)
- end
-end
-
-def fun_l4_n929(x)
- if (x < 1)
- fun_l5_n280(x)
- else
- fun_l5_n551(x)
- end
-end
-
-def fun_l4_n930(x)
- if (x < 1)
- fun_l5_n631(x)
- else
- fun_l5_n629(x)
- end
-end
-
-def fun_l4_n931(x)
- if (x < 1)
- fun_l5_n60(x)
- else
- fun_l5_n332(x)
- end
-end
-
-def fun_l4_n932(x)
- if (x < 1)
- fun_l5_n336(x)
- else
- fun_l5_n733(x)
- end
-end
-
-def fun_l4_n933(x)
- if (x < 1)
- fun_l5_n94(x)
- else
- fun_l5_n48(x)
- end
-end
-
-def fun_l4_n934(x)
- if (x < 1)
- fun_l5_n527(x)
- else
- fun_l5_n108(x)
- end
-end
-
-def fun_l4_n935(x)
- if (x < 1)
- fun_l5_n994(x)
- else
- fun_l5_n95(x)
- end
-end
-
-def fun_l4_n936(x)
- if (x < 1)
- fun_l5_n631(x)
- else
- fun_l5_n310(x)
- end
-end
-
-def fun_l4_n937(x)
- if (x < 1)
- fun_l5_n851(x)
- else
- fun_l5_n380(x)
- end
-end
-
-def fun_l4_n938(x)
- if (x < 1)
- fun_l5_n256(x)
- else
- fun_l5_n231(x)
- end
-end
-
-def fun_l4_n939(x)
- if (x < 1)
- fun_l5_n686(x)
- else
- fun_l5_n557(x)
- end
-end
-
-def fun_l4_n940(x)
- if (x < 1)
- fun_l5_n311(x)
- else
- fun_l5_n611(x)
- end
-end
-
-def fun_l4_n941(x)
- if (x < 1)
- fun_l5_n770(x)
- else
- fun_l5_n306(x)
- end
-end
-
-def fun_l4_n942(x)
- if (x < 1)
- fun_l5_n649(x)
- else
- fun_l5_n60(x)
- end
-end
-
-def fun_l4_n943(x)
- if (x < 1)
- fun_l5_n935(x)
- else
- fun_l5_n991(x)
- end
-end
-
-def fun_l4_n944(x)
- if (x < 1)
- fun_l5_n851(x)
- else
- fun_l5_n131(x)
- end
-end
-
-def fun_l4_n945(x)
- if (x < 1)
- fun_l5_n422(x)
- else
- fun_l5_n309(x)
- end
-end
-
-def fun_l4_n946(x)
- if (x < 1)
- fun_l5_n906(x)
- else
- fun_l5_n798(x)
- end
-end
-
-def fun_l4_n947(x)
- if (x < 1)
- fun_l5_n817(x)
- else
- fun_l5_n122(x)
- end
-end
-
-def fun_l4_n948(x)
- if (x < 1)
- fun_l5_n233(x)
- else
- fun_l5_n600(x)
- end
-end
-
-def fun_l4_n949(x)
- if (x < 1)
- fun_l5_n908(x)
- else
- fun_l5_n332(x)
- end
-end
-
-def fun_l4_n950(x)
- if (x < 1)
- fun_l5_n71(x)
- else
- fun_l5_n893(x)
- end
-end
-
-def fun_l4_n951(x)
- if (x < 1)
- fun_l5_n281(x)
- else
- fun_l5_n281(x)
- end
-end
-
-def fun_l4_n952(x)
- if (x < 1)
- fun_l5_n312(x)
- else
- fun_l5_n164(x)
- end
-end
-
-def fun_l4_n953(x)
- if (x < 1)
- fun_l5_n292(x)
- else
- fun_l5_n993(x)
- end
-end
-
-def fun_l4_n954(x)
- if (x < 1)
- fun_l5_n271(x)
- else
- fun_l5_n635(x)
- end
-end
-
-def fun_l4_n955(x)
- if (x < 1)
- fun_l5_n10(x)
- else
- fun_l5_n202(x)
- end
-end
-
-def fun_l4_n956(x)
- if (x < 1)
- fun_l5_n574(x)
- else
- fun_l5_n29(x)
- end
-end
-
-def fun_l4_n957(x)
- if (x < 1)
- fun_l5_n154(x)
- else
- fun_l5_n96(x)
- end
-end
-
-def fun_l4_n958(x)
- if (x < 1)
- fun_l5_n287(x)
- else
- fun_l5_n509(x)
- end
-end
-
-def fun_l4_n959(x)
- if (x < 1)
- fun_l5_n400(x)
- else
- fun_l5_n195(x)
- end
-end
-
-def fun_l4_n960(x)
- if (x < 1)
- fun_l5_n94(x)
- else
- fun_l5_n165(x)
- end
-end
-
-def fun_l4_n961(x)
- if (x < 1)
- fun_l5_n276(x)
- else
- fun_l5_n935(x)
- end
-end
-
-def fun_l4_n962(x)
- if (x < 1)
- fun_l5_n504(x)
- else
- fun_l5_n480(x)
- end
-end
-
-def fun_l4_n963(x)
- if (x < 1)
- fun_l5_n152(x)
- else
- fun_l5_n397(x)
- end
-end
-
-def fun_l4_n964(x)
- if (x < 1)
- fun_l5_n303(x)
- else
- fun_l5_n481(x)
- end
-end
-
-def fun_l4_n965(x)
- if (x < 1)
- fun_l5_n882(x)
- else
- fun_l5_n116(x)
- end
-end
-
-def fun_l4_n966(x)
- if (x < 1)
- fun_l5_n329(x)
- else
- fun_l5_n484(x)
- end
-end
-
-def fun_l4_n967(x)
- if (x < 1)
- fun_l5_n369(x)
- else
- fun_l5_n680(x)
- end
-end
-
-def fun_l4_n968(x)
- if (x < 1)
- fun_l5_n30(x)
- else
- fun_l5_n653(x)
- end
-end
-
-def fun_l4_n969(x)
- if (x < 1)
- fun_l5_n292(x)
- else
- fun_l5_n793(x)
- end
-end
-
-def fun_l4_n970(x)
- if (x < 1)
- fun_l5_n796(x)
- else
- fun_l5_n387(x)
- end
-end
-
-def fun_l4_n971(x)
- if (x < 1)
- fun_l5_n735(x)
- else
- fun_l5_n985(x)
- end
-end
-
-def fun_l4_n972(x)
- if (x < 1)
- fun_l5_n925(x)
- else
- fun_l5_n689(x)
- end
-end
-
-def fun_l4_n973(x)
- if (x < 1)
- fun_l5_n154(x)
- else
- fun_l5_n998(x)
- end
-end
-
-def fun_l4_n974(x)
- if (x < 1)
- fun_l5_n708(x)
- else
- fun_l5_n253(x)
- end
-end
-
-def fun_l4_n975(x)
- if (x < 1)
- fun_l5_n716(x)
- else
- fun_l5_n958(x)
- end
-end
-
-def fun_l4_n976(x)
- if (x < 1)
- fun_l5_n488(x)
- else
- fun_l5_n299(x)
- end
-end
-
-def fun_l4_n977(x)
- if (x < 1)
- fun_l5_n872(x)
- else
- fun_l5_n276(x)
- end
-end
-
-def fun_l4_n978(x)
- if (x < 1)
- fun_l5_n219(x)
- else
- fun_l5_n76(x)
- end
-end
-
-def fun_l4_n979(x)
- if (x < 1)
- fun_l5_n937(x)
- else
- fun_l5_n988(x)
- end
-end
-
-def fun_l4_n980(x)
- if (x < 1)
- fun_l5_n681(x)
- else
- fun_l5_n264(x)
- end
-end
-
-def fun_l4_n981(x)
- if (x < 1)
- fun_l5_n630(x)
- else
- fun_l5_n18(x)
- end
-end
-
-def fun_l4_n982(x)
- if (x < 1)
- fun_l5_n910(x)
- else
- fun_l5_n97(x)
- end
-end
-
-def fun_l4_n983(x)
- if (x < 1)
- fun_l5_n551(x)
- else
- fun_l5_n429(x)
- end
-end
-
-def fun_l4_n984(x)
- if (x < 1)
- fun_l5_n304(x)
- else
- fun_l5_n192(x)
- end
-end
-
-def fun_l4_n985(x)
- if (x < 1)
- fun_l5_n696(x)
- else
- fun_l5_n124(x)
- end
-end
-
-def fun_l4_n986(x)
- if (x < 1)
- fun_l5_n603(x)
- else
- fun_l5_n967(x)
- end
-end
-
-def fun_l4_n987(x)
- if (x < 1)
- fun_l5_n317(x)
- else
- fun_l5_n785(x)
- end
-end
-
-def fun_l4_n988(x)
- if (x < 1)
- fun_l5_n762(x)
- else
- fun_l5_n999(x)
- end
-end
-
-def fun_l4_n989(x)
- if (x < 1)
- fun_l5_n61(x)
- else
- fun_l5_n474(x)
- end
-end
-
-def fun_l4_n990(x)
- if (x < 1)
- fun_l5_n465(x)
- else
- fun_l5_n878(x)
- end
-end
-
-def fun_l4_n991(x)
- if (x < 1)
- fun_l5_n907(x)
- else
- fun_l5_n259(x)
- end
-end
-
-def fun_l4_n992(x)
- if (x < 1)
- fun_l5_n594(x)
- else
- fun_l5_n378(x)
- end
-end
-
-def fun_l4_n993(x)
- if (x < 1)
- fun_l5_n202(x)
- else
- fun_l5_n490(x)
- end
-end
-
-def fun_l4_n994(x)
- if (x < 1)
- fun_l5_n105(x)
- else
- fun_l5_n675(x)
- end
-end
-
-def fun_l4_n995(x)
- if (x < 1)
- fun_l5_n99(x)
- else
- fun_l5_n21(x)
- end
-end
-
-def fun_l4_n996(x)
- if (x < 1)
- fun_l5_n831(x)
- else
- fun_l5_n692(x)
- end
-end
-
-def fun_l4_n997(x)
- if (x < 1)
- fun_l5_n186(x)
- else
- fun_l5_n427(x)
- end
-end
-
-def fun_l4_n998(x)
- if (x < 1)
- fun_l5_n597(x)
- else
- fun_l5_n978(x)
- end
-end
-
-def fun_l4_n999(x)
- if (x < 1)
- fun_l5_n537(x)
- else
- fun_l5_n952(x)
- end
-end
-
-def fun_l5_n0(x)
- if (x < 1)
- fun_l6_n104(x)
- else
- fun_l6_n249(x)
- end
-end
-
-def fun_l5_n1(x)
- if (x < 1)
- fun_l6_n260(x)
- else
- fun_l6_n782(x)
- end
-end
-
-def fun_l5_n2(x)
- if (x < 1)
- fun_l6_n974(x)
- else
- fun_l6_n301(x)
- end
-end
-
-def fun_l5_n3(x)
- if (x < 1)
- fun_l6_n883(x)
- else
- fun_l6_n149(x)
- end
-end
-
-def fun_l5_n4(x)
- if (x < 1)
- fun_l6_n134(x)
- else
- fun_l6_n111(x)
- end
-end
-
-def fun_l5_n5(x)
- if (x < 1)
- fun_l6_n573(x)
- else
- fun_l6_n273(x)
- end
-end
-
-def fun_l5_n6(x)
- if (x < 1)
- fun_l6_n221(x)
- else
- fun_l6_n843(x)
- end
-end
-
-def fun_l5_n7(x)
- if (x < 1)
- fun_l6_n572(x)
- else
- fun_l6_n435(x)
- end
-end
-
-def fun_l5_n8(x)
- if (x < 1)
- fun_l6_n43(x)
- else
- fun_l6_n598(x)
- end
-end
-
-def fun_l5_n9(x)
- if (x < 1)
- fun_l6_n352(x)
- else
- fun_l6_n894(x)
- end
-end
-
-def fun_l5_n10(x)
- if (x < 1)
- fun_l6_n161(x)
- else
- fun_l6_n654(x)
- end
-end
-
-def fun_l5_n11(x)
- if (x < 1)
- fun_l6_n432(x)
- else
- fun_l6_n825(x)
- end
-end
-
-def fun_l5_n12(x)
- if (x < 1)
- fun_l6_n863(x)
- else
- fun_l6_n940(x)
- end
-end
-
-def fun_l5_n13(x)
- if (x < 1)
- fun_l6_n478(x)
- else
- fun_l6_n193(x)
- end
-end
-
-def fun_l5_n14(x)
- if (x < 1)
- fun_l6_n327(x)
- else
- fun_l6_n808(x)
- end
-end
-
-def fun_l5_n15(x)
- if (x < 1)
- fun_l6_n86(x)
- else
- fun_l6_n951(x)
- end
-end
-
-def fun_l5_n16(x)
- if (x < 1)
- fun_l6_n492(x)
- else
- fun_l6_n704(x)
- end
-end
-
-def fun_l5_n17(x)
- if (x < 1)
- fun_l6_n196(x)
- else
- fun_l6_n970(x)
- end
-end
-
-def fun_l5_n18(x)
- if (x < 1)
- fun_l6_n325(x)
- else
- fun_l6_n30(x)
- end
-end
-
-def fun_l5_n19(x)
- if (x < 1)
- fun_l6_n559(x)
- else
- fun_l6_n269(x)
- end
-end
-
-def fun_l5_n20(x)
- if (x < 1)
- fun_l6_n716(x)
- else
- fun_l6_n783(x)
- end
-end
-
-def fun_l5_n21(x)
- if (x < 1)
- fun_l6_n978(x)
- else
- fun_l6_n306(x)
- end
-end
-
-def fun_l5_n22(x)
- if (x < 1)
- fun_l6_n220(x)
- else
- fun_l6_n823(x)
- end
-end
-
-def fun_l5_n23(x)
- if (x < 1)
- fun_l6_n675(x)
- else
- fun_l6_n684(x)
- end
-end
-
-def fun_l5_n24(x)
- if (x < 1)
- fun_l6_n851(x)
- else
- fun_l6_n450(x)
- end
-end
-
-def fun_l5_n25(x)
- if (x < 1)
- fun_l6_n745(x)
- else
- fun_l6_n370(x)
- end
-end
-
-def fun_l5_n26(x)
- if (x < 1)
- fun_l6_n431(x)
- else
- fun_l6_n130(x)
- end
-end
-
-def fun_l5_n27(x)
- if (x < 1)
- fun_l6_n105(x)
- else
- fun_l6_n205(x)
- end
-end
-
-def fun_l5_n28(x)
- if (x < 1)
- fun_l6_n718(x)
- else
- fun_l6_n742(x)
- end
-end
-
-def fun_l5_n29(x)
- if (x < 1)
- fun_l6_n977(x)
- else
- fun_l6_n63(x)
- end
-end
-
-def fun_l5_n30(x)
- if (x < 1)
- fun_l6_n902(x)
- else
- fun_l6_n471(x)
- end
-end
-
-def fun_l5_n31(x)
- if (x < 1)
- fun_l6_n76(x)
- else
- fun_l6_n960(x)
- end
-end
-
-def fun_l5_n32(x)
- if (x < 1)
- fun_l6_n75(x)
- else
- fun_l6_n640(x)
- end
-end
-
-def fun_l5_n33(x)
- if (x < 1)
- fun_l6_n631(x)
- else
- fun_l6_n769(x)
- end
-end
-
-def fun_l5_n34(x)
- if (x < 1)
- fun_l6_n201(x)
- else
- fun_l6_n771(x)
- end
-end
-
-def fun_l5_n35(x)
- if (x < 1)
- fun_l6_n734(x)
- else
- fun_l6_n370(x)
- end
-end
-
-def fun_l5_n36(x)
- if (x < 1)
- fun_l6_n490(x)
- else
- fun_l6_n994(x)
- end
-end
-
-def fun_l5_n37(x)
- if (x < 1)
- fun_l6_n566(x)
- else
- fun_l6_n392(x)
- end
-end
-
-def fun_l5_n38(x)
- if (x < 1)
- fun_l6_n120(x)
- else
- fun_l6_n774(x)
- end
-end
-
-def fun_l5_n39(x)
- if (x < 1)
- fun_l6_n402(x)
- else
- fun_l6_n572(x)
- end
-end
-
-def fun_l5_n40(x)
- if (x < 1)
- fun_l6_n911(x)
- else
- fun_l6_n968(x)
- end
-end
-
-def fun_l5_n41(x)
- if (x < 1)
- fun_l6_n200(x)
- else
- fun_l6_n656(x)
- end
-end
-
-def fun_l5_n42(x)
- if (x < 1)
- fun_l6_n59(x)
- else
- fun_l6_n426(x)
- end
-end
-
-def fun_l5_n43(x)
- if (x < 1)
- fun_l6_n650(x)
- else
- fun_l6_n932(x)
- end
-end
-
-def fun_l5_n44(x)
- if (x < 1)
- fun_l6_n365(x)
- else
- fun_l6_n755(x)
- end
-end
-
-def fun_l5_n45(x)
- if (x < 1)
- fun_l6_n738(x)
- else
- fun_l6_n432(x)
- end
-end
-
-def fun_l5_n46(x)
- if (x < 1)
- fun_l6_n82(x)
- else
- fun_l6_n484(x)
- end
-end
-
-def fun_l5_n47(x)
- if (x < 1)
- fun_l6_n64(x)
- else
- fun_l6_n610(x)
- end
-end
-
-def fun_l5_n48(x)
- if (x < 1)
- fun_l6_n875(x)
- else
- fun_l6_n464(x)
- end
-end
-
-def fun_l5_n49(x)
- if (x < 1)
- fun_l6_n798(x)
- else
- fun_l6_n57(x)
- end
-end
-
-def fun_l5_n50(x)
- if (x < 1)
- fun_l6_n76(x)
- else
- fun_l6_n462(x)
- end
-end
-
-def fun_l5_n51(x)
- if (x < 1)
- fun_l6_n225(x)
- else
- fun_l6_n526(x)
- end
-end
-
-def fun_l5_n52(x)
- if (x < 1)
- fun_l6_n388(x)
- else
- fun_l6_n167(x)
- end
-end
-
-def fun_l5_n53(x)
- if (x < 1)
- fun_l6_n270(x)
- else
- fun_l6_n821(x)
- end
-end
-
-def fun_l5_n54(x)
- if (x < 1)
- fun_l6_n790(x)
- else
- fun_l6_n95(x)
- end
-end
-
-def fun_l5_n55(x)
- if (x < 1)
- fun_l6_n38(x)
- else
- fun_l6_n32(x)
- end
-end
-
-def fun_l5_n56(x)
- if (x < 1)
- fun_l6_n400(x)
- else
- fun_l6_n513(x)
- end
-end
-
-def fun_l5_n57(x)
- if (x < 1)
- fun_l6_n251(x)
- else
- fun_l6_n16(x)
- end
-end
-
-def fun_l5_n58(x)
- if (x < 1)
- fun_l6_n303(x)
- else
- fun_l6_n858(x)
- end
-end
-
-def fun_l5_n59(x)
- if (x < 1)
- fun_l6_n173(x)
- else
- fun_l6_n38(x)
- end
-end
-
-def fun_l5_n60(x)
- if (x < 1)
- fun_l6_n466(x)
- else
- fun_l6_n64(x)
- end
-end
-
-def fun_l5_n61(x)
- if (x < 1)
- fun_l6_n687(x)
- else
- fun_l6_n208(x)
- end
-end
-
-def fun_l5_n62(x)
- if (x < 1)
- fun_l6_n891(x)
- else
- fun_l6_n789(x)
- end
-end
-
-def fun_l5_n63(x)
- if (x < 1)
- fun_l6_n664(x)
- else
- fun_l6_n133(x)
- end
-end
-
-def fun_l5_n64(x)
- if (x < 1)
- fun_l6_n121(x)
- else
- fun_l6_n989(x)
- end
-end
-
-def fun_l5_n65(x)
- if (x < 1)
- fun_l6_n411(x)
- else
- fun_l6_n264(x)
- end
-end
-
-def fun_l5_n66(x)
- if (x < 1)
- fun_l6_n528(x)
- else
- fun_l6_n662(x)
- end
-end
-
-def fun_l5_n67(x)
- if (x < 1)
- fun_l6_n824(x)
- else
- fun_l6_n410(x)
- end
-end
-
-def fun_l5_n68(x)
- if (x < 1)
- fun_l6_n29(x)
- else
- fun_l6_n946(x)
- end
-end
-
-def fun_l5_n69(x)
- if (x < 1)
- fun_l6_n566(x)
- else
- fun_l6_n797(x)
- end
-end
-
-def fun_l5_n70(x)
- if (x < 1)
- fun_l6_n816(x)
- else
- fun_l6_n112(x)
- end
-end
-
-def fun_l5_n71(x)
- if (x < 1)
- fun_l6_n920(x)
- else
- fun_l6_n44(x)
- end
-end
-
-def fun_l5_n72(x)
- if (x < 1)
- fun_l6_n725(x)
- else
- fun_l6_n113(x)
- end
-end
-
-def fun_l5_n73(x)
- if (x < 1)
- fun_l6_n406(x)
- else
- fun_l6_n555(x)
- end
-end
-
-def fun_l5_n74(x)
- if (x < 1)
- fun_l6_n527(x)
- else
- fun_l6_n991(x)
- end
-end
-
-def fun_l5_n75(x)
- if (x < 1)
- fun_l6_n46(x)
- else
- fun_l6_n440(x)
- end
-end
-
-def fun_l5_n76(x)
- if (x < 1)
- fun_l6_n242(x)
- else
- fun_l6_n488(x)
- end
-end
-
-def fun_l5_n77(x)
- if (x < 1)
- fun_l6_n211(x)
- else
- fun_l6_n760(x)
- end
-end
-
-def fun_l5_n78(x)
- if (x < 1)
- fun_l6_n821(x)
- else
- fun_l6_n653(x)
- end
-end
-
-def fun_l5_n79(x)
- if (x < 1)
- fun_l6_n559(x)
- else
- fun_l6_n425(x)
- end
-end
-
-def fun_l5_n80(x)
- if (x < 1)
- fun_l6_n792(x)
- else
- fun_l6_n813(x)
- end
-end
-
-def fun_l5_n81(x)
- if (x < 1)
- fun_l6_n463(x)
- else
- fun_l6_n454(x)
- end
-end
-
-def fun_l5_n82(x)
- if (x < 1)
- fun_l6_n731(x)
- else
- fun_l6_n718(x)
- end
-end
-
-def fun_l5_n83(x)
- if (x < 1)
- fun_l6_n377(x)
- else
- fun_l6_n137(x)
- end
-end
-
-def fun_l5_n84(x)
- if (x < 1)
- fun_l6_n829(x)
- else
- fun_l6_n77(x)
- end
-end
-
-def fun_l5_n85(x)
- if (x < 1)
- fun_l6_n714(x)
- else
- fun_l6_n682(x)
- end
-end
-
-def fun_l5_n86(x)
- if (x < 1)
- fun_l6_n47(x)
- else
- fun_l6_n527(x)
- end
-end
-
-def fun_l5_n87(x)
- if (x < 1)
- fun_l6_n976(x)
- else
- fun_l6_n18(x)
- end
-end
-
-def fun_l5_n88(x)
- if (x < 1)
- fun_l6_n710(x)
- else
- fun_l6_n998(x)
- end
-end
-
-def fun_l5_n89(x)
- if (x < 1)
- fun_l6_n222(x)
- else
- fun_l6_n97(x)
- end
-end
-
-def fun_l5_n90(x)
- if (x < 1)
- fun_l6_n862(x)
- else
- fun_l6_n627(x)
- end
-end
-
-def fun_l5_n91(x)
- if (x < 1)
- fun_l6_n642(x)
- else
- fun_l6_n720(x)
- end
-end
-
-def fun_l5_n92(x)
- if (x < 1)
- fun_l6_n444(x)
- else
- fun_l6_n506(x)
- end
-end
-
-def fun_l5_n93(x)
- if (x < 1)
- fun_l6_n776(x)
- else
- fun_l6_n879(x)
- end
-end
-
-def fun_l5_n94(x)
- if (x < 1)
- fun_l6_n629(x)
- else
- fun_l6_n322(x)
- end
-end
-
-def fun_l5_n95(x)
- if (x < 1)
- fun_l6_n119(x)
- else
- fun_l6_n134(x)
- end
-end
-
-def fun_l5_n96(x)
- if (x < 1)
- fun_l6_n385(x)
- else
- fun_l6_n343(x)
- end
-end
-
-def fun_l5_n97(x)
- if (x < 1)
- fun_l6_n110(x)
- else
- fun_l6_n323(x)
- end
-end
-
-def fun_l5_n98(x)
- if (x < 1)
- fun_l6_n547(x)
- else
- fun_l6_n762(x)
- end
-end
-
-def fun_l5_n99(x)
- if (x < 1)
- fun_l6_n811(x)
- else
- fun_l6_n404(x)
- end
-end
-
-def fun_l5_n100(x)
- if (x < 1)
- fun_l6_n893(x)
- else
- fun_l6_n120(x)
- end
-end
-
-def fun_l5_n101(x)
- if (x < 1)
- fun_l6_n755(x)
- else
- fun_l6_n611(x)
- end
-end
-
-def fun_l5_n102(x)
- if (x < 1)
- fun_l6_n65(x)
- else
- fun_l6_n897(x)
- end
-end
-
-def fun_l5_n103(x)
- if (x < 1)
- fun_l6_n629(x)
- else
- fun_l6_n214(x)
- end
-end
-
-def fun_l5_n104(x)
- if (x < 1)
- fun_l6_n211(x)
- else
- fun_l6_n179(x)
- end
-end
-
-def fun_l5_n105(x)
- if (x < 1)
- fun_l6_n650(x)
- else
- fun_l6_n348(x)
- end
-end
-
-def fun_l5_n106(x)
- if (x < 1)
- fun_l6_n966(x)
- else
- fun_l6_n654(x)
- end
-end
-
-def fun_l5_n107(x)
- if (x < 1)
- fun_l6_n596(x)
- else
- fun_l6_n668(x)
- end
-end
-
-def fun_l5_n108(x)
- if (x < 1)
- fun_l6_n392(x)
- else
- fun_l6_n629(x)
- end
-end
-
-def fun_l5_n109(x)
- if (x < 1)
- fun_l6_n96(x)
- else
- fun_l6_n578(x)
- end
-end
-
-def fun_l5_n110(x)
- if (x < 1)
- fun_l6_n88(x)
- else
- fun_l6_n214(x)
- end
-end
-
-def fun_l5_n111(x)
- if (x < 1)
- fun_l6_n622(x)
- else
- fun_l6_n180(x)
- end
-end
-
-def fun_l5_n112(x)
- if (x < 1)
- fun_l6_n100(x)
- else
- fun_l6_n373(x)
- end
-end
-
-def fun_l5_n113(x)
- if (x < 1)
- fun_l6_n464(x)
- else
- fun_l6_n30(x)
- end
-end
-
-def fun_l5_n114(x)
- if (x < 1)
- fun_l6_n703(x)
- else
- fun_l6_n116(x)
- end
-end
-
-def fun_l5_n115(x)
- if (x < 1)
- fun_l6_n63(x)
- else
- fun_l6_n260(x)
- end
-end
-
-def fun_l5_n116(x)
- if (x < 1)
- fun_l6_n935(x)
- else
- fun_l6_n951(x)
- end
-end
-
-def fun_l5_n117(x)
- if (x < 1)
- fun_l6_n415(x)
- else
- fun_l6_n734(x)
- end
-end
-
-def fun_l5_n118(x)
- if (x < 1)
- fun_l6_n873(x)
- else
- fun_l6_n163(x)
- end
-end
-
-def fun_l5_n119(x)
- if (x < 1)
- fun_l6_n134(x)
- else
- fun_l6_n586(x)
- end
-end
-
-def fun_l5_n120(x)
- if (x < 1)
- fun_l6_n793(x)
- else
- fun_l6_n197(x)
- end
-end
-
-def fun_l5_n121(x)
- if (x < 1)
- fun_l6_n585(x)
- else
- fun_l6_n793(x)
- end
-end
-
-def fun_l5_n122(x)
- if (x < 1)
- fun_l6_n10(x)
- else
- fun_l6_n12(x)
- end
-end
-
-def fun_l5_n123(x)
- if (x < 1)
- fun_l6_n786(x)
- else
- fun_l6_n386(x)
- end
-end
-
-def fun_l5_n124(x)
- if (x < 1)
- fun_l6_n891(x)
- else
- fun_l6_n903(x)
- end
-end
-
-def fun_l5_n125(x)
- if (x < 1)
- fun_l6_n389(x)
- else
- fun_l6_n154(x)
- end
-end
-
-def fun_l5_n126(x)
- if (x < 1)
- fun_l6_n214(x)
- else
- fun_l6_n754(x)
- end
-end
-
-def fun_l5_n127(x)
- if (x < 1)
- fun_l6_n646(x)
- else
- fun_l6_n661(x)
- end
-end
-
-def fun_l5_n128(x)
- if (x < 1)
- fun_l6_n662(x)
- else
- fun_l6_n527(x)
- end
-end
-
-def fun_l5_n129(x)
- if (x < 1)
- fun_l6_n329(x)
- else
- fun_l6_n310(x)
- end
-end
-
-def fun_l5_n130(x)
- if (x < 1)
- fun_l6_n352(x)
- else
- fun_l6_n820(x)
- end
-end
-
-def fun_l5_n131(x)
- if (x < 1)
- fun_l6_n551(x)
- else
- fun_l6_n454(x)
- end
-end
-
-def fun_l5_n132(x)
- if (x < 1)
- fun_l6_n586(x)
- else
- fun_l6_n340(x)
- end
-end
-
-def fun_l5_n133(x)
- if (x < 1)
- fun_l6_n111(x)
- else
- fun_l6_n188(x)
- end
-end
-
-def fun_l5_n134(x)
- if (x < 1)
- fun_l6_n261(x)
- else
- fun_l6_n464(x)
- end
-end
-
-def fun_l5_n135(x)
- if (x < 1)
- fun_l6_n540(x)
- else
- fun_l6_n854(x)
- end
-end
-
-def fun_l5_n136(x)
- if (x < 1)
- fun_l6_n120(x)
- else
- fun_l6_n230(x)
- end
-end
-
-def fun_l5_n137(x)
- if (x < 1)
- fun_l6_n837(x)
- else
- fun_l6_n606(x)
- end
-end
-
-def fun_l5_n138(x)
- if (x < 1)
- fun_l6_n663(x)
- else
- fun_l6_n195(x)
- end
-end
-
-def fun_l5_n139(x)
- if (x < 1)
- fun_l6_n572(x)
- else
- fun_l6_n768(x)
- end
-end
-
-def fun_l5_n140(x)
- if (x < 1)
- fun_l6_n747(x)
- else
- fun_l6_n304(x)
- end
-end
-
-def fun_l5_n141(x)
- if (x < 1)
- fun_l6_n927(x)
- else
- fun_l6_n122(x)
- end
-end
-
-def fun_l5_n142(x)
- if (x < 1)
- fun_l6_n311(x)
- else
- fun_l6_n920(x)
- end
-end
-
-def fun_l5_n143(x)
- if (x < 1)
- fun_l6_n887(x)
- else
- fun_l6_n598(x)
- end
-end
-
-def fun_l5_n144(x)
- if (x < 1)
- fun_l6_n289(x)
- else
- fun_l6_n894(x)
- end
-end
-
-def fun_l5_n145(x)
- if (x < 1)
- fun_l6_n333(x)
- else
- fun_l6_n385(x)
- end
-end
-
-def fun_l5_n146(x)
- if (x < 1)
- fun_l6_n926(x)
- else
- fun_l6_n310(x)
- end
-end
-
-def fun_l5_n147(x)
- if (x < 1)
- fun_l6_n754(x)
- else
- fun_l6_n354(x)
- end
-end
-
-def fun_l5_n148(x)
- if (x < 1)
- fun_l6_n800(x)
- else
- fun_l6_n634(x)
- end
-end
-
-def fun_l5_n149(x)
- if (x < 1)
- fun_l6_n5(x)
- else
- fun_l6_n67(x)
- end
-end
-
-def fun_l5_n150(x)
- if (x < 1)
- fun_l6_n766(x)
- else
- fun_l6_n237(x)
- end
-end
-
-def fun_l5_n151(x)
- if (x < 1)
- fun_l6_n277(x)
- else
- fun_l6_n692(x)
- end
-end
-
-def fun_l5_n152(x)
- if (x < 1)
- fun_l6_n328(x)
- else
- fun_l6_n216(x)
- end
-end
-
-def fun_l5_n153(x)
- if (x < 1)
- fun_l6_n328(x)
- else
- fun_l6_n165(x)
- end
-end
-
-def fun_l5_n154(x)
- if (x < 1)
- fun_l6_n884(x)
- else
- fun_l6_n811(x)
- end
-end
-
-def fun_l5_n155(x)
- if (x < 1)
- fun_l6_n376(x)
- else
- fun_l6_n188(x)
- end
-end
-
-def fun_l5_n156(x)
- if (x < 1)
- fun_l6_n276(x)
- else
- fun_l6_n19(x)
- end
-end
-
-def fun_l5_n157(x)
- if (x < 1)
- fun_l6_n443(x)
- else
- fun_l6_n815(x)
- end
-end
-
-def fun_l5_n158(x)
- if (x < 1)
- fun_l6_n610(x)
- else
- fun_l6_n341(x)
- end
-end
-
-def fun_l5_n159(x)
- if (x < 1)
- fun_l6_n147(x)
- else
- fun_l6_n289(x)
- end
-end
-
-def fun_l5_n160(x)
- if (x < 1)
- fun_l6_n258(x)
- else
- fun_l6_n683(x)
- end
-end
-
-def fun_l5_n161(x)
- if (x < 1)
- fun_l6_n544(x)
- else
- fun_l6_n621(x)
- end
-end
-
-def fun_l5_n162(x)
- if (x < 1)
- fun_l6_n119(x)
- else
- fun_l6_n336(x)
- end
-end
-
-def fun_l5_n163(x)
- if (x < 1)
- fun_l6_n297(x)
- else
- fun_l6_n915(x)
- end
-end
-
-def fun_l5_n164(x)
- if (x < 1)
- fun_l6_n782(x)
- else
- fun_l6_n499(x)
- end
-end
-
-def fun_l5_n165(x)
- if (x < 1)
- fun_l6_n660(x)
- else
- fun_l6_n227(x)
- end
-end
-
-def fun_l5_n166(x)
- if (x < 1)
- fun_l6_n820(x)
- else
- fun_l6_n822(x)
- end
-end
-
-def fun_l5_n167(x)
- if (x < 1)
- fun_l6_n878(x)
- else
- fun_l6_n642(x)
- end
-end
-
-def fun_l5_n168(x)
- if (x < 1)
- fun_l6_n123(x)
- else
- fun_l6_n451(x)
- end
-end
-
-def fun_l5_n169(x)
- if (x < 1)
- fun_l6_n741(x)
- else
- fun_l6_n35(x)
- end
-end
-
-def fun_l5_n170(x)
- if (x < 1)
- fun_l6_n522(x)
- else
- fun_l6_n546(x)
- end
-end
-
-def fun_l5_n171(x)
- if (x < 1)
- fun_l6_n555(x)
- else
- fun_l6_n667(x)
- end
-end
-
-def fun_l5_n172(x)
- if (x < 1)
- fun_l6_n760(x)
- else
- fun_l6_n292(x)
- end
-end
-
-def fun_l5_n173(x)
- if (x < 1)
- fun_l6_n375(x)
- else
- fun_l6_n907(x)
- end
-end
-
-def fun_l5_n174(x)
- if (x < 1)
- fun_l6_n382(x)
- else
- fun_l6_n693(x)
- end
-end
-
-def fun_l5_n175(x)
- if (x < 1)
- fun_l6_n728(x)
- else
- fun_l6_n378(x)
- end
-end
-
-def fun_l5_n176(x)
- if (x < 1)
- fun_l6_n79(x)
- else
- fun_l6_n402(x)
- end
-end
-
-def fun_l5_n177(x)
- if (x < 1)
- fun_l6_n444(x)
- else
- fun_l6_n500(x)
- end
-end
-
-def fun_l5_n178(x)
- if (x < 1)
- fun_l6_n535(x)
- else
- fun_l6_n754(x)
- end
-end
-
-def fun_l5_n179(x)
- if (x < 1)
- fun_l6_n831(x)
- else
- fun_l6_n206(x)
- end
-end
-
-def fun_l5_n180(x)
- if (x < 1)
- fun_l6_n878(x)
- else
- fun_l6_n715(x)
- end
-end
-
-def fun_l5_n181(x)
- if (x < 1)
- fun_l6_n433(x)
- else
- fun_l6_n955(x)
- end
-end
-
-def fun_l5_n182(x)
- if (x < 1)
- fun_l6_n611(x)
- else
- fun_l6_n258(x)
- end
-end
-
-def fun_l5_n183(x)
- if (x < 1)
- fun_l6_n618(x)
- else
- fun_l6_n29(x)
- end
-end
-
-def fun_l5_n184(x)
- if (x < 1)
- fun_l6_n838(x)
- else
- fun_l6_n918(x)
- end
-end
-
-def fun_l5_n185(x)
- if (x < 1)
- fun_l6_n307(x)
- else
- fun_l6_n811(x)
- end
-end
-
-def fun_l5_n186(x)
- if (x < 1)
- fun_l6_n564(x)
- else
- fun_l6_n73(x)
- end
-end
-
-def fun_l5_n187(x)
- if (x < 1)
- fun_l6_n871(x)
- else
- fun_l6_n669(x)
- end
-end
-
-def fun_l5_n188(x)
- if (x < 1)
- fun_l6_n546(x)
- else
- fun_l6_n41(x)
- end
-end
-
-def fun_l5_n189(x)
- if (x < 1)
- fun_l6_n312(x)
- else
- fun_l6_n998(x)
- end
-end
-
-def fun_l5_n190(x)
- if (x < 1)
- fun_l6_n519(x)
- else
- fun_l6_n275(x)
- end
-end
-
-def fun_l5_n191(x)
- if (x < 1)
- fun_l6_n525(x)
- else
- fun_l6_n228(x)
- end
-end
-
-def fun_l5_n192(x)
- if (x < 1)
- fun_l6_n115(x)
- else
- fun_l6_n790(x)
- end
-end
-
-def fun_l5_n193(x)
- if (x < 1)
- fun_l6_n976(x)
- else
- fun_l6_n219(x)
- end
-end
-
-def fun_l5_n194(x)
- if (x < 1)
- fun_l6_n785(x)
- else
- fun_l6_n834(x)
- end
-end
-
-def fun_l5_n195(x)
- if (x < 1)
- fun_l6_n238(x)
- else
- fun_l6_n471(x)
- end
-end
-
-def fun_l5_n196(x)
- if (x < 1)
- fun_l6_n275(x)
- else
- fun_l6_n218(x)
- end
-end
-
-def fun_l5_n197(x)
- if (x < 1)
- fun_l6_n590(x)
- else
- fun_l6_n458(x)
- end
-end
-
-def fun_l5_n198(x)
- if (x < 1)
- fun_l6_n498(x)
- else
- fun_l6_n906(x)
- end
-end
-
-def fun_l5_n199(x)
- if (x < 1)
- fun_l6_n547(x)
- else
- fun_l6_n885(x)
- end
-end
-
-def fun_l5_n200(x)
- if (x < 1)
- fun_l6_n631(x)
- else
- fun_l6_n0(x)
- end
-end
-
-def fun_l5_n201(x)
- if (x < 1)
- fun_l6_n31(x)
- else
- fun_l6_n729(x)
- end
-end
-
-def fun_l5_n202(x)
- if (x < 1)
- fun_l6_n303(x)
- else
- fun_l6_n847(x)
- end
-end
-
-def fun_l5_n203(x)
- if (x < 1)
- fun_l6_n912(x)
- else
- fun_l6_n346(x)
- end
-end
-
-def fun_l5_n204(x)
- if (x < 1)
- fun_l6_n153(x)
- else
- fun_l6_n831(x)
- end
-end
-
-def fun_l5_n205(x)
- if (x < 1)
- fun_l6_n424(x)
- else
- fun_l6_n836(x)
- end
-end
-
-def fun_l5_n206(x)
- if (x < 1)
- fun_l6_n214(x)
- else
- fun_l6_n207(x)
- end
-end
-
-def fun_l5_n207(x)
- if (x < 1)
- fun_l6_n362(x)
- else
- fun_l6_n241(x)
- end
-end
-
-def fun_l5_n208(x)
- if (x < 1)
- fun_l6_n796(x)
- else
- fun_l6_n763(x)
- end
-end
-
-def fun_l5_n209(x)
- if (x < 1)
- fun_l6_n523(x)
- else
- fun_l6_n998(x)
- end
-end
-
-def fun_l5_n210(x)
- if (x < 1)
- fun_l6_n326(x)
- else
- fun_l6_n755(x)
- end
-end
-
-def fun_l5_n211(x)
- if (x < 1)
- fun_l6_n345(x)
- else
- fun_l6_n747(x)
- end
-end
-
-def fun_l5_n212(x)
- if (x < 1)
- fun_l6_n631(x)
- else
- fun_l6_n576(x)
- end
-end
-
-def fun_l5_n213(x)
- if (x < 1)
- fun_l6_n713(x)
- else
- fun_l6_n678(x)
- end
-end
-
-def fun_l5_n214(x)
- if (x < 1)
- fun_l6_n470(x)
- else
- fun_l6_n877(x)
- end
-end
-
-def fun_l5_n215(x)
- if (x < 1)
- fun_l6_n78(x)
- else
- fun_l6_n315(x)
- end
-end
-
-def fun_l5_n216(x)
- if (x < 1)
- fun_l6_n281(x)
- else
- fun_l6_n872(x)
- end
-end
-
-def fun_l5_n217(x)
- if (x < 1)
- fun_l6_n200(x)
- else
- fun_l6_n323(x)
- end
-end
-
-def fun_l5_n218(x)
- if (x < 1)
- fun_l6_n483(x)
- else
- fun_l6_n938(x)
- end
-end
-
-def fun_l5_n219(x)
- if (x < 1)
- fun_l6_n102(x)
- else
- fun_l6_n690(x)
- end
-end
-
-def fun_l5_n220(x)
- if (x < 1)
- fun_l6_n740(x)
- else
- fun_l6_n684(x)
- end
-end
-
-def fun_l5_n221(x)
- if (x < 1)
- fun_l6_n366(x)
- else
- fun_l6_n138(x)
- end
-end
-
-def fun_l5_n222(x)
- if (x < 1)
- fun_l6_n306(x)
- else
- fun_l6_n874(x)
- end
-end
-
-def fun_l5_n223(x)
- if (x < 1)
- fun_l6_n828(x)
- else
- fun_l6_n839(x)
- end
-end
-
-def fun_l5_n224(x)
- if (x < 1)
- fun_l6_n739(x)
- else
- fun_l6_n569(x)
- end
-end
-
-def fun_l5_n225(x)
- if (x < 1)
- fun_l6_n332(x)
- else
- fun_l6_n49(x)
- end
-end
-
-def fun_l5_n226(x)
- if (x < 1)
- fun_l6_n783(x)
- else
- fun_l6_n20(x)
- end
-end
-
-def fun_l5_n227(x)
- if (x < 1)
- fun_l6_n774(x)
- else
- fun_l6_n346(x)
- end
-end
-
-def fun_l5_n228(x)
- if (x < 1)
- fun_l6_n637(x)
- else
- fun_l6_n302(x)
- end
-end
-
-def fun_l5_n229(x)
- if (x < 1)
- fun_l6_n10(x)
- else
- fun_l6_n697(x)
- end
-end
-
-def fun_l5_n230(x)
- if (x < 1)
- fun_l6_n804(x)
- else
- fun_l6_n141(x)
- end
-end
-
-def fun_l5_n231(x)
- if (x < 1)
- fun_l6_n232(x)
- else
- fun_l6_n88(x)
- end
-end
-
-def fun_l5_n232(x)
- if (x < 1)
- fun_l6_n248(x)
- else
- fun_l6_n862(x)
- end
-end
-
-def fun_l5_n233(x)
- if (x < 1)
- fun_l6_n287(x)
- else
- fun_l6_n315(x)
- end
-end
-
-def fun_l5_n234(x)
- if (x < 1)
- fun_l6_n543(x)
- else
- fun_l6_n182(x)
- end
-end
-
-def fun_l5_n235(x)
- if (x < 1)
- fun_l6_n162(x)
- else
- fun_l6_n710(x)
- end
-end
-
-def fun_l5_n236(x)
- if (x < 1)
- fun_l6_n879(x)
- else
- fun_l6_n262(x)
- end
-end
-
-def fun_l5_n237(x)
- if (x < 1)
- fun_l6_n706(x)
- else
- fun_l6_n112(x)
- end
-end
-
-def fun_l5_n238(x)
- if (x < 1)
- fun_l6_n578(x)
- else
- fun_l6_n792(x)
- end
-end
-
-def fun_l5_n239(x)
- if (x < 1)
- fun_l6_n685(x)
- else
- fun_l6_n441(x)
- end
-end
-
-def fun_l5_n240(x)
- if (x < 1)
- fun_l6_n706(x)
- else
- fun_l6_n737(x)
- end
-end
-
-def fun_l5_n241(x)
- if (x < 1)
- fun_l6_n360(x)
- else
- fun_l6_n751(x)
- end
-end
-
-def fun_l5_n242(x)
- if (x < 1)
- fun_l6_n823(x)
- else
- fun_l6_n888(x)
- end
-end
-
-def fun_l5_n243(x)
- if (x < 1)
- fun_l6_n743(x)
- else
- fun_l6_n705(x)
- end
-end
-
-def fun_l5_n244(x)
- if (x < 1)
- fun_l6_n340(x)
- else
- fun_l6_n541(x)
- end
-end
-
-def fun_l5_n245(x)
- if (x < 1)
- fun_l6_n324(x)
- else
- fun_l6_n121(x)
- end
-end
-
-def fun_l5_n246(x)
- if (x < 1)
- fun_l6_n241(x)
- else
- fun_l6_n584(x)
- end
-end
-
-def fun_l5_n247(x)
- if (x < 1)
- fun_l6_n468(x)
- else
- fun_l6_n673(x)
- end
-end
-
-def fun_l5_n248(x)
- if (x < 1)
- fun_l6_n595(x)
- else
- fun_l6_n537(x)
- end
-end
-
-def fun_l5_n249(x)
- if (x < 1)
- fun_l6_n166(x)
- else
- fun_l6_n766(x)
- end
-end
-
-def fun_l5_n250(x)
- if (x < 1)
- fun_l6_n322(x)
- else
- fun_l6_n904(x)
- end
-end
-
-def fun_l5_n251(x)
- if (x < 1)
- fun_l6_n273(x)
- else
- fun_l6_n353(x)
- end
-end
-
-def fun_l5_n252(x)
- if (x < 1)
- fun_l6_n990(x)
- else
- fun_l6_n360(x)
- end
-end
-
-def fun_l5_n253(x)
- if (x < 1)
- fun_l6_n552(x)
- else
- fun_l6_n649(x)
- end
-end
-
-def fun_l5_n254(x)
- if (x < 1)
- fun_l6_n917(x)
- else
- fun_l6_n803(x)
- end
-end
-
-def fun_l5_n255(x)
- if (x < 1)
- fun_l6_n763(x)
- else
- fun_l6_n464(x)
- end
-end
-
-def fun_l5_n256(x)
- if (x < 1)
- fun_l6_n577(x)
- else
- fun_l6_n70(x)
- end
-end
-
-def fun_l5_n257(x)
- if (x < 1)
- fun_l6_n618(x)
- else
- fun_l6_n943(x)
- end
-end
-
-def fun_l5_n258(x)
- if (x < 1)
- fun_l6_n683(x)
- else
- fun_l6_n761(x)
- end
-end
-
-def fun_l5_n259(x)
- if (x < 1)
- fun_l6_n284(x)
- else
- fun_l6_n223(x)
- end
-end
-
-def fun_l5_n260(x)
- if (x < 1)
- fun_l6_n189(x)
- else
- fun_l6_n455(x)
- end
-end
-
-def fun_l5_n261(x)
- if (x < 1)
- fun_l6_n632(x)
- else
- fun_l6_n245(x)
- end
-end
-
-def fun_l5_n262(x)
- if (x < 1)
- fun_l6_n940(x)
- else
- fun_l6_n38(x)
- end
-end
-
-def fun_l5_n263(x)
- if (x < 1)
- fun_l6_n289(x)
- else
- fun_l6_n356(x)
- end
-end
-
-def fun_l5_n264(x)
- if (x < 1)
- fun_l6_n268(x)
- else
- fun_l6_n412(x)
- end
-end
-
-def fun_l5_n265(x)
- if (x < 1)
- fun_l6_n370(x)
- else
- fun_l6_n858(x)
- end
-end
-
-def fun_l5_n266(x)
- if (x < 1)
- fun_l6_n523(x)
- else
- fun_l6_n809(x)
- end
-end
-
-def fun_l5_n267(x)
- if (x < 1)
- fun_l6_n469(x)
- else
- fun_l6_n260(x)
- end
-end
-
-def fun_l5_n268(x)
- if (x < 1)
- fun_l6_n442(x)
- else
- fun_l6_n738(x)
- end
-end
-
-def fun_l5_n269(x)
- if (x < 1)
- fun_l6_n663(x)
- else
- fun_l6_n109(x)
- end
-end
-
-def fun_l5_n270(x)
- if (x < 1)
- fun_l6_n302(x)
- else
- fun_l6_n664(x)
- end
-end
-
-def fun_l5_n271(x)
- if (x < 1)
- fun_l6_n201(x)
- else
- fun_l6_n251(x)
- end
-end
-
-def fun_l5_n272(x)
- if (x < 1)
- fun_l6_n776(x)
- else
- fun_l6_n903(x)
- end
-end
-
-def fun_l5_n273(x)
- if (x < 1)
- fun_l6_n683(x)
- else
- fun_l6_n233(x)
- end
-end
-
-def fun_l5_n274(x)
- if (x < 1)
- fun_l6_n530(x)
- else
- fun_l6_n487(x)
- end
-end
-
-def fun_l5_n275(x)
- if (x < 1)
- fun_l6_n848(x)
- else
- fun_l6_n99(x)
- end
-end
-
-def fun_l5_n276(x)
- if (x < 1)
- fun_l6_n126(x)
- else
- fun_l6_n914(x)
- end
-end
-
-def fun_l5_n277(x)
- if (x < 1)
- fun_l6_n304(x)
- else
- fun_l6_n198(x)
- end
-end
-
-def fun_l5_n278(x)
- if (x < 1)
- fun_l6_n47(x)
- else
- fun_l6_n179(x)
- end
-end
-
-def fun_l5_n279(x)
- if (x < 1)
- fun_l6_n846(x)
- else
- fun_l6_n301(x)
- end
-end
-
-def fun_l5_n280(x)
- if (x < 1)
- fun_l6_n576(x)
- else
- fun_l6_n561(x)
- end
-end
-
-def fun_l5_n281(x)
- if (x < 1)
- fun_l6_n307(x)
- else
- fun_l6_n545(x)
- end
-end
-
-def fun_l5_n282(x)
- if (x < 1)
- fun_l6_n434(x)
- else
- fun_l6_n669(x)
- end
-end
-
-def fun_l5_n283(x)
- if (x < 1)
- fun_l6_n606(x)
- else
- fun_l6_n147(x)
- end
-end
-
-def fun_l5_n284(x)
- if (x < 1)
- fun_l6_n212(x)
- else
- fun_l6_n504(x)
- end
-end
-
-def fun_l5_n285(x)
- if (x < 1)
- fun_l6_n193(x)
- else
- fun_l6_n165(x)
- end
-end
-
-def fun_l5_n286(x)
- if (x < 1)
- fun_l6_n569(x)
- else
- fun_l6_n100(x)
- end
-end
-
-def fun_l5_n287(x)
- if (x < 1)
- fun_l6_n59(x)
- else
- fun_l6_n998(x)
- end
-end
-
-def fun_l5_n288(x)
- if (x < 1)
- fun_l6_n544(x)
- else
- fun_l6_n923(x)
- end
-end
-
-def fun_l5_n289(x)
- if (x < 1)
- fun_l6_n317(x)
- else
- fun_l6_n255(x)
- end
-end
-
-def fun_l5_n290(x)
- if (x < 1)
- fun_l6_n476(x)
- else
- fun_l6_n789(x)
- end
-end
-
-def fun_l5_n291(x)
- if (x < 1)
- fun_l6_n324(x)
- else
- fun_l6_n162(x)
- end
-end
-
-def fun_l5_n292(x)
- if (x < 1)
- fun_l6_n704(x)
- else
- fun_l6_n454(x)
- end
-end
-
-def fun_l5_n293(x)
- if (x < 1)
- fun_l6_n994(x)
- else
- fun_l6_n637(x)
- end
-end
-
-def fun_l5_n294(x)
- if (x < 1)
- fun_l6_n801(x)
- else
- fun_l6_n913(x)
- end
-end
-
-def fun_l5_n295(x)
- if (x < 1)
- fun_l6_n579(x)
- else
- fun_l6_n795(x)
- end
-end
-
-def fun_l5_n296(x)
- if (x < 1)
- fun_l6_n689(x)
- else
- fun_l6_n546(x)
- end
-end
-
-def fun_l5_n297(x)
- if (x < 1)
- fun_l6_n971(x)
- else
- fun_l6_n493(x)
- end
-end
-
-def fun_l5_n298(x)
- if (x < 1)
- fun_l6_n67(x)
- else
- fun_l6_n372(x)
- end
-end
-
-def fun_l5_n299(x)
- if (x < 1)
- fun_l6_n654(x)
- else
- fun_l6_n921(x)
- end
-end
-
-def fun_l5_n300(x)
- if (x < 1)
- fun_l6_n402(x)
- else
- fun_l6_n437(x)
- end
-end
-
-def fun_l5_n301(x)
- if (x < 1)
- fun_l6_n448(x)
- else
- fun_l6_n177(x)
- end
-end
-
-def fun_l5_n302(x)
- if (x < 1)
- fun_l6_n308(x)
- else
- fun_l6_n869(x)
- end
-end
-
-def fun_l5_n303(x)
- if (x < 1)
- fun_l6_n825(x)
- else
- fun_l6_n848(x)
- end
-end
-
-def fun_l5_n304(x)
- if (x < 1)
- fun_l6_n735(x)
- else
- fun_l6_n653(x)
- end
-end
-
-def fun_l5_n305(x)
- if (x < 1)
- fun_l6_n393(x)
- else
- fun_l6_n113(x)
- end
-end
-
-def fun_l5_n306(x)
- if (x < 1)
- fun_l6_n821(x)
- else
- fun_l6_n827(x)
- end
-end
-
-def fun_l5_n307(x)
- if (x < 1)
- fun_l6_n734(x)
- else
- fun_l6_n498(x)
- end
-end
-
-def fun_l5_n308(x)
- if (x < 1)
- fun_l6_n833(x)
- else
- fun_l6_n302(x)
- end
-end
-
-def fun_l5_n309(x)
- if (x < 1)
- fun_l6_n596(x)
- else
- fun_l6_n544(x)
- end
-end
-
-def fun_l5_n310(x)
- if (x < 1)
- fun_l6_n61(x)
- else
- fun_l6_n823(x)
- end
-end
-
-def fun_l5_n311(x)
- if (x < 1)
- fun_l6_n596(x)
- else
- fun_l6_n98(x)
- end
-end
-
-def fun_l5_n312(x)
- if (x < 1)
- fun_l6_n78(x)
- else
- fun_l6_n186(x)
- end
-end
-
-def fun_l5_n313(x)
- if (x < 1)
- fun_l6_n286(x)
- else
- fun_l6_n230(x)
- end
-end
-
-def fun_l5_n314(x)
- if (x < 1)
- fun_l6_n613(x)
- else
- fun_l6_n412(x)
- end
-end
-
-def fun_l5_n315(x)
- if (x < 1)
- fun_l6_n0(x)
- else
- fun_l6_n579(x)
- end
-end
-
-def fun_l5_n316(x)
- if (x < 1)
- fun_l6_n991(x)
- else
- fun_l6_n379(x)
- end
-end
-
-def fun_l5_n317(x)
- if (x < 1)
- fun_l6_n825(x)
- else
- fun_l6_n964(x)
- end
-end
-
-def fun_l5_n318(x)
- if (x < 1)
- fun_l6_n707(x)
- else
- fun_l6_n664(x)
- end
-end
-
-def fun_l5_n319(x)
- if (x < 1)
- fun_l6_n326(x)
- else
- fun_l6_n26(x)
- end
-end
-
-def fun_l5_n320(x)
- if (x < 1)
- fun_l6_n684(x)
- else
- fun_l6_n333(x)
- end
-end
-
-def fun_l5_n321(x)
- if (x < 1)
- fun_l6_n165(x)
- else
- fun_l6_n586(x)
- end
-end
-
-def fun_l5_n322(x)
- if (x < 1)
- fun_l6_n28(x)
- else
- fun_l6_n53(x)
- end
-end
-
-def fun_l5_n323(x)
- if (x < 1)
- fun_l6_n693(x)
- else
- fun_l6_n84(x)
- end
-end
-
-def fun_l5_n324(x)
- if (x < 1)
- fun_l6_n500(x)
- else
- fun_l6_n445(x)
- end
-end
-
-def fun_l5_n325(x)
- if (x < 1)
- fun_l6_n189(x)
- else
- fun_l6_n756(x)
- end
-end
-
-def fun_l5_n326(x)
- if (x < 1)
- fun_l6_n147(x)
- else
- fun_l6_n709(x)
- end
-end
-
-def fun_l5_n327(x)
- if (x < 1)
- fun_l6_n893(x)
- else
- fun_l6_n851(x)
- end
-end
-
-def fun_l5_n328(x)
- if (x < 1)
- fun_l6_n685(x)
- else
- fun_l6_n399(x)
- end
-end
-
-def fun_l5_n329(x)
- if (x < 1)
- fun_l6_n281(x)
- else
- fun_l6_n284(x)
- end
-end
-
-def fun_l5_n330(x)
- if (x < 1)
- fun_l6_n579(x)
- else
- fun_l6_n671(x)
- end
-end
-
-def fun_l5_n331(x)
- if (x < 1)
- fun_l6_n176(x)
- else
- fun_l6_n829(x)
- end
-end
-
-def fun_l5_n332(x)
- if (x < 1)
- fun_l6_n209(x)
- else
- fun_l6_n91(x)
- end
-end
-
-def fun_l5_n333(x)
- if (x < 1)
- fun_l6_n302(x)
- else
- fun_l6_n360(x)
- end
-end
-
-def fun_l5_n334(x)
- if (x < 1)
- fun_l6_n701(x)
- else
- fun_l6_n438(x)
- end
-end
-
-def fun_l5_n335(x)
- if (x < 1)
- fun_l6_n923(x)
- else
- fun_l6_n613(x)
- end
-end
-
-def fun_l5_n336(x)
- if (x < 1)
- fun_l6_n490(x)
- else
- fun_l6_n405(x)
- end
-end
-
-def fun_l5_n337(x)
- if (x < 1)
- fun_l6_n187(x)
- else
- fun_l6_n953(x)
- end
-end
-
-def fun_l5_n338(x)
- if (x < 1)
- fun_l6_n396(x)
- else
- fun_l6_n917(x)
- end
-end
-
-def fun_l5_n339(x)
- if (x < 1)
- fun_l6_n822(x)
- else
- fun_l6_n939(x)
- end
-end
-
-def fun_l5_n340(x)
- if (x < 1)
- fun_l6_n665(x)
- else
- fun_l6_n890(x)
- end
-end
-
-def fun_l5_n341(x)
- if (x < 1)
- fun_l6_n125(x)
- else
- fun_l6_n817(x)
- end
-end
-
-def fun_l5_n342(x)
- if (x < 1)
- fun_l6_n825(x)
- else
- fun_l6_n853(x)
- end
-end
-
-def fun_l5_n343(x)
- if (x < 1)
- fun_l6_n724(x)
- else
- fun_l6_n633(x)
- end
-end
-
-def fun_l5_n344(x)
- if (x < 1)
- fun_l6_n901(x)
- else
- fun_l6_n26(x)
- end
-end
-
-def fun_l5_n345(x)
- if (x < 1)
- fun_l6_n406(x)
- else
- fun_l6_n664(x)
- end
-end
-
-def fun_l5_n346(x)
- if (x < 1)
- fun_l6_n720(x)
- else
- fun_l6_n856(x)
- end
-end
-
-def fun_l5_n347(x)
- if (x < 1)
- fun_l6_n617(x)
- else
- fun_l6_n116(x)
- end
-end
-
-def fun_l5_n348(x)
- if (x < 1)
- fun_l6_n560(x)
- else
- fun_l6_n24(x)
- end
-end
-
-def fun_l5_n349(x)
- if (x < 1)
- fun_l6_n758(x)
- else
- fun_l6_n297(x)
- end
-end
-
-def fun_l5_n350(x)
- if (x < 1)
- fun_l6_n583(x)
- else
- fun_l6_n673(x)
- end
-end
-
-def fun_l5_n351(x)
- if (x < 1)
- fun_l6_n990(x)
- else
- fun_l6_n512(x)
- end
-end
-
-def fun_l5_n352(x)
- if (x < 1)
- fun_l6_n250(x)
- else
- fun_l6_n819(x)
- end
-end
-
-def fun_l5_n353(x)
- if (x < 1)
- fun_l6_n186(x)
- else
- fun_l6_n787(x)
- end
-end
-
-def fun_l5_n354(x)
- if (x < 1)
- fun_l6_n217(x)
- else
- fun_l6_n231(x)
- end
-end
-
-def fun_l5_n355(x)
- if (x < 1)
- fun_l6_n827(x)
- else
- fun_l6_n439(x)
- end
-end
-
-def fun_l5_n356(x)
- if (x < 1)
- fun_l6_n456(x)
- else
- fun_l6_n352(x)
- end
-end
-
-def fun_l5_n357(x)
- if (x < 1)
- fun_l6_n306(x)
- else
- fun_l6_n236(x)
- end
-end
-
-def fun_l5_n358(x)
- if (x < 1)
- fun_l6_n515(x)
- else
- fun_l6_n100(x)
- end
-end
-
-def fun_l5_n359(x)
- if (x < 1)
- fun_l6_n28(x)
- else
- fun_l6_n820(x)
- end
-end
-
-def fun_l5_n360(x)
- if (x < 1)
- fun_l6_n683(x)
- else
- fun_l6_n547(x)
- end
-end
-
-def fun_l5_n361(x)
- if (x < 1)
- fun_l6_n573(x)
- else
- fun_l6_n699(x)
- end
-end
-
-def fun_l5_n362(x)
- if (x < 1)
- fun_l6_n807(x)
- else
- fun_l6_n548(x)
- end
-end
-
-def fun_l5_n363(x)
- if (x < 1)
- fun_l6_n712(x)
- else
- fun_l6_n323(x)
- end
-end
-
-def fun_l5_n364(x)
- if (x < 1)
- fun_l6_n457(x)
- else
- fun_l6_n447(x)
- end
-end
-
-def fun_l5_n365(x)
- if (x < 1)
- fun_l6_n684(x)
- else
- fun_l6_n782(x)
- end
-end
-
-def fun_l5_n366(x)
- if (x < 1)
- fun_l6_n217(x)
- else
- fun_l6_n344(x)
- end
-end
-
-def fun_l5_n367(x)
- if (x < 1)
- fun_l6_n670(x)
- else
- fun_l6_n311(x)
- end
-end
-
-def fun_l5_n368(x)
- if (x < 1)
- fun_l6_n224(x)
- else
- fun_l6_n198(x)
- end
-end
-
-def fun_l5_n369(x)
- if (x < 1)
- fun_l6_n517(x)
- else
- fun_l6_n186(x)
- end
-end
-
-def fun_l5_n370(x)
- if (x < 1)
- fun_l6_n511(x)
- else
- fun_l6_n27(x)
- end
-end
-
-def fun_l5_n371(x)
- if (x < 1)
- fun_l6_n485(x)
- else
- fun_l6_n288(x)
- end
-end
-
-def fun_l5_n372(x)
- if (x < 1)
- fun_l6_n931(x)
- else
- fun_l6_n473(x)
- end
-end
-
-def fun_l5_n373(x)
- if (x < 1)
- fun_l6_n381(x)
- else
- fun_l6_n650(x)
- end
-end
-
-def fun_l5_n374(x)
- if (x < 1)
- fun_l6_n132(x)
- else
- fun_l6_n243(x)
- end
-end
-
-def fun_l5_n375(x)
- if (x < 1)
- fun_l6_n900(x)
- else
- fun_l6_n322(x)
- end
-end
-
-def fun_l5_n376(x)
- if (x < 1)
- fun_l6_n787(x)
- else
- fun_l6_n588(x)
- end
-end
-
-def fun_l5_n377(x)
- if (x < 1)
- fun_l6_n233(x)
- else
- fun_l6_n358(x)
- end
-end
-
-def fun_l5_n378(x)
- if (x < 1)
- fun_l6_n601(x)
- else
- fun_l6_n40(x)
- end
-end
-
-def fun_l5_n379(x)
- if (x < 1)
- fun_l6_n682(x)
- else
- fun_l6_n63(x)
- end
-end
-
-def fun_l5_n380(x)
- if (x < 1)
- fun_l6_n279(x)
- else
- fun_l6_n393(x)
- end
-end
-
-def fun_l5_n381(x)
- if (x < 1)
- fun_l6_n83(x)
- else
- fun_l6_n538(x)
- end
-end
-
-def fun_l5_n382(x)
- if (x < 1)
- fun_l6_n956(x)
- else
- fun_l6_n194(x)
- end
-end
-
-def fun_l5_n383(x)
- if (x < 1)
- fun_l6_n55(x)
- else
- fun_l6_n140(x)
- end
-end
-
-def fun_l5_n384(x)
- if (x < 1)
- fun_l6_n165(x)
- else
- fun_l6_n784(x)
- end
-end
-
-def fun_l5_n385(x)
- if (x < 1)
- fun_l6_n582(x)
- else
- fun_l6_n97(x)
- end
-end
-
-def fun_l5_n386(x)
- if (x < 1)
- fun_l6_n362(x)
- else
- fun_l6_n935(x)
- end
-end
-
-def fun_l5_n387(x)
- if (x < 1)
- fun_l6_n496(x)
- else
- fun_l6_n512(x)
- end
-end
-
-def fun_l5_n388(x)
- if (x < 1)
- fun_l6_n793(x)
- else
- fun_l6_n746(x)
- end
-end
-
-def fun_l5_n389(x)
- if (x < 1)
- fun_l6_n172(x)
- else
- fun_l6_n731(x)
- end
-end
-
-def fun_l5_n390(x)
- if (x < 1)
- fun_l6_n895(x)
- else
- fun_l6_n694(x)
- end
-end
-
-def fun_l5_n391(x)
- if (x < 1)
- fun_l6_n336(x)
- else
- fun_l6_n551(x)
- end
-end
-
-def fun_l5_n392(x)
- if (x < 1)
- fun_l6_n453(x)
- else
- fun_l6_n83(x)
- end
-end
-
-def fun_l5_n393(x)
- if (x < 1)
- fun_l6_n571(x)
- else
- fun_l6_n293(x)
- end
-end
-
-def fun_l5_n394(x)
- if (x < 1)
- fun_l6_n872(x)
- else
- fun_l6_n519(x)
- end
-end
-
-def fun_l5_n395(x)
- if (x < 1)
- fun_l6_n912(x)
- else
- fun_l6_n955(x)
- end
-end
-
-def fun_l5_n396(x)
- if (x < 1)
- fun_l6_n961(x)
- else
- fun_l6_n367(x)
- end
-end
-
-def fun_l5_n397(x)
- if (x < 1)
- fun_l6_n255(x)
- else
- fun_l6_n639(x)
- end
-end
-
-def fun_l5_n398(x)
- if (x < 1)
- fun_l6_n970(x)
- else
- fun_l6_n465(x)
- end
-end
-
-def fun_l5_n399(x)
- if (x < 1)
- fun_l6_n625(x)
- else
- fun_l6_n387(x)
- end
-end
-
-def fun_l5_n400(x)
- if (x < 1)
- fun_l6_n537(x)
- else
- fun_l6_n336(x)
- end
-end
-
-def fun_l5_n401(x)
- if (x < 1)
- fun_l6_n61(x)
- else
- fun_l6_n0(x)
- end
-end
-
-def fun_l5_n402(x)
- if (x < 1)
- fun_l6_n358(x)
- else
- fun_l6_n715(x)
- end
-end
-
-def fun_l5_n403(x)
- if (x < 1)
- fun_l6_n864(x)
- else
- fun_l6_n729(x)
- end
-end
-
-def fun_l5_n404(x)
- if (x < 1)
- fun_l6_n393(x)
- else
- fun_l6_n962(x)
- end
-end
-
-def fun_l5_n405(x)
- if (x < 1)
- fun_l6_n995(x)
- else
- fun_l6_n835(x)
- end
-end
-
-def fun_l5_n406(x)
- if (x < 1)
- fun_l6_n605(x)
- else
- fun_l6_n732(x)
- end
-end
-
-def fun_l5_n407(x)
- if (x < 1)
- fun_l6_n132(x)
- else
- fun_l6_n112(x)
- end
-end
-
-def fun_l5_n408(x)
- if (x < 1)
- fun_l6_n311(x)
- else
- fun_l6_n972(x)
- end
-end
-
-def fun_l5_n409(x)
- if (x < 1)
- fun_l6_n460(x)
- else
- fun_l6_n750(x)
- end
-end
-
-def fun_l5_n410(x)
- if (x < 1)
- fun_l6_n237(x)
- else
- fun_l6_n463(x)
- end
-end
-
-def fun_l5_n411(x)
- if (x < 1)
- fun_l6_n251(x)
- else
- fun_l6_n944(x)
- end
-end
-
-def fun_l5_n412(x)
- if (x < 1)
- fun_l6_n123(x)
- else
- fun_l6_n369(x)
- end
-end
-
-def fun_l5_n413(x)
- if (x < 1)
- fun_l6_n371(x)
- else
- fun_l6_n589(x)
- end
-end
-
-def fun_l5_n414(x)
- if (x < 1)
- fun_l6_n232(x)
- else
- fun_l6_n354(x)
- end
-end
-
-def fun_l5_n415(x)
- if (x < 1)
- fun_l6_n580(x)
- else
- fun_l6_n330(x)
- end
-end
-
-def fun_l5_n416(x)
- if (x < 1)
- fun_l6_n483(x)
- else
- fun_l6_n446(x)
- end
-end
-
-def fun_l5_n417(x)
- if (x < 1)
- fun_l6_n834(x)
- else
- fun_l6_n284(x)
- end
-end
-
-def fun_l5_n418(x)
- if (x < 1)
- fun_l6_n864(x)
- else
- fun_l6_n825(x)
- end
-end
-
-def fun_l5_n419(x)
- if (x < 1)
- fun_l6_n406(x)
- else
- fun_l6_n680(x)
- end
-end
-
-def fun_l5_n420(x)
- if (x < 1)
- fun_l6_n101(x)
- else
- fun_l6_n4(x)
- end
-end
-
-def fun_l5_n421(x)
- if (x < 1)
- fun_l6_n628(x)
- else
- fun_l6_n303(x)
- end
-end
-
-def fun_l5_n422(x)
- if (x < 1)
- fun_l6_n521(x)
- else
- fun_l6_n547(x)
- end
-end
-
-def fun_l5_n423(x)
- if (x < 1)
- fun_l6_n589(x)
- else
- fun_l6_n134(x)
- end
-end
-
-def fun_l5_n424(x)
- if (x < 1)
- fun_l6_n161(x)
- else
- fun_l6_n347(x)
- end
-end
-
-def fun_l5_n425(x)
- if (x < 1)
- fun_l6_n59(x)
- else
- fun_l6_n988(x)
- end
-end
-
-def fun_l5_n426(x)
- if (x < 1)
- fun_l6_n388(x)
- else
- fun_l6_n182(x)
- end
-end
-
-def fun_l5_n427(x)
- if (x < 1)
- fun_l6_n500(x)
- else
- fun_l6_n536(x)
- end
-end
-
-def fun_l5_n428(x)
- if (x < 1)
- fun_l6_n792(x)
- else
- fun_l6_n253(x)
- end
-end
-
-def fun_l5_n429(x)
- if (x < 1)
- fun_l6_n774(x)
- else
- fun_l6_n997(x)
- end
-end
-
-def fun_l5_n430(x)
- if (x < 1)
- fun_l6_n876(x)
- else
- fun_l6_n798(x)
- end
-end
-
-def fun_l5_n431(x)
- if (x < 1)
- fun_l6_n606(x)
- else
- fun_l6_n403(x)
- end
-end
-
-def fun_l5_n432(x)
- if (x < 1)
- fun_l6_n920(x)
- else
- fun_l6_n827(x)
- end
-end
-
-def fun_l5_n433(x)
- if (x < 1)
- fun_l6_n887(x)
- else
- fun_l6_n149(x)
- end
-end
-
-def fun_l5_n434(x)
- if (x < 1)
- fun_l6_n413(x)
- else
- fun_l6_n44(x)
- end
-end
-
-def fun_l5_n435(x)
- if (x < 1)
- fun_l6_n474(x)
- else
- fun_l6_n107(x)
- end
-end
-
-def fun_l5_n436(x)
- if (x < 1)
- fun_l6_n807(x)
- else
- fun_l6_n636(x)
- end
-end
-
-def fun_l5_n437(x)
- if (x < 1)
- fun_l6_n616(x)
- else
- fun_l6_n615(x)
- end
-end
-
-def fun_l5_n438(x)
- if (x < 1)
- fun_l6_n384(x)
- else
- fun_l6_n535(x)
- end
-end
-
-def fun_l5_n439(x)
- if (x < 1)
- fun_l6_n326(x)
- else
- fun_l6_n929(x)
- end
-end
-
-def fun_l5_n440(x)
- if (x < 1)
- fun_l6_n852(x)
- else
- fun_l6_n597(x)
- end
-end
-
-def fun_l5_n441(x)
- if (x < 1)
- fun_l6_n246(x)
- else
- fun_l6_n991(x)
- end
-end
-
-def fun_l5_n442(x)
- if (x < 1)
- fun_l6_n258(x)
- else
- fun_l6_n140(x)
- end
-end
-
-def fun_l5_n443(x)
- if (x < 1)
- fun_l6_n815(x)
- else
- fun_l6_n600(x)
- end
-end
-
-def fun_l5_n444(x)
- if (x < 1)
- fun_l6_n153(x)
- else
- fun_l6_n902(x)
- end
-end
-
-def fun_l5_n445(x)
- if (x < 1)
- fun_l6_n289(x)
- else
- fun_l6_n240(x)
- end
-end
-
-def fun_l5_n446(x)
- if (x < 1)
- fun_l6_n398(x)
- else
- fun_l6_n273(x)
- end
-end
-
-def fun_l5_n447(x)
- if (x < 1)
- fun_l6_n537(x)
- else
- fun_l6_n8(x)
- end
-end
-
-def fun_l5_n448(x)
- if (x < 1)
- fun_l6_n801(x)
- else
- fun_l6_n389(x)
- end
-end
-
-def fun_l5_n449(x)
- if (x < 1)
- fun_l6_n363(x)
- else
- fun_l6_n17(x)
- end
-end
-
-def fun_l5_n450(x)
- if (x < 1)
- fun_l6_n511(x)
- else
- fun_l6_n151(x)
- end
-end
-
-def fun_l5_n451(x)
- if (x < 1)
- fun_l6_n640(x)
- else
- fun_l6_n785(x)
- end
-end
-
-def fun_l5_n452(x)
- if (x < 1)
- fun_l6_n961(x)
- else
- fun_l6_n567(x)
- end
-end
-
-def fun_l5_n453(x)
- if (x < 1)
- fun_l6_n608(x)
- else
- fun_l6_n910(x)
- end
-end
-
-def fun_l5_n454(x)
- if (x < 1)
- fun_l6_n898(x)
- else
- fun_l6_n231(x)
- end
-end
-
-def fun_l5_n455(x)
- if (x < 1)
- fun_l6_n205(x)
- else
- fun_l6_n162(x)
- end
-end
-
-def fun_l5_n456(x)
- if (x < 1)
- fun_l6_n374(x)
- else
- fun_l6_n544(x)
- end
-end
-
-def fun_l5_n457(x)
- if (x < 1)
- fun_l6_n514(x)
- else
- fun_l6_n522(x)
- end
-end
-
-def fun_l5_n458(x)
- if (x < 1)
- fun_l6_n385(x)
- else
- fun_l6_n808(x)
- end
-end
-
-def fun_l5_n459(x)
- if (x < 1)
- fun_l6_n525(x)
- else
- fun_l6_n144(x)
- end
-end
-
-def fun_l5_n460(x)
- if (x < 1)
- fun_l6_n781(x)
- else
- fun_l6_n180(x)
- end
-end
-
-def fun_l5_n461(x)
- if (x < 1)
- fun_l6_n681(x)
- else
- fun_l6_n273(x)
- end
-end
-
-def fun_l5_n462(x)
- if (x < 1)
- fun_l6_n497(x)
- else
- fun_l6_n399(x)
- end
-end
-
-def fun_l5_n463(x)
- if (x < 1)
- fun_l6_n261(x)
- else
- fun_l6_n311(x)
- end
-end
-
-def fun_l5_n464(x)
- if (x < 1)
- fun_l6_n64(x)
- else
- fun_l6_n253(x)
- end
-end
-
-def fun_l5_n465(x)
- if (x < 1)
- fun_l6_n388(x)
- else
- fun_l6_n300(x)
- end
-end
-
-def fun_l5_n466(x)
- if (x < 1)
- fun_l6_n822(x)
- else
- fun_l6_n277(x)
- end
-end
-
-def fun_l5_n467(x)
- if (x < 1)
- fun_l6_n909(x)
- else
- fun_l6_n605(x)
- end
-end
-
-def fun_l5_n468(x)
- if (x < 1)
- fun_l6_n879(x)
- else
- fun_l6_n870(x)
- end
-end
-
-def fun_l5_n469(x)
- if (x < 1)
- fun_l6_n351(x)
- else
- fun_l6_n917(x)
- end
-end
-
-def fun_l5_n470(x)
- if (x < 1)
- fun_l6_n202(x)
- else
- fun_l6_n40(x)
- end
-end
-
-def fun_l5_n471(x)
- if (x < 1)
- fun_l6_n782(x)
- else
- fun_l6_n839(x)
- end
-end
-
-def fun_l5_n472(x)
- if (x < 1)
- fun_l6_n370(x)
- else
- fun_l6_n868(x)
- end
-end
-
-def fun_l5_n473(x)
- if (x < 1)
- fun_l6_n556(x)
- else
- fun_l6_n722(x)
- end
-end
-
-def fun_l5_n474(x)
- if (x < 1)
- fun_l6_n220(x)
- else
- fun_l6_n994(x)
- end
-end
-
-def fun_l5_n475(x)
- if (x < 1)
- fun_l6_n266(x)
- else
- fun_l6_n872(x)
- end
-end
-
-def fun_l5_n476(x)
- if (x < 1)
- fun_l6_n720(x)
- else
- fun_l6_n412(x)
- end
-end
-
-def fun_l5_n477(x)
- if (x < 1)
- fun_l6_n284(x)
- else
- fun_l6_n90(x)
- end
-end
-
-def fun_l5_n478(x)
- if (x < 1)
- fun_l6_n716(x)
- else
- fun_l6_n125(x)
- end
-end
-
-def fun_l5_n479(x)
- if (x < 1)
- fun_l6_n136(x)
- else
- fun_l6_n232(x)
- end
-end
-
-def fun_l5_n480(x)
- if (x < 1)
- fun_l6_n627(x)
- else
- fun_l6_n641(x)
- end
-end
-
-def fun_l5_n481(x)
- if (x < 1)
- fun_l6_n411(x)
- else
- fun_l6_n943(x)
- end
-end
-
-def fun_l5_n482(x)
- if (x < 1)
- fun_l6_n86(x)
- else
- fun_l6_n839(x)
- end
-end
-
-def fun_l5_n483(x)
- if (x < 1)
- fun_l6_n988(x)
- else
- fun_l6_n329(x)
- end
-end
-
-def fun_l5_n484(x)
- if (x < 1)
- fun_l6_n595(x)
- else
- fun_l6_n499(x)
- end
-end
-
-def fun_l5_n485(x)
- if (x < 1)
- fun_l6_n912(x)
- else
- fun_l6_n267(x)
- end
-end
-
-def fun_l5_n486(x)
- if (x < 1)
- fun_l6_n334(x)
- else
- fun_l6_n459(x)
- end
-end
-
-def fun_l5_n487(x)
- if (x < 1)
- fun_l6_n771(x)
- else
- fun_l6_n458(x)
- end
-end
-
-def fun_l5_n488(x)
- if (x < 1)
- fun_l6_n609(x)
- else
- fun_l6_n280(x)
- end
-end
-
-def fun_l5_n489(x)
- if (x < 1)
- fun_l6_n564(x)
- else
- fun_l6_n564(x)
- end
-end
-
-def fun_l5_n490(x)
- if (x < 1)
- fun_l6_n271(x)
- else
- fun_l6_n904(x)
- end
-end
-
-def fun_l5_n491(x)
- if (x < 1)
- fun_l6_n338(x)
- else
- fun_l6_n694(x)
- end
-end
-
-def fun_l5_n492(x)
- if (x < 1)
- fun_l6_n596(x)
- else
- fun_l6_n191(x)
- end
-end
-
-def fun_l5_n493(x)
- if (x < 1)
- fun_l6_n369(x)
- else
- fun_l6_n513(x)
- end
-end
-
-def fun_l5_n494(x)
- if (x < 1)
- fun_l6_n972(x)
- else
- fun_l6_n945(x)
- end
-end
-
-def fun_l5_n495(x)
- if (x < 1)
- fun_l6_n747(x)
- else
- fun_l6_n96(x)
- end
-end
-
-def fun_l5_n496(x)
- if (x < 1)
- fun_l6_n220(x)
- else
- fun_l6_n665(x)
- end
-end
-
-def fun_l5_n497(x)
- if (x < 1)
- fun_l6_n793(x)
- else
- fun_l6_n468(x)
- end
-end
-
-def fun_l5_n498(x)
- if (x < 1)
- fun_l6_n227(x)
- else
- fun_l6_n576(x)
- end
-end
-
-def fun_l5_n499(x)
- if (x < 1)
- fun_l6_n356(x)
- else
- fun_l6_n614(x)
- end
-end
-
-def fun_l5_n500(x)
- if (x < 1)
- fun_l6_n256(x)
- else
- fun_l6_n237(x)
- end
-end
-
-def fun_l5_n501(x)
- if (x < 1)
- fun_l6_n503(x)
- else
- fun_l6_n159(x)
- end
-end
-
-def fun_l5_n502(x)
- if (x < 1)
- fun_l6_n523(x)
- else
- fun_l6_n547(x)
- end
-end
-
-def fun_l5_n503(x)
- if (x < 1)
- fun_l6_n778(x)
- else
- fun_l6_n600(x)
- end
-end
-
-def fun_l5_n504(x)
- if (x < 1)
- fun_l6_n654(x)
- else
- fun_l6_n950(x)
- end
-end
-
-def fun_l5_n505(x)
- if (x < 1)
- fun_l6_n105(x)
- else
- fun_l6_n881(x)
- end
-end
-
-def fun_l5_n506(x)
- if (x < 1)
- fun_l6_n956(x)
- else
- fun_l6_n71(x)
- end
-end
-
-def fun_l5_n507(x)
- if (x < 1)
- fun_l6_n33(x)
- else
- fun_l6_n431(x)
- end
-end
-
-def fun_l5_n508(x)
- if (x < 1)
- fun_l6_n587(x)
- else
- fun_l6_n1(x)
- end
-end
-
-def fun_l5_n509(x)
- if (x < 1)
- fun_l6_n258(x)
- else
- fun_l6_n547(x)
- end
-end
-
-def fun_l5_n510(x)
- if (x < 1)
- fun_l6_n816(x)
- else
- fun_l6_n558(x)
- end
-end
-
-def fun_l5_n511(x)
- if (x < 1)
- fun_l6_n61(x)
- else
- fun_l6_n10(x)
- end
-end
-
-def fun_l5_n512(x)
- if (x < 1)
- fun_l6_n674(x)
- else
- fun_l6_n466(x)
- end
-end
-
-def fun_l5_n513(x)
- if (x < 1)
- fun_l6_n580(x)
- else
- fun_l6_n398(x)
- end
-end
-
-def fun_l5_n514(x)
- if (x < 1)
- fun_l6_n495(x)
- else
- fun_l6_n407(x)
- end
-end
-
-def fun_l5_n515(x)
- if (x < 1)
- fun_l6_n639(x)
- else
- fun_l6_n214(x)
- end
-end
-
-def fun_l5_n516(x)
- if (x < 1)
- fun_l6_n15(x)
- else
- fun_l6_n716(x)
- end
-end
-
-def fun_l5_n517(x)
- if (x < 1)
- fun_l6_n645(x)
- else
- fun_l6_n645(x)
- end
-end
-
-def fun_l5_n518(x)
- if (x < 1)
- fun_l6_n615(x)
- else
- fun_l6_n44(x)
- end
-end
-
-def fun_l5_n519(x)
- if (x < 1)
- fun_l6_n399(x)
- else
- fun_l6_n663(x)
- end
-end
-
-def fun_l5_n520(x)
- if (x < 1)
- fun_l6_n85(x)
- else
- fun_l6_n870(x)
- end
-end
-
-def fun_l5_n521(x)
- if (x < 1)
- fun_l6_n14(x)
- else
- fun_l6_n965(x)
- end
-end
-
-def fun_l5_n522(x)
- if (x < 1)
- fun_l6_n24(x)
- else
- fun_l6_n581(x)
- end
-end
-
-def fun_l5_n523(x)
- if (x < 1)
- fun_l6_n501(x)
- else
- fun_l6_n913(x)
- end
-end
-
-def fun_l5_n524(x)
- if (x < 1)
- fun_l6_n772(x)
- else
- fun_l6_n999(x)
- end
-end
-
-def fun_l5_n525(x)
- if (x < 1)
- fun_l6_n847(x)
- else
- fun_l6_n422(x)
- end
-end
-
-def fun_l5_n526(x)
- if (x < 1)
- fun_l6_n377(x)
- else
- fun_l6_n986(x)
- end
-end
-
-def fun_l5_n527(x)
- if (x < 1)
- fun_l6_n548(x)
- else
- fun_l6_n40(x)
- end
-end
-
-def fun_l5_n528(x)
- if (x < 1)
- fun_l6_n392(x)
- else
- fun_l6_n577(x)
- end
-end
-
-def fun_l5_n529(x)
- if (x < 1)
- fun_l6_n101(x)
- else
- fun_l6_n26(x)
- end
-end
-
-def fun_l5_n530(x)
- if (x < 1)
- fun_l6_n800(x)
- else
- fun_l6_n958(x)
- end
-end
-
-def fun_l5_n531(x)
- if (x < 1)
- fun_l6_n72(x)
- else
- fun_l6_n887(x)
- end
-end
-
-def fun_l5_n532(x)
- if (x < 1)
- fun_l6_n467(x)
- else
- fun_l6_n740(x)
- end
-end
-
-def fun_l5_n533(x)
- if (x < 1)
- fun_l6_n264(x)
- else
- fun_l6_n683(x)
- end
-end
-
-def fun_l5_n534(x)
- if (x < 1)
- fun_l6_n953(x)
- else
- fun_l6_n560(x)
- end
-end
-
-def fun_l5_n535(x)
- if (x < 1)
- fun_l6_n854(x)
- else
- fun_l6_n59(x)
- end
-end
-
-def fun_l5_n536(x)
- if (x < 1)
- fun_l6_n940(x)
- else
- fun_l6_n832(x)
- end
-end
-
-def fun_l5_n537(x)
- if (x < 1)
- fun_l6_n297(x)
- else
- fun_l6_n18(x)
- end
-end
-
-def fun_l5_n538(x)
- if (x < 1)
- fun_l6_n188(x)
- else
- fun_l6_n537(x)
- end
-end
-
-def fun_l5_n539(x)
- if (x < 1)
- fun_l6_n992(x)
- else
- fun_l6_n825(x)
- end
-end
-
-def fun_l5_n540(x)
- if (x < 1)
- fun_l6_n691(x)
- else
- fun_l6_n850(x)
- end
-end
-
-def fun_l5_n541(x)
- if (x < 1)
- fun_l6_n858(x)
- else
- fun_l6_n948(x)
- end
-end
-
-def fun_l5_n542(x)
- if (x < 1)
- fun_l6_n923(x)
- else
- fun_l6_n112(x)
- end
-end
-
-def fun_l5_n543(x)
- if (x < 1)
- fun_l6_n419(x)
- else
- fun_l6_n4(x)
- end
-end
-
-def fun_l5_n544(x)
- if (x < 1)
- fun_l6_n766(x)
- else
- fun_l6_n147(x)
- end
-end
-
-def fun_l5_n545(x)
- if (x < 1)
- fun_l6_n327(x)
- else
- fun_l6_n327(x)
- end
-end
-
-def fun_l5_n546(x)
- if (x < 1)
- fun_l6_n94(x)
- else
- fun_l6_n662(x)
- end
-end
-
-def fun_l5_n547(x)
- if (x < 1)
- fun_l6_n764(x)
- else
- fun_l6_n521(x)
- end
-end
-
-def fun_l5_n548(x)
- if (x < 1)
- fun_l6_n509(x)
- else
- fun_l6_n231(x)
- end
-end
-
-def fun_l5_n549(x)
- if (x < 1)
- fun_l6_n370(x)
- else
- fun_l6_n599(x)
- end
-end
-
-def fun_l5_n550(x)
- if (x < 1)
- fun_l6_n710(x)
- else
- fun_l6_n104(x)
- end
-end
-
-def fun_l5_n551(x)
- if (x < 1)
- fun_l6_n677(x)
- else
- fun_l6_n184(x)
- end
-end
-
-def fun_l5_n552(x)
- if (x < 1)
- fun_l6_n700(x)
- else
- fun_l6_n299(x)
- end
-end
-
-def fun_l5_n553(x)
- if (x < 1)
- fun_l6_n688(x)
- else
- fun_l6_n934(x)
- end
-end
-
-def fun_l5_n554(x)
- if (x < 1)
- fun_l6_n771(x)
- else
- fun_l6_n989(x)
- end
-end
-
-def fun_l5_n555(x)
- if (x < 1)
- fun_l6_n164(x)
- else
- fun_l6_n197(x)
- end
-end
-
-def fun_l5_n556(x)
- if (x < 1)
- fun_l6_n901(x)
- else
- fun_l6_n235(x)
- end
-end
-
-def fun_l5_n557(x)
- if (x < 1)
- fun_l6_n990(x)
- else
- fun_l6_n490(x)
- end
-end
-
-def fun_l5_n558(x)
- if (x < 1)
- fun_l6_n476(x)
- else
- fun_l6_n612(x)
- end
-end
-
-def fun_l5_n559(x)
- if (x < 1)
- fun_l6_n761(x)
- else
- fun_l6_n3(x)
- end
-end
-
-def fun_l5_n560(x)
- if (x < 1)
- fun_l6_n461(x)
- else
- fun_l6_n832(x)
- end
-end
-
-def fun_l5_n561(x)
- if (x < 1)
- fun_l6_n206(x)
- else
- fun_l6_n815(x)
- end
-end
-
-def fun_l5_n562(x)
- if (x < 1)
- fun_l6_n180(x)
- else
- fun_l6_n640(x)
- end
-end
-
-def fun_l5_n563(x)
- if (x < 1)
- fun_l6_n612(x)
- else
- fun_l6_n900(x)
- end
-end
-
-def fun_l5_n564(x)
- if (x < 1)
- fun_l6_n31(x)
- else
- fun_l6_n290(x)
- end
-end
-
-def fun_l5_n565(x)
- if (x < 1)
- fun_l6_n322(x)
- else
- fun_l6_n136(x)
- end
-end
-
-def fun_l5_n566(x)
- if (x < 1)
- fun_l6_n657(x)
- else
- fun_l6_n649(x)
- end
-end
-
-def fun_l5_n567(x)
- if (x < 1)
- fun_l6_n683(x)
- else
- fun_l6_n903(x)
- end
-end
-
-def fun_l5_n568(x)
- if (x < 1)
- fun_l6_n391(x)
- else
- fun_l6_n117(x)
- end
-end
-
-def fun_l5_n569(x)
- if (x < 1)
- fun_l6_n868(x)
- else
- fun_l6_n644(x)
- end
-end
-
-def fun_l5_n570(x)
- if (x < 1)
- fun_l6_n493(x)
- else
- fun_l6_n638(x)
- end
-end
-
-def fun_l5_n571(x)
- if (x < 1)
- fun_l6_n207(x)
- else
- fun_l6_n650(x)
- end
-end
-
-def fun_l5_n572(x)
- if (x < 1)
- fun_l6_n575(x)
- else
- fun_l6_n421(x)
- end
-end
-
-def fun_l5_n573(x)
- if (x < 1)
- fun_l6_n757(x)
- else
- fun_l6_n515(x)
- end
-end
-
-def fun_l5_n574(x)
- if (x < 1)
- fun_l6_n619(x)
- else
- fun_l6_n39(x)
- end
-end
-
-def fun_l5_n575(x)
- if (x < 1)
- fun_l6_n91(x)
- else
- fun_l6_n79(x)
- end
-end
-
-def fun_l5_n576(x)
- if (x < 1)
- fun_l6_n492(x)
- else
- fun_l6_n938(x)
- end
-end
-
-def fun_l5_n577(x)
- if (x < 1)
- fun_l6_n181(x)
- else
- fun_l6_n98(x)
- end
-end
-
-def fun_l5_n578(x)
- if (x < 1)
- fun_l6_n823(x)
- else
- fun_l6_n528(x)
- end
-end
-
-def fun_l5_n579(x)
- if (x < 1)
- fun_l6_n218(x)
- else
- fun_l6_n613(x)
- end
-end
-
-def fun_l5_n580(x)
- if (x < 1)
- fun_l6_n81(x)
- else
- fun_l6_n318(x)
- end
-end
-
-def fun_l5_n581(x)
- if (x < 1)
- fun_l6_n953(x)
- else
- fun_l6_n162(x)
- end
-end
-
-def fun_l5_n582(x)
- if (x < 1)
- fun_l6_n225(x)
- else
- fun_l6_n441(x)
- end
-end
-
-def fun_l5_n583(x)
- if (x < 1)
- fun_l6_n862(x)
- else
- fun_l6_n939(x)
- end
-end
-
-def fun_l5_n584(x)
- if (x < 1)
- fun_l6_n401(x)
- else
- fun_l6_n149(x)
- end
-end
-
-def fun_l5_n585(x)
- if (x < 1)
- fun_l6_n94(x)
- else
- fun_l6_n320(x)
- end
-end
-
-def fun_l5_n586(x)
- if (x < 1)
- fun_l6_n609(x)
- else
- fun_l6_n524(x)
- end
-end
-
-def fun_l5_n587(x)
- if (x < 1)
- fun_l6_n412(x)
- else
- fun_l6_n350(x)
- end
-end
-
-def fun_l5_n588(x)
- if (x < 1)
- fun_l6_n874(x)
- else
- fun_l6_n217(x)
- end
-end
-
-def fun_l5_n589(x)
- if (x < 1)
- fun_l6_n989(x)
- else
- fun_l6_n62(x)
- end
-end
-
-def fun_l5_n590(x)
- if (x < 1)
- fun_l6_n91(x)
- else
- fun_l6_n360(x)
- end
-end
-
-def fun_l5_n591(x)
- if (x < 1)
- fun_l6_n392(x)
- else
- fun_l6_n530(x)
- end
-end
-
-def fun_l5_n592(x)
- if (x < 1)
- fun_l6_n635(x)
- else
- fun_l6_n268(x)
- end
-end
-
-def fun_l5_n593(x)
- if (x < 1)
- fun_l6_n747(x)
- else
- fun_l6_n345(x)
- end
-end
-
-def fun_l5_n594(x)
- if (x < 1)
- fun_l6_n450(x)
- else
- fun_l6_n165(x)
- end
-end
-
-def fun_l5_n595(x)
- if (x < 1)
- fun_l6_n960(x)
- else
- fun_l6_n256(x)
- end
-end
-
-def fun_l5_n596(x)
- if (x < 1)
- fun_l6_n724(x)
- else
- fun_l6_n506(x)
- end
-end
-
-def fun_l5_n597(x)
- if (x < 1)
- fun_l6_n809(x)
- else
- fun_l6_n180(x)
- end
-end
-
-def fun_l5_n598(x)
- if (x < 1)
- fun_l6_n799(x)
- else
- fun_l6_n59(x)
- end
-end
-
-def fun_l5_n599(x)
- if (x < 1)
- fun_l6_n412(x)
- else
- fun_l6_n868(x)
- end
-end
-
-def fun_l5_n600(x)
- if (x < 1)
- fun_l6_n459(x)
- else
- fun_l6_n537(x)
- end
-end
-
-def fun_l5_n601(x)
- if (x < 1)
- fun_l6_n321(x)
- else
- fun_l6_n39(x)
- end
-end
-
-def fun_l5_n602(x)
- if (x < 1)
- fun_l6_n561(x)
- else
- fun_l6_n413(x)
- end
-end
-
-def fun_l5_n603(x)
- if (x < 1)
- fun_l6_n173(x)
- else
- fun_l6_n324(x)
- end
-end
-
-def fun_l5_n604(x)
- if (x < 1)
- fun_l6_n583(x)
- else
- fun_l6_n763(x)
- end
-end
-
-def fun_l5_n605(x)
- if (x < 1)
- fun_l6_n200(x)
- else
- fun_l6_n996(x)
- end
-end
-
-def fun_l5_n606(x)
- if (x < 1)
- fun_l6_n465(x)
- else
- fun_l6_n777(x)
- end
-end
-
-def fun_l5_n607(x)
- if (x < 1)
- fun_l6_n744(x)
- else
- fun_l6_n917(x)
- end
-end
-
-def fun_l5_n608(x)
- if (x < 1)
- fun_l6_n825(x)
- else
- fun_l6_n751(x)
- end
-end
-
-def fun_l5_n609(x)
- if (x < 1)
- fun_l6_n357(x)
- else
- fun_l6_n889(x)
- end
-end
-
-def fun_l5_n610(x)
- if (x < 1)
- fun_l6_n534(x)
- else
- fun_l6_n628(x)
- end
-end
-
-def fun_l5_n611(x)
- if (x < 1)
- fun_l6_n242(x)
- else
- fun_l6_n57(x)
- end
-end
-
-def fun_l5_n612(x)
- if (x < 1)
- fun_l6_n426(x)
- else
- fun_l6_n295(x)
- end
-end
-
-def fun_l5_n613(x)
- if (x < 1)
- fun_l6_n218(x)
- else
- fun_l6_n194(x)
- end
-end
-
-def fun_l5_n614(x)
- if (x < 1)
- fun_l6_n618(x)
- else
- fun_l6_n757(x)
- end
-end
-
-def fun_l5_n615(x)
- if (x < 1)
- fun_l6_n708(x)
- else
- fun_l6_n187(x)
- end
-end
-
-def fun_l5_n616(x)
- if (x < 1)
- fun_l6_n824(x)
- else
- fun_l6_n384(x)
- end
-end
-
-def fun_l5_n617(x)
- if (x < 1)
- fun_l6_n149(x)
- else
- fun_l6_n741(x)
- end
-end
-
-def fun_l5_n618(x)
- if (x < 1)
- fun_l6_n889(x)
- else
- fun_l6_n768(x)
- end
-end
-
-def fun_l5_n619(x)
- if (x < 1)
- fun_l6_n144(x)
- else
- fun_l6_n746(x)
- end
-end
-
-def fun_l5_n620(x)
- if (x < 1)
- fun_l6_n338(x)
- else
- fun_l6_n757(x)
- end
-end
-
-def fun_l5_n621(x)
- if (x < 1)
- fun_l6_n623(x)
- else
- fun_l6_n432(x)
- end
-end
-
-def fun_l5_n622(x)
- if (x < 1)
- fun_l6_n139(x)
- else
- fun_l6_n162(x)
- end
-end
-
-def fun_l5_n623(x)
- if (x < 1)
- fun_l6_n371(x)
- else
- fun_l6_n297(x)
- end
-end
-
-def fun_l5_n624(x)
- if (x < 1)
- fun_l6_n166(x)
- else
- fun_l6_n172(x)
- end
-end
-
-def fun_l5_n625(x)
- if (x < 1)
- fun_l6_n506(x)
- else
- fun_l6_n7(x)
- end
-end
-
-def fun_l5_n626(x)
- if (x < 1)
- fun_l6_n334(x)
- else
- fun_l6_n631(x)
- end
-end
-
-def fun_l5_n627(x)
- if (x < 1)
- fun_l6_n209(x)
- else
- fun_l6_n316(x)
- end
-end
-
-def fun_l5_n628(x)
- if (x < 1)
- fun_l6_n461(x)
- else
- fun_l6_n34(x)
- end
-end
-
-def fun_l5_n629(x)
- if (x < 1)
- fun_l6_n6(x)
- else
- fun_l6_n818(x)
- end
-end
-
-def fun_l5_n630(x)
- if (x < 1)
- fun_l6_n265(x)
- else
- fun_l6_n111(x)
- end
-end
-
-def fun_l5_n631(x)
- if (x < 1)
- fun_l6_n493(x)
- else
- fun_l6_n64(x)
- end
-end
-
-def fun_l5_n632(x)
- if (x < 1)
- fun_l6_n513(x)
- else
- fun_l6_n890(x)
- end
-end
-
-def fun_l5_n633(x)
- if (x < 1)
- fun_l6_n295(x)
- else
- fun_l6_n295(x)
- end
-end
-
-def fun_l5_n634(x)
- if (x < 1)
- fun_l6_n158(x)
- else
- fun_l6_n971(x)
- end
-end
-
-def fun_l5_n635(x)
- if (x < 1)
- fun_l6_n171(x)
- else
- fun_l6_n337(x)
- end
-end
-
-def fun_l5_n636(x)
- if (x < 1)
- fun_l6_n943(x)
- else
- fun_l6_n502(x)
- end
-end
-
-def fun_l5_n637(x)
- if (x < 1)
- fun_l6_n339(x)
- else
- fun_l6_n638(x)
- end
-end
-
-def fun_l5_n638(x)
- if (x < 1)
- fun_l6_n155(x)
- else
- fun_l6_n393(x)
- end
-end
-
-def fun_l5_n639(x)
- if (x < 1)
- fun_l6_n29(x)
- else
- fun_l6_n506(x)
- end
-end
-
-def fun_l5_n640(x)
- if (x < 1)
- fun_l6_n677(x)
- else
- fun_l6_n606(x)
- end
-end
-
-def fun_l5_n641(x)
- if (x < 1)
- fun_l6_n306(x)
- else
- fun_l6_n571(x)
- end
-end
-
-def fun_l5_n642(x)
- if (x < 1)
- fun_l6_n490(x)
- else
- fun_l6_n281(x)
- end
-end
-
-def fun_l5_n643(x)
- if (x < 1)
- fun_l6_n392(x)
- else
- fun_l6_n686(x)
- end
-end
-
-def fun_l5_n644(x)
- if (x < 1)
- fun_l6_n257(x)
- else
- fun_l6_n358(x)
- end
-end
-
-def fun_l5_n645(x)
- if (x < 1)
- fun_l6_n949(x)
- else
- fun_l6_n15(x)
- end
-end
-
-def fun_l5_n646(x)
- if (x < 1)
- fun_l6_n866(x)
- else
- fun_l6_n657(x)
- end
-end
-
-def fun_l5_n647(x)
- if (x < 1)
- fun_l6_n624(x)
- else
- fun_l6_n390(x)
- end
-end
-
-def fun_l5_n648(x)
- if (x < 1)
- fun_l6_n394(x)
- else
- fun_l6_n951(x)
- end
-end
-
-def fun_l5_n649(x)
- if (x < 1)
- fun_l6_n99(x)
- else
- fun_l6_n160(x)
- end
-end
-
-def fun_l5_n650(x)
- if (x < 1)
- fun_l6_n84(x)
- else
- fun_l6_n111(x)
- end
-end
-
-def fun_l5_n651(x)
- if (x < 1)
- fun_l6_n635(x)
- else
- fun_l6_n507(x)
- end
-end
-
-def fun_l5_n652(x)
- if (x < 1)
- fun_l6_n674(x)
- else
- fun_l6_n501(x)
- end
-end
-
-def fun_l5_n653(x)
- if (x < 1)
- fun_l6_n171(x)
- else
- fun_l6_n645(x)
- end
-end
-
-def fun_l5_n654(x)
- if (x < 1)
- fun_l6_n327(x)
- else
- fun_l6_n152(x)
- end
-end
-
-def fun_l5_n655(x)
- if (x < 1)
- fun_l6_n210(x)
- else
- fun_l6_n441(x)
- end
-end
-
-def fun_l5_n656(x)
- if (x < 1)
- fun_l6_n691(x)
- else
- fun_l6_n813(x)
- end
-end
-
-def fun_l5_n657(x)
- if (x < 1)
- fun_l6_n671(x)
- else
- fun_l6_n683(x)
- end
-end
-
-def fun_l5_n658(x)
- if (x < 1)
- fun_l6_n939(x)
- else
- fun_l6_n580(x)
- end
-end
-
-def fun_l5_n659(x)
- if (x < 1)
- fun_l6_n152(x)
- else
- fun_l6_n159(x)
- end
-end
-
-def fun_l5_n660(x)
- if (x < 1)
- fun_l6_n50(x)
- else
- fun_l6_n911(x)
- end
-end
-
-def fun_l5_n661(x)
- if (x < 1)
- fun_l6_n700(x)
- else
- fun_l6_n972(x)
- end
-end
-
-def fun_l5_n662(x)
- if (x < 1)
- fun_l6_n22(x)
- else
- fun_l6_n82(x)
- end
-end
-
-def fun_l5_n663(x)
- if (x < 1)
- fun_l6_n51(x)
- else
- fun_l6_n827(x)
- end
-end
-
-def fun_l5_n664(x)
- if (x < 1)
- fun_l6_n997(x)
- else
- fun_l6_n289(x)
- end
-end
-
-def fun_l5_n665(x)
- if (x < 1)
- fun_l6_n666(x)
- else
- fun_l6_n775(x)
- end
-end
-
-def fun_l5_n666(x)
- if (x < 1)
- fun_l6_n373(x)
- else
- fun_l6_n175(x)
- end
-end
-
-def fun_l5_n667(x)
- if (x < 1)
- fun_l6_n551(x)
- else
- fun_l6_n772(x)
- end
-end
-
-def fun_l5_n668(x)
- if (x < 1)
- fun_l6_n107(x)
- else
- fun_l6_n197(x)
- end
-end
-
-def fun_l5_n669(x)
- if (x < 1)
- fun_l6_n244(x)
- else
- fun_l6_n968(x)
- end
-end
-
-def fun_l5_n670(x)
- if (x < 1)
- fun_l6_n798(x)
- else
- fun_l6_n30(x)
- end
-end
-
-def fun_l5_n671(x)
- if (x < 1)
- fun_l6_n48(x)
- else
- fun_l6_n186(x)
- end
-end
-
-def fun_l5_n672(x)
- if (x < 1)
- fun_l6_n373(x)
- else
- fun_l6_n937(x)
- end
-end
-
-def fun_l5_n673(x)
- if (x < 1)
- fun_l6_n759(x)
- else
- fun_l6_n92(x)
- end
-end
-
-def fun_l5_n674(x)
- if (x < 1)
- fun_l6_n380(x)
- else
- fun_l6_n772(x)
- end
-end
-
-def fun_l5_n675(x)
- if (x < 1)
- fun_l6_n916(x)
- else
- fun_l6_n329(x)
- end
-end
-
-def fun_l5_n676(x)
- if (x < 1)
- fun_l6_n110(x)
- else
- fun_l6_n951(x)
- end
-end
-
-def fun_l5_n677(x)
- if (x < 1)
- fun_l6_n363(x)
- else
- fun_l6_n35(x)
- end
-end
-
-def fun_l5_n678(x)
- if (x < 1)
- fun_l6_n484(x)
- else
- fun_l6_n492(x)
- end
-end
-
-def fun_l5_n679(x)
- if (x < 1)
- fun_l6_n801(x)
- else
- fun_l6_n279(x)
- end
-end
-
-def fun_l5_n680(x)
- if (x < 1)
- fun_l6_n499(x)
- else
- fun_l6_n561(x)
- end
-end
-
-def fun_l5_n681(x)
- if (x < 1)
- fun_l6_n800(x)
- else
- fun_l6_n890(x)
- end
-end
-
-def fun_l5_n682(x)
- if (x < 1)
- fun_l6_n191(x)
- else
- fun_l6_n686(x)
- end
-end
-
-def fun_l5_n683(x)
- if (x < 1)
- fun_l6_n318(x)
- else
- fun_l6_n683(x)
- end
-end
-
-def fun_l5_n684(x)
- if (x < 1)
- fun_l6_n500(x)
- else
- fun_l6_n914(x)
- end
-end
-
-def fun_l5_n685(x)
- if (x < 1)
- fun_l6_n24(x)
- else
- fun_l6_n945(x)
- end
-end
-
-def fun_l5_n686(x)
- if (x < 1)
- fun_l6_n602(x)
- else
- fun_l6_n291(x)
- end
-end
-
-def fun_l5_n687(x)
- if (x < 1)
- fun_l6_n999(x)
- else
- fun_l6_n86(x)
- end
-end
-
-def fun_l5_n688(x)
- if (x < 1)
- fun_l6_n106(x)
- else
- fun_l6_n754(x)
- end
-end
-
-def fun_l5_n689(x)
- if (x < 1)
- fun_l6_n452(x)
- else
- fun_l6_n229(x)
- end
-end
-
-def fun_l5_n690(x)
- if (x < 1)
- fun_l6_n672(x)
- else
- fun_l6_n587(x)
- end
-end
-
-def fun_l5_n691(x)
- if (x < 1)
- fun_l6_n532(x)
- else
- fun_l6_n56(x)
- end
-end
-
-def fun_l5_n692(x)
- if (x < 1)
- fun_l6_n606(x)
- else
- fun_l6_n552(x)
- end
-end
-
-def fun_l5_n693(x)
- if (x < 1)
- fun_l6_n742(x)
- else
- fun_l6_n862(x)
- end
-end
-
-def fun_l5_n694(x)
- if (x < 1)
- fun_l6_n964(x)
- else
- fun_l6_n475(x)
- end
-end
-
-def fun_l5_n695(x)
- if (x < 1)
- fun_l6_n179(x)
- else
- fun_l6_n947(x)
- end
-end
-
-def fun_l5_n696(x)
- if (x < 1)
- fun_l6_n563(x)
- else
- fun_l6_n329(x)
- end
-end
-
-def fun_l5_n697(x)
- if (x < 1)
- fun_l6_n786(x)
- else
- fun_l6_n502(x)
- end
-end
-
-def fun_l5_n698(x)
- if (x < 1)
- fun_l6_n178(x)
- else
- fun_l6_n757(x)
- end
-end
-
-def fun_l5_n699(x)
- if (x < 1)
- fun_l6_n248(x)
- else
- fun_l6_n288(x)
- end
-end
-
-def fun_l5_n700(x)
- if (x < 1)
- fun_l6_n262(x)
- else
- fun_l6_n650(x)
- end
-end
-
-def fun_l5_n701(x)
- if (x < 1)
- fun_l6_n90(x)
- else
- fun_l6_n964(x)
- end
-end
-
-def fun_l5_n702(x)
- if (x < 1)
- fun_l6_n864(x)
- else
- fun_l6_n743(x)
- end
-end
-
-def fun_l5_n703(x)
- if (x < 1)
- fun_l6_n816(x)
- else
- fun_l6_n364(x)
- end
-end
-
-def fun_l5_n704(x)
- if (x < 1)
- fun_l6_n590(x)
- else
- fun_l6_n434(x)
- end
-end
-
-def fun_l5_n705(x)
- if (x < 1)
- fun_l6_n875(x)
- else
- fun_l6_n539(x)
- end
-end
-
-def fun_l5_n706(x)
- if (x < 1)
- fun_l6_n964(x)
- else
- fun_l6_n564(x)
- end
-end
-
-def fun_l5_n707(x)
- if (x < 1)
- fun_l6_n315(x)
- else
- fun_l6_n460(x)
- end
-end
-
-def fun_l5_n708(x)
- if (x < 1)
- fun_l6_n139(x)
- else
- fun_l6_n210(x)
- end
-end
-
-def fun_l5_n709(x)
- if (x < 1)
- fun_l6_n593(x)
- else
- fun_l6_n933(x)
- end
-end
-
-def fun_l5_n710(x)
- if (x < 1)
- fun_l6_n37(x)
- else
- fun_l6_n459(x)
- end
-end
-
-def fun_l5_n711(x)
- if (x < 1)
- fun_l6_n768(x)
- else
- fun_l6_n256(x)
- end
-end
-
-def fun_l5_n712(x)
- if (x < 1)
- fun_l6_n506(x)
- else
- fun_l6_n936(x)
- end
-end
-
-def fun_l5_n713(x)
- if (x < 1)
- fun_l6_n971(x)
- else
- fun_l6_n575(x)
- end
-end
-
-def fun_l5_n714(x)
- if (x < 1)
- fun_l6_n498(x)
- else
- fun_l6_n932(x)
- end
-end
-
-def fun_l5_n715(x)
- if (x < 1)
- fun_l6_n362(x)
- else
- fun_l6_n949(x)
- end
-end
-
-def fun_l5_n716(x)
- if (x < 1)
- fun_l6_n706(x)
- else
- fun_l6_n788(x)
- end
-end
-
-def fun_l5_n717(x)
- if (x < 1)
- fun_l6_n405(x)
- else
- fun_l6_n803(x)
- end
-end
-
-def fun_l5_n718(x)
- if (x < 1)
- fun_l6_n166(x)
- else
- fun_l6_n917(x)
- end
-end
-
-def fun_l5_n719(x)
- if (x < 1)
- fun_l6_n899(x)
- else
- fun_l6_n836(x)
- end
-end
-
-def fun_l5_n720(x)
- if (x < 1)
- fun_l6_n805(x)
- else
- fun_l6_n159(x)
- end
-end
-
-def fun_l5_n721(x)
- if (x < 1)
- fun_l6_n960(x)
- else
- fun_l6_n113(x)
- end
-end
-
-def fun_l5_n722(x)
- if (x < 1)
- fun_l6_n807(x)
- else
- fun_l6_n533(x)
- end
-end
-
-def fun_l5_n723(x)
- if (x < 1)
- fun_l6_n480(x)
- else
- fun_l6_n907(x)
- end
-end
-
-def fun_l5_n724(x)
- if (x < 1)
- fun_l6_n951(x)
- else
- fun_l6_n793(x)
- end
-end
-
-def fun_l5_n725(x)
- if (x < 1)
- fun_l6_n951(x)
- else
- fun_l6_n771(x)
- end
-end
-
-def fun_l5_n726(x)
- if (x < 1)
- fun_l6_n435(x)
- else
- fun_l6_n336(x)
- end
-end
-
-def fun_l5_n727(x)
- if (x < 1)
- fun_l6_n222(x)
- else
- fun_l6_n393(x)
- end
-end
-
-def fun_l5_n728(x)
- if (x < 1)
- fun_l6_n988(x)
- else
- fun_l6_n402(x)
- end
-end
-
-def fun_l5_n729(x)
- if (x < 1)
- fun_l6_n9(x)
- else
- fun_l6_n46(x)
- end
-end
-
-def fun_l5_n730(x)
- if (x < 1)
- fun_l6_n722(x)
- else
- fun_l6_n112(x)
- end
-end
-
-def fun_l5_n731(x)
- if (x < 1)
- fun_l6_n543(x)
- else
- fun_l6_n813(x)
- end
-end
-
-def fun_l5_n732(x)
- if (x < 1)
- fun_l6_n337(x)
- else
- fun_l6_n245(x)
- end
-end
-
-def fun_l5_n733(x)
- if (x < 1)
- fun_l6_n84(x)
- else
- fun_l6_n335(x)
- end
-end
-
-def fun_l5_n734(x)
- if (x < 1)
- fun_l6_n697(x)
- else
- fun_l6_n498(x)
- end
-end
-
-def fun_l5_n735(x)
- if (x < 1)
- fun_l6_n2(x)
- else
- fun_l6_n895(x)
- end
-end
-
-def fun_l5_n736(x)
- if (x < 1)
- fun_l6_n619(x)
- else
- fun_l6_n163(x)
- end
-end
-
-def fun_l5_n737(x)
- if (x < 1)
- fun_l6_n237(x)
- else
- fun_l6_n6(x)
- end
-end
-
-def fun_l5_n738(x)
- if (x < 1)
- fun_l6_n259(x)
- else
- fun_l6_n95(x)
- end
-end
-
-def fun_l5_n739(x)
- if (x < 1)
- fun_l6_n98(x)
- else
- fun_l6_n331(x)
- end
-end
-
-def fun_l5_n740(x)
- if (x < 1)
- fun_l6_n489(x)
- else
- fun_l6_n305(x)
- end
-end
-
-def fun_l5_n741(x)
- if (x < 1)
- fun_l6_n493(x)
- else
- fun_l6_n525(x)
- end
-end
-
-def fun_l5_n742(x)
- if (x < 1)
- fun_l6_n269(x)
- else
- fun_l6_n742(x)
- end
-end
-
-def fun_l5_n743(x)
- if (x < 1)
- fun_l6_n194(x)
- else
- fun_l6_n254(x)
- end
-end
-
-def fun_l5_n744(x)
- if (x < 1)
- fun_l6_n247(x)
- else
- fun_l6_n909(x)
- end
-end
-
-def fun_l5_n745(x)
- if (x < 1)
- fun_l6_n388(x)
- else
- fun_l6_n657(x)
- end
-end
-
-def fun_l5_n746(x)
- if (x < 1)
- fun_l6_n27(x)
- else
- fun_l6_n286(x)
- end
-end
-
-def fun_l5_n747(x)
- if (x < 1)
- fun_l6_n659(x)
- else
- fun_l6_n895(x)
- end
-end
-
-def fun_l5_n748(x)
- if (x < 1)
- fun_l6_n538(x)
- else
- fun_l6_n667(x)
- end
-end
-
-def fun_l5_n749(x)
- if (x < 1)
- fun_l6_n208(x)
- else
- fun_l6_n493(x)
- end
-end
-
-def fun_l5_n750(x)
- if (x < 1)
- fun_l6_n326(x)
- else
- fun_l6_n570(x)
- end
-end
-
-def fun_l5_n751(x)
- if (x < 1)
- fun_l6_n437(x)
- else
- fun_l6_n716(x)
- end
-end
-
-def fun_l5_n752(x)
- if (x < 1)
- fun_l6_n957(x)
- else
- fun_l6_n231(x)
- end
-end
-
-def fun_l5_n753(x)
- if (x < 1)
- fun_l6_n846(x)
- else
- fun_l6_n900(x)
- end
-end
-
-def fun_l5_n754(x)
- if (x < 1)
- fun_l6_n81(x)
- else
- fun_l6_n464(x)
- end
-end
-
-def fun_l5_n755(x)
- if (x < 1)
- fun_l6_n735(x)
- else
- fun_l6_n232(x)
- end
-end
-
-def fun_l5_n756(x)
- if (x < 1)
- fun_l6_n577(x)
- else
- fun_l6_n804(x)
- end
-end
-
-def fun_l5_n757(x)
- if (x < 1)
- fun_l6_n363(x)
- else
- fun_l6_n155(x)
- end
-end
-
-def fun_l5_n758(x)
- if (x < 1)
- fun_l6_n534(x)
- else
- fun_l6_n827(x)
- end
-end
-
-def fun_l5_n759(x)
- if (x < 1)
- fun_l6_n711(x)
- else
- fun_l6_n53(x)
- end
-end
-
-def fun_l5_n760(x)
- if (x < 1)
- fun_l6_n80(x)
- else
- fun_l6_n734(x)
- end
-end
-
-def fun_l5_n761(x)
- if (x < 1)
- fun_l6_n811(x)
- else
- fun_l6_n691(x)
- end
-end
-
-def fun_l5_n762(x)
- if (x < 1)
- fun_l6_n847(x)
- else
- fun_l6_n570(x)
- end
-end
-
-def fun_l5_n763(x)
- if (x < 1)
- fun_l6_n30(x)
- else
- fun_l6_n283(x)
- end
-end
-
-def fun_l5_n764(x)
- if (x < 1)
- fun_l6_n270(x)
- else
- fun_l6_n965(x)
- end
-end
-
-def fun_l5_n765(x)
- if (x < 1)
- fun_l6_n936(x)
- else
- fun_l6_n772(x)
- end
-end
-
-def fun_l5_n766(x)
- if (x < 1)
- fun_l6_n181(x)
- else
- fun_l6_n682(x)
- end
-end
-
-def fun_l5_n767(x)
- if (x < 1)
- fun_l6_n327(x)
- else
- fun_l6_n5(x)
- end
-end
-
-def fun_l5_n768(x)
- if (x < 1)
- fun_l6_n296(x)
- else
- fun_l6_n940(x)
- end
-end
-
-def fun_l5_n769(x)
- if (x < 1)
- fun_l6_n543(x)
- else
- fun_l6_n871(x)
- end
-end
-
-def fun_l5_n770(x)
- if (x < 1)
- fun_l6_n670(x)
- else
- fun_l6_n128(x)
- end
-end
-
-def fun_l5_n771(x)
- if (x < 1)
- fun_l6_n184(x)
- else
- fun_l6_n794(x)
- end
-end
-
-def fun_l5_n772(x)
- if (x < 1)
- fun_l6_n571(x)
- else
- fun_l6_n337(x)
- end
-end
-
-def fun_l5_n773(x)
- if (x < 1)
- fun_l6_n674(x)
- else
- fun_l6_n712(x)
- end
-end
-
-def fun_l5_n774(x)
- if (x < 1)
- fun_l6_n572(x)
- else
- fun_l6_n944(x)
- end
-end
-
-def fun_l5_n775(x)
- if (x < 1)
- fun_l6_n122(x)
- else
- fun_l6_n897(x)
- end
-end
-
-def fun_l5_n776(x)
- if (x < 1)
- fun_l6_n461(x)
- else
- fun_l6_n202(x)
- end
-end
-
-def fun_l5_n777(x)
- if (x < 1)
- fun_l6_n99(x)
- else
- fun_l6_n256(x)
- end
-end
-
-def fun_l5_n778(x)
- if (x < 1)
- fun_l6_n547(x)
- else
- fun_l6_n138(x)
- end
-end
-
-def fun_l5_n779(x)
- if (x < 1)
- fun_l6_n56(x)
- else
- fun_l6_n682(x)
- end
-end
-
-def fun_l5_n780(x)
- if (x < 1)
- fun_l6_n10(x)
- else
- fun_l6_n238(x)
- end
-end
-
-def fun_l5_n781(x)
- if (x < 1)
- fun_l6_n577(x)
- else
- fun_l6_n590(x)
- end
-end
-
-def fun_l5_n782(x)
- if (x < 1)
- fun_l6_n415(x)
- else
- fun_l6_n522(x)
- end
-end
-
-def fun_l5_n783(x)
- if (x < 1)
- fun_l6_n255(x)
- else
- fun_l6_n182(x)
- end
-end
-
-def fun_l5_n784(x)
- if (x < 1)
- fun_l6_n755(x)
- else
- fun_l6_n644(x)
- end
-end
-
-def fun_l5_n785(x)
- if (x < 1)
- fun_l6_n39(x)
- else
- fun_l6_n296(x)
- end
-end
-
-def fun_l5_n786(x)
- if (x < 1)
- fun_l6_n17(x)
- else
- fun_l6_n811(x)
- end
-end
-
-def fun_l5_n787(x)
- if (x < 1)
- fun_l6_n814(x)
- else
- fun_l6_n989(x)
- end
-end
-
-def fun_l5_n788(x)
- if (x < 1)
- fun_l6_n791(x)
- else
- fun_l6_n688(x)
- end
-end
-
-def fun_l5_n789(x)
- if (x < 1)
- fun_l6_n415(x)
- else
- fun_l6_n218(x)
- end
-end
-
-def fun_l5_n790(x)
- if (x < 1)
- fun_l6_n227(x)
- else
- fun_l6_n391(x)
- end
-end
-
-def fun_l5_n791(x)
- if (x < 1)
- fun_l6_n232(x)
- else
- fun_l6_n644(x)
- end
-end
-
-def fun_l5_n792(x)
- if (x < 1)
- fun_l6_n325(x)
- else
- fun_l6_n740(x)
- end
-end
-
-def fun_l5_n793(x)
- if (x < 1)
- fun_l6_n926(x)
- else
- fun_l6_n133(x)
- end
-end
-
-def fun_l5_n794(x)
- if (x < 1)
- fun_l6_n114(x)
- else
- fun_l6_n76(x)
- end
-end
-
-def fun_l5_n795(x)
- if (x < 1)
- fun_l6_n332(x)
- else
- fun_l6_n198(x)
- end
-end
-
-def fun_l5_n796(x)
- if (x < 1)
- fun_l6_n584(x)
- else
- fun_l6_n298(x)
- end
-end
-
-def fun_l5_n797(x)
- if (x < 1)
- fun_l6_n966(x)
- else
- fun_l6_n956(x)
- end
-end
-
-def fun_l5_n798(x)
- if (x < 1)
- fun_l6_n604(x)
- else
- fun_l6_n311(x)
- end
-end
-
-def fun_l5_n799(x)
- if (x < 1)
- fun_l6_n444(x)
- else
- fun_l6_n934(x)
- end
-end
-
-def fun_l5_n800(x)
- if (x < 1)
- fun_l6_n805(x)
- else
- fun_l6_n83(x)
- end
-end
-
-def fun_l5_n801(x)
- if (x < 1)
- fun_l6_n996(x)
- else
- fun_l6_n282(x)
- end
-end
-
-def fun_l5_n802(x)
- if (x < 1)
- fun_l6_n759(x)
- else
- fun_l6_n681(x)
- end
-end
-
-def fun_l5_n803(x)
- if (x < 1)
- fun_l6_n480(x)
- else
- fun_l6_n536(x)
- end
-end
-
-def fun_l5_n804(x)
- if (x < 1)
- fun_l6_n536(x)
- else
- fun_l6_n64(x)
- end
-end
-
-def fun_l5_n805(x)
- if (x < 1)
- fun_l6_n992(x)
- else
- fun_l6_n116(x)
- end
-end
-
-def fun_l5_n806(x)
- if (x < 1)
- fun_l6_n446(x)
- else
- fun_l6_n553(x)
- end
-end
-
-def fun_l5_n807(x)
- if (x < 1)
- fun_l6_n822(x)
- else
- fun_l6_n80(x)
- end
-end
-
-def fun_l5_n808(x)
- if (x < 1)
- fun_l6_n912(x)
- else
- fun_l6_n525(x)
- end
-end
-
-def fun_l5_n809(x)
- if (x < 1)
- fun_l6_n824(x)
- else
- fun_l6_n356(x)
- end
-end
-
-def fun_l5_n810(x)
- if (x < 1)
- fun_l6_n144(x)
- else
- fun_l6_n193(x)
- end
-end
-
-def fun_l5_n811(x)
- if (x < 1)
- fun_l6_n27(x)
- else
- fun_l6_n810(x)
- end
-end
-
-def fun_l5_n812(x)
- if (x < 1)
- fun_l6_n244(x)
- else
- fun_l6_n696(x)
- end
-end
-
-def fun_l5_n813(x)
- if (x < 1)
- fun_l6_n408(x)
- else
- fun_l6_n46(x)
- end
-end
-
-def fun_l5_n814(x)
- if (x < 1)
- fun_l6_n496(x)
- else
- fun_l6_n149(x)
- end
-end
-
-def fun_l5_n815(x)
- if (x < 1)
- fun_l6_n100(x)
- else
- fun_l6_n765(x)
- end
-end
-
-def fun_l5_n816(x)
- if (x < 1)
- fun_l6_n731(x)
- else
- fun_l6_n953(x)
- end
-end
-
-def fun_l5_n817(x)
- if (x < 1)
- fun_l6_n997(x)
- else
- fun_l6_n849(x)
- end
-end
-
-def fun_l5_n818(x)
- if (x < 1)
- fun_l6_n570(x)
- else
- fun_l6_n918(x)
- end
-end
-
-def fun_l5_n819(x)
- if (x < 1)
- fun_l6_n473(x)
- else
- fun_l6_n955(x)
- end
-end
-
-def fun_l5_n820(x)
- if (x < 1)
- fun_l6_n691(x)
- else
- fun_l6_n271(x)
- end
-end
-
-def fun_l5_n821(x)
- if (x < 1)
- fun_l6_n935(x)
- else
- fun_l6_n386(x)
- end
-end
-
-def fun_l5_n822(x)
- if (x < 1)
- fun_l6_n210(x)
- else
- fun_l6_n871(x)
- end
-end
-
-def fun_l5_n823(x)
- if (x < 1)
- fun_l6_n907(x)
- else
- fun_l6_n596(x)
- end
-end
-
-def fun_l5_n824(x)
- if (x < 1)
- fun_l6_n701(x)
- else
- fun_l6_n541(x)
- end
-end
-
-def fun_l5_n825(x)
- if (x < 1)
- fun_l6_n477(x)
- else
- fun_l6_n207(x)
- end
-end
-
-def fun_l5_n826(x)
- if (x < 1)
- fun_l6_n95(x)
- else
- fun_l6_n26(x)
- end
-end
-
-def fun_l5_n827(x)
- if (x < 1)
- fun_l6_n908(x)
- else
- fun_l6_n369(x)
- end
-end
-
-def fun_l5_n828(x)
- if (x < 1)
- fun_l6_n213(x)
- else
- fun_l6_n607(x)
- end
-end
-
-def fun_l5_n829(x)
- if (x < 1)
- fun_l6_n763(x)
- else
- fun_l6_n753(x)
- end
-end
-
-def fun_l5_n830(x)
- if (x < 1)
- fun_l6_n24(x)
- else
- fun_l6_n157(x)
- end
-end
-
-def fun_l5_n831(x)
- if (x < 1)
- fun_l6_n262(x)
- else
- fun_l6_n826(x)
- end
-end
-
-def fun_l5_n832(x)
- if (x < 1)
- fun_l6_n743(x)
- else
- fun_l6_n37(x)
- end
-end
-
-def fun_l5_n833(x)
- if (x < 1)
- fun_l6_n532(x)
- else
- fun_l6_n31(x)
- end
-end
-
-def fun_l5_n834(x)
- if (x < 1)
- fun_l6_n309(x)
- else
- fun_l6_n454(x)
- end
-end
-
-def fun_l5_n835(x)
- if (x < 1)
- fun_l6_n917(x)
- else
- fun_l6_n721(x)
- end
-end
-
-def fun_l5_n836(x)
- if (x < 1)
- fun_l6_n376(x)
- else
- fun_l6_n758(x)
- end
-end
-
-def fun_l5_n837(x)
- if (x < 1)
- fun_l6_n558(x)
- else
- fun_l6_n474(x)
- end
-end
-
-def fun_l5_n838(x)
- if (x < 1)
- fun_l6_n436(x)
- else
- fun_l6_n675(x)
- end
-end
-
-def fun_l5_n839(x)
- if (x < 1)
- fun_l6_n720(x)
- else
- fun_l6_n12(x)
- end
-end
-
-def fun_l5_n840(x)
- if (x < 1)
- fun_l6_n957(x)
- else
- fun_l6_n200(x)
- end
-end
-
-def fun_l5_n841(x)
- if (x < 1)
- fun_l6_n180(x)
- else
- fun_l6_n644(x)
- end
-end
-
-def fun_l5_n842(x)
- if (x < 1)
- fun_l6_n510(x)
- else
- fun_l6_n73(x)
- end
-end
-
-def fun_l5_n843(x)
- if (x < 1)
- fun_l6_n812(x)
- else
- fun_l6_n954(x)
- end
-end
-
-def fun_l5_n844(x)
- if (x < 1)
- fun_l6_n566(x)
- else
- fun_l6_n866(x)
- end
-end
-
-def fun_l5_n845(x)
- if (x < 1)
- fun_l6_n641(x)
- else
- fun_l6_n11(x)
- end
-end
-
-def fun_l5_n846(x)
- if (x < 1)
- fun_l6_n607(x)
- else
- fun_l6_n884(x)
- end
-end
-
-def fun_l5_n847(x)
- if (x < 1)
- fun_l6_n479(x)
- else
- fun_l6_n564(x)
- end
-end
-
-def fun_l5_n848(x)
- if (x < 1)
- fun_l6_n365(x)
- else
- fun_l6_n285(x)
- end
-end
-
-def fun_l5_n849(x)
- if (x < 1)
- fun_l6_n296(x)
- else
- fun_l6_n708(x)
- end
-end
-
-def fun_l5_n850(x)
- if (x < 1)
- fun_l6_n429(x)
- else
- fun_l6_n758(x)
- end
-end
-
-def fun_l5_n851(x)
- if (x < 1)
- fun_l6_n881(x)
- else
- fun_l6_n848(x)
- end
-end
-
-def fun_l5_n852(x)
- if (x < 1)
- fun_l6_n257(x)
- else
- fun_l6_n51(x)
- end
-end
-
-def fun_l5_n853(x)
- if (x < 1)
- fun_l6_n441(x)
- else
- fun_l6_n445(x)
- end
-end
-
-def fun_l5_n854(x)
- if (x < 1)
- fun_l6_n80(x)
- else
- fun_l6_n767(x)
- end
-end
-
-def fun_l5_n855(x)
- if (x < 1)
- fun_l6_n196(x)
- else
- fun_l6_n41(x)
- end
-end
-
-def fun_l5_n856(x)
- if (x < 1)
- fun_l6_n548(x)
- else
- fun_l6_n860(x)
- end
-end
-
-def fun_l5_n857(x)
- if (x < 1)
- fun_l6_n380(x)
- else
- fun_l6_n601(x)
- end
-end
-
-def fun_l5_n858(x)
- if (x < 1)
- fun_l6_n272(x)
- else
- fun_l6_n376(x)
- end
-end
-
-def fun_l5_n859(x)
- if (x < 1)
- fun_l6_n179(x)
- else
- fun_l6_n978(x)
- end
-end
-
-def fun_l5_n860(x)
- if (x < 1)
- fun_l6_n52(x)
- else
- fun_l6_n827(x)
- end
-end
-
-def fun_l5_n861(x)
- if (x < 1)
- fun_l6_n611(x)
- else
- fun_l6_n929(x)
- end
-end
-
-def fun_l5_n862(x)
- if (x < 1)
- fun_l6_n179(x)
- else
- fun_l6_n171(x)
- end
-end
-
-def fun_l5_n863(x)
- if (x < 1)
- fun_l6_n611(x)
- else
- fun_l6_n663(x)
- end
-end
-
-def fun_l5_n864(x)
- if (x < 1)
- fun_l6_n539(x)
- else
- fun_l6_n356(x)
- end
-end
-
-def fun_l5_n865(x)
- if (x < 1)
- fun_l6_n401(x)
- else
- fun_l6_n302(x)
- end
-end
-
-def fun_l5_n866(x)
- if (x < 1)
- fun_l6_n94(x)
- else
- fun_l6_n761(x)
- end
-end
-
-def fun_l5_n867(x)
- if (x < 1)
- fun_l6_n818(x)
- else
- fun_l6_n500(x)
- end
-end
-
-def fun_l5_n868(x)
- if (x < 1)
- fun_l6_n956(x)
- else
- fun_l6_n661(x)
- end
-end
-
-def fun_l5_n869(x)
- if (x < 1)
- fun_l6_n628(x)
- else
- fun_l6_n765(x)
- end
-end
-
-def fun_l5_n870(x)
- if (x < 1)
- fun_l6_n654(x)
- else
- fun_l6_n181(x)
- end
-end
-
-def fun_l5_n871(x)
- if (x < 1)
- fun_l6_n70(x)
- else
- fun_l6_n157(x)
- end
-end
-
-def fun_l5_n872(x)
- if (x < 1)
- fun_l6_n133(x)
- else
- fun_l6_n806(x)
- end
-end
-
-def fun_l5_n873(x)
- if (x < 1)
- fun_l6_n100(x)
- else
- fun_l6_n479(x)
- end
-end
-
-def fun_l5_n874(x)
- if (x < 1)
- fun_l6_n401(x)
- else
- fun_l6_n567(x)
- end
-end
-
-def fun_l5_n875(x)
- if (x < 1)
- fun_l6_n399(x)
- else
- fun_l6_n369(x)
- end
-end
-
-def fun_l5_n876(x)
- if (x < 1)
- fun_l6_n412(x)
- else
- fun_l6_n763(x)
- end
-end
-
-def fun_l5_n877(x)
- if (x < 1)
- fun_l6_n498(x)
- else
- fun_l6_n192(x)
- end
-end
-
-def fun_l5_n878(x)
- if (x < 1)
- fun_l6_n798(x)
- else
- fun_l6_n473(x)
- end
-end
-
-def fun_l5_n879(x)
- if (x < 1)
- fun_l6_n166(x)
- else
- fun_l6_n301(x)
- end
-end
-
-def fun_l5_n880(x)
- if (x < 1)
- fun_l6_n616(x)
- else
- fun_l6_n28(x)
- end
-end
-
-def fun_l5_n881(x)
- if (x < 1)
- fun_l6_n315(x)
- else
- fun_l6_n92(x)
- end
-end
-
-def fun_l5_n882(x)
- if (x < 1)
- fun_l6_n548(x)
- else
- fun_l6_n41(x)
- end
-end
-
-def fun_l5_n883(x)
- if (x < 1)
- fun_l6_n279(x)
- else
- fun_l6_n72(x)
- end
-end
-
-def fun_l5_n884(x)
- if (x < 1)
- fun_l6_n206(x)
- else
- fun_l6_n384(x)
- end
-end
-
-def fun_l5_n885(x)
- if (x < 1)
- fun_l6_n191(x)
- else
- fun_l6_n84(x)
- end
-end
-
-def fun_l5_n886(x)
- if (x < 1)
- fun_l6_n960(x)
- else
- fun_l6_n495(x)
- end
-end
-
-def fun_l5_n887(x)
- if (x < 1)
- fun_l6_n459(x)
- else
- fun_l6_n757(x)
- end
-end
-
-def fun_l5_n888(x)
- if (x < 1)
- fun_l6_n634(x)
- else
- fun_l6_n463(x)
- end
-end
-
-def fun_l5_n889(x)
- if (x < 1)
- fun_l6_n611(x)
- else
- fun_l6_n469(x)
- end
-end
-
-def fun_l5_n890(x)
- if (x < 1)
- fun_l6_n787(x)
- else
- fun_l6_n707(x)
- end
-end
-
-def fun_l5_n891(x)
- if (x < 1)
- fun_l6_n201(x)
- else
- fun_l6_n223(x)
- end
-end
-
-def fun_l5_n892(x)
- if (x < 1)
- fun_l6_n214(x)
- else
- fun_l6_n303(x)
- end
-end
-
-def fun_l5_n893(x)
- if (x < 1)
- fun_l6_n85(x)
- else
- fun_l6_n802(x)
- end
-end
-
-def fun_l5_n894(x)
- if (x < 1)
- fun_l6_n816(x)
- else
- fun_l6_n325(x)
- end
-end
-
-def fun_l5_n895(x)
- if (x < 1)
- fun_l6_n491(x)
- else
- fun_l6_n907(x)
- end
-end
-
-def fun_l5_n896(x)
- if (x < 1)
- fun_l6_n809(x)
- else
- fun_l6_n364(x)
- end
-end
-
-def fun_l5_n897(x)
- if (x < 1)
- fun_l6_n739(x)
- else
- fun_l6_n192(x)
- end
-end
-
-def fun_l5_n898(x)
- if (x < 1)
- fun_l6_n461(x)
- else
- fun_l6_n594(x)
- end
-end
-
-def fun_l5_n899(x)
- if (x < 1)
- fun_l6_n256(x)
- else
- fun_l6_n521(x)
- end
-end
-
-def fun_l5_n900(x)
- if (x < 1)
- fun_l6_n6(x)
- else
- fun_l6_n127(x)
- end
-end
-
-def fun_l5_n901(x)
- if (x < 1)
- fun_l6_n655(x)
- else
- fun_l6_n426(x)
- end
-end
-
-def fun_l5_n902(x)
- if (x < 1)
- fun_l6_n936(x)
- else
- fun_l6_n275(x)
- end
-end
-
-def fun_l5_n903(x)
- if (x < 1)
- fun_l6_n738(x)
- else
- fun_l6_n654(x)
- end
-end
-
-def fun_l5_n904(x)
- if (x < 1)
- fun_l6_n583(x)
- else
- fun_l6_n600(x)
- end
-end
-
-def fun_l5_n905(x)
- if (x < 1)
- fun_l6_n228(x)
- else
- fun_l6_n591(x)
- end
-end
-
-def fun_l5_n906(x)
- if (x < 1)
- fun_l6_n292(x)
- else
- fun_l6_n55(x)
- end
-end
-
-def fun_l5_n907(x)
- if (x < 1)
- fun_l6_n457(x)
- else
- fun_l6_n513(x)
- end
-end
-
-def fun_l5_n908(x)
- if (x < 1)
- fun_l6_n542(x)
- else
- fun_l6_n593(x)
- end
-end
-
-def fun_l5_n909(x)
- if (x < 1)
- fun_l6_n478(x)
- else
- fun_l6_n782(x)
- end
-end
-
-def fun_l5_n910(x)
- if (x < 1)
- fun_l6_n780(x)
- else
- fun_l6_n275(x)
- end
-end
-
-def fun_l5_n911(x)
- if (x < 1)
- fun_l6_n631(x)
- else
- fun_l6_n811(x)
- end
-end
-
-def fun_l5_n912(x)
- if (x < 1)
- fun_l6_n17(x)
- else
- fun_l6_n837(x)
- end
-end
-
-def fun_l5_n913(x)
- if (x < 1)
- fun_l6_n607(x)
- else
- fun_l6_n159(x)
- end
-end
-
-def fun_l5_n914(x)
- if (x < 1)
- fun_l6_n23(x)
- else
- fun_l6_n70(x)
- end
-end
-
-def fun_l5_n915(x)
- if (x < 1)
- fun_l6_n778(x)
- else
- fun_l6_n643(x)
- end
-end
-
-def fun_l5_n916(x)
- if (x < 1)
- fun_l6_n707(x)
- else
- fun_l6_n121(x)
- end
-end
-
-def fun_l5_n917(x)
- if (x < 1)
- fun_l6_n816(x)
- else
- fun_l6_n67(x)
- end
-end
-
-def fun_l5_n918(x)
- if (x < 1)
- fun_l6_n963(x)
- else
- fun_l6_n520(x)
- end
-end
-
-def fun_l5_n919(x)
- if (x < 1)
- fun_l6_n251(x)
- else
- fun_l6_n111(x)
- end
-end
-
-def fun_l5_n920(x)
- if (x < 1)
- fun_l6_n198(x)
- else
- fun_l6_n872(x)
- end
-end
-
-def fun_l5_n921(x)
- if (x < 1)
- fun_l6_n364(x)
- else
- fun_l6_n369(x)
- end
-end
-
-def fun_l5_n922(x)
- if (x < 1)
- fun_l6_n7(x)
- else
- fun_l6_n314(x)
- end
-end
-
-def fun_l5_n923(x)
- if (x < 1)
- fun_l6_n578(x)
- else
- fun_l6_n502(x)
- end
-end
-
-def fun_l5_n924(x)
- if (x < 1)
- fun_l6_n450(x)
- else
- fun_l6_n680(x)
- end
-end
-
-def fun_l5_n925(x)
- if (x < 1)
- fun_l6_n469(x)
- else
- fun_l6_n973(x)
- end
-end
-
-def fun_l5_n926(x)
- if (x < 1)
- fun_l6_n114(x)
- else
- fun_l6_n862(x)
- end
-end
-
-def fun_l5_n927(x)
- if (x < 1)
- fun_l6_n786(x)
- else
- fun_l6_n861(x)
- end
-end
-
-def fun_l5_n928(x)
- if (x < 1)
- fun_l6_n40(x)
- else
- fun_l6_n665(x)
- end
-end
-
-def fun_l5_n929(x)
- if (x < 1)
- fun_l6_n997(x)
- else
- fun_l6_n137(x)
- end
-end
-
-def fun_l5_n930(x)
- if (x < 1)
- fun_l6_n547(x)
- else
- fun_l6_n547(x)
- end
-end
-
-def fun_l5_n931(x)
- if (x < 1)
- fun_l6_n310(x)
- else
- fun_l6_n986(x)
- end
-end
-
-def fun_l5_n932(x)
- if (x < 1)
- fun_l6_n339(x)
- else
- fun_l6_n18(x)
- end
-end
-
-def fun_l5_n933(x)
- if (x < 1)
- fun_l6_n825(x)
- else
- fun_l6_n418(x)
- end
-end
-
-def fun_l5_n934(x)
- if (x < 1)
- fun_l6_n509(x)
- else
- fun_l6_n589(x)
- end
-end
-
-def fun_l5_n935(x)
- if (x < 1)
- fun_l6_n936(x)
- else
- fun_l6_n113(x)
- end
-end
-
-def fun_l5_n936(x)
- if (x < 1)
- fun_l6_n530(x)
- else
- fun_l6_n841(x)
- end
-end
-
-def fun_l5_n937(x)
- if (x < 1)
- fun_l6_n431(x)
- else
- fun_l6_n531(x)
- end
-end
-
-def fun_l5_n938(x)
- if (x < 1)
- fun_l6_n791(x)
- else
- fun_l6_n41(x)
- end
-end
-
-def fun_l5_n939(x)
- if (x < 1)
- fun_l6_n873(x)
- else
- fun_l6_n336(x)
- end
-end
-
-def fun_l5_n940(x)
- if (x < 1)
- fun_l6_n925(x)
- else
- fun_l6_n746(x)
- end
-end
-
-def fun_l5_n941(x)
- if (x < 1)
- fun_l6_n995(x)
- else
- fun_l6_n29(x)
- end
-end
-
-def fun_l5_n942(x)
- if (x < 1)
- fun_l6_n984(x)
- else
- fun_l6_n455(x)
- end
-end
-
-def fun_l5_n943(x)
- if (x < 1)
- fun_l6_n660(x)
- else
- fun_l6_n934(x)
- end
-end
-
-def fun_l5_n944(x)
- if (x < 1)
- fun_l6_n625(x)
- else
- fun_l6_n523(x)
- end
-end
-
-def fun_l5_n945(x)
- if (x < 1)
- fun_l6_n407(x)
- else
- fun_l6_n766(x)
- end
-end
-
-def fun_l5_n946(x)
- if (x < 1)
- fun_l6_n80(x)
- else
- fun_l6_n75(x)
- end
-end
-
-def fun_l5_n947(x)
- if (x < 1)
- fun_l6_n465(x)
- else
- fun_l6_n57(x)
- end
-end
-
-def fun_l5_n948(x)
- if (x < 1)
- fun_l6_n750(x)
- else
- fun_l6_n278(x)
- end
-end
-
-def fun_l5_n949(x)
- if (x < 1)
- fun_l6_n917(x)
- else
- fun_l6_n472(x)
- end
-end
-
-def fun_l5_n950(x)
- if (x < 1)
- fun_l6_n917(x)
- else
- fun_l6_n71(x)
- end
-end
-
-def fun_l5_n951(x)
- if (x < 1)
- fun_l6_n420(x)
- else
- fun_l6_n132(x)
- end
-end
-
-def fun_l5_n952(x)
- if (x < 1)
- fun_l6_n112(x)
- else
- fun_l6_n396(x)
- end
-end
-
-def fun_l5_n953(x)
- if (x < 1)
- fun_l6_n705(x)
- else
- fun_l6_n978(x)
- end
-end
-
-def fun_l5_n954(x)
- if (x < 1)
- fun_l6_n761(x)
- else
- fun_l6_n136(x)
- end
-end
-
-def fun_l5_n955(x)
- if (x < 1)
- fun_l6_n518(x)
- else
- fun_l6_n687(x)
- end
-end
-
-def fun_l5_n956(x)
- if (x < 1)
- fun_l6_n308(x)
- else
- fun_l6_n34(x)
- end
-end
-
-def fun_l5_n957(x)
- if (x < 1)
- fun_l6_n904(x)
- else
- fun_l6_n129(x)
- end
-end
-
-def fun_l5_n958(x)
- if (x < 1)
- fun_l6_n271(x)
- else
- fun_l6_n444(x)
- end
-end
-
-def fun_l5_n959(x)
- if (x < 1)
- fun_l6_n690(x)
- else
- fun_l6_n118(x)
- end
-end
-
-def fun_l5_n960(x)
- if (x < 1)
- fun_l6_n509(x)
- else
- fun_l6_n957(x)
- end
-end
-
-def fun_l5_n961(x)
- if (x < 1)
- fun_l6_n889(x)
- else
- fun_l6_n26(x)
- end
-end
-
-def fun_l5_n962(x)
- if (x < 1)
- fun_l6_n802(x)
- else
- fun_l6_n364(x)
- end
-end
-
-def fun_l5_n963(x)
- if (x < 1)
- fun_l6_n368(x)
- else
- fun_l6_n580(x)
- end
-end
-
-def fun_l5_n964(x)
- if (x < 1)
- fun_l6_n879(x)
- else
- fun_l6_n925(x)
- end
-end
-
-def fun_l5_n965(x)
- if (x < 1)
- fun_l6_n114(x)
- else
- fun_l6_n882(x)
- end
-end
-
-def fun_l5_n966(x)
- if (x < 1)
- fun_l6_n9(x)
- else
- fun_l6_n5(x)
- end
-end
-
-def fun_l5_n967(x)
- if (x < 1)
- fun_l6_n536(x)
- else
- fun_l6_n251(x)
- end
-end
-
-def fun_l5_n968(x)
- if (x < 1)
- fun_l6_n804(x)
- else
- fun_l6_n179(x)
- end
-end
-
-def fun_l5_n969(x)
- if (x < 1)
- fun_l6_n469(x)
- else
- fun_l6_n235(x)
- end
-end
-
-def fun_l5_n970(x)
- if (x < 1)
- fun_l6_n328(x)
- else
- fun_l6_n763(x)
- end
-end
-
-def fun_l5_n971(x)
- if (x < 1)
- fun_l6_n342(x)
- else
- fun_l6_n126(x)
- end
-end
-
-def fun_l5_n972(x)
- if (x < 1)
- fun_l6_n901(x)
- else
- fun_l6_n674(x)
- end
-end
-
-def fun_l5_n973(x)
- if (x < 1)
- fun_l6_n853(x)
- else
- fun_l6_n714(x)
- end
-end
-
-def fun_l5_n974(x)
- if (x < 1)
- fun_l6_n670(x)
- else
- fun_l6_n905(x)
- end
-end
-
-def fun_l5_n975(x)
- if (x < 1)
- fun_l6_n873(x)
- else
- fun_l6_n193(x)
- end
-end
-
-def fun_l5_n976(x)
- if (x < 1)
- fun_l6_n603(x)
- else
- fun_l6_n186(x)
- end
-end
-
-def fun_l5_n977(x)
- if (x < 1)
- fun_l6_n474(x)
- else
- fun_l6_n108(x)
- end
-end
-
-def fun_l5_n978(x)
- if (x < 1)
- fun_l6_n347(x)
- else
- fun_l6_n872(x)
- end
-end
-
-def fun_l5_n979(x)
- if (x < 1)
- fun_l6_n593(x)
- else
- fun_l6_n575(x)
- end
-end
-
-def fun_l5_n980(x)
- if (x < 1)
- fun_l6_n692(x)
- else
- fun_l6_n262(x)
- end
-end
-
-def fun_l5_n981(x)
- if (x < 1)
- fun_l6_n226(x)
- else
- fun_l6_n600(x)
- end
-end
-
-def fun_l5_n982(x)
- if (x < 1)
- fun_l6_n357(x)
- else
- fun_l6_n165(x)
- end
-end
-
-def fun_l5_n983(x)
- if (x < 1)
- fun_l6_n784(x)
- else
- fun_l6_n584(x)
- end
-end
-
-def fun_l5_n984(x)
- if (x < 1)
- fun_l6_n339(x)
- else
- fun_l6_n754(x)
- end
-end
-
-def fun_l5_n985(x)
- if (x < 1)
- fun_l6_n536(x)
- else
- fun_l6_n663(x)
- end
-end
-
-def fun_l5_n986(x)
- if (x < 1)
- fun_l6_n239(x)
- else
- fun_l6_n723(x)
- end
-end
-
-def fun_l5_n987(x)
- if (x < 1)
- fun_l6_n928(x)
- else
- fun_l6_n403(x)
- end
-end
-
-def fun_l5_n988(x)
- if (x < 1)
- fun_l6_n328(x)
- else
- fun_l6_n551(x)
- end
-end
-
-def fun_l5_n989(x)
- if (x < 1)
- fun_l6_n847(x)
- else
- fun_l6_n475(x)
- end
-end
-
-def fun_l5_n990(x)
- if (x < 1)
- fun_l6_n405(x)
- else
- fun_l6_n39(x)
- end
-end
-
-def fun_l5_n991(x)
- if (x < 1)
- fun_l6_n705(x)
- else
- fun_l6_n281(x)
- end
-end
-
-def fun_l5_n992(x)
- if (x < 1)
- fun_l6_n59(x)
- else
- fun_l6_n465(x)
- end
-end
-
-def fun_l5_n993(x)
- if (x < 1)
- fun_l6_n828(x)
- else
- fun_l6_n705(x)
- end
-end
-
-def fun_l5_n994(x)
- if (x < 1)
- fun_l6_n687(x)
- else
- fun_l6_n451(x)
- end
-end
-
-def fun_l5_n995(x)
- if (x < 1)
- fun_l6_n600(x)
- else
- fun_l6_n9(x)
- end
-end
-
-def fun_l5_n996(x)
- if (x < 1)
- fun_l6_n205(x)
- else
- fun_l6_n242(x)
- end
-end
-
-def fun_l5_n997(x)
- if (x < 1)
- fun_l6_n438(x)
- else
- fun_l6_n108(x)
- end
-end
-
-def fun_l5_n998(x)
- if (x < 1)
- fun_l6_n164(x)
- else
- fun_l6_n302(x)
- end
-end
-
-def fun_l5_n999(x)
- if (x < 1)
- fun_l6_n533(x)
- else
- fun_l6_n685(x)
- end
-end
-
-def fun_l6_n0(x)
- if (x < 1)
- fun_l7_n74(x)
- else
- fun_l7_n45(x)
- end
-end
-
-def fun_l6_n1(x)
- if (x < 1)
- fun_l7_n685(x)
- else
- fun_l7_n163(x)
- end
-end
-
-def fun_l6_n2(x)
- if (x < 1)
- fun_l7_n325(x)
- else
- fun_l7_n365(x)
- end
-end
-
-def fun_l6_n3(x)
- if (x < 1)
- fun_l7_n855(x)
- else
- fun_l7_n359(x)
- end
-end
-
-def fun_l6_n4(x)
- if (x < 1)
- fun_l7_n939(x)
- else
- fun_l7_n690(x)
- end
-end
-
-def fun_l6_n5(x)
- if (x < 1)
- fun_l7_n689(x)
- else
- fun_l7_n681(x)
- end
-end
-
-def fun_l6_n6(x)
- if (x < 1)
- fun_l7_n226(x)
- else
- fun_l7_n307(x)
- end
-end
-
-def fun_l6_n7(x)
- if (x < 1)
- fun_l7_n779(x)
- else
- fun_l7_n765(x)
- end
-end
-
-def fun_l6_n8(x)
- if (x < 1)
- fun_l7_n85(x)
- else
- fun_l7_n967(x)
- end
-end
-
-def fun_l6_n9(x)
- if (x < 1)
- fun_l7_n539(x)
- else
- fun_l7_n5(x)
- end
-end
-
-def fun_l6_n10(x)
- if (x < 1)
- fun_l7_n503(x)
- else
- fun_l7_n163(x)
- end
-end
-
-def fun_l6_n11(x)
- if (x < 1)
- fun_l7_n24(x)
- else
- fun_l7_n374(x)
- end
-end
-
-def fun_l6_n12(x)
- if (x < 1)
- fun_l7_n633(x)
- else
- fun_l7_n395(x)
- end
-end
-
-def fun_l6_n13(x)
- if (x < 1)
- fun_l7_n250(x)
- else
- fun_l7_n7(x)
- end
-end
-
-def fun_l6_n14(x)
- if (x < 1)
- fun_l7_n22(x)
- else
- fun_l7_n560(x)
- end
-end
-
-def fun_l6_n15(x)
- if (x < 1)
- fun_l7_n209(x)
- else
- fun_l7_n323(x)
- end
-end
-
-def fun_l6_n16(x)
- if (x < 1)
- fun_l7_n770(x)
- else
- fun_l7_n155(x)
- end
-end
-
-def fun_l6_n17(x)
- if (x < 1)
- fun_l7_n976(x)
- else
- fun_l7_n712(x)
- end
-end
-
-def fun_l6_n18(x)
- if (x < 1)
- fun_l7_n762(x)
- else
- fun_l7_n307(x)
- end
-end
-
-def fun_l6_n19(x)
- if (x < 1)
- fun_l7_n911(x)
- else
- fun_l7_n788(x)
- end
-end
-
-def fun_l6_n20(x)
- if (x < 1)
- fun_l7_n40(x)
- else
- fun_l7_n269(x)
- end
-end
-
-def fun_l6_n21(x)
- if (x < 1)
- fun_l7_n707(x)
- else
- fun_l7_n861(x)
- end
-end
-
-def fun_l6_n22(x)
- if (x < 1)
- fun_l7_n591(x)
- else
- fun_l7_n557(x)
- end
-end
-
-def fun_l6_n23(x)
- if (x < 1)
- fun_l7_n890(x)
- else
- fun_l7_n142(x)
- end
-end
-
-def fun_l6_n24(x)
- if (x < 1)
- fun_l7_n563(x)
- else
- fun_l7_n509(x)
- end
-end
-
-def fun_l6_n25(x)
- if (x < 1)
- fun_l7_n630(x)
- else
- fun_l7_n784(x)
- end
-end
-
-def fun_l6_n26(x)
- if (x < 1)
- fun_l7_n30(x)
- else
- fun_l7_n826(x)
- end
-end
-
-def fun_l6_n27(x)
- if (x < 1)
- fun_l7_n223(x)
- else
- fun_l7_n800(x)
- end
-end
-
-def fun_l6_n28(x)
- if (x < 1)
- fun_l7_n51(x)
- else
- fun_l7_n963(x)
- end
-end
-
-def fun_l6_n29(x)
- if (x < 1)
- fun_l7_n603(x)
- else
- fun_l7_n988(x)
- end
-end
-
-def fun_l6_n30(x)
- if (x < 1)
- fun_l7_n258(x)
- else
- fun_l7_n512(x)
- end
-end
-
-def fun_l6_n31(x)
- if (x < 1)
- fun_l7_n649(x)
- else
- fun_l7_n772(x)
- end
-end
-
-def fun_l6_n32(x)
- if (x < 1)
- fun_l7_n999(x)
- else
- fun_l7_n592(x)
- end
-end
-
-def fun_l6_n33(x)
- if (x < 1)
- fun_l7_n371(x)
- else
- fun_l7_n801(x)
- end
-end
-
-def fun_l6_n34(x)
- if (x < 1)
- fun_l7_n905(x)
- else
- fun_l7_n701(x)
- end
-end
-
-def fun_l6_n35(x)
- if (x < 1)
- fun_l7_n142(x)
- else
- fun_l7_n933(x)
- end
-end
-
-def fun_l6_n36(x)
- if (x < 1)
- fun_l7_n987(x)
- else
- fun_l7_n305(x)
- end
-end
-
-def fun_l6_n37(x)
- if (x < 1)
- fun_l7_n360(x)
- else
- fun_l7_n266(x)
- end
-end
-
-def fun_l6_n38(x)
- if (x < 1)
- fun_l7_n799(x)
- else
- fun_l7_n938(x)
- end
-end
-
-def fun_l6_n39(x)
- if (x < 1)
- fun_l7_n921(x)
- else
- fun_l7_n739(x)
- end
-end
-
-def fun_l6_n40(x)
- if (x < 1)
- fun_l7_n553(x)
- else
- fun_l7_n236(x)
- end
-end
-
-def fun_l6_n41(x)
- if (x < 1)
- fun_l7_n592(x)
- else
- fun_l7_n335(x)
- end
-end
-
-def fun_l6_n42(x)
- if (x < 1)
- fun_l7_n33(x)
- else
- fun_l7_n521(x)
- end
-end
-
-def fun_l6_n43(x)
- if (x < 1)
- fun_l7_n278(x)
- else
- fun_l7_n866(x)
- end
-end
-
-def fun_l6_n44(x)
- if (x < 1)
- fun_l7_n808(x)
- else
- fun_l7_n394(x)
- end
-end
-
-def fun_l6_n45(x)
- if (x < 1)
- fun_l7_n556(x)
- else
- fun_l7_n462(x)
- end
-end
-
-def fun_l6_n46(x)
- if (x < 1)
- fun_l7_n72(x)
- else
- fun_l7_n558(x)
- end
-end
-
-def fun_l6_n47(x)
- if (x < 1)
- fun_l7_n583(x)
- else
- fun_l7_n472(x)
- end
-end
-
-def fun_l6_n48(x)
- if (x < 1)
- fun_l7_n577(x)
- else
- fun_l7_n264(x)
- end
-end
-
-def fun_l6_n49(x)
- if (x < 1)
- fun_l7_n167(x)
- else
- fun_l7_n570(x)
- end
-end
-
-def fun_l6_n50(x)
- if (x < 1)
- fun_l7_n707(x)
- else
- fun_l7_n127(x)
- end
-end
-
-def fun_l6_n51(x)
- if (x < 1)
- fun_l7_n151(x)
- else
- fun_l7_n82(x)
- end
-end
-
-def fun_l6_n52(x)
- if (x < 1)
- fun_l7_n729(x)
- else
- fun_l7_n785(x)
- end
-end
-
-def fun_l6_n53(x)
- if (x < 1)
- fun_l7_n236(x)
- else
- fun_l7_n84(x)
- end
-end
-
-def fun_l6_n54(x)
- if (x < 1)
- fun_l7_n573(x)
- else
- fun_l7_n92(x)
- end
-end
-
-def fun_l6_n55(x)
- if (x < 1)
- fun_l7_n601(x)
- else
- fun_l7_n531(x)
- end
-end
-
-def fun_l6_n56(x)
- if (x < 1)
- fun_l7_n623(x)
- else
- fun_l7_n522(x)
- end
-end
-
-def fun_l6_n57(x)
- if (x < 1)
- fun_l7_n707(x)
- else
- fun_l7_n830(x)
- end
-end
-
-def fun_l6_n58(x)
- if (x < 1)
- fun_l7_n240(x)
- else
- fun_l7_n868(x)
- end
-end
-
-def fun_l6_n59(x)
- if (x < 1)
- fun_l7_n233(x)
- else
- fun_l7_n595(x)
- end
-end
-
-def fun_l6_n60(x)
- if (x < 1)
- fun_l7_n384(x)
- else
- fun_l7_n605(x)
- end
-end
-
-def fun_l6_n61(x)
- if (x < 1)
- fun_l7_n721(x)
- else
- fun_l7_n509(x)
- end
-end
-
-def fun_l6_n62(x)
- if (x < 1)
- fun_l7_n741(x)
- else
- fun_l7_n934(x)
- end
-end
-
-def fun_l6_n63(x)
- if (x < 1)
- fun_l7_n724(x)
- else
- fun_l7_n963(x)
- end
-end
-
-def fun_l6_n64(x)
- if (x < 1)
- fun_l7_n144(x)
- else
- fun_l7_n417(x)
- end
-end
-
-def fun_l6_n65(x)
- if (x < 1)
- fun_l7_n618(x)
- else
- fun_l7_n19(x)
- end
-end
-
-def fun_l6_n66(x)
- if (x < 1)
- fun_l7_n128(x)
- else
- fun_l7_n257(x)
- end
-end
-
-def fun_l6_n67(x)
- if (x < 1)
- fun_l7_n623(x)
- else
- fun_l7_n182(x)
- end
-end
-
-def fun_l6_n68(x)
- if (x < 1)
- fun_l7_n256(x)
- else
- fun_l7_n692(x)
- end
-end
-
-def fun_l6_n69(x)
- if (x < 1)
- fun_l7_n360(x)
- else
- fun_l7_n34(x)
- end
-end
-
-def fun_l6_n70(x)
- if (x < 1)
- fun_l7_n690(x)
- else
- fun_l7_n813(x)
- end
-end
-
-def fun_l6_n71(x)
- if (x < 1)
- fun_l7_n533(x)
- else
- fun_l7_n94(x)
- end
-end
-
-def fun_l6_n72(x)
- if (x < 1)
- fun_l7_n245(x)
- else
- fun_l7_n548(x)
- end
-end
-
-def fun_l6_n73(x)
- if (x < 1)
- fun_l7_n919(x)
- else
- fun_l7_n295(x)
- end
-end
-
-def fun_l6_n74(x)
- if (x < 1)
- fun_l7_n925(x)
- else
- fun_l7_n965(x)
- end
-end
-
-def fun_l6_n75(x)
- if (x < 1)
- fun_l7_n825(x)
- else
- fun_l7_n79(x)
- end
-end
-
-def fun_l6_n76(x)
- if (x < 1)
- fun_l7_n812(x)
- else
- fun_l7_n96(x)
- end
-end
-
-def fun_l6_n77(x)
- if (x < 1)
- fun_l7_n688(x)
- else
- fun_l7_n424(x)
- end
-end
-
-def fun_l6_n78(x)
- if (x < 1)
- fun_l7_n171(x)
- else
- fun_l7_n728(x)
- end
-end
-
-def fun_l6_n79(x)
- if (x < 1)
- fun_l7_n786(x)
- else
- fun_l7_n135(x)
- end
-end
-
-def fun_l6_n80(x)
- if (x < 1)
- fun_l7_n622(x)
- else
- fun_l7_n3(x)
- end
-end
-
-def fun_l6_n81(x)
- if (x < 1)
- fun_l7_n386(x)
- else
- fun_l7_n946(x)
- end
-end
-
-def fun_l6_n82(x)
- if (x < 1)
- fun_l7_n192(x)
- else
- fun_l7_n253(x)
- end
-end
-
-def fun_l6_n83(x)
- if (x < 1)
- fun_l7_n534(x)
- else
- fun_l7_n4(x)
- end
-end
-
-def fun_l6_n84(x)
- if (x < 1)
- fun_l7_n198(x)
- else
- fun_l7_n455(x)
- end
-end
-
-def fun_l6_n85(x)
- if (x < 1)
- fun_l7_n471(x)
- else
- fun_l7_n26(x)
- end
-end
-
-def fun_l6_n86(x)
- if (x < 1)
- fun_l7_n147(x)
- else
- fun_l7_n893(x)
- end
-end
-
-def fun_l6_n87(x)
- if (x < 1)
- fun_l7_n424(x)
- else
- fun_l7_n713(x)
- end
-end
-
-def fun_l6_n88(x)
- if (x < 1)
- fun_l7_n867(x)
- else
- fun_l7_n561(x)
- end
-end
-
-def fun_l6_n89(x)
- if (x < 1)
- fun_l7_n64(x)
- else
- fun_l7_n662(x)
- end
-end
-
-def fun_l6_n90(x)
- if (x < 1)
- fun_l7_n849(x)
- else
- fun_l7_n105(x)
- end
-end
-
-def fun_l6_n91(x)
- if (x < 1)
- fun_l7_n564(x)
- else
- fun_l7_n758(x)
- end
-end
-
-def fun_l6_n92(x)
- if (x < 1)
- fun_l7_n433(x)
- else
- fun_l7_n713(x)
- end
-end
-
-def fun_l6_n93(x)
- if (x < 1)
- fun_l7_n283(x)
- else
- fun_l7_n577(x)
- end
-end
-
-def fun_l6_n94(x)
- if (x < 1)
- fun_l7_n951(x)
- else
- fun_l7_n48(x)
- end
-end
-
-def fun_l6_n95(x)
- if (x < 1)
- fun_l7_n966(x)
- else
- fun_l7_n789(x)
- end
-end
-
-def fun_l6_n96(x)
- if (x < 1)
- fun_l7_n954(x)
- else
- fun_l7_n431(x)
- end
-end
-
-def fun_l6_n97(x)
- if (x < 1)
- fun_l7_n720(x)
- else
- fun_l7_n847(x)
- end
-end
-
-def fun_l6_n98(x)
- if (x < 1)
- fun_l7_n517(x)
- else
- fun_l7_n378(x)
- end
-end
-
-def fun_l6_n99(x)
- if (x < 1)
- fun_l7_n951(x)
- else
- fun_l7_n688(x)
- end
-end
-
-def fun_l6_n100(x)
- if (x < 1)
- fun_l7_n163(x)
- else
- fun_l7_n540(x)
- end
-end
-
-def fun_l6_n101(x)
- if (x < 1)
- fun_l7_n423(x)
- else
- fun_l7_n10(x)
- end
-end
-
-def fun_l6_n102(x)
- if (x < 1)
- fun_l7_n346(x)
- else
- fun_l7_n409(x)
- end
-end
-
-def fun_l6_n103(x)
- if (x < 1)
- fun_l7_n686(x)
- else
- fun_l7_n432(x)
- end
-end
-
-def fun_l6_n104(x)
- if (x < 1)
- fun_l7_n144(x)
- else
- fun_l7_n510(x)
- end
-end
-
-def fun_l6_n105(x)
- if (x < 1)
- fun_l7_n568(x)
- else
- fun_l7_n756(x)
- end
-end
-
-def fun_l6_n106(x)
- if (x < 1)
- fun_l7_n708(x)
- else
- fun_l7_n199(x)
- end
-end
-
-def fun_l6_n107(x)
- if (x < 1)
- fun_l7_n823(x)
- else
- fun_l7_n969(x)
- end
-end
-
-def fun_l6_n108(x)
- if (x < 1)
- fun_l7_n156(x)
- else
- fun_l7_n211(x)
- end
-end
-
-def fun_l6_n109(x)
- if (x < 1)
- fun_l7_n527(x)
- else
- fun_l7_n791(x)
- end
-end
-
-def fun_l6_n110(x)
- if (x < 1)
- fun_l7_n392(x)
- else
- fun_l7_n314(x)
- end
-end
-
-def fun_l6_n111(x)
- if (x < 1)
- fun_l7_n355(x)
- else
- fun_l7_n222(x)
- end
-end
-
-def fun_l6_n112(x)
- if (x < 1)
- fun_l7_n683(x)
- else
- fun_l7_n735(x)
- end
-end
-
-def fun_l6_n113(x)
- if (x < 1)
- fun_l7_n38(x)
- else
- fun_l7_n874(x)
- end
-end
-
-def fun_l6_n114(x)
- if (x < 1)
- fun_l7_n190(x)
- else
- fun_l7_n209(x)
- end
-end
-
-def fun_l6_n115(x)
- if (x < 1)
- fun_l7_n544(x)
- else
- fun_l7_n267(x)
- end
-end
-
-def fun_l6_n116(x)
- if (x < 1)
- fun_l7_n701(x)
- else
- fun_l7_n101(x)
- end
-end
-
-def fun_l6_n117(x)
- if (x < 1)
- fun_l7_n283(x)
- else
- fun_l7_n979(x)
- end
-end
-
-def fun_l6_n118(x)
- if (x < 1)
- fun_l7_n902(x)
- else
- fun_l7_n897(x)
- end
-end
-
-def fun_l6_n119(x)
- if (x < 1)
- fun_l7_n115(x)
- else
- fun_l7_n660(x)
- end
-end
-
-def fun_l6_n120(x)
- if (x < 1)
- fun_l7_n804(x)
- else
- fun_l7_n536(x)
- end
-end
-
-def fun_l6_n121(x)
- if (x < 1)
- fun_l7_n278(x)
- else
- fun_l7_n666(x)
- end
-end
-
-def fun_l6_n122(x)
- if (x < 1)
- fun_l7_n254(x)
- else
- fun_l7_n572(x)
- end
-end
-
-def fun_l6_n123(x)
- if (x < 1)
- fun_l7_n474(x)
- else
- fun_l7_n912(x)
- end
-end
-
-def fun_l6_n124(x)
- if (x < 1)
- fun_l7_n0(x)
- else
- fun_l7_n514(x)
- end
-end
-
-def fun_l6_n125(x)
- if (x < 1)
- fun_l7_n916(x)
- else
- fun_l7_n633(x)
- end
-end
-
-def fun_l6_n126(x)
- if (x < 1)
- fun_l7_n184(x)
- else
- fun_l7_n379(x)
- end
-end
-
-def fun_l6_n127(x)
- if (x < 1)
- fun_l7_n316(x)
- else
- fun_l7_n422(x)
- end
-end
-
-def fun_l6_n128(x)
- if (x < 1)
- fun_l7_n402(x)
- else
- fun_l7_n237(x)
- end
-end
-
-def fun_l6_n129(x)
- if (x < 1)
- fun_l7_n303(x)
- else
- fun_l7_n61(x)
- end
-end
-
-def fun_l6_n130(x)
- if (x < 1)
- fun_l7_n918(x)
- else
- fun_l7_n732(x)
- end
-end
-
-def fun_l6_n131(x)
- if (x < 1)
- fun_l7_n74(x)
- else
- fun_l7_n472(x)
- end
-end
-
-def fun_l6_n132(x)
- if (x < 1)
- fun_l7_n648(x)
- else
- fun_l7_n546(x)
- end
-end
-
-def fun_l6_n133(x)
- if (x < 1)
- fun_l7_n388(x)
- else
- fun_l7_n359(x)
- end
-end
-
-def fun_l6_n134(x)
- if (x < 1)
- fun_l7_n594(x)
- else
- fun_l7_n607(x)
- end
-end
-
-def fun_l6_n135(x)
- if (x < 1)
- fun_l7_n642(x)
- else
- fun_l7_n188(x)
- end
-end
-
-def fun_l6_n136(x)
- if (x < 1)
- fun_l7_n879(x)
- else
- fun_l7_n521(x)
- end
-end
-
-def fun_l6_n137(x)
- if (x < 1)
- fun_l7_n362(x)
- else
- fun_l7_n564(x)
- end
-end
-
-def fun_l6_n138(x)
- if (x < 1)
- fun_l7_n590(x)
- else
- fun_l7_n59(x)
- end
-end
-
-def fun_l6_n139(x)
- if (x < 1)
- fun_l7_n464(x)
- else
- fun_l7_n563(x)
- end
-end
-
-def fun_l6_n140(x)
- if (x < 1)
- fun_l7_n710(x)
- else
- fun_l7_n890(x)
- end
-end
-
-def fun_l6_n141(x)
- if (x < 1)
- fun_l7_n63(x)
- else
- fun_l7_n470(x)
- end
-end
-
-def fun_l6_n142(x)
- if (x < 1)
- fun_l7_n160(x)
- else
- fun_l7_n153(x)
- end
-end
-
-def fun_l6_n143(x)
- if (x < 1)
- fun_l7_n908(x)
- else
- fun_l7_n286(x)
- end
-end
-
-def fun_l6_n144(x)
- if (x < 1)
- fun_l7_n193(x)
- else
- fun_l7_n657(x)
- end
-end
-
-def fun_l6_n145(x)
- if (x < 1)
- fun_l7_n885(x)
- else
- fun_l7_n981(x)
- end
-end
-
-def fun_l6_n146(x)
- if (x < 1)
- fun_l7_n479(x)
- else
- fun_l7_n188(x)
- end
-end
-
-def fun_l6_n147(x)
- if (x < 1)
- fun_l7_n378(x)
- else
- fun_l7_n299(x)
- end
-end
-
-def fun_l6_n148(x)
- if (x < 1)
- fun_l7_n239(x)
- else
- fun_l7_n70(x)
- end
-end
-
-def fun_l6_n149(x)
- if (x < 1)
- fun_l7_n864(x)
- else
- fun_l7_n131(x)
- end
-end
-
-def fun_l6_n150(x)
- if (x < 1)
- fun_l7_n748(x)
- else
- fun_l7_n112(x)
- end
-end
-
-def fun_l6_n151(x)
- if (x < 1)
- fun_l7_n466(x)
- else
- fun_l7_n672(x)
- end
-end
-
-def fun_l6_n152(x)
- if (x < 1)
- fun_l7_n242(x)
- else
- fun_l7_n8(x)
- end
-end
-
-def fun_l6_n153(x)
- if (x < 1)
- fun_l7_n408(x)
- else
- fun_l7_n538(x)
- end
-end
-
-def fun_l6_n154(x)
- if (x < 1)
- fun_l7_n984(x)
- else
- fun_l7_n134(x)
- end
-end
-
-def fun_l6_n155(x)
- if (x < 1)
- fun_l7_n384(x)
- else
- fun_l7_n62(x)
- end
-end
-
-def fun_l6_n156(x)
- if (x < 1)
- fun_l7_n576(x)
- else
- fun_l7_n168(x)
- end
-end
-
-def fun_l6_n157(x)
- if (x < 1)
- fun_l7_n371(x)
- else
- fun_l7_n470(x)
- end
-end
-
-def fun_l6_n158(x)
- if (x < 1)
- fun_l7_n30(x)
- else
- fun_l7_n11(x)
- end
-end
-
-def fun_l6_n159(x)
- if (x < 1)
- fun_l7_n45(x)
- else
- fun_l7_n191(x)
- end
-end
-
-def fun_l6_n160(x)
- if (x < 1)
- fun_l7_n659(x)
- else
- fun_l7_n981(x)
- end
-end
-
-def fun_l6_n161(x)
- if (x < 1)
- fun_l7_n586(x)
- else
- fun_l7_n617(x)
- end
-end
-
-def fun_l6_n162(x)
- if (x < 1)
- fun_l7_n844(x)
- else
- fun_l7_n831(x)
- end
-end
-
-def fun_l6_n163(x)
- if (x < 1)
- fun_l7_n14(x)
- else
- fun_l7_n631(x)
- end
-end
-
-def fun_l6_n164(x)
- if (x < 1)
- fun_l7_n388(x)
- else
- fun_l7_n837(x)
- end
-end
-
-def fun_l6_n165(x)
- if (x < 1)
- fun_l7_n825(x)
- else
- fun_l7_n902(x)
- end
-end
-
-def fun_l6_n166(x)
- if (x < 1)
- fun_l7_n490(x)
- else
- fun_l7_n724(x)
- end
-end
-
-def fun_l6_n167(x)
- if (x < 1)
- fun_l7_n612(x)
- else
- fun_l7_n792(x)
- end
-end
-
-def fun_l6_n168(x)
- if (x < 1)
- fun_l7_n344(x)
- else
- fun_l7_n624(x)
- end
-end
-
-def fun_l6_n169(x)
- if (x < 1)
- fun_l7_n255(x)
- else
- fun_l7_n456(x)
- end
-end
-
-def fun_l6_n170(x)
- if (x < 1)
- fun_l7_n893(x)
- else
- fun_l7_n358(x)
- end
-end
-
-def fun_l6_n171(x)
- if (x < 1)
- fun_l7_n926(x)
- else
- fun_l7_n988(x)
- end
-end
-
-def fun_l6_n172(x)
- if (x < 1)
- fun_l7_n856(x)
- else
- fun_l7_n553(x)
- end
-end
-
-def fun_l6_n173(x)
- if (x < 1)
- fun_l7_n694(x)
- else
- fun_l7_n918(x)
- end
-end
-
-def fun_l6_n174(x)
- if (x < 1)
- fun_l7_n884(x)
- else
- fun_l7_n711(x)
- end
-end
-
-def fun_l6_n175(x)
- if (x < 1)
- fun_l7_n884(x)
- else
- fun_l7_n28(x)
- end
-end
-
-def fun_l6_n176(x)
- if (x < 1)
- fun_l7_n378(x)
- else
- fun_l7_n14(x)
- end
-end
-
-def fun_l6_n177(x)
- if (x < 1)
- fun_l7_n844(x)
- else
- fun_l7_n549(x)
- end
-end
-
-def fun_l6_n178(x)
- if (x < 1)
- fun_l7_n396(x)
- else
- fun_l7_n802(x)
- end
-end
-
-def fun_l6_n179(x)
- if (x < 1)
- fun_l7_n407(x)
- else
- fun_l7_n612(x)
- end
-end
-
-def fun_l6_n180(x)
- if (x < 1)
- fun_l7_n403(x)
- else
- fun_l7_n768(x)
- end
-end
-
-def fun_l6_n181(x)
- if (x < 1)
- fun_l7_n412(x)
- else
- fun_l7_n301(x)
- end
-end
-
-def fun_l6_n182(x)
- if (x < 1)
- fun_l7_n479(x)
- else
- fun_l7_n923(x)
- end
-end
-
-def fun_l6_n183(x)
- if (x < 1)
- fun_l7_n664(x)
- else
- fun_l7_n451(x)
- end
-end
-
-def fun_l6_n184(x)
- if (x < 1)
- fun_l7_n854(x)
- else
- fun_l7_n438(x)
- end
-end
-
-def fun_l6_n185(x)
- if (x < 1)
- fun_l7_n994(x)
- else
- fun_l7_n726(x)
- end
-end
-
-def fun_l6_n186(x)
- if (x < 1)
- fun_l7_n128(x)
- else
- fun_l7_n166(x)
- end
-end
-
-def fun_l6_n187(x)
- if (x < 1)
- fun_l7_n515(x)
- else
- fun_l7_n21(x)
- end
-end
-
-def fun_l6_n188(x)
- if (x < 1)
- fun_l7_n487(x)
- else
- fun_l7_n631(x)
- end
-end
-
-def fun_l6_n189(x)
- if (x < 1)
- fun_l7_n16(x)
- else
- fun_l7_n579(x)
- end
-end
-
-def fun_l6_n190(x)
- if (x < 1)
- fun_l7_n30(x)
- else
- fun_l7_n417(x)
- end
-end
-
-def fun_l6_n191(x)
- if (x < 1)
- fun_l7_n737(x)
- else
- fun_l7_n436(x)
- end
-end
-
-def fun_l6_n192(x)
- if (x < 1)
- fun_l7_n260(x)
- else
- fun_l7_n657(x)
- end
-end
-
-def fun_l6_n193(x)
- if (x < 1)
- fun_l7_n722(x)
- else
- fun_l7_n489(x)
- end
-end
-
-def fun_l6_n194(x)
- if (x < 1)
- fun_l7_n53(x)
- else
- fun_l7_n624(x)
- end
-end
-
-def fun_l6_n195(x)
- if (x < 1)
- fun_l7_n91(x)
- else
- fun_l7_n597(x)
- end
-end
-
-def fun_l6_n196(x)
- if (x < 1)
- fun_l7_n980(x)
- else
- fun_l7_n498(x)
- end
-end
-
-def fun_l6_n197(x)
- if (x < 1)
- fun_l7_n918(x)
- else
- fun_l7_n328(x)
- end
-end
-
-def fun_l6_n198(x)
- if (x < 1)
- fun_l7_n184(x)
- else
- fun_l7_n761(x)
- end
-end
-
-def fun_l6_n199(x)
- if (x < 1)
- fun_l7_n692(x)
- else
- fun_l7_n610(x)
- end
-end
-
-def fun_l6_n200(x)
- if (x < 1)
- fun_l7_n597(x)
- else
- fun_l7_n135(x)
- end
-end
-
-def fun_l6_n201(x)
- if (x < 1)
- fun_l7_n973(x)
- else
- fun_l7_n453(x)
- end
-end
-
-def fun_l6_n202(x)
- if (x < 1)
- fun_l7_n433(x)
- else
- fun_l7_n794(x)
- end
-end
-
-def fun_l6_n203(x)
- if (x < 1)
- fun_l7_n294(x)
- else
- fun_l7_n271(x)
- end
-end
-
-def fun_l6_n204(x)
- if (x < 1)
- fun_l7_n783(x)
- else
- fun_l7_n20(x)
- end
-end
-
-def fun_l6_n205(x)
- if (x < 1)
- fun_l7_n941(x)
- else
- fun_l7_n517(x)
- end
-end
-
-def fun_l6_n206(x)
- if (x < 1)
- fun_l7_n306(x)
- else
- fun_l7_n735(x)
- end
-end
-
-def fun_l6_n207(x)
- if (x < 1)
- fun_l7_n63(x)
- else
- fun_l7_n313(x)
- end
-end
-
-def fun_l6_n208(x)
- if (x < 1)
- fun_l7_n766(x)
- else
- fun_l7_n868(x)
- end
-end
-
-def fun_l6_n209(x)
- if (x < 1)
- fun_l7_n780(x)
- else
- fun_l7_n422(x)
- end
-end
-
-def fun_l6_n210(x)
- if (x < 1)
- fun_l7_n279(x)
- else
- fun_l7_n695(x)
- end
-end
-
-def fun_l6_n211(x)
- if (x < 1)
- fun_l7_n981(x)
- else
- fun_l7_n946(x)
- end
-end
-
-def fun_l6_n212(x)
- if (x < 1)
- fun_l7_n885(x)
- else
- fun_l7_n752(x)
- end
-end
-
-def fun_l6_n213(x)
- if (x < 1)
- fun_l7_n238(x)
- else
- fun_l7_n322(x)
- end
-end
-
-def fun_l6_n214(x)
- if (x < 1)
- fun_l7_n832(x)
- else
- fun_l7_n714(x)
- end
-end
-
-def fun_l6_n215(x)
- if (x < 1)
- fun_l7_n369(x)
- else
- fun_l7_n793(x)
- end
-end
-
-def fun_l6_n216(x)
- if (x < 1)
- fun_l7_n897(x)
- else
- fun_l7_n22(x)
- end
-end
-
-def fun_l6_n217(x)
- if (x < 1)
- fun_l7_n94(x)
- else
- fun_l7_n93(x)
- end
-end
-
-def fun_l6_n218(x)
- if (x < 1)
- fun_l7_n638(x)
- else
- fun_l7_n267(x)
- end
-end
-
-def fun_l6_n219(x)
- if (x < 1)
- fun_l7_n254(x)
- else
- fun_l7_n162(x)
- end
-end
-
-def fun_l6_n220(x)
- if (x < 1)
- fun_l7_n969(x)
- else
- fun_l7_n371(x)
- end
-end
-
-def fun_l6_n221(x)
- if (x < 1)
- fun_l7_n692(x)
- else
- fun_l7_n421(x)
- end
-end
-
-def fun_l6_n222(x)
- if (x < 1)
- fun_l7_n312(x)
- else
- fun_l7_n475(x)
- end
-end
-
-def fun_l6_n223(x)
- if (x < 1)
- fun_l7_n566(x)
- else
- fun_l7_n497(x)
- end
-end
-
-def fun_l6_n224(x)
- if (x < 1)
- fun_l7_n560(x)
- else
- fun_l7_n60(x)
- end
-end
-
-def fun_l6_n225(x)
- if (x < 1)
- fun_l7_n484(x)
- else
- fun_l7_n602(x)
- end
-end
-
-def fun_l6_n226(x)
- if (x < 1)
- fun_l7_n399(x)
- else
- fun_l7_n614(x)
- end
-end
-
-def fun_l6_n227(x)
- if (x < 1)
- fun_l7_n344(x)
- else
- fun_l7_n701(x)
- end
-end
-
-def fun_l6_n228(x)
- if (x < 1)
- fun_l7_n840(x)
- else
- fun_l7_n211(x)
- end
-end
-
-def fun_l6_n229(x)
- if (x < 1)
- fun_l7_n423(x)
- else
- fun_l7_n51(x)
- end
-end
-
-def fun_l6_n230(x)
- if (x < 1)
- fun_l7_n978(x)
- else
- fun_l7_n334(x)
- end
-end
-
-def fun_l6_n231(x)
- if (x < 1)
- fun_l7_n136(x)
- else
- fun_l7_n296(x)
- end
-end
-
-def fun_l6_n232(x)
- if (x < 1)
- fun_l7_n24(x)
- else
- fun_l7_n282(x)
- end
-end
-
-def fun_l6_n233(x)
- if (x < 1)
- fun_l7_n803(x)
- else
- fun_l7_n623(x)
- end
-end
-
-def fun_l6_n234(x)
- if (x < 1)
- fun_l7_n720(x)
- else
- fun_l7_n492(x)
- end
-end
-
-def fun_l6_n235(x)
- if (x < 1)
- fun_l7_n627(x)
- else
- fun_l7_n260(x)
- end
-end
-
-def fun_l6_n236(x)
- if (x < 1)
- fun_l7_n460(x)
- else
- fun_l7_n693(x)
- end
-end
-
-def fun_l6_n237(x)
- if (x < 1)
- fun_l7_n635(x)
- else
- fun_l7_n745(x)
- end
-end
-
-def fun_l6_n238(x)
- if (x < 1)
- fun_l7_n76(x)
- else
- fun_l7_n283(x)
- end
-end
-
-def fun_l6_n239(x)
- if (x < 1)
- fun_l7_n183(x)
- else
- fun_l7_n515(x)
- end
-end
-
-def fun_l6_n240(x)
- if (x < 1)
- fun_l7_n266(x)
- else
- fun_l7_n34(x)
- end
-end
-
-def fun_l6_n241(x)
- if (x < 1)
- fun_l7_n480(x)
- else
- fun_l7_n868(x)
- end
-end
-
-def fun_l6_n242(x)
- if (x < 1)
- fun_l7_n998(x)
- else
- fun_l7_n669(x)
- end
-end
-
-def fun_l6_n243(x)
- if (x < 1)
- fun_l7_n414(x)
- else
- fun_l7_n161(x)
- end
-end
-
-def fun_l6_n244(x)
- if (x < 1)
- fun_l7_n104(x)
- else
- fun_l7_n659(x)
- end
-end
-
-def fun_l6_n245(x)
- if (x < 1)
- fun_l7_n881(x)
- else
- fun_l7_n229(x)
- end
-end
-
-def fun_l6_n246(x)
- if (x < 1)
- fun_l7_n328(x)
- else
- fun_l7_n935(x)
- end
-end
-
-def fun_l6_n247(x)
- if (x < 1)
- fun_l7_n433(x)
- else
- fun_l7_n565(x)
- end
-end
-
-def fun_l6_n248(x)
- if (x < 1)
- fun_l7_n161(x)
- else
- fun_l7_n760(x)
- end
-end
-
-def fun_l6_n249(x)
- if (x < 1)
- fun_l7_n115(x)
- else
- fun_l7_n594(x)
- end
-end
-
-def fun_l6_n250(x)
- if (x < 1)
- fun_l7_n350(x)
- else
- fun_l7_n310(x)
- end
-end
-
-def fun_l6_n251(x)
- if (x < 1)
- fun_l7_n920(x)
- else
- fun_l7_n51(x)
- end
-end
-
-def fun_l6_n252(x)
- if (x < 1)
- fun_l7_n132(x)
- else
- fun_l7_n492(x)
- end
-end
-
-def fun_l6_n253(x)
- if (x < 1)
- fun_l7_n618(x)
- else
- fun_l7_n325(x)
- end
-end
-
-def fun_l6_n254(x)
- if (x < 1)
- fun_l7_n682(x)
- else
- fun_l7_n840(x)
- end
-end
-
-def fun_l6_n255(x)
- if (x < 1)
- fun_l7_n462(x)
- else
- fun_l7_n780(x)
- end
-end
-
-def fun_l6_n256(x)
- if (x < 1)
- fun_l7_n712(x)
- else
- fun_l7_n995(x)
- end
-end
-
-def fun_l6_n257(x)
- if (x < 1)
- fun_l7_n111(x)
- else
- fun_l7_n121(x)
- end
-end
-
-def fun_l6_n258(x)
- if (x < 1)
- fun_l7_n255(x)
- else
- fun_l7_n384(x)
- end
-end
-
-def fun_l6_n259(x)
- if (x < 1)
- fun_l7_n610(x)
- else
- fun_l7_n555(x)
- end
-end
-
-def fun_l6_n260(x)
- if (x < 1)
- fun_l7_n778(x)
- else
- fun_l7_n454(x)
- end
-end
-
-def fun_l6_n261(x)
- if (x < 1)
- fun_l7_n376(x)
- else
- fun_l7_n892(x)
- end
-end
-
-def fun_l6_n262(x)
- if (x < 1)
- fun_l7_n454(x)
- else
- fun_l7_n468(x)
- end
-end
-
-def fun_l6_n263(x)
- if (x < 1)
- fun_l7_n708(x)
- else
- fun_l7_n368(x)
- end
-end
-
-def fun_l6_n264(x)
- if (x < 1)
- fun_l7_n517(x)
- else
- fun_l7_n299(x)
- end
-end
-
-def fun_l6_n265(x)
- if (x < 1)
- fun_l7_n987(x)
- else
- fun_l7_n318(x)
- end
-end
-
-def fun_l6_n266(x)
- if (x < 1)
- fun_l7_n372(x)
- else
- fun_l7_n560(x)
- end
-end
-
-def fun_l6_n267(x)
- if (x < 1)
- fun_l7_n493(x)
- else
- fun_l7_n288(x)
- end
-end
-
-def fun_l6_n268(x)
- if (x < 1)
- fun_l7_n278(x)
- else
- fun_l7_n10(x)
- end
-end
-
-def fun_l6_n269(x)
- if (x < 1)
- fun_l7_n417(x)
- else
- fun_l7_n703(x)
- end
-end
-
-def fun_l6_n270(x)
- if (x < 1)
- fun_l7_n410(x)
- else
- fun_l7_n91(x)
- end
-end
-
-def fun_l6_n271(x)
- if (x < 1)
- fun_l7_n281(x)
- else
- fun_l7_n447(x)
- end
-end
-
-def fun_l6_n272(x)
- if (x < 1)
- fun_l7_n263(x)
- else
- fun_l7_n374(x)
- end
-end
-
-def fun_l6_n273(x)
- if (x < 1)
- fun_l7_n622(x)
- else
- fun_l7_n310(x)
- end
-end
-
-def fun_l6_n274(x)
- if (x < 1)
- fun_l7_n176(x)
- else
- fun_l7_n227(x)
- end
-end
-
-def fun_l6_n275(x)
- if (x < 1)
- fun_l7_n848(x)
- else
- fun_l7_n416(x)
- end
-end
-
-def fun_l6_n276(x)
- if (x < 1)
- fun_l7_n998(x)
- else
- fun_l7_n969(x)
- end
-end
-
-def fun_l6_n277(x)
- if (x < 1)
- fun_l7_n356(x)
- else
- fun_l7_n722(x)
- end
-end
-
-def fun_l6_n278(x)
- if (x < 1)
- fun_l7_n888(x)
- else
- fun_l7_n156(x)
- end
-end
-
-def fun_l6_n279(x)
- if (x < 1)
- fun_l7_n779(x)
- else
- fun_l7_n123(x)
- end
-end
-
-def fun_l6_n280(x)
- if (x < 1)
- fun_l7_n393(x)
- else
- fun_l7_n765(x)
- end
-end
-
-def fun_l6_n281(x)
- if (x < 1)
- fun_l7_n257(x)
- else
- fun_l7_n277(x)
- end
-end
-
-def fun_l6_n282(x)
- if (x < 1)
- fun_l7_n780(x)
- else
- fun_l7_n643(x)
- end
-end
-
-def fun_l6_n283(x)
- if (x < 1)
- fun_l7_n63(x)
- else
- fun_l7_n449(x)
- end
-end
-
-def fun_l6_n284(x)
- if (x < 1)
- fun_l7_n200(x)
- else
- fun_l7_n806(x)
- end
-end
-
-def fun_l6_n285(x)
- if (x < 1)
- fun_l7_n575(x)
- else
- fun_l7_n409(x)
- end
-end
-
-def fun_l6_n286(x)
- if (x < 1)
- fun_l7_n377(x)
- else
- fun_l7_n456(x)
- end
-end
-
-def fun_l6_n287(x)
- if (x < 1)
- fun_l7_n519(x)
- else
- fun_l7_n473(x)
- end
-end
-
-def fun_l6_n288(x)
- if (x < 1)
- fun_l7_n525(x)
- else
- fun_l7_n45(x)
- end
-end
-
-def fun_l6_n289(x)
- if (x < 1)
- fun_l7_n678(x)
- else
- fun_l7_n910(x)
- end
-end
-
-def fun_l6_n290(x)
- if (x < 1)
- fun_l7_n628(x)
- else
- fun_l7_n939(x)
- end
-end
-
-def fun_l6_n291(x)
- if (x < 1)
- fun_l7_n967(x)
- else
- fun_l7_n927(x)
- end
-end
-
-def fun_l6_n292(x)
- if (x < 1)
- fun_l7_n634(x)
- else
- fun_l7_n184(x)
- end
-end
-
-def fun_l6_n293(x)
- if (x < 1)
- fun_l7_n857(x)
- else
- fun_l7_n625(x)
- end
-end
-
-def fun_l6_n294(x)
- if (x < 1)
- fun_l7_n105(x)
- else
- fun_l7_n46(x)
- end
-end
-
-def fun_l6_n295(x)
- if (x < 1)
- fun_l7_n642(x)
- else
- fun_l7_n566(x)
- end
-end
-
-def fun_l6_n296(x)
- if (x < 1)
- fun_l7_n173(x)
- else
- fun_l7_n619(x)
- end
-end
-
-def fun_l6_n297(x)
- if (x < 1)
- fun_l7_n257(x)
- else
- fun_l7_n485(x)
- end
-end
-
-def fun_l6_n298(x)
- if (x < 1)
- fun_l7_n447(x)
- else
- fun_l7_n808(x)
- end
-end
-
-def fun_l6_n299(x)
- if (x < 1)
- fun_l7_n838(x)
- else
- fun_l7_n856(x)
- end
-end
-
-def fun_l6_n300(x)
- if (x < 1)
- fun_l7_n893(x)
- else
- fun_l7_n99(x)
- end
-end
-
-def fun_l6_n301(x)
- if (x < 1)
- fun_l7_n180(x)
- else
- fun_l7_n126(x)
- end
-end
-
-def fun_l6_n302(x)
- if (x < 1)
- fun_l7_n62(x)
- else
- fun_l7_n266(x)
- end
-end
-
-def fun_l6_n303(x)
- if (x < 1)
- fun_l7_n709(x)
- else
- fun_l7_n196(x)
- end
-end
-
-def fun_l6_n304(x)
- if (x < 1)
- fun_l7_n408(x)
- else
- fun_l7_n730(x)
- end
-end
-
-def fun_l6_n305(x)
- if (x < 1)
- fun_l7_n736(x)
- else
- fun_l7_n673(x)
- end
-end
-
-def fun_l6_n306(x)
- if (x < 1)
- fun_l7_n734(x)
- else
- fun_l7_n519(x)
- end
-end
-
-def fun_l6_n307(x)
- if (x < 1)
- fun_l7_n629(x)
- else
- fun_l7_n670(x)
- end
-end
-
-def fun_l6_n308(x)
- if (x < 1)
- fun_l7_n839(x)
- else
- fun_l7_n191(x)
- end
-end
-
-def fun_l6_n309(x)
- if (x < 1)
- fun_l7_n123(x)
- else
- fun_l7_n553(x)
- end
-end
-
-def fun_l6_n310(x)
- if (x < 1)
- fun_l7_n812(x)
- else
- fun_l7_n815(x)
- end
-end
-
-def fun_l6_n311(x)
- if (x < 1)
- fun_l7_n860(x)
- else
- fun_l7_n519(x)
- end
-end
-
-def fun_l6_n312(x)
- if (x < 1)
- fun_l7_n181(x)
- else
- fun_l7_n674(x)
- end
-end
-
-def fun_l6_n313(x)
- if (x < 1)
- fun_l7_n654(x)
- else
- fun_l7_n500(x)
- end
-end
-
-def fun_l6_n314(x)
- if (x < 1)
- fun_l7_n690(x)
- else
- fun_l7_n136(x)
- end
-end
-
-def fun_l6_n315(x)
- if (x < 1)
- fun_l7_n944(x)
- else
- fun_l7_n956(x)
- end
-end
-
-def fun_l6_n316(x)
- if (x < 1)
- fun_l7_n471(x)
- else
- fun_l7_n245(x)
- end
-end
-
-def fun_l6_n317(x)
- if (x < 1)
- fun_l7_n520(x)
- else
- fun_l7_n919(x)
- end
-end
-
-def fun_l6_n318(x)
- if (x < 1)
- fun_l7_n843(x)
- else
- fun_l7_n793(x)
- end
-end
-
-def fun_l6_n319(x)
- if (x < 1)
- fun_l7_n765(x)
- else
- fun_l7_n363(x)
- end
-end
-
-def fun_l6_n320(x)
- if (x < 1)
- fun_l7_n483(x)
- else
- fun_l7_n439(x)
- end
-end
-
-def fun_l6_n321(x)
- if (x < 1)
- fun_l7_n232(x)
- else
- fun_l7_n921(x)
- end
-end
-
-def fun_l6_n322(x)
- if (x < 1)
- fun_l7_n398(x)
- else
- fun_l7_n862(x)
- end
-end
-
-def fun_l6_n323(x)
- if (x < 1)
- fun_l7_n550(x)
- else
- fun_l7_n84(x)
- end
-end
-
-def fun_l6_n324(x)
- if (x < 1)
- fun_l7_n788(x)
- else
- fun_l7_n512(x)
- end
-end
-
-def fun_l6_n325(x)
- if (x < 1)
- fun_l7_n512(x)
- else
- fun_l7_n303(x)
- end
-end
-
-def fun_l6_n326(x)
- if (x < 1)
- fun_l7_n86(x)
- else
- fun_l7_n555(x)
- end
-end
-
-def fun_l6_n327(x)
- if (x < 1)
- fun_l7_n857(x)
- else
- fun_l7_n751(x)
- end
-end
-
-def fun_l6_n328(x)
- if (x < 1)
- fun_l7_n341(x)
- else
- fun_l7_n208(x)
- end
-end
-
-def fun_l6_n329(x)
- if (x < 1)
- fun_l7_n707(x)
- else
- fun_l7_n371(x)
- end
-end
-
-def fun_l6_n330(x)
- if (x < 1)
- fun_l7_n217(x)
- else
- fun_l7_n604(x)
- end
-end
-
-def fun_l6_n331(x)
- if (x < 1)
- fun_l7_n607(x)
- else
- fun_l7_n471(x)
- end
-end
-
-def fun_l6_n332(x)
- if (x < 1)
- fun_l7_n818(x)
- else
- fun_l7_n787(x)
- end
-end
-
-def fun_l6_n333(x)
- if (x < 1)
- fun_l7_n28(x)
- else
- fun_l7_n220(x)
- end
-end
-
-def fun_l6_n334(x)
- if (x < 1)
- fun_l7_n666(x)
- else
- fun_l7_n995(x)
- end
-end
-
-def fun_l6_n335(x)
- if (x < 1)
- fun_l7_n3(x)
- else
- fun_l7_n970(x)
- end
-end
-
-def fun_l6_n336(x)
- if (x < 1)
- fun_l7_n977(x)
- else
- fun_l7_n77(x)
- end
-end
-
-def fun_l6_n337(x)
- if (x < 1)
- fun_l7_n54(x)
- else
- fun_l7_n814(x)
- end
-end
-
-def fun_l6_n338(x)
- if (x < 1)
- fun_l7_n129(x)
- else
- fun_l7_n624(x)
- end
-end
-
-def fun_l6_n339(x)
- if (x < 1)
- fun_l7_n866(x)
- else
- fun_l7_n821(x)
- end
-end
-
-def fun_l6_n340(x)
- if (x < 1)
- fun_l7_n912(x)
- else
- fun_l7_n24(x)
- end
-end
-
-def fun_l6_n341(x)
- if (x < 1)
- fun_l7_n684(x)
- else
- fun_l7_n610(x)
- end
-end
-
-def fun_l6_n342(x)
- if (x < 1)
- fun_l7_n816(x)
- else
- fun_l7_n826(x)
- end
-end
-
-def fun_l6_n343(x)
- if (x < 1)
- fun_l7_n479(x)
- else
- fun_l7_n444(x)
- end
-end
-
-def fun_l6_n344(x)
- if (x < 1)
- fun_l7_n51(x)
- else
- fun_l7_n731(x)
- end
-end
-
-def fun_l6_n345(x)
- if (x < 1)
- fun_l7_n690(x)
- else
- fun_l7_n631(x)
- end
-end
-
-def fun_l6_n346(x)
- if (x < 1)
- fun_l7_n254(x)
- else
- fun_l7_n353(x)
- end
-end
-
-def fun_l6_n347(x)
- if (x < 1)
- fun_l7_n905(x)
- else
- fun_l7_n422(x)
- end
-end
-
-def fun_l6_n348(x)
- if (x < 1)
- fun_l7_n249(x)
- else
- fun_l7_n200(x)
- end
-end
-
-def fun_l6_n349(x)
- if (x < 1)
- fun_l7_n11(x)
- else
- fun_l7_n550(x)
- end
-end
-
-def fun_l6_n350(x)
- if (x < 1)
- fun_l7_n818(x)
- else
- fun_l7_n444(x)
- end
-end
-
-def fun_l6_n351(x)
- if (x < 1)
- fun_l7_n422(x)
- else
- fun_l7_n242(x)
- end
-end
-
-def fun_l6_n352(x)
- if (x < 1)
- fun_l7_n653(x)
- else
- fun_l7_n912(x)
- end
-end
-
-def fun_l6_n353(x)
- if (x < 1)
- fun_l7_n605(x)
- else
- fun_l7_n129(x)
- end
-end
-
-def fun_l6_n354(x)
- if (x < 1)
- fun_l7_n622(x)
- else
- fun_l7_n172(x)
- end
-end
-
-def fun_l6_n355(x)
- if (x < 1)
- fun_l7_n568(x)
- else
- fun_l7_n26(x)
- end
-end
-
-def fun_l6_n356(x)
- if (x < 1)
- fun_l7_n777(x)
- else
- fun_l7_n818(x)
- end
-end
-
-def fun_l6_n357(x)
- if (x < 1)
- fun_l7_n807(x)
- else
- fun_l7_n642(x)
- end
-end
-
-def fun_l6_n358(x)
- if (x < 1)
- fun_l7_n745(x)
- else
- fun_l7_n866(x)
- end
-end
-
-def fun_l6_n359(x)
- if (x < 1)
- fun_l7_n603(x)
- else
- fun_l7_n42(x)
- end
-end
-
-def fun_l6_n360(x)
- if (x < 1)
- fun_l7_n818(x)
- else
- fun_l7_n203(x)
- end
-end
-
-def fun_l6_n361(x)
- if (x < 1)
- fun_l7_n451(x)
- else
- fun_l7_n719(x)
- end
-end
-
-def fun_l6_n362(x)
- if (x < 1)
- fun_l7_n31(x)
- else
- fun_l7_n148(x)
- end
-end
-
-def fun_l6_n363(x)
- if (x < 1)
- fun_l7_n148(x)
- else
- fun_l7_n292(x)
- end
-end
-
-def fun_l6_n364(x)
- if (x < 1)
- fun_l7_n175(x)
- else
- fun_l7_n849(x)
- end
-end
-
-def fun_l6_n365(x)
- if (x < 1)
- fun_l7_n414(x)
- else
- fun_l7_n57(x)
- end
-end
-
-def fun_l6_n366(x)
- if (x < 1)
- fun_l7_n771(x)
- else
- fun_l7_n625(x)
- end
-end
-
-def fun_l6_n367(x)
- if (x < 1)
- fun_l7_n232(x)
- else
- fun_l7_n108(x)
- end
-end
-
-def fun_l6_n368(x)
- if (x < 1)
- fun_l7_n123(x)
- else
- fun_l7_n413(x)
- end
-end
-
-def fun_l6_n369(x)
- if (x < 1)
- fun_l7_n587(x)
- else
- fun_l7_n876(x)
- end
-end
-
-def fun_l6_n370(x)
- if (x < 1)
- fun_l7_n750(x)
- else
- fun_l7_n531(x)
- end
-end
-
-def fun_l6_n371(x)
- if (x < 1)
- fun_l7_n55(x)
- else
- fun_l7_n859(x)
- end
-end
-
-def fun_l6_n372(x)
- if (x < 1)
- fun_l7_n848(x)
- else
- fun_l7_n272(x)
- end
-end
-
-def fun_l6_n373(x)
- if (x < 1)
- fun_l7_n480(x)
- else
- fun_l7_n976(x)
- end
-end
-
-def fun_l6_n374(x)
- if (x < 1)
- fun_l7_n298(x)
- else
- fun_l7_n844(x)
- end
-end
-
-def fun_l6_n375(x)
- if (x < 1)
- fun_l7_n564(x)
- else
- fun_l7_n960(x)
- end
-end
-
-def fun_l6_n376(x)
- if (x < 1)
- fun_l7_n684(x)
- else
- fun_l7_n181(x)
- end
-end
-
-def fun_l6_n377(x)
- if (x < 1)
- fun_l7_n153(x)
- else
- fun_l7_n21(x)
- end
-end
-
-def fun_l6_n378(x)
- if (x < 1)
- fun_l7_n377(x)
- else
- fun_l7_n761(x)
- end
-end
-
-def fun_l6_n379(x)
- if (x < 1)
- fun_l7_n737(x)
- else
- fun_l7_n605(x)
- end
-end
-
-def fun_l6_n380(x)
- if (x < 1)
- fun_l7_n536(x)
- else
- fun_l7_n143(x)
- end
-end
-
-def fun_l6_n381(x)
- if (x < 1)
- fun_l7_n314(x)
- else
- fun_l7_n999(x)
- end
-end
-
-def fun_l6_n382(x)
- if (x < 1)
- fun_l7_n995(x)
- else
- fun_l7_n564(x)
- end
-end
-
-def fun_l6_n383(x)
- if (x < 1)
- fun_l7_n772(x)
- else
- fun_l7_n520(x)
- end
-end
-
-def fun_l6_n384(x)
- if (x < 1)
- fun_l7_n250(x)
- else
- fun_l7_n142(x)
- end
-end
-
-def fun_l6_n385(x)
- if (x < 1)
- fun_l7_n993(x)
- else
- fun_l7_n987(x)
- end
-end
-
-def fun_l6_n386(x)
- if (x < 1)
- fun_l7_n717(x)
- else
- fun_l7_n674(x)
- end
-end
-
-def fun_l6_n387(x)
- if (x < 1)
- fun_l7_n585(x)
- else
- fun_l7_n102(x)
- end
-end
-
-def fun_l6_n388(x)
- if (x < 1)
- fun_l7_n779(x)
- else
- fun_l7_n110(x)
- end
-end
-
-def fun_l6_n389(x)
- if (x < 1)
- fun_l7_n815(x)
- else
- fun_l7_n194(x)
- end
-end
-
-def fun_l6_n390(x)
- if (x < 1)
- fun_l7_n261(x)
- else
- fun_l7_n30(x)
- end
-end
-
-def fun_l6_n391(x)
- if (x < 1)
- fun_l7_n746(x)
- else
- fun_l7_n207(x)
- end
-end
-
-def fun_l6_n392(x)
- if (x < 1)
- fun_l7_n866(x)
- else
- fun_l7_n862(x)
- end
-end
-
-def fun_l6_n393(x)
- if (x < 1)
- fun_l7_n47(x)
- else
- fun_l7_n692(x)
- end
-end
-
-def fun_l6_n394(x)
- if (x < 1)
- fun_l7_n140(x)
- else
- fun_l7_n104(x)
- end
-end
-
-def fun_l6_n395(x)
- if (x < 1)
- fun_l7_n170(x)
- else
- fun_l7_n93(x)
- end
-end
-
-def fun_l6_n396(x)
- if (x < 1)
- fun_l7_n184(x)
- else
- fun_l7_n218(x)
- end
-end
-
-def fun_l6_n397(x)
- if (x < 1)
- fun_l7_n268(x)
- else
- fun_l7_n278(x)
- end
-end
-
-def fun_l6_n398(x)
- if (x < 1)
- fun_l7_n859(x)
- else
- fun_l7_n888(x)
- end
-end
-
-def fun_l6_n399(x)
- if (x < 1)
- fun_l7_n540(x)
- else
- fun_l7_n218(x)
- end
-end
-
-def fun_l6_n400(x)
- if (x < 1)
- fun_l7_n148(x)
- else
- fun_l7_n220(x)
- end
-end
-
-def fun_l6_n401(x)
- if (x < 1)
- fun_l7_n169(x)
- else
- fun_l7_n310(x)
- end
-end
-
-def fun_l6_n402(x)
- if (x < 1)
- fun_l7_n256(x)
- else
- fun_l7_n336(x)
- end
-end
-
-def fun_l6_n403(x)
- if (x < 1)
- fun_l7_n257(x)
- else
- fun_l7_n536(x)
- end
-end
-
-def fun_l6_n404(x)
- if (x < 1)
- fun_l7_n47(x)
- else
- fun_l7_n714(x)
- end
-end
-
-def fun_l6_n405(x)
- if (x < 1)
- fun_l7_n913(x)
- else
- fun_l7_n705(x)
- end
-end
-
-def fun_l6_n406(x)
- if (x < 1)
- fun_l7_n816(x)
- else
- fun_l7_n168(x)
- end
-end
-
-def fun_l6_n407(x)
- if (x < 1)
- fun_l7_n506(x)
- else
- fun_l7_n772(x)
- end
-end
-
-def fun_l6_n408(x)
- if (x < 1)
- fun_l7_n983(x)
- else
- fun_l7_n973(x)
- end
-end
-
-def fun_l6_n409(x)
- if (x < 1)
- fun_l7_n752(x)
- else
- fun_l7_n543(x)
- end
-end
-
-def fun_l6_n410(x)
- if (x < 1)
- fun_l7_n580(x)
- else
- fun_l7_n265(x)
- end
-end
-
-def fun_l6_n411(x)
- if (x < 1)
- fun_l7_n744(x)
- else
- fun_l7_n736(x)
- end
-end
-
-def fun_l6_n412(x)
- if (x < 1)
- fun_l7_n950(x)
- else
- fun_l7_n5(x)
- end
-end
-
-def fun_l6_n413(x)
- if (x < 1)
- fun_l7_n734(x)
- else
- fun_l7_n151(x)
- end
-end
-
-def fun_l6_n414(x)
- if (x < 1)
- fun_l7_n907(x)
- else
- fun_l7_n113(x)
- end
-end
-
-def fun_l6_n415(x)
- if (x < 1)
- fun_l7_n621(x)
- else
- fun_l7_n272(x)
- end
-end
-
-def fun_l6_n416(x)
- if (x < 1)
- fun_l7_n598(x)
- else
- fun_l7_n872(x)
- end
-end
-
-def fun_l6_n417(x)
- if (x < 1)
- fun_l7_n811(x)
- else
- fun_l7_n734(x)
- end
-end
-
-def fun_l6_n418(x)
- if (x < 1)
- fun_l7_n18(x)
- else
- fun_l7_n405(x)
- end
-end
-
-def fun_l6_n419(x)
- if (x < 1)
- fun_l7_n89(x)
- else
- fun_l7_n153(x)
- end
-end
-
-def fun_l6_n420(x)
- if (x < 1)
- fun_l7_n438(x)
- else
- fun_l7_n452(x)
- end
-end
-
-def fun_l6_n421(x)
- if (x < 1)
- fun_l7_n601(x)
- else
- fun_l7_n777(x)
- end
-end
-
-def fun_l6_n422(x)
- if (x < 1)
- fun_l7_n202(x)
- else
- fun_l7_n368(x)
- end
-end
-
-def fun_l6_n423(x)
- if (x < 1)
- fun_l7_n636(x)
- else
- fun_l7_n137(x)
- end
-end
-
-def fun_l6_n424(x)
- if (x < 1)
- fun_l7_n222(x)
- else
- fun_l7_n838(x)
- end
-end
-
-def fun_l6_n425(x)
- if (x < 1)
- fun_l7_n388(x)
- else
- fun_l7_n175(x)
- end
-end
-
-def fun_l6_n426(x)
- if (x < 1)
- fun_l7_n629(x)
- else
- fun_l7_n376(x)
- end
-end
-
-def fun_l6_n427(x)
- if (x < 1)
- fun_l7_n293(x)
- else
- fun_l7_n517(x)
- end
-end
-
-def fun_l6_n428(x)
- if (x < 1)
- fun_l7_n859(x)
- else
- fun_l7_n129(x)
- end
-end
-
-def fun_l6_n429(x)
- if (x < 1)
- fun_l7_n854(x)
- else
- fun_l7_n647(x)
- end
-end
-
-def fun_l6_n430(x)
- if (x < 1)
- fun_l7_n117(x)
- else
- fun_l7_n291(x)
- end
-end
-
-def fun_l6_n431(x)
- if (x < 1)
- fun_l7_n505(x)
- else
- fun_l7_n938(x)
- end
-end
-
-def fun_l6_n432(x)
- if (x < 1)
- fun_l7_n536(x)
- else
- fun_l7_n303(x)
- end
-end
-
-def fun_l6_n433(x)
- if (x < 1)
- fun_l7_n443(x)
- else
- fun_l7_n945(x)
- end
-end
-
-def fun_l6_n434(x)
- if (x < 1)
- fun_l7_n74(x)
- else
- fun_l7_n594(x)
- end
-end
-
-def fun_l6_n435(x)
- if (x < 1)
- fun_l7_n273(x)
- else
- fun_l7_n704(x)
- end
-end
-
-def fun_l6_n436(x)
- if (x < 1)
- fun_l7_n451(x)
- else
- fun_l7_n371(x)
- end
-end
-
-def fun_l6_n437(x)
- if (x < 1)
- fun_l7_n628(x)
- else
- fun_l7_n963(x)
- end
-end
-
-def fun_l6_n438(x)
- if (x < 1)
- fun_l7_n361(x)
- else
- fun_l7_n506(x)
- end
-end
-
-def fun_l6_n439(x)
- if (x < 1)
- fun_l7_n8(x)
- else
- fun_l7_n721(x)
- end
-end
-
-def fun_l6_n440(x)
- if (x < 1)
- fun_l7_n728(x)
- else
- fun_l7_n372(x)
- end
-end
-
-def fun_l6_n441(x)
- if (x < 1)
- fun_l7_n988(x)
- else
- fun_l7_n323(x)
- end
-end
-
-def fun_l6_n442(x)
- if (x < 1)
- fun_l7_n5(x)
- else
- fun_l7_n56(x)
- end
-end
-
-def fun_l6_n443(x)
- if (x < 1)
- fun_l7_n553(x)
- else
- fun_l7_n776(x)
- end
-end
-
-def fun_l6_n444(x)
- if (x < 1)
- fun_l7_n194(x)
- else
- fun_l7_n101(x)
- end
-end
-
-def fun_l6_n445(x)
- if (x < 1)
- fun_l7_n613(x)
- else
- fun_l7_n977(x)
- end
-end
-
-def fun_l6_n446(x)
- if (x < 1)
- fun_l7_n23(x)
- else
- fun_l7_n311(x)
- end
-end
-
-def fun_l6_n447(x)
- if (x < 1)
- fun_l7_n686(x)
- else
- fun_l7_n8(x)
- end
-end
-
-def fun_l6_n448(x)
- if (x < 1)
- fun_l7_n812(x)
- else
- fun_l7_n229(x)
- end
-end
-
-def fun_l6_n449(x)
- if (x < 1)
- fun_l7_n222(x)
- else
- fun_l7_n620(x)
- end
-end
-
-def fun_l6_n450(x)
- if (x < 1)
- fun_l7_n599(x)
- else
- fun_l7_n468(x)
- end
-end
-
-def fun_l6_n451(x)
- if (x < 1)
- fun_l7_n347(x)
- else
- fun_l7_n504(x)
- end
-end
-
-def fun_l6_n452(x)
- if (x < 1)
- fun_l7_n95(x)
- else
- fun_l7_n482(x)
- end
-end
-
-def fun_l6_n453(x)
- if (x < 1)
- fun_l7_n217(x)
- else
- fun_l7_n419(x)
- end
-end
-
-def fun_l6_n454(x)
- if (x < 1)
- fun_l7_n28(x)
- else
- fun_l7_n609(x)
- end
-end
-
-def fun_l6_n455(x)
- if (x < 1)
- fun_l7_n932(x)
- else
- fun_l7_n744(x)
- end
-end
-
-def fun_l6_n456(x)
- if (x < 1)
- fun_l7_n901(x)
- else
- fun_l7_n882(x)
- end
-end
-
-def fun_l6_n457(x)
- if (x < 1)
- fun_l7_n368(x)
- else
- fun_l7_n441(x)
- end
-end
-
-def fun_l6_n458(x)
- if (x < 1)
- fun_l7_n49(x)
- else
- fun_l7_n135(x)
- end
-end
-
-def fun_l6_n459(x)
- if (x < 1)
- fun_l7_n228(x)
- else
- fun_l7_n899(x)
- end
-end
-
-def fun_l6_n460(x)
- if (x < 1)
- fun_l7_n90(x)
- else
- fun_l7_n190(x)
- end
-end
-
-def fun_l6_n461(x)
- if (x < 1)
- fun_l7_n892(x)
- else
- fun_l7_n670(x)
- end
-end
-
-def fun_l6_n462(x)
- if (x < 1)
- fun_l7_n961(x)
- else
- fun_l7_n769(x)
- end
-end
-
-def fun_l6_n463(x)
- if (x < 1)
- fun_l7_n828(x)
- else
- fun_l7_n219(x)
- end
-end
-
-def fun_l6_n464(x)
- if (x < 1)
- fun_l7_n17(x)
- else
- fun_l7_n345(x)
- end
-end
-
-def fun_l6_n465(x)
- if (x < 1)
- fun_l7_n412(x)
- else
- fun_l7_n498(x)
- end
-end
-
-def fun_l6_n466(x)
- if (x < 1)
- fun_l7_n659(x)
- else
- fun_l7_n781(x)
- end
-end
-
-def fun_l6_n467(x)
- if (x < 1)
- fun_l7_n528(x)
- else
- fun_l7_n138(x)
- end
-end
-
-def fun_l6_n468(x)
- if (x < 1)
- fun_l7_n272(x)
- else
- fun_l7_n512(x)
- end
-end
-
-def fun_l6_n469(x)
- if (x < 1)
- fun_l7_n458(x)
- else
- fun_l7_n430(x)
- end
-end
-
-def fun_l6_n470(x)
- if (x < 1)
- fun_l7_n192(x)
- else
- fun_l7_n755(x)
- end
-end
-
-def fun_l6_n471(x)
- if (x < 1)
- fun_l7_n188(x)
- else
- fun_l7_n827(x)
- end
-end
-
-def fun_l6_n472(x)
- if (x < 1)
- fun_l7_n467(x)
- else
- fun_l7_n167(x)
- end
-end
-
-def fun_l6_n473(x)
- if (x < 1)
- fun_l7_n648(x)
- else
- fun_l7_n823(x)
- end
-end
-
-def fun_l6_n474(x)
- if (x < 1)
- fun_l7_n788(x)
- else
- fun_l7_n120(x)
- end
-end
-
-def fun_l6_n475(x)
- if (x < 1)
- fun_l7_n199(x)
- else
- fun_l7_n25(x)
- end
-end
-
-def fun_l6_n476(x)
- if (x < 1)
- fun_l7_n812(x)
- else
- fun_l7_n258(x)
- end
-end
-
-def fun_l6_n477(x)
- if (x < 1)
- fun_l7_n525(x)
- else
- fun_l7_n140(x)
- end
-end
-
-def fun_l6_n478(x)
- if (x < 1)
- fun_l7_n728(x)
- else
- fun_l7_n157(x)
- end
-end
-
-def fun_l6_n479(x)
- if (x < 1)
- fun_l7_n527(x)
- else
- fun_l7_n172(x)
- end
-end
-
-def fun_l6_n480(x)
- if (x < 1)
- fun_l7_n295(x)
- else
- fun_l7_n230(x)
- end
-end
-
-def fun_l6_n481(x)
- if (x < 1)
- fun_l7_n619(x)
- else
- fun_l7_n495(x)
- end
-end
-
-def fun_l6_n482(x)
- if (x < 1)
- fun_l7_n412(x)
- else
- fun_l7_n30(x)
- end
-end
-
-def fun_l6_n483(x)
- if (x < 1)
- fun_l7_n236(x)
- else
- fun_l7_n842(x)
- end
-end
-
-def fun_l6_n484(x)
- if (x < 1)
- fun_l7_n59(x)
- else
- fun_l7_n341(x)
- end
-end
-
-def fun_l6_n485(x)
- if (x < 1)
- fun_l7_n841(x)
- else
- fun_l7_n67(x)
- end
-end
-
-def fun_l6_n486(x)
- if (x < 1)
- fun_l7_n299(x)
- else
- fun_l7_n144(x)
- end
-end
-
-def fun_l6_n487(x)
- if (x < 1)
- fun_l7_n672(x)
- else
- fun_l7_n682(x)
- end
-end
-
-def fun_l6_n488(x)
- if (x < 1)
- fun_l7_n110(x)
- else
- fun_l7_n231(x)
- end
-end
-
-def fun_l6_n489(x)
- if (x < 1)
- fun_l7_n984(x)
- else
- fun_l7_n583(x)
- end
-end
-
-def fun_l6_n490(x)
- if (x < 1)
- fun_l7_n354(x)
- else
- fun_l7_n90(x)
- end
-end
-
-def fun_l6_n491(x)
- if (x < 1)
- fun_l7_n541(x)
- else
- fun_l7_n583(x)
- end
-end
-
-def fun_l6_n492(x)
- if (x < 1)
- fun_l7_n35(x)
- else
- fun_l7_n209(x)
- end
-end
-
-def fun_l6_n493(x)
- if (x < 1)
- fun_l7_n547(x)
- else
- fun_l7_n982(x)
- end
-end
-
-def fun_l6_n494(x)
- if (x < 1)
- fun_l7_n3(x)
- else
- fun_l7_n230(x)
- end
-end
-
-def fun_l6_n495(x)
- if (x < 1)
- fun_l7_n777(x)
- else
- fun_l7_n140(x)
- end
-end
-
-def fun_l6_n496(x)
- if (x < 1)
- fun_l7_n927(x)
- else
- fun_l7_n934(x)
- end
-end
-
-def fun_l6_n497(x)
- if (x < 1)
- fun_l7_n201(x)
- else
- fun_l7_n342(x)
- end
-end
-
-def fun_l6_n498(x)
- if (x < 1)
- fun_l7_n973(x)
- else
- fun_l7_n106(x)
- end
-end
-
-def fun_l6_n499(x)
- if (x < 1)
- fun_l7_n373(x)
- else
- fun_l7_n558(x)
- end
-end
-
-def fun_l6_n500(x)
- if (x < 1)
- fun_l7_n835(x)
- else
- fun_l7_n981(x)
- end
-end
-
-def fun_l6_n501(x)
- if (x < 1)
- fun_l7_n135(x)
- else
- fun_l7_n997(x)
- end
-end
-
-def fun_l6_n502(x)
- if (x < 1)
- fun_l7_n129(x)
- else
- fun_l7_n530(x)
- end
-end
-
-def fun_l6_n503(x)
- if (x < 1)
- fun_l7_n924(x)
- else
- fun_l7_n611(x)
- end
-end
-
-def fun_l6_n504(x)
- if (x < 1)
- fun_l7_n125(x)
- else
- fun_l7_n26(x)
- end
-end
-
-def fun_l6_n505(x)
- if (x < 1)
- fun_l7_n592(x)
- else
- fun_l7_n50(x)
- end
-end
-
-def fun_l6_n506(x)
- if (x < 1)
- fun_l7_n220(x)
- else
- fun_l7_n787(x)
- end
-end
-
-def fun_l6_n507(x)
- if (x < 1)
- fun_l7_n908(x)
- else
- fun_l7_n15(x)
- end
-end
-
-def fun_l6_n508(x)
- if (x < 1)
- fun_l7_n475(x)
- else
- fun_l7_n899(x)
- end
-end
-
-def fun_l6_n509(x)
- if (x < 1)
- fun_l7_n704(x)
- else
- fun_l7_n559(x)
- end
-end
-
-def fun_l6_n510(x)
- if (x < 1)
- fun_l7_n625(x)
- else
- fun_l7_n73(x)
- end
-end
-
-def fun_l6_n511(x)
- if (x < 1)
- fun_l7_n234(x)
- else
- fun_l7_n166(x)
- end
-end
-
-def fun_l6_n512(x)
- if (x < 1)
- fun_l7_n502(x)
- else
- fun_l7_n304(x)
- end
-end
-
-def fun_l6_n513(x)
- if (x < 1)
- fun_l7_n686(x)
- else
- fun_l7_n643(x)
- end
-end
-
-def fun_l6_n514(x)
- if (x < 1)
- fun_l7_n804(x)
- else
- fun_l7_n116(x)
- end
-end
-
-def fun_l6_n515(x)
- if (x < 1)
- fun_l7_n365(x)
- else
- fun_l7_n102(x)
- end
-end
-
-def fun_l6_n516(x)
- if (x < 1)
- fun_l7_n563(x)
- else
- fun_l7_n161(x)
- end
-end
-
-def fun_l6_n517(x)
- if (x < 1)
- fun_l7_n695(x)
- else
- fun_l7_n936(x)
- end
-end
-
-def fun_l6_n518(x)
- if (x < 1)
- fun_l7_n220(x)
- else
- fun_l7_n884(x)
- end
-end
-
-def fun_l6_n519(x)
- if (x < 1)
- fun_l7_n602(x)
- else
- fun_l7_n144(x)
- end
-end
-
-def fun_l6_n520(x)
- if (x < 1)
- fun_l7_n409(x)
- else
- fun_l7_n861(x)
- end
-end
-
-def fun_l6_n521(x)
- if (x < 1)
- fun_l7_n258(x)
- else
- fun_l7_n768(x)
- end
-end
-
-def fun_l6_n522(x)
- if (x < 1)
- fun_l7_n878(x)
- else
- fun_l7_n503(x)
- end
-end
-
-def fun_l6_n523(x)
- if (x < 1)
- fun_l7_n570(x)
- else
- fun_l7_n675(x)
- end
-end
-
-def fun_l6_n524(x)
- if (x < 1)
- fun_l7_n741(x)
- else
- fun_l7_n748(x)
- end
-end
-
-def fun_l6_n525(x)
- if (x < 1)
- fun_l7_n729(x)
- else
- fun_l7_n272(x)
- end
-end
-
-def fun_l6_n526(x)
- if (x < 1)
- fun_l7_n734(x)
- else
- fun_l7_n70(x)
- end
-end
-
-def fun_l6_n527(x)
- if (x < 1)
- fun_l7_n235(x)
- else
- fun_l7_n606(x)
- end
-end
-
-def fun_l6_n528(x)
- if (x < 1)
- fun_l7_n67(x)
- else
- fun_l7_n399(x)
- end
-end
-
-def fun_l6_n529(x)
- if (x < 1)
- fun_l7_n706(x)
- else
- fun_l7_n150(x)
- end
-end
-
-def fun_l6_n530(x)
- if (x < 1)
- fun_l7_n35(x)
- else
- fun_l7_n951(x)
- end
-end
-
-def fun_l6_n531(x)
- if (x < 1)
- fun_l7_n517(x)
- else
- fun_l7_n329(x)
- end
-end
-
-def fun_l6_n532(x)
- if (x < 1)
- fun_l7_n392(x)
- else
- fun_l7_n970(x)
- end
-end
-
-def fun_l6_n533(x)
- if (x < 1)
- fun_l7_n466(x)
- else
- fun_l7_n260(x)
- end
-end
-
-def fun_l6_n534(x)
- if (x < 1)
- fun_l7_n957(x)
- else
- fun_l7_n417(x)
- end
-end
-
-def fun_l6_n535(x)
- if (x < 1)
- fun_l7_n184(x)
- else
- fun_l7_n188(x)
- end
-end
-
-def fun_l6_n536(x)
- if (x < 1)
- fun_l7_n298(x)
- else
- fun_l7_n192(x)
- end
-end
-
-def fun_l6_n537(x)
- if (x < 1)
- fun_l7_n28(x)
- else
- fun_l7_n309(x)
- end
-end
-
-def fun_l6_n538(x)
- if (x < 1)
- fun_l7_n801(x)
- else
- fun_l7_n84(x)
- end
-end
-
-def fun_l6_n539(x)
- if (x < 1)
- fun_l7_n894(x)
- else
- fun_l7_n973(x)
- end
-end
-
-def fun_l6_n540(x)
- if (x < 1)
- fun_l7_n895(x)
- else
- fun_l7_n231(x)
- end
-end
-
-def fun_l6_n541(x)
- if (x < 1)
- fun_l7_n728(x)
- else
- fun_l7_n28(x)
- end
-end
-
-def fun_l6_n542(x)
- if (x < 1)
- fun_l7_n655(x)
- else
- fun_l7_n845(x)
- end
-end
-
-def fun_l6_n543(x)
- if (x < 1)
- fun_l7_n952(x)
- else
- fun_l7_n484(x)
- end
-end
-
-def fun_l6_n544(x)
- if (x < 1)
- fun_l7_n835(x)
- else
- fun_l7_n187(x)
- end
-end
-
-def fun_l6_n545(x)
- if (x < 1)
- fun_l7_n748(x)
- else
- fun_l7_n460(x)
- end
-end
-
-def fun_l6_n546(x)
- if (x < 1)
- fun_l7_n734(x)
- else
- fun_l7_n165(x)
- end
-end
-
-def fun_l6_n547(x)
- if (x < 1)
- fun_l7_n499(x)
- else
- fun_l7_n133(x)
- end
-end
-
-def fun_l6_n548(x)
- if (x < 1)
- fun_l7_n751(x)
- else
- fun_l7_n731(x)
- end
-end
-
-def fun_l6_n549(x)
- if (x < 1)
- fun_l7_n269(x)
- else
- fun_l7_n690(x)
- end
-end
-
-def fun_l6_n550(x)
- if (x < 1)
- fun_l7_n320(x)
- else
- fun_l7_n308(x)
- end
-end
-
-def fun_l6_n551(x)
- if (x < 1)
- fun_l7_n182(x)
- else
- fun_l7_n144(x)
- end
-end
-
-def fun_l6_n552(x)
- if (x < 1)
- fun_l7_n683(x)
- else
- fun_l7_n691(x)
- end
-end
-
-def fun_l6_n553(x)
- if (x < 1)
- fun_l7_n502(x)
- else
- fun_l7_n520(x)
- end
-end
-
-def fun_l6_n554(x)
- if (x < 1)
- fun_l7_n60(x)
- else
- fun_l7_n551(x)
- end
-end
-
-def fun_l6_n555(x)
- if (x < 1)
- fun_l7_n185(x)
- else
- fun_l7_n87(x)
- end
-end
-
-def fun_l6_n556(x)
- if (x < 1)
- fun_l7_n140(x)
- else
- fun_l7_n725(x)
- end
-end
-
-def fun_l6_n557(x)
- if (x < 1)
- fun_l7_n76(x)
- else
- fun_l7_n501(x)
- end
-end
-
-def fun_l6_n558(x)
- if (x < 1)
- fun_l7_n553(x)
- else
- fun_l7_n146(x)
- end
-end
-
-def fun_l6_n559(x)
- if (x < 1)
- fun_l7_n535(x)
- else
- fun_l7_n17(x)
- end
-end
-
-def fun_l6_n560(x)
- if (x < 1)
- fun_l7_n566(x)
- else
- fun_l7_n773(x)
- end
-end
-
-def fun_l6_n561(x)
- if (x < 1)
- fun_l7_n358(x)
- else
- fun_l7_n951(x)
- end
-end
-
-def fun_l6_n562(x)
- if (x < 1)
- fun_l7_n492(x)
- else
- fun_l7_n478(x)
- end
-end
-
-def fun_l6_n563(x)
- if (x < 1)
- fun_l7_n796(x)
- else
- fun_l7_n906(x)
- end
-end
-
-def fun_l6_n564(x)
- if (x < 1)
- fun_l7_n751(x)
- else
- fun_l7_n546(x)
- end
-end
-
-def fun_l6_n565(x)
- if (x < 1)
- fun_l7_n179(x)
- else
- fun_l7_n49(x)
- end
-end
-
-def fun_l6_n566(x)
- if (x < 1)
- fun_l7_n550(x)
- else
- fun_l7_n440(x)
- end
-end
-
-def fun_l6_n567(x)
- if (x < 1)
- fun_l7_n715(x)
- else
- fun_l7_n862(x)
- end
-end
-
-def fun_l6_n568(x)
- if (x < 1)
- fun_l7_n124(x)
- else
- fun_l7_n191(x)
- end
-end
-
-def fun_l6_n569(x)
- if (x < 1)
- fun_l7_n709(x)
- else
- fun_l7_n704(x)
- end
-end
-
-def fun_l6_n570(x)
- if (x < 1)
- fun_l7_n864(x)
- else
- fun_l7_n84(x)
- end
-end
-
-def fun_l6_n571(x)
- if (x < 1)
- fun_l7_n302(x)
- else
- fun_l7_n424(x)
- end
-end
-
-def fun_l6_n572(x)
- if (x < 1)
- fun_l7_n488(x)
- else
- fun_l7_n570(x)
- end
-end
-
-def fun_l6_n573(x)
- if (x < 1)
- fun_l7_n590(x)
- else
- fun_l7_n560(x)
- end
-end
-
-def fun_l6_n574(x)
- if (x < 1)
- fun_l7_n38(x)
- else
- fun_l7_n444(x)
- end
-end
-
-def fun_l6_n575(x)
- if (x < 1)
- fun_l7_n401(x)
- else
- fun_l7_n359(x)
- end
-end
-
-def fun_l6_n576(x)
- if (x < 1)
- fun_l7_n518(x)
- else
- fun_l7_n240(x)
- end
-end
-
-def fun_l6_n577(x)
- if (x < 1)
- fun_l7_n247(x)
- else
- fun_l7_n540(x)
- end
-end
-
-def fun_l6_n578(x)
- if (x < 1)
- fun_l7_n223(x)
- else
- fun_l7_n729(x)
- end
-end
-
-def fun_l6_n579(x)
- if (x < 1)
- fun_l7_n524(x)
- else
- fun_l7_n684(x)
- end
-end
-
-def fun_l6_n580(x)
- if (x < 1)
- fun_l7_n113(x)
- else
- fun_l7_n865(x)
- end
-end
-
-def fun_l6_n581(x)
- if (x < 1)
- fun_l7_n920(x)
- else
- fun_l7_n238(x)
- end
-end
-
-def fun_l6_n582(x)
- if (x < 1)
- fun_l7_n78(x)
- else
- fun_l7_n85(x)
- end
-end
-
-def fun_l6_n583(x)
- if (x < 1)
- fun_l7_n713(x)
- else
- fun_l7_n110(x)
- end
-end
-
-def fun_l6_n584(x)
- if (x < 1)
- fun_l7_n170(x)
- else
- fun_l7_n183(x)
- end
-end
-
-def fun_l6_n585(x)
- if (x < 1)
- fun_l7_n100(x)
- else
- fun_l7_n215(x)
- end
-end
-
-def fun_l6_n586(x)
- if (x < 1)
- fun_l7_n126(x)
- else
- fun_l7_n136(x)
- end
-end
-
-def fun_l6_n587(x)
- if (x < 1)
- fun_l7_n592(x)
- else
- fun_l7_n502(x)
- end
-end
-
-def fun_l6_n588(x)
- if (x < 1)
- fun_l7_n155(x)
- else
- fun_l7_n591(x)
- end
-end
-
-def fun_l6_n589(x)
- if (x < 1)
- fun_l7_n840(x)
- else
- fun_l7_n91(x)
- end
-end
-
-def fun_l6_n590(x)
- if (x < 1)
- fun_l7_n146(x)
- else
- fun_l7_n849(x)
- end
-end
-
-def fun_l6_n591(x)
- if (x < 1)
- fun_l7_n161(x)
- else
- fun_l7_n884(x)
- end
-end
-
-def fun_l6_n592(x)
- if (x < 1)
- fun_l7_n994(x)
- else
- fun_l7_n341(x)
- end
-end
-
-def fun_l6_n593(x)
- if (x < 1)
- fun_l7_n974(x)
- else
- fun_l7_n355(x)
- end
-end
-
-def fun_l6_n594(x)
- if (x < 1)
- fun_l7_n726(x)
- else
- fun_l7_n266(x)
- end
-end
-
-def fun_l6_n595(x)
- if (x < 1)
- fun_l7_n142(x)
- else
- fun_l7_n154(x)
- end
-end
-
-def fun_l6_n596(x)
- if (x < 1)
- fun_l7_n287(x)
- else
- fun_l7_n155(x)
- end
-end
-
-def fun_l6_n597(x)
- if (x < 1)
- fun_l7_n594(x)
- else
- fun_l7_n424(x)
- end
-end
-
-def fun_l6_n598(x)
- if (x < 1)
- fun_l7_n227(x)
- else
- fun_l7_n445(x)
- end
-end
-
-def fun_l6_n599(x)
- if (x < 1)
- fun_l7_n660(x)
- else
- fun_l7_n464(x)
- end
-end
-
-def fun_l6_n600(x)
- if (x < 1)
- fun_l7_n930(x)
- else
- fun_l7_n520(x)
- end
-end
-
-def fun_l6_n601(x)
- if (x < 1)
- fun_l7_n714(x)
- else
- fun_l7_n984(x)
- end
-end
-
-def fun_l6_n602(x)
- if (x < 1)
- fun_l7_n226(x)
- else
- fun_l7_n316(x)
- end
-end
-
-def fun_l6_n603(x)
- if (x < 1)
- fun_l7_n104(x)
- else
- fun_l7_n563(x)
- end
-end
-
-def fun_l6_n604(x)
- if (x < 1)
- fun_l7_n149(x)
- else
- fun_l7_n921(x)
- end
-end
-
-def fun_l6_n605(x)
- if (x < 1)
- fun_l7_n195(x)
- else
- fun_l7_n696(x)
- end
-end
-
-def fun_l6_n606(x)
- if (x < 1)
- fun_l7_n337(x)
- else
- fun_l7_n347(x)
- end
-end
-
-def fun_l6_n607(x)
- if (x < 1)
- fun_l7_n657(x)
- else
- fun_l7_n67(x)
- end
-end
-
-def fun_l6_n608(x)
- if (x < 1)
- fun_l7_n796(x)
- else
- fun_l7_n589(x)
- end
-end
-
-def fun_l6_n609(x)
- if (x < 1)
- fun_l7_n230(x)
- else
- fun_l7_n769(x)
- end
-end
-
-def fun_l6_n610(x)
- if (x < 1)
- fun_l7_n427(x)
- else
- fun_l7_n892(x)
- end
-end
-
-def fun_l6_n611(x)
- if (x < 1)
- fun_l7_n741(x)
- else
- fun_l7_n567(x)
- end
-end
-
-def fun_l6_n612(x)
- if (x < 1)
- fun_l7_n471(x)
- else
- fun_l7_n824(x)
- end
-end
-
-def fun_l6_n613(x)
- if (x < 1)
- fun_l7_n522(x)
- else
- fun_l7_n694(x)
- end
-end
-
-def fun_l6_n614(x)
- if (x < 1)
- fun_l7_n95(x)
- else
- fun_l7_n84(x)
- end
-end
-
-def fun_l6_n615(x)
- if (x < 1)
- fun_l7_n632(x)
- else
- fun_l7_n590(x)
- end
-end
-
-def fun_l6_n616(x)
- if (x < 1)
- fun_l7_n372(x)
- else
- fun_l7_n659(x)
- end
-end
-
-def fun_l6_n617(x)
- if (x < 1)
- fun_l7_n547(x)
- else
- fun_l7_n321(x)
- end
-end
-
-def fun_l6_n618(x)
- if (x < 1)
- fun_l7_n53(x)
- else
- fun_l7_n723(x)
- end
-end
-
-def fun_l6_n619(x)
- if (x < 1)
- fun_l7_n653(x)
- else
- fun_l7_n740(x)
- end
-end
-
-def fun_l6_n620(x)
- if (x < 1)
- fun_l7_n16(x)
- else
- fun_l7_n228(x)
- end
-end
-
-def fun_l6_n621(x)
- if (x < 1)
- fun_l7_n655(x)
- else
- fun_l7_n701(x)
- end
-end
-
-def fun_l6_n622(x)
- if (x < 1)
- fun_l7_n212(x)
- else
- fun_l7_n692(x)
- end
-end
-
-def fun_l6_n623(x)
- if (x < 1)
- fun_l7_n959(x)
- else
- fun_l7_n327(x)
- end
-end
-
-def fun_l6_n624(x)
- if (x < 1)
- fun_l7_n607(x)
- else
- fun_l7_n168(x)
- end
-end
-
-def fun_l6_n625(x)
- if (x < 1)
- fun_l7_n229(x)
- else
- fun_l7_n584(x)
- end
-end
-
-def fun_l6_n626(x)
- if (x < 1)
- fun_l7_n776(x)
- else
- fun_l7_n284(x)
- end
-end
-
-def fun_l6_n627(x)
- if (x < 1)
- fun_l7_n770(x)
- else
- fun_l7_n169(x)
- end
-end
-
-def fun_l6_n628(x)
- if (x < 1)
- fun_l7_n550(x)
- else
- fun_l7_n918(x)
- end
-end
-
-def fun_l6_n629(x)
- if (x < 1)
- fun_l7_n450(x)
- else
- fun_l7_n654(x)
- end
-end
-
-def fun_l6_n630(x)
- if (x < 1)
- fun_l7_n968(x)
- else
- fun_l7_n770(x)
- end
-end
-
-def fun_l6_n631(x)
- if (x < 1)
- fun_l7_n118(x)
- else
- fun_l7_n411(x)
- end
-end
-
-def fun_l6_n632(x)
- if (x < 1)
- fun_l7_n352(x)
- else
- fun_l7_n840(x)
- end
-end
-
-def fun_l6_n633(x)
- if (x < 1)
- fun_l7_n588(x)
- else
- fun_l7_n810(x)
- end
-end
-
-def fun_l6_n634(x)
- if (x < 1)
- fun_l7_n955(x)
- else
- fun_l7_n709(x)
- end
-end
-
-def fun_l6_n635(x)
- if (x < 1)
- fun_l7_n137(x)
- else
- fun_l7_n239(x)
- end
-end
-
-def fun_l6_n636(x)
- if (x < 1)
- fun_l7_n955(x)
- else
- fun_l7_n87(x)
- end
-end
-
-def fun_l6_n637(x)
- if (x < 1)
- fun_l7_n479(x)
- else
- fun_l7_n91(x)
- end
-end
-
-def fun_l6_n638(x)
- if (x < 1)
- fun_l7_n366(x)
- else
- fun_l7_n388(x)
- end
-end
-
-def fun_l6_n639(x)
- if (x < 1)
- fun_l7_n90(x)
- else
- fun_l7_n971(x)
- end
-end
-
-def fun_l6_n640(x)
- if (x < 1)
- fun_l7_n330(x)
- else
- fun_l7_n415(x)
- end
-end
-
-def fun_l6_n641(x)
- if (x < 1)
- fun_l7_n233(x)
- else
- fun_l7_n653(x)
- end
-end
-
-def fun_l6_n642(x)
- if (x < 1)
- fun_l7_n106(x)
- else
- fun_l7_n440(x)
- end
-end
-
-def fun_l6_n643(x)
- if (x < 1)
- fun_l7_n156(x)
- else
- fun_l7_n818(x)
- end
-end
-
-def fun_l6_n644(x)
- if (x < 1)
- fun_l7_n68(x)
- else
- fun_l7_n763(x)
- end
-end
-
-def fun_l6_n645(x)
- if (x < 1)
- fun_l7_n858(x)
- else
- fun_l7_n465(x)
- end
-end
-
-def fun_l6_n646(x)
- if (x < 1)
- fun_l7_n886(x)
- else
- fun_l7_n86(x)
- end
-end
-
-def fun_l6_n647(x)
- if (x < 1)
- fun_l7_n689(x)
- else
- fun_l7_n964(x)
- end
-end
-
-def fun_l6_n648(x)
- if (x < 1)
- fun_l7_n748(x)
- else
- fun_l7_n214(x)
- end
-end
-
-def fun_l6_n649(x)
- if (x < 1)
- fun_l7_n830(x)
- else
- fun_l7_n567(x)
- end
-end
-
-def fun_l6_n650(x)
- if (x < 1)
- fun_l7_n907(x)
- else
- fun_l7_n957(x)
- end
-end
-
-def fun_l6_n651(x)
- if (x < 1)
- fun_l7_n242(x)
- else
- fun_l7_n239(x)
- end
-end
-
-def fun_l6_n652(x)
- if (x < 1)
- fun_l7_n347(x)
- else
- fun_l7_n63(x)
- end
-end
-
-def fun_l6_n653(x)
- if (x < 1)
- fun_l7_n480(x)
- else
- fun_l7_n441(x)
- end
-end
-
-def fun_l6_n654(x)
- if (x < 1)
- fun_l7_n304(x)
- else
- fun_l7_n690(x)
- end
-end
-
-def fun_l6_n655(x)
- if (x < 1)
- fun_l7_n511(x)
- else
- fun_l7_n710(x)
- end
-end
-
-def fun_l6_n656(x)
- if (x < 1)
- fun_l7_n202(x)
- else
- fun_l7_n48(x)
- end
-end
-
-def fun_l6_n657(x)
- if (x < 1)
- fun_l7_n232(x)
- else
- fun_l7_n919(x)
- end
-end
-
-def fun_l6_n658(x)
- if (x < 1)
- fun_l7_n627(x)
- else
- fun_l7_n620(x)
- end
-end
-
-def fun_l6_n659(x)
- if (x < 1)
- fun_l7_n716(x)
- else
- fun_l7_n116(x)
- end
-end
-
-def fun_l6_n660(x)
- if (x < 1)
- fun_l7_n105(x)
- else
- fun_l7_n536(x)
- end
-end
-
-def fun_l6_n661(x)
- if (x < 1)
- fun_l7_n376(x)
- else
- fun_l7_n965(x)
- end
-end
-
-def fun_l6_n662(x)
- if (x < 1)
- fun_l7_n417(x)
- else
- fun_l7_n726(x)
- end
-end
-
-def fun_l6_n663(x)
- if (x < 1)
- fun_l7_n567(x)
- else
- fun_l7_n948(x)
- end
-end
-
-def fun_l6_n664(x)
- if (x < 1)
- fun_l7_n640(x)
- else
- fun_l7_n910(x)
- end
-end
-
-def fun_l6_n665(x)
- if (x < 1)
- fun_l7_n874(x)
- else
- fun_l7_n314(x)
- end
-end
-
-def fun_l6_n666(x)
- if (x < 1)
- fun_l7_n946(x)
- else
- fun_l7_n101(x)
- end
-end
-
-def fun_l6_n667(x)
- if (x < 1)
- fun_l7_n960(x)
- else
- fun_l7_n199(x)
- end
-end
-
-def fun_l6_n668(x)
- if (x < 1)
- fun_l7_n389(x)
- else
- fun_l7_n976(x)
- end
-end
-
-def fun_l6_n669(x)
- if (x < 1)
- fun_l7_n31(x)
- else
- fun_l7_n903(x)
- end
-end
-
-def fun_l6_n670(x)
- if (x < 1)
- fun_l7_n288(x)
- else
- fun_l7_n115(x)
- end
-end
-
-def fun_l6_n671(x)
- if (x < 1)
- fun_l7_n418(x)
- else
- fun_l7_n249(x)
- end
-end
-
-def fun_l6_n672(x)
- if (x < 1)
- fun_l7_n733(x)
- else
- fun_l7_n815(x)
- end
-end
-
-def fun_l6_n673(x)
- if (x < 1)
- fun_l7_n227(x)
- else
- fun_l7_n23(x)
- end
-end
-
-def fun_l6_n674(x)
- if (x < 1)
- fun_l7_n936(x)
- else
- fun_l7_n386(x)
- end
-end
-
-def fun_l6_n675(x)
- if (x < 1)
- fun_l7_n638(x)
- else
- fun_l7_n39(x)
- end
-end
-
-def fun_l6_n676(x)
- if (x < 1)
- fun_l7_n304(x)
- else
- fun_l7_n35(x)
- end
-end
-
-def fun_l6_n677(x)
- if (x < 1)
- fun_l7_n676(x)
- else
- fun_l7_n443(x)
- end
-end
-
-def fun_l6_n678(x)
- if (x < 1)
- fun_l7_n648(x)
- else
- fun_l7_n453(x)
- end
-end
-
-def fun_l6_n679(x)
- if (x < 1)
- fun_l7_n15(x)
- else
- fun_l7_n220(x)
- end
-end
-
-def fun_l6_n680(x)
- if (x < 1)
- fun_l7_n201(x)
- else
- fun_l7_n842(x)
- end
-end
-
-def fun_l6_n681(x)
- if (x < 1)
- fun_l7_n67(x)
- else
- fun_l7_n73(x)
- end
-end
-
-def fun_l6_n682(x)
- if (x < 1)
- fun_l7_n280(x)
- else
- fun_l7_n370(x)
- end
-end
-
-def fun_l6_n683(x)
- if (x < 1)
- fun_l7_n822(x)
- else
- fun_l7_n27(x)
- end
-end
-
-def fun_l6_n684(x)
- if (x < 1)
- fun_l7_n720(x)
- else
- fun_l7_n651(x)
- end
-end
-
-def fun_l6_n685(x)
- if (x < 1)
- fun_l7_n414(x)
- else
- fun_l7_n257(x)
- end
-end
-
-def fun_l6_n686(x)
- if (x < 1)
- fun_l7_n477(x)
- else
- fun_l7_n883(x)
- end
-end
-
-def fun_l6_n687(x)
- if (x < 1)
- fun_l7_n467(x)
- else
- fun_l7_n739(x)
- end
-end
-
-def fun_l6_n688(x)
- if (x < 1)
- fun_l7_n421(x)
- else
- fun_l7_n271(x)
- end
-end
-
-def fun_l6_n689(x)
- if (x < 1)
- fun_l7_n444(x)
- else
- fun_l7_n601(x)
- end
-end
-
-def fun_l6_n690(x)
- if (x < 1)
- fun_l7_n104(x)
- else
- fun_l7_n597(x)
- end
-end
-
-def fun_l6_n691(x)
- if (x < 1)
- fun_l7_n273(x)
- else
- fun_l7_n79(x)
- end
-end
-
-def fun_l6_n692(x)
- if (x < 1)
- fun_l7_n310(x)
- else
- fun_l7_n261(x)
- end
-end
-
-def fun_l6_n693(x)
- if (x < 1)
- fun_l7_n190(x)
- else
- fun_l7_n330(x)
- end
-end
-
-def fun_l6_n694(x)
- if (x < 1)
- fun_l7_n103(x)
- else
- fun_l7_n258(x)
- end
-end
-
-def fun_l6_n695(x)
- if (x < 1)
- fun_l7_n524(x)
- else
- fun_l7_n988(x)
- end
-end
-
-def fun_l6_n696(x)
- if (x < 1)
- fun_l7_n885(x)
- else
- fun_l7_n731(x)
- end
-end
-
-def fun_l6_n697(x)
- if (x < 1)
- fun_l7_n212(x)
- else
- fun_l7_n98(x)
- end
-end
-
-def fun_l6_n698(x)
- if (x < 1)
- fun_l7_n735(x)
- else
- fun_l7_n682(x)
- end
-end
-
-def fun_l6_n699(x)
- if (x < 1)
- fun_l7_n610(x)
- else
- fun_l7_n512(x)
- end
-end
-
-def fun_l6_n700(x)
- if (x < 1)
- fun_l7_n828(x)
- else
- fun_l7_n651(x)
- end
-end
-
-def fun_l6_n701(x)
- if (x < 1)
- fun_l7_n269(x)
- else
- fun_l7_n192(x)
- end
-end
-
-def fun_l6_n702(x)
- if (x < 1)
- fun_l7_n775(x)
- else
- fun_l7_n334(x)
- end
-end
-
-def fun_l6_n703(x)
- if (x < 1)
- fun_l7_n880(x)
- else
- fun_l7_n396(x)
- end
-end
-
-def fun_l6_n704(x)
- if (x < 1)
- fun_l7_n907(x)
- else
- fun_l7_n107(x)
- end
-end
-
-def fun_l6_n705(x)
- if (x < 1)
- fun_l7_n425(x)
- else
- fun_l7_n555(x)
- end
-end
-
-def fun_l6_n706(x)
- if (x < 1)
- fun_l7_n458(x)
- else
- fun_l7_n610(x)
- end
-end
-
-def fun_l6_n707(x)
- if (x < 1)
- fun_l7_n527(x)
- else
- fun_l7_n69(x)
- end
-end
-
-def fun_l6_n708(x)
- if (x < 1)
- fun_l7_n518(x)
- else
- fun_l7_n87(x)
- end
-end
-
-def fun_l6_n709(x)
- if (x < 1)
- fun_l7_n441(x)
- else
- fun_l7_n533(x)
- end
-end
-
-def fun_l6_n710(x)
- if (x < 1)
- fun_l7_n872(x)
- else
- fun_l7_n896(x)
- end
-end
-
-def fun_l6_n711(x)
- if (x < 1)
- fun_l7_n388(x)
- else
- fun_l7_n476(x)
- end
-end
-
-def fun_l6_n712(x)
- if (x < 1)
- fun_l7_n913(x)
- else
- fun_l7_n304(x)
- end
-end
-
-def fun_l6_n713(x)
- if (x < 1)
- fun_l7_n203(x)
- else
- fun_l7_n457(x)
- end
-end
-
-def fun_l6_n714(x)
- if (x < 1)
- fun_l7_n593(x)
- else
- fun_l7_n921(x)
- end
-end
-
-def fun_l6_n715(x)
- if (x < 1)
- fun_l7_n452(x)
- else
- fun_l7_n68(x)
- end
-end
-
-def fun_l6_n716(x)
- if (x < 1)
- fun_l7_n203(x)
- else
- fun_l7_n362(x)
- end
-end
-
-def fun_l6_n717(x)
- if (x < 1)
- fun_l7_n455(x)
- else
- fun_l7_n199(x)
- end
-end
-
-def fun_l6_n718(x)
- if (x < 1)
- fun_l7_n500(x)
- else
- fun_l7_n272(x)
- end
-end
-
-def fun_l6_n719(x)
- if (x < 1)
- fun_l7_n970(x)
- else
- fun_l7_n572(x)
- end
-end
-
-def fun_l6_n720(x)
- if (x < 1)
- fun_l7_n74(x)
- else
- fun_l7_n246(x)
- end
-end
-
-def fun_l6_n721(x)
- if (x < 1)
- fun_l7_n943(x)
- else
- fun_l7_n640(x)
- end
-end
-
-def fun_l6_n722(x)
- if (x < 1)
- fun_l7_n106(x)
- else
- fun_l7_n387(x)
- end
-end
-
-def fun_l6_n723(x)
- if (x < 1)
- fun_l7_n474(x)
- else
- fun_l7_n530(x)
- end
-end
-
-def fun_l6_n724(x)
- if (x < 1)
- fun_l7_n246(x)
- else
- fun_l7_n387(x)
- end
-end
-
-def fun_l6_n725(x)
- if (x < 1)
- fun_l7_n572(x)
- else
- fun_l7_n874(x)
- end
-end
-
-def fun_l6_n726(x)
- if (x < 1)
- fun_l7_n858(x)
- else
- fun_l7_n71(x)
- end
-end
-
-def fun_l6_n727(x)
- if (x < 1)
- fun_l7_n615(x)
- else
- fun_l7_n14(x)
- end
-end
-
-def fun_l6_n728(x)
- if (x < 1)
- fun_l7_n840(x)
- else
- fun_l7_n779(x)
- end
-end
-
-def fun_l6_n729(x)
- if (x < 1)
- fun_l7_n811(x)
- else
- fun_l7_n981(x)
- end
-end
-
-def fun_l6_n730(x)
- if (x < 1)
- fun_l7_n196(x)
- else
- fun_l7_n731(x)
- end
-end
-
-def fun_l6_n731(x)
- if (x < 1)
- fun_l7_n202(x)
- else
- fun_l7_n781(x)
- end
-end
-
-def fun_l6_n732(x)
- if (x < 1)
- fun_l7_n867(x)
- else
- fun_l7_n770(x)
- end
-end
-
-def fun_l6_n733(x)
- if (x < 1)
- fun_l7_n90(x)
- else
- fun_l7_n937(x)
- end
-end
-
-def fun_l6_n734(x)
- if (x < 1)
- fun_l7_n890(x)
- else
- fun_l7_n937(x)
- end
-end
-
-def fun_l6_n735(x)
- if (x < 1)
- fun_l7_n967(x)
- else
- fun_l7_n235(x)
- end
-end
-
-def fun_l6_n736(x)
- if (x < 1)
- fun_l7_n612(x)
- else
- fun_l7_n140(x)
- end
-end
-
-def fun_l6_n737(x)
- if (x < 1)
- fun_l7_n156(x)
- else
- fun_l7_n600(x)
- end
-end
-
-def fun_l6_n738(x)
- if (x < 1)
- fun_l7_n462(x)
- else
- fun_l7_n907(x)
- end
-end
-
-def fun_l6_n739(x)
- if (x < 1)
- fun_l7_n226(x)
- else
- fun_l7_n83(x)
- end
-end
-
-def fun_l6_n740(x)
- if (x < 1)
- fun_l7_n419(x)
- else
- fun_l7_n95(x)
- end
-end
-
-def fun_l6_n741(x)
- if (x < 1)
- fun_l7_n358(x)
- else
- fun_l7_n701(x)
- end
-end
-
-def fun_l6_n742(x)
- if (x < 1)
- fun_l7_n451(x)
- else
- fun_l7_n700(x)
- end
-end
-
-def fun_l6_n743(x)
- if (x < 1)
- fun_l7_n561(x)
- else
- fun_l7_n383(x)
- end
-end
-
-def fun_l6_n744(x)
- if (x < 1)
- fun_l7_n28(x)
- else
- fun_l7_n56(x)
- end
-end
-
-def fun_l6_n745(x)
- if (x < 1)
- fun_l7_n127(x)
- else
- fun_l7_n113(x)
- end
-end
-
-def fun_l6_n746(x)
- if (x < 1)
- fun_l7_n767(x)
- else
- fun_l7_n907(x)
- end
-end
-
-def fun_l6_n747(x)
- if (x < 1)
- fun_l7_n174(x)
- else
- fun_l7_n955(x)
- end
-end
-
-def fun_l6_n748(x)
- if (x < 1)
- fun_l7_n51(x)
- else
- fun_l7_n951(x)
- end
-end
-
-def fun_l6_n749(x)
- if (x < 1)
- fun_l7_n172(x)
- else
- fun_l7_n847(x)
- end
-end
-
-def fun_l6_n750(x)
- if (x < 1)
- fun_l7_n240(x)
- else
- fun_l7_n869(x)
- end
-end
-
-def fun_l6_n751(x)
- if (x < 1)
- fun_l7_n435(x)
- else
- fun_l7_n747(x)
- end
-end
-
-def fun_l6_n752(x)
- if (x < 1)
- fun_l7_n673(x)
- else
- fun_l7_n454(x)
- end
-end
-
-def fun_l6_n753(x)
- if (x < 1)
- fun_l7_n98(x)
- else
- fun_l7_n66(x)
- end
-end
-
-def fun_l6_n754(x)
- if (x < 1)
- fun_l7_n63(x)
- else
- fun_l7_n943(x)
- end
-end
-
-def fun_l6_n755(x)
- if (x < 1)
- fun_l7_n863(x)
- else
- fun_l7_n155(x)
- end
-end
-
-def fun_l6_n756(x)
- if (x < 1)
- fun_l7_n197(x)
- else
- fun_l7_n807(x)
- end
-end
-
-def fun_l6_n757(x)
- if (x < 1)
- fun_l7_n992(x)
- else
- fun_l7_n615(x)
- end
-end
-
-def fun_l6_n758(x)
- if (x < 1)
- fun_l7_n172(x)
- else
- fun_l7_n507(x)
- end
-end
-
-def fun_l6_n759(x)
- if (x < 1)
- fun_l7_n756(x)
- else
- fun_l7_n599(x)
- end
-end
-
-def fun_l6_n760(x)
- if (x < 1)
- fun_l7_n876(x)
- else
- fun_l7_n185(x)
- end
-end
-
-def fun_l6_n761(x)
- if (x < 1)
- fun_l7_n522(x)
- else
- fun_l7_n301(x)
- end
-end
-
-def fun_l6_n762(x)
- if (x < 1)
- fun_l7_n994(x)
- else
- fun_l7_n408(x)
- end
-end
-
-def fun_l6_n763(x)
- if (x < 1)
- fun_l7_n201(x)
- else
- fun_l7_n304(x)
- end
-end
-
-def fun_l6_n764(x)
- if (x < 1)
- fun_l7_n200(x)
- else
- fun_l7_n123(x)
- end
-end
-
-def fun_l6_n765(x)
- if (x < 1)
- fun_l7_n156(x)
- else
- fun_l7_n117(x)
- end
-end
-
-def fun_l6_n766(x)
- if (x < 1)
- fun_l7_n918(x)
- else
- fun_l7_n416(x)
- end
-end
-
-def fun_l6_n767(x)
- if (x < 1)
- fun_l7_n538(x)
- else
- fun_l7_n335(x)
- end
-end
-
-def fun_l6_n768(x)
- if (x < 1)
- fun_l7_n699(x)
- else
- fun_l7_n980(x)
- end
-end
-
-def fun_l6_n769(x)
- if (x < 1)
- fun_l7_n903(x)
- else
- fun_l7_n195(x)
- end
-end
-
-def fun_l6_n770(x)
- if (x < 1)
- fun_l7_n419(x)
- else
- fun_l7_n523(x)
- end
-end
-
-def fun_l6_n771(x)
- if (x < 1)
- fun_l7_n221(x)
- else
- fun_l7_n39(x)
- end
-end
-
-def fun_l6_n772(x)
- if (x < 1)
- fun_l7_n369(x)
- else
- fun_l7_n227(x)
- end
-end
-
-def fun_l6_n773(x)
- if (x < 1)
- fun_l7_n861(x)
- else
- fun_l7_n252(x)
- end
-end
-
-def fun_l6_n774(x)
- if (x < 1)
- fun_l7_n682(x)
- else
- fun_l7_n42(x)
- end
-end
-
-def fun_l6_n775(x)
- if (x < 1)
- fun_l7_n777(x)
- else
- fun_l7_n594(x)
- end
-end
-
-def fun_l6_n776(x)
- if (x < 1)
- fun_l7_n794(x)
- else
- fun_l7_n71(x)
- end
-end
-
-def fun_l6_n777(x)
- if (x < 1)
- fun_l7_n669(x)
- else
- fun_l7_n66(x)
- end
-end
-
-def fun_l6_n778(x)
- if (x < 1)
- fun_l7_n824(x)
- else
- fun_l7_n95(x)
- end
-end
-
-def fun_l6_n779(x)
- if (x < 1)
- fun_l7_n833(x)
- else
- fun_l7_n504(x)
- end
-end
-
-def fun_l6_n780(x)
- if (x < 1)
- fun_l7_n50(x)
- else
- fun_l7_n647(x)
- end
-end
-
-def fun_l6_n781(x)
- if (x < 1)
- fun_l7_n139(x)
- else
- fun_l7_n214(x)
- end
-end
-
-def fun_l6_n782(x)
- if (x < 1)
- fun_l7_n450(x)
- else
- fun_l7_n660(x)
- end
-end
-
-def fun_l6_n783(x)
- if (x < 1)
- fun_l7_n164(x)
- else
- fun_l7_n576(x)
- end
-end
-
-def fun_l6_n784(x)
- if (x < 1)
- fun_l7_n722(x)
- else
- fun_l7_n714(x)
- end
-end
-
-def fun_l6_n785(x)
- if (x < 1)
- fun_l7_n90(x)
- else
- fun_l7_n556(x)
- end
-end
-
-def fun_l6_n786(x)
- if (x < 1)
- fun_l7_n413(x)
- else
- fun_l7_n722(x)
- end
-end
-
-def fun_l6_n787(x)
- if (x < 1)
- fun_l7_n141(x)
- else
- fun_l7_n90(x)
- end
-end
-
-def fun_l6_n788(x)
- if (x < 1)
- fun_l7_n750(x)
- else
- fun_l7_n660(x)
- end
-end
-
-def fun_l6_n789(x)
- if (x < 1)
- fun_l7_n581(x)
- else
- fun_l7_n368(x)
- end
-end
-
-def fun_l6_n790(x)
- if (x < 1)
- fun_l7_n922(x)
- else
- fun_l7_n551(x)
- end
-end
-
-def fun_l6_n791(x)
- if (x < 1)
- fun_l7_n842(x)
- else
- fun_l7_n336(x)
- end
-end
-
-def fun_l6_n792(x)
- if (x < 1)
- fun_l7_n264(x)
- else
- fun_l7_n7(x)
- end
-end
-
-def fun_l6_n793(x)
- if (x < 1)
- fun_l7_n902(x)
- else
- fun_l7_n184(x)
- end
-end
-
-def fun_l6_n794(x)
- if (x < 1)
- fun_l7_n788(x)
- else
- fun_l7_n854(x)
- end
-end
-
-def fun_l6_n795(x)
- if (x < 1)
- fun_l7_n375(x)
- else
- fun_l7_n601(x)
- end
-end
-
-def fun_l6_n796(x)
- if (x < 1)
- fun_l7_n674(x)
- else
- fun_l7_n136(x)
- end
-end
-
-def fun_l6_n797(x)
- if (x < 1)
- fun_l7_n836(x)
- else
- fun_l7_n90(x)
- end
-end
-
-def fun_l6_n798(x)
- if (x < 1)
- fun_l7_n461(x)
- else
- fun_l7_n686(x)
- end
-end
-
-def fun_l6_n799(x)
- if (x < 1)
- fun_l7_n308(x)
- else
- fun_l7_n179(x)
- end
-end
-
-def fun_l6_n800(x)
- if (x < 1)
- fun_l7_n154(x)
- else
- fun_l7_n618(x)
- end
-end
-
-def fun_l6_n801(x)
- if (x < 1)
- fun_l7_n242(x)
- else
- fun_l7_n16(x)
- end
-end
-
-def fun_l6_n802(x)
- if (x < 1)
- fun_l7_n880(x)
- else
- fun_l7_n143(x)
- end
-end
-
-def fun_l6_n803(x)
- if (x < 1)
- fun_l7_n577(x)
- else
- fun_l7_n414(x)
- end
-end
-
-def fun_l6_n804(x)
- if (x < 1)
- fun_l7_n409(x)
- else
- fun_l7_n116(x)
- end
-end
-
-def fun_l6_n805(x)
- if (x < 1)
- fun_l7_n259(x)
- else
- fun_l7_n820(x)
- end
-end
-
-def fun_l6_n806(x)
- if (x < 1)
- fun_l7_n384(x)
- else
- fun_l7_n939(x)
- end
-end
-
-def fun_l6_n807(x)
- if (x < 1)
- fun_l7_n138(x)
- else
- fun_l7_n652(x)
- end
-end
-
-def fun_l6_n808(x)
- if (x < 1)
- fun_l7_n455(x)
- else
- fun_l7_n693(x)
- end
-end
-
-def fun_l6_n809(x)
- if (x < 1)
- fun_l7_n892(x)
- else
- fun_l7_n638(x)
- end
-end
-
-def fun_l6_n810(x)
- if (x < 1)
- fun_l7_n498(x)
- else
- fun_l7_n716(x)
- end
-end
-
-def fun_l6_n811(x)
- if (x < 1)
- fun_l7_n713(x)
- else
- fun_l7_n9(x)
- end
-end
-
-def fun_l6_n812(x)
- if (x < 1)
- fun_l7_n854(x)
- else
- fun_l7_n507(x)
- end
-end
-
-def fun_l6_n813(x)
- if (x < 1)
- fun_l7_n385(x)
- else
- fun_l7_n323(x)
- end
-end
-
-def fun_l6_n814(x)
- if (x < 1)
- fun_l7_n437(x)
- else
- fun_l7_n954(x)
- end
-end
-
-def fun_l6_n815(x)
- if (x < 1)
- fun_l7_n471(x)
- else
- fun_l7_n245(x)
- end
-end
-
-def fun_l6_n816(x)
- if (x < 1)
- fun_l7_n485(x)
- else
- fun_l7_n935(x)
- end
-end
-
-def fun_l6_n817(x)
- if (x < 1)
- fun_l7_n319(x)
- else
- fun_l7_n566(x)
- end
-end
-
-def fun_l6_n818(x)
- if (x < 1)
- fun_l7_n339(x)
- else
- fun_l7_n152(x)
- end
-end
-
-def fun_l6_n819(x)
- if (x < 1)
- fun_l7_n21(x)
- else
- fun_l7_n452(x)
- end
-end
-
-def fun_l6_n820(x)
- if (x < 1)
- fun_l7_n16(x)
- else
- fun_l7_n502(x)
- end
-end
-
-def fun_l6_n821(x)
- if (x < 1)
- fun_l7_n813(x)
- else
- fun_l7_n520(x)
- end
-end
-
-def fun_l6_n822(x)
- if (x < 1)
- fun_l7_n519(x)
- else
- fun_l7_n651(x)
- end
-end
-
-def fun_l6_n823(x)
- if (x < 1)
- fun_l7_n890(x)
- else
- fun_l7_n227(x)
- end
-end
-
-def fun_l6_n824(x)
- if (x < 1)
- fun_l7_n517(x)
- else
- fun_l7_n799(x)
- end
-end
-
-def fun_l6_n825(x)
- if (x < 1)
- fun_l7_n404(x)
- else
- fun_l7_n442(x)
- end
-end
-
-def fun_l6_n826(x)
- if (x < 1)
- fun_l7_n308(x)
- else
- fun_l7_n328(x)
- end
-end
-
-def fun_l6_n827(x)
- if (x < 1)
- fun_l7_n953(x)
- else
- fun_l7_n950(x)
- end
-end
-
-def fun_l6_n828(x)
- if (x < 1)
- fun_l7_n206(x)
- else
- fun_l7_n701(x)
- end
-end
-
-def fun_l6_n829(x)
- if (x < 1)
- fun_l7_n499(x)
- else
- fun_l7_n972(x)
- end
-end
-
-def fun_l6_n830(x)
- if (x < 1)
- fun_l7_n578(x)
- else
- fun_l7_n697(x)
- end
-end
-
-def fun_l6_n831(x)
- if (x < 1)
- fun_l7_n116(x)
- else
- fun_l7_n747(x)
- end
-end
-
-def fun_l6_n832(x)
- if (x < 1)
- fun_l7_n423(x)
- else
- fun_l7_n653(x)
- end
-end
-
-def fun_l6_n833(x)
- if (x < 1)
- fun_l7_n524(x)
- else
- fun_l7_n423(x)
- end
-end
-
-def fun_l6_n834(x)
- if (x < 1)
- fun_l7_n940(x)
- else
- fun_l7_n48(x)
- end
-end
-
-def fun_l6_n835(x)
- if (x < 1)
- fun_l7_n336(x)
- else
- fun_l7_n584(x)
- end
-end
-
-def fun_l6_n836(x)
- if (x < 1)
- fun_l7_n66(x)
- else
- fun_l7_n980(x)
- end
-end
-
-def fun_l6_n837(x)
- if (x < 1)
- fun_l7_n176(x)
- else
- fun_l7_n845(x)
- end
-end
-
-def fun_l6_n838(x)
- if (x < 1)
- fun_l7_n736(x)
- else
- fun_l7_n385(x)
- end
-end
-
-def fun_l6_n839(x)
- if (x < 1)
- fun_l7_n948(x)
- else
- fun_l7_n258(x)
- end
-end
-
-def fun_l6_n840(x)
- if (x < 1)
- fun_l7_n926(x)
- else
- fun_l7_n926(x)
- end
-end
-
-def fun_l6_n841(x)
- if (x < 1)
- fun_l7_n334(x)
- else
- fun_l7_n134(x)
- end
-end
-
-def fun_l6_n842(x)
- if (x < 1)
- fun_l7_n757(x)
- else
- fun_l7_n995(x)
- end
-end
-
-def fun_l6_n843(x)
- if (x < 1)
- fun_l7_n75(x)
- else
- fun_l7_n6(x)
- end
-end
-
-def fun_l6_n844(x)
- if (x < 1)
- fun_l7_n632(x)
- else
- fun_l7_n683(x)
- end
-end
-
-def fun_l6_n845(x)
- if (x < 1)
- fun_l7_n788(x)
- else
- fun_l7_n153(x)
- end
-end
-
-def fun_l6_n846(x)
- if (x < 1)
- fun_l7_n668(x)
- else
- fun_l7_n78(x)
- end
-end
-
-def fun_l6_n847(x)
- if (x < 1)
- fun_l7_n509(x)
- else
- fun_l7_n210(x)
- end
-end
-
-def fun_l6_n848(x)
- if (x < 1)
- fun_l7_n862(x)
- else
- fun_l7_n90(x)
- end
-end
-
-def fun_l6_n849(x)
- if (x < 1)
- fun_l7_n837(x)
- else
- fun_l7_n37(x)
- end
-end
-
-def fun_l6_n850(x)
- if (x < 1)
- fun_l7_n792(x)
- else
- fun_l7_n171(x)
- end
-end
-
-def fun_l6_n851(x)
- if (x < 1)
- fun_l7_n869(x)
- else
- fun_l7_n217(x)
- end
-end
-
-def fun_l6_n852(x)
- if (x < 1)
- fun_l7_n585(x)
- else
- fun_l7_n980(x)
- end
-end
-
-def fun_l6_n853(x)
- if (x < 1)
- fun_l7_n752(x)
- else
- fun_l7_n214(x)
- end
-end
-
-def fun_l6_n854(x)
- if (x < 1)
- fun_l7_n151(x)
- else
- fun_l7_n668(x)
- end
-end
-
-def fun_l6_n855(x)
- if (x < 1)
- fun_l7_n145(x)
- else
- fun_l7_n99(x)
- end
-end
-
-def fun_l6_n856(x)
- if (x < 1)
- fun_l7_n114(x)
- else
- fun_l7_n852(x)
- end
-end
-
-def fun_l6_n857(x)
- if (x < 1)
- fun_l7_n571(x)
- else
- fun_l7_n6(x)
- end
-end
-
-def fun_l6_n858(x)
- if (x < 1)
- fun_l7_n724(x)
- else
- fun_l7_n132(x)
- end
-end
-
-def fun_l6_n859(x)
- if (x < 1)
- fun_l7_n146(x)
- else
- fun_l7_n627(x)
- end
-end
-
-def fun_l6_n860(x)
- if (x < 1)
- fun_l7_n515(x)
- else
- fun_l7_n598(x)
- end
-end
-
-def fun_l6_n861(x)
- if (x < 1)
- fun_l7_n49(x)
- else
- fun_l7_n781(x)
- end
-end
-
-def fun_l6_n862(x)
- if (x < 1)
- fun_l7_n378(x)
- else
- fun_l7_n295(x)
- end
-end
-
-def fun_l6_n863(x)
- if (x < 1)
- fun_l7_n122(x)
- else
- fun_l7_n738(x)
- end
-end
-
-def fun_l6_n864(x)
- if (x < 1)
- fun_l7_n421(x)
- else
- fun_l7_n719(x)
- end
-end
-
-def fun_l6_n865(x)
- if (x < 1)
- fun_l7_n965(x)
- else
- fun_l7_n963(x)
- end
-end
-
-def fun_l6_n866(x)
- if (x < 1)
- fun_l7_n551(x)
- else
- fun_l7_n177(x)
- end
-end
-
-def fun_l6_n867(x)
- if (x < 1)
- fun_l7_n136(x)
- else
- fun_l7_n289(x)
- end
-end
-
-def fun_l6_n868(x)
- if (x < 1)
- fun_l7_n26(x)
- else
- fun_l7_n376(x)
- end
-end
-
-def fun_l6_n869(x)
- if (x < 1)
- fun_l7_n888(x)
- else
- fun_l7_n948(x)
- end
-end
-
-def fun_l6_n870(x)
- if (x < 1)
- fun_l7_n636(x)
- else
- fun_l7_n89(x)
- end
-end
-
-def fun_l6_n871(x)
- if (x < 1)
- fun_l7_n953(x)
- else
- fun_l7_n634(x)
- end
-end
-
-def fun_l6_n872(x)
- if (x < 1)
- fun_l7_n74(x)
- else
- fun_l7_n219(x)
- end
-end
-
-def fun_l6_n873(x)
- if (x < 1)
- fun_l7_n317(x)
- else
- fun_l7_n863(x)
- end
-end
-
-def fun_l6_n874(x)
- if (x < 1)
- fun_l7_n495(x)
- else
- fun_l7_n478(x)
- end
-end
-
-def fun_l6_n875(x)
- if (x < 1)
- fun_l7_n908(x)
- else
- fun_l7_n634(x)
- end
-end
-
-def fun_l6_n876(x)
- if (x < 1)
- fun_l7_n780(x)
- else
- fun_l7_n886(x)
- end
-end
-
-def fun_l6_n877(x)
- if (x < 1)
- fun_l7_n768(x)
- else
- fun_l7_n820(x)
- end
-end
-
-def fun_l6_n878(x)
- if (x < 1)
- fun_l7_n501(x)
- else
- fun_l7_n355(x)
- end
-end
-
-def fun_l6_n879(x)
- if (x < 1)
- fun_l7_n412(x)
- else
- fun_l7_n701(x)
- end
-end
-
-def fun_l6_n880(x)
- if (x < 1)
- fun_l7_n541(x)
- else
- fun_l7_n148(x)
- end
-end
-
-def fun_l6_n881(x)
- if (x < 1)
- fun_l7_n460(x)
- else
- fun_l7_n579(x)
- end
-end
-
-def fun_l6_n882(x)
- if (x < 1)
- fun_l7_n576(x)
- else
- fun_l7_n118(x)
- end
-end
-
-def fun_l6_n883(x)
- if (x < 1)
- fun_l7_n218(x)
- else
- fun_l7_n197(x)
- end
-end
-
-def fun_l6_n884(x)
- if (x < 1)
- fun_l7_n279(x)
- else
- fun_l7_n565(x)
- end
-end
-
-def fun_l6_n885(x)
- if (x < 1)
- fun_l7_n934(x)
- else
- fun_l7_n46(x)
- end
-end
-
-def fun_l6_n886(x)
- if (x < 1)
- fun_l7_n894(x)
- else
- fun_l7_n864(x)
- end
-end
-
-def fun_l6_n887(x)
- if (x < 1)
- fun_l7_n45(x)
- else
- fun_l7_n151(x)
- end
-end
-
-def fun_l6_n888(x)
- if (x < 1)
- fun_l7_n190(x)
- else
- fun_l7_n46(x)
- end
-end
-
-def fun_l6_n889(x)
- if (x < 1)
- fun_l7_n56(x)
- else
- fun_l7_n451(x)
- end
-end
-
-def fun_l6_n890(x)
- if (x < 1)
- fun_l7_n7(x)
- else
- fun_l7_n906(x)
- end
-end
-
-def fun_l6_n891(x)
- if (x < 1)
- fun_l7_n507(x)
- else
- fun_l7_n121(x)
- end
-end
-
-def fun_l6_n892(x)
- if (x < 1)
- fun_l7_n757(x)
- else
- fun_l7_n485(x)
- end
-end
-
-def fun_l6_n893(x)
- if (x < 1)
- fun_l7_n242(x)
- else
- fun_l7_n366(x)
- end
-end
-
-def fun_l6_n894(x)
- if (x < 1)
- fun_l7_n563(x)
- else
- fun_l7_n749(x)
- end
-end
-
-def fun_l6_n895(x)
- if (x < 1)
- fun_l7_n976(x)
- else
- fun_l7_n907(x)
- end
-end
-
-def fun_l6_n896(x)
- if (x < 1)
- fun_l7_n525(x)
- else
- fun_l7_n843(x)
- end
-end
-
-def fun_l6_n897(x)
- if (x < 1)
- fun_l7_n255(x)
- else
- fun_l7_n133(x)
- end
-end
-
-def fun_l6_n898(x)
- if (x < 1)
- fun_l7_n796(x)
- else
- fun_l7_n275(x)
- end
-end
-
-def fun_l6_n899(x)
- if (x < 1)
- fun_l7_n985(x)
- else
- fun_l7_n485(x)
- end
-end
-
-def fun_l6_n900(x)
- if (x < 1)
- fun_l7_n32(x)
- else
- fun_l7_n324(x)
- end
-end
-
-def fun_l6_n901(x)
- if (x < 1)
- fun_l7_n334(x)
- else
- fun_l7_n618(x)
- end
-end
-
-def fun_l6_n902(x)
- if (x < 1)
- fun_l7_n762(x)
- else
- fun_l7_n778(x)
- end
-end
-
-def fun_l6_n903(x)
- if (x < 1)
- fun_l7_n343(x)
- else
- fun_l7_n349(x)
- end
-end
-
-def fun_l6_n904(x)
- if (x < 1)
- fun_l7_n310(x)
- else
- fun_l7_n215(x)
- end
-end
-
-def fun_l6_n905(x)
- if (x < 1)
- fun_l7_n162(x)
- else
- fun_l7_n405(x)
- end
-end
-
-def fun_l6_n906(x)
- if (x < 1)
- fun_l7_n667(x)
- else
- fun_l7_n633(x)
- end
-end
-
-def fun_l6_n907(x)
- if (x < 1)
- fun_l7_n652(x)
- else
- fun_l7_n771(x)
- end
-end
-
-def fun_l6_n908(x)
- if (x < 1)
- fun_l7_n198(x)
- else
- fun_l7_n32(x)
- end
-end
-
-def fun_l6_n909(x)
- if (x < 1)
- fun_l7_n577(x)
- else
- fun_l7_n116(x)
- end
-end
-
-def fun_l6_n910(x)
- if (x < 1)
- fun_l7_n63(x)
- else
- fun_l7_n57(x)
- end
-end
-
-def fun_l6_n911(x)
- if (x < 1)
- fun_l7_n908(x)
- else
- fun_l7_n556(x)
- end
-end
-
-def fun_l6_n912(x)
- if (x < 1)
- fun_l7_n420(x)
- else
- fun_l7_n163(x)
- end
-end
-
-def fun_l6_n913(x)
- if (x < 1)
- fun_l7_n795(x)
- else
- fun_l7_n225(x)
- end
-end
-
-def fun_l6_n914(x)
- if (x < 1)
- fun_l7_n855(x)
- else
- fun_l7_n742(x)
- end
-end
-
-def fun_l6_n915(x)
- if (x < 1)
- fun_l7_n386(x)
- else
- fun_l7_n314(x)
- end
-end
-
-def fun_l6_n916(x)
- if (x < 1)
- fun_l7_n587(x)
- else
- fun_l7_n371(x)
- end
-end
-
-def fun_l6_n917(x)
- if (x < 1)
- fun_l7_n570(x)
- else
- fun_l7_n735(x)
- end
-end
-
-def fun_l6_n918(x)
- if (x < 1)
- fun_l7_n985(x)
- else
- fun_l7_n492(x)
- end
-end
-
-def fun_l6_n919(x)
- if (x < 1)
- fun_l7_n991(x)
- else
- fun_l7_n454(x)
- end
-end
-
-def fun_l6_n920(x)
- if (x < 1)
- fun_l7_n925(x)
- else
- fun_l7_n161(x)
- end
-end
-
-def fun_l6_n921(x)
- if (x < 1)
- fun_l7_n398(x)
- else
- fun_l7_n621(x)
- end
-end
-
-def fun_l6_n922(x)
- if (x < 1)
- fun_l7_n732(x)
- else
- fun_l7_n509(x)
- end
-end
-
-def fun_l6_n923(x)
- if (x < 1)
- fun_l7_n879(x)
- else
- fun_l7_n219(x)
- end
-end
-
-def fun_l6_n924(x)
- if (x < 1)
- fun_l7_n19(x)
- else
- fun_l7_n604(x)
- end
-end
-
-def fun_l6_n925(x)
- if (x < 1)
- fun_l7_n474(x)
- else
- fun_l7_n439(x)
- end
-end
-
-def fun_l6_n926(x)
- if (x < 1)
- fun_l7_n807(x)
- else
- fun_l7_n802(x)
- end
-end
-
-def fun_l6_n927(x)
- if (x < 1)
- fun_l7_n146(x)
- else
- fun_l7_n966(x)
- end
-end
-
-def fun_l6_n928(x)
- if (x < 1)
- fun_l7_n72(x)
- else
- fun_l7_n835(x)
- end
-end
-
-def fun_l6_n929(x)
- if (x < 1)
- fun_l7_n389(x)
- else
- fun_l7_n951(x)
- end
-end
-
-def fun_l6_n930(x)
- if (x < 1)
- fun_l7_n104(x)
- else
- fun_l7_n719(x)
- end
-end
-
-def fun_l6_n931(x)
- if (x < 1)
- fun_l7_n250(x)
- else
- fun_l7_n13(x)
- end
-end
-
-def fun_l6_n932(x)
- if (x < 1)
- fun_l7_n470(x)
- else
- fun_l7_n984(x)
- end
-end
-
-def fun_l6_n933(x)
- if (x < 1)
- fun_l7_n485(x)
- else
- fun_l7_n750(x)
- end
-end
-
-def fun_l6_n934(x)
- if (x < 1)
- fun_l7_n371(x)
- else
- fun_l7_n912(x)
- end
-end
-
-def fun_l6_n935(x)
- if (x < 1)
- fun_l7_n686(x)
- else
- fun_l7_n523(x)
- end
-end
-
-def fun_l6_n936(x)
- if (x < 1)
- fun_l7_n998(x)
- else
- fun_l7_n6(x)
- end
-end
-
-def fun_l6_n937(x)
- if (x < 1)
- fun_l7_n753(x)
- else
- fun_l7_n781(x)
- end
-end
-
-def fun_l6_n938(x)
- if (x < 1)
- fun_l7_n518(x)
- else
- fun_l7_n18(x)
- end
-end
-
-def fun_l6_n939(x)
- if (x < 1)
- fun_l7_n771(x)
- else
- fun_l7_n1(x)
- end
-end
-
-def fun_l6_n940(x)
- if (x < 1)
- fun_l7_n43(x)
- else
- fun_l7_n727(x)
- end
-end
-
-def fun_l6_n941(x)
- if (x < 1)
- fun_l7_n282(x)
- else
- fun_l7_n676(x)
- end
-end
-
-def fun_l6_n942(x)
- if (x < 1)
- fun_l7_n284(x)
- else
- fun_l7_n56(x)
- end
-end
-
-def fun_l6_n943(x)
- if (x < 1)
- fun_l7_n304(x)
- else
- fun_l7_n287(x)
- end
-end
-
-def fun_l6_n944(x)
- if (x < 1)
- fun_l7_n968(x)
- else
- fun_l7_n283(x)
- end
-end
-
-def fun_l6_n945(x)
- if (x < 1)
- fun_l7_n892(x)
- else
- fun_l7_n413(x)
- end
-end
-
-def fun_l6_n946(x)
- if (x < 1)
- fun_l7_n750(x)
- else
- fun_l7_n244(x)
- end
-end
-
-def fun_l6_n947(x)
- if (x < 1)
- fun_l7_n599(x)
- else
- fun_l7_n238(x)
- end
-end
-
-def fun_l6_n948(x)
- if (x < 1)
- fun_l7_n447(x)
- else
- fun_l7_n880(x)
- end
-end
-
-def fun_l6_n949(x)
- if (x < 1)
- fun_l7_n242(x)
- else
- fun_l7_n210(x)
- end
-end
-
-def fun_l6_n950(x)
- if (x < 1)
- fun_l7_n143(x)
- else
- fun_l7_n816(x)
- end
-end
-
-def fun_l6_n951(x)
- if (x < 1)
- fun_l7_n125(x)
- else
- fun_l7_n909(x)
- end
-end
-
-def fun_l6_n952(x)
- if (x < 1)
- fun_l7_n134(x)
- else
- fun_l7_n946(x)
- end
-end
-
-def fun_l6_n953(x)
- if (x < 1)
- fun_l7_n858(x)
- else
- fun_l7_n927(x)
- end
-end
-
-def fun_l6_n954(x)
- if (x < 1)
- fun_l7_n853(x)
- else
- fun_l7_n396(x)
- end
-end
-
-def fun_l6_n955(x)
- if (x < 1)
- fun_l7_n725(x)
- else
- fun_l7_n42(x)
- end
-end
-
-def fun_l6_n956(x)
- if (x < 1)
- fun_l7_n108(x)
- else
- fun_l7_n177(x)
- end
-end
-
-def fun_l6_n957(x)
- if (x < 1)
- fun_l7_n742(x)
- else
- fun_l7_n482(x)
- end
-end
-
-def fun_l6_n958(x)
- if (x < 1)
- fun_l7_n385(x)
- else
- fun_l7_n292(x)
- end
-end
-
-def fun_l6_n959(x)
- if (x < 1)
- fun_l7_n325(x)
- else
- fun_l7_n27(x)
- end
-end
-
-def fun_l6_n960(x)
- if (x < 1)
- fun_l7_n558(x)
- else
- fun_l7_n556(x)
- end
-end
-
-def fun_l6_n961(x)
- if (x < 1)
- fun_l7_n472(x)
- else
- fun_l7_n322(x)
- end
-end
-
-def fun_l6_n962(x)
- if (x < 1)
- fun_l7_n754(x)
- else
- fun_l7_n729(x)
- end
-end
-
-def fun_l6_n963(x)
- if (x < 1)
- fun_l7_n35(x)
- else
- fun_l7_n232(x)
- end
-end
-
-def fun_l6_n964(x)
- if (x < 1)
- fun_l7_n113(x)
- else
- fun_l7_n878(x)
- end
-end
-
-def fun_l6_n965(x)
- if (x < 1)
- fun_l7_n982(x)
- else
- fun_l7_n404(x)
- end
-end
-
-def fun_l6_n966(x)
- if (x < 1)
- fun_l7_n385(x)
- else
- fun_l7_n20(x)
- end
-end
-
-def fun_l6_n967(x)
- if (x < 1)
- fun_l7_n394(x)
- else
- fun_l7_n873(x)
- end
-end
-
-def fun_l6_n968(x)
- if (x < 1)
- fun_l7_n230(x)
- else
- fun_l7_n141(x)
- end
-end
-
-def fun_l6_n969(x)
- if (x < 1)
- fun_l7_n742(x)
- else
- fun_l7_n75(x)
- end
-end
-
-def fun_l6_n970(x)
- if (x < 1)
- fun_l7_n583(x)
- else
- fun_l7_n809(x)
- end
-end
-
-def fun_l6_n971(x)
- if (x < 1)
- fun_l7_n535(x)
- else
- fun_l7_n151(x)
- end
-end
-
-def fun_l6_n972(x)
- if (x < 1)
- fun_l7_n42(x)
- else
- fun_l7_n469(x)
- end
-end
-
-def fun_l6_n973(x)
- if (x < 1)
- fun_l7_n964(x)
- else
- fun_l7_n759(x)
- end
-end
-
-def fun_l6_n974(x)
- if (x < 1)
- fun_l7_n897(x)
- else
- fun_l7_n29(x)
- end
-end
-
-def fun_l6_n975(x)
- if (x < 1)
- fun_l7_n331(x)
- else
- fun_l7_n972(x)
- end
-end
-
-def fun_l6_n976(x)
- if (x < 1)
- fun_l7_n825(x)
- else
- fun_l7_n221(x)
- end
-end
-
-def fun_l6_n977(x)
- if (x < 1)
- fun_l7_n207(x)
- else
- fun_l7_n520(x)
- end
-end
-
-def fun_l6_n978(x)
- if (x < 1)
- fun_l7_n231(x)
- else
- fun_l7_n552(x)
- end
-end
-
-def fun_l6_n979(x)
- if (x < 1)
- fun_l7_n621(x)
- else
- fun_l7_n766(x)
- end
-end
-
-def fun_l6_n980(x)
- if (x < 1)
- fun_l7_n461(x)
- else
- fun_l7_n552(x)
- end
-end
-
-def fun_l6_n981(x)
- if (x < 1)
- fun_l7_n891(x)
- else
- fun_l7_n710(x)
- end
-end
-
-def fun_l6_n982(x)
- if (x < 1)
- fun_l7_n253(x)
- else
- fun_l7_n104(x)
- end
-end
-
-def fun_l6_n983(x)
- if (x < 1)
- fun_l7_n726(x)
- else
- fun_l7_n903(x)
- end
-end
-
-def fun_l6_n984(x)
- if (x < 1)
- fun_l7_n524(x)
- else
- fun_l7_n700(x)
- end
-end
-
-def fun_l6_n985(x)
- if (x < 1)
- fun_l7_n234(x)
- else
- fun_l7_n454(x)
- end
-end
-
-def fun_l6_n986(x)
- if (x < 1)
- fun_l7_n379(x)
- else
- fun_l7_n504(x)
- end
-end
-
-def fun_l6_n987(x)
- if (x < 1)
- fun_l7_n194(x)
- else
- fun_l7_n962(x)
- end
-end
-
-def fun_l6_n988(x)
- if (x < 1)
- fun_l7_n60(x)
- else
- fun_l7_n699(x)
- end
-end
-
-def fun_l6_n989(x)
- if (x < 1)
- fun_l7_n692(x)
- else
- fun_l7_n28(x)
- end
-end
-
-def fun_l6_n990(x)
- if (x < 1)
- fun_l7_n456(x)
- else
- fun_l7_n126(x)
- end
-end
-
-def fun_l6_n991(x)
- if (x < 1)
- fun_l7_n104(x)
- else
- fun_l7_n156(x)
- end
-end
-
-def fun_l6_n992(x)
- if (x < 1)
- fun_l7_n269(x)
- else
- fun_l7_n513(x)
- end
-end
-
-def fun_l6_n993(x)
- if (x < 1)
- fun_l7_n20(x)
- else
- fun_l7_n754(x)
- end
-end
-
-def fun_l6_n994(x)
- if (x < 1)
- fun_l7_n445(x)
- else
- fun_l7_n422(x)
- end
-end
-
-def fun_l6_n995(x)
- if (x < 1)
- fun_l7_n320(x)
- else
- fun_l7_n398(x)
- end
-end
-
-def fun_l6_n996(x)
- if (x < 1)
- fun_l7_n479(x)
- else
- fun_l7_n238(x)
- end
-end
-
-def fun_l6_n997(x)
- if (x < 1)
- fun_l7_n254(x)
- else
- fun_l7_n692(x)
- end
-end
-
-def fun_l6_n998(x)
- if (x < 1)
- fun_l7_n774(x)
- else
- fun_l7_n510(x)
- end
-end
-
-def fun_l6_n999(x)
- if (x < 1)
- fun_l7_n158(x)
- else
- fun_l7_n929(x)
- end
-end
-
-def fun_l7_n0(x)
- if (x < 1)
- fun_l8_n414(x)
- else
- fun_l8_n327(x)
- end
-end
-
-def fun_l7_n1(x)
- if (x < 1)
- fun_l8_n446(x)
- else
- fun_l8_n611(x)
- end
-end
-
-def fun_l7_n2(x)
- if (x < 1)
- fun_l8_n116(x)
- else
- fun_l8_n224(x)
- end
-end
-
-def fun_l7_n3(x)
- if (x < 1)
- fun_l8_n809(x)
- else
- fun_l8_n962(x)
- end
-end
-
-def fun_l7_n4(x)
- if (x < 1)
- fun_l8_n137(x)
- else
- fun_l8_n426(x)
- end
-end
-
-def fun_l7_n5(x)
- if (x < 1)
- fun_l8_n686(x)
- else
- fun_l8_n600(x)
- end
-end
-
-def fun_l7_n6(x)
- if (x < 1)
- fun_l8_n430(x)
- else
- fun_l8_n302(x)
- end
-end
-
-def fun_l7_n7(x)
- if (x < 1)
- fun_l8_n865(x)
- else
- fun_l8_n60(x)
- end
-end
-
-def fun_l7_n8(x)
- if (x < 1)
- fun_l8_n895(x)
- else
- fun_l8_n148(x)
- end
-end
-
-def fun_l7_n9(x)
- if (x < 1)
- fun_l8_n740(x)
- else
- fun_l8_n982(x)
- end
-end
-
-def fun_l7_n10(x)
- if (x < 1)
- fun_l8_n757(x)
- else
- fun_l8_n640(x)
- end
-end
-
-def fun_l7_n11(x)
- if (x < 1)
- fun_l8_n744(x)
- else
- fun_l8_n256(x)
- end
-end
-
-def fun_l7_n12(x)
- if (x < 1)
- fun_l8_n272(x)
- else
- fun_l8_n828(x)
- end
-end
-
-def fun_l7_n13(x)
- if (x < 1)
- fun_l8_n395(x)
- else
- fun_l8_n932(x)
- end
-end
-
-def fun_l7_n14(x)
- if (x < 1)
- fun_l8_n178(x)
- else
- fun_l8_n676(x)
- end
-end
-
-def fun_l7_n15(x)
- if (x < 1)
- fun_l8_n40(x)
- else
- fun_l8_n548(x)
- end
-end
-
-def fun_l7_n16(x)
- if (x < 1)
- fun_l8_n506(x)
- else
- fun_l8_n234(x)
- end
-end
-
-def fun_l7_n17(x)
- if (x < 1)
- fun_l8_n239(x)
- else
- fun_l8_n56(x)
- end
-end
-
-def fun_l7_n18(x)
- if (x < 1)
- fun_l8_n381(x)
- else
- fun_l8_n720(x)
- end
-end
-
-def fun_l7_n19(x)
- if (x < 1)
- fun_l8_n781(x)
- else
- fun_l8_n605(x)
- end
-end
-
-def fun_l7_n20(x)
- if (x < 1)
- fun_l8_n479(x)
- else
- fun_l8_n894(x)
- end
-end
-
-def fun_l7_n21(x)
- if (x < 1)
- fun_l8_n437(x)
- else
- fun_l8_n123(x)
- end
-end
-
-def fun_l7_n22(x)
- if (x < 1)
- fun_l8_n20(x)
- else
- fun_l8_n144(x)
- end
-end
-
-def fun_l7_n23(x)
- if (x < 1)
- fun_l8_n684(x)
- else
- fun_l8_n866(x)
- end
-end
-
-def fun_l7_n24(x)
- if (x < 1)
- fun_l8_n527(x)
- else
- fun_l8_n629(x)
- end
-end
-
-def fun_l7_n25(x)
- if (x < 1)
- fun_l8_n399(x)
- else
- fun_l8_n52(x)
- end
-end
-
-def fun_l7_n26(x)
- if (x < 1)
- fun_l8_n353(x)
- else
- fun_l8_n438(x)
- end
-end
-
-def fun_l7_n27(x)
- if (x < 1)
- fun_l8_n916(x)
- else
- fun_l8_n488(x)
- end
-end
-
-def fun_l7_n28(x)
- if (x < 1)
- fun_l8_n833(x)
- else
- fun_l8_n585(x)
- end
-end
-
-def fun_l7_n29(x)
- if (x < 1)
- fun_l8_n38(x)
- else
- fun_l8_n785(x)
- end
-end
-
-def fun_l7_n30(x)
- if (x < 1)
- fun_l8_n157(x)
- else
- fun_l8_n332(x)
- end
-end
-
-def fun_l7_n31(x)
- if (x < 1)
- fun_l8_n467(x)
- else
- fun_l8_n442(x)
- end
-end
-
-def fun_l7_n32(x)
- if (x < 1)
- fun_l8_n704(x)
- else
- fun_l8_n295(x)
- end
-end
-
-def fun_l7_n33(x)
- if (x < 1)
- fun_l8_n829(x)
- else
- fun_l8_n307(x)
- end
-end
-
-def fun_l7_n34(x)
- if (x < 1)
- fun_l8_n227(x)
- else
- fun_l8_n865(x)
- end
-end
-
-def fun_l7_n35(x)
- if (x < 1)
- fun_l8_n930(x)
- else
- fun_l8_n129(x)
- end
-end
-
-def fun_l7_n36(x)
- if (x < 1)
- fun_l8_n519(x)
- else
- fun_l8_n587(x)
- end
-end
-
-def fun_l7_n37(x)
- if (x < 1)
- fun_l8_n132(x)
- else
- fun_l8_n547(x)
- end
-end
-
-def fun_l7_n38(x)
- if (x < 1)
- fun_l8_n627(x)
- else
- fun_l8_n712(x)
- end
-end
-
-def fun_l7_n39(x)
- if (x < 1)
- fun_l8_n752(x)
- else
- fun_l8_n357(x)
- end
-end
-
-def fun_l7_n40(x)
- if (x < 1)
- fun_l8_n542(x)
- else
- fun_l8_n86(x)
- end
-end
-
-def fun_l7_n41(x)
- if (x < 1)
- fun_l8_n89(x)
- else
- fun_l8_n492(x)
- end
-end
-
-def fun_l7_n42(x)
- if (x < 1)
- fun_l8_n508(x)
- else
- fun_l8_n288(x)
- end
-end
-
-def fun_l7_n43(x)
- if (x < 1)
- fun_l8_n627(x)
- else
- fun_l8_n632(x)
- end
-end
-
-def fun_l7_n44(x)
- if (x < 1)
- fun_l8_n513(x)
- else
- fun_l8_n472(x)
- end
-end
-
-def fun_l7_n45(x)
- if (x < 1)
- fun_l8_n599(x)
- else
- fun_l8_n581(x)
- end
-end
-
-def fun_l7_n46(x)
- if (x < 1)
- fun_l8_n907(x)
- else
- fun_l8_n71(x)
- end
-end
-
-def fun_l7_n47(x)
- if (x < 1)
- fun_l8_n609(x)
- else
- fun_l8_n601(x)
- end
-end
-
-def fun_l7_n48(x)
- if (x < 1)
- fun_l8_n985(x)
- else
- fun_l8_n536(x)
- end
-end
-
-def fun_l7_n49(x)
- if (x < 1)
- fun_l8_n220(x)
- else
- fun_l8_n6(x)
- end
-end
-
-def fun_l7_n50(x)
- if (x < 1)
- fun_l8_n445(x)
- else
- fun_l8_n939(x)
- end
-end
-
-def fun_l7_n51(x)
- if (x < 1)
- fun_l8_n973(x)
- else
- fun_l8_n600(x)
- end
-end
-
-def fun_l7_n52(x)
- if (x < 1)
- fun_l8_n377(x)
- else
- fun_l8_n70(x)
- end
-end
-
-def fun_l7_n53(x)
- if (x < 1)
- fun_l8_n745(x)
- else
- fun_l8_n237(x)
- end
-end
-
-def fun_l7_n54(x)
- if (x < 1)
- fun_l8_n782(x)
- else
- fun_l8_n756(x)
- end
-end
-
-def fun_l7_n55(x)
- if (x < 1)
- fun_l8_n438(x)
- else
- fun_l8_n892(x)
- end
-end
-
-def fun_l7_n56(x)
- if (x < 1)
- fun_l8_n564(x)
- else
- fun_l8_n600(x)
- end
-end
-
-def fun_l7_n57(x)
- if (x < 1)
- fun_l8_n480(x)
- else
- fun_l8_n832(x)
- end
-end
-
-def fun_l7_n58(x)
- if (x < 1)
- fun_l8_n239(x)
- else
- fun_l8_n540(x)
- end
-end
-
-def fun_l7_n59(x)
- if (x < 1)
- fun_l8_n904(x)
- else
- fun_l8_n334(x)
- end
-end
-
-def fun_l7_n60(x)
- if (x < 1)
- fun_l8_n407(x)
- else
- fun_l8_n573(x)
- end
-end
-
-def fun_l7_n61(x)
- if (x < 1)
- fun_l8_n705(x)
- else
- fun_l8_n202(x)
- end
-end
-
-def fun_l7_n62(x)
- if (x < 1)
- fun_l8_n715(x)
- else
- fun_l8_n394(x)
- end
-end
-
-def fun_l7_n63(x)
- if (x < 1)
- fun_l8_n935(x)
- else
- fun_l8_n855(x)
- end
-end
-
-def fun_l7_n64(x)
- if (x < 1)
- fun_l8_n525(x)
- else
- fun_l8_n81(x)
- end
-end
-
-def fun_l7_n65(x)
- if (x < 1)
- fun_l8_n692(x)
- else
- fun_l8_n372(x)
- end
-end
-
-def fun_l7_n66(x)
- if (x < 1)
- fun_l8_n286(x)
- else
- fun_l8_n568(x)
- end
-end
-
-def fun_l7_n67(x)
- if (x < 1)
- fun_l8_n829(x)
- else
- fun_l8_n89(x)
- end
-end
-
-def fun_l7_n68(x)
- if (x < 1)
- fun_l8_n542(x)
- else
- fun_l8_n362(x)
- end
-end
-
-def fun_l7_n69(x)
- if (x < 1)
- fun_l8_n673(x)
- else
- fun_l8_n302(x)
- end
-end
-
-def fun_l7_n70(x)
- if (x < 1)
- fun_l8_n649(x)
- else
- fun_l8_n890(x)
- end
-end
-
-def fun_l7_n71(x)
- if (x < 1)
- fun_l8_n639(x)
- else
- fun_l8_n304(x)
- end
-end
-
-def fun_l7_n72(x)
- if (x < 1)
- fun_l8_n797(x)
- else
- fun_l8_n132(x)
- end
-end
-
-def fun_l7_n73(x)
- if (x < 1)
- fun_l8_n301(x)
- else
- fun_l8_n328(x)
- end
-end
-
-def fun_l7_n74(x)
- if (x < 1)
- fun_l8_n438(x)
- else
- fun_l8_n979(x)
- end
-end
-
-def fun_l7_n75(x)
- if (x < 1)
- fun_l8_n679(x)
- else
- fun_l8_n621(x)
- end
-end
-
-def fun_l7_n76(x)
- if (x < 1)
- fun_l8_n136(x)
- else
- fun_l8_n916(x)
- end
-end
-
-def fun_l7_n77(x)
- if (x < 1)
- fun_l8_n39(x)
- else
- fun_l8_n945(x)
- end
-end
-
-def fun_l7_n78(x)
- if (x < 1)
- fun_l8_n365(x)
- else
- fun_l8_n883(x)
- end
-end
-
-def fun_l7_n79(x)
- if (x < 1)
- fun_l8_n514(x)
- else
- fun_l8_n989(x)
- end
-end
-
-def fun_l7_n80(x)
- if (x < 1)
- fun_l8_n378(x)
- else
- fun_l8_n634(x)
- end
-end
-
-def fun_l7_n81(x)
- if (x < 1)
- fun_l8_n200(x)
- else
- fun_l8_n73(x)
- end
-end
-
-def fun_l7_n82(x)
- if (x < 1)
- fun_l8_n521(x)
- else
- fun_l8_n848(x)
- end
-end
-
-def fun_l7_n83(x)
- if (x < 1)
- fun_l8_n184(x)
- else
- fun_l8_n350(x)
- end
-end
-
-def fun_l7_n84(x)
- if (x < 1)
- fun_l8_n215(x)
- else
- fun_l8_n615(x)
- end
-end
-
-def fun_l7_n85(x)
- if (x < 1)
- fun_l8_n556(x)
- else
- fun_l8_n723(x)
- end
-end
-
-def fun_l7_n86(x)
- if (x < 1)
- fun_l8_n565(x)
- else
- fun_l8_n661(x)
- end
-end
-
-def fun_l7_n87(x)
- if (x < 1)
- fun_l8_n22(x)
- else
- fun_l8_n623(x)
- end
-end
-
-def fun_l7_n88(x)
- if (x < 1)
- fun_l8_n995(x)
- else
- fun_l8_n30(x)
- end
-end
-
-def fun_l7_n89(x)
- if (x < 1)
- fun_l8_n912(x)
- else
- fun_l8_n332(x)
- end
-end
-
-def fun_l7_n90(x)
- if (x < 1)
- fun_l8_n776(x)
- else
- fun_l8_n362(x)
- end
-end
-
-def fun_l7_n91(x)
- if (x < 1)
- fun_l8_n720(x)
- else
- fun_l8_n512(x)
- end
-end
-
-def fun_l7_n92(x)
- if (x < 1)
- fun_l8_n437(x)
- else
- fun_l8_n107(x)
- end
-end
-
-def fun_l7_n93(x)
- if (x < 1)
- fun_l8_n143(x)
- else
- fun_l8_n493(x)
- end
-end
-
-def fun_l7_n94(x)
- if (x < 1)
- fun_l8_n814(x)
- else
- fun_l8_n892(x)
- end
-end
-
-def fun_l7_n95(x)
- if (x < 1)
- fun_l8_n117(x)
- else
- fun_l8_n18(x)
- end
-end
-
-def fun_l7_n96(x)
- if (x < 1)
- fun_l8_n769(x)
- else
- fun_l8_n37(x)
- end
-end
-
-def fun_l7_n97(x)
- if (x < 1)
- fun_l8_n213(x)
- else
- fun_l8_n5(x)
- end
-end
-
-def fun_l7_n98(x)
- if (x < 1)
- fun_l8_n608(x)
- else
- fun_l8_n551(x)
- end
-end
-
-def fun_l7_n99(x)
- if (x < 1)
- fun_l8_n130(x)
- else
- fun_l8_n879(x)
- end
-end
-
-def fun_l7_n100(x)
- if (x < 1)
- fun_l8_n279(x)
- else
- fun_l8_n786(x)
- end
-end
-
-def fun_l7_n101(x)
- if (x < 1)
- fun_l8_n254(x)
- else
- fun_l8_n904(x)
- end
-end
-
-def fun_l7_n102(x)
- if (x < 1)
- fun_l8_n661(x)
- else
- fun_l8_n873(x)
- end
-end
-
-def fun_l7_n103(x)
- if (x < 1)
- fun_l8_n360(x)
- else
- fun_l8_n793(x)
- end
-end
-
-def fun_l7_n104(x)
- if (x < 1)
- fun_l8_n687(x)
- else
- fun_l8_n853(x)
- end
-end
-
-def fun_l7_n105(x)
- if (x < 1)
- fun_l8_n168(x)
- else
- fun_l8_n280(x)
- end
-end
-
-def fun_l7_n106(x)
- if (x < 1)
- fun_l8_n742(x)
- else
- fun_l8_n222(x)
- end
-end
-
-def fun_l7_n107(x)
- if (x < 1)
- fun_l8_n470(x)
- else
- fun_l8_n633(x)
- end
-end
-
-def fun_l7_n108(x)
- if (x < 1)
- fun_l8_n495(x)
- else
- fun_l8_n253(x)
- end
-end
-
-def fun_l7_n109(x)
- if (x < 1)
- fun_l8_n369(x)
- else
- fun_l8_n108(x)
- end
-end
-
-def fun_l7_n110(x)
- if (x < 1)
- fun_l8_n254(x)
- else
- fun_l8_n162(x)
- end
-end
-
-def fun_l7_n111(x)
- if (x < 1)
- fun_l8_n835(x)
- else
- fun_l8_n295(x)
- end
-end
-
-def fun_l7_n112(x)
- if (x < 1)
- fun_l8_n349(x)
- else
- fun_l8_n432(x)
- end
-end
-
-def fun_l7_n113(x)
- if (x < 1)
- fun_l8_n237(x)
- else
- fun_l8_n484(x)
- end
-end
-
-def fun_l7_n114(x)
- if (x < 1)
- fun_l8_n755(x)
- else
- fun_l8_n819(x)
- end
-end
-
-def fun_l7_n115(x)
- if (x < 1)
- fun_l8_n542(x)
- else
- fun_l8_n587(x)
- end
-end
-
-def fun_l7_n116(x)
- if (x < 1)
- fun_l8_n837(x)
- else
- fun_l8_n274(x)
- end
-end
-
-def fun_l7_n117(x)
- if (x < 1)
- fun_l8_n742(x)
- else
- fun_l8_n104(x)
- end
-end
-
-def fun_l7_n118(x)
- if (x < 1)
- fun_l8_n201(x)
- else
- fun_l8_n340(x)
- end
-end
-
-def fun_l7_n119(x)
- if (x < 1)
- fun_l8_n349(x)
- else
- fun_l8_n213(x)
- end
-end
-
-def fun_l7_n120(x)
- if (x < 1)
- fun_l8_n563(x)
- else
- fun_l8_n193(x)
- end
-end
-
-def fun_l7_n121(x)
- if (x < 1)
- fun_l8_n738(x)
- else
- fun_l8_n600(x)
- end
-end
-
-def fun_l7_n122(x)
- if (x < 1)
- fun_l8_n261(x)
- else
- fun_l8_n500(x)
- end
-end
-
-def fun_l7_n123(x)
- if (x < 1)
- fun_l8_n870(x)
- else
- fun_l8_n423(x)
- end
-end
-
-def fun_l7_n124(x)
- if (x < 1)
- fun_l8_n405(x)
- else
- fun_l8_n749(x)
- end
-end
-
-def fun_l7_n125(x)
- if (x < 1)
- fun_l8_n848(x)
- else
- fun_l8_n106(x)
- end
-end
-
-def fun_l7_n126(x)
- if (x < 1)
- fun_l8_n382(x)
- else
- fun_l8_n379(x)
- end
-end
-
-def fun_l7_n127(x)
- if (x < 1)
- fun_l8_n232(x)
- else
- fun_l8_n913(x)
- end
-end
-
-def fun_l7_n128(x)
- if (x < 1)
- fun_l8_n7(x)
- else
- fun_l8_n177(x)
- end
-end
-
-def fun_l7_n129(x)
- if (x < 1)
- fun_l8_n86(x)
- else
- fun_l8_n670(x)
- end
-end
-
-def fun_l7_n130(x)
- if (x < 1)
- fun_l8_n361(x)
- else
- fun_l8_n132(x)
- end
-end
-
-def fun_l7_n131(x)
- if (x < 1)
- fun_l8_n125(x)
- else
- fun_l8_n925(x)
- end
-end
-
-def fun_l7_n132(x)
- if (x < 1)
- fun_l8_n529(x)
- else
- fun_l8_n996(x)
- end
-end
-
-def fun_l7_n133(x)
- if (x < 1)
- fun_l8_n283(x)
- else
- fun_l8_n112(x)
- end
-end
-
-def fun_l7_n134(x)
- if (x < 1)
- fun_l8_n974(x)
- else
- fun_l8_n204(x)
- end
-end
-
-def fun_l7_n135(x)
- if (x < 1)
- fun_l8_n903(x)
- else
- fun_l8_n196(x)
- end
-end
-
-def fun_l7_n136(x)
- if (x < 1)
- fun_l8_n59(x)
- else
- fun_l8_n505(x)
- end
-end
-
-def fun_l7_n137(x)
- if (x < 1)
- fun_l8_n530(x)
- else
- fun_l8_n31(x)
- end
-end
-
-def fun_l7_n138(x)
- if (x < 1)
- fun_l8_n990(x)
- else
- fun_l8_n924(x)
- end
-end
-
-def fun_l7_n139(x)
- if (x < 1)
- fun_l8_n202(x)
- else
- fun_l8_n980(x)
- end
-end
-
-def fun_l7_n140(x)
- if (x < 1)
- fun_l8_n354(x)
- else
- fun_l8_n694(x)
- end
-end
-
-def fun_l7_n141(x)
- if (x < 1)
- fun_l8_n306(x)
- else
- fun_l8_n307(x)
- end
-end
-
-def fun_l7_n142(x)
- if (x < 1)
- fun_l8_n433(x)
- else
- fun_l8_n902(x)
- end
-end
-
-def fun_l7_n143(x)
- if (x < 1)
- fun_l8_n522(x)
- else
- fun_l8_n904(x)
- end
-end
-
-def fun_l7_n144(x)
- if (x < 1)
- fun_l8_n86(x)
- else
- fun_l8_n11(x)
- end
-end
-
-def fun_l7_n145(x)
- if (x < 1)
- fun_l8_n147(x)
- else
- fun_l8_n21(x)
- end
-end
-
-def fun_l7_n146(x)
- if (x < 1)
- fun_l8_n47(x)
- else
- fun_l8_n855(x)
- end
-end
-
-def fun_l7_n147(x)
- if (x < 1)
- fun_l8_n306(x)
- else
- fun_l8_n309(x)
- end
-end
-
-def fun_l7_n148(x)
- if (x < 1)
- fun_l8_n757(x)
- else
- fun_l8_n83(x)
- end
-end
-
-def fun_l7_n149(x)
- if (x < 1)
- fun_l8_n377(x)
- else
- fun_l8_n124(x)
- end
-end
-
-def fun_l7_n150(x)
- if (x < 1)
- fun_l8_n276(x)
- else
- fun_l8_n838(x)
- end
-end
-
-def fun_l7_n151(x)
- if (x < 1)
- fun_l8_n148(x)
- else
- fun_l8_n653(x)
- end
-end
-
-def fun_l7_n152(x)
- if (x < 1)
- fun_l8_n315(x)
- else
- fun_l8_n942(x)
- end
-end
-
-def fun_l7_n153(x)
- if (x < 1)
- fun_l8_n794(x)
- else
- fun_l8_n680(x)
- end
-end
-
-def fun_l7_n154(x)
- if (x < 1)
- fun_l8_n508(x)
- else
- fun_l8_n427(x)
- end
-end
-
-def fun_l7_n155(x)
- if (x < 1)
- fun_l8_n249(x)
- else
- fun_l8_n615(x)
- end
-end
-
-def fun_l7_n156(x)
- if (x < 1)
- fun_l8_n339(x)
- else
- fun_l8_n559(x)
- end
-end
-
-def fun_l7_n157(x)
- if (x < 1)
- fun_l8_n772(x)
- else
- fun_l8_n128(x)
- end
-end
-
-def fun_l7_n158(x)
- if (x < 1)
- fun_l8_n247(x)
- else
- fun_l8_n962(x)
- end
-end
-
-def fun_l7_n159(x)
- if (x < 1)
- fun_l8_n648(x)
- else
- fun_l8_n338(x)
- end
-end
-
-def fun_l7_n160(x)
- if (x < 1)
- fun_l8_n104(x)
- else
- fun_l8_n757(x)
- end
-end
-
-def fun_l7_n161(x)
- if (x < 1)
- fun_l8_n74(x)
- else
- fun_l8_n288(x)
- end
-end
-
-def fun_l7_n162(x)
- if (x < 1)
- fun_l8_n849(x)
- else
- fun_l8_n982(x)
- end
-end
-
-def fun_l7_n163(x)
- if (x < 1)
- fun_l8_n433(x)
- else
- fun_l8_n442(x)
- end
-end
-
-def fun_l7_n164(x)
- if (x < 1)
- fun_l8_n268(x)
- else
- fun_l8_n717(x)
- end
-end
-
-def fun_l7_n165(x)
- if (x < 1)
- fun_l8_n185(x)
- else
- fun_l8_n628(x)
- end
-end
-
-def fun_l7_n166(x)
- if (x < 1)
- fun_l8_n207(x)
- else
- fun_l8_n830(x)
- end
-end
-
-def fun_l7_n167(x)
- if (x < 1)
- fun_l8_n334(x)
- else
- fun_l8_n20(x)
- end
-end
-
-def fun_l7_n168(x)
- if (x < 1)
- fun_l8_n835(x)
- else
- fun_l8_n493(x)
- end
-end
-
-def fun_l7_n169(x)
- if (x < 1)
- fun_l8_n559(x)
- else
- fun_l8_n561(x)
- end
-end
-
-def fun_l7_n170(x)
- if (x < 1)
- fun_l8_n942(x)
- else
- fun_l8_n699(x)
- end
-end
-
-def fun_l7_n171(x)
- if (x < 1)
- fun_l8_n833(x)
- else
- fun_l8_n928(x)
- end
-end
-
-def fun_l7_n172(x)
- if (x < 1)
- fun_l8_n564(x)
- else
- fun_l8_n972(x)
- end
-end
-
-def fun_l7_n173(x)
- if (x < 1)
- fun_l8_n509(x)
- else
- fun_l8_n125(x)
- end
-end
-
-def fun_l7_n174(x)
- if (x < 1)
- fun_l8_n643(x)
- else
- fun_l8_n813(x)
- end
-end
-
-def fun_l7_n175(x)
- if (x < 1)
- fun_l8_n763(x)
- else
- fun_l8_n22(x)
- end
-end
-
-def fun_l7_n176(x)
- if (x < 1)
- fun_l8_n955(x)
- else
- fun_l8_n579(x)
- end
-end
-
-def fun_l7_n177(x)
- if (x < 1)
- fun_l8_n577(x)
- else
- fun_l8_n675(x)
- end
-end
-
-def fun_l7_n178(x)
- if (x < 1)
- fun_l8_n867(x)
- else
- fun_l8_n119(x)
- end
-end
-
-def fun_l7_n179(x)
- if (x < 1)
- fun_l8_n357(x)
- else
- fun_l8_n543(x)
- end
-end
-
-def fun_l7_n180(x)
- if (x < 1)
- fun_l8_n67(x)
- else
- fun_l8_n643(x)
- end
-end
-
-def fun_l7_n181(x)
- if (x < 1)
- fun_l8_n377(x)
- else
- fun_l8_n931(x)
- end
-end
-
-def fun_l7_n182(x)
- if (x < 1)
- fun_l8_n962(x)
- else
- fun_l8_n220(x)
- end
-end
-
-def fun_l7_n183(x)
- if (x < 1)
- fun_l8_n568(x)
- else
- fun_l8_n702(x)
- end
-end
-
-def fun_l7_n184(x)
- if (x < 1)
- fun_l8_n877(x)
- else
- fun_l8_n376(x)
- end
-end
-
-def fun_l7_n185(x)
- if (x < 1)
- fun_l8_n171(x)
- else
- fun_l8_n981(x)
- end
-end
-
-def fun_l7_n186(x)
- if (x < 1)
- fun_l8_n283(x)
- else
- fun_l8_n81(x)
- end
-end
-
-def fun_l7_n187(x)
- if (x < 1)
- fun_l8_n318(x)
- else
- fun_l8_n7(x)
- end
-end
-
-def fun_l7_n188(x)
- if (x < 1)
- fun_l8_n874(x)
- else
- fun_l8_n879(x)
- end
-end
-
-def fun_l7_n189(x)
- if (x < 1)
- fun_l8_n944(x)
- else
- fun_l8_n881(x)
- end
-end
-
-def fun_l7_n190(x)
- if (x < 1)
- fun_l8_n462(x)
- else
- fun_l8_n570(x)
- end
-end
-
-def fun_l7_n191(x)
- if (x < 1)
- fun_l8_n815(x)
- else
- fun_l8_n957(x)
- end
-end
-
-def fun_l7_n192(x)
- if (x < 1)
- fun_l8_n217(x)
- else
- fun_l8_n93(x)
- end
-end
-
-def fun_l7_n193(x)
- if (x < 1)
- fun_l8_n708(x)
- else
- fun_l8_n323(x)
- end
-end
-
-def fun_l7_n194(x)
- if (x < 1)
- fun_l8_n420(x)
- else
- fun_l8_n375(x)
- end
-end
-
-def fun_l7_n195(x)
- if (x < 1)
- fun_l8_n307(x)
- else
- fun_l8_n427(x)
- end
-end
-
-def fun_l7_n196(x)
- if (x < 1)
- fun_l8_n200(x)
- else
- fun_l8_n265(x)
- end
-end
-
-def fun_l7_n197(x)
- if (x < 1)
- fun_l8_n547(x)
- else
- fun_l8_n687(x)
- end
-end
-
-def fun_l7_n198(x)
- if (x < 1)
- fun_l8_n693(x)
- else
- fun_l8_n420(x)
- end
-end
-
-def fun_l7_n199(x)
- if (x < 1)
- fun_l8_n297(x)
- else
- fun_l8_n702(x)
- end
-end
-
-def fun_l7_n200(x)
- if (x < 1)
- fun_l8_n418(x)
- else
- fun_l8_n758(x)
- end
-end
-
-def fun_l7_n201(x)
- if (x < 1)
- fun_l8_n204(x)
- else
- fun_l8_n572(x)
- end
-end
-
-def fun_l7_n202(x)
- if (x < 1)
- fun_l8_n847(x)
- else
- fun_l8_n440(x)
- end
-end
-
-def fun_l7_n203(x)
- if (x < 1)
- fun_l8_n692(x)
- else
- fun_l8_n595(x)
- end
-end
-
-def fun_l7_n204(x)
- if (x < 1)
- fun_l8_n922(x)
- else
- fun_l8_n618(x)
- end
-end
-
-def fun_l7_n205(x)
- if (x < 1)
- fun_l8_n431(x)
- else
- fun_l8_n135(x)
- end
-end
-
-def fun_l7_n206(x)
- if (x < 1)
- fun_l8_n92(x)
- else
- fun_l8_n370(x)
- end
-end
-
-def fun_l7_n207(x)
- if (x < 1)
- fun_l8_n141(x)
- else
- fun_l8_n845(x)
- end
-end
-
-def fun_l7_n208(x)
- if (x < 1)
- fun_l8_n552(x)
- else
- fun_l8_n917(x)
- end
-end
-
-def fun_l7_n209(x)
- if (x < 1)
- fun_l8_n341(x)
- else
- fun_l8_n794(x)
- end
-end
-
-def fun_l7_n210(x)
- if (x < 1)
- fun_l8_n772(x)
- else
- fun_l8_n515(x)
- end
-end
-
-def fun_l7_n211(x)
- if (x < 1)
- fun_l8_n37(x)
- else
- fun_l8_n635(x)
- end
-end
-
-def fun_l7_n212(x)
- if (x < 1)
- fun_l8_n164(x)
- else
- fun_l8_n506(x)
- end
-end
-
-def fun_l7_n213(x)
- if (x < 1)
- fun_l8_n621(x)
- else
- fun_l8_n722(x)
- end
-end
-
-def fun_l7_n214(x)
- if (x < 1)
- fun_l8_n475(x)
- else
- fun_l8_n854(x)
- end
-end
-
-def fun_l7_n215(x)
- if (x < 1)
- fun_l8_n275(x)
- else
- fun_l8_n884(x)
- end
-end
-
-def fun_l7_n216(x)
- if (x < 1)
- fun_l8_n894(x)
- else
- fun_l8_n424(x)
- end
-end
-
-def fun_l7_n217(x)
- if (x < 1)
- fun_l8_n32(x)
- else
- fun_l8_n698(x)
- end
-end
-
-def fun_l7_n218(x)
- if (x < 1)
- fun_l8_n707(x)
- else
- fun_l8_n728(x)
- end
-end
-
-def fun_l7_n219(x)
- if (x < 1)
- fun_l8_n294(x)
- else
- fun_l8_n583(x)
- end
-end
-
-def fun_l7_n220(x)
- if (x < 1)
- fun_l8_n577(x)
- else
- fun_l8_n881(x)
- end
-end
-
-def fun_l7_n221(x)
- if (x < 1)
- fun_l8_n925(x)
- else
- fun_l8_n177(x)
- end
-end
-
-def fun_l7_n222(x)
- if (x < 1)
- fun_l8_n495(x)
- else
- fun_l8_n407(x)
- end
-end
-
-def fun_l7_n223(x)
- if (x < 1)
- fun_l8_n11(x)
- else
- fun_l8_n753(x)
- end
-end
-
-def fun_l7_n224(x)
- if (x < 1)
- fun_l8_n366(x)
- else
- fun_l8_n546(x)
- end
-end
-
-def fun_l7_n225(x)
- if (x < 1)
- fun_l8_n644(x)
- else
- fun_l8_n728(x)
- end
-end
-
-def fun_l7_n226(x)
- if (x < 1)
- fun_l8_n731(x)
- else
- fun_l8_n292(x)
- end
-end
-
-def fun_l7_n227(x)
- if (x < 1)
- fun_l8_n653(x)
- else
- fun_l8_n521(x)
- end
-end
-
-def fun_l7_n228(x)
- if (x < 1)
- fun_l8_n479(x)
- else
- fun_l8_n329(x)
- end
-end
-
-def fun_l7_n229(x)
- if (x < 1)
- fun_l8_n151(x)
- else
- fun_l8_n620(x)
- end
-end
-
-def fun_l7_n230(x)
- if (x < 1)
- fun_l8_n58(x)
- else
- fun_l8_n369(x)
- end
-end
-
-def fun_l7_n231(x)
- if (x < 1)
- fun_l8_n301(x)
- else
- fun_l8_n869(x)
- end
-end
-
-def fun_l7_n232(x)
- if (x < 1)
- fun_l8_n810(x)
- else
- fun_l8_n376(x)
- end
-end
-
-def fun_l7_n233(x)
- if (x < 1)
- fun_l8_n19(x)
- else
- fun_l8_n278(x)
- end
-end
-
-def fun_l7_n234(x)
- if (x < 1)
- fun_l8_n509(x)
- else
- fun_l8_n826(x)
- end
-end
-
-def fun_l7_n235(x)
- if (x < 1)
- fun_l8_n302(x)
- else
- fun_l8_n62(x)
- end
-end
-
-def fun_l7_n236(x)
- if (x < 1)
- fun_l8_n289(x)
- else
- fun_l8_n935(x)
- end
-end
-
-def fun_l7_n237(x)
- if (x < 1)
- fun_l8_n217(x)
- else
- fun_l8_n652(x)
- end
-end
-
-def fun_l7_n238(x)
- if (x < 1)
- fun_l8_n234(x)
- else
- fun_l8_n720(x)
- end
-end
-
-def fun_l7_n239(x)
- if (x < 1)
- fun_l8_n158(x)
- else
- fun_l8_n409(x)
- end
-end
-
-def fun_l7_n240(x)
- if (x < 1)
- fun_l8_n478(x)
- else
- fun_l8_n855(x)
- end
-end
-
-def fun_l7_n241(x)
- if (x < 1)
- fun_l8_n115(x)
- else
- fun_l8_n406(x)
- end
-end
-
-def fun_l7_n242(x)
- if (x < 1)
- fun_l8_n278(x)
- else
- fun_l8_n12(x)
- end
-end
-
-def fun_l7_n243(x)
- if (x < 1)
- fun_l8_n273(x)
- else
- fun_l8_n243(x)
- end
-end
-
-def fun_l7_n244(x)
- if (x < 1)
- fun_l8_n909(x)
- else
- fun_l8_n721(x)
- end
-end
-
-def fun_l7_n245(x)
- if (x < 1)
- fun_l8_n415(x)
- else
- fun_l8_n530(x)
- end
-end
-
-def fun_l7_n246(x)
- if (x < 1)
- fun_l8_n770(x)
- else
- fun_l8_n413(x)
- end
-end
-
-def fun_l7_n247(x)
- if (x < 1)
- fun_l8_n228(x)
- else
- fun_l8_n668(x)
- end
-end
-
-def fun_l7_n248(x)
- if (x < 1)
- fun_l8_n174(x)
- else
- fun_l8_n559(x)
- end
-end
-
-def fun_l7_n249(x)
- if (x < 1)
- fun_l8_n740(x)
- else
- fun_l8_n314(x)
- end
-end
-
-def fun_l7_n250(x)
- if (x < 1)
- fun_l8_n293(x)
- else
- fun_l8_n835(x)
- end
-end
-
-def fun_l7_n251(x)
- if (x < 1)
- fun_l8_n584(x)
- else
- fun_l8_n755(x)
- end
-end
-
-def fun_l7_n252(x)
- if (x < 1)
- fun_l8_n792(x)
- else
- fun_l8_n135(x)
- end
-end
-
-def fun_l7_n253(x)
- if (x < 1)
- fun_l8_n116(x)
- else
- fun_l8_n82(x)
- end
-end
-
-def fun_l7_n254(x)
- if (x < 1)
- fun_l8_n478(x)
- else
- fun_l8_n809(x)
- end
-end
-
-def fun_l7_n255(x)
- if (x < 1)
- fun_l8_n924(x)
- else
- fun_l8_n708(x)
- end
-end
-
-def fun_l7_n256(x)
- if (x < 1)
- fun_l8_n345(x)
- else
- fun_l8_n669(x)
- end
-end
-
-def fun_l7_n257(x)
- if (x < 1)
- fun_l8_n300(x)
- else
- fun_l8_n166(x)
- end
-end
-
-def fun_l7_n258(x)
- if (x < 1)
- fun_l8_n979(x)
- else
- fun_l8_n894(x)
- end
-end
-
-def fun_l7_n259(x)
- if (x < 1)
- fun_l8_n765(x)
- else
- fun_l8_n838(x)
- end
-end
-
-def fun_l7_n260(x)
- if (x < 1)
- fun_l8_n812(x)
- else
- fun_l8_n472(x)
- end
-end
-
-def fun_l7_n261(x)
- if (x < 1)
- fun_l8_n220(x)
- else
- fun_l8_n106(x)
- end
-end
-
-def fun_l7_n262(x)
- if (x < 1)
- fun_l8_n727(x)
- else
- fun_l8_n783(x)
- end
-end
-
-def fun_l7_n263(x)
- if (x < 1)
- fun_l8_n560(x)
- else
- fun_l8_n781(x)
- end
-end
-
-def fun_l7_n264(x)
- if (x < 1)
- fun_l8_n709(x)
- else
- fun_l8_n33(x)
- end
-end
-
-def fun_l7_n265(x)
- if (x < 1)
- fun_l8_n904(x)
- else
- fun_l8_n64(x)
- end
-end
-
-def fun_l7_n266(x)
- if (x < 1)
- fun_l8_n944(x)
- else
- fun_l8_n652(x)
- end
-end
-
-def fun_l7_n267(x)
- if (x < 1)
- fun_l8_n154(x)
- else
- fun_l8_n103(x)
- end
-end
-
-def fun_l7_n268(x)
- if (x < 1)
- fun_l8_n55(x)
- else
- fun_l8_n841(x)
- end
-end
-
-def fun_l7_n269(x)
- if (x < 1)
- fun_l8_n914(x)
- else
- fun_l8_n108(x)
- end
-end
-
-def fun_l7_n270(x)
- if (x < 1)
- fun_l8_n733(x)
- else
- fun_l8_n398(x)
- end
-end
-
-def fun_l7_n271(x)
- if (x < 1)
- fun_l8_n145(x)
- else
- fun_l8_n735(x)
- end
-end
-
-def fun_l7_n272(x)
- if (x < 1)
- fun_l8_n404(x)
- else
- fun_l8_n216(x)
- end
-end
-
-def fun_l7_n273(x)
- if (x < 1)
- fun_l8_n380(x)
- else
- fun_l8_n798(x)
- end
-end
-
-def fun_l7_n274(x)
- if (x < 1)
- fun_l8_n63(x)
- else
- fun_l8_n133(x)
- end
-end
-
-def fun_l7_n275(x)
- if (x < 1)
- fun_l8_n878(x)
- else
- fun_l8_n284(x)
- end
-end
-
-def fun_l7_n276(x)
- if (x < 1)
- fun_l8_n718(x)
- else
- fun_l8_n97(x)
- end
-end
-
-def fun_l7_n277(x)
- if (x < 1)
- fun_l8_n509(x)
- else
- fun_l8_n695(x)
- end
-end
-
-def fun_l7_n278(x)
- if (x < 1)
- fun_l8_n581(x)
- else
- fun_l8_n898(x)
- end
-end
-
-def fun_l7_n279(x)
- if (x < 1)
- fun_l8_n247(x)
- else
- fun_l8_n526(x)
- end
-end
-
-def fun_l7_n280(x)
- if (x < 1)
- fun_l8_n995(x)
- else
- fun_l8_n614(x)
- end
-end
-
-def fun_l7_n281(x)
- if (x < 1)
- fun_l8_n301(x)
- else
- fun_l8_n178(x)
- end
-end
-
-def fun_l7_n282(x)
- if (x < 1)
- fun_l8_n575(x)
- else
- fun_l8_n712(x)
- end
-end
-
-def fun_l7_n283(x)
- if (x < 1)
- fun_l8_n261(x)
- else
- fun_l8_n740(x)
- end
-end
-
-def fun_l7_n284(x)
- if (x < 1)
- fun_l8_n284(x)
- else
- fun_l8_n350(x)
- end
-end
-
-def fun_l7_n285(x)
- if (x < 1)
- fun_l8_n521(x)
- else
- fun_l8_n305(x)
- end
-end
-
-def fun_l7_n286(x)
- if (x < 1)
- fun_l8_n271(x)
- else
- fun_l8_n728(x)
- end
-end
-
-def fun_l7_n287(x)
- if (x < 1)
- fun_l8_n292(x)
- else
- fun_l8_n799(x)
- end
-end
-
-def fun_l7_n288(x)
- if (x < 1)
- fun_l8_n852(x)
- else
- fun_l8_n606(x)
- end
-end
-
-def fun_l7_n289(x)
- if (x < 1)
- fun_l8_n177(x)
- else
- fun_l8_n649(x)
- end
-end
-
-def fun_l7_n290(x)
- if (x < 1)
- fun_l8_n488(x)
- else
- fun_l8_n252(x)
- end
-end
-
-def fun_l7_n291(x)
- if (x < 1)
- fun_l8_n815(x)
- else
- fun_l8_n690(x)
- end
-end
-
-def fun_l7_n292(x)
- if (x < 1)
- fun_l8_n999(x)
- else
- fun_l8_n700(x)
- end
-end
-
-def fun_l7_n293(x)
- if (x < 1)
- fun_l8_n9(x)
- else
- fun_l8_n194(x)
- end
-end
-
-def fun_l7_n294(x)
- if (x < 1)
- fun_l8_n390(x)
- else
- fun_l8_n772(x)
- end
-end
-
-def fun_l7_n295(x)
- if (x < 1)
- fun_l8_n487(x)
- else
- fun_l8_n587(x)
- end
-end
-
-def fun_l7_n296(x)
- if (x < 1)
- fun_l8_n892(x)
- else
- fun_l8_n126(x)
- end
-end
-
-def fun_l7_n297(x)
- if (x < 1)
- fun_l8_n199(x)
- else
- fun_l8_n312(x)
- end
-end
-
-def fun_l7_n298(x)
- if (x < 1)
- fun_l8_n534(x)
- else
- fun_l8_n640(x)
- end
-end
-
-def fun_l7_n299(x)
- if (x < 1)
- fun_l8_n344(x)
- else
- fun_l8_n58(x)
- end
-end
-
-def fun_l7_n300(x)
- if (x < 1)
- fun_l8_n11(x)
- else
- fun_l8_n922(x)
- end
-end
-
-def fun_l7_n301(x)
- if (x < 1)
- fun_l8_n848(x)
- else
- fun_l8_n432(x)
- end
-end
-
-def fun_l7_n302(x)
- if (x < 1)
- fun_l8_n292(x)
- else
- fun_l8_n86(x)
- end
-end
-
-def fun_l7_n303(x)
- if (x < 1)
- fun_l8_n239(x)
- else
- fun_l8_n296(x)
- end
-end
-
-def fun_l7_n304(x)
- if (x < 1)
- fun_l8_n350(x)
- else
- fun_l8_n769(x)
- end
-end
-
-def fun_l7_n305(x)
- if (x < 1)
- fun_l8_n959(x)
- else
- fun_l8_n292(x)
- end
-end
-
-def fun_l7_n306(x)
- if (x < 1)
- fun_l8_n371(x)
- else
- fun_l8_n507(x)
- end
-end
-
-def fun_l7_n307(x)
- if (x < 1)
- fun_l8_n910(x)
- else
- fun_l8_n542(x)
- end
-end
-
-def fun_l7_n308(x)
- if (x < 1)
- fun_l8_n299(x)
- else
- fun_l8_n543(x)
- end
-end
-
-def fun_l7_n309(x)
- if (x < 1)
- fun_l8_n145(x)
- else
- fun_l8_n393(x)
- end
-end
-
-def fun_l7_n310(x)
- if (x < 1)
- fun_l8_n1(x)
- else
- fun_l8_n810(x)
- end
-end
-
-def fun_l7_n311(x)
- if (x < 1)
- fun_l8_n866(x)
- else
- fun_l8_n519(x)
- end
-end
-
-def fun_l7_n312(x)
- if (x < 1)
- fun_l8_n730(x)
- else
- fun_l8_n912(x)
- end
-end
-
-def fun_l7_n313(x)
- if (x < 1)
- fun_l8_n128(x)
- else
- fun_l8_n3(x)
- end
-end
-
-def fun_l7_n314(x)
- if (x < 1)
- fun_l8_n393(x)
- else
- fun_l8_n887(x)
- end
-end
-
-def fun_l7_n315(x)
- if (x < 1)
- fun_l8_n165(x)
- else
- fun_l8_n540(x)
- end
-end
-
-def fun_l7_n316(x)
- if (x < 1)
- fun_l8_n641(x)
- else
- fun_l8_n255(x)
- end
-end
-
-def fun_l7_n317(x)
- if (x < 1)
- fun_l8_n265(x)
- else
- fun_l8_n754(x)
- end
-end
-
-def fun_l7_n318(x)
- if (x < 1)
- fun_l8_n433(x)
- else
- fun_l8_n163(x)
- end
-end
-
-def fun_l7_n319(x)
- if (x < 1)
- fun_l8_n409(x)
- else
- fun_l8_n110(x)
- end
-end
-
-def fun_l7_n320(x)
- if (x < 1)
- fun_l8_n704(x)
- else
- fun_l8_n959(x)
- end
-end
-
-def fun_l7_n321(x)
- if (x < 1)
- fun_l8_n334(x)
- else
- fun_l8_n280(x)
- end
-end
-
-def fun_l7_n322(x)
- if (x < 1)
- fun_l8_n107(x)
- else
- fun_l8_n403(x)
- end
-end
-
-def fun_l7_n323(x)
- if (x < 1)
- fun_l8_n108(x)
- else
- fun_l8_n426(x)
- end
-end
-
-def fun_l7_n324(x)
- if (x < 1)
- fun_l8_n310(x)
- else
- fun_l8_n968(x)
- end
-end
-
-def fun_l7_n325(x)
- if (x < 1)
- fun_l8_n600(x)
- else
- fun_l8_n850(x)
- end
-end
-
-def fun_l7_n326(x)
- if (x < 1)
- fun_l8_n736(x)
- else
- fun_l8_n61(x)
- end
-end
-
-def fun_l7_n327(x)
- if (x < 1)
- fun_l8_n86(x)
- else
- fun_l8_n948(x)
- end
-end
-
-def fun_l7_n328(x)
- if (x < 1)
- fun_l8_n625(x)
- else
- fun_l8_n644(x)
- end
-end
-
-def fun_l7_n329(x)
- if (x < 1)
- fun_l8_n507(x)
- else
- fun_l8_n624(x)
- end
-end
-
-def fun_l7_n330(x)
- if (x < 1)
- fun_l8_n956(x)
- else
- fun_l8_n281(x)
- end
-end
-
-def fun_l7_n331(x)
- if (x < 1)
- fun_l8_n72(x)
- else
- fun_l8_n695(x)
- end
-end
-
-def fun_l7_n332(x)
- if (x < 1)
- fun_l8_n445(x)
- else
- fun_l8_n465(x)
- end
-end
-
-def fun_l7_n333(x)
- if (x < 1)
- fun_l8_n438(x)
- else
- fun_l8_n698(x)
- end
-end
-
-def fun_l7_n334(x)
- if (x < 1)
- fun_l8_n242(x)
- else
- fun_l8_n837(x)
- end
-end
-
-def fun_l7_n335(x)
- if (x < 1)
- fun_l8_n299(x)
- else
- fun_l8_n312(x)
- end
-end
-
-def fun_l7_n336(x)
- if (x < 1)
- fun_l8_n264(x)
- else
- fun_l8_n330(x)
- end
-end
-
-def fun_l7_n337(x)
- if (x < 1)
- fun_l8_n251(x)
- else
- fun_l8_n459(x)
- end
-end
-
-def fun_l7_n338(x)
- if (x < 1)
- fun_l8_n876(x)
- else
- fun_l8_n689(x)
- end
-end
-
-def fun_l7_n339(x)
- if (x < 1)
- fun_l8_n547(x)
- else
- fun_l8_n745(x)
- end
-end
-
-def fun_l7_n340(x)
- if (x < 1)
- fun_l8_n493(x)
- else
- fun_l8_n877(x)
- end
-end
-
-def fun_l7_n341(x)
- if (x < 1)
- fun_l8_n143(x)
- else
- fun_l8_n429(x)
- end
-end
-
-def fun_l7_n342(x)
- if (x < 1)
- fun_l8_n650(x)
- else
- fun_l8_n384(x)
- end
-end
-
-def fun_l7_n343(x)
- if (x < 1)
- fun_l8_n897(x)
- else
- fun_l8_n980(x)
- end
-end
-
-def fun_l7_n344(x)
- if (x < 1)
- fun_l8_n699(x)
- else
- fun_l8_n673(x)
- end
-end
-
-def fun_l7_n345(x)
- if (x < 1)
- fun_l8_n25(x)
- else
- fun_l8_n342(x)
- end
-end
-
-def fun_l7_n346(x)
- if (x < 1)
- fun_l8_n345(x)
- else
- fun_l8_n140(x)
- end
-end
-
-def fun_l7_n347(x)
- if (x < 1)
- fun_l8_n661(x)
- else
- fun_l8_n153(x)
- end
-end
-
-def fun_l7_n348(x)
- if (x < 1)
- fun_l8_n477(x)
- else
- fun_l8_n460(x)
- end
-end
-
-def fun_l7_n349(x)
- if (x < 1)
- fun_l8_n641(x)
- else
- fun_l8_n941(x)
- end
-end
-
-def fun_l7_n350(x)
- if (x < 1)
- fun_l8_n952(x)
- else
- fun_l8_n886(x)
- end
-end
-
-def fun_l7_n351(x)
- if (x < 1)
- fun_l8_n338(x)
- else
- fun_l8_n655(x)
- end
-end
-
-def fun_l7_n352(x)
- if (x < 1)
- fun_l8_n717(x)
- else
- fun_l8_n314(x)
- end
-end
-
-def fun_l7_n353(x)
- if (x < 1)
- fun_l8_n645(x)
- else
- fun_l8_n464(x)
- end
-end
-
-def fun_l7_n354(x)
- if (x < 1)
- fun_l8_n114(x)
- else
- fun_l8_n816(x)
- end
-end
-
-def fun_l7_n355(x)
- if (x < 1)
- fun_l8_n18(x)
- else
- fun_l8_n173(x)
- end
-end
-
-def fun_l7_n356(x)
- if (x < 1)
- fun_l8_n214(x)
- else
- fun_l8_n834(x)
- end
-end
-
-def fun_l7_n357(x)
- if (x < 1)
- fun_l8_n6(x)
- else
- fun_l8_n161(x)
- end
-end
-
-def fun_l7_n358(x)
- if (x < 1)
- fun_l8_n823(x)
- else
- fun_l8_n695(x)
- end
-end
-
-def fun_l7_n359(x)
- if (x < 1)
- fun_l8_n86(x)
- else
- fun_l8_n174(x)
- end
-end
-
-def fun_l7_n360(x)
- if (x < 1)
- fun_l8_n904(x)
- else
- fun_l8_n240(x)
- end
-end
-
-def fun_l7_n361(x)
- if (x < 1)
- fun_l8_n857(x)
- else
- fun_l8_n494(x)
- end
-end
-
-def fun_l7_n362(x)
- if (x < 1)
- fun_l8_n780(x)
- else
- fun_l8_n186(x)
- end
-end
-
-def fun_l7_n363(x)
- if (x < 1)
- fun_l8_n575(x)
- else
- fun_l8_n510(x)
- end
-end
-
-def fun_l7_n364(x)
- if (x < 1)
- fun_l8_n412(x)
- else
- fun_l8_n153(x)
- end
-end
-
-def fun_l7_n365(x)
- if (x < 1)
- fun_l8_n840(x)
- else
- fun_l8_n199(x)
- end
-end
-
-def fun_l7_n366(x)
- if (x < 1)
- fun_l8_n162(x)
- else
- fun_l8_n971(x)
- end
-end
-
-def fun_l7_n367(x)
- if (x < 1)
- fun_l8_n200(x)
- else
- fun_l8_n128(x)
- end
-end
-
-def fun_l7_n368(x)
- if (x < 1)
- fun_l8_n404(x)
- else
- fun_l8_n657(x)
- end
-end
-
-def fun_l7_n369(x)
- if (x < 1)
- fun_l8_n631(x)
- else
- fun_l8_n714(x)
- end
-end
-
-def fun_l7_n370(x)
- if (x < 1)
- fun_l8_n177(x)
- else
- fun_l8_n718(x)
- end
-end
-
-def fun_l7_n371(x)
- if (x < 1)
- fun_l8_n284(x)
- else
- fun_l8_n474(x)
- end
-end
-
-def fun_l7_n372(x)
- if (x < 1)
- fun_l8_n138(x)
- else
- fun_l8_n461(x)
- end
-end
-
-def fun_l7_n373(x)
- if (x < 1)
- fun_l8_n78(x)
- else
- fun_l8_n750(x)
- end
-end
-
-def fun_l7_n374(x)
- if (x < 1)
- fun_l8_n231(x)
- else
- fun_l8_n648(x)
- end
-end
-
-def fun_l7_n375(x)
- if (x < 1)
- fun_l8_n238(x)
- else
- fun_l8_n644(x)
- end
-end
-
-def fun_l7_n376(x)
- if (x < 1)
- fun_l8_n509(x)
- else
- fun_l8_n354(x)
- end
-end
-
-def fun_l7_n377(x)
- if (x < 1)
- fun_l8_n332(x)
- else
- fun_l8_n739(x)
- end
-end
-
-def fun_l7_n378(x)
- if (x < 1)
- fun_l8_n76(x)
- else
- fun_l8_n505(x)
- end
-end
-
-def fun_l7_n379(x)
- if (x < 1)
- fun_l8_n781(x)
- else
- fun_l8_n918(x)
- end
-end
-
-def fun_l7_n380(x)
- if (x < 1)
- fun_l8_n854(x)
- else
- fun_l8_n85(x)
- end
-end
-
-def fun_l7_n381(x)
- if (x < 1)
- fun_l8_n67(x)
- else
- fun_l8_n690(x)
- end
-end
-
-def fun_l7_n382(x)
- if (x < 1)
- fun_l8_n425(x)
- else
- fun_l8_n643(x)
- end
-end
-
-def fun_l7_n383(x)
- if (x < 1)
- fun_l8_n210(x)
- else
- fun_l8_n533(x)
- end
-end
-
-def fun_l7_n384(x)
- if (x < 1)
- fun_l8_n469(x)
- else
- fun_l8_n274(x)
- end
-end
-
-def fun_l7_n385(x)
- if (x < 1)
- fun_l8_n398(x)
- else
- fun_l8_n583(x)
- end
-end
-
-def fun_l7_n386(x)
- if (x < 1)
- fun_l8_n483(x)
- else
- fun_l8_n80(x)
- end
-end
-
-def fun_l7_n387(x)
- if (x < 1)
- fun_l8_n557(x)
- else
- fun_l8_n165(x)
- end
-end
-
-def fun_l7_n388(x)
- if (x < 1)
- fun_l8_n335(x)
- else
- fun_l8_n656(x)
- end
-end
-
-def fun_l7_n389(x)
- if (x < 1)
- fun_l8_n810(x)
- else
- fun_l8_n586(x)
- end
-end
-
-def fun_l7_n390(x)
- if (x < 1)
- fun_l8_n90(x)
- else
- fun_l8_n788(x)
- end
-end
-
-def fun_l7_n391(x)
- if (x < 1)
- fun_l8_n709(x)
- else
- fun_l8_n948(x)
- end
-end
-
-def fun_l7_n392(x)
- if (x < 1)
- fun_l8_n139(x)
- else
- fun_l8_n631(x)
- end
-end
-
-def fun_l7_n393(x)
- if (x < 1)
- fun_l8_n341(x)
- else
- fun_l8_n506(x)
- end
-end
-
-def fun_l7_n394(x)
- if (x < 1)
- fun_l8_n435(x)
- else
- fun_l8_n178(x)
- end
-end
-
-def fun_l7_n395(x)
- if (x < 1)
- fun_l8_n186(x)
- else
- fun_l8_n58(x)
- end
-end
-
-def fun_l7_n396(x)
- if (x < 1)
- fun_l8_n512(x)
- else
- fun_l8_n87(x)
- end
-end
-
-def fun_l7_n397(x)
- if (x < 1)
- fun_l8_n763(x)
- else
- fun_l8_n220(x)
- end
-end
-
-def fun_l7_n398(x)
- if (x < 1)
- fun_l8_n266(x)
- else
- fun_l8_n231(x)
- end
-end
-
-def fun_l7_n399(x)
- if (x < 1)
- fun_l8_n308(x)
- else
- fun_l8_n512(x)
- end
-end
-
-def fun_l7_n400(x)
- if (x < 1)
- fun_l8_n26(x)
- else
- fun_l8_n228(x)
- end
-end
-
-def fun_l7_n401(x)
- if (x < 1)
- fun_l8_n143(x)
- else
- fun_l8_n826(x)
- end
-end
-
-def fun_l7_n402(x)
- if (x < 1)
- fun_l8_n893(x)
- else
- fun_l8_n334(x)
- end
-end
-
-def fun_l7_n403(x)
- if (x < 1)
- fun_l8_n9(x)
- else
- fun_l8_n867(x)
- end
-end
-
-def fun_l7_n404(x)
- if (x < 1)
- fun_l8_n85(x)
- else
- fun_l8_n279(x)
- end
-end
-
-def fun_l7_n405(x)
- if (x < 1)
- fun_l8_n30(x)
- else
- fun_l8_n85(x)
- end
-end
-
-def fun_l7_n406(x)
- if (x < 1)
- fun_l8_n38(x)
- else
- fun_l8_n979(x)
- end
-end
-
-def fun_l7_n407(x)
- if (x < 1)
- fun_l8_n630(x)
- else
- fun_l8_n262(x)
- end
-end
-
-def fun_l7_n408(x)
- if (x < 1)
- fun_l8_n430(x)
- else
- fun_l8_n178(x)
- end
-end
-
-def fun_l7_n409(x)
- if (x < 1)
- fun_l8_n131(x)
- else
- fun_l8_n66(x)
- end
-end
-
-def fun_l7_n410(x)
- if (x < 1)
- fun_l8_n373(x)
- else
- fun_l8_n514(x)
- end
-end
-
-def fun_l7_n411(x)
- if (x < 1)
- fun_l8_n334(x)
- else
- fun_l8_n591(x)
- end
-end
-
-def fun_l7_n412(x)
- if (x < 1)
- fun_l8_n619(x)
- else
- fun_l8_n490(x)
- end
-end
-
-def fun_l7_n413(x)
- if (x < 1)
- fun_l8_n318(x)
- else
- fun_l8_n456(x)
- end
-end
-
-def fun_l7_n414(x)
- if (x < 1)
- fun_l8_n576(x)
- else
- fun_l8_n638(x)
- end
-end
-
-def fun_l7_n415(x)
- if (x < 1)
- fun_l8_n407(x)
- else
- fun_l8_n44(x)
- end
-end
-
-def fun_l7_n416(x)
- if (x < 1)
- fun_l8_n970(x)
- else
- fun_l8_n564(x)
- end
-end
-
-def fun_l7_n417(x)
- if (x < 1)
- fun_l8_n163(x)
- else
- fun_l8_n533(x)
- end
-end
-
-def fun_l7_n418(x)
- if (x < 1)
- fun_l8_n216(x)
- else
- fun_l8_n604(x)
- end
-end
-
-def fun_l7_n419(x)
- if (x < 1)
- fun_l8_n505(x)
- else
- fun_l8_n620(x)
- end
-end
-
-def fun_l7_n420(x)
- if (x < 1)
- fun_l8_n746(x)
- else
- fun_l8_n998(x)
- end
-end
-
-def fun_l7_n421(x)
- if (x < 1)
- fun_l8_n266(x)
- else
- fun_l8_n762(x)
- end
-end
-
-def fun_l7_n422(x)
- if (x < 1)
- fun_l8_n216(x)
- else
- fun_l8_n995(x)
- end
-end
-
-def fun_l7_n423(x)
- if (x < 1)
- fun_l8_n824(x)
- else
- fun_l8_n349(x)
- end
-end
-
-def fun_l7_n424(x)
- if (x < 1)
- fun_l8_n177(x)
- else
- fun_l8_n61(x)
- end
-end
-
-def fun_l7_n425(x)
- if (x < 1)
- fun_l8_n286(x)
- else
- fun_l8_n213(x)
- end
-end
-
-def fun_l7_n426(x)
- if (x < 1)
- fun_l8_n794(x)
- else
- fun_l8_n428(x)
- end
-end
-
-def fun_l7_n427(x)
- if (x < 1)
- fun_l8_n404(x)
- else
- fun_l8_n202(x)
- end
-end
-
-def fun_l7_n428(x)
- if (x < 1)
- fun_l8_n571(x)
- else
- fun_l8_n812(x)
- end
-end
-
-def fun_l7_n429(x)
- if (x < 1)
- fun_l8_n165(x)
- else
- fun_l8_n277(x)
- end
-end
-
-def fun_l7_n430(x)
- if (x < 1)
- fun_l8_n138(x)
- else
- fun_l8_n230(x)
- end
-end
-
-def fun_l7_n431(x)
- if (x < 1)
- fun_l8_n832(x)
- else
- fun_l8_n78(x)
- end
-end
-
-def fun_l7_n432(x)
- if (x < 1)
- fun_l8_n866(x)
- else
- fun_l8_n137(x)
- end
-end
-
-def fun_l7_n433(x)
- if (x < 1)
- fun_l8_n92(x)
- else
- fun_l8_n638(x)
- end
-end
-
-def fun_l7_n434(x)
- if (x < 1)
- fun_l8_n788(x)
- else
- fun_l8_n991(x)
- end
-end
-
-def fun_l7_n435(x)
- if (x < 1)
- fun_l8_n584(x)
- else
- fun_l8_n783(x)
- end
-end
-
-def fun_l7_n436(x)
- if (x < 1)
- fun_l8_n786(x)
- else
- fun_l8_n771(x)
- end
-end
-
-def fun_l7_n437(x)
- if (x < 1)
- fun_l8_n650(x)
- else
- fun_l8_n684(x)
- end
-end
-
-def fun_l7_n438(x)
- if (x < 1)
- fun_l8_n964(x)
- else
- fun_l8_n738(x)
- end
-end
-
-def fun_l7_n439(x)
- if (x < 1)
- fun_l8_n356(x)
- else
- fun_l8_n979(x)
- end
-end
-
-def fun_l7_n440(x)
- if (x < 1)
- fun_l8_n630(x)
- else
- fun_l8_n79(x)
- end
-end
-
-def fun_l7_n441(x)
- if (x < 1)
- fun_l8_n326(x)
- else
- fun_l8_n667(x)
- end
-end
-
-def fun_l7_n442(x)
- if (x < 1)
- fun_l8_n561(x)
- else
- fun_l8_n263(x)
- end
-end
-
-def fun_l7_n443(x)
- if (x < 1)
- fun_l8_n62(x)
- else
- fun_l8_n528(x)
- end
-end
-
-def fun_l7_n444(x)
- if (x < 1)
- fun_l8_n156(x)
- else
- fun_l8_n496(x)
- end
-end
-
-def fun_l7_n445(x)
- if (x < 1)
- fun_l8_n971(x)
- else
- fun_l8_n853(x)
- end
-end
-
-def fun_l7_n446(x)
- if (x < 1)
- fun_l8_n217(x)
- else
- fun_l8_n985(x)
- end
-end
-
-def fun_l7_n447(x)
- if (x < 1)
- fun_l8_n569(x)
- else
- fun_l8_n320(x)
- end
-end
-
-def fun_l7_n448(x)
- if (x < 1)
- fun_l8_n133(x)
- else
- fun_l8_n417(x)
- end
-end
-
-def fun_l7_n449(x)
- if (x < 1)
- fun_l8_n369(x)
- else
- fun_l8_n25(x)
- end
-end
-
-def fun_l7_n450(x)
- if (x < 1)
- fun_l8_n735(x)
- else
- fun_l8_n573(x)
- end
-end
-
-def fun_l7_n451(x)
- if (x < 1)
- fun_l8_n764(x)
- else
- fun_l8_n247(x)
- end
-end
-
-def fun_l7_n452(x)
- if (x < 1)
- fun_l8_n512(x)
- else
- fun_l8_n274(x)
- end
-end
-
-def fun_l7_n453(x)
- if (x < 1)
- fun_l8_n388(x)
- else
- fun_l8_n438(x)
- end
-end
-
-def fun_l7_n454(x)
- if (x < 1)
- fun_l8_n565(x)
- else
- fun_l8_n449(x)
- end
-end
-
-def fun_l7_n455(x)
- if (x < 1)
- fun_l8_n771(x)
- else
- fun_l8_n827(x)
- end
-end
-
-def fun_l7_n456(x)
- if (x < 1)
- fun_l8_n538(x)
- else
- fun_l8_n270(x)
- end
-end
-
-def fun_l7_n457(x)
- if (x < 1)
- fun_l8_n288(x)
- else
- fun_l8_n325(x)
- end
-end
-
-def fun_l7_n458(x)
- if (x < 1)
- fun_l8_n345(x)
- else
- fun_l8_n334(x)
- end
-end
-
-def fun_l7_n459(x)
- if (x < 1)
- fun_l8_n696(x)
- else
- fun_l8_n440(x)
- end
-end
-
-def fun_l7_n460(x)
- if (x < 1)
- fun_l8_n509(x)
- else
- fun_l8_n580(x)
- end
-end
-
-def fun_l7_n461(x)
- if (x < 1)
- fun_l8_n254(x)
- else
- fun_l8_n162(x)
- end
-end
-
-def fun_l7_n462(x)
- if (x < 1)
- fun_l8_n541(x)
- else
- fun_l8_n493(x)
- end
-end
-
-def fun_l7_n463(x)
- if (x < 1)
- fun_l8_n371(x)
- else
- fun_l8_n302(x)
- end
-end
-
-def fun_l7_n464(x)
- if (x < 1)
- fun_l8_n44(x)
- else
- fun_l8_n677(x)
- end
-end
-
-def fun_l7_n465(x)
- if (x < 1)
- fun_l8_n312(x)
- else
- fun_l8_n716(x)
- end
-end
-
-def fun_l7_n466(x)
- if (x < 1)
- fun_l8_n252(x)
- else
- fun_l8_n827(x)
- end
-end
-
-def fun_l7_n467(x)
- if (x < 1)
- fun_l8_n871(x)
- else
- fun_l8_n962(x)
- end
-end
-
-def fun_l7_n468(x)
- if (x < 1)
- fun_l8_n323(x)
- else
- fun_l8_n813(x)
- end
-end
-
-def fun_l7_n469(x)
- if (x < 1)
- fun_l8_n100(x)
- else
- fun_l8_n905(x)
- end
-end
-
-def fun_l7_n470(x)
- if (x < 1)
- fun_l8_n95(x)
- else
- fun_l8_n96(x)
- end
-end
-
-def fun_l7_n471(x)
- if (x < 1)
- fun_l8_n398(x)
- else
- fun_l8_n40(x)
- end
-end
-
-def fun_l7_n472(x)
- if (x < 1)
- fun_l8_n280(x)
- else
- fun_l8_n34(x)
- end
-end
-
-def fun_l7_n473(x)
- if (x < 1)
- fun_l8_n262(x)
- else
- fun_l8_n399(x)
- end
-end
-
-def fun_l7_n474(x)
- if (x < 1)
- fun_l8_n126(x)
- else
- fun_l8_n208(x)
- end
-end
-
-def fun_l7_n475(x)
- if (x < 1)
- fun_l8_n371(x)
- else
- fun_l8_n697(x)
- end
-end
-
-def fun_l7_n476(x)
- if (x < 1)
- fun_l8_n617(x)
- else
- fun_l8_n822(x)
- end
-end
-
-def fun_l7_n477(x)
- if (x < 1)
- fun_l8_n24(x)
- else
- fun_l8_n300(x)
- end
-end
-
-def fun_l7_n478(x)
- if (x < 1)
- fun_l8_n864(x)
- else
- fun_l8_n357(x)
- end
-end
-
-def fun_l7_n479(x)
- if (x < 1)
- fun_l8_n231(x)
- else
- fun_l8_n892(x)
- end
-end
-
-def fun_l7_n480(x)
- if (x < 1)
- fun_l8_n200(x)
- else
- fun_l8_n49(x)
- end
-end
-
-def fun_l7_n481(x)
- if (x < 1)
- fun_l8_n43(x)
- else
- fun_l8_n86(x)
- end
-end
-
-def fun_l7_n482(x)
- if (x < 1)
- fun_l8_n617(x)
- else
- fun_l8_n752(x)
- end
-end
-
-def fun_l7_n483(x)
- if (x < 1)
- fun_l8_n65(x)
- else
- fun_l8_n796(x)
- end
-end
-
-def fun_l7_n484(x)
- if (x < 1)
- fun_l8_n960(x)
- else
- fun_l8_n174(x)
- end
-end
-
-def fun_l7_n485(x)
- if (x < 1)
- fun_l8_n383(x)
- else
- fun_l8_n50(x)
- end
-end
-
-def fun_l7_n486(x)
- if (x < 1)
- fun_l8_n269(x)
- else
- fun_l8_n413(x)
- end
-end
-
-def fun_l7_n487(x)
- if (x < 1)
- fun_l8_n762(x)
- else
- fun_l8_n368(x)
- end
-end
-
-def fun_l7_n488(x)
- if (x < 1)
- fun_l8_n635(x)
- else
- fun_l8_n900(x)
- end
-end
-
-def fun_l7_n489(x)
- if (x < 1)
- fun_l8_n707(x)
- else
- fun_l8_n376(x)
- end
-end
-
-def fun_l7_n490(x)
- if (x < 1)
- fun_l8_n215(x)
- else
- fun_l8_n255(x)
- end
-end
-
-def fun_l7_n491(x)
- if (x < 1)
- fun_l8_n730(x)
- else
- fun_l8_n489(x)
- end
-end
-
-def fun_l7_n492(x)
- if (x < 1)
- fun_l8_n896(x)
- else
- fun_l8_n501(x)
- end
-end
-
-def fun_l7_n493(x)
- if (x < 1)
- fun_l8_n359(x)
- else
- fun_l8_n876(x)
- end
-end
-
-def fun_l7_n494(x)
- if (x < 1)
- fun_l8_n13(x)
- else
- fun_l8_n669(x)
- end
-end
-
-def fun_l7_n495(x)
- if (x < 1)
- fun_l8_n442(x)
- else
- fun_l8_n975(x)
- end
-end
-
-def fun_l7_n496(x)
- if (x < 1)
- fun_l8_n349(x)
- else
- fun_l8_n240(x)
- end
-end
-
-def fun_l7_n497(x)
- if (x < 1)
- fun_l8_n174(x)
- else
- fun_l8_n416(x)
- end
-end
-
-def fun_l7_n498(x)
- if (x < 1)
- fun_l8_n141(x)
- else
- fun_l8_n231(x)
- end
-end
-
-def fun_l7_n499(x)
- if (x < 1)
- fun_l8_n868(x)
- else
- fun_l8_n370(x)
- end
-end
-
-def fun_l7_n500(x)
- if (x < 1)
- fun_l8_n888(x)
- else
- fun_l8_n525(x)
- end
-end
-
-def fun_l7_n501(x)
- if (x < 1)
- fun_l8_n418(x)
- else
- fun_l8_n402(x)
- end
-end
-
-def fun_l7_n502(x)
- if (x < 1)
- fun_l8_n910(x)
- else
- fun_l8_n308(x)
- end
-end
-
-def fun_l7_n503(x)
- if (x < 1)
- fun_l8_n435(x)
- else
- fun_l8_n106(x)
- end
-end
-
-def fun_l7_n504(x)
- if (x < 1)
- fun_l8_n716(x)
- else
- fun_l8_n768(x)
- end
-end
-
-def fun_l7_n505(x)
- if (x < 1)
- fun_l8_n690(x)
- else
- fun_l8_n382(x)
- end
-end
-
-def fun_l7_n506(x)
- if (x < 1)
- fun_l8_n786(x)
- else
- fun_l8_n270(x)
- end
-end
-
-def fun_l7_n507(x)
- if (x < 1)
- fun_l8_n317(x)
- else
- fun_l8_n802(x)
- end
-end
-
-def fun_l7_n508(x)
- if (x < 1)
- fun_l8_n423(x)
- else
- fun_l8_n91(x)
- end
-end
-
-def fun_l7_n509(x)
- if (x < 1)
- fun_l8_n853(x)
- else
- fun_l8_n434(x)
- end
-end
-
-def fun_l7_n510(x)
- if (x < 1)
- fun_l8_n691(x)
- else
- fun_l8_n458(x)
- end
-end
-
-def fun_l7_n511(x)
- if (x < 1)
- fun_l8_n806(x)
- else
- fun_l8_n989(x)
- end
-end
-
-def fun_l7_n512(x)
- if (x < 1)
- fun_l8_n696(x)
- else
- fun_l8_n234(x)
- end
-end
-
-def fun_l7_n513(x)
- if (x < 1)
- fun_l8_n370(x)
- else
- fun_l8_n440(x)
- end
-end
-
-def fun_l7_n514(x)
- if (x < 1)
- fun_l8_n889(x)
- else
- fun_l8_n306(x)
- end
-end
-
-def fun_l7_n515(x)
- if (x < 1)
- fun_l8_n147(x)
- else
- fun_l8_n527(x)
- end
-end
-
-def fun_l7_n516(x)
- if (x < 1)
- fun_l8_n18(x)
- else
- fun_l8_n120(x)
- end
-end
-
-def fun_l7_n517(x)
- if (x < 1)
- fun_l8_n93(x)
- else
- fun_l8_n861(x)
- end
-end
-
-def fun_l7_n518(x)
- if (x < 1)
- fun_l8_n954(x)
- else
- fun_l8_n864(x)
- end
-end
-
-def fun_l7_n519(x)
- if (x < 1)
- fun_l8_n886(x)
- else
- fun_l8_n227(x)
- end
-end
-
-def fun_l7_n520(x)
- if (x < 1)
- fun_l8_n525(x)
- else
- fun_l8_n73(x)
- end
-end
-
-def fun_l7_n521(x)
- if (x < 1)
- fun_l8_n550(x)
- else
- fun_l8_n638(x)
- end
-end
-
-def fun_l7_n522(x)
- if (x < 1)
- fun_l8_n36(x)
- else
- fun_l8_n511(x)
- end
-end
-
-def fun_l7_n523(x)
- if (x < 1)
- fun_l8_n346(x)
- else
- fun_l8_n257(x)
- end
-end
-
-def fun_l7_n524(x)
- if (x < 1)
- fun_l8_n973(x)
- else
- fun_l8_n704(x)
- end
-end
-
-def fun_l7_n525(x)
- if (x < 1)
- fun_l8_n21(x)
- else
- fun_l8_n354(x)
- end
-end
-
-def fun_l7_n526(x)
- if (x < 1)
- fun_l8_n394(x)
- else
- fun_l8_n461(x)
- end
-end
-
-def fun_l7_n527(x)
- if (x < 1)
- fun_l8_n444(x)
- else
- fun_l8_n333(x)
- end
-end
-
-def fun_l7_n528(x)
- if (x < 1)
- fun_l8_n743(x)
- else
- fun_l8_n579(x)
- end
-end
-
-def fun_l7_n529(x)
- if (x < 1)
- fun_l8_n135(x)
- else
- fun_l8_n69(x)
- end
-end
-
-def fun_l7_n530(x)
- if (x < 1)
- fun_l8_n66(x)
- else
- fun_l8_n6(x)
- end
-end
-
-def fun_l7_n531(x)
- if (x < 1)
- fun_l8_n84(x)
- else
- fun_l8_n392(x)
- end
-end
-
-def fun_l7_n532(x)
- if (x < 1)
- fun_l8_n178(x)
- else
- fun_l8_n227(x)
- end
-end
-
-def fun_l7_n533(x)
- if (x < 1)
- fun_l8_n695(x)
- else
- fun_l8_n696(x)
- end
-end
-
-def fun_l7_n534(x)
- if (x < 1)
- fun_l8_n266(x)
- else
- fun_l8_n8(x)
- end
-end
-
-def fun_l7_n535(x)
- if (x < 1)
- fun_l8_n806(x)
- else
- fun_l8_n878(x)
- end
-end
-
-def fun_l7_n536(x)
- if (x < 1)
- fun_l8_n775(x)
- else
- fun_l8_n778(x)
- end
-end
-
-def fun_l7_n537(x)
- if (x < 1)
- fun_l8_n133(x)
- else
- fun_l8_n552(x)
- end
-end
-
-def fun_l7_n538(x)
- if (x < 1)
- fun_l8_n71(x)
- else
- fun_l8_n786(x)
- end
-end
-
-def fun_l7_n539(x)
- if (x < 1)
- fun_l8_n679(x)
- else
- fun_l8_n407(x)
- end
-end
-
-def fun_l7_n540(x)
- if (x < 1)
- fun_l8_n532(x)
- else
- fun_l8_n75(x)
- end
-end
-
-def fun_l7_n541(x)
- if (x < 1)
- fun_l8_n367(x)
- else
- fun_l8_n505(x)
- end
-end
-
-def fun_l7_n542(x)
- if (x < 1)
- fun_l8_n74(x)
- else
- fun_l8_n374(x)
- end
-end
-
-def fun_l7_n543(x)
- if (x < 1)
- fun_l8_n207(x)
- else
- fun_l8_n874(x)
- end
-end
-
-def fun_l7_n544(x)
- if (x < 1)
- fun_l8_n774(x)
- else
- fun_l8_n750(x)
- end
-end
-
-def fun_l7_n545(x)
- if (x < 1)
- fun_l8_n503(x)
- else
- fun_l8_n933(x)
- end
-end
-
-def fun_l7_n546(x)
- if (x < 1)
- fun_l8_n125(x)
- else
- fun_l8_n570(x)
- end
-end
-
-def fun_l7_n547(x)
- if (x < 1)
- fun_l8_n743(x)
- else
- fun_l8_n506(x)
- end
-end
-
-def fun_l7_n548(x)
- if (x < 1)
- fun_l8_n297(x)
- else
- fun_l8_n70(x)
- end
-end
-
-def fun_l7_n549(x)
- if (x < 1)
- fun_l8_n692(x)
- else
- fun_l8_n652(x)
- end
-end
-
-def fun_l7_n550(x)
- if (x < 1)
- fun_l8_n446(x)
- else
- fun_l8_n432(x)
- end
-end
-
-def fun_l7_n551(x)
- if (x < 1)
- fun_l8_n947(x)
- else
- fun_l8_n429(x)
- end
-end
-
-def fun_l7_n552(x)
- if (x < 1)
- fun_l8_n417(x)
- else
- fun_l8_n136(x)
- end
-end
-
-def fun_l7_n553(x)
- if (x < 1)
- fun_l8_n236(x)
- else
- fun_l8_n291(x)
- end
-end
-
-def fun_l7_n554(x)
- if (x < 1)
- fun_l8_n60(x)
- else
- fun_l8_n328(x)
- end
-end
-
-def fun_l7_n555(x)
- if (x < 1)
- fun_l8_n97(x)
- else
- fun_l8_n461(x)
- end
-end
-
-def fun_l7_n556(x)
- if (x < 1)
- fun_l8_n158(x)
- else
- fun_l8_n603(x)
- end
-end
-
-def fun_l7_n557(x)
- if (x < 1)
- fun_l8_n328(x)
- else
- fun_l8_n725(x)
- end
-end
-
-def fun_l7_n558(x)
- if (x < 1)
- fun_l8_n25(x)
- else
- fun_l8_n933(x)
- end
-end
-
-def fun_l7_n559(x)
- if (x < 1)
- fun_l8_n352(x)
- else
- fun_l8_n552(x)
- end
-end
-
-def fun_l7_n560(x)
- if (x < 1)
- fun_l8_n427(x)
- else
- fun_l8_n91(x)
- end
-end
-
-def fun_l7_n561(x)
- if (x < 1)
- fun_l8_n293(x)
- else
- fun_l8_n749(x)
- end
-end
-
-def fun_l7_n562(x)
- if (x < 1)
- fun_l8_n672(x)
- else
- fun_l8_n905(x)
- end
-end
-
-def fun_l7_n563(x)
- if (x < 1)
- fun_l8_n201(x)
- else
- fun_l8_n668(x)
- end
-end
-
-def fun_l7_n564(x)
- if (x < 1)
- fun_l8_n109(x)
- else
- fun_l8_n401(x)
- end
-end
-
-def fun_l7_n565(x)
- if (x < 1)
- fun_l8_n678(x)
- else
- fun_l8_n890(x)
- end
-end
-
-def fun_l7_n566(x)
- if (x < 1)
- fun_l8_n876(x)
- else
- fun_l8_n129(x)
- end
-end
-
-def fun_l7_n567(x)
- if (x < 1)
- fun_l8_n908(x)
- else
- fun_l8_n979(x)
- end
-end
-
-def fun_l7_n568(x)
- if (x < 1)
- fun_l8_n899(x)
- else
- fun_l8_n792(x)
- end
-end
-
-def fun_l7_n569(x)
- if (x < 1)
- fun_l8_n742(x)
- else
- fun_l8_n441(x)
- end
-end
-
-def fun_l7_n570(x)
- if (x < 1)
- fun_l8_n338(x)
- else
- fun_l8_n877(x)
- end
-end
-
-def fun_l7_n571(x)
- if (x < 1)
- fun_l8_n684(x)
- else
- fun_l8_n167(x)
- end
-end
-
-def fun_l7_n572(x)
- if (x < 1)
- fun_l8_n366(x)
- else
- fun_l8_n239(x)
- end
-end
-
-def fun_l7_n573(x)
- if (x < 1)
- fun_l8_n925(x)
- else
- fun_l8_n648(x)
- end
-end
-
-def fun_l7_n574(x)
- if (x < 1)
- fun_l8_n825(x)
- else
- fun_l8_n811(x)
- end
-end
-
-def fun_l7_n575(x)
- if (x < 1)
- fun_l8_n348(x)
- else
- fun_l8_n994(x)
- end
-end
-
-def fun_l7_n576(x)
- if (x < 1)
- fun_l8_n721(x)
- else
- fun_l8_n584(x)
- end
-end
-
-def fun_l7_n577(x)
- if (x < 1)
- fun_l8_n827(x)
- else
- fun_l8_n968(x)
- end
-end
-
-def fun_l7_n578(x)
- if (x < 1)
- fun_l8_n649(x)
- else
- fun_l8_n684(x)
- end
-end
-
-def fun_l7_n579(x)
- if (x < 1)
- fun_l8_n43(x)
- else
- fun_l8_n183(x)
- end
-end
-
-def fun_l7_n580(x)
- if (x < 1)
- fun_l8_n516(x)
- else
- fun_l8_n893(x)
- end
-end
-
-def fun_l7_n581(x)
- if (x < 1)
- fun_l8_n334(x)
- else
- fun_l8_n677(x)
- end
-end
-
-def fun_l7_n582(x)
- if (x < 1)
- fun_l8_n731(x)
- else
- fun_l8_n922(x)
- end
-end
-
-def fun_l7_n583(x)
- if (x < 1)
- fun_l8_n653(x)
- else
- fun_l8_n403(x)
- end
-end
-
-def fun_l7_n584(x)
- if (x < 1)
- fun_l8_n534(x)
- else
- fun_l8_n155(x)
- end
-end
-
-def fun_l7_n585(x)
- if (x < 1)
- fun_l8_n1(x)
- else
- fun_l8_n903(x)
- end
-end
-
-def fun_l7_n586(x)
- if (x < 1)
- fun_l8_n956(x)
- else
- fun_l8_n182(x)
- end
-end
-
-def fun_l7_n587(x)
- if (x < 1)
- fun_l8_n590(x)
- else
- fun_l8_n707(x)
- end
-end
-
-def fun_l7_n588(x)
- if (x < 1)
- fun_l8_n74(x)
- else
- fun_l8_n612(x)
- end
-end
-
-def fun_l7_n589(x)
- if (x < 1)
- fun_l8_n17(x)
- else
- fun_l8_n193(x)
- end
-end
-
-def fun_l7_n590(x)
- if (x < 1)
- fun_l8_n650(x)
- else
- fun_l8_n863(x)
- end
-end
-
-def fun_l7_n591(x)
- if (x < 1)
- fun_l8_n974(x)
- else
- fun_l8_n932(x)
- end
-end
-
-def fun_l7_n592(x)
- if (x < 1)
- fun_l8_n17(x)
- else
- fun_l8_n537(x)
- end
-end
-
-def fun_l7_n593(x)
- if (x < 1)
- fun_l8_n118(x)
- else
- fun_l8_n588(x)
- end
-end
-
-def fun_l7_n594(x)
- if (x < 1)
- fun_l8_n241(x)
- else
- fun_l8_n929(x)
- end
-end
-
-def fun_l7_n595(x)
- if (x < 1)
- fun_l8_n667(x)
- else
- fun_l8_n251(x)
- end
-end
-
-def fun_l7_n596(x)
- if (x < 1)
- fun_l8_n473(x)
- else
- fun_l8_n189(x)
- end
-end
-
-def fun_l7_n597(x)
- if (x < 1)
- fun_l8_n687(x)
- else
- fun_l8_n666(x)
- end
-end
-
-def fun_l7_n598(x)
- if (x < 1)
- fun_l8_n700(x)
- else
- fun_l8_n294(x)
- end
-end
-
-def fun_l7_n599(x)
- if (x < 1)
- fun_l8_n144(x)
- else
- fun_l8_n656(x)
- end
-end
-
-def fun_l7_n600(x)
- if (x < 1)
- fun_l8_n375(x)
- else
- fun_l8_n571(x)
- end
-end
-
-def fun_l7_n601(x)
- if (x < 1)
- fun_l8_n506(x)
- else
- fun_l8_n212(x)
- end
-end
-
-def fun_l7_n602(x)
- if (x < 1)
- fun_l8_n770(x)
- else
- fun_l8_n491(x)
- end
-end
-
-def fun_l7_n603(x)
- if (x < 1)
- fun_l8_n325(x)
- else
- fun_l8_n660(x)
- end
-end
-
-def fun_l7_n604(x)
- if (x < 1)
- fun_l8_n255(x)
- else
- fun_l8_n842(x)
- end
-end
-
-def fun_l7_n605(x)
- if (x < 1)
- fun_l8_n149(x)
- else
- fun_l8_n648(x)
- end
-end
-
-def fun_l7_n606(x)
- if (x < 1)
- fun_l8_n845(x)
- else
- fun_l8_n248(x)
- end
-end
-
-def fun_l7_n607(x)
- if (x < 1)
- fun_l8_n484(x)
- else
- fun_l8_n333(x)
- end
-end
-
-def fun_l7_n608(x)
- if (x < 1)
- fun_l8_n287(x)
- else
- fun_l8_n341(x)
- end
-end
-
-def fun_l7_n609(x)
- if (x < 1)
- fun_l8_n873(x)
- else
- fun_l8_n113(x)
- end
-end
-
-def fun_l7_n610(x)
- if (x < 1)
- fun_l8_n45(x)
- else
- fun_l8_n994(x)
- end
-end
-
-def fun_l7_n611(x)
- if (x < 1)
- fun_l8_n427(x)
- else
- fun_l8_n359(x)
- end
-end
-
-def fun_l7_n612(x)
- if (x < 1)
- fun_l8_n433(x)
- else
- fun_l8_n189(x)
- end
-end
-
-def fun_l7_n613(x)
- if (x < 1)
- fun_l8_n25(x)
- else
- fun_l8_n564(x)
- end
-end
-
-def fun_l7_n614(x)
- if (x < 1)
- fun_l8_n789(x)
- else
- fun_l8_n441(x)
- end
-end
-
-def fun_l7_n615(x)
- if (x < 1)
- fun_l8_n353(x)
- else
- fun_l8_n217(x)
- end
-end
-
-def fun_l7_n616(x)
- if (x < 1)
- fun_l8_n334(x)
- else
- fun_l8_n559(x)
- end
-end
-
-def fun_l7_n617(x)
- if (x < 1)
- fun_l8_n709(x)
- else
- fun_l8_n764(x)
- end
-end
-
-def fun_l7_n618(x)
- if (x < 1)
- fun_l8_n710(x)
- else
- fun_l8_n307(x)
- end
-end
-
-def fun_l7_n619(x)
- if (x < 1)
- fun_l8_n246(x)
- else
- fun_l8_n88(x)
- end
-end
-
-def fun_l7_n620(x)
- if (x < 1)
- fun_l8_n259(x)
- else
- fun_l8_n813(x)
- end
-end
-
-def fun_l7_n621(x)
- if (x < 1)
- fun_l8_n250(x)
- else
- fun_l8_n566(x)
- end
-end
-
-def fun_l7_n622(x)
- if (x < 1)
- fun_l8_n223(x)
- else
- fun_l8_n627(x)
- end
-end
-
-def fun_l7_n623(x)
- if (x < 1)
- fun_l8_n345(x)
- else
- fun_l8_n604(x)
- end
-end
-
-def fun_l7_n624(x)
- if (x < 1)
- fun_l8_n405(x)
- else
- fun_l8_n850(x)
- end
-end
-
-def fun_l7_n625(x)
- if (x < 1)
- fun_l8_n278(x)
- else
- fun_l8_n643(x)
- end
-end
-
-def fun_l7_n626(x)
- if (x < 1)
- fun_l8_n359(x)
- else
- fun_l8_n167(x)
- end
-end
-
-def fun_l7_n627(x)
- if (x < 1)
- fun_l8_n589(x)
- else
- fun_l8_n656(x)
- end
-end
-
-def fun_l7_n628(x)
- if (x < 1)
- fun_l8_n612(x)
- else
- fun_l8_n227(x)
- end
-end
-
-def fun_l7_n629(x)
- if (x < 1)
- fun_l8_n845(x)
- else
- fun_l8_n469(x)
- end
-end
-
-def fun_l7_n630(x)
- if (x < 1)
- fun_l8_n833(x)
- else
- fun_l8_n92(x)
- end
-end
-
-def fun_l7_n631(x)
- if (x < 1)
- fun_l8_n411(x)
- else
- fun_l8_n815(x)
- end
-end
-
-def fun_l7_n632(x)
- if (x < 1)
- fun_l8_n844(x)
- else
- fun_l8_n349(x)
- end
-end
-
-def fun_l7_n633(x)
- if (x < 1)
- fun_l8_n333(x)
- else
- fun_l8_n468(x)
- end
-end
-
-def fun_l7_n634(x)
- if (x < 1)
- fun_l8_n12(x)
- else
- fun_l8_n727(x)
- end
-end
-
-def fun_l7_n635(x)
- if (x < 1)
- fun_l8_n65(x)
- else
- fun_l8_n729(x)
- end
-end
-
-def fun_l7_n636(x)
- if (x < 1)
- fun_l8_n54(x)
- else
- fun_l8_n524(x)
- end
-end
-
-def fun_l7_n637(x)
- if (x < 1)
- fun_l8_n547(x)
- else
- fun_l8_n220(x)
- end
-end
-
-def fun_l7_n638(x)
- if (x < 1)
- fun_l8_n679(x)
- else
- fun_l8_n693(x)
- end
-end
-
-def fun_l7_n639(x)
- if (x < 1)
- fun_l8_n428(x)
- else
- fun_l8_n938(x)
- end
-end
-
-def fun_l7_n640(x)
- if (x < 1)
- fun_l8_n779(x)
- else
- fun_l8_n323(x)
- end
-end
-
-def fun_l7_n641(x)
- if (x < 1)
- fun_l8_n254(x)
- else
- fun_l8_n443(x)
- end
-end
-
-def fun_l7_n642(x)
- if (x < 1)
- fun_l8_n623(x)
- else
- fun_l8_n361(x)
- end
-end
-
-def fun_l7_n643(x)
- if (x < 1)
- fun_l8_n524(x)
- else
- fun_l8_n19(x)
- end
-end
-
-def fun_l7_n644(x)
- if (x < 1)
- fun_l8_n77(x)
- else
- fun_l8_n696(x)
- end
-end
-
-def fun_l7_n645(x)
- if (x < 1)
- fun_l8_n468(x)
- else
- fun_l8_n819(x)
- end
-end
-
-def fun_l7_n646(x)
- if (x < 1)
- fun_l8_n319(x)
- else
- fun_l8_n921(x)
- end
-end
-
-def fun_l7_n647(x)
- if (x < 1)
- fun_l8_n681(x)
- else
- fun_l8_n925(x)
- end
-end
-
-def fun_l7_n648(x)
- if (x < 1)
- fun_l8_n146(x)
- else
- fun_l8_n451(x)
- end
-end
-
-def fun_l7_n649(x)
- if (x < 1)
- fun_l8_n871(x)
- else
- fun_l8_n707(x)
- end
-end
-
-def fun_l7_n650(x)
- if (x < 1)
- fun_l8_n782(x)
- else
- fun_l8_n556(x)
- end
-end
-
-def fun_l7_n651(x)
- if (x < 1)
- fun_l8_n721(x)
- else
- fun_l8_n80(x)
- end
-end
-
-def fun_l7_n652(x)
- if (x < 1)
- fun_l8_n110(x)
- else
- fun_l8_n529(x)
- end
-end
-
-def fun_l7_n653(x)
- if (x < 1)
- fun_l8_n107(x)
- else
- fun_l8_n876(x)
- end
-end
-
-def fun_l7_n654(x)
- if (x < 1)
- fun_l8_n902(x)
- else
- fun_l8_n45(x)
- end
-end
-
-def fun_l7_n655(x)
- if (x < 1)
- fun_l8_n714(x)
- else
- fun_l8_n939(x)
- end
-end
-
-def fun_l7_n656(x)
- if (x < 1)
- fun_l8_n761(x)
- else
- fun_l8_n940(x)
- end
-end
-
-def fun_l7_n657(x)
- if (x < 1)
- fun_l8_n165(x)
- else
- fun_l8_n779(x)
- end
-end
-
-def fun_l7_n658(x)
- if (x < 1)
- fun_l8_n848(x)
- else
- fun_l8_n307(x)
- end
-end
-
-def fun_l7_n659(x)
- if (x < 1)
- fun_l8_n414(x)
- else
- fun_l8_n855(x)
- end
-end
-
-def fun_l7_n660(x)
- if (x < 1)
- fun_l8_n963(x)
- else
- fun_l8_n887(x)
- end
-end
-
-def fun_l7_n661(x)
- if (x < 1)
- fun_l8_n71(x)
- else
- fun_l8_n249(x)
- end
-end
-
-def fun_l7_n662(x)
- if (x < 1)
- fun_l8_n426(x)
- else
- fun_l8_n977(x)
- end
-end
-
-def fun_l7_n663(x)
- if (x < 1)
- fun_l8_n924(x)
- else
- fun_l8_n606(x)
- end
-end
-
-def fun_l7_n664(x)
- if (x < 1)
- fun_l8_n88(x)
- else
- fun_l8_n718(x)
- end
-end
-
-def fun_l7_n665(x)
- if (x < 1)
- fun_l8_n611(x)
- else
- fun_l8_n898(x)
- end
-end
-
-def fun_l7_n666(x)
- if (x < 1)
- fun_l8_n656(x)
- else
- fun_l8_n116(x)
- end
-end
-
-def fun_l7_n667(x)
- if (x < 1)
- fun_l8_n196(x)
- else
- fun_l8_n688(x)
- end
-end
-
-def fun_l7_n668(x)
- if (x < 1)
- fun_l8_n873(x)
- else
- fun_l8_n561(x)
- end
-end
-
-def fun_l7_n669(x)
- if (x < 1)
- fun_l8_n947(x)
- else
- fun_l8_n64(x)
- end
-end
-
-def fun_l7_n670(x)
- if (x < 1)
- fun_l8_n309(x)
- else
- fun_l8_n708(x)
- end
-end
-
-def fun_l7_n671(x)
- if (x < 1)
- fun_l8_n699(x)
- else
- fun_l8_n218(x)
- end
-end
-
-def fun_l7_n672(x)
- if (x < 1)
- fun_l8_n930(x)
- else
- fun_l8_n387(x)
- end
-end
-
-def fun_l7_n673(x)
- if (x < 1)
- fun_l8_n598(x)
- else
- fun_l8_n245(x)
- end
-end
-
-def fun_l7_n674(x)
- if (x < 1)
- fun_l8_n411(x)
- else
- fun_l8_n236(x)
- end
-end
-
-def fun_l7_n675(x)
- if (x < 1)
- fun_l8_n193(x)
- else
- fun_l8_n61(x)
- end
-end
-
-def fun_l7_n676(x)
- if (x < 1)
- fun_l8_n2(x)
- else
- fun_l8_n253(x)
- end
-end
-
-def fun_l7_n677(x)
- if (x < 1)
- fun_l8_n839(x)
- else
- fun_l8_n919(x)
- end
-end
-
-def fun_l7_n678(x)
- if (x < 1)
- fun_l8_n643(x)
- else
- fun_l8_n245(x)
- end
-end
-
-def fun_l7_n679(x)
- if (x < 1)
- fun_l8_n625(x)
- else
- fun_l8_n690(x)
- end
-end
-
-def fun_l7_n680(x)
- if (x < 1)
- fun_l8_n899(x)
- else
- fun_l8_n307(x)
- end
-end
-
-def fun_l7_n681(x)
- if (x < 1)
- fun_l8_n894(x)
- else
- fun_l8_n92(x)
- end
-end
-
-def fun_l7_n682(x)
- if (x < 1)
- fun_l8_n139(x)
- else
- fun_l8_n252(x)
- end
-end
-
-def fun_l7_n683(x)
- if (x < 1)
- fun_l8_n978(x)
- else
- fun_l8_n84(x)
- end
-end
-
-def fun_l7_n684(x)
- if (x < 1)
- fun_l8_n426(x)
- else
- fun_l8_n329(x)
- end
-end
-
-def fun_l7_n685(x)
- if (x < 1)
- fun_l8_n241(x)
- else
- fun_l8_n780(x)
- end
-end
-
-def fun_l7_n686(x)
- if (x < 1)
- fun_l8_n793(x)
- else
- fun_l8_n534(x)
- end
-end
-
-def fun_l7_n687(x)
- if (x < 1)
- fun_l8_n409(x)
- else
- fun_l8_n152(x)
- end
-end
-
-def fun_l7_n688(x)
- if (x < 1)
- fun_l8_n838(x)
- else
- fun_l8_n555(x)
- end
-end
-
-def fun_l7_n689(x)
- if (x < 1)
- fun_l8_n634(x)
- else
- fun_l8_n27(x)
- end
-end
-
-def fun_l7_n690(x)
- if (x < 1)
- fun_l8_n629(x)
- else
- fun_l8_n448(x)
- end
-end
-
-def fun_l7_n691(x)
- if (x < 1)
- fun_l8_n487(x)
- else
- fun_l8_n293(x)
- end
-end
-
-def fun_l7_n692(x)
- if (x < 1)
- fun_l8_n739(x)
- else
- fun_l8_n472(x)
- end
-end
-
-def fun_l7_n693(x)
- if (x < 1)
- fun_l8_n619(x)
- else
- fun_l8_n642(x)
- end
-end
-
-def fun_l7_n694(x)
- if (x < 1)
- fun_l8_n123(x)
- else
- fun_l8_n880(x)
- end
-end
-
-def fun_l7_n695(x)
- if (x < 1)
- fun_l8_n695(x)
- else
- fun_l8_n364(x)
- end
-end
-
-def fun_l7_n696(x)
- if (x < 1)
- fun_l8_n610(x)
- else
- fun_l8_n798(x)
- end
-end
-
-def fun_l7_n697(x)
- if (x < 1)
- fun_l8_n396(x)
- else
- fun_l8_n704(x)
- end
-end
-
-def fun_l7_n698(x)
- if (x < 1)
- fun_l8_n759(x)
- else
- fun_l8_n880(x)
- end
-end
-
-def fun_l7_n699(x)
- if (x < 1)
- fun_l8_n885(x)
- else
- fun_l8_n139(x)
- end
-end
-
-def fun_l7_n700(x)
- if (x < 1)
- fun_l8_n244(x)
- else
- fun_l8_n307(x)
- end
-end
-
-def fun_l7_n701(x)
- if (x < 1)
- fun_l8_n698(x)
- else
- fun_l8_n949(x)
- end
-end
-
-def fun_l7_n702(x)
- if (x < 1)
- fun_l8_n585(x)
- else
- fun_l8_n211(x)
- end
-end
-
-def fun_l7_n703(x)
- if (x < 1)
- fun_l8_n834(x)
- else
- fun_l8_n111(x)
- end
-end
-
-def fun_l7_n704(x)
- if (x < 1)
- fun_l8_n690(x)
- else
- fun_l8_n981(x)
- end
-end
-
-def fun_l7_n705(x)
- if (x < 1)
- fun_l8_n377(x)
- else
- fun_l8_n392(x)
- end
-end
-
-def fun_l7_n706(x)
- if (x < 1)
- fun_l8_n988(x)
- else
- fun_l8_n759(x)
- end
-end
-
-def fun_l7_n707(x)
- if (x < 1)
- fun_l8_n917(x)
- else
- fun_l8_n326(x)
- end
-end
-
-def fun_l7_n708(x)
- if (x < 1)
- fun_l8_n662(x)
- else
- fun_l8_n488(x)
- end
-end
-
-def fun_l7_n709(x)
- if (x < 1)
- fun_l8_n530(x)
- else
- fun_l8_n663(x)
- end
-end
-
-def fun_l7_n710(x)
- if (x < 1)
- fun_l8_n344(x)
- else
- fun_l8_n282(x)
- end
-end
-
-def fun_l7_n711(x)
- if (x < 1)
- fun_l8_n908(x)
- else
- fun_l8_n405(x)
- end
-end
-
-def fun_l7_n712(x)
- if (x < 1)
- fun_l8_n332(x)
- else
- fun_l8_n660(x)
- end
-end
-
-def fun_l7_n713(x)
- if (x < 1)
- fun_l8_n37(x)
- else
- fun_l8_n689(x)
- end
-end
-
-def fun_l7_n714(x)
- if (x < 1)
- fun_l8_n642(x)
- else
- fun_l8_n996(x)
- end
-end
-
-def fun_l7_n715(x)
- if (x < 1)
- fun_l8_n322(x)
- else
- fun_l8_n609(x)
- end
-end
-
-def fun_l7_n716(x)
- if (x < 1)
- fun_l8_n567(x)
- else
- fun_l8_n492(x)
- end
-end
-
-def fun_l7_n717(x)
- if (x < 1)
- fun_l8_n934(x)
- else
- fun_l8_n353(x)
- end
-end
-
-def fun_l7_n718(x)
- if (x < 1)
- fun_l8_n572(x)
- else
- fun_l8_n859(x)
- end
-end
-
-def fun_l7_n719(x)
- if (x < 1)
- fun_l8_n777(x)
- else
- fun_l8_n810(x)
- end
-end
-
-def fun_l7_n720(x)
- if (x < 1)
- fun_l8_n121(x)
- else
- fun_l8_n847(x)
- end
-end
-
-def fun_l7_n721(x)
- if (x < 1)
- fun_l8_n177(x)
- else
- fun_l8_n484(x)
- end
-end
-
-def fun_l7_n722(x)
- if (x < 1)
- fun_l8_n73(x)
- else
- fun_l8_n795(x)
- end
-end
-
-def fun_l7_n723(x)
- if (x < 1)
- fun_l8_n950(x)
- else
- fun_l8_n382(x)
- end
-end
-
-def fun_l7_n724(x)
- if (x < 1)
- fun_l8_n349(x)
- else
- fun_l8_n644(x)
- end
-end
-
-def fun_l7_n725(x)
- if (x < 1)
- fun_l8_n480(x)
- else
- fun_l8_n262(x)
- end
-end
-
-def fun_l7_n726(x)
- if (x < 1)
- fun_l8_n39(x)
- else
- fun_l8_n543(x)
- end
-end
-
-def fun_l7_n727(x)
- if (x < 1)
- fun_l8_n934(x)
- else
- fun_l8_n440(x)
- end
-end
-
-def fun_l7_n728(x)
- if (x < 1)
- fun_l8_n312(x)
- else
- fun_l8_n341(x)
- end
-end
-
-def fun_l7_n729(x)
- if (x < 1)
- fun_l8_n284(x)
- else
- fun_l8_n884(x)
- end
-end
-
-def fun_l7_n730(x)
- if (x < 1)
- fun_l8_n841(x)
- else
- fun_l8_n221(x)
- end
-end
-
-def fun_l7_n731(x)
- if (x < 1)
- fun_l8_n719(x)
- else
- fun_l8_n907(x)
- end
-end
-
-def fun_l7_n732(x)
- if (x < 1)
- fun_l8_n422(x)
- else
- fun_l8_n65(x)
- end
-end
-
-def fun_l7_n733(x)
- if (x < 1)
- fun_l8_n324(x)
- else
- fun_l8_n811(x)
- end
-end
-
-def fun_l7_n734(x)
- if (x < 1)
- fun_l8_n643(x)
- else
- fun_l8_n622(x)
- end
-end
-
-def fun_l7_n735(x)
- if (x < 1)
- fun_l8_n20(x)
- else
- fun_l8_n205(x)
- end
-end
-
-def fun_l7_n736(x)
- if (x < 1)
- fun_l8_n487(x)
- else
- fun_l8_n908(x)
- end
-end
-
-def fun_l7_n737(x)
- if (x < 1)
- fun_l8_n576(x)
- else
- fun_l8_n789(x)
- end
-end
-
-def fun_l7_n738(x)
- if (x < 1)
- fun_l8_n353(x)
- else
- fun_l8_n286(x)
- end
-end
-
-def fun_l7_n739(x)
- if (x < 1)
- fun_l8_n614(x)
- else
- fun_l8_n121(x)
- end
-end
-
-def fun_l7_n740(x)
- if (x < 1)
- fun_l8_n79(x)
- else
- fun_l8_n637(x)
- end
-end
-
-def fun_l7_n741(x)
- if (x < 1)
- fun_l8_n808(x)
- else
- fun_l8_n461(x)
- end
-end
-
-def fun_l7_n742(x)
- if (x < 1)
- fun_l8_n590(x)
- else
- fun_l8_n198(x)
- end
-end
-
-def fun_l7_n743(x)
- if (x < 1)
- fun_l8_n498(x)
- else
- fun_l8_n379(x)
- end
-end
-
-def fun_l7_n744(x)
- if (x < 1)
- fun_l8_n599(x)
- else
- fun_l8_n359(x)
- end
-end
-
-def fun_l7_n745(x)
- if (x < 1)
- fun_l8_n898(x)
- else
- fun_l8_n520(x)
- end
-end
-
-def fun_l7_n746(x)
- if (x < 1)
- fun_l8_n835(x)
- else
- fun_l8_n131(x)
- end
-end
-
-def fun_l7_n747(x)
- if (x < 1)
- fun_l8_n648(x)
- else
- fun_l8_n248(x)
- end
-end
-
-def fun_l7_n748(x)
- if (x < 1)
- fun_l8_n451(x)
- else
- fun_l8_n352(x)
- end
-end
-
-def fun_l7_n749(x)
- if (x < 1)
- fun_l8_n69(x)
- else
- fun_l8_n974(x)
- end
-end
-
-def fun_l7_n750(x)
- if (x < 1)
- fun_l8_n108(x)
- else
- fun_l8_n744(x)
- end
-end
-
-def fun_l7_n751(x)
- if (x < 1)
- fun_l8_n171(x)
- else
- fun_l8_n305(x)
- end
-end
-
-def fun_l7_n752(x)
- if (x < 1)
- fun_l8_n180(x)
- else
- fun_l8_n293(x)
- end
-end
-
-def fun_l7_n753(x)
- if (x < 1)
- fun_l8_n555(x)
- else
- fun_l8_n882(x)
- end
-end
-
-def fun_l7_n754(x)
- if (x < 1)
- fun_l8_n756(x)
- else
- fun_l8_n604(x)
- end
-end
-
-def fun_l7_n755(x)
- if (x < 1)
- fun_l8_n782(x)
- else
- fun_l8_n708(x)
- end
-end
-
-def fun_l7_n756(x)
- if (x < 1)
- fun_l8_n65(x)
- else
- fun_l8_n474(x)
- end
-end
-
-def fun_l7_n757(x)
- if (x < 1)
- fun_l8_n43(x)
- else
- fun_l8_n892(x)
- end
-end
-
-def fun_l7_n758(x)
- if (x < 1)
- fun_l8_n90(x)
- else
- fun_l8_n968(x)
- end
-end
-
-def fun_l7_n759(x)
- if (x < 1)
- fun_l8_n599(x)
- else
- fun_l8_n505(x)
- end
-end
-
-def fun_l7_n760(x)
- if (x < 1)
- fun_l8_n344(x)
- else
- fun_l8_n122(x)
- end
-end
-
-def fun_l7_n761(x)
- if (x < 1)
- fun_l8_n289(x)
- else
- fun_l8_n867(x)
- end
-end
-
-def fun_l7_n762(x)
- if (x < 1)
- fun_l8_n107(x)
- else
- fun_l8_n950(x)
- end
-end
-
-def fun_l7_n763(x)
- if (x < 1)
- fun_l8_n405(x)
- else
- fun_l8_n178(x)
- end
-end
-
-def fun_l7_n764(x)
- if (x < 1)
- fun_l8_n91(x)
- else
- fun_l8_n760(x)
- end
-end
-
-def fun_l7_n765(x)
- if (x < 1)
- fun_l8_n268(x)
- else
- fun_l8_n451(x)
- end
-end
-
-def fun_l7_n766(x)
- if (x < 1)
- fun_l8_n693(x)
- else
- fun_l8_n150(x)
- end
-end
-
-def fun_l7_n767(x)
- if (x < 1)
- fun_l8_n622(x)
- else
- fun_l8_n114(x)
- end
-end
-
-def fun_l7_n768(x)
- if (x < 1)
- fun_l8_n662(x)
- else
- fun_l8_n514(x)
- end
-end
-
-def fun_l7_n769(x)
- if (x < 1)
- fun_l8_n440(x)
- else
- fun_l8_n537(x)
- end
-end
-
-def fun_l7_n770(x)
- if (x < 1)
- fun_l8_n207(x)
- else
- fun_l8_n513(x)
- end
-end
-
-def fun_l7_n771(x)
- if (x < 1)
- fun_l8_n394(x)
- else
- fun_l8_n857(x)
- end
-end
-
-def fun_l7_n772(x)
- if (x < 1)
- fun_l8_n635(x)
- else
- fun_l8_n696(x)
- end
-end
-
-def fun_l7_n773(x)
- if (x < 1)
- fun_l8_n687(x)
- else
- fun_l8_n926(x)
- end
-end
-
-def fun_l7_n774(x)
- if (x < 1)
- fun_l8_n54(x)
- else
- fun_l8_n410(x)
- end
-end
-
-def fun_l7_n775(x)
- if (x < 1)
- fun_l8_n825(x)
- else
- fun_l8_n339(x)
- end
-end
-
-def fun_l7_n776(x)
- if (x < 1)
- fun_l8_n130(x)
- else
- fun_l8_n48(x)
- end
-end
-
-def fun_l7_n777(x)
- if (x < 1)
- fun_l8_n627(x)
- else
- fun_l8_n191(x)
- end
-end
-
-def fun_l7_n778(x)
- if (x < 1)
- fun_l8_n843(x)
- else
- fun_l8_n627(x)
- end
-end
-
-def fun_l7_n779(x)
- if (x < 1)
- fun_l8_n950(x)
- else
- fun_l8_n247(x)
- end
-end
-
-def fun_l7_n780(x)
- if (x < 1)
- fun_l8_n865(x)
- else
- fun_l8_n540(x)
- end
-end
-
-def fun_l7_n781(x)
- if (x < 1)
- fun_l8_n440(x)
- else
- fun_l8_n326(x)
- end
-end
-
-def fun_l7_n782(x)
- if (x < 1)
- fun_l8_n463(x)
- else
- fun_l8_n808(x)
- end
-end
-
-def fun_l7_n783(x)
- if (x < 1)
- fun_l8_n44(x)
- else
- fun_l8_n888(x)
- end
-end
-
-def fun_l7_n784(x)
- if (x < 1)
- fun_l8_n690(x)
- else
- fun_l8_n673(x)
- end
-end
-
-def fun_l7_n785(x)
- if (x < 1)
- fun_l8_n641(x)
- else
- fun_l8_n367(x)
- end
-end
-
-def fun_l7_n786(x)
- if (x < 1)
- fun_l8_n193(x)
- else
- fun_l8_n764(x)
- end
-end
-
-def fun_l7_n787(x)
- if (x < 1)
- fun_l8_n604(x)
- else
- fun_l8_n527(x)
- end
-end
-
-def fun_l7_n788(x)
- if (x < 1)
- fun_l8_n626(x)
- else
- fun_l8_n101(x)
- end
-end
-
-def fun_l7_n789(x)
- if (x < 1)
- fun_l8_n152(x)
- else
- fun_l8_n9(x)
- end
-end
-
-def fun_l7_n790(x)
- if (x < 1)
- fun_l8_n541(x)
- else
- fun_l8_n789(x)
- end
-end
-
-def fun_l7_n791(x)
- if (x < 1)
- fun_l8_n706(x)
- else
- fun_l8_n577(x)
- end
-end
-
-def fun_l7_n792(x)
- if (x < 1)
- fun_l8_n480(x)
- else
- fun_l8_n284(x)
- end
-end
-
-def fun_l7_n793(x)
- if (x < 1)
- fun_l8_n157(x)
- else
- fun_l8_n620(x)
- end
-end
-
-def fun_l7_n794(x)
- if (x < 1)
- fun_l8_n666(x)
- else
- fun_l8_n755(x)
- end
-end
-
-def fun_l7_n795(x)
- if (x < 1)
- fun_l8_n487(x)
- else
- fun_l8_n20(x)
- end
-end
-
-def fun_l7_n796(x)
- if (x < 1)
- fun_l8_n750(x)
- else
- fun_l8_n974(x)
- end
-end
-
-def fun_l7_n797(x)
- if (x < 1)
- fun_l8_n812(x)
- else
- fun_l8_n915(x)
- end
-end
-
-def fun_l7_n798(x)
- if (x < 1)
- fun_l8_n297(x)
- else
- fun_l8_n8(x)
- end
-end
-
-def fun_l7_n799(x)
- if (x < 1)
- fun_l8_n385(x)
- else
- fun_l8_n920(x)
- end
-end
-
-def fun_l7_n800(x)
- if (x < 1)
- fun_l8_n322(x)
- else
- fun_l8_n603(x)
- end
-end
-
-def fun_l7_n801(x)
- if (x < 1)
- fun_l8_n825(x)
- else
- fun_l8_n702(x)
- end
-end
-
-def fun_l7_n802(x)
- if (x < 1)
- fun_l8_n902(x)
- else
- fun_l8_n978(x)
- end
-end
-
-def fun_l7_n803(x)
- if (x < 1)
- fun_l8_n921(x)
- else
- fun_l8_n61(x)
- end
-end
-
-def fun_l7_n804(x)
- if (x < 1)
- fun_l8_n171(x)
- else
- fun_l8_n630(x)
- end
-end
-
-def fun_l7_n805(x)
- if (x < 1)
- fun_l8_n469(x)
- else
- fun_l8_n265(x)
- end
-end
-
-def fun_l7_n806(x)
- if (x < 1)
- fun_l8_n367(x)
- else
- fun_l8_n820(x)
- end
-end
-
-def fun_l7_n807(x)
- if (x < 1)
- fun_l8_n242(x)
- else
- fun_l8_n707(x)
- end
-end
-
-def fun_l7_n808(x)
- if (x < 1)
- fun_l8_n512(x)
- else
- fun_l8_n139(x)
- end
-end
-
-def fun_l7_n809(x)
- if (x < 1)
- fun_l8_n17(x)
- else
- fun_l8_n615(x)
- end
-end
-
-def fun_l7_n810(x)
- if (x < 1)
- fun_l8_n600(x)
- else
- fun_l8_n6(x)
- end
-end
-
-def fun_l7_n811(x)
- if (x < 1)
- fun_l8_n342(x)
- else
- fun_l8_n194(x)
- end
-end
-
-def fun_l7_n812(x)
- if (x < 1)
- fun_l8_n191(x)
- else
- fun_l8_n864(x)
- end
-end
-
-def fun_l7_n813(x)
- if (x < 1)
- fun_l8_n577(x)
- else
- fun_l8_n113(x)
- end
-end
-
-def fun_l7_n814(x)
- if (x < 1)
- fun_l8_n729(x)
- else
- fun_l8_n989(x)
- end
-end
-
-def fun_l7_n815(x)
- if (x < 1)
- fun_l8_n707(x)
- else
- fun_l8_n846(x)
- end
-end
-
-def fun_l7_n816(x)
- if (x < 1)
- fun_l8_n874(x)
- else
- fun_l8_n790(x)
- end
-end
-
-def fun_l7_n817(x)
- if (x < 1)
- fun_l8_n968(x)
- else
- fun_l8_n215(x)
- end
-end
-
-def fun_l7_n818(x)
- if (x < 1)
- fun_l8_n444(x)
- else
- fun_l8_n182(x)
- end
-end
-
-def fun_l7_n819(x)
- if (x < 1)
- fun_l8_n103(x)
- else
- fun_l8_n134(x)
- end
-end
-
-def fun_l7_n820(x)
- if (x < 1)
- fun_l8_n718(x)
- else
- fun_l8_n950(x)
- end
-end
-
-def fun_l7_n821(x)
- if (x < 1)
- fun_l8_n439(x)
- else
- fun_l8_n68(x)
- end
-end
-
-def fun_l7_n822(x)
- if (x < 1)
- fun_l8_n961(x)
- else
- fun_l8_n593(x)
- end
-end
-
-def fun_l7_n823(x)
- if (x < 1)
- fun_l8_n212(x)
- else
- fun_l8_n346(x)
- end
-end
-
-def fun_l7_n824(x)
- if (x < 1)
- fun_l8_n926(x)
- else
- fun_l8_n225(x)
- end
-end
-
-def fun_l7_n825(x)
- if (x < 1)
- fun_l8_n880(x)
- else
- fun_l8_n527(x)
- end
-end
-
-def fun_l7_n826(x)
- if (x < 1)
- fun_l8_n13(x)
- else
- fun_l8_n436(x)
- end
-end
-
-def fun_l7_n827(x)
- if (x < 1)
- fun_l8_n19(x)
- else
- fun_l8_n201(x)
- end
-end
-
-def fun_l7_n828(x)
- if (x < 1)
- fun_l8_n568(x)
- else
- fun_l8_n450(x)
- end
-end
-
-def fun_l7_n829(x)
- if (x < 1)
- fun_l8_n543(x)
- else
- fun_l8_n606(x)
- end
-end
-
-def fun_l7_n830(x)
- if (x < 1)
- fun_l8_n503(x)
- else
- fun_l8_n104(x)
- end
-end
-
-def fun_l7_n831(x)
- if (x < 1)
- fun_l8_n185(x)
- else
- fun_l8_n1(x)
- end
-end
-
-def fun_l7_n832(x)
- if (x < 1)
- fun_l8_n598(x)
- else
- fun_l8_n637(x)
- end
-end
-
-def fun_l7_n833(x)
- if (x < 1)
- fun_l8_n936(x)
- else
- fun_l8_n554(x)
- end
-end
-
-def fun_l7_n834(x)
- if (x < 1)
- fun_l8_n864(x)
- else
- fun_l8_n766(x)
- end
-end
-
-def fun_l7_n835(x)
- if (x < 1)
- fun_l8_n11(x)
- else
- fun_l8_n472(x)
- end
-end
-
-def fun_l7_n836(x)
- if (x < 1)
- fun_l8_n596(x)
- else
- fun_l8_n429(x)
- end
-end
-
-def fun_l7_n837(x)
- if (x < 1)
- fun_l8_n643(x)
- else
- fun_l8_n61(x)
- end
-end
-
-def fun_l7_n838(x)
- if (x < 1)
- fun_l8_n905(x)
- else
- fun_l8_n605(x)
- end
-end
-
-def fun_l7_n839(x)
- if (x < 1)
- fun_l8_n371(x)
- else
- fun_l8_n44(x)
- end
-end
-
-def fun_l7_n840(x)
- if (x < 1)
- fun_l8_n195(x)
- else
- fun_l8_n368(x)
- end
-end
-
-def fun_l7_n841(x)
- if (x < 1)
- fun_l8_n432(x)
- else
- fun_l8_n368(x)
- end
-end
-
-def fun_l7_n842(x)
- if (x < 1)
- fun_l8_n145(x)
- else
- fun_l8_n180(x)
- end
-end
-
-def fun_l7_n843(x)
- if (x < 1)
- fun_l8_n124(x)
- else
- fun_l8_n358(x)
- end
-end
-
-def fun_l7_n844(x)
- if (x < 1)
- fun_l8_n87(x)
- else
- fun_l8_n364(x)
- end
-end
-
-def fun_l7_n845(x)
- if (x < 1)
- fun_l8_n133(x)
- else
- fun_l8_n849(x)
- end
-end
-
-def fun_l7_n846(x)
- if (x < 1)
- fun_l8_n686(x)
- else
- fun_l8_n556(x)
- end
-end
-
-def fun_l7_n847(x)
- if (x < 1)
- fun_l8_n732(x)
- else
- fun_l8_n536(x)
- end
-end
-
-def fun_l7_n848(x)
- if (x < 1)
- fun_l8_n950(x)
- else
- fun_l8_n173(x)
- end
-end
-
-def fun_l7_n849(x)
- if (x < 1)
- fun_l8_n694(x)
- else
- fun_l8_n747(x)
- end
-end
-
-def fun_l7_n850(x)
- if (x < 1)
- fun_l8_n421(x)
- else
- fun_l8_n940(x)
- end
-end
-
-def fun_l7_n851(x)
- if (x < 1)
- fun_l8_n359(x)
- else
- fun_l8_n239(x)
- end
-end
-
-def fun_l7_n852(x)
- if (x < 1)
- fun_l8_n731(x)
- else
- fun_l8_n530(x)
- end
-end
-
-def fun_l7_n853(x)
- if (x < 1)
- fun_l8_n887(x)
- else
- fun_l8_n548(x)
- end
-end
-
-def fun_l7_n854(x)
- if (x < 1)
- fun_l8_n47(x)
- else
- fun_l8_n675(x)
- end
-end
-
-def fun_l7_n855(x)
- if (x < 1)
- fun_l8_n534(x)
- else
- fun_l8_n34(x)
- end
-end
-
-def fun_l7_n856(x)
- if (x < 1)
- fun_l8_n935(x)
- else
- fun_l8_n402(x)
- end
-end
-
-def fun_l7_n857(x)
- if (x < 1)
- fun_l8_n873(x)
- else
- fun_l8_n864(x)
- end
-end
-
-def fun_l7_n858(x)
- if (x < 1)
- fun_l8_n325(x)
- else
- fun_l8_n495(x)
- end
-end
-
-def fun_l7_n859(x)
- if (x < 1)
- fun_l8_n758(x)
- else
- fun_l8_n63(x)
- end
-end
-
-def fun_l7_n860(x)
- if (x < 1)
- fun_l8_n811(x)
- else
- fun_l8_n150(x)
- end
-end
-
-def fun_l7_n861(x)
- if (x < 1)
- fun_l8_n666(x)
- else
- fun_l8_n282(x)
- end
-end
-
-def fun_l7_n862(x)
- if (x < 1)
- fun_l8_n123(x)
- else
- fun_l8_n893(x)
- end
-end
-
-def fun_l7_n863(x)
- if (x < 1)
- fun_l8_n681(x)
- else
- fun_l8_n640(x)
- end
-end
-
-def fun_l7_n864(x)
- if (x < 1)
- fun_l8_n861(x)
- else
- fun_l8_n922(x)
- end
-end
-
-def fun_l7_n865(x)
- if (x < 1)
- fun_l8_n8(x)
- else
- fun_l8_n14(x)
- end
-end
-
-def fun_l7_n866(x)
- if (x < 1)
- fun_l8_n713(x)
- else
- fun_l8_n802(x)
- end
-end
-
-def fun_l7_n867(x)
- if (x < 1)
- fun_l8_n654(x)
- else
- fun_l8_n540(x)
- end
-end
-
-def fun_l7_n868(x)
- if (x < 1)
- fun_l8_n308(x)
- else
- fun_l8_n504(x)
- end
-end
-
-def fun_l7_n869(x)
- if (x < 1)
- fun_l8_n67(x)
- else
- fun_l8_n592(x)
- end
-end
-
-def fun_l7_n870(x)
- if (x < 1)
- fun_l8_n295(x)
- else
- fun_l8_n585(x)
- end
-end
-
-def fun_l7_n871(x)
- if (x < 1)
- fun_l8_n121(x)
- else
- fun_l8_n797(x)
- end
-end
-
-def fun_l7_n872(x)
- if (x < 1)
- fun_l8_n234(x)
- else
- fun_l8_n834(x)
- end
-end
-
-def fun_l7_n873(x)
- if (x < 1)
- fun_l8_n287(x)
- else
- fun_l8_n731(x)
- end
-end
-
-def fun_l7_n874(x)
- if (x < 1)
- fun_l8_n460(x)
- else
- fun_l8_n261(x)
- end
-end
-
-def fun_l7_n875(x)
- if (x < 1)
- fun_l8_n211(x)
- else
- fun_l8_n199(x)
- end
-end
-
-def fun_l7_n876(x)
- if (x < 1)
- fun_l8_n256(x)
- else
- fun_l8_n547(x)
- end
-end
-
-def fun_l7_n877(x)
- if (x < 1)
- fun_l8_n560(x)
- else
- fun_l8_n202(x)
- end
-end
-
-def fun_l7_n878(x)
- if (x < 1)
- fun_l8_n5(x)
- else
- fun_l8_n955(x)
- end
-end
-
-def fun_l7_n879(x)
- if (x < 1)
- fun_l8_n908(x)
- else
- fun_l8_n677(x)
- end
-end
-
-def fun_l7_n880(x)
- if (x < 1)
- fun_l8_n366(x)
- else
- fun_l8_n226(x)
- end
-end
-
-def fun_l7_n881(x)
- if (x < 1)
- fun_l8_n970(x)
- else
- fun_l8_n939(x)
- end
-end
-
-def fun_l7_n882(x)
- if (x < 1)
- fun_l8_n562(x)
- else
- fun_l8_n420(x)
- end
-end
-
-def fun_l7_n883(x)
- if (x < 1)
- fun_l8_n377(x)
- else
- fun_l8_n35(x)
- end
-end
-
-def fun_l7_n884(x)
- if (x < 1)
- fun_l8_n459(x)
- else
- fun_l8_n155(x)
- end
-end
-
-def fun_l7_n885(x)
- if (x < 1)
- fun_l8_n257(x)
- else
- fun_l8_n704(x)
- end
-end
-
-def fun_l7_n886(x)
- if (x < 1)
- fun_l8_n393(x)
- else
- fun_l8_n741(x)
- end
-end
-
-def fun_l7_n887(x)
- if (x < 1)
- fun_l8_n333(x)
- else
- fun_l8_n225(x)
- end
-end
-
-def fun_l7_n888(x)
- if (x < 1)
- fun_l8_n614(x)
- else
- fun_l8_n106(x)
- end
-end
-
-def fun_l7_n889(x)
- if (x < 1)
- fun_l8_n229(x)
- else
- fun_l8_n519(x)
- end
-end
-
-def fun_l7_n890(x)
- if (x < 1)
- fun_l8_n651(x)
- else
- fun_l8_n68(x)
- end
-end
-
-def fun_l7_n891(x)
- if (x < 1)
- fun_l8_n987(x)
- else
- fun_l8_n905(x)
- end
-end
-
-def fun_l7_n892(x)
- if (x < 1)
- fun_l8_n698(x)
- else
- fun_l8_n942(x)
- end
-end
-
-def fun_l7_n893(x)
- if (x < 1)
- fun_l8_n559(x)
- else
- fun_l8_n613(x)
- end
-end
-
-def fun_l7_n894(x)
- if (x < 1)
- fun_l8_n402(x)
- else
- fun_l8_n966(x)
- end
-end
-
-def fun_l7_n895(x)
- if (x < 1)
- fun_l8_n475(x)
- else
- fun_l8_n158(x)
- end
-end
-
-def fun_l7_n896(x)
- if (x < 1)
- fun_l8_n420(x)
- else
- fun_l8_n113(x)
- end
-end
-
-def fun_l7_n897(x)
- if (x < 1)
- fun_l8_n366(x)
- else
- fun_l8_n272(x)
- end
-end
-
-def fun_l7_n898(x)
- if (x < 1)
- fun_l8_n252(x)
- else
- fun_l8_n821(x)
- end
-end
-
-def fun_l7_n899(x)
- if (x < 1)
- fun_l8_n736(x)
- else
- fun_l8_n174(x)
- end
-end
-
-def fun_l7_n900(x)
- if (x < 1)
- fun_l8_n151(x)
- else
- fun_l8_n611(x)
- end
-end
-
-def fun_l7_n901(x)
- if (x < 1)
- fun_l8_n3(x)
- else
- fun_l8_n221(x)
- end
-end
-
-def fun_l7_n902(x)
- if (x < 1)
- fun_l8_n319(x)
- else
- fun_l8_n930(x)
- end
-end
-
-def fun_l7_n903(x)
- if (x < 1)
- fun_l8_n619(x)
- else
- fun_l8_n491(x)
- end
-end
-
-def fun_l7_n904(x)
- if (x < 1)
- fun_l8_n144(x)
- else
- fun_l8_n304(x)
- end
-end
-
-def fun_l7_n905(x)
- if (x < 1)
- fun_l8_n721(x)
- else
- fun_l8_n996(x)
- end
-end
-
-def fun_l7_n906(x)
- if (x < 1)
- fun_l8_n700(x)
- else
- fun_l8_n688(x)
- end
-end
-
-def fun_l7_n907(x)
- if (x < 1)
- fun_l8_n202(x)
- else
- fun_l8_n668(x)
- end
-end
-
-def fun_l7_n908(x)
- if (x < 1)
- fun_l8_n514(x)
- else
- fun_l8_n306(x)
- end
-end
-
-def fun_l7_n909(x)
- if (x < 1)
- fun_l8_n592(x)
- else
- fun_l8_n43(x)
- end
-end
-
-def fun_l7_n910(x)
- if (x < 1)
- fun_l8_n743(x)
- else
- fun_l8_n406(x)
- end
-end
-
-def fun_l7_n911(x)
- if (x < 1)
- fun_l8_n801(x)
- else
- fun_l8_n91(x)
- end
-end
-
-def fun_l7_n912(x)
- if (x < 1)
- fun_l8_n392(x)
- else
- fun_l8_n461(x)
- end
-end
-
-def fun_l7_n913(x)
- if (x < 1)
- fun_l8_n175(x)
- else
- fun_l8_n578(x)
- end
-end
-
-def fun_l7_n914(x)
- if (x < 1)
- fun_l8_n155(x)
- else
- fun_l8_n795(x)
- end
-end
-
-def fun_l7_n915(x)
- if (x < 1)
- fun_l8_n394(x)
- else
- fun_l8_n89(x)
- end
-end
-
-def fun_l7_n916(x)
- if (x < 1)
- fun_l8_n59(x)
- else
- fun_l8_n345(x)
- end
-end
-
-def fun_l7_n917(x)
- if (x < 1)
- fun_l8_n450(x)
- else
- fun_l8_n136(x)
- end
-end
-
-def fun_l7_n918(x)
- if (x < 1)
- fun_l8_n530(x)
- else
- fun_l8_n233(x)
- end
-end
-
-def fun_l7_n919(x)
- if (x < 1)
- fun_l8_n632(x)
- else
- fun_l8_n631(x)
- end
-end
-
-def fun_l7_n920(x)
- if (x < 1)
- fun_l8_n252(x)
- else
- fun_l8_n95(x)
- end
-end
-
-def fun_l7_n921(x)
- if (x < 1)
- fun_l8_n980(x)
- else
- fun_l8_n819(x)
- end
-end
-
-def fun_l7_n922(x)
- if (x < 1)
- fun_l8_n866(x)
- else
- fun_l8_n652(x)
- end
-end
-
-def fun_l7_n923(x)
- if (x < 1)
- fun_l8_n239(x)
- else
- fun_l8_n83(x)
- end
-end
-
-def fun_l7_n924(x)
- if (x < 1)
- fun_l8_n162(x)
- else
- fun_l8_n193(x)
- end
-end
-
-def fun_l7_n925(x)
- if (x < 1)
- fun_l8_n78(x)
- else
- fun_l8_n546(x)
- end
-end
-
-def fun_l7_n926(x)
- if (x < 1)
- fun_l8_n102(x)
- else
- fun_l8_n847(x)
- end
-end
-
-def fun_l7_n927(x)
- if (x < 1)
- fun_l8_n84(x)
- else
- fun_l8_n257(x)
- end
-end
-
-def fun_l7_n928(x)
- if (x < 1)
- fun_l8_n195(x)
- else
- fun_l8_n200(x)
- end
-end
-
-def fun_l7_n929(x)
- if (x < 1)
- fun_l8_n245(x)
- else
- fun_l8_n926(x)
- end
-end
-
-def fun_l7_n930(x)
- if (x < 1)
- fun_l8_n651(x)
- else
- fun_l8_n308(x)
- end
-end
-
-def fun_l7_n931(x)
- if (x < 1)
- fun_l8_n312(x)
- else
- fun_l8_n901(x)
- end
-end
-
-def fun_l7_n932(x)
- if (x < 1)
- fun_l8_n221(x)
- else
- fun_l8_n775(x)
- end
-end
-
-def fun_l7_n933(x)
- if (x < 1)
- fun_l8_n397(x)
- else
- fun_l8_n973(x)
- end
-end
-
-def fun_l7_n934(x)
- if (x < 1)
- fun_l8_n788(x)
- else
- fun_l8_n952(x)
- end
-end
-
-def fun_l7_n935(x)
- if (x < 1)
- fun_l8_n965(x)
- else
- fun_l8_n861(x)
- end
-end
-
-def fun_l7_n936(x)
- if (x < 1)
- fun_l8_n969(x)
- else
- fun_l8_n773(x)
- end
-end
-
-def fun_l7_n937(x)
- if (x < 1)
- fun_l8_n742(x)
- else
- fun_l8_n237(x)
- end
-end
-
-def fun_l7_n938(x)
- if (x < 1)
- fun_l8_n369(x)
- else
- fun_l8_n444(x)
- end
-end
-
-def fun_l7_n939(x)
- if (x < 1)
- fun_l8_n863(x)
- else
- fun_l8_n515(x)
- end
-end
-
-def fun_l7_n940(x)
- if (x < 1)
- fun_l8_n573(x)
- else
- fun_l8_n356(x)
- end
-end
-
-def fun_l7_n941(x)
- if (x < 1)
- fun_l8_n188(x)
- else
- fun_l8_n171(x)
- end
-end
-
-def fun_l7_n942(x)
- if (x < 1)
- fun_l8_n483(x)
- else
- fun_l8_n556(x)
- end
-end
-
-def fun_l7_n943(x)
- if (x < 1)
- fun_l8_n935(x)
- else
- fun_l8_n723(x)
- end
-end
-
-def fun_l7_n944(x)
- if (x < 1)
- fun_l8_n451(x)
- else
- fun_l8_n227(x)
- end
-end
-
-def fun_l7_n945(x)
- if (x < 1)
- fun_l8_n651(x)
- else
- fun_l8_n891(x)
- end
-end
-
-def fun_l7_n946(x)
- if (x < 1)
- fun_l8_n225(x)
- else
- fun_l8_n178(x)
- end
-end
-
-def fun_l7_n947(x)
- if (x < 1)
- fun_l8_n704(x)
- else
- fun_l8_n456(x)
- end
-end
-
-def fun_l7_n948(x)
- if (x < 1)
- fun_l8_n995(x)
- else
- fun_l8_n816(x)
- end
-end
-
-def fun_l7_n949(x)
- if (x < 1)
- fun_l8_n287(x)
- else
- fun_l8_n140(x)
- end
-end
-
-def fun_l7_n950(x)
- if (x < 1)
- fun_l8_n302(x)
- else
- fun_l8_n582(x)
- end
-end
-
-def fun_l7_n951(x)
- if (x < 1)
- fun_l8_n58(x)
- else
- fun_l8_n759(x)
- end
-end
-
-def fun_l7_n952(x)
- if (x < 1)
- fun_l8_n54(x)
- else
- fun_l8_n812(x)
- end
-end
-
-def fun_l7_n953(x)
- if (x < 1)
- fun_l8_n263(x)
- else
- fun_l8_n801(x)
- end
-end
-
-def fun_l7_n954(x)
- if (x < 1)
- fun_l8_n507(x)
- else
- fun_l8_n781(x)
- end
-end
-
-def fun_l7_n955(x)
- if (x < 1)
- fun_l8_n328(x)
- else
- fun_l8_n886(x)
- end
-end
-
-def fun_l7_n956(x)
- if (x < 1)
- fun_l8_n653(x)
- else
- fun_l8_n847(x)
- end
-end
-
-def fun_l7_n957(x)
- if (x < 1)
- fun_l8_n594(x)
- else
- fun_l8_n9(x)
- end
-end
-
-def fun_l7_n958(x)
- if (x < 1)
- fun_l8_n818(x)
- else
- fun_l8_n912(x)
- end
-end
-
-def fun_l7_n959(x)
- if (x < 1)
- fun_l8_n941(x)
- else
- fun_l8_n394(x)
- end
-end
-
-def fun_l7_n960(x)
- if (x < 1)
- fun_l8_n151(x)
- else
- fun_l8_n426(x)
- end
-end
-
-def fun_l7_n961(x)
- if (x < 1)
- fun_l8_n276(x)
- else
- fun_l8_n458(x)
- end
-end
-
-def fun_l7_n962(x)
- if (x < 1)
- fun_l8_n310(x)
- else
- fun_l8_n472(x)
- end
-end
-
-def fun_l7_n963(x)
- if (x < 1)
- fun_l8_n103(x)
- else
- fun_l8_n995(x)
- end
-end
-
-def fun_l7_n964(x)
- if (x < 1)
- fun_l8_n808(x)
- else
- fun_l8_n41(x)
- end
-end
-
-def fun_l7_n965(x)
- if (x < 1)
- fun_l8_n840(x)
- else
- fun_l8_n143(x)
- end
-end
-
-def fun_l7_n966(x)
- if (x < 1)
- fun_l8_n855(x)
- else
- fun_l8_n38(x)
- end
-end
-
-def fun_l7_n967(x)
- if (x < 1)
- fun_l8_n316(x)
- else
- fun_l8_n86(x)
- end
-end
-
-def fun_l7_n968(x)
- if (x < 1)
- fun_l8_n856(x)
- else
- fun_l8_n182(x)
- end
-end
-
-def fun_l7_n969(x)
- if (x < 1)
- fun_l8_n436(x)
- else
- fun_l8_n460(x)
- end
-end
-
-def fun_l7_n970(x)
- if (x < 1)
- fun_l8_n187(x)
- else
- fun_l8_n90(x)
- end
-end
-
-def fun_l7_n971(x)
- if (x < 1)
- fun_l8_n689(x)
- else
- fun_l8_n921(x)
- end
-end
-
-def fun_l7_n972(x)
- if (x < 1)
- fun_l8_n207(x)
- else
- fun_l8_n79(x)
- end
-end
-
-def fun_l7_n973(x)
- if (x < 1)
- fun_l8_n137(x)
- else
- fun_l8_n17(x)
- end
-end
-
-def fun_l7_n974(x)
- if (x < 1)
- fun_l8_n813(x)
- else
- fun_l8_n944(x)
- end
-end
-
-def fun_l7_n975(x)
- if (x < 1)
- fun_l8_n589(x)
- else
- fun_l8_n416(x)
- end
-end
-
-def fun_l7_n976(x)
- if (x < 1)
- fun_l8_n763(x)
- else
- fun_l8_n289(x)
- end
-end
-
-def fun_l7_n977(x)
- if (x < 1)
- fun_l8_n118(x)
- else
- fun_l8_n998(x)
- end
-end
-
-def fun_l7_n978(x)
- if (x < 1)
- fun_l8_n382(x)
- else
- fun_l8_n216(x)
- end
-end
-
-def fun_l7_n979(x)
- if (x < 1)
- fun_l8_n304(x)
- else
- fun_l8_n586(x)
- end
-end
-
-def fun_l7_n980(x)
- if (x < 1)
- fun_l8_n693(x)
- else
- fun_l8_n118(x)
- end
-end
-
-def fun_l7_n981(x)
- if (x < 1)
- fun_l8_n669(x)
- else
- fun_l8_n796(x)
- end
-end
-
-def fun_l7_n982(x)
- if (x < 1)
- fun_l8_n187(x)
- else
- fun_l8_n143(x)
- end
-end
-
-def fun_l7_n983(x)
- if (x < 1)
- fun_l8_n848(x)
- else
- fun_l8_n172(x)
- end
-end
-
-def fun_l7_n984(x)
- if (x < 1)
- fun_l8_n782(x)
- else
- fun_l8_n670(x)
- end
-end
-
-def fun_l7_n985(x)
- if (x < 1)
- fun_l8_n275(x)
- else
- fun_l8_n520(x)
- end
-end
-
-def fun_l7_n986(x)
- if (x < 1)
- fun_l8_n841(x)
- else
- fun_l8_n446(x)
- end
-end
-
-def fun_l7_n987(x)
- if (x < 1)
- fun_l8_n712(x)
- else
- fun_l8_n976(x)
- end
-end
-
-def fun_l7_n988(x)
- if (x < 1)
- fun_l8_n115(x)
- else
- fun_l8_n222(x)
- end
-end
-
-def fun_l7_n989(x)
- if (x < 1)
- fun_l8_n23(x)
- else
- fun_l8_n665(x)
- end
-end
-
-def fun_l7_n990(x)
- if (x < 1)
- fun_l8_n416(x)
- else
- fun_l8_n455(x)
- end
-end
-
-def fun_l7_n991(x)
- if (x < 1)
- fun_l8_n556(x)
- else
- fun_l8_n971(x)
- end
-end
-
-def fun_l7_n992(x)
- if (x < 1)
- fun_l8_n726(x)
- else
- fun_l8_n312(x)
- end
-end
-
-def fun_l7_n993(x)
- if (x < 1)
- fun_l8_n354(x)
- else
- fun_l8_n860(x)
- end
-end
-
-def fun_l7_n994(x)
- if (x < 1)
- fun_l8_n62(x)
- else
- fun_l8_n290(x)
- end
-end
-
-def fun_l7_n995(x)
- if (x < 1)
- fun_l8_n695(x)
- else
- fun_l8_n881(x)
- end
-end
-
-def fun_l7_n996(x)
- if (x < 1)
- fun_l8_n938(x)
- else
- fun_l8_n566(x)
- end
-end
-
-def fun_l7_n997(x)
- if (x < 1)
- fun_l8_n379(x)
- else
- fun_l8_n731(x)
- end
-end
-
-def fun_l7_n998(x)
- if (x < 1)
- fun_l8_n320(x)
- else
- fun_l8_n339(x)
- end
-end
-
-def fun_l7_n999(x)
- if (x < 1)
- fun_l8_n219(x)
- else
- fun_l8_n320(x)
- end
-end
-
-def fun_l8_n0(x)
- if (x < 1)
- fun_l9_n590(x)
- else
- fun_l9_n825(x)
- end
-end
-
-def fun_l8_n1(x)
- if (x < 1)
- fun_l9_n301(x)
- else
- fun_l9_n457(x)
- end
-end
-
-def fun_l8_n2(x)
- if (x < 1)
- fun_l9_n637(x)
- else
- fun_l9_n909(x)
- end
-end
-
-def fun_l8_n3(x)
- if (x < 1)
- fun_l9_n485(x)
- else
- fun_l9_n603(x)
- end
-end
-
-def fun_l8_n4(x)
- if (x < 1)
- fun_l9_n465(x)
- else
- fun_l9_n39(x)
- end
-end
-
-def fun_l8_n5(x)
- if (x < 1)
- fun_l9_n861(x)
- else
- fun_l9_n153(x)
- end
-end
-
-def fun_l8_n6(x)
- if (x < 1)
- fun_l9_n130(x)
- else
- fun_l9_n401(x)
- end
-end
-
-def fun_l8_n7(x)
- if (x < 1)
- fun_l9_n726(x)
- else
- fun_l9_n248(x)
- end
-end
-
-def fun_l8_n8(x)
- if (x < 1)
- fun_l9_n607(x)
- else
- fun_l9_n681(x)
- end
-end
-
-def fun_l8_n9(x)
- if (x < 1)
- fun_l9_n862(x)
- else
- fun_l9_n8(x)
- end
-end
-
-def fun_l8_n10(x)
- if (x < 1)
- fun_l9_n607(x)
- else
- fun_l9_n373(x)
- end
-end
-
-def fun_l8_n11(x)
- if (x < 1)
- fun_l9_n692(x)
- else
- fun_l9_n31(x)
- end
-end
-
-def fun_l8_n12(x)
- if (x < 1)
- fun_l9_n412(x)
- else
- fun_l9_n576(x)
- end
-end
-
-def fun_l8_n13(x)
- if (x < 1)
- fun_l9_n582(x)
- else
- fun_l9_n281(x)
- end
-end
-
-def fun_l8_n14(x)
- if (x < 1)
- fun_l9_n986(x)
- else
- fun_l9_n99(x)
- end
-end
-
-def fun_l8_n15(x)
- if (x < 1)
- fun_l9_n807(x)
- else
- fun_l9_n807(x)
- end
-end
-
-def fun_l8_n16(x)
- if (x < 1)
- fun_l9_n635(x)
- else
- fun_l9_n51(x)
- end
-end
-
-def fun_l8_n17(x)
- if (x < 1)
- fun_l9_n193(x)
- else
- fun_l9_n673(x)
- end
-end
-
-def fun_l8_n18(x)
- if (x < 1)
- fun_l9_n897(x)
- else
- fun_l9_n881(x)
- end
-end
-
-def fun_l8_n19(x)
- if (x < 1)
- fun_l9_n288(x)
- else
- fun_l9_n337(x)
- end
-end
-
-def fun_l8_n20(x)
- if (x < 1)
- fun_l9_n754(x)
- else
- fun_l9_n581(x)
- end
-end
-
-def fun_l8_n21(x)
- if (x < 1)
- fun_l9_n265(x)
- else
- fun_l9_n205(x)
- end
-end
-
-def fun_l8_n22(x)
- if (x < 1)
- fun_l9_n784(x)
- else
- fun_l9_n428(x)
- end
-end
-
-def fun_l8_n23(x)
- if (x < 1)
- fun_l9_n821(x)
- else
- fun_l9_n930(x)
- end
-end
-
-def fun_l8_n24(x)
- if (x < 1)
- fun_l9_n237(x)
- else
- fun_l9_n681(x)
- end
-end
-
-def fun_l8_n25(x)
- if (x < 1)
- fun_l9_n32(x)
- else
- fun_l9_n405(x)
- end
-end
-
-def fun_l8_n26(x)
- if (x < 1)
- fun_l9_n370(x)
- else
- fun_l9_n802(x)
- end
-end
-
-def fun_l8_n27(x)
- if (x < 1)
- fun_l9_n4(x)
- else
- fun_l9_n288(x)
- end
-end
-
-def fun_l8_n28(x)
- if (x < 1)
- fun_l9_n9(x)
- else
- fun_l9_n180(x)
- end
-end
-
-def fun_l8_n29(x)
- if (x < 1)
- fun_l9_n585(x)
- else
- fun_l9_n396(x)
- end
-end
-
-def fun_l8_n30(x)
- if (x < 1)
- fun_l9_n954(x)
- else
- fun_l9_n603(x)
- end
-end
-
-def fun_l8_n31(x)
- if (x < 1)
- fun_l9_n808(x)
- else
- fun_l9_n770(x)
- end
-end
-
-def fun_l8_n32(x)
- if (x < 1)
- fun_l9_n442(x)
- else
- fun_l9_n243(x)
- end
-end
-
-def fun_l8_n33(x)
- if (x < 1)
- fun_l9_n139(x)
- else
- fun_l9_n93(x)
- end
-end
-
-def fun_l8_n34(x)
- if (x < 1)
- fun_l9_n270(x)
- else
- fun_l9_n333(x)
- end
-end
-
-def fun_l8_n35(x)
- if (x < 1)
- fun_l9_n542(x)
- else
- fun_l9_n38(x)
- end
-end
-
-def fun_l8_n36(x)
- if (x < 1)
- fun_l9_n892(x)
- else
- fun_l9_n517(x)
- end
-end
-
-def fun_l8_n37(x)
- if (x < 1)
- fun_l9_n599(x)
- else
- fun_l9_n692(x)
- end
-end
-
-def fun_l8_n38(x)
- if (x < 1)
- fun_l9_n0(x)
- else
- fun_l9_n879(x)
- end
-end
-
-def fun_l8_n39(x)
- if (x < 1)
- fun_l9_n835(x)
- else
- fun_l9_n134(x)
- end
-end
-
-def fun_l8_n40(x)
- if (x < 1)
- fun_l9_n151(x)
- else
- fun_l9_n546(x)
- end
-end
-
-def fun_l8_n41(x)
- if (x < 1)
- fun_l9_n214(x)
- else
- fun_l9_n652(x)
- end
-end
-
-def fun_l8_n42(x)
- if (x < 1)
- fun_l9_n239(x)
- else
- fun_l9_n123(x)
- end
-end
-
-def fun_l8_n43(x)
- if (x < 1)
- fun_l9_n763(x)
- else
- fun_l9_n953(x)
- end
-end
-
-def fun_l8_n44(x)
- if (x < 1)
- fun_l9_n449(x)
- else
- fun_l9_n343(x)
- end
-end
-
-def fun_l8_n45(x)
- if (x < 1)
- fun_l9_n727(x)
- else
- fun_l9_n47(x)
- end
-end
-
-def fun_l8_n46(x)
- if (x < 1)
- fun_l9_n684(x)
- else
- fun_l9_n711(x)
- end
-end
-
-def fun_l8_n47(x)
- if (x < 1)
- fun_l9_n895(x)
- else
- fun_l9_n864(x)
- end
-end
-
-def fun_l8_n48(x)
- if (x < 1)
- fun_l9_n544(x)
- else
- fun_l9_n358(x)
- end
-end
-
-def fun_l8_n49(x)
- if (x < 1)
- fun_l9_n829(x)
- else
- fun_l9_n411(x)
- end
-end
-
-def fun_l8_n50(x)
- if (x < 1)
- fun_l9_n673(x)
- else
- fun_l9_n640(x)
- end
-end
-
-def fun_l8_n51(x)
- if (x < 1)
- fun_l9_n9(x)
- else
- fun_l9_n690(x)
- end
-end
-
-def fun_l8_n52(x)
- if (x < 1)
- fun_l9_n293(x)
- else
- fun_l9_n889(x)
- end
-end
-
-def fun_l8_n53(x)
- if (x < 1)
- fun_l9_n141(x)
- else
- fun_l9_n554(x)
- end
-end
-
-def fun_l8_n54(x)
- if (x < 1)
- fun_l9_n982(x)
- else
- fun_l9_n955(x)
- end
-end
-
-def fun_l8_n55(x)
- if (x < 1)
- fun_l9_n382(x)
- else
- fun_l9_n897(x)
- end
-end
-
-def fun_l8_n56(x)
- if (x < 1)
- fun_l9_n332(x)
- else
- fun_l9_n550(x)
- end
-end
-
-def fun_l8_n57(x)
- if (x < 1)
- fun_l9_n46(x)
- else
- fun_l9_n569(x)
- end
-end
-
-def fun_l8_n58(x)
- if (x < 1)
- fun_l9_n556(x)
- else
- fun_l9_n0(x)
- end
-end
-
-def fun_l8_n59(x)
- if (x < 1)
- fun_l9_n931(x)
- else
- fun_l9_n995(x)
- end
-end
-
-def fun_l8_n60(x)
- if (x < 1)
- fun_l9_n470(x)
- else
- fun_l9_n679(x)
- end
-end
-
-def fun_l8_n61(x)
- if (x < 1)
- fun_l9_n269(x)
- else
- fun_l9_n742(x)
- end
-end
-
-def fun_l8_n62(x)
- if (x < 1)
- fun_l9_n542(x)
- else
- fun_l9_n556(x)
- end
-end
-
-def fun_l8_n63(x)
- if (x < 1)
- fun_l9_n713(x)
- else
- fun_l9_n249(x)
- end
-end
-
-def fun_l8_n64(x)
- if (x < 1)
- fun_l9_n842(x)
- else
- fun_l9_n566(x)
- end
-end
-
-def fun_l8_n65(x)
- if (x < 1)
- fun_l9_n708(x)
- else
- fun_l9_n3(x)
- end
-end
-
-def fun_l8_n66(x)
- if (x < 1)
- fun_l9_n845(x)
- else
- fun_l9_n926(x)
- end
-end
-
-def fun_l8_n67(x)
- if (x < 1)
- fun_l9_n823(x)
- else
- fun_l9_n326(x)
- end
-end
-
-def fun_l8_n68(x)
- if (x < 1)
- fun_l9_n457(x)
- else
- fun_l9_n888(x)
- end
-end
-
-def fun_l8_n69(x)
- if (x < 1)
- fun_l9_n454(x)
- else
- fun_l9_n601(x)
- end
-end
-
-def fun_l8_n70(x)
- if (x < 1)
- fun_l9_n636(x)
- else
- fun_l9_n482(x)
- end
-end
-
-def fun_l8_n71(x)
- if (x < 1)
- fun_l9_n778(x)
- else
- fun_l9_n678(x)
- end
-end
-
-def fun_l8_n72(x)
- if (x < 1)
- fun_l9_n715(x)
- else
- fun_l9_n851(x)
- end
-end
-
-def fun_l8_n73(x)
- if (x < 1)
- fun_l9_n330(x)
- else
- fun_l9_n84(x)
- end
-end
-
-def fun_l8_n74(x)
- if (x < 1)
- fun_l9_n524(x)
- else
- fun_l9_n109(x)
- end
-end
-
-def fun_l8_n75(x)
- if (x < 1)
- fun_l9_n610(x)
- else
- fun_l9_n723(x)
- end
-end
-
-def fun_l8_n76(x)
- if (x < 1)
- fun_l9_n964(x)
- else
- fun_l9_n893(x)
- end
-end
-
-def fun_l8_n77(x)
- if (x < 1)
- fun_l9_n653(x)
- else
- fun_l9_n451(x)
- end
-end
-
-def fun_l8_n78(x)
- if (x < 1)
- fun_l9_n582(x)
- else
- fun_l9_n29(x)
- end
-end
-
-def fun_l8_n79(x)
- if (x < 1)
- fun_l9_n219(x)
- else
- fun_l9_n25(x)
- end
-end
-
-def fun_l8_n80(x)
- if (x < 1)
- fun_l9_n471(x)
- else
- fun_l9_n217(x)
- end
-end
-
-def fun_l8_n81(x)
- if (x < 1)
- fun_l9_n339(x)
- else
- fun_l9_n365(x)
- end
-end
-
-def fun_l8_n82(x)
- if (x < 1)
- fun_l9_n808(x)
- else
- fun_l9_n501(x)
- end
-end
-
-def fun_l8_n83(x)
- if (x < 1)
- fun_l9_n23(x)
- else
- fun_l9_n252(x)
- end
-end
-
-def fun_l8_n84(x)
- if (x < 1)
- fun_l9_n628(x)
- else
- fun_l9_n514(x)
- end
-end
-
-def fun_l8_n85(x)
- if (x < 1)
- fun_l9_n22(x)
- else
- fun_l9_n465(x)
- end
-end
-
-def fun_l8_n86(x)
- if (x < 1)
- fun_l9_n553(x)
- else
- fun_l9_n788(x)
- end
-end
-
-def fun_l8_n87(x)
- if (x < 1)
- fun_l9_n852(x)
- else
- fun_l9_n945(x)
- end
-end
-
-def fun_l8_n88(x)
- if (x < 1)
- fun_l9_n886(x)
- else
- fun_l9_n438(x)
- end
-end
-
-def fun_l8_n89(x)
- if (x < 1)
- fun_l9_n821(x)
- else
- fun_l9_n697(x)
- end
-end
-
-def fun_l8_n90(x)
- if (x < 1)
- fun_l9_n388(x)
- else
- fun_l9_n39(x)
- end
-end
-
-def fun_l8_n91(x)
- if (x < 1)
- fun_l9_n135(x)
- else
- fun_l9_n736(x)
- end
-end
-
-def fun_l8_n92(x)
- if (x < 1)
- fun_l9_n225(x)
- else
- fun_l9_n125(x)
- end
-end
-
-def fun_l8_n93(x)
- if (x < 1)
- fun_l9_n201(x)
- else
- fun_l9_n320(x)
- end
-end
-
-def fun_l8_n94(x)
- if (x < 1)
- fun_l9_n30(x)
- else
- fun_l9_n938(x)
- end
-end
-
-def fun_l8_n95(x)
- if (x < 1)
- fun_l9_n987(x)
- else
- fun_l9_n141(x)
- end
-end
-
-def fun_l8_n96(x)
- if (x < 1)
- fun_l9_n968(x)
- else
- fun_l9_n999(x)
- end
-end
-
-def fun_l8_n97(x)
- if (x < 1)
- fun_l9_n852(x)
- else
- fun_l9_n927(x)
- end
-end
-
-def fun_l8_n98(x)
- if (x < 1)
- fun_l9_n720(x)
- else
- fun_l9_n717(x)
- end
-end
-
-def fun_l8_n99(x)
- if (x < 1)
- fun_l9_n907(x)
- else
- fun_l9_n8(x)
- end
-end
-
-def fun_l8_n100(x)
- if (x < 1)
- fun_l9_n973(x)
- else
- fun_l9_n379(x)
- end
-end
-
-def fun_l8_n101(x)
- if (x < 1)
- fun_l9_n370(x)
- else
- fun_l9_n530(x)
- end
-end
-
-def fun_l8_n102(x)
- if (x < 1)
- fun_l9_n411(x)
- else
- fun_l9_n560(x)
- end
-end
-
-def fun_l8_n103(x)
- if (x < 1)
- fun_l9_n54(x)
- else
- fun_l9_n813(x)
- end
-end
-
-def fun_l8_n104(x)
- if (x < 1)
- fun_l9_n217(x)
- else
- fun_l9_n455(x)
- end
-end
-
-def fun_l8_n105(x)
- if (x < 1)
- fun_l9_n667(x)
- else
- fun_l9_n92(x)
- end
-end
-
-def fun_l8_n106(x)
- if (x < 1)
- fun_l9_n933(x)
- else
- fun_l9_n727(x)
- end
-end
-
-def fun_l8_n107(x)
- if (x < 1)
- fun_l9_n578(x)
- else
- fun_l9_n350(x)
- end
-end
-
-def fun_l8_n108(x)
- if (x < 1)
- fun_l9_n75(x)
- else
- fun_l9_n439(x)
- end
-end
-
-def fun_l8_n109(x)
- if (x < 1)
- fun_l9_n21(x)
- else
- fun_l9_n112(x)
- end
-end
-
-def fun_l8_n110(x)
- if (x < 1)
- fun_l9_n57(x)
- else
- fun_l9_n553(x)
- end
-end
-
-def fun_l8_n111(x)
- if (x < 1)
- fun_l9_n347(x)
- else
- fun_l9_n285(x)
- end
-end
-
-def fun_l8_n112(x)
- if (x < 1)
- fun_l9_n837(x)
- else
- fun_l9_n793(x)
- end
-end
-
-def fun_l8_n113(x)
- if (x < 1)
- fun_l9_n517(x)
- else
- fun_l9_n668(x)
- end
-end
-
-def fun_l8_n114(x)
- if (x < 1)
- fun_l9_n486(x)
- else
- fun_l9_n872(x)
- end
-end
-
-def fun_l8_n115(x)
- if (x < 1)
- fun_l9_n454(x)
- else
- fun_l9_n507(x)
- end
-end
-
-def fun_l8_n116(x)
- if (x < 1)
- fun_l9_n110(x)
- else
- fun_l9_n263(x)
- end
-end
-
-def fun_l8_n117(x)
- if (x < 1)
- fun_l9_n878(x)
- else
- fun_l9_n21(x)
- end
-end
-
-def fun_l8_n118(x)
- if (x < 1)
- fun_l9_n564(x)
- else
- fun_l9_n409(x)
- end
-end
-
-def fun_l8_n119(x)
- if (x < 1)
- fun_l9_n511(x)
- else
- fun_l9_n800(x)
- end
-end
-
-def fun_l8_n120(x)
- if (x < 1)
- fun_l9_n501(x)
- else
- fun_l9_n305(x)
- end
-end
-
-def fun_l8_n121(x)
- if (x < 1)
- fun_l9_n630(x)
- else
- fun_l9_n319(x)
- end
-end
-
-def fun_l8_n122(x)
- if (x < 1)
- fun_l9_n271(x)
- else
- fun_l9_n639(x)
- end
-end
-
-def fun_l8_n123(x)
- if (x < 1)
- fun_l9_n812(x)
- else
- fun_l9_n735(x)
- end
-end
-
-def fun_l8_n124(x)
- if (x < 1)
- fun_l9_n828(x)
- else
- fun_l9_n203(x)
- end
-end
-
-def fun_l8_n125(x)
- if (x < 1)
- fun_l9_n228(x)
- else
- fun_l9_n536(x)
- end
-end
-
-def fun_l8_n126(x)
- if (x < 1)
- fun_l9_n426(x)
- else
- fun_l9_n325(x)
- end
-end
-
-def fun_l8_n127(x)
- if (x < 1)
- fun_l9_n19(x)
- else
- fun_l9_n324(x)
- end
-end
-
-def fun_l8_n128(x)
- if (x < 1)
- fun_l9_n419(x)
- else
- fun_l9_n425(x)
- end
-end
-
-def fun_l8_n129(x)
- if (x < 1)
- fun_l9_n384(x)
- else
- fun_l9_n550(x)
- end
-end
-
-def fun_l8_n130(x)
- if (x < 1)
- fun_l9_n956(x)
- else
- fun_l9_n270(x)
- end
-end
-
-def fun_l8_n131(x)
- if (x < 1)
- fun_l9_n20(x)
- else
- fun_l9_n949(x)
- end
-end
-
-def fun_l8_n132(x)
- if (x < 1)
- fun_l9_n317(x)
- else
- fun_l9_n909(x)
- end
-end
-
-def fun_l8_n133(x)
- if (x < 1)
- fun_l9_n131(x)
- else
- fun_l9_n108(x)
- end
-end
-
-def fun_l8_n134(x)
- if (x < 1)
- fun_l9_n648(x)
- else
- fun_l9_n473(x)
- end
-end
-
-def fun_l8_n135(x)
- if (x < 1)
- fun_l9_n837(x)
- else
- fun_l9_n89(x)
- end
-end
-
-def fun_l8_n136(x)
- if (x < 1)
- fun_l9_n637(x)
- else
- fun_l9_n394(x)
- end
-end
-
-def fun_l8_n137(x)
- if (x < 1)
- fun_l9_n608(x)
- else
- fun_l9_n283(x)
- end
-end
-
-def fun_l8_n138(x)
- if (x < 1)
- fun_l9_n728(x)
- else
- fun_l9_n586(x)
- end
-end
-
-def fun_l8_n139(x)
- if (x < 1)
- fun_l9_n689(x)
- else
- fun_l9_n700(x)
- end
-end
-
-def fun_l8_n140(x)
- if (x < 1)
- fun_l9_n532(x)
- else
- fun_l9_n98(x)
- end
-end
-
-def fun_l8_n141(x)
- if (x < 1)
- fun_l9_n696(x)
- else
- fun_l9_n951(x)
- end
-end
-
-def fun_l8_n142(x)
- if (x < 1)
- fun_l9_n28(x)
- else
- fun_l9_n714(x)
- end
-end
-
-def fun_l8_n143(x)
- if (x < 1)
- fun_l9_n438(x)
- else
- fun_l9_n934(x)
- end
-end
-
-def fun_l8_n144(x)
- if (x < 1)
- fun_l9_n738(x)
- else
- fun_l9_n473(x)
- end
-end
-
-def fun_l8_n145(x)
- if (x < 1)
- fun_l9_n201(x)
- else
- fun_l9_n634(x)
- end
-end
-
-def fun_l8_n146(x)
- if (x < 1)
- fun_l9_n391(x)
- else
- fun_l9_n703(x)
- end
-end
-
-def fun_l8_n147(x)
- if (x < 1)
- fun_l9_n740(x)
- else
- fun_l9_n265(x)
- end
-end
-
-def fun_l8_n148(x)
- if (x < 1)
- fun_l9_n303(x)
- else
- fun_l9_n162(x)
- end
-end
-
-def fun_l8_n149(x)
- if (x < 1)
- fun_l9_n518(x)
- else
- fun_l9_n899(x)
- end
-end
-
-def fun_l8_n150(x)
- if (x < 1)
- fun_l9_n847(x)
- else
- fun_l9_n840(x)
- end
-end
-
-def fun_l8_n151(x)
- if (x < 1)
- fun_l9_n567(x)
- else
- fun_l9_n29(x)
- end
-end
-
-def fun_l8_n152(x)
- if (x < 1)
- fun_l9_n426(x)
- else
- fun_l9_n578(x)
- end
-end
-
-def fun_l8_n153(x)
- if (x < 1)
- fun_l9_n617(x)
- else
- fun_l9_n703(x)
- end
-end
-
-def fun_l8_n154(x)
- if (x < 1)
- fun_l9_n673(x)
- else
- fun_l9_n663(x)
- end
-end
-
-def fun_l8_n155(x)
- if (x < 1)
- fun_l9_n456(x)
- else
- fun_l9_n406(x)
- end
-end
-
-def fun_l8_n156(x)
- if (x < 1)
- fun_l9_n297(x)
- else
- fun_l9_n444(x)
- end
-end
-
-def fun_l8_n157(x)
- if (x < 1)
- fun_l9_n300(x)
- else
- fun_l9_n179(x)
- end
-end
-
-def fun_l8_n158(x)
- if (x < 1)
- fun_l9_n646(x)
- else
- fun_l9_n9(x)
- end
-end
-
-def fun_l8_n159(x)
- if (x < 1)
- fun_l9_n133(x)
- else
- fun_l9_n228(x)
- end
-end
-
-def fun_l8_n160(x)
- if (x < 1)
- fun_l9_n814(x)
- else
- fun_l9_n775(x)
- end
-end
-
-def fun_l8_n161(x)
- if (x < 1)
- fun_l9_n748(x)
- else
- fun_l9_n849(x)
- end
-end
-
-def fun_l8_n162(x)
- if (x < 1)
- fun_l9_n209(x)
- else
- fun_l9_n273(x)
- end
-end
-
-def fun_l8_n163(x)
- if (x < 1)
- fun_l9_n116(x)
- else
- fun_l9_n669(x)
- end
-end
-
-def fun_l8_n164(x)
- if (x < 1)
- fun_l9_n714(x)
- else
- fun_l9_n621(x)
- end
-end
-
-def fun_l8_n165(x)
- if (x < 1)
- fun_l9_n619(x)
- else
- fun_l9_n365(x)
- end
-end
-
-def fun_l8_n166(x)
- if (x < 1)
- fun_l9_n756(x)
- else
- fun_l9_n745(x)
- end
-end
-
-def fun_l8_n167(x)
- if (x < 1)
- fun_l9_n12(x)
- else
- fun_l9_n633(x)
- end
-end
-
-def fun_l8_n168(x)
- if (x < 1)
- fun_l9_n619(x)
- else
- fun_l9_n31(x)
- end
-end
-
-def fun_l8_n169(x)
- if (x < 1)
- fun_l9_n685(x)
- else
- fun_l9_n107(x)
- end
-end
-
-def fun_l8_n170(x)
- if (x < 1)
- fun_l9_n636(x)
- else
- fun_l9_n280(x)
- end
-end
-
-def fun_l8_n171(x)
- if (x < 1)
- fun_l9_n254(x)
- else
- fun_l9_n742(x)
- end
-end
-
-def fun_l8_n172(x)
- if (x < 1)
- fun_l9_n829(x)
- else
- fun_l9_n632(x)
- end
-end
-
-def fun_l8_n173(x)
- if (x < 1)
- fun_l9_n341(x)
- else
- fun_l9_n186(x)
- end
-end
-
-def fun_l8_n174(x)
- if (x < 1)
- fun_l9_n903(x)
- else
- fun_l9_n93(x)
- end
-end
-
-def fun_l8_n175(x)
- if (x < 1)
- fun_l9_n416(x)
- else
- fun_l9_n318(x)
- end
-end
-
-def fun_l8_n176(x)
- if (x < 1)
- fun_l9_n893(x)
- else
- fun_l9_n438(x)
- end
-end
-
-def fun_l8_n177(x)
- if (x < 1)
- fun_l9_n551(x)
- else
- fun_l9_n312(x)
- end
-end
-
-def fun_l8_n178(x)
- if (x < 1)
- fun_l9_n582(x)
- else
- fun_l9_n926(x)
- end
-end
-
-def fun_l8_n179(x)
- if (x < 1)
- fun_l9_n547(x)
- else
- fun_l9_n804(x)
- end
-end
-
-def fun_l8_n180(x)
- if (x < 1)
- fun_l9_n589(x)
- else
- fun_l9_n246(x)
- end
-end
-
-def fun_l8_n181(x)
- if (x < 1)
- fun_l9_n67(x)
- else
- fun_l9_n345(x)
- end
-end
-
-def fun_l8_n182(x)
- if (x < 1)
- fun_l9_n958(x)
- else
- fun_l9_n923(x)
- end
-end
-
-def fun_l8_n183(x)
- if (x < 1)
- fun_l9_n418(x)
- else
- fun_l9_n532(x)
- end
-end
-
-def fun_l8_n184(x)
- if (x < 1)
- fun_l9_n372(x)
- else
- fun_l9_n808(x)
- end
-end
-
-def fun_l8_n185(x)
- if (x < 1)
- fun_l9_n849(x)
- else
- fun_l9_n755(x)
- end
-end
-
-def fun_l8_n186(x)
- if (x < 1)
- fun_l9_n544(x)
- else
- fun_l9_n73(x)
- end
-end
-
-def fun_l8_n187(x)
- if (x < 1)
- fun_l9_n729(x)
- else
- fun_l9_n295(x)
- end
-end
-
-def fun_l8_n188(x)
- if (x < 1)
- fun_l9_n782(x)
- else
- fun_l9_n117(x)
- end
-end
-
-def fun_l8_n189(x)
- if (x < 1)
- fun_l9_n947(x)
- else
- fun_l9_n93(x)
- end
-end
-
-def fun_l8_n190(x)
- if (x < 1)
- fun_l9_n989(x)
- else
- fun_l9_n444(x)
- end
-end
-
-def fun_l8_n191(x)
- if (x < 1)
- fun_l9_n394(x)
- else
- fun_l9_n741(x)
- end
-end
-
-def fun_l8_n192(x)
- if (x < 1)
- fun_l9_n582(x)
- else
- fun_l9_n333(x)
- end
-end
-
-def fun_l8_n193(x)
- if (x < 1)
- fun_l9_n73(x)
- else
- fun_l9_n227(x)
- end
-end
-
-def fun_l8_n194(x)
- if (x < 1)
- fun_l9_n946(x)
- else
- fun_l9_n354(x)
- end
-end
-
-def fun_l8_n195(x)
- if (x < 1)
- fun_l9_n383(x)
- else
- fun_l9_n863(x)
- end
-end
-
-def fun_l8_n196(x)
- if (x < 1)
- fun_l9_n441(x)
- else
- fun_l9_n947(x)
- end
-end
-
-def fun_l8_n197(x)
- if (x < 1)
- fun_l9_n506(x)
- else
- fun_l9_n45(x)
- end
-end
-
-def fun_l8_n198(x)
- if (x < 1)
- fun_l9_n890(x)
- else
- fun_l9_n341(x)
- end
-end
-
-def fun_l8_n199(x)
- if (x < 1)
- fun_l9_n75(x)
- else
- fun_l9_n56(x)
- end
-end
-
-def fun_l8_n200(x)
- if (x < 1)
- fun_l9_n386(x)
- else
- fun_l9_n280(x)
- end
-end
-
-def fun_l8_n201(x)
- if (x < 1)
- fun_l9_n364(x)
- else
- fun_l9_n424(x)
- end
-end
-
-def fun_l8_n202(x)
- if (x < 1)
- fun_l9_n923(x)
- else
- fun_l9_n326(x)
- end
-end
-
-def fun_l8_n203(x)
- if (x < 1)
- fun_l9_n692(x)
- else
- fun_l9_n502(x)
- end
-end
-
-def fun_l8_n204(x)
- if (x < 1)
- fun_l9_n508(x)
- else
- fun_l9_n561(x)
- end
-end
-
-def fun_l8_n205(x)
- if (x < 1)
- fun_l9_n496(x)
- else
- fun_l9_n949(x)
- end
-end
-
-def fun_l8_n206(x)
- if (x < 1)
- fun_l9_n852(x)
- else
- fun_l9_n447(x)
- end
-end
-
-def fun_l8_n207(x)
- if (x < 1)
- fun_l9_n757(x)
- else
- fun_l9_n782(x)
- end
-end
-
-def fun_l8_n208(x)
- if (x < 1)
- fun_l9_n505(x)
- else
- fun_l9_n32(x)
- end
-end
-
-def fun_l8_n209(x)
- if (x < 1)
- fun_l9_n591(x)
- else
- fun_l9_n967(x)
- end
-end
-
-def fun_l8_n210(x)
- if (x < 1)
- fun_l9_n537(x)
- else
- fun_l9_n380(x)
- end
-end
-
-def fun_l8_n211(x)
- if (x < 1)
- fun_l9_n19(x)
- else
- fun_l9_n362(x)
- end
-end
-
-def fun_l8_n212(x)
- if (x < 1)
- fun_l9_n759(x)
- else
- fun_l9_n835(x)
- end
-end
-
-def fun_l8_n213(x)
- if (x < 1)
- fun_l9_n518(x)
- else
- fun_l9_n294(x)
- end
-end
-
-def fun_l8_n214(x)
- if (x < 1)
- fun_l9_n921(x)
- else
- fun_l9_n687(x)
- end
-end
-
-def fun_l8_n215(x)
- if (x < 1)
- fun_l9_n114(x)
- else
- fun_l9_n130(x)
- end
-end
-
-def fun_l8_n216(x)
- if (x < 1)
- fun_l9_n829(x)
- else
- fun_l9_n8(x)
- end
-end
-
-def fun_l8_n217(x)
- if (x < 1)
- fun_l9_n875(x)
- else
- fun_l9_n392(x)
- end
-end
-
-def fun_l8_n218(x)
- if (x < 1)
- fun_l9_n13(x)
- else
- fun_l9_n907(x)
- end
-end
-
-def fun_l8_n219(x)
- if (x < 1)
- fun_l9_n457(x)
- else
- fun_l9_n77(x)
- end
-end
-
-def fun_l8_n220(x)
- if (x < 1)
- fun_l9_n404(x)
- else
- fun_l9_n12(x)
- end
-end
-
-def fun_l8_n221(x)
- if (x < 1)
- fun_l9_n244(x)
- else
- fun_l9_n231(x)
- end
-end
-
-def fun_l8_n222(x)
- if (x < 1)
- fun_l9_n205(x)
- else
- fun_l9_n458(x)
- end
-end
-
-def fun_l8_n223(x)
- if (x < 1)
- fun_l9_n570(x)
- else
- fun_l9_n44(x)
- end
-end
-
-def fun_l8_n224(x)
- if (x < 1)
- fun_l9_n651(x)
- else
- fun_l9_n836(x)
- end
-end
-
-def fun_l8_n225(x)
- if (x < 1)
- fun_l9_n518(x)
- else
- fun_l9_n845(x)
- end
-end
-
-def fun_l8_n226(x)
- if (x < 1)
- fun_l9_n92(x)
- else
- fun_l9_n637(x)
- end
-end
-
-def fun_l8_n227(x)
- if (x < 1)
- fun_l9_n990(x)
- else
- fun_l9_n926(x)
- end
-end
-
-def fun_l8_n228(x)
- if (x < 1)
- fun_l9_n465(x)
- else
- fun_l9_n764(x)
- end
-end
-
-def fun_l8_n229(x)
- if (x < 1)
- fun_l9_n7(x)
- else
- fun_l9_n981(x)
- end
-end
-
-def fun_l8_n230(x)
- if (x < 1)
- fun_l9_n250(x)
- else
- fun_l9_n690(x)
- end
-end
-
-def fun_l8_n231(x)
- if (x < 1)
- fun_l9_n101(x)
- else
- fun_l9_n342(x)
- end
-end
-
-def fun_l8_n232(x)
- if (x < 1)
- fun_l9_n659(x)
- else
- fun_l9_n216(x)
- end
-end
-
-def fun_l8_n233(x)
- if (x < 1)
- fun_l9_n129(x)
- else
- fun_l9_n439(x)
- end
-end
-
-def fun_l8_n234(x)
- if (x < 1)
- fun_l9_n616(x)
- else
- fun_l9_n700(x)
- end
-end
-
-def fun_l8_n235(x)
- if (x < 1)
- fun_l9_n850(x)
- else
- fun_l9_n254(x)
- end
-end
-
-def fun_l8_n236(x)
- if (x < 1)
- fun_l9_n186(x)
- else
- fun_l9_n592(x)
- end
-end
-
-def fun_l8_n237(x)
- if (x < 1)
- fun_l9_n895(x)
- else
- fun_l9_n752(x)
- end
-end
-
-def fun_l8_n238(x)
- if (x < 1)
- fun_l9_n496(x)
- else
- fun_l9_n784(x)
- end
-end
-
-def fun_l8_n239(x)
- if (x < 1)
- fun_l9_n579(x)
- else
- fun_l9_n144(x)
- end
-end
-
-def fun_l8_n240(x)
- if (x < 1)
- fun_l9_n805(x)
- else
- fun_l9_n851(x)
- end
-end
-
-def fun_l8_n241(x)
- if (x < 1)
- fun_l9_n756(x)
- else
- fun_l9_n332(x)
- end
-end
-
-def fun_l8_n242(x)
- if (x < 1)
- fun_l9_n898(x)
- else
- fun_l9_n285(x)
- end
-end
-
-def fun_l8_n243(x)
- if (x < 1)
- fun_l9_n729(x)
- else
- fun_l9_n149(x)
- end
-end
-
-def fun_l8_n244(x)
- if (x < 1)
- fun_l9_n881(x)
- else
- fun_l9_n356(x)
- end
-end
-
-def fun_l8_n245(x)
- if (x < 1)
- fun_l9_n351(x)
- else
- fun_l9_n805(x)
- end
-end
-
-def fun_l8_n246(x)
- if (x < 1)
- fun_l9_n493(x)
- else
- fun_l9_n200(x)
- end
-end
-
-def fun_l8_n247(x)
- if (x < 1)
- fun_l9_n706(x)
- else
- fun_l9_n917(x)
- end
-end
-
-def fun_l8_n248(x)
- if (x < 1)
- fun_l9_n370(x)
- else
- fun_l9_n755(x)
- end
-end
-
-def fun_l8_n249(x)
- if (x < 1)
- fun_l9_n859(x)
- else
- fun_l9_n496(x)
- end
-end
-
-def fun_l8_n250(x)
- if (x < 1)
- fun_l9_n443(x)
- else
- fun_l9_n113(x)
- end
-end
-
-def fun_l8_n251(x)
- if (x < 1)
- fun_l9_n631(x)
- else
- fun_l9_n195(x)
- end
-end
-
-def fun_l8_n252(x)
- if (x < 1)
- fun_l9_n357(x)
- else
- fun_l9_n694(x)
- end
-end
-
-def fun_l8_n253(x)
- if (x < 1)
- fun_l9_n387(x)
- else
- fun_l9_n820(x)
- end
-end
-
-def fun_l8_n254(x)
- if (x < 1)
- fun_l9_n909(x)
- else
- fun_l9_n559(x)
- end
-end
-
-def fun_l8_n255(x)
- if (x < 1)
- fun_l9_n474(x)
- else
- fun_l9_n864(x)
- end
-end
-
-def fun_l8_n256(x)
- if (x < 1)
- fun_l9_n914(x)
- else
- fun_l9_n672(x)
- end
-end
-
-def fun_l8_n257(x)
- if (x < 1)
- fun_l9_n915(x)
- else
- fun_l9_n177(x)
- end
-end
-
-def fun_l8_n258(x)
- if (x < 1)
- fun_l9_n917(x)
- else
- fun_l9_n210(x)
- end
-end
-
-def fun_l8_n259(x)
- if (x < 1)
- fun_l9_n851(x)
- else
- fun_l9_n342(x)
- end
-end
-
-def fun_l8_n260(x)
- if (x < 1)
- fun_l9_n205(x)
- else
- fun_l9_n412(x)
- end
-end
-
-def fun_l8_n261(x)
- if (x < 1)
- fun_l9_n110(x)
- else
- fun_l9_n62(x)
- end
-end
-
-def fun_l8_n262(x)
- if (x < 1)
- fun_l9_n706(x)
- else
- fun_l9_n903(x)
- end
-end
-
-def fun_l8_n263(x)
- if (x < 1)
- fun_l9_n403(x)
- else
- fun_l9_n994(x)
- end
-end
-
-def fun_l8_n264(x)
- if (x < 1)
- fun_l9_n631(x)
- else
- fun_l9_n126(x)
- end
-end
-
-def fun_l8_n265(x)
- if (x < 1)
- fun_l9_n216(x)
- else
- fun_l9_n573(x)
- end
-end
-
-def fun_l8_n266(x)
- if (x < 1)
- fun_l9_n174(x)
- else
- fun_l9_n495(x)
- end
-end
-
-def fun_l8_n267(x)
- if (x < 1)
- fun_l9_n802(x)
- else
- fun_l9_n881(x)
- end
-end
-
-def fun_l8_n268(x)
- if (x < 1)
- fun_l9_n148(x)
- else
- fun_l9_n399(x)
- end
-end
-
-def fun_l8_n269(x)
- if (x < 1)
- fun_l9_n675(x)
- else
- fun_l9_n596(x)
- end
-end
-
-def fun_l8_n270(x)
- if (x < 1)
- fun_l9_n306(x)
- else
- fun_l9_n413(x)
- end
-end
-
-def fun_l8_n271(x)
- if (x < 1)
- fun_l9_n205(x)
- else
- fun_l9_n569(x)
- end
-end
-
-def fun_l8_n272(x)
- if (x < 1)
- fun_l9_n6(x)
- else
- fun_l9_n531(x)
- end
-end
-
-def fun_l8_n273(x)
- if (x < 1)
- fun_l9_n516(x)
- else
- fun_l9_n172(x)
- end
-end
-
-def fun_l8_n274(x)
- if (x < 1)
- fun_l9_n641(x)
- else
- fun_l9_n85(x)
- end
-end
-
-def fun_l8_n275(x)
- if (x < 1)
- fun_l9_n258(x)
- else
- fun_l9_n773(x)
- end
-end
-
-def fun_l8_n276(x)
- if (x < 1)
- fun_l9_n233(x)
- else
- fun_l9_n222(x)
- end
-end
-
-def fun_l8_n277(x)
- if (x < 1)
- fun_l9_n615(x)
- else
- fun_l9_n598(x)
- end
-end
-
-def fun_l8_n278(x)
- if (x < 1)
- fun_l9_n126(x)
- else
- fun_l9_n270(x)
- end
-end
-
-def fun_l8_n279(x)
- if (x < 1)
- fun_l9_n186(x)
- else
- fun_l9_n78(x)
- end
-end
-
-def fun_l8_n280(x)
- if (x < 1)
- fun_l9_n731(x)
- else
- fun_l9_n114(x)
- end
-end
-
-def fun_l8_n281(x)
- if (x < 1)
- fun_l9_n513(x)
- else
- fun_l9_n69(x)
- end
-end
-
-def fun_l8_n282(x)
- if (x < 1)
- fun_l9_n208(x)
- else
- fun_l9_n466(x)
- end
-end
-
-def fun_l8_n283(x)
- if (x < 1)
- fun_l9_n958(x)
- else
- fun_l9_n86(x)
- end
-end
-
-def fun_l8_n284(x)
- if (x < 1)
- fun_l9_n663(x)
- else
- fun_l9_n619(x)
- end
-end
-
-def fun_l8_n285(x)
- if (x < 1)
- fun_l9_n698(x)
- else
- fun_l9_n97(x)
- end
-end
-
-def fun_l8_n286(x)
- if (x < 1)
- fun_l9_n544(x)
- else
- fun_l9_n791(x)
- end
-end
-
-def fun_l8_n287(x)
- if (x < 1)
- fun_l9_n51(x)
- else
- fun_l9_n415(x)
- end
-end
-
-def fun_l8_n288(x)
- if (x < 1)
- fun_l9_n942(x)
- else
- fun_l9_n11(x)
- end
-end
-
-def fun_l8_n289(x)
- if (x < 1)
- fun_l9_n386(x)
- else
- fun_l9_n507(x)
- end
-end
-
-def fun_l8_n290(x)
- if (x < 1)
- fun_l9_n983(x)
- else
- fun_l9_n81(x)
- end
-end
-
-def fun_l8_n291(x)
- if (x < 1)
- fun_l9_n403(x)
- else
- fun_l9_n628(x)
- end
-end
-
-def fun_l8_n292(x)
- if (x < 1)
- fun_l9_n479(x)
- else
- fun_l9_n379(x)
- end
-end
-
-def fun_l8_n293(x)
- if (x < 1)
- fun_l9_n284(x)
- else
- fun_l9_n109(x)
- end
-end
-
-def fun_l8_n294(x)
- if (x < 1)
- fun_l9_n29(x)
- else
- fun_l9_n802(x)
- end
-end
-
-def fun_l8_n295(x)
- if (x < 1)
- fun_l9_n579(x)
- else
- fun_l9_n371(x)
- end
-end
-
-def fun_l8_n296(x)
- if (x < 1)
- fun_l9_n96(x)
- else
- fun_l9_n632(x)
- end
-end
-
-def fun_l8_n297(x)
- if (x < 1)
- fun_l9_n442(x)
- else
- fun_l9_n396(x)
- end
-end
-
-def fun_l8_n298(x)
- if (x < 1)
- fun_l9_n902(x)
- else
- fun_l9_n804(x)
- end
-end
-
-def fun_l8_n299(x)
- if (x < 1)
- fun_l9_n561(x)
- else
- fun_l9_n952(x)
- end
-end
-
-def fun_l8_n300(x)
- if (x < 1)
- fun_l9_n757(x)
- else
- fun_l9_n819(x)
- end
-end
-
-def fun_l8_n301(x)
- if (x < 1)
- fun_l9_n97(x)
- else
- fun_l9_n892(x)
- end
-end
-
-def fun_l8_n302(x)
- if (x < 1)
- fun_l9_n67(x)
- else
- fun_l9_n765(x)
- end
-end
-
-def fun_l8_n303(x)
- if (x < 1)
- fun_l9_n166(x)
- else
- fun_l9_n769(x)
- end
-end
-
-def fun_l8_n304(x)
- if (x < 1)
- fun_l9_n592(x)
- else
- fun_l9_n423(x)
- end
-end
-
-def fun_l8_n305(x)
- if (x < 1)
- fun_l9_n354(x)
- else
- fun_l9_n953(x)
- end
-end
-
-def fun_l8_n306(x)
- if (x < 1)
- fun_l9_n857(x)
- else
- fun_l9_n18(x)
- end
-end
-
-def fun_l8_n307(x)
- if (x < 1)
- fun_l9_n445(x)
- else
- fun_l9_n796(x)
- end
-end
-
-def fun_l8_n308(x)
- if (x < 1)
- fun_l9_n293(x)
- else
- fun_l9_n304(x)
- end
-end
-
-def fun_l8_n309(x)
- if (x < 1)
- fun_l9_n859(x)
- else
- fun_l9_n282(x)
- end
-end
-
-def fun_l8_n310(x)
- if (x < 1)
- fun_l9_n133(x)
- else
- fun_l9_n90(x)
- end
-end
-
-def fun_l8_n311(x)
- if (x < 1)
- fun_l9_n997(x)
- else
- fun_l9_n201(x)
- end
-end
-
-def fun_l8_n312(x)
- if (x < 1)
- fun_l9_n140(x)
- else
- fun_l9_n772(x)
- end
-end
-
-def fun_l8_n313(x)
- if (x < 1)
- fun_l9_n761(x)
- else
- fun_l9_n980(x)
- end
-end
-
-def fun_l8_n314(x)
- if (x < 1)
- fun_l9_n357(x)
- else
- fun_l9_n552(x)
- end
-end
-
-def fun_l8_n315(x)
- if (x < 1)
- fun_l9_n312(x)
- else
- fun_l9_n412(x)
- end
-end
-
-def fun_l8_n316(x)
- if (x < 1)
- fun_l9_n700(x)
- else
- fun_l9_n551(x)
- end
-end
-
-def fun_l8_n317(x)
- if (x < 1)
- fun_l9_n623(x)
- else
- fun_l9_n219(x)
- end
-end
-
-def fun_l8_n318(x)
- if (x < 1)
- fun_l9_n613(x)
- else
- fun_l9_n959(x)
- end
-end
-
-def fun_l8_n319(x)
- if (x < 1)
- fun_l9_n978(x)
- else
- fun_l9_n596(x)
- end
-end
-
-def fun_l8_n320(x)
- if (x < 1)
- fun_l9_n542(x)
- else
- fun_l9_n527(x)
- end
-end
-
-def fun_l8_n321(x)
- if (x < 1)
- fun_l9_n877(x)
- else
- fun_l9_n108(x)
- end
-end
-
-def fun_l8_n322(x)
- if (x < 1)
- fun_l9_n817(x)
- else
- fun_l9_n476(x)
- end
-end
-
-def fun_l8_n323(x)
- if (x < 1)
- fun_l9_n765(x)
- else
- fun_l9_n672(x)
- end
-end
-
-def fun_l8_n324(x)
- if (x < 1)
- fun_l9_n863(x)
- else
- fun_l9_n605(x)
- end
-end
-
-def fun_l8_n325(x)
- if (x < 1)
- fun_l9_n566(x)
- else
- fun_l9_n592(x)
- end
-end
-
-def fun_l8_n326(x)
- if (x < 1)
- fun_l9_n607(x)
- else
- fun_l9_n968(x)
- end
-end
-
-def fun_l8_n327(x)
- if (x < 1)
- fun_l9_n36(x)
- else
- fun_l9_n380(x)
- end
-end
-
-def fun_l8_n328(x)
- if (x < 1)
- fun_l9_n597(x)
- else
- fun_l9_n664(x)
- end
-end
-
-def fun_l8_n329(x)
- if (x < 1)
- fun_l9_n195(x)
- else
- fun_l9_n268(x)
- end
-end
-
-def fun_l8_n330(x)
- if (x < 1)
- fun_l9_n419(x)
- else
- fun_l9_n715(x)
- end
-end
-
-def fun_l8_n331(x)
- if (x < 1)
- fun_l9_n451(x)
- else
- fun_l9_n518(x)
- end
-end
-
-def fun_l8_n332(x)
- if (x < 1)
- fun_l9_n106(x)
- else
- fun_l9_n236(x)
- end
-end
-
-def fun_l8_n333(x)
- if (x < 1)
- fun_l9_n611(x)
- else
- fun_l9_n825(x)
- end
-end
-
-def fun_l8_n334(x)
- if (x < 1)
- fun_l9_n394(x)
- else
- fun_l9_n34(x)
- end
-end
-
-def fun_l8_n335(x)
- if (x < 1)
- fun_l9_n63(x)
- else
- fun_l9_n58(x)
- end
-end
-
-def fun_l8_n336(x)
- if (x < 1)
- fun_l9_n475(x)
- else
- fun_l9_n455(x)
- end
-end
-
-def fun_l8_n337(x)
- if (x < 1)
- fun_l9_n836(x)
- else
- fun_l9_n318(x)
- end
-end
-
-def fun_l8_n338(x)
- if (x < 1)
- fun_l9_n844(x)
- else
- fun_l9_n21(x)
- end
-end
-
-def fun_l8_n339(x)
- if (x < 1)
- fun_l9_n628(x)
- else
- fun_l9_n721(x)
- end
-end
-
-def fun_l8_n340(x)
- if (x < 1)
- fun_l9_n966(x)
- else
- fun_l9_n833(x)
- end
-end
-
-def fun_l8_n341(x)
- if (x < 1)
- fun_l9_n267(x)
- else
- fun_l9_n28(x)
- end
-end
-
-def fun_l8_n342(x)
- if (x < 1)
- fun_l9_n204(x)
- else
- fun_l9_n838(x)
- end
-end
-
-def fun_l8_n343(x)
- if (x < 1)
- fun_l9_n151(x)
- else
- fun_l9_n382(x)
- end
-end
-
-def fun_l8_n344(x)
- if (x < 1)
- fun_l9_n409(x)
- else
- fun_l9_n591(x)
- end
-end
-
-def fun_l8_n345(x)
- if (x < 1)
- fun_l9_n680(x)
- else
- fun_l9_n912(x)
- end
-end
-
-def fun_l8_n346(x)
- if (x < 1)
- fun_l9_n150(x)
- else
- fun_l9_n34(x)
- end
-end
-
-def fun_l8_n347(x)
- if (x < 1)
- fun_l9_n538(x)
- else
- fun_l9_n441(x)
- end
-end
-
-def fun_l8_n348(x)
- if (x < 1)
- fun_l9_n707(x)
- else
- fun_l9_n199(x)
- end
-end
-
-def fun_l8_n349(x)
- if (x < 1)
- fun_l9_n245(x)
- else
- fun_l9_n809(x)
- end
-end
-
-def fun_l8_n350(x)
- if (x < 1)
- fun_l9_n16(x)
- else
- fun_l9_n565(x)
- end
-end
-
-def fun_l8_n351(x)
- if (x < 1)
- fun_l9_n857(x)
- else
- fun_l9_n37(x)
- end
-end
-
-def fun_l8_n352(x)
- if (x < 1)
- fun_l9_n816(x)
- else
- fun_l9_n941(x)
- end
-end
-
-def fun_l8_n353(x)
- if (x < 1)
- fun_l9_n605(x)
- else
- fun_l9_n476(x)
- end
-end
-
-def fun_l8_n354(x)
- if (x < 1)
- fun_l9_n641(x)
- else
- fun_l9_n319(x)
- end
-end
-
-def fun_l8_n355(x)
- if (x < 1)
- fun_l9_n133(x)
- else
- fun_l9_n676(x)
- end
-end
-
-def fun_l8_n356(x)
- if (x < 1)
- fun_l9_n826(x)
- else
- fun_l9_n926(x)
- end
-end
-
-def fun_l8_n357(x)
- if (x < 1)
- fun_l9_n17(x)
- else
- fun_l9_n486(x)
- end
-end
-
-def fun_l8_n358(x)
- if (x < 1)
- fun_l9_n90(x)
- else
- fun_l9_n744(x)
- end
-end
-
-def fun_l8_n359(x)
- if (x < 1)
- fun_l9_n745(x)
- else
- fun_l9_n158(x)
- end
-end
-
-def fun_l8_n360(x)
- if (x < 1)
- fun_l9_n261(x)
- else
- fun_l9_n878(x)
- end
-end
-
-def fun_l8_n361(x)
- if (x < 1)
- fun_l9_n832(x)
- else
- fun_l9_n905(x)
- end
-end
-
-def fun_l8_n362(x)
- if (x < 1)
- fun_l9_n879(x)
- else
- fun_l9_n475(x)
- end
-end
-
-def fun_l8_n363(x)
- if (x < 1)
- fun_l9_n586(x)
- else
- fun_l9_n272(x)
- end
-end
-
-def fun_l8_n364(x)
- if (x < 1)
- fun_l9_n469(x)
- else
- fun_l9_n918(x)
- end
-end
-
-def fun_l8_n365(x)
- if (x < 1)
- fun_l9_n568(x)
- else
- fun_l9_n777(x)
- end
-end
-
-def fun_l8_n366(x)
- if (x < 1)
- fun_l9_n662(x)
- else
- fun_l9_n957(x)
- end
-end
-
-def fun_l8_n367(x)
- if (x < 1)
- fun_l9_n26(x)
- else
- fun_l9_n593(x)
- end
-end
-
-def fun_l8_n368(x)
- if (x < 1)
- fun_l9_n766(x)
- else
- fun_l9_n598(x)
- end
-end
-
-def fun_l8_n369(x)
- if (x < 1)
- fun_l9_n362(x)
- else
- fun_l9_n491(x)
- end
-end
-
-def fun_l8_n370(x)
- if (x < 1)
- fun_l9_n205(x)
- else
- fun_l9_n585(x)
- end
-end
-
-def fun_l8_n371(x)
- if (x < 1)
- fun_l9_n301(x)
- else
- fun_l9_n796(x)
- end
-end
-
-def fun_l8_n372(x)
- if (x < 1)
- fun_l9_n527(x)
- else
- fun_l9_n31(x)
- end
-end
-
-def fun_l8_n373(x)
- if (x < 1)
- fun_l9_n461(x)
- else
- fun_l9_n42(x)
- end
-end
-
-def fun_l8_n374(x)
- if (x < 1)
- fun_l9_n288(x)
- else
- fun_l9_n534(x)
- end
-end
-
-def fun_l8_n375(x)
- if (x < 1)
- fun_l9_n558(x)
- else
- fun_l9_n403(x)
- end
-end
-
-def fun_l8_n376(x)
- if (x < 1)
- fun_l9_n835(x)
- else
- fun_l9_n390(x)
- end
-end
-
-def fun_l8_n377(x)
- if (x < 1)
- fun_l9_n658(x)
- else
- fun_l9_n768(x)
- end
-end
-
-def fun_l8_n378(x)
- if (x < 1)
- fun_l9_n856(x)
- else
- fun_l9_n299(x)
- end
-end
-
-def fun_l8_n379(x)
- if (x < 1)
- fun_l9_n196(x)
- else
- fun_l9_n540(x)
- end
-end
-
-def fun_l8_n380(x)
- if (x < 1)
- fun_l9_n70(x)
- else
- fun_l9_n627(x)
- end
-end
-
-def fun_l8_n381(x)
- if (x < 1)
- fun_l9_n28(x)
- else
- fun_l9_n377(x)
- end
-end
-
-def fun_l8_n382(x)
- if (x < 1)
- fun_l9_n955(x)
- else
- fun_l9_n124(x)
- end
-end
-
-def fun_l8_n383(x)
- if (x < 1)
- fun_l9_n16(x)
- else
- fun_l9_n783(x)
- end
-end
-
-def fun_l8_n384(x)
- if (x < 1)
- fun_l9_n843(x)
- else
- fun_l9_n801(x)
- end
-end
-
-def fun_l8_n385(x)
- if (x < 1)
- fun_l9_n876(x)
- else
- fun_l9_n152(x)
- end
-end
-
-def fun_l8_n386(x)
- if (x < 1)
- fun_l9_n6(x)
- else
- fun_l9_n432(x)
- end
-end
-
-def fun_l8_n387(x)
- if (x < 1)
- fun_l9_n636(x)
- else
- fun_l9_n325(x)
- end
-end
-
-def fun_l8_n388(x)
- if (x < 1)
- fun_l9_n267(x)
- else
- fun_l9_n716(x)
- end
-end
-
-def fun_l8_n389(x)
- if (x < 1)
- fun_l9_n898(x)
- else
- fun_l9_n776(x)
- end
-end
-
-def fun_l8_n390(x)
- if (x < 1)
- fun_l9_n481(x)
- else
- fun_l9_n878(x)
- end
-end
-
-def fun_l8_n391(x)
- if (x < 1)
- fun_l9_n398(x)
- else
- fun_l9_n159(x)
- end
-end
-
-def fun_l8_n392(x)
- if (x < 1)
- fun_l9_n889(x)
- else
- fun_l9_n517(x)
- end
-end
-
-def fun_l8_n393(x)
- if (x < 1)
- fun_l9_n460(x)
- else
- fun_l9_n440(x)
- end
-end
-
-def fun_l8_n394(x)
- if (x < 1)
- fun_l9_n576(x)
- else
- fun_l9_n421(x)
- end
-end
-
-def fun_l8_n395(x)
- if (x < 1)
- fun_l9_n310(x)
- else
- fun_l9_n646(x)
- end
-end
-
-def fun_l8_n396(x)
- if (x < 1)
- fun_l9_n914(x)
- else
- fun_l9_n414(x)
- end
-end
-
-def fun_l8_n397(x)
- if (x < 1)
- fun_l9_n330(x)
- else
- fun_l9_n520(x)
- end
-end
-
-def fun_l8_n398(x)
- if (x < 1)
- fun_l9_n175(x)
- else
- fun_l9_n975(x)
- end
-end
-
-def fun_l8_n399(x)
- if (x < 1)
- fun_l9_n443(x)
- else
- fun_l9_n964(x)
- end
-end
-
-def fun_l8_n400(x)
- if (x < 1)
- fun_l9_n810(x)
- else
- fun_l9_n102(x)
- end
-end
-
-def fun_l8_n401(x)
- if (x < 1)
- fun_l9_n352(x)
- else
- fun_l9_n295(x)
- end
-end
-
-def fun_l8_n402(x)
- if (x < 1)
- fun_l9_n980(x)
- else
- fun_l9_n974(x)
- end
-end
-
-def fun_l8_n403(x)
- if (x < 1)
- fun_l9_n169(x)
- else
- fun_l9_n877(x)
- end
-end
-
-def fun_l8_n404(x)
- if (x < 1)
- fun_l9_n333(x)
- else
- fun_l9_n306(x)
- end
-end
-
-def fun_l8_n405(x)
- if (x < 1)
- fun_l9_n183(x)
- else
- fun_l9_n704(x)
- end
-end
-
-def fun_l8_n406(x)
- if (x < 1)
- fun_l9_n532(x)
- else
- fun_l9_n684(x)
- end
-end
-
-def fun_l8_n407(x)
- if (x < 1)
- fun_l9_n526(x)
- else
- fun_l9_n287(x)
- end
-end
-
-def fun_l8_n408(x)
- if (x < 1)
- fun_l9_n377(x)
- else
- fun_l9_n351(x)
- end
-end
-
-def fun_l8_n409(x)
- if (x < 1)
- fun_l9_n770(x)
- else
- fun_l9_n738(x)
- end
-end
-
-def fun_l8_n410(x)
- if (x < 1)
- fun_l9_n61(x)
- else
- fun_l9_n499(x)
- end
-end
-
-def fun_l8_n411(x)
- if (x < 1)
- fun_l9_n156(x)
- else
- fun_l9_n247(x)
- end
-end
-
-def fun_l8_n412(x)
- if (x < 1)
- fun_l9_n431(x)
- else
- fun_l9_n636(x)
- end
-end
-
-def fun_l8_n413(x)
- if (x < 1)
- fun_l9_n540(x)
- else
- fun_l9_n329(x)
- end
-end
-
-def fun_l8_n414(x)
- if (x < 1)
- fun_l9_n49(x)
- else
- fun_l9_n979(x)
- end
-end
-
-def fun_l8_n415(x)
- if (x < 1)
- fun_l9_n94(x)
- else
- fun_l9_n487(x)
- end
-end
-
-def fun_l8_n416(x)
- if (x < 1)
- fun_l9_n679(x)
- else
- fun_l9_n644(x)
- end
-end
-
-def fun_l8_n417(x)
- if (x < 1)
- fun_l9_n907(x)
- else
- fun_l9_n324(x)
- end
-end
-
-def fun_l8_n418(x)
- if (x < 1)
- fun_l9_n426(x)
- else
- fun_l9_n495(x)
- end
-end
-
-def fun_l8_n419(x)
- if (x < 1)
- fun_l9_n273(x)
- else
- fun_l9_n838(x)
- end
-end
-
-def fun_l8_n420(x)
- if (x < 1)
- fun_l9_n631(x)
- else
- fun_l9_n205(x)
- end
-end
-
-def fun_l8_n421(x)
- if (x < 1)
- fun_l9_n484(x)
- else
- fun_l9_n80(x)
- end
-end
-
-def fun_l8_n422(x)
- if (x < 1)
- fun_l9_n908(x)
- else
- fun_l9_n514(x)
- end
-end
-
-def fun_l8_n423(x)
- if (x < 1)
- fun_l9_n265(x)
- else
- fun_l9_n190(x)
- end
-end
-
-def fun_l8_n424(x)
- if (x < 1)
- fun_l9_n463(x)
- else
- fun_l9_n714(x)
- end
-end
-
-def fun_l8_n425(x)
- if (x < 1)
- fun_l9_n780(x)
- else
- fun_l9_n444(x)
- end
-end
-
-def fun_l8_n426(x)
- if (x < 1)
- fun_l9_n418(x)
- else
- fun_l9_n518(x)
- end
-end
-
-def fun_l8_n427(x)
- if (x < 1)
- fun_l9_n912(x)
- else
- fun_l9_n27(x)
- end
-end
-
-def fun_l8_n428(x)
- if (x < 1)
- fun_l9_n157(x)
- else
- fun_l9_n547(x)
- end
-end
-
-def fun_l8_n429(x)
- if (x < 1)
- fun_l9_n760(x)
- else
- fun_l9_n466(x)
- end
-end
-
-def fun_l8_n430(x)
- if (x < 1)
- fun_l9_n726(x)
- else
- fun_l9_n609(x)
- end
-end
-
-def fun_l8_n431(x)
- if (x < 1)
- fun_l9_n206(x)
- else
- fun_l9_n65(x)
- end
-end
-
-def fun_l8_n432(x)
- if (x < 1)
- fun_l9_n396(x)
- else
- fun_l9_n325(x)
- end
-end
-
-def fun_l8_n433(x)
- if (x < 1)
- fun_l9_n100(x)
- else
- fun_l9_n519(x)
- end
-end
-
-def fun_l8_n434(x)
- if (x < 1)
- fun_l9_n923(x)
- else
- fun_l9_n387(x)
- end
-end
-
-def fun_l8_n435(x)
- if (x < 1)
- fun_l9_n334(x)
- else
- fun_l9_n866(x)
- end
-end
-
-def fun_l8_n436(x)
- if (x < 1)
- fun_l9_n896(x)
- else
- fun_l9_n780(x)
- end
-end
-
-def fun_l8_n437(x)
- if (x < 1)
- fun_l9_n328(x)
- else
- fun_l9_n776(x)
- end
-end
-
-def fun_l8_n438(x)
- if (x < 1)
- fun_l9_n414(x)
- else
- fun_l9_n884(x)
- end
-end
-
-def fun_l8_n439(x)
- if (x < 1)
- fun_l9_n528(x)
- else
- fun_l9_n419(x)
- end
-end
-
-def fun_l8_n440(x)
- if (x < 1)
- fun_l9_n192(x)
- else
- fun_l9_n973(x)
- end
-end
-
-def fun_l8_n441(x)
- if (x < 1)
- fun_l9_n679(x)
- else
- fun_l9_n135(x)
- end
-end
-
-def fun_l8_n442(x)
- if (x < 1)
- fun_l9_n294(x)
- else
- fun_l9_n138(x)
- end
-end
-
-def fun_l8_n443(x)
- if (x < 1)
- fun_l9_n784(x)
- else
- fun_l9_n940(x)
- end
-end
-
-def fun_l8_n444(x)
- if (x < 1)
- fun_l9_n834(x)
- else
- fun_l9_n127(x)
- end
-end
-
-def fun_l8_n445(x)
- if (x < 1)
- fun_l9_n217(x)
- else
- fun_l9_n788(x)
- end
-end
-
-def fun_l8_n446(x)
- if (x < 1)
- fun_l9_n173(x)
- else
- fun_l9_n49(x)
- end
-end
-
-def fun_l8_n447(x)
- if (x < 1)
- fun_l9_n493(x)
- else
- fun_l9_n384(x)
- end
-end
-
-def fun_l8_n448(x)
- if (x < 1)
- fun_l9_n770(x)
- else
- fun_l9_n761(x)
- end
-end
-
-def fun_l8_n449(x)
- if (x < 1)
- fun_l9_n633(x)
- else
- fun_l9_n555(x)
- end
-end
-
-def fun_l8_n450(x)
- if (x < 1)
- fun_l9_n25(x)
- else
- fun_l9_n714(x)
- end
-end
-
-def fun_l8_n451(x)
- if (x < 1)
- fun_l9_n960(x)
- else
- fun_l9_n371(x)
- end
-end
-
-def fun_l8_n452(x)
- if (x < 1)
- fun_l9_n733(x)
- else
- fun_l9_n996(x)
- end
-end
-
-def fun_l8_n453(x)
- if (x < 1)
- fun_l9_n628(x)
- else
- fun_l9_n512(x)
- end
-end
-
-def fun_l8_n454(x)
- if (x < 1)
- fun_l9_n406(x)
- else
- fun_l9_n671(x)
- end
-end
-
-def fun_l8_n455(x)
- if (x < 1)
- fun_l9_n47(x)
- else
- fun_l9_n102(x)
- end
-end
-
-def fun_l8_n456(x)
- if (x < 1)
- fun_l9_n85(x)
- else
- fun_l9_n591(x)
- end
-end
-
-def fun_l8_n457(x)
- if (x < 1)
- fun_l9_n234(x)
- else
- fun_l9_n209(x)
- end
-end
-
-def fun_l8_n458(x)
- if (x < 1)
- fun_l9_n186(x)
- else
- fun_l9_n928(x)
- end
-end
-
-def fun_l8_n459(x)
- if (x < 1)
- fun_l9_n36(x)
- else
- fun_l9_n783(x)
- end
-end
-
-def fun_l8_n460(x)
- if (x < 1)
- fun_l9_n775(x)
- else
- fun_l9_n641(x)
- end
-end
-
-def fun_l8_n461(x)
- if (x < 1)
- fun_l9_n426(x)
- else
- fun_l9_n740(x)
- end
-end
-
-def fun_l8_n462(x)
- if (x < 1)
- fun_l9_n770(x)
- else
- fun_l9_n113(x)
- end
-end
-
-def fun_l8_n463(x)
- if (x < 1)
- fun_l9_n94(x)
- else
- fun_l9_n574(x)
- end
-end
-
-def fun_l8_n464(x)
- if (x < 1)
- fun_l9_n457(x)
- else
- fun_l9_n776(x)
- end
-end
-
-def fun_l8_n465(x)
- if (x < 1)
- fun_l9_n252(x)
- else
- fun_l9_n182(x)
- end
-end
-
-def fun_l8_n466(x)
- if (x < 1)
- fun_l9_n157(x)
- else
- fun_l9_n849(x)
- end
-end
-
-def fun_l8_n467(x)
- if (x < 1)
- fun_l9_n393(x)
- else
- fun_l9_n437(x)
- end
-end
-
-def fun_l8_n468(x)
- if (x < 1)
- fun_l9_n269(x)
- else
- fun_l9_n381(x)
- end
-end
-
-def fun_l8_n469(x)
- if (x < 1)
- fun_l9_n97(x)
- else
- fun_l9_n184(x)
- end
-end
-
-def fun_l8_n470(x)
- if (x < 1)
- fun_l9_n157(x)
- else
- fun_l9_n621(x)
- end
-end
-
-def fun_l8_n471(x)
- if (x < 1)
- fun_l9_n627(x)
- else
- fun_l9_n793(x)
- end
-end
-
-def fun_l8_n472(x)
- if (x < 1)
- fun_l9_n117(x)
- else
- fun_l9_n318(x)
- end
-end
-
-def fun_l8_n473(x)
- if (x < 1)
- fun_l9_n238(x)
- else
- fun_l9_n559(x)
- end
-end
-
-def fun_l8_n474(x)
- if (x < 1)
- fun_l9_n81(x)
- else
- fun_l9_n355(x)
- end
-end
-
-def fun_l8_n475(x)
- if (x < 1)
- fun_l9_n889(x)
- else
- fun_l9_n940(x)
- end
-end
-
-def fun_l8_n476(x)
- if (x < 1)
- fun_l9_n358(x)
- else
- fun_l9_n52(x)
- end
-end
-
-def fun_l8_n477(x)
- if (x < 1)
- fun_l9_n144(x)
- else
- fun_l9_n575(x)
- end
-end
-
-def fun_l8_n478(x)
- if (x < 1)
- fun_l9_n975(x)
- else
- fun_l9_n740(x)
- end
-end
-
-def fun_l8_n479(x)
- if (x < 1)
- fun_l9_n552(x)
- else
- fun_l9_n169(x)
- end
-end
-
-def fun_l8_n480(x)
- if (x < 1)
- fun_l9_n854(x)
- else
- fun_l9_n524(x)
- end
-end
-
-def fun_l8_n481(x)
- if (x < 1)
- fun_l9_n461(x)
- else
- fun_l9_n65(x)
- end
-end
-
-def fun_l8_n482(x)
- if (x < 1)
- fun_l9_n809(x)
- else
- fun_l9_n844(x)
- end
-end
-
-def fun_l8_n483(x)
- if (x < 1)
- fun_l9_n741(x)
- else
- fun_l9_n327(x)
- end
-end
-
-def fun_l8_n484(x)
- if (x < 1)
- fun_l9_n560(x)
- else
- fun_l9_n385(x)
- end
-end
-
-def fun_l8_n485(x)
- if (x < 1)
- fun_l9_n798(x)
- else
- fun_l9_n154(x)
- end
-end
-
-def fun_l8_n486(x)
- if (x < 1)
- fun_l9_n892(x)
- else
- fun_l9_n367(x)
- end
-end
-
-def fun_l8_n487(x)
- if (x < 1)
- fun_l9_n423(x)
- else
- fun_l9_n723(x)
- end
-end
-
-def fun_l8_n488(x)
- if (x < 1)
- fun_l9_n618(x)
- else
- fun_l9_n649(x)
- end
-end
-
-def fun_l8_n489(x)
- if (x < 1)
- fun_l9_n261(x)
- else
- fun_l9_n495(x)
- end
-end
-
-def fun_l8_n490(x)
- if (x < 1)
- fun_l9_n566(x)
- else
- fun_l9_n405(x)
- end
-end
-
-def fun_l8_n491(x)
- if (x < 1)
- fun_l9_n718(x)
- else
- fun_l9_n674(x)
- end
-end
-
-def fun_l8_n492(x)
- if (x < 1)
- fun_l9_n487(x)
- else
- fun_l9_n95(x)
- end
-end
-
-def fun_l8_n493(x)
- if (x < 1)
- fun_l9_n473(x)
- else
- fun_l9_n722(x)
- end
-end
-
-def fun_l8_n494(x)
- if (x < 1)
- fun_l9_n460(x)
- else
- fun_l9_n157(x)
- end
-end
-
-def fun_l8_n495(x)
- if (x < 1)
- fun_l9_n812(x)
- else
- fun_l9_n807(x)
- end
-end
-
-def fun_l8_n496(x)
- if (x < 1)
- fun_l9_n609(x)
- else
- fun_l9_n697(x)
- end
-end
-
-def fun_l8_n497(x)
- if (x < 1)
- fun_l9_n894(x)
- else
- fun_l9_n580(x)
- end
-end
-
-def fun_l8_n498(x)
- if (x < 1)
- fun_l9_n642(x)
- else
- fun_l9_n13(x)
- end
-end
-
-def fun_l8_n499(x)
- if (x < 1)
- fun_l9_n961(x)
- else
- fun_l9_n669(x)
- end
-end
-
-def fun_l8_n500(x)
- if (x < 1)
- fun_l9_n587(x)
- else
- fun_l9_n828(x)
- end
-end
-
-def fun_l8_n501(x)
- if (x < 1)
- fun_l9_n30(x)
- else
- fun_l9_n966(x)
- end
-end
-
-def fun_l8_n502(x)
- if (x < 1)
- fun_l9_n436(x)
- else
- fun_l9_n170(x)
- end
-end
-
-def fun_l8_n503(x)
- if (x < 1)
- fun_l9_n20(x)
- else
- fun_l9_n927(x)
- end
-end
-
-def fun_l8_n504(x)
- if (x < 1)
- fun_l9_n326(x)
- else
- fun_l9_n223(x)
- end
-end
-
-def fun_l8_n505(x)
- if (x < 1)
- fun_l9_n911(x)
- else
- fun_l9_n746(x)
- end
-end
-
-def fun_l8_n506(x)
- if (x < 1)
- fun_l9_n333(x)
- else
- fun_l9_n773(x)
- end
-end
-
-def fun_l8_n507(x)
- if (x < 1)
- fun_l9_n514(x)
- else
- fun_l9_n882(x)
- end
-end
-
-def fun_l8_n508(x)
- if (x < 1)
- fun_l9_n918(x)
- else
- fun_l9_n713(x)
- end
-end
-
-def fun_l8_n509(x)
- if (x < 1)
- fun_l9_n694(x)
- else
- fun_l9_n950(x)
- end
-end
-
-def fun_l8_n510(x)
- if (x < 1)
- fun_l9_n77(x)
- else
- fun_l9_n65(x)
- end
-end
-
-def fun_l8_n511(x)
- if (x < 1)
- fun_l9_n506(x)
- else
- fun_l9_n144(x)
- end
-end
-
-def fun_l8_n512(x)
- if (x < 1)
- fun_l9_n69(x)
- else
- fun_l9_n308(x)
- end
-end
-
-def fun_l8_n513(x)
- if (x < 1)
- fun_l9_n377(x)
- else
- fun_l9_n531(x)
- end
-end
-
-def fun_l8_n514(x)
- if (x < 1)
- fun_l9_n342(x)
- else
- fun_l9_n265(x)
- end
-end
-
-def fun_l8_n515(x)
- if (x < 1)
- fun_l9_n453(x)
- else
- fun_l9_n227(x)
- end
-end
-
-def fun_l8_n516(x)
- if (x < 1)
- fun_l9_n396(x)
- else
- fun_l9_n130(x)
- end
-end
-
-def fun_l8_n517(x)
- if (x < 1)
- fun_l9_n715(x)
- else
- fun_l9_n953(x)
- end
-end
-
-def fun_l8_n518(x)
- if (x < 1)
- fun_l9_n326(x)
- else
- fun_l9_n949(x)
- end
-end
-
-def fun_l8_n519(x)
- if (x < 1)
- fun_l9_n535(x)
- else
- fun_l9_n41(x)
- end
-end
-
-def fun_l8_n520(x)
- if (x < 1)
- fun_l9_n985(x)
- else
- fun_l9_n942(x)
- end
-end
-
-def fun_l8_n521(x)
- if (x < 1)
- fun_l9_n347(x)
- else
- fun_l9_n263(x)
- end
-end
-
-def fun_l8_n522(x)
- if (x < 1)
- fun_l9_n532(x)
- else
- fun_l9_n378(x)
- end
-end
-
-def fun_l8_n523(x)
- if (x < 1)
- fun_l9_n362(x)
- else
- fun_l9_n630(x)
- end
-end
-
-def fun_l8_n524(x)
- if (x < 1)
- fun_l9_n382(x)
- else
- fun_l9_n256(x)
- end
-end
-
-def fun_l8_n525(x)
- if (x < 1)
- fun_l9_n444(x)
- else
- fun_l9_n756(x)
- end
-end
-
-def fun_l8_n526(x)
- if (x < 1)
- fun_l9_n5(x)
- else
- fun_l9_n754(x)
- end
-end
-
-def fun_l8_n527(x)
- if (x < 1)
- fun_l9_n157(x)
- else
- fun_l9_n279(x)
- end
-end
-
-def fun_l8_n528(x)
- if (x < 1)
- fun_l9_n110(x)
- else
- fun_l9_n246(x)
- end
-end
-
-def fun_l8_n529(x)
- if (x < 1)
- fun_l9_n312(x)
- else
- fun_l9_n890(x)
- end
-end
-
-def fun_l8_n530(x)
- if (x < 1)
- fun_l9_n624(x)
- else
- fun_l9_n548(x)
- end
-end
-
-def fun_l8_n531(x)
- if (x < 1)
- fun_l9_n615(x)
- else
- fun_l9_n948(x)
- end
-end
-
-def fun_l8_n532(x)
- if (x < 1)
- fun_l9_n519(x)
- else
- fun_l9_n583(x)
- end
-end
-
-def fun_l8_n533(x)
- if (x < 1)
- fun_l9_n292(x)
- else
- fun_l9_n827(x)
- end
-end
-
-def fun_l8_n534(x)
- if (x < 1)
- fun_l9_n893(x)
- else
- fun_l9_n877(x)
- end
-end
-
-def fun_l8_n535(x)
- if (x < 1)
- fun_l9_n873(x)
- else
- fun_l9_n399(x)
- end
-end
-
-def fun_l8_n536(x)
- if (x < 1)
- fun_l9_n497(x)
- else
- fun_l9_n507(x)
- end
-end
-
-def fun_l8_n537(x)
- if (x < 1)
- fun_l9_n404(x)
- else
- fun_l9_n815(x)
- end
-end
-
-def fun_l8_n538(x)
- if (x < 1)
- fun_l9_n258(x)
- else
- fun_l9_n810(x)
- end
-end
-
-def fun_l8_n539(x)
- if (x < 1)
- fun_l9_n907(x)
- else
- fun_l9_n720(x)
- end
-end
-
-def fun_l8_n540(x)
- if (x < 1)
- fun_l9_n752(x)
- else
- fun_l9_n597(x)
- end
-end
-
-def fun_l8_n541(x)
- if (x < 1)
- fun_l9_n802(x)
- else
- fun_l9_n45(x)
- end
-end
-
-def fun_l8_n542(x)
- if (x < 1)
- fun_l9_n635(x)
- else
- fun_l9_n470(x)
- end
-end
-
-def fun_l8_n543(x)
- if (x < 1)
- fun_l9_n353(x)
- else
- fun_l9_n238(x)
- end
-end
-
-def fun_l8_n544(x)
- if (x < 1)
- fun_l9_n656(x)
- else
- fun_l9_n569(x)
- end
-end
-
-def fun_l8_n545(x)
- if (x < 1)
- fun_l9_n494(x)
- else
- fun_l9_n566(x)
- end
-end
-
-def fun_l8_n546(x)
- if (x < 1)
- fun_l9_n65(x)
- else
- fun_l9_n896(x)
- end
-end
-
-def fun_l8_n547(x)
- if (x < 1)
- fun_l9_n995(x)
- else
- fun_l9_n727(x)
- end
-end
-
-def fun_l8_n548(x)
- if (x < 1)
- fun_l9_n562(x)
- else
- fun_l9_n759(x)
- end
-end
-
-def fun_l8_n549(x)
- if (x < 1)
- fun_l9_n210(x)
- else
- fun_l9_n734(x)
- end
-end
-
-def fun_l8_n550(x)
- if (x < 1)
- fun_l9_n482(x)
- else
- fun_l9_n11(x)
- end
-end
-
-def fun_l8_n551(x)
- if (x < 1)
- fun_l9_n86(x)
- else
- fun_l9_n867(x)
- end
-end
-
-def fun_l8_n552(x)
- if (x < 1)
- fun_l9_n647(x)
- else
- fun_l9_n293(x)
- end
-end
-
-def fun_l8_n553(x)
- if (x < 1)
- fun_l9_n98(x)
- else
- fun_l9_n868(x)
- end
-end
-
-def fun_l8_n554(x)
- if (x < 1)
- fun_l9_n380(x)
- else
- fun_l9_n2(x)
- end
-end
-
-def fun_l8_n555(x)
- if (x < 1)
- fun_l9_n274(x)
- else
- fun_l9_n489(x)
- end
-end
-
-def fun_l8_n556(x)
- if (x < 1)
- fun_l9_n623(x)
- else
- fun_l9_n848(x)
- end
-end
-
-def fun_l8_n557(x)
- if (x < 1)
- fun_l9_n642(x)
- else
- fun_l9_n890(x)
- end
-end
-
-def fun_l8_n558(x)
- if (x < 1)
- fun_l9_n247(x)
- else
- fun_l9_n65(x)
- end
-end
-
-def fun_l8_n559(x)
- if (x < 1)
- fun_l9_n896(x)
- else
- fun_l9_n937(x)
- end
-end
-
-def fun_l8_n560(x)
- if (x < 1)
- fun_l9_n592(x)
- else
- fun_l9_n211(x)
- end
-end
-
-def fun_l8_n561(x)
- if (x < 1)
- fun_l9_n205(x)
- else
- fun_l9_n971(x)
- end
-end
-
-def fun_l8_n562(x)
- if (x < 1)
- fun_l9_n663(x)
- else
- fun_l9_n147(x)
- end
-end
-
-def fun_l8_n563(x)
- if (x < 1)
- fun_l9_n722(x)
- else
- fun_l9_n649(x)
- end
-end
-
-def fun_l8_n564(x)
- if (x < 1)
- fun_l9_n605(x)
- else
- fun_l9_n58(x)
- end
-end
-
-def fun_l8_n565(x)
- if (x < 1)
- fun_l9_n914(x)
- else
- fun_l9_n617(x)
- end
-end
-
-def fun_l8_n566(x)
- if (x < 1)
- fun_l9_n772(x)
- else
- fun_l9_n428(x)
- end
-end
-
-def fun_l8_n567(x)
- if (x < 1)
- fun_l9_n870(x)
- else
- fun_l9_n672(x)
- end
-end
-
-def fun_l8_n568(x)
- if (x < 1)
- fun_l9_n946(x)
- else
- fun_l9_n465(x)
- end
-end
-
-def fun_l8_n569(x)
- if (x < 1)
- fun_l9_n507(x)
- else
- fun_l9_n346(x)
- end
-end
-
-def fun_l8_n570(x)
- if (x < 1)
- fun_l9_n157(x)
- else
- fun_l9_n70(x)
- end
-end
-
-def fun_l8_n571(x)
- if (x < 1)
- fun_l9_n549(x)
- else
- fun_l9_n831(x)
- end
-end
-
-def fun_l8_n572(x)
- if (x < 1)
- fun_l9_n463(x)
- else
- fun_l9_n843(x)
- end
-end
-
-def fun_l8_n573(x)
- if (x < 1)
- fun_l9_n676(x)
- else
- fun_l9_n651(x)
- end
-end
-
-def fun_l8_n574(x)
- if (x < 1)
- fun_l9_n648(x)
- else
- fun_l9_n562(x)
- end
-end
-
-def fun_l8_n575(x)
- if (x < 1)
- fun_l9_n771(x)
- else
- fun_l9_n549(x)
- end
-end
-
-def fun_l8_n576(x)
- if (x < 1)
- fun_l9_n899(x)
- else
- fun_l9_n436(x)
- end
-end
-
-def fun_l8_n577(x)
- if (x < 1)
- fun_l9_n110(x)
- else
- fun_l9_n708(x)
- end
-end
-
-def fun_l8_n578(x)
- if (x < 1)
- fun_l9_n49(x)
- else
- fun_l9_n559(x)
- end
-end
-
-def fun_l8_n579(x)
- if (x < 1)
- fun_l9_n937(x)
- else
- fun_l9_n962(x)
- end
-end
-
-def fun_l8_n580(x)
- if (x < 1)
- fun_l9_n970(x)
- else
- fun_l9_n203(x)
- end
-end
-
-def fun_l8_n581(x)
- if (x < 1)
- fun_l9_n901(x)
- else
- fun_l9_n666(x)
- end
-end
-
-def fun_l8_n582(x)
- if (x < 1)
- fun_l9_n79(x)
- else
- fun_l9_n260(x)
- end
-end
-
-def fun_l8_n583(x)
- if (x < 1)
- fun_l9_n167(x)
- else
- fun_l9_n512(x)
- end
-end
-
-def fun_l8_n584(x)
- if (x < 1)
- fun_l9_n750(x)
- else
- fun_l9_n406(x)
- end
-end
-
-def fun_l8_n585(x)
- if (x < 1)
- fun_l9_n118(x)
- else
- fun_l9_n525(x)
- end
-end
-
-def fun_l8_n586(x)
- if (x < 1)
- fun_l9_n573(x)
- else
- fun_l9_n657(x)
- end
-end
-
-def fun_l8_n587(x)
- if (x < 1)
- fun_l9_n228(x)
- else
- fun_l9_n903(x)
- end
-end
-
-def fun_l8_n588(x)
- if (x < 1)
- fun_l9_n971(x)
- else
- fun_l9_n608(x)
- end
-end
-
-def fun_l8_n589(x)
- if (x < 1)
- fun_l9_n334(x)
- else
- fun_l9_n704(x)
- end
-end
-
-def fun_l8_n590(x)
- if (x < 1)
- fun_l9_n398(x)
- else
- fun_l9_n500(x)
- end
-end
-
-def fun_l8_n591(x)
- if (x < 1)
- fun_l9_n196(x)
- else
- fun_l9_n616(x)
- end
-end
-
-def fun_l8_n592(x)
- if (x < 1)
- fun_l9_n756(x)
- else
- fun_l9_n655(x)
- end
-end
-
-def fun_l8_n593(x)
- if (x < 1)
- fun_l9_n864(x)
- else
- fun_l9_n697(x)
- end
-end
-
-def fun_l8_n594(x)
- if (x < 1)
- fun_l9_n35(x)
- else
- fun_l9_n554(x)
- end
-end
-
-def fun_l8_n595(x)
- if (x < 1)
- fun_l9_n480(x)
- else
- fun_l9_n688(x)
- end
-end
-
-def fun_l8_n596(x)
- if (x < 1)
- fun_l9_n846(x)
- else
- fun_l9_n403(x)
- end
-end
-
-def fun_l8_n597(x)
- if (x < 1)
- fun_l9_n522(x)
- else
- fun_l9_n532(x)
- end
-end
-
-def fun_l8_n598(x)
- if (x < 1)
- fun_l9_n800(x)
- else
- fun_l9_n531(x)
- end
-end
-
-def fun_l8_n599(x)
- if (x < 1)
- fun_l9_n64(x)
- else
- fun_l9_n876(x)
- end
-end
-
-def fun_l8_n600(x)
- if (x < 1)
- fun_l9_n614(x)
- else
- fun_l9_n660(x)
- end
-end
-
-def fun_l8_n601(x)
- if (x < 1)
- fun_l9_n119(x)
- else
- fun_l9_n998(x)
- end
-end
-
-def fun_l8_n602(x)
- if (x < 1)
- fun_l9_n549(x)
- else
- fun_l9_n911(x)
- end
-end
-
-def fun_l8_n603(x)
- if (x < 1)
- fun_l9_n659(x)
- else
- fun_l9_n664(x)
- end
-end
-
-def fun_l8_n604(x)
- if (x < 1)
- fun_l9_n570(x)
- else
- fun_l9_n960(x)
- end
-end
-
-def fun_l8_n605(x)
- if (x < 1)
- fun_l9_n82(x)
- else
- fun_l9_n658(x)
- end
-end
-
-def fun_l8_n606(x)
- if (x < 1)
- fun_l9_n379(x)
- else
- fun_l9_n881(x)
- end
-end
-
-def fun_l8_n607(x)
- if (x < 1)
- fun_l9_n104(x)
- else
- fun_l9_n869(x)
- end
-end
-
-def fun_l8_n608(x)
- if (x < 1)
- fun_l9_n874(x)
- else
- fun_l9_n63(x)
- end
-end
-
-def fun_l8_n609(x)
- if (x < 1)
- fun_l9_n921(x)
- else
- fun_l9_n667(x)
- end
-end
-
-def fun_l8_n610(x)
- if (x < 1)
- fun_l9_n1(x)
- else
- fun_l9_n524(x)
- end
-end
-
-def fun_l8_n611(x)
- if (x < 1)
- fun_l9_n523(x)
- else
- fun_l9_n230(x)
- end
-end
-
-def fun_l8_n612(x)
- if (x < 1)
- fun_l9_n914(x)
- else
- fun_l9_n129(x)
- end
-end
-
-def fun_l8_n613(x)
- if (x < 1)
- fun_l9_n591(x)
- else
- fun_l9_n551(x)
- end
-end
-
-def fun_l8_n614(x)
- if (x < 1)
- fun_l9_n860(x)
- else
- fun_l9_n358(x)
- end
-end
-
-def fun_l8_n615(x)
- if (x < 1)
- fun_l9_n387(x)
- else
- fun_l9_n425(x)
- end
-end
-
-def fun_l8_n616(x)
- if (x < 1)
- fun_l9_n426(x)
- else
- fun_l9_n449(x)
- end
-end
-
-def fun_l8_n617(x)
- if (x < 1)
- fun_l9_n627(x)
- else
- fun_l9_n399(x)
- end
-end
-
-def fun_l8_n618(x)
- if (x < 1)
- fun_l9_n244(x)
- else
- fun_l9_n24(x)
- end
-end
-
-def fun_l8_n619(x)
- if (x < 1)
- fun_l9_n574(x)
- else
- fun_l9_n640(x)
- end
-end
-
-def fun_l8_n620(x)
- if (x < 1)
- fun_l9_n20(x)
- else
- fun_l9_n6(x)
- end
-end
-
-def fun_l8_n621(x)
- if (x < 1)
- fun_l9_n148(x)
- else
- fun_l9_n718(x)
- end
-end
-
-def fun_l8_n622(x)
- if (x < 1)
- fun_l9_n151(x)
- else
- fun_l9_n56(x)
- end
-end
-
-def fun_l8_n623(x)
- if (x < 1)
- fun_l9_n672(x)
- else
- fun_l9_n93(x)
- end
-end
-
-def fun_l8_n624(x)
- if (x < 1)
- fun_l9_n948(x)
- else
- fun_l9_n530(x)
- end
-end
-
-def fun_l8_n625(x)
- if (x < 1)
- fun_l9_n0(x)
- else
- fun_l9_n334(x)
- end
-end
-
-def fun_l8_n626(x)
- if (x < 1)
- fun_l9_n736(x)
- else
- fun_l9_n922(x)
- end
-end
-
-def fun_l8_n627(x)
- if (x < 1)
- fun_l9_n291(x)
- else
- fun_l9_n953(x)
- end
-end
-
-def fun_l8_n628(x)
- if (x < 1)
- fun_l9_n493(x)
- else
- fun_l9_n4(x)
- end
-end
-
-def fun_l8_n629(x)
- if (x < 1)
- fun_l9_n890(x)
- else
- fun_l9_n297(x)
- end
-end
-
-def fun_l8_n630(x)
- if (x < 1)
- fun_l9_n860(x)
- else
- fun_l9_n74(x)
- end
-end
-
-def fun_l8_n631(x)
- if (x < 1)
- fun_l9_n400(x)
- else
- fun_l9_n584(x)
- end
-end
-
-def fun_l8_n632(x)
- if (x < 1)
- fun_l9_n714(x)
- else
- fun_l9_n200(x)
- end
-end
-
-def fun_l8_n633(x)
- if (x < 1)
- fun_l9_n433(x)
- else
- fun_l9_n489(x)
- end
-end
-
-def fun_l8_n634(x)
- if (x < 1)
- fun_l9_n974(x)
- else
- fun_l9_n25(x)
- end
-end
-
-def fun_l8_n635(x)
- if (x < 1)
- fun_l9_n739(x)
- else
- fun_l9_n695(x)
- end
-end
-
-def fun_l8_n636(x)
- if (x < 1)
- fun_l9_n855(x)
- else
- fun_l9_n898(x)
- end
-end
-
-def fun_l8_n637(x)
- if (x < 1)
- fun_l9_n868(x)
- else
- fun_l9_n825(x)
- end
-end
-
-def fun_l8_n638(x)
- if (x < 1)
- fun_l9_n537(x)
- else
- fun_l9_n417(x)
- end
-end
-
-def fun_l8_n639(x)
- if (x < 1)
- fun_l9_n975(x)
- else
- fun_l9_n484(x)
- end
-end
-
-def fun_l8_n640(x)
- if (x < 1)
- fun_l9_n228(x)
- else
- fun_l9_n964(x)
- end
-end
-
-def fun_l8_n641(x)
- if (x < 1)
- fun_l9_n743(x)
- else
- fun_l9_n986(x)
- end
-end
-
-def fun_l8_n642(x)
- if (x < 1)
- fun_l9_n763(x)
- else
- fun_l9_n747(x)
- end
-end
-
-def fun_l8_n643(x)
- if (x < 1)
- fun_l9_n77(x)
- else
- fun_l9_n149(x)
- end
-end
-
-def fun_l8_n644(x)
- if (x < 1)
- fun_l9_n393(x)
- else
- fun_l9_n694(x)
- end
-end
-
-def fun_l8_n645(x)
- if (x < 1)
- fun_l9_n196(x)
- else
- fun_l9_n211(x)
- end
-end
-
-def fun_l8_n646(x)
- if (x < 1)
- fun_l9_n94(x)
- else
- fun_l9_n649(x)
- end
-end
-
-def fun_l8_n647(x)
- if (x < 1)
- fun_l9_n669(x)
- else
- fun_l9_n12(x)
- end
-end
-
-def fun_l8_n648(x)
- if (x < 1)
- fun_l9_n175(x)
- else
- fun_l9_n388(x)
- end
-end
-
-def fun_l8_n649(x)
- if (x < 1)
- fun_l9_n122(x)
- else
- fun_l9_n736(x)
- end
-end
-
-def fun_l8_n650(x)
- if (x < 1)
- fun_l9_n817(x)
- else
- fun_l9_n274(x)
- end
-end
-
-def fun_l8_n651(x)
- if (x < 1)
- fun_l9_n919(x)
- else
- fun_l9_n538(x)
- end
-end
-
-def fun_l8_n652(x)
- if (x < 1)
- fun_l9_n171(x)
- else
- fun_l9_n895(x)
- end
-end
-
-def fun_l8_n653(x)
- if (x < 1)
- fun_l9_n417(x)
- else
- fun_l9_n618(x)
- end
-end
-
-def fun_l8_n654(x)
- if (x < 1)
- fun_l9_n709(x)
- else
- fun_l9_n892(x)
- end
-end
-
-def fun_l8_n655(x)
- if (x < 1)
- fun_l9_n906(x)
- else
- fun_l9_n602(x)
- end
-end
-
-def fun_l8_n656(x)
- if (x < 1)
- fun_l9_n769(x)
- else
- fun_l9_n554(x)
- end
-end
-
-def fun_l8_n657(x)
- if (x < 1)
- fun_l9_n468(x)
- else
- fun_l9_n320(x)
- end
-end
-
-def fun_l8_n658(x)
- if (x < 1)
- fun_l9_n38(x)
- else
- fun_l9_n947(x)
- end
-end
-
-def fun_l8_n659(x)
- if (x < 1)
- fun_l9_n635(x)
- else
- fun_l9_n327(x)
- end
-end
-
-def fun_l8_n660(x)
- if (x < 1)
- fun_l9_n452(x)
- else
- fun_l9_n313(x)
- end
-end
-
-def fun_l8_n661(x)
- if (x < 1)
- fun_l9_n568(x)
- else
- fun_l9_n383(x)
- end
-end
-
-def fun_l8_n662(x)
- if (x < 1)
- fun_l9_n795(x)
- else
- fun_l9_n680(x)
- end
-end
-
-def fun_l8_n663(x)
- if (x < 1)
- fun_l9_n152(x)
- else
- fun_l9_n846(x)
- end
-end
-
-def fun_l8_n664(x)
- if (x < 1)
- fun_l9_n585(x)
- else
- fun_l9_n670(x)
- end
-end
-
-def fun_l8_n665(x)
- if (x < 1)
- fun_l9_n133(x)
- else
- fun_l9_n799(x)
- end
-end
-
-def fun_l8_n666(x)
- if (x < 1)
- fun_l9_n699(x)
- else
- fun_l9_n311(x)
- end
-end
-
-def fun_l8_n667(x)
- if (x < 1)
- fun_l9_n558(x)
- else
- fun_l9_n669(x)
- end
-end
-
-def fun_l8_n668(x)
- if (x < 1)
- fun_l9_n825(x)
- else
- fun_l9_n534(x)
- end
-end
-
-def fun_l8_n669(x)
- if (x < 1)
- fun_l9_n143(x)
- else
- fun_l9_n21(x)
- end
-end
-
-def fun_l8_n670(x)
- if (x < 1)
- fun_l9_n827(x)
- else
- fun_l9_n679(x)
- end
-end
-
-def fun_l8_n671(x)
- if (x < 1)
- fun_l9_n704(x)
- else
- fun_l9_n922(x)
- end
-end
-
-def fun_l8_n672(x)
- if (x < 1)
- fun_l9_n776(x)
- else
- fun_l9_n867(x)
- end
-end
-
-def fun_l8_n673(x)
- if (x < 1)
- fun_l9_n871(x)
- else
- fun_l9_n315(x)
- end
-end
-
-def fun_l8_n674(x)
- if (x < 1)
- fun_l9_n860(x)
- else
- fun_l9_n945(x)
- end
-end
-
-def fun_l8_n675(x)
- if (x < 1)
- fun_l9_n890(x)
- else
- fun_l9_n629(x)
- end
-end
-
-def fun_l8_n676(x)
- if (x < 1)
- fun_l9_n91(x)
- else
- fun_l9_n35(x)
- end
-end
-
-def fun_l8_n677(x)
- if (x < 1)
- fun_l9_n825(x)
- else
- fun_l9_n922(x)
- end
-end
-
-def fun_l8_n678(x)
- if (x < 1)
- fun_l9_n457(x)
- else
- fun_l9_n156(x)
- end
-end
-
-def fun_l8_n679(x)
- if (x < 1)
- fun_l9_n455(x)
- else
- fun_l9_n809(x)
- end
-end
-
-def fun_l8_n680(x)
- if (x < 1)
- fun_l9_n213(x)
- else
- fun_l9_n944(x)
- end
-end
-
-def fun_l8_n681(x)
- if (x < 1)
- fun_l9_n760(x)
- else
- fun_l9_n137(x)
- end
-end
-
-def fun_l8_n682(x)
- if (x < 1)
- fun_l9_n998(x)
- else
- fun_l9_n703(x)
- end
-end
-
-def fun_l8_n683(x)
- if (x < 1)
- fun_l9_n988(x)
- else
- fun_l9_n952(x)
- end
-end
-
-def fun_l8_n684(x)
- if (x < 1)
- fun_l9_n583(x)
- else
- fun_l9_n890(x)
- end
-end
-
-def fun_l8_n685(x)
- if (x < 1)
- fun_l9_n879(x)
- else
- fun_l9_n978(x)
- end
-end
-
-def fun_l8_n686(x)
- if (x < 1)
- fun_l9_n6(x)
- else
- fun_l9_n978(x)
- end
-end
-
-def fun_l8_n687(x)
- if (x < 1)
- fun_l9_n67(x)
- else
- fun_l9_n149(x)
- end
-end
-
-def fun_l8_n688(x)
- if (x < 1)
- fun_l9_n386(x)
- else
- fun_l9_n293(x)
- end
-end
-
-def fun_l8_n689(x)
- if (x < 1)
- fun_l9_n493(x)
- else
- fun_l9_n140(x)
- end
-end
-
-def fun_l8_n690(x)
- if (x < 1)
- fun_l9_n92(x)
- else
- fun_l9_n550(x)
- end
-end
-
-def fun_l8_n691(x)
- if (x < 1)
- fun_l9_n456(x)
- else
- fun_l9_n976(x)
- end
-end
-
-def fun_l8_n692(x)
- if (x < 1)
- fun_l9_n516(x)
- else
- fun_l9_n145(x)
- end
-end
-
-def fun_l8_n693(x)
- if (x < 1)
- fun_l9_n757(x)
- else
- fun_l9_n647(x)
- end
-end
-
-def fun_l8_n694(x)
- if (x < 1)
- fun_l9_n348(x)
- else
- fun_l9_n86(x)
- end
-end
-
-def fun_l8_n695(x)
- if (x < 1)
- fun_l9_n546(x)
- else
- fun_l9_n320(x)
- end
-end
-
-def fun_l8_n696(x)
- if (x < 1)
- fun_l9_n588(x)
- else
- fun_l9_n285(x)
- end
-end
-
-def fun_l8_n697(x)
- if (x < 1)
- fun_l9_n635(x)
- else
- fun_l9_n710(x)
- end
-end
-
-def fun_l8_n698(x)
- if (x < 1)
- fun_l9_n312(x)
- else
- fun_l9_n217(x)
- end
-end
-
-def fun_l8_n699(x)
- if (x < 1)
- fun_l9_n714(x)
- else
- fun_l9_n723(x)
- end
-end
-
-def fun_l8_n700(x)
- if (x < 1)
- fun_l9_n378(x)
- else
- fun_l9_n122(x)
- end
-end
-
-def fun_l8_n701(x)
- if (x < 1)
- fun_l9_n696(x)
- else
- fun_l9_n577(x)
- end
-end
-
-def fun_l8_n702(x)
- if (x < 1)
- fun_l9_n388(x)
- else
- fun_l9_n578(x)
- end
-end
-
-def fun_l8_n703(x)
- if (x < 1)
- fun_l9_n502(x)
- else
- fun_l9_n410(x)
- end
-end
-
-def fun_l8_n704(x)
- if (x < 1)
- fun_l9_n532(x)
- else
- fun_l9_n532(x)
- end
-end
-
-def fun_l8_n705(x)
- if (x < 1)
- fun_l9_n662(x)
- else
- fun_l9_n361(x)
- end
-end
-
-def fun_l8_n706(x)
- if (x < 1)
- fun_l9_n109(x)
- else
- fun_l9_n380(x)
- end
-end
-
-def fun_l8_n707(x)
- if (x < 1)
- fun_l9_n653(x)
- else
- fun_l9_n566(x)
- end
-end
-
-def fun_l8_n708(x)
- if (x < 1)
- fun_l9_n587(x)
- else
- fun_l9_n465(x)
- end
-end
-
-def fun_l8_n709(x)
- if (x < 1)
- fun_l9_n523(x)
- else
- fun_l9_n274(x)
- end
-end
-
-def fun_l8_n710(x)
- if (x < 1)
- fun_l9_n459(x)
- else
- fun_l9_n872(x)
- end
-end
-
-def fun_l8_n711(x)
- if (x < 1)
- fun_l9_n71(x)
- else
- fun_l9_n135(x)
- end
-end
-
-def fun_l8_n712(x)
- if (x < 1)
- fun_l9_n770(x)
- else
- fun_l9_n405(x)
- end
-end
-
-def fun_l8_n713(x)
- if (x < 1)
- fun_l9_n233(x)
- else
- fun_l9_n232(x)
- end
-end
-
-def fun_l8_n714(x)
- if (x < 1)
- fun_l9_n29(x)
- else
- fun_l9_n23(x)
- end
-end
-
-def fun_l8_n715(x)
- if (x < 1)
- fun_l9_n44(x)
- else
- fun_l9_n185(x)
- end
-end
-
-def fun_l8_n716(x)
- if (x < 1)
- fun_l9_n980(x)
- else
- fun_l9_n967(x)
- end
-end
-
-def fun_l8_n717(x)
- if (x < 1)
- fun_l9_n323(x)
- else
- fun_l9_n636(x)
- end
-end
-
-def fun_l8_n718(x)
- if (x < 1)
- fun_l9_n733(x)
- else
- fun_l9_n10(x)
- end
-end
-
-def fun_l8_n719(x)
- if (x < 1)
- fun_l9_n100(x)
- else
- fun_l9_n123(x)
- end
-end
-
-def fun_l8_n720(x)
- if (x < 1)
- fun_l9_n572(x)
- else
- fun_l9_n813(x)
- end
-end
-
-def fun_l8_n721(x)
- if (x < 1)
- fun_l9_n634(x)
- else
- fun_l9_n152(x)
- end
-end
-
-def fun_l8_n722(x)
- if (x < 1)
- fun_l9_n527(x)
- else
- fun_l9_n881(x)
- end
-end
-
-def fun_l8_n723(x)
- if (x < 1)
- fun_l9_n202(x)
- else
- fun_l9_n294(x)
- end
-end
-
-def fun_l8_n724(x)
- if (x < 1)
- fun_l9_n668(x)
- else
- fun_l9_n792(x)
- end
-end
-
-def fun_l8_n725(x)
- if (x < 1)
- fun_l9_n309(x)
- else
- fun_l9_n612(x)
- end
-end
-
-def fun_l8_n726(x)
- if (x < 1)
- fun_l9_n320(x)
- else
- fun_l9_n459(x)
- end
-end
-
-def fun_l8_n727(x)
- if (x < 1)
- fun_l9_n355(x)
- else
- fun_l9_n321(x)
- end
-end
-
-def fun_l8_n728(x)
- if (x < 1)
- fun_l9_n237(x)
- else
- fun_l9_n135(x)
- end
-end
-
-def fun_l8_n729(x)
- if (x < 1)
- fun_l9_n980(x)
- else
- fun_l9_n209(x)
- end
-end
-
-def fun_l8_n730(x)
- if (x < 1)
- fun_l9_n957(x)
- else
- fun_l9_n481(x)
- end
-end
-
-def fun_l8_n731(x)
- if (x < 1)
- fun_l9_n594(x)
- else
- fun_l9_n396(x)
- end
-end
-
-def fun_l8_n732(x)
- if (x < 1)
- fun_l9_n916(x)
- else
- fun_l9_n473(x)
- end
-end
-
-def fun_l8_n733(x)
- if (x < 1)
- fun_l9_n376(x)
- else
- fun_l9_n231(x)
- end
-end
-
-def fun_l8_n734(x)
- if (x < 1)
- fun_l9_n758(x)
- else
- fun_l9_n111(x)
- end
-end
-
-def fun_l8_n735(x)
- if (x < 1)
- fun_l9_n131(x)
- else
- fun_l9_n586(x)
- end
-end
-
-def fun_l8_n736(x)
- if (x < 1)
- fun_l9_n290(x)
- else
- fun_l9_n227(x)
- end
-end
-
-def fun_l8_n737(x)
- if (x < 1)
- fun_l9_n784(x)
- else
- fun_l9_n869(x)
- end
-end
-
-def fun_l8_n738(x)
- if (x < 1)
- fun_l9_n94(x)
- else
- fun_l9_n79(x)
- end
-end
-
-def fun_l8_n739(x)
- if (x < 1)
- fun_l9_n489(x)
- else
- fun_l9_n347(x)
- end
-end
-
-def fun_l8_n740(x)
- if (x < 1)
- fun_l9_n4(x)
- else
- fun_l9_n587(x)
- end
-end
-
-def fun_l8_n741(x)
- if (x < 1)
- fun_l9_n949(x)
- else
- fun_l9_n196(x)
- end
-end
-
-def fun_l8_n742(x)
- if (x < 1)
- fun_l9_n577(x)
- else
- fun_l9_n562(x)
- end
-end
-
-def fun_l8_n743(x)
- if (x < 1)
- fun_l9_n656(x)
- else
- fun_l9_n685(x)
- end
-end
-
-def fun_l8_n744(x)
- if (x < 1)
- fun_l9_n792(x)
- else
- fun_l9_n572(x)
- end
-end
-
-def fun_l8_n745(x)
- if (x < 1)
- fun_l9_n318(x)
- else
- fun_l9_n335(x)
- end
-end
-
-def fun_l8_n746(x)
- if (x < 1)
- fun_l9_n59(x)
- else
- fun_l9_n109(x)
- end
-end
-
-def fun_l8_n747(x)
- if (x < 1)
- fun_l9_n276(x)
- else
- fun_l9_n567(x)
- end
-end
-
-def fun_l8_n748(x)
- if (x < 1)
- fun_l9_n902(x)
- else
- fun_l9_n220(x)
- end
-end
-
-def fun_l8_n749(x)
- if (x < 1)
- fun_l9_n208(x)
- else
- fun_l9_n108(x)
- end
-end
-
-def fun_l8_n750(x)
- if (x < 1)
- fun_l9_n927(x)
- else
- fun_l9_n950(x)
- end
-end
-
-def fun_l8_n751(x)
- if (x < 1)
- fun_l9_n371(x)
- else
- fun_l9_n72(x)
- end
-end
-
-def fun_l8_n752(x)
- if (x < 1)
- fun_l9_n455(x)
- else
- fun_l9_n467(x)
- end
-end
-
-def fun_l8_n753(x)
- if (x < 1)
- fun_l9_n344(x)
- else
- fun_l9_n82(x)
- end
-end
-
-def fun_l8_n754(x)
- if (x < 1)
- fun_l9_n902(x)
- else
- fun_l9_n219(x)
- end
-end
-
-def fun_l8_n755(x)
- if (x < 1)
- fun_l9_n101(x)
- else
- fun_l9_n523(x)
- end
-end
-
-def fun_l8_n756(x)
- if (x < 1)
- fun_l9_n517(x)
- else
- fun_l9_n97(x)
- end
-end
-
-def fun_l8_n757(x)
- if (x < 1)
- fun_l9_n571(x)
- else
- fun_l9_n650(x)
- end
-end
-
-def fun_l8_n758(x)
- if (x < 1)
- fun_l9_n701(x)
- else
- fun_l9_n962(x)
- end
-end
-
-def fun_l8_n759(x)
- if (x < 1)
- fun_l9_n589(x)
- else
- fun_l9_n808(x)
- end
-end
-
-def fun_l8_n760(x)
- if (x < 1)
- fun_l9_n570(x)
- else
- fun_l9_n90(x)
- end
-end
-
-def fun_l8_n761(x)
- if (x < 1)
- fun_l9_n792(x)
- else
- fun_l9_n673(x)
- end
-end
-
-def fun_l8_n762(x)
- if (x < 1)
- fun_l9_n514(x)
- else
- fun_l9_n771(x)
- end
-end
-
-def fun_l8_n763(x)
- if (x < 1)
- fun_l9_n404(x)
- else
- fun_l9_n264(x)
- end
-end
-
-def fun_l8_n764(x)
- if (x < 1)
- fun_l9_n270(x)
- else
- fun_l9_n738(x)
- end
-end
-
-def fun_l8_n765(x)
- if (x < 1)
- fun_l9_n915(x)
- else
- fun_l9_n901(x)
- end
-end
-
-def fun_l8_n766(x)
- if (x < 1)
- fun_l9_n120(x)
- else
- fun_l9_n176(x)
- end
-end
-
-def fun_l8_n767(x)
- if (x < 1)
- fun_l9_n470(x)
- else
- fun_l9_n837(x)
- end
-end
-
-def fun_l8_n768(x)
- if (x < 1)
- fun_l9_n912(x)
- else
- fun_l9_n898(x)
- end
-end
-
-def fun_l8_n769(x)
- if (x < 1)
- fun_l9_n76(x)
- else
- fun_l9_n350(x)
- end
-end
-
-def fun_l8_n770(x)
- if (x < 1)
- fun_l9_n487(x)
- else
- fun_l9_n572(x)
- end
-end
-
-def fun_l8_n771(x)
- if (x < 1)
- fun_l9_n823(x)
- else
- fun_l9_n815(x)
- end
-end
-
-def fun_l8_n772(x)
- if (x < 1)
- fun_l9_n655(x)
- else
- fun_l9_n968(x)
- end
-end
-
-def fun_l8_n773(x)
- if (x < 1)
- fun_l9_n824(x)
- else
- fun_l9_n741(x)
- end
-end
-
-def fun_l8_n774(x)
- if (x < 1)
- fun_l9_n143(x)
- else
- fun_l9_n641(x)
- end
-end
-
-def fun_l8_n775(x)
- if (x < 1)
- fun_l9_n985(x)
- else
- fun_l9_n592(x)
- end
-end
-
-def fun_l8_n776(x)
- if (x < 1)
- fun_l9_n686(x)
- else
- fun_l9_n234(x)
- end
-end
-
-def fun_l8_n777(x)
- if (x < 1)
- fun_l9_n540(x)
- else
- fun_l9_n794(x)
- end
-end
-
-def fun_l8_n778(x)
- if (x < 1)
- fun_l9_n154(x)
- else
- fun_l9_n656(x)
- end
-end
-
-def fun_l8_n779(x)
- if (x < 1)
- fun_l9_n836(x)
- else
- fun_l9_n756(x)
- end
-end
-
-def fun_l8_n780(x)
- if (x < 1)
- fun_l9_n98(x)
- else
- fun_l9_n233(x)
- end
-end
-
-def fun_l8_n781(x)
- if (x < 1)
- fun_l9_n584(x)
- else
- fun_l9_n398(x)
- end
-end
-
-def fun_l8_n782(x)
- if (x < 1)
- fun_l9_n851(x)
- else
- fun_l9_n967(x)
- end
-end
-
-def fun_l8_n783(x)
- if (x < 1)
- fun_l9_n868(x)
- else
- fun_l9_n57(x)
- end
-end
-
-def fun_l8_n784(x)
- if (x < 1)
- fun_l9_n782(x)
- else
- fun_l9_n214(x)
- end
-end
-
-def fun_l8_n785(x)
- if (x < 1)
- fun_l9_n79(x)
- else
- fun_l9_n489(x)
- end
-end
-
-def fun_l8_n786(x)
- if (x < 1)
- fun_l9_n757(x)
- else
- fun_l9_n918(x)
- end
-end
-
-def fun_l8_n787(x)
- if (x < 1)
- fun_l9_n985(x)
- else
- fun_l9_n781(x)
- end
-end
-
-def fun_l8_n788(x)
- if (x < 1)
- fun_l9_n921(x)
- else
- fun_l9_n542(x)
- end
-end
-
-def fun_l8_n789(x)
- if (x < 1)
- fun_l9_n982(x)
- else
- fun_l9_n834(x)
- end
-end
-
-def fun_l8_n790(x)
- if (x < 1)
- fun_l9_n482(x)
- else
- fun_l9_n424(x)
- end
-end
-
-def fun_l8_n791(x)
- if (x < 1)
- fun_l9_n289(x)
- else
- fun_l9_n487(x)
- end
-end
-
-def fun_l8_n792(x)
- if (x < 1)
- fun_l9_n820(x)
- else
- fun_l9_n242(x)
- end
-end
-
-def fun_l8_n793(x)
- if (x < 1)
- fun_l9_n110(x)
- else
- fun_l9_n356(x)
- end
-end
-
-def fun_l8_n794(x)
- if (x < 1)
- fun_l9_n142(x)
- else
- fun_l9_n607(x)
- end
-end
-
-def fun_l8_n795(x)
- if (x < 1)
- fun_l9_n21(x)
- else
- fun_l9_n14(x)
- end
-end
-
-def fun_l8_n796(x)
- if (x < 1)
- fun_l9_n147(x)
- else
- fun_l9_n767(x)
- end
-end
-
-def fun_l8_n797(x)
- if (x < 1)
- fun_l9_n427(x)
- else
- fun_l9_n854(x)
- end
-end
-
-def fun_l8_n798(x)
- if (x < 1)
- fun_l9_n557(x)
- else
- fun_l9_n729(x)
- end
-end
-
-def fun_l8_n799(x)
- if (x < 1)
- fun_l9_n150(x)
- else
- fun_l9_n180(x)
- end
-end
-
-def fun_l8_n800(x)
- if (x < 1)
- fun_l9_n888(x)
- else
- fun_l9_n612(x)
- end
-end
-
-def fun_l8_n801(x)
- if (x < 1)
- fun_l9_n631(x)
- else
- fun_l9_n370(x)
- end
-end
-
-def fun_l8_n802(x)
- if (x < 1)
- fun_l9_n759(x)
- else
- fun_l9_n446(x)
- end
-end
-
-def fun_l8_n803(x)
- if (x < 1)
- fun_l9_n182(x)
- else
- fun_l9_n705(x)
- end
-end
-
-def fun_l8_n804(x)
- if (x < 1)
- fun_l9_n474(x)
- else
- fun_l9_n461(x)
- end
-end
-
-def fun_l8_n805(x)
- if (x < 1)
- fun_l9_n897(x)
- else
- fun_l9_n935(x)
- end
-end
-
-def fun_l8_n806(x)
- if (x < 1)
- fun_l9_n793(x)
- else
- fun_l9_n981(x)
- end
-end
-
-def fun_l8_n807(x)
- if (x < 1)
- fun_l9_n124(x)
- else
- fun_l9_n528(x)
- end
-end
-
-def fun_l8_n808(x)
- if (x < 1)
- fun_l9_n637(x)
- else
- fun_l9_n989(x)
- end
-end
-
-def fun_l8_n809(x)
- if (x < 1)
- fun_l9_n388(x)
- else
- fun_l9_n196(x)
- end
-end
-
-def fun_l8_n810(x)
- if (x < 1)
- fun_l9_n333(x)
- else
- fun_l9_n806(x)
- end
-end
-
-def fun_l8_n811(x)
- if (x < 1)
- fun_l9_n541(x)
- else
- fun_l9_n6(x)
- end
-end
-
-def fun_l8_n812(x)
- if (x < 1)
- fun_l9_n346(x)
- else
- fun_l9_n496(x)
- end
-end
-
-def fun_l8_n813(x)
- if (x < 1)
- fun_l9_n374(x)
- else
- fun_l9_n739(x)
- end
-end
-
-def fun_l8_n814(x)
- if (x < 1)
- fun_l9_n121(x)
- else
- fun_l9_n184(x)
- end
-end
-
-def fun_l8_n815(x)
- if (x < 1)
- fun_l9_n460(x)
- else
- fun_l9_n759(x)
- end
-end
-
-def fun_l8_n816(x)
- if (x < 1)
- fun_l9_n598(x)
- else
- fun_l9_n638(x)
- end
-end
-
-def fun_l8_n817(x)
- if (x < 1)
- fun_l9_n986(x)
- else
- fun_l9_n658(x)
- end
-end
-
-def fun_l8_n818(x)
- if (x < 1)
- fun_l9_n169(x)
- else
- fun_l9_n696(x)
- end
-end
-
-def fun_l8_n819(x)
- if (x < 1)
- fun_l9_n885(x)
- else
- fun_l9_n74(x)
- end
-end
-
-def fun_l8_n820(x)
- if (x < 1)
- fun_l9_n24(x)
- else
- fun_l9_n87(x)
- end
-end
-
-def fun_l8_n821(x)
- if (x < 1)
- fun_l9_n59(x)
- else
- fun_l9_n843(x)
- end
-end
-
-def fun_l8_n822(x)
- if (x < 1)
- fun_l9_n640(x)
- else
- fun_l9_n360(x)
- end
-end
-
-def fun_l8_n823(x)
- if (x < 1)
- fun_l9_n355(x)
- else
- fun_l9_n28(x)
- end
-end
-
-def fun_l8_n824(x)
- if (x < 1)
- fun_l9_n553(x)
- else
- fun_l9_n475(x)
- end
-end
-
-def fun_l8_n825(x)
- if (x < 1)
- fun_l9_n757(x)
- else
- fun_l9_n790(x)
- end
-end
-
-def fun_l8_n826(x)
- if (x < 1)
- fun_l9_n787(x)
- else
- fun_l9_n226(x)
- end
-end
-
-def fun_l8_n827(x)
- if (x < 1)
- fun_l9_n622(x)
- else
- fun_l9_n711(x)
- end
-end
-
-def fun_l8_n828(x)
- if (x < 1)
- fun_l9_n399(x)
- else
- fun_l9_n7(x)
- end
-end
-
-def fun_l8_n829(x)
- if (x < 1)
- fun_l9_n589(x)
- else
- fun_l9_n276(x)
- end
-end
-
-def fun_l8_n830(x)
- if (x < 1)
- fun_l9_n83(x)
- else
- fun_l9_n126(x)
- end
-end
-
-def fun_l8_n831(x)
- if (x < 1)
- fun_l9_n576(x)
- else
- fun_l9_n855(x)
- end
-end
-
-def fun_l8_n832(x)
- if (x < 1)
- fun_l9_n756(x)
- else
- fun_l9_n638(x)
- end
-end
-
-def fun_l8_n833(x)
- if (x < 1)
- fun_l9_n388(x)
- else
- fun_l9_n154(x)
- end
-end
-
-def fun_l8_n834(x)
- if (x < 1)
- fun_l9_n268(x)
- else
- fun_l9_n85(x)
- end
-end
-
-def fun_l8_n835(x)
- if (x < 1)
- fun_l9_n32(x)
- else
- fun_l9_n678(x)
- end
-end
-
-def fun_l8_n836(x)
- if (x < 1)
- fun_l9_n537(x)
- else
- fun_l9_n984(x)
- end
-end
-
-def fun_l8_n837(x)
- if (x < 1)
- fun_l9_n798(x)
- else
- fun_l9_n221(x)
- end
-end
-
-def fun_l8_n838(x)
- if (x < 1)
- fun_l9_n153(x)
- else
- fun_l9_n414(x)
- end
-end
-
-def fun_l8_n839(x)
- if (x < 1)
- fun_l9_n904(x)
- else
- fun_l9_n847(x)
- end
-end
-
-def fun_l8_n840(x)
- if (x < 1)
- fun_l9_n501(x)
- else
- fun_l9_n971(x)
- end
-end
-
-def fun_l8_n841(x)
- if (x < 1)
- fun_l9_n94(x)
- else
- fun_l9_n719(x)
- end
-end
-
-def fun_l8_n842(x)
- if (x < 1)
- fun_l9_n343(x)
- else
- fun_l9_n365(x)
- end
-end
-
-def fun_l8_n843(x)
- if (x < 1)
- fun_l9_n541(x)
- else
- fun_l9_n800(x)
- end
-end
-
-def fun_l8_n844(x)
- if (x < 1)
- fun_l9_n122(x)
- else
- fun_l9_n662(x)
- end
-end
-
-def fun_l8_n845(x)
- if (x < 1)
- fun_l9_n312(x)
- else
- fun_l9_n688(x)
- end
-end
-
-def fun_l8_n846(x)
- if (x < 1)
- fun_l9_n668(x)
- else
- fun_l9_n805(x)
- end
-end
-
-def fun_l8_n847(x)
- if (x < 1)
- fun_l9_n785(x)
- else
- fun_l9_n917(x)
- end
-end
-
-def fun_l8_n848(x)
- if (x < 1)
- fun_l9_n333(x)
- else
- fun_l9_n782(x)
- end
-end
-
-def fun_l8_n849(x)
- if (x < 1)
- fun_l9_n402(x)
- else
- fun_l9_n398(x)
- end
-end
-
-def fun_l8_n850(x)
- if (x < 1)
- fun_l9_n708(x)
- else
- fun_l9_n199(x)
- end
-end
-
-def fun_l8_n851(x)
- if (x < 1)
- fun_l9_n950(x)
- else
- fun_l9_n308(x)
- end
-end
-
-def fun_l8_n852(x)
- if (x < 1)
- fun_l9_n524(x)
- else
- fun_l9_n411(x)
- end
-end
-
-def fun_l8_n853(x)
- if (x < 1)
- fun_l9_n467(x)
- else
- fun_l9_n807(x)
- end
-end
-
-def fun_l8_n854(x)
- if (x < 1)
- fun_l9_n316(x)
- else
- fun_l9_n717(x)
- end
-end
-
-def fun_l8_n855(x)
- if (x < 1)
- fun_l9_n955(x)
- else
- fun_l9_n631(x)
- end
-end
-
-def fun_l8_n856(x)
- if (x < 1)
- fun_l9_n244(x)
- else
- fun_l9_n838(x)
- end
-end
-
-def fun_l8_n857(x)
- if (x < 1)
- fun_l9_n574(x)
- else
- fun_l9_n720(x)
- end
-end
-
-def fun_l8_n858(x)
- if (x < 1)
- fun_l9_n80(x)
- else
- fun_l9_n888(x)
- end
-end
-
-def fun_l8_n859(x)
- if (x < 1)
- fun_l9_n675(x)
- else
- fun_l9_n71(x)
- end
-end
-
-def fun_l8_n860(x)
- if (x < 1)
- fun_l9_n375(x)
- else
- fun_l9_n507(x)
- end
-end
-
-def fun_l8_n861(x)
- if (x < 1)
- fun_l9_n450(x)
- else
- fun_l9_n705(x)
- end
-end
-
-def fun_l8_n862(x)
- if (x < 1)
- fun_l9_n358(x)
- else
- fun_l9_n614(x)
- end
-end
-
-def fun_l8_n863(x)
- if (x < 1)
- fun_l9_n690(x)
- else
- fun_l9_n73(x)
- end
-end
-
-def fun_l8_n864(x)
- if (x < 1)
- fun_l9_n806(x)
- else
- fun_l9_n85(x)
- end
-end
-
-def fun_l8_n865(x)
- if (x < 1)
- fun_l9_n251(x)
- else
- fun_l9_n657(x)
- end
-end
-
-def fun_l8_n866(x)
- if (x < 1)
- fun_l9_n921(x)
- else
- fun_l9_n199(x)
- end
-end
-
-def fun_l8_n867(x)
- if (x < 1)
- fun_l9_n265(x)
- else
- fun_l9_n937(x)
- end
-end
-
-def fun_l8_n868(x)
- if (x < 1)
- fun_l9_n610(x)
- else
- fun_l9_n7(x)
- end
-end
-
-def fun_l8_n869(x)
- if (x < 1)
- fun_l9_n703(x)
- else
- fun_l9_n74(x)
- end
-end
-
-def fun_l8_n870(x)
- if (x < 1)
- fun_l9_n869(x)
- else
- fun_l9_n665(x)
- end
-end
-
-def fun_l8_n871(x)
- if (x < 1)
- fun_l9_n808(x)
- else
- fun_l9_n686(x)
- end
-end
-
-def fun_l8_n872(x)
- if (x < 1)
- fun_l9_n678(x)
- else
- fun_l9_n709(x)
- end
-end
-
-def fun_l8_n873(x)
- if (x < 1)
- fun_l9_n557(x)
- else
- fun_l9_n63(x)
- end
-end
-
-def fun_l8_n874(x)
- if (x < 1)
- fun_l9_n214(x)
- else
- fun_l9_n926(x)
- end
-end
-
-def fun_l8_n875(x)
- if (x < 1)
- fun_l9_n218(x)
- else
- fun_l9_n810(x)
- end
-end
-
-def fun_l8_n876(x)
- if (x < 1)
- fun_l9_n365(x)
- else
- fun_l9_n257(x)
- end
-end
-
-def fun_l8_n877(x)
- if (x < 1)
- fun_l9_n51(x)
- else
- fun_l9_n68(x)
- end
-end
-
-def fun_l8_n878(x)
- if (x < 1)
- fun_l9_n20(x)
- else
- fun_l9_n55(x)
- end
-end
-
-def fun_l8_n879(x)
- if (x < 1)
- fun_l9_n686(x)
- else
- fun_l9_n226(x)
- end
-end
-
-def fun_l8_n880(x)
- if (x < 1)
- fun_l9_n283(x)
- else
- fun_l9_n270(x)
- end
-end
-
-def fun_l8_n881(x)
- if (x < 1)
- fun_l9_n811(x)
- else
- fun_l9_n820(x)
- end
-end
-
-def fun_l8_n882(x)
- if (x < 1)
- fun_l9_n342(x)
- else
- fun_l9_n919(x)
- end
-end
-
-def fun_l8_n883(x)
- if (x < 1)
- fun_l9_n515(x)
- else
- fun_l9_n24(x)
- end
-end
-
-def fun_l8_n884(x)
- if (x < 1)
- fun_l9_n0(x)
- else
- fun_l9_n150(x)
- end
-end
-
-def fun_l8_n885(x)
- if (x < 1)
- fun_l9_n481(x)
- else
- fun_l9_n65(x)
- end
-end
-
-def fun_l8_n886(x)
- if (x < 1)
- fun_l9_n252(x)
- else
- fun_l9_n544(x)
- end
-end
-
-def fun_l8_n887(x)
- if (x < 1)
- fun_l9_n635(x)
- else
- fun_l9_n402(x)
- end
-end
-
-def fun_l8_n888(x)
- if (x < 1)
- fun_l9_n78(x)
- else
- fun_l9_n779(x)
- end
-end
-
-def fun_l8_n889(x)
- if (x < 1)
- fun_l9_n249(x)
- else
- fun_l9_n331(x)
- end
-end
-
-def fun_l8_n890(x)
- if (x < 1)
- fun_l9_n914(x)
- else
- fun_l9_n115(x)
- end
-end
-
-def fun_l8_n891(x)
- if (x < 1)
- fun_l9_n832(x)
- else
- fun_l9_n34(x)
- end
-end
-
-def fun_l8_n892(x)
- if (x < 1)
- fun_l9_n919(x)
- else
- fun_l9_n620(x)
- end
-end
-
-def fun_l8_n893(x)
- if (x < 1)
- fun_l9_n360(x)
- else
- fun_l9_n189(x)
- end
-end
-
-def fun_l8_n894(x)
- if (x < 1)
- fun_l9_n736(x)
- else
- fun_l9_n949(x)
- end
-end
-
-def fun_l8_n895(x)
- if (x < 1)
- fun_l9_n56(x)
- else
- fun_l9_n826(x)
- end
-end
-
-def fun_l8_n896(x)
- if (x < 1)
- fun_l9_n159(x)
- else
- fun_l9_n523(x)
- end
-end
-
-def fun_l8_n897(x)
- if (x < 1)
- fun_l9_n630(x)
- else
- fun_l9_n601(x)
- end
-end
-
-def fun_l8_n898(x)
- if (x < 1)
- fun_l9_n434(x)
- else
- fun_l9_n919(x)
- end
-end
-
-def fun_l8_n899(x)
- if (x < 1)
- fun_l9_n872(x)
- else
- fun_l9_n652(x)
- end
-end
-
-def fun_l8_n900(x)
- if (x < 1)
- fun_l9_n550(x)
- else
- fun_l9_n124(x)
- end
-end
-
-def fun_l8_n901(x)
- if (x < 1)
- fun_l9_n56(x)
- else
- fun_l9_n422(x)
- end
-end
-
-def fun_l8_n902(x)
- if (x < 1)
- fun_l9_n297(x)
- else
- fun_l9_n281(x)
- end
-end
-
-def fun_l8_n903(x)
- if (x < 1)
- fun_l9_n764(x)
- else
- fun_l9_n942(x)
- end
-end
-
-def fun_l8_n904(x)
- if (x < 1)
- fun_l9_n700(x)
- else
- fun_l9_n525(x)
- end
-end
-
-def fun_l8_n905(x)
- if (x < 1)
- fun_l9_n370(x)
- else
- fun_l9_n871(x)
- end
-end
-
-def fun_l8_n906(x)
- if (x < 1)
- fun_l9_n385(x)
- else
- fun_l9_n999(x)
- end
-end
-
-def fun_l8_n907(x)
- if (x < 1)
- fun_l9_n63(x)
- else
- fun_l9_n137(x)
- end
-end
-
-def fun_l8_n908(x)
- if (x < 1)
- fun_l9_n793(x)
- else
- fun_l9_n720(x)
- end
-end
-
-def fun_l8_n909(x)
- if (x < 1)
- fun_l9_n141(x)
- else
- fun_l9_n838(x)
- end
-end
-
-def fun_l8_n910(x)
- if (x < 1)
- fun_l9_n764(x)
- else
- fun_l9_n334(x)
- end
-end
-
-def fun_l8_n911(x)
- if (x < 1)
- fun_l9_n429(x)
- else
- fun_l9_n309(x)
- end
-end
-
-def fun_l8_n912(x)
- if (x < 1)
- fun_l9_n852(x)
- else
- fun_l9_n662(x)
- end
-end
-
-def fun_l8_n913(x)
- if (x < 1)
- fun_l9_n467(x)
- else
- fun_l9_n817(x)
- end
-end
-
-def fun_l8_n914(x)
- if (x < 1)
- fun_l9_n318(x)
- else
- fun_l9_n942(x)
- end
-end
-
-def fun_l8_n915(x)
- if (x < 1)
- fun_l9_n442(x)
- else
- fun_l9_n987(x)
- end
-end
-
-def fun_l8_n916(x)
- if (x < 1)
- fun_l9_n657(x)
- else
- fun_l9_n736(x)
- end
-end
-
-def fun_l8_n917(x)
- if (x < 1)
- fun_l9_n839(x)
- else
- fun_l9_n897(x)
- end
-end
-
-def fun_l8_n918(x)
- if (x < 1)
- fun_l9_n659(x)
- else
- fun_l9_n766(x)
- end
-end
-
-def fun_l8_n919(x)
- if (x < 1)
- fun_l9_n523(x)
- else
- fun_l9_n54(x)
- end
-end
-
-def fun_l8_n920(x)
- if (x < 1)
- fun_l9_n298(x)
- else
- fun_l9_n169(x)
- end
-end
-
-def fun_l8_n921(x)
- if (x < 1)
- fun_l9_n752(x)
- else
- fun_l9_n281(x)
- end
-end
-
-def fun_l8_n922(x)
- if (x < 1)
- fun_l9_n703(x)
- else
- fun_l9_n874(x)
- end
-end
-
-def fun_l8_n923(x)
- if (x < 1)
- fun_l9_n218(x)
- else
- fun_l9_n880(x)
- end
-end
-
-def fun_l8_n924(x)
- if (x < 1)
- fun_l9_n699(x)
- else
- fun_l9_n357(x)
- end
-end
-
-def fun_l8_n925(x)
- if (x < 1)
- fun_l9_n279(x)
- else
- fun_l9_n300(x)
- end
-end
-
-def fun_l8_n926(x)
- if (x < 1)
- fun_l9_n955(x)
- else
- fun_l9_n522(x)
- end
-end
-
-def fun_l8_n927(x)
- if (x < 1)
- fun_l9_n943(x)
- else
- fun_l9_n597(x)
- end
-end
-
-def fun_l8_n928(x)
- if (x < 1)
- fun_l9_n828(x)
- else
- fun_l9_n658(x)
- end
-end
-
-def fun_l8_n929(x)
- if (x < 1)
- fun_l9_n160(x)
- else
- fun_l9_n536(x)
- end
-end
-
-def fun_l8_n930(x)
- if (x < 1)
- fun_l9_n422(x)
- else
- fun_l9_n848(x)
- end
-end
-
-def fun_l8_n931(x)
- if (x < 1)
- fun_l9_n66(x)
- else
- fun_l9_n298(x)
- end
-end
-
-def fun_l8_n932(x)
- if (x < 1)
- fun_l9_n871(x)
- else
- fun_l9_n443(x)
- end
-end
-
-def fun_l8_n933(x)
- if (x < 1)
- fun_l9_n876(x)
- else
- fun_l9_n459(x)
- end
-end
-
-def fun_l8_n934(x)
- if (x < 1)
- fun_l9_n319(x)
- else
- fun_l9_n921(x)
- end
-end
-
-def fun_l8_n935(x)
- if (x < 1)
- fun_l9_n741(x)
- else
- fun_l9_n659(x)
- end
-end
-
-def fun_l8_n936(x)
- if (x < 1)
- fun_l9_n713(x)
- else
- fun_l9_n800(x)
- end
-end
-
-def fun_l8_n937(x)
- if (x < 1)
- fun_l9_n945(x)
- else
- fun_l9_n548(x)
- end
-end
-
-def fun_l8_n938(x)
- if (x < 1)
- fun_l9_n732(x)
- else
- fun_l9_n10(x)
- end
-end
-
-def fun_l8_n939(x)
- if (x < 1)
- fun_l9_n5(x)
- else
- fun_l9_n864(x)
- end
-end
-
-def fun_l8_n940(x)
- if (x < 1)
- fun_l9_n353(x)
- else
- fun_l9_n46(x)
- end
-end
-
-def fun_l8_n941(x)
- if (x < 1)
- fun_l9_n622(x)
- else
- fun_l9_n430(x)
- end
-end
-
-def fun_l8_n942(x)
- if (x < 1)
- fun_l9_n120(x)
- else
- fun_l9_n265(x)
- end
-end
-
-def fun_l8_n943(x)
- if (x < 1)
- fun_l9_n272(x)
- else
- fun_l9_n290(x)
- end
-end
-
-def fun_l8_n944(x)
- if (x < 1)
- fun_l9_n527(x)
- else
- fun_l9_n830(x)
- end
-end
-
-def fun_l8_n945(x)
- if (x < 1)
- fun_l9_n202(x)
- else
- fun_l9_n597(x)
- end
-end
-
-def fun_l8_n946(x)
- if (x < 1)
- fun_l9_n797(x)
- else
- fun_l9_n984(x)
- end
-end
-
-def fun_l8_n947(x)
- if (x < 1)
- fun_l9_n3(x)
- else
- fun_l9_n173(x)
- end
-end
-
-def fun_l8_n948(x)
- if (x < 1)
- fun_l9_n658(x)
- else
- fun_l9_n48(x)
- end
-end
-
-def fun_l8_n949(x)
- if (x < 1)
- fun_l9_n302(x)
- else
- fun_l9_n549(x)
- end
-end
-
-def fun_l8_n950(x)
- if (x < 1)
- fun_l9_n450(x)
- else
- fun_l9_n442(x)
- end
-end
-
-def fun_l8_n951(x)
- if (x < 1)
- fun_l9_n32(x)
- else
- fun_l9_n287(x)
- end
-end
-
-def fun_l8_n952(x)
- if (x < 1)
- fun_l9_n427(x)
- else
- fun_l9_n67(x)
- end
-end
-
-def fun_l8_n953(x)
- if (x < 1)
- fun_l9_n153(x)
- else
- fun_l9_n748(x)
- end
-end
-
-def fun_l8_n954(x)
- if (x < 1)
- fun_l9_n528(x)
- else
- fun_l9_n754(x)
- end
-end
-
-def fun_l8_n955(x)
- if (x < 1)
- fun_l9_n722(x)
- else
- fun_l9_n982(x)
- end
-end
-
-def fun_l8_n956(x)
- if (x < 1)
- fun_l9_n857(x)
- else
- fun_l9_n286(x)
- end
-end
-
-def fun_l8_n957(x)
- if (x < 1)
- fun_l9_n579(x)
- else
- fun_l9_n830(x)
- end
-end
-
-def fun_l8_n958(x)
- if (x < 1)
- fun_l9_n913(x)
- else
- fun_l9_n918(x)
- end
-end
-
-def fun_l8_n959(x)
- if (x < 1)
- fun_l9_n575(x)
- else
- fun_l9_n441(x)
- end
-end
-
-def fun_l8_n960(x)
- if (x < 1)
- fun_l9_n774(x)
- else
- fun_l9_n426(x)
- end
-end
-
-def fun_l8_n961(x)
- if (x < 1)
- fun_l9_n415(x)
- else
- fun_l9_n720(x)
- end
-end
-
-def fun_l8_n962(x)
- if (x < 1)
- fun_l9_n187(x)
- else
- fun_l9_n101(x)
- end
-end
-
-def fun_l8_n963(x)
- if (x < 1)
- fun_l9_n146(x)
- else
- fun_l9_n911(x)
- end
-end
-
-def fun_l8_n964(x)
- if (x < 1)
- fun_l9_n758(x)
- else
- fun_l9_n46(x)
- end
-end
-
-def fun_l8_n965(x)
- if (x < 1)
- fun_l9_n316(x)
- else
- fun_l9_n874(x)
- end
-end
-
-def fun_l8_n966(x)
- if (x < 1)
- fun_l9_n604(x)
- else
- fun_l9_n933(x)
- end
-end
-
-def fun_l8_n967(x)
- if (x < 1)
- fun_l9_n185(x)
- else
- fun_l9_n729(x)
- end
-end
-
-def fun_l8_n968(x)
- if (x < 1)
- fun_l9_n735(x)
- else
- fun_l9_n347(x)
- end
-end
-
-def fun_l8_n969(x)
- if (x < 1)
- fun_l9_n796(x)
- else
- fun_l9_n163(x)
- end
-end
-
-def fun_l8_n970(x)
- if (x < 1)
- fun_l9_n535(x)
- else
- fun_l9_n184(x)
- end
-end
-
-def fun_l8_n971(x)
- if (x < 1)
- fun_l9_n919(x)
- else
- fun_l9_n838(x)
- end
-end
-
-def fun_l8_n972(x)
- if (x < 1)
- fun_l9_n296(x)
- else
- fun_l9_n822(x)
- end
-end
-
-def fun_l8_n973(x)
- if (x < 1)
- fun_l9_n503(x)
- else
- fun_l9_n979(x)
- end
-end
-
-def fun_l8_n974(x)
- if (x < 1)
- fun_l9_n598(x)
- else
- fun_l9_n916(x)
- end
-end
-
-def fun_l8_n975(x)
- if (x < 1)
- fun_l9_n119(x)
- else
- fun_l9_n138(x)
- end
-end
-
-def fun_l8_n976(x)
- if (x < 1)
- fun_l9_n92(x)
- else
- fun_l9_n244(x)
- end
-end
-
-def fun_l8_n977(x)
- if (x < 1)
- fun_l9_n250(x)
- else
- fun_l9_n496(x)
- end
-end
-
-def fun_l8_n978(x)
- if (x < 1)
- fun_l9_n665(x)
- else
- fun_l9_n617(x)
- end
-end
-
-def fun_l8_n979(x)
- if (x < 1)
- fun_l9_n212(x)
- else
- fun_l9_n63(x)
- end
-end
-
-def fun_l8_n980(x)
- if (x < 1)
- fun_l9_n304(x)
- else
- fun_l9_n373(x)
- end
-end
-
-def fun_l8_n981(x)
- if (x < 1)
- fun_l9_n70(x)
- else
- fun_l9_n194(x)
- end
-end
-
-def fun_l8_n982(x)
- if (x < 1)
- fun_l9_n996(x)
- else
- fun_l9_n821(x)
- end
-end
-
-def fun_l8_n983(x)
- if (x < 1)
- fun_l9_n109(x)
- else
- fun_l9_n926(x)
- end
-end
-
-def fun_l8_n984(x)
- if (x < 1)
- fun_l9_n342(x)
- else
- fun_l9_n768(x)
- end
-end
-
-def fun_l8_n985(x)
- if (x < 1)
- fun_l9_n12(x)
- else
- fun_l9_n55(x)
- end
-end
-
-def fun_l8_n986(x)
- if (x < 1)
- fun_l9_n663(x)
- else
- fun_l9_n963(x)
- end
-end
-
-def fun_l8_n987(x)
- if (x < 1)
- fun_l9_n108(x)
- else
- fun_l9_n139(x)
- end
-end
-
-def fun_l8_n988(x)
- if (x < 1)
- fun_l9_n256(x)
- else
- fun_l9_n55(x)
- end
-end
-
-def fun_l8_n989(x)
- if (x < 1)
- fun_l9_n261(x)
- else
- fun_l9_n962(x)
- end
-end
-
-def fun_l8_n990(x)
- if (x < 1)
- fun_l9_n581(x)
- else
- fun_l9_n558(x)
- end
-end
-
-def fun_l8_n991(x)
- if (x < 1)
- fun_l9_n379(x)
- else
- fun_l9_n179(x)
- end
-end
-
-def fun_l8_n992(x)
- if (x < 1)
- fun_l9_n256(x)
- else
- fun_l9_n158(x)
- end
-end
-
-def fun_l8_n993(x)
- if (x < 1)
- fun_l9_n75(x)
- else
- fun_l9_n669(x)
- end
-end
-
-def fun_l8_n994(x)
- if (x < 1)
- fun_l9_n1(x)
- else
- fun_l9_n723(x)
- end
-end
-
-def fun_l8_n995(x)
- if (x < 1)
- fun_l9_n52(x)
- else
- fun_l9_n706(x)
- end
-end
-
-def fun_l8_n996(x)
- if (x < 1)
- fun_l9_n583(x)
- else
- fun_l9_n769(x)
- end
-end
-
-def fun_l8_n997(x)
- if (x < 1)
- fun_l9_n91(x)
- else
- fun_l9_n86(x)
- end
-end
-
-def fun_l8_n998(x)
- if (x < 1)
- fun_l9_n605(x)
- else
- fun_l9_n106(x)
- end
-end
-
-def fun_l8_n999(x)
- if (x < 1)
- fun_l9_n634(x)
- else
- fun_l9_n110(x)
- end
-end
-
-def fun_l9_n0(x)
- if (x < 1)
- fun_l10_n583(x)
- else
- fun_l10_n168(x)
- end
-end
-
-def fun_l9_n1(x)
- if (x < 1)
- fun_l10_n523(x)
- else
- fun_l10_n486(x)
- end
-end
-
-def fun_l9_n2(x)
- if (x < 1)
- fun_l10_n869(x)
- else
- fun_l10_n480(x)
- end
-end
-
-def fun_l9_n3(x)
- if (x < 1)
- fun_l10_n227(x)
- else
- fun_l10_n798(x)
- end
-end
-
-def fun_l9_n4(x)
- if (x < 1)
- fun_l10_n8(x)
- else
- fun_l10_n984(x)
- end
-end
-
-def fun_l9_n5(x)
- if (x < 1)
- fun_l10_n757(x)
- else
- fun_l10_n791(x)
- end
-end
-
-def fun_l9_n6(x)
- if (x < 1)
- fun_l10_n131(x)
- else
- fun_l10_n44(x)
- end
-end
-
-def fun_l9_n7(x)
- if (x < 1)
- fun_l10_n292(x)
- else
- fun_l10_n793(x)
- end
-end
-
-def fun_l9_n8(x)
- if (x < 1)
- fun_l10_n237(x)
- else
- fun_l10_n439(x)
- end
-end
-
-def fun_l9_n9(x)
- if (x < 1)
- fun_l10_n99(x)
- else
- fun_l10_n914(x)
- end
-end
-
-def fun_l9_n10(x)
- if (x < 1)
- fun_l10_n702(x)
- else
- fun_l10_n983(x)
- end
-end
-
-def fun_l9_n11(x)
- if (x < 1)
- fun_l10_n843(x)
- else
- fun_l10_n774(x)
- end
-end
-
-def fun_l9_n12(x)
- if (x < 1)
- fun_l10_n720(x)
- else
- fun_l10_n238(x)
- end
-end
-
-def fun_l9_n13(x)
- if (x < 1)
- fun_l10_n339(x)
- else
- fun_l10_n613(x)
- end
-end
-
-def fun_l9_n14(x)
- if (x < 1)
- fun_l10_n711(x)
- else
- fun_l10_n836(x)
- end
-end
-
-def fun_l9_n15(x)
- if (x < 1)
- fun_l10_n542(x)
- else
- fun_l10_n90(x)
- end
-end
-
-def fun_l9_n16(x)
- if (x < 1)
- fun_l10_n931(x)
- else
- fun_l10_n1(x)
- end
-end
-
-def fun_l9_n17(x)
- if (x < 1)
- fun_l10_n568(x)
- else
- fun_l10_n397(x)
- end
-end
-
-def fun_l9_n18(x)
- if (x < 1)
- fun_l10_n108(x)
- else
- fun_l10_n245(x)
- end
-end
-
-def fun_l9_n19(x)
- if (x < 1)
- fun_l10_n413(x)
- else
- fun_l10_n644(x)
- end
-end
-
-def fun_l9_n20(x)
- if (x < 1)
- fun_l10_n533(x)
- else
- fun_l10_n345(x)
- end
-end
-
-def fun_l9_n21(x)
- if (x < 1)
- fun_l10_n84(x)
- else
- fun_l10_n821(x)
- end
-end
-
-def fun_l9_n22(x)
- if (x < 1)
- fun_l10_n391(x)
- else
- fun_l10_n154(x)
- end
-end
-
-def fun_l9_n23(x)
- if (x < 1)
- fun_l10_n591(x)
- else
- fun_l10_n443(x)
- end
-end
-
-def fun_l9_n24(x)
- if (x < 1)
- fun_l10_n105(x)
- else
- fun_l10_n652(x)
- end
-end
-
-def fun_l9_n25(x)
- if (x < 1)
- fun_l10_n495(x)
- else
- fun_l10_n185(x)
- end
-end
-
-def fun_l9_n26(x)
- if (x < 1)
- fun_l10_n160(x)
- else
- fun_l10_n77(x)
- end
-end
-
-def fun_l9_n27(x)
- if (x < 1)
- fun_l10_n307(x)
- else
- fun_l10_n813(x)
- end
-end
-
-def fun_l9_n28(x)
- if (x < 1)
- fun_l10_n651(x)
- else
- fun_l10_n198(x)
- end
-end
-
-def fun_l9_n29(x)
- if (x < 1)
- fun_l10_n689(x)
- else
- fun_l10_n995(x)
- end
-end
-
-def fun_l9_n30(x)
- if (x < 1)
- fun_l10_n52(x)
- else
- fun_l10_n846(x)
- end
-end
-
-def fun_l9_n31(x)
- if (x < 1)
- fun_l10_n151(x)
- else
- fun_l10_n758(x)
- end
-end
-
-def fun_l9_n32(x)
- if (x < 1)
- fun_l10_n675(x)
- else
- fun_l10_n240(x)
- end
-end
-
-def fun_l9_n33(x)
- if (x < 1)
- fun_l10_n660(x)
- else
- fun_l10_n826(x)
- end
-end
-
-def fun_l9_n34(x)
- if (x < 1)
- fun_l10_n858(x)
- else
- fun_l10_n120(x)
- end
-end
-
-def fun_l9_n35(x)
- if (x < 1)
- fun_l10_n28(x)
- else
- fun_l10_n870(x)
- end
-end
-
-def fun_l9_n36(x)
- if (x < 1)
- fun_l10_n275(x)
- else
- fun_l10_n376(x)
- end
-end
-
-def fun_l9_n37(x)
- if (x < 1)
- fun_l10_n852(x)
- else
- fun_l10_n413(x)
- end
-end
-
-def fun_l9_n38(x)
- if (x < 1)
- fun_l10_n608(x)
- else
- fun_l10_n740(x)
- end
-end
-
-def fun_l9_n39(x)
- if (x < 1)
- fun_l10_n856(x)
- else
- fun_l10_n543(x)
- end
-end
-
-def fun_l9_n40(x)
- if (x < 1)
- fun_l10_n979(x)
- else
- fun_l10_n37(x)
- end
-end
-
-def fun_l9_n41(x)
- if (x < 1)
- fun_l10_n752(x)
- else
- fun_l10_n94(x)
- end
-end
-
-def fun_l9_n42(x)
- if (x < 1)
- fun_l10_n653(x)
- else
- fun_l10_n64(x)
- end
-end
-
-def fun_l9_n43(x)
- if (x < 1)
- fun_l10_n860(x)
- else
- fun_l10_n658(x)
- end
-end
-
-def fun_l9_n44(x)
- if (x < 1)
- fun_l10_n952(x)
- else
- fun_l10_n413(x)
- end
-end
-
-def fun_l9_n45(x)
- if (x < 1)
- fun_l10_n70(x)
- else
- fun_l10_n297(x)
- end
-end
-
-def fun_l9_n46(x)
- if (x < 1)
- fun_l10_n100(x)
- else
- fun_l10_n154(x)
- end
-end
-
-def fun_l9_n47(x)
- if (x < 1)
- fun_l10_n746(x)
- else
- fun_l10_n937(x)
- end
-end
-
-def fun_l9_n48(x)
- if (x < 1)
- fun_l10_n341(x)
- else
- fun_l10_n200(x)
- end
-end
-
-def fun_l9_n49(x)
- if (x < 1)
- fun_l10_n317(x)
- else
- fun_l10_n607(x)
- end
-end
-
-def fun_l9_n50(x)
- if (x < 1)
- fun_l10_n194(x)
- else
- fun_l10_n499(x)
- end
-end
-
-def fun_l9_n51(x)
- if (x < 1)
- fun_l10_n936(x)
- else
- fun_l10_n387(x)
- end
-end
-
-def fun_l9_n52(x)
- if (x < 1)
- fun_l10_n660(x)
- else
- fun_l10_n734(x)
- end
-end
-
-def fun_l9_n53(x)
- if (x < 1)
- fun_l10_n523(x)
- else
- fun_l10_n532(x)
- end
-end
-
-def fun_l9_n54(x)
- if (x < 1)
- fun_l10_n847(x)
- else
- fun_l10_n586(x)
- end
-end
-
-def fun_l9_n55(x)
- if (x < 1)
- fun_l10_n378(x)
- else
- fun_l10_n226(x)
- end
-end
-
-def fun_l9_n56(x)
- if (x < 1)
- fun_l10_n55(x)
- else
- fun_l10_n823(x)
- end
-end
-
-def fun_l9_n57(x)
- if (x < 1)
- fun_l10_n931(x)
- else
- fun_l10_n268(x)
- end
-end
-
-def fun_l9_n58(x)
- if (x < 1)
- fun_l10_n603(x)
- else
- fun_l10_n746(x)
- end
-end
-
-def fun_l9_n59(x)
- if (x < 1)
- fun_l10_n174(x)
- else
- fun_l10_n196(x)
- end
-end
-
-def fun_l9_n60(x)
- if (x < 1)
- fun_l10_n45(x)
- else
- fun_l10_n907(x)
- end
-end
-
-def fun_l9_n61(x)
- if (x < 1)
- fun_l10_n282(x)
- else
- fun_l10_n478(x)
- end
-end
-
-def fun_l9_n62(x)
- if (x < 1)
- fun_l10_n558(x)
- else
- fun_l10_n354(x)
- end
-end
-
-def fun_l9_n63(x)
- if (x < 1)
- fun_l10_n729(x)
- else
- fun_l10_n275(x)
- end
-end
-
-def fun_l9_n64(x)
- if (x < 1)
- fun_l10_n804(x)
- else
- fun_l10_n873(x)
- end
-end
-
-def fun_l9_n65(x)
- if (x < 1)
- fun_l10_n901(x)
- else
- fun_l10_n684(x)
- end
-end
-
-def fun_l9_n66(x)
- if (x < 1)
- fun_l10_n542(x)
- else
- fun_l10_n668(x)
- end
-end
-
-def fun_l9_n67(x)
- if (x < 1)
- fun_l10_n112(x)
- else
- fun_l10_n48(x)
- end
-end
-
-def fun_l9_n68(x)
- if (x < 1)
- fun_l10_n78(x)
- else
- fun_l10_n50(x)
- end
-end
-
-def fun_l9_n69(x)
- if (x < 1)
- fun_l10_n595(x)
- else
- fun_l10_n163(x)
- end
-end
-
-def fun_l9_n70(x)
- if (x < 1)
- fun_l10_n839(x)
- else
- fun_l10_n811(x)
- end
-end
-
-def fun_l9_n71(x)
- if (x < 1)
- fun_l10_n704(x)
- else
- fun_l10_n81(x)
- end
-end
-
-def fun_l9_n72(x)
- if (x < 1)
- fun_l10_n708(x)
- else
- fun_l10_n711(x)
- end
-end
-
-def fun_l9_n73(x)
- if (x < 1)
- fun_l10_n948(x)
- else
- fun_l10_n397(x)
- end
-end
-
-def fun_l9_n74(x)
- if (x < 1)
- fun_l10_n168(x)
- else
- fun_l10_n415(x)
- end
-end
-
-def fun_l9_n75(x)
- if (x < 1)
- fun_l10_n191(x)
- else
- fun_l10_n547(x)
- end
-end
-
-def fun_l9_n76(x)
- if (x < 1)
- fun_l10_n163(x)
- else
- fun_l10_n246(x)
- end
-end
-
-def fun_l9_n77(x)
- if (x < 1)
- fun_l10_n948(x)
- else
- fun_l10_n80(x)
- end
-end
-
-def fun_l9_n78(x)
- if (x < 1)
- fun_l10_n178(x)
- else
- fun_l10_n698(x)
- end
-end
-
-def fun_l9_n79(x)
- if (x < 1)
- fun_l10_n150(x)
- else
- fun_l10_n545(x)
- end
-end
-
-def fun_l9_n80(x)
- if (x < 1)
- fun_l10_n808(x)
- else
- fun_l10_n668(x)
- end
-end
-
-def fun_l9_n81(x)
- if (x < 1)
- fun_l10_n597(x)
- else
- fun_l10_n908(x)
- end
-end
-
-def fun_l9_n82(x)
- if (x < 1)
- fun_l10_n868(x)
- else
- fun_l10_n831(x)
- end
-end
-
-def fun_l9_n83(x)
- if (x < 1)
- fun_l10_n432(x)
- else
- fun_l10_n281(x)
- end
-end
-
-def fun_l9_n84(x)
- if (x < 1)
- fun_l10_n906(x)
- else
- fun_l10_n838(x)
- end
-end
-
-def fun_l9_n85(x)
- if (x < 1)
- fun_l10_n828(x)
- else
- fun_l10_n876(x)
- end
-end
-
-def fun_l9_n86(x)
- if (x < 1)
- fun_l10_n537(x)
- else
- fun_l10_n283(x)
- end
-end
-
-def fun_l9_n87(x)
- if (x < 1)
- fun_l10_n108(x)
- else
- fun_l10_n157(x)
- end
-end
-
-def fun_l9_n88(x)
- if (x < 1)
- fun_l10_n576(x)
- else
- fun_l10_n448(x)
- end
-end
-
-def fun_l9_n89(x)
- if (x < 1)
- fun_l10_n633(x)
- else
- fun_l10_n43(x)
- end
-end
-
-def fun_l9_n90(x)
- if (x < 1)
- fun_l10_n114(x)
- else
- fun_l10_n44(x)
- end
-end
-
-def fun_l9_n91(x)
- if (x < 1)
- fun_l10_n656(x)
- else
- fun_l10_n586(x)
- end
-end
-
-def fun_l9_n92(x)
- if (x < 1)
- fun_l10_n366(x)
- else
- fun_l10_n613(x)
- end
-end
-
-def fun_l9_n93(x)
- if (x < 1)
- fun_l10_n174(x)
- else
- fun_l10_n250(x)
- end
-end
-
-def fun_l9_n94(x)
- if (x < 1)
- fun_l10_n911(x)
- else
- fun_l10_n877(x)
- end
-end
-
-def fun_l9_n95(x)
- if (x < 1)
- fun_l10_n940(x)
- else
- fun_l10_n334(x)
- end
-end
-
-def fun_l9_n96(x)
- if (x < 1)
- fun_l10_n473(x)
- else
- fun_l10_n914(x)
- end
-end
-
-def fun_l9_n97(x)
- if (x < 1)
- fun_l10_n550(x)
- else
- fun_l10_n80(x)
- end
-end
-
-def fun_l9_n98(x)
- if (x < 1)
- fun_l10_n46(x)
- else
- fun_l10_n716(x)
- end
-end
-
-def fun_l9_n99(x)
- if (x < 1)
- fun_l10_n294(x)
- else
- fun_l10_n615(x)
- end
-end
-
-def fun_l9_n100(x)
- if (x < 1)
- fun_l10_n286(x)
- else
- fun_l10_n120(x)
- end
-end
-
-def fun_l9_n101(x)
- if (x < 1)
- fun_l10_n674(x)
- else
- fun_l10_n498(x)
- end
-end
-
-def fun_l9_n102(x)
- if (x < 1)
- fun_l10_n700(x)
- else
- fun_l10_n35(x)
- end
-end
-
-def fun_l9_n103(x)
- if (x < 1)
- fun_l10_n225(x)
- else
- fun_l10_n206(x)
- end
-end
-
-def fun_l9_n104(x)
- if (x < 1)
- fun_l10_n594(x)
- else
- fun_l10_n679(x)
- end
-end
-
-def fun_l9_n105(x)
- if (x < 1)
- fun_l10_n148(x)
- else
- fun_l10_n449(x)
- end
-end
-
-def fun_l9_n106(x)
- if (x < 1)
- fun_l10_n125(x)
- else
- fun_l10_n761(x)
- end
-end
-
-def fun_l9_n107(x)
- if (x < 1)
- fun_l10_n642(x)
- else
- fun_l10_n988(x)
- end
-end
-
-def fun_l9_n108(x)
- if (x < 1)
- fun_l10_n952(x)
- else
- fun_l10_n436(x)
- end
-end
-
-def fun_l9_n109(x)
- if (x < 1)
- fun_l10_n955(x)
- else
- fun_l10_n380(x)
- end
-end
-
-def fun_l9_n110(x)
- if (x < 1)
- fun_l10_n813(x)
- else
- fun_l10_n837(x)
- end
-end
-
-def fun_l9_n111(x)
- if (x < 1)
- fun_l10_n471(x)
- else
- fun_l10_n69(x)
- end
-end
-
-def fun_l9_n112(x)
- if (x < 1)
- fun_l10_n614(x)
- else
- fun_l10_n665(x)
- end
-end
-
-def fun_l9_n113(x)
- if (x < 1)
- fun_l10_n485(x)
- else
- fun_l10_n276(x)
- end
-end
-
-def fun_l9_n114(x)
- if (x < 1)
- fun_l10_n171(x)
- else
- fun_l10_n457(x)
- end
-end
-
-def fun_l9_n115(x)
- if (x < 1)
- fun_l10_n106(x)
- else
- fun_l10_n555(x)
- end
-end
-
-def fun_l9_n116(x)
- if (x < 1)
- fun_l10_n231(x)
- else
- fun_l10_n163(x)
- end
-end
-
-def fun_l9_n117(x)
- if (x < 1)
- fun_l10_n569(x)
- else
- fun_l10_n345(x)
- end
-end
-
-def fun_l9_n118(x)
- if (x < 1)
- fun_l10_n946(x)
- else
- fun_l10_n174(x)
- end
-end
-
-def fun_l9_n119(x)
- if (x < 1)
- fun_l10_n716(x)
- else
- fun_l10_n882(x)
- end
-end
-
-def fun_l9_n120(x)
- if (x < 1)
- fun_l10_n628(x)
- else
- fun_l10_n838(x)
- end
-end
-
-def fun_l9_n121(x)
- if (x < 1)
- fun_l10_n699(x)
- else
- fun_l10_n384(x)
- end
-end
-
-def fun_l9_n122(x)
- if (x < 1)
- fun_l10_n180(x)
- else
- fun_l10_n98(x)
- end
-end
-
-def fun_l9_n123(x)
- if (x < 1)
- fun_l10_n177(x)
- else
- fun_l10_n635(x)
- end
-end
-
-def fun_l9_n124(x)
- if (x < 1)
- fun_l10_n398(x)
- else
- fun_l10_n121(x)
- end
-end
-
-def fun_l9_n125(x)
- if (x < 1)
- fun_l10_n866(x)
- else
- fun_l10_n595(x)
- end
-end
-
-def fun_l9_n126(x)
- if (x < 1)
- fun_l10_n9(x)
- else
- fun_l10_n901(x)
- end
-end
-
-def fun_l9_n127(x)
- if (x < 1)
- fun_l10_n579(x)
- else
- fun_l10_n640(x)
- end
-end
-
-def fun_l9_n128(x)
- if (x < 1)
- fun_l10_n884(x)
- else
- fun_l10_n327(x)
- end
-end
-
-def fun_l9_n129(x)
- if (x < 1)
- fun_l10_n553(x)
- else
- fun_l10_n73(x)
- end
-end
-
-def fun_l9_n130(x)
- if (x < 1)
- fun_l10_n372(x)
- else
- fun_l10_n450(x)
- end
-end
-
-def fun_l9_n131(x)
- if (x < 1)
- fun_l10_n748(x)
- else
- fun_l10_n534(x)
- end
-end
-
-def fun_l9_n132(x)
- if (x < 1)
- fun_l10_n529(x)
- else
- fun_l10_n689(x)
- end
-end
-
-def fun_l9_n133(x)
- if (x < 1)
- fun_l10_n24(x)
- else
- fun_l10_n677(x)
- end
-end
-
-def fun_l9_n134(x)
- if (x < 1)
- fun_l10_n4(x)
- else
- fun_l10_n482(x)
- end
-end
-
-def fun_l9_n135(x)
- if (x < 1)
- fun_l10_n314(x)
- else
- fun_l10_n509(x)
- end
-end
-
-def fun_l9_n136(x)
- if (x < 1)
- fun_l10_n160(x)
- else
- fun_l10_n342(x)
- end
-end
-
-def fun_l9_n137(x)
- if (x < 1)
- fun_l10_n289(x)
- else
- fun_l10_n910(x)
- end
-end
-
-def fun_l9_n138(x)
- if (x < 1)
- fun_l10_n926(x)
- else
- fun_l10_n752(x)
- end
-end
-
-def fun_l9_n139(x)
- if (x < 1)
- fun_l10_n303(x)
- else
- fun_l10_n399(x)
- end
-end
-
-def fun_l9_n140(x)
- if (x < 1)
- fun_l10_n11(x)
- else
- fun_l10_n241(x)
- end
-end
-
-def fun_l9_n141(x)
- if (x < 1)
- fun_l10_n528(x)
- else
- fun_l10_n727(x)
- end
-end
-
-def fun_l9_n142(x)
- if (x < 1)
- fun_l10_n572(x)
- else
- fun_l10_n132(x)
- end
-end
-
-def fun_l9_n143(x)
- if (x < 1)
- fun_l10_n858(x)
- else
- fun_l10_n712(x)
- end
-end
-
-def fun_l9_n144(x)
- if (x < 1)
- fun_l10_n662(x)
- else
- fun_l10_n128(x)
- end
-end
-
-def fun_l9_n145(x)
- if (x < 1)
- fun_l10_n668(x)
- else
- fun_l10_n483(x)
- end
-end
-
-def fun_l9_n146(x)
- if (x < 1)
- fun_l10_n401(x)
- else
- fun_l10_n330(x)
- end
-end
-
-def fun_l9_n147(x)
- if (x < 1)
- fun_l10_n103(x)
- else
- fun_l10_n859(x)
- end
-end
-
-def fun_l9_n148(x)
- if (x < 1)
- fun_l10_n129(x)
- else
- fun_l10_n628(x)
- end
-end
-
-def fun_l9_n149(x)
- if (x < 1)
- fun_l10_n898(x)
- else
- fun_l10_n984(x)
- end
-end
-
-def fun_l9_n150(x)
- if (x < 1)
- fun_l10_n574(x)
- else
- fun_l10_n59(x)
- end
-end
-
-def fun_l9_n151(x)
- if (x < 1)
- fun_l10_n759(x)
- else
- fun_l10_n782(x)
- end
-end
-
-def fun_l9_n152(x)
- if (x < 1)
- fun_l10_n588(x)
- else
- fun_l10_n383(x)
- end
-end
-
-def fun_l9_n153(x)
- if (x < 1)
- fun_l10_n889(x)
- else
- fun_l10_n628(x)
- end
-end
-
-def fun_l9_n154(x)
- if (x < 1)
- fun_l10_n376(x)
- else
- fun_l10_n442(x)
- end
-end
-
-def fun_l9_n155(x)
- if (x < 1)
- fun_l10_n497(x)
- else
- fun_l10_n269(x)
- end
-end
-
-def fun_l9_n156(x)
- if (x < 1)
- fun_l10_n976(x)
- else
- fun_l10_n829(x)
- end
-end
-
-def fun_l9_n157(x)
- if (x < 1)
- fun_l10_n366(x)
- else
- fun_l10_n416(x)
- end
-end
-
-def fun_l9_n158(x)
- if (x < 1)
- fun_l10_n712(x)
- else
- fun_l10_n19(x)
- end
-end
-
-def fun_l9_n159(x)
- if (x < 1)
- fun_l10_n151(x)
- else
- fun_l10_n129(x)
- end
-end
-
-def fun_l9_n160(x)
- if (x < 1)
- fun_l10_n621(x)
- else
- fun_l10_n385(x)
- end
-end
-
-def fun_l9_n161(x)
- if (x < 1)
- fun_l10_n626(x)
- else
- fun_l10_n686(x)
- end
-end
-
-def fun_l9_n162(x)
- if (x < 1)
- fun_l10_n165(x)
- else
- fun_l10_n922(x)
- end
-end
-
-def fun_l9_n163(x)
- if (x < 1)
- fun_l10_n670(x)
- else
- fun_l10_n889(x)
- end
-end
-
-def fun_l9_n164(x)
- if (x < 1)
- fun_l10_n346(x)
- else
- fun_l10_n292(x)
- end
-end
-
-def fun_l9_n165(x)
- if (x < 1)
- fun_l10_n812(x)
- else
- fun_l10_n799(x)
- end
-end
-
-def fun_l9_n166(x)
- if (x < 1)
- fun_l10_n21(x)
- else
- fun_l10_n641(x)
- end
-end
-
-def fun_l9_n167(x)
- if (x < 1)
- fun_l10_n268(x)
- else
- fun_l10_n943(x)
- end
-end
-
-def fun_l9_n168(x)
- if (x < 1)
- fun_l10_n349(x)
- else
- fun_l10_n620(x)
- end
-end
-
-def fun_l9_n169(x)
- if (x < 1)
- fun_l10_n894(x)
- else
- fun_l10_n625(x)
- end
-end
-
-def fun_l9_n170(x)
- if (x < 1)
- fun_l10_n732(x)
- else
- fun_l10_n518(x)
- end
-end
-
-def fun_l9_n171(x)
- if (x < 1)
- fun_l10_n272(x)
- else
- fun_l10_n148(x)
- end
-end
-
-def fun_l9_n172(x)
- if (x < 1)
- fun_l10_n701(x)
- else
- fun_l10_n227(x)
- end
-end
-
-def fun_l9_n173(x)
- if (x < 1)
- fun_l10_n833(x)
- else
- fun_l10_n853(x)
- end
-end
-
-def fun_l9_n174(x)
- if (x < 1)
- fun_l10_n643(x)
- else
- fun_l10_n314(x)
- end
-end
-
-def fun_l9_n175(x)
- if (x < 1)
- fun_l10_n217(x)
- else
- fun_l10_n64(x)
- end
-end
-
-def fun_l9_n176(x)
- if (x < 1)
- fun_l10_n204(x)
- else
- fun_l10_n990(x)
- end
-end
-
-def fun_l9_n177(x)
- if (x < 1)
- fun_l10_n130(x)
- else
- fun_l10_n829(x)
- end
-end
-
-def fun_l9_n178(x)
- if (x < 1)
- fun_l10_n260(x)
- else
- fun_l10_n881(x)
- end
-end
-
-def fun_l9_n179(x)
- if (x < 1)
- fun_l10_n728(x)
- else
- fun_l10_n491(x)
- end
-end
-
-def fun_l9_n180(x)
- if (x < 1)
- fun_l10_n456(x)
- else
- fun_l10_n221(x)
- end
-end
-
-def fun_l9_n181(x)
- if (x < 1)
- fun_l10_n634(x)
- else
- fun_l10_n166(x)
- end
-end
-
-def fun_l9_n182(x)
- if (x < 1)
- fun_l10_n427(x)
- else
- fun_l10_n452(x)
- end
-end
-
-def fun_l9_n183(x)
- if (x < 1)
- fun_l10_n754(x)
- else
- fun_l10_n54(x)
- end
-end
-
-def fun_l9_n184(x)
- if (x < 1)
- fun_l10_n137(x)
- else
- fun_l10_n155(x)
- end
-end
-
-def fun_l9_n185(x)
- if (x < 1)
- fun_l10_n611(x)
- else
- fun_l10_n573(x)
- end
-end
-
-def fun_l9_n186(x)
- if (x < 1)
- fun_l10_n694(x)
- else
- fun_l10_n890(x)
- end
-end
-
-def fun_l9_n187(x)
- if (x < 1)
- fun_l10_n533(x)
- else
- fun_l10_n102(x)
- end
-end
-
-def fun_l9_n188(x)
- if (x < 1)
- fun_l10_n400(x)
- else
- fun_l10_n838(x)
- end
-end
-
-def fun_l9_n189(x)
- if (x < 1)
- fun_l10_n783(x)
- else
- fun_l10_n620(x)
- end
-end
-
-def fun_l9_n190(x)
- if (x < 1)
- fun_l10_n209(x)
- else
- fun_l10_n777(x)
- end
-end
-
-def fun_l9_n191(x)
- if (x < 1)
- fun_l10_n760(x)
- else
- fun_l10_n299(x)
- end
-end
-
-def fun_l9_n192(x)
- if (x < 1)
- fun_l10_n306(x)
- else
- fun_l10_n509(x)
- end
-end
-
-def fun_l9_n193(x)
- if (x < 1)
- fun_l10_n842(x)
- else
- fun_l10_n0(x)
- end
-end
-
-def fun_l9_n194(x)
- if (x < 1)
- fun_l10_n620(x)
- else
- fun_l10_n757(x)
- end
-end
-
-def fun_l9_n195(x)
- if (x < 1)
- fun_l10_n944(x)
- else
- fun_l10_n257(x)
- end
-end
-
-def fun_l9_n196(x)
- if (x < 1)
- fun_l10_n222(x)
- else
- fun_l10_n11(x)
- end
-end
-
-def fun_l9_n197(x)
- if (x < 1)
- fun_l10_n419(x)
- else
- fun_l10_n704(x)
- end
-end
-
-def fun_l9_n198(x)
- if (x < 1)
- fun_l10_n656(x)
- else
- fun_l10_n341(x)
- end
-end
-
-def fun_l9_n199(x)
- if (x < 1)
- fun_l10_n129(x)
- else
- fun_l10_n815(x)
- end
-end
-
-def fun_l9_n200(x)
- if (x < 1)
- fun_l10_n768(x)
- else
- fun_l10_n924(x)
- end
-end
-
-def fun_l9_n201(x)
- if (x < 1)
- fun_l10_n439(x)
- else
- fun_l10_n361(x)
- end
-end
-
-def fun_l9_n202(x)
- if (x < 1)
- fun_l10_n421(x)
- else
- fun_l10_n937(x)
- end
-end
-
-def fun_l9_n203(x)
- if (x < 1)
- fun_l10_n323(x)
- else
- fun_l10_n262(x)
- end
-end
-
-def fun_l9_n204(x)
- if (x < 1)
- fun_l10_n335(x)
- else
- fun_l10_n87(x)
- end
-end
-
-def fun_l9_n205(x)
- if (x < 1)
- fun_l10_n973(x)
- else
- fun_l10_n262(x)
- end
-end
-
-def fun_l9_n206(x)
- if (x < 1)
- fun_l10_n494(x)
- else
- fun_l10_n430(x)
- end
-end
-
-def fun_l9_n207(x)
- if (x < 1)
- fun_l10_n482(x)
- else
- fun_l10_n828(x)
- end
-end
-
-def fun_l9_n208(x)
- if (x < 1)
- fun_l10_n820(x)
- else
- fun_l10_n646(x)
- end
-end
-
-def fun_l9_n209(x)
- if (x < 1)
- fun_l10_n669(x)
- else
- fun_l10_n176(x)
- end
-end
-
-def fun_l9_n210(x)
- if (x < 1)
- fun_l10_n165(x)
- else
- fun_l10_n963(x)
- end
-end
-
-def fun_l9_n211(x)
- if (x < 1)
- fun_l10_n772(x)
- else
- fun_l10_n49(x)
- end
-end
-
-def fun_l9_n212(x)
- if (x < 1)
- fun_l10_n167(x)
- else
- fun_l10_n598(x)
- end
-end
-
-def fun_l9_n213(x)
- if (x < 1)
- fun_l10_n552(x)
- else
- fun_l10_n374(x)
- end
-end
-
-def fun_l9_n214(x)
- if (x < 1)
- fun_l10_n39(x)
- else
- fun_l10_n470(x)
- end
-end
-
-def fun_l9_n215(x)
- if (x < 1)
- fun_l10_n489(x)
- else
- fun_l10_n812(x)
- end
-end
-
-def fun_l9_n216(x)
- if (x < 1)
- fun_l10_n390(x)
- else
- fun_l10_n928(x)
- end
-end
-
-def fun_l9_n217(x)
- if (x < 1)
- fun_l10_n909(x)
- else
- fun_l10_n876(x)
- end
-end
-
-def fun_l9_n218(x)
- if (x < 1)
- fun_l10_n781(x)
- else
- fun_l10_n799(x)
- end
-end
-
-def fun_l9_n219(x)
- if (x < 1)
- fun_l10_n958(x)
- else
- fun_l10_n697(x)
- end
-end
-
-def fun_l9_n220(x)
- if (x < 1)
- fun_l10_n577(x)
- else
- fun_l10_n667(x)
- end
-end
-
-def fun_l9_n221(x)
- if (x < 1)
- fun_l10_n206(x)
- else
- fun_l10_n573(x)
- end
-end
-
-def fun_l9_n222(x)
- if (x < 1)
- fun_l10_n389(x)
- else
- fun_l10_n659(x)
- end
-end
-
-def fun_l9_n223(x)
- if (x < 1)
- fun_l10_n951(x)
- else
- fun_l10_n572(x)
- end
-end
-
-def fun_l9_n224(x)
- if (x < 1)
- fun_l10_n158(x)
- else
- fun_l10_n500(x)
- end
-end
-
-def fun_l9_n225(x)
- if (x < 1)
- fun_l10_n681(x)
- else
- fun_l10_n983(x)
- end
-end
-
-def fun_l9_n226(x)
- if (x < 1)
- fun_l10_n987(x)
- else
- fun_l10_n116(x)
- end
-end
-
-def fun_l9_n227(x)
- if (x < 1)
- fun_l10_n347(x)
- else
- fun_l10_n606(x)
- end
-end
-
-def fun_l9_n228(x)
- if (x < 1)
- fun_l10_n566(x)
- else
- fun_l10_n77(x)
- end
-end
-
-def fun_l9_n229(x)
- if (x < 1)
- fun_l10_n879(x)
- else
- fun_l10_n66(x)
- end
-end
-
-def fun_l9_n230(x)
- if (x < 1)
- fun_l10_n355(x)
- else
- fun_l10_n97(x)
- end
-end
-
-def fun_l9_n231(x)
- if (x < 1)
- fun_l10_n938(x)
- else
- fun_l10_n5(x)
- end
-end
-
-def fun_l9_n232(x)
- if (x < 1)
- fun_l10_n684(x)
- else
- fun_l10_n528(x)
- end
-end
-
-def fun_l9_n233(x)
- if (x < 1)
- fun_l10_n500(x)
- else
- fun_l10_n246(x)
- end
-end
-
-def fun_l9_n234(x)
- if (x < 1)
- fun_l10_n610(x)
- else
- fun_l10_n61(x)
- end
-end
-
-def fun_l9_n235(x)
- if (x < 1)
- fun_l10_n199(x)
- else
- fun_l10_n838(x)
- end
-end
-
-def fun_l9_n236(x)
- if (x < 1)
- fun_l10_n820(x)
- else
- fun_l10_n633(x)
- end
-end
-
-def fun_l9_n237(x)
- if (x < 1)
- fun_l10_n216(x)
- else
- fun_l10_n546(x)
- end
-end
-
-def fun_l9_n238(x)
- if (x < 1)
- fun_l10_n555(x)
- else
- fun_l10_n153(x)
- end
-end
-
-def fun_l9_n239(x)
- if (x < 1)
- fun_l10_n236(x)
- else
- fun_l10_n231(x)
- end
-end
-
-def fun_l9_n240(x)
- if (x < 1)
- fun_l10_n775(x)
- else
- fun_l10_n823(x)
- end
-end
-
-def fun_l9_n241(x)
- if (x < 1)
- fun_l10_n275(x)
- else
- fun_l10_n519(x)
- end
-end
-
-def fun_l9_n242(x)
- if (x < 1)
- fun_l10_n239(x)
- else
- fun_l10_n791(x)
- end
-end
-
-def fun_l9_n243(x)
- if (x < 1)
- fun_l10_n639(x)
- else
- fun_l10_n972(x)
- end
-end
-
-def fun_l9_n244(x)
- if (x < 1)
- fun_l10_n5(x)
- else
- fun_l10_n510(x)
- end
-end
-
-def fun_l9_n245(x)
- if (x < 1)
- fun_l10_n256(x)
- else
- fun_l10_n298(x)
- end
-end
-
-def fun_l9_n246(x)
- if (x < 1)
- fun_l10_n139(x)
- else
- fun_l10_n385(x)
- end
-end
-
-def fun_l9_n247(x)
- if (x < 1)
- fun_l10_n4(x)
- else
- fun_l10_n323(x)
- end
-end
-
-def fun_l9_n248(x)
- if (x < 1)
- fun_l10_n166(x)
- else
- fun_l10_n539(x)
- end
-end
-
-def fun_l9_n249(x)
- if (x < 1)
- fun_l10_n374(x)
- else
- fun_l10_n351(x)
- end
-end
-
-def fun_l9_n250(x)
- if (x < 1)
- fun_l10_n650(x)
- else
- fun_l10_n791(x)
- end
-end
-
-def fun_l9_n251(x)
- if (x < 1)
- fun_l10_n799(x)
- else
- fun_l10_n990(x)
- end
-end
-
-def fun_l9_n252(x)
- if (x < 1)
- fun_l10_n388(x)
- else
- fun_l10_n887(x)
- end
-end
-
-def fun_l9_n253(x)
- if (x < 1)
- fun_l10_n564(x)
- else
- fun_l10_n997(x)
- end
-end
-
-def fun_l9_n254(x)
- if (x < 1)
- fun_l10_n580(x)
- else
- fun_l10_n646(x)
- end
-end
-
-def fun_l9_n255(x)
- if (x < 1)
- fun_l10_n0(x)
- else
- fun_l10_n480(x)
- end
-end
-
-def fun_l9_n256(x)
- if (x < 1)
- fun_l10_n606(x)
- else
- fun_l10_n48(x)
- end
-end
-
-def fun_l9_n257(x)
- if (x < 1)
- fun_l10_n601(x)
- else
- fun_l10_n657(x)
- end
-end
-
-def fun_l9_n258(x)
- if (x < 1)
- fun_l10_n419(x)
- else
- fun_l10_n909(x)
- end
-end
-
-def fun_l9_n259(x)
- if (x < 1)
- fun_l10_n194(x)
- else
- fun_l10_n961(x)
- end
-end
-
-def fun_l9_n260(x)
- if (x < 1)
- fun_l10_n876(x)
- else
- fun_l10_n345(x)
- end
-end
-
-def fun_l9_n261(x)
- if (x < 1)
- fun_l10_n643(x)
- else
- fun_l10_n905(x)
- end
-end
-
-def fun_l9_n262(x)
- if (x < 1)
- fun_l10_n105(x)
- else
- fun_l10_n61(x)
- end
-end
-
-def fun_l9_n263(x)
- if (x < 1)
- fun_l10_n610(x)
- else
- fun_l10_n527(x)
- end
-end
-
-def fun_l9_n264(x)
- if (x < 1)
- fun_l10_n183(x)
- else
- fun_l10_n51(x)
- end
-end
-
-def fun_l9_n265(x)
- if (x < 1)
- fun_l10_n800(x)
- else
- fun_l10_n103(x)
- end
-end
-
-def fun_l9_n266(x)
- if (x < 1)
- fun_l10_n501(x)
- else
- fun_l10_n293(x)
- end
-end
-
-def fun_l9_n267(x)
- if (x < 1)
- fun_l10_n207(x)
- else
- fun_l10_n162(x)
- end
-end
-
-def fun_l9_n268(x)
- if (x < 1)
- fun_l10_n901(x)
- else
- fun_l10_n914(x)
- end
-end
-
-def fun_l9_n269(x)
- if (x < 1)
- fun_l10_n711(x)
- else
- fun_l10_n227(x)
- end
-end
-
-def fun_l9_n270(x)
- if (x < 1)
- fun_l10_n445(x)
- else
- fun_l10_n227(x)
- end
-end
-
-def fun_l9_n271(x)
- if (x < 1)
- fun_l10_n585(x)
- else
- fun_l10_n371(x)
- end
-end
-
-def fun_l9_n272(x)
- if (x < 1)
- fun_l10_n137(x)
- else
- fun_l10_n678(x)
- end
-end
-
-def fun_l9_n273(x)
- if (x < 1)
- fun_l10_n284(x)
- else
- fun_l10_n801(x)
- end
-end
-
-def fun_l9_n274(x)
- if (x < 1)
- fun_l10_n829(x)
- else
- fun_l10_n456(x)
- end
-end
-
-def fun_l9_n275(x)
- if (x < 1)
- fun_l10_n663(x)
- else
- fun_l10_n529(x)
- end
-end
-
-def fun_l9_n276(x)
- if (x < 1)
- fun_l10_n154(x)
- else
- fun_l10_n421(x)
- end
-end
-
-def fun_l9_n277(x)
- if (x < 1)
- fun_l10_n778(x)
- else
- fun_l10_n325(x)
- end
-end
-
-def fun_l9_n278(x)
- if (x < 1)
- fun_l10_n179(x)
- else
- fun_l10_n369(x)
- end
-end
-
-def fun_l9_n279(x)
- if (x < 1)
- fun_l10_n800(x)
- else
- fun_l10_n488(x)
- end
-end
-
-def fun_l9_n280(x)
- if (x < 1)
- fun_l10_n617(x)
- else
- fun_l10_n1(x)
- end
-end
-
-def fun_l9_n281(x)
- if (x < 1)
- fun_l10_n951(x)
- else
- fun_l10_n763(x)
- end
-end
-
-def fun_l9_n282(x)
- if (x < 1)
- fun_l10_n537(x)
- else
- fun_l10_n541(x)
- end
-end
-
-def fun_l9_n283(x)
- if (x < 1)
- fun_l10_n664(x)
- else
- fun_l10_n854(x)
- end
-end
-
-def fun_l9_n284(x)
- if (x < 1)
- fun_l10_n711(x)
- else
- fun_l10_n767(x)
- end
-end
-
-def fun_l9_n285(x)
- if (x < 1)
- fun_l10_n211(x)
- else
- fun_l10_n733(x)
- end
-end
-
-def fun_l9_n286(x)
- if (x < 1)
- fun_l10_n524(x)
- else
- fun_l10_n850(x)
- end
-end
-
-def fun_l9_n287(x)
- if (x < 1)
- fun_l10_n270(x)
- else
- fun_l10_n798(x)
- end
-end
-
-def fun_l9_n288(x)
- if (x < 1)
- fun_l10_n906(x)
- else
- fun_l10_n408(x)
- end
-end
-
-def fun_l9_n289(x)
- if (x < 1)
- fun_l10_n873(x)
- else
- fun_l10_n298(x)
- end
-end
-
-def fun_l9_n290(x)
- if (x < 1)
- fun_l10_n535(x)
- else
- fun_l10_n946(x)
- end
-end
-
-def fun_l9_n291(x)
- if (x < 1)
- fun_l10_n290(x)
- else
- fun_l10_n631(x)
- end
-end
-
-def fun_l9_n292(x)
- if (x < 1)
- fun_l10_n223(x)
- else
- fun_l10_n165(x)
- end
-end
-
-def fun_l9_n293(x)
- if (x < 1)
- fun_l10_n768(x)
- else
- fun_l10_n512(x)
- end
-end
-
-def fun_l9_n294(x)
- if (x < 1)
- fun_l10_n133(x)
- else
- fun_l10_n986(x)
- end
-end
-
-def fun_l9_n295(x)
- if (x < 1)
- fun_l10_n657(x)
- else
- fun_l10_n914(x)
- end
-end
-
-def fun_l9_n296(x)
- if (x < 1)
- fun_l10_n444(x)
- else
- fun_l10_n490(x)
- end
-end
-
-def fun_l9_n297(x)
- if (x < 1)
- fun_l10_n478(x)
- else
- fun_l10_n979(x)
- end
-end
-
-def fun_l9_n298(x)
- if (x < 1)
- fun_l10_n994(x)
- else
- fun_l10_n945(x)
- end
-end
-
-def fun_l9_n299(x)
- if (x < 1)
- fun_l10_n865(x)
- else
- fun_l10_n206(x)
- end
-end
-
-def fun_l9_n300(x)
- if (x < 1)
- fun_l10_n678(x)
- else
- fun_l10_n103(x)
- end
-end
-
-def fun_l9_n301(x)
- if (x < 1)
- fun_l10_n115(x)
- else
- fun_l10_n742(x)
- end
-end
-
-def fun_l9_n302(x)
- if (x < 1)
- fun_l10_n677(x)
- else
- fun_l10_n446(x)
- end
-end
-
-def fun_l9_n303(x)
- if (x < 1)
- fun_l10_n144(x)
- else
- fun_l10_n856(x)
- end
-end
-
-def fun_l9_n304(x)
- if (x < 1)
- fun_l10_n751(x)
- else
- fun_l10_n989(x)
- end
-end
-
-def fun_l9_n305(x)
- if (x < 1)
- fun_l10_n200(x)
- else
- fun_l10_n97(x)
- end
-end
-
-def fun_l9_n306(x)
- if (x < 1)
- fun_l10_n685(x)
- else
- fun_l10_n663(x)
- end
-end
-
-def fun_l9_n307(x)
- if (x < 1)
- fun_l10_n831(x)
- else
- fun_l10_n770(x)
- end
-end
-
-def fun_l9_n308(x)
- if (x < 1)
- fun_l10_n467(x)
- else
- fun_l10_n715(x)
- end
-end
-
-def fun_l9_n309(x)
- if (x < 1)
- fun_l10_n676(x)
- else
- fun_l10_n885(x)
- end
-end
-
-def fun_l9_n310(x)
- if (x < 1)
- fun_l10_n382(x)
- else
- fun_l10_n687(x)
- end
-end
-
-def fun_l9_n311(x)
- if (x < 1)
- fun_l10_n489(x)
- else
- fun_l10_n810(x)
- end
-end
-
-def fun_l9_n312(x)
- if (x < 1)
- fun_l10_n922(x)
- else
- fun_l10_n81(x)
- end
-end
-
-def fun_l9_n313(x)
- if (x < 1)
- fun_l10_n788(x)
- else
- fun_l10_n519(x)
- end
-end
-
-def fun_l9_n314(x)
- if (x < 1)
- fun_l10_n830(x)
- else
- fun_l10_n486(x)
- end
-end
-
-def fun_l9_n315(x)
- if (x < 1)
- fun_l10_n848(x)
- else
- fun_l10_n250(x)
- end
-end
-
-def fun_l9_n316(x)
- if (x < 1)
- fun_l10_n933(x)
- else
- fun_l10_n268(x)
- end
-end
-
-def fun_l9_n317(x)
- if (x < 1)
- fun_l10_n659(x)
- else
- fun_l10_n91(x)
- end
-end
-
-def fun_l9_n318(x)
- if (x < 1)
- fun_l10_n417(x)
- else
- fun_l10_n99(x)
- end
-end
-
-def fun_l9_n319(x)
- if (x < 1)
- fun_l10_n781(x)
- else
- fun_l10_n770(x)
- end
-end
-
-def fun_l9_n320(x)
- if (x < 1)
- fun_l10_n820(x)
- else
- fun_l10_n836(x)
- end
-end
-
-def fun_l9_n321(x)
- if (x < 1)
- fun_l10_n865(x)
- else
- fun_l10_n232(x)
- end
-end
-
-def fun_l9_n322(x)
- if (x < 1)
- fun_l10_n793(x)
- else
- fun_l10_n856(x)
- end
-end
-
-def fun_l9_n323(x)
- if (x < 1)
- fun_l10_n91(x)
- else
- fun_l10_n356(x)
- end
-end
-
-def fun_l9_n324(x)
- if (x < 1)
- fun_l10_n262(x)
- else
- fun_l10_n776(x)
- end
-end
-
-def fun_l9_n325(x)
- if (x < 1)
- fun_l10_n733(x)
- else
- fun_l10_n866(x)
- end
-end
-
-def fun_l9_n326(x)
- if (x < 1)
- fun_l10_n798(x)
- else
- fun_l10_n703(x)
- end
-end
-
-def fun_l9_n327(x)
- if (x < 1)
- fun_l10_n478(x)
- else
- fun_l10_n181(x)
- end
-end
-
-def fun_l9_n328(x)
- if (x < 1)
- fun_l10_n66(x)
- else
- fun_l10_n736(x)
- end
-end
-
-def fun_l9_n329(x)
- if (x < 1)
- fun_l10_n388(x)
- else
- fun_l10_n122(x)
- end
-end
-
-def fun_l9_n330(x)
- if (x < 1)
- fun_l10_n382(x)
- else
- fun_l10_n85(x)
- end
-end
-
-def fun_l9_n331(x)
- if (x < 1)
- fun_l10_n987(x)
- else
- fun_l10_n769(x)
- end
-end
-
-def fun_l9_n332(x)
- if (x < 1)
- fun_l10_n644(x)
- else
- fun_l10_n230(x)
- end
-end
-
-def fun_l9_n333(x)
- if (x < 1)
- fun_l10_n604(x)
- else
- fun_l10_n157(x)
- end
-end
-
-def fun_l9_n334(x)
- if (x < 1)
- fun_l10_n50(x)
- else
- fun_l10_n417(x)
- end
-end
-
-def fun_l9_n335(x)
- if (x < 1)
- fun_l10_n37(x)
- else
- fun_l10_n564(x)
- end
-end
-
-def fun_l9_n336(x)
- if (x < 1)
- fun_l10_n265(x)
- else
- fun_l10_n330(x)
- end
-end
-
-def fun_l9_n337(x)
- if (x < 1)
- fun_l10_n816(x)
- else
- fun_l10_n723(x)
- end
-end
-
-def fun_l9_n338(x)
- if (x < 1)
- fun_l10_n583(x)
- else
- fun_l10_n193(x)
- end
-end
-
-def fun_l9_n339(x)
- if (x < 1)
- fun_l10_n552(x)
- else
- fun_l10_n710(x)
- end
-end
-
-def fun_l9_n340(x)
- if (x < 1)
- fun_l10_n594(x)
- else
- fun_l10_n323(x)
- end
-end
-
-def fun_l9_n341(x)
- if (x < 1)
- fun_l10_n727(x)
- else
- fun_l10_n305(x)
- end
-end
-
-def fun_l9_n342(x)
- if (x < 1)
- fun_l10_n621(x)
- else
- fun_l10_n917(x)
- end
-end
-
-def fun_l9_n343(x)
- if (x < 1)
- fun_l10_n634(x)
- else
- fun_l10_n36(x)
- end
-end
-
-def fun_l9_n344(x)
- if (x < 1)
- fun_l10_n792(x)
- else
- fun_l10_n438(x)
- end
-end
-
-def fun_l9_n345(x)
- if (x < 1)
- fun_l10_n399(x)
- else
- fun_l10_n577(x)
- end
-end
-
-def fun_l9_n346(x)
- if (x < 1)
- fun_l10_n110(x)
- else
- fun_l10_n120(x)
- end
-end
-
-def fun_l9_n347(x)
- if (x < 1)
- fun_l10_n521(x)
- else
- fun_l10_n111(x)
- end
-end
-
-def fun_l9_n348(x)
- if (x < 1)
- fun_l10_n134(x)
- else
- fun_l10_n49(x)
- end
-end
-
-def fun_l9_n349(x)
- if (x < 1)
- fun_l10_n353(x)
- else
- fun_l10_n156(x)
- end
-end
-
-def fun_l9_n350(x)
- if (x < 1)
- fun_l10_n532(x)
- else
- fun_l10_n796(x)
- end
-end
-
-def fun_l9_n351(x)
- if (x < 1)
- fun_l10_n896(x)
- else
- fun_l10_n176(x)
- end
-end
-
-def fun_l9_n352(x)
- if (x < 1)
- fun_l10_n857(x)
- else
- fun_l10_n798(x)
- end
-end
-
-def fun_l9_n353(x)
- if (x < 1)
- fun_l10_n676(x)
- else
- fun_l10_n870(x)
- end
-end
-
-def fun_l9_n354(x)
- if (x < 1)
- fun_l10_n806(x)
- else
- fun_l10_n951(x)
- end
-end
-
-def fun_l9_n355(x)
- if (x < 1)
- fun_l10_n841(x)
- else
- fun_l10_n918(x)
- end
-end
-
-def fun_l9_n356(x)
- if (x < 1)
- fun_l10_n226(x)
- else
- fun_l10_n514(x)
- end
-end
-
-def fun_l9_n357(x)
- if (x < 1)
- fun_l10_n289(x)
- else
- fun_l10_n911(x)
- end
-end
-
-def fun_l9_n358(x)
- if (x < 1)
- fun_l10_n697(x)
- else
- fun_l10_n138(x)
- end
-end
-
-def fun_l9_n359(x)
- if (x < 1)
- fun_l10_n432(x)
- else
- fun_l10_n88(x)
- end
-end
-
-def fun_l9_n360(x)
- if (x < 1)
- fun_l10_n351(x)
- else
- fun_l10_n968(x)
- end
-end
-
-def fun_l9_n361(x)
- if (x < 1)
- fun_l10_n782(x)
- else
- fun_l10_n506(x)
- end
-end
-
-def fun_l9_n362(x)
- if (x < 1)
- fun_l10_n875(x)
- else
- fun_l10_n459(x)
- end
-end
-
-def fun_l9_n363(x)
- if (x < 1)
- fun_l10_n2(x)
- else
- fun_l10_n468(x)
- end
-end
-
-def fun_l9_n364(x)
- if (x < 1)
- fun_l10_n151(x)
- else
- fun_l10_n538(x)
- end
-end
-
-def fun_l9_n365(x)
- if (x < 1)
- fun_l10_n203(x)
- else
- fun_l10_n890(x)
- end
-end
-
-def fun_l9_n366(x)
- if (x < 1)
- fun_l10_n612(x)
- else
- fun_l10_n483(x)
- end
-end
-
-def fun_l9_n367(x)
- if (x < 1)
- fun_l10_n465(x)
- else
- fun_l10_n724(x)
- end
-end
-
-def fun_l9_n368(x)
- if (x < 1)
- fun_l10_n745(x)
- else
- fun_l10_n92(x)
- end
-end
-
-def fun_l9_n369(x)
- if (x < 1)
- fun_l10_n312(x)
- else
- fun_l10_n754(x)
- end
-end
-
-def fun_l9_n370(x)
- if (x < 1)
- fun_l10_n432(x)
- else
- fun_l10_n234(x)
- end
-end
-
-def fun_l9_n371(x)
- if (x < 1)
- fun_l10_n629(x)
- else
- fun_l10_n751(x)
- end
-end
-
-def fun_l9_n372(x)
- if (x < 1)
- fun_l10_n142(x)
- else
- fun_l10_n381(x)
- end
-end
-
-def fun_l9_n373(x)
- if (x < 1)
- fun_l10_n490(x)
- else
- fun_l10_n405(x)
- end
-end
-
-def fun_l9_n374(x)
- if (x < 1)
- fun_l10_n197(x)
- else
- fun_l10_n574(x)
- end
-end
-
-def fun_l9_n375(x)
- if (x < 1)
- fun_l10_n808(x)
- else
- fun_l10_n753(x)
- end
-end
-
-def fun_l9_n376(x)
- if (x < 1)
- fun_l10_n195(x)
- else
- fun_l10_n186(x)
- end
-end
-
-def fun_l9_n377(x)
- if (x < 1)
- fun_l10_n172(x)
- else
- fun_l10_n233(x)
- end
-end
-
-def fun_l9_n378(x)
- if (x < 1)
- fun_l10_n723(x)
- else
- fun_l10_n919(x)
- end
-end
-
-def fun_l9_n379(x)
- if (x < 1)
- fun_l10_n937(x)
- else
- fun_l10_n149(x)
- end
-end
-
-def fun_l9_n380(x)
- if (x < 1)
- fun_l10_n676(x)
- else
- fun_l10_n502(x)
- end
-end
-
-def fun_l9_n381(x)
- if (x < 1)
- fun_l10_n756(x)
- else
- fun_l10_n346(x)
- end
-end
-
-def fun_l9_n382(x)
- if (x < 1)
- fun_l10_n477(x)
- else
- fun_l10_n179(x)
- end
-end
-
-def fun_l9_n383(x)
- if (x < 1)
- fun_l10_n729(x)
- else
- fun_l10_n862(x)
- end
-end
-
-def fun_l9_n384(x)
- if (x < 1)
- fun_l10_n406(x)
- else
- fun_l10_n145(x)
- end
-end
-
-def fun_l9_n385(x)
- if (x < 1)
- fun_l10_n239(x)
- else
- fun_l10_n169(x)
- end
-end
-
-def fun_l9_n386(x)
- if (x < 1)
- fun_l10_n596(x)
- else
- fun_l10_n971(x)
- end
-end
-
-def fun_l9_n387(x)
- if (x < 1)
- fun_l10_n466(x)
- else
- fun_l10_n488(x)
- end
-end
-
-def fun_l9_n388(x)
- if (x < 1)
- fun_l10_n711(x)
- else
- fun_l10_n553(x)
- end
-end
-
-def fun_l9_n389(x)
- if (x < 1)
- fun_l10_n776(x)
- else
- fun_l10_n227(x)
- end
-end
-
-def fun_l9_n390(x)
- if (x < 1)
- fun_l10_n872(x)
- else
- fun_l10_n901(x)
- end
-end
-
-def fun_l9_n391(x)
- if (x < 1)
- fun_l10_n579(x)
- else
- fun_l10_n906(x)
- end
-end
-
-def fun_l9_n392(x)
- if (x < 1)
- fun_l10_n734(x)
- else
- fun_l10_n195(x)
- end
-end
-
-def fun_l9_n393(x)
- if (x < 1)
- fun_l10_n691(x)
- else
- fun_l10_n68(x)
- end
-end
-
-def fun_l9_n394(x)
- if (x < 1)
- fun_l10_n446(x)
- else
- fun_l10_n838(x)
- end
-end
-
-def fun_l9_n395(x)
- if (x < 1)
- fun_l10_n708(x)
- else
- fun_l10_n319(x)
- end
-end
-
-def fun_l9_n396(x)
- if (x < 1)
- fun_l10_n414(x)
- else
- fun_l10_n152(x)
- end
-end
-
-def fun_l9_n397(x)
- if (x < 1)
- fun_l10_n637(x)
- else
- fun_l10_n662(x)
- end
-end
-
-def fun_l9_n398(x)
- if (x < 1)
- fun_l10_n990(x)
- else
- fun_l10_n547(x)
- end
-end
-
-def fun_l9_n399(x)
- if (x < 1)
- fun_l10_n43(x)
- else
- fun_l10_n845(x)
- end
-end
-
-def fun_l9_n400(x)
- if (x < 1)
- fun_l10_n843(x)
- else
- fun_l10_n876(x)
- end
-end
-
-def fun_l9_n401(x)
- if (x < 1)
- fun_l10_n925(x)
- else
- fun_l10_n221(x)
- end
-end
-
-def fun_l9_n402(x)
- if (x < 1)
- fun_l10_n420(x)
- else
- fun_l10_n267(x)
- end
-end
-
-def fun_l9_n403(x)
- if (x < 1)
- fun_l10_n78(x)
- else
- fun_l10_n316(x)
- end
-end
-
-def fun_l9_n404(x)
- if (x < 1)
- fun_l10_n291(x)
- else
- fun_l10_n614(x)
- end
-end
-
-def fun_l9_n405(x)
- if (x < 1)
- fun_l10_n956(x)
- else
- fun_l10_n550(x)
- end
-end
-
-def fun_l9_n406(x)
- if (x < 1)
- fun_l10_n232(x)
- else
- fun_l10_n53(x)
- end
-end
-
-def fun_l9_n407(x)
- if (x < 1)
- fun_l10_n171(x)
- else
- fun_l10_n51(x)
- end
-end
-
-def fun_l9_n408(x)
- if (x < 1)
- fun_l10_n401(x)
- else
- fun_l10_n932(x)
- end
-end
-
-def fun_l9_n409(x)
- if (x < 1)
- fun_l10_n863(x)
- else
- fun_l10_n951(x)
- end
-end
-
-def fun_l9_n410(x)
- if (x < 1)
- fun_l10_n64(x)
- else
- fun_l10_n721(x)
- end
-end
-
-def fun_l9_n411(x)
- if (x < 1)
- fun_l10_n539(x)
- else
- fun_l10_n951(x)
- end
-end
-
-def fun_l9_n412(x)
- if (x < 1)
- fun_l10_n660(x)
- else
- fun_l10_n852(x)
- end
-end
-
-def fun_l9_n413(x)
- if (x < 1)
- fun_l10_n777(x)
- else
- fun_l10_n366(x)
- end
-end
-
-def fun_l9_n414(x)
- if (x < 1)
- fun_l10_n695(x)
- else
- fun_l10_n538(x)
- end
-end
-
-def fun_l9_n415(x)
- if (x < 1)
- fun_l10_n208(x)
- else
- fun_l10_n892(x)
- end
-end
-
-def fun_l9_n416(x)
- if (x < 1)
- fun_l10_n632(x)
- else
- fun_l10_n463(x)
- end
-end
-
-def fun_l9_n417(x)
- if (x < 1)
- fun_l10_n238(x)
- else
- fun_l10_n55(x)
- end
-end
-
-def fun_l9_n418(x)
- if (x < 1)
- fun_l10_n276(x)
- else
- fun_l10_n526(x)
- end
-end
-
-def fun_l9_n419(x)
- if (x < 1)
- fun_l10_n625(x)
- else
- fun_l10_n806(x)
- end
-end
-
-def fun_l9_n420(x)
- if (x < 1)
- fun_l10_n899(x)
- else
- fun_l10_n594(x)
- end
-end
-
-def fun_l9_n421(x)
- if (x < 1)
- fun_l10_n725(x)
- else
- fun_l10_n461(x)
- end
-end
-
-def fun_l9_n422(x)
- if (x < 1)
- fun_l10_n187(x)
- else
- fun_l10_n953(x)
- end
-end
-
-def fun_l9_n423(x)
- if (x < 1)
- fun_l10_n698(x)
- else
- fun_l10_n751(x)
- end
-end
-
-def fun_l9_n424(x)
- if (x < 1)
- fun_l10_n115(x)
- else
- fun_l10_n321(x)
- end
-end
-
-def fun_l9_n425(x)
- if (x < 1)
- fun_l10_n775(x)
- else
- fun_l10_n100(x)
- end
-end
-
-def fun_l9_n426(x)
- if (x < 1)
- fun_l10_n177(x)
- else
- fun_l10_n565(x)
- end
-end
-
-def fun_l9_n427(x)
- if (x < 1)
- fun_l10_n568(x)
- else
- fun_l10_n234(x)
- end
-end
-
-def fun_l9_n428(x)
- if (x < 1)
- fun_l10_n787(x)
- else
- fun_l10_n815(x)
- end
-end
-
-def fun_l9_n429(x)
- if (x < 1)
- fun_l10_n580(x)
- else
- fun_l10_n990(x)
- end
-end
-
-def fun_l9_n430(x)
- if (x < 1)
- fun_l10_n680(x)
- else
- fun_l10_n696(x)
- end
-end
-
-def fun_l9_n431(x)
- if (x < 1)
- fun_l10_n650(x)
- else
- fun_l10_n776(x)
- end
-end
-
-def fun_l9_n432(x)
- if (x < 1)
- fun_l10_n377(x)
- else
- fun_l10_n232(x)
- end
-end
-
-def fun_l9_n433(x)
- if (x < 1)
- fun_l10_n621(x)
- else
- fun_l10_n948(x)
- end
-end
-
-def fun_l9_n434(x)
- if (x < 1)
- fun_l10_n126(x)
- else
- fun_l10_n220(x)
- end
-end
-
-def fun_l9_n435(x)
- if (x < 1)
- fun_l10_n395(x)
- else
- fun_l10_n732(x)
- end
-end
-
-def fun_l9_n436(x)
- if (x < 1)
- fun_l10_n194(x)
- else
- fun_l10_n159(x)
- end
-end
-
-def fun_l9_n437(x)
- if (x < 1)
- fun_l10_n123(x)
- else
- fun_l10_n40(x)
- end
-end
-
-def fun_l9_n438(x)
- if (x < 1)
- fun_l10_n241(x)
- else
- fun_l10_n861(x)
- end
-end
-
-def fun_l9_n439(x)
- if (x < 1)
- fun_l10_n333(x)
- else
- fun_l10_n950(x)
- end
-end
-
-def fun_l9_n440(x)
- if (x < 1)
- fun_l10_n116(x)
- else
- fun_l10_n832(x)
- end
-end
-
-def fun_l9_n441(x)
- if (x < 1)
- fun_l10_n598(x)
- else
- fun_l10_n68(x)
- end
-end
-
-def fun_l9_n442(x)
- if (x < 1)
- fun_l10_n234(x)
- else
- fun_l10_n277(x)
- end
-end
-
-def fun_l9_n443(x)
- if (x < 1)
- fun_l10_n943(x)
- else
- fun_l10_n895(x)
- end
-end
-
-def fun_l9_n444(x)
- if (x < 1)
- fun_l10_n490(x)
- else
- fun_l10_n512(x)
- end
-end
-
-def fun_l9_n445(x)
- if (x < 1)
- fun_l10_n54(x)
- else
- fun_l10_n74(x)
- end
-end
-
-def fun_l9_n446(x)
- if (x < 1)
- fun_l10_n214(x)
- else
- fun_l10_n858(x)
- end
-end
-
-def fun_l9_n447(x)
- if (x < 1)
- fun_l10_n274(x)
- else
- fun_l10_n255(x)
- end
-end
-
-def fun_l9_n448(x)
- if (x < 1)
- fun_l10_n307(x)
- else
- fun_l10_n197(x)
- end
-end
-
-def fun_l9_n449(x)
- if (x < 1)
- fun_l10_n152(x)
- else
- fun_l10_n543(x)
- end
-end
-
-def fun_l9_n450(x)
- if (x < 1)
- fun_l10_n773(x)
- else
- fun_l10_n582(x)
- end
-end
-
-def fun_l9_n451(x)
- if (x < 1)
- fun_l10_n757(x)
- else
- fun_l10_n298(x)
- end
-end
-
-def fun_l9_n452(x)
- if (x < 1)
- fun_l10_n648(x)
- else
- fun_l10_n826(x)
- end
-end
-
-def fun_l9_n453(x)
- if (x < 1)
- fun_l10_n209(x)
- else
- fun_l10_n767(x)
- end
-end
-
-def fun_l9_n454(x)
- if (x < 1)
- fun_l10_n448(x)
- else
- fun_l10_n374(x)
- end
-end
-
-def fun_l9_n455(x)
- if (x < 1)
- fun_l10_n975(x)
- else
- fun_l10_n45(x)
- end
-end
-
-def fun_l9_n456(x)
- if (x < 1)
- fun_l10_n938(x)
- else
- fun_l10_n354(x)
- end
-end
-
-def fun_l9_n457(x)
- if (x < 1)
- fun_l10_n723(x)
- else
- fun_l10_n511(x)
- end
-end
-
-def fun_l9_n458(x)
- if (x < 1)
- fun_l10_n864(x)
- else
- fun_l10_n688(x)
- end
-end
-
-def fun_l9_n459(x)
- if (x < 1)
- fun_l10_n283(x)
- else
- fun_l10_n776(x)
- end
-end
-
-def fun_l9_n460(x)
- if (x < 1)
- fun_l10_n167(x)
- else
- fun_l10_n639(x)
- end
-end
-
-def fun_l9_n461(x)
- if (x < 1)
- fun_l10_n493(x)
- else
- fun_l10_n538(x)
- end
-end
-
-def fun_l9_n462(x)
- if (x < 1)
- fun_l10_n392(x)
- else
- fun_l10_n434(x)
- end
-end
-
-def fun_l9_n463(x)
- if (x < 1)
- fun_l10_n958(x)
- else
- fun_l10_n305(x)
- end
-end
-
-def fun_l9_n464(x)
- if (x < 1)
- fun_l10_n516(x)
- else
- fun_l10_n375(x)
- end
-end
-
-def fun_l9_n465(x)
- if (x < 1)
- fun_l10_n371(x)
- else
- fun_l10_n596(x)
- end
-end
-
-def fun_l9_n466(x)
- if (x < 1)
- fun_l10_n435(x)
- else
- fun_l10_n176(x)
- end
-end
-
-def fun_l9_n467(x)
- if (x < 1)
- fun_l10_n391(x)
- else
- fun_l10_n83(x)
- end
-end
-
-def fun_l9_n468(x)
- if (x < 1)
- fun_l10_n751(x)
- else
- fun_l10_n632(x)
- end
-end
-
-def fun_l9_n469(x)
- if (x < 1)
- fun_l10_n14(x)
- else
- fun_l10_n530(x)
- end
-end
-
-def fun_l9_n470(x)
- if (x < 1)
- fun_l10_n663(x)
- else
- fun_l10_n844(x)
- end
-end
-
-def fun_l9_n471(x)
- if (x < 1)
- fun_l10_n82(x)
- else
- fun_l10_n493(x)
- end
-end
-
-def fun_l9_n472(x)
- if (x < 1)
- fun_l10_n614(x)
- else
- fun_l10_n277(x)
- end
-end
-
-def fun_l9_n473(x)
- if (x < 1)
- fun_l10_n492(x)
- else
- fun_l10_n492(x)
- end
-end
-
-def fun_l9_n474(x)
- if (x < 1)
- fun_l10_n440(x)
- else
- fun_l10_n665(x)
- end
-end
-
-def fun_l9_n475(x)
- if (x < 1)
- fun_l10_n284(x)
- else
- fun_l10_n513(x)
- end
-end
-
-def fun_l9_n476(x)
- if (x < 1)
- fun_l10_n690(x)
- else
- fun_l10_n507(x)
- end
-end
-
-def fun_l9_n477(x)
- if (x < 1)
- fun_l10_n281(x)
- else
- fun_l10_n519(x)
- end
-end
-
-def fun_l9_n478(x)
- if (x < 1)
- fun_l10_n903(x)
- else
- fun_l10_n866(x)
- end
-end
-
-def fun_l9_n479(x)
- if (x < 1)
- fun_l10_n880(x)
- else
- fun_l10_n310(x)
- end
-end
-
-def fun_l9_n480(x)
- if (x < 1)
- fun_l10_n69(x)
- else
- fun_l10_n227(x)
- end
-end
-
-def fun_l9_n481(x)
- if (x < 1)
- fun_l10_n316(x)
- else
- fun_l10_n692(x)
- end
-end
-
-def fun_l9_n482(x)
- if (x < 1)
- fun_l10_n875(x)
- else
- fun_l10_n384(x)
- end
-end
-
-def fun_l9_n483(x)
- if (x < 1)
- fun_l10_n496(x)
- else
- fun_l10_n81(x)
- end
-end
-
-def fun_l9_n484(x)
- if (x < 1)
- fun_l10_n336(x)
- else
- fun_l10_n193(x)
- end
-end
-
-def fun_l9_n485(x)
- if (x < 1)
- fun_l10_n541(x)
- else
- fun_l10_n465(x)
- end
-end
-
-def fun_l9_n486(x)
- if (x < 1)
- fun_l10_n197(x)
- else
- fun_l10_n844(x)
- end
-end
-
-def fun_l9_n487(x)
- if (x < 1)
- fun_l10_n652(x)
- else
- fun_l10_n736(x)
- end
-end
-
-def fun_l9_n488(x)
- if (x < 1)
- fun_l10_n960(x)
- else
- fun_l10_n912(x)
- end
-end
-
-def fun_l9_n489(x)
- if (x < 1)
- fun_l10_n238(x)
- else
- fun_l10_n64(x)
- end
-end
-
-def fun_l9_n490(x)
- if (x < 1)
- fun_l10_n505(x)
- else
- fun_l10_n204(x)
- end
-end
-
-def fun_l9_n491(x)
- if (x < 1)
- fun_l10_n960(x)
- else
- fun_l10_n198(x)
- end
-end
-
-def fun_l9_n492(x)
- if (x < 1)
- fun_l10_n148(x)
- else
- fun_l10_n669(x)
- end
-end
-
-def fun_l9_n493(x)
- if (x < 1)
- fun_l10_n860(x)
- else
- fun_l10_n676(x)
- end
-end
-
-def fun_l9_n494(x)
- if (x < 1)
- fun_l10_n77(x)
- else
- fun_l10_n945(x)
- end
-end
-
-def fun_l9_n495(x)
- if (x < 1)
- fun_l10_n151(x)
- else
- fun_l10_n588(x)
- end
-end
-
-def fun_l9_n496(x)
- if (x < 1)
- fun_l10_n159(x)
- else
- fun_l10_n727(x)
- end
-end
-
-def fun_l9_n497(x)
- if (x < 1)
- fun_l10_n803(x)
- else
- fun_l10_n292(x)
- end
-end
-
-def fun_l9_n498(x)
- if (x < 1)
- fun_l10_n308(x)
- else
- fun_l10_n46(x)
- end
-end
-
-def fun_l9_n499(x)
- if (x < 1)
- fun_l10_n511(x)
- else
- fun_l10_n766(x)
- end
-end
-
-def fun_l9_n500(x)
- if (x < 1)
- fun_l10_n753(x)
- else
- fun_l10_n235(x)
- end
-end
-
-def fun_l9_n501(x)
- if (x < 1)
- fun_l10_n776(x)
- else
- fun_l10_n779(x)
- end
-end
-
-def fun_l9_n502(x)
- if (x < 1)
- fun_l10_n114(x)
- else
- fun_l10_n969(x)
- end
-end
-
-def fun_l9_n503(x)
- if (x < 1)
- fun_l10_n511(x)
- else
- fun_l10_n678(x)
- end
-end
-
-def fun_l9_n504(x)
- if (x < 1)
- fun_l10_n578(x)
- else
- fun_l10_n689(x)
- end
-end
-
-def fun_l9_n505(x)
- if (x < 1)
- fun_l10_n434(x)
- else
- fun_l10_n0(x)
- end
-end
-
-def fun_l9_n506(x)
- if (x < 1)
- fun_l10_n121(x)
- else
- fun_l10_n488(x)
- end
-end
-
-def fun_l9_n507(x)
- if (x < 1)
- fun_l10_n865(x)
- else
- fun_l10_n540(x)
- end
-end
-
-def fun_l9_n508(x)
- if (x < 1)
- fun_l10_n809(x)
- else
- fun_l10_n764(x)
- end
-end
-
-def fun_l9_n509(x)
- if (x < 1)
- fun_l10_n463(x)
- else
- fun_l10_n141(x)
- end
-end
-
-def fun_l9_n510(x)
- if (x < 1)
- fun_l10_n442(x)
- else
- fun_l10_n646(x)
- end
-end
-
-def fun_l9_n511(x)
- if (x < 1)
- fun_l10_n971(x)
- else
- fun_l10_n57(x)
- end
-end
-
-def fun_l9_n512(x)
- if (x < 1)
- fun_l10_n892(x)
- else
- fun_l10_n612(x)
- end
-end
-
-def fun_l9_n513(x)
- if (x < 1)
- fun_l10_n864(x)
- else
- fun_l10_n438(x)
- end
-end
-
-def fun_l9_n514(x)
- if (x < 1)
- fun_l10_n504(x)
- else
- fun_l10_n100(x)
- end
-end
-
-def fun_l9_n515(x)
- if (x < 1)
- fun_l10_n881(x)
- else
- fun_l10_n621(x)
- end
-end
-
-def fun_l9_n516(x)
- if (x < 1)
- fun_l10_n170(x)
- else
- fun_l10_n435(x)
- end
-end
-
-def fun_l9_n517(x)
- if (x < 1)
- fun_l10_n712(x)
- else
- fun_l10_n537(x)
- end
-end
-
-def fun_l9_n518(x)
- if (x < 1)
- fun_l10_n369(x)
- else
- fun_l10_n832(x)
- end
-end
-
-def fun_l9_n519(x)
- if (x < 1)
- fun_l10_n654(x)
- else
- fun_l10_n364(x)
- end
-end
-
-def fun_l9_n520(x)
- if (x < 1)
- fun_l10_n410(x)
- else
- fun_l10_n10(x)
- end
-end
-
-def fun_l9_n521(x)
- if (x < 1)
- fun_l10_n814(x)
- else
- fun_l10_n569(x)
- end
-end
-
-def fun_l9_n522(x)
- if (x < 1)
- fun_l10_n787(x)
- else
- fun_l10_n333(x)
- end
-end
-
-def fun_l9_n523(x)
- if (x < 1)
- fun_l10_n336(x)
- else
- fun_l10_n720(x)
- end
-end
-
-def fun_l9_n524(x)
- if (x < 1)
- fun_l10_n34(x)
- else
- fun_l10_n643(x)
- end
-end
-
-def fun_l9_n525(x)
- if (x < 1)
- fun_l10_n147(x)
- else
- fun_l10_n62(x)
- end
-end
-
-def fun_l9_n526(x)
- if (x < 1)
- fun_l10_n431(x)
- else
- fun_l10_n452(x)
- end
-end
-
-def fun_l9_n527(x)
- if (x < 1)
- fun_l10_n374(x)
- else
- fun_l10_n831(x)
- end
-end
-
-def fun_l9_n528(x)
- if (x < 1)
- fun_l10_n604(x)
- else
- fun_l10_n274(x)
- end
-end
-
-def fun_l9_n529(x)
- if (x < 1)
- fun_l10_n470(x)
- else
- fun_l10_n764(x)
- end
-end
-
-def fun_l9_n530(x)
- if (x < 1)
- fun_l10_n552(x)
- else
- fun_l10_n646(x)
- end
-end
-
-def fun_l9_n531(x)
- if (x < 1)
- fun_l10_n427(x)
- else
- fun_l10_n464(x)
- end
-end
-
-def fun_l9_n532(x)
- if (x < 1)
- fun_l10_n553(x)
- else
- fun_l10_n605(x)
- end
-end
-
-def fun_l9_n533(x)
- if (x < 1)
- fun_l10_n59(x)
- else
- fun_l10_n794(x)
- end
-end
-
-def fun_l9_n534(x)
- if (x < 1)
- fun_l10_n168(x)
- else
- fun_l10_n740(x)
- end
-end
-
-def fun_l9_n535(x)
- if (x < 1)
- fun_l10_n227(x)
- else
- fun_l10_n651(x)
- end
-end
-
-def fun_l9_n536(x)
- if (x < 1)
- fun_l10_n904(x)
- else
- fun_l10_n552(x)
- end
-end
-
-def fun_l9_n537(x)
- if (x < 1)
- fun_l10_n389(x)
- else
- fun_l10_n397(x)
- end
-end
-
-def fun_l9_n538(x)
- if (x < 1)
- fun_l10_n622(x)
- else
- fun_l10_n100(x)
- end
-end
-
-def fun_l9_n539(x)
- if (x < 1)
- fun_l10_n117(x)
- else
- fun_l10_n715(x)
- end
-end
-
-def fun_l9_n540(x)
- if (x < 1)
- fun_l10_n959(x)
- else
- fun_l10_n391(x)
- end
-end
-
-def fun_l9_n541(x)
- if (x < 1)
- fun_l10_n733(x)
- else
- fun_l10_n393(x)
- end
-end
-
-def fun_l9_n542(x)
- if (x < 1)
- fun_l10_n171(x)
- else
- fun_l10_n299(x)
- end
-end
-
-def fun_l9_n543(x)
- if (x < 1)
- fun_l10_n655(x)
- else
- fun_l10_n285(x)
- end
-end
-
-def fun_l9_n544(x)
- if (x < 1)
- fun_l10_n819(x)
- else
- fun_l10_n817(x)
- end
-end
-
-def fun_l9_n545(x)
- if (x < 1)
- fun_l10_n938(x)
- else
- fun_l10_n54(x)
- end
-end
-
-def fun_l9_n546(x)
- if (x < 1)
- fun_l10_n712(x)
- else
- fun_l10_n6(x)
- end
-end
-
-def fun_l9_n547(x)
- if (x < 1)
- fun_l10_n203(x)
- else
- fun_l10_n626(x)
- end
-end
-
-def fun_l9_n548(x)
- if (x < 1)
- fun_l10_n643(x)
- else
- fun_l10_n761(x)
- end
-end
-
-def fun_l9_n549(x)
- if (x < 1)
- fun_l10_n450(x)
- else
- fun_l10_n673(x)
- end
-end
-
-def fun_l9_n550(x)
- if (x < 1)
- fun_l10_n496(x)
- else
- fun_l10_n568(x)
- end
-end
-
-def fun_l9_n551(x)
- if (x < 1)
- fun_l10_n30(x)
- else
- fun_l10_n518(x)
- end
-end
-
-def fun_l9_n552(x)
- if (x < 1)
- fun_l10_n398(x)
- else
- fun_l10_n858(x)
- end
-end
-
-def fun_l9_n553(x)
- if (x < 1)
- fun_l10_n253(x)
- else
- fun_l10_n831(x)
- end
-end
-
-def fun_l9_n554(x)
- if (x < 1)
- fun_l10_n493(x)
- else
- fun_l10_n750(x)
- end
-end
-
-def fun_l9_n555(x)
- if (x < 1)
- fun_l10_n111(x)
- else
- fun_l10_n279(x)
- end
-end
-
-def fun_l9_n556(x)
- if (x < 1)
- fun_l10_n927(x)
- else
- fun_l10_n793(x)
- end
-end
-
-def fun_l9_n557(x)
- if (x < 1)
- fun_l10_n530(x)
- else
- fun_l10_n182(x)
- end
-end
-
-def fun_l9_n558(x)
- if (x < 1)
- fun_l10_n434(x)
- else
- fun_l10_n453(x)
- end
-end
-
-def fun_l9_n559(x)
- if (x < 1)
- fun_l10_n480(x)
- else
- fun_l10_n590(x)
- end
-end
-
-def fun_l9_n560(x)
- if (x < 1)
- fun_l10_n906(x)
- else
- fun_l10_n280(x)
- end
-end
-
-def fun_l9_n561(x)
- if (x < 1)
- fun_l10_n107(x)
- else
- fun_l10_n716(x)
- end
-end
-
-def fun_l9_n562(x)
- if (x < 1)
- fun_l10_n15(x)
- else
- fun_l10_n671(x)
- end
-end
-
-def fun_l9_n563(x)
- if (x < 1)
- fun_l10_n544(x)
- else
- fun_l10_n571(x)
- end
-end
-
-def fun_l9_n564(x)
- if (x < 1)
- fun_l10_n482(x)
- else
- fun_l10_n885(x)
- end
-end
-
-def fun_l9_n565(x)
- if (x < 1)
- fun_l10_n465(x)
- else
- fun_l10_n916(x)
- end
-end
-
-def fun_l9_n566(x)
- if (x < 1)
- fun_l10_n413(x)
- else
- fun_l10_n684(x)
- end
-end
-
-def fun_l9_n567(x)
- if (x < 1)
- fun_l10_n413(x)
- else
- fun_l10_n577(x)
- end
-end
-
-def fun_l9_n568(x)
- if (x < 1)
- fun_l10_n604(x)
- else
- fun_l10_n899(x)
- end
-end
-
-def fun_l9_n569(x)
- if (x < 1)
- fun_l10_n138(x)
- else
- fun_l10_n164(x)
- end
-end
-
-def fun_l9_n570(x)
- if (x < 1)
- fun_l10_n993(x)
- else
- fun_l10_n94(x)
- end
-end
-
-def fun_l9_n571(x)
- if (x < 1)
- fun_l10_n602(x)
- else
- fun_l10_n989(x)
- end
-end
-
-def fun_l9_n572(x)
- if (x < 1)
- fun_l10_n700(x)
- else
- fun_l10_n308(x)
- end
-end
-
-def fun_l9_n573(x)
- if (x < 1)
- fun_l10_n773(x)
- else
- fun_l10_n945(x)
- end
-end
-
-def fun_l9_n574(x)
- if (x < 1)
- fun_l10_n148(x)
- else
- fun_l10_n608(x)
- end
-end
-
-def fun_l9_n575(x)
- if (x < 1)
- fun_l10_n439(x)
- else
- fun_l10_n908(x)
- end
-end
-
-def fun_l9_n576(x)
- if (x < 1)
- fun_l10_n174(x)
- else
- fun_l10_n872(x)
- end
-end
-
-def fun_l9_n577(x)
- if (x < 1)
- fun_l10_n291(x)
- else
- fun_l10_n265(x)
- end
-end
-
-def fun_l9_n578(x)
- if (x < 1)
- fun_l10_n425(x)
- else
- fun_l10_n928(x)
- end
-end
-
-def fun_l9_n579(x)
- if (x < 1)
- fun_l10_n674(x)
- else
- fun_l10_n666(x)
- end
-end
-
-def fun_l9_n580(x)
- if (x < 1)
- fun_l10_n784(x)
- else
- fun_l10_n147(x)
- end
-end
-
-def fun_l9_n581(x)
- if (x < 1)
- fun_l10_n550(x)
- else
- fun_l10_n119(x)
- end
-end
-
-def fun_l9_n582(x)
- if (x < 1)
- fun_l10_n953(x)
- else
- fun_l10_n269(x)
- end
-end
-
-def fun_l9_n583(x)
- if (x < 1)
- fun_l10_n575(x)
- else
- fun_l10_n79(x)
- end
-end
-
-def fun_l9_n584(x)
- if (x < 1)
- fun_l10_n498(x)
- else
- fun_l10_n1(x)
- end
-end
-
-def fun_l9_n585(x)
- if (x < 1)
- fun_l10_n728(x)
- else
- fun_l10_n92(x)
- end
-end
-
-def fun_l9_n586(x)
- if (x < 1)
- fun_l10_n344(x)
- else
- fun_l10_n753(x)
- end
-end
-
-def fun_l9_n587(x)
- if (x < 1)
- fun_l10_n911(x)
- else
- fun_l10_n327(x)
- end
-end
-
-def fun_l9_n588(x)
- if (x < 1)
- fun_l10_n422(x)
- else
- fun_l10_n224(x)
- end
-end
-
-def fun_l9_n589(x)
- if (x < 1)
- fun_l10_n311(x)
- else
- fun_l10_n457(x)
- end
-end
-
-def fun_l9_n590(x)
- if (x < 1)
- fun_l10_n705(x)
- else
- fun_l10_n136(x)
- end
-end
-
-def fun_l9_n591(x)
- if (x < 1)
- fun_l10_n338(x)
- else
- fun_l10_n14(x)
- end
-end
-
-def fun_l9_n592(x)
- if (x < 1)
- fun_l10_n144(x)
- else
- fun_l10_n671(x)
- end
-end
-
-def fun_l9_n593(x)
- if (x < 1)
- fun_l10_n402(x)
- else
- fun_l10_n218(x)
- end
-end
-
-def fun_l9_n594(x)
- if (x < 1)
- fun_l10_n854(x)
- else
- fun_l10_n198(x)
- end
-end
-
-def fun_l9_n595(x)
- if (x < 1)
- fun_l10_n932(x)
- else
- fun_l10_n181(x)
- end
-end
-
-def fun_l9_n596(x)
- if (x < 1)
- fun_l10_n373(x)
- else
- fun_l10_n937(x)
- end
-end
-
-def fun_l9_n597(x)
- if (x < 1)
- fun_l10_n181(x)
- else
- fun_l10_n925(x)
- end
-end
-
-def fun_l9_n598(x)
- if (x < 1)
- fun_l10_n263(x)
- else
- fun_l10_n98(x)
- end
-end
-
-def fun_l9_n599(x)
- if (x < 1)
- fun_l10_n736(x)
- else
- fun_l10_n951(x)
- end
-end
-
-def fun_l9_n600(x)
- if (x < 1)
- fun_l10_n576(x)
- else
- fun_l10_n998(x)
- end
-end
-
-def fun_l9_n601(x)
- if (x < 1)
- fun_l10_n577(x)
- else
- fun_l10_n559(x)
- end
-end
-
-def fun_l9_n602(x)
- if (x < 1)
- fun_l10_n143(x)
- else
- fun_l10_n993(x)
- end
-end
-
-def fun_l9_n603(x)
- if (x < 1)
- fun_l10_n35(x)
- else
- fun_l10_n132(x)
- end
-end
-
-def fun_l9_n604(x)
- if (x < 1)
- fun_l10_n715(x)
- else
- fun_l10_n933(x)
- end
-end
-
-def fun_l9_n605(x)
- if (x < 1)
- fun_l10_n570(x)
- else
- fun_l10_n455(x)
- end
-end
-
-def fun_l9_n606(x)
- if (x < 1)
- fun_l10_n225(x)
- else
- fun_l10_n216(x)
- end
-end
-
-def fun_l9_n607(x)
- if (x < 1)
- fun_l10_n431(x)
- else
- fun_l10_n285(x)
- end
-end
-
-def fun_l9_n608(x)
- if (x < 1)
- fun_l10_n647(x)
- else
- fun_l10_n221(x)
- end
-end
-
-def fun_l9_n609(x)
- if (x < 1)
- fun_l10_n348(x)
- else
- fun_l10_n849(x)
- end
-end
-
-def fun_l9_n610(x)
- if (x < 1)
- fun_l10_n301(x)
- else
- fun_l10_n500(x)
- end
-end
-
-def fun_l9_n611(x)
- if (x < 1)
- fun_l10_n152(x)
- else
- fun_l10_n1(x)
- end
-end
-
-def fun_l9_n612(x)
- if (x < 1)
- fun_l10_n339(x)
- else
- fun_l10_n577(x)
- end
-end
-
-def fun_l9_n613(x)
- if (x < 1)
- fun_l10_n427(x)
- else
- fun_l10_n779(x)
- end
-end
-
-def fun_l9_n614(x)
- if (x < 1)
- fun_l10_n60(x)
- else
- fun_l10_n199(x)
- end
-end
-
-def fun_l9_n615(x)
- if (x < 1)
- fun_l10_n616(x)
- else
- fun_l10_n33(x)
- end
-end
-
-def fun_l9_n616(x)
- if (x < 1)
- fun_l10_n940(x)
- else
- fun_l10_n981(x)
- end
-end
-
-def fun_l9_n617(x)
- if (x < 1)
- fun_l10_n594(x)
- else
- fun_l10_n321(x)
- end
-end
-
-def fun_l9_n618(x)
- if (x < 1)
- fun_l10_n233(x)
- else
- fun_l10_n500(x)
- end
-end
-
-def fun_l9_n619(x)
- if (x < 1)
- fun_l10_n169(x)
- else
- fun_l10_n883(x)
- end
-end
-
-def fun_l9_n620(x)
- if (x < 1)
- fun_l10_n611(x)
- else
- fun_l10_n345(x)
- end
-end
-
-def fun_l9_n621(x)
- if (x < 1)
- fun_l10_n155(x)
- else
- fun_l10_n547(x)
- end
-end
-
-def fun_l9_n622(x)
- if (x < 1)
- fun_l10_n244(x)
- else
- fun_l10_n760(x)
- end
-end
-
-def fun_l9_n623(x)
- if (x < 1)
- fun_l10_n893(x)
- else
- fun_l10_n13(x)
- end
-end
-
-def fun_l9_n624(x)
- if (x < 1)
- fun_l10_n465(x)
- else
- fun_l10_n276(x)
- end
-end
-
-def fun_l9_n625(x)
- if (x < 1)
- fun_l10_n196(x)
- else
- fun_l10_n920(x)
- end
-end
-
-def fun_l9_n626(x)
- if (x < 1)
- fun_l10_n235(x)
- else
- fun_l10_n962(x)
- end
-end
-
-def fun_l9_n627(x)
- if (x < 1)
- fun_l10_n361(x)
- else
- fun_l10_n162(x)
- end
-end
-
-def fun_l9_n628(x)
- if (x < 1)
- fun_l10_n110(x)
- else
- fun_l10_n574(x)
- end
-end
-
-def fun_l9_n629(x)
- if (x < 1)
- fun_l10_n861(x)
- else
- fun_l10_n839(x)
- end
-end
-
-def fun_l9_n630(x)
- if (x < 1)
- fun_l10_n386(x)
- else
- fun_l10_n741(x)
- end
-end
-
-def fun_l9_n631(x)
- if (x < 1)
- fun_l10_n426(x)
- else
- fun_l10_n430(x)
- end
-end
-
-def fun_l9_n632(x)
- if (x < 1)
- fun_l10_n231(x)
- else
- fun_l10_n353(x)
- end
-end
-
-def fun_l9_n633(x)
- if (x < 1)
- fun_l10_n945(x)
- else
- fun_l10_n199(x)
- end
-end
-
-def fun_l9_n634(x)
- if (x < 1)
- fun_l10_n607(x)
- else
- fun_l10_n388(x)
- end
-end
-
-def fun_l9_n635(x)
- if (x < 1)
- fun_l10_n214(x)
- else
- fun_l10_n135(x)
- end
-end
-
-def fun_l9_n636(x)
- if (x < 1)
- fun_l10_n642(x)
- else
- fun_l10_n522(x)
- end
-end
-
-def fun_l9_n637(x)
- if (x < 1)
- fun_l10_n605(x)
- else
- fun_l10_n336(x)
- end
-end
-
-def fun_l9_n638(x)
- if (x < 1)
- fun_l10_n719(x)
- else
- fun_l10_n213(x)
- end
-end
-
-def fun_l9_n639(x)
- if (x < 1)
- fun_l10_n202(x)
- else
- fun_l10_n767(x)
- end
-end
-
-def fun_l9_n640(x)
- if (x < 1)
- fun_l10_n242(x)
- else
- fun_l10_n596(x)
- end
-end
-
-def fun_l9_n641(x)
- if (x < 1)
- fun_l10_n851(x)
- else
- fun_l10_n216(x)
- end
-end
-
-def fun_l9_n642(x)
- if (x < 1)
- fun_l10_n645(x)
- else
- fun_l10_n890(x)
- end
-end
-
-def fun_l9_n643(x)
- if (x < 1)
- fun_l10_n241(x)
- else
- fun_l10_n350(x)
- end
-end
-
-def fun_l9_n644(x)
- if (x < 1)
- fun_l10_n597(x)
- else
- fun_l10_n350(x)
- end
-end
-
-def fun_l9_n645(x)
- if (x < 1)
- fun_l10_n170(x)
- else
- fun_l10_n962(x)
- end
-end
-
-def fun_l9_n646(x)
- if (x < 1)
- fun_l10_n229(x)
- else
- fun_l10_n543(x)
- end
-end
-
-def fun_l9_n647(x)
- if (x < 1)
- fun_l10_n473(x)
- else
- fun_l10_n942(x)
- end
-end
-
-def fun_l9_n648(x)
- if (x < 1)
- fun_l10_n630(x)
- else
- fun_l10_n630(x)
- end
-end
-
-def fun_l9_n649(x)
- if (x < 1)
- fun_l10_n183(x)
- else
- fun_l10_n313(x)
- end
-end
-
-def fun_l9_n650(x)
- if (x < 1)
- fun_l10_n951(x)
- else
- fun_l10_n394(x)
- end
-end
-
-def fun_l9_n651(x)
- if (x < 1)
- fun_l10_n107(x)
- else
- fun_l10_n849(x)
- end
-end
-
-def fun_l9_n652(x)
- if (x < 1)
- fun_l10_n678(x)
- else
- fun_l10_n768(x)
- end
-end
-
-def fun_l9_n653(x)
- if (x < 1)
- fun_l10_n534(x)
- else
- fun_l10_n410(x)
- end
-end
-
-def fun_l9_n654(x)
- if (x < 1)
- fun_l10_n694(x)
- else
- fun_l10_n134(x)
- end
-end
-
-def fun_l9_n655(x)
- if (x < 1)
- fun_l10_n751(x)
- else
- fun_l10_n923(x)
- end
-end
-
-def fun_l9_n656(x)
- if (x < 1)
- fun_l10_n957(x)
- else
- fun_l10_n489(x)
- end
-end
-
-def fun_l9_n657(x)
- if (x < 1)
- fun_l10_n612(x)
- else
- fun_l10_n577(x)
- end
-end
-
-def fun_l9_n658(x)
- if (x < 1)
- fun_l10_n814(x)
- else
- fun_l10_n801(x)
- end
-end
-
-def fun_l9_n659(x)
- if (x < 1)
- fun_l10_n297(x)
- else
- fun_l10_n344(x)
- end
-end
-
-def fun_l9_n660(x)
- if (x < 1)
- fun_l10_n674(x)
- else
- fun_l10_n780(x)
- end
-end
-
-def fun_l9_n661(x)
- if (x < 1)
- fun_l10_n302(x)
- else
- fun_l10_n184(x)
- end
-end
-
-def fun_l9_n662(x)
- if (x < 1)
- fun_l10_n308(x)
- else
- fun_l10_n302(x)
- end
-end
-
-def fun_l9_n663(x)
- if (x < 1)
- fun_l10_n825(x)
- else
- fun_l10_n866(x)
- end
-end
-
-def fun_l9_n664(x)
- if (x < 1)
- fun_l10_n771(x)
- else
- fun_l10_n141(x)
- end
-end
-
-def fun_l9_n665(x)
- if (x < 1)
- fun_l10_n369(x)
- else
- fun_l10_n63(x)
- end
-end
-
-def fun_l9_n666(x)
- if (x < 1)
- fun_l10_n198(x)
- else
- fun_l10_n793(x)
- end
-end
-
-def fun_l9_n667(x)
- if (x < 1)
- fun_l10_n800(x)
- else
- fun_l10_n748(x)
- end
-end
-
-def fun_l9_n668(x)
- if (x < 1)
- fun_l10_n809(x)
- else
- fun_l10_n673(x)
- end
-end
-
-def fun_l9_n669(x)
- if (x < 1)
- fun_l10_n438(x)
- else
- fun_l10_n301(x)
- end
-end
-
-def fun_l9_n670(x)
- if (x < 1)
- fun_l10_n802(x)
- else
- fun_l10_n882(x)
- end
-end
-
-def fun_l9_n671(x)
- if (x < 1)
- fun_l10_n690(x)
- else
- fun_l10_n524(x)
- end
-end
-
-def fun_l9_n672(x)
- if (x < 1)
- fun_l10_n996(x)
- else
- fun_l10_n68(x)
- end
-end
-
-def fun_l9_n673(x)
- if (x < 1)
- fun_l10_n773(x)
- else
- fun_l10_n26(x)
- end
-end
-
-def fun_l9_n674(x)
- if (x < 1)
- fun_l10_n252(x)
- else
- fun_l10_n680(x)
- end
-end
-
-def fun_l9_n675(x)
- if (x < 1)
- fun_l10_n466(x)
- else
- fun_l10_n885(x)
- end
-end
-
-def fun_l9_n676(x)
- if (x < 1)
- fun_l10_n746(x)
- else
- fun_l10_n968(x)
- end
-end
-
-def fun_l9_n677(x)
- if (x < 1)
- fun_l10_n827(x)
- else
- fun_l10_n69(x)
- end
-end
-
-def fun_l9_n678(x)
- if (x < 1)
- fun_l10_n158(x)
- else
- fun_l10_n780(x)
- end
-end
-
-def fun_l9_n679(x)
- if (x < 1)
- fun_l10_n267(x)
- else
- fun_l10_n907(x)
- end
-end
-
-def fun_l9_n680(x)
- if (x < 1)
- fun_l10_n378(x)
- else
- fun_l10_n668(x)
- end
-end
-
-def fun_l9_n681(x)
- if (x < 1)
- fun_l10_n481(x)
- else
- fun_l10_n421(x)
- end
-end
-
-def fun_l9_n682(x)
- if (x < 1)
- fun_l10_n501(x)
- else
- fun_l10_n277(x)
- end
-end
-
-def fun_l9_n683(x)
- if (x < 1)
- fun_l10_n533(x)
- else
- fun_l10_n604(x)
- end
-end
-
-def fun_l9_n684(x)
- if (x < 1)
- fun_l10_n483(x)
- else
- fun_l10_n761(x)
- end
-end
-
-def fun_l9_n685(x)
- if (x < 1)
- fun_l10_n41(x)
- else
- fun_l10_n374(x)
- end
-end
-
-def fun_l9_n686(x)
- if (x < 1)
- fun_l10_n549(x)
- else
- fun_l10_n319(x)
- end
-end
-
-def fun_l9_n687(x)
- if (x < 1)
- fun_l10_n246(x)
- else
- fun_l10_n854(x)
- end
-end
-
-def fun_l9_n688(x)
- if (x < 1)
- fun_l10_n634(x)
- else
- fun_l10_n43(x)
- end
-end
-
-def fun_l9_n689(x)
- if (x < 1)
- fun_l10_n994(x)
- else
- fun_l10_n549(x)
- end
-end
-
-def fun_l9_n690(x)
- if (x < 1)
- fun_l10_n439(x)
- else
- fun_l10_n560(x)
- end
-end
-
-def fun_l9_n691(x)
- if (x < 1)
- fun_l10_n227(x)
- else
- fun_l10_n877(x)
- end
-end
-
-def fun_l9_n692(x)
- if (x < 1)
- fun_l10_n644(x)
- else
- fun_l10_n350(x)
- end
-end
-
-def fun_l9_n693(x)
- if (x < 1)
- fun_l10_n543(x)
- else
- fun_l10_n638(x)
- end
-end
-
-def fun_l9_n694(x)
- if (x < 1)
- fun_l10_n537(x)
- else
- fun_l10_n187(x)
- end
-end
-
-def fun_l9_n695(x)
- if (x < 1)
- fun_l10_n1(x)
- else
- fun_l10_n540(x)
- end
-end
-
-def fun_l9_n696(x)
- if (x < 1)
- fun_l10_n306(x)
- else
- fun_l10_n290(x)
- end
-end
-
-def fun_l9_n697(x)
- if (x < 1)
- fun_l10_n140(x)
- else
- fun_l10_n72(x)
- end
-end
-
-def fun_l9_n698(x)
- if (x < 1)
- fun_l10_n43(x)
- else
- fun_l10_n257(x)
- end
-end
-
-def fun_l9_n699(x)
- if (x < 1)
- fun_l10_n91(x)
- else
- fun_l10_n816(x)
- end
-end
-
-def fun_l9_n700(x)
- if (x < 1)
- fun_l10_n420(x)
- else
- fun_l10_n763(x)
- end
-end
-
-def fun_l9_n701(x)
- if (x < 1)
- fun_l10_n429(x)
- else
- fun_l10_n28(x)
- end
-end
-
-def fun_l9_n702(x)
- if (x < 1)
- fun_l10_n615(x)
- else
- fun_l10_n995(x)
- end
-end
-
-def fun_l9_n703(x)
- if (x < 1)
- fun_l10_n776(x)
- else
- fun_l10_n85(x)
- end
-end
-
-def fun_l9_n704(x)
- if (x < 1)
- fun_l10_n795(x)
- else
- fun_l10_n542(x)
- end
-end
-
-def fun_l9_n705(x)
- if (x < 1)
- fun_l10_n114(x)
- else
- fun_l10_n166(x)
- end
-end
-
-def fun_l9_n706(x)
- if (x < 1)
- fun_l10_n99(x)
- else
- fun_l10_n400(x)
- end
-end
-
-def fun_l9_n707(x)
- if (x < 1)
- fun_l10_n292(x)
- else
- fun_l10_n801(x)
- end
-end
-
-def fun_l9_n708(x)
- if (x < 1)
- fun_l10_n303(x)
- else
- fun_l10_n380(x)
- end
-end
-
-def fun_l9_n709(x)
- if (x < 1)
- fun_l10_n369(x)
- else
- fun_l10_n938(x)
- end
-end
-
-def fun_l9_n710(x)
- if (x < 1)
- fun_l10_n652(x)
- else
- fun_l10_n453(x)
- end
-end
-
-def fun_l9_n711(x)
- if (x < 1)
- fun_l10_n770(x)
- else
- fun_l10_n32(x)
- end
-end
-
-def fun_l9_n712(x)
- if (x < 1)
- fun_l10_n261(x)
- else
- fun_l10_n485(x)
- end
-end
-
-def fun_l9_n713(x)
- if (x < 1)
- fun_l10_n935(x)
- else
- fun_l10_n39(x)
- end
-end
-
-def fun_l9_n714(x)
- if (x < 1)
- fun_l10_n332(x)
- else
- fun_l10_n309(x)
- end
-end
-
-def fun_l9_n715(x)
- if (x < 1)
- fun_l10_n824(x)
- else
- fun_l10_n614(x)
- end
-end
-
-def fun_l9_n716(x)
- if (x < 1)
- fun_l10_n468(x)
- else
- fun_l10_n341(x)
- end
-end
-
-def fun_l9_n717(x)
- if (x < 1)
- fun_l10_n425(x)
- else
- fun_l10_n67(x)
- end
-end
-
-def fun_l9_n718(x)
- if (x < 1)
- fun_l10_n199(x)
- else
- fun_l10_n423(x)
- end
-end
-
-def fun_l9_n719(x)
- if (x < 1)
- fun_l10_n294(x)
- else
- fun_l10_n484(x)
- end
-end
-
-def fun_l9_n720(x)
- if (x < 1)
- fun_l10_n276(x)
- else
- fun_l10_n799(x)
- end
-end
-
-def fun_l9_n721(x)
- if (x < 1)
- fun_l10_n98(x)
- else
- fun_l10_n278(x)
- end
-end
-
-def fun_l9_n722(x)
- if (x < 1)
- fun_l10_n689(x)
- else
- fun_l10_n767(x)
- end
-end
-
-def fun_l9_n723(x)
- if (x < 1)
- fun_l10_n786(x)
- else
- fun_l10_n409(x)
- end
-end
-
-def fun_l9_n724(x)
- if (x < 1)
- fun_l10_n874(x)
- else
- fun_l10_n413(x)
- end
-end
-
-def fun_l9_n725(x)
- if (x < 1)
- fun_l10_n806(x)
- else
- fun_l10_n529(x)
- end
-end
-
-def fun_l9_n726(x)
- if (x < 1)
- fun_l10_n847(x)
- else
- fun_l10_n427(x)
- end
-end
-
-def fun_l9_n727(x)
- if (x < 1)
- fun_l10_n285(x)
- else
- fun_l10_n878(x)
- end
-end
-
-def fun_l9_n728(x)
- if (x < 1)
- fun_l10_n829(x)
- else
- fun_l10_n341(x)
- end
-end
-
-def fun_l9_n729(x)
- if (x < 1)
- fun_l10_n797(x)
- else
- fun_l10_n865(x)
- end
-end
-
-def fun_l9_n730(x)
- if (x < 1)
- fun_l10_n689(x)
- else
- fun_l10_n241(x)
- end
-end
-
-def fun_l9_n731(x)
- if (x < 1)
- fun_l10_n764(x)
- else
- fun_l10_n451(x)
- end
-end
-
-def fun_l9_n732(x)
- if (x < 1)
- fun_l10_n147(x)
- else
- fun_l10_n998(x)
- end
-end
-
-def fun_l9_n733(x)
- if (x < 1)
- fun_l10_n192(x)
- else
- fun_l10_n293(x)
- end
-end
-
-def fun_l9_n734(x)
- if (x < 1)
- fun_l10_n207(x)
- else
- fun_l10_n696(x)
- end
-end
-
-def fun_l9_n735(x)
- if (x < 1)
- fun_l10_n457(x)
- else
- fun_l10_n93(x)
- end
-end
-
-def fun_l9_n736(x)
- if (x < 1)
- fun_l10_n130(x)
- else
- fun_l10_n512(x)
- end
-end
-
-def fun_l9_n737(x)
- if (x < 1)
- fun_l10_n86(x)
- else
- fun_l10_n409(x)
- end
-end
-
-def fun_l9_n738(x)
- if (x < 1)
- fun_l10_n783(x)
- else
- fun_l10_n981(x)
- end
-end
-
-def fun_l9_n739(x)
- if (x < 1)
- fun_l10_n927(x)
- else
- fun_l10_n831(x)
- end
-end
-
-def fun_l9_n740(x)
- if (x < 1)
- fun_l10_n719(x)
- else
- fun_l10_n422(x)
- end
-end
-
-def fun_l9_n741(x)
- if (x < 1)
- fun_l10_n287(x)
- else
- fun_l10_n139(x)
- end
-end
-
-def fun_l9_n742(x)
- if (x < 1)
- fun_l10_n533(x)
- else
- fun_l10_n687(x)
- end
-end
-
-def fun_l9_n743(x)
- if (x < 1)
- fun_l10_n550(x)
- else
- fun_l10_n972(x)
- end
-end
-
-def fun_l9_n744(x)
- if (x < 1)
- fun_l10_n5(x)
- else
- fun_l10_n306(x)
- end
-end
-
-def fun_l9_n745(x)
- if (x < 1)
- fun_l10_n755(x)
- else
- fun_l10_n849(x)
- end
-end
-
-def fun_l9_n746(x)
- if (x < 1)
- fun_l10_n912(x)
- else
- fun_l10_n307(x)
- end
-end
-
-def fun_l9_n747(x)
- if (x < 1)
- fun_l10_n181(x)
- else
- fun_l10_n476(x)
- end
-end
-
-def fun_l9_n748(x)
- if (x < 1)
- fun_l10_n353(x)
- else
- fun_l10_n412(x)
- end
-end
-
-def fun_l9_n749(x)
- if (x < 1)
- fun_l10_n187(x)
- else
- fun_l10_n591(x)
- end
-end
-
-def fun_l9_n750(x)
- if (x < 1)
- fun_l10_n464(x)
- else
- fun_l10_n581(x)
- end
-end
-
-def fun_l9_n751(x)
- if (x < 1)
- fun_l10_n1(x)
- else
- fun_l10_n557(x)
- end
-end
-
-def fun_l9_n752(x)
- if (x < 1)
- fun_l10_n788(x)
- else
- fun_l10_n438(x)
- end
-end
-
-def fun_l9_n753(x)
- if (x < 1)
- fun_l10_n535(x)
- else
- fun_l10_n13(x)
- end
-end
-
-def fun_l9_n754(x)
- if (x < 1)
- fun_l10_n811(x)
- else
- fun_l10_n543(x)
- end
-end
-
-def fun_l9_n755(x)
- if (x < 1)
- fun_l10_n328(x)
- else
- fun_l10_n44(x)
- end
-end
-
-def fun_l9_n756(x)
- if (x < 1)
- fun_l10_n839(x)
- else
- fun_l10_n16(x)
- end
-end
-
-def fun_l9_n757(x)
- if (x < 1)
- fun_l10_n778(x)
- else
- fun_l10_n865(x)
- end
-end
-
-def fun_l9_n758(x)
- if (x < 1)
- fun_l10_n552(x)
- else
- fun_l10_n783(x)
- end
-end
-
-def fun_l9_n759(x)
- if (x < 1)
- fun_l10_n293(x)
- else
- fun_l10_n140(x)
- end
-end
-
-def fun_l9_n760(x)
- if (x < 1)
- fun_l10_n814(x)
- else
- fun_l10_n497(x)
- end
-end
-
-def fun_l9_n761(x)
- if (x < 1)
- fun_l10_n922(x)
- else
- fun_l10_n986(x)
- end
-end
-
-def fun_l9_n762(x)
- if (x < 1)
- fun_l10_n100(x)
- else
- fun_l10_n346(x)
- end
-end
-
-def fun_l9_n763(x)
- if (x < 1)
- fun_l10_n738(x)
- else
- fun_l10_n223(x)
- end
-end
-
-def fun_l9_n764(x)
- if (x < 1)
- fun_l10_n168(x)
- else
- fun_l10_n367(x)
- end
-end
-
-def fun_l9_n765(x)
- if (x < 1)
- fun_l10_n929(x)
- else
- fun_l10_n684(x)
- end
-end
-
-def fun_l9_n766(x)
- if (x < 1)
- fun_l10_n940(x)
- else
- fun_l10_n497(x)
- end
-end
-
-def fun_l9_n767(x)
- if (x < 1)
- fun_l10_n198(x)
- else
- fun_l10_n386(x)
- end
-end
-
-def fun_l9_n768(x)
- if (x < 1)
- fun_l10_n667(x)
- else
- fun_l10_n913(x)
- end
-end
-
-def fun_l9_n769(x)
- if (x < 1)
- fun_l10_n210(x)
- else
- fun_l10_n233(x)
- end
-end
-
-def fun_l9_n770(x)
- if (x < 1)
- fun_l10_n819(x)
- else
- fun_l10_n755(x)
- end
-end
-
-def fun_l9_n771(x)
- if (x < 1)
- fun_l10_n519(x)
- else
- fun_l10_n554(x)
- end
-end
-
-def fun_l9_n772(x)
- if (x < 1)
- fun_l10_n880(x)
- else
- fun_l10_n280(x)
- end
-end
-
-def fun_l9_n773(x)
- if (x < 1)
- fun_l10_n368(x)
- else
- fun_l10_n97(x)
- end
-end
-
-def fun_l9_n774(x)
- if (x < 1)
- fun_l10_n447(x)
- else
- fun_l10_n918(x)
- end
-end
-
-def fun_l9_n775(x)
- if (x < 1)
- fun_l10_n222(x)
- else
- fun_l10_n35(x)
- end
-end
-
-def fun_l9_n776(x)
- if (x < 1)
- fun_l10_n339(x)
- else
- fun_l10_n309(x)
- end
-end
-
-def fun_l9_n777(x)
- if (x < 1)
- fun_l10_n948(x)
- else
- fun_l10_n967(x)
- end
-end
-
-def fun_l9_n778(x)
- if (x < 1)
- fun_l10_n561(x)
- else
- fun_l10_n202(x)
- end
-end
-
-def fun_l9_n779(x)
- if (x < 1)
- fun_l10_n863(x)
- else
- fun_l10_n356(x)
- end
-end
-
-def fun_l9_n780(x)
- if (x < 1)
- fun_l10_n459(x)
- else
- fun_l10_n358(x)
- end
-end
-
-def fun_l9_n781(x)
- if (x < 1)
- fun_l10_n543(x)
- else
- fun_l10_n229(x)
- end
-end
-
-def fun_l9_n782(x)
- if (x < 1)
- fun_l10_n422(x)
- else
- fun_l10_n448(x)
- end
-end
-
-def fun_l9_n783(x)
- if (x < 1)
- fun_l10_n222(x)
- else
- fun_l10_n63(x)
- end
-end
-
-def fun_l9_n784(x)
- if (x < 1)
- fun_l10_n520(x)
- else
- fun_l10_n443(x)
- end
-end
-
-def fun_l9_n785(x)
- if (x < 1)
- fun_l10_n894(x)
- else
- fun_l10_n379(x)
- end
-end
-
-def fun_l9_n786(x)
- if (x < 1)
- fun_l10_n362(x)
- else
- fun_l10_n676(x)
- end
-end
-
-def fun_l9_n787(x)
- if (x < 1)
- fun_l10_n545(x)
- else
- fun_l10_n263(x)
- end
-end
-
-def fun_l9_n788(x)
- if (x < 1)
- fun_l10_n322(x)
- else
- fun_l10_n631(x)
- end
-end
-
-def fun_l9_n789(x)
- if (x < 1)
- fun_l10_n916(x)
- else
- fun_l10_n877(x)
- end
-end
-
-def fun_l9_n790(x)
- if (x < 1)
- fun_l10_n443(x)
- else
- fun_l10_n640(x)
- end
-end
-
-def fun_l9_n791(x)
- if (x < 1)
- fun_l10_n202(x)
- else
- fun_l10_n686(x)
- end
-end
-
-def fun_l9_n792(x)
- if (x < 1)
- fun_l10_n143(x)
- else
- fun_l10_n200(x)
- end
-end
-
-def fun_l9_n793(x)
- if (x < 1)
- fun_l10_n939(x)
- else
- fun_l10_n374(x)
- end
-end
-
-def fun_l9_n794(x)
- if (x < 1)
- fun_l10_n506(x)
- else
- fun_l10_n782(x)
- end
-end
-
-def fun_l9_n795(x)
- if (x < 1)
- fun_l10_n619(x)
- else
- fun_l10_n439(x)
- end
-end
-
-def fun_l9_n796(x)
- if (x < 1)
- fun_l10_n748(x)
- else
- fun_l10_n61(x)
- end
-end
-
-def fun_l9_n797(x)
- if (x < 1)
- fun_l10_n217(x)
- else
- fun_l10_n816(x)
- end
-end
-
-def fun_l9_n798(x)
- if (x < 1)
- fun_l10_n310(x)
- else
- fun_l10_n445(x)
- end
-end
-
-def fun_l9_n799(x)
- if (x < 1)
- fun_l10_n262(x)
- else
- fun_l10_n776(x)
- end
-end
-
-def fun_l9_n800(x)
- if (x < 1)
- fun_l10_n807(x)
- else
- fun_l10_n566(x)
- end
-end
-
-def fun_l9_n801(x)
- if (x < 1)
- fun_l10_n466(x)
- else
- fun_l10_n287(x)
- end
-end
-
-def fun_l9_n802(x)
- if (x < 1)
- fun_l10_n205(x)
- else
- fun_l10_n415(x)
- end
-end
-
-def fun_l9_n803(x)
- if (x < 1)
- fun_l10_n618(x)
- else
- fun_l10_n87(x)
- end
-end
-
-def fun_l9_n804(x)
- if (x < 1)
- fun_l10_n248(x)
- else
- fun_l10_n32(x)
- end
-end
-
-def fun_l9_n805(x)
- if (x < 1)
- fun_l10_n537(x)
- else
- fun_l10_n844(x)
- end
-end
-
-def fun_l9_n806(x)
- if (x < 1)
- fun_l10_n554(x)
- else
- fun_l10_n696(x)
- end
-end
-
-def fun_l9_n807(x)
- if (x < 1)
- fun_l10_n774(x)
- else
- fun_l10_n486(x)
- end
-end
-
-def fun_l9_n808(x)
- if (x < 1)
- fun_l10_n500(x)
- else
- fun_l10_n926(x)
- end
-end
-
-def fun_l9_n809(x)
- if (x < 1)
- fun_l10_n601(x)
- else
- fun_l10_n696(x)
- end
-end
-
-def fun_l9_n810(x)
- if (x < 1)
- fun_l10_n770(x)
- else
- fun_l10_n948(x)
- end
-end
-
-def fun_l9_n811(x)
- if (x < 1)
- fun_l10_n658(x)
- else
- fun_l10_n840(x)
- end
-end
-
-def fun_l9_n812(x)
- if (x < 1)
- fun_l10_n913(x)
- else
- fun_l10_n892(x)
- end
-end
-
-def fun_l9_n813(x)
- if (x < 1)
- fun_l10_n440(x)
- else
- fun_l10_n204(x)
- end
-end
-
-def fun_l9_n814(x)
- if (x < 1)
- fun_l10_n273(x)
- else
- fun_l10_n816(x)
- end
-end
-
-def fun_l9_n815(x)
- if (x < 1)
- fun_l10_n190(x)
- else
- fun_l10_n735(x)
- end
-end
-
-def fun_l9_n816(x)
- if (x < 1)
- fun_l10_n77(x)
- else
- fun_l10_n30(x)
- end
-end
-
-def fun_l9_n817(x)
- if (x < 1)
- fun_l10_n697(x)
- else
- fun_l10_n985(x)
- end
-end
-
-def fun_l9_n818(x)
- if (x < 1)
- fun_l10_n583(x)
- else
- fun_l10_n314(x)
- end
-end
-
-def fun_l9_n819(x)
- if (x < 1)
- fun_l10_n149(x)
- else
- fun_l10_n556(x)
- end
-end
-
-def fun_l9_n820(x)
- if (x < 1)
- fun_l10_n634(x)
- else
- fun_l10_n392(x)
- end
-end
-
-def fun_l9_n821(x)
- if (x < 1)
- fun_l10_n401(x)
- else
- fun_l10_n217(x)
- end
-end
-
-def fun_l9_n822(x)
- if (x < 1)
- fun_l10_n564(x)
- else
- fun_l10_n860(x)
- end
-end
-
-def fun_l9_n823(x)
- if (x < 1)
- fun_l10_n901(x)
- else
- fun_l10_n836(x)
- end
-end
-
-def fun_l9_n824(x)
- if (x < 1)
- fun_l10_n526(x)
- else
- fun_l10_n660(x)
- end
-end
-
-def fun_l9_n825(x)
- if (x < 1)
- fun_l10_n245(x)
- else
- fun_l10_n914(x)
- end
-end
-
-def fun_l9_n826(x)
- if (x < 1)
- fun_l10_n712(x)
- else
- fun_l10_n928(x)
- end
-end
-
-def fun_l9_n827(x)
- if (x < 1)
- fun_l10_n596(x)
- else
- fun_l10_n803(x)
- end
-end
-
-def fun_l9_n828(x)
- if (x < 1)
- fun_l10_n454(x)
- else
- fun_l10_n679(x)
- end
-end
-
-def fun_l9_n829(x)
- if (x < 1)
- fun_l10_n104(x)
- else
- fun_l10_n137(x)
- end
-end
-
-def fun_l9_n830(x)
- if (x < 1)
- fun_l10_n516(x)
- else
- fun_l10_n687(x)
- end
-end
-
-def fun_l9_n831(x)
- if (x < 1)
- fun_l10_n720(x)
- else
- fun_l10_n770(x)
- end
-end
-
-def fun_l9_n832(x)
- if (x < 1)
- fun_l10_n939(x)
- else
- fun_l10_n119(x)
- end
-end
-
-def fun_l9_n833(x)
- if (x < 1)
- fun_l10_n515(x)
- else
- fun_l10_n71(x)
- end
-end
-
-def fun_l9_n834(x)
- if (x < 1)
- fun_l10_n668(x)
- else
- fun_l10_n521(x)
- end
-end
-
-def fun_l9_n835(x)
- if (x < 1)
- fun_l10_n405(x)
- else
- fun_l10_n69(x)
- end
-end
-
-def fun_l9_n836(x)
- if (x < 1)
- fun_l10_n201(x)
- else
- fun_l10_n681(x)
- end
-end
-
-def fun_l9_n837(x)
- if (x < 1)
- fun_l10_n161(x)
- else
- fun_l10_n258(x)
- end
-end
-
-def fun_l9_n838(x)
- if (x < 1)
- fun_l10_n913(x)
- else
- fun_l10_n586(x)
- end
-end
-
-def fun_l9_n839(x)
- if (x < 1)
- fun_l10_n566(x)
- else
- fun_l10_n543(x)
- end
-end
-
-def fun_l9_n840(x)
- if (x < 1)
- fun_l10_n547(x)
- else
- fun_l10_n570(x)
- end
-end
-
-def fun_l9_n841(x)
- if (x < 1)
- fun_l10_n888(x)
- else
- fun_l10_n843(x)
- end
-end
-
-def fun_l9_n842(x)
- if (x < 1)
- fun_l10_n497(x)
- else
- fun_l10_n985(x)
- end
-end
-
-def fun_l9_n843(x)
- if (x < 1)
- fun_l10_n754(x)
- else
- fun_l10_n390(x)
- end
-end
-
-def fun_l9_n844(x)
- if (x < 1)
- fun_l10_n625(x)
- else
- fun_l10_n562(x)
- end
-end
-
-def fun_l9_n845(x)
- if (x < 1)
- fun_l10_n858(x)
- else
- fun_l10_n553(x)
- end
-end
-
-def fun_l9_n846(x)
- if (x < 1)
- fun_l10_n145(x)
- else
- fun_l10_n551(x)
- end
-end
-
-def fun_l9_n847(x)
- if (x < 1)
- fun_l10_n916(x)
- else
- fun_l10_n851(x)
- end
-end
-
-def fun_l9_n848(x)
- if (x < 1)
- fun_l10_n935(x)
- else
- fun_l10_n448(x)
- end
-end
-
-def fun_l9_n849(x)
- if (x < 1)
- fun_l10_n664(x)
- else
- fun_l10_n832(x)
- end
-end
-
-def fun_l9_n850(x)
- if (x < 1)
- fun_l10_n904(x)
- else
- fun_l10_n203(x)
- end
-end
-
-def fun_l9_n851(x)
- if (x < 1)
- fun_l10_n863(x)
- else
- fun_l10_n491(x)
- end
-end
-
-def fun_l9_n852(x)
- if (x < 1)
- fun_l10_n930(x)
- else
- fun_l10_n248(x)
- end
-end
-
-def fun_l9_n853(x)
- if (x < 1)
- fun_l10_n637(x)
- else
- fun_l10_n716(x)
- end
-end
-
-def fun_l9_n854(x)
- if (x < 1)
- fun_l10_n35(x)
- else
- fun_l10_n662(x)
- end
-end
-
-def fun_l9_n855(x)
- if (x < 1)
- fun_l10_n57(x)
- else
- fun_l10_n392(x)
- end
-end
-
-def fun_l9_n856(x)
- if (x < 1)
- fun_l10_n480(x)
- else
- fun_l10_n447(x)
- end
-end
-
-def fun_l9_n857(x)
- if (x < 1)
- fun_l10_n134(x)
- else
- fun_l10_n842(x)
- end
-end
-
-def fun_l9_n858(x)
- if (x < 1)
- fun_l10_n384(x)
- else
- fun_l10_n577(x)
- end
-end
-
-def fun_l9_n859(x)
- if (x < 1)
- fun_l10_n718(x)
- else
- fun_l10_n571(x)
- end
-end
-
-def fun_l9_n860(x)
- if (x < 1)
- fun_l10_n237(x)
- else
- fun_l10_n654(x)
- end
-end
-
-def fun_l9_n861(x)
- if (x < 1)
- fun_l10_n807(x)
- else
- fun_l10_n409(x)
- end
-end
-
-def fun_l9_n862(x)
- if (x < 1)
- fun_l10_n801(x)
- else
- fun_l10_n575(x)
- end
-end
-
-def fun_l9_n863(x)
- if (x < 1)
- fun_l10_n500(x)
- else
- fun_l10_n133(x)
- end
-end
-
-def fun_l9_n864(x)
- if (x < 1)
- fun_l10_n403(x)
- else
- fun_l10_n720(x)
- end
-end
-
-def fun_l9_n865(x)
- if (x < 1)
- fun_l10_n648(x)
- else
- fun_l10_n677(x)
- end
-end
-
-def fun_l9_n866(x)
- if (x < 1)
- fun_l10_n873(x)
- else
- fun_l10_n519(x)
- end
-end
-
-def fun_l9_n867(x)
- if (x < 1)
- fun_l10_n459(x)
- else
- fun_l10_n331(x)
- end
-end
-
-def fun_l9_n868(x)
- if (x < 1)
- fun_l10_n159(x)
- else
- fun_l10_n64(x)
- end
-end
-
-def fun_l9_n869(x)
- if (x < 1)
- fun_l10_n155(x)
- else
- fun_l10_n41(x)
- end
-end
-
-def fun_l9_n870(x)
- if (x < 1)
- fun_l10_n947(x)
- else
- fun_l10_n386(x)
- end
-end
-
-def fun_l9_n871(x)
- if (x < 1)
- fun_l10_n868(x)
- else
- fun_l10_n794(x)
- end
-end
-
-def fun_l9_n872(x)
- if (x < 1)
- fun_l10_n77(x)
- else
- fun_l10_n268(x)
- end
-end
-
-def fun_l9_n873(x)
- if (x < 1)
- fun_l10_n119(x)
- else
- fun_l10_n819(x)
- end
-end
-
-def fun_l9_n874(x)
- if (x < 1)
- fun_l10_n143(x)
- else
- fun_l10_n434(x)
- end
-end
-
-def fun_l9_n875(x)
- if (x < 1)
- fun_l10_n238(x)
- else
- fun_l10_n489(x)
- end
-end
-
-def fun_l9_n876(x)
- if (x < 1)
- fun_l10_n687(x)
- else
- fun_l10_n384(x)
- end
-end
-
-def fun_l9_n877(x)
- if (x < 1)
- fun_l10_n27(x)
- else
- fun_l10_n138(x)
- end
-end
-
-def fun_l9_n878(x)
- if (x < 1)
- fun_l10_n208(x)
- else
- fun_l10_n691(x)
- end
-end
-
-def fun_l9_n879(x)
- if (x < 1)
- fun_l10_n793(x)
- else
- fun_l10_n165(x)
- end
-end
-
-def fun_l9_n880(x)
- if (x < 1)
- fun_l10_n358(x)
- else
- fun_l10_n455(x)
- end
-end
-
-def fun_l9_n881(x)
- if (x < 1)
- fun_l10_n558(x)
- else
- fun_l10_n184(x)
- end
-end
-
-def fun_l9_n882(x)
- if (x < 1)
- fun_l10_n461(x)
- else
- fun_l10_n155(x)
- end
-end
-
-def fun_l9_n883(x)
- if (x < 1)
- fun_l10_n503(x)
- else
- fun_l10_n225(x)
- end
-end
-
-def fun_l9_n884(x)
- if (x < 1)
- fun_l10_n384(x)
- else
- fun_l10_n262(x)
- end
-end
-
-def fun_l9_n885(x)
- if (x < 1)
- fun_l10_n565(x)
- else
- fun_l10_n633(x)
- end
-end
-
-def fun_l9_n886(x)
- if (x < 1)
- fun_l10_n626(x)
- else
- fun_l10_n796(x)
- end
-end
-
-def fun_l9_n887(x)
- if (x < 1)
- fun_l10_n424(x)
- else
- fun_l10_n458(x)
- end
-end
-
-def fun_l9_n888(x)
- if (x < 1)
- fun_l10_n687(x)
- else
- fun_l10_n145(x)
- end
-end
-
-def fun_l9_n889(x)
- if (x < 1)
- fun_l10_n787(x)
- else
- fun_l10_n225(x)
- end
-end
-
-def fun_l9_n890(x)
- if (x < 1)
- fun_l10_n249(x)
- else
- fun_l10_n154(x)
- end
-end
-
-def fun_l9_n891(x)
- if (x < 1)
- fun_l10_n38(x)
- else
- fun_l10_n635(x)
- end
-end
-
-def fun_l9_n892(x)
- if (x < 1)
- fun_l10_n920(x)
- else
- fun_l10_n478(x)
- end
-end
-
-def fun_l9_n893(x)
- if (x < 1)
- fun_l10_n13(x)
- else
- fun_l10_n174(x)
- end
-end
-
-def fun_l9_n894(x)
- if (x < 1)
- fun_l10_n304(x)
- else
- fun_l10_n495(x)
- end
-end
-
-def fun_l9_n895(x)
- if (x < 1)
- fun_l10_n226(x)
- else
- fun_l10_n420(x)
- end
-end
-
-def fun_l9_n896(x)
- if (x < 1)
- fun_l10_n86(x)
- else
- fun_l10_n837(x)
- end
-end
-
-def fun_l9_n897(x)
- if (x < 1)
- fun_l10_n927(x)
- else
- fun_l10_n344(x)
- end
-end
-
-def fun_l9_n898(x)
- if (x < 1)
- fun_l10_n87(x)
- else
- fun_l10_n270(x)
- end
-end
-
-def fun_l9_n899(x)
- if (x < 1)
- fun_l10_n549(x)
- else
- fun_l10_n349(x)
- end
-end
-
-def fun_l9_n900(x)
- if (x < 1)
- fun_l10_n456(x)
- else
- fun_l10_n345(x)
- end
-end
-
-def fun_l9_n901(x)
- if (x < 1)
- fun_l10_n154(x)
- else
- fun_l10_n764(x)
- end
-end
-
-def fun_l9_n902(x)
- if (x < 1)
- fun_l10_n614(x)
- else
- fun_l10_n536(x)
- end
-end
-
-def fun_l9_n903(x)
- if (x < 1)
- fun_l10_n108(x)
- else
- fun_l10_n197(x)
- end
-end
-
-def fun_l9_n904(x)
- if (x < 1)
- fun_l10_n616(x)
- else
- fun_l10_n777(x)
- end
-end
-
-def fun_l9_n905(x)
- if (x < 1)
- fun_l10_n515(x)
- else
- fun_l10_n830(x)
- end
-end
-
-def fun_l9_n906(x)
- if (x < 1)
- fun_l10_n288(x)
- else
- fun_l10_n717(x)
- end
-end
-
-def fun_l9_n907(x)
- if (x < 1)
- fun_l10_n704(x)
- else
- fun_l10_n962(x)
- end
-end
-
-def fun_l9_n908(x)
- if (x < 1)
- fun_l10_n85(x)
- else
- fun_l10_n70(x)
- end
-end
-
-def fun_l9_n909(x)
- if (x < 1)
- fun_l10_n806(x)
- else
- fun_l10_n97(x)
- end
-end
-
-def fun_l9_n910(x)
- if (x < 1)
- fun_l10_n567(x)
- else
- fun_l10_n47(x)
- end
-end
-
-def fun_l9_n911(x)
- if (x < 1)
- fun_l10_n919(x)
- else
- fun_l10_n879(x)
- end
-end
-
-def fun_l9_n912(x)
- if (x < 1)
- fun_l10_n229(x)
- else
- fun_l10_n200(x)
- end
-end
-
-def fun_l9_n913(x)
- if (x < 1)
- fun_l10_n502(x)
- else
- fun_l10_n820(x)
- end
-end
-
-def fun_l9_n914(x)
- if (x < 1)
- fun_l10_n57(x)
- else
- fun_l10_n470(x)
- end
-end
-
-def fun_l9_n915(x)
- if (x < 1)
- fun_l10_n909(x)
- else
- fun_l10_n845(x)
- end
-end
-
-def fun_l9_n916(x)
- if (x < 1)
- fun_l10_n658(x)
- else
- fun_l10_n925(x)
- end
-end
-
-def fun_l9_n917(x)
- if (x < 1)
- fun_l10_n886(x)
- else
- fun_l10_n285(x)
- end
-end
-
-def fun_l9_n918(x)
- if (x < 1)
- fun_l10_n484(x)
- else
- fun_l10_n712(x)
- end
-end
-
-def fun_l9_n919(x)
- if (x < 1)
- fun_l10_n299(x)
- else
- fun_l10_n144(x)
- end
-end
-
-def fun_l9_n920(x)
- if (x < 1)
- fun_l10_n830(x)
- else
- fun_l10_n913(x)
- end
-end
-
-def fun_l9_n921(x)
- if (x < 1)
- fun_l10_n306(x)
- else
- fun_l10_n242(x)
- end
-end
-
-def fun_l9_n922(x)
- if (x < 1)
- fun_l10_n442(x)
- else
- fun_l10_n497(x)
- end
-end
-
-def fun_l9_n923(x)
- if (x < 1)
- fun_l10_n22(x)
- else
- fun_l10_n376(x)
- end
-end
-
-def fun_l9_n924(x)
- if (x < 1)
- fun_l10_n737(x)
- else
- fun_l10_n603(x)
- end
-end
-
-def fun_l9_n925(x)
- if (x < 1)
- fun_l10_n300(x)
- else
- fun_l10_n974(x)
- end
-end
-
-def fun_l9_n926(x)
- if (x < 1)
- fun_l10_n644(x)
- else
- fun_l10_n973(x)
- end
-end
-
-def fun_l9_n927(x)
- if (x < 1)
- fun_l10_n413(x)
- else
- fun_l10_n353(x)
- end
-end
-
-def fun_l9_n928(x)
- if (x < 1)
- fun_l10_n438(x)
- else
- fun_l10_n518(x)
- end
-end
-
-def fun_l9_n929(x)
- if (x < 1)
- fun_l10_n30(x)
- else
- fun_l10_n207(x)
- end
-end
-
-def fun_l9_n930(x)
- if (x < 1)
- fun_l10_n976(x)
- else
- fun_l10_n70(x)
- end
-end
-
-def fun_l9_n931(x)
- if (x < 1)
- fun_l10_n5(x)
- else
- fun_l10_n37(x)
- end
-end
-
-def fun_l9_n932(x)
- if (x < 1)
- fun_l10_n612(x)
- else
- fun_l10_n268(x)
- end
-end
-
-def fun_l9_n933(x)
- if (x < 1)
- fun_l10_n81(x)
- else
- fun_l10_n373(x)
- end
-end
-
-def fun_l9_n934(x)
- if (x < 1)
- fun_l10_n30(x)
- else
- fun_l10_n504(x)
- end
-end
-
-def fun_l9_n935(x)
- if (x < 1)
- fun_l10_n131(x)
- else
- fun_l10_n617(x)
- end
-end
-
-def fun_l9_n936(x)
- if (x < 1)
- fun_l10_n114(x)
- else
- fun_l10_n883(x)
- end
-end
-
-def fun_l9_n937(x)
- if (x < 1)
- fun_l10_n859(x)
- else
- fun_l10_n788(x)
- end
-end
-
-def fun_l9_n938(x)
- if (x < 1)
- fun_l10_n993(x)
- else
- fun_l10_n349(x)
- end
-end
-
-def fun_l9_n939(x)
- if (x < 1)
- fun_l10_n775(x)
- else
- fun_l10_n195(x)
- end
-end
-
-def fun_l9_n940(x)
- if (x < 1)
- fun_l10_n829(x)
- else
- fun_l10_n398(x)
- end
-end
-
-def fun_l9_n941(x)
- if (x < 1)
- fun_l10_n906(x)
- else
- fun_l10_n529(x)
- end
-end
-
-def fun_l9_n942(x)
- if (x < 1)
- fun_l10_n965(x)
- else
- fun_l10_n372(x)
- end
-end
-
-def fun_l9_n943(x)
- if (x < 1)
- fun_l10_n953(x)
- else
- fun_l10_n397(x)
- end
-end
-
-def fun_l9_n944(x)
- if (x < 1)
- fun_l10_n984(x)
- else
- fun_l10_n909(x)
- end
-end
-
-def fun_l9_n945(x)
- if (x < 1)
- fun_l10_n649(x)
- else
- fun_l10_n304(x)
- end
-end
-
-def fun_l9_n946(x)
- if (x < 1)
- fun_l10_n0(x)
- else
- fun_l10_n922(x)
- end
-end
-
-def fun_l9_n947(x)
- if (x < 1)
- fun_l10_n460(x)
- else
- fun_l10_n215(x)
- end
-end
-
-def fun_l9_n948(x)
- if (x < 1)
- fun_l10_n251(x)
- else
- fun_l10_n636(x)
- end
-end
-
-def fun_l9_n949(x)
- if (x < 1)
- fun_l10_n14(x)
- else
- fun_l10_n494(x)
- end
-end
-
-def fun_l9_n950(x)
- if (x < 1)
- fun_l10_n6(x)
- else
- fun_l10_n523(x)
- end
-end
-
-def fun_l9_n951(x)
- if (x < 1)
- fun_l10_n705(x)
- else
- fun_l10_n689(x)
- end
-end
-
-def fun_l9_n952(x)
- if (x < 1)
- fun_l10_n830(x)
- else
- fun_l10_n374(x)
- end
-end
-
-def fun_l9_n953(x)
- if (x < 1)
- fun_l10_n451(x)
- else
- fun_l10_n87(x)
- end
-end
-
-def fun_l9_n954(x)
- if (x < 1)
- fun_l10_n202(x)
- else
- fun_l10_n753(x)
- end
-end
-
-def fun_l9_n955(x)
- if (x < 1)
- fun_l10_n384(x)
- else
- fun_l10_n216(x)
- end
-end
-
-def fun_l9_n956(x)
- if (x < 1)
- fun_l10_n381(x)
- else
- fun_l10_n727(x)
- end
-end
-
-def fun_l9_n957(x)
- if (x < 1)
- fun_l10_n876(x)
- else
- fun_l10_n760(x)
- end
-end
-
-def fun_l9_n958(x)
- if (x < 1)
- fun_l10_n975(x)
- else
- fun_l10_n372(x)
- end
-end
-
-def fun_l9_n959(x)
- if (x < 1)
- fun_l10_n714(x)
- else
- fun_l10_n680(x)
- end
-end
-
-def fun_l9_n960(x)
- if (x < 1)
- fun_l10_n733(x)
- else
- fun_l10_n508(x)
- end
-end
-
-def fun_l9_n961(x)
- if (x < 1)
- fun_l10_n319(x)
- else
- fun_l10_n90(x)
- end
-end
-
-def fun_l9_n962(x)
- if (x < 1)
- fun_l10_n964(x)
- else
- fun_l10_n282(x)
- end
-end
-
-def fun_l9_n963(x)
- if (x < 1)
- fun_l10_n179(x)
- else
- fun_l10_n324(x)
- end
-end
-
-def fun_l9_n964(x)
- if (x < 1)
- fun_l10_n627(x)
- else
- fun_l10_n627(x)
- end
-end
-
-def fun_l9_n965(x)
- if (x < 1)
- fun_l10_n7(x)
- else
- fun_l10_n375(x)
- end
-end
-
-def fun_l9_n966(x)
- if (x < 1)
- fun_l10_n960(x)
- else
- fun_l10_n272(x)
- end
-end
-
-def fun_l9_n967(x)
- if (x < 1)
- fun_l10_n869(x)
- else
- fun_l10_n737(x)
- end
-end
-
-def fun_l9_n968(x)
- if (x < 1)
- fun_l10_n621(x)
- else
- fun_l10_n413(x)
- end
-end
-
-def fun_l9_n969(x)
- if (x < 1)
- fun_l10_n258(x)
- else
- fun_l10_n105(x)
- end
-end
-
-def fun_l9_n970(x)
- if (x < 1)
- fun_l10_n817(x)
- else
- fun_l10_n519(x)
- end
-end
-
-def fun_l9_n971(x)
- if (x < 1)
- fun_l10_n462(x)
- else
- fun_l10_n335(x)
- end
-end
-
-def fun_l9_n972(x)
- if (x < 1)
- fun_l10_n770(x)
- else
- fun_l10_n856(x)
- end
-end
-
-def fun_l9_n973(x)
- if (x < 1)
- fun_l10_n607(x)
- else
- fun_l10_n142(x)
- end
-end
-
-def fun_l9_n974(x)
- if (x < 1)
- fun_l10_n498(x)
- else
- fun_l10_n373(x)
- end
-end
-
-def fun_l9_n975(x)
- if (x < 1)
- fun_l10_n239(x)
- else
- fun_l10_n895(x)
- end
-end
-
-def fun_l9_n976(x)
- if (x < 1)
- fun_l10_n312(x)
- else
- fun_l10_n489(x)
- end
-end
-
-def fun_l9_n977(x)
- if (x < 1)
- fun_l10_n595(x)
- else
- fun_l10_n674(x)
- end
-end
-
-def fun_l9_n978(x)
- if (x < 1)
- fun_l10_n928(x)
- else
- fun_l10_n774(x)
- end
-end
-
-def fun_l9_n979(x)
- if (x < 1)
- fun_l10_n964(x)
- else
- fun_l10_n860(x)
- end
-end
-
-def fun_l9_n980(x)
- if (x < 1)
- fun_l10_n63(x)
- else
- fun_l10_n115(x)
- end
-end
-
-def fun_l9_n981(x)
- if (x < 1)
- fun_l10_n930(x)
- else
- fun_l10_n559(x)
- end
-end
-
-def fun_l9_n982(x)
- if (x < 1)
- fun_l10_n391(x)
- else
- fun_l10_n411(x)
- end
-end
-
-def fun_l9_n983(x)
- if (x < 1)
- fun_l10_n71(x)
- else
- fun_l10_n632(x)
- end
-end
-
-def fun_l9_n984(x)
- if (x < 1)
- fun_l10_n613(x)
- else
- fun_l10_n218(x)
- end
-end
-
-def fun_l9_n985(x)
- if (x < 1)
- fun_l10_n263(x)
- else
- fun_l10_n858(x)
- end
-end
-
-def fun_l9_n986(x)
- if (x < 1)
- fun_l10_n974(x)
- else
- fun_l10_n824(x)
- end
-end
-
-def fun_l9_n987(x)
- if (x < 1)
- fun_l10_n636(x)
- else
- fun_l10_n55(x)
- end
-end
-
-def fun_l9_n988(x)
- if (x < 1)
- fun_l10_n367(x)
- else
- fun_l10_n878(x)
- end
-end
-
-def fun_l9_n989(x)
- if (x < 1)
- fun_l10_n316(x)
- else
- fun_l10_n800(x)
- end
-end
-
-def fun_l9_n990(x)
- if (x < 1)
- fun_l10_n581(x)
- else
- fun_l10_n511(x)
- end
-end
-
-def fun_l9_n991(x)
- if (x < 1)
- fun_l10_n667(x)
- else
- fun_l10_n566(x)
- end
-end
-
-def fun_l9_n992(x)
- if (x < 1)
- fun_l10_n144(x)
- else
- fun_l10_n51(x)
- end
-end
-
-def fun_l9_n993(x)
- if (x < 1)
- fun_l10_n652(x)
- else
- fun_l10_n436(x)
- end
-end
-
-def fun_l9_n994(x)
- if (x < 1)
- fun_l10_n283(x)
- else
- fun_l10_n480(x)
- end
-end
-
-def fun_l9_n995(x)
- if (x < 1)
- fun_l10_n908(x)
- else
- fun_l10_n86(x)
- end
-end
-
-def fun_l9_n996(x)
- if (x < 1)
- fun_l10_n43(x)
- else
- fun_l10_n466(x)
- end
-end
-
-def fun_l9_n997(x)
- if (x < 1)
- fun_l10_n968(x)
- else
- fun_l10_n97(x)
- end
-end
-
-def fun_l9_n998(x)
- if (x < 1)
- fun_l10_n38(x)
- else
- fun_l10_n78(x)
- end
-end
-
-def fun_l9_n999(x)
- if (x < 1)
- fun_l10_n947(x)
- else
- fun_l10_n322(x)
- end
-end
-
-def fun_l10_n0(x)
- if (x < 1)
- fun_l11_n424(x)
- else
- fun_l11_n206(x)
- end
-end
-
-def fun_l10_n1(x)
- if (x < 1)
- fun_l11_n263(x)
- else
- fun_l11_n886(x)
- end
-end
-
-def fun_l10_n2(x)
- if (x < 1)
- fun_l11_n31(x)
- else
- fun_l11_n693(x)
- end
-end
-
-def fun_l10_n3(x)
- if (x < 1)
- fun_l11_n924(x)
- else
- fun_l11_n585(x)
- end
-end
-
-def fun_l10_n4(x)
- if (x < 1)
- fun_l11_n552(x)
- else
- fun_l11_n904(x)
- end
-end
-
-def fun_l10_n5(x)
- if (x < 1)
- fun_l11_n912(x)
- else
- fun_l11_n127(x)
- end
-end
-
-def fun_l10_n6(x)
- if (x < 1)
- fun_l11_n284(x)
- else
- fun_l11_n952(x)
- end
-end
-
-def fun_l10_n7(x)
- if (x < 1)
- fun_l11_n294(x)
- else
- fun_l11_n527(x)
- end
-end
-
-def fun_l10_n8(x)
- if (x < 1)
- fun_l11_n675(x)
- else
- fun_l11_n457(x)
- end
-end
-
-def fun_l10_n9(x)
- if (x < 1)
- fun_l11_n908(x)
- else
- fun_l11_n963(x)
- end
-end
-
-def fun_l10_n10(x)
- if (x < 1)
- fun_l11_n361(x)
- else
- fun_l11_n839(x)
- end
-end
-
-def fun_l10_n11(x)
- if (x < 1)
- fun_l11_n402(x)
- else
- fun_l11_n228(x)
- end
-end
-
-def fun_l10_n12(x)
- if (x < 1)
- fun_l11_n871(x)
- else
- fun_l11_n194(x)
- end
-end
-
-def fun_l10_n13(x)
- if (x < 1)
- fun_l11_n255(x)
- else
- fun_l11_n816(x)
- end
-end
-
-def fun_l10_n14(x)
- if (x < 1)
- fun_l11_n987(x)
- else
- fun_l11_n870(x)
- end
-end
-
-def fun_l10_n15(x)
- if (x < 1)
- fun_l11_n538(x)
- else
- fun_l11_n837(x)
- end
-end
-
-def fun_l10_n16(x)
- if (x < 1)
- fun_l11_n205(x)
- else
- fun_l11_n831(x)
- end
-end
-
-def fun_l10_n17(x)
- if (x < 1)
- fun_l11_n737(x)
- else
- fun_l11_n242(x)
- end
-end
-
-def fun_l10_n18(x)
- if (x < 1)
- fun_l11_n18(x)
- else
- fun_l11_n103(x)
- end
-end
-
-def fun_l10_n19(x)
- if (x < 1)
- fun_l11_n928(x)
- else
- fun_l11_n300(x)
- end
-end
-
-def fun_l10_n20(x)
- if (x < 1)
- fun_l11_n816(x)
- else
- fun_l11_n225(x)
- end
-end
-
-def fun_l10_n21(x)
- if (x < 1)
- fun_l11_n52(x)
- else
- fun_l11_n901(x)
- end
-end
-
-def fun_l10_n22(x)
- if (x < 1)
- fun_l11_n316(x)
- else
- fun_l11_n556(x)
- end
-end
-
-def fun_l10_n23(x)
- if (x < 1)
- fun_l11_n103(x)
- else
- fun_l11_n223(x)
- end
-end
-
-def fun_l10_n24(x)
- if (x < 1)
- fun_l11_n14(x)
- else
- fun_l11_n875(x)
- end
-end
-
-def fun_l10_n25(x)
- if (x < 1)
- fun_l11_n359(x)
- else
- fun_l11_n504(x)
- end
-end
-
-def fun_l10_n26(x)
- if (x < 1)
- fun_l11_n416(x)
- else
- fun_l11_n172(x)
- end
-end
-
-def fun_l10_n27(x)
- if (x < 1)
- fun_l11_n142(x)
- else
- fun_l11_n238(x)
- end
-end
-
-def fun_l10_n28(x)
- if (x < 1)
- fun_l11_n319(x)
- else
- fun_l11_n350(x)
- end
-end
-
-def fun_l10_n29(x)
- if (x < 1)
- fun_l11_n53(x)
- else
- fun_l11_n162(x)
- end
-end
-
-def fun_l10_n30(x)
- if (x < 1)
- fun_l11_n121(x)
- else
- fun_l11_n39(x)
- end
-end
-
-def fun_l10_n31(x)
- if (x < 1)
- fun_l11_n447(x)
- else
- fun_l11_n259(x)
- end
-end
-
-def fun_l10_n32(x)
- if (x < 1)
- fun_l11_n931(x)
- else
- fun_l11_n571(x)
- end
-end
-
-def fun_l10_n33(x)
- if (x < 1)
- fun_l11_n705(x)
- else
- fun_l11_n544(x)
- end
-end
-
-def fun_l10_n34(x)
- if (x < 1)
- fun_l11_n990(x)
- else
- fun_l11_n695(x)
- end
-end
-
-def fun_l10_n35(x)
- if (x < 1)
- fun_l11_n197(x)
- else
- fun_l11_n391(x)
- end
-end
-
-def fun_l10_n36(x)
- if (x < 1)
- fun_l11_n686(x)
- else
- fun_l11_n785(x)
- end
-end
-
-def fun_l10_n37(x)
- if (x < 1)
- fun_l11_n466(x)
- else
- fun_l11_n783(x)
- end
-end
-
-def fun_l10_n38(x)
- if (x < 1)
- fun_l11_n351(x)
- else
- fun_l11_n732(x)
- end
-end
-
-def fun_l10_n39(x)
- if (x < 1)
- fun_l11_n22(x)
- else
- fun_l11_n995(x)
- end
-end
-
-def fun_l10_n40(x)
- if (x < 1)
- fun_l11_n264(x)
- else
- fun_l11_n662(x)
- end
-end
-
-def fun_l10_n41(x)
- if (x < 1)
- fun_l11_n91(x)
- else
- fun_l11_n673(x)
- end
-end
-
-def fun_l10_n42(x)
- if (x < 1)
- fun_l11_n993(x)
- else
- fun_l11_n839(x)
- end
-end
-
-def fun_l10_n43(x)
- if (x < 1)
- fun_l11_n158(x)
- else
- fun_l11_n774(x)
- end
-end
-
-def fun_l10_n44(x)
- if (x < 1)
- fun_l11_n977(x)
- else
- fun_l11_n321(x)
- end
-end
-
-def fun_l10_n45(x)
- if (x < 1)
- fun_l11_n121(x)
- else
- fun_l11_n184(x)
- end
-end
-
-def fun_l10_n46(x)
- if (x < 1)
- fun_l11_n446(x)
- else
- fun_l11_n426(x)
- end
-end
-
-def fun_l10_n47(x)
- if (x < 1)
- fun_l11_n524(x)
- else
- fun_l11_n123(x)
- end
-end
-
-def fun_l10_n48(x)
- if (x < 1)
- fun_l11_n435(x)
- else
- fun_l11_n560(x)
- end
-end
-
-def fun_l10_n49(x)
- if (x < 1)
- fun_l11_n94(x)
- else
- fun_l11_n731(x)
- end
-end
-
-def fun_l10_n50(x)
- if (x < 1)
- fun_l11_n177(x)
- else
- fun_l11_n902(x)
- end
-end
-
-def fun_l10_n51(x)
- if (x < 1)
- fun_l11_n648(x)
- else
- fun_l11_n807(x)
- end
-end
-
-def fun_l10_n52(x)
- if (x < 1)
- fun_l11_n414(x)
- else
- fun_l11_n335(x)
- end
-end
-
-def fun_l10_n53(x)
- if (x < 1)
- fun_l11_n754(x)
- else
- fun_l11_n789(x)
- end
-end
-
-def fun_l10_n54(x)
- if (x < 1)
- fun_l11_n843(x)
- else
- fun_l11_n980(x)
- end
-end
-
-def fun_l10_n55(x)
- if (x < 1)
- fun_l11_n706(x)
- else
- fun_l11_n160(x)
- end
-end
-
-def fun_l10_n56(x)
- if (x < 1)
- fun_l11_n564(x)
- else
- fun_l11_n672(x)
- end
-end
-
-def fun_l10_n57(x)
- if (x < 1)
- fun_l11_n158(x)
- else
- fun_l11_n154(x)
- end
-end
-
-def fun_l10_n58(x)
- if (x < 1)
- fun_l11_n120(x)
- else
- fun_l11_n970(x)
- end
-end
-
-def fun_l10_n59(x)
- if (x < 1)
- fun_l11_n561(x)
- else
- fun_l11_n872(x)
- end
-end
-
-def fun_l10_n60(x)
- if (x < 1)
- fun_l11_n93(x)
- else
- fun_l11_n723(x)
- end
-end
-
-def fun_l10_n61(x)
- if (x < 1)
- fun_l11_n921(x)
- else
- fun_l11_n578(x)
- end
-end
-
-def fun_l10_n62(x)
- if (x < 1)
- fun_l11_n527(x)
- else
- fun_l11_n118(x)
- end
-end
-
-def fun_l10_n63(x)
- if (x < 1)
- fun_l11_n225(x)
- else
- fun_l11_n937(x)
- end
-end
-
-def fun_l10_n64(x)
- if (x < 1)
- fun_l11_n634(x)
- else
- fun_l11_n415(x)
- end
-end
-
-def fun_l10_n65(x)
- if (x < 1)
- fun_l11_n718(x)
- else
- fun_l11_n958(x)
- end
-end
-
-def fun_l10_n66(x)
- if (x < 1)
- fun_l11_n972(x)
- else
- fun_l11_n453(x)
- end
-end
-
-def fun_l10_n67(x)
- if (x < 1)
- fun_l11_n85(x)
- else
- fun_l11_n934(x)
- end
-end
-
-def fun_l10_n68(x)
- if (x < 1)
- fun_l11_n386(x)
- else
- fun_l11_n138(x)
- end
-end
-
-def fun_l10_n69(x)
- if (x < 1)
- fun_l11_n312(x)
- else
- fun_l11_n62(x)
- end
-end
-
-def fun_l10_n70(x)
- if (x < 1)
- fun_l11_n591(x)
- else
- fun_l11_n906(x)
- end
-end
-
-def fun_l10_n71(x)
- if (x < 1)
- fun_l11_n571(x)
- else
- fun_l11_n429(x)
- end
-end
-
-def fun_l10_n72(x)
- if (x < 1)
- fun_l11_n996(x)
- else
- fun_l11_n932(x)
- end
-end
-
-def fun_l10_n73(x)
- if (x < 1)
- fun_l11_n691(x)
- else
- fun_l11_n116(x)
- end
-end
-
-def fun_l10_n74(x)
- if (x < 1)
- fun_l11_n670(x)
- else
- fun_l11_n865(x)
- end
-end
-
-def fun_l10_n75(x)
- if (x < 1)
- fun_l11_n568(x)
- else
- fun_l11_n164(x)
- end
-end
-
-def fun_l10_n76(x)
- if (x < 1)
- fun_l11_n747(x)
- else
- fun_l11_n235(x)
- end
-end
-
-def fun_l10_n77(x)
- if (x < 1)
- fun_l11_n402(x)
- else
- fun_l11_n670(x)
- end
-end
-
-def fun_l10_n78(x)
- if (x < 1)
- fun_l11_n525(x)
- else
- fun_l11_n675(x)
- end
-end
-
-def fun_l10_n79(x)
- if (x < 1)
- fun_l11_n6(x)
- else
- fun_l11_n238(x)
- end
-end
-
-def fun_l10_n80(x)
- if (x < 1)
- fun_l11_n905(x)
- else
- fun_l11_n170(x)
- end
-end
-
-def fun_l10_n81(x)
- if (x < 1)
- fun_l11_n610(x)
- else
- fun_l11_n527(x)
- end
-end
-
-def fun_l10_n82(x)
- if (x < 1)
- fun_l11_n796(x)
- else
- fun_l11_n749(x)
- end
-end
-
-def fun_l10_n83(x)
- if (x < 1)
- fun_l11_n634(x)
- else
- fun_l11_n49(x)
- end
-end
-
-def fun_l10_n84(x)
- if (x < 1)
- fun_l11_n376(x)
- else
- fun_l11_n852(x)
- end
-end
-
-def fun_l10_n85(x)
- if (x < 1)
- fun_l11_n593(x)
- else
- fun_l11_n752(x)
- end
-end
-
-def fun_l10_n86(x)
- if (x < 1)
- fun_l11_n821(x)
- else
- fun_l11_n892(x)
- end
-end
-
-def fun_l10_n87(x)
- if (x < 1)
- fun_l11_n950(x)
- else
- fun_l11_n309(x)
- end
-end
-
-def fun_l10_n88(x)
- if (x < 1)
- fun_l11_n360(x)
- else
- fun_l11_n134(x)
- end
-end
-
-def fun_l10_n89(x)
- if (x < 1)
- fun_l11_n935(x)
- else
- fun_l11_n241(x)
- end
-end
-
-def fun_l10_n90(x)
- if (x < 1)
- fun_l11_n524(x)
- else
- fun_l11_n120(x)
- end
-end
-
-def fun_l10_n91(x)
- if (x < 1)
- fun_l11_n25(x)
- else
- fun_l11_n357(x)
- end
-end
-
-def fun_l10_n92(x)
- if (x < 1)
- fun_l11_n248(x)
- else
- fun_l11_n212(x)
- end
-end
-
-def fun_l10_n93(x)
- if (x < 1)
- fun_l11_n860(x)
- else
- fun_l11_n733(x)
- end
-end
-
-def fun_l10_n94(x)
- if (x < 1)
- fun_l11_n147(x)
- else
- fun_l11_n907(x)
- end
-end
-
-def fun_l10_n95(x)
- if (x < 1)
- fun_l11_n758(x)
- else
- fun_l11_n62(x)
- end
-end
-
-def fun_l10_n96(x)
- if (x < 1)
- fun_l11_n205(x)
- else
- fun_l11_n54(x)
- end
-end
-
-def fun_l10_n97(x)
- if (x < 1)
- fun_l11_n8(x)
- else
- fun_l11_n813(x)
- end
-end
-
-def fun_l10_n98(x)
- if (x < 1)
- fun_l11_n296(x)
- else
- fun_l11_n693(x)
- end
-end
-
-def fun_l10_n99(x)
- if (x < 1)
- fun_l11_n181(x)
- else
- fun_l11_n709(x)
- end
-end
-
-def fun_l10_n100(x)
- if (x < 1)
- fun_l11_n109(x)
- else
- fun_l11_n560(x)
- end
-end
-
-def fun_l10_n101(x)
- if (x < 1)
- fun_l11_n290(x)
- else
- fun_l11_n693(x)
- end
-end
-
-def fun_l10_n102(x)
- if (x < 1)
- fun_l11_n826(x)
- else
- fun_l11_n813(x)
- end
-end
-
-def fun_l10_n103(x)
- if (x < 1)
- fun_l11_n3(x)
- else
- fun_l11_n787(x)
- end
-end
-
-def fun_l10_n104(x)
- if (x < 1)
- fun_l11_n477(x)
- else
- fun_l11_n336(x)
- end
-end
-
-def fun_l10_n105(x)
- if (x < 1)
- fun_l11_n131(x)
- else
- fun_l11_n500(x)
- end
-end
-
-def fun_l10_n106(x)
- if (x < 1)
- fun_l11_n278(x)
- else
- fun_l11_n948(x)
- end
-end
-
-def fun_l10_n107(x)
- if (x < 1)
- fun_l11_n950(x)
- else
- fun_l11_n848(x)
- end
-end
-
-def fun_l10_n108(x)
- if (x < 1)
- fun_l11_n490(x)
- else
- fun_l11_n1(x)
- end
-end
-
-def fun_l10_n109(x)
- if (x < 1)
- fun_l11_n297(x)
- else
- fun_l11_n902(x)
- end
-end
-
-def fun_l10_n110(x)
- if (x < 1)
- fun_l11_n808(x)
- else
- fun_l11_n697(x)
- end
-end
-
-def fun_l10_n111(x)
- if (x < 1)
- fun_l11_n330(x)
- else
- fun_l11_n424(x)
- end
-end
-
-def fun_l10_n112(x)
- if (x < 1)
- fun_l11_n254(x)
- else
- fun_l11_n662(x)
- end
-end
-
-def fun_l10_n113(x)
- if (x < 1)
- fun_l11_n811(x)
- else
- fun_l11_n196(x)
- end
-end
-
-def fun_l10_n114(x)
- if (x < 1)
- fun_l11_n868(x)
- else
- fun_l11_n812(x)
- end
-end
-
-def fun_l10_n115(x)
- if (x < 1)
- fun_l11_n308(x)
- else
- fun_l11_n184(x)
- end
-end
-
-def fun_l10_n116(x)
- if (x < 1)
- fun_l11_n64(x)
- else
- fun_l11_n906(x)
- end
-end
-
-def fun_l10_n117(x)
- if (x < 1)
- fun_l11_n339(x)
- else
- fun_l11_n338(x)
- end
-end
-
-def fun_l10_n118(x)
- if (x < 1)
- fun_l11_n993(x)
- else
- fun_l11_n915(x)
- end
-end
-
-def fun_l10_n119(x)
- if (x < 1)
- fun_l11_n729(x)
- else
- fun_l11_n472(x)
- end
-end
-
-def fun_l10_n120(x)
- if (x < 1)
- fun_l11_n646(x)
- else
- fun_l11_n83(x)
- end
-end
-
-def fun_l10_n121(x)
- if (x < 1)
- fun_l11_n294(x)
- else
- fun_l11_n208(x)
- end
-end
-
-def fun_l10_n122(x)
- if (x < 1)
- fun_l11_n309(x)
- else
- fun_l11_n52(x)
- end
-end
-
-def fun_l10_n123(x)
- if (x < 1)
- fun_l11_n5(x)
- else
- fun_l11_n124(x)
- end
-end
-
-def fun_l10_n124(x)
- if (x < 1)
- fun_l11_n288(x)
- else
- fun_l11_n731(x)
- end
-end
-
-def fun_l10_n125(x)
- if (x < 1)
- fun_l11_n835(x)
- else
- fun_l11_n381(x)
- end
-end
-
-def fun_l10_n126(x)
- if (x < 1)
- fun_l11_n269(x)
- else
- fun_l11_n104(x)
- end
-end
-
-def fun_l10_n127(x)
- if (x < 1)
- fun_l11_n377(x)
- else
- fun_l11_n650(x)
- end
-end
-
-def fun_l10_n128(x)
- if (x < 1)
- fun_l11_n749(x)
- else
- fun_l11_n223(x)
- end
-end
-
-def fun_l10_n129(x)
- if (x < 1)
- fun_l11_n493(x)
- else
- fun_l11_n834(x)
- end
-end
-
-def fun_l10_n130(x)
- if (x < 1)
- fun_l11_n826(x)
- else
- fun_l11_n857(x)
- end
-end
-
-def fun_l10_n131(x)
- if (x < 1)
- fun_l11_n19(x)
- else
- fun_l11_n932(x)
- end
-end
-
-def fun_l10_n132(x)
- if (x < 1)
- fun_l11_n585(x)
- else
- fun_l11_n13(x)
- end
-end
-
-def fun_l10_n133(x)
- if (x < 1)
- fun_l11_n91(x)
- else
- fun_l11_n748(x)
- end
-end
-
-def fun_l10_n134(x)
- if (x < 1)
- fun_l11_n218(x)
- else
- fun_l11_n343(x)
- end
-end
-
-def fun_l10_n135(x)
- if (x < 1)
- fun_l11_n386(x)
- else
- fun_l11_n655(x)
- end
-end
-
-def fun_l10_n136(x)
- if (x < 1)
- fun_l11_n43(x)
- else
- fun_l11_n964(x)
- end
-end
-
-def fun_l10_n137(x)
- if (x < 1)
- fun_l11_n50(x)
- else
- fun_l11_n836(x)
- end
-end
-
-def fun_l10_n138(x)
- if (x < 1)
- fun_l11_n915(x)
- else
- fun_l11_n262(x)
- end
-end
-
-def fun_l10_n139(x)
- if (x < 1)
- fun_l11_n187(x)
- else
- fun_l11_n321(x)
- end
-end
-
-def fun_l10_n140(x)
- if (x < 1)
- fun_l11_n473(x)
- else
- fun_l11_n771(x)
- end
-end
-
-def fun_l10_n141(x)
- if (x < 1)
- fun_l11_n125(x)
- else
- fun_l11_n118(x)
- end
-end
-
-def fun_l10_n142(x)
- if (x < 1)
- fun_l11_n993(x)
- else
- fun_l11_n178(x)
- end
-end
-
-def fun_l10_n143(x)
- if (x < 1)
- fun_l11_n223(x)
- else
- fun_l11_n509(x)
- end
-end
-
-def fun_l10_n144(x)
- if (x < 1)
- fun_l11_n62(x)
- else
- fun_l11_n455(x)
- end
-end
-
-def fun_l10_n145(x)
- if (x < 1)
- fun_l11_n155(x)
- else
- fun_l11_n486(x)
- end
-end
-
-def fun_l10_n146(x)
- if (x < 1)
- fun_l11_n414(x)
- else
- fun_l11_n384(x)
- end
-end
-
-def fun_l10_n147(x)
- if (x < 1)
- fun_l11_n840(x)
- else
- fun_l11_n287(x)
- end
-end
-
-def fun_l10_n148(x)
- if (x < 1)
- fun_l11_n605(x)
- else
- fun_l11_n283(x)
- end
-end
-
-def fun_l10_n149(x)
- if (x < 1)
- fun_l11_n101(x)
- else
- fun_l11_n710(x)
- end
-end
-
-def fun_l10_n150(x)
- if (x < 1)
- fun_l11_n51(x)
- else
- fun_l11_n304(x)
- end
-end
-
-def fun_l10_n151(x)
- if (x < 1)
- fun_l11_n501(x)
- else
- fun_l11_n789(x)
- end
-end
-
-def fun_l10_n152(x)
- if (x < 1)
- fun_l11_n265(x)
- else
- fun_l11_n304(x)
- end
-end
-
-def fun_l10_n153(x)
- if (x < 1)
- fun_l11_n500(x)
- else
- fun_l11_n32(x)
- end
-end
-
-def fun_l10_n154(x)
- if (x < 1)
- fun_l11_n464(x)
- else
- fun_l11_n212(x)
- end
-end
-
-def fun_l10_n155(x)
- if (x < 1)
- fun_l11_n729(x)
- else
- fun_l11_n805(x)
- end
-end
-
-def fun_l10_n156(x)
- if (x < 1)
- fun_l11_n225(x)
- else
- fun_l11_n241(x)
- end
-end
-
-def fun_l10_n157(x)
- if (x < 1)
- fun_l11_n600(x)
- else
- fun_l11_n424(x)
- end
-end
-
-def fun_l10_n158(x)
- if (x < 1)
- fun_l11_n684(x)
- else
- fun_l11_n898(x)
- end
-end
-
-def fun_l10_n159(x)
- if (x < 1)
- fun_l11_n354(x)
- else
- fun_l11_n909(x)
- end
-end
-
-def fun_l10_n160(x)
- if (x < 1)
- fun_l11_n879(x)
- else
- fun_l11_n917(x)
- end
-end
-
-def fun_l10_n161(x)
- if (x < 1)
- fun_l11_n547(x)
- else
- fun_l11_n333(x)
- end
-end
-
-def fun_l10_n162(x)
- if (x < 1)
- fun_l11_n769(x)
- else
- fun_l11_n846(x)
- end
-end
-
-def fun_l10_n163(x)
- if (x < 1)
- fun_l11_n292(x)
- else
- fun_l11_n526(x)
- end
-end
-
-def fun_l10_n164(x)
- if (x < 1)
- fun_l11_n355(x)
- else
- fun_l11_n783(x)
- end
-end
-
-def fun_l10_n165(x)
- if (x < 1)
- fun_l11_n413(x)
- else
- fun_l11_n570(x)
- end
-end
-
-def fun_l10_n166(x)
- if (x < 1)
- fun_l11_n535(x)
- else
- fun_l11_n953(x)
- end
-end
-
-def fun_l10_n167(x)
- if (x < 1)
- fun_l11_n661(x)
- else
- fun_l11_n178(x)
- end
-end
-
-def fun_l10_n168(x)
- if (x < 1)
- fun_l11_n749(x)
- else
- fun_l11_n853(x)
- end
-end
-
-def fun_l10_n169(x)
- if (x < 1)
- fun_l11_n208(x)
- else
- fun_l11_n378(x)
- end
-end
-
-def fun_l10_n170(x)
- if (x < 1)
- fun_l11_n385(x)
- else
- fun_l11_n811(x)
- end
-end
-
-def fun_l10_n171(x)
- if (x < 1)
- fun_l11_n960(x)
- else
- fun_l11_n631(x)
- end
-end
-
-def fun_l10_n172(x)
- if (x < 1)
- fun_l11_n104(x)
- else
- fun_l11_n667(x)
- end
-end
-
-def fun_l10_n173(x)
- if (x < 1)
- fun_l11_n532(x)
- else
- fun_l11_n169(x)
- end
-end
-
-def fun_l10_n174(x)
- if (x < 1)
- fun_l11_n794(x)
- else
- fun_l11_n761(x)
- end
-end
-
-def fun_l10_n175(x)
- if (x < 1)
- fun_l11_n306(x)
- else
- fun_l11_n369(x)
- end
-end
-
-def fun_l10_n176(x)
- if (x < 1)
- fun_l11_n693(x)
- else
- fun_l11_n254(x)
- end
-end
-
-def fun_l10_n177(x)
- if (x < 1)
- fun_l11_n927(x)
- else
- fun_l11_n194(x)
- end
-end
-
-def fun_l10_n178(x)
- if (x < 1)
- fun_l11_n197(x)
- else
- fun_l11_n136(x)
- end
-end
-
-def fun_l10_n179(x)
- if (x < 1)
- fun_l11_n482(x)
- else
- fun_l11_n182(x)
- end
-end
-
-def fun_l10_n180(x)
- if (x < 1)
- fun_l11_n20(x)
- else
- fun_l11_n978(x)
- end
-end
-
-def fun_l10_n181(x)
- if (x < 1)
- fun_l11_n101(x)
- else
- fun_l11_n92(x)
- end
-end
-
-def fun_l10_n182(x)
- if (x < 1)
- fun_l11_n179(x)
- else
- fun_l11_n634(x)
- end
-end
-
-def fun_l10_n183(x)
- if (x < 1)
- fun_l11_n221(x)
- else
- fun_l11_n275(x)
- end
-end
-
-def fun_l10_n184(x)
- if (x < 1)
- fun_l11_n826(x)
- else
- fun_l11_n630(x)
- end
-end
-
-def fun_l10_n185(x)
- if (x < 1)
- fun_l11_n706(x)
- else
- fun_l11_n30(x)
- end
-end
-
-def fun_l10_n186(x)
- if (x < 1)
- fun_l11_n491(x)
- else
- fun_l11_n182(x)
- end
-end
-
-def fun_l10_n187(x)
- if (x < 1)
- fun_l11_n404(x)
- else
- fun_l11_n812(x)
- end
-end
-
-def fun_l10_n188(x)
- if (x < 1)
- fun_l11_n41(x)
- else
- fun_l11_n39(x)
- end
-end
-
-def fun_l10_n189(x)
- if (x < 1)
- fun_l11_n620(x)
- else
- fun_l11_n659(x)
- end
-end
-
-def fun_l10_n190(x)
- if (x < 1)
- fun_l11_n717(x)
- else
- fun_l11_n846(x)
- end
-end
-
-def fun_l10_n191(x)
- if (x < 1)
- fun_l11_n328(x)
- else
- fun_l11_n223(x)
- end
-end
-
-def fun_l10_n192(x)
- if (x < 1)
- fun_l11_n280(x)
- else
- fun_l11_n360(x)
- end
-end
-
-def fun_l10_n193(x)
- if (x < 1)
- fun_l11_n798(x)
- else
- fun_l11_n303(x)
- end
-end
-
-def fun_l10_n194(x)
- if (x < 1)
- fun_l11_n617(x)
- else
- fun_l11_n207(x)
- end
-end
-
-def fun_l10_n195(x)
- if (x < 1)
- fun_l11_n918(x)
- else
- fun_l11_n398(x)
- end
-end
-
-def fun_l10_n196(x)
- if (x < 1)
- fun_l11_n998(x)
- else
- fun_l11_n31(x)
- end
-end
-
-def fun_l10_n197(x)
- if (x < 1)
- fun_l11_n740(x)
- else
- fun_l11_n220(x)
- end
-end
-
-def fun_l10_n198(x)
- if (x < 1)
- fun_l11_n847(x)
- else
- fun_l11_n915(x)
- end
-end
-
-def fun_l10_n199(x)
- if (x < 1)
- fun_l11_n946(x)
- else
- fun_l11_n300(x)
- end
-end
-
-def fun_l10_n200(x)
- if (x < 1)
- fun_l11_n494(x)
- else
- fun_l11_n316(x)
- end
-end
-
-def fun_l10_n201(x)
- if (x < 1)
- fun_l11_n871(x)
- else
- fun_l11_n310(x)
- end
-end
-
-def fun_l10_n202(x)
- if (x < 1)
- fun_l11_n660(x)
- else
- fun_l11_n538(x)
- end
-end
-
-def fun_l10_n203(x)
- if (x < 1)
- fun_l11_n478(x)
- else
- fun_l11_n618(x)
- end
-end
-
-def fun_l10_n204(x)
- if (x < 1)
- fun_l11_n134(x)
- else
- fun_l11_n224(x)
- end
-end
-
-def fun_l10_n205(x)
- if (x < 1)
- fun_l11_n128(x)
- else
- fun_l11_n279(x)
- end
-end
-
-def fun_l10_n206(x)
- if (x < 1)
- fun_l11_n718(x)
- else
- fun_l11_n514(x)
- end
-end
-
-def fun_l10_n207(x)
- if (x < 1)
- fun_l11_n466(x)
- else
- fun_l11_n979(x)
- end
-end
-
-def fun_l10_n208(x)
- if (x < 1)
- fun_l11_n990(x)
- else
- fun_l11_n881(x)
- end
-end
-
-def fun_l10_n209(x)
- if (x < 1)
- fun_l11_n860(x)
- else
- fun_l11_n995(x)
- end
-end
-
-def fun_l10_n210(x)
- if (x < 1)
- fun_l11_n269(x)
- else
- fun_l11_n846(x)
- end
-end
-
-def fun_l10_n211(x)
- if (x < 1)
- fun_l11_n155(x)
- else
- fun_l11_n97(x)
- end
-end
-
-def fun_l10_n212(x)
- if (x < 1)
- fun_l11_n377(x)
- else
- fun_l11_n749(x)
- end
-end
-
-def fun_l10_n213(x)
- if (x < 1)
- fun_l11_n647(x)
- else
- fun_l11_n276(x)
- end
-end
-
-def fun_l10_n214(x)
- if (x < 1)
- fun_l11_n290(x)
- else
- fun_l11_n325(x)
- end
-end
-
-def fun_l10_n215(x)
- if (x < 1)
- fun_l11_n445(x)
- else
- fun_l11_n538(x)
- end
-end
-
-def fun_l10_n216(x)
- if (x < 1)
- fun_l11_n433(x)
- else
- fun_l11_n937(x)
- end
-end
-
-def fun_l10_n217(x)
- if (x < 1)
- fun_l11_n288(x)
- else
- fun_l11_n897(x)
- end
-end
-
-def fun_l10_n218(x)
- if (x < 1)
- fun_l11_n386(x)
- else
- fun_l11_n545(x)
- end
-end
-
-def fun_l10_n219(x)
- if (x < 1)
- fun_l11_n678(x)
- else
- fun_l11_n433(x)
- end
-end
-
-def fun_l10_n220(x)
- if (x < 1)
- fun_l11_n203(x)
- else
- fun_l11_n163(x)
- end
-end
-
-def fun_l10_n221(x)
- if (x < 1)
- fun_l11_n134(x)
- else
- fun_l11_n545(x)
- end
-end
-
-def fun_l10_n222(x)
- if (x < 1)
- fun_l11_n556(x)
- else
- fun_l11_n537(x)
- end
-end
-
-def fun_l10_n223(x)
- if (x < 1)
- fun_l11_n743(x)
- else
- fun_l11_n88(x)
- end
-end
-
-def fun_l10_n224(x)
- if (x < 1)
- fun_l11_n678(x)
- else
- fun_l11_n643(x)
- end
-end
-
-def fun_l10_n225(x)
- if (x < 1)
- fun_l11_n13(x)
- else
- fun_l11_n219(x)
- end
-end
-
-def fun_l10_n226(x)
- if (x < 1)
- fun_l11_n454(x)
- else
- fun_l11_n691(x)
- end
-end
-
-def fun_l10_n227(x)
- if (x < 1)
- fun_l11_n117(x)
- else
- fun_l11_n433(x)
- end
-end
-
-def fun_l10_n228(x)
- if (x < 1)
- fun_l11_n559(x)
- else
- fun_l11_n884(x)
- end
-end
-
-def fun_l10_n229(x)
- if (x < 1)
- fun_l11_n58(x)
- else
- fun_l11_n620(x)
- end
-end
-
-def fun_l10_n230(x)
- if (x < 1)
- fun_l11_n688(x)
- else
- fun_l11_n76(x)
- end
-end
-
-def fun_l10_n231(x)
- if (x < 1)
- fun_l11_n726(x)
- else
- fun_l11_n644(x)
- end
-end
-
-def fun_l10_n232(x)
- if (x < 1)
- fun_l11_n918(x)
- else
- fun_l11_n0(x)
- end
-end
-
-def fun_l10_n233(x)
- if (x < 1)
- fun_l11_n761(x)
- else
- fun_l11_n487(x)
- end
-end
-
-def fun_l10_n234(x)
- if (x < 1)
- fun_l11_n657(x)
- else
- fun_l11_n107(x)
- end
-end
-
-def fun_l10_n235(x)
- if (x < 1)
- fun_l11_n897(x)
- else
- fun_l11_n881(x)
- end
-end
-
-def fun_l10_n236(x)
- if (x < 1)
- fun_l11_n851(x)
- else
- fun_l11_n593(x)
- end
-end
-
-def fun_l10_n237(x)
- if (x < 1)
- fun_l11_n319(x)
- else
- fun_l11_n983(x)
- end
-end
-
-def fun_l10_n238(x)
- if (x < 1)
- fun_l11_n648(x)
- else
- fun_l11_n870(x)
- end
-end
-
-def fun_l10_n239(x)
- if (x < 1)
- fun_l11_n195(x)
- else
- fun_l11_n378(x)
- end
-end
-
-def fun_l10_n240(x)
- if (x < 1)
- fun_l11_n398(x)
- else
- fun_l11_n284(x)
- end
-end
-
-def fun_l10_n241(x)
- if (x < 1)
- fun_l11_n118(x)
- else
- fun_l11_n417(x)
- end
-end
-
-def fun_l10_n242(x)
- if (x < 1)
- fun_l11_n220(x)
- else
- fun_l11_n445(x)
- end
-end
-
-def fun_l10_n243(x)
- if (x < 1)
- fun_l11_n783(x)
- else
- fun_l11_n989(x)
- end
-end
-
-def fun_l10_n244(x)
- if (x < 1)
- fun_l11_n229(x)
- else
- fun_l11_n439(x)
- end
-end
-
-def fun_l10_n245(x)
- if (x < 1)
- fun_l11_n78(x)
- else
- fun_l11_n272(x)
- end
-end
-
-def fun_l10_n246(x)
- if (x < 1)
- fun_l11_n481(x)
- else
- fun_l11_n499(x)
- end
-end
-
-def fun_l10_n247(x)
- if (x < 1)
- fun_l11_n213(x)
- else
- fun_l11_n471(x)
- end
-end
-
-def fun_l10_n248(x)
- if (x < 1)
- fun_l11_n45(x)
- else
- fun_l11_n919(x)
- end
-end
-
-def fun_l10_n249(x)
- if (x < 1)
- fun_l11_n13(x)
- else
- fun_l11_n526(x)
- end
-end
-
-def fun_l10_n250(x)
- if (x < 1)
- fun_l11_n997(x)
- else
- fun_l11_n112(x)
- end
-end
-
-def fun_l10_n251(x)
- if (x < 1)
- fun_l11_n662(x)
- else
- fun_l11_n950(x)
- end
-end
-
-def fun_l10_n252(x)
- if (x < 1)
- fun_l11_n272(x)
- else
- fun_l11_n345(x)
- end
-end
-
-def fun_l10_n253(x)
- if (x < 1)
- fun_l11_n28(x)
- else
- fun_l11_n24(x)
- end
-end
-
-def fun_l10_n254(x)
- if (x < 1)
- fun_l11_n326(x)
- else
- fun_l11_n907(x)
- end
-end
-
-def fun_l10_n255(x)
- if (x < 1)
- fun_l11_n612(x)
- else
- fun_l11_n790(x)
- end
-end
-
-def fun_l10_n256(x)
- if (x < 1)
- fun_l11_n50(x)
- else
- fun_l11_n16(x)
- end
-end
-
-def fun_l10_n257(x)
- if (x < 1)
- fun_l11_n350(x)
- else
- fun_l11_n151(x)
- end
-end
-
-def fun_l10_n258(x)
- if (x < 1)
- fun_l11_n290(x)
- else
- fun_l11_n113(x)
- end
-end
-
-def fun_l10_n259(x)
- if (x < 1)
- fun_l11_n751(x)
- else
- fun_l11_n16(x)
- end
-end
-
-def fun_l10_n260(x)
- if (x < 1)
- fun_l11_n337(x)
- else
- fun_l11_n516(x)
- end
-end
-
-def fun_l10_n261(x)
- if (x < 1)
- fun_l11_n530(x)
- else
- fun_l11_n19(x)
- end
-end
-
-def fun_l10_n262(x)
- if (x < 1)
- fun_l11_n977(x)
- else
- fun_l11_n529(x)
- end
-end
-
-def fun_l10_n263(x)
- if (x < 1)
- fun_l11_n769(x)
- else
- fun_l11_n723(x)
- end
-end
-
-def fun_l10_n264(x)
- if (x < 1)
- fun_l11_n673(x)
- else
- fun_l11_n771(x)
- end
-end
-
-def fun_l10_n265(x)
- if (x < 1)
- fun_l11_n28(x)
- else
- fun_l11_n427(x)
- end
-end
-
-def fun_l10_n266(x)
- if (x < 1)
- fun_l11_n92(x)
- else
- fun_l11_n590(x)
- end
-end
-
-def fun_l10_n267(x)
- if (x < 1)
- fun_l11_n762(x)
- else
- fun_l11_n352(x)
- end
-end
-
-def fun_l10_n268(x)
- if (x < 1)
- fun_l11_n988(x)
- else
- fun_l11_n126(x)
- end
-end
-
-def fun_l10_n269(x)
- if (x < 1)
- fun_l11_n92(x)
- else
- fun_l11_n455(x)
- end
-end
-
-def fun_l10_n270(x)
- if (x < 1)
- fun_l11_n233(x)
- else
- fun_l11_n404(x)
- end
-end
-
-def fun_l10_n271(x)
- if (x < 1)
- fun_l11_n122(x)
- else
- fun_l11_n245(x)
- end
-end
-
-def fun_l10_n272(x)
- if (x < 1)
- fun_l11_n277(x)
- else
- fun_l11_n969(x)
- end
-end
-
-def fun_l10_n273(x)
- if (x < 1)
- fun_l11_n848(x)
- else
- fun_l11_n56(x)
- end
-end
-
-def fun_l10_n274(x)
- if (x < 1)
- fun_l11_n640(x)
- else
- fun_l11_n632(x)
- end
-end
-
-def fun_l10_n275(x)
- if (x < 1)
- fun_l11_n38(x)
- else
- fun_l11_n816(x)
- end
-end
-
-def fun_l10_n276(x)
- if (x < 1)
- fun_l11_n706(x)
- else
- fun_l11_n126(x)
- end
-end
-
-def fun_l10_n277(x)
- if (x < 1)
- fun_l11_n710(x)
- else
- fun_l11_n128(x)
- end
-end
-
-def fun_l10_n278(x)
- if (x < 1)
- fun_l11_n175(x)
- else
- fun_l11_n954(x)
- end
-end
-
-def fun_l10_n279(x)
- if (x < 1)
- fun_l11_n379(x)
- else
- fun_l11_n58(x)
- end
-end
-
-def fun_l10_n280(x)
- if (x < 1)
- fun_l11_n926(x)
- else
- fun_l11_n287(x)
- end
-end
-
-def fun_l10_n281(x)
- if (x < 1)
- fun_l11_n981(x)
- else
- fun_l11_n921(x)
- end
-end
-
-def fun_l10_n282(x)
- if (x < 1)
- fun_l11_n222(x)
- else
- fun_l11_n954(x)
- end
-end
-
-def fun_l10_n283(x)
- if (x < 1)
- fun_l11_n295(x)
- else
- fun_l11_n575(x)
- end
-end
-
-def fun_l10_n284(x)
- if (x < 1)
- fun_l11_n554(x)
- else
- fun_l11_n559(x)
- end
-end
-
-def fun_l10_n285(x)
- if (x < 1)
- fun_l11_n476(x)
- else
- fun_l11_n487(x)
- end
-end
-
-def fun_l10_n286(x)
- if (x < 1)
- fun_l11_n102(x)
- else
- fun_l11_n928(x)
- end
-end
-
-def fun_l10_n287(x)
- if (x < 1)
- fun_l11_n949(x)
- else
- fun_l11_n900(x)
- end
-end
-
-def fun_l10_n288(x)
- if (x < 1)
- fun_l11_n717(x)
- else
- fun_l11_n762(x)
- end
-end
-
-def fun_l10_n289(x)
- if (x < 1)
- fun_l11_n304(x)
- else
- fun_l11_n572(x)
- end
-end
-
-def fun_l10_n290(x)
- if (x < 1)
- fun_l11_n748(x)
- else
- fun_l11_n791(x)
- end
-end
-
-def fun_l10_n291(x)
- if (x < 1)
- fun_l11_n557(x)
- else
- fun_l11_n79(x)
- end
-end
-
-def fun_l10_n292(x)
- if (x < 1)
- fun_l11_n74(x)
- else
- fun_l11_n931(x)
- end
-end
-
-def fun_l10_n293(x)
- if (x < 1)
- fun_l11_n31(x)
- else
- fun_l11_n791(x)
- end
-end
-
-def fun_l10_n294(x)
- if (x < 1)
- fun_l11_n29(x)
- else
- fun_l11_n377(x)
- end
-end
-
-def fun_l10_n295(x)
- if (x < 1)
- fun_l11_n509(x)
- else
- fun_l11_n900(x)
- end
-end
-
-def fun_l10_n296(x)
- if (x < 1)
- fun_l11_n594(x)
- else
- fun_l11_n835(x)
- end
-end
-
-def fun_l10_n297(x)
- if (x < 1)
- fun_l11_n943(x)
- else
- fun_l11_n621(x)
- end
-end
-
-def fun_l10_n298(x)
- if (x < 1)
- fun_l11_n860(x)
- else
- fun_l11_n403(x)
- end
-end
-
-def fun_l10_n299(x)
- if (x < 1)
- fun_l11_n676(x)
- else
- fun_l11_n478(x)
- end
-end
-
-def fun_l10_n300(x)
- if (x < 1)
- fun_l11_n513(x)
- else
- fun_l11_n661(x)
- end
-end
-
-def fun_l10_n301(x)
- if (x < 1)
- fun_l11_n513(x)
- else
- fun_l11_n30(x)
- end
-end
-
-def fun_l10_n302(x)
- if (x < 1)
- fun_l11_n763(x)
- else
- fun_l11_n823(x)
- end
-end
-
-def fun_l10_n303(x)
- if (x < 1)
- fun_l11_n469(x)
- else
- fun_l11_n250(x)
- end
-end
-
-def fun_l10_n304(x)
- if (x < 1)
- fun_l11_n637(x)
- else
- fun_l11_n478(x)
- end
-end
-
-def fun_l10_n305(x)
- if (x < 1)
- fun_l11_n825(x)
- else
- fun_l11_n258(x)
- end
-end
-
-def fun_l10_n306(x)
- if (x < 1)
- fun_l11_n264(x)
- else
- fun_l11_n698(x)
- end
-end
-
-def fun_l10_n307(x)
- if (x < 1)
- fun_l11_n426(x)
- else
- fun_l11_n490(x)
- end
-end
-
-def fun_l10_n308(x)
- if (x < 1)
- fun_l11_n157(x)
- else
- fun_l11_n407(x)
- end
-end
-
-def fun_l10_n309(x)
- if (x < 1)
- fun_l11_n68(x)
- else
- fun_l11_n424(x)
- end
-end
-
-def fun_l10_n310(x)
- if (x < 1)
- fun_l11_n844(x)
- else
- fun_l11_n955(x)
- end
-end
-
-def fun_l10_n311(x)
- if (x < 1)
- fun_l11_n316(x)
- else
- fun_l11_n27(x)
- end
-end
-
-def fun_l10_n312(x)
- if (x < 1)
- fun_l11_n771(x)
- else
- fun_l11_n604(x)
- end
-end
-
-def fun_l10_n313(x)
- if (x < 1)
- fun_l11_n436(x)
- else
- fun_l11_n714(x)
- end
-end
-
-def fun_l10_n314(x)
- if (x < 1)
- fun_l11_n791(x)
- else
- fun_l11_n889(x)
- end
-end
-
-def fun_l10_n315(x)
- if (x < 1)
- fun_l11_n621(x)
- else
- fun_l11_n694(x)
- end
-end
-
-def fun_l10_n316(x)
- if (x < 1)
- fun_l11_n403(x)
- else
- fun_l11_n625(x)
- end
-end
-
-def fun_l10_n317(x)
- if (x < 1)
- fun_l11_n532(x)
- else
- fun_l11_n920(x)
- end
-end
-
-def fun_l10_n318(x)
- if (x < 1)
- fun_l11_n895(x)
- else
- fun_l11_n781(x)
- end
-end
-
-def fun_l10_n319(x)
- if (x < 1)
- fun_l11_n109(x)
- else
- fun_l11_n254(x)
- end
-end
-
-def fun_l10_n320(x)
- if (x < 1)
- fun_l11_n842(x)
- else
- fun_l11_n879(x)
- end
-end
-
-def fun_l10_n321(x)
- if (x < 1)
- fun_l11_n655(x)
- else
- fun_l11_n518(x)
- end
-end
-
-def fun_l10_n322(x)
- if (x < 1)
- fun_l11_n727(x)
- else
- fun_l11_n14(x)
- end
-end
-
-def fun_l10_n323(x)
- if (x < 1)
- fun_l11_n808(x)
- else
- fun_l11_n128(x)
- end
-end
-
-def fun_l10_n324(x)
- if (x < 1)
- fun_l11_n412(x)
- else
- fun_l11_n940(x)
- end
-end
-
-def fun_l10_n325(x)
- if (x < 1)
- fun_l11_n944(x)
- else
- fun_l11_n915(x)
- end
-end
-
-def fun_l10_n326(x)
- if (x < 1)
- fun_l11_n120(x)
- else
- fun_l11_n572(x)
- end
-end
-
-def fun_l10_n327(x)
- if (x < 1)
- fun_l11_n444(x)
- else
- fun_l11_n793(x)
- end
-end
-
-def fun_l10_n328(x)
- if (x < 1)
- fun_l11_n892(x)
- else
- fun_l11_n475(x)
- end
-end
-
-def fun_l10_n329(x)
- if (x < 1)
- fun_l11_n919(x)
- else
- fun_l11_n183(x)
- end
-end
-
-def fun_l10_n330(x)
- if (x < 1)
- fun_l11_n80(x)
- else
- fun_l11_n357(x)
- end
-end
-
-def fun_l10_n331(x)
- if (x < 1)
- fun_l11_n340(x)
- else
- fun_l11_n349(x)
- end
-end
-
-def fun_l10_n332(x)
- if (x < 1)
- fun_l11_n579(x)
- else
- fun_l11_n845(x)
- end
-end
-
-def fun_l10_n333(x)
- if (x < 1)
- fun_l11_n169(x)
- else
- fun_l11_n583(x)
- end
-end
-
-def fun_l10_n334(x)
- if (x < 1)
- fun_l11_n544(x)
- else
- fun_l11_n462(x)
- end
-end
-
-def fun_l10_n335(x)
- if (x < 1)
- fun_l11_n51(x)
- else
- fun_l11_n635(x)
- end
-end
-
-def fun_l10_n336(x)
- if (x < 1)
- fun_l11_n965(x)
- else
- fun_l11_n538(x)
- end
-end
-
-def fun_l10_n337(x)
- if (x < 1)
- fun_l11_n930(x)
- else
- fun_l11_n169(x)
- end
-end
-
-def fun_l10_n338(x)
- if (x < 1)
- fun_l11_n732(x)
- else
- fun_l11_n574(x)
- end
-end
-
-def fun_l10_n339(x)
- if (x < 1)
- fun_l11_n51(x)
- else
- fun_l11_n141(x)
- end
-end
-
-def fun_l10_n340(x)
- if (x < 1)
- fun_l11_n149(x)
- else
- fun_l11_n346(x)
- end
-end
-
-def fun_l10_n341(x)
- if (x < 1)
- fun_l11_n163(x)
- else
- fun_l11_n224(x)
- end
-end
-
-def fun_l10_n342(x)
- if (x < 1)
- fun_l11_n175(x)
- else
- fun_l11_n40(x)
- end
-end
-
-def fun_l10_n343(x)
- if (x < 1)
- fun_l11_n156(x)
- else
- fun_l11_n639(x)
- end
-end
-
-def fun_l10_n344(x)
- if (x < 1)
- fun_l11_n934(x)
- else
- fun_l11_n85(x)
- end
-end
-
-def fun_l10_n345(x)
- if (x < 1)
- fun_l11_n182(x)
- else
- fun_l11_n190(x)
- end
-end
-
-def fun_l10_n346(x)
- if (x < 1)
- fun_l11_n879(x)
- else
- fun_l11_n702(x)
- end
-end
-
-def fun_l10_n347(x)
- if (x < 1)
- fun_l11_n540(x)
- else
- fun_l11_n689(x)
- end
-end
-
-def fun_l10_n348(x)
- if (x < 1)
- fun_l11_n945(x)
- else
- fun_l11_n39(x)
- end
-end
-
-def fun_l10_n349(x)
- if (x < 1)
- fun_l11_n683(x)
- else
- fun_l11_n688(x)
- end
-end
-
-def fun_l10_n350(x)
- if (x < 1)
- fun_l11_n750(x)
- else
- fun_l11_n577(x)
- end
-end
-
-def fun_l10_n351(x)
- if (x < 1)
- fun_l11_n74(x)
- else
- fun_l11_n672(x)
- end
-end
-
-def fun_l10_n352(x)
- if (x < 1)
- fun_l11_n252(x)
- else
- fun_l11_n766(x)
- end
-end
-
-def fun_l10_n353(x)
- if (x < 1)
- fun_l11_n702(x)
- else
- fun_l11_n516(x)
- end
-end
-
-def fun_l10_n354(x)
- if (x < 1)
- fun_l11_n19(x)
- else
- fun_l11_n290(x)
- end
-end
-
-def fun_l10_n355(x)
- if (x < 1)
- fun_l11_n70(x)
- else
- fun_l11_n553(x)
- end
-end
-
-def fun_l10_n356(x)
- if (x < 1)
- fun_l11_n654(x)
- else
- fun_l11_n108(x)
- end
-end
-
-def fun_l10_n357(x)
- if (x < 1)
- fun_l11_n820(x)
- else
- fun_l11_n320(x)
- end
-end
-
-def fun_l10_n358(x)
- if (x < 1)
- fun_l11_n417(x)
- else
- fun_l11_n290(x)
- end
-end
-
-def fun_l10_n359(x)
- if (x < 1)
- fun_l11_n832(x)
- else
- fun_l11_n647(x)
- end
-end
-
-def fun_l10_n360(x)
- if (x < 1)
- fun_l11_n625(x)
- else
- fun_l11_n723(x)
- end
-end
-
-def fun_l10_n361(x)
- if (x < 1)
- fun_l11_n257(x)
- else
- fun_l11_n991(x)
- end
-end
-
-def fun_l10_n362(x)
- if (x < 1)
- fun_l11_n101(x)
- else
- fun_l11_n247(x)
- end
-end
-
-def fun_l10_n363(x)
- if (x < 1)
- fun_l11_n484(x)
- else
- fun_l11_n953(x)
- end
-end
-
-def fun_l10_n364(x)
- if (x < 1)
- fun_l11_n281(x)
- else
- fun_l11_n846(x)
- end
-end
-
-def fun_l10_n365(x)
- if (x < 1)
- fun_l11_n425(x)
- else
- fun_l11_n772(x)
- end
-end
-
-def fun_l10_n366(x)
- if (x < 1)
- fun_l11_n724(x)
- else
- fun_l11_n725(x)
- end
-end
-
-def fun_l10_n367(x)
- if (x < 1)
- fun_l11_n943(x)
- else
- fun_l11_n360(x)
- end
-end
-
-def fun_l10_n368(x)
- if (x < 1)
- fun_l11_n874(x)
- else
- fun_l11_n698(x)
- end
-end
-
-def fun_l10_n369(x)
- if (x < 1)
- fun_l11_n419(x)
- else
- fun_l11_n672(x)
- end
-end
-
-def fun_l10_n370(x)
- if (x < 1)
- fun_l11_n655(x)
- else
- fun_l11_n468(x)
- end
-end
-
-def fun_l10_n371(x)
- if (x < 1)
- fun_l11_n577(x)
- else
- fun_l11_n402(x)
- end
-end
-
-def fun_l10_n372(x)
- if (x < 1)
- fun_l11_n531(x)
- else
- fun_l11_n319(x)
- end
-end
-
-def fun_l10_n373(x)
- if (x < 1)
- fun_l11_n972(x)
- else
- fun_l11_n901(x)
- end
-end
-
-def fun_l10_n374(x)
- if (x < 1)
- fun_l11_n59(x)
- else
- fun_l11_n12(x)
- end
-end
-
-def fun_l10_n375(x)
- if (x < 1)
- fun_l11_n409(x)
- else
- fun_l11_n214(x)
- end
-end
-
-def fun_l10_n376(x)
- if (x < 1)
- fun_l11_n52(x)
- else
- fun_l11_n395(x)
- end
-end
-
-def fun_l10_n377(x)
- if (x < 1)
- fun_l11_n594(x)
- else
- fun_l11_n434(x)
- end
-end
-
-def fun_l10_n378(x)
- if (x < 1)
- fun_l11_n795(x)
- else
- fun_l11_n820(x)
- end
-end
-
-def fun_l10_n379(x)
- if (x < 1)
- fun_l11_n962(x)
- else
- fun_l11_n111(x)
- end
-end
-
-def fun_l10_n380(x)
- if (x < 1)
- fun_l11_n762(x)
- else
- fun_l11_n678(x)
- end
-end
-
-def fun_l10_n381(x)
- if (x < 1)
- fun_l11_n324(x)
- else
- fun_l11_n478(x)
- end
-end
-
-def fun_l10_n382(x)
- if (x < 1)
- fun_l11_n360(x)
- else
- fun_l11_n35(x)
- end
-end
-
-def fun_l10_n383(x)
- if (x < 1)
- fun_l11_n710(x)
- else
- fun_l11_n898(x)
- end
-end
-
-def fun_l10_n384(x)
- if (x < 1)
- fun_l11_n584(x)
- else
- fun_l11_n260(x)
- end
-end
-
-def fun_l10_n385(x)
- if (x < 1)
- fun_l11_n514(x)
- else
- fun_l11_n649(x)
- end
-end
-
-def fun_l10_n386(x)
- if (x < 1)
- fun_l11_n426(x)
- else
- fun_l11_n391(x)
- end
-end
-
-def fun_l10_n387(x)
- if (x < 1)
- fun_l11_n713(x)
- else
- fun_l11_n734(x)
- end
-end
-
-def fun_l10_n388(x)
- if (x < 1)
- fun_l11_n236(x)
- else
- fun_l11_n469(x)
- end
-end
-
-def fun_l10_n389(x)
- if (x < 1)
- fun_l11_n267(x)
- else
- fun_l11_n965(x)
- end
-end
-
-def fun_l10_n390(x)
- if (x < 1)
- fun_l11_n943(x)
- else
- fun_l11_n181(x)
- end
-end
-
-def fun_l10_n391(x)
- if (x < 1)
- fun_l11_n869(x)
- else
- fun_l11_n348(x)
- end
-end
-
-def fun_l10_n392(x)
- if (x < 1)
- fun_l11_n144(x)
- else
- fun_l11_n801(x)
- end
-end
-
-def fun_l10_n393(x)
- if (x < 1)
- fun_l11_n907(x)
- else
- fun_l11_n609(x)
- end
-end
-
-def fun_l10_n394(x)
- if (x < 1)
- fun_l11_n801(x)
- else
- fun_l11_n691(x)
- end
-end
-
-def fun_l10_n395(x)
- if (x < 1)
- fun_l11_n629(x)
- else
- fun_l11_n924(x)
- end
-end
-
-def fun_l10_n396(x)
- if (x < 1)
- fun_l11_n191(x)
- else
- fun_l11_n248(x)
- end
-end
-
-def fun_l10_n397(x)
- if (x < 1)
- fun_l11_n339(x)
- else
- fun_l11_n805(x)
- end
-end
-
-def fun_l10_n398(x)
- if (x < 1)
- fun_l11_n798(x)
- else
- fun_l11_n154(x)
- end
-end
-
-def fun_l10_n399(x)
- if (x < 1)
- fun_l11_n847(x)
- else
- fun_l11_n14(x)
- end
-end
-
-def fun_l10_n400(x)
- if (x < 1)
- fun_l11_n296(x)
- else
- fun_l11_n144(x)
- end
-end
-
-def fun_l10_n401(x)
- if (x < 1)
- fun_l11_n853(x)
- else
- fun_l11_n156(x)
- end
-end
-
-def fun_l10_n402(x)
- if (x < 1)
- fun_l11_n54(x)
- else
- fun_l11_n944(x)
- end
-end
-
-def fun_l10_n403(x)
- if (x < 1)
- fun_l11_n617(x)
- else
- fun_l11_n324(x)
- end
-end
-
-def fun_l10_n404(x)
- if (x < 1)
- fun_l11_n962(x)
- else
- fun_l11_n139(x)
- end
-end
-
-def fun_l10_n405(x)
- if (x < 1)
- fun_l11_n466(x)
- else
- fun_l11_n388(x)
- end
-end
-
-def fun_l10_n406(x)
- if (x < 1)
- fun_l11_n914(x)
- else
- fun_l11_n847(x)
- end
-end
-
-def fun_l10_n407(x)
- if (x < 1)
- fun_l11_n741(x)
- else
- fun_l11_n757(x)
- end
-end
-
-def fun_l10_n408(x)
- if (x < 1)
- fun_l11_n36(x)
- else
- fun_l11_n312(x)
- end
-end
-
-def fun_l10_n409(x)
- if (x < 1)
- fun_l11_n203(x)
- else
- fun_l11_n523(x)
- end
-end
-
-def fun_l10_n410(x)
- if (x < 1)
- fun_l11_n187(x)
- else
- fun_l11_n291(x)
- end
-end
-
-def fun_l10_n411(x)
- if (x < 1)
- fun_l11_n13(x)
- else
- fun_l11_n107(x)
- end
-end
-
-def fun_l10_n412(x)
- if (x < 1)
- fun_l11_n960(x)
- else
- fun_l11_n565(x)
- end
-end
-
-def fun_l10_n413(x)
- if (x < 1)
- fun_l11_n549(x)
- else
- fun_l11_n885(x)
- end
-end
-
-def fun_l10_n414(x)
- if (x < 1)
- fun_l11_n559(x)
- else
- fun_l11_n612(x)
- end
-end
-
-def fun_l10_n415(x)
- if (x < 1)
- fun_l11_n18(x)
- else
- fun_l11_n167(x)
- end
-end
-
-def fun_l10_n416(x)
- if (x < 1)
- fun_l11_n125(x)
- else
- fun_l11_n206(x)
- end
-end
-
-def fun_l10_n417(x)
- if (x < 1)
- fun_l11_n980(x)
- else
- fun_l11_n497(x)
- end
-end
-
-def fun_l10_n418(x)
- if (x < 1)
- fun_l11_n703(x)
- else
- fun_l11_n49(x)
- end
-end
-
-def fun_l10_n419(x)
- if (x < 1)
- fun_l11_n690(x)
- else
- fun_l11_n63(x)
- end
-end
-
-def fun_l10_n420(x)
- if (x < 1)
- fun_l11_n219(x)
- else
- fun_l11_n814(x)
- end
-end
-
-def fun_l10_n421(x)
- if (x < 1)
- fun_l11_n864(x)
- else
- fun_l11_n963(x)
- end
-end
-
-def fun_l10_n422(x)
- if (x < 1)
- fun_l11_n672(x)
- else
- fun_l11_n87(x)
- end
-end
-
-def fun_l10_n423(x)
- if (x < 1)
- fun_l11_n41(x)
- else
- fun_l11_n461(x)
- end
-end
-
-def fun_l10_n424(x)
- if (x < 1)
- fun_l11_n334(x)
- else
- fun_l11_n283(x)
- end
-end
-
-def fun_l10_n425(x)
- if (x < 1)
- fun_l11_n369(x)
- else
- fun_l11_n269(x)
- end
-end
-
-def fun_l10_n426(x)
- if (x < 1)
- fun_l11_n832(x)
- else
- fun_l11_n625(x)
- end
-end
-
-def fun_l10_n427(x)
- if (x < 1)
- fun_l11_n272(x)
- else
- fun_l11_n634(x)
- end
-end
-
-def fun_l10_n428(x)
- if (x < 1)
- fun_l11_n122(x)
- else
- fun_l11_n53(x)
- end
-end
-
-def fun_l10_n429(x)
- if (x < 1)
- fun_l11_n895(x)
- else
- fun_l11_n292(x)
- end
-end
-
-def fun_l10_n430(x)
- if (x < 1)
- fun_l11_n460(x)
- else
- fun_l11_n177(x)
- end
-end
-
-def fun_l10_n431(x)
- if (x < 1)
- fun_l11_n238(x)
- else
- fun_l11_n938(x)
- end
-end
-
-def fun_l10_n432(x)
- if (x < 1)
- fun_l11_n302(x)
- else
- fun_l11_n492(x)
- end
-end
-
-def fun_l10_n433(x)
- if (x < 1)
- fun_l11_n307(x)
- else
- fun_l11_n876(x)
- end
-end
-
-def fun_l10_n434(x)
- if (x < 1)
- fun_l11_n64(x)
- else
- fun_l11_n892(x)
- end
-end
-
-def fun_l10_n435(x)
- if (x < 1)
- fun_l11_n940(x)
- else
- fun_l11_n718(x)
- end
-end
-
-def fun_l10_n436(x)
- if (x < 1)
- fun_l11_n988(x)
- else
- fun_l11_n216(x)
- end
-end
-
-def fun_l10_n437(x)
- if (x < 1)
- fun_l11_n282(x)
- else
- fun_l11_n168(x)
- end
-end
-
-def fun_l10_n438(x)
- if (x < 1)
- fun_l11_n529(x)
- else
- fun_l11_n66(x)
- end
-end
-
-def fun_l10_n439(x)
- if (x < 1)
- fun_l11_n286(x)
- else
- fun_l11_n134(x)
- end
-end
-
-def fun_l10_n440(x)
- if (x < 1)
- fun_l11_n454(x)
- else
- fun_l11_n873(x)
- end
-end
-
-def fun_l10_n441(x)
- if (x < 1)
- fun_l11_n871(x)
- else
- fun_l11_n13(x)
- end
-end
-
-def fun_l10_n442(x)
- if (x < 1)
- fun_l11_n314(x)
- else
- fun_l11_n685(x)
- end
-end
-
-def fun_l10_n443(x)
- if (x < 1)
- fun_l11_n752(x)
- else
- fun_l11_n162(x)
- end
-end
-
-def fun_l10_n444(x)
- if (x < 1)
- fun_l11_n686(x)
- else
- fun_l11_n585(x)
- end
-end
-
-def fun_l10_n445(x)
- if (x < 1)
- fun_l11_n42(x)
- else
- fun_l11_n932(x)
- end
-end
-
-def fun_l10_n446(x)
- if (x < 1)
- fun_l11_n433(x)
- else
- fun_l11_n241(x)
- end
-end
-
-def fun_l10_n447(x)
- if (x < 1)
- fun_l11_n99(x)
- else
- fun_l11_n563(x)
- end
-end
-
-def fun_l10_n448(x)
- if (x < 1)
- fun_l11_n463(x)
- else
- fun_l11_n395(x)
- end
-end
-
-def fun_l10_n449(x)
- if (x < 1)
- fun_l11_n393(x)
- else
- fun_l11_n151(x)
- end
-end
-
-def fun_l10_n450(x)
- if (x < 1)
- fun_l11_n255(x)
- else
- fun_l11_n834(x)
- end
-end
-
-def fun_l10_n451(x)
- if (x < 1)
- fun_l11_n195(x)
- else
- fun_l11_n0(x)
- end
-end
-
-def fun_l10_n452(x)
- if (x < 1)
- fun_l11_n372(x)
- else
- fun_l11_n228(x)
- end
-end
-
-def fun_l10_n453(x)
- if (x < 1)
- fun_l11_n526(x)
- else
- fun_l11_n54(x)
- end
-end
-
-def fun_l10_n454(x)
- if (x < 1)
- fun_l11_n594(x)
- else
- fun_l11_n116(x)
- end
-end
-
-def fun_l10_n455(x)
- if (x < 1)
- fun_l11_n25(x)
- else
- fun_l11_n930(x)
- end
-end
-
-def fun_l10_n456(x)
- if (x < 1)
- fun_l11_n83(x)
- else
- fun_l11_n30(x)
- end
-end
-
-def fun_l10_n457(x)
- if (x < 1)
- fun_l11_n644(x)
- else
- fun_l11_n837(x)
- end
-end
-
-def fun_l10_n458(x)
- if (x < 1)
- fun_l11_n311(x)
- else
- fun_l11_n86(x)
- end
-end
-
-def fun_l10_n459(x)
- if (x < 1)
- fun_l11_n139(x)
- else
- fun_l11_n735(x)
- end
-end
-
-def fun_l10_n460(x)
- if (x < 1)
- fun_l11_n431(x)
- else
- fun_l11_n808(x)
- end
-end
-
-def fun_l10_n461(x)
- if (x < 1)
- fun_l11_n488(x)
- else
- fun_l11_n439(x)
- end
-end
-
-def fun_l10_n462(x)
- if (x < 1)
- fun_l11_n448(x)
- else
- fun_l11_n882(x)
- end
-end
-
-def fun_l10_n463(x)
- if (x < 1)
- fun_l11_n362(x)
- else
- fun_l11_n875(x)
- end
-end
-
-def fun_l10_n464(x)
- if (x < 1)
- fun_l11_n88(x)
- else
- fun_l11_n842(x)
- end
-end
-
-def fun_l10_n465(x)
- if (x < 1)
- fun_l11_n651(x)
- else
- fun_l11_n368(x)
- end
-end
-
-def fun_l10_n466(x)
- if (x < 1)
- fun_l11_n121(x)
- else
- fun_l11_n3(x)
- end
-end
-
-def fun_l10_n467(x)
- if (x < 1)
- fun_l11_n654(x)
- else
- fun_l11_n260(x)
- end
-end
-
-def fun_l10_n468(x)
- if (x < 1)
- fun_l11_n765(x)
- else
- fun_l11_n604(x)
- end
-end
-
-def fun_l10_n469(x)
- if (x < 1)
- fun_l11_n881(x)
- else
- fun_l11_n567(x)
- end
-end
-
-def fun_l10_n470(x)
- if (x < 1)
- fun_l11_n41(x)
- else
- fun_l11_n92(x)
- end
-end
-
-def fun_l10_n471(x)
- if (x < 1)
- fun_l11_n905(x)
- else
- fun_l11_n731(x)
- end
-end
-
-def fun_l10_n472(x)
- if (x < 1)
- fun_l11_n797(x)
- else
- fun_l11_n878(x)
- end
-end
-
-def fun_l10_n473(x)
- if (x < 1)
- fun_l11_n487(x)
- else
- fun_l11_n951(x)
- end
-end
-
-def fun_l10_n474(x)
- if (x < 1)
- fun_l11_n998(x)
- else
- fun_l11_n900(x)
- end
-end
-
-def fun_l10_n475(x)
- if (x < 1)
- fun_l11_n451(x)
- else
- fun_l11_n780(x)
- end
-end
-
-def fun_l10_n476(x)
- if (x < 1)
- fun_l11_n427(x)
- else
- fun_l11_n760(x)
- end
-end
-
-def fun_l10_n477(x)
- if (x < 1)
- fun_l11_n758(x)
- else
- fun_l11_n177(x)
- end
-end
-
-def fun_l10_n478(x)
- if (x < 1)
- fun_l11_n359(x)
- else
- fun_l11_n236(x)
- end
-end
-
-def fun_l10_n479(x)
- if (x < 1)
- fun_l11_n70(x)
- else
- fun_l11_n49(x)
- end
-end
-
-def fun_l10_n480(x)
- if (x < 1)
- fun_l11_n338(x)
- else
- fun_l11_n714(x)
- end
-end
-
-def fun_l10_n481(x)
- if (x < 1)
- fun_l11_n6(x)
- else
- fun_l11_n194(x)
- end
-end
-
-def fun_l10_n482(x)
- if (x < 1)
- fun_l11_n801(x)
- else
- fun_l11_n591(x)
- end
-end
-
-def fun_l10_n483(x)
- if (x < 1)
- fun_l11_n362(x)
- else
- fun_l11_n687(x)
- end
-end
-
-def fun_l10_n484(x)
- if (x < 1)
- fun_l11_n659(x)
- else
- fun_l11_n661(x)
- end
-end
-
-def fun_l10_n485(x)
- if (x < 1)
- fun_l11_n903(x)
- else
- fun_l11_n419(x)
- end
-end
-
-def fun_l10_n486(x)
- if (x < 1)
- fun_l11_n279(x)
- else
- fun_l11_n995(x)
- end
-end
-
-def fun_l10_n487(x)
- if (x < 1)
- fun_l11_n529(x)
- else
- fun_l11_n373(x)
- end
-end
-
-def fun_l10_n488(x)
- if (x < 1)
- fun_l11_n198(x)
- else
- fun_l11_n899(x)
- end
-end
-
-def fun_l10_n489(x)
- if (x < 1)
- fun_l11_n174(x)
- else
- fun_l11_n485(x)
- end
-end
-
-def fun_l10_n490(x)
- if (x < 1)
- fun_l11_n19(x)
- else
- fun_l11_n322(x)
- end
-end
-
-def fun_l10_n491(x)
- if (x < 1)
- fun_l11_n0(x)
- else
- fun_l11_n855(x)
- end
-end
-
-def fun_l10_n492(x)
- if (x < 1)
- fun_l11_n126(x)
- else
- fun_l11_n986(x)
- end
-end
-
-def fun_l10_n493(x)
- if (x < 1)
- fun_l11_n263(x)
- else
- fun_l11_n374(x)
- end
-end
-
-def fun_l10_n494(x)
- if (x < 1)
- fun_l11_n21(x)
- else
- fun_l11_n749(x)
- end
-end
-
-def fun_l10_n495(x)
- if (x < 1)
- fun_l11_n618(x)
- else
- fun_l11_n955(x)
- end
-end
-
-def fun_l10_n496(x)
- if (x < 1)
- fun_l11_n157(x)
- else
- fun_l11_n230(x)
- end
-end
-
-def fun_l10_n497(x)
- if (x < 1)
- fun_l11_n387(x)
- else
- fun_l11_n841(x)
- end
-end
-
-def fun_l10_n498(x)
- if (x < 1)
- fun_l11_n496(x)
- else
- fun_l11_n30(x)
- end
-end
-
-def fun_l10_n499(x)
- if (x < 1)
- fun_l11_n581(x)
- else
- fun_l11_n821(x)
- end
-end
-
-def fun_l10_n500(x)
- if (x < 1)
- fun_l11_n202(x)
- else
- fun_l11_n26(x)
- end
-end
-
-def fun_l10_n501(x)
- if (x < 1)
- fun_l11_n273(x)
- else
- fun_l11_n294(x)
- end
-end
-
-def fun_l10_n502(x)
- if (x < 1)
- fun_l11_n604(x)
- else
- fun_l11_n261(x)
- end
-end
-
-def fun_l10_n503(x)
- if (x < 1)
- fun_l11_n632(x)
- else
- fun_l11_n340(x)
- end
-end
-
-def fun_l10_n504(x)
- if (x < 1)
- fun_l11_n162(x)
- else
- fun_l11_n483(x)
- end
-end
-
-def fun_l10_n505(x)
- if (x < 1)
- fun_l11_n824(x)
- else
- fun_l11_n747(x)
- end
-end
-
-def fun_l10_n506(x)
- if (x < 1)
- fun_l11_n575(x)
- else
- fun_l11_n932(x)
- end
-end
-
-def fun_l10_n507(x)
- if (x < 1)
- fun_l11_n645(x)
- else
- fun_l11_n486(x)
- end
-end
-
-def fun_l10_n508(x)
- if (x < 1)
- fun_l11_n876(x)
- else
- fun_l11_n640(x)
- end
-end
-
-def fun_l10_n509(x)
- if (x < 1)
- fun_l11_n280(x)
- else
- fun_l11_n116(x)
- end
-end
-
-def fun_l10_n510(x)
- if (x < 1)
- fun_l11_n570(x)
- else
- fun_l11_n640(x)
- end
-end
-
-def fun_l10_n511(x)
- if (x < 1)
- fun_l11_n576(x)
- else
- fun_l11_n124(x)
- end
-end
-
-def fun_l10_n512(x)
- if (x < 1)
- fun_l11_n328(x)
- else
- fun_l11_n880(x)
- end
-end
-
-def fun_l10_n513(x)
- if (x < 1)
- fun_l11_n185(x)
- else
- fun_l11_n977(x)
- end
-end
-
-def fun_l10_n514(x)
- if (x < 1)
- fun_l11_n560(x)
- else
- fun_l11_n825(x)
- end
-end
-
-def fun_l10_n515(x)
- if (x < 1)
- fun_l11_n28(x)
- else
- fun_l11_n908(x)
- end
-end
-
-def fun_l10_n516(x)
- if (x < 1)
- fun_l11_n902(x)
- else
- fun_l11_n882(x)
- end
-end
-
-def fun_l10_n517(x)
- if (x < 1)
- fun_l11_n429(x)
- else
- fun_l11_n824(x)
- end
-end
-
-def fun_l10_n518(x)
- if (x < 1)
- fun_l11_n706(x)
- else
- fun_l11_n149(x)
- end
-end
-
-def fun_l10_n519(x)
- if (x < 1)
- fun_l11_n837(x)
- else
- fun_l11_n573(x)
- end
-end
-
-def fun_l10_n520(x)
- if (x < 1)
- fun_l11_n934(x)
- else
- fun_l11_n504(x)
- end
-end
-
-def fun_l10_n521(x)
- if (x < 1)
- fun_l11_n254(x)
- else
- fun_l11_n551(x)
- end
-end
-
-def fun_l10_n522(x)
- if (x < 1)
- fun_l11_n53(x)
- else
- fun_l11_n297(x)
- end
-end
-
-def fun_l10_n523(x)
- if (x < 1)
- fun_l11_n648(x)
- else
- fun_l11_n695(x)
- end
-end
-
-def fun_l10_n524(x)
- if (x < 1)
- fun_l11_n737(x)
- else
- fun_l11_n636(x)
- end
-end
-
-def fun_l10_n525(x)
- if (x < 1)
- fun_l11_n249(x)
- else
- fun_l11_n757(x)
- end
-end
-
-def fun_l10_n526(x)
- if (x < 1)
- fun_l11_n42(x)
- else
- fun_l11_n199(x)
- end
-end
-
-def fun_l10_n527(x)
- if (x < 1)
- fun_l11_n783(x)
- else
- fun_l11_n856(x)
- end
-end
-
-def fun_l10_n528(x)
- if (x < 1)
- fun_l11_n708(x)
- else
- fun_l11_n550(x)
- end
-end
-
-def fun_l10_n529(x)
- if (x < 1)
- fun_l11_n749(x)
- else
- fun_l11_n56(x)
- end
-end
-
-def fun_l10_n530(x)
- if (x < 1)
- fun_l11_n838(x)
- else
- fun_l11_n57(x)
- end
-end
-
-def fun_l10_n531(x)
- if (x < 1)
- fun_l11_n293(x)
- else
- fun_l11_n938(x)
- end
-end
-
-def fun_l10_n532(x)
- if (x < 1)
- fun_l11_n245(x)
- else
- fun_l11_n367(x)
- end
-end
-
-def fun_l10_n533(x)
- if (x < 1)
- fun_l11_n255(x)
- else
- fun_l11_n234(x)
- end
-end
-
-def fun_l10_n534(x)
- if (x < 1)
- fun_l11_n315(x)
- else
- fun_l11_n982(x)
- end
-end
-
-def fun_l10_n535(x)
- if (x < 1)
- fun_l11_n841(x)
- else
- fun_l11_n112(x)
- end
-end
-
-def fun_l10_n536(x)
- if (x < 1)
- fun_l11_n481(x)
- else
- fun_l11_n622(x)
- end
-end
-
-def fun_l10_n537(x)
- if (x < 1)
- fun_l11_n666(x)
- else
- fun_l11_n775(x)
- end
-end
-
-def fun_l10_n538(x)
- if (x < 1)
- fun_l11_n409(x)
- else
- fun_l11_n733(x)
- end
-end
-
-def fun_l10_n539(x)
- if (x < 1)
- fun_l11_n633(x)
- else
- fun_l11_n122(x)
- end
-end
-
-def fun_l10_n540(x)
- if (x < 1)
- fun_l11_n453(x)
- else
- fun_l11_n938(x)
- end
-end
-
-def fun_l10_n541(x)
- if (x < 1)
- fun_l11_n55(x)
- else
- fun_l11_n344(x)
- end
-end
-
-def fun_l10_n542(x)
- if (x < 1)
- fun_l11_n167(x)
- else
- fun_l11_n908(x)
- end
-end
-
-def fun_l10_n543(x)
- if (x < 1)
- fun_l11_n318(x)
- else
- fun_l11_n893(x)
- end
-end
-
-def fun_l10_n544(x)
- if (x < 1)
- fun_l11_n683(x)
- else
- fun_l11_n109(x)
- end
-end
-
-def fun_l10_n545(x)
- if (x < 1)
- fun_l11_n728(x)
- else
- fun_l11_n432(x)
- end
-end
-
-def fun_l10_n546(x)
- if (x < 1)
- fun_l11_n343(x)
- else
- fun_l11_n674(x)
- end
-end
-
-def fun_l10_n547(x)
- if (x < 1)
- fun_l11_n374(x)
- else
- fun_l11_n293(x)
- end
-end
-
-def fun_l10_n548(x)
- if (x < 1)
- fun_l11_n661(x)
- else
- fun_l11_n619(x)
- end
-end
-
-def fun_l10_n549(x)
- if (x < 1)
- fun_l11_n984(x)
- else
- fun_l11_n261(x)
- end
-end
-
-def fun_l10_n550(x)
- if (x < 1)
- fun_l11_n729(x)
- else
- fun_l11_n469(x)
- end
-end
-
-def fun_l10_n551(x)
- if (x < 1)
- fun_l11_n829(x)
- else
- fun_l11_n30(x)
- end
-end
-
-def fun_l10_n552(x)
- if (x < 1)
- fun_l11_n457(x)
- else
- fun_l11_n440(x)
- end
-end
-
-def fun_l10_n553(x)
- if (x < 1)
- fun_l11_n128(x)
- else
- fun_l11_n790(x)
- end
-end
-
-def fun_l10_n554(x)
- if (x < 1)
- fun_l11_n135(x)
- else
- fun_l11_n118(x)
- end
-end
-
-def fun_l10_n555(x)
- if (x < 1)
- fun_l11_n558(x)
- else
- fun_l11_n415(x)
- end
-end
-
-def fun_l10_n556(x)
- if (x < 1)
- fun_l11_n388(x)
- else
- fun_l11_n102(x)
- end
-end
-
-def fun_l10_n557(x)
- if (x < 1)
- fun_l11_n575(x)
- else
- fun_l11_n877(x)
- end
-end
-
-def fun_l10_n558(x)
- if (x < 1)
- fun_l11_n266(x)
- else
- fun_l11_n216(x)
- end
-end
-
-def fun_l10_n559(x)
- if (x < 1)
- fun_l11_n681(x)
- else
- fun_l11_n259(x)
- end
-end
-
-def fun_l10_n560(x)
- if (x < 1)
- fun_l11_n922(x)
- else
- fun_l11_n828(x)
- end
-end
-
-def fun_l10_n561(x)
- if (x < 1)
- fun_l11_n135(x)
- else
- fun_l11_n971(x)
- end
-end
-
-def fun_l10_n562(x)
- if (x < 1)
- fun_l11_n940(x)
- else
- fun_l11_n266(x)
- end
-end
-
-def fun_l10_n563(x)
- if (x < 1)
- fun_l11_n291(x)
- else
- fun_l11_n587(x)
- end
-end
-
-def fun_l10_n564(x)
- if (x < 1)
- fun_l11_n143(x)
- else
- fun_l11_n289(x)
- end
-end
-
-def fun_l10_n565(x)
- if (x < 1)
- fun_l11_n947(x)
- else
- fun_l11_n462(x)
- end
-end
-
-def fun_l10_n566(x)
- if (x < 1)
- fun_l11_n307(x)
- else
- fun_l11_n904(x)
- end
-end
-
-def fun_l10_n567(x)
- if (x < 1)
- fun_l11_n945(x)
- else
- fun_l11_n814(x)
- end
-end
-
-def fun_l10_n568(x)
- if (x < 1)
- fun_l11_n689(x)
- else
- fun_l11_n61(x)
- end
-end
-
-def fun_l10_n569(x)
- if (x < 1)
- fun_l11_n446(x)
- else
- fun_l11_n305(x)
- end
-end
-
-def fun_l10_n570(x)
- if (x < 1)
- fun_l11_n209(x)
- else
- fun_l11_n768(x)
- end
-end
-
-def fun_l10_n571(x)
- if (x < 1)
- fun_l11_n904(x)
- else
- fun_l11_n736(x)
- end
-end
-
-def fun_l10_n572(x)
- if (x < 1)
- fun_l11_n87(x)
- else
- fun_l11_n474(x)
- end
-end
-
-def fun_l10_n573(x)
- if (x < 1)
- fun_l11_n886(x)
- else
- fun_l11_n75(x)
- end
-end
-
-def fun_l10_n574(x)
- if (x < 1)
- fun_l11_n761(x)
- else
- fun_l11_n662(x)
- end
-end
-
-def fun_l10_n575(x)
- if (x < 1)
- fun_l11_n255(x)
- else
- fun_l11_n321(x)
- end
-end
-
-def fun_l10_n576(x)
- if (x < 1)
- fun_l11_n154(x)
- else
- fun_l11_n356(x)
- end
-end
-
-def fun_l10_n577(x)
- if (x < 1)
- fun_l11_n802(x)
- else
- fun_l11_n912(x)
- end
-end
-
-def fun_l10_n578(x)
- if (x < 1)
- fun_l11_n709(x)
- else
- fun_l11_n66(x)
- end
-end
-
-def fun_l10_n579(x)
- if (x < 1)
- fun_l11_n994(x)
- else
- fun_l11_n424(x)
- end
-end
-
-def fun_l10_n580(x)
- if (x < 1)
- fun_l11_n520(x)
- else
- fun_l11_n551(x)
- end
-end
-
-def fun_l10_n581(x)
- if (x < 1)
- fun_l11_n386(x)
- else
- fun_l11_n615(x)
- end
-end
-
-def fun_l10_n582(x)
- if (x < 1)
- fun_l11_n125(x)
- else
- fun_l11_n667(x)
- end
-end
-
-def fun_l10_n583(x)
- if (x < 1)
- fun_l11_n829(x)
- else
- fun_l11_n802(x)
- end
-end
-
-def fun_l10_n584(x)
- if (x < 1)
- fun_l11_n649(x)
- else
- fun_l11_n39(x)
- end
-end
-
-def fun_l10_n585(x)
- if (x < 1)
- fun_l11_n454(x)
- else
- fun_l11_n541(x)
- end
-end
-
-def fun_l10_n586(x)
- if (x < 1)
- fun_l11_n281(x)
- else
- fun_l11_n4(x)
- end
-end
-
-def fun_l10_n587(x)
- if (x < 1)
- fun_l11_n382(x)
- else
- fun_l11_n656(x)
- end
-end
-
-def fun_l10_n588(x)
- if (x < 1)
- fun_l11_n177(x)
- else
- fun_l11_n38(x)
- end
-end
-
-def fun_l10_n589(x)
- if (x < 1)
- fun_l11_n555(x)
- else
- fun_l11_n557(x)
- end
-end
-
-def fun_l10_n590(x)
- if (x < 1)
- fun_l11_n999(x)
- else
- fun_l11_n645(x)
- end
-end
-
-def fun_l10_n591(x)
- if (x < 1)
- fun_l11_n714(x)
- else
- fun_l11_n872(x)
- end
-end
-
-def fun_l10_n592(x)
- if (x < 1)
- fun_l11_n779(x)
- else
- fun_l11_n524(x)
- end
-end
-
-def fun_l10_n593(x)
- if (x < 1)
- fun_l11_n557(x)
- else
- fun_l11_n906(x)
- end
-end
-
-def fun_l10_n594(x)
- if (x < 1)
- fun_l11_n379(x)
- else
- fun_l11_n550(x)
- end
-end
-
-def fun_l10_n595(x)
- if (x < 1)
- fun_l11_n138(x)
- else
- fun_l11_n785(x)
- end
-end
-
-def fun_l10_n596(x)
- if (x < 1)
- fun_l11_n486(x)
- else
- fun_l11_n381(x)
- end
-end
-
-def fun_l10_n597(x)
- if (x < 1)
- fun_l11_n374(x)
- else
- fun_l11_n477(x)
- end
-end
-
-def fun_l10_n598(x)
- if (x < 1)
- fun_l11_n113(x)
- else
- fun_l11_n455(x)
- end
-end
-
-def fun_l10_n599(x)
- if (x < 1)
- fun_l11_n31(x)
- else
- fun_l11_n983(x)
- end
-end
-
-def fun_l10_n600(x)
- if (x < 1)
- fun_l11_n758(x)
- else
- fun_l11_n187(x)
- end
-end
-
-def fun_l10_n601(x)
- if (x < 1)
- fun_l11_n198(x)
- else
- fun_l11_n436(x)
- end
-end
-
-def fun_l10_n602(x)
- if (x < 1)
- fun_l11_n207(x)
- else
- fun_l11_n86(x)
- end
-end
-
-def fun_l10_n603(x)
- if (x < 1)
- fun_l11_n827(x)
- else
- fun_l11_n267(x)
- end
-end
-
-def fun_l10_n604(x)
- if (x < 1)
- fun_l11_n760(x)
- else
- fun_l11_n707(x)
- end
-end
-
-def fun_l10_n605(x)
- if (x < 1)
- fun_l11_n791(x)
- else
- fun_l11_n249(x)
- end
-end
-
-def fun_l10_n606(x)
- if (x < 1)
- fun_l11_n634(x)
- else
- fun_l11_n607(x)
- end
-end
-
-def fun_l10_n607(x)
- if (x < 1)
- fun_l11_n605(x)
- else
- fun_l11_n698(x)
- end
-end
-
-def fun_l10_n608(x)
- if (x < 1)
- fun_l11_n401(x)
- else
- fun_l11_n316(x)
- end
-end
-
-def fun_l10_n609(x)
- if (x < 1)
- fun_l11_n928(x)
- else
- fun_l11_n313(x)
- end
-end
-
-def fun_l10_n610(x)
- if (x < 1)
- fun_l11_n601(x)
- else
- fun_l11_n278(x)
- end
-end
-
-def fun_l10_n611(x)
- if (x < 1)
- fun_l11_n554(x)
- else
- fun_l11_n584(x)
- end
-end
-
-def fun_l10_n612(x)
- if (x < 1)
- fun_l11_n906(x)
- else
- fun_l11_n58(x)
- end
-end
-
-def fun_l10_n613(x)
- if (x < 1)
- fun_l11_n85(x)
- else
- fun_l11_n631(x)
- end
-end
-
-def fun_l10_n614(x)
- if (x < 1)
- fun_l11_n221(x)
- else
- fun_l11_n85(x)
- end
-end
-
-def fun_l10_n615(x)
- if (x < 1)
- fun_l11_n88(x)
- else
- fun_l11_n367(x)
- end
-end
-
-def fun_l10_n616(x)
- if (x < 1)
- fun_l11_n693(x)
- else
- fun_l11_n385(x)
- end
-end
-
-def fun_l10_n617(x)
- if (x < 1)
- fun_l11_n18(x)
- else
- fun_l11_n526(x)
- end
-end
-
-def fun_l10_n618(x)
- if (x < 1)
- fun_l11_n307(x)
- else
- fun_l11_n303(x)
- end
-end
-
-def fun_l10_n619(x)
- if (x < 1)
- fun_l11_n972(x)
- else
- fun_l11_n246(x)
- end
-end
-
-def fun_l10_n620(x)
- if (x < 1)
- fun_l11_n185(x)
- else
- fun_l11_n512(x)
- end
-end
-
-def fun_l10_n621(x)
- if (x < 1)
- fun_l11_n87(x)
- else
- fun_l11_n131(x)
- end
-end
-
-def fun_l10_n622(x)
- if (x < 1)
- fun_l11_n617(x)
- else
- fun_l11_n869(x)
- end
-end
-
-def fun_l10_n623(x)
- if (x < 1)
- fun_l11_n514(x)
- else
- fun_l11_n824(x)
- end
-end
-
-def fun_l10_n624(x)
- if (x < 1)
- fun_l11_n551(x)
- else
- fun_l11_n430(x)
- end
-end
-
-def fun_l10_n625(x)
- if (x < 1)
- fun_l11_n266(x)
- else
- fun_l11_n826(x)
- end
-end
-
-def fun_l10_n626(x)
- if (x < 1)
- fun_l11_n90(x)
- else
- fun_l11_n866(x)
- end
-end
-
-def fun_l10_n627(x)
- if (x < 1)
- fun_l11_n34(x)
- else
- fun_l11_n694(x)
- end
-end
-
-def fun_l10_n628(x)
- if (x < 1)
- fun_l11_n455(x)
- else
- fun_l11_n990(x)
- end
-end
-
-def fun_l10_n629(x)
- if (x < 1)
- fun_l11_n573(x)
- else
- fun_l11_n874(x)
- end
-end
-
-def fun_l10_n630(x)
- if (x < 1)
- fun_l11_n836(x)
- else
- fun_l11_n87(x)
- end
-end
-
-def fun_l10_n631(x)
- if (x < 1)
- fun_l11_n234(x)
- else
- fun_l11_n389(x)
- end
-end
-
-def fun_l10_n632(x)
- if (x < 1)
- fun_l11_n647(x)
- else
- fun_l11_n655(x)
- end
-end
-
-def fun_l10_n633(x)
- if (x < 1)
- fun_l11_n649(x)
- else
- fun_l11_n426(x)
- end
-end
-
-def fun_l10_n634(x)
- if (x < 1)
- fun_l11_n613(x)
- else
- fun_l11_n10(x)
- end
-end
-
-def fun_l10_n635(x)
- if (x < 1)
- fun_l11_n315(x)
- else
- fun_l11_n419(x)
- end
-end
-
-def fun_l10_n636(x)
- if (x < 1)
- fun_l11_n575(x)
- else
- fun_l11_n29(x)
- end
-end
-
-def fun_l10_n637(x)
- if (x < 1)
- fun_l11_n75(x)
- else
- fun_l11_n710(x)
- end
-end
-
-def fun_l10_n638(x)
- if (x < 1)
- fun_l11_n42(x)
- else
- fun_l11_n45(x)
- end
-end
-
-def fun_l10_n639(x)
- if (x < 1)
- fun_l11_n629(x)
- else
- fun_l11_n850(x)
- end
-end
-
-def fun_l10_n640(x)
- if (x < 1)
- fun_l11_n491(x)
- else
- fun_l11_n708(x)
- end
-end
-
-def fun_l10_n641(x)
- if (x < 1)
- fun_l11_n673(x)
- else
- fun_l11_n722(x)
- end
-end
-
-def fun_l10_n642(x)
- if (x < 1)
- fun_l11_n922(x)
- else
- fun_l11_n783(x)
- end
-end
-
-def fun_l10_n643(x)
- if (x < 1)
- fun_l11_n855(x)
- else
- fun_l11_n145(x)
- end
-end
-
-def fun_l10_n644(x)
- if (x < 1)
- fun_l11_n897(x)
- else
- fun_l11_n281(x)
- end
-end
-
-def fun_l10_n645(x)
- if (x < 1)
- fun_l11_n148(x)
- else
- fun_l11_n786(x)
- end
-end
-
-def fun_l10_n646(x)
- if (x < 1)
- fun_l11_n743(x)
- else
- fun_l11_n627(x)
- end
-end
-
-def fun_l10_n647(x)
- if (x < 1)
- fun_l11_n343(x)
- else
- fun_l11_n234(x)
- end
-end
-
-def fun_l10_n648(x)
- if (x < 1)
- fun_l11_n995(x)
- else
- fun_l11_n199(x)
- end
-end
-
-def fun_l10_n649(x)
- if (x < 1)
- fun_l11_n155(x)
- else
- fun_l11_n384(x)
- end
-end
-
-def fun_l10_n650(x)
- if (x < 1)
- fun_l11_n329(x)
- else
- fun_l11_n313(x)
- end
-end
-
-def fun_l10_n651(x)
- if (x < 1)
- fun_l11_n254(x)
- else
- fun_l11_n763(x)
- end
-end
-
-def fun_l10_n652(x)
- if (x < 1)
- fun_l11_n839(x)
- else
- fun_l11_n692(x)
- end
-end
-
-def fun_l10_n653(x)
- if (x < 1)
- fun_l11_n388(x)
- else
- fun_l11_n187(x)
- end
-end
-
-def fun_l10_n654(x)
- if (x < 1)
- fun_l11_n919(x)
- else
- fun_l11_n198(x)
- end
-end
-
-def fun_l10_n655(x)
- if (x < 1)
- fun_l11_n313(x)
- else
- fun_l11_n686(x)
- end
-end
-
-def fun_l10_n656(x)
- if (x < 1)
- fun_l11_n91(x)
- else
- fun_l11_n95(x)
- end
-end
-
-def fun_l10_n657(x)
- if (x < 1)
- fun_l11_n801(x)
- else
- fun_l11_n700(x)
- end
-end
-
-def fun_l10_n658(x)
- if (x < 1)
- fun_l11_n938(x)
- else
- fun_l11_n936(x)
- end
-end
-
-def fun_l10_n659(x)
- if (x < 1)
- fun_l11_n78(x)
- else
- fun_l11_n611(x)
- end
-end
-
-def fun_l10_n660(x)
- if (x < 1)
- fun_l11_n261(x)
- else
- fun_l11_n396(x)
- end
-end
-
-def fun_l10_n661(x)
- if (x < 1)
- fun_l11_n154(x)
- else
- fun_l11_n132(x)
- end
-end
-
-def fun_l10_n662(x)
- if (x < 1)
- fun_l11_n603(x)
- else
- fun_l11_n718(x)
- end
-end
-
-def fun_l10_n663(x)
- if (x < 1)
- fun_l11_n512(x)
- else
- fun_l11_n158(x)
- end
-end
-
-def fun_l10_n664(x)
- if (x < 1)
- fun_l11_n178(x)
- else
- fun_l11_n59(x)
- end
-end
-
-def fun_l10_n665(x)
- if (x < 1)
- fun_l11_n703(x)
- else
- fun_l11_n54(x)
- end
-end
-
-def fun_l10_n666(x)
- if (x < 1)
- fun_l11_n623(x)
- else
- fun_l11_n793(x)
- end
-end
-
-def fun_l10_n667(x)
- if (x < 1)
- fun_l11_n350(x)
- else
- fun_l11_n244(x)
- end
-end
-
-def fun_l10_n668(x)
- if (x < 1)
- fun_l11_n253(x)
- else
- fun_l11_n297(x)
- end
-end
-
-def fun_l10_n669(x)
- if (x < 1)
- fun_l11_n137(x)
- else
- fun_l11_n76(x)
- end
-end
-
-def fun_l10_n670(x)
- if (x < 1)
- fun_l11_n755(x)
- else
- fun_l11_n627(x)
- end
-end
-
-def fun_l10_n671(x)
- if (x < 1)
- fun_l11_n393(x)
- else
- fun_l11_n394(x)
- end
-end
-
-def fun_l10_n672(x)
- if (x < 1)
- fun_l11_n858(x)
- else
- fun_l11_n823(x)
- end
-end
-
-def fun_l10_n673(x)
- if (x < 1)
- fun_l11_n202(x)
- else
- fun_l11_n800(x)
- end
-end
-
-def fun_l10_n674(x)
- if (x < 1)
- fun_l11_n977(x)
- else
- fun_l11_n343(x)
- end
-end
-
-def fun_l10_n675(x)
- if (x < 1)
- fun_l11_n352(x)
- else
- fun_l11_n690(x)
- end
-end
-
-def fun_l10_n676(x)
- if (x < 1)
- fun_l11_n598(x)
- else
- fun_l11_n108(x)
- end
-end
-
-def fun_l10_n677(x)
- if (x < 1)
- fun_l11_n126(x)
- else
- fun_l11_n226(x)
- end
-end
-
-def fun_l10_n678(x)
- if (x < 1)
- fun_l11_n937(x)
- else
- fun_l11_n846(x)
- end
-end
-
-def fun_l10_n679(x)
- if (x < 1)
- fun_l11_n231(x)
- else
- fun_l11_n264(x)
- end
-end
-
-def fun_l10_n680(x)
- if (x < 1)
- fun_l11_n657(x)
- else
- fun_l11_n766(x)
- end
-end
-
-def fun_l10_n681(x)
- if (x < 1)
- fun_l11_n444(x)
- else
- fun_l11_n405(x)
- end
-end
-
-def fun_l10_n682(x)
- if (x < 1)
- fun_l11_n410(x)
- else
- fun_l11_n409(x)
- end
-end
-
-def fun_l10_n683(x)
- if (x < 1)
- fun_l11_n690(x)
- else
- fun_l11_n673(x)
- end
-end
-
-def fun_l10_n684(x)
- if (x < 1)
- fun_l11_n737(x)
- else
- fun_l11_n61(x)
- end
-end
-
-def fun_l10_n685(x)
- if (x < 1)
- fun_l11_n54(x)
- else
- fun_l11_n387(x)
- end
-end
-
-def fun_l10_n686(x)
- if (x < 1)
- fun_l11_n271(x)
- else
- fun_l11_n698(x)
- end
-end
-
-def fun_l10_n687(x)
- if (x < 1)
- fun_l11_n988(x)
- else
- fun_l11_n816(x)
- end
-end
-
-def fun_l10_n688(x)
- if (x < 1)
- fun_l11_n309(x)
- else
- fun_l11_n576(x)
- end
-end
-
-def fun_l10_n689(x)
- if (x < 1)
- fun_l11_n390(x)
- else
- fun_l11_n35(x)
- end
-end
-
-def fun_l10_n690(x)
- if (x < 1)
- fun_l11_n93(x)
- else
- fun_l11_n712(x)
- end
-end
-
-def fun_l10_n691(x)
- if (x < 1)
- fun_l11_n285(x)
- else
- fun_l11_n467(x)
- end
-end
-
-def fun_l10_n692(x)
- if (x < 1)
- fun_l11_n403(x)
- else
- fun_l11_n41(x)
- end
-end
-
-def fun_l10_n693(x)
- if (x < 1)
- fun_l11_n228(x)
- else
- fun_l11_n689(x)
- end
-end
-
-def fun_l10_n694(x)
- if (x < 1)
- fun_l11_n581(x)
- else
- fun_l11_n989(x)
- end
-end
-
-def fun_l10_n695(x)
- if (x < 1)
- fun_l11_n451(x)
- else
- fun_l11_n618(x)
- end
-end
-
-def fun_l10_n696(x)
- if (x < 1)
- fun_l11_n640(x)
- else
- fun_l11_n13(x)
- end
-end
-
-def fun_l10_n697(x)
- if (x < 1)
- fun_l11_n968(x)
- else
- fun_l11_n903(x)
- end
-end
-
-def fun_l10_n698(x)
- if (x < 1)
- fun_l11_n918(x)
- else
- fun_l11_n244(x)
- end
-end
-
-def fun_l10_n699(x)
- if (x < 1)
- fun_l11_n17(x)
- else
- fun_l11_n17(x)
- end
-end
-
-def fun_l10_n700(x)
- if (x < 1)
- fun_l11_n918(x)
- else
- fun_l11_n539(x)
- end
-end
-
-def fun_l10_n701(x)
- if (x < 1)
- fun_l11_n924(x)
- else
- fun_l11_n103(x)
- end
-end
-
-def fun_l10_n702(x)
- if (x < 1)
- fun_l11_n908(x)
- else
- fun_l11_n328(x)
- end
-end
-
-def fun_l10_n703(x)
- if (x < 1)
- fun_l11_n393(x)
- else
- fun_l11_n386(x)
- end
-end
-
-def fun_l10_n704(x)
- if (x < 1)
- fun_l11_n194(x)
- else
- fun_l11_n812(x)
- end
-end
-
-def fun_l10_n705(x)
- if (x < 1)
- fun_l11_n382(x)
- else
- fun_l11_n276(x)
- end
-end
-
-def fun_l10_n706(x)
- if (x < 1)
- fun_l11_n257(x)
- else
- fun_l11_n269(x)
- end
-end
-
-def fun_l10_n707(x)
- if (x < 1)
- fun_l11_n940(x)
- else
- fun_l11_n593(x)
- end
-end
-
-def fun_l10_n708(x)
- if (x < 1)
- fun_l11_n710(x)
- else
- fun_l11_n992(x)
- end
-end
-
-def fun_l10_n709(x)
- if (x < 1)
- fun_l11_n244(x)
- else
- fun_l11_n500(x)
- end
-end
-
-def fun_l10_n710(x)
- if (x < 1)
- fun_l11_n712(x)
- else
- fun_l11_n544(x)
- end
-end
-
-def fun_l10_n711(x)
- if (x < 1)
- fun_l11_n701(x)
- else
- fun_l11_n104(x)
- end
-end
-
-def fun_l10_n712(x)
- if (x < 1)
- fun_l11_n706(x)
- else
- fun_l11_n199(x)
- end
-end
-
-def fun_l10_n713(x)
- if (x < 1)
- fun_l11_n189(x)
- else
- fun_l11_n840(x)
- end
-end
-
-def fun_l10_n714(x)
- if (x < 1)
- fun_l11_n122(x)
- else
- fun_l11_n318(x)
- end
-end
-
-def fun_l10_n715(x)
- if (x < 1)
- fun_l11_n915(x)
- else
- fun_l11_n964(x)
- end
-end
-
-def fun_l10_n716(x)
- if (x < 1)
- fun_l11_n341(x)
- else
- fun_l11_n118(x)
- end
-end
-
-def fun_l10_n717(x)
- if (x < 1)
- fun_l11_n846(x)
- else
- fun_l11_n235(x)
- end
-end
-
-def fun_l10_n718(x)
- if (x < 1)
- fun_l11_n679(x)
- else
- fun_l11_n959(x)
- end
-end
-
-def fun_l10_n719(x)
- if (x < 1)
- fun_l11_n121(x)
- else
- fun_l11_n708(x)
- end
-end
-
-def fun_l10_n720(x)
- if (x < 1)
- fun_l11_n651(x)
- else
- fun_l11_n480(x)
- end
-end
-
-def fun_l10_n721(x)
- if (x < 1)
- fun_l11_n773(x)
- else
- fun_l11_n568(x)
- end
-end
-
-def fun_l10_n722(x)
- if (x < 1)
- fun_l11_n809(x)
- else
- fun_l11_n111(x)
- end
-end
-
-def fun_l10_n723(x)
- if (x < 1)
- fun_l11_n586(x)
- else
- fun_l11_n553(x)
- end
-end
-
-def fun_l10_n724(x)
- if (x < 1)
- fun_l11_n473(x)
- else
- fun_l11_n387(x)
- end
-end
-
-def fun_l10_n725(x)
- if (x < 1)
- fun_l11_n584(x)
- else
- fun_l11_n224(x)
- end
-end
-
-def fun_l10_n726(x)
- if (x < 1)
- fun_l11_n110(x)
- else
- fun_l11_n827(x)
- end
-end
-
-def fun_l10_n727(x)
- if (x < 1)
- fun_l11_n753(x)
- else
- fun_l11_n745(x)
- end
-end
-
-def fun_l10_n728(x)
- if (x < 1)
- fun_l11_n550(x)
- else
- fun_l11_n380(x)
- end
-end
-
-def fun_l10_n729(x)
- if (x < 1)
- fun_l11_n844(x)
- else
- fun_l11_n401(x)
- end
-end
-
-def fun_l10_n730(x)
- if (x < 1)
- fun_l11_n837(x)
- else
- fun_l11_n759(x)
- end
-end
-
-def fun_l10_n731(x)
- if (x < 1)
- fun_l11_n850(x)
- else
- fun_l11_n953(x)
- end
-end
-
-def fun_l10_n732(x)
- if (x < 1)
- fun_l11_n872(x)
- else
- fun_l11_n864(x)
- end
-end
-
-def fun_l10_n733(x)
- if (x < 1)
- fun_l11_n894(x)
- else
- fun_l11_n943(x)
- end
-end
-
-def fun_l10_n734(x)
- if (x < 1)
- fun_l11_n830(x)
- else
- fun_l11_n858(x)
- end
-end
-
-def fun_l10_n735(x)
- if (x < 1)
- fun_l11_n661(x)
- else
- fun_l11_n366(x)
- end
-end
-
-def fun_l10_n736(x)
- if (x < 1)
- fun_l11_n736(x)
- else
- fun_l11_n636(x)
- end
-end
-
-def fun_l10_n737(x)
- if (x < 1)
- fun_l11_n316(x)
- else
- fun_l11_n977(x)
- end
-end
-
-def fun_l10_n738(x)
- if (x < 1)
- fun_l11_n54(x)
- else
- fun_l11_n386(x)
- end
-end
-
-def fun_l10_n739(x)
- if (x < 1)
- fun_l11_n985(x)
- else
- fun_l11_n274(x)
- end
-end
-
-def fun_l10_n740(x)
- if (x < 1)
- fun_l11_n756(x)
- else
- fun_l11_n171(x)
- end
-end
-
-def fun_l10_n741(x)
- if (x < 1)
- fun_l11_n457(x)
- else
- fun_l11_n251(x)
- end
-end
-
-def fun_l10_n742(x)
- if (x < 1)
- fun_l11_n751(x)
- else
- fun_l11_n29(x)
- end
-end
-
-def fun_l10_n743(x)
- if (x < 1)
- fun_l11_n6(x)
- else
- fun_l11_n892(x)
- end
-end
-
-def fun_l10_n744(x)
- if (x < 1)
- fun_l11_n85(x)
- else
- fun_l11_n205(x)
- end
-end
-
-def fun_l10_n745(x)
- if (x < 1)
- fun_l11_n887(x)
- else
- fun_l11_n734(x)
- end
-end
-
-def fun_l10_n746(x)
- if (x < 1)
- fun_l11_n478(x)
- else
- fun_l11_n505(x)
- end
-end
-
-def fun_l10_n747(x)
- if (x < 1)
- fun_l11_n760(x)
- else
- fun_l11_n286(x)
- end
-end
-
-def fun_l10_n748(x)
- if (x < 1)
- fun_l11_n391(x)
- else
- fun_l11_n69(x)
- end
-end
-
-def fun_l10_n749(x)
- if (x < 1)
- fun_l11_n780(x)
- else
- fun_l11_n28(x)
- end
-end
-
-def fun_l10_n750(x)
- if (x < 1)
- fun_l11_n337(x)
- else
- fun_l11_n647(x)
- end
-end
-
-def fun_l10_n751(x)
- if (x < 1)
- fun_l11_n92(x)
- else
- fun_l11_n121(x)
- end
-end
-
-def fun_l10_n752(x)
- if (x < 1)
- fun_l11_n358(x)
- else
- fun_l11_n177(x)
- end
-end
-
-def fun_l10_n753(x)
- if (x < 1)
- fun_l11_n642(x)
- else
- fun_l11_n426(x)
- end
-end
-
-def fun_l10_n754(x)
- if (x < 1)
- fun_l11_n66(x)
- else
- fun_l11_n948(x)
- end
-end
-
-def fun_l10_n755(x)
- if (x < 1)
- fun_l11_n45(x)
- else
- fun_l11_n795(x)
- end
-end
-
-def fun_l10_n756(x)
- if (x < 1)
- fun_l11_n734(x)
- else
- fun_l11_n162(x)
- end
-end
-
-def fun_l10_n757(x)
- if (x < 1)
- fun_l11_n689(x)
- else
- fun_l11_n31(x)
- end
-end
-
-def fun_l10_n758(x)
- if (x < 1)
- fun_l11_n33(x)
- else
- fun_l11_n992(x)
- end
-end
-
-def fun_l10_n759(x)
- if (x < 1)
- fun_l11_n210(x)
- else
- fun_l11_n330(x)
- end
-end
-
-def fun_l10_n760(x)
- if (x < 1)
- fun_l11_n727(x)
- else
- fun_l11_n265(x)
- end
-end
-
-def fun_l10_n761(x)
- if (x < 1)
- fun_l11_n710(x)
- else
- fun_l11_n706(x)
- end
-end
-
-def fun_l10_n762(x)
- if (x < 1)
- fun_l11_n791(x)
- else
- fun_l11_n325(x)
- end
-end
-
-def fun_l10_n763(x)
- if (x < 1)
- fun_l11_n350(x)
- else
- fun_l11_n443(x)
- end
-end
-
-def fun_l10_n764(x)
- if (x < 1)
- fun_l11_n522(x)
- else
- fun_l11_n662(x)
- end
-end
-
-def fun_l10_n765(x)
- if (x < 1)
- fun_l11_n786(x)
- else
- fun_l11_n969(x)
- end
-end
-
-def fun_l10_n766(x)
- if (x < 1)
- fun_l11_n486(x)
- else
- fun_l11_n834(x)
- end
-end
-
-def fun_l10_n767(x)
- if (x < 1)
- fun_l11_n84(x)
- else
- fun_l11_n989(x)
- end
-end
-
-def fun_l10_n768(x)
- if (x < 1)
- fun_l11_n511(x)
- else
- fun_l11_n0(x)
- end
-end
-
-def fun_l10_n769(x)
- if (x < 1)
- fun_l11_n459(x)
- else
- fun_l11_n243(x)
- end
-end
-
-def fun_l10_n770(x)
- if (x < 1)
- fun_l11_n59(x)
- else
- fun_l11_n267(x)
- end
-end
-
-def fun_l10_n771(x)
- if (x < 1)
- fun_l11_n435(x)
- else
- fun_l11_n132(x)
- end
-end
-
-def fun_l10_n772(x)
- if (x < 1)
- fun_l11_n986(x)
- else
- fun_l11_n227(x)
- end
-end
-
-def fun_l10_n773(x)
- if (x < 1)
- fun_l11_n931(x)
- else
- fun_l11_n215(x)
- end
-end
-
-def fun_l10_n774(x)
- if (x < 1)
- fun_l11_n586(x)
- else
- fun_l11_n170(x)
- end
-end
-
-def fun_l10_n775(x)
- if (x < 1)
- fun_l11_n334(x)
- else
- fun_l11_n780(x)
- end
-end
-
-def fun_l10_n776(x)
- if (x < 1)
- fun_l11_n81(x)
- else
- fun_l11_n583(x)
- end
-end
-
-def fun_l10_n777(x)
- if (x < 1)
- fun_l11_n118(x)
- else
- fun_l11_n451(x)
- end
-end
-
-def fun_l10_n778(x)
- if (x < 1)
- fun_l11_n767(x)
- else
- fun_l11_n824(x)
- end
-end
-
-def fun_l10_n779(x)
- if (x < 1)
- fun_l11_n270(x)
- else
- fun_l11_n725(x)
- end
-end
-
-def fun_l10_n780(x)
- if (x < 1)
- fun_l11_n146(x)
- else
- fun_l11_n407(x)
- end
-end
-
-def fun_l10_n781(x)
- if (x < 1)
- fun_l11_n103(x)
- else
- fun_l11_n523(x)
- end
-end
-
-def fun_l10_n782(x)
- if (x < 1)
- fun_l11_n499(x)
- else
- fun_l11_n710(x)
- end
-end
-
-def fun_l10_n783(x)
- if (x < 1)
- fun_l11_n971(x)
- else
- fun_l11_n426(x)
- end
-end
-
-def fun_l10_n784(x)
- if (x < 1)
- fun_l11_n457(x)
- else
- fun_l11_n207(x)
- end
-end
-
-def fun_l10_n785(x)
- if (x < 1)
- fun_l11_n307(x)
- else
- fun_l11_n19(x)
- end
-end
-
-def fun_l10_n786(x)
- if (x < 1)
- fun_l11_n458(x)
- else
- fun_l11_n243(x)
- end
-end
-
-def fun_l10_n787(x)
- if (x < 1)
- fun_l11_n488(x)
- else
- fun_l11_n694(x)
- end
-end
-
-def fun_l10_n788(x)
- if (x < 1)
- fun_l11_n422(x)
- else
- fun_l11_n201(x)
- end
-end
-
-def fun_l10_n789(x)
- if (x < 1)
- fun_l11_n45(x)
- else
- fun_l11_n993(x)
- end
-end
-
-def fun_l10_n790(x)
- if (x < 1)
- fun_l11_n443(x)
- else
- fun_l11_n124(x)
- end
-end
-
-def fun_l10_n791(x)
- if (x < 1)
- fun_l11_n875(x)
- else
- fun_l11_n605(x)
- end
-end
-
-def fun_l10_n792(x)
- if (x < 1)
- fun_l11_n836(x)
- else
- fun_l11_n776(x)
- end
-end
-
-def fun_l10_n793(x)
- if (x < 1)
- fun_l11_n58(x)
- else
- fun_l11_n847(x)
- end
-end
-
-def fun_l10_n794(x)
- if (x < 1)
- fun_l11_n334(x)
- else
- fun_l11_n981(x)
- end
-end
-
-def fun_l10_n795(x)
- if (x < 1)
- fun_l11_n187(x)
- else
- fun_l11_n599(x)
- end
-end
-
-def fun_l10_n796(x)
- if (x < 1)
- fun_l11_n37(x)
- else
- fun_l11_n211(x)
- end
-end
-
-def fun_l10_n797(x)
- if (x < 1)
- fun_l11_n770(x)
- else
- fun_l11_n688(x)
- end
-end
-
-def fun_l10_n798(x)
- if (x < 1)
- fun_l11_n728(x)
- else
- fun_l11_n150(x)
- end
-end
-
-def fun_l10_n799(x)
- if (x < 1)
- fun_l11_n175(x)
- else
- fun_l11_n762(x)
- end
-end
-
-def fun_l10_n800(x)
- if (x < 1)
- fun_l11_n977(x)
- else
- fun_l11_n86(x)
- end
-end
-
-def fun_l10_n801(x)
- if (x < 1)
- fun_l11_n669(x)
- else
- fun_l11_n120(x)
- end
-end
-
-def fun_l10_n802(x)
- if (x < 1)
- fun_l11_n630(x)
- else
- fun_l11_n839(x)
- end
-end
-
-def fun_l10_n803(x)
- if (x < 1)
- fun_l11_n505(x)
- else
- fun_l11_n461(x)
- end
-end
-
-def fun_l10_n804(x)
- if (x < 1)
- fun_l11_n757(x)
- else
- fun_l11_n620(x)
- end
-end
-
-def fun_l10_n805(x)
- if (x < 1)
- fun_l11_n379(x)
- else
- fun_l11_n468(x)
- end
-end
-
-def fun_l10_n806(x)
- if (x < 1)
- fun_l11_n708(x)
- else
- fun_l11_n73(x)
- end
-end
-
-def fun_l10_n807(x)
- if (x < 1)
- fun_l11_n340(x)
- else
- fun_l11_n671(x)
- end
-end
-
-def fun_l10_n808(x)
- if (x < 1)
- fun_l11_n628(x)
- else
- fun_l11_n912(x)
- end
-end
-
-def fun_l10_n809(x)
- if (x < 1)
- fun_l11_n455(x)
- else
- fun_l11_n20(x)
- end
-end
-
-def fun_l10_n810(x)
- if (x < 1)
- fun_l11_n211(x)
- else
- fun_l11_n724(x)
- end
-end
-
-def fun_l10_n811(x)
- if (x < 1)
- fun_l11_n982(x)
- else
- fun_l11_n876(x)
- end
-end
-
-def fun_l10_n812(x)
- if (x < 1)
- fun_l11_n455(x)
- else
- fun_l11_n846(x)
- end
-end
-
-def fun_l10_n813(x)
- if (x < 1)
- fun_l11_n317(x)
- else
- fun_l11_n909(x)
- end
-end
-
-def fun_l10_n814(x)
- if (x < 1)
- fun_l11_n622(x)
- else
- fun_l11_n147(x)
- end
-end
-
-def fun_l10_n815(x)
- if (x < 1)
- fun_l11_n174(x)
- else
- fun_l11_n660(x)
- end
-end
-
-def fun_l10_n816(x)
- if (x < 1)
- fun_l11_n63(x)
- else
- fun_l11_n427(x)
- end
-end
-
-def fun_l10_n817(x)
- if (x < 1)
- fun_l11_n944(x)
- else
- fun_l11_n40(x)
- end
-end
-
-def fun_l10_n818(x)
- if (x < 1)
- fun_l11_n887(x)
- else
- fun_l11_n641(x)
- end
-end
-
-def fun_l10_n819(x)
- if (x < 1)
- fun_l11_n237(x)
- else
- fun_l11_n568(x)
- end
-end
-
-def fun_l10_n820(x)
- if (x < 1)
- fun_l11_n415(x)
- else
- fun_l11_n374(x)
- end
-end
-
-def fun_l10_n821(x)
- if (x < 1)
- fun_l11_n183(x)
- else
- fun_l11_n38(x)
- end
-end
-
-def fun_l10_n822(x)
- if (x < 1)
- fun_l11_n835(x)
- else
- fun_l11_n406(x)
- end
-end
-
-def fun_l10_n823(x)
- if (x < 1)
- fun_l11_n233(x)
- else
- fun_l11_n118(x)
- end
-end
-
-def fun_l10_n824(x)
- if (x < 1)
- fun_l11_n898(x)
- else
- fun_l11_n543(x)
- end
-end
-
-def fun_l10_n825(x)
- if (x < 1)
- fun_l11_n971(x)
- else
- fun_l11_n750(x)
- end
-end
-
-def fun_l10_n826(x)
- if (x < 1)
- fun_l11_n254(x)
- else
- fun_l11_n759(x)
- end
-end
-
-def fun_l10_n827(x)
- if (x < 1)
- fun_l11_n953(x)
- else
- fun_l11_n187(x)
- end
-end
-
-def fun_l10_n828(x)
- if (x < 1)
- fun_l11_n403(x)
- else
- fun_l11_n170(x)
- end
-end
-
-def fun_l10_n829(x)
- if (x < 1)
- fun_l11_n251(x)
- else
- fun_l11_n506(x)
- end
-end
-
-def fun_l10_n830(x)
- if (x < 1)
- fun_l11_n426(x)
- else
- fun_l11_n325(x)
- end
-end
-
-def fun_l10_n831(x)
- if (x < 1)
- fun_l11_n958(x)
- else
- fun_l11_n4(x)
- end
-end
-
-def fun_l10_n832(x)
- if (x < 1)
- fun_l11_n628(x)
- else
- fun_l11_n920(x)
- end
-end
-
-def fun_l10_n833(x)
- if (x < 1)
- fun_l11_n241(x)
- else
- fun_l11_n459(x)
- end
-end
-
-def fun_l10_n834(x)
- if (x < 1)
- fun_l11_n559(x)
- else
- fun_l11_n671(x)
- end
-end
-
-def fun_l10_n835(x)
- if (x < 1)
- fun_l11_n980(x)
- else
- fun_l11_n295(x)
- end
-end
-
-def fun_l10_n836(x)
- if (x < 1)
- fun_l11_n306(x)
- else
- fun_l11_n143(x)
- end
-end
-
-def fun_l10_n837(x)
- if (x < 1)
- fun_l11_n176(x)
- else
- fun_l11_n341(x)
- end
-end
-
-def fun_l10_n838(x)
- if (x < 1)
- fun_l11_n130(x)
- else
- fun_l11_n380(x)
- end
-end
-
-def fun_l10_n839(x)
- if (x < 1)
- fun_l11_n630(x)
- else
- fun_l11_n216(x)
- end
-end
-
-def fun_l10_n840(x)
- if (x < 1)
- fun_l11_n500(x)
- else
- fun_l11_n579(x)
- end
-end
-
-def fun_l10_n841(x)
- if (x < 1)
- fun_l11_n312(x)
- else
- fun_l11_n656(x)
- end
-end
-
-def fun_l10_n842(x)
- if (x < 1)
- fun_l11_n209(x)
- else
- fun_l11_n332(x)
- end
-end
-
-def fun_l10_n843(x)
- if (x < 1)
- fun_l11_n555(x)
- else
- fun_l11_n179(x)
- end
-end
-
-def fun_l10_n844(x)
- if (x < 1)
- fun_l11_n154(x)
- else
- fun_l11_n284(x)
- end
-end
-
-def fun_l10_n845(x)
- if (x < 1)
- fun_l11_n912(x)
- else
- fun_l11_n543(x)
- end
-end
-
-def fun_l10_n846(x)
- if (x < 1)
- fun_l11_n346(x)
- else
- fun_l11_n553(x)
- end
-end
-
-def fun_l10_n847(x)
- if (x < 1)
- fun_l11_n117(x)
- else
- fun_l11_n738(x)
- end
-end
-
-def fun_l10_n848(x)
- if (x < 1)
- fun_l11_n664(x)
- else
- fun_l11_n988(x)
- end
-end
-
-def fun_l10_n849(x)
- if (x < 1)
- fun_l11_n298(x)
- else
- fun_l11_n753(x)
- end
-end
-
-def fun_l10_n850(x)
- if (x < 1)
- fun_l11_n177(x)
- else
- fun_l11_n690(x)
- end
-end
-
-def fun_l10_n851(x)
- if (x < 1)
- fun_l11_n259(x)
- else
- fun_l11_n713(x)
- end
-end
-
-def fun_l10_n852(x)
- if (x < 1)
- fun_l11_n151(x)
- else
- fun_l11_n580(x)
- end
-end
-
-def fun_l10_n853(x)
- if (x < 1)
- fun_l11_n274(x)
- else
- fun_l11_n703(x)
- end
-end
-
-def fun_l10_n854(x)
- if (x < 1)
- fun_l11_n295(x)
- else
- fun_l11_n885(x)
- end
-end
-
-def fun_l10_n855(x)
- if (x < 1)
- fun_l11_n513(x)
- else
- fun_l11_n963(x)
- end
-end
-
-def fun_l10_n856(x)
- if (x < 1)
- fun_l11_n855(x)
- else
- fun_l11_n435(x)
- end
-end
-
-def fun_l10_n857(x)
- if (x < 1)
- fun_l11_n573(x)
- else
- fun_l11_n489(x)
- end
-end
-
-def fun_l10_n858(x)
- if (x < 1)
- fun_l11_n880(x)
- else
- fun_l11_n91(x)
- end
-end
-
-def fun_l10_n859(x)
- if (x < 1)
- fun_l11_n993(x)
- else
- fun_l11_n358(x)
- end
-end
-
-def fun_l10_n860(x)
- if (x < 1)
- fun_l11_n836(x)
- else
- fun_l11_n192(x)
- end
-end
-
-def fun_l10_n861(x)
- if (x < 1)
- fun_l11_n493(x)
- else
- fun_l11_n564(x)
- end
-end
-
-def fun_l10_n862(x)
- if (x < 1)
- fun_l11_n111(x)
- else
- fun_l11_n8(x)
- end
-end
-
-def fun_l10_n863(x)
- if (x < 1)
- fun_l11_n596(x)
- else
- fun_l11_n129(x)
- end
-end
-
-def fun_l10_n864(x)
- if (x < 1)
- fun_l11_n0(x)
- else
- fun_l11_n687(x)
- end
-end
-
-def fun_l10_n865(x)
- if (x < 1)
- fun_l11_n543(x)
- else
- fun_l11_n866(x)
- end
-end
-
-def fun_l10_n866(x)
- if (x < 1)
- fun_l11_n398(x)
- else
- fun_l11_n532(x)
- end
-end
-
-def fun_l10_n867(x)
- if (x < 1)
- fun_l11_n15(x)
- else
- fun_l11_n991(x)
- end
-end
-
-def fun_l10_n868(x)
- if (x < 1)
- fun_l11_n890(x)
- else
- fun_l11_n222(x)
- end
-end
-
-def fun_l10_n869(x)
- if (x < 1)
- fun_l11_n206(x)
- else
- fun_l11_n983(x)
- end
-end
-
-def fun_l10_n870(x)
- if (x < 1)
- fun_l11_n869(x)
- else
- fun_l11_n619(x)
- end
-end
-
-def fun_l10_n871(x)
- if (x < 1)
- fun_l11_n417(x)
- else
- fun_l11_n18(x)
- end
-end
-
-def fun_l10_n872(x)
- if (x < 1)
- fun_l11_n738(x)
- else
- fun_l11_n473(x)
- end
-end
-
-def fun_l10_n873(x)
- if (x < 1)
- fun_l11_n773(x)
- else
- fun_l11_n128(x)
- end
-end
-
-def fun_l10_n874(x)
- if (x < 1)
- fun_l11_n930(x)
- else
- fun_l11_n563(x)
- end
-end
-
-def fun_l10_n875(x)
- if (x < 1)
- fun_l11_n868(x)
- else
- fun_l11_n356(x)
- end
-end
-
-def fun_l10_n876(x)
- if (x < 1)
- fun_l11_n533(x)
- else
- fun_l11_n402(x)
- end
-end
-
-def fun_l10_n877(x)
- if (x < 1)
- fun_l11_n959(x)
- else
- fun_l11_n921(x)
- end
-end
-
-def fun_l10_n878(x)
- if (x < 1)
- fun_l11_n717(x)
- else
- fun_l11_n484(x)
- end
-end
-
-def fun_l10_n879(x)
- if (x < 1)
- fun_l11_n583(x)
- else
- fun_l11_n801(x)
- end
-end
-
-def fun_l10_n880(x)
- if (x < 1)
- fun_l11_n576(x)
- else
- fun_l11_n811(x)
- end
-end
-
-def fun_l10_n881(x)
- if (x < 1)
- fun_l11_n382(x)
- else
- fun_l11_n585(x)
- end
-end
-
-def fun_l10_n882(x)
- if (x < 1)
- fun_l11_n648(x)
- else
- fun_l11_n930(x)
- end
-end
-
-def fun_l10_n883(x)
- if (x < 1)
- fun_l11_n246(x)
- else
- fun_l11_n636(x)
- end
-end
-
-def fun_l10_n884(x)
- if (x < 1)
- fun_l11_n112(x)
- else
- fun_l11_n798(x)
- end
-end
-
-def fun_l10_n885(x)
- if (x < 1)
- fun_l11_n517(x)
- else
- fun_l11_n633(x)
- end
-end
-
-def fun_l10_n886(x)
- if (x < 1)
- fun_l11_n651(x)
- else
- fun_l11_n377(x)
- end
-end
-
-def fun_l10_n887(x)
- if (x < 1)
- fun_l11_n652(x)
- else
- fun_l11_n419(x)
- end
-end
-
-def fun_l10_n888(x)
- if (x < 1)
- fun_l11_n346(x)
- else
- fun_l11_n294(x)
- end
-end
-
-def fun_l10_n889(x)
- if (x < 1)
- fun_l11_n809(x)
- else
- fun_l11_n844(x)
- end
-end
-
-def fun_l10_n890(x)
- if (x < 1)
- fun_l11_n382(x)
- else
- fun_l11_n930(x)
- end
-end
-
-def fun_l10_n891(x)
- if (x < 1)
- fun_l11_n900(x)
- else
- fun_l11_n293(x)
- end
-end
-
-def fun_l10_n892(x)
- if (x < 1)
- fun_l11_n912(x)
- else
- fun_l11_n46(x)
- end
-end
-
-def fun_l10_n893(x)
- if (x < 1)
- fun_l11_n429(x)
- else
- fun_l11_n174(x)
- end
-end
-
-def fun_l10_n894(x)
- if (x < 1)
- fun_l11_n142(x)
- else
- fun_l11_n739(x)
- end
-end
-
-def fun_l10_n895(x)
- if (x < 1)
- fun_l11_n300(x)
- else
- fun_l11_n546(x)
- end
-end
-
-def fun_l10_n896(x)
- if (x < 1)
- fun_l11_n253(x)
- else
- fun_l11_n555(x)
- end
-end
-
-def fun_l10_n897(x)
- if (x < 1)
- fun_l11_n29(x)
- else
- fun_l11_n913(x)
- end
-end
-
-def fun_l10_n898(x)
- if (x < 1)
- fun_l11_n879(x)
- else
- fun_l11_n2(x)
- end
-end
-
-def fun_l10_n899(x)
- if (x < 1)
- fun_l11_n191(x)
- else
- fun_l11_n418(x)
- end
-end
-
-def fun_l10_n900(x)
- if (x < 1)
- fun_l11_n239(x)
- else
- fun_l11_n904(x)
- end
-end
-
-def fun_l10_n901(x)
- if (x < 1)
- fun_l11_n962(x)
- else
- fun_l11_n978(x)
- end
-end
-
-def fun_l10_n902(x)
- if (x < 1)
- fun_l11_n343(x)
- else
- fun_l11_n358(x)
- end
-end
-
-def fun_l10_n903(x)
- if (x < 1)
- fun_l11_n334(x)
- else
- fun_l11_n806(x)
- end
-end
-
-def fun_l10_n904(x)
- if (x < 1)
- fun_l11_n973(x)
- else
- fun_l11_n708(x)
- end
-end
-
-def fun_l10_n905(x)
- if (x < 1)
- fun_l11_n990(x)
- else
- fun_l11_n211(x)
- end
-end
-
-def fun_l10_n906(x)
- if (x < 1)
- fun_l11_n499(x)
- else
- fun_l11_n605(x)
- end
-end
-
-def fun_l10_n907(x)
- if (x < 1)
- fun_l11_n335(x)
- else
- fun_l11_n855(x)
- end
-end
-
-def fun_l10_n908(x)
- if (x < 1)
- fun_l11_n197(x)
- else
- fun_l11_n130(x)
- end
-end
-
-def fun_l10_n909(x)
- if (x < 1)
- fun_l11_n462(x)
- else
- fun_l11_n838(x)
- end
-end
-
-def fun_l10_n910(x)
- if (x < 1)
- fun_l11_n254(x)
- else
- fun_l11_n16(x)
- end
-end
-
-def fun_l10_n911(x)
- if (x < 1)
- fun_l11_n321(x)
- else
- fun_l11_n158(x)
- end
-end
-
-def fun_l10_n912(x)
- if (x < 1)
- fun_l11_n113(x)
- else
- fun_l11_n50(x)
- end
-end
-
-def fun_l10_n913(x)
- if (x < 1)
- fun_l11_n492(x)
- else
- fun_l11_n502(x)
- end
-end
-
-def fun_l10_n914(x)
- if (x < 1)
- fun_l11_n221(x)
- else
- fun_l11_n732(x)
- end
-end
-
-def fun_l10_n915(x)
- if (x < 1)
- fun_l11_n853(x)
- else
- fun_l11_n625(x)
- end
-end
-
-def fun_l10_n916(x)
- if (x < 1)
- fun_l11_n172(x)
- else
- fun_l11_n17(x)
- end
-end
-
-def fun_l10_n917(x)
- if (x < 1)
- fun_l11_n438(x)
- else
- fun_l11_n480(x)
- end
-end
-
-def fun_l10_n918(x)
- if (x < 1)
- fun_l11_n646(x)
- else
- fun_l11_n833(x)
- end
-end
-
-def fun_l10_n919(x)
- if (x < 1)
- fun_l11_n628(x)
- else
- fun_l11_n40(x)
- end
-end
-
-def fun_l10_n920(x)
- if (x < 1)
- fun_l11_n387(x)
- else
- fun_l11_n824(x)
- end
-end
-
-def fun_l10_n921(x)
- if (x < 1)
- fun_l11_n641(x)
- else
- fun_l11_n669(x)
- end
-end
-
-def fun_l10_n922(x)
- if (x < 1)
- fun_l11_n484(x)
- else
- fun_l11_n591(x)
- end
-end
-
-def fun_l10_n923(x)
- if (x < 1)
- fun_l11_n610(x)
- else
- fun_l11_n132(x)
- end
-end
-
-def fun_l10_n924(x)
- if (x < 1)
- fun_l11_n90(x)
- else
- fun_l11_n727(x)
- end
-end
-
-def fun_l10_n925(x)
- if (x < 1)
- fun_l11_n44(x)
- else
- fun_l11_n412(x)
- end
-end
-
-def fun_l10_n926(x)
- if (x < 1)
- fun_l11_n912(x)
- else
- fun_l11_n229(x)
- end
-end
-
-def fun_l10_n927(x)
- if (x < 1)
- fun_l11_n647(x)
- else
- fun_l11_n13(x)
- end
-end
-
-def fun_l10_n928(x)
- if (x < 1)
- fun_l11_n820(x)
- else
- fun_l11_n316(x)
- end
-end
-
-def fun_l10_n929(x)
- if (x < 1)
- fun_l11_n850(x)
- else
- fun_l11_n868(x)
- end
-end
-
-def fun_l10_n930(x)
- if (x < 1)
- fun_l11_n373(x)
- else
- fun_l11_n183(x)
- end
-end
-
-def fun_l10_n931(x)
- if (x < 1)
- fun_l11_n217(x)
- else
- fun_l11_n230(x)
- end
-end
-
-def fun_l10_n932(x)
- if (x < 1)
- fun_l11_n77(x)
- else
- fun_l11_n917(x)
- end
-end
-
-def fun_l10_n933(x)
- if (x < 1)
- fun_l11_n264(x)
- else
- fun_l11_n992(x)
- end
-end
-
-def fun_l10_n934(x)
- if (x < 1)
- fun_l11_n125(x)
- else
- fun_l11_n441(x)
- end
-end
-
-def fun_l10_n935(x)
- if (x < 1)
- fun_l11_n586(x)
- else
- fun_l11_n946(x)
- end
-end
-
-def fun_l10_n936(x)
- if (x < 1)
- fun_l11_n186(x)
- else
- fun_l11_n595(x)
- end
-end
-
-def fun_l10_n937(x)
- if (x < 1)
- fun_l11_n210(x)
- else
- fun_l11_n186(x)
- end
-end
-
-def fun_l10_n938(x)
- if (x < 1)
- fun_l11_n131(x)
- else
- fun_l11_n519(x)
- end
-end
-
-def fun_l10_n939(x)
- if (x < 1)
- fun_l11_n863(x)
- else
- fun_l11_n486(x)
- end
-end
-
-def fun_l10_n940(x)
- if (x < 1)
- fun_l11_n753(x)
- else
- fun_l11_n916(x)
- end
-end
-
-def fun_l10_n941(x)
- if (x < 1)
- fun_l11_n8(x)
- else
- fun_l11_n153(x)
- end
-end
-
-def fun_l10_n942(x)
- if (x < 1)
- fun_l11_n798(x)
- else
- fun_l11_n873(x)
- end
-end
-
-def fun_l10_n943(x)
- if (x < 1)
- fun_l11_n862(x)
- else
- fun_l11_n293(x)
- end
-end
-
-def fun_l10_n944(x)
- if (x < 1)
- fun_l11_n554(x)
- else
- fun_l11_n599(x)
- end
-end
-
-def fun_l10_n945(x)
- if (x < 1)
- fun_l11_n134(x)
- else
- fun_l11_n535(x)
- end
-end
-
-def fun_l10_n946(x)
- if (x < 1)
- fun_l11_n992(x)
- else
- fun_l11_n624(x)
- end
-end
-
-def fun_l10_n947(x)
- if (x < 1)
- fun_l11_n436(x)
- else
- fun_l11_n153(x)
- end
-end
-
-def fun_l10_n948(x)
- if (x < 1)
- fun_l11_n72(x)
- else
- fun_l11_n154(x)
- end
-end
-
-def fun_l10_n949(x)
- if (x < 1)
- fun_l11_n61(x)
- else
- fun_l11_n612(x)
- end
-end
-
-def fun_l10_n950(x)
- if (x < 1)
- fun_l11_n964(x)
- else
- fun_l11_n999(x)
- end
-end
-
-def fun_l10_n951(x)
- if (x < 1)
- fun_l11_n689(x)
- else
- fun_l11_n165(x)
- end
-end
-
-def fun_l10_n952(x)
- if (x < 1)
- fun_l11_n856(x)
- else
- fun_l11_n7(x)
- end
-end
-
-def fun_l10_n953(x)
- if (x < 1)
- fun_l11_n421(x)
- else
- fun_l11_n416(x)
- end
-end
-
-def fun_l10_n954(x)
- if (x < 1)
- fun_l11_n969(x)
- else
- fun_l11_n260(x)
- end
-end
-
-def fun_l10_n955(x)
- if (x < 1)
- fun_l11_n716(x)
- else
- fun_l11_n364(x)
- end
-end
-
-def fun_l10_n956(x)
- if (x < 1)
- fun_l11_n491(x)
- else
- fun_l11_n575(x)
- end
-end
-
-def fun_l10_n957(x)
- if (x < 1)
- fun_l11_n522(x)
- else
- fun_l11_n430(x)
- end
-end
-
-def fun_l10_n958(x)
- if (x < 1)
- fun_l11_n712(x)
- else
- fun_l11_n939(x)
- end
-end
-
-def fun_l10_n959(x)
- if (x < 1)
- fun_l11_n230(x)
- else
- fun_l11_n819(x)
- end
-end
-
-def fun_l10_n960(x)
- if (x < 1)
- fun_l11_n790(x)
- else
- fun_l11_n939(x)
- end
-end
-
-def fun_l10_n961(x)
- if (x < 1)
- fun_l11_n844(x)
- else
- fun_l11_n847(x)
- end
-end
-
-def fun_l10_n962(x)
- if (x < 1)
- fun_l11_n105(x)
- else
- fun_l11_n722(x)
- end
-end
-
-def fun_l10_n963(x)
- if (x < 1)
- fun_l11_n166(x)
- else
- fun_l11_n990(x)
- end
-end
-
-def fun_l10_n964(x)
- if (x < 1)
- fun_l11_n224(x)
- else
- fun_l11_n751(x)
- end
-end
-
-def fun_l10_n965(x)
- if (x < 1)
- fun_l11_n809(x)
- else
- fun_l11_n739(x)
- end
-end
-
-def fun_l10_n966(x)
- if (x < 1)
- fun_l11_n840(x)
- else
- fun_l11_n795(x)
- end
-end
-
-def fun_l10_n967(x)
- if (x < 1)
- fun_l11_n791(x)
- else
- fun_l11_n926(x)
- end
-end
-
-def fun_l10_n968(x)
- if (x < 1)
- fun_l11_n484(x)
- else
- fun_l11_n409(x)
- end
-end
-
-def fun_l10_n969(x)
- if (x < 1)
- fun_l11_n22(x)
- else
- fun_l11_n284(x)
- end
-end
-
-def fun_l10_n970(x)
- if (x < 1)
- fun_l11_n539(x)
- else
- fun_l11_n661(x)
- end
-end
-
-def fun_l10_n971(x)
- if (x < 1)
- fun_l11_n453(x)
- else
- fun_l11_n619(x)
- end
-end
-
-def fun_l10_n972(x)
- if (x < 1)
- fun_l11_n80(x)
- else
- fun_l11_n848(x)
- end
-end
-
-def fun_l10_n973(x)
- if (x < 1)
- fun_l11_n599(x)
- else
- fun_l11_n147(x)
- end
-end
-
-def fun_l10_n974(x)
- if (x < 1)
- fun_l11_n784(x)
- else
- fun_l11_n603(x)
- end
-end
-
-def fun_l10_n975(x)
- if (x < 1)
- fun_l11_n166(x)
- else
- fun_l11_n12(x)
- end
-end
-
-def fun_l10_n976(x)
- if (x < 1)
- fun_l11_n739(x)
- else
- fun_l11_n381(x)
- end
-end
-
-def fun_l10_n977(x)
- if (x < 1)
- fun_l11_n45(x)
- else
- fun_l11_n67(x)
- end
-end
-
-def fun_l10_n978(x)
- if (x < 1)
- fun_l11_n243(x)
- else
- fun_l11_n51(x)
- end
-end
-
-def fun_l10_n979(x)
- if (x < 1)
- fun_l11_n964(x)
- else
- fun_l11_n949(x)
- end
-end
-
-def fun_l10_n980(x)
- if (x < 1)
- fun_l11_n881(x)
- else
- fun_l11_n893(x)
- end
-end
-
-def fun_l10_n981(x)
- if (x < 1)
- fun_l11_n808(x)
- else
- fun_l11_n205(x)
- end
-end
-
-def fun_l10_n982(x)
- if (x < 1)
- fun_l11_n897(x)
- else
- fun_l11_n259(x)
- end
-end
-
-def fun_l10_n983(x)
- if (x < 1)
- fun_l11_n671(x)
- else
- fun_l11_n115(x)
- end
-end
-
-def fun_l10_n984(x)
- if (x < 1)
- fun_l11_n9(x)
- else
- fun_l11_n994(x)
- end
-end
-
-def fun_l10_n985(x)
- if (x < 1)
- fun_l11_n663(x)
- else
- fun_l11_n979(x)
- end
-end
-
-def fun_l10_n986(x)
- if (x < 1)
- fun_l11_n8(x)
- else
- fun_l11_n949(x)
- end
-end
-
-def fun_l10_n987(x)
- if (x < 1)
- fun_l11_n230(x)
- else
- fun_l11_n822(x)
- end
-end
-
-def fun_l10_n988(x)
- if (x < 1)
- fun_l11_n767(x)
- else
- fun_l11_n691(x)
- end
-end
-
-def fun_l10_n989(x)
- if (x < 1)
- fun_l11_n524(x)
- else
- fun_l11_n514(x)
- end
-end
-
-def fun_l10_n990(x)
- if (x < 1)
- fun_l11_n556(x)
- else
- fun_l11_n34(x)
- end
-end
-
-def fun_l10_n991(x)
- if (x < 1)
- fun_l11_n516(x)
- else
- fun_l11_n817(x)
- end
-end
-
-def fun_l10_n992(x)
- if (x < 1)
- fun_l11_n273(x)
- else
- fun_l11_n189(x)
- end
-end
-
-def fun_l10_n993(x)
- if (x < 1)
- fun_l11_n726(x)
- else
- fun_l11_n260(x)
- end
-end
-
-def fun_l10_n994(x)
- if (x < 1)
- fun_l11_n789(x)
- else
- fun_l11_n993(x)
- end
-end
-
-def fun_l10_n995(x)
- if (x < 1)
- fun_l11_n187(x)
- else
- fun_l11_n291(x)
- end
-end
-
-def fun_l10_n996(x)
- if (x < 1)
- fun_l11_n145(x)
- else
- fun_l11_n500(x)
- end
-end
-
-def fun_l10_n997(x)
- if (x < 1)
- fun_l11_n437(x)
- else
- fun_l11_n925(x)
- end
-end
-
-def fun_l10_n998(x)
- if (x < 1)
- fun_l11_n945(x)
- else
- fun_l11_n300(x)
- end
-end
-
-def fun_l10_n999(x)
- if (x < 1)
- fun_l11_n703(x)
- else
- fun_l11_n542(x)
- end
-end
-
-def fun_l11_n0(x)
- if (x < 1)
- fun_l12_n539(x)
- else
- fun_l12_n60(x)
- end
-end
-
-def fun_l11_n1(x)
- if (x < 1)
- fun_l12_n659(x)
- else
- fun_l12_n739(x)
- end
-end
-
-def fun_l11_n2(x)
- if (x < 1)
- fun_l12_n273(x)
- else
- fun_l12_n392(x)
- end
-end
-
-def fun_l11_n3(x)
- if (x < 1)
- fun_l12_n394(x)
- else
- fun_l12_n989(x)
- end
-end
-
-def fun_l11_n4(x)
- if (x < 1)
- fun_l12_n254(x)
- else
- fun_l12_n906(x)
- end
-end
-
-def fun_l11_n5(x)
- if (x < 1)
- fun_l12_n229(x)
- else
- fun_l12_n345(x)
- end
-end
-
-def fun_l11_n6(x)
- if (x < 1)
- fun_l12_n15(x)
- else
- fun_l12_n893(x)
- end
-end
-
-def fun_l11_n7(x)
- if (x < 1)
- fun_l12_n185(x)
- else
- fun_l12_n187(x)
- end
-end
-
-def fun_l11_n8(x)
- if (x < 1)
- fun_l12_n761(x)
- else
- fun_l12_n850(x)
- end
-end
-
-def fun_l11_n9(x)
- if (x < 1)
- fun_l12_n644(x)
- else
- fun_l12_n274(x)
- end
-end
-
-def fun_l11_n10(x)
- if (x < 1)
- fun_l12_n652(x)
- else
- fun_l12_n223(x)
- end
-end
-
-def fun_l11_n11(x)
- if (x < 1)
- fun_l12_n905(x)
- else
- fun_l12_n215(x)
- end
-end
-
-def fun_l11_n12(x)
- if (x < 1)
- fun_l12_n58(x)
- else
- fun_l12_n495(x)
- end
-end
-
-def fun_l11_n13(x)
- if (x < 1)
- fun_l12_n529(x)
- else
- fun_l12_n477(x)
- end
-end
-
-def fun_l11_n14(x)
- if (x < 1)
- fun_l12_n743(x)
- else
- fun_l12_n847(x)
- end
-end
-
-def fun_l11_n15(x)
- if (x < 1)
- fun_l12_n558(x)
- else
- fun_l12_n252(x)
- end
-end
-
-def fun_l11_n16(x)
- if (x < 1)
- fun_l12_n115(x)
- else
- fun_l12_n972(x)
- end
-end
-
-def fun_l11_n17(x)
- if (x < 1)
- fun_l12_n374(x)
- else
- fun_l12_n637(x)
- end
-end
-
-def fun_l11_n18(x)
- if (x < 1)
- fun_l12_n978(x)
- else
- fun_l12_n570(x)
- end
-end
-
-def fun_l11_n19(x)
- if (x < 1)
- fun_l12_n264(x)
- else
- fun_l12_n743(x)
- end
-end
-
-def fun_l11_n20(x)
- if (x < 1)
- fun_l12_n936(x)
- else
- fun_l12_n986(x)
- end
-end
-
-def fun_l11_n21(x)
- if (x < 1)
- fun_l12_n107(x)
- else
- fun_l12_n167(x)
- end
-end
-
-def fun_l11_n22(x)
- if (x < 1)
- fun_l12_n777(x)
- else
- fun_l12_n143(x)
- end
-end
-
-def fun_l11_n23(x)
- if (x < 1)
- fun_l12_n510(x)
- else
- fun_l12_n236(x)
- end
-end
-
-def fun_l11_n24(x)
- if (x < 1)
- fun_l12_n180(x)
- else
- fun_l12_n309(x)
- end
-end
-
-def fun_l11_n25(x)
- if (x < 1)
- fun_l12_n850(x)
- else
- fun_l12_n374(x)
- end
-end
-
-def fun_l11_n26(x)
- if (x < 1)
- fun_l12_n573(x)
- else
- fun_l12_n722(x)
- end
-end
-
-def fun_l11_n27(x)
- if (x < 1)
- fun_l12_n800(x)
- else
- fun_l12_n981(x)
- end
-end
-
-def fun_l11_n28(x)
- if (x < 1)
- fun_l12_n705(x)
- else
- fun_l12_n636(x)
- end
-end
-
-def fun_l11_n29(x)
- if (x < 1)
- fun_l12_n618(x)
- else
- fun_l12_n429(x)
- end
-end
-
-def fun_l11_n30(x)
- if (x < 1)
- fun_l12_n139(x)
- else
- fun_l12_n95(x)
- end
-end
-
-def fun_l11_n31(x)
- if (x < 1)
- fun_l12_n861(x)
- else
- fun_l12_n797(x)
- end
-end
-
-def fun_l11_n32(x)
- if (x < 1)
- fun_l12_n576(x)
- else
- fun_l12_n719(x)
- end
-end
-
-def fun_l11_n33(x)
- if (x < 1)
- fun_l12_n236(x)
- else
- fun_l12_n429(x)
- end
-end
-
-def fun_l11_n34(x)
- if (x < 1)
- fun_l12_n375(x)
- else
- fun_l12_n696(x)
- end
-end
-
-def fun_l11_n35(x)
- if (x < 1)
- fun_l12_n291(x)
- else
- fun_l12_n799(x)
- end
-end
-
-def fun_l11_n36(x)
- if (x < 1)
- fun_l12_n180(x)
- else
- fun_l12_n228(x)
- end
-end
-
-def fun_l11_n37(x)
- if (x < 1)
- fun_l12_n455(x)
- else
- fun_l12_n983(x)
- end
-end
-
-def fun_l11_n38(x)
- if (x < 1)
- fun_l12_n486(x)
- else
- fun_l12_n871(x)
- end
-end
-
-def fun_l11_n39(x)
- if (x < 1)
- fun_l12_n945(x)
- else
- fun_l12_n47(x)
- end
-end
-
-def fun_l11_n40(x)
- if (x < 1)
- fun_l12_n531(x)
- else
- fun_l12_n506(x)
- end
-end
-
-def fun_l11_n41(x)
- if (x < 1)
- fun_l12_n248(x)
- else
- fun_l12_n142(x)
- end
-end
-
-def fun_l11_n42(x)
- if (x < 1)
- fun_l12_n415(x)
- else
- fun_l12_n177(x)
- end
-end
-
-def fun_l11_n43(x)
- if (x < 1)
- fun_l12_n560(x)
- else
- fun_l12_n63(x)
- end
-end
-
-def fun_l11_n44(x)
- if (x < 1)
- fun_l12_n180(x)
- else
- fun_l12_n268(x)
- end
-end
-
-def fun_l11_n45(x)
- if (x < 1)
- fun_l12_n814(x)
- else
- fun_l12_n967(x)
- end
-end
-
-def fun_l11_n46(x)
- if (x < 1)
- fun_l12_n273(x)
- else
- fun_l12_n702(x)
- end
-end
-
-def fun_l11_n47(x)
- if (x < 1)
- fun_l12_n626(x)
- else
- fun_l12_n615(x)
- end
-end
-
-def fun_l11_n48(x)
- if (x < 1)
- fun_l12_n374(x)
- else
- fun_l12_n669(x)
- end
-end
-
-def fun_l11_n49(x)
- if (x < 1)
- fun_l12_n681(x)
- else
- fun_l12_n48(x)
- end
-end
-
-def fun_l11_n50(x)
- if (x < 1)
- fun_l12_n3(x)
- else
- fun_l12_n455(x)
- end
-end
-
-def fun_l11_n51(x)
- if (x < 1)
- fun_l12_n461(x)
- else
- fun_l12_n350(x)
- end
-end
-
-def fun_l11_n52(x)
- if (x < 1)
- fun_l12_n129(x)
- else
- fun_l12_n266(x)
- end
-end
-
-def fun_l11_n53(x)
- if (x < 1)
- fun_l12_n802(x)
- else
- fun_l12_n863(x)
- end
-end
-
-def fun_l11_n54(x)
- if (x < 1)
- fun_l12_n216(x)
- else
- fun_l12_n820(x)
- end
-end
-
-def fun_l11_n55(x)
- if (x < 1)
- fun_l12_n626(x)
- else
- fun_l12_n476(x)
- end
-end
-
-def fun_l11_n56(x)
- if (x < 1)
- fun_l12_n162(x)
- else
- fun_l12_n796(x)
- end
-end
-
-def fun_l11_n57(x)
- if (x < 1)
- fun_l12_n45(x)
- else
- fun_l12_n893(x)
- end
-end
-
-def fun_l11_n58(x)
- if (x < 1)
- fun_l12_n227(x)
- else
- fun_l12_n919(x)
- end
-end
-
-def fun_l11_n59(x)
- if (x < 1)
- fun_l12_n300(x)
- else
- fun_l12_n360(x)
- end
-end
-
-def fun_l11_n60(x)
- if (x < 1)
- fun_l12_n265(x)
- else
- fun_l12_n552(x)
- end
-end
-
-def fun_l11_n61(x)
- if (x < 1)
- fun_l12_n927(x)
- else
- fun_l12_n486(x)
- end
-end
-
-def fun_l11_n62(x)
- if (x < 1)
- fun_l12_n94(x)
- else
- fun_l12_n28(x)
- end
-end
-
-def fun_l11_n63(x)
- if (x < 1)
- fun_l12_n295(x)
- else
- fun_l12_n967(x)
- end
-end
-
-def fun_l11_n64(x)
- if (x < 1)
- fun_l12_n713(x)
- else
- fun_l12_n463(x)
- end
-end
-
-def fun_l11_n65(x)
- if (x < 1)
- fun_l12_n454(x)
- else
- fun_l12_n616(x)
- end
-end
-
-def fun_l11_n66(x)
- if (x < 1)
- fun_l12_n121(x)
- else
- fun_l12_n277(x)
- end
-end
-
-def fun_l11_n67(x)
- if (x < 1)
- fun_l12_n524(x)
- else
- fun_l12_n242(x)
- end
-end
-
-def fun_l11_n68(x)
- if (x < 1)
- fun_l12_n570(x)
- else
- fun_l12_n658(x)
- end
-end
-
-def fun_l11_n69(x)
- if (x < 1)
- fun_l12_n343(x)
- else
- fun_l12_n826(x)
- end
-end
-
-def fun_l11_n70(x)
- if (x < 1)
- fun_l12_n732(x)
- else
- fun_l12_n993(x)
- end
-end
-
-def fun_l11_n71(x)
- if (x < 1)
- fun_l12_n380(x)
- else
- fun_l12_n486(x)
- end
-end
-
-def fun_l11_n72(x)
- if (x < 1)
- fun_l12_n55(x)
- else
- fun_l12_n342(x)
- end
-end
-
-def fun_l11_n73(x)
- if (x < 1)
- fun_l12_n789(x)
- else
- fun_l12_n646(x)
- end
-end
-
-def fun_l11_n74(x)
- if (x < 1)
- fun_l12_n106(x)
- else
- fun_l12_n557(x)
- end
-end
-
-def fun_l11_n75(x)
- if (x < 1)
- fun_l12_n368(x)
- else
- fun_l12_n5(x)
- end
-end
-
-def fun_l11_n76(x)
- if (x < 1)
- fun_l12_n992(x)
- else
- fun_l12_n521(x)
- end
-end
-
-def fun_l11_n77(x)
- if (x < 1)
- fun_l12_n754(x)
- else
- fun_l12_n259(x)
- end
-end
-
-def fun_l11_n78(x)
- if (x < 1)
- fun_l12_n855(x)
- else
- fun_l12_n946(x)
- end
-end
-
-def fun_l11_n79(x)
- if (x < 1)
- fun_l12_n727(x)
- else
- fun_l12_n422(x)
- end
-end
-
-def fun_l11_n80(x)
- if (x < 1)
- fun_l12_n649(x)
- else
- fun_l12_n593(x)
- end
-end
-
-def fun_l11_n81(x)
- if (x < 1)
- fun_l12_n206(x)
- else
- fun_l12_n222(x)
- end
-end
-
-def fun_l11_n82(x)
- if (x < 1)
- fun_l12_n995(x)
- else
- fun_l12_n471(x)
- end
-end
-
-def fun_l11_n83(x)
- if (x < 1)
- fun_l12_n926(x)
- else
- fun_l12_n165(x)
- end
-end
-
-def fun_l11_n84(x)
- if (x < 1)
- fun_l12_n988(x)
- else
- fun_l12_n495(x)
- end
-end
-
-def fun_l11_n85(x)
- if (x < 1)
- fun_l12_n839(x)
- else
- fun_l12_n565(x)
- end
-end
-
-def fun_l11_n86(x)
- if (x < 1)
- fun_l12_n381(x)
- else
- fun_l12_n981(x)
- end
-end
-
-def fun_l11_n87(x)
- if (x < 1)
- fun_l12_n64(x)
- else
- fun_l12_n616(x)
- end
-end
-
-def fun_l11_n88(x)
- if (x < 1)
- fun_l12_n714(x)
- else
- fun_l12_n995(x)
- end
-end
-
-def fun_l11_n89(x)
- if (x < 1)
- fun_l12_n796(x)
- else
- fun_l12_n534(x)
- end
-end
-
-def fun_l11_n90(x)
- if (x < 1)
- fun_l12_n31(x)
- else
- fun_l12_n584(x)
- end
-end
-
-def fun_l11_n91(x)
- if (x < 1)
- fun_l12_n741(x)
- else
- fun_l12_n356(x)
- end
-end
-
-def fun_l11_n92(x)
- if (x < 1)
- fun_l12_n418(x)
- else
- fun_l12_n184(x)
- end
-end
-
-def fun_l11_n93(x)
- if (x < 1)
- fun_l12_n427(x)
- else
- fun_l12_n136(x)
- end
-end
-
-def fun_l11_n94(x)
- if (x < 1)
- fun_l12_n968(x)
- else
- fun_l12_n647(x)
- end
-end
-
-def fun_l11_n95(x)
- if (x < 1)
- fun_l12_n641(x)
- else
- fun_l12_n675(x)
- end
-end
-
-def fun_l11_n96(x)
- if (x < 1)
- fun_l12_n465(x)
- else
- fun_l12_n507(x)
- end
-end
-
-def fun_l11_n97(x)
- if (x < 1)
- fun_l12_n910(x)
- else
- fun_l12_n718(x)
- end
-end
-
-def fun_l11_n98(x)
- if (x < 1)
- fun_l12_n686(x)
- else
- fun_l12_n94(x)
- end
-end
-
-def fun_l11_n99(x)
- if (x < 1)
- fun_l12_n94(x)
- else
- fun_l12_n632(x)
- end
-end
-
-def fun_l11_n100(x)
- if (x < 1)
- fun_l12_n270(x)
- else
- fun_l12_n228(x)
- end
-end
-
-def fun_l11_n101(x)
- if (x < 1)
- fun_l12_n569(x)
- else
- fun_l12_n492(x)
- end
-end
-
-def fun_l11_n102(x)
- if (x < 1)
- fun_l12_n187(x)
- else
- fun_l12_n183(x)
- end
-end
-
-def fun_l11_n103(x)
- if (x < 1)
- fun_l12_n894(x)
- else
- fun_l12_n655(x)
- end
-end
-
-def fun_l11_n104(x)
- if (x < 1)
- fun_l12_n347(x)
- else
- fun_l12_n467(x)
- end
-end
-
-def fun_l11_n105(x)
- if (x < 1)
- fun_l12_n198(x)
- else
- fun_l12_n838(x)
- end
-end
-
-def fun_l11_n106(x)
- if (x < 1)
- fun_l12_n941(x)
- else
- fun_l12_n98(x)
- end
-end
-
-def fun_l11_n107(x)
- if (x < 1)
- fun_l12_n406(x)
- else
- fun_l12_n773(x)
- end
-end
-
-def fun_l11_n108(x)
- if (x < 1)
- fun_l12_n980(x)
- else
- fun_l12_n508(x)
- end
-end
-
-def fun_l11_n109(x)
- if (x < 1)
- fun_l12_n286(x)
- else
- fun_l12_n928(x)
- end
-end
-
-def fun_l11_n110(x)
- if (x < 1)
- fun_l12_n710(x)
- else
- fun_l12_n20(x)
- end
-end
-
-def fun_l11_n111(x)
- if (x < 1)
- fun_l12_n358(x)
- else
- fun_l12_n549(x)
- end
-end
-
-def fun_l11_n112(x)
- if (x < 1)
- fun_l12_n359(x)
- else
- fun_l12_n548(x)
- end
-end
-
-def fun_l11_n113(x)
- if (x < 1)
- fun_l12_n665(x)
- else
- fun_l12_n802(x)
- end
-end
-
-def fun_l11_n114(x)
- if (x < 1)
- fun_l12_n199(x)
- else
- fun_l12_n904(x)
- end
-end
-
-def fun_l11_n115(x)
- if (x < 1)
- fun_l12_n995(x)
- else
- fun_l12_n319(x)
- end
-end
-
-def fun_l11_n116(x)
- if (x < 1)
- fun_l12_n873(x)
- else
- fun_l12_n786(x)
- end
-end
-
-def fun_l11_n117(x)
- if (x < 1)
- fun_l12_n147(x)
- else
- fun_l12_n542(x)
- end
-end
-
-def fun_l11_n118(x)
- if (x < 1)
- fun_l12_n669(x)
- else
- fun_l12_n871(x)
- end
-end
-
-def fun_l11_n119(x)
- if (x < 1)
- fun_l12_n552(x)
- else
- fun_l12_n998(x)
- end
-end
-
-def fun_l11_n120(x)
- if (x < 1)
- fun_l12_n300(x)
- else
- fun_l12_n333(x)
- end
-end
-
-def fun_l11_n121(x)
- if (x < 1)
- fun_l12_n846(x)
- else
- fun_l12_n133(x)
- end
-end
-
-def fun_l11_n122(x)
- if (x < 1)
- fun_l12_n946(x)
- else
- fun_l12_n540(x)
- end
-end
-
-def fun_l11_n123(x)
- if (x < 1)
- fun_l12_n71(x)
- else
- fun_l12_n264(x)
- end
-end
-
-def fun_l11_n124(x)
- if (x < 1)
- fun_l12_n410(x)
- else
- fun_l12_n60(x)
- end
-end
-
-def fun_l11_n125(x)
- if (x < 1)
- fun_l12_n62(x)
- else
- fun_l12_n211(x)
- end
-end
-
-def fun_l11_n126(x)
- if (x < 1)
- fun_l12_n252(x)
- else
- fun_l12_n635(x)
- end
-end
-
-def fun_l11_n127(x)
- if (x < 1)
- fun_l12_n444(x)
- else
- fun_l12_n735(x)
- end
-end
-
-def fun_l11_n128(x)
- if (x < 1)
- fun_l12_n3(x)
- else
- fun_l12_n403(x)
- end
-end
-
-def fun_l11_n129(x)
- if (x < 1)
- fun_l12_n121(x)
- else
- fun_l12_n882(x)
- end
-end
-
-def fun_l11_n130(x)
- if (x < 1)
- fun_l12_n985(x)
- else
- fun_l12_n983(x)
- end
-end
-
-def fun_l11_n131(x)
- if (x < 1)
- fun_l12_n413(x)
- else
- fun_l12_n117(x)
- end
-end
-
-def fun_l11_n132(x)
- if (x < 1)
- fun_l12_n856(x)
- else
- fun_l12_n312(x)
- end
-end
-
-def fun_l11_n133(x)
- if (x < 1)
- fun_l12_n249(x)
- else
- fun_l12_n870(x)
- end
-end
-
-def fun_l11_n134(x)
- if (x < 1)
- fun_l12_n367(x)
- else
- fun_l12_n748(x)
- end
-end
-
-def fun_l11_n135(x)
- if (x < 1)
- fun_l12_n670(x)
- else
- fun_l12_n464(x)
- end
-end
-
-def fun_l11_n136(x)
- if (x < 1)
- fun_l12_n698(x)
- else
- fun_l12_n238(x)
- end
-end
-
-def fun_l11_n137(x)
- if (x < 1)
- fun_l12_n856(x)
- else
- fun_l12_n660(x)
- end
-end
-
-def fun_l11_n138(x)
- if (x < 1)
- fun_l12_n693(x)
- else
- fun_l12_n793(x)
- end
-end
-
-def fun_l11_n139(x)
- if (x < 1)
- fun_l12_n959(x)
- else
- fun_l12_n377(x)
- end
-end
-
-def fun_l11_n140(x)
- if (x < 1)
- fun_l12_n24(x)
- else
- fun_l12_n250(x)
- end
-end
-
-def fun_l11_n141(x)
- if (x < 1)
- fun_l12_n270(x)
- else
- fun_l12_n720(x)
- end
-end
-
-def fun_l11_n142(x)
- if (x < 1)
- fun_l12_n775(x)
- else
- fun_l12_n781(x)
- end
-end
-
-def fun_l11_n143(x)
- if (x < 1)
- fun_l12_n266(x)
- else
- fun_l12_n608(x)
- end
-end
-
-def fun_l11_n144(x)
- if (x < 1)
- fun_l12_n196(x)
- else
- fun_l12_n70(x)
- end
-end
-
-def fun_l11_n145(x)
- if (x < 1)
- fun_l12_n100(x)
- else
- fun_l12_n846(x)
- end
-end
-
-def fun_l11_n146(x)
- if (x < 1)
- fun_l12_n406(x)
- else
- fun_l12_n966(x)
- end
-end
-
-def fun_l11_n147(x)
- if (x < 1)
- fun_l12_n816(x)
- else
- fun_l12_n54(x)
- end
-end
-
-def fun_l11_n148(x)
- if (x < 1)
- fun_l12_n856(x)
- else
- fun_l12_n710(x)
- end
-end
-
-def fun_l11_n149(x)
- if (x < 1)
- fun_l12_n597(x)
- else
- fun_l12_n596(x)
- end
-end
-
-def fun_l11_n150(x)
- if (x < 1)
- fun_l12_n938(x)
- else
- fun_l12_n349(x)
- end
-end
-
-def fun_l11_n151(x)
- if (x < 1)
- fun_l12_n987(x)
- else
- fun_l12_n231(x)
- end
-end
-
-def fun_l11_n152(x)
- if (x < 1)
- fun_l12_n67(x)
- else
- fun_l12_n685(x)
- end
-end
-
-def fun_l11_n153(x)
- if (x < 1)
- fun_l12_n786(x)
- else
- fun_l12_n71(x)
- end
-end
-
-def fun_l11_n154(x)
- if (x < 1)
- fun_l12_n245(x)
- else
- fun_l12_n109(x)
- end
-end
-
-def fun_l11_n155(x)
- if (x < 1)
- fun_l12_n665(x)
- else
- fun_l12_n565(x)
- end
-end
-
-def fun_l11_n156(x)
- if (x < 1)
- fun_l12_n885(x)
- else
- fun_l12_n27(x)
- end
-end
-
-def fun_l11_n157(x)
- if (x < 1)
- fun_l12_n704(x)
- else
- fun_l12_n140(x)
- end
-end
-
-def fun_l11_n158(x)
- if (x < 1)
- fun_l12_n505(x)
- else
- fun_l12_n428(x)
- end
-end
-
-def fun_l11_n159(x)
- if (x < 1)
- fun_l12_n646(x)
- else
- fun_l12_n250(x)
- end
-end
-
-def fun_l11_n160(x)
- if (x < 1)
- fun_l12_n125(x)
- else
- fun_l12_n22(x)
- end
-end
-
-def fun_l11_n161(x)
- if (x < 1)
- fun_l12_n49(x)
- else
- fun_l12_n852(x)
- end
-end
-
-def fun_l11_n162(x)
- if (x < 1)
- fun_l12_n992(x)
- else
- fun_l12_n321(x)
- end
-end
-
-def fun_l11_n163(x)
- if (x < 1)
- fun_l12_n457(x)
- else
- fun_l12_n162(x)
- end
-end
-
-def fun_l11_n164(x)
- if (x < 1)
- fun_l12_n612(x)
- else
- fun_l12_n107(x)
- end
-end
-
-def fun_l11_n165(x)
- if (x < 1)
- fun_l12_n786(x)
- else
- fun_l12_n338(x)
- end
-end
-
-def fun_l11_n166(x)
- if (x < 1)
- fun_l12_n623(x)
- else
- fun_l12_n18(x)
- end
-end
-
-def fun_l11_n167(x)
- if (x < 1)
- fun_l12_n605(x)
- else
- fun_l12_n963(x)
- end
-end
-
-def fun_l11_n168(x)
- if (x < 1)
- fun_l12_n111(x)
- else
- fun_l12_n822(x)
- end
-end
-
-def fun_l11_n169(x)
- if (x < 1)
- fun_l12_n502(x)
- else
- fun_l12_n291(x)
- end
-end
-
-def fun_l11_n170(x)
- if (x < 1)
- fun_l12_n984(x)
- else
- fun_l12_n950(x)
- end
-end
-
-def fun_l11_n171(x)
- if (x < 1)
- fun_l12_n915(x)
- else
- fun_l12_n81(x)
- end
-end
-
-def fun_l11_n172(x)
- if (x < 1)
- fun_l12_n839(x)
- else
- fun_l12_n405(x)
- end
-end
-
-def fun_l11_n173(x)
- if (x < 1)
- fun_l12_n331(x)
- else
- fun_l12_n906(x)
- end
-end
-
-def fun_l11_n174(x)
- if (x < 1)
- fun_l12_n698(x)
- else
- fun_l12_n378(x)
- end
-end
-
-def fun_l11_n175(x)
- if (x < 1)
- fun_l12_n648(x)
- else
- fun_l12_n824(x)
- end
-end
-
-def fun_l11_n176(x)
- if (x < 1)
- fun_l12_n876(x)
- else
- fun_l12_n873(x)
- end
-end
-
-def fun_l11_n177(x)
- if (x < 1)
- fun_l12_n932(x)
- else
- fun_l12_n797(x)
- end
-end
-
-def fun_l11_n178(x)
- if (x < 1)
- fun_l12_n975(x)
- else
- fun_l12_n166(x)
- end
-end
-
-def fun_l11_n179(x)
- if (x < 1)
- fun_l12_n66(x)
- else
- fun_l12_n624(x)
- end
-end
-
-def fun_l11_n180(x)
- if (x < 1)
- fun_l12_n676(x)
- else
- fun_l12_n603(x)
- end
-end
-
-def fun_l11_n181(x)
- if (x < 1)
- fun_l12_n80(x)
- else
- fun_l12_n504(x)
- end
-end
-
-def fun_l11_n182(x)
- if (x < 1)
- fun_l12_n465(x)
- else
- fun_l12_n319(x)
- end
-end
-
-def fun_l11_n183(x)
- if (x < 1)
- fun_l12_n493(x)
- else
- fun_l12_n412(x)
- end
-end
-
-def fun_l11_n184(x)
- if (x < 1)
- fun_l12_n278(x)
- else
- fun_l12_n145(x)
- end
-end
-
-def fun_l11_n185(x)
- if (x < 1)
- fun_l12_n328(x)
- else
- fun_l12_n777(x)
- end
-end
-
-def fun_l11_n186(x)
- if (x < 1)
- fun_l12_n120(x)
- else
- fun_l12_n462(x)
- end
-end
-
-def fun_l11_n187(x)
- if (x < 1)
- fun_l12_n755(x)
- else
- fun_l12_n260(x)
- end
-end
-
-def fun_l11_n188(x)
- if (x < 1)
- fun_l12_n378(x)
- else
- fun_l12_n174(x)
- end
-end
-
-def fun_l11_n189(x)
- if (x < 1)
- fun_l12_n100(x)
- else
- fun_l12_n234(x)
- end
-end
-
-def fun_l11_n190(x)
- if (x < 1)
- fun_l12_n132(x)
- else
- fun_l12_n437(x)
- end
-end
-
-def fun_l11_n191(x)
- if (x < 1)
- fun_l12_n399(x)
- else
- fun_l12_n989(x)
- end
-end
-
-def fun_l11_n192(x)
- if (x < 1)
- fun_l12_n355(x)
- else
- fun_l12_n953(x)
- end
-end
-
-def fun_l11_n193(x)
- if (x < 1)
- fun_l12_n139(x)
- else
- fun_l12_n138(x)
- end
-end
-
-def fun_l11_n194(x)
- if (x < 1)
- fun_l12_n294(x)
- else
- fun_l12_n676(x)
- end
-end
-
-def fun_l11_n195(x)
- if (x < 1)
- fun_l12_n581(x)
- else
- fun_l12_n549(x)
- end
-end
-
-def fun_l11_n196(x)
- if (x < 1)
- fun_l12_n555(x)
- else
- fun_l12_n738(x)
- end
-end
-
-def fun_l11_n197(x)
- if (x < 1)
- fun_l12_n170(x)
- else
- fun_l12_n476(x)
- end
-end
-
-def fun_l11_n198(x)
- if (x < 1)
- fun_l12_n350(x)
- else
- fun_l12_n576(x)
- end
-end
-
-def fun_l11_n199(x)
- if (x < 1)
- fun_l12_n647(x)
- else
- fun_l12_n94(x)
- end
-end
-
-def fun_l11_n200(x)
- if (x < 1)
- fun_l12_n28(x)
- else
- fun_l12_n706(x)
- end
-end
-
-def fun_l11_n201(x)
- if (x < 1)
- fun_l12_n189(x)
- else
- fun_l12_n366(x)
- end
-end
-
-def fun_l11_n202(x)
- if (x < 1)
- fun_l12_n690(x)
- else
- fun_l12_n807(x)
- end
-end
-
-def fun_l11_n203(x)
- if (x < 1)
- fun_l12_n402(x)
- else
- fun_l12_n685(x)
- end
-end
-
-def fun_l11_n204(x)
- if (x < 1)
- fun_l12_n232(x)
- else
- fun_l12_n257(x)
- end
-end
-
-def fun_l11_n205(x)
- if (x < 1)
- fun_l12_n108(x)
- else
- fun_l12_n888(x)
- end
-end
-
-def fun_l11_n206(x)
- if (x < 1)
- fun_l12_n494(x)
- else
- fun_l12_n372(x)
- end
-end
-
-def fun_l11_n207(x)
- if (x < 1)
- fun_l12_n607(x)
- else
- fun_l12_n336(x)
- end
-end
-
-def fun_l11_n208(x)
- if (x < 1)
- fun_l12_n913(x)
- else
- fun_l12_n134(x)
- end
-end
-
-def fun_l11_n209(x)
- if (x < 1)
- fun_l12_n996(x)
- else
- fun_l12_n918(x)
- end
-end
-
-def fun_l11_n210(x)
- if (x < 1)
- fun_l12_n674(x)
- else
- fun_l12_n260(x)
- end
-end
-
-def fun_l11_n211(x)
- if (x < 1)
- fun_l12_n344(x)
- else
- fun_l12_n219(x)
- end
-end
-
-def fun_l11_n212(x)
- if (x < 1)
- fun_l12_n161(x)
- else
- fun_l12_n415(x)
- end
-end
-
-def fun_l11_n213(x)
- if (x < 1)
- fun_l12_n65(x)
- else
- fun_l12_n777(x)
- end
-end
-
-def fun_l11_n214(x)
- if (x < 1)
- fun_l12_n369(x)
- else
- fun_l12_n899(x)
- end
-end
-
-def fun_l11_n215(x)
- if (x < 1)
- fun_l12_n310(x)
- else
- fun_l12_n118(x)
- end
-end
-
-def fun_l11_n216(x)
- if (x < 1)
- fun_l12_n326(x)
- else
- fun_l12_n823(x)
- end
-end
-
-def fun_l11_n217(x)
- if (x < 1)
- fun_l12_n981(x)
- else
- fun_l12_n824(x)
- end
-end
-
-def fun_l11_n218(x)
- if (x < 1)
- fun_l12_n425(x)
- else
- fun_l12_n483(x)
- end
-end
-
-def fun_l11_n219(x)
- if (x < 1)
- fun_l12_n931(x)
- else
- fun_l12_n366(x)
- end
-end
-
-def fun_l11_n220(x)
- if (x < 1)
- fun_l12_n325(x)
- else
- fun_l12_n926(x)
- end
-end
-
-def fun_l11_n221(x)
- if (x < 1)
- fun_l12_n924(x)
- else
- fun_l12_n764(x)
- end
-end
-
-def fun_l11_n222(x)
- if (x < 1)
- fun_l12_n407(x)
- else
- fun_l12_n137(x)
- end
-end
-
-def fun_l11_n223(x)
- if (x < 1)
- fun_l12_n584(x)
- else
- fun_l12_n294(x)
- end
-end
-
-def fun_l11_n224(x)
- if (x < 1)
- fun_l12_n39(x)
- else
- fun_l12_n795(x)
- end
-end
-
-def fun_l11_n225(x)
- if (x < 1)
- fun_l12_n37(x)
- else
- fun_l12_n738(x)
- end
-end
-
-def fun_l11_n226(x)
- if (x < 1)
- fun_l12_n779(x)
- else
- fun_l12_n152(x)
- end
-end
-
-def fun_l11_n227(x)
- if (x < 1)
- fun_l12_n116(x)
- else
- fun_l12_n589(x)
- end
-end
-
-def fun_l11_n228(x)
- if (x < 1)
- fun_l12_n500(x)
- else
- fun_l12_n916(x)
- end
-end
-
-def fun_l11_n229(x)
- if (x < 1)
- fun_l12_n443(x)
- else
- fun_l12_n126(x)
- end
-end
-
-def fun_l11_n230(x)
- if (x < 1)
- fun_l12_n311(x)
- else
- fun_l12_n184(x)
- end
-end
-
-def fun_l11_n231(x)
- if (x < 1)
- fun_l12_n604(x)
- else
- fun_l12_n171(x)
- end
-end
-
-def fun_l11_n232(x)
- if (x < 1)
- fun_l12_n287(x)
- else
- fun_l12_n899(x)
- end
-end
-
-def fun_l11_n233(x)
- if (x < 1)
- fun_l12_n834(x)
- else
- fun_l12_n435(x)
- end
-end
-
-def fun_l11_n234(x)
- if (x < 1)
- fun_l12_n187(x)
- else
- fun_l12_n584(x)
- end
-end
-
-def fun_l11_n235(x)
- if (x < 1)
- fun_l12_n711(x)
- else
- fun_l12_n542(x)
- end
-end
-
-def fun_l11_n236(x)
- if (x < 1)
- fun_l12_n797(x)
- else
- fun_l12_n702(x)
- end
-end
-
-def fun_l11_n237(x)
- if (x < 1)
- fun_l12_n645(x)
- else
- fun_l12_n691(x)
- end
-end
-
-def fun_l11_n238(x)
- if (x < 1)
- fun_l12_n920(x)
- else
- fun_l12_n97(x)
- end
-end
-
-def fun_l11_n239(x)
- if (x < 1)
- fun_l12_n491(x)
- else
- fun_l12_n172(x)
- end
-end
-
-def fun_l11_n240(x)
- if (x < 1)
- fun_l12_n882(x)
- else
- fun_l12_n596(x)
- end
-end
-
-def fun_l11_n241(x)
- if (x < 1)
- fun_l12_n178(x)
- else
- fun_l12_n671(x)
- end
-end
-
-def fun_l11_n242(x)
- if (x < 1)
- fun_l12_n483(x)
- else
- fun_l12_n143(x)
- end
-end
-
-def fun_l11_n243(x)
- if (x < 1)
- fun_l12_n677(x)
- else
- fun_l12_n542(x)
- end
-end
-
-def fun_l11_n244(x)
- if (x < 1)
- fun_l12_n676(x)
- else
- fun_l12_n873(x)
- end
-end
-
-def fun_l11_n245(x)
- if (x < 1)
- fun_l12_n393(x)
- else
- fun_l12_n532(x)
- end
-end
-
-def fun_l11_n246(x)
- if (x < 1)
- fun_l12_n704(x)
- else
- fun_l12_n885(x)
- end
-end
-
-def fun_l11_n247(x)
- if (x < 1)
- fun_l12_n668(x)
- else
- fun_l12_n305(x)
- end
-end
-
-def fun_l11_n248(x)
- if (x < 1)
- fun_l12_n925(x)
- else
- fun_l12_n342(x)
- end
-end
-
-def fun_l11_n249(x)
- if (x < 1)
- fun_l12_n487(x)
- else
- fun_l12_n517(x)
- end
-end
-
-def fun_l11_n250(x)
- if (x < 1)
- fun_l12_n889(x)
- else
- fun_l12_n91(x)
- end
-end
-
-def fun_l11_n251(x)
- if (x < 1)
- fun_l12_n908(x)
- else
- fun_l12_n645(x)
- end
-end
-
-def fun_l11_n252(x)
- if (x < 1)
- fun_l12_n747(x)
- else
- fun_l12_n736(x)
- end
-end
-
-def fun_l11_n253(x)
- if (x < 1)
- fun_l12_n749(x)
- else
- fun_l12_n264(x)
- end
-end
-
-def fun_l11_n254(x)
- if (x < 1)
- fun_l12_n353(x)
- else
- fun_l12_n120(x)
- end
-end
-
-def fun_l11_n255(x)
- if (x < 1)
- fun_l12_n231(x)
- else
- fun_l12_n211(x)
- end
-end
-
-def fun_l11_n256(x)
- if (x < 1)
- fun_l12_n66(x)
- else
- fun_l12_n998(x)
- end
-end
-
-def fun_l11_n257(x)
- if (x < 1)
- fun_l12_n818(x)
- else
- fun_l12_n37(x)
- end
-end
-
-def fun_l11_n258(x)
- if (x < 1)
- fun_l12_n96(x)
- else
- fun_l12_n489(x)
- end
-end
-
-def fun_l11_n259(x)
- if (x < 1)
- fun_l12_n86(x)
- else
- fun_l12_n432(x)
- end
-end
-
-def fun_l11_n260(x)
- if (x < 1)
- fun_l12_n774(x)
- else
- fun_l12_n203(x)
- end
-end
-
-def fun_l11_n261(x)
- if (x < 1)
- fun_l12_n935(x)
- else
- fun_l12_n29(x)
- end
-end
-
-def fun_l11_n262(x)
- if (x < 1)
- fun_l12_n599(x)
- else
- fun_l12_n204(x)
- end
-end
-
-def fun_l11_n263(x)
- if (x < 1)
- fun_l12_n63(x)
- else
- fun_l12_n866(x)
- end
-end
-
-def fun_l11_n264(x)
- if (x < 1)
- fun_l12_n892(x)
- else
- fun_l12_n847(x)
- end
-end
-
-def fun_l11_n265(x)
- if (x < 1)
- fun_l12_n695(x)
- else
- fun_l12_n881(x)
- end
-end
-
-def fun_l11_n266(x)
- if (x < 1)
- fun_l12_n176(x)
- else
- fun_l12_n39(x)
- end
-end
-
-def fun_l11_n267(x)
- if (x < 1)
- fun_l12_n448(x)
- else
- fun_l12_n744(x)
- end
-end
-
-def fun_l11_n268(x)
- if (x < 1)
- fun_l12_n587(x)
- else
- fun_l12_n462(x)
- end
-end
-
-def fun_l11_n269(x)
- if (x < 1)
- fun_l12_n670(x)
- else
- fun_l12_n797(x)
- end
-end
-
-def fun_l11_n270(x)
- if (x < 1)
- fun_l12_n856(x)
- else
- fun_l12_n903(x)
- end
-end
-
-def fun_l11_n271(x)
- if (x < 1)
- fun_l12_n914(x)
- else
- fun_l12_n459(x)
- end
-end
-
-def fun_l11_n272(x)
- if (x < 1)
- fun_l12_n932(x)
- else
- fun_l12_n10(x)
- end
-end
-
-def fun_l11_n273(x)
- if (x < 1)
- fun_l12_n554(x)
- else
- fun_l12_n528(x)
- end
-end
-
-def fun_l11_n274(x)
- if (x < 1)
- fun_l12_n698(x)
- else
- fun_l12_n899(x)
- end
-end
-
-def fun_l11_n275(x)
- if (x < 1)
- fun_l12_n907(x)
- else
- fun_l12_n945(x)
- end
-end
-
-def fun_l11_n276(x)
- if (x < 1)
- fun_l12_n421(x)
- else
- fun_l12_n575(x)
- end
-end
-
-def fun_l11_n277(x)
- if (x < 1)
- fun_l12_n757(x)
- else
- fun_l12_n808(x)
- end
-end
-
-def fun_l11_n278(x)
- if (x < 1)
- fun_l12_n527(x)
- else
- fun_l12_n438(x)
- end
-end
-
-def fun_l11_n279(x)
- if (x < 1)
- fun_l12_n263(x)
- else
- fun_l12_n842(x)
- end
-end
-
-def fun_l11_n280(x)
- if (x < 1)
- fun_l12_n603(x)
- else
- fun_l12_n899(x)
- end
-end
-
-def fun_l11_n281(x)
- if (x < 1)
- fun_l12_n486(x)
- else
- fun_l12_n380(x)
- end
-end
-
-def fun_l11_n282(x)
- if (x < 1)
- fun_l12_n699(x)
- else
- fun_l12_n199(x)
- end
-end
-
-def fun_l11_n283(x)
- if (x < 1)
- fun_l12_n422(x)
- else
- fun_l12_n258(x)
- end
-end
-
-def fun_l11_n284(x)
- if (x < 1)
- fun_l12_n255(x)
- else
- fun_l12_n752(x)
- end
-end
-
-def fun_l11_n285(x)
- if (x < 1)
- fun_l12_n506(x)
- else
- fun_l12_n801(x)
- end
-end
-
-def fun_l11_n286(x)
- if (x < 1)
- fun_l12_n535(x)
- else
- fun_l12_n892(x)
- end
-end
-
-def fun_l11_n287(x)
- if (x < 1)
- fun_l12_n547(x)
- else
- fun_l12_n74(x)
- end
-end
-
-def fun_l11_n288(x)
- if (x < 1)
- fun_l12_n923(x)
- else
- fun_l12_n135(x)
- end
-end
-
-def fun_l11_n289(x)
- if (x < 1)
- fun_l12_n78(x)
- else
- fun_l12_n704(x)
- end
-end
-
-def fun_l11_n290(x)
- if (x < 1)
- fun_l12_n771(x)
- else
- fun_l12_n915(x)
- end
-end
-
-def fun_l11_n291(x)
- if (x < 1)
- fun_l12_n184(x)
- else
- fun_l12_n188(x)
- end
-end
-
-def fun_l11_n292(x)
- if (x < 1)
- fun_l12_n736(x)
- else
- fun_l12_n190(x)
- end
-end
-
-def fun_l11_n293(x)
- if (x < 1)
- fun_l12_n301(x)
- else
- fun_l12_n745(x)
- end
-end
-
-def fun_l11_n294(x)
- if (x < 1)
- fun_l12_n525(x)
- else
- fun_l12_n603(x)
- end
-end
-
-def fun_l11_n295(x)
- if (x < 1)
- fun_l12_n339(x)
- else
- fun_l12_n996(x)
- end
-end
-
-def fun_l11_n296(x)
- if (x < 1)
- fun_l12_n491(x)
- else
- fun_l12_n601(x)
- end
-end
-
-def fun_l11_n297(x)
- if (x < 1)
- fun_l12_n449(x)
- else
- fun_l12_n361(x)
- end
-end
-
-def fun_l11_n298(x)
- if (x < 1)
- fun_l12_n617(x)
- else
- fun_l12_n346(x)
- end
-end
-
-def fun_l11_n299(x)
- if (x < 1)
- fun_l12_n578(x)
- else
- fun_l12_n147(x)
- end
-end
-
-def fun_l11_n300(x)
- if (x < 1)
- fun_l12_n73(x)
- else
- fun_l12_n360(x)
- end
-end
-
-def fun_l11_n301(x)
- if (x < 1)
- fun_l12_n398(x)
- else
- fun_l12_n749(x)
- end
-end
-
-def fun_l11_n302(x)
- if (x < 1)
- fun_l12_n871(x)
- else
- fun_l12_n745(x)
- end
-end
-
-def fun_l11_n303(x)
- if (x < 1)
- fun_l12_n669(x)
- else
- fun_l12_n196(x)
- end
-end
-
-def fun_l11_n304(x)
- if (x < 1)
- fun_l12_n202(x)
- else
- fun_l12_n173(x)
- end
-end
-
-def fun_l11_n305(x)
- if (x < 1)
- fun_l12_n975(x)
- else
- fun_l12_n859(x)
- end
-end
-
-def fun_l11_n306(x)
- if (x < 1)
- fun_l12_n776(x)
- else
- fun_l12_n433(x)
- end
-end
-
-def fun_l11_n307(x)
- if (x < 1)
- fun_l12_n760(x)
- else
- fun_l12_n4(x)
- end
-end
-
-def fun_l11_n308(x)
- if (x < 1)
- fun_l12_n834(x)
- else
- fun_l12_n276(x)
- end
-end
-
-def fun_l11_n309(x)
- if (x < 1)
- fun_l12_n162(x)
- else
- fun_l12_n741(x)
- end
-end
-
-def fun_l11_n310(x)
- if (x < 1)
- fun_l12_n231(x)
- else
- fun_l12_n646(x)
- end
-end
-
-def fun_l11_n311(x)
- if (x < 1)
- fun_l12_n90(x)
- else
- fun_l12_n46(x)
- end
-end
-
-def fun_l11_n312(x)
- if (x < 1)
- fun_l12_n101(x)
- else
- fun_l12_n75(x)
- end
-end
-
-def fun_l11_n313(x)
- if (x < 1)
- fun_l12_n415(x)
- else
- fun_l12_n535(x)
- end
-end
-
-def fun_l11_n314(x)
- if (x < 1)
- fun_l12_n550(x)
- else
- fun_l12_n305(x)
- end
-end
-
-def fun_l11_n315(x)
- if (x < 1)
- fun_l12_n971(x)
- else
- fun_l12_n700(x)
- end
-end
-
-def fun_l11_n316(x)
- if (x < 1)
- fun_l12_n942(x)
- else
- fun_l12_n793(x)
- end
-end
-
-def fun_l11_n317(x)
- if (x < 1)
- fun_l12_n771(x)
- else
- fun_l12_n383(x)
- end
-end
-
-def fun_l11_n318(x)
- if (x < 1)
- fun_l12_n846(x)
- else
- fun_l12_n504(x)
- end
-end
-
-def fun_l11_n319(x)
- if (x < 1)
- fun_l12_n28(x)
- else
- fun_l12_n174(x)
- end
-end
-
-def fun_l11_n320(x)
- if (x < 1)
- fun_l12_n437(x)
- else
- fun_l12_n355(x)
- end
-end
-
-def fun_l11_n321(x)
- if (x < 1)
- fun_l12_n954(x)
- else
- fun_l12_n78(x)
- end
-end
-
-def fun_l11_n322(x)
- if (x < 1)
- fun_l12_n256(x)
- else
- fun_l12_n729(x)
- end
-end
-
-def fun_l11_n323(x)
- if (x < 1)
- fun_l12_n41(x)
- else
- fun_l12_n88(x)
- end
-end
-
-def fun_l11_n324(x)
- if (x < 1)
- fun_l12_n256(x)
- else
- fun_l12_n162(x)
- end
-end
-
-def fun_l11_n325(x)
- if (x < 1)
- fun_l12_n143(x)
- else
- fun_l12_n506(x)
- end
-end
-
-def fun_l11_n326(x)
- if (x < 1)
- fun_l12_n686(x)
- else
- fun_l12_n968(x)
- end
-end
-
-def fun_l11_n327(x)
- if (x < 1)
- fun_l12_n235(x)
- else
- fun_l12_n246(x)
- end
-end
-
-def fun_l11_n328(x)
- if (x < 1)
- fun_l12_n85(x)
- else
- fun_l12_n125(x)
- end
-end
-
-def fun_l11_n329(x)
- if (x < 1)
- fun_l12_n877(x)
- else
- fun_l12_n193(x)
- end
-end
-
-def fun_l11_n330(x)
- if (x < 1)
- fun_l12_n678(x)
- else
- fun_l12_n147(x)
- end
-end
-
-def fun_l11_n331(x)
- if (x < 1)
- fun_l12_n402(x)
- else
- fun_l12_n747(x)
- end
-end
-
-def fun_l11_n332(x)
- if (x < 1)
- fun_l12_n390(x)
- else
- fun_l12_n852(x)
- end
-end
-
-def fun_l11_n333(x)
- if (x < 1)
- fun_l12_n299(x)
- else
- fun_l12_n122(x)
- end
-end
-
-def fun_l11_n334(x)
- if (x < 1)
- fun_l12_n398(x)
- else
- fun_l12_n886(x)
- end
-end
-
-def fun_l11_n335(x)
- if (x < 1)
- fun_l12_n128(x)
- else
- fun_l12_n729(x)
- end
-end
-
-def fun_l11_n336(x)
- if (x < 1)
- fun_l12_n611(x)
- else
- fun_l12_n75(x)
- end
-end
-
-def fun_l11_n337(x)
- if (x < 1)
- fun_l12_n327(x)
- else
- fun_l12_n442(x)
- end
-end
-
-def fun_l11_n338(x)
- if (x < 1)
- fun_l12_n353(x)
- else
- fun_l12_n259(x)
- end
-end
-
-def fun_l11_n339(x)
- if (x < 1)
- fun_l12_n173(x)
- else
- fun_l12_n846(x)
- end
-end
-
-def fun_l11_n340(x)
- if (x < 1)
- fun_l12_n579(x)
- else
- fun_l12_n869(x)
- end
-end
-
-def fun_l11_n341(x)
- if (x < 1)
- fun_l12_n336(x)
- else
- fun_l12_n364(x)
- end
-end
-
-def fun_l11_n342(x)
- if (x < 1)
- fun_l12_n355(x)
- else
- fun_l12_n317(x)
- end
-end
-
-def fun_l11_n343(x)
- if (x < 1)
- fun_l12_n560(x)
- else
- fun_l12_n202(x)
- end
-end
-
-def fun_l11_n344(x)
- if (x < 1)
- fun_l12_n232(x)
- else
- fun_l12_n447(x)
- end
-end
-
-def fun_l11_n345(x)
- if (x < 1)
- fun_l12_n712(x)
- else
- fun_l12_n205(x)
- end
-end
-
-def fun_l11_n346(x)
- if (x < 1)
- fun_l12_n102(x)
- else
- fun_l12_n785(x)
- end
-end
-
-def fun_l11_n347(x)
- if (x < 1)
- fun_l12_n545(x)
- else
- fun_l12_n186(x)
- end
-end
-
-def fun_l11_n348(x)
- if (x < 1)
- fun_l12_n530(x)
- else
- fun_l12_n705(x)
- end
-end
-
-def fun_l11_n349(x)
- if (x < 1)
- fun_l12_n428(x)
- else
- fun_l12_n295(x)
- end
-end
-
-def fun_l11_n350(x)
- if (x < 1)
- fun_l12_n855(x)
- else
- fun_l12_n232(x)
- end
-end
-
-def fun_l11_n351(x)
- if (x < 1)
- fun_l12_n759(x)
- else
- fun_l12_n13(x)
- end
-end
-
-def fun_l11_n352(x)
- if (x < 1)
- fun_l12_n366(x)
- else
- fun_l12_n700(x)
- end
-end
-
-def fun_l11_n353(x)
- if (x < 1)
- fun_l12_n814(x)
- else
- fun_l12_n101(x)
- end
-end
-
-def fun_l11_n354(x)
- if (x < 1)
- fun_l12_n788(x)
- else
- fun_l12_n509(x)
- end
-end
-
-def fun_l11_n355(x)
- if (x < 1)
- fun_l12_n619(x)
- else
- fun_l12_n531(x)
- end
-end
-
-def fun_l11_n356(x)
- if (x < 1)
- fun_l12_n142(x)
- else
- fun_l12_n586(x)
- end
-end
-
-def fun_l11_n357(x)
- if (x < 1)
- fun_l12_n772(x)
- else
- fun_l12_n714(x)
- end
-end
-
-def fun_l11_n358(x)
- if (x < 1)
- fun_l12_n506(x)
- else
- fun_l12_n405(x)
- end
-end
-
-def fun_l11_n359(x)
- if (x < 1)
- fun_l12_n991(x)
- else
- fun_l12_n141(x)
- end
-end
-
-def fun_l11_n360(x)
- if (x < 1)
- fun_l12_n156(x)
- else
- fun_l12_n67(x)
- end
-end
-
-def fun_l11_n361(x)
- if (x < 1)
- fun_l12_n525(x)
- else
- fun_l12_n293(x)
- end
-end
-
-def fun_l11_n362(x)
- if (x < 1)
- fun_l12_n396(x)
- else
- fun_l12_n931(x)
- end
-end
-
-def fun_l11_n363(x)
- if (x < 1)
- fun_l12_n153(x)
- else
- fun_l12_n831(x)
- end
-end
-
-def fun_l11_n364(x)
- if (x < 1)
- fun_l12_n240(x)
- else
- fun_l12_n450(x)
- end
-end
-
-def fun_l11_n365(x)
- if (x < 1)
- fun_l12_n514(x)
- else
- fun_l12_n312(x)
- end
-end
-
-def fun_l11_n366(x)
- if (x < 1)
- fun_l12_n456(x)
- else
- fun_l12_n221(x)
- end
-end
-
-def fun_l11_n367(x)
- if (x < 1)
- fun_l12_n920(x)
- else
- fun_l12_n699(x)
- end
-end
-
-def fun_l11_n368(x)
- if (x < 1)
- fun_l12_n738(x)
- else
- fun_l12_n793(x)
- end
-end
-
-def fun_l11_n369(x)
- if (x < 1)
- fun_l12_n13(x)
- else
- fun_l12_n812(x)
- end
-end
-
-def fun_l11_n370(x)
- if (x < 1)
- fun_l12_n392(x)
- else
- fun_l12_n342(x)
- end
-end
-
-def fun_l11_n371(x)
- if (x < 1)
- fun_l12_n470(x)
- else
- fun_l12_n623(x)
- end
-end
-
-def fun_l11_n372(x)
- if (x < 1)
- fun_l12_n26(x)
- else
- fun_l12_n138(x)
- end
-end
-
-def fun_l11_n373(x)
- if (x < 1)
- fun_l12_n70(x)
- else
- fun_l12_n682(x)
- end
-end
-
-def fun_l11_n374(x)
- if (x < 1)
- fun_l12_n413(x)
- else
- fun_l12_n900(x)
- end
-end
-
-def fun_l11_n375(x)
- if (x < 1)
- fun_l12_n328(x)
- else
- fun_l12_n848(x)
- end
-end
-
-def fun_l11_n376(x)
- if (x < 1)
- fun_l12_n604(x)
- else
- fun_l12_n823(x)
- end
-end
-
-def fun_l11_n377(x)
- if (x < 1)
- fun_l12_n469(x)
- else
- fun_l12_n868(x)
- end
-end
-
-def fun_l11_n378(x)
- if (x < 1)
- fun_l12_n241(x)
- else
- fun_l12_n571(x)
- end
-end
-
-def fun_l11_n379(x)
- if (x < 1)
- fun_l12_n669(x)
- else
- fun_l12_n75(x)
- end
-end
-
-def fun_l11_n380(x)
- if (x < 1)
- fun_l12_n587(x)
- else
- fun_l12_n454(x)
- end
-end
-
-def fun_l11_n381(x)
- if (x < 1)
- fun_l12_n210(x)
- else
- fun_l12_n512(x)
- end
-end
-
-def fun_l11_n382(x)
- if (x < 1)
- fun_l12_n73(x)
- else
- fun_l12_n981(x)
- end
-end
-
-def fun_l11_n383(x)
- if (x < 1)
- fun_l12_n59(x)
- else
- fun_l12_n274(x)
- end
-end
-
-def fun_l11_n384(x)
- if (x < 1)
- fun_l12_n242(x)
- else
- fun_l12_n631(x)
- end
-end
-
-def fun_l11_n385(x)
- if (x < 1)
- fun_l12_n933(x)
- else
- fun_l12_n678(x)
- end
-end
-
-def fun_l11_n386(x)
- if (x < 1)
- fun_l12_n695(x)
- else
- fun_l12_n766(x)
- end
-end
-
-def fun_l11_n387(x)
- if (x < 1)
- fun_l12_n49(x)
- else
- fun_l12_n459(x)
- end
-end
-
-def fun_l11_n388(x)
- if (x < 1)
- fun_l12_n751(x)
- else
- fun_l12_n594(x)
- end
-end
-
-def fun_l11_n389(x)
- if (x < 1)
- fun_l12_n149(x)
- else
- fun_l12_n290(x)
- end
-end
-
-def fun_l11_n390(x)
- if (x < 1)
- fun_l12_n307(x)
- else
- fun_l12_n723(x)
- end
-end
-
-def fun_l11_n391(x)
- if (x < 1)
- fun_l12_n606(x)
- else
- fun_l12_n97(x)
- end
-end
-
-def fun_l11_n392(x)
- if (x < 1)
- fun_l12_n31(x)
- else
- fun_l12_n610(x)
- end
-end
-
-def fun_l11_n393(x)
- if (x < 1)
- fun_l12_n798(x)
- else
- fun_l12_n940(x)
- end
-end
-
-def fun_l11_n394(x)
- if (x < 1)
- fun_l12_n131(x)
- else
- fun_l12_n79(x)
- end
-end
-
-def fun_l11_n395(x)
- if (x < 1)
- fun_l12_n230(x)
- else
- fun_l12_n72(x)
- end
-end
-
-def fun_l11_n396(x)
- if (x < 1)
- fun_l12_n506(x)
- else
- fun_l12_n433(x)
- end
-end
-
-def fun_l11_n397(x)
- if (x < 1)
- fun_l12_n410(x)
- else
- fun_l12_n648(x)
- end
-end
-
-def fun_l11_n398(x)
- if (x < 1)
- fun_l12_n946(x)
- else
- fun_l12_n630(x)
- end
-end
-
-def fun_l11_n399(x)
- if (x < 1)
- fun_l12_n394(x)
- else
- fun_l12_n220(x)
- end
-end
-
-def fun_l11_n400(x)
- if (x < 1)
- fun_l12_n761(x)
- else
- fun_l12_n407(x)
- end
-end
-
-def fun_l11_n401(x)
- if (x < 1)
- fun_l12_n386(x)
- else
- fun_l12_n411(x)
- end
-end
-
-def fun_l11_n402(x)
- if (x < 1)
- fun_l12_n290(x)
- else
- fun_l12_n334(x)
- end
-end
-
-def fun_l11_n403(x)
- if (x < 1)
- fun_l12_n600(x)
- else
- fun_l12_n282(x)
- end
-end
-
-def fun_l11_n404(x)
- if (x < 1)
- fun_l12_n334(x)
- else
- fun_l12_n214(x)
- end
-end
-
-def fun_l11_n405(x)
- if (x < 1)
- fun_l12_n103(x)
- else
- fun_l12_n188(x)
- end
-end
-
-def fun_l11_n406(x)
- if (x < 1)
- fun_l12_n755(x)
- else
- fun_l12_n773(x)
- end
-end
-
-def fun_l11_n407(x)
- if (x < 1)
- fun_l12_n269(x)
- else
- fun_l12_n579(x)
- end
-end
-
-def fun_l11_n408(x)
- if (x < 1)
- fun_l12_n54(x)
- else
- fun_l12_n961(x)
- end
-end
-
-def fun_l11_n409(x)
- if (x < 1)
- fun_l12_n699(x)
- else
- fun_l12_n117(x)
- end
-end
-
-def fun_l11_n410(x)
- if (x < 1)
- fun_l12_n802(x)
- else
- fun_l12_n65(x)
- end
-end
-
-def fun_l11_n411(x)
- if (x < 1)
- fun_l12_n776(x)
- else
- fun_l12_n676(x)
- end
-end
-
-def fun_l11_n412(x)
- if (x < 1)
- fun_l12_n520(x)
- else
- fun_l12_n447(x)
- end
-end
-
-def fun_l11_n413(x)
- if (x < 1)
- fun_l12_n856(x)
- else
- fun_l12_n285(x)
- end
-end
-
-def fun_l11_n414(x)
- if (x < 1)
- fun_l12_n797(x)
- else
- fun_l12_n590(x)
- end
-end
-
-def fun_l11_n415(x)
- if (x < 1)
- fun_l12_n128(x)
- else
- fun_l12_n677(x)
- end
-end
-
-def fun_l11_n416(x)
- if (x < 1)
- fun_l12_n422(x)
- else
- fun_l12_n632(x)
- end
-end
-
-def fun_l11_n417(x)
- if (x < 1)
- fun_l12_n159(x)
- else
- fun_l12_n722(x)
- end
-end
-
-def fun_l11_n418(x)
- if (x < 1)
- fun_l12_n989(x)
- else
- fun_l12_n670(x)
- end
-end
-
-def fun_l11_n419(x)
- if (x < 1)
- fun_l12_n952(x)
- else
- fun_l12_n65(x)
- end
-end
-
-def fun_l11_n420(x)
- if (x < 1)
- fun_l12_n796(x)
- else
- fun_l12_n493(x)
- end
-end
-
-def fun_l11_n421(x)
- if (x < 1)
- fun_l12_n897(x)
- else
- fun_l12_n729(x)
- end
-end
-
-def fun_l11_n422(x)
- if (x < 1)
- fun_l12_n557(x)
- else
- fun_l12_n545(x)
- end
-end
-
-def fun_l11_n423(x)
- if (x < 1)
- fun_l12_n716(x)
- else
- fun_l12_n746(x)
- end
-end
-
-def fun_l11_n424(x)
- if (x < 1)
- fun_l12_n335(x)
- else
- fun_l12_n968(x)
- end
-end
-
-def fun_l11_n425(x)
- if (x < 1)
- fun_l12_n891(x)
- else
- fun_l12_n115(x)
- end
-end
-
-def fun_l11_n426(x)
- if (x < 1)
- fun_l12_n757(x)
- else
- fun_l12_n750(x)
- end
-end
-
-def fun_l11_n427(x)
- if (x < 1)
- fun_l12_n391(x)
- else
- fun_l12_n729(x)
- end
-end
-
-def fun_l11_n428(x)
- if (x < 1)
- fun_l12_n249(x)
- else
- fun_l12_n347(x)
- end
-end
-
-def fun_l11_n429(x)
- if (x < 1)
- fun_l12_n234(x)
- else
- fun_l12_n154(x)
- end
-end
-
-def fun_l11_n430(x)
- if (x < 1)
- fun_l12_n890(x)
- else
- fun_l12_n40(x)
- end
-end
-
-def fun_l11_n431(x)
- if (x < 1)
- fun_l12_n804(x)
- else
- fun_l12_n90(x)
- end
-end
-
-def fun_l11_n432(x)
- if (x < 1)
- fun_l12_n936(x)
- else
- fun_l12_n127(x)
- end
-end
-
-def fun_l11_n433(x)
- if (x < 1)
- fun_l12_n551(x)
- else
- fun_l12_n404(x)
- end
-end
-
-def fun_l11_n434(x)
- if (x < 1)
- fun_l12_n246(x)
- else
- fun_l12_n759(x)
- end
-end
-
-def fun_l11_n435(x)
- if (x < 1)
- fun_l12_n708(x)
- else
- fun_l12_n735(x)
- end
-end
-
-def fun_l11_n436(x)
- if (x < 1)
- fun_l12_n535(x)
- else
- fun_l12_n785(x)
- end
-end
-
-def fun_l11_n437(x)
- if (x < 1)
- fun_l12_n322(x)
- else
- fun_l12_n629(x)
- end
-end
-
-def fun_l11_n438(x)
- if (x < 1)
- fun_l12_n986(x)
- else
- fun_l12_n899(x)
- end
-end
-
-def fun_l11_n439(x)
- if (x < 1)
- fun_l12_n147(x)
- else
- fun_l12_n582(x)
- end
-end
-
-def fun_l11_n440(x)
- if (x < 1)
- fun_l12_n375(x)
- else
- fun_l12_n667(x)
- end
-end
-
-def fun_l11_n441(x)
- if (x < 1)
- fun_l12_n467(x)
- else
- fun_l12_n994(x)
- end
-end
-
-def fun_l11_n442(x)
- if (x < 1)
- fun_l12_n176(x)
- else
- fun_l12_n558(x)
- end
-end
-
-def fun_l11_n443(x)
- if (x < 1)
- fun_l12_n452(x)
- else
- fun_l12_n37(x)
- end
-end
-
-def fun_l11_n444(x)
- if (x < 1)
- fun_l12_n701(x)
- else
- fun_l12_n382(x)
- end
-end
-
-def fun_l11_n445(x)
- if (x < 1)
- fun_l12_n881(x)
- else
- fun_l12_n896(x)
- end
-end
-
-def fun_l11_n446(x)
- if (x < 1)
- fun_l12_n901(x)
- else
- fun_l12_n822(x)
- end
-end
-
-def fun_l11_n447(x)
- if (x < 1)
- fun_l12_n6(x)
- else
- fun_l12_n648(x)
- end
-end
-
-def fun_l11_n448(x)
- if (x < 1)
- fun_l12_n359(x)
- else
- fun_l12_n682(x)
- end
-end
-
-def fun_l11_n449(x)
- if (x < 1)
- fun_l12_n675(x)
- else
- fun_l12_n379(x)
- end
-end
-
-def fun_l11_n450(x)
- if (x < 1)
- fun_l12_n254(x)
- else
- fun_l12_n475(x)
- end
-end
-
-def fun_l11_n451(x)
- if (x < 1)
- fun_l12_n951(x)
- else
- fun_l12_n947(x)
- end
-end
-
-def fun_l11_n452(x)
- if (x < 1)
- fun_l12_n909(x)
- else
- fun_l12_n703(x)
- end
-end
-
-def fun_l11_n453(x)
- if (x < 1)
- fun_l12_n555(x)
- else
- fun_l12_n862(x)
- end
-end
-
-def fun_l11_n454(x)
- if (x < 1)
- fun_l12_n379(x)
- else
- fun_l12_n852(x)
- end
-end
-
-def fun_l11_n455(x)
- if (x < 1)
- fun_l12_n85(x)
- else
- fun_l12_n219(x)
- end
-end
-
-def fun_l11_n456(x)
- if (x < 1)
- fun_l12_n84(x)
- else
- fun_l12_n678(x)
- end
-end
-
-def fun_l11_n457(x)
- if (x < 1)
- fun_l12_n663(x)
- else
- fun_l12_n637(x)
- end
-end
-
-def fun_l11_n458(x)
- if (x < 1)
- fun_l12_n627(x)
- else
- fun_l12_n764(x)
- end
-end
-
-def fun_l11_n459(x)
- if (x < 1)
- fun_l12_n3(x)
- else
- fun_l12_n419(x)
- end
-end
-
-def fun_l11_n460(x)
- if (x < 1)
- fun_l12_n69(x)
- else
- fun_l12_n802(x)
- end
-end
-
-def fun_l11_n461(x)
- if (x < 1)
- fun_l12_n708(x)
- else
- fun_l12_n304(x)
- end
-end
-
-def fun_l11_n462(x)
- if (x < 1)
- fun_l12_n323(x)
- else
- fun_l12_n92(x)
- end
-end
-
-def fun_l11_n463(x)
- if (x < 1)
- fun_l12_n987(x)
- else
- fun_l12_n434(x)
- end
-end
-
-def fun_l11_n464(x)
- if (x < 1)
- fun_l12_n532(x)
- else
- fun_l12_n82(x)
- end
-end
-
-def fun_l11_n465(x)
- if (x < 1)
- fun_l12_n664(x)
- else
- fun_l12_n982(x)
- end
-end
-
-def fun_l11_n466(x)
- if (x < 1)
- fun_l12_n488(x)
- else
- fun_l12_n799(x)
- end
-end
-
-def fun_l11_n467(x)
- if (x < 1)
- fun_l12_n882(x)
- else
- fun_l12_n948(x)
- end
-end
-
-def fun_l11_n468(x)
- if (x < 1)
- fun_l12_n585(x)
- else
- fun_l12_n528(x)
- end
-end
-
-def fun_l11_n469(x)
- if (x < 1)
- fun_l12_n318(x)
- else
- fun_l12_n233(x)
- end
-end
-
-def fun_l11_n470(x)
- if (x < 1)
- fun_l12_n537(x)
- else
- fun_l12_n803(x)
- end
-end
-
-def fun_l11_n471(x)
- if (x < 1)
- fun_l12_n391(x)
- else
- fun_l12_n298(x)
- end
-end
-
-def fun_l11_n472(x)
- if (x < 1)
- fun_l12_n266(x)
- else
- fun_l12_n345(x)
- end
-end
-
-def fun_l11_n473(x)
- if (x < 1)
- fun_l12_n355(x)
- else
- fun_l12_n713(x)
- end
-end
-
-def fun_l11_n474(x)
- if (x < 1)
- fun_l12_n352(x)
- else
- fun_l12_n12(x)
- end
-end
-
-def fun_l11_n475(x)
- if (x < 1)
- fun_l12_n23(x)
- else
- fun_l12_n715(x)
- end
-end
-
-def fun_l11_n476(x)
- if (x < 1)
- fun_l12_n342(x)
- else
- fun_l12_n323(x)
- end
-end
-
-def fun_l11_n477(x)
- if (x < 1)
- fun_l12_n563(x)
- else
- fun_l12_n905(x)
- end
-end
-
-def fun_l11_n478(x)
- if (x < 1)
- fun_l12_n313(x)
- else
- fun_l12_n489(x)
- end
-end
-
-def fun_l11_n479(x)
- if (x < 1)
- fun_l12_n75(x)
- else
- fun_l12_n291(x)
- end
-end
-
-def fun_l11_n480(x)
- if (x < 1)
- fun_l12_n693(x)
- else
- fun_l12_n991(x)
- end
-end
-
-def fun_l11_n481(x)
- if (x < 1)
- fun_l12_n246(x)
- else
- fun_l12_n664(x)
- end
-end
-
-def fun_l11_n482(x)
- if (x < 1)
- fun_l12_n524(x)
- else
- fun_l12_n1(x)
- end
-end
-
-def fun_l11_n483(x)
- if (x < 1)
- fun_l12_n712(x)
- else
- fun_l12_n289(x)
- end
-end
-
-def fun_l11_n484(x)
- if (x < 1)
- fun_l12_n435(x)
- else
- fun_l12_n163(x)
- end
-end
-
-def fun_l11_n485(x)
- if (x < 1)
- fun_l12_n338(x)
- else
- fun_l12_n883(x)
- end
-end
-
-def fun_l11_n486(x)
- if (x < 1)
- fun_l12_n958(x)
- else
- fun_l12_n143(x)
- end
-end
-
-def fun_l11_n487(x)
- if (x < 1)
- fun_l12_n22(x)
- else
- fun_l12_n674(x)
- end
-end
-
-def fun_l11_n488(x)
- if (x < 1)
- fun_l12_n905(x)
- else
- fun_l12_n955(x)
- end
-end
-
-def fun_l11_n489(x)
- if (x < 1)
- fun_l12_n590(x)
- else
- fun_l12_n623(x)
- end
-end
-
-def fun_l11_n490(x)
- if (x < 1)
- fun_l12_n434(x)
- else
- fun_l12_n793(x)
- end
-end
-
-def fun_l11_n491(x)
- if (x < 1)
- fun_l12_n274(x)
- else
- fun_l12_n879(x)
- end
-end
-
-def fun_l11_n492(x)
- if (x < 1)
- fun_l12_n639(x)
- else
- fun_l12_n915(x)
- end
-end
-
-def fun_l11_n493(x)
- if (x < 1)
- fun_l12_n547(x)
- else
- fun_l12_n87(x)
- end
-end
-
-def fun_l11_n494(x)
- if (x < 1)
- fun_l12_n364(x)
- else
- fun_l12_n133(x)
- end
-end
-
-def fun_l11_n495(x)
- if (x < 1)
- fun_l12_n568(x)
- else
- fun_l12_n449(x)
- end
-end
-
-def fun_l11_n496(x)
- if (x < 1)
- fun_l12_n751(x)
- else
- fun_l12_n580(x)
- end
-end
-
-def fun_l11_n497(x)
- if (x < 1)
- fun_l12_n864(x)
- else
- fun_l12_n505(x)
- end
-end
-
-def fun_l11_n498(x)
- if (x < 1)
- fun_l12_n68(x)
- else
- fun_l12_n280(x)
- end
-end
-
-def fun_l11_n499(x)
- if (x < 1)
- fun_l12_n821(x)
- else
- fun_l12_n816(x)
- end
-end
-
-def fun_l11_n500(x)
- if (x < 1)
- fun_l12_n793(x)
- else
- fun_l12_n558(x)
- end
-end
-
-def fun_l11_n501(x)
- if (x < 1)
- fun_l12_n460(x)
- else
- fun_l12_n358(x)
- end
-end
-
-def fun_l11_n502(x)
- if (x < 1)
- fun_l12_n99(x)
- else
- fun_l12_n149(x)
- end
-end
-
-def fun_l11_n503(x)
- if (x < 1)
- fun_l12_n599(x)
- else
- fun_l12_n257(x)
- end
-end
-
-def fun_l11_n504(x)
- if (x < 1)
- fun_l12_n853(x)
- else
- fun_l12_n477(x)
- end
-end
-
-def fun_l11_n505(x)
- if (x < 1)
- fun_l12_n845(x)
- else
- fun_l12_n776(x)
- end
-end
-
-def fun_l11_n506(x)
- if (x < 1)
- fun_l12_n533(x)
- else
- fun_l12_n6(x)
- end
-end
-
-def fun_l11_n507(x)
- if (x < 1)
- fun_l12_n700(x)
- else
- fun_l12_n47(x)
- end
-end
-
-def fun_l11_n508(x)
- if (x < 1)
- fun_l12_n449(x)
- else
- fun_l12_n261(x)
- end
-end
-
-def fun_l11_n509(x)
- if (x < 1)
- fun_l12_n773(x)
- else
- fun_l12_n583(x)
- end
-end
-
-def fun_l11_n510(x)
- if (x < 1)
- fun_l12_n252(x)
- else
- fun_l12_n215(x)
- end
-end
-
-def fun_l11_n511(x)
- if (x < 1)
- fun_l12_n280(x)
- else
- fun_l12_n589(x)
- end
-end
-
-def fun_l11_n512(x)
- if (x < 1)
- fun_l12_n796(x)
- else
- fun_l12_n803(x)
- end
-end
-
-def fun_l11_n513(x)
- if (x < 1)
- fun_l12_n450(x)
- else
- fun_l12_n606(x)
- end
-end
-
-def fun_l11_n514(x)
- if (x < 1)
- fun_l12_n509(x)
- else
- fun_l12_n521(x)
- end
-end
-
-def fun_l11_n515(x)
- if (x < 1)
- fun_l12_n658(x)
- else
- fun_l12_n912(x)
- end
-end
-
-def fun_l11_n516(x)
- if (x < 1)
- fun_l12_n181(x)
- else
- fun_l12_n724(x)
- end
-end
-
-def fun_l11_n517(x)
- if (x < 1)
- fun_l12_n167(x)
- else
- fun_l12_n996(x)
- end
-end
-
-def fun_l11_n518(x)
- if (x < 1)
- fun_l12_n654(x)
- else
- fun_l12_n67(x)
- end
-end
-
-def fun_l11_n519(x)
- if (x < 1)
- fun_l12_n192(x)
- else
- fun_l12_n110(x)
- end
-end
-
-def fun_l11_n520(x)
- if (x < 1)
- fun_l12_n271(x)
- else
- fun_l12_n74(x)
- end
-end
-
-def fun_l11_n521(x)
- if (x < 1)
- fun_l12_n324(x)
- else
- fun_l12_n224(x)
- end
-end
-
-def fun_l11_n522(x)
- if (x < 1)
- fun_l12_n535(x)
- else
- fun_l12_n537(x)
- end
-end
-
-def fun_l11_n523(x)
- if (x < 1)
- fun_l12_n103(x)
- else
- fun_l12_n942(x)
- end
-end
-
-def fun_l11_n524(x)
- if (x < 1)
- fun_l12_n755(x)
- else
- fun_l12_n431(x)
- end
-end
-
-def fun_l11_n525(x)
- if (x < 1)
- fun_l12_n243(x)
- else
- fun_l12_n131(x)
- end
-end
-
-def fun_l11_n526(x)
- if (x < 1)
- fun_l12_n270(x)
- else
- fun_l12_n747(x)
- end
-end
-
-def fun_l11_n527(x)
- if (x < 1)
- fun_l12_n566(x)
- else
- fun_l12_n284(x)
- end
-end
-
-def fun_l11_n528(x)
- if (x < 1)
- fun_l12_n510(x)
- else
- fun_l12_n928(x)
- end
-end
-
-def fun_l11_n529(x)
- if (x < 1)
- fun_l12_n354(x)
- else
- fun_l12_n1(x)
- end
-end
-
-def fun_l11_n530(x)
- if (x < 1)
- fun_l12_n271(x)
- else
- fun_l12_n875(x)
- end
-end
-
-def fun_l11_n531(x)
- if (x < 1)
- fun_l12_n871(x)
- else
- fun_l12_n441(x)
- end
-end
-
-def fun_l11_n532(x)
- if (x < 1)
- fun_l12_n727(x)
- else
- fun_l12_n903(x)
- end
-end
-
-def fun_l11_n533(x)
- if (x < 1)
- fun_l12_n843(x)
- else
- fun_l12_n202(x)
- end
-end
-
-def fun_l11_n534(x)
- if (x < 1)
- fun_l12_n798(x)
- else
- fun_l12_n309(x)
- end
-end
-
-def fun_l11_n535(x)
- if (x < 1)
- fun_l12_n397(x)
- else
- fun_l12_n377(x)
- end
-end
-
-def fun_l11_n536(x)
- if (x < 1)
- fun_l12_n441(x)
- else
- fun_l12_n253(x)
- end
-end
-
-def fun_l11_n537(x)
- if (x < 1)
- fun_l12_n861(x)
- else
- fun_l12_n84(x)
- end
-end
-
-def fun_l11_n538(x)
- if (x < 1)
- fun_l12_n268(x)
- else
- fun_l12_n627(x)
- end
-end
-
-def fun_l11_n539(x)
- if (x < 1)
- fun_l12_n923(x)
- else
- fun_l12_n650(x)
- end
-end
-
-def fun_l11_n540(x)
- if (x < 1)
- fun_l12_n503(x)
- else
- fun_l12_n598(x)
- end
-end
-
-def fun_l11_n541(x)
- if (x < 1)
- fun_l12_n355(x)
- else
- fun_l12_n201(x)
- end
-end
-
-def fun_l11_n542(x)
- if (x < 1)
- fun_l12_n956(x)
- else
- fun_l12_n789(x)
- end
-end
-
-def fun_l11_n543(x)
- if (x < 1)
- fun_l12_n438(x)
- else
- fun_l12_n47(x)
- end
-end
-
-def fun_l11_n544(x)
- if (x < 1)
- fun_l12_n425(x)
- else
- fun_l12_n109(x)
- end
-end
-
-def fun_l11_n545(x)
- if (x < 1)
- fun_l12_n540(x)
- else
- fun_l12_n360(x)
- end
-end
-
-def fun_l11_n546(x)
- if (x < 1)
- fun_l12_n228(x)
- else
- fun_l12_n270(x)
- end
-end
-
-def fun_l11_n547(x)
- if (x < 1)
- fun_l12_n528(x)
- else
- fun_l12_n423(x)
- end
-end
-
-def fun_l11_n548(x)
- if (x < 1)
- fun_l12_n656(x)
- else
- fun_l12_n269(x)
- end
-end
-
-def fun_l11_n549(x)
- if (x < 1)
- fun_l12_n541(x)
- else
- fun_l12_n488(x)
- end
-end
-
-def fun_l11_n550(x)
- if (x < 1)
- fun_l12_n240(x)
- else
- fun_l12_n990(x)
- end
-end
-
-def fun_l11_n551(x)
- if (x < 1)
- fun_l12_n279(x)
- else
- fun_l12_n61(x)
- end
-end
-
-def fun_l11_n552(x)
- if (x < 1)
- fun_l12_n996(x)
- else
- fun_l12_n738(x)
- end
-end
-
-def fun_l11_n553(x)
- if (x < 1)
- fun_l12_n334(x)
- else
- fun_l12_n117(x)
- end
-end
-
-def fun_l11_n554(x)
- if (x < 1)
- fun_l12_n943(x)
- else
- fun_l12_n754(x)
- end
-end
-
-def fun_l11_n555(x)
- if (x < 1)
- fun_l12_n256(x)
- else
- fun_l12_n961(x)
- end
-end
-
-def fun_l11_n556(x)
- if (x < 1)
- fun_l12_n530(x)
- else
- fun_l12_n378(x)
- end
-end
-
-def fun_l11_n557(x)
- if (x < 1)
- fun_l12_n681(x)
- else
- fun_l12_n153(x)
- end
-end
-
-def fun_l11_n558(x)
- if (x < 1)
- fun_l12_n145(x)
- else
- fun_l12_n951(x)
- end
-end
-
-def fun_l11_n559(x)
- if (x < 1)
- fun_l12_n107(x)
- else
- fun_l12_n341(x)
- end
-end
-
-def fun_l11_n560(x)
- if (x < 1)
- fun_l12_n570(x)
- else
- fun_l12_n152(x)
- end
-end
-
-def fun_l11_n561(x)
- if (x < 1)
- fun_l12_n351(x)
- else
- fun_l12_n664(x)
- end
-end
-
-def fun_l11_n562(x)
- if (x < 1)
- fun_l12_n825(x)
- else
- fun_l12_n226(x)
- end
-end
-
-def fun_l11_n563(x)
- if (x < 1)
- fun_l12_n898(x)
- else
- fun_l12_n553(x)
- end
-end
-
-def fun_l11_n564(x)
- if (x < 1)
- fun_l12_n122(x)
- else
- fun_l12_n618(x)
- end
-end
-
-def fun_l11_n565(x)
- if (x < 1)
- fun_l12_n185(x)
- else
- fun_l12_n51(x)
- end
-end
-
-def fun_l11_n566(x)
- if (x < 1)
- fun_l12_n359(x)
- else
- fun_l12_n67(x)
- end
-end
-
-def fun_l11_n567(x)
- if (x < 1)
- fun_l12_n471(x)
- else
- fun_l12_n28(x)
- end
-end
-
-def fun_l11_n568(x)
- if (x < 1)
- fun_l12_n195(x)
- else
- fun_l12_n104(x)
- end
-end
-
-def fun_l11_n569(x)
- if (x < 1)
- fun_l12_n556(x)
- else
- fun_l12_n242(x)
- end
-end
-
-def fun_l11_n570(x)
- if (x < 1)
- fun_l12_n203(x)
- else
- fun_l12_n204(x)
- end
-end
-
-def fun_l11_n571(x)
- if (x < 1)
- fun_l12_n217(x)
- else
- fun_l12_n392(x)
- end
-end
-
-def fun_l11_n572(x)
- if (x < 1)
- fun_l12_n223(x)
- else
- fun_l12_n176(x)
- end
-end
-
-def fun_l11_n573(x)
- if (x < 1)
- fun_l12_n184(x)
- else
- fun_l12_n19(x)
- end
-end
-
-def fun_l11_n574(x)
- if (x < 1)
- fun_l12_n799(x)
- else
- fun_l12_n652(x)
- end
-end
-
-def fun_l11_n575(x)
- if (x < 1)
- fun_l12_n311(x)
- else
- fun_l12_n332(x)
- end
-end
-
-def fun_l11_n576(x)
- if (x < 1)
- fun_l12_n928(x)
- else
- fun_l12_n584(x)
- end
-end
-
-def fun_l11_n577(x)
- if (x < 1)
- fun_l12_n796(x)
- else
- fun_l12_n931(x)
- end
-end
-
-def fun_l11_n578(x)
- if (x < 1)
- fun_l12_n991(x)
- else
- fun_l12_n985(x)
- end
-end
-
-def fun_l11_n579(x)
- if (x < 1)
- fun_l12_n246(x)
- else
- fun_l12_n253(x)
- end
-end
-
-def fun_l11_n580(x)
- if (x < 1)
- fun_l12_n492(x)
- else
- fun_l12_n239(x)
- end
-end
-
-def fun_l11_n581(x)
- if (x < 1)
- fun_l12_n428(x)
- else
- fun_l12_n351(x)
- end
-end
-
-def fun_l11_n582(x)
- if (x < 1)
- fun_l12_n184(x)
- else
- fun_l12_n37(x)
- end
-end
-
-def fun_l11_n583(x)
- if (x < 1)
- fun_l12_n809(x)
- else
- fun_l12_n527(x)
- end
-end
-
-def fun_l11_n584(x)
- if (x < 1)
- fun_l12_n661(x)
- else
- fun_l12_n539(x)
- end
-end
-
-def fun_l11_n585(x)
- if (x < 1)
- fun_l12_n696(x)
- else
- fun_l12_n190(x)
- end
-end
-
-def fun_l11_n586(x)
- if (x < 1)
- fun_l12_n178(x)
- else
- fun_l12_n301(x)
- end
-end
-
-def fun_l11_n587(x)
- if (x < 1)
- fun_l12_n316(x)
- else
- fun_l12_n731(x)
- end
-end
-
-def fun_l11_n588(x)
- if (x < 1)
- fun_l12_n502(x)
- else
- fun_l12_n776(x)
- end
-end
-
-def fun_l11_n589(x)
- if (x < 1)
- fun_l12_n273(x)
- else
- fun_l12_n268(x)
- end
-end
-
-def fun_l11_n590(x)
- if (x < 1)
- fun_l12_n623(x)
- else
- fun_l12_n622(x)
- end
-end
-
-def fun_l11_n591(x)
- if (x < 1)
- fun_l12_n359(x)
- else
- fun_l12_n694(x)
- end
-end
-
-def fun_l11_n592(x)
- if (x < 1)
- fun_l12_n71(x)
- else
- fun_l12_n984(x)
- end
-end
-
-def fun_l11_n593(x)
- if (x < 1)
- fun_l12_n790(x)
- else
- fun_l12_n547(x)
- end
-end
-
-def fun_l11_n594(x)
- if (x < 1)
- fun_l12_n313(x)
- else
- fun_l12_n526(x)
- end
-end
-
-def fun_l11_n595(x)
- if (x < 1)
- fun_l12_n239(x)
- else
- fun_l12_n821(x)
- end
-end
-
-def fun_l11_n596(x)
- if (x < 1)
- fun_l12_n36(x)
- else
- fun_l12_n141(x)
- end
-end
-
-def fun_l11_n597(x)
- if (x < 1)
- fun_l12_n450(x)
- else
- fun_l12_n65(x)
- end
-end
-
-def fun_l11_n598(x)
- if (x < 1)
- fun_l12_n226(x)
- else
- fun_l12_n490(x)
- end
-end
-
-def fun_l11_n599(x)
- if (x < 1)
- fun_l12_n716(x)
- else
- fun_l12_n7(x)
- end
-end
-
-def fun_l11_n600(x)
- if (x < 1)
- fun_l12_n694(x)
- else
- fun_l12_n663(x)
- end
-end
-
-def fun_l11_n601(x)
- if (x < 1)
- fun_l12_n690(x)
- else
- fun_l12_n256(x)
- end
-end
-
-def fun_l11_n602(x)
- if (x < 1)
- fun_l12_n251(x)
- else
- fun_l12_n177(x)
- end
-end
-
-def fun_l11_n603(x)
- if (x < 1)
- fun_l12_n659(x)
- else
- fun_l12_n732(x)
- end
-end
-
-def fun_l11_n604(x)
- if (x < 1)
- fun_l12_n440(x)
- else
- fun_l12_n334(x)
- end
-end
-
-def fun_l11_n605(x)
- if (x < 1)
- fun_l12_n396(x)
- else
- fun_l12_n931(x)
- end
-end
-
-def fun_l11_n606(x)
- if (x < 1)
- fun_l12_n687(x)
- else
- fun_l12_n88(x)
- end
-end
-
-def fun_l11_n607(x)
- if (x < 1)
- fun_l12_n647(x)
- else
- fun_l12_n799(x)
- end
-end
-
-def fun_l11_n608(x)
- if (x < 1)
- fun_l12_n383(x)
- else
- fun_l12_n889(x)
- end
-end
-
-def fun_l11_n609(x)
- if (x < 1)
- fun_l12_n174(x)
- else
- fun_l12_n121(x)
- end
-end
-
-def fun_l11_n610(x)
- if (x < 1)
- fun_l12_n818(x)
- else
- fun_l12_n835(x)
- end
-end
-
-def fun_l11_n611(x)
- if (x < 1)
- fun_l12_n684(x)
- else
- fun_l12_n625(x)
- end
-end
-
-def fun_l11_n612(x)
- if (x < 1)
- fun_l12_n961(x)
- else
- fun_l12_n711(x)
- end
-end
-
-def fun_l11_n613(x)
- if (x < 1)
- fun_l12_n15(x)
- else
- fun_l12_n542(x)
- end
-end
-
-def fun_l11_n614(x)
- if (x < 1)
- fun_l12_n378(x)
- else
- fun_l12_n809(x)
- end
-end
-
-def fun_l11_n615(x)
- if (x < 1)
- fun_l12_n970(x)
- else
- fun_l12_n283(x)
- end
-end
-
-def fun_l11_n616(x)
- if (x < 1)
- fun_l12_n391(x)
- else
- fun_l12_n949(x)
- end
-end
-
-def fun_l11_n617(x)
- if (x < 1)
- fun_l12_n135(x)
- else
- fun_l12_n29(x)
- end
-end
-
-def fun_l11_n618(x)
- if (x < 1)
- fun_l12_n449(x)
- else
- fun_l12_n834(x)
- end
-end
-
-def fun_l11_n619(x)
- if (x < 1)
- fun_l12_n555(x)
- else
- fun_l12_n464(x)
- end
-end
-
-def fun_l11_n620(x)
- if (x < 1)
- fun_l12_n414(x)
- else
- fun_l12_n632(x)
- end
-end
-
-def fun_l11_n621(x)
- if (x < 1)
- fun_l12_n964(x)
- else
- fun_l12_n311(x)
- end
-end
-
-def fun_l11_n622(x)
- if (x < 1)
- fun_l12_n184(x)
- else
- fun_l12_n499(x)
- end
-end
-
-def fun_l11_n623(x)
- if (x < 1)
- fun_l12_n441(x)
- else
- fun_l12_n124(x)
- end
-end
-
-def fun_l11_n624(x)
- if (x < 1)
- fun_l12_n884(x)
- else
- fun_l12_n484(x)
- end
-end
-
-def fun_l11_n625(x)
- if (x < 1)
- fun_l12_n878(x)
- else
- fun_l12_n646(x)
- end
-end
-
-def fun_l11_n626(x)
- if (x < 1)
- fun_l12_n918(x)
- else
- fun_l12_n481(x)
- end
-end
-
-def fun_l11_n627(x)
- if (x < 1)
- fun_l12_n162(x)
- else
- fun_l12_n197(x)
- end
-end
-
-def fun_l11_n628(x)
- if (x < 1)
- fun_l12_n852(x)
- else
- fun_l12_n874(x)
- end
-end
-
-def fun_l11_n629(x)
- if (x < 1)
- fun_l12_n654(x)
- else
- fun_l12_n709(x)
- end
-end
-
-def fun_l11_n630(x)
- if (x < 1)
- fun_l12_n819(x)
- else
- fun_l12_n325(x)
- end
-end
-
-def fun_l11_n631(x)
- if (x < 1)
- fun_l12_n776(x)
- else
- fun_l12_n621(x)
- end
-end
-
-def fun_l11_n632(x)
- if (x < 1)
- fun_l12_n648(x)
- else
- fun_l12_n53(x)
- end
-end
-
-def fun_l11_n633(x)
- if (x < 1)
- fun_l12_n182(x)
- else
- fun_l12_n267(x)
- end
-end
-
-def fun_l11_n634(x)
- if (x < 1)
- fun_l12_n17(x)
- else
- fun_l12_n415(x)
- end
-end
-
-def fun_l11_n635(x)
- if (x < 1)
- fun_l12_n123(x)
- else
- fun_l12_n862(x)
- end
-end
-
-def fun_l11_n636(x)
- if (x < 1)
- fun_l12_n594(x)
- else
- fun_l12_n878(x)
- end
-end
-
-def fun_l11_n637(x)
- if (x < 1)
- fun_l12_n913(x)
- else
- fun_l12_n245(x)
- end
-end
-
-def fun_l11_n638(x)
- if (x < 1)
- fun_l12_n976(x)
- else
- fun_l12_n19(x)
- end
-end
-
-def fun_l11_n639(x)
- if (x < 1)
- fun_l12_n490(x)
- else
- fun_l12_n999(x)
- end
-end
-
-def fun_l11_n640(x)
- if (x < 1)
- fun_l12_n345(x)
- else
- fun_l12_n585(x)
- end
-end
-
-def fun_l11_n641(x)
- if (x < 1)
- fun_l12_n245(x)
- else
- fun_l12_n566(x)
- end
-end
-
-def fun_l11_n642(x)
- if (x < 1)
- fun_l12_n680(x)
- else
- fun_l12_n77(x)
- end
-end
-
-def fun_l11_n643(x)
- if (x < 1)
- fun_l12_n330(x)
- else
- fun_l12_n268(x)
- end
-end
-
-def fun_l11_n644(x)
- if (x < 1)
- fun_l12_n651(x)
- else
- fun_l12_n386(x)
- end
-end
-
-def fun_l11_n645(x)
- if (x < 1)
- fun_l12_n276(x)
- else
- fun_l12_n471(x)
- end
-end
-
-def fun_l11_n646(x)
- if (x < 1)
- fun_l12_n784(x)
- else
- fun_l12_n892(x)
- end
-end
-
-def fun_l11_n647(x)
- if (x < 1)
- fun_l12_n963(x)
- else
- fun_l12_n864(x)
- end
-end
-
-def fun_l11_n648(x)
- if (x < 1)
- fun_l12_n58(x)
- else
- fun_l12_n252(x)
- end
-end
-
-def fun_l11_n649(x)
- if (x < 1)
- fun_l12_n321(x)
- else
- fun_l12_n593(x)
- end
-end
-
-def fun_l11_n650(x)
- if (x < 1)
- fun_l12_n598(x)
- else
- fun_l12_n54(x)
- end
-end
-
-def fun_l11_n651(x)
- if (x < 1)
- fun_l12_n201(x)
- else
- fun_l12_n760(x)
- end
-end
-
-def fun_l11_n652(x)
- if (x < 1)
- fun_l12_n880(x)
- else
- fun_l12_n841(x)
- end
-end
-
-def fun_l11_n653(x)
- if (x < 1)
- fun_l12_n61(x)
- else
- fun_l12_n403(x)
- end
-end
-
-def fun_l11_n654(x)
- if (x < 1)
- fun_l12_n114(x)
- else
- fun_l12_n768(x)
- end
-end
-
-def fun_l11_n655(x)
- if (x < 1)
- fun_l12_n511(x)
- else
- fun_l12_n521(x)
- end
-end
-
-def fun_l11_n656(x)
- if (x < 1)
- fun_l12_n27(x)
- else
- fun_l12_n490(x)
- end
-end
-
-def fun_l11_n657(x)
- if (x < 1)
- fun_l12_n217(x)
- else
- fun_l12_n547(x)
- end
-end
-
-def fun_l11_n658(x)
- if (x < 1)
- fun_l12_n549(x)
- else
- fun_l12_n823(x)
- end
-end
-
-def fun_l11_n659(x)
- if (x < 1)
- fun_l12_n327(x)
- else
- fun_l12_n529(x)
- end
-end
-
-def fun_l11_n660(x)
- if (x < 1)
- fun_l12_n395(x)
- else
- fun_l12_n797(x)
- end
-end
-
-def fun_l11_n661(x)
- if (x < 1)
- fun_l12_n867(x)
- else
- fun_l12_n142(x)
- end
-end
-
-def fun_l11_n662(x)
- if (x < 1)
- fun_l12_n818(x)
- else
- fun_l12_n311(x)
- end
-end
-
-def fun_l11_n663(x)
- if (x < 1)
- fun_l12_n628(x)
- else
- fun_l12_n798(x)
- end
-end
-
-def fun_l11_n664(x)
- if (x < 1)
- fun_l12_n260(x)
- else
- fun_l12_n607(x)
- end
-end
-
-def fun_l11_n665(x)
- if (x < 1)
- fun_l12_n911(x)
- else
- fun_l12_n487(x)
- end
-end
-
-def fun_l11_n666(x)
- if (x < 1)
- fun_l12_n340(x)
- else
- fun_l12_n23(x)
- end
-end
-
-def fun_l11_n667(x)
- if (x < 1)
- fun_l12_n744(x)
- else
- fun_l12_n874(x)
- end
-end
-
-def fun_l11_n668(x)
- if (x < 1)
- fun_l12_n53(x)
- else
- fun_l12_n203(x)
- end
-end
-
-def fun_l11_n669(x)
- if (x < 1)
- fun_l12_n775(x)
- else
- fun_l12_n963(x)
- end
-end
-
-def fun_l11_n670(x)
- if (x < 1)
- fun_l12_n922(x)
- else
- fun_l12_n0(x)
- end
-end
-
-def fun_l11_n671(x)
- if (x < 1)
- fun_l12_n23(x)
- else
- fun_l12_n798(x)
- end
-end
-
-def fun_l11_n672(x)
- if (x < 1)
- fun_l12_n453(x)
- else
- fun_l12_n667(x)
- end
-end
-
-def fun_l11_n673(x)
- if (x < 1)
- fun_l12_n991(x)
- else
- fun_l12_n350(x)
- end
-end
-
-def fun_l11_n674(x)
- if (x < 1)
- fun_l12_n865(x)
- else
- fun_l12_n95(x)
- end
-end
-
-def fun_l11_n675(x)
- if (x < 1)
- fun_l12_n404(x)
- else
- fun_l12_n714(x)
- end
-end
-
-def fun_l11_n676(x)
- if (x < 1)
- fun_l12_n576(x)
- else
- fun_l12_n162(x)
- end
-end
-
-def fun_l11_n677(x)
- if (x < 1)
- fun_l12_n530(x)
- else
- fun_l12_n453(x)
- end
-end
-
-def fun_l11_n678(x)
- if (x < 1)
- fun_l12_n127(x)
- else
- fun_l12_n224(x)
- end
-end
-
-def fun_l11_n679(x)
- if (x < 1)
- fun_l12_n658(x)
- else
- fun_l12_n11(x)
- end
-end
-
-def fun_l11_n680(x)
- if (x < 1)
- fun_l12_n778(x)
- else
- fun_l12_n202(x)
- end
-end
-
-def fun_l11_n681(x)
- if (x < 1)
- fun_l12_n745(x)
- else
- fun_l12_n690(x)
- end
-end
-
-def fun_l11_n682(x)
- if (x < 1)
- fun_l12_n920(x)
- else
- fun_l12_n54(x)
- end
-end
-
-def fun_l11_n683(x)
- if (x < 1)
- fun_l12_n726(x)
- else
- fun_l12_n466(x)
- end
-end
-
-def fun_l11_n684(x)
- if (x < 1)
- fun_l12_n709(x)
- else
- fun_l12_n287(x)
- end
-end
-
-def fun_l11_n685(x)
- if (x < 1)
- fun_l12_n304(x)
- else
- fun_l12_n617(x)
- end
-end
-
-def fun_l11_n686(x)
- if (x < 1)
- fun_l12_n834(x)
- else
- fun_l12_n240(x)
- end
-end
-
-def fun_l11_n687(x)
- if (x < 1)
- fun_l12_n406(x)
- else
- fun_l12_n588(x)
- end
-end
-
-def fun_l11_n688(x)
- if (x < 1)
- fun_l12_n308(x)
- else
- fun_l12_n790(x)
- end
-end
-
-def fun_l11_n689(x)
- if (x < 1)
- fun_l12_n969(x)
- else
- fun_l12_n249(x)
- end
-end
-
-def fun_l11_n690(x)
- if (x < 1)
- fun_l12_n760(x)
- else
- fun_l12_n807(x)
- end
-end
-
-def fun_l11_n691(x)
- if (x < 1)
- fun_l12_n417(x)
- else
- fun_l12_n645(x)
- end
-end
-
-def fun_l11_n692(x)
- if (x < 1)
- fun_l12_n722(x)
- else
- fun_l12_n614(x)
- end
-end
-
-def fun_l11_n693(x)
- if (x < 1)
- fun_l12_n19(x)
- else
- fun_l12_n497(x)
- end
-end
-
-def fun_l11_n694(x)
- if (x < 1)
- fun_l12_n580(x)
- else
- fun_l12_n76(x)
- end
-end
-
-def fun_l11_n695(x)
- if (x < 1)
- fun_l12_n527(x)
- else
- fun_l12_n819(x)
- end
-end
-
-def fun_l11_n696(x)
- if (x < 1)
- fun_l12_n71(x)
- else
- fun_l12_n906(x)
- end
-end
-
-def fun_l11_n697(x)
- if (x < 1)
- fun_l12_n95(x)
- else
- fun_l12_n743(x)
- end
-end
-
-def fun_l11_n698(x)
- if (x < 1)
- fun_l12_n544(x)
- else
- fun_l12_n265(x)
- end
-end
-
-def fun_l11_n699(x)
- if (x < 1)
- fun_l12_n833(x)
- else
- fun_l12_n210(x)
- end
-end
-
-def fun_l11_n700(x)
- if (x < 1)
- fun_l12_n865(x)
- else
- fun_l12_n318(x)
- end
-end
-
-def fun_l11_n701(x)
- if (x < 1)
- fun_l12_n88(x)
- else
- fun_l12_n120(x)
- end
-end
-
-def fun_l11_n702(x)
- if (x < 1)
- fun_l12_n165(x)
- else
- fun_l12_n671(x)
- end
-end
-
-def fun_l11_n703(x)
- if (x < 1)
- fun_l12_n607(x)
- else
- fun_l12_n730(x)
- end
-end
-
-def fun_l11_n704(x)
- if (x < 1)
- fun_l12_n690(x)
- else
- fun_l12_n553(x)
- end
-end
-
-def fun_l11_n705(x)
- if (x < 1)
- fun_l12_n826(x)
- else
- fun_l12_n665(x)
- end
-end
-
-def fun_l11_n706(x)
- if (x < 1)
- fun_l12_n125(x)
- else
- fun_l12_n167(x)
- end
-end
-
-def fun_l11_n707(x)
- if (x < 1)
- fun_l12_n961(x)
- else
- fun_l12_n73(x)
- end
-end
-
-def fun_l11_n708(x)
- if (x < 1)
- fun_l12_n446(x)
- else
- fun_l12_n373(x)
- end
-end
-
-def fun_l11_n709(x)
- if (x < 1)
- fun_l12_n199(x)
- else
- fun_l12_n803(x)
- end
-end
-
-def fun_l11_n710(x)
- if (x < 1)
- fun_l12_n960(x)
- else
- fun_l12_n996(x)
- end
-end
-
-def fun_l11_n711(x)
- if (x < 1)
- fun_l12_n602(x)
- else
- fun_l12_n896(x)
- end
-end
-
-def fun_l11_n712(x)
- if (x < 1)
- fun_l12_n198(x)
- else
- fun_l12_n857(x)
- end
-end
-
-def fun_l11_n713(x)
- if (x < 1)
- fun_l12_n19(x)
- else
- fun_l12_n938(x)
- end
-end
-
-def fun_l11_n714(x)
- if (x < 1)
- fun_l12_n530(x)
- else
- fun_l12_n432(x)
- end
-end
-
-def fun_l11_n715(x)
- if (x < 1)
- fun_l12_n99(x)
- else
- fun_l12_n382(x)
- end
-end
-
-def fun_l11_n716(x)
- if (x < 1)
- fun_l12_n623(x)
- else
- fun_l12_n461(x)
- end
-end
-
-def fun_l11_n717(x)
- if (x < 1)
- fun_l12_n658(x)
- else
- fun_l12_n432(x)
- end
-end
-
-def fun_l11_n718(x)
- if (x < 1)
- fun_l12_n17(x)
- else
- fun_l12_n83(x)
- end
-end
-
-def fun_l11_n719(x)
- if (x < 1)
- fun_l12_n439(x)
- else
- fun_l12_n747(x)
- end
-end
-
-def fun_l11_n720(x)
- if (x < 1)
- fun_l12_n259(x)
- else
- fun_l12_n80(x)
- end
-end
-
-def fun_l11_n721(x)
- if (x < 1)
- fun_l12_n749(x)
- else
- fun_l12_n108(x)
- end
-end
-
-def fun_l11_n722(x)
- if (x < 1)
- fun_l12_n20(x)
- else
- fun_l12_n391(x)
- end
-end
-
-def fun_l11_n723(x)
- if (x < 1)
- fun_l12_n181(x)
- else
- fun_l12_n204(x)
- end
-end
-
-def fun_l11_n724(x)
- if (x < 1)
- fun_l12_n426(x)
- else
- fun_l12_n109(x)
- end
-end
-
-def fun_l11_n725(x)
- if (x < 1)
- fun_l12_n436(x)
- else
- fun_l12_n754(x)
- end
-end
-
-def fun_l11_n726(x)
- if (x < 1)
- fun_l12_n496(x)
- else
- fun_l12_n265(x)
- end
-end
-
-def fun_l11_n727(x)
- if (x < 1)
- fun_l12_n58(x)
- else
- fun_l12_n982(x)
- end
-end
-
-def fun_l11_n728(x)
- if (x < 1)
- fun_l12_n236(x)
- else
- fun_l12_n152(x)
- end
-end
-
-def fun_l11_n729(x)
- if (x < 1)
- fun_l12_n818(x)
- else
- fun_l12_n95(x)
- end
-end
-
-def fun_l11_n730(x)
- if (x < 1)
- fun_l12_n696(x)
- else
- fun_l12_n263(x)
- end
-end
-
-def fun_l11_n731(x)
- if (x < 1)
- fun_l12_n539(x)
- else
- fun_l12_n774(x)
- end
-end
-
-def fun_l11_n732(x)
- if (x < 1)
- fun_l12_n788(x)
- else
- fun_l12_n454(x)
- end
-end
-
-def fun_l11_n733(x)
- if (x < 1)
- fun_l12_n131(x)
- else
- fun_l12_n877(x)
- end
-end
-
-def fun_l11_n734(x)
- if (x < 1)
- fun_l12_n449(x)
- else
- fun_l12_n222(x)
- end
-end
-
-def fun_l11_n735(x)
- if (x < 1)
- fun_l12_n71(x)
- else
- fun_l12_n467(x)
- end
-end
-
-def fun_l11_n736(x)
- if (x < 1)
- fun_l12_n220(x)
- else
- fun_l12_n214(x)
- end
-end
-
-def fun_l11_n737(x)
- if (x < 1)
- fun_l12_n537(x)
- else
- fun_l12_n173(x)
- end
-end
-
-def fun_l11_n738(x)
- if (x < 1)
- fun_l12_n897(x)
- else
- fun_l12_n515(x)
- end
-end
-
-def fun_l11_n739(x)
- if (x < 1)
- fun_l12_n724(x)
- else
- fun_l12_n48(x)
- end
-end
-
-def fun_l11_n740(x)
- if (x < 1)
- fun_l12_n61(x)
- else
- fun_l12_n963(x)
- end
-end
-
-def fun_l11_n741(x)
- if (x < 1)
- fun_l12_n40(x)
- else
- fun_l12_n553(x)
- end
-end
-
-def fun_l11_n742(x)
- if (x < 1)
- fun_l12_n361(x)
- else
- fun_l12_n975(x)
- end
-end
-
-def fun_l11_n743(x)
- if (x < 1)
- fun_l12_n306(x)
- else
- fun_l12_n982(x)
- end
-end
-
-def fun_l11_n744(x)
- if (x < 1)
- fun_l12_n951(x)
- else
- fun_l12_n590(x)
- end
-end
-
-def fun_l11_n745(x)
- if (x < 1)
- fun_l12_n224(x)
- else
- fun_l12_n409(x)
- end
-end
-
-def fun_l11_n746(x)
- if (x < 1)
- fun_l12_n24(x)
- else
- fun_l12_n249(x)
- end
-end
-
-def fun_l11_n747(x)
- if (x < 1)
- fun_l12_n533(x)
- else
- fun_l12_n543(x)
- end
-end
-
-def fun_l11_n748(x)
- if (x < 1)
- fun_l12_n616(x)
- else
- fun_l12_n63(x)
- end
-end
-
-def fun_l11_n749(x)
- if (x < 1)
- fun_l12_n365(x)
- else
- fun_l12_n335(x)
- end
-end
-
-def fun_l11_n750(x)
- if (x < 1)
- fun_l12_n134(x)
- else
- fun_l12_n363(x)
- end
-end
-
-def fun_l11_n751(x)
- if (x < 1)
- fun_l12_n413(x)
- else
- fun_l12_n582(x)
- end
-end
-
-def fun_l11_n752(x)
- if (x < 1)
- fun_l12_n987(x)
- else
- fun_l12_n948(x)
- end
-end
-
-def fun_l11_n753(x)
- if (x < 1)
- fun_l12_n696(x)
- else
- fun_l12_n374(x)
- end
-end
-
-def fun_l11_n754(x)
- if (x < 1)
- fun_l12_n730(x)
- else
- fun_l12_n345(x)
- end
-end
-
-def fun_l11_n755(x)
- if (x < 1)
- fun_l12_n857(x)
- else
- fun_l12_n441(x)
- end
-end
-
-def fun_l11_n756(x)
- if (x < 1)
- fun_l12_n711(x)
- else
- fun_l12_n39(x)
- end
-end
-
-def fun_l11_n757(x)
- if (x < 1)
- fun_l12_n946(x)
- else
- fun_l12_n657(x)
- end
-end
-
-def fun_l11_n758(x)
- if (x < 1)
- fun_l12_n470(x)
- else
- fun_l12_n650(x)
- end
-end
-
-def fun_l11_n759(x)
- if (x < 1)
- fun_l12_n119(x)
- else
- fun_l12_n479(x)
- end
-end
-
-def fun_l11_n760(x)
- if (x < 1)
- fun_l12_n429(x)
- else
- fun_l12_n922(x)
- end
-end
-
-def fun_l11_n761(x)
- if (x < 1)
- fun_l12_n13(x)
- else
- fun_l12_n134(x)
- end
-end
-
-def fun_l11_n762(x)
- if (x < 1)
- fun_l12_n797(x)
- else
- fun_l12_n223(x)
- end
-end
-
-def fun_l11_n763(x)
- if (x < 1)
- fun_l12_n945(x)
- else
- fun_l12_n197(x)
- end
-end
-
-def fun_l11_n764(x)
- if (x < 1)
- fun_l12_n612(x)
- else
- fun_l12_n773(x)
- end
-end
-
-def fun_l11_n765(x)
- if (x < 1)
- fun_l12_n478(x)
- else
- fun_l12_n972(x)
- end
-end
-
-def fun_l11_n766(x)
- if (x < 1)
- fun_l12_n946(x)
- else
- fun_l12_n9(x)
- end
-end
-
-def fun_l11_n767(x)
- if (x < 1)
- fun_l12_n247(x)
- else
- fun_l12_n730(x)
- end
-end
-
-def fun_l11_n768(x)
- if (x < 1)
- fun_l12_n223(x)
- else
- fun_l12_n986(x)
- end
-end
-
-def fun_l11_n769(x)
- if (x < 1)
- fun_l12_n676(x)
- else
- fun_l12_n527(x)
- end
-end
-
-def fun_l11_n770(x)
- if (x < 1)
- fun_l12_n112(x)
- else
- fun_l12_n660(x)
- end
-end
-
-def fun_l11_n771(x)
- if (x < 1)
- fun_l12_n457(x)
- else
- fun_l12_n733(x)
- end
-end
-
-def fun_l11_n772(x)
- if (x < 1)
- fun_l12_n633(x)
- else
- fun_l12_n449(x)
- end
-end
-
-def fun_l11_n773(x)
- if (x < 1)
- fun_l12_n910(x)
- else
- fun_l12_n329(x)
- end
-end
-
-def fun_l11_n774(x)
- if (x < 1)
- fun_l12_n354(x)
- else
- fun_l12_n233(x)
- end
-end
-
-def fun_l11_n775(x)
- if (x < 1)
- fun_l12_n887(x)
- else
- fun_l12_n100(x)
- end
-end
-
-def fun_l11_n776(x)
- if (x < 1)
- fun_l12_n65(x)
- else
- fun_l12_n199(x)
- end
-end
-
-def fun_l11_n777(x)
- if (x < 1)
- fun_l12_n978(x)
- else
- fun_l12_n364(x)
- end
-end
-
-def fun_l11_n778(x)
- if (x < 1)
- fun_l12_n502(x)
- else
- fun_l12_n90(x)
- end
-end
-
-def fun_l11_n779(x)
- if (x < 1)
- fun_l12_n37(x)
- else
- fun_l12_n668(x)
- end
-end
-
-def fun_l11_n780(x)
- if (x < 1)
- fun_l12_n80(x)
- else
- fun_l12_n603(x)
- end
-end
-
-def fun_l11_n781(x)
- if (x < 1)
- fun_l12_n435(x)
- else
- fun_l12_n583(x)
- end
-end
-
-def fun_l11_n782(x)
- if (x < 1)
- fun_l12_n899(x)
- else
- fun_l12_n863(x)
- end
-end
-
-def fun_l11_n783(x)
- if (x < 1)
- fun_l12_n414(x)
- else
- fun_l12_n96(x)
- end
-end
-
-def fun_l11_n784(x)
- if (x < 1)
- fun_l12_n286(x)
- else
- fun_l12_n126(x)
- end
-end
-
-def fun_l11_n785(x)
- if (x < 1)
- fun_l12_n444(x)
- else
- fun_l12_n344(x)
- end
-end
-
-def fun_l11_n786(x)
- if (x < 1)
- fun_l12_n484(x)
- else
- fun_l12_n469(x)
- end
-end
-
-def fun_l11_n787(x)
- if (x < 1)
- fun_l12_n686(x)
- else
- fun_l12_n728(x)
- end
-end
-
-def fun_l11_n788(x)
- if (x < 1)
- fun_l12_n938(x)
- else
- fun_l12_n70(x)
- end
-end
-
-def fun_l11_n789(x)
- if (x < 1)
- fun_l12_n958(x)
- else
- fun_l12_n633(x)
- end
-end
-
-def fun_l11_n790(x)
- if (x < 1)
- fun_l12_n984(x)
- else
- fun_l12_n39(x)
- end
-end
-
-def fun_l11_n791(x)
- if (x < 1)
- fun_l12_n877(x)
- else
- fun_l12_n721(x)
- end
-end
-
-def fun_l11_n792(x)
- if (x < 1)
- fun_l12_n710(x)
- else
- fun_l12_n840(x)
- end
-end
-
-def fun_l11_n793(x)
- if (x < 1)
- fun_l12_n955(x)
- else
- fun_l12_n774(x)
- end
-end
-
-def fun_l11_n794(x)
- if (x < 1)
- fun_l12_n816(x)
- else
- fun_l12_n859(x)
- end
-end
-
-def fun_l11_n795(x)
- if (x < 1)
- fun_l12_n722(x)
- else
- fun_l12_n700(x)
- end
-end
-
-def fun_l11_n796(x)
- if (x < 1)
- fun_l12_n508(x)
- else
- fun_l12_n617(x)
- end
-end
-
-def fun_l11_n797(x)
- if (x < 1)
- fun_l12_n382(x)
- else
- fun_l12_n1(x)
- end
-end
-
-def fun_l11_n798(x)
- if (x < 1)
- fun_l12_n857(x)
- else
- fun_l12_n141(x)
- end
-end
-
-def fun_l11_n799(x)
- if (x < 1)
- fun_l12_n711(x)
- else
- fun_l12_n842(x)
- end
-end
-
-def fun_l11_n800(x)
- if (x < 1)
- fun_l12_n588(x)
- else
- fun_l12_n511(x)
- end
-end
-
-def fun_l11_n801(x)
- if (x < 1)
- fun_l12_n114(x)
- else
- fun_l12_n516(x)
- end
-end
-
-def fun_l11_n802(x)
- if (x < 1)
- fun_l12_n792(x)
- else
- fun_l12_n128(x)
- end
-end
-
-def fun_l11_n803(x)
- if (x < 1)
- fun_l12_n833(x)
- else
- fun_l12_n444(x)
- end
-end
-
-def fun_l11_n804(x)
- if (x < 1)
- fun_l12_n564(x)
- else
- fun_l12_n129(x)
- end
-end
-
-def fun_l11_n805(x)
- if (x < 1)
- fun_l12_n234(x)
- else
- fun_l12_n429(x)
- end
-end
-
-def fun_l11_n806(x)
- if (x < 1)
- fun_l12_n841(x)
- else
- fun_l12_n705(x)
- end
-end
-
-def fun_l11_n807(x)
- if (x < 1)
- fun_l12_n72(x)
- else
- fun_l12_n87(x)
- end
-end
-
-def fun_l11_n808(x)
- if (x < 1)
- fun_l12_n131(x)
- else
- fun_l12_n27(x)
- end
-end
-
-def fun_l11_n809(x)
- if (x < 1)
- fun_l12_n136(x)
- else
- fun_l12_n84(x)
- end
-end
-
-def fun_l11_n810(x)
- if (x < 1)
- fun_l12_n464(x)
- else
- fun_l12_n411(x)
- end
-end
-
-def fun_l11_n811(x)
- if (x < 1)
- fun_l12_n939(x)
- else
- fun_l12_n584(x)
- end
-end
-
-def fun_l11_n812(x)
- if (x < 1)
- fun_l12_n24(x)
- else
- fun_l12_n593(x)
- end
-end
-
-def fun_l11_n813(x)
- if (x < 1)
- fun_l12_n980(x)
- else
- fun_l12_n318(x)
- end
-end
-
-def fun_l11_n814(x)
- if (x < 1)
- fun_l12_n73(x)
- else
- fun_l12_n431(x)
- end
-end
-
-def fun_l11_n815(x)
- if (x < 1)
- fun_l12_n938(x)
- else
- fun_l12_n794(x)
- end
-end
-
-def fun_l11_n816(x)
- if (x < 1)
- fun_l12_n305(x)
- else
- fun_l12_n620(x)
- end
-end
-
-def fun_l11_n817(x)
- if (x < 1)
- fun_l12_n881(x)
- else
- fun_l12_n636(x)
- end
-end
-
-def fun_l11_n818(x)
- if (x < 1)
- fun_l12_n493(x)
- else
- fun_l12_n536(x)
- end
-end
-
-def fun_l11_n819(x)
- if (x < 1)
- fun_l12_n32(x)
- else
- fun_l12_n69(x)
- end
-end
-
-def fun_l11_n820(x)
- if (x < 1)
- fun_l12_n131(x)
- else
- fun_l12_n206(x)
- end
-end
-
-def fun_l11_n821(x)
- if (x < 1)
- fun_l12_n130(x)
- else
- fun_l12_n63(x)
- end
-end
-
-def fun_l11_n822(x)
- if (x < 1)
- fun_l12_n228(x)
- else
- fun_l12_n753(x)
- end
-end
-
-def fun_l11_n823(x)
- if (x < 1)
- fun_l12_n171(x)
- else
- fun_l12_n605(x)
- end
-end
-
-def fun_l11_n824(x)
- if (x < 1)
- fun_l12_n69(x)
- else
- fun_l12_n900(x)
- end
-end
-
-def fun_l11_n825(x)
- if (x < 1)
- fun_l12_n802(x)
- else
- fun_l12_n682(x)
- end
-end
-
-def fun_l11_n826(x)
- if (x < 1)
- fun_l12_n311(x)
- else
- fun_l12_n257(x)
- end
-end
-
-def fun_l11_n827(x)
- if (x < 1)
- fun_l12_n994(x)
- else
- fun_l12_n162(x)
- end
-end
-
-def fun_l11_n828(x)
- if (x < 1)
- fun_l12_n780(x)
- else
- fun_l12_n805(x)
- end
-end
-
-def fun_l11_n829(x)
- if (x < 1)
- fun_l12_n744(x)
- else
- fun_l12_n55(x)
- end
-end
-
-def fun_l11_n830(x)
- if (x < 1)
- fun_l12_n655(x)
- else
- fun_l12_n603(x)
- end
-end
-
-def fun_l11_n831(x)
- if (x < 1)
- fun_l12_n245(x)
- else
- fun_l12_n196(x)
- end
-end
-
-def fun_l11_n832(x)
- if (x < 1)
- fun_l12_n381(x)
- else
- fun_l12_n582(x)
- end
-end
-
-def fun_l11_n833(x)
- if (x < 1)
- fun_l12_n185(x)
- else
- fun_l12_n339(x)
- end
-end
-
-def fun_l11_n834(x)
- if (x < 1)
- fun_l12_n601(x)
- else
- fun_l12_n996(x)
- end
-end
-
-def fun_l11_n835(x)
- if (x < 1)
- fun_l12_n934(x)
- else
- fun_l12_n460(x)
- end
-end
-
-def fun_l11_n836(x)
- if (x < 1)
- fun_l12_n550(x)
- else
- fun_l12_n55(x)
- end
-end
-
-def fun_l11_n837(x)
- if (x < 1)
- fun_l12_n183(x)
- else
- fun_l12_n880(x)
- end
-end
-
-def fun_l11_n838(x)
- if (x < 1)
- fun_l12_n742(x)
- else
- fun_l12_n249(x)
- end
-end
-
-def fun_l11_n839(x)
- if (x < 1)
- fun_l12_n979(x)
- else
- fun_l12_n100(x)
- end
-end
-
-def fun_l11_n840(x)
- if (x < 1)
- fun_l12_n889(x)
- else
- fun_l12_n683(x)
- end
-end
-
-def fun_l11_n841(x)
- if (x < 1)
- fun_l12_n964(x)
- else
- fun_l12_n0(x)
- end
-end
-
-def fun_l11_n842(x)
- if (x < 1)
- fun_l12_n461(x)
- else
- fun_l12_n126(x)
- end
-end
-
-def fun_l11_n843(x)
- if (x < 1)
- fun_l12_n839(x)
- else
- fun_l12_n554(x)
- end
-end
-
-def fun_l11_n844(x)
- if (x < 1)
- fun_l12_n150(x)
- else
- fun_l12_n857(x)
- end
-end
-
-def fun_l11_n845(x)
- if (x < 1)
- fun_l12_n114(x)
- else
- fun_l12_n72(x)
- end
-end
-
-def fun_l11_n846(x)
- if (x < 1)
- fun_l12_n953(x)
- else
- fun_l12_n695(x)
- end
-end
-
-def fun_l11_n847(x)
- if (x < 1)
- fun_l12_n16(x)
- else
- fun_l12_n216(x)
- end
-end
-
-def fun_l11_n848(x)
- if (x < 1)
- fun_l12_n440(x)
- else
- fun_l12_n893(x)
- end
-end
-
-def fun_l11_n849(x)
- if (x < 1)
- fun_l12_n176(x)
- else
- fun_l12_n932(x)
- end
-end
-
-def fun_l11_n850(x)
- if (x < 1)
- fun_l12_n723(x)
- else
- fun_l12_n363(x)
- end
-end
-
-def fun_l11_n851(x)
- if (x < 1)
- fun_l12_n779(x)
- else
- fun_l12_n774(x)
- end
-end
-
-def fun_l11_n852(x)
- if (x < 1)
- fun_l12_n618(x)
- else
- fun_l12_n252(x)
- end
-end
-
-def fun_l11_n853(x)
- if (x < 1)
- fun_l12_n298(x)
- else
- fun_l12_n563(x)
- end
-end
-
-def fun_l11_n854(x)
- if (x < 1)
- fun_l12_n972(x)
- else
- fun_l12_n681(x)
- end
-end
-
-def fun_l11_n855(x)
- if (x < 1)
- fun_l12_n412(x)
- else
- fun_l12_n932(x)
- end
-end
-
-def fun_l11_n856(x)
- if (x < 1)
- fun_l12_n132(x)
- else
- fun_l12_n699(x)
- end
-end
-
-def fun_l11_n857(x)
- if (x < 1)
- fun_l12_n208(x)
- else
- fun_l12_n602(x)
- end
-end
-
-def fun_l11_n858(x)
- if (x < 1)
- fun_l12_n705(x)
- else
- fun_l12_n833(x)
- end
-end
-
-def fun_l11_n859(x)
- if (x < 1)
- fun_l12_n408(x)
- else
- fun_l12_n570(x)
- end
-end
-
-def fun_l11_n860(x)
- if (x < 1)
- fun_l12_n720(x)
- else
- fun_l12_n996(x)
- end
-end
-
-def fun_l11_n861(x)
- if (x < 1)
- fun_l12_n926(x)
- else
- fun_l12_n490(x)
- end
-end
-
-def fun_l11_n862(x)
- if (x < 1)
- fun_l12_n985(x)
- else
- fun_l12_n54(x)
- end
-end
-
-def fun_l11_n863(x)
- if (x < 1)
- fun_l12_n214(x)
- else
- fun_l12_n729(x)
- end
-end
-
-def fun_l11_n864(x)
- if (x < 1)
- fun_l12_n351(x)
- else
- fun_l12_n951(x)
- end
-end
-
-def fun_l11_n865(x)
- if (x < 1)
- fun_l12_n514(x)
- else
- fun_l12_n468(x)
- end
-end
-
-def fun_l11_n866(x)
- if (x < 1)
- fun_l12_n793(x)
- else
- fun_l12_n712(x)
- end
-end
-
-def fun_l11_n867(x)
- if (x < 1)
- fun_l12_n697(x)
- else
- fun_l12_n824(x)
- end
-end
-
-def fun_l11_n868(x)
- if (x < 1)
- fun_l12_n144(x)
- else
- fun_l12_n703(x)
- end
-end
-
-def fun_l11_n869(x)
- if (x < 1)
- fun_l12_n552(x)
- else
- fun_l12_n612(x)
- end
-end
-
-def fun_l11_n870(x)
- if (x < 1)
- fun_l12_n2(x)
- else
- fun_l12_n287(x)
- end
-end
-
-def fun_l11_n871(x)
- if (x < 1)
- fun_l12_n604(x)
- else
- fun_l12_n260(x)
- end
-end
-
-def fun_l11_n872(x)
- if (x < 1)
- fun_l12_n517(x)
- else
- fun_l12_n173(x)
- end
-end
-
-def fun_l11_n873(x)
- if (x < 1)
- fun_l12_n640(x)
- else
- fun_l12_n196(x)
- end
-end
-
-def fun_l11_n874(x)
- if (x < 1)
- fun_l12_n874(x)
- else
- fun_l12_n697(x)
- end
-end
-
-def fun_l11_n875(x)
- if (x < 1)
- fun_l12_n180(x)
- else
- fun_l12_n652(x)
- end
-end
-
-def fun_l11_n876(x)
- if (x < 1)
- fun_l12_n432(x)
- else
- fun_l12_n971(x)
- end
-end
-
-def fun_l11_n877(x)
- if (x < 1)
- fun_l12_n111(x)
- else
- fun_l12_n919(x)
- end
-end
-
-def fun_l11_n878(x)
- if (x < 1)
- fun_l12_n631(x)
- else
- fun_l12_n439(x)
- end
-end
-
-def fun_l11_n879(x)
- if (x < 1)
- fun_l12_n39(x)
- else
- fun_l12_n372(x)
- end
-end
-
-def fun_l11_n880(x)
- if (x < 1)
- fun_l12_n675(x)
- else
- fun_l12_n64(x)
- end
-end
-
-def fun_l11_n881(x)
- if (x < 1)
- fun_l12_n831(x)
- else
- fun_l12_n705(x)
- end
-end
-
-def fun_l11_n882(x)
- if (x < 1)
- fun_l12_n126(x)
- else
- fun_l12_n648(x)
- end
-end
-
-def fun_l11_n883(x)
- if (x < 1)
- fun_l12_n768(x)
- else
- fun_l12_n483(x)
- end
-end
-
-def fun_l11_n884(x)
- if (x < 1)
- fun_l12_n328(x)
- else
- fun_l12_n646(x)
- end
-end
-
-def fun_l11_n885(x)
- if (x < 1)
- fun_l12_n890(x)
- else
- fun_l12_n544(x)
- end
-end
-
-def fun_l11_n886(x)
- if (x < 1)
- fun_l12_n651(x)
- else
- fun_l12_n557(x)
- end
-end
-
-def fun_l11_n887(x)
- if (x < 1)
- fun_l12_n479(x)
- else
- fun_l12_n594(x)
- end
-end
-
-def fun_l11_n888(x)
- if (x < 1)
- fun_l12_n649(x)
- else
- fun_l12_n488(x)
- end
-end
-
-def fun_l11_n889(x)
- if (x < 1)
- fun_l12_n347(x)
- else
- fun_l12_n42(x)
- end
-end
-
-def fun_l11_n890(x)
- if (x < 1)
- fun_l12_n111(x)
- else
- fun_l12_n683(x)
- end
-end
-
-def fun_l11_n891(x)
- if (x < 1)
- fun_l12_n965(x)
- else
- fun_l12_n275(x)
- end
-end
-
-def fun_l11_n892(x)
- if (x < 1)
- fun_l12_n148(x)
- else
- fun_l12_n541(x)
- end
-end
-
-def fun_l11_n893(x)
- if (x < 1)
- fun_l12_n633(x)
- else
- fun_l12_n358(x)
- end
-end
-
-def fun_l11_n894(x)
- if (x < 1)
- fun_l12_n681(x)
- else
- fun_l12_n236(x)
- end
-end
-
-def fun_l11_n895(x)
- if (x < 1)
- fun_l12_n292(x)
- else
- fun_l12_n417(x)
- end
-end
-
-def fun_l11_n896(x)
- if (x < 1)
- fun_l12_n165(x)
- else
- fun_l12_n80(x)
- end
-end
-
-def fun_l11_n897(x)
- if (x < 1)
- fun_l12_n132(x)
- else
- fun_l12_n659(x)
- end
-end
-
-def fun_l11_n898(x)
- if (x < 1)
- fun_l12_n329(x)
- else
- fun_l12_n204(x)
- end
-end
-
-def fun_l11_n899(x)
- if (x < 1)
- fun_l12_n339(x)
- else
- fun_l12_n632(x)
- end
-end
-
-def fun_l11_n900(x)
- if (x < 1)
- fun_l12_n957(x)
- else
- fun_l12_n282(x)
- end
-end
-
-def fun_l11_n901(x)
- if (x < 1)
- fun_l12_n709(x)
- else
- fun_l12_n155(x)
- end
-end
-
-def fun_l11_n902(x)
- if (x < 1)
- fun_l12_n227(x)
- else
- fun_l12_n659(x)
- end
-end
-
-def fun_l11_n903(x)
- if (x < 1)
- fun_l12_n224(x)
- else
- fun_l12_n23(x)
- end
-end
-
-def fun_l11_n904(x)
- if (x < 1)
- fun_l12_n494(x)
- else
- fun_l12_n292(x)
- end
-end
-
-def fun_l11_n905(x)
- if (x < 1)
- fun_l12_n309(x)
- else
- fun_l12_n949(x)
- end
-end
-
-def fun_l11_n906(x)
- if (x < 1)
- fun_l12_n960(x)
- else
- fun_l12_n24(x)
- end
-end
-
-def fun_l11_n907(x)
- if (x < 1)
- fun_l12_n98(x)
- else
- fun_l12_n674(x)
- end
-end
-
-def fun_l11_n908(x)
- if (x < 1)
- fun_l12_n84(x)
- else
- fun_l12_n307(x)
- end
-end
-
-def fun_l11_n909(x)
- if (x < 1)
- fun_l12_n786(x)
- else
- fun_l12_n311(x)
- end
-end
-
-def fun_l11_n910(x)
- if (x < 1)
- fun_l12_n631(x)
- else
- fun_l12_n605(x)
- end
-end
-
-def fun_l11_n911(x)
- if (x < 1)
- fun_l12_n352(x)
- else
- fun_l12_n750(x)
- end
-end
-
-def fun_l11_n912(x)
- if (x < 1)
- fun_l12_n75(x)
- else
- fun_l12_n112(x)
- end
-end
-
-def fun_l11_n913(x)
- if (x < 1)
- fun_l12_n404(x)
- else
- fun_l12_n995(x)
- end
-end
-
-def fun_l11_n914(x)
- if (x < 1)
- fun_l12_n656(x)
- else
- fun_l12_n203(x)
- end
-end
-
-def fun_l11_n915(x)
- if (x < 1)
- fun_l12_n625(x)
- else
- fun_l12_n32(x)
- end
-end
-
-def fun_l11_n916(x)
- if (x < 1)
- fun_l12_n785(x)
- else
- fun_l12_n237(x)
- end
-end
-
-def fun_l11_n917(x)
- if (x < 1)
- fun_l12_n643(x)
- else
- fun_l12_n364(x)
- end
-end
-
-def fun_l11_n918(x)
- if (x < 1)
- fun_l12_n920(x)
- else
- fun_l12_n957(x)
- end
-end
-
-def fun_l11_n919(x)
- if (x < 1)
- fun_l12_n336(x)
- else
- fun_l12_n726(x)
- end
-end
-
-def fun_l11_n920(x)
- if (x < 1)
- fun_l12_n329(x)
- else
- fun_l12_n15(x)
- end
-end
-
-def fun_l11_n921(x)
- if (x < 1)
- fun_l12_n911(x)
- else
- fun_l12_n824(x)
- end
-end
-
-def fun_l11_n922(x)
- if (x < 1)
- fun_l12_n907(x)
- else
- fun_l12_n854(x)
- end
-end
-
-def fun_l11_n923(x)
- if (x < 1)
- fun_l12_n779(x)
- else
- fun_l12_n549(x)
- end
-end
-
-def fun_l11_n924(x)
- if (x < 1)
- fun_l12_n833(x)
- else
- fun_l12_n986(x)
- end
-end
-
-def fun_l11_n925(x)
- if (x < 1)
- fun_l12_n450(x)
- else
- fun_l12_n783(x)
- end
-end
-
-def fun_l11_n926(x)
- if (x < 1)
- fun_l12_n405(x)
- else
- fun_l12_n960(x)
- end
-end
-
-def fun_l11_n927(x)
- if (x < 1)
- fun_l12_n603(x)
- else
- fun_l12_n892(x)
- end
-end
-
-def fun_l11_n928(x)
- if (x < 1)
- fun_l12_n137(x)
- else
- fun_l12_n200(x)
- end
-end
-
-def fun_l11_n929(x)
- if (x < 1)
- fun_l12_n161(x)
- else
- fun_l12_n754(x)
- end
-end
-
-def fun_l11_n930(x)
- if (x < 1)
- fun_l12_n107(x)
- else
- fun_l12_n258(x)
- end
-end
-
-def fun_l11_n931(x)
- if (x < 1)
- fun_l12_n794(x)
- else
- fun_l12_n812(x)
- end
-end
-
-def fun_l11_n932(x)
- if (x < 1)
- fun_l12_n956(x)
- else
- fun_l12_n156(x)
- end
-end
-
-def fun_l11_n933(x)
- if (x < 1)
- fun_l12_n676(x)
- else
- fun_l12_n496(x)
- end
-end
-
-def fun_l11_n934(x)
- if (x < 1)
- fun_l12_n229(x)
- else
- fun_l12_n339(x)
- end
-end
-
-def fun_l11_n935(x)
- if (x < 1)
- fun_l12_n353(x)
- else
- fun_l12_n430(x)
- end
-end
-
-def fun_l11_n936(x)
- if (x < 1)
- fun_l12_n721(x)
- else
- fun_l12_n409(x)
- end
-end
-
-def fun_l11_n937(x)
- if (x < 1)
- fun_l12_n151(x)
- else
- fun_l12_n60(x)
- end
-end
-
-def fun_l11_n938(x)
- if (x < 1)
- fun_l12_n362(x)
- else
- fun_l12_n92(x)
- end
-end
-
-def fun_l11_n939(x)
- if (x < 1)
- fun_l12_n315(x)
- else
- fun_l12_n905(x)
- end
-end
-
-def fun_l11_n940(x)
- if (x < 1)
- fun_l12_n788(x)
- else
- fun_l12_n105(x)
- end
-end
-
-def fun_l11_n941(x)
- if (x < 1)
- fun_l12_n124(x)
- else
- fun_l12_n496(x)
- end
-end
-
-def fun_l11_n942(x)
- if (x < 1)
- fun_l12_n546(x)
- else
- fun_l12_n17(x)
- end
-end
-
-def fun_l11_n943(x)
- if (x < 1)
- fun_l12_n594(x)
- else
- fun_l12_n55(x)
- end
-end
-
-def fun_l11_n944(x)
- if (x < 1)
- fun_l12_n187(x)
- else
- fun_l12_n139(x)
- end
-end
-
-def fun_l11_n945(x)
- if (x < 1)
- fun_l12_n117(x)
- else
- fun_l12_n382(x)
- end
-end
-
-def fun_l11_n946(x)
- if (x < 1)
- fun_l12_n579(x)
- else
- fun_l12_n895(x)
- end
-end
-
-def fun_l11_n947(x)
- if (x < 1)
- fun_l12_n541(x)
- else
- fun_l12_n497(x)
- end
-end
-
-def fun_l11_n948(x)
- if (x < 1)
- fun_l12_n250(x)
- else
- fun_l12_n257(x)
- end
-end
-
-def fun_l11_n949(x)
- if (x < 1)
- fun_l12_n553(x)
- else
- fun_l12_n663(x)
- end
-end
-
-def fun_l11_n950(x)
- if (x < 1)
- fun_l12_n779(x)
- else
- fun_l12_n414(x)
- end
-end
-
-def fun_l11_n951(x)
- if (x < 1)
- fun_l12_n748(x)
- else
- fun_l12_n525(x)
- end
-end
-
-def fun_l11_n952(x)
- if (x < 1)
- fun_l12_n669(x)
- else
- fun_l12_n339(x)
- end
-end
-
-def fun_l11_n953(x)
- if (x < 1)
- fun_l12_n665(x)
- else
- fun_l12_n996(x)
- end
-end
-
-def fun_l11_n954(x)
- if (x < 1)
- fun_l12_n366(x)
- else
- fun_l12_n149(x)
- end
-end
-
-def fun_l11_n955(x)
- if (x < 1)
- fun_l12_n549(x)
- else
- fun_l12_n414(x)
- end
-end
-
-def fun_l11_n956(x)
- if (x < 1)
- fun_l12_n258(x)
- else
- fun_l12_n67(x)
- end
-end
-
-def fun_l11_n957(x)
- if (x < 1)
- fun_l12_n439(x)
- else
- fun_l12_n83(x)
- end
-end
-
-def fun_l11_n958(x)
- if (x < 1)
- fun_l12_n601(x)
- else
- fun_l12_n938(x)
- end
-end
-
-def fun_l11_n959(x)
- if (x < 1)
- fun_l12_n953(x)
- else
- fun_l12_n973(x)
- end
-end
-
-def fun_l11_n960(x)
- if (x < 1)
- fun_l12_n426(x)
- else
- fun_l12_n8(x)
- end
-end
-
-def fun_l11_n961(x)
- if (x < 1)
- fun_l12_n719(x)
- else
- fun_l12_n657(x)
- end
-end
-
-def fun_l11_n962(x)
- if (x < 1)
- fun_l12_n391(x)
- else
- fun_l12_n992(x)
- end
-end
-
-def fun_l11_n963(x)
- if (x < 1)
- fun_l12_n141(x)
- else
- fun_l12_n468(x)
- end
-end
-
-def fun_l11_n964(x)
- if (x < 1)
- fun_l12_n463(x)
- else
- fun_l12_n94(x)
- end
-end
-
-def fun_l11_n965(x)
- if (x < 1)
- fun_l12_n765(x)
- else
- fun_l12_n168(x)
- end
-end
-
-def fun_l11_n966(x)
- if (x < 1)
- fun_l12_n237(x)
- else
- fun_l12_n437(x)
- end
-end
-
-def fun_l11_n967(x)
- if (x < 1)
- fun_l12_n741(x)
- else
- fun_l12_n331(x)
- end
-end
-
-def fun_l11_n968(x)
- if (x < 1)
- fun_l12_n617(x)
- else
- fun_l12_n773(x)
- end
-end
-
-def fun_l11_n969(x)
- if (x < 1)
- fun_l12_n880(x)
- else
- fun_l12_n727(x)
- end
-end
-
-def fun_l11_n970(x)
- if (x < 1)
- fun_l12_n781(x)
- else
- fun_l12_n270(x)
- end
-end
-
-def fun_l11_n971(x)
- if (x < 1)
- fun_l12_n511(x)
- else
- fun_l12_n183(x)
- end
-end
-
-def fun_l11_n972(x)
- if (x < 1)
- fun_l12_n448(x)
- else
- fun_l12_n965(x)
- end
-end
-
-def fun_l11_n973(x)
- if (x < 1)
- fun_l12_n816(x)
- else
- fun_l12_n974(x)
- end
-end
-
-def fun_l11_n974(x)
- if (x < 1)
- fun_l12_n583(x)
- else
- fun_l12_n731(x)
- end
-end
-
-def fun_l11_n975(x)
- if (x < 1)
- fun_l12_n42(x)
- else
- fun_l12_n463(x)
- end
-end
-
-def fun_l11_n976(x)
- if (x < 1)
- fun_l12_n267(x)
- else
- fun_l12_n769(x)
- end
-end
-
-def fun_l11_n977(x)
- if (x < 1)
- fun_l12_n993(x)
- else
- fun_l12_n391(x)
- end
-end
-
-def fun_l11_n978(x)
- if (x < 1)
- fun_l12_n507(x)
- else
- fun_l12_n905(x)
- end
-end
-
-def fun_l11_n979(x)
- if (x < 1)
- fun_l12_n486(x)
- else
- fun_l12_n562(x)
- end
-end
-
-def fun_l11_n980(x)
- if (x < 1)
- fun_l12_n252(x)
- else
- fun_l12_n475(x)
- end
-end
-
-def fun_l11_n981(x)
- if (x < 1)
- fun_l12_n979(x)
- else
- fun_l12_n70(x)
- end
-end
-
-def fun_l11_n982(x)
- if (x < 1)
- fun_l12_n11(x)
- else
- fun_l12_n483(x)
- end
-end
-
-def fun_l11_n983(x)
- if (x < 1)
- fun_l12_n208(x)
- else
- fun_l12_n315(x)
- end
-end
-
-def fun_l11_n984(x)
- if (x < 1)
- fun_l12_n452(x)
- else
- fun_l12_n367(x)
- end
-end
-
-def fun_l11_n985(x)
- if (x < 1)
- fun_l12_n937(x)
- else
- fun_l12_n33(x)
- end
-end
-
-def fun_l11_n986(x)
- if (x < 1)
- fun_l12_n227(x)
- else
- fun_l12_n448(x)
- end
-end
-
-def fun_l11_n987(x)
- if (x < 1)
- fun_l12_n928(x)
- else
- fun_l12_n693(x)
- end
-end
-
-def fun_l11_n988(x)
- if (x < 1)
- fun_l12_n731(x)
- else
- fun_l12_n872(x)
- end
-end
-
-def fun_l11_n989(x)
- if (x < 1)
- fun_l12_n355(x)
- else
- fun_l12_n0(x)
- end
-end
-
-def fun_l11_n990(x)
- if (x < 1)
- fun_l12_n203(x)
- else
- fun_l12_n545(x)
- end
-end
-
-def fun_l11_n991(x)
- if (x < 1)
- fun_l12_n237(x)
- else
- fun_l12_n186(x)
- end
-end
-
-def fun_l11_n992(x)
- if (x < 1)
- fun_l12_n22(x)
- else
- fun_l12_n597(x)
- end
-end
-
-def fun_l11_n993(x)
- if (x < 1)
- fun_l12_n711(x)
- else
- fun_l12_n677(x)
- end
-end
-
-def fun_l11_n994(x)
- if (x < 1)
- fun_l12_n892(x)
- else
- fun_l12_n729(x)
- end
-end
-
-def fun_l11_n995(x)
- if (x < 1)
- fun_l12_n51(x)
- else
- fun_l12_n279(x)
- end
-end
-
-def fun_l11_n996(x)
- if (x < 1)
- fun_l12_n430(x)
- else
- fun_l12_n527(x)
- end
-end
-
-def fun_l11_n997(x)
- if (x < 1)
- fun_l12_n153(x)
- else
- fun_l12_n366(x)
- end
-end
-
-def fun_l11_n998(x)
- if (x < 1)
- fun_l12_n574(x)
- else
- fun_l12_n432(x)
- end
-end
-
-def fun_l11_n999(x)
- if (x < 1)
- fun_l12_n100(x)
- else
- fun_l12_n943(x)
- end
-end
-
-def fun_l12_n0(x)
- if (x < 1)
- fun_l13_n874(x)
- else
- fun_l13_n769(x)
- end
-end
-
-def fun_l12_n1(x)
- if (x < 1)
- fun_l13_n354(x)
- else
- fun_l13_n103(x)
- end
-end
-
-def fun_l12_n2(x)
- if (x < 1)
- fun_l13_n265(x)
- else
- fun_l13_n936(x)
- end
-end
-
-def fun_l12_n3(x)
- if (x < 1)
- fun_l13_n683(x)
- else
- fun_l13_n607(x)
- end
-end
-
-def fun_l12_n4(x)
- if (x < 1)
- fun_l13_n398(x)
- else
- fun_l13_n902(x)
- end
-end
-
-def fun_l12_n5(x)
- if (x < 1)
- fun_l13_n694(x)
- else
- fun_l13_n392(x)
- end
-end
-
-def fun_l12_n6(x)
- if (x < 1)
- fun_l13_n170(x)
- else
- fun_l13_n207(x)
- end
-end
-
-def fun_l12_n7(x)
- if (x < 1)
- fun_l13_n978(x)
- else
- fun_l13_n368(x)
- end
-end
-
-def fun_l12_n8(x)
- if (x < 1)
- fun_l13_n970(x)
- else
- fun_l13_n560(x)
- end
-end
-
-def fun_l12_n9(x)
- if (x < 1)
- fun_l13_n56(x)
- else
- fun_l13_n697(x)
- end
-end
-
-def fun_l12_n10(x)
- if (x < 1)
- fun_l13_n860(x)
- else
- fun_l13_n407(x)
- end
-end
-
-def fun_l12_n11(x)
- if (x < 1)
- fun_l13_n581(x)
- else
- fun_l13_n582(x)
- end
-end
-
-def fun_l12_n12(x)
- if (x < 1)
- fun_l13_n835(x)
- else
- fun_l13_n706(x)
- end
-end
-
-def fun_l12_n13(x)
- if (x < 1)
- fun_l13_n862(x)
- else
- fun_l13_n89(x)
- end
-end
-
-def fun_l12_n14(x)
- if (x < 1)
- fun_l13_n379(x)
- else
- fun_l13_n896(x)
- end
-end
-
-def fun_l12_n15(x)
- if (x < 1)
- fun_l13_n175(x)
- else
- fun_l13_n113(x)
- end
-end
-
-def fun_l12_n16(x)
- if (x < 1)
- fun_l13_n553(x)
- else
- fun_l13_n935(x)
- end
-end
-
-def fun_l12_n17(x)
- if (x < 1)
- fun_l13_n171(x)
- else
- fun_l13_n264(x)
- end
-end
-
-def fun_l12_n18(x)
- if (x < 1)
- fun_l13_n61(x)
- else
- fun_l13_n412(x)
- end
-end
-
-def fun_l12_n19(x)
- if (x < 1)
- fun_l13_n213(x)
- else
- fun_l13_n422(x)
- end
-end
-
-def fun_l12_n20(x)
- if (x < 1)
- fun_l13_n401(x)
- else
- fun_l13_n537(x)
- end
-end
-
-def fun_l12_n21(x)
- if (x < 1)
- fun_l13_n207(x)
- else
- fun_l13_n495(x)
- end
-end
-
-def fun_l12_n22(x)
- if (x < 1)
- fun_l13_n941(x)
- else
- fun_l13_n466(x)
- end
-end
-
-def fun_l12_n23(x)
- if (x < 1)
- fun_l13_n195(x)
- else
- fun_l13_n984(x)
- end
-end
-
-def fun_l12_n24(x)
- if (x < 1)
- fun_l13_n106(x)
- else
- fun_l13_n812(x)
- end
-end
-
-def fun_l12_n25(x)
- if (x < 1)
- fun_l13_n979(x)
- else
- fun_l13_n902(x)
- end
-end
-
-def fun_l12_n26(x)
- if (x < 1)
- fun_l13_n726(x)
- else
- fun_l13_n440(x)
- end
-end
-
-def fun_l12_n27(x)
- if (x < 1)
- fun_l13_n229(x)
- else
- fun_l13_n995(x)
- end
-end
-
-def fun_l12_n28(x)
- if (x < 1)
- fun_l13_n764(x)
- else
- fun_l13_n333(x)
- end
-end
-
-def fun_l12_n29(x)
- if (x < 1)
- fun_l13_n971(x)
- else
- fun_l13_n59(x)
- end
-end
-
-def fun_l12_n30(x)
- if (x < 1)
- fun_l13_n731(x)
- else
- fun_l13_n138(x)
- end
-end
-
-def fun_l12_n31(x)
- if (x < 1)
- fun_l13_n591(x)
- else
- fun_l13_n473(x)
- end
-end
-
-def fun_l12_n32(x)
- if (x < 1)
- fun_l13_n50(x)
- else
- fun_l13_n175(x)
- end
-end
-
-def fun_l12_n33(x)
- if (x < 1)
- fun_l13_n26(x)
- else
- fun_l13_n867(x)
- end
-end
-
-def fun_l12_n34(x)
- if (x < 1)
- fun_l13_n349(x)
- else
- fun_l13_n332(x)
- end
-end
-
-def fun_l12_n35(x)
- if (x < 1)
- fun_l13_n180(x)
- else
- fun_l13_n591(x)
- end
-end
-
-def fun_l12_n36(x)
- if (x < 1)
- fun_l13_n339(x)
- else
- fun_l13_n354(x)
- end
-end
-
-def fun_l12_n37(x)
- if (x < 1)
- fun_l13_n289(x)
- else
- fun_l13_n101(x)
- end
-end
-
-def fun_l12_n38(x)
- if (x < 1)
- fun_l13_n410(x)
- else
- fun_l13_n91(x)
- end
-end
-
-def fun_l12_n39(x)
- if (x < 1)
- fun_l13_n617(x)
- else
- fun_l13_n716(x)
- end
-end
-
-def fun_l12_n40(x)
- if (x < 1)
- fun_l13_n116(x)
- else
- fun_l13_n875(x)
- end
-end
-
-def fun_l12_n41(x)
- if (x < 1)
- fun_l13_n162(x)
- else
- fun_l13_n844(x)
- end
-end
-
-def fun_l12_n42(x)
- if (x < 1)
- fun_l13_n79(x)
- else
- fun_l13_n589(x)
- end
-end
-
-def fun_l12_n43(x)
- if (x < 1)
- fun_l13_n835(x)
- else
- fun_l13_n21(x)
- end
-end
-
-def fun_l12_n44(x)
- if (x < 1)
- fun_l13_n420(x)
- else
- fun_l13_n403(x)
- end
-end
-
-def fun_l12_n45(x)
- if (x < 1)
- fun_l13_n203(x)
- else
- fun_l13_n890(x)
- end
-end
-
-def fun_l12_n46(x)
- if (x < 1)
- fun_l13_n529(x)
- else
- fun_l13_n717(x)
- end
-end
-
-def fun_l12_n47(x)
- if (x < 1)
- fun_l13_n766(x)
- else
- fun_l13_n635(x)
- end
-end
-
-def fun_l12_n48(x)
- if (x < 1)
- fun_l13_n223(x)
- else
- fun_l13_n460(x)
- end
-end
-
-def fun_l12_n49(x)
- if (x < 1)
- fun_l13_n799(x)
- else
- fun_l13_n397(x)
- end
-end
-
-def fun_l12_n50(x)
- if (x < 1)
- fun_l13_n200(x)
- else
- fun_l13_n608(x)
- end
-end
-
-def fun_l12_n51(x)
- if (x < 1)
- fun_l13_n212(x)
- else
- fun_l13_n612(x)
- end
-end
-
-def fun_l12_n52(x)
- if (x < 1)
- fun_l13_n271(x)
- else
- fun_l13_n324(x)
- end
-end
-
-def fun_l12_n53(x)
- if (x < 1)
- fun_l13_n639(x)
- else
- fun_l13_n603(x)
- end
-end
-
-def fun_l12_n54(x)
- if (x < 1)
- fun_l13_n125(x)
- else
- fun_l13_n726(x)
- end
-end
-
-def fun_l12_n55(x)
- if (x < 1)
- fun_l13_n266(x)
- else
- fun_l13_n552(x)
- end
-end
-
-def fun_l12_n56(x)
- if (x < 1)
- fun_l13_n412(x)
- else
- fun_l13_n132(x)
- end
-end
-
-def fun_l12_n57(x)
- if (x < 1)
- fun_l13_n235(x)
- else
- fun_l13_n892(x)
- end
-end
-
-def fun_l12_n58(x)
- if (x < 1)
- fun_l13_n515(x)
- else
- fun_l13_n465(x)
- end
-end
-
-def fun_l12_n59(x)
- if (x < 1)
- fun_l13_n38(x)
- else
- fun_l13_n757(x)
- end
-end
-
-def fun_l12_n60(x)
- if (x < 1)
- fun_l13_n544(x)
- else
- fun_l13_n794(x)
- end
-end
-
-def fun_l12_n61(x)
- if (x < 1)
- fun_l13_n622(x)
- else
- fun_l13_n340(x)
- end
-end
-
-def fun_l12_n62(x)
- if (x < 1)
- fun_l13_n563(x)
- else
- fun_l13_n313(x)
- end
-end
-
-def fun_l12_n63(x)
- if (x < 1)
- fun_l13_n936(x)
- else
- fun_l13_n38(x)
- end
-end
-
-def fun_l12_n64(x)
- if (x < 1)
- fun_l13_n951(x)
- else
- fun_l13_n543(x)
- end
-end
-
-def fun_l12_n65(x)
- if (x < 1)
- fun_l13_n577(x)
- else
- fun_l13_n190(x)
- end
-end
-
-def fun_l12_n66(x)
- if (x < 1)
- fun_l13_n649(x)
- else
- fun_l13_n887(x)
- end
-end
-
-def fun_l12_n67(x)
- if (x < 1)
- fun_l13_n218(x)
- else
- fun_l13_n200(x)
- end
-end
-
-def fun_l12_n68(x)
- if (x < 1)
- fun_l13_n111(x)
- else
- fun_l13_n849(x)
- end
-end
-
-def fun_l12_n69(x)
- if (x < 1)
- fun_l13_n431(x)
- else
- fun_l13_n816(x)
- end
-end
-
-def fun_l12_n70(x)
- if (x < 1)
- fun_l13_n970(x)
- else
- fun_l13_n545(x)
- end
-end
-
-def fun_l12_n71(x)
- if (x < 1)
- fun_l13_n3(x)
- else
- fun_l13_n751(x)
- end
-end
-
-def fun_l12_n72(x)
- if (x < 1)
- fun_l13_n58(x)
- else
- fun_l13_n994(x)
- end
-end
-
-def fun_l12_n73(x)
- if (x < 1)
- fun_l13_n397(x)
- else
- fun_l13_n783(x)
- end
-end
-
-def fun_l12_n74(x)
- if (x < 1)
- fun_l13_n705(x)
- else
- fun_l13_n318(x)
- end
-end
-
-def fun_l12_n75(x)
- if (x < 1)
- fun_l13_n406(x)
- else
- fun_l13_n880(x)
- end
-end
-
-def fun_l12_n76(x)
- if (x < 1)
- fun_l13_n867(x)
- else
- fun_l13_n234(x)
- end
-end
-
-def fun_l12_n77(x)
- if (x < 1)
- fun_l13_n447(x)
- else
- fun_l13_n617(x)
- end
-end
-
-def fun_l12_n78(x)
- if (x < 1)
- fun_l13_n631(x)
- else
- fun_l13_n687(x)
- end
-end
-
-def fun_l12_n79(x)
- if (x < 1)
- fun_l13_n735(x)
- else
- fun_l13_n512(x)
- end
-end
-
-def fun_l12_n80(x)
- if (x < 1)
- fun_l13_n826(x)
- else
- fun_l13_n626(x)
- end
-end
-
-def fun_l12_n81(x)
- if (x < 1)
- fun_l13_n959(x)
- else
- fun_l13_n357(x)
- end
-end
-
-def fun_l12_n82(x)
- if (x < 1)
- fun_l13_n17(x)
- else
- fun_l13_n722(x)
- end
-end
-
-def fun_l12_n83(x)
- if (x < 1)
- fun_l13_n702(x)
- else
- fun_l13_n441(x)
- end
-end
-
-def fun_l12_n84(x)
- if (x < 1)
- fun_l13_n939(x)
- else
- fun_l13_n972(x)
- end
-end
-
-def fun_l12_n85(x)
- if (x < 1)
- fun_l13_n747(x)
- else
- fun_l13_n481(x)
- end
-end
-
-def fun_l12_n86(x)
- if (x < 1)
- fun_l13_n813(x)
- else
- fun_l13_n780(x)
- end
-end
-
-def fun_l12_n87(x)
- if (x < 1)
- fun_l13_n87(x)
- else
- fun_l13_n19(x)
- end
-end
-
-def fun_l12_n88(x)
- if (x < 1)
- fun_l13_n422(x)
- else
- fun_l13_n938(x)
- end
-end
-
-def fun_l12_n89(x)
- if (x < 1)
- fun_l13_n575(x)
- else
- fun_l13_n150(x)
- end
-end
-
-def fun_l12_n90(x)
- if (x < 1)
- fun_l13_n294(x)
- else
- fun_l13_n666(x)
- end
-end
-
-def fun_l12_n91(x)
- if (x < 1)
- fun_l13_n216(x)
- else
- fun_l13_n315(x)
- end
-end
-
-def fun_l12_n92(x)
- if (x < 1)
- fun_l13_n580(x)
- else
- fun_l13_n487(x)
- end
-end
-
-def fun_l12_n93(x)
- if (x < 1)
- fun_l13_n500(x)
- else
- fun_l13_n2(x)
- end
-end
-
-def fun_l12_n94(x)
- if (x < 1)
- fun_l13_n362(x)
- else
- fun_l13_n69(x)
- end
-end
-
-def fun_l12_n95(x)
- if (x < 1)
- fun_l13_n50(x)
- else
- fun_l13_n549(x)
- end
-end
-
-def fun_l12_n96(x)
- if (x < 1)
- fun_l13_n407(x)
- else
- fun_l13_n935(x)
- end
-end
-
-def fun_l12_n97(x)
- if (x < 1)
- fun_l13_n715(x)
- else
- fun_l13_n70(x)
- end
-end
-
-def fun_l12_n98(x)
- if (x < 1)
- fun_l13_n184(x)
- else
- fun_l13_n702(x)
- end
-end
-
-def fun_l12_n99(x)
- if (x < 1)
- fun_l13_n612(x)
- else
- fun_l13_n972(x)
- end
-end
-
-def fun_l12_n100(x)
- if (x < 1)
- fun_l13_n778(x)
- else
- fun_l13_n458(x)
- end
-end
-
-def fun_l12_n101(x)
- if (x < 1)
- fun_l13_n387(x)
- else
- fun_l13_n783(x)
- end
-end
-
-def fun_l12_n102(x)
- if (x < 1)
- fun_l13_n764(x)
- else
- fun_l13_n647(x)
- end
-end
-
-def fun_l12_n103(x)
- if (x < 1)
- fun_l13_n310(x)
- else
- fun_l13_n46(x)
- end
-end
-
-def fun_l12_n104(x)
- if (x < 1)
- fun_l13_n643(x)
- else
- fun_l13_n479(x)
- end
-end
-
-def fun_l12_n105(x)
- if (x < 1)
- fun_l13_n909(x)
- else
- fun_l13_n10(x)
- end
-end
-
-def fun_l12_n106(x)
- if (x < 1)
- fun_l13_n181(x)
- else
- fun_l13_n671(x)
- end
-end
-
-def fun_l12_n107(x)
- if (x < 1)
- fun_l13_n592(x)
- else
- fun_l13_n421(x)
- end
-end
-
-def fun_l12_n108(x)
- if (x < 1)
- fun_l13_n438(x)
- else
- fun_l13_n196(x)
- end
-end
-
-def fun_l12_n109(x)
- if (x < 1)
- fun_l13_n605(x)
- else
- fun_l13_n529(x)
- end
-end
-
-def fun_l12_n110(x)
- if (x < 1)
- fun_l13_n31(x)
- else
- fun_l13_n769(x)
- end
-end
-
-def fun_l12_n111(x)
- if (x < 1)
- fun_l13_n790(x)
- else
- fun_l13_n773(x)
- end
-end
-
-def fun_l12_n112(x)
- if (x < 1)
- fun_l13_n778(x)
- else
- fun_l13_n621(x)
- end
-end
-
-def fun_l12_n113(x)
- if (x < 1)
- fun_l13_n892(x)
- else
- fun_l13_n413(x)
- end
-end
-
-def fun_l12_n114(x)
- if (x < 1)
- fun_l13_n675(x)
- else
- fun_l13_n124(x)
- end
-end
-
-def fun_l12_n115(x)
- if (x < 1)
- fun_l13_n366(x)
- else
- fun_l13_n884(x)
- end
-end
-
-def fun_l12_n116(x)
- if (x < 1)
- fun_l13_n552(x)
- else
- fun_l13_n769(x)
- end
-end
-
-def fun_l12_n117(x)
- if (x < 1)
- fun_l13_n11(x)
- else
- fun_l13_n46(x)
- end
-end
-
-def fun_l12_n118(x)
- if (x < 1)
- fun_l13_n766(x)
- else
- fun_l13_n914(x)
- end
-end
-
-def fun_l12_n119(x)
- if (x < 1)
- fun_l13_n980(x)
- else
- fun_l13_n956(x)
- end
-end
-
-def fun_l12_n120(x)
- if (x < 1)
- fun_l13_n668(x)
- else
- fun_l13_n532(x)
- end
-end
-
-def fun_l12_n121(x)
- if (x < 1)
- fun_l13_n864(x)
- else
- fun_l13_n489(x)
- end
-end
-
-def fun_l12_n122(x)
- if (x < 1)
- fun_l13_n581(x)
- else
- fun_l13_n33(x)
- end
-end
-
-def fun_l12_n123(x)
- if (x < 1)
- fun_l13_n188(x)
- else
- fun_l13_n652(x)
- end
-end
-
-def fun_l12_n124(x)
- if (x < 1)
- fun_l13_n631(x)
- else
- fun_l13_n932(x)
- end
-end
-
-def fun_l12_n125(x)
- if (x < 1)
- fun_l13_n646(x)
- else
- fun_l13_n525(x)
- end
-end
-
-def fun_l12_n126(x)
- if (x < 1)
- fun_l13_n878(x)
- else
- fun_l13_n98(x)
- end
-end
-
-def fun_l12_n127(x)
- if (x < 1)
- fun_l13_n120(x)
- else
- fun_l13_n950(x)
- end
-end
-
-def fun_l12_n128(x)
- if (x < 1)
- fun_l13_n405(x)
- else
- fun_l13_n60(x)
- end
-end
-
-def fun_l12_n129(x)
- if (x < 1)
- fun_l13_n635(x)
- else
- fun_l13_n992(x)
- end
-end
-
-def fun_l12_n130(x)
- if (x < 1)
- fun_l13_n711(x)
- else
- fun_l13_n172(x)
- end
-end
-
-def fun_l12_n131(x)
- if (x < 1)
- fun_l13_n2(x)
- else
- fun_l13_n328(x)
- end
-end
-
-def fun_l12_n132(x)
- if (x < 1)
- fun_l13_n506(x)
- else
- fun_l13_n258(x)
- end
-end
-
-def fun_l12_n133(x)
- if (x < 1)
- fun_l13_n737(x)
- else
- fun_l13_n552(x)
- end
-end
-
-def fun_l12_n134(x)
- if (x < 1)
- fun_l13_n596(x)
- else
- fun_l13_n475(x)
- end
-end
-
-def fun_l12_n135(x)
- if (x < 1)
- fun_l13_n751(x)
- else
- fun_l13_n610(x)
- end
-end
-
-def fun_l12_n136(x)
- if (x < 1)
- fun_l13_n778(x)
- else
- fun_l13_n719(x)
- end
-end
-
-def fun_l12_n137(x)
- if (x < 1)
- fun_l13_n779(x)
- else
- fun_l13_n204(x)
- end
-end
-
-def fun_l12_n138(x)
- if (x < 1)
- fun_l13_n765(x)
- else
- fun_l13_n280(x)
- end
-end
-
-def fun_l12_n139(x)
- if (x < 1)
- fun_l13_n896(x)
- else
- fun_l13_n558(x)
- end
-end
-
-def fun_l12_n140(x)
- if (x < 1)
- fun_l13_n16(x)
- else
- fun_l13_n809(x)
- end
-end
-
-def fun_l12_n141(x)
- if (x < 1)
- fun_l13_n182(x)
- else
- fun_l13_n960(x)
- end
-end
-
-def fun_l12_n142(x)
- if (x < 1)
- fun_l13_n196(x)
- else
- fun_l13_n794(x)
- end
-end
-
-def fun_l12_n143(x)
- if (x < 1)
- fun_l13_n993(x)
- else
- fun_l13_n426(x)
- end
-end
-
-def fun_l12_n144(x)
- if (x < 1)
- fun_l13_n926(x)
- else
- fun_l13_n554(x)
- end
-end
-
-def fun_l12_n145(x)
- if (x < 1)
- fun_l13_n839(x)
- else
- fun_l13_n987(x)
- end
-end
-
-def fun_l12_n146(x)
- if (x < 1)
- fun_l13_n412(x)
- else
- fun_l13_n359(x)
- end
-end
-
-def fun_l12_n147(x)
- if (x < 1)
- fun_l13_n147(x)
- else
- fun_l13_n640(x)
- end
-end
-
-def fun_l12_n148(x)
- if (x < 1)
- fun_l13_n831(x)
- else
- fun_l13_n862(x)
- end
-end
-
-def fun_l12_n149(x)
- if (x < 1)
- fun_l13_n161(x)
- else
- fun_l13_n396(x)
- end
-end
-
-def fun_l12_n150(x)
- if (x < 1)
- fun_l13_n734(x)
- else
- fun_l13_n226(x)
- end
-end
-
-def fun_l12_n151(x)
- if (x < 1)
- fun_l13_n390(x)
- else
- fun_l13_n396(x)
- end
-end
-
-def fun_l12_n152(x)
- if (x < 1)
- fun_l13_n722(x)
- else
- fun_l13_n939(x)
- end
-end
-
-def fun_l12_n153(x)
- if (x < 1)
- fun_l13_n554(x)
- else
- fun_l13_n461(x)
- end
-end
-
-def fun_l12_n154(x)
- if (x < 1)
- fun_l13_n223(x)
- else
- fun_l13_n502(x)
- end
-end
-
-def fun_l12_n155(x)
- if (x < 1)
- fun_l13_n526(x)
- else
- fun_l13_n949(x)
- end
-end
-
-def fun_l12_n156(x)
- if (x < 1)
- fun_l13_n764(x)
- else
- fun_l13_n290(x)
- end
-end
-
-def fun_l12_n157(x)
- if (x < 1)
- fun_l13_n904(x)
- else
- fun_l13_n562(x)
- end
-end
-
-def fun_l12_n158(x)
- if (x < 1)
- fun_l13_n308(x)
- else
- fun_l13_n646(x)
- end
-end
-
-def fun_l12_n159(x)
- if (x < 1)
- fun_l13_n417(x)
- else
- fun_l13_n576(x)
- end
-end
-
-def fun_l12_n160(x)
- if (x < 1)
- fun_l13_n846(x)
- else
- fun_l13_n989(x)
- end
-end
-
-def fun_l12_n161(x)
- if (x < 1)
- fun_l13_n59(x)
- else
- fun_l13_n877(x)
- end
-end
-
-def fun_l12_n162(x)
- if (x < 1)
- fun_l13_n194(x)
- else
- fun_l13_n654(x)
- end
-end
-
-def fun_l12_n163(x)
- if (x < 1)
- fun_l13_n350(x)
- else
- fun_l13_n412(x)
- end
-end
-
-def fun_l12_n164(x)
- if (x < 1)
- fun_l13_n482(x)
- else
- fun_l13_n820(x)
- end
-end
-
-def fun_l12_n165(x)
- if (x < 1)
- fun_l13_n251(x)
- else
- fun_l13_n421(x)
- end
-end
-
-def fun_l12_n166(x)
- if (x < 1)
- fun_l13_n832(x)
- else
- fun_l13_n505(x)
- end
-end
-
-def fun_l12_n167(x)
- if (x < 1)
- fun_l13_n316(x)
- else
- fun_l13_n355(x)
- end
-end
-
-def fun_l12_n168(x)
- if (x < 1)
- fun_l13_n325(x)
- else
- fun_l13_n755(x)
- end
-end
-
-def fun_l12_n169(x)
- if (x < 1)
- fun_l13_n536(x)
- else
- fun_l13_n753(x)
- end
-end
-
-def fun_l12_n170(x)
- if (x < 1)
- fun_l13_n819(x)
- else
- fun_l13_n532(x)
- end
-end
-
-def fun_l12_n171(x)
- if (x < 1)
- fun_l13_n633(x)
- else
- fun_l13_n96(x)
- end
-end
-
-def fun_l12_n172(x)
- if (x < 1)
- fun_l13_n229(x)
- else
- fun_l13_n105(x)
- end
-end
-
-def fun_l12_n173(x)
- if (x < 1)
- fun_l13_n796(x)
- else
- fun_l13_n466(x)
- end
-end
-
-def fun_l12_n174(x)
- if (x < 1)
- fun_l13_n520(x)
- else
- fun_l13_n329(x)
- end
-end
-
-def fun_l12_n175(x)
- if (x < 1)
- fun_l13_n358(x)
- else
- fun_l13_n201(x)
- end
-end
-
-def fun_l12_n176(x)
- if (x < 1)
- fun_l13_n42(x)
- else
- fun_l13_n649(x)
- end
-end
-
-def fun_l12_n177(x)
- if (x < 1)
- fun_l13_n933(x)
- else
- fun_l13_n719(x)
- end
-end
-
-def fun_l12_n178(x)
- if (x < 1)
- fun_l13_n236(x)
- else
- fun_l13_n723(x)
- end
-end
-
-def fun_l12_n179(x)
- if (x < 1)
- fun_l13_n992(x)
- else
- fun_l13_n436(x)
- end
-end
-
-def fun_l12_n180(x)
- if (x < 1)
- fun_l13_n221(x)
- else
- fun_l13_n294(x)
- end
-end
-
-def fun_l12_n181(x)
- if (x < 1)
- fun_l13_n580(x)
- else
- fun_l13_n939(x)
- end
-end
-
-def fun_l12_n182(x)
- if (x < 1)
- fun_l13_n608(x)
- else
- fun_l13_n709(x)
- end
-end
-
-def fun_l12_n183(x)
- if (x < 1)
- fun_l13_n644(x)
- else
- fun_l13_n717(x)
- end
-end
-
-def fun_l12_n184(x)
- if (x < 1)
- fun_l13_n605(x)
- else
- fun_l13_n665(x)
- end
-end
-
-def fun_l12_n185(x)
- if (x < 1)
- fun_l13_n729(x)
- else
- fun_l13_n876(x)
- end
-end
-
-def fun_l12_n186(x)
- if (x < 1)
- fun_l13_n43(x)
- else
- fun_l13_n366(x)
- end
-end
-
-def fun_l12_n187(x)
- if (x < 1)
- fun_l13_n401(x)
- else
- fun_l13_n610(x)
- end
-end
-
-def fun_l12_n188(x)
- if (x < 1)
- fun_l13_n489(x)
- else
- fun_l13_n107(x)
- end
-end
-
-def fun_l12_n189(x)
- if (x < 1)
- fun_l13_n859(x)
- else
- fun_l13_n355(x)
- end
-end
-
-def fun_l12_n190(x)
- if (x < 1)
- fun_l13_n631(x)
- else
- fun_l13_n399(x)
- end
-end
-
-def fun_l12_n191(x)
- if (x < 1)
- fun_l13_n332(x)
- else
- fun_l13_n333(x)
- end
-end
-
-def fun_l12_n192(x)
- if (x < 1)
- fun_l13_n535(x)
- else
- fun_l13_n191(x)
- end
-end
-
-def fun_l12_n193(x)
- if (x < 1)
- fun_l13_n157(x)
- else
- fun_l13_n927(x)
- end
-end
-
-def fun_l12_n194(x)
- if (x < 1)
- fun_l13_n733(x)
- else
- fun_l13_n798(x)
- end
-end
-
-def fun_l12_n195(x)
- if (x < 1)
- fun_l13_n31(x)
- else
- fun_l13_n703(x)
- end
-end
-
-def fun_l12_n196(x)
- if (x < 1)
- fun_l13_n976(x)
- else
- fun_l13_n862(x)
- end
-end
-
-def fun_l12_n197(x)
- if (x < 1)
- fun_l13_n267(x)
- else
- fun_l13_n803(x)
- end
-end
-
-def fun_l12_n198(x)
- if (x < 1)
- fun_l13_n598(x)
- else
- fun_l13_n255(x)
- end
-end
-
-def fun_l12_n199(x)
- if (x < 1)
- fun_l13_n566(x)
- else
- fun_l13_n668(x)
- end
-end
-
-def fun_l12_n200(x)
- if (x < 1)
- fun_l13_n48(x)
- else
- fun_l13_n406(x)
- end
-end
-
-def fun_l12_n201(x)
- if (x < 1)
- fun_l13_n971(x)
- else
- fun_l13_n225(x)
- end
-end
-
-def fun_l12_n202(x)
- if (x < 1)
- fun_l13_n120(x)
- else
- fun_l13_n72(x)
- end
-end
-
-def fun_l12_n203(x)
- if (x < 1)
- fun_l13_n333(x)
- else
- fun_l13_n381(x)
- end
-end
-
-def fun_l12_n204(x)
- if (x < 1)
- fun_l13_n558(x)
- else
- fun_l13_n474(x)
- end
-end
-
-def fun_l12_n205(x)
- if (x < 1)
- fun_l13_n796(x)
- else
- fun_l13_n420(x)
- end
-end
-
-def fun_l12_n206(x)
- if (x < 1)
- fun_l13_n287(x)
- else
- fun_l13_n43(x)
- end
-end
-
-def fun_l12_n207(x)
- if (x < 1)
- fun_l13_n778(x)
- else
- fun_l13_n560(x)
- end
-end
-
-def fun_l12_n208(x)
- if (x < 1)
- fun_l13_n707(x)
- else
- fun_l13_n824(x)
- end
-end
-
-def fun_l12_n209(x)
- if (x < 1)
- fun_l13_n788(x)
- else
- fun_l13_n625(x)
- end
-end
-
-def fun_l12_n210(x)
- if (x < 1)
- fun_l13_n818(x)
- else
- fun_l13_n667(x)
- end
-end
-
-def fun_l12_n211(x)
- if (x < 1)
- fun_l13_n710(x)
- else
- fun_l13_n508(x)
- end
-end
-
-def fun_l12_n212(x)
- if (x < 1)
- fun_l13_n497(x)
- else
- fun_l13_n20(x)
- end
-end
-
-def fun_l12_n213(x)
- if (x < 1)
- fun_l13_n648(x)
- else
- fun_l13_n33(x)
- end
-end
-
-def fun_l12_n214(x)
- if (x < 1)
- fun_l13_n404(x)
- else
- fun_l13_n918(x)
- end
-end
-
-def fun_l12_n215(x)
- if (x < 1)
- fun_l13_n595(x)
- else
- fun_l13_n440(x)
- end
-end
-
-def fun_l12_n216(x)
- if (x < 1)
- fun_l13_n302(x)
- else
- fun_l13_n388(x)
- end
-end
-
-def fun_l12_n217(x)
- if (x < 1)
- fun_l13_n301(x)
- else
- fun_l13_n416(x)
- end
-end
-
-def fun_l12_n218(x)
- if (x < 1)
- fun_l13_n114(x)
- else
- fun_l13_n650(x)
- end
-end
-
-def fun_l12_n219(x)
- if (x < 1)
- fun_l13_n221(x)
- else
- fun_l13_n539(x)
- end
-end
-
-def fun_l12_n220(x)
- if (x < 1)
- fun_l13_n529(x)
- else
- fun_l13_n438(x)
- end
-end
-
-def fun_l12_n221(x)
- if (x < 1)
- fun_l13_n528(x)
- else
- fun_l13_n284(x)
- end
-end
-
-def fun_l12_n222(x)
- if (x < 1)
- fun_l13_n746(x)
- else
- fun_l13_n634(x)
- end
-end
-
-def fun_l12_n223(x)
- if (x < 1)
- fun_l13_n726(x)
- else
- fun_l13_n142(x)
- end
-end
-
-def fun_l12_n224(x)
- if (x < 1)
- fun_l13_n57(x)
- else
- fun_l13_n625(x)
- end
-end
-
-def fun_l12_n225(x)
- if (x < 1)
- fun_l13_n739(x)
- else
- fun_l13_n667(x)
- end
-end
-
-def fun_l12_n226(x)
- if (x < 1)
- fun_l13_n693(x)
- else
- fun_l13_n819(x)
- end
-end
-
-def fun_l12_n227(x)
- if (x < 1)
- fun_l13_n316(x)
- else
- fun_l13_n866(x)
- end
-end
-
-def fun_l12_n228(x)
- if (x < 1)
- fun_l13_n88(x)
- else
- fun_l13_n336(x)
- end
-end
-
-def fun_l12_n229(x)
- if (x < 1)
- fun_l13_n387(x)
- else
- fun_l13_n226(x)
- end
-end
-
-def fun_l12_n230(x)
- if (x < 1)
- fun_l13_n644(x)
- else
- fun_l13_n933(x)
- end
-end
-
-def fun_l12_n231(x)
- if (x < 1)
- fun_l13_n952(x)
- else
- fun_l13_n747(x)
- end
-end
-
-def fun_l12_n232(x)
- if (x < 1)
- fun_l13_n107(x)
- else
- fun_l13_n0(x)
- end
-end
-
-def fun_l12_n233(x)
- if (x < 1)
- fun_l13_n589(x)
- else
- fun_l13_n712(x)
- end
-end
-
-def fun_l12_n234(x)
- if (x < 1)
- fun_l13_n429(x)
- else
- fun_l13_n845(x)
- end
-end
-
-def fun_l12_n235(x)
- if (x < 1)
- fun_l13_n733(x)
- else
- fun_l13_n203(x)
- end
-end
-
-def fun_l12_n236(x)
- if (x < 1)
- fun_l13_n842(x)
- else
- fun_l13_n134(x)
- end
-end
-
-def fun_l12_n237(x)
- if (x < 1)
- fun_l13_n114(x)
- else
- fun_l13_n794(x)
- end
-end
-
-def fun_l12_n238(x)
- if (x < 1)
- fun_l13_n463(x)
- else
- fun_l13_n127(x)
- end
-end
-
-def fun_l12_n239(x)
- if (x < 1)
- fun_l13_n443(x)
- else
- fun_l13_n13(x)
- end
-end
-
-def fun_l12_n240(x)
- if (x < 1)
- fun_l13_n713(x)
- else
- fun_l13_n447(x)
- end
-end
-
-def fun_l12_n241(x)
- if (x < 1)
- fun_l13_n404(x)
- else
- fun_l13_n796(x)
- end
-end
-
-def fun_l12_n242(x)
- if (x < 1)
- fun_l13_n277(x)
- else
- fun_l13_n106(x)
- end
-end
-
-def fun_l12_n243(x)
- if (x < 1)
- fun_l13_n584(x)
- else
- fun_l13_n262(x)
- end
-end
-
-def fun_l12_n244(x)
- if (x < 1)
- fun_l13_n670(x)
- else
- fun_l13_n989(x)
- end
-end
-
-def fun_l12_n245(x)
- if (x < 1)
- fun_l13_n588(x)
- else
- fun_l13_n513(x)
- end
-end
-
-def fun_l12_n246(x)
- if (x < 1)
- fun_l13_n98(x)
- else
- fun_l13_n400(x)
- end
-end
-
-def fun_l12_n247(x)
- if (x < 1)
- fun_l13_n119(x)
- else
- fun_l13_n321(x)
- end
-end
-
-def fun_l12_n248(x)
- if (x < 1)
- fun_l13_n157(x)
- else
- fun_l13_n557(x)
- end
-end
-
-def fun_l12_n249(x)
- if (x < 1)
- fun_l13_n243(x)
- else
- fun_l13_n596(x)
- end
-end
-
-def fun_l12_n250(x)
- if (x < 1)
- fun_l13_n280(x)
- else
- fun_l13_n779(x)
- end
-end
-
-def fun_l12_n251(x)
- if (x < 1)
- fun_l13_n437(x)
- else
- fun_l13_n829(x)
- end
-end
-
-def fun_l12_n252(x)
- if (x < 1)
- fun_l13_n472(x)
- else
- fun_l13_n224(x)
- end
-end
-
-def fun_l12_n253(x)
- if (x < 1)
- fun_l13_n151(x)
- else
- fun_l13_n168(x)
- end
-end
-
-def fun_l12_n254(x)
- if (x < 1)
- fun_l13_n724(x)
- else
- fun_l13_n355(x)
- end
-end
-
-def fun_l12_n255(x)
- if (x < 1)
- fun_l13_n27(x)
- else
- fun_l13_n776(x)
- end
-end
-
-def fun_l12_n256(x)
- if (x < 1)
- fun_l13_n116(x)
- else
- fun_l13_n52(x)
- end
-end
-
-def fun_l12_n257(x)
- if (x < 1)
- fun_l13_n201(x)
- else
- fun_l13_n982(x)
- end
-end
-
-def fun_l12_n258(x)
- if (x < 1)
- fun_l13_n152(x)
- else
- fun_l13_n818(x)
- end
-end
-
-def fun_l12_n259(x)
- if (x < 1)
- fun_l13_n859(x)
- else
- fun_l13_n555(x)
- end
-end
-
-def fun_l12_n260(x)
- if (x < 1)
- fun_l13_n29(x)
- else
- fun_l13_n416(x)
- end
-end
-
-def fun_l12_n261(x)
- if (x < 1)
- fun_l13_n811(x)
- else
- fun_l13_n827(x)
- end
-end
-
-def fun_l12_n262(x)
- if (x < 1)
- fun_l13_n867(x)
- else
- fun_l13_n298(x)
- end
-end
-
-def fun_l12_n263(x)
- if (x < 1)
- fun_l13_n464(x)
- else
- fun_l13_n420(x)
- end
-end
-
-def fun_l12_n264(x)
- if (x < 1)
- fun_l13_n494(x)
- else
- fun_l13_n368(x)
- end
-end
-
-def fun_l12_n265(x)
- if (x < 1)
- fun_l13_n959(x)
- else
- fun_l13_n425(x)
- end
-end
-
-def fun_l12_n266(x)
- if (x < 1)
- fun_l13_n841(x)
- else
- fun_l13_n874(x)
- end
-end
-
-def fun_l12_n267(x)
- if (x < 1)
- fun_l13_n885(x)
- else
- fun_l13_n631(x)
- end
-end
-
-def fun_l12_n268(x)
- if (x < 1)
- fun_l13_n645(x)
- else
- fun_l13_n342(x)
- end
-end
-
-def fun_l12_n269(x)
- if (x < 1)
- fun_l13_n4(x)
- else
- fun_l13_n81(x)
- end
-end
-
-def fun_l12_n270(x)
- if (x < 1)
- fun_l13_n44(x)
- else
- fun_l13_n924(x)
- end
-end
-
-def fun_l12_n271(x)
- if (x < 1)
- fun_l13_n955(x)
- else
- fun_l13_n834(x)
- end
-end
-
-def fun_l12_n272(x)
- if (x < 1)
- fun_l13_n969(x)
- else
- fun_l13_n699(x)
- end
-end
-
-def fun_l12_n273(x)
- if (x < 1)
- fun_l13_n590(x)
- else
- fun_l13_n608(x)
- end
-end
-
-def fun_l12_n274(x)
- if (x < 1)
- fun_l13_n170(x)
- else
- fun_l13_n343(x)
- end
-end
-
-def fun_l12_n275(x)
- if (x < 1)
- fun_l13_n317(x)
- else
- fun_l13_n998(x)
- end
-end
-
-def fun_l12_n276(x)
- if (x < 1)
- fun_l13_n864(x)
- else
- fun_l13_n644(x)
- end
-end
-
-def fun_l12_n277(x)
- if (x < 1)
- fun_l13_n42(x)
- else
- fun_l13_n663(x)
- end
-end
-
-def fun_l12_n278(x)
- if (x < 1)
- fun_l13_n39(x)
- else
- fun_l13_n624(x)
- end
-end
-
-def fun_l12_n279(x)
- if (x < 1)
- fun_l13_n578(x)
- else
- fun_l13_n592(x)
- end
-end
-
-def fun_l12_n280(x)
- if (x < 1)
- fun_l13_n345(x)
- else
- fun_l13_n462(x)
- end
-end
-
-def fun_l12_n281(x)
- if (x < 1)
- fun_l13_n741(x)
- else
- fun_l13_n93(x)
- end
-end
-
-def fun_l12_n282(x)
- if (x < 1)
- fun_l13_n845(x)
- else
- fun_l13_n981(x)
- end
-end
-
-def fun_l12_n283(x)
- if (x < 1)
- fun_l13_n479(x)
- else
- fun_l13_n823(x)
- end
-end
-
-def fun_l12_n284(x)
- if (x < 1)
- fun_l13_n201(x)
- else
- fun_l13_n526(x)
- end
-end
-
-def fun_l12_n285(x)
- if (x < 1)
- fun_l13_n890(x)
- else
- fun_l13_n237(x)
- end
-end
-
-def fun_l12_n286(x)
- if (x < 1)
- fun_l13_n377(x)
- else
- fun_l13_n249(x)
- end
-end
-
-def fun_l12_n287(x)
- if (x < 1)
- fun_l13_n147(x)
- else
- fun_l13_n306(x)
- end
-end
-
-def fun_l12_n288(x)
- if (x < 1)
- fun_l13_n822(x)
- else
- fun_l13_n220(x)
- end
-end
-
-def fun_l12_n289(x)
- if (x < 1)
- fun_l13_n106(x)
- else
- fun_l13_n648(x)
- end
-end
-
-def fun_l12_n290(x)
- if (x < 1)
- fun_l13_n278(x)
- else
- fun_l13_n255(x)
- end
-end
-
-def fun_l12_n291(x)
- if (x < 1)
- fun_l13_n994(x)
- else
- fun_l13_n36(x)
- end
-end
-
-def fun_l12_n292(x)
- if (x < 1)
- fun_l13_n731(x)
- else
- fun_l13_n473(x)
- end
-end
-
-def fun_l12_n293(x)
- if (x < 1)
- fun_l13_n321(x)
- else
- fun_l13_n518(x)
- end
-end
-
-def fun_l12_n294(x)
- if (x < 1)
- fun_l13_n91(x)
- else
- fun_l13_n765(x)
- end
-end
-
-def fun_l12_n295(x)
- if (x < 1)
- fun_l13_n39(x)
- else
- fun_l13_n639(x)
- end
-end
-
-def fun_l12_n296(x)
- if (x < 1)
- fun_l13_n800(x)
- else
- fun_l13_n821(x)
- end
-end
-
-def fun_l12_n297(x)
- if (x < 1)
- fun_l13_n553(x)
- else
- fun_l13_n898(x)
- end
-end
-
-def fun_l12_n298(x)
- if (x < 1)
- fun_l13_n487(x)
- else
- fun_l13_n470(x)
- end
-end
-
-def fun_l12_n299(x)
- if (x < 1)
- fun_l13_n743(x)
- else
- fun_l13_n684(x)
- end
-end
-
-def fun_l12_n300(x)
- if (x < 1)
- fun_l13_n177(x)
- else
- fun_l13_n375(x)
- end
-end
-
-def fun_l12_n301(x)
- if (x < 1)
- fun_l13_n714(x)
- else
- fun_l13_n922(x)
- end
-end
-
-def fun_l12_n302(x)
- if (x < 1)
- fun_l13_n845(x)
- else
- fun_l13_n93(x)
- end
-end
-
-def fun_l12_n303(x)
- if (x < 1)
- fun_l13_n806(x)
- else
- fun_l13_n706(x)
- end
-end
-
-def fun_l12_n304(x)
- if (x < 1)
- fun_l13_n428(x)
- else
- fun_l13_n942(x)
- end
-end
-
-def fun_l12_n305(x)
- if (x < 1)
- fun_l13_n170(x)
- else
- fun_l13_n634(x)
- end
-end
-
-def fun_l12_n306(x)
- if (x < 1)
- fun_l13_n998(x)
- else
- fun_l13_n224(x)
- end
-end
-
-def fun_l12_n307(x)
- if (x < 1)
- fun_l13_n15(x)
- else
- fun_l13_n753(x)
- end
-end
-
-def fun_l12_n308(x)
- if (x < 1)
- fun_l13_n323(x)
- else
- fun_l13_n846(x)
- end
-end
-
-def fun_l12_n309(x)
- if (x < 1)
- fun_l13_n779(x)
- else
- fun_l13_n330(x)
- end
-end
-
-def fun_l12_n310(x)
- if (x < 1)
- fun_l13_n652(x)
- else
- fun_l13_n560(x)
- end
-end
-
-def fun_l12_n311(x)
- if (x < 1)
- fun_l13_n54(x)
- else
- fun_l13_n144(x)
- end
-end
-
-def fun_l12_n312(x)
- if (x < 1)
- fun_l13_n674(x)
- else
- fun_l13_n779(x)
- end
-end
-
-def fun_l12_n313(x)
- if (x < 1)
- fun_l13_n975(x)
- else
- fun_l13_n109(x)
- end
-end
-
-def fun_l12_n314(x)
- if (x < 1)
- fun_l13_n997(x)
- else
- fun_l13_n827(x)
- end
-end
-
-def fun_l12_n315(x)
- if (x < 1)
- fun_l13_n822(x)
- else
- fun_l13_n349(x)
- end
-end
-
-def fun_l12_n316(x)
- if (x < 1)
- fun_l13_n516(x)
- else
- fun_l13_n974(x)
- end
-end
-
-def fun_l12_n317(x)
- if (x < 1)
- fun_l13_n538(x)
- else
- fun_l13_n786(x)
- end
-end
-
-def fun_l12_n318(x)
- if (x < 1)
- fun_l13_n125(x)
- else
- fun_l13_n809(x)
- end
-end
-
-def fun_l12_n319(x)
- if (x < 1)
- fun_l13_n642(x)
- else
- fun_l13_n188(x)
- end
-end
-
-def fun_l12_n320(x)
- if (x < 1)
- fun_l13_n904(x)
- else
- fun_l13_n396(x)
- end
-end
-
-def fun_l12_n321(x)
- if (x < 1)
- fun_l13_n278(x)
- else
- fun_l13_n752(x)
- end
-end
-
-def fun_l12_n322(x)
- if (x < 1)
- fun_l13_n566(x)
- else
- fun_l13_n894(x)
- end
-end
-
-def fun_l12_n323(x)
- if (x < 1)
- fun_l13_n357(x)
- else
- fun_l13_n742(x)
- end
-end
-
-def fun_l12_n324(x)
- if (x < 1)
- fun_l13_n667(x)
- else
- fun_l13_n764(x)
- end
-end
-
-def fun_l12_n325(x)
- if (x < 1)
- fun_l13_n333(x)
- else
- fun_l13_n445(x)
- end
-end
-
-def fun_l12_n326(x)
- if (x < 1)
- fun_l13_n669(x)
- else
- fun_l13_n484(x)
- end
-end
-
-def fun_l12_n327(x)
- if (x < 1)
- fun_l13_n662(x)
- else
- fun_l13_n610(x)
- end
-end
-
-def fun_l12_n328(x)
- if (x < 1)
- fun_l13_n869(x)
- else
- fun_l13_n993(x)
- end
-end
-
-def fun_l12_n329(x)
- if (x < 1)
- fun_l13_n305(x)
- else
- fun_l13_n45(x)
- end
-end
-
-def fun_l12_n330(x)
- if (x < 1)
- fun_l13_n32(x)
- else
- fun_l13_n253(x)
- end
-end
-
-def fun_l12_n331(x)
- if (x < 1)
- fun_l13_n45(x)
- else
- fun_l13_n327(x)
- end
-end
-
-def fun_l12_n332(x)
- if (x < 1)
- fun_l13_n685(x)
- else
- fun_l13_n562(x)
- end
-end
-
-def fun_l12_n333(x)
- if (x < 1)
- fun_l13_n274(x)
- else
- fun_l13_n461(x)
- end
-end
-
-def fun_l12_n334(x)
- if (x < 1)
- fun_l13_n93(x)
- else
- fun_l13_n7(x)
- end
-end
-
-def fun_l12_n335(x)
- if (x < 1)
- fun_l13_n742(x)
- else
- fun_l13_n259(x)
- end
-end
-
-def fun_l12_n336(x)
- if (x < 1)
- fun_l13_n518(x)
- else
- fun_l13_n108(x)
- end
-end
-
-def fun_l12_n337(x)
- if (x < 1)
- fun_l13_n439(x)
- else
- fun_l13_n21(x)
- end
-end
-
-def fun_l12_n338(x)
- if (x < 1)
- fun_l13_n34(x)
- else
- fun_l13_n869(x)
- end
-end
-
-def fun_l12_n339(x)
- if (x < 1)
- fun_l13_n995(x)
- else
- fun_l13_n810(x)
- end
-end
-
-def fun_l12_n340(x)
- if (x < 1)
- fun_l13_n640(x)
- else
- fun_l13_n108(x)
- end
-end
-
-def fun_l12_n341(x)
- if (x < 1)
- fun_l13_n332(x)
- else
- fun_l13_n174(x)
- end
-end
-
-def fun_l12_n342(x)
- if (x < 1)
- fun_l13_n425(x)
- else
- fun_l13_n523(x)
- end
-end
-
-def fun_l12_n343(x)
- if (x < 1)
- fun_l13_n886(x)
- else
- fun_l13_n9(x)
- end
-end
-
-def fun_l12_n344(x)
- if (x < 1)
- fun_l13_n644(x)
- else
- fun_l13_n558(x)
- end
-end
-
-def fun_l12_n345(x)
- if (x < 1)
- fun_l13_n40(x)
- else
- fun_l13_n569(x)
- end
-end
-
-def fun_l12_n346(x)
- if (x < 1)
- fun_l13_n530(x)
- else
- fun_l13_n52(x)
- end
-end
-
-def fun_l12_n347(x)
- if (x < 1)
- fun_l13_n624(x)
- else
- fun_l13_n525(x)
- end
-end
-
-def fun_l12_n348(x)
- if (x < 1)
- fun_l13_n106(x)
- else
- fun_l13_n101(x)
- end
-end
-
-def fun_l12_n349(x)
- if (x < 1)
- fun_l13_n164(x)
- else
- fun_l13_n675(x)
- end
-end
-
-def fun_l12_n350(x)
- if (x < 1)
- fun_l13_n349(x)
- else
- fun_l13_n125(x)
- end
-end
-
-def fun_l12_n351(x)
- if (x < 1)
- fun_l13_n536(x)
- else
- fun_l13_n949(x)
- end
-end
-
-def fun_l12_n352(x)
- if (x < 1)
- fun_l13_n872(x)
- else
- fun_l13_n678(x)
- end
-end
-
-def fun_l12_n353(x)
- if (x < 1)
- fun_l13_n566(x)
- else
- fun_l13_n576(x)
- end
-end
-
-def fun_l12_n354(x)
- if (x < 1)
- fun_l13_n978(x)
- else
- fun_l13_n539(x)
- end
-end
-
-def fun_l12_n355(x)
- if (x < 1)
- fun_l13_n929(x)
- else
- fun_l13_n301(x)
- end
-end
-
-def fun_l12_n356(x)
- if (x < 1)
- fun_l13_n768(x)
- else
- fun_l13_n292(x)
- end
-end
-
-def fun_l12_n357(x)
- if (x < 1)
- fun_l13_n873(x)
- else
- fun_l13_n201(x)
- end
-end
-
-def fun_l12_n358(x)
- if (x < 1)
- fun_l13_n852(x)
- else
- fun_l13_n144(x)
- end
-end
-
-def fun_l12_n359(x)
- if (x < 1)
- fun_l13_n220(x)
- else
- fun_l13_n318(x)
- end
-end
-
-def fun_l12_n360(x)
- if (x < 1)
- fun_l13_n339(x)
- else
- fun_l13_n896(x)
- end
-end
-
-def fun_l12_n361(x)
- if (x < 1)
- fun_l13_n896(x)
- else
- fun_l13_n611(x)
- end
-end
-
-def fun_l12_n362(x)
- if (x < 1)
- fun_l13_n237(x)
- else
- fun_l13_n781(x)
- end
-end
-
-def fun_l12_n363(x)
- if (x < 1)
- fun_l13_n994(x)
- else
- fun_l13_n306(x)
- end
-end
-
-def fun_l12_n364(x)
- if (x < 1)
- fun_l13_n437(x)
- else
- fun_l13_n634(x)
- end
-end
-
-def fun_l12_n365(x)
- if (x < 1)
- fun_l13_n367(x)
- else
- fun_l13_n798(x)
- end
-end
-
-def fun_l12_n366(x)
- if (x < 1)
- fun_l13_n831(x)
- else
- fun_l13_n352(x)
- end
-end
-
-def fun_l12_n367(x)
- if (x < 1)
- fun_l13_n554(x)
- else
- fun_l13_n999(x)
- end
-end
-
-def fun_l12_n368(x)
- if (x < 1)
- fun_l13_n214(x)
- else
- fun_l13_n67(x)
- end
-end
-
-def fun_l12_n369(x)
- if (x < 1)
- fun_l13_n628(x)
- else
- fun_l13_n637(x)
- end
-end
-
-def fun_l12_n370(x)
- if (x < 1)
- fun_l13_n42(x)
- else
- fun_l13_n631(x)
- end
-end
-
-def fun_l12_n371(x)
- if (x < 1)
- fun_l13_n53(x)
- else
- fun_l13_n226(x)
- end
-end
-
-def fun_l12_n372(x)
- if (x < 1)
- fun_l13_n810(x)
- else
- fun_l13_n853(x)
- end
-end
-
-def fun_l12_n373(x)
- if (x < 1)
- fun_l13_n257(x)
- else
- fun_l13_n480(x)
- end
-end
-
-def fun_l12_n374(x)
- if (x < 1)
- fun_l13_n715(x)
- else
- fun_l13_n481(x)
- end
-end
-
-def fun_l12_n375(x)
- if (x < 1)
- fun_l13_n499(x)
- else
- fun_l13_n694(x)
- end
-end
-
-def fun_l12_n376(x)
- if (x < 1)
- fun_l13_n376(x)
- else
- fun_l13_n99(x)
- end
-end
-
-def fun_l12_n377(x)
- if (x < 1)
- fun_l13_n672(x)
- else
- fun_l13_n421(x)
- end
-end
-
-def fun_l12_n378(x)
- if (x < 1)
- fun_l13_n320(x)
- else
- fun_l13_n590(x)
- end
-end
-
-def fun_l12_n379(x)
- if (x < 1)
- fun_l13_n678(x)
- else
- fun_l13_n727(x)
- end
-end
-
-def fun_l12_n380(x)
- if (x < 1)
- fun_l13_n269(x)
- else
- fun_l13_n74(x)
- end
-end
-
-def fun_l12_n381(x)
- if (x < 1)
- fun_l13_n838(x)
- else
- fun_l13_n105(x)
- end
-end
-
-def fun_l12_n382(x)
- if (x < 1)
- fun_l13_n482(x)
- else
- fun_l13_n400(x)
- end
-end
-
-def fun_l12_n383(x)
- if (x < 1)
- fun_l13_n376(x)
- else
- fun_l13_n829(x)
- end
-end
-
-def fun_l12_n384(x)
- if (x < 1)
- fun_l13_n81(x)
- else
- fun_l13_n895(x)
- end
-end
-
-def fun_l12_n385(x)
- if (x < 1)
- fun_l13_n718(x)
- else
- fun_l13_n641(x)
- end
-end
-
-def fun_l12_n386(x)
- if (x < 1)
- fun_l13_n825(x)
- else
- fun_l13_n761(x)
- end
-end
-
-def fun_l12_n387(x)
- if (x < 1)
- fun_l13_n930(x)
- else
- fun_l13_n204(x)
- end
-end
-
-def fun_l12_n388(x)
- if (x < 1)
- fun_l13_n81(x)
- else
- fun_l13_n319(x)
- end
-end
-
-def fun_l12_n389(x)
- if (x < 1)
- fun_l13_n40(x)
- else
- fun_l13_n57(x)
- end
-end
-
-def fun_l12_n390(x)
- if (x < 1)
- fun_l13_n206(x)
- else
- fun_l13_n219(x)
- end
-end
-
-def fun_l12_n391(x)
- if (x < 1)
- fun_l13_n538(x)
- else
- fun_l13_n239(x)
- end
-end
-
-def fun_l12_n392(x)
- if (x < 1)
- fun_l13_n326(x)
- else
- fun_l13_n613(x)
- end
-end
-
-def fun_l12_n393(x)
- if (x < 1)
- fun_l13_n860(x)
- else
- fun_l13_n712(x)
- end
-end
-
-def fun_l12_n394(x)
- if (x < 1)
- fun_l13_n829(x)
- else
- fun_l13_n153(x)
- end
-end
-
-def fun_l12_n395(x)
- if (x < 1)
- fun_l13_n734(x)
- else
- fun_l13_n926(x)
- end
-end
-
-def fun_l12_n396(x)
- if (x < 1)
- fun_l13_n188(x)
- else
- fun_l13_n821(x)
- end
-end
-
-def fun_l12_n397(x)
- if (x < 1)
- fun_l13_n161(x)
- else
- fun_l13_n284(x)
- end
-end
-
-def fun_l12_n398(x)
- if (x < 1)
- fun_l13_n402(x)
- else
- fun_l13_n481(x)
- end
-end
-
-def fun_l12_n399(x)
- if (x < 1)
- fun_l13_n469(x)
- else
- fun_l13_n348(x)
- end
-end
-
-def fun_l12_n400(x)
- if (x < 1)
- fun_l13_n567(x)
- else
- fun_l13_n702(x)
- end
-end
-
-def fun_l12_n401(x)
- if (x < 1)
- fun_l13_n787(x)
- else
- fun_l13_n5(x)
- end
-end
-
-def fun_l12_n402(x)
- if (x < 1)
- fun_l13_n525(x)
- else
- fun_l13_n983(x)
- end
-end
-
-def fun_l12_n403(x)
- if (x < 1)
- fun_l13_n185(x)
- else
- fun_l13_n315(x)
- end
-end
-
-def fun_l12_n404(x)
- if (x < 1)
- fun_l13_n746(x)
- else
- fun_l13_n892(x)
- end
-end
-
-def fun_l12_n405(x)
- if (x < 1)
- fun_l13_n990(x)
- else
- fun_l13_n868(x)
- end
-end
-
-def fun_l12_n406(x)
- if (x < 1)
- fun_l13_n399(x)
- else
- fun_l13_n298(x)
- end
-end
-
-def fun_l12_n407(x)
- if (x < 1)
- fun_l13_n283(x)
- else
- fun_l13_n87(x)
- end
-end
-
-def fun_l12_n408(x)
- if (x < 1)
- fun_l13_n597(x)
- else
- fun_l13_n355(x)
- end
-end
-
-def fun_l12_n409(x)
- if (x < 1)
- fun_l13_n517(x)
- else
- fun_l13_n700(x)
- end
-end
-
-def fun_l12_n410(x)
- if (x < 1)
- fun_l13_n796(x)
- else
- fun_l13_n282(x)
- end
-end
-
-def fun_l12_n411(x)
- if (x < 1)
- fun_l13_n876(x)
- else
- fun_l13_n562(x)
- end
-end
-
-def fun_l12_n412(x)
- if (x < 1)
- fun_l13_n344(x)
- else
- fun_l13_n182(x)
- end
-end
-
-def fun_l12_n413(x)
- if (x < 1)
- fun_l13_n879(x)
- else
- fun_l13_n443(x)
- end
-end
-
-def fun_l12_n414(x)
- if (x < 1)
- fun_l13_n335(x)
- else
- fun_l13_n451(x)
- end
-end
-
-def fun_l12_n415(x)
- if (x < 1)
- fun_l13_n112(x)
- else
- fun_l13_n391(x)
- end
-end
-
-def fun_l12_n416(x)
- if (x < 1)
- fun_l13_n217(x)
- else
- fun_l13_n221(x)
- end
-end
-
-def fun_l12_n417(x)
- if (x < 1)
- fun_l13_n113(x)
- else
- fun_l13_n563(x)
- end
-end
-
-def fun_l12_n418(x)
- if (x < 1)
- fun_l13_n486(x)
- else
- fun_l13_n374(x)
- end
-end
-
-def fun_l12_n419(x)
- if (x < 1)
- fun_l13_n970(x)
- else
- fun_l13_n393(x)
- end
-end
-
-def fun_l12_n420(x)
- if (x < 1)
- fun_l13_n273(x)
- else
- fun_l13_n64(x)
- end
-end
-
-def fun_l12_n421(x)
- if (x < 1)
- fun_l13_n69(x)
- else
- fun_l13_n158(x)
- end
-end
-
-def fun_l12_n422(x)
- if (x < 1)
- fun_l13_n308(x)
- else
- fun_l13_n609(x)
- end
-end
-
-def fun_l12_n423(x)
- if (x < 1)
- fun_l13_n964(x)
- else
- fun_l13_n36(x)
- end
-end
-
-def fun_l12_n424(x)
- if (x < 1)
- fun_l13_n783(x)
- else
- fun_l13_n513(x)
- end
-end
-
-def fun_l12_n425(x)
- if (x < 1)
- fun_l13_n792(x)
- else
- fun_l13_n960(x)
- end
-end
-
-def fun_l12_n426(x)
- if (x < 1)
- fun_l13_n160(x)
- else
- fun_l13_n911(x)
- end
-end
-
-def fun_l12_n427(x)
- if (x < 1)
- fun_l13_n374(x)
- else
- fun_l13_n672(x)
- end
-end
-
-def fun_l12_n428(x)
- if (x < 1)
- fun_l13_n694(x)
- else
- fun_l13_n166(x)
- end
-end
-
-def fun_l12_n429(x)
- if (x < 1)
- fun_l13_n807(x)
- else
- fun_l13_n929(x)
- end
-end
-
-def fun_l12_n430(x)
- if (x < 1)
- fun_l13_n997(x)
- else
- fun_l13_n938(x)
- end
-end
-
-def fun_l12_n431(x)
- if (x < 1)
- fun_l13_n934(x)
- else
- fun_l13_n365(x)
- end
-end
-
-def fun_l12_n432(x)
- if (x < 1)
- fun_l13_n546(x)
- else
- fun_l13_n272(x)
- end
-end
-
-def fun_l12_n433(x)
- if (x < 1)
- fun_l13_n176(x)
- else
- fun_l13_n629(x)
- end
-end
-
-def fun_l12_n434(x)
- if (x < 1)
- fun_l13_n536(x)
- else
- fun_l13_n165(x)
- end
-end
-
-def fun_l12_n435(x)
- if (x < 1)
- fun_l13_n915(x)
- else
- fun_l13_n823(x)
- end
-end
-
-def fun_l12_n436(x)
- if (x < 1)
- fun_l13_n580(x)
- else
- fun_l13_n214(x)
- end
-end
-
-def fun_l12_n437(x)
- if (x < 1)
- fun_l13_n353(x)
- else
- fun_l13_n626(x)
- end
-end
-
-def fun_l12_n438(x)
- if (x < 1)
- fun_l13_n888(x)
- else
- fun_l13_n874(x)
- end
-end
-
-def fun_l12_n439(x)
- if (x < 1)
- fun_l13_n670(x)
- else
- fun_l13_n279(x)
- end
-end
-
-def fun_l12_n440(x)
- if (x < 1)
- fun_l13_n818(x)
- else
- fun_l13_n927(x)
- end
-end
-
-def fun_l12_n441(x)
- if (x < 1)
- fun_l13_n686(x)
- else
- fun_l13_n32(x)
- end
-end
-
-def fun_l12_n442(x)
- if (x < 1)
- fun_l13_n882(x)
- else
- fun_l13_n932(x)
- end
-end
-
-def fun_l12_n443(x)
- if (x < 1)
- fun_l13_n677(x)
- else
- fun_l13_n267(x)
- end
-end
-
-def fun_l12_n444(x)
- if (x < 1)
- fun_l13_n632(x)
- else
- fun_l13_n808(x)
- end
-end
-
-def fun_l12_n445(x)
- if (x < 1)
- fun_l13_n159(x)
- else
- fun_l13_n251(x)
- end
-end
-
-def fun_l12_n446(x)
- if (x < 1)
- fun_l13_n939(x)
- else
- fun_l13_n231(x)
- end
-end
-
-def fun_l12_n447(x)
- if (x < 1)
- fun_l13_n971(x)
- else
- fun_l13_n103(x)
- end
-end
-
-def fun_l12_n448(x)
- if (x < 1)
- fun_l13_n556(x)
- else
- fun_l13_n356(x)
- end
-end
-
-def fun_l12_n449(x)
- if (x < 1)
- fun_l13_n999(x)
- else
- fun_l13_n722(x)
- end
-end
-
-def fun_l12_n450(x)
- if (x < 1)
- fun_l13_n387(x)
- else
- fun_l13_n15(x)
- end
-end
-
-def fun_l12_n451(x)
- if (x < 1)
- fun_l13_n736(x)
- else
- fun_l13_n869(x)
- end
-end
-
-def fun_l12_n452(x)
- if (x < 1)
- fun_l13_n984(x)
- else
- fun_l13_n396(x)
- end
-end
-
-def fun_l12_n453(x)
- if (x < 1)
- fun_l13_n375(x)
- else
- fun_l13_n275(x)
- end
-end
-
-def fun_l12_n454(x)
- if (x < 1)
- fun_l13_n100(x)
- else
- fun_l13_n956(x)
- end
-end
-
-def fun_l12_n455(x)
- if (x < 1)
- fun_l13_n575(x)
- else
- fun_l13_n22(x)
- end
-end
-
-def fun_l12_n456(x)
- if (x < 1)
- fun_l13_n515(x)
- else
- fun_l13_n716(x)
- end
-end
-
-def fun_l12_n457(x)
- if (x < 1)
- fun_l13_n953(x)
- else
- fun_l13_n823(x)
- end
-end
-
-def fun_l12_n458(x)
- if (x < 1)
- fun_l13_n343(x)
- else
- fun_l13_n843(x)
- end
-end
-
-def fun_l12_n459(x)
- if (x < 1)
- fun_l13_n209(x)
- else
- fun_l13_n464(x)
- end
-end
-
-def fun_l12_n460(x)
- if (x < 1)
- fun_l13_n281(x)
- else
- fun_l13_n165(x)
- end
-end
-
-def fun_l12_n461(x)
- if (x < 1)
- fun_l13_n416(x)
- else
- fun_l13_n896(x)
- end
-end
-
-def fun_l12_n462(x)
- if (x < 1)
- fun_l13_n677(x)
- else
- fun_l13_n767(x)
- end
-end
-
-def fun_l12_n463(x)
- if (x < 1)
- fun_l13_n271(x)
- else
- fun_l13_n515(x)
- end
-end
-
-def fun_l12_n464(x)
- if (x < 1)
- fun_l13_n589(x)
- else
- fun_l13_n447(x)
- end
-end
-
-def fun_l12_n465(x)
- if (x < 1)
- fun_l13_n316(x)
- else
- fun_l13_n309(x)
- end
-end
-
-def fun_l12_n466(x)
- if (x < 1)
- fun_l13_n48(x)
- else
- fun_l13_n999(x)
- end
-end
-
-def fun_l12_n467(x)
- if (x < 1)
- fun_l13_n334(x)
- else
- fun_l13_n138(x)
- end
-end
-
-def fun_l12_n468(x)
- if (x < 1)
- fun_l13_n483(x)
- else
- fun_l13_n353(x)
- end
-end
-
-def fun_l12_n469(x)
- if (x < 1)
- fun_l13_n893(x)
- else
- fun_l13_n114(x)
- end
-end
-
-def fun_l12_n470(x)
- if (x < 1)
- fun_l13_n945(x)
- else
- fun_l13_n438(x)
- end
-end
-
-def fun_l12_n471(x)
- if (x < 1)
- fun_l13_n546(x)
- else
- fun_l13_n181(x)
- end
-end
-
-def fun_l12_n472(x)
- if (x < 1)
- fun_l13_n443(x)
- else
- fun_l13_n35(x)
- end
-end
-
-def fun_l12_n473(x)
- if (x < 1)
- fun_l13_n611(x)
- else
- fun_l13_n106(x)
- end
-end
-
-def fun_l12_n474(x)
- if (x < 1)
- fun_l13_n408(x)
- else
- fun_l13_n162(x)
- end
-end
-
-def fun_l12_n475(x)
- if (x < 1)
- fun_l13_n104(x)
- else
- fun_l13_n173(x)
- end
-end
-
-def fun_l12_n476(x)
- if (x < 1)
- fun_l13_n922(x)
- else
- fun_l13_n593(x)
- end
-end
-
-def fun_l12_n477(x)
- if (x < 1)
- fun_l13_n650(x)
- else
- fun_l13_n659(x)
- end
-end
-
-def fun_l12_n478(x)
- if (x < 1)
- fun_l13_n746(x)
- else
- fun_l13_n484(x)
- end
-end
-
-def fun_l12_n479(x)
- if (x < 1)
- fun_l13_n366(x)
- else
- fun_l13_n318(x)
- end
-end
-
-def fun_l12_n480(x)
- if (x < 1)
- fun_l13_n995(x)
- else
- fun_l13_n108(x)
- end
-end
-
-def fun_l12_n481(x)
- if (x < 1)
- fun_l13_n61(x)
- else
- fun_l13_n426(x)
- end
-end
-
-def fun_l12_n482(x)
- if (x < 1)
- fun_l13_n578(x)
- else
- fun_l13_n955(x)
- end
-end
-
-def fun_l12_n483(x)
- if (x < 1)
- fun_l13_n650(x)
- else
- fun_l13_n588(x)
- end
-end
-
-def fun_l12_n484(x)
- if (x < 1)
- fun_l13_n842(x)
- else
- fun_l13_n198(x)
- end
-end
-
-def fun_l12_n485(x)
- if (x < 1)
- fun_l13_n439(x)
- else
- fun_l13_n372(x)
- end
-end
-
-def fun_l12_n486(x)
- if (x < 1)
- fun_l13_n94(x)
- else
- fun_l13_n531(x)
- end
-end
-
-def fun_l12_n487(x)
- if (x < 1)
- fun_l13_n743(x)
- else
- fun_l13_n955(x)
- end
-end
-
-def fun_l12_n488(x)
- if (x < 1)
- fun_l13_n648(x)
- else
- fun_l13_n849(x)
- end
-end
-
-def fun_l12_n489(x)
- if (x < 1)
- fun_l13_n371(x)
- else
- fun_l13_n972(x)
- end
-end
-
-def fun_l12_n490(x)
- if (x < 1)
- fun_l13_n128(x)
- else
- fun_l13_n617(x)
- end
-end
-
-def fun_l12_n491(x)
- if (x < 1)
- fun_l13_n22(x)
- else
- fun_l13_n201(x)
- end
-end
-
-def fun_l12_n492(x)
- if (x < 1)
- fun_l13_n209(x)
- else
- fun_l13_n679(x)
- end
-end
-
-def fun_l12_n493(x)
- if (x < 1)
- fun_l13_n415(x)
- else
- fun_l13_n765(x)
- end
-end
-
-def fun_l12_n494(x)
- if (x < 1)
- fun_l13_n498(x)
- else
- fun_l13_n719(x)
- end
-end
-
-def fun_l12_n495(x)
- if (x < 1)
- fun_l13_n492(x)
- else
- fun_l13_n161(x)
- end
-end
-
-def fun_l12_n496(x)
- if (x < 1)
- fun_l13_n162(x)
- else
- fun_l13_n54(x)
- end
-end
-
-def fun_l12_n497(x)
- if (x < 1)
- fun_l13_n743(x)
- else
- fun_l13_n834(x)
- end
-end
-
-def fun_l12_n498(x)
- if (x < 1)
- fun_l13_n376(x)
- else
- fun_l13_n676(x)
- end
-end
-
-def fun_l12_n499(x)
- if (x < 1)
- fun_l13_n626(x)
- else
- fun_l13_n357(x)
- end
-end
-
-def fun_l12_n500(x)
- if (x < 1)
- fun_l13_n874(x)
- else
- fun_l13_n53(x)
- end
-end
-
-def fun_l12_n501(x)
- if (x < 1)
- fun_l13_n146(x)
- else
- fun_l13_n732(x)
- end
-end
-
-def fun_l12_n502(x)
- if (x < 1)
- fun_l13_n908(x)
- else
- fun_l13_n933(x)
- end
-end
-
-def fun_l12_n503(x)
- if (x < 1)
- fun_l13_n758(x)
- else
- fun_l13_n289(x)
- end
-end
-
-def fun_l12_n504(x)
- if (x < 1)
- fun_l13_n913(x)
- else
- fun_l13_n770(x)
- end
-end
-
-def fun_l12_n505(x)
- if (x < 1)
- fun_l13_n305(x)
- else
- fun_l13_n990(x)
- end
-end
-
-def fun_l12_n506(x)
- if (x < 1)
- fun_l13_n79(x)
- else
- fun_l13_n199(x)
- end
-end
-
-def fun_l12_n507(x)
- if (x < 1)
- fun_l13_n430(x)
- else
- fun_l13_n394(x)
- end
-end
-
-def fun_l12_n508(x)
- if (x < 1)
- fun_l13_n835(x)
- else
- fun_l13_n64(x)
- end
-end
-
-def fun_l12_n509(x)
- if (x < 1)
- fun_l13_n661(x)
- else
- fun_l13_n301(x)
- end
-end
-
-def fun_l12_n510(x)
- if (x < 1)
- fun_l13_n672(x)
- else
- fun_l13_n498(x)
- end
-end
-
-def fun_l12_n511(x)
- if (x < 1)
- fun_l13_n540(x)
- else
- fun_l13_n57(x)
- end
-end
-
-def fun_l12_n512(x)
- if (x < 1)
- fun_l13_n634(x)
- else
- fun_l13_n790(x)
- end
-end
-
-def fun_l12_n513(x)
- if (x < 1)
- fun_l13_n998(x)
- else
- fun_l13_n3(x)
- end
-end
-
-def fun_l12_n514(x)
- if (x < 1)
- fun_l13_n482(x)
- else
- fun_l13_n116(x)
- end
-end
-
-def fun_l12_n515(x)
- if (x < 1)
- fun_l13_n967(x)
- else
- fun_l13_n17(x)
- end
-end
-
-def fun_l12_n516(x)
- if (x < 1)
- fun_l13_n614(x)
- else
- fun_l13_n260(x)
- end
-end
-
-def fun_l12_n517(x)
- if (x < 1)
- fun_l13_n273(x)
- else
- fun_l13_n982(x)
- end
-end
-
-def fun_l12_n518(x)
- if (x < 1)
- fun_l13_n786(x)
- else
- fun_l13_n186(x)
- end
-end
-
-def fun_l12_n519(x)
- if (x < 1)
- fun_l13_n990(x)
- else
- fun_l13_n223(x)
- end
-end
-
-def fun_l12_n520(x)
- if (x < 1)
- fun_l13_n406(x)
- else
- fun_l13_n374(x)
- end
-end
-
-def fun_l12_n521(x)
- if (x < 1)
- fun_l13_n548(x)
- else
- fun_l13_n160(x)
- end
-end
-
-def fun_l12_n522(x)
- if (x < 1)
- fun_l13_n249(x)
- else
- fun_l13_n295(x)
- end
-end
-
-def fun_l12_n523(x)
- if (x < 1)
- fun_l13_n434(x)
- else
- fun_l13_n73(x)
- end
-end
-
-def fun_l12_n524(x)
- if (x < 1)
- fun_l13_n550(x)
- else
- fun_l13_n472(x)
- end
-end
-
-def fun_l12_n525(x)
- if (x < 1)
- fun_l13_n720(x)
- else
- fun_l13_n979(x)
- end
-end
-
-def fun_l12_n526(x)
- if (x < 1)
- fun_l13_n806(x)
- else
- fun_l13_n156(x)
- end
-end
-
-def fun_l12_n527(x)
- if (x < 1)
- fun_l13_n689(x)
- else
- fun_l13_n781(x)
- end
-end
-
-def fun_l12_n528(x)
- if (x < 1)
- fun_l13_n130(x)
- else
- fun_l13_n909(x)
- end
-end
-
-def fun_l12_n529(x)
- if (x < 1)
- fun_l13_n762(x)
- else
- fun_l13_n301(x)
- end
-end
-
-def fun_l12_n530(x)
- if (x < 1)
- fun_l13_n580(x)
- else
- fun_l13_n269(x)
- end
-end
-
-def fun_l12_n531(x)
- if (x < 1)
- fun_l13_n427(x)
- else
- fun_l13_n279(x)
- end
-end
-
-def fun_l12_n532(x)
- if (x < 1)
- fun_l13_n408(x)
- else
- fun_l13_n523(x)
- end
-end
-
-def fun_l12_n533(x)
- if (x < 1)
- fun_l13_n358(x)
- else
- fun_l13_n386(x)
- end
-end
-
-def fun_l12_n534(x)
- if (x < 1)
- fun_l13_n401(x)
- else
- fun_l13_n148(x)
- end
-end
-
-def fun_l12_n535(x)
- if (x < 1)
- fun_l13_n588(x)
- else
- fun_l13_n607(x)
- end
-end
-
-def fun_l12_n536(x)
- if (x < 1)
- fun_l13_n445(x)
- else
- fun_l13_n681(x)
- end
-end
-
-def fun_l12_n537(x)
- if (x < 1)
- fun_l13_n16(x)
- else
- fun_l13_n931(x)
- end
-end
-
-def fun_l12_n538(x)
- if (x < 1)
- fun_l13_n567(x)
- else
- fun_l13_n9(x)
- end
-end
-
-def fun_l12_n539(x)
- if (x < 1)
- fun_l13_n584(x)
- else
- fun_l13_n46(x)
- end
-end
-
-def fun_l12_n540(x)
- if (x < 1)
- fun_l13_n147(x)
- else
- fun_l13_n498(x)
- end
-end
-
-def fun_l12_n541(x)
- if (x < 1)
- fun_l13_n727(x)
- else
- fun_l13_n152(x)
- end
-end
-
-def fun_l12_n542(x)
- if (x < 1)
- fun_l13_n797(x)
- else
- fun_l13_n789(x)
- end
-end
-
-def fun_l12_n543(x)
- if (x < 1)
- fun_l13_n711(x)
- else
- fun_l13_n939(x)
- end
-end
-
-def fun_l12_n544(x)
- if (x < 1)
- fun_l13_n276(x)
- else
- fun_l13_n325(x)
- end
-end
-
-def fun_l12_n545(x)
- if (x < 1)
- fun_l13_n800(x)
- else
- fun_l13_n974(x)
- end
-end
-
-def fun_l12_n546(x)
- if (x < 1)
- fun_l13_n654(x)
- else
- fun_l13_n331(x)
- end
-end
-
-def fun_l12_n547(x)
- if (x < 1)
- fun_l13_n179(x)
- else
- fun_l13_n395(x)
- end
-end
-
-def fun_l12_n548(x)
- if (x < 1)
- fun_l13_n348(x)
- else
- fun_l13_n210(x)
- end
-end
-
-def fun_l12_n549(x)
- if (x < 1)
- fun_l13_n669(x)
- else
- fun_l13_n459(x)
- end
-end
-
-def fun_l12_n550(x)
- if (x < 1)
- fun_l13_n316(x)
- else
- fun_l13_n846(x)
- end
-end
-
-def fun_l12_n551(x)
- if (x < 1)
- fun_l13_n262(x)
- else
- fun_l13_n430(x)
- end
-end
-
-def fun_l12_n552(x)
- if (x < 1)
- fun_l13_n224(x)
- else
- fun_l13_n866(x)
- end
-end
-
-def fun_l12_n553(x)
- if (x < 1)
- fun_l13_n551(x)
- else
- fun_l13_n30(x)
- end
-end
-
-def fun_l12_n554(x)
- if (x < 1)
- fun_l13_n864(x)
- else
- fun_l13_n931(x)
- end
-end
-
-def fun_l12_n555(x)
- if (x < 1)
- fun_l13_n427(x)
- else
- fun_l13_n138(x)
- end
-end
-
-def fun_l12_n556(x)
- if (x < 1)
- fun_l13_n603(x)
- else
- fun_l13_n167(x)
- end
-end
-
-def fun_l12_n557(x)
- if (x < 1)
- fun_l13_n858(x)
- else
- fun_l13_n123(x)
- end
-end
-
-def fun_l12_n558(x)
- if (x < 1)
- fun_l13_n729(x)
- else
- fun_l13_n769(x)
- end
-end
-
-def fun_l12_n559(x)
- if (x < 1)
- fun_l13_n529(x)
- else
- fun_l13_n114(x)
- end
-end
-
-def fun_l12_n560(x)
- if (x < 1)
- fun_l13_n727(x)
- else
- fun_l13_n673(x)
- end
-end
-
-def fun_l12_n561(x)
- if (x < 1)
- fun_l13_n742(x)
- else
- fun_l13_n981(x)
- end
-end
-
-def fun_l12_n562(x)
- if (x < 1)
- fun_l13_n29(x)
- else
- fun_l13_n493(x)
- end
-end
-
-def fun_l12_n563(x)
- if (x < 1)
- fun_l13_n207(x)
- else
- fun_l13_n361(x)
- end
-end
-
-def fun_l12_n564(x)
- if (x < 1)
- fun_l13_n370(x)
- else
- fun_l13_n185(x)
- end
-end
-
-def fun_l12_n565(x)
- if (x < 1)
- fun_l13_n755(x)
- else
- fun_l13_n28(x)
- end
-end
-
-def fun_l12_n566(x)
- if (x < 1)
- fun_l13_n332(x)
- else
- fun_l13_n718(x)
- end
-end
-
-def fun_l12_n567(x)
- if (x < 1)
- fun_l13_n329(x)
- else
- fun_l13_n623(x)
- end
-end
-
-def fun_l12_n568(x)
- if (x < 1)
- fun_l13_n592(x)
- else
- fun_l13_n870(x)
- end
-end
-
-def fun_l12_n569(x)
- if (x < 1)
- fun_l13_n539(x)
- else
- fun_l13_n68(x)
- end
-end
-
-def fun_l12_n570(x)
- if (x < 1)
- fun_l13_n794(x)
- else
- fun_l13_n617(x)
- end
-end
-
-def fun_l12_n571(x)
- if (x < 1)
- fun_l13_n801(x)
- else
- fun_l13_n610(x)
- end
-end
-
-def fun_l12_n572(x)
- if (x < 1)
- fun_l13_n781(x)
- else
- fun_l13_n879(x)
- end
-end
-
-def fun_l12_n573(x)
- if (x < 1)
- fun_l13_n519(x)
- else
- fun_l13_n748(x)
- end
-end
-
-def fun_l12_n574(x)
- if (x < 1)
- fun_l13_n416(x)
- else
- fun_l13_n908(x)
- end
-end
-
-def fun_l12_n575(x)
- if (x < 1)
- fun_l13_n288(x)
- else
- fun_l13_n925(x)
- end
-end
-
-def fun_l12_n576(x)
- if (x < 1)
- fun_l13_n398(x)
- else
- fun_l13_n185(x)
- end
-end
-
-def fun_l12_n577(x)
- if (x < 1)
- fun_l13_n742(x)
- else
- fun_l13_n768(x)
- end
-end
-
-def fun_l12_n578(x)
- if (x < 1)
- fun_l13_n472(x)
- else
- fun_l13_n474(x)
- end
-end
-
-def fun_l12_n579(x)
- if (x < 1)
- fun_l13_n229(x)
- else
- fun_l13_n479(x)
- end
-end
-
-def fun_l12_n580(x)
- if (x < 1)
- fun_l13_n483(x)
- else
- fun_l13_n60(x)
- end
-end
-
-def fun_l12_n581(x)
- if (x < 1)
- fun_l13_n971(x)
- else
- fun_l13_n958(x)
- end
-end
-
-def fun_l12_n582(x)
- if (x < 1)
- fun_l13_n612(x)
- else
- fun_l13_n491(x)
- end
-end
-
-def fun_l12_n583(x)
- if (x < 1)
- fun_l13_n320(x)
- else
- fun_l13_n356(x)
- end
-end
-
-def fun_l12_n584(x)
- if (x < 1)
- fun_l13_n521(x)
- else
- fun_l13_n126(x)
- end
-end
-
-def fun_l12_n585(x)
- if (x < 1)
- fun_l13_n778(x)
- else
- fun_l13_n503(x)
- end
-end
-
-def fun_l12_n586(x)
- if (x < 1)
- fun_l13_n715(x)
- else
- fun_l13_n849(x)
- end
-end
-
-def fun_l12_n587(x)
- if (x < 1)
- fun_l13_n192(x)
- else
- fun_l13_n278(x)
- end
-end
-
-def fun_l12_n588(x)
- if (x < 1)
- fun_l13_n882(x)
- else
- fun_l13_n992(x)
- end
-end
-
-def fun_l12_n589(x)
- if (x < 1)
- fun_l13_n693(x)
- else
- fun_l13_n734(x)
- end
-end
-
-def fun_l12_n590(x)
- if (x < 1)
- fun_l13_n207(x)
- else
- fun_l13_n674(x)
- end
-end
-
-def fun_l12_n591(x)
- if (x < 1)
- fun_l13_n409(x)
- else
- fun_l13_n937(x)
- end
-end
-
-def fun_l12_n592(x)
- if (x < 1)
- fun_l13_n424(x)
- else
- fun_l13_n709(x)
- end
-end
-
-def fun_l12_n593(x)
- if (x < 1)
- fun_l13_n530(x)
- else
- fun_l13_n50(x)
- end
-end
-
-def fun_l12_n594(x)
- if (x < 1)
- fun_l13_n451(x)
- else
- fun_l13_n513(x)
- end
-end
-
-def fun_l12_n595(x)
- if (x < 1)
- fun_l13_n522(x)
- else
- fun_l13_n414(x)
- end
-end
-
-def fun_l12_n596(x)
- if (x < 1)
- fun_l13_n352(x)
- else
- fun_l13_n323(x)
- end
-end
-
-def fun_l12_n597(x)
- if (x < 1)
- fun_l13_n342(x)
- else
- fun_l13_n362(x)
- end
-end
-
-def fun_l12_n598(x)
- if (x < 1)
- fun_l13_n870(x)
- else
- fun_l13_n366(x)
- end
-end
-
-def fun_l12_n599(x)
- if (x < 1)
- fun_l13_n562(x)
- else
- fun_l13_n455(x)
- end
-end
-
-def fun_l12_n600(x)
- if (x < 1)
- fun_l13_n554(x)
- else
- fun_l13_n929(x)
- end
-end
-
-def fun_l12_n601(x)
- if (x < 1)
- fun_l13_n498(x)
- else
- fun_l13_n287(x)
- end
-end
-
-def fun_l12_n602(x)
- if (x < 1)
- fun_l13_n9(x)
- else
- fun_l13_n258(x)
- end
-end
-
-def fun_l12_n603(x)
- if (x < 1)
- fun_l13_n976(x)
- else
- fun_l13_n604(x)
- end
-end
-
-def fun_l12_n604(x)
- if (x < 1)
- fun_l13_n411(x)
- else
- fun_l13_n238(x)
- end
-end
-
-def fun_l12_n605(x)
- if (x < 1)
- fun_l13_n80(x)
- else
- fun_l13_n665(x)
- end
-end
-
-def fun_l12_n606(x)
- if (x < 1)
- fun_l13_n453(x)
- else
- fun_l13_n642(x)
- end
-end
-
-def fun_l12_n607(x)
- if (x < 1)
- fun_l13_n247(x)
- else
- fun_l13_n651(x)
- end
-end
-
-def fun_l12_n608(x)
- if (x < 1)
- fun_l13_n586(x)
- else
- fun_l13_n372(x)
- end
-end
-
-def fun_l12_n609(x)
- if (x < 1)
- fun_l13_n623(x)
- else
- fun_l13_n380(x)
- end
-end
-
-def fun_l12_n610(x)
- if (x < 1)
- fun_l13_n399(x)
- else
- fun_l13_n43(x)
- end
-end
-
-def fun_l12_n611(x)
- if (x < 1)
- fun_l13_n191(x)
- else
- fun_l13_n211(x)
- end
-end
-
-def fun_l12_n612(x)
- if (x < 1)
- fun_l13_n719(x)
- else
- fun_l13_n663(x)
- end
-end
-
-def fun_l12_n613(x)
- if (x < 1)
- fun_l13_n849(x)
- else
- fun_l13_n39(x)
- end
-end
-
-def fun_l12_n614(x)
- if (x < 1)
- fun_l13_n822(x)
- else
- fun_l13_n927(x)
- end
-end
-
-def fun_l12_n615(x)
- if (x < 1)
- fun_l13_n358(x)
- else
- fun_l13_n364(x)
- end
-end
-
-def fun_l12_n616(x)
- if (x < 1)
- fun_l13_n685(x)
- else
- fun_l13_n897(x)
- end
-end
-
-def fun_l12_n617(x)
- if (x < 1)
- fun_l13_n243(x)
- else
- fun_l13_n138(x)
- end
-end
-
-def fun_l12_n618(x)
- if (x < 1)
- fun_l13_n737(x)
- else
- fun_l13_n187(x)
- end
-end
-
-def fun_l12_n619(x)
- if (x < 1)
- fun_l13_n56(x)
- else
- fun_l13_n684(x)
- end
-end
-
-def fun_l12_n620(x)
- if (x < 1)
- fun_l13_n865(x)
- else
- fun_l13_n886(x)
- end
-end
-
-def fun_l12_n621(x)
- if (x < 1)
- fun_l13_n749(x)
- else
- fun_l13_n554(x)
- end
-end
-
-def fun_l12_n622(x)
- if (x < 1)
- fun_l13_n162(x)
- else
- fun_l13_n600(x)
- end
-end
-
-def fun_l12_n623(x)
- if (x < 1)
- fun_l13_n763(x)
- else
- fun_l13_n227(x)
- end
-end
-
-def fun_l12_n624(x)
- if (x < 1)
- fun_l13_n767(x)
- else
- fun_l13_n431(x)
- end
-end
-
-def fun_l12_n625(x)
- if (x < 1)
- fun_l13_n347(x)
- else
- fun_l13_n214(x)
- end
-end
-
-def fun_l12_n626(x)
- if (x < 1)
- fun_l13_n365(x)
- else
- fun_l13_n747(x)
- end
-end
-
-def fun_l12_n627(x)
- if (x < 1)
- fun_l13_n783(x)
- else
- fun_l13_n597(x)
- end
-end
-
-def fun_l12_n628(x)
- if (x < 1)
- fun_l13_n249(x)
- else
- fun_l13_n906(x)
- end
-end
-
-def fun_l12_n629(x)
- if (x < 1)
- fun_l13_n803(x)
- else
- fun_l13_n855(x)
- end
-end
-
-def fun_l12_n630(x)
- if (x < 1)
- fun_l13_n981(x)
- else
- fun_l13_n38(x)
- end
-end
-
-def fun_l12_n631(x)
- if (x < 1)
- fun_l13_n437(x)
- else
- fun_l13_n158(x)
- end
-end
-
-def fun_l12_n632(x)
- if (x < 1)
- fun_l13_n611(x)
- else
- fun_l13_n142(x)
- end
-end
-
-def fun_l12_n633(x)
- if (x < 1)
- fun_l13_n880(x)
- else
- fun_l13_n172(x)
- end
-end
-
-def fun_l12_n634(x)
- if (x < 1)
- fun_l13_n135(x)
- else
- fun_l13_n529(x)
- end
-end
-
-def fun_l12_n635(x)
- if (x < 1)
- fun_l13_n694(x)
- else
- fun_l13_n949(x)
- end
-end
-
-def fun_l12_n636(x)
- if (x < 1)
- fun_l13_n153(x)
- else
- fun_l13_n326(x)
- end
-end
-
-def fun_l12_n637(x)
- if (x < 1)
- fun_l13_n318(x)
- else
- fun_l13_n372(x)
- end
-end
-
-def fun_l12_n638(x)
- if (x < 1)
- fun_l13_n467(x)
- else
- fun_l13_n450(x)
- end
-end
-
-def fun_l12_n639(x)
- if (x < 1)
- fun_l13_n397(x)
- else
- fun_l13_n138(x)
- end
-end
-
-def fun_l12_n640(x)
- if (x < 1)
- fun_l13_n408(x)
- else
- fun_l13_n335(x)
- end
-end
-
-def fun_l12_n641(x)
- if (x < 1)
- fun_l13_n342(x)
- else
- fun_l13_n856(x)
- end
-end
-
-def fun_l12_n642(x)
- if (x < 1)
- fun_l13_n163(x)
- else
- fun_l13_n979(x)
- end
-end
-
-def fun_l12_n643(x)
- if (x < 1)
- fun_l13_n509(x)
- else
- fun_l13_n153(x)
- end
-end
-
-def fun_l12_n644(x)
- if (x < 1)
- fun_l13_n3(x)
- else
- fun_l13_n55(x)
- end
-end
-
-def fun_l12_n645(x)
- if (x < 1)
- fun_l13_n730(x)
- else
- fun_l13_n52(x)
- end
-end
-
-def fun_l12_n646(x)
- if (x < 1)
- fun_l13_n553(x)
- else
- fun_l13_n885(x)
- end
-end
-
-def fun_l12_n647(x)
- if (x < 1)
- fun_l13_n866(x)
- else
- fun_l13_n684(x)
- end
-end
-
-def fun_l12_n648(x)
- if (x < 1)
- fun_l13_n989(x)
- else
- fun_l13_n511(x)
- end
-end
-
-def fun_l12_n649(x)
- if (x < 1)
- fun_l13_n527(x)
- else
- fun_l13_n166(x)
- end
-end
-
-def fun_l12_n650(x)
- if (x < 1)
- fun_l13_n507(x)
- else
- fun_l13_n527(x)
- end
-end
-
-def fun_l12_n651(x)
- if (x < 1)
- fun_l13_n174(x)
- else
- fun_l13_n881(x)
- end
-end
-
-def fun_l12_n652(x)
- if (x < 1)
- fun_l13_n302(x)
- else
- fun_l13_n3(x)
- end
-end
-
-def fun_l12_n653(x)
- if (x < 1)
- fun_l13_n971(x)
- else
- fun_l13_n601(x)
- end
-end
-
-def fun_l12_n654(x)
- if (x < 1)
- fun_l13_n440(x)
- else
- fun_l13_n286(x)
- end
-end
-
-def fun_l12_n655(x)
- if (x < 1)
- fun_l13_n208(x)
- else
- fun_l13_n275(x)
- end
-end
-
-def fun_l12_n656(x)
- if (x < 1)
- fun_l13_n954(x)
- else
- fun_l13_n991(x)
- end
-end
-
-def fun_l12_n657(x)
- if (x < 1)
- fun_l13_n212(x)
- else
- fun_l13_n640(x)
- end
-end
-
-def fun_l12_n658(x)
- if (x < 1)
- fun_l13_n733(x)
- else
- fun_l13_n459(x)
- end
-end
-
-def fun_l12_n659(x)
- if (x < 1)
- fun_l13_n767(x)
- else
- fun_l13_n581(x)
- end
-end
-
-def fun_l12_n660(x)
- if (x < 1)
- fun_l13_n421(x)
- else
- fun_l13_n19(x)
- end
-end
-
-def fun_l12_n661(x)
- if (x < 1)
- fun_l13_n500(x)
- else
- fun_l13_n464(x)
- end
-end
-
-def fun_l12_n662(x)
- if (x < 1)
- fun_l13_n26(x)
- else
- fun_l13_n300(x)
- end
-end
-
-def fun_l12_n663(x)
- if (x < 1)
- fun_l13_n160(x)
- else
- fun_l13_n112(x)
- end
-end
-
-def fun_l12_n664(x)
- if (x < 1)
- fun_l13_n181(x)
- else
- fun_l13_n511(x)
- end
-end
-
-def fun_l12_n665(x)
- if (x < 1)
- fun_l13_n573(x)
- else
- fun_l13_n283(x)
- end
-end
-
-def fun_l12_n666(x)
- if (x < 1)
- fun_l13_n562(x)
- else
- fun_l13_n992(x)
- end
-end
-
-def fun_l12_n667(x)
- if (x < 1)
- fun_l13_n426(x)
- else
- fun_l13_n921(x)
- end
-end
-
-def fun_l12_n668(x)
- if (x < 1)
- fun_l13_n319(x)
- else
- fun_l13_n226(x)
- end
-end
-
-def fun_l12_n669(x)
- if (x < 1)
- fun_l13_n832(x)
- else
- fun_l13_n690(x)
- end
-end
-
-def fun_l12_n670(x)
- if (x < 1)
- fun_l13_n921(x)
- else
- fun_l13_n964(x)
- end
-end
-
-def fun_l12_n671(x)
- if (x < 1)
- fun_l13_n823(x)
- else
- fun_l13_n903(x)
- end
-end
-
-def fun_l12_n672(x)
- if (x < 1)
- fun_l13_n469(x)
- else
- fun_l13_n914(x)
- end
-end
-
-def fun_l12_n673(x)
- if (x < 1)
- fun_l13_n478(x)
- else
- fun_l13_n481(x)
- end
-end
-
-def fun_l12_n674(x)
- if (x < 1)
- fun_l13_n762(x)
- else
- fun_l13_n464(x)
- end
-end
-
-def fun_l12_n675(x)
- if (x < 1)
- fun_l13_n930(x)
- else
- fun_l13_n587(x)
- end
-end
-
-def fun_l12_n676(x)
- if (x < 1)
- fun_l13_n351(x)
- else
- fun_l13_n239(x)
- end
-end
-
-def fun_l12_n677(x)
- if (x < 1)
- fun_l13_n989(x)
- else
- fun_l13_n424(x)
- end
-end
-
-def fun_l12_n678(x)
- if (x < 1)
- fun_l13_n505(x)
- else
- fun_l13_n186(x)
- end
-end
-
-def fun_l12_n679(x)
- if (x < 1)
- fun_l13_n665(x)
- else
- fun_l13_n536(x)
- end
-end
-
-def fun_l12_n680(x)
- if (x < 1)
- fun_l13_n734(x)
- else
- fun_l13_n36(x)
- end
-end
-
-def fun_l12_n681(x)
- if (x < 1)
- fun_l13_n380(x)
- else
- fun_l13_n340(x)
- end
-end
-
-def fun_l12_n682(x)
- if (x < 1)
- fun_l13_n293(x)
- else
- fun_l13_n205(x)
- end
-end
-
-def fun_l12_n683(x)
- if (x < 1)
- fun_l13_n412(x)
- else
- fun_l13_n13(x)
- end
-end
-
-def fun_l12_n684(x)
- if (x < 1)
- fun_l13_n187(x)
- else
- fun_l13_n186(x)
- end
-end
-
-def fun_l12_n685(x)
- if (x < 1)
- fun_l13_n299(x)
- else
- fun_l13_n875(x)
- end
-end
-
-def fun_l12_n686(x)
- if (x < 1)
- fun_l13_n943(x)
- else
- fun_l13_n96(x)
- end
-end
-
-def fun_l12_n687(x)
- if (x < 1)
- fun_l13_n736(x)
- else
- fun_l13_n377(x)
- end
-end
-
-def fun_l12_n688(x)
- if (x < 1)
- fun_l13_n559(x)
- else
- fun_l13_n410(x)
- end
-end
-
-def fun_l12_n689(x)
- if (x < 1)
- fun_l13_n538(x)
- else
- fun_l13_n521(x)
- end
-end
-
-def fun_l12_n690(x)
- if (x < 1)
- fun_l13_n568(x)
- else
- fun_l13_n838(x)
- end
-end
-
-def fun_l12_n691(x)
- if (x < 1)
- fun_l13_n556(x)
- else
- fun_l13_n42(x)
- end
-end
-
-def fun_l12_n692(x)
- if (x < 1)
- fun_l13_n137(x)
- else
- fun_l13_n939(x)
- end
-end
-
-def fun_l12_n693(x)
- if (x < 1)
- fun_l13_n974(x)
- else
- fun_l13_n308(x)
- end
-end
-
-def fun_l12_n694(x)
- if (x < 1)
- fun_l13_n459(x)
- else
- fun_l13_n323(x)
- end
-end
-
-def fun_l12_n695(x)
- if (x < 1)
- fun_l13_n829(x)
- else
- fun_l13_n909(x)
- end
-end
-
-def fun_l12_n696(x)
- if (x < 1)
- fun_l13_n710(x)
- else
- fun_l13_n648(x)
- end
-end
-
-def fun_l12_n697(x)
- if (x < 1)
- fun_l13_n27(x)
- else
- fun_l13_n500(x)
- end
-end
-
-def fun_l12_n698(x)
- if (x < 1)
- fun_l13_n553(x)
- else
- fun_l13_n865(x)
- end
-end
-
-def fun_l12_n699(x)
- if (x < 1)
- fun_l13_n126(x)
- else
- fun_l13_n789(x)
- end
-end
-
-def fun_l12_n700(x)
- if (x < 1)
- fun_l13_n408(x)
- else
- fun_l13_n391(x)
- end
-end
-
-def fun_l12_n701(x)
- if (x < 1)
- fun_l13_n469(x)
- else
- fun_l13_n48(x)
- end
-end
-
-def fun_l12_n702(x)
- if (x < 1)
- fun_l13_n646(x)
- else
- fun_l13_n117(x)
- end
-end
-
-def fun_l12_n703(x)
- if (x < 1)
- fun_l13_n461(x)
- else
- fun_l13_n114(x)
- end
-end
-
-def fun_l12_n704(x)
- if (x < 1)
- fun_l13_n603(x)
- else
- fun_l13_n27(x)
- end
-end
-
-def fun_l12_n705(x)
- if (x < 1)
- fun_l13_n842(x)
- else
- fun_l13_n792(x)
- end
-end
-
-def fun_l12_n706(x)
- if (x < 1)
- fun_l13_n194(x)
- else
- fun_l13_n405(x)
- end
-end
-
-def fun_l12_n707(x)
- if (x < 1)
- fun_l13_n975(x)
- else
- fun_l13_n933(x)
- end
-end
-
-def fun_l12_n708(x)
- if (x < 1)
- fun_l13_n919(x)
- else
- fun_l13_n558(x)
- end
-end
-
-def fun_l12_n709(x)
- if (x < 1)
- fun_l13_n293(x)
- else
- fun_l13_n868(x)
- end
-end
-
-def fun_l12_n710(x)
- if (x < 1)
- fun_l13_n577(x)
- else
- fun_l13_n816(x)
- end
-end
-
-def fun_l12_n711(x)
- if (x < 1)
- fun_l13_n625(x)
- else
- fun_l13_n319(x)
- end
-end
-
-def fun_l12_n712(x)
- if (x < 1)
- fun_l13_n100(x)
- else
- fun_l13_n421(x)
- end
-end
-
-def fun_l12_n713(x)
- if (x < 1)
- fun_l13_n120(x)
- else
- fun_l13_n727(x)
- end
-end
-
-def fun_l12_n714(x)
- if (x < 1)
- fun_l13_n346(x)
- else
- fun_l13_n399(x)
- end
-end
-
-def fun_l12_n715(x)
- if (x < 1)
- fun_l13_n64(x)
- else
- fun_l13_n895(x)
- end
-end
-
-def fun_l12_n716(x)
- if (x < 1)
- fun_l13_n810(x)
- else
- fun_l13_n958(x)
- end
-end
-
-def fun_l12_n717(x)
- if (x < 1)
- fun_l13_n24(x)
- else
- fun_l13_n851(x)
- end
-end
-
-def fun_l12_n718(x)
- if (x < 1)
- fun_l13_n716(x)
- else
- fun_l13_n859(x)
- end
-end
-
-def fun_l12_n719(x)
- if (x < 1)
- fun_l13_n556(x)
- else
- fun_l13_n999(x)
- end
-end
-
-def fun_l12_n720(x)
- if (x < 1)
- fun_l13_n388(x)
- else
- fun_l13_n127(x)
- end
-end
-
-def fun_l12_n721(x)
- if (x < 1)
- fun_l13_n447(x)
- else
- fun_l13_n880(x)
- end
-end
-
-def fun_l12_n722(x)
- if (x < 1)
- fun_l13_n415(x)
- else
- fun_l13_n636(x)
- end
-end
-
-def fun_l12_n723(x)
- if (x < 1)
- fun_l13_n315(x)
- else
- fun_l13_n766(x)
- end
-end
-
-def fun_l12_n724(x)
- if (x < 1)
- fun_l13_n600(x)
- else
- fun_l13_n223(x)
- end
-end
-
-def fun_l12_n725(x)
- if (x < 1)
- fun_l13_n773(x)
- else
- fun_l13_n523(x)
- end
-end
-
-def fun_l12_n726(x)
- if (x < 1)
- fun_l13_n662(x)
- else
- fun_l13_n775(x)
- end
-end
-
-def fun_l12_n727(x)
- if (x < 1)
- fun_l13_n553(x)
- else
- fun_l13_n247(x)
- end
-end
-
-def fun_l12_n728(x)
- if (x < 1)
- fun_l13_n180(x)
- else
- fun_l13_n815(x)
- end
-end
-
-def fun_l12_n729(x)
- if (x < 1)
- fun_l13_n786(x)
- else
- fun_l13_n729(x)
- end
-end
-
-def fun_l12_n730(x)
- if (x < 1)
- fun_l13_n1(x)
- else
- fun_l13_n791(x)
- end
-end
-
-def fun_l12_n731(x)
- if (x < 1)
- fun_l13_n216(x)
- else
- fun_l13_n682(x)
- end
-end
-
-def fun_l12_n732(x)
- if (x < 1)
- fun_l13_n953(x)
- else
- fun_l13_n364(x)
- end
-end
-
-def fun_l12_n733(x)
- if (x < 1)
- fun_l13_n164(x)
- else
- fun_l13_n277(x)
- end
-end
-
-def fun_l12_n734(x)
- if (x < 1)
- fun_l13_n486(x)
- else
- fun_l13_n741(x)
- end
-end
-
-def fun_l12_n735(x)
- if (x < 1)
- fun_l13_n310(x)
- else
- fun_l13_n940(x)
- end
-end
-
-def fun_l12_n736(x)
- if (x < 1)
- fun_l13_n312(x)
- else
- fun_l13_n46(x)
- end
-end
-
-def fun_l12_n737(x)
- if (x < 1)
- fun_l13_n473(x)
- else
- fun_l13_n728(x)
- end
-end
-
-def fun_l12_n738(x)
- if (x < 1)
- fun_l13_n602(x)
- else
- fun_l13_n652(x)
- end
-end
-
-def fun_l12_n739(x)
- if (x < 1)
- fun_l13_n397(x)
- else
- fun_l13_n855(x)
- end
-end
-
-def fun_l12_n740(x)
- if (x < 1)
- fun_l13_n81(x)
- else
- fun_l13_n32(x)
- end
-end
-
-def fun_l12_n741(x)
- if (x < 1)
- fun_l13_n822(x)
- else
- fun_l13_n231(x)
- end
-end
-
-def fun_l12_n742(x)
- if (x < 1)
- fun_l13_n200(x)
- else
- fun_l13_n440(x)
- end
-end
-
-def fun_l12_n743(x)
- if (x < 1)
- fun_l13_n415(x)
- else
- fun_l13_n631(x)
- end
-end
-
-def fun_l12_n744(x)
- if (x < 1)
- fun_l13_n353(x)
- else
- fun_l13_n536(x)
- end
-end
-
-def fun_l12_n745(x)
- if (x < 1)
- fun_l13_n986(x)
- else
- fun_l13_n384(x)
- end
-end
-
-def fun_l12_n746(x)
- if (x < 1)
- fun_l13_n237(x)
- else
- fun_l13_n583(x)
- end
-end
-
-def fun_l12_n747(x)
- if (x < 1)
- fun_l13_n518(x)
- else
- fun_l13_n717(x)
- end
-end
-
-def fun_l12_n748(x)
- if (x < 1)
- fun_l13_n242(x)
- else
- fun_l13_n180(x)
- end
-end
-
-def fun_l12_n749(x)
- if (x < 1)
- fun_l13_n369(x)
- else
- fun_l13_n249(x)
- end
-end
-
-def fun_l12_n750(x)
- if (x < 1)
- fun_l13_n335(x)
- else
- fun_l13_n180(x)
- end
-end
-
-def fun_l12_n751(x)
- if (x < 1)
- fun_l13_n952(x)
- else
- fun_l13_n506(x)
- end
-end
-
-def fun_l12_n752(x)
- if (x < 1)
- fun_l13_n941(x)
- else
- fun_l13_n251(x)
- end
-end
-
-def fun_l12_n753(x)
- if (x < 1)
- fun_l13_n21(x)
- else
- fun_l13_n536(x)
- end
-end
-
-def fun_l12_n754(x)
- if (x < 1)
- fun_l13_n123(x)
- else
- fun_l13_n976(x)
- end
-end
-
-def fun_l12_n755(x)
- if (x < 1)
- fun_l13_n229(x)
- else
- fun_l13_n535(x)
- end
-end
-
-def fun_l12_n756(x)
- if (x < 1)
- fun_l13_n23(x)
- else
- fun_l13_n976(x)
- end
-end
-
-def fun_l12_n757(x)
- if (x < 1)
- fun_l13_n755(x)
- else
- fun_l13_n677(x)
- end
-end
-
-def fun_l12_n758(x)
- if (x < 1)
- fun_l13_n692(x)
- else
- fun_l13_n334(x)
- end
-end
-
-def fun_l12_n759(x)
- if (x < 1)
- fun_l13_n380(x)
- else
- fun_l13_n903(x)
- end
-end
-
-def fun_l12_n760(x)
- if (x < 1)
- fun_l13_n16(x)
- else
- fun_l13_n750(x)
- end
-end
-
-def fun_l12_n761(x)
- if (x < 1)
- fun_l13_n186(x)
- else
- fun_l13_n639(x)
- end
-end
-
-def fun_l12_n762(x)
- if (x < 1)
- fun_l13_n163(x)
- else
- fun_l13_n273(x)
- end
-end
-
-def fun_l12_n763(x)
- if (x < 1)
- fun_l13_n791(x)
- else
- fun_l13_n55(x)
- end
-end
-
-def fun_l12_n764(x)
- if (x < 1)
- fun_l13_n10(x)
- else
- fun_l13_n672(x)
- end
-end
-
-def fun_l12_n765(x)
- if (x < 1)
- fun_l13_n382(x)
- else
- fun_l13_n284(x)
- end
-end
-
-def fun_l12_n766(x)
- if (x < 1)
- fun_l13_n940(x)
- else
- fun_l13_n716(x)
- end
-end
-
-def fun_l12_n767(x)
- if (x < 1)
- fun_l13_n414(x)
- else
- fun_l13_n997(x)
- end
-end
-
-def fun_l12_n768(x)
- if (x < 1)
- fun_l13_n345(x)
- else
- fun_l13_n511(x)
- end
-end
-
-def fun_l12_n769(x)
- if (x < 1)
- fun_l13_n915(x)
- else
- fun_l13_n907(x)
- end
-end
-
-def fun_l12_n770(x)
- if (x < 1)
- fun_l13_n508(x)
- else
- fun_l13_n144(x)
- end
-end
-
-def fun_l12_n771(x)
- if (x < 1)
- fun_l13_n764(x)
- else
- fun_l13_n211(x)
- end
-end
-
-def fun_l12_n772(x)
- if (x < 1)
- fun_l13_n571(x)
- else
- fun_l13_n486(x)
- end
-end
-
-def fun_l12_n773(x)
- if (x < 1)
- fun_l13_n503(x)
- else
- fun_l13_n561(x)
- end
-end
-
-def fun_l12_n774(x)
- if (x < 1)
- fun_l13_n831(x)
- else
- fun_l13_n608(x)
- end
-end
-
-def fun_l12_n775(x)
- if (x < 1)
- fun_l13_n254(x)
- else
- fun_l13_n626(x)
- end
-end
-
-def fun_l12_n776(x)
- if (x < 1)
- fun_l13_n155(x)
- else
- fun_l13_n602(x)
- end
-end
-
-def fun_l12_n777(x)
- if (x < 1)
- fun_l13_n331(x)
- else
- fun_l13_n837(x)
- end
-end
-
-def fun_l12_n778(x)
- if (x < 1)
- fun_l13_n109(x)
- else
- fun_l13_n558(x)
- end
-end
-
-def fun_l12_n779(x)
- if (x < 1)
- fun_l13_n557(x)
- else
- fun_l13_n784(x)
- end
-end
-
-def fun_l12_n780(x)
- if (x < 1)
- fun_l13_n719(x)
- else
- fun_l13_n933(x)
- end
-end
-
-def fun_l12_n781(x)
- if (x < 1)
- fun_l13_n63(x)
- else
- fun_l13_n776(x)
- end
-end
-
-def fun_l12_n782(x)
- if (x < 1)
- fun_l13_n146(x)
- else
- fun_l13_n32(x)
- end
-end
-
-def fun_l12_n783(x)
- if (x < 1)
- fun_l13_n452(x)
- else
- fun_l13_n621(x)
- end
-end
-
-def fun_l12_n784(x)
- if (x < 1)
- fun_l13_n821(x)
- else
- fun_l13_n454(x)
- end
-end
-
-def fun_l12_n785(x)
- if (x < 1)
- fun_l13_n943(x)
- else
- fun_l13_n835(x)
- end
-end
-
-def fun_l12_n786(x)
- if (x < 1)
- fun_l13_n47(x)
- else
- fun_l13_n252(x)
- end
-end
-
-def fun_l12_n787(x)
- if (x < 1)
- fun_l13_n759(x)
- else
- fun_l13_n820(x)
- end
-end
-
-def fun_l12_n788(x)
- if (x < 1)
- fun_l13_n883(x)
- else
- fun_l13_n218(x)
- end
-end
-
-def fun_l12_n789(x)
- if (x < 1)
- fun_l13_n10(x)
- else
- fun_l13_n765(x)
- end
-end
-
-def fun_l12_n790(x)
- if (x < 1)
- fun_l13_n6(x)
- else
- fun_l13_n424(x)
- end
-end
-
-def fun_l12_n791(x)
- if (x < 1)
- fun_l13_n645(x)
- else
- fun_l13_n598(x)
- end
-end
-
-def fun_l12_n792(x)
- if (x < 1)
- fun_l13_n237(x)
- else
- fun_l13_n141(x)
- end
-end
-
-def fun_l12_n793(x)
- if (x < 1)
- fun_l13_n793(x)
- else
- fun_l13_n109(x)
- end
-end
-
-def fun_l12_n794(x)
- if (x < 1)
- fun_l13_n404(x)
- else
- fun_l13_n864(x)
- end
-end
-
-def fun_l12_n795(x)
- if (x < 1)
- fun_l13_n511(x)
- else
- fun_l13_n620(x)
- end
-end
-
-def fun_l12_n796(x)
- if (x < 1)
- fun_l13_n880(x)
- else
- fun_l13_n330(x)
- end
-end
-
-def fun_l12_n797(x)
- if (x < 1)
- fun_l13_n637(x)
- else
- fun_l13_n13(x)
- end
-end
-
-def fun_l12_n798(x)
- if (x < 1)
- fun_l13_n567(x)
- else
- fun_l13_n958(x)
- end
-end
-
-def fun_l12_n799(x)
- if (x < 1)
- fun_l13_n715(x)
- else
- fun_l13_n983(x)
- end
-end
-
-def fun_l12_n800(x)
- if (x < 1)
- fun_l13_n502(x)
- else
- fun_l13_n600(x)
- end
-end
-
-def fun_l12_n801(x)
- if (x < 1)
- fun_l13_n645(x)
- else
- fun_l13_n713(x)
- end
-end
-
-def fun_l12_n802(x)
- if (x < 1)
- fun_l13_n804(x)
- else
- fun_l13_n475(x)
- end
-end
-
-def fun_l12_n803(x)
- if (x < 1)
- fun_l13_n286(x)
- else
- fun_l13_n135(x)
- end
-end
-
-def fun_l12_n804(x)
- if (x < 1)
- fun_l13_n420(x)
- else
- fun_l13_n534(x)
- end
-end
-
-def fun_l12_n805(x)
- if (x < 1)
- fun_l13_n345(x)
- else
- fun_l13_n833(x)
- end
-end
-
-def fun_l12_n806(x)
- if (x < 1)
- fun_l13_n558(x)
- else
- fun_l13_n831(x)
- end
-end
-
-def fun_l12_n807(x)
- if (x < 1)
- fun_l13_n82(x)
- else
- fun_l13_n56(x)
- end
-end
-
-def fun_l12_n808(x)
- if (x < 1)
- fun_l13_n809(x)
- else
- fun_l13_n12(x)
- end
-end
-
-def fun_l12_n809(x)
- if (x < 1)
- fun_l13_n450(x)
- else
- fun_l13_n326(x)
- end
-end
-
-def fun_l12_n810(x)
- if (x < 1)
- fun_l13_n567(x)
- else
- fun_l13_n437(x)
- end
-end
-
-def fun_l12_n811(x)
- if (x < 1)
- fun_l13_n880(x)
- else
- fun_l13_n785(x)
- end
-end
-
-def fun_l12_n812(x)
- if (x < 1)
- fun_l13_n585(x)
- else
- fun_l13_n610(x)
- end
-end
-
-def fun_l12_n813(x)
- if (x < 1)
- fun_l13_n41(x)
- else
- fun_l13_n911(x)
- end
-end
-
-def fun_l12_n814(x)
- if (x < 1)
- fun_l13_n438(x)
- else
- fun_l13_n300(x)
- end
-end
-
-def fun_l12_n815(x)
- if (x < 1)
- fun_l13_n363(x)
- else
- fun_l13_n357(x)
- end
-end
-
-def fun_l12_n816(x)
- if (x < 1)
- fun_l13_n172(x)
- else
- fun_l13_n25(x)
- end
-end
-
-def fun_l12_n817(x)
- if (x < 1)
- fun_l13_n593(x)
- else
- fun_l13_n853(x)
- end
-end
-
-def fun_l12_n818(x)
- if (x < 1)
- fun_l13_n790(x)
- else
- fun_l13_n575(x)
- end
-end
-
-def fun_l12_n819(x)
- if (x < 1)
- fun_l13_n795(x)
- else
- fun_l13_n877(x)
- end
-end
-
-def fun_l12_n820(x)
- if (x < 1)
- fun_l13_n563(x)
- else
- fun_l13_n170(x)
- end
-end
-
-def fun_l12_n821(x)
- if (x < 1)
- fun_l13_n405(x)
- else
- fun_l13_n985(x)
- end
-end
-
-def fun_l12_n822(x)
- if (x < 1)
- fun_l13_n668(x)
- else
- fun_l13_n702(x)
- end
-end
-
-def fun_l12_n823(x)
- if (x < 1)
- fun_l13_n210(x)
- else
- fun_l13_n450(x)
- end
-end
-
-def fun_l12_n824(x)
- if (x < 1)
- fun_l13_n817(x)
- else
- fun_l13_n693(x)
- end
-end
-
-def fun_l12_n825(x)
- if (x < 1)
- fun_l13_n909(x)
- else
- fun_l13_n857(x)
- end
-end
-
-def fun_l12_n826(x)
- if (x < 1)
- fun_l13_n944(x)
- else
- fun_l13_n601(x)
- end
-end
-
-def fun_l12_n827(x)
- if (x < 1)
- fun_l13_n152(x)
- else
- fun_l13_n187(x)
- end
-end
-
-def fun_l12_n828(x)
- if (x < 1)
- fun_l13_n735(x)
- else
- fun_l13_n198(x)
- end
-end
-
-def fun_l12_n829(x)
- if (x < 1)
- fun_l13_n892(x)
- else
- fun_l13_n362(x)
- end
-end
-
-def fun_l12_n830(x)
- if (x < 1)
- fun_l13_n636(x)
- else
- fun_l13_n779(x)
- end
-end
-
-def fun_l12_n831(x)
- if (x < 1)
- fun_l13_n597(x)
- else
- fun_l13_n186(x)
- end
-end
-
-def fun_l12_n832(x)
- if (x < 1)
- fun_l13_n680(x)
- else
- fun_l13_n477(x)
- end
-end
-
-def fun_l12_n833(x)
- if (x < 1)
- fun_l13_n334(x)
- else
- fun_l13_n508(x)
- end
-end
-
-def fun_l12_n834(x)
- if (x < 1)
- fun_l13_n927(x)
- else
- fun_l13_n111(x)
- end
-end
-
-def fun_l12_n835(x)
- if (x < 1)
- fun_l13_n424(x)
- else
- fun_l13_n326(x)
- end
-end
-
-def fun_l12_n836(x)
- if (x < 1)
- fun_l13_n624(x)
- else
- fun_l13_n270(x)
- end
-end
-
-def fun_l12_n837(x)
- if (x < 1)
- fun_l13_n458(x)
- else
- fun_l13_n736(x)
- end
-end
-
-def fun_l12_n838(x)
- if (x < 1)
- fun_l13_n881(x)
- else
- fun_l13_n702(x)
- end
-end
-
-def fun_l12_n839(x)
- if (x < 1)
- fun_l13_n778(x)
- else
- fun_l13_n374(x)
- end
-end
-
-def fun_l12_n840(x)
- if (x < 1)
- fun_l13_n118(x)
- else
- fun_l13_n543(x)
- end
-end
-
-def fun_l12_n841(x)
- if (x < 1)
- fun_l13_n270(x)
- else
- fun_l13_n810(x)
- end
-end
-
-def fun_l12_n842(x)
- if (x < 1)
- fun_l13_n122(x)
- else
- fun_l13_n905(x)
- end
-end
-
-def fun_l12_n843(x)
- if (x < 1)
- fun_l13_n154(x)
- else
- fun_l13_n636(x)
- end
-end
-
-def fun_l12_n844(x)
- if (x < 1)
- fun_l13_n603(x)
- else
- fun_l13_n586(x)
- end
-end
-
-def fun_l12_n845(x)
- if (x < 1)
- fun_l13_n264(x)
- else
- fun_l13_n492(x)
- end
-end
-
-def fun_l12_n846(x)
- if (x < 1)
- fun_l13_n264(x)
- else
- fun_l13_n214(x)
- end
-end
-
-def fun_l12_n847(x)
- if (x < 1)
- fun_l13_n337(x)
- else
- fun_l13_n339(x)
- end
-end
-
-def fun_l12_n848(x)
- if (x < 1)
- fun_l13_n83(x)
- else
- fun_l13_n454(x)
- end
-end
-
-def fun_l12_n849(x)
- if (x < 1)
- fun_l13_n129(x)
- else
- fun_l13_n30(x)
- end
-end
-
-def fun_l12_n850(x)
- if (x < 1)
- fun_l13_n602(x)
- else
- fun_l13_n355(x)
- end
-end
-
-def fun_l12_n851(x)
- if (x < 1)
- fun_l13_n650(x)
- else
- fun_l13_n715(x)
- end
-end
-
-def fun_l12_n852(x)
- if (x < 1)
- fun_l13_n482(x)
- else
- fun_l13_n852(x)
- end
-end
-
-def fun_l12_n853(x)
- if (x < 1)
- fun_l13_n946(x)
- else
- fun_l13_n393(x)
- end
-end
-
-def fun_l12_n854(x)
- if (x < 1)
- fun_l13_n16(x)
- else
- fun_l13_n512(x)
- end
-end
-
-def fun_l12_n855(x)
- if (x < 1)
- fun_l13_n469(x)
- else
- fun_l13_n567(x)
- end
-end
-
-def fun_l12_n856(x)
- if (x < 1)
- fun_l13_n531(x)
- else
- fun_l13_n39(x)
- end
-end
-
-def fun_l12_n857(x)
- if (x < 1)
- fun_l13_n673(x)
- else
- fun_l13_n670(x)
- end
-end
-
-def fun_l12_n858(x)
- if (x < 1)
- fun_l13_n83(x)
- else
- fun_l13_n588(x)
- end
-end
-
-def fun_l12_n859(x)
- if (x < 1)
- fun_l13_n247(x)
- else
- fun_l13_n460(x)
- end
-end
-
-def fun_l12_n860(x)
- if (x < 1)
- fun_l13_n621(x)
- else
- fun_l13_n229(x)
- end
-end
-
-def fun_l12_n861(x)
- if (x < 1)
- fun_l13_n121(x)
- else
- fun_l13_n147(x)
- end
-end
-
-def fun_l12_n862(x)
- if (x < 1)
- fun_l13_n293(x)
- else
- fun_l13_n976(x)
- end
-end
-
-def fun_l12_n863(x)
- if (x < 1)
- fun_l13_n64(x)
- else
- fun_l13_n569(x)
- end
-end
-
-def fun_l12_n864(x)
- if (x < 1)
- fun_l13_n802(x)
- else
- fun_l13_n962(x)
- end
-end
-
-def fun_l12_n865(x)
- if (x < 1)
- fun_l13_n406(x)
- else
- fun_l13_n571(x)
- end
-end
-
-def fun_l12_n866(x)
- if (x < 1)
- fun_l13_n798(x)
- else
- fun_l13_n418(x)
- end
-end
-
-def fun_l12_n867(x)
- if (x < 1)
- fun_l13_n725(x)
- else
- fun_l13_n716(x)
- end
-end
-
-def fun_l12_n868(x)
- if (x < 1)
- fun_l13_n245(x)
- else
- fun_l13_n154(x)
- end
-end
-
-def fun_l12_n869(x)
- if (x < 1)
- fun_l13_n954(x)
- else
- fun_l13_n242(x)
- end
-end
-
-def fun_l12_n870(x)
- if (x < 1)
- fun_l13_n649(x)
- else
- fun_l13_n160(x)
- end
-end
-
-def fun_l12_n871(x)
- if (x < 1)
- fun_l13_n700(x)
- else
- fun_l13_n863(x)
- end
-end
-
-def fun_l12_n872(x)
- if (x < 1)
- fun_l13_n60(x)
- else
- fun_l13_n359(x)
- end
-end
-
-def fun_l12_n873(x)
- if (x < 1)
- fun_l13_n820(x)
- else
- fun_l13_n247(x)
- end
-end
-
-def fun_l12_n874(x)
- if (x < 1)
- fun_l13_n294(x)
- else
- fun_l13_n179(x)
- end
-end
-
-def fun_l12_n875(x)
- if (x < 1)
- fun_l13_n599(x)
- else
- fun_l13_n309(x)
- end
-end
-
-def fun_l12_n876(x)
- if (x < 1)
- fun_l13_n922(x)
- else
- fun_l13_n632(x)
- end
-end
-
-def fun_l12_n877(x)
- if (x < 1)
- fun_l13_n921(x)
- else
- fun_l13_n200(x)
- end
-end
-
-def fun_l12_n878(x)
- if (x < 1)
- fun_l13_n375(x)
- else
- fun_l13_n109(x)
- end
-end
-
-def fun_l12_n879(x)
- if (x < 1)
- fun_l13_n771(x)
- else
- fun_l13_n758(x)
- end
-end
-
-def fun_l12_n880(x)
- if (x < 1)
- fun_l13_n887(x)
- else
- fun_l13_n958(x)
- end
-end
-
-def fun_l12_n881(x)
- if (x < 1)
- fun_l13_n668(x)
- else
- fun_l13_n508(x)
- end
-end
-
-def fun_l12_n882(x)
- if (x < 1)
- fun_l13_n822(x)
- else
- fun_l13_n933(x)
- end
-end
-
-def fun_l12_n883(x)
- if (x < 1)
- fun_l13_n328(x)
- else
- fun_l13_n152(x)
- end
-end
-
-def fun_l12_n884(x)
- if (x < 1)
- fun_l13_n978(x)
- else
- fun_l13_n282(x)
- end
-end
-
-def fun_l12_n885(x)
- if (x < 1)
- fun_l13_n91(x)
- else
- fun_l13_n592(x)
- end
-end
-
-def fun_l12_n886(x)
- if (x < 1)
- fun_l13_n844(x)
- else
- fun_l13_n254(x)
- end
-end
-
-def fun_l12_n887(x)
- if (x < 1)
- fun_l13_n49(x)
- else
- fun_l13_n430(x)
- end
-end
-
-def fun_l12_n888(x)
- if (x < 1)
- fun_l13_n653(x)
- else
- fun_l13_n612(x)
- end
-end
-
-def fun_l12_n889(x)
- if (x < 1)
- fun_l13_n352(x)
- else
- fun_l13_n228(x)
- end
-end
-
-def fun_l12_n890(x)
- if (x < 1)
- fun_l13_n952(x)
- else
- fun_l13_n505(x)
- end
-end
-
-def fun_l12_n891(x)
- if (x < 1)
- fun_l13_n381(x)
- else
- fun_l13_n799(x)
- end
-end
-
-def fun_l12_n892(x)
- if (x < 1)
- fun_l13_n160(x)
- else
- fun_l13_n78(x)
- end
-end
-
-def fun_l12_n893(x)
- if (x < 1)
- fun_l13_n554(x)
- else
- fun_l13_n383(x)
- end
-end
-
-def fun_l12_n894(x)
- if (x < 1)
- fun_l13_n475(x)
- else
- fun_l13_n853(x)
- end
-end
-
-def fun_l12_n895(x)
- if (x < 1)
- fun_l13_n588(x)
- else
- fun_l13_n452(x)
- end
-end
-
-def fun_l12_n896(x)
- if (x < 1)
- fun_l13_n991(x)
- else
- fun_l13_n758(x)
- end
-end
-
-def fun_l12_n897(x)
- if (x < 1)
- fun_l13_n808(x)
- else
- fun_l13_n742(x)
- end
-end
-
-def fun_l12_n898(x)
- if (x < 1)
- fun_l13_n654(x)
- else
- fun_l13_n772(x)
- end
-end
-
-def fun_l12_n899(x)
- if (x < 1)
- fun_l13_n365(x)
- else
- fun_l13_n3(x)
- end
-end
-
-def fun_l12_n900(x)
- if (x < 1)
- fun_l13_n322(x)
- else
- fun_l13_n143(x)
- end
-end
-
-def fun_l12_n901(x)
- if (x < 1)
- fun_l13_n833(x)
- else
- fun_l13_n19(x)
- end
-end
-
-def fun_l12_n902(x)
- if (x < 1)
- fun_l13_n796(x)
- else
- fun_l13_n140(x)
- end
-end
-
-def fun_l12_n903(x)
- if (x < 1)
- fun_l13_n866(x)
- else
- fun_l13_n227(x)
- end
-end
-
-def fun_l12_n904(x)
- if (x < 1)
- fun_l13_n814(x)
- else
- fun_l13_n714(x)
- end
-end
-
-def fun_l12_n905(x)
- if (x < 1)
- fun_l13_n841(x)
- else
- fun_l13_n802(x)
- end
-end
-
-def fun_l12_n906(x)
- if (x < 1)
- fun_l13_n212(x)
- else
- fun_l13_n14(x)
- end
-end
-
-def fun_l12_n907(x)
- if (x < 1)
- fun_l13_n35(x)
- else
- fun_l13_n952(x)
- end
-end
-
-def fun_l12_n908(x)
- if (x < 1)
- fun_l13_n181(x)
- else
- fun_l13_n539(x)
- end
-end
-
-def fun_l12_n909(x)
- if (x < 1)
- fun_l13_n770(x)
- else
- fun_l13_n80(x)
- end
-end
-
-def fun_l12_n910(x)
- if (x < 1)
- fun_l13_n421(x)
- else
- fun_l13_n512(x)
- end
-end
-
-def fun_l12_n911(x)
- if (x < 1)
- fun_l13_n710(x)
- else
- fun_l13_n666(x)
- end
-end
-
-def fun_l12_n912(x)
- if (x < 1)
- fun_l13_n319(x)
- else
- fun_l13_n491(x)
- end
-end
-
-def fun_l12_n913(x)
- if (x < 1)
- fun_l13_n924(x)
- else
- fun_l13_n198(x)
- end
-end
-
-def fun_l12_n914(x)
- if (x < 1)
- fun_l13_n707(x)
- else
- fun_l13_n91(x)
- end
-end
-
-def fun_l12_n915(x)
- if (x < 1)
- fun_l13_n29(x)
- else
- fun_l13_n134(x)
- end
-end
-
-def fun_l12_n916(x)
- if (x < 1)
- fun_l13_n314(x)
- else
- fun_l13_n831(x)
- end
-end
-
-def fun_l12_n917(x)
- if (x < 1)
- fun_l13_n986(x)
- else
- fun_l13_n732(x)
- end
-end
-
-def fun_l12_n918(x)
- if (x < 1)
- fun_l13_n787(x)
- else
- fun_l13_n232(x)
- end
-end
-
-def fun_l12_n919(x)
- if (x < 1)
- fun_l13_n452(x)
- else
- fun_l13_n386(x)
- end
-end
-
-def fun_l12_n920(x)
- if (x < 1)
- fun_l13_n12(x)
- else
- fun_l13_n264(x)
- end
-end
-
-def fun_l12_n921(x)
- if (x < 1)
- fun_l13_n734(x)
- else
- fun_l13_n885(x)
- end
-end
-
-def fun_l12_n922(x)
- if (x < 1)
- fun_l13_n180(x)
- else
- fun_l13_n509(x)
- end
-end
-
-def fun_l12_n923(x)
- if (x < 1)
- fun_l13_n783(x)
- else
- fun_l13_n212(x)
- end
-end
-
-def fun_l12_n924(x)
- if (x < 1)
- fun_l13_n623(x)
- else
- fun_l13_n159(x)
- end
-end
-
-def fun_l12_n925(x)
- if (x < 1)
- fun_l13_n361(x)
- else
- fun_l13_n47(x)
- end
-end
-
-def fun_l12_n926(x)
- if (x < 1)
- fun_l13_n355(x)
- else
- fun_l13_n337(x)
- end
-end
-
-def fun_l12_n927(x)
- if (x < 1)
- fun_l13_n892(x)
- else
- fun_l13_n814(x)
- end
-end
-
-def fun_l12_n928(x)
- if (x < 1)
- fun_l13_n173(x)
- else
- fun_l13_n613(x)
- end
-end
-
-def fun_l12_n929(x)
- if (x < 1)
- fun_l13_n140(x)
- else
- fun_l13_n782(x)
- end
-end
-
-def fun_l12_n930(x)
- if (x < 1)
- fun_l13_n964(x)
- else
- fun_l13_n830(x)
- end
-end
-
-def fun_l12_n931(x)
- if (x < 1)
- fun_l13_n110(x)
- else
- fun_l13_n767(x)
- end
-end
-
-def fun_l12_n932(x)
- if (x < 1)
- fun_l13_n738(x)
- else
- fun_l13_n73(x)
- end
-end
-
-def fun_l12_n933(x)
- if (x < 1)
- fun_l13_n92(x)
- else
- fun_l13_n113(x)
- end
-end
-
-def fun_l12_n934(x)
- if (x < 1)
- fun_l13_n377(x)
- else
- fun_l13_n464(x)
- end
-end
-
-def fun_l12_n935(x)
- if (x < 1)
- fun_l13_n544(x)
- else
- fun_l13_n808(x)
- end
-end
-
-def fun_l12_n936(x)
- if (x < 1)
- fun_l13_n36(x)
- else
- fun_l13_n343(x)
- end
-end
-
-def fun_l12_n937(x)
- if (x < 1)
- fun_l13_n745(x)
- else
- fun_l13_n342(x)
- end
-end
-
-def fun_l12_n938(x)
- if (x < 1)
- fun_l13_n238(x)
- else
- fun_l13_n703(x)
- end
-end
-
-def fun_l12_n939(x)
- if (x < 1)
- fun_l13_n229(x)
- else
- fun_l13_n118(x)
- end
-end
-
-def fun_l12_n940(x)
- if (x < 1)
- fun_l13_n90(x)
- else
- fun_l13_n0(x)
- end
-end
-
-def fun_l12_n941(x)
- if (x < 1)
- fun_l13_n586(x)
- else
- fun_l13_n99(x)
- end
-end
-
-def fun_l12_n942(x)
- if (x < 1)
- fun_l13_n755(x)
- else
- fun_l13_n573(x)
- end
-end
-
-def fun_l12_n943(x)
- if (x < 1)
- fun_l13_n74(x)
- else
- fun_l13_n805(x)
- end
-end
-
-def fun_l12_n944(x)
- if (x < 1)
- fun_l13_n574(x)
- else
- fun_l13_n876(x)
- end
-end
-
-def fun_l12_n945(x)
- if (x < 1)
- fun_l13_n0(x)
- else
- fun_l13_n478(x)
- end
-end
-
-def fun_l12_n946(x)
- if (x < 1)
- fun_l13_n536(x)
- else
- fun_l13_n957(x)
- end
-end
-
-def fun_l12_n947(x)
- if (x < 1)
- fun_l13_n644(x)
- else
- fun_l13_n285(x)
- end
-end
-
-def fun_l12_n948(x)
- if (x < 1)
- fun_l13_n215(x)
- else
- fun_l13_n914(x)
- end
-end
-
-def fun_l12_n949(x)
- if (x < 1)
- fun_l13_n265(x)
- else
- fun_l13_n262(x)
- end
-end
-
-def fun_l12_n950(x)
- if (x < 1)
- fun_l13_n44(x)
- else
- fun_l13_n917(x)
- end
-end
-
-def fun_l12_n951(x)
- if (x < 1)
- fun_l13_n222(x)
- else
- fun_l13_n53(x)
- end
-end
-
-def fun_l12_n952(x)
- if (x < 1)
- fun_l13_n149(x)
- else
- fun_l13_n11(x)
- end
-end
-
-def fun_l12_n953(x)
- if (x < 1)
- fun_l13_n827(x)
- else
- fun_l13_n737(x)
- end
-end
-
-def fun_l12_n954(x)
- if (x < 1)
- fun_l13_n655(x)
- else
- fun_l13_n308(x)
- end
-end
-
-def fun_l12_n955(x)
- if (x < 1)
- fun_l13_n108(x)
- else
- fun_l13_n940(x)
- end
-end
-
-def fun_l12_n956(x)
- if (x < 1)
- fun_l13_n236(x)
- else
- fun_l13_n259(x)
- end
-end
-
-def fun_l12_n957(x)
- if (x < 1)
- fun_l13_n886(x)
- else
- fun_l13_n955(x)
- end
-end
-
-def fun_l12_n958(x)
- if (x < 1)
- fun_l13_n688(x)
- else
- fun_l13_n391(x)
- end
-end
-
-def fun_l12_n959(x)
- if (x < 1)
- fun_l13_n521(x)
- else
- fun_l13_n395(x)
- end
-end
-
-def fun_l12_n960(x)
- if (x < 1)
- fun_l13_n877(x)
- else
- fun_l13_n808(x)
- end
-end
-
-def fun_l12_n961(x)
- if (x < 1)
- fun_l13_n29(x)
- else
- fun_l13_n422(x)
- end
-end
-
-def fun_l12_n962(x)
- if (x < 1)
- fun_l13_n417(x)
- else
- fun_l13_n310(x)
- end
-end
-
-def fun_l12_n963(x)
- if (x < 1)
- fun_l13_n987(x)
- else
- fun_l13_n462(x)
- end
-end
-
-def fun_l12_n964(x)
- if (x < 1)
- fun_l13_n914(x)
- else
- fun_l13_n115(x)
- end
-end
-
-def fun_l12_n965(x)
- if (x < 1)
- fun_l13_n895(x)
- else
- fun_l13_n504(x)
- end
-end
-
-def fun_l12_n966(x)
- if (x < 1)
- fun_l13_n304(x)
- else
- fun_l13_n788(x)
- end
-end
-
-def fun_l12_n967(x)
- if (x < 1)
- fun_l13_n354(x)
- else
- fun_l13_n592(x)
- end
-end
-
-def fun_l12_n968(x)
- if (x < 1)
- fun_l13_n231(x)
- else
- fun_l13_n214(x)
- end
-end
-
-def fun_l12_n969(x)
- if (x < 1)
- fun_l13_n435(x)
- else
- fun_l13_n779(x)
- end
-end
-
-def fun_l12_n970(x)
- if (x < 1)
- fun_l13_n261(x)
- else
- fun_l13_n139(x)
- end
-end
-
-def fun_l12_n971(x)
- if (x < 1)
- fun_l13_n320(x)
- else
- fun_l13_n749(x)
- end
-end
-
-def fun_l12_n972(x)
- if (x < 1)
- fun_l13_n56(x)
- else
- fun_l13_n207(x)
- end
-end
-
-def fun_l12_n973(x)
- if (x < 1)
- fun_l13_n238(x)
- else
- fun_l13_n637(x)
- end
-end
-
-def fun_l12_n974(x)
- if (x < 1)
- fun_l13_n474(x)
- else
- fun_l13_n512(x)
- end
-end
-
-def fun_l12_n975(x)
- if (x < 1)
- fun_l13_n552(x)
- else
- fun_l13_n355(x)
- end
-end
-
-def fun_l12_n976(x)
- if (x < 1)
- fun_l13_n127(x)
- else
- fun_l13_n571(x)
- end
-end
-
-def fun_l12_n977(x)
- if (x < 1)
- fun_l13_n261(x)
- else
- fun_l13_n845(x)
- end
-end
-
-def fun_l12_n978(x)
- if (x < 1)
- fun_l13_n280(x)
- else
- fun_l13_n465(x)
- end
-end
-
-def fun_l12_n979(x)
- if (x < 1)
- fun_l13_n249(x)
- else
- fun_l13_n66(x)
- end
-end
-
-def fun_l12_n980(x)
- if (x < 1)
- fun_l13_n306(x)
- else
- fun_l13_n53(x)
- end
-end
-
-def fun_l12_n981(x)
- if (x < 1)
- fun_l13_n827(x)
- else
- fun_l13_n395(x)
- end
-end
-
-def fun_l12_n982(x)
- if (x < 1)
- fun_l13_n858(x)
- else
- fun_l13_n644(x)
- end
-end
-
-def fun_l12_n983(x)
- if (x < 1)
- fun_l13_n50(x)
- else
- fun_l13_n671(x)
- end
-end
-
-def fun_l12_n984(x)
- if (x < 1)
- fun_l13_n629(x)
- else
- fun_l13_n55(x)
- end
-end
-
-def fun_l12_n985(x)
- if (x < 1)
- fun_l13_n73(x)
- else
- fun_l13_n958(x)
- end
-end
-
-def fun_l12_n986(x)
- if (x < 1)
- fun_l13_n197(x)
- else
- fun_l13_n444(x)
- end
-end
-
-def fun_l12_n987(x)
- if (x < 1)
- fun_l13_n108(x)
- else
- fun_l13_n898(x)
- end
-end
-
-def fun_l12_n988(x)
- if (x < 1)
- fun_l13_n153(x)
- else
- fun_l13_n278(x)
- end
-end
-
-def fun_l12_n989(x)
- if (x < 1)
- fun_l13_n764(x)
- else
- fun_l13_n712(x)
- end
-end
-
-def fun_l12_n990(x)
- if (x < 1)
- fun_l13_n711(x)
- else
- fun_l13_n825(x)
- end
-end
-
-def fun_l12_n991(x)
- if (x < 1)
- fun_l13_n767(x)
- else
- fun_l13_n169(x)
- end
-end
-
-def fun_l12_n992(x)
- if (x < 1)
- fun_l13_n917(x)
- else
- fun_l13_n524(x)
- end
-end
-
-def fun_l12_n993(x)
- if (x < 1)
- fun_l13_n589(x)
- else
- fun_l13_n695(x)
- end
-end
-
-def fun_l12_n994(x)
- if (x < 1)
- fun_l13_n733(x)
- else
- fun_l13_n764(x)
- end
-end
-
-def fun_l12_n995(x)
- if (x < 1)
- fun_l13_n86(x)
- else
- fun_l13_n547(x)
- end
-end
-
-def fun_l12_n996(x)
- if (x < 1)
- fun_l13_n236(x)
- else
- fun_l13_n197(x)
- end
-end
-
-def fun_l12_n997(x)
- if (x < 1)
- fun_l13_n592(x)
- else
- fun_l13_n313(x)
- end
-end
-
-def fun_l12_n998(x)
- if (x < 1)
- fun_l13_n878(x)
- else
- fun_l13_n439(x)
- end
-end
-
-def fun_l12_n999(x)
- if (x < 1)
- fun_l13_n904(x)
- else
- fun_l13_n651(x)
- end
-end
-
-def fun_l13_n0(x)
- if (x < 1)
- fun_l14_n72(x)
- else
- fun_l14_n951(x)
- end
-end
-
-def fun_l13_n1(x)
- if (x < 1)
- fun_l14_n950(x)
- else
- fun_l14_n170(x)
- end
-end
-
-def fun_l13_n2(x)
- if (x < 1)
- fun_l14_n773(x)
- else
- fun_l14_n351(x)
- end
-end
-
-def fun_l13_n3(x)
- if (x < 1)
- fun_l14_n814(x)
- else
- fun_l14_n304(x)
- end
-end
-
-def fun_l13_n4(x)
- if (x < 1)
- fun_l14_n395(x)
- else
- fun_l14_n187(x)
- end
-end
-
-def fun_l13_n5(x)
- if (x < 1)
- fun_l14_n60(x)
- else
- fun_l14_n165(x)
- end
-end
-
-def fun_l13_n6(x)
- if (x < 1)
- fun_l14_n711(x)
- else
- fun_l14_n815(x)
- end
-end
-
-def fun_l13_n7(x)
- if (x < 1)
- fun_l14_n396(x)
- else
- fun_l14_n614(x)
- end
-end
-
-def fun_l13_n8(x)
- if (x < 1)
- fun_l14_n477(x)
- else
- fun_l14_n427(x)
- end
-end
-
-def fun_l13_n9(x)
- if (x < 1)
- fun_l14_n803(x)
- else
- fun_l14_n655(x)
- end
-end
-
-def fun_l13_n10(x)
- if (x < 1)
- fun_l14_n261(x)
- else
- fun_l14_n324(x)
- end
-end
-
-def fun_l13_n11(x)
- if (x < 1)
- fun_l14_n485(x)
- else
- fun_l14_n302(x)
- end
-end
-
-def fun_l13_n12(x)
- if (x < 1)
- fun_l14_n324(x)
- else
- fun_l14_n840(x)
- end
-end
-
-def fun_l13_n13(x)
- if (x < 1)
- fun_l14_n811(x)
- else
- fun_l14_n357(x)
- end
-end
-
-def fun_l13_n14(x)
- if (x < 1)
- fun_l14_n736(x)
- else
- fun_l14_n763(x)
- end
-end
-
-def fun_l13_n15(x)
- if (x < 1)
- fun_l14_n572(x)
- else
- fun_l14_n557(x)
- end
-end
-
-def fun_l13_n16(x)
- if (x < 1)
- fun_l14_n406(x)
- else
- fun_l14_n200(x)
- end
-end
-
-def fun_l13_n17(x)
- if (x < 1)
- fun_l14_n500(x)
- else
- fun_l14_n480(x)
- end
-end
-
-def fun_l13_n18(x)
- if (x < 1)
- fun_l14_n215(x)
- else
- fun_l14_n241(x)
- end
-end
-
-def fun_l13_n19(x)
- if (x < 1)
- fun_l14_n341(x)
- else
- fun_l14_n142(x)
- end
-end
-
-def fun_l13_n20(x)
- if (x < 1)
- fun_l14_n649(x)
- else
- fun_l14_n853(x)
- end
-end
-
-def fun_l13_n21(x)
- if (x < 1)
- fun_l14_n153(x)
- else
- fun_l14_n295(x)
- end
-end
-
-def fun_l13_n22(x)
- if (x < 1)
- fun_l14_n210(x)
- else
- fun_l14_n947(x)
- end
-end
-
-def fun_l13_n23(x)
- if (x < 1)
- fun_l14_n764(x)
- else
- fun_l14_n810(x)
- end
-end
-
-def fun_l13_n24(x)
- if (x < 1)
- fun_l14_n96(x)
- else
- fun_l14_n359(x)
- end
-end
-
-def fun_l13_n25(x)
- if (x < 1)
- fun_l14_n542(x)
- else
- fun_l14_n506(x)
- end
-end
-
-def fun_l13_n26(x)
- if (x < 1)
- fun_l14_n583(x)
- else
- fun_l14_n754(x)
- end
-end
-
-def fun_l13_n27(x)
- if (x < 1)
- fun_l14_n881(x)
- else
- fun_l14_n693(x)
- end
-end
-
-def fun_l13_n28(x)
- if (x < 1)
- fun_l14_n385(x)
- else
- fun_l14_n628(x)
- end
-end
-
-def fun_l13_n29(x)
- if (x < 1)
- fun_l14_n429(x)
- else
- fun_l14_n370(x)
- end
-end
-
-def fun_l13_n30(x)
- if (x < 1)
- fun_l14_n484(x)
- else
- fun_l14_n724(x)
- end
-end
-
-def fun_l13_n31(x)
- if (x < 1)
- fun_l14_n328(x)
- else
- fun_l14_n857(x)
- end
-end
-
-def fun_l13_n32(x)
- if (x < 1)
- fun_l14_n367(x)
- else
- fun_l14_n441(x)
- end
-end
-
-def fun_l13_n33(x)
- if (x < 1)
- fun_l14_n322(x)
- else
- fun_l14_n390(x)
- end
-end
-
-def fun_l13_n34(x)
- if (x < 1)
- fun_l14_n935(x)
- else
- fun_l14_n46(x)
- end
-end
-
-def fun_l13_n35(x)
- if (x < 1)
- fun_l14_n274(x)
- else
- fun_l14_n536(x)
- end
-end
-
-def fun_l13_n36(x)
- if (x < 1)
- fun_l14_n645(x)
- else
- fun_l14_n396(x)
- end
-end
-
-def fun_l13_n37(x)
- if (x < 1)
- fun_l14_n905(x)
- else
- fun_l14_n19(x)
- end
-end
-
-def fun_l13_n38(x)
- if (x < 1)
- fun_l14_n562(x)
- else
- fun_l14_n983(x)
- end
-end
-
-def fun_l13_n39(x)
- if (x < 1)
- fun_l14_n846(x)
- else
- fun_l14_n140(x)
- end
-end
-
-def fun_l13_n40(x)
- if (x < 1)
- fun_l14_n308(x)
- else
- fun_l14_n968(x)
- end
-end
-
-def fun_l13_n41(x)
- if (x < 1)
- fun_l14_n299(x)
- else
- fun_l14_n364(x)
- end
-end
-
-def fun_l13_n42(x)
- if (x < 1)
- fun_l14_n266(x)
- else
- fun_l14_n368(x)
- end
-end
-
-def fun_l13_n43(x)
- if (x < 1)
- fun_l14_n216(x)
- else
- fun_l14_n894(x)
- end
-end
-
-def fun_l13_n44(x)
- if (x < 1)
- fun_l14_n30(x)
- else
- fun_l14_n118(x)
- end
-end
-
-def fun_l13_n45(x)
- if (x < 1)
- fun_l14_n66(x)
- else
- fun_l14_n677(x)
- end
-end
-
-def fun_l13_n46(x)
- if (x < 1)
- fun_l14_n415(x)
- else
- fun_l14_n311(x)
- end
-end
-
-def fun_l13_n47(x)
- if (x < 1)
- fun_l14_n63(x)
- else
- fun_l14_n410(x)
- end
-end
-
-def fun_l13_n48(x)
- if (x < 1)
- fun_l14_n640(x)
- else
- fun_l14_n161(x)
- end
-end
-
-def fun_l13_n49(x)
- if (x < 1)
- fun_l14_n546(x)
- else
- fun_l14_n655(x)
- end
-end
-
-def fun_l13_n50(x)
- if (x < 1)
- fun_l14_n102(x)
- else
- fun_l14_n791(x)
- end
-end
-
-def fun_l13_n51(x)
- if (x < 1)
- fun_l14_n333(x)
- else
- fun_l14_n641(x)
- end
-end
-
-def fun_l13_n52(x)
- if (x < 1)
- fun_l14_n16(x)
- else
- fun_l14_n653(x)
- end
-end
-
-def fun_l13_n53(x)
- if (x < 1)
- fun_l14_n842(x)
- else
- fun_l14_n780(x)
- end
-end
-
-def fun_l13_n54(x)
- if (x < 1)
- fun_l14_n663(x)
- else
- fun_l14_n903(x)
- end
-end
-
-def fun_l13_n55(x)
- if (x < 1)
- fun_l14_n745(x)
- else
- fun_l14_n925(x)
- end
-end
-
-def fun_l13_n56(x)
- if (x < 1)
- fun_l14_n688(x)
- else
- fun_l14_n930(x)
- end
-end
-
-def fun_l13_n57(x)
- if (x < 1)
- fun_l14_n58(x)
- else
- fun_l14_n864(x)
- end
-end
-
-def fun_l13_n58(x)
- if (x < 1)
- fun_l14_n107(x)
- else
- fun_l14_n197(x)
- end
-end
-
-def fun_l13_n59(x)
- if (x < 1)
- fun_l14_n334(x)
- else
- fun_l14_n147(x)
- end
-end
-
-def fun_l13_n60(x)
- if (x < 1)
- fun_l14_n814(x)
- else
- fun_l14_n417(x)
- end
-end
-
-def fun_l13_n61(x)
- if (x < 1)
- fun_l14_n696(x)
- else
- fun_l14_n973(x)
- end
-end
-
-def fun_l13_n62(x)
- if (x < 1)
- fun_l14_n378(x)
- else
- fun_l14_n968(x)
- end
-end
-
-def fun_l13_n63(x)
- if (x < 1)
- fun_l14_n107(x)
- else
- fun_l14_n100(x)
- end
-end
-
-def fun_l13_n64(x)
- if (x < 1)
- fun_l14_n105(x)
- else
- fun_l14_n393(x)
- end
-end
-
-def fun_l13_n65(x)
- if (x < 1)
- fun_l14_n833(x)
- else
- fun_l14_n424(x)
- end
-end
-
-def fun_l13_n66(x)
- if (x < 1)
- fun_l14_n125(x)
- else
- fun_l14_n697(x)
- end
-end
-
-def fun_l13_n67(x)
- if (x < 1)
- fun_l14_n684(x)
- else
- fun_l14_n458(x)
- end
-end
-
-def fun_l13_n68(x)
- if (x < 1)
- fun_l14_n301(x)
- else
- fun_l14_n711(x)
- end
-end
-
-def fun_l13_n69(x)
- if (x < 1)
- fun_l14_n131(x)
- else
- fun_l14_n552(x)
- end
-end
-
-def fun_l13_n70(x)
- if (x < 1)
- fun_l14_n425(x)
- else
- fun_l14_n241(x)
- end
-end
-
-def fun_l13_n71(x)
- if (x < 1)
- fun_l14_n531(x)
- else
- fun_l14_n364(x)
- end
-end
-
-def fun_l13_n72(x)
- if (x < 1)
- fun_l14_n801(x)
- else
- fun_l14_n951(x)
- end
-end
-
-def fun_l13_n73(x)
- if (x < 1)
- fun_l14_n415(x)
- else
- fun_l14_n294(x)
- end
-end
-
-def fun_l13_n74(x)
- if (x < 1)
- fun_l14_n715(x)
- else
- fun_l14_n606(x)
- end
-end
-
-def fun_l13_n75(x)
- if (x < 1)
- fun_l14_n932(x)
- else
- fun_l14_n928(x)
- end
-end
-
-def fun_l13_n76(x)
- if (x < 1)
- fun_l14_n930(x)
- else
- fun_l14_n102(x)
- end
-end
-
-def fun_l13_n77(x)
- if (x < 1)
- fun_l14_n293(x)
- else
- fun_l14_n301(x)
- end
-end
-
-def fun_l13_n78(x)
- if (x < 1)
- fun_l14_n270(x)
- else
- fun_l14_n715(x)
- end
-end
-
-def fun_l13_n79(x)
- if (x < 1)
- fun_l14_n862(x)
- else
- fun_l14_n589(x)
- end
-end
-
-def fun_l13_n80(x)
- if (x < 1)
- fun_l14_n337(x)
- else
- fun_l14_n940(x)
- end
-end
-
-def fun_l13_n81(x)
- if (x < 1)
- fun_l14_n394(x)
- else
- fun_l14_n902(x)
- end
-end
-
-def fun_l13_n82(x)
- if (x < 1)
- fun_l14_n468(x)
- else
- fun_l14_n816(x)
- end
-end
-
-def fun_l13_n83(x)
- if (x < 1)
- fun_l14_n517(x)
- else
- fun_l14_n633(x)
- end
-end
-
-def fun_l13_n84(x)
- if (x < 1)
- fun_l14_n312(x)
- else
- fun_l14_n473(x)
- end
-end
-
-def fun_l13_n85(x)
- if (x < 1)
- fun_l14_n377(x)
- else
- fun_l14_n616(x)
- end
-end
-
-def fun_l13_n86(x)
- if (x < 1)
- fun_l14_n541(x)
- else
- fun_l14_n77(x)
- end
-end
-
-def fun_l13_n87(x)
- if (x < 1)
- fun_l14_n66(x)
- else
- fun_l14_n162(x)
- end
-end
-
-def fun_l13_n88(x)
- if (x < 1)
- fun_l14_n202(x)
- else
- fun_l14_n158(x)
- end
-end
-
-def fun_l13_n89(x)
- if (x < 1)
- fun_l14_n549(x)
- else
- fun_l14_n947(x)
- end
-end
-
-def fun_l13_n90(x)
- if (x < 1)
- fun_l14_n82(x)
- else
- fun_l14_n747(x)
- end
-end
-
-def fun_l13_n91(x)
- if (x < 1)
- fun_l14_n374(x)
- else
- fun_l14_n738(x)
- end
-end
-
-def fun_l13_n92(x)
- if (x < 1)
- fun_l14_n124(x)
- else
- fun_l14_n673(x)
- end
-end
-
-def fun_l13_n93(x)
- if (x < 1)
- fun_l14_n405(x)
- else
- fun_l14_n562(x)
- end
-end
-
-def fun_l13_n94(x)
- if (x < 1)
- fun_l14_n766(x)
- else
- fun_l14_n466(x)
- end
-end
-
-def fun_l13_n95(x)
- if (x < 1)
- fun_l14_n908(x)
- else
- fun_l14_n208(x)
- end
-end
-
-def fun_l13_n96(x)
- if (x < 1)
- fun_l14_n439(x)
- else
- fun_l14_n964(x)
- end
-end
-
-def fun_l13_n97(x)
- if (x < 1)
- fun_l14_n529(x)
- else
- fun_l14_n374(x)
- end
-end
-
-def fun_l13_n98(x)
- if (x < 1)
- fun_l14_n723(x)
- else
- fun_l14_n464(x)
- end
-end
-
-def fun_l13_n99(x)
- if (x < 1)
- fun_l14_n849(x)
- else
- fun_l14_n951(x)
- end
-end
-
-def fun_l13_n100(x)
- if (x < 1)
- fun_l14_n797(x)
- else
- fun_l14_n421(x)
- end
-end
-
-def fun_l13_n101(x)
- if (x < 1)
- fun_l14_n989(x)
- else
- fun_l14_n392(x)
- end
-end
-
-def fun_l13_n102(x)
- if (x < 1)
- fun_l14_n8(x)
- else
- fun_l14_n913(x)
- end
-end
-
-def fun_l13_n103(x)
- if (x < 1)
- fun_l14_n498(x)
- else
- fun_l14_n248(x)
- end
-end
-
-def fun_l13_n104(x)
- if (x < 1)
- fun_l14_n989(x)
- else
- fun_l14_n83(x)
- end
-end
-
-def fun_l13_n105(x)
- if (x < 1)
- fun_l14_n943(x)
- else
- fun_l14_n358(x)
- end
-end
-
-def fun_l13_n106(x)
- if (x < 1)
- fun_l14_n252(x)
- else
- fun_l14_n626(x)
- end
-end
-
-def fun_l13_n107(x)
- if (x < 1)
- fun_l14_n495(x)
- else
- fun_l14_n627(x)
- end
-end
-
-def fun_l13_n108(x)
- if (x < 1)
- fun_l14_n286(x)
- else
- fun_l14_n500(x)
- end
-end
-
-def fun_l13_n109(x)
- if (x < 1)
- fun_l14_n927(x)
- else
- fun_l14_n627(x)
- end
-end
-
-def fun_l13_n110(x)
- if (x < 1)
- fun_l14_n103(x)
- else
- fun_l14_n319(x)
- end
-end
-
-def fun_l13_n111(x)
- if (x < 1)
- fun_l14_n730(x)
- else
- fun_l14_n960(x)
- end
-end
-
-def fun_l13_n112(x)
- if (x < 1)
- fun_l14_n188(x)
- else
- fun_l14_n145(x)
- end
-end
-
-def fun_l13_n113(x)
- if (x < 1)
- fun_l14_n361(x)
- else
- fun_l14_n707(x)
- end
-end
-
-def fun_l13_n114(x)
- if (x < 1)
- fun_l14_n629(x)
- else
- fun_l14_n536(x)
- end
-end
-
-def fun_l13_n115(x)
- if (x < 1)
- fun_l14_n276(x)
- else
- fun_l14_n244(x)
- end
-end
-
-def fun_l13_n116(x)
- if (x < 1)
- fun_l14_n512(x)
- else
- fun_l14_n578(x)
- end
-end
-
-def fun_l13_n117(x)
- if (x < 1)
- fun_l14_n448(x)
- else
- fun_l14_n437(x)
- end
-end
-
-def fun_l13_n118(x)
- if (x < 1)
- fun_l14_n855(x)
- else
- fun_l14_n617(x)
- end
-end
-
-def fun_l13_n119(x)
- if (x < 1)
- fun_l14_n467(x)
- else
- fun_l14_n594(x)
- end
-end
-
-def fun_l13_n120(x)
- if (x < 1)
- fun_l14_n54(x)
- else
- fun_l14_n765(x)
- end
-end
-
-def fun_l13_n121(x)
- if (x < 1)
- fun_l14_n700(x)
- else
- fun_l14_n189(x)
- end
-end
-
-def fun_l13_n122(x)
- if (x < 1)
- fun_l14_n731(x)
- else
- fun_l14_n469(x)
- end
-end
-
-def fun_l13_n123(x)
- if (x < 1)
- fun_l14_n6(x)
- else
- fun_l14_n451(x)
- end
-end
-
-def fun_l13_n124(x)
- if (x < 1)
- fun_l14_n402(x)
- else
- fun_l14_n445(x)
- end
-end
-
-def fun_l13_n125(x)
- if (x < 1)
- fun_l14_n412(x)
- else
- fun_l14_n551(x)
- end
-end
-
-def fun_l13_n126(x)
- if (x < 1)
- fun_l14_n295(x)
- else
- fun_l14_n180(x)
- end
-end
-
-def fun_l13_n127(x)
- if (x < 1)
- fun_l14_n873(x)
- else
- fun_l14_n209(x)
- end
-end
-
-def fun_l13_n128(x)
- if (x < 1)
- fun_l14_n181(x)
- else
- fun_l14_n198(x)
- end
-end
-
-def fun_l13_n129(x)
- if (x < 1)
- fun_l14_n817(x)
- else
- fun_l14_n894(x)
- end
-end
-
-def fun_l13_n130(x)
- if (x < 1)
- fun_l14_n306(x)
- else
- fun_l14_n429(x)
- end
-end
-
-def fun_l13_n131(x)
- if (x < 1)
- fun_l14_n573(x)
- else
- fun_l14_n120(x)
- end
-end
-
-def fun_l13_n132(x)
- if (x < 1)
- fun_l14_n433(x)
- else
- fun_l14_n668(x)
- end
-end
-
-def fun_l13_n133(x)
- if (x < 1)
- fun_l14_n653(x)
- else
- fun_l14_n934(x)
- end
-end
-
-def fun_l13_n134(x)
- if (x < 1)
- fun_l14_n280(x)
- else
- fun_l14_n533(x)
- end
-end
-
-def fun_l13_n135(x)
- if (x < 1)
- fun_l14_n471(x)
- else
- fun_l14_n612(x)
- end
-end
-
-def fun_l13_n136(x)
- if (x < 1)
- fun_l14_n55(x)
- else
- fun_l14_n684(x)
- end
-end
-
-def fun_l13_n137(x)
- if (x < 1)
- fun_l14_n458(x)
- else
- fun_l14_n107(x)
- end
-end
-
-def fun_l13_n138(x)
- if (x < 1)
- fun_l14_n415(x)
- else
- fun_l14_n189(x)
- end
-end
-
-def fun_l13_n139(x)
- if (x < 1)
- fun_l14_n877(x)
- else
- fun_l14_n862(x)
- end
-end
-
-def fun_l13_n140(x)
- if (x < 1)
- fun_l14_n471(x)
- else
- fun_l14_n533(x)
- end
-end
-
-def fun_l13_n141(x)
- if (x < 1)
- fun_l14_n817(x)
- else
- fun_l14_n121(x)
- end
-end
-
-def fun_l13_n142(x)
- if (x < 1)
- fun_l14_n523(x)
- else
- fun_l14_n894(x)
- end
-end
-
-def fun_l13_n143(x)
- if (x < 1)
- fun_l14_n893(x)
- else
- fun_l14_n187(x)
- end
-end
-
-def fun_l13_n144(x)
- if (x < 1)
- fun_l14_n921(x)
- else
- fun_l14_n253(x)
- end
-end
-
-def fun_l13_n145(x)
- if (x < 1)
- fun_l14_n0(x)
- else
- fun_l14_n608(x)
- end
-end
-
-def fun_l13_n146(x)
- if (x < 1)
- fun_l14_n83(x)
- else
- fun_l14_n450(x)
- end
-end
-
-def fun_l13_n147(x)
- if (x < 1)
- fun_l14_n689(x)
- else
- fun_l14_n19(x)
- end
-end
-
-def fun_l13_n148(x)
- if (x < 1)
- fun_l14_n922(x)
- else
- fun_l14_n417(x)
- end
-end
-
-def fun_l13_n149(x)
- if (x < 1)
- fun_l14_n449(x)
- else
- fun_l14_n273(x)
- end
-end
-
-def fun_l13_n150(x)
- if (x < 1)
- fun_l14_n601(x)
- else
- fun_l14_n442(x)
- end
-end
-
-def fun_l13_n151(x)
- if (x < 1)
- fun_l14_n96(x)
- else
- fun_l14_n552(x)
- end
-end
-
-def fun_l13_n152(x)
- if (x < 1)
- fun_l14_n667(x)
- else
- fun_l14_n273(x)
- end
-end
-
-def fun_l13_n153(x)
- if (x < 1)
- fun_l14_n445(x)
- else
- fun_l14_n81(x)
- end
-end
-
-def fun_l13_n154(x)
- if (x < 1)
- fun_l14_n906(x)
- else
- fun_l14_n960(x)
- end
-end
-
-def fun_l13_n155(x)
- if (x < 1)
- fun_l14_n781(x)
- else
- fun_l14_n763(x)
- end
-end
-
-def fun_l13_n156(x)
- if (x < 1)
- fun_l14_n201(x)
- else
- fun_l14_n886(x)
- end
-end
-
-def fun_l13_n157(x)
- if (x < 1)
- fun_l14_n926(x)
- else
- fun_l14_n852(x)
- end
-end
-
-def fun_l13_n158(x)
- if (x < 1)
- fun_l14_n114(x)
- else
- fun_l14_n23(x)
- end
-end
-
-def fun_l13_n159(x)
- if (x < 1)
- fun_l14_n967(x)
- else
- fun_l14_n885(x)
- end
-end
-
-def fun_l13_n160(x)
- if (x < 1)
- fun_l14_n563(x)
- else
- fun_l14_n309(x)
- end
-end
-
-def fun_l13_n161(x)
- if (x < 1)
- fun_l14_n26(x)
- else
- fun_l14_n232(x)
- end
-end
-
-def fun_l13_n162(x)
- if (x < 1)
- fun_l14_n212(x)
- else
- fun_l14_n147(x)
- end
-end
-
-def fun_l13_n163(x)
- if (x < 1)
- fun_l14_n841(x)
- else
- fun_l14_n636(x)
- end
-end
-
-def fun_l13_n164(x)
- if (x < 1)
- fun_l14_n405(x)
- else
- fun_l14_n709(x)
- end
-end
-
-def fun_l13_n165(x)
- if (x < 1)
- fun_l14_n803(x)
- else
- fun_l14_n398(x)
- end
-end
-
-def fun_l13_n166(x)
- if (x < 1)
- fun_l14_n112(x)
- else
- fun_l14_n197(x)
- end
-end
-
-def fun_l13_n167(x)
- if (x < 1)
- fun_l14_n414(x)
- else
- fun_l14_n509(x)
- end
-end
-
-def fun_l13_n168(x)
- if (x < 1)
- fun_l14_n585(x)
- else
- fun_l14_n166(x)
- end
-end
-
-def fun_l13_n169(x)
- if (x < 1)
- fun_l14_n653(x)
- else
- fun_l14_n581(x)
- end
-end
-
-def fun_l13_n170(x)
- if (x < 1)
- fun_l14_n291(x)
- else
- fun_l14_n520(x)
- end
-end
-
-def fun_l13_n171(x)
- if (x < 1)
- fun_l14_n920(x)
- else
- fun_l14_n599(x)
- end
-end
-
-def fun_l13_n172(x)
- if (x < 1)
- fun_l14_n125(x)
- else
- fun_l14_n84(x)
- end
-end
-
-def fun_l13_n173(x)
- if (x < 1)
- fun_l14_n635(x)
- else
- fun_l14_n224(x)
- end
-end
-
-def fun_l13_n174(x)
- if (x < 1)
- fun_l14_n23(x)
- else
- fun_l14_n922(x)
- end
-end
-
-def fun_l13_n175(x)
- if (x < 1)
- fun_l14_n736(x)
- else
- fun_l14_n685(x)
- end
-end
-
-def fun_l13_n176(x)
- if (x < 1)
- fun_l14_n235(x)
- else
- fun_l14_n157(x)
- end
-end
-
-def fun_l13_n177(x)
- if (x < 1)
- fun_l14_n284(x)
- else
- fun_l14_n601(x)
- end
-end
-
-def fun_l13_n178(x)
- if (x < 1)
- fun_l14_n785(x)
- else
- fun_l14_n498(x)
- end
-end
-
-def fun_l13_n179(x)
- if (x < 1)
- fun_l14_n416(x)
- else
- fun_l14_n624(x)
- end
-end
-
-def fun_l13_n180(x)
- if (x < 1)
- fun_l14_n747(x)
- else
- fun_l14_n824(x)
- end
-end
-
-def fun_l13_n181(x)
- if (x < 1)
- fun_l14_n658(x)
- else
- fun_l14_n814(x)
- end
-end
-
-def fun_l13_n182(x)
- if (x < 1)
- fun_l14_n723(x)
- else
- fun_l14_n365(x)
- end
-end
-
-def fun_l13_n183(x)
- if (x < 1)
- fun_l14_n772(x)
- else
- fun_l14_n831(x)
- end
-end
-
-def fun_l13_n184(x)
- if (x < 1)
- fun_l14_n560(x)
- else
- fun_l14_n933(x)
- end
-end
-
-def fun_l13_n185(x)
- if (x < 1)
- fun_l14_n550(x)
- else
- fun_l14_n716(x)
- end
-end
-
-def fun_l13_n186(x)
- if (x < 1)
- fun_l14_n72(x)
- else
- fun_l14_n224(x)
- end
-end
-
-def fun_l13_n187(x)
- if (x < 1)
- fun_l14_n910(x)
- else
- fun_l14_n31(x)
- end
-end
-
-def fun_l13_n188(x)
- if (x < 1)
- fun_l14_n792(x)
- else
- fun_l14_n69(x)
- end
-end
-
-def fun_l13_n189(x)
- if (x < 1)
- fun_l14_n42(x)
- else
- fun_l14_n942(x)
- end
-end
-
-def fun_l13_n190(x)
- if (x < 1)
- fun_l14_n520(x)
- else
- fun_l14_n826(x)
- end
-end
-
-def fun_l13_n191(x)
- if (x < 1)
- fun_l14_n723(x)
- else
- fun_l14_n5(x)
- end
-end
-
-def fun_l13_n192(x)
- if (x < 1)
- fun_l14_n448(x)
- else
- fun_l14_n243(x)
- end
-end
-
-def fun_l13_n193(x)
- if (x < 1)
- fun_l14_n722(x)
- else
- fun_l14_n450(x)
- end
-end
-
-def fun_l13_n194(x)
- if (x < 1)
- fun_l14_n31(x)
- else
- fun_l14_n968(x)
- end
-end
-
-def fun_l13_n195(x)
- if (x < 1)
- fun_l14_n381(x)
- else
- fun_l14_n964(x)
- end
-end
-
-def fun_l13_n196(x)
- if (x < 1)
- fun_l14_n797(x)
- else
- fun_l14_n216(x)
- end
-end
-
-def fun_l13_n197(x)
- if (x < 1)
- fun_l14_n351(x)
- else
- fun_l14_n439(x)
- end
-end
-
-def fun_l13_n198(x)
- if (x < 1)
- fun_l14_n983(x)
- else
- fun_l14_n363(x)
- end
-end
-
-def fun_l13_n199(x)
- if (x < 1)
- fun_l14_n939(x)
- else
- fun_l14_n806(x)
- end
-end
-
-def fun_l13_n200(x)
- if (x < 1)
- fun_l14_n710(x)
- else
- fun_l14_n513(x)
- end
-end
-
-def fun_l13_n201(x)
- if (x < 1)
- fun_l14_n431(x)
- else
- fun_l14_n81(x)
- end
-end
-
-def fun_l13_n202(x)
- if (x < 1)
- fun_l14_n41(x)
- else
- fun_l14_n916(x)
- end
-end
-
-def fun_l13_n203(x)
- if (x < 1)
- fun_l14_n368(x)
- else
- fun_l14_n626(x)
- end
-end
-
-def fun_l13_n204(x)
- if (x < 1)
- fun_l14_n505(x)
- else
- fun_l14_n750(x)
- end
-end
-
-def fun_l13_n205(x)
- if (x < 1)
- fun_l14_n263(x)
- else
- fun_l14_n636(x)
- end
-end
-
-def fun_l13_n206(x)
- if (x < 1)
- fun_l14_n589(x)
- else
- fun_l14_n215(x)
- end
-end
-
-def fun_l13_n207(x)
- if (x < 1)
- fun_l14_n435(x)
- else
- fun_l14_n69(x)
- end
-end
-
-def fun_l13_n208(x)
- if (x < 1)
- fun_l14_n114(x)
- else
- fun_l14_n222(x)
- end
-end
-
-def fun_l13_n209(x)
- if (x < 1)
- fun_l14_n784(x)
- else
- fun_l14_n337(x)
- end
-end
-
-def fun_l13_n210(x)
- if (x < 1)
- fun_l14_n434(x)
- else
- fun_l14_n79(x)
- end
-end
-
-def fun_l13_n211(x)
- if (x < 1)
- fun_l14_n152(x)
- else
- fun_l14_n428(x)
- end
-end
-
-def fun_l13_n212(x)
- if (x < 1)
- fun_l14_n24(x)
- else
- fun_l14_n101(x)
- end
-end
-
-def fun_l13_n213(x)
- if (x < 1)
- fun_l14_n880(x)
- else
- fun_l14_n672(x)
- end
-end
-
-def fun_l13_n214(x)
- if (x < 1)
- fun_l14_n824(x)
- else
- fun_l14_n351(x)
- end
-end
-
-def fun_l13_n215(x)
- if (x < 1)
- fun_l14_n657(x)
- else
- fun_l14_n822(x)
- end
-end
-
-def fun_l13_n216(x)
- if (x < 1)
- fun_l14_n603(x)
- else
- fun_l14_n993(x)
- end
-end
-
-def fun_l13_n217(x)
- if (x < 1)
- fun_l14_n593(x)
- else
- fun_l14_n808(x)
- end
-end
-
-def fun_l13_n218(x)
- if (x < 1)
- fun_l14_n30(x)
- else
- fun_l14_n632(x)
- end
-end
-
-def fun_l13_n219(x)
- if (x < 1)
- fun_l14_n175(x)
- else
- fun_l14_n124(x)
- end
-end
-
-def fun_l13_n220(x)
- if (x < 1)
- fun_l14_n878(x)
- else
- fun_l14_n342(x)
- end
-end
-
-def fun_l13_n221(x)
- if (x < 1)
- fun_l14_n857(x)
- else
- fun_l14_n204(x)
- end
-end
-
-def fun_l13_n222(x)
- if (x < 1)
- fun_l14_n29(x)
- else
- fun_l14_n573(x)
- end
-end
-
-def fun_l13_n223(x)
- if (x < 1)
- fun_l14_n329(x)
- else
- fun_l14_n35(x)
- end
-end
-
-def fun_l13_n224(x)
- if (x < 1)
- fun_l14_n31(x)
- else
- fun_l14_n323(x)
- end
-end
-
-def fun_l13_n225(x)
- if (x < 1)
- fun_l14_n921(x)
- else
- fun_l14_n161(x)
- end
-end
-
-def fun_l13_n226(x)
- if (x < 1)
- fun_l14_n599(x)
- else
- fun_l14_n566(x)
- end
-end
-
-def fun_l13_n227(x)
- if (x < 1)
- fun_l14_n994(x)
- else
- fun_l14_n549(x)
- end
-end
-
-def fun_l13_n228(x)
- if (x < 1)
- fun_l14_n989(x)
- else
- fun_l14_n212(x)
- end
-end
-
-def fun_l13_n229(x)
- if (x < 1)
- fun_l14_n22(x)
- else
- fun_l14_n656(x)
- end
-end
-
-def fun_l13_n230(x)
- if (x < 1)
- fun_l14_n232(x)
- else
- fun_l14_n658(x)
- end
-end
-
-def fun_l13_n231(x)
- if (x < 1)
- fun_l14_n522(x)
- else
- fun_l14_n596(x)
- end
-end
-
-def fun_l13_n232(x)
- if (x < 1)
- fun_l14_n296(x)
- else
- fun_l14_n53(x)
- end
-end
-
-def fun_l13_n233(x)
- if (x < 1)
- fun_l14_n958(x)
- else
- fun_l14_n818(x)
- end
-end
-
-def fun_l13_n234(x)
- if (x < 1)
- fun_l14_n267(x)
- else
- fun_l14_n299(x)
- end
-end
-
-def fun_l13_n235(x)
- if (x < 1)
- fun_l14_n776(x)
- else
- fun_l14_n99(x)
- end
-end
-
-def fun_l13_n236(x)
- if (x < 1)
- fun_l14_n204(x)
- else
- fun_l14_n34(x)
- end
-end
-
-def fun_l13_n237(x)
- if (x < 1)
- fun_l14_n704(x)
- else
- fun_l14_n808(x)
- end
-end
-
-def fun_l13_n238(x)
- if (x < 1)
- fun_l14_n82(x)
- else
- fun_l14_n352(x)
- end
-end
-
-def fun_l13_n239(x)
- if (x < 1)
- fun_l14_n382(x)
- else
- fun_l14_n447(x)
- end
-end
-
-def fun_l13_n240(x)
- if (x < 1)
- fun_l14_n200(x)
- else
- fun_l14_n623(x)
- end
-end
-
-def fun_l13_n241(x)
- if (x < 1)
- fun_l14_n563(x)
- else
- fun_l14_n259(x)
- end
-end
-
-def fun_l13_n242(x)
- if (x < 1)
- fun_l14_n126(x)
- else
- fun_l14_n337(x)
- end
-end
-
-def fun_l13_n243(x)
- if (x < 1)
- fun_l14_n287(x)
- else
- fun_l14_n441(x)
- end
-end
-
-def fun_l13_n244(x)
- if (x < 1)
- fun_l14_n271(x)
- else
- fun_l14_n961(x)
- end
-end
-
-def fun_l13_n245(x)
- if (x < 1)
- fun_l14_n677(x)
- else
- fun_l14_n310(x)
- end
-end
-
-def fun_l13_n246(x)
- if (x < 1)
- fun_l14_n504(x)
- else
- fun_l14_n504(x)
- end
-end
-
-def fun_l13_n247(x)
- if (x < 1)
- fun_l14_n61(x)
- else
- fun_l14_n560(x)
- end
-end
-
-def fun_l13_n248(x)
- if (x < 1)
- fun_l14_n813(x)
- else
- fun_l14_n337(x)
- end
-end
-
-def fun_l13_n249(x)
- if (x < 1)
- fun_l14_n89(x)
- else
- fun_l14_n733(x)
- end
-end
-
-def fun_l13_n250(x)
- if (x < 1)
- fun_l14_n203(x)
- else
- fun_l14_n342(x)
- end
-end
-
-def fun_l13_n251(x)
- if (x < 1)
- fun_l14_n605(x)
- else
- fun_l14_n767(x)
- end
-end
-
-def fun_l13_n252(x)
- if (x < 1)
- fun_l14_n35(x)
- else
- fun_l14_n338(x)
- end
-end
-
-def fun_l13_n253(x)
- if (x < 1)
- fun_l14_n894(x)
- else
- fun_l14_n905(x)
- end
-end
-
-def fun_l13_n254(x)
- if (x < 1)
- fun_l14_n516(x)
- else
- fun_l14_n832(x)
- end
-end
-
-def fun_l13_n255(x)
- if (x < 1)
- fun_l14_n106(x)
- else
- fun_l14_n672(x)
- end
-end
-
-def fun_l13_n256(x)
- if (x < 1)
- fun_l14_n978(x)
- else
- fun_l14_n940(x)
- end
-end
-
-def fun_l13_n257(x)
- if (x < 1)
- fun_l14_n808(x)
- else
- fun_l14_n906(x)
- end
-end
-
-def fun_l13_n258(x)
- if (x < 1)
- fun_l14_n435(x)
- else
- fun_l14_n55(x)
- end
-end
-
-def fun_l13_n259(x)
- if (x < 1)
- fun_l14_n981(x)
- else
- fun_l14_n550(x)
- end
-end
-
-def fun_l13_n260(x)
- if (x < 1)
- fun_l14_n689(x)
- else
- fun_l14_n533(x)
- end
-end
-
-def fun_l13_n261(x)
- if (x < 1)
- fun_l14_n995(x)
- else
- fun_l14_n174(x)
- end
-end
-
-def fun_l13_n262(x)
- if (x < 1)
- fun_l14_n161(x)
- else
- fun_l14_n357(x)
- end
-end
-
-def fun_l13_n263(x)
- if (x < 1)
- fun_l14_n248(x)
- else
- fun_l14_n509(x)
- end
-end
-
-def fun_l13_n264(x)
- if (x < 1)
- fun_l14_n521(x)
- else
- fun_l14_n41(x)
- end
-end
-
-def fun_l13_n265(x)
- if (x < 1)
- fun_l14_n771(x)
- else
- fun_l14_n387(x)
- end
-end
-
-def fun_l13_n266(x)
- if (x < 1)
- fun_l14_n149(x)
- else
- fun_l14_n814(x)
- end
-end
-
-def fun_l13_n267(x)
- if (x < 1)
- fun_l14_n958(x)
- else
- fun_l14_n172(x)
- end
-end
-
-def fun_l13_n268(x)
- if (x < 1)
- fun_l14_n167(x)
- else
- fun_l14_n889(x)
- end
-end
-
-def fun_l13_n269(x)
- if (x < 1)
- fun_l14_n321(x)
- else
- fun_l14_n152(x)
- end
-end
-
-def fun_l13_n270(x)
- if (x < 1)
- fun_l14_n851(x)
- else
- fun_l14_n793(x)
- end
-end
-
-def fun_l13_n271(x)
- if (x < 1)
- fun_l14_n306(x)
- else
- fun_l14_n843(x)
- end
-end
-
-def fun_l13_n272(x)
- if (x < 1)
- fun_l14_n499(x)
- else
- fun_l14_n118(x)
- end
-end
-
-def fun_l13_n273(x)
- if (x < 1)
- fun_l14_n958(x)
- else
- fun_l14_n597(x)
- end
-end
-
-def fun_l13_n274(x)
- if (x < 1)
- fun_l14_n884(x)
- else
- fun_l14_n23(x)
- end
-end
-
-def fun_l13_n275(x)
- if (x < 1)
- fun_l14_n203(x)
- else
- fun_l14_n796(x)
- end
-end
-
-def fun_l13_n276(x)
- if (x < 1)
- fun_l14_n944(x)
- else
- fun_l14_n239(x)
- end
-end
-
-def fun_l13_n277(x)
- if (x < 1)
- fun_l14_n511(x)
- else
- fun_l14_n464(x)
- end
-end
-
-def fun_l13_n278(x)
- if (x < 1)
- fun_l14_n906(x)
- else
- fun_l14_n713(x)
- end
-end
-
-def fun_l13_n279(x)
- if (x < 1)
- fun_l14_n872(x)
- else
- fun_l14_n77(x)
- end
-end
-
-def fun_l13_n280(x)
- if (x < 1)
- fun_l14_n888(x)
- else
- fun_l14_n117(x)
- end
-end
-
-def fun_l13_n281(x)
- if (x < 1)
- fun_l14_n298(x)
- else
- fun_l14_n695(x)
- end
-end
-
-def fun_l13_n282(x)
- if (x < 1)
- fun_l14_n740(x)
- else
- fun_l14_n668(x)
- end
-end
-
-def fun_l13_n283(x)
- if (x < 1)
- fun_l14_n438(x)
- else
- fun_l14_n322(x)
- end
-end
-
-def fun_l13_n284(x)
- if (x < 1)
- fun_l14_n39(x)
- else
- fun_l14_n39(x)
- end
-end
-
-def fun_l13_n285(x)
- if (x < 1)
- fun_l14_n271(x)
- else
- fun_l14_n984(x)
- end
-end
-
-def fun_l13_n286(x)
- if (x < 1)
- fun_l14_n278(x)
- else
- fun_l14_n453(x)
- end
-end
-
-def fun_l13_n287(x)
- if (x < 1)
- fun_l14_n303(x)
- else
- fun_l14_n812(x)
- end
-end
-
-def fun_l13_n288(x)
- if (x < 1)
- fun_l14_n891(x)
- else
- fun_l14_n843(x)
- end
-end
-
-def fun_l13_n289(x)
- if (x < 1)
- fun_l14_n672(x)
- else
- fun_l14_n543(x)
- end
-end
-
-def fun_l13_n290(x)
- if (x < 1)
- fun_l14_n115(x)
- else
- fun_l14_n33(x)
- end
-end
-
-def fun_l13_n291(x)
- if (x < 1)
- fun_l14_n467(x)
- else
- fun_l14_n427(x)
- end
-end
-
-def fun_l13_n292(x)
- if (x < 1)
- fun_l14_n528(x)
- else
- fun_l14_n51(x)
- end
-end
-
-def fun_l13_n293(x)
- if (x < 1)
- fun_l14_n50(x)
- else
- fun_l14_n917(x)
- end
-end
-
-def fun_l13_n294(x)
- if (x < 1)
- fun_l14_n245(x)
- else
- fun_l14_n289(x)
- end
-end
-
-def fun_l13_n295(x)
- if (x < 1)
- fun_l14_n108(x)
- else
- fun_l14_n772(x)
- end
-end
-
-def fun_l13_n296(x)
- if (x < 1)
- fun_l14_n451(x)
- else
- fun_l14_n127(x)
- end
-end
-
-def fun_l13_n297(x)
- if (x < 1)
- fun_l14_n374(x)
- else
- fun_l14_n20(x)
- end
-end
-
-def fun_l13_n298(x)
- if (x < 1)
- fun_l14_n588(x)
- else
- fun_l14_n95(x)
- end
-end
-
-def fun_l13_n299(x)
- if (x < 1)
- fun_l14_n33(x)
- else
- fun_l14_n146(x)
- end
-end
-
-def fun_l13_n300(x)
- if (x < 1)
- fun_l14_n812(x)
- else
- fun_l14_n373(x)
- end
-end
-
-def fun_l13_n301(x)
- if (x < 1)
- fun_l14_n39(x)
- else
- fun_l14_n228(x)
- end
-end
-
-def fun_l13_n302(x)
- if (x < 1)
- fun_l14_n992(x)
- else
- fun_l14_n578(x)
- end
-end
-
-def fun_l13_n303(x)
- if (x < 1)
- fun_l14_n106(x)
- else
- fun_l14_n413(x)
- end
-end
-
-def fun_l13_n304(x)
- if (x < 1)
- fun_l14_n463(x)
- else
- fun_l14_n884(x)
- end
-end
-
-def fun_l13_n305(x)
- if (x < 1)
- fun_l14_n754(x)
- else
- fun_l14_n114(x)
- end
-end
-
-def fun_l13_n306(x)
- if (x < 1)
- fun_l14_n960(x)
- else
- fun_l14_n596(x)
- end
-end
-
-def fun_l13_n307(x)
- if (x < 1)
- fun_l14_n858(x)
- else
- fun_l14_n488(x)
- end
-end
-
-def fun_l13_n308(x)
- if (x < 1)
- fun_l14_n968(x)
- else
- fun_l14_n507(x)
- end
-end
-
-def fun_l13_n309(x)
- if (x < 1)
- fun_l14_n956(x)
- else
- fun_l14_n125(x)
- end
-end
-
-def fun_l13_n310(x)
- if (x < 1)
- fun_l14_n190(x)
- else
- fun_l14_n817(x)
- end
-end
-
-def fun_l13_n311(x)
- if (x < 1)
- fun_l14_n574(x)
- else
- fun_l14_n447(x)
- end
-end
-
-def fun_l13_n312(x)
- if (x < 1)
- fun_l14_n403(x)
- else
- fun_l14_n591(x)
- end
-end
-
-def fun_l13_n313(x)
- if (x < 1)
- fun_l14_n499(x)
- else
- fun_l14_n458(x)
- end
-end
-
-def fun_l13_n314(x)
- if (x < 1)
- fun_l14_n994(x)
- else
- fun_l14_n77(x)
- end
-end
-
-def fun_l13_n315(x)
- if (x < 1)
- fun_l14_n421(x)
- else
- fun_l14_n810(x)
- end
-end
-
-def fun_l13_n316(x)
- if (x < 1)
- fun_l14_n304(x)
- else
- fun_l14_n785(x)
- end
-end
-
-def fun_l13_n317(x)
- if (x < 1)
- fun_l14_n624(x)
- else
- fun_l14_n399(x)
- end
-end
-
-def fun_l13_n318(x)
- if (x < 1)
- fun_l14_n882(x)
- else
- fun_l14_n3(x)
- end
-end
-
-def fun_l13_n319(x)
- if (x < 1)
- fun_l14_n267(x)
- else
- fun_l14_n955(x)
- end
-end
-
-def fun_l13_n320(x)
- if (x < 1)
- fun_l14_n690(x)
- else
- fun_l14_n281(x)
- end
-end
-
-def fun_l13_n321(x)
- if (x < 1)
- fun_l14_n453(x)
- else
- fun_l14_n969(x)
- end
-end
-
-def fun_l13_n322(x)
- if (x < 1)
- fun_l14_n297(x)
- else
- fun_l14_n50(x)
- end
-end
-
-def fun_l13_n323(x)
- if (x < 1)
- fun_l14_n342(x)
- else
- fun_l14_n618(x)
- end
-end
-
-def fun_l13_n324(x)
- if (x < 1)
- fun_l14_n74(x)
- else
- fun_l14_n638(x)
- end
-end
-
-def fun_l13_n325(x)
- if (x < 1)
- fun_l14_n218(x)
- else
- fun_l14_n169(x)
- end
-end
-
-def fun_l13_n326(x)
- if (x < 1)
- fun_l14_n128(x)
- else
- fun_l14_n504(x)
- end
-end
-
-def fun_l13_n327(x)
- if (x < 1)
- fun_l14_n612(x)
- else
- fun_l14_n62(x)
- end
-end
-
-def fun_l13_n328(x)
- if (x < 1)
- fun_l14_n83(x)
- else
- fun_l14_n67(x)
- end
-end
-
-def fun_l13_n329(x)
- if (x < 1)
- fun_l14_n515(x)
- else
- fun_l14_n15(x)
- end
-end
-
-def fun_l13_n330(x)
- if (x < 1)
- fun_l14_n448(x)
- else
- fun_l14_n951(x)
- end
-end
-
-def fun_l13_n331(x)
- if (x < 1)
- fun_l14_n804(x)
- else
- fun_l14_n315(x)
- end
-end
-
-def fun_l13_n332(x)
- if (x < 1)
- fun_l14_n522(x)
- else
- fun_l14_n761(x)
- end
-end
-
-def fun_l13_n333(x)
- if (x < 1)
- fun_l14_n421(x)
- else
- fun_l14_n542(x)
- end
-end
-
-def fun_l13_n334(x)
- if (x < 1)
- fun_l14_n952(x)
- else
- fun_l14_n390(x)
- end
-end
-
-def fun_l13_n335(x)
- if (x < 1)
- fun_l14_n324(x)
- else
- fun_l14_n60(x)
- end
-end
-
-def fun_l13_n336(x)
- if (x < 1)
- fun_l14_n887(x)
- else
- fun_l14_n474(x)
- end
-end
-
-def fun_l13_n337(x)
- if (x < 1)
- fun_l14_n355(x)
- else
- fun_l14_n840(x)
- end
-end
-
-def fun_l13_n338(x)
- if (x < 1)
- fun_l14_n21(x)
- else
- fun_l14_n133(x)
- end
-end
-
-def fun_l13_n339(x)
- if (x < 1)
- fun_l14_n12(x)
- else
- fun_l14_n30(x)
- end
-end
-
-def fun_l13_n340(x)
- if (x < 1)
- fun_l14_n678(x)
- else
- fun_l14_n583(x)
- end
-end
-
-def fun_l13_n341(x)
- if (x < 1)
- fun_l14_n289(x)
- else
- fun_l14_n490(x)
- end
-end
-
-def fun_l13_n342(x)
- if (x < 1)
- fun_l14_n232(x)
- else
- fun_l14_n288(x)
- end
-end
-
-def fun_l13_n343(x)
- if (x < 1)
- fun_l14_n744(x)
- else
- fun_l14_n963(x)
- end
-end
-
-def fun_l13_n344(x)
- if (x < 1)
- fun_l14_n651(x)
- else
- fun_l14_n377(x)
- end
-end
-
-def fun_l13_n345(x)
- if (x < 1)
- fun_l14_n13(x)
- else
- fun_l14_n749(x)
- end
-end
-
-def fun_l13_n346(x)
- if (x < 1)
- fun_l14_n789(x)
- else
- fun_l14_n621(x)
- end
-end
-
-def fun_l13_n347(x)
- if (x < 1)
- fun_l14_n346(x)
- else
- fun_l14_n663(x)
- end
-end
-
-def fun_l13_n348(x)
- if (x < 1)
- fun_l14_n252(x)
- else
- fun_l14_n202(x)
- end
-end
-
-def fun_l13_n349(x)
- if (x < 1)
- fun_l14_n919(x)
- else
- fun_l14_n997(x)
- end
-end
-
-def fun_l13_n350(x)
- if (x < 1)
- fun_l14_n472(x)
- else
- fun_l14_n900(x)
- end
-end
-
-def fun_l13_n351(x)
- if (x < 1)
- fun_l14_n954(x)
- else
- fun_l14_n606(x)
- end
-end
-
-def fun_l13_n352(x)
- if (x < 1)
- fun_l14_n227(x)
- else
- fun_l14_n344(x)
- end
-end
-
-def fun_l13_n353(x)
- if (x < 1)
- fun_l14_n110(x)
- else
- fun_l14_n266(x)
- end
-end
-
-def fun_l13_n354(x)
- if (x < 1)
- fun_l14_n840(x)
- else
- fun_l14_n905(x)
- end
-end
-
-def fun_l13_n355(x)
- if (x < 1)
- fun_l14_n950(x)
- else
- fun_l14_n307(x)
- end
-end
-
-def fun_l13_n356(x)
- if (x < 1)
- fun_l14_n572(x)
- else
- fun_l14_n480(x)
- end
-end
-
-def fun_l13_n357(x)
- if (x < 1)
- fun_l14_n122(x)
- else
- fun_l14_n408(x)
- end
-end
-
-def fun_l13_n358(x)
- if (x < 1)
- fun_l14_n105(x)
- else
- fun_l14_n173(x)
- end
-end
-
-def fun_l13_n359(x)
- if (x < 1)
- fun_l14_n358(x)
- else
- fun_l14_n336(x)
- end
-end
-
-def fun_l13_n360(x)
- if (x < 1)
- fun_l14_n457(x)
- else
- fun_l14_n434(x)
- end
-end
-
-def fun_l13_n361(x)
- if (x < 1)
- fun_l14_n679(x)
- else
- fun_l14_n771(x)
- end
-end
-
-def fun_l13_n362(x)
- if (x < 1)
- fun_l14_n419(x)
- else
- fun_l14_n909(x)
- end
-end
-
-def fun_l13_n363(x)
- if (x < 1)
- fun_l14_n672(x)
- else
- fun_l14_n132(x)
- end
-end
-
-def fun_l13_n364(x)
- if (x < 1)
- fun_l14_n947(x)
- else
- fun_l14_n328(x)
- end
-end
-
-def fun_l13_n365(x)
- if (x < 1)
- fun_l14_n959(x)
- else
- fun_l14_n122(x)
- end
-end
-
-def fun_l13_n366(x)
- if (x < 1)
- fun_l14_n534(x)
- else
- fun_l14_n611(x)
- end
-end
-
-def fun_l13_n367(x)
- if (x < 1)
- fun_l14_n349(x)
- else
- fun_l14_n149(x)
- end
-end
-
-def fun_l13_n368(x)
- if (x < 1)
- fun_l14_n94(x)
- else
- fun_l14_n870(x)
- end
-end
-
-def fun_l13_n369(x)
- if (x < 1)
- fun_l14_n774(x)
- else
- fun_l14_n696(x)
- end
-end
-
-def fun_l13_n370(x)
- if (x < 1)
- fun_l14_n311(x)
- else
- fun_l14_n479(x)
- end
-end
-
-def fun_l13_n371(x)
- if (x < 1)
- fun_l14_n650(x)
- else
- fun_l14_n66(x)
- end
-end
-
-def fun_l13_n372(x)
- if (x < 1)
- fun_l14_n825(x)
- else
- fun_l14_n910(x)
- end
-end
-
-def fun_l13_n373(x)
- if (x < 1)
- fun_l14_n454(x)
- else
- fun_l14_n492(x)
- end
-end
-
-def fun_l13_n374(x)
- if (x < 1)
- fun_l14_n785(x)
- else
- fun_l14_n352(x)
- end
-end
-
-def fun_l13_n375(x)
- if (x < 1)
- fun_l14_n124(x)
- else
- fun_l14_n664(x)
- end
-end
-
-def fun_l13_n376(x)
- if (x < 1)
- fun_l14_n427(x)
- else
- fun_l14_n615(x)
- end
-end
-
-def fun_l13_n377(x)
- if (x < 1)
- fun_l14_n926(x)
- else
- fun_l14_n307(x)
- end
-end
-
-def fun_l13_n378(x)
- if (x < 1)
- fun_l14_n575(x)
- else
- fun_l14_n561(x)
- end
-end
-
-def fun_l13_n379(x)
- if (x < 1)
- fun_l14_n497(x)
- else
- fun_l14_n690(x)
- end
-end
-
-def fun_l13_n380(x)
- if (x < 1)
- fun_l14_n350(x)
- else
- fun_l14_n641(x)
- end
-end
-
-def fun_l13_n381(x)
- if (x < 1)
- fun_l14_n292(x)
- else
- fun_l14_n739(x)
- end
-end
-
-def fun_l13_n382(x)
- if (x < 1)
- fun_l14_n302(x)
- else
- fun_l14_n583(x)
- end
-end
-
-def fun_l13_n383(x)
- if (x < 1)
- fun_l14_n36(x)
- else
- fun_l14_n603(x)
- end
-end
-
-def fun_l13_n384(x)
- if (x < 1)
- fun_l14_n953(x)
- else
- fun_l14_n394(x)
- end
-end
-
-def fun_l13_n385(x)
- if (x < 1)
- fun_l14_n107(x)
- else
- fun_l14_n149(x)
- end
-end
-
-def fun_l13_n386(x)
- if (x < 1)
- fun_l14_n77(x)
- else
- fun_l14_n880(x)
- end
-end
-
-def fun_l13_n387(x)
- if (x < 1)
- fun_l14_n670(x)
- else
- fun_l14_n649(x)
- end
-end
-
-def fun_l13_n388(x)
- if (x < 1)
- fun_l14_n277(x)
- else
- fun_l14_n922(x)
- end
-end
-
-def fun_l13_n389(x)
- if (x < 1)
- fun_l14_n981(x)
- else
- fun_l14_n427(x)
- end
-end
-
-def fun_l13_n390(x)
- if (x < 1)
- fun_l14_n411(x)
- else
- fun_l14_n804(x)
- end
-end
-
-def fun_l13_n391(x)
- if (x < 1)
- fun_l14_n52(x)
- else
- fun_l14_n770(x)
- end
-end
-
-def fun_l13_n392(x)
- if (x < 1)
- fun_l14_n592(x)
- else
- fun_l14_n672(x)
- end
-end
-
-def fun_l13_n393(x)
- if (x < 1)
- fun_l14_n274(x)
- else
- fun_l14_n778(x)
- end
-end
-
-def fun_l13_n394(x)
- if (x < 1)
- fun_l14_n708(x)
- else
- fun_l14_n262(x)
- end
-end
-
-def fun_l13_n395(x)
- if (x < 1)
- fun_l14_n449(x)
- else
- fun_l14_n273(x)
- end
-end
-
-def fun_l13_n396(x)
- if (x < 1)
- fun_l14_n567(x)
- else
- fun_l14_n148(x)
- end
-end
-
-def fun_l13_n397(x)
- if (x < 1)
- fun_l14_n127(x)
- else
- fun_l14_n309(x)
- end
-end
-
-def fun_l13_n398(x)
- if (x < 1)
- fun_l14_n150(x)
- else
- fun_l14_n540(x)
- end
-end
-
-def fun_l13_n399(x)
- if (x < 1)
- fun_l14_n791(x)
- else
- fun_l14_n517(x)
- end
-end
-
-def fun_l13_n400(x)
- if (x < 1)
- fun_l14_n152(x)
- else
- fun_l14_n319(x)
- end
-end
-
-def fun_l13_n401(x)
- if (x < 1)
- fun_l14_n911(x)
- else
- fun_l14_n544(x)
- end
-end
-
-def fun_l13_n402(x)
- if (x < 1)
- fun_l14_n915(x)
- else
- fun_l14_n208(x)
- end
-end
-
-def fun_l13_n403(x)
- if (x < 1)
- fun_l14_n452(x)
- else
- fun_l14_n62(x)
- end
-end
-
-def fun_l13_n404(x)
- if (x < 1)
- fun_l14_n823(x)
- else
- fun_l14_n913(x)
- end
-end
-
-def fun_l13_n405(x)
- if (x < 1)
- fun_l14_n808(x)
- else
- fun_l14_n49(x)
- end
-end
-
-def fun_l13_n406(x)
- if (x < 1)
- fun_l14_n498(x)
- else
- fun_l14_n470(x)
- end
-end
-
-def fun_l13_n407(x)
- if (x < 1)
- fun_l14_n314(x)
- else
- fun_l14_n248(x)
- end
-end
-
-def fun_l13_n408(x)
- if (x < 1)
- fun_l14_n61(x)
- else
- fun_l14_n190(x)
- end
-end
-
-def fun_l13_n409(x)
- if (x < 1)
- fun_l14_n126(x)
- else
- fun_l14_n505(x)
- end
-end
-
-def fun_l13_n410(x)
- if (x < 1)
- fun_l14_n646(x)
- else
- fun_l14_n319(x)
- end
-end
-
-def fun_l13_n411(x)
- if (x < 1)
- fun_l14_n741(x)
- else
- fun_l14_n979(x)
- end
-end
-
-def fun_l13_n412(x)
- if (x < 1)
- fun_l14_n840(x)
- else
- fun_l14_n211(x)
- end
-end
-
-def fun_l13_n413(x)
- if (x < 1)
- fun_l14_n217(x)
- else
- fun_l14_n98(x)
- end
-end
-
-def fun_l13_n414(x)
- if (x < 1)
- fun_l14_n398(x)
- else
- fun_l14_n701(x)
- end
-end
-
-def fun_l13_n415(x)
- if (x < 1)
- fun_l14_n470(x)
- else
- fun_l14_n394(x)
- end
-end
-
-def fun_l13_n416(x)
- if (x < 1)
- fun_l14_n113(x)
- else
- fun_l14_n792(x)
- end
-end
-
-def fun_l13_n417(x)
- if (x < 1)
- fun_l14_n969(x)
- else
- fun_l14_n99(x)
- end
-end
-
-def fun_l13_n418(x)
- if (x < 1)
- fun_l14_n54(x)
- else
- fun_l14_n800(x)
- end
-end
-
-def fun_l13_n419(x)
- if (x < 1)
- fun_l14_n763(x)
- else
- fun_l14_n510(x)
- end
-end
-
-def fun_l13_n420(x)
- if (x < 1)
- fun_l14_n660(x)
- else
- fun_l14_n904(x)
- end
-end
-
-def fun_l13_n421(x)
- if (x < 1)
- fun_l14_n345(x)
- else
- fun_l14_n200(x)
- end
-end
-
-def fun_l13_n422(x)
- if (x < 1)
- fun_l14_n831(x)
- else
- fun_l14_n35(x)
- end
-end
-
-def fun_l13_n423(x)
- if (x < 1)
- fun_l14_n644(x)
- else
- fun_l14_n963(x)
- end
-end
-
-def fun_l13_n424(x)
- if (x < 1)
- fun_l14_n0(x)
- else
- fun_l14_n625(x)
- end
-end
-
-def fun_l13_n425(x)
- if (x < 1)
- fun_l14_n186(x)
- else
- fun_l14_n409(x)
- end
-end
-
-def fun_l13_n426(x)
- if (x < 1)
- fun_l14_n869(x)
- else
- fun_l14_n852(x)
- end
-end
-
-def fun_l13_n427(x)
- if (x < 1)
- fun_l14_n322(x)
- else
- fun_l14_n160(x)
- end
-end
-
-def fun_l13_n428(x)
- if (x < 1)
- fun_l14_n974(x)
- else
- fun_l14_n139(x)
- end
-end
-
-def fun_l13_n429(x)
- if (x < 1)
- fun_l14_n570(x)
- else
- fun_l14_n10(x)
- end
-end
-
-def fun_l13_n430(x)
- if (x < 1)
- fun_l14_n199(x)
- else
- fun_l14_n829(x)
- end
-end
-
-def fun_l13_n431(x)
- if (x < 1)
- fun_l14_n700(x)
- else
- fun_l14_n362(x)
- end
-end
-
-def fun_l13_n432(x)
- if (x < 1)
- fun_l14_n925(x)
- else
- fun_l14_n365(x)
- end
-end
-
-def fun_l13_n433(x)
- if (x < 1)
- fun_l14_n837(x)
- else
- fun_l14_n119(x)
- end
-end
-
-def fun_l13_n434(x)
- if (x < 1)
- fun_l14_n355(x)
- else
- fun_l14_n374(x)
- end
-end
-
-def fun_l13_n435(x)
- if (x < 1)
- fun_l14_n126(x)
- else
- fun_l14_n568(x)
- end
-end
-
-def fun_l13_n436(x)
- if (x < 1)
- fun_l14_n468(x)
- else
- fun_l14_n299(x)
- end
-end
-
-def fun_l13_n437(x)
- if (x < 1)
- fun_l14_n667(x)
- else
- fun_l14_n795(x)
- end
-end
-
-def fun_l13_n438(x)
- if (x < 1)
- fun_l14_n989(x)
- else
- fun_l14_n484(x)
- end
-end
-
-def fun_l13_n439(x)
- if (x < 1)
- fun_l14_n109(x)
- else
- fun_l14_n534(x)
- end
-end
-
-def fun_l13_n440(x)
- if (x < 1)
- fun_l14_n999(x)
- else
- fun_l14_n69(x)
- end
-end
-
-def fun_l13_n441(x)
- if (x < 1)
- fun_l14_n616(x)
- else
- fun_l14_n794(x)
- end
-end
-
-def fun_l13_n442(x)
- if (x < 1)
- fun_l14_n719(x)
- else
- fun_l14_n967(x)
- end
-end
-
-def fun_l13_n443(x)
- if (x < 1)
- fun_l14_n279(x)
- else
- fun_l14_n240(x)
- end
-end
-
-def fun_l13_n444(x)
- if (x < 1)
- fun_l14_n660(x)
- else
- fun_l14_n146(x)
- end
-end
-
-def fun_l13_n445(x)
- if (x < 1)
- fun_l14_n164(x)
- else
- fun_l14_n903(x)
- end
-end
-
-def fun_l13_n446(x)
- if (x < 1)
- fun_l14_n474(x)
- else
- fun_l14_n137(x)
- end
-end
-
-def fun_l13_n447(x)
- if (x < 1)
- fun_l14_n198(x)
- else
- fun_l14_n66(x)
- end
-end
-
-def fun_l13_n448(x)
- if (x < 1)
- fun_l14_n948(x)
- else
- fun_l14_n682(x)
- end
-end
-
-def fun_l13_n449(x)
- if (x < 1)
- fun_l14_n545(x)
- else
- fun_l14_n928(x)
- end
-end
-
-def fun_l13_n450(x)
- if (x < 1)
- fun_l14_n822(x)
- else
- fun_l14_n846(x)
- end
-end
-
-def fun_l13_n451(x)
- if (x < 1)
- fun_l14_n514(x)
- else
- fun_l14_n54(x)
- end
-end
-
-def fun_l13_n452(x)
- if (x < 1)
- fun_l14_n539(x)
- else
- fun_l14_n199(x)
- end
-end
-
-def fun_l13_n453(x)
- if (x < 1)
- fun_l14_n917(x)
- else
- fun_l14_n173(x)
- end
-end
-
-def fun_l13_n454(x)
- if (x < 1)
- fun_l14_n924(x)
- else
- fun_l14_n51(x)
- end
-end
-
-def fun_l13_n455(x)
- if (x < 1)
- fun_l14_n675(x)
- else
- fun_l14_n139(x)
- end
-end
-
-def fun_l13_n456(x)
- if (x < 1)
- fun_l14_n335(x)
- else
- fun_l14_n138(x)
- end
-end
-
-def fun_l13_n457(x)
- if (x < 1)
- fun_l14_n112(x)
- else
- fun_l14_n707(x)
- end
-end
-
-def fun_l13_n458(x)
- if (x < 1)
- fun_l14_n784(x)
- else
- fun_l14_n278(x)
- end
-end
-
-def fun_l13_n459(x)
- if (x < 1)
- fun_l14_n165(x)
- else
- fun_l14_n985(x)
- end
-end
-
-def fun_l13_n460(x)
- if (x < 1)
- fun_l14_n843(x)
- else
- fun_l14_n262(x)
- end
-end
-
-def fun_l13_n461(x)
- if (x < 1)
- fun_l14_n492(x)
- else
- fun_l14_n21(x)
- end
-end
-
-def fun_l13_n462(x)
- if (x < 1)
- fun_l14_n864(x)
- else
- fun_l14_n248(x)
- end
-end
-
-def fun_l13_n463(x)
- if (x < 1)
- fun_l14_n940(x)
- else
- fun_l14_n713(x)
- end
-end
-
-def fun_l13_n464(x)
- if (x < 1)
- fun_l14_n8(x)
- else
- fun_l14_n771(x)
- end
-end
-
-def fun_l13_n465(x)
- if (x < 1)
- fun_l14_n83(x)
- else
- fun_l14_n663(x)
- end
-end
-
-def fun_l13_n466(x)
- if (x < 1)
- fun_l14_n411(x)
- else
- fun_l14_n570(x)
- end
-end
-
-def fun_l13_n467(x)
- if (x < 1)
- fun_l14_n464(x)
- else
- fun_l14_n497(x)
- end
-end
-
-def fun_l13_n468(x)
- if (x < 1)
- fun_l14_n49(x)
- else
- fun_l14_n153(x)
- end
-end
-
-def fun_l13_n469(x)
- if (x < 1)
- fun_l14_n33(x)
- else
- fun_l14_n562(x)
- end
-end
-
-def fun_l13_n470(x)
- if (x < 1)
- fun_l14_n207(x)
- else
- fun_l14_n328(x)
- end
-end
-
-def fun_l13_n471(x)
- if (x < 1)
- fun_l14_n356(x)
- else
- fun_l14_n834(x)
- end
-end
-
-def fun_l13_n472(x)
- if (x < 1)
- fun_l14_n46(x)
- else
- fun_l14_n842(x)
- end
-end
-
-def fun_l13_n473(x)
- if (x < 1)
- fun_l14_n14(x)
- else
- fun_l14_n488(x)
- end
-end
-
-def fun_l13_n474(x)
- if (x < 1)
- fun_l14_n307(x)
- else
- fun_l14_n647(x)
- end
-end
-
-def fun_l13_n475(x)
- if (x < 1)
- fun_l14_n474(x)
- else
- fun_l14_n369(x)
- end
-end
-
-def fun_l13_n476(x)
- if (x < 1)
- fun_l14_n471(x)
- else
- fun_l14_n956(x)
- end
-end
-
-def fun_l13_n477(x)
- if (x < 1)
- fun_l14_n368(x)
- else
- fun_l14_n478(x)
- end
-end
-
-def fun_l13_n478(x)
- if (x < 1)
- fun_l14_n377(x)
- else
- fun_l14_n675(x)
- end
-end
-
-def fun_l13_n479(x)
- if (x < 1)
- fun_l14_n370(x)
- else
- fun_l14_n819(x)
- end
-end
-
-def fun_l13_n480(x)
- if (x < 1)
- fun_l14_n459(x)
- else
- fun_l14_n59(x)
- end
-end
-
-def fun_l13_n481(x)
- if (x < 1)
- fun_l14_n200(x)
- else
- fun_l14_n681(x)
- end
-end
-
-def fun_l13_n482(x)
- if (x < 1)
- fun_l14_n893(x)
- else
- fun_l14_n518(x)
- end
-end
-
-def fun_l13_n483(x)
- if (x < 1)
- fun_l14_n130(x)
- else
- fun_l14_n902(x)
- end
-end
-
-def fun_l13_n484(x)
- if (x < 1)
- fun_l14_n598(x)
- else
- fun_l14_n533(x)
- end
-end
-
-def fun_l13_n485(x)
- if (x < 1)
- fun_l14_n254(x)
- else
- fun_l14_n294(x)
- end
-end
-
-def fun_l13_n486(x)
- if (x < 1)
- fun_l14_n608(x)
- else
- fun_l14_n858(x)
- end
-end
-
-def fun_l13_n487(x)
- if (x < 1)
- fun_l14_n82(x)
- else
- fun_l14_n379(x)
- end
-end
-
-def fun_l13_n488(x)
- if (x < 1)
- fun_l14_n605(x)
- else
- fun_l14_n530(x)
- end
-end
-
-def fun_l13_n489(x)
- if (x < 1)
- fun_l14_n572(x)
- else
- fun_l14_n199(x)
- end
-end
-
-def fun_l13_n490(x)
- if (x < 1)
- fun_l14_n3(x)
- else
- fun_l14_n103(x)
- end
-end
-
-def fun_l13_n491(x)
- if (x < 1)
- fun_l14_n922(x)
- else
- fun_l14_n372(x)
- end
-end
-
-def fun_l13_n492(x)
- if (x < 1)
- fun_l14_n306(x)
- else
- fun_l14_n378(x)
- end
-end
-
-def fun_l13_n493(x)
- if (x < 1)
- fun_l14_n980(x)
- else
- fun_l14_n617(x)
- end
-end
-
-def fun_l13_n494(x)
- if (x < 1)
- fun_l14_n127(x)
- else
- fun_l14_n348(x)
- end
-end
-
-def fun_l13_n495(x)
- if (x < 1)
- fun_l14_n631(x)
- else
- fun_l14_n281(x)
- end
-end
-
-def fun_l13_n496(x)
- if (x < 1)
- fun_l14_n552(x)
- else
- fun_l14_n493(x)
- end
-end
-
-def fun_l13_n497(x)
- if (x < 1)
- fun_l14_n342(x)
- else
- fun_l14_n931(x)
- end
-end
-
-def fun_l13_n498(x)
- if (x < 1)
- fun_l14_n297(x)
- else
- fun_l14_n512(x)
- end
-end
-
-def fun_l13_n499(x)
- if (x < 1)
- fun_l14_n950(x)
- else
- fun_l14_n952(x)
- end
-end
-
-def fun_l13_n500(x)
- if (x < 1)
- fun_l14_n355(x)
- else
- fun_l14_n383(x)
- end
-end
-
-def fun_l13_n501(x)
- if (x < 1)
- fun_l14_n278(x)
- else
- fun_l14_n442(x)
- end
-end
-
-def fun_l13_n502(x)
- if (x < 1)
- fun_l14_n16(x)
- else
- fun_l14_n150(x)
- end
-end
-
-def fun_l13_n503(x)
- if (x < 1)
- fun_l14_n399(x)
- else
- fun_l14_n989(x)
- end
-end
-
-def fun_l13_n504(x)
- if (x < 1)
- fun_l14_n289(x)
- else
- fun_l14_n925(x)
- end
-end
-
-def fun_l13_n505(x)
- if (x < 1)
- fun_l14_n743(x)
- else
- fun_l14_n784(x)
- end
-end
-
-def fun_l13_n506(x)
- if (x < 1)
- fun_l14_n916(x)
- else
- fun_l14_n111(x)
- end
-end
-
-def fun_l13_n507(x)
- if (x < 1)
- fun_l14_n912(x)
- else
- fun_l14_n448(x)
- end
-end
-
-def fun_l13_n508(x)
- if (x < 1)
- fun_l14_n10(x)
- else
- fun_l14_n451(x)
- end
-end
-
-def fun_l13_n509(x)
- if (x < 1)
- fun_l14_n15(x)
- else
- fun_l14_n697(x)
- end
-end
-
-def fun_l13_n510(x)
- if (x < 1)
- fun_l14_n565(x)
- else
- fun_l14_n511(x)
- end
-end
-
-def fun_l13_n511(x)
- if (x < 1)
- fun_l14_n843(x)
- else
- fun_l14_n272(x)
- end
-end
-
-def fun_l13_n512(x)
- if (x < 1)
- fun_l14_n70(x)
- else
- fun_l14_n333(x)
- end
-end
-
-def fun_l13_n513(x)
- if (x < 1)
- fun_l14_n100(x)
- else
- fun_l14_n399(x)
- end
-end
-
-def fun_l13_n514(x)
- if (x < 1)
- fun_l14_n678(x)
- else
- fun_l14_n247(x)
- end
-end
-
-def fun_l13_n515(x)
- if (x < 1)
- fun_l14_n823(x)
- else
- fun_l14_n371(x)
- end
-end
-
-def fun_l13_n516(x)
- if (x < 1)
- fun_l14_n994(x)
- else
- fun_l14_n322(x)
- end
-end
-
-def fun_l13_n517(x)
- if (x < 1)
- fun_l14_n399(x)
- else
- fun_l14_n567(x)
- end
-end
-
-def fun_l13_n518(x)
- if (x < 1)
- fun_l14_n898(x)
- else
- fun_l14_n59(x)
- end
-end
-
-def fun_l13_n519(x)
- if (x < 1)
- fun_l14_n33(x)
- else
- fun_l14_n640(x)
- end
-end
-
-def fun_l13_n520(x)
- if (x < 1)
- fun_l14_n475(x)
- else
- fun_l14_n67(x)
- end
-end
-
-def fun_l13_n521(x)
- if (x < 1)
- fun_l14_n896(x)
- else
- fun_l14_n312(x)
- end
-end
-
-def fun_l13_n522(x)
- if (x < 1)
- fun_l14_n454(x)
- else
- fun_l14_n520(x)
- end
-end
-
-def fun_l13_n523(x)
- if (x < 1)
- fun_l14_n334(x)
- else
- fun_l14_n879(x)
- end
-end
-
-def fun_l13_n524(x)
- if (x < 1)
- fun_l14_n267(x)
- else
- fun_l14_n526(x)
- end
-end
-
-def fun_l13_n525(x)
- if (x < 1)
- fun_l14_n552(x)
- else
- fun_l14_n103(x)
- end
-end
-
-def fun_l13_n526(x)
- if (x < 1)
- fun_l14_n224(x)
- else
- fun_l14_n211(x)
- end
-end
-
-def fun_l13_n527(x)
- if (x < 1)
- fun_l14_n113(x)
- else
- fun_l14_n193(x)
- end
-end
-
-def fun_l13_n528(x)
- if (x < 1)
- fun_l14_n389(x)
- else
- fun_l14_n332(x)
- end
-end
-
-def fun_l13_n529(x)
- if (x < 1)
- fun_l14_n881(x)
- else
- fun_l14_n655(x)
- end
-end
-
-def fun_l13_n530(x)
- if (x < 1)
- fun_l14_n857(x)
- else
- fun_l14_n588(x)
- end
-end
-
-def fun_l13_n531(x)
- if (x < 1)
- fun_l14_n70(x)
- else
- fun_l14_n232(x)
- end
-end
-
-def fun_l13_n532(x)
- if (x < 1)
- fun_l14_n617(x)
- else
- fun_l14_n477(x)
- end
-end
-
-def fun_l13_n533(x)
- if (x < 1)
- fun_l14_n655(x)
- else
- fun_l14_n801(x)
- end
-end
-
-def fun_l13_n534(x)
- if (x < 1)
- fun_l14_n665(x)
- else
- fun_l14_n22(x)
- end
-end
-
-def fun_l13_n535(x)
- if (x < 1)
- fun_l14_n314(x)
- else
- fun_l14_n924(x)
- end
-end
-
-def fun_l13_n536(x)
- if (x < 1)
- fun_l14_n619(x)
- else
- fun_l14_n455(x)
- end
-end
-
-def fun_l13_n537(x)
- if (x < 1)
- fun_l14_n183(x)
- else
- fun_l14_n767(x)
- end
-end
-
-def fun_l13_n538(x)
- if (x < 1)
- fun_l14_n862(x)
- else
- fun_l14_n352(x)
- end
-end
-
-def fun_l13_n539(x)
- if (x < 1)
- fun_l14_n540(x)
- else
- fun_l14_n813(x)
- end
-end
-
-def fun_l13_n540(x)
- if (x < 1)
- fun_l14_n429(x)
- else
- fun_l14_n515(x)
- end
-end
-
-def fun_l13_n541(x)
- if (x < 1)
- fun_l14_n294(x)
- else
- fun_l14_n341(x)
- end
-end
-
-def fun_l13_n542(x)
- if (x < 1)
- fun_l14_n910(x)
- else
- fun_l14_n882(x)
- end
-end
-
-def fun_l13_n543(x)
- if (x < 1)
- fun_l14_n971(x)
- else
- fun_l14_n19(x)
- end
-end
-
-def fun_l13_n544(x)
- if (x < 1)
- fun_l14_n344(x)
- else
- fun_l14_n419(x)
- end
-end
-
-def fun_l13_n545(x)
- if (x < 1)
- fun_l14_n410(x)
- else
- fun_l14_n996(x)
- end
-end
-
-def fun_l13_n546(x)
- if (x < 1)
- fun_l14_n857(x)
- else
- fun_l14_n431(x)
- end
-end
-
-def fun_l13_n547(x)
- if (x < 1)
- fun_l14_n548(x)
- else
- fun_l14_n934(x)
- end
-end
-
-def fun_l13_n548(x)
- if (x < 1)
- fun_l14_n420(x)
- else
- fun_l14_n506(x)
- end
-end
-
-def fun_l13_n549(x)
- if (x < 1)
- fun_l14_n992(x)
- else
- fun_l14_n213(x)
- end
-end
-
-def fun_l13_n550(x)
- if (x < 1)
- fun_l14_n754(x)
- else
- fun_l14_n666(x)
- end
-end
-
-def fun_l13_n551(x)
- if (x < 1)
- fun_l14_n412(x)
- else
- fun_l14_n908(x)
- end
-end
-
-def fun_l13_n552(x)
- if (x < 1)
- fun_l14_n708(x)
- else
- fun_l14_n308(x)
- end
-end
-
-def fun_l13_n553(x)
- if (x < 1)
- fun_l14_n797(x)
- else
- fun_l14_n622(x)
- end
-end
-
-def fun_l13_n554(x)
- if (x < 1)
- fun_l14_n26(x)
- else
- fun_l14_n102(x)
- end
-end
-
-def fun_l13_n555(x)
- if (x < 1)
- fun_l14_n614(x)
- else
- fun_l14_n110(x)
- end
-end
-
-def fun_l13_n556(x)
- if (x < 1)
- fun_l14_n368(x)
- else
- fun_l14_n718(x)
- end
-end
-
-def fun_l13_n557(x)
- if (x < 1)
- fun_l14_n782(x)
- else
- fun_l14_n659(x)
- end
-end
-
-def fun_l13_n558(x)
- if (x < 1)
- fun_l14_n544(x)
- else
- fun_l14_n507(x)
- end
-end
-
-def fun_l13_n559(x)
- if (x < 1)
- fun_l14_n39(x)
- else
- fun_l14_n97(x)
- end
-end
-
-def fun_l13_n560(x)
- if (x < 1)
- fun_l14_n390(x)
- else
- fun_l14_n93(x)
- end
-end
-
-def fun_l13_n561(x)
- if (x < 1)
- fun_l14_n28(x)
- else
- fun_l14_n267(x)
- end
-end
-
-def fun_l13_n562(x)
- if (x < 1)
- fun_l14_n10(x)
- else
- fun_l14_n990(x)
- end
-end
-
-def fun_l13_n563(x)
- if (x < 1)
- fun_l14_n428(x)
- else
- fun_l14_n878(x)
- end
-end
-
-def fun_l13_n564(x)
- if (x < 1)
- fun_l14_n587(x)
- else
- fun_l14_n724(x)
- end
-end
-
-def fun_l13_n565(x)
- if (x < 1)
- fun_l14_n524(x)
- else
- fun_l14_n87(x)
- end
-end
-
-def fun_l13_n566(x)
- if (x < 1)
- fun_l14_n213(x)
- else
- fun_l14_n718(x)
- end
-end
-
-def fun_l13_n567(x)
- if (x < 1)
- fun_l14_n821(x)
- else
- fun_l14_n478(x)
- end
-end
-
-def fun_l13_n568(x)
- if (x < 1)
- fun_l14_n580(x)
- else
- fun_l14_n731(x)
- end
-end
-
-def fun_l13_n569(x)
- if (x < 1)
- fun_l14_n673(x)
- else
- fun_l14_n780(x)
- end
-end
-
-def fun_l13_n570(x)
- if (x < 1)
- fun_l14_n791(x)
- else
- fun_l14_n691(x)
- end
-end
-
-def fun_l13_n571(x)
- if (x < 1)
- fun_l14_n192(x)
- else
- fun_l14_n712(x)
- end
-end
-
-def fun_l13_n572(x)
- if (x < 1)
- fun_l14_n201(x)
- else
- fun_l14_n732(x)
- end
-end
-
-def fun_l13_n573(x)
- if (x < 1)
- fun_l14_n180(x)
- else
- fun_l14_n260(x)
- end
-end
-
-def fun_l13_n574(x)
- if (x < 1)
- fun_l14_n609(x)
- else
- fun_l14_n110(x)
- end
-end
-
-def fun_l13_n575(x)
- if (x < 1)
- fun_l14_n993(x)
- else
- fun_l14_n510(x)
- end
-end
-
-def fun_l13_n576(x)
- if (x < 1)
- fun_l14_n318(x)
- else
- fun_l14_n915(x)
- end
-end
-
-def fun_l13_n577(x)
- if (x < 1)
- fun_l14_n635(x)
- else
- fun_l14_n21(x)
- end
-end
-
-def fun_l13_n578(x)
- if (x < 1)
- fun_l14_n330(x)
- else
- fun_l14_n860(x)
- end
-end
-
-def fun_l13_n579(x)
- if (x < 1)
- fun_l14_n24(x)
- else
- fun_l14_n87(x)
- end
-end
-
-def fun_l13_n580(x)
- if (x < 1)
- fun_l14_n404(x)
- else
- fun_l14_n530(x)
- end
-end
-
-def fun_l13_n581(x)
- if (x < 1)
- fun_l14_n831(x)
- else
- fun_l14_n384(x)
- end
-end
-
-def fun_l13_n582(x)
- if (x < 1)
- fun_l14_n272(x)
- else
- fun_l14_n438(x)
- end
-end
-
-def fun_l13_n583(x)
- if (x < 1)
- fun_l14_n297(x)
- else
- fun_l14_n414(x)
- end
-end
-
-def fun_l13_n584(x)
- if (x < 1)
- fun_l14_n38(x)
- else
- fun_l14_n676(x)
- end
-end
-
-def fun_l13_n585(x)
- if (x < 1)
- fun_l14_n104(x)
- else
- fun_l14_n566(x)
- end
-end
-
-def fun_l13_n586(x)
- if (x < 1)
- fun_l14_n322(x)
- else
- fun_l14_n601(x)
- end
-end
-
-def fun_l13_n587(x)
- if (x < 1)
- fun_l14_n20(x)
- else
- fun_l14_n242(x)
- end
-end
-
-def fun_l13_n588(x)
- if (x < 1)
- fun_l14_n291(x)
- else
- fun_l14_n744(x)
- end
-end
-
-def fun_l13_n589(x)
- if (x < 1)
- fun_l14_n702(x)
- else
- fun_l14_n456(x)
- end
-end
-
-def fun_l13_n590(x)
- if (x < 1)
- fun_l14_n39(x)
- else
- fun_l14_n493(x)
- end
-end
-
-def fun_l13_n591(x)
- if (x < 1)
- fun_l14_n51(x)
- else
- fun_l14_n193(x)
- end
-end
-
-def fun_l13_n592(x)
- if (x < 1)
- fun_l14_n512(x)
- else
- fun_l14_n382(x)
- end
-end
-
-def fun_l13_n593(x)
- if (x < 1)
- fun_l14_n550(x)
- else
- fun_l14_n711(x)
- end
-end
-
-def fun_l13_n594(x)
- if (x < 1)
- fun_l14_n586(x)
- else
- fun_l14_n130(x)
- end
-end
-
-def fun_l13_n595(x)
- if (x < 1)
- fun_l14_n348(x)
- else
- fun_l14_n214(x)
- end
-end
-
-def fun_l13_n596(x)
- if (x < 1)
- fun_l14_n193(x)
- else
- fun_l14_n490(x)
- end
-end
-
-def fun_l13_n597(x)
- if (x < 1)
- fun_l14_n736(x)
- else
- fun_l14_n824(x)
- end
-end
-
-def fun_l13_n598(x)
- if (x < 1)
- fun_l14_n555(x)
- else
- fun_l14_n546(x)
- end
-end
-
-def fun_l13_n599(x)
- if (x < 1)
- fun_l14_n244(x)
- else
- fun_l14_n903(x)
- end
-end
-
-def fun_l13_n600(x)
- if (x < 1)
- fun_l14_n786(x)
- else
- fun_l14_n817(x)
- end
-end
-
-def fun_l13_n601(x)
- if (x < 1)
- fun_l14_n991(x)
- else
- fun_l14_n691(x)
- end
-end
-
-def fun_l13_n602(x)
- if (x < 1)
- fun_l14_n369(x)
- else
- fun_l14_n85(x)
- end
-end
-
-def fun_l13_n603(x)
- if (x < 1)
- fun_l14_n232(x)
- else
- fun_l14_n287(x)
- end
-end
-
-def fun_l13_n604(x)
- if (x < 1)
- fun_l14_n397(x)
- else
- fun_l14_n59(x)
- end
-end
-
-def fun_l13_n605(x)
- if (x < 1)
- fun_l14_n394(x)
- else
- fun_l14_n297(x)
- end
-end
-
-def fun_l13_n606(x)
- if (x < 1)
- fun_l14_n676(x)
- else
- fun_l14_n444(x)
- end
-end
-
-def fun_l13_n607(x)
- if (x < 1)
- fun_l14_n894(x)
- else
- fun_l14_n147(x)
- end
-end
-
-def fun_l13_n608(x)
- if (x < 1)
- fun_l14_n593(x)
- else
- fun_l14_n880(x)
- end
-end
-
-def fun_l13_n609(x)
- if (x < 1)
- fun_l14_n306(x)
- else
- fun_l14_n610(x)
- end
-end
-
-def fun_l13_n610(x)
- if (x < 1)
- fun_l14_n884(x)
- else
- fun_l14_n202(x)
- end
-end
-
-def fun_l13_n611(x)
- if (x < 1)
- fun_l14_n763(x)
- else
- fun_l14_n592(x)
- end
-end
-
-def fun_l13_n612(x)
- if (x < 1)
- fun_l14_n477(x)
- else
- fun_l14_n614(x)
- end
-end
-
-def fun_l13_n613(x)
- if (x < 1)
- fun_l14_n372(x)
- else
- fun_l14_n330(x)
- end
-end
-
-def fun_l13_n614(x)
- if (x < 1)
- fun_l14_n767(x)
- else
- fun_l14_n277(x)
- end
-end
-
-def fun_l13_n615(x)
- if (x < 1)
- fun_l14_n530(x)
- else
- fun_l14_n24(x)
- end
-end
-
-def fun_l13_n616(x)
- if (x < 1)
- fun_l14_n657(x)
- else
- fun_l14_n709(x)
- end
-end
-
-def fun_l13_n617(x)
- if (x < 1)
- fun_l14_n559(x)
- else
- fun_l14_n125(x)
- end
-end
-
-def fun_l13_n618(x)
- if (x < 1)
- fun_l14_n855(x)
- else
- fun_l14_n353(x)
- end
-end
-
-def fun_l13_n619(x)
- if (x < 1)
- fun_l14_n635(x)
- else
- fun_l14_n907(x)
- end
-end
-
-def fun_l13_n620(x)
- if (x < 1)
- fun_l14_n229(x)
- else
- fun_l14_n7(x)
- end
-end
-
-def fun_l13_n621(x)
- if (x < 1)
- fun_l14_n568(x)
- else
- fun_l14_n393(x)
- end
-end
-
-def fun_l13_n622(x)
- if (x < 1)
- fun_l14_n153(x)
- else
- fun_l14_n641(x)
- end
-end
-
-def fun_l13_n623(x)
- if (x < 1)
- fun_l14_n249(x)
- else
- fun_l14_n139(x)
- end
-end
-
-def fun_l13_n624(x)
- if (x < 1)
- fun_l14_n961(x)
- else
- fun_l14_n897(x)
- end
-end
-
-def fun_l13_n625(x)
- if (x < 1)
- fun_l14_n535(x)
- else
- fun_l14_n252(x)
- end
-end
-
-def fun_l13_n626(x)
- if (x < 1)
- fun_l14_n832(x)
- else
- fun_l14_n995(x)
- end
-end
-
-def fun_l13_n627(x)
- if (x < 1)
- fun_l14_n896(x)
- else
- fun_l14_n173(x)
- end
-end
-
-def fun_l13_n628(x)
- if (x < 1)
- fun_l14_n939(x)
- else
- fun_l14_n852(x)
- end
-end
-
-def fun_l13_n629(x)
- if (x < 1)
- fun_l14_n424(x)
- else
- fun_l14_n161(x)
- end
-end
-
-def fun_l13_n630(x)
- if (x < 1)
- fun_l14_n822(x)
- else
- fun_l14_n523(x)
- end
-end
-
-def fun_l13_n631(x)
- if (x < 1)
- fun_l14_n697(x)
- else
- fun_l14_n939(x)
- end
-end
-
-def fun_l13_n632(x)
- if (x < 1)
- fun_l14_n831(x)
- else
- fun_l14_n722(x)
- end
-end
-
-def fun_l13_n633(x)
- if (x < 1)
- fun_l14_n837(x)
- else
- fun_l14_n994(x)
- end
-end
-
-def fun_l13_n634(x)
- if (x < 1)
- fun_l14_n568(x)
- else
- fun_l14_n636(x)
- end
-end
-
-def fun_l13_n635(x)
- if (x < 1)
- fun_l14_n573(x)
- else
- fun_l14_n156(x)
- end
-end
-
-def fun_l13_n636(x)
- if (x < 1)
- fun_l14_n682(x)
- else
- fun_l14_n999(x)
- end
-end
-
-def fun_l13_n637(x)
- if (x < 1)
- fun_l14_n648(x)
- else
- fun_l14_n567(x)
- end
-end
-
-def fun_l13_n638(x)
- if (x < 1)
- fun_l14_n395(x)
- else
- fun_l14_n837(x)
- end
-end
-
-def fun_l13_n639(x)
- if (x < 1)
- fun_l14_n294(x)
- else
- fun_l14_n508(x)
- end
-end
-
-def fun_l13_n640(x)
- if (x < 1)
- fun_l14_n530(x)
- else
- fun_l14_n542(x)
- end
-end
-
-def fun_l13_n641(x)
- if (x < 1)
- fun_l14_n227(x)
- else
- fun_l14_n939(x)
- end
-end
-
-def fun_l13_n642(x)
- if (x < 1)
- fun_l14_n415(x)
- else
- fun_l14_n79(x)
- end
-end
-
-def fun_l13_n643(x)
- if (x < 1)
- fun_l14_n354(x)
- else
- fun_l14_n606(x)
- end
-end
-
-def fun_l13_n644(x)
- if (x < 1)
- fun_l14_n270(x)
- else
- fun_l14_n644(x)
- end
-end
-
-def fun_l13_n645(x)
- if (x < 1)
- fun_l14_n345(x)
- else
- fun_l14_n299(x)
- end
-end
-
-def fun_l13_n646(x)
- if (x < 1)
- fun_l14_n384(x)
- else
- fun_l14_n97(x)
- end
-end
-
-def fun_l13_n647(x)
- if (x < 1)
- fun_l14_n86(x)
- else
- fun_l14_n103(x)
- end
-end
-
-def fun_l13_n648(x)
- if (x < 1)
- fun_l14_n765(x)
- else
- fun_l14_n498(x)
- end
-end
-
-def fun_l13_n649(x)
- if (x < 1)
- fun_l14_n135(x)
- else
- fun_l14_n993(x)
- end
-end
-
-def fun_l13_n650(x)
- if (x < 1)
- fun_l14_n837(x)
- else
- fun_l14_n576(x)
- end
-end
-
-def fun_l13_n651(x)
- if (x < 1)
- fun_l14_n75(x)
- else
- fun_l14_n351(x)
- end
-end
-
-def fun_l13_n652(x)
- if (x < 1)
- fun_l14_n932(x)
- else
- fun_l14_n646(x)
- end
-end
-
-def fun_l13_n653(x)
- if (x < 1)
- fun_l14_n908(x)
- else
- fun_l14_n384(x)
- end
-end
-
-def fun_l13_n654(x)
- if (x < 1)
- fun_l14_n540(x)
- else
- fun_l14_n946(x)
- end
-end
-
-def fun_l13_n655(x)
- if (x < 1)
- fun_l14_n686(x)
- else
- fun_l14_n926(x)
- end
-end
-
-def fun_l13_n656(x)
- if (x < 1)
- fun_l14_n567(x)
- else
- fun_l14_n815(x)
- end
-end
-
-def fun_l13_n657(x)
- if (x < 1)
- fun_l14_n101(x)
- else
- fun_l14_n960(x)
- end
-end
-
-def fun_l13_n658(x)
- if (x < 1)
- fun_l14_n956(x)
- else
- fun_l14_n980(x)
- end
-end
-
-def fun_l13_n659(x)
- if (x < 1)
- fun_l14_n196(x)
- else
- fun_l14_n632(x)
- end
-end
-
-def fun_l13_n660(x)
- if (x < 1)
- fun_l14_n83(x)
- else
- fun_l14_n288(x)
- end
-end
-
-def fun_l13_n661(x)
- if (x < 1)
- fun_l14_n907(x)
- else
- fun_l14_n719(x)
- end
-end
-
-def fun_l13_n662(x)
- if (x < 1)
- fun_l14_n922(x)
- else
- fun_l14_n186(x)
- end
-end
-
-def fun_l13_n663(x)
- if (x < 1)
- fun_l14_n439(x)
- else
- fun_l14_n890(x)
- end
-end
-
-def fun_l13_n664(x)
- if (x < 1)
- fun_l14_n310(x)
- else
- fun_l14_n534(x)
- end
-end
-
-def fun_l13_n665(x)
- if (x < 1)
- fun_l14_n584(x)
- else
- fun_l14_n322(x)
- end
-end
-
-def fun_l13_n666(x)
- if (x < 1)
- fun_l14_n385(x)
- else
- fun_l14_n466(x)
- end
-end
-
-def fun_l13_n667(x)
- if (x < 1)
- fun_l14_n387(x)
- else
- fun_l14_n284(x)
- end
-end
-
-def fun_l13_n668(x)
- if (x < 1)
- fun_l14_n834(x)
- else
- fun_l14_n446(x)
- end
-end
-
-def fun_l13_n669(x)
- if (x < 1)
- fun_l14_n839(x)
- else
- fun_l14_n820(x)
- end
-end
-
-def fun_l13_n670(x)
- if (x < 1)
- fun_l14_n666(x)
- else
- fun_l14_n690(x)
- end
-end
-
-def fun_l13_n671(x)
- if (x < 1)
- fun_l14_n640(x)
- else
- fun_l14_n83(x)
- end
-end
-
-def fun_l13_n672(x)
- if (x < 1)
- fun_l14_n663(x)
- else
- fun_l14_n332(x)
- end
-end
-
-def fun_l13_n673(x)
- if (x < 1)
- fun_l14_n776(x)
- else
- fun_l14_n818(x)
- end
-end
-
-def fun_l13_n674(x)
- if (x < 1)
- fun_l14_n82(x)
- else
- fun_l14_n594(x)
- end
-end
-
-def fun_l13_n675(x)
- if (x < 1)
- fun_l14_n491(x)
- else
- fun_l14_n0(x)
- end
-end
-
-def fun_l13_n676(x)
- if (x < 1)
- fun_l14_n963(x)
- else
- fun_l14_n634(x)
- end
-end
-
-def fun_l13_n677(x)
- if (x < 1)
- fun_l14_n716(x)
- else
- fun_l14_n99(x)
- end
-end
-
-def fun_l13_n678(x)
- if (x < 1)
- fun_l14_n997(x)
- else
- fun_l14_n933(x)
- end
-end
-
-def fun_l13_n679(x)
- if (x < 1)
- fun_l14_n171(x)
- else
- fun_l14_n356(x)
- end
-end
-
-def fun_l13_n680(x)
- if (x < 1)
- fun_l14_n214(x)
- else
- fun_l14_n360(x)
- end
-end
-
-def fun_l13_n681(x)
- if (x < 1)
- fun_l14_n758(x)
- else
- fun_l14_n185(x)
- end
-end
-
-def fun_l13_n682(x)
- if (x < 1)
- fun_l14_n480(x)
- else
- fun_l14_n572(x)
- end
-end
-
-def fun_l13_n683(x)
- if (x < 1)
- fun_l14_n595(x)
- else
- fun_l14_n534(x)
- end
-end
-
-def fun_l13_n684(x)
- if (x < 1)
- fun_l14_n462(x)
- else
- fun_l14_n481(x)
- end
-end
-
-def fun_l13_n685(x)
- if (x < 1)
- fun_l14_n946(x)
- else
- fun_l14_n726(x)
- end
-end
-
-def fun_l13_n686(x)
- if (x < 1)
- fun_l14_n428(x)
- else
- fun_l14_n256(x)
- end
-end
-
-def fun_l13_n687(x)
- if (x < 1)
- fun_l14_n562(x)
- else
- fun_l14_n290(x)
- end
-end
-
-def fun_l13_n688(x)
- if (x < 1)
- fun_l14_n679(x)
- else
- fun_l14_n787(x)
- end
-end
-
-def fun_l13_n689(x)
- if (x < 1)
- fun_l14_n972(x)
- else
- fun_l14_n809(x)
- end
-end
-
-def fun_l13_n690(x)
- if (x < 1)
- fun_l14_n700(x)
- else
- fun_l14_n239(x)
- end
-end
-
-def fun_l13_n691(x)
- if (x < 1)
- fun_l14_n525(x)
- else
- fun_l14_n251(x)
- end
-end
-
-def fun_l13_n692(x)
- if (x < 1)
- fun_l14_n4(x)
- else
- fun_l14_n889(x)
- end
-end
-
-def fun_l13_n693(x)
- if (x < 1)
- fun_l14_n362(x)
- else
- fun_l14_n495(x)
- end
-end
-
-def fun_l13_n694(x)
- if (x < 1)
- fun_l14_n466(x)
- else
- fun_l14_n820(x)
- end
-end
-
-def fun_l13_n695(x)
- if (x < 1)
- fun_l14_n244(x)
- else
- fun_l14_n233(x)
- end
-end
-
-def fun_l13_n696(x)
- if (x < 1)
- fun_l14_n920(x)
- else
- fun_l14_n124(x)
- end
-end
-
-def fun_l13_n697(x)
- if (x < 1)
- fun_l14_n926(x)
- else
- fun_l14_n417(x)
- end
-end
-
-def fun_l13_n698(x)
- if (x < 1)
- fun_l14_n756(x)
- else
- fun_l14_n683(x)
- end
-end
-
-def fun_l13_n699(x)
- if (x < 1)
- fun_l14_n487(x)
- else
- fun_l14_n191(x)
- end
-end
-
-def fun_l13_n700(x)
- if (x < 1)
- fun_l14_n316(x)
- else
- fun_l14_n123(x)
- end
-end
-
-def fun_l13_n701(x)
- if (x < 1)
- fun_l14_n851(x)
- else
- fun_l14_n695(x)
- end
-end
-
-def fun_l13_n702(x)
- if (x < 1)
- fun_l14_n766(x)
- else
- fun_l14_n603(x)
- end
-end
-
-def fun_l13_n703(x)
- if (x < 1)
- fun_l14_n689(x)
- else
- fun_l14_n524(x)
- end
-end
-
-def fun_l13_n704(x)
- if (x < 1)
- fun_l14_n23(x)
- else
- fun_l14_n866(x)
- end
-end
-
-def fun_l13_n705(x)
- if (x < 1)
- fun_l14_n62(x)
- else
- fun_l14_n926(x)
- end
-end
-
-def fun_l13_n706(x)
- if (x < 1)
- fun_l14_n53(x)
- else
- fun_l14_n567(x)
- end
-end
-
-def fun_l13_n707(x)
- if (x < 1)
- fun_l14_n756(x)
- else
- fun_l14_n595(x)
- end
-end
-
-def fun_l13_n708(x)
- if (x < 1)
- fun_l14_n495(x)
- else
- fun_l14_n698(x)
- end
-end
-
-def fun_l13_n709(x)
- if (x < 1)
- fun_l14_n511(x)
- else
- fun_l14_n131(x)
- end
-end
-
-def fun_l13_n710(x)
- if (x < 1)
- fun_l14_n593(x)
- else
- fun_l14_n233(x)
- end
-end
-
-def fun_l13_n711(x)
- if (x < 1)
- fun_l14_n846(x)
- else
- fun_l14_n166(x)
- end
-end
-
-def fun_l13_n712(x)
- if (x < 1)
- fun_l14_n759(x)
- else
- fun_l14_n103(x)
- end
-end
-
-def fun_l13_n713(x)
- if (x < 1)
- fun_l14_n364(x)
- else
- fun_l14_n805(x)
- end
-end
-
-def fun_l13_n714(x)
- if (x < 1)
- fun_l14_n957(x)
- else
- fun_l14_n85(x)
- end
-end
-
-def fun_l13_n715(x)
- if (x < 1)
- fun_l14_n877(x)
- else
- fun_l14_n111(x)
- end
-end
-
-def fun_l13_n716(x)
- if (x < 1)
- fun_l14_n290(x)
- else
- fun_l14_n894(x)
- end
-end
-
-def fun_l13_n717(x)
- if (x < 1)
- fun_l14_n354(x)
- else
- fun_l14_n646(x)
- end
-end
-
-def fun_l13_n718(x)
- if (x < 1)
- fun_l14_n364(x)
- else
- fun_l14_n810(x)
- end
-end
-
-def fun_l13_n719(x)
- if (x < 1)
- fun_l14_n392(x)
- else
- fun_l14_n537(x)
- end
-end
-
-def fun_l13_n720(x)
- if (x < 1)
- fun_l14_n546(x)
- else
- fun_l14_n681(x)
- end
-end
-
-def fun_l13_n721(x)
- if (x < 1)
- fun_l14_n153(x)
- else
- fun_l14_n925(x)
- end
-end
-
-def fun_l13_n722(x)
- if (x < 1)
- fun_l14_n107(x)
- else
- fun_l14_n482(x)
- end
-end
-
-def fun_l13_n723(x)
- if (x < 1)
- fun_l14_n981(x)
- else
- fun_l14_n364(x)
- end
-end
-
-def fun_l13_n724(x)
- if (x < 1)
- fun_l14_n869(x)
- else
- fun_l14_n871(x)
- end
-end
-
-def fun_l13_n725(x)
- if (x < 1)
- fun_l14_n693(x)
- else
- fun_l14_n690(x)
- end
-end
-
-def fun_l13_n726(x)
- if (x < 1)
- fun_l14_n587(x)
- else
- fun_l14_n654(x)
- end
-end
-
-def fun_l13_n727(x)
- if (x < 1)
- fun_l14_n150(x)
- else
- fun_l14_n904(x)
- end
-end
-
-def fun_l13_n728(x)
- if (x < 1)
- fun_l14_n843(x)
- else
- fun_l14_n556(x)
- end
-end
-
-def fun_l13_n729(x)
- if (x < 1)
- fun_l14_n726(x)
- else
- fun_l14_n114(x)
- end
-end
-
-def fun_l13_n730(x)
- if (x < 1)
- fun_l14_n976(x)
- else
- fun_l14_n740(x)
- end
-end
-
-def fun_l13_n731(x)
- if (x < 1)
- fun_l14_n709(x)
- else
- fun_l14_n293(x)
- end
-end
-
-def fun_l13_n732(x)
- if (x < 1)
- fun_l14_n858(x)
- else
- fun_l14_n530(x)
- end
-end
-
-def fun_l13_n733(x)
- if (x < 1)
- fun_l14_n789(x)
- else
- fun_l14_n475(x)
- end
-end
-
-def fun_l13_n734(x)
- if (x < 1)
- fun_l14_n813(x)
- else
- fun_l14_n359(x)
- end
-end
-
-def fun_l13_n735(x)
- if (x < 1)
- fun_l14_n209(x)
- else
- fun_l14_n29(x)
- end
-end
-
-def fun_l13_n736(x)
- if (x < 1)
- fun_l14_n710(x)
- else
- fun_l14_n823(x)
- end
-end
-
-def fun_l13_n737(x)
- if (x < 1)
- fun_l14_n434(x)
- else
- fun_l14_n864(x)
- end
-end
-
-def fun_l13_n738(x)
- if (x < 1)
- fun_l14_n184(x)
- else
- fun_l14_n902(x)
- end
-end
-
-def fun_l13_n739(x)
- if (x < 1)
- fun_l14_n206(x)
- else
- fun_l14_n65(x)
- end
-end
-
-def fun_l13_n740(x)
- if (x < 1)
- fun_l14_n670(x)
- else
- fun_l14_n956(x)
- end
-end
-
-def fun_l13_n741(x)
- if (x < 1)
- fun_l14_n91(x)
- else
- fun_l14_n341(x)
- end
-end
-
-def fun_l13_n742(x)
- if (x < 1)
- fun_l14_n864(x)
- else
- fun_l14_n864(x)
- end
-end
-
-def fun_l13_n743(x)
- if (x < 1)
- fun_l14_n426(x)
- else
- fun_l14_n302(x)
- end
-end
-
-def fun_l13_n744(x)
- if (x < 1)
- fun_l14_n241(x)
- else
- fun_l14_n151(x)
- end
-end
-
-def fun_l13_n745(x)
- if (x < 1)
- fun_l14_n161(x)
- else
- fun_l14_n715(x)
- end
-end
-
-def fun_l13_n746(x)
- if (x < 1)
- fun_l14_n925(x)
- else
- fun_l14_n840(x)
- end
-end
-
-def fun_l13_n747(x)
- if (x < 1)
- fun_l14_n864(x)
- else
- fun_l14_n610(x)
- end
-end
-
-def fun_l13_n748(x)
- if (x < 1)
- fun_l14_n322(x)
- else
- fun_l14_n69(x)
- end
-end
-
-def fun_l13_n749(x)
- if (x < 1)
- fun_l14_n847(x)
- else
- fun_l14_n3(x)
- end
-end
-
-def fun_l13_n750(x)
- if (x < 1)
- fun_l14_n124(x)
- else
- fun_l14_n915(x)
- end
-end
-
-def fun_l13_n751(x)
- if (x < 1)
- fun_l14_n163(x)
- else
- fun_l14_n136(x)
- end
-end
-
-def fun_l13_n752(x)
- if (x < 1)
- fun_l14_n525(x)
- else
- fun_l14_n197(x)
- end
-end
-
-def fun_l13_n753(x)
- if (x < 1)
- fun_l14_n109(x)
- else
- fun_l14_n208(x)
- end
-end
-
-def fun_l13_n754(x)
- if (x < 1)
- fun_l14_n597(x)
- else
- fun_l14_n307(x)
- end
-end
-
-def fun_l13_n755(x)
- if (x < 1)
- fun_l14_n36(x)
- else
- fun_l14_n948(x)
- end
-end
-
-def fun_l13_n756(x)
- if (x < 1)
- fun_l14_n236(x)
- else
- fun_l14_n716(x)
- end
-end
-
-def fun_l13_n757(x)
- if (x < 1)
- fun_l14_n326(x)
- else
- fun_l14_n870(x)
- end
-end
-
-def fun_l13_n758(x)
- if (x < 1)
- fun_l14_n333(x)
- else
- fun_l14_n224(x)
- end
-end
-
-def fun_l13_n759(x)
- if (x < 1)
- fun_l14_n141(x)
- else
- fun_l14_n232(x)
- end
-end
-
-def fun_l13_n760(x)
- if (x < 1)
- fun_l14_n653(x)
- else
- fun_l14_n559(x)
- end
-end
-
-def fun_l13_n761(x)
- if (x < 1)
- fun_l14_n305(x)
- else
- fun_l14_n296(x)
- end
-end
-
-def fun_l13_n762(x)
- if (x < 1)
- fun_l14_n318(x)
- else
- fun_l14_n351(x)
- end
-end
-
-def fun_l13_n763(x)
- if (x < 1)
- fun_l14_n685(x)
- else
- fun_l14_n643(x)
- end
-end
-
-def fun_l13_n764(x)
- if (x < 1)
- fun_l14_n180(x)
- else
- fun_l14_n348(x)
- end
-end
-
-def fun_l13_n765(x)
- if (x < 1)
- fun_l14_n72(x)
- else
- fun_l14_n99(x)
- end
-end
-
-def fun_l13_n766(x)
- if (x < 1)
- fun_l14_n463(x)
- else
- fun_l14_n135(x)
- end
-end
-
-def fun_l13_n767(x)
- if (x < 1)
- fun_l14_n461(x)
- else
- fun_l14_n989(x)
- end
-end
-
-def fun_l13_n768(x)
- if (x < 1)
- fun_l14_n759(x)
- else
- fun_l14_n907(x)
- end
-end
-
-def fun_l13_n769(x)
- if (x < 1)
- fun_l14_n330(x)
- else
- fun_l14_n268(x)
- end
-end
-
-def fun_l13_n770(x)
- if (x < 1)
- fun_l14_n809(x)
- else
- fun_l14_n46(x)
- end
-end
-
-def fun_l13_n771(x)
- if (x < 1)
- fun_l14_n396(x)
- else
- fun_l14_n114(x)
- end
-end
-
-def fun_l13_n772(x)
- if (x < 1)
- fun_l14_n300(x)
- else
- fun_l14_n60(x)
- end
-end
-
-def fun_l13_n773(x)
- if (x < 1)
- fun_l14_n938(x)
- else
- fun_l14_n112(x)
- end
-end
-
-def fun_l13_n774(x)
- if (x < 1)
- fun_l14_n862(x)
- else
- fun_l14_n503(x)
- end
-end
-
-def fun_l13_n775(x)
- if (x < 1)
- fun_l14_n305(x)
- else
- fun_l14_n11(x)
- end
-end
-
-def fun_l13_n776(x)
- if (x < 1)
- fun_l14_n638(x)
- else
- fun_l14_n161(x)
- end
-end
-
-def fun_l13_n777(x)
- if (x < 1)
- fun_l14_n2(x)
- else
- fun_l14_n176(x)
- end
-end
-
-def fun_l13_n778(x)
- if (x < 1)
- fun_l14_n967(x)
- else
- fun_l14_n739(x)
- end
-end
-
-def fun_l13_n779(x)
- if (x < 1)
- fun_l14_n961(x)
- else
- fun_l14_n609(x)
- end
-end
-
-def fun_l13_n780(x)
- if (x < 1)
- fun_l14_n207(x)
- else
- fun_l14_n910(x)
- end
-end
-
-def fun_l13_n781(x)
- if (x < 1)
- fun_l14_n370(x)
- else
- fun_l14_n163(x)
- end
-end
-
-def fun_l13_n782(x)
- if (x < 1)
- fun_l14_n140(x)
- else
- fun_l14_n816(x)
- end
-end
-
-def fun_l13_n783(x)
- if (x < 1)
- fun_l14_n351(x)
- else
- fun_l14_n406(x)
- end
-end
-
-def fun_l13_n784(x)
- if (x < 1)
- fun_l14_n790(x)
- else
- fun_l14_n175(x)
- end
-end
-
-def fun_l13_n785(x)
- if (x < 1)
- fun_l14_n644(x)
- else
- fun_l14_n713(x)
- end
-end
-
-def fun_l13_n786(x)
- if (x < 1)
- fun_l14_n800(x)
- else
- fun_l14_n257(x)
- end
-end
-
-def fun_l13_n787(x)
- if (x < 1)
- fun_l14_n248(x)
- else
- fun_l14_n709(x)
- end
-end
-
-def fun_l13_n788(x)
- if (x < 1)
- fun_l14_n280(x)
- else
- fun_l14_n485(x)
- end
-end
-
-def fun_l13_n789(x)
- if (x < 1)
- fun_l14_n900(x)
- else
- fun_l14_n675(x)
- end
-end
-
-def fun_l13_n790(x)
- if (x < 1)
- fun_l14_n65(x)
- else
- fun_l14_n426(x)
- end
-end
-
-def fun_l13_n791(x)
- if (x < 1)
- fun_l14_n410(x)
- else
- fun_l14_n484(x)
- end
-end
-
-def fun_l13_n792(x)
- if (x < 1)
- fun_l14_n741(x)
- else
- fun_l14_n13(x)
- end
-end
-
-def fun_l13_n793(x)
- if (x < 1)
- fun_l14_n550(x)
- else
- fun_l14_n884(x)
- end
-end
-
-def fun_l13_n794(x)
- if (x < 1)
- fun_l14_n120(x)
- else
- fun_l14_n262(x)
- end
-end
-
-def fun_l13_n795(x)
- if (x < 1)
- fun_l14_n537(x)
- else
- fun_l14_n980(x)
- end
-end
-
-def fun_l13_n796(x)
- if (x < 1)
- fun_l14_n742(x)
- else
- fun_l14_n6(x)
- end
-end
-
-def fun_l13_n797(x)
- if (x < 1)
- fun_l14_n986(x)
- else
- fun_l14_n434(x)
- end
-end
-
-def fun_l13_n798(x)
- if (x < 1)
- fun_l14_n39(x)
- else
- fun_l14_n658(x)
- end
-end
-
-def fun_l13_n799(x)
- if (x < 1)
- fun_l14_n838(x)
- else
- fun_l14_n810(x)
- end
-end
-
-def fun_l13_n800(x)
- if (x < 1)
- fun_l14_n79(x)
- else
- fun_l14_n695(x)
- end
-end
-
-def fun_l13_n801(x)
- if (x < 1)
- fun_l14_n99(x)
- else
- fun_l14_n26(x)
- end
-end
-
-def fun_l13_n802(x)
- if (x < 1)
- fun_l14_n839(x)
- else
- fun_l14_n430(x)
- end
-end
-
-def fun_l13_n803(x)
- if (x < 1)
- fun_l14_n410(x)
- else
- fun_l14_n403(x)
- end
-end
-
-def fun_l13_n804(x)
- if (x < 1)
- fun_l14_n143(x)
- else
- fun_l14_n689(x)
- end
-end
-
-def fun_l13_n805(x)
- if (x < 1)
- fun_l14_n695(x)
- else
- fun_l14_n721(x)
- end
-end
-
-def fun_l13_n806(x)
- if (x < 1)
- fun_l14_n418(x)
- else
- fun_l14_n508(x)
- end
-end
-
-def fun_l13_n807(x)
- if (x < 1)
- fun_l14_n569(x)
- else
- fun_l14_n86(x)
- end
-end
-
-def fun_l13_n808(x)
- if (x < 1)
- fun_l14_n670(x)
- else
- fun_l14_n690(x)
- end
-end
-
-def fun_l13_n809(x)
- if (x < 1)
- fun_l14_n283(x)
- else
- fun_l14_n630(x)
- end
-end
-
-def fun_l13_n810(x)
- if (x < 1)
- fun_l14_n54(x)
- else
- fun_l14_n180(x)
- end
-end
-
-def fun_l13_n811(x)
- if (x < 1)
- fun_l14_n669(x)
- else
- fun_l14_n131(x)
- end
-end
-
-def fun_l13_n812(x)
- if (x < 1)
- fun_l14_n972(x)
- else
- fun_l14_n948(x)
- end
-end
-
-def fun_l13_n813(x)
- if (x < 1)
- fun_l14_n585(x)
- else
- fun_l14_n244(x)
- end
-end
-
-def fun_l13_n814(x)
- if (x < 1)
- fun_l14_n277(x)
- else
- fun_l14_n530(x)
- end
-end
-
-def fun_l13_n815(x)
- if (x < 1)
- fun_l14_n908(x)
- else
- fun_l14_n380(x)
- end
-end
-
-def fun_l13_n816(x)
- if (x < 1)
- fun_l14_n520(x)
- else
- fun_l14_n382(x)
- end
-end
-
-def fun_l13_n817(x)
- if (x < 1)
- fun_l14_n40(x)
- else
- fun_l14_n757(x)
- end
-end
-
-def fun_l13_n818(x)
- if (x < 1)
- fun_l14_n220(x)
- else
- fun_l14_n781(x)
- end
-end
-
-def fun_l13_n819(x)
- if (x < 1)
- fun_l14_n507(x)
- else
- fun_l14_n602(x)
- end
-end
-
-def fun_l13_n820(x)
- if (x < 1)
- fun_l14_n39(x)
- else
- fun_l14_n798(x)
- end
-end
-
-def fun_l13_n821(x)
- if (x < 1)
- fun_l14_n412(x)
- else
- fun_l14_n58(x)
- end
-end
-
-def fun_l13_n822(x)
- if (x < 1)
- fun_l14_n599(x)
- else
- fun_l14_n206(x)
- end
-end
-
-def fun_l13_n823(x)
- if (x < 1)
- fun_l14_n294(x)
- else
- fun_l14_n711(x)
- end
-end
-
-def fun_l13_n824(x)
- if (x < 1)
- fun_l14_n421(x)
- else
- fun_l14_n191(x)
- end
-end
-
-def fun_l13_n825(x)
- if (x < 1)
- fun_l14_n598(x)
- else
- fun_l14_n547(x)
- end
-end
-
-def fun_l13_n826(x)
- if (x < 1)
- fun_l14_n131(x)
- else
- fun_l14_n29(x)
- end
-end
-
-def fun_l13_n827(x)
- if (x < 1)
- fun_l14_n19(x)
- else
- fun_l14_n213(x)
- end
-end
-
-def fun_l13_n828(x)
- if (x < 1)
- fun_l14_n202(x)
- else
- fun_l14_n195(x)
- end
-end
-
-def fun_l13_n829(x)
- if (x < 1)
- fun_l14_n133(x)
- else
- fun_l14_n949(x)
- end
-end
-
-def fun_l13_n830(x)
- if (x < 1)
- fun_l14_n402(x)
- else
- fun_l14_n762(x)
- end
-end
-
-def fun_l13_n831(x)
- if (x < 1)
- fun_l14_n233(x)
- else
- fun_l14_n984(x)
- end
-end
-
-def fun_l13_n832(x)
- if (x < 1)
- fun_l14_n309(x)
- else
- fun_l14_n545(x)
- end
-end
-
-def fun_l13_n833(x)
- if (x < 1)
- fun_l14_n160(x)
- else
- fun_l14_n434(x)
- end
-end
-
-def fun_l13_n834(x)
- if (x < 1)
- fun_l14_n909(x)
- else
- fun_l14_n681(x)
- end
-end
-
-def fun_l13_n835(x)
- if (x < 1)
- fun_l14_n747(x)
- else
- fun_l14_n813(x)
- end
-end
-
-def fun_l13_n836(x)
- if (x < 1)
- fun_l14_n338(x)
- else
- fun_l14_n592(x)
- end
-end
-
-def fun_l13_n837(x)
- if (x < 1)
- fun_l14_n707(x)
- else
- fun_l14_n587(x)
- end
-end
-
-def fun_l13_n838(x)
- if (x < 1)
- fun_l14_n655(x)
- else
- fun_l14_n207(x)
- end
-end
-
-def fun_l13_n839(x)
- if (x < 1)
- fun_l14_n231(x)
- else
- fun_l14_n459(x)
- end
-end
-
-def fun_l13_n840(x)
- if (x < 1)
- fun_l14_n351(x)
- else
- fun_l14_n228(x)
- end
-end
-
-def fun_l13_n841(x)
- if (x < 1)
- fun_l14_n205(x)
- else
- fun_l14_n628(x)
- end
-end
-
-def fun_l13_n842(x)
- if (x < 1)
- fun_l14_n725(x)
- else
- fun_l14_n246(x)
- end
-end
-
-def fun_l13_n843(x)
- if (x < 1)
- fun_l14_n297(x)
- else
- fun_l14_n891(x)
- end
-end
-
-def fun_l13_n844(x)
- if (x < 1)
- fun_l14_n598(x)
- else
- fun_l14_n168(x)
- end
-end
-
-def fun_l13_n845(x)
- if (x < 1)
- fun_l14_n101(x)
- else
- fun_l14_n681(x)
- end
-end
-
-def fun_l13_n846(x)
- if (x < 1)
- fun_l14_n162(x)
- else
- fun_l14_n270(x)
- end
-end
-
-def fun_l13_n847(x)
- if (x < 1)
- fun_l14_n84(x)
- else
- fun_l14_n957(x)
- end
-end
-
-def fun_l13_n848(x)
- if (x < 1)
- fun_l14_n16(x)
- else
- fun_l14_n708(x)
- end
-end
-
-def fun_l13_n849(x)
- if (x < 1)
- fun_l14_n636(x)
- else
- fun_l14_n518(x)
- end
-end
-
-def fun_l13_n850(x)
- if (x < 1)
- fun_l14_n379(x)
- else
- fun_l14_n595(x)
- end
-end
-
-def fun_l13_n851(x)
- if (x < 1)
- fun_l14_n258(x)
- else
- fun_l14_n757(x)
- end
-end
-
-def fun_l13_n852(x)
- if (x < 1)
- fun_l14_n995(x)
- else
- fun_l14_n380(x)
- end
-end
-
-def fun_l13_n853(x)
- if (x < 1)
- fun_l14_n505(x)
- else
- fun_l14_n934(x)
- end
-end
-
-def fun_l13_n854(x)
- if (x < 1)
- fun_l14_n268(x)
- else
- fun_l14_n36(x)
- end
-end
-
-def fun_l13_n855(x)
- if (x < 1)
- fun_l14_n795(x)
- else
- fun_l14_n905(x)
- end
-end
-
-def fun_l13_n856(x)
- if (x < 1)
- fun_l14_n136(x)
- else
- fun_l14_n750(x)
- end
-end
-
-def fun_l13_n857(x)
- if (x < 1)
- fun_l14_n120(x)
- else
- fun_l14_n156(x)
- end
-end
-
-def fun_l13_n858(x)
- if (x < 1)
- fun_l14_n157(x)
- else
- fun_l14_n414(x)
- end
-end
-
-def fun_l13_n859(x)
- if (x < 1)
- fun_l14_n926(x)
- else
- fun_l14_n718(x)
- end
-end
-
-def fun_l13_n860(x)
- if (x < 1)
- fun_l14_n904(x)
- else
- fun_l14_n821(x)
- end
-end
-
-def fun_l13_n861(x)
- if (x < 1)
- fun_l14_n887(x)
- else
- fun_l14_n407(x)
- end
-end
-
-def fun_l13_n862(x)
- if (x < 1)
- fun_l14_n870(x)
- else
- fun_l14_n950(x)
- end
-end
-
-def fun_l13_n863(x)
- if (x < 1)
- fun_l14_n267(x)
- else
- fun_l14_n712(x)
- end
-end
-
-def fun_l13_n864(x)
- if (x < 1)
- fun_l14_n409(x)
- else
- fun_l14_n309(x)
- end
-end
-
-def fun_l13_n865(x)
- if (x < 1)
- fun_l14_n345(x)
- else
- fun_l14_n110(x)
- end
-end
-
-def fun_l13_n866(x)
- if (x < 1)
- fun_l14_n401(x)
- else
- fun_l14_n970(x)
- end
-end
-
-def fun_l13_n867(x)
- if (x < 1)
- fun_l14_n814(x)
- else
- fun_l14_n260(x)
- end
-end
-
-def fun_l13_n868(x)
- if (x < 1)
- fun_l14_n490(x)
- else
- fun_l14_n31(x)
- end
-end
-
-def fun_l13_n869(x)
- if (x < 1)
- fun_l14_n214(x)
- else
- fun_l14_n425(x)
- end
-end
-
-def fun_l13_n870(x)
- if (x < 1)
- fun_l14_n660(x)
- else
- fun_l14_n703(x)
- end
-end
-
-def fun_l13_n871(x)
- if (x < 1)
- fun_l14_n650(x)
- else
- fun_l14_n257(x)
- end
-end
-
-def fun_l13_n872(x)
- if (x < 1)
- fun_l14_n701(x)
- else
- fun_l14_n55(x)
- end
-end
-
-def fun_l13_n873(x)
- if (x < 1)
- fun_l14_n225(x)
- else
- fun_l14_n701(x)
- end
-end
-
-def fun_l13_n874(x)
- if (x < 1)
- fun_l14_n525(x)
- else
- fun_l14_n793(x)
- end
-end
-
-def fun_l13_n875(x)
- if (x < 1)
- fun_l14_n87(x)
- else
- fun_l14_n807(x)
- end
-end
-
-def fun_l13_n876(x)
- if (x < 1)
- fun_l14_n24(x)
- else
- fun_l14_n15(x)
- end
-end
-
-def fun_l13_n877(x)
- if (x < 1)
- fun_l14_n120(x)
- else
- fun_l14_n551(x)
- end
-end
-
-def fun_l13_n878(x)
- if (x < 1)
- fun_l14_n703(x)
- else
- fun_l14_n67(x)
- end
-end
-
-def fun_l13_n879(x)
- if (x < 1)
- fun_l14_n496(x)
- else
- fun_l14_n197(x)
- end
-end
-
-def fun_l13_n880(x)
- if (x < 1)
- fun_l14_n369(x)
- else
- fun_l14_n834(x)
- end
-end
-
-def fun_l13_n881(x)
- if (x < 1)
- fun_l14_n892(x)
- else
- fun_l14_n210(x)
- end
-end
-
-def fun_l13_n882(x)
- if (x < 1)
- fun_l14_n587(x)
- else
- fun_l14_n472(x)
- end
-end
-
-def fun_l13_n883(x)
- if (x < 1)
- fun_l14_n1(x)
- else
- fun_l14_n778(x)
- end
-end
-
-def fun_l13_n884(x)
- if (x < 1)
- fun_l14_n762(x)
- else
- fun_l14_n286(x)
- end
-end
-
-def fun_l13_n885(x)
- if (x < 1)
- fun_l14_n36(x)
- else
- fun_l14_n326(x)
- end
-end
-
-def fun_l13_n886(x)
- if (x < 1)
- fun_l14_n857(x)
- else
- fun_l14_n564(x)
- end
-end
-
-def fun_l13_n887(x)
- if (x < 1)
- fun_l14_n461(x)
- else
- fun_l14_n415(x)
- end
-end
-
-def fun_l13_n888(x)
- if (x < 1)
- fun_l14_n225(x)
- else
- fun_l14_n783(x)
- end
-end
-
-def fun_l13_n889(x)
- if (x < 1)
- fun_l14_n10(x)
- else
- fun_l14_n114(x)
- end
-end
-
-def fun_l13_n890(x)
- if (x < 1)
- fun_l14_n670(x)
- else
- fun_l14_n473(x)
- end
-end
-
-def fun_l13_n891(x)
- if (x < 1)
- fun_l14_n777(x)
- else
- fun_l14_n98(x)
- end
-end
-
-def fun_l13_n892(x)
- if (x < 1)
- fun_l14_n600(x)
- else
- fun_l14_n808(x)
- end
-end
-
-def fun_l13_n893(x)
- if (x < 1)
- fun_l14_n605(x)
- else
- fun_l14_n687(x)
- end
-end
-
-def fun_l13_n894(x)
- if (x < 1)
- fun_l14_n29(x)
- else
- fun_l14_n190(x)
- end
-end
-
-def fun_l13_n895(x)
- if (x < 1)
- fun_l14_n26(x)
- else
- fun_l14_n887(x)
- end
-end
-
-def fun_l13_n896(x)
- if (x < 1)
- fun_l14_n680(x)
- else
- fun_l14_n413(x)
- end
-end
-
-def fun_l13_n897(x)
- if (x < 1)
- fun_l14_n634(x)
- else
- fun_l14_n184(x)
- end
-end
-
-def fun_l13_n898(x)
- if (x < 1)
- fun_l14_n420(x)
- else
- fun_l14_n603(x)
- end
-end
-
-def fun_l13_n899(x)
- if (x < 1)
- fun_l14_n702(x)
- else
- fun_l14_n54(x)
- end
-end
-
-def fun_l13_n900(x)
- if (x < 1)
- fun_l14_n620(x)
- else
- fun_l14_n849(x)
- end
-end
-
-def fun_l13_n901(x)
- if (x < 1)
- fun_l14_n848(x)
- else
- fun_l14_n384(x)
- end
-end
-
-def fun_l13_n902(x)
- if (x < 1)
- fun_l14_n726(x)
- else
- fun_l14_n624(x)
- end
-end
-
-def fun_l13_n903(x)
- if (x < 1)
- fun_l14_n663(x)
- else
- fun_l14_n395(x)
- end
-end
-
-def fun_l13_n904(x)
- if (x < 1)
- fun_l14_n803(x)
- else
- fun_l14_n979(x)
- end
-end
-
-def fun_l13_n905(x)
- if (x < 1)
- fun_l14_n487(x)
- else
- fun_l14_n530(x)
- end
-end
-
-def fun_l13_n906(x)
- if (x < 1)
- fun_l14_n737(x)
- else
- fun_l14_n679(x)
- end
-end
-
-def fun_l13_n907(x)
- if (x < 1)
- fun_l14_n815(x)
- else
- fun_l14_n84(x)
- end
-end
-
-def fun_l13_n908(x)
- if (x < 1)
- fun_l14_n116(x)
- else
- fun_l14_n820(x)
- end
-end
-
-def fun_l13_n909(x)
- if (x < 1)
- fun_l14_n353(x)
- else
- fun_l14_n949(x)
- end
-end
-
-def fun_l13_n910(x)
- if (x < 1)
- fun_l14_n271(x)
- else
- fun_l14_n168(x)
- end
-end
-
-def fun_l13_n911(x)
- if (x < 1)
- fun_l14_n54(x)
- else
- fun_l14_n236(x)
- end
-end
-
-def fun_l13_n912(x)
- if (x < 1)
- fun_l14_n391(x)
- else
- fun_l14_n152(x)
- end
-end
-
-def fun_l13_n913(x)
- if (x < 1)
- fun_l14_n450(x)
- else
- fun_l14_n521(x)
- end
-end
-
-def fun_l13_n914(x)
- if (x < 1)
- fun_l14_n36(x)
- else
- fun_l14_n995(x)
- end
-end
-
-def fun_l13_n915(x)
- if (x < 1)
- fun_l14_n177(x)
- else
- fun_l14_n358(x)
- end
-end
-
-def fun_l13_n916(x)
- if (x < 1)
- fun_l14_n36(x)
- else
- fun_l14_n32(x)
- end
-end
-
-def fun_l13_n917(x)
- if (x < 1)
- fun_l14_n970(x)
- else
- fun_l14_n957(x)
- end
-end
-
-def fun_l13_n918(x)
- if (x < 1)
- fun_l14_n229(x)
- else
- fun_l14_n138(x)
- end
-end
-
-def fun_l13_n919(x)
- if (x < 1)
- fun_l14_n439(x)
- else
- fun_l14_n641(x)
- end
-end
-
-def fun_l13_n920(x)
- if (x < 1)
- fun_l14_n318(x)
- else
- fun_l14_n649(x)
- end
-end
-
-def fun_l13_n921(x)
- if (x < 1)
- fun_l14_n455(x)
- else
- fun_l14_n312(x)
- end
-end
-
-def fun_l13_n922(x)
- if (x < 1)
- fun_l14_n15(x)
- else
- fun_l14_n825(x)
- end
-end
-
-def fun_l13_n923(x)
- if (x < 1)
- fun_l14_n546(x)
- else
- fun_l14_n629(x)
- end
-end
-
-def fun_l13_n924(x)
- if (x < 1)
- fun_l14_n298(x)
- else
- fun_l14_n563(x)
- end
-end
-
-def fun_l13_n925(x)
- if (x < 1)
- fun_l14_n312(x)
- else
- fun_l14_n736(x)
- end
-end
-
-def fun_l13_n926(x)
- if (x < 1)
- fun_l14_n767(x)
- else
- fun_l14_n107(x)
- end
-end
-
-def fun_l13_n927(x)
- if (x < 1)
- fun_l14_n966(x)
- else
- fun_l14_n765(x)
- end
-end
-
-def fun_l13_n928(x)
- if (x < 1)
- fun_l14_n545(x)
- else
- fun_l14_n383(x)
- end
-end
-
-def fun_l13_n929(x)
- if (x < 1)
- fun_l14_n389(x)
- else
- fun_l14_n48(x)
- end
-end
-
-def fun_l13_n930(x)
- if (x < 1)
- fun_l14_n142(x)
- else
- fun_l14_n632(x)
- end
-end
-
-def fun_l13_n931(x)
- if (x < 1)
- fun_l14_n146(x)
- else
- fun_l14_n275(x)
- end
-end
-
-def fun_l13_n932(x)
- if (x < 1)
- fun_l14_n754(x)
- else
- fun_l14_n380(x)
- end
-end
-
-def fun_l13_n933(x)
- if (x < 1)
- fun_l14_n561(x)
- else
- fun_l14_n677(x)
- end
-end
-
-def fun_l13_n934(x)
- if (x < 1)
- fun_l14_n253(x)
- else
- fun_l14_n86(x)
- end
-end
-
-def fun_l13_n935(x)
- if (x < 1)
- fun_l14_n528(x)
- else
- fun_l14_n177(x)
- end
-end
-
-def fun_l13_n936(x)
- if (x < 1)
- fun_l14_n938(x)
- else
- fun_l14_n265(x)
- end
-end
-
-def fun_l13_n937(x)
- if (x < 1)
- fun_l14_n763(x)
- else
- fun_l14_n662(x)
- end
-end
-
-def fun_l13_n938(x)
- if (x < 1)
- fun_l14_n836(x)
- else
- fun_l14_n734(x)
- end
-end
-
-def fun_l13_n939(x)
- if (x < 1)
- fun_l14_n127(x)
- else
- fun_l14_n111(x)
- end
-end
-
-def fun_l13_n940(x)
- if (x < 1)
- fun_l14_n356(x)
- else
- fun_l14_n544(x)
- end
-end
-
-def fun_l13_n941(x)
- if (x < 1)
- fun_l14_n525(x)
- else
- fun_l14_n762(x)
- end
-end
-
-def fun_l13_n942(x)
- if (x < 1)
- fun_l14_n333(x)
- else
- fun_l14_n639(x)
- end
-end
-
-def fun_l13_n943(x)
- if (x < 1)
- fun_l14_n452(x)
- else
- fun_l14_n944(x)
- end
-end
-
-def fun_l13_n944(x)
- if (x < 1)
- fun_l14_n827(x)
- else
- fun_l14_n961(x)
- end
-end
-
-def fun_l13_n945(x)
- if (x < 1)
- fun_l14_n991(x)
- else
- fun_l14_n431(x)
- end
-end
-
-def fun_l13_n946(x)
- if (x < 1)
- fun_l14_n646(x)
- else
- fun_l14_n183(x)
- end
-end
-
-def fun_l13_n947(x)
- if (x < 1)
- fun_l14_n107(x)
- else
- fun_l14_n273(x)
- end
-end
-
-def fun_l13_n948(x)
- if (x < 1)
- fun_l14_n210(x)
- else
- fun_l14_n664(x)
- end
-end
-
-def fun_l13_n949(x)
- if (x < 1)
- fun_l14_n542(x)
- else
- fun_l14_n462(x)
- end
-end
-
-def fun_l13_n950(x)
- if (x < 1)
- fun_l14_n891(x)
- else
- fun_l14_n486(x)
- end
-end
-
-def fun_l13_n951(x)
- if (x < 1)
- fun_l14_n527(x)
- else
- fun_l14_n721(x)
- end
-end
-
-def fun_l13_n952(x)
- if (x < 1)
- fun_l14_n745(x)
- else
- fun_l14_n11(x)
- end
-end
-
-def fun_l13_n953(x)
- if (x < 1)
- fun_l14_n427(x)
- else
- fun_l14_n521(x)
- end
-end
-
-def fun_l13_n954(x)
- if (x < 1)
- fun_l14_n907(x)
- else
- fun_l14_n878(x)
- end
-end
-
-def fun_l13_n955(x)
- if (x < 1)
- fun_l14_n818(x)
- else
- fun_l14_n722(x)
- end
-end
-
-def fun_l13_n956(x)
- if (x < 1)
- fun_l14_n567(x)
- else
- fun_l14_n71(x)
- end
-end
-
-def fun_l13_n957(x)
- if (x < 1)
- fun_l14_n203(x)
- else
- fun_l14_n221(x)
- end
-end
-
-def fun_l13_n958(x)
- if (x < 1)
- fun_l14_n173(x)
- else
- fun_l14_n854(x)
- end
-end
-
-def fun_l13_n959(x)
- if (x < 1)
- fun_l14_n201(x)
- else
- fun_l14_n930(x)
- end
-end
-
-def fun_l13_n960(x)
- if (x < 1)
- fun_l14_n736(x)
- else
- fun_l14_n539(x)
- end
-end
-
-def fun_l13_n961(x)
- if (x < 1)
- fun_l14_n459(x)
- else
- fun_l14_n771(x)
- end
-end
-
-def fun_l13_n962(x)
- if (x < 1)
- fun_l14_n682(x)
- else
- fun_l14_n19(x)
- end
-end
-
-def fun_l13_n963(x)
- if (x < 1)
- fun_l14_n897(x)
- else
- fun_l14_n650(x)
- end
-end
-
-def fun_l13_n964(x)
- if (x < 1)
- fun_l14_n814(x)
- else
- fun_l14_n726(x)
- end
-end
-
-def fun_l13_n965(x)
- if (x < 1)
- fun_l14_n31(x)
- else
- fun_l14_n211(x)
- end
-end
-
-def fun_l13_n966(x)
- if (x < 1)
- fun_l14_n89(x)
- else
- fun_l14_n407(x)
- end
-end
-
-def fun_l13_n967(x)
- if (x < 1)
- fun_l14_n772(x)
- else
- fun_l14_n7(x)
- end
-end
-
-def fun_l13_n968(x)
- if (x < 1)
- fun_l14_n764(x)
- else
- fun_l14_n523(x)
- end
-end
-
-def fun_l13_n969(x)
- if (x < 1)
- fun_l14_n680(x)
- else
- fun_l14_n674(x)
- end
-end
-
-def fun_l13_n970(x)
- if (x < 1)
- fun_l14_n517(x)
- else
- fun_l14_n346(x)
- end
-end
-
-def fun_l13_n971(x)
- if (x < 1)
- fun_l14_n136(x)
- else
- fun_l14_n921(x)
- end
-end
-
-def fun_l13_n972(x)
- if (x < 1)
- fun_l14_n400(x)
- else
- fun_l14_n901(x)
- end
-end
-
-def fun_l13_n973(x)
- if (x < 1)
- fun_l14_n62(x)
- else
- fun_l14_n784(x)
- end
-end
-
-def fun_l13_n974(x)
- if (x < 1)
- fun_l14_n411(x)
- else
- fun_l14_n889(x)
- end
-end
-
-def fun_l13_n975(x)
- if (x < 1)
- fun_l14_n291(x)
- else
- fun_l14_n198(x)
- end
-end
-
-def fun_l13_n976(x)
- if (x < 1)
- fun_l14_n229(x)
- else
- fun_l14_n346(x)
- end
-end
-
-def fun_l13_n977(x)
- if (x < 1)
- fun_l14_n769(x)
- else
- fun_l14_n381(x)
- end
-end
-
-def fun_l13_n978(x)
- if (x < 1)
- fun_l14_n430(x)
- else
- fun_l14_n205(x)
- end
-end
-
-def fun_l13_n979(x)
- if (x < 1)
- fun_l14_n170(x)
- else
- fun_l14_n927(x)
- end
-end
-
-def fun_l13_n980(x)
- if (x < 1)
- fun_l14_n12(x)
- else
- fun_l14_n605(x)
- end
-end
-
-def fun_l13_n981(x)
- if (x < 1)
- fun_l14_n613(x)
- else
- fun_l14_n912(x)
- end
-end
-
-def fun_l13_n982(x)
- if (x < 1)
- fun_l14_n982(x)
- else
- fun_l14_n707(x)
- end
-end
-
-def fun_l13_n983(x)
- if (x < 1)
- fun_l14_n230(x)
- else
- fun_l14_n239(x)
- end
-end
-
-def fun_l13_n984(x)
- if (x < 1)
- fun_l14_n55(x)
- else
- fun_l14_n337(x)
- end
-end
-
-def fun_l13_n985(x)
- if (x < 1)
- fun_l14_n853(x)
- else
- fun_l14_n425(x)
- end
-end
-
-def fun_l13_n986(x)
- if (x < 1)
- fun_l14_n14(x)
- else
- fun_l14_n921(x)
- end
-end
-
-def fun_l13_n987(x)
- if (x < 1)
- fun_l14_n166(x)
- else
- fun_l14_n948(x)
- end
-end
-
-def fun_l13_n988(x)
- if (x < 1)
- fun_l14_n752(x)
- else
- fun_l14_n226(x)
- end
-end
-
-def fun_l13_n989(x)
- if (x < 1)
- fun_l14_n730(x)
- else
- fun_l14_n671(x)
- end
-end
-
-def fun_l13_n990(x)
- if (x < 1)
- fun_l14_n603(x)
- else
- fun_l14_n903(x)
- end
-end
-
-def fun_l13_n991(x)
- if (x < 1)
- fun_l14_n598(x)
- else
- fun_l14_n842(x)
- end
-end
-
-def fun_l13_n992(x)
- if (x < 1)
- fun_l14_n230(x)
- else
- fun_l14_n704(x)
- end
-end
-
-def fun_l13_n993(x)
- if (x < 1)
- fun_l14_n897(x)
- else
- fun_l14_n190(x)
- end
-end
-
-def fun_l13_n994(x)
- if (x < 1)
- fun_l14_n640(x)
- else
- fun_l14_n622(x)
- end
-end
-
-def fun_l13_n995(x)
- if (x < 1)
- fun_l14_n988(x)
- else
- fun_l14_n471(x)
- end
-end
-
-def fun_l13_n996(x)
- if (x < 1)
- fun_l14_n721(x)
- else
- fun_l14_n672(x)
- end
-end
-
-def fun_l13_n997(x)
- if (x < 1)
- fun_l14_n425(x)
- else
- fun_l14_n885(x)
- end
-end
-
-def fun_l13_n998(x)
- if (x < 1)
- fun_l14_n279(x)
- else
- fun_l14_n966(x)
- end
-end
-
-def fun_l13_n999(x)
- if (x < 1)
- fun_l14_n610(x)
- else
- fun_l14_n319(x)
- end
-end
-
-def fun_l14_n0(x)
- if (x < 1)
- fun_l15_n46(x)
- else
- fun_l15_n966(x)
- end
-end
-
-def fun_l14_n1(x)
- if (x < 1)
- fun_l15_n360(x)
- else
- fun_l15_n637(x)
- end
-end
-
-def fun_l14_n2(x)
- if (x < 1)
- fun_l15_n381(x)
- else
- fun_l15_n728(x)
- end
-end
-
-def fun_l14_n3(x)
- if (x < 1)
- fun_l15_n189(x)
- else
- fun_l15_n826(x)
- end
-end
-
-def fun_l14_n4(x)
- if (x < 1)
- fun_l15_n789(x)
- else
- fun_l15_n157(x)
- end
-end
-
-def fun_l14_n5(x)
- if (x < 1)
- fun_l15_n132(x)
- else
- fun_l15_n703(x)
- end
-end
-
-def fun_l14_n6(x)
- if (x < 1)
- fun_l15_n64(x)
- else
- fun_l15_n537(x)
- end
-end
-
-def fun_l14_n7(x)
- if (x < 1)
- fun_l15_n423(x)
- else
- fun_l15_n162(x)
- end
-end
-
-def fun_l14_n8(x)
- if (x < 1)
- fun_l15_n177(x)
- else
- fun_l15_n923(x)
- end
-end
-
-def fun_l14_n9(x)
- if (x < 1)
- fun_l15_n508(x)
- else
- fun_l15_n135(x)
- end
-end
-
-def fun_l14_n10(x)
- if (x < 1)
- fun_l15_n640(x)
- else
- fun_l15_n869(x)
- end
-end
-
-def fun_l14_n11(x)
- if (x < 1)
- fun_l15_n592(x)
- else
- fun_l15_n519(x)
- end
-end
-
-def fun_l14_n12(x)
- if (x < 1)
- fun_l15_n332(x)
- else
- fun_l15_n263(x)
- end
-end
-
-def fun_l14_n13(x)
- if (x < 1)
- fun_l15_n644(x)
- else
- fun_l15_n21(x)
- end
-end
-
-def fun_l14_n14(x)
- if (x < 1)
- fun_l15_n436(x)
- else
- fun_l15_n566(x)
- end
-end
-
-def fun_l14_n15(x)
- if (x < 1)
- fun_l15_n160(x)
- else
- fun_l15_n291(x)
- end
-end
-
-def fun_l14_n16(x)
- if (x < 1)
- fun_l15_n726(x)
- else
- fun_l15_n704(x)
- end
-end
-
-def fun_l14_n17(x)
- if (x < 1)
- fun_l15_n237(x)
- else
- fun_l15_n962(x)
- end
-end
-
-def fun_l14_n18(x)
- if (x < 1)
- fun_l15_n941(x)
- else
- fun_l15_n217(x)
- end
-end
-
-def fun_l14_n19(x)
- if (x < 1)
- fun_l15_n904(x)
- else
- fun_l15_n36(x)
- end
-end
-
-def fun_l14_n20(x)
- if (x < 1)
- fun_l15_n74(x)
- else
- fun_l15_n790(x)
- end
-end
-
-def fun_l14_n21(x)
- if (x < 1)
- fun_l15_n694(x)
- else
- fun_l15_n298(x)
- end
-end
-
-def fun_l14_n22(x)
- if (x < 1)
- fun_l15_n757(x)
- else
- fun_l15_n636(x)
- end
-end
-
-def fun_l14_n23(x)
- if (x < 1)
- fun_l15_n989(x)
- else
- fun_l15_n508(x)
- end
-end
-
-def fun_l14_n24(x)
- if (x < 1)
- fun_l15_n80(x)
- else
- fun_l15_n686(x)
- end
-end
-
-def fun_l14_n25(x)
- if (x < 1)
- fun_l15_n365(x)
- else
- fun_l15_n922(x)
- end
-end
-
-def fun_l14_n26(x)
- if (x < 1)
- fun_l15_n922(x)
- else
- fun_l15_n207(x)
- end
-end
-
-def fun_l14_n27(x)
- if (x < 1)
- fun_l15_n406(x)
- else
- fun_l15_n481(x)
- end
-end
-
-def fun_l14_n28(x)
- if (x < 1)
- fun_l15_n986(x)
- else
- fun_l15_n181(x)
- end
-end
-
-def fun_l14_n29(x)
- if (x < 1)
- fun_l15_n958(x)
- else
- fun_l15_n804(x)
- end
-end
-
-def fun_l14_n30(x)
- if (x < 1)
- fun_l15_n233(x)
- else
- fun_l15_n877(x)
- end
-end
-
-def fun_l14_n31(x)
- if (x < 1)
- fun_l15_n648(x)
- else
- fun_l15_n547(x)
- end
-end
-
-def fun_l14_n32(x)
- if (x < 1)
- fun_l15_n641(x)
- else
- fun_l15_n628(x)
- end
-end
-
-def fun_l14_n33(x)
- if (x < 1)
- fun_l15_n351(x)
- else
- fun_l15_n280(x)
- end
-end
-
-def fun_l14_n34(x)
- if (x < 1)
- fun_l15_n373(x)
- else
- fun_l15_n948(x)
- end
-end
-
-def fun_l14_n35(x)
- if (x < 1)
- fun_l15_n761(x)
- else
- fun_l15_n384(x)
- end
-end
-
-def fun_l14_n36(x)
- if (x < 1)
- fun_l15_n75(x)
- else
- fun_l15_n581(x)
- end
-end
-
-def fun_l14_n37(x)
- if (x < 1)
- fun_l15_n962(x)
- else
- fun_l15_n723(x)
- end
-end
-
-def fun_l14_n38(x)
- if (x < 1)
- fun_l15_n422(x)
- else
- fun_l15_n953(x)
- end
-end
-
-def fun_l14_n39(x)
- if (x < 1)
- fun_l15_n123(x)
- else
- fun_l15_n989(x)
- end
-end
-
-def fun_l14_n40(x)
- if (x < 1)
- fun_l15_n789(x)
- else
- fun_l15_n472(x)
- end
-end
-
-def fun_l14_n41(x)
- if (x < 1)
- fun_l15_n261(x)
- else
- fun_l15_n997(x)
- end
-end
-
-def fun_l14_n42(x)
- if (x < 1)
- fun_l15_n231(x)
- else
- fun_l15_n703(x)
- end
-end
-
-def fun_l14_n43(x)
- if (x < 1)
- fun_l15_n520(x)
- else
- fun_l15_n252(x)
- end
-end
-
-def fun_l14_n44(x)
- if (x < 1)
- fun_l15_n966(x)
- else
- fun_l15_n244(x)
- end
-end
-
-def fun_l14_n45(x)
- if (x < 1)
- fun_l15_n192(x)
- else
- fun_l15_n280(x)
- end
-end
-
-def fun_l14_n46(x)
- if (x < 1)
- fun_l15_n422(x)
- else
- fun_l15_n847(x)
- end
-end
-
-def fun_l14_n47(x)
- if (x < 1)
- fun_l15_n228(x)
- else
- fun_l15_n564(x)
- end
-end
-
-def fun_l14_n48(x)
- if (x < 1)
- fun_l15_n263(x)
- else
- fun_l15_n226(x)
- end
-end
-
-def fun_l14_n49(x)
- if (x < 1)
- fun_l15_n440(x)
- else
- fun_l15_n592(x)
- end
-end
-
-def fun_l14_n50(x)
- if (x < 1)
- fun_l15_n464(x)
- else
- fun_l15_n135(x)
- end
-end
-
-def fun_l14_n51(x)
- if (x < 1)
- fun_l15_n903(x)
- else
- fun_l15_n821(x)
- end
-end
-
-def fun_l14_n52(x)
- if (x < 1)
- fun_l15_n472(x)
- else
- fun_l15_n322(x)
- end
-end
-
-def fun_l14_n53(x)
- if (x < 1)
- fun_l15_n107(x)
- else
- fun_l15_n497(x)
- end
-end
-
-def fun_l14_n54(x)
- if (x < 1)
- fun_l15_n692(x)
- else
- fun_l15_n392(x)
- end
-end
-
-def fun_l14_n55(x)
- if (x < 1)
- fun_l15_n694(x)
- else
- fun_l15_n995(x)
- end
-end
-
-def fun_l14_n56(x)
- if (x < 1)
- fun_l15_n181(x)
- else
- fun_l15_n200(x)
- end
-end
-
-def fun_l14_n57(x)
- if (x < 1)
- fun_l15_n721(x)
- else
- fun_l15_n849(x)
- end
-end
-
-def fun_l14_n58(x)
- if (x < 1)
- fun_l15_n626(x)
- else
- fun_l15_n866(x)
- end
-end
-
-def fun_l14_n59(x)
- if (x < 1)
- fun_l15_n689(x)
- else
- fun_l15_n387(x)
- end
-end
-
-def fun_l14_n60(x)
- if (x < 1)
- fun_l15_n805(x)
- else
- fun_l15_n842(x)
- end
-end
-
-def fun_l14_n61(x)
- if (x < 1)
- fun_l15_n457(x)
- else
- fun_l15_n472(x)
- end
-end
-
-def fun_l14_n62(x)
- if (x < 1)
- fun_l15_n884(x)
- else
- fun_l15_n786(x)
- end
-end
-
-def fun_l14_n63(x)
- if (x < 1)
- fun_l15_n509(x)
- else
- fun_l15_n106(x)
- end
-end
-
-def fun_l14_n64(x)
- if (x < 1)
- fun_l15_n600(x)
- else
- fun_l15_n314(x)
- end
-end
-
-def fun_l14_n65(x)
- if (x < 1)
- fun_l15_n761(x)
- else
- fun_l15_n362(x)
- end
-end
-
-def fun_l14_n66(x)
- if (x < 1)
- fun_l15_n812(x)
- else
- fun_l15_n640(x)
- end
-end
-
-def fun_l14_n67(x)
- if (x < 1)
- fun_l15_n862(x)
- else
- fun_l15_n627(x)
- end
-end
-
-def fun_l14_n68(x)
- if (x < 1)
- fun_l15_n503(x)
- else
- fun_l15_n381(x)
- end
-end
-
-def fun_l14_n69(x)
- if (x < 1)
- fun_l15_n482(x)
- else
- fun_l15_n851(x)
- end
-end
-
-def fun_l14_n70(x)
- if (x < 1)
- fun_l15_n253(x)
- else
- fun_l15_n728(x)
- end
-end
-
-def fun_l14_n71(x)
- if (x < 1)
- fun_l15_n195(x)
- else
- fun_l15_n537(x)
- end
-end
-
-def fun_l14_n72(x)
- if (x < 1)
- fun_l15_n482(x)
- else
- fun_l15_n604(x)
- end
-end
-
-def fun_l14_n73(x)
- if (x < 1)
- fun_l15_n373(x)
- else
- fun_l15_n502(x)
- end
-end
-
-def fun_l14_n74(x)
- if (x < 1)
- fun_l15_n183(x)
- else
- fun_l15_n50(x)
- end
-end
-
-def fun_l14_n75(x)
- if (x < 1)
- fun_l15_n397(x)
- else
- fun_l15_n467(x)
- end
-end
-
-def fun_l14_n76(x)
- if (x < 1)
- fun_l15_n207(x)
- else
- fun_l15_n566(x)
- end
-end
-
-def fun_l14_n77(x)
- if (x < 1)
- fun_l15_n416(x)
- else
- fun_l15_n846(x)
- end
-end
-
-def fun_l14_n78(x)
- if (x < 1)
- fun_l15_n426(x)
- else
- fun_l15_n142(x)
- end
-end
-
-def fun_l14_n79(x)
- if (x < 1)
- fun_l15_n234(x)
- else
- fun_l15_n5(x)
- end
-end
-
-def fun_l14_n80(x)
- if (x < 1)
- fun_l15_n133(x)
- else
- fun_l15_n216(x)
- end
-end
-
-def fun_l14_n81(x)
- if (x < 1)
- fun_l15_n23(x)
- else
- fun_l15_n126(x)
- end
-end
-
-def fun_l14_n82(x)
- if (x < 1)
- fun_l15_n129(x)
- else
- fun_l15_n614(x)
- end
-end
-
-def fun_l14_n83(x)
- if (x < 1)
- fun_l15_n560(x)
- else
- fun_l15_n559(x)
- end
-end
-
-def fun_l14_n84(x)
- if (x < 1)
- fun_l15_n113(x)
- else
- fun_l15_n300(x)
- end
-end
-
-def fun_l14_n85(x)
- if (x < 1)
- fun_l15_n584(x)
- else
- fun_l15_n249(x)
- end
-end
-
-def fun_l14_n86(x)
- if (x < 1)
- fun_l15_n933(x)
- else
- fun_l15_n280(x)
- end
-end
-
-def fun_l14_n87(x)
- if (x < 1)
- fun_l15_n528(x)
- else
- fun_l15_n350(x)
- end
-end
-
-def fun_l14_n88(x)
- if (x < 1)
- fun_l15_n568(x)
- else
- fun_l15_n762(x)
- end
-end
-
-def fun_l14_n89(x)
- if (x < 1)
- fun_l15_n190(x)
- else
- fun_l15_n858(x)
- end
-end
-
-def fun_l14_n90(x)
- if (x < 1)
- fun_l15_n896(x)
- else
- fun_l15_n543(x)
- end
-end
-
-def fun_l14_n91(x)
- if (x < 1)
- fun_l15_n937(x)
- else
- fun_l15_n593(x)
- end
-end
-
-def fun_l14_n92(x)
- if (x < 1)
- fun_l15_n135(x)
- else
- fun_l15_n5(x)
- end
-end
-
-def fun_l14_n93(x)
- if (x < 1)
- fun_l15_n351(x)
- else
- fun_l15_n779(x)
- end
-end
-
-def fun_l14_n94(x)
- if (x < 1)
- fun_l15_n617(x)
- else
- fun_l15_n375(x)
- end
-end
-
-def fun_l14_n95(x)
- if (x < 1)
- fun_l15_n111(x)
- else
- fun_l15_n870(x)
- end
-end
-
-def fun_l14_n96(x)
- if (x < 1)
- fun_l15_n187(x)
- else
- fun_l15_n881(x)
- end
-end
-
-def fun_l14_n97(x)
- if (x < 1)
- fun_l15_n150(x)
- else
- fun_l15_n98(x)
- end
-end
-
-def fun_l14_n98(x)
- if (x < 1)
- fun_l15_n629(x)
- else
- fun_l15_n548(x)
- end
-end
-
-def fun_l14_n99(x)
- if (x < 1)
- fun_l15_n37(x)
- else
- fun_l15_n383(x)
- end
-end
-
-def fun_l14_n100(x)
- if (x < 1)
- fun_l15_n719(x)
- else
- fun_l15_n503(x)
- end
-end
-
-def fun_l14_n101(x)
- if (x < 1)
- fun_l15_n415(x)
- else
- fun_l15_n650(x)
- end
-end
-
-def fun_l14_n102(x)
- if (x < 1)
- fun_l15_n924(x)
- else
- fun_l15_n520(x)
- end
-end
-
-def fun_l14_n103(x)
- if (x < 1)
- fun_l15_n194(x)
- else
- fun_l15_n613(x)
- end
-end
-
-def fun_l14_n104(x)
- if (x < 1)
- fun_l15_n909(x)
- else
- fun_l15_n333(x)
- end
-end
-
-def fun_l14_n105(x)
- if (x < 1)
- fun_l15_n586(x)
- else
- fun_l15_n2(x)
- end
-end
-
-def fun_l14_n106(x)
- if (x < 1)
- fun_l15_n373(x)
- else
- fun_l15_n316(x)
- end
-end
-
-def fun_l14_n107(x)
- if (x < 1)
- fun_l15_n737(x)
- else
- fun_l15_n469(x)
- end
-end
-
-def fun_l14_n108(x)
- if (x < 1)
- fun_l15_n841(x)
- else
- fun_l15_n888(x)
- end
-end
-
-def fun_l14_n109(x)
- if (x < 1)
- fun_l15_n165(x)
- else
- fun_l15_n108(x)
- end
-end
-
-def fun_l14_n110(x)
- if (x < 1)
- fun_l15_n344(x)
- else
- fun_l15_n893(x)
- end
-end
-
-def fun_l14_n111(x)
- if (x < 1)
- fun_l15_n424(x)
- else
- fun_l15_n702(x)
- end
-end
-
-def fun_l14_n112(x)
- if (x < 1)
- fun_l15_n161(x)
- else
- fun_l15_n827(x)
- end
-end
-
-def fun_l14_n113(x)
- if (x < 1)
- fun_l15_n982(x)
- else
- fun_l15_n172(x)
- end
-end
-
-def fun_l14_n114(x)
- if (x < 1)
- fun_l15_n233(x)
- else
- fun_l15_n178(x)
- end
-end
-
-def fun_l14_n115(x)
- if (x < 1)
- fun_l15_n130(x)
- else
- fun_l15_n266(x)
- end
-end
-
-def fun_l14_n116(x)
- if (x < 1)
- fun_l15_n32(x)
- else
- fun_l15_n63(x)
- end
-end
-
-def fun_l14_n117(x)
- if (x < 1)
- fun_l15_n117(x)
- else
- fun_l15_n659(x)
- end
-end
-
-def fun_l14_n118(x)
- if (x < 1)
- fun_l15_n607(x)
- else
- fun_l15_n516(x)
- end
-end
-
-def fun_l14_n119(x)
- if (x < 1)
- fun_l15_n30(x)
- else
- fun_l15_n130(x)
- end
-end
-
-def fun_l14_n120(x)
- if (x < 1)
- fun_l15_n510(x)
- else
- fun_l15_n789(x)
- end
-end
-
-def fun_l14_n121(x)
- if (x < 1)
- fun_l15_n906(x)
- else
- fun_l15_n700(x)
- end
-end
-
-def fun_l14_n122(x)
- if (x < 1)
- fun_l15_n51(x)
- else
- fun_l15_n378(x)
- end
-end
-
-def fun_l14_n123(x)
- if (x < 1)
- fun_l15_n243(x)
- else
- fun_l15_n896(x)
- end
-end
-
-def fun_l14_n124(x)
- if (x < 1)
- fun_l15_n23(x)
- else
- fun_l15_n648(x)
- end
-end
-
-def fun_l14_n125(x)
- if (x < 1)
- fun_l15_n290(x)
- else
- fun_l15_n604(x)
- end
-end
-
-def fun_l14_n126(x)
- if (x < 1)
- fun_l15_n410(x)
- else
- fun_l15_n646(x)
- end
-end
-
-def fun_l14_n127(x)
- if (x < 1)
- fun_l15_n162(x)
- else
- fun_l15_n43(x)
- end
-end
-
-def fun_l14_n128(x)
- if (x < 1)
- fun_l15_n775(x)
- else
- fun_l15_n176(x)
- end
-end
-
-def fun_l14_n129(x)
- if (x < 1)
- fun_l15_n642(x)
- else
- fun_l15_n709(x)
- end
-end
-
-def fun_l14_n130(x)
- if (x < 1)
- fun_l15_n669(x)
- else
- fun_l15_n936(x)
- end
-end
-
-def fun_l14_n131(x)
- if (x < 1)
- fun_l15_n301(x)
- else
- fun_l15_n578(x)
- end
-end
-
-def fun_l14_n132(x)
- if (x < 1)
- fun_l15_n112(x)
- else
- fun_l15_n72(x)
- end
-end
-
-def fun_l14_n133(x)
- if (x < 1)
- fun_l15_n293(x)
- else
- fun_l15_n516(x)
- end
-end
-
-def fun_l14_n134(x)
- if (x < 1)
- fun_l15_n525(x)
- else
- fun_l15_n199(x)
- end
-end
-
-def fun_l14_n135(x)
- if (x < 1)
- fun_l15_n168(x)
- else
- fun_l15_n430(x)
- end
-end
-
-def fun_l14_n136(x)
- if (x < 1)
- fun_l15_n889(x)
- else
- fun_l15_n635(x)
- end
-end
-
-def fun_l14_n137(x)
- if (x < 1)
- fun_l15_n348(x)
- else
- fun_l15_n445(x)
- end
-end
-
-def fun_l14_n138(x)
- if (x < 1)
- fun_l15_n828(x)
- else
- fun_l15_n23(x)
- end
-end
-
-def fun_l14_n139(x)
- if (x < 1)
- fun_l15_n621(x)
- else
- fun_l15_n25(x)
- end
-end
-
-def fun_l14_n140(x)
- if (x < 1)
- fun_l15_n268(x)
- else
- fun_l15_n105(x)
- end
-end
-
-def fun_l14_n141(x)
- if (x < 1)
- fun_l15_n296(x)
- else
- fun_l15_n856(x)
- end
-end
-
-def fun_l14_n142(x)
- if (x < 1)
- fun_l15_n206(x)
- else
- fun_l15_n417(x)
- end
-end
-
-def fun_l14_n143(x)
- if (x < 1)
- fun_l15_n203(x)
- else
- fun_l15_n240(x)
- end
-end
-
-def fun_l14_n144(x)
- if (x < 1)
- fun_l15_n556(x)
- else
- fun_l15_n47(x)
- end
-end
-
-def fun_l14_n145(x)
- if (x < 1)
- fun_l15_n340(x)
- else
- fun_l15_n511(x)
- end
-end
-
-def fun_l14_n146(x)
- if (x < 1)
- fun_l15_n250(x)
- else
- fun_l15_n402(x)
- end
-end
-
-def fun_l14_n147(x)
- if (x < 1)
- fun_l15_n4(x)
- else
- fun_l15_n26(x)
- end
-end
-
-def fun_l14_n148(x)
- if (x < 1)
- fun_l15_n52(x)
- else
- fun_l15_n366(x)
- end
-end
-
-def fun_l14_n149(x)
- if (x < 1)
- fun_l15_n163(x)
- else
- fun_l15_n884(x)
- end
-end
-
-def fun_l14_n150(x)
- if (x < 1)
- fun_l15_n677(x)
- else
- fun_l15_n509(x)
- end
-end
-
-def fun_l14_n151(x)
- if (x < 1)
- fun_l15_n949(x)
- else
- fun_l15_n393(x)
- end
-end
-
-def fun_l14_n152(x)
- if (x < 1)
- fun_l15_n719(x)
- else
- fun_l15_n307(x)
- end
-end
-
-def fun_l14_n153(x)
- if (x < 1)
- fun_l15_n12(x)
- else
- fun_l15_n985(x)
- end
-end
-
-def fun_l14_n154(x)
- if (x < 1)
- fun_l15_n639(x)
- else
- fun_l15_n367(x)
- end
-end
-
-def fun_l14_n155(x)
- if (x < 1)
- fun_l15_n401(x)
- else
- fun_l15_n431(x)
- end
-end
-
-def fun_l14_n156(x)
- if (x < 1)
- fun_l15_n897(x)
- else
- fun_l15_n136(x)
- end
-end
-
-def fun_l14_n157(x)
- if (x < 1)
- fun_l15_n792(x)
- else
- fun_l15_n865(x)
- end
-end
-
-def fun_l14_n158(x)
- if (x < 1)
- fun_l15_n851(x)
- else
- fun_l15_n167(x)
- end
-end
-
-def fun_l14_n159(x)
- if (x < 1)
- fun_l15_n643(x)
- else
- fun_l15_n458(x)
- end
-end
-
-def fun_l14_n160(x)
- if (x < 1)
- fun_l15_n539(x)
- else
- fun_l15_n36(x)
- end
-end
-
-def fun_l14_n161(x)
- if (x < 1)
- fun_l15_n91(x)
- else
- fun_l15_n130(x)
- end
-end
-
-def fun_l14_n162(x)
- if (x < 1)
- fun_l15_n214(x)
- else
- fun_l15_n712(x)
- end
-end
-
-def fun_l14_n163(x)
- if (x < 1)
- fun_l15_n47(x)
- else
- fun_l15_n799(x)
- end
-end
-
-def fun_l14_n164(x)
- if (x < 1)
- fun_l15_n715(x)
- else
- fun_l15_n888(x)
- end
-end
-
-def fun_l14_n165(x)
- if (x < 1)
- fun_l15_n904(x)
- else
- fun_l15_n484(x)
- end
-end
-
-def fun_l14_n166(x)
- if (x < 1)
- fun_l15_n870(x)
- else
- fun_l15_n121(x)
- end
-end
-
-def fun_l14_n167(x)
- if (x < 1)
- fun_l15_n960(x)
- else
- fun_l15_n33(x)
- end
-end
-
-def fun_l14_n168(x)
- if (x < 1)
- fun_l15_n16(x)
- else
- fun_l15_n24(x)
- end
-end
-
-def fun_l14_n169(x)
- if (x < 1)
- fun_l15_n913(x)
- else
- fun_l15_n793(x)
- end
-end
-
-def fun_l14_n170(x)
- if (x < 1)
- fun_l15_n35(x)
- else
- fun_l15_n204(x)
- end
-end
-
-def fun_l14_n171(x)
- if (x < 1)
- fun_l15_n526(x)
- else
- fun_l15_n92(x)
- end
-end
-
-def fun_l14_n172(x)
- if (x < 1)
- fun_l15_n648(x)
- else
- fun_l15_n535(x)
- end
-end
-
-def fun_l14_n173(x)
- if (x < 1)
- fun_l15_n415(x)
- else
- fun_l15_n610(x)
- end
-end
-
-def fun_l14_n174(x)
- if (x < 1)
- fun_l15_n352(x)
- else
- fun_l15_n256(x)
- end
-end
-
-def fun_l14_n175(x)
- if (x < 1)
- fun_l15_n692(x)
- else
- fun_l15_n686(x)
- end
-end
-
-def fun_l14_n176(x)
- if (x < 1)
- fun_l15_n189(x)
- else
- fun_l15_n307(x)
- end
-end
-
-def fun_l14_n177(x)
- if (x < 1)
- fun_l15_n725(x)
- else
- fun_l15_n714(x)
- end
-end
-
-def fun_l14_n178(x)
- if (x < 1)
- fun_l15_n43(x)
- else
- fun_l15_n392(x)
- end
-end
-
-def fun_l14_n179(x)
- if (x < 1)
- fun_l15_n890(x)
- else
- fun_l15_n887(x)
- end
-end
-
-def fun_l14_n180(x)
- if (x < 1)
- fun_l15_n499(x)
- else
- fun_l15_n729(x)
- end
-end
-
-def fun_l14_n181(x)
- if (x < 1)
- fun_l15_n714(x)
- else
- fun_l15_n417(x)
- end
-end
-
-def fun_l14_n182(x)
- if (x < 1)
- fun_l15_n935(x)
- else
- fun_l15_n671(x)
- end
-end
-
-def fun_l14_n183(x)
- if (x < 1)
- fun_l15_n123(x)
- else
- fun_l15_n349(x)
- end
-end
-
-def fun_l14_n184(x)
- if (x < 1)
- fun_l15_n653(x)
- else
- fun_l15_n160(x)
- end
-end
-
-def fun_l14_n185(x)
- if (x < 1)
- fun_l15_n43(x)
- else
- fun_l15_n965(x)
- end
-end
-
-def fun_l14_n186(x)
- if (x < 1)
- fun_l15_n38(x)
- else
- fun_l15_n411(x)
- end
-end
-
-def fun_l14_n187(x)
- if (x < 1)
- fun_l15_n788(x)
- else
- fun_l15_n297(x)
- end
-end
-
-def fun_l14_n188(x)
- if (x < 1)
- fun_l15_n83(x)
- else
- fun_l15_n784(x)
- end
-end
-
-def fun_l14_n189(x)
- if (x < 1)
- fun_l15_n403(x)
- else
- fun_l15_n469(x)
- end
-end
-
-def fun_l14_n190(x)
- if (x < 1)
- fun_l15_n77(x)
- else
- fun_l15_n55(x)
- end
-end
-
-def fun_l14_n191(x)
- if (x < 1)
- fun_l15_n835(x)
- else
- fun_l15_n462(x)
- end
-end
-
-def fun_l14_n192(x)
- if (x < 1)
- fun_l15_n830(x)
- else
- fun_l15_n680(x)
- end
-end
-
-def fun_l14_n193(x)
- if (x < 1)
- fun_l15_n750(x)
- else
- fun_l15_n580(x)
- end
-end
-
-def fun_l14_n194(x)
- if (x < 1)
- fun_l15_n668(x)
- else
- fun_l15_n911(x)
- end
-end
-
-def fun_l14_n195(x)
- if (x < 1)
- fun_l15_n90(x)
- else
- fun_l15_n232(x)
- end
-end
-
-def fun_l14_n196(x)
- if (x < 1)
- fun_l15_n936(x)
- else
- fun_l15_n127(x)
- end
-end
-
-def fun_l14_n197(x)
- if (x < 1)
- fun_l15_n566(x)
- else
- fun_l15_n687(x)
- end
-end
-
-def fun_l14_n198(x)
- if (x < 1)
- fun_l15_n797(x)
- else
- fun_l15_n835(x)
- end
-end
-
-def fun_l14_n199(x)
- if (x < 1)
- fun_l15_n96(x)
- else
- fun_l15_n917(x)
- end
-end
-
-def fun_l14_n200(x)
- if (x < 1)
- fun_l15_n891(x)
- else
- fun_l15_n566(x)
- end
-end
-
-def fun_l14_n201(x)
- if (x < 1)
- fun_l15_n697(x)
- else
- fun_l15_n218(x)
- end
-end
-
-def fun_l14_n202(x)
- if (x < 1)
- fun_l15_n802(x)
- else
- fun_l15_n977(x)
- end
-end
-
-def fun_l14_n203(x)
- if (x < 1)
- fun_l15_n38(x)
- else
- fun_l15_n992(x)
- end
-end
-
-def fun_l14_n204(x)
- if (x < 1)
- fun_l15_n591(x)
- else
- fun_l15_n394(x)
- end
-end
-
-def fun_l14_n205(x)
- if (x < 1)
- fun_l15_n552(x)
- else
- fun_l15_n522(x)
- end
-end
-
-def fun_l14_n206(x)
- if (x < 1)
- fun_l15_n90(x)
- else
- fun_l15_n470(x)
- end
-end
-
-def fun_l14_n207(x)
- if (x < 1)
- fun_l15_n92(x)
- else
- fun_l15_n148(x)
- end
-end
-
-def fun_l14_n208(x)
- if (x < 1)
- fun_l15_n954(x)
- else
- fun_l15_n769(x)
- end
-end
-
-def fun_l14_n209(x)
- if (x < 1)
- fun_l15_n32(x)
- else
- fun_l15_n211(x)
- end
-end
-
-def fun_l14_n210(x)
- if (x < 1)
- fun_l15_n338(x)
- else
- fun_l15_n678(x)
- end
-end
-
-def fun_l14_n211(x)
- if (x < 1)
- fun_l15_n113(x)
- else
- fun_l15_n605(x)
- end
-end
-
-def fun_l14_n212(x)
- if (x < 1)
- fun_l15_n359(x)
- else
- fun_l15_n970(x)
- end
-end
-
-def fun_l14_n213(x)
- if (x < 1)
- fun_l15_n437(x)
- else
- fun_l15_n279(x)
- end
-end
-
-def fun_l14_n214(x)
- if (x < 1)
- fun_l15_n782(x)
- else
- fun_l15_n344(x)
- end
-end
-
-def fun_l14_n215(x)
- if (x < 1)
- fun_l15_n501(x)
- else
- fun_l15_n19(x)
- end
-end
-
-def fun_l14_n216(x)
- if (x < 1)
- fun_l15_n525(x)
- else
- fun_l15_n269(x)
- end
-end
-
-def fun_l14_n217(x)
- if (x < 1)
- fun_l15_n35(x)
- else
- fun_l15_n786(x)
- end
-end
-
-def fun_l14_n218(x)
- if (x < 1)
- fun_l15_n759(x)
- else
- fun_l15_n547(x)
- end
-end
-
-def fun_l14_n219(x)
- if (x < 1)
- fun_l15_n260(x)
- else
- fun_l15_n155(x)
- end
-end
-
-def fun_l14_n220(x)
- if (x < 1)
- fun_l15_n691(x)
- else
- fun_l15_n969(x)
- end
-end
-
-def fun_l14_n221(x)
- if (x < 1)
- fun_l15_n632(x)
- else
- fun_l15_n803(x)
- end
-end
-
-def fun_l14_n222(x)
- if (x < 1)
- fun_l15_n652(x)
- else
- fun_l15_n70(x)
- end
-end
-
-def fun_l14_n223(x)
- if (x < 1)
- fun_l15_n710(x)
- else
- fun_l15_n873(x)
- end
-end
-
-def fun_l14_n224(x)
- if (x < 1)
- fun_l15_n3(x)
- else
- fun_l15_n509(x)
- end
-end
-
-def fun_l14_n225(x)
- if (x < 1)
- fun_l15_n37(x)
- else
- fun_l15_n814(x)
- end
-end
-
-def fun_l14_n226(x)
- if (x < 1)
- fun_l15_n88(x)
- else
- fun_l15_n683(x)
- end
-end
-
-def fun_l14_n227(x)
- if (x < 1)
- fun_l15_n898(x)
- else
- fun_l15_n996(x)
- end
-end
-
-def fun_l14_n228(x)
- if (x < 1)
- fun_l15_n510(x)
- else
- fun_l15_n315(x)
- end
-end
-
-def fun_l14_n229(x)
- if (x < 1)
- fun_l15_n509(x)
- else
- fun_l15_n75(x)
- end
-end
-
-def fun_l14_n230(x)
- if (x < 1)
- fun_l15_n184(x)
- else
- fun_l15_n650(x)
- end
-end
-
-def fun_l14_n231(x)
- if (x < 1)
- fun_l15_n227(x)
- else
- fun_l15_n607(x)
- end
-end
-
-def fun_l14_n232(x)
- if (x < 1)
- fun_l15_n245(x)
- else
- fun_l15_n347(x)
- end
-end
-
-def fun_l14_n233(x)
- if (x < 1)
- fun_l15_n728(x)
- else
- fun_l15_n457(x)
- end
-end
-
-def fun_l14_n234(x)
- if (x < 1)
- fun_l15_n619(x)
- else
- fun_l15_n936(x)
- end
-end
-
-def fun_l14_n235(x)
- if (x < 1)
- fun_l15_n855(x)
- else
- fun_l15_n774(x)
- end
-end
-
-def fun_l14_n236(x)
- if (x < 1)
- fun_l15_n217(x)
- else
- fun_l15_n908(x)
- end
-end
-
-def fun_l14_n237(x)
- if (x < 1)
- fun_l15_n537(x)
- else
- fun_l15_n441(x)
- end
-end
-
-def fun_l14_n238(x)
- if (x < 1)
- fun_l15_n930(x)
- else
- fun_l15_n601(x)
- end
-end
-
-def fun_l14_n239(x)
- if (x < 1)
- fun_l15_n976(x)
- else
- fun_l15_n903(x)
- end
-end
-
-def fun_l14_n240(x)
- if (x < 1)
- fun_l15_n792(x)
- else
- fun_l15_n882(x)
- end
-end
-
-def fun_l14_n241(x)
- if (x < 1)
- fun_l15_n662(x)
- else
- fun_l15_n197(x)
- end
-end
-
-def fun_l14_n242(x)
- if (x < 1)
- fun_l15_n839(x)
- else
- fun_l15_n486(x)
- end
-end
-
-def fun_l14_n243(x)
- if (x < 1)
- fun_l15_n122(x)
- else
- fun_l15_n165(x)
- end
-end
-
-def fun_l14_n244(x)
- if (x < 1)
- fun_l15_n209(x)
- else
- fun_l15_n977(x)
- end
-end
-
-def fun_l14_n245(x)
- if (x < 1)
- fun_l15_n231(x)
- else
- fun_l15_n318(x)
- end
-end
-
-def fun_l14_n246(x)
- if (x < 1)
- fun_l15_n53(x)
- else
- fun_l15_n995(x)
- end
-end
-
-def fun_l14_n247(x)
- if (x < 1)
- fun_l15_n276(x)
- else
- fun_l15_n458(x)
- end
-end
-
-def fun_l14_n248(x)
- if (x < 1)
- fun_l15_n964(x)
- else
- fun_l15_n753(x)
- end
-end
-
-def fun_l14_n249(x)
- if (x < 1)
- fun_l15_n964(x)
- else
- fun_l15_n783(x)
- end
-end
-
-def fun_l14_n250(x)
- if (x < 1)
- fun_l15_n865(x)
- else
- fun_l15_n736(x)
- end
-end
-
-def fun_l14_n251(x)
- if (x < 1)
- fun_l15_n861(x)
- else
- fun_l15_n414(x)
- end
-end
-
-def fun_l14_n252(x)
- if (x < 1)
- fun_l15_n327(x)
- else
- fun_l15_n440(x)
- end
-end
-
-def fun_l14_n253(x)
- if (x < 1)
- fun_l15_n800(x)
- else
- fun_l15_n186(x)
- end
-end
-
-def fun_l14_n254(x)
- if (x < 1)
- fun_l15_n687(x)
- else
- fun_l15_n245(x)
- end
-end
-
-def fun_l14_n255(x)
- if (x < 1)
- fun_l15_n421(x)
- else
- fun_l15_n421(x)
- end
-end
-
-def fun_l14_n256(x)
- if (x < 1)
- fun_l15_n417(x)
- else
- fun_l15_n975(x)
- end
-end
-
-def fun_l14_n257(x)
- if (x < 1)
- fun_l15_n835(x)
- else
- fun_l15_n697(x)
- end
-end
-
-def fun_l14_n258(x)
- if (x < 1)
- fun_l15_n433(x)
- else
- fun_l15_n811(x)
- end
-end
-
-def fun_l14_n259(x)
- if (x < 1)
- fun_l15_n473(x)
- else
- fun_l15_n747(x)
- end
-end
-
-def fun_l14_n260(x)
- if (x < 1)
- fun_l15_n636(x)
- else
- fun_l15_n718(x)
- end
-end
-
-def fun_l14_n261(x)
- if (x < 1)
- fun_l15_n472(x)
- else
- fun_l15_n971(x)
- end
-end
-
-def fun_l14_n262(x)
- if (x < 1)
- fun_l15_n91(x)
- else
- fun_l15_n18(x)
- end
-end
-
-def fun_l14_n263(x)
- if (x < 1)
- fun_l15_n582(x)
- else
- fun_l15_n629(x)
- end
-end
-
-def fun_l14_n264(x)
- if (x < 1)
- fun_l15_n493(x)
- else
- fun_l15_n718(x)
- end
-end
-
-def fun_l14_n265(x)
- if (x < 1)
- fun_l15_n857(x)
- else
- fun_l15_n134(x)
- end
-end
-
-def fun_l14_n266(x)
- if (x < 1)
- fun_l15_n351(x)
- else
- fun_l15_n454(x)
- end
-end
-
-def fun_l14_n267(x)
- if (x < 1)
- fun_l15_n578(x)
- else
- fun_l15_n453(x)
- end
-end
-
-def fun_l14_n268(x)
- if (x < 1)
- fun_l15_n679(x)
- else
- fun_l15_n886(x)
- end
-end
-
-def fun_l14_n269(x)
- if (x < 1)
- fun_l15_n446(x)
- else
- fun_l15_n7(x)
- end
-end
-
-def fun_l14_n270(x)
- if (x < 1)
- fun_l15_n375(x)
- else
- fun_l15_n83(x)
- end
-end
-
-def fun_l14_n271(x)
- if (x < 1)
- fun_l15_n688(x)
- else
- fun_l15_n863(x)
- end
-end
-
-def fun_l14_n272(x)
- if (x < 1)
- fun_l15_n382(x)
- else
- fun_l15_n997(x)
- end
-end
-
-def fun_l14_n273(x)
- if (x < 1)
- fun_l15_n281(x)
- else
- fun_l15_n909(x)
- end
-end
-
-def fun_l14_n274(x)
- if (x < 1)
- fun_l15_n618(x)
- else
- fun_l15_n967(x)
- end
-end
-
-def fun_l14_n275(x)
- if (x < 1)
- fun_l15_n651(x)
- else
- fun_l15_n826(x)
- end
-end
-
-def fun_l14_n276(x)
- if (x < 1)
- fun_l15_n326(x)
- else
- fun_l15_n11(x)
- end
-end
-
-def fun_l14_n277(x)
- if (x < 1)
- fun_l15_n193(x)
- else
- fun_l15_n719(x)
- end
-end
-
-def fun_l14_n278(x)
- if (x < 1)
- fun_l15_n973(x)
- else
- fun_l15_n313(x)
- end
-end
-
-def fun_l14_n279(x)
- if (x < 1)
- fun_l15_n33(x)
- else
- fun_l15_n526(x)
- end
-end
-
-def fun_l14_n280(x)
- if (x < 1)
- fun_l15_n334(x)
- else
- fun_l15_n158(x)
- end
-end
-
-def fun_l14_n281(x)
- if (x < 1)
- fun_l15_n627(x)
- else
- fun_l15_n346(x)
- end
-end
-
-def fun_l14_n282(x)
- if (x < 1)
- fun_l15_n537(x)
- else
- fun_l15_n198(x)
- end
-end
-
-def fun_l14_n283(x)
- if (x < 1)
- fun_l15_n779(x)
- else
- fun_l15_n0(x)
- end
-end
-
-def fun_l14_n284(x)
- if (x < 1)
- fun_l15_n487(x)
- else
- fun_l15_n489(x)
- end
-end
-
-def fun_l14_n285(x)
- if (x < 1)
- fun_l15_n793(x)
- else
- fun_l15_n803(x)
- end
-end
-
-def fun_l14_n286(x)
- if (x < 1)
- fun_l15_n206(x)
- else
- fun_l15_n936(x)
- end
-end
-
-def fun_l14_n287(x)
- if (x < 1)
- fun_l15_n223(x)
- else
- fun_l15_n278(x)
- end
-end
-
-def fun_l14_n288(x)
- if (x < 1)
- fun_l15_n601(x)
- else
- fun_l15_n251(x)
- end
-end
-
-def fun_l14_n289(x)
- if (x < 1)
- fun_l15_n144(x)
- else
- fun_l15_n420(x)
- end
-end
-
-def fun_l14_n290(x)
- if (x < 1)
- fun_l15_n964(x)
- else
- fun_l15_n319(x)
- end
-end
-
-def fun_l14_n291(x)
- if (x < 1)
- fun_l15_n385(x)
- else
- fun_l15_n498(x)
- end
-end
-
-def fun_l14_n292(x)
- if (x < 1)
- fun_l15_n19(x)
- else
- fun_l15_n959(x)
- end
-end
-
-def fun_l14_n293(x)
- if (x < 1)
- fun_l15_n77(x)
- else
- fun_l15_n849(x)
- end
-end
-
-def fun_l14_n294(x)
- if (x < 1)
- fun_l15_n96(x)
- else
- fun_l15_n964(x)
- end
-end
-
-def fun_l14_n295(x)
- if (x < 1)
- fun_l15_n374(x)
- else
- fun_l15_n337(x)
- end
-end
-
-def fun_l14_n296(x)
- if (x < 1)
- fun_l15_n210(x)
- else
- fun_l15_n621(x)
- end
-end
-
-def fun_l14_n297(x)
- if (x < 1)
- fun_l15_n992(x)
- else
- fun_l15_n90(x)
- end
-end
-
-def fun_l14_n298(x)
- if (x < 1)
- fun_l15_n442(x)
- else
- fun_l15_n799(x)
- end
-end
-
-def fun_l14_n299(x)
- if (x < 1)
- fun_l15_n133(x)
- else
- fun_l15_n21(x)
- end
-end
-
-def fun_l14_n300(x)
- if (x < 1)
- fun_l15_n619(x)
- else
- fun_l15_n46(x)
- end
-end
-
-def fun_l14_n301(x)
- if (x < 1)
- fun_l15_n359(x)
- else
- fun_l15_n386(x)
- end
-end
-
-def fun_l14_n302(x)
- if (x < 1)
- fun_l15_n163(x)
- else
- fun_l15_n197(x)
- end
-end
-
-def fun_l14_n303(x)
- if (x < 1)
- fun_l15_n382(x)
- else
- fun_l15_n693(x)
- end
-end
-
-def fun_l14_n304(x)
- if (x < 1)
- fun_l15_n700(x)
- else
- fun_l15_n167(x)
- end
-end
-
-def fun_l14_n305(x)
- if (x < 1)
- fun_l15_n124(x)
- else
- fun_l15_n448(x)
- end
-end
-
-def fun_l14_n306(x)
- if (x < 1)
- fun_l15_n829(x)
- else
- fun_l15_n986(x)
- end
-end
-
-def fun_l14_n307(x)
- if (x < 1)
- fun_l15_n39(x)
- else
- fun_l15_n557(x)
- end
-end
-
-def fun_l14_n308(x)
- if (x < 1)
- fun_l15_n495(x)
- else
- fun_l15_n259(x)
- end
-end
-
-def fun_l14_n309(x)
- if (x < 1)
- fun_l15_n462(x)
- else
- fun_l15_n121(x)
- end
-end
-
-def fun_l14_n310(x)
- if (x < 1)
- fun_l15_n110(x)
- else
- fun_l15_n159(x)
- end
-end
-
-def fun_l14_n311(x)
- if (x < 1)
- fun_l15_n144(x)
- else
- fun_l15_n969(x)
- end
-end
-
-def fun_l14_n312(x)
- if (x < 1)
- fun_l15_n679(x)
- else
- fun_l15_n610(x)
- end
-end
-
-def fun_l14_n313(x)
- if (x < 1)
- fun_l15_n332(x)
- else
- fun_l15_n759(x)
- end
-end
-
-def fun_l14_n314(x)
- if (x < 1)
- fun_l15_n819(x)
- else
- fun_l15_n595(x)
- end
-end
-
-def fun_l14_n315(x)
- if (x < 1)
- fun_l15_n180(x)
- else
- fun_l15_n555(x)
- end
-end
-
-def fun_l14_n316(x)
- if (x < 1)
- fun_l15_n218(x)
- else
- fun_l15_n844(x)
- end
-end
-
-def fun_l14_n317(x)
- if (x < 1)
- fun_l15_n486(x)
- else
- fun_l15_n666(x)
- end
-end
-
-def fun_l14_n318(x)
- if (x < 1)
- fun_l15_n277(x)
- else
- fun_l15_n486(x)
- end
-end
-
-def fun_l14_n319(x)
- if (x < 1)
- fun_l15_n874(x)
- else
- fun_l15_n802(x)
- end
-end
-
-def fun_l14_n320(x)
- if (x < 1)
- fun_l15_n717(x)
- else
- fun_l15_n348(x)
- end
-end
-
-def fun_l14_n321(x)
- if (x < 1)
- fun_l15_n701(x)
- else
- fun_l15_n897(x)
- end
-end
-
-def fun_l14_n322(x)
- if (x < 1)
- fun_l15_n229(x)
- else
- fun_l15_n976(x)
- end
-end
-
-def fun_l14_n323(x)
- if (x < 1)
- fun_l15_n288(x)
- else
- fun_l15_n801(x)
- end
-end
-
-def fun_l14_n324(x)
- if (x < 1)
- fun_l15_n25(x)
- else
- fun_l15_n566(x)
- end
-end
-
-def fun_l14_n325(x)
- if (x < 1)
- fun_l15_n489(x)
- else
- fun_l15_n165(x)
- end
-end
-
-def fun_l14_n326(x)
- if (x < 1)
- fun_l15_n646(x)
- else
- fun_l15_n529(x)
- end
-end
-
-def fun_l14_n327(x)
- if (x < 1)
- fun_l15_n126(x)
- else
- fun_l15_n247(x)
- end
-end
-
-def fun_l14_n328(x)
- if (x < 1)
- fun_l15_n180(x)
- else
- fun_l15_n838(x)
- end
-end
-
-def fun_l14_n329(x)
- if (x < 1)
- fun_l15_n827(x)
- else
- fun_l15_n251(x)
- end
-end
-
-def fun_l14_n330(x)
- if (x < 1)
- fun_l15_n232(x)
- else
- fun_l15_n371(x)
- end
-end
-
-def fun_l14_n331(x)
- if (x < 1)
- fun_l15_n742(x)
- else
- fun_l15_n365(x)
- end
-end
-
-def fun_l14_n332(x)
- if (x < 1)
- fun_l15_n254(x)
- else
- fun_l15_n895(x)
- end
-end
-
-def fun_l14_n333(x)
- if (x < 1)
- fun_l15_n267(x)
- else
- fun_l15_n716(x)
- end
-end
-
-def fun_l14_n334(x)
- if (x < 1)
- fun_l15_n907(x)
- else
- fun_l15_n846(x)
- end
-end
-
-def fun_l14_n335(x)
- if (x < 1)
- fun_l15_n432(x)
- else
- fun_l15_n207(x)
- end
-end
-
-def fun_l14_n336(x)
- if (x < 1)
- fun_l15_n342(x)
- else
- fun_l15_n533(x)
- end
-end
-
-def fun_l14_n337(x)
- if (x < 1)
- fun_l15_n155(x)
- else
- fun_l15_n626(x)
- end
-end
-
-def fun_l14_n338(x)
- if (x < 1)
- fun_l15_n457(x)
- else
- fun_l15_n226(x)
- end
-end
-
-def fun_l14_n339(x)
- if (x < 1)
- fun_l15_n621(x)
- else
- fun_l15_n685(x)
- end
-end
-
-def fun_l14_n340(x)
- if (x < 1)
- fun_l15_n502(x)
- else
- fun_l15_n604(x)
- end
-end
-
-def fun_l14_n341(x)
- if (x < 1)
- fun_l15_n578(x)
- else
- fun_l15_n250(x)
- end
-end
-
-def fun_l14_n342(x)
- if (x < 1)
- fun_l15_n16(x)
- else
- fun_l15_n897(x)
- end
-end
-
-def fun_l14_n343(x)
- if (x < 1)
- fun_l15_n173(x)
- else
- fun_l15_n441(x)
- end
-end
-
-def fun_l14_n344(x)
- if (x < 1)
- fun_l15_n882(x)
- else
- fun_l15_n287(x)
- end
-end
-
-def fun_l14_n345(x)
- if (x < 1)
- fun_l15_n549(x)
- else
- fun_l15_n559(x)
- end
-end
-
-def fun_l14_n346(x)
- if (x < 1)
- fun_l15_n587(x)
- else
- fun_l15_n712(x)
- end
-end
-
-def fun_l14_n347(x)
- if (x < 1)
- fun_l15_n2(x)
- else
- fun_l15_n279(x)
- end
-end
-
-def fun_l14_n348(x)
- if (x < 1)
- fun_l15_n602(x)
- else
- fun_l15_n801(x)
- end
-end
-
-def fun_l14_n349(x)
- if (x < 1)
- fun_l15_n114(x)
- else
- fun_l15_n181(x)
- end
-end
-
-def fun_l14_n350(x)
- if (x < 1)
- fun_l15_n751(x)
- else
- fun_l15_n760(x)
- end
-end
-
-def fun_l14_n351(x)
- if (x < 1)
- fun_l15_n570(x)
- else
- fun_l15_n168(x)
- end
-end
-
-def fun_l14_n352(x)
- if (x < 1)
- fun_l15_n342(x)
- else
- fun_l15_n401(x)
- end
-end
-
-def fun_l14_n353(x)
- if (x < 1)
- fun_l15_n775(x)
- else
- fun_l15_n175(x)
- end
-end
-
-def fun_l14_n354(x)
- if (x < 1)
- fun_l15_n0(x)
- else
- fun_l15_n831(x)
- end
-end
-
-def fun_l14_n355(x)
- if (x < 1)
- fun_l15_n127(x)
- else
- fun_l15_n751(x)
- end
-end
-
-def fun_l14_n356(x)
- if (x < 1)
- fun_l15_n57(x)
- else
- fun_l15_n58(x)
- end
-end
-
-def fun_l14_n357(x)
- if (x < 1)
- fun_l15_n696(x)
- else
- fun_l15_n694(x)
- end
-end
-
-def fun_l14_n358(x)
- if (x < 1)
- fun_l15_n240(x)
- else
- fun_l15_n525(x)
- end
-end
-
-def fun_l14_n359(x)
- if (x < 1)
- fun_l15_n552(x)
- else
- fun_l15_n126(x)
- end
-end
-
-def fun_l14_n360(x)
- if (x < 1)
- fun_l15_n435(x)
- else
- fun_l15_n24(x)
- end
-end
-
-def fun_l14_n361(x)
- if (x < 1)
- fun_l15_n366(x)
- else
- fun_l15_n397(x)
- end
-end
-
-def fun_l14_n362(x)
- if (x < 1)
- fun_l15_n626(x)
- else
- fun_l15_n288(x)
- end
-end
-
-def fun_l14_n363(x)
- if (x < 1)
- fun_l15_n474(x)
- else
- fun_l15_n205(x)
- end
-end
-
-def fun_l14_n364(x)
- if (x < 1)
- fun_l15_n299(x)
- else
- fun_l15_n9(x)
- end
-end
-
-def fun_l14_n365(x)
- if (x < 1)
- fun_l15_n115(x)
- else
- fun_l15_n126(x)
- end
-end
-
-def fun_l14_n366(x)
- if (x < 1)
- fun_l15_n777(x)
- else
- fun_l15_n714(x)
- end
-end
-
-def fun_l14_n367(x)
- if (x < 1)
- fun_l15_n697(x)
- else
- fun_l15_n663(x)
- end
-end
-
-def fun_l14_n368(x)
- if (x < 1)
- fun_l15_n72(x)
- else
- fun_l15_n339(x)
- end
-end
-
-def fun_l14_n369(x)
- if (x < 1)
- fun_l15_n703(x)
- else
- fun_l15_n901(x)
- end
-end
-
-def fun_l14_n370(x)
- if (x < 1)
- fun_l15_n38(x)
- else
- fun_l15_n920(x)
- end
-end
-
-def fun_l14_n371(x)
- if (x < 1)
- fun_l15_n97(x)
- else
- fun_l15_n418(x)
- end
-end
-
-def fun_l14_n372(x)
- if (x < 1)
- fun_l15_n831(x)
- else
- fun_l15_n295(x)
- end
-end
-
-def fun_l14_n373(x)
- if (x < 1)
- fun_l15_n849(x)
- else
- fun_l15_n818(x)
- end
-end
-
-def fun_l14_n374(x)
- if (x < 1)
- fun_l15_n308(x)
- else
- fun_l15_n379(x)
- end
-end
-
-def fun_l14_n375(x)
- if (x < 1)
- fun_l15_n552(x)
- else
- fun_l15_n109(x)
- end
-end
-
-def fun_l14_n376(x)
- if (x < 1)
- fun_l15_n444(x)
- else
- fun_l15_n509(x)
- end
-end
-
-def fun_l14_n377(x)
- if (x < 1)
- fun_l15_n498(x)
- else
- fun_l15_n363(x)
- end
-end
-
-def fun_l14_n378(x)
- if (x < 1)
- fun_l15_n475(x)
- else
- fun_l15_n250(x)
- end
-end
-
-def fun_l14_n379(x)
- if (x < 1)
- fun_l15_n635(x)
- else
- fun_l15_n550(x)
- end
-end
-
-def fun_l14_n380(x)
- if (x < 1)
- fun_l15_n835(x)
- else
- fun_l15_n261(x)
- end
-end
-
-def fun_l14_n381(x)
- if (x < 1)
- fun_l15_n903(x)
- else
- fun_l15_n492(x)
- end
-end
-
-def fun_l14_n382(x)
- if (x < 1)
- fun_l15_n447(x)
- else
- fun_l15_n570(x)
- end
-end
-
-def fun_l14_n383(x)
- if (x < 1)
- fun_l15_n785(x)
- else
- fun_l15_n711(x)
- end
-end
-
-def fun_l14_n384(x)
- if (x < 1)
- fun_l15_n321(x)
- else
- fun_l15_n966(x)
- end
-end
-
-def fun_l14_n385(x)
- if (x < 1)
- fun_l15_n786(x)
- else
- fun_l15_n667(x)
- end
-end
-
-def fun_l14_n386(x)
- if (x < 1)
- fun_l15_n954(x)
- else
- fun_l15_n101(x)
- end
-end
-
-def fun_l14_n387(x)
- if (x < 1)
- fun_l15_n868(x)
- else
- fun_l15_n1(x)
- end
-end
-
-def fun_l14_n388(x)
- if (x < 1)
- fun_l15_n380(x)
- else
- fun_l15_n949(x)
- end
-end
-
-def fun_l14_n389(x)
- if (x < 1)
- fun_l15_n456(x)
- else
- fun_l15_n122(x)
- end
-end
-
-def fun_l14_n390(x)
- if (x < 1)
- fun_l15_n644(x)
- else
- fun_l15_n601(x)
- end
-end
-
-def fun_l14_n391(x)
- if (x < 1)
- fun_l15_n523(x)
- else
- fun_l15_n754(x)
- end
-end
-
-def fun_l14_n392(x)
- if (x < 1)
- fun_l15_n882(x)
- else
- fun_l15_n453(x)
- end
-end
-
-def fun_l14_n393(x)
- if (x < 1)
- fun_l15_n249(x)
- else
- fun_l15_n773(x)
- end
-end
-
-def fun_l14_n394(x)
- if (x < 1)
- fun_l15_n453(x)
- else
- fun_l15_n490(x)
- end
-end
-
-def fun_l14_n395(x)
- if (x < 1)
- fun_l15_n699(x)
- else
- fun_l15_n95(x)
- end
-end
-
-def fun_l14_n396(x)
- if (x < 1)
- fun_l15_n726(x)
- else
- fun_l15_n632(x)
- end
-end
-
-def fun_l14_n397(x)
- if (x < 1)
- fun_l15_n139(x)
- else
- fun_l15_n682(x)
- end
-end
-
-def fun_l14_n398(x)
- if (x < 1)
- fun_l15_n246(x)
- else
- fun_l15_n74(x)
- end
-end
-
-def fun_l14_n399(x)
- if (x < 1)
- fun_l15_n334(x)
- else
- fun_l15_n504(x)
- end
-end
-
-def fun_l14_n400(x)
- if (x < 1)
- fun_l15_n450(x)
- else
- fun_l15_n778(x)
- end
-end
-
-def fun_l14_n401(x)
- if (x < 1)
- fun_l15_n428(x)
- else
- fun_l15_n101(x)
- end
-end
-
-def fun_l14_n402(x)
- if (x < 1)
- fun_l15_n779(x)
- else
- fun_l15_n924(x)
- end
-end
-
-def fun_l14_n403(x)
- if (x < 1)
- fun_l15_n957(x)
- else
- fun_l15_n83(x)
- end
-end
-
-def fun_l14_n404(x)
- if (x < 1)
- fun_l15_n0(x)
- else
- fun_l15_n781(x)
- end
-end
-
-def fun_l14_n405(x)
- if (x < 1)
- fun_l15_n100(x)
- else
- fun_l15_n21(x)
- end
-end
-
-def fun_l14_n406(x)
- if (x < 1)
- fun_l15_n262(x)
- else
- fun_l15_n925(x)
- end
-end
-
-def fun_l14_n407(x)
- if (x < 1)
- fun_l15_n935(x)
- else
- fun_l15_n193(x)
- end
-end
-
-def fun_l14_n408(x)
- if (x < 1)
- fun_l15_n140(x)
- else
- fun_l15_n459(x)
- end
-end
-
-def fun_l14_n409(x)
- if (x < 1)
- fun_l15_n484(x)
- else
- fun_l15_n584(x)
- end
-end
-
-def fun_l14_n410(x)
- if (x < 1)
- fun_l15_n762(x)
- else
- fun_l15_n640(x)
- end
-end
-
-def fun_l14_n411(x)
- if (x < 1)
- fun_l15_n347(x)
- else
- fun_l15_n395(x)
- end
-end
-
-def fun_l14_n412(x)
- if (x < 1)
- fun_l15_n809(x)
- else
- fun_l15_n105(x)
- end
-end
-
-def fun_l14_n413(x)
- if (x < 1)
- fun_l15_n929(x)
- else
- fun_l15_n265(x)
- end
-end
-
-def fun_l14_n414(x)
- if (x < 1)
- fun_l15_n228(x)
- else
- fun_l15_n88(x)
- end
-end
-
-def fun_l14_n415(x)
- if (x < 1)
- fun_l15_n650(x)
- else
- fun_l15_n785(x)
- end
-end
-
-def fun_l14_n416(x)
- if (x < 1)
- fun_l15_n806(x)
- else
- fun_l15_n743(x)
- end
-end
-
-def fun_l14_n417(x)
- if (x < 1)
- fun_l15_n417(x)
- else
- fun_l15_n454(x)
- end
-end
-
-def fun_l14_n418(x)
- if (x < 1)
- fun_l15_n571(x)
- else
- fun_l15_n651(x)
- end
-end
-
-def fun_l14_n419(x)
- if (x < 1)
- fun_l15_n341(x)
- else
- fun_l15_n242(x)
- end
-end
-
-def fun_l14_n420(x)
- if (x < 1)
- fun_l15_n613(x)
- else
- fun_l15_n339(x)
- end
-end
-
-def fun_l14_n421(x)
- if (x < 1)
- fun_l15_n657(x)
- else
- fun_l15_n759(x)
- end
-end
-
-def fun_l14_n422(x)
- if (x < 1)
- fun_l15_n33(x)
- else
- fun_l15_n669(x)
- end
-end
-
-def fun_l14_n423(x)
- if (x < 1)
- fun_l15_n628(x)
- else
- fun_l15_n963(x)
- end
-end
-
-def fun_l14_n424(x)
- if (x < 1)
- fun_l15_n940(x)
- else
- fun_l15_n773(x)
- end
-end
-
-def fun_l14_n425(x)
- if (x < 1)
- fun_l15_n489(x)
- else
- fun_l15_n625(x)
- end
-end
-
-def fun_l14_n426(x)
- if (x < 1)
- fun_l15_n501(x)
- else
- fun_l15_n278(x)
- end
-end
-
-def fun_l14_n427(x)
- if (x < 1)
- fun_l15_n620(x)
- else
- fun_l15_n426(x)
- end
-end
-
-def fun_l14_n428(x)
- if (x < 1)
- fun_l15_n606(x)
- else
- fun_l15_n123(x)
- end
-end
-
-def fun_l14_n429(x)
- if (x < 1)
- fun_l15_n622(x)
- else
- fun_l15_n873(x)
- end
-end
-
-def fun_l14_n430(x)
- if (x < 1)
- fun_l15_n660(x)
- else
- fun_l15_n736(x)
- end
-end
-
-def fun_l14_n431(x)
- if (x < 1)
- fun_l15_n927(x)
- else
- fun_l15_n893(x)
- end
-end
-
-def fun_l14_n432(x)
- if (x < 1)
- fun_l15_n492(x)
- else
- fun_l15_n947(x)
- end
-end
-
-def fun_l14_n433(x)
- if (x < 1)
- fun_l15_n164(x)
- else
- fun_l15_n853(x)
- end
-end
-
-def fun_l14_n434(x)
- if (x < 1)
- fun_l15_n730(x)
- else
- fun_l15_n265(x)
- end
-end
-
-def fun_l14_n435(x)
- if (x < 1)
- fun_l15_n548(x)
- else
- fun_l15_n272(x)
- end
-end
-
-def fun_l14_n436(x)
- if (x < 1)
- fun_l15_n944(x)
- else
- fun_l15_n344(x)
- end
-end
-
-def fun_l14_n437(x)
- if (x < 1)
- fun_l15_n931(x)
- else
- fun_l15_n376(x)
- end
-end
-
-def fun_l14_n438(x)
- if (x < 1)
- fun_l15_n261(x)
- else
- fun_l15_n270(x)
- end
-end
-
-def fun_l14_n439(x)
- if (x < 1)
- fun_l15_n705(x)
- else
- fun_l15_n700(x)
- end
-end
-
-def fun_l14_n440(x)
- if (x < 1)
- fun_l15_n115(x)
- else
- fun_l15_n964(x)
- end
-end
-
-def fun_l14_n441(x)
- if (x < 1)
- fun_l15_n396(x)
- else
- fun_l15_n780(x)
- end
-end
-
-def fun_l14_n442(x)
- if (x < 1)
- fun_l15_n813(x)
- else
- fun_l15_n25(x)
- end
-end
-
-def fun_l14_n443(x)
- if (x < 1)
- fun_l15_n405(x)
- else
- fun_l15_n264(x)
- end
-end
-
-def fun_l14_n444(x)
- if (x < 1)
- fun_l15_n816(x)
- else
- fun_l15_n857(x)
- end
-end
-
-def fun_l14_n445(x)
- if (x < 1)
- fun_l15_n191(x)
- else
- fun_l15_n886(x)
- end
-end
-
-def fun_l14_n446(x)
- if (x < 1)
- fun_l15_n415(x)
- else
- fun_l15_n611(x)
- end
-end
-
-def fun_l14_n447(x)
- if (x < 1)
- fun_l15_n473(x)
- else
- fun_l15_n701(x)
- end
-end
-
-def fun_l14_n448(x)
- if (x < 1)
- fun_l15_n532(x)
- else
- fun_l15_n501(x)
- end
-end
-
-def fun_l14_n449(x)
- if (x < 1)
- fun_l15_n731(x)
- else
- fun_l15_n631(x)
- end
-end
-
-def fun_l14_n450(x)
- if (x < 1)
- fun_l15_n75(x)
- else
- fun_l15_n356(x)
- end
-end
-
-def fun_l14_n451(x)
- if (x < 1)
- fun_l15_n614(x)
- else
- fun_l15_n600(x)
- end
-end
-
-def fun_l14_n452(x)
- if (x < 1)
- fun_l15_n592(x)
- else
- fun_l15_n995(x)
- end
-end
-
-def fun_l14_n453(x)
- if (x < 1)
- fun_l15_n712(x)
- else
- fun_l15_n815(x)
- end
-end
-
-def fun_l14_n454(x)
- if (x < 1)
- fun_l15_n859(x)
- else
- fun_l15_n560(x)
- end
-end
-
-def fun_l14_n455(x)
- if (x < 1)
- fun_l15_n665(x)
- else
- fun_l15_n408(x)
- end
-end
-
-def fun_l14_n456(x)
- if (x < 1)
- fun_l15_n693(x)
- else
- fun_l15_n491(x)
- end
-end
-
-def fun_l14_n457(x)
- if (x < 1)
- fun_l15_n29(x)
- else
- fun_l15_n515(x)
- end
-end
-
-def fun_l14_n458(x)
- if (x < 1)
- fun_l15_n598(x)
- else
- fun_l15_n448(x)
- end
-end
-
-def fun_l14_n459(x)
- if (x < 1)
- fun_l15_n937(x)
- else
- fun_l15_n199(x)
- end
-end
-
-def fun_l14_n460(x)
- if (x < 1)
- fun_l15_n950(x)
- else
- fun_l15_n874(x)
- end
-end
-
-def fun_l14_n461(x)
- if (x < 1)
- fun_l15_n38(x)
- else
- fun_l15_n650(x)
- end
-end
-
-def fun_l14_n462(x)
- if (x < 1)
- fun_l15_n366(x)
- else
- fun_l15_n271(x)
- end
-end
-
-def fun_l14_n463(x)
- if (x < 1)
- fun_l15_n21(x)
- else
- fun_l15_n690(x)
- end
-end
-
-def fun_l14_n464(x)
- if (x < 1)
- fun_l15_n660(x)
- else
- fun_l15_n71(x)
- end
-end
-
-def fun_l14_n465(x)
- if (x < 1)
- fun_l15_n889(x)
- else
- fun_l15_n324(x)
- end
-end
-
-def fun_l14_n466(x)
- if (x < 1)
- fun_l15_n808(x)
- else
- fun_l15_n532(x)
- end
-end
-
-def fun_l14_n467(x)
- if (x < 1)
- fun_l15_n72(x)
- else
- fun_l15_n52(x)
- end
-end
-
-def fun_l14_n468(x)
- if (x < 1)
- fun_l15_n563(x)
- else
- fun_l15_n327(x)
- end
-end
-
-def fun_l14_n469(x)
- if (x < 1)
- fun_l15_n570(x)
- else
- fun_l15_n794(x)
- end
-end
-
-def fun_l14_n470(x)
- if (x < 1)
- fun_l15_n8(x)
- else
- fun_l15_n594(x)
- end
-end
-
-def fun_l14_n471(x)
- if (x < 1)
- fun_l15_n859(x)
- else
- fun_l15_n519(x)
- end
-end
-
-def fun_l14_n472(x)
- if (x < 1)
- fun_l15_n539(x)
- else
- fun_l15_n432(x)
- end
-end
-
-def fun_l14_n473(x)
- if (x < 1)
- fun_l15_n795(x)
- else
- fun_l15_n916(x)
- end
-end
-
-def fun_l14_n474(x)
- if (x < 1)
- fun_l15_n851(x)
- else
- fun_l15_n157(x)
- end
-end
-
-def fun_l14_n475(x)
- if (x < 1)
- fun_l15_n274(x)
- else
- fun_l15_n678(x)
- end
-end
-
-def fun_l14_n476(x)
- if (x < 1)
- fun_l15_n221(x)
- else
- fun_l15_n906(x)
- end
-end
-
-def fun_l14_n477(x)
- if (x < 1)
- fun_l15_n116(x)
- else
- fun_l15_n778(x)
- end
-end
-
-def fun_l14_n478(x)
- if (x < 1)
- fun_l15_n715(x)
- else
- fun_l15_n855(x)
- end
-end
-
-def fun_l14_n479(x)
- if (x < 1)
- fun_l15_n705(x)
- else
- fun_l15_n935(x)
- end
-end
-
-def fun_l14_n480(x)
- if (x < 1)
- fun_l15_n119(x)
- else
- fun_l15_n559(x)
- end
-end
-
-def fun_l14_n481(x)
- if (x < 1)
- fun_l15_n996(x)
- else
- fun_l15_n768(x)
- end
-end
-
-def fun_l14_n482(x)
- if (x < 1)
- fun_l15_n619(x)
- else
- fun_l15_n475(x)
- end
-end
-
-def fun_l14_n483(x)
- if (x < 1)
- fun_l15_n189(x)
- else
- fun_l15_n398(x)
- end
-end
-
-def fun_l14_n484(x)
- if (x < 1)
- fun_l15_n758(x)
- else
- fun_l15_n864(x)
- end
-end
-
-def fun_l14_n485(x)
- if (x < 1)
- fun_l15_n508(x)
- else
- fun_l15_n393(x)
- end
-end
-
-def fun_l14_n486(x)
- if (x < 1)
- fun_l15_n825(x)
- else
- fun_l15_n337(x)
- end
-end
-
-def fun_l14_n487(x)
- if (x < 1)
- fun_l15_n449(x)
- else
- fun_l15_n389(x)
- end
-end
-
-def fun_l14_n488(x)
- if (x < 1)
- fun_l15_n328(x)
- else
- fun_l15_n658(x)
- end
-end
-
-def fun_l14_n489(x)
- if (x < 1)
- fun_l15_n138(x)
- else
- fun_l15_n938(x)
- end
-end
-
-def fun_l14_n490(x)
- if (x < 1)
- fun_l15_n387(x)
- else
- fun_l15_n865(x)
- end
-end
-
-def fun_l14_n491(x)
- if (x < 1)
- fun_l15_n621(x)
- else
- fun_l15_n516(x)
- end
-end
-
-def fun_l14_n492(x)
- if (x < 1)
- fun_l15_n962(x)
- else
- fun_l15_n821(x)
- end
-end
-
-def fun_l14_n493(x)
- if (x < 1)
- fun_l15_n544(x)
- else
- fun_l15_n625(x)
- end
-end
-
-def fun_l14_n494(x)
- if (x < 1)
- fun_l15_n610(x)
- else
- fun_l15_n404(x)
- end
-end
-
-def fun_l14_n495(x)
- if (x < 1)
- fun_l15_n329(x)
- else
- fun_l15_n537(x)
- end
-end
-
-def fun_l14_n496(x)
- if (x < 1)
- fun_l15_n659(x)
- else
- fun_l15_n837(x)
- end
-end
-
-def fun_l14_n497(x)
- if (x < 1)
- fun_l15_n974(x)
- else
- fun_l15_n55(x)
- end
-end
-
-def fun_l14_n498(x)
- if (x < 1)
- fun_l15_n243(x)
- else
- fun_l15_n810(x)
- end
-end
-
-def fun_l14_n499(x)
- if (x < 1)
- fun_l15_n260(x)
- else
- fun_l15_n412(x)
- end
-end
-
-def fun_l14_n500(x)
- if (x < 1)
- fun_l15_n940(x)
- else
- fun_l15_n920(x)
- end
-end
-
-def fun_l14_n501(x)
- if (x < 1)
- fun_l15_n829(x)
- else
- fun_l15_n877(x)
- end
-end
-
-def fun_l14_n502(x)
- if (x < 1)
- fun_l15_n457(x)
- else
- fun_l15_n307(x)
- end
-end
-
-def fun_l14_n503(x)
- if (x < 1)
- fun_l15_n301(x)
- else
- fun_l15_n812(x)
- end
-end
-
-def fun_l14_n504(x)
- if (x < 1)
- fun_l15_n175(x)
- else
- fun_l15_n715(x)
- end
-end
-
-def fun_l14_n505(x)
- if (x < 1)
- fun_l15_n897(x)
- else
- fun_l15_n103(x)
- end
-end
-
-def fun_l14_n506(x)
- if (x < 1)
- fun_l15_n357(x)
- else
- fun_l15_n606(x)
- end
-end
-
-def fun_l14_n507(x)
- if (x < 1)
- fun_l15_n974(x)
- else
- fun_l15_n389(x)
- end
-end
-
-def fun_l14_n508(x)
- if (x < 1)
- fun_l15_n641(x)
- else
- fun_l15_n450(x)
- end
-end
-
-def fun_l14_n509(x)
- if (x < 1)
- fun_l15_n4(x)
- else
- fun_l15_n533(x)
- end
-end
-
-def fun_l14_n510(x)
- if (x < 1)
- fun_l15_n258(x)
- else
- fun_l15_n716(x)
- end
-end
-
-def fun_l14_n511(x)
- if (x < 1)
- fun_l15_n919(x)
- else
- fun_l15_n881(x)
- end
-end
-
-def fun_l14_n512(x)
- if (x < 1)
- fun_l15_n313(x)
- else
- fun_l15_n282(x)
- end
-end
-
-def fun_l14_n513(x)
- if (x < 1)
- fun_l15_n116(x)
- else
- fun_l15_n861(x)
- end
-end
-
-def fun_l14_n514(x)
- if (x < 1)
- fun_l15_n178(x)
- else
- fun_l15_n717(x)
- end
-end
-
-def fun_l14_n515(x)
- if (x < 1)
- fun_l15_n896(x)
- else
- fun_l15_n583(x)
- end
-end
-
-def fun_l14_n516(x)
- if (x < 1)
- fun_l15_n203(x)
- else
- fun_l15_n802(x)
- end
-end
-
-def fun_l14_n517(x)
- if (x < 1)
- fun_l15_n810(x)
- else
- fun_l15_n34(x)
- end
-end
-
-def fun_l14_n518(x)
- if (x < 1)
- fun_l15_n908(x)
- else
- fun_l15_n623(x)
- end
-end
-
-def fun_l14_n519(x)
- if (x < 1)
- fun_l15_n954(x)
- else
- fun_l15_n411(x)
- end
-end
-
-def fun_l14_n520(x)
- if (x < 1)
- fun_l15_n880(x)
- else
- fun_l15_n38(x)
- end
-end
-
-def fun_l14_n521(x)
- if (x < 1)
- fun_l15_n954(x)
- else
- fun_l15_n917(x)
- end
-end
-
-def fun_l14_n522(x)
- if (x < 1)
- fun_l15_n693(x)
- else
- fun_l15_n950(x)
- end
-end
-
-def fun_l14_n523(x)
- if (x < 1)
- fun_l15_n654(x)
- else
- fun_l15_n27(x)
- end
-end
-
-def fun_l14_n524(x)
- if (x < 1)
- fun_l15_n316(x)
- else
- fun_l15_n873(x)
- end
-end
-
-def fun_l14_n525(x)
- if (x < 1)
- fun_l15_n554(x)
- else
- fun_l15_n656(x)
- end
-end
-
-def fun_l14_n526(x)
- if (x < 1)
- fun_l15_n739(x)
- else
- fun_l15_n69(x)
- end
-end
-
-def fun_l14_n527(x)
- if (x < 1)
- fun_l15_n851(x)
- else
- fun_l15_n366(x)
- end
-end
-
-def fun_l14_n528(x)
- if (x < 1)
- fun_l15_n113(x)
- else
- fun_l15_n271(x)
- end
-end
-
-def fun_l14_n529(x)
- if (x < 1)
- fun_l15_n652(x)
- else
- fun_l15_n831(x)
- end
-end
-
-def fun_l14_n530(x)
- if (x < 1)
- fun_l15_n746(x)
- else
- fun_l15_n841(x)
- end
-end
-
-def fun_l14_n531(x)
- if (x < 1)
- fun_l15_n758(x)
- else
- fun_l15_n893(x)
- end
-end
-
-def fun_l14_n532(x)
- if (x < 1)
- fun_l15_n976(x)
- else
- fun_l15_n514(x)
- end
-end
-
-def fun_l14_n533(x)
- if (x < 1)
- fun_l15_n375(x)
- else
- fun_l15_n84(x)
- end
-end
-
-def fun_l14_n534(x)
- if (x < 1)
- fun_l15_n226(x)
- else
- fun_l15_n770(x)
- end
-end
-
-def fun_l14_n535(x)
- if (x < 1)
- fun_l15_n106(x)
- else
- fun_l15_n230(x)
- end
-end
-
-def fun_l14_n536(x)
- if (x < 1)
- fun_l15_n18(x)
- else
- fun_l15_n335(x)
- end
-end
-
-def fun_l14_n537(x)
- if (x < 1)
- fun_l15_n755(x)
- else
- fun_l15_n16(x)
- end
-end
-
-def fun_l14_n538(x)
- if (x < 1)
- fun_l15_n653(x)
- else
- fun_l15_n486(x)
- end
-end
-
-def fun_l14_n539(x)
- if (x < 1)
- fun_l15_n665(x)
- else
- fun_l15_n768(x)
- end
-end
-
-def fun_l14_n540(x)
- if (x < 1)
- fun_l15_n282(x)
- else
- fun_l15_n780(x)
- end
-end
-
-def fun_l14_n541(x)
- if (x < 1)
- fun_l15_n633(x)
- else
- fun_l15_n240(x)
- end
-end
-
-def fun_l14_n542(x)
- if (x < 1)
- fun_l15_n141(x)
- else
- fun_l15_n474(x)
- end
-end
-
-def fun_l14_n543(x)
- if (x < 1)
- fun_l15_n80(x)
- else
- fun_l15_n708(x)
- end
-end
-
-def fun_l14_n544(x)
- if (x < 1)
- fun_l15_n309(x)
- else
- fun_l15_n808(x)
- end
-end
-
-def fun_l14_n545(x)
- if (x < 1)
- fun_l15_n744(x)
- else
- fun_l15_n51(x)
- end
-end
-
-def fun_l14_n546(x)
- if (x < 1)
- fun_l15_n571(x)
- else
- fun_l15_n581(x)
- end
-end
-
-def fun_l14_n547(x)
- if (x < 1)
- fun_l15_n272(x)
- else
- fun_l15_n867(x)
- end
-end
-
-def fun_l14_n548(x)
- if (x < 1)
- fun_l15_n96(x)
- else
- fun_l15_n83(x)
- end
-end
-
-def fun_l14_n549(x)
- if (x < 1)
- fun_l15_n828(x)
- else
- fun_l15_n109(x)
- end
-end
-
-def fun_l14_n550(x)
- if (x < 1)
- fun_l15_n94(x)
- else
- fun_l15_n839(x)
- end
-end
-
-def fun_l14_n551(x)
- if (x < 1)
- fun_l15_n704(x)
- else
- fun_l15_n88(x)
- end
-end
-
-def fun_l14_n552(x)
- if (x < 1)
- fun_l15_n531(x)
- else
- fun_l15_n865(x)
- end
-end
-
-def fun_l14_n553(x)
- if (x < 1)
- fun_l15_n506(x)
- else
- fun_l15_n16(x)
- end
-end
-
-def fun_l14_n554(x)
- if (x < 1)
- fun_l15_n583(x)
- else
- fun_l15_n186(x)
- end
-end
-
-def fun_l14_n555(x)
- if (x < 1)
- fun_l15_n673(x)
- else
- fun_l15_n560(x)
- end
-end
-
-def fun_l14_n556(x)
- if (x < 1)
- fun_l15_n947(x)
- else
- fun_l15_n268(x)
- end
-end
-
-def fun_l14_n557(x)
- if (x < 1)
- fun_l15_n88(x)
- else
- fun_l15_n43(x)
- end
-end
-
-def fun_l14_n558(x)
- if (x < 1)
- fun_l15_n690(x)
- else
- fun_l15_n145(x)
- end
-end
-
-def fun_l14_n559(x)
- if (x < 1)
- fun_l15_n24(x)
- else
- fun_l15_n631(x)
- end
-end
-
-def fun_l14_n560(x)
- if (x < 1)
- fun_l15_n381(x)
- else
- fun_l15_n3(x)
- end
-end
-
-def fun_l14_n561(x)
- if (x < 1)
- fun_l15_n954(x)
- else
- fun_l15_n816(x)
- end
-end
-
-def fun_l14_n562(x)
- if (x < 1)
- fun_l15_n948(x)
- else
- fun_l15_n886(x)
- end
-end
-
-def fun_l14_n563(x)
- if (x < 1)
- fun_l15_n749(x)
- else
- fun_l15_n558(x)
- end
-end
-
-def fun_l14_n564(x)
- if (x < 1)
- fun_l15_n715(x)
- else
- fun_l15_n157(x)
- end
-end
-
-def fun_l14_n565(x)
- if (x < 1)
- fun_l15_n674(x)
- else
- fun_l15_n643(x)
- end
-end
-
-def fun_l14_n566(x)
- if (x < 1)
- fun_l15_n151(x)
- else
- fun_l15_n686(x)
- end
-end
-
-def fun_l14_n567(x)
- if (x < 1)
- fun_l15_n362(x)
- else
- fun_l15_n37(x)
- end
-end
-
-def fun_l14_n568(x)
- if (x < 1)
- fun_l15_n132(x)
- else
- fun_l15_n146(x)
- end
-end
-
-def fun_l14_n569(x)
- if (x < 1)
- fun_l15_n32(x)
- else
- fun_l15_n203(x)
- end
-end
-
-def fun_l14_n570(x)
- if (x < 1)
- fun_l15_n477(x)
- else
- fun_l15_n403(x)
- end
-end
-
-def fun_l14_n571(x)
- if (x < 1)
- fun_l15_n976(x)
- else
- fun_l15_n632(x)
- end
-end
-
-def fun_l14_n572(x)
- if (x < 1)
- fun_l15_n735(x)
- else
- fun_l15_n100(x)
- end
-end
-
-def fun_l14_n573(x)
- if (x < 1)
- fun_l15_n186(x)
- else
- fun_l15_n83(x)
- end
-end
-
-def fun_l14_n574(x)
- if (x < 1)
- fun_l15_n246(x)
- else
- fun_l15_n573(x)
- end
-end
-
-def fun_l14_n575(x)
- if (x < 1)
- fun_l15_n316(x)
- else
- fun_l15_n618(x)
- end
-end
-
-def fun_l14_n576(x)
- if (x < 1)
- fun_l15_n426(x)
- else
- fun_l15_n616(x)
- end
-end
-
-def fun_l14_n577(x)
- if (x < 1)
- fun_l15_n810(x)
- else
- fun_l15_n817(x)
- end
-end
-
-def fun_l14_n578(x)
- if (x < 1)
- fun_l15_n262(x)
- else
- fun_l15_n815(x)
- end
-end
-
-def fun_l14_n579(x)
- if (x < 1)
- fun_l15_n851(x)
- else
- fun_l15_n524(x)
- end
-end
-
-def fun_l14_n580(x)
- if (x < 1)
- fun_l15_n748(x)
- else
- fun_l15_n843(x)
- end
-end
-
-def fun_l14_n581(x)
- if (x < 1)
- fun_l15_n284(x)
- else
- fun_l15_n108(x)
- end
-end
-
-def fun_l14_n582(x)
- if (x < 1)
- fun_l15_n976(x)
- else
- fun_l15_n294(x)
- end
-end
-
-def fun_l14_n583(x)
- if (x < 1)
- fun_l15_n609(x)
- else
- fun_l15_n866(x)
- end
-end
-
-def fun_l14_n584(x)
- if (x < 1)
- fun_l15_n293(x)
- else
- fun_l15_n980(x)
- end
-end
-
-def fun_l14_n585(x)
- if (x < 1)
- fun_l15_n548(x)
- else
- fun_l15_n319(x)
- end
-end
-
-def fun_l14_n586(x)
- if (x < 1)
- fun_l15_n566(x)
- else
- fun_l15_n843(x)
- end
-end
-
-def fun_l14_n587(x)
- if (x < 1)
- fun_l15_n963(x)
- else
- fun_l15_n120(x)
- end
-end
-
-def fun_l14_n588(x)
- if (x < 1)
- fun_l15_n149(x)
- else
- fun_l15_n17(x)
- end
-end
-
-def fun_l14_n589(x)
- if (x < 1)
- fun_l15_n11(x)
- else
- fun_l15_n396(x)
- end
-end
-
-def fun_l14_n590(x)
- if (x < 1)
- fun_l15_n40(x)
- else
- fun_l15_n687(x)
- end
-end
-
-def fun_l14_n591(x)
- if (x < 1)
- fun_l15_n617(x)
- else
- fun_l15_n564(x)
- end
-end
-
-def fun_l14_n592(x)
- if (x < 1)
- fun_l15_n26(x)
- else
- fun_l15_n812(x)
- end
-end
-
-def fun_l14_n593(x)
- if (x < 1)
- fun_l15_n890(x)
- else
- fun_l15_n403(x)
- end
-end
-
-def fun_l14_n594(x)
- if (x < 1)
- fun_l15_n455(x)
- else
- fun_l15_n248(x)
- end
-end
-
-def fun_l14_n595(x)
- if (x < 1)
- fun_l15_n880(x)
- else
- fun_l15_n488(x)
- end
-end
-
-def fun_l14_n596(x)
- if (x < 1)
- fun_l15_n412(x)
- else
- fun_l15_n986(x)
- end
-end
-
-def fun_l14_n597(x)
- if (x < 1)
- fun_l15_n487(x)
- else
- fun_l15_n75(x)
- end
-end
-
-def fun_l14_n598(x)
- if (x < 1)
- fun_l15_n911(x)
- else
- fun_l15_n789(x)
- end
-end
-
-def fun_l14_n599(x)
- if (x < 1)
- fun_l15_n856(x)
- else
- fun_l15_n773(x)
- end
-end
-
-def fun_l14_n600(x)
- if (x < 1)
- fun_l15_n57(x)
- else
- fun_l15_n538(x)
- end
-end
-
-def fun_l14_n601(x)
- if (x < 1)
- fun_l15_n828(x)
- else
- fun_l15_n165(x)
- end
-end
-
-def fun_l14_n602(x)
- if (x < 1)
- fun_l15_n230(x)
- else
- fun_l15_n326(x)
- end
-end
-
-def fun_l14_n603(x)
- if (x < 1)
- fun_l15_n463(x)
- else
- fun_l15_n906(x)
- end
-end
-
-def fun_l14_n604(x)
- if (x < 1)
- fun_l15_n584(x)
- else
- fun_l15_n205(x)
- end
-end
-
-def fun_l14_n605(x)
- if (x < 1)
- fun_l15_n243(x)
- else
- fun_l15_n0(x)
- end
-end
-
-def fun_l14_n606(x)
- if (x < 1)
- fun_l15_n258(x)
- else
- fun_l15_n574(x)
- end
-end
-
-def fun_l14_n607(x)
- if (x < 1)
- fun_l15_n821(x)
- else
- fun_l15_n786(x)
- end
-end
-
-def fun_l14_n608(x)
- if (x < 1)
- fun_l15_n553(x)
- else
- fun_l15_n183(x)
- end
-end
-
-def fun_l14_n609(x)
- if (x < 1)
- fun_l15_n853(x)
- else
- fun_l15_n600(x)
- end
-end
-
-def fun_l14_n610(x)
- if (x < 1)
- fun_l15_n606(x)
- else
- fun_l15_n76(x)
- end
-end
-
-def fun_l14_n611(x)
- if (x < 1)
- fun_l15_n488(x)
- else
- fun_l15_n313(x)
- end
-end
-
-def fun_l14_n612(x)
- if (x < 1)
- fun_l15_n261(x)
- else
- fun_l15_n320(x)
- end
-end
-
-def fun_l14_n613(x)
- if (x < 1)
- fun_l15_n410(x)
- else
- fun_l15_n225(x)
- end
-end
-
-def fun_l14_n614(x)
- if (x < 1)
- fun_l15_n653(x)
- else
- fun_l15_n699(x)
- end
-end
-
-def fun_l14_n615(x)
- if (x < 1)
- fun_l15_n917(x)
- else
- fun_l15_n199(x)
- end
-end
-
-def fun_l14_n616(x)
- if (x < 1)
- fun_l15_n583(x)
- else
- fun_l15_n676(x)
- end
-end
-
-def fun_l14_n617(x)
- if (x < 1)
- fun_l15_n708(x)
- else
- fun_l15_n323(x)
- end
-end
-
-def fun_l14_n618(x)
- if (x < 1)
- fun_l15_n935(x)
- else
- fun_l15_n570(x)
- end
-end
-
-def fun_l14_n619(x)
- if (x < 1)
- fun_l15_n440(x)
- else
- fun_l15_n765(x)
- end
-end
-
-def fun_l14_n620(x)
- if (x < 1)
- fun_l15_n621(x)
- else
- fun_l15_n239(x)
- end
-end
-
-def fun_l14_n621(x)
- if (x < 1)
- fun_l15_n498(x)
- else
- fun_l15_n586(x)
- end
-end
-
-def fun_l14_n622(x)
- if (x < 1)
- fun_l15_n786(x)
- else
- fun_l15_n894(x)
- end
-end
-
-def fun_l14_n623(x)
- if (x < 1)
- fun_l15_n637(x)
- else
- fun_l15_n502(x)
- end
-end
-
-def fun_l14_n624(x)
- if (x < 1)
- fun_l15_n982(x)
- else
- fun_l15_n690(x)
- end
-end
-
-def fun_l14_n625(x)
- if (x < 1)
- fun_l15_n696(x)
- else
- fun_l15_n407(x)
- end
-end
-
-def fun_l14_n626(x)
- if (x < 1)
- fun_l15_n324(x)
- else
- fun_l15_n937(x)
- end
-end
-
-def fun_l14_n627(x)
- if (x < 1)
- fun_l15_n223(x)
- else
- fun_l15_n538(x)
- end
-end
-
-def fun_l14_n628(x)
- if (x < 1)
- fun_l15_n865(x)
- else
- fun_l15_n459(x)
- end
-end
-
-def fun_l14_n629(x)
- if (x < 1)
- fun_l15_n990(x)
- else
- fun_l15_n602(x)
- end
-end
-
-def fun_l14_n630(x)
- if (x < 1)
- fun_l15_n289(x)
- else
- fun_l15_n608(x)
- end
-end
-
-def fun_l14_n631(x)
- if (x < 1)
- fun_l15_n802(x)
- else
- fun_l15_n254(x)
- end
-end
-
-def fun_l14_n632(x)
- if (x < 1)
- fun_l15_n8(x)
- else
- fun_l15_n114(x)
- end
-end
-
-def fun_l14_n633(x)
- if (x < 1)
- fun_l15_n91(x)
- else
- fun_l15_n130(x)
- end
-end
-
-def fun_l14_n634(x)
- if (x < 1)
- fun_l15_n691(x)
- else
- fun_l15_n961(x)
- end
-end
-
-def fun_l14_n635(x)
- if (x < 1)
- fun_l15_n590(x)
- else
- fun_l15_n739(x)
- end
-end
-
-def fun_l14_n636(x)
- if (x < 1)
- fun_l15_n552(x)
- else
- fun_l15_n526(x)
- end
-end
-
-def fun_l14_n637(x)
- if (x < 1)
- fun_l15_n741(x)
- else
- fun_l15_n506(x)
- end
-end
-
-def fun_l14_n638(x)
- if (x < 1)
- fun_l15_n458(x)
- else
- fun_l15_n1(x)
- end
-end
-
-def fun_l14_n639(x)
- if (x < 1)
- fun_l15_n933(x)
- else
- fun_l15_n500(x)
- end
-end
-
-def fun_l14_n640(x)
- if (x < 1)
- fun_l15_n267(x)
- else
- fun_l15_n450(x)
- end
-end
-
-def fun_l14_n641(x)
- if (x < 1)
- fun_l15_n51(x)
- else
- fun_l15_n591(x)
- end
-end
-
-def fun_l14_n642(x)
- if (x < 1)
- fun_l15_n262(x)
- else
- fun_l15_n254(x)
- end
-end
-
-def fun_l14_n643(x)
- if (x < 1)
- fun_l15_n320(x)
- else
- fun_l15_n610(x)
- end
-end
-
-def fun_l14_n644(x)
- if (x < 1)
- fun_l15_n137(x)
- else
- fun_l15_n802(x)
- end
-end
-
-def fun_l14_n645(x)
- if (x < 1)
- fun_l15_n365(x)
- else
- fun_l15_n779(x)
- end
-end
-
-def fun_l14_n646(x)
- if (x < 1)
- fun_l15_n863(x)
- else
- fun_l15_n273(x)
- end
-end
-
-def fun_l14_n647(x)
- if (x < 1)
- fun_l15_n334(x)
- else
- fun_l15_n519(x)
- end
-end
-
-def fun_l14_n648(x)
- if (x < 1)
- fun_l15_n232(x)
- else
- fun_l15_n876(x)
- end
-end
-
-def fun_l14_n649(x)
- if (x < 1)
- fun_l15_n850(x)
- else
- fun_l15_n51(x)
- end
-end
-
-def fun_l14_n650(x)
- if (x < 1)
- fun_l15_n610(x)
- else
- fun_l15_n52(x)
- end
-end
-
-def fun_l14_n651(x)
- if (x < 1)
- fun_l15_n701(x)
- else
- fun_l15_n143(x)
- end
-end
-
-def fun_l14_n652(x)
- if (x < 1)
- fun_l15_n933(x)
- else
- fun_l15_n748(x)
- end
-end
-
-def fun_l14_n653(x)
- if (x < 1)
- fun_l15_n280(x)
- else
- fun_l15_n632(x)
- end
-end
-
-def fun_l14_n654(x)
- if (x < 1)
- fun_l15_n361(x)
- else
- fun_l15_n107(x)
- end
-end
-
-def fun_l14_n655(x)
- if (x < 1)
- fun_l15_n743(x)
- else
- fun_l15_n899(x)
- end
-end
-
-def fun_l14_n656(x)
- if (x < 1)
- fun_l15_n383(x)
- else
- fun_l15_n441(x)
- end
-end
-
-def fun_l14_n657(x)
- if (x < 1)
- fun_l15_n244(x)
- else
- fun_l15_n349(x)
- end
-end
-
-def fun_l14_n658(x)
- if (x < 1)
- fun_l15_n69(x)
- else
- fun_l15_n758(x)
- end
-end
-
-def fun_l14_n659(x)
- if (x < 1)
- fun_l15_n570(x)
- else
- fun_l15_n760(x)
- end
-end
-
-def fun_l14_n660(x)
- if (x < 1)
- fun_l15_n554(x)
- else
- fun_l15_n258(x)
- end
-end
-
-def fun_l14_n661(x)
- if (x < 1)
- fun_l15_n417(x)
- else
- fun_l15_n934(x)
- end
-end
-
-def fun_l14_n662(x)
- if (x < 1)
- fun_l15_n717(x)
- else
- fun_l15_n99(x)
- end
-end
-
-def fun_l14_n663(x)
- if (x < 1)
- fun_l15_n882(x)
- else
- fun_l15_n515(x)
- end
-end
-
-def fun_l14_n664(x)
- if (x < 1)
- fun_l15_n623(x)
- else
- fun_l15_n679(x)
- end
-end
-
-def fun_l14_n665(x)
- if (x < 1)
- fun_l15_n974(x)
- else
- fun_l15_n127(x)
- end
-end
-
-def fun_l14_n666(x)
- if (x < 1)
- fun_l15_n592(x)
- else
- fun_l15_n322(x)
- end
-end
-
-def fun_l14_n667(x)
- if (x < 1)
- fun_l15_n698(x)
- else
- fun_l15_n670(x)
- end
-end
-
-def fun_l14_n668(x)
- if (x < 1)
- fun_l15_n164(x)
- else
- fun_l15_n670(x)
- end
-end
-
-def fun_l14_n669(x)
- if (x < 1)
- fun_l15_n837(x)
- else
- fun_l15_n113(x)
- end
-end
-
-def fun_l14_n670(x)
- if (x < 1)
- fun_l15_n200(x)
- else
- fun_l15_n486(x)
- end
-end
-
-def fun_l14_n671(x)
- if (x < 1)
- fun_l15_n593(x)
- else
- fun_l15_n822(x)
- end
-end
-
-def fun_l14_n672(x)
- if (x < 1)
- fun_l15_n191(x)
- else
- fun_l15_n842(x)
- end
-end
-
-def fun_l14_n673(x)
- if (x < 1)
- fun_l15_n391(x)
- else
- fun_l15_n119(x)
- end
-end
-
-def fun_l14_n674(x)
- if (x < 1)
- fun_l15_n914(x)
- else
- fun_l15_n453(x)
- end
-end
-
-def fun_l14_n675(x)
- if (x < 1)
- fun_l15_n73(x)
- else
- fun_l15_n366(x)
- end
-end
-
-def fun_l14_n676(x)
- if (x < 1)
- fun_l15_n58(x)
- else
- fun_l15_n804(x)
- end
-end
-
-def fun_l14_n677(x)
- if (x < 1)
- fun_l15_n905(x)
- else
- fun_l15_n969(x)
- end
-end
-
-def fun_l14_n678(x)
- if (x < 1)
- fun_l15_n301(x)
- else
- fun_l15_n838(x)
- end
-end
-
-def fun_l14_n679(x)
- if (x < 1)
- fun_l15_n14(x)
- else
- fun_l15_n567(x)
- end
-end
-
-def fun_l14_n680(x)
- if (x < 1)
- fun_l15_n262(x)
- else
- fun_l15_n325(x)
- end
-end
-
-def fun_l14_n681(x)
- if (x < 1)
- fun_l15_n985(x)
- else
- fun_l15_n181(x)
- end
-end
-
-def fun_l14_n682(x)
- if (x < 1)
- fun_l15_n197(x)
- else
- fun_l15_n175(x)
- end
-end
-
-def fun_l14_n683(x)
- if (x < 1)
- fun_l15_n714(x)
- else
- fun_l15_n276(x)
- end
-end
-
-def fun_l14_n684(x)
- if (x < 1)
- fun_l15_n720(x)
- else
- fun_l15_n517(x)
- end
-end
-
-def fun_l14_n685(x)
- if (x < 1)
- fun_l15_n351(x)
- else
- fun_l15_n917(x)
- end
-end
-
-def fun_l14_n686(x)
- if (x < 1)
- fun_l15_n199(x)
- else
- fun_l15_n163(x)
- end
-end
-
-def fun_l14_n687(x)
- if (x < 1)
- fun_l15_n769(x)
- else
- fun_l15_n205(x)
- end
-end
-
-def fun_l14_n688(x)
- if (x < 1)
- fun_l15_n840(x)
- else
- fun_l15_n756(x)
- end
-end
-
-def fun_l14_n689(x)
- if (x < 1)
- fun_l15_n306(x)
- else
- fun_l15_n273(x)
- end
-end
-
-def fun_l14_n690(x)
- if (x < 1)
- fun_l15_n549(x)
- else
- fun_l15_n192(x)
- end
-end
-
-def fun_l14_n691(x)
- if (x < 1)
- fun_l15_n167(x)
- else
- fun_l15_n403(x)
- end
-end
-
-def fun_l14_n692(x)
- if (x < 1)
- fun_l15_n175(x)
- else
- fun_l15_n361(x)
- end
-end
-
-def fun_l14_n693(x)
- if (x < 1)
- fun_l15_n208(x)
- else
- fun_l15_n582(x)
- end
-end
-
-def fun_l14_n694(x)
- if (x < 1)
- fun_l15_n347(x)
- else
- fun_l15_n962(x)
- end
-end
-
-def fun_l14_n695(x)
- if (x < 1)
- fun_l15_n381(x)
- else
- fun_l15_n865(x)
- end
-end
-
-def fun_l14_n696(x)
- if (x < 1)
- fun_l15_n76(x)
- else
- fun_l15_n140(x)
- end
-end
-
-def fun_l14_n697(x)
- if (x < 1)
- fun_l15_n801(x)
- else
- fun_l15_n267(x)
- end
-end
-
-def fun_l14_n698(x)
- if (x < 1)
- fun_l15_n137(x)
- else
- fun_l15_n518(x)
- end
-end
-
-def fun_l14_n699(x)
- if (x < 1)
- fun_l15_n56(x)
- else
- fun_l15_n758(x)
- end
-end
-
-def fun_l14_n700(x)
- if (x < 1)
- fun_l15_n178(x)
- else
- fun_l15_n641(x)
- end
-end
-
-def fun_l14_n701(x)
- if (x < 1)
- fun_l15_n815(x)
- else
- fun_l15_n692(x)
- end
-end
-
-def fun_l14_n702(x)
- if (x < 1)
- fun_l15_n355(x)
- else
- fun_l15_n338(x)
- end
-end
-
-def fun_l14_n703(x)
- if (x < 1)
- fun_l15_n894(x)
- else
- fun_l15_n843(x)
- end
-end
-
-def fun_l14_n704(x)
- if (x < 1)
- fun_l15_n728(x)
- else
- fun_l15_n140(x)
- end
-end
-
-def fun_l14_n705(x)
- if (x < 1)
- fun_l15_n304(x)
- else
- fun_l15_n237(x)
- end
-end
-
-def fun_l14_n706(x)
- if (x < 1)
- fun_l15_n57(x)
- else
- fun_l15_n947(x)
- end
-end
-
-def fun_l14_n707(x)
- if (x < 1)
- fun_l15_n90(x)
- else
- fun_l15_n831(x)
- end
-end
-
-def fun_l14_n708(x)
- if (x < 1)
- fun_l15_n487(x)
- else
- fun_l15_n937(x)
- end
-end
-
-def fun_l14_n709(x)
- if (x < 1)
- fun_l15_n898(x)
- else
- fun_l15_n151(x)
- end
-end
-
-def fun_l14_n710(x)
- if (x < 1)
- fun_l15_n306(x)
- else
- fun_l15_n687(x)
- end
-end
-
-def fun_l14_n711(x)
- if (x < 1)
- fun_l15_n151(x)
- else
- fun_l15_n239(x)
- end
-end
-
-def fun_l14_n712(x)
- if (x < 1)
- fun_l15_n512(x)
- else
- fun_l15_n203(x)
- end
-end
-
-def fun_l14_n713(x)
- if (x < 1)
- fun_l15_n611(x)
- else
- fun_l15_n474(x)
- end
-end
-
-def fun_l14_n714(x)
- if (x < 1)
- fun_l15_n109(x)
- else
- fun_l15_n149(x)
- end
-end
-
-def fun_l14_n715(x)
- if (x < 1)
- fun_l15_n187(x)
- else
- fun_l15_n563(x)
- end
-end
-
-def fun_l14_n716(x)
- if (x < 1)
- fun_l15_n877(x)
- else
- fun_l15_n644(x)
- end
-end
-
-def fun_l14_n717(x)
- if (x < 1)
- fun_l15_n960(x)
- else
- fun_l15_n471(x)
- end
-end
-
-def fun_l14_n718(x)
- if (x < 1)
- fun_l15_n250(x)
- else
- fun_l15_n93(x)
- end
-end
-
-def fun_l14_n719(x)
- if (x < 1)
- fun_l15_n177(x)
- else
- fun_l15_n14(x)
- end
-end
-
-def fun_l14_n720(x)
- if (x < 1)
- fun_l15_n912(x)
- else
- fun_l15_n95(x)
- end
-end
-
-def fun_l14_n721(x)
- if (x < 1)
- fun_l15_n776(x)
- else
- fun_l15_n256(x)
- end
-end
-
-def fun_l14_n722(x)
- if (x < 1)
- fun_l15_n968(x)
- else
- fun_l15_n857(x)
- end
-end
-
-def fun_l14_n723(x)
- if (x < 1)
- fun_l15_n402(x)
- else
- fun_l15_n60(x)
- end
-end
-
-def fun_l14_n724(x)
- if (x < 1)
- fun_l15_n345(x)
- else
- fun_l15_n688(x)
- end
-end
-
-def fun_l14_n725(x)
- if (x < 1)
- fun_l15_n72(x)
- else
- fun_l15_n943(x)
- end
-end
-
-def fun_l14_n726(x)
- if (x < 1)
- fun_l15_n535(x)
- else
- fun_l15_n916(x)
- end
-end
-
-def fun_l14_n727(x)
- if (x < 1)
- fun_l15_n717(x)
- else
- fun_l15_n354(x)
- end
-end
-
-def fun_l14_n728(x)
- if (x < 1)
- fun_l15_n679(x)
- else
- fun_l15_n348(x)
- end
-end
-
-def fun_l14_n729(x)
- if (x < 1)
- fun_l15_n187(x)
- else
- fun_l15_n910(x)
- end
-end
-
-def fun_l14_n730(x)
- if (x < 1)
- fun_l15_n151(x)
- else
- fun_l15_n689(x)
- end
-end
-
-def fun_l14_n731(x)
- if (x < 1)
- fun_l15_n653(x)
- else
- fun_l15_n380(x)
- end
-end
-
-def fun_l14_n732(x)
- if (x < 1)
- fun_l15_n627(x)
- else
- fun_l15_n214(x)
- end
-end
-
-def fun_l14_n733(x)
- if (x < 1)
- fun_l15_n53(x)
- else
- fun_l15_n882(x)
- end
-end
-
-def fun_l14_n734(x)
- if (x < 1)
- fun_l15_n628(x)
- else
- fun_l15_n632(x)
- end
-end
-
-def fun_l14_n735(x)
- if (x < 1)
- fun_l15_n415(x)
- else
- fun_l15_n719(x)
- end
-end
-
-def fun_l14_n736(x)
- if (x < 1)
- fun_l15_n474(x)
- else
- fun_l15_n966(x)
- end
-end
-
-def fun_l14_n737(x)
- if (x < 1)
- fun_l15_n140(x)
- else
- fun_l15_n79(x)
- end
-end
-
-def fun_l14_n738(x)
- if (x < 1)
- fun_l15_n682(x)
- else
- fun_l15_n788(x)
- end
-end
-
-def fun_l14_n739(x)
- if (x < 1)
- fun_l15_n62(x)
- else
- fun_l15_n289(x)
- end
-end
-
-def fun_l14_n740(x)
- if (x < 1)
- fun_l15_n256(x)
- else
- fun_l15_n53(x)
- end
-end
-
-def fun_l14_n741(x)
- if (x < 1)
- fun_l15_n571(x)
- else
- fun_l15_n912(x)
- end
-end
-
-def fun_l14_n742(x)
- if (x < 1)
- fun_l15_n477(x)
- else
- fun_l15_n757(x)
- end
-end
-
-def fun_l14_n743(x)
- if (x < 1)
- fun_l15_n914(x)
- else
- fun_l15_n216(x)
- end
-end
-
-def fun_l14_n744(x)
- if (x < 1)
- fun_l15_n474(x)
- else
- fun_l15_n860(x)
- end
-end
-
-def fun_l14_n745(x)
- if (x < 1)
- fun_l15_n303(x)
- else
- fun_l15_n417(x)
- end
-end
-
-def fun_l14_n746(x)
- if (x < 1)
- fun_l15_n601(x)
- else
- fun_l15_n872(x)
- end
-end
-
-def fun_l14_n747(x)
- if (x < 1)
- fun_l15_n70(x)
- else
- fun_l15_n245(x)
- end
-end
-
-def fun_l14_n748(x)
- if (x < 1)
- fun_l15_n628(x)
- else
- fun_l15_n503(x)
- end
-end
-
-def fun_l14_n749(x)
- if (x < 1)
- fun_l15_n965(x)
- else
- fun_l15_n89(x)
- end
-end
-
-def fun_l14_n750(x)
- if (x < 1)
- fun_l15_n910(x)
- else
- fun_l15_n386(x)
- end
-end
-
-def fun_l14_n751(x)
- if (x < 1)
- fun_l15_n444(x)
- else
- fun_l15_n765(x)
- end
-end
-
-def fun_l14_n752(x)
- if (x < 1)
- fun_l15_n481(x)
- else
- fun_l15_n356(x)
- end
-end
-
-def fun_l14_n753(x)
- if (x < 1)
- fun_l15_n45(x)
- else
- fun_l15_n644(x)
- end
-end
-
-def fun_l14_n754(x)
- if (x < 1)
- fun_l15_n262(x)
- else
- fun_l15_n681(x)
- end
-end
-
-def fun_l14_n755(x)
- if (x < 1)
- fun_l15_n984(x)
- else
- fun_l15_n488(x)
- end
-end
-
-def fun_l14_n756(x)
- if (x < 1)
- fun_l15_n751(x)
- else
- fun_l15_n165(x)
- end
-end
-
-def fun_l14_n757(x)
- if (x < 1)
- fun_l15_n716(x)
- else
- fun_l15_n483(x)
- end
-end
-
-def fun_l14_n758(x)
- if (x < 1)
- fun_l15_n863(x)
- else
- fun_l15_n841(x)
- end
-end
-
-def fun_l14_n759(x)
- if (x < 1)
- fun_l15_n654(x)
- else
- fun_l15_n782(x)
- end
-end
-
-def fun_l14_n760(x)
- if (x < 1)
- fun_l15_n390(x)
- else
- fun_l15_n254(x)
- end
-end
-
-def fun_l14_n761(x)
- if (x < 1)
- fun_l15_n888(x)
- else
- fun_l15_n739(x)
- end
-end
-
-def fun_l14_n762(x)
- if (x < 1)
- fun_l15_n775(x)
- else
- fun_l15_n310(x)
- end
-end
-
-def fun_l14_n763(x)
- if (x < 1)
- fun_l15_n713(x)
- else
- fun_l15_n246(x)
- end
-end
-
-def fun_l14_n764(x)
- if (x < 1)
- fun_l15_n318(x)
- else
- fun_l15_n121(x)
- end
-end
-
-def fun_l14_n765(x)
- if (x < 1)
- fun_l15_n424(x)
- else
- fun_l15_n538(x)
- end
-end
-
-def fun_l14_n766(x)
- if (x < 1)
- fun_l15_n58(x)
- else
- fun_l15_n487(x)
- end
-end
-
-def fun_l14_n767(x)
- if (x < 1)
- fun_l15_n48(x)
- else
- fun_l15_n776(x)
- end
-end
-
-def fun_l14_n768(x)
- if (x < 1)
- fun_l15_n156(x)
- else
- fun_l15_n340(x)
- end
-end
-
-def fun_l14_n769(x)
- if (x < 1)
- fun_l15_n66(x)
- else
- fun_l15_n655(x)
- end
-end
-
-def fun_l14_n770(x)
- if (x < 1)
- fun_l15_n15(x)
- else
- fun_l15_n392(x)
- end
-end
-
-def fun_l14_n771(x)
- if (x < 1)
- fun_l15_n331(x)
- else
- fun_l15_n114(x)
- end
-end
-
-def fun_l14_n772(x)
- if (x < 1)
- fun_l15_n267(x)
- else
- fun_l15_n711(x)
- end
-end
-
-def fun_l14_n773(x)
- if (x < 1)
- fun_l15_n567(x)
- else
- fun_l15_n869(x)
- end
-end
-
-def fun_l14_n774(x)
- if (x < 1)
- fun_l15_n915(x)
- else
- fun_l15_n594(x)
- end
-end
-
-def fun_l14_n775(x)
- if (x < 1)
- fun_l15_n139(x)
- else
- fun_l15_n285(x)
- end
-end
-
-def fun_l14_n776(x)
- if (x < 1)
- fun_l15_n994(x)
- else
- fun_l15_n116(x)
- end
-end
-
-def fun_l14_n777(x)
- if (x < 1)
- fun_l15_n999(x)
- else
- fun_l15_n356(x)
- end
-end
-
-def fun_l14_n778(x)
- if (x < 1)
- fun_l15_n46(x)
- else
- fun_l15_n845(x)
- end
-end
-
-def fun_l14_n779(x)
- if (x < 1)
- fun_l15_n313(x)
- else
- fun_l15_n785(x)
- end
-end
-
-def fun_l14_n780(x)
- if (x < 1)
- fun_l15_n282(x)
- else
- fun_l15_n489(x)
- end
-end
-
-def fun_l14_n781(x)
- if (x < 1)
- fun_l15_n101(x)
- else
- fun_l15_n928(x)
- end
-end
-
-def fun_l14_n782(x)
- if (x < 1)
- fun_l15_n307(x)
- else
- fun_l15_n808(x)
- end
-end
-
-def fun_l14_n783(x)
- if (x < 1)
- fun_l15_n475(x)
- else
- fun_l15_n347(x)
- end
-end
-
-def fun_l14_n784(x)
- if (x < 1)
- fun_l15_n404(x)
- else
- fun_l15_n65(x)
- end
-end
-
-def fun_l14_n785(x)
- if (x < 1)
- fun_l15_n61(x)
- else
- fun_l15_n145(x)
- end
-end
-
-def fun_l14_n786(x)
- if (x < 1)
- fun_l15_n919(x)
- else
- fun_l15_n700(x)
- end
-end
-
-def fun_l14_n787(x)
- if (x < 1)
- fun_l15_n333(x)
- else
- fun_l15_n702(x)
- end
-end
-
-def fun_l14_n788(x)
- if (x < 1)
- fun_l15_n924(x)
- else
- fun_l15_n354(x)
- end
-end
-
-def fun_l14_n789(x)
- if (x < 1)
- fun_l15_n171(x)
- else
- fun_l15_n643(x)
- end
-end
-
-def fun_l14_n790(x)
- if (x < 1)
- fun_l15_n852(x)
- else
- fun_l15_n421(x)
- end
-end
-
-def fun_l14_n791(x)
- if (x < 1)
- fun_l15_n706(x)
- else
- fun_l15_n260(x)
- end
-end
-
-def fun_l14_n792(x)
- if (x < 1)
- fun_l15_n908(x)
- else
- fun_l15_n145(x)
- end
-end
-
-def fun_l14_n793(x)
- if (x < 1)
- fun_l15_n802(x)
- else
- fun_l15_n365(x)
- end
-end
-
-def fun_l14_n794(x)
- if (x < 1)
- fun_l15_n727(x)
- else
- fun_l15_n758(x)
- end
-end
-
-def fun_l14_n795(x)
- if (x < 1)
- fun_l15_n463(x)
- else
- fun_l15_n58(x)
- end
-end
-
-def fun_l14_n796(x)
- if (x < 1)
- fun_l15_n413(x)
- else
- fun_l15_n525(x)
- end
-end
-
-def fun_l14_n797(x)
- if (x < 1)
- fun_l15_n970(x)
- else
- fun_l15_n480(x)
- end
-end
-
-def fun_l14_n798(x)
- if (x < 1)
- fun_l15_n476(x)
- else
- fun_l15_n316(x)
- end
-end
-
-def fun_l14_n799(x)
- if (x < 1)
- fun_l15_n578(x)
- else
- fun_l15_n586(x)
- end
-end
-
-def fun_l14_n800(x)
- if (x < 1)
- fun_l15_n848(x)
- else
- fun_l15_n286(x)
- end
-end
-
-def fun_l14_n801(x)
- if (x < 1)
- fun_l15_n745(x)
- else
- fun_l15_n144(x)
- end
-end
-
-def fun_l14_n802(x)
- if (x < 1)
- fun_l15_n369(x)
- else
- fun_l15_n819(x)
- end
-end
-
-def fun_l14_n803(x)
- if (x < 1)
- fun_l15_n498(x)
- else
- fun_l15_n206(x)
- end
-end
-
-def fun_l14_n804(x)
- if (x < 1)
- fun_l15_n817(x)
- else
- fun_l15_n707(x)
- end
-end
-
-def fun_l14_n805(x)
- if (x < 1)
- fun_l15_n935(x)
- else
- fun_l15_n43(x)
- end
-end
-
-def fun_l14_n806(x)
- if (x < 1)
- fun_l15_n285(x)
- else
- fun_l15_n605(x)
- end
-end
-
-def fun_l14_n807(x)
- if (x < 1)
- fun_l15_n392(x)
- else
- fun_l15_n672(x)
- end
-end
-
-def fun_l14_n808(x)
- if (x < 1)
- fun_l15_n965(x)
- else
- fun_l15_n610(x)
- end
-end
-
-def fun_l14_n809(x)
- if (x < 1)
- fun_l15_n266(x)
- else
- fun_l15_n233(x)
- end
-end
-
-def fun_l14_n810(x)
- if (x < 1)
- fun_l15_n514(x)
- else
- fun_l15_n204(x)
- end
-end
-
-def fun_l14_n811(x)
- if (x < 1)
- fun_l15_n973(x)
- else
- fun_l15_n768(x)
- end
-end
-
-def fun_l14_n812(x)
- if (x < 1)
- fun_l15_n241(x)
- else
- fun_l15_n329(x)
- end
-end
-
-def fun_l14_n813(x)
- if (x < 1)
- fun_l15_n150(x)
- else
- fun_l15_n264(x)
- end
-end
-
-def fun_l14_n814(x)
- if (x < 1)
- fun_l15_n205(x)
- else
- fun_l15_n595(x)
- end
-end
-
-def fun_l14_n815(x)
- if (x < 1)
- fun_l15_n452(x)
- else
- fun_l15_n288(x)
- end
-end
-
-def fun_l14_n816(x)
- if (x < 1)
- fun_l15_n385(x)
- else
- fun_l15_n633(x)
- end
-end
-
-def fun_l14_n817(x)
- if (x < 1)
- fun_l15_n290(x)
- else
- fun_l15_n656(x)
- end
-end
-
-def fun_l14_n818(x)
- if (x < 1)
- fun_l15_n463(x)
- else
- fun_l15_n785(x)
- end
-end
-
-def fun_l14_n819(x)
- if (x < 1)
- fun_l15_n183(x)
- else
- fun_l15_n787(x)
- end
-end
-
-def fun_l14_n820(x)
- if (x < 1)
- fun_l15_n515(x)
- else
- fun_l15_n104(x)
- end
-end
-
-def fun_l14_n821(x)
- if (x < 1)
- fun_l15_n848(x)
- else
- fun_l15_n745(x)
- end
-end
-
-def fun_l14_n822(x)
- if (x < 1)
- fun_l15_n268(x)
- else
- fun_l15_n140(x)
- end
-end
-
-def fun_l14_n823(x)
- if (x < 1)
- fun_l15_n607(x)
- else
- fun_l15_n785(x)
- end
-end
-
-def fun_l14_n824(x)
- if (x < 1)
- fun_l15_n261(x)
- else
- fun_l15_n659(x)
- end
-end
-
-def fun_l14_n825(x)
- if (x < 1)
- fun_l15_n628(x)
- else
- fun_l15_n427(x)
- end
-end
-
-def fun_l14_n826(x)
- if (x < 1)
- fun_l15_n293(x)
- else
- fun_l15_n141(x)
- end
-end
-
-def fun_l14_n827(x)
- if (x < 1)
- fun_l15_n112(x)
- else
- fun_l15_n135(x)
- end
-end
-
-def fun_l14_n828(x)
- if (x < 1)
- fun_l15_n779(x)
- else
- fun_l15_n323(x)
- end
-end
-
-def fun_l14_n829(x)
- if (x < 1)
- fun_l15_n295(x)
- else
- fun_l15_n753(x)
- end
-end
-
-def fun_l14_n830(x)
- if (x < 1)
- fun_l15_n683(x)
- else
- fun_l15_n303(x)
- end
-end
-
-def fun_l14_n831(x)
- if (x < 1)
- fun_l15_n522(x)
- else
- fun_l15_n983(x)
- end
-end
-
-def fun_l14_n832(x)
- if (x < 1)
- fun_l15_n338(x)
- else
- fun_l15_n835(x)
- end
-end
-
-def fun_l14_n833(x)
- if (x < 1)
- fun_l15_n888(x)
- else
- fun_l15_n95(x)
- end
-end
-
-def fun_l14_n834(x)
- if (x < 1)
- fun_l15_n510(x)
- else
- fun_l15_n342(x)
- end
-end
-
-def fun_l14_n835(x)
- if (x < 1)
- fun_l15_n168(x)
- else
- fun_l15_n864(x)
- end
-end
-
-def fun_l14_n836(x)
- if (x < 1)
- fun_l15_n392(x)
- else
- fun_l15_n779(x)
- end
-end
-
-def fun_l14_n837(x)
- if (x < 1)
- fun_l15_n176(x)
- else
- fun_l15_n354(x)
- end
-end
-
-def fun_l14_n838(x)
- if (x < 1)
- fun_l15_n477(x)
- else
- fun_l15_n95(x)
- end
-end
-
-def fun_l14_n839(x)
- if (x < 1)
- fun_l15_n223(x)
- else
- fun_l15_n213(x)
- end
-end
-
-def fun_l14_n840(x)
- if (x < 1)
- fun_l15_n228(x)
- else
- fun_l15_n897(x)
- end
-end
-
-def fun_l14_n841(x)
- if (x < 1)
- fun_l15_n551(x)
- else
- fun_l15_n649(x)
- end
-end
-
-def fun_l14_n842(x)
- if (x < 1)
- fun_l15_n541(x)
- else
- fun_l15_n741(x)
- end
-end
-
-def fun_l14_n843(x)
- if (x < 1)
- fun_l15_n464(x)
- else
- fun_l15_n403(x)
- end
-end
-
-def fun_l14_n844(x)
- if (x < 1)
- fun_l15_n853(x)
- else
- fun_l15_n223(x)
- end
-end
-
-def fun_l14_n845(x)
- if (x < 1)
- fun_l15_n443(x)
- else
- fun_l15_n441(x)
- end
-end
-
-def fun_l14_n846(x)
- if (x < 1)
- fun_l15_n864(x)
- else
- fun_l15_n912(x)
- end
-end
-
-def fun_l14_n847(x)
- if (x < 1)
- fun_l15_n631(x)
- else
- fun_l15_n764(x)
- end
-end
-
-def fun_l14_n848(x)
- if (x < 1)
- fun_l15_n198(x)
- else
- fun_l15_n825(x)
- end
-end
-
-def fun_l14_n849(x)
- if (x < 1)
- fun_l15_n525(x)
- else
- fun_l15_n31(x)
- end
-end
-
-def fun_l14_n850(x)
- if (x < 1)
- fun_l15_n928(x)
- else
- fun_l15_n893(x)
- end
-end
-
-def fun_l14_n851(x)
- if (x < 1)
- fun_l15_n499(x)
- else
- fun_l15_n297(x)
- end
-end
-
-def fun_l14_n852(x)
- if (x < 1)
- fun_l15_n777(x)
- else
- fun_l15_n239(x)
- end
-end
-
-def fun_l14_n853(x)
- if (x < 1)
- fun_l15_n120(x)
- else
- fun_l15_n134(x)
- end
-end
-
-def fun_l14_n854(x)
- if (x < 1)
- fun_l15_n613(x)
- else
- fun_l15_n324(x)
- end
-end
-
-def fun_l14_n855(x)
- if (x < 1)
- fun_l15_n22(x)
- else
- fun_l15_n192(x)
- end
-end
-
-def fun_l14_n856(x)
- if (x < 1)
- fun_l15_n609(x)
- else
- fun_l15_n284(x)
- end
-end
-
-def fun_l14_n857(x)
- if (x < 1)
- fun_l15_n130(x)
- else
- fun_l15_n256(x)
- end
-end
-
-def fun_l14_n858(x)
- if (x < 1)
- fun_l15_n40(x)
- else
- fun_l15_n340(x)
- end
-end
-
-def fun_l14_n859(x)
- if (x < 1)
- fun_l15_n644(x)
- else
- fun_l15_n522(x)
- end
-end
-
-def fun_l14_n860(x)
- if (x < 1)
- fun_l15_n363(x)
- else
- fun_l15_n52(x)
- end
-end
-
-def fun_l14_n861(x)
- if (x < 1)
- fun_l15_n166(x)
- else
- fun_l15_n452(x)
- end
-end
-
-def fun_l14_n862(x)
- if (x < 1)
- fun_l15_n552(x)
- else
- fun_l15_n534(x)
- end
-end
-
-def fun_l14_n863(x)
- if (x < 1)
- fun_l15_n489(x)
- else
- fun_l15_n181(x)
- end
-end
-
-def fun_l14_n864(x)
- if (x < 1)
- fun_l15_n584(x)
- else
- fun_l15_n871(x)
- end
-end
-
-def fun_l14_n865(x)
- if (x < 1)
- fun_l15_n868(x)
- else
- fun_l15_n807(x)
- end
-end
-
-def fun_l14_n866(x)
- if (x < 1)
- fun_l15_n159(x)
- else
- fun_l15_n226(x)
- end
-end
-
-def fun_l14_n867(x)
- if (x < 1)
- fun_l15_n440(x)
- else
- fun_l15_n318(x)
- end
-end
-
-def fun_l14_n868(x)
- if (x < 1)
- fun_l15_n603(x)
- else
- fun_l15_n440(x)
- end
-end
-
-def fun_l14_n869(x)
- if (x < 1)
- fun_l15_n478(x)
- else
- fun_l15_n896(x)
- end
-end
-
-def fun_l14_n870(x)
- if (x < 1)
- fun_l15_n593(x)
- else
- fun_l15_n973(x)
- end
-end
-
-def fun_l14_n871(x)
- if (x < 1)
- fun_l15_n767(x)
- else
- fun_l15_n828(x)
- end
-end
-
-def fun_l14_n872(x)
- if (x < 1)
- fun_l15_n578(x)
- else
- fun_l15_n309(x)
- end
-end
-
-def fun_l14_n873(x)
- if (x < 1)
- fun_l15_n959(x)
- else
- fun_l15_n263(x)
- end
-end
-
-def fun_l14_n874(x)
- if (x < 1)
- fun_l15_n170(x)
- else
- fun_l15_n700(x)
- end
-end
-
-def fun_l14_n875(x)
- if (x < 1)
- fun_l15_n800(x)
- else
- fun_l15_n703(x)
- end
-end
-
-def fun_l14_n876(x)
- if (x < 1)
- fun_l15_n556(x)
- else
- fun_l15_n854(x)
- end
-end
-
-def fun_l14_n877(x)
- if (x < 1)
- fun_l15_n472(x)
- else
- fun_l15_n893(x)
- end
-end
-
-def fun_l14_n878(x)
- if (x < 1)
- fun_l15_n847(x)
- else
- fun_l15_n438(x)
- end
-end
-
-def fun_l14_n879(x)
- if (x < 1)
- fun_l15_n401(x)
- else
- fun_l15_n59(x)
- end
-end
-
-def fun_l14_n880(x)
- if (x < 1)
- fun_l15_n321(x)
- else
- fun_l15_n57(x)
- end
-end
-
-def fun_l14_n881(x)
- if (x < 1)
- fun_l15_n664(x)
- else
- fun_l15_n448(x)
- end
-end
-
-def fun_l14_n882(x)
- if (x < 1)
- fun_l15_n113(x)
- else
- fun_l15_n270(x)
- end
-end
-
-def fun_l14_n883(x)
- if (x < 1)
- fun_l15_n596(x)
- else
- fun_l15_n354(x)
- end
-end
-
-def fun_l14_n884(x)
- if (x < 1)
- fun_l15_n681(x)
- else
- fun_l15_n801(x)
- end
-end
-
-def fun_l14_n885(x)
- if (x < 1)
- fun_l15_n802(x)
- else
- fun_l15_n327(x)
- end
-end
-
-def fun_l14_n886(x)
- if (x < 1)
- fun_l15_n657(x)
- else
- fun_l15_n325(x)
- end
-end
-
-def fun_l14_n887(x)
- if (x < 1)
- fun_l15_n108(x)
- else
- fun_l15_n11(x)
- end
-end
-
-def fun_l14_n888(x)
- if (x < 1)
- fun_l15_n696(x)
- else
- fun_l15_n88(x)
- end
-end
-
-def fun_l14_n889(x)
- if (x < 1)
- fun_l15_n220(x)
- else
- fun_l15_n282(x)
- end
-end
-
-def fun_l14_n890(x)
- if (x < 1)
- fun_l15_n702(x)
- else
- fun_l15_n550(x)
- end
-end
-
-def fun_l14_n891(x)
- if (x < 1)
- fun_l15_n67(x)
- else
- fun_l15_n763(x)
- end
-end
-
-def fun_l14_n892(x)
- if (x < 1)
- fun_l15_n386(x)
- else
- fun_l15_n938(x)
- end
-end
-
-def fun_l14_n893(x)
- if (x < 1)
- fun_l15_n193(x)
- else
- fun_l15_n110(x)
- end
-end
-
-def fun_l14_n894(x)
- if (x < 1)
- fun_l15_n408(x)
- else
- fun_l15_n392(x)
- end
-end
-
-def fun_l14_n895(x)
- if (x < 1)
- fun_l15_n488(x)
- else
- fun_l15_n445(x)
- end
-end
-
-def fun_l14_n896(x)
- if (x < 1)
- fun_l15_n572(x)
- else
- fun_l15_n645(x)
- end
-end
-
-def fun_l14_n897(x)
- if (x < 1)
- fun_l15_n432(x)
- else
- fun_l15_n288(x)
- end
-end
-
-def fun_l14_n898(x)
- if (x < 1)
- fun_l15_n466(x)
- else
- fun_l15_n877(x)
- end
-end
-
-def fun_l14_n899(x)
- if (x < 1)
- fun_l15_n981(x)
- else
- fun_l15_n546(x)
- end
-end
-
-def fun_l14_n900(x)
- if (x < 1)
- fun_l15_n334(x)
- else
- fun_l15_n198(x)
- end
-end
-
-def fun_l14_n901(x)
- if (x < 1)
- fun_l15_n447(x)
- else
- fun_l15_n881(x)
- end
-end
-
-def fun_l14_n902(x)
- if (x < 1)
- fun_l15_n818(x)
- else
- fun_l15_n882(x)
- end
-end
-
-def fun_l14_n903(x)
- if (x < 1)
- fun_l15_n86(x)
- else
- fun_l15_n864(x)
- end
-end
-
-def fun_l14_n904(x)
- if (x < 1)
- fun_l15_n981(x)
- else
- fun_l15_n472(x)
- end
-end
-
-def fun_l14_n905(x)
- if (x < 1)
- fun_l15_n684(x)
- else
- fun_l15_n314(x)
- end
-end
-
-def fun_l14_n906(x)
- if (x < 1)
- fun_l15_n792(x)
- else
- fun_l15_n270(x)
- end
-end
-
-def fun_l14_n907(x)
- if (x < 1)
- fun_l15_n958(x)
- else
- fun_l15_n293(x)
- end
-end
-
-def fun_l14_n908(x)
- if (x < 1)
- fun_l15_n953(x)
- else
- fun_l15_n837(x)
- end
-end
-
-def fun_l14_n909(x)
- if (x < 1)
- fun_l15_n448(x)
- else
- fun_l15_n985(x)
- end
-end
-
-def fun_l14_n910(x)
- if (x < 1)
- fun_l15_n148(x)
- else
- fun_l15_n210(x)
- end
-end
-
-def fun_l14_n911(x)
- if (x < 1)
- fun_l15_n51(x)
- else
- fun_l15_n714(x)
- end
-end
-
-def fun_l14_n912(x)
- if (x < 1)
- fun_l15_n538(x)
- else
- fun_l15_n653(x)
- end
-end
-
-def fun_l14_n913(x)
- if (x < 1)
- fun_l15_n374(x)
- else
- fun_l15_n836(x)
- end
-end
-
-def fun_l14_n914(x)
- if (x < 1)
- fun_l15_n5(x)
- else
- fun_l15_n307(x)
- end
-end
-
-def fun_l14_n915(x)
- if (x < 1)
- fun_l15_n670(x)
- else
- fun_l15_n961(x)
- end
-end
-
-def fun_l14_n916(x)
- if (x < 1)
- fun_l15_n600(x)
- else
- fun_l15_n843(x)
- end
-end
-
-def fun_l14_n917(x)
- if (x < 1)
- fun_l15_n235(x)
- else
- fun_l15_n542(x)
- end
-end
-
-def fun_l14_n918(x)
- if (x < 1)
- fun_l15_n883(x)
- else
- fun_l15_n990(x)
- end
-end
-
-def fun_l14_n919(x)
- if (x < 1)
- fun_l15_n988(x)
- else
- fun_l15_n678(x)
- end
-end
-
-def fun_l14_n920(x)
- if (x < 1)
- fun_l15_n246(x)
- else
- fun_l15_n942(x)
- end
-end
-
-def fun_l14_n921(x)
- if (x < 1)
- fun_l15_n316(x)
- else
- fun_l15_n503(x)
- end
-end
-
-def fun_l14_n922(x)
- if (x < 1)
- fun_l15_n392(x)
- else
- fun_l15_n948(x)
- end
-end
-
-def fun_l14_n923(x)
- if (x < 1)
- fun_l15_n79(x)
- else
- fun_l15_n375(x)
- end
-end
-
-def fun_l14_n924(x)
- if (x < 1)
- fun_l15_n139(x)
- else
- fun_l15_n350(x)
- end
-end
-
-def fun_l14_n925(x)
- if (x < 1)
- fun_l15_n132(x)
- else
- fun_l15_n27(x)
- end
-end
-
-def fun_l14_n926(x)
- if (x < 1)
- fun_l15_n608(x)
- else
- fun_l15_n910(x)
- end
-end
-
-def fun_l14_n927(x)
- if (x < 1)
- fun_l15_n447(x)
- else
- fun_l15_n361(x)
- end
-end
-
-def fun_l14_n928(x)
- if (x < 1)
- fun_l15_n432(x)
- else
- fun_l15_n943(x)
- end
-end
-
-def fun_l14_n929(x)
- if (x < 1)
- fun_l15_n726(x)
- else
- fun_l15_n19(x)
- end
-end
-
-def fun_l14_n930(x)
- if (x < 1)
- fun_l15_n311(x)
- else
- fun_l15_n683(x)
- end
-end
-
-def fun_l14_n931(x)
- if (x < 1)
- fun_l15_n988(x)
- else
- fun_l15_n731(x)
- end
-end
-
-def fun_l14_n932(x)
- if (x < 1)
- fun_l15_n916(x)
- else
- fun_l15_n625(x)
- end
-end
-
-def fun_l14_n933(x)
- if (x < 1)
- fun_l15_n723(x)
- else
- fun_l15_n954(x)
- end
-end
-
-def fun_l14_n934(x)
- if (x < 1)
- fun_l15_n82(x)
- else
- fun_l15_n140(x)
- end
-end
-
-def fun_l14_n935(x)
- if (x < 1)
- fun_l15_n11(x)
- else
- fun_l15_n407(x)
- end
-end
-
-def fun_l14_n936(x)
- if (x < 1)
- fun_l15_n261(x)
- else
- fun_l15_n733(x)
- end
-end
-
-def fun_l14_n937(x)
- if (x < 1)
- fun_l15_n37(x)
- else
- fun_l15_n617(x)
- end
-end
-
-def fun_l14_n938(x)
- if (x < 1)
- fun_l15_n733(x)
- else
- fun_l15_n178(x)
- end
-end
-
-def fun_l14_n939(x)
- if (x < 1)
- fun_l15_n989(x)
- else
- fun_l15_n917(x)
- end
-end
-
-def fun_l14_n940(x)
- if (x < 1)
- fun_l15_n297(x)
- else
- fun_l15_n393(x)
- end
-end
-
-def fun_l14_n941(x)
- if (x < 1)
- fun_l15_n167(x)
- else
- fun_l15_n498(x)
- end
-end
-
-def fun_l14_n942(x)
- if (x < 1)
- fun_l15_n365(x)
- else
- fun_l15_n158(x)
- end
-end
-
-def fun_l14_n943(x)
- if (x < 1)
- fun_l15_n340(x)
- else
- fun_l15_n813(x)
- end
-end
-
-def fun_l14_n944(x)
- if (x < 1)
- fun_l15_n417(x)
- else
- fun_l15_n150(x)
- end
-end
-
-def fun_l14_n945(x)
- if (x < 1)
- fun_l15_n477(x)
- else
- fun_l15_n639(x)
- end
-end
-
-def fun_l14_n946(x)
- if (x < 1)
- fun_l15_n243(x)
- else
- fun_l15_n439(x)
- end
-end
-
-def fun_l14_n947(x)
- if (x < 1)
- fun_l15_n149(x)
- else
- fun_l15_n881(x)
- end
-end
-
-def fun_l14_n948(x)
- if (x < 1)
- fun_l15_n383(x)
- else
- fun_l15_n525(x)
- end
-end
-
-def fun_l14_n949(x)
- if (x < 1)
- fun_l15_n482(x)
- else
- fun_l15_n625(x)
- end
-end
-
-def fun_l14_n950(x)
- if (x < 1)
- fun_l15_n376(x)
- else
- fun_l15_n743(x)
- end
-end
-
-def fun_l14_n951(x)
- if (x < 1)
- fun_l15_n53(x)
- else
- fun_l15_n734(x)
- end
-end
-
-def fun_l14_n952(x)
- if (x < 1)
- fun_l15_n437(x)
- else
- fun_l15_n829(x)
- end
-end
-
-def fun_l14_n953(x)
- if (x < 1)
- fun_l15_n673(x)
- else
- fun_l15_n540(x)
- end
-end
-
-def fun_l14_n954(x)
- if (x < 1)
- fun_l15_n477(x)
- else
- fun_l15_n488(x)
- end
-end
-
-def fun_l14_n955(x)
- if (x < 1)
- fun_l15_n876(x)
- else
- fun_l15_n710(x)
- end
-end
-
-def fun_l14_n956(x)
- if (x < 1)
- fun_l15_n823(x)
- else
- fun_l15_n841(x)
- end
-end
-
-def fun_l14_n957(x)
- if (x < 1)
- fun_l15_n948(x)
- else
- fun_l15_n378(x)
- end
-end
-
-def fun_l14_n958(x)
- if (x < 1)
- fun_l15_n941(x)
- else
- fun_l15_n555(x)
- end
-end
-
-def fun_l14_n959(x)
- if (x < 1)
- fun_l15_n204(x)
- else
- fun_l15_n792(x)
- end
-end
-
-def fun_l14_n960(x)
- if (x < 1)
- fun_l15_n897(x)
- else
- fun_l15_n287(x)
- end
-end
-
-def fun_l14_n961(x)
- if (x < 1)
- fun_l15_n771(x)
- else
- fun_l15_n409(x)
- end
-end
-
-def fun_l14_n962(x)
- if (x < 1)
- fun_l15_n597(x)
- else
- fun_l15_n190(x)
- end
-end
-
-def fun_l14_n963(x)
- if (x < 1)
- fun_l15_n573(x)
- else
- fun_l15_n982(x)
- end
-end
-
-def fun_l14_n964(x)
- if (x < 1)
- fun_l15_n186(x)
- else
- fun_l15_n363(x)
- end
-end
-
-def fun_l14_n965(x)
- if (x < 1)
- fun_l15_n694(x)
- else
- fun_l15_n319(x)
- end
-end
-
-def fun_l14_n966(x)
- if (x < 1)
- fun_l15_n312(x)
- else
- fun_l15_n332(x)
- end
-end
-
-def fun_l14_n967(x)
- if (x < 1)
- fun_l15_n754(x)
- else
- fun_l15_n965(x)
- end
-end
-
-def fun_l14_n968(x)
- if (x < 1)
- fun_l15_n18(x)
- else
- fun_l15_n723(x)
- end
-end
-
-def fun_l14_n969(x)
- if (x < 1)
- fun_l15_n111(x)
- else
- fun_l15_n447(x)
- end
-end
-
-def fun_l14_n970(x)
- if (x < 1)
- fun_l15_n3(x)
- else
- fun_l15_n302(x)
- end
-end
-
-def fun_l14_n971(x)
- if (x < 1)
- fun_l15_n121(x)
- else
- fun_l15_n764(x)
- end
-end
-
-def fun_l14_n972(x)
- if (x < 1)
- fun_l15_n192(x)
- else
- fun_l15_n692(x)
- end
-end
-
-def fun_l14_n973(x)
- if (x < 1)
- fun_l15_n596(x)
- else
- fun_l15_n514(x)
- end
-end
-
-def fun_l14_n974(x)
- if (x < 1)
- fun_l15_n845(x)
- else
- fun_l15_n245(x)
- end
-end
-
-def fun_l14_n975(x)
- if (x < 1)
- fun_l15_n566(x)
- else
- fun_l15_n58(x)
- end
-end
-
-def fun_l14_n976(x)
- if (x < 1)
- fun_l15_n843(x)
- else
- fun_l15_n35(x)
- end
-end
-
-def fun_l14_n977(x)
- if (x < 1)
- fun_l15_n995(x)
- else
- fun_l15_n723(x)
- end
-end
-
-def fun_l14_n978(x)
- if (x < 1)
- fun_l15_n534(x)
- else
- fun_l15_n704(x)
- end
-end
-
-def fun_l14_n979(x)
- if (x < 1)
- fun_l15_n533(x)
- else
- fun_l15_n492(x)
- end
-end
-
-def fun_l14_n980(x)
- if (x < 1)
- fun_l15_n758(x)
- else
- fun_l15_n655(x)
- end
-end
-
-def fun_l14_n981(x)
- if (x < 1)
- fun_l15_n94(x)
- else
- fun_l15_n246(x)
- end
-end
-
-def fun_l14_n982(x)
- if (x < 1)
- fun_l15_n873(x)
- else
- fun_l15_n996(x)
- end
-end
-
-def fun_l14_n983(x)
- if (x < 1)
- fun_l15_n681(x)
- else
- fun_l15_n522(x)
- end
-end
-
-def fun_l14_n984(x)
- if (x < 1)
- fun_l15_n272(x)
- else
- fun_l15_n501(x)
- end
-end
-
-def fun_l14_n985(x)
- if (x < 1)
- fun_l15_n345(x)
- else
- fun_l15_n61(x)
- end
-end
-
-def fun_l14_n986(x)
- if (x < 1)
- fun_l15_n517(x)
- else
- fun_l15_n151(x)
- end
-end
-
-def fun_l14_n987(x)
- if (x < 1)
- fun_l15_n792(x)
- else
- fun_l15_n969(x)
- end
-end
-
-def fun_l14_n988(x)
- if (x < 1)
- fun_l15_n683(x)
- else
- fun_l15_n537(x)
- end
-end
-
-def fun_l14_n989(x)
- if (x < 1)
- fun_l15_n310(x)
- else
- fun_l15_n367(x)
- end
-end
-
-def fun_l14_n990(x)
- if (x < 1)
- fun_l15_n249(x)
- else
- fun_l15_n897(x)
- end
-end
-
-def fun_l14_n991(x)
- if (x < 1)
- fun_l15_n389(x)
- else
- fun_l15_n176(x)
- end
-end
-
-def fun_l14_n992(x)
- if (x < 1)
- fun_l15_n233(x)
- else
- fun_l15_n220(x)
- end
-end
-
-def fun_l14_n993(x)
- if (x < 1)
- fun_l15_n161(x)
- else
- fun_l15_n642(x)
- end
-end
-
-def fun_l14_n994(x)
- if (x < 1)
- fun_l15_n163(x)
- else
- fun_l15_n5(x)
- end
-end
-
-def fun_l14_n995(x)
- if (x < 1)
- fun_l15_n678(x)
- else
- fun_l15_n108(x)
- end
-end
-
-def fun_l14_n996(x)
- if (x < 1)
- fun_l15_n732(x)
- else
- fun_l15_n26(x)
- end
-end
-
-def fun_l14_n997(x)
- if (x < 1)
- fun_l15_n805(x)
- else
- fun_l15_n726(x)
- end
-end
-
-def fun_l14_n998(x)
- if (x < 1)
- fun_l15_n543(x)
- else
- fun_l15_n102(x)
- end
-end
-
-def fun_l14_n999(x)
- if (x < 1)
- fun_l15_n358(x)
- else
- fun_l15_n986(x)
- end
-end
-
-def fun_l15_n0(x)
- if (x < 1)
- fun_l16_n832(x)
- else
- fun_l16_n319(x)
- end
-end
-
-def fun_l15_n1(x)
- if (x < 1)
- fun_l16_n920(x)
- else
- fun_l16_n27(x)
- end
-end
-
-def fun_l15_n2(x)
- if (x < 1)
- fun_l16_n929(x)
- else
- fun_l16_n230(x)
- end
-end
-
-def fun_l15_n3(x)
- if (x < 1)
- fun_l16_n135(x)
- else
- fun_l16_n427(x)
- end
-end
-
-def fun_l15_n4(x)
- if (x < 1)
- fun_l16_n299(x)
- else
- fun_l16_n811(x)
- end
-end
-
-def fun_l15_n5(x)
- if (x < 1)
- fun_l16_n821(x)
- else
- fun_l16_n717(x)
- end
-end
-
-def fun_l15_n6(x)
- if (x < 1)
- fun_l16_n907(x)
- else
- fun_l16_n348(x)
- end
-end
-
-def fun_l15_n7(x)
- if (x < 1)
- fun_l16_n708(x)
- else
- fun_l16_n180(x)
- end
-end
-
-def fun_l15_n8(x)
- if (x < 1)
- fun_l16_n835(x)
- else
- fun_l16_n754(x)
- end
-end
-
-def fun_l15_n9(x)
- if (x < 1)
- fun_l16_n25(x)
- else
- fun_l16_n607(x)
- end
-end
-
-def fun_l15_n10(x)
- if (x < 1)
- fun_l16_n73(x)
- else
- fun_l16_n784(x)
- end
-end
-
-def fun_l15_n11(x)
- if (x < 1)
- fun_l16_n413(x)
- else
- fun_l16_n914(x)
- end
-end
-
-def fun_l15_n12(x)
- if (x < 1)
- fun_l16_n734(x)
- else
- fun_l16_n688(x)
- end
-end
-
-def fun_l15_n13(x)
- if (x < 1)
- fun_l16_n658(x)
- else
- fun_l16_n491(x)
- end
-end
-
-def fun_l15_n14(x)
- if (x < 1)
- fun_l16_n839(x)
- else
- fun_l16_n740(x)
- end
-end
-
-def fun_l15_n15(x)
- if (x < 1)
- fun_l16_n378(x)
- else
- fun_l16_n800(x)
- end
-end
-
-def fun_l15_n16(x)
- if (x < 1)
- fun_l16_n980(x)
- else
- fun_l16_n83(x)
- end
-end
-
-def fun_l15_n17(x)
- if (x < 1)
- fun_l16_n338(x)
- else
- fun_l16_n871(x)
- end
-end
-
-def fun_l15_n18(x)
- if (x < 1)
- fun_l16_n497(x)
- else
- fun_l16_n347(x)
- end
-end
-
-def fun_l15_n19(x)
- if (x < 1)
- fun_l16_n483(x)
- else
- fun_l16_n913(x)
- end
-end
-
-def fun_l15_n20(x)
- if (x < 1)
- fun_l16_n663(x)
- else
- fun_l16_n432(x)
- end
-end
-
-def fun_l15_n21(x)
- if (x < 1)
- fun_l16_n787(x)
- else
- fun_l16_n248(x)
- end
-end
-
-def fun_l15_n22(x)
- if (x < 1)
- fun_l16_n257(x)
- else
- fun_l16_n944(x)
- end
-end
-
-def fun_l15_n23(x)
- if (x < 1)
- fun_l16_n11(x)
- else
- fun_l16_n343(x)
- end
-end
-
-def fun_l15_n24(x)
- if (x < 1)
- fun_l16_n860(x)
- else
- fun_l16_n752(x)
- end
-end
-
-def fun_l15_n25(x)
- if (x < 1)
- fun_l16_n766(x)
- else
- fun_l16_n719(x)
- end
-end
-
-def fun_l15_n26(x)
- if (x < 1)
- fun_l16_n144(x)
- else
- fun_l16_n963(x)
- end
-end
-
-def fun_l15_n27(x)
- if (x < 1)
- fun_l16_n659(x)
- else
- fun_l16_n916(x)
- end
-end
-
-def fun_l15_n28(x)
- if (x < 1)
- fun_l16_n429(x)
- else
- fun_l16_n272(x)
- end
-end
-
-def fun_l15_n29(x)
- if (x < 1)
- fun_l16_n54(x)
- else
- fun_l16_n794(x)
- end
-end
-
-def fun_l15_n30(x)
- if (x < 1)
- fun_l16_n273(x)
- else
- fun_l16_n929(x)
- end
-end
-
-def fun_l15_n31(x)
- if (x < 1)
- fun_l16_n868(x)
- else
- fun_l16_n967(x)
- end
-end
-
-def fun_l15_n32(x)
- if (x < 1)
- fun_l16_n888(x)
- else
- fun_l16_n283(x)
- end
-end
-
-def fun_l15_n33(x)
- if (x < 1)
- fun_l16_n6(x)
- else
- fun_l16_n677(x)
- end
-end
-
-def fun_l15_n34(x)
- if (x < 1)
- fun_l16_n248(x)
- else
- fun_l16_n831(x)
- end
-end
-
-def fun_l15_n35(x)
- if (x < 1)
- fun_l16_n832(x)
- else
- fun_l16_n634(x)
- end
-end
-
-def fun_l15_n36(x)
- if (x < 1)
- fun_l16_n221(x)
- else
- fun_l16_n401(x)
- end
-end
-
-def fun_l15_n37(x)
- if (x < 1)
- fun_l16_n403(x)
- else
- fun_l16_n29(x)
- end
-end
-
-def fun_l15_n38(x)
- if (x < 1)
- fun_l16_n11(x)
- else
- fun_l16_n517(x)
- end
-end
-
-def fun_l15_n39(x)
- if (x < 1)
- fun_l16_n234(x)
- else
- fun_l16_n231(x)
- end
-end
-
-def fun_l15_n40(x)
- if (x < 1)
- fun_l16_n185(x)
- else
- fun_l16_n818(x)
- end
-end
-
-def fun_l15_n41(x)
- if (x < 1)
- fun_l16_n169(x)
- else
- fun_l16_n239(x)
- end
-end
-
-def fun_l15_n42(x)
- if (x < 1)
- fun_l16_n111(x)
- else
- fun_l16_n836(x)
- end
-end
-
-def fun_l15_n43(x)
- if (x < 1)
- fun_l16_n832(x)
- else
- fun_l16_n714(x)
- end
-end
-
-def fun_l15_n44(x)
- if (x < 1)
- fun_l16_n167(x)
- else
- fun_l16_n65(x)
- end
-end
-
-def fun_l15_n45(x)
- if (x < 1)
- fun_l16_n801(x)
- else
- fun_l16_n456(x)
- end
-end
-
-def fun_l15_n46(x)
- if (x < 1)
- fun_l16_n894(x)
- else
- fun_l16_n103(x)
- end
-end
-
-def fun_l15_n47(x)
- if (x < 1)
- fun_l16_n156(x)
- else
- fun_l16_n228(x)
- end
-end
-
-def fun_l15_n48(x)
- if (x < 1)
- fun_l16_n167(x)
- else
- fun_l16_n317(x)
- end
-end
-
-def fun_l15_n49(x)
- if (x < 1)
- fun_l16_n864(x)
- else
- fun_l16_n425(x)
- end
-end
-
-def fun_l15_n50(x)
- if (x < 1)
- fun_l16_n11(x)
- else
- fun_l16_n498(x)
- end
-end
-
-def fun_l15_n51(x)
- if (x < 1)
- fun_l16_n209(x)
- else
- fun_l16_n399(x)
- end
-end
-
-def fun_l15_n52(x)
- if (x < 1)
- fun_l16_n320(x)
- else
- fun_l16_n912(x)
- end
-end
-
-def fun_l15_n53(x)
- if (x < 1)
- fun_l16_n135(x)
- else
- fun_l16_n349(x)
- end
-end
-
-def fun_l15_n54(x)
- if (x < 1)
- fun_l16_n410(x)
- else
- fun_l16_n849(x)
- end
-end
-
-def fun_l15_n55(x)
- if (x < 1)
- fun_l16_n989(x)
- else
- fun_l16_n700(x)
- end
-end
-
-def fun_l15_n56(x)
- if (x < 1)
- fun_l16_n79(x)
- else
- fun_l16_n549(x)
- end
-end
-
-def fun_l15_n57(x)
- if (x < 1)
- fun_l16_n396(x)
- else
- fun_l16_n182(x)
- end
-end
-
-def fun_l15_n58(x)
- if (x < 1)
- fun_l16_n765(x)
- else
- fun_l16_n225(x)
- end
-end
-
-def fun_l15_n59(x)
- if (x < 1)
- fun_l16_n124(x)
- else
- fun_l16_n694(x)
- end
-end
-
-def fun_l15_n60(x)
- if (x < 1)
- fun_l16_n813(x)
- else
- fun_l16_n319(x)
- end
-end
-
-def fun_l15_n61(x)
- if (x < 1)
- fun_l16_n568(x)
- else
- fun_l16_n581(x)
- end
-end
-
-def fun_l15_n62(x)
- if (x < 1)
- fun_l16_n667(x)
- else
- fun_l16_n12(x)
- end
-end
-
-def fun_l15_n63(x)
- if (x < 1)
- fun_l16_n176(x)
- else
- fun_l16_n136(x)
- end
-end
-
-def fun_l15_n64(x)
- if (x < 1)
- fun_l16_n620(x)
- else
- fun_l16_n937(x)
- end
-end
-
-def fun_l15_n65(x)
- if (x < 1)
- fun_l16_n130(x)
- else
- fun_l16_n503(x)
- end
-end
-
-def fun_l15_n66(x)
- if (x < 1)
- fun_l16_n774(x)
- else
- fun_l16_n109(x)
- end
-end
-
-def fun_l15_n67(x)
- if (x < 1)
- fun_l16_n817(x)
- else
- fun_l16_n497(x)
- end
-end
-
-def fun_l15_n68(x)
- if (x < 1)
- fun_l16_n123(x)
- else
- fun_l16_n482(x)
- end
-end
-
-def fun_l15_n69(x)
- if (x < 1)
- fun_l16_n173(x)
- else
- fun_l16_n22(x)
- end
-end
-
-def fun_l15_n70(x)
- if (x < 1)
- fun_l16_n648(x)
- else
- fun_l16_n671(x)
- end
-end
-
-def fun_l15_n71(x)
- if (x < 1)
- fun_l16_n831(x)
- else
- fun_l16_n126(x)
- end
-end
-
-def fun_l15_n72(x)
- if (x < 1)
- fun_l16_n731(x)
- else
- fun_l16_n273(x)
- end
-end
-
-def fun_l15_n73(x)
- if (x < 1)
- fun_l16_n695(x)
- else
- fun_l16_n772(x)
- end
-end
-
-def fun_l15_n74(x)
- if (x < 1)
- fun_l16_n831(x)
- else
- fun_l16_n49(x)
- end
-end
-
-def fun_l15_n75(x)
- if (x < 1)
- fun_l16_n501(x)
- else
- fun_l16_n4(x)
- end
-end
-
-def fun_l15_n76(x)
- if (x < 1)
- fun_l16_n712(x)
- else
- fun_l16_n762(x)
- end
-end
-
-def fun_l15_n77(x)
- if (x < 1)
- fun_l16_n585(x)
- else
- fun_l16_n398(x)
- end
-end
-
-def fun_l15_n78(x)
- if (x < 1)
- fun_l16_n811(x)
- else
- fun_l16_n866(x)
- end
-end
-
-def fun_l15_n79(x)
- if (x < 1)
- fun_l16_n69(x)
- else
- fun_l16_n502(x)
- end
-end
-
-def fun_l15_n80(x)
- if (x < 1)
- fun_l16_n885(x)
- else
- fun_l16_n116(x)
- end
-end
-
-def fun_l15_n81(x)
- if (x < 1)
- fun_l16_n30(x)
- else
- fun_l16_n1(x)
- end
-end
-
-def fun_l15_n82(x)
- if (x < 1)
- fun_l16_n105(x)
- else
- fun_l16_n526(x)
- end
-end
-
-def fun_l15_n83(x)
- if (x < 1)
- fun_l16_n760(x)
- else
- fun_l16_n206(x)
- end
-end
-
-def fun_l15_n84(x)
- if (x < 1)
- fun_l16_n722(x)
- else
- fun_l16_n211(x)
- end
-end
-
-def fun_l15_n85(x)
- if (x < 1)
- fun_l16_n145(x)
- else
- fun_l16_n222(x)
- end
-end
-
-def fun_l15_n86(x)
- if (x < 1)
- fun_l16_n691(x)
- else
- fun_l16_n885(x)
- end
-end
-
-def fun_l15_n87(x)
- if (x < 1)
- fun_l16_n2(x)
- else
- fun_l16_n180(x)
- end
-end
-
-def fun_l15_n88(x)
- if (x < 1)
- fun_l16_n272(x)
- else
- fun_l16_n433(x)
- end
-end
-
-def fun_l15_n89(x)
- if (x < 1)
- fun_l16_n31(x)
- else
- fun_l16_n854(x)
- end
-end
-
-def fun_l15_n90(x)
- if (x < 1)
- fun_l16_n264(x)
- else
- fun_l16_n231(x)
- end
-end
-
-def fun_l15_n91(x)
- if (x < 1)
- fun_l16_n637(x)
- else
- fun_l16_n96(x)
- end
-end
-
-def fun_l15_n92(x)
- if (x < 1)
- fun_l16_n317(x)
- else
- fun_l16_n56(x)
- end
-end
-
-def fun_l15_n93(x)
- if (x < 1)
- fun_l16_n523(x)
- else
- fun_l16_n948(x)
- end
-end
-
-def fun_l15_n94(x)
- if (x < 1)
- fun_l16_n694(x)
- else
- fun_l16_n948(x)
- end
-end
-
-def fun_l15_n95(x)
- if (x < 1)
- fun_l16_n708(x)
- else
- fun_l16_n581(x)
- end
-end
-
-def fun_l15_n96(x)
- if (x < 1)
- fun_l16_n725(x)
- else
- fun_l16_n931(x)
- end
-end
-
-def fun_l15_n97(x)
- if (x < 1)
- fun_l16_n432(x)
- else
- fun_l16_n367(x)
- end
-end
-
-def fun_l15_n98(x)
- if (x < 1)
- fun_l16_n671(x)
- else
- fun_l16_n165(x)
- end
-end
-
-def fun_l15_n99(x)
- if (x < 1)
- fun_l16_n617(x)
- else
- fun_l16_n498(x)
- end
-end
-
-def fun_l15_n100(x)
- if (x < 1)
- fun_l16_n32(x)
- else
- fun_l16_n103(x)
- end
-end
-
-def fun_l15_n101(x)
- if (x < 1)
- fun_l16_n619(x)
- else
- fun_l16_n556(x)
- end
-end
-
-def fun_l15_n102(x)
- if (x < 1)
- fun_l16_n0(x)
- else
- fun_l16_n925(x)
- end
-end
-
-def fun_l15_n103(x)
- if (x < 1)
- fun_l16_n484(x)
- else
- fun_l16_n889(x)
- end
-end
-
-def fun_l15_n104(x)
- if (x < 1)
- fun_l16_n557(x)
- else
- fun_l16_n465(x)
- end
-end
-
-def fun_l15_n105(x)
- if (x < 1)
- fun_l16_n486(x)
- else
- fun_l16_n720(x)
- end
-end
-
-def fun_l15_n106(x)
- if (x < 1)
- fun_l16_n281(x)
- else
- fun_l16_n61(x)
- end
-end
-
-def fun_l15_n107(x)
- if (x < 1)
- fun_l16_n861(x)
- else
- fun_l16_n944(x)
- end
-end
-
-def fun_l15_n108(x)
- if (x < 1)
- fun_l16_n739(x)
- else
- fun_l16_n192(x)
- end
-end
-
-def fun_l15_n109(x)
- if (x < 1)
- fun_l16_n327(x)
- else
- fun_l16_n423(x)
- end
-end
-
-def fun_l15_n110(x)
- if (x < 1)
- fun_l16_n541(x)
- else
- fun_l16_n927(x)
- end
-end
-
-def fun_l15_n111(x)
- if (x < 1)
- fun_l16_n86(x)
- else
- fun_l16_n170(x)
- end
-end
-
-def fun_l15_n112(x)
- if (x < 1)
- fun_l16_n508(x)
- else
- fun_l16_n554(x)
- end
-end
-
-def fun_l15_n113(x)
- if (x < 1)
- fun_l16_n326(x)
- else
- fun_l16_n289(x)
- end
-end
-
-def fun_l15_n114(x)
- if (x < 1)
- fun_l16_n309(x)
- else
- fun_l16_n125(x)
- end
-end
-
-def fun_l15_n115(x)
- if (x < 1)
- fun_l16_n936(x)
- else
- fun_l16_n64(x)
- end
-end
-
-def fun_l15_n116(x)
- if (x < 1)
- fun_l16_n942(x)
- else
- fun_l16_n737(x)
- end
-end
-
-def fun_l15_n117(x)
- if (x < 1)
- fun_l16_n717(x)
- else
- fun_l16_n701(x)
- end
-end
-
-def fun_l15_n118(x)
- if (x < 1)
- fun_l16_n789(x)
- else
- fun_l16_n901(x)
- end
-end
-
-def fun_l15_n119(x)
- if (x < 1)
- fun_l16_n49(x)
- else
- fun_l16_n610(x)
- end
-end
-
-def fun_l15_n120(x)
- if (x < 1)
- fun_l16_n578(x)
- else
- fun_l16_n372(x)
- end
-end
-
-def fun_l15_n121(x)
- if (x < 1)
- fun_l16_n262(x)
- else
- fun_l16_n441(x)
- end
-end
-
-def fun_l15_n122(x)
- if (x < 1)
- fun_l16_n29(x)
- else
- fun_l16_n837(x)
- end
-end
-
-def fun_l15_n123(x)
- if (x < 1)
- fun_l16_n796(x)
- else
- fun_l16_n771(x)
- end
-end
-
-def fun_l15_n124(x)
- if (x < 1)
- fun_l16_n354(x)
- else
- fun_l16_n818(x)
- end
-end
-
-def fun_l15_n125(x)
- if (x < 1)
- fun_l16_n971(x)
- else
- fun_l16_n305(x)
- end
-end
-
-def fun_l15_n126(x)
- if (x < 1)
- fun_l16_n435(x)
- else
- fun_l16_n307(x)
- end
-end
-
-def fun_l15_n127(x)
- if (x < 1)
- fun_l16_n809(x)
- else
- fun_l16_n884(x)
- end
-end
-
-def fun_l15_n128(x)
- if (x < 1)
- fun_l16_n794(x)
- else
- fun_l16_n480(x)
- end
-end
-
-def fun_l15_n129(x)
- if (x < 1)
- fun_l16_n797(x)
- else
- fun_l16_n193(x)
- end
-end
-
-def fun_l15_n130(x)
- if (x < 1)
- fun_l16_n415(x)
- else
- fun_l16_n255(x)
- end
-end
-
-def fun_l15_n131(x)
- if (x < 1)
- fun_l16_n736(x)
- else
- fun_l16_n904(x)
- end
-end
-
-def fun_l15_n132(x)
- if (x < 1)
- fun_l16_n753(x)
- else
- fun_l16_n408(x)
- end
-end
-
-def fun_l15_n133(x)
- if (x < 1)
- fun_l16_n61(x)
- else
- fun_l16_n231(x)
- end
-end
-
-def fun_l15_n134(x)
- if (x < 1)
- fun_l16_n541(x)
- else
- fun_l16_n93(x)
- end
-end
-
-def fun_l15_n135(x)
- if (x < 1)
- fun_l16_n617(x)
- else
- fun_l16_n765(x)
- end
-end
-
-def fun_l15_n136(x)
- if (x < 1)
- fun_l16_n749(x)
- else
- fun_l16_n344(x)
- end
-end
-
-def fun_l15_n137(x)
- if (x < 1)
- fun_l16_n431(x)
- else
- fun_l16_n354(x)
- end
-end
-
-def fun_l15_n138(x)
- if (x < 1)
- fun_l16_n116(x)
- else
- fun_l16_n963(x)
- end
-end
-
-def fun_l15_n139(x)
- if (x < 1)
- fun_l16_n500(x)
- else
- fun_l16_n380(x)
- end
-end
-
-def fun_l15_n140(x)
- if (x < 1)
- fun_l16_n120(x)
- else
- fun_l16_n953(x)
- end
-end
-
-def fun_l15_n141(x)
- if (x < 1)
- fun_l16_n287(x)
- else
- fun_l16_n154(x)
- end
-end
-
-def fun_l15_n142(x)
- if (x < 1)
- fun_l16_n347(x)
- else
- fun_l16_n841(x)
- end
-end
-
-def fun_l15_n143(x)
- if (x < 1)
- fun_l16_n562(x)
- else
- fun_l16_n674(x)
- end
-end
-
-def fun_l15_n144(x)
- if (x < 1)
- fun_l16_n146(x)
- else
- fun_l16_n788(x)
- end
-end
-
-def fun_l15_n145(x)
- if (x < 1)
- fun_l16_n463(x)
- else
- fun_l16_n590(x)
- end
-end
-
-def fun_l15_n146(x)
- if (x < 1)
- fun_l16_n452(x)
- else
- fun_l16_n732(x)
- end
-end
-
-def fun_l15_n147(x)
- if (x < 1)
- fun_l16_n840(x)
- else
- fun_l16_n254(x)
- end
-end
-
-def fun_l15_n148(x)
- if (x < 1)
- fun_l16_n224(x)
- else
- fun_l16_n826(x)
- end
-end
-
-def fun_l15_n149(x)
- if (x < 1)
- fun_l16_n40(x)
- else
- fun_l16_n267(x)
- end
-end
-
-def fun_l15_n150(x)
- if (x < 1)
- fun_l16_n160(x)
- else
- fun_l16_n745(x)
- end
-end
-
-def fun_l15_n151(x)
- if (x < 1)
- fun_l16_n926(x)
- else
- fun_l16_n567(x)
- end
-end
-
-def fun_l15_n152(x)
- if (x < 1)
- fun_l16_n392(x)
- else
- fun_l16_n487(x)
- end
-end
-
-def fun_l15_n153(x)
- if (x < 1)
- fun_l16_n603(x)
- else
- fun_l16_n549(x)
- end
-end
-
-def fun_l15_n154(x)
- if (x < 1)
- fun_l16_n993(x)
- else
- fun_l16_n451(x)
- end
-end
-
-def fun_l15_n155(x)
- if (x < 1)
- fun_l16_n358(x)
- else
- fun_l16_n52(x)
- end
-end
-
-def fun_l15_n156(x)
- if (x < 1)
- fun_l16_n694(x)
- else
- fun_l16_n419(x)
- end
-end
-
-def fun_l15_n157(x)
- if (x < 1)
- fun_l16_n138(x)
- else
- fun_l16_n127(x)
- end
-end
-
-def fun_l15_n158(x)
- if (x < 1)
- fun_l16_n619(x)
- else
- fun_l16_n328(x)
- end
-end
-
-def fun_l15_n159(x)
- if (x < 1)
- fun_l16_n281(x)
- else
- fun_l16_n503(x)
- end
-end
-
-def fun_l15_n160(x)
- if (x < 1)
- fun_l16_n631(x)
- else
- fun_l16_n69(x)
- end
-end
-
-def fun_l15_n161(x)
- if (x < 1)
- fun_l16_n41(x)
- else
- fun_l16_n734(x)
- end
-end
-
-def fun_l15_n162(x)
- if (x < 1)
- fun_l16_n809(x)
- else
- fun_l16_n303(x)
- end
-end
-
-def fun_l15_n163(x)
- if (x < 1)
- fun_l16_n851(x)
- else
- fun_l16_n420(x)
- end
-end
-
-def fun_l15_n164(x)
- if (x < 1)
- fun_l16_n534(x)
- else
- fun_l16_n686(x)
- end
-end
-
-def fun_l15_n165(x)
- if (x < 1)
- fun_l16_n639(x)
- else
- fun_l16_n155(x)
- end
-end
-
-def fun_l15_n166(x)
- if (x < 1)
- fun_l16_n196(x)
- else
- fun_l16_n478(x)
- end
-end
-
-def fun_l15_n167(x)
- if (x < 1)
- fun_l16_n926(x)
- else
- fun_l16_n506(x)
- end
-end
-
-def fun_l15_n168(x)
- if (x < 1)
- fun_l16_n74(x)
- else
- fun_l16_n442(x)
- end
-end
-
-def fun_l15_n169(x)
- if (x < 1)
- fun_l16_n122(x)
- else
- fun_l16_n150(x)
- end
-end
-
-def fun_l15_n170(x)
- if (x < 1)
- fun_l16_n805(x)
- else
- fun_l16_n46(x)
- end
-end
-
-def fun_l15_n171(x)
- if (x < 1)
- fun_l16_n741(x)
- else
- fun_l16_n88(x)
- end
-end
-
-def fun_l15_n172(x)
- if (x < 1)
- fun_l16_n749(x)
- else
- fun_l16_n896(x)
- end
-end
-
-def fun_l15_n173(x)
- if (x < 1)
- fun_l16_n310(x)
- else
- fun_l16_n517(x)
- end
-end
-
-def fun_l15_n174(x)
- if (x < 1)
- fun_l16_n237(x)
- else
- fun_l16_n948(x)
- end
-end
-
-def fun_l15_n175(x)
- if (x < 1)
- fun_l16_n402(x)
- else
- fun_l16_n332(x)
- end
-end
-
-def fun_l15_n176(x)
- if (x < 1)
- fun_l16_n189(x)
- else
- fun_l16_n223(x)
- end
-end
-
-def fun_l15_n177(x)
- if (x < 1)
- fun_l16_n1(x)
- else
- fun_l16_n577(x)
- end
-end
-
-def fun_l15_n178(x)
- if (x < 1)
- fun_l16_n738(x)
- else
- fun_l16_n775(x)
- end
-end
-
-def fun_l15_n179(x)
- if (x < 1)
- fun_l16_n80(x)
- else
- fun_l16_n652(x)
- end
-end
-
-def fun_l15_n180(x)
- if (x < 1)
- fun_l16_n72(x)
- else
- fun_l16_n635(x)
- end
-end
-
-def fun_l15_n181(x)
- if (x < 1)
- fun_l16_n721(x)
- else
- fun_l16_n661(x)
- end
-end
-
-def fun_l15_n182(x)
- if (x < 1)
- fun_l16_n354(x)
- else
- fun_l16_n681(x)
- end
-end
-
-def fun_l15_n183(x)
- if (x < 1)
- fun_l16_n689(x)
- else
- fun_l16_n775(x)
- end
-end
-
-def fun_l15_n184(x)
- if (x < 1)
- fun_l16_n923(x)
- else
- fun_l16_n719(x)
- end
-end
-
-def fun_l15_n185(x)
- if (x < 1)
- fun_l16_n33(x)
- else
- fun_l16_n98(x)
- end
-end
-
-def fun_l15_n186(x)
- if (x < 1)
- fun_l16_n155(x)
- else
- fun_l16_n880(x)
- end
-end
-
-def fun_l15_n187(x)
- if (x < 1)
- fun_l16_n625(x)
- else
- fun_l16_n314(x)
- end
-end
-
-def fun_l15_n188(x)
- if (x < 1)
- fun_l16_n284(x)
- else
- fun_l16_n229(x)
- end
-end
-
-def fun_l15_n189(x)
- if (x < 1)
- fun_l16_n471(x)
- else
- fun_l16_n740(x)
- end
-end
-
-def fun_l15_n190(x)
- if (x < 1)
- fun_l16_n102(x)
- else
- fun_l16_n766(x)
- end
-end
-
-def fun_l15_n191(x)
- if (x < 1)
- fun_l16_n812(x)
- else
- fun_l16_n94(x)
- end
-end
-
-def fun_l15_n192(x)
- if (x < 1)
- fun_l16_n797(x)
- else
- fun_l16_n736(x)
- end
-end
-
-def fun_l15_n193(x)
- if (x < 1)
- fun_l16_n976(x)
- else
- fun_l16_n4(x)
- end
-end
-
-def fun_l15_n194(x)
- if (x < 1)
- fun_l16_n423(x)
- else
- fun_l16_n612(x)
- end
-end
-
-def fun_l15_n195(x)
- if (x < 1)
- fun_l16_n510(x)
- else
- fun_l16_n237(x)
- end
-end
-
-def fun_l15_n196(x)
- if (x < 1)
- fun_l16_n116(x)
- else
- fun_l16_n624(x)
- end
-end
-
-def fun_l15_n197(x)
- if (x < 1)
- fun_l16_n515(x)
- else
- fun_l16_n979(x)
- end
-end
-
-def fun_l15_n198(x)
- if (x < 1)
- fun_l16_n700(x)
- else
- fun_l16_n284(x)
- end
-end
-
-def fun_l15_n199(x)
- if (x < 1)
- fun_l16_n226(x)
- else
- fun_l16_n32(x)
- end
-end
-
-def fun_l15_n200(x)
- if (x < 1)
- fun_l16_n453(x)
- else
- fun_l16_n959(x)
- end
-end
-
-def fun_l15_n201(x)
- if (x < 1)
- fun_l16_n132(x)
- else
- fun_l16_n323(x)
- end
-end
-
-def fun_l15_n202(x)
- if (x < 1)
- fun_l16_n539(x)
- else
- fun_l16_n670(x)
- end
-end
-
-def fun_l15_n203(x)
- if (x < 1)
- fun_l16_n786(x)
- else
- fun_l16_n633(x)
- end
-end
-
-def fun_l15_n204(x)
- if (x < 1)
- fun_l16_n498(x)
- else
- fun_l16_n520(x)
- end
-end
-
-def fun_l15_n205(x)
- if (x < 1)
- fun_l16_n423(x)
- else
- fun_l16_n573(x)
- end
-end
-
-def fun_l15_n206(x)
- if (x < 1)
- fun_l16_n746(x)
- else
- fun_l16_n562(x)
- end
-end
-
-def fun_l15_n207(x)
- if (x < 1)
- fun_l16_n500(x)
- else
- fun_l16_n951(x)
- end
-end
-
-def fun_l15_n208(x)
- if (x < 1)
- fun_l16_n331(x)
- else
- fun_l16_n596(x)
- end
-end
-
-def fun_l15_n209(x)
- if (x < 1)
- fun_l16_n1(x)
- else
- fun_l16_n69(x)
- end
-end
-
-def fun_l15_n210(x)
- if (x < 1)
- fun_l16_n19(x)
- else
- fun_l16_n148(x)
- end
-end
-
-def fun_l15_n211(x)
- if (x < 1)
- fun_l16_n770(x)
- else
- fun_l16_n216(x)
- end
-end
-
-def fun_l15_n212(x)
- if (x < 1)
- fun_l16_n863(x)
- else
- fun_l16_n319(x)
- end
-end
-
-def fun_l15_n213(x)
- if (x < 1)
- fun_l16_n675(x)
- else
- fun_l16_n797(x)
- end
-end
-
-def fun_l15_n214(x)
- if (x < 1)
- fun_l16_n392(x)
- else
- fun_l16_n593(x)
- end
-end
-
-def fun_l15_n215(x)
- if (x < 1)
- fun_l16_n120(x)
- else
- fun_l16_n232(x)
- end
-end
-
-def fun_l15_n216(x)
- if (x < 1)
- fun_l16_n549(x)
- else
- fun_l16_n175(x)
- end
-end
-
-def fun_l15_n217(x)
- if (x < 1)
- fun_l16_n784(x)
- else
- fun_l16_n8(x)
- end
-end
-
-def fun_l15_n218(x)
- if (x < 1)
- fun_l16_n296(x)
- else
- fun_l16_n454(x)
- end
-end
-
-def fun_l15_n219(x)
- if (x < 1)
- fun_l16_n585(x)
- else
- fun_l16_n628(x)
- end
-end
-
-def fun_l15_n220(x)
- if (x < 1)
- fun_l16_n375(x)
- else
- fun_l16_n294(x)
- end
-end
-
-def fun_l15_n221(x)
- if (x < 1)
- fun_l16_n69(x)
- else
- fun_l16_n771(x)
- end
-end
-
-def fun_l15_n222(x)
- if (x < 1)
- fun_l16_n885(x)
- else
- fun_l16_n476(x)
- end
-end
-
-def fun_l15_n223(x)
- if (x < 1)
- fun_l16_n929(x)
- else
- fun_l16_n850(x)
- end
-end
-
-def fun_l15_n224(x)
- if (x < 1)
- fun_l16_n489(x)
- else
- fun_l16_n234(x)
- end
-end
-
-def fun_l15_n225(x)
- if (x < 1)
- fun_l16_n478(x)
- else
- fun_l16_n744(x)
- end
-end
-
-def fun_l15_n226(x)
- if (x < 1)
- fun_l16_n714(x)
- else
- fun_l16_n323(x)
- end
-end
-
-def fun_l15_n227(x)
- if (x < 1)
- fun_l16_n146(x)
- else
- fun_l16_n937(x)
- end
-end
-
-def fun_l15_n228(x)
- if (x < 1)
- fun_l16_n611(x)
- else
- fun_l16_n320(x)
- end
-end
-
-def fun_l15_n229(x)
- if (x < 1)
- fun_l16_n184(x)
- else
- fun_l16_n129(x)
- end
-end
-
-def fun_l15_n230(x)
- if (x < 1)
- fun_l16_n563(x)
- else
- fun_l16_n581(x)
- end
-end
-
-def fun_l15_n231(x)
- if (x < 1)
- fun_l16_n585(x)
- else
- fun_l16_n63(x)
- end
-end
-
-def fun_l15_n232(x)
- if (x < 1)
- fun_l16_n895(x)
- else
- fun_l16_n622(x)
- end
-end
-
-def fun_l15_n233(x)
- if (x < 1)
- fun_l16_n998(x)
- else
- fun_l16_n95(x)
- end
-end
-
-def fun_l15_n234(x)
- if (x < 1)
- fun_l16_n770(x)
- else
- fun_l16_n557(x)
- end
-end
-
-def fun_l15_n235(x)
- if (x < 1)
- fun_l16_n418(x)
- else
- fun_l16_n382(x)
- end
-end
-
-def fun_l15_n236(x)
- if (x < 1)
- fun_l16_n842(x)
- else
- fun_l16_n543(x)
- end
-end
-
-def fun_l15_n237(x)
- if (x < 1)
- fun_l16_n677(x)
- else
- fun_l16_n108(x)
- end
-end
-
-def fun_l15_n238(x)
- if (x < 1)
- fun_l16_n557(x)
- else
- fun_l16_n288(x)
- end
-end
-
-def fun_l15_n239(x)
- if (x < 1)
- fun_l16_n467(x)
- else
- fun_l16_n661(x)
- end
-end
-
-def fun_l15_n240(x)
- if (x < 1)
- fun_l16_n267(x)
- else
- fun_l16_n559(x)
- end
-end
-
-def fun_l15_n241(x)
- if (x < 1)
- fun_l16_n655(x)
- else
- fun_l16_n990(x)
- end
-end
-
-def fun_l15_n242(x)
- if (x < 1)
- fun_l16_n673(x)
- else
- fun_l16_n390(x)
- end
-end
-
-def fun_l15_n243(x)
- if (x < 1)
- fun_l16_n691(x)
- else
- fun_l16_n901(x)
- end
-end
-
-def fun_l15_n244(x)
- if (x < 1)
- fun_l16_n490(x)
- else
- fun_l16_n627(x)
- end
-end
-
-def fun_l15_n245(x)
- if (x < 1)
- fun_l16_n293(x)
- else
- fun_l16_n569(x)
- end
-end
-
-def fun_l15_n246(x)
- if (x < 1)
- fun_l16_n818(x)
- else
- fun_l16_n74(x)
- end
-end
-
-def fun_l15_n247(x)
- if (x < 1)
- fun_l16_n141(x)
- else
- fun_l16_n743(x)
- end
-end
-
-def fun_l15_n248(x)
- if (x < 1)
- fun_l16_n819(x)
- else
- fun_l16_n141(x)
- end
-end
-
-def fun_l15_n249(x)
- if (x < 1)
- fun_l16_n423(x)
- else
- fun_l16_n53(x)
- end
-end
-
-def fun_l15_n250(x)
- if (x < 1)
- fun_l16_n694(x)
- else
- fun_l16_n463(x)
- end
-end
-
-def fun_l15_n251(x)
- if (x < 1)
- fun_l16_n828(x)
- else
- fun_l16_n739(x)
- end
-end
-
-def fun_l15_n252(x)
- if (x < 1)
- fun_l16_n18(x)
- else
- fun_l16_n694(x)
- end
-end
-
-def fun_l15_n253(x)
- if (x < 1)
- fun_l16_n668(x)
- else
- fun_l16_n501(x)
- end
-end
-
-def fun_l15_n254(x)
- if (x < 1)
- fun_l16_n649(x)
- else
- fun_l16_n397(x)
- end
-end
-
-def fun_l15_n255(x)
- if (x < 1)
- fun_l16_n376(x)
- else
- fun_l16_n375(x)
- end
-end
-
-def fun_l15_n256(x)
- if (x < 1)
- fun_l16_n451(x)
- else
- fun_l16_n537(x)
- end
-end
-
-def fun_l15_n257(x)
- if (x < 1)
- fun_l16_n360(x)
- else
- fun_l16_n330(x)
- end
-end
-
-def fun_l15_n258(x)
- if (x < 1)
- fun_l16_n581(x)
- else
- fun_l16_n193(x)
- end
-end
-
-def fun_l15_n259(x)
- if (x < 1)
- fun_l16_n738(x)
- else
- fun_l16_n662(x)
- end
-end
-
-def fun_l15_n260(x)
- if (x < 1)
- fun_l16_n450(x)
- else
- fun_l16_n942(x)
- end
-end
-
-def fun_l15_n261(x)
- if (x < 1)
- fun_l16_n23(x)
- else
- fun_l16_n534(x)
- end
-end
-
-def fun_l15_n262(x)
- if (x < 1)
- fun_l16_n364(x)
- else
- fun_l16_n716(x)
- end
-end
-
-def fun_l15_n263(x)
- if (x < 1)
- fun_l16_n528(x)
- else
- fun_l16_n185(x)
- end
-end
-
-def fun_l15_n264(x)
- if (x < 1)
- fun_l16_n491(x)
- else
- fun_l16_n686(x)
- end
-end
-
-def fun_l15_n265(x)
- if (x < 1)
- fun_l16_n242(x)
- else
- fun_l16_n986(x)
- end
-end
-
-def fun_l15_n266(x)
- if (x < 1)
- fun_l16_n726(x)
- else
- fun_l16_n88(x)
- end
-end
-
-def fun_l15_n267(x)
- if (x < 1)
- fun_l16_n611(x)
- else
- fun_l16_n11(x)
- end
-end
-
-def fun_l15_n268(x)
- if (x < 1)
- fun_l16_n993(x)
- else
- fun_l16_n269(x)
- end
-end
-
-def fun_l15_n269(x)
- if (x < 1)
- fun_l16_n296(x)
- else
- fun_l16_n8(x)
- end
-end
-
-def fun_l15_n270(x)
- if (x < 1)
- fun_l16_n700(x)
- else
- fun_l16_n692(x)
- end
-end
-
-def fun_l15_n271(x)
- if (x < 1)
- fun_l16_n902(x)
- else
- fun_l16_n548(x)
- end
-end
-
-def fun_l15_n272(x)
- if (x < 1)
- fun_l16_n39(x)
- else
- fun_l16_n635(x)
- end
-end
-
-def fun_l15_n273(x)
- if (x < 1)
- fun_l16_n520(x)
- else
- fun_l16_n49(x)
- end
-end
-
-def fun_l15_n274(x)
- if (x < 1)
- fun_l16_n24(x)
- else
- fun_l16_n466(x)
- end
-end
-
-def fun_l15_n275(x)
- if (x < 1)
- fun_l16_n144(x)
- else
- fun_l16_n555(x)
- end
-end
-
-def fun_l15_n276(x)
- if (x < 1)
- fun_l16_n719(x)
- else
- fun_l16_n693(x)
- end
-end
-
-def fun_l15_n277(x)
- if (x < 1)
- fun_l16_n687(x)
- else
- fun_l16_n987(x)
- end
-end
-
-def fun_l15_n278(x)
- if (x < 1)
- fun_l16_n426(x)
- else
- fun_l16_n179(x)
- end
-end
-
-def fun_l15_n279(x)
- if (x < 1)
- fun_l16_n659(x)
- else
- fun_l16_n36(x)
- end
-end
-
-def fun_l15_n280(x)
- if (x < 1)
- fun_l16_n460(x)
- else
- fun_l16_n450(x)
- end
-end
-
-def fun_l15_n281(x)
- if (x < 1)
- fun_l16_n42(x)
- else
- fun_l16_n230(x)
- end
-end
-
-def fun_l15_n282(x)
- if (x < 1)
- fun_l16_n168(x)
- else
- fun_l16_n422(x)
- end
-end
-
-def fun_l15_n283(x)
- if (x < 1)
- fun_l16_n305(x)
- else
- fun_l16_n554(x)
- end
-end
-
-def fun_l15_n284(x)
- if (x < 1)
- fun_l16_n680(x)
- else
- fun_l16_n147(x)
- end
-end
-
-def fun_l15_n285(x)
- if (x < 1)
- fun_l16_n632(x)
- else
- fun_l16_n767(x)
- end
-end
-
-def fun_l15_n286(x)
- if (x < 1)
- fun_l16_n735(x)
- else
- fun_l16_n465(x)
- end
-end
-
-def fun_l15_n287(x)
- if (x < 1)
- fun_l16_n17(x)
- else
- fun_l16_n638(x)
- end
-end
-
-def fun_l15_n288(x)
- if (x < 1)
- fun_l16_n517(x)
- else
- fun_l16_n47(x)
- end
-end
-
-def fun_l15_n289(x)
- if (x < 1)
- fun_l16_n101(x)
- else
- fun_l16_n882(x)
- end
-end
-
-def fun_l15_n290(x)
- if (x < 1)
- fun_l16_n697(x)
- else
- fun_l16_n963(x)
- end
-end
-
-def fun_l15_n291(x)
- if (x < 1)
- fun_l16_n468(x)
- else
- fun_l16_n340(x)
- end
-end
-
-def fun_l15_n292(x)
- if (x < 1)
- fun_l16_n817(x)
- else
- fun_l16_n454(x)
- end
-end
-
-def fun_l15_n293(x)
- if (x < 1)
- fun_l16_n885(x)
- else
- fun_l16_n733(x)
- end
-end
-
-def fun_l15_n294(x)
- if (x < 1)
- fun_l16_n844(x)
- else
- fun_l16_n564(x)
- end
-end
-
-def fun_l15_n295(x)
- if (x < 1)
- fun_l16_n667(x)
- else
- fun_l16_n286(x)
- end
-end
-
-def fun_l15_n296(x)
- if (x < 1)
- fun_l16_n694(x)
- else
- fun_l16_n660(x)
- end
-end
-
-def fun_l15_n297(x)
- if (x < 1)
- fun_l16_n839(x)
- else
- fun_l16_n274(x)
- end
-end
-
-def fun_l15_n298(x)
- if (x < 1)
- fun_l16_n385(x)
- else
- fun_l16_n821(x)
- end
-end
-
-def fun_l15_n299(x)
- if (x < 1)
- fun_l16_n137(x)
- else
- fun_l16_n548(x)
- end
-end
-
-def fun_l15_n300(x)
- if (x < 1)
- fun_l16_n662(x)
- else
- fun_l16_n2(x)
- end
-end
-
-def fun_l15_n301(x)
- if (x < 1)
- fun_l16_n998(x)
- else
- fun_l16_n186(x)
- end
-end
-
-def fun_l15_n302(x)
- if (x < 1)
- fun_l16_n667(x)
- else
- fun_l16_n454(x)
- end
-end
-
-def fun_l15_n303(x)
- if (x < 1)
- fun_l16_n765(x)
- else
- fun_l16_n519(x)
- end
-end
-
-def fun_l15_n304(x)
- if (x < 1)
- fun_l16_n936(x)
- else
- fun_l16_n213(x)
- end
-end
-
-def fun_l15_n305(x)
- if (x < 1)
- fun_l16_n695(x)
- else
- fun_l16_n545(x)
- end
-end
-
-def fun_l15_n306(x)
- if (x < 1)
- fun_l16_n221(x)
- else
- fun_l16_n545(x)
- end
-end
-
-def fun_l15_n307(x)
- if (x < 1)
- fun_l16_n555(x)
- else
- fun_l16_n570(x)
- end
-end
-
-def fun_l15_n308(x)
- if (x < 1)
- fun_l16_n57(x)
- else
- fun_l16_n91(x)
- end
-end
-
-def fun_l15_n309(x)
- if (x < 1)
- fun_l16_n37(x)
- else
- fun_l16_n516(x)
- end
-end
-
-def fun_l15_n310(x)
- if (x < 1)
- fun_l16_n661(x)
- else
- fun_l16_n98(x)
- end
-end
-
-def fun_l15_n311(x)
- if (x < 1)
- fun_l16_n119(x)
- else
- fun_l16_n613(x)
- end
-end
-
-def fun_l15_n312(x)
- if (x < 1)
- fun_l16_n982(x)
- else
- fun_l16_n20(x)
- end
-end
-
-def fun_l15_n313(x)
- if (x < 1)
- fun_l16_n241(x)
- else
- fun_l16_n555(x)
- end
-end
-
-def fun_l15_n314(x)
- if (x < 1)
- fun_l16_n638(x)
- else
- fun_l16_n854(x)
- end
-end
-
-def fun_l15_n315(x)
- if (x < 1)
- fun_l16_n580(x)
- else
- fun_l16_n39(x)
- end
-end
-
-def fun_l15_n316(x)
- if (x < 1)
- fun_l16_n705(x)
- else
- fun_l16_n240(x)
- end
-end
-
-def fun_l15_n317(x)
- if (x < 1)
- fun_l16_n395(x)
- else
- fun_l16_n114(x)
- end
-end
-
-def fun_l15_n318(x)
- if (x < 1)
- fun_l16_n554(x)
- else
- fun_l16_n239(x)
- end
-end
-
-def fun_l15_n319(x)
- if (x < 1)
- fun_l16_n108(x)
- else
- fun_l16_n537(x)
- end
-end
-
-def fun_l15_n320(x)
- if (x < 1)
- fun_l16_n554(x)
- else
- fun_l16_n902(x)
- end
-end
-
-def fun_l15_n321(x)
- if (x < 1)
- fun_l16_n665(x)
- else
- fun_l16_n369(x)
- end
-end
-
-def fun_l15_n322(x)
- if (x < 1)
- fun_l16_n4(x)
- else
- fun_l16_n572(x)
- end
-end
-
-def fun_l15_n323(x)
- if (x < 1)
- fun_l16_n579(x)
- else
- fun_l16_n182(x)
- end
-end
-
-def fun_l15_n324(x)
- if (x < 1)
- fun_l16_n593(x)
- else
- fun_l16_n203(x)
- end
-end
-
-def fun_l15_n325(x)
- if (x < 1)
- fun_l16_n678(x)
- else
- fun_l16_n0(x)
- end
-end
-
-def fun_l15_n326(x)
- if (x < 1)
- fun_l16_n809(x)
- else
- fun_l16_n833(x)
- end
-end
-
-def fun_l15_n327(x)
- if (x < 1)
- fun_l16_n618(x)
- else
- fun_l16_n381(x)
- end
-end
-
-def fun_l15_n328(x)
- if (x < 1)
- fun_l16_n133(x)
- else
- fun_l16_n744(x)
- end
-end
-
-def fun_l15_n329(x)
- if (x < 1)
- fun_l16_n488(x)
- else
- fun_l16_n88(x)
- end
-end
-
-def fun_l15_n330(x)
- if (x < 1)
- fun_l16_n205(x)
- else
- fun_l16_n402(x)
- end
-end
-
-def fun_l15_n331(x)
- if (x < 1)
- fun_l16_n515(x)
- else
- fun_l16_n145(x)
- end
-end
-
-def fun_l15_n332(x)
- if (x < 1)
- fun_l16_n581(x)
- else
- fun_l16_n607(x)
- end
-end
-
-def fun_l15_n333(x)
- if (x < 1)
- fun_l16_n356(x)
- else
- fun_l16_n155(x)
- end
-end
-
-def fun_l15_n334(x)
- if (x < 1)
- fun_l16_n936(x)
- else
- fun_l16_n272(x)
- end
-end
-
-def fun_l15_n335(x)
- if (x < 1)
- fun_l16_n714(x)
- else
- fun_l16_n245(x)
- end
-end
-
-def fun_l15_n336(x)
- if (x < 1)
- fun_l16_n581(x)
- else
- fun_l16_n877(x)
- end
-end
-
-def fun_l15_n337(x)
- if (x < 1)
- fun_l16_n558(x)
- else
- fun_l16_n944(x)
- end
-end
-
-def fun_l15_n338(x)
- if (x < 1)
- fun_l16_n49(x)
- else
- fun_l16_n501(x)
- end
-end
-
-def fun_l15_n339(x)
- if (x < 1)
- fun_l16_n68(x)
- else
- fun_l16_n448(x)
- end
-end
-
-def fun_l15_n340(x)
- if (x < 1)
- fun_l16_n249(x)
- else
- fun_l16_n210(x)
- end
-end
-
-def fun_l15_n341(x)
- if (x < 1)
- fun_l16_n720(x)
- else
- fun_l16_n977(x)
- end
-end
-
-def fun_l15_n342(x)
- if (x < 1)
- fun_l16_n771(x)
- else
- fun_l16_n519(x)
- end
-end
-
-def fun_l15_n343(x)
- if (x < 1)
- fun_l16_n995(x)
- else
- fun_l16_n759(x)
- end
-end
-
-def fun_l15_n344(x)
- if (x < 1)
- fun_l16_n972(x)
- else
- fun_l16_n558(x)
- end
-end
-
-def fun_l15_n345(x)
- if (x < 1)
- fun_l16_n184(x)
- else
- fun_l16_n774(x)
- end
-end
-
-def fun_l15_n346(x)
- if (x < 1)
- fun_l16_n881(x)
- else
- fun_l16_n858(x)
- end
-end
-
-def fun_l15_n347(x)
- if (x < 1)
- fun_l16_n921(x)
- else
- fun_l16_n640(x)
- end
-end
-
-def fun_l15_n348(x)
- if (x < 1)
- fun_l16_n840(x)
- else
- fun_l16_n366(x)
- end
-end
-
-def fun_l15_n349(x)
- if (x < 1)
- fun_l16_n835(x)
- else
- fun_l16_n701(x)
- end
-end
-
-def fun_l15_n350(x)
- if (x < 1)
- fun_l16_n304(x)
- else
- fun_l16_n144(x)
- end
-end
-
-def fun_l15_n351(x)
- if (x < 1)
- fun_l16_n867(x)
- else
- fun_l16_n247(x)
- end
-end
-
-def fun_l15_n352(x)
- if (x < 1)
- fun_l16_n595(x)
- else
- fun_l16_n676(x)
- end
-end
-
-def fun_l15_n353(x)
- if (x < 1)
- fun_l16_n125(x)
- else
- fun_l16_n99(x)
- end
-end
-
-def fun_l15_n354(x)
- if (x < 1)
- fun_l16_n659(x)
- else
- fun_l16_n559(x)
- end
-end
-
-def fun_l15_n355(x)
- if (x < 1)
- fun_l16_n405(x)
- else
- fun_l16_n182(x)
- end
-end
-
-def fun_l15_n356(x)
- if (x < 1)
- fun_l16_n347(x)
- else
- fun_l16_n482(x)
- end
-end
-
-def fun_l15_n357(x)
- if (x < 1)
- fun_l16_n742(x)
- else
- fun_l16_n531(x)
- end
-end
-
-def fun_l15_n358(x)
- if (x < 1)
- fun_l16_n954(x)
- else
- fun_l16_n908(x)
- end
-end
-
-def fun_l15_n359(x)
- if (x < 1)
- fun_l16_n670(x)
- else
- fun_l16_n401(x)
- end
-end
-
-def fun_l15_n360(x)
- if (x < 1)
- fun_l16_n423(x)
- else
- fun_l16_n802(x)
- end
-end
-
-def fun_l15_n361(x)
- if (x < 1)
- fun_l16_n12(x)
- else
- fun_l16_n985(x)
- end
-end
-
-def fun_l15_n362(x)
- if (x < 1)
- fun_l16_n644(x)
- else
- fun_l16_n40(x)
- end
-end
-
-def fun_l15_n363(x)
- if (x < 1)
- fun_l16_n491(x)
- else
- fun_l16_n255(x)
- end
-end
-
-def fun_l15_n364(x)
- if (x < 1)
- fun_l16_n14(x)
- else
- fun_l16_n433(x)
- end
-end
-
-def fun_l15_n365(x)
- if (x < 1)
- fun_l16_n652(x)
- else
- fun_l16_n418(x)
- end
-end
-
-def fun_l15_n366(x)
- if (x < 1)
- fun_l16_n815(x)
- else
- fun_l16_n325(x)
- end
-end
-
-def fun_l15_n367(x)
- if (x < 1)
- fun_l16_n623(x)
- else
- fun_l16_n34(x)
- end
-end
-
-def fun_l15_n368(x)
- if (x < 1)
- fun_l16_n596(x)
- else
- fun_l16_n382(x)
- end
-end
-
-def fun_l15_n369(x)
- if (x < 1)
- fun_l16_n144(x)
- else
- fun_l16_n18(x)
- end
-end
-
-def fun_l15_n370(x)
- if (x < 1)
- fun_l16_n37(x)
- else
- fun_l16_n626(x)
- end
-end
-
-def fun_l15_n371(x)
- if (x < 1)
- fun_l16_n275(x)
- else
- fun_l16_n343(x)
- end
-end
-
-def fun_l15_n372(x)
- if (x < 1)
- fun_l16_n951(x)
- else
- fun_l16_n93(x)
- end
-end
-
-def fun_l15_n373(x)
- if (x < 1)
- fun_l16_n893(x)
- else
- fun_l16_n137(x)
- end
-end
-
-def fun_l15_n374(x)
- if (x < 1)
- fun_l16_n32(x)
- else
- fun_l16_n663(x)
- end
-end
-
-def fun_l15_n375(x)
- if (x < 1)
- fun_l16_n888(x)
- else
- fun_l16_n708(x)
- end
-end
-
-def fun_l15_n376(x)
- if (x < 1)
- fun_l16_n745(x)
- else
- fun_l16_n275(x)
- end
-end
-
-def fun_l15_n377(x)
- if (x < 1)
- fun_l16_n957(x)
- else
- fun_l16_n766(x)
- end
-end
-
-def fun_l15_n378(x)
- if (x < 1)
- fun_l16_n242(x)
- else
- fun_l16_n309(x)
- end
-end
-
-def fun_l15_n379(x)
- if (x < 1)
- fun_l16_n855(x)
- else
- fun_l16_n289(x)
- end
-end
-
-def fun_l15_n380(x)
- if (x < 1)
- fun_l16_n511(x)
- else
- fun_l16_n261(x)
- end
-end
-
-def fun_l15_n381(x)
- if (x < 1)
- fun_l16_n867(x)
- else
- fun_l16_n169(x)
- end
-end
-
-def fun_l15_n382(x)
- if (x < 1)
- fun_l16_n646(x)
- else
- fun_l16_n821(x)
- end
-end
-
-def fun_l15_n383(x)
- if (x < 1)
- fun_l16_n181(x)
- else
- fun_l16_n798(x)
- end
-end
-
-def fun_l15_n384(x)
- if (x < 1)
- fun_l16_n290(x)
- else
- fun_l16_n756(x)
- end
-end
-
-def fun_l15_n385(x)
- if (x < 1)
- fun_l16_n896(x)
- else
- fun_l16_n14(x)
- end
-end
-
-def fun_l15_n386(x)
- if (x < 1)
- fun_l16_n602(x)
- else
- fun_l16_n817(x)
- end
-end
-
-def fun_l15_n387(x)
- if (x < 1)
- fun_l16_n908(x)
- else
- fun_l16_n773(x)
- end
-end
-
-def fun_l15_n388(x)
- if (x < 1)
- fun_l16_n708(x)
- else
- fun_l16_n416(x)
- end
-end
-
-def fun_l15_n389(x)
- if (x < 1)
- fun_l16_n42(x)
- else
- fun_l16_n325(x)
- end
-end
-
-def fun_l15_n390(x)
- if (x < 1)
- fun_l16_n245(x)
- else
- fun_l16_n211(x)
- end
-end
-
-def fun_l15_n391(x)
- if (x < 1)
- fun_l16_n674(x)
- else
- fun_l16_n854(x)
- end
-end
-
-def fun_l15_n392(x)
- if (x < 1)
- fun_l16_n294(x)
- else
- fun_l16_n299(x)
- end
-end
-
-def fun_l15_n393(x)
- if (x < 1)
- fun_l16_n873(x)
- else
- fun_l16_n17(x)
- end
-end
-
-def fun_l15_n394(x)
- if (x < 1)
- fun_l16_n375(x)
- else
- fun_l16_n976(x)
- end
-end
-
-def fun_l15_n395(x)
- if (x < 1)
- fun_l16_n753(x)
- else
- fun_l16_n362(x)
- end
-end
-
-def fun_l15_n396(x)
- if (x < 1)
- fun_l16_n326(x)
- else
- fun_l16_n878(x)
- end
-end
-
-def fun_l15_n397(x)
- if (x < 1)
- fun_l16_n118(x)
- else
- fun_l16_n552(x)
- end
-end
-
-def fun_l15_n398(x)
- if (x < 1)
- fun_l16_n931(x)
- else
- fun_l16_n552(x)
- end
-end
-
-def fun_l15_n399(x)
- if (x < 1)
- fun_l16_n125(x)
- else
- fun_l16_n817(x)
- end
-end
-
-def fun_l15_n400(x)
- if (x < 1)
- fun_l16_n747(x)
- else
- fun_l16_n328(x)
- end
-end
-
-def fun_l15_n401(x)
- if (x < 1)
- fun_l16_n204(x)
- else
- fun_l16_n644(x)
- end
-end
-
-def fun_l15_n402(x)
- if (x < 1)
- fun_l16_n730(x)
- else
- fun_l16_n622(x)
- end
-end
-
-def fun_l15_n403(x)
- if (x < 1)
- fun_l16_n718(x)
- else
- fun_l16_n616(x)
- end
-end
-
-def fun_l15_n404(x)
- if (x < 1)
- fun_l16_n260(x)
- else
- fun_l16_n96(x)
- end
-end
-
-def fun_l15_n405(x)
- if (x < 1)
- fun_l16_n123(x)
- else
- fun_l16_n377(x)
- end
-end
-
-def fun_l15_n406(x)
- if (x < 1)
- fun_l16_n425(x)
- else
- fun_l16_n601(x)
- end
-end
-
-def fun_l15_n407(x)
- if (x < 1)
- fun_l16_n842(x)
- else
- fun_l16_n936(x)
- end
-end
-
-def fun_l15_n408(x)
- if (x < 1)
- fun_l16_n797(x)
- else
- fun_l16_n194(x)
- end
-end
-
-def fun_l15_n409(x)
- if (x < 1)
- fun_l16_n930(x)
- else
- fun_l16_n976(x)
- end
-end
-
-def fun_l15_n410(x)
- if (x < 1)
- fun_l16_n163(x)
- else
- fun_l16_n703(x)
- end
-end
-
-def fun_l15_n411(x)
- if (x < 1)
- fun_l16_n109(x)
- else
- fun_l16_n276(x)
- end
-end
-
-def fun_l15_n412(x)
- if (x < 1)
- fun_l16_n37(x)
- else
- fun_l16_n372(x)
- end
-end
-
-def fun_l15_n413(x)
- if (x < 1)
- fun_l16_n995(x)
- else
- fun_l16_n762(x)
- end
-end
-
-def fun_l15_n414(x)
- if (x < 1)
- fun_l16_n789(x)
- else
- fun_l16_n601(x)
- end
-end
-
-def fun_l15_n415(x)
- if (x < 1)
- fun_l16_n699(x)
- else
- fun_l16_n853(x)
- end
-end
-
-def fun_l15_n416(x)
- if (x < 1)
- fun_l16_n936(x)
- else
- fun_l16_n478(x)
- end
-end
-
-def fun_l15_n417(x)
- if (x < 1)
- fun_l16_n50(x)
- else
- fun_l16_n67(x)
- end
-end
-
-def fun_l15_n418(x)
- if (x < 1)
- fun_l16_n563(x)
- else
- fun_l16_n248(x)
- end
-end
-
-def fun_l15_n419(x)
- if (x < 1)
- fun_l16_n238(x)
- else
- fun_l16_n188(x)
- end
-end
-
-def fun_l15_n420(x)
- if (x < 1)
- fun_l16_n369(x)
- else
- fun_l16_n706(x)
- end
-end
-
-def fun_l15_n421(x)
- if (x < 1)
- fun_l16_n641(x)
- else
- fun_l16_n869(x)
- end
-end
-
-def fun_l15_n422(x)
- if (x < 1)
- fun_l16_n219(x)
- else
- fun_l16_n333(x)
- end
-end
-
-def fun_l15_n423(x)
- if (x < 1)
- fun_l16_n156(x)
- else
- fun_l16_n22(x)
- end
-end
-
-def fun_l15_n424(x)
- if (x < 1)
- fun_l16_n443(x)
- else
- fun_l16_n1(x)
- end
-end
-
-def fun_l15_n425(x)
- if (x < 1)
- fun_l16_n892(x)
- else
- fun_l16_n937(x)
- end
-end
-
-def fun_l15_n426(x)
- if (x < 1)
- fun_l16_n586(x)
- else
- fun_l16_n636(x)
- end
-end
-
-def fun_l15_n427(x)
- if (x < 1)
- fun_l16_n519(x)
- else
- fun_l16_n269(x)
- end
-end
-
-def fun_l15_n428(x)
- if (x < 1)
- fun_l16_n379(x)
- else
- fun_l16_n994(x)
- end
-end
-
-def fun_l15_n429(x)
- if (x < 1)
- fun_l16_n588(x)
- else
- fun_l16_n532(x)
- end
-end
-
-def fun_l15_n430(x)
- if (x < 1)
- fun_l16_n584(x)
- else
- fun_l16_n445(x)
- end
-end
-
-def fun_l15_n431(x)
- if (x < 1)
- fun_l16_n63(x)
- else
- fun_l16_n678(x)
- end
-end
-
-def fun_l15_n432(x)
- if (x < 1)
- fun_l16_n487(x)
- else
- fun_l16_n435(x)
- end
-end
-
-def fun_l15_n433(x)
- if (x < 1)
- fun_l16_n673(x)
- else
- fun_l16_n220(x)
- end
-end
-
-def fun_l15_n434(x)
- if (x < 1)
- fun_l16_n131(x)
- else
- fun_l16_n751(x)
- end
-end
-
-def fun_l15_n435(x)
- if (x < 1)
- fun_l16_n557(x)
- else
- fun_l16_n340(x)
- end
-end
-
-def fun_l15_n436(x)
- if (x < 1)
- fun_l16_n511(x)
- else
- fun_l16_n751(x)
- end
-end
-
-def fun_l15_n437(x)
- if (x < 1)
- fun_l16_n983(x)
- else
- fun_l16_n632(x)
- end
-end
-
-def fun_l15_n438(x)
- if (x < 1)
- fun_l16_n350(x)
- else
- fun_l16_n492(x)
- end
-end
-
-def fun_l15_n439(x)
- if (x < 1)
- fun_l16_n994(x)
- else
- fun_l16_n76(x)
- end
-end
-
-def fun_l15_n440(x)
- if (x < 1)
- fun_l16_n756(x)
- else
- fun_l16_n177(x)
- end
-end
-
-def fun_l15_n441(x)
- if (x < 1)
- fun_l16_n619(x)
- else
- fun_l16_n473(x)
- end
-end
-
-def fun_l15_n442(x)
- if (x < 1)
- fun_l16_n667(x)
- else
- fun_l16_n714(x)
- end
-end
-
-def fun_l15_n443(x)
- if (x < 1)
- fun_l16_n790(x)
- else
- fun_l16_n848(x)
- end
-end
-
-def fun_l15_n444(x)
- if (x < 1)
- fun_l16_n925(x)
- else
- fun_l16_n113(x)
- end
-end
-
-def fun_l15_n445(x)
- if (x < 1)
- fun_l16_n990(x)
- else
- fun_l16_n566(x)
- end
-end
-
-def fun_l15_n446(x)
- if (x < 1)
- fun_l16_n589(x)
- else
- fun_l16_n881(x)
- end
-end
-
-def fun_l15_n447(x)
- if (x < 1)
- fun_l16_n961(x)
- else
- fun_l16_n786(x)
- end
-end
-
-def fun_l15_n448(x)
- if (x < 1)
- fun_l16_n928(x)
- else
- fun_l16_n631(x)
- end
-end
-
-def fun_l15_n449(x)
- if (x < 1)
- fun_l16_n317(x)
- else
- fun_l16_n980(x)
- end
-end
-
-def fun_l15_n450(x)
- if (x < 1)
- fun_l16_n276(x)
- else
- fun_l16_n941(x)
- end
-end
-
-def fun_l15_n451(x)
- if (x < 1)
- fun_l16_n552(x)
- else
- fun_l16_n545(x)
- end
-end
-
-def fun_l15_n452(x)
- if (x < 1)
- fun_l16_n334(x)
- else
- fun_l16_n340(x)
- end
-end
-
-def fun_l15_n453(x)
- if (x < 1)
- fun_l16_n800(x)
- else
- fun_l16_n548(x)
- end
-end
-
-def fun_l15_n454(x)
- if (x < 1)
- fun_l16_n676(x)
- else
- fun_l16_n742(x)
- end
-end
-
-def fun_l15_n455(x)
- if (x < 1)
- fun_l16_n722(x)
- else
- fun_l16_n446(x)
- end
-end
-
-def fun_l15_n456(x)
- if (x < 1)
- fun_l16_n570(x)
- else
- fun_l16_n203(x)
- end
-end
-
-def fun_l15_n457(x)
- if (x < 1)
- fun_l16_n425(x)
- else
- fun_l16_n401(x)
- end
-end
-
-def fun_l15_n458(x)
- if (x < 1)
- fun_l16_n3(x)
- else
- fun_l16_n483(x)
- end
-end
-
-def fun_l15_n459(x)
- if (x < 1)
- fun_l16_n450(x)
- else
- fun_l16_n468(x)
- end
-end
-
-def fun_l15_n460(x)
- if (x < 1)
- fun_l16_n447(x)
- else
- fun_l16_n758(x)
- end
-end
-
-def fun_l15_n461(x)
- if (x < 1)
- fun_l16_n531(x)
- else
- fun_l16_n268(x)
- end
-end
-
-def fun_l15_n462(x)
- if (x < 1)
- fun_l16_n628(x)
- else
- fun_l16_n142(x)
- end
-end
-
-def fun_l15_n463(x)
- if (x < 1)
- fun_l16_n823(x)
- else
- fun_l16_n97(x)
- end
-end
-
-def fun_l15_n464(x)
- if (x < 1)
- fun_l16_n807(x)
- else
- fun_l16_n231(x)
- end
-end
-
-def fun_l15_n465(x)
- if (x < 1)
- fun_l16_n113(x)
- else
- fun_l16_n438(x)
- end
-end
-
-def fun_l15_n466(x)
- if (x < 1)
- fun_l16_n234(x)
- else
- fun_l16_n369(x)
- end
-end
-
-def fun_l15_n467(x)
- if (x < 1)
- fun_l16_n242(x)
- else
- fun_l16_n121(x)
- end
-end
-
-def fun_l15_n468(x)
- if (x < 1)
- fun_l16_n38(x)
- else
- fun_l16_n223(x)
- end
-end
-
-def fun_l15_n469(x)
- if (x < 1)
- fun_l16_n618(x)
- else
- fun_l16_n550(x)
- end
-end
-
-def fun_l15_n470(x)
- if (x < 1)
- fun_l16_n318(x)
- else
- fun_l16_n182(x)
- end
-end
-
-def fun_l15_n471(x)
- if (x < 1)
- fun_l16_n782(x)
- else
- fun_l16_n876(x)
- end
-end
-
-def fun_l15_n472(x)
- if (x < 1)
- fun_l16_n995(x)
- else
- fun_l16_n4(x)
- end
-end
-
-def fun_l15_n473(x)
- if (x < 1)
- fun_l16_n425(x)
- else
- fun_l16_n891(x)
- end
-end
-
-def fun_l15_n474(x)
- if (x < 1)
- fun_l16_n263(x)
- else
- fun_l16_n278(x)
- end
-end
-
-def fun_l15_n475(x)
- if (x < 1)
- fun_l16_n116(x)
- else
- fun_l16_n62(x)
- end
-end
-
-def fun_l15_n476(x)
- if (x < 1)
- fun_l16_n855(x)
- else
- fun_l16_n153(x)
- end
-end
-
-def fun_l15_n477(x)
- if (x < 1)
- fun_l16_n979(x)
- else
- fun_l16_n957(x)
- end
-end
-
-def fun_l15_n478(x)
- if (x < 1)
- fun_l16_n671(x)
- else
- fun_l16_n694(x)
- end
-end
-
-def fun_l15_n479(x)
- if (x < 1)
- fun_l16_n479(x)
- else
- fun_l16_n400(x)
- end
-end
-
-def fun_l15_n480(x)
- if (x < 1)
- fun_l16_n740(x)
- else
- fun_l16_n940(x)
- end
-end
-
-def fun_l15_n481(x)
- if (x < 1)
- fun_l16_n270(x)
- else
- fun_l16_n802(x)
- end
-end
-
-def fun_l15_n482(x)
- if (x < 1)
- fun_l16_n489(x)
- else
- fun_l16_n402(x)
- end
-end
-
-def fun_l15_n483(x)
- if (x < 1)
- fun_l16_n505(x)
- else
- fun_l16_n97(x)
- end
-end
-
-def fun_l15_n484(x)
- if (x < 1)
- fun_l16_n64(x)
- else
- fun_l16_n748(x)
- end
-end
-
-def fun_l15_n485(x)
- if (x < 1)
- fun_l16_n7(x)
- else
- fun_l16_n627(x)
- end
-end
-
-def fun_l15_n486(x)
- if (x < 1)
- fun_l16_n302(x)
- else
- fun_l16_n331(x)
- end
-end
-
-def fun_l15_n487(x)
- if (x < 1)
- fun_l16_n771(x)
- else
- fun_l16_n895(x)
- end
-end
-
-def fun_l15_n488(x)
- if (x < 1)
- fun_l16_n306(x)
- else
- fun_l16_n740(x)
- end
-end
-
-def fun_l15_n489(x)
- if (x < 1)
- fun_l16_n722(x)
- else
- fun_l16_n848(x)
- end
-end
-
-def fun_l15_n490(x)
- if (x < 1)
- fun_l16_n764(x)
- else
- fun_l16_n851(x)
- end
-end
-
-def fun_l15_n491(x)
- if (x < 1)
- fun_l16_n357(x)
- else
- fun_l16_n117(x)
- end
-end
-
-def fun_l15_n492(x)
- if (x < 1)
- fun_l16_n483(x)
- else
- fun_l16_n187(x)
- end
-end
-
-def fun_l15_n493(x)
- if (x < 1)
- fun_l16_n695(x)
- else
- fun_l16_n727(x)
- end
-end
-
-def fun_l15_n494(x)
- if (x < 1)
- fun_l16_n460(x)
- else
- fun_l16_n154(x)
- end
-end
-
-def fun_l15_n495(x)
- if (x < 1)
- fun_l16_n130(x)
- else
- fun_l16_n999(x)
- end
-end
-
-def fun_l15_n496(x)
- if (x < 1)
- fun_l16_n963(x)
- else
- fun_l16_n746(x)
- end
-end
-
-def fun_l15_n497(x)
- if (x < 1)
- fun_l16_n630(x)
- else
- fun_l16_n852(x)
- end
-end
-
-def fun_l15_n498(x)
- if (x < 1)
- fun_l16_n847(x)
- else
- fun_l16_n836(x)
- end
-end
-
-def fun_l15_n499(x)
- if (x < 1)
- fun_l16_n100(x)
- else
- fun_l16_n40(x)
- end
-end
-
-def fun_l15_n500(x)
- if (x < 1)
- fun_l16_n246(x)
- else
- fun_l16_n442(x)
- end
-end
-
-def fun_l15_n501(x)
- if (x < 1)
- fun_l16_n355(x)
- else
- fun_l16_n405(x)
- end
-end
-
-def fun_l15_n502(x)
- if (x < 1)
- fun_l16_n857(x)
- else
- fun_l16_n652(x)
- end
-end
-
-def fun_l15_n503(x)
- if (x < 1)
- fun_l16_n612(x)
- else
- fun_l16_n779(x)
- end
-end
-
-def fun_l15_n504(x)
- if (x < 1)
- fun_l16_n836(x)
- else
- fun_l16_n625(x)
- end
-end
-
-def fun_l15_n505(x)
- if (x < 1)
- fun_l16_n872(x)
- else
- fun_l16_n905(x)
- end
-end
-
-def fun_l15_n506(x)
- if (x < 1)
- fun_l16_n953(x)
- else
- fun_l16_n955(x)
- end
-end
-
-def fun_l15_n507(x)
- if (x < 1)
- fun_l16_n678(x)
- else
- fun_l16_n663(x)
- end
-end
-
-def fun_l15_n508(x)
- if (x < 1)
- fun_l16_n848(x)
- else
- fun_l16_n438(x)
- end
-end
-
-def fun_l15_n509(x)
- if (x < 1)
- fun_l16_n558(x)
- else
- fun_l16_n430(x)
- end
-end
-
-def fun_l15_n510(x)
- if (x < 1)
- fun_l16_n424(x)
- else
- fun_l16_n473(x)
- end
-end
-
-def fun_l15_n511(x)
- if (x < 1)
- fun_l16_n897(x)
- else
- fun_l16_n359(x)
- end
-end
-
-def fun_l15_n512(x)
- if (x < 1)
- fun_l16_n229(x)
- else
- fun_l16_n205(x)
- end
-end
-
-def fun_l15_n513(x)
- if (x < 1)
- fun_l16_n553(x)
- else
- fun_l16_n438(x)
- end
-end
-
-def fun_l15_n514(x)
- if (x < 1)
- fun_l16_n300(x)
- else
- fun_l16_n588(x)
- end
-end
-
-def fun_l15_n515(x)
- if (x < 1)
- fun_l16_n819(x)
- else
- fun_l16_n467(x)
- end
-end
-
-def fun_l15_n516(x)
- if (x < 1)
- fun_l16_n767(x)
- else
- fun_l16_n786(x)
- end
-end
-
-def fun_l15_n517(x)
- if (x < 1)
- fun_l16_n50(x)
- else
- fun_l16_n309(x)
- end
-end
-
-def fun_l15_n518(x)
- if (x < 1)
- fun_l16_n671(x)
- else
- fun_l16_n635(x)
- end
-end
-
-def fun_l15_n519(x)
- if (x < 1)
- fun_l16_n935(x)
- else
- fun_l16_n497(x)
- end
-end
-
-def fun_l15_n520(x)
- if (x < 1)
- fun_l16_n343(x)
- else
- fun_l16_n175(x)
- end
-end
-
-def fun_l15_n521(x)
- if (x < 1)
- fun_l16_n212(x)
- else
- fun_l16_n987(x)
- end
-end
-
-def fun_l15_n522(x)
- if (x < 1)
- fun_l16_n780(x)
- else
- fun_l16_n331(x)
- end
-end
-
-def fun_l15_n523(x)
- if (x < 1)
- fun_l16_n452(x)
- else
- fun_l16_n393(x)
- end
-end
-
-def fun_l15_n524(x)
- if (x < 1)
- fun_l16_n823(x)
- else
- fun_l16_n212(x)
- end
-end
-
-def fun_l15_n525(x)
- if (x < 1)
- fun_l16_n516(x)
- else
- fun_l16_n906(x)
- end
-end
-
-def fun_l15_n526(x)
- if (x < 1)
- fun_l16_n590(x)
- else
- fun_l16_n278(x)
- end
-end
-
-def fun_l15_n527(x)
- if (x < 1)
- fun_l16_n392(x)
- else
- fun_l16_n714(x)
- end
-end
-
-def fun_l15_n528(x)
- if (x < 1)
- fun_l16_n729(x)
- else
- fun_l16_n751(x)
- end
-end
-
-def fun_l15_n529(x)
- if (x < 1)
- fun_l16_n863(x)
- else
- fun_l16_n478(x)
- end
-end
-
-def fun_l15_n530(x)
- if (x < 1)
- fun_l16_n472(x)
- else
- fun_l16_n672(x)
- end
-end
-
-def fun_l15_n531(x)
- if (x < 1)
- fun_l16_n811(x)
- else
- fun_l16_n201(x)
- end
-end
-
-def fun_l15_n532(x)
- if (x < 1)
- fun_l16_n558(x)
- else
- fun_l16_n602(x)
- end
-end
-
-def fun_l15_n533(x)
- if (x < 1)
- fun_l16_n788(x)
- else
- fun_l16_n175(x)
- end
-end
-
-def fun_l15_n534(x)
- if (x < 1)
- fun_l16_n497(x)
- else
- fun_l16_n807(x)
- end
-end
-
-def fun_l15_n535(x)
- if (x < 1)
- fun_l16_n712(x)
- else
- fun_l16_n870(x)
- end
-end
-
-def fun_l15_n536(x)
- if (x < 1)
- fun_l16_n699(x)
- else
- fun_l16_n879(x)
- end
-end
-
-def fun_l15_n537(x)
- if (x < 1)
- fun_l16_n215(x)
- else
- fun_l16_n807(x)
- end
-end
-
-def fun_l15_n538(x)
- if (x < 1)
- fun_l16_n569(x)
- else
- fun_l16_n385(x)
- end
-end
-
-def fun_l15_n539(x)
- if (x < 1)
- fun_l16_n807(x)
- else
- fun_l16_n699(x)
- end
-end
-
-def fun_l15_n540(x)
- if (x < 1)
- fun_l16_n982(x)
- else
- fun_l16_n436(x)
- end
-end
-
-def fun_l15_n541(x)
- if (x < 1)
- fun_l16_n852(x)
- else
- fun_l16_n800(x)
- end
-end
-
-def fun_l15_n542(x)
- if (x < 1)
- fun_l16_n401(x)
- else
- fun_l16_n478(x)
- end
-end
-
-def fun_l15_n543(x)
- if (x < 1)
- fun_l16_n373(x)
- else
- fun_l16_n465(x)
- end
-end
-
-def fun_l15_n544(x)
- if (x < 1)
- fun_l16_n299(x)
- else
- fun_l16_n337(x)
- end
-end
-
-def fun_l15_n545(x)
- if (x < 1)
- fun_l16_n931(x)
- else
- fun_l16_n68(x)
- end
-end
-
-def fun_l15_n546(x)
- if (x < 1)
- fun_l16_n87(x)
- else
- fun_l16_n947(x)
- end
-end
-
-def fun_l15_n547(x)
- if (x < 1)
- fun_l16_n287(x)
- else
- fun_l16_n530(x)
- end
-end
-
-def fun_l15_n548(x)
- if (x < 1)
- fun_l16_n910(x)
- else
- fun_l16_n112(x)
- end
-end
-
-def fun_l15_n549(x)
- if (x < 1)
- fun_l16_n878(x)
- else
- fun_l16_n737(x)
- end
-end
-
-def fun_l15_n550(x)
- if (x < 1)
- fun_l16_n538(x)
- else
- fun_l16_n634(x)
- end
-end
-
-def fun_l15_n551(x)
- if (x < 1)
- fun_l16_n109(x)
- else
- fun_l16_n493(x)
- end
-end
-
-def fun_l15_n552(x)
- if (x < 1)
- fun_l16_n631(x)
- else
- fun_l16_n244(x)
- end
-end
-
-def fun_l15_n553(x)
- if (x < 1)
- fun_l16_n107(x)
- else
- fun_l16_n718(x)
- end
-end
-
-def fun_l15_n554(x)
- if (x < 1)
- fun_l16_n572(x)
- else
- fun_l16_n199(x)
- end
-end
-
-def fun_l15_n555(x)
- if (x < 1)
- fun_l16_n109(x)
- else
- fun_l16_n705(x)
- end
-end
-
-def fun_l15_n556(x)
- if (x < 1)
- fun_l16_n679(x)
- else
- fun_l16_n999(x)
- end
-end
-
-def fun_l15_n557(x)
- if (x < 1)
- fun_l16_n714(x)
- else
- fun_l16_n121(x)
- end
-end
-
-def fun_l15_n558(x)
- if (x < 1)
- fun_l16_n408(x)
- else
- fun_l16_n239(x)
- end
-end
-
-def fun_l15_n559(x)
- if (x < 1)
- fun_l16_n861(x)
- else
- fun_l16_n83(x)
- end
-end
-
-def fun_l15_n560(x)
- if (x < 1)
- fun_l16_n597(x)
- else
- fun_l16_n413(x)
- end
-end
-
-def fun_l15_n561(x)
- if (x < 1)
- fun_l16_n485(x)
- else
- fun_l16_n42(x)
- end
-end
-
-def fun_l15_n562(x)
- if (x < 1)
- fun_l16_n798(x)
- else
- fun_l16_n340(x)
- end
-end
-
-def fun_l15_n563(x)
- if (x < 1)
- fun_l16_n50(x)
- else
- fun_l16_n858(x)
- end
-end
-
-def fun_l15_n564(x)
- if (x < 1)
- fun_l16_n92(x)
- else
- fun_l16_n3(x)
- end
-end
-
-def fun_l15_n565(x)
- if (x < 1)
- fun_l16_n311(x)
- else
- fun_l16_n953(x)
- end
-end
-
-def fun_l15_n566(x)
- if (x < 1)
- fun_l16_n649(x)
- else
- fun_l16_n670(x)
- end
-end
-
-def fun_l15_n567(x)
- if (x < 1)
- fun_l16_n598(x)
- else
- fun_l16_n268(x)
- end
-end
-
-def fun_l15_n568(x)
- if (x < 1)
- fun_l16_n425(x)
- else
- fun_l16_n821(x)
- end
-end
-
-def fun_l15_n569(x)
- if (x < 1)
- fun_l16_n447(x)
- else
- fun_l16_n940(x)
- end
-end
-
-def fun_l15_n570(x)
- if (x < 1)
- fun_l16_n755(x)
- else
- fun_l16_n26(x)
- end
-end
-
-def fun_l15_n571(x)
- if (x < 1)
- fun_l16_n157(x)
- else
- fun_l16_n582(x)
- end
-end
-
-def fun_l15_n572(x)
- if (x < 1)
- fun_l16_n530(x)
- else
- fun_l16_n202(x)
- end
-end
-
-def fun_l15_n573(x)
- if (x < 1)
- fun_l16_n95(x)
- else
- fun_l16_n137(x)
- end
-end
-
-def fun_l15_n574(x)
- if (x < 1)
- fun_l16_n789(x)
- else
- fun_l16_n531(x)
- end
-end
-
-def fun_l15_n575(x)
- if (x < 1)
- fun_l16_n677(x)
- else
- fun_l16_n686(x)
- end
-end
-
-def fun_l15_n576(x)
- if (x < 1)
- fun_l16_n253(x)
- else
- fun_l16_n101(x)
- end
-end
-
-def fun_l15_n577(x)
- if (x < 1)
- fun_l16_n579(x)
- else
- fun_l16_n250(x)
- end
-end
-
-def fun_l15_n578(x)
- if (x < 1)
- fun_l16_n104(x)
- else
- fun_l16_n860(x)
- end
-end
-
-def fun_l15_n579(x)
- if (x < 1)
- fun_l16_n415(x)
- else
- fun_l16_n480(x)
- end
-end
-
-def fun_l15_n580(x)
- if (x < 1)
- fun_l16_n255(x)
- else
- fun_l16_n123(x)
- end
-end
-
-def fun_l15_n581(x)
- if (x < 1)
- fun_l16_n40(x)
- else
- fun_l16_n36(x)
- end
-end
-
-def fun_l15_n582(x)
- if (x < 1)
- fun_l16_n612(x)
- else
- fun_l16_n46(x)
- end
-end
-
-def fun_l15_n583(x)
- if (x < 1)
- fun_l16_n328(x)
- else
- fun_l16_n638(x)
- end
-end
-
-def fun_l15_n584(x)
- if (x < 1)
- fun_l16_n219(x)
- else
- fun_l16_n672(x)
- end
-end
-
-def fun_l15_n585(x)
- if (x < 1)
- fun_l16_n67(x)
- else
- fun_l16_n584(x)
- end
-end
-
-def fun_l15_n586(x)
- if (x < 1)
- fun_l16_n222(x)
- else
- fun_l16_n366(x)
- end
-end
-
-def fun_l15_n587(x)
- if (x < 1)
- fun_l16_n194(x)
- else
- fun_l16_n54(x)
- end
-end
-
-def fun_l15_n588(x)
- if (x < 1)
- fun_l16_n742(x)
- else
- fun_l16_n725(x)
- end
-end
-
-def fun_l15_n589(x)
- if (x < 1)
- fun_l16_n557(x)
- else
- fun_l16_n688(x)
- end
-end
-
-def fun_l15_n590(x)
- if (x < 1)
- fun_l16_n588(x)
- else
- fun_l16_n296(x)
- end
-end
-
-def fun_l15_n591(x)
- if (x < 1)
- fun_l16_n756(x)
- else
- fun_l16_n619(x)
- end
-end
-
-def fun_l15_n592(x)
- if (x < 1)
- fun_l16_n919(x)
- else
- fun_l16_n607(x)
- end
-end
-
-def fun_l15_n593(x)
- if (x < 1)
- fun_l16_n168(x)
- else
- fun_l16_n425(x)
- end
-end
-
-def fun_l15_n594(x)
- if (x < 1)
- fun_l16_n641(x)
- else
- fun_l16_n980(x)
- end
-end
-
-def fun_l15_n595(x)
- if (x < 1)
- fun_l16_n132(x)
- else
- fun_l16_n120(x)
- end
-end
-
-def fun_l15_n596(x)
- if (x < 1)
- fun_l16_n998(x)
- else
- fun_l16_n383(x)
- end
-end
-
-def fun_l15_n597(x)
- if (x < 1)
- fun_l16_n987(x)
- else
- fun_l16_n685(x)
- end
-end
-
-def fun_l15_n598(x)
- if (x < 1)
- fun_l16_n898(x)
- else
- fun_l16_n53(x)
- end
-end
-
-def fun_l15_n599(x)
- if (x < 1)
- fun_l16_n589(x)
- else
- fun_l16_n25(x)
- end
-end
-
-def fun_l15_n600(x)
- if (x < 1)
- fun_l16_n841(x)
- else
- fun_l16_n623(x)
- end
-end
-
-def fun_l15_n601(x)
- if (x < 1)
- fun_l16_n63(x)
- else
- fun_l16_n515(x)
- end
-end
-
-def fun_l15_n602(x)
- if (x < 1)
- fun_l16_n708(x)
- else
- fun_l16_n318(x)
- end
-end
-
-def fun_l15_n603(x)
- if (x < 1)
- fun_l16_n679(x)
- else
- fun_l16_n31(x)
- end
-end
-
-def fun_l15_n604(x)
- if (x < 1)
- fun_l16_n617(x)
- else
- fun_l16_n20(x)
- end
-end
-
-def fun_l15_n605(x)
- if (x < 1)
- fun_l16_n635(x)
- else
- fun_l16_n990(x)
- end
-end
-
-def fun_l15_n606(x)
- if (x < 1)
- fun_l16_n174(x)
- else
- fun_l16_n977(x)
- end
-end
-
-def fun_l15_n607(x)
- if (x < 1)
- fun_l16_n449(x)
- else
- fun_l16_n658(x)
- end
-end
-
-def fun_l15_n608(x)
- if (x < 1)
- fun_l16_n208(x)
- else
- fun_l16_n875(x)
- end
-end
-
-def fun_l15_n609(x)
- if (x < 1)
- fun_l16_n665(x)
- else
- fun_l16_n431(x)
- end
-end
-
-def fun_l15_n610(x)
- if (x < 1)
- fun_l16_n6(x)
- else
- fun_l16_n78(x)
- end
-end
-
-def fun_l15_n611(x)
- if (x < 1)
- fun_l16_n335(x)
- else
- fun_l16_n558(x)
- end
-end
-
-def fun_l15_n612(x)
- if (x < 1)
- fun_l16_n259(x)
- else
- fun_l16_n893(x)
- end
-end
-
-def fun_l15_n613(x)
- if (x < 1)
- fun_l16_n511(x)
- else
- fun_l16_n519(x)
- end
-end
-
-def fun_l15_n614(x)
- if (x < 1)
- fun_l16_n96(x)
- else
- fun_l16_n28(x)
- end
-end
-
-def fun_l15_n615(x)
- if (x < 1)
- fun_l16_n166(x)
- else
- fun_l16_n417(x)
- end
-end
-
-def fun_l15_n616(x)
- if (x < 1)
- fun_l16_n666(x)
- else
- fun_l16_n932(x)
- end
-end
-
-def fun_l15_n617(x)
- if (x < 1)
- fun_l16_n745(x)
- else
- fun_l16_n967(x)
- end
-end
-
-def fun_l15_n618(x)
- if (x < 1)
- fun_l16_n5(x)
- else
- fun_l16_n769(x)
- end
-end
-
-def fun_l15_n619(x)
- if (x < 1)
- fun_l16_n108(x)
- else
- fun_l16_n658(x)
- end
-end
-
-def fun_l15_n620(x)
- if (x < 1)
- fun_l16_n454(x)
- else
- fun_l16_n666(x)
- end
-end
-
-def fun_l15_n621(x)
- if (x < 1)
- fun_l16_n756(x)
- else
- fun_l16_n580(x)
- end
-end
-
-def fun_l15_n622(x)
- if (x < 1)
- fun_l16_n419(x)
- else
- fun_l16_n450(x)
- end
-end
-
-def fun_l15_n623(x)
- if (x < 1)
- fun_l16_n793(x)
- else
- fun_l16_n268(x)
- end
-end
-
-def fun_l15_n624(x)
- if (x < 1)
- fun_l16_n78(x)
- else
- fun_l16_n311(x)
- end
-end
-
-def fun_l15_n625(x)
- if (x < 1)
- fun_l16_n35(x)
- else
- fun_l16_n378(x)
- end
-end
-
-def fun_l15_n626(x)
- if (x < 1)
- fun_l16_n974(x)
- else
- fun_l16_n483(x)
- end
-end
-
-def fun_l15_n627(x)
- if (x < 1)
- fun_l16_n67(x)
- else
- fun_l16_n497(x)
- end
-end
-
-def fun_l15_n628(x)
- if (x < 1)
- fun_l16_n640(x)
- else
- fun_l16_n32(x)
- end
-end
-
-def fun_l15_n629(x)
- if (x < 1)
- fun_l16_n297(x)
- else
- fun_l16_n63(x)
- end
-end
-
-def fun_l15_n630(x)
- if (x < 1)
- fun_l16_n546(x)
- else
- fun_l16_n931(x)
- end
-end
-
-def fun_l15_n631(x)
- if (x < 1)
- fun_l16_n688(x)
- else
- fun_l16_n542(x)
- end
-end
-
-def fun_l15_n632(x)
- if (x < 1)
- fun_l16_n313(x)
- else
- fun_l16_n1(x)
- end
-end
-
-def fun_l15_n633(x)
- if (x < 1)
- fun_l16_n743(x)
- else
- fun_l16_n382(x)
- end
-end
-
-def fun_l15_n634(x)
- if (x < 1)
- fun_l16_n224(x)
- else
- fun_l16_n311(x)
- end
-end
-
-def fun_l15_n635(x)
- if (x < 1)
- fun_l16_n926(x)
- else
- fun_l16_n329(x)
- end
-end
-
-def fun_l15_n636(x)
- if (x < 1)
- fun_l16_n735(x)
- else
- fun_l16_n759(x)
- end
-end
-
-def fun_l15_n637(x)
- if (x < 1)
- fun_l16_n699(x)
- else
- fun_l16_n27(x)
- end
-end
-
-def fun_l15_n638(x)
- if (x < 1)
- fun_l16_n710(x)
- else
- fun_l16_n194(x)
- end
-end
-
-def fun_l15_n639(x)
- if (x < 1)
- fun_l16_n245(x)
- else
- fun_l16_n950(x)
- end
-end
-
-def fun_l15_n640(x)
- if (x < 1)
- fun_l16_n488(x)
- else
- fun_l16_n357(x)
- end
-end
-
-def fun_l15_n641(x)
- if (x < 1)
- fun_l16_n331(x)
- else
- fun_l16_n962(x)
- end
-end
-
-def fun_l15_n642(x)
- if (x < 1)
- fun_l16_n144(x)
- else
- fun_l16_n877(x)
- end
-end
-
-def fun_l15_n643(x)
- if (x < 1)
- fun_l16_n605(x)
- else
- fun_l16_n733(x)
- end
-end
-
-def fun_l15_n644(x)
- if (x < 1)
- fun_l16_n22(x)
- else
- fun_l16_n176(x)
- end
-end
-
-def fun_l15_n645(x)
- if (x < 1)
- fun_l16_n934(x)
- else
- fun_l16_n351(x)
- end
-end
-
-def fun_l15_n646(x)
- if (x < 1)
- fun_l16_n224(x)
- else
- fun_l16_n308(x)
- end
-end
-
-def fun_l15_n647(x)
- if (x < 1)
- fun_l16_n374(x)
- else
- fun_l16_n612(x)
- end
-end
-
-def fun_l15_n648(x)
- if (x < 1)
- fun_l16_n105(x)
- else
- fun_l16_n563(x)
- end
-end
-
-def fun_l15_n649(x)
- if (x < 1)
- fun_l16_n955(x)
- else
- fun_l16_n63(x)
- end
-end
-
-def fun_l15_n650(x)
- if (x < 1)
- fun_l16_n734(x)
- else
- fun_l16_n194(x)
- end
-end
-
-def fun_l15_n651(x)
- if (x < 1)
- fun_l16_n237(x)
- else
- fun_l16_n425(x)
- end
-end
-
-def fun_l15_n652(x)
- if (x < 1)
- fun_l16_n135(x)
- else
- fun_l16_n217(x)
- end
-end
-
-def fun_l15_n653(x)
- if (x < 1)
- fun_l16_n565(x)
- else
- fun_l16_n437(x)
- end
-end
-
-def fun_l15_n654(x)
- if (x < 1)
- fun_l16_n471(x)
- else
- fun_l16_n426(x)
- end
-end
-
-def fun_l15_n655(x)
- if (x < 1)
- fun_l16_n570(x)
- else
- fun_l16_n64(x)
- end
-end
-
-def fun_l15_n656(x)
- if (x < 1)
- fun_l16_n456(x)
- else
- fun_l16_n479(x)
- end
-end
-
-def fun_l15_n657(x)
- if (x < 1)
- fun_l16_n446(x)
- else
- fun_l16_n362(x)
- end
-end
-
-def fun_l15_n658(x)
- if (x < 1)
- fun_l16_n294(x)
- else
- fun_l16_n485(x)
- end
-end
-
-def fun_l15_n659(x)
- if (x < 1)
- fun_l16_n96(x)
- else
- fun_l16_n60(x)
- end
-end
-
-def fun_l15_n660(x)
- if (x < 1)
- fun_l16_n436(x)
- else
- fun_l16_n12(x)
- end
-end
-
-def fun_l15_n661(x)
- if (x < 1)
- fun_l16_n5(x)
- else
- fun_l16_n452(x)
- end
-end
-
-def fun_l15_n662(x)
- if (x < 1)
- fun_l16_n70(x)
- else
- fun_l16_n564(x)
- end
-end
-
-def fun_l15_n663(x)
- if (x < 1)
- fun_l16_n92(x)
- else
- fun_l16_n333(x)
- end
-end
-
-def fun_l15_n664(x)
- if (x < 1)
- fun_l16_n884(x)
- else
- fun_l16_n381(x)
- end
-end
-
-def fun_l15_n665(x)
- if (x < 1)
- fun_l16_n816(x)
- else
- fun_l16_n243(x)
- end
-end
-
-def fun_l15_n666(x)
- if (x < 1)
- fun_l16_n680(x)
- else
- fun_l16_n306(x)
- end
-end
-
-def fun_l15_n667(x)
- if (x < 1)
- fun_l16_n470(x)
- else
- fun_l16_n559(x)
- end
-end
-
-def fun_l15_n668(x)
- if (x < 1)
- fun_l16_n34(x)
- else
- fun_l16_n261(x)
- end
-end
-
-def fun_l15_n669(x)
- if (x < 1)
- fun_l16_n644(x)
- else
- fun_l16_n389(x)
- end
-end
-
-def fun_l15_n670(x)
- if (x < 1)
- fun_l16_n313(x)
- else
- fun_l16_n575(x)
- end
-end
-
-def fun_l15_n671(x)
- if (x < 1)
- fun_l16_n241(x)
- else
- fun_l16_n304(x)
- end
-end
-
-def fun_l15_n672(x)
- if (x < 1)
- fun_l16_n280(x)
- else
- fun_l16_n996(x)
- end
-end
-
-def fun_l15_n673(x)
- if (x < 1)
- fun_l16_n723(x)
- else
- fun_l16_n42(x)
- end
-end
-
-def fun_l15_n674(x)
- if (x < 1)
- fun_l16_n503(x)
- else
- fun_l16_n837(x)
- end
-end
-
-def fun_l15_n675(x)
- if (x < 1)
- fun_l16_n105(x)
- else
- fun_l16_n815(x)
- end
-end
-
-def fun_l15_n676(x)
- if (x < 1)
- fun_l16_n441(x)
- else
- fun_l16_n313(x)
- end
-end
-
-def fun_l15_n677(x)
- if (x < 1)
- fun_l16_n277(x)
- else
- fun_l16_n653(x)
- end
-end
-
-def fun_l15_n678(x)
- if (x < 1)
- fun_l16_n105(x)
- else
- fun_l16_n907(x)
- end
-end
-
-def fun_l15_n679(x)
- if (x < 1)
- fun_l16_n549(x)
- else
- fun_l16_n956(x)
- end
-end
-
-def fun_l15_n680(x)
- if (x < 1)
- fun_l16_n177(x)
- else
- fun_l16_n238(x)
- end
-end
-
-def fun_l15_n681(x)
- if (x < 1)
- fun_l16_n931(x)
- else
- fun_l16_n278(x)
- end
-end
-
-def fun_l15_n682(x)
- if (x < 1)
- fun_l16_n923(x)
- else
- fun_l16_n924(x)
- end
-end
-
-def fun_l15_n683(x)
- if (x < 1)
- fun_l16_n926(x)
- else
- fun_l16_n76(x)
- end
-end
-
-def fun_l15_n684(x)
- if (x < 1)
- fun_l16_n828(x)
- else
- fun_l16_n961(x)
- end
-end
-
-def fun_l15_n685(x)
- if (x < 1)
- fun_l16_n298(x)
- else
- fun_l16_n95(x)
- end
-end
-
-def fun_l15_n686(x)
- if (x < 1)
- fun_l16_n929(x)
- else
- fun_l16_n239(x)
- end
-end
-
-def fun_l15_n687(x)
- if (x < 1)
- fun_l16_n488(x)
- else
- fun_l16_n543(x)
- end
-end
-
-def fun_l15_n688(x)
- if (x < 1)
- fun_l16_n562(x)
- else
- fun_l16_n879(x)
- end
-end
-
-def fun_l15_n689(x)
- if (x < 1)
- fun_l16_n348(x)
- else
- fun_l16_n458(x)
- end
-end
-
-def fun_l15_n690(x)
- if (x < 1)
- fun_l16_n431(x)
- else
- fun_l16_n653(x)
- end
-end
-
-def fun_l15_n691(x)
- if (x < 1)
- fun_l16_n173(x)
- else
- fun_l16_n600(x)
- end
-end
-
-def fun_l15_n692(x)
- if (x < 1)
- fun_l16_n820(x)
- else
- fun_l16_n793(x)
- end
-end
-
-def fun_l15_n693(x)
- if (x < 1)
- fun_l16_n611(x)
- else
- fun_l16_n308(x)
- end
-end
-
-def fun_l15_n694(x)
- if (x < 1)
- fun_l16_n325(x)
- else
- fun_l16_n791(x)
- end
-end
-
-def fun_l15_n695(x)
- if (x < 1)
- fun_l16_n890(x)
- else
- fun_l16_n98(x)
- end
-end
-
-def fun_l15_n696(x)
- if (x < 1)
- fun_l16_n803(x)
- else
- fun_l16_n890(x)
- end
-end
-
-def fun_l15_n697(x)
- if (x < 1)
- fun_l16_n182(x)
- else
- fun_l16_n229(x)
- end
-end
-
-def fun_l15_n698(x)
- if (x < 1)
- fun_l16_n238(x)
- else
- fun_l16_n395(x)
- end
-end
-
-def fun_l15_n699(x)
- if (x < 1)
- fun_l16_n349(x)
- else
- fun_l16_n903(x)
- end
-end
-
-def fun_l15_n700(x)
- if (x < 1)
- fun_l16_n328(x)
- else
- fun_l16_n664(x)
- end
-end
-
-def fun_l15_n701(x)
- if (x < 1)
- fun_l16_n924(x)
- else
- fun_l16_n415(x)
- end
-end
-
-def fun_l15_n702(x)
- if (x < 1)
- fun_l16_n504(x)
- else
- fun_l16_n180(x)
- end
-end
-
-def fun_l15_n703(x)
- if (x < 1)
- fun_l16_n754(x)
- else
- fun_l16_n580(x)
- end
-end
-
-def fun_l15_n704(x)
- if (x < 1)
- fun_l16_n686(x)
- else
- fun_l16_n75(x)
- end
-end
-
-def fun_l15_n705(x)
- if (x < 1)
- fun_l16_n295(x)
- else
- fun_l16_n789(x)
- end
-end
-
-def fun_l15_n706(x)
- if (x < 1)
- fun_l16_n796(x)
- else
- fun_l16_n628(x)
- end
-end
-
-def fun_l15_n707(x)
- if (x < 1)
- fun_l16_n603(x)
- else
- fun_l16_n864(x)
- end
-end
-
-def fun_l15_n708(x)
- if (x < 1)
- fun_l16_n420(x)
- else
- fun_l16_n506(x)
- end
-end
-
-def fun_l15_n709(x)
- if (x < 1)
- fun_l16_n417(x)
- else
- fun_l16_n677(x)
- end
-end
-
-def fun_l15_n710(x)
- if (x < 1)
- fun_l16_n484(x)
- else
- fun_l16_n210(x)
- end
-end
-
-def fun_l15_n711(x)
- if (x < 1)
- fun_l16_n127(x)
- else
- fun_l16_n423(x)
- end
-end
-
-def fun_l15_n712(x)
- if (x < 1)
- fun_l16_n395(x)
- else
- fun_l16_n75(x)
- end
-end
-
-def fun_l15_n713(x)
- if (x < 1)
- fun_l16_n388(x)
- else
- fun_l16_n261(x)
- end
-end
-
-def fun_l15_n714(x)
- if (x < 1)
- fun_l16_n508(x)
- else
- fun_l16_n160(x)
- end
-end
-
-def fun_l15_n715(x)
- if (x < 1)
- fun_l16_n468(x)
- else
- fun_l16_n784(x)
- end
-end
-
-def fun_l15_n716(x)
- if (x < 1)
- fun_l16_n156(x)
- else
- fun_l16_n769(x)
- end
-end
-
-def fun_l15_n717(x)
- if (x < 1)
- fun_l16_n219(x)
- else
- fun_l16_n618(x)
- end
-end
-
-def fun_l15_n718(x)
- if (x < 1)
- fun_l16_n921(x)
- else
- fun_l16_n83(x)
- end
-end
-
-def fun_l15_n719(x)
- if (x < 1)
- fun_l16_n262(x)
- else
- fun_l16_n170(x)
- end
-end
-
-def fun_l15_n720(x)
- if (x < 1)
- fun_l16_n420(x)
- else
- fun_l16_n504(x)
- end
-end
-
-def fun_l15_n721(x)
- if (x < 1)
- fun_l16_n485(x)
- else
- fun_l16_n782(x)
- end
-end
-
-def fun_l15_n722(x)
- if (x < 1)
- fun_l16_n607(x)
- else
- fun_l16_n706(x)
- end
-end
-
-def fun_l15_n723(x)
- if (x < 1)
- fun_l16_n116(x)
- else
- fun_l16_n73(x)
- end
-end
-
-def fun_l15_n724(x)
- if (x < 1)
- fun_l16_n946(x)
- else
- fun_l16_n694(x)
- end
-end
-
-def fun_l15_n725(x)
- if (x < 1)
- fun_l16_n73(x)
- else
- fun_l16_n223(x)
- end
-end
-
-def fun_l15_n726(x)
- if (x < 1)
- fun_l16_n54(x)
- else
- fun_l16_n681(x)
- end
-end
-
-def fun_l15_n727(x)
- if (x < 1)
- fun_l16_n474(x)
- else
- fun_l16_n339(x)
- end
-end
-
-def fun_l15_n728(x)
- if (x < 1)
- fun_l16_n780(x)
- else
- fun_l16_n364(x)
- end
-end
-
-def fun_l15_n729(x)
- if (x < 1)
- fun_l16_n537(x)
- else
- fun_l16_n1(x)
- end
-end
-
-def fun_l15_n730(x)
- if (x < 1)
- fun_l16_n81(x)
- else
- fun_l16_n591(x)
- end
-end
-
-def fun_l15_n731(x)
- if (x < 1)
- fun_l16_n631(x)
- else
- fun_l16_n626(x)
- end
-end
-
-def fun_l15_n732(x)
- if (x < 1)
- fun_l16_n904(x)
- else
- fun_l16_n988(x)
- end
-end
-
-def fun_l15_n733(x)
- if (x < 1)
- fun_l16_n933(x)
- else
- fun_l16_n761(x)
- end
-end
-
-def fun_l15_n734(x)
- if (x < 1)
- fun_l16_n687(x)
- else
- fun_l16_n611(x)
- end
-end
-
-def fun_l15_n735(x)
- if (x < 1)
- fun_l16_n197(x)
- else
- fun_l16_n210(x)
- end
-end
-
-def fun_l15_n736(x)
- if (x < 1)
- fun_l16_n227(x)
- else
- fun_l16_n82(x)
- end
-end
-
-def fun_l15_n737(x)
- if (x < 1)
- fun_l16_n981(x)
- else
- fun_l16_n18(x)
- end
-end
-
-def fun_l15_n738(x)
- if (x < 1)
- fun_l16_n673(x)
- else
- fun_l16_n452(x)
- end
-end
-
-def fun_l15_n739(x)
- if (x < 1)
- fun_l16_n225(x)
- else
- fun_l16_n555(x)
- end
-end
-
-def fun_l15_n740(x)
- if (x < 1)
- fun_l16_n409(x)
- else
- fun_l16_n29(x)
- end
-end
-
-def fun_l15_n741(x)
- if (x < 1)
- fun_l16_n550(x)
- else
- fun_l16_n880(x)
- end
-end
-
-def fun_l15_n742(x)
- if (x < 1)
- fun_l16_n930(x)
- else
- fun_l16_n280(x)
- end
-end
-
-def fun_l15_n743(x)
- if (x < 1)
- fun_l16_n622(x)
- else
- fun_l16_n438(x)
- end
-end
-
-def fun_l15_n744(x)
- if (x < 1)
- fun_l16_n874(x)
- else
- fun_l16_n921(x)
- end
-end
-
-def fun_l15_n745(x)
- if (x < 1)
- fun_l16_n337(x)
- else
- fun_l16_n879(x)
- end
-end
-
-def fun_l15_n746(x)
- if (x < 1)
- fun_l16_n668(x)
- else
- fun_l16_n858(x)
- end
-end
-
-def fun_l15_n747(x)
- if (x < 1)
- fun_l16_n588(x)
- else
- fun_l16_n433(x)
- end
-end
-
-def fun_l15_n748(x)
- if (x < 1)
- fun_l16_n263(x)
- else
- fun_l16_n389(x)
- end
-end
-
-def fun_l15_n749(x)
- if (x < 1)
- fun_l16_n79(x)
- else
- fun_l16_n218(x)
- end
-end
-
-def fun_l15_n750(x)
- if (x < 1)
- fun_l16_n586(x)
- else
- fun_l16_n426(x)
- end
-end
-
-def fun_l15_n751(x)
- if (x < 1)
- fun_l16_n29(x)
- else
- fun_l16_n183(x)
- end
-end
-
-def fun_l15_n752(x)
- if (x < 1)
- fun_l16_n423(x)
- else
- fun_l16_n994(x)
- end
-end
-
-def fun_l15_n753(x)
- if (x < 1)
- fun_l16_n176(x)
- else
- fun_l16_n425(x)
- end
-end
-
-def fun_l15_n754(x)
- if (x < 1)
- fun_l16_n58(x)
- else
- fun_l16_n980(x)
- end
-end
-
-def fun_l15_n755(x)
- if (x < 1)
- fun_l16_n333(x)
- else
- fun_l16_n949(x)
- end
-end
-
-def fun_l15_n756(x)
- if (x < 1)
- fun_l16_n846(x)
- else
- fun_l16_n449(x)
- end
-end
-
-def fun_l15_n757(x)
- if (x < 1)
- fun_l16_n341(x)
- else
- fun_l16_n200(x)
- end
-end
-
-def fun_l15_n758(x)
- if (x < 1)
- fun_l16_n32(x)
- else
- fun_l16_n271(x)
- end
-end
-
-def fun_l15_n759(x)
- if (x < 1)
- fun_l16_n654(x)
- else
- fun_l16_n978(x)
- end
-end
-
-def fun_l15_n760(x)
- if (x < 1)
- fun_l16_n438(x)
- else
- fun_l16_n426(x)
- end
-end
-
-def fun_l15_n761(x)
- if (x < 1)
- fun_l16_n218(x)
- else
- fun_l16_n393(x)
- end
-end
-
-def fun_l15_n762(x)
- if (x < 1)
- fun_l16_n873(x)
- else
- fun_l16_n231(x)
- end
-end
-
-def fun_l15_n763(x)
- if (x < 1)
- fun_l16_n957(x)
- else
- fun_l16_n801(x)
- end
-end
-
-def fun_l15_n764(x)
- if (x < 1)
- fun_l16_n571(x)
- else
- fun_l16_n369(x)
- end
-end
-
-def fun_l15_n765(x)
- if (x < 1)
- fun_l16_n806(x)
- else
- fun_l16_n527(x)
- end
-end
-
-def fun_l15_n766(x)
- if (x < 1)
- fun_l16_n511(x)
- else
- fun_l16_n911(x)
- end
-end
-
-def fun_l15_n767(x)
- if (x < 1)
- fun_l16_n589(x)
- else
- fun_l16_n468(x)
- end
-end
-
-def fun_l15_n768(x)
- if (x < 1)
- fun_l16_n846(x)
- else
- fun_l16_n325(x)
- end
-end
-
-def fun_l15_n769(x)
- if (x < 1)
- fun_l16_n350(x)
- else
- fun_l16_n268(x)
- end
-end
-
-def fun_l15_n770(x)
- if (x < 1)
- fun_l16_n200(x)
- else
- fun_l16_n151(x)
- end
-end
-
-def fun_l15_n771(x)
- if (x < 1)
- fun_l16_n246(x)
- else
- fun_l16_n442(x)
- end
-end
-
-def fun_l15_n772(x)
- if (x < 1)
- fun_l16_n768(x)
- else
- fun_l16_n303(x)
- end
-end
-
-def fun_l15_n773(x)
- if (x < 1)
- fun_l16_n414(x)
- else
- fun_l16_n857(x)
- end
-end
-
-def fun_l15_n774(x)
- if (x < 1)
- fun_l16_n654(x)
- else
- fun_l16_n151(x)
- end
-end
-
-def fun_l15_n775(x)
- if (x < 1)
- fun_l16_n283(x)
- else
- fun_l16_n565(x)
- end
-end
-
-def fun_l15_n776(x)
- if (x < 1)
- fun_l16_n375(x)
- else
- fun_l16_n897(x)
- end
-end
-
-def fun_l15_n777(x)
- if (x < 1)
- fun_l16_n711(x)
- else
- fun_l16_n487(x)
- end
-end
-
-def fun_l15_n778(x)
- if (x < 1)
- fun_l16_n445(x)
- else
- fun_l16_n99(x)
- end
-end
-
-def fun_l15_n779(x)
- if (x < 1)
- fun_l16_n320(x)
- else
- fun_l16_n614(x)
- end
-end
-
-def fun_l15_n780(x)
- if (x < 1)
- fun_l16_n330(x)
- else
- fun_l16_n478(x)
- end
-end
-
-def fun_l15_n781(x)
- if (x < 1)
- fun_l16_n680(x)
- else
- fun_l16_n882(x)
- end
-end
-
-def fun_l15_n782(x)
- if (x < 1)
- fun_l16_n799(x)
- else
- fun_l16_n511(x)
- end
-end
-
-def fun_l15_n783(x)
- if (x < 1)
- fun_l16_n630(x)
- else
- fun_l16_n946(x)
- end
-end
-
-def fun_l15_n784(x)
- if (x < 1)
- fun_l16_n867(x)
- else
- fun_l16_n4(x)
- end
-end
-
-def fun_l15_n785(x)
- if (x < 1)
- fun_l16_n154(x)
- else
- fun_l16_n400(x)
- end
-end
-
-def fun_l15_n786(x)
- if (x < 1)
- fun_l16_n166(x)
- else
- fun_l16_n224(x)
- end
-end
-
-def fun_l15_n787(x)
- if (x < 1)
- fun_l16_n120(x)
- else
- fun_l16_n518(x)
- end
-end
-
-def fun_l15_n788(x)
- if (x < 1)
- fun_l16_n648(x)
- else
- fun_l16_n56(x)
- end
-end
-
-def fun_l15_n789(x)
- if (x < 1)
- fun_l16_n965(x)
- else
- fun_l16_n760(x)
- end
-end
-
-def fun_l15_n790(x)
- if (x < 1)
- fun_l16_n880(x)
- else
- fun_l16_n809(x)
- end
-end
-
-def fun_l15_n791(x)
- if (x < 1)
- fun_l16_n836(x)
- else
- fun_l16_n61(x)
- end
-end
-
-def fun_l15_n792(x)
- if (x < 1)
- fun_l16_n874(x)
- else
- fun_l16_n559(x)
- end
-end
-
-def fun_l15_n793(x)
- if (x < 1)
- fun_l16_n896(x)
- else
- fun_l16_n72(x)
- end
-end
-
-def fun_l15_n794(x)
- if (x < 1)
- fun_l16_n994(x)
- else
- fun_l16_n411(x)
- end
-end
-
-def fun_l15_n795(x)
- if (x < 1)
- fun_l16_n289(x)
- else
- fun_l16_n151(x)
- end
-end
-
-def fun_l15_n796(x)
- if (x < 1)
- fun_l16_n190(x)
- else
- fun_l16_n693(x)
- end
-end
-
-def fun_l15_n797(x)
- if (x < 1)
- fun_l16_n320(x)
- else
- fun_l16_n955(x)
- end
-end
-
-def fun_l15_n798(x)
- if (x < 1)
- fun_l16_n572(x)
- else
- fun_l16_n626(x)
- end
-end
-
-def fun_l15_n799(x)
- if (x < 1)
- fun_l16_n35(x)
- else
- fun_l16_n838(x)
- end
-end
-
-def fun_l15_n800(x)
- if (x < 1)
- fun_l16_n423(x)
- else
- fun_l16_n834(x)
- end
-end
-
-def fun_l15_n801(x)
- if (x < 1)
- fun_l16_n964(x)
- else
- fun_l16_n824(x)
- end
-end
-
-def fun_l15_n802(x)
- if (x < 1)
- fun_l16_n77(x)
- else
- fun_l16_n62(x)
- end
-end
-
-def fun_l15_n803(x)
- if (x < 1)
- fun_l16_n226(x)
- else
- fun_l16_n373(x)
- end
-end
-
-def fun_l15_n804(x)
- if (x < 1)
- fun_l16_n832(x)
- else
- fun_l16_n915(x)
- end
-end
-
-def fun_l15_n805(x)
- if (x < 1)
- fun_l16_n421(x)
- else
- fun_l16_n621(x)
- end
-end
-
-def fun_l15_n806(x)
- if (x < 1)
- fun_l16_n303(x)
- else
- fun_l16_n713(x)
- end
-end
-
-def fun_l15_n807(x)
- if (x < 1)
- fun_l16_n393(x)
- else
- fun_l16_n698(x)
- end
-end
-
-def fun_l15_n808(x)
- if (x < 1)
- fun_l16_n303(x)
- else
- fun_l16_n341(x)
- end
-end
-
-def fun_l15_n809(x)
- if (x < 1)
- fun_l16_n116(x)
- else
- fun_l16_n976(x)
- end
-end
-
-def fun_l15_n810(x)
- if (x < 1)
- fun_l16_n873(x)
- else
- fun_l16_n822(x)
- end
-end
-
-def fun_l15_n811(x)
- if (x < 1)
- fun_l16_n358(x)
- else
- fun_l16_n334(x)
- end
-end
-
-def fun_l15_n812(x)
- if (x < 1)
- fun_l16_n599(x)
- else
- fun_l16_n527(x)
- end
-end
-
-def fun_l15_n813(x)
- if (x < 1)
- fun_l16_n842(x)
- else
- fun_l16_n791(x)
- end
-end
-
-def fun_l15_n814(x)
- if (x < 1)
- fun_l16_n45(x)
- else
- fun_l16_n280(x)
- end
-end
-
-def fun_l15_n815(x)
- if (x < 1)
- fun_l16_n187(x)
- else
- fun_l16_n151(x)
- end
-end
-
-def fun_l15_n816(x)
- if (x < 1)
- fun_l16_n8(x)
- else
- fun_l16_n409(x)
- end
-end
-
-def fun_l15_n817(x)
- if (x < 1)
- fun_l16_n670(x)
- else
- fun_l16_n569(x)
- end
-end
-
-def fun_l15_n818(x)
- if (x < 1)
- fun_l16_n344(x)
- else
- fun_l16_n618(x)
- end
-end
-
-def fun_l15_n819(x)
- if (x < 1)
- fun_l16_n659(x)
- else
- fun_l16_n321(x)
- end
-end
-
-def fun_l15_n820(x)
- if (x < 1)
- fun_l16_n890(x)
- else
- fun_l16_n911(x)
- end
-end
-
-def fun_l15_n821(x)
- if (x < 1)
- fun_l16_n360(x)
- else
- fun_l16_n742(x)
- end
-end
-
-def fun_l15_n822(x)
- if (x < 1)
- fun_l16_n166(x)
- else
- fun_l16_n803(x)
- end
-end
-
-def fun_l15_n823(x)
- if (x < 1)
- fun_l16_n765(x)
- else
- fun_l16_n958(x)
- end
-end
-
-def fun_l15_n824(x)
- if (x < 1)
- fun_l16_n439(x)
- else
- fun_l16_n931(x)
- end
-end
-
-def fun_l15_n825(x)
- if (x < 1)
- fun_l16_n740(x)
- else
- fun_l16_n901(x)
- end
-end
-
-def fun_l15_n826(x)
- if (x < 1)
- fun_l16_n223(x)
- else
- fun_l16_n878(x)
- end
-end
-
-def fun_l15_n827(x)
- if (x < 1)
- fun_l16_n969(x)
- else
- fun_l16_n553(x)
- end
-end
-
-def fun_l15_n828(x)
- if (x < 1)
- fun_l16_n42(x)
- else
- fun_l16_n915(x)
- end
-end
-
-def fun_l15_n829(x)
- if (x < 1)
- fun_l16_n386(x)
- else
- fun_l16_n430(x)
- end
-end
-
-def fun_l15_n830(x)
- if (x < 1)
- fun_l16_n164(x)
- else
- fun_l16_n337(x)
- end
-end
-
-def fun_l15_n831(x)
- if (x < 1)
- fun_l16_n465(x)
- else
- fun_l16_n898(x)
- end
-end
-
-def fun_l15_n832(x)
- if (x < 1)
- fun_l16_n145(x)
- else
- fun_l16_n688(x)
- end
-end
-
-def fun_l15_n833(x)
- if (x < 1)
- fun_l16_n238(x)
- else
- fun_l16_n624(x)
- end
-end
-
-def fun_l15_n834(x)
- if (x < 1)
- fun_l16_n973(x)
- else
- fun_l16_n507(x)
- end
-end
-
-def fun_l15_n835(x)
- if (x < 1)
- fun_l16_n24(x)
- else
- fun_l16_n607(x)
- end
-end
-
-def fun_l15_n836(x)
- if (x < 1)
- fun_l16_n307(x)
- else
- fun_l16_n265(x)
- end
-end
-
-def fun_l15_n837(x)
- if (x < 1)
- fun_l16_n91(x)
- else
- fun_l16_n543(x)
- end
-end
-
-def fun_l15_n838(x)
- if (x < 1)
- fun_l16_n544(x)
- else
- fun_l16_n397(x)
- end
-end
-
-def fun_l15_n839(x)
- if (x < 1)
- fun_l16_n121(x)
- else
- fun_l16_n503(x)
- end
-end
-
-def fun_l15_n840(x)
- if (x < 1)
- fun_l16_n806(x)
- else
- fun_l16_n831(x)
- end
-end
-
-def fun_l15_n841(x)
- if (x < 1)
- fun_l16_n629(x)
- else
- fun_l16_n553(x)
- end
-end
-
-def fun_l15_n842(x)
- if (x < 1)
- fun_l16_n674(x)
- else
- fun_l16_n945(x)
- end
-end
-
-def fun_l15_n843(x)
- if (x < 1)
- fun_l16_n409(x)
- else
- fun_l16_n469(x)
- end
-end
-
-def fun_l15_n844(x)
- if (x < 1)
- fun_l16_n779(x)
- else
- fun_l16_n168(x)
- end
-end
-
-def fun_l15_n845(x)
- if (x < 1)
- fun_l16_n258(x)
- else
- fun_l16_n501(x)
- end
-end
-
-def fun_l15_n846(x)
- if (x < 1)
- fun_l16_n408(x)
- else
- fun_l16_n211(x)
- end
-end
-
-def fun_l15_n847(x)
- if (x < 1)
- fun_l16_n844(x)
- else
- fun_l16_n458(x)
- end
-end
-
-def fun_l15_n848(x)
- if (x < 1)
- fun_l16_n565(x)
- else
- fun_l16_n177(x)
- end
-end
-
-def fun_l15_n849(x)
- if (x < 1)
- fun_l16_n111(x)
- else
- fun_l16_n995(x)
- end
-end
-
-def fun_l15_n850(x)
- if (x < 1)
- fun_l16_n883(x)
- else
- fun_l16_n776(x)
- end
-end
-
-def fun_l15_n851(x)
- if (x < 1)
- fun_l16_n821(x)
- else
- fun_l16_n352(x)
- end
-end
-
-def fun_l15_n852(x)
- if (x < 1)
- fun_l16_n977(x)
- else
- fun_l16_n520(x)
- end
-end
-
-def fun_l15_n853(x)
- if (x < 1)
- fun_l16_n602(x)
- else
- fun_l16_n88(x)
- end
-end
-
-def fun_l15_n854(x)
- if (x < 1)
- fun_l16_n819(x)
- else
- fun_l16_n177(x)
- end
-end
-
-def fun_l15_n855(x)
- if (x < 1)
- fun_l16_n878(x)
- else
- fun_l16_n648(x)
- end
-end
-
-def fun_l15_n856(x)
- if (x < 1)
- fun_l16_n69(x)
- else
- fun_l16_n134(x)
- end
-end
-
-def fun_l15_n857(x)
- if (x < 1)
- fun_l16_n728(x)
- else
- fun_l16_n282(x)
- end
-end
-
-def fun_l15_n858(x)
- if (x < 1)
- fun_l16_n152(x)
- else
- fun_l16_n725(x)
- end
-end
-
-def fun_l15_n859(x)
- if (x < 1)
- fun_l16_n140(x)
- else
- fun_l16_n12(x)
- end
-end
-
-def fun_l15_n860(x)
- if (x < 1)
- fun_l16_n691(x)
- else
- fun_l16_n159(x)
- end
-end
-
-def fun_l15_n861(x)
- if (x < 1)
- fun_l16_n366(x)
- else
- fun_l16_n97(x)
- end
-end
-
-def fun_l15_n862(x)
- if (x < 1)
- fun_l16_n812(x)
- else
- fun_l16_n178(x)
- end
-end
-
-def fun_l15_n863(x)
- if (x < 1)
- fun_l16_n491(x)
- else
- fun_l16_n167(x)
- end
-end
-
-def fun_l15_n864(x)
- if (x < 1)
- fun_l16_n280(x)
- else
- fun_l16_n463(x)
- end
-end
-
-def fun_l15_n865(x)
- if (x < 1)
- fun_l16_n405(x)
- else
- fun_l16_n108(x)
- end
-end
-
-def fun_l15_n866(x)
- if (x < 1)
- fun_l16_n956(x)
- else
- fun_l16_n840(x)
- end
-end
-
-def fun_l15_n867(x)
- if (x < 1)
- fun_l16_n866(x)
- else
- fun_l16_n291(x)
- end
-end
-
-def fun_l15_n868(x)
- if (x < 1)
- fun_l16_n176(x)
- else
- fun_l16_n192(x)
- end
-end
-
-def fun_l15_n869(x)
- if (x < 1)
- fun_l16_n833(x)
- else
- fun_l16_n503(x)
- end
-end
-
-def fun_l15_n870(x)
- if (x < 1)
- fun_l16_n648(x)
- else
- fun_l16_n778(x)
- end
-end
-
-def fun_l15_n871(x)
- if (x < 1)
- fun_l16_n237(x)
- else
- fun_l16_n206(x)
- end
-end
-
-def fun_l15_n872(x)
- if (x < 1)
- fun_l16_n676(x)
- else
- fun_l16_n868(x)
- end
-end
-
-def fun_l15_n873(x)
- if (x < 1)
- fun_l16_n547(x)
- else
- fun_l16_n731(x)
- end
-end
-
-def fun_l15_n874(x)
- if (x < 1)
- fun_l16_n870(x)
- else
- fun_l16_n43(x)
- end
-end
-
-def fun_l15_n875(x)
- if (x < 1)
- fun_l16_n246(x)
- else
- fun_l16_n654(x)
- end
-end
-
-def fun_l15_n876(x)
- if (x < 1)
- fun_l16_n570(x)
- else
- fun_l16_n842(x)
- end
-end
-
-def fun_l15_n877(x)
- if (x < 1)
- fun_l16_n272(x)
- else
- fun_l16_n784(x)
- end
-end
-
-def fun_l15_n878(x)
- if (x < 1)
- fun_l16_n702(x)
- else
- fun_l16_n758(x)
- end
-end
-
-def fun_l15_n879(x)
- if (x < 1)
- fun_l16_n691(x)
- else
- fun_l16_n303(x)
- end
-end
-
-def fun_l15_n880(x)
- if (x < 1)
- fun_l16_n944(x)
- else
- fun_l16_n449(x)
- end
-end
-
-def fun_l15_n881(x)
- if (x < 1)
- fun_l16_n741(x)
- else
- fun_l16_n254(x)
- end
-end
-
-def fun_l15_n882(x)
- if (x < 1)
- fun_l16_n195(x)
- else
- fun_l16_n294(x)
- end
-end
-
-def fun_l15_n883(x)
- if (x < 1)
- fun_l16_n776(x)
- else
- fun_l16_n147(x)
- end
-end
-
-def fun_l15_n884(x)
- if (x < 1)
- fun_l16_n145(x)
- else
- fun_l16_n856(x)
- end
-end
-
-def fun_l15_n885(x)
- if (x < 1)
- fun_l16_n671(x)
- else
- fun_l16_n429(x)
- end
-end
-
-def fun_l15_n886(x)
- if (x < 1)
- fun_l16_n72(x)
- else
- fun_l16_n455(x)
- end
-end
-
-def fun_l15_n887(x)
- if (x < 1)
- fun_l16_n775(x)
- else
- fun_l16_n43(x)
- end
-end
-
-def fun_l15_n888(x)
- if (x < 1)
- fun_l16_n936(x)
- else
- fun_l16_n642(x)
- end
-end
-
-def fun_l15_n889(x)
- if (x < 1)
- fun_l16_n794(x)
- else
- fun_l16_n277(x)
- end
-end
-
-def fun_l15_n890(x)
- if (x < 1)
- fun_l16_n72(x)
- else
- fun_l16_n450(x)
- end
-end
-
-def fun_l15_n891(x)
- if (x < 1)
- fun_l16_n417(x)
- else
- fun_l16_n5(x)
- end
-end
-
-def fun_l15_n892(x)
- if (x < 1)
- fun_l16_n69(x)
- else
- fun_l16_n355(x)
- end
-end
-
-def fun_l15_n893(x)
- if (x < 1)
- fun_l16_n352(x)
- else
- fun_l16_n635(x)
- end
-end
-
-def fun_l15_n894(x)
- if (x < 1)
- fun_l16_n168(x)
- else
- fun_l16_n16(x)
- end
-end
-
-def fun_l15_n895(x)
- if (x < 1)
- fun_l16_n922(x)
- else
- fun_l16_n440(x)
- end
-end
-
-def fun_l15_n896(x)
- if (x < 1)
- fun_l16_n808(x)
- else
- fun_l16_n896(x)
- end
-end
-
-def fun_l15_n897(x)
- if (x < 1)
- fun_l16_n736(x)
- else
- fun_l16_n596(x)
- end
-end
-
-def fun_l15_n898(x)
- if (x < 1)
- fun_l16_n886(x)
- else
- fun_l16_n386(x)
- end
-end
-
-def fun_l15_n899(x)
- if (x < 1)
- fun_l16_n374(x)
- else
- fun_l16_n746(x)
- end
-end
-
-def fun_l15_n900(x)
- if (x < 1)
- fun_l16_n623(x)
- else
- fun_l16_n329(x)
- end
-end
-
-def fun_l15_n901(x)
- if (x < 1)
- fun_l16_n313(x)
- else
- fun_l16_n102(x)
- end
-end
-
-def fun_l15_n902(x)
- if (x < 1)
- fun_l16_n234(x)
- else
- fun_l16_n425(x)
- end
-end
-
-def fun_l15_n903(x)
- if (x < 1)
- fun_l16_n836(x)
- else
- fun_l16_n492(x)
- end
-end
-
-def fun_l15_n904(x)
- if (x < 1)
- fun_l16_n690(x)
- else
- fun_l16_n241(x)
- end
-end
-
-def fun_l15_n905(x)
- if (x < 1)
- fun_l16_n129(x)
- else
- fun_l16_n57(x)
- end
-end
-
-def fun_l15_n906(x)
- if (x < 1)
- fun_l16_n50(x)
- else
- fun_l16_n24(x)
- end
-end
-
-def fun_l15_n907(x)
- if (x < 1)
- fun_l16_n609(x)
- else
- fun_l16_n4(x)
- end
-end
-
-def fun_l15_n908(x)
- if (x < 1)
- fun_l16_n483(x)
- else
- fun_l16_n708(x)
- end
-end
-
-def fun_l15_n909(x)
- if (x < 1)
- fun_l16_n656(x)
- else
- fun_l16_n234(x)
- end
-end
-
-def fun_l15_n910(x)
- if (x < 1)
- fun_l16_n945(x)
- else
- fun_l16_n753(x)
- end
-end
-
-def fun_l15_n911(x)
- if (x < 1)
- fun_l16_n152(x)
- else
- fun_l16_n739(x)
- end
-end
-
-def fun_l15_n912(x)
- if (x < 1)
- fun_l16_n855(x)
- else
- fun_l16_n518(x)
- end
-end
-
-def fun_l15_n913(x)
- if (x < 1)
- fun_l16_n295(x)
- else
- fun_l16_n719(x)
- end
-end
-
-def fun_l15_n914(x)
- if (x < 1)
- fun_l16_n442(x)
- else
- fun_l16_n803(x)
- end
-end
-
-def fun_l15_n915(x)
- if (x < 1)
- fun_l16_n672(x)
- else
- fun_l16_n935(x)
- end
-end
-
-def fun_l15_n916(x)
- if (x < 1)
- fun_l16_n908(x)
- else
- fun_l16_n900(x)
- end
-end
-
-def fun_l15_n917(x)
- if (x < 1)
- fun_l16_n853(x)
- else
- fun_l16_n896(x)
- end
-end
-
-def fun_l15_n918(x)
- if (x < 1)
- fun_l16_n90(x)
- else
- fun_l16_n56(x)
- end
-end
-
-def fun_l15_n919(x)
- if (x < 1)
- fun_l16_n944(x)
- else
- fun_l16_n763(x)
- end
-end
-
-def fun_l15_n920(x)
- if (x < 1)
- fun_l16_n303(x)
- else
- fun_l16_n328(x)
- end
-end
-
-def fun_l15_n921(x)
- if (x < 1)
- fun_l16_n599(x)
- else
- fun_l16_n648(x)
- end
-end
-
-def fun_l15_n922(x)
- if (x < 1)
- fun_l16_n113(x)
- else
- fun_l16_n665(x)
- end
-end
-
-def fun_l15_n923(x)
- if (x < 1)
- fun_l16_n97(x)
- else
- fun_l16_n757(x)
- end
-end
-
-def fun_l15_n924(x)
- if (x < 1)
- fun_l16_n815(x)
- else
- fun_l16_n821(x)
- end
-end
-
-def fun_l15_n925(x)
- if (x < 1)
- fun_l16_n146(x)
- else
- fun_l16_n970(x)
- end
-end
-
-def fun_l15_n926(x)
- if (x < 1)
- fun_l16_n74(x)
- else
- fun_l16_n203(x)
- end
-end
-
-def fun_l15_n927(x)
- if (x < 1)
- fun_l16_n573(x)
- else
- fun_l16_n763(x)
- end
-end
-
-def fun_l15_n928(x)
- if (x < 1)
- fun_l16_n656(x)
- else
- fun_l16_n691(x)
- end
-end
-
-def fun_l15_n929(x)
- if (x < 1)
- fun_l16_n240(x)
- else
- fun_l16_n536(x)
- end
-end
-
-def fun_l15_n930(x)
- if (x < 1)
- fun_l16_n168(x)
- else
- fun_l16_n145(x)
- end
-end
-
-def fun_l15_n931(x)
- if (x < 1)
- fun_l16_n502(x)
- else
- fun_l16_n603(x)
- end
-end
-
-def fun_l15_n932(x)
- if (x < 1)
- fun_l16_n998(x)
- else
- fun_l16_n259(x)
- end
-end
-
-def fun_l15_n933(x)
- if (x < 1)
- fun_l16_n633(x)
- else
- fun_l16_n66(x)
- end
-end
-
-def fun_l15_n934(x)
- if (x < 1)
- fun_l16_n657(x)
- else
- fun_l16_n727(x)
- end
-end
-
-def fun_l15_n935(x)
- if (x < 1)
- fun_l16_n641(x)
- else
- fun_l16_n975(x)
- end
-end
-
-def fun_l15_n936(x)
- if (x < 1)
- fun_l16_n610(x)
- else
- fun_l16_n256(x)
- end
-end
-
-def fun_l15_n937(x)
- if (x < 1)
- fun_l16_n760(x)
- else
- fun_l16_n304(x)
- end
-end
-
-def fun_l15_n938(x)
- if (x < 1)
- fun_l16_n395(x)
- else
- fun_l16_n302(x)
- end
-end
-
-def fun_l15_n939(x)
- if (x < 1)
- fun_l16_n810(x)
- else
- fun_l16_n549(x)
- end
-end
-
-def fun_l15_n940(x)
- if (x < 1)
- fun_l16_n452(x)
- else
- fun_l16_n914(x)
- end
-end
-
-def fun_l15_n941(x)
- if (x < 1)
- fun_l16_n472(x)
- else
- fun_l16_n328(x)
- end
-end
-
-def fun_l15_n942(x)
- if (x < 1)
- fun_l16_n886(x)
- else
- fun_l16_n535(x)
- end
-end
-
-def fun_l15_n943(x)
- if (x < 1)
- fun_l16_n162(x)
- else
- fun_l16_n449(x)
- end
-end
-
-def fun_l15_n944(x)
- if (x < 1)
- fun_l16_n152(x)
- else
- fun_l16_n790(x)
- end
-end
-
-def fun_l15_n945(x)
- if (x < 1)
- fun_l16_n228(x)
- else
- fun_l16_n391(x)
- end
-end
-
-def fun_l15_n946(x)
- if (x < 1)
- fun_l16_n115(x)
- else
- fun_l16_n371(x)
- end
-end
-
-def fun_l15_n947(x)
- if (x < 1)
- fun_l16_n359(x)
- else
- fun_l16_n928(x)
- end
-end
-
-def fun_l15_n948(x)
- if (x < 1)
- fun_l16_n246(x)
- else
- fun_l16_n907(x)
- end
-end
-
-def fun_l15_n949(x)
- if (x < 1)
- fun_l16_n448(x)
- else
- fun_l16_n845(x)
- end
-end
-
-def fun_l15_n950(x)
- if (x < 1)
- fun_l16_n457(x)
- else
- fun_l16_n954(x)
- end
-end
-
-def fun_l15_n951(x)
- if (x < 1)
- fun_l16_n627(x)
- else
- fun_l16_n684(x)
- end
-end
-
-def fun_l15_n952(x)
- if (x < 1)
- fun_l16_n887(x)
- else
- fun_l16_n928(x)
- end
-end
-
-def fun_l15_n953(x)
- if (x < 1)
- fun_l16_n782(x)
- else
- fun_l16_n619(x)
- end
-end
-
-def fun_l15_n954(x)
- if (x < 1)
- fun_l16_n436(x)
- else
- fun_l16_n745(x)
- end
-end
-
-def fun_l15_n955(x)
- if (x < 1)
- fun_l16_n9(x)
- else
- fun_l16_n604(x)
- end
-end
-
-def fun_l15_n956(x)
- if (x < 1)
- fun_l16_n149(x)
- else
- fun_l16_n357(x)
- end
-end
-
-def fun_l15_n957(x)
- if (x < 1)
- fun_l16_n664(x)
- else
- fun_l16_n371(x)
- end
-end
-
-def fun_l15_n958(x)
- if (x < 1)
- fun_l16_n236(x)
- else
- fun_l16_n402(x)
- end
-end
-
-def fun_l15_n959(x)
- if (x < 1)
- fun_l16_n681(x)
- else
- fun_l16_n410(x)
- end
-end
-
-def fun_l15_n960(x)
- if (x < 1)
- fun_l16_n909(x)
- else
- fun_l16_n958(x)
- end
-end
-
-def fun_l15_n961(x)
- if (x < 1)
- fun_l16_n400(x)
- else
- fun_l16_n497(x)
- end
-end
-
-def fun_l15_n962(x)
- if (x < 1)
- fun_l16_n949(x)
- else
- fun_l16_n794(x)
- end
-end
-
-def fun_l15_n963(x)
- if (x < 1)
- fun_l16_n774(x)
- else
- fun_l16_n770(x)
- end
-end
-
-def fun_l15_n964(x)
- if (x < 1)
- fun_l16_n573(x)
- else
- fun_l16_n73(x)
- end
-end
-
-def fun_l15_n965(x)
- if (x < 1)
- fun_l16_n33(x)
- else
- fun_l16_n978(x)
- end
-end
-
-def fun_l15_n966(x)
- if (x < 1)
- fun_l16_n8(x)
- else
- fun_l16_n542(x)
- end
-end
-
-def fun_l15_n967(x)
- if (x < 1)
- fun_l16_n780(x)
- else
- fun_l16_n96(x)
- end
-end
-
-def fun_l15_n968(x)
- if (x < 1)
- fun_l16_n75(x)
- else
- fun_l16_n560(x)
- end
-end
-
-def fun_l15_n969(x)
- if (x < 1)
- fun_l16_n950(x)
- else
- fun_l16_n610(x)
- end
-end
-
-def fun_l15_n970(x)
- if (x < 1)
- fun_l16_n254(x)
- else
- fun_l16_n2(x)
- end
-end
-
-def fun_l15_n971(x)
- if (x < 1)
- fun_l16_n793(x)
- else
- fun_l16_n89(x)
- end
-end
-
-def fun_l15_n972(x)
- if (x < 1)
- fun_l16_n409(x)
- else
- fun_l16_n967(x)
- end
-end
-
-def fun_l15_n973(x)
- if (x < 1)
- fun_l16_n356(x)
- else
- fun_l16_n421(x)
- end
-end
-
-def fun_l15_n974(x)
- if (x < 1)
- fun_l16_n539(x)
- else
- fun_l16_n997(x)
- end
-end
-
-def fun_l15_n975(x)
- if (x < 1)
- fun_l16_n772(x)
- else
- fun_l16_n304(x)
- end
-end
-
-def fun_l15_n976(x)
- if (x < 1)
- fun_l16_n228(x)
- else
- fun_l16_n420(x)
- end
-end
-
-def fun_l15_n977(x)
- if (x < 1)
- fun_l16_n508(x)
- else
- fun_l16_n352(x)
- end
-end
-
-def fun_l15_n978(x)
- if (x < 1)
- fun_l16_n878(x)
- else
- fun_l16_n316(x)
- end
-end
-
-def fun_l15_n979(x)
- if (x < 1)
- fun_l16_n279(x)
- else
- fun_l16_n325(x)
- end
-end
-
-def fun_l15_n980(x)
- if (x < 1)
- fun_l16_n98(x)
- else
- fun_l16_n10(x)
- end
-end
-
-def fun_l15_n981(x)
- if (x < 1)
- fun_l16_n320(x)
- else
- fun_l16_n578(x)
- end
-end
-
-def fun_l15_n982(x)
- if (x < 1)
- fun_l16_n112(x)
- else
- fun_l16_n353(x)
- end
-end
-
-def fun_l15_n983(x)
- if (x < 1)
- fun_l16_n579(x)
- else
- fun_l16_n946(x)
- end
-end
-
-def fun_l15_n984(x)
- if (x < 1)
- fun_l16_n183(x)
- else
- fun_l16_n638(x)
- end
-end
-
-def fun_l15_n985(x)
- if (x < 1)
- fun_l16_n500(x)
- else
- fun_l16_n11(x)
- end
-end
-
-def fun_l15_n986(x)
- if (x < 1)
- fun_l16_n773(x)
- else
- fun_l16_n135(x)
- end
-end
-
-def fun_l15_n987(x)
- if (x < 1)
- fun_l16_n997(x)
- else
- fun_l16_n645(x)
- end
-end
-
-def fun_l15_n988(x)
- if (x < 1)
- fun_l16_n392(x)
- else
- fun_l16_n172(x)
- end
-end
-
-def fun_l15_n989(x)
- if (x < 1)
- fun_l16_n150(x)
- else
- fun_l16_n163(x)
- end
-end
-
-def fun_l15_n990(x)
- if (x < 1)
- fun_l16_n351(x)
- else
- fun_l16_n297(x)
- end
-end
-
-def fun_l15_n991(x)
- if (x < 1)
- fun_l16_n676(x)
- else
- fun_l16_n31(x)
- end
-end
-
-def fun_l15_n992(x)
- if (x < 1)
- fun_l16_n257(x)
- else
- fun_l16_n45(x)
- end
-end
-
-def fun_l15_n993(x)
- if (x < 1)
- fun_l16_n971(x)
- else
- fun_l16_n60(x)
- end
-end
-
-def fun_l15_n994(x)
- if (x < 1)
- fun_l16_n472(x)
- else
- fun_l16_n774(x)
- end
-end
-
-def fun_l15_n995(x)
- if (x < 1)
- fun_l16_n559(x)
- else
- fun_l16_n605(x)
- end
-end
-
-def fun_l15_n996(x)
- if (x < 1)
- fun_l16_n122(x)
- else
- fun_l16_n695(x)
- end
-end
-
-def fun_l15_n997(x)
- if (x < 1)
- fun_l16_n118(x)
- else
- fun_l16_n613(x)
- end
-end
-
-def fun_l15_n998(x)
- if (x < 1)
- fun_l16_n973(x)
- else
- fun_l16_n193(x)
- end
-end
-
-def fun_l15_n999(x)
- if (x < 1)
- fun_l16_n652(x)
- else
- fun_l16_n658(x)
- end
-end
-
-def fun_l16_n0(x)
- if (x < 1)
- fun_l17_n352(x)
- else
- fun_l17_n155(x)
- end
-end
-
-def fun_l16_n1(x)
- if (x < 1)
- fun_l17_n786(x)
- else
- fun_l17_n961(x)
- end
-end
-
-def fun_l16_n2(x)
- if (x < 1)
- fun_l17_n760(x)
- else
- fun_l17_n629(x)
- end
-end
-
-def fun_l16_n3(x)
- if (x < 1)
- fun_l17_n788(x)
- else
- fun_l17_n70(x)
- end
-end
-
-def fun_l16_n4(x)
- if (x < 1)
- fun_l17_n116(x)
- else
- fun_l17_n616(x)
- end
-end
-
-def fun_l16_n5(x)
- if (x < 1)
- fun_l17_n470(x)
- else
- fun_l17_n859(x)
- end
-end
-
-def fun_l16_n6(x)
- if (x < 1)
- fun_l17_n830(x)
- else
- fun_l17_n987(x)
- end
-end
-
-def fun_l16_n7(x)
- if (x < 1)
- fun_l17_n339(x)
- else
- fun_l17_n284(x)
- end
-end
-
-def fun_l16_n8(x)
- if (x < 1)
- fun_l17_n677(x)
- else
- fun_l17_n77(x)
- end
-end
-
-def fun_l16_n9(x)
- if (x < 1)
- fun_l17_n7(x)
- else
- fun_l17_n159(x)
- end
-end
-
-def fun_l16_n10(x)
- if (x < 1)
- fun_l17_n275(x)
- else
- fun_l17_n37(x)
- end
-end
-
-def fun_l16_n11(x)
- if (x < 1)
- fun_l17_n406(x)
- else
- fun_l17_n588(x)
- end
-end
-
-def fun_l16_n12(x)
- if (x < 1)
- fun_l17_n132(x)
- else
- fun_l17_n208(x)
- end
-end
-
-def fun_l16_n13(x)
- if (x < 1)
- fun_l17_n87(x)
- else
- fun_l17_n850(x)
- end
-end
-
-def fun_l16_n14(x)
- if (x < 1)
- fun_l17_n965(x)
- else
- fun_l17_n106(x)
- end
-end
-
-def fun_l16_n15(x)
- if (x < 1)
- fun_l17_n176(x)
- else
- fun_l17_n966(x)
- end
-end
-
-def fun_l16_n16(x)
- if (x < 1)
- fun_l17_n825(x)
- else
- fun_l17_n815(x)
- end
-end
-
-def fun_l16_n17(x)
- if (x < 1)
- fun_l17_n939(x)
- else
- fun_l17_n591(x)
- end
-end
-
-def fun_l16_n18(x)
- if (x < 1)
- fun_l17_n166(x)
- else
- fun_l17_n732(x)
- end
-end
-
-def fun_l16_n19(x)
- if (x < 1)
- fun_l17_n471(x)
- else
- fun_l17_n175(x)
- end
-end
-
-def fun_l16_n20(x)
- if (x < 1)
- fun_l17_n887(x)
- else
- fun_l17_n304(x)
- end
-end
-
-def fun_l16_n21(x)
- if (x < 1)
- fun_l17_n545(x)
- else
- fun_l17_n221(x)
- end
-end
-
-def fun_l16_n22(x)
- if (x < 1)
- fun_l17_n879(x)
- else
- fun_l17_n143(x)
- end
-end
-
-def fun_l16_n23(x)
- if (x < 1)
- fun_l17_n732(x)
- else
- fun_l17_n902(x)
- end
-end
-
-def fun_l16_n24(x)
- if (x < 1)
- fun_l17_n490(x)
- else
- fun_l17_n327(x)
- end
-end
-
-def fun_l16_n25(x)
- if (x < 1)
- fun_l17_n588(x)
- else
- fun_l17_n658(x)
- end
-end
-
-def fun_l16_n26(x)
- if (x < 1)
- fun_l17_n555(x)
- else
- fun_l17_n507(x)
- end
-end
-
-def fun_l16_n27(x)
- if (x < 1)
- fun_l17_n228(x)
- else
- fun_l17_n808(x)
- end
-end
-
-def fun_l16_n28(x)
- if (x < 1)
- fun_l17_n705(x)
- else
- fun_l17_n696(x)
- end
-end
-
-def fun_l16_n29(x)
- if (x < 1)
- fun_l17_n711(x)
- else
- fun_l17_n913(x)
- end
-end
-
-def fun_l16_n30(x)
- if (x < 1)
- fun_l17_n264(x)
- else
- fun_l17_n287(x)
- end
-end
-
-def fun_l16_n31(x)
- if (x < 1)
- fun_l17_n624(x)
- else
- fun_l17_n358(x)
- end
-end
-
-def fun_l16_n32(x)
- if (x < 1)
- fun_l17_n102(x)
- else
- fun_l17_n303(x)
- end
-end
-
-def fun_l16_n33(x)
- if (x < 1)
- fun_l17_n613(x)
- else
- fun_l17_n921(x)
- end
-end
-
-def fun_l16_n34(x)
- if (x < 1)
- fun_l17_n637(x)
- else
- fun_l17_n142(x)
- end
-end
-
-def fun_l16_n35(x)
- if (x < 1)
- fun_l17_n8(x)
- else
- fun_l17_n752(x)
- end
-end
-
-def fun_l16_n36(x)
- if (x < 1)
- fun_l17_n748(x)
- else
- fun_l17_n956(x)
- end
-end
-
-def fun_l16_n37(x)
- if (x < 1)
- fun_l17_n985(x)
- else
- fun_l17_n133(x)
- end
-end
-
-def fun_l16_n38(x)
- if (x < 1)
- fun_l17_n422(x)
- else
- fun_l17_n608(x)
- end
-end
-
-def fun_l16_n39(x)
- if (x < 1)
- fun_l17_n455(x)
- else
- fun_l17_n247(x)
- end
-end
-
-def fun_l16_n40(x)
- if (x < 1)
- fun_l17_n363(x)
- else
- fun_l17_n874(x)
- end
-end
-
-def fun_l16_n41(x)
- if (x < 1)
- fun_l17_n299(x)
- else
- fun_l17_n971(x)
- end
-end
-
-def fun_l16_n42(x)
- if (x < 1)
- fun_l17_n788(x)
- else
- fun_l17_n535(x)
- end
-end
-
-def fun_l16_n43(x)
- if (x < 1)
- fun_l17_n282(x)
- else
- fun_l17_n468(x)
- end
-end
-
-def fun_l16_n44(x)
- if (x < 1)
- fun_l17_n493(x)
- else
- fun_l17_n931(x)
- end
-end
-
-def fun_l16_n45(x)
- if (x < 1)
- fun_l17_n750(x)
- else
- fun_l17_n725(x)
- end
-end
-
-def fun_l16_n46(x)
- if (x < 1)
- fun_l17_n227(x)
- else
- fun_l17_n769(x)
- end
-end
-
-def fun_l16_n47(x)
- if (x < 1)
- fun_l17_n348(x)
- else
- fun_l17_n83(x)
- end
-end
-
-def fun_l16_n48(x)
- if (x < 1)
- fun_l17_n624(x)
- else
- fun_l17_n398(x)
- end
-end
-
-def fun_l16_n49(x)
- if (x < 1)
- fun_l17_n645(x)
- else
- fun_l17_n645(x)
- end
-end
-
-def fun_l16_n50(x)
- if (x < 1)
- fun_l17_n191(x)
- else
- fun_l17_n256(x)
- end
-end
-
-def fun_l16_n51(x)
- if (x < 1)
- fun_l17_n947(x)
- else
- fun_l17_n188(x)
- end
-end
-
-def fun_l16_n52(x)
- if (x < 1)
- fun_l17_n135(x)
- else
- fun_l17_n923(x)
- end
-end
-
-def fun_l16_n53(x)
- if (x < 1)
- fun_l17_n867(x)
- else
- fun_l17_n520(x)
- end
-end
-
-def fun_l16_n54(x)
- if (x < 1)
- fun_l17_n450(x)
- else
- fun_l17_n864(x)
- end
-end
-
-def fun_l16_n55(x)
- if (x < 1)
- fun_l17_n116(x)
- else
- fun_l17_n370(x)
- end
-end
-
-def fun_l16_n56(x)
- if (x < 1)
- fun_l17_n754(x)
- else
- fun_l17_n919(x)
- end
-end
-
-def fun_l16_n57(x)
- if (x < 1)
- fun_l17_n360(x)
- else
- fun_l17_n513(x)
- end
-end
-
-def fun_l16_n58(x)
- if (x < 1)
- fun_l17_n436(x)
- else
- fun_l17_n618(x)
- end
-end
-
-def fun_l16_n59(x)
- if (x < 1)
- fun_l17_n795(x)
- else
- fun_l17_n851(x)
- end
-end
-
-def fun_l16_n60(x)
- if (x < 1)
- fun_l17_n624(x)
- else
- fun_l17_n305(x)
- end
-end
-
-def fun_l16_n61(x)
- if (x < 1)
- fun_l17_n520(x)
- else
- fun_l17_n360(x)
- end
-end
-
-def fun_l16_n62(x)
- if (x < 1)
- fun_l17_n297(x)
- else
- fun_l17_n218(x)
- end
-end
-
-def fun_l16_n63(x)
- if (x < 1)
- fun_l17_n116(x)
- else
- fun_l17_n888(x)
- end
-end
-
-def fun_l16_n64(x)
- if (x < 1)
- fun_l17_n800(x)
- else
- fun_l17_n985(x)
- end
-end
-
-def fun_l16_n65(x)
- if (x < 1)
- fun_l17_n875(x)
- else
- fun_l17_n821(x)
- end
-end
-
-def fun_l16_n66(x)
- if (x < 1)
- fun_l17_n677(x)
- else
- fun_l17_n705(x)
- end
-end
-
-def fun_l16_n67(x)
- if (x < 1)
- fun_l17_n643(x)
- else
- fun_l17_n240(x)
- end
-end
-
-def fun_l16_n68(x)
- if (x < 1)
- fun_l17_n290(x)
- else
- fun_l17_n885(x)
- end
-end
-
-def fun_l16_n69(x)
- if (x < 1)
- fun_l17_n987(x)
- else
- fun_l17_n611(x)
- end
-end
-
-def fun_l16_n70(x)
- if (x < 1)
- fun_l17_n546(x)
- else
- fun_l17_n95(x)
- end
-end
-
-def fun_l16_n71(x)
- if (x < 1)
- fun_l17_n301(x)
- else
- fun_l17_n260(x)
- end
-end
-
-def fun_l16_n72(x)
- if (x < 1)
- fun_l17_n118(x)
- else
- fun_l17_n110(x)
- end
-end
-
-def fun_l16_n73(x)
- if (x < 1)
- fun_l17_n254(x)
- else
- fun_l17_n602(x)
- end
-end
-
-def fun_l16_n74(x)
- if (x < 1)
- fun_l17_n725(x)
- else
- fun_l17_n606(x)
- end
-end
-
-def fun_l16_n75(x)
- if (x < 1)
- fun_l17_n114(x)
- else
- fun_l17_n336(x)
- end
-end
-
-def fun_l16_n76(x)
- if (x < 1)
- fun_l17_n930(x)
- else
- fun_l17_n513(x)
- end
-end
-
-def fun_l16_n77(x)
- if (x < 1)
- fun_l17_n217(x)
- else
- fun_l17_n158(x)
- end
-end
-
-def fun_l16_n78(x)
- if (x < 1)
- fun_l17_n987(x)
- else
- fun_l17_n538(x)
- end
-end
-
-def fun_l16_n79(x)
- if (x < 1)
- fun_l17_n467(x)
- else
- fun_l17_n675(x)
- end
-end
-
-def fun_l16_n80(x)
- if (x < 1)
- fun_l17_n553(x)
- else
- fun_l17_n77(x)
- end
-end
-
-def fun_l16_n81(x)
- if (x < 1)
- fun_l17_n643(x)
- else
- fun_l17_n156(x)
- end
-end
-
-def fun_l16_n82(x)
- if (x < 1)
- fun_l17_n858(x)
- else
- fun_l17_n300(x)
- end
-end
-
-def fun_l16_n83(x)
- if (x < 1)
- fun_l17_n136(x)
- else
- fun_l17_n637(x)
- end
-end
-
-def fun_l16_n84(x)
- if (x < 1)
- fun_l17_n71(x)
- else
- fun_l17_n979(x)
- end
-end
-
-def fun_l16_n85(x)
- if (x < 1)
- fun_l17_n135(x)
- else
- fun_l17_n893(x)
- end
-end
-
-def fun_l16_n86(x)
- if (x < 1)
- fun_l17_n734(x)
- else
- fun_l17_n254(x)
- end
-end
-
-def fun_l16_n87(x)
- if (x < 1)
- fun_l17_n809(x)
- else
- fun_l17_n475(x)
- end
-end
-
-def fun_l16_n88(x)
- if (x < 1)
- fun_l17_n931(x)
- else
- fun_l17_n110(x)
- end
-end
-
-def fun_l16_n89(x)
- if (x < 1)
- fun_l17_n957(x)
- else
- fun_l17_n489(x)
- end
-end
-
-def fun_l16_n90(x)
- if (x < 1)
- fun_l17_n145(x)
- else
- fun_l17_n861(x)
- end
-end
-
-def fun_l16_n91(x)
- if (x < 1)
- fun_l17_n276(x)
- else
- fun_l17_n967(x)
- end
-end
-
-def fun_l16_n92(x)
- if (x < 1)
- fun_l17_n657(x)
- else
- fun_l17_n638(x)
- end
-end
-
-def fun_l16_n93(x)
- if (x < 1)
- fun_l17_n714(x)
- else
- fun_l17_n52(x)
- end
-end
-
-def fun_l16_n94(x)
- if (x < 1)
- fun_l17_n487(x)
- else
- fun_l17_n380(x)
- end
-end
-
-def fun_l16_n95(x)
- if (x < 1)
- fun_l17_n58(x)
- else
- fun_l17_n67(x)
- end
-end
-
-def fun_l16_n96(x)
- if (x < 1)
- fun_l17_n9(x)
- else
- fun_l17_n896(x)
- end
-end
-
-def fun_l16_n97(x)
- if (x < 1)
- fun_l17_n723(x)
- else
- fun_l17_n16(x)
- end
-end
-
-def fun_l16_n98(x)
- if (x < 1)
- fun_l17_n143(x)
- else
- fun_l17_n31(x)
- end
-end
-
-def fun_l16_n99(x)
- if (x < 1)
- fun_l17_n33(x)
- else
- fun_l17_n615(x)
- end
-end
-
-def fun_l16_n100(x)
- if (x < 1)
- fun_l17_n318(x)
- else
- fun_l17_n83(x)
- end
-end
-
-def fun_l16_n101(x)
- if (x < 1)
- fun_l17_n694(x)
- else
- fun_l17_n851(x)
- end
-end
-
-def fun_l16_n102(x)
- if (x < 1)
- fun_l17_n31(x)
- else
- fun_l17_n881(x)
- end
-end
-
-def fun_l16_n103(x)
- if (x < 1)
- fun_l17_n739(x)
- else
- fun_l17_n680(x)
- end
-end
-
-def fun_l16_n104(x)
- if (x < 1)
- fun_l17_n123(x)
- else
- fun_l17_n969(x)
- end
-end
-
-def fun_l16_n105(x)
- if (x < 1)
- fun_l17_n526(x)
- else
- fun_l17_n529(x)
- end
-end
-
-def fun_l16_n106(x)
- if (x < 1)
- fun_l17_n613(x)
- else
- fun_l17_n738(x)
- end
-end
-
-def fun_l16_n107(x)
- if (x < 1)
- fun_l17_n48(x)
- else
- fun_l17_n107(x)
- end
-end
-
-def fun_l16_n108(x)
- if (x < 1)
- fun_l17_n493(x)
- else
- fun_l17_n875(x)
- end
-end
-
-def fun_l16_n109(x)
- if (x < 1)
- fun_l17_n101(x)
- else
- fun_l17_n295(x)
- end
-end
-
-def fun_l16_n110(x)
- if (x < 1)
- fun_l17_n257(x)
- else
- fun_l17_n132(x)
- end
-end
-
-def fun_l16_n111(x)
- if (x < 1)
- fun_l17_n702(x)
- else
- fun_l17_n635(x)
- end
-end
-
-def fun_l16_n112(x)
- if (x < 1)
- fun_l17_n193(x)
- else
- fun_l17_n931(x)
- end
-end
-
-def fun_l16_n113(x)
- if (x < 1)
- fun_l17_n973(x)
- else
- fun_l17_n708(x)
- end
-end
-
-def fun_l16_n114(x)
- if (x < 1)
- fun_l17_n110(x)
- else
- fun_l17_n247(x)
- end
-end
-
-def fun_l16_n115(x)
- if (x < 1)
- fun_l17_n769(x)
- else
- fun_l17_n872(x)
- end
-end
-
-def fun_l16_n116(x)
- if (x < 1)
- fun_l17_n63(x)
- else
- fun_l17_n90(x)
- end
-end
-
-def fun_l16_n117(x)
- if (x < 1)
- fun_l17_n392(x)
- else
- fun_l17_n3(x)
- end
-end
-
-def fun_l16_n118(x)
- if (x < 1)
- fun_l17_n73(x)
- else
- fun_l17_n354(x)
- end
-end
-
-def fun_l16_n119(x)
- if (x < 1)
- fun_l17_n173(x)
- else
- fun_l17_n573(x)
- end
-end
-
-def fun_l16_n120(x)
- if (x < 1)
- fun_l17_n481(x)
- else
- fun_l17_n571(x)
- end
-end
-
-def fun_l16_n121(x)
- if (x < 1)
- fun_l17_n838(x)
- else
- fun_l17_n736(x)
- end
-end
-
-def fun_l16_n122(x)
- if (x < 1)
- fun_l17_n400(x)
- else
- fun_l17_n169(x)
- end
-end
-
-def fun_l16_n123(x)
- if (x < 1)
- fun_l17_n806(x)
- else
- fun_l17_n954(x)
- end
-end
-
-def fun_l16_n124(x)
- if (x < 1)
- fun_l17_n328(x)
- else
- fun_l17_n200(x)
- end
-end
-
-def fun_l16_n125(x)
- if (x < 1)
- fun_l17_n388(x)
- else
- fun_l17_n875(x)
- end
-end
-
-def fun_l16_n126(x)
- if (x < 1)
- fun_l17_n178(x)
- else
- fun_l17_n122(x)
- end
-end
-
-def fun_l16_n127(x)
- if (x < 1)
- fun_l17_n974(x)
- else
- fun_l17_n490(x)
- end
-end
-
-def fun_l16_n128(x)
- if (x < 1)
- fun_l17_n731(x)
- else
- fun_l17_n807(x)
- end
-end
-
-def fun_l16_n129(x)
- if (x < 1)
- fun_l17_n939(x)
- else
- fun_l17_n532(x)
- end
-end
-
-def fun_l16_n130(x)
- if (x < 1)
- fun_l17_n482(x)
- else
- fun_l17_n926(x)
- end
-end
-
-def fun_l16_n131(x)
- if (x < 1)
- fun_l17_n884(x)
- else
- fun_l17_n179(x)
- end
-end
-
-def fun_l16_n132(x)
- if (x < 1)
- fun_l17_n683(x)
- else
- fun_l17_n24(x)
- end
-end
-
-def fun_l16_n133(x)
- if (x < 1)
- fun_l17_n968(x)
- else
- fun_l17_n536(x)
- end
-end
-
-def fun_l16_n134(x)
- if (x < 1)
- fun_l17_n229(x)
- else
- fun_l17_n280(x)
- end
-end
-
-def fun_l16_n135(x)
- if (x < 1)
- fun_l17_n47(x)
- else
- fun_l17_n12(x)
- end
-end
-
-def fun_l16_n136(x)
- if (x < 1)
- fun_l17_n905(x)
- else
- fun_l17_n461(x)
- end
-end
-
-def fun_l16_n137(x)
- if (x < 1)
- fun_l17_n992(x)
- else
- fun_l17_n294(x)
- end
-end
-
-def fun_l16_n138(x)
- if (x < 1)
- fun_l17_n383(x)
- else
- fun_l17_n916(x)
- end
-end
-
-def fun_l16_n139(x)
- if (x < 1)
- fun_l17_n116(x)
- else
- fun_l17_n96(x)
- end
-end
-
-def fun_l16_n140(x)
- if (x < 1)
- fun_l17_n702(x)
- else
- fun_l17_n294(x)
- end
-end
-
-def fun_l16_n141(x)
- if (x < 1)
- fun_l17_n528(x)
- else
- fun_l17_n650(x)
- end
-end
-
-def fun_l16_n142(x)
- if (x < 1)
- fun_l17_n341(x)
- else
- fun_l17_n168(x)
- end
-end
-
-def fun_l16_n143(x)
- if (x < 1)
- fun_l17_n85(x)
- else
- fun_l17_n384(x)
- end
-end
-
-def fun_l16_n144(x)
- if (x < 1)
- fun_l17_n738(x)
- else
- fun_l17_n842(x)
- end
-end
-
-def fun_l16_n145(x)
- if (x < 1)
- fun_l17_n359(x)
- else
- fun_l17_n691(x)
- end
-end
-
-def fun_l16_n146(x)
- if (x < 1)
- fun_l17_n465(x)
- else
- fun_l17_n310(x)
- end
-end
-
-def fun_l16_n147(x)
- if (x < 1)
- fun_l17_n610(x)
- else
- fun_l17_n133(x)
- end
-end
-
-def fun_l16_n148(x)
- if (x < 1)
- fun_l17_n829(x)
- else
- fun_l17_n449(x)
- end
-end
-
-def fun_l16_n149(x)
- if (x < 1)
- fun_l17_n319(x)
- else
- fun_l17_n875(x)
- end
-end
-
-def fun_l16_n150(x)
- if (x < 1)
- fun_l17_n493(x)
- else
- fun_l17_n39(x)
- end
-end
-
-def fun_l16_n151(x)
- if (x < 1)
- fun_l17_n801(x)
- else
- fun_l17_n294(x)
- end
-end
-
-def fun_l16_n152(x)
- if (x < 1)
- fun_l17_n39(x)
- else
- fun_l17_n113(x)
- end
-end
-
-def fun_l16_n153(x)
- if (x < 1)
- fun_l17_n299(x)
- else
- fun_l17_n560(x)
- end
-end
-
-def fun_l16_n154(x)
- if (x < 1)
- fun_l17_n220(x)
- else
- fun_l17_n485(x)
- end
-end
-
-def fun_l16_n155(x)
- if (x < 1)
- fun_l17_n219(x)
- else
- fun_l17_n210(x)
- end
-end
-
-def fun_l16_n156(x)
- if (x < 1)
- fun_l17_n44(x)
- else
- fun_l17_n394(x)
- end
-end
-
-def fun_l16_n157(x)
- if (x < 1)
- fun_l17_n858(x)
- else
- fun_l17_n9(x)
- end
-end
-
-def fun_l16_n158(x)
- if (x < 1)
- fun_l17_n298(x)
- else
- fun_l17_n584(x)
- end
-end
-
-def fun_l16_n159(x)
- if (x < 1)
- fun_l17_n627(x)
- else
- fun_l17_n991(x)
- end
-end
-
-def fun_l16_n160(x)
- if (x < 1)
- fun_l17_n459(x)
- else
- fun_l17_n686(x)
- end
-end
-
-def fun_l16_n161(x)
- if (x < 1)
- fun_l17_n694(x)
- else
- fun_l17_n503(x)
- end
-end
-
-def fun_l16_n162(x)
- if (x < 1)
- fun_l17_n331(x)
- else
- fun_l17_n869(x)
- end
-end
-
-def fun_l16_n163(x)
- if (x < 1)
- fun_l17_n958(x)
- else
- fun_l17_n102(x)
- end
-end
-
-def fun_l16_n164(x)
- if (x < 1)
- fun_l17_n254(x)
- else
- fun_l17_n888(x)
- end
-end
-
-def fun_l16_n165(x)
- if (x < 1)
- fun_l17_n639(x)
- else
- fun_l17_n342(x)
- end
-end
-
-def fun_l16_n166(x)
- if (x < 1)
- fun_l17_n859(x)
- else
- fun_l17_n2(x)
- end
-end
-
-def fun_l16_n167(x)
- if (x < 1)
- fun_l17_n504(x)
- else
- fun_l17_n726(x)
- end
-end
-
-def fun_l16_n168(x)
- if (x < 1)
- fun_l17_n426(x)
- else
- fun_l17_n532(x)
- end
-end
-
-def fun_l16_n169(x)
- if (x < 1)
- fun_l17_n919(x)
- else
- fun_l17_n515(x)
- end
-end
-
-def fun_l16_n170(x)
- if (x < 1)
- fun_l17_n394(x)
- else
- fun_l17_n259(x)
- end
-end
-
-def fun_l16_n171(x)
- if (x < 1)
- fun_l17_n920(x)
- else
- fun_l17_n502(x)
- end
-end
-
-def fun_l16_n172(x)
- if (x < 1)
- fun_l17_n898(x)
- else
- fun_l17_n984(x)
- end
-end
-
-def fun_l16_n173(x)
- if (x < 1)
- fun_l17_n869(x)
- else
- fun_l17_n470(x)
- end
-end
-
-def fun_l16_n174(x)
- if (x < 1)
- fun_l17_n959(x)
- else
- fun_l17_n283(x)
- end
-end
-
-def fun_l16_n175(x)
- if (x < 1)
- fun_l17_n1(x)
- else
- fun_l17_n68(x)
- end
-end
-
-def fun_l16_n176(x)
- if (x < 1)
- fun_l17_n91(x)
- else
- fun_l17_n684(x)
- end
-end
-
-def fun_l16_n177(x)
- if (x < 1)
- fun_l17_n803(x)
- else
- fun_l17_n335(x)
- end
-end
-
-def fun_l16_n178(x)
- if (x < 1)
- fun_l17_n242(x)
- else
- fun_l17_n671(x)
- end
-end
-
-def fun_l16_n179(x)
- if (x < 1)
- fun_l17_n944(x)
- else
- fun_l17_n136(x)
- end
-end
-
-def fun_l16_n180(x)
- if (x < 1)
- fun_l17_n681(x)
- else
- fun_l17_n587(x)
- end
-end
-
-def fun_l16_n181(x)
- if (x < 1)
- fun_l17_n564(x)
- else
- fun_l17_n965(x)
- end
-end
-
-def fun_l16_n182(x)
- if (x < 1)
- fun_l17_n107(x)
- else
- fun_l17_n229(x)
- end
-end
-
-def fun_l16_n183(x)
- if (x < 1)
- fun_l17_n467(x)
- else
- fun_l17_n155(x)
- end
-end
-
-def fun_l16_n184(x)
- if (x < 1)
- fun_l17_n62(x)
- else
- fun_l17_n507(x)
- end
-end
-
-def fun_l16_n185(x)
- if (x < 1)
- fun_l17_n632(x)
- else
- fun_l17_n792(x)
- end
-end
-
-def fun_l16_n186(x)
- if (x < 1)
- fun_l17_n174(x)
- else
- fun_l17_n623(x)
- end
-end
-
-def fun_l16_n187(x)
- if (x < 1)
- fun_l17_n733(x)
- else
- fun_l17_n640(x)
- end
-end
-
-def fun_l16_n188(x)
- if (x < 1)
- fun_l17_n968(x)
- else
- fun_l17_n554(x)
- end
-end
-
-def fun_l16_n189(x)
- if (x < 1)
- fun_l17_n363(x)
- else
- fun_l17_n381(x)
- end
-end
-
-def fun_l16_n190(x)
- if (x < 1)
- fun_l17_n34(x)
- else
- fun_l17_n145(x)
- end
-end
-
-def fun_l16_n191(x)
- if (x < 1)
- fun_l17_n407(x)
- else
- fun_l17_n567(x)
- end
-end
-
-def fun_l16_n192(x)
- if (x < 1)
- fun_l17_n497(x)
- else
- fun_l17_n842(x)
- end
-end
-
-def fun_l16_n193(x)
- if (x < 1)
- fun_l17_n935(x)
- else
- fun_l17_n394(x)
- end
-end
-
-def fun_l16_n194(x)
- if (x < 1)
- fun_l17_n728(x)
- else
- fun_l17_n885(x)
- end
-end
-
-def fun_l16_n195(x)
- if (x < 1)
- fun_l17_n974(x)
- else
- fun_l17_n678(x)
- end
-end
-
-def fun_l16_n196(x)
- if (x < 1)
- fun_l17_n420(x)
- else
- fun_l17_n894(x)
- end
-end
-
-def fun_l16_n197(x)
- if (x < 1)
- fun_l17_n651(x)
- else
- fun_l17_n569(x)
- end
-end
-
-def fun_l16_n198(x)
- if (x < 1)
- fun_l17_n274(x)
- else
- fun_l17_n683(x)
- end
-end
-
-def fun_l16_n199(x)
- if (x < 1)
- fun_l17_n624(x)
- else
- fun_l17_n343(x)
- end
-end
-
-def fun_l16_n200(x)
- if (x < 1)
- fun_l17_n82(x)
- else
- fun_l17_n472(x)
- end
-end
-
-def fun_l16_n201(x)
- if (x < 1)
- fun_l17_n519(x)
- else
- fun_l17_n54(x)
- end
-end
-
-def fun_l16_n202(x)
- if (x < 1)
- fun_l17_n858(x)
- else
- fun_l17_n379(x)
- end
-end
-
-def fun_l16_n203(x)
- if (x < 1)
- fun_l17_n515(x)
- else
- fun_l17_n59(x)
- end
-end
-
-def fun_l16_n204(x)
- if (x < 1)
- fun_l17_n736(x)
- else
- fun_l17_n880(x)
- end
-end
-
-def fun_l16_n205(x)
- if (x < 1)
- fun_l17_n724(x)
- else
- fun_l17_n890(x)
- end
-end
-
-def fun_l16_n206(x)
- if (x < 1)
- fun_l17_n92(x)
- else
- fun_l17_n305(x)
- end
-end
-
-def fun_l16_n207(x)
- if (x < 1)
- fun_l17_n123(x)
- else
- fun_l17_n455(x)
- end
-end
-
-def fun_l16_n208(x)
- if (x < 1)
- fun_l17_n722(x)
- else
- fun_l17_n142(x)
- end
-end
-
-def fun_l16_n209(x)
- if (x < 1)
- fun_l17_n250(x)
- else
- fun_l17_n810(x)
- end
-end
-
-def fun_l16_n210(x)
- if (x < 1)
- fun_l17_n118(x)
- else
- fun_l17_n902(x)
- end
-end
-
-def fun_l16_n211(x)
- if (x < 1)
- fun_l17_n8(x)
- else
- fun_l17_n874(x)
- end
-end
-
-def fun_l16_n212(x)
- if (x < 1)
- fun_l17_n589(x)
- else
- fun_l17_n731(x)
- end
-end
-
-def fun_l16_n213(x)
- if (x < 1)
- fun_l17_n786(x)
- else
- fun_l17_n249(x)
- end
-end
-
-def fun_l16_n214(x)
- if (x < 1)
- fun_l17_n80(x)
- else
- fun_l17_n763(x)
- end
-end
-
-def fun_l16_n215(x)
- if (x < 1)
- fun_l17_n733(x)
- else
- fun_l17_n657(x)
- end
-end
-
-def fun_l16_n216(x)
- if (x < 1)
- fun_l17_n168(x)
- else
- fun_l17_n881(x)
- end
-end
-
-def fun_l16_n217(x)
- if (x < 1)
- fun_l17_n568(x)
- else
- fun_l17_n698(x)
- end
-end
-
-def fun_l16_n218(x)
- if (x < 1)
- fun_l17_n727(x)
- else
- fun_l17_n388(x)
- end
-end
-
-def fun_l16_n219(x)
- if (x < 1)
- fun_l17_n443(x)
- else
- fun_l17_n600(x)
- end
-end
-
-def fun_l16_n220(x)
- if (x < 1)
- fun_l17_n901(x)
- else
- fun_l17_n875(x)
- end
-end
-
-def fun_l16_n221(x)
- if (x < 1)
- fun_l17_n374(x)
- else
- fun_l17_n819(x)
- end
-end
-
-def fun_l16_n222(x)
- if (x < 1)
- fun_l17_n563(x)
- else
- fun_l17_n341(x)
- end
-end
-
-def fun_l16_n223(x)
- if (x < 1)
- fun_l17_n404(x)
- else
- fun_l17_n201(x)
- end
-end
-
-def fun_l16_n224(x)
- if (x < 1)
- fun_l17_n932(x)
- else
- fun_l17_n803(x)
- end
-end
-
-def fun_l16_n225(x)
- if (x < 1)
- fun_l17_n970(x)
- else
- fun_l17_n717(x)
- end
-end
-
-def fun_l16_n226(x)
- if (x < 1)
- fun_l17_n599(x)
- else
- fun_l17_n692(x)
- end
-end
-
-def fun_l16_n227(x)
- if (x < 1)
- fun_l17_n351(x)
- else
- fun_l17_n177(x)
- end
-end
-
-def fun_l16_n228(x)
- if (x < 1)
- fun_l17_n891(x)
- else
- fun_l17_n79(x)
- end
-end
-
-def fun_l16_n229(x)
- if (x < 1)
- fun_l17_n143(x)
- else
- fun_l17_n702(x)
- end
-end
-
-def fun_l16_n230(x)
- if (x < 1)
- fun_l17_n591(x)
- else
- fun_l17_n317(x)
- end
-end
-
-def fun_l16_n231(x)
- if (x < 1)
- fun_l17_n727(x)
- else
- fun_l17_n881(x)
- end
-end
-
-def fun_l16_n232(x)
- if (x < 1)
- fun_l17_n390(x)
- else
- fun_l17_n580(x)
- end
-end
-
-def fun_l16_n233(x)
- if (x < 1)
- fun_l17_n530(x)
- else
- fun_l17_n102(x)
- end
-end
-
-def fun_l16_n234(x)
- if (x < 1)
- fun_l17_n891(x)
- else
- fun_l17_n783(x)
- end
-end
-
-def fun_l16_n235(x)
- if (x < 1)
- fun_l17_n91(x)
- else
- fun_l17_n142(x)
- end
-end
-
-def fun_l16_n236(x)
- if (x < 1)
- fun_l17_n55(x)
- else
- fun_l17_n897(x)
- end
-end
-
-def fun_l16_n237(x)
- if (x < 1)
- fun_l17_n471(x)
- else
- fun_l17_n24(x)
- end
-end
-
-def fun_l16_n238(x)
- if (x < 1)
- fun_l17_n812(x)
- else
- fun_l17_n833(x)
- end
-end
-
-def fun_l16_n239(x)
- if (x < 1)
- fun_l17_n879(x)
- else
- fun_l17_n560(x)
- end
-end
-
-def fun_l16_n240(x)
- if (x < 1)
- fun_l17_n882(x)
- else
- fun_l17_n473(x)
- end
-end
-
-def fun_l16_n241(x)
- if (x < 1)
- fun_l17_n30(x)
- else
- fun_l17_n299(x)
- end
-end
-
-def fun_l16_n242(x)
- if (x < 1)
- fun_l17_n855(x)
- else
- fun_l17_n751(x)
- end
-end
-
-def fun_l16_n243(x)
- if (x < 1)
- fun_l17_n184(x)
- else
- fun_l17_n997(x)
- end
-end
-
-def fun_l16_n244(x)
- if (x < 1)
- fun_l17_n151(x)
- else
- fun_l17_n495(x)
- end
-end
-
-def fun_l16_n245(x)
- if (x < 1)
- fun_l17_n181(x)
- else
- fun_l17_n360(x)
- end
-end
-
-def fun_l16_n246(x)
- if (x < 1)
- fun_l17_n208(x)
- else
- fun_l17_n767(x)
- end
-end
-
-def fun_l16_n247(x)
- if (x < 1)
- fun_l17_n969(x)
- else
- fun_l17_n15(x)
- end
-end
-
-def fun_l16_n248(x)
- if (x < 1)
- fun_l17_n529(x)
- else
- fun_l17_n879(x)
- end
-end
-
-def fun_l16_n249(x)
- if (x < 1)
- fun_l17_n729(x)
- else
- fun_l17_n355(x)
- end
-end
-
-def fun_l16_n250(x)
- if (x < 1)
- fun_l17_n239(x)
- else
- fun_l17_n414(x)
- end
-end
-
-def fun_l16_n251(x)
- if (x < 1)
- fun_l17_n257(x)
- else
- fun_l17_n362(x)
- end
-end
-
-def fun_l16_n252(x)
- if (x < 1)
- fun_l17_n832(x)
- else
- fun_l17_n924(x)
- end
-end
-
-def fun_l16_n253(x)
- if (x < 1)
- fun_l17_n907(x)
- else
- fun_l17_n548(x)
- end
-end
-
-def fun_l16_n254(x)
- if (x < 1)
- fun_l17_n391(x)
- else
- fun_l17_n316(x)
- end
-end
-
-def fun_l16_n255(x)
- if (x < 1)
- fun_l17_n163(x)
- else
- fun_l17_n164(x)
- end
-end
-
-def fun_l16_n256(x)
- if (x < 1)
- fun_l17_n86(x)
- else
- fun_l17_n473(x)
- end
-end
-
-def fun_l16_n257(x)
- if (x < 1)
- fun_l17_n519(x)
- else
- fun_l17_n556(x)
- end
-end
-
-def fun_l16_n258(x)
- if (x < 1)
- fun_l17_n819(x)
- else
- fun_l17_n41(x)
- end
-end
-
-def fun_l16_n259(x)
- if (x < 1)
- fun_l17_n330(x)
- else
- fun_l17_n334(x)
- end
-end
-
-def fun_l16_n260(x)
- if (x < 1)
- fun_l17_n441(x)
- else
- fun_l17_n529(x)
- end
-end
-
-def fun_l16_n261(x)
- if (x < 1)
- fun_l17_n116(x)
- else
- fun_l17_n597(x)
- end
-end
-
-def fun_l16_n262(x)
- if (x < 1)
- fun_l17_n537(x)
- else
- fun_l17_n594(x)
- end
-end
-
-def fun_l16_n263(x)
- if (x < 1)
- fun_l17_n511(x)
- else
- fun_l17_n56(x)
- end
-end
-
-def fun_l16_n264(x)
- if (x < 1)
- fun_l17_n264(x)
- else
- fun_l17_n641(x)
- end
-end
-
-def fun_l16_n265(x)
- if (x < 1)
- fun_l17_n806(x)
- else
- fun_l17_n432(x)
- end
-end
-
-def fun_l16_n266(x)
- if (x < 1)
- fun_l17_n428(x)
- else
- fun_l17_n463(x)
- end
-end
-
-def fun_l16_n267(x)
- if (x < 1)
- fun_l17_n39(x)
- else
- fun_l17_n362(x)
- end
-end
-
-def fun_l16_n268(x)
- if (x < 1)
- fun_l17_n502(x)
- else
- fun_l17_n87(x)
- end
-end
-
-def fun_l16_n269(x)
- if (x < 1)
- fun_l17_n143(x)
- else
- fun_l17_n92(x)
- end
-end
-
-def fun_l16_n270(x)
- if (x < 1)
- fun_l17_n675(x)
- else
- fun_l17_n629(x)
- end
-end
-
-def fun_l16_n271(x)
- if (x < 1)
- fun_l17_n33(x)
- else
- fun_l17_n158(x)
- end
-end
-
-def fun_l16_n272(x)
- if (x < 1)
- fun_l17_n480(x)
- else
- fun_l17_n204(x)
- end
-end
-
-def fun_l16_n273(x)
- if (x < 1)
- fun_l17_n81(x)
- else
- fun_l17_n855(x)
- end
-end
-
-def fun_l16_n274(x)
- if (x < 1)
- fun_l17_n608(x)
- else
- fun_l17_n969(x)
- end
-end
-
-def fun_l16_n275(x)
- if (x < 1)
- fun_l17_n606(x)
- else
- fun_l17_n292(x)
- end
-end
-
-def fun_l16_n276(x)
- if (x < 1)
- fun_l17_n494(x)
- else
- fun_l17_n689(x)
- end
-end
-
-def fun_l16_n277(x)
- if (x < 1)
- fun_l17_n3(x)
- else
- fun_l17_n207(x)
- end
-end
-
-def fun_l16_n278(x)
- if (x < 1)
- fun_l17_n85(x)
- else
- fun_l17_n59(x)
- end
-end
-
-def fun_l16_n279(x)
- if (x < 1)
- fun_l17_n363(x)
- else
- fun_l17_n651(x)
- end
-end
-
-def fun_l16_n280(x)
- if (x < 1)
- fun_l17_n199(x)
- else
- fun_l17_n77(x)
- end
-end
-
-def fun_l16_n281(x)
- if (x < 1)
- fun_l17_n83(x)
- else
- fun_l17_n865(x)
- end
-end
-
-def fun_l16_n282(x)
- if (x < 1)
- fun_l17_n120(x)
- else
- fun_l17_n466(x)
- end
-end
-
-def fun_l16_n283(x)
- if (x < 1)
- fun_l17_n667(x)
- else
- fun_l17_n867(x)
- end
-end
-
-def fun_l16_n284(x)
- if (x < 1)
- fun_l17_n248(x)
- else
- fun_l17_n480(x)
- end
-end
-
-def fun_l16_n285(x)
- if (x < 1)
- fun_l17_n766(x)
- else
- fun_l17_n609(x)
- end
-end
-
-def fun_l16_n286(x)
- if (x < 1)
- fun_l17_n95(x)
- else
- fun_l17_n341(x)
- end
-end
-
-def fun_l16_n287(x)
- if (x < 1)
- fun_l17_n234(x)
- else
- fun_l17_n552(x)
- end
-end
-
-def fun_l16_n288(x)
- if (x < 1)
- fun_l17_n955(x)
- else
- fun_l17_n434(x)
- end
-end
-
-def fun_l16_n289(x)
- if (x < 1)
- fun_l17_n954(x)
- else
- fun_l17_n554(x)
- end
-end
-
-def fun_l16_n290(x)
- if (x < 1)
- fun_l17_n981(x)
- else
- fun_l17_n374(x)
- end
-end
-
-def fun_l16_n291(x)
- if (x < 1)
- fun_l17_n153(x)
- else
- fun_l17_n849(x)
- end
-end
-
-def fun_l16_n292(x)
- if (x < 1)
- fun_l17_n89(x)
- else
- fun_l17_n491(x)
- end
-end
-
-def fun_l16_n293(x)
- if (x < 1)
- fun_l17_n908(x)
- else
- fun_l17_n75(x)
- end
-end
-
-def fun_l16_n294(x)
- if (x < 1)
- fun_l17_n772(x)
- else
- fun_l17_n474(x)
- end
-end
-
-def fun_l16_n295(x)
- if (x < 1)
- fun_l17_n577(x)
- else
- fun_l17_n470(x)
- end
-end
-
-def fun_l16_n296(x)
- if (x < 1)
- fun_l17_n699(x)
- else
- fun_l17_n172(x)
- end
-end
-
-def fun_l16_n297(x)
- if (x < 1)
- fun_l17_n408(x)
- else
- fun_l17_n314(x)
- end
-end
-
-def fun_l16_n298(x)
- if (x < 1)
- fun_l17_n521(x)
- else
- fun_l17_n940(x)
- end
-end
-
-def fun_l16_n299(x)
- if (x < 1)
- fun_l17_n804(x)
- else
- fun_l17_n503(x)
- end
-end
-
-def fun_l16_n300(x)
- if (x < 1)
- fun_l17_n712(x)
- else
- fun_l17_n227(x)
- end
-end
-
-def fun_l16_n301(x)
- if (x < 1)
- fun_l17_n700(x)
- else
- fun_l17_n102(x)
- end
-end
-
-def fun_l16_n302(x)
- if (x < 1)
- fun_l17_n290(x)
- else
- fun_l17_n212(x)
- end
-end
-
-def fun_l16_n303(x)
- if (x < 1)
- fun_l17_n525(x)
- else
- fun_l17_n273(x)
- end
-end
-
-def fun_l16_n304(x)
- if (x < 1)
- fun_l17_n356(x)
- else
- fun_l17_n359(x)
- end
-end
-
-def fun_l16_n305(x)
- if (x < 1)
- fun_l17_n84(x)
- else
- fun_l17_n207(x)
- end
-end
-
-def fun_l16_n306(x)
- if (x < 1)
- fun_l17_n566(x)
- else
- fun_l17_n945(x)
- end
-end
-
-def fun_l16_n307(x)
- if (x < 1)
- fun_l17_n692(x)
- else
- fun_l17_n326(x)
- end
-end
-
-def fun_l16_n308(x)
- if (x < 1)
- fun_l17_n727(x)
- else
- fun_l17_n205(x)
- end
-end
-
-def fun_l16_n309(x)
- if (x < 1)
- fun_l17_n568(x)
- else
- fun_l17_n386(x)
- end
-end
-
-def fun_l16_n310(x)
- if (x < 1)
- fun_l17_n244(x)
- else
- fun_l17_n472(x)
- end
-end
-
-def fun_l16_n311(x)
- if (x < 1)
- fun_l17_n956(x)
- else
- fun_l17_n546(x)
- end
-end
-
-def fun_l16_n312(x)
- if (x < 1)
- fun_l17_n807(x)
- else
- fun_l17_n924(x)
- end
-end
-
-def fun_l16_n313(x)
- if (x < 1)
- fun_l17_n931(x)
- else
- fun_l17_n962(x)
- end
-end
-
-def fun_l16_n314(x)
- if (x < 1)
- fun_l17_n64(x)
- else
- fun_l17_n178(x)
- end
-end
-
-def fun_l16_n315(x)
- if (x < 1)
- fun_l17_n460(x)
- else
- fun_l17_n438(x)
- end
-end
-
-def fun_l16_n316(x)
- if (x < 1)
- fun_l17_n185(x)
- else
- fun_l17_n25(x)
- end
-end
-
-def fun_l16_n317(x)
- if (x < 1)
- fun_l17_n732(x)
- else
- fun_l17_n460(x)
- end
-end
-
-def fun_l16_n318(x)
- if (x < 1)
- fun_l17_n5(x)
- else
- fun_l17_n947(x)
- end
-end
-
-def fun_l16_n319(x)
- if (x < 1)
- fun_l17_n682(x)
- else
- fun_l17_n644(x)
- end
-end
-
-def fun_l16_n320(x)
- if (x < 1)
- fun_l17_n151(x)
- else
- fun_l17_n578(x)
- end
-end
-
-def fun_l16_n321(x)
- if (x < 1)
- fun_l17_n219(x)
- else
- fun_l17_n4(x)
- end
-end
-
-def fun_l16_n322(x)
- if (x < 1)
- fun_l17_n214(x)
- else
- fun_l17_n594(x)
- end
-end
-
-def fun_l16_n323(x)
- if (x < 1)
- fun_l17_n970(x)
- else
- fun_l17_n275(x)
- end
-end
-
-def fun_l16_n324(x)
- if (x < 1)
- fun_l17_n442(x)
- else
- fun_l17_n377(x)
- end
-end
-
-def fun_l16_n325(x)
- if (x < 1)
- fun_l17_n783(x)
- else
- fun_l17_n731(x)
- end
-end
-
-def fun_l16_n326(x)
- if (x < 1)
- fun_l17_n43(x)
- else
- fun_l17_n884(x)
- end
-end
-
-def fun_l16_n327(x)
- if (x < 1)
- fun_l17_n857(x)
- else
- fun_l17_n593(x)
- end
-end
-
-def fun_l16_n328(x)
- if (x < 1)
- fun_l17_n942(x)
- else
- fun_l17_n772(x)
- end
-end
-
-def fun_l16_n329(x)
- if (x < 1)
- fun_l17_n309(x)
- else
- fun_l17_n508(x)
- end
-end
-
-def fun_l16_n330(x)
- if (x < 1)
- fun_l17_n30(x)
- else
- fun_l17_n165(x)
- end
-end
-
-def fun_l16_n331(x)
- if (x < 1)
- fun_l17_n981(x)
- else
- fun_l17_n355(x)
- end
-end
-
-def fun_l16_n332(x)
- if (x < 1)
- fun_l17_n159(x)
- else
- fun_l17_n228(x)
- end
-end
-
-def fun_l16_n333(x)
- if (x < 1)
- fun_l17_n499(x)
- else
- fun_l17_n565(x)
- end
-end
-
-def fun_l16_n334(x)
- if (x < 1)
- fun_l17_n371(x)
- else
- fun_l17_n856(x)
- end
-end
-
-def fun_l16_n335(x)
- if (x < 1)
- fun_l17_n717(x)
- else
- fun_l17_n229(x)
- end
-end
-
-def fun_l16_n336(x)
- if (x < 1)
- fun_l17_n678(x)
- else
- fun_l17_n236(x)
- end
-end
-
-def fun_l16_n337(x)
- if (x < 1)
- fun_l17_n472(x)
- else
- fun_l17_n566(x)
- end
-end
-
-def fun_l16_n338(x)
- if (x < 1)
- fun_l17_n74(x)
- else
- fun_l17_n247(x)
- end
-end
-
-def fun_l16_n339(x)
- if (x < 1)
- fun_l17_n379(x)
- else
- fun_l17_n443(x)
- end
-end
-
-def fun_l16_n340(x)
- if (x < 1)
- fun_l17_n233(x)
- else
- fun_l17_n79(x)
- end
-end
-
-def fun_l16_n341(x)
- if (x < 1)
- fun_l17_n136(x)
- else
- fun_l17_n900(x)
- end
-end
-
-def fun_l16_n342(x)
- if (x < 1)
- fun_l17_n785(x)
- else
- fun_l17_n63(x)
- end
-end
-
-def fun_l16_n343(x)
- if (x < 1)
- fun_l17_n429(x)
- else
- fun_l17_n111(x)
- end
-end
-
-def fun_l16_n344(x)
- if (x < 1)
- fun_l17_n226(x)
- else
- fun_l17_n137(x)
- end
-end
-
-def fun_l16_n345(x)
- if (x < 1)
- fun_l17_n428(x)
- else
- fun_l17_n674(x)
- end
-end
-
-def fun_l16_n346(x)
- if (x < 1)
- fun_l17_n940(x)
- else
- fun_l17_n987(x)
- end
-end
-
-def fun_l16_n347(x)
- if (x < 1)
- fun_l17_n579(x)
- else
- fun_l17_n220(x)
- end
-end
-
-def fun_l16_n348(x)
- if (x < 1)
- fun_l17_n502(x)
- else
- fun_l17_n530(x)
- end
-end
-
-def fun_l16_n349(x)
- if (x < 1)
- fun_l17_n334(x)
- else
- fun_l17_n955(x)
- end
-end
-
-def fun_l16_n350(x)
- if (x < 1)
- fun_l17_n680(x)
- else
- fun_l17_n41(x)
- end
-end
-
-def fun_l16_n351(x)
- if (x < 1)
- fun_l17_n821(x)
- else
- fun_l17_n750(x)
- end
-end
-
-def fun_l16_n352(x)
- if (x < 1)
- fun_l17_n212(x)
- else
- fun_l17_n537(x)
- end
-end
-
-def fun_l16_n353(x)
- if (x < 1)
- fun_l17_n555(x)
- else
- fun_l17_n834(x)
- end
-end
-
-def fun_l16_n354(x)
- if (x < 1)
- fun_l17_n532(x)
- else
- fun_l17_n940(x)
- end
-end
-
-def fun_l16_n355(x)
- if (x < 1)
- fun_l17_n771(x)
- else
- fun_l17_n915(x)
- end
-end
-
-def fun_l16_n356(x)
- if (x < 1)
- fun_l17_n844(x)
- else
- fun_l17_n235(x)
- end
-end
-
-def fun_l16_n357(x)
- if (x < 1)
- fun_l17_n604(x)
- else
- fun_l17_n241(x)
- end
-end
-
-def fun_l16_n358(x)
- if (x < 1)
- fun_l17_n156(x)
- else
- fun_l17_n832(x)
- end
-end
-
-def fun_l16_n359(x)
- if (x < 1)
- fun_l17_n335(x)
- else
- fun_l17_n115(x)
- end
-end
-
-def fun_l16_n360(x)
- if (x < 1)
- fun_l17_n563(x)
- else
- fun_l17_n779(x)
- end
-end
-
-def fun_l16_n361(x)
- if (x < 1)
- fun_l17_n280(x)
- else
- fun_l17_n946(x)
- end
-end
-
-def fun_l16_n362(x)
- if (x < 1)
- fun_l17_n497(x)
- else
- fun_l17_n390(x)
- end
-end
-
-def fun_l16_n363(x)
- if (x < 1)
- fun_l17_n59(x)
- else
- fun_l17_n178(x)
- end
-end
-
-def fun_l16_n364(x)
- if (x < 1)
- fun_l17_n509(x)
- else
- fun_l17_n963(x)
- end
-end
-
-def fun_l16_n365(x)
- if (x < 1)
- fun_l17_n670(x)
- else
- fun_l17_n455(x)
- end
-end
-
-def fun_l16_n366(x)
- if (x < 1)
- fun_l17_n852(x)
- else
- fun_l17_n590(x)
- end
-end
-
-def fun_l16_n367(x)
- if (x < 1)
- fun_l17_n714(x)
- else
- fun_l17_n98(x)
- end
-end
-
-def fun_l16_n368(x)
- if (x < 1)
- fun_l17_n456(x)
- else
- fun_l17_n754(x)
- end
-end
-
-def fun_l16_n369(x)
- if (x < 1)
- fun_l17_n809(x)
- else
- fun_l17_n38(x)
- end
-end
-
-def fun_l16_n370(x)
- if (x < 1)
- fun_l17_n127(x)
- else
- fun_l17_n395(x)
- end
-end
-
-def fun_l16_n371(x)
- if (x < 1)
- fun_l17_n700(x)
- else
- fun_l17_n175(x)
- end
-end
-
-def fun_l16_n372(x)
- if (x < 1)
- fun_l17_n705(x)
- else
- fun_l17_n598(x)
- end
-end
-
-def fun_l16_n373(x)
- if (x < 1)
- fun_l17_n808(x)
- else
- fun_l17_n253(x)
- end
-end
-
-def fun_l16_n374(x)
- if (x < 1)
- fun_l17_n195(x)
- else
- fun_l17_n47(x)
- end
-end
-
-def fun_l16_n375(x)
- if (x < 1)
- fun_l17_n124(x)
- else
- fun_l17_n438(x)
- end
-end
-
-def fun_l16_n376(x)
- if (x < 1)
- fun_l17_n261(x)
- else
- fun_l17_n317(x)
- end
-end
-
-def fun_l16_n377(x)
- if (x < 1)
- fun_l17_n702(x)
- else
- fun_l17_n67(x)
- end
-end
-
-def fun_l16_n378(x)
- if (x < 1)
- fun_l17_n194(x)
- else
- fun_l17_n990(x)
- end
-end
-
-def fun_l16_n379(x)
- if (x < 1)
- fun_l17_n574(x)
- else
- fun_l17_n379(x)
- end
-end
-
-def fun_l16_n380(x)
- if (x < 1)
- fun_l17_n182(x)
- else
- fun_l17_n902(x)
- end
-end
-
-def fun_l16_n381(x)
- if (x < 1)
- fun_l17_n963(x)
- else
- fun_l17_n627(x)
- end
-end
-
-def fun_l16_n382(x)
- if (x < 1)
- fun_l17_n200(x)
- else
- fun_l17_n889(x)
- end
-end
-
-def fun_l16_n383(x)
- if (x < 1)
- fun_l17_n14(x)
- else
- fun_l17_n422(x)
- end
-end
-
-def fun_l16_n384(x)
- if (x < 1)
- fun_l17_n543(x)
- else
- fun_l17_n940(x)
- end
-end
-
-def fun_l16_n385(x)
- if (x < 1)
- fun_l17_n762(x)
- else
- fun_l17_n493(x)
- end
-end
-
-def fun_l16_n386(x)
- if (x < 1)
- fun_l17_n824(x)
- else
- fun_l17_n963(x)
- end
-end
-
-def fun_l16_n387(x)
- if (x < 1)
- fun_l17_n298(x)
- else
- fun_l17_n831(x)
- end
-end
-
-def fun_l16_n388(x)
- if (x < 1)
- fun_l17_n284(x)
- else
- fun_l17_n784(x)
- end
-end
-
-def fun_l16_n389(x)
- if (x < 1)
- fun_l17_n461(x)
- else
- fun_l17_n684(x)
- end
-end
-
-def fun_l16_n390(x)
- if (x < 1)
- fun_l17_n829(x)
- else
- fun_l17_n788(x)
- end
-end
-
-def fun_l16_n391(x)
- if (x < 1)
- fun_l17_n263(x)
- else
- fun_l17_n21(x)
- end
-end
-
-def fun_l16_n392(x)
- if (x < 1)
- fun_l17_n994(x)
- else
- fun_l17_n646(x)
- end
-end
-
-def fun_l16_n393(x)
- if (x < 1)
- fun_l17_n438(x)
- else
- fun_l17_n84(x)
- end
-end
-
-def fun_l16_n394(x)
- if (x < 1)
- fun_l17_n660(x)
- else
- fun_l17_n269(x)
- end
-end
-
-def fun_l16_n395(x)
- if (x < 1)
- fun_l17_n939(x)
- else
- fun_l17_n676(x)
- end
-end
-
-def fun_l16_n396(x)
- if (x < 1)
- fun_l17_n608(x)
- else
- fun_l17_n483(x)
- end
-end
-
-def fun_l16_n397(x)
- if (x < 1)
- fun_l17_n504(x)
- else
- fun_l17_n499(x)
- end
-end
-
-def fun_l16_n398(x)
- if (x < 1)
- fun_l17_n793(x)
- else
- fun_l17_n489(x)
- end
-end
-
-def fun_l16_n399(x)
- if (x < 1)
- fun_l17_n28(x)
- else
- fun_l17_n158(x)
- end
-end
-
-def fun_l16_n400(x)
- if (x < 1)
- fun_l17_n30(x)
- else
- fun_l17_n21(x)
- end
-end
-
-def fun_l16_n401(x)
- if (x < 1)
- fun_l17_n532(x)
- else
- fun_l17_n730(x)
- end
-end
-
-def fun_l16_n402(x)
- if (x < 1)
- fun_l17_n593(x)
- else
- fun_l17_n4(x)
- end
-end
-
-def fun_l16_n403(x)
- if (x < 1)
- fun_l17_n881(x)
- else
- fun_l17_n956(x)
- end
-end
-
-def fun_l16_n404(x)
- if (x < 1)
- fun_l17_n676(x)
- else
- fun_l17_n625(x)
- end
-end
-
-def fun_l16_n405(x)
- if (x < 1)
- fun_l17_n192(x)
- else
- fun_l17_n301(x)
- end
-end
-
-def fun_l16_n406(x)
- if (x < 1)
- fun_l17_n170(x)
- else
- fun_l17_n970(x)
- end
-end
-
-def fun_l16_n407(x)
- if (x < 1)
- fun_l17_n268(x)
- else
- fun_l17_n765(x)
- end
-end
-
-def fun_l16_n408(x)
- if (x < 1)
- fun_l17_n310(x)
- else
- fun_l17_n578(x)
- end
-end
-
-def fun_l16_n409(x)
- if (x < 1)
- fun_l17_n301(x)
- else
- fun_l17_n870(x)
- end
-end
-
-def fun_l16_n410(x)
- if (x < 1)
- fun_l17_n390(x)
- else
- fun_l17_n769(x)
- end
-end
-
-def fun_l16_n411(x)
- if (x < 1)
- fun_l17_n973(x)
- else
- fun_l17_n545(x)
- end
-end
-
-def fun_l16_n412(x)
- if (x < 1)
- fun_l17_n108(x)
- else
- fun_l17_n731(x)
- end
-end
-
-def fun_l16_n413(x)
- if (x < 1)
- fun_l17_n842(x)
- else
- fun_l17_n106(x)
- end
-end
-
-def fun_l16_n414(x)
- if (x < 1)
- fun_l17_n10(x)
- else
- fun_l17_n421(x)
- end
-end
-
-def fun_l16_n415(x)
- if (x < 1)
- fun_l17_n765(x)
- else
- fun_l17_n584(x)
- end
-end
-
-def fun_l16_n416(x)
- if (x < 1)
- fun_l17_n480(x)
- else
- fun_l17_n494(x)
- end
-end
-
-def fun_l16_n417(x)
- if (x < 1)
- fun_l17_n977(x)
- else
- fun_l17_n66(x)
- end
-end
-
-def fun_l16_n418(x)
- if (x < 1)
- fun_l17_n291(x)
- else
- fun_l17_n161(x)
- end
-end
-
-def fun_l16_n419(x)
- if (x < 1)
- fun_l17_n400(x)
- else
- fun_l17_n99(x)
- end
-end
-
-def fun_l16_n420(x)
- if (x < 1)
- fun_l17_n621(x)
- else
- fun_l17_n778(x)
- end
-end
-
-def fun_l16_n421(x)
- if (x < 1)
- fun_l17_n286(x)
- else
- fun_l17_n784(x)
- end
-end
-
-def fun_l16_n422(x)
- if (x < 1)
- fun_l17_n575(x)
- else
- fun_l17_n606(x)
- end
-end
-
-def fun_l16_n423(x)
- if (x < 1)
- fun_l17_n459(x)
- else
- fun_l17_n198(x)
- end
-end
-
-def fun_l16_n424(x)
- if (x < 1)
- fun_l17_n190(x)
- else
- fun_l17_n597(x)
- end
-end
-
-def fun_l16_n425(x)
- if (x < 1)
- fun_l17_n365(x)
- else
- fun_l17_n73(x)
- end
-end
-
-def fun_l16_n426(x)
- if (x < 1)
- fun_l17_n769(x)
- else
- fun_l17_n658(x)
- end
-end
-
-def fun_l16_n427(x)
- if (x < 1)
- fun_l17_n980(x)
- else
- fun_l17_n594(x)
- end
-end
-
-def fun_l16_n428(x)
- if (x < 1)
- fun_l17_n210(x)
- else
- fun_l17_n33(x)
- end
-end
-
-def fun_l16_n429(x)
- if (x < 1)
- fun_l17_n585(x)
- else
- fun_l17_n997(x)
- end
-end
-
-def fun_l16_n430(x)
- if (x < 1)
- fun_l17_n660(x)
- else
- fun_l17_n883(x)
- end
-end
-
-def fun_l16_n431(x)
- if (x < 1)
- fun_l17_n613(x)
- else
- fun_l17_n7(x)
- end
-end
-
-def fun_l16_n432(x)
- if (x < 1)
- fun_l17_n764(x)
- else
- fun_l17_n150(x)
- end
-end
-
-def fun_l16_n433(x)
- if (x < 1)
- fun_l17_n582(x)
- else
- fun_l17_n197(x)
- end
-end
-
-def fun_l16_n434(x)
- if (x < 1)
- fun_l17_n553(x)
- else
- fun_l17_n107(x)
- end
-end
-
-def fun_l16_n435(x)
- if (x < 1)
- fun_l17_n975(x)
- else
- fun_l17_n865(x)
- end
-end
-
-def fun_l16_n436(x)
- if (x < 1)
- fun_l17_n622(x)
- else
- fun_l17_n351(x)
- end
-end
-
-def fun_l16_n437(x)
- if (x < 1)
- fun_l17_n681(x)
- else
- fun_l17_n472(x)
- end
-end
-
-def fun_l16_n438(x)
- if (x < 1)
- fun_l17_n329(x)
- else
- fun_l17_n54(x)
- end
-end
-
-def fun_l16_n439(x)
- if (x < 1)
- fun_l17_n340(x)
- else
- fun_l17_n567(x)
- end
-end
-
-def fun_l16_n440(x)
- if (x < 1)
- fun_l17_n563(x)
- else
- fun_l17_n134(x)
- end
-end
-
-def fun_l16_n441(x)
- if (x < 1)
- fun_l17_n194(x)
- else
- fun_l17_n986(x)
- end
-end
-
-def fun_l16_n442(x)
- if (x < 1)
- fun_l17_n926(x)
- else
- fun_l17_n35(x)
- end
-end
-
-def fun_l16_n443(x)
- if (x < 1)
- fun_l17_n771(x)
- else
- fun_l17_n383(x)
- end
-end
-
-def fun_l16_n444(x)
- if (x < 1)
- fun_l17_n682(x)
- else
- fun_l17_n1(x)
- end
-end
-
-def fun_l16_n445(x)
- if (x < 1)
- fun_l17_n633(x)
- else
- fun_l17_n757(x)
- end
-end
-
-def fun_l16_n446(x)
- if (x < 1)
- fun_l17_n95(x)
- else
- fun_l17_n256(x)
- end
-end
-
-def fun_l16_n447(x)
- if (x < 1)
- fun_l17_n183(x)
- else
- fun_l17_n214(x)
- end
-end
-
-def fun_l16_n448(x)
- if (x < 1)
- fun_l17_n140(x)
- else
- fun_l17_n371(x)
- end
-end
-
-def fun_l16_n449(x)
- if (x < 1)
- fun_l17_n188(x)
- else
- fun_l17_n898(x)
- end
-end
-
-def fun_l16_n450(x)
- if (x < 1)
- fun_l17_n710(x)
- else
- fun_l17_n512(x)
- end
-end
-
-def fun_l16_n451(x)
- if (x < 1)
- fun_l17_n796(x)
- else
- fun_l17_n56(x)
- end
-end
-
-def fun_l16_n452(x)
- if (x < 1)
- fun_l17_n124(x)
- else
- fun_l17_n304(x)
- end
-end
-
-def fun_l16_n453(x)
- if (x < 1)
- fun_l17_n150(x)
- else
- fun_l17_n503(x)
- end
-end
-
-def fun_l16_n454(x)
- if (x < 1)
- fun_l17_n369(x)
- else
- fun_l17_n623(x)
- end
-end
-
-def fun_l16_n455(x)
- if (x < 1)
- fun_l17_n514(x)
- else
- fun_l17_n672(x)
- end
-end
-
-def fun_l16_n456(x)
- if (x < 1)
- fun_l17_n80(x)
- else
- fun_l17_n332(x)
- end
-end
-
-def fun_l16_n457(x)
- if (x < 1)
- fun_l17_n80(x)
- else
- fun_l17_n32(x)
- end
-end
-
-def fun_l16_n458(x)
- if (x < 1)
- fun_l17_n310(x)
- else
- fun_l17_n90(x)
- end
-end
-
-def fun_l16_n459(x)
- if (x < 1)
- fun_l17_n730(x)
- else
- fun_l17_n170(x)
- end
-end
-
-def fun_l16_n460(x)
- if (x < 1)
- fun_l17_n908(x)
- else
- fun_l17_n865(x)
- end
-end
-
-def fun_l16_n461(x)
- if (x < 1)
- fun_l17_n399(x)
- else
- fun_l17_n536(x)
- end
-end
-
-def fun_l16_n462(x)
- if (x < 1)
- fun_l17_n123(x)
- else
- fun_l17_n216(x)
- end
-end
-
-def fun_l16_n463(x)
- if (x < 1)
- fun_l17_n577(x)
- else
- fun_l17_n757(x)
- end
-end
-
-def fun_l16_n464(x)
- if (x < 1)
- fun_l17_n750(x)
- else
- fun_l17_n916(x)
- end
-end
-
-def fun_l16_n465(x)
- if (x < 1)
- fun_l17_n621(x)
- else
- fun_l17_n386(x)
- end
-end
-
-def fun_l16_n466(x)
- if (x < 1)
- fun_l17_n904(x)
- else
- fun_l17_n732(x)
- end
-end
-
-def fun_l16_n467(x)
- if (x < 1)
- fun_l17_n625(x)
- else
- fun_l17_n1(x)
- end
-end
-
-def fun_l16_n468(x)
- if (x < 1)
- fun_l17_n762(x)
- else
- fun_l17_n373(x)
- end
-end
-
-def fun_l16_n469(x)
- if (x < 1)
- fun_l17_n816(x)
- else
- fun_l17_n490(x)
- end
-end
-
-def fun_l16_n470(x)
- if (x < 1)
- fun_l17_n908(x)
- else
- fun_l17_n701(x)
- end
-end
-
-def fun_l16_n471(x)
- if (x < 1)
- fun_l17_n690(x)
- else
- fun_l17_n374(x)
- end
-end
-
-def fun_l16_n472(x)
- if (x < 1)
- fun_l17_n753(x)
- else
- fun_l17_n625(x)
- end
-end
-
-def fun_l16_n473(x)
- if (x < 1)
- fun_l17_n602(x)
- else
- fun_l17_n947(x)
- end
-end
-
-def fun_l16_n474(x)
- if (x < 1)
- fun_l17_n565(x)
- else
- fun_l17_n320(x)
- end
-end
-
-def fun_l16_n475(x)
- if (x < 1)
- fun_l17_n990(x)
- else
- fun_l17_n431(x)
- end
-end
-
-def fun_l16_n476(x)
- if (x < 1)
- fun_l17_n135(x)
- else
- fun_l17_n506(x)
- end
-end
-
-def fun_l16_n477(x)
- if (x < 1)
- fun_l17_n57(x)
- else
- fun_l17_n944(x)
- end
-end
-
-def fun_l16_n478(x)
- if (x < 1)
- fun_l17_n877(x)
- else
- fun_l17_n28(x)
- end
-end
-
-def fun_l16_n479(x)
- if (x < 1)
- fun_l17_n132(x)
- else
- fun_l17_n280(x)
- end
-end
-
-def fun_l16_n480(x)
- if (x < 1)
- fun_l17_n514(x)
- else
- fun_l17_n51(x)
- end
-end
-
-def fun_l16_n481(x)
- if (x < 1)
- fun_l17_n55(x)
- else
- fun_l17_n366(x)
- end
-end
-
-def fun_l16_n482(x)
- if (x < 1)
- fun_l17_n59(x)
- else
- fun_l17_n810(x)
- end
-end
-
-def fun_l16_n483(x)
- if (x < 1)
- fun_l17_n965(x)
- else
- fun_l17_n55(x)
- end
-end
-
-def fun_l16_n484(x)
- if (x < 1)
- fun_l17_n813(x)
- else
- fun_l17_n408(x)
- end
-end
-
-def fun_l16_n485(x)
- if (x < 1)
- fun_l17_n190(x)
- else
- fun_l17_n126(x)
- end
-end
-
-def fun_l16_n486(x)
- if (x < 1)
- fun_l17_n479(x)
- else
- fun_l17_n964(x)
- end
-end
-
-def fun_l16_n487(x)
- if (x < 1)
- fun_l17_n267(x)
- else
- fun_l17_n867(x)
- end
-end
-
-def fun_l16_n488(x)
- if (x < 1)
- fun_l17_n787(x)
- else
- fun_l17_n34(x)
- end
-end
-
-def fun_l16_n489(x)
- if (x < 1)
- fun_l17_n223(x)
- else
- fun_l17_n568(x)
- end
-end
-
-def fun_l16_n490(x)
- if (x < 1)
- fun_l17_n773(x)
- else
- fun_l17_n11(x)
- end
-end
-
-def fun_l16_n491(x)
- if (x < 1)
- fun_l17_n906(x)
- else
- fun_l17_n146(x)
- end
-end
-
-def fun_l16_n492(x)
- if (x < 1)
- fun_l17_n221(x)
- else
- fun_l17_n136(x)
- end
-end
-
-def fun_l16_n493(x)
- if (x < 1)
- fun_l17_n40(x)
- else
- fun_l17_n599(x)
- end
-end
-
-def fun_l16_n494(x)
- if (x < 1)
- fun_l17_n494(x)
- else
- fun_l17_n591(x)
- end
-end
-
-def fun_l16_n495(x)
- if (x < 1)
- fun_l17_n237(x)
- else
- fun_l17_n149(x)
- end
-end
-
-def fun_l16_n496(x)
- if (x < 1)
- fun_l17_n501(x)
- else
- fun_l17_n681(x)
- end
-end
-
-def fun_l16_n497(x)
- if (x < 1)
- fun_l17_n141(x)
- else
- fun_l17_n226(x)
- end
-end
-
-def fun_l16_n498(x)
- if (x < 1)
- fun_l17_n868(x)
- else
- fun_l17_n837(x)
- end
-end
-
-def fun_l16_n499(x)
- if (x < 1)
- fun_l17_n921(x)
- else
- fun_l17_n806(x)
- end
-end
-
-def fun_l16_n500(x)
- if (x < 1)
- fun_l17_n117(x)
- else
- fun_l17_n835(x)
- end
-end
-
-def fun_l16_n501(x)
- if (x < 1)
- fun_l17_n872(x)
- else
- fun_l17_n567(x)
- end
-end
-
-def fun_l16_n502(x)
- if (x < 1)
- fun_l17_n787(x)
- else
- fun_l17_n785(x)
- end
-end
-
-def fun_l16_n503(x)
- if (x < 1)
- fun_l17_n827(x)
- else
- fun_l17_n388(x)
- end
-end
-
-def fun_l16_n504(x)
- if (x < 1)
- fun_l17_n328(x)
- else
- fun_l17_n849(x)
- end
-end
-
-def fun_l16_n505(x)
- if (x < 1)
- fun_l17_n348(x)
- else
- fun_l17_n580(x)
- end
-end
-
-def fun_l16_n506(x)
- if (x < 1)
- fun_l17_n408(x)
- else
- fun_l17_n236(x)
- end
-end
-
-def fun_l16_n507(x)
- if (x < 1)
- fun_l17_n959(x)
- else
- fun_l17_n739(x)
- end
-end
-
-def fun_l16_n508(x)
- if (x < 1)
- fun_l17_n496(x)
- else
- fun_l17_n774(x)
- end
-end
-
-def fun_l16_n509(x)
- if (x < 1)
- fun_l17_n639(x)
- else
- fun_l17_n147(x)
- end
-end
-
-def fun_l16_n510(x)
- if (x < 1)
- fun_l17_n910(x)
- else
- fun_l17_n697(x)
- end
-end
-
-def fun_l16_n511(x)
- if (x < 1)
- fun_l17_n239(x)
- else
- fun_l17_n691(x)
- end
-end
-
-def fun_l16_n512(x)
- if (x < 1)
- fun_l17_n923(x)
- else
- fun_l17_n735(x)
- end
-end
-
-def fun_l16_n513(x)
- if (x < 1)
- fun_l17_n911(x)
- else
- fun_l17_n372(x)
- end
-end
-
-def fun_l16_n514(x)
- if (x < 1)
- fun_l17_n706(x)
- else
- fun_l17_n27(x)
- end
-end
-
-def fun_l16_n515(x)
- if (x < 1)
- fun_l17_n788(x)
- else
- fun_l17_n670(x)
- end
-end
-
-def fun_l16_n516(x)
- if (x < 1)
- fun_l17_n507(x)
- else
- fun_l17_n330(x)
- end
-end
-
-def fun_l16_n517(x)
- if (x < 1)
- fun_l17_n398(x)
- else
- fun_l17_n997(x)
- end
-end
-
-def fun_l16_n518(x)
- if (x < 1)
- fun_l17_n675(x)
- else
- fun_l17_n383(x)
- end
-end
-
-def fun_l16_n519(x)
- if (x < 1)
- fun_l17_n193(x)
- else
- fun_l17_n611(x)
- end
-end
-
-def fun_l16_n520(x)
- if (x < 1)
- fun_l17_n884(x)
- else
- fun_l17_n200(x)
- end
-end
-
-def fun_l16_n521(x)
- if (x < 1)
- fun_l17_n574(x)
- else
- fun_l17_n192(x)
- end
-end
-
-def fun_l16_n522(x)
- if (x < 1)
- fun_l17_n883(x)
- else
- fun_l17_n399(x)
- end
-end
-
-def fun_l16_n523(x)
- if (x < 1)
- fun_l17_n516(x)
- else
- fun_l17_n592(x)
- end
-end
-
-def fun_l16_n524(x)
- if (x < 1)
- fun_l17_n653(x)
- else
- fun_l17_n355(x)
- end
-end
-
-def fun_l16_n525(x)
- if (x < 1)
- fun_l17_n872(x)
- else
- fun_l17_n714(x)
- end
-end
-
-def fun_l16_n526(x)
- if (x < 1)
- fun_l17_n891(x)
- else
- fun_l17_n70(x)
- end
-end
-
-def fun_l16_n527(x)
- if (x < 1)
- fun_l17_n46(x)
- else
- fun_l17_n591(x)
- end
-end
-
-def fun_l16_n528(x)
- if (x < 1)
- fun_l17_n969(x)
- else
- fun_l17_n289(x)
- end
-end
-
-def fun_l16_n529(x)
- if (x < 1)
- fun_l17_n713(x)
- else
- fun_l17_n775(x)
- end
-end
-
-def fun_l16_n530(x)
- if (x < 1)
- fun_l17_n374(x)
- else
- fun_l17_n708(x)
- end
-end
-
-def fun_l16_n531(x)
- if (x < 1)
- fun_l17_n996(x)
- else
- fun_l17_n764(x)
- end
-end
-
-def fun_l16_n532(x)
- if (x < 1)
- fun_l17_n314(x)
- else
- fun_l17_n445(x)
- end
-end
-
-def fun_l16_n533(x)
- if (x < 1)
- fun_l17_n951(x)
- else
- fun_l17_n912(x)
- end
-end
-
-def fun_l16_n534(x)
- if (x < 1)
- fun_l17_n760(x)
- else
- fun_l17_n445(x)
- end
-end
-
-def fun_l16_n535(x)
- if (x < 1)
- fun_l17_n310(x)
- else
- fun_l17_n16(x)
- end
-end
-
-def fun_l16_n536(x)
- if (x < 1)
- fun_l17_n254(x)
- else
- fun_l17_n693(x)
- end
-end
-
-def fun_l16_n537(x)
- if (x < 1)
- fun_l17_n631(x)
- else
- fun_l17_n934(x)
- end
-end
-
-def fun_l16_n538(x)
- if (x < 1)
- fun_l17_n944(x)
- else
- fun_l17_n922(x)
- end
-end
-
-def fun_l16_n539(x)
- if (x < 1)
- fun_l17_n263(x)
- else
- fun_l17_n796(x)
- end
-end
-
-def fun_l16_n540(x)
- if (x < 1)
- fun_l17_n928(x)
- else
- fun_l17_n604(x)
- end
-end
-
-def fun_l16_n541(x)
- if (x < 1)
- fun_l17_n678(x)
- else
- fun_l17_n880(x)
- end
-end
-
-def fun_l16_n542(x)
- if (x < 1)
- fun_l17_n286(x)
- else
- fun_l17_n123(x)
- end
-end
-
-def fun_l16_n543(x)
- if (x < 1)
- fun_l17_n604(x)
- else
- fun_l17_n57(x)
- end
-end
-
-def fun_l16_n544(x)
- if (x < 1)
- fun_l17_n204(x)
- else
- fun_l17_n950(x)
- end
-end
-
-def fun_l16_n545(x)
- if (x < 1)
- fun_l17_n60(x)
- else
- fun_l17_n667(x)
- end
-end
-
-def fun_l16_n546(x)
- if (x < 1)
- fun_l17_n472(x)
- else
- fun_l17_n818(x)
- end
-end
-
-def fun_l16_n547(x)
- if (x < 1)
- fun_l17_n515(x)
- else
- fun_l17_n180(x)
- end
-end
-
-def fun_l16_n548(x)
- if (x < 1)
- fun_l17_n443(x)
- else
- fun_l17_n159(x)
- end
-end
-
-def fun_l16_n549(x)
- if (x < 1)
- fun_l17_n820(x)
- else
- fun_l17_n468(x)
- end
-end
-
-def fun_l16_n550(x)
- if (x < 1)
- fun_l17_n938(x)
- else
- fun_l17_n307(x)
- end
-end
-
-def fun_l16_n551(x)
- if (x < 1)
- fun_l17_n350(x)
- else
- fun_l17_n177(x)
- end
-end
-
-def fun_l16_n552(x)
- if (x < 1)
- fun_l17_n761(x)
- else
- fun_l17_n35(x)
- end
-end
-
-def fun_l16_n553(x)
- if (x < 1)
- fun_l17_n189(x)
- else
- fun_l17_n991(x)
- end
-end
-
-def fun_l16_n554(x)
- if (x < 1)
- fun_l17_n234(x)
- else
- fun_l17_n721(x)
- end
-end
-
-def fun_l16_n555(x)
- if (x < 1)
- fun_l17_n42(x)
- else
- fun_l17_n273(x)
- end
-end
-
-def fun_l16_n556(x)
- if (x < 1)
- fun_l17_n261(x)
- else
- fun_l17_n328(x)
- end
-end
-
-def fun_l16_n557(x)
- if (x < 1)
- fun_l17_n28(x)
- else
- fun_l17_n403(x)
- end
-end
-
-def fun_l16_n558(x)
- if (x < 1)
- fun_l17_n766(x)
- else
- fun_l17_n363(x)
- end
-end
-
-def fun_l16_n559(x)
- if (x < 1)
- fun_l17_n35(x)
- else
- fun_l17_n648(x)
- end
-end
-
-def fun_l16_n560(x)
- if (x < 1)
- fun_l17_n288(x)
- else
- fun_l17_n684(x)
- end
-end
-
-def fun_l16_n561(x)
- if (x < 1)
- fun_l17_n529(x)
- else
- fun_l17_n908(x)
- end
-end
-
-def fun_l16_n562(x)
- if (x < 1)
- fun_l17_n244(x)
- else
- fun_l17_n342(x)
- end
-end
-
-def fun_l16_n563(x)
- if (x < 1)
- fun_l17_n535(x)
- else
- fun_l17_n750(x)
- end
-end
-
-def fun_l16_n564(x)
- if (x < 1)
- fun_l17_n761(x)
- else
- fun_l17_n106(x)
- end
-end
-
-def fun_l16_n565(x)
- if (x < 1)
- fun_l17_n236(x)
- else
- fun_l17_n95(x)
- end
-end
-
-def fun_l16_n566(x)
- if (x < 1)
- fun_l17_n356(x)
- else
- fun_l17_n129(x)
- end
-end
-
-def fun_l16_n567(x)
- if (x < 1)
- fun_l17_n297(x)
- else
- fun_l17_n247(x)
- end
-end
-
-def fun_l16_n568(x)
- if (x < 1)
- fun_l17_n735(x)
- else
- fun_l17_n781(x)
- end
-end
-
-def fun_l16_n569(x)
- if (x < 1)
- fun_l17_n650(x)
- else
- fun_l17_n377(x)
- end
-end
-
-def fun_l16_n570(x)
- if (x < 1)
- fun_l17_n872(x)
- else
- fun_l17_n52(x)
- end
-end
-
-def fun_l16_n571(x)
- if (x < 1)
- fun_l17_n970(x)
- else
- fun_l17_n719(x)
- end
-end
-
-def fun_l16_n572(x)
- if (x < 1)
- fun_l17_n380(x)
- else
- fun_l17_n121(x)
- end
-end
-
-def fun_l16_n573(x)
- if (x < 1)
- fun_l17_n190(x)
- else
- fun_l17_n675(x)
- end
-end
-
-def fun_l16_n574(x)
- if (x < 1)
- fun_l17_n269(x)
- else
- fun_l17_n362(x)
- end
-end
-
-def fun_l16_n575(x)
- if (x < 1)
- fun_l17_n480(x)
- else
- fun_l17_n228(x)
- end
-end
-
-def fun_l16_n576(x)
- if (x < 1)
- fun_l17_n791(x)
- else
- fun_l17_n45(x)
- end
-end
-
-def fun_l16_n577(x)
- if (x < 1)
- fun_l17_n403(x)
- else
- fun_l17_n887(x)
- end
-end
-
-def fun_l16_n578(x)
- if (x < 1)
- fun_l17_n139(x)
- else
- fun_l17_n446(x)
- end
-end
-
-def fun_l16_n579(x)
- if (x < 1)
- fun_l17_n472(x)
- else
- fun_l17_n869(x)
- end
-end
-
-def fun_l16_n580(x)
- if (x < 1)
- fun_l17_n738(x)
- else
- fun_l17_n298(x)
- end
-end
-
-def fun_l16_n581(x)
- if (x < 1)
- fun_l17_n822(x)
- else
- fun_l17_n859(x)
- end
-end
-
-def fun_l16_n582(x)
- if (x < 1)
- fun_l17_n768(x)
- else
- fun_l17_n814(x)
- end
-end
-
-def fun_l16_n583(x)
- if (x < 1)
- fun_l17_n892(x)
- else
- fun_l17_n821(x)
- end
-end
-
-def fun_l16_n584(x)
- if (x < 1)
- fun_l17_n234(x)
- else
- fun_l17_n276(x)
- end
-end
-
-def fun_l16_n585(x)
- if (x < 1)
- fun_l17_n162(x)
- else
- fun_l17_n873(x)
- end
-end
-
-def fun_l16_n586(x)
- if (x < 1)
- fun_l17_n932(x)
- else
- fun_l17_n227(x)
- end
-end
-
-def fun_l16_n587(x)
- if (x < 1)
- fun_l17_n105(x)
- else
- fun_l17_n620(x)
- end
-end
-
-def fun_l16_n588(x)
- if (x < 1)
- fun_l17_n137(x)
- else
- fun_l17_n941(x)
- end
-end
-
-def fun_l16_n589(x)
- if (x < 1)
- fun_l17_n936(x)
- else
- fun_l17_n877(x)
- end
-end
-
-def fun_l16_n590(x)
- if (x < 1)
- fun_l17_n280(x)
- else
- fun_l17_n711(x)
- end
-end
-
-def fun_l16_n591(x)
- if (x < 1)
- fun_l17_n968(x)
- else
- fun_l17_n695(x)
- end
-end
-
-def fun_l16_n592(x)
- if (x < 1)
- fun_l17_n774(x)
- else
- fun_l17_n674(x)
- end
-end
-
-def fun_l16_n593(x)
- if (x < 1)
- fun_l17_n421(x)
- else
- fun_l17_n516(x)
- end
-end
-
-def fun_l16_n594(x)
- if (x < 1)
- fun_l17_n830(x)
- else
- fun_l17_n852(x)
- end
-end
-
-def fun_l16_n595(x)
- if (x < 1)
- fun_l17_n659(x)
- else
- fun_l17_n114(x)
- end
-end
-
-def fun_l16_n596(x)
- if (x < 1)
- fun_l17_n411(x)
- else
- fun_l17_n217(x)
- end
-end
-
-def fun_l16_n597(x)
- if (x < 1)
- fun_l17_n506(x)
- else
- fun_l17_n721(x)
- end
-end
-
-def fun_l16_n598(x)
- if (x < 1)
- fun_l17_n979(x)
- else
- fun_l17_n579(x)
- end
-end
-
-def fun_l16_n599(x)
- if (x < 1)
- fun_l17_n423(x)
- else
- fun_l17_n765(x)
- end
-end
-
-def fun_l16_n600(x)
- if (x < 1)
- fun_l17_n138(x)
- else
- fun_l17_n878(x)
- end
-end
-
-def fun_l16_n601(x)
- if (x < 1)
- fun_l17_n616(x)
- else
- fun_l17_n531(x)
- end
-end
-
-def fun_l16_n602(x)
- if (x < 1)
- fun_l17_n737(x)
- else
- fun_l17_n936(x)
- end
-end
-
-def fun_l16_n603(x)
- if (x < 1)
- fun_l17_n106(x)
- else
- fun_l17_n147(x)
- end
-end
-
-def fun_l16_n604(x)
- if (x < 1)
- fun_l17_n562(x)
- else
- fun_l17_n852(x)
- end
-end
-
-def fun_l16_n605(x)
- if (x < 1)
- fun_l17_n473(x)
- else
- fun_l17_n771(x)
- end
-end
-
-def fun_l16_n606(x)
- if (x < 1)
- fun_l17_n778(x)
- else
- fun_l17_n463(x)
- end
-end
-
-def fun_l16_n607(x)
- if (x < 1)
- fun_l17_n35(x)
- else
- fun_l17_n341(x)
- end
-end
-
-def fun_l16_n608(x)
- if (x < 1)
- fun_l17_n268(x)
- else
- fun_l17_n659(x)
- end
-end
-
-def fun_l16_n609(x)
- if (x < 1)
- fun_l17_n734(x)
- else
- fun_l17_n174(x)
- end
-end
-
-def fun_l16_n610(x)
- if (x < 1)
- fun_l17_n815(x)
- else
- fun_l17_n798(x)
- end
-end
-
-def fun_l16_n611(x)
- if (x < 1)
- fun_l17_n251(x)
- else
- fun_l17_n694(x)
- end
-end
-
-def fun_l16_n612(x)
- if (x < 1)
- fun_l17_n597(x)
- else
- fun_l17_n245(x)
- end
-end
-
-def fun_l16_n613(x)
- if (x < 1)
- fun_l17_n990(x)
- else
- fun_l17_n58(x)
- end
-end
-
-def fun_l16_n614(x)
- if (x < 1)
- fun_l17_n877(x)
- else
- fun_l17_n13(x)
- end
-end
-
-def fun_l16_n615(x)
- if (x < 1)
- fun_l17_n7(x)
- else
- fun_l17_n787(x)
- end
-end
-
-def fun_l16_n616(x)
- if (x < 1)
- fun_l17_n372(x)
- else
- fun_l17_n643(x)
- end
-end
-
-def fun_l16_n617(x)
- if (x < 1)
- fun_l17_n592(x)
- else
- fun_l17_n508(x)
- end
-end
-
-def fun_l16_n618(x)
- if (x < 1)
- fun_l17_n928(x)
- else
- fun_l17_n923(x)
- end
-end
-
-def fun_l16_n619(x)
- if (x < 1)
- fun_l17_n407(x)
- else
- fun_l17_n885(x)
- end
-end
-
-def fun_l16_n620(x)
- if (x < 1)
- fun_l17_n4(x)
- else
- fun_l17_n532(x)
- end
-end
-
-def fun_l16_n621(x)
- if (x < 1)
- fun_l17_n791(x)
- else
- fun_l17_n141(x)
- end
-end
-
-def fun_l16_n622(x)
- if (x < 1)
- fun_l17_n529(x)
- else
- fun_l17_n140(x)
- end
-end
-
-def fun_l16_n623(x)
- if (x < 1)
- fun_l17_n713(x)
- else
- fun_l17_n867(x)
- end
-end
-
-def fun_l16_n624(x)
- if (x < 1)
- fun_l17_n148(x)
- else
- fun_l17_n195(x)
- end
-end
-
-def fun_l16_n625(x)
- if (x < 1)
- fun_l17_n287(x)
- else
- fun_l17_n662(x)
- end
-end
-
-def fun_l16_n626(x)
- if (x < 1)
- fun_l17_n678(x)
- else
- fun_l17_n262(x)
- end
-end
-
-def fun_l16_n627(x)
- if (x < 1)
- fun_l17_n217(x)
- else
- fun_l17_n612(x)
- end
-end
-
-def fun_l16_n628(x)
- if (x < 1)
- fun_l17_n826(x)
- else
- fun_l17_n164(x)
- end
-end
-
-def fun_l16_n629(x)
- if (x < 1)
- fun_l17_n360(x)
- else
- fun_l17_n221(x)
- end
-end
-
-def fun_l16_n630(x)
- if (x < 1)
- fun_l17_n842(x)
- else
- fun_l17_n362(x)
- end
-end
-
-def fun_l16_n631(x)
- if (x < 1)
- fun_l17_n53(x)
- else
- fun_l17_n216(x)
- end
-end
-
-def fun_l16_n632(x)
- if (x < 1)
- fun_l17_n628(x)
- else
- fun_l17_n150(x)
- end
-end
-
-def fun_l16_n633(x)
- if (x < 1)
- fun_l17_n206(x)
- else
- fun_l17_n789(x)
- end
-end
-
-def fun_l16_n634(x)
- if (x < 1)
- fun_l17_n26(x)
- else
- fun_l17_n376(x)
- end
-end
-
-def fun_l16_n635(x)
- if (x < 1)
- fun_l17_n614(x)
- else
- fun_l17_n109(x)
- end
-end
-
-def fun_l16_n636(x)
- if (x < 1)
- fun_l17_n626(x)
- else
- fun_l17_n456(x)
- end
-end
-
-def fun_l16_n637(x)
- if (x < 1)
- fun_l17_n836(x)
- else
- fun_l17_n602(x)
- end
-end
-
-def fun_l16_n638(x)
- if (x < 1)
- fun_l17_n793(x)
- else
- fun_l17_n791(x)
- end
-end
-
-def fun_l16_n639(x)
- if (x < 1)
- fun_l17_n689(x)
- else
- fun_l17_n714(x)
- end
-end
-
-def fun_l16_n640(x)
- if (x < 1)
- fun_l17_n587(x)
- else
- fun_l17_n203(x)
- end
-end
-
-def fun_l16_n641(x)
- if (x < 1)
- fun_l17_n686(x)
- else
- fun_l17_n297(x)
- end
-end
-
-def fun_l16_n642(x)
- if (x < 1)
- fun_l17_n394(x)
- else
- fun_l17_n564(x)
- end
-end
-
-def fun_l16_n643(x)
- if (x < 1)
- fun_l17_n669(x)
- else
- fun_l17_n250(x)
- end
-end
-
-def fun_l16_n644(x)
- if (x < 1)
- fun_l17_n407(x)
- else
- fun_l17_n631(x)
- end
-end
-
-def fun_l16_n645(x)
- if (x < 1)
- fun_l17_n928(x)
- else
- fun_l17_n856(x)
- end
-end
-
-def fun_l16_n646(x)
- if (x < 1)
- fun_l17_n344(x)
- else
- fun_l17_n529(x)
- end
-end
-
-def fun_l16_n647(x)
- if (x < 1)
- fun_l17_n540(x)
- else
- fun_l17_n468(x)
- end
-end
-
-def fun_l16_n648(x)
- if (x < 1)
- fun_l17_n831(x)
- else
- fun_l17_n350(x)
- end
-end
-
-def fun_l16_n649(x)
- if (x < 1)
- fun_l17_n154(x)
- else
- fun_l17_n587(x)
- end
-end
-
-def fun_l16_n650(x)
- if (x < 1)
- fun_l17_n379(x)
- else
- fun_l17_n421(x)
- end
-end
-
-def fun_l16_n651(x)
- if (x < 1)
- fun_l17_n839(x)
- else
- fun_l17_n782(x)
- end
-end
-
-def fun_l16_n652(x)
- if (x < 1)
- fun_l17_n408(x)
- else
- fun_l17_n923(x)
- end
-end
-
-def fun_l16_n653(x)
- if (x < 1)
- fun_l17_n51(x)
- else
- fun_l17_n317(x)
- end
-end
-
-def fun_l16_n654(x)
- if (x < 1)
- fun_l17_n635(x)
- else
- fun_l17_n39(x)
- end
-end
-
-def fun_l16_n655(x)
- if (x < 1)
- fun_l17_n921(x)
- else
- fun_l17_n641(x)
- end
-end
-
-def fun_l16_n656(x)
- if (x < 1)
- fun_l17_n615(x)
- else
- fun_l17_n118(x)
- end
-end
-
-def fun_l16_n657(x)
- if (x < 1)
- fun_l17_n673(x)
- else
- fun_l17_n842(x)
- end
-end
-
-def fun_l16_n658(x)
- if (x < 1)
- fun_l17_n743(x)
- else
- fun_l17_n594(x)
- end
-end
-
-def fun_l16_n659(x)
- if (x < 1)
- fun_l17_n85(x)
- else
- fun_l17_n787(x)
- end
-end
-
-def fun_l16_n660(x)
- if (x < 1)
- fun_l17_n363(x)
- else
- fun_l17_n830(x)
- end
-end
-
-def fun_l16_n661(x)
- if (x < 1)
- fun_l17_n897(x)
- else
- fun_l17_n989(x)
- end
-end
-
-def fun_l16_n662(x)
- if (x < 1)
- fun_l17_n644(x)
- else
- fun_l17_n924(x)
- end
-end
-
-def fun_l16_n663(x)
- if (x < 1)
- fun_l17_n812(x)
- else
- fun_l17_n159(x)
- end
-end
-
-def fun_l16_n664(x)
- if (x < 1)
- fun_l17_n937(x)
- else
- fun_l17_n720(x)
- end
-end
-
-def fun_l16_n665(x)
- if (x < 1)
- fun_l17_n732(x)
- else
- fun_l17_n516(x)
- end
-end
-
-def fun_l16_n666(x)
- if (x < 1)
- fun_l17_n399(x)
- else
- fun_l17_n728(x)
- end
-end
-
-def fun_l16_n667(x)
- if (x < 1)
- fun_l17_n673(x)
- else
- fun_l17_n735(x)
- end
-end
-
-def fun_l16_n668(x)
- if (x < 1)
- fun_l17_n321(x)
- else
- fun_l17_n850(x)
- end
-end
-
-def fun_l16_n669(x)
- if (x < 1)
- fun_l17_n873(x)
- else
- fun_l17_n701(x)
- end
-end
-
-def fun_l16_n670(x)
- if (x < 1)
- fun_l17_n683(x)
- else
- fun_l17_n903(x)
- end
-end
-
-def fun_l16_n671(x)
- if (x < 1)
- fun_l17_n440(x)
- else
- fun_l17_n178(x)
- end
-end
-
-def fun_l16_n672(x)
- if (x < 1)
- fun_l17_n619(x)
- else
- fun_l17_n785(x)
- end
-end
-
-def fun_l16_n673(x)
- if (x < 1)
- fun_l17_n185(x)
- else
- fun_l17_n794(x)
- end
-end
-
-def fun_l16_n674(x)
- if (x < 1)
- fun_l17_n543(x)
- else
- fun_l17_n161(x)
- end
-end
-
-def fun_l16_n675(x)
- if (x < 1)
- fun_l17_n898(x)
- else
- fun_l17_n590(x)
- end
-end
-
-def fun_l16_n676(x)
- if (x < 1)
- fun_l17_n471(x)
- else
- fun_l17_n66(x)
- end
-end
-
-def fun_l16_n677(x)
- if (x < 1)
- fun_l17_n764(x)
- else
- fun_l17_n163(x)
- end
-end
-
-def fun_l16_n678(x)
- if (x < 1)
- fun_l17_n290(x)
- else
- fun_l17_n353(x)
- end
-end
-
-def fun_l16_n679(x)
- if (x < 1)
- fun_l17_n851(x)
- else
- fun_l17_n7(x)
- end
-end
-
-def fun_l16_n680(x)
- if (x < 1)
- fun_l17_n741(x)
- else
- fun_l17_n180(x)
- end
-end
-
-def fun_l16_n681(x)
- if (x < 1)
- fun_l17_n887(x)
- else
- fun_l17_n258(x)
- end
-end
-
-def fun_l16_n682(x)
- if (x < 1)
- fun_l17_n536(x)
- else
- fun_l17_n84(x)
- end
-end
-
-def fun_l16_n683(x)
- if (x < 1)
- fun_l17_n447(x)
- else
- fun_l17_n455(x)
- end
-end
-
-def fun_l16_n684(x)
- if (x < 1)
- fun_l17_n23(x)
- else
- fun_l17_n47(x)
- end
-end
-
-def fun_l16_n685(x)
- if (x < 1)
- fun_l17_n983(x)
- else
- fun_l17_n470(x)
- end
-end
-
-def fun_l16_n686(x)
- if (x < 1)
- fun_l17_n261(x)
- else
- fun_l17_n138(x)
- end
-end
-
-def fun_l16_n687(x)
- if (x < 1)
- fun_l17_n791(x)
- else
- fun_l17_n474(x)
- end
-end
-
-def fun_l16_n688(x)
- if (x < 1)
- fun_l17_n148(x)
- else
- fun_l17_n317(x)
- end
-end
-
-def fun_l16_n689(x)
- if (x < 1)
- fun_l17_n107(x)
- else
- fun_l17_n529(x)
- end
-end
-
-def fun_l16_n690(x)
- if (x < 1)
- fun_l17_n310(x)
- else
- fun_l17_n394(x)
- end
-end
-
-def fun_l16_n691(x)
- if (x < 1)
- fun_l17_n193(x)
- else
- fun_l17_n348(x)
- end
-end
-
-def fun_l16_n692(x)
- if (x < 1)
- fun_l17_n308(x)
- else
- fun_l17_n26(x)
- end
-end
-
-def fun_l16_n693(x)
- if (x < 1)
- fun_l17_n502(x)
- else
- fun_l17_n517(x)
- end
-end
-
-def fun_l16_n694(x)
- if (x < 1)
- fun_l17_n396(x)
- else
- fun_l17_n886(x)
- end
-end
-
-def fun_l16_n695(x)
- if (x < 1)
- fun_l17_n179(x)
- else
- fun_l17_n35(x)
- end
-end
-
-def fun_l16_n696(x)
- if (x < 1)
- fun_l17_n431(x)
- else
- fun_l17_n392(x)
- end
-end
-
-def fun_l16_n697(x)
- if (x < 1)
- fun_l17_n778(x)
- else
- fun_l17_n766(x)
- end
-end
-
-def fun_l16_n698(x)
- if (x < 1)
- fun_l17_n868(x)
- else
- fun_l17_n31(x)
- end
-end
-
-def fun_l16_n699(x)
- if (x < 1)
- fun_l17_n277(x)
- else
- fun_l17_n649(x)
- end
-end
-
-def fun_l16_n700(x)
- if (x < 1)
- fun_l17_n638(x)
- else
- fun_l17_n411(x)
- end
-end
-
-def fun_l16_n701(x)
- if (x < 1)
- fun_l17_n730(x)
- else
- fun_l17_n188(x)
- end
-end
-
-def fun_l16_n702(x)
- if (x < 1)
- fun_l17_n530(x)
- else
- fun_l17_n540(x)
- end
-end
-
-def fun_l16_n703(x)
- if (x < 1)
- fun_l17_n691(x)
- else
- fun_l17_n550(x)
- end
-end
-
-def fun_l16_n704(x)
- if (x < 1)
- fun_l17_n691(x)
- else
- fun_l17_n25(x)
- end
-end
-
-def fun_l16_n705(x)
- if (x < 1)
- fun_l17_n744(x)
- else
- fun_l17_n333(x)
- end
-end
-
-def fun_l16_n706(x)
- if (x < 1)
- fun_l17_n845(x)
- else
- fun_l17_n229(x)
- end
-end
-
-def fun_l16_n707(x)
- if (x < 1)
- fun_l17_n784(x)
- else
- fun_l17_n123(x)
- end
-end
-
-def fun_l16_n708(x)
- if (x < 1)
- fun_l17_n88(x)
- else
- fun_l17_n961(x)
- end
-end
-
-def fun_l16_n709(x)
- if (x < 1)
- fun_l17_n310(x)
- else
- fun_l17_n943(x)
- end
-end
-
-def fun_l16_n710(x)
- if (x < 1)
- fun_l17_n265(x)
- else
- fun_l17_n958(x)
- end
-end
-
-def fun_l16_n711(x)
- if (x < 1)
- fun_l17_n483(x)
- else
- fun_l17_n577(x)
- end
-end
-
-def fun_l16_n712(x)
- if (x < 1)
- fun_l17_n703(x)
- else
- fun_l17_n625(x)
- end
-end
-
-def fun_l16_n713(x)
- if (x < 1)
- fun_l17_n301(x)
- else
- fun_l17_n17(x)
- end
-end
-
-def fun_l16_n714(x)
- if (x < 1)
- fun_l17_n455(x)
- else
- fun_l17_n647(x)
- end
-end
-
-def fun_l16_n715(x)
- if (x < 1)
- fun_l17_n628(x)
- else
- fun_l17_n748(x)
- end
-end
-
-def fun_l16_n716(x)
- if (x < 1)
- fun_l17_n10(x)
- else
- fun_l17_n632(x)
- end
-end
-
-def fun_l16_n717(x)
- if (x < 1)
- fun_l17_n82(x)
- else
- fun_l17_n888(x)
- end
-end
-
-def fun_l16_n718(x)
- if (x < 1)
- fun_l17_n234(x)
- else
- fun_l17_n554(x)
- end
-end
-
-def fun_l16_n719(x)
- if (x < 1)
- fun_l17_n811(x)
- else
- fun_l17_n46(x)
- end
-end
-
-def fun_l16_n720(x)
- if (x < 1)
- fun_l17_n227(x)
- else
- fun_l17_n89(x)
- end
-end
-
-def fun_l16_n721(x)
- if (x < 1)
- fun_l17_n780(x)
- else
- fun_l17_n941(x)
- end
-end
-
-def fun_l16_n722(x)
- if (x < 1)
- fun_l17_n877(x)
- else
- fun_l17_n262(x)
- end
-end
-
-def fun_l16_n723(x)
- if (x < 1)
- fun_l17_n649(x)
- else
- fun_l17_n477(x)
- end
-end
-
-def fun_l16_n724(x)
- if (x < 1)
- fun_l17_n902(x)
- else
- fun_l17_n315(x)
- end
-end
-
-def fun_l16_n725(x)
- if (x < 1)
- fun_l17_n985(x)
- else
- fun_l17_n232(x)
- end
-end
-
-def fun_l16_n726(x)
- if (x < 1)
- fun_l17_n5(x)
- else
- fun_l17_n981(x)
- end
-end
-
-def fun_l16_n727(x)
- if (x < 1)
- fun_l17_n730(x)
- else
- fun_l17_n780(x)
- end
-end
-
-def fun_l16_n728(x)
- if (x < 1)
- fun_l17_n626(x)
- else
- fun_l17_n272(x)
- end
-end
-
-def fun_l16_n729(x)
- if (x < 1)
- fun_l17_n380(x)
- else
- fun_l17_n289(x)
- end
-end
-
-def fun_l16_n730(x)
- if (x < 1)
- fun_l17_n711(x)
- else
- fun_l17_n861(x)
- end
-end
-
-def fun_l16_n731(x)
- if (x < 1)
- fun_l17_n351(x)
- else
- fun_l17_n948(x)
- end
-end
-
-def fun_l16_n732(x)
- if (x < 1)
- fun_l17_n864(x)
- else
- fun_l17_n60(x)
- end
-end
-
-def fun_l16_n733(x)
- if (x < 1)
- fun_l17_n974(x)
- else
- fun_l17_n475(x)
- end
-end
-
-def fun_l16_n734(x)
- if (x < 1)
- fun_l17_n855(x)
- else
- fun_l17_n988(x)
- end
-end
-
-def fun_l16_n735(x)
- if (x < 1)
- fun_l17_n740(x)
- else
- fun_l17_n559(x)
- end
-end
-
-def fun_l16_n736(x)
- if (x < 1)
- fun_l17_n449(x)
- else
- fun_l17_n580(x)
- end
-end
-
-def fun_l16_n737(x)
- if (x < 1)
- fun_l17_n313(x)
- else
- fun_l17_n462(x)
- end
-end
-
-def fun_l16_n738(x)
- if (x < 1)
- fun_l17_n177(x)
- else
- fun_l17_n812(x)
- end
-end
-
-def fun_l16_n739(x)
- if (x < 1)
- fun_l17_n518(x)
- else
- fun_l17_n453(x)
- end
-end
-
-def fun_l16_n740(x)
- if (x < 1)
- fun_l17_n190(x)
- else
- fun_l17_n722(x)
- end
-end
-
-def fun_l16_n741(x)
- if (x < 1)
- fun_l17_n509(x)
- else
- fun_l17_n203(x)
- end
-end
-
-def fun_l16_n742(x)
- if (x < 1)
- fun_l17_n901(x)
- else
- fun_l17_n497(x)
- end
-end
-
-def fun_l16_n743(x)
- if (x < 1)
- fun_l17_n19(x)
- else
- fun_l17_n789(x)
- end
-end
-
-def fun_l16_n744(x)
- if (x < 1)
- fun_l17_n879(x)
- else
- fun_l17_n554(x)
- end
-end
-
-def fun_l16_n745(x)
- if (x < 1)
- fun_l17_n106(x)
- else
- fun_l17_n255(x)
- end
-end
-
-def fun_l16_n746(x)
- if (x < 1)
- fun_l17_n942(x)
- else
- fun_l17_n701(x)
- end
-end
-
-def fun_l16_n747(x)
- if (x < 1)
- fun_l17_n738(x)
- else
- fun_l17_n459(x)
- end
-end
-
-def fun_l16_n748(x)
- if (x < 1)
- fun_l17_n984(x)
- else
- fun_l17_n501(x)
- end
-end
-
-def fun_l16_n749(x)
- if (x < 1)
- fun_l17_n399(x)
- else
- fun_l17_n165(x)
- end
-end
-
-def fun_l16_n750(x)
- if (x < 1)
- fun_l17_n956(x)
- else
- fun_l17_n210(x)
- end
-end
-
-def fun_l16_n751(x)
- if (x < 1)
- fun_l17_n549(x)
- else
- fun_l17_n406(x)
- end
-end
-
-def fun_l16_n752(x)
- if (x < 1)
- fun_l17_n671(x)
- else
- fun_l17_n809(x)
- end
-end
-
-def fun_l16_n753(x)
- if (x < 1)
- fun_l17_n807(x)
- else
- fun_l17_n544(x)
- end
-end
-
-def fun_l16_n754(x)
- if (x < 1)
- fun_l17_n150(x)
- else
- fun_l17_n705(x)
- end
-end
-
-def fun_l16_n755(x)
- if (x < 1)
- fun_l17_n822(x)
- else
- fun_l17_n627(x)
- end
-end
-
-def fun_l16_n756(x)
- if (x < 1)
- fun_l17_n429(x)
- else
- fun_l17_n598(x)
- end
-end
-
-def fun_l16_n757(x)
- if (x < 1)
- fun_l17_n327(x)
- else
- fun_l17_n391(x)
- end
-end
-
-def fun_l16_n758(x)
- if (x < 1)
- fun_l17_n335(x)
- else
- fun_l17_n779(x)
- end
-end
-
-def fun_l16_n759(x)
- if (x < 1)
- fun_l17_n149(x)
- else
- fun_l17_n637(x)
- end
-end
-
-def fun_l16_n760(x)
- if (x < 1)
- fun_l17_n83(x)
- else
- fun_l17_n616(x)
- end
-end
-
-def fun_l16_n761(x)
- if (x < 1)
- fun_l17_n997(x)
- else
- fun_l17_n189(x)
- end
-end
-
-def fun_l16_n762(x)
- if (x < 1)
- fun_l17_n779(x)
- else
- fun_l17_n175(x)
- end
-end
-
-def fun_l16_n763(x)
- if (x < 1)
- fun_l17_n73(x)
- else
- fun_l17_n473(x)
- end
-end
-
-def fun_l16_n764(x)
- if (x < 1)
- fun_l17_n784(x)
- else
- fun_l17_n415(x)
- end
-end
-
-def fun_l16_n765(x)
- if (x < 1)
- fun_l17_n809(x)
- else
- fun_l17_n263(x)
- end
-end
-
-def fun_l16_n766(x)
- if (x < 1)
- fun_l17_n114(x)
- else
- fun_l17_n898(x)
- end
-end
-
-def fun_l16_n767(x)
- if (x < 1)
- fun_l17_n983(x)
- else
- fun_l17_n114(x)
- end
-end
-
-def fun_l16_n768(x)
- if (x < 1)
- fun_l17_n141(x)
- else
- fun_l17_n492(x)
- end
-end
-
-def fun_l16_n769(x)
- if (x < 1)
- fun_l17_n216(x)
- else
- fun_l17_n610(x)
- end
-end
-
-def fun_l16_n770(x)
- if (x < 1)
- fun_l17_n797(x)
- else
- fun_l17_n164(x)
- end
-end
-
-def fun_l16_n771(x)
- if (x < 1)
- fun_l17_n434(x)
- else
- fun_l17_n876(x)
- end
-end
-
-def fun_l16_n772(x)
- if (x < 1)
- fun_l17_n165(x)
- else
- fun_l17_n646(x)
- end
-end
-
-def fun_l16_n773(x)
- if (x < 1)
- fun_l17_n359(x)
- else
- fun_l17_n754(x)
- end
-end
-
-def fun_l16_n774(x)
- if (x < 1)
- fun_l17_n314(x)
- else
- fun_l17_n745(x)
- end
-end
-
-def fun_l16_n775(x)
- if (x < 1)
- fun_l17_n35(x)
- else
- fun_l17_n673(x)
- end
-end
-
-def fun_l16_n776(x)
- if (x < 1)
- fun_l17_n51(x)
- else
- fun_l17_n708(x)
- end
-end
-
-def fun_l16_n777(x)
- if (x < 1)
- fun_l17_n451(x)
- else
- fun_l17_n30(x)
- end
-end
-
-def fun_l16_n778(x)
- if (x < 1)
- fun_l17_n821(x)
- else
- fun_l17_n114(x)
- end
-end
-
-def fun_l16_n779(x)
- if (x < 1)
- fun_l17_n727(x)
- else
- fun_l17_n71(x)
- end
-end
-
-def fun_l16_n780(x)
- if (x < 1)
- fun_l17_n404(x)
- else
- fun_l17_n42(x)
- end
-end
-
-def fun_l16_n781(x)
- if (x < 1)
- fun_l17_n926(x)
- else
- fun_l17_n53(x)
- end
-end
-
-def fun_l16_n782(x)
- if (x < 1)
- fun_l17_n499(x)
- else
- fun_l17_n429(x)
- end
-end
-
-def fun_l16_n783(x)
- if (x < 1)
- fun_l17_n887(x)
- else
- fun_l17_n912(x)
- end
-end
-
-def fun_l16_n784(x)
- if (x < 1)
- fun_l17_n900(x)
- else
- fun_l17_n163(x)
- end
-end
-
-def fun_l16_n785(x)
- if (x < 1)
- fun_l17_n589(x)
- else
- fun_l17_n271(x)
- end
-end
-
-def fun_l16_n786(x)
- if (x < 1)
- fun_l17_n732(x)
- else
- fun_l17_n296(x)
- end
-end
-
-def fun_l16_n787(x)
- if (x < 1)
- fun_l17_n711(x)
- else
- fun_l17_n777(x)
- end
-end
-
-def fun_l16_n788(x)
- if (x < 1)
- fun_l17_n426(x)
- else
- fun_l17_n291(x)
- end
-end
-
-def fun_l16_n789(x)
- if (x < 1)
- fun_l17_n833(x)
- else
- fun_l17_n958(x)
- end
-end
-
-def fun_l16_n790(x)
- if (x < 1)
- fun_l17_n680(x)
- else
- fun_l17_n707(x)
- end
-end
-
-def fun_l16_n791(x)
- if (x < 1)
- fun_l17_n668(x)
- else
- fun_l17_n727(x)
- end
-end
-
-def fun_l16_n792(x)
- if (x < 1)
- fun_l17_n948(x)
- else
- fun_l17_n160(x)
- end
-end
-
-def fun_l16_n793(x)
- if (x < 1)
- fun_l17_n847(x)
- else
- fun_l17_n643(x)
- end
-end
-
-def fun_l16_n794(x)
- if (x < 1)
- fun_l17_n89(x)
- else
- fun_l17_n704(x)
- end
-end
-
-def fun_l16_n795(x)
- if (x < 1)
- fun_l17_n52(x)
- else
- fun_l17_n307(x)
- end
-end
-
-def fun_l16_n796(x)
- if (x < 1)
- fun_l17_n632(x)
- else
- fun_l17_n839(x)
- end
-end
-
-def fun_l16_n797(x)
- if (x < 1)
- fun_l17_n343(x)
- else
- fun_l17_n969(x)
- end
-end
-
-def fun_l16_n798(x)
- if (x < 1)
- fun_l17_n850(x)
- else
- fun_l17_n975(x)
- end
-end
-
-def fun_l16_n799(x)
- if (x < 1)
- fun_l17_n119(x)
- else
- fun_l17_n303(x)
- end
-end
-
-def fun_l16_n800(x)
- if (x < 1)
- fun_l17_n870(x)
- else
- fun_l17_n4(x)
- end
-end
-
-def fun_l16_n801(x)
- if (x < 1)
- fun_l17_n223(x)
- else
- fun_l17_n618(x)
- end
-end
-
-def fun_l16_n802(x)
- if (x < 1)
- fun_l17_n183(x)
- else
- fun_l17_n358(x)
- end
-end
-
-def fun_l16_n803(x)
- if (x < 1)
- fun_l17_n152(x)
- else
- fun_l17_n76(x)
- end
-end
-
-def fun_l16_n804(x)
- if (x < 1)
- fun_l17_n487(x)
- else
- fun_l17_n475(x)
- end
-end
-
-def fun_l16_n805(x)
- if (x < 1)
- fun_l17_n900(x)
- else
- fun_l17_n786(x)
- end
-end
-
-def fun_l16_n806(x)
- if (x < 1)
- fun_l17_n881(x)
- else
- fun_l17_n523(x)
- end
-end
-
-def fun_l16_n807(x)
- if (x < 1)
- fun_l17_n686(x)
- else
- fun_l17_n5(x)
- end
-end
-
-def fun_l16_n808(x)
- if (x < 1)
- fun_l17_n841(x)
- else
- fun_l17_n73(x)
- end
-end
-
-def fun_l16_n809(x)
- if (x < 1)
- fun_l17_n737(x)
- else
- fun_l17_n590(x)
- end
-end
-
-def fun_l16_n810(x)
- if (x < 1)
- fun_l17_n252(x)
- else
- fun_l17_n867(x)
- end
-end
-
-def fun_l16_n811(x)
- if (x < 1)
- fun_l17_n333(x)
- else
- fun_l17_n418(x)
- end
-end
-
-def fun_l16_n812(x)
- if (x < 1)
- fun_l17_n155(x)
- else
- fun_l17_n104(x)
- end
-end
-
-def fun_l16_n813(x)
- if (x < 1)
- fun_l17_n933(x)
- else
- fun_l17_n344(x)
- end
-end
-
-def fun_l16_n814(x)
- if (x < 1)
- fun_l17_n107(x)
- else
- fun_l17_n784(x)
- end
-end
-
-def fun_l16_n815(x)
- if (x < 1)
- fun_l17_n355(x)
- else
- fun_l17_n184(x)
- end
-end
-
-def fun_l16_n816(x)
- if (x < 1)
- fun_l17_n266(x)
- else
- fun_l17_n315(x)
- end
-end
-
-def fun_l16_n817(x)
- if (x < 1)
- fun_l17_n821(x)
- else
- fun_l17_n534(x)
- end
-end
-
-def fun_l16_n818(x)
- if (x < 1)
- fun_l17_n126(x)
- else
- fun_l17_n712(x)
- end
-end
-
-def fun_l16_n819(x)
- if (x < 1)
- fun_l17_n309(x)
- else
- fun_l17_n39(x)
- end
-end
-
-def fun_l16_n820(x)
- if (x < 1)
- fun_l17_n629(x)
- else
- fun_l17_n689(x)
- end
-end
-
-def fun_l16_n821(x)
- if (x < 1)
- fun_l17_n35(x)
- else
- fun_l17_n250(x)
- end
-end
-
-def fun_l16_n822(x)
- if (x < 1)
- fun_l17_n276(x)
- else
- fun_l17_n350(x)
- end
-end
-
-def fun_l16_n823(x)
- if (x < 1)
- fun_l17_n775(x)
- else
- fun_l17_n542(x)
- end
-end
-
-def fun_l16_n824(x)
- if (x < 1)
- fun_l17_n739(x)
- else
- fun_l17_n441(x)
- end
-end
-
-def fun_l16_n825(x)
- if (x < 1)
- fun_l17_n86(x)
- else
- fun_l17_n360(x)
- end
-end
-
-def fun_l16_n826(x)
- if (x < 1)
- fun_l17_n196(x)
- else
- fun_l17_n406(x)
- end
-end
-
-def fun_l16_n827(x)
- if (x < 1)
- fun_l17_n612(x)
- else
- fun_l17_n471(x)
- end
-end
-
-def fun_l16_n828(x)
- if (x < 1)
- fun_l17_n409(x)
- else
- fun_l17_n572(x)
- end
-end
-
-def fun_l16_n829(x)
- if (x < 1)
- fun_l17_n347(x)
- else
- fun_l17_n450(x)
- end
-end
-
-def fun_l16_n830(x)
- if (x < 1)
- fun_l17_n75(x)
- else
- fun_l17_n185(x)
- end
-end
-
-def fun_l16_n831(x)
- if (x < 1)
- fun_l17_n904(x)
- else
- fun_l17_n894(x)
- end
-end
-
-def fun_l16_n832(x)
- if (x < 1)
- fun_l17_n889(x)
- else
- fun_l17_n651(x)
- end
-end
-
-def fun_l16_n833(x)
- if (x < 1)
- fun_l17_n670(x)
- else
- fun_l17_n216(x)
- end
-end
-
-def fun_l16_n834(x)
- if (x < 1)
- fun_l17_n212(x)
- else
- fun_l17_n445(x)
- end
-end
-
-def fun_l16_n835(x)
- if (x < 1)
- fun_l17_n453(x)
- else
- fun_l17_n187(x)
- end
-end
-
-def fun_l16_n836(x)
- if (x < 1)
- fun_l17_n614(x)
- else
- fun_l17_n203(x)
- end
-end
-
-def fun_l16_n837(x)
- if (x < 1)
- fun_l17_n177(x)
- else
- fun_l17_n721(x)
- end
-end
-
-def fun_l16_n838(x)
- if (x < 1)
- fun_l17_n910(x)
- else
- fun_l17_n510(x)
- end
-end
-
-def fun_l16_n839(x)
- if (x < 1)
- fun_l17_n880(x)
- else
- fun_l17_n365(x)
- end
-end
-
-def fun_l16_n840(x)
- if (x < 1)
- fun_l17_n336(x)
- else
- fun_l17_n483(x)
- end
-end
-
-def fun_l16_n841(x)
- if (x < 1)
- fun_l17_n83(x)
- else
- fun_l17_n947(x)
- end
-end
-
-def fun_l16_n842(x)
- if (x < 1)
- fun_l17_n723(x)
- else
- fun_l17_n209(x)
- end
-end
-
-def fun_l16_n843(x)
- if (x < 1)
- fun_l17_n432(x)
- else
- fun_l17_n664(x)
- end
-end
-
-def fun_l16_n844(x)
- if (x < 1)
- fun_l17_n906(x)
- else
- fun_l17_n472(x)
- end
-end
-
-def fun_l16_n845(x)
- if (x < 1)
- fun_l17_n147(x)
- else
- fun_l17_n623(x)
- end
-end
-
-def fun_l16_n846(x)
- if (x < 1)
- fun_l17_n296(x)
- else
- fun_l17_n44(x)
- end
-end
-
-def fun_l16_n847(x)
- if (x < 1)
- fun_l17_n498(x)
- else
- fun_l17_n764(x)
- end
-end
-
-def fun_l16_n848(x)
- if (x < 1)
- fun_l17_n428(x)
- else
- fun_l17_n575(x)
- end
-end
-
-def fun_l16_n849(x)
- if (x < 1)
- fun_l17_n311(x)
- else
- fun_l17_n975(x)
- end
-end
-
-def fun_l16_n850(x)
- if (x < 1)
- fun_l17_n482(x)
- else
- fun_l17_n388(x)
- end
-end
-
-def fun_l16_n851(x)
- if (x < 1)
- fun_l17_n174(x)
- else
- fun_l17_n190(x)
- end
-end
-
-def fun_l16_n852(x)
- if (x < 1)
- fun_l17_n28(x)
- else
- fun_l17_n598(x)
- end
-end
-
-def fun_l16_n853(x)
- if (x < 1)
- fun_l17_n142(x)
- else
- fun_l17_n340(x)
- end
-end
-
-def fun_l16_n854(x)
- if (x < 1)
- fun_l17_n793(x)
- else
- fun_l17_n226(x)
- end
-end
-
-def fun_l16_n855(x)
- if (x < 1)
- fun_l17_n268(x)
- else
- fun_l17_n201(x)
- end
-end
-
-def fun_l16_n856(x)
- if (x < 1)
- fun_l17_n52(x)
- else
- fun_l17_n871(x)
- end
-end
-
-def fun_l16_n857(x)
- if (x < 1)
- fun_l17_n30(x)
- else
- fun_l17_n673(x)
- end
-end
-
-def fun_l16_n858(x)
- if (x < 1)
- fun_l17_n794(x)
- else
- fun_l17_n839(x)
- end
-end
-
-def fun_l16_n859(x)
- if (x < 1)
- fun_l17_n162(x)
- else
- fun_l17_n655(x)
- end
-end
-
-def fun_l16_n860(x)
- if (x < 1)
- fun_l17_n770(x)
- else
- fun_l17_n879(x)
- end
-end
-
-def fun_l16_n861(x)
- if (x < 1)
- fun_l17_n93(x)
- else
- fun_l17_n338(x)
- end
-end
-
-def fun_l16_n862(x)
- if (x < 1)
- fun_l17_n468(x)
- else
- fun_l17_n977(x)
- end
-end
-
-def fun_l16_n863(x)
- if (x < 1)
- fun_l17_n627(x)
- else
- fun_l17_n296(x)
- end
-end
-
-def fun_l16_n864(x)
- if (x < 1)
- fun_l17_n402(x)
- else
- fun_l17_n515(x)
- end
-end
-
-def fun_l16_n865(x)
- if (x < 1)
- fun_l17_n793(x)
- else
- fun_l17_n62(x)
- end
-end
-
-def fun_l16_n866(x)
- if (x < 1)
- fun_l17_n87(x)
- else
- fun_l17_n532(x)
- end
-end
-
-def fun_l16_n867(x)
- if (x < 1)
- fun_l17_n766(x)
- else
- fun_l17_n162(x)
- end
-end
-
-def fun_l16_n868(x)
- if (x < 1)
- fun_l17_n214(x)
- else
- fun_l17_n827(x)
- end
-end
-
-def fun_l16_n869(x)
- if (x < 1)
- fun_l17_n879(x)
- else
- fun_l17_n285(x)
- end
-end
-
-def fun_l16_n870(x)
- if (x < 1)
- fun_l17_n619(x)
- else
- fun_l17_n648(x)
- end
-end
-
-def fun_l16_n871(x)
- if (x < 1)
- fun_l17_n150(x)
- else
- fun_l17_n458(x)
- end
-end
-
-def fun_l16_n872(x)
- if (x < 1)
- fun_l17_n346(x)
- else
- fun_l17_n824(x)
- end
-end
-
-def fun_l16_n873(x)
- if (x < 1)
- fun_l17_n839(x)
- else
- fun_l17_n188(x)
- end
-end
-
-def fun_l16_n874(x)
- if (x < 1)
- fun_l17_n202(x)
- else
- fun_l17_n147(x)
- end
-end
-
-def fun_l16_n875(x)
- if (x < 1)
- fun_l17_n779(x)
- else
- fun_l17_n217(x)
- end
-end
-
-def fun_l16_n876(x)
- if (x < 1)
- fun_l17_n417(x)
- else
- fun_l17_n350(x)
- end
-end
-
-def fun_l16_n877(x)
- if (x < 1)
- fun_l17_n971(x)
- else
- fun_l17_n825(x)
- end
-end
-
-def fun_l16_n878(x)
- if (x < 1)
- fun_l17_n843(x)
- else
- fun_l17_n431(x)
- end
-end
-
-def fun_l16_n879(x)
- if (x < 1)
- fun_l17_n560(x)
- else
- fun_l17_n421(x)
- end
-end
-
-def fun_l16_n880(x)
- if (x < 1)
- fun_l17_n399(x)
- else
- fun_l17_n101(x)
- end
-end
-
-def fun_l16_n881(x)
- if (x < 1)
- fun_l17_n458(x)
- else
- fun_l17_n805(x)
- end
-end
-
-def fun_l16_n882(x)
- if (x < 1)
- fun_l17_n590(x)
- else
- fun_l17_n924(x)
- end
-end
-
-def fun_l16_n883(x)
- if (x < 1)
- fun_l17_n753(x)
- else
- fun_l17_n128(x)
- end
-end
-
-def fun_l16_n884(x)
- if (x < 1)
- fun_l17_n271(x)
- else
- fun_l17_n366(x)
- end
-end
-
-def fun_l16_n885(x)
- if (x < 1)
- fun_l17_n251(x)
- else
- fun_l17_n581(x)
- end
-end
-
-def fun_l16_n886(x)
- if (x < 1)
- fun_l17_n82(x)
- else
- fun_l17_n212(x)
- end
-end
-
-def fun_l16_n887(x)
- if (x < 1)
- fun_l17_n254(x)
- else
- fun_l17_n476(x)
- end
-end
-
-def fun_l16_n888(x)
- if (x < 1)
- fun_l17_n774(x)
- else
- fun_l17_n23(x)
- end
-end
-
-def fun_l16_n889(x)
- if (x < 1)
- fun_l17_n258(x)
- else
- fun_l17_n931(x)
- end
-end
-
-def fun_l16_n890(x)
- if (x < 1)
- fun_l17_n60(x)
- else
- fun_l17_n267(x)
- end
-end
-
-def fun_l16_n891(x)
- if (x < 1)
- fun_l17_n465(x)
- else
- fun_l17_n298(x)
- end
-end
-
-def fun_l16_n892(x)
- if (x < 1)
- fun_l17_n284(x)
- else
- fun_l17_n59(x)
- end
-end
-
-def fun_l16_n893(x)
- if (x < 1)
- fun_l17_n485(x)
- else
- fun_l17_n19(x)
- end
-end
-
-def fun_l16_n894(x)
- if (x < 1)
- fun_l17_n676(x)
- else
- fun_l17_n196(x)
- end
-end
-
-def fun_l16_n895(x)
- if (x < 1)
- fun_l17_n894(x)
- else
- fun_l17_n667(x)
- end
-end
-
-def fun_l16_n896(x)
- if (x < 1)
- fun_l17_n234(x)
- else
- fun_l17_n115(x)
- end
-end
-
-def fun_l16_n897(x)
- if (x < 1)
- fun_l17_n161(x)
- else
- fun_l17_n47(x)
- end
-end
-
-def fun_l16_n898(x)
- if (x < 1)
- fun_l17_n598(x)
- else
- fun_l17_n796(x)
- end
-end
-
-def fun_l16_n899(x)
- if (x < 1)
- fun_l17_n191(x)
- else
- fun_l17_n36(x)
- end
-end
-
-def fun_l16_n900(x)
- if (x < 1)
- fun_l17_n803(x)
- else
- fun_l17_n894(x)
- end
-end
-
-def fun_l16_n901(x)
- if (x < 1)
- fun_l17_n225(x)
- else
- fun_l17_n608(x)
- end
-end
-
-def fun_l16_n902(x)
- if (x < 1)
- fun_l17_n318(x)
- else
- fun_l17_n667(x)
- end
-end
-
-def fun_l16_n903(x)
- if (x < 1)
- fun_l17_n815(x)
- else
- fun_l17_n645(x)
- end
-end
-
-def fun_l16_n904(x)
- if (x < 1)
- fun_l17_n891(x)
- else
- fun_l17_n465(x)
- end
-end
-
-def fun_l16_n905(x)
- if (x < 1)
- fun_l17_n789(x)
- else
- fun_l17_n573(x)
- end
-end
-
-def fun_l16_n906(x)
- if (x < 1)
- fun_l17_n139(x)
- else
- fun_l17_n745(x)
- end
-end
-
-def fun_l16_n907(x)
- if (x < 1)
- fun_l17_n632(x)
- else
- fun_l17_n625(x)
- end
-end
-
-def fun_l16_n908(x)
- if (x < 1)
- fun_l17_n249(x)
- else
- fun_l17_n279(x)
- end
-end
-
-def fun_l16_n909(x)
- if (x < 1)
- fun_l17_n357(x)
- else
- fun_l17_n477(x)
- end
-end
-
-def fun_l16_n910(x)
- if (x < 1)
- fun_l17_n796(x)
- else
- fun_l17_n313(x)
- end
-end
-
-def fun_l16_n911(x)
- if (x < 1)
- fun_l17_n917(x)
- else
- fun_l17_n775(x)
- end
-end
-
-def fun_l16_n912(x)
- if (x < 1)
- fun_l17_n451(x)
- else
- fun_l17_n102(x)
- end
-end
-
-def fun_l16_n913(x)
- if (x < 1)
- fun_l17_n782(x)
- else
- fun_l17_n998(x)
- end
-end
-
-def fun_l16_n914(x)
- if (x < 1)
- fun_l17_n237(x)
- else
- fun_l17_n586(x)
- end
-end
-
-def fun_l16_n915(x)
- if (x < 1)
- fun_l17_n399(x)
- else
- fun_l17_n676(x)
- end
-end
-
-def fun_l16_n916(x)
- if (x < 1)
- fun_l17_n65(x)
- else
- fun_l17_n61(x)
- end
-end
-
-def fun_l16_n917(x)
- if (x < 1)
- fun_l17_n861(x)
- else
- fun_l17_n72(x)
- end
-end
-
-def fun_l16_n918(x)
- if (x < 1)
- fun_l17_n375(x)
- else
- fun_l17_n446(x)
- end
-end
-
-def fun_l16_n919(x)
- if (x < 1)
- fun_l17_n776(x)
- else
- fun_l17_n302(x)
- end
-end
-
-def fun_l16_n920(x)
- if (x < 1)
- fun_l17_n216(x)
- else
- fun_l17_n804(x)
- end
-end
-
-def fun_l16_n921(x)
- if (x < 1)
- fun_l17_n667(x)
- else
- fun_l17_n593(x)
- end
-end
-
-def fun_l16_n922(x)
- if (x < 1)
- fun_l17_n499(x)
- else
- fun_l17_n577(x)
- end
-end
-
-def fun_l16_n923(x)
- if (x < 1)
- fun_l17_n41(x)
- else
- fun_l17_n316(x)
- end
-end
-
-def fun_l16_n924(x)
- if (x < 1)
- fun_l17_n521(x)
- else
- fun_l17_n86(x)
- end
-end
-
-def fun_l16_n925(x)
- if (x < 1)
- fun_l17_n695(x)
- else
- fun_l17_n662(x)
- end
-end
-
-def fun_l16_n926(x)
- if (x < 1)
- fun_l17_n379(x)
- else
- fun_l17_n58(x)
- end
-end
-
-def fun_l16_n927(x)
- if (x < 1)
- fun_l17_n820(x)
- else
- fun_l17_n801(x)
- end
-end
-
-def fun_l16_n928(x)
- if (x < 1)
- fun_l17_n175(x)
- else
- fun_l17_n865(x)
- end
-end
-
-def fun_l16_n929(x)
- if (x < 1)
- fun_l17_n903(x)
- else
- fun_l17_n644(x)
- end
-end
-
-def fun_l16_n930(x)
- if (x < 1)
- fun_l17_n801(x)
- else
- fun_l17_n265(x)
- end
-end
-
-def fun_l16_n931(x)
- if (x < 1)
- fun_l17_n292(x)
- else
- fun_l17_n897(x)
- end
-end
-
-def fun_l16_n932(x)
- if (x < 1)
- fun_l17_n666(x)
- else
- fun_l17_n531(x)
- end
-end
-
-def fun_l16_n933(x)
- if (x < 1)
- fun_l17_n929(x)
- else
- fun_l17_n205(x)
- end
-end
-
-def fun_l16_n934(x)
- if (x < 1)
- fun_l17_n557(x)
- else
- fun_l17_n70(x)
- end
-end
-
-def fun_l16_n935(x)
- if (x < 1)
- fun_l17_n831(x)
- else
- fun_l17_n194(x)
- end
-end
-
-def fun_l16_n936(x)
- if (x < 1)
- fun_l17_n277(x)
- else
- fun_l17_n786(x)
- end
-end
-
-def fun_l16_n937(x)
- if (x < 1)
- fun_l17_n464(x)
- else
- fun_l17_n482(x)
- end
-end
-
-def fun_l16_n938(x)
- if (x < 1)
- fun_l17_n782(x)
- else
- fun_l17_n60(x)
- end
-end
-
-def fun_l16_n939(x)
- if (x < 1)
- fun_l17_n780(x)
- else
- fun_l17_n786(x)
- end
-end
-
-def fun_l16_n940(x)
- if (x < 1)
- fun_l17_n201(x)
- else
- fun_l17_n614(x)
- end
-end
-
-def fun_l16_n941(x)
- if (x < 1)
- fun_l17_n318(x)
- else
- fun_l17_n210(x)
- end
-end
-
-def fun_l16_n942(x)
- if (x < 1)
- fun_l17_n831(x)
- else
- fun_l17_n293(x)
- end
-end
-
-def fun_l16_n943(x)
- if (x < 1)
- fun_l17_n368(x)
- else
- fun_l17_n292(x)
- end
-end
-
-def fun_l16_n944(x)
- if (x < 1)
- fun_l17_n924(x)
- else
- fun_l17_n20(x)
- end
-end
-
-def fun_l16_n945(x)
- if (x < 1)
- fun_l17_n340(x)
- else
- fun_l17_n268(x)
- end
-end
-
-def fun_l16_n946(x)
- if (x < 1)
- fun_l17_n913(x)
- else
- fun_l17_n877(x)
- end
-end
-
-def fun_l16_n947(x)
- if (x < 1)
- fun_l17_n577(x)
- else
- fun_l17_n973(x)
- end
-end
-
-def fun_l16_n948(x)
- if (x < 1)
- fun_l17_n101(x)
- else
- fun_l17_n350(x)
- end
-end
-
-def fun_l16_n949(x)
- if (x < 1)
- fun_l17_n1(x)
- else
- fun_l17_n683(x)
- end
-end
-
-def fun_l16_n950(x)
- if (x < 1)
- fun_l17_n290(x)
- else
- fun_l17_n30(x)
- end
-end
-
-def fun_l16_n951(x)
- if (x < 1)
- fun_l17_n965(x)
- else
- fun_l17_n165(x)
- end
-end
-
-def fun_l16_n952(x)
- if (x < 1)
- fun_l17_n532(x)
- else
- fun_l17_n887(x)
- end
-end
-
-def fun_l16_n953(x)
- if (x < 1)
- fun_l17_n73(x)
- else
- fun_l17_n82(x)
- end
-end
-
-def fun_l16_n954(x)
- if (x < 1)
- fun_l17_n518(x)
- else
- fun_l17_n886(x)
- end
-end
-
-def fun_l16_n955(x)
- if (x < 1)
- fun_l17_n990(x)
- else
- fun_l17_n213(x)
- end
-end
-
-def fun_l16_n956(x)
- if (x < 1)
- fun_l17_n489(x)
- else
- fun_l17_n937(x)
- end
-end
-
-def fun_l16_n957(x)
- if (x < 1)
- fun_l17_n657(x)
- else
- fun_l17_n25(x)
- end
-end
-
-def fun_l16_n958(x)
- if (x < 1)
- fun_l17_n988(x)
- else
- fun_l17_n684(x)
- end
-end
-
-def fun_l16_n959(x)
- if (x < 1)
- fun_l17_n142(x)
- else
- fun_l17_n291(x)
- end
-end
-
-def fun_l16_n960(x)
- if (x < 1)
- fun_l17_n495(x)
- else
- fun_l17_n806(x)
- end
-end
-
-def fun_l16_n961(x)
- if (x < 1)
- fun_l17_n92(x)
- else
- fun_l17_n137(x)
- end
-end
-
-def fun_l16_n962(x)
- if (x < 1)
- fun_l17_n954(x)
- else
- fun_l17_n943(x)
- end
-end
-
-def fun_l16_n963(x)
- if (x < 1)
- fun_l17_n761(x)
- else
- fun_l17_n839(x)
- end
-end
-
-def fun_l16_n964(x)
- if (x < 1)
- fun_l17_n591(x)
- else
- fun_l17_n519(x)
- end
-end
-
-def fun_l16_n965(x)
- if (x < 1)
- fun_l17_n548(x)
- else
- fun_l17_n190(x)
- end
-end
-
-def fun_l16_n966(x)
- if (x < 1)
- fun_l17_n206(x)
- else
- fun_l17_n491(x)
- end
-end
-
-def fun_l16_n967(x)
- if (x < 1)
- fun_l17_n895(x)
- else
- fun_l17_n404(x)
- end
-end
-
-def fun_l16_n968(x)
- if (x < 1)
- fun_l17_n284(x)
- else
- fun_l17_n715(x)
- end
-end
-
-def fun_l16_n969(x)
- if (x < 1)
- fun_l17_n507(x)
- else
- fun_l17_n623(x)
- end
-end
-
-def fun_l16_n970(x)
- if (x < 1)
- fun_l17_n415(x)
- else
- fun_l17_n718(x)
- end
-end
-
-def fun_l16_n971(x)
- if (x < 1)
- fun_l17_n72(x)
- else
- fun_l17_n938(x)
- end
-end
-
-def fun_l16_n972(x)
- if (x < 1)
- fun_l17_n661(x)
- else
- fun_l17_n525(x)
- end
-end
-
-def fun_l16_n973(x)
- if (x < 1)
- fun_l17_n314(x)
- else
- fun_l17_n195(x)
- end
-end
-
-def fun_l16_n974(x)
- if (x < 1)
- fun_l17_n53(x)
- else
- fun_l17_n562(x)
- end
-end
-
-def fun_l16_n975(x)
- if (x < 1)
- fun_l17_n381(x)
- else
- fun_l17_n241(x)
- end
-end
-
-def fun_l16_n976(x)
- if (x < 1)
- fun_l17_n919(x)
- else
- fun_l17_n291(x)
- end
-end
-
-def fun_l16_n977(x)
- if (x < 1)
- fun_l17_n455(x)
- else
- fun_l17_n773(x)
- end
-end
-
-def fun_l16_n978(x)
- if (x < 1)
- fun_l17_n75(x)
- else
- fun_l17_n737(x)
- end
-end
-
-def fun_l16_n979(x)
- if (x < 1)
- fun_l17_n68(x)
- else
- fun_l17_n339(x)
- end
-end
-
-def fun_l16_n980(x)
- if (x < 1)
- fun_l17_n719(x)
- else
- fun_l17_n464(x)
- end
-end
-
-def fun_l16_n981(x)
- if (x < 1)
- fun_l17_n681(x)
- else
- fun_l17_n611(x)
- end
-end
-
-def fun_l16_n982(x)
- if (x < 1)
- fun_l17_n367(x)
- else
- fun_l17_n446(x)
- end
-end
-
-def fun_l16_n983(x)
- if (x < 1)
- fun_l17_n493(x)
- else
- fun_l17_n958(x)
- end
-end
-
-def fun_l16_n984(x)
- if (x < 1)
- fun_l17_n271(x)
- else
- fun_l17_n982(x)
- end
-end
-
-def fun_l16_n985(x)
- if (x < 1)
- fun_l17_n136(x)
- else
- fun_l17_n446(x)
- end
-end
-
-def fun_l16_n986(x)
- if (x < 1)
- fun_l17_n362(x)
- else
- fun_l17_n114(x)
- end
-end
-
-def fun_l16_n987(x)
- if (x < 1)
- fun_l17_n234(x)
- else
- fun_l17_n236(x)
- end
-end
-
-def fun_l16_n988(x)
- if (x < 1)
- fun_l17_n339(x)
- else
- fun_l17_n2(x)
- end
-end
-
-def fun_l16_n989(x)
- if (x < 1)
- fun_l17_n66(x)
- else
- fun_l17_n378(x)
- end
-end
-
-def fun_l16_n990(x)
- if (x < 1)
- fun_l17_n366(x)
- else
- fun_l17_n289(x)
- end
-end
-
-def fun_l16_n991(x)
- if (x < 1)
- fun_l17_n977(x)
- else
- fun_l17_n520(x)
- end
-end
-
-def fun_l16_n992(x)
- if (x < 1)
- fun_l17_n953(x)
- else
- fun_l17_n254(x)
- end
-end
-
-def fun_l16_n993(x)
- if (x < 1)
- fun_l17_n569(x)
- else
- fun_l17_n63(x)
- end
-end
-
-def fun_l16_n994(x)
- if (x < 1)
- fun_l17_n844(x)
- else
- fun_l17_n42(x)
- end
-end
-
-def fun_l16_n995(x)
- if (x < 1)
- fun_l17_n184(x)
- else
- fun_l17_n371(x)
- end
-end
-
-def fun_l16_n996(x)
- if (x < 1)
- fun_l17_n229(x)
- else
- fun_l17_n309(x)
- end
-end
-
-def fun_l16_n997(x)
- if (x < 1)
- fun_l17_n468(x)
- else
- fun_l17_n653(x)
- end
-end
-
-def fun_l16_n998(x)
- if (x < 1)
- fun_l17_n173(x)
- else
- fun_l17_n709(x)
- end
-end
-
-def fun_l16_n999(x)
- if (x < 1)
- fun_l17_n625(x)
- else
- fun_l17_n831(x)
- end
-end
-
-def fun_l17_n0(x)
- if (x < 1)
- fun_l18_n495(x)
- else
- fun_l18_n122(x)
- end
-end
-
-def fun_l17_n1(x)
- if (x < 1)
- fun_l18_n99(x)
- else
- fun_l18_n84(x)
- end
-end
-
-def fun_l17_n2(x)
- if (x < 1)
- fun_l18_n464(x)
- else
- fun_l18_n321(x)
- end
-end
-
-def fun_l17_n3(x)
- if (x < 1)
- fun_l18_n391(x)
- else
- fun_l18_n122(x)
- end
-end
-
-def fun_l17_n4(x)
- if (x < 1)
- fun_l18_n65(x)
- else
- fun_l18_n514(x)
- end
-end
-
-def fun_l17_n5(x)
- if (x < 1)
- fun_l18_n972(x)
- else
- fun_l18_n802(x)
- end
-end
-
-def fun_l17_n6(x)
- if (x < 1)
- fun_l18_n577(x)
- else
- fun_l18_n26(x)
- end
-end
-
-def fun_l17_n7(x)
- if (x < 1)
- fun_l18_n988(x)
- else
- fun_l18_n403(x)
- end
-end
-
-def fun_l17_n8(x)
- if (x < 1)
- fun_l18_n466(x)
- else
- fun_l18_n162(x)
- end
-end
-
-def fun_l17_n9(x)
- if (x < 1)
- fun_l18_n30(x)
- else
- fun_l18_n438(x)
- end
-end
-
-def fun_l17_n10(x)
- if (x < 1)
- fun_l18_n92(x)
- else
- fun_l18_n365(x)
- end
-end
-
-def fun_l17_n11(x)
- if (x < 1)
- fun_l18_n230(x)
- else
- fun_l18_n466(x)
- end
-end
-
-def fun_l17_n12(x)
- if (x < 1)
- fun_l18_n274(x)
- else
- fun_l18_n38(x)
- end
-end
-
-def fun_l17_n13(x)
- if (x < 1)
- fun_l18_n84(x)
- else
- fun_l18_n951(x)
- end
-end
-
-def fun_l17_n14(x)
- if (x < 1)
- fun_l18_n878(x)
- else
- fun_l18_n981(x)
- end
-end
-
-def fun_l17_n15(x)
- if (x < 1)
- fun_l18_n592(x)
- else
- fun_l18_n917(x)
- end
-end
-
-def fun_l17_n16(x)
- if (x < 1)
- fun_l18_n524(x)
- else
- fun_l18_n812(x)
- end
-end
-
-def fun_l17_n17(x)
- if (x < 1)
- fun_l18_n267(x)
- else
- fun_l18_n335(x)
- end
-end
-
-def fun_l17_n18(x)
- if (x < 1)
- fun_l18_n427(x)
- else
- fun_l18_n591(x)
- end
-end
-
-def fun_l17_n19(x)
- if (x < 1)
- fun_l18_n520(x)
- else
- fun_l18_n240(x)
- end
-end
-
-def fun_l17_n20(x)
- if (x < 1)
- fun_l18_n729(x)
- else
- fun_l18_n709(x)
- end
-end
-
-def fun_l17_n21(x)
- if (x < 1)
- fun_l18_n100(x)
- else
- fun_l18_n192(x)
- end
-end
-
-def fun_l17_n22(x)
- if (x < 1)
- fun_l18_n762(x)
- else
- fun_l18_n373(x)
- end
-end
-
-def fun_l17_n23(x)
- if (x < 1)
- fun_l18_n485(x)
- else
- fun_l18_n736(x)
- end
-end
-
-def fun_l17_n24(x)
- if (x < 1)
- fun_l18_n743(x)
- else
- fun_l18_n83(x)
- end
-end
-
-def fun_l17_n25(x)
- if (x < 1)
- fun_l18_n750(x)
- else
- fun_l18_n545(x)
- end
-end
-
-def fun_l17_n26(x)
- if (x < 1)
- fun_l18_n488(x)
- else
- fun_l18_n870(x)
- end
-end
-
-def fun_l17_n27(x)
- if (x < 1)
- fun_l18_n0(x)
- else
- fun_l18_n675(x)
- end
-end
-
-def fun_l17_n28(x)
- if (x < 1)
- fun_l18_n878(x)
- else
- fun_l18_n32(x)
- end
-end
-
-def fun_l17_n29(x)
- if (x < 1)
- fun_l18_n906(x)
- else
- fun_l18_n376(x)
- end
-end
-
-def fun_l17_n30(x)
- if (x < 1)
- fun_l18_n182(x)
- else
- fun_l18_n58(x)
- end
-end
-
-def fun_l17_n31(x)
- if (x < 1)
- fun_l18_n117(x)
- else
- fun_l18_n592(x)
- end
-end
-
-def fun_l17_n32(x)
- if (x < 1)
- fun_l18_n123(x)
- else
- fun_l18_n697(x)
- end
-end
-
-def fun_l17_n33(x)
- if (x < 1)
- fun_l18_n672(x)
- else
- fun_l18_n645(x)
- end
-end
-
-def fun_l17_n34(x)
- if (x < 1)
- fun_l18_n640(x)
- else
- fun_l18_n280(x)
- end
-end
-
-def fun_l17_n35(x)
- if (x < 1)
- fun_l18_n851(x)
- else
- fun_l18_n723(x)
- end
-end
-
-def fun_l17_n36(x)
- if (x < 1)
- fun_l18_n968(x)
- else
- fun_l18_n840(x)
- end
-end
-
-def fun_l17_n37(x)
- if (x < 1)
- fun_l18_n153(x)
- else
- fun_l18_n979(x)
- end
-end
-
-def fun_l17_n38(x)
- if (x < 1)
- fun_l18_n817(x)
- else
- fun_l18_n521(x)
- end
-end
-
-def fun_l17_n39(x)
- if (x < 1)
- fun_l18_n742(x)
- else
- fun_l18_n576(x)
- end
-end
-
-def fun_l17_n40(x)
- if (x < 1)
- fun_l18_n5(x)
- else
- fun_l18_n998(x)
- end
-end
-
-def fun_l17_n41(x)
- if (x < 1)
- fun_l18_n442(x)
- else
- fun_l18_n157(x)
- end
-end
-
-def fun_l17_n42(x)
- if (x < 1)
- fun_l18_n832(x)
- else
- fun_l18_n218(x)
- end
-end
-
-def fun_l17_n43(x)
- if (x < 1)
- fun_l18_n298(x)
- else
- fun_l18_n132(x)
- end
-end
-
-def fun_l17_n44(x)
- if (x < 1)
- fun_l18_n397(x)
- else
- fun_l18_n375(x)
- end
-end
-
-def fun_l17_n45(x)
- if (x < 1)
- fun_l18_n974(x)
- else
- fun_l18_n19(x)
- end
-end
-
-def fun_l17_n46(x)
- if (x < 1)
- fun_l18_n340(x)
- else
- fun_l18_n506(x)
- end
-end
-
-def fun_l17_n47(x)
- if (x < 1)
- fun_l18_n943(x)
- else
- fun_l18_n585(x)
- end
-end
-
-def fun_l17_n48(x)
- if (x < 1)
- fun_l18_n756(x)
- else
- fun_l18_n2(x)
- end
-end
-
-def fun_l17_n49(x)
- if (x < 1)
- fun_l18_n229(x)
- else
- fun_l18_n313(x)
- end
-end
-
-def fun_l17_n50(x)
- if (x < 1)
- fun_l18_n243(x)
- else
- fun_l18_n562(x)
- end
-end
-
-def fun_l17_n51(x)
- if (x < 1)
- fun_l18_n231(x)
- else
- fun_l18_n381(x)
- end
-end
-
-def fun_l17_n52(x)
- if (x < 1)
- fun_l18_n509(x)
- else
- fun_l18_n693(x)
- end
-end
-
-def fun_l17_n53(x)
- if (x < 1)
- fun_l18_n877(x)
- else
- fun_l18_n620(x)
- end
-end
-
-def fun_l17_n54(x)
- if (x < 1)
- fun_l18_n435(x)
- else
- fun_l18_n3(x)
- end
-end
-
-def fun_l17_n55(x)
- if (x < 1)
- fun_l18_n929(x)
- else
- fun_l18_n640(x)
- end
-end
-
-def fun_l17_n56(x)
- if (x < 1)
- fun_l18_n913(x)
- else
- fun_l18_n374(x)
- end
-end
-
-def fun_l17_n57(x)
- if (x < 1)
- fun_l18_n174(x)
- else
- fun_l18_n588(x)
- end
-end
-
-def fun_l17_n58(x)
- if (x < 1)
- fun_l18_n339(x)
- else
- fun_l18_n860(x)
- end
-end
-
-def fun_l17_n59(x)
- if (x < 1)
- fun_l18_n649(x)
- else
- fun_l18_n986(x)
- end
-end
-
-def fun_l17_n60(x)
- if (x < 1)
- fun_l18_n326(x)
- else
- fun_l18_n739(x)
- end
-end
-
-def fun_l17_n61(x)
- if (x < 1)
- fun_l18_n692(x)
- else
- fun_l18_n673(x)
- end
-end
-
-def fun_l17_n62(x)
- if (x < 1)
- fun_l18_n515(x)
- else
- fun_l18_n951(x)
- end
-end
-
-def fun_l17_n63(x)
- if (x < 1)
- fun_l18_n502(x)
- else
- fun_l18_n781(x)
- end
-end
-
-def fun_l17_n64(x)
- if (x < 1)
- fun_l18_n833(x)
- else
- fun_l18_n235(x)
- end
-end
-
-def fun_l17_n65(x)
- if (x < 1)
- fun_l18_n483(x)
- else
- fun_l18_n207(x)
- end
-end
-
-def fun_l17_n66(x)
- if (x < 1)
- fun_l18_n292(x)
- else
- fun_l18_n916(x)
- end
-end
-
-def fun_l17_n67(x)
- if (x < 1)
- fun_l18_n677(x)
- else
- fun_l18_n937(x)
- end
-end
-
-def fun_l17_n68(x)
- if (x < 1)
- fun_l18_n733(x)
- else
- fun_l18_n426(x)
- end
-end
-
-def fun_l17_n69(x)
- if (x < 1)
- fun_l18_n186(x)
- else
- fun_l18_n146(x)
- end
-end
-
-def fun_l17_n70(x)
- if (x < 1)
- fun_l18_n493(x)
- else
- fun_l18_n418(x)
- end
-end
-
-def fun_l17_n71(x)
- if (x < 1)
- fun_l18_n732(x)
- else
- fun_l18_n584(x)
- end
-end
-
-def fun_l17_n72(x)
- if (x < 1)
- fun_l18_n774(x)
- else
- fun_l18_n349(x)
- end
-end
-
-def fun_l17_n73(x)
- if (x < 1)
- fun_l18_n833(x)
- else
- fun_l18_n142(x)
- end
-end
-
-def fun_l17_n74(x)
- if (x < 1)
- fun_l18_n506(x)
- else
- fun_l18_n882(x)
- end
-end
-
-def fun_l17_n75(x)
- if (x < 1)
- fun_l18_n856(x)
- else
- fun_l18_n906(x)
- end
-end
-
-def fun_l17_n76(x)
- if (x < 1)
- fun_l18_n172(x)
- else
- fun_l18_n426(x)
- end
-end
-
-def fun_l17_n77(x)
- if (x < 1)
- fun_l18_n357(x)
- else
- fun_l18_n508(x)
- end
-end
-
-def fun_l17_n78(x)
- if (x < 1)
- fun_l18_n25(x)
- else
- fun_l18_n899(x)
- end
-end
-
-def fun_l17_n79(x)
- if (x < 1)
- fun_l18_n639(x)
- else
- fun_l18_n644(x)
- end
-end
-
-def fun_l17_n80(x)
- if (x < 1)
- fun_l18_n207(x)
- else
- fun_l18_n193(x)
- end
-end
-
-def fun_l17_n81(x)
- if (x < 1)
- fun_l18_n200(x)
- else
- fun_l18_n766(x)
- end
-end
-
-def fun_l17_n82(x)
- if (x < 1)
- fun_l18_n815(x)
- else
- fun_l18_n533(x)
- end
-end
-
-def fun_l17_n83(x)
- if (x < 1)
- fun_l18_n740(x)
- else
- fun_l18_n507(x)
- end
-end
-
-def fun_l17_n84(x)
- if (x < 1)
- fun_l18_n484(x)
- else
- fun_l18_n158(x)
- end
-end
-
-def fun_l17_n85(x)
- if (x < 1)
- fun_l18_n924(x)
- else
- fun_l18_n963(x)
- end
-end
-
-def fun_l17_n86(x)
- if (x < 1)
- fun_l18_n614(x)
- else
- fun_l18_n806(x)
- end
-end
-
-def fun_l17_n87(x)
- if (x < 1)
- fun_l18_n553(x)
- else
- fun_l18_n510(x)
- end
-end
-
-def fun_l17_n88(x)
- if (x < 1)
- fun_l18_n561(x)
- else
- fun_l18_n860(x)
- end
-end
-
-def fun_l17_n89(x)
- if (x < 1)
- fun_l18_n757(x)
- else
- fun_l18_n248(x)
- end
-end
-
-def fun_l17_n90(x)
- if (x < 1)
- fun_l18_n616(x)
- else
- fun_l18_n217(x)
- end
-end
-
-def fun_l17_n91(x)
- if (x < 1)
- fun_l18_n997(x)
- else
- fun_l18_n861(x)
- end
-end
-
-def fun_l17_n92(x)
- if (x < 1)
- fun_l18_n18(x)
- else
- fun_l18_n457(x)
- end
-end
-
-def fun_l17_n93(x)
- if (x < 1)
- fun_l18_n264(x)
- else
- fun_l18_n213(x)
- end
-end
-
-def fun_l17_n94(x)
- if (x < 1)
- fun_l18_n352(x)
- else
- fun_l18_n304(x)
- end
-end
-
-def fun_l17_n95(x)
- if (x < 1)
- fun_l18_n975(x)
- else
- fun_l18_n868(x)
- end
-end
-
-def fun_l17_n96(x)
- if (x < 1)
- fun_l18_n859(x)
- else
- fun_l18_n786(x)
- end
-end
-
-def fun_l17_n97(x)
- if (x < 1)
- fun_l18_n610(x)
- else
- fun_l18_n423(x)
- end
-end
-
-def fun_l17_n98(x)
- if (x < 1)
- fun_l18_n814(x)
- else
- fun_l18_n71(x)
- end
-end
-
-def fun_l17_n99(x)
- if (x < 1)
- fun_l18_n897(x)
- else
- fun_l18_n412(x)
- end
-end
-
-def fun_l17_n100(x)
- if (x < 1)
- fun_l18_n654(x)
- else
- fun_l18_n600(x)
- end
-end
-
-def fun_l17_n101(x)
- if (x < 1)
- fun_l18_n185(x)
- else
- fun_l18_n188(x)
- end
-end
-
-def fun_l17_n102(x)
- if (x < 1)
- fun_l18_n262(x)
- else
- fun_l18_n509(x)
- end
-end
-
-def fun_l17_n103(x)
- if (x < 1)
- fun_l18_n115(x)
- else
- fun_l18_n497(x)
- end
-end
-
-def fun_l17_n104(x)
- if (x < 1)
- fun_l18_n650(x)
- else
- fun_l18_n389(x)
- end
-end
-
-def fun_l17_n105(x)
- if (x < 1)
- fun_l18_n939(x)
- else
- fun_l18_n842(x)
- end
-end
-
-def fun_l17_n106(x)
- if (x < 1)
- fun_l18_n645(x)
- else
- fun_l18_n34(x)
- end
-end
-
-def fun_l17_n107(x)
- if (x < 1)
- fun_l18_n510(x)
- else
- fun_l18_n313(x)
- end
-end
-
-def fun_l17_n108(x)
- if (x < 1)
- fun_l18_n377(x)
- else
- fun_l18_n397(x)
- end
-end
-
-def fun_l17_n109(x)
- if (x < 1)
- fun_l18_n884(x)
- else
- fun_l18_n380(x)
- end
-end
-
-def fun_l17_n110(x)
- if (x < 1)
- fun_l18_n924(x)
- else
- fun_l18_n102(x)
- end
-end
-
-def fun_l17_n111(x)
- if (x < 1)
- fun_l18_n856(x)
- else
- fun_l18_n646(x)
- end
-end
-
-def fun_l17_n112(x)
- if (x < 1)
- fun_l18_n270(x)
- else
- fun_l18_n345(x)
- end
-end
-
-def fun_l17_n113(x)
- if (x < 1)
- fun_l18_n211(x)
- else
- fun_l18_n672(x)
- end
-end
-
-def fun_l17_n114(x)
- if (x < 1)
- fun_l18_n947(x)
- else
- fun_l18_n376(x)
- end
-end
-
-def fun_l17_n115(x)
- if (x < 1)
- fun_l18_n219(x)
- else
- fun_l18_n927(x)
- end
-end
-
-def fun_l17_n116(x)
- if (x < 1)
- fun_l18_n731(x)
- else
- fun_l18_n327(x)
- end
-end
-
-def fun_l17_n117(x)
- if (x < 1)
- fun_l18_n512(x)
- else
- fun_l18_n658(x)
- end
-end
-
-def fun_l17_n118(x)
- if (x < 1)
- fun_l18_n248(x)
- else
- fun_l18_n661(x)
- end
-end
-
-def fun_l17_n119(x)
- if (x < 1)
- fun_l18_n18(x)
- else
- fun_l18_n56(x)
- end
-end
-
-def fun_l17_n120(x)
- if (x < 1)
- fun_l18_n441(x)
- else
- fun_l18_n648(x)
- end
-end
-
-def fun_l17_n121(x)
- if (x < 1)
- fun_l18_n122(x)
- else
- fun_l18_n717(x)
- end
-end
-
-def fun_l17_n122(x)
- if (x < 1)
- fun_l18_n495(x)
- else
- fun_l18_n30(x)
- end
-end
-
-def fun_l17_n123(x)
- if (x < 1)
- fun_l18_n418(x)
- else
- fun_l18_n686(x)
- end
-end
-
-def fun_l17_n124(x)
- if (x < 1)
- fun_l18_n274(x)
- else
- fun_l18_n300(x)
- end
-end
-
-def fun_l17_n125(x)
- if (x < 1)
- fun_l18_n677(x)
- else
- fun_l18_n662(x)
- end
-end
-
-def fun_l17_n126(x)
- if (x < 1)
- fun_l18_n448(x)
- else
- fun_l18_n584(x)
- end
-end
-
-def fun_l17_n127(x)
- if (x < 1)
- fun_l18_n316(x)
- else
- fun_l18_n507(x)
- end
-end
-
-def fun_l17_n128(x)
- if (x < 1)
- fun_l18_n166(x)
- else
- fun_l18_n266(x)
- end
-end
-
-def fun_l17_n129(x)
- if (x < 1)
- fun_l18_n890(x)
- else
- fun_l18_n581(x)
- end
-end
-
-def fun_l17_n130(x)
- if (x < 1)
- fun_l18_n554(x)
- else
- fun_l18_n925(x)
- end
-end
-
-def fun_l17_n131(x)
- if (x < 1)
- fun_l18_n607(x)
- else
- fun_l18_n43(x)
- end
-end
-
-def fun_l17_n132(x)
- if (x < 1)
- fun_l18_n747(x)
- else
- fun_l18_n461(x)
- end
-end
-
-def fun_l17_n133(x)
- if (x < 1)
- fun_l18_n399(x)
- else
- fun_l18_n436(x)
- end
-end
-
-def fun_l17_n134(x)
- if (x < 1)
- fun_l18_n922(x)
- else
- fun_l18_n33(x)
- end
-end
-
-def fun_l17_n135(x)
- if (x < 1)
- fun_l18_n719(x)
- else
- fun_l18_n70(x)
- end
-end
-
-def fun_l17_n136(x)
- if (x < 1)
- fun_l18_n664(x)
- else
- fun_l18_n842(x)
- end
-end
-
-def fun_l17_n137(x)
- if (x < 1)
- fun_l18_n626(x)
- else
- fun_l18_n328(x)
- end
-end
-
-def fun_l17_n138(x)
- if (x < 1)
- fun_l18_n64(x)
- else
- fun_l18_n24(x)
- end
-end
-
-def fun_l17_n139(x)
- if (x < 1)
- fun_l18_n198(x)
- else
- fun_l18_n658(x)
- end
-end
-
-def fun_l17_n140(x)
- if (x < 1)
- fun_l18_n813(x)
- else
- fun_l18_n5(x)
- end
-end
-
-def fun_l17_n141(x)
- if (x < 1)
- fun_l18_n8(x)
- else
- fun_l18_n115(x)
- end
-end
-
-def fun_l17_n142(x)
- if (x < 1)
- fun_l18_n699(x)
- else
- fun_l18_n135(x)
- end
-end
-
-def fun_l17_n143(x)
- if (x < 1)
- fun_l18_n595(x)
- else
- fun_l18_n607(x)
- end
-end
-
-def fun_l17_n144(x)
- if (x < 1)
- fun_l18_n650(x)
- else
- fun_l18_n994(x)
- end
-end
-
-def fun_l17_n145(x)
- if (x < 1)
- fun_l18_n14(x)
- else
- fun_l18_n798(x)
- end
-end
-
-def fun_l17_n146(x)
- if (x < 1)
- fun_l18_n107(x)
- else
- fun_l18_n144(x)
- end
-end
-
-def fun_l17_n147(x)
- if (x < 1)
- fun_l18_n923(x)
- else
- fun_l18_n482(x)
- end
-end
-
-def fun_l17_n148(x)
- if (x < 1)
- fun_l18_n629(x)
- else
- fun_l18_n224(x)
- end
-end
-
-def fun_l17_n149(x)
- if (x < 1)
- fun_l18_n363(x)
- else
- fun_l18_n958(x)
- end
-end
-
-def fun_l17_n150(x)
- if (x < 1)
- fun_l18_n143(x)
- else
- fun_l18_n828(x)
- end
-end
-
-def fun_l17_n151(x)
- if (x < 1)
- fun_l18_n615(x)
- else
- fun_l18_n561(x)
- end
-end
-
-def fun_l17_n152(x)
- if (x < 1)
- fun_l18_n418(x)
- else
- fun_l18_n46(x)
- end
-end
-
-def fun_l17_n153(x)
- if (x < 1)
- fun_l18_n331(x)
- else
- fun_l18_n736(x)
- end
-end
-
-def fun_l17_n154(x)
- if (x < 1)
- fun_l18_n340(x)
- else
- fun_l18_n221(x)
- end
-end
-
-def fun_l17_n155(x)
- if (x < 1)
- fun_l18_n488(x)
- else
- fun_l18_n995(x)
- end
-end
-
-def fun_l17_n156(x)
- if (x < 1)
- fun_l18_n500(x)
- else
- fun_l18_n106(x)
- end
-end
-
-def fun_l17_n157(x)
- if (x < 1)
- fun_l18_n76(x)
- else
- fun_l18_n147(x)
- end
-end
-
-def fun_l17_n158(x)
- if (x < 1)
- fun_l18_n258(x)
- else
- fun_l18_n754(x)
- end
-end
-
-def fun_l17_n159(x)
- if (x < 1)
- fun_l18_n174(x)
- else
- fun_l18_n676(x)
- end
-end
-
-def fun_l17_n160(x)
- if (x < 1)
- fun_l18_n997(x)
- else
- fun_l18_n662(x)
- end
-end
-
-def fun_l17_n161(x)
- if (x < 1)
- fun_l18_n614(x)
- else
- fun_l18_n425(x)
- end
-end
-
-def fun_l17_n162(x)
- if (x < 1)
- fun_l18_n943(x)
- else
- fun_l18_n534(x)
- end
-end
-
-def fun_l17_n163(x)
- if (x < 1)
- fun_l18_n577(x)
- else
- fun_l18_n670(x)
- end
-end
-
-def fun_l17_n164(x)
- if (x < 1)
- fun_l18_n707(x)
- else
- fun_l18_n701(x)
- end
-end
-
-def fun_l17_n165(x)
- if (x < 1)
- fun_l18_n316(x)
- else
- fun_l18_n981(x)
- end
-end
-
-def fun_l17_n166(x)
- if (x < 1)
- fun_l18_n557(x)
- else
- fun_l18_n710(x)
- end
-end
-
-def fun_l17_n167(x)
- if (x < 1)
- fun_l18_n763(x)
- else
- fun_l18_n900(x)
- end
-end
-
-def fun_l17_n168(x)
- if (x < 1)
- fun_l18_n818(x)
- else
- fun_l18_n2(x)
- end
-end
-
-def fun_l17_n169(x)
- if (x < 1)
- fun_l18_n68(x)
- else
- fun_l18_n894(x)
- end
-end
-
-def fun_l17_n170(x)
- if (x < 1)
- fun_l18_n88(x)
- else
- fun_l18_n431(x)
- end
-end
-
-def fun_l17_n171(x)
- if (x < 1)
- fun_l18_n530(x)
- else
- fun_l18_n714(x)
- end
-end
-
-def fun_l17_n172(x)
- if (x < 1)
- fun_l18_n636(x)
- else
- fun_l18_n747(x)
- end
-end
-
-def fun_l17_n173(x)
- if (x < 1)
- fun_l18_n481(x)
- else
- fun_l18_n804(x)
- end
-end
-
-def fun_l17_n174(x)
- if (x < 1)
- fun_l18_n591(x)
- else
- fun_l18_n121(x)
- end
-end
-
-def fun_l17_n175(x)
- if (x < 1)
- fun_l18_n320(x)
- else
- fun_l18_n881(x)
- end
-end
-
-def fun_l17_n176(x)
- if (x < 1)
- fun_l18_n524(x)
- else
- fun_l18_n948(x)
- end
-end
-
-def fun_l17_n177(x)
- if (x < 1)
- fun_l18_n540(x)
- else
- fun_l18_n508(x)
- end
-end
-
-def fun_l17_n178(x)
- if (x < 1)
- fun_l18_n949(x)
- else
- fun_l18_n492(x)
- end
-end
-
-def fun_l17_n179(x)
- if (x < 1)
- fun_l18_n548(x)
- else
- fun_l18_n534(x)
- end
-end
-
-def fun_l17_n180(x)
- if (x < 1)
- fun_l18_n591(x)
- else
- fun_l18_n104(x)
- end
-end
-
-def fun_l17_n181(x)
- if (x < 1)
- fun_l18_n727(x)
- else
- fun_l18_n144(x)
- end
-end
-
-def fun_l17_n182(x)
- if (x < 1)
- fun_l18_n365(x)
- else
- fun_l18_n628(x)
- end
-end
-
-def fun_l17_n183(x)
- if (x < 1)
- fun_l18_n32(x)
- else
- fun_l18_n752(x)
- end
-end
-
-def fun_l17_n184(x)
- if (x < 1)
- fun_l18_n778(x)
- else
- fun_l18_n929(x)
- end
-end
-
-def fun_l17_n185(x)
- if (x < 1)
- fun_l18_n797(x)
- else
- fun_l18_n525(x)
- end
-end
-
-def fun_l17_n186(x)
- if (x < 1)
- fun_l18_n800(x)
- else
- fun_l18_n799(x)
- end
-end
-
-def fun_l17_n187(x)
- if (x < 1)
- fun_l18_n974(x)
- else
- fun_l18_n982(x)
- end
-end
-
-def fun_l17_n188(x)
- if (x < 1)
- fun_l18_n259(x)
- else
- fun_l18_n465(x)
- end
-end
-
-def fun_l17_n189(x)
- if (x < 1)
- fun_l18_n905(x)
- else
- fun_l18_n477(x)
- end
-end
-
-def fun_l17_n190(x)
- if (x < 1)
- fun_l18_n453(x)
- else
- fun_l18_n894(x)
- end
-end
-
-def fun_l17_n191(x)
- if (x < 1)
- fun_l18_n461(x)
- else
- fun_l18_n251(x)
- end
-end
-
-def fun_l17_n192(x)
- if (x < 1)
- fun_l18_n377(x)
- else
- fun_l18_n371(x)
- end
-end
-
-def fun_l17_n193(x)
- if (x < 1)
- fun_l18_n252(x)
- else
- fun_l18_n493(x)
- end
-end
-
-def fun_l17_n194(x)
- if (x < 1)
- fun_l18_n398(x)
- else
- fun_l18_n104(x)
- end
-end
-
-def fun_l17_n195(x)
- if (x < 1)
- fun_l18_n791(x)
- else
- fun_l18_n4(x)
- end
-end
-
-def fun_l17_n196(x)
- if (x < 1)
- fun_l18_n801(x)
- else
- fun_l18_n429(x)
- end
-end
-
-def fun_l17_n197(x)
- if (x < 1)
- fun_l18_n106(x)
- else
- fun_l18_n622(x)
- end
-end
-
-def fun_l17_n198(x)
- if (x < 1)
- fun_l18_n581(x)
- else
- fun_l18_n312(x)
- end
-end
-
-def fun_l17_n199(x)
- if (x < 1)
- fun_l18_n142(x)
- else
- fun_l18_n296(x)
- end
-end
-
-def fun_l17_n200(x)
- if (x < 1)
- fun_l18_n234(x)
- else
- fun_l18_n185(x)
- end
-end
-
-def fun_l17_n201(x)
- if (x < 1)
- fun_l18_n486(x)
- else
- fun_l18_n857(x)
- end
-end
-
-def fun_l17_n202(x)
- if (x < 1)
- fun_l18_n84(x)
- else
- fun_l18_n718(x)
- end
-end
-
-def fun_l17_n203(x)
- if (x < 1)
- fun_l18_n830(x)
- else
- fun_l18_n618(x)
- end
-end
-
-def fun_l17_n204(x)
- if (x < 1)
- fun_l18_n860(x)
- else
- fun_l18_n28(x)
- end
-end
-
-def fun_l17_n205(x)
- if (x < 1)
- fun_l18_n244(x)
- else
- fun_l18_n575(x)
- end
-end
-
-def fun_l17_n206(x)
- if (x < 1)
- fun_l18_n189(x)
- else
- fun_l18_n722(x)
- end
-end
-
-def fun_l17_n207(x)
- if (x < 1)
- fun_l18_n164(x)
- else
- fun_l18_n197(x)
- end
-end
-
-def fun_l17_n208(x)
- if (x < 1)
- fun_l18_n109(x)
- else
- fun_l18_n392(x)
- end
-end
-
-def fun_l17_n209(x)
- if (x < 1)
- fun_l18_n629(x)
- else
- fun_l18_n290(x)
- end
-end
-
-def fun_l17_n210(x)
- if (x < 1)
- fun_l18_n637(x)
- else
- fun_l18_n317(x)
- end
-end
-
-def fun_l17_n211(x)
- if (x < 1)
- fun_l18_n148(x)
- else
- fun_l18_n702(x)
- end
-end
-
-def fun_l17_n212(x)
- if (x < 1)
- fun_l18_n892(x)
- else
- fun_l18_n395(x)
- end
-end
-
-def fun_l17_n213(x)
- if (x < 1)
- fun_l18_n457(x)
- else
- fun_l18_n859(x)
- end
-end
-
-def fun_l17_n214(x)
- if (x < 1)
- fun_l18_n561(x)
- else
- fun_l18_n295(x)
- end
-end
-
-def fun_l17_n215(x)
- if (x < 1)
- fun_l18_n459(x)
- else
- fun_l18_n407(x)
- end
-end
-
-def fun_l17_n216(x)
- if (x < 1)
- fun_l18_n761(x)
- else
- fun_l18_n308(x)
- end
-end
-
-def fun_l17_n217(x)
- if (x < 1)
- fun_l18_n350(x)
- else
- fun_l18_n680(x)
- end
-end
-
-def fun_l17_n218(x)
- if (x < 1)
- fun_l18_n240(x)
- else
- fun_l18_n119(x)
- end
-end
-
-def fun_l17_n219(x)
- if (x < 1)
- fun_l18_n538(x)
- else
- fun_l18_n732(x)
- end
-end
-
-def fun_l17_n220(x)
- if (x < 1)
- fun_l18_n45(x)
- else
- fun_l18_n643(x)
- end
-end
-
-def fun_l17_n221(x)
- if (x < 1)
- fun_l18_n258(x)
- else
- fun_l18_n690(x)
- end
-end
-
-def fun_l17_n222(x)
- if (x < 1)
- fun_l18_n288(x)
- else
- fun_l18_n998(x)
- end
-end
-
-def fun_l17_n223(x)
- if (x < 1)
- fun_l18_n591(x)
- else
- fun_l18_n278(x)
- end
-end
-
-def fun_l17_n224(x)
- if (x < 1)
- fun_l18_n433(x)
- else
- fun_l18_n852(x)
- end
-end
-
-def fun_l17_n225(x)
- if (x < 1)
- fun_l18_n51(x)
- else
- fun_l18_n837(x)
- end
-end
-
-def fun_l17_n226(x)
- if (x < 1)
- fun_l18_n755(x)
- else
- fun_l18_n949(x)
- end
-end
-
-def fun_l17_n227(x)
- if (x < 1)
- fun_l18_n566(x)
- else
- fun_l18_n754(x)
- end
-end
-
-def fun_l17_n228(x)
- if (x < 1)
- fun_l18_n915(x)
- else
- fun_l18_n893(x)
- end
-end
-
-def fun_l17_n229(x)
- if (x < 1)
- fun_l18_n990(x)
- else
- fun_l18_n208(x)
- end
-end
-
-def fun_l17_n230(x)
- if (x < 1)
- fun_l18_n220(x)
- else
- fun_l18_n292(x)
- end
-end
-
-def fun_l17_n231(x)
- if (x < 1)
- fun_l18_n39(x)
- else
- fun_l18_n211(x)
- end
-end
-
-def fun_l17_n232(x)
- if (x < 1)
- fun_l18_n669(x)
- else
- fun_l18_n818(x)
- end
-end
-
-def fun_l17_n233(x)
- if (x < 1)
- fun_l18_n804(x)
- else
- fun_l18_n400(x)
- end
-end
-
-def fun_l17_n234(x)
- if (x < 1)
- fun_l18_n198(x)
- else
- fun_l18_n393(x)
- end
-end
-
-def fun_l17_n235(x)
- if (x < 1)
- fun_l18_n154(x)
- else
- fun_l18_n980(x)
- end
-end
-
-def fun_l17_n236(x)
- if (x < 1)
- fun_l18_n46(x)
- else
- fun_l18_n926(x)
- end
-end
-
-def fun_l17_n237(x)
- if (x < 1)
- fun_l18_n158(x)
- else
- fun_l18_n364(x)
- end
-end
-
-def fun_l17_n238(x)
- if (x < 1)
- fun_l18_n728(x)
- else
- fun_l18_n864(x)
- end
-end
-
-def fun_l17_n239(x)
- if (x < 1)
- fun_l18_n793(x)
- else
- fun_l18_n985(x)
- end
-end
-
-def fun_l17_n240(x)
- if (x < 1)
- fun_l18_n619(x)
- else
- fun_l18_n216(x)
- end
-end
-
-def fun_l17_n241(x)
- if (x < 1)
- fun_l18_n338(x)
- else
- fun_l18_n289(x)
- end
-end
-
-def fun_l17_n242(x)
- if (x < 1)
- fun_l18_n42(x)
- else
- fun_l18_n360(x)
- end
-end
-
-def fun_l17_n243(x)
- if (x < 1)
- fun_l18_n883(x)
- else
- fun_l18_n243(x)
- end
-end
-
-def fun_l17_n244(x)
- if (x < 1)
- fun_l18_n474(x)
- else
- fun_l18_n236(x)
- end
-end
-
-def fun_l17_n245(x)
- if (x < 1)
- fun_l18_n694(x)
- else
- fun_l18_n579(x)
- end
-end
-
-def fun_l17_n246(x)
- if (x < 1)
- fun_l18_n787(x)
- else
- fun_l18_n349(x)
- end
-end
-
-def fun_l17_n247(x)
- if (x < 1)
- fun_l18_n140(x)
- else
- fun_l18_n894(x)
- end
-end
-
-def fun_l17_n248(x)
- if (x < 1)
- fun_l18_n587(x)
- else
- fun_l18_n19(x)
- end
-end
-
-def fun_l17_n249(x)
- if (x < 1)
- fun_l18_n7(x)
- else
- fun_l18_n352(x)
- end
-end
-
-def fun_l17_n250(x)
- if (x < 1)
- fun_l18_n330(x)
- else
- fun_l18_n779(x)
- end
-end
-
-def fun_l17_n251(x)
- if (x < 1)
- fun_l18_n655(x)
- else
- fun_l18_n45(x)
- end
-end
-
-def fun_l17_n252(x)
- if (x < 1)
- fun_l18_n263(x)
- else
- fun_l18_n668(x)
- end
-end
-
-def fun_l17_n253(x)
- if (x < 1)
- fun_l18_n799(x)
- else
- fun_l18_n141(x)
- end
-end
-
-def fun_l17_n254(x)
- if (x < 1)
- fun_l18_n868(x)
- else
- fun_l18_n486(x)
- end
-end
-
-def fun_l17_n255(x)
- if (x < 1)
- fun_l18_n238(x)
- else
- fun_l18_n298(x)
- end
-end
-
-def fun_l17_n256(x)
- if (x < 1)
- fun_l18_n939(x)
- else
- fun_l18_n977(x)
- end
-end
-
-def fun_l17_n257(x)
- if (x < 1)
- fun_l18_n999(x)
- else
- fun_l18_n241(x)
- end
-end
-
-def fun_l17_n258(x)
- if (x < 1)
- fun_l18_n362(x)
- else
- fun_l18_n19(x)
- end
-end
-
-def fun_l17_n259(x)
- if (x < 1)
- fun_l18_n166(x)
- else
- fun_l18_n550(x)
- end
-end
-
-def fun_l17_n260(x)
- if (x < 1)
- fun_l18_n18(x)
- else
- fun_l18_n453(x)
- end
-end
-
-def fun_l17_n261(x)
- if (x < 1)
- fun_l18_n590(x)
- else
- fun_l18_n217(x)
- end
-end
-
-def fun_l17_n262(x)
- if (x < 1)
- fun_l18_n703(x)
- else
- fun_l18_n827(x)
- end
-end
-
-def fun_l17_n263(x)
- if (x < 1)
- fun_l18_n911(x)
- else
- fun_l18_n869(x)
- end
-end
-
-def fun_l17_n264(x)
- if (x < 1)
- fun_l18_n980(x)
- else
- fun_l18_n598(x)
- end
-end
-
-def fun_l17_n265(x)
- if (x < 1)
- fun_l18_n751(x)
- else
- fun_l18_n298(x)
- end
-end
-
-def fun_l17_n266(x)
- if (x < 1)
- fun_l18_n527(x)
- else
- fun_l18_n392(x)
- end
-end
-
-def fun_l17_n267(x)
- if (x < 1)
- fun_l18_n257(x)
- else
- fun_l18_n731(x)
- end
-end
-
-def fun_l17_n268(x)
- if (x < 1)
- fun_l18_n254(x)
- else
- fun_l18_n188(x)
- end
-end
-
-def fun_l17_n269(x)
- if (x < 1)
- fun_l18_n145(x)
- else
- fun_l18_n987(x)
- end
-end
-
-def fun_l17_n270(x)
- if (x < 1)
- fun_l18_n640(x)
- else
- fun_l18_n370(x)
- end
-end
-
-def fun_l17_n271(x)
- if (x < 1)
- fun_l18_n767(x)
- else
- fun_l18_n246(x)
- end
-end
-
-def fun_l17_n272(x)
- if (x < 1)
- fun_l18_n274(x)
- else
- fun_l18_n851(x)
- end
-end
-
-def fun_l17_n273(x)
- if (x < 1)
- fun_l18_n12(x)
- else
- fun_l18_n48(x)
- end
-end
-
-def fun_l17_n274(x)
- if (x < 1)
- fun_l18_n389(x)
- else
- fun_l18_n353(x)
- end
-end
-
-def fun_l17_n275(x)
- if (x < 1)
- fun_l18_n966(x)
- else
- fun_l18_n248(x)
- end
-end
-
-def fun_l17_n276(x)
- if (x < 1)
- fun_l18_n459(x)
- else
- fun_l18_n989(x)
- end
-end
-
-def fun_l17_n277(x)
- if (x < 1)
- fun_l18_n416(x)
- else
- fun_l18_n976(x)
- end
-end
-
-def fun_l17_n278(x)
- if (x < 1)
- fun_l18_n752(x)
- else
- fun_l18_n282(x)
- end
-end
-
-def fun_l17_n279(x)
- if (x < 1)
- fun_l18_n774(x)
- else
- fun_l18_n478(x)
- end
-end
-
-def fun_l17_n280(x)
- if (x < 1)
- fun_l18_n713(x)
- else
- fun_l18_n117(x)
- end
-end
-
-def fun_l17_n281(x)
- if (x < 1)
- fun_l18_n365(x)
- else
- fun_l18_n932(x)
- end
-end
-
-def fun_l17_n282(x)
- if (x < 1)
- fun_l18_n791(x)
- else
- fun_l18_n331(x)
- end
-end
-
-def fun_l17_n283(x)
- if (x < 1)
- fun_l18_n955(x)
- else
- fun_l18_n847(x)
- end
-end
-
-def fun_l17_n284(x)
- if (x < 1)
- fun_l18_n409(x)
- else
- fun_l18_n681(x)
- end
-end
-
-def fun_l17_n285(x)
- if (x < 1)
- fun_l18_n185(x)
- else
- fun_l18_n651(x)
- end
-end
-
-def fun_l17_n286(x)
- if (x < 1)
- fun_l18_n894(x)
- else
- fun_l18_n827(x)
- end
-end
-
-def fun_l17_n287(x)
- if (x < 1)
- fun_l18_n788(x)
- else
- fun_l18_n794(x)
- end
-end
-
-def fun_l17_n288(x)
- if (x < 1)
- fun_l18_n361(x)
- else
- fun_l18_n415(x)
- end
-end
-
-def fun_l17_n289(x)
- if (x < 1)
- fun_l18_n357(x)
- else
- fun_l18_n375(x)
- end
-end
-
-def fun_l17_n290(x)
- if (x < 1)
- fun_l18_n557(x)
- else
- fun_l18_n85(x)
- end
-end
-
-def fun_l17_n291(x)
- if (x < 1)
- fun_l18_n490(x)
- else
- fun_l18_n260(x)
- end
-end
-
-def fun_l17_n292(x)
- if (x < 1)
- fun_l18_n21(x)
- else
- fun_l18_n497(x)
- end
-end
-
-def fun_l17_n293(x)
- if (x < 1)
- fun_l18_n716(x)
- else
- fun_l18_n94(x)
- end
-end
-
-def fun_l17_n294(x)
- if (x < 1)
- fun_l18_n462(x)
- else
- fun_l18_n408(x)
- end
-end
-
-def fun_l17_n295(x)
- if (x < 1)
- fun_l18_n87(x)
- else
- fun_l18_n732(x)
- end
-end
-
-def fun_l17_n296(x)
- if (x < 1)
- fun_l18_n889(x)
- else
- fun_l18_n755(x)
- end
-end
-
-def fun_l17_n297(x)
- if (x < 1)
- fun_l18_n539(x)
- else
- fun_l18_n130(x)
- end
-end
-
-def fun_l17_n298(x)
- if (x < 1)
- fun_l18_n729(x)
- else
- fun_l18_n861(x)
- end
-end
-
-def fun_l17_n299(x)
- if (x < 1)
- fun_l18_n605(x)
- else
- fun_l18_n408(x)
- end
-end
-
-def fun_l17_n300(x)
- if (x < 1)
- fun_l18_n408(x)
- else
- fun_l18_n281(x)
- end
-end
-
-def fun_l17_n301(x)
- if (x < 1)
- fun_l18_n793(x)
- else
- fun_l18_n188(x)
- end
-end
-
-def fun_l17_n302(x)
- if (x < 1)
- fun_l18_n42(x)
- else
- fun_l18_n970(x)
- end
-end
-
-def fun_l17_n303(x)
- if (x < 1)
- fun_l18_n904(x)
- else
- fun_l18_n630(x)
- end
-end
-
-def fun_l17_n304(x)
- if (x < 1)
- fun_l18_n142(x)
- else
- fun_l18_n366(x)
- end
-end
-
-def fun_l17_n305(x)
- if (x < 1)
- fun_l18_n242(x)
- else
- fun_l18_n111(x)
- end
-end
-
-def fun_l17_n306(x)
- if (x < 1)
- fun_l18_n184(x)
- else
- fun_l18_n301(x)
- end
-end
-
-def fun_l17_n307(x)
- if (x < 1)
- fun_l18_n297(x)
- else
- fun_l18_n722(x)
- end
-end
-
-def fun_l17_n308(x)
- if (x < 1)
- fun_l18_n608(x)
- else
- fun_l18_n502(x)
- end
-end
-
-def fun_l17_n309(x)
- if (x < 1)
- fun_l18_n513(x)
- else
- fun_l18_n828(x)
- end
-end
-
-def fun_l17_n310(x)
- if (x < 1)
- fun_l18_n5(x)
- else
- fun_l18_n638(x)
- end
-end
-
-def fun_l17_n311(x)
- if (x < 1)
- fun_l18_n404(x)
- else
- fun_l18_n510(x)
- end
-end
-
-def fun_l17_n312(x)
- if (x < 1)
- fun_l18_n961(x)
- else
- fun_l18_n526(x)
- end
-end
-
-def fun_l17_n313(x)
- if (x < 1)
- fun_l18_n795(x)
- else
- fun_l18_n24(x)
- end
-end
-
-def fun_l17_n314(x)
- if (x < 1)
- fun_l18_n505(x)
- else
- fun_l18_n526(x)
- end
-end
-
-def fun_l17_n315(x)
- if (x < 1)
- fun_l18_n458(x)
- else
- fun_l18_n767(x)
- end
-end
-
-def fun_l17_n316(x)
- if (x < 1)
- fun_l18_n778(x)
- else
- fun_l18_n972(x)
- end
-end
-
-def fun_l17_n317(x)
- if (x < 1)
- fun_l18_n734(x)
- else
- fun_l18_n289(x)
- end
-end
-
-def fun_l17_n318(x)
- if (x < 1)
- fun_l18_n950(x)
- else
- fun_l18_n507(x)
- end
-end
-
-def fun_l17_n319(x)
- if (x < 1)
- fun_l18_n597(x)
- else
- fun_l18_n697(x)
- end
-end
-
-def fun_l17_n320(x)
- if (x < 1)
- fun_l18_n270(x)
- else
- fun_l18_n323(x)
- end
-end
-
-def fun_l17_n321(x)
- if (x < 1)
- fun_l18_n558(x)
- else
- fun_l18_n357(x)
- end
-end
-
-def fun_l17_n322(x)
- if (x < 1)
- fun_l18_n948(x)
- else
- fun_l18_n726(x)
- end
-end
-
-def fun_l17_n323(x)
- if (x < 1)
- fun_l18_n787(x)
- else
- fun_l18_n89(x)
- end
-end
-
-def fun_l17_n324(x)
- if (x < 1)
- fun_l18_n894(x)
- else
- fun_l18_n454(x)
- end
-end
-
-def fun_l17_n325(x)
- if (x < 1)
- fun_l18_n173(x)
- else
- fun_l18_n815(x)
- end
-end
-
-def fun_l17_n326(x)
- if (x < 1)
- fun_l18_n102(x)
- else
- fun_l18_n261(x)
- end
-end
-
-def fun_l17_n327(x)
- if (x < 1)
- fun_l18_n83(x)
- else
- fun_l18_n732(x)
- end
-end
-
-def fun_l17_n328(x)
- if (x < 1)
- fun_l18_n675(x)
- else
- fun_l18_n186(x)
- end
-end
-
-def fun_l17_n329(x)
- if (x < 1)
- fun_l18_n783(x)
- else
- fun_l18_n481(x)
- end
-end
-
-def fun_l17_n330(x)
- if (x < 1)
- fun_l18_n828(x)
- else
- fun_l18_n829(x)
- end
-end
-
-def fun_l17_n331(x)
- if (x < 1)
- fun_l18_n195(x)
- else
- fun_l18_n264(x)
- end
-end
-
-def fun_l17_n332(x)
- if (x < 1)
- fun_l18_n842(x)
- else
- fun_l18_n198(x)
- end
-end
-
-def fun_l17_n333(x)
- if (x < 1)
- fun_l18_n549(x)
- else
- fun_l18_n208(x)
- end
-end
-
-def fun_l17_n334(x)
- if (x < 1)
- fun_l18_n976(x)
- else
- fun_l18_n316(x)
- end
-end
-
-def fun_l17_n335(x)
- if (x < 1)
- fun_l18_n401(x)
- else
- fun_l18_n105(x)
- end
-end
-
-def fun_l17_n336(x)
- if (x < 1)
- fun_l18_n357(x)
- else
- fun_l18_n54(x)
- end
-end
-
-def fun_l17_n337(x)
- if (x < 1)
- fun_l18_n685(x)
- else
- fun_l18_n140(x)
- end
-end
-
-def fun_l17_n338(x)
- if (x < 1)
- fun_l18_n301(x)
- else
- fun_l18_n167(x)
- end
-end
-
-def fun_l17_n339(x)
- if (x < 1)
- fun_l18_n398(x)
- else
- fun_l18_n643(x)
- end
-end
-
-def fun_l17_n340(x)
- if (x < 1)
- fun_l18_n147(x)
- else
- fun_l18_n27(x)
- end
-end
-
-def fun_l17_n341(x)
- if (x < 1)
- fun_l18_n813(x)
- else
- fun_l18_n935(x)
- end
-end
-
-def fun_l17_n342(x)
- if (x < 1)
- fun_l18_n319(x)
- else
- fun_l18_n429(x)
- end
-end
-
-def fun_l17_n343(x)
- if (x < 1)
- fun_l18_n957(x)
- else
- fun_l18_n961(x)
- end
-end
-
-def fun_l17_n344(x)
- if (x < 1)
- fun_l18_n380(x)
- else
- fun_l18_n604(x)
- end
-end
-
-def fun_l17_n345(x)
- if (x < 1)
- fun_l18_n321(x)
- else
- fun_l18_n473(x)
- end
-end
-
-def fun_l17_n346(x)
- if (x < 1)
- fun_l18_n346(x)
- else
- fun_l18_n752(x)
- end
-end
-
-def fun_l17_n347(x)
- if (x < 1)
- fun_l18_n645(x)
- else
- fun_l18_n511(x)
- end
-end
-
-def fun_l17_n348(x)
- if (x < 1)
- fun_l18_n647(x)
- else
- fun_l18_n997(x)
- end
-end
-
-def fun_l17_n349(x)
- if (x < 1)
- fun_l18_n291(x)
- else
- fun_l18_n580(x)
- end
-end
-
-def fun_l17_n350(x)
- if (x < 1)
- fun_l18_n745(x)
- else
- fun_l18_n402(x)
- end
-end
-
-def fun_l17_n351(x)
- if (x < 1)
- fun_l18_n533(x)
- else
- fun_l18_n117(x)
- end
-end
-
-def fun_l17_n352(x)
- if (x < 1)
- fun_l18_n490(x)
- else
- fun_l18_n458(x)
- end
-end
-
-def fun_l17_n353(x)
- if (x < 1)
- fun_l18_n526(x)
- else
- fun_l18_n311(x)
- end
-end
-
-def fun_l17_n354(x)
- if (x < 1)
- fun_l18_n315(x)
- else
- fun_l18_n306(x)
- end
-end
-
-def fun_l17_n355(x)
- if (x < 1)
- fun_l18_n349(x)
- else
- fun_l18_n975(x)
- end
-end
-
-def fun_l17_n356(x)
- if (x < 1)
- fun_l18_n764(x)
- else
- fun_l18_n897(x)
- end
-end
-
-def fun_l17_n357(x)
- if (x < 1)
- fun_l18_n308(x)
- else
- fun_l18_n662(x)
- end
-end
-
-def fun_l17_n358(x)
- if (x < 1)
- fun_l18_n7(x)
- else
- fun_l18_n807(x)
- end
-end
-
-def fun_l17_n359(x)
- if (x < 1)
- fun_l18_n896(x)
- else
- fun_l18_n277(x)
- end
-end
-
-def fun_l17_n360(x)
- if (x < 1)
- fun_l18_n606(x)
- else
- fun_l18_n605(x)
- end
-end
-
-def fun_l17_n361(x)
- if (x < 1)
- fun_l18_n971(x)
- else
- fun_l18_n59(x)
- end
-end
-
-def fun_l17_n362(x)
- if (x < 1)
- fun_l18_n304(x)
- else
- fun_l18_n604(x)
- end
-end
-
-def fun_l17_n363(x)
- if (x < 1)
- fun_l18_n607(x)
- else
- fun_l18_n758(x)
- end
-end
-
-def fun_l17_n364(x)
- if (x < 1)
- fun_l18_n454(x)
- else
- fun_l18_n635(x)
- end
-end
-
-def fun_l17_n365(x)
- if (x < 1)
- fun_l18_n287(x)
- else
- fun_l18_n979(x)
- end
-end
-
-def fun_l17_n366(x)
- if (x < 1)
- fun_l18_n708(x)
- else
- fun_l18_n480(x)
- end
-end
-
-def fun_l17_n367(x)
- if (x < 1)
- fun_l18_n925(x)
- else
- fun_l18_n96(x)
- end
-end
-
-def fun_l17_n368(x)
- if (x < 1)
- fun_l18_n756(x)
- else
- fun_l18_n765(x)
- end
-end
-
-def fun_l17_n369(x)
- if (x < 1)
- fun_l18_n134(x)
- else
- fun_l18_n320(x)
- end
-end
-
-def fun_l17_n370(x)
- if (x < 1)
- fun_l18_n167(x)
- else
- fun_l18_n112(x)
- end
-end
-
-def fun_l17_n371(x)
- if (x < 1)
- fun_l18_n393(x)
- else
- fun_l18_n701(x)
- end
-end
-
-def fun_l17_n372(x)
- if (x < 1)
- fun_l18_n363(x)
- else
- fun_l18_n934(x)
- end
-end
-
-def fun_l17_n373(x)
- if (x < 1)
- fun_l18_n431(x)
- else
- fun_l18_n343(x)
- end
-end
-
-def fun_l17_n374(x)
- if (x < 1)
- fun_l18_n111(x)
- else
- fun_l18_n689(x)
- end
-end
-
-def fun_l17_n375(x)
- if (x < 1)
- fun_l18_n609(x)
- else
- fun_l18_n814(x)
- end
-end
-
-def fun_l17_n376(x)
- if (x < 1)
- fun_l18_n9(x)
- else
- fun_l18_n711(x)
- end
-end
-
-def fun_l17_n377(x)
- if (x < 1)
- fun_l18_n270(x)
- else
- fun_l18_n455(x)
- end
-end
-
-def fun_l17_n378(x)
- if (x < 1)
- fun_l18_n432(x)
- else
- fun_l18_n348(x)
- end
-end
-
-def fun_l17_n379(x)
- if (x < 1)
- fun_l18_n646(x)
- else
- fun_l18_n934(x)
- end
-end
-
-def fun_l17_n380(x)
- if (x < 1)
- fun_l18_n737(x)
- else
- fun_l18_n472(x)
- end
-end
-
-def fun_l17_n381(x)
- if (x < 1)
- fun_l18_n163(x)
- else
- fun_l18_n533(x)
- end
-end
-
-def fun_l17_n382(x)
- if (x < 1)
- fun_l18_n71(x)
- else
- fun_l18_n343(x)
- end
-end
-
-def fun_l17_n383(x)
- if (x < 1)
- fun_l18_n52(x)
- else
- fun_l18_n0(x)
- end
-end
-
-def fun_l17_n384(x)
- if (x < 1)
- fun_l18_n708(x)
- else
- fun_l18_n616(x)
- end
-end
-
-def fun_l17_n385(x)
- if (x < 1)
- fun_l18_n525(x)
- else
- fun_l18_n818(x)
- end
-end
-
-def fun_l17_n386(x)
- if (x < 1)
- fun_l18_n154(x)
- else
- fun_l18_n588(x)
- end
-end
-
-def fun_l17_n387(x)
- if (x < 1)
- fun_l18_n295(x)
- else
- fun_l18_n462(x)
- end
-end
-
-def fun_l17_n388(x)
- if (x < 1)
- fun_l18_n331(x)
- else
- fun_l18_n773(x)
- end
-end
-
-def fun_l17_n389(x)
- if (x < 1)
- fun_l18_n221(x)
- else
- fun_l18_n168(x)
- end
-end
-
-def fun_l17_n390(x)
- if (x < 1)
- fun_l18_n575(x)
- else
- fun_l18_n284(x)
- end
-end
-
-def fun_l17_n391(x)
- if (x < 1)
- fun_l18_n936(x)
- else
- fun_l18_n71(x)
- end
-end
-
-def fun_l17_n392(x)
- if (x < 1)
- fun_l18_n123(x)
- else
- fun_l18_n863(x)
- end
-end
-
-def fun_l17_n393(x)
- if (x < 1)
- fun_l18_n664(x)
- else
- fun_l18_n189(x)
- end
-end
-
-def fun_l17_n394(x)
- if (x < 1)
- fun_l18_n456(x)
- else
- fun_l18_n476(x)
- end
-end
-
-def fun_l17_n395(x)
- if (x < 1)
- fun_l18_n557(x)
- else
- fun_l18_n877(x)
- end
-end
-
-def fun_l17_n396(x)
- if (x < 1)
- fun_l18_n192(x)
- else
- fun_l18_n312(x)
- end
-end
-
-def fun_l17_n397(x)
- if (x < 1)
- fun_l18_n87(x)
- else
- fun_l18_n56(x)
- end
-end
-
-def fun_l17_n398(x)
- if (x < 1)
- fun_l18_n769(x)
- else
- fun_l18_n597(x)
- end
-end
-
-def fun_l17_n399(x)
- if (x < 1)
- fun_l18_n534(x)
- else
- fun_l18_n366(x)
- end
-end
-
-def fun_l17_n400(x)
- if (x < 1)
- fun_l18_n284(x)
- else
- fun_l18_n503(x)
- end
-end
-
-def fun_l17_n401(x)
- if (x < 1)
- fun_l18_n655(x)
- else
- fun_l18_n242(x)
- end
-end
-
-def fun_l17_n402(x)
- if (x < 1)
- fun_l18_n491(x)
- else
- fun_l18_n81(x)
- end
-end
-
-def fun_l17_n403(x)
- if (x < 1)
- fun_l18_n861(x)
- else
- fun_l18_n372(x)
- end
-end
-
-def fun_l17_n404(x)
- if (x < 1)
- fun_l18_n600(x)
- else
- fun_l18_n692(x)
- end
-end
-
-def fun_l17_n405(x)
- if (x < 1)
- fun_l18_n336(x)
- else
- fun_l18_n778(x)
- end
-end
-
-def fun_l17_n406(x)
- if (x < 1)
- fun_l18_n224(x)
- else
- fun_l18_n277(x)
- end
-end
-
-def fun_l17_n407(x)
- if (x < 1)
- fun_l18_n630(x)
- else
- fun_l18_n861(x)
- end
-end
-
-def fun_l17_n408(x)
- if (x < 1)
- fun_l18_n829(x)
- else
- fun_l18_n213(x)
- end
-end
-
-def fun_l17_n409(x)
- if (x < 1)
- fun_l18_n325(x)
- else
- fun_l18_n599(x)
- end
-end
-
-def fun_l17_n410(x)
- if (x < 1)
- fun_l18_n850(x)
- else
- fun_l18_n828(x)
- end
-end
-
-def fun_l17_n411(x)
- if (x < 1)
- fun_l18_n557(x)
- else
- fun_l18_n757(x)
- end
-end
-
-def fun_l17_n412(x)
- if (x < 1)
- fun_l18_n755(x)
- else
- fun_l18_n474(x)
- end
-end
-
-def fun_l17_n413(x)
- if (x < 1)
- fun_l18_n945(x)
- else
- fun_l18_n113(x)
- end
-end
-
-def fun_l17_n414(x)
- if (x < 1)
- fun_l18_n584(x)
- else
- fun_l18_n815(x)
- end
-end
-
-def fun_l17_n415(x)
- if (x < 1)
- fun_l18_n136(x)
- else
- fun_l18_n997(x)
- end
-end
-
-def fun_l17_n416(x)
- if (x < 1)
- fun_l18_n57(x)
- else
- fun_l18_n361(x)
- end
-end
-
-def fun_l17_n417(x)
- if (x < 1)
- fun_l18_n3(x)
- else
- fun_l18_n882(x)
- end
-end
-
-def fun_l17_n418(x)
- if (x < 1)
- fun_l18_n578(x)
- else
- fun_l18_n719(x)
- end
-end
-
-def fun_l17_n419(x)
- if (x < 1)
- fun_l18_n426(x)
- else
- fun_l18_n958(x)
- end
-end
-
-def fun_l17_n420(x)
- if (x < 1)
- fun_l18_n384(x)
- else
- fun_l18_n182(x)
- end
-end
-
-def fun_l17_n421(x)
- if (x < 1)
- fun_l18_n458(x)
- else
- fun_l18_n314(x)
- end
-end
-
-def fun_l17_n422(x)
- if (x < 1)
- fun_l18_n641(x)
- else
- fun_l18_n678(x)
- end
-end
-
-def fun_l17_n423(x)
- if (x < 1)
- fun_l18_n790(x)
- else
- fun_l18_n830(x)
- end
-end
-
-def fun_l17_n424(x)
- if (x < 1)
- fun_l18_n207(x)
- else
- fun_l18_n686(x)
- end
-end
-
-def fun_l17_n425(x)
- if (x < 1)
- fun_l18_n847(x)
- else
- fun_l18_n387(x)
- end
-end
-
-def fun_l17_n426(x)
- if (x < 1)
- fun_l18_n744(x)
- else
- fun_l18_n9(x)
- end
-end
-
-def fun_l17_n427(x)
- if (x < 1)
- fun_l18_n446(x)
- else
- fun_l18_n533(x)
- end
-end
-
-def fun_l17_n428(x)
- if (x < 1)
- fun_l18_n910(x)
- else
- fun_l18_n749(x)
- end
-end
-
-def fun_l17_n429(x)
- if (x < 1)
- fun_l18_n918(x)
- else
- fun_l18_n260(x)
- end
-end
-
-def fun_l17_n430(x)
- if (x < 1)
- fun_l18_n812(x)
- else
- fun_l18_n545(x)
- end
-end
-
-def fun_l17_n431(x)
- if (x < 1)
- fun_l18_n191(x)
- else
- fun_l18_n260(x)
- end
-end
-
-def fun_l17_n432(x)
- if (x < 1)
- fun_l18_n155(x)
- else
- fun_l18_n582(x)
- end
-end
-
-def fun_l17_n433(x)
- if (x < 1)
- fun_l18_n374(x)
- else
- fun_l18_n991(x)
- end
-end
-
-def fun_l17_n434(x)
- if (x < 1)
- fun_l18_n611(x)
- else
- fun_l18_n334(x)
- end
-end
-
-def fun_l17_n435(x)
- if (x < 1)
- fun_l18_n876(x)
- else
- fun_l18_n386(x)
- end
-end
-
-def fun_l17_n436(x)
- if (x < 1)
- fun_l18_n985(x)
- else
- fun_l18_n874(x)
- end
-end
-
-def fun_l17_n437(x)
- if (x < 1)
- fun_l18_n715(x)
- else
- fun_l18_n52(x)
- end
-end
-
-def fun_l17_n438(x)
- if (x < 1)
- fun_l18_n53(x)
- else
- fun_l18_n15(x)
- end
-end
-
-def fun_l17_n439(x)
- if (x < 1)
- fun_l18_n689(x)
- else
- fun_l18_n498(x)
- end
-end
-
-def fun_l17_n440(x)
- if (x < 1)
- fun_l18_n990(x)
- else
- fun_l18_n70(x)
- end
-end
-
-def fun_l17_n441(x)
- if (x < 1)
- fun_l18_n369(x)
- else
- fun_l18_n327(x)
- end
-end
-
-def fun_l17_n442(x)
- if (x < 1)
- fun_l18_n157(x)
- else
- fun_l18_n917(x)
- end
-end
-
-def fun_l17_n443(x)
- if (x < 1)
- fun_l18_n822(x)
- else
- fun_l18_n472(x)
- end
-end
-
-def fun_l17_n444(x)
- if (x < 1)
- fun_l18_n465(x)
- else
- fun_l18_n19(x)
- end
-end
-
-def fun_l17_n445(x)
- if (x < 1)
- fun_l18_n543(x)
- else
- fun_l18_n499(x)
- end
-end
-
-def fun_l17_n446(x)
- if (x < 1)
- fun_l18_n662(x)
- else
- fun_l18_n531(x)
- end
-end
-
-def fun_l17_n447(x)
- if (x < 1)
- fun_l18_n452(x)
- else
- fun_l18_n150(x)
- end
-end
-
-def fun_l17_n448(x)
- if (x < 1)
- fun_l18_n438(x)
- else
- fun_l18_n552(x)
- end
-end
-
-def fun_l17_n449(x)
- if (x < 1)
- fun_l18_n23(x)
- else
- fun_l18_n89(x)
- end
-end
-
-def fun_l17_n450(x)
- if (x < 1)
- fun_l18_n896(x)
- else
- fun_l18_n313(x)
- end
-end
-
-def fun_l17_n451(x)
- if (x < 1)
- fun_l18_n221(x)
- else
- fun_l18_n622(x)
- end
-end
-
-def fun_l17_n452(x)
- if (x < 1)
- fun_l18_n347(x)
- else
- fun_l18_n43(x)
- end
-end
-
-def fun_l17_n453(x)
- if (x < 1)
- fun_l18_n695(x)
- else
- fun_l18_n5(x)
- end
-end
-
-def fun_l17_n454(x)
- if (x < 1)
- fun_l18_n829(x)
- else
- fun_l18_n409(x)
- end
-end
-
-def fun_l17_n455(x)
- if (x < 1)
- fun_l18_n398(x)
- else
- fun_l18_n906(x)
- end
-end
-
-def fun_l17_n456(x)
- if (x < 1)
- fun_l18_n983(x)
- else
- fun_l18_n235(x)
- end
-end
-
-def fun_l17_n457(x)
- if (x < 1)
- fun_l18_n542(x)
- else
- fun_l18_n819(x)
- end
-end
-
-def fun_l17_n458(x)
- if (x < 1)
- fun_l18_n952(x)
- else
- fun_l18_n123(x)
- end
-end
-
-def fun_l17_n459(x)
- if (x < 1)
- fun_l18_n249(x)
- else
- fun_l18_n525(x)
- end
-end
-
-def fun_l17_n460(x)
- if (x < 1)
- fun_l18_n833(x)
- else
- fun_l18_n657(x)
- end
-end
-
-def fun_l17_n461(x)
- if (x < 1)
- fun_l18_n847(x)
- else
- fun_l18_n396(x)
- end
-end
-
-def fun_l17_n462(x)
- if (x < 1)
- fun_l18_n611(x)
- else
- fun_l18_n790(x)
- end
-end
-
-def fun_l17_n463(x)
- if (x < 1)
- fun_l18_n944(x)
- else
- fun_l18_n655(x)
- end
-end
-
-def fun_l17_n464(x)
- if (x < 1)
- fun_l18_n688(x)
- else
- fun_l18_n804(x)
- end
-end
-
-def fun_l17_n465(x)
- if (x < 1)
- fun_l18_n29(x)
- else
- fun_l18_n324(x)
- end
-end
-
-def fun_l17_n466(x)
- if (x < 1)
- fun_l18_n496(x)
- else
- fun_l18_n76(x)
- end
-end
-
-def fun_l17_n467(x)
- if (x < 1)
- fun_l18_n317(x)
- else
- fun_l18_n241(x)
- end
-end
-
-def fun_l17_n468(x)
- if (x < 1)
- fun_l18_n759(x)
- else
- fun_l18_n516(x)
- end
-end
-
-def fun_l17_n469(x)
- if (x < 1)
- fun_l18_n430(x)
- else
- fun_l18_n355(x)
- end
-end
-
-def fun_l17_n470(x)
- if (x < 1)
- fun_l18_n683(x)
- else
- fun_l18_n16(x)
- end
-end
-
-def fun_l17_n471(x)
- if (x < 1)
- fun_l18_n46(x)
- else
- fun_l18_n216(x)
- end
-end
-
-def fun_l17_n472(x)
- if (x < 1)
- fun_l18_n460(x)
- else
- fun_l18_n460(x)
- end
-end
-
-def fun_l17_n473(x)
- if (x < 1)
- fun_l18_n120(x)
- else
- fun_l18_n189(x)
- end
-end
-
-def fun_l17_n474(x)
- if (x < 1)
- fun_l18_n663(x)
- else
- fun_l18_n732(x)
- end
-end
-
-def fun_l17_n475(x)
- if (x < 1)
- fun_l18_n441(x)
- else
- fun_l18_n460(x)
- end
-end
-
-def fun_l17_n476(x)
- if (x < 1)
- fun_l18_n759(x)
- else
- fun_l18_n533(x)
- end
-end
-
-def fun_l17_n477(x)
- if (x < 1)
- fun_l18_n105(x)
- else
- fun_l18_n671(x)
- end
-end
-
-def fun_l17_n478(x)
- if (x < 1)
- fun_l18_n849(x)
- else
- fun_l18_n316(x)
- end
-end
-
-def fun_l17_n479(x)
- if (x < 1)
- fun_l18_n482(x)
- else
- fun_l18_n502(x)
- end
-end
-
-def fun_l17_n480(x)
- if (x < 1)
- fun_l18_n335(x)
- else
- fun_l18_n795(x)
- end
-end
-
-def fun_l17_n481(x)
- if (x < 1)
- fun_l18_n168(x)
- else
- fun_l18_n799(x)
- end
-end
-
-def fun_l17_n482(x)
- if (x < 1)
- fun_l18_n981(x)
- else
- fun_l18_n633(x)
- end
-end
-
-def fun_l17_n483(x)
- if (x < 1)
- fun_l18_n873(x)
- else
- fun_l18_n723(x)
- end
-end
-
-def fun_l17_n484(x)
- if (x < 1)
- fun_l18_n448(x)
- else
- fun_l18_n954(x)
- end
-end
-
-def fun_l17_n485(x)
- if (x < 1)
- fun_l18_n421(x)
- else
- fun_l18_n802(x)
- end
-end
-
-def fun_l17_n486(x)
- if (x < 1)
- fun_l18_n477(x)
- else
- fun_l18_n976(x)
- end
-end
-
-def fun_l17_n487(x)
- if (x < 1)
- fun_l18_n53(x)
- else
- fun_l18_n298(x)
- end
-end
-
-def fun_l17_n488(x)
- if (x < 1)
- fun_l18_n733(x)
- else
- fun_l18_n585(x)
- end
-end
-
-def fun_l17_n489(x)
- if (x < 1)
- fun_l18_n684(x)
- else
- fun_l18_n537(x)
- end
-end
-
-def fun_l17_n490(x)
- if (x < 1)
- fun_l18_n409(x)
- else
- fun_l18_n178(x)
- end
-end
-
-def fun_l17_n491(x)
- if (x < 1)
- fun_l18_n335(x)
- else
- fun_l18_n255(x)
- end
-end
-
-def fun_l17_n492(x)
- if (x < 1)
- fun_l18_n798(x)
- else
- fun_l18_n398(x)
- end
-end
-
-def fun_l17_n493(x)
- if (x < 1)
- fun_l18_n112(x)
- else
- fun_l18_n83(x)
- end
-end
-
-def fun_l17_n494(x)
- if (x < 1)
- fun_l18_n888(x)
- else
- fun_l18_n136(x)
- end
-end
-
-def fun_l17_n495(x)
- if (x < 1)
- fun_l18_n726(x)
- else
- fun_l18_n678(x)
- end
-end
-
-def fun_l17_n496(x)
- if (x < 1)
- fun_l18_n224(x)
- else
- fun_l18_n625(x)
- end
-end
-
-def fun_l17_n497(x)
- if (x < 1)
- fun_l18_n772(x)
- else
- fun_l18_n14(x)
- end
-end
-
-def fun_l17_n498(x)
- if (x < 1)
- fun_l18_n646(x)
- else
- fun_l18_n758(x)
- end
-end
-
-def fun_l17_n499(x)
- if (x < 1)
- fun_l18_n961(x)
- else
- fun_l18_n570(x)
- end
-end
-
-def fun_l17_n500(x)
- if (x < 1)
- fun_l18_n368(x)
- else
- fun_l18_n681(x)
- end
-end
-
-def fun_l17_n501(x)
- if (x < 1)
- fun_l18_n768(x)
- else
- fun_l18_n747(x)
- end
-end
-
-def fun_l17_n502(x)
- if (x < 1)
- fun_l18_n957(x)
- else
- fun_l18_n851(x)
- end
-end
-
-def fun_l17_n503(x)
- if (x < 1)
- fun_l18_n669(x)
- else
- fun_l18_n939(x)
- end
-end
-
-def fun_l17_n504(x)
- if (x < 1)
- fun_l18_n969(x)
- else
- fun_l18_n899(x)
- end
-end
-
-def fun_l17_n505(x)
- if (x < 1)
- fun_l18_n756(x)
- else
- fun_l18_n29(x)
- end
-end
-
-def fun_l17_n506(x)
- if (x < 1)
- fun_l18_n92(x)
- else
- fun_l18_n230(x)
- end
-end
-
-def fun_l17_n507(x)
- if (x < 1)
- fun_l18_n670(x)
- else
- fun_l18_n744(x)
- end
-end
-
-def fun_l17_n508(x)
- if (x < 1)
- fun_l18_n646(x)
- else
- fun_l18_n900(x)
- end
-end
-
-def fun_l17_n509(x)
- if (x < 1)
- fun_l18_n480(x)
- else
- fun_l18_n6(x)
- end
-end
-
-def fun_l17_n510(x)
- if (x < 1)
- fun_l18_n141(x)
- else
- fun_l18_n735(x)
- end
-end
-
-def fun_l17_n511(x)
- if (x < 1)
- fun_l18_n622(x)
- else
- fun_l18_n617(x)
- end
-end
-
-def fun_l17_n512(x)
- if (x < 1)
- fun_l18_n491(x)
- else
- fun_l18_n154(x)
- end
-end
-
-def fun_l17_n513(x)
- if (x < 1)
- fun_l18_n931(x)
- else
- fun_l18_n730(x)
- end
-end
-
-def fun_l17_n514(x)
- if (x < 1)
- fun_l18_n935(x)
- else
- fun_l18_n51(x)
- end
-end
-
-def fun_l17_n515(x)
- if (x < 1)
- fun_l18_n751(x)
- else
- fun_l18_n786(x)
- end
-end
-
-def fun_l17_n516(x)
- if (x < 1)
- fun_l18_n538(x)
- else
- fun_l18_n630(x)
- end
-end
-
-def fun_l17_n517(x)
- if (x < 1)
- fun_l18_n832(x)
- else
- fun_l18_n932(x)
- end
-end
-
-def fun_l17_n518(x)
- if (x < 1)
- fun_l18_n572(x)
- else
- fun_l18_n408(x)
- end
-end
-
-def fun_l17_n519(x)
- if (x < 1)
- fun_l18_n961(x)
- else
- fun_l18_n820(x)
- end
-end
-
-def fun_l17_n520(x)
- if (x < 1)
- fun_l18_n33(x)
- else
- fun_l18_n655(x)
- end
-end
-
-def fun_l17_n521(x)
- if (x < 1)
- fun_l18_n940(x)
- else
- fun_l18_n436(x)
- end
-end
-
-def fun_l17_n522(x)
- if (x < 1)
- fun_l18_n471(x)
- else
- fun_l18_n975(x)
- end
-end
-
-def fun_l17_n523(x)
- if (x < 1)
- fun_l18_n752(x)
- else
- fun_l18_n640(x)
- end
-end
-
-def fun_l17_n524(x)
- if (x < 1)
- fun_l18_n226(x)
- else
- fun_l18_n645(x)
- end
-end
-
-def fun_l17_n525(x)
- if (x < 1)
- fun_l18_n986(x)
- else
- fun_l18_n858(x)
- end
-end
-
-def fun_l17_n526(x)
- if (x < 1)
- fun_l18_n362(x)
- else
- fun_l18_n842(x)
- end
-end
-
-def fun_l17_n527(x)
- if (x < 1)
- fun_l18_n273(x)
- else
- fun_l18_n510(x)
- end
-end
-
-def fun_l17_n528(x)
- if (x < 1)
- fun_l18_n728(x)
- else
- fun_l18_n906(x)
- end
-end
-
-def fun_l17_n529(x)
- if (x < 1)
- fun_l18_n225(x)
- else
- fun_l18_n988(x)
- end
-end
-
-def fun_l17_n530(x)
- if (x < 1)
- fun_l18_n472(x)
- else
- fun_l18_n933(x)
- end
-end
-
-def fun_l17_n531(x)
- if (x < 1)
- fun_l18_n105(x)
- else
- fun_l18_n501(x)
- end
-end
-
-def fun_l17_n532(x)
- if (x < 1)
- fun_l18_n77(x)
- else
- fun_l18_n616(x)
- end
-end
-
-def fun_l17_n533(x)
- if (x < 1)
- fun_l18_n404(x)
- else
- fun_l18_n86(x)
- end
-end
-
-def fun_l17_n534(x)
- if (x < 1)
- fun_l18_n312(x)
- else
- fun_l18_n638(x)
- end
-end
-
-def fun_l17_n535(x)
- if (x < 1)
- fun_l18_n908(x)
- else
- fun_l18_n697(x)
- end
-end
-
-def fun_l17_n536(x)
- if (x < 1)
- fun_l18_n520(x)
- else
- fun_l18_n379(x)
- end
-end
-
-def fun_l17_n537(x)
- if (x < 1)
- fun_l18_n15(x)
- else
- fun_l18_n97(x)
- end
-end
-
-def fun_l17_n538(x)
- if (x < 1)
- fun_l18_n312(x)
- else
- fun_l18_n981(x)
- end
-end
-
-def fun_l17_n539(x)
- if (x < 1)
- fun_l18_n901(x)
- else
- fun_l18_n579(x)
- end
-end
-
-def fun_l17_n540(x)
- if (x < 1)
- fun_l18_n569(x)
- else
- fun_l18_n512(x)
- end
-end
-
-def fun_l17_n541(x)
- if (x < 1)
- fun_l18_n319(x)
- else
- fun_l18_n388(x)
- end
-end
-
-def fun_l17_n542(x)
- if (x < 1)
- fun_l18_n288(x)
- else
- fun_l18_n422(x)
- end
-end
-
-def fun_l17_n543(x)
- if (x < 1)
- fun_l18_n873(x)
- else
- fun_l18_n614(x)
- end
-end
-
-def fun_l17_n544(x)
- if (x < 1)
- fun_l18_n104(x)
- else
- fun_l18_n771(x)
- end
-end
-
-def fun_l17_n545(x)
- if (x < 1)
- fun_l18_n204(x)
- else
- fun_l18_n452(x)
- end
-end
-
-def fun_l17_n546(x)
- if (x < 1)
- fun_l18_n288(x)
- else
- fun_l18_n558(x)
- end
-end
-
-def fun_l17_n547(x)
- if (x < 1)
- fun_l18_n265(x)
- else
- fun_l18_n768(x)
- end
-end
-
-def fun_l17_n548(x)
- if (x < 1)
- fun_l18_n21(x)
- else
- fun_l18_n44(x)
- end
-end
-
-def fun_l17_n549(x)
- if (x < 1)
- fun_l18_n72(x)
- else
- fun_l18_n321(x)
- end
-end
-
-def fun_l17_n550(x)
- if (x < 1)
- fun_l18_n473(x)
- else
- fun_l18_n127(x)
- end
-end
-
-def fun_l17_n551(x)
- if (x < 1)
- fun_l18_n188(x)
- else
- fun_l18_n782(x)
- end
-end
-
-def fun_l17_n552(x)
- if (x < 1)
- fun_l18_n118(x)
- else
- fun_l18_n466(x)
- end
-end
-
-def fun_l17_n553(x)
- if (x < 1)
- fun_l18_n279(x)
- else
- fun_l18_n605(x)
- end
-end
-
-def fun_l17_n554(x)
- if (x < 1)
- fun_l18_n760(x)
- else
- fun_l18_n561(x)
- end
-end
-
-def fun_l17_n555(x)
- if (x < 1)
- fun_l18_n873(x)
- else
- fun_l18_n846(x)
- end
-end
-
-def fun_l17_n556(x)
- if (x < 1)
- fun_l18_n555(x)
- else
- fun_l18_n955(x)
- end
-end
-
-def fun_l17_n557(x)
- if (x < 1)
- fun_l18_n757(x)
- else
- fun_l18_n171(x)
- end
-end
-
-def fun_l17_n558(x)
- if (x < 1)
- fun_l18_n684(x)
- else
- fun_l18_n784(x)
- end
-end
-
-def fun_l17_n559(x)
- if (x < 1)
- fun_l18_n457(x)
- else
- fun_l18_n798(x)
- end
-end
-
-def fun_l17_n560(x)
- if (x < 1)
- fun_l18_n472(x)
- else
- fun_l18_n291(x)
- end
-end
-
-def fun_l17_n561(x)
- if (x < 1)
- fun_l18_n870(x)
- else
- fun_l18_n395(x)
- end
-end
-
-def fun_l17_n562(x)
- if (x < 1)
- fun_l18_n482(x)
- else
- fun_l18_n281(x)
- end
-end
-
-def fun_l17_n563(x)
- if (x < 1)
- fun_l18_n761(x)
- else
- fun_l18_n362(x)
- end
-end
-
-def fun_l17_n564(x)
- if (x < 1)
- fun_l18_n586(x)
- else
- fun_l18_n92(x)
- end
-end
-
-def fun_l17_n565(x)
- if (x < 1)
- fun_l18_n620(x)
- else
- fun_l18_n356(x)
- end
-end
-
-def fun_l17_n566(x)
- if (x < 1)
- fun_l18_n529(x)
- else
- fun_l18_n985(x)
- end
-end
-
-def fun_l17_n567(x)
- if (x < 1)
- fun_l18_n351(x)
- else
- fun_l18_n77(x)
- end
-end
-
-def fun_l17_n568(x)
- if (x < 1)
- fun_l18_n659(x)
- else
- fun_l18_n631(x)
- end
-end
-
-def fun_l17_n569(x)
- if (x < 1)
- fun_l18_n630(x)
- else
- fun_l18_n466(x)
- end
-end
-
-def fun_l17_n570(x)
- if (x < 1)
- fun_l18_n374(x)
- else
- fun_l18_n203(x)
- end
-end
-
-def fun_l17_n571(x)
- if (x < 1)
- fun_l18_n479(x)
- else
- fun_l18_n977(x)
- end
-end
-
-def fun_l17_n572(x)
- if (x < 1)
- fun_l18_n862(x)
- else
- fun_l18_n323(x)
- end
-end
-
-def fun_l17_n573(x)
- if (x < 1)
- fun_l18_n148(x)
- else
- fun_l18_n848(x)
- end
-end
-
-def fun_l17_n574(x)
- if (x < 1)
- fun_l18_n29(x)
- else
- fun_l18_n210(x)
- end
-end
-
-def fun_l17_n575(x)
- if (x < 1)
- fun_l18_n39(x)
- else
- fun_l18_n874(x)
- end
-end
-
-def fun_l17_n576(x)
- if (x < 1)
- fun_l18_n843(x)
- else
- fun_l18_n5(x)
- end
-end
-
-def fun_l17_n577(x)
- if (x < 1)
- fun_l18_n284(x)
- else
- fun_l18_n242(x)
- end
-end
-
-def fun_l17_n578(x)
- if (x < 1)
- fun_l18_n768(x)
- else
- fun_l18_n683(x)
- end
-end
-
-def fun_l17_n579(x)
- if (x < 1)
- fun_l18_n67(x)
- else
- fun_l18_n423(x)
- end
-end
-
-def fun_l17_n580(x)
- if (x < 1)
- fun_l18_n326(x)
- else
- fun_l18_n200(x)
- end
-end
-
-def fun_l17_n581(x)
- if (x < 1)
- fun_l18_n186(x)
- else
- fun_l18_n772(x)
- end
-end
-
-def fun_l17_n582(x)
- if (x < 1)
- fun_l18_n151(x)
- else
- fun_l18_n222(x)
- end
-end
-
-def fun_l17_n583(x)
- if (x < 1)
- fun_l18_n690(x)
- else
- fun_l18_n925(x)
- end
-end
-
-def fun_l17_n584(x)
- if (x < 1)
- fun_l18_n225(x)
- else
- fun_l18_n286(x)
- end
-end
-
-def fun_l17_n585(x)
- if (x < 1)
- fun_l18_n542(x)
- else
- fun_l18_n703(x)
- end
-end
-
-def fun_l17_n586(x)
- if (x < 1)
- fun_l18_n417(x)
- else
- fun_l18_n364(x)
- end
-end
-
-def fun_l17_n587(x)
- if (x < 1)
- fun_l18_n540(x)
- else
- fun_l18_n231(x)
- end
-end
-
-def fun_l17_n588(x)
- if (x < 1)
- fun_l18_n859(x)
- else
- fun_l18_n557(x)
- end
-end
-
-def fun_l17_n589(x)
- if (x < 1)
- fun_l18_n131(x)
- else
- fun_l18_n847(x)
- end
-end
-
-def fun_l17_n590(x)
- if (x < 1)
- fun_l18_n267(x)
- else
- fun_l18_n613(x)
- end
-end
-
-def fun_l17_n591(x)
- if (x < 1)
- fun_l18_n273(x)
- else
- fun_l18_n857(x)
- end
-end
-
-def fun_l17_n592(x)
- if (x < 1)
- fun_l18_n561(x)
- else
- fun_l18_n243(x)
- end
-end
-
-def fun_l17_n593(x)
- if (x < 1)
- fun_l18_n742(x)
- else
- fun_l18_n123(x)
- end
-end
-
-def fun_l17_n594(x)
- if (x < 1)
- fun_l18_n480(x)
- else
- fun_l18_n290(x)
- end
-end
-
-def fun_l17_n595(x)
- if (x < 1)
- fun_l18_n56(x)
- else
- fun_l18_n727(x)
- end
-end
-
-def fun_l17_n596(x)
- if (x < 1)
- fun_l18_n901(x)
- else
- fun_l18_n723(x)
- end
-end
-
-def fun_l17_n597(x)
- if (x < 1)
- fun_l18_n405(x)
- else
- fun_l18_n498(x)
- end
-end
-
-def fun_l17_n598(x)
- if (x < 1)
- fun_l18_n772(x)
- else
- fun_l18_n543(x)
- end
-end
-
-def fun_l17_n599(x)
- if (x < 1)
- fun_l18_n20(x)
- else
- fun_l18_n39(x)
- end
-end
-
-def fun_l17_n600(x)
- if (x < 1)
- fun_l18_n657(x)
- else
- fun_l18_n381(x)
- end
-end
-
-def fun_l17_n601(x)
- if (x < 1)
- fun_l18_n505(x)
- else
- fun_l18_n196(x)
- end
-end
-
-def fun_l17_n602(x)
- if (x < 1)
- fun_l18_n250(x)
- else
- fun_l18_n503(x)
- end
-end
-
-def fun_l17_n603(x)
- if (x < 1)
- fun_l18_n694(x)
- else
- fun_l18_n589(x)
- end
-end
-
-def fun_l17_n604(x)
- if (x < 1)
- fun_l18_n27(x)
- else
- fun_l18_n202(x)
- end
-end
-
-def fun_l17_n605(x)
- if (x < 1)
- fun_l18_n901(x)
- else
- fun_l18_n823(x)
- end
-end
-
-def fun_l17_n606(x)
- if (x < 1)
- fun_l18_n296(x)
- else
- fun_l18_n854(x)
- end
-end
-
-def fun_l17_n607(x)
- if (x < 1)
- fun_l18_n226(x)
- else
- fun_l18_n110(x)
- end
-end
-
-def fun_l17_n608(x)
- if (x < 1)
- fun_l18_n205(x)
- else
- fun_l18_n215(x)
- end
-end
-
-def fun_l17_n609(x)
- if (x < 1)
- fun_l18_n265(x)
- else
- fun_l18_n715(x)
- end
-end
-
-def fun_l17_n610(x)
- if (x < 1)
- fun_l18_n881(x)
- else
- fun_l18_n106(x)
- end
-end
-
-def fun_l17_n611(x)
- if (x < 1)
- fun_l18_n674(x)
- else
- fun_l18_n189(x)
- end
-end
-
-def fun_l17_n612(x)
- if (x < 1)
- fun_l18_n20(x)
- else
- fun_l18_n96(x)
- end
-end
-
-def fun_l17_n613(x)
- if (x < 1)
- fun_l18_n880(x)
- else
- fun_l18_n599(x)
- end
-end
-
-def fun_l17_n614(x)
- if (x < 1)
- fun_l18_n47(x)
- else
- fun_l18_n633(x)
- end
-end
-
-def fun_l17_n615(x)
- if (x < 1)
- fun_l18_n7(x)
- else
- fun_l18_n165(x)
- end
-end
-
-def fun_l17_n616(x)
- if (x < 1)
- fun_l18_n478(x)
- else
- fun_l18_n94(x)
- end
-end
-
-def fun_l17_n617(x)
- if (x < 1)
- fun_l18_n97(x)
- else
- fun_l18_n369(x)
- end
-end
-
-def fun_l17_n618(x)
- if (x < 1)
- fun_l18_n291(x)
- else
- fun_l18_n637(x)
- end
-end
-
-def fun_l17_n619(x)
- if (x < 1)
- fun_l18_n966(x)
- else
- fun_l18_n851(x)
- end
-end
-
-def fun_l17_n620(x)
- if (x < 1)
- fun_l18_n349(x)
- else
- fun_l18_n413(x)
- end
-end
-
-def fun_l17_n621(x)
- if (x < 1)
- fun_l18_n343(x)
- else
- fun_l18_n224(x)
- end
-end
-
-def fun_l17_n622(x)
- if (x < 1)
- fun_l18_n452(x)
- else
- fun_l18_n3(x)
- end
-end
-
-def fun_l17_n623(x)
- if (x < 1)
- fun_l18_n539(x)
- else
- fun_l18_n542(x)
- end
-end
-
-def fun_l17_n624(x)
- if (x < 1)
- fun_l18_n117(x)
- else
- fun_l18_n348(x)
- end
-end
-
-def fun_l17_n625(x)
- if (x < 1)
- fun_l18_n753(x)
- else
- fun_l18_n284(x)
- end
-end
-
-def fun_l17_n626(x)
- if (x < 1)
- fun_l18_n146(x)
- else
- fun_l18_n228(x)
- end
-end
-
-def fun_l17_n627(x)
- if (x < 1)
- fun_l18_n286(x)
- else
- fun_l18_n413(x)
- end
-end
-
-def fun_l17_n628(x)
- if (x < 1)
- fun_l18_n730(x)
- else
- fun_l18_n311(x)
- end
-end
-
-def fun_l17_n629(x)
- if (x < 1)
- fun_l18_n455(x)
- else
- fun_l18_n141(x)
- end
-end
-
-def fun_l17_n630(x)
- if (x < 1)
- fun_l18_n300(x)
- else
- fun_l18_n368(x)
- end
-end
-
-def fun_l17_n631(x)
- if (x < 1)
- fun_l18_n490(x)
- else
- fun_l18_n711(x)
- end
-end
-
-def fun_l17_n632(x)
- if (x < 1)
- fun_l18_n310(x)
- else
- fun_l18_n805(x)
- end
-end
-
-def fun_l17_n633(x)
- if (x < 1)
- fun_l18_n2(x)
- else
- fun_l18_n709(x)
- end
-end
-
-def fun_l17_n634(x)
- if (x < 1)
- fun_l18_n239(x)
- else
- fun_l18_n394(x)
- end
-end
-
-def fun_l17_n635(x)
- if (x < 1)
- fun_l18_n933(x)
- else
- fun_l18_n749(x)
- end
-end
-
-def fun_l17_n636(x)
- if (x < 1)
- fun_l18_n54(x)
- else
- fun_l18_n511(x)
- end
-end
-
-def fun_l17_n637(x)
- if (x < 1)
- fun_l18_n908(x)
- else
- fun_l18_n550(x)
- end
-end
-
-def fun_l17_n638(x)
- if (x < 1)
- fun_l18_n262(x)
- else
- fun_l18_n485(x)
- end
-end
-
-def fun_l17_n639(x)
- if (x < 1)
- fun_l18_n676(x)
- else
- fun_l18_n860(x)
- end
-end
-
-def fun_l17_n640(x)
- if (x < 1)
- fun_l18_n205(x)
- else
- fun_l18_n901(x)
- end
-end
-
-def fun_l17_n641(x)
- if (x < 1)
- fun_l18_n834(x)
- else
- fun_l18_n133(x)
- end
-end
-
-def fun_l17_n642(x)
- if (x < 1)
- fun_l18_n824(x)
- else
- fun_l18_n551(x)
- end
-end
-
-def fun_l17_n643(x)
- if (x < 1)
- fun_l18_n362(x)
- else
- fun_l18_n684(x)
- end
-end
-
-def fun_l17_n644(x)
- if (x < 1)
- fun_l18_n856(x)
- else
- fun_l18_n103(x)
- end
-end
-
-def fun_l17_n645(x)
- if (x < 1)
- fun_l18_n999(x)
- else
- fun_l18_n995(x)
- end
-end
-
-def fun_l17_n646(x)
- if (x < 1)
- fun_l18_n24(x)
- else
- fun_l18_n405(x)
- end
-end
-
-def fun_l17_n647(x)
- if (x < 1)
- fun_l18_n71(x)
- else
- fun_l18_n201(x)
- end
-end
-
-def fun_l17_n648(x)
- if (x < 1)
- fun_l18_n905(x)
- else
- fun_l18_n14(x)
- end
-end
-
-def fun_l17_n649(x)
- if (x < 1)
- fun_l18_n490(x)
- else
- fun_l18_n932(x)
- end
-end
-
-def fun_l17_n650(x)
- if (x < 1)
- fun_l18_n25(x)
- else
- fun_l18_n333(x)
- end
-end
-
-def fun_l17_n651(x)
- if (x < 1)
- fun_l18_n282(x)
- else
- fun_l18_n197(x)
- end
-end
-
-def fun_l17_n652(x)
- if (x < 1)
- fun_l18_n684(x)
- else
- fun_l18_n618(x)
- end
-end
-
-def fun_l17_n653(x)
- if (x < 1)
- fun_l18_n201(x)
- else
- fun_l18_n571(x)
- end
-end
-
-def fun_l17_n654(x)
- if (x < 1)
- fun_l18_n26(x)
- else
- fun_l18_n813(x)
- end
-end
-
-def fun_l17_n655(x)
- if (x < 1)
- fun_l18_n879(x)
- else
- fun_l18_n860(x)
- end
-end
-
-def fun_l17_n656(x)
- if (x < 1)
- fun_l18_n193(x)
- else
- fun_l18_n635(x)
- end
-end
-
-def fun_l17_n657(x)
- if (x < 1)
- fun_l18_n163(x)
- else
- fun_l18_n601(x)
- end
-end
-
-def fun_l17_n658(x)
- if (x < 1)
- fun_l18_n794(x)
- else
- fun_l18_n582(x)
- end
-end
-
-def fun_l17_n659(x)
- if (x < 1)
- fun_l18_n22(x)
- else
- fun_l18_n427(x)
- end
-end
-
-def fun_l17_n660(x)
- if (x < 1)
- fun_l18_n959(x)
- else
- fun_l18_n21(x)
- end
-end
-
-def fun_l17_n661(x)
- if (x < 1)
- fun_l18_n233(x)
- else
- fun_l18_n852(x)
- end
-end
-
-def fun_l17_n662(x)
- if (x < 1)
- fun_l18_n367(x)
- else
- fun_l18_n119(x)
- end
-end
-
-def fun_l17_n663(x)
- if (x < 1)
- fun_l18_n511(x)
- else
- fun_l18_n425(x)
- end
-end
-
-def fun_l17_n664(x)
- if (x < 1)
- fun_l18_n256(x)
- else
- fun_l18_n294(x)
- end
-end
-
-def fun_l17_n665(x)
- if (x < 1)
- fun_l18_n263(x)
- else
- fun_l18_n549(x)
- end
-end
-
-def fun_l17_n666(x)
- if (x < 1)
- fun_l18_n868(x)
- else
- fun_l18_n221(x)
- end
-end
-
-def fun_l17_n667(x)
- if (x < 1)
- fun_l18_n703(x)
- else
- fun_l18_n157(x)
- end
-end
-
-def fun_l17_n668(x)
- if (x < 1)
- fun_l18_n639(x)
- else
- fun_l18_n685(x)
- end
-end
-
-def fun_l17_n669(x)
- if (x < 1)
- fun_l18_n278(x)
- else
- fun_l18_n366(x)
- end
-end
-
-def fun_l17_n670(x)
- if (x < 1)
- fun_l18_n267(x)
- else
- fun_l18_n641(x)
- end
-end
-
-def fun_l17_n671(x)
- if (x < 1)
- fun_l18_n452(x)
- else
- fun_l18_n851(x)
- end
-end
-
-def fun_l17_n672(x)
- if (x < 1)
- fun_l18_n256(x)
- else
- fun_l18_n282(x)
- end
-end
-
-def fun_l17_n673(x)
- if (x < 1)
- fun_l18_n397(x)
- else
- fun_l18_n446(x)
- end
-end
-
-def fun_l17_n674(x)
- if (x < 1)
- fun_l18_n499(x)
- else
- fun_l18_n166(x)
- end
-end
-
-def fun_l17_n675(x)
- if (x < 1)
- fun_l18_n299(x)
- else
- fun_l18_n473(x)
- end
-end
-
-def fun_l17_n676(x)
- if (x < 1)
- fun_l18_n331(x)
- else
- fun_l18_n590(x)
- end
-end
-
-def fun_l17_n677(x)
- if (x < 1)
- fun_l18_n951(x)
- else
- fun_l18_n227(x)
- end
-end
-
-def fun_l17_n678(x)
- if (x < 1)
- fun_l18_n874(x)
- else
- fun_l18_n359(x)
- end
-end
-
-def fun_l17_n679(x)
- if (x < 1)
- fun_l18_n187(x)
- else
- fun_l18_n13(x)
- end
-end
-
-def fun_l17_n680(x)
- if (x < 1)
- fun_l18_n878(x)
- else
- fun_l18_n902(x)
- end
-end
-
-def fun_l17_n681(x)
- if (x < 1)
- fun_l18_n450(x)
- else
- fun_l18_n262(x)
- end
-end
-
-def fun_l17_n682(x)
- if (x < 1)
- fun_l18_n759(x)
- else
- fun_l18_n253(x)
- end
-end
-
-def fun_l17_n683(x)
- if (x < 1)
- fun_l18_n199(x)
- else
- fun_l18_n191(x)
- end
-end
-
-def fun_l17_n684(x)
- if (x < 1)
- fun_l18_n93(x)
- else
- fun_l18_n275(x)
- end
-end
-
-def fun_l17_n685(x)
- if (x < 1)
- fun_l18_n17(x)
- else
- fun_l18_n575(x)
- end
-end
-
-def fun_l17_n686(x)
- if (x < 1)
- fun_l18_n971(x)
- else
- fun_l18_n540(x)
- end
-end
-
-def fun_l17_n687(x)
- if (x < 1)
- fun_l18_n942(x)
- else
- fun_l18_n285(x)
- end
-end
-
-def fun_l17_n688(x)
- if (x < 1)
- fun_l18_n348(x)
- else
- fun_l18_n7(x)
- end
-end
-
-def fun_l17_n689(x)
- if (x < 1)
- fun_l18_n839(x)
- else
- fun_l18_n532(x)
- end
-end
-
-def fun_l17_n690(x)
- if (x < 1)
- fun_l18_n578(x)
- else
- fun_l18_n751(x)
- end
-end
-
-def fun_l17_n691(x)
- if (x < 1)
- fun_l18_n85(x)
- else
- fun_l18_n311(x)
- end
-end
-
-def fun_l17_n692(x)
- if (x < 1)
- fun_l18_n573(x)
- else
- fun_l18_n685(x)
- end
-end
-
-def fun_l17_n693(x)
- if (x < 1)
- fun_l18_n449(x)
- else
- fun_l18_n749(x)
- end
-end
-
-def fun_l17_n694(x)
- if (x < 1)
- fun_l18_n251(x)
- else
- fun_l18_n266(x)
- end
-end
-
-def fun_l17_n695(x)
- if (x < 1)
- fun_l18_n69(x)
- else
- fun_l18_n725(x)
- end
-end
-
-def fun_l17_n696(x)
- if (x < 1)
- fun_l18_n54(x)
- else
- fun_l18_n196(x)
- end
-end
-
-def fun_l17_n697(x)
- if (x < 1)
- fun_l18_n950(x)
- else
- fun_l18_n423(x)
- end
-end
-
-def fun_l17_n698(x)
- if (x < 1)
- fun_l18_n809(x)
- else
- fun_l18_n787(x)
- end
-end
-
-def fun_l17_n699(x)
- if (x < 1)
- fun_l18_n211(x)
- else
- fun_l18_n79(x)
- end
-end
-
-def fun_l17_n700(x)
- if (x < 1)
- fun_l18_n686(x)
- else
- fun_l18_n287(x)
- end
-end
-
-def fun_l17_n701(x)
- if (x < 1)
- fun_l18_n412(x)
- else
- fun_l18_n769(x)
- end
-end
-
-def fun_l17_n702(x)
- if (x < 1)
- fun_l18_n62(x)
- else
- fun_l18_n592(x)
- end
-end
-
-def fun_l17_n703(x)
- if (x < 1)
- fun_l18_n628(x)
- else
- fun_l18_n121(x)
- end
-end
-
-def fun_l17_n704(x)
- if (x < 1)
- fun_l18_n84(x)
- else
- fun_l18_n350(x)
- end
-end
-
-def fun_l17_n705(x)
- if (x < 1)
- fun_l18_n599(x)
- else
- fun_l18_n174(x)
- end
-end
-
-def fun_l17_n706(x)
- if (x < 1)
- fun_l18_n39(x)
- else
- fun_l18_n266(x)
- end
-end
-
-def fun_l17_n707(x)
- if (x < 1)
- fun_l18_n196(x)
- else
- fun_l18_n838(x)
- end
-end
-
-def fun_l17_n708(x)
- if (x < 1)
- fun_l18_n647(x)
- else
- fun_l18_n26(x)
- end
-end
-
-def fun_l17_n709(x)
- if (x < 1)
- fun_l18_n693(x)
- else
- fun_l18_n660(x)
- end
-end
-
-def fun_l17_n710(x)
- if (x < 1)
- fun_l18_n530(x)
- else
- fun_l18_n654(x)
- end
-end
-
-def fun_l17_n711(x)
- if (x < 1)
- fun_l18_n580(x)
- else
- fun_l18_n65(x)
- end
-end
-
-def fun_l17_n712(x)
- if (x < 1)
- fun_l18_n789(x)
- else
- fun_l18_n832(x)
- end
-end
-
-def fun_l17_n713(x)
- if (x < 1)
- fun_l18_n366(x)
- else
- fun_l18_n168(x)
- end
-end
-
-def fun_l17_n714(x)
- if (x < 1)
- fun_l18_n571(x)
- else
- fun_l18_n23(x)
- end
-end
-
-def fun_l17_n715(x)
- if (x < 1)
- fun_l18_n552(x)
- else
- fun_l18_n400(x)
- end
-end
-
-def fun_l17_n716(x)
- if (x < 1)
- fun_l18_n752(x)
- else
- fun_l18_n403(x)
- end
-end
-
-def fun_l17_n717(x)
- if (x < 1)
- fun_l18_n498(x)
- else
- fun_l18_n173(x)
- end
-end
-
-def fun_l17_n718(x)
- if (x < 1)
- fun_l18_n168(x)
- else
- fun_l18_n656(x)
- end
-end
-
-def fun_l17_n719(x)
- if (x < 1)
- fun_l18_n75(x)
- else
- fun_l18_n393(x)
- end
-end
-
-def fun_l17_n720(x)
- if (x < 1)
- fun_l18_n856(x)
- else
- fun_l18_n101(x)
- end
-end
-
-def fun_l17_n721(x)
- if (x < 1)
- fun_l18_n445(x)
- else
- fun_l18_n846(x)
- end
-end
-
-def fun_l17_n722(x)
- if (x < 1)
- fun_l18_n450(x)
- else
- fun_l18_n136(x)
- end
-end
-
-def fun_l17_n723(x)
- if (x < 1)
- fun_l18_n267(x)
- else
- fun_l18_n800(x)
- end
-end
-
-def fun_l17_n724(x)
- if (x < 1)
- fun_l18_n98(x)
- else
- fun_l18_n955(x)
- end
-end
-
-def fun_l17_n725(x)
- if (x < 1)
- fun_l18_n951(x)
- else
- fun_l18_n319(x)
- end
-end
-
-def fun_l17_n726(x)
- if (x < 1)
- fun_l18_n531(x)
- else
- fun_l18_n846(x)
- end
-end
-
-def fun_l17_n727(x)
- if (x < 1)
- fun_l18_n888(x)
- else
- fun_l18_n600(x)
- end
-end
-
-def fun_l17_n728(x)
- if (x < 1)
- fun_l18_n278(x)
- else
- fun_l18_n445(x)
- end
-end
-
-def fun_l17_n729(x)
- if (x < 1)
- fun_l18_n113(x)
- else
- fun_l18_n991(x)
- end
-end
-
-def fun_l17_n730(x)
- if (x < 1)
- fun_l18_n756(x)
- else
- fun_l18_n935(x)
- end
-end
-
-def fun_l17_n731(x)
- if (x < 1)
- fun_l18_n2(x)
- else
- fun_l18_n969(x)
- end
-end
-
-def fun_l17_n732(x)
- if (x < 1)
- fun_l18_n138(x)
- else
- fun_l18_n198(x)
- end
-end
-
-def fun_l17_n733(x)
- if (x < 1)
- fun_l18_n845(x)
- else
- fun_l18_n614(x)
- end
-end
-
-def fun_l17_n734(x)
- if (x < 1)
- fun_l18_n603(x)
- else
- fun_l18_n568(x)
- end
-end
-
-def fun_l17_n735(x)
- if (x < 1)
- fun_l18_n276(x)
- else
- fun_l18_n58(x)
- end
-end
-
-def fun_l17_n736(x)
- if (x < 1)
- fun_l18_n404(x)
- else
- fun_l18_n906(x)
- end
-end
-
-def fun_l17_n737(x)
- if (x < 1)
- fun_l18_n199(x)
- else
- fun_l18_n734(x)
- end
-end
-
-def fun_l17_n738(x)
- if (x < 1)
- fun_l18_n327(x)
- else
- fun_l18_n667(x)
- end
-end
-
-def fun_l17_n739(x)
- if (x < 1)
- fun_l18_n600(x)
- else
- fun_l18_n986(x)
- end
-end
-
-def fun_l17_n740(x)
- if (x < 1)
- fun_l18_n820(x)
- else
- fun_l18_n615(x)
- end
-end
-
-def fun_l17_n741(x)
- if (x < 1)
- fun_l18_n779(x)
- else
- fun_l18_n912(x)
- end
-end
-
-def fun_l17_n742(x)
- if (x < 1)
- fun_l18_n55(x)
- else
- fun_l18_n41(x)
- end
-end
-
-def fun_l17_n743(x)
- if (x < 1)
- fun_l18_n24(x)
- else
- fun_l18_n877(x)
- end
-end
-
-def fun_l17_n744(x)
- if (x < 1)
- fun_l18_n834(x)
- else
- fun_l18_n10(x)
- end
-end
-
-def fun_l17_n745(x)
- if (x < 1)
- fun_l18_n369(x)
- else
- fun_l18_n761(x)
- end
-end
-
-def fun_l17_n746(x)
- if (x < 1)
- fun_l18_n534(x)
- else
- fun_l18_n292(x)
- end
-end
-
-def fun_l17_n747(x)
- if (x < 1)
- fun_l18_n260(x)
- else
- fun_l18_n98(x)
- end
-end
-
-def fun_l17_n748(x)
- if (x < 1)
- fun_l18_n738(x)
- else
- fun_l18_n298(x)
- end
-end
-
-def fun_l17_n749(x)
- if (x < 1)
- fun_l18_n156(x)
- else
- fun_l18_n322(x)
- end
-end
-
-def fun_l17_n750(x)
- if (x < 1)
- fun_l18_n519(x)
- else
- fun_l18_n566(x)
- end
-end
-
-def fun_l17_n751(x)
- if (x < 1)
- fun_l18_n599(x)
- else
- fun_l18_n525(x)
- end
-end
-
-def fun_l17_n752(x)
- if (x < 1)
- fun_l18_n51(x)
- else
- fun_l18_n334(x)
- end
-end
-
-def fun_l17_n753(x)
- if (x < 1)
- fun_l18_n593(x)
- else
- fun_l18_n799(x)
- end
-end
-
-def fun_l17_n754(x)
- if (x < 1)
- fun_l18_n599(x)
- else
- fun_l18_n167(x)
- end
-end
-
-def fun_l17_n755(x)
- if (x < 1)
- fun_l18_n799(x)
- else
- fun_l18_n909(x)
- end
-end
-
-def fun_l17_n756(x)
- if (x < 1)
- fun_l18_n988(x)
- else
- fun_l18_n793(x)
- end
-end
-
-def fun_l17_n757(x)
- if (x < 1)
- fun_l18_n144(x)
- else
- fun_l18_n279(x)
- end
-end
-
-def fun_l17_n758(x)
- if (x < 1)
- fun_l18_n981(x)
- else
- fun_l18_n603(x)
- end
-end
-
-def fun_l17_n759(x)
- if (x < 1)
- fun_l18_n576(x)
- else
- fun_l18_n730(x)
- end
-end
-
-def fun_l17_n760(x)
- if (x < 1)
- fun_l18_n66(x)
- else
- fun_l18_n359(x)
- end
-end
-
-def fun_l17_n761(x)
- if (x < 1)
- fun_l18_n555(x)
- else
- fun_l18_n553(x)
- end
-end
-
-def fun_l17_n762(x)
- if (x < 1)
- fun_l18_n508(x)
- else
- fun_l18_n665(x)
- end
-end
-
-def fun_l17_n763(x)
- if (x < 1)
- fun_l18_n911(x)
- else
- fun_l18_n19(x)
- end
-end
-
-def fun_l17_n764(x)
- if (x < 1)
- fun_l18_n162(x)
- else
- fun_l18_n707(x)
- end
-end
-
-def fun_l17_n765(x)
- if (x < 1)
- fun_l18_n262(x)
- else
- fun_l18_n494(x)
- end
-end
-
-def fun_l17_n766(x)
- if (x < 1)
- fun_l18_n220(x)
- else
- fun_l18_n144(x)
- end
-end
-
-def fun_l17_n767(x)
- if (x < 1)
- fun_l18_n245(x)
- else
- fun_l18_n727(x)
- end
-end
-
-def fun_l17_n768(x)
- if (x < 1)
- fun_l18_n875(x)
- else
- fun_l18_n610(x)
- end
-end
-
-def fun_l17_n769(x)
- if (x < 1)
- fun_l18_n338(x)
- else
- fun_l18_n344(x)
- end
-end
-
-def fun_l17_n770(x)
- if (x < 1)
- fun_l18_n224(x)
- else
- fun_l18_n682(x)
- end
-end
-
-def fun_l17_n771(x)
- if (x < 1)
- fun_l18_n353(x)
- else
- fun_l18_n102(x)
- end
-end
-
-def fun_l17_n772(x)
- if (x < 1)
- fun_l18_n122(x)
- else
- fun_l18_n979(x)
- end
-end
-
-def fun_l17_n773(x)
- if (x < 1)
- fun_l18_n549(x)
- else
- fun_l18_n296(x)
- end
-end
-
-def fun_l17_n774(x)
- if (x < 1)
- fun_l18_n82(x)
- else
- fun_l18_n748(x)
- end
-end
-
-def fun_l17_n775(x)
- if (x < 1)
- fun_l18_n958(x)
- else
- fun_l18_n917(x)
- end
-end
-
-def fun_l17_n776(x)
- if (x < 1)
- fun_l18_n173(x)
- else
- fun_l18_n438(x)
- end
-end
-
-def fun_l17_n777(x)
- if (x < 1)
- fun_l18_n222(x)
- else
- fun_l18_n55(x)
- end
-end
-
-def fun_l17_n778(x)
- if (x < 1)
- fun_l18_n529(x)
- else
- fun_l18_n548(x)
- end
-end
-
-def fun_l17_n779(x)
- if (x < 1)
- fun_l18_n28(x)
- else
- fun_l18_n582(x)
- end
-end
-
-def fun_l17_n780(x)
- if (x < 1)
- fun_l18_n818(x)
- else
- fun_l18_n836(x)
- end
-end
-
-def fun_l17_n781(x)
- if (x < 1)
- fun_l18_n972(x)
- else
- fun_l18_n73(x)
- end
-end
-
-def fun_l17_n782(x)
- if (x < 1)
- fun_l18_n527(x)
- else
- fun_l18_n999(x)
- end
-end
-
-def fun_l17_n783(x)
- if (x < 1)
- fun_l18_n832(x)
- else
- fun_l18_n833(x)
- end
-end
-
-def fun_l17_n784(x)
- if (x < 1)
- fun_l18_n987(x)
- else
- fun_l18_n329(x)
- end
-end
-
-def fun_l17_n785(x)
- if (x < 1)
- fun_l18_n715(x)
- else
- fun_l18_n441(x)
- end
-end
-
-def fun_l17_n786(x)
- if (x < 1)
- fun_l18_n55(x)
- else
- fun_l18_n682(x)
- end
-end
-
-def fun_l17_n787(x)
- if (x < 1)
- fun_l18_n606(x)
- else
- fun_l18_n656(x)
- end
-end
-
-def fun_l17_n788(x)
- if (x < 1)
- fun_l18_n254(x)
- else
- fun_l18_n544(x)
- end
-end
-
-def fun_l17_n789(x)
- if (x < 1)
- fun_l18_n285(x)
- else
- fun_l18_n585(x)
- end
-end
-
-def fun_l17_n790(x)
- if (x < 1)
- fun_l18_n441(x)
- else
- fun_l18_n716(x)
- end
-end
-
-def fun_l17_n791(x)
- if (x < 1)
- fun_l18_n415(x)
- else
- fun_l18_n126(x)
- end
-end
-
-def fun_l17_n792(x)
- if (x < 1)
- fun_l18_n490(x)
- else
- fun_l18_n753(x)
- end
-end
-
-def fun_l17_n793(x)
- if (x < 1)
- fun_l18_n324(x)
- else
- fun_l18_n223(x)
- end
-end
-
-def fun_l17_n794(x)
- if (x < 1)
- fun_l18_n913(x)
- else
- fun_l18_n94(x)
- end
-end
-
-def fun_l17_n795(x)
- if (x < 1)
- fun_l18_n879(x)
- else
- fun_l18_n404(x)
- end
-end
-
-def fun_l17_n796(x)
- if (x < 1)
- fun_l18_n309(x)
- else
- fun_l18_n65(x)
- end
-end
-
-def fun_l17_n797(x)
- if (x < 1)
- fun_l18_n712(x)
- else
- fun_l18_n947(x)
- end
-end
-
-def fun_l17_n798(x)
- if (x < 1)
- fun_l18_n238(x)
- else
- fun_l18_n83(x)
- end
-end
-
-def fun_l17_n799(x)
- if (x < 1)
- fun_l18_n25(x)
- else
- fun_l18_n371(x)
- end
-end
-
-def fun_l17_n800(x)
- if (x < 1)
- fun_l18_n501(x)
- else
- fun_l18_n386(x)
- end
-end
-
-def fun_l17_n801(x)
- if (x < 1)
- fun_l18_n453(x)
- else
- fun_l18_n168(x)
- end
-end
-
-def fun_l17_n802(x)
- if (x < 1)
- fun_l18_n763(x)
- else
- fun_l18_n675(x)
- end
-end
-
-def fun_l17_n803(x)
- if (x < 1)
- fun_l18_n984(x)
- else
- fun_l18_n882(x)
- end
-end
-
-def fun_l17_n804(x)
- if (x < 1)
- fun_l18_n545(x)
- else
- fun_l18_n79(x)
- end
-end
-
-def fun_l17_n805(x)
- if (x < 1)
- fun_l18_n263(x)
- else
- fun_l18_n143(x)
- end
-end
-
-def fun_l17_n806(x)
- if (x < 1)
- fun_l18_n232(x)
- else
- fun_l18_n864(x)
- end
-end
-
-def fun_l17_n807(x)
- if (x < 1)
- fun_l18_n6(x)
- else
- fun_l18_n983(x)
- end
-end
-
-def fun_l17_n808(x)
- if (x < 1)
- fun_l18_n17(x)
- else
- fun_l18_n426(x)
- end
-end
-
-def fun_l17_n809(x)
- if (x < 1)
- fun_l18_n1(x)
- else
- fun_l18_n669(x)
- end
-end
-
-def fun_l17_n810(x)
- if (x < 1)
- fun_l18_n191(x)
- else
- fun_l18_n540(x)
- end
-end
-
-def fun_l17_n811(x)
- if (x < 1)
- fun_l18_n16(x)
- else
- fun_l18_n871(x)
- end
-end
-
-def fun_l17_n812(x)
- if (x < 1)
- fun_l18_n352(x)
- else
- fun_l18_n156(x)
- end
-end
-
-def fun_l17_n813(x)
- if (x < 1)
- fun_l18_n239(x)
- else
- fun_l18_n314(x)
- end
-end
-
-def fun_l17_n814(x)
- if (x < 1)
- fun_l18_n890(x)
- else
- fun_l18_n21(x)
- end
-end
-
-def fun_l17_n815(x)
- if (x < 1)
- fun_l18_n894(x)
- else
- fun_l18_n894(x)
- end
-end
-
-def fun_l17_n816(x)
- if (x < 1)
- fun_l18_n75(x)
- else
- fun_l18_n631(x)
- end
-end
-
-def fun_l17_n817(x)
- if (x < 1)
- fun_l18_n118(x)
- else
- fun_l18_n857(x)
- end
-end
-
-def fun_l17_n818(x)
- if (x < 1)
- fun_l18_n403(x)
- else
- fun_l18_n364(x)
- end
-end
-
-def fun_l17_n819(x)
- if (x < 1)
- fun_l18_n15(x)
- else
- fun_l18_n232(x)
- end
-end
-
-def fun_l17_n820(x)
- if (x < 1)
- fun_l18_n610(x)
- else
- fun_l18_n43(x)
- end
-end
-
-def fun_l17_n821(x)
- if (x < 1)
- fun_l18_n949(x)
- else
- fun_l18_n884(x)
- end
-end
-
-def fun_l17_n822(x)
- if (x < 1)
- fun_l18_n387(x)
- else
- fun_l18_n587(x)
- end
-end
-
-def fun_l17_n823(x)
- if (x < 1)
- fun_l18_n99(x)
- else
- fun_l18_n653(x)
- end
-end
-
-def fun_l17_n824(x)
- if (x < 1)
- fun_l18_n41(x)
- else
- fun_l18_n822(x)
- end
-end
-
-def fun_l17_n825(x)
- if (x < 1)
- fun_l18_n325(x)
- else
- fun_l18_n735(x)
- end
-end
-
-def fun_l17_n826(x)
- if (x < 1)
- fun_l18_n415(x)
- else
- fun_l18_n684(x)
- end
-end
-
-def fun_l17_n827(x)
- if (x < 1)
- fun_l18_n856(x)
- else
- fun_l18_n257(x)
- end
-end
-
-def fun_l17_n828(x)
- if (x < 1)
- fun_l18_n455(x)
- else
- fun_l18_n200(x)
- end
-end
-
-def fun_l17_n829(x)
- if (x < 1)
- fun_l18_n486(x)
- else
- fun_l18_n528(x)
- end
-end
-
-def fun_l17_n830(x)
- if (x < 1)
- fun_l18_n321(x)
- else
- fun_l18_n619(x)
- end
-end
-
-def fun_l17_n831(x)
- if (x < 1)
- fun_l18_n910(x)
- else
- fun_l18_n796(x)
- end
-end
-
-def fun_l17_n832(x)
- if (x < 1)
- fun_l18_n303(x)
- else
- fun_l18_n278(x)
- end
-end
-
-def fun_l17_n833(x)
- if (x < 1)
- fun_l18_n477(x)
- else
- fun_l18_n733(x)
- end
-end
-
-def fun_l17_n834(x)
- if (x < 1)
- fun_l18_n320(x)
- else
- fun_l18_n801(x)
- end
-end
-
-def fun_l17_n835(x)
- if (x < 1)
- fun_l18_n672(x)
- else
- fun_l18_n183(x)
- end
-end
-
-def fun_l17_n836(x)
- if (x < 1)
- fun_l18_n810(x)
- else
- fun_l18_n923(x)
- end
-end
-
-def fun_l17_n837(x)
- if (x < 1)
- fun_l18_n775(x)
- else
- fun_l18_n884(x)
- end
-end
-
-def fun_l17_n838(x)
- if (x < 1)
- fun_l18_n9(x)
- else
- fun_l18_n690(x)
- end
-end
-
-def fun_l17_n839(x)
- if (x < 1)
- fun_l18_n843(x)
- else
- fun_l18_n482(x)
- end
-end
-
-def fun_l17_n840(x)
- if (x < 1)
- fun_l18_n527(x)
- else
- fun_l18_n331(x)
- end
-end
-
-def fun_l17_n841(x)
- if (x < 1)
- fun_l18_n210(x)
- else
- fun_l18_n119(x)
- end
-end
-
-def fun_l17_n842(x)
- if (x < 1)
- fun_l18_n365(x)
- else
- fun_l18_n752(x)
- end
-end
-
-def fun_l17_n843(x)
- if (x < 1)
- fun_l18_n855(x)
- else
- fun_l18_n149(x)
- end
-end
-
-def fun_l17_n844(x)
- if (x < 1)
- fun_l18_n822(x)
- else
- fun_l18_n852(x)
- end
-end
-
-def fun_l17_n845(x)
- if (x < 1)
- fun_l18_n182(x)
- else
- fun_l18_n145(x)
- end
-end
-
-def fun_l17_n846(x)
- if (x < 1)
- fun_l18_n167(x)
- else
- fun_l18_n47(x)
- end
-end
-
-def fun_l17_n847(x)
- if (x < 1)
- fun_l18_n350(x)
- else
- fun_l18_n894(x)
- end
-end
-
-def fun_l17_n848(x)
- if (x < 1)
- fun_l18_n264(x)
- else
- fun_l18_n739(x)
- end
-end
-
-def fun_l17_n849(x)
- if (x < 1)
- fun_l18_n475(x)
- else
- fun_l18_n974(x)
- end
-end
-
-def fun_l17_n850(x)
- if (x < 1)
- fun_l18_n849(x)
- else
- fun_l18_n68(x)
- end
-end
-
-def fun_l17_n851(x)
- if (x < 1)
- fun_l18_n160(x)
- else
- fun_l18_n173(x)
- end
-end
-
-def fun_l17_n852(x)
- if (x < 1)
- fun_l18_n353(x)
- else
- fun_l18_n931(x)
- end
-end
-
-def fun_l17_n853(x)
- if (x < 1)
- fun_l18_n706(x)
- else
- fun_l18_n540(x)
- end
-end
-
-def fun_l17_n854(x)
- if (x < 1)
- fun_l18_n559(x)
- else
- fun_l18_n149(x)
- end
-end
-
-def fun_l17_n855(x)
- if (x < 1)
- fun_l18_n347(x)
- else
- fun_l18_n559(x)
- end
-end
-
-def fun_l17_n856(x)
- if (x < 1)
- fun_l18_n640(x)
- else
- fun_l18_n529(x)
- end
-end
-
-def fun_l17_n857(x)
- if (x < 1)
- fun_l18_n410(x)
- else
- fun_l18_n278(x)
- end
-end
-
-def fun_l17_n858(x)
- if (x < 1)
- fun_l18_n15(x)
- else
- fun_l18_n21(x)
- end
-end
-
-def fun_l17_n859(x)
- if (x < 1)
- fun_l18_n180(x)
- else
- fun_l18_n530(x)
- end
-end
-
-def fun_l17_n860(x)
- if (x < 1)
- fun_l18_n739(x)
- else
- fun_l18_n817(x)
- end
-end
-
-def fun_l17_n861(x)
- if (x < 1)
- fun_l18_n341(x)
- else
- fun_l18_n962(x)
- end
-end
-
-def fun_l17_n862(x)
- if (x < 1)
- fun_l18_n994(x)
- else
- fun_l18_n338(x)
- end
-end
-
-def fun_l17_n863(x)
- if (x < 1)
- fun_l18_n428(x)
- else
- fun_l18_n608(x)
- end
-end
-
-def fun_l17_n864(x)
- if (x < 1)
- fun_l18_n889(x)
- else
- fun_l18_n974(x)
- end
-end
-
-def fun_l17_n865(x)
- if (x < 1)
- fun_l18_n300(x)
- else
- fun_l18_n164(x)
- end
-end
-
-def fun_l17_n866(x)
- if (x < 1)
- fun_l18_n195(x)
- else
- fun_l18_n75(x)
- end
-end
-
-def fun_l17_n867(x)
- if (x < 1)
- fun_l18_n725(x)
- else
- fun_l18_n639(x)
- end
-end
-
-def fun_l17_n868(x)
- if (x < 1)
- fun_l18_n793(x)
- else
- fun_l18_n925(x)
- end
-end
-
-def fun_l17_n869(x)
- if (x < 1)
- fun_l18_n845(x)
- else
- fun_l18_n174(x)
- end
-end
-
-def fun_l17_n870(x)
- if (x < 1)
- fun_l18_n202(x)
- else
- fun_l18_n376(x)
- end
-end
-
-def fun_l17_n871(x)
- if (x < 1)
- fun_l18_n503(x)
- else
- fun_l18_n441(x)
- end
-end
-
-def fun_l17_n872(x)
- if (x < 1)
- fun_l18_n675(x)
- else
- fun_l18_n180(x)
- end
-end
-
-def fun_l17_n873(x)
- if (x < 1)
- fun_l18_n457(x)
- else
- fun_l18_n286(x)
- end
-end
-
-def fun_l17_n874(x)
- if (x < 1)
- fun_l18_n918(x)
- else
- fun_l18_n438(x)
- end
-end
-
-def fun_l17_n875(x)
- if (x < 1)
- fun_l18_n269(x)
- else
- fun_l18_n539(x)
- end
-end
-
-def fun_l17_n876(x)
- if (x < 1)
- fun_l18_n417(x)
- else
- fun_l18_n68(x)
- end
-end
-
-def fun_l17_n877(x)
- if (x < 1)
- fun_l18_n382(x)
- else
- fun_l18_n392(x)
- end
-end
-
-def fun_l17_n878(x)
- if (x < 1)
- fun_l18_n981(x)
- else
- fun_l18_n997(x)
- end
-end
-
-def fun_l17_n879(x)
- if (x < 1)
- fun_l18_n8(x)
- else
- fun_l18_n255(x)
- end
-end
-
-def fun_l17_n880(x)
- if (x < 1)
- fun_l18_n634(x)
- else
- fun_l18_n971(x)
- end
-end
-
-def fun_l17_n881(x)
- if (x < 1)
- fun_l18_n940(x)
- else
- fun_l18_n410(x)
- end
-end
-
-def fun_l17_n882(x)
- if (x < 1)
- fun_l18_n550(x)
- else
- fun_l18_n959(x)
- end
-end
-
-def fun_l17_n883(x)
- if (x < 1)
- fun_l18_n258(x)
- else
- fun_l18_n766(x)
- end
-end
-
-def fun_l17_n884(x)
- if (x < 1)
- fun_l18_n841(x)
- else
- fun_l18_n387(x)
- end
-end
-
-def fun_l17_n885(x)
- if (x < 1)
- fun_l18_n357(x)
- else
- fun_l18_n128(x)
- end
-end
-
-def fun_l17_n886(x)
- if (x < 1)
- fun_l18_n872(x)
- else
- fun_l18_n471(x)
- end
-end
-
-def fun_l17_n887(x)
- if (x < 1)
- fun_l18_n596(x)
- else
- fun_l18_n639(x)
- end
-end
-
-def fun_l17_n888(x)
- if (x < 1)
- fun_l18_n665(x)
- else
- fun_l18_n999(x)
- end
-end
-
-def fun_l17_n889(x)
- if (x < 1)
- fun_l18_n898(x)
- else
- fun_l18_n899(x)
- end
-end
-
-def fun_l17_n890(x)
- if (x < 1)
- fun_l18_n457(x)
- else
- fun_l18_n370(x)
- end
-end
-
-def fun_l17_n891(x)
- if (x < 1)
- fun_l18_n100(x)
- else
- fun_l18_n899(x)
- end
-end
-
-def fun_l17_n892(x)
- if (x < 1)
- fun_l18_n785(x)
- else
- fun_l18_n552(x)
- end
-end
-
-def fun_l17_n893(x)
- if (x < 1)
- fun_l18_n386(x)
- else
- fun_l18_n971(x)
- end
-end
-
-def fun_l17_n894(x)
- if (x < 1)
- fun_l18_n128(x)
- else
- fun_l18_n28(x)
- end
-end
-
-def fun_l17_n895(x)
- if (x < 1)
- fun_l18_n18(x)
- else
- fun_l18_n682(x)
- end
-end
-
-def fun_l17_n896(x)
- if (x < 1)
- fun_l18_n470(x)
- else
- fun_l18_n477(x)
- end
-end
-
-def fun_l17_n897(x)
- if (x < 1)
- fun_l18_n543(x)
- else
- fun_l18_n943(x)
- end
-end
-
-def fun_l17_n898(x)
- if (x < 1)
- fun_l18_n554(x)
- else
- fun_l18_n431(x)
- end
-end
-
-def fun_l17_n899(x)
- if (x < 1)
- fun_l18_n615(x)
- else
- fun_l18_n480(x)
- end
-end
-
-def fun_l17_n900(x)
- if (x < 1)
- fun_l18_n557(x)
- else
- fun_l18_n831(x)
- end
-end
-
-def fun_l17_n901(x)
- if (x < 1)
- fun_l18_n245(x)
- else
- fun_l18_n79(x)
- end
-end
-
-def fun_l17_n902(x)
- if (x < 1)
- fun_l18_n332(x)
- else
- fun_l18_n536(x)
- end
-end
-
-def fun_l17_n903(x)
- if (x < 1)
- fun_l18_n531(x)
- else
- fun_l18_n933(x)
- end
-end
-
-def fun_l17_n904(x)
- if (x < 1)
- fun_l18_n748(x)
- else
- fun_l18_n210(x)
- end
-end
-
-def fun_l17_n905(x)
- if (x < 1)
- fun_l18_n351(x)
- else
- fun_l18_n698(x)
- end
-end
-
-def fun_l17_n906(x)
- if (x < 1)
- fun_l18_n112(x)
- else
- fun_l18_n397(x)
- end
-end
-
-def fun_l17_n907(x)
- if (x < 1)
- fun_l18_n177(x)
- else
- fun_l18_n826(x)
- end
-end
-
-def fun_l17_n908(x)
- if (x < 1)
- fun_l18_n635(x)
- else
- fun_l18_n885(x)
- end
-end
-
-def fun_l17_n909(x)
- if (x < 1)
- fun_l18_n225(x)
- else
- fun_l18_n139(x)
- end
-end
-
-def fun_l17_n910(x)
- if (x < 1)
- fun_l18_n30(x)
- else
- fun_l18_n113(x)
- end
-end
-
-def fun_l17_n911(x)
- if (x < 1)
- fun_l18_n5(x)
- else
- fun_l18_n324(x)
- end
-end
-
-def fun_l17_n912(x)
- if (x < 1)
- fun_l18_n626(x)
- else
- fun_l18_n326(x)
- end
-end
-
-def fun_l17_n913(x)
- if (x < 1)
- fun_l18_n478(x)
- else
- fun_l18_n373(x)
- end
-end
-
-def fun_l17_n914(x)
- if (x < 1)
- fun_l18_n348(x)
- else
- fun_l18_n420(x)
- end
-end
-
-def fun_l17_n915(x)
- if (x < 1)
- fun_l18_n777(x)
- else
- fun_l18_n185(x)
- end
-end
-
-def fun_l17_n916(x)
- if (x < 1)
- fun_l18_n18(x)
- else
- fun_l18_n286(x)
- end
-end
-
-def fun_l17_n917(x)
- if (x < 1)
- fun_l18_n199(x)
- else
- fun_l18_n378(x)
- end
-end
-
-def fun_l17_n918(x)
- if (x < 1)
- fun_l18_n282(x)
- else
- fun_l18_n617(x)
- end
-end
-
-def fun_l17_n919(x)
- if (x < 1)
- fun_l18_n634(x)
- else
- fun_l18_n396(x)
- end
-end
-
-def fun_l17_n920(x)
- if (x < 1)
- fun_l18_n630(x)
- else
- fun_l18_n479(x)
- end
-end
-
-def fun_l17_n921(x)
- if (x < 1)
- fun_l18_n828(x)
- else
- fun_l18_n189(x)
- end
-end
-
-def fun_l17_n922(x)
- if (x < 1)
- fun_l18_n468(x)
- else
- fun_l18_n400(x)
- end
-end
-
-def fun_l17_n923(x)
- if (x < 1)
- fun_l18_n815(x)
- else
- fun_l18_n0(x)
- end
-end
-
-def fun_l17_n924(x)
- if (x < 1)
- fun_l18_n796(x)
- else
- fun_l18_n357(x)
- end
-end
-
-def fun_l17_n925(x)
- if (x < 1)
- fun_l18_n4(x)
- else
- fun_l18_n293(x)
- end
-end
-
-def fun_l17_n926(x)
- if (x < 1)
- fun_l18_n187(x)
- else
- fun_l18_n131(x)
- end
-end
-
-def fun_l17_n927(x)
- if (x < 1)
- fun_l18_n896(x)
- else
- fun_l18_n257(x)
- end
-end
-
-def fun_l17_n928(x)
- if (x < 1)
- fun_l18_n596(x)
- else
- fun_l18_n115(x)
- end
-end
-
-def fun_l17_n929(x)
- if (x < 1)
- fun_l18_n630(x)
- else
- fun_l18_n62(x)
- end
-end
-
-def fun_l17_n930(x)
- if (x < 1)
- fun_l18_n776(x)
- else
- fun_l18_n664(x)
- end
-end
-
-def fun_l17_n931(x)
- if (x < 1)
- fun_l18_n424(x)
- else
- fun_l18_n298(x)
- end
-end
-
-def fun_l17_n932(x)
- if (x < 1)
- fun_l18_n734(x)
- else
- fun_l18_n652(x)
- end
-end
-
-def fun_l17_n933(x)
- if (x < 1)
- fun_l18_n796(x)
- else
- fun_l18_n8(x)
- end
-end
-
-def fun_l17_n934(x)
- if (x < 1)
- fun_l18_n783(x)
- else
- fun_l18_n177(x)
- end
-end
-
-def fun_l17_n935(x)
- if (x < 1)
- fun_l18_n288(x)
- else
- fun_l18_n274(x)
- end
-end
-
-def fun_l17_n936(x)
- if (x < 1)
- fun_l18_n289(x)
- else
- fun_l18_n938(x)
- end
-end
-
-def fun_l17_n937(x)
- if (x < 1)
- fun_l18_n815(x)
- else
- fun_l18_n924(x)
- end
-end
-
-def fun_l17_n938(x)
- if (x < 1)
- fun_l18_n145(x)
- else
- fun_l18_n497(x)
- end
-end
-
-def fun_l17_n939(x)
- if (x < 1)
- fun_l18_n433(x)
- else
- fun_l18_n628(x)
- end
-end
-
-def fun_l17_n940(x)
- if (x < 1)
- fun_l18_n410(x)
- else
- fun_l18_n461(x)
- end
-end
-
-def fun_l17_n941(x)
- if (x < 1)
- fun_l18_n682(x)
- else
- fun_l18_n81(x)
- end
-end
-
-def fun_l17_n942(x)
- if (x < 1)
- fun_l18_n948(x)
- else
- fun_l18_n29(x)
- end
-end
-
-def fun_l17_n943(x)
- if (x < 1)
- fun_l18_n78(x)
- else
- fun_l18_n237(x)
- end
-end
-
-def fun_l17_n944(x)
- if (x < 1)
- fun_l18_n683(x)
- else
- fun_l18_n936(x)
- end
-end
-
-def fun_l17_n945(x)
- if (x < 1)
- fun_l18_n339(x)
- else
- fun_l18_n471(x)
- end
-end
-
-def fun_l17_n946(x)
- if (x < 1)
- fun_l18_n903(x)
- else
- fun_l18_n983(x)
- end
-end
-
-def fun_l17_n947(x)
- if (x < 1)
- fun_l18_n231(x)
- else
- fun_l18_n985(x)
- end
-end
-
-def fun_l17_n948(x)
- if (x < 1)
- fun_l18_n379(x)
- else
- fun_l18_n385(x)
- end
-end
-
-def fun_l17_n949(x)
- if (x < 1)
- fun_l18_n89(x)
- else
- fun_l18_n499(x)
- end
-end
-
-def fun_l17_n950(x)
- if (x < 1)
- fun_l18_n851(x)
- else
- fun_l18_n563(x)
- end
-end
-
-def fun_l17_n951(x)
- if (x < 1)
- fun_l18_n803(x)
- else
- fun_l18_n109(x)
- end
-end
-
-def fun_l17_n952(x)
- if (x < 1)
- fun_l18_n178(x)
- else
- fun_l18_n886(x)
- end
-end
-
-def fun_l17_n953(x)
- if (x < 1)
- fun_l18_n705(x)
- else
- fun_l18_n340(x)
- end
-end
-
-def fun_l17_n954(x)
- if (x < 1)
- fun_l18_n207(x)
- else
- fun_l18_n499(x)
- end
-end
-
-def fun_l17_n955(x)
- if (x < 1)
- fun_l18_n298(x)
- else
- fun_l18_n921(x)
- end
-end
-
-def fun_l17_n956(x)
- if (x < 1)
- fun_l18_n291(x)
- else
- fun_l18_n768(x)
- end
-end
-
-def fun_l17_n957(x)
- if (x < 1)
- fun_l18_n144(x)
- else
- fun_l18_n316(x)
- end
-end
-
-def fun_l17_n958(x)
- if (x < 1)
- fun_l18_n375(x)
- else
- fun_l18_n891(x)
- end
-end
-
-def fun_l17_n959(x)
- if (x < 1)
- fun_l18_n989(x)
- else
- fun_l18_n773(x)
- end
-end
-
-def fun_l17_n960(x)
- if (x < 1)
- fun_l18_n615(x)
- else
- fun_l18_n252(x)
- end
-end
-
-def fun_l17_n961(x)
- if (x < 1)
- fun_l18_n827(x)
- else
- fun_l18_n567(x)
- end
-end
-
-def fun_l17_n962(x)
- if (x < 1)
- fun_l18_n792(x)
- else
- fun_l18_n81(x)
- end
-end
-
-def fun_l17_n963(x)
- if (x < 1)
- fun_l18_n561(x)
- else
- fun_l18_n732(x)
- end
-end
-
-def fun_l17_n964(x)
- if (x < 1)
- fun_l18_n113(x)
- else
- fun_l18_n110(x)
- end
-end
-
-def fun_l17_n965(x)
- if (x < 1)
- fun_l18_n321(x)
- else
- fun_l18_n557(x)
- end
-end
-
-def fun_l17_n966(x)
- if (x < 1)
- fun_l18_n409(x)
- else
- fun_l18_n449(x)
- end
-end
-
-def fun_l17_n967(x)
- if (x < 1)
- fun_l18_n316(x)
- else
- fun_l18_n669(x)
- end
-end
-
-def fun_l17_n968(x)
- if (x < 1)
- fun_l18_n190(x)
- else
- fun_l18_n450(x)
- end
-end
-
-def fun_l17_n969(x)
- if (x < 1)
- fun_l18_n174(x)
- else
- fun_l18_n425(x)
- end
-end
-
-def fun_l17_n970(x)
- if (x < 1)
- fun_l18_n918(x)
- else
- fun_l18_n537(x)
- end
-end
-
-def fun_l17_n971(x)
- if (x < 1)
- fun_l18_n923(x)
- else
- fun_l18_n998(x)
- end
-end
-
-def fun_l17_n972(x)
- if (x < 1)
- fun_l18_n625(x)
- else
- fun_l18_n75(x)
- end
-end
-
-def fun_l17_n973(x)
- if (x < 1)
- fun_l18_n171(x)
- else
- fun_l18_n180(x)
- end
-end
-
-def fun_l17_n974(x)
- if (x < 1)
- fun_l18_n430(x)
- else
- fun_l18_n659(x)
- end
-end
-
-def fun_l17_n975(x)
- if (x < 1)
- fun_l18_n88(x)
- else
- fun_l18_n363(x)
- end
-end
-
-def fun_l17_n976(x)
- if (x < 1)
- fun_l18_n408(x)
- else
- fun_l18_n986(x)
- end
-end
-
-def fun_l17_n977(x)
- if (x < 1)
- fun_l18_n988(x)
- else
- fun_l18_n818(x)
- end
-end
-
-def fun_l17_n978(x)
- if (x < 1)
- fun_l18_n824(x)
- else
- fun_l18_n24(x)
- end
-end
-
-def fun_l17_n979(x)
- if (x < 1)
- fun_l18_n182(x)
- else
- fun_l18_n969(x)
- end
-end
-
-def fun_l17_n980(x)
- if (x < 1)
- fun_l18_n187(x)
- else
- fun_l18_n615(x)
- end
-end
-
-def fun_l17_n981(x)
- if (x < 1)
- fun_l18_n646(x)
- else
- fun_l18_n25(x)
- end
-end
-
-def fun_l17_n982(x)
- if (x < 1)
- fun_l18_n700(x)
- else
- fun_l18_n127(x)
- end
-end
-
-def fun_l17_n983(x)
- if (x < 1)
- fun_l18_n153(x)
- else
- fun_l18_n831(x)
- end
-end
-
-def fun_l17_n984(x)
- if (x < 1)
- fun_l18_n884(x)
- else
- fun_l18_n540(x)
- end
-end
-
-def fun_l17_n985(x)
- if (x < 1)
- fun_l18_n225(x)
- else
- fun_l18_n221(x)
- end
-end
-
-def fun_l17_n986(x)
- if (x < 1)
- fun_l18_n431(x)
- else
- fun_l18_n884(x)
- end
-end
-
-def fun_l17_n987(x)
- if (x < 1)
- fun_l18_n271(x)
- else
- fun_l18_n541(x)
- end
-end
-
-def fun_l17_n988(x)
- if (x < 1)
- fun_l18_n419(x)
- else
- fun_l18_n183(x)
- end
-end
-
-def fun_l17_n989(x)
- if (x < 1)
- fun_l18_n85(x)
- else
- fun_l18_n51(x)
- end
-end
-
-def fun_l17_n990(x)
- if (x < 1)
- fun_l18_n528(x)
- else
- fun_l18_n380(x)
- end
-end
-
-def fun_l17_n991(x)
- if (x < 1)
- fun_l18_n13(x)
- else
- fun_l18_n137(x)
- end
-end
-
-def fun_l17_n992(x)
- if (x < 1)
- fun_l18_n655(x)
- else
- fun_l18_n344(x)
- end
-end
-
-def fun_l17_n993(x)
- if (x < 1)
- fun_l18_n911(x)
- else
- fun_l18_n21(x)
- end
-end
-
-def fun_l17_n994(x)
- if (x < 1)
- fun_l18_n887(x)
- else
- fun_l18_n935(x)
- end
-end
-
-def fun_l17_n995(x)
- if (x < 1)
- fun_l18_n206(x)
- else
- fun_l18_n374(x)
- end
-end
-
-def fun_l17_n996(x)
- if (x < 1)
- fun_l18_n552(x)
- else
- fun_l18_n209(x)
- end
-end
-
-def fun_l17_n997(x)
- if (x < 1)
- fun_l18_n540(x)
- else
- fun_l18_n901(x)
- end
-end
-
-def fun_l17_n998(x)
- if (x < 1)
- fun_l18_n547(x)
- else
- fun_l18_n304(x)
- end
-end
-
-def fun_l17_n999(x)
- if (x < 1)
- fun_l18_n297(x)
- else
- fun_l18_n868(x)
- end
-end
-
-def fun_l18_n0(x)
- if (x < 1)
- fun_l19_n619(x)
- else
- fun_l19_n167(x)
- end
-end
-
-def fun_l18_n1(x)
- if (x < 1)
- fun_l19_n669(x)
- else
- fun_l19_n962(x)
- end
-end
-
-def fun_l18_n2(x)
- if (x < 1)
- fun_l19_n235(x)
- else
- fun_l19_n99(x)
- end
-end
-
-def fun_l18_n3(x)
- if (x < 1)
- fun_l19_n961(x)
- else
- fun_l19_n200(x)
- end
-end
-
-def fun_l18_n4(x)
- if (x < 1)
- fun_l19_n812(x)
- else
- fun_l19_n764(x)
- end
-end
-
-def fun_l18_n5(x)
- if (x < 1)
- fun_l19_n605(x)
- else
- fun_l19_n260(x)
- end
-end
-
-def fun_l18_n6(x)
- if (x < 1)
- fun_l19_n146(x)
- else
- fun_l19_n617(x)
- end
-end
-
-def fun_l18_n7(x)
- if (x < 1)
- fun_l19_n181(x)
- else
- fun_l19_n31(x)
- end
-end
-
-def fun_l18_n8(x)
- if (x < 1)
- fun_l19_n884(x)
- else
- fun_l19_n341(x)
- end
-end
-
-def fun_l18_n9(x)
- if (x < 1)
- fun_l19_n741(x)
- else
- fun_l19_n704(x)
- end
-end
-
-def fun_l18_n10(x)
- if (x < 1)
- fun_l19_n610(x)
- else
- fun_l19_n24(x)
- end
-end
-
-def fun_l18_n11(x)
- if (x < 1)
- fun_l19_n184(x)
- else
- fun_l19_n125(x)
- end
-end
-
-def fun_l18_n12(x)
- if (x < 1)
- fun_l19_n59(x)
- else
- fun_l19_n30(x)
- end
-end
-
-def fun_l18_n13(x)
- if (x < 1)
- fun_l19_n255(x)
- else
- fun_l19_n18(x)
- end
-end
-
-def fun_l18_n14(x)
- if (x < 1)
- fun_l19_n661(x)
- else
- fun_l19_n554(x)
- end
-end
-
-def fun_l18_n15(x)
- if (x < 1)
- fun_l19_n557(x)
- else
- fun_l19_n757(x)
- end
-end
-
-def fun_l18_n16(x)
- if (x < 1)
- fun_l19_n946(x)
- else
- fun_l19_n403(x)
- end
-end
-
-def fun_l18_n17(x)
- if (x < 1)
- fun_l19_n872(x)
- else
- fun_l19_n64(x)
- end
-end
-
-def fun_l18_n18(x)
- if (x < 1)
- fun_l19_n531(x)
- else
- fun_l19_n200(x)
- end
-end
-
-def fun_l18_n19(x)
- if (x < 1)
- fun_l19_n172(x)
- else
- fun_l19_n319(x)
- end
-end
-
-def fun_l18_n20(x)
- if (x < 1)
- fun_l19_n369(x)
- else
- fun_l19_n707(x)
- end
-end
-
-def fun_l18_n21(x)
- if (x < 1)
- fun_l19_n726(x)
- else
- fun_l19_n718(x)
- end
-end
-
-def fun_l18_n22(x)
- if (x < 1)
- fun_l19_n169(x)
- else
- fun_l19_n117(x)
- end
-end
-
-def fun_l18_n23(x)
- if (x < 1)
- fun_l19_n913(x)
- else
- fun_l19_n489(x)
- end
-end
-
-def fun_l18_n24(x)
- if (x < 1)
- fun_l19_n950(x)
- else
- fun_l19_n272(x)
- end
-end
-
-def fun_l18_n25(x)
- if (x < 1)
- fun_l19_n835(x)
- else
- fun_l19_n341(x)
- end
-end
-
-def fun_l18_n26(x)
- if (x < 1)
- fun_l19_n771(x)
- else
- fun_l19_n805(x)
- end
-end
-
-def fun_l18_n27(x)
- if (x < 1)
- fun_l19_n71(x)
- else
- fun_l19_n515(x)
- end
-end
-
-def fun_l18_n28(x)
- if (x < 1)
- fun_l19_n472(x)
- else
- fun_l19_n807(x)
- end
-end
-
-def fun_l18_n29(x)
- if (x < 1)
- fun_l19_n957(x)
- else
- fun_l19_n555(x)
- end
-end
-
-def fun_l18_n30(x)
- if (x < 1)
- fun_l19_n629(x)
- else
- fun_l19_n113(x)
- end
-end
-
-def fun_l18_n31(x)
- if (x < 1)
- fun_l19_n791(x)
- else
- fun_l19_n340(x)
- end
-end
-
-def fun_l18_n32(x)
- if (x < 1)
- fun_l19_n852(x)
- else
- fun_l19_n204(x)
- end
-end
-
-def fun_l18_n33(x)
- if (x < 1)
- fun_l19_n441(x)
- else
- fun_l19_n331(x)
- end
-end
-
-def fun_l18_n34(x)
- if (x < 1)
- fun_l19_n51(x)
- else
- fun_l19_n199(x)
- end
-end
-
-def fun_l18_n35(x)
- if (x < 1)
- fun_l19_n472(x)
- else
- fun_l19_n589(x)
- end
-end
-
-def fun_l18_n36(x)
- if (x < 1)
- fun_l19_n191(x)
- else
- fun_l19_n333(x)
- end
-end
-
-def fun_l18_n37(x)
- if (x < 1)
- fun_l19_n412(x)
- else
- fun_l19_n661(x)
- end
-end
-
-def fun_l18_n38(x)
- if (x < 1)
- fun_l19_n427(x)
- else
- fun_l19_n401(x)
- end
-end
-
-def fun_l18_n39(x)
- if (x < 1)
- fun_l19_n96(x)
- else
- fun_l19_n235(x)
- end
-end
-
-def fun_l18_n40(x)
- if (x < 1)
- fun_l19_n984(x)
- else
- fun_l19_n586(x)
- end
-end
-
-def fun_l18_n41(x)
- if (x < 1)
- fun_l19_n559(x)
- else
- fun_l19_n382(x)
- end
-end
-
-def fun_l18_n42(x)
- if (x < 1)
- fun_l19_n802(x)
- else
- fun_l19_n217(x)
- end
-end
-
-def fun_l18_n43(x)
- if (x < 1)
- fun_l19_n693(x)
- else
- fun_l19_n178(x)
- end
-end
-
-def fun_l18_n44(x)
- if (x < 1)
- fun_l19_n961(x)
- else
- fun_l19_n425(x)
- end
-end
-
-def fun_l18_n45(x)
- if (x < 1)
- fun_l19_n242(x)
- else
- fun_l19_n949(x)
- end
-end
-
-def fun_l18_n46(x)
- if (x < 1)
- fun_l19_n418(x)
- else
- fun_l19_n462(x)
- end
-end
-
-def fun_l18_n47(x)
- if (x < 1)
- fun_l19_n56(x)
- else
- fun_l19_n79(x)
- end
-end
-
-def fun_l18_n48(x)
- if (x < 1)
- fun_l19_n5(x)
- else
- fun_l19_n939(x)
- end
-end
-
-def fun_l18_n49(x)
- if (x < 1)
- fun_l19_n4(x)
- else
- fun_l19_n262(x)
- end
-end
-
-def fun_l18_n50(x)
- if (x < 1)
- fun_l19_n476(x)
- else
- fun_l19_n751(x)
- end
-end
-
-def fun_l18_n51(x)
- if (x < 1)
- fun_l19_n687(x)
- else
- fun_l19_n489(x)
- end
-end
-
-def fun_l18_n52(x)
- if (x < 1)
- fun_l19_n965(x)
- else
- fun_l19_n198(x)
- end
-end
-
-def fun_l18_n53(x)
- if (x < 1)
- fun_l19_n349(x)
- else
- fun_l19_n603(x)
- end
-end
-
-def fun_l18_n54(x)
- if (x < 1)
- fun_l19_n893(x)
- else
- fun_l19_n279(x)
- end
-end
-
-def fun_l18_n55(x)
- if (x < 1)
- fun_l19_n816(x)
- else
- fun_l19_n922(x)
- end
-end
-
-def fun_l18_n56(x)
- if (x < 1)
- fun_l19_n10(x)
- else
- fun_l19_n750(x)
- end
-end
-
-def fun_l18_n57(x)
- if (x < 1)
- fun_l19_n787(x)
- else
- fun_l19_n446(x)
- end
-end
-
-def fun_l18_n58(x)
- if (x < 1)
- fun_l19_n662(x)
- else
- fun_l19_n636(x)
- end
-end
-
-def fun_l18_n59(x)
- if (x < 1)
- fun_l19_n640(x)
- else
- fun_l19_n604(x)
- end
-end
-
-def fun_l18_n60(x)
- if (x < 1)
- fun_l19_n1(x)
- else
- fun_l19_n657(x)
- end
-end
-
-def fun_l18_n61(x)
- if (x < 1)
- fun_l19_n657(x)
- else
- fun_l19_n516(x)
- end
-end
-
-def fun_l18_n62(x)
- if (x < 1)
- fun_l19_n167(x)
- else
- fun_l19_n770(x)
- end
-end
-
-def fun_l18_n63(x)
- if (x < 1)
- fun_l19_n572(x)
- else
- fun_l19_n224(x)
- end
-end
-
-def fun_l18_n64(x)
- if (x < 1)
- fun_l19_n564(x)
- else
- fun_l19_n64(x)
- end
-end
-
-def fun_l18_n65(x)
- if (x < 1)
- fun_l19_n200(x)
- else
- fun_l19_n724(x)
- end
-end
-
-def fun_l18_n66(x)
- if (x < 1)
- fun_l19_n295(x)
- else
- fun_l19_n127(x)
- end
-end
-
-def fun_l18_n67(x)
- if (x < 1)
- fun_l19_n81(x)
- else
- fun_l19_n757(x)
- end
-end
-
-def fun_l18_n68(x)
- if (x < 1)
- fun_l19_n573(x)
- else
- fun_l19_n473(x)
- end
-end
-
-def fun_l18_n69(x)
- if (x < 1)
- fun_l19_n475(x)
- else
- fun_l19_n8(x)
- end
-end
-
-def fun_l18_n70(x)
- if (x < 1)
- fun_l19_n564(x)
- else
- fun_l19_n74(x)
- end
-end
-
-def fun_l18_n71(x)
- if (x < 1)
- fun_l19_n270(x)
- else
- fun_l19_n12(x)
- end
-end
-
-def fun_l18_n72(x)
- if (x < 1)
- fun_l19_n809(x)
- else
- fun_l19_n857(x)
- end
-end
-
-def fun_l18_n73(x)
- if (x < 1)
- fun_l19_n329(x)
- else
- fun_l19_n850(x)
- end
-end
-
-def fun_l18_n74(x)
- if (x < 1)
- fun_l19_n471(x)
- else
- fun_l19_n127(x)
- end
-end
-
-def fun_l18_n75(x)
- if (x < 1)
- fun_l19_n558(x)
- else
- fun_l19_n626(x)
- end
-end
-
-def fun_l18_n76(x)
- if (x < 1)
- fun_l19_n648(x)
- else
- fun_l19_n687(x)
- end
-end
-
-def fun_l18_n77(x)
- if (x < 1)
- fun_l19_n690(x)
- else
- fun_l19_n612(x)
- end
-end
-
-def fun_l18_n78(x)
- if (x < 1)
- fun_l19_n122(x)
- else
- fun_l19_n843(x)
- end
-end
-
-def fun_l18_n79(x)
- if (x < 1)
- fun_l19_n375(x)
- else
- fun_l19_n56(x)
- end
-end
-
-def fun_l18_n80(x)
- if (x < 1)
- fun_l19_n184(x)
- else
- fun_l19_n280(x)
- end
-end
-
-def fun_l18_n81(x)
- if (x < 1)
- fun_l19_n588(x)
- else
- fun_l19_n433(x)
- end
-end
-
-def fun_l18_n82(x)
- if (x < 1)
- fun_l19_n144(x)
- else
- fun_l19_n754(x)
- end
-end
-
-def fun_l18_n83(x)
- if (x < 1)
- fun_l19_n468(x)
- else
- fun_l19_n951(x)
- end
-end
-
-def fun_l18_n84(x)
- if (x < 1)
- fun_l19_n380(x)
- else
- fun_l19_n597(x)
- end
-end
-
-def fun_l18_n85(x)
- if (x < 1)
- fun_l19_n651(x)
- else
- fun_l19_n756(x)
- end
-end
-
-def fun_l18_n86(x)
- if (x < 1)
- fun_l19_n440(x)
- else
- fun_l19_n184(x)
- end
-end
-
-def fun_l18_n87(x)
- if (x < 1)
- fun_l19_n851(x)
- else
- fun_l19_n753(x)
- end
-end
-
-def fun_l18_n88(x)
- if (x < 1)
- fun_l19_n808(x)
- else
- fun_l19_n102(x)
- end
-end
-
-def fun_l18_n89(x)
- if (x < 1)
- fun_l19_n768(x)
- else
- fun_l19_n885(x)
- end
-end
-
-def fun_l18_n90(x)
- if (x < 1)
- fun_l19_n933(x)
- else
- fun_l19_n284(x)
- end
-end
-
-def fun_l18_n91(x)
- if (x < 1)
- fun_l19_n234(x)
- else
- fun_l19_n927(x)
- end
-end
-
-def fun_l18_n92(x)
- if (x < 1)
- fun_l19_n901(x)
- else
- fun_l19_n690(x)
- end
-end
-
-def fun_l18_n93(x)
- if (x < 1)
- fun_l19_n386(x)
- else
- fun_l19_n692(x)
- end
-end
-
-def fun_l18_n94(x)
- if (x < 1)
- fun_l19_n572(x)
- else
- fun_l19_n795(x)
- end
-end
-
-def fun_l18_n95(x)
- if (x < 1)
- fun_l19_n647(x)
- else
- fun_l19_n337(x)
- end
-end
-
-def fun_l18_n96(x)
- if (x < 1)
- fun_l19_n794(x)
- else
- fun_l19_n611(x)
- end
-end
-
-def fun_l18_n97(x)
- if (x < 1)
- fun_l19_n752(x)
- else
- fun_l19_n548(x)
- end
-end
-
-def fun_l18_n98(x)
- if (x < 1)
- fun_l19_n710(x)
- else
- fun_l19_n685(x)
- end
-end
-
-def fun_l18_n99(x)
- if (x < 1)
- fun_l19_n711(x)
- else
- fun_l19_n307(x)
- end
-end
-
-def fun_l18_n100(x)
- if (x < 1)
- fun_l19_n834(x)
- else
- fun_l19_n355(x)
- end
-end
-
-def fun_l18_n101(x)
- if (x < 1)
- fun_l19_n473(x)
- else
- fun_l19_n924(x)
- end
-end
-
-def fun_l18_n102(x)
- if (x < 1)
- fun_l19_n79(x)
- else
- fun_l19_n87(x)
- end
-end
-
-def fun_l18_n103(x)
- if (x < 1)
- fun_l19_n27(x)
- else
- fun_l19_n914(x)
- end
-end
-
-def fun_l18_n104(x)
- if (x < 1)
- fun_l19_n327(x)
- else
- fun_l19_n136(x)
- end
-end
-
-def fun_l18_n105(x)
- if (x < 1)
- fun_l19_n42(x)
- else
- fun_l19_n289(x)
- end
-end
-
-def fun_l18_n106(x)
- if (x < 1)
- fun_l19_n371(x)
- else
- fun_l19_n453(x)
- end
-end
-
-def fun_l18_n107(x)
- if (x < 1)
- fun_l19_n579(x)
- else
- fun_l19_n500(x)
- end
-end
-
-def fun_l18_n108(x)
- if (x < 1)
- fun_l19_n351(x)
- else
- fun_l19_n683(x)
- end
-end
-
-def fun_l18_n109(x)
- if (x < 1)
- fun_l19_n831(x)
- else
- fun_l19_n310(x)
- end
-end
-
-def fun_l18_n110(x)
- if (x < 1)
- fun_l19_n618(x)
- else
- fun_l19_n113(x)
- end
-end
-
-def fun_l18_n111(x)
- if (x < 1)
- fun_l19_n147(x)
- else
- fun_l19_n324(x)
- end
-end
-
-def fun_l18_n112(x)
- if (x < 1)
- fun_l19_n97(x)
- else
- fun_l19_n901(x)
- end
-end
-
-def fun_l18_n113(x)
- if (x < 1)
- fun_l19_n223(x)
- else
- fun_l19_n819(x)
- end
-end
-
-def fun_l18_n114(x)
- if (x < 1)
- fun_l19_n929(x)
- else
- fun_l19_n143(x)
- end
-end
-
-def fun_l18_n115(x)
- if (x < 1)
- fun_l19_n697(x)
- else
- fun_l19_n934(x)
- end
-end
-
-def fun_l18_n116(x)
- if (x < 1)
- fun_l19_n143(x)
- else
- fun_l19_n815(x)
- end
-end
-
-def fun_l18_n117(x)
- if (x < 1)
- fun_l19_n889(x)
- else
- fun_l19_n859(x)
- end
-end
-
-def fun_l18_n118(x)
- if (x < 1)
- fun_l19_n233(x)
- else
- fun_l19_n6(x)
- end
-end
-
-def fun_l18_n119(x)
- if (x < 1)
- fun_l19_n490(x)
- else
- fun_l19_n783(x)
- end
-end
-
-def fun_l18_n120(x)
- if (x < 1)
- fun_l19_n930(x)
- else
- fun_l19_n376(x)
- end
-end
-
-def fun_l18_n121(x)
- if (x < 1)
- fun_l19_n567(x)
- else
- fun_l19_n882(x)
- end
-end
-
-def fun_l18_n122(x)
- if (x < 1)
- fun_l19_n532(x)
- else
- fun_l19_n294(x)
- end
-end
-
-def fun_l18_n123(x)
- if (x < 1)
- fun_l19_n20(x)
- else
- fun_l19_n433(x)
- end
-end
-
-def fun_l18_n124(x)
- if (x < 1)
- fun_l19_n301(x)
- else
- fun_l19_n591(x)
- end
-end
-
-def fun_l18_n125(x)
- if (x < 1)
- fun_l19_n424(x)
- else
- fun_l19_n524(x)
- end
-end
-
-def fun_l18_n126(x)
- if (x < 1)
- fun_l19_n12(x)
- else
- fun_l19_n537(x)
- end
-end
-
-def fun_l18_n127(x)
- if (x < 1)
- fun_l19_n548(x)
- else
- fun_l19_n850(x)
- end
-end
-
-def fun_l18_n128(x)
- if (x < 1)
- fun_l19_n463(x)
- else
- fun_l19_n714(x)
- end
-end
-
-def fun_l18_n129(x)
- if (x < 1)
- fun_l19_n438(x)
- else
- fun_l19_n667(x)
- end
-end
-
-def fun_l18_n130(x)
- if (x < 1)
- fun_l19_n481(x)
- else
- fun_l19_n236(x)
- end
-end
-
-def fun_l18_n131(x)
- if (x < 1)
- fun_l19_n84(x)
- else
- fun_l19_n370(x)
- end
-end
-
-def fun_l18_n132(x)
- if (x < 1)
- fun_l19_n447(x)
- else
- fun_l19_n740(x)
- end
-end
-
-def fun_l18_n133(x)
- if (x < 1)
- fun_l19_n807(x)
- else
- fun_l19_n595(x)
- end
-end
-
-def fun_l18_n134(x)
- if (x < 1)
- fun_l19_n716(x)
- else
- fun_l19_n440(x)
- end
-end
-
-def fun_l18_n135(x)
- if (x < 1)
- fun_l19_n657(x)
- else
- fun_l19_n683(x)
- end
-end
-
-def fun_l18_n136(x)
- if (x < 1)
- fun_l19_n683(x)
- else
- fun_l19_n344(x)
- end
-end
-
-def fun_l18_n137(x)
- if (x < 1)
- fun_l19_n228(x)
- else
- fun_l19_n186(x)
- end
-end
-
-def fun_l18_n138(x)
- if (x < 1)
- fun_l19_n666(x)
- else
- fun_l19_n66(x)
- end
-end
-
-def fun_l18_n139(x)
- if (x < 1)
- fun_l19_n416(x)
- else
- fun_l19_n398(x)
- end
-end
-
-def fun_l18_n140(x)
- if (x < 1)
- fun_l19_n766(x)
- else
- fun_l19_n534(x)
- end
-end
-
-def fun_l18_n141(x)
- if (x < 1)
- fun_l19_n370(x)
- else
- fun_l19_n653(x)
- end
-end
-
-def fun_l18_n142(x)
- if (x < 1)
- fun_l19_n953(x)
- else
- fun_l19_n917(x)
- end
-end
-
-def fun_l18_n143(x)
- if (x < 1)
- fun_l19_n989(x)
- else
- fun_l19_n862(x)
- end
-end
-
-def fun_l18_n144(x)
- if (x < 1)
- fun_l19_n969(x)
- else
- fun_l19_n243(x)
- end
-end
-
-def fun_l18_n145(x)
- if (x < 1)
- fun_l19_n379(x)
- else
- fun_l19_n315(x)
- end
-end
-
-def fun_l18_n146(x)
- if (x < 1)
- fun_l19_n360(x)
- else
- fun_l19_n585(x)
- end
-end
-
-def fun_l18_n147(x)
- if (x < 1)
- fun_l19_n4(x)
- else
- fun_l19_n372(x)
- end
-end
-
-def fun_l18_n148(x)
- if (x < 1)
- fun_l19_n395(x)
- else
- fun_l19_n817(x)
- end
-end
-
-def fun_l18_n149(x)
- if (x < 1)
- fun_l19_n237(x)
- else
- fun_l19_n506(x)
- end
-end
-
-def fun_l18_n150(x)
- if (x < 1)
- fun_l19_n940(x)
- else
- fun_l19_n380(x)
- end
-end
-
-def fun_l18_n151(x)
- if (x < 1)
- fun_l19_n190(x)
- else
- fun_l19_n925(x)
- end
-end
-
-def fun_l18_n152(x)
- if (x < 1)
- fun_l19_n810(x)
- else
- fun_l19_n958(x)
- end
-end
-
-def fun_l18_n153(x)
- if (x < 1)
- fun_l19_n69(x)
- else
- fun_l19_n19(x)
- end
-end
-
-def fun_l18_n154(x)
- if (x < 1)
- fun_l19_n984(x)
- else
- fun_l19_n149(x)
- end
-end
-
-def fun_l18_n155(x)
- if (x < 1)
- fun_l19_n179(x)
- else
- fun_l19_n583(x)
- end
-end
-
-def fun_l18_n156(x)
- if (x < 1)
- fun_l19_n583(x)
- else
- fun_l19_n374(x)
- end
-end
-
-def fun_l18_n157(x)
- if (x < 1)
- fun_l19_n908(x)
- else
- fun_l19_n769(x)
- end
-end
-
-def fun_l18_n158(x)
- if (x < 1)
- fun_l19_n288(x)
- else
- fun_l19_n715(x)
- end
-end
-
-def fun_l18_n159(x)
- if (x < 1)
- fun_l19_n742(x)
- else
- fun_l19_n733(x)
- end
-end
-
-def fun_l18_n160(x)
- if (x < 1)
- fun_l19_n994(x)
- else
- fun_l19_n434(x)
- end
-end
-
-def fun_l18_n161(x)
- if (x < 1)
- fun_l19_n440(x)
- else
- fun_l19_n994(x)
- end
-end
-
-def fun_l18_n162(x)
- if (x < 1)
- fun_l19_n400(x)
- else
- fun_l19_n632(x)
- end
-end
-
-def fun_l18_n163(x)
- if (x < 1)
- fun_l19_n237(x)
- else
- fun_l19_n369(x)
- end
-end
-
-def fun_l18_n164(x)
- if (x < 1)
- fun_l19_n431(x)
- else
- fun_l19_n276(x)
- end
-end
-
-def fun_l18_n165(x)
- if (x < 1)
- fun_l19_n173(x)
- else
- fun_l19_n93(x)
- end
-end
-
-def fun_l18_n166(x)
- if (x < 1)
- fun_l19_n875(x)
- else
- fun_l19_n568(x)
- end
-end
-
-def fun_l18_n167(x)
- if (x < 1)
- fun_l19_n61(x)
- else
- fun_l19_n79(x)
- end
-end
-
-def fun_l18_n168(x)
- if (x < 1)
- fun_l19_n683(x)
- else
- fun_l19_n958(x)
- end
-end
-
-def fun_l18_n169(x)
- if (x < 1)
- fun_l19_n419(x)
- else
- fun_l19_n648(x)
- end
-end
-
-def fun_l18_n170(x)
- if (x < 1)
- fun_l19_n152(x)
- else
- fun_l19_n746(x)
- end
-end
-
-def fun_l18_n171(x)
- if (x < 1)
- fun_l19_n670(x)
- else
- fun_l19_n974(x)
- end
-end
-
-def fun_l18_n172(x)
- if (x < 1)
- fun_l19_n142(x)
- else
- fun_l19_n751(x)
- end
-end
-
-def fun_l18_n173(x)
- if (x < 1)
- fun_l19_n640(x)
- else
- fun_l19_n911(x)
- end
-end
-
-def fun_l18_n174(x)
- if (x < 1)
- fun_l19_n256(x)
- else
- fun_l19_n414(x)
- end
-end
-
-def fun_l18_n175(x)
- if (x < 1)
- fun_l19_n207(x)
- else
- fun_l19_n80(x)
- end
-end
-
-def fun_l18_n176(x)
- if (x < 1)
- fun_l19_n317(x)
- else
- fun_l19_n22(x)
- end
-end
-
-def fun_l18_n177(x)
- if (x < 1)
- fun_l19_n457(x)
- else
- fun_l19_n723(x)
- end
-end
-
-def fun_l18_n178(x)
- if (x < 1)
- fun_l19_n36(x)
- else
- fun_l19_n44(x)
- end
-end
-
-def fun_l18_n179(x)
- if (x < 1)
- fun_l19_n92(x)
- else
- fun_l19_n75(x)
- end
-end
-
-def fun_l18_n180(x)
- if (x < 1)
- fun_l19_n878(x)
- else
- fun_l19_n318(x)
- end
-end
-
-def fun_l18_n181(x)
- if (x < 1)
- fun_l19_n499(x)
- else
- fun_l19_n462(x)
- end
-end
-
-def fun_l18_n182(x)
- if (x < 1)
- fun_l19_n172(x)
- else
- fun_l19_n91(x)
- end
-end
-
-def fun_l18_n183(x)
- if (x < 1)
- fun_l19_n549(x)
- else
- fun_l19_n126(x)
- end
-end
-
-def fun_l18_n184(x)
- if (x < 1)
- fun_l19_n484(x)
- else
- fun_l19_n45(x)
- end
-end
-
-def fun_l18_n185(x)
- if (x < 1)
- fun_l19_n237(x)
- else
- fun_l19_n651(x)
- end
-end
-
-def fun_l18_n186(x)
- if (x < 1)
- fun_l19_n458(x)
- else
- fun_l19_n466(x)
- end
-end
-
-def fun_l18_n187(x)
- if (x < 1)
- fun_l19_n856(x)
- else
- fun_l19_n184(x)
- end
-end
-
-def fun_l18_n188(x)
- if (x < 1)
- fun_l19_n432(x)
- else
- fun_l19_n251(x)
- end
-end
-
-def fun_l18_n189(x)
- if (x < 1)
- fun_l19_n719(x)
- else
- fun_l19_n442(x)
- end
-end
-
-def fun_l18_n190(x)
- if (x < 1)
- fun_l19_n516(x)
- else
- fun_l19_n331(x)
- end
-end
-
-def fun_l18_n191(x)
- if (x < 1)
- fun_l19_n342(x)
- else
- fun_l19_n750(x)
- end
-end
-
-def fun_l18_n192(x)
- if (x < 1)
- fun_l19_n820(x)
- else
- fun_l19_n137(x)
- end
-end
-
-def fun_l18_n193(x)
- if (x < 1)
- fun_l19_n514(x)
- else
- fun_l19_n594(x)
- end
-end
-
-def fun_l18_n194(x)
- if (x < 1)
- fun_l19_n744(x)
- else
- fun_l19_n605(x)
- end
-end
-
-def fun_l18_n195(x)
- if (x < 1)
- fun_l19_n428(x)
- else
- fun_l19_n528(x)
- end
-end
-
-def fun_l18_n196(x)
- if (x < 1)
- fun_l19_n291(x)
- else
- fun_l19_n382(x)
- end
-end
-
-def fun_l18_n197(x)
- if (x < 1)
- fun_l19_n238(x)
- else
- fun_l19_n38(x)
- end
-end
-
-def fun_l18_n198(x)
- if (x < 1)
- fun_l19_n332(x)
- else
- fun_l19_n112(x)
- end
-end
-
-def fun_l18_n199(x)
- if (x < 1)
- fun_l19_n703(x)
- else
- fun_l19_n108(x)
- end
-end
-
-def fun_l18_n200(x)
- if (x < 1)
- fun_l19_n917(x)
- else
- fun_l19_n629(x)
- end
-end
-
-def fun_l18_n201(x)
- if (x < 1)
- fun_l19_n402(x)
- else
- fun_l19_n223(x)
- end
-end
-
-def fun_l18_n202(x)
- if (x < 1)
- fun_l19_n9(x)
- else
- fun_l19_n318(x)
- end
-end
-
-def fun_l18_n203(x)
- if (x < 1)
- fun_l19_n560(x)
- else
- fun_l19_n77(x)
- end
-end
-
-def fun_l18_n204(x)
- if (x < 1)
- fun_l19_n379(x)
- else
- fun_l19_n903(x)
- end
-end
-
-def fun_l18_n205(x)
- if (x < 1)
- fun_l19_n185(x)
- else
- fun_l19_n174(x)
- end
-end
-
-def fun_l18_n206(x)
- if (x < 1)
- fun_l19_n738(x)
- else
- fun_l19_n518(x)
- end
-end
-
-def fun_l18_n207(x)
- if (x < 1)
- fun_l19_n343(x)
- else
- fun_l19_n567(x)
- end
-end
-
-def fun_l18_n208(x)
- if (x < 1)
- fun_l19_n546(x)
- else
- fun_l19_n370(x)
- end
-end
-
-def fun_l18_n209(x)
- if (x < 1)
- fun_l19_n589(x)
- else
- fun_l19_n511(x)
- end
-end
-
-def fun_l18_n210(x)
- if (x < 1)
- fun_l19_n507(x)
- else
- fun_l19_n912(x)
- end
-end
-
-def fun_l18_n211(x)
- if (x < 1)
- fun_l19_n779(x)
- else
- fun_l19_n133(x)
- end
-end
-
-def fun_l18_n212(x)
- if (x < 1)
- fun_l19_n400(x)
- else
- fun_l19_n345(x)
- end
-end
-
-def fun_l18_n213(x)
- if (x < 1)
- fun_l19_n214(x)
- else
- fun_l19_n393(x)
- end
-end
-
-def fun_l18_n214(x)
- if (x < 1)
- fun_l19_n829(x)
- else
- fun_l19_n769(x)
- end
-end
-
-def fun_l18_n215(x)
- if (x < 1)
- fun_l19_n835(x)
- else
- fun_l19_n80(x)
- end
-end
-
-def fun_l18_n216(x)
- if (x < 1)
- fun_l19_n640(x)
- else
- fun_l19_n836(x)
- end
-end
-
-def fun_l18_n217(x)
- if (x < 1)
- fun_l19_n861(x)
- else
- fun_l19_n801(x)
- end
-end
-
-def fun_l18_n218(x)
- if (x < 1)
- fun_l19_n316(x)
- else
- fun_l19_n263(x)
- end
-end
-
-def fun_l18_n219(x)
- if (x < 1)
- fun_l19_n231(x)
- else
- fun_l19_n315(x)
- end
-end
-
-def fun_l18_n220(x)
- if (x < 1)
- fun_l19_n700(x)
- else
- fun_l19_n276(x)
- end
-end
-
-def fun_l18_n221(x)
- if (x < 1)
- fun_l19_n654(x)
- else
- fun_l19_n32(x)
- end
-end
-
-def fun_l18_n222(x)
- if (x < 1)
- fun_l19_n758(x)
- else
- fun_l19_n598(x)
- end
-end
-
-def fun_l18_n223(x)
- if (x < 1)
- fun_l19_n819(x)
- else
- fun_l19_n764(x)
- end
-end
-
-def fun_l18_n224(x)
- if (x < 1)
- fun_l19_n31(x)
- else
- fun_l19_n51(x)
- end
-end
-
-def fun_l18_n225(x)
- if (x < 1)
- fun_l19_n704(x)
- else
- fun_l19_n932(x)
- end
-end
-
-def fun_l18_n226(x)
- if (x < 1)
- fun_l19_n635(x)
- else
- fun_l19_n411(x)
- end
-end
-
-def fun_l18_n227(x)
- if (x < 1)
- fun_l19_n368(x)
- else
- fun_l19_n472(x)
- end
-end
-
-def fun_l18_n228(x)
- if (x < 1)
- fun_l19_n928(x)
- else
- fun_l19_n357(x)
- end
-end
-
-def fun_l18_n229(x)
- if (x < 1)
- fun_l19_n503(x)
- else
- fun_l19_n495(x)
- end
-end
-
-def fun_l18_n230(x)
- if (x < 1)
- fun_l19_n497(x)
- else
- fun_l19_n73(x)
- end
-end
-
-def fun_l18_n231(x)
- if (x < 1)
- fun_l19_n718(x)
- else
- fun_l19_n971(x)
- end
-end
-
-def fun_l18_n232(x)
- if (x < 1)
- fun_l19_n314(x)
- else
- fun_l19_n100(x)
- end
-end
-
-def fun_l18_n233(x)
- if (x < 1)
- fun_l19_n490(x)
- else
- fun_l19_n569(x)
- end
-end
-
-def fun_l18_n234(x)
- if (x < 1)
- fun_l19_n309(x)
- else
- fun_l19_n806(x)
- end
-end
-
-def fun_l18_n235(x)
- if (x < 1)
- fun_l19_n839(x)
- else
- fun_l19_n388(x)
- end
-end
-
-def fun_l18_n236(x)
- if (x < 1)
- fun_l19_n158(x)
- else
- fun_l19_n438(x)
- end
-end
-
-def fun_l18_n237(x)
- if (x < 1)
- fun_l19_n181(x)
- else
- fun_l19_n728(x)
- end
-end
-
-def fun_l18_n238(x)
- if (x < 1)
- fun_l19_n238(x)
- else
- fun_l19_n41(x)
- end
-end
-
-def fun_l18_n239(x)
- if (x < 1)
- fun_l19_n342(x)
- else
- fun_l19_n756(x)
- end
-end
-
-def fun_l18_n240(x)
- if (x < 1)
- fun_l19_n873(x)
- else
- fun_l19_n274(x)
- end
-end
-
-def fun_l18_n241(x)
- if (x < 1)
- fun_l19_n273(x)
- else
- fun_l19_n740(x)
- end
-end
-
-def fun_l18_n242(x)
- if (x < 1)
- fun_l19_n256(x)
- else
- fun_l19_n99(x)
- end
-end
-
-def fun_l18_n243(x)
- if (x < 1)
- fun_l19_n482(x)
- else
- fun_l19_n569(x)
- end
-end
-
-def fun_l18_n244(x)
- if (x < 1)
- fun_l19_n598(x)
- else
- fun_l19_n393(x)
- end
-end
-
-def fun_l18_n245(x)
- if (x < 1)
- fun_l19_n320(x)
- else
- fun_l19_n164(x)
- end
-end
-
-def fun_l18_n246(x)
- if (x < 1)
- fun_l19_n803(x)
- else
- fun_l19_n240(x)
- end
-end
-
-def fun_l18_n247(x)
- if (x < 1)
- fun_l19_n790(x)
- else
- fun_l19_n55(x)
- end
-end
-
-def fun_l18_n248(x)
- if (x < 1)
- fun_l19_n193(x)
- else
- fun_l19_n754(x)
- end
-end
-
-def fun_l18_n249(x)
- if (x < 1)
- fun_l19_n122(x)
- else
- fun_l19_n841(x)
- end
-end
-
-def fun_l18_n250(x)
- if (x < 1)
- fun_l19_n724(x)
- else
- fun_l19_n359(x)
- end
-end
-
-def fun_l18_n251(x)
- if (x < 1)
- fun_l19_n497(x)
- else
- fun_l19_n777(x)
- end
-end
-
-def fun_l18_n252(x)
- if (x < 1)
- fun_l19_n986(x)
- else
- fun_l19_n666(x)
- end
-end
-
-def fun_l18_n253(x)
- if (x < 1)
- fun_l19_n864(x)
- else
- fun_l19_n320(x)
- end
-end
-
-def fun_l18_n254(x)
- if (x < 1)
- fun_l19_n386(x)
- else
- fun_l19_n582(x)
- end
-end
-
-def fun_l18_n255(x)
- if (x < 1)
- fun_l19_n434(x)
- else
- fun_l19_n224(x)
- end
-end
-
-def fun_l18_n256(x)
- if (x < 1)
- fun_l19_n921(x)
- else
- fun_l19_n8(x)
- end
-end
-
-def fun_l18_n257(x)
- if (x < 1)
- fun_l19_n789(x)
- else
- fun_l19_n546(x)
- end
-end
-
-def fun_l18_n258(x)
- if (x < 1)
- fun_l19_n324(x)
- else
- fun_l19_n987(x)
- end
-end
-
-def fun_l18_n259(x)
- if (x < 1)
- fun_l19_n279(x)
- else
- fun_l19_n180(x)
- end
-end
-
-def fun_l18_n260(x)
- if (x < 1)
- fun_l19_n596(x)
- else
- fun_l19_n670(x)
- end
-end
-
-def fun_l18_n261(x)
- if (x < 1)
- fun_l19_n940(x)
- else
- fun_l19_n982(x)
- end
-end
-
-def fun_l18_n262(x)
- if (x < 1)
- fun_l19_n54(x)
- else
- fun_l19_n342(x)
- end
-end
-
-def fun_l18_n263(x)
- if (x < 1)
- fun_l19_n815(x)
- else
- fun_l19_n663(x)
- end
-end
-
-def fun_l18_n264(x)
- if (x < 1)
- fun_l19_n794(x)
- else
- fun_l19_n251(x)
- end
-end
-
-def fun_l18_n265(x)
- if (x < 1)
- fun_l19_n485(x)
- else
- fun_l19_n896(x)
- end
-end
-
-def fun_l18_n266(x)
- if (x < 1)
- fun_l19_n346(x)
- else
- fun_l19_n151(x)
- end
-end
-
-def fun_l18_n267(x)
- if (x < 1)
- fun_l19_n162(x)
- else
- fun_l19_n395(x)
- end
-end
-
-def fun_l18_n268(x)
- if (x < 1)
- fun_l19_n76(x)
- else
- fun_l19_n25(x)
- end
-end
-
-def fun_l18_n269(x)
- if (x < 1)
- fun_l19_n943(x)
- else
- fun_l19_n587(x)
- end
-end
-
-def fun_l18_n270(x)
- if (x < 1)
- fun_l19_n663(x)
- else
- fun_l19_n255(x)
- end
-end
-
-def fun_l18_n271(x)
- if (x < 1)
- fun_l19_n307(x)
- else
- fun_l19_n261(x)
- end
-end
-
-def fun_l18_n272(x)
- if (x < 1)
- fun_l19_n478(x)
- else
- fun_l19_n600(x)
- end
-end
-
-def fun_l18_n273(x)
- if (x < 1)
- fun_l19_n345(x)
- else
- fun_l19_n877(x)
- end
-end
-
-def fun_l18_n274(x)
- if (x < 1)
- fun_l19_n637(x)
- else
- fun_l19_n27(x)
- end
-end
-
-def fun_l18_n275(x)
- if (x < 1)
- fun_l19_n752(x)
- else
- fun_l19_n946(x)
- end
-end
-
-def fun_l18_n276(x)
- if (x < 1)
- fun_l19_n571(x)
- else
- fun_l19_n973(x)
- end
-end
-
-def fun_l18_n277(x)
- if (x < 1)
- fun_l19_n274(x)
- else
- fun_l19_n673(x)
- end
-end
-
-def fun_l18_n278(x)
- if (x < 1)
- fun_l19_n922(x)
- else
- fun_l19_n826(x)
- end
-end
-
-def fun_l18_n279(x)
- if (x < 1)
- fun_l19_n294(x)
- else
- fun_l19_n236(x)
- end
-end
-
-def fun_l18_n280(x)
- if (x < 1)
- fun_l19_n661(x)
- else
- fun_l19_n531(x)
- end
-end
-
-def fun_l18_n281(x)
- if (x < 1)
- fun_l19_n295(x)
- else
- fun_l19_n961(x)
- end
-end
-
-def fun_l18_n282(x)
- if (x < 1)
- fun_l19_n902(x)
- else
- fun_l19_n364(x)
- end
-end
-
-def fun_l18_n283(x)
- if (x < 1)
- fun_l19_n147(x)
- else
- fun_l19_n709(x)
- end
-end
-
-def fun_l18_n284(x)
- if (x < 1)
- fun_l19_n394(x)
- else
- fun_l19_n757(x)
- end
-end
-
-def fun_l18_n285(x)
- if (x < 1)
- fun_l19_n372(x)
- else
- fun_l19_n45(x)
- end
-end
-
-def fun_l18_n286(x)
- if (x < 1)
- fun_l19_n323(x)
- else
- fun_l19_n128(x)
- end
-end
-
-def fun_l18_n287(x)
- if (x < 1)
- fun_l19_n50(x)
- else
- fun_l19_n650(x)
- end
-end
-
-def fun_l18_n288(x)
- if (x < 1)
- fun_l19_n300(x)
- else
- fun_l19_n308(x)
- end
-end
-
-def fun_l18_n289(x)
- if (x < 1)
- fun_l19_n2(x)
- else
- fun_l19_n27(x)
- end
-end
-
-def fun_l18_n290(x)
- if (x < 1)
- fun_l19_n341(x)
- else
- fun_l19_n281(x)
- end
-end
-
-def fun_l18_n291(x)
- if (x < 1)
- fun_l19_n797(x)
- else
- fun_l19_n575(x)
- end
-end
-
-def fun_l18_n292(x)
- if (x < 1)
- fun_l19_n740(x)
- else
- fun_l19_n772(x)
- end
-end
-
-def fun_l18_n293(x)
- if (x < 1)
- fun_l19_n707(x)
- else
- fun_l19_n456(x)
- end
-end
-
-def fun_l18_n294(x)
- if (x < 1)
- fun_l19_n714(x)
- else
- fun_l19_n601(x)
- end
-end
-
-def fun_l18_n295(x)
- if (x < 1)
- fun_l19_n298(x)
- else
- fun_l19_n367(x)
- end
-end
-
-def fun_l18_n296(x)
- if (x < 1)
- fun_l19_n0(x)
- else
- fun_l19_n970(x)
- end
-end
-
-def fun_l18_n297(x)
- if (x < 1)
- fun_l19_n703(x)
- else
- fun_l19_n673(x)
- end
-end
-
-def fun_l18_n298(x)
- if (x < 1)
- fun_l19_n890(x)
- else
- fun_l19_n932(x)
- end
-end
-
-def fun_l18_n299(x)
- if (x < 1)
- fun_l19_n152(x)
- else
- fun_l19_n784(x)
- end
-end
-
-def fun_l18_n300(x)
- if (x < 1)
- fun_l19_n24(x)
- else
- fun_l19_n449(x)
- end
-end
-
-def fun_l18_n301(x)
- if (x < 1)
- fun_l19_n161(x)
- else
- fun_l19_n51(x)
- end
-end
-
-def fun_l18_n302(x)
- if (x < 1)
- fun_l19_n695(x)
- else
- fun_l19_n604(x)
- end
-end
-
-def fun_l18_n303(x)
- if (x < 1)
- fun_l19_n415(x)
- else
- fun_l19_n752(x)
- end
-end
-
-def fun_l18_n304(x)
- if (x < 1)
- fun_l19_n737(x)
- else
- fun_l19_n944(x)
- end
-end
-
-def fun_l18_n305(x)
- if (x < 1)
- fun_l19_n833(x)
- else
- fun_l19_n98(x)
- end
-end
-
-def fun_l18_n306(x)
- if (x < 1)
- fun_l19_n598(x)
- else
- fun_l19_n601(x)
- end
-end
-
-def fun_l18_n307(x)
- if (x < 1)
- fun_l19_n728(x)
- else
- fun_l19_n116(x)
- end
-end
-
-def fun_l18_n308(x)
- if (x < 1)
- fun_l19_n892(x)
- else
- fun_l19_n826(x)
- end
-end
-
-def fun_l18_n309(x)
- if (x < 1)
- fun_l19_n926(x)
- else
- fun_l19_n119(x)
- end
-end
-
-def fun_l18_n310(x)
- if (x < 1)
- fun_l19_n194(x)
- else
- fun_l19_n331(x)
- end
-end
-
-def fun_l18_n311(x)
- if (x < 1)
- fun_l19_n490(x)
- else
- fun_l19_n401(x)
- end
-end
-
-def fun_l18_n312(x)
- if (x < 1)
- fun_l19_n727(x)
- else
- fun_l19_n193(x)
- end
-end
-
-def fun_l18_n313(x)
- if (x < 1)
- fun_l19_n643(x)
- else
- fun_l19_n327(x)
- end
-end
-
-def fun_l18_n314(x)
- if (x < 1)
- fun_l19_n747(x)
- else
- fun_l19_n938(x)
- end
-end
-
-def fun_l18_n315(x)
- if (x < 1)
- fun_l19_n153(x)
- else
- fun_l19_n438(x)
- end
-end
-
-def fun_l18_n316(x)
- if (x < 1)
- fun_l19_n719(x)
- else
- fun_l19_n471(x)
- end
-end
-
-def fun_l18_n317(x)
- if (x < 1)
- fun_l19_n105(x)
- else
- fun_l19_n832(x)
- end
-end
-
-def fun_l18_n318(x)
- if (x < 1)
- fun_l19_n652(x)
- else
- fun_l19_n826(x)
- end
-end
-
-def fun_l18_n319(x)
- if (x < 1)
- fun_l19_n3(x)
- else
- fun_l19_n250(x)
- end
-end
-
-def fun_l18_n320(x)
- if (x < 1)
- fun_l19_n854(x)
- else
- fun_l19_n371(x)
- end
-end
-
-def fun_l18_n321(x)
- if (x < 1)
- fun_l19_n241(x)
- else
- fun_l19_n51(x)
- end
-end
-
-def fun_l18_n322(x)
- if (x < 1)
- fun_l19_n832(x)
- else
- fun_l19_n897(x)
- end
-end
-
-def fun_l18_n323(x)
- if (x < 1)
- fun_l19_n472(x)
- else
- fun_l19_n838(x)
- end
-end
-
-def fun_l18_n324(x)
- if (x < 1)
- fun_l19_n844(x)
- else
- fun_l19_n228(x)
- end
-end
-
-def fun_l18_n325(x)
- if (x < 1)
- fun_l19_n132(x)
- else
- fun_l19_n424(x)
- end
-end
-
-def fun_l18_n326(x)
- if (x < 1)
- fun_l19_n311(x)
- else
- fun_l19_n388(x)
- end
-end
-
-def fun_l18_n327(x)
- if (x < 1)
- fun_l19_n709(x)
- else
- fun_l19_n98(x)
- end
-end
-
-def fun_l18_n328(x)
- if (x < 1)
- fun_l19_n342(x)
- else
- fun_l19_n743(x)
- end
-end
-
-def fun_l18_n329(x)
- if (x < 1)
- fun_l19_n984(x)
- else
- fun_l19_n762(x)
- end
-end
-
-def fun_l18_n330(x)
- if (x < 1)
- fun_l19_n358(x)
- else
- fun_l19_n624(x)
- end
-end
-
-def fun_l18_n331(x)
- if (x < 1)
- fun_l19_n574(x)
- else
- fun_l19_n35(x)
- end
-end
-
-def fun_l18_n332(x)
- if (x < 1)
- fun_l19_n564(x)
- else
- fun_l19_n629(x)
- end
-end
-
-def fun_l18_n333(x)
- if (x < 1)
- fun_l19_n70(x)
- else
- fun_l19_n150(x)
- end
-end
-
-def fun_l18_n334(x)
- if (x < 1)
- fun_l19_n538(x)
- else
- fun_l19_n239(x)
- end
-end
-
-def fun_l18_n335(x)
- if (x < 1)
- fun_l19_n818(x)
- else
- fun_l19_n878(x)
- end
-end
-
-def fun_l18_n336(x)
- if (x < 1)
- fun_l19_n233(x)
- else
- fun_l19_n286(x)
- end
-end
-
-def fun_l18_n337(x)
- if (x < 1)
- fun_l19_n731(x)
- else
- fun_l19_n416(x)
- end
-end
-
-def fun_l18_n338(x)
- if (x < 1)
- fun_l19_n917(x)
- else
- fun_l19_n710(x)
- end
-end
-
-def fun_l18_n339(x)
- if (x < 1)
- fun_l19_n638(x)
- else
- fun_l19_n187(x)
- end
-end
-
-def fun_l18_n340(x)
- if (x < 1)
- fun_l19_n922(x)
- else
- fun_l19_n767(x)
- end
-end
-
-def fun_l18_n341(x)
- if (x < 1)
- fun_l19_n9(x)
- else
- fun_l19_n708(x)
- end
-end
-
-def fun_l18_n342(x)
- if (x < 1)
- fun_l19_n76(x)
- else
- fun_l19_n479(x)
- end
-end
-
-def fun_l18_n343(x)
- if (x < 1)
- fun_l19_n679(x)
- else
- fun_l19_n85(x)
- end
-end
-
-def fun_l18_n344(x)
- if (x < 1)
- fun_l19_n725(x)
- else
- fun_l19_n809(x)
- end
-end
-
-def fun_l18_n345(x)
- if (x < 1)
- fun_l19_n680(x)
- else
- fun_l19_n416(x)
- end
-end
-
-def fun_l18_n346(x)
- if (x < 1)
- fun_l19_n66(x)
- else
- fun_l19_n36(x)
- end
-end
-
-def fun_l18_n347(x)
- if (x < 1)
- fun_l19_n420(x)
- else
- fun_l19_n879(x)
- end
-end
-
-def fun_l18_n348(x)
- if (x < 1)
- fun_l19_n653(x)
- else
- fun_l19_n634(x)
- end
-end
-
-def fun_l18_n349(x)
- if (x < 1)
- fun_l19_n134(x)
- else
- fun_l19_n840(x)
- end
-end
-
-def fun_l18_n350(x)
- if (x < 1)
- fun_l19_n21(x)
- else
- fun_l19_n843(x)
- end
-end
-
-def fun_l18_n351(x)
- if (x < 1)
- fun_l19_n917(x)
- else
- fun_l19_n101(x)
- end
-end
-
-def fun_l18_n352(x)
- if (x < 1)
- fun_l19_n541(x)
- else
- fun_l19_n646(x)
- end
-end
-
-def fun_l18_n353(x)
- if (x < 1)
- fun_l19_n555(x)
- else
- fun_l19_n648(x)
- end
-end
-
-def fun_l18_n354(x)
- if (x < 1)
- fun_l19_n431(x)
- else
- fun_l19_n736(x)
- end
-end
-
-def fun_l18_n355(x)
- if (x < 1)
- fun_l19_n294(x)
- else
- fun_l19_n512(x)
- end
-end
-
-def fun_l18_n356(x)
- if (x < 1)
- fun_l19_n852(x)
- else
- fun_l19_n348(x)
- end
-end
-
-def fun_l18_n357(x)
- if (x < 1)
- fun_l19_n670(x)
- else
- fun_l19_n997(x)
- end
-end
-
-def fun_l18_n358(x)
- if (x < 1)
- fun_l19_n595(x)
- else
- fun_l19_n544(x)
- end
-end
-
-def fun_l18_n359(x)
- if (x < 1)
- fun_l19_n13(x)
- else
- fun_l19_n838(x)
- end
-end
-
-def fun_l18_n360(x)
- if (x < 1)
- fun_l19_n518(x)
- else
- fun_l19_n642(x)
- end
-end
-
-def fun_l18_n361(x)
- if (x < 1)
- fun_l19_n333(x)
- else
- fun_l19_n59(x)
- end
-end
-
-def fun_l18_n362(x)
- if (x < 1)
- fun_l19_n670(x)
- else
- fun_l19_n844(x)
- end
-end
-
-def fun_l18_n363(x)
- if (x < 1)
- fun_l19_n14(x)
- else
- fun_l19_n932(x)
- end
-end
-
-def fun_l18_n364(x)
- if (x < 1)
- fun_l19_n508(x)
- else
- fun_l19_n466(x)
- end
-end
-
-def fun_l18_n365(x)
- if (x < 1)
- fun_l19_n177(x)
- else
- fun_l19_n365(x)
- end
-end
-
-def fun_l18_n366(x)
- if (x < 1)
- fun_l19_n367(x)
- else
- fun_l19_n205(x)
- end
-end
-
-def fun_l18_n367(x)
- if (x < 1)
- fun_l19_n353(x)
- else
- fun_l19_n328(x)
- end
-end
-
-def fun_l18_n368(x)
- if (x < 1)
- fun_l19_n801(x)
- else
- fun_l19_n420(x)
- end
-end
-
-def fun_l18_n369(x)
- if (x < 1)
- fun_l19_n162(x)
- else
- fun_l19_n670(x)
- end
-end
-
-def fun_l18_n370(x)
- if (x < 1)
- fun_l19_n908(x)
- else
- fun_l19_n852(x)
- end
-end
-
-def fun_l18_n371(x)
- if (x < 1)
- fun_l19_n47(x)
- else
- fun_l19_n130(x)
- end
-end
-
-def fun_l18_n372(x)
- if (x < 1)
- fun_l19_n774(x)
- else
- fun_l19_n792(x)
- end
-end
-
-def fun_l18_n373(x)
- if (x < 1)
- fun_l19_n124(x)
- else
- fun_l19_n665(x)
- end
-end
-
-def fun_l18_n374(x)
- if (x < 1)
- fun_l19_n24(x)
- else
- fun_l19_n371(x)
- end
-end
-
-def fun_l18_n375(x)
- if (x < 1)
- fun_l19_n484(x)
- else
- fun_l19_n708(x)
- end
-end
-
-def fun_l18_n376(x)
- if (x < 1)
- fun_l19_n810(x)
- else
- fun_l19_n856(x)
- end
-end
-
-def fun_l18_n377(x)
- if (x < 1)
- fun_l19_n23(x)
- else
- fun_l19_n817(x)
- end
-end
-
-def fun_l18_n378(x)
- if (x < 1)
- fun_l19_n827(x)
- else
- fun_l19_n639(x)
- end
-end
-
-def fun_l18_n379(x)
- if (x < 1)
- fun_l19_n557(x)
- else
- fun_l19_n268(x)
- end
-end
-
-def fun_l18_n380(x)
- if (x < 1)
- fun_l19_n885(x)
- else
- fun_l19_n421(x)
- end
-end
-
-def fun_l18_n381(x)
- if (x < 1)
- fun_l19_n543(x)
- else
- fun_l19_n230(x)
- end
-end
-
-def fun_l18_n382(x)
- if (x < 1)
- fun_l19_n978(x)
- else
- fun_l19_n848(x)
- end
-end
-
-def fun_l18_n383(x)
- if (x < 1)
- fun_l19_n31(x)
- else
- fun_l19_n731(x)
- end
-end
-
-def fun_l18_n384(x)
- if (x < 1)
- fun_l19_n20(x)
- else
- fun_l19_n149(x)
- end
-end
-
-def fun_l18_n385(x)
- if (x < 1)
- fun_l19_n650(x)
- else
- fun_l19_n268(x)
- end
-end
-
-def fun_l18_n386(x)
- if (x < 1)
- fun_l19_n491(x)
- else
- fun_l19_n644(x)
- end
-end
-
-def fun_l18_n387(x)
- if (x < 1)
- fun_l19_n537(x)
- else
- fun_l19_n400(x)
- end
-end
-
-def fun_l18_n388(x)
- if (x < 1)
- fun_l19_n939(x)
- else
- fun_l19_n861(x)
- end
-end
-
-def fun_l18_n389(x)
- if (x < 1)
- fun_l19_n728(x)
- else
- fun_l19_n877(x)
- end
-end
-
-def fun_l18_n390(x)
- if (x < 1)
- fun_l19_n226(x)
- else
- fun_l19_n288(x)
- end
-end
-
-def fun_l18_n391(x)
- if (x < 1)
- fun_l19_n921(x)
- else
- fun_l19_n754(x)
- end
-end
-
-def fun_l18_n392(x)
- if (x < 1)
- fun_l19_n71(x)
- else
- fun_l19_n844(x)
- end
-end
-
-def fun_l18_n393(x)
- if (x < 1)
- fun_l19_n310(x)
- else
- fun_l19_n442(x)
- end
-end
-
-def fun_l18_n394(x)
- if (x < 1)
- fun_l19_n539(x)
- else
- fun_l19_n933(x)
- end
-end
-
-def fun_l18_n395(x)
- if (x < 1)
- fun_l19_n849(x)
- else
- fun_l19_n719(x)
- end
-end
-
-def fun_l18_n396(x)
- if (x < 1)
- fun_l19_n922(x)
- else
- fun_l19_n435(x)
- end
-end
-
-def fun_l18_n397(x)
- if (x < 1)
- fun_l19_n916(x)
- else
- fun_l19_n399(x)
- end
-end
-
-def fun_l18_n398(x)
- if (x < 1)
- fun_l19_n820(x)
- else
- fun_l19_n650(x)
- end
-end
-
-def fun_l18_n399(x)
- if (x < 1)
- fun_l19_n497(x)
- else
- fun_l19_n678(x)
- end
-end
-
-def fun_l18_n400(x)
- if (x < 1)
- fun_l19_n562(x)
- else
- fun_l19_n392(x)
- end
-end
-
-def fun_l18_n401(x)
- if (x < 1)
- fun_l19_n298(x)
- else
- fun_l19_n61(x)
- end
-end
-
-def fun_l18_n402(x)
- if (x < 1)
- fun_l19_n803(x)
- else
- fun_l19_n535(x)
- end
-end
-
-def fun_l18_n403(x)
- if (x < 1)
- fun_l19_n335(x)
- else
- fun_l19_n431(x)
- end
-end
-
-def fun_l18_n404(x)
- if (x < 1)
- fun_l19_n558(x)
- else
- fun_l19_n821(x)
- end
-end
-
-def fun_l18_n405(x)
- if (x < 1)
- fun_l19_n608(x)
- else
- fun_l19_n415(x)
- end
-end
-
-def fun_l18_n406(x)
- if (x < 1)
- fun_l19_n709(x)
- else
- fun_l19_n635(x)
- end
-end
-
-def fun_l18_n407(x)
- if (x < 1)
- fun_l19_n432(x)
- else
- fun_l19_n923(x)
- end
-end
-
-def fun_l18_n408(x)
- if (x < 1)
- fun_l19_n612(x)
- else
- fun_l19_n386(x)
- end
-end
-
-def fun_l18_n409(x)
- if (x < 1)
- fun_l19_n1(x)
- else
- fun_l19_n679(x)
- end
-end
-
-def fun_l18_n410(x)
- if (x < 1)
- fun_l19_n998(x)
- else
- fun_l19_n969(x)
- end
-end
-
-def fun_l18_n411(x)
- if (x < 1)
- fun_l19_n210(x)
- else
- fun_l19_n642(x)
- end
-end
-
-def fun_l18_n412(x)
- if (x < 1)
- fun_l19_n902(x)
- else
- fun_l19_n591(x)
- end
-end
-
-def fun_l18_n413(x)
- if (x < 1)
- fun_l19_n417(x)
- else
- fun_l19_n192(x)
- end
-end
-
-def fun_l18_n414(x)
- if (x < 1)
- fun_l19_n543(x)
- else
- fun_l19_n277(x)
- end
-end
-
-def fun_l18_n415(x)
- if (x < 1)
- fun_l19_n145(x)
- else
- fun_l19_n157(x)
- end
-end
-
-def fun_l18_n416(x)
- if (x < 1)
- fun_l19_n696(x)
- else
- fun_l19_n453(x)
- end
-end
-
-def fun_l18_n417(x)
- if (x < 1)
- fun_l19_n593(x)
- else
- fun_l19_n683(x)
- end
-end
-
-def fun_l18_n418(x)
- if (x < 1)
- fun_l19_n459(x)
- else
- fun_l19_n292(x)
- end
-end
-
-def fun_l18_n419(x)
- if (x < 1)
- fun_l19_n37(x)
- else
- fun_l19_n281(x)
- end
-end
-
-def fun_l18_n420(x)
- if (x < 1)
- fun_l19_n39(x)
- else
- fun_l19_n642(x)
- end
-end
-
-def fun_l18_n421(x)
- if (x < 1)
- fun_l19_n942(x)
- else
- fun_l19_n997(x)
- end
-end
-
-def fun_l18_n422(x)
- if (x < 1)
- fun_l19_n18(x)
- else
- fun_l19_n301(x)
- end
-end
-
-def fun_l18_n423(x)
- if (x < 1)
- fun_l19_n473(x)
- else
- fun_l19_n231(x)
- end
-end
-
-def fun_l18_n424(x)
- if (x < 1)
- fun_l19_n331(x)
- else
- fun_l19_n110(x)
- end
-end
-
-def fun_l18_n425(x)
- if (x < 1)
- fun_l19_n786(x)
- else
- fun_l19_n991(x)
- end
-end
-
-def fun_l18_n426(x)
- if (x < 1)
- fun_l19_n440(x)
- else
- fun_l19_n17(x)
- end
-end
-
-def fun_l18_n427(x)
- if (x < 1)
- fun_l19_n294(x)
- else
- fun_l19_n3(x)
- end
-end
-
-def fun_l18_n428(x)
- if (x < 1)
- fun_l19_n369(x)
- else
- fun_l19_n576(x)
- end
-end
-
-def fun_l18_n429(x)
- if (x < 1)
- fun_l19_n818(x)
- else
- fun_l19_n236(x)
- end
-end
-
-def fun_l18_n430(x)
- if (x < 1)
- fun_l19_n360(x)
- else
- fun_l19_n443(x)
- end
-end
-
-def fun_l18_n431(x)
- if (x < 1)
- fun_l19_n432(x)
- else
- fun_l19_n863(x)
- end
-end
-
-def fun_l18_n432(x)
- if (x < 1)
- fun_l19_n591(x)
- else
- fun_l19_n167(x)
- end
-end
-
-def fun_l18_n433(x)
- if (x < 1)
- fun_l19_n955(x)
- else
- fun_l19_n265(x)
- end
-end
-
-def fun_l18_n434(x)
- if (x < 1)
- fun_l19_n374(x)
- else
- fun_l19_n812(x)
- end
-end
-
-def fun_l18_n435(x)
- if (x < 1)
- fun_l19_n712(x)
- else
- fun_l19_n603(x)
- end
-end
-
-def fun_l18_n436(x)
- if (x < 1)
- fun_l19_n750(x)
- else
- fun_l19_n852(x)
- end
-end
-
-def fun_l18_n437(x)
- if (x < 1)
- fun_l19_n393(x)
- else
- fun_l19_n121(x)
- end
-end
-
-def fun_l18_n438(x)
- if (x < 1)
- fun_l19_n555(x)
- else
- fun_l19_n33(x)
- end
-end
-
-def fun_l18_n439(x)
- if (x < 1)
- fun_l19_n872(x)
- else
- fun_l19_n841(x)
- end
-end
-
-def fun_l18_n440(x)
- if (x < 1)
- fun_l19_n828(x)
- else
- fun_l19_n549(x)
- end
-end
-
-def fun_l18_n441(x)
- if (x < 1)
- fun_l19_n647(x)
- else
- fun_l19_n795(x)
- end
-end
-
-def fun_l18_n442(x)
- if (x < 1)
- fun_l19_n609(x)
- else
- fun_l19_n837(x)
- end
-end
-
-def fun_l18_n443(x)
- if (x < 1)
- fun_l19_n977(x)
- else
- fun_l19_n670(x)
- end
-end
-
-def fun_l18_n444(x)
- if (x < 1)
- fun_l19_n649(x)
- else
- fun_l19_n912(x)
- end
-end
-
-def fun_l18_n445(x)
- if (x < 1)
- fun_l19_n856(x)
- else
- fun_l19_n994(x)
- end
-end
-
-def fun_l18_n446(x)
- if (x < 1)
- fun_l19_n868(x)
- else
- fun_l19_n105(x)
- end
-end
-
-def fun_l18_n447(x)
- if (x < 1)
- fun_l19_n405(x)
- else
- fun_l19_n318(x)
- end
-end
-
-def fun_l18_n448(x)
- if (x < 1)
- fun_l19_n966(x)
- else
- fun_l19_n214(x)
- end
-end
-
-def fun_l18_n449(x)
- if (x < 1)
- fun_l19_n458(x)
- else
- fun_l19_n650(x)
- end
-end
-
-def fun_l18_n450(x)
- if (x < 1)
- fun_l19_n875(x)
- else
- fun_l19_n697(x)
- end
-end
-
-def fun_l18_n451(x)
- if (x < 1)
- fun_l19_n799(x)
- else
- fun_l19_n661(x)
- end
-end
-
-def fun_l18_n452(x)
- if (x < 1)
- fun_l19_n677(x)
- else
- fun_l19_n750(x)
- end
-end
-
-def fun_l18_n453(x)
- if (x < 1)
- fun_l19_n530(x)
- else
- fun_l19_n110(x)
- end
-end
-
-def fun_l18_n454(x)
- if (x < 1)
- fun_l19_n785(x)
- else
- fun_l19_n381(x)
- end
-end
-
-def fun_l18_n455(x)
- if (x < 1)
- fun_l19_n680(x)
- else
- fun_l19_n201(x)
- end
-end
-
-def fun_l18_n456(x)
- if (x < 1)
- fun_l19_n246(x)
- else
- fun_l19_n972(x)
- end
-end
-
-def fun_l18_n457(x)
- if (x < 1)
- fun_l19_n656(x)
- else
- fun_l19_n451(x)
- end
-end
-
-def fun_l18_n458(x)
- if (x < 1)
- fun_l19_n612(x)
- else
- fun_l19_n288(x)
- end
-end
-
-def fun_l18_n459(x)
- if (x < 1)
- fun_l19_n612(x)
- else
- fun_l19_n150(x)
- end
-end
-
-def fun_l18_n460(x)
- if (x < 1)
- fun_l19_n549(x)
- else
- fun_l19_n917(x)
- end
-end
-
-def fun_l18_n461(x)
- if (x < 1)
- fun_l19_n661(x)
- else
- fun_l19_n11(x)
- end
-end
-
-def fun_l18_n462(x)
- if (x < 1)
- fun_l19_n172(x)
- else
- fun_l19_n561(x)
- end
-end
-
-def fun_l18_n463(x)
- if (x < 1)
- fun_l19_n687(x)
- else
- fun_l19_n12(x)
- end
-end
-
-def fun_l18_n464(x)
- if (x < 1)
- fun_l19_n57(x)
- else
- fun_l19_n835(x)
- end
-end
-
-def fun_l18_n465(x)
- if (x < 1)
- fun_l19_n116(x)
- else
- fun_l19_n993(x)
- end
-end
-
-def fun_l18_n466(x)
- if (x < 1)
- fun_l19_n932(x)
- else
- fun_l19_n623(x)
- end
-end
-
-def fun_l18_n467(x)
- if (x < 1)
- fun_l19_n839(x)
- else
- fun_l19_n70(x)
- end
-end
-
-def fun_l18_n468(x)
- if (x < 1)
- fun_l19_n574(x)
- else
- fun_l19_n193(x)
- end
-end
-
-def fun_l18_n469(x)
- if (x < 1)
- fun_l19_n762(x)
- else
- fun_l19_n654(x)
- end
-end
-
-def fun_l18_n470(x)
- if (x < 1)
- fun_l19_n656(x)
- else
- fun_l19_n42(x)
- end
-end
-
-def fun_l18_n471(x)
- if (x < 1)
- fun_l19_n959(x)
- else
- fun_l19_n368(x)
- end
-end
-
-def fun_l18_n472(x)
- if (x < 1)
- fun_l19_n494(x)
- else
- fun_l19_n357(x)
- end
-end
-
-def fun_l18_n473(x)
- if (x < 1)
- fun_l19_n394(x)
- else
- fun_l19_n313(x)
- end
-end
-
-def fun_l18_n474(x)
- if (x < 1)
- fun_l19_n826(x)
- else
- fun_l19_n33(x)
- end
-end
-
-def fun_l18_n475(x)
- if (x < 1)
- fun_l19_n202(x)
- else
- fun_l19_n455(x)
- end
-end
-
-def fun_l18_n476(x)
- if (x < 1)
- fun_l19_n855(x)
- else
- fun_l19_n375(x)
- end
-end
-
-def fun_l18_n477(x)
- if (x < 1)
- fun_l19_n554(x)
- else
- fun_l19_n176(x)
- end
-end
-
-def fun_l18_n478(x)
- if (x < 1)
- fun_l19_n705(x)
- else
- fun_l19_n509(x)
- end
-end
-
-def fun_l18_n479(x)
- if (x < 1)
- fun_l19_n473(x)
- else
- fun_l19_n123(x)
- end
-end
-
-def fun_l18_n480(x)
- if (x < 1)
- fun_l19_n108(x)
- else
- fun_l19_n125(x)
- end
-end
-
-def fun_l18_n481(x)
- if (x < 1)
- fun_l19_n476(x)
- else
- fun_l19_n657(x)
- end
-end
-
-def fun_l18_n482(x)
- if (x < 1)
- fun_l19_n800(x)
- else
- fun_l19_n691(x)
- end
-end
-
-def fun_l18_n483(x)
- if (x < 1)
- fun_l19_n343(x)
- else
- fun_l19_n573(x)
- end
-end
-
-def fun_l18_n484(x)
- if (x < 1)
- fun_l19_n654(x)
- else
- fun_l19_n114(x)
- end
-end
-
-def fun_l18_n485(x)
- if (x < 1)
- fun_l19_n231(x)
- else
- fun_l19_n291(x)
- end
-end
-
-def fun_l18_n486(x)
- if (x < 1)
- fun_l19_n877(x)
- else
- fun_l19_n628(x)
- end
-end
-
-def fun_l18_n487(x)
- if (x < 1)
- fun_l19_n35(x)
- else
- fun_l19_n992(x)
- end
-end
-
-def fun_l18_n488(x)
- if (x < 1)
- fun_l19_n592(x)
- else
- fun_l19_n951(x)
- end
-end
-
-def fun_l18_n489(x)
- if (x < 1)
- fun_l19_n292(x)
- else
- fun_l19_n768(x)
- end
-end
-
-def fun_l18_n490(x)
- if (x < 1)
- fun_l19_n191(x)
- else
- fun_l19_n759(x)
- end
-end
-
-def fun_l18_n491(x)
- if (x < 1)
- fun_l19_n474(x)
- else
- fun_l19_n393(x)
- end
-end
-
-def fun_l18_n492(x)
- if (x < 1)
- fun_l19_n556(x)
- else
- fun_l19_n691(x)
- end
-end
-
-def fun_l18_n493(x)
- if (x < 1)
- fun_l19_n717(x)
- else
- fun_l19_n714(x)
- end
-end
-
-def fun_l18_n494(x)
- if (x < 1)
- fun_l19_n542(x)
- else
- fun_l19_n505(x)
- end
-end
-
-def fun_l18_n495(x)
- if (x < 1)
- fun_l19_n154(x)
- else
- fun_l19_n500(x)
- end
-end
-
-def fun_l18_n496(x)
- if (x < 1)
- fun_l19_n311(x)
- else
- fun_l19_n458(x)
- end
-end
-
-def fun_l18_n497(x)
- if (x < 1)
- fun_l19_n523(x)
- else
- fun_l19_n475(x)
- end
-end
-
-def fun_l18_n498(x)
- if (x < 1)
- fun_l19_n101(x)
- else
- fun_l19_n478(x)
- end
-end
-
-def fun_l18_n499(x)
- if (x < 1)
- fun_l19_n243(x)
- else
- fun_l19_n586(x)
- end
-end
-
-def fun_l18_n500(x)
- if (x < 1)
- fun_l19_n263(x)
- else
- fun_l19_n888(x)
- end
-end
-
-def fun_l18_n501(x)
- if (x < 1)
- fun_l19_n415(x)
- else
- fun_l19_n808(x)
- end
-end
-
-def fun_l18_n502(x)
- if (x < 1)
- fun_l19_n38(x)
- else
- fun_l19_n640(x)
- end
-end
-
-def fun_l18_n503(x)
- if (x < 1)
- fun_l19_n218(x)
- else
- fun_l19_n577(x)
- end
-end
-
-def fun_l18_n504(x)
- if (x < 1)
- fun_l19_n723(x)
- else
- fun_l19_n594(x)
- end
-end
-
-def fun_l18_n505(x)
- if (x < 1)
- fun_l19_n392(x)
- else
- fun_l19_n984(x)
- end
-end
-
-def fun_l18_n506(x)
- if (x < 1)
- fun_l19_n310(x)
- else
- fun_l19_n668(x)
- end
-end
-
-def fun_l18_n507(x)
- if (x < 1)
- fun_l19_n278(x)
- else
- fun_l19_n812(x)
- end
-end
-
-def fun_l18_n508(x)
- if (x < 1)
- fun_l19_n230(x)
- else
- fun_l19_n479(x)
- end
-end
-
-def fun_l18_n509(x)
- if (x < 1)
- fun_l19_n63(x)
- else
- fun_l19_n774(x)
- end
-end
-
-def fun_l18_n510(x)
- if (x < 1)
- fun_l19_n607(x)
- else
- fun_l19_n433(x)
- end
-end
-
-def fun_l18_n511(x)
- if (x < 1)
- fun_l19_n28(x)
- else
- fun_l19_n672(x)
- end
-end
-
-def fun_l18_n512(x)
- if (x < 1)
- fun_l19_n684(x)
- else
- fun_l19_n247(x)
- end
-end
-
-def fun_l18_n513(x)
- if (x < 1)
- fun_l19_n181(x)
- else
- fun_l19_n649(x)
- end
-end
-
-def fun_l18_n514(x)
- if (x < 1)
- fun_l19_n787(x)
- else
- fun_l19_n281(x)
- end
-end
-
-def fun_l18_n515(x)
- if (x < 1)
- fun_l19_n191(x)
- else
- fun_l19_n848(x)
- end
-end
-
-def fun_l18_n516(x)
- if (x < 1)
- fun_l19_n796(x)
- else
- fun_l19_n572(x)
- end
-end
-
-def fun_l18_n517(x)
- if (x < 1)
- fun_l19_n780(x)
- else
- fun_l19_n816(x)
- end
-end
-
-def fun_l18_n518(x)
- if (x < 1)
- fun_l19_n429(x)
- else
- fun_l19_n681(x)
- end
-end
-
-def fun_l18_n519(x)
- if (x < 1)
- fun_l19_n476(x)
- else
- fun_l19_n954(x)
- end
-end
-
-def fun_l18_n520(x)
- if (x < 1)
- fun_l19_n537(x)
- else
- fun_l19_n690(x)
- end
-end
-
-def fun_l18_n521(x)
- if (x < 1)
- fun_l19_n657(x)
- else
- fun_l19_n293(x)
- end
-end
-
-def fun_l18_n522(x)
- if (x < 1)
- fun_l19_n369(x)
- else
- fun_l19_n685(x)
- end
-end
-
-def fun_l18_n523(x)
- if (x < 1)
- fun_l19_n785(x)
- else
- fun_l19_n184(x)
- end
-end
-
-def fun_l18_n524(x)
- if (x < 1)
- fun_l19_n6(x)
- else
- fun_l19_n970(x)
- end
-end
-
-def fun_l18_n525(x)
- if (x < 1)
- fun_l19_n395(x)
- else
- fun_l19_n570(x)
- end
-end
-
-def fun_l18_n526(x)
- if (x < 1)
- fun_l19_n837(x)
- else
- fun_l19_n992(x)
- end
-end
-
-def fun_l18_n527(x)
- if (x < 1)
- fun_l19_n827(x)
- else
- fun_l19_n119(x)
- end
-end
-
-def fun_l18_n528(x)
- if (x < 1)
- fun_l19_n819(x)
- else
- fun_l19_n382(x)
- end
-end
-
-def fun_l18_n529(x)
- if (x < 1)
- fun_l19_n365(x)
- else
- fun_l19_n713(x)
- end
-end
-
-def fun_l18_n530(x)
- if (x < 1)
- fun_l19_n223(x)
- else
- fun_l19_n346(x)
- end
-end
-
-def fun_l18_n531(x)
- if (x < 1)
- fun_l19_n624(x)
- else
- fun_l19_n671(x)
- end
-end
-
-def fun_l18_n532(x)
- if (x < 1)
- fun_l19_n522(x)
- else
- fun_l19_n354(x)
- end
-end
-
-def fun_l18_n533(x)
- if (x < 1)
- fun_l19_n324(x)
- else
- fun_l19_n602(x)
- end
-end
-
-def fun_l18_n534(x)
- if (x < 1)
- fun_l19_n138(x)
- else
- fun_l19_n259(x)
- end
-end
-
-def fun_l18_n535(x)
- if (x < 1)
- fun_l19_n692(x)
- else
- fun_l19_n810(x)
- end
-end
-
-def fun_l18_n536(x)
- if (x < 1)
- fun_l19_n694(x)
- else
- fun_l19_n39(x)
- end
-end
-
-def fun_l18_n537(x)
- if (x < 1)
- fun_l19_n441(x)
- else
- fun_l19_n158(x)
- end
-end
-
-def fun_l18_n538(x)
- if (x < 1)
- fun_l19_n609(x)
- else
- fun_l19_n54(x)
- end
-end
-
-def fun_l18_n539(x)
- if (x < 1)
- fun_l19_n984(x)
- else
- fun_l19_n206(x)
- end
-end
-
-def fun_l18_n540(x)
- if (x < 1)
- fun_l19_n548(x)
- else
- fun_l19_n558(x)
- end
-end
-
-def fun_l18_n541(x)
- if (x < 1)
- fun_l19_n640(x)
- else
- fun_l19_n721(x)
- end
-end
-
-def fun_l18_n542(x)
- if (x < 1)
- fun_l19_n50(x)
- else
- fun_l19_n598(x)
- end
-end
-
-def fun_l18_n543(x)
- if (x < 1)
- fun_l19_n774(x)
- else
- fun_l19_n753(x)
- end
-end
-
-def fun_l18_n544(x)
- if (x < 1)
- fun_l19_n151(x)
- else
- fun_l19_n75(x)
- end
-end
-
-def fun_l18_n545(x)
- if (x < 1)
- fun_l19_n162(x)
- else
- fun_l19_n550(x)
- end
-end
-
-def fun_l18_n546(x)
- if (x < 1)
- fun_l19_n892(x)
- else
- fun_l19_n322(x)
- end
-end
-
-def fun_l18_n547(x)
- if (x < 1)
- fun_l19_n15(x)
- else
- fun_l19_n854(x)
- end
-end
-
-def fun_l18_n548(x)
- if (x < 1)
- fun_l19_n54(x)
- else
- fun_l19_n627(x)
- end
-end
-
-def fun_l18_n549(x)
- if (x < 1)
- fun_l19_n847(x)
- else
- fun_l19_n236(x)
- end
-end
-
-def fun_l18_n550(x)
- if (x < 1)
- fun_l19_n796(x)
- else
- fun_l19_n895(x)
- end
-end
-
-def fun_l18_n551(x)
- if (x < 1)
- fun_l19_n922(x)
- else
- fun_l19_n854(x)
- end
-end
-
-def fun_l18_n552(x)
- if (x < 1)
- fun_l19_n378(x)
- else
- fun_l19_n449(x)
- end
-end
-
-def fun_l18_n553(x)
- if (x < 1)
- fun_l19_n188(x)
- else
- fun_l19_n65(x)
- end
-end
-
-def fun_l18_n554(x)
- if (x < 1)
- fun_l19_n606(x)
- else
- fun_l19_n292(x)
- end
-end
-
-def fun_l18_n555(x)
- if (x < 1)
- fun_l19_n718(x)
- else
- fun_l19_n926(x)
- end
-end
-
-def fun_l18_n556(x)
- if (x < 1)
- fun_l19_n765(x)
- else
- fun_l19_n975(x)
- end
-end
-
-def fun_l18_n557(x)
- if (x < 1)
- fun_l19_n987(x)
- else
- fun_l19_n152(x)
- end
-end
-
-def fun_l18_n558(x)
- if (x < 1)
- fun_l19_n978(x)
- else
- fun_l19_n861(x)
- end
-end
-
-def fun_l18_n559(x)
- if (x < 1)
- fun_l19_n563(x)
- else
- fun_l19_n532(x)
- end
-end
-
-def fun_l18_n560(x)
- if (x < 1)
- fun_l19_n492(x)
- else
- fun_l19_n337(x)
- end
-end
-
-def fun_l18_n561(x)
- if (x < 1)
- fun_l19_n967(x)
- else
- fun_l19_n33(x)
- end
-end
-
-def fun_l18_n562(x)
- if (x < 1)
- fun_l19_n509(x)
- else
- fun_l19_n212(x)
- end
-end
-
-def fun_l18_n563(x)
- if (x < 1)
- fun_l19_n55(x)
- else
- fun_l19_n167(x)
- end
-end
-
-def fun_l18_n564(x)
- if (x < 1)
- fun_l19_n263(x)
- else
- fun_l19_n386(x)
- end
-end
-
-def fun_l18_n565(x)
- if (x < 1)
- fun_l19_n292(x)
- else
- fun_l19_n576(x)
- end
-end
-
-def fun_l18_n566(x)
- if (x < 1)
- fun_l19_n16(x)
- else
- fun_l19_n180(x)
- end
-end
-
-def fun_l18_n567(x)
- if (x < 1)
- fun_l19_n359(x)
- else
- fun_l19_n398(x)
- end
-end
-
-def fun_l18_n568(x)
- if (x < 1)
- fun_l19_n799(x)
- else
- fun_l19_n616(x)
- end
-end
-
-def fun_l18_n569(x)
- if (x < 1)
- fun_l19_n751(x)
- else
- fun_l19_n539(x)
- end
-end
-
-def fun_l18_n570(x)
- if (x < 1)
- fun_l19_n497(x)
- else
- fun_l19_n197(x)
- end
-end
-
-def fun_l18_n571(x)
- if (x < 1)
- fun_l19_n88(x)
- else
- fun_l19_n565(x)
- end
-end
-
-def fun_l18_n572(x)
- if (x < 1)
- fun_l19_n213(x)
- else
- fun_l19_n137(x)
- end
-end
-
-def fun_l18_n573(x)
- if (x < 1)
- fun_l19_n570(x)
- else
- fun_l19_n893(x)
- end
-end
-
-def fun_l18_n574(x)
- if (x < 1)
- fun_l19_n436(x)
- else
- fun_l19_n285(x)
- end
-end
-
-def fun_l18_n575(x)
- if (x < 1)
- fun_l19_n787(x)
- else
- fun_l19_n541(x)
- end
-end
-
-def fun_l18_n576(x)
- if (x < 1)
- fun_l19_n432(x)
- else
- fun_l19_n371(x)
- end
-end
-
-def fun_l18_n577(x)
- if (x < 1)
- fun_l19_n542(x)
- else
- fun_l19_n431(x)
- end
-end
-
-def fun_l18_n578(x)
- if (x < 1)
- fun_l19_n829(x)
- else
- fun_l19_n415(x)
- end
-end
-
-def fun_l18_n579(x)
- if (x < 1)
- fun_l19_n925(x)
- else
- fun_l19_n862(x)
- end
-end
-
-def fun_l18_n580(x)
- if (x < 1)
- fun_l19_n214(x)
- else
- fun_l19_n67(x)
- end
-end
-
-def fun_l18_n581(x)
- if (x < 1)
- fun_l19_n734(x)
- else
- fun_l19_n220(x)
- end
-end
-
-def fun_l18_n582(x)
- if (x < 1)
- fun_l19_n971(x)
- else
- fun_l19_n359(x)
- end
-end
-
-def fun_l18_n583(x)
- if (x < 1)
- fun_l19_n293(x)
- else
- fun_l19_n286(x)
- end
-end
-
-def fun_l18_n584(x)
- if (x < 1)
- fun_l19_n618(x)
- else
- fun_l19_n866(x)
- end
-end
-
-def fun_l18_n585(x)
- if (x < 1)
- fun_l19_n315(x)
- else
- fun_l19_n594(x)
- end
-end
-
-def fun_l18_n586(x)
- if (x < 1)
- fun_l19_n230(x)
- else
- fun_l19_n450(x)
- end
-end
-
-def fun_l18_n587(x)
- if (x < 1)
- fun_l19_n805(x)
- else
- fun_l19_n429(x)
- end
-end
-
-def fun_l18_n588(x)
- if (x < 1)
- fun_l19_n782(x)
- else
- fun_l19_n133(x)
- end
-end
-
-def fun_l18_n589(x)
- if (x < 1)
- fun_l19_n166(x)
- else
- fun_l19_n111(x)
- end
-end
-
-def fun_l18_n590(x)
- if (x < 1)
- fun_l19_n26(x)
- else
- fun_l19_n678(x)
- end
-end
-
-def fun_l18_n591(x)
- if (x < 1)
- fun_l19_n728(x)
- else
- fun_l19_n346(x)
- end
-end
-
-def fun_l18_n592(x)
- if (x < 1)
- fun_l19_n882(x)
- else
- fun_l19_n930(x)
- end
-end
-
-def fun_l18_n593(x)
- if (x < 1)
- fun_l19_n454(x)
- else
- fun_l19_n560(x)
- end
-end
-
-def fun_l18_n594(x)
- if (x < 1)
- fun_l19_n881(x)
- else
- fun_l19_n929(x)
- end
-end
-
-def fun_l18_n595(x)
- if (x < 1)
- fun_l19_n464(x)
- else
- fun_l19_n8(x)
- end
-end
-
-def fun_l18_n596(x)
- if (x < 1)
- fun_l19_n247(x)
- else
- fun_l19_n48(x)
- end
-end
-
-def fun_l18_n597(x)
- if (x < 1)
- fun_l19_n838(x)
- else
- fun_l19_n811(x)
- end
-end
-
-def fun_l18_n598(x)
- if (x < 1)
- fun_l19_n493(x)
- else
- fun_l19_n975(x)
- end
-end
-
-def fun_l18_n599(x)
- if (x < 1)
- fun_l19_n372(x)
- else
- fun_l19_n334(x)
- end
-end
-
-def fun_l18_n600(x)
- if (x < 1)
- fun_l19_n971(x)
- else
- fun_l19_n198(x)
- end
-end
-
-def fun_l18_n601(x)
- if (x < 1)
- fun_l19_n494(x)
- else
- fun_l19_n273(x)
- end
-end
-
-def fun_l18_n602(x)
- if (x < 1)
- fun_l19_n778(x)
- else
- fun_l19_n815(x)
- end
-end
-
-def fun_l18_n603(x)
- if (x < 1)
- fun_l19_n247(x)
- else
- fun_l19_n615(x)
- end
-end
-
-def fun_l18_n604(x)
- if (x < 1)
- fun_l19_n659(x)
- else
- fun_l19_n613(x)
- end
-end
-
-def fun_l18_n605(x)
- if (x < 1)
- fun_l19_n814(x)
- else
- fun_l19_n742(x)
- end
-end
-
-def fun_l18_n606(x)
- if (x < 1)
- fun_l19_n988(x)
- else
- fun_l19_n877(x)
- end
-end
-
-def fun_l18_n607(x)
- if (x < 1)
- fun_l19_n908(x)
- else
- fun_l19_n491(x)
- end
-end
-
-def fun_l18_n608(x)
- if (x < 1)
- fun_l19_n600(x)
- else
- fun_l19_n381(x)
- end
-end
-
-def fun_l18_n609(x)
- if (x < 1)
- fun_l19_n695(x)
- else
- fun_l19_n343(x)
- end
-end
-
-def fun_l18_n610(x)
- if (x < 1)
- fun_l19_n686(x)
- else
- fun_l19_n154(x)
- end
-end
-
-def fun_l18_n611(x)
- if (x < 1)
- fun_l19_n413(x)
- else
- fun_l19_n364(x)
- end
-end
-
-def fun_l18_n612(x)
- if (x < 1)
- fun_l19_n86(x)
- else
- fun_l19_n478(x)
- end
-end
-
-def fun_l18_n613(x)
- if (x < 1)
- fun_l19_n288(x)
- else
- fun_l19_n134(x)
- end
-end
-
-def fun_l18_n614(x)
- if (x < 1)
- fun_l19_n71(x)
- else
- fun_l19_n95(x)
- end
-end
-
-def fun_l18_n615(x)
- if (x < 1)
- fun_l19_n716(x)
- else
- fun_l19_n697(x)
- end
-end
-
-def fun_l18_n616(x)
- if (x < 1)
- fun_l19_n24(x)
- else
- fun_l19_n365(x)
- end
-end
-
-def fun_l18_n617(x)
- if (x < 1)
- fun_l19_n317(x)
- else
- fun_l19_n117(x)
- end
-end
-
-def fun_l18_n618(x)
- if (x < 1)
- fun_l19_n304(x)
- else
- fun_l19_n115(x)
- end
-end
-
-def fun_l18_n619(x)
- if (x < 1)
- fun_l19_n322(x)
- else
- fun_l19_n105(x)
- end
-end
-
-def fun_l18_n620(x)
- if (x < 1)
- fun_l19_n213(x)
- else
- fun_l19_n122(x)
- end
-end
-
-def fun_l18_n621(x)
- if (x < 1)
- fun_l19_n675(x)
- else
- fun_l19_n769(x)
- end
-end
-
-def fun_l18_n622(x)
- if (x < 1)
- fun_l19_n660(x)
- else
- fun_l19_n895(x)
- end
-end
-
-def fun_l18_n623(x)
- if (x < 1)
- fun_l19_n656(x)
- else
- fun_l19_n698(x)
- end
-end
-
-def fun_l18_n624(x)
- if (x < 1)
- fun_l19_n575(x)
- else
- fun_l19_n274(x)
- end
-end
-
-def fun_l18_n625(x)
- if (x < 1)
- fun_l19_n44(x)
- else
- fun_l19_n78(x)
- end
-end
-
-def fun_l18_n626(x)
- if (x < 1)
- fun_l19_n326(x)
- else
- fun_l19_n76(x)
- end
-end
-
-def fun_l18_n627(x)
- if (x < 1)
- fun_l19_n365(x)
- else
- fun_l19_n453(x)
- end
-end
-
-def fun_l18_n628(x)
- if (x < 1)
- fun_l19_n306(x)
- else
- fun_l19_n63(x)
- end
-end
-
-def fun_l18_n629(x)
- if (x < 1)
- fun_l19_n116(x)
- else
- fun_l19_n577(x)
- end
-end
-
-def fun_l18_n630(x)
- if (x < 1)
- fun_l19_n625(x)
- else
- fun_l19_n321(x)
- end
-end
-
-def fun_l18_n631(x)
- if (x < 1)
- fun_l19_n328(x)
- else
- fun_l19_n989(x)
- end
-end
-
-def fun_l18_n632(x)
- if (x < 1)
- fun_l19_n216(x)
- else
- fun_l19_n375(x)
- end
-end
-
-def fun_l18_n633(x)
- if (x < 1)
- fun_l19_n942(x)
- else
- fun_l19_n17(x)
- end
-end
-
-def fun_l18_n634(x)
- if (x < 1)
- fun_l19_n821(x)
- else
- fun_l19_n132(x)
- end
-end
-
-def fun_l18_n635(x)
- if (x < 1)
- fun_l19_n164(x)
- else
- fun_l19_n679(x)
- end
-end
-
-def fun_l18_n636(x)
- if (x < 1)
- fun_l19_n494(x)
- else
- fun_l19_n404(x)
- end
-end
-
-def fun_l18_n637(x)
- if (x < 1)
- fun_l19_n715(x)
- else
- fun_l19_n955(x)
- end
-end
-
-def fun_l18_n638(x)
- if (x < 1)
- fun_l19_n297(x)
- else
- fun_l19_n349(x)
- end
-end
-
-def fun_l18_n639(x)
- if (x < 1)
- fun_l19_n835(x)
- else
- fun_l19_n965(x)
- end
-end
-
-def fun_l18_n640(x)
- if (x < 1)
- fun_l19_n778(x)
- else
- fun_l19_n572(x)
- end
-end
-
-def fun_l18_n641(x)
- if (x < 1)
- fun_l19_n51(x)
- else
- fun_l19_n497(x)
- end
-end
-
-def fun_l18_n642(x)
- if (x < 1)
- fun_l19_n390(x)
- else
- fun_l19_n341(x)
- end
-end
-
-def fun_l18_n643(x)
- if (x < 1)
- fun_l19_n961(x)
- else
- fun_l19_n966(x)
- end
-end
-
-def fun_l18_n644(x)
- if (x < 1)
- fun_l19_n832(x)
- else
- fun_l19_n279(x)
- end
-end
-
-def fun_l18_n645(x)
- if (x < 1)
- fun_l19_n0(x)
- else
- fun_l19_n266(x)
- end
-end
-
-def fun_l18_n646(x)
- if (x < 1)
- fun_l19_n512(x)
- else
- fun_l19_n988(x)
- end
-end
-
-def fun_l18_n647(x)
- if (x < 1)
- fun_l19_n728(x)
- else
- fun_l19_n390(x)
- end
-end
-
-def fun_l18_n648(x)
- if (x < 1)
- fun_l19_n61(x)
- else
- fun_l19_n188(x)
- end
-end
-
-def fun_l18_n649(x)
- if (x < 1)
- fun_l19_n772(x)
- else
- fun_l19_n457(x)
- end
-end
-
-def fun_l18_n650(x)
- if (x < 1)
- fun_l19_n768(x)
- else
- fun_l19_n624(x)
- end
-end
-
-def fun_l18_n651(x)
- if (x < 1)
- fun_l19_n30(x)
- else
- fun_l19_n663(x)
- end
-end
-
-def fun_l18_n652(x)
- if (x < 1)
- fun_l19_n42(x)
- else
- fun_l19_n781(x)
- end
-end
-
-def fun_l18_n653(x)
- if (x < 1)
- fun_l19_n59(x)
- else
- fun_l19_n99(x)
- end
-end
-
-def fun_l18_n654(x)
- if (x < 1)
- fun_l19_n81(x)
- else
- fun_l19_n368(x)
- end
-end
-
-def fun_l18_n655(x)
- if (x < 1)
- fun_l19_n0(x)
- else
- fun_l19_n321(x)
- end
-end
-
-def fun_l18_n656(x)
- if (x < 1)
- fun_l19_n344(x)
- else
- fun_l19_n996(x)
- end
-end
-
-def fun_l18_n657(x)
- if (x < 1)
- fun_l19_n384(x)
- else
- fun_l19_n123(x)
- end
-end
-
-def fun_l18_n658(x)
- if (x < 1)
- fun_l19_n336(x)
- else
- fun_l19_n928(x)
- end
-end
-
-def fun_l18_n659(x)
- if (x < 1)
- fun_l19_n785(x)
- else
- fun_l19_n370(x)
- end
-end
-
-def fun_l18_n660(x)
- if (x < 1)
- fun_l19_n508(x)
- else
- fun_l19_n200(x)
- end
-end
-
-def fun_l18_n661(x)
- if (x < 1)
- fun_l19_n674(x)
- else
- fun_l19_n95(x)
- end
-end
-
-def fun_l18_n662(x)
- if (x < 1)
- fun_l19_n839(x)
- else
- fun_l19_n737(x)
- end
-end
-
-def fun_l18_n663(x)
- if (x < 1)
- fun_l19_n670(x)
- else
- fun_l19_n77(x)
- end
-end
-
-def fun_l18_n664(x)
- if (x < 1)
- fun_l19_n402(x)
- else
- fun_l19_n7(x)
- end
-end
-
-def fun_l18_n665(x)
- if (x < 1)
- fun_l19_n357(x)
- else
- fun_l19_n961(x)
- end
-end
-
-def fun_l18_n666(x)
- if (x < 1)
- fun_l19_n72(x)
- else
- fun_l19_n535(x)
- end
-end
-
-def fun_l18_n667(x)
- if (x < 1)
- fun_l19_n317(x)
- else
- fun_l19_n450(x)
- end
-end
-
-def fun_l18_n668(x)
- if (x < 1)
- fun_l19_n823(x)
- else
- fun_l19_n301(x)
- end
-end
-
-def fun_l18_n669(x)
- if (x < 1)
- fun_l19_n36(x)
- else
- fun_l19_n660(x)
- end
-end
-
-def fun_l18_n670(x)
- if (x < 1)
- fun_l19_n322(x)
- else
- fun_l19_n626(x)
- end
-end
-
-def fun_l18_n671(x)
- if (x < 1)
- fun_l19_n408(x)
- else
- fun_l19_n872(x)
- end
-end
-
-def fun_l18_n672(x)
- if (x < 1)
- fun_l19_n614(x)
- else
- fun_l19_n567(x)
- end
-end
-
-def fun_l18_n673(x)
- if (x < 1)
- fun_l19_n601(x)
- else
- fun_l19_n429(x)
- end
-end
-
-def fun_l18_n674(x)
- if (x < 1)
- fun_l19_n658(x)
- else
- fun_l19_n424(x)
- end
-end
-
-def fun_l18_n675(x)
- if (x < 1)
- fun_l19_n248(x)
- else
- fun_l19_n29(x)
- end
-end
-
-def fun_l18_n676(x)
- if (x < 1)
- fun_l19_n206(x)
- else
- fun_l19_n838(x)
- end
-end
-
-def fun_l18_n677(x)
- if (x < 1)
- fun_l19_n354(x)
- else
- fun_l19_n700(x)
- end
-end
-
-def fun_l18_n678(x)
- if (x < 1)
- fun_l19_n264(x)
- else
- fun_l19_n591(x)
- end
-end
-
-def fun_l18_n679(x)
- if (x < 1)
- fun_l19_n73(x)
- else
- fun_l19_n419(x)
- end
-end
-
-def fun_l18_n680(x)
- if (x < 1)
- fun_l19_n260(x)
- else
- fun_l19_n902(x)
- end
-end
-
-def fun_l18_n681(x)
- if (x < 1)
- fun_l19_n776(x)
- else
- fun_l19_n148(x)
- end
-end
-
-def fun_l18_n682(x)
- if (x < 1)
- fun_l19_n819(x)
- else
- fun_l19_n743(x)
- end
-end
-
-def fun_l18_n683(x)
- if (x < 1)
- fun_l19_n831(x)
- else
- fun_l19_n194(x)
- end
-end
-
-def fun_l18_n684(x)
- if (x < 1)
- fun_l19_n652(x)
- else
- fun_l19_n229(x)
- end
-end
-
-def fun_l18_n685(x)
- if (x < 1)
- fun_l19_n533(x)
- else
- fun_l19_n600(x)
- end
-end
-
-def fun_l18_n686(x)
- if (x < 1)
- fun_l19_n45(x)
- else
- fun_l19_n623(x)
- end
-end
-
-def fun_l18_n687(x)
- if (x < 1)
- fun_l19_n287(x)
- else
- fun_l19_n443(x)
- end
-end
-
-def fun_l18_n688(x)
- if (x < 1)
- fun_l19_n719(x)
- else
- fun_l19_n819(x)
- end
-end
-
-def fun_l18_n689(x)
- if (x < 1)
- fun_l19_n872(x)
- else
- fun_l19_n944(x)
- end
-end
-
-def fun_l18_n690(x)
- if (x < 1)
- fun_l19_n352(x)
- else
- fun_l19_n49(x)
- end
-end
-
-def fun_l18_n691(x)
- if (x < 1)
- fun_l19_n438(x)
- else
- fun_l19_n592(x)
- end
-end
-
-def fun_l18_n692(x)
- if (x < 1)
- fun_l19_n717(x)
- else
- fun_l19_n30(x)
- end
-end
-
-def fun_l18_n693(x)
- if (x < 1)
- fun_l19_n132(x)
- else
- fun_l19_n830(x)
- end
-end
-
-def fun_l18_n694(x)
- if (x < 1)
- fun_l19_n17(x)
- else
- fun_l19_n649(x)
- end
-end
-
-def fun_l18_n695(x)
- if (x < 1)
- fun_l19_n883(x)
- else
- fun_l19_n812(x)
- end
-end
-
-def fun_l18_n696(x)
- if (x < 1)
- fun_l19_n354(x)
- else
- fun_l19_n927(x)
- end
-end
-
-def fun_l18_n697(x)
- if (x < 1)
- fun_l19_n534(x)
- else
- fun_l19_n192(x)
- end
-end
-
-def fun_l18_n698(x)
- if (x < 1)
- fun_l19_n911(x)
- else
- fun_l19_n386(x)
- end
-end
-
-def fun_l18_n699(x)
- if (x < 1)
- fun_l19_n1(x)
- else
- fun_l19_n253(x)
- end
-end
-
-def fun_l18_n700(x)
- if (x < 1)
- fun_l19_n318(x)
- else
- fun_l19_n323(x)
- end
-end
-
-def fun_l18_n701(x)
- if (x < 1)
- fun_l19_n158(x)
- else
- fun_l19_n61(x)
- end
-end
-
-def fun_l18_n702(x)
- if (x < 1)
- fun_l19_n719(x)
- else
- fun_l19_n842(x)
- end
-end
-
-def fun_l18_n703(x)
- if (x < 1)
- fun_l19_n918(x)
- else
- fun_l19_n231(x)
- end
-end
-
-def fun_l18_n704(x)
- if (x < 1)
- fun_l19_n136(x)
- else
- fun_l19_n28(x)
- end
-end
-
-def fun_l18_n705(x)
- if (x < 1)
- fun_l19_n451(x)
- else
- fun_l19_n328(x)
- end
-end
-
-def fun_l18_n706(x)
- if (x < 1)
- fun_l19_n182(x)
- else
- fun_l19_n434(x)
- end
-end
-
-def fun_l18_n707(x)
- if (x < 1)
- fun_l19_n368(x)
- else
- fun_l19_n302(x)
- end
-end
-
-def fun_l18_n708(x)
- if (x < 1)
- fun_l19_n370(x)
- else
- fun_l19_n291(x)
- end
-end
-
-def fun_l18_n709(x)
- if (x < 1)
- fun_l19_n104(x)
- else
- fun_l19_n530(x)
- end
-end
-
-def fun_l18_n710(x)
- if (x < 1)
- fun_l19_n712(x)
- else
- fun_l19_n325(x)
- end
-end
-
-def fun_l18_n711(x)
- if (x < 1)
- fun_l19_n555(x)
- else
- fun_l19_n299(x)
- end
-end
-
-def fun_l18_n712(x)
- if (x < 1)
- fun_l19_n40(x)
- else
- fun_l19_n342(x)
- end
-end
-
-def fun_l18_n713(x)
- if (x < 1)
- fun_l19_n871(x)
- else
- fun_l19_n72(x)
- end
-end
-
-def fun_l18_n714(x)
- if (x < 1)
- fun_l19_n137(x)
- else
- fun_l19_n195(x)
- end
-end
-
-def fun_l18_n715(x)
- if (x < 1)
- fun_l19_n534(x)
- else
- fun_l19_n613(x)
- end
-end
-
-def fun_l18_n716(x)
- if (x < 1)
- fun_l19_n591(x)
- else
- fun_l19_n899(x)
- end
-end
-
-def fun_l18_n717(x)
- if (x < 1)
- fun_l19_n103(x)
- else
- fun_l19_n333(x)
- end
-end
-
-def fun_l18_n718(x)
- if (x < 1)
- fun_l19_n470(x)
- else
- fun_l19_n576(x)
- end
-end
-
-def fun_l18_n719(x)
- if (x < 1)
- fun_l19_n494(x)
- else
- fun_l19_n765(x)
- end
-end
-
-def fun_l18_n720(x)
- if (x < 1)
- fun_l19_n317(x)
- else
- fun_l19_n720(x)
- end
-end
-
-def fun_l18_n721(x)
- if (x < 1)
- fun_l19_n567(x)
- else
- fun_l19_n280(x)
- end
-end
-
-def fun_l18_n722(x)
- if (x < 1)
- fun_l19_n642(x)
- else
- fun_l19_n700(x)
- end
-end
-
-def fun_l18_n723(x)
- if (x < 1)
- fun_l19_n775(x)
- else
- fun_l19_n239(x)
- end
-end
-
-def fun_l18_n724(x)
- if (x < 1)
- fun_l19_n346(x)
- else
- fun_l19_n974(x)
- end
-end
-
-def fun_l18_n725(x)
- if (x < 1)
- fun_l19_n509(x)
- else
- fun_l19_n90(x)
- end
-end
-
-def fun_l18_n726(x)
- if (x < 1)
- fun_l19_n834(x)
- else
- fun_l19_n793(x)
- end
-end
-
-def fun_l18_n727(x)
- if (x < 1)
- fun_l19_n588(x)
- else
- fun_l19_n895(x)
- end
-end
-
-def fun_l18_n728(x)
- if (x < 1)
- fun_l19_n18(x)
- else
- fun_l19_n218(x)
- end
-end
-
-def fun_l18_n729(x)
- if (x < 1)
- fun_l19_n109(x)
- else
- fun_l19_n970(x)
- end
-end
-
-def fun_l18_n730(x)
- if (x < 1)
- fun_l19_n721(x)
- else
- fun_l19_n81(x)
- end
-end
-
-def fun_l18_n731(x)
- if (x < 1)
- fun_l19_n935(x)
- else
- fun_l19_n652(x)
- end
-end
-
-def fun_l18_n732(x)
- if (x < 1)
- fun_l19_n821(x)
- else
- fun_l19_n32(x)
- end
-end
-
-def fun_l18_n733(x)
- if (x < 1)
- fun_l19_n189(x)
- else
- fun_l19_n469(x)
- end
-end
-
-def fun_l18_n734(x)
- if (x < 1)
- fun_l19_n11(x)
- else
- fun_l19_n741(x)
- end
-end
-
-def fun_l18_n735(x)
- if (x < 1)
- fun_l19_n575(x)
- else
- fun_l19_n679(x)
- end
-end
-
-def fun_l18_n736(x)
- if (x < 1)
- fun_l19_n442(x)
- else
- fun_l19_n652(x)
- end
-end
-
-def fun_l18_n737(x)
- if (x < 1)
- fun_l19_n22(x)
- else
- fun_l19_n950(x)
- end
-end
-
-def fun_l18_n738(x)
- if (x < 1)
- fun_l19_n605(x)
- else
- fun_l19_n16(x)
- end
-end
-
-def fun_l18_n739(x)
- if (x < 1)
- fun_l19_n888(x)
- else
- fun_l19_n873(x)
- end
-end
-
-def fun_l18_n740(x)
- if (x < 1)
- fun_l19_n355(x)
- else
- fun_l19_n558(x)
- end
-end
-
-def fun_l18_n741(x)
- if (x < 1)
- fun_l19_n171(x)
- else
- fun_l19_n513(x)
- end
-end
-
-def fun_l18_n742(x)
- if (x < 1)
- fun_l19_n843(x)
- else
- fun_l19_n833(x)
- end
-end
-
-def fun_l18_n743(x)
- if (x < 1)
- fun_l19_n774(x)
- else
- fun_l19_n992(x)
- end
-end
-
-def fun_l18_n744(x)
- if (x < 1)
- fun_l19_n505(x)
- else
- fun_l19_n353(x)
- end
-end
-
-def fun_l18_n745(x)
- if (x < 1)
- fun_l19_n93(x)
- else
- fun_l19_n476(x)
- end
-end
-
-def fun_l18_n746(x)
- if (x < 1)
- fun_l19_n555(x)
- else
- fun_l19_n233(x)
- end
-end
-
-def fun_l18_n747(x)
- if (x < 1)
- fun_l19_n639(x)
- else
- fun_l19_n239(x)
- end
-end
-
-def fun_l18_n748(x)
- if (x < 1)
- fun_l19_n318(x)
- else
- fun_l19_n342(x)
- end
-end
-
-def fun_l18_n749(x)
- if (x < 1)
- fun_l19_n80(x)
- else
- fun_l19_n252(x)
- end
-end
-
-def fun_l18_n750(x)
- if (x < 1)
- fun_l19_n546(x)
- else
- fun_l19_n57(x)
- end
-end
-
-def fun_l18_n751(x)
- if (x < 1)
- fun_l19_n620(x)
- else
- fun_l19_n732(x)
- end
-end
-
-def fun_l18_n752(x)
- if (x < 1)
- fun_l19_n870(x)
- else
- fun_l19_n696(x)
- end
-end
-
-def fun_l18_n753(x)
- if (x < 1)
- fun_l19_n633(x)
- else
- fun_l19_n547(x)
- end
-end
-
-def fun_l18_n754(x)
- if (x < 1)
- fun_l19_n860(x)
- else
- fun_l19_n70(x)
- end
-end
-
-def fun_l18_n755(x)
- if (x < 1)
- fun_l19_n4(x)
- else
- fun_l19_n560(x)
- end
-end
-
-def fun_l18_n756(x)
- if (x < 1)
- fun_l19_n227(x)
- else
- fun_l19_n189(x)
- end
-end
-
-def fun_l18_n757(x)
- if (x < 1)
- fun_l19_n560(x)
- else
- fun_l19_n467(x)
- end
-end
-
-def fun_l18_n758(x)
- if (x < 1)
- fun_l19_n777(x)
- else
- fun_l19_n761(x)
- end
-end
-
-def fun_l18_n759(x)
- if (x < 1)
- fun_l19_n626(x)
- else
- fun_l19_n391(x)
- end
-end
-
-def fun_l18_n760(x)
- if (x < 1)
- fun_l19_n989(x)
- else
- fun_l19_n629(x)
- end
-end
-
-def fun_l18_n761(x)
- if (x < 1)
- fun_l19_n509(x)
- else
- fun_l19_n268(x)
- end
-end
-
-def fun_l18_n762(x)
- if (x < 1)
- fun_l19_n49(x)
- else
- fun_l19_n149(x)
- end
-end
-
-def fun_l18_n763(x)
- if (x < 1)
- fun_l19_n614(x)
- else
- fun_l19_n490(x)
- end
-end
-
-def fun_l18_n764(x)
- if (x < 1)
- fun_l19_n7(x)
- else
- fun_l19_n686(x)
- end
-end
-
-def fun_l18_n765(x)
- if (x < 1)
- fun_l19_n93(x)
- else
- fun_l19_n334(x)
- end
-end
-
-def fun_l18_n766(x)
- if (x < 1)
- fun_l19_n30(x)
- else
- fun_l19_n396(x)
- end
-end
-
-def fun_l18_n767(x)
- if (x < 1)
- fun_l19_n437(x)
- else
- fun_l19_n614(x)
- end
-end
-
-def fun_l18_n768(x)
- if (x < 1)
- fun_l19_n168(x)
- else
- fun_l19_n915(x)
- end
-end
-
-def fun_l18_n769(x)
- if (x < 1)
- fun_l19_n465(x)
- else
- fun_l19_n816(x)
- end
-end
-
-def fun_l18_n770(x)
- if (x < 1)
- fun_l19_n692(x)
- else
- fun_l19_n772(x)
- end
-end
-
-def fun_l18_n771(x)
- if (x < 1)
- fun_l19_n196(x)
- else
- fun_l19_n812(x)
- end
-end
-
-def fun_l18_n772(x)
- if (x < 1)
- fun_l19_n785(x)
- else
- fun_l19_n592(x)
- end
-end
-
-def fun_l18_n773(x)
- if (x < 1)
- fun_l19_n649(x)
- else
- fun_l19_n50(x)
- end
-end
-
-def fun_l18_n774(x)
- if (x < 1)
- fun_l19_n102(x)
- else
- fun_l19_n843(x)
- end
-end
-
-def fun_l18_n775(x)
- if (x < 1)
- fun_l19_n856(x)
- else
- fun_l19_n805(x)
- end
-end
-
-def fun_l18_n776(x)
- if (x < 1)
- fun_l19_n449(x)
- else
- fun_l19_n425(x)
- end
-end
-
-def fun_l18_n777(x)
- if (x < 1)
- fun_l19_n855(x)
- else
- fun_l19_n345(x)
- end
-end
-
-def fun_l18_n778(x)
- if (x < 1)
- fun_l19_n714(x)
- else
- fun_l19_n499(x)
- end
-end
-
-def fun_l18_n779(x)
- if (x < 1)
- fun_l19_n131(x)
- else
- fun_l19_n396(x)
- end
-end
-
-def fun_l18_n780(x)
- if (x < 1)
- fun_l19_n709(x)
- else
- fun_l19_n851(x)
- end
-end
-
-def fun_l18_n781(x)
- if (x < 1)
- fun_l19_n104(x)
- else
- fun_l19_n569(x)
- end
-end
-
-def fun_l18_n782(x)
- if (x < 1)
- fun_l19_n121(x)
- else
- fun_l19_n690(x)
- end
-end
-
-def fun_l18_n783(x)
- if (x < 1)
- fun_l19_n72(x)
- else
- fun_l19_n522(x)
- end
-end
-
-def fun_l18_n784(x)
- if (x < 1)
- fun_l19_n212(x)
- else
- fun_l19_n199(x)
- end
-end
-
-def fun_l18_n785(x)
- if (x < 1)
- fun_l19_n168(x)
- else
- fun_l19_n948(x)
- end
-end
-
-def fun_l18_n786(x)
- if (x < 1)
- fun_l19_n288(x)
- else
- fun_l19_n631(x)
- end
-end
-
-def fun_l18_n787(x)
- if (x < 1)
- fun_l19_n713(x)
- else
- fun_l19_n232(x)
- end
-end
-
-def fun_l18_n788(x)
- if (x < 1)
- fun_l19_n6(x)
- else
- fun_l19_n725(x)
- end
-end
-
-def fun_l18_n789(x)
- if (x < 1)
- fun_l19_n893(x)
- else
- fun_l19_n677(x)
- end
-end
-
-def fun_l18_n790(x)
- if (x < 1)
- fun_l19_n734(x)
- else
- fun_l19_n589(x)
- end
-end
-
-def fun_l18_n791(x)
- if (x < 1)
- fun_l19_n369(x)
- else
- fun_l19_n710(x)
- end
-end
-
-def fun_l18_n792(x)
- if (x < 1)
- fun_l19_n373(x)
- else
- fun_l19_n226(x)
- end
-end
-
-def fun_l18_n793(x)
- if (x < 1)
- fun_l19_n651(x)
- else
- fun_l19_n292(x)
- end
-end
-
-def fun_l18_n794(x)
- if (x < 1)
- fun_l19_n625(x)
- else
- fun_l19_n494(x)
- end
-end
-
-def fun_l18_n795(x)
- if (x < 1)
- fun_l19_n463(x)
- else
- fun_l19_n113(x)
- end
-end
-
-def fun_l18_n796(x)
- if (x < 1)
- fun_l19_n857(x)
- else
- fun_l19_n561(x)
- end
-end
-
-def fun_l18_n797(x)
- if (x < 1)
- fun_l19_n845(x)
- else
- fun_l19_n598(x)
- end
-end
-
-def fun_l18_n798(x)
- if (x < 1)
- fun_l19_n606(x)
- else
- fun_l19_n822(x)
- end
-end
-
-def fun_l18_n799(x)
- if (x < 1)
- fun_l19_n649(x)
- else
- fun_l19_n610(x)
- end
-end
-
-def fun_l18_n800(x)
- if (x < 1)
- fun_l19_n619(x)
- else
- fun_l19_n753(x)
- end
-end
-
-def fun_l18_n801(x)
- if (x < 1)
- fun_l19_n947(x)
- else
- fun_l19_n665(x)
- end
-end
-
-def fun_l18_n802(x)
- if (x < 1)
- fun_l19_n869(x)
- else
- fun_l19_n928(x)
- end
-end
-
-def fun_l18_n803(x)
- if (x < 1)
- fun_l19_n568(x)
- else
- fun_l19_n624(x)
- end
-end
-
-def fun_l18_n804(x)
- if (x < 1)
- fun_l19_n724(x)
- else
- fun_l19_n104(x)
- end
-end
-
-def fun_l18_n805(x)
- if (x < 1)
- fun_l19_n687(x)
- else
- fun_l19_n906(x)
- end
-end
-
-def fun_l18_n806(x)
- if (x < 1)
- fun_l19_n387(x)
- else
- fun_l19_n317(x)
- end
-end
-
-def fun_l18_n807(x)
- if (x < 1)
- fun_l19_n433(x)
- else
- fun_l19_n211(x)
- end
-end
-
-def fun_l18_n808(x)
- if (x < 1)
- fun_l19_n574(x)
- else
- fun_l19_n848(x)
- end
-end
-
-def fun_l18_n809(x)
- if (x < 1)
- fun_l19_n929(x)
- else
- fun_l19_n751(x)
- end
-end
-
-def fun_l18_n810(x)
- if (x < 1)
- fun_l19_n24(x)
- else
- fun_l19_n97(x)
- end
-end
-
-def fun_l18_n811(x)
- if (x < 1)
- fun_l19_n503(x)
- else
- fun_l19_n173(x)
- end
-end
-
-def fun_l18_n812(x)
- if (x < 1)
- fun_l19_n431(x)
- else
- fun_l19_n553(x)
- end
-end
-
-def fun_l18_n813(x)
- if (x < 1)
- fun_l19_n215(x)
- else
- fun_l19_n920(x)
- end
-end
-
-def fun_l18_n814(x)
- if (x < 1)
- fun_l19_n952(x)
- else
- fun_l19_n484(x)
- end
-end
-
-def fun_l18_n815(x)
- if (x < 1)
- fun_l19_n253(x)
- else
- fun_l19_n20(x)
- end
-end
-
-def fun_l18_n816(x)
- if (x < 1)
- fun_l19_n853(x)
- else
- fun_l19_n902(x)
- end
-end
-
-def fun_l18_n817(x)
- if (x < 1)
- fun_l19_n606(x)
- else
- fun_l19_n732(x)
- end
-end
-
-def fun_l18_n818(x)
- if (x < 1)
- fun_l19_n227(x)
- else
- fun_l19_n908(x)
- end
-end
-
-def fun_l18_n819(x)
- if (x < 1)
- fun_l19_n423(x)
- else
- fun_l19_n511(x)
- end
-end
-
-def fun_l18_n820(x)
- if (x < 1)
- fun_l19_n25(x)
- else
- fun_l19_n939(x)
- end
-end
-
-def fun_l18_n821(x)
- if (x < 1)
- fun_l19_n709(x)
- else
- fun_l19_n776(x)
- end
-end
-
-def fun_l18_n822(x)
- if (x < 1)
- fun_l19_n539(x)
- else
- fun_l19_n41(x)
- end
-end
-
-def fun_l18_n823(x)
- if (x < 1)
- fun_l19_n764(x)
- else
- fun_l19_n240(x)
- end
-end
-
-def fun_l18_n824(x)
- if (x < 1)
- fun_l19_n508(x)
- else
- fun_l19_n505(x)
- end
-end
-
-def fun_l18_n825(x)
- if (x < 1)
- fun_l19_n788(x)
- else
- fun_l19_n245(x)
- end
-end
-
-def fun_l18_n826(x)
- if (x < 1)
- fun_l19_n315(x)
- else
- fun_l19_n391(x)
- end
-end
-
-def fun_l18_n827(x)
- if (x < 1)
- fun_l19_n210(x)
- else
- fun_l19_n17(x)
- end
-end
-
-def fun_l18_n828(x)
- if (x < 1)
- fun_l19_n726(x)
- else
- fun_l19_n57(x)
- end
-end
-
-def fun_l18_n829(x)
- if (x < 1)
- fun_l19_n228(x)
- else
- fun_l19_n44(x)
- end
-end
-
-def fun_l18_n830(x)
- if (x < 1)
- fun_l19_n5(x)
- else
- fun_l19_n110(x)
- end
-end
-
-def fun_l18_n831(x)
- if (x < 1)
- fun_l19_n409(x)
- else
- fun_l19_n874(x)
- end
-end
-
-def fun_l18_n832(x)
- if (x < 1)
- fun_l19_n710(x)
- else
- fun_l19_n960(x)
- end
-end
-
-def fun_l18_n833(x)
- if (x < 1)
- fun_l19_n92(x)
- else
- fun_l19_n869(x)
- end
-end
-
-def fun_l18_n834(x)
- if (x < 1)
- fun_l19_n420(x)
- else
- fun_l19_n616(x)
- end
-end
-
-def fun_l18_n835(x)
- if (x < 1)
- fun_l19_n705(x)
- else
- fun_l19_n727(x)
- end
-end
-
-def fun_l18_n836(x)
- if (x < 1)
- fun_l19_n78(x)
- else
- fun_l19_n211(x)
- end
-end
-
-def fun_l18_n837(x)
- if (x < 1)
- fun_l19_n214(x)
- else
- fun_l19_n504(x)
- end
-end
-
-def fun_l18_n838(x)
- if (x < 1)
- fun_l19_n320(x)
- else
- fun_l19_n303(x)
- end
-end
-
-def fun_l18_n839(x)
- if (x < 1)
- fun_l19_n168(x)
- else
- fun_l19_n677(x)
- end
-end
-
-def fun_l18_n840(x)
- if (x < 1)
- fun_l19_n523(x)
- else
- fun_l19_n183(x)
- end
-end
-
-def fun_l18_n841(x)
- if (x < 1)
- fun_l19_n757(x)
- else
- fun_l19_n554(x)
- end
-end
-
-def fun_l18_n842(x)
- if (x < 1)
- fun_l19_n309(x)
- else
- fun_l19_n70(x)
- end
-end
-
-def fun_l18_n843(x)
- if (x < 1)
- fun_l19_n316(x)
- else
- fun_l19_n758(x)
- end
-end
-
-def fun_l18_n844(x)
- if (x < 1)
- fun_l19_n459(x)
- else
- fun_l19_n28(x)
- end
-end
-
-def fun_l18_n845(x)
- if (x < 1)
- fun_l19_n458(x)
- else
- fun_l19_n597(x)
- end
-end
-
-def fun_l18_n846(x)
- if (x < 1)
- fun_l19_n662(x)
- else
- fun_l19_n480(x)
- end
-end
-
-def fun_l18_n847(x)
- if (x < 1)
- fun_l19_n967(x)
- else
- fun_l19_n764(x)
- end
-end
-
-def fun_l18_n848(x)
- if (x < 1)
- fun_l19_n248(x)
- else
- fun_l19_n459(x)
- end
-end
-
-def fun_l18_n849(x)
- if (x < 1)
- fun_l19_n306(x)
- else
- fun_l19_n892(x)
- end
-end
-
-def fun_l18_n850(x)
- if (x < 1)
- fun_l19_n541(x)
- else
- fun_l19_n745(x)
- end
-end
-
-def fun_l18_n851(x)
- if (x < 1)
- fun_l19_n974(x)
- else
- fun_l19_n593(x)
- end
-end
-
-def fun_l18_n852(x)
- if (x < 1)
- fun_l19_n564(x)
- else
- fun_l19_n598(x)
- end
-end
-
-def fun_l18_n853(x)
- if (x < 1)
- fun_l19_n447(x)
- else
- fun_l19_n207(x)
- end
-end
-
-def fun_l18_n854(x)
- if (x < 1)
- fun_l19_n261(x)
- else
- fun_l19_n35(x)
- end
-end
-
-def fun_l18_n855(x)
- if (x < 1)
- fun_l19_n597(x)
- else
- fun_l19_n898(x)
- end
-end
-
-def fun_l18_n856(x)
- if (x < 1)
- fun_l19_n97(x)
- else
- fun_l19_n109(x)
- end
-end
-
-def fun_l18_n857(x)
- if (x < 1)
- fun_l19_n487(x)
- else
- fun_l19_n423(x)
- end
-end
-
-def fun_l18_n858(x)
- if (x < 1)
- fun_l19_n804(x)
- else
- fun_l19_n250(x)
- end
-end
-
-def fun_l18_n859(x)
- if (x < 1)
- fun_l19_n935(x)
- else
- fun_l19_n952(x)
- end
-end
-
-def fun_l18_n860(x)
- if (x < 1)
- fun_l19_n149(x)
- else
- fun_l19_n586(x)
- end
-end
-
-def fun_l18_n861(x)
- if (x < 1)
- fun_l19_n750(x)
- else
- fun_l19_n962(x)
- end
-end
-
-def fun_l18_n862(x)
- if (x < 1)
- fun_l19_n396(x)
- else
- fun_l19_n324(x)
- end
-end
-
-def fun_l18_n863(x)
- if (x < 1)
- fun_l19_n231(x)
- else
- fun_l19_n897(x)
- end
-end
-
-def fun_l18_n864(x)
- if (x < 1)
- fun_l19_n239(x)
- else
- fun_l19_n118(x)
- end
-end
-
-def fun_l18_n865(x)
- if (x < 1)
- fun_l19_n221(x)
- else
- fun_l19_n771(x)
- end
-end
-
-def fun_l18_n866(x)
- if (x < 1)
- fun_l19_n258(x)
- else
- fun_l19_n868(x)
- end
-end
-
-def fun_l18_n867(x)
- if (x < 1)
- fun_l19_n629(x)
- else
- fun_l19_n491(x)
- end
-end
-
-def fun_l18_n868(x)
- if (x < 1)
- fun_l19_n685(x)
- else
- fun_l19_n532(x)
- end
-end
-
-def fun_l18_n869(x)
- if (x < 1)
- fun_l19_n45(x)
- else
- fun_l19_n769(x)
- end
-end
-
-def fun_l18_n870(x)
- if (x < 1)
- fun_l19_n249(x)
- else
- fun_l19_n677(x)
- end
-end
-
-def fun_l18_n871(x)
- if (x < 1)
- fun_l19_n685(x)
- else
- fun_l19_n953(x)
- end
-end
-
-def fun_l18_n872(x)
- if (x < 1)
- fun_l19_n270(x)
- else
- fun_l19_n208(x)
- end
-end
-
-def fun_l18_n873(x)
- if (x < 1)
- fun_l19_n195(x)
- else
- fun_l19_n811(x)
- end
-end
-
-def fun_l18_n874(x)
- if (x < 1)
- fun_l19_n700(x)
- else
- fun_l19_n331(x)
- end
-end
-
-def fun_l18_n875(x)
- if (x < 1)
- fun_l19_n209(x)
- else
- fun_l19_n304(x)
- end
-end
-
-def fun_l18_n876(x)
- if (x < 1)
- fun_l19_n897(x)
- else
- fun_l19_n98(x)
- end
-end
-
-def fun_l18_n877(x)
- if (x < 1)
- fun_l19_n400(x)
- else
- fun_l19_n325(x)
- end
-end
-
-def fun_l18_n878(x)
- if (x < 1)
- fun_l19_n312(x)
- else
- fun_l19_n872(x)
- end
-end
-
-def fun_l18_n879(x)
- if (x < 1)
- fun_l19_n669(x)
- else
- fun_l19_n729(x)
- end
-end
-
-def fun_l18_n880(x)
- if (x < 1)
- fun_l19_n644(x)
- else
- fun_l19_n243(x)
- end
-end
-
-def fun_l18_n881(x)
- if (x < 1)
- fun_l19_n440(x)
- else
- fun_l19_n495(x)
- end
-end
-
-def fun_l18_n882(x)
- if (x < 1)
- fun_l19_n694(x)
- else
- fun_l19_n189(x)
- end
-end
-
-def fun_l18_n883(x)
- if (x < 1)
- fun_l19_n610(x)
- else
- fun_l19_n802(x)
- end
-end
-
-def fun_l18_n884(x)
- if (x < 1)
- fun_l19_n69(x)
- else
- fun_l19_n129(x)
- end
-end
-
-def fun_l18_n885(x)
- if (x < 1)
- fun_l19_n837(x)
- else
- fun_l19_n521(x)
- end
-end
-
-def fun_l18_n886(x)
- if (x < 1)
- fun_l19_n204(x)
- else
- fun_l19_n284(x)
- end
-end
-
-def fun_l18_n887(x)
- if (x < 1)
- fun_l19_n2(x)
- else
- fun_l19_n378(x)
- end
-end
-
-def fun_l18_n888(x)
- if (x < 1)
- fun_l19_n410(x)
- else
- fun_l19_n871(x)
- end
-end
-
-def fun_l18_n889(x)
- if (x < 1)
- fun_l19_n976(x)
- else
- fun_l19_n581(x)
- end
-end
-
-def fun_l18_n890(x)
- if (x < 1)
- fun_l19_n274(x)
- else
- fun_l19_n57(x)
- end
-end
-
-def fun_l18_n891(x)
- if (x < 1)
- fun_l19_n983(x)
- else
- fun_l19_n900(x)
- end
-end
-
-def fun_l18_n892(x)
- if (x < 1)
- fun_l19_n351(x)
- else
- fun_l19_n621(x)
- end
-end
-
-def fun_l18_n893(x)
- if (x < 1)
- fun_l19_n539(x)
- else
- fun_l19_n847(x)
- end
-end
-
-def fun_l18_n894(x)
- if (x < 1)
- fun_l19_n56(x)
- else
- fun_l19_n918(x)
- end
-end
-
-def fun_l18_n895(x)
- if (x < 1)
- fun_l19_n906(x)
- else
- fun_l19_n509(x)
- end
-end
-
-def fun_l18_n896(x)
- if (x < 1)
- fun_l19_n64(x)
- else
- fun_l19_n269(x)
- end
-end
-
-def fun_l18_n897(x)
- if (x < 1)
- fun_l19_n348(x)
- else
- fun_l19_n983(x)
- end
-end
-
-def fun_l18_n898(x)
- if (x < 1)
- fun_l19_n699(x)
- else
- fun_l19_n322(x)
- end
-end
-
-def fun_l18_n899(x)
- if (x < 1)
- fun_l19_n754(x)
- else
- fun_l19_n608(x)
- end
-end
-
-def fun_l18_n900(x)
- if (x < 1)
- fun_l19_n530(x)
- else
- fun_l19_n919(x)
- end
-end
-
-def fun_l18_n901(x)
- if (x < 1)
- fun_l19_n359(x)
- else
- fun_l19_n739(x)
- end
-end
-
-def fun_l18_n902(x)
- if (x < 1)
- fun_l19_n647(x)
- else
- fun_l19_n389(x)
- end
-end
-
-def fun_l18_n903(x)
- if (x < 1)
- fun_l19_n908(x)
- else
- fun_l19_n680(x)
- end
-end
-
-def fun_l18_n904(x)
- if (x < 1)
- fun_l19_n78(x)
- else
- fun_l19_n512(x)
- end
-end
-
-def fun_l18_n905(x)
- if (x < 1)
- fun_l19_n514(x)
- else
- fun_l19_n250(x)
- end
-end
-
-def fun_l18_n906(x)
- if (x < 1)
- fun_l19_n320(x)
- else
- fun_l19_n393(x)
- end
-end
-
-def fun_l18_n907(x)
- if (x < 1)
- fun_l19_n666(x)
- else
- fun_l19_n846(x)
- end
-end
-
-def fun_l18_n908(x)
- if (x < 1)
- fun_l19_n757(x)
- else
- fun_l19_n194(x)
- end
-end
-
-def fun_l18_n909(x)
- if (x < 1)
- fun_l19_n386(x)
- else
- fun_l19_n965(x)
- end
-end
-
-def fun_l18_n910(x)
- if (x < 1)
- fun_l19_n561(x)
- else
- fun_l19_n897(x)
- end
-end
-
-def fun_l18_n911(x)
- if (x < 1)
- fun_l19_n281(x)
- else
- fun_l19_n960(x)
- end
-end
-
-def fun_l18_n912(x)
- if (x < 1)
- fun_l19_n215(x)
- else
- fun_l19_n54(x)
- end
-end
-
-def fun_l18_n913(x)
- if (x < 1)
- fun_l19_n561(x)
- else
- fun_l19_n353(x)
- end
-end
-
-def fun_l18_n914(x)
- if (x < 1)
- fun_l19_n780(x)
- else
- fun_l19_n924(x)
- end
-end
-
-def fun_l18_n915(x)
- if (x < 1)
- fun_l19_n663(x)
- else
- fun_l19_n112(x)
- end
-end
-
-def fun_l18_n916(x)
- if (x < 1)
- fun_l19_n15(x)
- else
- fun_l19_n342(x)
- end
-end
-
-def fun_l18_n917(x)
- if (x < 1)
- fun_l19_n226(x)
- else
- fun_l19_n337(x)
- end
-end
-
-def fun_l18_n918(x)
- if (x < 1)
- fun_l19_n477(x)
- else
- fun_l19_n12(x)
- end
-end
-
-def fun_l18_n919(x)
- if (x < 1)
- fun_l19_n495(x)
- else
- fun_l19_n721(x)
- end
-end
-
-def fun_l18_n920(x)
- if (x < 1)
- fun_l19_n551(x)
- else
- fun_l19_n626(x)
- end
-end
-
-def fun_l18_n921(x)
- if (x < 1)
- fun_l19_n491(x)
- else
- fun_l19_n442(x)
- end
-end
-
-def fun_l18_n922(x)
- if (x < 1)
- fun_l19_n72(x)
- else
- fun_l19_n165(x)
- end
-end
-
-def fun_l18_n923(x)
- if (x < 1)
- fun_l19_n475(x)
- else
- fun_l19_n381(x)
- end
-end
-
-def fun_l18_n924(x)
- if (x < 1)
- fun_l19_n655(x)
- else
- fun_l19_n95(x)
- end
-end
-
-def fun_l18_n925(x)
- if (x < 1)
- fun_l19_n882(x)
- else
- fun_l19_n888(x)
- end
-end
-
-def fun_l18_n926(x)
- if (x < 1)
- fun_l19_n620(x)
- else
- fun_l19_n85(x)
- end
-end
-
-def fun_l18_n927(x)
- if (x < 1)
- fun_l19_n13(x)
- else
- fun_l19_n776(x)
- end
-end
-
-def fun_l18_n928(x)
- if (x < 1)
- fun_l19_n797(x)
- else
- fun_l19_n547(x)
- end
-end
-
-def fun_l18_n929(x)
- if (x < 1)
- fun_l19_n34(x)
- else
- fun_l19_n753(x)
- end
-end
-
-def fun_l18_n930(x)
- if (x < 1)
- fun_l19_n894(x)
- else
- fun_l19_n527(x)
- end
-end
-
-def fun_l18_n931(x)
- if (x < 1)
- fun_l19_n951(x)
- else
- fun_l19_n261(x)
- end
-end
-
-def fun_l18_n932(x)
- if (x < 1)
- fun_l19_n178(x)
- else
- fun_l19_n365(x)
- end
-end
-
-def fun_l18_n933(x)
- if (x < 1)
- fun_l19_n813(x)
- else
- fun_l19_n404(x)
- end
-end
-
-def fun_l18_n934(x)
- if (x < 1)
- fun_l19_n920(x)
- else
- fun_l19_n674(x)
- end
-end
-
-def fun_l18_n935(x)
- if (x < 1)
- fun_l19_n155(x)
- else
- fun_l19_n250(x)
- end
-end
-
-def fun_l18_n936(x)
- if (x < 1)
- fun_l19_n376(x)
- else
- fun_l19_n29(x)
- end
-end
-
-def fun_l18_n937(x)
- if (x < 1)
- fun_l19_n104(x)
- else
- fun_l19_n802(x)
- end
-end
-
-def fun_l18_n938(x)
- if (x < 1)
- fun_l19_n340(x)
- else
- fun_l19_n424(x)
- end
-end
-
-def fun_l18_n939(x)
- if (x < 1)
- fun_l19_n590(x)
- else
- fun_l19_n525(x)
- end
-end
-
-def fun_l18_n940(x)
- if (x < 1)
- fun_l19_n15(x)
- else
- fun_l19_n48(x)
- end
-end
-
-def fun_l18_n941(x)
- if (x < 1)
- fun_l19_n83(x)
- else
- fun_l19_n975(x)
- end
-end
-
-def fun_l18_n942(x)
- if (x < 1)
- fun_l19_n219(x)
- else
- fun_l19_n173(x)
- end
-end
-
-def fun_l18_n943(x)
- if (x < 1)
- fun_l19_n457(x)
- else
- fun_l19_n956(x)
- end
-end
-
-def fun_l18_n944(x)
- if (x < 1)
- fun_l19_n900(x)
- else
- fun_l19_n363(x)
- end
-end
-
-def fun_l18_n945(x)
- if (x < 1)
- fun_l19_n973(x)
- else
- fun_l19_n279(x)
- end
-end
-
-def fun_l18_n946(x)
- if (x < 1)
- fun_l19_n155(x)
- else
- fun_l19_n554(x)
- end
-end
-
-def fun_l18_n947(x)
- if (x < 1)
- fun_l19_n744(x)
- else
- fun_l19_n854(x)
- end
-end
-
-def fun_l18_n948(x)
- if (x < 1)
- fun_l19_n574(x)
- else
- fun_l19_n385(x)
- end
-end
-
-def fun_l18_n949(x)
- if (x < 1)
- fun_l19_n447(x)
- else
- fun_l19_n93(x)
- end
-end
-
-def fun_l18_n950(x)
- if (x < 1)
- fun_l19_n621(x)
- else
- fun_l19_n467(x)
- end
-end
-
-def fun_l18_n951(x)
- if (x < 1)
- fun_l19_n409(x)
- else
- fun_l19_n260(x)
- end
-end
-
-def fun_l18_n952(x)
- if (x < 1)
- fun_l19_n992(x)
- else
- fun_l19_n728(x)
- end
-end
-
-def fun_l18_n953(x)
- if (x < 1)
- fun_l19_n760(x)
- else
- fun_l19_n724(x)
- end
-end
-
-def fun_l18_n954(x)
- if (x < 1)
- fun_l19_n567(x)
- else
- fun_l19_n857(x)
- end
-end
-
-def fun_l18_n955(x)
- if (x < 1)
- fun_l19_n225(x)
- else
- fun_l19_n132(x)
- end
-end
-
-def fun_l18_n956(x)
- if (x < 1)
- fun_l19_n856(x)
- else
- fun_l19_n449(x)
- end
-end
-
-def fun_l18_n957(x)
- if (x < 1)
- fun_l19_n200(x)
- else
- fun_l19_n216(x)
- end
-end
-
-def fun_l18_n958(x)
- if (x < 1)
- fun_l19_n684(x)
- else
- fun_l19_n151(x)
- end
-end
-
-def fun_l18_n959(x)
- if (x < 1)
- fun_l19_n989(x)
- else
- fun_l19_n137(x)
- end
-end
-
-def fun_l18_n960(x)
- if (x < 1)
- fun_l19_n207(x)
- else
- fun_l19_n736(x)
- end
-end
-
-def fun_l18_n961(x)
- if (x < 1)
- fun_l19_n984(x)
- else
- fun_l19_n840(x)
- end
-end
-
-def fun_l18_n962(x)
- if (x < 1)
- fun_l19_n367(x)
- else
- fun_l19_n155(x)
- end
-end
-
-def fun_l18_n963(x)
- if (x < 1)
- fun_l19_n202(x)
- else
- fun_l19_n237(x)
- end
-end
-
-def fun_l18_n964(x)
- if (x < 1)
- fun_l19_n932(x)
- else
- fun_l19_n167(x)
- end
-end
-
-def fun_l18_n965(x)
- if (x < 1)
- fun_l19_n269(x)
- else
- fun_l19_n105(x)
- end
-end
-
-def fun_l18_n966(x)
- if (x < 1)
- fun_l19_n775(x)
- else
- fun_l19_n776(x)
- end
-end
-
-def fun_l18_n967(x)
- if (x < 1)
- fun_l19_n636(x)
- else
- fun_l19_n460(x)
- end
-end
-
-def fun_l18_n968(x)
- if (x < 1)
- fun_l19_n335(x)
- else
- fun_l19_n4(x)
- end
-end
-
-def fun_l18_n969(x)
- if (x < 1)
- fun_l19_n987(x)
- else
- fun_l19_n935(x)
- end
-end
-
-def fun_l18_n970(x)
- if (x < 1)
- fun_l19_n692(x)
- else
- fun_l19_n20(x)
- end
-end
-
-def fun_l18_n971(x)
- if (x < 1)
- fun_l19_n805(x)
- else
- fun_l19_n139(x)
- end
-end
-
-def fun_l18_n972(x)
- if (x < 1)
- fun_l19_n53(x)
- else
- fun_l19_n539(x)
- end
-end
-
-def fun_l18_n973(x)
- if (x < 1)
- fun_l19_n620(x)
- else
- fun_l19_n680(x)
- end
-end
-
-def fun_l18_n974(x)
- if (x < 1)
- fun_l19_n662(x)
- else
- fun_l19_n580(x)
- end
-end
-
-def fun_l18_n975(x)
- if (x < 1)
- fun_l19_n401(x)
- else
- fun_l19_n428(x)
- end
-end
-
-def fun_l18_n976(x)
- if (x < 1)
- fun_l19_n367(x)
- else
- fun_l19_n794(x)
- end
-end
-
-def fun_l18_n977(x)
- if (x < 1)
- fun_l19_n204(x)
- else
- fun_l19_n258(x)
- end
-end
-
-def fun_l18_n978(x)
- if (x < 1)
- fun_l19_n868(x)
- else
- fun_l19_n300(x)
- end
-end
-
-def fun_l18_n979(x)
- if (x < 1)
- fun_l19_n245(x)
- else
- fun_l19_n460(x)
- end
-end
-
-def fun_l18_n980(x)
- if (x < 1)
- fun_l19_n965(x)
- else
- fun_l19_n639(x)
- end
-end
-
-def fun_l18_n981(x)
- if (x < 1)
- fun_l19_n903(x)
- else
- fun_l19_n139(x)
- end
-end
-
-def fun_l18_n982(x)
- if (x < 1)
- fun_l19_n890(x)
- else
- fun_l19_n497(x)
- end
-end
-
-def fun_l18_n983(x)
- if (x < 1)
- fun_l19_n723(x)
- else
- fun_l19_n705(x)
- end
-end
-
-def fun_l18_n984(x)
- if (x < 1)
- fun_l19_n592(x)
- else
- fun_l19_n965(x)
- end
-end
-
-def fun_l18_n985(x)
- if (x < 1)
- fun_l19_n660(x)
- else
- fun_l19_n985(x)
- end
-end
-
-def fun_l18_n986(x)
- if (x < 1)
- fun_l19_n230(x)
- else
- fun_l19_n447(x)
- end
-end
-
-def fun_l18_n987(x)
- if (x < 1)
- fun_l19_n875(x)
- else
- fun_l19_n86(x)
- end
-end
-
-def fun_l18_n988(x)
- if (x < 1)
- fun_l19_n864(x)
- else
- fun_l19_n460(x)
- end
-end
-
-def fun_l18_n989(x)
- if (x < 1)
- fun_l19_n834(x)
- else
- fun_l19_n628(x)
- end
-end
-
-def fun_l18_n990(x)
- if (x < 1)
- fun_l19_n578(x)
- else
- fun_l19_n160(x)
- end
-end
-
-def fun_l18_n991(x)
- if (x < 1)
- fun_l19_n58(x)
- else
- fun_l19_n839(x)
- end
-end
-
-def fun_l18_n992(x)
- if (x < 1)
- fun_l19_n282(x)
- else
- fun_l19_n864(x)
- end
-end
-
-def fun_l18_n993(x)
- if (x < 1)
- fun_l19_n957(x)
- else
- fun_l19_n280(x)
- end
-end
-
-def fun_l18_n994(x)
- if (x < 1)
- fun_l19_n184(x)
- else
- fun_l19_n741(x)
- end
-end
-
-def fun_l18_n995(x)
- if (x < 1)
- fun_l19_n458(x)
- else
- fun_l19_n802(x)
- end
-end
-
-def fun_l18_n996(x)
- if (x < 1)
- fun_l19_n260(x)
- else
- fun_l19_n840(x)
- end
-end
-
-def fun_l18_n997(x)
- if (x < 1)
- fun_l19_n500(x)
- else
- fun_l19_n142(x)
- end
-end
-
-def fun_l18_n998(x)
- if (x < 1)
- fun_l19_n712(x)
- else
- fun_l19_n736(x)
- end
-end
-
-def fun_l18_n999(x)
- if (x < 1)
- fun_l19_n366(x)
- else
- fun_l19_n726(x)
- end
-end
-
-def fun_l19_n0(x)
- if (x < 1)
- fun_l20_n238(x)
- else
- fun_l20_n685(x)
- end
-end
-
-def fun_l19_n1(x)
- if (x < 1)
- fun_l20_n892(x)
- else
- fun_l20_n786(x)
- end
-end
-
-def fun_l19_n2(x)
- if (x < 1)
- fun_l20_n99(x)
- else
- fun_l20_n337(x)
- end
-end
-
-def fun_l19_n3(x)
- if (x < 1)
- fun_l20_n40(x)
- else
- fun_l20_n773(x)
- end
-end
-
-def fun_l19_n4(x)
- if (x < 1)
- fun_l20_n815(x)
- else
- fun_l20_n576(x)
- end
-end
-
-def fun_l19_n5(x)
- if (x < 1)
- fun_l20_n294(x)
- else
- fun_l20_n362(x)
- end
-end
-
-def fun_l19_n6(x)
- if (x < 1)
- fun_l20_n352(x)
- else
- fun_l20_n263(x)
- end
-end
-
-def fun_l19_n7(x)
- if (x < 1)
- fun_l20_n920(x)
- else
- fun_l20_n164(x)
- end
-end
-
-def fun_l19_n8(x)
- if (x < 1)
- fun_l20_n313(x)
- else
- fun_l20_n663(x)
- end
-end
-
-def fun_l19_n9(x)
- if (x < 1)
- fun_l20_n261(x)
- else
- fun_l20_n769(x)
- end
-end
-
-def fun_l19_n10(x)
- if (x < 1)
- fun_l20_n85(x)
- else
- fun_l20_n243(x)
- end
-end
-
-def fun_l19_n11(x)
- if (x < 1)
- fun_l20_n560(x)
- else
- fun_l20_n969(x)
- end
-end
-
-def fun_l19_n12(x)
- if (x < 1)
- fun_l20_n954(x)
- else
- fun_l20_n340(x)
- end
-end
-
-def fun_l19_n13(x)
- if (x < 1)
- fun_l20_n548(x)
- else
- fun_l20_n689(x)
- end
-end
-
-def fun_l19_n14(x)
- if (x < 1)
- fun_l20_n577(x)
- else
- fun_l20_n954(x)
- end
-end
-
-def fun_l19_n15(x)
- if (x < 1)
- fun_l20_n43(x)
- else
- fun_l20_n3(x)
- end
-end
-
-def fun_l19_n16(x)
- if (x < 1)
- fun_l20_n15(x)
- else
- fun_l20_n281(x)
- end
-end
-
-def fun_l19_n17(x)
- if (x < 1)
- fun_l20_n439(x)
- else
- fun_l20_n26(x)
- end
-end
-
-def fun_l19_n18(x)
- if (x < 1)
- fun_l20_n534(x)
- else
- fun_l20_n419(x)
- end
-end
-
-def fun_l19_n19(x)
- if (x < 1)
- fun_l20_n456(x)
- else
- fun_l20_n959(x)
- end
-end
-
-def fun_l19_n20(x)
- if (x < 1)
- fun_l20_n706(x)
- else
- fun_l20_n404(x)
- end
-end
-
-def fun_l19_n21(x)
- if (x < 1)
- fun_l20_n559(x)
- else
- fun_l20_n61(x)
- end
-end
-
-def fun_l19_n22(x)
- if (x < 1)
- fun_l20_n986(x)
- else
- fun_l20_n202(x)
- end
-end
-
-def fun_l19_n23(x)
- if (x < 1)
- fun_l20_n935(x)
- else
- fun_l20_n804(x)
- end
-end
-
-def fun_l19_n24(x)
- if (x < 1)
- fun_l20_n775(x)
- else
- fun_l20_n909(x)
- end
-end
-
-def fun_l19_n25(x)
- if (x < 1)
- fun_l20_n28(x)
- else
- fun_l20_n631(x)
- end
-end
-
-def fun_l19_n26(x)
- if (x < 1)
- fun_l20_n257(x)
- else
- fun_l20_n822(x)
- end
-end
-
-def fun_l19_n27(x)
- if (x < 1)
- fun_l20_n198(x)
- else
- fun_l20_n1(x)
- end
-end
-
-def fun_l19_n28(x)
- if (x < 1)
- fun_l20_n534(x)
- else
- fun_l20_n46(x)
- end
-end
-
-def fun_l19_n29(x)
- if (x < 1)
- fun_l20_n880(x)
- else
- fun_l20_n995(x)
- end
-end
-
-def fun_l19_n30(x)
- if (x < 1)
- fun_l20_n953(x)
- else
- fun_l20_n367(x)
- end
-end
-
-def fun_l19_n31(x)
- if (x < 1)
- fun_l20_n165(x)
- else
- fun_l20_n404(x)
- end
-end
-
-def fun_l19_n32(x)
- if (x < 1)
- fun_l20_n752(x)
- else
- fun_l20_n570(x)
- end
-end
-
-def fun_l19_n33(x)
- if (x < 1)
- fun_l20_n973(x)
- else
- fun_l20_n357(x)
- end
-end
-
-def fun_l19_n34(x)
- if (x < 1)
- fun_l20_n897(x)
- else
- fun_l20_n501(x)
- end
-end
-
-def fun_l19_n35(x)
- if (x < 1)
- fun_l20_n607(x)
- else
- fun_l20_n679(x)
- end
-end
-
-def fun_l19_n36(x)
- if (x < 1)
- fun_l20_n870(x)
- else
- fun_l20_n590(x)
- end
-end
-
-def fun_l19_n37(x)
- if (x < 1)
- fun_l20_n620(x)
- else
- fun_l20_n462(x)
- end
-end
-
-def fun_l19_n38(x)
- if (x < 1)
- fun_l20_n176(x)
- else
- fun_l20_n891(x)
- end
-end
-
-def fun_l19_n39(x)
- if (x < 1)
- fun_l20_n850(x)
- else
- fun_l20_n730(x)
- end
-end
-
-def fun_l19_n40(x)
- if (x < 1)
- fun_l20_n193(x)
- else
- fun_l20_n635(x)
- end
-end
-
-def fun_l19_n41(x)
- if (x < 1)
- fun_l20_n443(x)
- else
- fun_l20_n398(x)
- end
-end
-
-def fun_l19_n42(x)
- if (x < 1)
- fun_l20_n324(x)
- else
- fun_l20_n566(x)
- end
-end
-
-def fun_l19_n43(x)
- if (x < 1)
- fun_l20_n817(x)
- else
- fun_l20_n791(x)
- end
-end
-
-def fun_l19_n44(x)
- if (x < 1)
- fun_l20_n46(x)
- else
- fun_l20_n375(x)
- end
-end
-
-def fun_l19_n45(x)
- if (x < 1)
- fun_l20_n504(x)
- else
- fun_l20_n64(x)
- end
-end
-
-def fun_l19_n46(x)
- if (x < 1)
- fun_l20_n174(x)
- else
- fun_l20_n621(x)
- end
-end
-
-def fun_l19_n47(x)
- if (x < 1)
- fun_l20_n756(x)
- else
- fun_l20_n857(x)
- end
-end
-
-def fun_l19_n48(x)
- if (x < 1)
- fun_l20_n635(x)
- else
- fun_l20_n216(x)
- end
-end
-
-def fun_l19_n49(x)
- if (x < 1)
- fun_l20_n806(x)
- else
- fun_l20_n291(x)
- end
-end
-
-def fun_l19_n50(x)
- if (x < 1)
- fun_l20_n998(x)
- else
- fun_l20_n46(x)
- end
-end
-
-def fun_l19_n51(x)
- if (x < 1)
- fun_l20_n685(x)
- else
- fun_l20_n968(x)
- end
-end
-
-def fun_l19_n52(x)
- if (x < 1)
- fun_l20_n906(x)
- else
- fun_l20_n788(x)
- end
-end
-
-def fun_l19_n53(x)
- if (x < 1)
- fun_l20_n814(x)
- else
- fun_l20_n343(x)
- end
-end
-
-def fun_l19_n54(x)
- if (x < 1)
- fun_l20_n320(x)
- else
- fun_l20_n293(x)
- end
-end
-
-def fun_l19_n55(x)
- if (x < 1)
- fun_l20_n608(x)
- else
- fun_l20_n958(x)
- end
-end
-
-def fun_l19_n56(x)
- if (x < 1)
- fun_l20_n83(x)
- else
- fun_l20_n839(x)
- end
-end
-
-def fun_l19_n57(x)
- if (x < 1)
- fun_l20_n618(x)
- else
- fun_l20_n483(x)
- end
-end
-
-def fun_l19_n58(x)
- if (x < 1)
- fun_l20_n647(x)
- else
- fun_l20_n782(x)
- end
-end
-
-def fun_l19_n59(x)
- if (x < 1)
- fun_l20_n664(x)
- else
- fun_l20_n3(x)
- end
-end
-
-def fun_l19_n60(x)
- if (x < 1)
- fun_l20_n556(x)
- else
- fun_l20_n185(x)
- end
-end
-
-def fun_l19_n61(x)
- if (x < 1)
- fun_l20_n657(x)
- else
- fun_l20_n162(x)
- end
-end
-
-def fun_l19_n62(x)
- if (x < 1)
- fun_l20_n668(x)
- else
- fun_l20_n585(x)
- end
-end
-
-def fun_l19_n63(x)
- if (x < 1)
- fun_l20_n913(x)
- else
- fun_l20_n855(x)
- end
-end
-
-def fun_l19_n64(x)
- if (x < 1)
- fun_l20_n331(x)
- else
- fun_l20_n71(x)
- end
-end
-
-def fun_l19_n65(x)
- if (x < 1)
- fun_l20_n321(x)
- else
- fun_l20_n314(x)
- end
-end
-
-def fun_l19_n66(x)
- if (x < 1)
- fun_l20_n512(x)
- else
- fun_l20_n607(x)
- end
-end
-
-def fun_l19_n67(x)
- if (x < 1)
- fun_l20_n649(x)
- else
- fun_l20_n733(x)
- end
-end
-
-def fun_l19_n68(x)
- if (x < 1)
- fun_l20_n651(x)
- else
- fun_l20_n844(x)
- end
-end
-
-def fun_l19_n69(x)
- if (x < 1)
- fun_l20_n510(x)
- else
- fun_l20_n675(x)
- end
-end
-
-def fun_l19_n70(x)
- if (x < 1)
- fun_l20_n830(x)
- else
- fun_l20_n338(x)
- end
-end
-
-def fun_l19_n71(x)
- if (x < 1)
- fun_l20_n110(x)
- else
- fun_l20_n806(x)
- end
-end
-
-def fun_l19_n72(x)
- if (x < 1)
- fun_l20_n588(x)
- else
- fun_l20_n7(x)
- end
-end
-
-def fun_l19_n73(x)
- if (x < 1)
- fun_l20_n495(x)
- else
- fun_l20_n293(x)
- end
-end
-
-def fun_l19_n74(x)
- if (x < 1)
- fun_l20_n891(x)
- else
- fun_l20_n514(x)
- end
-end
-
-def fun_l19_n75(x)
- if (x < 1)
- fun_l20_n419(x)
- else
- fun_l20_n934(x)
- end
-end
-
-def fun_l19_n76(x)
- if (x < 1)
- fun_l20_n476(x)
- else
- fun_l20_n652(x)
- end
-end
-
-def fun_l19_n77(x)
- if (x < 1)
- fun_l20_n927(x)
- else
- fun_l20_n656(x)
- end
-end
-
-def fun_l19_n78(x)
- if (x < 1)
- fun_l20_n361(x)
- else
- fun_l20_n847(x)
- end
-end
-
-def fun_l19_n79(x)
- if (x < 1)
- fun_l20_n584(x)
- else
- fun_l20_n24(x)
- end
-end
-
-def fun_l19_n80(x)
- if (x < 1)
- fun_l20_n428(x)
- else
- fun_l20_n219(x)
- end
-end
-
-def fun_l19_n81(x)
- if (x < 1)
- fun_l20_n922(x)
- else
- fun_l20_n758(x)
- end
-end
-
-def fun_l19_n82(x)
- if (x < 1)
- fun_l20_n188(x)
- else
- fun_l20_n378(x)
- end
-end
-
-def fun_l19_n83(x)
- if (x < 1)
- fun_l20_n239(x)
- else
- fun_l20_n690(x)
- end
-end
-
-def fun_l19_n84(x)
- if (x < 1)
- fun_l20_n262(x)
- else
- fun_l20_n162(x)
- end
-end
-
-def fun_l19_n85(x)
- if (x < 1)
- fun_l20_n117(x)
- else
- fun_l20_n117(x)
- end
-end
-
-def fun_l19_n86(x)
- if (x < 1)
- fun_l20_n154(x)
- else
- fun_l20_n564(x)
- end
-end
-
-def fun_l19_n87(x)
- if (x < 1)
- fun_l20_n560(x)
- else
- fun_l20_n591(x)
- end
-end
-
-def fun_l19_n88(x)
- if (x < 1)
- fun_l20_n529(x)
- else
- fun_l20_n107(x)
- end
-end
-
-def fun_l19_n89(x)
- if (x < 1)
- fun_l20_n609(x)
- else
- fun_l20_n287(x)
- end
-end
-
-def fun_l19_n90(x)
- if (x < 1)
- fun_l20_n780(x)
- else
- fun_l20_n397(x)
- end
-end
-
-def fun_l19_n91(x)
- if (x < 1)
- fun_l20_n587(x)
- else
- fun_l20_n416(x)
- end
-end
-
-def fun_l19_n92(x)
- if (x < 1)
- fun_l20_n784(x)
- else
- fun_l20_n413(x)
- end
-end
-
-def fun_l19_n93(x)
- if (x < 1)
- fun_l20_n83(x)
- else
- fun_l20_n560(x)
- end
-end
-
-def fun_l19_n94(x)
- if (x < 1)
- fun_l20_n126(x)
- else
- fun_l20_n67(x)
- end
-end
-
-def fun_l19_n95(x)
- if (x < 1)
- fun_l20_n22(x)
- else
- fun_l20_n865(x)
- end
-end
-
-def fun_l19_n96(x)
- if (x < 1)
- fun_l20_n35(x)
- else
- fun_l20_n160(x)
- end
-end
-
-def fun_l19_n97(x)
- if (x < 1)
- fun_l20_n701(x)
- else
- fun_l20_n139(x)
- end
-end
-
-def fun_l19_n98(x)
- if (x < 1)
- fun_l20_n488(x)
- else
- fun_l20_n407(x)
- end
-end
-
-def fun_l19_n99(x)
- if (x < 1)
- fun_l20_n636(x)
- else
- fun_l20_n135(x)
- end
-end
-
-def fun_l19_n100(x)
- if (x < 1)
- fun_l20_n83(x)
- else
- fun_l20_n923(x)
- end
-end
-
-def fun_l19_n101(x)
- if (x < 1)
- fun_l20_n232(x)
- else
- fun_l20_n955(x)
- end
-end
-
-def fun_l19_n102(x)
- if (x < 1)
- fun_l20_n816(x)
- else
- fun_l20_n671(x)
- end
-end
-
-def fun_l19_n103(x)
- if (x < 1)
- fun_l20_n366(x)
- else
- fun_l20_n646(x)
- end
-end
-
-def fun_l19_n104(x)
- if (x < 1)
- fun_l20_n465(x)
- else
- fun_l20_n659(x)
- end
-end
-
-def fun_l19_n105(x)
- if (x < 1)
- fun_l20_n488(x)
- else
- fun_l20_n720(x)
- end
-end
-
-def fun_l19_n106(x)
- if (x < 1)
- fun_l20_n278(x)
- else
- fun_l20_n570(x)
- end
-end
-
-def fun_l19_n107(x)
- if (x < 1)
- fun_l20_n630(x)
- else
- fun_l20_n280(x)
- end
-end
-
-def fun_l19_n108(x)
- if (x < 1)
- fun_l20_n688(x)
- else
- fun_l20_n999(x)
- end
-end
-
-def fun_l19_n109(x)
- if (x < 1)
- fun_l20_n175(x)
- else
- fun_l20_n633(x)
- end
-end
-
-def fun_l19_n110(x)
- if (x < 1)
- fun_l20_n111(x)
- else
- fun_l20_n130(x)
- end
-end
-
-def fun_l19_n111(x)
- if (x < 1)
- fun_l20_n405(x)
- else
- fun_l20_n148(x)
- end
-end
-
-def fun_l19_n112(x)
- if (x < 1)
- fun_l20_n645(x)
- else
- fun_l20_n303(x)
- end
-end
-
-def fun_l19_n113(x)
- if (x < 1)
- fun_l20_n685(x)
- else
- fun_l20_n122(x)
- end
-end
-
-def fun_l19_n114(x)
- if (x < 1)
- fun_l20_n808(x)
- else
- fun_l20_n780(x)
- end
-end
-
-def fun_l19_n115(x)
- if (x < 1)
- fun_l20_n136(x)
- else
- fun_l20_n749(x)
- end
-end
-
-def fun_l19_n116(x)
- if (x < 1)
- fun_l20_n134(x)
- else
- fun_l20_n291(x)
- end
-end
-
-def fun_l19_n117(x)
- if (x < 1)
- fun_l20_n288(x)
- else
- fun_l20_n759(x)
- end
-end
-
-def fun_l19_n118(x)
- if (x < 1)
- fun_l20_n617(x)
- else
- fun_l20_n823(x)
- end
-end
-
-def fun_l19_n119(x)
- if (x < 1)
- fun_l20_n412(x)
- else
- fun_l20_n548(x)
- end
-end
-
-def fun_l19_n120(x)
- if (x < 1)
- fun_l20_n897(x)
- else
- fun_l20_n455(x)
- end
-end
-
-def fun_l19_n121(x)
- if (x < 1)
- fun_l20_n105(x)
- else
- fun_l20_n753(x)
- end
-end
-
-def fun_l19_n122(x)
- if (x < 1)
- fun_l20_n84(x)
- else
- fun_l20_n575(x)
- end
-end
-
-def fun_l19_n123(x)
- if (x < 1)
- fun_l20_n326(x)
- else
- fun_l20_n858(x)
- end
-end
-
-def fun_l19_n124(x)
- if (x < 1)
- fun_l20_n878(x)
- else
- fun_l20_n348(x)
- end
-end
-
-def fun_l19_n125(x)
- if (x < 1)
- fun_l20_n285(x)
- else
- fun_l20_n182(x)
- end
-end
-
-def fun_l19_n126(x)
- if (x < 1)
- fun_l20_n560(x)
- else
- fun_l20_n413(x)
- end
-end
-
-def fun_l19_n127(x)
- if (x < 1)
- fun_l20_n597(x)
- else
- fun_l20_n748(x)
- end
-end
-
-def fun_l19_n128(x)
- if (x < 1)
- fun_l20_n642(x)
- else
- fun_l20_n529(x)
- end
-end
-
-def fun_l19_n129(x)
- if (x < 1)
- fun_l20_n842(x)
- else
- fun_l20_n228(x)
- end
-end
-
-def fun_l19_n130(x)
- if (x < 1)
- fun_l20_n283(x)
- else
- fun_l20_n656(x)
- end
-end
-
-def fun_l19_n131(x)
- if (x < 1)
- fun_l20_n699(x)
- else
- fun_l20_n135(x)
- end
-end
-
-def fun_l19_n132(x)
- if (x < 1)
- fun_l20_n276(x)
- else
- fun_l20_n41(x)
- end
-end
-
-def fun_l19_n133(x)
- if (x < 1)
- fun_l20_n734(x)
- else
- fun_l20_n157(x)
- end
-end
-
-def fun_l19_n134(x)
- if (x < 1)
- fun_l20_n612(x)
- else
- fun_l20_n318(x)
- end
-end
-
-def fun_l19_n135(x)
- if (x < 1)
- fun_l20_n345(x)
- else
- fun_l20_n332(x)
- end
-end
-
-def fun_l19_n136(x)
- if (x < 1)
- fun_l20_n131(x)
- else
- fun_l20_n747(x)
- end
-end
-
-def fun_l19_n137(x)
- if (x < 1)
- fun_l20_n911(x)
- else
- fun_l20_n84(x)
- end
-end
-
-def fun_l19_n138(x)
- if (x < 1)
- fun_l20_n665(x)
- else
- fun_l20_n194(x)
- end
-end
-
-def fun_l19_n139(x)
- if (x < 1)
- fun_l20_n301(x)
- else
- fun_l20_n71(x)
- end
-end
-
-def fun_l19_n140(x)
- if (x < 1)
- fun_l20_n432(x)
- else
- fun_l20_n679(x)
- end
-end
-
-def fun_l19_n141(x)
- if (x < 1)
- fun_l20_n628(x)
- else
- fun_l20_n268(x)
- end
-end
-
-def fun_l19_n142(x)
- if (x < 1)
- fun_l20_n982(x)
- else
- fun_l20_n241(x)
- end
-end
-
-def fun_l19_n143(x)
- if (x < 1)
- fun_l20_n35(x)
- else
- fun_l20_n593(x)
- end
-end
-
-def fun_l19_n144(x)
- if (x < 1)
- fun_l20_n791(x)
- else
- fun_l20_n960(x)
- end
-end
-
-def fun_l19_n145(x)
- if (x < 1)
- fun_l20_n613(x)
- else
- fun_l20_n366(x)
- end
-end
-
-def fun_l19_n146(x)
- if (x < 1)
- fun_l20_n997(x)
- else
- fun_l20_n7(x)
- end
-end
-
-def fun_l19_n147(x)
- if (x < 1)
- fun_l20_n206(x)
- else
- fun_l20_n785(x)
- end
-end
-
-def fun_l19_n148(x)
- if (x < 1)
- fun_l20_n822(x)
- else
- fun_l20_n178(x)
- end
-end
-
-def fun_l19_n149(x)
- if (x < 1)
- fun_l20_n793(x)
- else
- fun_l20_n860(x)
- end
-end
-
-def fun_l19_n150(x)
- if (x < 1)
- fun_l20_n260(x)
- else
- fun_l20_n523(x)
- end
-end
-
-def fun_l19_n151(x)
- if (x < 1)
- fun_l20_n848(x)
- else
- fun_l20_n568(x)
- end
-end
-
-def fun_l19_n152(x)
- if (x < 1)
- fun_l20_n466(x)
- else
- fun_l20_n959(x)
- end
-end
-
-def fun_l19_n153(x)
- if (x < 1)
- fun_l20_n972(x)
- else
- fun_l20_n780(x)
- end
-end
-
-def fun_l19_n154(x)
- if (x < 1)
- fun_l20_n349(x)
- else
- fun_l20_n490(x)
- end
-end
-
-def fun_l19_n155(x)
- if (x < 1)
- fun_l20_n658(x)
- else
- fun_l20_n766(x)
- end
-end
-
-def fun_l19_n156(x)
- if (x < 1)
- fun_l20_n788(x)
- else
- fun_l20_n961(x)
- end
-end
-
-def fun_l19_n157(x)
- if (x < 1)
- fun_l20_n32(x)
- else
- fun_l20_n155(x)
- end
-end
-
-def fun_l19_n158(x)
- if (x < 1)
- fun_l20_n820(x)
- else
- fun_l20_n317(x)
- end
-end
-
-def fun_l19_n159(x)
- if (x < 1)
- fun_l20_n818(x)
- else
- fun_l20_n570(x)
- end
-end
-
-def fun_l19_n160(x)
- if (x < 1)
- fun_l20_n82(x)
- else
- fun_l20_n331(x)
- end
-end
-
-def fun_l19_n161(x)
- if (x < 1)
- fun_l20_n576(x)
- else
- fun_l20_n134(x)
- end
-end
-
-def fun_l19_n162(x)
- if (x < 1)
- fun_l20_n287(x)
- else
- fun_l20_n748(x)
- end
-end
-
-def fun_l19_n163(x)
- if (x < 1)
- fun_l20_n855(x)
- else
- fun_l20_n97(x)
- end
-end
-
-def fun_l19_n164(x)
- if (x < 1)
- fun_l20_n218(x)
- else
- fun_l20_n195(x)
- end
-end
-
-def fun_l19_n165(x)
- if (x < 1)
- fun_l20_n179(x)
- else
- fun_l20_n566(x)
- end
-end
-
-def fun_l19_n166(x)
- if (x < 1)
- fun_l20_n833(x)
- else
- fun_l20_n35(x)
- end
-end
-
-def fun_l19_n167(x)
- if (x < 1)
- fun_l20_n595(x)
- else
- fun_l20_n344(x)
- end
-end
-
-def fun_l19_n168(x)
- if (x < 1)
- fun_l20_n171(x)
- else
- fun_l20_n199(x)
- end
-end
-
-def fun_l19_n169(x)
- if (x < 1)
- fun_l20_n531(x)
- else
- fun_l20_n385(x)
- end
-end
-
-def fun_l19_n170(x)
- if (x < 1)
- fun_l20_n168(x)
- else
- fun_l20_n911(x)
- end
-end
-
-def fun_l19_n171(x)
- if (x < 1)
- fun_l20_n767(x)
- else
- fun_l20_n521(x)
- end
-end
-
-def fun_l19_n172(x)
- if (x < 1)
- fun_l20_n769(x)
- else
- fun_l20_n56(x)
- end
-end
-
-def fun_l19_n173(x)
- if (x < 1)
- fun_l20_n521(x)
- else
- fun_l20_n600(x)
- end
-end
-
-def fun_l19_n174(x)
- if (x < 1)
- fun_l20_n239(x)
- else
- fun_l20_n22(x)
- end
-end
-
-def fun_l19_n175(x)
- if (x < 1)
- fun_l20_n963(x)
- else
- fun_l20_n497(x)
- end
-end
-
-def fun_l19_n176(x)
- if (x < 1)
- fun_l20_n989(x)
- else
- fun_l20_n748(x)
- end
-end
-
-def fun_l19_n177(x)
- if (x < 1)
- fun_l20_n105(x)
- else
- fun_l20_n315(x)
- end
-end
-
-def fun_l19_n178(x)
- if (x < 1)
- fun_l20_n48(x)
- else
- fun_l20_n550(x)
- end
-end
-
-def fun_l19_n179(x)
- if (x < 1)
- fun_l20_n66(x)
- else
- fun_l20_n595(x)
- end
-end
-
-def fun_l19_n180(x)
- if (x < 1)
- fun_l20_n692(x)
- else
- fun_l20_n71(x)
- end
-end
-
-def fun_l19_n181(x)
- if (x < 1)
- fun_l20_n639(x)
- else
- fun_l20_n869(x)
- end
-end
-
-def fun_l19_n182(x)
- if (x < 1)
- fun_l20_n925(x)
- else
- fun_l20_n868(x)
- end
-end
-
-def fun_l19_n183(x)
- if (x < 1)
- fun_l20_n890(x)
- else
- fun_l20_n924(x)
- end
-end
-
-def fun_l19_n184(x)
- if (x < 1)
- fun_l20_n579(x)
- else
- fun_l20_n349(x)
- end
-end
-
-def fun_l19_n185(x)
- if (x < 1)
- fun_l20_n313(x)
- else
- fun_l20_n16(x)
- end
-end
-
-def fun_l19_n186(x)
- if (x < 1)
- fun_l20_n947(x)
- else
- fun_l20_n644(x)
- end
-end
-
-def fun_l19_n187(x)
- if (x < 1)
- fun_l20_n424(x)
- else
- fun_l20_n815(x)
- end
-end
-
-def fun_l19_n188(x)
- if (x < 1)
- fun_l20_n177(x)
- else
- fun_l20_n230(x)
- end
-end
-
-def fun_l19_n189(x)
- if (x < 1)
- fun_l20_n556(x)
- else
- fun_l20_n47(x)
- end
-end
-
-def fun_l19_n190(x)
- if (x < 1)
- fun_l20_n804(x)
- else
- fun_l20_n516(x)
- end
-end
-
-def fun_l19_n191(x)
- if (x < 1)
- fun_l20_n411(x)
- else
- fun_l20_n779(x)
- end
-end
-
-def fun_l19_n192(x)
- if (x < 1)
- fun_l20_n124(x)
- else
- fun_l20_n827(x)
- end
-end
-
-def fun_l19_n193(x)
- if (x < 1)
- fun_l20_n514(x)
- else
- fun_l20_n516(x)
- end
-end
-
-def fun_l19_n194(x)
- if (x < 1)
- fun_l20_n134(x)
- else
- fun_l20_n356(x)
- end
-end
-
-def fun_l19_n195(x)
- if (x < 1)
- fun_l20_n499(x)
- else
- fun_l20_n809(x)
- end
-end
-
-def fun_l19_n196(x)
- if (x < 1)
- fun_l20_n958(x)
- else
- fun_l20_n675(x)
- end
-end
-
-def fun_l19_n197(x)
- if (x < 1)
- fun_l20_n847(x)
- else
- fun_l20_n418(x)
- end
-end
-
-def fun_l19_n198(x)
- if (x < 1)
- fun_l20_n294(x)
- else
- fun_l20_n510(x)
- end
-end
-
-def fun_l19_n199(x)
- if (x < 1)
- fun_l20_n365(x)
- else
- fun_l20_n952(x)
- end
-end
-
-def fun_l19_n200(x)
- if (x < 1)
- fun_l20_n961(x)
- else
- fun_l20_n747(x)
- end
-end
-
-def fun_l19_n201(x)
- if (x < 1)
- fun_l20_n731(x)
- else
- fun_l20_n618(x)
- end
-end
-
-def fun_l19_n202(x)
- if (x < 1)
- fun_l20_n825(x)
- else
- fun_l20_n907(x)
- end
-end
-
-def fun_l19_n203(x)
- if (x < 1)
- fun_l20_n865(x)
- else
- fun_l20_n886(x)
- end
-end
-
-def fun_l19_n204(x)
- if (x < 1)
- fun_l20_n732(x)
- else
- fun_l20_n823(x)
- end
-end
-
-def fun_l19_n205(x)
- if (x < 1)
- fun_l20_n305(x)
- else
- fun_l20_n596(x)
- end
-end
-
-def fun_l19_n206(x)
- if (x < 1)
- fun_l20_n245(x)
- else
- fun_l20_n370(x)
- end
-end
-
-def fun_l19_n207(x)
- if (x < 1)
- fun_l20_n728(x)
- else
- fun_l20_n917(x)
- end
-end
-
-def fun_l19_n208(x)
- if (x < 1)
- fun_l20_n448(x)
- else
- fun_l20_n904(x)
- end
-end
-
-def fun_l19_n209(x)
- if (x < 1)
- fun_l20_n90(x)
- else
- fun_l20_n181(x)
- end
-end
-
-def fun_l19_n210(x)
- if (x < 1)
- fun_l20_n569(x)
- else
- fun_l20_n268(x)
- end
-end
-
-def fun_l19_n211(x)
- if (x < 1)
- fun_l20_n772(x)
- else
- fun_l20_n770(x)
- end
-end
-
-def fun_l19_n212(x)
- if (x < 1)
- fun_l20_n781(x)
- else
- fun_l20_n603(x)
- end
-end
-
-def fun_l19_n213(x)
- if (x < 1)
- fun_l20_n733(x)
- else
- fun_l20_n904(x)
- end
-end
-
-def fun_l19_n214(x)
- if (x < 1)
- fun_l20_n303(x)
- else
- fun_l20_n888(x)
- end
-end
-
-def fun_l19_n215(x)
- if (x < 1)
- fun_l20_n280(x)
- else
- fun_l20_n428(x)
- end
-end
-
-def fun_l19_n216(x)
- if (x < 1)
- fun_l20_n737(x)
- else
- fun_l20_n483(x)
- end
-end
-
-def fun_l19_n217(x)
- if (x < 1)
- fun_l20_n780(x)
- else
- fun_l20_n240(x)
- end
-end
-
-def fun_l19_n218(x)
- if (x < 1)
- fun_l20_n202(x)
- else
- fun_l20_n580(x)
- end
-end
-
-def fun_l19_n219(x)
- if (x < 1)
- fun_l20_n837(x)
- else
- fun_l20_n83(x)
- end
-end
-
-def fun_l19_n220(x)
- if (x < 1)
- fun_l20_n68(x)
- else
- fun_l20_n292(x)
- end
-end
-
-def fun_l19_n221(x)
- if (x < 1)
- fun_l20_n289(x)
- else
- fun_l20_n655(x)
- end
-end
-
-def fun_l19_n222(x)
- if (x < 1)
- fun_l20_n505(x)
- else
- fun_l20_n660(x)
- end
-end
-
-def fun_l19_n223(x)
- if (x < 1)
- fun_l20_n534(x)
- else
- fun_l20_n391(x)
- end
-end
-
-def fun_l19_n224(x)
- if (x < 1)
- fun_l20_n72(x)
- else
- fun_l20_n81(x)
- end
-end
-
-def fun_l19_n225(x)
- if (x < 1)
- fun_l20_n194(x)
- else
- fun_l20_n437(x)
- end
-end
-
-def fun_l19_n226(x)
- if (x < 1)
- fun_l20_n629(x)
- else
- fun_l20_n645(x)
- end
-end
-
-def fun_l19_n227(x)
- if (x < 1)
- fun_l20_n912(x)
- else
- fun_l20_n425(x)
- end
-end
-
-def fun_l19_n228(x)
- if (x < 1)
- fun_l20_n773(x)
- else
- fun_l20_n456(x)
- end
-end
-
-def fun_l19_n229(x)
- if (x < 1)
- fun_l20_n247(x)
- else
- fun_l20_n275(x)
- end
-end
-
-def fun_l19_n230(x)
- if (x < 1)
- fun_l20_n263(x)
- else
- fun_l20_n482(x)
- end
-end
-
-def fun_l19_n231(x)
- if (x < 1)
- fun_l20_n999(x)
- else
- fun_l20_n146(x)
- end
-end
-
-def fun_l19_n232(x)
- if (x < 1)
- fun_l20_n117(x)
- else
- fun_l20_n851(x)
- end
-end
-
-def fun_l19_n233(x)
- if (x < 1)
- fun_l20_n889(x)
- else
- fun_l20_n441(x)
- end
-end
-
-def fun_l19_n234(x)
- if (x < 1)
- fun_l20_n885(x)
- else
- fun_l20_n374(x)
- end
-end
-
-def fun_l19_n235(x)
- if (x < 1)
- fun_l20_n703(x)
- else
- fun_l20_n962(x)
- end
-end
-
-def fun_l19_n236(x)
- if (x < 1)
- fun_l20_n298(x)
- else
- fun_l20_n57(x)
- end
-end
-
-def fun_l19_n237(x)
- if (x < 1)
- fun_l20_n821(x)
- else
- fun_l20_n120(x)
- end
-end
-
-def fun_l19_n238(x)
- if (x < 1)
- fun_l20_n437(x)
- else
- fun_l20_n204(x)
- end
-end
-
-def fun_l19_n239(x)
- if (x < 1)
- fun_l20_n558(x)
- else
- fun_l20_n645(x)
- end
-end
-
-def fun_l19_n240(x)
- if (x < 1)
- fun_l20_n631(x)
- else
- fun_l20_n986(x)
- end
-end
-
-def fun_l19_n241(x)
- if (x < 1)
- fun_l20_n418(x)
- else
- fun_l20_n738(x)
- end
-end
-
-def fun_l19_n242(x)
- if (x < 1)
- fun_l20_n249(x)
- else
- fun_l20_n322(x)
- end
-end
-
-def fun_l19_n243(x)
- if (x < 1)
- fun_l20_n484(x)
- else
- fun_l20_n270(x)
- end
-end
-
-def fun_l19_n244(x)
- if (x < 1)
- fun_l20_n749(x)
- else
- fun_l20_n322(x)
- end
-end
-
-def fun_l19_n245(x)
- if (x < 1)
- fun_l20_n562(x)
- else
- fun_l20_n353(x)
- end
-end
-
-def fun_l19_n246(x)
- if (x < 1)
- fun_l20_n974(x)
- else
- fun_l20_n333(x)
- end
-end
-
-def fun_l19_n247(x)
- if (x < 1)
- fun_l20_n929(x)
- else
- fun_l20_n885(x)
- end
-end
-
-def fun_l19_n248(x)
- if (x < 1)
- fun_l20_n421(x)
- else
- fun_l20_n576(x)
- end
-end
-
-def fun_l19_n249(x)
- if (x < 1)
- fun_l20_n757(x)
- else
- fun_l20_n618(x)
- end
-end
-
-def fun_l19_n250(x)
- if (x < 1)
- fun_l20_n108(x)
- else
- fun_l20_n704(x)
- end
-end
-
-def fun_l19_n251(x)
- if (x < 1)
- fun_l20_n882(x)
- else
- fun_l20_n994(x)
- end
-end
-
-def fun_l19_n252(x)
- if (x < 1)
- fun_l20_n995(x)
- else
- fun_l20_n580(x)
- end
-end
-
-def fun_l19_n253(x)
- if (x < 1)
- fun_l20_n869(x)
- else
- fun_l20_n302(x)
- end
-end
-
-def fun_l19_n254(x)
- if (x < 1)
- fun_l20_n873(x)
- else
- fun_l20_n315(x)
- end
-end
-
-def fun_l19_n255(x)
- if (x < 1)
- fun_l20_n266(x)
- else
- fun_l20_n263(x)
- end
-end
-
-def fun_l19_n256(x)
- if (x < 1)
- fun_l20_n450(x)
- else
- fun_l20_n994(x)
- end
-end
-
-def fun_l19_n257(x)
- if (x < 1)
- fun_l20_n552(x)
- else
- fun_l20_n407(x)
- end
-end
-
-def fun_l19_n258(x)
- if (x < 1)
- fun_l20_n603(x)
- else
- fun_l20_n453(x)
- end
-end
-
-def fun_l19_n259(x)
- if (x < 1)
- fun_l20_n933(x)
- else
- fun_l20_n609(x)
- end
-end
-
-def fun_l19_n260(x)
- if (x < 1)
- fun_l20_n983(x)
- else
- fun_l20_n404(x)
- end
-end
-
-def fun_l19_n261(x)
- if (x < 1)
- fun_l20_n123(x)
- else
- fun_l20_n159(x)
- end
-end
-
-def fun_l19_n262(x)
- if (x < 1)
- fun_l20_n890(x)
- else
- fun_l20_n749(x)
- end
-end
-
-def fun_l19_n263(x)
- if (x < 1)
- fun_l20_n758(x)
- else
- fun_l20_n123(x)
- end
-end
-
-def fun_l19_n264(x)
- if (x < 1)
- fun_l20_n194(x)
- else
- fun_l20_n645(x)
- end
-end
-
-def fun_l19_n265(x)
- if (x < 1)
- fun_l20_n71(x)
- else
- fun_l20_n750(x)
- end
-end
-
-def fun_l19_n266(x)
- if (x < 1)
- fun_l20_n713(x)
- else
- fun_l20_n125(x)
- end
-end
-
-def fun_l19_n267(x)
- if (x < 1)
- fun_l20_n286(x)
- else
- fun_l20_n227(x)
- end
-end
-
-def fun_l19_n268(x)
- if (x < 1)
- fun_l20_n220(x)
- else
- fun_l20_n233(x)
- end
-end
-
-def fun_l19_n269(x)
- if (x < 1)
- fun_l20_n263(x)
- else
- fun_l20_n306(x)
- end
-end
-
-def fun_l19_n270(x)
- if (x < 1)
- fun_l20_n959(x)
- else
- fun_l20_n552(x)
- end
-end
-
-def fun_l19_n271(x)
- if (x < 1)
- fun_l20_n154(x)
- else
- fun_l20_n212(x)
- end
-end
-
-def fun_l19_n272(x)
- if (x < 1)
- fun_l20_n985(x)
- else
- fun_l20_n370(x)
- end
-end
-
-def fun_l19_n273(x)
- if (x < 1)
- fun_l20_n763(x)
- else
- fun_l20_n897(x)
- end
-end
-
-def fun_l19_n274(x)
- if (x < 1)
- fun_l20_n582(x)
- else
- fun_l20_n638(x)
- end
-end
-
-def fun_l19_n275(x)
- if (x < 1)
- fun_l20_n509(x)
- else
- fun_l20_n366(x)
- end
-end
-
-def fun_l19_n276(x)
- if (x < 1)
- fun_l20_n500(x)
- else
- fun_l20_n814(x)
- end
-end
-
-def fun_l19_n277(x)
- if (x < 1)
- fun_l20_n726(x)
- else
- fun_l20_n934(x)
- end
-end
-
-def fun_l19_n278(x)
- if (x < 1)
- fun_l20_n198(x)
- else
- fun_l20_n852(x)
- end
-end
-
-def fun_l19_n279(x)
- if (x < 1)
- fun_l20_n43(x)
- else
- fun_l20_n614(x)
- end
-end
-
-def fun_l19_n280(x)
- if (x < 1)
- fun_l20_n79(x)
- else
- fun_l20_n821(x)
- end
-end
-
-def fun_l19_n281(x)
- if (x < 1)
- fun_l20_n269(x)
- else
- fun_l20_n697(x)
- end
-end
-
-def fun_l19_n282(x)
- if (x < 1)
- fun_l20_n327(x)
- else
- fun_l20_n528(x)
- end
-end
-
-def fun_l19_n283(x)
- if (x < 1)
- fun_l20_n77(x)
- else
- fun_l20_n743(x)
- end
-end
-
-def fun_l19_n284(x)
- if (x < 1)
- fun_l20_n282(x)
- else
- fun_l20_n406(x)
- end
-end
-
-def fun_l19_n285(x)
- if (x < 1)
- fun_l20_n129(x)
- else
- fun_l20_n855(x)
- end
-end
-
-def fun_l19_n286(x)
- if (x < 1)
- fun_l20_n897(x)
- else
- fun_l20_n687(x)
- end
-end
-
-def fun_l19_n287(x)
- if (x < 1)
- fun_l20_n166(x)
- else
- fun_l20_n5(x)
- end
-end
-
-def fun_l19_n288(x)
- if (x < 1)
- fun_l20_n545(x)
- else
- fun_l20_n661(x)
- end
-end
-
-def fun_l19_n289(x)
- if (x < 1)
- fun_l20_n630(x)
- else
- fun_l20_n820(x)
- end
-end
-
-def fun_l19_n290(x)
- if (x < 1)
- fun_l20_n774(x)
- else
- fun_l20_n125(x)
- end
-end
-
-def fun_l19_n291(x)
- if (x < 1)
- fun_l20_n110(x)
- else
- fun_l20_n721(x)
- end
-end
-
-def fun_l19_n292(x)
- if (x < 1)
- fun_l20_n777(x)
- else
- fun_l20_n44(x)
- end
-end
-
-def fun_l19_n293(x)
- if (x < 1)
- fun_l20_n504(x)
- else
- fun_l20_n478(x)
- end
-end
-
-def fun_l19_n294(x)
- if (x < 1)
- fun_l20_n540(x)
- else
- fun_l20_n603(x)
- end
-end
-
-def fun_l19_n295(x)
- if (x < 1)
- fun_l20_n576(x)
- else
- fun_l20_n417(x)
- end
-end
-
-def fun_l19_n296(x)
- if (x < 1)
- fun_l20_n553(x)
- else
- fun_l20_n295(x)
- end
-end
-
-def fun_l19_n297(x)
- if (x < 1)
- fun_l20_n56(x)
- else
- fun_l20_n990(x)
- end
-end
-
-def fun_l19_n298(x)
- if (x < 1)
- fun_l20_n362(x)
- else
- fun_l20_n158(x)
- end
-end
-
-def fun_l19_n299(x)
- if (x < 1)
- fun_l20_n788(x)
- else
- fun_l20_n70(x)
- end
-end
-
-def fun_l19_n300(x)
- if (x < 1)
- fun_l20_n670(x)
- else
- fun_l20_n542(x)
- end
-end
-
-def fun_l19_n301(x)
- if (x < 1)
- fun_l20_n960(x)
- else
- fun_l20_n827(x)
- end
-end
-
-def fun_l19_n302(x)
- if (x < 1)
- fun_l20_n366(x)
- else
- fun_l20_n325(x)
- end
-end
-
-def fun_l19_n303(x)
- if (x < 1)
- fun_l20_n252(x)
- else
- fun_l20_n931(x)
- end
-end
-
-def fun_l19_n304(x)
- if (x < 1)
- fun_l20_n124(x)
- else
- fun_l20_n102(x)
- end
-end
-
-def fun_l19_n305(x)
- if (x < 1)
- fun_l20_n678(x)
- else
- fun_l20_n299(x)
- end
-end
-
-def fun_l19_n306(x)
- if (x < 1)
- fun_l20_n538(x)
- else
- fun_l20_n371(x)
- end
-end
-
-def fun_l19_n307(x)
- if (x < 1)
- fun_l20_n452(x)
- else
- fun_l20_n879(x)
- end
-end
-
-def fun_l19_n308(x)
- if (x < 1)
- fun_l20_n410(x)
- else
- fun_l20_n156(x)
- end
-end
-
-def fun_l19_n309(x)
- if (x < 1)
- fun_l20_n259(x)
- else
- fun_l20_n236(x)
- end
-end
-
-def fun_l19_n310(x)
- if (x < 1)
- fun_l20_n710(x)
- else
- fun_l20_n23(x)
- end
-end
-
-def fun_l19_n311(x)
- if (x < 1)
- fun_l20_n214(x)
- else
- fun_l20_n649(x)
- end
-end
-
-def fun_l19_n312(x)
- if (x < 1)
- fun_l20_n603(x)
- else
- fun_l20_n213(x)
- end
-end
-
-def fun_l19_n313(x)
- if (x < 1)
- fun_l20_n874(x)
- else
- fun_l20_n83(x)
- end
-end
-
-def fun_l19_n314(x)
- if (x < 1)
- fun_l20_n902(x)
- else
- fun_l20_n303(x)
- end
-end
-
-def fun_l19_n315(x)
- if (x < 1)
- fun_l20_n601(x)
- else
- fun_l20_n801(x)
- end
-end
-
-def fun_l19_n316(x)
- if (x < 1)
- fun_l20_n76(x)
- else
- fun_l20_n960(x)
- end
-end
-
-def fun_l19_n317(x)
- if (x < 1)
- fun_l20_n926(x)
- else
- fun_l20_n700(x)
- end
-end
-
-def fun_l19_n318(x)
- if (x < 1)
- fun_l20_n233(x)
- else
- fun_l20_n278(x)
- end
-end
-
-def fun_l19_n319(x)
- if (x < 1)
- fun_l20_n724(x)
- else
- fun_l20_n181(x)
- end
-end
-
-def fun_l19_n320(x)
- if (x < 1)
- fun_l20_n367(x)
- else
- fun_l20_n511(x)
- end
-end
-
-def fun_l19_n321(x)
- if (x < 1)
- fun_l20_n855(x)
- else
- fun_l20_n601(x)
- end
-end
-
-def fun_l19_n322(x)
- if (x < 1)
- fun_l20_n173(x)
- else
- fun_l20_n151(x)
- end
-end
-
-def fun_l19_n323(x)
- if (x < 1)
- fun_l20_n628(x)
- else
- fun_l20_n790(x)
- end
-end
-
-def fun_l19_n324(x)
- if (x < 1)
- fun_l20_n423(x)
- else
- fun_l20_n40(x)
- end
-end
-
-def fun_l19_n325(x)
- if (x < 1)
- fun_l20_n850(x)
- else
- fun_l20_n698(x)
- end
-end
-
-def fun_l19_n326(x)
- if (x < 1)
- fun_l20_n351(x)
- else
- fun_l20_n562(x)
- end
-end
-
-def fun_l19_n327(x)
- if (x < 1)
- fun_l20_n717(x)
- else
- fun_l20_n386(x)
- end
-end
-
-def fun_l19_n328(x)
- if (x < 1)
- fun_l20_n461(x)
- else
- fun_l20_n604(x)
- end
-end
-
-def fun_l19_n329(x)
- if (x < 1)
- fun_l20_n423(x)
- else
- fun_l20_n506(x)
- end
-end
-
-def fun_l19_n330(x)
- if (x < 1)
- fun_l20_n389(x)
- else
- fun_l20_n365(x)
- end
-end
-
-def fun_l19_n331(x)
- if (x < 1)
- fun_l20_n858(x)
- else
- fun_l20_n623(x)
- end
-end
-
-def fun_l19_n332(x)
- if (x < 1)
- fun_l20_n34(x)
- else
- fun_l20_n598(x)
- end
-end
-
-def fun_l19_n333(x)
- if (x < 1)
- fun_l20_n458(x)
- else
- fun_l20_n619(x)
- end
-end
-
-def fun_l19_n334(x)
- if (x < 1)
- fun_l20_n203(x)
- else
- fun_l20_n391(x)
- end
-end
-
-def fun_l19_n335(x)
- if (x < 1)
- fun_l20_n745(x)
- else
- fun_l20_n197(x)
- end
-end
-
-def fun_l19_n336(x)
- if (x < 1)
- fun_l20_n388(x)
- else
- fun_l20_n682(x)
- end
-end
-
-def fun_l19_n337(x)
- if (x < 1)
- fun_l20_n340(x)
- else
- fun_l20_n836(x)
- end
-end
-
-def fun_l19_n338(x)
- if (x < 1)
- fun_l20_n231(x)
- else
- fun_l20_n508(x)
- end
-end
-
-def fun_l19_n339(x)
- if (x < 1)
- fun_l20_n376(x)
- else
- fun_l20_n733(x)
- end
-end
-
-def fun_l19_n340(x)
- if (x < 1)
- fun_l20_n162(x)
- else
- fun_l20_n397(x)
- end
-end
-
-def fun_l19_n341(x)
- if (x < 1)
- fun_l20_n526(x)
- else
- fun_l20_n431(x)
- end
-end
-
-def fun_l19_n342(x)
- if (x < 1)
- fun_l20_n850(x)
- else
- fun_l20_n226(x)
- end
-end
-
-def fun_l19_n343(x)
- if (x < 1)
- fun_l20_n936(x)
- else
- fun_l20_n739(x)
- end
-end
-
-def fun_l19_n344(x)
- if (x < 1)
- fun_l20_n639(x)
- else
- fun_l20_n844(x)
- end
-end
-
-def fun_l19_n345(x)
- if (x < 1)
- fun_l20_n230(x)
- else
- fun_l20_n8(x)
- end
-end
-
-def fun_l19_n346(x)
- if (x < 1)
- fun_l20_n156(x)
- else
- fun_l20_n417(x)
- end
-end
-
-def fun_l19_n347(x)
- if (x < 1)
- fun_l20_n823(x)
- else
- fun_l20_n843(x)
- end
-end
-
-def fun_l19_n348(x)
- if (x < 1)
- fun_l20_n798(x)
- else
- fun_l20_n538(x)
- end
-end
-
-def fun_l19_n349(x)
- if (x < 1)
- fun_l20_n701(x)
- else
- fun_l20_n949(x)
- end
-end
-
-def fun_l19_n350(x)
- if (x < 1)
- fun_l20_n131(x)
- else
- fun_l20_n727(x)
- end
-end
-
-def fun_l19_n351(x)
- if (x < 1)
- fun_l20_n661(x)
- else
- fun_l20_n655(x)
- end
-end
-
-def fun_l19_n352(x)
- if (x < 1)
- fun_l20_n824(x)
- else
- fun_l20_n436(x)
- end
-end
-
-def fun_l19_n353(x)
- if (x < 1)
- fun_l20_n599(x)
- else
- fun_l20_n581(x)
- end
-end
-
-def fun_l19_n354(x)
- if (x < 1)
- fun_l20_n290(x)
- else
- fun_l20_n632(x)
- end
-end
-
-def fun_l19_n355(x)
- if (x < 1)
- fun_l20_n495(x)
- else
- fun_l20_n466(x)
- end
-end
-
-def fun_l19_n356(x)
- if (x < 1)
- fun_l20_n70(x)
- else
- fun_l20_n270(x)
- end
-end
-
-def fun_l19_n357(x)
- if (x < 1)
- fun_l20_n409(x)
- else
- fun_l20_n635(x)
- end
-end
-
-def fun_l19_n358(x)
- if (x < 1)
- fun_l20_n396(x)
- else
- fun_l20_n41(x)
- end
-end
-
-def fun_l19_n359(x)
- if (x < 1)
- fun_l20_n302(x)
- else
- fun_l20_n209(x)
- end
-end
-
-def fun_l19_n360(x)
- if (x < 1)
- fun_l20_n844(x)
- else
- fun_l20_n23(x)
- end
-end
-
-def fun_l19_n361(x)
- if (x < 1)
- fun_l20_n18(x)
- else
- fun_l20_n20(x)
- end
-end
-
-def fun_l19_n362(x)
- if (x < 1)
- fun_l20_n821(x)
- else
- fun_l20_n806(x)
- end
-end
-
-def fun_l19_n363(x)
- if (x < 1)
- fun_l20_n710(x)
- else
- fun_l20_n209(x)
- end
-end
-
-def fun_l19_n364(x)
- if (x < 1)
- fun_l20_n979(x)
- else
- fun_l20_n457(x)
- end
-end
-
-def fun_l19_n365(x)
- if (x < 1)
- fun_l20_n787(x)
- else
- fun_l20_n582(x)
- end
-end
-
-def fun_l19_n366(x)
- if (x < 1)
- fun_l20_n274(x)
- else
- fun_l20_n710(x)
- end
-end
-
-def fun_l19_n367(x)
- if (x < 1)
- fun_l20_n461(x)
- else
- fun_l20_n685(x)
- end
-end
-
-def fun_l19_n368(x)
- if (x < 1)
- fun_l20_n953(x)
- else
- fun_l20_n477(x)
- end
-end
-
-def fun_l19_n369(x)
- if (x < 1)
- fun_l20_n363(x)
- else
- fun_l20_n976(x)
- end
-end
-
-def fun_l19_n370(x)
- if (x < 1)
- fun_l20_n934(x)
- else
- fun_l20_n742(x)
- end
-end
-
-def fun_l19_n371(x)
- if (x < 1)
- fun_l20_n769(x)
- else
- fun_l20_n358(x)
- end
-end
-
-def fun_l19_n372(x)
- if (x < 1)
- fun_l20_n53(x)
- else
- fun_l20_n915(x)
- end
-end
-
-def fun_l19_n373(x)
- if (x < 1)
- fun_l20_n678(x)
- else
- fun_l20_n930(x)
- end
-end
-
-def fun_l19_n374(x)
- if (x < 1)
- fun_l20_n160(x)
- else
- fun_l20_n937(x)
- end
-end
-
-def fun_l19_n375(x)
- if (x < 1)
- fun_l20_n54(x)
- else
- fun_l20_n844(x)
- end
-end
-
-def fun_l19_n376(x)
- if (x < 1)
- fun_l20_n911(x)
- else
- fun_l20_n756(x)
- end
-end
-
-def fun_l19_n377(x)
- if (x < 1)
- fun_l20_n138(x)
- else
- fun_l20_n673(x)
- end
-end
-
-def fun_l19_n378(x)
- if (x < 1)
- fun_l20_n976(x)
- else
- fun_l20_n720(x)
- end
-end
-
-def fun_l19_n379(x)
- if (x < 1)
- fun_l20_n704(x)
- else
- fun_l20_n53(x)
- end
-end
-
-def fun_l19_n380(x)
- if (x < 1)
- fun_l20_n762(x)
- else
- fun_l20_n340(x)
- end
-end
-
-def fun_l19_n381(x)
- if (x < 1)
- fun_l20_n323(x)
- else
- fun_l20_n634(x)
- end
-end
-
-def fun_l19_n382(x)
- if (x < 1)
- fun_l20_n515(x)
- else
- fun_l20_n562(x)
- end
-end
-
-def fun_l19_n383(x)
- if (x < 1)
- fun_l20_n160(x)
- else
- fun_l20_n826(x)
- end
-end
-
-def fun_l19_n384(x)
- if (x < 1)
- fun_l20_n779(x)
- else
- fun_l20_n638(x)
- end
-end
-
-def fun_l19_n385(x)
- if (x < 1)
- fun_l20_n401(x)
- else
- fun_l20_n4(x)
- end
-end
-
-def fun_l19_n386(x)
- if (x < 1)
- fun_l20_n604(x)
- else
- fun_l20_n820(x)
- end
-end
-
-def fun_l19_n387(x)
- if (x < 1)
- fun_l20_n694(x)
- else
- fun_l20_n533(x)
- end
-end
-
-def fun_l19_n388(x)
- if (x < 1)
- fun_l20_n687(x)
- else
- fun_l20_n697(x)
- end
-end
-
-def fun_l19_n389(x)
- if (x < 1)
- fun_l20_n19(x)
- else
- fun_l20_n457(x)
- end
-end
-
-def fun_l19_n390(x)
- if (x < 1)
- fun_l20_n812(x)
- else
- fun_l20_n152(x)
- end
-end
-
-def fun_l19_n391(x)
- if (x < 1)
- fun_l20_n773(x)
- else
- fun_l20_n25(x)
- end
-end
-
-def fun_l19_n392(x)
- if (x < 1)
- fun_l20_n24(x)
- else
- fun_l20_n930(x)
- end
-end
-
-def fun_l19_n393(x)
- if (x < 1)
- fun_l20_n277(x)
- else
- fun_l20_n727(x)
- end
-end
-
-def fun_l19_n394(x)
- if (x < 1)
- fun_l20_n272(x)
- else
- fun_l20_n298(x)
- end
-end
-
-def fun_l19_n395(x)
- if (x < 1)
- fun_l20_n661(x)
- else
- fun_l20_n269(x)
- end
-end
-
-def fun_l19_n396(x)
- if (x < 1)
- fun_l20_n624(x)
- else
- fun_l20_n654(x)
- end
-end
-
-def fun_l19_n397(x)
- if (x < 1)
- fun_l20_n501(x)
- else
- fun_l20_n625(x)
- end
-end
-
-def fun_l19_n398(x)
- if (x < 1)
- fun_l20_n596(x)
- else
- fun_l20_n160(x)
- end
-end
-
-def fun_l19_n399(x)
- if (x < 1)
- fun_l20_n612(x)
- else
- fun_l20_n954(x)
- end
-end
-
-def fun_l19_n400(x)
- if (x < 1)
- fun_l20_n911(x)
- else
- fun_l20_n321(x)
- end
-end
-
-def fun_l19_n401(x)
- if (x < 1)
- fun_l20_n294(x)
- else
- fun_l20_n382(x)
- end
-end
-
-def fun_l19_n402(x)
- if (x < 1)
- fun_l20_n193(x)
- else
- fun_l20_n732(x)
- end
-end
-
-def fun_l19_n403(x)
- if (x < 1)
- fun_l20_n929(x)
- else
- fun_l20_n109(x)
- end
-end
-
-def fun_l19_n404(x)
- if (x < 1)
- fun_l20_n647(x)
- else
- fun_l20_n497(x)
- end
-end
-
-def fun_l19_n405(x)
- if (x < 1)
- fun_l20_n124(x)
- else
- fun_l20_n395(x)
- end
-end
-
-def fun_l19_n406(x)
- if (x < 1)
- fun_l20_n949(x)
- else
- fun_l20_n195(x)
- end
-end
-
-def fun_l19_n407(x)
- if (x < 1)
- fun_l20_n249(x)
- else
- fun_l20_n771(x)
- end
-end
-
-def fun_l19_n408(x)
- if (x < 1)
- fun_l20_n728(x)
- else
- fun_l20_n752(x)
- end
-end
-
-def fun_l19_n409(x)
- if (x < 1)
- fun_l20_n135(x)
- else
- fun_l20_n774(x)
- end
-end
-
-def fun_l19_n410(x)
- if (x < 1)
- fun_l20_n277(x)
- else
- fun_l20_n499(x)
- end
-end
-
-def fun_l19_n411(x)
- if (x < 1)
- fun_l20_n634(x)
- else
- fun_l20_n713(x)
- end
-end
-
-def fun_l19_n412(x)
- if (x < 1)
- fun_l20_n118(x)
- else
- fun_l20_n879(x)
- end
-end
-
-def fun_l19_n413(x)
- if (x < 1)
- fun_l20_n202(x)
- else
- fun_l20_n146(x)
- end
-end
-
-def fun_l19_n414(x)
- if (x < 1)
- fun_l20_n668(x)
- else
- fun_l20_n22(x)
- end
-end
-
-def fun_l19_n415(x)
- if (x < 1)
- fun_l20_n673(x)
- else
- fun_l20_n91(x)
- end
-end
-
-def fun_l19_n416(x)
- if (x < 1)
- fun_l20_n399(x)
- else
- fun_l20_n288(x)
- end
-end
-
-def fun_l19_n417(x)
- if (x < 1)
- fun_l20_n985(x)
- else
- fun_l20_n63(x)
- end
-end
-
-def fun_l19_n418(x)
- if (x < 1)
- fun_l20_n973(x)
- else
- fun_l20_n37(x)
- end
-end
-
-def fun_l19_n419(x)
- if (x < 1)
- fun_l20_n907(x)
- else
- fun_l20_n274(x)
- end
-end
-
-def fun_l19_n420(x)
- if (x < 1)
- fun_l20_n0(x)
- else
- fun_l20_n895(x)
- end
-end
-
-def fun_l19_n421(x)
- if (x < 1)
- fun_l20_n138(x)
- else
- fun_l20_n941(x)
- end
-end
-
-def fun_l19_n422(x)
- if (x < 1)
- fun_l20_n944(x)
- else
- fun_l20_n393(x)
- end
-end
-
-def fun_l19_n423(x)
- if (x < 1)
- fun_l20_n7(x)
- else
- fun_l20_n879(x)
- end
-end
-
-def fun_l19_n424(x)
- if (x < 1)
- fun_l20_n855(x)
- else
- fun_l20_n19(x)
- end
-end
-
-def fun_l19_n425(x)
- if (x < 1)
- fun_l20_n11(x)
- else
- fun_l20_n12(x)
- end
-end
-
-def fun_l19_n426(x)
- if (x < 1)
- fun_l20_n652(x)
- else
- fun_l20_n501(x)
- end
-end
-
-def fun_l19_n427(x)
- if (x < 1)
- fun_l20_n825(x)
- else
- fun_l20_n547(x)
- end
-end
-
-def fun_l19_n428(x)
- if (x < 1)
- fun_l20_n485(x)
- else
- fun_l20_n905(x)
- end
-end
-
-def fun_l19_n429(x)
- if (x < 1)
- fun_l20_n800(x)
- else
- fun_l20_n922(x)
- end
-end
-
-def fun_l19_n430(x)
- if (x < 1)
- fun_l20_n122(x)
- else
- fun_l20_n79(x)
- end
-end
-
-def fun_l19_n431(x)
- if (x < 1)
- fun_l20_n822(x)
- else
- fun_l20_n228(x)
- end
-end
-
-def fun_l19_n432(x)
- if (x < 1)
- fun_l20_n616(x)
- else
- fun_l20_n886(x)
- end
-end
-
-def fun_l19_n433(x)
- if (x < 1)
- fun_l20_n232(x)
- else
- fun_l20_n716(x)
- end
-end
-
-def fun_l19_n434(x)
- if (x < 1)
- fun_l20_n288(x)
- else
- fun_l20_n497(x)
- end
-end
-
-def fun_l19_n435(x)
- if (x < 1)
- fun_l20_n606(x)
- else
- fun_l20_n220(x)
- end
-end
-
-def fun_l19_n436(x)
- if (x < 1)
- fun_l20_n185(x)
- else
- fun_l20_n69(x)
- end
-end
-
-def fun_l19_n437(x)
- if (x < 1)
- fun_l20_n869(x)
- else
- fun_l20_n264(x)
- end
-end
-
-def fun_l19_n438(x)
- if (x < 1)
- fun_l20_n142(x)
- else
- fun_l20_n766(x)
- end
-end
-
-def fun_l19_n439(x)
- if (x < 1)
- fun_l20_n155(x)
- else
- fun_l20_n697(x)
- end
-end
-
-def fun_l19_n440(x)
- if (x < 1)
- fun_l20_n486(x)
- else
- fun_l20_n442(x)
- end
-end
-
-def fun_l19_n441(x)
- if (x < 1)
- fun_l20_n896(x)
- else
- fun_l20_n404(x)
- end
-end
-
-def fun_l19_n442(x)
- if (x < 1)
- fun_l20_n944(x)
- else
- fun_l20_n906(x)
- end
-end
-
-def fun_l19_n443(x)
- if (x < 1)
- fun_l20_n400(x)
- else
- fun_l20_n230(x)
- end
-end
-
-def fun_l19_n444(x)
- if (x < 1)
- fun_l20_n646(x)
- else
- fun_l20_n89(x)
- end
-end
-
-def fun_l19_n445(x)
- if (x < 1)
- fun_l20_n683(x)
- else
- fun_l20_n434(x)
- end
-end
-
-def fun_l19_n446(x)
- if (x < 1)
- fun_l20_n333(x)
- else
- fun_l20_n164(x)
- end
-end
-
-def fun_l19_n447(x)
- if (x < 1)
- fun_l20_n732(x)
- else
- fun_l20_n721(x)
- end
-end
-
-def fun_l19_n448(x)
- if (x < 1)
- fun_l20_n948(x)
- else
- fun_l20_n343(x)
- end
-end
-
-def fun_l19_n449(x)
- if (x < 1)
- fun_l20_n211(x)
- else
- fun_l20_n754(x)
- end
-end
-
-def fun_l19_n450(x)
- if (x < 1)
- fun_l20_n984(x)
- else
- fun_l20_n952(x)
- end
-end
-
-def fun_l19_n451(x)
- if (x < 1)
- fun_l20_n349(x)
- else
- fun_l20_n424(x)
- end
-end
-
-def fun_l19_n452(x)
- if (x < 1)
- fun_l20_n721(x)
- else
- fun_l20_n475(x)
- end
-end
-
-def fun_l19_n453(x)
- if (x < 1)
- fun_l20_n143(x)
- else
- fun_l20_n875(x)
- end
-end
-
-def fun_l19_n454(x)
- if (x < 1)
- fun_l20_n561(x)
- else
- fun_l20_n255(x)
- end
-end
-
-def fun_l19_n455(x)
- if (x < 1)
- fun_l20_n962(x)
- else
- fun_l20_n489(x)
- end
-end
-
-def fun_l19_n456(x)
- if (x < 1)
- fun_l20_n95(x)
- else
- fun_l20_n434(x)
- end
-end
-
-def fun_l19_n457(x)
- if (x < 1)
- fun_l20_n863(x)
- else
- fun_l20_n198(x)
- end
-end
-
-def fun_l19_n458(x)
- if (x < 1)
- fun_l20_n106(x)
- else
- fun_l20_n786(x)
- end
-end
-
-def fun_l19_n459(x)
- if (x < 1)
- fun_l20_n415(x)
- else
- fun_l20_n456(x)
- end
-end
-
-def fun_l19_n460(x)
- if (x < 1)
- fun_l20_n706(x)
- else
- fun_l20_n47(x)
- end
-end
-
-def fun_l19_n461(x)
- if (x < 1)
- fun_l20_n894(x)
- else
- fun_l20_n119(x)
- end
-end
-
-def fun_l19_n462(x)
- if (x < 1)
- fun_l20_n267(x)
- else
- fun_l20_n662(x)
- end
-end
-
-def fun_l19_n463(x)
- if (x < 1)
- fun_l20_n689(x)
- else
- fun_l20_n633(x)
- end
-end
-
-def fun_l19_n464(x)
- if (x < 1)
- fun_l20_n94(x)
- else
- fun_l20_n967(x)
- end
-end
-
-def fun_l19_n465(x)
- if (x < 1)
- fun_l20_n902(x)
- else
- fun_l20_n619(x)
- end
-end
-
-def fun_l19_n466(x)
- if (x < 1)
- fun_l20_n574(x)
- else
- fun_l20_n204(x)
- end
-end
-
-def fun_l19_n467(x)
- if (x < 1)
- fun_l20_n195(x)
- else
- fun_l20_n455(x)
- end
-end
-
-def fun_l19_n468(x)
- if (x < 1)
- fun_l20_n173(x)
- else
- fun_l20_n4(x)
- end
-end
-
-def fun_l19_n469(x)
- if (x < 1)
- fun_l20_n769(x)
- else
- fun_l20_n314(x)
- end
-end
-
-def fun_l19_n470(x)
- if (x < 1)
- fun_l20_n669(x)
- else
- fun_l20_n648(x)
- end
-end
-
-def fun_l19_n471(x)
- if (x < 1)
- fun_l20_n741(x)
- else
- fun_l20_n238(x)
- end
-end
-
-def fun_l19_n472(x)
- if (x < 1)
- fun_l20_n370(x)
- else
- fun_l20_n610(x)
- end
-end
-
-def fun_l19_n473(x)
- if (x < 1)
- fun_l20_n200(x)
- else
- fun_l20_n698(x)
- end
-end
-
-def fun_l19_n474(x)
- if (x < 1)
- fun_l20_n200(x)
- else
- fun_l20_n951(x)
- end
-end
-
-def fun_l19_n475(x)
- if (x < 1)
- fun_l20_n47(x)
- else
- fun_l20_n244(x)
- end
-end
-
-def fun_l19_n476(x)
- if (x < 1)
- fun_l20_n314(x)
- else
- fun_l20_n163(x)
- end
-end
-
-def fun_l19_n477(x)
- if (x < 1)
- fun_l20_n665(x)
- else
- fun_l20_n278(x)
- end
-end
-
-def fun_l19_n478(x)
- if (x < 1)
- fun_l20_n539(x)
- else
- fun_l20_n149(x)
- end
-end
-
-def fun_l19_n479(x)
- if (x < 1)
- fun_l20_n10(x)
- else
- fun_l20_n686(x)
- end
-end
-
-def fun_l19_n480(x)
- if (x < 1)
- fun_l20_n684(x)
- else
- fun_l20_n531(x)
- end
-end
-
-def fun_l19_n481(x)
- if (x < 1)
- fun_l20_n579(x)
- else
- fun_l20_n468(x)
- end
-end
-
-def fun_l19_n482(x)
- if (x < 1)
- fun_l20_n794(x)
- else
- fun_l20_n116(x)
- end
-end
-
-def fun_l19_n483(x)
- if (x < 1)
- fun_l20_n848(x)
- else
- fun_l20_n278(x)
- end
-end
-
-def fun_l19_n484(x)
- if (x < 1)
- fun_l20_n965(x)
- else
- fun_l20_n23(x)
- end
-end
-
-def fun_l19_n485(x)
- if (x < 1)
- fun_l20_n123(x)
- else
- fun_l20_n905(x)
- end
-end
-
-def fun_l19_n486(x)
- if (x < 1)
- fun_l20_n69(x)
- else
- fun_l20_n4(x)
- end
-end
-
-def fun_l19_n487(x)
- if (x < 1)
- fun_l20_n234(x)
- else
- fun_l20_n648(x)
- end
-end
-
-def fun_l19_n488(x)
- if (x < 1)
- fun_l20_n31(x)
- else
- fun_l20_n127(x)
- end
-end
-
-def fun_l19_n489(x)
- if (x < 1)
- fun_l20_n469(x)
- else
- fun_l20_n300(x)
- end
-end
-
-def fun_l19_n490(x)
- if (x < 1)
- fun_l20_n855(x)
- else
- fun_l20_n722(x)
- end
-end
-
-def fun_l19_n491(x)
- if (x < 1)
- fun_l20_n949(x)
- else
- fun_l20_n567(x)
- end
-end
-
-def fun_l19_n492(x)
- if (x < 1)
- fun_l20_n465(x)
- else
- fun_l20_n226(x)
- end
-end
-
-def fun_l19_n493(x)
- if (x < 1)
- fun_l20_n436(x)
- else
- fun_l20_n292(x)
- end
-end
-
-def fun_l19_n494(x)
- if (x < 1)
- fun_l20_n552(x)
- else
- fun_l20_n81(x)
- end
-end
-
-def fun_l19_n495(x)
- if (x < 1)
- fun_l20_n950(x)
- else
- fun_l20_n481(x)
- end
-end
-
-def fun_l19_n496(x)
- if (x < 1)
- fun_l20_n382(x)
- else
- fun_l20_n846(x)
- end
-end
-
-def fun_l19_n497(x)
- if (x < 1)
- fun_l20_n355(x)
- else
- fun_l20_n546(x)
- end
-end
-
-def fun_l19_n498(x)
- if (x < 1)
- fun_l20_n404(x)
- else
- fun_l20_n655(x)
- end
-end
-
-def fun_l19_n499(x)
- if (x < 1)
- fun_l20_n794(x)
- else
- fun_l20_n531(x)
- end
-end
-
-def fun_l19_n500(x)
- if (x < 1)
- fun_l20_n555(x)
- else
- fun_l20_n37(x)
- end
-end
-
-def fun_l19_n501(x)
- if (x < 1)
- fun_l20_n955(x)
- else
- fun_l20_n60(x)
- end
-end
-
-def fun_l19_n502(x)
- if (x < 1)
- fun_l20_n957(x)
- else
- fun_l20_n482(x)
- end
-end
-
-def fun_l19_n503(x)
- if (x < 1)
- fun_l20_n683(x)
- else
- fun_l20_n374(x)
- end
-end
-
-def fun_l19_n504(x)
- if (x < 1)
- fun_l20_n839(x)
- else
- fun_l20_n867(x)
- end
-end
-
-def fun_l19_n505(x)
- if (x < 1)
- fun_l20_n956(x)
- else
- fun_l20_n336(x)
- end
-end
-
-def fun_l19_n506(x)
- if (x < 1)
- fun_l20_n234(x)
- else
- fun_l20_n50(x)
- end
-end
-
-def fun_l19_n507(x)
- if (x < 1)
- fun_l20_n968(x)
- else
- fun_l20_n627(x)
- end
-end
-
-def fun_l19_n508(x)
- if (x < 1)
- fun_l20_n680(x)
- else
- fun_l20_n812(x)
- end
-end
-
-def fun_l19_n509(x)
- if (x < 1)
- fun_l20_n106(x)
- else
- fun_l20_n428(x)
- end
-end
-
-def fun_l19_n510(x)
- if (x < 1)
- fun_l20_n50(x)
- else
- fun_l20_n101(x)
- end
-end
-
-def fun_l19_n511(x)
- if (x < 1)
- fun_l20_n75(x)
- else
- fun_l20_n299(x)
- end
-end
-
-def fun_l19_n512(x)
- if (x < 1)
- fun_l20_n612(x)
- else
- fun_l20_n367(x)
- end
-end
-
-def fun_l19_n513(x)
- if (x < 1)
- fun_l20_n278(x)
- else
- fun_l20_n803(x)
- end
-end
-
-def fun_l19_n514(x)
- if (x < 1)
- fun_l20_n637(x)
- else
- fun_l20_n837(x)
- end
-end
-
-def fun_l19_n515(x)
- if (x < 1)
- fun_l20_n908(x)
- else
- fun_l20_n410(x)
- end
-end
-
-def fun_l19_n516(x)
- if (x < 1)
- fun_l20_n349(x)
- else
- fun_l20_n219(x)
- end
-end
-
-def fun_l19_n517(x)
- if (x < 1)
- fun_l20_n869(x)
- else
- fun_l20_n922(x)
- end
-end
-
-def fun_l19_n518(x)
- if (x < 1)
- fun_l20_n429(x)
- else
- fun_l20_n332(x)
- end
-end
-
-def fun_l19_n519(x)
- if (x < 1)
- fun_l20_n775(x)
- else
- fun_l20_n417(x)
- end
-end
-
-def fun_l19_n520(x)
- if (x < 1)
- fun_l20_n551(x)
- else
- fun_l20_n214(x)
- end
-end
-
-def fun_l19_n521(x)
- if (x < 1)
- fun_l20_n643(x)
- else
- fun_l20_n74(x)
- end
-end
-
-def fun_l19_n522(x)
- if (x < 1)
- fun_l20_n960(x)
- else
- fun_l20_n189(x)
- end
-end
-
-def fun_l19_n523(x)
- if (x < 1)
- fun_l20_n815(x)
- else
- fun_l20_n624(x)
- end
-end
-
-def fun_l19_n524(x)
- if (x < 1)
- fun_l20_n247(x)
- else
- fun_l20_n679(x)
- end
-end
-
-def fun_l19_n525(x)
- if (x < 1)
- fun_l20_n261(x)
- else
- fun_l20_n728(x)
- end
-end
-
-def fun_l19_n526(x)
- if (x < 1)
- fun_l20_n361(x)
- else
- fun_l20_n295(x)
- end
-end
-
-def fun_l19_n527(x)
- if (x < 1)
- fun_l20_n559(x)
- else
- fun_l20_n763(x)
- end
-end
-
-def fun_l19_n528(x)
- if (x < 1)
- fun_l20_n291(x)
- else
- fun_l20_n815(x)
- end
-end
-
-def fun_l19_n529(x)
- if (x < 1)
- fun_l20_n224(x)
- else
- fun_l20_n305(x)
- end
-end
-
-def fun_l19_n530(x)
- if (x < 1)
- fun_l20_n579(x)
- else
- fun_l20_n370(x)
- end
-end
-
-def fun_l19_n531(x)
- if (x < 1)
- fun_l20_n571(x)
- else
- fun_l20_n65(x)
- end
-end
-
-def fun_l19_n532(x)
- if (x < 1)
- fun_l20_n815(x)
- else
- fun_l20_n567(x)
- end
-end
-
-def fun_l19_n533(x)
- if (x < 1)
- fun_l20_n48(x)
- else
- fun_l20_n386(x)
- end
-end
-
-def fun_l19_n534(x)
- if (x < 1)
- fun_l20_n478(x)
- else
- fun_l20_n679(x)
- end
-end
-
-def fun_l19_n535(x)
- if (x < 1)
- fun_l20_n241(x)
- else
- fun_l20_n829(x)
- end
-end
-
-def fun_l19_n536(x)
- if (x < 1)
- fun_l20_n267(x)
- else
- fun_l20_n160(x)
- end
-end
-
-def fun_l19_n537(x)
- if (x < 1)
- fun_l20_n719(x)
- else
- fun_l20_n199(x)
- end
-end
-
-def fun_l19_n538(x)
- if (x < 1)
- fun_l20_n477(x)
- else
- fun_l20_n662(x)
- end
-end
-
-def fun_l19_n539(x)
- if (x < 1)
- fun_l20_n506(x)
- else
- fun_l20_n856(x)
- end
-end
-
-def fun_l19_n540(x)
- if (x < 1)
- fun_l20_n717(x)
- else
- fun_l20_n207(x)
- end
-end
-
-def fun_l19_n541(x)
- if (x < 1)
- fun_l20_n94(x)
- else
- fun_l20_n988(x)
- end
-end
-
-def fun_l19_n542(x)
- if (x < 1)
- fun_l20_n837(x)
- else
- fun_l20_n334(x)
- end
-end
-
-def fun_l19_n543(x)
- if (x < 1)
- fun_l20_n23(x)
- else
- fun_l20_n991(x)
- end
-end
-
-def fun_l19_n544(x)
- if (x < 1)
- fun_l20_n558(x)
- else
- fun_l20_n740(x)
- end
-end
-
-def fun_l19_n545(x)
- if (x < 1)
- fun_l20_n762(x)
- else
- fun_l20_n79(x)
- end
-end
-
-def fun_l19_n546(x)
- if (x < 1)
- fun_l20_n81(x)
- else
- fun_l20_n331(x)
- end
-end
-
-def fun_l19_n547(x)
- if (x < 1)
- fun_l20_n9(x)
- else
- fun_l20_n267(x)
- end
-end
-
-def fun_l19_n548(x)
- if (x < 1)
- fun_l20_n550(x)
- else
- fun_l20_n98(x)
- end
-end
-
-def fun_l19_n549(x)
- if (x < 1)
- fun_l20_n735(x)
- else
- fun_l20_n361(x)
- end
-end
-
-def fun_l19_n550(x)
- if (x < 1)
- fun_l20_n155(x)
- else
- fun_l20_n560(x)
- end
-end
-
-def fun_l19_n551(x)
- if (x < 1)
- fun_l20_n394(x)
- else
- fun_l20_n793(x)
- end
-end
-
-def fun_l19_n552(x)
- if (x < 1)
- fun_l20_n826(x)
- else
- fun_l20_n508(x)
- end
-end
-
-def fun_l19_n553(x)
- if (x < 1)
- fun_l20_n569(x)
- else
- fun_l20_n981(x)
- end
-end
-
-def fun_l19_n554(x)
- if (x < 1)
- fun_l20_n580(x)
- else
- fun_l20_n848(x)
- end
-end
-
-def fun_l19_n555(x)
- if (x < 1)
- fun_l20_n31(x)
- else
- fun_l20_n191(x)
- end
-end
-
-def fun_l19_n556(x)
- if (x < 1)
- fun_l20_n283(x)
- else
- fun_l20_n376(x)
- end
-end
-
-def fun_l19_n557(x)
- if (x < 1)
- fun_l20_n978(x)
- else
- fun_l20_n554(x)
- end
-end
-
-def fun_l19_n558(x)
- if (x < 1)
- fun_l20_n727(x)
- else
- fun_l20_n89(x)
- end
-end
-
-def fun_l19_n559(x)
- if (x < 1)
- fun_l20_n204(x)
- else
- fun_l20_n652(x)
- end
-end
-
-def fun_l19_n560(x)
- if (x < 1)
- fun_l20_n481(x)
- else
- fun_l20_n114(x)
- end
-end
-
-def fun_l19_n561(x)
- if (x < 1)
- fun_l20_n601(x)
- else
- fun_l20_n187(x)
- end
-end
-
-def fun_l19_n562(x)
- if (x < 1)
- fun_l20_n682(x)
- else
- fun_l20_n88(x)
- end
-end
-
-def fun_l19_n563(x)
- if (x < 1)
- fun_l20_n346(x)
- else
- fun_l20_n190(x)
- end
-end
-
-def fun_l19_n564(x)
- if (x < 1)
- fun_l20_n15(x)
- else
- fun_l20_n315(x)
- end
-end
-
-def fun_l19_n565(x)
- if (x < 1)
- fun_l20_n555(x)
- else
- fun_l20_n208(x)
- end
-end
-
-def fun_l19_n566(x)
- if (x < 1)
- fun_l20_n29(x)
- else
- fun_l20_n511(x)
- end
-end
-
-def fun_l19_n567(x)
- if (x < 1)
- fun_l20_n897(x)
- else
- fun_l20_n309(x)
- end
-end
-
-def fun_l19_n568(x)
- if (x < 1)
- fun_l20_n586(x)
- else
- fun_l20_n602(x)
- end
-end
-
-def fun_l19_n569(x)
- if (x < 1)
- fun_l20_n51(x)
- else
- fun_l20_n483(x)
- end
-end
-
-def fun_l19_n570(x)
- if (x < 1)
- fun_l20_n159(x)
- else
- fun_l20_n5(x)
- end
-end
-
-def fun_l19_n571(x)
- if (x < 1)
- fun_l20_n892(x)
- else
- fun_l20_n336(x)
- end
-end
-
-def fun_l19_n572(x)
- if (x < 1)
- fun_l20_n203(x)
- else
- fun_l20_n287(x)
- end
-end
-
-def fun_l19_n573(x)
- if (x < 1)
- fun_l20_n41(x)
- else
- fun_l20_n51(x)
- end
-end
-
-def fun_l19_n574(x)
- if (x < 1)
- fun_l20_n977(x)
- else
- fun_l20_n474(x)
- end
-end
-
-def fun_l19_n575(x)
- if (x < 1)
- fun_l20_n247(x)
- else
- fun_l20_n281(x)
- end
-end
-
-def fun_l19_n576(x)
- if (x < 1)
- fun_l20_n877(x)
- else
- fun_l20_n836(x)
- end
-end
-
-def fun_l19_n577(x)
- if (x < 1)
- fun_l20_n527(x)
- else
- fun_l20_n549(x)
- end
-end
-
-def fun_l19_n578(x)
- if (x < 1)
- fun_l20_n102(x)
- else
- fun_l20_n906(x)
- end
-end
-
-def fun_l19_n579(x)
- if (x < 1)
- fun_l20_n842(x)
- else
- fun_l20_n554(x)
- end
-end
-
-def fun_l19_n580(x)
- if (x < 1)
- fun_l20_n371(x)
- else
- fun_l20_n44(x)
- end
-end
-
-def fun_l19_n581(x)
- if (x < 1)
- fun_l20_n306(x)
- else
- fun_l20_n571(x)
- end
-end
-
-def fun_l19_n582(x)
- if (x < 1)
- fun_l20_n548(x)
- else
- fun_l20_n596(x)
- end
-end
-
-def fun_l19_n583(x)
- if (x < 1)
- fun_l20_n724(x)
- else
- fun_l20_n835(x)
- end
-end
-
-def fun_l19_n584(x)
- if (x < 1)
- fun_l20_n238(x)
- else
- fun_l20_n408(x)
- end
-end
-
-def fun_l19_n585(x)
- if (x < 1)
- fun_l20_n378(x)
- else
- fun_l20_n272(x)
- end
-end
-
-def fun_l19_n586(x)
- if (x < 1)
- fun_l20_n647(x)
- else
- fun_l20_n814(x)
- end
-end
-
-def fun_l19_n587(x)
- if (x < 1)
- fun_l20_n210(x)
- else
- fun_l20_n801(x)
- end
-end
-
-def fun_l19_n588(x)
- if (x < 1)
- fun_l20_n796(x)
- else
- fun_l20_n329(x)
- end
-end
-
-def fun_l19_n589(x)
- if (x < 1)
- fun_l20_n403(x)
- else
- fun_l20_n392(x)
- end
-end
-
-def fun_l19_n590(x)
- if (x < 1)
- fun_l20_n677(x)
- else
- fun_l20_n574(x)
- end
-end
-
-def fun_l19_n591(x)
- if (x < 1)
- fun_l20_n183(x)
- else
- fun_l20_n962(x)
- end
-end
-
-def fun_l19_n592(x)
- if (x < 1)
- fun_l20_n230(x)
- else
- fun_l20_n783(x)
- end
-end
-
-def fun_l19_n593(x)
- if (x < 1)
- fun_l20_n191(x)
- else
- fun_l20_n42(x)
- end
-end
-
-def fun_l19_n594(x)
- if (x < 1)
- fun_l20_n244(x)
- else
- fun_l20_n760(x)
- end
-end
-
-def fun_l19_n595(x)
- if (x < 1)
- fun_l20_n754(x)
- else
- fun_l20_n570(x)
- end
-end
-
-def fun_l19_n596(x)
- if (x < 1)
- fun_l20_n612(x)
- else
- fun_l20_n287(x)
- end
-end
-
-def fun_l19_n597(x)
- if (x < 1)
- fun_l20_n89(x)
- else
- fun_l20_n625(x)
- end
-end
-
-def fun_l19_n598(x)
- if (x < 1)
- fun_l20_n782(x)
- else
- fun_l20_n516(x)
- end
-end
-
-def fun_l19_n599(x)
- if (x < 1)
- fun_l20_n75(x)
- else
- fun_l20_n857(x)
- end
-end
-
-def fun_l19_n600(x)
- if (x < 1)
- fun_l20_n717(x)
- else
- fun_l20_n408(x)
- end
-end
-
-def fun_l19_n601(x)
- if (x < 1)
- fun_l20_n528(x)
- else
- fun_l20_n761(x)
- end
-end
-
-def fun_l19_n602(x)
- if (x < 1)
- fun_l20_n319(x)
- else
- fun_l20_n645(x)
- end
-end
-
-def fun_l19_n603(x)
- if (x < 1)
- fun_l20_n20(x)
- else
- fun_l20_n621(x)
- end
-end
-
-def fun_l19_n604(x)
- if (x < 1)
- fun_l20_n118(x)
- else
- fun_l20_n699(x)
- end
-end
-
-def fun_l19_n605(x)
- if (x < 1)
- fun_l20_n19(x)
- else
- fun_l20_n63(x)
- end
-end
-
-def fun_l19_n606(x)
- if (x < 1)
- fun_l20_n845(x)
- else
- fun_l20_n618(x)
- end
-end
-
-def fun_l19_n607(x)
- if (x < 1)
- fun_l20_n733(x)
- else
- fun_l20_n880(x)
- end
-end
-
-def fun_l19_n608(x)
- if (x < 1)
- fun_l20_n785(x)
- else
- fun_l20_n254(x)
- end
-end
-
-def fun_l19_n609(x)
- if (x < 1)
- fun_l20_n393(x)
- else
- fun_l20_n946(x)
- end
-end
-
-def fun_l19_n610(x)
- if (x < 1)
- fun_l20_n635(x)
- else
- fun_l20_n418(x)
- end
-end
-
-def fun_l19_n611(x)
- if (x < 1)
- fun_l20_n987(x)
- else
- fun_l20_n703(x)
- end
-end
-
-def fun_l19_n612(x)
- if (x < 1)
- fun_l20_n130(x)
- else
- fun_l20_n439(x)
- end
-end
-
-def fun_l19_n613(x)
- if (x < 1)
- fun_l20_n516(x)
- else
- fun_l20_n724(x)
- end
-end
-
-def fun_l19_n614(x)
- if (x < 1)
- fun_l20_n44(x)
- else
- fun_l20_n102(x)
- end
-end
-
-def fun_l19_n615(x)
- if (x < 1)
- fun_l20_n353(x)
- else
- fun_l20_n999(x)
- end
-end
-
-def fun_l19_n616(x)
- if (x < 1)
- fun_l20_n191(x)
- else
- fun_l20_n726(x)
- end
-end
-
-def fun_l19_n617(x)
- if (x < 1)
- fun_l20_n375(x)
- else
- fun_l20_n575(x)
- end
-end
-
-def fun_l19_n618(x)
- if (x < 1)
- fun_l20_n719(x)
- else
- fun_l20_n581(x)
- end
-end
-
-def fun_l19_n619(x)
- if (x < 1)
- fun_l20_n960(x)
- else
- fun_l20_n316(x)
- end
-end
-
-def fun_l19_n620(x)
- if (x < 1)
- fun_l20_n860(x)
- else
- fun_l20_n784(x)
- end
-end
-
-def fun_l19_n621(x)
- if (x < 1)
- fun_l20_n124(x)
- else
- fun_l20_n577(x)
- end
-end
-
-def fun_l19_n622(x)
- if (x < 1)
- fun_l20_n547(x)
- else
- fun_l20_n623(x)
- end
-end
-
-def fun_l19_n623(x)
- if (x < 1)
- fun_l20_n842(x)
- else
- fun_l20_n380(x)
- end
-end
-
-def fun_l19_n624(x)
- if (x < 1)
- fun_l20_n331(x)
- else
- fun_l20_n473(x)
- end
-end
-
-def fun_l19_n625(x)
- if (x < 1)
- fun_l20_n118(x)
- else
- fun_l20_n392(x)
- end
-end
-
-def fun_l19_n626(x)
- if (x < 1)
- fun_l20_n836(x)
- else
- fun_l20_n988(x)
- end
-end
-
-def fun_l19_n627(x)
- if (x < 1)
- fun_l20_n641(x)
- else
- fun_l20_n372(x)
- end
-end
-
-def fun_l19_n628(x)
- if (x < 1)
- fun_l20_n377(x)
- else
- fun_l20_n780(x)
- end
-end
-
-def fun_l19_n629(x)
- if (x < 1)
- fun_l20_n180(x)
- else
- fun_l20_n670(x)
- end
-end
-
-def fun_l19_n630(x)
- if (x < 1)
- fun_l20_n985(x)
- else
- fun_l20_n613(x)
- end
-end
-
-def fun_l19_n631(x)
- if (x < 1)
- fun_l20_n149(x)
- else
- fun_l20_n754(x)
- end
-end
-
-def fun_l19_n632(x)
- if (x < 1)
- fun_l20_n967(x)
- else
- fun_l20_n940(x)
- end
-end
-
-def fun_l19_n633(x)
- if (x < 1)
- fun_l20_n91(x)
- else
- fun_l20_n772(x)
- end
-end
-
-def fun_l19_n634(x)
- if (x < 1)
- fun_l20_n637(x)
- else
- fun_l20_n296(x)
- end
-end
-
-def fun_l19_n635(x)
- if (x < 1)
- fun_l20_n50(x)
- else
- fun_l20_n314(x)
- end
-end
-
-def fun_l19_n636(x)
- if (x < 1)
- fun_l20_n367(x)
- else
- fun_l20_n849(x)
- end
-end
-
-def fun_l19_n637(x)
- if (x < 1)
- fun_l20_n229(x)
- else
- fun_l20_n550(x)
- end
-end
-
-def fun_l19_n638(x)
- if (x < 1)
- fun_l20_n680(x)
- else
- fun_l20_n783(x)
- end
-end
-
-def fun_l19_n639(x)
- if (x < 1)
- fun_l20_n879(x)
- else
- fun_l20_n264(x)
- end
-end
-
-def fun_l19_n640(x)
- if (x < 1)
- fun_l20_n143(x)
- else
- fun_l20_n455(x)
- end
-end
-
-def fun_l19_n641(x)
- if (x < 1)
- fun_l20_n191(x)
- else
- fun_l20_n110(x)
- end
-end
-
-def fun_l19_n642(x)
- if (x < 1)
- fun_l20_n782(x)
- else
- fun_l20_n43(x)
- end
-end
-
-def fun_l19_n643(x)
- if (x < 1)
- fun_l20_n320(x)
- else
- fun_l20_n376(x)
- end
-end
-
-def fun_l19_n644(x)
- if (x < 1)
- fun_l20_n554(x)
- else
- fun_l20_n667(x)
- end
-end
-
-def fun_l19_n645(x)
- if (x < 1)
- fun_l20_n29(x)
- else
- fun_l20_n938(x)
- end
-end
-
-def fun_l19_n646(x)
- if (x < 1)
- fun_l20_n789(x)
- else
- fun_l20_n907(x)
- end
-end
-
-def fun_l19_n647(x)
- if (x < 1)
- fun_l20_n859(x)
- else
- fun_l20_n138(x)
- end
-end
-
-def fun_l19_n648(x)
- if (x < 1)
- fun_l20_n373(x)
- else
- fun_l20_n843(x)
- end
-end
-
-def fun_l19_n649(x)
- if (x < 1)
- fun_l20_n50(x)
- else
- fun_l20_n982(x)
- end
-end
-
-def fun_l19_n650(x)
- if (x < 1)
- fun_l20_n622(x)
- else
- fun_l20_n368(x)
- end
-end
-
-def fun_l19_n651(x)
- if (x < 1)
- fun_l20_n231(x)
- else
- fun_l20_n523(x)
- end
-end
-
-def fun_l19_n652(x)
- if (x < 1)
- fun_l20_n233(x)
- else
- fun_l20_n963(x)
- end
-end
-
-def fun_l19_n653(x)
- if (x < 1)
- fun_l20_n363(x)
- else
- fun_l20_n177(x)
- end
-end
-
-def fun_l19_n654(x)
- if (x < 1)
- fun_l20_n952(x)
- else
- fun_l20_n96(x)
- end
-end
-
-def fun_l19_n655(x)
- if (x < 1)
- fun_l20_n98(x)
- else
- fun_l20_n93(x)
- end
-end
-
-def fun_l19_n656(x)
- if (x < 1)
- fun_l20_n200(x)
- else
- fun_l20_n137(x)
- end
-end
-
-def fun_l19_n657(x)
- if (x < 1)
- fun_l20_n485(x)
- else
- fun_l20_n45(x)
- end
-end
-
-def fun_l19_n658(x)
- if (x < 1)
- fun_l20_n234(x)
- else
- fun_l20_n366(x)
- end
-end
-
-def fun_l19_n659(x)
- if (x < 1)
- fun_l20_n120(x)
- else
- fun_l20_n850(x)
- end
-end
-
-def fun_l19_n660(x)
- if (x < 1)
- fun_l20_n932(x)
- else
- fun_l20_n551(x)
- end
-end
-
-def fun_l19_n661(x)
- if (x < 1)
- fun_l20_n952(x)
- else
- fun_l20_n178(x)
- end
-end
-
-def fun_l19_n662(x)
- if (x < 1)
- fun_l20_n761(x)
- else
- fun_l20_n2(x)
- end
-end
-
-def fun_l19_n663(x)
- if (x < 1)
- fun_l20_n674(x)
- else
- fun_l20_n698(x)
- end
-end
-
-def fun_l19_n664(x)
- if (x < 1)
- fun_l20_n669(x)
- else
- fun_l20_n563(x)
- end
-end
-
-def fun_l19_n665(x)
- if (x < 1)
- fun_l20_n106(x)
- else
- fun_l20_n442(x)
- end
-end
-
-def fun_l19_n666(x)
- if (x < 1)
- fun_l20_n476(x)
- else
- fun_l20_n620(x)
- end
-end
-
-def fun_l19_n667(x)
- if (x < 1)
- fun_l20_n813(x)
- else
- fun_l20_n501(x)
- end
-end
-
-def fun_l19_n668(x)
- if (x < 1)
- fun_l20_n773(x)
- else
- fun_l20_n485(x)
- end
-end
-
-def fun_l19_n669(x)
- if (x < 1)
- fun_l20_n533(x)
- else
- fun_l20_n801(x)
- end
-end
-
-def fun_l19_n670(x)
- if (x < 1)
- fun_l20_n64(x)
- else
- fun_l20_n872(x)
- end
-end
-
-def fun_l19_n671(x)
- if (x < 1)
- fun_l20_n770(x)
- else
- fun_l20_n101(x)
- end
-end
-
-def fun_l19_n672(x)
- if (x < 1)
- fun_l20_n22(x)
- else
- fun_l20_n644(x)
- end
-end
-
-def fun_l19_n673(x)
- if (x < 1)
- fun_l20_n634(x)
- else
- fun_l20_n955(x)
- end
-end
-
-def fun_l19_n674(x)
- if (x < 1)
- fun_l20_n976(x)
- else
- fun_l20_n665(x)
- end
-end
-
-def fun_l19_n675(x)
- if (x < 1)
- fun_l20_n988(x)
- else
- fun_l20_n793(x)
- end
-end
-
-def fun_l19_n676(x)
- if (x < 1)
- fun_l20_n235(x)
- else
- fun_l20_n833(x)
- end
-end
-
-def fun_l19_n677(x)
- if (x < 1)
- fun_l20_n604(x)
- else
- fun_l20_n797(x)
- end
-end
-
-def fun_l19_n678(x)
- if (x < 1)
- fun_l20_n622(x)
- else
- fun_l20_n896(x)
- end
-end
-
-def fun_l19_n679(x)
- if (x < 1)
- fun_l20_n190(x)
- else
- fun_l20_n281(x)
- end
-end
-
-def fun_l19_n680(x)
- if (x < 1)
- fun_l20_n325(x)
- else
- fun_l20_n669(x)
- end
-end
-
-def fun_l19_n681(x)
- if (x < 1)
- fun_l20_n898(x)
- else
- fun_l20_n352(x)
- end
-end
-
-def fun_l19_n682(x)
- if (x < 1)
- fun_l20_n820(x)
- else
- fun_l20_n117(x)
- end
-end
-
-def fun_l19_n683(x)
- if (x < 1)
- fun_l20_n148(x)
- else
- fun_l20_n842(x)
- end
-end
-
-def fun_l19_n684(x)
- if (x < 1)
- fun_l20_n468(x)
- else
- fun_l20_n596(x)
- end
-end
-
-def fun_l19_n685(x)
- if (x < 1)
- fun_l20_n285(x)
- else
- fun_l20_n730(x)
- end
-end
-
-def fun_l19_n686(x)
- if (x < 1)
- fun_l20_n426(x)
- else
- fun_l20_n657(x)
- end
-end
-
-def fun_l19_n687(x)
- if (x < 1)
- fun_l20_n874(x)
- else
- fun_l20_n867(x)
- end
-end
-
-def fun_l19_n688(x)
- if (x < 1)
- fun_l20_n451(x)
- else
- fun_l20_n846(x)
- end
-end
-
-def fun_l19_n689(x)
- if (x < 1)
- fun_l20_n425(x)
- else
- fun_l20_n796(x)
- end
-end
-
-def fun_l19_n690(x)
- if (x < 1)
- fun_l20_n37(x)
- else
- fun_l20_n301(x)
- end
-end
-
-def fun_l19_n691(x)
- if (x < 1)
- fun_l20_n886(x)
- else
- fun_l20_n513(x)
- end
-end
-
-def fun_l19_n692(x)
- if (x < 1)
- fun_l20_n426(x)
- else
- fun_l20_n46(x)
- end
-end
-
-def fun_l19_n693(x)
- if (x < 1)
- fun_l20_n622(x)
- else
- fun_l20_n738(x)
- end
-end
-
-def fun_l19_n694(x)
- if (x < 1)
- fun_l20_n530(x)
- else
- fun_l20_n981(x)
- end
-end
-
-def fun_l19_n695(x)
- if (x < 1)
- fun_l20_n568(x)
- else
- fun_l20_n934(x)
- end
-end
-
-def fun_l19_n696(x)
- if (x < 1)
- fun_l20_n974(x)
- else
- fun_l20_n585(x)
- end
-end
-
-def fun_l19_n697(x)
- if (x < 1)
- fun_l20_n780(x)
- else
- fun_l20_n408(x)
- end
-end
-
-def fun_l19_n698(x)
- if (x < 1)
- fun_l20_n373(x)
- else
- fun_l20_n163(x)
- end
-end
-
-def fun_l19_n699(x)
- if (x < 1)
- fun_l20_n745(x)
- else
- fun_l20_n4(x)
- end
-end
-
-def fun_l19_n700(x)
- if (x < 1)
- fun_l20_n307(x)
- else
- fun_l20_n172(x)
- end
-end
-
-def fun_l19_n701(x)
- if (x < 1)
- fun_l20_n342(x)
- else
- fun_l20_n381(x)
- end
-end
-
-def fun_l19_n702(x)
- if (x < 1)
- fun_l20_n67(x)
- else
- fun_l20_n841(x)
- end
-end
-
-def fun_l19_n703(x)
- if (x < 1)
- fun_l20_n697(x)
- else
- fun_l20_n597(x)
- end
-end
-
-def fun_l19_n704(x)
- if (x < 1)
- fun_l20_n809(x)
- else
- fun_l20_n306(x)
- end
-end
-
-def fun_l19_n705(x)
- if (x < 1)
- fun_l20_n575(x)
- else
- fun_l20_n401(x)
- end
-end
-
-def fun_l19_n706(x)
- if (x < 1)
- fun_l20_n651(x)
- else
- fun_l20_n552(x)
- end
-end
-
-def fun_l19_n707(x)
- if (x < 1)
- fun_l20_n644(x)
- else
- fun_l20_n697(x)
- end
-end
-
-def fun_l19_n708(x)
- if (x < 1)
- fun_l20_n572(x)
- else
- fun_l20_n86(x)
- end
-end
-
-def fun_l19_n709(x)
- if (x < 1)
- fun_l20_n239(x)
- else
- fun_l20_n18(x)
- end
-end
-
-def fun_l19_n710(x)
- if (x < 1)
- fun_l20_n48(x)
- else
- fun_l20_n822(x)
- end
-end
-
-def fun_l19_n711(x)
- if (x < 1)
- fun_l20_n126(x)
- else
- fun_l20_n186(x)
- end
-end
-
-def fun_l19_n712(x)
- if (x < 1)
- fun_l20_n552(x)
- else
- fun_l20_n901(x)
- end
-end
-
-def fun_l19_n713(x)
- if (x < 1)
- fun_l20_n993(x)
- else
- fun_l20_n313(x)
- end
-end
-
-def fun_l19_n714(x)
- if (x < 1)
- fun_l20_n918(x)
- else
- fun_l20_n718(x)
- end
-end
-
-def fun_l19_n715(x)
- if (x < 1)
- fun_l20_n442(x)
- else
- fun_l20_n652(x)
- end
-end
-
-def fun_l19_n716(x)
- if (x < 1)
- fun_l20_n624(x)
- else
- fun_l20_n492(x)
- end
-end
-
-def fun_l19_n717(x)
- if (x < 1)
- fun_l20_n585(x)
- else
- fun_l20_n980(x)
- end
-end
-
-def fun_l19_n718(x)
- if (x < 1)
- fun_l20_n159(x)
- else
- fun_l20_n327(x)
- end
-end
-
-def fun_l19_n719(x)
- if (x < 1)
- fun_l20_n867(x)
- else
- fun_l20_n239(x)
- end
-end
-
-def fun_l19_n720(x)
- if (x < 1)
- fun_l20_n551(x)
- else
- fun_l20_n123(x)
- end
-end
-
-def fun_l19_n721(x)
- if (x < 1)
- fun_l20_n794(x)
- else
- fun_l20_n1(x)
- end
-end
-
-def fun_l19_n722(x)
- if (x < 1)
- fun_l20_n193(x)
- else
- fun_l20_n847(x)
- end
-end
-
-def fun_l19_n723(x)
- if (x < 1)
- fun_l20_n560(x)
- else
- fun_l20_n163(x)
- end
-end
-
-def fun_l19_n724(x)
- if (x < 1)
- fun_l20_n338(x)
- else
- fun_l20_n411(x)
- end
-end
-
-def fun_l19_n725(x)
- if (x < 1)
- fun_l20_n227(x)
- else
- fun_l20_n437(x)
- end
-end
-
-def fun_l19_n726(x)
- if (x < 1)
- fun_l20_n691(x)
- else
- fun_l20_n821(x)
- end
-end
-
-def fun_l19_n727(x)
- if (x < 1)
- fun_l20_n578(x)
- else
- fun_l20_n589(x)
- end
-end
-
-def fun_l19_n728(x)
- if (x < 1)
- fun_l20_n990(x)
- else
- fun_l20_n164(x)
- end
-end
-
-def fun_l19_n729(x)
- if (x < 1)
- fun_l20_n620(x)
- else
- fun_l20_n736(x)
- end
-end
-
-def fun_l19_n730(x)
- if (x < 1)
- fun_l20_n980(x)
- else
- fun_l20_n345(x)
- end
-end
-
-def fun_l19_n731(x)
- if (x < 1)
- fun_l20_n302(x)
- else
- fun_l20_n75(x)
- end
-end
-
-def fun_l19_n732(x)
- if (x < 1)
- fun_l20_n684(x)
- else
- fun_l20_n2(x)
- end
-end
-
-def fun_l19_n733(x)
- if (x < 1)
- fun_l20_n11(x)
- else
- fun_l20_n503(x)
- end
-end
-
-def fun_l19_n734(x)
- if (x < 1)
- fun_l20_n719(x)
- else
- fun_l20_n745(x)
- end
-end
-
-def fun_l19_n735(x)
- if (x < 1)
- fun_l20_n74(x)
- else
- fun_l20_n413(x)
- end
-end
-
-def fun_l19_n736(x)
- if (x < 1)
- fun_l20_n858(x)
- else
- fun_l20_n224(x)
- end
-end
-
-def fun_l19_n737(x)
- if (x < 1)
- fun_l20_n372(x)
- else
- fun_l20_n1(x)
- end
-end
-
-def fun_l19_n738(x)
- if (x < 1)
- fun_l20_n274(x)
- else
- fun_l20_n967(x)
- end
-end
-
-def fun_l19_n739(x)
- if (x < 1)
- fun_l20_n191(x)
- else
- fun_l20_n984(x)
- end
-end
-
-def fun_l19_n740(x)
- if (x < 1)
- fun_l20_n646(x)
- else
- fun_l20_n279(x)
- end
-end
-
-def fun_l19_n741(x)
- if (x < 1)
- fun_l20_n55(x)
- else
- fun_l20_n947(x)
- end
-end
-
-def fun_l19_n742(x)
- if (x < 1)
- fun_l20_n306(x)
- else
- fun_l20_n798(x)
- end
-end
-
-def fun_l19_n743(x)
- if (x < 1)
- fun_l20_n571(x)
- else
- fun_l20_n905(x)
- end
-end
-
-def fun_l19_n744(x)
- if (x < 1)
- fun_l20_n270(x)
- else
- fun_l20_n290(x)
- end
-end
-
-def fun_l19_n745(x)
- if (x < 1)
- fun_l20_n39(x)
- else
- fun_l20_n983(x)
- end
-end
-
-def fun_l19_n746(x)
- if (x < 1)
- fun_l20_n405(x)
- else
- fun_l20_n727(x)
- end
-end
-
-def fun_l19_n747(x)
- if (x < 1)
- fun_l20_n424(x)
- else
- fun_l20_n597(x)
- end
-end
-
-def fun_l19_n748(x)
- if (x < 1)
- fun_l20_n602(x)
- else
- fun_l20_n467(x)
- end
-end
-
-def fun_l19_n749(x)
- if (x < 1)
- fun_l20_n859(x)
- else
- fun_l20_n76(x)
- end
-end
-
-def fun_l19_n750(x)
- if (x < 1)
- fun_l20_n201(x)
- else
- fun_l20_n948(x)
- end
-end
-
-def fun_l19_n751(x)
- if (x < 1)
- fun_l20_n998(x)
- else
- fun_l20_n425(x)
- end
-end
-
-def fun_l19_n752(x)
- if (x < 1)
- fun_l20_n352(x)
- else
- fun_l20_n762(x)
- end
-end
-
-def fun_l19_n753(x)
- if (x < 1)
- fun_l20_n996(x)
- else
- fun_l20_n136(x)
- end
-end
-
-def fun_l19_n754(x)
- if (x < 1)
- fun_l20_n462(x)
- else
- fun_l20_n544(x)
- end
-end
-
-def fun_l19_n755(x)
- if (x < 1)
- fun_l20_n126(x)
- else
- fun_l20_n857(x)
- end
-end
-
-def fun_l19_n756(x)
- if (x < 1)
- fun_l20_n695(x)
- else
- fun_l20_n444(x)
- end
-end
-
-def fun_l19_n757(x)
- if (x < 1)
- fun_l20_n694(x)
- else
- fun_l20_n718(x)
- end
-end
-
-def fun_l19_n758(x)
- if (x < 1)
- fun_l20_n308(x)
- else
- fun_l20_n867(x)
- end
-end
-
-def fun_l19_n759(x)
- if (x < 1)
- fun_l20_n224(x)
- else
- fun_l20_n739(x)
- end
-end
-
-def fun_l19_n760(x)
- if (x < 1)
- fun_l20_n286(x)
- else
- fun_l20_n660(x)
- end
-end
-
-def fun_l19_n761(x)
- if (x < 1)
- fun_l20_n486(x)
- else
- fun_l20_n614(x)
- end
-end
-
-def fun_l19_n762(x)
- if (x < 1)
- fun_l20_n234(x)
- else
- fun_l20_n812(x)
- end
-end
-
-def fun_l19_n763(x)
- if (x < 1)
- fun_l20_n663(x)
- else
- fun_l20_n649(x)
- end
-end
-
-def fun_l19_n764(x)
- if (x < 1)
- fun_l20_n815(x)
- else
- fun_l20_n436(x)
- end
-end
-
-def fun_l19_n765(x)
- if (x < 1)
- fun_l20_n330(x)
- else
- fun_l20_n350(x)
- end
-end
-
-def fun_l19_n766(x)
- if (x < 1)
- fun_l20_n532(x)
- else
- fun_l20_n676(x)
- end
-end
-
-def fun_l19_n767(x)
- if (x < 1)
- fun_l20_n74(x)
- else
- fun_l20_n182(x)
- end
-end
-
-def fun_l19_n768(x)
- if (x < 1)
- fun_l20_n432(x)
- else
- fun_l20_n912(x)
- end
-end
-
-def fun_l19_n769(x)
- if (x < 1)
- fun_l20_n413(x)
- else
- fun_l20_n315(x)
- end
-end
-
-def fun_l19_n770(x)
- if (x < 1)
- fun_l20_n457(x)
- else
- fun_l20_n917(x)
- end
-end
-
-def fun_l19_n771(x)
- if (x < 1)
- fun_l20_n435(x)
- else
- fun_l20_n768(x)
- end
-end
-
-def fun_l19_n772(x)
- if (x < 1)
- fun_l20_n994(x)
- else
- fun_l20_n865(x)
- end
-end
-
-def fun_l19_n773(x)
- if (x < 1)
- fun_l20_n425(x)
- else
- fun_l20_n347(x)
- end
-end
-
-def fun_l19_n774(x)
- if (x < 1)
- fun_l20_n405(x)
- else
- fun_l20_n1(x)
- end
-end
-
-def fun_l19_n775(x)
- if (x < 1)
- fun_l20_n460(x)
- else
- fun_l20_n417(x)
- end
-end
-
-def fun_l19_n776(x)
- if (x < 1)
- fun_l20_n539(x)
- else
- fun_l20_n825(x)
- end
-end
-
-def fun_l19_n777(x)
- if (x < 1)
- fun_l20_n180(x)
- else
- fun_l20_n613(x)
- end
-end
-
-def fun_l19_n778(x)
- if (x < 1)
- fun_l20_n452(x)
- else
- fun_l20_n717(x)
- end
-end
-
-def fun_l19_n779(x)
- if (x < 1)
- fun_l20_n265(x)
- else
- fun_l20_n802(x)
- end
-end
-
-def fun_l19_n780(x)
- if (x < 1)
- fun_l20_n941(x)
- else
- fun_l20_n939(x)
- end
-end
-
-def fun_l19_n781(x)
- if (x < 1)
- fun_l20_n777(x)
- else
- fun_l20_n796(x)
- end
-end
-
-def fun_l19_n782(x)
- if (x < 1)
- fun_l20_n924(x)
- else
- fun_l20_n442(x)
- end
-end
-
-def fun_l19_n783(x)
- if (x < 1)
- fun_l20_n901(x)
- else
- fun_l20_n817(x)
- end
-end
-
-def fun_l19_n784(x)
- if (x < 1)
- fun_l20_n101(x)
- else
- fun_l20_n983(x)
- end
-end
-
-def fun_l19_n785(x)
- if (x < 1)
- fun_l20_n992(x)
- else
- fun_l20_n790(x)
- end
-end
-
-def fun_l19_n786(x)
- if (x < 1)
- fun_l20_n426(x)
- else
- fun_l20_n337(x)
- end
-end
-
-def fun_l19_n787(x)
- if (x < 1)
- fun_l20_n812(x)
- else
- fun_l20_n7(x)
- end
-end
-
-def fun_l19_n788(x)
- if (x < 1)
- fun_l20_n768(x)
- else
- fun_l20_n25(x)
- end
-end
-
-def fun_l19_n789(x)
- if (x < 1)
- fun_l20_n292(x)
- else
- fun_l20_n440(x)
- end
-end
-
-def fun_l19_n790(x)
- if (x < 1)
- fun_l20_n855(x)
- else
- fun_l20_n191(x)
- end
-end
-
-def fun_l19_n791(x)
- if (x < 1)
- fun_l20_n32(x)
- else
- fun_l20_n855(x)
- end
-end
-
-def fun_l19_n792(x)
- if (x < 1)
- fun_l20_n920(x)
- else
- fun_l20_n198(x)
- end
-end
-
-def fun_l19_n793(x)
- if (x < 1)
- fun_l20_n411(x)
- else
- fun_l20_n396(x)
- end
-end
-
-def fun_l19_n794(x)
- if (x < 1)
- fun_l20_n977(x)
- else
- fun_l20_n712(x)
- end
-end
-
-def fun_l19_n795(x)
- if (x < 1)
- fun_l20_n636(x)
- else
- fun_l20_n66(x)
- end
-end
-
-def fun_l19_n796(x)
- if (x < 1)
- fun_l20_n137(x)
- else
- fun_l20_n656(x)
- end
-end
-
-def fun_l19_n797(x)
- if (x < 1)
- fun_l20_n51(x)
- else
- fun_l20_n244(x)
- end
-end
-
-def fun_l19_n798(x)
- if (x < 1)
- fun_l20_n426(x)
- else
- fun_l20_n418(x)
- end
-end
-
-def fun_l19_n799(x)
- if (x < 1)
- fun_l20_n272(x)
- else
- fun_l20_n365(x)
- end
-end
-
-def fun_l19_n800(x)
- if (x < 1)
- fun_l20_n361(x)
- else
- fun_l20_n952(x)
- end
-end
-
-def fun_l19_n801(x)
- if (x < 1)
- fun_l20_n428(x)
- else
- fun_l20_n683(x)
- end
-end
-
-def fun_l19_n802(x)
- if (x < 1)
- fun_l20_n54(x)
- else
- fun_l20_n86(x)
- end
-end
-
-def fun_l19_n803(x)
- if (x < 1)
- fun_l20_n771(x)
- else
- fun_l20_n555(x)
- end
-end
-
-def fun_l19_n804(x)
- if (x < 1)
- fun_l20_n498(x)
- else
- fun_l20_n744(x)
- end
-end
-
-def fun_l19_n805(x)
- if (x < 1)
- fun_l20_n30(x)
- else
- fun_l20_n813(x)
- end
-end
-
-def fun_l19_n806(x)
- if (x < 1)
- fun_l20_n96(x)
- else
- fun_l20_n295(x)
- end
-end
-
-def fun_l19_n807(x)
- if (x < 1)
- fun_l20_n128(x)
- else
- fun_l20_n584(x)
- end
-end
-
-def fun_l19_n808(x)
- if (x < 1)
- fun_l20_n818(x)
- else
- fun_l20_n396(x)
- end
-end
-
-def fun_l19_n809(x)
- if (x < 1)
- fun_l20_n896(x)
- else
- fun_l20_n779(x)
- end
-end
-
-def fun_l19_n810(x)
- if (x < 1)
- fun_l20_n40(x)
- else
- fun_l20_n638(x)
- end
-end
-
-def fun_l19_n811(x)
- if (x < 1)
- fun_l20_n925(x)
- else
- fun_l20_n914(x)
- end
-end
-
-def fun_l19_n812(x)
- if (x < 1)
- fun_l20_n217(x)
- else
- fun_l20_n833(x)
- end
-end
-
-def fun_l19_n813(x)
- if (x < 1)
- fun_l20_n687(x)
- else
- fun_l20_n469(x)
- end
-end
-
-def fun_l19_n814(x)
- if (x < 1)
- fun_l20_n709(x)
- else
- fun_l20_n196(x)
- end
-end
-
-def fun_l19_n815(x)
- if (x < 1)
- fun_l20_n633(x)
- else
- fun_l20_n622(x)
- end
-end
-
-def fun_l19_n816(x)
- if (x < 1)
- fun_l20_n976(x)
- else
- fun_l20_n691(x)
- end
-end
-
-def fun_l19_n817(x)
- if (x < 1)
- fun_l20_n260(x)
- else
- fun_l20_n592(x)
- end
-end
-
-def fun_l19_n818(x)
- if (x < 1)
- fun_l20_n893(x)
- else
- fun_l20_n353(x)
- end
-end
-
-def fun_l19_n819(x)
- if (x < 1)
- fun_l20_n824(x)
- else
- fun_l20_n875(x)
- end
-end
-
-def fun_l19_n820(x)
- if (x < 1)
- fun_l20_n605(x)
- else
- fun_l20_n797(x)
- end
-end
-
-def fun_l19_n821(x)
- if (x < 1)
- fun_l20_n990(x)
- else
- fun_l20_n272(x)
- end
-end
-
-def fun_l19_n822(x)
- if (x < 1)
- fun_l20_n819(x)
- else
- fun_l20_n313(x)
- end
-end
-
-def fun_l19_n823(x)
- if (x < 1)
- fun_l20_n838(x)
- else
- fun_l20_n513(x)
- end
-end
-
-def fun_l19_n824(x)
- if (x < 1)
- fun_l20_n332(x)
- else
- fun_l20_n838(x)
- end
-end
-
-def fun_l19_n825(x)
- if (x < 1)
- fun_l20_n994(x)
- else
- fun_l20_n641(x)
- end
-end
-
-def fun_l19_n826(x)
- if (x < 1)
- fun_l20_n820(x)
- else
- fun_l20_n17(x)
- end
-end
-
-def fun_l19_n827(x)
- if (x < 1)
- fun_l20_n645(x)
- else
- fun_l20_n587(x)
- end
-end
-
-def fun_l19_n828(x)
- if (x < 1)
- fun_l20_n352(x)
- else
- fun_l20_n726(x)
- end
-end
-
-def fun_l19_n829(x)
- if (x < 1)
- fun_l20_n33(x)
- else
- fun_l20_n803(x)
- end
-end
-
-def fun_l19_n830(x)
- if (x < 1)
- fun_l20_n854(x)
- else
- fun_l20_n468(x)
- end
-end
-
-def fun_l19_n831(x)
- if (x < 1)
- fun_l20_n149(x)
- else
- fun_l20_n529(x)
- end
-end
-
-def fun_l19_n832(x)
- if (x < 1)
- fun_l20_n442(x)
- else
- fun_l20_n114(x)
- end
-end
-
-def fun_l19_n833(x)
- if (x < 1)
- fun_l20_n986(x)
- else
- fun_l20_n778(x)
- end
-end
-
-def fun_l19_n834(x)
- if (x < 1)
- fun_l20_n220(x)
- else
- fun_l20_n782(x)
- end
-end
-
-def fun_l19_n835(x)
- if (x < 1)
- fun_l20_n330(x)
- else
- fun_l20_n361(x)
- end
-end
-
-def fun_l19_n836(x)
- if (x < 1)
- fun_l20_n805(x)
- else
- fun_l20_n204(x)
- end
-end
-
-def fun_l19_n837(x)
- if (x < 1)
- fun_l20_n534(x)
- else
- fun_l20_n970(x)
- end
-end
-
-def fun_l19_n838(x)
- if (x < 1)
- fun_l20_n890(x)
- else
- fun_l20_n526(x)
- end
-end
-
-def fun_l19_n839(x)
- if (x < 1)
- fun_l20_n511(x)
- else
- fun_l20_n743(x)
- end
-end
-
-def fun_l19_n840(x)
- if (x < 1)
- fun_l20_n730(x)
- else
- fun_l20_n435(x)
- end
-end
-
-def fun_l19_n841(x)
- if (x < 1)
- fun_l20_n34(x)
- else
- fun_l20_n228(x)
- end
-end
-
-def fun_l19_n842(x)
- if (x < 1)
- fun_l20_n170(x)
- else
- fun_l20_n162(x)
- end
-end
-
-def fun_l19_n843(x)
- if (x < 1)
- fun_l20_n987(x)
- else
- fun_l20_n631(x)
- end
-end
-
-def fun_l19_n844(x)
- if (x < 1)
- fun_l20_n193(x)
- else
- fun_l20_n48(x)
- end
-end
-
-def fun_l19_n845(x)
- if (x < 1)
- fun_l20_n479(x)
- else
- fun_l20_n295(x)
- end
-end
-
-def fun_l19_n846(x)
- if (x < 1)
- fun_l20_n545(x)
- else
- fun_l20_n474(x)
- end
-end
-
-def fun_l19_n847(x)
- if (x < 1)
- fun_l20_n155(x)
- else
- fun_l20_n222(x)
- end
-end
-
-def fun_l19_n848(x)
- if (x < 1)
- fun_l20_n641(x)
- else
- fun_l20_n151(x)
- end
-end
-
-def fun_l19_n849(x)
- if (x < 1)
- fun_l20_n191(x)
- else
- fun_l20_n563(x)
- end
-end
-
-def fun_l19_n850(x)
- if (x < 1)
- fun_l20_n891(x)
- else
- fun_l20_n247(x)
- end
-end
-
-def fun_l19_n851(x)
- if (x < 1)
- fun_l20_n987(x)
- else
- fun_l20_n296(x)
- end
-end
-
-def fun_l19_n852(x)
- if (x < 1)
- fun_l20_n86(x)
- else
- fun_l20_n346(x)
- end
-end
-
-def fun_l19_n853(x)
- if (x < 1)
- fun_l20_n93(x)
- else
- fun_l20_n198(x)
- end
-end
-
-def fun_l19_n854(x)
- if (x < 1)
- fun_l20_n767(x)
- else
- fun_l20_n759(x)
- end
-end
-
-def fun_l19_n855(x)
- if (x < 1)
- fun_l20_n571(x)
- else
- fun_l20_n456(x)
- end
-end
-
-def fun_l19_n856(x)
- if (x < 1)
- fun_l20_n722(x)
- else
- fun_l20_n603(x)
- end
-end
-
-def fun_l19_n857(x)
- if (x < 1)
- fun_l20_n940(x)
- else
- fun_l20_n163(x)
- end
-end
-
-def fun_l19_n858(x)
- if (x < 1)
- fun_l20_n973(x)
- else
- fun_l20_n598(x)
- end
-end
-
-def fun_l19_n859(x)
- if (x < 1)
- fun_l20_n79(x)
- else
- fun_l20_n401(x)
- end
-end
-
-def fun_l19_n860(x)
- if (x < 1)
- fun_l20_n234(x)
- else
- fun_l20_n769(x)
- end
-end
-
-def fun_l19_n861(x)
- if (x < 1)
- fun_l20_n292(x)
- else
- fun_l20_n526(x)
- end
-end
-
-def fun_l19_n862(x)
- if (x < 1)
- fun_l20_n554(x)
- else
- fun_l20_n468(x)
- end
-end
-
-def fun_l19_n863(x)
- if (x < 1)
- fun_l20_n386(x)
- else
- fun_l20_n946(x)
- end
-end
-
-def fun_l19_n864(x)
- if (x < 1)
- fun_l20_n227(x)
- else
- fun_l20_n287(x)
- end
-end
-
-def fun_l19_n865(x)
- if (x < 1)
- fun_l20_n485(x)
- else
- fun_l20_n276(x)
- end
-end
-
-def fun_l19_n866(x)
- if (x < 1)
- fun_l20_n38(x)
- else
- fun_l20_n329(x)
- end
-end
-
-def fun_l19_n867(x)
- if (x < 1)
- fun_l20_n1(x)
- else
- fun_l20_n985(x)
- end
-end
-
-def fun_l19_n868(x)
- if (x < 1)
- fun_l20_n13(x)
- else
- fun_l20_n823(x)
- end
-end
-
-def fun_l19_n869(x)
- if (x < 1)
- fun_l20_n834(x)
- else
- fun_l20_n959(x)
- end
-end
-
-def fun_l19_n870(x)
- if (x < 1)
- fun_l20_n177(x)
- else
- fun_l20_n232(x)
- end
-end
-
-def fun_l19_n871(x)
- if (x < 1)
- fun_l20_n56(x)
- else
- fun_l20_n712(x)
- end
-end
-
-def fun_l19_n872(x)
- if (x < 1)
- fun_l20_n69(x)
- else
- fun_l20_n850(x)
- end
-end
-
-def fun_l19_n873(x)
- if (x < 1)
- fun_l20_n558(x)
- else
- fun_l20_n877(x)
- end
-end
-
-def fun_l19_n874(x)
- if (x < 1)
- fun_l20_n34(x)
- else
- fun_l20_n540(x)
- end
-end
-
-def fun_l19_n875(x)
- if (x < 1)
- fun_l20_n392(x)
- else
- fun_l20_n904(x)
- end
-end
-
-def fun_l19_n876(x)
- if (x < 1)
- fun_l20_n99(x)
- else
- fun_l20_n691(x)
- end
-end
-
-def fun_l19_n877(x)
- if (x < 1)
- fun_l20_n799(x)
- else
- fun_l20_n982(x)
- end
-end
-
-def fun_l19_n878(x)
- if (x < 1)
- fun_l20_n511(x)
- else
- fun_l20_n869(x)
- end
-end
-
-def fun_l19_n879(x)
- if (x < 1)
- fun_l20_n65(x)
- else
- fun_l20_n318(x)
- end
-end
-
-def fun_l19_n880(x)
- if (x < 1)
- fun_l20_n335(x)
- else
- fun_l20_n811(x)
- end
-end
-
-def fun_l19_n881(x)
- if (x < 1)
- fun_l20_n165(x)
- else
- fun_l20_n870(x)
- end
-end
-
-def fun_l19_n882(x)
- if (x < 1)
- fun_l20_n427(x)
- else
- fun_l20_n597(x)
- end
-end
-
-def fun_l19_n883(x)
- if (x < 1)
- fun_l20_n319(x)
- else
- fun_l20_n503(x)
- end
-end
-
-def fun_l19_n884(x)
- if (x < 1)
- fun_l20_n57(x)
- else
- fun_l20_n620(x)
- end
-end
-
-def fun_l19_n885(x)
- if (x < 1)
- fun_l20_n489(x)
- else
- fun_l20_n359(x)
- end
-end
-
-def fun_l19_n886(x)
- if (x < 1)
- fun_l20_n773(x)
- else
- fun_l20_n719(x)
- end
-end
-
-def fun_l19_n887(x)
- if (x < 1)
- fun_l20_n969(x)
- else
- fun_l20_n32(x)
- end
-end
-
-def fun_l19_n888(x)
- if (x < 1)
- fun_l20_n758(x)
- else
- fun_l20_n132(x)
- end
-end
-
-def fun_l19_n889(x)
- if (x < 1)
- fun_l20_n130(x)
- else
- fun_l20_n886(x)
- end
-end
-
-def fun_l19_n890(x)
- if (x < 1)
- fun_l20_n195(x)
- else
- fun_l20_n258(x)
- end
-end
-
-def fun_l19_n891(x)
- if (x < 1)
- fun_l20_n747(x)
- else
- fun_l20_n967(x)
- end
-end
-
-def fun_l19_n892(x)
- if (x < 1)
- fun_l20_n403(x)
- else
- fun_l20_n314(x)
- end
-end
-
-def fun_l19_n893(x)
- if (x < 1)
- fun_l20_n927(x)
- else
- fun_l20_n923(x)
- end
-end
-
-def fun_l19_n894(x)
- if (x < 1)
- fun_l20_n894(x)
- else
- fun_l20_n318(x)
- end
-end
-
-def fun_l19_n895(x)
- if (x < 1)
- fun_l20_n825(x)
- else
- fun_l20_n574(x)
- end
-end
-
-def fun_l19_n896(x)
- if (x < 1)
- fun_l20_n436(x)
- else
- fun_l20_n321(x)
- end
-end
-
-def fun_l19_n897(x)
- if (x < 1)
- fun_l20_n317(x)
- else
- fun_l20_n312(x)
- end
-end
-
-def fun_l19_n898(x)
- if (x < 1)
- fun_l20_n219(x)
- else
- fun_l20_n362(x)
- end
-end
-
-def fun_l19_n899(x)
- if (x < 1)
- fun_l20_n731(x)
- else
- fun_l20_n1(x)
- end
-end
-
-def fun_l19_n900(x)
- if (x < 1)
- fun_l20_n804(x)
- else
- fun_l20_n629(x)
- end
-end
-
-def fun_l19_n901(x)
- if (x < 1)
- fun_l20_n152(x)
- else
- fun_l20_n232(x)
- end
-end
-
-def fun_l19_n902(x)
- if (x < 1)
- fun_l20_n104(x)
- else
- fun_l20_n579(x)
- end
-end
-
-def fun_l19_n903(x)
- if (x < 1)
- fun_l20_n860(x)
- else
- fun_l20_n322(x)
- end
-end
-
-def fun_l19_n904(x)
- if (x < 1)
- fun_l20_n55(x)
- else
- fun_l20_n70(x)
- end
-end
-
-def fun_l19_n905(x)
- if (x < 1)
- fun_l20_n674(x)
- else
- fun_l20_n713(x)
- end
-end
-
-def fun_l19_n906(x)
- if (x < 1)
- fun_l20_n957(x)
- else
- fun_l20_n962(x)
- end
-end
-
-def fun_l19_n907(x)
- if (x < 1)
- fun_l20_n656(x)
- else
- fun_l20_n582(x)
- end
-end
-
-def fun_l19_n908(x)
- if (x < 1)
- fun_l20_n3(x)
- else
- fun_l20_n323(x)
- end
-end
-
-def fun_l19_n909(x)
- if (x < 1)
- fun_l20_n763(x)
- else
- fun_l20_n387(x)
- end
-end
-
-def fun_l19_n910(x)
- if (x < 1)
- fun_l20_n434(x)
- else
- fun_l20_n113(x)
- end
-end
-
-def fun_l19_n911(x)
- if (x < 1)
- fun_l20_n713(x)
- else
- fun_l20_n4(x)
- end
-end
-
-def fun_l19_n912(x)
- if (x < 1)
- fun_l20_n313(x)
- else
- fun_l20_n776(x)
- end
-end
-
-def fun_l19_n913(x)
- if (x < 1)
- fun_l20_n541(x)
- else
- fun_l20_n80(x)
- end
-end
-
-def fun_l19_n914(x)
- if (x < 1)
- fun_l20_n131(x)
- else
- fun_l20_n982(x)
- end
-end
-
-def fun_l19_n915(x)
- if (x < 1)
- fun_l20_n558(x)
- else
- fun_l20_n538(x)
- end
-end
-
-def fun_l19_n916(x)
- if (x < 1)
- fun_l20_n715(x)
- else
- fun_l20_n401(x)
- end
-end
-
-def fun_l19_n917(x)
- if (x < 1)
- fun_l20_n820(x)
- else
- fun_l20_n576(x)
- end
-end
-
-def fun_l19_n918(x)
- if (x < 1)
- fun_l20_n602(x)
- else
- fun_l20_n158(x)
- end
-end
-
-def fun_l19_n919(x)
- if (x < 1)
- fun_l20_n127(x)
- else
- fun_l20_n493(x)
- end
-end
-
-def fun_l19_n920(x)
- if (x < 1)
- fun_l20_n719(x)
- else
- fun_l20_n895(x)
- end
-end
-
-def fun_l19_n921(x)
- if (x < 1)
- fun_l20_n277(x)
- else
- fun_l20_n588(x)
- end
-end
-
-def fun_l19_n922(x)
- if (x < 1)
- fun_l20_n479(x)
- else
- fun_l20_n799(x)
- end
-end
-
-def fun_l19_n923(x)
- if (x < 1)
- fun_l20_n879(x)
- else
- fun_l20_n809(x)
- end
-end
-
-def fun_l19_n924(x)
- if (x < 1)
- fun_l20_n574(x)
- else
- fun_l20_n756(x)
- end
-end
-
-def fun_l19_n925(x)
- if (x < 1)
- fun_l20_n774(x)
- else
- fun_l20_n806(x)
- end
-end
-
-def fun_l19_n926(x)
- if (x < 1)
- fun_l20_n804(x)
- else
- fun_l20_n87(x)
- end
-end
-
-def fun_l19_n927(x)
- if (x < 1)
- fun_l20_n647(x)
- else
- fun_l20_n497(x)
- end
-end
-
-def fun_l19_n928(x)
- if (x < 1)
- fun_l20_n134(x)
- else
- fun_l20_n690(x)
- end
-end
-
-def fun_l19_n929(x)
- if (x < 1)
- fun_l20_n981(x)
- else
- fun_l20_n590(x)
- end
-end
-
-def fun_l19_n930(x)
- if (x < 1)
- fun_l20_n393(x)
- else
- fun_l20_n585(x)
- end
-end
-
-def fun_l19_n931(x)
- if (x < 1)
- fun_l20_n408(x)
- else
- fun_l20_n753(x)
- end
-end
-
-def fun_l19_n932(x)
- if (x < 1)
- fun_l20_n133(x)
- else
- fun_l20_n289(x)
- end
-end
-
-def fun_l19_n933(x)
- if (x < 1)
- fun_l20_n552(x)
- else
- fun_l20_n867(x)
- end
-end
-
-def fun_l19_n934(x)
- if (x < 1)
- fun_l20_n232(x)
- else
- fun_l20_n134(x)
- end
-end
-
-def fun_l19_n935(x)
- if (x < 1)
- fun_l20_n45(x)
- else
- fun_l20_n100(x)
- end
-end
-
-def fun_l19_n936(x)
- if (x < 1)
- fun_l20_n263(x)
- else
- fun_l20_n686(x)
- end
-end
-
-def fun_l19_n937(x)
- if (x < 1)
- fun_l20_n63(x)
- else
- fun_l20_n401(x)
- end
-end
-
-def fun_l19_n938(x)
- if (x < 1)
- fun_l20_n564(x)
- else
- fun_l20_n265(x)
- end
-end
-
-def fun_l19_n939(x)
- if (x < 1)
- fun_l20_n414(x)
- else
- fun_l20_n32(x)
- end
-end
-
-def fun_l19_n940(x)
- if (x < 1)
- fun_l20_n686(x)
- else
- fun_l20_n116(x)
- end
-end
-
-def fun_l19_n941(x)
- if (x < 1)
- fun_l20_n812(x)
- else
- fun_l20_n438(x)
- end
-end
-
-def fun_l19_n942(x)
- if (x < 1)
- fun_l20_n365(x)
- else
- fun_l20_n95(x)
- end
-end
-
-def fun_l19_n943(x)
- if (x < 1)
- fun_l20_n159(x)
- else
- fun_l20_n763(x)
- end
-end
-
-def fun_l19_n944(x)
- if (x < 1)
- fun_l20_n844(x)
- else
- fun_l20_n958(x)
- end
-end
-
-def fun_l19_n945(x)
- if (x < 1)
- fun_l20_n730(x)
- else
- fun_l20_n814(x)
- end
-end
-
-def fun_l19_n946(x)
- if (x < 1)
- fun_l20_n963(x)
- else
- fun_l20_n2(x)
- end
-end
-
-def fun_l19_n947(x)
- if (x < 1)
- fun_l20_n285(x)
- else
- fun_l20_n605(x)
- end
-end
-
-def fun_l19_n948(x)
- if (x < 1)
- fun_l20_n869(x)
- else
- fun_l20_n409(x)
- end
-end
-
-def fun_l19_n949(x)
- if (x < 1)
- fun_l20_n313(x)
- else
- fun_l20_n854(x)
- end
-end
-
-def fun_l19_n950(x)
- if (x < 1)
- fun_l20_n802(x)
- else
- fun_l20_n411(x)
- end
-end
-
-def fun_l19_n951(x)
- if (x < 1)
- fun_l20_n273(x)
- else
- fun_l20_n100(x)
- end
-end
-
-def fun_l19_n952(x)
- if (x < 1)
- fun_l20_n283(x)
- else
- fun_l20_n253(x)
- end
-end
-
-def fun_l19_n953(x)
- if (x < 1)
- fun_l20_n137(x)
- else
- fun_l20_n535(x)
- end
-end
-
-def fun_l19_n954(x)
- if (x < 1)
- fun_l20_n504(x)
- else
- fun_l20_n849(x)
- end
-end
-
-def fun_l19_n955(x)
- if (x < 1)
- fun_l20_n568(x)
- else
- fun_l20_n208(x)
- end
-end
-
-def fun_l19_n956(x)
- if (x < 1)
- fun_l20_n775(x)
- else
- fun_l20_n781(x)
- end
-end
-
-def fun_l19_n957(x)
- if (x < 1)
- fun_l20_n144(x)
- else
- fun_l20_n411(x)
- end
-end
-
-def fun_l19_n958(x)
- if (x < 1)
- fun_l20_n791(x)
- else
- fun_l20_n720(x)
- end
-end
-
-def fun_l19_n959(x)
- if (x < 1)
- fun_l20_n268(x)
- else
- fun_l20_n251(x)
- end
-end
-
-def fun_l19_n960(x)
- if (x < 1)
- fun_l20_n661(x)
- else
- fun_l20_n114(x)
- end
-end
-
-def fun_l19_n961(x)
- if (x < 1)
- fun_l20_n559(x)
- else
- fun_l20_n177(x)
- end
-end
-
-def fun_l19_n962(x)
- if (x < 1)
- fun_l20_n536(x)
- else
- fun_l20_n671(x)
- end
-end
-
-def fun_l19_n963(x)
- if (x < 1)
- fun_l20_n64(x)
- else
- fun_l20_n656(x)
- end
-end
-
-def fun_l19_n964(x)
- if (x < 1)
- fun_l20_n618(x)
- else
- fun_l20_n837(x)
- end
-end
-
-def fun_l19_n965(x)
- if (x < 1)
- fun_l20_n201(x)
- else
- fun_l20_n562(x)
- end
-end
-
-def fun_l19_n966(x)
- if (x < 1)
- fun_l20_n562(x)
- else
- fun_l20_n632(x)
- end
-end
-
-def fun_l19_n967(x)
- if (x < 1)
- fun_l20_n183(x)
- else
- fun_l20_n589(x)
- end
-end
-
-def fun_l19_n968(x)
- if (x < 1)
- fun_l20_n971(x)
- else
- fun_l20_n619(x)
- end
-end
-
-def fun_l19_n969(x)
- if (x < 1)
- fun_l20_n826(x)
- else
- fun_l20_n745(x)
- end
-end
-
-def fun_l19_n970(x)
- if (x < 1)
- fun_l20_n140(x)
- else
- fun_l20_n370(x)
- end
-end
-
-def fun_l19_n971(x)
- if (x < 1)
- fun_l20_n26(x)
- else
- fun_l20_n243(x)
- end
-end
-
-def fun_l19_n972(x)
- if (x < 1)
- fun_l20_n375(x)
- else
- fun_l20_n6(x)
- end
-end
-
-def fun_l19_n973(x)
- if (x < 1)
- fun_l20_n289(x)
- else
- fun_l20_n266(x)
- end
-end
-
-def fun_l19_n974(x)
- if (x < 1)
- fun_l20_n932(x)
- else
- fun_l20_n602(x)
- end
-end
-
-def fun_l19_n975(x)
- if (x < 1)
- fun_l20_n272(x)
- else
- fun_l20_n671(x)
- end
-end
-
-def fun_l19_n976(x)
- if (x < 1)
- fun_l20_n653(x)
- else
- fun_l20_n201(x)
- end
-end
-
-def fun_l19_n977(x)
- if (x < 1)
- fun_l20_n785(x)
- else
- fun_l20_n976(x)
- end
-end
-
-def fun_l19_n978(x)
- if (x < 1)
- fun_l20_n212(x)
- else
- fun_l20_n601(x)
- end
-end
-
-def fun_l19_n979(x)
- if (x < 1)
- fun_l20_n218(x)
- else
- fun_l20_n914(x)
- end
-end
-
-def fun_l19_n980(x)
- if (x < 1)
- fun_l20_n109(x)
- else
- fun_l20_n147(x)
- end
-end
-
-def fun_l19_n981(x)
- if (x < 1)
- fun_l20_n46(x)
- else
- fun_l20_n276(x)
- end
-end
-
-def fun_l19_n982(x)
- if (x < 1)
- fun_l20_n727(x)
- else
- fun_l20_n545(x)
- end
-end
-
-def fun_l19_n983(x)
- if (x < 1)
- fun_l20_n679(x)
- else
- fun_l20_n731(x)
- end
-end
-
-def fun_l19_n984(x)
- if (x < 1)
- fun_l20_n291(x)
- else
- fun_l20_n294(x)
- end
-end
-
-def fun_l19_n985(x)
- if (x < 1)
- fun_l20_n741(x)
- else
- fun_l20_n508(x)
- end
-end
-
-def fun_l19_n986(x)
- if (x < 1)
- fun_l20_n417(x)
- else
- fun_l20_n169(x)
- end
-end
-
-def fun_l19_n987(x)
- if (x < 1)
- fun_l20_n685(x)
- else
- fun_l20_n871(x)
- end
-end
-
-def fun_l19_n988(x)
- if (x < 1)
- fun_l20_n386(x)
- else
- fun_l20_n616(x)
- end
-end
-
-def fun_l19_n989(x)
- if (x < 1)
- fun_l20_n317(x)
- else
- fun_l20_n954(x)
- end
-end
-
-def fun_l19_n990(x)
- if (x < 1)
- fun_l20_n954(x)
- else
- fun_l20_n974(x)
- end
-end
-
-def fun_l19_n991(x)
- if (x < 1)
- fun_l20_n251(x)
- else
- fun_l20_n56(x)
- end
-end
-
-def fun_l19_n992(x)
- if (x < 1)
- fun_l20_n775(x)
- else
- fun_l20_n175(x)
- end
-end
-
-def fun_l19_n993(x)
- if (x < 1)
- fun_l20_n578(x)
- else
- fun_l20_n217(x)
- end
-end
-
-def fun_l19_n994(x)
- if (x < 1)
- fun_l20_n483(x)
- else
- fun_l20_n279(x)
- end
-end
-
-def fun_l19_n995(x)
- if (x < 1)
- fun_l20_n316(x)
- else
- fun_l20_n343(x)
- end
-end
-
-def fun_l19_n996(x)
- if (x < 1)
- fun_l20_n618(x)
- else
- fun_l20_n995(x)
- end
-end
-
-def fun_l19_n997(x)
- if (x < 1)
- fun_l20_n396(x)
- else
- fun_l20_n540(x)
- end
-end
-
-def fun_l19_n998(x)
- if (x < 1)
- fun_l20_n184(x)
- else
- fun_l20_n380(x)
- end
-end
-
-def fun_l19_n999(x)
- if (x < 1)
- fun_l20_n360(x)
- else
- fun_l20_n48(x)
- end
-end
-
-def fun_l20_n0(x)
- if (x < 1)
- fun_l21_n609(x)
- else
- fun_l21_n305(x)
- end
-end
-
-def fun_l20_n1(x)
- if (x < 1)
- fun_l21_n937(x)
- else
- fun_l21_n174(x)
- end
-end
-
-def fun_l20_n2(x)
- if (x < 1)
- fun_l21_n939(x)
- else
- fun_l21_n174(x)
- end
-end
-
-def fun_l20_n3(x)
- if (x < 1)
- fun_l21_n163(x)
- else
- fun_l21_n572(x)
- end
-end
-
-def fun_l20_n4(x)
- if (x < 1)
- fun_l21_n43(x)
- else
- fun_l21_n384(x)
- end
-end
-
-def fun_l20_n5(x)
- if (x < 1)
- fun_l21_n565(x)
- else
- fun_l21_n788(x)
- end
-end
-
-def fun_l20_n6(x)
- if (x < 1)
- fun_l21_n539(x)
- else
- fun_l21_n806(x)
- end
-end
-
-def fun_l20_n7(x)
- if (x < 1)
- fun_l21_n395(x)
- else
- fun_l21_n9(x)
- end
-end
-
-def fun_l20_n8(x)
- if (x < 1)
- fun_l21_n231(x)
- else
- fun_l21_n788(x)
- end
-end
-
-def fun_l20_n9(x)
- if (x < 1)
- fun_l21_n511(x)
- else
- fun_l21_n236(x)
- end
-end
-
-def fun_l20_n10(x)
- if (x < 1)
- fun_l21_n141(x)
- else
- fun_l21_n34(x)
- end
-end
-
-def fun_l20_n11(x)
- if (x < 1)
- fun_l21_n801(x)
- else
- fun_l21_n760(x)
- end
-end
-
-def fun_l20_n12(x)
- if (x < 1)
- fun_l21_n627(x)
- else
- fun_l21_n289(x)
- end
-end
-
-def fun_l20_n13(x)
- if (x < 1)
- fun_l21_n795(x)
- else
- fun_l21_n183(x)
- end
-end
-
-def fun_l20_n14(x)
- if (x < 1)
- fun_l21_n384(x)
- else
- fun_l21_n3(x)
- end
-end
-
-def fun_l20_n15(x)
- if (x < 1)
- fun_l21_n823(x)
- else
- fun_l21_n312(x)
- end
-end
-
-def fun_l20_n16(x)
- if (x < 1)
- fun_l21_n727(x)
- else
- fun_l21_n897(x)
- end
-end
-
-def fun_l20_n17(x)
- if (x < 1)
- fun_l21_n710(x)
- else
- fun_l21_n532(x)
- end
-end
-
-def fun_l20_n18(x)
- if (x < 1)
- fun_l21_n373(x)
- else
- fun_l21_n807(x)
- end
-end
-
-def fun_l20_n19(x)
- if (x < 1)
- fun_l21_n164(x)
- else
- fun_l21_n472(x)
- end
-end
-
-def fun_l20_n20(x)
- if (x < 1)
- fun_l21_n522(x)
- else
- fun_l21_n264(x)
- end
-end
-
-def fun_l20_n21(x)
- if (x < 1)
- fun_l21_n122(x)
- else
- fun_l21_n897(x)
- end
-end
-
-def fun_l20_n22(x)
- if (x < 1)
- fun_l21_n292(x)
- else
- fun_l21_n873(x)
- end
-end
-
-def fun_l20_n23(x)
- if (x < 1)
- fun_l21_n461(x)
- else
- fun_l21_n681(x)
- end
-end
-
-def fun_l20_n24(x)
- if (x < 1)
- fun_l21_n80(x)
- else
- fun_l21_n484(x)
- end
-end
-
-def fun_l20_n25(x)
- if (x < 1)
- fun_l21_n7(x)
- else
- fun_l21_n444(x)
- end
-end
-
-def fun_l20_n26(x)
- if (x < 1)
- fun_l21_n269(x)
- else
- fun_l21_n58(x)
- end
-end
-
-def fun_l20_n27(x)
- if (x < 1)
- fun_l21_n318(x)
- else
- fun_l21_n224(x)
- end
-end
-
-def fun_l20_n28(x)
- if (x < 1)
- fun_l21_n437(x)
- else
- fun_l21_n621(x)
- end
-end
-
-def fun_l20_n29(x)
- if (x < 1)
- fun_l21_n907(x)
- else
- fun_l21_n32(x)
- end
-end
-
-def fun_l20_n30(x)
- if (x < 1)
- fun_l21_n525(x)
- else
- fun_l21_n10(x)
- end
-end
-
-def fun_l20_n31(x)
- if (x < 1)
- fun_l21_n278(x)
- else
- fun_l21_n243(x)
- end
-end
-
-def fun_l20_n32(x)
- if (x < 1)
- fun_l21_n865(x)
- else
- fun_l21_n236(x)
- end
-end
-
-def fun_l20_n33(x)
- if (x < 1)
- fun_l21_n732(x)
- else
- fun_l21_n472(x)
- end
-end
-
-def fun_l20_n34(x)
- if (x < 1)
- fun_l21_n331(x)
- else
- fun_l21_n162(x)
- end
-end
-
-def fun_l20_n35(x)
- if (x < 1)
- fun_l21_n217(x)
- else
- fun_l21_n877(x)
- end
-end
-
-def fun_l20_n36(x)
- if (x < 1)
- fun_l21_n125(x)
- else
- fun_l21_n683(x)
- end
-end
-
-def fun_l20_n37(x)
- if (x < 1)
- fun_l21_n236(x)
- else
- fun_l21_n79(x)
- end
-end
-
-def fun_l20_n38(x)
- if (x < 1)
- fun_l21_n308(x)
- else
- fun_l21_n995(x)
- end
-end
-
-def fun_l20_n39(x)
- if (x < 1)
- fun_l21_n923(x)
- else
- fun_l21_n956(x)
- end
-end
-
-def fun_l20_n40(x)
- if (x < 1)
- fun_l21_n505(x)
- else
- fun_l21_n47(x)
- end
-end
-
-def fun_l20_n41(x)
- if (x < 1)
- fun_l21_n24(x)
- else
- fun_l21_n894(x)
- end
-end
-
-def fun_l20_n42(x)
- if (x < 1)
- fun_l21_n824(x)
- else
- fun_l21_n106(x)
- end
-end
-
-def fun_l20_n43(x)
- if (x < 1)
- fun_l21_n898(x)
- else
- fun_l21_n576(x)
- end
-end
-
-def fun_l20_n44(x)
- if (x < 1)
- fun_l21_n231(x)
- else
- fun_l21_n689(x)
- end
-end
-
-def fun_l20_n45(x)
- if (x < 1)
- fun_l21_n340(x)
- else
- fun_l21_n887(x)
- end
-end
-
-def fun_l20_n46(x)
- if (x < 1)
- fun_l21_n157(x)
- else
- fun_l21_n551(x)
- end
-end
-
-def fun_l20_n47(x)
- if (x < 1)
- fun_l21_n904(x)
- else
- fun_l21_n975(x)
- end
-end
-
-def fun_l20_n48(x)
- if (x < 1)
- fun_l21_n392(x)
- else
- fun_l21_n882(x)
- end
-end
-
-def fun_l20_n49(x)
- if (x < 1)
- fun_l21_n484(x)
- else
- fun_l21_n810(x)
- end
-end
-
-def fun_l20_n50(x)
- if (x < 1)
- fun_l21_n517(x)
- else
- fun_l21_n434(x)
- end
-end
-
-def fun_l20_n51(x)
- if (x < 1)
- fun_l21_n115(x)
- else
- fun_l21_n975(x)
- end
-end
-
-def fun_l20_n52(x)
- if (x < 1)
- fun_l21_n633(x)
- else
- fun_l21_n799(x)
- end
-end
-
-def fun_l20_n53(x)
- if (x < 1)
- fun_l21_n938(x)
- else
- fun_l21_n321(x)
- end
-end
-
-def fun_l20_n54(x)
- if (x < 1)
- fun_l21_n98(x)
- else
- fun_l21_n343(x)
- end
-end
-
-def fun_l20_n55(x)
- if (x < 1)
- fun_l21_n851(x)
- else
- fun_l21_n794(x)
- end
-end
-
-def fun_l20_n56(x)
- if (x < 1)
- fun_l21_n119(x)
- else
- fun_l21_n649(x)
- end
-end
-
-def fun_l20_n57(x)
- if (x < 1)
- fun_l21_n799(x)
- else
- fun_l21_n397(x)
- end
-end
-
-def fun_l20_n58(x)
- if (x < 1)
- fun_l21_n429(x)
- else
- fun_l21_n781(x)
- end
-end
-
-def fun_l20_n59(x)
- if (x < 1)
- fun_l21_n862(x)
- else
- fun_l21_n870(x)
- end
-end
-
-def fun_l20_n60(x)
- if (x < 1)
- fun_l21_n864(x)
- else
- fun_l21_n333(x)
- end
-end
-
-def fun_l20_n61(x)
- if (x < 1)
- fun_l21_n673(x)
- else
- fun_l21_n481(x)
- end
-end
-
-def fun_l20_n62(x)
- if (x < 1)
- fun_l21_n193(x)
- else
- fun_l21_n524(x)
- end
-end
-
-def fun_l20_n63(x)
- if (x < 1)
- fun_l21_n976(x)
- else
- fun_l21_n0(x)
- end
-end
-
-def fun_l20_n64(x)
- if (x < 1)
- fun_l21_n804(x)
- else
- fun_l21_n833(x)
- end
-end
-
-def fun_l20_n65(x)
- if (x < 1)
- fun_l21_n20(x)
- else
- fun_l21_n285(x)
- end
-end
-
-def fun_l20_n66(x)
- if (x < 1)
- fun_l21_n70(x)
- else
- fun_l21_n932(x)
- end
-end
-
-def fun_l20_n67(x)
- if (x < 1)
- fun_l21_n213(x)
- else
- fun_l21_n196(x)
- end
-end
-
-def fun_l20_n68(x)
- if (x < 1)
- fun_l21_n806(x)
- else
- fun_l21_n322(x)
- end
-end
-
-def fun_l20_n69(x)
- if (x < 1)
- fun_l21_n583(x)
- else
- fun_l21_n62(x)
- end
-end
-
-def fun_l20_n70(x)
- if (x < 1)
- fun_l21_n141(x)
- else
- fun_l21_n490(x)
- end
-end
-
-def fun_l20_n71(x)
- if (x < 1)
- fun_l21_n995(x)
- else
- fun_l21_n398(x)
- end
-end
-
-def fun_l20_n72(x)
- if (x < 1)
- fun_l21_n436(x)
- else
- fun_l21_n490(x)
- end
-end
-
-def fun_l20_n73(x)
- if (x < 1)
- fun_l21_n585(x)
- else
- fun_l21_n275(x)
- end
-end
-
-def fun_l20_n74(x)
- if (x < 1)
- fun_l21_n120(x)
- else
- fun_l21_n968(x)
- end
-end
-
-def fun_l20_n75(x)
- if (x < 1)
- fun_l21_n562(x)
- else
- fun_l21_n896(x)
- end
-end
-
-def fun_l20_n76(x)
- if (x < 1)
- fun_l21_n794(x)
- else
- fun_l21_n224(x)
- end
-end
-
-def fun_l20_n77(x)
- if (x < 1)
- fun_l21_n71(x)
- else
- fun_l21_n870(x)
- end
-end
-
-def fun_l20_n78(x)
- if (x < 1)
- fun_l21_n0(x)
- else
- fun_l21_n41(x)
- end
-end
-
-def fun_l20_n79(x)
- if (x < 1)
- fun_l21_n325(x)
- else
- fun_l21_n814(x)
- end
-end
-
-def fun_l20_n80(x)
- if (x < 1)
- fun_l21_n963(x)
- else
- fun_l21_n792(x)
- end
-end
-
-def fun_l20_n81(x)
- if (x < 1)
- fun_l21_n415(x)
- else
- fun_l21_n200(x)
- end
-end
-
-def fun_l20_n82(x)
- if (x < 1)
- fun_l21_n438(x)
- else
- fun_l21_n506(x)
- end
-end
-
-def fun_l20_n83(x)
- if (x < 1)
- fun_l21_n283(x)
- else
- fun_l21_n708(x)
- end
-end
-
-def fun_l20_n84(x)
- if (x < 1)
- fun_l21_n968(x)
- else
- fun_l21_n80(x)
- end
-end
-
-def fun_l20_n85(x)
- if (x < 1)
- fun_l21_n839(x)
- else
- fun_l21_n808(x)
- end
-end
-
-def fun_l20_n86(x)
- if (x < 1)
- fun_l21_n653(x)
- else
- fun_l21_n343(x)
- end
-end
-
-def fun_l20_n87(x)
- if (x < 1)
- fun_l21_n580(x)
- else
- fun_l21_n652(x)
- end
-end
-
-def fun_l20_n88(x)
- if (x < 1)
- fun_l21_n64(x)
- else
- fun_l21_n899(x)
- end
-end
-
-def fun_l20_n89(x)
- if (x < 1)
- fun_l21_n325(x)
- else
- fun_l21_n645(x)
- end
-end
-
-def fun_l20_n90(x)
- if (x < 1)
- fun_l21_n251(x)
- else
- fun_l21_n210(x)
- end
-end
-
-def fun_l20_n91(x)
- if (x < 1)
- fun_l21_n943(x)
- else
- fun_l21_n451(x)
- end
-end
-
-def fun_l20_n92(x)
- if (x < 1)
- fun_l21_n95(x)
- else
- fun_l21_n937(x)
- end
-end
-
-def fun_l20_n93(x)
- if (x < 1)
- fun_l21_n263(x)
- else
- fun_l21_n107(x)
- end
-end
-
-def fun_l20_n94(x)
- if (x < 1)
- fun_l21_n438(x)
- else
- fun_l21_n213(x)
- end
-end
-
-def fun_l20_n95(x)
- if (x < 1)
- fun_l21_n283(x)
- else
- fun_l21_n203(x)
- end
-end
-
-def fun_l20_n96(x)
- if (x < 1)
- fun_l21_n809(x)
- else
- fun_l21_n154(x)
- end
-end
-
-def fun_l20_n97(x)
- if (x < 1)
- fun_l21_n513(x)
- else
- fun_l21_n15(x)
- end
-end
-
-def fun_l20_n98(x)
- if (x < 1)
- fun_l21_n854(x)
- else
- fun_l21_n679(x)
- end
-end
-
-def fun_l20_n99(x)
- if (x < 1)
- fun_l21_n102(x)
- else
- fun_l21_n546(x)
- end
-end
-
-def fun_l20_n100(x)
- if (x < 1)
- fun_l21_n790(x)
- else
- fun_l21_n143(x)
- end
-end
-
-def fun_l20_n101(x)
- if (x < 1)
- fun_l21_n835(x)
- else
- fun_l21_n78(x)
- end
-end
-
-def fun_l20_n102(x)
- if (x < 1)
- fun_l21_n96(x)
- else
- fun_l21_n995(x)
- end
-end
-
-def fun_l20_n103(x)
- if (x < 1)
- fun_l21_n445(x)
- else
- fun_l21_n332(x)
- end
-end
-
-def fun_l20_n104(x)
- if (x < 1)
- fun_l21_n532(x)
- else
- fun_l21_n509(x)
- end
-end
-
-def fun_l20_n105(x)
- if (x < 1)
- fun_l21_n592(x)
- else
- fun_l21_n237(x)
- end
-end
-
-def fun_l20_n106(x)
- if (x < 1)
- fun_l21_n837(x)
- else
- fun_l21_n13(x)
- end
-end
-
-def fun_l20_n107(x)
- if (x < 1)
- fun_l21_n518(x)
- else
- fun_l21_n463(x)
- end
-end
-
-def fun_l20_n108(x)
- if (x < 1)
- fun_l21_n373(x)
- else
- fun_l21_n597(x)
- end
-end
-
-def fun_l20_n109(x)
- if (x < 1)
- fun_l21_n832(x)
- else
- fun_l21_n784(x)
- end
-end
-
-def fun_l20_n110(x)
- if (x < 1)
- fun_l21_n408(x)
- else
- fun_l21_n738(x)
- end
-end
-
-def fun_l20_n111(x)
- if (x < 1)
- fun_l21_n243(x)
- else
- fun_l21_n96(x)
- end
-end
-
-def fun_l20_n112(x)
- if (x < 1)
- fun_l21_n251(x)
- else
- fun_l21_n151(x)
- end
-end
-
-def fun_l20_n113(x)
- if (x < 1)
- fun_l21_n970(x)
- else
- fun_l21_n329(x)
- end
-end
-
-def fun_l20_n114(x)
- if (x < 1)
- fun_l21_n691(x)
- else
- fun_l21_n309(x)
- end
-end
-
-def fun_l20_n115(x)
- if (x < 1)
- fun_l21_n250(x)
- else
- fun_l21_n927(x)
- end
-end
-
-def fun_l20_n116(x)
- if (x < 1)
- fun_l21_n819(x)
- else
- fun_l21_n49(x)
- end
-end
-
-def fun_l20_n117(x)
- if (x < 1)
- fun_l21_n761(x)
- else
- fun_l21_n91(x)
- end
-end
-
-def fun_l20_n118(x)
- if (x < 1)
- fun_l21_n170(x)
- else
- fun_l21_n317(x)
- end
-end
-
-def fun_l20_n119(x)
- if (x < 1)
- fun_l21_n199(x)
- else
- fun_l21_n406(x)
- end
-end
-
-def fun_l20_n120(x)
- if (x < 1)
- fun_l21_n983(x)
- else
- fun_l21_n742(x)
- end
-end
-
-def fun_l20_n121(x)
- if (x < 1)
- fun_l21_n428(x)
- else
- fun_l21_n887(x)
- end
-end
-
-def fun_l20_n122(x)
- if (x < 1)
- fun_l21_n369(x)
- else
- fun_l21_n64(x)
- end
-end
-
-def fun_l20_n123(x)
- if (x < 1)
- fun_l21_n727(x)
- else
- fun_l21_n484(x)
- end
-end
-
-def fun_l20_n124(x)
- if (x < 1)
- fun_l21_n310(x)
- else
- fun_l21_n198(x)
- end
-end
-
-def fun_l20_n125(x)
- if (x < 1)
- fun_l21_n747(x)
- else
- fun_l21_n935(x)
- end
-end
-
-def fun_l20_n126(x)
- if (x < 1)
- fun_l21_n389(x)
- else
- fun_l21_n966(x)
- end
-end
-
-def fun_l20_n127(x)
- if (x < 1)
- fun_l21_n852(x)
- else
- fun_l21_n128(x)
- end
-end
-
-def fun_l20_n128(x)
- if (x < 1)
- fun_l21_n10(x)
- else
- fun_l21_n376(x)
- end
-end
-
-def fun_l20_n129(x)
- if (x < 1)
- fun_l21_n413(x)
- else
- fun_l21_n465(x)
- end
-end
-
-def fun_l20_n130(x)
- if (x < 1)
- fun_l21_n536(x)
- else
- fun_l21_n689(x)
- end
-end
-
-def fun_l20_n131(x)
- if (x < 1)
- fun_l21_n707(x)
- else
- fun_l21_n793(x)
- end
-end
-
-def fun_l20_n132(x)
- if (x < 1)
- fun_l21_n328(x)
- else
- fun_l21_n56(x)
- end
-end
-
-def fun_l20_n133(x)
- if (x < 1)
- fun_l21_n318(x)
- else
- fun_l21_n570(x)
- end
-end
-
-def fun_l20_n134(x)
- if (x < 1)
- fun_l21_n656(x)
- else
- fun_l21_n187(x)
- end
-end
-
-def fun_l20_n135(x)
- if (x < 1)
- fun_l21_n259(x)
- else
- fun_l21_n718(x)
- end
-end
-
-def fun_l20_n136(x)
- if (x < 1)
- fun_l21_n284(x)
- else
- fun_l21_n167(x)
- end
-end
-
-def fun_l20_n137(x)
- if (x < 1)
- fun_l21_n788(x)
- else
- fun_l21_n595(x)
- end
-end
-
-def fun_l20_n138(x)
- if (x < 1)
- fun_l21_n431(x)
- else
- fun_l21_n620(x)
- end
-end
-
-def fun_l20_n139(x)
- if (x < 1)
- fun_l21_n365(x)
- else
- fun_l21_n995(x)
- end
-end
-
-def fun_l20_n140(x)
- if (x < 1)
- fun_l21_n614(x)
- else
- fun_l21_n79(x)
- end
-end
-
-def fun_l20_n141(x)
- if (x < 1)
- fun_l21_n138(x)
- else
- fun_l21_n655(x)
- end
-end
-
-def fun_l20_n142(x)
- if (x < 1)
- fun_l21_n155(x)
- else
- fun_l21_n34(x)
- end
-end
-
-def fun_l20_n143(x)
- if (x < 1)
- fun_l21_n829(x)
- else
- fun_l21_n703(x)
- end
-end
-
-def fun_l20_n144(x)
- if (x < 1)
- fun_l21_n290(x)
- else
- fun_l21_n279(x)
- end
-end
-
-def fun_l20_n145(x)
- if (x < 1)
- fun_l21_n825(x)
- else
- fun_l21_n720(x)
- end
-end
-
-def fun_l20_n146(x)
- if (x < 1)
- fun_l21_n678(x)
- else
- fun_l21_n347(x)
- end
-end
-
-def fun_l20_n147(x)
- if (x < 1)
- fun_l21_n967(x)
- else
- fun_l21_n133(x)
- end
-end
-
-def fun_l20_n148(x)
- if (x < 1)
- fun_l21_n935(x)
- else
- fun_l21_n438(x)
- end
-end
-
-def fun_l20_n149(x)
- if (x < 1)
- fun_l21_n14(x)
- else
- fun_l21_n233(x)
- end
-end
-
-def fun_l20_n150(x)
- if (x < 1)
- fun_l21_n42(x)
- else
- fun_l21_n507(x)
- end
-end
-
-def fun_l20_n151(x)
- if (x < 1)
- fun_l21_n33(x)
- else
- fun_l21_n404(x)
- end
-end
-
-def fun_l20_n152(x)
- if (x < 1)
- fun_l21_n897(x)
- else
- fun_l21_n972(x)
- end
-end
-
-def fun_l20_n153(x)
- if (x < 1)
- fun_l21_n221(x)
- else
- fun_l21_n718(x)
- end
-end
-
-def fun_l20_n154(x)
- if (x < 1)
- fun_l21_n737(x)
- else
- fun_l21_n257(x)
- end
-end
-
-def fun_l20_n155(x)
- if (x < 1)
- fun_l21_n465(x)
- else
- fun_l21_n917(x)
- end
-end
-
-def fun_l20_n156(x)
- if (x < 1)
- fun_l21_n338(x)
- else
- fun_l21_n673(x)
- end
-end
-
-def fun_l20_n157(x)
- if (x < 1)
- fun_l21_n429(x)
- else
- fun_l21_n23(x)
- end
-end
-
-def fun_l20_n158(x)
- if (x < 1)
- fun_l21_n826(x)
- else
- fun_l21_n115(x)
- end
-end
-
-def fun_l20_n159(x)
- if (x < 1)
- fun_l21_n713(x)
- else
- fun_l21_n954(x)
- end
-end
-
-def fun_l20_n160(x)
- if (x < 1)
- fun_l21_n897(x)
- else
- fun_l21_n46(x)
- end
-end
-
-def fun_l20_n161(x)
- if (x < 1)
- fun_l21_n751(x)
- else
- fun_l21_n885(x)
- end
-end
-
-def fun_l20_n162(x)
- if (x < 1)
- fun_l21_n935(x)
- else
- fun_l21_n230(x)
- end
-end
-
-def fun_l20_n163(x)
- if (x < 1)
- fun_l21_n862(x)
- else
- fun_l21_n874(x)
- end
-end
-
-def fun_l20_n164(x)
- if (x < 1)
- fun_l21_n695(x)
- else
- fun_l21_n707(x)
- end
-end
-
-def fun_l20_n165(x)
- if (x < 1)
- fun_l21_n539(x)
- else
- fun_l21_n14(x)
- end
-end
-
-def fun_l20_n166(x)
- if (x < 1)
- fun_l21_n139(x)
- else
- fun_l21_n766(x)
- end
-end
-
-def fun_l20_n167(x)
- if (x < 1)
- fun_l21_n100(x)
- else
- fun_l21_n229(x)
- end
-end
-
-def fun_l20_n168(x)
- if (x < 1)
- fun_l21_n88(x)
- else
- fun_l21_n642(x)
- end
-end
-
-def fun_l20_n169(x)
- if (x < 1)
- fun_l21_n57(x)
- else
- fun_l21_n252(x)
- end
-end
-
-def fun_l20_n170(x)
- if (x < 1)
- fun_l21_n470(x)
- else
- fun_l21_n224(x)
- end
-end
-
-def fun_l20_n171(x)
- if (x < 1)
- fun_l21_n163(x)
- else
- fun_l21_n114(x)
- end
-end
-
-def fun_l20_n172(x)
- if (x < 1)
- fun_l21_n231(x)
- else
- fun_l21_n405(x)
- end
-end
-
-def fun_l20_n173(x)
- if (x < 1)
- fun_l21_n553(x)
- else
- fun_l21_n758(x)
- end
-end
-
-def fun_l20_n174(x)
- if (x < 1)
- fun_l21_n874(x)
- else
- fun_l21_n43(x)
- end
-end
-
-def fun_l20_n175(x)
- if (x < 1)
- fun_l21_n911(x)
- else
- fun_l21_n644(x)
- end
-end
-
-def fun_l20_n176(x)
- if (x < 1)
- fun_l21_n747(x)
- else
- fun_l21_n900(x)
- end
-end
-
-def fun_l20_n177(x)
- if (x < 1)
- fun_l21_n956(x)
- else
- fun_l21_n152(x)
- end
-end
-
-def fun_l20_n178(x)
- if (x < 1)
- fun_l21_n226(x)
- else
- fun_l21_n654(x)
- end
-end
-
-def fun_l20_n179(x)
- if (x < 1)
- fun_l21_n284(x)
- else
- fun_l21_n968(x)
- end
-end
-
-def fun_l20_n180(x)
- if (x < 1)
- fun_l21_n181(x)
- else
- fun_l21_n690(x)
- end
-end
-
-def fun_l20_n181(x)
- if (x < 1)
- fun_l21_n35(x)
- else
- fun_l21_n500(x)
- end
-end
-
-def fun_l20_n182(x)
- if (x < 1)
- fun_l21_n212(x)
- else
- fun_l21_n559(x)
- end
-end
-
-def fun_l20_n183(x)
- if (x < 1)
- fun_l21_n981(x)
- else
- fun_l21_n605(x)
- end
-end
-
-def fun_l20_n184(x)
- if (x < 1)
- fun_l21_n447(x)
- else
- fun_l21_n718(x)
- end
-end
-
-def fun_l20_n185(x)
- if (x < 1)
- fun_l21_n272(x)
- else
- fun_l21_n341(x)
- end
-end
-
-def fun_l20_n186(x)
- if (x < 1)
- fun_l21_n5(x)
- else
- fun_l21_n426(x)
- end
-end
-
-def fun_l20_n187(x)
- if (x < 1)
- fun_l21_n630(x)
- else
- fun_l21_n62(x)
- end
-end
-
-def fun_l20_n188(x)
- if (x < 1)
- fun_l21_n600(x)
- else
- fun_l21_n674(x)
- end
-end
-
-def fun_l20_n189(x)
- if (x < 1)
- fun_l21_n645(x)
- else
- fun_l21_n936(x)
- end
-end
-
-def fun_l20_n190(x)
- if (x < 1)
- fun_l21_n15(x)
- else
- fun_l21_n158(x)
- end
-end
-
-def fun_l20_n191(x)
- if (x < 1)
- fun_l21_n789(x)
- else
- fun_l21_n103(x)
- end
-end
-
-def fun_l20_n192(x)
- if (x < 1)
- fun_l21_n501(x)
- else
- fun_l21_n655(x)
- end
-end
-
-def fun_l20_n193(x)
- if (x < 1)
- fun_l21_n242(x)
- else
- fun_l21_n241(x)
- end
-end
-
-def fun_l20_n194(x)
- if (x < 1)
- fun_l21_n296(x)
- else
- fun_l21_n442(x)
- end
-end
-
-def fun_l20_n195(x)
- if (x < 1)
- fun_l21_n288(x)
- else
- fun_l21_n165(x)
- end
-end
-
-def fun_l20_n196(x)
- if (x < 1)
- fun_l21_n336(x)
- else
- fun_l21_n328(x)
- end
-end
-
-def fun_l20_n197(x)
- if (x < 1)
- fun_l21_n423(x)
- else
- fun_l21_n906(x)
- end
-end
-
-def fun_l20_n198(x)
- if (x < 1)
- fun_l21_n875(x)
- else
- fun_l21_n801(x)
- end
-end
-
-def fun_l20_n199(x)
- if (x < 1)
- fun_l21_n864(x)
- else
- fun_l21_n594(x)
- end
-end
-
-def fun_l20_n200(x)
- if (x < 1)
- fun_l21_n145(x)
- else
- fun_l21_n728(x)
- end
-end
-
-def fun_l20_n201(x)
- if (x < 1)
- fun_l21_n941(x)
- else
- fun_l21_n592(x)
- end
-end
-
-def fun_l20_n202(x)
- if (x < 1)
- fun_l21_n458(x)
- else
- fun_l21_n839(x)
- end
-end
-
-def fun_l20_n203(x)
- if (x < 1)
- fun_l21_n352(x)
- else
- fun_l21_n319(x)
- end
-end
-
-def fun_l20_n204(x)
- if (x < 1)
- fun_l21_n453(x)
- else
- fun_l21_n944(x)
- end
-end
-
-def fun_l20_n205(x)
- if (x < 1)
- fun_l21_n479(x)
- else
- fun_l21_n409(x)
- end
-end
-
-def fun_l20_n206(x)
- if (x < 1)
- fun_l21_n72(x)
- else
- fun_l21_n177(x)
- end
-end
-
-def fun_l20_n207(x)
- if (x < 1)
- fun_l21_n895(x)
- else
- fun_l21_n77(x)
- end
-end
-
-def fun_l20_n208(x)
- if (x < 1)
- fun_l21_n308(x)
- else
- fun_l21_n181(x)
- end
-end
-
-def fun_l20_n209(x)
- if (x < 1)
- fun_l21_n358(x)
- else
- fun_l21_n666(x)
- end
-end
-
-def fun_l20_n210(x)
- if (x < 1)
- fun_l21_n275(x)
- else
- fun_l21_n739(x)
- end
-end
-
-def fun_l20_n211(x)
- if (x < 1)
- fun_l21_n706(x)
- else
- fun_l21_n722(x)
- end
-end
-
-def fun_l20_n212(x)
- if (x < 1)
- fun_l21_n185(x)
- else
- fun_l21_n893(x)
- end
-end
-
-def fun_l20_n213(x)
- if (x < 1)
- fun_l21_n307(x)
- else
- fun_l21_n871(x)
- end
-end
-
-def fun_l20_n214(x)
- if (x < 1)
- fun_l21_n365(x)
- else
- fun_l21_n311(x)
- end
-end
-
-def fun_l20_n215(x)
- if (x < 1)
- fun_l21_n176(x)
- else
- fun_l21_n998(x)
- end
-end
-
-def fun_l20_n216(x)
- if (x < 1)
- fun_l21_n542(x)
- else
- fun_l21_n248(x)
- end
-end
-
-def fun_l20_n217(x)
- if (x < 1)
- fun_l21_n568(x)
- else
- fun_l21_n671(x)
- end
-end
-
-def fun_l20_n218(x)
- if (x < 1)
- fun_l21_n704(x)
- else
- fun_l21_n992(x)
- end
-end
-
-def fun_l20_n219(x)
- if (x < 1)
- fun_l21_n500(x)
- else
- fun_l21_n845(x)
- end
-end
-
-def fun_l20_n220(x)
- if (x < 1)
- fun_l21_n75(x)
- else
- fun_l21_n365(x)
- end
-end
-
-def fun_l20_n221(x)
- if (x < 1)
- fun_l21_n780(x)
- else
- fun_l21_n574(x)
- end
-end
-
-def fun_l20_n222(x)
- if (x < 1)
- fun_l21_n778(x)
- else
- fun_l21_n315(x)
- end
-end
-
-def fun_l20_n223(x)
- if (x < 1)
- fun_l21_n845(x)
- else
- fun_l21_n521(x)
- end
-end
-
-def fun_l20_n224(x)
- if (x < 1)
- fun_l21_n608(x)
- else
- fun_l21_n762(x)
- end
-end
-
-def fun_l20_n225(x)
- if (x < 1)
- fun_l21_n912(x)
- else
- fun_l21_n651(x)
- end
-end
-
-def fun_l20_n226(x)
- if (x < 1)
- fun_l21_n337(x)
- else
- fun_l21_n723(x)
- end
-end
-
-def fun_l20_n227(x)
- if (x < 1)
- fun_l21_n734(x)
- else
- fun_l21_n967(x)
- end
-end
-
-def fun_l20_n228(x)
- if (x < 1)
- fun_l21_n342(x)
- else
- fun_l21_n611(x)
- end
-end
-
-def fun_l20_n229(x)
- if (x < 1)
- fun_l21_n607(x)
- else
- fun_l21_n317(x)
- end
-end
-
-def fun_l20_n230(x)
- if (x < 1)
- fun_l21_n478(x)
- else
- fun_l21_n208(x)
- end
-end
-
-def fun_l20_n231(x)
- if (x < 1)
- fun_l21_n481(x)
- else
- fun_l21_n171(x)
- end
-end
-
-def fun_l20_n232(x)
- if (x < 1)
- fun_l21_n80(x)
- else
- fun_l21_n810(x)
- end
-end
-
-def fun_l20_n233(x)
- if (x < 1)
- fun_l21_n597(x)
- else
- fun_l21_n474(x)
- end
-end
-
-def fun_l20_n234(x)
- if (x < 1)
- fun_l21_n997(x)
- else
- fun_l21_n98(x)
- end
-end
-
-def fun_l20_n235(x)
- if (x < 1)
- fun_l21_n663(x)
- else
- fun_l21_n103(x)
- end
-end
-
-def fun_l20_n236(x)
- if (x < 1)
- fun_l21_n602(x)
- else
- fun_l21_n421(x)
- end
-end
-
-def fun_l20_n237(x)
- if (x < 1)
- fun_l21_n888(x)
- else
- fun_l21_n759(x)
- end
-end
-
-def fun_l20_n238(x)
- if (x < 1)
- fun_l21_n21(x)
- else
- fun_l21_n56(x)
- end
-end
-
-def fun_l20_n239(x)
- if (x < 1)
- fun_l21_n663(x)
- else
- fun_l21_n102(x)
- end
-end
-
-def fun_l20_n240(x)
- if (x < 1)
- fun_l21_n244(x)
- else
- fun_l21_n507(x)
- end
-end
-
-def fun_l20_n241(x)
- if (x < 1)
- fun_l21_n263(x)
- else
- fun_l21_n382(x)
- end
-end
-
-def fun_l20_n242(x)
- if (x < 1)
- fun_l21_n639(x)
- else
- fun_l21_n380(x)
- end
-end
-
-def fun_l20_n243(x)
- if (x < 1)
- fun_l21_n99(x)
- else
- fun_l21_n35(x)
- end
-end
-
-def fun_l20_n244(x)
- if (x < 1)
- fun_l21_n648(x)
- else
- fun_l21_n266(x)
- end
-end
-
-def fun_l20_n245(x)
- if (x < 1)
- fun_l21_n613(x)
- else
- fun_l21_n277(x)
- end
-end
-
-def fun_l20_n246(x)
- if (x < 1)
- fun_l21_n886(x)
- else
- fun_l21_n4(x)
- end
-end
-
-def fun_l20_n247(x)
- if (x < 1)
- fun_l21_n510(x)
- else
- fun_l21_n146(x)
- end
-end
-
-def fun_l20_n248(x)
- if (x < 1)
- fun_l21_n933(x)
- else
- fun_l21_n765(x)
- end
-end
-
-def fun_l20_n249(x)
- if (x < 1)
- fun_l21_n323(x)
- else
- fun_l21_n222(x)
- end
-end
-
-def fun_l20_n250(x)
- if (x < 1)
- fun_l21_n708(x)
- else
- fun_l21_n241(x)
- end
-end
-
-def fun_l20_n251(x)
- if (x < 1)
- fun_l21_n394(x)
- else
- fun_l21_n899(x)
- end
-end
-
-def fun_l20_n252(x)
- if (x < 1)
- fun_l21_n253(x)
- else
- fun_l21_n221(x)
- end
-end
-
-def fun_l20_n253(x)
- if (x < 1)
- fun_l21_n842(x)
- else
- fun_l21_n594(x)
- end
-end
-
-def fun_l20_n254(x)
- if (x < 1)
- fun_l21_n325(x)
- else
- fun_l21_n145(x)
- end
-end
-
-def fun_l20_n255(x)
- if (x < 1)
- fun_l21_n568(x)
- else
- fun_l21_n736(x)
- end
-end
-
-def fun_l20_n256(x)
- if (x < 1)
- fun_l21_n862(x)
- else
- fun_l21_n388(x)
- end
-end
-
-def fun_l20_n257(x)
- if (x < 1)
- fun_l21_n738(x)
- else
- fun_l21_n255(x)
- end
-end
-
-def fun_l20_n258(x)
- if (x < 1)
- fun_l21_n704(x)
- else
- fun_l21_n539(x)
- end
-end
-
-def fun_l20_n259(x)
- if (x < 1)
- fun_l21_n149(x)
- else
- fun_l21_n940(x)
- end
-end
-
-def fun_l20_n260(x)
- if (x < 1)
- fun_l21_n462(x)
- else
- fun_l21_n840(x)
- end
-end
-
-def fun_l20_n261(x)
- if (x < 1)
- fun_l21_n549(x)
- else
- fun_l21_n968(x)
- end
-end
-
-def fun_l20_n262(x)
- if (x < 1)
- fun_l21_n290(x)
- else
- fun_l21_n127(x)
- end
-end
-
-def fun_l20_n263(x)
- if (x < 1)
- fun_l21_n311(x)
- else
- fun_l21_n652(x)
- end
-end
-
-def fun_l20_n264(x)
- if (x < 1)
- fun_l21_n544(x)
- else
- fun_l21_n521(x)
- end
-end
-
-def fun_l20_n265(x)
- if (x < 1)
- fun_l21_n984(x)
- else
- fun_l21_n957(x)
- end
-end
-
-def fun_l20_n266(x)
- if (x < 1)
- fun_l21_n10(x)
- else
- fun_l21_n154(x)
- end
-end
-
-def fun_l20_n267(x)
- if (x < 1)
- fun_l21_n707(x)
- else
- fun_l21_n623(x)
- end
-end
-
-def fun_l20_n268(x)
- if (x < 1)
- fun_l21_n420(x)
- else
- fun_l21_n31(x)
- end
-end
-
-def fun_l20_n269(x)
- if (x < 1)
- fun_l21_n380(x)
- else
- fun_l21_n397(x)
- end
-end
-
-def fun_l20_n270(x)
- if (x < 1)
- fun_l21_n95(x)
- else
- fun_l21_n881(x)
- end
-end
-
-def fun_l20_n271(x)
- if (x < 1)
- fun_l21_n731(x)
- else
- fun_l21_n521(x)
- end
-end
-
-def fun_l20_n272(x)
- if (x < 1)
- fun_l21_n255(x)
- else
- fun_l21_n412(x)
- end
-end
-
-def fun_l20_n273(x)
- if (x < 1)
- fun_l21_n455(x)
- else
- fun_l21_n225(x)
- end
-end
-
-def fun_l20_n274(x)
- if (x < 1)
- fun_l21_n223(x)
- else
- fun_l21_n71(x)
- end
-end
-
-def fun_l20_n275(x)
- if (x < 1)
- fun_l21_n819(x)
- else
- fun_l21_n765(x)
- end
-end
-
-def fun_l20_n276(x)
- if (x < 1)
- fun_l21_n379(x)
- else
- fun_l21_n892(x)
- end
-end
-
-def fun_l20_n277(x)
- if (x < 1)
- fun_l21_n695(x)
- else
- fun_l21_n856(x)
- end
-end
-
-def fun_l20_n278(x)
- if (x < 1)
- fun_l21_n217(x)
- else
- fun_l21_n166(x)
- end
-end
-
-def fun_l20_n279(x)
- if (x < 1)
- fun_l21_n708(x)
- else
- fun_l21_n987(x)
- end
-end
-
-def fun_l20_n280(x)
- if (x < 1)
- fun_l21_n251(x)
- else
- fun_l21_n144(x)
- end
-end
-
-def fun_l20_n281(x)
- if (x < 1)
- fun_l21_n262(x)
- else
- fun_l21_n428(x)
- end
-end
-
-def fun_l20_n282(x)
- if (x < 1)
- fun_l21_n439(x)
- else
- fun_l21_n1(x)
- end
-end
-
-def fun_l20_n283(x)
- if (x < 1)
- fun_l21_n405(x)
- else
- fun_l21_n413(x)
- end
-end
-
-def fun_l20_n284(x)
- if (x < 1)
- fun_l21_n729(x)
- else
- fun_l21_n61(x)
- end
-end
-
-def fun_l20_n285(x)
- if (x < 1)
- fun_l21_n255(x)
- else
- fun_l21_n985(x)
- end
-end
-
-def fun_l20_n286(x)
- if (x < 1)
- fun_l21_n348(x)
- else
- fun_l21_n54(x)
- end
-end
-
-def fun_l20_n287(x)
- if (x < 1)
- fun_l21_n663(x)
- else
- fun_l21_n837(x)
- end
-end
-
-def fun_l20_n288(x)
- if (x < 1)
- fun_l21_n444(x)
- else
- fun_l21_n767(x)
- end
-end
-
-def fun_l20_n289(x)
- if (x < 1)
- fun_l21_n756(x)
- else
- fun_l21_n246(x)
- end
-end
-
-def fun_l20_n290(x)
- if (x < 1)
- fun_l21_n0(x)
- else
- fun_l21_n253(x)
- end
-end
-
-def fun_l20_n291(x)
- if (x < 1)
- fun_l21_n867(x)
- else
- fun_l21_n464(x)
- end
-end
-
-def fun_l20_n292(x)
- if (x < 1)
- fun_l21_n885(x)
- else
- fun_l21_n588(x)
- end
-end
-
-def fun_l20_n293(x)
- if (x < 1)
- fun_l21_n420(x)
- else
- fun_l21_n622(x)
- end
-end
-
-def fun_l20_n294(x)
- if (x < 1)
- fun_l21_n411(x)
- else
- fun_l21_n351(x)
- end
-end
-
-def fun_l20_n295(x)
- if (x < 1)
- fun_l21_n208(x)
- else
- fun_l21_n0(x)
- end
-end
-
-def fun_l20_n296(x)
- if (x < 1)
- fun_l21_n551(x)
- else
- fun_l21_n68(x)
- end
-end
-
-def fun_l20_n297(x)
- if (x < 1)
- fun_l21_n351(x)
- else
- fun_l21_n108(x)
- end
-end
-
-def fun_l20_n298(x)
- if (x < 1)
- fun_l21_n134(x)
- else
- fun_l21_n893(x)
- end
-end
-
-def fun_l20_n299(x)
- if (x < 1)
- fun_l21_n697(x)
- else
- fun_l21_n538(x)
- end
-end
-
-def fun_l20_n300(x)
- if (x < 1)
- fun_l21_n61(x)
- else
- fun_l21_n641(x)
- end
-end
-
-def fun_l20_n301(x)
- if (x < 1)
- fun_l21_n13(x)
- else
- fun_l21_n103(x)
- end
-end
-
-def fun_l20_n302(x)
- if (x < 1)
- fun_l21_n260(x)
- else
- fun_l21_n430(x)
- end
-end
-
-def fun_l20_n303(x)
- if (x < 1)
- fun_l21_n63(x)
- else
- fun_l21_n911(x)
- end
-end
-
-def fun_l20_n304(x)
- if (x < 1)
- fun_l21_n470(x)
- else
- fun_l21_n407(x)
- end
-end
-
-def fun_l20_n305(x)
- if (x < 1)
- fun_l21_n615(x)
- else
- fun_l21_n767(x)
- end
-end
-
-def fun_l20_n306(x)
- if (x < 1)
- fun_l21_n898(x)
- else
- fun_l21_n215(x)
- end
-end
-
-def fun_l20_n307(x)
- if (x < 1)
- fun_l21_n793(x)
- else
- fun_l21_n468(x)
- end
-end
-
-def fun_l20_n308(x)
- if (x < 1)
- fun_l21_n582(x)
- else
- fun_l21_n968(x)
- end
-end
-
-def fun_l20_n309(x)
- if (x < 1)
- fun_l21_n7(x)
- else
- fun_l21_n703(x)
- end
-end
-
-def fun_l20_n310(x)
- if (x < 1)
- fun_l21_n826(x)
- else
- fun_l21_n735(x)
- end
-end
-
-def fun_l20_n311(x)
- if (x < 1)
- fun_l21_n856(x)
- else
- fun_l21_n959(x)
- end
-end
-
-def fun_l20_n312(x)
- if (x < 1)
- fun_l21_n194(x)
- else
- fun_l21_n158(x)
- end
-end
-
-def fun_l20_n313(x)
- if (x < 1)
- fun_l21_n690(x)
- else
- fun_l21_n813(x)
- end
-end
-
-def fun_l20_n314(x)
- if (x < 1)
- fun_l21_n699(x)
- else
- fun_l21_n842(x)
- end
-end
-
-def fun_l20_n315(x)
- if (x < 1)
- fun_l21_n485(x)
- else
- fun_l21_n0(x)
- end
-end
-
-def fun_l20_n316(x)
- if (x < 1)
- fun_l21_n753(x)
- else
- fun_l21_n306(x)
- end
-end
-
-def fun_l20_n317(x)
- if (x < 1)
- fun_l21_n516(x)
- else
- fun_l21_n35(x)
- end
-end
-
-def fun_l20_n318(x)
- if (x < 1)
- fun_l21_n78(x)
- else
- fun_l21_n104(x)
- end
-end
-
-def fun_l20_n319(x)
- if (x < 1)
- fun_l21_n492(x)
- else
- fun_l21_n211(x)
- end
-end
-
-def fun_l20_n320(x)
- if (x < 1)
- fun_l21_n303(x)
- else
- fun_l21_n218(x)
- end
-end
-
-def fun_l20_n321(x)
- if (x < 1)
- fun_l21_n614(x)
- else
- fun_l21_n743(x)
- end
-end
-
-def fun_l20_n322(x)
- if (x < 1)
- fun_l21_n141(x)
- else
- fun_l21_n320(x)
- end
-end
-
-def fun_l20_n323(x)
- if (x < 1)
- fun_l21_n349(x)
- else
- fun_l21_n396(x)
- end
-end
-
-def fun_l20_n324(x)
- if (x < 1)
- fun_l21_n189(x)
- else
- fun_l21_n32(x)
- end
-end
-
-def fun_l20_n325(x)
- if (x < 1)
- fun_l21_n938(x)
- else
- fun_l21_n747(x)
- end
-end
-
-def fun_l20_n326(x)
- if (x < 1)
- fun_l21_n571(x)
- else
- fun_l21_n20(x)
- end
-end
-
-def fun_l20_n327(x)
- if (x < 1)
- fun_l21_n905(x)
- else
- fun_l21_n106(x)
- end
-end
-
-def fun_l20_n328(x)
- if (x < 1)
- fun_l21_n849(x)
- else
- fun_l21_n747(x)
- end
-end
-
-def fun_l20_n329(x)
- if (x < 1)
- fun_l21_n830(x)
- else
- fun_l21_n61(x)
- end
-end
-
-def fun_l20_n330(x)
- if (x < 1)
- fun_l21_n613(x)
- else
- fun_l21_n945(x)
- end
-end
-
-def fun_l20_n331(x)
- if (x < 1)
- fun_l21_n379(x)
- else
- fun_l21_n920(x)
- end
-end
-
-def fun_l20_n332(x)
- if (x < 1)
- fun_l21_n315(x)
- else
- fun_l21_n968(x)
- end
-end
-
-def fun_l20_n333(x)
- if (x < 1)
- fun_l21_n256(x)
- else
- fun_l21_n460(x)
- end
-end
-
-def fun_l20_n334(x)
- if (x < 1)
- fun_l21_n644(x)
- else
- fun_l21_n372(x)
- end
-end
-
-def fun_l20_n335(x)
- if (x < 1)
- fun_l21_n588(x)
- else
- fun_l21_n351(x)
- end
-end
-
-def fun_l20_n336(x)
- if (x < 1)
- fun_l21_n516(x)
- else
- fun_l21_n975(x)
- end
-end
-
-def fun_l20_n337(x)
- if (x < 1)
- fun_l21_n432(x)
- else
- fun_l21_n47(x)
- end
-end
-
-def fun_l20_n338(x)
- if (x < 1)
- fun_l21_n31(x)
- else
- fun_l21_n728(x)
- end
-end
-
-def fun_l20_n339(x)
- if (x < 1)
- fun_l21_n700(x)
- else
- fun_l21_n454(x)
- end
-end
-
-def fun_l20_n340(x)
- if (x < 1)
- fun_l21_n947(x)
- else
- fun_l21_n880(x)
- end
-end
-
-def fun_l20_n341(x)
- if (x < 1)
- fun_l21_n363(x)
- else
- fun_l21_n861(x)
- end
-end
-
-def fun_l20_n342(x)
- if (x < 1)
- fun_l21_n338(x)
- else
- fun_l21_n118(x)
- end
-end
-
-def fun_l20_n343(x)
- if (x < 1)
- fun_l21_n352(x)
- else
- fun_l21_n402(x)
- end
-end
-
-def fun_l20_n344(x)
- if (x < 1)
- fun_l21_n344(x)
- else
- fun_l21_n407(x)
- end
-end
-
-def fun_l20_n345(x)
- if (x < 1)
- fun_l21_n869(x)
- else
- fun_l21_n912(x)
- end
-end
-
-def fun_l20_n346(x)
- if (x < 1)
- fun_l21_n397(x)
- else
- fun_l21_n429(x)
- end
-end
-
-def fun_l20_n347(x)
- if (x < 1)
- fun_l21_n28(x)
- else
- fun_l21_n671(x)
- end
-end
-
-def fun_l20_n348(x)
- if (x < 1)
- fun_l21_n215(x)
- else
- fun_l21_n821(x)
- end
-end
-
-def fun_l20_n349(x)
- if (x < 1)
- fun_l21_n432(x)
- else
- fun_l21_n250(x)
- end
-end
-
-def fun_l20_n350(x)
- if (x < 1)
- fun_l21_n496(x)
- else
- fun_l21_n988(x)
- end
-end
-
-def fun_l20_n351(x)
- if (x < 1)
- fun_l21_n317(x)
- else
- fun_l21_n516(x)
- end
-end
-
-def fun_l20_n352(x)
- if (x < 1)
- fun_l21_n968(x)
- else
- fun_l21_n638(x)
- end
-end
-
-def fun_l20_n353(x)
- if (x < 1)
- fun_l21_n447(x)
- else
- fun_l21_n14(x)
- end
-end
-
-def fun_l20_n354(x)
- if (x < 1)
- fun_l21_n151(x)
- else
- fun_l21_n545(x)
- end
-end
-
-def fun_l20_n355(x)
- if (x < 1)
- fun_l21_n579(x)
- else
- fun_l21_n934(x)
- end
-end
-
-def fun_l20_n356(x)
- if (x < 1)
- fun_l21_n612(x)
- else
- fun_l21_n433(x)
- end
-end
-
-def fun_l20_n357(x)
- if (x < 1)
- fun_l21_n969(x)
- else
- fun_l21_n816(x)
- end
-end
-
-def fun_l20_n358(x)
- if (x < 1)
- fun_l21_n24(x)
- else
- fun_l21_n272(x)
- end
-end
-
-def fun_l20_n359(x)
- if (x < 1)
- fun_l21_n945(x)
- else
- fun_l21_n458(x)
- end
-end
-
-def fun_l20_n360(x)
- if (x < 1)
- fun_l21_n294(x)
- else
- fun_l21_n934(x)
- end
-end
-
-def fun_l20_n361(x)
- if (x < 1)
- fun_l21_n777(x)
- else
- fun_l21_n499(x)
- end
-end
-
-def fun_l20_n362(x)
- if (x < 1)
- fun_l21_n538(x)
- else
- fun_l21_n400(x)
- end
-end
-
-def fun_l20_n363(x)
- if (x < 1)
- fun_l21_n660(x)
- else
- fun_l21_n970(x)
- end
-end
-
-def fun_l20_n364(x)
- if (x < 1)
- fun_l21_n230(x)
- else
- fun_l21_n977(x)
- end
-end
-
-def fun_l20_n365(x)
- if (x < 1)
- fun_l21_n335(x)
- else
- fun_l21_n436(x)
- end
-end
-
-def fun_l20_n366(x)
- if (x < 1)
- fun_l21_n596(x)
- else
- fun_l21_n992(x)
- end
-end
-
-def fun_l20_n367(x)
- if (x < 1)
- fun_l21_n502(x)
- else
- fun_l21_n251(x)
- end
-end
-
-def fun_l20_n368(x)
- if (x < 1)
- fun_l21_n501(x)
- else
- fun_l21_n493(x)
- end
-end
-
-def fun_l20_n369(x)
- if (x < 1)
- fun_l21_n48(x)
- else
- fun_l21_n850(x)
- end
-end
-
-def fun_l20_n370(x)
- if (x < 1)
- fun_l21_n900(x)
- else
- fun_l21_n919(x)
- end
-end
-
-def fun_l20_n371(x)
- if (x < 1)
- fun_l21_n349(x)
- else
- fun_l21_n80(x)
- end
-end
-
-def fun_l20_n372(x)
- if (x < 1)
- fun_l21_n275(x)
- else
- fun_l21_n135(x)
- end
-end
-
-def fun_l20_n373(x)
- if (x < 1)
- fun_l21_n987(x)
- else
- fun_l21_n472(x)
- end
-end
-
-def fun_l20_n374(x)
- if (x < 1)
- fun_l21_n877(x)
- else
- fun_l21_n298(x)
- end
-end
-
-def fun_l20_n375(x)
- if (x < 1)
- fun_l21_n518(x)
- else
- fun_l21_n676(x)
- end
-end
-
-def fun_l20_n376(x)
- if (x < 1)
- fun_l21_n108(x)
- else
- fun_l21_n470(x)
- end
-end
-
-def fun_l20_n377(x)
- if (x < 1)
- fun_l21_n643(x)
- else
- fun_l21_n189(x)
- end
-end
-
-def fun_l20_n378(x)
- if (x < 1)
- fun_l21_n608(x)
- else
- fun_l21_n376(x)
- end
-end
-
-def fun_l20_n379(x)
- if (x < 1)
- fun_l21_n520(x)
- else
- fun_l21_n651(x)
- end
-end
-
-def fun_l20_n380(x)
- if (x < 1)
- fun_l21_n399(x)
- else
- fun_l21_n867(x)
- end
-end
-
-def fun_l20_n381(x)
- if (x < 1)
- fun_l21_n815(x)
- else
- fun_l21_n78(x)
- end
-end
-
-def fun_l20_n382(x)
- if (x < 1)
- fun_l21_n216(x)
- else
- fun_l21_n379(x)
- end
-end
-
-def fun_l20_n383(x)
- if (x < 1)
- fun_l21_n628(x)
- else
- fun_l21_n227(x)
- end
-end
-
-def fun_l20_n384(x)
- if (x < 1)
- fun_l21_n699(x)
- else
- fun_l21_n170(x)
- end
-end
-
-def fun_l20_n385(x)
- if (x < 1)
- fun_l21_n444(x)
- else
- fun_l21_n603(x)
- end
-end
-
-def fun_l20_n386(x)
- if (x < 1)
- fun_l21_n299(x)
- else
- fun_l21_n803(x)
- end
-end
-
-def fun_l20_n387(x)
- if (x < 1)
- fun_l21_n708(x)
- else
- fun_l21_n187(x)
- end
-end
-
-def fun_l20_n388(x)
- if (x < 1)
- fun_l21_n490(x)
- else
- fun_l21_n75(x)
- end
-end
-
-def fun_l20_n389(x)
- if (x < 1)
- fun_l21_n856(x)
- else
- fun_l21_n257(x)
- end
-end
-
-def fun_l20_n390(x)
- if (x < 1)
- fun_l21_n394(x)
- else
- fun_l21_n669(x)
- end
-end
-
-def fun_l20_n391(x)
- if (x < 1)
- fun_l21_n501(x)
- else
- fun_l21_n555(x)
- end
-end
-
-def fun_l20_n392(x)
- if (x < 1)
- fun_l21_n657(x)
- else
- fun_l21_n226(x)
- end
-end
-
-def fun_l20_n393(x)
- if (x < 1)
- fun_l21_n229(x)
- else
- fun_l21_n898(x)
- end
-end
-
-def fun_l20_n394(x)
- if (x < 1)
- fun_l21_n726(x)
- else
- fun_l21_n349(x)
- end
-end
-
-def fun_l20_n395(x)
- if (x < 1)
- fun_l21_n247(x)
- else
- fun_l21_n996(x)
- end
-end
-
-def fun_l20_n396(x)
- if (x < 1)
- fun_l21_n136(x)
- else
- fun_l21_n601(x)
- end
-end
-
-def fun_l20_n397(x)
- if (x < 1)
- fun_l21_n365(x)
- else
- fun_l21_n203(x)
- end
-end
-
-def fun_l20_n398(x)
- if (x < 1)
- fun_l21_n376(x)
- else
- fun_l21_n172(x)
- end
-end
-
-def fun_l20_n399(x)
- if (x < 1)
- fun_l21_n23(x)
- else
- fun_l21_n577(x)
- end
-end
-
-def fun_l20_n400(x)
- if (x < 1)
- fun_l21_n368(x)
- else
- fun_l21_n448(x)
- end
-end
-
-def fun_l20_n401(x)
- if (x < 1)
- fun_l21_n934(x)
- else
- fun_l21_n949(x)
- end
-end
-
-def fun_l20_n402(x)
- if (x < 1)
- fun_l21_n127(x)
- else
- fun_l21_n132(x)
- end
-end
-
-def fun_l20_n403(x)
- if (x < 1)
- fun_l21_n133(x)
- else
- fun_l21_n389(x)
- end
-end
-
-def fun_l20_n404(x)
- if (x < 1)
- fun_l21_n750(x)
- else
- fun_l21_n591(x)
- end
-end
-
-def fun_l20_n405(x)
- if (x < 1)
- fun_l21_n492(x)
- else
- fun_l21_n763(x)
- end
-end
-
-def fun_l20_n406(x)
- if (x < 1)
- fun_l21_n137(x)
- else
- fun_l21_n552(x)
- end
-end
-
-def fun_l20_n407(x)
- if (x < 1)
- fun_l21_n200(x)
- else
- fun_l21_n537(x)
- end
-end
-
-def fun_l20_n408(x)
- if (x < 1)
- fun_l21_n681(x)
- else
- fun_l21_n645(x)
- end
-end
-
-def fun_l20_n409(x)
- if (x < 1)
- fun_l21_n86(x)
- else
- fun_l21_n239(x)
- end
-end
-
-def fun_l20_n410(x)
- if (x < 1)
- fun_l21_n357(x)
- else
- fun_l21_n98(x)
- end
-end
-
-def fun_l20_n411(x)
- if (x < 1)
- fun_l21_n889(x)
- else
- fun_l21_n199(x)
- end
-end
-
-def fun_l20_n412(x)
- if (x < 1)
- fun_l21_n504(x)
- else
- fun_l21_n950(x)
- end
-end
-
-def fun_l20_n413(x)
- if (x < 1)
- fun_l21_n220(x)
- else
- fun_l21_n351(x)
- end
-end
-
-def fun_l20_n414(x)
- if (x < 1)
- fun_l21_n287(x)
- else
- fun_l21_n614(x)
- end
-end
-
-def fun_l20_n415(x)
- if (x < 1)
- fun_l21_n699(x)
- else
- fun_l21_n464(x)
- end
-end
-
-def fun_l20_n416(x)
- if (x < 1)
- fun_l21_n638(x)
- else
- fun_l21_n10(x)
- end
-end
-
-def fun_l20_n417(x)
- if (x < 1)
- fun_l21_n52(x)
- else
- fun_l21_n348(x)
- end
-end
-
-def fun_l20_n418(x)
- if (x < 1)
- fun_l21_n248(x)
- else
- fun_l21_n703(x)
- end
-end
-
-def fun_l20_n419(x)
- if (x < 1)
- fun_l21_n430(x)
- else
- fun_l21_n886(x)
- end
-end
-
-def fun_l20_n420(x)
- if (x < 1)
- fun_l21_n695(x)
- else
- fun_l21_n528(x)
- end
-end
-
-def fun_l20_n421(x)
- if (x < 1)
- fun_l21_n545(x)
- else
- fun_l21_n521(x)
- end
-end
-
-def fun_l20_n422(x)
- if (x < 1)
- fun_l21_n66(x)
- else
- fun_l21_n31(x)
- end
-end
-
-def fun_l20_n423(x)
- if (x < 1)
- fun_l21_n411(x)
- else
- fun_l21_n476(x)
- end
-end
-
-def fun_l20_n424(x)
- if (x < 1)
- fun_l21_n433(x)
- else
- fun_l21_n940(x)
- end
-end
-
-def fun_l20_n425(x)
- if (x < 1)
- fun_l21_n622(x)
- else
- fun_l21_n817(x)
- end
-end
-
-def fun_l20_n426(x)
- if (x < 1)
- fun_l21_n516(x)
- else
- fun_l21_n665(x)
- end
-end
-
-def fun_l20_n427(x)
- if (x < 1)
- fun_l21_n828(x)
- else
- fun_l21_n47(x)
- end
-end
-
-def fun_l20_n428(x)
- if (x < 1)
- fun_l21_n445(x)
- else
- fun_l21_n94(x)
- end
-end
-
-def fun_l20_n429(x)
- if (x < 1)
- fun_l21_n799(x)
- else
- fun_l21_n676(x)
- end
-end
-
-def fun_l20_n430(x)
- if (x < 1)
- fun_l21_n518(x)
- else
- fun_l21_n988(x)
- end
-end
-
-def fun_l20_n431(x)
- if (x < 1)
- fun_l21_n787(x)
- else
- fun_l21_n127(x)
- end
-end
-
-def fun_l20_n432(x)
- if (x < 1)
- fun_l21_n502(x)
- else
- fun_l21_n719(x)
- end
-end
-
-def fun_l20_n433(x)
- if (x < 1)
- fun_l21_n406(x)
- else
- fun_l21_n828(x)
- end
-end
-
-def fun_l20_n434(x)
- if (x < 1)
- fun_l21_n845(x)
- else
- fun_l21_n75(x)
- end
-end
-
-def fun_l20_n435(x)
- if (x < 1)
- fun_l21_n425(x)
- else
- fun_l21_n449(x)
- end
-end
-
-def fun_l20_n436(x)
- if (x < 1)
- fun_l21_n520(x)
- else
- fun_l21_n68(x)
- end
-end
-
-def fun_l20_n437(x)
- if (x < 1)
- fun_l21_n872(x)
- else
- fun_l21_n978(x)
- end
-end
-
-def fun_l20_n438(x)
- if (x < 1)
- fun_l21_n522(x)
- else
- fun_l21_n658(x)
- end
-end
-
-def fun_l20_n439(x)
- if (x < 1)
- fun_l21_n976(x)
- else
- fun_l21_n224(x)
- end
-end
-
-def fun_l20_n440(x)
- if (x < 1)
- fun_l21_n256(x)
- else
- fun_l21_n700(x)
- end
-end
-
-def fun_l20_n441(x)
- if (x < 1)
- fun_l21_n722(x)
- else
- fun_l21_n348(x)
- end
-end
-
-def fun_l20_n442(x)
- if (x < 1)
- fun_l21_n377(x)
- else
- fun_l21_n966(x)
- end
-end
-
-def fun_l20_n443(x)
- if (x < 1)
- fun_l21_n519(x)
- else
- fun_l21_n611(x)
- end
-end
-
-def fun_l20_n444(x)
- if (x < 1)
- fun_l21_n318(x)
- else
- fun_l21_n937(x)
- end
-end
-
-def fun_l20_n445(x)
- if (x < 1)
- fun_l21_n416(x)
- else
- fun_l21_n874(x)
- end
-end
-
-def fun_l20_n446(x)
- if (x < 1)
- fun_l21_n157(x)
- else
- fun_l21_n328(x)
- end
-end
-
-def fun_l20_n447(x)
- if (x < 1)
- fun_l21_n540(x)
- else
- fun_l21_n906(x)
- end
-end
-
-def fun_l20_n448(x)
- if (x < 1)
- fun_l21_n13(x)
- else
- fun_l21_n325(x)
- end
-end
-
-def fun_l20_n449(x)
- if (x < 1)
- fun_l21_n771(x)
- else
- fun_l21_n929(x)
- end
-end
-
-def fun_l20_n450(x)
- if (x < 1)
- fun_l21_n770(x)
- else
- fun_l21_n778(x)
- end
-end
-
-def fun_l20_n451(x)
- if (x < 1)
- fun_l21_n939(x)
- else
- fun_l21_n493(x)
- end
-end
-
-def fun_l20_n452(x)
- if (x < 1)
- fun_l21_n481(x)
- else
- fun_l21_n407(x)
- end
-end
-
-def fun_l20_n453(x)
- if (x < 1)
- fun_l21_n759(x)
- else
- fun_l21_n322(x)
- end
-end
-
-def fun_l20_n454(x)
- if (x < 1)
- fun_l21_n703(x)
- else
- fun_l21_n409(x)
- end
-end
-
-def fun_l20_n455(x)
- if (x < 1)
- fun_l21_n394(x)
- else
- fun_l21_n415(x)
- end
-end
-
-def fun_l20_n456(x)
- if (x < 1)
- fun_l21_n583(x)
- else
- fun_l21_n188(x)
- end
-end
-
-def fun_l20_n457(x)
- if (x < 1)
- fun_l21_n668(x)
- else
- fun_l21_n46(x)
- end
-end
-
-def fun_l20_n458(x)
- if (x < 1)
- fun_l21_n855(x)
- else
- fun_l21_n802(x)
- end
-end
-
-def fun_l20_n459(x)
- if (x < 1)
- fun_l21_n720(x)
- else
- fun_l21_n691(x)
- end
-end
-
-def fun_l20_n460(x)
- if (x < 1)
- fun_l21_n440(x)
- else
- fun_l21_n353(x)
- end
-end
-
-def fun_l20_n461(x)
- if (x < 1)
- fun_l21_n604(x)
- else
- fun_l21_n872(x)
- end
-end
-
-def fun_l20_n462(x)
- if (x < 1)
- fun_l21_n355(x)
- else
- fun_l21_n699(x)
- end
-end
-
-def fun_l20_n463(x)
- if (x < 1)
- fun_l21_n476(x)
- else
- fun_l21_n447(x)
- end
-end
-
-def fun_l20_n464(x)
- if (x < 1)
- fun_l21_n554(x)
- else
- fun_l21_n745(x)
- end
-end
-
-def fun_l20_n465(x)
- if (x < 1)
- fun_l21_n632(x)
- else
- fun_l21_n281(x)
- end
-end
-
-def fun_l20_n466(x)
- if (x < 1)
- fun_l21_n873(x)
- else
- fun_l21_n449(x)
- end
-end
-
-def fun_l20_n467(x)
- if (x < 1)
- fun_l21_n90(x)
- else
- fun_l21_n933(x)
- end
-end
-
-def fun_l20_n468(x)
- if (x < 1)
- fun_l21_n915(x)
- else
- fun_l21_n801(x)
- end
-end
-
-def fun_l20_n469(x)
- if (x < 1)
- fun_l21_n429(x)
- else
- fun_l21_n139(x)
- end
-end
-
-def fun_l20_n470(x)
- if (x < 1)
- fun_l21_n858(x)
- else
- fun_l21_n450(x)
- end
-end
-
-def fun_l20_n471(x)
- if (x < 1)
- fun_l21_n556(x)
- else
- fun_l21_n109(x)
- end
-end
-
-def fun_l20_n472(x)
- if (x < 1)
- fun_l21_n395(x)
- else
- fun_l21_n129(x)
- end
-end
-
-def fun_l20_n473(x)
- if (x < 1)
- fun_l21_n282(x)
- else
- fun_l21_n277(x)
- end
-end
-
-def fun_l20_n474(x)
- if (x < 1)
- fun_l21_n90(x)
- else
- fun_l21_n399(x)
- end
-end
-
-def fun_l20_n475(x)
- if (x < 1)
- fun_l21_n719(x)
- else
- fun_l21_n698(x)
- end
-end
-
-def fun_l20_n476(x)
- if (x < 1)
- fun_l21_n597(x)
- else
- fun_l21_n210(x)
- end
-end
-
-def fun_l20_n477(x)
- if (x < 1)
- fun_l21_n722(x)
- else
- fun_l21_n31(x)
- end
-end
-
-def fun_l20_n478(x)
- if (x < 1)
- fun_l21_n874(x)
- else
- fun_l21_n527(x)
- end
-end
-
-def fun_l20_n479(x)
- if (x < 1)
- fun_l21_n247(x)
- else
- fun_l21_n164(x)
- end
-end
-
-def fun_l20_n480(x)
- if (x < 1)
- fun_l21_n449(x)
- else
- fun_l21_n106(x)
- end
-end
-
-def fun_l20_n481(x)
- if (x < 1)
- fun_l21_n787(x)
- else
- fun_l21_n678(x)
- end
-end
-
-def fun_l20_n482(x)
- if (x < 1)
- fun_l21_n176(x)
- else
- fun_l21_n650(x)
- end
-end
-
-def fun_l20_n483(x)
- if (x < 1)
- fun_l21_n314(x)
- else
- fun_l21_n325(x)
- end
-end
-
-def fun_l20_n484(x)
- if (x < 1)
- fun_l21_n877(x)
- else
- fun_l21_n539(x)
- end
-end
-
-def fun_l20_n485(x)
- if (x < 1)
- fun_l21_n230(x)
- else
- fun_l21_n314(x)
- end
-end
-
-def fun_l20_n486(x)
- if (x < 1)
- fun_l21_n778(x)
- else
- fun_l21_n493(x)
- end
-end
-
-def fun_l20_n487(x)
- if (x < 1)
- fun_l21_n615(x)
- else
- fun_l21_n111(x)
- end
-end
-
-def fun_l20_n488(x)
- if (x < 1)
- fun_l21_n133(x)
- else
- fun_l21_n381(x)
- end
-end
-
-def fun_l20_n489(x)
- if (x < 1)
- fun_l21_n332(x)
- else
- fun_l21_n68(x)
- end
-end
-
-def fun_l20_n490(x)
- if (x < 1)
- fun_l21_n995(x)
- else
- fun_l21_n861(x)
- end
-end
-
-def fun_l20_n491(x)
- if (x < 1)
- fun_l21_n537(x)
- else
- fun_l21_n164(x)
- end
-end
-
-def fun_l20_n492(x)
- if (x < 1)
- fun_l21_n759(x)
- else
- fun_l21_n598(x)
- end
-end
-
-def fun_l20_n493(x)
- if (x < 1)
- fun_l21_n890(x)
- else
- fun_l21_n644(x)
- end
-end
-
-def fun_l20_n494(x)
- if (x < 1)
- fun_l21_n641(x)
- else
- fun_l21_n420(x)
- end
-end
-
-def fun_l20_n495(x)
- if (x < 1)
- fun_l21_n826(x)
- else
- fun_l21_n821(x)
- end
-end
-
-def fun_l20_n496(x)
- if (x < 1)
- fun_l21_n348(x)
- else
- fun_l21_n277(x)
- end
-end
-
-def fun_l20_n497(x)
- if (x < 1)
- fun_l21_n14(x)
- else
- fun_l21_n950(x)
- end
-end
-
-def fun_l20_n498(x)
- if (x < 1)
- fun_l21_n43(x)
- else
- fun_l21_n759(x)
- end
-end
-
-def fun_l20_n499(x)
- if (x < 1)
- fun_l21_n899(x)
- else
- fun_l21_n730(x)
- end
-end
-
-def fun_l20_n500(x)
- if (x < 1)
- fun_l21_n918(x)
- else
- fun_l21_n454(x)
- end
-end
-
-def fun_l20_n501(x)
- if (x < 1)
- fun_l21_n821(x)
- else
- fun_l21_n388(x)
- end
-end
-
-def fun_l20_n502(x)
- if (x < 1)
- fun_l21_n164(x)
- else
- fun_l21_n718(x)
- end
-end
-
-def fun_l20_n503(x)
- if (x < 1)
- fun_l21_n152(x)
- else
- fun_l21_n613(x)
- end
-end
-
-def fun_l20_n504(x)
- if (x < 1)
- fun_l21_n931(x)
- else
- fun_l21_n912(x)
- end
-end
-
-def fun_l20_n505(x)
- if (x < 1)
- fun_l21_n655(x)
- else
- fun_l21_n38(x)
- end
-end
-
-def fun_l20_n506(x)
- if (x < 1)
- fun_l21_n408(x)
- else
- fun_l21_n38(x)
- end
-end
-
-def fun_l20_n507(x)
- if (x < 1)
- fun_l21_n960(x)
- else
- fun_l21_n857(x)
- end
-end
-
-def fun_l20_n508(x)
- if (x < 1)
- fun_l21_n308(x)
- else
- fun_l21_n210(x)
- end
-end
-
-def fun_l20_n509(x)
- if (x < 1)
- fun_l21_n985(x)
- else
- fun_l21_n537(x)
- end
-end
-
-def fun_l20_n510(x)
- if (x < 1)
- fun_l21_n200(x)
- else
- fun_l21_n598(x)
- end
-end
-
-def fun_l20_n511(x)
- if (x < 1)
- fun_l21_n451(x)
- else
- fun_l21_n958(x)
- end
-end
-
-def fun_l20_n512(x)
- if (x < 1)
- fun_l21_n459(x)
- else
- fun_l21_n823(x)
- end
-end
-
-def fun_l20_n513(x)
- if (x < 1)
- fun_l21_n153(x)
- else
- fun_l21_n931(x)
- end
-end
-
-def fun_l20_n514(x)
- if (x < 1)
- fun_l21_n213(x)
- else
- fun_l21_n336(x)
- end
-end
-
-def fun_l20_n515(x)
- if (x < 1)
- fun_l21_n401(x)
- else
- fun_l21_n222(x)
- end
-end
-
-def fun_l20_n516(x)
- if (x < 1)
- fun_l21_n582(x)
- else
- fun_l21_n735(x)
- end
-end
-
-def fun_l20_n517(x)
- if (x < 1)
- fun_l21_n799(x)
- else
- fun_l21_n139(x)
- end
-end
-
-def fun_l20_n518(x)
- if (x < 1)
- fun_l21_n279(x)
- else
- fun_l21_n476(x)
- end
-end
-
-def fun_l20_n519(x)
- if (x < 1)
- fun_l21_n624(x)
- else
- fun_l21_n276(x)
- end
-end
-
-def fun_l20_n520(x)
- if (x < 1)
- fun_l21_n505(x)
- else
- fun_l21_n523(x)
- end
-end
-
-def fun_l20_n521(x)
- if (x < 1)
- fun_l21_n887(x)
- else
- fun_l21_n948(x)
- end
-end
-
-def fun_l20_n522(x)
- if (x < 1)
- fun_l21_n969(x)
- else
- fun_l21_n988(x)
- end
-end
-
-def fun_l20_n523(x)
- if (x < 1)
- fun_l21_n271(x)
- else
- fun_l21_n189(x)
- end
-end
-
-def fun_l20_n524(x)
- if (x < 1)
- fun_l21_n478(x)
- else
- fun_l21_n111(x)
- end
-end
-
-def fun_l20_n525(x)
- if (x < 1)
- fun_l21_n808(x)
- else
- fun_l21_n256(x)
- end
-end
-
-def fun_l20_n526(x)
- if (x < 1)
- fun_l21_n715(x)
- else
- fun_l21_n508(x)
- end
-end
-
-def fun_l20_n527(x)
- if (x < 1)
- fun_l21_n819(x)
- else
- fun_l21_n670(x)
- end
-end
-
-def fun_l20_n528(x)
- if (x < 1)
- fun_l21_n598(x)
- else
- fun_l21_n369(x)
- end
-end
-
-def fun_l20_n529(x)
- if (x < 1)
- fun_l21_n391(x)
- else
- fun_l21_n651(x)
- end
-end
-
-def fun_l20_n530(x)
- if (x < 1)
- fun_l21_n69(x)
- else
- fun_l21_n706(x)
- end
-end
-
-def fun_l20_n531(x)
- if (x < 1)
- fun_l21_n786(x)
- else
- fun_l21_n289(x)
- end
-end
-
-def fun_l20_n532(x)
- if (x < 1)
- fun_l21_n128(x)
- else
- fun_l21_n789(x)
- end
-end
-
-def fun_l20_n533(x)
- if (x < 1)
- fun_l21_n935(x)
- else
- fun_l21_n29(x)
- end
-end
-
-def fun_l20_n534(x)
- if (x < 1)
- fun_l21_n735(x)
- else
- fun_l21_n381(x)
- end
-end
-
-def fun_l20_n535(x)
- if (x < 1)
- fun_l21_n299(x)
- else
- fun_l21_n932(x)
- end
-end
-
-def fun_l20_n536(x)
- if (x < 1)
- fun_l21_n823(x)
- else
- fun_l21_n7(x)
- end
-end
-
-def fun_l20_n537(x)
- if (x < 1)
- fun_l21_n152(x)
- else
- fun_l21_n758(x)
- end
-end
-
-def fun_l20_n538(x)
- if (x < 1)
- fun_l21_n8(x)
- else
- fun_l21_n772(x)
- end
-end
-
-def fun_l20_n539(x)
- if (x < 1)
- fun_l21_n900(x)
- else
- fun_l21_n984(x)
- end
-end
-
-def fun_l20_n540(x)
- if (x < 1)
- fun_l21_n726(x)
- else
- fun_l21_n337(x)
- end
-end
-
-def fun_l20_n541(x)
- if (x < 1)
- fun_l21_n557(x)
- else
- fun_l21_n998(x)
- end
-end
-
-def fun_l20_n542(x)
- if (x < 1)
- fun_l21_n898(x)
- else
- fun_l21_n389(x)
- end
-end
-
-def fun_l20_n543(x)
- if (x < 1)
- fun_l21_n71(x)
- else
- fun_l21_n276(x)
- end
-end
-
-def fun_l20_n544(x)
- if (x < 1)
- fun_l21_n888(x)
- else
- fun_l21_n525(x)
- end
-end
-
-def fun_l20_n545(x)
- if (x < 1)
- fun_l21_n797(x)
- else
- fun_l21_n487(x)
- end
-end
-
-def fun_l20_n546(x)
- if (x < 1)
- fun_l21_n825(x)
- else
- fun_l21_n349(x)
- end
-end
-
-def fun_l20_n547(x)
- if (x < 1)
- fun_l21_n538(x)
- else
- fun_l21_n817(x)
- end
-end
-
-def fun_l20_n548(x)
- if (x < 1)
- fun_l21_n630(x)
- else
- fun_l21_n432(x)
- end
-end
-
-def fun_l20_n549(x)
- if (x < 1)
- fun_l21_n553(x)
- else
- fun_l21_n179(x)
- end
-end
-
-def fun_l20_n550(x)
- if (x < 1)
- fun_l21_n982(x)
- else
- fun_l21_n350(x)
- end
-end
-
-def fun_l20_n551(x)
- if (x < 1)
- fun_l21_n404(x)
- else
- fun_l21_n313(x)
- end
-end
-
-def fun_l20_n552(x)
- if (x < 1)
- fun_l21_n893(x)
- else
- fun_l21_n879(x)
- end
-end
-
-def fun_l20_n553(x)
- if (x < 1)
- fun_l21_n360(x)
- else
- fun_l21_n403(x)
- end
-end
-
-def fun_l20_n554(x)
- if (x < 1)
- fun_l21_n607(x)
- else
- fun_l21_n18(x)
- end
-end
-
-def fun_l20_n555(x)
- if (x < 1)
- fun_l21_n269(x)
- else
- fun_l21_n514(x)
- end
-end
-
-def fun_l20_n556(x)
- if (x < 1)
- fun_l21_n22(x)
- else
- fun_l21_n164(x)
- end
-end
-
-def fun_l20_n557(x)
- if (x < 1)
- fun_l21_n560(x)
- else
- fun_l21_n671(x)
- end
-end
-
-def fun_l20_n558(x)
- if (x < 1)
- fun_l21_n857(x)
- else
- fun_l21_n34(x)
- end
-end
-
-def fun_l20_n559(x)
- if (x < 1)
- fun_l21_n750(x)
- else
- fun_l21_n267(x)
- end
-end
-
-def fun_l20_n560(x)
- if (x < 1)
- fun_l21_n97(x)
- else
- fun_l21_n72(x)
- end
-end
-
-def fun_l20_n561(x)
- if (x < 1)
- fun_l21_n482(x)
- else
- fun_l21_n644(x)
- end
-end
-
-def fun_l20_n562(x)
- if (x < 1)
- fun_l21_n147(x)
- else
- fun_l21_n524(x)
- end
-end
-
-def fun_l20_n563(x)
- if (x < 1)
- fun_l21_n509(x)
- else
- fun_l21_n124(x)
- end
-end
-
-def fun_l20_n564(x)
- if (x < 1)
- fun_l21_n183(x)
- else
- fun_l21_n254(x)
- end
-end
-
-def fun_l20_n565(x)
- if (x < 1)
- fun_l21_n919(x)
- else
- fun_l21_n727(x)
- end
-end
-
-def fun_l20_n566(x)
- if (x < 1)
- fun_l21_n847(x)
- else
- fun_l21_n546(x)
- end
-end
-
-def fun_l20_n567(x)
- if (x < 1)
- fun_l21_n214(x)
- else
- fun_l21_n692(x)
- end
-end
-
-def fun_l20_n568(x)
- if (x < 1)
- fun_l21_n867(x)
- else
- fun_l21_n747(x)
- end
-end
-
-def fun_l20_n569(x)
- if (x < 1)
- fun_l21_n277(x)
- else
- fun_l21_n130(x)
- end
-end
-
-def fun_l20_n570(x)
- if (x < 1)
- fun_l21_n472(x)
- else
- fun_l21_n296(x)
- end
-end
-
-def fun_l20_n571(x)
- if (x < 1)
- fun_l21_n633(x)
- else
- fun_l21_n704(x)
- end
-end
-
-def fun_l20_n572(x)
- if (x < 1)
- fun_l21_n179(x)
- else
- fun_l21_n683(x)
- end
-end
-
-def fun_l20_n573(x)
- if (x < 1)
- fun_l21_n607(x)
- else
- fun_l21_n140(x)
- end
-end
-
-def fun_l20_n574(x)
- if (x < 1)
- fun_l21_n647(x)
- else
- fun_l21_n233(x)
- end
-end
-
-def fun_l20_n575(x)
- if (x < 1)
- fun_l21_n992(x)
- else
- fun_l21_n951(x)
- end
-end
-
-def fun_l20_n576(x)
- if (x < 1)
- fun_l21_n750(x)
- else
- fun_l21_n574(x)
- end
-end
-
-def fun_l20_n577(x)
- if (x < 1)
- fun_l21_n116(x)
- else
- fun_l21_n488(x)
- end
-end
-
-def fun_l20_n578(x)
- if (x < 1)
- fun_l21_n580(x)
- else
- fun_l21_n547(x)
- end
-end
-
-def fun_l20_n579(x)
- if (x < 1)
- fun_l21_n576(x)
- else
- fun_l21_n744(x)
- end
-end
-
-def fun_l20_n580(x)
- if (x < 1)
- fun_l21_n791(x)
- else
- fun_l21_n495(x)
- end
-end
-
-def fun_l20_n581(x)
- if (x < 1)
- fun_l21_n188(x)
- else
- fun_l21_n795(x)
- end
-end
-
-def fun_l20_n582(x)
- if (x < 1)
- fun_l21_n477(x)
- else
- fun_l21_n965(x)
- end
-end
-
-def fun_l20_n583(x)
- if (x < 1)
- fun_l21_n436(x)
- else
- fun_l21_n169(x)
- end
-end
-
-def fun_l20_n584(x)
- if (x < 1)
- fun_l21_n518(x)
- else
- fun_l21_n849(x)
- end
-end
-
-def fun_l20_n585(x)
- if (x < 1)
- fun_l21_n747(x)
- else
- fun_l21_n882(x)
- end
-end
-
-def fun_l20_n586(x)
- if (x < 1)
- fun_l21_n0(x)
- else
- fun_l21_n481(x)
- end
-end
-
-def fun_l20_n587(x)
- if (x < 1)
- fun_l21_n876(x)
- else
- fun_l21_n279(x)
- end
-end
-
-def fun_l20_n588(x)
- if (x < 1)
- fun_l21_n355(x)
- else
- fun_l21_n744(x)
- end
-end
-
-def fun_l20_n589(x)
- if (x < 1)
- fun_l21_n408(x)
- else
- fun_l21_n27(x)
- end
-end
-
-def fun_l20_n590(x)
- if (x < 1)
- fun_l21_n152(x)
- else
- fun_l21_n867(x)
- end
-end
-
-def fun_l20_n591(x)
- if (x < 1)
- fun_l21_n543(x)
- else
- fun_l21_n193(x)
- end
-end
-
-def fun_l20_n592(x)
- if (x < 1)
- fun_l21_n160(x)
- else
- fun_l21_n185(x)
- end
-end
-
-def fun_l20_n593(x)
- if (x < 1)
- fun_l21_n613(x)
- else
- fun_l21_n403(x)
- end
-end
-
-def fun_l20_n594(x)
- if (x < 1)
- fun_l21_n660(x)
- else
- fun_l21_n933(x)
- end
-end
-
-def fun_l20_n595(x)
- if (x < 1)
- fun_l21_n222(x)
- else
- fun_l21_n922(x)
- end
-end
-
-def fun_l20_n596(x)
- if (x < 1)
- fun_l21_n668(x)
- else
- fun_l21_n857(x)
- end
-end
-
-def fun_l20_n597(x)
- if (x < 1)
- fun_l21_n846(x)
- else
- fun_l21_n164(x)
- end
-end
-
-def fun_l20_n598(x)
- if (x < 1)
- fun_l21_n755(x)
- else
- fun_l21_n591(x)
- end
-end
-
-def fun_l20_n599(x)
- if (x < 1)
- fun_l21_n224(x)
- else
- fun_l21_n390(x)
- end
-end
-
-def fun_l20_n600(x)
- if (x < 1)
- fun_l21_n713(x)
- else
- fun_l21_n735(x)
- end
-end
-
-def fun_l20_n601(x)
- if (x < 1)
- fun_l21_n551(x)
- else
- fun_l21_n57(x)
- end
-end
-
-def fun_l20_n602(x)
- if (x < 1)
- fun_l21_n808(x)
- else
- fun_l21_n928(x)
- end
-end
-
-def fun_l20_n603(x)
- if (x < 1)
- fun_l21_n471(x)
- else
- fun_l21_n436(x)
- end
-end
-
-def fun_l20_n604(x)
- if (x < 1)
- fun_l21_n482(x)
- else
- fun_l21_n445(x)
- end
-end
-
-def fun_l20_n605(x)
- if (x < 1)
- fun_l21_n680(x)
- else
- fun_l21_n433(x)
- end
-end
-
-def fun_l20_n606(x)
- if (x < 1)
- fun_l21_n687(x)
- else
- fun_l21_n885(x)
- end
-end
-
-def fun_l20_n607(x)
- if (x < 1)
- fun_l21_n370(x)
- else
- fun_l21_n414(x)
- end
-end
-
-def fun_l20_n608(x)
- if (x < 1)
- fun_l21_n11(x)
- else
- fun_l21_n792(x)
- end
-end
-
-def fun_l20_n609(x)
- if (x < 1)
- fun_l21_n490(x)
- else
- fun_l21_n947(x)
- end
-end
-
-def fun_l20_n610(x)
- if (x < 1)
- fun_l21_n609(x)
- else
- fun_l21_n514(x)
- end
-end
-
-def fun_l20_n611(x)
- if (x < 1)
- fun_l21_n873(x)
- else
- fun_l21_n247(x)
- end
-end
-
-def fun_l20_n612(x)
- if (x < 1)
- fun_l21_n199(x)
- else
- fun_l21_n421(x)
- end
-end
-
-def fun_l20_n613(x)
- if (x < 1)
- fun_l21_n807(x)
- else
- fun_l21_n905(x)
- end
-end
-
-def fun_l20_n614(x)
- if (x < 1)
- fun_l21_n260(x)
- else
- fun_l21_n926(x)
- end
-end
-
-def fun_l20_n615(x)
- if (x < 1)
- fun_l21_n288(x)
- else
- fun_l21_n944(x)
- end
-end
-
-def fun_l20_n616(x)
- if (x < 1)
- fun_l21_n346(x)
- else
- fun_l21_n949(x)
- end
-end
-
-def fun_l20_n617(x)
- if (x < 1)
- fun_l21_n243(x)
- else
- fun_l21_n527(x)
- end
-end
-
-def fun_l20_n618(x)
- if (x < 1)
- fun_l21_n193(x)
- else
- fun_l21_n576(x)
- end
-end
-
-def fun_l20_n619(x)
- if (x < 1)
- fun_l21_n861(x)
- else
- fun_l21_n19(x)
- end
-end
-
-def fun_l20_n620(x)
- if (x < 1)
- fun_l21_n735(x)
- else
- fun_l21_n477(x)
- end
-end
-
-def fun_l20_n621(x)
- if (x < 1)
- fun_l21_n368(x)
- else
- fun_l21_n250(x)
- end
-end
-
-def fun_l20_n622(x)
- if (x < 1)
- fun_l21_n235(x)
- else
- fun_l21_n461(x)
- end
-end
-
-def fun_l20_n623(x)
- if (x < 1)
- fun_l21_n289(x)
- else
- fun_l21_n217(x)
- end
-end
-
-def fun_l20_n624(x)
- if (x < 1)
- fun_l21_n951(x)
- else
- fun_l21_n124(x)
- end
-end
-
-def fun_l20_n625(x)
- if (x < 1)
- fun_l21_n590(x)
- else
- fun_l21_n163(x)
- end
-end
-
-def fun_l20_n626(x)
- if (x < 1)
- fun_l21_n122(x)
- else
- fun_l21_n34(x)
- end
-end
-
-def fun_l20_n627(x)
- if (x < 1)
- fun_l21_n139(x)
- else
- fun_l21_n452(x)
- end
-end
-
-def fun_l20_n628(x)
- if (x < 1)
- fun_l21_n626(x)
- else
- fun_l21_n816(x)
- end
-end
-
-def fun_l20_n629(x)
- if (x < 1)
- fun_l21_n713(x)
- else
- fun_l21_n291(x)
- end
-end
-
-def fun_l20_n630(x)
- if (x < 1)
- fun_l21_n896(x)
- else
- fun_l21_n167(x)
- end
-end
-
-def fun_l20_n631(x)
- if (x < 1)
- fun_l21_n461(x)
- else
- fun_l21_n965(x)
- end
-end
-
-def fun_l20_n632(x)
- if (x < 1)
- fun_l21_n984(x)
- else
- fun_l21_n336(x)
- end
-end
-
-def fun_l20_n633(x)
- if (x < 1)
- fun_l21_n525(x)
- else
- fun_l21_n500(x)
- end
-end
-
-def fun_l20_n634(x)
- if (x < 1)
- fun_l21_n296(x)
- else
- fun_l21_n535(x)
- end
-end
-
-def fun_l20_n635(x)
- if (x < 1)
- fun_l21_n961(x)
- else
- fun_l21_n296(x)
- end
-end
-
-def fun_l20_n636(x)
- if (x < 1)
- fun_l21_n736(x)
- else
- fun_l21_n474(x)
- end
-end
-
-def fun_l20_n637(x)
- if (x < 1)
- fun_l21_n942(x)
- else
- fun_l21_n503(x)
- end
-end
-
-def fun_l20_n638(x)
- if (x < 1)
- fun_l21_n906(x)
- else
- fun_l21_n612(x)
- end
-end
-
-def fun_l20_n639(x)
- if (x < 1)
- fun_l21_n152(x)
- else
- fun_l21_n772(x)
- end
-end
-
-def fun_l20_n640(x)
- if (x < 1)
- fun_l21_n109(x)
- else
- fun_l21_n416(x)
- end
-end
-
-def fun_l20_n641(x)
- if (x < 1)
- fun_l21_n189(x)
- else
- fun_l21_n353(x)
- end
-end
-
-def fun_l20_n642(x)
- if (x < 1)
- fun_l21_n414(x)
- else
- fun_l21_n550(x)
- end
-end
-
-def fun_l20_n643(x)
- if (x < 1)
- fun_l21_n469(x)
- else
- fun_l21_n542(x)
- end
-end
-
-def fun_l20_n644(x)
- if (x < 1)
- fun_l21_n465(x)
- else
- fun_l21_n742(x)
- end
-end
-
-def fun_l20_n645(x)
- if (x < 1)
- fun_l21_n139(x)
- else
- fun_l21_n138(x)
- end
-end
-
-def fun_l20_n646(x)
- if (x < 1)
- fun_l21_n550(x)
- else
- fun_l21_n910(x)
- end
-end
-
-def fun_l20_n647(x)
- if (x < 1)
- fun_l21_n939(x)
- else
- fun_l21_n347(x)
- end
-end
-
-def fun_l20_n648(x)
- if (x < 1)
- fun_l21_n391(x)
- else
- fun_l21_n648(x)
- end
-end
-
-def fun_l20_n649(x)
- if (x < 1)
- fun_l21_n690(x)
- else
- fun_l21_n627(x)
- end
-end
-
-def fun_l20_n650(x)
- if (x < 1)
- fun_l21_n596(x)
- else
- fun_l21_n681(x)
- end
-end
-
-def fun_l20_n651(x)
- if (x < 1)
- fun_l21_n686(x)
- else
- fun_l21_n399(x)
- end
-end
-
-def fun_l20_n652(x)
- if (x < 1)
- fun_l21_n461(x)
- else
- fun_l21_n851(x)
- end
-end
-
-def fun_l20_n653(x)
- if (x < 1)
- fun_l21_n562(x)
- else
- fun_l21_n60(x)
- end
-end
-
-def fun_l20_n654(x)
- if (x < 1)
- fun_l21_n269(x)
- else
- fun_l21_n937(x)
- end
-end
-
-def fun_l20_n655(x)
- if (x < 1)
- fun_l21_n994(x)
- else
- fun_l21_n386(x)
- end
-end
-
-def fun_l20_n656(x)
- if (x < 1)
- fun_l21_n568(x)
- else
- fun_l21_n180(x)
- end
-end
-
-def fun_l20_n657(x)
- if (x < 1)
- fun_l21_n334(x)
- else
- fun_l21_n362(x)
- end
-end
-
-def fun_l20_n658(x)
- if (x < 1)
- fun_l21_n14(x)
- else
- fun_l21_n311(x)
- end
-end
-
-def fun_l20_n659(x)
- if (x < 1)
- fun_l21_n715(x)
- else
- fun_l21_n945(x)
- end
-end
-
-def fun_l20_n660(x)
- if (x < 1)
- fun_l21_n739(x)
- else
- fun_l21_n456(x)
- end
-end
-
-def fun_l20_n661(x)
- if (x < 1)
- fun_l21_n298(x)
- else
- fun_l21_n344(x)
- end
-end
-
-def fun_l20_n662(x)
- if (x < 1)
- fun_l21_n134(x)
- else
- fun_l21_n828(x)
- end
-end
-
-def fun_l20_n663(x)
- if (x < 1)
- fun_l21_n831(x)
- else
- fun_l21_n231(x)
- end
-end
-
-def fun_l20_n664(x)
- if (x < 1)
- fun_l21_n330(x)
- else
- fun_l21_n733(x)
- end
-end
-
-def fun_l20_n665(x)
- if (x < 1)
- fun_l21_n22(x)
- else
- fun_l21_n973(x)
- end
-end
-
-def fun_l20_n666(x)
- if (x < 1)
- fun_l21_n277(x)
- else
- fun_l21_n988(x)
- end
-end
-
-def fun_l20_n667(x)
- if (x < 1)
- fun_l21_n252(x)
- else
- fun_l21_n8(x)
- end
-end
-
-def fun_l20_n668(x)
- if (x < 1)
- fun_l21_n991(x)
- else
- fun_l21_n801(x)
- end
-end
-
-def fun_l20_n669(x)
- if (x < 1)
- fun_l21_n811(x)
- else
- fun_l21_n660(x)
- end
-end
-
-def fun_l20_n670(x)
- if (x < 1)
- fun_l21_n384(x)
- else
- fun_l21_n596(x)
- end
-end
-
-def fun_l20_n671(x)
- if (x < 1)
- fun_l21_n509(x)
- else
- fun_l21_n133(x)
- end
-end
-
-def fun_l20_n672(x)
- if (x < 1)
- fun_l21_n650(x)
- else
- fun_l21_n679(x)
- end
-end
-
-def fun_l20_n673(x)
- if (x < 1)
- fun_l21_n323(x)
- else
- fun_l21_n824(x)
- end
-end
-
-def fun_l20_n674(x)
- if (x < 1)
- fun_l21_n728(x)
- else
- fun_l21_n697(x)
- end
-end
-
-def fun_l20_n675(x)
- if (x < 1)
- fun_l21_n367(x)
- else
- fun_l21_n383(x)
- end
-end
-
-def fun_l20_n676(x)
- if (x < 1)
- fun_l21_n280(x)
- else
- fun_l21_n309(x)
- end
-end
-
-def fun_l20_n677(x)
- if (x < 1)
- fun_l21_n17(x)
- else
- fun_l21_n687(x)
- end
-end
-
-def fun_l20_n678(x)
- if (x < 1)
- fun_l21_n133(x)
- else
- fun_l21_n250(x)
- end
-end
-
-def fun_l20_n679(x)
- if (x < 1)
- fun_l21_n713(x)
- else
- fun_l21_n630(x)
- end
-end
-
-def fun_l20_n680(x)
- if (x < 1)
- fun_l21_n348(x)
- else
- fun_l21_n737(x)
- end
-end
-
-def fun_l20_n681(x)
- if (x < 1)
- fun_l21_n450(x)
- else
- fun_l21_n283(x)
- end
-end
-
-def fun_l20_n682(x)
- if (x < 1)
- fun_l21_n568(x)
- else
- fun_l21_n22(x)
- end
-end
-
-def fun_l20_n683(x)
- if (x < 1)
- fun_l21_n173(x)
- else
- fun_l21_n457(x)
- end
-end
-
-def fun_l20_n684(x)
- if (x < 1)
- fun_l21_n846(x)
- else
- fun_l21_n415(x)
- end
-end
-
-def fun_l20_n685(x)
- if (x < 1)
- fun_l21_n757(x)
- else
- fun_l21_n817(x)
- end
-end
-
-def fun_l20_n686(x)
- if (x < 1)
- fun_l21_n282(x)
- else
- fun_l21_n503(x)
- end
-end
-
-def fun_l20_n687(x)
- if (x < 1)
- fun_l21_n337(x)
- else
- fun_l21_n407(x)
- end
-end
-
-def fun_l20_n688(x)
- if (x < 1)
- fun_l21_n783(x)
- else
- fun_l21_n307(x)
- end
-end
-
-def fun_l20_n689(x)
- if (x < 1)
- fun_l21_n397(x)
- else
- fun_l21_n10(x)
- end
-end
-
-def fun_l20_n690(x)
- if (x < 1)
- fun_l21_n100(x)
- else
- fun_l21_n704(x)
- end
-end
-
-def fun_l20_n691(x)
- if (x < 1)
- fun_l21_n380(x)
- else
- fun_l21_n780(x)
- end
-end
-
-def fun_l20_n692(x)
- if (x < 1)
- fun_l21_n782(x)
- else
- fun_l21_n955(x)
- end
-end
-
-def fun_l20_n693(x)
- if (x < 1)
- fun_l21_n40(x)
- else
- fun_l21_n599(x)
- end
-end
-
-def fun_l20_n694(x)
- if (x < 1)
- fun_l21_n730(x)
- else
- fun_l21_n215(x)
- end
-end
-
-def fun_l20_n695(x)
- if (x < 1)
- fun_l21_n168(x)
- else
- fun_l21_n757(x)
- end
-end
-
-def fun_l20_n696(x)
- if (x < 1)
- fun_l21_n622(x)
- else
- fun_l21_n411(x)
- end
-end
-
-def fun_l20_n697(x)
- if (x < 1)
- fun_l21_n958(x)
- else
- fun_l21_n832(x)
- end
-end
-
-def fun_l20_n698(x)
- if (x < 1)
- fun_l21_n452(x)
- else
- fun_l21_n390(x)
- end
-end
-
-def fun_l20_n699(x)
- if (x < 1)
- fun_l21_n669(x)
- else
- fun_l21_n642(x)
- end
-end
-
-def fun_l20_n700(x)
- if (x < 1)
- fun_l21_n481(x)
- else
- fun_l21_n273(x)
- end
-end
-
-def fun_l20_n701(x)
- if (x < 1)
- fun_l21_n305(x)
- else
- fun_l21_n783(x)
- end
-end
-
-def fun_l20_n702(x)
- if (x < 1)
- fun_l21_n766(x)
- else
- fun_l21_n943(x)
- end
-end
-
-def fun_l20_n703(x)
- if (x < 1)
- fun_l21_n440(x)
- else
- fun_l21_n875(x)
- end
-end
-
-def fun_l20_n704(x)
- if (x < 1)
- fun_l21_n332(x)
- else
- fun_l21_n839(x)
- end
-end
-
-def fun_l20_n705(x)
- if (x < 1)
- fun_l21_n459(x)
- else
- fun_l21_n341(x)
- end
-end
-
-def fun_l20_n706(x)
- if (x < 1)
- fun_l21_n897(x)
- else
- fun_l21_n235(x)
- end
-end
-
-def fun_l20_n707(x)
- if (x < 1)
- fun_l21_n400(x)
- else
- fun_l21_n349(x)
- end
-end
-
-def fun_l20_n708(x)
- if (x < 1)
- fun_l21_n121(x)
- else
- fun_l21_n40(x)
- end
-end
-
-def fun_l20_n709(x)
- if (x < 1)
- fun_l21_n496(x)
- else
- fun_l21_n473(x)
- end
-end
-
-def fun_l20_n710(x)
- if (x < 1)
- fun_l21_n146(x)
- else
- fun_l21_n944(x)
- end
-end
-
-def fun_l20_n711(x)
- if (x < 1)
- fun_l21_n497(x)
- else
- fun_l21_n322(x)
- end
-end
-
-def fun_l20_n712(x)
- if (x < 1)
- fun_l21_n647(x)
- else
- fun_l21_n76(x)
- end
-end
-
-def fun_l20_n713(x)
- if (x < 1)
- fun_l21_n402(x)
- else
- fun_l21_n904(x)
- end
-end
-
-def fun_l20_n714(x)
- if (x < 1)
- fun_l21_n834(x)
- else
- fun_l21_n904(x)
- end
-end
-
-def fun_l20_n715(x)
- if (x < 1)
- fun_l21_n482(x)
- else
- fun_l21_n399(x)
- end
-end
-
-def fun_l20_n716(x)
- if (x < 1)
- fun_l21_n441(x)
- else
- fun_l21_n348(x)
- end
-end
-
-def fun_l20_n717(x)
- if (x < 1)
- fun_l21_n577(x)
- else
- fun_l21_n815(x)
- end
-end
-
-def fun_l20_n718(x)
- if (x < 1)
- fun_l21_n18(x)
- else
- fun_l21_n399(x)
- end
-end
-
-def fun_l20_n719(x)
- if (x < 1)
- fun_l21_n245(x)
- else
- fun_l21_n928(x)
- end
-end
-
-def fun_l20_n720(x)
- if (x < 1)
- fun_l21_n373(x)
- else
- fun_l21_n432(x)
- end
-end
-
-def fun_l20_n721(x)
- if (x < 1)
- fun_l21_n20(x)
- else
- fun_l21_n485(x)
- end
-end
-
-def fun_l20_n722(x)
- if (x < 1)
- fun_l21_n79(x)
- else
- fun_l21_n525(x)
- end
-end
-
-def fun_l20_n723(x)
- if (x < 1)
- fun_l21_n474(x)
- else
- fun_l21_n706(x)
- end
-end
-
-def fun_l20_n724(x)
- if (x < 1)
- fun_l21_n27(x)
- else
- fun_l21_n833(x)
- end
-end
-
-def fun_l20_n725(x)
- if (x < 1)
- fun_l21_n386(x)
- else
- fun_l21_n422(x)
- end
-end
-
-def fun_l20_n726(x)
- if (x < 1)
- fun_l21_n816(x)
- else
- fun_l21_n204(x)
- end
-end
-
-def fun_l20_n727(x)
- if (x < 1)
- fun_l21_n502(x)
- else
- fun_l21_n554(x)
- end
-end
-
-def fun_l20_n728(x)
- if (x < 1)
- fun_l21_n846(x)
- else
- fun_l21_n948(x)
- end
-end
-
-def fun_l20_n729(x)
- if (x < 1)
- fun_l21_n308(x)
- else
- fun_l21_n408(x)
- end
-end
-
-def fun_l20_n730(x)
- if (x < 1)
- fun_l21_n882(x)
- else
- fun_l21_n151(x)
- end
-end
-
-def fun_l20_n731(x)
- if (x < 1)
- fun_l21_n22(x)
- else
- fun_l21_n839(x)
- end
-end
-
-def fun_l20_n732(x)
- if (x < 1)
- fun_l21_n482(x)
- else
- fun_l21_n942(x)
- end
-end
-
-def fun_l20_n733(x)
- if (x < 1)
- fun_l21_n959(x)
- else
- fun_l21_n615(x)
- end
-end
-
-def fun_l20_n734(x)
- if (x < 1)
- fun_l21_n137(x)
- else
- fun_l21_n455(x)
- end
-end
-
-def fun_l20_n735(x)
- if (x < 1)
- fun_l21_n388(x)
- else
- fun_l21_n362(x)
- end
-end
-
-def fun_l20_n736(x)
- if (x < 1)
- fun_l21_n107(x)
- else
- fun_l21_n883(x)
- end
-end
-
-def fun_l20_n737(x)
- if (x < 1)
- fun_l21_n42(x)
- else
- fun_l21_n288(x)
- end
-end
-
-def fun_l20_n738(x)
- if (x < 1)
- fun_l21_n885(x)
- else
- fun_l21_n443(x)
- end
-end
-
-def fun_l20_n739(x)
- if (x < 1)
- fun_l21_n414(x)
- else
- fun_l21_n976(x)
- end
-end
-
-def fun_l20_n740(x)
- if (x < 1)
- fun_l21_n244(x)
- else
- fun_l21_n327(x)
- end
-end
-
-def fun_l20_n741(x)
- if (x < 1)
- fun_l21_n832(x)
- else
- fun_l21_n951(x)
- end
-end
-
-def fun_l20_n742(x)
- if (x < 1)
- fun_l21_n408(x)
- else
- fun_l21_n978(x)
- end
-end
-
-def fun_l20_n743(x)
- if (x < 1)
- fun_l21_n517(x)
- else
- fun_l21_n468(x)
- end
-end
-
-def fun_l20_n744(x)
- if (x < 1)
- fun_l21_n281(x)
- else
- fun_l21_n9(x)
- end
-end
-
-def fun_l20_n745(x)
- if (x < 1)
- fun_l21_n488(x)
- else
- fun_l21_n526(x)
- end
-end
-
-def fun_l20_n746(x)
- if (x < 1)
- fun_l21_n494(x)
- else
- fun_l21_n769(x)
- end
-end
-
-def fun_l20_n747(x)
- if (x < 1)
- fun_l21_n277(x)
- else
- fun_l21_n103(x)
- end
-end
-
-def fun_l20_n748(x)
- if (x < 1)
- fun_l21_n663(x)
- else
- fun_l21_n281(x)
- end
-end
-
-def fun_l20_n749(x)
- if (x < 1)
- fun_l21_n260(x)
- else
- fun_l21_n320(x)
- end
-end
-
-def fun_l20_n750(x)
- if (x < 1)
- fun_l21_n781(x)
- else
- fun_l21_n705(x)
- end
-end
-
-def fun_l20_n751(x)
- if (x < 1)
- fun_l21_n317(x)
- else
- fun_l21_n728(x)
- end
-end
-
-def fun_l20_n752(x)
- if (x < 1)
- fun_l21_n573(x)
- else
- fun_l21_n172(x)
- end
-end
-
-def fun_l20_n753(x)
- if (x < 1)
- fun_l21_n352(x)
- else
- fun_l21_n933(x)
- end
-end
-
-def fun_l20_n754(x)
- if (x < 1)
- fun_l21_n876(x)
- else
- fun_l21_n180(x)
- end
-end
-
-def fun_l20_n755(x)
- if (x < 1)
- fun_l21_n937(x)
- else
- fun_l21_n387(x)
- end
-end
-
-def fun_l20_n756(x)
- if (x < 1)
- fun_l21_n154(x)
- else
- fun_l21_n187(x)
- end
-end
-
-def fun_l20_n757(x)
- if (x < 1)
- fun_l21_n766(x)
- else
- fun_l21_n259(x)
- end
-end
-
-def fun_l20_n758(x)
- if (x < 1)
- fun_l21_n235(x)
- else
- fun_l21_n636(x)
- end
-end
-
-def fun_l20_n759(x)
- if (x < 1)
- fun_l21_n872(x)
- else
- fun_l21_n913(x)
- end
-end
-
-def fun_l20_n760(x)
- if (x < 1)
- fun_l21_n73(x)
- else
- fun_l21_n743(x)
- end
-end
-
-def fun_l20_n761(x)
- if (x < 1)
- fun_l21_n666(x)
- else
- fun_l21_n777(x)
- end
-end
-
-def fun_l20_n762(x)
- if (x < 1)
- fun_l21_n829(x)
- else
- fun_l21_n800(x)
- end
-end
-
-def fun_l20_n763(x)
- if (x < 1)
- fun_l21_n37(x)
- else
- fun_l21_n152(x)
- end
-end
-
-def fun_l20_n764(x)
- if (x < 1)
- fun_l21_n53(x)
- else
- fun_l21_n196(x)
- end
-end
-
-def fun_l20_n765(x)
- if (x < 1)
- fun_l21_n511(x)
- else
- fun_l21_n415(x)
- end
-end
-
-def fun_l20_n766(x)
- if (x < 1)
- fun_l21_n375(x)
- else
- fun_l21_n885(x)
- end
-end
-
-def fun_l20_n767(x)
- if (x < 1)
- fun_l21_n267(x)
- else
- fun_l21_n597(x)
- end
-end
-
-def fun_l20_n768(x)
- if (x < 1)
- fun_l21_n920(x)
- else
- fun_l21_n943(x)
- end
-end
-
-def fun_l20_n769(x)
- if (x < 1)
- fun_l21_n585(x)
- else
- fun_l21_n659(x)
- end
-end
-
-def fun_l20_n770(x)
- if (x < 1)
- fun_l21_n897(x)
- else
- fun_l21_n742(x)
- end
-end
-
-def fun_l20_n771(x)
- if (x < 1)
- fun_l21_n41(x)
- else
- fun_l21_n431(x)
- end
-end
-
-def fun_l20_n772(x)
- if (x < 1)
- fun_l21_n446(x)
- else
- fun_l21_n22(x)
- end
-end
-
-def fun_l20_n773(x)
- if (x < 1)
- fun_l21_n918(x)
- else
- fun_l21_n387(x)
- end
-end
-
-def fun_l20_n774(x)
- if (x < 1)
- fun_l21_n88(x)
- else
- fun_l21_n763(x)
- end
-end
-
-def fun_l20_n775(x)
- if (x < 1)
- fun_l21_n224(x)
- else
- fun_l21_n886(x)
- end
-end
-
-def fun_l20_n776(x)
- if (x < 1)
- fun_l21_n860(x)
- else
- fun_l21_n145(x)
- end
-end
-
-def fun_l20_n777(x)
- if (x < 1)
- fun_l21_n198(x)
- else
- fun_l21_n593(x)
- end
-end
-
-def fun_l20_n778(x)
- if (x < 1)
- fun_l21_n510(x)
- else
- fun_l21_n146(x)
- end
-end
-
-def fun_l20_n779(x)
- if (x < 1)
- fun_l21_n125(x)
- else
- fun_l21_n390(x)
- end
-end
-
-def fun_l20_n780(x)
- if (x < 1)
- fun_l21_n278(x)
- else
- fun_l21_n100(x)
- end
-end
-
-def fun_l20_n781(x)
- if (x < 1)
- fun_l21_n9(x)
- else
- fun_l21_n312(x)
- end
-end
-
-def fun_l20_n782(x)
- if (x < 1)
- fun_l21_n883(x)
- else
- fun_l21_n118(x)
- end
-end
-
-def fun_l20_n783(x)
- if (x < 1)
- fun_l21_n314(x)
- else
- fun_l21_n357(x)
- end
-end
-
-def fun_l20_n784(x)
- if (x < 1)
- fun_l21_n599(x)
- else
- fun_l21_n211(x)
- end
-end
-
-def fun_l20_n785(x)
- if (x < 1)
- fun_l21_n882(x)
- else
- fun_l21_n903(x)
- end
-end
-
-def fun_l20_n786(x)
- if (x < 1)
- fun_l21_n741(x)
- else
- fun_l21_n634(x)
- end
-end
-
-def fun_l20_n787(x)
- if (x < 1)
- fun_l21_n186(x)
- else
- fun_l21_n68(x)
- end
-end
-
-def fun_l20_n788(x)
- if (x < 1)
- fun_l21_n620(x)
- else
- fun_l21_n976(x)
- end
-end
-
-def fun_l20_n789(x)
- if (x < 1)
- fun_l21_n692(x)
- else
- fun_l21_n8(x)
- end
-end
-
-def fun_l20_n790(x)
- if (x < 1)
- fun_l21_n893(x)
- else
- fun_l21_n916(x)
- end
-end
-
-def fun_l20_n791(x)
- if (x < 1)
- fun_l21_n823(x)
- else
- fun_l21_n498(x)
- end
-end
-
-def fun_l20_n792(x)
- if (x < 1)
- fun_l21_n390(x)
- else
- fun_l21_n711(x)
- end
-end
-
-def fun_l20_n793(x)
- if (x < 1)
- fun_l21_n918(x)
- else
- fun_l21_n819(x)
- end
-end
-
-def fun_l20_n794(x)
- if (x < 1)
- fun_l21_n809(x)
- else
- fun_l21_n320(x)
- end
-end
-
-def fun_l20_n795(x)
- if (x < 1)
- fun_l21_n387(x)
- else
- fun_l21_n377(x)
- end
-end
-
-def fun_l20_n796(x)
- if (x < 1)
- fun_l21_n243(x)
- else
- fun_l21_n555(x)
- end
-end
-
-def fun_l20_n797(x)
- if (x < 1)
- fun_l21_n946(x)
- else
- fun_l21_n811(x)
- end
-end
-
-def fun_l20_n798(x)
- if (x < 1)
- fun_l21_n492(x)
- else
- fun_l21_n367(x)
- end
-end
-
-def fun_l20_n799(x)
- if (x < 1)
- fun_l21_n161(x)
- else
- fun_l21_n818(x)
- end
-end
-
-def fun_l20_n800(x)
- if (x < 1)
- fun_l21_n365(x)
- else
- fun_l21_n560(x)
- end
-end
-
-def fun_l20_n801(x)
- if (x < 1)
- fun_l21_n456(x)
- else
- fun_l21_n880(x)
- end
-end
-
-def fun_l20_n802(x)
- if (x < 1)
- fun_l21_n683(x)
- else
- fun_l21_n71(x)
- end
-end
-
-def fun_l20_n803(x)
- if (x < 1)
- fun_l21_n250(x)
- else
- fun_l21_n183(x)
- end
-end
-
-def fun_l20_n804(x)
- if (x < 1)
- fun_l21_n900(x)
- else
- fun_l21_n63(x)
- end
-end
-
-def fun_l20_n805(x)
- if (x < 1)
- fun_l21_n798(x)
- else
- fun_l21_n91(x)
- end
-end
-
-def fun_l20_n806(x)
- if (x < 1)
- fun_l21_n525(x)
- else
- fun_l21_n59(x)
- end
-end
-
-def fun_l20_n807(x)
- if (x < 1)
- fun_l21_n515(x)
- else
- fun_l21_n457(x)
- end
-end
-
-def fun_l20_n808(x)
- if (x < 1)
- fun_l21_n410(x)
- else
- fun_l21_n172(x)
- end
-end
-
-def fun_l20_n809(x)
- if (x < 1)
- fun_l21_n194(x)
- else
- fun_l21_n425(x)
- end
-end
-
-def fun_l20_n810(x)
- if (x < 1)
- fun_l21_n660(x)
- else
- fun_l21_n120(x)
- end
-end
-
-def fun_l20_n811(x)
- if (x < 1)
- fun_l21_n920(x)
- else
- fun_l21_n97(x)
- end
-end
-
-def fun_l20_n812(x)
- if (x < 1)
- fun_l21_n443(x)
- else
- fun_l21_n876(x)
- end
-end
-
-def fun_l20_n813(x)
- if (x < 1)
- fun_l21_n935(x)
- else
- fun_l21_n186(x)
- end
-end
-
-def fun_l20_n814(x)
- if (x < 1)
- fun_l21_n139(x)
- else
- fun_l21_n313(x)
- end
-end
-
-def fun_l20_n815(x)
- if (x < 1)
- fun_l21_n21(x)
- else
- fun_l21_n500(x)
- end
-end
-
-def fun_l20_n816(x)
- if (x < 1)
- fun_l21_n682(x)
- else
- fun_l21_n17(x)
- end
-end
-
-def fun_l20_n817(x)
- if (x < 1)
- fun_l21_n945(x)
- else
- fun_l21_n472(x)
- end
-end
-
-def fun_l20_n818(x)
- if (x < 1)
- fun_l21_n76(x)
- else
- fun_l21_n464(x)
- end
-end
-
-def fun_l20_n819(x)
- if (x < 1)
- fun_l21_n696(x)
- else
- fun_l21_n989(x)
- end
-end
-
-def fun_l20_n820(x)
- if (x < 1)
- fun_l21_n150(x)
- else
- fun_l21_n459(x)
- end
-end
-
-def fun_l20_n821(x)
- if (x < 1)
- fun_l21_n280(x)
- else
- fun_l21_n535(x)
- end
-end
-
-def fun_l20_n822(x)
- if (x < 1)
- fun_l21_n120(x)
- else
- fun_l21_n553(x)
- end
-end
-
-def fun_l20_n823(x)
- if (x < 1)
- fun_l21_n450(x)
- else
- fun_l21_n168(x)
- end
-end
-
-def fun_l20_n824(x)
- if (x < 1)
- fun_l21_n635(x)
- else
- fun_l21_n45(x)
- end
-end
-
-def fun_l20_n825(x)
- if (x < 1)
- fun_l21_n245(x)
- else
- fun_l21_n491(x)
- end
-end
-
-def fun_l20_n826(x)
- if (x < 1)
- fun_l21_n202(x)
- else
- fun_l21_n307(x)
- end
-end
-
-def fun_l20_n827(x)
- if (x < 1)
- fun_l21_n883(x)
- else
- fun_l21_n113(x)
- end
-end
-
-def fun_l20_n828(x)
- if (x < 1)
- fun_l21_n864(x)
- else
- fun_l21_n982(x)
- end
-end
-
-def fun_l20_n829(x)
- if (x < 1)
- fun_l21_n707(x)
- else
- fun_l21_n909(x)
- end
-end
-
-def fun_l20_n830(x)
- if (x < 1)
- fun_l21_n838(x)
- else
- fun_l21_n784(x)
- end
-end
-
-def fun_l20_n831(x)
- if (x < 1)
- fun_l21_n179(x)
- else
- fun_l21_n445(x)
- end
-end
-
-def fun_l20_n832(x)
- if (x < 1)
- fun_l21_n563(x)
- else
- fun_l21_n981(x)
- end
-end
-
-def fun_l20_n833(x)
- if (x < 1)
- fun_l21_n441(x)
- else
- fun_l21_n911(x)
- end
-end
-
-def fun_l20_n834(x)
- if (x < 1)
- fun_l21_n46(x)
- else
- fun_l21_n244(x)
- end
-end
-
-def fun_l20_n835(x)
- if (x < 1)
- fun_l21_n740(x)
- else
- fun_l21_n877(x)
- end
-end
-
-def fun_l20_n836(x)
- if (x < 1)
- fun_l21_n987(x)
- else
- fun_l21_n459(x)
- end
-end
-
-def fun_l20_n837(x)
- if (x < 1)
- fun_l21_n51(x)
- else
- fun_l21_n533(x)
- end
-end
-
-def fun_l20_n838(x)
- if (x < 1)
- fun_l21_n530(x)
- else
- fun_l21_n916(x)
- end
-end
-
-def fun_l20_n839(x)
- if (x < 1)
- fun_l21_n644(x)
- else
- fun_l21_n574(x)
- end
-end
-
-def fun_l20_n840(x)
- if (x < 1)
- fun_l21_n167(x)
- else
- fun_l21_n935(x)
- end
-end
-
-def fun_l20_n841(x)
- if (x < 1)
- fun_l21_n657(x)
- else
- fun_l21_n914(x)
- end
-end
-
-def fun_l20_n842(x)
- if (x < 1)
- fun_l21_n646(x)
- else
- fun_l21_n191(x)
- end
-end
-
-def fun_l20_n843(x)
- if (x < 1)
- fun_l21_n881(x)
- else
- fun_l21_n744(x)
- end
-end
-
-def fun_l20_n844(x)
- if (x < 1)
- fun_l21_n293(x)
- else
- fun_l21_n474(x)
- end
-end
-
-def fun_l20_n845(x)
- if (x < 1)
- fun_l21_n481(x)
- else
- fun_l21_n80(x)
- end
-end
-
-def fun_l20_n846(x)
- if (x < 1)
- fun_l21_n785(x)
- else
- fun_l21_n694(x)
- end
-end
-
-def fun_l20_n847(x)
- if (x < 1)
- fun_l21_n874(x)
- else
- fun_l21_n465(x)
- end
-end
-
-def fun_l20_n848(x)
- if (x < 1)
- fun_l21_n43(x)
- else
- fun_l21_n666(x)
- end
-end
-
-def fun_l20_n849(x)
- if (x < 1)
- fun_l21_n868(x)
- else
- fun_l21_n272(x)
- end
-end
-
-def fun_l20_n850(x)
- if (x < 1)
- fun_l21_n194(x)
- else
- fun_l21_n995(x)
- end
-end
-
-def fun_l20_n851(x)
- if (x < 1)
- fun_l21_n989(x)
- else
- fun_l21_n385(x)
- end
-end
-
-def fun_l20_n852(x)
- if (x < 1)
- fun_l21_n396(x)
- else
- fun_l21_n366(x)
- end
-end
-
-def fun_l20_n853(x)
- if (x < 1)
- fun_l21_n439(x)
- else
- fun_l21_n141(x)
- end
-end
-
-def fun_l20_n854(x)
- if (x < 1)
- fun_l21_n78(x)
- else
- fun_l21_n180(x)
- end
-end
-
-def fun_l20_n855(x)
- if (x < 1)
- fun_l21_n203(x)
- else
- fun_l21_n382(x)
- end
-end
-
-def fun_l20_n856(x)
- if (x < 1)
- fun_l21_n387(x)
- else
- fun_l21_n696(x)
- end
-end
-
-def fun_l20_n857(x)
- if (x < 1)
- fun_l21_n383(x)
- else
- fun_l21_n655(x)
- end
-end
-
-def fun_l20_n858(x)
- if (x < 1)
- fun_l21_n375(x)
- else
- fun_l21_n14(x)
- end
-end
-
-def fun_l20_n859(x)
- if (x < 1)
- fun_l21_n418(x)
- else
- fun_l21_n435(x)
- end
-end
-
-def fun_l20_n860(x)
- if (x < 1)
- fun_l21_n75(x)
- else
- fun_l21_n258(x)
- end
-end
-
-def fun_l20_n861(x)
- if (x < 1)
- fun_l21_n509(x)
- else
- fun_l21_n585(x)
- end
-end
-
-def fun_l20_n862(x)
- if (x < 1)
- fun_l21_n388(x)
- else
- fun_l21_n962(x)
- end
-end
-
-def fun_l20_n863(x)
- if (x < 1)
- fun_l21_n826(x)
- else
- fun_l21_n691(x)
- end
-end
-
-def fun_l20_n864(x)
- if (x < 1)
- fun_l21_n230(x)
- else
- fun_l21_n588(x)
- end
-end
-
-def fun_l20_n865(x)
- if (x < 1)
- fun_l21_n138(x)
- else
- fun_l21_n779(x)
- end
-end
-
-def fun_l20_n866(x)
- if (x < 1)
- fun_l21_n994(x)
- else
- fun_l21_n325(x)
- end
-end
-
-def fun_l20_n867(x)
- if (x < 1)
- fun_l21_n169(x)
- else
- fun_l21_n384(x)
- end
-end
-
-def fun_l20_n868(x)
- if (x < 1)
- fun_l21_n30(x)
- else
- fun_l21_n922(x)
- end
-end
-
-def fun_l20_n869(x)
- if (x < 1)
- fun_l21_n500(x)
- else
- fun_l21_n896(x)
- end
-end
-
-def fun_l20_n870(x)
- if (x < 1)
- fun_l21_n25(x)
- else
- fun_l21_n292(x)
- end
-end
-
-def fun_l20_n871(x)
- if (x < 1)
- fun_l21_n266(x)
- else
- fun_l21_n58(x)
- end
-end
-
-def fun_l20_n872(x)
- if (x < 1)
- fun_l21_n172(x)
- else
- fun_l21_n721(x)
- end
-end
-
-def fun_l20_n873(x)
- if (x < 1)
- fun_l21_n87(x)
- else
- fun_l21_n717(x)
- end
-end
-
-def fun_l20_n874(x)
- if (x < 1)
- fun_l21_n235(x)
- else
- fun_l21_n891(x)
- end
-end
-
-def fun_l20_n875(x)
- if (x < 1)
- fun_l21_n87(x)
- else
- fun_l21_n810(x)
- end
-end
-
-def fun_l20_n876(x)
- if (x < 1)
- fun_l21_n785(x)
- else
- fun_l21_n668(x)
- end
-end
-
-def fun_l20_n877(x)
- if (x < 1)
- fun_l21_n532(x)
- else
- fun_l21_n505(x)
- end
-end
-
-def fun_l20_n878(x)
- if (x < 1)
- fun_l21_n885(x)
- else
- fun_l21_n820(x)
- end
-end
-
-def fun_l20_n879(x)
- if (x < 1)
- fun_l21_n986(x)
- else
- fun_l21_n916(x)
- end
-end
-
-def fun_l20_n880(x)
- if (x < 1)
- fun_l21_n46(x)
- else
- fun_l21_n751(x)
- end
-end
-
-def fun_l20_n881(x)
- if (x < 1)
- fun_l21_n964(x)
- else
- fun_l21_n829(x)
- end
-end
-
-def fun_l20_n882(x)
- if (x < 1)
- fun_l21_n938(x)
- else
- fun_l21_n862(x)
- end
-end
-
-def fun_l20_n883(x)
- if (x < 1)
- fun_l21_n880(x)
- else
- fun_l21_n548(x)
- end
-end
-
-def fun_l20_n884(x)
- if (x < 1)
- fun_l21_n621(x)
- else
- fun_l21_n184(x)
- end
-end
-
-def fun_l20_n885(x)
- if (x < 1)
- fun_l21_n587(x)
- else
- fun_l21_n603(x)
- end
-end
-
-def fun_l20_n886(x)
- if (x < 1)
- fun_l21_n935(x)
- else
- fun_l21_n105(x)
- end
-end
-
-def fun_l20_n887(x)
- if (x < 1)
- fun_l21_n76(x)
- else
- fun_l21_n96(x)
- end
-end
-
-def fun_l20_n888(x)
- if (x < 1)
- fun_l21_n241(x)
- else
- fun_l21_n56(x)
- end
-end
-
-def fun_l20_n889(x)
- if (x < 1)
- fun_l21_n180(x)
- else
- fun_l21_n360(x)
- end
-end
-
-def fun_l20_n890(x)
- if (x < 1)
- fun_l21_n179(x)
- else
- fun_l21_n510(x)
- end
-end
-
-def fun_l20_n891(x)
- if (x < 1)
- fun_l21_n641(x)
- else
- fun_l21_n70(x)
- end
-end
-
-def fun_l20_n892(x)
- if (x < 1)
- fun_l21_n615(x)
- else
- fun_l21_n30(x)
- end
-end
-
-def fun_l20_n893(x)
- if (x < 1)
- fun_l21_n787(x)
- else
- fun_l21_n914(x)
- end
-end
-
-def fun_l20_n894(x)
- if (x < 1)
- fun_l21_n949(x)
- else
- fun_l21_n449(x)
- end
-end
-
-def fun_l20_n895(x)
- if (x < 1)
- fun_l21_n182(x)
- else
- fun_l21_n935(x)
- end
-end
-
-def fun_l20_n896(x)
- if (x < 1)
- fun_l21_n411(x)
- else
- fun_l21_n43(x)
- end
-end
-
-def fun_l20_n897(x)
- if (x < 1)
- fun_l21_n70(x)
- else
- fun_l21_n363(x)
- end
-end
-
-def fun_l20_n898(x)
- if (x < 1)
- fun_l21_n910(x)
- else
- fun_l21_n271(x)
- end
-end
-
-def fun_l20_n899(x)
- if (x < 1)
- fun_l21_n722(x)
- else
- fun_l21_n793(x)
- end
-end
-
-def fun_l20_n900(x)
- if (x < 1)
- fun_l21_n356(x)
- else
- fun_l21_n301(x)
- end
-end
-
-def fun_l20_n901(x)
- if (x < 1)
- fun_l21_n915(x)
- else
- fun_l21_n373(x)
- end
-end
-
-def fun_l20_n902(x)
- if (x < 1)
- fun_l21_n468(x)
- else
- fun_l21_n632(x)
- end
-end
-
-def fun_l20_n903(x)
- if (x < 1)
- fun_l21_n970(x)
- else
- fun_l21_n54(x)
- end
-end
-
-def fun_l20_n904(x)
- if (x < 1)
- fun_l21_n452(x)
- else
- fun_l21_n536(x)
- end
-end
-
-def fun_l20_n905(x)
- if (x < 1)
- fun_l21_n223(x)
- else
- fun_l21_n423(x)
- end
-end
-
-def fun_l20_n906(x)
- if (x < 1)
- fun_l21_n102(x)
- else
- fun_l21_n755(x)
- end
-end
-
-def fun_l20_n907(x)
- if (x < 1)
- fun_l21_n537(x)
- else
- fun_l21_n84(x)
- end
-end
-
-def fun_l20_n908(x)
- if (x < 1)
- fun_l21_n786(x)
- else
- fun_l21_n979(x)
- end
-end
-
-def fun_l20_n909(x)
- if (x < 1)
- fun_l21_n573(x)
- else
- fun_l21_n965(x)
- end
-end
-
-def fun_l20_n910(x)
- if (x < 1)
- fun_l21_n764(x)
- else
- fun_l21_n375(x)
- end
-end
-
-def fun_l20_n911(x)
- if (x < 1)
- fun_l21_n673(x)
- else
- fun_l21_n545(x)
- end
-end
-
-def fun_l20_n912(x)
- if (x < 1)
- fun_l21_n616(x)
- else
- fun_l21_n257(x)
- end
-end
-
-def fun_l20_n913(x)
- if (x < 1)
- fun_l21_n276(x)
- else
- fun_l21_n670(x)
- end
-end
-
-def fun_l20_n914(x)
- if (x < 1)
- fun_l21_n969(x)
- else
- fun_l21_n482(x)
- end
-end
-
-def fun_l20_n915(x)
- if (x < 1)
- fun_l21_n603(x)
- else
- fun_l21_n916(x)
- end
-end
-
-def fun_l20_n916(x)
- if (x < 1)
- fun_l21_n287(x)
- else
- fun_l21_n253(x)
- end
-end
-
-def fun_l20_n917(x)
- if (x < 1)
- fun_l21_n201(x)
- else
- fun_l21_n175(x)
- end
-end
-
-def fun_l20_n918(x)
- if (x < 1)
- fun_l21_n557(x)
- else
- fun_l21_n668(x)
- end
-end
-
-def fun_l20_n919(x)
- if (x < 1)
- fun_l21_n598(x)
- else
- fun_l21_n85(x)
- end
-end
-
-def fun_l20_n920(x)
- if (x < 1)
- fun_l21_n998(x)
- else
- fun_l21_n611(x)
- end
-end
-
-def fun_l20_n921(x)
- if (x < 1)
- fun_l21_n22(x)
- else
- fun_l21_n76(x)
- end
-end
-
-def fun_l20_n922(x)
- if (x < 1)
- fun_l21_n611(x)
- else
- fun_l21_n823(x)
- end
-end
-
-def fun_l20_n923(x)
- if (x < 1)
- fun_l21_n739(x)
- else
- fun_l21_n231(x)
- end
-end
-
-def fun_l20_n924(x)
- if (x < 1)
- fun_l21_n806(x)
- else
- fun_l21_n362(x)
- end
-end
-
-def fun_l20_n925(x)
- if (x < 1)
- fun_l21_n32(x)
- else
- fun_l21_n593(x)
- end
-end
-
-def fun_l20_n926(x)
- if (x < 1)
- fun_l21_n592(x)
- else
- fun_l21_n422(x)
- end
-end
-
-def fun_l20_n927(x)
- if (x < 1)
- fun_l21_n624(x)
- else
- fun_l21_n690(x)
- end
-end
-
-def fun_l20_n928(x)
- if (x < 1)
- fun_l21_n838(x)
- else
- fun_l21_n351(x)
- end
-end
-
-def fun_l20_n929(x)
- if (x < 1)
- fun_l21_n289(x)
- else
- fun_l21_n842(x)
- end
-end
-
-def fun_l20_n930(x)
- if (x < 1)
- fun_l21_n948(x)
- else
- fun_l21_n679(x)
- end
-end
-
-def fun_l20_n931(x)
- if (x < 1)
- fun_l21_n746(x)
- else
- fun_l21_n267(x)
- end
-end
-
-def fun_l20_n932(x)
- if (x < 1)
- fun_l21_n494(x)
- else
- fun_l21_n19(x)
- end
-end
-
-def fun_l20_n933(x)
- if (x < 1)
- fun_l21_n8(x)
- else
- fun_l21_n234(x)
- end
-end
-
-def fun_l20_n934(x)
- if (x < 1)
- fun_l21_n743(x)
- else
- fun_l21_n175(x)
- end
-end
-
-def fun_l20_n935(x)
- if (x < 1)
- fun_l21_n111(x)
- else
- fun_l21_n300(x)
- end
-end
-
-def fun_l20_n936(x)
- if (x < 1)
- fun_l21_n482(x)
- else
- fun_l21_n431(x)
- end
-end
-
-def fun_l20_n937(x)
- if (x < 1)
- fun_l21_n885(x)
- else
- fun_l21_n523(x)
- end
-end
-
-def fun_l20_n938(x)
- if (x < 1)
- fun_l21_n661(x)
- else
- fun_l21_n461(x)
- end
-end
-
-def fun_l20_n939(x)
- if (x < 1)
- fun_l21_n809(x)
- else
- fun_l21_n868(x)
- end
-end
-
-def fun_l20_n940(x)
- if (x < 1)
- fun_l21_n549(x)
- else
- fun_l21_n287(x)
- end
-end
-
-def fun_l20_n941(x)
- if (x < 1)
- fun_l21_n246(x)
- else
- fun_l21_n228(x)
- end
-end
-
-def fun_l20_n942(x)
- if (x < 1)
- fun_l21_n656(x)
- else
- fun_l21_n399(x)
- end
-end
-
-def fun_l20_n943(x)
- if (x < 1)
- fun_l21_n344(x)
- else
- fun_l21_n77(x)
- end
-end
-
-def fun_l20_n944(x)
- if (x < 1)
- fun_l21_n862(x)
- else
- fun_l21_n696(x)
- end
-end
-
-def fun_l20_n945(x)
- if (x < 1)
- fun_l21_n892(x)
- else
- fun_l21_n782(x)
- end
-end
-
-def fun_l20_n946(x)
- if (x < 1)
- fun_l21_n461(x)
- else
- fun_l21_n946(x)
- end
-end
-
-def fun_l20_n947(x)
- if (x < 1)
- fun_l21_n576(x)
- else
- fun_l21_n216(x)
- end
-end
-
-def fun_l20_n948(x)
- if (x < 1)
- fun_l21_n136(x)
- else
- fun_l21_n132(x)
- end
-end
-
-def fun_l20_n949(x)
- if (x < 1)
- fun_l21_n987(x)
- else
- fun_l21_n615(x)
- end
-end
-
-def fun_l20_n950(x)
- if (x < 1)
- fun_l21_n170(x)
- else
- fun_l21_n55(x)
- end
-end
-
-def fun_l20_n951(x)
- if (x < 1)
- fun_l21_n260(x)
- else
- fun_l21_n675(x)
- end
-end
-
-def fun_l20_n952(x)
- if (x < 1)
- fun_l21_n406(x)
- else
- fun_l21_n569(x)
- end
-end
-
-def fun_l20_n953(x)
- if (x < 1)
- fun_l21_n41(x)
- else
- fun_l21_n951(x)
- end
-end
-
-def fun_l20_n954(x)
- if (x < 1)
- fun_l21_n467(x)
- else
- fun_l21_n837(x)
- end
-end
-
-def fun_l20_n955(x)
- if (x < 1)
- fun_l21_n41(x)
- else
- fun_l21_n349(x)
- end
-end
-
-def fun_l20_n956(x)
- if (x < 1)
- fun_l21_n105(x)
- else
- fun_l21_n595(x)
- end
-end
-
-def fun_l20_n957(x)
- if (x < 1)
- fun_l21_n132(x)
- else
- fun_l21_n622(x)
- end
-end
-
-def fun_l20_n958(x)
- if (x < 1)
- fun_l21_n1(x)
- else
- fun_l21_n770(x)
- end
-end
-
-def fun_l20_n959(x)
- if (x < 1)
- fun_l21_n768(x)
- else
- fun_l21_n979(x)
- end
-end
-
-def fun_l20_n960(x)
- if (x < 1)
- fun_l21_n954(x)
- else
- fun_l21_n906(x)
- end
-end
-
-def fun_l20_n961(x)
- if (x < 1)
- fun_l21_n759(x)
- else
- fun_l21_n381(x)
- end
-end
-
-def fun_l20_n962(x)
- if (x < 1)
- fun_l21_n590(x)
- else
- fun_l21_n868(x)
- end
-end
-
-def fun_l20_n963(x)
- if (x < 1)
- fun_l21_n119(x)
- else
- fun_l21_n962(x)
- end
-end
-
-def fun_l20_n964(x)
- if (x < 1)
- fun_l21_n350(x)
- else
- fun_l21_n930(x)
- end
-end
-
-def fun_l20_n965(x)
- if (x < 1)
- fun_l21_n542(x)
- else
- fun_l21_n217(x)
- end
-end
-
-def fun_l20_n966(x)
- if (x < 1)
- fun_l21_n375(x)
- else
- fun_l21_n244(x)
- end
-end
-
-def fun_l20_n967(x)
- if (x < 1)
- fun_l21_n160(x)
- else
- fun_l21_n610(x)
- end
-end
-
-def fun_l20_n968(x)
- if (x < 1)
- fun_l21_n28(x)
- else
- fun_l21_n925(x)
- end
-end
-
-def fun_l20_n969(x)
- if (x < 1)
- fun_l21_n661(x)
- else
- fun_l21_n944(x)
- end
-end
-
-def fun_l20_n970(x)
- if (x < 1)
- fun_l21_n534(x)
- else
- fun_l21_n872(x)
- end
-end
-
-def fun_l20_n971(x)
- if (x < 1)
- fun_l21_n684(x)
- else
- fun_l21_n271(x)
- end
-end
-
-def fun_l20_n972(x)
- if (x < 1)
- fun_l21_n493(x)
- else
- fun_l21_n893(x)
- end
-end
-
-def fun_l20_n973(x)
- if (x < 1)
- fun_l21_n912(x)
- else
- fun_l21_n385(x)
- end
-end
-
-def fun_l20_n974(x)
- if (x < 1)
- fun_l21_n528(x)
- else
- fun_l21_n948(x)
- end
-end
-
-def fun_l20_n975(x)
- if (x < 1)
- fun_l21_n263(x)
- else
- fun_l21_n362(x)
- end
-end
-
-def fun_l20_n976(x)
- if (x < 1)
- fun_l21_n86(x)
- else
- fun_l21_n937(x)
- end
-end
-
-def fun_l20_n977(x)
- if (x < 1)
- fun_l21_n886(x)
- else
- fun_l21_n845(x)
- end
-end
-
-def fun_l20_n978(x)
- if (x < 1)
- fun_l21_n681(x)
- else
- fun_l21_n437(x)
- end
-end
-
-def fun_l20_n979(x)
- if (x < 1)
- fun_l21_n342(x)
- else
- fun_l21_n333(x)
- end
-end
-
-def fun_l20_n980(x)
- if (x < 1)
- fun_l21_n160(x)
- else
- fun_l21_n635(x)
- end
-end
-
-def fun_l20_n981(x)
- if (x < 1)
- fun_l21_n580(x)
- else
- fun_l21_n895(x)
- end
-end
-
-def fun_l20_n982(x)
- if (x < 1)
- fun_l21_n578(x)
- else
- fun_l21_n669(x)
- end
-end
-
-def fun_l20_n983(x)
- if (x < 1)
- fun_l21_n939(x)
- else
- fun_l21_n321(x)
- end
-end
-
-def fun_l20_n984(x)
- if (x < 1)
- fun_l21_n465(x)
- else
- fun_l21_n175(x)
- end
-end
-
-def fun_l20_n985(x)
- if (x < 1)
- fun_l21_n522(x)
- else
- fun_l21_n108(x)
- end
-end
-
-def fun_l20_n986(x)
- if (x < 1)
- fun_l21_n347(x)
- else
- fun_l21_n207(x)
- end
-end
-
-def fun_l20_n987(x)
- if (x < 1)
- fun_l21_n844(x)
- else
- fun_l21_n39(x)
- end
-end
-
-def fun_l20_n988(x)
- if (x < 1)
- fun_l21_n104(x)
- else
- fun_l21_n528(x)
- end
-end
-
-def fun_l20_n989(x)
- if (x < 1)
- fun_l21_n486(x)
- else
- fun_l21_n443(x)
- end
-end
-
-def fun_l20_n990(x)
- if (x < 1)
- fun_l21_n643(x)
- else
- fun_l21_n503(x)
- end
-end
-
-def fun_l20_n991(x)
- if (x < 1)
- fun_l21_n428(x)
- else
- fun_l21_n813(x)
- end
-end
-
-def fun_l20_n992(x)
- if (x < 1)
- fun_l21_n452(x)
- else
- fun_l21_n536(x)
- end
-end
-
-def fun_l20_n993(x)
- if (x < 1)
- fun_l21_n247(x)
- else
- fun_l21_n961(x)
- end
-end
-
-def fun_l20_n994(x)
- if (x < 1)
- fun_l21_n749(x)
- else
- fun_l21_n554(x)
- end
-end
-
-def fun_l20_n995(x)
- if (x < 1)
- fun_l21_n333(x)
- else
- fun_l21_n162(x)
- end
-end
-
-def fun_l20_n996(x)
- if (x < 1)
- fun_l21_n686(x)
- else
- fun_l21_n635(x)
- end
-end
-
-def fun_l20_n997(x)
- if (x < 1)
- fun_l21_n709(x)
- else
- fun_l21_n953(x)
- end
-end
-
-def fun_l20_n998(x)
- if (x < 1)
- fun_l21_n315(x)
- else
- fun_l21_n818(x)
- end
-end
-
-def fun_l20_n999(x)
- if (x < 1)
- fun_l21_n543(x)
- else
- fun_l21_n385(x)
- end
-end
-
-def fun_l21_n0(x)
- if (x < 1)
- fun_l22_n736(x)
- else
- fun_l22_n837(x)
- end
-end
-
-def fun_l21_n1(x)
- if (x < 1)
- fun_l22_n333(x)
- else
- fun_l22_n358(x)
- end
-end
-
-def fun_l21_n2(x)
- if (x < 1)
- fun_l22_n150(x)
- else
- fun_l22_n469(x)
- end
-end
-
-def fun_l21_n3(x)
- if (x < 1)
- fun_l22_n899(x)
- else
- fun_l22_n917(x)
- end
-end
-
-def fun_l21_n4(x)
- if (x < 1)
- fun_l22_n943(x)
- else
- fun_l22_n435(x)
- end
-end
-
-def fun_l21_n5(x)
- if (x < 1)
- fun_l22_n56(x)
- else
- fun_l22_n123(x)
- end
-end
-
-def fun_l21_n6(x)
- if (x < 1)
- fun_l22_n849(x)
- else
- fun_l22_n475(x)
- end
-end
-
-def fun_l21_n7(x)
- if (x < 1)
- fun_l22_n931(x)
- else
- fun_l22_n529(x)
- end
-end
-
-def fun_l21_n8(x)
- if (x < 1)
- fun_l22_n192(x)
- else
- fun_l22_n441(x)
- end
-end
-
-def fun_l21_n9(x)
- if (x < 1)
- fun_l22_n84(x)
- else
- fun_l22_n428(x)
- end
-end
-
-def fun_l21_n10(x)
- if (x < 1)
- fun_l22_n355(x)
- else
- fun_l22_n432(x)
- end
-end
-
-def fun_l21_n11(x)
- if (x < 1)
- fun_l22_n380(x)
- else
- fun_l22_n739(x)
- end
-end
-
-def fun_l21_n12(x)
- if (x < 1)
- fun_l22_n559(x)
- else
- fun_l22_n492(x)
- end
-end
-
-def fun_l21_n13(x)
- if (x < 1)
- fun_l22_n542(x)
- else
- fun_l22_n284(x)
- end
-end
-
-def fun_l21_n14(x)
- if (x < 1)
- fun_l22_n106(x)
- else
- fun_l22_n443(x)
- end
-end
-
-def fun_l21_n15(x)
- if (x < 1)
- fun_l22_n769(x)
- else
- fun_l22_n111(x)
- end
-end
-
-def fun_l21_n16(x)
- if (x < 1)
- fun_l22_n982(x)
- else
- fun_l22_n855(x)
- end
-end
-
-def fun_l21_n17(x)
- if (x < 1)
- fun_l22_n994(x)
- else
- fun_l22_n952(x)
- end
-end
-
-def fun_l21_n18(x)
- if (x < 1)
- fun_l22_n567(x)
- else
- fun_l22_n741(x)
- end
-end
-
-def fun_l21_n19(x)
- if (x < 1)
- fun_l22_n851(x)
- else
- fun_l22_n830(x)
- end
-end
-
-def fun_l21_n20(x)
- if (x < 1)
- fun_l22_n353(x)
- else
- fun_l22_n184(x)
- end
-end
-
-def fun_l21_n21(x)
- if (x < 1)
- fun_l22_n891(x)
- else
- fun_l22_n629(x)
- end
-end
-
-def fun_l21_n22(x)
- if (x < 1)
- fun_l22_n521(x)
- else
- fun_l22_n932(x)
- end
-end
-
-def fun_l21_n23(x)
- if (x < 1)
- fun_l22_n834(x)
- else
- fun_l22_n913(x)
- end
-end
-
-def fun_l21_n24(x)
- if (x < 1)
- fun_l22_n839(x)
- else
- fun_l22_n402(x)
- end
-end
-
-def fun_l21_n25(x)
- if (x < 1)
- fun_l22_n525(x)
- else
- fun_l22_n247(x)
- end
-end
-
-def fun_l21_n26(x)
- if (x < 1)
- fun_l22_n906(x)
- else
- fun_l22_n392(x)
- end
-end
-
-def fun_l21_n27(x)
- if (x < 1)
- fun_l22_n716(x)
- else
- fun_l22_n804(x)
- end
-end
-
-def fun_l21_n28(x)
- if (x < 1)
- fun_l22_n444(x)
- else
- fun_l22_n21(x)
- end
-end
-
-def fun_l21_n29(x)
- if (x < 1)
- fun_l22_n674(x)
- else
- fun_l22_n695(x)
- end
-end
-
-def fun_l21_n30(x)
- if (x < 1)
- fun_l22_n948(x)
- else
- fun_l22_n447(x)
- end
-end
-
-def fun_l21_n31(x)
- if (x < 1)
- fun_l22_n460(x)
- else
- fun_l22_n743(x)
- end
-end
-
-def fun_l21_n32(x)
- if (x < 1)
- fun_l22_n369(x)
- else
- fun_l22_n331(x)
- end
-end
-
-def fun_l21_n33(x)
- if (x < 1)
- fun_l22_n602(x)
- else
- fun_l22_n934(x)
- end
-end
-
-def fun_l21_n34(x)
- if (x < 1)
- fun_l22_n572(x)
- else
- fun_l22_n267(x)
- end
-end
-
-def fun_l21_n35(x)
- if (x < 1)
- fun_l22_n517(x)
- else
- fun_l22_n298(x)
- end
-end
-
-def fun_l21_n36(x)
- if (x < 1)
- fun_l22_n998(x)
- else
- fun_l22_n561(x)
- end
-end
-
-def fun_l21_n37(x)
- if (x < 1)
- fun_l22_n457(x)
- else
- fun_l22_n513(x)
- end
-end
-
-def fun_l21_n38(x)
- if (x < 1)
- fun_l22_n378(x)
- else
- fun_l22_n238(x)
- end
-end
-
-def fun_l21_n39(x)
- if (x < 1)
- fun_l22_n788(x)
- else
- fun_l22_n45(x)
- end
-end
-
-def fun_l21_n40(x)
- if (x < 1)
- fun_l22_n299(x)
- else
- fun_l22_n516(x)
- end
-end
-
-def fun_l21_n41(x)
- if (x < 1)
- fun_l22_n454(x)
- else
- fun_l22_n274(x)
- end
-end
-
-def fun_l21_n42(x)
- if (x < 1)
- fun_l22_n855(x)
- else
- fun_l22_n360(x)
- end
-end
-
-def fun_l21_n43(x)
- if (x < 1)
- fun_l22_n577(x)
- else
- fun_l22_n213(x)
- end
-end
-
-def fun_l21_n44(x)
- if (x < 1)
- fun_l22_n569(x)
- else
- fun_l22_n857(x)
- end
-end
-
-def fun_l21_n45(x)
- if (x < 1)
- fun_l22_n667(x)
- else
- fun_l22_n285(x)
- end
-end
-
-def fun_l21_n46(x)
- if (x < 1)
- fun_l22_n915(x)
- else
- fun_l22_n232(x)
- end
-end
-
-def fun_l21_n47(x)
- if (x < 1)
- fun_l22_n124(x)
- else
- fun_l22_n708(x)
- end
-end
-
-def fun_l21_n48(x)
- if (x < 1)
- fun_l22_n184(x)
- else
- fun_l22_n272(x)
- end
-end
-
-def fun_l21_n49(x)
- if (x < 1)
- fun_l22_n376(x)
- else
- fun_l22_n138(x)
- end
-end
-
-def fun_l21_n50(x)
- if (x < 1)
- fun_l22_n897(x)
- else
- fun_l22_n857(x)
- end
-end
-
-def fun_l21_n51(x)
- if (x < 1)
- fun_l22_n335(x)
- else
- fun_l22_n614(x)
- end
-end
-
-def fun_l21_n52(x)
- if (x < 1)
- fun_l22_n921(x)
- else
- fun_l22_n109(x)
- end
-end
-
-def fun_l21_n53(x)
- if (x < 1)
- fun_l22_n27(x)
- else
- fun_l22_n609(x)
- end
-end
-
-def fun_l21_n54(x)
- if (x < 1)
- fun_l22_n831(x)
- else
- fun_l22_n769(x)
- end
-end
-
-def fun_l21_n55(x)
- if (x < 1)
- fun_l22_n936(x)
- else
- fun_l22_n250(x)
- end
-end
-
-def fun_l21_n56(x)
- if (x < 1)
- fun_l22_n261(x)
- else
- fun_l22_n142(x)
- end
-end
-
-def fun_l21_n57(x)
- if (x < 1)
- fun_l22_n721(x)
- else
- fun_l22_n604(x)
- end
-end
-
-def fun_l21_n58(x)
- if (x < 1)
- fun_l22_n760(x)
- else
- fun_l22_n545(x)
- end
-end
-
-def fun_l21_n59(x)
- if (x < 1)
- fun_l22_n934(x)
- else
- fun_l22_n110(x)
- end
-end
-
-def fun_l21_n60(x)
- if (x < 1)
- fun_l22_n422(x)
- else
- fun_l22_n31(x)
- end
-end
-
-def fun_l21_n61(x)
- if (x < 1)
- fun_l22_n776(x)
- else
- fun_l22_n251(x)
- end
-end
-
-def fun_l21_n62(x)
- if (x < 1)
- fun_l22_n76(x)
- else
- fun_l22_n930(x)
- end
-end
-
-def fun_l21_n63(x)
- if (x < 1)
- fun_l22_n331(x)
- else
- fun_l22_n550(x)
- end
-end
-
-def fun_l21_n64(x)
- if (x < 1)
- fun_l22_n845(x)
- else
- fun_l22_n62(x)
- end
-end
-
-def fun_l21_n65(x)
- if (x < 1)
- fun_l22_n887(x)
- else
- fun_l22_n784(x)
- end
-end
-
-def fun_l21_n66(x)
- if (x < 1)
- fun_l22_n353(x)
- else
- fun_l22_n918(x)
- end
-end
-
-def fun_l21_n67(x)
- if (x < 1)
- fun_l22_n682(x)
- else
- fun_l22_n840(x)
- end
-end
-
-def fun_l21_n68(x)
- if (x < 1)
- fun_l22_n966(x)
- else
- fun_l22_n187(x)
- end
-end
-
-def fun_l21_n69(x)
- if (x < 1)
- fun_l22_n424(x)
- else
- fun_l22_n674(x)
- end
-end
-
-def fun_l21_n70(x)
- if (x < 1)
- fun_l22_n530(x)
- else
- fun_l22_n148(x)
- end
-end
-
-def fun_l21_n71(x)
- if (x < 1)
- fun_l22_n616(x)
- else
- fun_l22_n945(x)
- end
-end
-
-def fun_l21_n72(x)
- if (x < 1)
- fun_l22_n634(x)
- else
- fun_l22_n945(x)
- end
-end
-
-def fun_l21_n73(x)
- if (x < 1)
- fun_l22_n153(x)
- else
- fun_l22_n657(x)
- end
-end
-
-def fun_l21_n74(x)
- if (x < 1)
- fun_l22_n284(x)
- else
- fun_l22_n83(x)
- end
-end
-
-def fun_l21_n75(x)
- if (x < 1)
- fun_l22_n292(x)
- else
- fun_l22_n440(x)
- end
-end
-
-def fun_l21_n76(x)
- if (x < 1)
- fun_l22_n932(x)
- else
- fun_l22_n29(x)
- end
-end
-
-def fun_l21_n77(x)
- if (x < 1)
- fun_l22_n292(x)
- else
- fun_l22_n866(x)
- end
-end
-
-def fun_l21_n78(x)
- if (x < 1)
- fun_l22_n822(x)
- else
- fun_l22_n838(x)
- end
-end
-
-def fun_l21_n79(x)
- if (x < 1)
- fun_l22_n297(x)
- else
- fun_l22_n677(x)
- end
-end
-
-def fun_l21_n80(x)
- if (x < 1)
- fun_l22_n540(x)
- else
- fun_l22_n975(x)
- end
-end
-
-def fun_l21_n81(x)
- if (x < 1)
- fun_l22_n375(x)
- else
- fun_l22_n735(x)
- end
-end
-
-def fun_l21_n82(x)
- if (x < 1)
- fun_l22_n549(x)
- else
- fun_l22_n844(x)
- end
-end
-
-def fun_l21_n83(x)
- if (x < 1)
- fun_l22_n763(x)
- else
- fun_l22_n863(x)
- end
-end
-
-def fun_l21_n84(x)
- if (x < 1)
- fun_l22_n993(x)
- else
- fun_l22_n155(x)
- end
-end
-
-def fun_l21_n85(x)
- if (x < 1)
- fun_l22_n751(x)
- else
- fun_l22_n264(x)
- end
-end
-
-def fun_l21_n86(x)
- if (x < 1)
- fun_l22_n517(x)
- else
- fun_l22_n752(x)
- end
-end
-
-def fun_l21_n87(x)
- if (x < 1)
- fun_l22_n477(x)
- else
- fun_l22_n486(x)
- end
-end
-
-def fun_l21_n88(x)
- if (x < 1)
- fun_l22_n220(x)
- else
- fun_l22_n4(x)
- end
-end
-
-def fun_l21_n89(x)
- if (x < 1)
- fun_l22_n678(x)
- else
- fun_l22_n692(x)
- end
-end
-
-def fun_l21_n90(x)
- if (x < 1)
- fun_l22_n75(x)
- else
- fun_l22_n306(x)
- end
-end
-
-def fun_l21_n91(x)
- if (x < 1)
- fun_l22_n460(x)
- else
- fun_l22_n514(x)
- end
-end
-
-def fun_l21_n92(x)
- if (x < 1)
- fun_l22_n446(x)
- else
- fun_l22_n201(x)
- end
-end
-
-def fun_l21_n93(x)
- if (x < 1)
- fun_l22_n872(x)
- else
- fun_l22_n611(x)
- end
-end
-
-def fun_l21_n94(x)
- if (x < 1)
- fun_l22_n809(x)
- else
- fun_l22_n91(x)
- end
-end
-
-def fun_l21_n95(x)
- if (x < 1)
- fun_l22_n565(x)
- else
- fun_l22_n968(x)
- end
-end
-
-def fun_l21_n96(x)
- if (x < 1)
- fun_l22_n765(x)
- else
- fun_l22_n622(x)
- end
-end
-
-def fun_l21_n97(x)
- if (x < 1)
- fun_l22_n856(x)
- else
- fun_l22_n923(x)
- end
-end
-
-def fun_l21_n98(x)
- if (x < 1)
- fun_l22_n14(x)
- else
- fun_l22_n742(x)
- end
-end
-
-def fun_l21_n99(x)
- if (x < 1)
- fun_l22_n214(x)
- else
- fun_l22_n118(x)
- end
-end
-
-def fun_l21_n100(x)
- if (x < 1)
- fun_l22_n992(x)
- else
- fun_l22_n610(x)
- end
-end
-
-def fun_l21_n101(x)
- if (x < 1)
- fun_l22_n603(x)
- else
- fun_l22_n208(x)
- end
-end
-
-def fun_l21_n102(x)
- if (x < 1)
- fun_l22_n647(x)
- else
- fun_l22_n753(x)
- end
-end
-
-def fun_l21_n103(x)
- if (x < 1)
- fun_l22_n952(x)
- else
- fun_l22_n25(x)
- end
-end
-
-def fun_l21_n104(x)
- if (x < 1)
- fun_l22_n635(x)
- else
- fun_l22_n381(x)
- end
-end
-
-def fun_l21_n105(x)
- if (x < 1)
- fun_l22_n258(x)
- else
- fun_l22_n346(x)
- end
-end
-
-def fun_l21_n106(x)
- if (x < 1)
- fun_l22_n732(x)
- else
- fun_l22_n851(x)
- end
-end
-
-def fun_l21_n107(x)
- if (x < 1)
- fun_l22_n67(x)
- else
- fun_l22_n80(x)
- end
-end
-
-def fun_l21_n108(x)
- if (x < 1)
- fun_l22_n237(x)
- else
- fun_l22_n600(x)
- end
-end
-
-def fun_l21_n109(x)
- if (x < 1)
- fun_l22_n448(x)
- else
- fun_l22_n768(x)
- end
-end
-
-def fun_l21_n110(x)
- if (x < 1)
- fun_l22_n52(x)
- else
- fun_l22_n849(x)
- end
-end
-
-def fun_l21_n111(x)
- if (x < 1)
- fun_l22_n471(x)
- else
- fun_l22_n400(x)
- end
-end
-
-def fun_l21_n112(x)
- if (x < 1)
- fun_l22_n655(x)
- else
- fun_l22_n691(x)
- end
-end
-
-def fun_l21_n113(x)
- if (x < 1)
- fun_l22_n325(x)
- else
- fun_l22_n936(x)
- end
-end
-
-def fun_l21_n114(x)
- if (x < 1)
- fun_l22_n693(x)
- else
- fun_l22_n118(x)
- end
-end
-
-def fun_l21_n115(x)
- if (x < 1)
- fun_l22_n881(x)
- else
- fun_l22_n167(x)
- end
-end
-
-def fun_l21_n116(x)
- if (x < 1)
- fun_l22_n958(x)
- else
- fun_l22_n36(x)
- end
-end
-
-def fun_l21_n117(x)
- if (x < 1)
- fun_l22_n233(x)
- else
- fun_l22_n649(x)
- end
-end
-
-def fun_l21_n118(x)
- if (x < 1)
- fun_l22_n847(x)
- else
- fun_l22_n544(x)
- end
-end
-
-def fun_l21_n119(x)
- if (x < 1)
- fun_l22_n392(x)
- else
- fun_l22_n2(x)
- end
-end
-
-def fun_l21_n120(x)
- if (x < 1)
- fun_l22_n750(x)
- else
- fun_l22_n481(x)
- end
-end
-
-def fun_l21_n121(x)
- if (x < 1)
- fun_l22_n124(x)
- else
- fun_l22_n769(x)
- end
-end
-
-def fun_l21_n122(x)
- if (x < 1)
- fun_l22_n483(x)
- else
- fun_l22_n147(x)
- end
-end
-
-def fun_l21_n123(x)
- if (x < 1)
- fun_l22_n543(x)
- else
- fun_l22_n454(x)
- end
-end
-
-def fun_l21_n124(x)
- if (x < 1)
- fun_l22_n24(x)
- else
- fun_l22_n815(x)
- end
-end
-
-def fun_l21_n125(x)
- if (x < 1)
- fun_l22_n315(x)
- else
- fun_l22_n263(x)
- end
-end
-
-def fun_l21_n126(x)
- if (x < 1)
- fun_l22_n934(x)
- else
- fun_l22_n351(x)
- end
-end
-
-def fun_l21_n127(x)
- if (x < 1)
- fun_l22_n982(x)
- else
- fun_l22_n755(x)
- end
-end
-
-def fun_l21_n128(x)
- if (x < 1)
- fun_l22_n146(x)
- else
- fun_l22_n345(x)
- end
-end
-
-def fun_l21_n129(x)
- if (x < 1)
- fun_l22_n85(x)
- else
- fun_l22_n356(x)
- end
-end
-
-def fun_l21_n130(x)
- if (x < 1)
- fun_l22_n987(x)
- else
- fun_l22_n103(x)
- end
-end
-
-def fun_l21_n131(x)
- if (x < 1)
- fun_l22_n413(x)
- else
- fun_l22_n260(x)
- end
-end
-
-def fun_l21_n132(x)
- if (x < 1)
- fun_l22_n615(x)
- else
- fun_l22_n742(x)
- end
-end
-
-def fun_l21_n133(x)
- if (x < 1)
- fun_l22_n836(x)
- else
- fun_l22_n214(x)
- end
-end
-
-def fun_l21_n134(x)
- if (x < 1)
- fun_l22_n85(x)
- else
- fun_l22_n916(x)
- end
-end
-
-def fun_l21_n135(x)
- if (x < 1)
- fun_l22_n21(x)
- else
- fun_l22_n902(x)
- end
-end
-
-def fun_l21_n136(x)
- if (x < 1)
- fun_l22_n842(x)
- else
- fun_l22_n475(x)
- end
-end
-
-def fun_l21_n137(x)
- if (x < 1)
- fun_l22_n573(x)
- else
- fun_l22_n108(x)
- end
-end
-
-def fun_l21_n138(x)
- if (x < 1)
- fun_l22_n394(x)
- else
- fun_l22_n783(x)
- end
-end
-
-def fun_l21_n139(x)
- if (x < 1)
- fun_l22_n514(x)
- else
- fun_l22_n37(x)
- end
-end
-
-def fun_l21_n140(x)
- if (x < 1)
- fun_l22_n358(x)
- else
- fun_l22_n768(x)
- end
-end
-
-def fun_l21_n141(x)
- if (x < 1)
- fun_l22_n201(x)
- else
- fun_l22_n981(x)
- end
-end
-
-def fun_l21_n142(x)
- if (x < 1)
- fun_l22_n371(x)
- else
- fun_l22_n66(x)
- end
-end
-
-def fun_l21_n143(x)
- if (x < 1)
- fun_l22_n41(x)
- else
- fun_l22_n869(x)
- end
-end
-
-def fun_l21_n144(x)
- if (x < 1)
- fun_l22_n961(x)
- else
- fun_l22_n488(x)
- end
-end
-
-def fun_l21_n145(x)
- if (x < 1)
- fun_l22_n769(x)
- else
- fun_l22_n82(x)
- end
-end
-
-def fun_l21_n146(x)
- if (x < 1)
- fun_l22_n700(x)
- else
- fun_l22_n276(x)
- end
-end
-
-def fun_l21_n147(x)
- if (x < 1)
- fun_l22_n439(x)
- else
- fun_l22_n654(x)
- end
-end
-
-def fun_l21_n148(x)
- if (x < 1)
- fun_l22_n130(x)
- else
- fun_l22_n825(x)
- end
-end
-
-def fun_l21_n149(x)
- if (x < 1)
- fun_l22_n174(x)
- else
- fun_l22_n907(x)
- end
-end
-
-def fun_l21_n150(x)
- if (x < 1)
- fun_l22_n386(x)
- else
- fun_l22_n760(x)
- end
-end
-
-def fun_l21_n151(x)
- if (x < 1)
- fun_l22_n460(x)
- else
- fun_l22_n403(x)
- end
-end
-
-def fun_l21_n152(x)
- if (x < 1)
- fun_l22_n861(x)
- else
- fun_l22_n832(x)
- end
-end
-
-def fun_l21_n153(x)
- if (x < 1)
- fun_l22_n564(x)
- else
- fun_l22_n604(x)
- end
-end
-
-def fun_l21_n154(x)
- if (x < 1)
- fun_l22_n402(x)
- else
- fun_l22_n999(x)
- end
-end
-
-def fun_l21_n155(x)
- if (x < 1)
- fun_l22_n645(x)
- else
- fun_l22_n807(x)
- end
-end
-
-def fun_l21_n156(x)
- if (x < 1)
- fun_l22_n709(x)
- else
- fun_l22_n930(x)
- end
-end
-
-def fun_l21_n157(x)
- if (x < 1)
- fun_l22_n353(x)
- else
- fun_l22_n462(x)
- end
-end
-
-def fun_l21_n158(x)
- if (x < 1)
- fun_l22_n697(x)
- else
- fun_l22_n463(x)
- end
-end
-
-def fun_l21_n159(x)
- if (x < 1)
- fun_l22_n690(x)
- else
- fun_l22_n309(x)
- end
-end
-
-def fun_l21_n160(x)
- if (x < 1)
- fun_l22_n889(x)
- else
- fun_l22_n326(x)
- end
-end
-
-def fun_l21_n161(x)
- if (x < 1)
- fun_l22_n952(x)
- else
- fun_l22_n225(x)
- end
-end
-
-def fun_l21_n162(x)
- if (x < 1)
- fun_l22_n345(x)
- else
- fun_l22_n168(x)
- end
-end
-
-def fun_l21_n163(x)
- if (x < 1)
- fun_l22_n437(x)
- else
- fun_l22_n494(x)
- end
-end
-
-def fun_l21_n164(x)
- if (x < 1)
- fun_l22_n151(x)
- else
- fun_l22_n846(x)
- end
-end
-
-def fun_l21_n165(x)
- if (x < 1)
- fun_l22_n324(x)
- else
- fun_l22_n999(x)
- end
-end
-
-def fun_l21_n166(x)
- if (x < 1)
- fun_l22_n232(x)
- else
- fun_l22_n473(x)
- end
-end
-
-def fun_l21_n167(x)
- if (x < 1)
- fun_l22_n934(x)
- else
- fun_l22_n437(x)
- end
-end
-
-def fun_l21_n168(x)
- if (x < 1)
- fun_l22_n738(x)
- else
- fun_l22_n410(x)
- end
-end
-
-def fun_l21_n169(x)
- if (x < 1)
- fun_l22_n686(x)
- else
- fun_l22_n108(x)
- end
-end
-
-def fun_l21_n170(x)
- if (x < 1)
- fun_l22_n595(x)
- else
- fun_l22_n935(x)
- end
-end
-
-def fun_l21_n171(x)
- if (x < 1)
- fun_l22_n723(x)
- else
- fun_l22_n478(x)
- end
-end
-
-def fun_l21_n172(x)
- if (x < 1)
- fun_l22_n610(x)
- else
- fun_l22_n709(x)
- end
-end
-
-def fun_l21_n173(x)
- if (x < 1)
- fun_l22_n539(x)
- else
- fun_l22_n17(x)
- end
-end
-
-def fun_l21_n174(x)
- if (x < 1)
- fun_l22_n612(x)
- else
- fun_l22_n235(x)
- end
-end
-
-def fun_l21_n175(x)
- if (x < 1)
- fun_l22_n835(x)
- else
- fun_l22_n138(x)
- end
-end
-
-def fun_l21_n176(x)
- if (x < 1)
- fun_l22_n997(x)
- else
- fun_l22_n123(x)
- end
-end
-
-def fun_l21_n177(x)
- if (x < 1)
- fun_l22_n97(x)
- else
- fun_l22_n997(x)
- end
-end
-
-def fun_l21_n178(x)
- if (x < 1)
- fun_l22_n842(x)
- else
- fun_l22_n925(x)
- end
-end
-
-def fun_l21_n179(x)
- if (x < 1)
- fun_l22_n159(x)
- else
- fun_l22_n412(x)
- end
-end
-
-def fun_l21_n180(x)
- if (x < 1)
- fun_l22_n109(x)
- else
- fun_l22_n691(x)
- end
-end
-
-def fun_l21_n181(x)
- if (x < 1)
- fun_l22_n315(x)
- else
- fun_l22_n127(x)
- end
-end
-
-def fun_l21_n182(x)
- if (x < 1)
- fun_l22_n220(x)
- else
- fun_l22_n143(x)
- end
-end
-
-def fun_l21_n183(x)
- if (x < 1)
- fun_l22_n493(x)
- else
- fun_l22_n895(x)
- end
-end
-
-def fun_l21_n184(x)
- if (x < 1)
- fun_l22_n667(x)
- else
- fun_l22_n675(x)
- end
-end
-
-def fun_l21_n185(x)
- if (x < 1)
- fun_l22_n995(x)
- else
- fun_l22_n4(x)
- end
-end
-
-def fun_l21_n186(x)
- if (x < 1)
- fun_l22_n210(x)
- else
- fun_l22_n690(x)
- end
-end
-
-def fun_l21_n187(x)
- if (x < 1)
- fun_l22_n413(x)
- else
- fun_l22_n227(x)
- end
-end
-
-def fun_l21_n188(x)
- if (x < 1)
- fun_l22_n562(x)
- else
- fun_l22_n591(x)
- end
-end
-
-def fun_l21_n189(x)
- if (x < 1)
- fun_l22_n171(x)
- else
- fun_l22_n891(x)
- end
-end
-
-def fun_l21_n190(x)
- if (x < 1)
- fun_l22_n207(x)
- else
- fun_l22_n401(x)
- end
-end
-
-def fun_l21_n191(x)
- if (x < 1)
- fun_l22_n703(x)
- else
- fun_l22_n604(x)
- end
-end
-
-def fun_l21_n192(x)
- if (x < 1)
- fun_l22_n772(x)
- else
- fun_l22_n321(x)
- end
-end
-
-def fun_l21_n193(x)
- if (x < 1)
- fun_l22_n576(x)
- else
- fun_l22_n273(x)
- end
-end
-
-def fun_l21_n194(x)
- if (x < 1)
- fun_l22_n897(x)
- else
- fun_l22_n624(x)
- end
-end
-
-def fun_l21_n195(x)
- if (x < 1)
- fun_l22_n909(x)
- else
- fun_l22_n216(x)
- end
-end
-
-def fun_l21_n196(x)
- if (x < 1)
- fun_l22_n904(x)
- else
- fun_l22_n618(x)
- end
-end
-
-def fun_l21_n197(x)
- if (x < 1)
- fun_l22_n410(x)
- else
- fun_l22_n926(x)
- end
-end
-
-def fun_l21_n198(x)
- if (x < 1)
- fun_l22_n884(x)
- else
- fun_l22_n174(x)
- end
-end
-
-def fun_l21_n199(x)
- if (x < 1)
- fun_l22_n407(x)
- else
- fun_l22_n270(x)
- end
-end
-
-def fun_l21_n200(x)
- if (x < 1)
- fun_l22_n741(x)
- else
- fun_l22_n2(x)
- end
-end
-
-def fun_l21_n201(x)
- if (x < 1)
- fun_l22_n143(x)
- else
- fun_l22_n93(x)
- end
-end
-
-def fun_l21_n202(x)
- if (x < 1)
- fun_l22_n397(x)
- else
- fun_l22_n424(x)
- end
-end
-
-def fun_l21_n203(x)
- if (x < 1)
- fun_l22_n183(x)
- else
- fun_l22_n258(x)
- end
-end
-
-def fun_l21_n204(x)
- if (x < 1)
- fun_l22_n12(x)
- else
- fun_l22_n50(x)
- end
-end
-
-def fun_l21_n205(x)
- if (x < 1)
- fun_l22_n488(x)
- else
- fun_l22_n148(x)
- end
-end
-
-def fun_l21_n206(x)
- if (x < 1)
- fun_l22_n516(x)
- else
- fun_l22_n87(x)
- end
-end
-
-def fun_l21_n207(x)
- if (x < 1)
- fun_l22_n810(x)
- else
- fun_l22_n773(x)
- end
-end
-
-def fun_l21_n208(x)
- if (x < 1)
- fun_l22_n508(x)
- else
- fun_l22_n898(x)
- end
-end
-
-def fun_l21_n209(x)
- if (x < 1)
- fun_l22_n188(x)
- else
- fun_l22_n815(x)
- end
-end
-
-def fun_l21_n210(x)
- if (x < 1)
- fun_l22_n86(x)
- else
- fun_l22_n615(x)
- end
-end
-
-def fun_l21_n211(x)
- if (x < 1)
- fun_l22_n589(x)
- else
- fun_l22_n774(x)
- end
-end
-
-def fun_l21_n212(x)
- if (x < 1)
- fun_l22_n926(x)
- else
- fun_l22_n14(x)
- end
-end
-
-def fun_l21_n213(x)
- if (x < 1)
- fun_l22_n104(x)
- else
- fun_l22_n723(x)
- end
-end
-
-def fun_l21_n214(x)
- if (x < 1)
- fun_l22_n699(x)
- else
- fun_l22_n775(x)
- end
-end
-
-def fun_l21_n215(x)
- if (x < 1)
- fun_l22_n941(x)
- else
- fun_l22_n997(x)
- end
-end
-
-def fun_l21_n216(x)
- if (x < 1)
- fun_l22_n182(x)
- else
- fun_l22_n409(x)
- end
-end
-
-def fun_l21_n217(x)
- if (x < 1)
- fun_l22_n410(x)
- else
- fun_l22_n807(x)
- end
-end
-
-def fun_l21_n218(x)
- if (x < 1)
- fun_l22_n787(x)
- else
- fun_l22_n143(x)
- end
-end
-
-def fun_l21_n219(x)
- if (x < 1)
- fun_l22_n515(x)
- else
- fun_l22_n558(x)
- end
-end
-
-def fun_l21_n220(x)
- if (x < 1)
- fun_l22_n22(x)
- else
- fun_l22_n37(x)
- end
-end
-
-def fun_l21_n221(x)
- if (x < 1)
- fun_l22_n366(x)
- else
- fun_l22_n63(x)
- end
-end
-
-def fun_l21_n222(x)
- if (x < 1)
- fun_l22_n846(x)
- else
- fun_l22_n655(x)
- end
-end
-
-def fun_l21_n223(x)
- if (x < 1)
- fun_l22_n946(x)
- else
- fun_l22_n587(x)
- end
-end
-
-def fun_l21_n224(x)
- if (x < 1)
- fun_l22_n841(x)
- else
- fun_l22_n874(x)
- end
-end
-
-def fun_l21_n225(x)
- if (x < 1)
- fun_l22_n19(x)
- else
- fun_l22_n142(x)
- end
-end
-
-def fun_l21_n226(x)
- if (x < 1)
- fun_l22_n939(x)
- else
- fun_l22_n214(x)
- end
-end
-
-def fun_l21_n227(x)
- if (x < 1)
- fun_l22_n900(x)
- else
- fun_l22_n673(x)
- end
-end
-
-def fun_l21_n228(x)
- if (x < 1)
- fun_l22_n784(x)
- else
- fun_l22_n258(x)
- end
-end
-
-def fun_l21_n229(x)
- if (x < 1)
- fun_l22_n553(x)
- else
- fun_l22_n253(x)
- end
-end
-
-def fun_l21_n230(x)
- if (x < 1)
- fun_l22_n927(x)
- else
- fun_l22_n9(x)
- end
-end
-
-def fun_l21_n231(x)
- if (x < 1)
- fun_l22_n822(x)
- else
- fun_l22_n870(x)
- end
-end
-
-def fun_l21_n232(x)
- if (x < 1)
- fun_l22_n741(x)
- else
- fun_l22_n185(x)
- end
-end
-
-def fun_l21_n233(x)
- if (x < 1)
- fun_l22_n691(x)
- else
- fun_l22_n613(x)
- end
-end
-
-def fun_l21_n234(x)
- if (x < 1)
- fun_l22_n995(x)
- else
- fun_l22_n73(x)
- end
-end
-
-def fun_l21_n235(x)
- if (x < 1)
- fun_l22_n250(x)
- else
- fun_l22_n356(x)
- end
-end
-
-def fun_l21_n236(x)
- if (x < 1)
- fun_l22_n531(x)
- else
- fun_l22_n335(x)
- end
-end
-
-def fun_l21_n237(x)
- if (x < 1)
- fun_l22_n376(x)
- else
- fun_l22_n732(x)
- end
-end
-
-def fun_l21_n238(x)
- if (x < 1)
- fun_l22_n293(x)
- else
- fun_l22_n886(x)
- end
-end
-
-def fun_l21_n239(x)
- if (x < 1)
- fun_l22_n266(x)
- else
- fun_l22_n820(x)
- end
-end
-
-def fun_l21_n240(x)
- if (x < 1)
- fun_l22_n450(x)
- else
- fun_l22_n418(x)
- end
-end
-
-def fun_l21_n241(x)
- if (x < 1)
- fun_l22_n902(x)
- else
- fun_l22_n991(x)
- end
-end
-
-def fun_l21_n242(x)
- if (x < 1)
- fun_l22_n521(x)
- else
- fun_l22_n516(x)
- end
-end
-
-def fun_l21_n243(x)
- if (x < 1)
- fun_l22_n97(x)
- else
- fun_l22_n388(x)
- end
-end
-
-def fun_l21_n244(x)
- if (x < 1)
- fun_l22_n596(x)
- else
- fun_l22_n758(x)
- end
-end
-
-def fun_l21_n245(x)
- if (x < 1)
- fun_l22_n370(x)
- else
- fun_l22_n747(x)
- end
-end
-
-def fun_l21_n246(x)
- if (x < 1)
- fun_l22_n73(x)
- else
- fun_l22_n84(x)
- end
-end
-
-def fun_l21_n247(x)
- if (x < 1)
- fun_l22_n489(x)
- else
- fun_l22_n166(x)
- end
-end
-
-def fun_l21_n248(x)
- if (x < 1)
- fun_l22_n419(x)
- else
- fun_l22_n698(x)
- end
-end
-
-def fun_l21_n249(x)
- if (x < 1)
- fun_l22_n330(x)
- else
- fun_l22_n995(x)
- end
-end
-
-def fun_l21_n250(x)
- if (x < 1)
- fun_l22_n443(x)
- else
- fun_l22_n341(x)
- end
-end
-
-def fun_l21_n251(x)
- if (x < 1)
- fun_l22_n442(x)
- else
- fun_l22_n311(x)
- end
-end
-
-def fun_l21_n252(x)
- if (x < 1)
- fun_l22_n60(x)
- else
- fun_l22_n399(x)
- end
-end
-
-def fun_l21_n253(x)
- if (x < 1)
- fun_l22_n831(x)
- else
- fun_l22_n245(x)
- end
-end
-
-def fun_l21_n254(x)
- if (x < 1)
- fun_l22_n946(x)
- else
- fun_l22_n205(x)
- end
-end
-
-def fun_l21_n255(x)
- if (x < 1)
- fun_l22_n499(x)
- else
- fun_l22_n476(x)
- end
-end
-
-def fun_l21_n256(x)
- if (x < 1)
- fun_l22_n841(x)
- else
- fun_l22_n70(x)
- end
-end
-
-def fun_l21_n257(x)
- if (x < 1)
- fun_l22_n289(x)
- else
- fun_l22_n329(x)
- end
-end
-
-def fun_l21_n258(x)
- if (x < 1)
- fun_l22_n149(x)
- else
- fun_l22_n270(x)
- end
-end
-
-def fun_l21_n259(x)
- if (x < 1)
- fun_l22_n569(x)
- else
- fun_l22_n972(x)
- end
-end
-
-def fun_l21_n260(x)
- if (x < 1)
- fun_l22_n313(x)
- else
- fun_l22_n573(x)
- end
-end
-
-def fun_l21_n261(x)
- if (x < 1)
- fun_l22_n458(x)
- else
- fun_l22_n964(x)
- end
-end
-
-def fun_l21_n262(x)
- if (x < 1)
- fun_l22_n308(x)
- else
- fun_l22_n825(x)
- end
-end
-
-def fun_l21_n263(x)
- if (x < 1)
- fun_l22_n810(x)
- else
- fun_l22_n864(x)
- end
-end
-
-def fun_l21_n264(x)
- if (x < 1)
- fun_l22_n52(x)
- else
- fun_l22_n486(x)
- end
-end
-
-def fun_l21_n265(x)
- if (x < 1)
- fun_l22_n520(x)
- else
- fun_l22_n758(x)
- end
-end
-
-def fun_l21_n266(x)
- if (x < 1)
- fun_l22_n954(x)
- else
- fun_l22_n819(x)
- end
-end
-
-def fun_l21_n267(x)
- if (x < 1)
- fun_l22_n226(x)
- else
- fun_l22_n893(x)
- end
-end
-
-def fun_l21_n268(x)
- if (x < 1)
- fun_l22_n854(x)
- else
- fun_l22_n281(x)
- end
-end
-
-def fun_l21_n269(x)
- if (x < 1)
- fun_l22_n354(x)
- else
- fun_l22_n296(x)
- end
-end
-
-def fun_l21_n270(x)
- if (x < 1)
- fun_l22_n970(x)
- else
- fun_l22_n898(x)
- end
-end
-
-def fun_l21_n271(x)
- if (x < 1)
- fun_l22_n769(x)
- else
- fun_l22_n94(x)
- end
-end
-
-def fun_l21_n272(x)
- if (x < 1)
- fun_l22_n100(x)
- else
- fun_l22_n830(x)
- end
-end
-
-def fun_l21_n273(x)
- if (x < 1)
- fun_l22_n514(x)
- else
- fun_l22_n522(x)
- end
-end
-
-def fun_l21_n274(x)
- if (x < 1)
- fun_l22_n897(x)
- else
- fun_l22_n260(x)
- end
-end
-
-def fun_l21_n275(x)
- if (x < 1)
- fun_l22_n834(x)
- else
- fun_l22_n125(x)
- end
-end
-
-def fun_l21_n276(x)
- if (x < 1)
- fun_l22_n262(x)
- else
- fun_l22_n617(x)
- end
-end
-
-def fun_l21_n277(x)
- if (x < 1)
- fun_l22_n84(x)
- else
- fun_l22_n483(x)
- end
-end
-
-def fun_l21_n278(x)
- if (x < 1)
- fun_l22_n657(x)
- else
- fun_l22_n10(x)
- end
-end
-
-def fun_l21_n279(x)
- if (x < 1)
- fun_l22_n142(x)
- else
- fun_l22_n666(x)
- end
-end
-
-def fun_l21_n280(x)
- if (x < 1)
- fun_l22_n824(x)
- else
- fun_l22_n408(x)
- end
-end
-
-def fun_l21_n281(x)
- if (x < 1)
- fun_l22_n39(x)
- else
- fun_l22_n225(x)
- end
-end
-
-def fun_l21_n282(x)
- if (x < 1)
- fun_l22_n93(x)
- else
- fun_l22_n410(x)
- end
-end
-
-def fun_l21_n283(x)
- if (x < 1)
- fun_l22_n294(x)
- else
- fun_l22_n268(x)
- end
-end
-
-def fun_l21_n284(x)
- if (x < 1)
- fun_l22_n636(x)
- else
- fun_l22_n767(x)
- end
-end
-
-def fun_l21_n285(x)
- if (x < 1)
- fun_l22_n181(x)
- else
- fun_l22_n317(x)
- end
-end
-
-def fun_l21_n286(x)
- if (x < 1)
- fun_l22_n208(x)
- else
- fun_l22_n803(x)
- end
-end
-
-def fun_l21_n287(x)
- if (x < 1)
- fun_l22_n910(x)
- else
- fun_l22_n872(x)
- end
-end
-
-def fun_l21_n288(x)
- if (x < 1)
- fun_l22_n771(x)
- else
- fun_l22_n858(x)
- end
-end
-
-def fun_l21_n289(x)
- if (x < 1)
- fun_l22_n109(x)
- else
- fun_l22_n577(x)
- end
-end
-
-def fun_l21_n290(x)
- if (x < 1)
- fun_l22_n474(x)
- else
- fun_l22_n289(x)
- end
-end
-
-def fun_l21_n291(x)
- if (x < 1)
- fun_l22_n55(x)
- else
- fun_l22_n448(x)
- end
-end
-
-def fun_l21_n292(x)
- if (x < 1)
- fun_l22_n644(x)
- else
- fun_l22_n958(x)
- end
-end
-
-def fun_l21_n293(x)
- if (x < 1)
- fun_l22_n775(x)
- else
- fun_l22_n131(x)
- end
-end
-
-def fun_l21_n294(x)
- if (x < 1)
- fun_l22_n950(x)
- else
- fun_l22_n216(x)
- end
-end
-
-def fun_l21_n295(x)
- if (x < 1)
- fun_l22_n258(x)
- else
- fun_l22_n919(x)
- end
-end
-
-def fun_l21_n296(x)
- if (x < 1)
- fun_l22_n298(x)
- else
- fun_l22_n334(x)
- end
-end
-
-def fun_l21_n297(x)
- if (x < 1)
- fun_l22_n124(x)
- else
- fun_l22_n704(x)
- end
-end
-
-def fun_l21_n298(x)
- if (x < 1)
- fun_l22_n526(x)
- else
- fun_l22_n139(x)
- end
-end
-
-def fun_l21_n299(x)
- if (x < 1)
- fun_l22_n133(x)
- else
- fun_l22_n65(x)
- end
-end
-
-def fun_l21_n300(x)
- if (x < 1)
- fun_l22_n476(x)
- else
- fun_l22_n858(x)
- end
-end
-
-def fun_l21_n301(x)
- if (x < 1)
- fun_l22_n23(x)
- else
- fun_l22_n391(x)
- end
-end
-
-def fun_l21_n302(x)
- if (x < 1)
- fun_l22_n292(x)
- else
- fun_l22_n127(x)
- end
-end
-
-def fun_l21_n303(x)
- if (x < 1)
- fun_l22_n935(x)
- else
- fun_l22_n399(x)
- end
-end
-
-def fun_l21_n304(x)
- if (x < 1)
- fun_l22_n110(x)
- else
- fun_l22_n904(x)
- end
-end
-
-def fun_l21_n305(x)
- if (x < 1)
- fun_l22_n865(x)
- else
- fun_l22_n510(x)
- end
-end
-
-def fun_l21_n306(x)
- if (x < 1)
- fun_l22_n930(x)
- else
- fun_l22_n892(x)
- end
-end
-
-def fun_l21_n307(x)
- if (x < 1)
- fun_l22_n701(x)
- else
- fun_l22_n172(x)
- end
-end
-
-def fun_l21_n308(x)
- if (x < 1)
- fun_l22_n424(x)
- else
- fun_l22_n169(x)
- end
-end
-
-def fun_l21_n309(x)
- if (x < 1)
- fun_l22_n494(x)
- else
- fun_l22_n608(x)
- end
-end
-
-def fun_l21_n310(x)
- if (x < 1)
- fun_l22_n862(x)
- else
- fun_l22_n54(x)
- end
-end
-
-def fun_l21_n311(x)
- if (x < 1)
- fun_l22_n679(x)
- else
- fun_l22_n246(x)
- end
-end
-
-def fun_l21_n312(x)
- if (x < 1)
- fun_l22_n897(x)
- else
- fun_l22_n581(x)
- end
-end
-
-def fun_l21_n313(x)
- if (x < 1)
- fun_l22_n788(x)
- else
- fun_l22_n32(x)
- end
-end
-
-def fun_l21_n314(x)
- if (x < 1)
- fun_l22_n68(x)
- else
- fun_l22_n920(x)
- end
-end
-
-def fun_l21_n315(x)
- if (x < 1)
- fun_l22_n520(x)
- else
- fun_l22_n814(x)
- end
-end
-
-def fun_l21_n316(x)
- if (x < 1)
- fun_l22_n190(x)
- else
- fun_l22_n832(x)
- end
-end
-
-def fun_l21_n317(x)
- if (x < 1)
- fun_l22_n500(x)
- else
- fun_l22_n576(x)
- end
-end
-
-def fun_l21_n318(x)
- if (x < 1)
- fun_l22_n999(x)
- else
- fun_l22_n423(x)
- end
-end
-
-def fun_l21_n319(x)
- if (x < 1)
- fun_l22_n62(x)
- else
- fun_l22_n451(x)
- end
-end
-
-def fun_l21_n320(x)
- if (x < 1)
- fun_l22_n265(x)
- else
- fun_l22_n421(x)
- end
-end
-
-def fun_l21_n321(x)
- if (x < 1)
- fun_l22_n340(x)
- else
- fun_l22_n297(x)
- end
-end
-
-def fun_l21_n322(x)
- if (x < 1)
- fun_l22_n526(x)
- else
- fun_l22_n834(x)
- end
-end
-
-def fun_l21_n323(x)
- if (x < 1)
- fun_l22_n305(x)
- else
- fun_l22_n444(x)
- end
-end
-
-def fun_l21_n324(x)
- if (x < 1)
- fun_l22_n117(x)
- else
- fun_l22_n617(x)
- end
-end
-
-def fun_l21_n325(x)
- if (x < 1)
- fun_l22_n715(x)
- else
- fun_l22_n551(x)
- end
-end
-
-def fun_l21_n326(x)
- if (x < 1)
- fun_l22_n921(x)
- else
- fun_l22_n69(x)
- end
-end
-
-def fun_l21_n327(x)
- if (x < 1)
- fun_l22_n226(x)
- else
- fun_l22_n21(x)
- end
-end
-
-def fun_l21_n328(x)
- if (x < 1)
- fun_l22_n181(x)
- else
- fun_l22_n409(x)
- end
-end
-
-def fun_l21_n329(x)
- if (x < 1)
- fun_l22_n894(x)
- else
- fun_l22_n17(x)
- end
-end
-
-def fun_l21_n330(x)
- if (x < 1)
- fun_l22_n633(x)
- else
- fun_l22_n370(x)
- end
-end
-
-def fun_l21_n331(x)
- if (x < 1)
- fun_l22_n638(x)
- else
- fun_l22_n994(x)
- end
-end
-
-def fun_l21_n332(x)
- if (x < 1)
- fun_l22_n663(x)
- else
- fun_l22_n981(x)
- end
-end
-
-def fun_l21_n333(x)
- if (x < 1)
- fun_l22_n861(x)
- else
- fun_l22_n472(x)
- end
-end
-
-def fun_l21_n334(x)
- if (x < 1)
- fun_l22_n265(x)
- else
- fun_l22_n534(x)
- end
-end
-
-def fun_l21_n335(x)
- if (x < 1)
- fun_l22_n43(x)
- else
- fun_l22_n613(x)
- end
-end
-
-def fun_l21_n336(x)
- if (x < 1)
- fun_l22_n788(x)
- else
- fun_l22_n649(x)
- end
-end
-
-def fun_l21_n337(x)
- if (x < 1)
- fun_l22_n406(x)
- else
- fun_l22_n644(x)
- end
-end
-
-def fun_l21_n338(x)
- if (x < 1)
- fun_l22_n582(x)
- else
- fun_l22_n463(x)
- end
-end
-
-def fun_l21_n339(x)
- if (x < 1)
- fun_l22_n825(x)
- else
- fun_l22_n775(x)
- end
-end
-
-def fun_l21_n340(x)
- if (x < 1)
- fun_l22_n696(x)
- else
- fun_l22_n318(x)
- end
-end
-
-def fun_l21_n341(x)
- if (x < 1)
- fun_l22_n21(x)
- else
- fun_l22_n285(x)
- end
-end
-
-def fun_l21_n342(x)
- if (x < 1)
- fun_l22_n10(x)
- else
- fun_l22_n423(x)
- end
-end
-
-def fun_l21_n343(x)
- if (x < 1)
- fun_l22_n205(x)
- else
- fun_l22_n86(x)
- end
-end
-
-def fun_l21_n344(x)
- if (x < 1)
- fun_l22_n437(x)
- else
- fun_l22_n712(x)
- end
-end
-
-def fun_l21_n345(x)
- if (x < 1)
- fun_l22_n941(x)
- else
- fun_l22_n655(x)
- end
-end
-
-def fun_l21_n346(x)
- if (x < 1)
- fun_l22_n673(x)
- else
- fun_l22_n750(x)
- end
-end
-
-def fun_l21_n347(x)
- if (x < 1)
- fun_l22_n728(x)
- else
- fun_l22_n605(x)
- end
-end
-
-def fun_l21_n348(x)
- if (x < 1)
- fun_l22_n452(x)
- else
- fun_l22_n968(x)
- end
-end
-
-def fun_l21_n349(x)
- if (x < 1)
- fun_l22_n554(x)
- else
- fun_l22_n997(x)
- end
-end
-
-def fun_l21_n350(x)
- if (x < 1)
- fun_l22_n784(x)
- else
- fun_l22_n801(x)
- end
-end
-
-def fun_l21_n351(x)
- if (x < 1)
- fun_l22_n397(x)
- else
- fun_l22_n636(x)
- end
-end
-
-def fun_l21_n352(x)
- if (x < 1)
- fun_l22_n562(x)
- else
- fun_l22_n150(x)
- end
-end
-
-def fun_l21_n353(x)
- if (x < 1)
- fun_l22_n142(x)
- else
- fun_l22_n396(x)
- end
-end
-
-def fun_l21_n354(x)
- if (x < 1)
- fun_l22_n455(x)
- else
- fun_l22_n424(x)
- end
-end
-
-def fun_l21_n355(x)
- if (x < 1)
- fun_l22_n736(x)
- else
- fun_l22_n534(x)
- end
-end
-
-def fun_l21_n356(x)
- if (x < 1)
- fun_l22_n111(x)
- else
- fun_l22_n903(x)
- end
-end
-
-def fun_l21_n357(x)
- if (x < 1)
- fun_l22_n996(x)
- else
- fun_l22_n350(x)
- end
-end
-
-def fun_l21_n358(x)
- if (x < 1)
- fun_l22_n516(x)
- else
- fun_l22_n202(x)
- end
-end
-
-def fun_l21_n359(x)
- if (x < 1)
- fun_l22_n68(x)
- else
- fun_l22_n823(x)
- end
-end
-
-def fun_l21_n360(x)
- if (x < 1)
- fun_l22_n298(x)
- else
- fun_l22_n873(x)
- end
-end
-
-def fun_l21_n361(x)
- if (x < 1)
- fun_l22_n491(x)
- else
- fun_l22_n86(x)
- end
-end
-
-def fun_l21_n362(x)
- if (x < 1)
- fun_l22_n340(x)
- else
- fun_l22_n215(x)
- end
-end
-
-def fun_l21_n363(x)
- if (x < 1)
- fun_l22_n452(x)
- else
- fun_l22_n416(x)
- end
-end
-
-def fun_l21_n364(x)
- if (x < 1)
- fun_l22_n625(x)
- else
- fun_l22_n638(x)
- end
-end
-
-def fun_l21_n365(x)
- if (x < 1)
- fun_l22_n166(x)
- else
- fun_l22_n380(x)
- end
-end
-
-def fun_l21_n366(x)
- if (x < 1)
- fun_l22_n934(x)
- else
- fun_l22_n937(x)
- end
-end
-
-def fun_l21_n367(x)
- if (x < 1)
- fun_l22_n77(x)
- else
- fun_l22_n117(x)
- end
-end
-
-def fun_l21_n368(x)
- if (x < 1)
- fun_l22_n688(x)
- else
- fun_l22_n529(x)
- end
-end
-
-def fun_l21_n369(x)
- if (x < 1)
- fun_l22_n950(x)
- else
- fun_l22_n148(x)
- end
-end
-
-def fun_l21_n370(x)
- if (x < 1)
- fun_l22_n216(x)
- else
- fun_l22_n588(x)
- end
-end
-
-def fun_l21_n371(x)
- if (x < 1)
- fun_l22_n127(x)
- else
- fun_l22_n901(x)
- end
-end
-
-def fun_l21_n372(x)
- if (x < 1)
- fun_l22_n244(x)
- else
- fun_l22_n516(x)
- end
-end
-
-def fun_l21_n373(x)
- if (x < 1)
- fun_l22_n791(x)
- else
- fun_l22_n466(x)
- end
-end
-
-def fun_l21_n374(x)
- if (x < 1)
- fun_l22_n469(x)
- else
- fun_l22_n38(x)
- end
-end
-
-def fun_l21_n375(x)
- if (x < 1)
- fun_l22_n894(x)
- else
- fun_l22_n82(x)
- end
-end
-
-def fun_l21_n376(x)
- if (x < 1)
- fun_l22_n663(x)
- else
- fun_l22_n865(x)
- end
-end
-
-def fun_l21_n377(x)
- if (x < 1)
- fun_l22_n782(x)
- else
- fun_l22_n10(x)
- end
-end
-
-def fun_l21_n378(x)
- if (x < 1)
- fun_l22_n930(x)
- else
- fun_l22_n767(x)
- end
-end
-
-def fun_l21_n379(x)
- if (x < 1)
- fun_l22_n130(x)
- else
- fun_l22_n437(x)
- end
-end
-
-def fun_l21_n380(x)
- if (x < 1)
- fun_l22_n496(x)
- else
- fun_l22_n413(x)
- end
-end
-
-def fun_l21_n381(x)
- if (x < 1)
- fun_l22_n453(x)
- else
- fun_l22_n542(x)
- end
-end
-
-def fun_l21_n382(x)
- if (x < 1)
- fun_l22_n404(x)
- else
- fun_l22_n637(x)
- end
-end
-
-def fun_l21_n383(x)
- if (x < 1)
- fun_l22_n829(x)
- else
- fun_l22_n526(x)
- end
-end
-
-def fun_l21_n384(x)
- if (x < 1)
- fun_l22_n882(x)
- else
- fun_l22_n922(x)
- end
-end
-
-def fun_l21_n385(x)
- if (x < 1)
- fun_l22_n58(x)
- else
- fun_l22_n401(x)
- end
-end
-
-def fun_l21_n386(x)
- if (x < 1)
- fun_l22_n936(x)
- else
- fun_l22_n164(x)
- end
-end
-
-def fun_l21_n387(x)
- if (x < 1)
- fun_l22_n773(x)
- else
- fun_l22_n323(x)
- end
-end
-
-def fun_l21_n388(x)
- if (x < 1)
- fun_l22_n718(x)
- else
- fun_l22_n189(x)
- end
-end
-
-def fun_l21_n389(x)
- if (x < 1)
- fun_l22_n950(x)
- else
- fun_l22_n283(x)
- end
-end
-
-def fun_l21_n390(x)
- if (x < 1)
- fun_l22_n278(x)
- else
- fun_l22_n325(x)
- end
-end
-
-def fun_l21_n391(x)
- if (x < 1)
- fun_l22_n98(x)
- else
- fun_l22_n162(x)
- end
-end
-
-def fun_l21_n392(x)
- if (x < 1)
- fun_l22_n268(x)
- else
- fun_l22_n416(x)
- end
-end
-
-def fun_l21_n393(x)
- if (x < 1)
- fun_l22_n344(x)
- else
- fun_l22_n680(x)
- end
-end
-
-def fun_l21_n394(x)
- if (x < 1)
- fun_l22_n545(x)
- else
- fun_l22_n41(x)
- end
-end
-
-def fun_l21_n395(x)
- if (x < 1)
- fun_l22_n149(x)
- else
- fun_l22_n659(x)
- end
-end
-
-def fun_l21_n396(x)
- if (x < 1)
- fun_l22_n81(x)
- else
- fun_l22_n316(x)
- end
-end
-
-def fun_l21_n397(x)
- if (x < 1)
- fun_l22_n657(x)
- else
- fun_l22_n414(x)
- end
-end
-
-def fun_l21_n398(x)
- if (x < 1)
- fun_l22_n262(x)
- else
- fun_l22_n26(x)
- end
-end
-
-def fun_l21_n399(x)
- if (x < 1)
- fun_l22_n509(x)
- else
- fun_l22_n658(x)
- end
-end
-
-def fun_l21_n400(x)
- if (x < 1)
- fun_l22_n533(x)
- else
- fun_l22_n416(x)
- end
-end
-
-def fun_l21_n401(x)
- if (x < 1)
- fun_l22_n631(x)
- else
- fun_l22_n575(x)
- end
-end
-
-def fun_l21_n402(x)
- if (x < 1)
- fun_l22_n171(x)
- else
- fun_l22_n727(x)
- end
-end
-
-def fun_l21_n403(x)
- if (x < 1)
- fun_l22_n65(x)
- else
- fun_l22_n109(x)
- end
-end
-
-def fun_l21_n404(x)
- if (x < 1)
- fun_l22_n818(x)
- else
- fun_l22_n638(x)
- end
-end
-
-def fun_l21_n405(x)
- if (x < 1)
- fun_l22_n515(x)
- else
- fun_l22_n86(x)
- end
-end
-
-def fun_l21_n406(x)
- if (x < 1)
- fun_l22_n500(x)
- else
- fun_l22_n367(x)
- end
-end
-
-def fun_l21_n407(x)
- if (x < 1)
- fun_l22_n609(x)
- else
- fun_l22_n926(x)
- end
-end
-
-def fun_l21_n408(x)
- if (x < 1)
- fun_l22_n553(x)
- else
- fun_l22_n494(x)
- end
-end
-
-def fun_l21_n409(x)
- if (x < 1)
- fun_l22_n837(x)
- else
- fun_l22_n800(x)
- end
-end
-
-def fun_l21_n410(x)
- if (x < 1)
- fun_l22_n511(x)
- else
- fun_l22_n376(x)
- end
-end
-
-def fun_l21_n411(x)
- if (x < 1)
- fun_l22_n691(x)
- else
- fun_l22_n135(x)
- end
-end
-
-def fun_l21_n412(x)
- if (x < 1)
- fun_l22_n537(x)
- else
- fun_l22_n708(x)
- end
-end
-
-def fun_l21_n413(x)
- if (x < 1)
- fun_l22_n858(x)
- else
- fun_l22_n75(x)
- end
-end
-
-def fun_l21_n414(x)
- if (x < 1)
- fun_l22_n473(x)
- else
- fun_l22_n26(x)
- end
-end
-
-def fun_l21_n415(x)
- if (x < 1)
- fun_l22_n443(x)
- else
- fun_l22_n709(x)
- end
-end
-
-def fun_l21_n416(x)
- if (x < 1)
- fun_l22_n464(x)
- else
- fun_l22_n329(x)
- end
-end
-
-def fun_l21_n417(x)
- if (x < 1)
- fun_l22_n402(x)
- else
- fun_l22_n438(x)
- end
-end
-
-def fun_l21_n418(x)
- if (x < 1)
- fun_l22_n741(x)
- else
- fun_l22_n704(x)
- end
-end
-
-def fun_l21_n419(x)
- if (x < 1)
- fun_l22_n949(x)
- else
- fun_l22_n46(x)
- end
-end
-
-def fun_l21_n420(x)
- if (x < 1)
- fun_l22_n102(x)
- else
- fun_l22_n20(x)
- end
-end
-
-def fun_l21_n421(x)
- if (x < 1)
- fun_l22_n834(x)
- else
- fun_l22_n876(x)
- end
-end
-
-def fun_l21_n422(x)
- if (x < 1)
- fun_l22_n881(x)
- else
- fun_l22_n100(x)
- end
-end
-
-def fun_l21_n423(x)
- if (x < 1)
- fun_l22_n155(x)
- else
- fun_l22_n99(x)
- end
-end
-
-def fun_l21_n424(x)
- if (x < 1)
- fun_l22_n913(x)
- else
- fun_l22_n839(x)
- end
-end
-
-def fun_l21_n425(x)
- if (x < 1)
- fun_l22_n981(x)
- else
- fun_l22_n73(x)
- end
-end
-
-def fun_l21_n426(x)
- if (x < 1)
- fun_l22_n221(x)
- else
- fun_l22_n548(x)
- end
-end
-
-def fun_l21_n427(x)
- if (x < 1)
- fun_l22_n563(x)
- else
- fun_l22_n978(x)
- end
-end
-
-def fun_l21_n428(x)
- if (x < 1)
- fun_l22_n310(x)
- else
- fun_l22_n591(x)
- end
-end
-
-def fun_l21_n429(x)
- if (x < 1)
- fun_l22_n962(x)
- else
- fun_l22_n156(x)
- end
-end
-
-def fun_l21_n430(x)
- if (x < 1)
- fun_l22_n810(x)
- else
- fun_l22_n766(x)
- end
-end
-
-def fun_l21_n431(x)
- if (x < 1)
- fun_l22_n675(x)
- else
- fun_l22_n354(x)
- end
-end
-
-def fun_l21_n432(x)
- if (x < 1)
- fun_l22_n320(x)
- else
- fun_l22_n474(x)
- end
-end
-
-def fun_l21_n433(x)
- if (x < 1)
- fun_l22_n50(x)
- else
- fun_l22_n626(x)
- end
-end
-
-def fun_l21_n434(x)
- if (x < 1)
- fun_l22_n956(x)
- else
- fun_l22_n238(x)
- end
-end
-
-def fun_l21_n435(x)
- if (x < 1)
- fun_l22_n966(x)
- else
- fun_l22_n729(x)
- end
-end
-
-def fun_l21_n436(x)
- if (x < 1)
- fun_l22_n856(x)
- else
- fun_l22_n553(x)
- end
-end
-
-def fun_l21_n437(x)
- if (x < 1)
- fun_l22_n833(x)
- else
- fun_l22_n312(x)
- end
-end
-
-def fun_l21_n438(x)
- if (x < 1)
- fun_l22_n254(x)
- else
- fun_l22_n515(x)
- end
-end
-
-def fun_l21_n439(x)
- if (x < 1)
- fun_l22_n548(x)
- else
- fun_l22_n184(x)
- end
-end
-
-def fun_l21_n440(x)
- if (x < 1)
- fun_l22_n922(x)
- else
- fun_l22_n465(x)
- end
-end
-
-def fun_l21_n441(x)
- if (x < 1)
- fun_l22_n136(x)
- else
- fun_l22_n739(x)
- end
-end
-
-def fun_l21_n442(x)
- if (x < 1)
- fun_l22_n4(x)
- else
- fun_l22_n359(x)
- end
-end
-
-def fun_l21_n443(x)
- if (x < 1)
- fun_l22_n269(x)
- else
- fun_l22_n417(x)
- end
-end
-
-def fun_l21_n444(x)
- if (x < 1)
- fun_l22_n809(x)
- else
- fun_l22_n430(x)
- end
-end
-
-def fun_l21_n445(x)
- if (x < 1)
- fun_l22_n428(x)
- else
- fun_l22_n55(x)
- end
-end
-
-def fun_l21_n446(x)
- if (x < 1)
- fun_l22_n265(x)
- else
- fun_l22_n394(x)
- end
-end
-
-def fun_l21_n447(x)
- if (x < 1)
- fun_l22_n885(x)
- else
- fun_l22_n139(x)
- end
-end
-
-def fun_l21_n448(x)
- if (x < 1)
- fun_l22_n219(x)
- else
- fun_l22_n578(x)
- end
-end
-
-def fun_l21_n449(x)
- if (x < 1)
- fun_l22_n458(x)
- else
- fun_l22_n226(x)
- end
-end
-
-def fun_l21_n450(x)
- if (x < 1)
- fun_l22_n128(x)
- else
- fun_l22_n790(x)
- end
-end
-
-def fun_l21_n451(x)
- if (x < 1)
- fun_l22_n134(x)
- else
- fun_l22_n471(x)
- end
-end
-
-def fun_l21_n452(x)
- if (x < 1)
- fun_l22_n180(x)
- else
- fun_l22_n183(x)
- end
-end
-
-def fun_l21_n453(x)
- if (x < 1)
- fun_l22_n823(x)
- else
- fun_l22_n667(x)
- end
-end
-
-def fun_l21_n454(x)
- if (x < 1)
- fun_l22_n324(x)
- else
- fun_l22_n487(x)
- end
-end
-
-def fun_l21_n455(x)
- if (x < 1)
- fun_l22_n341(x)
- else
- fun_l22_n784(x)
- end
-end
-
-def fun_l21_n456(x)
- if (x < 1)
- fun_l22_n32(x)
- else
- fun_l22_n227(x)
- end
-end
-
-def fun_l21_n457(x)
- if (x < 1)
- fun_l22_n567(x)
- else
- fun_l22_n774(x)
- end
-end
-
-def fun_l21_n458(x)
- if (x < 1)
- fun_l22_n342(x)
- else
- fun_l22_n126(x)
- end
-end
-
-def fun_l21_n459(x)
- if (x < 1)
- fun_l22_n116(x)
- else
- fun_l22_n367(x)
- end
-end
-
-def fun_l21_n460(x)
- if (x < 1)
- fun_l22_n864(x)
- else
- fun_l22_n618(x)
- end
-end
-
-def fun_l21_n461(x)
- if (x < 1)
- fun_l22_n823(x)
- else
- fun_l22_n799(x)
- end
-end
-
-def fun_l21_n462(x)
- if (x < 1)
- fun_l22_n684(x)
- else
- fun_l22_n758(x)
- end
-end
-
-def fun_l21_n463(x)
- if (x < 1)
- fun_l22_n662(x)
- else
- fun_l22_n514(x)
- end
-end
-
-def fun_l21_n464(x)
- if (x < 1)
- fun_l22_n736(x)
- else
- fun_l22_n794(x)
- end
-end
-
-def fun_l21_n465(x)
- if (x < 1)
- fun_l22_n200(x)
- else
- fun_l22_n565(x)
- end
-end
-
-def fun_l21_n466(x)
- if (x < 1)
- fun_l22_n787(x)
- else
- fun_l22_n835(x)
- end
-end
-
-def fun_l21_n467(x)
- if (x < 1)
- fun_l22_n927(x)
- else
- fun_l22_n399(x)
- end
-end
-
-def fun_l21_n468(x)
- if (x < 1)
- fun_l22_n102(x)
- else
- fun_l22_n738(x)
- end
-end
-
-def fun_l21_n469(x)
- if (x < 1)
- fun_l22_n833(x)
- else
- fun_l22_n917(x)
- end
-end
-
-def fun_l21_n470(x)
- if (x < 1)
- fun_l22_n422(x)
- else
- fun_l22_n108(x)
- end
-end
-
-def fun_l21_n471(x)
- if (x < 1)
- fun_l22_n884(x)
- else
- fun_l22_n19(x)
- end
-end
-
-def fun_l21_n472(x)
- if (x < 1)
- fun_l22_n849(x)
- else
- fun_l22_n251(x)
- end
-end
-
-def fun_l21_n473(x)
- if (x < 1)
- fun_l22_n636(x)
- else
- fun_l22_n439(x)
- end
-end
-
-def fun_l21_n474(x)
- if (x < 1)
- fun_l22_n867(x)
- else
- fun_l22_n227(x)
- end
-end
-
-def fun_l21_n475(x)
- if (x < 1)
- fun_l22_n809(x)
- else
- fun_l22_n548(x)
- end
-end
-
-def fun_l21_n476(x)
- if (x < 1)
- fun_l22_n213(x)
- else
- fun_l22_n607(x)
- end
-end
-
-def fun_l21_n477(x)
- if (x < 1)
- fun_l22_n44(x)
- else
- fun_l22_n38(x)
- end
-end
-
-def fun_l21_n478(x)
- if (x < 1)
- fun_l22_n400(x)
- else
- fun_l22_n436(x)
- end
-end
-
-def fun_l21_n479(x)
- if (x < 1)
- fun_l22_n701(x)
- else
- fun_l22_n84(x)
- end
-end
-
-def fun_l21_n480(x)
- if (x < 1)
- fun_l22_n21(x)
- else
- fun_l22_n215(x)
- end
-end
-
-def fun_l21_n481(x)
- if (x < 1)
- fun_l22_n27(x)
- else
- fun_l22_n198(x)
- end
-end
-
-def fun_l21_n482(x)
- if (x < 1)
- fun_l22_n803(x)
- else
- fun_l22_n82(x)
- end
-end
-
-def fun_l21_n483(x)
- if (x < 1)
- fun_l22_n490(x)
- else
- fun_l22_n126(x)
- end
-end
-
-def fun_l21_n484(x)
- if (x < 1)
- fun_l22_n348(x)
- else
- fun_l22_n586(x)
- end
-end
-
-def fun_l21_n485(x)
- if (x < 1)
- fun_l22_n279(x)
- else
- fun_l22_n266(x)
- end
-end
-
-def fun_l21_n486(x)
- if (x < 1)
- fun_l22_n398(x)
- else
- fun_l22_n26(x)
- end
-end
-
-def fun_l21_n487(x)
- if (x < 1)
- fun_l22_n529(x)
- else
- fun_l22_n972(x)
- end
-end
-
-def fun_l21_n488(x)
- if (x < 1)
- fun_l22_n390(x)
- else
- fun_l22_n220(x)
- end
-end
-
-def fun_l21_n489(x)
- if (x < 1)
- fun_l22_n909(x)
- else
- fun_l22_n777(x)
- end
-end
-
-def fun_l21_n490(x)
- if (x < 1)
- fun_l22_n797(x)
- else
- fun_l22_n643(x)
- end
-end
-
-def fun_l21_n491(x)
- if (x < 1)
- fun_l22_n920(x)
- else
- fun_l22_n820(x)
- end
-end
-
-def fun_l21_n492(x)
- if (x < 1)
- fun_l22_n170(x)
- else
- fun_l22_n236(x)
- end
-end
-
-def fun_l21_n493(x)
- if (x < 1)
- fun_l22_n352(x)
- else
- fun_l22_n147(x)
- end
-end
-
-def fun_l21_n494(x)
- if (x < 1)
- fun_l22_n938(x)
- else
- fun_l22_n83(x)
- end
-end
-
-def fun_l21_n495(x)
- if (x < 1)
- fun_l22_n512(x)
- else
- fun_l22_n798(x)
- end
-end
-
-def fun_l21_n496(x)
- if (x < 1)
- fun_l22_n254(x)
- else
- fun_l22_n827(x)
- end
-end
-
-def fun_l21_n497(x)
- if (x < 1)
- fun_l22_n730(x)
- else
- fun_l22_n995(x)
- end
-end
-
-def fun_l21_n498(x)
- if (x < 1)
- fun_l22_n130(x)
- else
- fun_l22_n269(x)
- end
-end
-
-def fun_l21_n499(x)
- if (x < 1)
- fun_l22_n275(x)
- else
- fun_l22_n176(x)
- end
-end
-
-def fun_l21_n500(x)
- if (x < 1)
- fun_l22_n493(x)
- else
- fun_l22_n322(x)
- end
-end
-
-def fun_l21_n501(x)
- if (x < 1)
- fun_l22_n421(x)
- else
- fun_l22_n859(x)
- end
-end
-
-def fun_l21_n502(x)
- if (x < 1)
- fun_l22_n611(x)
- else
- fun_l22_n727(x)
- end
-end
-
-def fun_l21_n503(x)
- if (x < 1)
- fun_l22_n42(x)
- else
- fun_l22_n294(x)
- end
-end
-
-def fun_l21_n504(x)
- if (x < 1)
- fun_l22_n735(x)
- else
- fun_l22_n145(x)
- end
-end
-
-def fun_l21_n505(x)
- if (x < 1)
- fun_l22_n865(x)
- else
- fun_l22_n225(x)
- end
-end
-
-def fun_l21_n506(x)
- if (x < 1)
- fun_l22_n922(x)
- else
- fun_l22_n619(x)
- end
-end
-
-def fun_l21_n507(x)
- if (x < 1)
- fun_l22_n646(x)
- else
- fun_l22_n145(x)
- end
-end
-
-def fun_l21_n508(x)
- if (x < 1)
- fun_l22_n608(x)
- else
- fun_l22_n320(x)
- end
-end
-
-def fun_l21_n509(x)
- if (x < 1)
- fun_l22_n624(x)
- else
- fun_l22_n984(x)
- end
-end
-
-def fun_l21_n510(x)
- if (x < 1)
- fun_l22_n454(x)
- else
- fun_l22_n988(x)
- end
-end
-
-def fun_l21_n511(x)
- if (x < 1)
- fun_l22_n593(x)
- else
- fun_l22_n796(x)
- end
-end
-
-def fun_l21_n512(x)
- if (x < 1)
- fun_l22_n922(x)
- else
- fun_l22_n5(x)
- end
-end
-
-def fun_l21_n513(x)
- if (x < 1)
- fun_l22_n0(x)
- else
- fun_l22_n338(x)
- end
-end
-
-def fun_l21_n514(x)
- if (x < 1)
- fun_l22_n454(x)
- else
- fun_l22_n743(x)
- end
-end
-
-def fun_l21_n515(x)
- if (x < 1)
- fun_l22_n215(x)
- else
- fun_l22_n689(x)
- end
-end
-
-def fun_l21_n516(x)
- if (x < 1)
- fun_l22_n148(x)
- else
- fun_l22_n850(x)
- end
-end
-
-def fun_l21_n517(x)
- if (x < 1)
- fun_l22_n466(x)
- else
- fun_l22_n529(x)
- end
-end
-
-def fun_l21_n518(x)
- if (x < 1)
- fun_l22_n967(x)
- else
- fun_l22_n790(x)
- end
-end
-
-def fun_l21_n519(x)
- if (x < 1)
- fun_l22_n97(x)
- else
- fun_l22_n461(x)
- end
-end
-
-def fun_l21_n520(x)
- if (x < 1)
- fun_l22_n106(x)
- else
- fun_l22_n41(x)
- end
-end
-
-def fun_l21_n521(x)
- if (x < 1)
- fun_l22_n561(x)
- else
- fun_l22_n428(x)
- end
-end
-
-def fun_l21_n522(x)
- if (x < 1)
- fun_l22_n816(x)
- else
- fun_l22_n42(x)
- end
-end
-
-def fun_l21_n523(x)
- if (x < 1)
- fun_l22_n229(x)
- else
- fun_l22_n720(x)
- end
-end
-
-def fun_l21_n524(x)
- if (x < 1)
- fun_l22_n341(x)
- else
- fun_l22_n875(x)
- end
-end
-
-def fun_l21_n525(x)
- if (x < 1)
- fun_l22_n23(x)
- else
- fun_l22_n227(x)
- end
-end
-
-def fun_l21_n526(x)
- if (x < 1)
- fun_l22_n230(x)
- else
- fun_l22_n655(x)
- end
-end
-
-def fun_l21_n527(x)
- if (x < 1)
- fun_l22_n19(x)
- else
- fun_l22_n957(x)
- end
-end
-
-def fun_l21_n528(x)
- if (x < 1)
- fun_l22_n680(x)
- else
- fun_l22_n142(x)
- end
-end
-
-def fun_l21_n529(x)
- if (x < 1)
- fun_l22_n994(x)
- else
- fun_l22_n674(x)
- end
-end
-
-def fun_l21_n530(x)
- if (x < 1)
- fun_l22_n762(x)
- else
- fun_l22_n10(x)
- end
-end
-
-def fun_l21_n531(x)
- if (x < 1)
- fun_l22_n75(x)
- else
- fun_l22_n43(x)
- end
-end
-
-def fun_l21_n532(x)
- if (x < 1)
- fun_l22_n481(x)
- else
- fun_l22_n766(x)
- end
-end
-
-def fun_l21_n533(x)
- if (x < 1)
- fun_l22_n261(x)
- else
- fun_l22_n256(x)
- end
-end
-
-def fun_l21_n534(x)
- if (x < 1)
- fun_l22_n316(x)
- else
- fun_l22_n547(x)
- end
-end
-
-def fun_l21_n535(x)
- if (x < 1)
- fun_l22_n304(x)
- else
- fun_l22_n392(x)
- end
-end
-
-def fun_l21_n536(x)
- if (x < 1)
- fun_l22_n83(x)
- else
- fun_l22_n789(x)
- end
-end
-
-def fun_l21_n537(x)
- if (x < 1)
- fun_l22_n434(x)
- else
- fun_l22_n783(x)
- end
-end
-
-def fun_l21_n538(x)
- if (x < 1)
- fun_l22_n445(x)
- else
- fun_l22_n960(x)
- end
-end
-
-def fun_l21_n539(x)
- if (x < 1)
- fun_l22_n398(x)
- else
- fun_l22_n529(x)
- end
-end
-
-def fun_l21_n540(x)
- if (x < 1)
- fun_l22_n413(x)
- else
- fun_l22_n684(x)
- end
-end
-
-def fun_l21_n541(x)
- if (x < 1)
- fun_l22_n812(x)
- else
- fun_l22_n257(x)
- end
-end
-
-def fun_l21_n542(x)
- if (x < 1)
- fun_l22_n186(x)
- else
- fun_l22_n35(x)
- end
-end
-
-def fun_l21_n543(x)
- if (x < 1)
- fun_l22_n489(x)
- else
- fun_l22_n93(x)
- end
-end
-
-def fun_l21_n544(x)
- if (x < 1)
- fun_l22_n105(x)
- else
- fun_l22_n282(x)
- end
-end
-
-def fun_l21_n545(x)
- if (x < 1)
- fun_l22_n586(x)
- else
- fun_l22_n614(x)
- end
-end
-
-def fun_l21_n546(x)
- if (x < 1)
- fun_l22_n75(x)
- else
- fun_l22_n589(x)
- end
-end
-
-def fun_l21_n547(x)
- if (x < 1)
- fun_l22_n128(x)
- else
- fun_l22_n552(x)
- end
-end
-
-def fun_l21_n548(x)
- if (x < 1)
- fun_l22_n961(x)
- else
- fun_l22_n209(x)
- end
-end
-
-def fun_l21_n549(x)
- if (x < 1)
- fun_l22_n727(x)
- else
- fun_l22_n615(x)
- end
-end
-
-def fun_l21_n550(x)
- if (x < 1)
- fun_l22_n45(x)
- else
- fun_l22_n161(x)
- end
-end
-
-def fun_l21_n551(x)
- if (x < 1)
- fun_l22_n480(x)
- else
- fun_l22_n852(x)
- end
-end
-
-def fun_l21_n552(x)
- if (x < 1)
- fun_l22_n383(x)
- else
- fun_l22_n698(x)
- end
-end
-
-def fun_l21_n553(x)
- if (x < 1)
- fun_l22_n805(x)
- else
- fun_l22_n309(x)
- end
-end
-
-def fun_l21_n554(x)
- if (x < 1)
- fun_l22_n635(x)
- else
- fun_l22_n821(x)
- end
-end
-
-def fun_l21_n555(x)
- if (x < 1)
- fun_l22_n616(x)
- else
- fun_l22_n52(x)
- end
-end
-
-def fun_l21_n556(x)
- if (x < 1)
- fun_l22_n283(x)
- else
- fun_l22_n514(x)
- end
-end
-
-def fun_l21_n557(x)
- if (x < 1)
- fun_l22_n6(x)
- else
- fun_l22_n174(x)
- end
-end
-
-def fun_l21_n558(x)
- if (x < 1)
- fun_l22_n344(x)
- else
- fun_l22_n932(x)
- end
-end
-
-def fun_l21_n559(x)
- if (x < 1)
- fun_l22_n287(x)
- else
- fun_l22_n98(x)
- end
-end
-
-def fun_l21_n560(x)
- if (x < 1)
- fun_l22_n510(x)
- else
- fun_l22_n672(x)
- end
-end
-
-def fun_l21_n561(x)
- if (x < 1)
- fun_l22_n951(x)
- else
- fun_l22_n984(x)
- end
-end
-
-def fun_l21_n562(x)
- if (x < 1)
- fun_l22_n133(x)
- else
- fun_l22_n207(x)
- end
-end
-
-def fun_l21_n563(x)
- if (x < 1)
- fun_l22_n780(x)
- else
- fun_l22_n402(x)
- end
-end
-
-def fun_l21_n564(x)
- if (x < 1)
- fun_l22_n783(x)
- else
- fun_l22_n189(x)
- end
-end
-
-def fun_l21_n565(x)
- if (x < 1)
- fun_l22_n736(x)
- else
- fun_l22_n590(x)
- end
-end
-
-def fun_l21_n566(x)
- if (x < 1)
- fun_l22_n724(x)
- else
- fun_l22_n69(x)
- end
-end
-
-def fun_l21_n567(x)
- if (x < 1)
- fun_l22_n521(x)
- else
- fun_l22_n242(x)
- end
-end
-
-def fun_l21_n568(x)
- if (x < 1)
- fun_l22_n440(x)
- else
- fun_l22_n156(x)
- end
-end
-
-def fun_l21_n569(x)
- if (x < 1)
- fun_l22_n776(x)
- else
- fun_l22_n456(x)
- end
-end
-
-def fun_l21_n570(x)
- if (x < 1)
- fun_l22_n336(x)
- else
- fun_l22_n615(x)
- end
-end
-
-def fun_l21_n571(x)
- if (x < 1)
- fun_l22_n775(x)
- else
- fun_l22_n585(x)
- end
-end
-
-def fun_l21_n572(x)
- if (x < 1)
- fun_l22_n466(x)
- else
- fun_l22_n559(x)
- end
-end
-
-def fun_l21_n573(x)
- if (x < 1)
- fun_l22_n609(x)
- else
- fun_l22_n177(x)
- end
-end
-
-def fun_l21_n574(x)
- if (x < 1)
- fun_l22_n310(x)
- else
- fun_l22_n190(x)
- end
-end
-
-def fun_l21_n575(x)
- if (x < 1)
- fun_l22_n861(x)
- else
- fun_l22_n289(x)
- end
-end
-
-def fun_l21_n576(x)
- if (x < 1)
- fun_l22_n978(x)
- else
- fun_l22_n460(x)
- end
-end
-
-def fun_l21_n577(x)
- if (x < 1)
- fun_l22_n440(x)
- else
- fun_l22_n816(x)
- end
-end
-
-def fun_l21_n578(x)
- if (x < 1)
- fun_l22_n522(x)
- else
- fun_l22_n214(x)
- end
-end
-
-def fun_l21_n579(x)
- if (x < 1)
- fun_l22_n38(x)
- else
- fun_l22_n166(x)
- end
-end
-
-def fun_l21_n580(x)
- if (x < 1)
- fun_l22_n114(x)
- else
- fun_l22_n314(x)
- end
-end
-
-def fun_l21_n581(x)
- if (x < 1)
- fun_l22_n233(x)
- else
- fun_l22_n840(x)
- end
-end
-
-def fun_l21_n582(x)
- if (x < 1)
- fun_l22_n867(x)
- else
- fun_l22_n213(x)
- end
-end
-
-def fun_l21_n583(x)
- if (x < 1)
- fun_l22_n742(x)
- else
- fun_l22_n798(x)
- end
-end
-
-def fun_l21_n584(x)
- if (x < 1)
- fun_l22_n772(x)
- else
- fun_l22_n400(x)
- end
-end
-
-def fun_l21_n585(x)
- if (x < 1)
- fun_l22_n564(x)
- else
- fun_l22_n70(x)
- end
-end
-
-def fun_l21_n586(x)
- if (x < 1)
- fun_l22_n836(x)
- else
- fun_l22_n188(x)
- end
-end
-
-def fun_l21_n587(x)
- if (x < 1)
- fun_l22_n624(x)
- else
- fun_l22_n923(x)
- end
-end
-
-def fun_l21_n588(x)
- if (x < 1)
- fun_l22_n265(x)
- else
- fun_l22_n733(x)
- end
-end
-
-def fun_l21_n589(x)
- if (x < 1)
- fun_l22_n545(x)
- else
- fun_l22_n399(x)
- end
-end
-
-def fun_l21_n590(x)
- if (x < 1)
- fun_l22_n22(x)
- else
- fun_l22_n266(x)
- end
-end
-
-def fun_l21_n591(x)
- if (x < 1)
- fun_l22_n504(x)
- else
- fun_l22_n798(x)
- end
-end
-
-def fun_l21_n592(x)
- if (x < 1)
- fun_l22_n979(x)
- else
- fun_l22_n712(x)
- end
-end
-
-def fun_l21_n593(x)
- if (x < 1)
- fun_l22_n343(x)
- else
- fun_l22_n54(x)
- end
-end
-
-def fun_l21_n594(x)
- if (x < 1)
- fun_l22_n893(x)
- else
- fun_l22_n465(x)
- end
-end
-
-def fun_l21_n595(x)
- if (x < 1)
- fun_l22_n28(x)
- else
- fun_l22_n162(x)
- end
-end
-
-def fun_l21_n596(x)
- if (x < 1)
- fun_l22_n609(x)
- else
- fun_l22_n882(x)
- end
-end
-
-def fun_l21_n597(x)
- if (x < 1)
- fun_l22_n575(x)
- else
- fun_l22_n951(x)
- end
-end
-
-def fun_l21_n598(x)
- if (x < 1)
- fun_l22_n794(x)
- else
- fun_l22_n767(x)
- end
-end
-
-def fun_l21_n599(x)
- if (x < 1)
- fun_l22_n605(x)
- else
- fun_l22_n141(x)
- end
-end
-
-def fun_l21_n600(x)
- if (x < 1)
- fun_l22_n54(x)
- else
- fun_l22_n958(x)
- end
-end
-
-def fun_l21_n601(x)
- if (x < 1)
- fun_l22_n506(x)
- else
- fun_l22_n269(x)
- end
-end
-
-def fun_l21_n602(x)
- if (x < 1)
- fun_l22_n401(x)
- else
- fun_l22_n104(x)
- end
-end
-
-def fun_l21_n603(x)
- if (x < 1)
- fun_l22_n379(x)
- else
- fun_l22_n489(x)
- end
-end
-
-def fun_l21_n604(x)
- if (x < 1)
- fun_l22_n673(x)
- else
- fun_l22_n502(x)
- end
-end
-
-def fun_l21_n605(x)
- if (x < 1)
- fun_l22_n355(x)
- else
- fun_l22_n483(x)
- end
-end
-
-def fun_l21_n606(x)
- if (x < 1)
- fun_l22_n763(x)
- else
- fun_l22_n160(x)
- end
-end
-
-def fun_l21_n607(x)
- if (x < 1)
- fun_l22_n802(x)
- else
- fun_l22_n414(x)
- end
-end
-
-def fun_l21_n608(x)
- if (x < 1)
- fun_l22_n401(x)
- else
- fun_l22_n987(x)
- end
-end
-
-def fun_l21_n609(x)
- if (x < 1)
- fun_l22_n741(x)
- else
- fun_l22_n511(x)
- end
-end
-
-def fun_l21_n610(x)
- if (x < 1)
- fun_l22_n883(x)
- else
- fun_l22_n73(x)
- end
-end
-
-def fun_l21_n611(x)
- if (x < 1)
- fun_l22_n105(x)
- else
- fun_l22_n612(x)
- end
-end
-
-def fun_l21_n612(x)
- if (x < 1)
- fun_l22_n911(x)
- else
- fun_l22_n764(x)
- end
-end
-
-def fun_l21_n613(x)
- if (x < 1)
- fun_l22_n818(x)
- else
- fun_l22_n43(x)
- end
-end
-
-def fun_l21_n614(x)
- if (x < 1)
- fun_l22_n388(x)
- else
- fun_l22_n99(x)
- end
-end
-
-def fun_l21_n615(x)
- if (x < 1)
- fun_l22_n657(x)
- else
- fun_l22_n231(x)
- end
-end
-
-def fun_l21_n616(x)
- if (x < 1)
- fun_l22_n937(x)
- else
- fun_l22_n357(x)
- end
-end
-
-def fun_l21_n617(x)
- if (x < 1)
- fun_l22_n691(x)
- else
- fun_l22_n952(x)
- end
-end
-
-def fun_l21_n618(x)
- if (x < 1)
- fun_l22_n712(x)
- else
- fun_l22_n84(x)
- end
-end
-
-def fun_l21_n619(x)
- if (x < 1)
- fun_l22_n483(x)
- else
- fun_l22_n506(x)
- end
-end
-
-def fun_l21_n620(x)
- if (x < 1)
- fun_l22_n804(x)
- else
- fun_l22_n813(x)
- end
-end
-
-def fun_l21_n621(x)
- if (x < 1)
- fun_l22_n280(x)
- else
- fun_l22_n626(x)
- end
-end
-
-def fun_l21_n622(x)
- if (x < 1)
- fun_l22_n979(x)
- else
- fun_l22_n508(x)
- end
-end
-
-def fun_l21_n623(x)
- if (x < 1)
- fun_l22_n482(x)
- else
- fun_l22_n120(x)
- end
-end
-
-def fun_l21_n624(x)
- if (x < 1)
- fun_l22_n99(x)
- else
- fun_l22_n975(x)
- end
-end
-
-def fun_l21_n625(x)
- if (x < 1)
- fun_l22_n540(x)
- else
- fun_l22_n68(x)
- end
-end
-
-def fun_l21_n626(x)
- if (x < 1)
- fun_l22_n818(x)
- else
- fun_l22_n591(x)
- end
-end
-
-def fun_l21_n627(x)
- if (x < 1)
- fun_l22_n37(x)
- else
- fun_l22_n984(x)
- end
-end
-
-def fun_l21_n628(x)
- if (x < 1)
- fun_l22_n547(x)
- else
- fun_l22_n482(x)
- end
-end
-
-def fun_l21_n629(x)
- if (x < 1)
- fun_l22_n851(x)
- else
- fun_l22_n335(x)
- end
-end
-
-def fun_l21_n630(x)
- if (x < 1)
- fun_l22_n474(x)
- else
- fun_l22_n402(x)
- end
-end
-
-def fun_l21_n631(x)
- if (x < 1)
- fun_l22_n433(x)
- else
- fun_l22_n298(x)
- end
-end
-
-def fun_l21_n632(x)
- if (x < 1)
- fun_l22_n376(x)
- else
- fun_l22_n898(x)
- end
-end
-
-def fun_l21_n633(x)
- if (x < 1)
- fun_l22_n456(x)
- else
- fun_l22_n753(x)
- end
-end
-
-def fun_l21_n634(x)
- if (x < 1)
- fun_l22_n888(x)
- else
- fun_l22_n394(x)
- end
-end
-
-def fun_l21_n635(x)
- if (x < 1)
- fun_l22_n555(x)
- else
- fun_l22_n69(x)
- end
-end
-
-def fun_l21_n636(x)
- if (x < 1)
- fun_l22_n572(x)
- else
- fun_l22_n822(x)
- end
-end
-
-def fun_l21_n637(x)
- if (x < 1)
- fun_l22_n645(x)
- else
- fun_l22_n968(x)
- end
-end
-
-def fun_l21_n638(x)
- if (x < 1)
- fun_l22_n406(x)
- else
- fun_l22_n318(x)
- end
-end
-
-def fun_l21_n639(x)
- if (x < 1)
- fun_l22_n554(x)
- else
- fun_l22_n591(x)
- end
-end
-
-def fun_l21_n640(x)
- if (x < 1)
- fun_l22_n478(x)
- else
- fun_l22_n962(x)
- end
-end
-
-def fun_l21_n641(x)
- if (x < 1)
- fun_l22_n688(x)
- else
- fun_l22_n305(x)
- end
-end
-
-def fun_l21_n642(x)
- if (x < 1)
- fun_l22_n767(x)
- else
- fun_l22_n156(x)
- end
-end
-
-def fun_l21_n643(x)
- if (x < 1)
- fun_l22_n264(x)
- else
- fun_l22_n489(x)
- end
-end
-
-def fun_l21_n644(x)
- if (x < 1)
- fun_l22_n678(x)
- else
- fun_l22_n196(x)
- end
-end
-
-def fun_l21_n645(x)
- if (x < 1)
- fun_l22_n849(x)
- else
- fun_l22_n488(x)
- end
-end
-
-def fun_l21_n646(x)
- if (x < 1)
- fun_l22_n837(x)
- else
- fun_l22_n274(x)
- end
-end
-
-def fun_l21_n647(x)
- if (x < 1)
- fun_l22_n58(x)
- else
- fun_l22_n694(x)
- end
-end
-
-def fun_l21_n648(x)
- if (x < 1)
- fun_l22_n878(x)
- else
- fun_l22_n356(x)
- end
-end
-
-def fun_l21_n649(x)
- if (x < 1)
- fun_l22_n945(x)
- else
- fun_l22_n28(x)
- end
-end
-
-def fun_l21_n650(x)
- if (x < 1)
- fun_l22_n10(x)
- else
- fun_l22_n330(x)
- end
-end
-
-def fun_l21_n651(x)
- if (x < 1)
- fun_l22_n461(x)
- else
- fun_l22_n872(x)
- end
-end
-
-def fun_l21_n652(x)
- if (x < 1)
- fun_l22_n860(x)
- else
- fun_l22_n358(x)
- end
-end
-
-def fun_l21_n653(x)
- if (x < 1)
- fun_l22_n11(x)
- else
- fun_l22_n596(x)
- end
-end
-
-def fun_l21_n654(x)
- if (x < 1)
- fun_l22_n340(x)
- else
- fun_l22_n335(x)
- end
-end
-
-def fun_l21_n655(x)
- if (x < 1)
- fun_l22_n259(x)
- else
- fun_l22_n642(x)
- end
-end
-
-def fun_l21_n656(x)
- if (x < 1)
- fun_l22_n78(x)
- else
- fun_l22_n442(x)
- end
-end
-
-def fun_l21_n657(x)
- if (x < 1)
- fun_l22_n151(x)
- else
- fun_l22_n122(x)
- end
-end
-
-def fun_l21_n658(x)
- if (x < 1)
- fun_l22_n440(x)
- else
- fun_l22_n940(x)
- end
-end
-
-def fun_l21_n659(x)
- if (x < 1)
- fun_l22_n237(x)
- else
- fun_l22_n899(x)
- end
-end
-
-def fun_l21_n660(x)
- if (x < 1)
- fun_l22_n906(x)
- else
- fun_l22_n789(x)
- end
-end
-
-def fun_l21_n661(x)
- if (x < 1)
- fun_l22_n812(x)
- else
- fun_l22_n492(x)
- end
-end
-
-def fun_l21_n662(x)
- if (x < 1)
- fun_l22_n241(x)
- else
- fun_l22_n732(x)
- end
-end
-
-def fun_l21_n663(x)
- if (x < 1)
- fun_l22_n557(x)
- else
- fun_l22_n570(x)
- end
-end
-
-def fun_l21_n664(x)
- if (x < 1)
- fun_l22_n928(x)
- else
- fun_l22_n943(x)
- end
-end
-
-def fun_l21_n665(x)
- if (x < 1)
- fun_l22_n400(x)
- else
- fun_l22_n914(x)
- end
-end
-
-def fun_l21_n666(x)
- if (x < 1)
- fun_l22_n368(x)
- else
- fun_l22_n434(x)
- end
-end
-
-def fun_l21_n667(x)
- if (x < 1)
- fun_l22_n827(x)
- else
- fun_l22_n213(x)
- end
-end
-
-def fun_l21_n668(x)
- if (x < 1)
- fun_l22_n729(x)
- else
- fun_l22_n273(x)
- end
-end
-
-def fun_l21_n669(x)
- if (x < 1)
- fun_l22_n649(x)
- else
- fun_l22_n29(x)
- end
-end
-
-def fun_l21_n670(x)
- if (x < 1)
- fun_l22_n878(x)
- else
- fun_l22_n794(x)
- end
-end
-
-def fun_l21_n671(x)
- if (x < 1)
- fun_l22_n474(x)
- else
- fun_l22_n960(x)
- end
-end
-
-def fun_l21_n672(x)
- if (x < 1)
- fun_l22_n250(x)
- else
- fun_l22_n935(x)
- end
-end
-
-def fun_l21_n673(x)
- if (x < 1)
- fun_l22_n766(x)
- else
- fun_l22_n325(x)
- end
-end
-
-def fun_l21_n674(x)
- if (x < 1)
- fun_l22_n64(x)
- else
- fun_l22_n334(x)
- end
-end
-
-def fun_l21_n675(x)
- if (x < 1)
- fun_l22_n737(x)
- else
- fun_l22_n983(x)
- end
-end
-
-def fun_l21_n676(x)
- if (x < 1)
- fun_l22_n506(x)
- else
- fun_l22_n393(x)
- end
-end
-
-def fun_l21_n677(x)
- if (x < 1)
- fun_l22_n348(x)
- else
- fun_l22_n558(x)
- end
-end
-
-def fun_l21_n678(x)
- if (x < 1)
- fun_l22_n68(x)
- else
- fun_l22_n483(x)
- end
-end
-
-def fun_l21_n679(x)
- if (x < 1)
- fun_l22_n816(x)
- else
- fun_l22_n959(x)
- end
-end
-
-def fun_l21_n680(x)
- if (x < 1)
- fun_l22_n128(x)
- else
- fun_l22_n393(x)
- end
-end
-
-def fun_l21_n681(x)
- if (x < 1)
- fun_l22_n738(x)
- else
- fun_l22_n609(x)
- end
-end
-
-def fun_l21_n682(x)
- if (x < 1)
- fun_l22_n113(x)
- else
- fun_l22_n664(x)
- end
-end
-
-def fun_l21_n683(x)
- if (x < 1)
- fun_l22_n904(x)
- else
- fun_l22_n699(x)
- end
-end
-
-def fun_l21_n684(x)
- if (x < 1)
- fun_l22_n759(x)
- else
- fun_l22_n277(x)
- end
-end
-
-def fun_l21_n685(x)
- if (x < 1)
- fun_l22_n359(x)
- else
- fun_l22_n961(x)
- end
-end
-
-def fun_l21_n686(x)
- if (x < 1)
- fun_l22_n269(x)
- else
- fun_l22_n66(x)
- end
-end
-
-def fun_l21_n687(x)
- if (x < 1)
- fun_l22_n510(x)
- else
- fun_l22_n935(x)
- end
-end
-
-def fun_l21_n688(x)
- if (x < 1)
- fun_l22_n127(x)
- else
- fun_l22_n441(x)
- end
-end
-
-def fun_l21_n689(x)
- if (x < 1)
- fun_l22_n515(x)
- else
- fun_l22_n184(x)
- end
-end
-
-def fun_l21_n690(x)
- if (x < 1)
- fun_l22_n339(x)
- else
- fun_l22_n121(x)
- end
-end
-
-def fun_l21_n691(x)
- if (x < 1)
- fun_l22_n74(x)
- else
- fun_l22_n172(x)
- end
-end
-
-def fun_l21_n692(x)
- if (x < 1)
- fun_l22_n156(x)
- else
- fun_l22_n829(x)
- end
-end
-
-def fun_l21_n693(x)
- if (x < 1)
- fun_l22_n761(x)
- else
- fun_l22_n322(x)
- end
-end
-
-def fun_l21_n694(x)
- if (x < 1)
- fun_l22_n168(x)
- else
- fun_l22_n789(x)
- end
-end
-
-def fun_l21_n695(x)
- if (x < 1)
- fun_l22_n896(x)
- else
- fun_l22_n275(x)
- end
-end
-
-def fun_l21_n696(x)
- if (x < 1)
- fun_l22_n283(x)
- else
- fun_l22_n195(x)
- end
-end
-
-def fun_l21_n697(x)
- if (x < 1)
- fun_l22_n353(x)
- else
- fun_l22_n664(x)
- end
-end
-
-def fun_l21_n698(x)
- if (x < 1)
- fun_l22_n801(x)
- else
- fun_l22_n544(x)
- end
-end
-
-def fun_l21_n699(x)
- if (x < 1)
- fun_l22_n729(x)
- else
- fun_l22_n323(x)
- end
-end
-
-def fun_l21_n700(x)
- if (x < 1)
- fun_l22_n47(x)
- else
- fun_l22_n340(x)
- end
-end
-
-def fun_l21_n701(x)
- if (x < 1)
- fun_l22_n132(x)
- else
- fun_l22_n968(x)
- end
-end
-
-def fun_l21_n702(x)
- if (x < 1)
- fun_l22_n556(x)
- else
- fun_l22_n23(x)
- end
-end
-
-def fun_l21_n703(x)
- if (x < 1)
- fun_l22_n274(x)
- else
- fun_l22_n276(x)
- end
-end
-
-def fun_l21_n704(x)
- if (x < 1)
- fun_l22_n152(x)
- else
- fun_l22_n244(x)
- end
-end
-
-def fun_l21_n705(x)
- if (x < 1)
- fun_l22_n508(x)
- else
- fun_l22_n350(x)
- end
-end
-
-def fun_l21_n706(x)
- if (x < 1)
- fun_l22_n188(x)
- else
- fun_l22_n60(x)
- end
-end
-
-def fun_l21_n707(x)
- if (x < 1)
- fun_l22_n970(x)
- else
- fun_l22_n55(x)
- end
-end
-
-def fun_l21_n708(x)
- if (x < 1)
- fun_l22_n840(x)
- else
- fun_l22_n990(x)
- end
-end
-
-def fun_l21_n709(x)
- if (x < 1)
- fun_l22_n466(x)
- else
- fun_l22_n25(x)
- end
-end
-
-def fun_l21_n710(x)
- if (x < 1)
- fun_l22_n741(x)
- else
- fun_l22_n481(x)
- end
-end
-
-def fun_l21_n711(x)
- if (x < 1)
- fun_l22_n859(x)
- else
- fun_l22_n58(x)
- end
-end
-
-def fun_l21_n712(x)
- if (x < 1)
- fun_l22_n282(x)
- else
- fun_l22_n807(x)
- end
-end
-
-def fun_l21_n713(x)
- if (x < 1)
- fun_l22_n387(x)
- else
- fun_l22_n235(x)
- end
-end
-
-def fun_l21_n714(x)
- if (x < 1)
- fun_l22_n558(x)
- else
- fun_l22_n494(x)
- end
-end
-
-def fun_l21_n715(x)
- if (x < 1)
- fun_l22_n613(x)
- else
- fun_l22_n194(x)
- end
-end
-
-def fun_l21_n716(x)
- if (x < 1)
- fun_l22_n120(x)
- else
- fun_l22_n154(x)
- end
-end
-
-def fun_l21_n717(x)
- if (x < 1)
- fun_l22_n501(x)
- else
- fun_l22_n540(x)
- end
-end
-
-def fun_l21_n718(x)
- if (x < 1)
- fun_l22_n283(x)
- else
- fun_l22_n102(x)
- end
-end
-
-def fun_l21_n719(x)
- if (x < 1)
- fun_l22_n569(x)
- else
- fun_l22_n407(x)
- end
-end
-
-def fun_l21_n720(x)
- if (x < 1)
- fun_l22_n86(x)
- else
- fun_l22_n99(x)
- end
-end
-
-def fun_l21_n721(x)
- if (x < 1)
- fun_l22_n872(x)
- else
- fun_l22_n331(x)
- end
-end
-
-def fun_l21_n722(x)
- if (x < 1)
- fun_l22_n772(x)
- else
- fun_l22_n57(x)
- end
-end
-
-def fun_l21_n723(x)
- if (x < 1)
- fun_l22_n396(x)
- else
- fun_l22_n534(x)
- end
-end
-
-def fun_l21_n724(x)
- if (x < 1)
- fun_l22_n928(x)
- else
- fun_l22_n576(x)
- end
-end
-
-def fun_l21_n725(x)
- if (x < 1)
- fun_l22_n650(x)
- else
- fun_l22_n790(x)
- end
-end
-
-def fun_l21_n726(x)
- if (x < 1)
- fun_l22_n173(x)
- else
- fun_l22_n480(x)
- end
-end
-
-def fun_l21_n727(x)
- if (x < 1)
- fun_l22_n222(x)
- else
- fun_l22_n258(x)
- end
-end
-
-def fun_l21_n728(x)
- if (x < 1)
- fun_l22_n797(x)
- else
- fun_l22_n793(x)
- end
-end
-
-def fun_l21_n729(x)
- if (x < 1)
- fun_l22_n260(x)
- else
- fun_l22_n737(x)
- end
-end
-
-def fun_l21_n730(x)
- if (x < 1)
- fun_l22_n419(x)
- else
- fun_l22_n974(x)
- end
-end
-
-def fun_l21_n731(x)
- if (x < 1)
- fun_l22_n837(x)
- else
- fun_l22_n628(x)
- end
-end
-
-def fun_l21_n732(x)
- if (x < 1)
- fun_l22_n753(x)
- else
- fun_l22_n380(x)
- end
-end
-
-def fun_l21_n733(x)
- if (x < 1)
- fun_l22_n420(x)
- else
- fun_l22_n890(x)
- end
-end
-
-def fun_l21_n734(x)
- if (x < 1)
- fun_l22_n993(x)
- else
- fun_l22_n172(x)
- end
-end
-
-def fun_l21_n735(x)
- if (x < 1)
- fun_l22_n123(x)
- else
- fun_l22_n290(x)
- end
-end
-
-def fun_l21_n736(x)
- if (x < 1)
- fun_l22_n805(x)
- else
- fun_l22_n923(x)
- end
-end
-
-def fun_l21_n737(x)
- if (x < 1)
- fun_l22_n124(x)
- else
- fun_l22_n25(x)
- end
-end
-
-def fun_l21_n738(x)
- if (x < 1)
- fun_l22_n192(x)
- else
- fun_l22_n258(x)
- end
-end
-
-def fun_l21_n739(x)
- if (x < 1)
- fun_l22_n243(x)
- else
- fun_l22_n512(x)
- end
-end
-
-def fun_l21_n740(x)
- if (x < 1)
- fun_l22_n577(x)
- else
- fun_l22_n307(x)
- end
-end
-
-def fun_l21_n741(x)
- if (x < 1)
- fun_l22_n422(x)
- else
- fun_l22_n51(x)
- end
-end
-
-def fun_l21_n742(x)
- if (x < 1)
- fun_l22_n247(x)
- else
- fun_l22_n453(x)
- end
-end
-
-def fun_l21_n743(x)
- if (x < 1)
- fun_l22_n369(x)
- else
- fun_l22_n564(x)
- end
-end
-
-def fun_l21_n744(x)
- if (x < 1)
- fun_l22_n815(x)
- else
- fun_l22_n894(x)
- end
-end
-
-def fun_l21_n745(x)
- if (x < 1)
- fun_l22_n526(x)
- else
- fun_l22_n555(x)
- end
-end
-
-def fun_l21_n746(x)
- if (x < 1)
- fun_l22_n281(x)
- else
- fun_l22_n121(x)
- end
-end
-
-def fun_l21_n747(x)
- if (x < 1)
- fun_l22_n141(x)
- else
- fun_l22_n335(x)
- end
-end
-
-def fun_l21_n748(x)
- if (x < 1)
- fun_l22_n73(x)
- else
- fun_l22_n241(x)
- end
-end
-
-def fun_l21_n749(x)
- if (x < 1)
- fun_l22_n201(x)
- else
- fun_l22_n650(x)
- end
-end
-
-def fun_l21_n750(x)
- if (x < 1)
- fun_l22_n569(x)
- else
- fun_l22_n231(x)
- end
-end
-
-def fun_l21_n751(x)
- if (x < 1)
- fun_l22_n23(x)
- else
- fun_l22_n315(x)
- end
-end
-
-def fun_l21_n752(x)
- if (x < 1)
- fun_l22_n951(x)
- else
- fun_l22_n697(x)
- end
-end
-
-def fun_l21_n753(x)
- if (x < 1)
- fun_l22_n734(x)
- else
- fun_l22_n991(x)
- end
-end
-
-def fun_l21_n754(x)
- if (x < 1)
- fun_l22_n557(x)
- else
- fun_l22_n85(x)
- end
-end
-
-def fun_l21_n755(x)
- if (x < 1)
- fun_l22_n213(x)
- else
- fun_l22_n918(x)
- end
-end
-
-def fun_l21_n756(x)
- if (x < 1)
- fun_l22_n995(x)
- else
- fun_l22_n134(x)
- end
-end
-
-def fun_l21_n757(x)
- if (x < 1)
- fun_l22_n173(x)
- else
- fun_l22_n764(x)
- end
-end
-
-def fun_l21_n758(x)
- if (x < 1)
- fun_l22_n503(x)
- else
- fun_l22_n370(x)
- end
-end
-
-def fun_l21_n759(x)
- if (x < 1)
- fun_l22_n922(x)
- else
- fun_l22_n819(x)
- end
-end
-
-def fun_l21_n760(x)
- if (x < 1)
- fun_l22_n901(x)
- else
- fun_l22_n252(x)
- end
-end
-
-def fun_l21_n761(x)
- if (x < 1)
- fun_l22_n928(x)
- else
- fun_l22_n958(x)
- end
-end
-
-def fun_l21_n762(x)
- if (x < 1)
- fun_l22_n402(x)
- else
- fun_l22_n756(x)
- end
-end
-
-def fun_l21_n763(x)
- if (x < 1)
- fun_l22_n223(x)
- else
- fun_l22_n781(x)
- end
-end
-
-def fun_l21_n764(x)
- if (x < 1)
- fun_l22_n692(x)
- else
- fun_l22_n893(x)
- end
-end
-
-def fun_l21_n765(x)
- if (x < 1)
- fun_l22_n308(x)
- else
- fun_l22_n485(x)
- end
-end
-
-def fun_l21_n766(x)
- if (x < 1)
- fun_l22_n858(x)
- else
- fun_l22_n316(x)
- end
-end
-
-def fun_l21_n767(x)
- if (x < 1)
- fun_l22_n546(x)
- else
- fun_l22_n793(x)
- end
-end
-
-def fun_l21_n768(x)
- if (x < 1)
- fun_l22_n75(x)
- else
- fun_l22_n999(x)
- end
-end
-
-def fun_l21_n769(x)
- if (x < 1)
- fun_l22_n758(x)
- else
- fun_l22_n149(x)
- end
-end
-
-def fun_l21_n770(x)
- if (x < 1)
- fun_l22_n801(x)
- else
- fun_l22_n594(x)
- end
-end
-
-def fun_l21_n771(x)
- if (x < 1)
- fun_l22_n544(x)
- else
- fun_l22_n477(x)
- end
-end
-
-def fun_l21_n772(x)
- if (x < 1)
- fun_l22_n118(x)
- else
- fun_l22_n406(x)
- end
-end
-
-def fun_l21_n773(x)
- if (x < 1)
- fun_l22_n741(x)
- else
- fun_l22_n539(x)
- end
-end
-
-def fun_l21_n774(x)
- if (x < 1)
- fun_l22_n99(x)
- else
- fun_l22_n636(x)
- end
-end
-
-def fun_l21_n775(x)
- if (x < 1)
- fun_l22_n54(x)
- else
- fun_l22_n139(x)
- end
-end
-
-def fun_l21_n776(x)
- if (x < 1)
- fun_l22_n990(x)
- else
- fun_l22_n518(x)
- end
-end
-
-def fun_l21_n777(x)
- if (x < 1)
- fun_l22_n172(x)
- else
- fun_l22_n432(x)
- end
-end
-
-def fun_l21_n778(x)
- if (x < 1)
- fun_l22_n302(x)
- else
- fun_l22_n406(x)
- end
-end
-
-def fun_l21_n779(x)
- if (x < 1)
- fun_l22_n199(x)
- else
- fun_l22_n198(x)
- end
-end
-
-def fun_l21_n780(x)
- if (x < 1)
- fun_l22_n454(x)
- else
- fun_l22_n547(x)
- end
-end
-
-def fun_l21_n781(x)
- if (x < 1)
- fun_l22_n234(x)
- else
- fun_l22_n332(x)
- end
-end
-
-def fun_l21_n782(x)
- if (x < 1)
- fun_l22_n693(x)
- else
- fun_l22_n800(x)
- end
-end
-
-def fun_l21_n783(x)
- if (x < 1)
- fun_l22_n728(x)
- else
- fun_l22_n799(x)
- end
-end
-
-def fun_l21_n784(x)
- if (x < 1)
- fun_l22_n594(x)
- else
- fun_l22_n350(x)
- end
-end
-
-def fun_l21_n785(x)
- if (x < 1)
- fun_l22_n695(x)
- else
- fun_l22_n596(x)
- end
-end
-
-def fun_l21_n786(x)
- if (x < 1)
- fun_l22_n141(x)
- else
- fun_l22_n372(x)
- end
-end
-
-def fun_l21_n787(x)
- if (x < 1)
- fun_l22_n15(x)
- else
- fun_l22_n352(x)
- end
-end
-
-def fun_l21_n788(x)
- if (x < 1)
- fun_l22_n769(x)
- else
- fun_l22_n62(x)
- end
-end
-
-def fun_l21_n789(x)
- if (x < 1)
- fun_l22_n284(x)
- else
- fun_l22_n119(x)
- end
-end
-
-def fun_l21_n790(x)
- if (x < 1)
- fun_l22_n335(x)
- else
- fun_l22_n570(x)
- end
-end
-
-def fun_l21_n791(x)
- if (x < 1)
- fun_l22_n779(x)
- else
- fun_l22_n104(x)
- end
-end
-
-def fun_l21_n792(x)
- if (x < 1)
- fun_l22_n835(x)
- else
- fun_l22_n612(x)
- end
-end
-
-def fun_l21_n793(x)
- if (x < 1)
- fun_l22_n241(x)
- else
- fun_l22_n883(x)
- end
-end
-
-def fun_l21_n794(x)
- if (x < 1)
- fun_l22_n957(x)
- else
- fun_l22_n357(x)
- end
-end
-
-def fun_l21_n795(x)
- if (x < 1)
- fun_l22_n78(x)
- else
- fun_l22_n392(x)
- end
-end
-
-def fun_l21_n796(x)
- if (x < 1)
- fun_l22_n711(x)
- else
- fun_l22_n364(x)
- end
-end
-
-def fun_l21_n797(x)
- if (x < 1)
- fun_l22_n909(x)
- else
- fun_l22_n77(x)
- end
-end
-
-def fun_l21_n798(x)
- if (x < 1)
- fun_l22_n901(x)
- else
- fun_l22_n483(x)
- end
-end
-
-def fun_l21_n799(x)
- if (x < 1)
- fun_l22_n429(x)
- else
- fun_l22_n244(x)
- end
-end
-
-def fun_l21_n800(x)
- if (x < 1)
- fun_l22_n394(x)
- else
- fun_l22_n652(x)
- end
-end
-
-def fun_l21_n801(x)
- if (x < 1)
- fun_l22_n831(x)
- else
- fun_l22_n698(x)
- end
-end
-
-def fun_l21_n802(x)
- if (x < 1)
- fun_l22_n623(x)
- else
- fun_l22_n382(x)
- end
-end
-
-def fun_l21_n803(x)
- if (x < 1)
- fun_l22_n803(x)
- else
- fun_l22_n370(x)
- end
-end
-
-def fun_l21_n804(x)
- if (x < 1)
- fun_l22_n173(x)
- else
- fun_l22_n697(x)
- end
-end
-
-def fun_l21_n805(x)
- if (x < 1)
- fun_l22_n653(x)
- else
- fun_l22_n514(x)
- end
-end
-
-def fun_l21_n806(x)
- if (x < 1)
- fun_l22_n703(x)
- else
- fun_l22_n642(x)
- end
-end
-
-def fun_l21_n807(x)
- if (x < 1)
- fun_l22_n788(x)
- else
- fun_l22_n594(x)
- end
-end
-
-def fun_l21_n808(x)
- if (x < 1)
- fun_l22_n389(x)
- else
- fun_l22_n3(x)
- end
-end
-
-def fun_l21_n809(x)
- if (x < 1)
- fun_l22_n548(x)
- else
- fun_l22_n338(x)
- end
-end
-
-def fun_l21_n810(x)
- if (x < 1)
- fun_l22_n157(x)
- else
- fun_l22_n967(x)
- end
-end
-
-def fun_l21_n811(x)
- if (x < 1)
- fun_l22_n573(x)
- else
- fun_l22_n91(x)
- end
-end
-
-def fun_l21_n812(x)
- if (x < 1)
- fun_l22_n594(x)
- else
- fun_l22_n240(x)
- end
-end
-
-def fun_l21_n813(x)
- if (x < 1)
- fun_l22_n661(x)
- else
- fun_l22_n557(x)
- end
-end
-
-def fun_l21_n814(x)
- if (x < 1)
- fun_l22_n29(x)
- else
- fun_l22_n808(x)
- end
-end
-
-def fun_l21_n815(x)
- if (x < 1)
- fun_l22_n212(x)
- else
- fun_l22_n592(x)
- end
-end
-
-def fun_l21_n816(x)
- if (x < 1)
- fun_l22_n57(x)
- else
- fun_l22_n248(x)
- end
-end
-
-def fun_l21_n817(x)
- if (x < 1)
- fun_l22_n656(x)
- else
- fun_l22_n588(x)
- end
-end
-
-def fun_l21_n818(x)
- if (x < 1)
- fun_l22_n949(x)
- else
- fun_l22_n284(x)
- end
-end
-
-def fun_l21_n819(x)
- if (x < 1)
- fun_l22_n488(x)
- else
- fun_l22_n543(x)
- end
-end
-
-def fun_l21_n820(x)
- if (x < 1)
- fun_l22_n938(x)
- else
- fun_l22_n155(x)
- end
-end
-
-def fun_l21_n821(x)
- if (x < 1)
- fun_l22_n4(x)
- else
- fun_l22_n888(x)
- end
-end
-
-def fun_l21_n822(x)
- if (x < 1)
- fun_l22_n460(x)
- else
- fun_l22_n249(x)
- end
-end
-
-def fun_l21_n823(x)
- if (x < 1)
- fun_l22_n494(x)
- else
- fun_l22_n864(x)
- end
-end
-
-def fun_l21_n824(x)
- if (x < 1)
- fun_l22_n239(x)
- else
- fun_l22_n305(x)
- end
-end
-
-def fun_l21_n825(x)
- if (x < 1)
- fun_l22_n578(x)
- else
- fun_l22_n568(x)
- end
-end
-
-def fun_l21_n826(x)
- if (x < 1)
- fun_l22_n669(x)
- else
- fun_l22_n28(x)
- end
-end
-
-def fun_l21_n827(x)
- if (x < 1)
- fun_l22_n928(x)
- else
- fun_l22_n43(x)
- end
-end
-
-def fun_l21_n828(x)
- if (x < 1)
- fun_l22_n459(x)
- else
- fun_l22_n450(x)
- end
-end
-
-def fun_l21_n829(x)
- if (x < 1)
- fun_l22_n834(x)
- else
- fun_l22_n583(x)
- end
-end
-
-def fun_l21_n830(x)
- if (x < 1)
- fun_l22_n655(x)
- else
- fun_l22_n674(x)
- end
-end
-
-def fun_l21_n831(x)
- if (x < 1)
- fun_l22_n551(x)
- else
- fun_l22_n367(x)
- end
-end
-
-def fun_l21_n832(x)
- if (x < 1)
- fun_l22_n921(x)
- else
- fun_l22_n750(x)
- end
-end
-
-def fun_l21_n833(x)
- if (x < 1)
- fun_l22_n255(x)
- else
- fun_l22_n253(x)
- end
-end
-
-def fun_l21_n834(x)
- if (x < 1)
- fun_l22_n873(x)
- else
- fun_l22_n84(x)
- end
-end
-
-def fun_l21_n835(x)
- if (x < 1)
- fun_l22_n362(x)
- else
- fun_l22_n976(x)
- end
-end
-
-def fun_l21_n836(x)
- if (x < 1)
- fun_l22_n677(x)
- else
- fun_l22_n429(x)
- end
-end
-
-def fun_l21_n837(x)
- if (x < 1)
- fun_l22_n78(x)
- else
- fun_l22_n782(x)
- end
-end
-
-def fun_l21_n838(x)
- if (x < 1)
- fun_l22_n339(x)
- else
- fun_l22_n855(x)
- end
-end
-
-def fun_l21_n839(x)
- if (x < 1)
- fun_l22_n73(x)
- else
- fun_l22_n13(x)
- end
-end
-
-def fun_l21_n840(x)
- if (x < 1)
- fun_l22_n788(x)
- else
- fun_l22_n701(x)
- end
-end
-
-def fun_l21_n841(x)
- if (x < 1)
- fun_l22_n583(x)
- else
- fun_l22_n501(x)
- end
-end
-
-def fun_l21_n842(x)
- if (x < 1)
- fun_l22_n532(x)
- else
- fun_l22_n190(x)
- end
-end
-
-def fun_l21_n843(x)
- if (x < 1)
- fun_l22_n206(x)
- else
- fun_l22_n718(x)
- end
-end
-
-def fun_l21_n844(x)
- if (x < 1)
- fun_l22_n307(x)
- else
- fun_l22_n200(x)
- end
-end
-
-def fun_l21_n845(x)
- if (x < 1)
- fun_l22_n83(x)
- else
- fun_l22_n294(x)
- end
-end
-
-def fun_l21_n846(x)
- if (x < 1)
- fun_l22_n157(x)
- else
- fun_l22_n225(x)
- end
-end
-
-def fun_l21_n847(x)
- if (x < 1)
- fun_l22_n935(x)
- else
- fun_l22_n888(x)
- end
-end
-
-def fun_l21_n848(x)
- if (x < 1)
- fun_l22_n840(x)
- else
- fun_l22_n606(x)
- end
-end
-
-def fun_l21_n849(x)
- if (x < 1)
- fun_l22_n214(x)
- else
- fun_l22_n198(x)
- end
-end
-
-def fun_l21_n850(x)
- if (x < 1)
- fun_l22_n793(x)
- else
- fun_l22_n503(x)
- end
-end
-
-def fun_l21_n851(x)
- if (x < 1)
- fun_l22_n210(x)
- else
- fun_l22_n267(x)
- end
-end
-
-def fun_l21_n852(x)
- if (x < 1)
- fun_l22_n558(x)
- else
- fun_l22_n226(x)
- end
-end
-
-def fun_l21_n853(x)
- if (x < 1)
- fun_l22_n12(x)
- else
- fun_l22_n765(x)
- end
-end
-
-def fun_l21_n854(x)
- if (x < 1)
- fun_l22_n136(x)
- else
- fun_l22_n713(x)
- end
-end
-
-def fun_l21_n855(x)
- if (x < 1)
- fun_l22_n638(x)
- else
- fun_l22_n999(x)
- end
-end
-
-def fun_l21_n856(x)
- if (x < 1)
- fun_l22_n366(x)
- else
- fun_l22_n505(x)
- end
-end
-
-def fun_l21_n857(x)
- if (x < 1)
- fun_l22_n935(x)
- else
- fun_l22_n657(x)
- end
-end
-
-def fun_l21_n858(x)
- if (x < 1)
- fun_l22_n4(x)
- else
- fun_l22_n732(x)
- end
-end
-
-def fun_l21_n859(x)
- if (x < 1)
- fun_l22_n433(x)
- else
- fun_l22_n350(x)
- end
-end
-
-def fun_l21_n860(x)
- if (x < 1)
- fun_l22_n988(x)
- else
- fun_l22_n855(x)
- end
-end
-
-def fun_l21_n861(x)
- if (x < 1)
- fun_l22_n906(x)
- else
- fun_l22_n118(x)
- end
-end
-
-def fun_l21_n862(x)
- if (x < 1)
- fun_l22_n127(x)
- else
- fun_l22_n299(x)
- end
-end
-
-def fun_l21_n863(x)
- if (x < 1)
- fun_l22_n324(x)
- else
- fun_l22_n776(x)
- end
-end
-
-def fun_l21_n864(x)
- if (x < 1)
- fun_l22_n208(x)
- else
- fun_l22_n827(x)
- end
-end
-
-def fun_l21_n865(x)
- if (x < 1)
- fun_l22_n846(x)
- else
- fun_l22_n750(x)
- end
-end
-
-def fun_l21_n866(x)
- if (x < 1)
- fun_l22_n275(x)
- else
- fun_l22_n179(x)
- end
-end
-
-def fun_l21_n867(x)
- if (x < 1)
- fun_l22_n234(x)
- else
- fun_l22_n809(x)
- end
-end
-
-def fun_l21_n868(x)
- if (x < 1)
- fun_l22_n597(x)
- else
- fun_l22_n563(x)
- end
-end
-
-def fun_l21_n869(x)
- if (x < 1)
- fun_l22_n987(x)
- else
- fun_l22_n690(x)
- end
-end
-
-def fun_l21_n870(x)
- if (x < 1)
- fun_l22_n176(x)
- else
- fun_l22_n991(x)
- end
-end
-
-def fun_l21_n871(x)
- if (x < 1)
- fun_l22_n272(x)
- else
- fun_l22_n211(x)
- end
-end
-
-def fun_l21_n872(x)
- if (x < 1)
- fun_l22_n976(x)
- else
- fun_l22_n940(x)
- end
-end
-
-def fun_l21_n873(x)
- if (x < 1)
- fun_l22_n871(x)
- else
- fun_l22_n866(x)
- end
-end
-
-def fun_l21_n874(x)
- if (x < 1)
- fun_l22_n727(x)
- else
- fun_l22_n560(x)
- end
-end
-
-def fun_l21_n875(x)
- if (x < 1)
- fun_l22_n201(x)
- else
- fun_l22_n423(x)
- end
-end
-
-def fun_l21_n876(x)
- if (x < 1)
- fun_l22_n245(x)
- else
- fun_l22_n33(x)
- end
-end
-
-def fun_l21_n877(x)
- if (x < 1)
- fun_l22_n535(x)
- else
- fun_l22_n11(x)
- end
-end
-
-def fun_l21_n878(x)
- if (x < 1)
- fun_l22_n11(x)
- else
- fun_l22_n140(x)
- end
-end
-
-def fun_l21_n879(x)
- if (x < 1)
- fun_l22_n757(x)
- else
- fun_l22_n64(x)
- end
-end
-
-def fun_l21_n880(x)
- if (x < 1)
- fun_l22_n982(x)
- else
- fun_l22_n774(x)
- end
-end
-
-def fun_l21_n881(x)
- if (x < 1)
- fun_l22_n324(x)
- else
- fun_l22_n903(x)
- end
-end
-
-def fun_l21_n882(x)
- if (x < 1)
- fun_l22_n257(x)
- else
- fun_l22_n232(x)
- end
-end
-
-def fun_l21_n883(x)
- if (x < 1)
- fun_l22_n546(x)
- else
- fun_l22_n317(x)
- end
-end
-
-def fun_l21_n884(x)
- if (x < 1)
- fun_l22_n40(x)
- else
- fun_l22_n393(x)
- end
-end
-
-def fun_l21_n885(x)
- if (x < 1)
- fun_l22_n281(x)
- else
- fun_l22_n572(x)
- end
-end
-
-def fun_l21_n886(x)
- if (x < 1)
- fun_l22_n41(x)
- else
- fun_l22_n656(x)
- end
-end
-
-def fun_l21_n887(x)
- if (x < 1)
- fun_l22_n911(x)
- else
- fun_l22_n55(x)
- end
-end
-
-def fun_l21_n888(x)
- if (x < 1)
- fun_l22_n555(x)
- else
- fun_l22_n60(x)
- end
-end
-
-def fun_l21_n889(x)
- if (x < 1)
- fun_l22_n69(x)
- else
- fun_l22_n330(x)
- end
-end
-
-def fun_l21_n890(x)
- if (x < 1)
- fun_l22_n332(x)
- else
- fun_l22_n573(x)
- end
-end
-
-def fun_l21_n891(x)
- if (x < 1)
- fun_l22_n529(x)
- else
- fun_l22_n555(x)
- end
-end
-
-def fun_l21_n892(x)
- if (x < 1)
- fun_l22_n900(x)
- else
- fun_l22_n137(x)
- end
-end
-
-def fun_l21_n893(x)
- if (x < 1)
- fun_l22_n479(x)
- else
- fun_l22_n196(x)
- end
-end
-
-def fun_l21_n894(x)
- if (x < 1)
- fun_l22_n418(x)
- else
- fun_l22_n124(x)
- end
-end
-
-def fun_l21_n895(x)
- if (x < 1)
- fun_l22_n658(x)
- else
- fun_l22_n196(x)
- end
-end
-
-def fun_l21_n896(x)
- if (x < 1)
- fun_l22_n739(x)
- else
- fun_l22_n454(x)
- end
-end
-
-def fun_l21_n897(x)
- if (x < 1)
- fun_l22_n716(x)
- else
- fun_l22_n150(x)
- end
-end
-
-def fun_l21_n898(x)
- if (x < 1)
- fun_l22_n356(x)
- else
- fun_l22_n264(x)
- end
-end
-
-def fun_l21_n899(x)
- if (x < 1)
- fun_l22_n667(x)
- else
- fun_l22_n629(x)
- end
-end
-
-def fun_l21_n900(x)
- if (x < 1)
- fun_l22_n879(x)
- else
- fun_l22_n237(x)
- end
-end
-
-def fun_l21_n901(x)
- if (x < 1)
- fun_l22_n462(x)
- else
- fun_l22_n401(x)
- end
-end
-
-def fun_l21_n902(x)
- if (x < 1)
- fun_l22_n902(x)
- else
- fun_l22_n203(x)
- end
-end
-
-def fun_l21_n903(x)
- if (x < 1)
- fun_l22_n802(x)
- else
- fun_l22_n383(x)
- end
-end
-
-def fun_l21_n904(x)
- if (x < 1)
- fun_l22_n672(x)
- else
- fun_l22_n808(x)
- end
-end
-
-def fun_l21_n905(x)
- if (x < 1)
- fun_l22_n625(x)
- else
- fun_l22_n320(x)
- end
-end
-
-def fun_l21_n906(x)
- if (x < 1)
- fun_l22_n963(x)
- else
- fun_l22_n101(x)
- end
-end
-
-def fun_l21_n907(x)
- if (x < 1)
- fun_l22_n609(x)
- else
- fun_l22_n500(x)
- end
-end
-
-def fun_l21_n908(x)
- if (x < 1)
- fun_l22_n79(x)
- else
- fun_l22_n774(x)
- end
-end
-
-def fun_l21_n909(x)
- if (x < 1)
- fun_l22_n152(x)
- else
- fun_l22_n245(x)
- end
-end
-
-def fun_l21_n910(x)
- if (x < 1)
- fun_l22_n981(x)
- else
- fun_l22_n647(x)
- end
-end
-
-def fun_l21_n911(x)
- if (x < 1)
- fun_l22_n457(x)
- else
- fun_l22_n394(x)
- end
-end
-
-def fun_l21_n912(x)
- if (x < 1)
- fun_l22_n516(x)
- else
- fun_l22_n411(x)
- end
-end
-
-def fun_l21_n913(x)
- if (x < 1)
- fun_l22_n212(x)
- else
- fun_l22_n159(x)
- end
-end
-
-def fun_l21_n914(x)
- if (x < 1)
- fun_l22_n756(x)
- else
- fun_l22_n612(x)
- end
-end
-
-def fun_l21_n915(x)
- if (x < 1)
- fun_l22_n78(x)
- else
- fun_l22_n387(x)
- end
-end
-
-def fun_l21_n916(x)
- if (x < 1)
- fun_l22_n973(x)
- else
- fun_l22_n854(x)
- end
-end
-
-def fun_l21_n917(x)
- if (x < 1)
- fun_l22_n613(x)
- else
- fun_l22_n78(x)
- end
-end
-
-def fun_l21_n918(x)
- if (x < 1)
- fun_l22_n199(x)
- else
- fun_l22_n637(x)
- end
-end
-
-def fun_l21_n919(x)
- if (x < 1)
- fun_l22_n834(x)
- else
- fun_l22_n804(x)
- end
-end
-
-def fun_l21_n920(x)
- if (x < 1)
- fun_l22_n410(x)
- else
- fun_l22_n728(x)
- end
-end
-
-def fun_l21_n921(x)
- if (x < 1)
- fun_l22_n139(x)
- else
- fun_l22_n236(x)
- end
-end
-
-def fun_l21_n922(x)
- if (x < 1)
- fun_l22_n443(x)
- else
- fun_l22_n683(x)
- end
-end
-
-def fun_l21_n923(x)
- if (x < 1)
- fun_l22_n226(x)
- else
- fun_l22_n906(x)
- end
-end
-
-def fun_l21_n924(x)
- if (x < 1)
- fun_l22_n487(x)
- else
- fun_l22_n551(x)
- end
-end
-
-def fun_l21_n925(x)
- if (x < 1)
- fun_l22_n143(x)
- else
- fun_l22_n932(x)
- end
-end
-
-def fun_l21_n926(x)
- if (x < 1)
- fun_l22_n533(x)
- else
- fun_l22_n307(x)
- end
-end
-
-def fun_l21_n927(x)
- if (x < 1)
- fun_l22_n89(x)
- else
- fun_l22_n278(x)
- end
-end
-
-def fun_l21_n928(x)
- if (x < 1)
- fun_l22_n802(x)
- else
- fun_l22_n18(x)
- end
-end
-
-def fun_l21_n929(x)
- if (x < 1)
- fun_l22_n266(x)
- else
- fun_l22_n924(x)
- end
-end
-
-def fun_l21_n930(x)
- if (x < 1)
- fun_l22_n607(x)
- else
- fun_l22_n47(x)
- end
-end
-
-def fun_l21_n931(x)
- if (x < 1)
- fun_l22_n241(x)
- else
- fun_l22_n983(x)
- end
-end
-
-def fun_l21_n932(x)
- if (x < 1)
- fun_l22_n264(x)
- else
- fun_l22_n88(x)
- end
-end
-
-def fun_l21_n933(x)
- if (x < 1)
- fun_l22_n26(x)
- else
- fun_l22_n940(x)
- end
-end
-
-def fun_l21_n934(x)
- if (x < 1)
- fun_l22_n688(x)
- else
- fun_l22_n248(x)
- end
-end
-
-def fun_l21_n935(x)
- if (x < 1)
- fun_l22_n704(x)
- else
- fun_l22_n808(x)
- end
-end
-
-def fun_l21_n936(x)
- if (x < 1)
- fun_l22_n91(x)
- else
- fun_l22_n650(x)
- end
-end
-
-def fun_l21_n937(x)
- if (x < 1)
- fun_l22_n308(x)
- else
- fun_l22_n389(x)
- end
-end
-
-def fun_l21_n938(x)
- if (x < 1)
- fun_l22_n63(x)
- else
- fun_l22_n704(x)
- end
-end
-
-def fun_l21_n939(x)
- if (x < 1)
- fun_l22_n785(x)
- else
- fun_l22_n852(x)
- end
-end
-
-def fun_l21_n940(x)
- if (x < 1)
- fun_l22_n515(x)
- else
- fun_l22_n148(x)
- end
-end
-
-def fun_l21_n941(x)
- if (x < 1)
- fun_l22_n607(x)
- else
- fun_l22_n162(x)
- end
-end
-
-def fun_l21_n942(x)
- if (x < 1)
- fun_l22_n34(x)
- else
- fun_l22_n167(x)
- end
-end
-
-def fun_l21_n943(x)
- if (x < 1)
- fun_l22_n239(x)
- else
- fun_l22_n100(x)
- end
-end
-
-def fun_l21_n944(x)
- if (x < 1)
- fun_l22_n724(x)
- else
- fun_l22_n702(x)
- end
-end
-
-def fun_l21_n945(x)
- if (x < 1)
- fun_l22_n121(x)
- else
- fun_l22_n89(x)
- end
-end
-
-def fun_l21_n946(x)
- if (x < 1)
- fun_l22_n699(x)
- else
- fun_l22_n410(x)
- end
-end
-
-def fun_l21_n947(x)
- if (x < 1)
- fun_l22_n33(x)
- else
- fun_l22_n843(x)
- end
-end
-
-def fun_l21_n948(x)
- if (x < 1)
- fun_l22_n327(x)
- else
- fun_l22_n702(x)
- end
-end
-
-def fun_l21_n949(x)
- if (x < 1)
- fun_l22_n191(x)
- else
- fun_l22_n137(x)
- end
-end
-
-def fun_l21_n950(x)
- if (x < 1)
- fun_l22_n834(x)
- else
- fun_l22_n504(x)
- end
-end
-
-def fun_l21_n951(x)
- if (x < 1)
- fun_l22_n444(x)
- else
- fun_l22_n857(x)
- end
-end
-
-def fun_l21_n952(x)
- if (x < 1)
- fun_l22_n961(x)
- else
- fun_l22_n817(x)
- end
-end
-
-def fun_l21_n953(x)
- if (x < 1)
- fun_l22_n166(x)
- else
- fun_l22_n538(x)
- end
-end
-
-def fun_l21_n954(x)
- if (x < 1)
- fun_l22_n934(x)
- else
- fun_l22_n552(x)
- end
-end
-
-def fun_l21_n955(x)
- if (x < 1)
- fun_l22_n144(x)
- else
- fun_l22_n814(x)
- end
-end
-
-def fun_l21_n956(x)
- if (x < 1)
- fun_l22_n965(x)
- else
- fun_l22_n929(x)
- end
-end
-
-def fun_l21_n957(x)
- if (x < 1)
- fun_l22_n812(x)
- else
- fun_l22_n529(x)
- end
-end
-
-def fun_l21_n958(x)
- if (x < 1)
- fun_l22_n625(x)
- else
- fun_l22_n974(x)
- end
-end
-
-def fun_l21_n959(x)
- if (x < 1)
- fun_l22_n627(x)
- else
- fun_l22_n262(x)
- end
-end
-
-def fun_l21_n960(x)
- if (x < 1)
- fun_l22_n751(x)
- else
- fun_l22_n858(x)
- end
-end
-
-def fun_l21_n961(x)
- if (x < 1)
- fun_l22_n819(x)
- else
- fun_l22_n408(x)
- end
-end
-
-def fun_l21_n962(x)
- if (x < 1)
- fun_l22_n635(x)
- else
- fun_l22_n730(x)
- end
-end
-
-def fun_l21_n963(x)
- if (x < 1)
- fun_l22_n865(x)
- else
- fun_l22_n919(x)
- end
-end
-
-def fun_l21_n964(x)
- if (x < 1)
- fun_l22_n368(x)
- else
- fun_l22_n912(x)
- end
-end
-
-def fun_l21_n965(x)
- if (x < 1)
- fun_l22_n202(x)
- else
- fun_l22_n493(x)
- end
-end
-
-def fun_l21_n966(x)
- if (x < 1)
- fun_l22_n191(x)
- else
- fun_l22_n632(x)
- end
-end
-
-def fun_l21_n967(x)
- if (x < 1)
- fun_l22_n96(x)
- else
- fun_l22_n329(x)
- end
-end
-
-def fun_l21_n968(x)
- if (x < 1)
- fun_l22_n42(x)
- else
- fun_l22_n196(x)
- end
-end
-
-def fun_l21_n969(x)
- if (x < 1)
- fun_l22_n521(x)
- else
- fun_l22_n875(x)
- end
-end
-
-def fun_l21_n970(x)
- if (x < 1)
- fun_l22_n202(x)
- else
- fun_l22_n373(x)
- end
-end
-
-def fun_l21_n971(x)
- if (x < 1)
- fun_l22_n647(x)
- else
- fun_l22_n591(x)
- end
-end
-
-def fun_l21_n972(x)
- if (x < 1)
- fun_l22_n341(x)
- else
- fun_l22_n935(x)
- end
-end
-
-def fun_l21_n973(x)
- if (x < 1)
- fun_l22_n151(x)
- else
- fun_l22_n396(x)
- end
-end
-
-def fun_l21_n974(x)
- if (x < 1)
- fun_l22_n65(x)
- else
- fun_l22_n562(x)
- end
-end
-
-def fun_l21_n975(x)
- if (x < 1)
- fun_l22_n450(x)
- else
- fun_l22_n482(x)
- end
-end
-
-def fun_l21_n976(x)
- if (x < 1)
- fun_l22_n179(x)
- else
- fun_l22_n838(x)
- end
-end
-
-def fun_l21_n977(x)
- if (x < 1)
- fun_l22_n571(x)
- else
- fun_l22_n703(x)
- end
-end
-
-def fun_l21_n978(x)
- if (x < 1)
- fun_l22_n540(x)
- else
- fun_l22_n728(x)
- end
-end
-
-def fun_l21_n979(x)
- if (x < 1)
- fun_l22_n170(x)
- else
- fun_l22_n487(x)
- end
-end
-
-def fun_l21_n980(x)
- if (x < 1)
- fun_l22_n12(x)
- else
- fun_l22_n165(x)
- end
-end
-
-def fun_l21_n981(x)
- if (x < 1)
- fun_l22_n722(x)
- else
- fun_l22_n456(x)
- end
-end
-
-def fun_l21_n982(x)
- if (x < 1)
- fun_l22_n313(x)
- else
- fun_l22_n175(x)
- end
-end
-
-def fun_l21_n983(x)
- if (x < 1)
- fun_l22_n473(x)
- else
- fun_l22_n840(x)
- end
-end
-
-def fun_l21_n984(x)
- if (x < 1)
- fun_l22_n942(x)
- else
- fun_l22_n804(x)
- end
-end
-
-def fun_l21_n985(x)
- if (x < 1)
- fun_l22_n116(x)
- else
- fun_l22_n117(x)
- end
-end
-
-def fun_l21_n986(x)
- if (x < 1)
- fun_l22_n610(x)
- else
- fun_l22_n580(x)
- end
-end
-
-def fun_l21_n987(x)
- if (x < 1)
- fun_l22_n299(x)
- else
- fun_l22_n416(x)
- end
-end
-
-def fun_l21_n988(x)
- if (x < 1)
- fun_l22_n507(x)
- else
- fun_l22_n995(x)
- end
-end
-
-def fun_l21_n989(x)
- if (x < 1)
- fun_l22_n239(x)
- else
- fun_l22_n414(x)
- end
-end
-
-def fun_l21_n990(x)
- if (x < 1)
- fun_l22_n488(x)
- else
- fun_l22_n874(x)
- end
-end
-
-def fun_l21_n991(x)
- if (x < 1)
- fun_l22_n586(x)
- else
- fun_l22_n88(x)
- end
-end
-
-def fun_l21_n992(x)
- if (x < 1)
- fun_l22_n391(x)
- else
- fun_l22_n254(x)
- end
-end
-
-def fun_l21_n993(x)
- if (x < 1)
- fun_l22_n64(x)
- else
- fun_l22_n485(x)
- end
-end
-
-def fun_l21_n994(x)
- if (x < 1)
- fun_l22_n507(x)
- else
- fun_l22_n266(x)
- end
-end
-
-def fun_l21_n995(x)
- if (x < 1)
- fun_l22_n660(x)
- else
- fun_l22_n208(x)
- end
-end
-
-def fun_l21_n996(x)
- if (x < 1)
- fun_l22_n731(x)
- else
- fun_l22_n882(x)
- end
-end
-
-def fun_l21_n997(x)
- if (x < 1)
- fun_l22_n283(x)
- else
- fun_l22_n719(x)
- end
-end
-
-def fun_l21_n998(x)
- if (x < 1)
- fun_l22_n794(x)
- else
- fun_l22_n654(x)
- end
-end
-
-def fun_l21_n999(x)
- if (x < 1)
- fun_l22_n642(x)
- else
- fun_l22_n158(x)
- end
-end
-
-def fun_l22_n0(x)
- if (x < 1)
- fun_l23_n423(x)
- else
- fun_l23_n28(x)
- end
-end
-
-def fun_l22_n1(x)
- if (x < 1)
- fun_l23_n494(x)
- else
- fun_l23_n894(x)
- end
-end
-
-def fun_l22_n2(x)
- if (x < 1)
- fun_l23_n735(x)
- else
- fun_l23_n584(x)
- end
-end
-
-def fun_l22_n3(x)
- if (x < 1)
- fun_l23_n982(x)
- else
- fun_l23_n790(x)
- end
-end
-
-def fun_l22_n4(x)
- if (x < 1)
- fun_l23_n281(x)
- else
- fun_l23_n256(x)
- end
-end
-
-def fun_l22_n5(x)
- if (x < 1)
- fun_l23_n286(x)
- else
- fun_l23_n48(x)
- end
-end
-
-def fun_l22_n6(x)
- if (x < 1)
- fun_l23_n982(x)
- else
- fun_l23_n731(x)
- end
-end
-
-def fun_l22_n7(x)
- if (x < 1)
- fun_l23_n83(x)
- else
- fun_l23_n267(x)
- end
-end
-
-def fun_l22_n8(x)
- if (x < 1)
- fun_l23_n730(x)
- else
- fun_l23_n47(x)
- end
-end
-
-def fun_l22_n9(x)
- if (x < 1)
- fun_l23_n106(x)
- else
- fun_l23_n125(x)
- end
-end
-
-def fun_l22_n10(x)
- if (x < 1)
- fun_l23_n392(x)
- else
- fun_l23_n114(x)
- end
-end
-
-def fun_l22_n11(x)
- if (x < 1)
- fun_l23_n778(x)
- else
- fun_l23_n103(x)
- end
-end
-
-def fun_l22_n12(x)
- if (x < 1)
- fun_l23_n145(x)
- else
- fun_l23_n449(x)
- end
-end
-
-def fun_l22_n13(x)
- if (x < 1)
- fun_l23_n106(x)
- else
- fun_l23_n67(x)
- end
-end
-
-def fun_l22_n14(x)
- if (x < 1)
- fun_l23_n721(x)
- else
- fun_l23_n844(x)
- end
-end
-
-def fun_l22_n15(x)
- if (x < 1)
- fun_l23_n411(x)
- else
- fun_l23_n479(x)
- end
-end
-
-def fun_l22_n16(x)
- if (x < 1)
- fun_l23_n718(x)
- else
- fun_l23_n203(x)
- end
-end
-
-def fun_l22_n17(x)
- if (x < 1)
- fun_l23_n660(x)
- else
- fun_l23_n606(x)
- end
-end
-
-def fun_l22_n18(x)
- if (x < 1)
- fun_l23_n225(x)
- else
- fun_l23_n310(x)
- end
-end
-
-def fun_l22_n19(x)
- if (x < 1)
- fun_l23_n923(x)
- else
- fun_l23_n10(x)
- end
-end
-
-def fun_l22_n20(x)
- if (x < 1)
- fun_l23_n88(x)
- else
- fun_l23_n488(x)
- end
-end
-
-def fun_l22_n21(x)
- if (x < 1)
- fun_l23_n986(x)
- else
- fun_l23_n123(x)
- end
-end
-
-def fun_l22_n22(x)
- if (x < 1)
- fun_l23_n91(x)
- else
- fun_l23_n445(x)
- end
-end
-
-def fun_l22_n23(x)
- if (x < 1)
- fun_l23_n525(x)
- else
- fun_l23_n454(x)
- end
-end
-
-def fun_l22_n24(x)
- if (x < 1)
- fun_l23_n55(x)
- else
- fun_l23_n540(x)
- end
-end
-
-def fun_l22_n25(x)
- if (x < 1)
- fun_l23_n562(x)
- else
- fun_l23_n323(x)
- end
-end
-
-def fun_l22_n26(x)
- if (x < 1)
- fun_l23_n796(x)
- else
- fun_l23_n443(x)
- end
-end
-
-def fun_l22_n27(x)
- if (x < 1)
- fun_l23_n421(x)
- else
- fun_l23_n654(x)
- end
-end
-
-def fun_l22_n28(x)
- if (x < 1)
- fun_l23_n910(x)
- else
- fun_l23_n421(x)
- end
-end
-
-def fun_l22_n29(x)
- if (x < 1)
- fun_l23_n184(x)
- else
- fun_l23_n24(x)
- end
-end
-
-def fun_l22_n30(x)
- if (x < 1)
- fun_l23_n803(x)
- else
- fun_l23_n375(x)
- end
-end
-
-def fun_l22_n31(x)
- if (x < 1)
- fun_l23_n662(x)
- else
- fun_l23_n50(x)
- end
-end
-
-def fun_l22_n32(x)
- if (x < 1)
- fun_l23_n69(x)
- else
- fun_l23_n198(x)
- end
-end
-
-def fun_l22_n33(x)
- if (x < 1)
- fun_l23_n465(x)
- else
- fun_l23_n979(x)
- end
-end
-
-def fun_l22_n34(x)
- if (x < 1)
- fun_l23_n743(x)
- else
- fun_l23_n859(x)
- end
-end
-
-def fun_l22_n35(x)
- if (x < 1)
- fun_l23_n524(x)
- else
- fun_l23_n157(x)
- end
-end
-
-def fun_l22_n36(x)
- if (x < 1)
- fun_l23_n530(x)
- else
- fun_l23_n938(x)
- end
-end
-
-def fun_l22_n37(x)
- if (x < 1)
- fun_l23_n386(x)
- else
- fun_l23_n882(x)
- end
-end
-
-def fun_l22_n38(x)
- if (x < 1)
- fun_l23_n373(x)
- else
- fun_l23_n220(x)
- end
-end
-
-def fun_l22_n39(x)
- if (x < 1)
- fun_l23_n783(x)
- else
- fun_l23_n731(x)
- end
-end
-
-def fun_l22_n40(x)
- if (x < 1)
- fun_l23_n911(x)
- else
- fun_l23_n373(x)
- end
-end
-
-def fun_l22_n41(x)
- if (x < 1)
- fun_l23_n516(x)
- else
- fun_l23_n586(x)
- end
-end
-
-def fun_l22_n42(x)
- if (x < 1)
- fun_l23_n40(x)
- else
- fun_l23_n350(x)
- end
-end
-
-def fun_l22_n43(x)
- if (x < 1)
- fun_l23_n690(x)
- else
- fun_l23_n349(x)
- end
-end
-
-def fun_l22_n44(x)
- if (x < 1)
- fun_l23_n170(x)
- else
- fun_l23_n758(x)
- end
-end
-
-def fun_l22_n45(x)
- if (x < 1)
- fun_l23_n317(x)
- else
- fun_l23_n856(x)
- end
-end
-
-def fun_l22_n46(x)
- if (x < 1)
- fun_l23_n692(x)
- else
- fun_l23_n330(x)
- end
-end
-
-def fun_l22_n47(x)
- if (x < 1)
- fun_l23_n848(x)
- else
- fun_l23_n767(x)
- end
-end
-
-def fun_l22_n48(x)
- if (x < 1)
- fun_l23_n683(x)
- else
- fun_l23_n225(x)
- end
-end
-
-def fun_l22_n49(x)
- if (x < 1)
- fun_l23_n967(x)
- else
- fun_l23_n872(x)
- end
-end
-
-def fun_l22_n50(x)
- if (x < 1)
- fun_l23_n584(x)
- else
- fun_l23_n799(x)
- end
-end
-
-def fun_l22_n51(x)
- if (x < 1)
- fun_l23_n156(x)
- else
- fun_l23_n710(x)
- end
-end
-
-def fun_l22_n52(x)
- if (x < 1)
- fun_l23_n129(x)
- else
- fun_l23_n733(x)
- end
-end
-
-def fun_l22_n53(x)
- if (x < 1)
- fun_l23_n364(x)
- else
- fun_l23_n460(x)
- end
-end
-
-def fun_l22_n54(x)
- if (x < 1)
- fun_l23_n284(x)
- else
- fun_l23_n13(x)
- end
-end
-
-def fun_l22_n55(x)
- if (x < 1)
- fun_l23_n734(x)
- else
- fun_l23_n498(x)
- end
-end
-
-def fun_l22_n56(x)
- if (x < 1)
- fun_l23_n981(x)
- else
- fun_l23_n602(x)
- end
-end
-
-def fun_l22_n57(x)
- if (x < 1)
- fun_l23_n632(x)
- else
- fun_l23_n123(x)
- end
-end
-
-def fun_l22_n58(x)
- if (x < 1)
- fun_l23_n602(x)
- else
- fun_l23_n274(x)
- end
-end
-
-def fun_l22_n59(x)
- if (x < 1)
- fun_l23_n718(x)
- else
- fun_l23_n351(x)
- end
-end
-
-def fun_l22_n60(x)
- if (x < 1)
- fun_l23_n618(x)
- else
- fun_l23_n583(x)
- end
-end
-
-def fun_l22_n61(x)
- if (x < 1)
- fun_l23_n63(x)
- else
- fun_l23_n573(x)
- end
-end
-
-def fun_l22_n62(x)
- if (x < 1)
- fun_l23_n73(x)
- else
- fun_l23_n429(x)
- end
-end
-
-def fun_l22_n63(x)
- if (x < 1)
- fun_l23_n969(x)
- else
- fun_l23_n518(x)
- end
-end
-
-def fun_l22_n64(x)
- if (x < 1)
- fun_l23_n493(x)
- else
- fun_l23_n868(x)
- end
-end
-
-def fun_l22_n65(x)
- if (x < 1)
- fun_l23_n31(x)
- else
- fun_l23_n366(x)
- end
-end
-
-def fun_l22_n66(x)
- if (x < 1)
- fun_l23_n442(x)
- else
- fun_l23_n362(x)
- end
-end
-
-def fun_l22_n67(x)
- if (x < 1)
- fun_l23_n804(x)
- else
- fun_l23_n513(x)
- end
-end
-
-def fun_l22_n68(x)
- if (x < 1)
- fun_l23_n973(x)
- else
- fun_l23_n723(x)
- end
-end
-
-def fun_l22_n69(x)
- if (x < 1)
- fun_l23_n424(x)
- else
- fun_l23_n247(x)
- end
-end
-
-def fun_l22_n70(x)
- if (x < 1)
- fun_l23_n992(x)
- else
- fun_l23_n944(x)
- end
-end
-
-def fun_l22_n71(x)
- if (x < 1)
- fun_l23_n209(x)
- else
- fun_l23_n645(x)
- end
-end
-
-def fun_l22_n72(x)
- if (x < 1)
- fun_l23_n373(x)
- else
- fun_l23_n540(x)
- end
-end
-
-def fun_l22_n73(x)
- if (x < 1)
- fun_l23_n785(x)
- else
- fun_l23_n840(x)
- end
-end
-
-def fun_l22_n74(x)
- if (x < 1)
- fun_l23_n607(x)
- else
- fun_l23_n584(x)
- end
-end
-
-def fun_l22_n75(x)
- if (x < 1)
- fun_l23_n331(x)
- else
- fun_l23_n196(x)
- end
-end
-
-def fun_l22_n76(x)
- if (x < 1)
- fun_l23_n453(x)
- else
- fun_l23_n991(x)
- end
-end
-
-def fun_l22_n77(x)
- if (x < 1)
- fun_l23_n689(x)
- else
- fun_l23_n222(x)
- end
-end
-
-def fun_l22_n78(x)
- if (x < 1)
- fun_l23_n446(x)
- else
- fun_l23_n767(x)
- end
-end
-
-def fun_l22_n79(x)
- if (x < 1)
- fun_l23_n648(x)
- else
- fun_l23_n811(x)
- end
-end
-
-def fun_l22_n80(x)
- if (x < 1)
- fun_l23_n210(x)
- else
- fun_l23_n52(x)
- end
-end
-
-def fun_l22_n81(x)
- if (x < 1)
- fun_l23_n786(x)
- else
- fun_l23_n984(x)
- end
-end
-
-def fun_l22_n82(x)
- if (x < 1)
- fun_l23_n693(x)
- else
- fun_l23_n103(x)
- end
-end
-
-def fun_l22_n83(x)
- if (x < 1)
- fun_l23_n768(x)
- else
- fun_l23_n794(x)
- end
-end
-
-def fun_l22_n84(x)
- if (x < 1)
- fun_l23_n820(x)
- else
- fun_l23_n774(x)
- end
-end
-
-def fun_l22_n85(x)
- if (x < 1)
- fun_l23_n972(x)
- else
- fun_l23_n254(x)
- end
-end
-
-def fun_l22_n86(x)
- if (x < 1)
- fun_l23_n609(x)
- else
- fun_l23_n524(x)
- end
-end
-
-def fun_l22_n87(x)
- if (x < 1)
- fun_l23_n486(x)
- else
- fun_l23_n173(x)
- end
-end
-
-def fun_l22_n88(x)
- if (x < 1)
- fun_l23_n236(x)
- else
- fun_l23_n359(x)
- end
-end
-
-def fun_l22_n89(x)
- if (x < 1)
- fun_l23_n292(x)
- else
- fun_l23_n232(x)
- end
-end
-
-def fun_l22_n90(x)
- if (x < 1)
- fun_l23_n104(x)
- else
- fun_l23_n799(x)
- end
-end
-
-def fun_l22_n91(x)
- if (x < 1)
- fun_l23_n957(x)
- else
- fun_l23_n836(x)
- end
-end
-
-def fun_l22_n92(x)
- if (x < 1)
- fun_l23_n179(x)
- else
- fun_l23_n416(x)
- end
-end
-
-def fun_l22_n93(x)
- if (x < 1)
- fun_l23_n281(x)
- else
- fun_l23_n530(x)
- end
-end
-
-def fun_l22_n94(x)
- if (x < 1)
- fun_l23_n627(x)
- else
- fun_l23_n577(x)
- end
-end
-
-def fun_l22_n95(x)
- if (x < 1)
- fun_l23_n594(x)
- else
- fun_l23_n949(x)
- end
-end
-
-def fun_l22_n96(x)
- if (x < 1)
- fun_l23_n408(x)
- else
- fun_l23_n547(x)
- end
-end
-
-def fun_l22_n97(x)
- if (x < 1)
- fun_l23_n276(x)
- else
- fun_l23_n105(x)
- end
-end
-
-def fun_l22_n98(x)
- if (x < 1)
- fun_l23_n181(x)
- else
- fun_l23_n659(x)
- end
-end
-
-def fun_l22_n99(x)
- if (x < 1)
- fun_l23_n7(x)
- else
- fun_l23_n423(x)
- end
-end
-
-def fun_l22_n100(x)
- if (x < 1)
- fun_l23_n123(x)
- else
- fun_l23_n244(x)
- end
-end
-
-def fun_l22_n101(x)
- if (x < 1)
- fun_l23_n476(x)
- else
- fun_l23_n319(x)
- end
-end
-
-def fun_l22_n102(x)
- if (x < 1)
- fun_l23_n443(x)
- else
- fun_l23_n959(x)
- end
-end
-
-def fun_l22_n103(x)
- if (x < 1)
- fun_l23_n78(x)
- else
- fun_l23_n490(x)
- end
-end
-
-def fun_l22_n104(x)
- if (x < 1)
- fun_l23_n761(x)
- else
- fun_l23_n23(x)
- end
-end
-
-def fun_l22_n105(x)
- if (x < 1)
- fun_l23_n126(x)
- else
- fun_l23_n426(x)
- end
-end
-
-def fun_l22_n106(x)
- if (x < 1)
- fun_l23_n740(x)
- else
- fun_l23_n328(x)
- end
-end
-
-def fun_l22_n107(x)
- if (x < 1)
- fun_l23_n249(x)
- else
- fun_l23_n890(x)
- end
-end
-
-def fun_l22_n108(x)
- if (x < 1)
- fun_l23_n665(x)
- else
- fun_l23_n60(x)
- end
-end
-
-def fun_l22_n109(x)
- if (x < 1)
- fun_l23_n617(x)
- else
- fun_l23_n42(x)
- end
-end
-
-def fun_l22_n110(x)
- if (x < 1)
- fun_l23_n484(x)
- else
- fun_l23_n480(x)
- end
-end
-
-def fun_l22_n111(x)
- if (x < 1)
- fun_l23_n135(x)
- else
- fun_l23_n447(x)
- end
-end
-
-def fun_l22_n112(x)
- if (x < 1)
- fun_l23_n881(x)
- else
- fun_l23_n410(x)
- end
-end
-
-def fun_l22_n113(x)
- if (x < 1)
- fun_l23_n989(x)
- else
- fun_l23_n849(x)
- end
-end
-
-def fun_l22_n114(x)
- if (x < 1)
- fun_l23_n660(x)
- else
- fun_l23_n307(x)
- end
-end
-
-def fun_l22_n115(x)
- if (x < 1)
- fun_l23_n372(x)
- else
- fun_l23_n150(x)
- end
-end
-
-def fun_l22_n116(x)
- if (x < 1)
- fun_l23_n770(x)
- else
- fun_l23_n109(x)
- end
-end
-
-def fun_l22_n117(x)
- if (x < 1)
- fun_l23_n364(x)
- else
- fun_l23_n321(x)
- end
-end
-
-def fun_l22_n118(x)
- if (x < 1)
- fun_l23_n363(x)
- else
- fun_l23_n876(x)
- end
-end
-
-def fun_l22_n119(x)
- if (x < 1)
- fun_l23_n114(x)
- else
- fun_l23_n25(x)
- end
-end
-
-def fun_l22_n120(x)
- if (x < 1)
- fun_l23_n160(x)
- else
- fun_l23_n744(x)
- end
-end
-
-def fun_l22_n121(x)
- if (x < 1)
- fun_l23_n265(x)
- else
- fun_l23_n972(x)
- end
-end
-
-def fun_l22_n122(x)
- if (x < 1)
- fun_l23_n259(x)
- else
- fun_l23_n203(x)
- end
-end
-
-def fun_l22_n123(x)
- if (x < 1)
- fun_l23_n865(x)
- else
- fun_l23_n137(x)
- end
-end
-
-def fun_l22_n124(x)
- if (x < 1)
- fun_l23_n427(x)
- else
- fun_l23_n437(x)
- end
-end
-
-def fun_l22_n125(x)
- if (x < 1)
- fun_l23_n405(x)
- else
- fun_l23_n603(x)
- end
-end
-
-def fun_l22_n126(x)
- if (x < 1)
- fun_l23_n938(x)
- else
- fun_l23_n505(x)
- end
-end
-
-def fun_l22_n127(x)
- if (x < 1)
- fun_l23_n307(x)
- else
- fun_l23_n26(x)
- end
-end
-
-def fun_l22_n128(x)
- if (x < 1)
- fun_l23_n15(x)
- else
- fun_l23_n406(x)
- end
-end
-
-def fun_l22_n129(x)
- if (x < 1)
- fun_l23_n633(x)
- else
- fun_l23_n831(x)
- end
-end
-
-def fun_l22_n130(x)
- if (x < 1)
- fun_l23_n805(x)
- else
- fun_l23_n216(x)
- end
-end
-
-def fun_l22_n131(x)
- if (x < 1)
- fun_l23_n552(x)
- else
- fun_l23_n864(x)
- end
-end
-
-def fun_l22_n132(x)
- if (x < 1)
- fun_l23_n50(x)
- else
- fun_l23_n805(x)
- end
-end
-
-def fun_l22_n133(x)
- if (x < 1)
- fun_l23_n823(x)
- else
- fun_l23_n427(x)
- end
-end
-
-def fun_l22_n134(x)
- if (x < 1)
- fun_l23_n964(x)
- else
- fun_l23_n214(x)
- end
-end
-
-def fun_l22_n135(x)
- if (x < 1)
- fun_l23_n267(x)
- else
- fun_l23_n351(x)
- end
-end
-
-def fun_l22_n136(x)
- if (x < 1)
- fun_l23_n557(x)
- else
- fun_l23_n257(x)
- end
-end
-
-def fun_l22_n137(x)
- if (x < 1)
- fun_l23_n966(x)
- else
- fun_l23_n248(x)
- end
-end
-
-def fun_l22_n138(x)
- if (x < 1)
- fun_l23_n569(x)
- else
- fun_l23_n376(x)
- end
-end
-
-def fun_l22_n139(x)
- if (x < 1)
- fun_l23_n198(x)
- else
- fun_l23_n595(x)
- end
-end
-
-def fun_l22_n140(x)
- if (x < 1)
- fun_l23_n107(x)
- else
- fun_l23_n134(x)
- end
-end
-
-def fun_l22_n141(x)
- if (x < 1)
- fun_l23_n113(x)
- else
- fun_l23_n290(x)
- end
-end
-
-def fun_l22_n142(x)
- if (x < 1)
- fun_l23_n721(x)
- else
- fun_l23_n641(x)
- end
-end
-
-def fun_l22_n143(x)
- if (x < 1)
- fun_l23_n535(x)
- else
- fun_l23_n103(x)
- end
-end
-
-def fun_l22_n144(x)
- if (x < 1)
- fun_l23_n690(x)
- else
- fun_l23_n125(x)
- end
-end
-
-def fun_l22_n145(x)
- if (x < 1)
- fun_l23_n514(x)
- else
- fun_l23_n999(x)
- end
-end
-
-def fun_l22_n146(x)
- if (x < 1)
- fun_l23_n503(x)
- else
- fun_l23_n951(x)
- end
-end
-
-def fun_l22_n147(x)
- if (x < 1)
- fun_l23_n413(x)
- else
- fun_l23_n634(x)
- end
-end
-
-def fun_l22_n148(x)
- if (x < 1)
- fun_l23_n818(x)
- else
- fun_l23_n286(x)
- end
-end
-
-def fun_l22_n149(x)
- if (x < 1)
- fun_l23_n768(x)
- else
- fun_l23_n832(x)
- end
-end
-
-def fun_l22_n150(x)
- if (x < 1)
- fun_l23_n128(x)
- else
- fun_l23_n588(x)
- end
-end
-
-def fun_l22_n151(x)
- if (x < 1)
- fun_l23_n787(x)
- else
- fun_l23_n742(x)
- end
-end
-
-def fun_l22_n152(x)
- if (x < 1)
- fun_l23_n166(x)
- else
- fun_l23_n856(x)
- end
-end
-
-def fun_l22_n153(x)
- if (x < 1)
- fun_l23_n377(x)
- else
- fun_l23_n90(x)
- end
-end
-
-def fun_l22_n154(x)
- if (x < 1)
- fun_l23_n851(x)
- else
- fun_l23_n591(x)
- end
-end
-
-def fun_l22_n155(x)
- if (x < 1)
- fun_l23_n896(x)
- else
- fun_l23_n372(x)
- end
-end
-
-def fun_l22_n156(x)
- if (x < 1)
- fun_l23_n132(x)
- else
- fun_l23_n144(x)
- end
-end
-
-def fun_l22_n157(x)
- if (x < 1)
- fun_l23_n251(x)
- else
- fun_l23_n620(x)
- end
-end
-
-def fun_l22_n158(x)
- if (x < 1)
- fun_l23_n612(x)
- else
- fun_l23_n246(x)
- end
-end
-
-def fun_l22_n159(x)
- if (x < 1)
- fun_l23_n530(x)
- else
- fun_l23_n94(x)
- end
-end
-
-def fun_l22_n160(x)
- if (x < 1)
- fun_l23_n310(x)
- else
- fun_l23_n706(x)
- end
-end
-
-def fun_l22_n161(x)
- if (x < 1)
- fun_l23_n420(x)
- else
- fun_l23_n576(x)
- end
-end
-
-def fun_l22_n162(x)
- if (x < 1)
- fun_l23_n544(x)
- else
- fun_l23_n277(x)
- end
-end
-
-def fun_l22_n163(x)
- if (x < 1)
- fun_l23_n770(x)
- else
- fun_l23_n94(x)
- end
-end
-
-def fun_l22_n164(x)
- if (x < 1)
- fun_l23_n49(x)
- else
- fun_l23_n576(x)
- end
-end
-
-def fun_l22_n165(x)
- if (x < 1)
- fun_l23_n610(x)
- else
- fun_l23_n184(x)
- end
-end
-
-def fun_l22_n166(x)
- if (x < 1)
- fun_l23_n974(x)
- else
- fun_l23_n54(x)
- end
-end
-
-def fun_l22_n167(x)
- if (x < 1)
- fun_l23_n179(x)
- else
- fun_l23_n485(x)
- end
-end
-
-def fun_l22_n168(x)
- if (x < 1)
- fun_l23_n114(x)
- else
- fun_l23_n766(x)
- end
-end
-
-def fun_l22_n169(x)
- if (x < 1)
- fun_l23_n399(x)
- else
- fun_l23_n830(x)
- end
-end
-
-def fun_l22_n170(x)
- if (x < 1)
- fun_l23_n332(x)
- else
- fun_l23_n536(x)
- end
-end
-
-def fun_l22_n171(x)
- if (x < 1)
- fun_l23_n384(x)
- else
- fun_l23_n773(x)
- end
-end
-
-def fun_l22_n172(x)
- if (x < 1)
- fun_l23_n52(x)
- else
- fun_l23_n7(x)
- end
-end
-
-def fun_l22_n173(x)
- if (x < 1)
- fun_l23_n85(x)
- else
- fun_l23_n803(x)
- end
-end
-
-def fun_l22_n174(x)
- if (x < 1)
- fun_l23_n853(x)
- else
- fun_l23_n682(x)
- end
-end
-
-def fun_l22_n175(x)
- if (x < 1)
- fun_l23_n112(x)
- else
- fun_l23_n295(x)
- end
-end
-
-def fun_l22_n176(x)
- if (x < 1)
- fun_l23_n347(x)
- else
- fun_l23_n908(x)
- end
-end
-
-def fun_l22_n177(x)
- if (x < 1)
- fun_l23_n267(x)
- else
- fun_l23_n19(x)
- end
-end
-
-def fun_l22_n178(x)
- if (x < 1)
- fun_l23_n8(x)
- else
- fun_l23_n739(x)
- end
-end
-
-def fun_l22_n179(x)
- if (x < 1)
- fun_l23_n201(x)
- else
- fun_l23_n321(x)
- end
-end
-
-def fun_l22_n180(x)
- if (x < 1)
- fun_l23_n773(x)
- else
- fun_l23_n224(x)
- end
-end
-
-def fun_l22_n181(x)
- if (x < 1)
- fun_l23_n966(x)
- else
- fun_l23_n324(x)
- end
-end
-
-def fun_l22_n182(x)
- if (x < 1)
- fun_l23_n389(x)
- else
- fun_l23_n190(x)
- end
-end
-
-def fun_l22_n183(x)
- if (x < 1)
- fun_l23_n918(x)
- else
- fun_l23_n512(x)
- end
-end
-
-def fun_l22_n184(x)
- if (x < 1)
- fun_l23_n360(x)
- else
- fun_l23_n702(x)
- end
-end
-
-def fun_l22_n185(x)
- if (x < 1)
- fun_l23_n794(x)
- else
- fun_l23_n51(x)
- end
-end
-
-def fun_l22_n186(x)
- if (x < 1)
- fun_l23_n982(x)
- else
- fun_l23_n779(x)
- end
-end
-
-def fun_l22_n187(x)
- if (x < 1)
- fun_l23_n263(x)
- else
- fun_l23_n659(x)
- end
-end
-
-def fun_l22_n188(x)
- if (x < 1)
- fun_l23_n203(x)
- else
- fun_l23_n705(x)
- end
-end
-
-def fun_l22_n189(x)
- if (x < 1)
- fun_l23_n976(x)
- else
- fun_l23_n307(x)
- end
-end
-
-def fun_l22_n190(x)
- if (x < 1)
- fun_l23_n281(x)
- else
- fun_l23_n880(x)
- end
-end
-
-def fun_l22_n191(x)
- if (x < 1)
- fun_l23_n238(x)
- else
- fun_l23_n752(x)
- end
-end
-
-def fun_l22_n192(x)
- if (x < 1)
- fun_l23_n679(x)
- else
- fun_l23_n935(x)
- end
-end
-
-def fun_l22_n193(x)
- if (x < 1)
- fun_l23_n823(x)
- else
- fun_l23_n340(x)
- end
-end
-
-def fun_l22_n194(x)
- if (x < 1)
- fun_l23_n687(x)
- else
- fun_l23_n71(x)
- end
-end
-
-def fun_l22_n195(x)
- if (x < 1)
- fun_l23_n47(x)
- else
- fun_l23_n119(x)
- end
-end
-
-def fun_l22_n196(x)
- if (x < 1)
- fun_l23_n702(x)
- else
- fun_l23_n213(x)
- end
-end
-
-def fun_l22_n197(x)
- if (x < 1)
- fun_l23_n300(x)
- else
- fun_l23_n52(x)
- end
-end
-
-def fun_l22_n198(x)
- if (x < 1)
- fun_l23_n85(x)
- else
- fun_l23_n845(x)
- end
-end
-
-def fun_l22_n199(x)
- if (x < 1)
- fun_l23_n503(x)
- else
- fun_l23_n322(x)
- end
-end
-
-def fun_l22_n200(x)
- if (x < 1)
- fun_l23_n151(x)
- else
- fun_l23_n743(x)
- end
-end
-
-def fun_l22_n201(x)
- if (x < 1)
- fun_l23_n531(x)
- else
- fun_l23_n597(x)
- end
-end
-
-def fun_l22_n202(x)
- if (x < 1)
- fun_l23_n120(x)
- else
- fun_l23_n300(x)
- end
-end
-
-def fun_l22_n203(x)
- if (x < 1)
- fun_l23_n124(x)
- else
- fun_l23_n609(x)
- end
-end
-
-def fun_l22_n204(x)
- if (x < 1)
- fun_l23_n945(x)
- else
- fun_l23_n498(x)
- end
-end
-
-def fun_l22_n205(x)
- if (x < 1)
- fun_l23_n983(x)
- else
- fun_l23_n16(x)
- end
-end
-
-def fun_l22_n206(x)
- if (x < 1)
- fun_l23_n271(x)
- else
- fun_l23_n612(x)
- end
-end
-
-def fun_l22_n207(x)
- if (x < 1)
- fun_l23_n762(x)
- else
- fun_l23_n596(x)
- end
-end
-
-def fun_l22_n208(x)
- if (x < 1)
- fun_l23_n992(x)
- else
- fun_l23_n90(x)
- end
-end
-
-def fun_l22_n209(x)
- if (x < 1)
- fun_l23_n994(x)
- else
- fun_l23_n265(x)
- end
-end
-
-def fun_l22_n210(x)
- if (x < 1)
- fun_l23_n449(x)
- else
- fun_l23_n609(x)
- end
-end
-
-def fun_l22_n211(x)
- if (x < 1)
- fun_l23_n816(x)
- else
- fun_l23_n8(x)
- end
-end
-
-def fun_l22_n212(x)
- if (x < 1)
- fun_l23_n526(x)
- else
- fun_l23_n982(x)
- end
-end
-
-def fun_l22_n213(x)
- if (x < 1)
- fun_l23_n25(x)
- else
- fun_l23_n302(x)
- end
-end
-
-def fun_l22_n214(x)
- if (x < 1)
- fun_l23_n868(x)
- else
- fun_l23_n895(x)
- end
-end
-
-def fun_l22_n215(x)
- if (x < 1)
- fun_l23_n3(x)
- else
- fun_l23_n914(x)
- end
-end
-
-def fun_l22_n216(x)
- if (x < 1)
- fun_l23_n106(x)
- else
- fun_l23_n271(x)
- end
-end
-
-def fun_l22_n217(x)
- if (x < 1)
- fun_l23_n567(x)
- else
- fun_l23_n931(x)
- end
-end
-
-def fun_l22_n218(x)
- if (x < 1)
- fun_l23_n7(x)
- else
- fun_l23_n319(x)
- end
-end
-
-def fun_l22_n219(x)
- if (x < 1)
- fun_l23_n510(x)
- else
- fun_l23_n753(x)
- end
-end
-
-def fun_l22_n220(x)
- if (x < 1)
- fun_l23_n529(x)
- else
- fun_l23_n514(x)
- end
-end
-
-def fun_l22_n221(x)
- if (x < 1)
- fun_l23_n871(x)
- else
- fun_l23_n571(x)
- end
-end
-
-def fun_l22_n222(x)
- if (x < 1)
- fun_l23_n739(x)
- else
- fun_l23_n716(x)
- end
-end
-
-def fun_l22_n223(x)
- if (x < 1)
- fun_l23_n781(x)
- else
- fun_l23_n730(x)
- end
-end
-
-def fun_l22_n224(x)
- if (x < 1)
- fun_l23_n647(x)
- else
- fun_l23_n647(x)
- end
-end
-
-def fun_l22_n225(x)
- if (x < 1)
- fun_l23_n968(x)
- else
- fun_l23_n680(x)
- end
-end
-
-def fun_l22_n226(x)
- if (x < 1)
- fun_l23_n400(x)
- else
- fun_l23_n725(x)
- end
-end
-
-def fun_l22_n227(x)
- if (x < 1)
- fun_l23_n386(x)
- else
- fun_l23_n859(x)
- end
-end
-
-def fun_l22_n228(x)
- if (x < 1)
- fun_l23_n751(x)
- else
- fun_l23_n640(x)
- end
-end
-
-def fun_l22_n229(x)
- if (x < 1)
- fun_l23_n273(x)
- else
- fun_l23_n754(x)
- end
-end
-
-def fun_l22_n230(x)
- if (x < 1)
- fun_l23_n861(x)
- else
- fun_l23_n783(x)
- end
-end
-
-def fun_l22_n231(x)
- if (x < 1)
- fun_l23_n665(x)
- else
- fun_l23_n18(x)
- end
-end
-
-def fun_l22_n232(x)
- if (x < 1)
- fun_l23_n680(x)
- else
- fun_l23_n471(x)
- end
-end
-
-def fun_l22_n233(x)
- if (x < 1)
- fun_l23_n400(x)
- else
- fun_l23_n935(x)
- end
-end
-
-def fun_l22_n234(x)
- if (x < 1)
- fun_l23_n563(x)
- else
- fun_l23_n799(x)
- end
-end
-
-def fun_l22_n235(x)
- if (x < 1)
- fun_l23_n712(x)
- else
- fun_l23_n20(x)
- end
-end
-
-def fun_l22_n236(x)
- if (x < 1)
- fun_l23_n579(x)
- else
- fun_l23_n152(x)
- end
-end
-
-def fun_l22_n237(x)
- if (x < 1)
- fun_l23_n752(x)
- else
- fun_l23_n282(x)
- end
-end
-
-def fun_l22_n238(x)
- if (x < 1)
- fun_l23_n609(x)
- else
- fun_l23_n980(x)
- end
-end
-
-def fun_l22_n239(x)
- if (x < 1)
- fun_l23_n916(x)
- else
- fun_l23_n52(x)
- end
-end
-
-def fun_l22_n240(x)
- if (x < 1)
- fun_l23_n468(x)
- else
- fun_l23_n735(x)
- end
-end
-
-def fun_l22_n241(x)
- if (x < 1)
- fun_l23_n894(x)
- else
- fun_l23_n776(x)
- end
-end
-
-def fun_l22_n242(x)
- if (x < 1)
- fun_l23_n782(x)
- else
- fun_l23_n406(x)
- end
-end
-
-def fun_l22_n243(x)
- if (x < 1)
- fun_l23_n90(x)
- else
- fun_l23_n226(x)
- end
-end
-
-def fun_l22_n244(x)
- if (x < 1)
- fun_l23_n967(x)
- else
- fun_l23_n252(x)
- end
-end
-
-def fun_l22_n245(x)
- if (x < 1)
- fun_l23_n189(x)
- else
- fun_l23_n252(x)
- end
-end
-
-def fun_l22_n246(x)
- if (x < 1)
- fun_l23_n919(x)
- else
- fun_l23_n581(x)
- end
-end
-
-def fun_l22_n247(x)
- if (x < 1)
- fun_l23_n212(x)
- else
- fun_l23_n465(x)
- end
-end
-
-def fun_l22_n248(x)
- if (x < 1)
- fun_l23_n880(x)
- else
- fun_l23_n823(x)
- end
-end
-
-def fun_l22_n249(x)
- if (x < 1)
- fun_l23_n227(x)
- else
- fun_l23_n620(x)
- end
-end
-
-def fun_l22_n250(x)
- if (x < 1)
- fun_l23_n875(x)
- else
- fun_l23_n707(x)
- end
-end
-
-def fun_l22_n251(x)
- if (x < 1)
- fun_l23_n623(x)
- else
- fun_l23_n132(x)
- end
-end
-
-def fun_l22_n252(x)
- if (x < 1)
- fun_l23_n739(x)
- else
- fun_l23_n417(x)
- end
-end
-
-def fun_l22_n253(x)
- if (x < 1)
- fun_l23_n977(x)
- else
- fun_l23_n216(x)
- end
-end
-
-def fun_l22_n254(x)
- if (x < 1)
- fun_l23_n725(x)
- else
- fun_l23_n168(x)
- end
-end
-
-def fun_l22_n255(x)
- if (x < 1)
- fun_l23_n878(x)
- else
- fun_l23_n699(x)
- end
-end
-
-def fun_l22_n256(x)
- if (x < 1)
- fun_l23_n423(x)
- else
- fun_l23_n626(x)
- end
-end
-
-def fun_l22_n257(x)
- if (x < 1)
- fun_l23_n29(x)
- else
- fun_l23_n248(x)
- end
-end
-
-def fun_l22_n258(x)
- if (x < 1)
- fun_l23_n78(x)
- else
- fun_l23_n925(x)
- end
-end
-
-def fun_l22_n259(x)
- if (x < 1)
- fun_l23_n798(x)
- else
- fun_l23_n220(x)
- end
-end
-
-def fun_l22_n260(x)
- if (x < 1)
- fun_l23_n621(x)
- else
- fun_l23_n936(x)
- end
-end
-
-def fun_l22_n261(x)
- if (x < 1)
- fun_l23_n894(x)
- else
- fun_l23_n463(x)
- end
-end
-
-def fun_l22_n262(x)
- if (x < 1)
- fun_l23_n336(x)
- else
- fun_l23_n535(x)
- end
-end
-
-def fun_l22_n263(x)
- if (x < 1)
- fun_l23_n246(x)
- else
- fun_l23_n676(x)
- end
-end
-
-def fun_l22_n264(x)
- if (x < 1)
- fun_l23_n986(x)
- else
- fun_l23_n675(x)
- end
-end
-
-def fun_l22_n265(x)
- if (x < 1)
- fun_l23_n92(x)
- else
- fun_l23_n380(x)
- end
-end
-
-def fun_l22_n266(x)
- if (x < 1)
- fun_l23_n945(x)
- else
- fun_l23_n842(x)
- end
-end
-
-def fun_l22_n267(x)
- if (x < 1)
- fun_l23_n351(x)
- else
- fun_l23_n261(x)
- end
-end
-
-def fun_l22_n268(x)
- if (x < 1)
- fun_l23_n784(x)
- else
- fun_l23_n306(x)
- end
-end
-
-def fun_l22_n269(x)
- if (x < 1)
- fun_l23_n940(x)
- else
- fun_l23_n129(x)
- end
-end
-
-def fun_l22_n270(x)
- if (x < 1)
- fun_l23_n491(x)
- else
- fun_l23_n806(x)
- end
-end
-
-def fun_l22_n271(x)
- if (x < 1)
- fun_l23_n68(x)
- else
- fun_l23_n91(x)
- end
-end
-
-def fun_l22_n272(x)
- if (x < 1)
- fun_l23_n965(x)
- else
- fun_l23_n665(x)
- end
-end
-
-def fun_l22_n273(x)
- if (x < 1)
- fun_l23_n461(x)
- else
- fun_l23_n619(x)
- end
-end
-
-def fun_l22_n274(x)
- if (x < 1)
- fun_l23_n635(x)
- else
- fun_l23_n755(x)
- end
-end
-
-def fun_l22_n275(x)
- if (x < 1)
- fun_l23_n192(x)
- else
- fun_l23_n729(x)
- end
-end
-
-def fun_l22_n276(x)
- if (x < 1)
- fun_l23_n94(x)
- else
- fun_l23_n832(x)
- end
-end
-
-def fun_l22_n277(x)
- if (x < 1)
- fun_l23_n619(x)
- else
- fun_l23_n444(x)
- end
-end
-
-def fun_l22_n278(x)
- if (x < 1)
- fun_l23_n682(x)
- else
- fun_l23_n579(x)
- end
-end
-
-def fun_l22_n279(x)
- if (x < 1)
- fun_l23_n889(x)
- else
- fun_l23_n425(x)
- end
-end
-
-def fun_l22_n280(x)
- if (x < 1)
- fun_l23_n101(x)
- else
- fun_l23_n215(x)
- end
-end
-
-def fun_l22_n281(x)
- if (x < 1)
- fun_l23_n747(x)
- else
- fun_l23_n436(x)
- end
-end
-
-def fun_l22_n282(x)
- if (x < 1)
- fun_l23_n519(x)
- else
- fun_l23_n438(x)
- end
-end
-
-def fun_l22_n283(x)
- if (x < 1)
- fun_l23_n312(x)
- else
- fun_l23_n804(x)
- end
-end
-
-def fun_l22_n284(x)
- if (x < 1)
- fun_l23_n150(x)
- else
- fun_l23_n71(x)
- end
-end
-
-def fun_l22_n285(x)
- if (x < 1)
- fun_l23_n698(x)
- else
- fun_l23_n254(x)
- end
-end
-
-def fun_l22_n286(x)
- if (x < 1)
- fun_l23_n97(x)
- else
- fun_l23_n782(x)
- end
-end
-
-def fun_l22_n287(x)
- if (x < 1)
- fun_l23_n315(x)
- else
- fun_l23_n164(x)
- end
-end
-
-def fun_l22_n288(x)
- if (x < 1)
- fun_l23_n704(x)
- else
- fun_l23_n927(x)
- end
-end
-
-def fun_l22_n289(x)
- if (x < 1)
- fun_l23_n447(x)
- else
- fun_l23_n104(x)
- end
-end
-
-def fun_l22_n290(x)
- if (x < 1)
- fun_l23_n533(x)
- else
- fun_l23_n687(x)
- end
-end
-
-def fun_l22_n291(x)
- if (x < 1)
- fun_l23_n897(x)
- else
- fun_l23_n692(x)
- end
-end
-
-def fun_l22_n292(x)
- if (x < 1)
- fun_l23_n515(x)
- else
- fun_l23_n258(x)
- end
-end
-
-def fun_l22_n293(x)
- if (x < 1)
- fun_l23_n25(x)
- else
- fun_l23_n608(x)
- end
-end
-
-def fun_l22_n294(x)
- if (x < 1)
- fun_l23_n313(x)
- else
- fun_l23_n675(x)
- end
-end
-
-def fun_l22_n295(x)
- if (x < 1)
- fun_l23_n154(x)
- else
- fun_l23_n779(x)
- end
-end
-
-def fun_l22_n296(x)
- if (x < 1)
- fun_l23_n731(x)
- else
- fun_l23_n310(x)
- end
-end
-
-def fun_l22_n297(x)
- if (x < 1)
- fun_l23_n443(x)
- else
- fun_l23_n709(x)
- end
-end
-
-def fun_l22_n298(x)
- if (x < 1)
- fun_l23_n100(x)
- else
- fun_l23_n900(x)
- end
-end
-
-def fun_l22_n299(x)
- if (x < 1)
- fun_l23_n64(x)
- else
- fun_l23_n80(x)
- end
-end
-
-def fun_l22_n300(x)
- if (x < 1)
- fun_l23_n361(x)
- else
- fun_l23_n535(x)
- end
-end
-
-def fun_l22_n301(x)
- if (x < 1)
- fun_l23_n628(x)
- else
- fun_l23_n272(x)
- end
-end
-
-def fun_l22_n302(x)
- if (x < 1)
- fun_l23_n930(x)
- else
- fun_l23_n795(x)
- end
-end
-
-def fun_l22_n303(x)
- if (x < 1)
- fun_l23_n642(x)
- else
- fun_l23_n766(x)
- end
-end
-
-def fun_l22_n304(x)
- if (x < 1)
- fun_l23_n191(x)
- else
- fun_l23_n439(x)
- end
-end
-
-def fun_l22_n305(x)
- if (x < 1)
- fun_l23_n387(x)
- else
- fun_l23_n999(x)
- end
-end
-
-def fun_l22_n306(x)
- if (x < 1)
- fun_l23_n470(x)
- else
- fun_l23_n572(x)
- end
-end
-
-def fun_l22_n307(x)
- if (x < 1)
- fun_l23_n942(x)
- else
- fun_l23_n254(x)
- end
-end
-
-def fun_l22_n308(x)
- if (x < 1)
- fun_l23_n664(x)
- else
- fun_l23_n73(x)
- end
-end
-
-def fun_l22_n309(x)
- if (x < 1)
- fun_l23_n63(x)
- else
- fun_l23_n321(x)
- end
-end
-
-def fun_l22_n310(x)
- if (x < 1)
- fun_l23_n348(x)
- else
- fun_l23_n961(x)
- end
-end
-
-def fun_l22_n311(x)
- if (x < 1)
- fun_l23_n555(x)
- else
- fun_l23_n315(x)
- end
-end
-
-def fun_l22_n312(x)
- if (x < 1)
- fun_l23_n978(x)
- else
- fun_l23_n498(x)
- end
-end
-
-def fun_l22_n313(x)
- if (x < 1)
- fun_l23_n880(x)
- else
- fun_l23_n696(x)
- end
-end
-
-def fun_l22_n314(x)
- if (x < 1)
- fun_l23_n325(x)
- else
- fun_l23_n43(x)
- end
-end
-
-def fun_l22_n315(x)
- if (x < 1)
- fun_l23_n848(x)
- else
- fun_l23_n314(x)
- end
-end
-
-def fun_l22_n316(x)
- if (x < 1)
- fun_l23_n660(x)
- else
- fun_l23_n378(x)
- end
-end
-
-def fun_l22_n317(x)
- if (x < 1)
- fun_l23_n975(x)
- else
- fun_l23_n503(x)
- end
-end
-
-def fun_l22_n318(x)
- if (x < 1)
- fun_l23_n41(x)
- else
- fun_l23_n746(x)
- end
-end
-
-def fun_l22_n319(x)
- if (x < 1)
- fun_l23_n325(x)
- else
- fun_l23_n565(x)
- end
-end
-
-def fun_l22_n320(x)
- if (x < 1)
- fun_l23_n19(x)
- else
- fun_l23_n922(x)
- end
-end
-
-def fun_l22_n321(x)
- if (x < 1)
- fun_l23_n235(x)
- else
- fun_l23_n284(x)
- end
-end
-
-def fun_l22_n322(x)
- if (x < 1)
- fun_l23_n591(x)
- else
- fun_l23_n821(x)
- end
-end
-
-def fun_l22_n323(x)
- if (x < 1)
- fun_l23_n23(x)
- else
- fun_l23_n151(x)
- end
-end
-
-def fun_l22_n324(x)
- if (x < 1)
- fun_l23_n361(x)
- else
- fun_l23_n322(x)
- end
-end
-
-def fun_l22_n325(x)
- if (x < 1)
- fun_l23_n245(x)
- else
- fun_l23_n205(x)
- end
-end
-
-def fun_l22_n326(x)
- if (x < 1)
- fun_l23_n568(x)
- else
- fun_l23_n133(x)
- end
-end
-
-def fun_l22_n327(x)
- if (x < 1)
- fun_l23_n895(x)
- else
- fun_l23_n315(x)
- end
-end
-
-def fun_l22_n328(x)
- if (x < 1)
- fun_l23_n473(x)
- else
- fun_l23_n315(x)
- end
-end
-
-def fun_l22_n329(x)
- if (x < 1)
- fun_l23_n618(x)
- else
- fun_l23_n196(x)
- end
-end
-
-def fun_l22_n330(x)
- if (x < 1)
- fun_l23_n97(x)
- else
- fun_l23_n422(x)
- end
-end
-
-def fun_l22_n331(x)
- if (x < 1)
- fun_l23_n101(x)
- else
- fun_l23_n447(x)
- end
-end
-
-def fun_l22_n332(x)
- if (x < 1)
- fun_l23_n875(x)
- else
- fun_l23_n197(x)
- end
-end
-
-def fun_l22_n333(x)
- if (x < 1)
- fun_l23_n25(x)
- else
- fun_l23_n499(x)
- end
-end
-
-def fun_l22_n334(x)
- if (x < 1)
- fun_l23_n602(x)
- else
- fun_l23_n75(x)
- end
-end
-
-def fun_l22_n335(x)
- if (x < 1)
- fun_l23_n370(x)
- else
- fun_l23_n150(x)
- end
-end
-
-def fun_l22_n336(x)
- if (x < 1)
- fun_l23_n960(x)
- else
- fun_l23_n498(x)
- end
-end
-
-def fun_l22_n337(x)
- if (x < 1)
- fun_l23_n675(x)
- else
- fun_l23_n525(x)
- end
-end
-
-def fun_l22_n338(x)
- if (x < 1)
- fun_l23_n445(x)
- else
- fun_l23_n581(x)
- end
-end
-
-def fun_l22_n339(x)
- if (x < 1)
- fun_l23_n718(x)
- else
- fun_l23_n995(x)
- end
-end
-
-def fun_l22_n340(x)
- if (x < 1)
- fun_l23_n790(x)
- else
- fun_l23_n370(x)
- end
-end
-
-def fun_l22_n341(x)
- if (x < 1)
- fun_l23_n234(x)
- else
- fun_l23_n187(x)
- end
-end
-
-def fun_l22_n342(x)
- if (x < 1)
- fun_l23_n777(x)
- else
- fun_l23_n411(x)
- end
-end
-
-def fun_l22_n343(x)
- if (x < 1)
- fun_l23_n258(x)
- else
- fun_l23_n129(x)
- end
-end
-
-def fun_l22_n344(x)
- if (x < 1)
- fun_l23_n715(x)
- else
- fun_l23_n381(x)
- end
-end
-
-def fun_l22_n345(x)
- if (x < 1)
- fun_l23_n495(x)
- else
- fun_l23_n892(x)
- end
-end
-
-def fun_l22_n346(x)
- if (x < 1)
- fun_l23_n433(x)
- else
- fun_l23_n987(x)
- end
-end
-
-def fun_l22_n347(x)
- if (x < 1)
- fun_l23_n569(x)
- else
- fun_l23_n832(x)
- end
-end
-
-def fun_l22_n348(x)
- if (x < 1)
- fun_l23_n425(x)
- else
- fun_l23_n894(x)
- end
-end
-
-def fun_l22_n349(x)
- if (x < 1)
- fun_l23_n186(x)
- else
- fun_l23_n211(x)
- end
-end
-
-def fun_l22_n350(x)
- if (x < 1)
- fun_l23_n435(x)
- else
- fun_l23_n393(x)
- end
-end
-
-def fun_l22_n351(x)
- if (x < 1)
- fun_l23_n942(x)
- else
- fun_l23_n364(x)
- end
-end
-
-def fun_l22_n352(x)
- if (x < 1)
- fun_l23_n29(x)
- else
- fun_l23_n574(x)
- end
-end
-
-def fun_l22_n353(x)
- if (x < 1)
- fun_l23_n548(x)
- else
- fun_l23_n663(x)
- end
-end
-
-def fun_l22_n354(x)
- if (x < 1)
- fun_l23_n238(x)
- else
- fun_l23_n693(x)
- end
-end
-
-def fun_l22_n355(x)
- if (x < 1)
- fun_l23_n459(x)
- else
- fun_l23_n197(x)
- end
-end
-
-def fun_l22_n356(x)
- if (x < 1)
- fun_l23_n478(x)
- else
- fun_l23_n905(x)
- end
-end
-
-def fun_l22_n357(x)
- if (x < 1)
- fun_l23_n732(x)
- else
- fun_l23_n124(x)
- end
-end
-
-def fun_l22_n358(x)
- if (x < 1)
- fun_l23_n716(x)
- else
- fun_l23_n758(x)
- end
-end
-
-def fun_l22_n359(x)
- if (x < 1)
- fun_l23_n376(x)
- else
- fun_l23_n883(x)
- end
-end
-
-def fun_l22_n360(x)
- if (x < 1)
- fun_l23_n100(x)
- else
- fun_l23_n485(x)
- end
-end
-
-def fun_l22_n361(x)
- if (x < 1)
- fun_l23_n62(x)
- else
- fun_l23_n794(x)
- end
-end
-
-def fun_l22_n362(x)
- if (x < 1)
- fun_l23_n951(x)
- else
- fun_l23_n23(x)
- end
-end
-
-def fun_l22_n363(x)
- if (x < 1)
- fun_l23_n298(x)
- else
- fun_l23_n775(x)
- end
-end
-
-def fun_l22_n364(x)
- if (x < 1)
- fun_l23_n53(x)
- else
- fun_l23_n595(x)
- end
-end
-
-def fun_l22_n365(x)
- if (x < 1)
- fun_l23_n695(x)
- else
- fun_l23_n401(x)
- end
-end
-
-def fun_l22_n366(x)
- if (x < 1)
- fun_l23_n475(x)
- else
- fun_l23_n762(x)
- end
-end
-
-def fun_l22_n367(x)
- if (x < 1)
- fun_l23_n706(x)
- else
- fun_l23_n527(x)
- end
-end
-
-def fun_l22_n368(x)
- if (x < 1)
- fun_l23_n919(x)
- else
- fun_l23_n301(x)
- end
-end
-
-def fun_l22_n369(x)
- if (x < 1)
- fun_l23_n755(x)
- else
- fun_l23_n256(x)
- end
-end
-
-def fun_l22_n370(x)
- if (x < 1)
- fun_l23_n592(x)
- else
- fun_l23_n608(x)
- end
-end
-
-def fun_l22_n371(x)
- if (x < 1)
- fun_l23_n192(x)
- else
- fun_l23_n10(x)
- end
-end
-
-def fun_l22_n372(x)
- if (x < 1)
- fun_l23_n332(x)
- else
- fun_l23_n448(x)
- end
-end
-
-def fun_l22_n373(x)
- if (x < 1)
- fun_l23_n135(x)
- else
- fun_l23_n793(x)
- end
-end
-
-def fun_l22_n374(x)
- if (x < 1)
- fun_l23_n141(x)
- else
- fun_l23_n669(x)
- end
-end
-
-def fun_l22_n375(x)
- if (x < 1)
- fun_l23_n474(x)
- else
- fun_l23_n356(x)
- end
-end
-
-def fun_l22_n376(x)
- if (x < 1)
- fun_l23_n69(x)
- else
- fun_l23_n384(x)
- end
-end
-
-def fun_l22_n377(x)
- if (x < 1)
- fun_l23_n386(x)
- else
- fun_l23_n552(x)
- end
-end
-
-def fun_l22_n378(x)
- if (x < 1)
- fun_l23_n878(x)
- else
- fun_l23_n131(x)
- end
-end
-
-def fun_l22_n379(x)
- if (x < 1)
- fun_l23_n929(x)
- else
- fun_l23_n479(x)
- end
-end
-
-def fun_l22_n380(x)
- if (x < 1)
- fun_l23_n782(x)
- else
- fun_l23_n745(x)
- end
-end
-
-def fun_l22_n381(x)
- if (x < 1)
- fun_l23_n126(x)
- else
- fun_l23_n732(x)
- end
-end
-
-def fun_l22_n382(x)
- if (x < 1)
- fun_l23_n694(x)
- else
- fun_l23_n291(x)
- end
-end
-
-def fun_l22_n383(x)
- if (x < 1)
- fun_l23_n165(x)
- else
- fun_l23_n49(x)
- end
-end
-
-def fun_l22_n384(x)
- if (x < 1)
- fun_l23_n453(x)
- else
- fun_l23_n144(x)
- end
-end
-
-def fun_l22_n385(x)
- if (x < 1)
- fun_l23_n182(x)
- else
- fun_l23_n974(x)
- end
-end
-
-def fun_l22_n386(x)
- if (x < 1)
- fun_l23_n861(x)
- else
- fun_l23_n185(x)
- end
-end
-
-def fun_l22_n387(x)
- if (x < 1)
- fun_l23_n962(x)
- else
- fun_l23_n578(x)
- end
-end
-
-def fun_l22_n388(x)
- if (x < 1)
- fun_l23_n88(x)
- else
- fun_l23_n508(x)
- end
-end
-
-def fun_l22_n389(x)
- if (x < 1)
- fun_l23_n421(x)
- else
- fun_l23_n886(x)
- end
-end
-
-def fun_l22_n390(x)
- if (x < 1)
- fun_l23_n992(x)
- else
- fun_l23_n540(x)
- end
-end
-
-def fun_l22_n391(x)
- if (x < 1)
- fun_l23_n996(x)
- else
- fun_l23_n533(x)
- end
-end
-
-def fun_l22_n392(x)
- if (x < 1)
- fun_l23_n97(x)
- else
- fun_l23_n803(x)
- end
-end
-
-def fun_l22_n393(x)
- if (x < 1)
- fun_l23_n505(x)
- else
- fun_l23_n263(x)
- end
-end
-
-def fun_l22_n394(x)
- if (x < 1)
- fun_l23_n52(x)
- else
- fun_l23_n566(x)
- end
-end
-
-def fun_l22_n395(x)
- if (x < 1)
- fun_l23_n290(x)
- else
- fun_l23_n558(x)
- end
-end
-
-def fun_l22_n396(x)
- if (x < 1)
- fun_l23_n51(x)
- else
- fun_l23_n365(x)
- end
-end
-
-def fun_l22_n397(x)
- if (x < 1)
- fun_l23_n505(x)
- else
- fun_l23_n461(x)
- end
-end
-
-def fun_l22_n398(x)
- if (x < 1)
- fun_l23_n415(x)
- else
- fun_l23_n460(x)
- end
-end
-
-def fun_l22_n399(x)
- if (x < 1)
- fun_l23_n370(x)
- else
- fun_l23_n377(x)
- end
-end
-
-def fun_l22_n400(x)
- if (x < 1)
- fun_l23_n644(x)
- else
- fun_l23_n300(x)
- end
-end
-
-def fun_l22_n401(x)
- if (x < 1)
- fun_l23_n22(x)
- else
- fun_l23_n348(x)
- end
-end
-
-def fun_l22_n402(x)
- if (x < 1)
- fun_l23_n286(x)
- else
- fun_l23_n991(x)
- end
-end
-
-def fun_l22_n403(x)
- if (x < 1)
- fun_l23_n928(x)
- else
- fun_l23_n627(x)
- end
-end
-
-def fun_l22_n404(x)
- if (x < 1)
- fun_l23_n884(x)
- else
- fun_l23_n326(x)
- end
-end
-
-def fun_l22_n405(x)
- if (x < 1)
- fun_l23_n586(x)
- else
- fun_l23_n913(x)
- end
-end
-
-def fun_l22_n406(x)
- if (x < 1)
- fun_l23_n732(x)
- else
- fun_l23_n964(x)
- end
-end
-
-def fun_l22_n407(x)
- if (x < 1)
- fun_l23_n301(x)
- else
- fun_l23_n946(x)
- end
-end
-
-def fun_l22_n408(x)
- if (x < 1)
- fun_l23_n540(x)
- else
- fun_l23_n29(x)
- end
-end
-
-def fun_l22_n409(x)
- if (x < 1)
- fun_l23_n793(x)
- else
- fun_l23_n420(x)
- end
-end
-
-def fun_l22_n410(x)
- if (x < 1)
- fun_l23_n766(x)
- else
- fun_l23_n473(x)
- end
-end
-
-def fun_l22_n411(x)
- if (x < 1)
- fun_l23_n683(x)
- else
- fun_l23_n12(x)
- end
-end
-
-def fun_l22_n412(x)
- if (x < 1)
- fun_l23_n273(x)
- else
- fun_l23_n45(x)
- end
-end
-
-def fun_l22_n413(x)
- if (x < 1)
- fun_l23_n732(x)
- else
- fun_l23_n313(x)
- end
-end
-
-def fun_l22_n414(x)
- if (x < 1)
- fun_l23_n291(x)
- else
- fun_l23_n216(x)
- end
-end
-
-def fun_l22_n415(x)
- if (x < 1)
- fun_l23_n6(x)
- else
- fun_l23_n482(x)
- end
-end
-
-def fun_l22_n416(x)
- if (x < 1)
- fun_l23_n214(x)
- else
- fun_l23_n341(x)
- end
-end
-
-def fun_l22_n417(x)
- if (x < 1)
- fun_l23_n690(x)
- else
- fun_l23_n773(x)
- end
-end
-
-def fun_l22_n418(x)
- if (x < 1)
- fun_l23_n437(x)
- else
- fun_l23_n941(x)
- end
-end
-
-def fun_l22_n419(x)
- if (x < 1)
- fun_l23_n131(x)
- else
- fun_l23_n14(x)
- end
-end
-
-def fun_l22_n420(x)
- if (x < 1)
- fun_l23_n924(x)
- else
- fun_l23_n359(x)
- end
-end
-
-def fun_l22_n421(x)
- if (x < 1)
- fun_l23_n653(x)
- else
- fun_l23_n875(x)
- end
-end
-
-def fun_l22_n422(x)
- if (x < 1)
- fun_l23_n411(x)
- else
- fun_l23_n981(x)
- end
-end
-
-def fun_l22_n423(x)
- if (x < 1)
- fun_l23_n258(x)
- else
- fun_l23_n876(x)
- end
-end
-
-def fun_l22_n424(x)
- if (x < 1)
- fun_l23_n430(x)
- else
- fun_l23_n62(x)
- end
-end
-
-def fun_l22_n425(x)
- if (x < 1)
- fun_l23_n444(x)
- else
- fun_l23_n48(x)
- end
-end
-
-def fun_l22_n426(x)
- if (x < 1)
- fun_l23_n905(x)
- else
- fun_l23_n458(x)
- end
-end
-
-def fun_l22_n427(x)
- if (x < 1)
- fun_l23_n440(x)
- else
- fun_l23_n411(x)
- end
-end
-
-def fun_l22_n428(x)
- if (x < 1)
- fun_l23_n655(x)
- else
- fun_l23_n622(x)
- end
-end
-
-def fun_l22_n429(x)
- if (x < 1)
- fun_l23_n587(x)
- else
- fun_l23_n638(x)
- end
-end
-
-def fun_l22_n430(x)
- if (x < 1)
- fun_l23_n156(x)
- else
- fun_l23_n900(x)
- end
-end
-
-def fun_l22_n431(x)
- if (x < 1)
- fun_l23_n136(x)
- else
- fun_l23_n562(x)
- end
-end
-
-def fun_l22_n432(x)
- if (x < 1)
- fun_l23_n897(x)
- else
- fun_l23_n16(x)
- end
-end
-
-def fun_l22_n433(x)
- if (x < 1)
- fun_l23_n28(x)
- else
- fun_l23_n504(x)
- end
-end
-
-def fun_l22_n434(x)
- if (x < 1)
- fun_l23_n987(x)
- else
- fun_l23_n640(x)
- end
-end
-
-def fun_l22_n435(x)
- if (x < 1)
- fun_l23_n395(x)
- else
- fun_l23_n922(x)
- end
-end
-
-def fun_l22_n436(x)
- if (x < 1)
- fun_l23_n679(x)
- else
- fun_l23_n576(x)
- end
-end
-
-def fun_l22_n437(x)
- if (x < 1)
- fun_l23_n915(x)
- else
- fun_l23_n240(x)
- end
-end
-
-def fun_l22_n438(x)
- if (x < 1)
- fun_l23_n889(x)
- else
- fun_l23_n38(x)
- end
-end
-
-def fun_l22_n439(x)
- if (x < 1)
- fun_l23_n522(x)
- else
- fun_l23_n481(x)
- end
-end
-
-def fun_l22_n440(x)
- if (x < 1)
- fun_l23_n458(x)
- else
- fun_l23_n81(x)
- end
-end
-
-def fun_l22_n441(x)
- if (x < 1)
- fun_l23_n220(x)
- else
- fun_l23_n393(x)
- end
-end
-
-def fun_l22_n442(x)
- if (x < 1)
- fun_l23_n404(x)
- else
- fun_l23_n945(x)
- end
-end
-
-def fun_l22_n443(x)
- if (x < 1)
- fun_l23_n347(x)
- else
- fun_l23_n377(x)
- end
-end
-
-def fun_l22_n444(x)
- if (x < 1)
- fun_l23_n484(x)
- else
- fun_l23_n277(x)
- end
-end
-
-def fun_l22_n445(x)
- if (x < 1)
- fun_l23_n118(x)
- else
- fun_l23_n578(x)
- end
-end
-
-def fun_l22_n446(x)
- if (x < 1)
- fun_l23_n674(x)
- else
- fun_l23_n238(x)
- end
-end
-
-def fun_l22_n447(x)
- if (x < 1)
- fun_l23_n290(x)
- else
- fun_l23_n275(x)
- end
-end
-
-def fun_l22_n448(x)
- if (x < 1)
- fun_l23_n358(x)
- else
- fun_l23_n939(x)
- end
-end
-
-def fun_l22_n449(x)
- if (x < 1)
- fun_l23_n38(x)
- else
- fun_l23_n122(x)
- end
-end
-
-def fun_l22_n450(x)
- if (x < 1)
- fun_l23_n575(x)
- else
- fun_l23_n582(x)
- end
-end
-
-def fun_l22_n451(x)
- if (x < 1)
- fun_l23_n657(x)
- else
- fun_l23_n986(x)
- end
-end
-
-def fun_l22_n452(x)
- if (x < 1)
- fun_l23_n771(x)
- else
- fun_l23_n603(x)
- end
-end
-
-def fun_l22_n453(x)
- if (x < 1)
- fun_l23_n981(x)
- else
- fun_l23_n762(x)
- end
-end
-
-def fun_l22_n454(x)
- if (x < 1)
- fun_l23_n93(x)
- else
- fun_l23_n26(x)
- end
-end
-
-def fun_l22_n455(x)
- if (x < 1)
- fun_l23_n675(x)
- else
- fun_l23_n332(x)
- end
-end
-
-def fun_l22_n456(x)
- if (x < 1)
- fun_l23_n923(x)
- else
- fun_l23_n416(x)
- end
-end
-
-def fun_l22_n457(x)
- if (x < 1)
- fun_l23_n179(x)
- else
- fun_l23_n485(x)
- end
-end
-
-def fun_l22_n458(x)
- if (x < 1)
- fun_l23_n38(x)
- else
- fun_l23_n319(x)
- end
-end
-
-def fun_l22_n459(x)
- if (x < 1)
- fun_l23_n22(x)
- else
- fun_l23_n747(x)
- end
-end
-
-def fun_l22_n460(x)
- if (x < 1)
- fun_l23_n643(x)
- else
- fun_l23_n132(x)
- end
-end
-
-def fun_l22_n461(x)
- if (x < 1)
- fun_l23_n165(x)
- else
- fun_l23_n673(x)
- end
-end
-
-def fun_l22_n462(x)
- if (x < 1)
- fun_l23_n988(x)
- else
- fun_l23_n916(x)
- end
-end
-
-def fun_l22_n463(x)
- if (x < 1)
- fun_l23_n331(x)
- else
- fun_l23_n853(x)
- end
-end
-
-def fun_l22_n464(x)
- if (x < 1)
- fun_l23_n699(x)
- else
- fun_l23_n771(x)
- end
-end
-
-def fun_l22_n465(x)
- if (x < 1)
- fun_l23_n358(x)
- else
- fun_l23_n966(x)
- end
-end
-
-def fun_l22_n466(x)
- if (x < 1)
- fun_l23_n723(x)
- else
- fun_l23_n897(x)
- end
-end
-
-def fun_l22_n467(x)
- if (x < 1)
- fun_l23_n69(x)
- else
- fun_l23_n186(x)
- end
-end
-
-def fun_l22_n468(x)
- if (x < 1)
- fun_l23_n661(x)
- else
- fun_l23_n420(x)
- end
-end
-
-def fun_l22_n469(x)
- if (x < 1)
- fun_l23_n175(x)
- else
- fun_l23_n270(x)
- end
-end
-
-def fun_l22_n470(x)
- if (x < 1)
- fun_l23_n556(x)
- else
- fun_l23_n344(x)
- end
-end
-
-def fun_l22_n471(x)
- if (x < 1)
- fun_l23_n413(x)
- else
- fun_l23_n338(x)
- end
-end
-
-def fun_l22_n472(x)
- if (x < 1)
- fun_l23_n456(x)
- else
- fun_l23_n125(x)
- end
-end
-
-def fun_l22_n473(x)
- if (x < 1)
- fun_l23_n364(x)
- else
- fun_l23_n347(x)
- end
-end
-
-def fun_l22_n474(x)
- if (x < 1)
- fun_l23_n436(x)
- else
- fun_l23_n897(x)
- end
-end
-
-def fun_l22_n475(x)
- if (x < 1)
- fun_l23_n613(x)
- else
- fun_l23_n851(x)
- end
-end
-
-def fun_l22_n476(x)
- if (x < 1)
- fun_l23_n754(x)
- else
- fun_l23_n755(x)
- end
-end
-
-def fun_l22_n477(x)
- if (x < 1)
- fun_l23_n899(x)
- else
- fun_l23_n496(x)
- end
-end
-
-def fun_l22_n478(x)
- if (x < 1)
- fun_l23_n183(x)
- else
- fun_l23_n864(x)
- end
-end
-
-def fun_l22_n479(x)
- if (x < 1)
- fun_l23_n11(x)
- else
- fun_l23_n679(x)
- end
-end
-
-def fun_l22_n480(x)
- if (x < 1)
- fun_l23_n160(x)
- else
- fun_l23_n747(x)
- end
-end
-
-def fun_l22_n481(x)
- if (x < 1)
- fun_l23_n138(x)
- else
- fun_l23_n762(x)
- end
-end
-
-def fun_l22_n482(x)
- if (x < 1)
- fun_l23_n467(x)
- else
- fun_l23_n148(x)
- end
-end
-
-def fun_l22_n483(x)
- if (x < 1)
- fun_l23_n97(x)
- else
- fun_l23_n826(x)
- end
-end
-
-def fun_l22_n484(x)
- if (x < 1)
- fun_l23_n754(x)
- else
- fun_l23_n661(x)
- end
-end
-
-def fun_l22_n485(x)
- if (x < 1)
- fun_l23_n415(x)
- else
- fun_l23_n531(x)
- end
-end
-
-def fun_l22_n486(x)
- if (x < 1)
- fun_l23_n543(x)
- else
- fun_l23_n271(x)
- end
-end
-
-def fun_l22_n487(x)
- if (x < 1)
- fun_l23_n240(x)
- else
- fun_l23_n221(x)
- end
-end
-
-def fun_l22_n488(x)
- if (x < 1)
- fun_l23_n208(x)
- else
- fun_l23_n633(x)
- end
-end
-
-def fun_l22_n489(x)
- if (x < 1)
- fun_l23_n539(x)
- else
- fun_l23_n925(x)
- end
-end
-
-def fun_l22_n490(x)
- if (x < 1)
- fun_l23_n141(x)
- else
- fun_l23_n142(x)
- end
-end
-
-def fun_l22_n491(x)
- if (x < 1)
- fun_l23_n899(x)
- else
- fun_l23_n407(x)
- end
-end
-
-def fun_l22_n492(x)
- if (x < 1)
- fun_l23_n237(x)
- else
- fun_l23_n836(x)
- end
-end
-
-def fun_l22_n493(x)
- if (x < 1)
- fun_l23_n23(x)
- else
- fun_l23_n266(x)
- end
-end
-
-def fun_l22_n494(x)
- if (x < 1)
- fun_l23_n819(x)
- else
- fun_l23_n473(x)
- end
-end
-
-def fun_l22_n495(x)
- if (x < 1)
- fun_l23_n182(x)
- else
- fun_l23_n253(x)
- end
-end
-
-def fun_l22_n496(x)
- if (x < 1)
- fun_l23_n459(x)
- else
- fun_l23_n421(x)
- end
-end
-
-def fun_l22_n497(x)
- if (x < 1)
- fun_l23_n553(x)
- else
- fun_l23_n207(x)
- end
-end
-
-def fun_l22_n498(x)
- if (x < 1)
- fun_l23_n5(x)
- else
- fun_l23_n261(x)
- end
-end
-
-def fun_l22_n499(x)
- if (x < 1)
- fun_l23_n53(x)
- else
- fun_l23_n478(x)
- end
-end
-
-def fun_l22_n500(x)
- if (x < 1)
- fun_l23_n489(x)
- else
- fun_l23_n77(x)
- end
-end
-
-def fun_l22_n501(x)
- if (x < 1)
- fun_l23_n551(x)
- else
- fun_l23_n854(x)
- end
-end
-
-def fun_l22_n502(x)
- if (x < 1)
- fun_l23_n32(x)
- else
- fun_l23_n241(x)
- end
-end
-
-def fun_l22_n503(x)
- if (x < 1)
- fun_l23_n536(x)
- else
- fun_l23_n820(x)
- end
-end
-
-def fun_l22_n504(x)
- if (x < 1)
- fun_l23_n521(x)
- else
- fun_l23_n551(x)
- end
-end
-
-def fun_l22_n505(x)
- if (x < 1)
- fun_l23_n812(x)
- else
- fun_l23_n885(x)
- end
-end
-
-def fun_l22_n506(x)
- if (x < 1)
- fun_l23_n935(x)
- else
- fun_l23_n38(x)
- end
-end
-
-def fun_l22_n507(x)
- if (x < 1)
- fun_l23_n99(x)
- else
- fun_l23_n907(x)
- end
-end
-
-def fun_l22_n508(x)
- if (x < 1)
- fun_l23_n89(x)
- else
- fun_l23_n322(x)
- end
-end
-
-def fun_l22_n509(x)
- if (x < 1)
- fun_l23_n279(x)
- else
- fun_l23_n103(x)
- end
-end
-
-def fun_l22_n510(x)
- if (x < 1)
- fun_l23_n476(x)
- else
- fun_l23_n947(x)
- end
-end
-
-def fun_l22_n511(x)
- if (x < 1)
- fun_l23_n872(x)
- else
- fun_l23_n497(x)
- end
-end
-
-def fun_l22_n512(x)
- if (x < 1)
- fun_l23_n508(x)
- else
- fun_l23_n548(x)
- end
-end
-
-def fun_l22_n513(x)
- if (x < 1)
- fun_l23_n640(x)
- else
- fun_l23_n696(x)
- end
-end
-
-def fun_l22_n514(x)
- if (x < 1)
- fun_l23_n694(x)
- else
- fun_l23_n483(x)
- end
-end
-
-def fun_l22_n515(x)
- if (x < 1)
- fun_l23_n914(x)
- else
- fun_l23_n772(x)
- end
-end
-
-def fun_l22_n516(x)
- if (x < 1)
- fun_l23_n192(x)
- else
- fun_l23_n35(x)
- end
-end
-
-def fun_l22_n517(x)
- if (x < 1)
- fun_l23_n597(x)
- else
- fun_l23_n473(x)
- end
-end
-
-def fun_l22_n518(x)
- if (x < 1)
- fun_l23_n974(x)
- else
- fun_l23_n315(x)
- end
-end
-
-def fun_l22_n519(x)
- if (x < 1)
- fun_l23_n391(x)
- else
- fun_l23_n800(x)
- end
-end
-
-def fun_l22_n520(x)
- if (x < 1)
- fun_l23_n106(x)
- else
- fun_l23_n170(x)
- end
-end
-
-def fun_l22_n521(x)
- if (x < 1)
- fun_l23_n926(x)
- else
- fun_l23_n495(x)
- end
-end
-
-def fun_l22_n522(x)
- if (x < 1)
- fun_l23_n135(x)
- else
- fun_l23_n304(x)
- end
-end
-
-def fun_l22_n523(x)
- if (x < 1)
- fun_l23_n765(x)
- else
- fun_l23_n53(x)
- end
-end
-
-def fun_l22_n524(x)
- if (x < 1)
- fun_l23_n699(x)
- else
- fun_l23_n158(x)
- end
-end
-
-def fun_l22_n525(x)
- if (x < 1)
- fun_l23_n759(x)
- else
- fun_l23_n34(x)
- end
-end
-
-def fun_l22_n526(x)
- if (x < 1)
- fun_l23_n813(x)
- else
- fun_l23_n938(x)
- end
-end
-
-def fun_l22_n527(x)
- if (x < 1)
- fun_l23_n207(x)
- else
- fun_l23_n549(x)
- end
-end
-
-def fun_l22_n528(x)
- if (x < 1)
- fun_l23_n468(x)
- else
- fun_l23_n681(x)
- end
-end
-
-def fun_l22_n529(x)
- if (x < 1)
- fun_l23_n643(x)
- else
- fun_l23_n652(x)
- end
-end
-
-def fun_l22_n530(x)
- if (x < 1)
- fun_l23_n254(x)
- else
- fun_l23_n283(x)
- end
-end
-
-def fun_l22_n531(x)
- if (x < 1)
- fun_l23_n750(x)
- else
- fun_l23_n969(x)
- end
-end
-
-def fun_l22_n532(x)
- if (x < 1)
- fun_l23_n343(x)
- else
- fun_l23_n578(x)
- end
-end
-
-def fun_l22_n533(x)
- if (x < 1)
- fun_l23_n240(x)
- else
- fun_l23_n698(x)
- end
-end
-
-def fun_l22_n534(x)
- if (x < 1)
- fun_l23_n497(x)
- else
- fun_l23_n992(x)
- end
-end
-
-def fun_l22_n535(x)
- if (x < 1)
- fun_l23_n554(x)
- else
- fun_l23_n53(x)
- end
-end
-
-def fun_l22_n536(x)
- if (x < 1)
- fun_l23_n165(x)
- else
- fun_l23_n467(x)
- end
-end
-
-def fun_l22_n537(x)
- if (x < 1)
- fun_l23_n2(x)
- else
- fun_l23_n560(x)
- end
-end
-
-def fun_l22_n538(x)
- if (x < 1)
- fun_l23_n151(x)
- else
- fun_l23_n434(x)
- end
-end
-
-def fun_l22_n539(x)
- if (x < 1)
- fun_l23_n108(x)
- else
- fun_l23_n108(x)
- end
-end
-
-def fun_l22_n540(x)
- if (x < 1)
- fun_l23_n879(x)
- else
- fun_l23_n608(x)
- end
-end
-
-def fun_l22_n541(x)
- if (x < 1)
- fun_l23_n160(x)
- else
- fun_l23_n820(x)
- end
-end
-
-def fun_l22_n542(x)
- if (x < 1)
- fun_l23_n813(x)
- else
- fun_l23_n169(x)
- end
-end
-
-def fun_l22_n543(x)
- if (x < 1)
- fun_l23_n151(x)
- else
- fun_l23_n420(x)
- end
-end
-
-def fun_l22_n544(x)
- if (x < 1)
- fun_l23_n81(x)
- else
- fun_l23_n226(x)
- end
-end
-
-def fun_l22_n545(x)
- if (x < 1)
- fun_l23_n464(x)
- else
- fun_l23_n602(x)
- end
-end
-
-def fun_l22_n546(x)
- if (x < 1)
- fun_l23_n798(x)
- else
- fun_l23_n395(x)
- end
-end
-
-def fun_l22_n547(x)
- if (x < 1)
- fun_l23_n597(x)
- else
- fun_l23_n147(x)
- end
-end
-
-def fun_l22_n548(x)
- if (x < 1)
- fun_l23_n952(x)
- else
- fun_l23_n515(x)
- end
-end
-
-def fun_l22_n549(x)
- if (x < 1)
- fun_l23_n134(x)
- else
- fun_l23_n154(x)
- end
-end
-
-def fun_l22_n550(x)
- if (x < 1)
- fun_l23_n35(x)
- else
- fun_l23_n492(x)
- end
-end
-
-def fun_l22_n551(x)
- if (x < 1)
- fun_l23_n878(x)
- else
- fun_l23_n899(x)
- end
-end
-
-def fun_l22_n552(x)
- if (x < 1)
- fun_l23_n574(x)
- else
- fun_l23_n108(x)
- end
-end
-
-def fun_l22_n553(x)
- if (x < 1)
- fun_l23_n386(x)
- else
- fun_l23_n565(x)
- end
-end
-
-def fun_l22_n554(x)
- if (x < 1)
- fun_l23_n551(x)
- else
- fun_l23_n905(x)
- end
-end
-
-def fun_l22_n555(x)
- if (x < 1)
- fun_l23_n680(x)
- else
- fun_l23_n367(x)
- end
-end
-
-def fun_l22_n556(x)
- if (x < 1)
- fun_l23_n452(x)
- else
- fun_l23_n211(x)
- end
-end
-
-def fun_l22_n557(x)
- if (x < 1)
- fun_l23_n597(x)
- else
- fun_l23_n112(x)
- end
-end
-
-def fun_l22_n558(x)
- if (x < 1)
- fun_l23_n22(x)
- else
- fun_l23_n966(x)
- end
-end
-
-def fun_l22_n559(x)
- if (x < 1)
- fun_l23_n512(x)
- else
- fun_l23_n337(x)
- end
-end
-
-def fun_l22_n560(x)
- if (x < 1)
- fun_l23_n649(x)
- else
- fun_l23_n361(x)
- end
-end
-
-def fun_l22_n561(x)
- if (x < 1)
- fun_l23_n500(x)
- else
- fun_l23_n113(x)
- end
-end
-
-def fun_l22_n562(x)
- if (x < 1)
- fun_l23_n455(x)
- else
- fun_l23_n734(x)
- end
-end
-
-def fun_l22_n563(x)
- if (x < 1)
- fun_l23_n847(x)
- else
- fun_l23_n86(x)
- end
-end
-
-def fun_l22_n564(x)
- if (x < 1)
- fun_l23_n251(x)
- else
- fun_l23_n203(x)
- end
-end
-
-def fun_l22_n565(x)
- if (x < 1)
- fun_l23_n977(x)
- else
- fun_l23_n893(x)
- end
-end
-
-def fun_l22_n566(x)
- if (x < 1)
- fun_l23_n693(x)
- else
- fun_l23_n507(x)
- end
-end
-
-def fun_l22_n567(x)
- if (x < 1)
- fun_l23_n194(x)
- else
- fun_l23_n972(x)
- end
-end
-
-def fun_l22_n568(x)
- if (x < 1)
- fun_l23_n44(x)
- else
- fun_l23_n694(x)
- end
-end
-
-def fun_l22_n569(x)
- if (x < 1)
- fun_l23_n277(x)
- else
- fun_l23_n317(x)
- end
-end
-
-def fun_l22_n570(x)
- if (x < 1)
- fun_l23_n40(x)
- else
- fun_l23_n10(x)
- end
-end
-
-def fun_l22_n571(x)
- if (x < 1)
- fun_l23_n199(x)
- else
- fun_l23_n454(x)
- end
-end
-
-def fun_l22_n572(x)
- if (x < 1)
- fun_l23_n821(x)
- else
- fun_l23_n556(x)
- end
-end
-
-def fun_l22_n573(x)
- if (x < 1)
- fun_l23_n142(x)
- else
- fun_l23_n307(x)
- end
-end
-
-def fun_l22_n574(x)
- if (x < 1)
- fun_l23_n291(x)
- else
- fun_l23_n152(x)
- end
-end
-
-def fun_l22_n575(x)
- if (x < 1)
- fun_l23_n547(x)
- else
- fun_l23_n580(x)
- end
-end
-
-def fun_l22_n576(x)
- if (x < 1)
- fun_l23_n841(x)
- else
- fun_l23_n518(x)
- end
-end
-
-def fun_l22_n577(x)
- if (x < 1)
- fun_l23_n91(x)
- else
- fun_l23_n730(x)
- end
-end
-
-def fun_l22_n578(x)
- if (x < 1)
- fun_l23_n626(x)
- else
- fun_l23_n403(x)
- end
-end
-
-def fun_l22_n579(x)
- if (x < 1)
- fun_l23_n12(x)
- else
- fun_l23_n863(x)
- end
-end
-
-def fun_l22_n580(x)
- if (x < 1)
- fun_l23_n878(x)
- else
- fun_l23_n28(x)
- end
-end
-
-def fun_l22_n581(x)
- if (x < 1)
- fun_l23_n793(x)
- else
- fun_l23_n942(x)
- end
-end
-
-def fun_l22_n582(x)
- if (x < 1)
- fun_l23_n168(x)
- else
- fun_l23_n102(x)
- end
-end
-
-def fun_l22_n583(x)
- if (x < 1)
- fun_l23_n40(x)
- else
- fun_l23_n231(x)
- end
-end
-
-def fun_l22_n584(x)
- if (x < 1)
- fun_l23_n54(x)
- else
- fun_l23_n734(x)
- end
-end
-
-def fun_l22_n585(x)
- if (x < 1)
- fun_l23_n878(x)
- else
- fun_l23_n938(x)
- end
-end
-
-def fun_l22_n586(x)
- if (x < 1)
- fun_l23_n89(x)
- else
- fun_l23_n533(x)
- end
-end
-
-def fun_l22_n587(x)
- if (x < 1)
- fun_l23_n289(x)
- else
- fun_l23_n587(x)
- end
-end
-
-def fun_l22_n588(x)
- if (x < 1)
- fun_l23_n716(x)
- else
- fun_l23_n785(x)
- end
-end
-
-def fun_l22_n589(x)
- if (x < 1)
- fun_l23_n22(x)
- else
- fun_l23_n820(x)
- end
-end
-
-def fun_l22_n590(x)
- if (x < 1)
- fun_l23_n945(x)
- else
- fun_l23_n644(x)
- end
-end
-
-def fun_l22_n591(x)
- if (x < 1)
- fun_l23_n209(x)
- else
- fun_l23_n86(x)
- end
-end
-
-def fun_l22_n592(x)
- if (x < 1)
- fun_l23_n209(x)
- else
- fun_l23_n971(x)
- end
-end
-
-def fun_l22_n593(x)
- if (x < 1)
- fun_l23_n489(x)
- else
- fun_l23_n725(x)
- end
-end
-
-def fun_l22_n594(x)
- if (x < 1)
- fun_l23_n42(x)
- else
- fun_l23_n405(x)
- end
-end
-
-def fun_l22_n595(x)
- if (x < 1)
- fun_l23_n162(x)
- else
- fun_l23_n222(x)
- end
-end
-
-def fun_l22_n596(x)
- if (x < 1)
- fun_l23_n942(x)
- else
- fun_l23_n193(x)
- end
-end
-
-def fun_l22_n597(x)
- if (x < 1)
- fun_l23_n616(x)
- else
- fun_l23_n806(x)
- end
-end
-
-def fun_l22_n598(x)
- if (x < 1)
- fun_l23_n278(x)
- else
- fun_l23_n330(x)
- end
-end
-
-def fun_l22_n599(x)
- if (x < 1)
- fun_l23_n863(x)
- else
- fun_l23_n428(x)
- end
-end
-
-def fun_l22_n600(x)
- if (x < 1)
- fun_l23_n315(x)
- else
- fun_l23_n319(x)
- end
-end
-
-def fun_l22_n601(x)
- if (x < 1)
- fun_l23_n409(x)
- else
- fun_l23_n682(x)
- end
-end
-
-def fun_l22_n602(x)
- if (x < 1)
- fun_l23_n307(x)
- else
- fun_l23_n47(x)
- end
-end
-
-def fun_l22_n603(x)
- if (x < 1)
- fun_l23_n578(x)
- else
- fun_l23_n762(x)
- end
-end
-
-def fun_l22_n604(x)
- if (x < 1)
- fun_l23_n208(x)
- else
- fun_l23_n314(x)
- end
-end
-
-def fun_l22_n605(x)
- if (x < 1)
- fun_l23_n259(x)
- else
- fun_l23_n720(x)
- end
-end
-
-def fun_l22_n606(x)
- if (x < 1)
- fun_l23_n272(x)
- else
- fun_l23_n619(x)
- end
-end
-
-def fun_l22_n607(x)
- if (x < 1)
- fun_l23_n550(x)
- else
- fun_l23_n850(x)
- end
-end
-
-def fun_l22_n608(x)
- if (x < 1)
- fun_l23_n617(x)
- else
- fun_l23_n999(x)
- end
-end
-
-def fun_l22_n609(x)
- if (x < 1)
- fun_l23_n203(x)
- else
- fun_l23_n597(x)
- end
-end
-
-def fun_l22_n610(x)
- if (x < 1)
- fun_l23_n547(x)
- else
- fun_l23_n252(x)
- end
-end
-
-def fun_l22_n611(x)
- if (x < 1)
- fun_l23_n427(x)
- else
- fun_l23_n16(x)
- end
-end
-
-def fun_l22_n612(x)
- if (x < 1)
- fun_l23_n236(x)
- else
- fun_l23_n142(x)
- end
-end
-
-def fun_l22_n613(x)
- if (x < 1)
- fun_l23_n94(x)
- else
- fun_l23_n739(x)
- end
-end
-
-def fun_l22_n614(x)
- if (x < 1)
- fun_l23_n504(x)
- else
- fun_l23_n101(x)
- end
-end
-
-def fun_l22_n615(x)
- if (x < 1)
- fun_l23_n469(x)
- else
- fun_l23_n650(x)
- end
-end
-
-def fun_l22_n616(x)
- if (x < 1)
- fun_l23_n752(x)
- else
- fun_l23_n262(x)
- end
-end
-
-def fun_l22_n617(x)
- if (x < 1)
- fun_l23_n256(x)
- else
- fun_l23_n269(x)
- end
-end
-
-def fun_l22_n618(x)
- if (x < 1)
- fun_l23_n784(x)
- else
- fun_l23_n402(x)
- end
-end
-
-def fun_l22_n619(x)
- if (x < 1)
- fun_l23_n405(x)
- else
- fun_l23_n585(x)
- end
-end
-
-def fun_l22_n620(x)
- if (x < 1)
- fun_l23_n33(x)
- else
- fun_l23_n357(x)
- end
-end
-
-def fun_l22_n621(x)
- if (x < 1)
- fun_l23_n448(x)
- else
- fun_l23_n618(x)
- end
-end
-
-def fun_l22_n622(x)
- if (x < 1)
- fun_l23_n520(x)
- else
- fun_l23_n612(x)
- end
-end
-
-def fun_l22_n623(x)
- if (x < 1)
- fun_l23_n54(x)
- else
- fun_l23_n872(x)
- end
-end
-
-def fun_l22_n624(x)
- if (x < 1)
- fun_l23_n915(x)
- else
- fun_l23_n1(x)
- end
-end
-
-def fun_l22_n625(x)
- if (x < 1)
- fun_l23_n274(x)
- else
- fun_l23_n509(x)
- end
-end
-
-def fun_l22_n626(x)
- if (x < 1)
- fun_l23_n506(x)
- else
- fun_l23_n938(x)
- end
-end
-
-def fun_l22_n627(x)
- if (x < 1)
- fun_l23_n463(x)
- else
- fun_l23_n436(x)
- end
-end
-
-def fun_l22_n628(x)
- if (x < 1)
- fun_l23_n33(x)
- else
- fun_l23_n279(x)
- end
-end
-
-def fun_l22_n629(x)
- if (x < 1)
- fun_l23_n825(x)
- else
- fun_l23_n11(x)
- end
-end
-
-def fun_l22_n630(x)
- if (x < 1)
- fun_l23_n778(x)
- else
- fun_l23_n77(x)
- end
-end
-
-def fun_l22_n631(x)
- if (x < 1)
- fun_l23_n826(x)
- else
- fun_l23_n601(x)
- end
-end
-
-def fun_l22_n632(x)
- if (x < 1)
- fun_l23_n973(x)
- else
- fun_l23_n444(x)
- end
-end
-
-def fun_l22_n633(x)
- if (x < 1)
- fun_l23_n59(x)
- else
- fun_l23_n578(x)
- end
-end
-
-def fun_l22_n634(x)
- if (x < 1)
- fun_l23_n366(x)
- else
- fun_l23_n128(x)
- end
-end
-
-def fun_l22_n635(x)
- if (x < 1)
- fun_l23_n733(x)
- else
- fun_l23_n486(x)
- end
-end
-
-def fun_l22_n636(x)
- if (x < 1)
- fun_l23_n22(x)
- else
- fun_l23_n997(x)
- end
-end
-
-def fun_l22_n637(x)
- if (x < 1)
- fun_l23_n286(x)
- else
- fun_l23_n609(x)
- end
-end
-
-def fun_l22_n638(x)
- if (x < 1)
- fun_l23_n519(x)
- else
- fun_l23_n381(x)
- end
-end
-
-def fun_l22_n639(x)
- if (x < 1)
- fun_l23_n697(x)
- else
- fun_l23_n954(x)
- end
-end
-
-def fun_l22_n640(x)
- if (x < 1)
- fun_l23_n348(x)
- else
- fun_l23_n261(x)
- end
-end
-
-def fun_l22_n641(x)
- if (x < 1)
- fun_l23_n426(x)
- else
- fun_l23_n166(x)
- end
-end
-
-def fun_l22_n642(x)
- if (x < 1)
- fun_l23_n488(x)
- else
- fun_l23_n79(x)
- end
-end
-
-def fun_l22_n643(x)
- if (x < 1)
- fun_l23_n186(x)
- else
- fun_l23_n723(x)
- end
-end
-
-def fun_l22_n644(x)
- if (x < 1)
- fun_l23_n582(x)
- else
- fun_l23_n365(x)
- end
-end
-
-def fun_l22_n645(x)
- if (x < 1)
- fun_l23_n36(x)
- else
- fun_l23_n726(x)
- end
-end
-
-def fun_l22_n646(x)
- if (x < 1)
- fun_l23_n585(x)
- else
- fun_l23_n770(x)
- end
-end
-
-def fun_l22_n647(x)
- if (x < 1)
- fun_l23_n68(x)
- else
- fun_l23_n261(x)
- end
-end
-
-def fun_l22_n648(x)
- if (x < 1)
- fun_l23_n208(x)
- else
- fun_l23_n302(x)
- end
-end
-
-def fun_l22_n649(x)
- if (x < 1)
- fun_l23_n539(x)
- else
- fun_l23_n731(x)
- end
-end
-
-def fun_l22_n650(x)
- if (x < 1)
- fun_l23_n709(x)
- else
- fun_l23_n144(x)
- end
-end
-
-def fun_l22_n651(x)
- if (x < 1)
- fun_l23_n802(x)
- else
- fun_l23_n886(x)
- end
-end
-
-def fun_l22_n652(x)
- if (x < 1)
- fun_l23_n796(x)
- else
- fun_l23_n574(x)
- end
-end
-
-def fun_l22_n653(x)
- if (x < 1)
- fun_l23_n755(x)
- else
- fun_l23_n960(x)
- end
-end
-
-def fun_l22_n654(x)
- if (x < 1)
- fun_l23_n415(x)
- else
- fun_l23_n543(x)
- end
-end
-
-def fun_l22_n655(x)
- if (x < 1)
- fun_l23_n932(x)
- else
- fun_l23_n412(x)
- end
-end
-
-def fun_l22_n656(x)
- if (x < 1)
- fun_l23_n216(x)
- else
- fun_l23_n869(x)
- end
-end
-
-def fun_l22_n657(x)
- if (x < 1)
- fun_l23_n750(x)
- else
- fun_l23_n66(x)
- end
-end
-
-def fun_l22_n658(x)
- if (x < 1)
- fun_l23_n400(x)
- else
- fun_l23_n31(x)
- end
-end
-
-def fun_l22_n659(x)
- if (x < 1)
- fun_l23_n815(x)
- else
- fun_l23_n866(x)
- end
-end
-
-def fun_l22_n660(x)
- if (x < 1)
- fun_l23_n459(x)
- else
- fun_l23_n833(x)
- end
-end
-
-def fun_l22_n661(x)
- if (x < 1)
- fun_l23_n167(x)
- else
- fun_l23_n861(x)
- end
-end
-
-def fun_l22_n662(x)
- if (x < 1)
- fun_l23_n789(x)
- else
- fun_l23_n543(x)
- end
-end
-
-def fun_l22_n663(x)
- if (x < 1)
- fun_l23_n850(x)
- else
- fun_l23_n899(x)
- end
-end
-
-def fun_l22_n664(x)
- if (x < 1)
- fun_l23_n986(x)
- else
- fun_l23_n924(x)
- end
-end
-
-def fun_l22_n665(x)
- if (x < 1)
- fun_l23_n667(x)
- else
- fun_l23_n510(x)
- end
-end
-
-def fun_l22_n666(x)
- if (x < 1)
- fun_l23_n744(x)
- else
- fun_l23_n530(x)
- end
-end
-
-def fun_l22_n667(x)
- if (x < 1)
- fun_l23_n930(x)
- else
- fun_l23_n693(x)
- end
-end
-
-def fun_l22_n668(x)
- if (x < 1)
- fun_l23_n942(x)
- else
- fun_l23_n785(x)
- end
-end
-
-def fun_l22_n669(x)
- if (x < 1)
- fun_l23_n520(x)
- else
- fun_l23_n342(x)
- end
-end
-
-def fun_l22_n670(x)
- if (x < 1)
- fun_l23_n865(x)
- else
- fun_l23_n63(x)
- end
-end
-
-def fun_l22_n671(x)
- if (x < 1)
- fun_l23_n173(x)
- else
- fun_l23_n142(x)
- end
-end
-
-def fun_l22_n672(x)
- if (x < 1)
- fun_l23_n487(x)
- else
- fun_l23_n400(x)
- end
-end
-
-def fun_l22_n673(x)
- if (x < 1)
- fun_l23_n330(x)
- else
- fun_l23_n639(x)
- end
-end
-
-def fun_l22_n674(x)
- if (x < 1)
- fun_l23_n593(x)
- else
- fun_l23_n653(x)
- end
-end
-
-def fun_l22_n675(x)
- if (x < 1)
- fun_l23_n167(x)
- else
- fun_l23_n173(x)
- end
-end
-
-def fun_l22_n676(x)
- if (x < 1)
- fun_l23_n288(x)
- else
- fun_l23_n412(x)
- end
-end
-
-def fun_l22_n677(x)
- if (x < 1)
- fun_l23_n266(x)
- else
- fun_l23_n728(x)
- end
-end
-
-def fun_l22_n678(x)
- if (x < 1)
- fun_l23_n137(x)
- else
- fun_l23_n277(x)
- end
-end
-
-def fun_l22_n679(x)
- if (x < 1)
- fun_l23_n732(x)
- else
- fun_l23_n760(x)
- end
-end
-
-def fun_l22_n680(x)
- if (x < 1)
- fun_l23_n372(x)
- else
- fun_l23_n26(x)
- end
-end
-
-def fun_l22_n681(x)
- if (x < 1)
- fun_l23_n156(x)
- else
- fun_l23_n449(x)
- end
-end
-
-def fun_l22_n682(x)
- if (x < 1)
- fun_l23_n117(x)
- else
- fun_l23_n711(x)
- end
-end
-
-def fun_l22_n683(x)
- if (x < 1)
- fun_l23_n732(x)
- else
- fun_l23_n922(x)
- end
-end
-
-def fun_l22_n684(x)
- if (x < 1)
- fun_l23_n116(x)
- else
- fun_l23_n347(x)
- end
-end
-
-def fun_l22_n685(x)
- if (x < 1)
- fun_l23_n277(x)
- else
- fun_l23_n837(x)
- end
-end
-
-def fun_l22_n686(x)
- if (x < 1)
- fun_l23_n578(x)
- else
- fun_l23_n290(x)
- end
-end
-
-def fun_l22_n687(x)
- if (x < 1)
- fun_l23_n858(x)
- else
- fun_l23_n390(x)
- end
-end
-
-def fun_l22_n688(x)
- if (x < 1)
- fun_l23_n52(x)
- else
- fun_l23_n759(x)
- end
-end
-
-def fun_l22_n689(x)
- if (x < 1)
- fun_l23_n873(x)
- else
- fun_l23_n25(x)
- end
-end
-
-def fun_l22_n690(x)
- if (x < 1)
- fun_l23_n262(x)
- else
- fun_l23_n511(x)
- end
-end
-
-def fun_l22_n691(x)
- if (x < 1)
- fun_l23_n654(x)
- else
- fun_l23_n359(x)
- end
-end
-
-def fun_l22_n692(x)
- if (x < 1)
- fun_l23_n933(x)
- else
- fun_l23_n369(x)
- end
-end
-
-def fun_l22_n693(x)
- if (x < 1)
- fun_l23_n845(x)
- else
- fun_l23_n999(x)
- end
-end
-
-def fun_l22_n694(x)
- if (x < 1)
- fun_l23_n479(x)
- else
- fun_l23_n284(x)
- end
-end
-
-def fun_l22_n695(x)
- if (x < 1)
- fun_l23_n383(x)
- else
- fun_l23_n91(x)
- end
-end
-
-def fun_l22_n696(x)
- if (x < 1)
- fun_l23_n467(x)
- else
- fun_l23_n555(x)
- end
-end
-
-def fun_l22_n697(x)
- if (x < 1)
- fun_l23_n590(x)
- else
- fun_l23_n372(x)
- end
-end
-
-def fun_l22_n698(x)
- if (x < 1)
- fun_l23_n706(x)
- else
- fun_l23_n195(x)
- end
-end
-
-def fun_l22_n699(x)
- if (x < 1)
- fun_l23_n621(x)
- else
- fun_l23_n265(x)
- end
-end
-
-def fun_l22_n700(x)
- if (x < 1)
- fun_l23_n505(x)
- else
- fun_l23_n831(x)
- end
-end
-
-def fun_l22_n701(x)
- if (x < 1)
- fun_l23_n361(x)
- else
- fun_l23_n74(x)
- end
-end
-
-def fun_l22_n702(x)
- if (x < 1)
- fun_l23_n734(x)
- else
- fun_l23_n922(x)
- end
-end
-
-def fun_l22_n703(x)
- if (x < 1)
- fun_l23_n457(x)
- else
- fun_l23_n219(x)
- end
-end
-
-def fun_l22_n704(x)
- if (x < 1)
- fun_l23_n436(x)
- else
- fun_l23_n733(x)
- end
-end
-
-def fun_l22_n705(x)
- if (x < 1)
- fun_l23_n150(x)
- else
- fun_l23_n463(x)
- end
-end
-
-def fun_l22_n706(x)
- if (x < 1)
- fun_l23_n486(x)
- else
- fun_l23_n906(x)
- end
-end
-
-def fun_l22_n707(x)
- if (x < 1)
- fun_l23_n826(x)
- else
- fun_l23_n829(x)
- end
-end
-
-def fun_l22_n708(x)
- if (x < 1)
- fun_l23_n186(x)
- else
- fun_l23_n555(x)
- end
-end
-
-def fun_l22_n709(x)
- if (x < 1)
- fun_l23_n186(x)
- else
- fun_l23_n739(x)
- end
-end
-
-def fun_l22_n710(x)
- if (x < 1)
- fun_l23_n58(x)
- else
- fun_l23_n395(x)
- end
-end
-
-def fun_l22_n711(x)
- if (x < 1)
- fun_l23_n916(x)
- else
- fun_l23_n546(x)
- end
-end
-
-def fun_l22_n712(x)
- if (x < 1)
- fun_l23_n309(x)
- else
- fun_l23_n582(x)
- end
-end
-
-def fun_l22_n713(x)
- if (x < 1)
- fun_l23_n460(x)
- else
- fun_l23_n1(x)
- end
-end
-
-def fun_l22_n714(x)
- if (x < 1)
- fun_l23_n270(x)
- else
- fun_l23_n888(x)
- end
-end
-
-def fun_l22_n715(x)
- if (x < 1)
- fun_l23_n564(x)
- else
- fun_l23_n652(x)
- end
-end
-
-def fun_l22_n716(x)
- if (x < 1)
- fun_l23_n14(x)
- else
- fun_l23_n862(x)
- end
-end
-
-def fun_l22_n717(x)
- if (x < 1)
- fun_l23_n15(x)
- else
- fun_l23_n366(x)
- end
-end
-
-def fun_l22_n718(x)
- if (x < 1)
- fun_l23_n580(x)
- else
- fun_l23_n367(x)
- end
-end
-
-def fun_l22_n719(x)
- if (x < 1)
- fun_l23_n256(x)
- else
- fun_l23_n385(x)
- end
-end
-
-def fun_l22_n720(x)
- if (x < 1)
- fun_l23_n735(x)
- else
- fun_l23_n811(x)
- end
-end
-
-def fun_l22_n721(x)
- if (x < 1)
- fun_l23_n348(x)
- else
- fun_l23_n681(x)
- end
-end
-
-def fun_l22_n722(x)
- if (x < 1)
- fun_l23_n908(x)
- else
- fun_l23_n80(x)
- end
-end
-
-def fun_l22_n723(x)
- if (x < 1)
- fun_l23_n523(x)
- else
- fun_l23_n91(x)
- end
-end
-
-def fun_l22_n724(x)
- if (x < 1)
- fun_l23_n212(x)
- else
- fun_l23_n220(x)
- end
-end
-
-def fun_l22_n725(x)
- if (x < 1)
- fun_l23_n396(x)
- else
- fun_l23_n855(x)
- end
-end
-
-def fun_l22_n726(x)
- if (x < 1)
- fun_l23_n717(x)
- else
- fun_l23_n314(x)
- end
-end
-
-def fun_l22_n727(x)
- if (x < 1)
- fun_l23_n152(x)
- else
- fun_l23_n374(x)
- end
-end
-
-def fun_l22_n728(x)
- if (x < 1)
- fun_l23_n464(x)
- else
- fun_l23_n439(x)
- end
-end
-
-def fun_l22_n729(x)
- if (x < 1)
- fun_l23_n631(x)
- else
- fun_l23_n601(x)
- end
-end
-
-def fun_l22_n730(x)
- if (x < 1)
- fun_l23_n689(x)
- else
- fun_l23_n929(x)
- end
-end
-
-def fun_l22_n731(x)
- if (x < 1)
- fun_l23_n691(x)
- else
- fun_l23_n868(x)
- end
-end
-
-def fun_l22_n732(x)
- if (x < 1)
- fun_l23_n629(x)
- else
- fun_l23_n997(x)
- end
-end
-
-def fun_l22_n733(x)
- if (x < 1)
- fun_l23_n815(x)
- else
- fun_l23_n696(x)
- end
-end
-
-def fun_l22_n734(x)
- if (x < 1)
- fun_l23_n636(x)
- else
- fun_l23_n858(x)
- end
-end
-
-def fun_l22_n735(x)
- if (x < 1)
- fun_l23_n131(x)
- else
- fun_l23_n350(x)
- end
-end
-
-def fun_l22_n736(x)
- if (x < 1)
- fun_l23_n509(x)
- else
- fun_l23_n197(x)
- end
-end
-
-def fun_l22_n737(x)
- if (x < 1)
- fun_l23_n549(x)
- else
- fun_l23_n16(x)
- end
-end
-
-def fun_l22_n738(x)
- if (x < 1)
- fun_l23_n797(x)
- else
- fun_l23_n829(x)
- end
-end
-
-def fun_l22_n739(x)
- if (x < 1)
- fun_l23_n78(x)
- else
- fun_l23_n299(x)
- end
-end
-
-def fun_l22_n740(x)
- if (x < 1)
- fun_l23_n165(x)
- else
- fun_l23_n822(x)
- end
-end
-
-def fun_l22_n741(x)
- if (x < 1)
- fun_l23_n494(x)
- else
- fun_l23_n226(x)
- end
-end
-
-def fun_l22_n742(x)
- if (x < 1)
- fun_l23_n930(x)
- else
- fun_l23_n301(x)
- end
-end
-
-def fun_l22_n743(x)
- if (x < 1)
- fun_l23_n357(x)
- else
- fun_l23_n399(x)
- end
-end
-
-def fun_l22_n744(x)
- if (x < 1)
- fun_l23_n865(x)
- else
- fun_l23_n499(x)
- end
-end
-
-def fun_l22_n745(x)
- if (x < 1)
- fun_l23_n437(x)
- else
- fun_l23_n145(x)
- end
-end
-
-def fun_l22_n746(x)
- if (x < 1)
- fun_l23_n883(x)
- else
- fun_l23_n269(x)
- end
-end
-
-def fun_l22_n747(x)
- if (x < 1)
- fun_l23_n323(x)
- else
- fun_l23_n199(x)
- end
-end
-
-def fun_l22_n748(x)
- if (x < 1)
- fun_l23_n843(x)
- else
- fun_l23_n179(x)
- end
-end
-
-def fun_l22_n749(x)
- if (x < 1)
- fun_l23_n413(x)
- else
- fun_l23_n195(x)
- end
-end
-
-def fun_l22_n750(x)
- if (x < 1)
- fun_l23_n50(x)
- else
- fun_l23_n219(x)
- end
-end
-
-def fun_l22_n751(x)
- if (x < 1)
- fun_l23_n574(x)
- else
- fun_l23_n649(x)
- end
-end
-
-def fun_l22_n752(x)
- if (x < 1)
- fun_l23_n495(x)
- else
- fun_l23_n664(x)
- end
-end
-
-def fun_l22_n753(x)
- if (x < 1)
- fun_l23_n899(x)
- else
- fun_l23_n14(x)
- end
-end
-
-def fun_l22_n754(x)
- if (x < 1)
- fun_l23_n230(x)
- else
- fun_l23_n933(x)
- end
-end
-
-def fun_l22_n755(x)
- if (x < 1)
- fun_l23_n236(x)
- else
- fun_l23_n854(x)
- end
-end
-
-def fun_l22_n756(x)
- if (x < 1)
- fun_l23_n786(x)
- else
- fun_l23_n599(x)
- end
-end
-
-def fun_l22_n757(x)
- if (x < 1)
- fun_l23_n921(x)
- else
- fun_l23_n805(x)
- end
-end
-
-def fun_l22_n758(x)
- if (x < 1)
- fun_l23_n990(x)
- else
- fun_l23_n724(x)
- end
-end
-
-def fun_l22_n759(x)
- if (x < 1)
- fun_l23_n376(x)
- else
- fun_l23_n568(x)
- end
-end
-
-def fun_l22_n760(x)
- if (x < 1)
- fun_l23_n676(x)
- else
- fun_l23_n995(x)
- end
-end
-
-def fun_l22_n761(x)
- if (x < 1)
- fun_l23_n144(x)
- else
- fun_l23_n104(x)
- end
-end
-
-def fun_l22_n762(x)
- if (x < 1)
- fun_l23_n463(x)
- else
- fun_l23_n736(x)
- end
-end
-
-def fun_l22_n763(x)
- if (x < 1)
- fun_l23_n436(x)
- else
- fun_l23_n475(x)
- end
-end
-
-def fun_l22_n764(x)
- if (x < 1)
- fun_l23_n607(x)
- else
- fun_l23_n737(x)
- end
-end
-
-def fun_l22_n765(x)
- if (x < 1)
- fun_l23_n108(x)
- else
- fun_l23_n396(x)
- end
-end
-
-def fun_l22_n766(x)
- if (x < 1)
- fun_l23_n35(x)
- else
- fun_l23_n422(x)
- end
-end
-
-def fun_l22_n767(x)
- if (x < 1)
- fun_l23_n541(x)
- else
- fun_l23_n756(x)
- end
-end
-
-def fun_l22_n768(x)
- if (x < 1)
- fun_l23_n558(x)
- else
- fun_l23_n858(x)
- end
-end
-
-def fun_l22_n769(x)
- if (x < 1)
- fun_l23_n153(x)
- else
- fun_l23_n544(x)
- end
-end
-
-def fun_l22_n770(x)
- if (x < 1)
- fun_l23_n201(x)
- else
- fun_l23_n905(x)
- end
-end
-
-def fun_l22_n771(x)
- if (x < 1)
- fun_l23_n373(x)
- else
- fun_l23_n420(x)
- end
-end
-
-def fun_l22_n772(x)
- if (x < 1)
- fun_l23_n635(x)
- else
- fun_l23_n464(x)
- end
-end
-
-def fun_l22_n773(x)
- if (x < 1)
- fun_l23_n822(x)
- else
- fun_l23_n803(x)
- end
-end
-
-def fun_l22_n774(x)
- if (x < 1)
- fun_l23_n118(x)
- else
- fun_l23_n127(x)
- end
-end
-
-def fun_l22_n775(x)
- if (x < 1)
- fun_l23_n364(x)
- else
- fun_l23_n512(x)
- end
-end
-
-def fun_l22_n776(x)
- if (x < 1)
- fun_l23_n186(x)
- else
- fun_l23_n275(x)
- end
-end
-
-def fun_l22_n777(x)
- if (x < 1)
- fun_l23_n803(x)
- else
- fun_l23_n105(x)
- end
-end
-
-def fun_l22_n778(x)
- if (x < 1)
- fun_l23_n535(x)
- else
- fun_l23_n569(x)
- end
-end
-
-def fun_l22_n779(x)
- if (x < 1)
- fun_l23_n847(x)
- else
- fun_l23_n505(x)
- end
-end
-
-def fun_l22_n780(x)
- if (x < 1)
- fun_l23_n323(x)
- else
- fun_l23_n552(x)
- end
-end
-
-def fun_l22_n781(x)
- if (x < 1)
- fun_l23_n294(x)
- else
- fun_l23_n914(x)
- end
-end
-
-def fun_l22_n782(x)
- if (x < 1)
- fun_l23_n887(x)
- else
- fun_l23_n214(x)
- end
-end
-
-def fun_l22_n783(x)
- if (x < 1)
- fun_l23_n900(x)
- else
- fun_l23_n729(x)
- end
-end
-
-def fun_l22_n784(x)
- if (x < 1)
- fun_l23_n458(x)
- else
- fun_l23_n233(x)
- end
-end
-
-def fun_l22_n785(x)
- if (x < 1)
- fun_l23_n553(x)
- else
- fun_l23_n306(x)
- end
-end
-
-def fun_l22_n786(x)
- if (x < 1)
- fun_l23_n853(x)
- else
- fun_l23_n946(x)
- end
-end
-
-def fun_l22_n787(x)
- if (x < 1)
- fun_l23_n595(x)
- else
- fun_l23_n288(x)
- end
-end
-
-def fun_l22_n788(x)
- if (x < 1)
- fun_l23_n785(x)
- else
- fun_l23_n752(x)
- end
-end
-
-def fun_l22_n789(x)
- if (x < 1)
- fun_l23_n787(x)
- else
- fun_l23_n788(x)
- end
-end
-
-def fun_l22_n790(x)
- if (x < 1)
- fun_l23_n461(x)
- else
- fun_l23_n251(x)
- end
-end
-
-def fun_l22_n791(x)
- if (x < 1)
- fun_l23_n523(x)
- else
- fun_l23_n328(x)
- end
-end
-
-def fun_l22_n792(x)
- if (x < 1)
- fun_l23_n200(x)
- else
- fun_l23_n689(x)
- end
-end
-
-def fun_l22_n793(x)
- if (x < 1)
- fun_l23_n612(x)
- else
- fun_l23_n398(x)
- end
-end
-
-def fun_l22_n794(x)
- if (x < 1)
- fun_l23_n937(x)
- else
- fun_l23_n965(x)
- end
-end
-
-def fun_l22_n795(x)
- if (x < 1)
- fun_l23_n362(x)
- else
- fun_l23_n789(x)
- end
-end
-
-def fun_l22_n796(x)
- if (x < 1)
- fun_l23_n145(x)
- else
- fun_l23_n36(x)
- end
-end
-
-def fun_l22_n797(x)
- if (x < 1)
- fun_l23_n923(x)
- else
- fun_l23_n251(x)
- end
-end
-
-def fun_l22_n798(x)
- if (x < 1)
- fun_l23_n15(x)
- else
- fun_l23_n563(x)
- end
-end
-
-def fun_l22_n799(x)
- if (x < 1)
- fun_l23_n554(x)
- else
- fun_l23_n336(x)
- end
-end
-
-def fun_l22_n800(x)
- if (x < 1)
- fun_l23_n939(x)
- else
- fun_l23_n993(x)
- end
-end
-
-def fun_l22_n801(x)
- if (x < 1)
- fun_l23_n506(x)
- else
- fun_l23_n656(x)
- end
-end
-
-def fun_l22_n802(x)
- if (x < 1)
- fun_l23_n591(x)
- else
- fun_l23_n582(x)
- end
-end
-
-def fun_l22_n803(x)
- if (x < 1)
- fun_l23_n707(x)
- else
- fun_l23_n235(x)
- end
-end
-
-def fun_l22_n804(x)
- if (x < 1)
- fun_l23_n474(x)
- else
- fun_l23_n253(x)
- end
-end
-
-def fun_l22_n805(x)
- if (x < 1)
- fun_l23_n707(x)
- else
- fun_l23_n885(x)
- end
-end
-
-def fun_l22_n806(x)
- if (x < 1)
- fun_l23_n155(x)
- else
- fun_l23_n210(x)
- end
-end
-
-def fun_l22_n807(x)
- if (x < 1)
- fun_l23_n489(x)
- else
- fun_l23_n249(x)
- end
-end
-
-def fun_l22_n808(x)
- if (x < 1)
- fun_l23_n840(x)
- else
- fun_l23_n748(x)
- end
-end
-
-def fun_l22_n809(x)
- if (x < 1)
- fun_l23_n910(x)
- else
- fun_l23_n884(x)
- end
-end
-
-def fun_l22_n810(x)
- if (x < 1)
- fun_l23_n653(x)
- else
- fun_l23_n321(x)
- end
-end
-
-def fun_l22_n811(x)
- if (x < 1)
- fun_l23_n310(x)
- else
- fun_l23_n366(x)
- end
-end
-
-def fun_l22_n812(x)
- if (x < 1)
- fun_l23_n441(x)
- else
- fun_l23_n795(x)
- end
-end
-
-def fun_l22_n813(x)
- if (x < 1)
- fun_l23_n666(x)
- else
- fun_l23_n631(x)
- end
-end
-
-def fun_l22_n814(x)
- if (x < 1)
- fun_l23_n680(x)
- else
- fun_l23_n88(x)
- end
-end
-
-def fun_l22_n815(x)
- if (x < 1)
- fun_l23_n80(x)
- else
- fun_l23_n989(x)
- end
-end
-
-def fun_l22_n816(x)
- if (x < 1)
- fun_l23_n65(x)
- else
- fun_l23_n46(x)
- end
-end
-
-def fun_l22_n817(x)
- if (x < 1)
- fun_l23_n427(x)
- else
- fun_l23_n868(x)
- end
-end
-
-def fun_l22_n818(x)
- if (x < 1)
- fun_l23_n900(x)
- else
- fun_l23_n213(x)
- end
-end
-
-def fun_l22_n819(x)
- if (x < 1)
- fun_l23_n394(x)
- else
- fun_l23_n647(x)
- end
-end
-
-def fun_l22_n820(x)
- if (x < 1)
- fun_l23_n981(x)
- else
- fun_l23_n530(x)
- end
-end
-
-def fun_l22_n821(x)
- if (x < 1)
- fun_l23_n806(x)
- else
- fun_l23_n511(x)
- end
-end
-
-def fun_l22_n822(x)
- if (x < 1)
- fun_l23_n141(x)
- else
- fun_l23_n91(x)
- end
-end
-
-def fun_l22_n823(x)
- if (x < 1)
- fun_l23_n604(x)
- else
- fun_l23_n270(x)
- end
-end
-
-def fun_l22_n824(x)
- if (x < 1)
- fun_l23_n347(x)
- else
- fun_l23_n937(x)
- end
-end
-
-def fun_l22_n825(x)
- if (x < 1)
- fun_l23_n302(x)
- else
- fun_l23_n659(x)
- end
-end
-
-def fun_l22_n826(x)
- if (x < 1)
- fun_l23_n386(x)
- else
- fun_l23_n174(x)
- end
-end
-
-def fun_l22_n827(x)
- if (x < 1)
- fun_l23_n347(x)
- else
- fun_l23_n659(x)
- end
-end
-
-def fun_l22_n828(x)
- if (x < 1)
- fun_l23_n647(x)
- else
- fun_l23_n648(x)
- end
-end
-
-def fun_l22_n829(x)
- if (x < 1)
- fun_l23_n892(x)
- else
- fun_l23_n910(x)
- end
-end
-
-def fun_l22_n830(x)
- if (x < 1)
- fun_l23_n274(x)
- else
- fun_l23_n739(x)
- end
-end
-
-def fun_l22_n831(x)
- if (x < 1)
- fun_l23_n211(x)
- else
- fun_l23_n658(x)
- end
-end
-
-def fun_l22_n832(x)
- if (x < 1)
- fun_l23_n584(x)
- else
- fun_l23_n163(x)
- end
-end
-
-def fun_l22_n833(x)
- if (x < 1)
- fun_l23_n598(x)
- else
- fun_l23_n735(x)
- end
-end
-
-def fun_l22_n834(x)
- if (x < 1)
- fun_l23_n934(x)
- else
- fun_l23_n579(x)
- end
-end
-
-def fun_l22_n835(x)
- if (x < 1)
- fun_l23_n483(x)
- else
- fun_l23_n632(x)
- end
-end
-
-def fun_l22_n836(x)
- if (x < 1)
- fun_l23_n329(x)
- else
- fun_l23_n799(x)
- end
-end
-
-def fun_l22_n837(x)
- if (x < 1)
- fun_l23_n699(x)
- else
- fun_l23_n846(x)
- end
-end
-
-def fun_l22_n838(x)
- if (x < 1)
- fun_l23_n40(x)
- else
- fun_l23_n715(x)
- end
-end
-
-def fun_l22_n839(x)
- if (x < 1)
- fun_l23_n917(x)
- else
- fun_l23_n595(x)
- end
-end
-
-def fun_l22_n840(x)
- if (x < 1)
- fun_l23_n171(x)
- else
- fun_l23_n204(x)
- end
-end
-
-def fun_l22_n841(x)
- if (x < 1)
- fun_l23_n652(x)
- else
- fun_l23_n342(x)
- end
-end
-
-def fun_l22_n842(x)
- if (x < 1)
- fun_l23_n853(x)
- else
- fun_l23_n981(x)
- end
-end
-
-def fun_l22_n843(x)
- if (x < 1)
- fun_l23_n673(x)
- else
- fun_l23_n2(x)
- end
-end
-
-def fun_l22_n844(x)
- if (x < 1)
- fun_l23_n799(x)
- else
- fun_l23_n654(x)
- end
-end
-
-def fun_l22_n845(x)
- if (x < 1)
- fun_l23_n989(x)
- else
- fun_l23_n563(x)
- end
-end
-
-def fun_l22_n846(x)
- if (x < 1)
- fun_l23_n415(x)
- else
- fun_l23_n245(x)
- end
-end
-
-def fun_l22_n847(x)
- if (x < 1)
- fun_l23_n836(x)
- else
- fun_l23_n347(x)
- end
-end
-
-def fun_l22_n848(x)
- if (x < 1)
- fun_l23_n493(x)
- else
- fun_l23_n712(x)
- end
-end
-
-def fun_l22_n849(x)
- if (x < 1)
- fun_l23_n780(x)
- else
- fun_l23_n43(x)
- end
-end
-
-def fun_l22_n850(x)
- if (x < 1)
- fun_l23_n511(x)
- else
- fun_l23_n356(x)
- end
-end
-
-def fun_l22_n851(x)
- if (x < 1)
- fun_l23_n229(x)
- else
- fun_l23_n355(x)
- end
-end
-
-def fun_l22_n852(x)
- if (x < 1)
- fun_l23_n50(x)
- else
- fun_l23_n908(x)
- end
-end
-
-def fun_l22_n853(x)
- if (x < 1)
- fun_l23_n156(x)
- else
- fun_l23_n422(x)
- end
-end
-
-def fun_l22_n854(x)
- if (x < 1)
- fun_l23_n448(x)
- else
- fun_l23_n763(x)
- end
-end
-
-def fun_l22_n855(x)
- if (x < 1)
- fun_l23_n662(x)
- else
- fun_l23_n887(x)
- end
-end
-
-def fun_l22_n856(x)
- if (x < 1)
- fun_l23_n511(x)
- else
- fun_l23_n292(x)
- end
-end
-
-def fun_l22_n857(x)
- if (x < 1)
- fun_l23_n313(x)
- else
- fun_l23_n207(x)
- end
-end
-
-def fun_l22_n858(x)
- if (x < 1)
- fun_l23_n544(x)
- else
- fun_l23_n488(x)
- end
-end
-
-def fun_l22_n859(x)
- if (x < 1)
- fun_l23_n34(x)
- else
- fun_l23_n133(x)
- end
-end
-
-def fun_l22_n860(x)
- if (x < 1)
- fun_l23_n739(x)
- else
- fun_l23_n127(x)
- end
-end
-
-def fun_l22_n861(x)
- if (x < 1)
- fun_l23_n727(x)
- else
- fun_l23_n339(x)
- end
-end
-
-def fun_l22_n862(x)
- if (x < 1)
- fun_l23_n78(x)
- else
- fun_l23_n101(x)
- end
-end
-
-def fun_l22_n863(x)
- if (x < 1)
- fun_l23_n310(x)
- else
- fun_l23_n884(x)
- end
-end
-
-def fun_l22_n864(x)
- if (x < 1)
- fun_l23_n97(x)
- else
- fun_l23_n716(x)
- end
-end
-
-def fun_l22_n865(x)
- if (x < 1)
- fun_l23_n63(x)
- else
- fun_l23_n654(x)
- end
-end
-
-def fun_l22_n866(x)
- if (x < 1)
- fun_l23_n336(x)
- else
- fun_l23_n334(x)
- end
-end
-
-def fun_l22_n867(x)
- if (x < 1)
- fun_l23_n317(x)
- else
- fun_l23_n197(x)
- end
-end
-
-def fun_l22_n868(x)
- if (x < 1)
- fun_l23_n98(x)
- else
- fun_l23_n466(x)
- end
-end
-
-def fun_l22_n869(x)
- if (x < 1)
- fun_l23_n157(x)
- else
- fun_l23_n43(x)
- end
-end
-
-def fun_l22_n870(x)
- if (x < 1)
- fun_l23_n347(x)
- else
- fun_l23_n961(x)
- end
-end
-
-def fun_l22_n871(x)
- if (x < 1)
- fun_l23_n460(x)
- else
- fun_l23_n820(x)
- end
-end
-
-def fun_l22_n872(x)
- if (x < 1)
- fun_l23_n216(x)
- else
- fun_l23_n419(x)
- end
-end
-
-def fun_l22_n873(x)
- if (x < 1)
- fun_l23_n879(x)
- else
- fun_l23_n343(x)
- end
-end
-
-def fun_l22_n874(x)
- if (x < 1)
- fun_l23_n507(x)
- else
- fun_l23_n572(x)
- end
-end
-
-def fun_l22_n875(x)
- if (x < 1)
- fun_l23_n959(x)
- else
- fun_l23_n750(x)
- end
-end
-
-def fun_l22_n876(x)
- if (x < 1)
- fun_l23_n718(x)
- else
- fun_l23_n406(x)
- end
-end
-
-def fun_l22_n877(x)
- if (x < 1)
- fun_l23_n733(x)
- else
- fun_l23_n486(x)
- end
-end
-
-def fun_l22_n878(x)
- if (x < 1)
- fun_l23_n95(x)
- else
- fun_l23_n842(x)
- end
-end
-
-def fun_l22_n879(x)
- if (x < 1)
- fun_l23_n626(x)
- else
- fun_l23_n428(x)
- end
-end
-
-def fun_l22_n880(x)
- if (x < 1)
- fun_l23_n194(x)
- else
- fun_l23_n441(x)
- end
-end
-
-def fun_l22_n881(x)
- if (x < 1)
- fun_l23_n10(x)
- else
- fun_l23_n727(x)
- end
-end
-
-def fun_l22_n882(x)
- if (x < 1)
- fun_l23_n173(x)
- else
- fun_l23_n301(x)
- end
-end
-
-def fun_l22_n883(x)
- if (x < 1)
- fun_l23_n338(x)
- else
- fun_l23_n420(x)
- end
-end
-
-def fun_l22_n884(x)
- if (x < 1)
- fun_l23_n615(x)
- else
- fun_l23_n923(x)
- end
-end
-
-def fun_l22_n885(x)
- if (x < 1)
- fun_l23_n547(x)
- else
- fun_l23_n979(x)
- end
-end
-
-def fun_l22_n886(x)
- if (x < 1)
- fun_l23_n28(x)
- else
- fun_l23_n213(x)
- end
-end
-
-def fun_l22_n887(x)
- if (x < 1)
- fun_l23_n919(x)
- else
- fun_l23_n228(x)
- end
-end
-
-def fun_l22_n888(x)
- if (x < 1)
- fun_l23_n264(x)
- else
- fun_l23_n156(x)
- end
-end
-
-def fun_l22_n889(x)
- if (x < 1)
- fun_l23_n137(x)
- else
- fun_l23_n582(x)
- end
-end
-
-def fun_l22_n890(x)
- if (x < 1)
- fun_l23_n468(x)
- else
- fun_l23_n409(x)
- end
-end
-
-def fun_l22_n891(x)
- if (x < 1)
- fun_l23_n823(x)
- else
- fun_l23_n999(x)
- end
-end
-
-def fun_l22_n892(x)
- if (x < 1)
- fun_l23_n248(x)
- else
- fun_l23_n821(x)
- end
-end
-
-def fun_l22_n893(x)
- if (x < 1)
- fun_l23_n117(x)
- else
- fun_l23_n127(x)
- end
-end
-
-def fun_l22_n894(x)
- if (x < 1)
- fun_l23_n622(x)
- else
- fun_l23_n737(x)
- end
-end
-
-def fun_l22_n895(x)
- if (x < 1)
- fun_l23_n66(x)
- else
- fun_l23_n261(x)
- end
-end
-
-def fun_l22_n896(x)
- if (x < 1)
- fun_l23_n245(x)
- else
- fun_l23_n18(x)
- end
-end
-
-def fun_l22_n897(x)
- if (x < 1)
- fun_l23_n269(x)
- else
- fun_l23_n666(x)
- end
-end
-
-def fun_l22_n898(x)
- if (x < 1)
- fun_l23_n807(x)
- else
- fun_l23_n449(x)
- end
-end
-
-def fun_l22_n899(x)
- if (x < 1)
- fun_l23_n801(x)
- else
- fun_l23_n34(x)
- end
-end
-
-def fun_l22_n900(x)
- if (x < 1)
- fun_l23_n17(x)
- else
- fun_l23_n117(x)
- end
-end
-
-def fun_l22_n901(x)
- if (x < 1)
- fun_l23_n677(x)
- else
- fun_l23_n872(x)
- end
-end
-
-def fun_l22_n902(x)
- if (x < 1)
- fun_l23_n221(x)
- else
- fun_l23_n685(x)
- end
-end
-
-def fun_l22_n903(x)
- if (x < 1)
- fun_l23_n224(x)
- else
- fun_l23_n15(x)
- end
-end
-
-def fun_l22_n904(x)
- if (x < 1)
- fun_l23_n353(x)
- else
- fun_l23_n367(x)
- end
-end
-
-def fun_l22_n905(x)
- if (x < 1)
- fun_l23_n466(x)
- else
- fun_l23_n466(x)
- end
-end
-
-def fun_l22_n906(x)
- if (x < 1)
- fun_l23_n674(x)
- else
- fun_l23_n521(x)
- end
-end
-
-def fun_l22_n907(x)
- if (x < 1)
- fun_l23_n978(x)
- else
- fun_l23_n79(x)
- end
-end
-
-def fun_l22_n908(x)
- if (x < 1)
- fun_l23_n976(x)
- else
- fun_l23_n513(x)
- end
-end
-
-def fun_l22_n909(x)
- if (x < 1)
- fun_l23_n478(x)
- else
- fun_l23_n524(x)
- end
-end
-
-def fun_l22_n910(x)
- if (x < 1)
- fun_l23_n744(x)
- else
- fun_l23_n451(x)
- end
-end
-
-def fun_l22_n911(x)
- if (x < 1)
- fun_l23_n524(x)
- else
- fun_l23_n409(x)
- end
-end
-
-def fun_l22_n912(x)
- if (x < 1)
- fun_l23_n651(x)
- else
- fun_l23_n424(x)
- end
-end
-
-def fun_l22_n913(x)
- if (x < 1)
- fun_l23_n740(x)
- else
- fun_l23_n841(x)
- end
-end
-
-def fun_l22_n914(x)
- if (x < 1)
- fun_l23_n388(x)
- else
- fun_l23_n790(x)
- end
-end
-
-def fun_l22_n915(x)
- if (x < 1)
- fun_l23_n625(x)
- else
- fun_l23_n276(x)
- end
-end
-
-def fun_l22_n916(x)
- if (x < 1)
- fun_l23_n322(x)
- else
- fun_l23_n598(x)
- end
-end
-
-def fun_l22_n917(x)
- if (x < 1)
- fun_l23_n51(x)
- else
- fun_l23_n286(x)
- end
-end
-
-def fun_l22_n918(x)
- if (x < 1)
- fun_l23_n265(x)
- else
- fun_l23_n553(x)
- end
-end
-
-def fun_l22_n919(x)
- if (x < 1)
- fun_l23_n525(x)
- else
- fun_l23_n825(x)
- end
-end
-
-def fun_l22_n920(x)
- if (x < 1)
- fun_l23_n59(x)
- else
- fun_l23_n643(x)
- end
-end
-
-def fun_l22_n921(x)
- if (x < 1)
- fun_l23_n135(x)
- else
- fun_l23_n811(x)
- end
-end
-
-def fun_l22_n922(x)
- if (x < 1)
- fun_l23_n587(x)
- else
- fun_l23_n564(x)
- end
-end
-
-def fun_l22_n923(x)
- if (x < 1)
- fun_l23_n235(x)
- else
- fun_l23_n337(x)
- end
-end
-
-def fun_l22_n924(x)
- if (x < 1)
- fun_l23_n99(x)
- else
- fun_l23_n805(x)
- end
-end
-
-def fun_l22_n925(x)
- if (x < 1)
- fun_l23_n360(x)
- else
- fun_l23_n67(x)
- end
-end
-
-def fun_l22_n926(x)
- if (x < 1)
- fun_l23_n438(x)
- else
- fun_l23_n948(x)
- end
-end
-
-def fun_l22_n927(x)
- if (x < 1)
- fun_l23_n545(x)
- else
- fun_l23_n287(x)
- end
-end
-
-def fun_l22_n928(x)
- if (x < 1)
- fun_l23_n632(x)
- else
- fun_l23_n769(x)
- end
-end
-
-def fun_l22_n929(x)
- if (x < 1)
- fun_l23_n17(x)
- else
- fun_l23_n240(x)
- end
-end
-
-def fun_l22_n930(x)
- if (x < 1)
- fun_l23_n948(x)
- else
- fun_l23_n690(x)
- end
-end
-
-def fun_l22_n931(x)
- if (x < 1)
- fun_l23_n12(x)
- else
- fun_l23_n640(x)
- end
-end
-
-def fun_l22_n932(x)
- if (x < 1)
- fun_l23_n157(x)
- else
- fun_l23_n594(x)
- end
-end
-
-def fun_l22_n933(x)
- if (x < 1)
- fun_l23_n96(x)
- else
- fun_l23_n771(x)
- end
-end
-
-def fun_l22_n934(x)
- if (x < 1)
- fun_l23_n237(x)
- else
- fun_l23_n910(x)
- end
-end
-
-def fun_l22_n935(x)
- if (x < 1)
- fun_l23_n553(x)
- else
- fun_l23_n300(x)
- end
-end
-
-def fun_l22_n936(x)
- if (x < 1)
- fun_l23_n224(x)
- else
- fun_l23_n566(x)
- end
-end
-
-def fun_l22_n937(x)
- if (x < 1)
- fun_l23_n314(x)
- else
- fun_l23_n328(x)
- end
-end
-
-def fun_l22_n938(x)
- if (x < 1)
- fun_l23_n775(x)
- else
- fun_l23_n72(x)
- end
-end
-
-def fun_l22_n939(x)
- if (x < 1)
- fun_l23_n273(x)
- else
- fun_l23_n43(x)
- end
-end
-
-def fun_l22_n940(x)
- if (x < 1)
- fun_l23_n215(x)
- else
- fun_l23_n646(x)
- end
-end
-
-def fun_l22_n941(x)
- if (x < 1)
- fun_l23_n925(x)
- else
- fun_l23_n97(x)
- end
-end
-
-def fun_l22_n942(x)
- if (x < 1)
- fun_l23_n391(x)
- else
- fun_l23_n972(x)
- end
-end
-
-def fun_l22_n943(x)
- if (x < 1)
- fun_l23_n276(x)
- else
- fun_l23_n725(x)
- end
-end
-
-def fun_l22_n944(x)
- if (x < 1)
- fun_l23_n928(x)
- else
- fun_l23_n94(x)
- end
-end
-
-def fun_l22_n945(x)
- if (x < 1)
- fun_l23_n176(x)
- else
- fun_l23_n598(x)
- end
-end
-
-def fun_l22_n946(x)
- if (x < 1)
- fun_l23_n530(x)
- else
- fun_l23_n37(x)
- end
-end
-
-def fun_l22_n947(x)
- if (x < 1)
- fun_l23_n412(x)
- else
- fun_l23_n718(x)
- end
-end
-
-def fun_l22_n948(x)
- if (x < 1)
- fun_l23_n905(x)
- else
- fun_l23_n723(x)
- end
-end
-
-def fun_l22_n949(x)
- if (x < 1)
- fun_l23_n451(x)
- else
- fun_l23_n232(x)
- end
-end
-
-def fun_l22_n950(x)
- if (x < 1)
- fun_l23_n312(x)
- else
- fun_l23_n556(x)
- end
-end
-
-def fun_l22_n951(x)
- if (x < 1)
- fun_l23_n906(x)
- else
- fun_l23_n33(x)
- end
-end
-
-def fun_l22_n952(x)
- if (x < 1)
- fun_l23_n964(x)
- else
- fun_l23_n46(x)
- end
-end
-
-def fun_l22_n953(x)
- if (x < 1)
- fun_l23_n813(x)
- else
- fun_l23_n494(x)
- end
-end
-
-def fun_l22_n954(x)
- if (x < 1)
- fun_l23_n725(x)
- else
- fun_l23_n705(x)
- end
-end
-
-def fun_l22_n955(x)
- if (x < 1)
- fun_l23_n525(x)
- else
- fun_l23_n370(x)
- end
-end
-
-def fun_l22_n956(x)
- if (x < 1)
- fun_l23_n266(x)
- else
- fun_l23_n872(x)
- end
-end
-
-def fun_l22_n957(x)
- if (x < 1)
- fun_l23_n492(x)
- else
- fun_l23_n730(x)
- end
-end
-
-def fun_l22_n958(x)
- if (x < 1)
- fun_l23_n950(x)
- else
- fun_l23_n557(x)
- end
-end
-
-def fun_l22_n959(x)
- if (x < 1)
- fun_l23_n156(x)
- else
- fun_l23_n379(x)
- end
-end
-
-def fun_l22_n960(x)
- if (x < 1)
- fun_l23_n270(x)
- else
- fun_l23_n486(x)
- end
-end
-
-def fun_l22_n961(x)
- if (x < 1)
- fun_l23_n789(x)
- else
- fun_l23_n316(x)
- end
-end
-
-def fun_l22_n962(x)
- if (x < 1)
- fun_l23_n425(x)
- else
- fun_l23_n470(x)
- end
-end
-
-def fun_l22_n963(x)
- if (x < 1)
- fun_l23_n598(x)
- else
- fun_l23_n304(x)
- end
-end
-
-def fun_l22_n964(x)
- if (x < 1)
- fun_l23_n249(x)
- else
- fun_l23_n517(x)
- end
-end
-
-def fun_l22_n965(x)
- if (x < 1)
- fun_l23_n775(x)
- else
- fun_l23_n892(x)
- end
-end
-
-def fun_l22_n966(x)
- if (x < 1)
- fun_l23_n771(x)
- else
- fun_l23_n879(x)
- end
-end
-
-def fun_l22_n967(x)
- if (x < 1)
- fun_l23_n596(x)
- else
- fun_l23_n22(x)
- end
-end
-
-def fun_l22_n968(x)
- if (x < 1)
- fun_l23_n722(x)
- else
- fun_l23_n203(x)
- end
-end
-
-def fun_l22_n969(x)
- if (x < 1)
- fun_l23_n912(x)
- else
- fun_l23_n216(x)
- end
-end
-
-def fun_l22_n970(x)
- if (x < 1)
- fun_l23_n230(x)
- else
- fun_l23_n295(x)
- end
-end
-
-def fun_l22_n971(x)
- if (x < 1)
- fun_l23_n255(x)
- else
- fun_l23_n407(x)
- end
-end
-
-def fun_l22_n972(x)
- if (x < 1)
- fun_l23_n673(x)
- else
- fun_l23_n940(x)
- end
-end
-
-def fun_l22_n973(x)
- if (x < 1)
- fun_l23_n793(x)
- else
- fun_l23_n776(x)
- end
-end
-
-def fun_l22_n974(x)
- if (x < 1)
- fun_l23_n812(x)
- else
- fun_l23_n653(x)
- end
-end
-
-def fun_l22_n975(x)
- if (x < 1)
- fun_l23_n866(x)
- else
- fun_l23_n25(x)
- end
-end
-
-def fun_l22_n976(x)
- if (x < 1)
- fun_l23_n143(x)
- else
- fun_l23_n236(x)
- end
-end
-
-def fun_l22_n977(x)
- if (x < 1)
- fun_l23_n274(x)
- else
- fun_l23_n414(x)
- end
-end
-
-def fun_l22_n978(x)
- if (x < 1)
- fun_l23_n281(x)
- else
- fun_l23_n946(x)
- end
-end
-
-def fun_l22_n979(x)
- if (x < 1)
- fun_l23_n255(x)
- else
- fun_l23_n585(x)
- end
-end
-
-def fun_l22_n980(x)
- if (x < 1)
- fun_l23_n269(x)
- else
- fun_l23_n182(x)
- end
-end
-
-def fun_l22_n981(x)
- if (x < 1)
- fun_l23_n340(x)
- else
- fun_l23_n262(x)
- end
-end
-
-def fun_l22_n982(x)
- if (x < 1)
- fun_l23_n713(x)
- else
- fun_l23_n247(x)
- end
-end
-
-def fun_l22_n983(x)
- if (x < 1)
- fun_l23_n827(x)
- else
- fun_l23_n821(x)
- end
-end
-
-def fun_l22_n984(x)
- if (x < 1)
- fun_l23_n628(x)
- else
- fun_l23_n243(x)
- end
-end
-
-def fun_l22_n985(x)
- if (x < 1)
- fun_l23_n479(x)
- else
- fun_l23_n440(x)
- end
-end
-
-def fun_l22_n986(x)
- if (x < 1)
- fun_l23_n451(x)
- else
- fun_l23_n299(x)
- end
-end
-
-def fun_l22_n987(x)
- if (x < 1)
- fun_l23_n528(x)
- else
- fun_l23_n336(x)
- end
-end
-
-def fun_l22_n988(x)
- if (x < 1)
- fun_l23_n825(x)
- else
- fun_l23_n767(x)
- end
-end
-
-def fun_l22_n989(x)
- if (x < 1)
- fun_l23_n427(x)
- else
- fun_l23_n996(x)
- end
-end
-
-def fun_l22_n990(x)
- if (x < 1)
- fun_l23_n175(x)
- else
- fun_l23_n888(x)
- end
-end
-
-def fun_l22_n991(x)
- if (x < 1)
- fun_l23_n351(x)
- else
- fun_l23_n982(x)
- end
-end
-
-def fun_l22_n992(x)
- if (x < 1)
- fun_l23_n235(x)
- else
- fun_l23_n91(x)
- end
-end
-
-def fun_l22_n993(x)
- if (x < 1)
- fun_l23_n966(x)
- else
- fun_l23_n520(x)
- end
-end
-
-def fun_l22_n994(x)
- if (x < 1)
- fun_l23_n854(x)
- else
- fun_l23_n937(x)
- end
-end
-
-def fun_l22_n995(x)
- if (x < 1)
- fun_l23_n922(x)
- else
- fun_l23_n176(x)
- end
-end
-
-def fun_l22_n996(x)
- if (x < 1)
- fun_l23_n925(x)
- else
- fun_l23_n271(x)
- end
-end
-
-def fun_l22_n997(x)
- if (x < 1)
- fun_l23_n513(x)
- else
- fun_l23_n195(x)
- end
-end
-
-def fun_l22_n998(x)
- if (x < 1)
- fun_l23_n135(x)
- else
- fun_l23_n834(x)
- end
-end
-
-def fun_l22_n999(x)
- if (x < 1)
- fun_l23_n664(x)
- else
- fun_l23_n861(x)
- end
-end
-
-def fun_l23_n0(x)
- if (x < 1)
- fun_l24_n327(x)
- else
- fun_l24_n159(x)
- end
-end
-
-def fun_l23_n1(x)
- if (x < 1)
- fun_l24_n433(x)
- else
- fun_l24_n862(x)
- end
-end
-
-def fun_l23_n2(x)
- if (x < 1)
- fun_l24_n56(x)
- else
- fun_l24_n651(x)
- end
-end
-
-def fun_l23_n3(x)
- if (x < 1)
- fun_l24_n267(x)
- else
- fun_l24_n566(x)
- end
-end
-
-def fun_l23_n4(x)
- if (x < 1)
- fun_l24_n880(x)
- else
- fun_l24_n886(x)
- end
-end
-
-def fun_l23_n5(x)
- if (x < 1)
- fun_l24_n66(x)
- else
- fun_l24_n894(x)
- end
-end
-
-def fun_l23_n6(x)
- if (x < 1)
- fun_l24_n965(x)
- else
- fun_l24_n453(x)
- end
-end
-
-def fun_l23_n7(x)
- if (x < 1)
- fun_l24_n250(x)
- else
- fun_l24_n42(x)
- end
-end
-
-def fun_l23_n8(x)
- if (x < 1)
- fun_l24_n376(x)
- else
- fun_l24_n736(x)
- end
-end
-
-def fun_l23_n9(x)
- if (x < 1)
- fun_l24_n434(x)
- else
- fun_l24_n334(x)
- end
-end
-
-def fun_l23_n10(x)
- if (x < 1)
- fun_l24_n944(x)
- else
- fun_l24_n70(x)
- end
-end
-
-def fun_l23_n11(x)
- if (x < 1)
- fun_l24_n38(x)
- else
- fun_l24_n532(x)
- end
-end
-
-def fun_l23_n12(x)
- if (x < 1)
- fun_l24_n603(x)
- else
- fun_l24_n682(x)
- end
-end
-
-def fun_l23_n13(x)
- if (x < 1)
- fun_l24_n716(x)
- else
- fun_l24_n754(x)
- end
-end
-
-def fun_l23_n14(x)
- if (x < 1)
- fun_l24_n578(x)
- else
- fun_l24_n727(x)
- end
-end
-
-def fun_l23_n15(x)
- if (x < 1)
- fun_l24_n166(x)
- else
- fun_l24_n224(x)
- end
-end
-
-def fun_l23_n16(x)
- if (x < 1)
- fun_l24_n755(x)
- else
- fun_l24_n548(x)
- end
-end
-
-def fun_l23_n17(x)
- if (x < 1)
- fun_l24_n355(x)
- else
- fun_l24_n625(x)
- end
-end
-
-def fun_l23_n18(x)
- if (x < 1)
- fun_l24_n400(x)
- else
- fun_l24_n834(x)
- end
-end
-
-def fun_l23_n19(x)
- if (x < 1)
- fun_l24_n188(x)
- else
- fun_l24_n305(x)
- end
-end
-
-def fun_l23_n20(x)
- if (x < 1)
- fun_l24_n392(x)
- else
- fun_l24_n466(x)
- end
-end
-
-def fun_l23_n21(x)
- if (x < 1)
- fun_l24_n937(x)
- else
- fun_l24_n603(x)
- end
-end
-
-def fun_l23_n22(x)
- if (x < 1)
- fun_l24_n767(x)
- else
- fun_l24_n750(x)
- end
-end
-
-def fun_l23_n23(x)
- if (x < 1)
- fun_l24_n888(x)
- else
- fun_l24_n472(x)
- end
-end
-
-def fun_l23_n24(x)
- if (x < 1)
- fun_l24_n937(x)
- else
- fun_l24_n192(x)
- end
-end
-
-def fun_l23_n25(x)
- if (x < 1)
- fun_l24_n704(x)
- else
- fun_l24_n839(x)
- end
-end
-
-def fun_l23_n26(x)
- if (x < 1)
- fun_l24_n758(x)
- else
- fun_l24_n579(x)
- end
-end
-
-def fun_l23_n27(x)
- if (x < 1)
- fun_l24_n161(x)
- else
- fun_l24_n268(x)
- end
-end
-
-def fun_l23_n28(x)
- if (x < 1)
- fun_l24_n628(x)
- else
- fun_l24_n413(x)
- end
-end
-
-def fun_l23_n29(x)
- if (x < 1)
- fun_l24_n954(x)
- else
- fun_l24_n962(x)
- end
-end
-
-def fun_l23_n30(x)
- if (x < 1)
- fun_l24_n723(x)
- else
- fun_l24_n220(x)
- end
-end
-
-def fun_l23_n31(x)
- if (x < 1)
- fun_l24_n841(x)
- else
- fun_l24_n331(x)
- end
-end
-
-def fun_l23_n32(x)
- if (x < 1)
- fun_l24_n42(x)
- else
- fun_l24_n331(x)
- end
-end
-
-def fun_l23_n33(x)
- if (x < 1)
- fun_l24_n873(x)
- else
- fun_l24_n58(x)
- end
-end
-
-def fun_l23_n34(x)
- if (x < 1)
- fun_l24_n586(x)
- else
- fun_l24_n981(x)
- end
-end
-
-def fun_l23_n35(x)
- if (x < 1)
- fun_l24_n455(x)
- else
- fun_l24_n279(x)
- end
-end
-
-def fun_l23_n36(x)
- if (x < 1)
- fun_l24_n401(x)
- else
- fun_l24_n633(x)
- end
-end
-
-def fun_l23_n37(x)
- if (x < 1)
- fun_l24_n432(x)
- else
- fun_l24_n389(x)
- end
-end
-
-def fun_l23_n38(x)
- if (x < 1)
- fun_l24_n46(x)
- else
- fun_l24_n426(x)
- end
-end
-
-def fun_l23_n39(x)
- if (x < 1)
- fun_l24_n679(x)
- else
- fun_l24_n222(x)
- end
-end
-
-def fun_l23_n40(x)
- if (x < 1)
- fun_l24_n129(x)
- else
- fun_l24_n2(x)
- end
-end
-
-def fun_l23_n41(x)
- if (x < 1)
- fun_l24_n228(x)
- else
- fun_l24_n386(x)
- end
-end
-
-def fun_l23_n42(x)
- if (x < 1)
- fun_l24_n740(x)
- else
- fun_l24_n605(x)
- end
-end
-
-def fun_l23_n43(x)
- if (x < 1)
- fun_l24_n686(x)
- else
- fun_l24_n755(x)
- end
-end
-
-def fun_l23_n44(x)
- if (x < 1)
- fun_l24_n569(x)
- else
- fun_l24_n553(x)
- end
-end
-
-def fun_l23_n45(x)
- if (x < 1)
- fun_l24_n908(x)
- else
- fun_l24_n388(x)
- end
-end
-
-def fun_l23_n46(x)
- if (x < 1)
- fun_l24_n106(x)
- else
- fun_l24_n335(x)
- end
-end
-
-def fun_l23_n47(x)
- if (x < 1)
- fun_l24_n876(x)
- else
- fun_l24_n813(x)
- end
-end
-
-def fun_l23_n48(x)
- if (x < 1)
- fun_l24_n337(x)
- else
- fun_l24_n967(x)
- end
-end
-
-def fun_l23_n49(x)
- if (x < 1)
- fun_l24_n309(x)
- else
- fun_l24_n988(x)
- end
-end
-
-def fun_l23_n50(x)
- if (x < 1)
- fun_l24_n325(x)
- else
- fun_l24_n703(x)
- end
-end
-
-def fun_l23_n51(x)
- if (x < 1)
- fun_l24_n755(x)
- else
- fun_l24_n146(x)
- end
-end
-
-def fun_l23_n52(x)
- if (x < 1)
- fun_l24_n597(x)
- else
- fun_l24_n764(x)
- end
-end
-
-def fun_l23_n53(x)
- if (x < 1)
- fun_l24_n259(x)
- else
- fun_l24_n9(x)
- end
-end
-
-def fun_l23_n54(x)
- if (x < 1)
- fun_l24_n73(x)
- else
- fun_l24_n700(x)
- end
-end
-
-def fun_l23_n55(x)
- if (x < 1)
- fun_l24_n369(x)
- else
- fun_l24_n632(x)
- end
-end
-
-def fun_l23_n56(x)
- if (x < 1)
- fun_l24_n475(x)
- else
- fun_l24_n553(x)
- end
-end
-
-def fun_l23_n57(x)
- if (x < 1)
- fun_l24_n473(x)
- else
- fun_l24_n84(x)
- end
-end
-
-def fun_l23_n58(x)
- if (x < 1)
- fun_l24_n837(x)
- else
- fun_l24_n164(x)
- end
-end
-
-def fun_l23_n59(x)
- if (x < 1)
- fun_l24_n129(x)
- else
- fun_l24_n993(x)
- end
-end
-
-def fun_l23_n60(x)
- if (x < 1)
- fun_l24_n201(x)
- else
- fun_l24_n644(x)
- end
-end
-
-def fun_l23_n61(x)
- if (x < 1)
- fun_l24_n825(x)
- else
- fun_l24_n513(x)
- end
-end
-
-def fun_l23_n62(x)
- if (x < 1)
- fun_l24_n162(x)
- else
- fun_l24_n575(x)
- end
-end
-
-def fun_l23_n63(x)
- if (x < 1)
- fun_l24_n959(x)
- else
- fun_l24_n514(x)
- end
-end
-
-def fun_l23_n64(x)
- if (x < 1)
- fun_l24_n133(x)
- else
- fun_l24_n731(x)
- end
-end
-
-def fun_l23_n65(x)
- if (x < 1)
- fun_l24_n370(x)
- else
- fun_l24_n903(x)
- end
-end
-
-def fun_l23_n66(x)
- if (x < 1)
- fun_l24_n787(x)
- else
- fun_l24_n11(x)
- end
-end
-
-def fun_l23_n67(x)
- if (x < 1)
- fun_l24_n307(x)
- else
- fun_l24_n7(x)
- end
-end
-
-def fun_l23_n68(x)
- if (x < 1)
- fun_l24_n157(x)
- else
- fun_l24_n747(x)
- end
-end
-
-def fun_l23_n69(x)
- if (x < 1)
- fun_l24_n435(x)
- else
- fun_l24_n763(x)
- end
-end
-
-def fun_l23_n70(x)
- if (x < 1)
- fun_l24_n623(x)
- else
- fun_l24_n279(x)
- end
-end
-
-def fun_l23_n71(x)
- if (x < 1)
- fun_l24_n456(x)
- else
- fun_l24_n465(x)
- end
-end
-
-def fun_l23_n72(x)
- if (x < 1)
- fun_l24_n411(x)
- else
- fun_l24_n397(x)
- end
-end
-
-def fun_l23_n73(x)
- if (x < 1)
- fun_l24_n964(x)
- else
- fun_l24_n144(x)
- end
-end
-
-def fun_l23_n74(x)
- if (x < 1)
- fun_l24_n170(x)
- else
- fun_l24_n406(x)
- end
-end
-
-def fun_l23_n75(x)
- if (x < 1)
- fun_l24_n838(x)
- else
- fun_l24_n295(x)
- end
-end
-
-def fun_l23_n76(x)
- if (x < 1)
- fun_l24_n89(x)
- else
- fun_l24_n803(x)
- end
-end
-
-def fun_l23_n77(x)
- if (x < 1)
- fun_l24_n580(x)
- else
- fun_l24_n931(x)
- end
-end
-
-def fun_l23_n78(x)
- if (x < 1)
- fun_l24_n504(x)
- else
- fun_l24_n150(x)
- end
-end
-
-def fun_l23_n79(x)
- if (x < 1)
- fun_l24_n363(x)
- else
- fun_l24_n717(x)
- end
-end
-
-def fun_l23_n80(x)
- if (x < 1)
- fun_l24_n765(x)
- else
- fun_l24_n917(x)
- end
-end
-
-def fun_l23_n81(x)
- if (x < 1)
- fun_l24_n673(x)
- else
- fun_l24_n549(x)
- end
-end
-
-def fun_l23_n82(x)
- if (x < 1)
- fun_l24_n986(x)
- else
- fun_l24_n177(x)
- end
-end
-
-def fun_l23_n83(x)
- if (x < 1)
- fun_l24_n821(x)
- else
- fun_l24_n302(x)
- end
-end
-
-def fun_l23_n84(x)
- if (x < 1)
- fun_l24_n530(x)
- else
- fun_l24_n744(x)
- end
-end
-
-def fun_l23_n85(x)
- if (x < 1)
- fun_l24_n456(x)
- else
- fun_l24_n964(x)
- end
-end
-
-def fun_l23_n86(x)
- if (x < 1)
- fun_l24_n901(x)
- else
- fun_l24_n214(x)
- end
-end
-
-def fun_l23_n87(x)
- if (x < 1)
- fun_l24_n308(x)
- else
- fun_l24_n329(x)
- end
-end
-
-def fun_l23_n88(x)
- if (x < 1)
- fun_l24_n749(x)
- else
- fun_l24_n822(x)
- end
-end
-
-def fun_l23_n89(x)
- if (x < 1)
- fun_l24_n283(x)
- else
- fun_l24_n865(x)
- end
-end
-
-def fun_l23_n90(x)
- if (x < 1)
- fun_l24_n834(x)
- else
- fun_l24_n422(x)
- end
-end
-
-def fun_l23_n91(x)
- if (x < 1)
- fun_l24_n920(x)
- else
- fun_l24_n799(x)
- end
-end
-
-def fun_l23_n92(x)
- if (x < 1)
- fun_l24_n272(x)
- else
- fun_l24_n846(x)
- end
-end
-
-def fun_l23_n93(x)
- if (x < 1)
- fun_l24_n447(x)
- else
- fun_l24_n809(x)
- end
-end
-
-def fun_l23_n94(x)
- if (x < 1)
- fun_l24_n826(x)
- else
- fun_l24_n521(x)
- end
-end
-
-def fun_l23_n95(x)
- if (x < 1)
- fun_l24_n934(x)
- else
- fun_l24_n774(x)
- end
-end
-
-def fun_l23_n96(x)
- if (x < 1)
- fun_l24_n440(x)
- else
- fun_l24_n40(x)
- end
-end
-
-def fun_l23_n97(x)
- if (x < 1)
- fun_l24_n980(x)
- else
- fun_l24_n801(x)
- end
-end
-
-def fun_l23_n98(x)
- if (x < 1)
- fun_l24_n344(x)
- else
- fun_l24_n239(x)
- end
-end
-
-def fun_l23_n99(x)
- if (x < 1)
- fun_l24_n918(x)
- else
- fun_l24_n241(x)
- end
-end
-
-def fun_l23_n100(x)
- if (x < 1)
- fun_l24_n902(x)
- else
- fun_l24_n12(x)
- end
-end
-
-def fun_l23_n101(x)
- if (x < 1)
- fun_l24_n533(x)
- else
- fun_l24_n510(x)
- end
-end
-
-def fun_l23_n102(x)
- if (x < 1)
- fun_l24_n337(x)
- else
- fun_l24_n144(x)
- end
-end
-
-def fun_l23_n103(x)
- if (x < 1)
- fun_l24_n835(x)
- else
- fun_l24_n268(x)
- end
-end
-
-def fun_l23_n104(x)
- if (x < 1)
- fun_l24_n352(x)
- else
- fun_l24_n772(x)
- end
-end
-
-def fun_l23_n105(x)
- if (x < 1)
- fun_l24_n135(x)
- else
- fun_l24_n97(x)
- end
-end
-
-def fun_l23_n106(x)
- if (x < 1)
- fun_l24_n70(x)
- else
- fun_l24_n528(x)
- end
-end
-
-def fun_l23_n107(x)
- if (x < 1)
- fun_l24_n945(x)
- else
- fun_l24_n85(x)
- end
-end
-
-def fun_l23_n108(x)
- if (x < 1)
- fun_l24_n233(x)
- else
- fun_l24_n637(x)
- end
-end
-
-def fun_l23_n109(x)
- if (x < 1)
- fun_l24_n715(x)
- else
- fun_l24_n111(x)
- end
-end
-
-def fun_l23_n110(x)
- if (x < 1)
- fun_l24_n673(x)
- else
- fun_l24_n423(x)
- end
-end
-
-def fun_l23_n111(x)
- if (x < 1)
- fun_l24_n408(x)
- else
- fun_l24_n5(x)
- end
-end
-
-def fun_l23_n112(x)
- if (x < 1)
- fun_l24_n89(x)
- else
- fun_l24_n669(x)
- end
-end
-
-def fun_l23_n113(x)
- if (x < 1)
- fun_l24_n733(x)
- else
- fun_l24_n76(x)
- end
-end
-
-def fun_l23_n114(x)
- if (x < 1)
- fun_l24_n767(x)
- else
- fun_l24_n465(x)
- end
-end
-
-def fun_l23_n115(x)
- if (x < 1)
- fun_l24_n428(x)
- else
- fun_l24_n948(x)
- end
-end
-
-def fun_l23_n116(x)
- if (x < 1)
- fun_l24_n412(x)
- else
- fun_l24_n355(x)
- end
-end
-
-def fun_l23_n117(x)
- if (x < 1)
- fun_l24_n550(x)
- else
- fun_l24_n616(x)
- end
-end
-
-def fun_l23_n118(x)
- if (x < 1)
- fun_l24_n858(x)
- else
- fun_l24_n74(x)
- end
-end
-
-def fun_l23_n119(x)
- if (x < 1)
- fun_l24_n709(x)
- else
- fun_l24_n939(x)
- end
-end
-
-def fun_l23_n120(x)
- if (x < 1)
- fun_l24_n712(x)
- else
- fun_l24_n74(x)
- end
-end
-
-def fun_l23_n121(x)
- if (x < 1)
- fun_l24_n34(x)
- else
- fun_l24_n532(x)
- end
-end
-
-def fun_l23_n122(x)
- if (x < 1)
- fun_l24_n998(x)
- else
- fun_l24_n736(x)
- end
-end
-
-def fun_l23_n123(x)
- if (x < 1)
- fun_l24_n33(x)
- else
- fun_l24_n561(x)
- end
-end
-
-def fun_l23_n124(x)
- if (x < 1)
- fun_l24_n750(x)
- else
- fun_l24_n634(x)
- end
-end
-
-def fun_l23_n125(x)
- if (x < 1)
- fun_l24_n935(x)
- else
- fun_l24_n29(x)
- end
-end
-
-def fun_l23_n126(x)
- if (x < 1)
- fun_l24_n249(x)
- else
- fun_l24_n571(x)
- end
-end
-
-def fun_l23_n127(x)
- if (x < 1)
- fun_l24_n827(x)
- else
- fun_l24_n892(x)
- end
-end
-
-def fun_l23_n128(x)
- if (x < 1)
- fun_l24_n903(x)
- else
- fun_l24_n171(x)
- end
-end
-
-def fun_l23_n129(x)
- if (x < 1)
- fun_l24_n725(x)
- else
- fun_l24_n358(x)
- end
-end
-
-def fun_l23_n130(x)
- if (x < 1)
- fun_l24_n616(x)
- else
- fun_l24_n795(x)
- end
-end
-
-def fun_l23_n131(x)
- if (x < 1)
- fun_l24_n942(x)
- else
- fun_l24_n574(x)
- end
-end
-
-def fun_l23_n132(x)
- if (x < 1)
- fun_l24_n290(x)
- else
- fun_l24_n869(x)
- end
-end
-
-def fun_l23_n133(x)
- if (x < 1)
- fun_l24_n73(x)
- else
- fun_l24_n542(x)
- end
-end
-
-def fun_l23_n134(x)
- if (x < 1)
- fun_l24_n730(x)
- else
- fun_l24_n857(x)
- end
-end
-
-def fun_l23_n135(x)
- if (x < 1)
- fun_l24_n754(x)
- else
- fun_l24_n579(x)
- end
-end
-
-def fun_l23_n136(x)
- if (x < 1)
- fun_l24_n503(x)
- else
- fun_l24_n574(x)
- end
-end
-
-def fun_l23_n137(x)
- if (x < 1)
- fun_l24_n682(x)
- else
- fun_l24_n630(x)
- end
-end
-
-def fun_l23_n138(x)
- if (x < 1)
- fun_l24_n918(x)
- else
- fun_l24_n440(x)
- end
-end
-
-def fun_l23_n139(x)
- if (x < 1)
- fun_l24_n938(x)
- else
- fun_l24_n524(x)
- end
-end
-
-def fun_l23_n140(x)
- if (x < 1)
- fun_l24_n966(x)
- else
- fun_l24_n921(x)
- end
-end
-
-def fun_l23_n141(x)
- if (x < 1)
- fun_l24_n87(x)
- else
- fun_l24_n548(x)
- end
-end
-
-def fun_l23_n142(x)
- if (x < 1)
- fun_l24_n828(x)
- else
- fun_l24_n708(x)
- end
-end
-
-def fun_l23_n143(x)
- if (x < 1)
- fun_l24_n655(x)
- else
- fun_l24_n322(x)
- end
-end
-
-def fun_l23_n144(x)
- if (x < 1)
- fun_l24_n382(x)
- else
- fun_l24_n484(x)
- end
-end
-
-def fun_l23_n145(x)
- if (x < 1)
- fun_l24_n830(x)
- else
- fun_l24_n755(x)
- end
-end
-
-def fun_l23_n146(x)
- if (x < 1)
- fun_l24_n432(x)
- else
- fun_l24_n487(x)
- end
-end
-
-def fun_l23_n147(x)
- if (x < 1)
- fun_l24_n954(x)
- else
- fun_l24_n453(x)
- end
-end
-
-def fun_l23_n148(x)
- if (x < 1)
- fun_l24_n562(x)
- else
- fun_l24_n872(x)
- end
-end
-
-def fun_l23_n149(x)
- if (x < 1)
- fun_l24_n929(x)
- else
- fun_l24_n212(x)
- end
-end
-
-def fun_l23_n150(x)
- if (x < 1)
- fun_l24_n143(x)
- else
- fun_l24_n344(x)
- end
-end
-
-def fun_l23_n151(x)
- if (x < 1)
- fun_l24_n475(x)
- else
- fun_l24_n379(x)
- end
-end
-
-def fun_l23_n152(x)
- if (x < 1)
- fun_l24_n160(x)
- else
- fun_l24_n774(x)
- end
-end
-
-def fun_l23_n153(x)
- if (x < 1)
- fun_l24_n689(x)
- else
- fun_l24_n19(x)
- end
-end
-
-def fun_l23_n154(x)
- if (x < 1)
- fun_l24_n98(x)
- else
- fun_l24_n572(x)
- end
-end
-
-def fun_l23_n155(x)
- if (x < 1)
- fun_l24_n104(x)
- else
- fun_l24_n797(x)
- end
-end
-
-def fun_l23_n156(x)
- if (x < 1)
- fun_l24_n892(x)
- else
- fun_l24_n874(x)
- end
-end
-
-def fun_l23_n157(x)
- if (x < 1)
- fun_l24_n900(x)
- else
- fun_l24_n458(x)
- end
-end
-
-def fun_l23_n158(x)
- if (x < 1)
- fun_l24_n50(x)
- else
- fun_l24_n912(x)
- end
-end
-
-def fun_l23_n159(x)
- if (x < 1)
- fun_l24_n303(x)
- else
- fun_l24_n373(x)
- end
-end
-
-def fun_l23_n160(x)
- if (x < 1)
- fun_l24_n137(x)
- else
- fun_l24_n102(x)
- end
-end
-
-def fun_l23_n161(x)
- if (x < 1)
- fun_l24_n263(x)
- else
- fun_l24_n818(x)
- end
-end
-
-def fun_l23_n162(x)
- if (x < 1)
- fun_l24_n618(x)
- else
- fun_l24_n895(x)
- end
-end
-
-def fun_l23_n163(x)
- if (x < 1)
- fun_l24_n845(x)
- else
- fun_l24_n26(x)
- end
-end
-
-def fun_l23_n164(x)
- if (x < 1)
- fun_l24_n941(x)
- else
- fun_l24_n242(x)
- end
-end
-
-def fun_l23_n165(x)
- if (x < 1)
- fun_l24_n145(x)
- else
- fun_l24_n492(x)
- end
-end
-
-def fun_l23_n166(x)
- if (x < 1)
- fun_l24_n261(x)
- else
- fun_l24_n235(x)
- end
-end
-
-def fun_l23_n167(x)
- if (x < 1)
- fun_l24_n941(x)
- else
- fun_l24_n618(x)
- end
-end
-
-def fun_l23_n168(x)
- if (x < 1)
- fun_l24_n709(x)
- else
- fun_l24_n908(x)
- end
-end
-
-def fun_l23_n169(x)
- if (x < 1)
- fun_l24_n746(x)
- else
- fun_l24_n116(x)
- end
-end
-
-def fun_l23_n170(x)
- if (x < 1)
- fun_l24_n911(x)
- else
- fun_l24_n599(x)
- end
-end
-
-def fun_l23_n171(x)
- if (x < 1)
- fun_l24_n526(x)
- else
- fun_l24_n275(x)
- end
-end
-
-def fun_l23_n172(x)
- if (x < 1)
- fun_l24_n919(x)
- else
- fun_l24_n525(x)
- end
-end
-
-def fun_l23_n173(x)
- if (x < 1)
- fun_l24_n945(x)
- else
- fun_l24_n894(x)
- end
-end
-
-def fun_l23_n174(x)
- if (x < 1)
- fun_l24_n349(x)
- else
- fun_l24_n434(x)
- end
-end
-
-def fun_l23_n175(x)
- if (x < 1)
- fun_l24_n498(x)
- else
- fun_l24_n679(x)
- end
-end
-
-def fun_l23_n176(x)
- if (x < 1)
- fun_l24_n867(x)
- else
- fun_l24_n177(x)
- end
-end
-
-def fun_l23_n177(x)
- if (x < 1)
- fun_l24_n680(x)
- else
- fun_l24_n601(x)
- end
-end
-
-def fun_l23_n178(x)
- if (x < 1)
- fun_l24_n838(x)
- else
- fun_l24_n5(x)
- end
-end
-
-def fun_l23_n179(x)
- if (x < 1)
- fun_l24_n418(x)
- else
- fun_l24_n780(x)
- end
-end
-
-def fun_l23_n180(x)
- if (x < 1)
- fun_l24_n88(x)
- else
- fun_l24_n333(x)
- end
-end
-
-def fun_l23_n181(x)
- if (x < 1)
- fun_l24_n657(x)
- else
- fun_l24_n787(x)
- end
-end
-
-def fun_l23_n182(x)
- if (x < 1)
- fun_l24_n767(x)
- else
- fun_l24_n903(x)
- end
-end
-
-def fun_l23_n183(x)
- if (x < 1)
- fun_l24_n878(x)
- else
- fun_l24_n426(x)
- end
-end
-
-def fun_l23_n184(x)
- if (x < 1)
- fun_l24_n649(x)
- else
- fun_l24_n221(x)
- end
-end
-
-def fun_l23_n185(x)
- if (x < 1)
- fun_l24_n315(x)
- else
- fun_l24_n955(x)
- end
-end
-
-def fun_l23_n186(x)
- if (x < 1)
- fun_l24_n599(x)
- else
- fun_l24_n201(x)
- end
-end
-
-def fun_l23_n187(x)
- if (x < 1)
- fun_l24_n851(x)
- else
- fun_l24_n294(x)
- end
-end
-
-def fun_l23_n188(x)
- if (x < 1)
- fun_l24_n585(x)
- else
- fun_l24_n139(x)
- end
-end
-
-def fun_l23_n189(x)
- if (x < 1)
- fun_l24_n893(x)
- else
- fun_l24_n159(x)
- end
-end
-
-def fun_l23_n190(x)
- if (x < 1)
- fun_l24_n70(x)
- else
- fun_l24_n50(x)
- end
-end
-
-def fun_l23_n191(x)
- if (x < 1)
- fun_l24_n111(x)
- else
- fun_l24_n967(x)
- end
-end
-
-def fun_l23_n192(x)
- if (x < 1)
- fun_l24_n979(x)
- else
- fun_l24_n91(x)
- end
-end
-
-def fun_l23_n193(x)
- if (x < 1)
- fun_l24_n651(x)
- else
- fun_l24_n321(x)
- end
-end
-
-def fun_l23_n194(x)
- if (x < 1)
- fun_l24_n236(x)
- else
- fun_l24_n251(x)
- end
-end
-
-def fun_l23_n195(x)
- if (x < 1)
- fun_l24_n947(x)
- else
- fun_l24_n116(x)
- end
-end
-
-def fun_l23_n196(x)
- if (x < 1)
- fun_l24_n336(x)
- else
- fun_l24_n637(x)
- end
-end
-
-def fun_l23_n197(x)
- if (x < 1)
- fun_l24_n192(x)
- else
- fun_l24_n824(x)
- end
-end
-
-def fun_l23_n198(x)
- if (x < 1)
- fun_l24_n747(x)
- else
- fun_l24_n610(x)
- end
-end
-
-def fun_l23_n199(x)
- if (x < 1)
- fun_l24_n735(x)
- else
- fun_l24_n347(x)
- end
-end
-
-def fun_l23_n200(x)
- if (x < 1)
- fun_l24_n543(x)
- else
- fun_l24_n463(x)
- end
-end
-
-def fun_l23_n201(x)
- if (x < 1)
- fun_l24_n933(x)
- else
- fun_l24_n185(x)
- end
-end
-
-def fun_l23_n202(x)
- if (x < 1)
- fun_l24_n319(x)
- else
- fun_l24_n739(x)
- end
-end
-
-def fun_l23_n203(x)
- if (x < 1)
- fun_l24_n994(x)
- else
- fun_l24_n248(x)
- end
-end
-
-def fun_l23_n204(x)
- if (x < 1)
- fun_l24_n980(x)
- else
- fun_l24_n248(x)
- end
-end
-
-def fun_l23_n205(x)
- if (x < 1)
- fun_l24_n427(x)
- else
- fun_l24_n670(x)
- end
-end
-
-def fun_l23_n206(x)
- if (x < 1)
- fun_l24_n562(x)
- else
- fun_l24_n752(x)
- end
-end
-
-def fun_l23_n207(x)
- if (x < 1)
- fun_l24_n424(x)
- else
- fun_l24_n310(x)
- end
-end
-
-def fun_l23_n208(x)
- if (x < 1)
- fun_l24_n761(x)
- else
- fun_l24_n562(x)
- end
-end
-
-def fun_l23_n209(x)
- if (x < 1)
- fun_l24_n264(x)
- else
- fun_l24_n20(x)
- end
-end
-
-def fun_l23_n210(x)
- if (x < 1)
- fun_l24_n886(x)
- else
- fun_l24_n505(x)
- end
-end
-
-def fun_l23_n211(x)
- if (x < 1)
- fun_l24_n715(x)
- else
- fun_l24_n641(x)
- end
-end
-
-def fun_l23_n212(x)
- if (x < 1)
- fun_l24_n132(x)
- else
- fun_l24_n875(x)
- end
-end
-
-def fun_l23_n213(x)
- if (x < 1)
- fun_l24_n121(x)
- else
- fun_l24_n38(x)
- end
-end
-
-def fun_l23_n214(x)
- if (x < 1)
- fun_l24_n672(x)
- else
- fun_l24_n497(x)
- end
-end
-
-def fun_l23_n215(x)
- if (x < 1)
- fun_l24_n36(x)
- else
- fun_l24_n696(x)
- end
-end
-
-def fun_l23_n216(x)
- if (x < 1)
- fun_l24_n559(x)
- else
- fun_l24_n772(x)
- end
-end
-
-def fun_l23_n217(x)
- if (x < 1)
- fun_l24_n63(x)
- else
- fun_l24_n990(x)
- end
-end
-
-def fun_l23_n218(x)
- if (x < 1)
- fun_l24_n482(x)
- else
- fun_l24_n811(x)
- end
-end
-
-def fun_l23_n219(x)
- if (x < 1)
- fun_l24_n572(x)
- else
- fun_l24_n651(x)
- end
-end
-
-def fun_l23_n220(x)
- if (x < 1)
- fun_l24_n588(x)
- else
- fun_l24_n87(x)
- end
-end
-
-def fun_l23_n221(x)
- if (x < 1)
- fun_l24_n462(x)
- else
- fun_l24_n909(x)
- end
-end
-
-def fun_l23_n222(x)
- if (x < 1)
- fun_l24_n729(x)
- else
- fun_l24_n364(x)
- end
-end
-
-def fun_l23_n223(x)
- if (x < 1)
- fun_l24_n259(x)
- else
- fun_l24_n661(x)
- end
-end
-
-def fun_l23_n224(x)
- if (x < 1)
- fun_l24_n504(x)
- else
- fun_l24_n531(x)
- end
-end
-
-def fun_l23_n225(x)
- if (x < 1)
- fun_l24_n114(x)
- else
- fun_l24_n292(x)
- end
-end
-
-def fun_l23_n226(x)
- if (x < 1)
- fun_l24_n207(x)
- else
- fun_l24_n206(x)
- end
-end
-
-def fun_l23_n227(x)
- if (x < 1)
- fun_l24_n153(x)
- else
- fun_l24_n572(x)
- end
-end
-
-def fun_l23_n228(x)
- if (x < 1)
- fun_l24_n738(x)
- else
- fun_l24_n767(x)
- end
-end
-
-def fun_l23_n229(x)
- if (x < 1)
- fun_l24_n374(x)
- else
- fun_l24_n336(x)
- end
-end
-
-def fun_l23_n230(x)
- if (x < 1)
- fun_l24_n727(x)
- else
- fun_l24_n842(x)
- end
-end
-
-def fun_l23_n231(x)
- if (x < 1)
- fun_l24_n506(x)
- else
- fun_l24_n8(x)
- end
-end
-
-def fun_l23_n232(x)
- if (x < 1)
- fun_l24_n101(x)
- else
- fun_l24_n502(x)
- end
-end
-
-def fun_l23_n233(x)
- if (x < 1)
- fun_l24_n469(x)
- else
- fun_l24_n274(x)
- end
-end
-
-def fun_l23_n234(x)
- if (x < 1)
- fun_l24_n67(x)
- else
- fun_l24_n66(x)
- end
-end
-
-def fun_l23_n235(x)
- if (x < 1)
- fun_l24_n874(x)
- else
- fun_l24_n104(x)
- end
-end
-
-def fun_l23_n236(x)
- if (x < 1)
- fun_l24_n154(x)
- else
- fun_l24_n723(x)
- end
-end
-
-def fun_l23_n237(x)
- if (x < 1)
- fun_l24_n300(x)
- else
- fun_l24_n0(x)
- end
-end
-
-def fun_l23_n238(x)
- if (x < 1)
- fun_l24_n767(x)
- else
- fun_l24_n134(x)
- end
-end
-
-def fun_l23_n239(x)
- if (x < 1)
- fun_l24_n647(x)
- else
- fun_l24_n890(x)
- end
-end
-
-def fun_l23_n240(x)
- if (x < 1)
- fun_l24_n258(x)
- else
- fun_l24_n302(x)
- end
-end
-
-def fun_l23_n241(x)
- if (x < 1)
- fun_l24_n104(x)
- else
- fun_l24_n335(x)
- end
-end
-
-def fun_l23_n242(x)
- if (x < 1)
- fun_l24_n500(x)
- else
- fun_l24_n383(x)
- end
-end
-
-def fun_l23_n243(x)
- if (x < 1)
- fun_l24_n63(x)
- else
- fun_l24_n421(x)
- end
-end
-
-def fun_l23_n244(x)
- if (x < 1)
- fun_l24_n105(x)
- else
- fun_l24_n451(x)
- end
-end
-
-def fun_l23_n245(x)
- if (x < 1)
- fun_l24_n729(x)
- else
- fun_l24_n333(x)
- end
-end
-
-def fun_l23_n246(x)
- if (x < 1)
- fun_l24_n966(x)
- else
- fun_l24_n556(x)
- end
-end
-
-def fun_l23_n247(x)
- if (x < 1)
- fun_l24_n118(x)
- else
- fun_l24_n565(x)
- end
-end
-
-def fun_l23_n248(x)
- if (x < 1)
- fun_l24_n61(x)
- else
- fun_l24_n816(x)
- end
-end
-
-def fun_l23_n249(x)
- if (x < 1)
- fun_l24_n769(x)
- else
- fun_l24_n183(x)
- end
-end
-
-def fun_l23_n250(x)
- if (x < 1)
- fun_l24_n688(x)
- else
- fun_l24_n60(x)
- end
-end
-
-def fun_l23_n251(x)
- if (x < 1)
- fun_l24_n859(x)
- else
- fun_l24_n434(x)
- end
-end
-
-def fun_l23_n252(x)
- if (x < 1)
- fun_l24_n650(x)
- else
- fun_l24_n448(x)
- end
-end
-
-def fun_l23_n253(x)
- if (x < 1)
- fun_l24_n519(x)
- else
- fun_l24_n963(x)
- end
-end
-
-def fun_l23_n254(x)
- if (x < 1)
- fun_l24_n176(x)
- else
- fun_l24_n908(x)
- end
-end
-
-def fun_l23_n255(x)
- if (x < 1)
- fun_l24_n146(x)
- else
- fun_l24_n751(x)
- end
-end
-
-def fun_l23_n256(x)
- if (x < 1)
- fun_l24_n742(x)
- else
- fun_l24_n928(x)
- end
-end
-
-def fun_l23_n257(x)
- if (x < 1)
- fun_l24_n22(x)
- else
- fun_l24_n48(x)
- end
-end
-
-def fun_l23_n258(x)
- if (x < 1)
- fun_l24_n158(x)
- else
- fun_l24_n299(x)
- end
-end
-
-def fun_l23_n259(x)
- if (x < 1)
- fun_l24_n247(x)
- else
- fun_l24_n419(x)
- end
-end
-
-def fun_l23_n260(x)
- if (x < 1)
- fun_l24_n161(x)
- else
- fun_l24_n387(x)
- end
-end
-
-def fun_l23_n261(x)
- if (x < 1)
- fun_l24_n627(x)
- else
- fun_l24_n321(x)
- end
-end
-
-def fun_l23_n262(x)
- if (x < 1)
- fun_l24_n946(x)
- else
- fun_l24_n617(x)
- end
-end
-
-def fun_l23_n263(x)
- if (x < 1)
- fun_l24_n853(x)
- else
- fun_l24_n208(x)
- end
-end
-
-def fun_l23_n264(x)
- if (x < 1)
- fun_l24_n213(x)
- else
- fun_l24_n27(x)
- end
-end
-
-def fun_l23_n265(x)
- if (x < 1)
- fun_l24_n819(x)
- else
- fun_l24_n438(x)
- end
-end
-
-def fun_l23_n266(x)
- if (x < 1)
- fun_l24_n351(x)
- else
- fun_l24_n739(x)
- end
-end
-
-def fun_l23_n267(x)
- if (x < 1)
- fun_l24_n333(x)
- else
- fun_l24_n179(x)
- end
-end
-
-def fun_l23_n268(x)
- if (x < 1)
- fun_l24_n528(x)
- else
- fun_l24_n397(x)
- end
-end
-
-def fun_l23_n269(x)
- if (x < 1)
- fun_l24_n655(x)
- else
- fun_l24_n994(x)
- end
-end
-
-def fun_l23_n270(x)
- if (x < 1)
- fun_l24_n257(x)
- else
- fun_l24_n346(x)
- end
-end
-
-def fun_l23_n271(x)
- if (x < 1)
- fun_l24_n183(x)
- else
- fun_l24_n908(x)
- end
-end
-
-def fun_l23_n272(x)
- if (x < 1)
- fun_l24_n742(x)
- else
- fun_l24_n483(x)
- end
-end
-
-def fun_l23_n273(x)
- if (x < 1)
- fun_l24_n803(x)
- else
- fun_l24_n318(x)
- end
-end
-
-def fun_l23_n274(x)
- if (x < 1)
- fun_l24_n228(x)
- else
- fun_l24_n540(x)
- end
-end
-
-def fun_l23_n275(x)
- if (x < 1)
- fun_l24_n999(x)
- else
- fun_l24_n55(x)
- end
-end
-
-def fun_l23_n276(x)
- if (x < 1)
- fun_l24_n129(x)
- else
- fun_l24_n235(x)
- end
-end
-
-def fun_l23_n277(x)
- if (x < 1)
- fun_l24_n320(x)
- else
- fun_l24_n211(x)
- end
-end
-
-def fun_l23_n278(x)
- if (x < 1)
- fun_l24_n757(x)
- else
- fun_l24_n440(x)
- end
-end
-
-def fun_l23_n279(x)
- if (x < 1)
- fun_l24_n784(x)
- else
- fun_l24_n117(x)
- end
-end
-
-def fun_l23_n280(x)
- if (x < 1)
- fun_l24_n280(x)
- else
- fun_l24_n560(x)
- end
-end
-
-def fun_l23_n281(x)
- if (x < 1)
- fun_l24_n981(x)
- else
- fun_l24_n939(x)
- end
-end
-
-def fun_l23_n282(x)
- if (x < 1)
- fun_l24_n500(x)
- else
- fun_l24_n90(x)
- end
-end
-
-def fun_l23_n283(x)
- if (x < 1)
- fun_l24_n958(x)
- else
- fun_l24_n415(x)
- end
-end
-
-def fun_l23_n284(x)
- if (x < 1)
- fun_l24_n237(x)
- else
- fun_l24_n556(x)
- end
-end
-
-def fun_l23_n285(x)
- if (x < 1)
- fun_l24_n87(x)
- else
- fun_l24_n630(x)
- end
-end
-
-def fun_l23_n286(x)
- if (x < 1)
- fun_l24_n121(x)
- else
- fun_l24_n974(x)
- end
-end
-
-def fun_l23_n287(x)
- if (x < 1)
- fun_l24_n491(x)
- else
- fun_l24_n505(x)
- end
-end
-
-def fun_l23_n288(x)
- if (x < 1)
- fun_l24_n342(x)
- else
- fun_l24_n408(x)
- end
-end
-
-def fun_l23_n289(x)
- if (x < 1)
- fun_l24_n456(x)
- else
- fun_l24_n768(x)
- end
-end
-
-def fun_l23_n290(x)
- if (x < 1)
- fun_l24_n64(x)
- else
- fun_l24_n515(x)
- end
-end
-
-def fun_l23_n291(x)
- if (x < 1)
- fun_l24_n86(x)
- else
- fun_l24_n420(x)
- end
-end
-
-def fun_l23_n292(x)
- if (x < 1)
- fun_l24_n61(x)
- else
- fun_l24_n295(x)
- end
-end
-
-def fun_l23_n293(x)
- if (x < 1)
- fun_l24_n893(x)
- else
- fun_l24_n680(x)
- end
-end
-
-def fun_l23_n294(x)
- if (x < 1)
- fun_l24_n81(x)
- else
- fun_l24_n946(x)
- end
-end
-
-def fun_l23_n295(x)
- if (x < 1)
- fun_l24_n444(x)
- else
- fun_l24_n205(x)
- end
-end
-
-def fun_l23_n296(x)
- if (x < 1)
- fun_l24_n898(x)
- else
- fun_l24_n101(x)
- end
-end
-
-def fun_l23_n297(x)
- if (x < 1)
- fun_l24_n617(x)
- else
- fun_l24_n660(x)
- end
-end
-
-def fun_l23_n298(x)
- if (x < 1)
- fun_l24_n117(x)
- else
- fun_l24_n806(x)
- end
-end
-
-def fun_l23_n299(x)
- if (x < 1)
- fun_l24_n92(x)
- else
- fun_l24_n660(x)
- end
-end
-
-def fun_l23_n300(x)
- if (x < 1)
- fun_l24_n202(x)
- else
- fun_l24_n611(x)
- end
-end
-
-def fun_l23_n301(x)
- if (x < 1)
- fun_l24_n852(x)
- else
- fun_l24_n569(x)
- end
-end
-
-def fun_l23_n302(x)
- if (x < 1)
- fun_l24_n69(x)
- else
- fun_l24_n725(x)
- end
-end
-
-def fun_l23_n303(x)
- if (x < 1)
- fun_l24_n183(x)
- else
- fun_l24_n406(x)
- end
-end
-
-def fun_l23_n304(x)
- if (x < 1)
- fun_l24_n926(x)
- else
- fun_l24_n838(x)
- end
-end
-
-def fun_l23_n305(x)
- if (x < 1)
- fun_l24_n16(x)
- else
- fun_l24_n681(x)
- end
-end
-
-def fun_l23_n306(x)
- if (x < 1)
- fun_l24_n43(x)
- else
- fun_l24_n504(x)
- end
-end
-
-def fun_l23_n307(x)
- if (x < 1)
- fun_l24_n417(x)
- else
- fun_l24_n239(x)
- end
-end
-
-def fun_l23_n308(x)
- if (x < 1)
- fun_l24_n353(x)
- else
- fun_l24_n467(x)
- end
-end
-
-def fun_l23_n309(x)
- if (x < 1)
- fun_l24_n633(x)
- else
- fun_l24_n593(x)
- end
-end
-
-def fun_l23_n310(x)
- if (x < 1)
- fun_l24_n974(x)
- else
- fun_l24_n894(x)
- end
-end
-
-def fun_l23_n311(x)
- if (x < 1)
- fun_l24_n3(x)
- else
- fun_l24_n751(x)
- end
-end
-
-def fun_l23_n312(x)
- if (x < 1)
- fun_l24_n728(x)
- else
- fun_l24_n116(x)
- end
-end
-
-def fun_l23_n313(x)
- if (x < 1)
- fun_l24_n588(x)
- else
- fun_l24_n636(x)
- end
-end
-
-def fun_l23_n314(x)
- if (x < 1)
- fun_l24_n284(x)
- else
- fun_l24_n751(x)
- end
-end
-
-def fun_l23_n315(x)
- if (x < 1)
- fun_l24_n567(x)
- else
- fun_l24_n356(x)
- end
-end
-
-def fun_l23_n316(x)
- if (x < 1)
- fun_l24_n78(x)
- else
- fun_l24_n714(x)
- end
-end
-
-def fun_l23_n317(x)
- if (x < 1)
- fun_l24_n592(x)
- else
- fun_l24_n720(x)
- end
-end
-
-def fun_l23_n318(x)
- if (x < 1)
- fun_l24_n273(x)
- else
- fun_l24_n367(x)
- end
-end
-
-def fun_l23_n319(x)
- if (x < 1)
- fun_l24_n816(x)
- else
- fun_l24_n964(x)
- end
-end
-
-def fun_l23_n320(x)
- if (x < 1)
- fun_l24_n59(x)
- else
- fun_l24_n630(x)
- end
-end
-
-def fun_l23_n321(x)
- if (x < 1)
- fun_l24_n298(x)
- else
- fun_l24_n639(x)
- end
-end
-
-def fun_l23_n322(x)
- if (x < 1)
- fun_l24_n70(x)
- else
- fun_l24_n714(x)
- end
-end
-
-def fun_l23_n323(x)
- if (x < 1)
- fun_l24_n495(x)
- else
- fun_l24_n630(x)
- end
-end
-
-def fun_l23_n324(x)
- if (x < 1)
- fun_l24_n780(x)
- else
- fun_l24_n932(x)
- end
-end
-
-def fun_l23_n325(x)
- if (x < 1)
- fun_l24_n494(x)
- else
- fun_l24_n610(x)
- end
-end
-
-def fun_l23_n326(x)
- if (x < 1)
- fun_l24_n509(x)
- else
- fun_l24_n635(x)
- end
-end
-
-def fun_l23_n327(x)
- if (x < 1)
- fun_l24_n991(x)
- else
- fun_l24_n355(x)
- end
-end
-
-def fun_l23_n328(x)
- if (x < 1)
- fun_l24_n153(x)
- else
- fun_l24_n234(x)
- end
-end
-
-def fun_l23_n329(x)
- if (x < 1)
- fun_l24_n483(x)
- else
- fun_l24_n812(x)
- end
-end
-
-def fun_l23_n330(x)
- if (x < 1)
- fun_l24_n123(x)
- else
- fun_l24_n665(x)
- end
-end
-
-def fun_l23_n331(x)
- if (x < 1)
- fun_l24_n752(x)
- else
- fun_l24_n471(x)
- end
-end
-
-def fun_l23_n332(x)
- if (x < 1)
- fun_l24_n440(x)
- else
- fun_l24_n788(x)
- end
-end
-
-def fun_l23_n333(x)
- if (x < 1)
- fun_l24_n381(x)
- else
- fun_l24_n95(x)
- end
-end
-
-def fun_l23_n334(x)
- if (x < 1)
- fun_l24_n379(x)
- else
- fun_l24_n982(x)
- end
-end
-
-def fun_l23_n335(x)
- if (x < 1)
- fun_l24_n766(x)
- else
- fun_l24_n14(x)
- end
-end
-
-def fun_l23_n336(x)
- if (x < 1)
- fun_l24_n733(x)
- else
- fun_l24_n614(x)
- end
-end
-
-def fun_l23_n337(x)
- if (x < 1)
- fun_l24_n946(x)
- else
- fun_l24_n408(x)
- end
-end
-
-def fun_l23_n338(x)
- if (x < 1)
- fun_l24_n98(x)
- else
- fun_l24_n542(x)
- end
-end
-
-def fun_l23_n339(x)
- if (x < 1)
- fun_l24_n60(x)
- else
- fun_l24_n970(x)
- end
-end
-
-def fun_l23_n340(x)
- if (x < 1)
- fun_l24_n933(x)
- else
- fun_l24_n517(x)
- end
-end
-
-def fun_l23_n341(x)
- if (x < 1)
- fun_l24_n634(x)
- else
- fun_l24_n943(x)
- end
-end
-
-def fun_l23_n342(x)
- if (x < 1)
- fun_l24_n50(x)
- else
- fun_l24_n800(x)
- end
-end
-
-def fun_l23_n343(x)
- if (x < 1)
- fun_l24_n352(x)
- else
- fun_l24_n450(x)
- end
-end
-
-def fun_l23_n344(x)
- if (x < 1)
- fun_l24_n340(x)
- else
- fun_l24_n101(x)
- end
-end
-
-def fun_l23_n345(x)
- if (x < 1)
- fun_l24_n383(x)
- else
- fun_l24_n493(x)
- end
-end
-
-def fun_l23_n346(x)
- if (x < 1)
- fun_l24_n805(x)
- else
- fun_l24_n845(x)
- end
-end
-
-def fun_l23_n347(x)
- if (x < 1)
- fun_l24_n491(x)
- else
- fun_l24_n756(x)
- end
-end
-
-def fun_l23_n348(x)
- if (x < 1)
- fun_l24_n508(x)
- else
- fun_l24_n2(x)
- end
-end
-
-def fun_l23_n349(x)
- if (x < 1)
- fun_l24_n865(x)
- else
- fun_l24_n55(x)
- end
-end
-
-def fun_l23_n350(x)
- if (x < 1)
- fun_l24_n218(x)
- else
- fun_l24_n456(x)
- end
-end
-
-def fun_l23_n351(x)
- if (x < 1)
- fun_l24_n162(x)
- else
- fun_l24_n312(x)
- end
-end
-
-def fun_l23_n352(x)
- if (x < 1)
- fun_l24_n309(x)
- else
- fun_l24_n431(x)
- end
-end
-
-def fun_l23_n353(x)
- if (x < 1)
- fun_l24_n411(x)
- else
- fun_l24_n684(x)
- end
-end
-
-def fun_l23_n354(x)
- if (x < 1)
- fun_l24_n381(x)
- else
- fun_l24_n703(x)
- end
-end
-
-def fun_l23_n355(x)
- if (x < 1)
- fun_l24_n189(x)
- else
- fun_l24_n217(x)
- end
-end
-
-def fun_l23_n356(x)
- if (x < 1)
- fun_l24_n180(x)
- else
- fun_l24_n706(x)
- end
-end
-
-def fun_l23_n357(x)
- if (x < 1)
- fun_l24_n76(x)
- else
- fun_l24_n575(x)
- end
-end
-
-def fun_l23_n358(x)
- if (x < 1)
- fun_l24_n574(x)
- else
- fun_l24_n842(x)
- end
-end
-
-def fun_l23_n359(x)
- if (x < 1)
- fun_l24_n281(x)
- else
- fun_l24_n572(x)
- end
-end
-
-def fun_l23_n360(x)
- if (x < 1)
- fun_l24_n2(x)
- else
- fun_l24_n928(x)
- end
-end
-
-def fun_l23_n361(x)
- if (x < 1)
- fun_l24_n840(x)
- else
- fun_l24_n794(x)
- end
-end
-
-def fun_l23_n362(x)
- if (x < 1)
- fun_l24_n657(x)
- else
- fun_l24_n987(x)
- end
-end
-
-def fun_l23_n363(x)
- if (x < 1)
- fun_l24_n400(x)
- else
- fun_l24_n151(x)
- end
-end
-
-def fun_l23_n364(x)
- if (x < 1)
- fun_l24_n123(x)
- else
- fun_l24_n873(x)
- end
-end
-
-def fun_l23_n365(x)
- if (x < 1)
- fun_l24_n51(x)
- else
- fun_l24_n52(x)
- end
-end
-
-def fun_l23_n366(x)
- if (x < 1)
- fun_l24_n809(x)
- else
- fun_l24_n32(x)
- end
-end
-
-def fun_l23_n367(x)
- if (x < 1)
- fun_l24_n928(x)
- else
- fun_l24_n618(x)
- end
-end
-
-def fun_l23_n368(x)
- if (x < 1)
- fun_l24_n563(x)
- else
- fun_l24_n937(x)
- end
-end
-
-def fun_l23_n369(x)
- if (x < 1)
- fun_l24_n312(x)
- else
- fun_l24_n918(x)
- end
-end
-
-def fun_l23_n370(x)
- if (x < 1)
- fun_l24_n940(x)
- else
- fun_l24_n994(x)
- end
-end
-
-def fun_l23_n371(x)
- if (x < 1)
- fun_l24_n788(x)
- else
- fun_l24_n187(x)
- end
-end
-
-def fun_l23_n372(x)
- if (x < 1)
- fun_l24_n110(x)
- else
- fun_l24_n523(x)
- end
-end
-
-def fun_l23_n373(x)
- if (x < 1)
- fun_l24_n158(x)
- else
- fun_l24_n656(x)
- end
-end
-
-def fun_l23_n374(x)
- if (x < 1)
- fun_l24_n522(x)
- else
- fun_l24_n395(x)
- end
-end
-
-def fun_l23_n375(x)
- if (x < 1)
- fun_l24_n90(x)
- else
- fun_l24_n732(x)
- end
-end
-
-def fun_l23_n376(x)
- if (x < 1)
- fun_l24_n809(x)
- else
- fun_l24_n513(x)
- end
-end
-
-def fun_l23_n377(x)
- if (x < 1)
- fun_l24_n916(x)
- else
- fun_l24_n962(x)
- end
-end
-
-def fun_l23_n378(x)
- if (x < 1)
- fun_l24_n852(x)
- else
- fun_l24_n350(x)
- end
-end
-
-def fun_l23_n379(x)
- if (x < 1)
- fun_l24_n555(x)
- else
- fun_l24_n375(x)
- end
-end
-
-def fun_l23_n380(x)
- if (x < 1)
- fun_l24_n17(x)
- else
- fun_l24_n566(x)
- end
-end
-
-def fun_l23_n381(x)
- if (x < 1)
- fun_l24_n332(x)
- else
- fun_l24_n35(x)
- end
-end
-
-def fun_l23_n382(x)
- if (x < 1)
- fun_l24_n531(x)
- else
- fun_l24_n368(x)
- end
-end
-
-def fun_l23_n383(x)
- if (x < 1)
- fun_l24_n712(x)
- else
- fun_l24_n32(x)
- end
-end
-
-def fun_l23_n384(x)
- if (x < 1)
- fun_l24_n239(x)
- else
- fun_l24_n542(x)
- end
-end
-
-def fun_l23_n385(x)
- if (x < 1)
- fun_l24_n914(x)
- else
- fun_l24_n820(x)
- end
-end
-
-def fun_l23_n386(x)
- if (x < 1)
- fun_l24_n579(x)
- else
- fun_l24_n202(x)
- end
-end
-
-def fun_l23_n387(x)
- if (x < 1)
- fun_l24_n36(x)
- else
- fun_l24_n591(x)
- end
-end
-
-def fun_l23_n388(x)
- if (x < 1)
- fun_l24_n485(x)
- else
- fun_l24_n707(x)
- end
-end
-
-def fun_l23_n389(x)
- if (x < 1)
- fun_l24_n587(x)
- else
- fun_l24_n588(x)
- end
-end
-
-def fun_l23_n390(x)
- if (x < 1)
- fun_l24_n837(x)
- else
- fun_l24_n352(x)
- end
-end
-
-def fun_l23_n391(x)
- if (x < 1)
- fun_l24_n926(x)
- else
- fun_l24_n553(x)
- end
-end
-
-def fun_l23_n392(x)
- if (x < 1)
- fun_l24_n557(x)
- else
- fun_l24_n944(x)
- end
-end
-
-def fun_l23_n393(x)
- if (x < 1)
- fun_l24_n870(x)
- else
- fun_l24_n632(x)
- end
-end
-
-def fun_l23_n394(x)
- if (x < 1)
- fun_l24_n732(x)
- else
- fun_l24_n285(x)
- end
-end
-
-def fun_l23_n395(x)
- if (x < 1)
- fun_l24_n249(x)
- else
- fun_l24_n709(x)
- end
-end
-
-def fun_l23_n396(x)
- if (x < 1)
- fun_l24_n674(x)
- else
- fun_l24_n693(x)
- end
-end
-
-def fun_l23_n397(x)
- if (x < 1)
- fun_l24_n20(x)
- else
- fun_l24_n367(x)
- end
-end
-
-def fun_l23_n398(x)
- if (x < 1)
- fun_l24_n545(x)
- else
- fun_l24_n973(x)
- end
-end
-
-def fun_l23_n399(x)
- if (x < 1)
- fun_l24_n460(x)
- else
- fun_l24_n627(x)
- end
-end
-
-def fun_l23_n400(x)
- if (x < 1)
- fun_l24_n941(x)
- else
- fun_l24_n679(x)
- end
-end
-
-def fun_l23_n401(x)
- if (x < 1)
- fun_l24_n161(x)
- else
- fun_l24_n518(x)
- end
-end
-
-def fun_l23_n402(x)
- if (x < 1)
- fun_l24_n738(x)
- else
- fun_l24_n393(x)
- end
-end
-
-def fun_l23_n403(x)
- if (x < 1)
- fun_l24_n75(x)
- else
- fun_l24_n776(x)
- end
-end
-
-def fun_l23_n404(x)
- if (x < 1)
- fun_l24_n996(x)
- else
- fun_l24_n71(x)
- end
-end
-
-def fun_l23_n405(x)
- if (x < 1)
- fun_l24_n732(x)
- else
- fun_l24_n649(x)
- end
-end
-
-def fun_l23_n406(x)
- if (x < 1)
- fun_l24_n142(x)
- else
- fun_l24_n563(x)
- end
-end
-
-def fun_l23_n407(x)
- if (x < 1)
- fun_l24_n63(x)
- else
- fun_l24_n629(x)
- end
-end
-
-def fun_l23_n408(x)
- if (x < 1)
- fun_l24_n734(x)
- else
- fun_l24_n857(x)
- end
-end
-
-def fun_l23_n409(x)
- if (x < 1)
- fun_l24_n100(x)
- else
- fun_l24_n340(x)
- end
-end
-
-def fun_l23_n410(x)
- if (x < 1)
- fun_l24_n471(x)
- else
- fun_l24_n114(x)
- end
-end
-
-def fun_l23_n411(x)
- if (x < 1)
- fun_l24_n316(x)
- else
- fun_l24_n965(x)
- end
-end
-
-def fun_l23_n412(x)
- if (x < 1)
- fun_l24_n909(x)
- else
- fun_l24_n779(x)
- end
-end
-
-def fun_l23_n413(x)
- if (x < 1)
- fun_l24_n846(x)
- else
- fun_l24_n473(x)
- end
-end
-
-def fun_l23_n414(x)
- if (x < 1)
- fun_l24_n117(x)
- else
- fun_l24_n751(x)
- end
-end
-
-def fun_l23_n415(x)
- if (x < 1)
- fun_l24_n360(x)
- else
- fun_l24_n285(x)
- end
-end
-
-def fun_l23_n416(x)
- if (x < 1)
- fun_l24_n430(x)
- else
- fun_l24_n273(x)
- end
-end
-
-def fun_l23_n417(x)
- if (x < 1)
- fun_l24_n925(x)
- else
- fun_l24_n928(x)
- end
-end
-
-def fun_l23_n418(x)
- if (x < 1)
- fun_l24_n478(x)
- else
- fun_l24_n511(x)
- end
-end
-
-def fun_l23_n419(x)
- if (x < 1)
- fun_l24_n415(x)
- else
- fun_l24_n127(x)
- end
-end
-
-def fun_l23_n420(x)
- if (x < 1)
- fun_l24_n33(x)
- else
- fun_l24_n897(x)
- end
-end
-
-def fun_l23_n421(x)
- if (x < 1)
- fun_l24_n112(x)
- else
- fun_l24_n87(x)
- end
-end
-
-def fun_l23_n422(x)
- if (x < 1)
- fun_l24_n386(x)
- else
- fun_l24_n450(x)
- end
-end
-
-def fun_l23_n423(x)
- if (x < 1)
- fun_l24_n430(x)
- else
- fun_l24_n517(x)
- end
-end
-
-def fun_l23_n424(x)
- if (x < 1)
- fun_l24_n413(x)
- else
- fun_l24_n799(x)
- end
-end
-
-def fun_l23_n425(x)
- if (x < 1)
- fun_l24_n744(x)
- else
- fun_l24_n218(x)
- end
-end
-
-def fun_l23_n426(x)
- if (x < 1)
- fun_l24_n231(x)
- else
- fun_l24_n454(x)
- end
-end
-
-def fun_l23_n427(x)
- if (x < 1)
- fun_l24_n693(x)
- else
- fun_l24_n28(x)
- end
-end
-
-def fun_l23_n428(x)
- if (x < 1)
- fun_l24_n694(x)
- else
- fun_l24_n712(x)
- end
-end
-
-def fun_l23_n429(x)
- if (x < 1)
- fun_l24_n949(x)
- else
- fun_l24_n983(x)
- end
-end
-
-def fun_l23_n430(x)
- if (x < 1)
- fun_l24_n324(x)
- else
- fun_l24_n818(x)
- end
-end
-
-def fun_l23_n431(x)
- if (x < 1)
- fun_l24_n820(x)
- else
- fun_l24_n662(x)
- end
-end
-
-def fun_l23_n432(x)
- if (x < 1)
- fun_l24_n391(x)
- else
- fun_l24_n801(x)
- end
-end
-
-def fun_l23_n433(x)
- if (x < 1)
- fun_l24_n285(x)
- else
- fun_l24_n79(x)
- end
-end
-
-def fun_l23_n434(x)
- if (x < 1)
- fun_l24_n582(x)
- else
- fun_l24_n820(x)
- end
-end
-
-def fun_l23_n435(x)
- if (x < 1)
- fun_l24_n324(x)
- else
- fun_l24_n348(x)
- end
-end
-
-def fun_l23_n436(x)
- if (x < 1)
- fun_l24_n241(x)
- else
- fun_l24_n568(x)
- end
-end
-
-def fun_l23_n437(x)
- if (x < 1)
- fun_l24_n261(x)
- else
- fun_l24_n374(x)
- end
-end
-
-def fun_l23_n438(x)
- if (x < 1)
- fun_l24_n886(x)
- else
- fun_l24_n38(x)
- end
-end
-
-def fun_l23_n439(x)
- if (x < 1)
- fun_l24_n344(x)
- else
- fun_l24_n991(x)
- end
-end
-
-def fun_l23_n440(x)
- if (x < 1)
- fun_l24_n792(x)
- else
- fun_l24_n298(x)
- end
-end
-
-def fun_l23_n441(x)
- if (x < 1)
- fun_l24_n728(x)
- else
- fun_l24_n575(x)
- end
-end
-
-def fun_l23_n442(x)
- if (x < 1)
- fun_l24_n22(x)
- else
- fun_l24_n804(x)
- end
-end
-
-def fun_l23_n443(x)
- if (x < 1)
- fun_l24_n406(x)
- else
- fun_l24_n723(x)
- end
-end
-
-def fun_l23_n444(x)
- if (x < 1)
- fun_l24_n921(x)
- else
- fun_l24_n455(x)
- end
-end
-
-def fun_l23_n445(x)
- if (x < 1)
- fun_l24_n725(x)
- else
- fun_l24_n799(x)
- end
-end
-
-def fun_l23_n446(x)
- if (x < 1)
- fun_l24_n543(x)
- else
- fun_l24_n350(x)
- end
-end
-
-def fun_l23_n447(x)
- if (x < 1)
- fun_l24_n849(x)
- else
- fun_l24_n447(x)
- end
-end
-
-def fun_l23_n448(x)
- if (x < 1)
- fun_l24_n357(x)
- else
- fun_l24_n915(x)
- end
-end
-
-def fun_l23_n449(x)
- if (x < 1)
- fun_l24_n143(x)
- else
- fun_l24_n164(x)
- end
-end
-
-def fun_l23_n450(x)
- if (x < 1)
- fun_l24_n702(x)
- else
- fun_l24_n940(x)
- end
-end
-
-def fun_l23_n451(x)
- if (x < 1)
- fun_l24_n76(x)
- else
- fun_l24_n229(x)
- end
-end
-
-def fun_l23_n452(x)
- if (x < 1)
- fun_l24_n55(x)
- else
- fun_l24_n177(x)
- end
-end
-
-def fun_l23_n453(x)
- if (x < 1)
- fun_l24_n65(x)
- else
- fun_l24_n310(x)
- end
-end
-
-def fun_l23_n454(x)
- if (x < 1)
- fun_l24_n818(x)
- else
- fun_l24_n1(x)
- end
-end
-
-def fun_l23_n455(x)
- if (x < 1)
- fun_l24_n555(x)
- else
- fun_l24_n475(x)
- end
-end
-
-def fun_l23_n456(x)
- if (x < 1)
- fun_l24_n867(x)
- else
- fun_l24_n350(x)
- end
-end
-
-def fun_l23_n457(x)
- if (x < 1)
- fun_l24_n953(x)
- else
- fun_l24_n932(x)
- end
-end
-
-def fun_l23_n458(x)
- if (x < 1)
- fun_l24_n104(x)
- else
- fun_l24_n555(x)
- end
-end
-
-def fun_l23_n459(x)
- if (x < 1)
- fun_l24_n259(x)
- else
- fun_l24_n196(x)
- end
-end
-
-def fun_l23_n460(x)
- if (x < 1)
- fun_l24_n747(x)
- else
- fun_l24_n788(x)
- end
-end
-
-def fun_l23_n461(x)
- if (x < 1)
- fun_l24_n302(x)
- else
- fun_l24_n479(x)
- end
-end
-
-def fun_l23_n462(x)
- if (x < 1)
- fun_l24_n292(x)
- else
- fun_l24_n235(x)
- end
-end
-
-def fun_l23_n463(x)
- if (x < 1)
- fun_l24_n589(x)
- else
- fun_l24_n277(x)
- end
-end
-
-def fun_l23_n464(x)
- if (x < 1)
- fun_l24_n212(x)
- else
- fun_l24_n334(x)
- end
-end
-
-def fun_l23_n465(x)
- if (x < 1)
- fun_l24_n878(x)
- else
- fun_l24_n111(x)
- end
-end
-
-def fun_l23_n466(x)
- if (x < 1)
- fun_l24_n862(x)
- else
- fun_l24_n736(x)
- end
-end
-
-def fun_l23_n467(x)
- if (x < 1)
- fun_l24_n257(x)
- else
- fun_l24_n745(x)
- end
-end
-
-def fun_l23_n468(x)
- if (x < 1)
- fun_l24_n922(x)
- else
- fun_l24_n453(x)
- end
-end
-
-def fun_l23_n469(x)
- if (x < 1)
- fun_l24_n334(x)
- else
- fun_l24_n23(x)
- end
-end
-
-def fun_l23_n470(x)
- if (x < 1)
- fun_l24_n585(x)
- else
- fun_l24_n512(x)
- end
-end
-
-def fun_l23_n471(x)
- if (x < 1)
- fun_l24_n135(x)
- else
- fun_l24_n244(x)
- end
-end
-
-def fun_l23_n472(x)
- if (x < 1)
- fun_l24_n151(x)
- else
- fun_l24_n479(x)
- end
-end
-
-def fun_l23_n473(x)
- if (x < 1)
- fun_l24_n192(x)
- else
- fun_l24_n748(x)
- end
-end
-
-def fun_l23_n474(x)
- if (x < 1)
- fun_l24_n729(x)
- else
- fun_l24_n283(x)
- end
-end
-
-def fun_l23_n475(x)
- if (x < 1)
- fun_l24_n453(x)
- else
- fun_l24_n244(x)
- end
-end
-
-def fun_l23_n476(x)
- if (x < 1)
- fun_l24_n210(x)
- else
- fun_l24_n6(x)
- end
-end
-
-def fun_l23_n477(x)
- if (x < 1)
- fun_l24_n387(x)
- else
- fun_l24_n857(x)
- end
-end
-
-def fun_l23_n478(x)
- if (x < 1)
- fun_l24_n312(x)
- else
- fun_l24_n378(x)
- end
-end
-
-def fun_l23_n479(x)
- if (x < 1)
- fun_l24_n553(x)
- else
- fun_l24_n264(x)
- end
-end
-
-def fun_l23_n480(x)
- if (x < 1)
- fun_l24_n903(x)
- else
- fun_l24_n374(x)
- end
-end
-
-def fun_l23_n481(x)
- if (x < 1)
- fun_l24_n9(x)
- else
- fun_l24_n494(x)
- end
-end
-
-def fun_l23_n482(x)
- if (x < 1)
- fun_l24_n4(x)
- else
- fun_l24_n119(x)
- end
-end
-
-def fun_l23_n483(x)
- if (x < 1)
- fun_l24_n969(x)
- else
- fun_l24_n716(x)
- end
-end
-
-def fun_l23_n484(x)
- if (x < 1)
- fun_l24_n132(x)
- else
- fun_l24_n950(x)
- end
-end
-
-def fun_l23_n485(x)
- if (x < 1)
- fun_l24_n641(x)
- else
- fun_l24_n134(x)
- end
-end
-
-def fun_l23_n486(x)
- if (x < 1)
- fun_l24_n499(x)
- else
- fun_l24_n506(x)
- end
-end
-
-def fun_l23_n487(x)
- if (x < 1)
- fun_l24_n594(x)
- else
- fun_l24_n508(x)
- end
-end
-
-def fun_l23_n488(x)
- if (x < 1)
- fun_l24_n730(x)
- else
- fun_l24_n464(x)
- end
-end
-
-def fun_l23_n489(x)
- if (x < 1)
- fun_l24_n564(x)
- else
- fun_l24_n716(x)
- end
-end
-
-def fun_l23_n490(x)
- if (x < 1)
- fun_l24_n658(x)
- else
- fun_l24_n63(x)
- end
-end
-
-def fun_l23_n491(x)
- if (x < 1)
- fun_l24_n404(x)
- else
- fun_l24_n982(x)
- end
-end
-
-def fun_l23_n492(x)
- if (x < 1)
- fun_l24_n182(x)
- else
- fun_l24_n97(x)
- end
-end
-
-def fun_l23_n493(x)
- if (x < 1)
- fun_l24_n97(x)
- else
- fun_l24_n765(x)
- end
-end
-
-def fun_l23_n494(x)
- if (x < 1)
- fun_l24_n728(x)
- else
- fun_l24_n703(x)
- end
-end
-
-def fun_l23_n495(x)
- if (x < 1)
- fun_l24_n327(x)
- else
- fun_l24_n484(x)
- end
-end
-
-def fun_l23_n496(x)
- if (x < 1)
- fun_l24_n544(x)
- else
- fun_l24_n814(x)
- end
-end
-
-def fun_l23_n497(x)
- if (x < 1)
- fun_l24_n555(x)
- else
- fun_l24_n160(x)
- end
-end
-
-def fun_l23_n498(x)
- if (x < 1)
- fun_l24_n336(x)
- else
- fun_l24_n544(x)
- end
-end
-
-def fun_l23_n499(x)
- if (x < 1)
- fun_l24_n242(x)
- else
- fun_l24_n337(x)
- end
-end
-
-def fun_l23_n500(x)
- if (x < 1)
- fun_l24_n71(x)
- else
- fun_l24_n446(x)
- end
-end
-
-def fun_l23_n501(x)
- if (x < 1)
- fun_l24_n726(x)
- else
- fun_l24_n127(x)
- end
-end
-
-def fun_l23_n502(x)
- if (x < 1)
- fun_l24_n430(x)
- else
- fun_l24_n136(x)
- end
-end
-
-def fun_l23_n503(x)
- if (x < 1)
- fun_l24_n140(x)
- else
- fun_l24_n942(x)
- end
-end
-
-def fun_l23_n504(x)
- if (x < 1)
- fun_l24_n135(x)
- else
- fun_l24_n701(x)
- end
-end
-
-def fun_l23_n505(x)
- if (x < 1)
- fun_l24_n409(x)
- else
- fun_l24_n825(x)
- end
-end
-
-def fun_l23_n506(x)
- if (x < 1)
- fun_l24_n415(x)
- else
- fun_l24_n336(x)
- end
-end
-
-def fun_l23_n507(x)
- if (x < 1)
- fun_l24_n118(x)
- else
- fun_l24_n904(x)
- end
-end
-
-def fun_l23_n508(x)
- if (x < 1)
- fun_l24_n870(x)
- else
- fun_l24_n473(x)
- end
-end
-
-def fun_l23_n509(x)
- if (x < 1)
- fun_l24_n99(x)
- else
- fun_l24_n157(x)
- end
-end
-
-def fun_l23_n510(x)
- if (x < 1)
- fun_l24_n484(x)
- else
- fun_l24_n933(x)
- end
-end
-
-def fun_l23_n511(x)
- if (x < 1)
- fun_l24_n204(x)
- else
- fun_l24_n95(x)
- end
-end
-
-def fun_l23_n512(x)
- if (x < 1)
- fun_l24_n783(x)
- else
- fun_l24_n490(x)
- end
-end
-
-def fun_l23_n513(x)
- if (x < 1)
- fun_l24_n642(x)
- else
- fun_l24_n622(x)
- end
-end
-
-def fun_l23_n514(x)
- if (x < 1)
- fun_l24_n514(x)
- else
- fun_l24_n287(x)
- end
-end
-
-def fun_l23_n515(x)
- if (x < 1)
- fun_l24_n174(x)
- else
- fun_l24_n19(x)
- end
-end
-
-def fun_l23_n516(x)
- if (x < 1)
- fun_l24_n840(x)
- else
- fun_l24_n710(x)
- end
-end
-
-def fun_l23_n517(x)
- if (x < 1)
- fun_l24_n921(x)
- else
- fun_l24_n11(x)
- end
-end
-
-def fun_l23_n518(x)
- if (x < 1)
- fun_l24_n162(x)
- else
- fun_l24_n185(x)
- end
-end
-
-def fun_l23_n519(x)
- if (x < 1)
- fun_l24_n654(x)
- else
- fun_l24_n514(x)
- end
-end
-
-def fun_l23_n520(x)
- if (x < 1)
- fun_l24_n763(x)
- else
- fun_l24_n158(x)
- end
-end
-
-def fun_l23_n521(x)
- if (x < 1)
- fun_l24_n471(x)
- else
- fun_l24_n617(x)
- end
-end
-
-def fun_l23_n522(x)
- if (x < 1)
- fun_l24_n146(x)
- else
- fun_l24_n6(x)
- end
-end
-
-def fun_l23_n523(x)
- if (x < 1)
- fun_l24_n447(x)
- else
- fun_l24_n981(x)
- end
-end
-
-def fun_l23_n524(x)
- if (x < 1)
- fun_l24_n809(x)
- else
- fun_l24_n78(x)
- end
-end
-
-def fun_l23_n525(x)
- if (x < 1)
- fun_l24_n554(x)
- else
- fun_l24_n50(x)
- end
-end
-
-def fun_l23_n526(x)
- if (x < 1)
- fun_l24_n970(x)
- else
- fun_l24_n600(x)
- end
-end
-
-def fun_l23_n527(x)
- if (x < 1)
- fun_l24_n700(x)
- else
- fun_l24_n982(x)
- end
-end
-
-def fun_l23_n528(x)
- if (x < 1)
- fun_l24_n947(x)
- else
- fun_l24_n886(x)
- end
-end
-
-def fun_l23_n529(x)
- if (x < 1)
- fun_l24_n198(x)
- else
- fun_l24_n283(x)
- end
-end
-
-def fun_l23_n530(x)
- if (x < 1)
- fun_l24_n641(x)
- else
- fun_l24_n879(x)
- end
-end
-
-def fun_l23_n531(x)
- if (x < 1)
- fun_l24_n393(x)
- else
- fun_l24_n451(x)
- end
-end
-
-def fun_l23_n532(x)
- if (x < 1)
- fun_l24_n802(x)
- else
- fun_l24_n271(x)
- end
-end
-
-def fun_l23_n533(x)
- if (x < 1)
- fun_l24_n926(x)
- else
- fun_l24_n315(x)
- end
-end
-
-def fun_l23_n534(x)
- if (x < 1)
- fun_l24_n544(x)
- else
- fun_l24_n358(x)
- end
-end
-
-def fun_l23_n535(x)
- if (x < 1)
- fun_l24_n456(x)
- else
- fun_l24_n569(x)
- end
-end
-
-def fun_l23_n536(x)
- if (x < 1)
- fun_l24_n235(x)
- else
- fun_l24_n182(x)
- end
-end
-
-def fun_l23_n537(x)
- if (x < 1)
- fun_l24_n159(x)
- else
- fun_l24_n674(x)
- end
-end
-
-def fun_l23_n538(x)
- if (x < 1)
- fun_l24_n956(x)
- else
- fun_l24_n145(x)
- end
-end
-
-def fun_l23_n539(x)
- if (x < 1)
- fun_l24_n294(x)
- else
- fun_l24_n910(x)
- end
-end
-
-def fun_l23_n540(x)
- if (x < 1)
- fun_l24_n434(x)
- else
- fun_l24_n336(x)
- end
-end
-
-def fun_l23_n541(x)
- if (x < 1)
- fun_l24_n635(x)
- else
- fun_l24_n182(x)
- end
-end
-
-def fun_l23_n542(x)
- if (x < 1)
- fun_l24_n418(x)
- else
- fun_l24_n828(x)
- end
-end
-
-def fun_l23_n543(x)
- if (x < 1)
- fun_l24_n337(x)
- else
- fun_l24_n740(x)
- end
-end
-
-def fun_l23_n544(x)
- if (x < 1)
- fun_l24_n893(x)
- else
- fun_l24_n402(x)
- end
-end
-
-def fun_l23_n545(x)
- if (x < 1)
- fun_l24_n407(x)
- else
- fun_l24_n124(x)
- end
-end
-
-def fun_l23_n546(x)
- if (x < 1)
- fun_l24_n170(x)
- else
- fun_l24_n64(x)
- end
-end
-
-def fun_l23_n547(x)
- if (x < 1)
- fun_l24_n936(x)
- else
- fun_l24_n876(x)
- end
-end
-
-def fun_l23_n548(x)
- if (x < 1)
- fun_l24_n387(x)
- else
- fun_l24_n655(x)
- end
-end
-
-def fun_l23_n549(x)
- if (x < 1)
- fun_l24_n162(x)
- else
- fun_l24_n210(x)
- end
-end
-
-def fun_l23_n550(x)
- if (x < 1)
- fun_l24_n454(x)
- else
- fun_l24_n695(x)
- end
-end
-
-def fun_l23_n551(x)
- if (x < 1)
- fun_l24_n410(x)
- else
- fun_l24_n529(x)
- end
-end
-
-def fun_l23_n552(x)
- if (x < 1)
- fun_l24_n726(x)
- else
- fun_l24_n450(x)
- end
-end
-
-def fun_l23_n553(x)
- if (x < 1)
- fun_l24_n39(x)
- else
- fun_l24_n37(x)
- end
-end
-
-def fun_l23_n554(x)
- if (x < 1)
- fun_l24_n994(x)
- else
- fun_l24_n106(x)
- end
-end
-
-def fun_l23_n555(x)
- if (x < 1)
- fun_l24_n929(x)
- else
- fun_l24_n766(x)
- end
-end
-
-def fun_l23_n556(x)
- if (x < 1)
- fun_l24_n531(x)
- else
- fun_l24_n502(x)
- end
-end
-
-def fun_l23_n557(x)
- if (x < 1)
- fun_l24_n890(x)
- else
- fun_l24_n919(x)
- end
-end
-
-def fun_l23_n558(x)
- if (x < 1)
- fun_l24_n803(x)
- else
- fun_l24_n460(x)
- end
-end
-
-def fun_l23_n559(x)
- if (x < 1)
- fun_l24_n5(x)
- else
- fun_l24_n464(x)
- end
-end
-
-def fun_l23_n560(x)
- if (x < 1)
- fun_l24_n506(x)
- else
- fun_l24_n891(x)
- end
-end
-
-def fun_l23_n561(x)
- if (x < 1)
- fun_l24_n98(x)
- else
- fun_l24_n534(x)
- end
-end
-
-def fun_l23_n562(x)
- if (x < 1)
- fun_l24_n130(x)
- else
- fun_l24_n54(x)
- end
-end
-
-def fun_l23_n563(x)
- if (x < 1)
- fun_l24_n881(x)
- else
- fun_l24_n699(x)
- end
-end
-
-def fun_l23_n564(x)
- if (x < 1)
- fun_l24_n192(x)
- else
- fun_l24_n112(x)
- end
-end
-
-def fun_l23_n565(x)
- if (x < 1)
- fun_l24_n249(x)
- else
- fun_l24_n796(x)
- end
-end
-
-def fun_l23_n566(x)
- if (x < 1)
- fun_l24_n113(x)
- else
- fun_l24_n599(x)
- end
-end
-
-def fun_l23_n567(x)
- if (x < 1)
- fun_l24_n334(x)
- else
- fun_l24_n80(x)
- end
-end
-
-def fun_l23_n568(x)
- if (x < 1)
- fun_l24_n347(x)
- else
- fun_l24_n726(x)
- end
-end
-
-def fun_l23_n569(x)
- if (x < 1)
- fun_l24_n60(x)
- else
- fun_l24_n249(x)
- end
-end
-
-def fun_l23_n570(x)
- if (x < 1)
- fun_l24_n400(x)
- else
- fun_l24_n773(x)
- end
-end
-
-def fun_l23_n571(x)
- if (x < 1)
- fun_l24_n172(x)
- else
- fun_l24_n787(x)
- end
-end
-
-def fun_l23_n572(x)
- if (x < 1)
- fun_l24_n973(x)
- else
- fun_l24_n875(x)
- end
-end
-
-def fun_l23_n573(x)
- if (x < 1)
- fun_l24_n290(x)
- else
- fun_l24_n225(x)
- end
-end
-
-def fun_l23_n574(x)
- if (x < 1)
- fun_l24_n383(x)
- else
- fun_l24_n714(x)
- end
-end
-
-def fun_l23_n575(x)
- if (x < 1)
- fun_l24_n32(x)
- else
- fun_l24_n508(x)
- end
-end
-
-def fun_l23_n576(x)
- if (x < 1)
- fun_l24_n74(x)
- else
- fun_l24_n368(x)
- end
-end
-
-def fun_l23_n577(x)
- if (x < 1)
- fun_l24_n431(x)
- else
- fun_l24_n2(x)
- end
-end
-
-def fun_l23_n578(x)
- if (x < 1)
- fun_l24_n758(x)
- else
- fun_l24_n178(x)
- end
-end
-
-def fun_l23_n579(x)
- if (x < 1)
- fun_l24_n130(x)
- else
- fun_l24_n512(x)
- end
-end
-
-def fun_l23_n580(x)
- if (x < 1)
- fun_l24_n790(x)
- else
- fun_l24_n280(x)
- end
-end
-
-def fun_l23_n581(x)
- if (x < 1)
- fun_l24_n76(x)
- else
- fun_l24_n596(x)
- end
-end
-
-def fun_l23_n582(x)
- if (x < 1)
- fun_l24_n643(x)
- else
- fun_l24_n506(x)
- end
-end
-
-def fun_l23_n583(x)
- if (x < 1)
- fun_l24_n392(x)
- else
- fun_l24_n671(x)
- end
-end
-
-def fun_l23_n584(x)
- if (x < 1)
- fun_l24_n722(x)
- else
- fun_l24_n390(x)
- end
-end
-
-def fun_l23_n585(x)
- if (x < 1)
- fun_l24_n613(x)
- else
- fun_l24_n461(x)
- end
-end
-
-def fun_l23_n586(x)
- if (x < 1)
- fun_l24_n784(x)
- else
- fun_l24_n426(x)
- end
-end
-
-def fun_l23_n587(x)
- if (x < 1)
- fun_l24_n351(x)
- else
- fun_l24_n68(x)
- end
-end
-
-def fun_l23_n588(x)
- if (x < 1)
- fun_l24_n8(x)
- else
- fun_l24_n9(x)
- end
-end
-
-def fun_l23_n589(x)
- if (x < 1)
- fun_l24_n984(x)
- else
- fun_l24_n704(x)
- end
-end
-
-def fun_l23_n590(x)
- if (x < 1)
- fun_l24_n150(x)
- else
- fun_l24_n36(x)
- end
-end
-
-def fun_l23_n591(x)
- if (x < 1)
- fun_l24_n232(x)
- else
- fun_l24_n293(x)
- end
-end
-
-def fun_l23_n592(x)
- if (x < 1)
- fun_l24_n763(x)
- else
- fun_l24_n444(x)
- end
-end
-
-def fun_l23_n593(x)
- if (x < 1)
- fun_l24_n246(x)
- else
- fun_l24_n101(x)
- end
-end
-
-def fun_l23_n594(x)
- if (x < 1)
- fun_l24_n145(x)
- else
- fun_l24_n626(x)
- end
-end
-
-def fun_l23_n595(x)
- if (x < 1)
- fun_l24_n835(x)
- else
- fun_l24_n827(x)
- end
-end
-
-def fun_l23_n596(x)
- if (x < 1)
- fun_l24_n925(x)
- else
- fun_l24_n875(x)
- end
-end
-
-def fun_l23_n597(x)
- if (x < 1)
- fun_l24_n600(x)
- else
- fun_l24_n817(x)
- end
-end
-
-def fun_l23_n598(x)
- if (x < 1)
- fun_l24_n653(x)
- else
- fun_l24_n632(x)
- end
-end
-
-def fun_l23_n599(x)
- if (x < 1)
- fun_l24_n103(x)
- else
- fun_l24_n675(x)
- end
-end
-
-def fun_l23_n600(x)
- if (x < 1)
- fun_l24_n1(x)
- else
- fun_l24_n899(x)
- end
-end
-
-def fun_l23_n601(x)
- if (x < 1)
- fun_l24_n357(x)
- else
- fun_l24_n88(x)
- end
-end
-
-def fun_l23_n602(x)
- if (x < 1)
- fun_l24_n213(x)
- else
- fun_l24_n71(x)
- end
-end
-
-def fun_l23_n603(x)
- if (x < 1)
- fun_l24_n299(x)
- else
- fun_l24_n283(x)
- end
-end
-
-def fun_l23_n604(x)
- if (x < 1)
- fun_l24_n647(x)
- else
- fun_l24_n891(x)
- end
-end
-
-def fun_l23_n605(x)
- if (x < 1)
- fun_l24_n86(x)
- else
- fun_l24_n581(x)
- end
-end
-
-def fun_l23_n606(x)
- if (x < 1)
- fun_l24_n749(x)
- else
- fun_l24_n780(x)
- end
-end
-
-def fun_l23_n607(x)
- if (x < 1)
- fun_l24_n537(x)
- else
- fun_l24_n22(x)
- end
-end
-
-def fun_l23_n608(x)
- if (x < 1)
- fun_l24_n535(x)
- else
- fun_l24_n379(x)
- end
-end
-
-def fun_l23_n609(x)
- if (x < 1)
- fun_l24_n860(x)
- else
- fun_l24_n220(x)
- end
-end
-
-def fun_l23_n610(x)
- if (x < 1)
- fun_l24_n366(x)
- else
- fun_l24_n216(x)
- end
-end
-
-def fun_l23_n611(x)
- if (x < 1)
- fun_l24_n79(x)
- else
- fun_l24_n506(x)
- end
-end
-
-def fun_l23_n612(x)
- if (x < 1)
- fun_l24_n600(x)
- else
- fun_l24_n367(x)
- end
-end
-
-def fun_l23_n613(x)
- if (x < 1)
- fun_l24_n764(x)
- else
- fun_l24_n167(x)
- end
-end
-
-def fun_l23_n614(x)
- if (x < 1)
- fun_l24_n113(x)
- else
- fun_l24_n398(x)
- end
-end
-
-def fun_l23_n615(x)
- if (x < 1)
- fun_l24_n292(x)
- else
- fun_l24_n1(x)
- end
-end
-
-def fun_l23_n616(x)
- if (x < 1)
- fun_l24_n523(x)
- else
- fun_l24_n344(x)
- end
-end
-
-def fun_l23_n617(x)
- if (x < 1)
- fun_l24_n60(x)
- else
- fun_l24_n618(x)
- end
-end
-
-def fun_l23_n618(x)
- if (x < 1)
- fun_l24_n252(x)
- else
- fun_l24_n718(x)
- end
-end
-
-def fun_l23_n619(x)
- if (x < 1)
- fun_l24_n962(x)
- else
- fun_l24_n69(x)
- end
-end
-
-def fun_l23_n620(x)
- if (x < 1)
- fun_l24_n10(x)
- else
- fun_l24_n87(x)
- end
-end
-
-def fun_l23_n621(x)
- if (x < 1)
- fun_l24_n128(x)
- else
- fun_l24_n958(x)
- end
-end
-
-def fun_l23_n622(x)
- if (x < 1)
- fun_l24_n775(x)
- else
- fun_l24_n205(x)
- end
-end
-
-def fun_l23_n623(x)
- if (x < 1)
- fun_l24_n121(x)
- else
- fun_l24_n69(x)
- end
-end
-
-def fun_l23_n624(x)
- if (x < 1)
- fun_l24_n768(x)
- else
- fun_l24_n439(x)
- end
-end
-
-def fun_l23_n625(x)
- if (x < 1)
- fun_l24_n332(x)
- else
- fun_l24_n73(x)
- end
-end
-
-def fun_l23_n626(x)
- if (x < 1)
- fun_l24_n735(x)
- else
- fun_l24_n651(x)
- end
-end
-
-def fun_l23_n627(x)
- if (x < 1)
- fun_l24_n661(x)
- else
- fun_l24_n827(x)
- end
-end
-
-def fun_l23_n628(x)
- if (x < 1)
- fun_l24_n607(x)
- else
- fun_l24_n343(x)
- end
-end
-
-def fun_l23_n629(x)
- if (x < 1)
- fun_l24_n868(x)
- else
- fun_l24_n633(x)
- end
-end
-
-def fun_l23_n630(x)
- if (x < 1)
- fun_l24_n321(x)
- else
- fun_l24_n44(x)
- end
-end
-
-def fun_l23_n631(x)
- if (x < 1)
- fun_l24_n840(x)
- else
- fun_l24_n265(x)
- end
-end
-
-def fun_l23_n632(x)
- if (x < 1)
- fun_l24_n710(x)
- else
- fun_l24_n343(x)
- end
-end
-
-def fun_l23_n633(x)
- if (x < 1)
- fun_l24_n640(x)
- else
- fun_l24_n112(x)
- end
-end
-
-def fun_l23_n634(x)
- if (x < 1)
- fun_l24_n237(x)
- else
- fun_l24_n83(x)
- end
-end
-
-def fun_l23_n635(x)
- if (x < 1)
- fun_l24_n235(x)
- else
- fun_l24_n970(x)
- end
-end
-
-def fun_l23_n636(x)
- if (x < 1)
- fun_l24_n576(x)
- else
- fun_l24_n891(x)
- end
-end
-
-def fun_l23_n637(x)
- if (x < 1)
- fun_l24_n489(x)
- else
- fun_l24_n136(x)
- end
-end
-
-def fun_l23_n638(x)
- if (x < 1)
- fun_l24_n532(x)
- else
- fun_l24_n150(x)
- end
-end
-
-def fun_l23_n639(x)
- if (x < 1)
- fun_l24_n496(x)
- else
- fun_l24_n57(x)
- end
-end
-
-def fun_l23_n640(x)
- if (x < 1)
- fun_l24_n857(x)
- else
- fun_l24_n564(x)
- end
-end
-
-def fun_l23_n641(x)
- if (x < 1)
- fun_l24_n203(x)
- else
- fun_l24_n730(x)
- end
-end
-
-def fun_l23_n642(x)
- if (x < 1)
- fun_l24_n38(x)
- else
- fun_l24_n388(x)
- end
-end
-
-def fun_l23_n643(x)
- if (x < 1)
- fun_l24_n650(x)
- else
- fun_l24_n672(x)
- end
-end
-
-def fun_l23_n644(x)
- if (x < 1)
- fun_l24_n842(x)
- else
- fun_l24_n473(x)
- end
-end
-
-def fun_l23_n645(x)
- if (x < 1)
- fun_l24_n650(x)
- else
- fun_l24_n36(x)
- end
-end
-
-def fun_l23_n646(x)
- if (x < 1)
- fun_l24_n25(x)
- else
- fun_l24_n696(x)
- end
-end
-
-def fun_l23_n647(x)
- if (x < 1)
- fun_l24_n24(x)
- else
- fun_l24_n414(x)
- end
-end
-
-def fun_l23_n648(x)
- if (x < 1)
- fun_l24_n778(x)
- else
- fun_l24_n794(x)
- end
-end
-
-def fun_l23_n649(x)
- if (x < 1)
- fun_l24_n132(x)
- else
- fun_l24_n833(x)
- end
-end
-
-def fun_l23_n650(x)
- if (x < 1)
- fun_l24_n718(x)
- else
- fun_l24_n327(x)
- end
-end
-
-def fun_l23_n651(x)
- if (x < 1)
- fun_l24_n969(x)
- else
- fun_l24_n865(x)
- end
-end
-
-def fun_l23_n652(x)
- if (x < 1)
- fun_l24_n904(x)
- else
- fun_l24_n4(x)
- end
-end
-
-def fun_l23_n653(x)
- if (x < 1)
- fun_l24_n342(x)
- else
- fun_l24_n953(x)
- end
-end
-
-def fun_l23_n654(x)
- if (x < 1)
- fun_l24_n393(x)
- else
- fun_l24_n175(x)
- end
-end
-
-def fun_l23_n655(x)
- if (x < 1)
- fun_l24_n241(x)
- else
- fun_l24_n835(x)
- end
-end
-
-def fun_l23_n656(x)
- if (x < 1)
- fun_l24_n326(x)
- else
- fun_l24_n294(x)
- end
-end
-
-def fun_l23_n657(x)
- if (x < 1)
- fun_l24_n8(x)
- else
- fun_l24_n327(x)
- end
-end
-
-def fun_l23_n658(x)
- if (x < 1)
- fun_l24_n859(x)
- else
- fun_l24_n138(x)
- end
-end
-
-def fun_l23_n659(x)
- if (x < 1)
- fun_l24_n389(x)
- else
- fun_l24_n840(x)
- end
-end
-
-def fun_l23_n660(x)
- if (x < 1)
- fun_l24_n171(x)
- else
- fun_l24_n731(x)
- end
-end
-
-def fun_l23_n661(x)
- if (x < 1)
- fun_l24_n284(x)
- else
- fun_l24_n358(x)
- end
-end
-
-def fun_l23_n662(x)
- if (x < 1)
- fun_l24_n329(x)
- else
- fun_l24_n459(x)
- end
-end
-
-def fun_l23_n663(x)
- if (x < 1)
- fun_l24_n6(x)
- else
- fun_l24_n29(x)
- end
-end
-
-def fun_l23_n664(x)
- if (x < 1)
- fun_l24_n324(x)
- else
- fun_l24_n58(x)
- end
-end
-
-def fun_l23_n665(x)
- if (x < 1)
- fun_l24_n473(x)
- else
- fun_l24_n932(x)
- end
-end
-
-def fun_l23_n666(x)
- if (x < 1)
- fun_l24_n425(x)
- else
- fun_l24_n49(x)
- end
-end
-
-def fun_l23_n667(x)
- if (x < 1)
- fun_l24_n122(x)
- else
- fun_l24_n515(x)
- end
-end
-
-def fun_l23_n668(x)
- if (x < 1)
- fun_l24_n883(x)
- else
- fun_l24_n383(x)
- end
-end
-
-def fun_l23_n669(x)
- if (x < 1)
- fun_l24_n316(x)
- else
- fun_l24_n456(x)
- end
-end
-
-def fun_l23_n670(x)
- if (x < 1)
- fun_l24_n812(x)
- else
- fun_l24_n625(x)
- end
-end
-
-def fun_l23_n671(x)
- if (x < 1)
- fun_l24_n431(x)
- else
- fun_l24_n685(x)
- end
-end
-
-def fun_l23_n672(x)
- if (x < 1)
- fun_l24_n68(x)
- else
- fun_l24_n112(x)
- end
-end
-
-def fun_l23_n673(x)
- if (x < 1)
- fun_l24_n137(x)
- else
- fun_l24_n349(x)
- end
-end
-
-def fun_l23_n674(x)
- if (x < 1)
- fun_l24_n629(x)
- else
- fun_l24_n165(x)
- end
-end
-
-def fun_l23_n675(x)
- if (x < 1)
- fun_l24_n484(x)
- else
- fun_l24_n102(x)
- end
-end
-
-def fun_l23_n676(x)
- if (x < 1)
- fun_l24_n641(x)
- else
- fun_l24_n912(x)
- end
-end
-
-def fun_l23_n677(x)
- if (x < 1)
- fun_l24_n817(x)
- else
- fun_l24_n975(x)
- end
-end
-
-def fun_l23_n678(x)
- if (x < 1)
- fun_l24_n510(x)
- else
- fun_l24_n346(x)
- end
-end
-
-def fun_l23_n679(x)
- if (x < 1)
- fun_l24_n129(x)
- else
- fun_l24_n602(x)
- end
-end
-
-def fun_l23_n680(x)
- if (x < 1)
- fun_l24_n991(x)
- else
- fun_l24_n406(x)
- end
-end
-
-def fun_l23_n681(x)
- if (x < 1)
- fun_l24_n433(x)
- else
- fun_l24_n998(x)
- end
-end
-
-def fun_l23_n682(x)
- if (x < 1)
- fun_l24_n645(x)
- else
- fun_l24_n275(x)
- end
-end
-
-def fun_l23_n683(x)
- if (x < 1)
- fun_l24_n832(x)
- else
- fun_l24_n346(x)
- end
-end
-
-def fun_l23_n684(x)
- if (x < 1)
- fun_l24_n769(x)
- else
- fun_l24_n927(x)
- end
-end
-
-def fun_l23_n685(x)
- if (x < 1)
- fun_l24_n389(x)
- else
- fun_l24_n777(x)
- end
-end
-
-def fun_l23_n686(x)
- if (x < 1)
- fun_l24_n658(x)
- else
- fun_l24_n184(x)
- end
-end
-
-def fun_l23_n687(x)
- if (x < 1)
- fun_l24_n134(x)
- else
- fun_l24_n517(x)
- end
-end
-
-def fun_l23_n688(x)
- if (x < 1)
- fun_l24_n49(x)
- else
- fun_l24_n392(x)
- end
-end
-
-def fun_l23_n689(x)
- if (x < 1)
- fun_l24_n23(x)
- else
- fun_l24_n402(x)
- end
-end
-
-def fun_l23_n690(x)
- if (x < 1)
- fun_l24_n719(x)
- else
- fun_l24_n529(x)
- end
-end
-
-def fun_l23_n691(x)
- if (x < 1)
- fun_l24_n543(x)
- else
- fun_l24_n789(x)
- end
-end
-
-def fun_l23_n692(x)
- if (x < 1)
- fun_l24_n850(x)
- else
- fun_l24_n50(x)
- end
-end
-
-def fun_l23_n693(x)
- if (x < 1)
- fun_l24_n728(x)
- else
- fun_l24_n730(x)
- end
-end
-
-def fun_l23_n694(x)
- if (x < 1)
- fun_l24_n810(x)
- else
- fun_l24_n999(x)
- end
-end
-
-def fun_l23_n695(x)
- if (x < 1)
- fun_l24_n856(x)
- else
- fun_l24_n404(x)
- end
-end
-
-def fun_l23_n696(x)
- if (x < 1)
- fun_l24_n405(x)
- else
- fun_l24_n275(x)
- end
-end
-
-def fun_l23_n697(x)
- if (x < 1)
- fun_l24_n446(x)
- else
- fun_l24_n773(x)
- end
-end
-
-def fun_l23_n698(x)
- if (x < 1)
- fun_l24_n509(x)
- else
- fun_l24_n146(x)
- end
-end
-
-def fun_l23_n699(x)
- if (x < 1)
- fun_l24_n770(x)
- else
- fun_l24_n275(x)
- end
-end
-
-def fun_l23_n700(x)
- if (x < 1)
- fun_l24_n222(x)
- else
- fun_l24_n60(x)
- end
-end
-
-def fun_l23_n701(x)
- if (x < 1)
- fun_l24_n380(x)
- else
- fun_l24_n654(x)
- end
-end
-
-def fun_l23_n702(x)
- if (x < 1)
- fun_l24_n417(x)
- else
- fun_l24_n221(x)
- end
-end
-
-def fun_l23_n703(x)
- if (x < 1)
- fun_l24_n283(x)
- else
- fun_l24_n171(x)
- end
-end
-
-def fun_l23_n704(x)
- if (x < 1)
- fun_l24_n822(x)
- else
- fun_l24_n72(x)
- end
-end
-
-def fun_l23_n705(x)
- if (x < 1)
- fun_l24_n171(x)
- else
- fun_l24_n258(x)
- end
-end
-
-def fun_l23_n706(x)
- if (x < 1)
- fun_l24_n147(x)
- else
- fun_l24_n518(x)
- end
-end
-
-def fun_l23_n707(x)
- if (x < 1)
- fun_l24_n479(x)
- else
- fun_l24_n267(x)
- end
-end
-
-def fun_l23_n708(x)
- if (x < 1)
- fun_l24_n424(x)
- else
- fun_l24_n517(x)
- end
-end
-
-def fun_l23_n709(x)
- if (x < 1)
- fun_l24_n816(x)
- else
- fun_l24_n329(x)
- end
-end
-
-def fun_l23_n710(x)
- if (x < 1)
- fun_l24_n870(x)
- else
- fun_l24_n185(x)
- end
-end
-
-def fun_l23_n711(x)
- if (x < 1)
- fun_l24_n726(x)
- else
- fun_l24_n950(x)
- end
-end
-
-def fun_l23_n712(x)
- if (x < 1)
- fun_l24_n473(x)
- else
- fun_l24_n179(x)
- end
-end
-
-def fun_l23_n713(x)
- if (x < 1)
- fun_l24_n345(x)
- else
- fun_l24_n872(x)
- end
-end
-
-def fun_l23_n714(x)
- if (x < 1)
- fun_l24_n757(x)
- else
- fun_l24_n364(x)
- end
-end
-
-def fun_l23_n715(x)
- if (x < 1)
- fun_l24_n91(x)
- else
- fun_l24_n999(x)
- end
-end
-
-def fun_l23_n716(x)
- if (x < 1)
- fun_l24_n308(x)
- else
- fun_l24_n281(x)
- end
-end
-
-def fun_l23_n717(x)
- if (x < 1)
- fun_l24_n855(x)
- else
- fun_l24_n175(x)
- end
-end
-
-def fun_l23_n718(x)
- if (x < 1)
- fun_l24_n251(x)
- else
- fun_l24_n532(x)
- end
-end
-
-def fun_l23_n719(x)
- if (x < 1)
- fun_l24_n261(x)
- else
- fun_l24_n755(x)
- end
-end
-
-def fun_l23_n720(x)
- if (x < 1)
- fun_l24_n182(x)
- else
- fun_l24_n115(x)
- end
-end
-
-def fun_l23_n721(x)
- if (x < 1)
- fun_l24_n648(x)
- else
- fun_l24_n728(x)
- end
-end
-
-def fun_l23_n722(x)
- if (x < 1)
- fun_l24_n552(x)
- else
- fun_l24_n549(x)
- end
-end
-
-def fun_l23_n723(x)
- if (x < 1)
- fun_l24_n24(x)
- else
- fun_l24_n794(x)
- end
-end
-
-def fun_l23_n724(x)
- if (x < 1)
- fun_l24_n242(x)
- else
- fun_l24_n980(x)
- end
-end
-
-def fun_l23_n725(x)
- if (x < 1)
- fun_l24_n931(x)
- else
- fun_l24_n711(x)
- end
-end
-
-def fun_l23_n726(x)
- if (x < 1)
- fun_l24_n659(x)
- else
- fun_l24_n981(x)
- end
-end
-
-def fun_l23_n727(x)
- if (x < 1)
- fun_l24_n258(x)
- else
- fun_l24_n915(x)
- end
-end
-
-def fun_l23_n728(x)
- if (x < 1)
- fun_l24_n544(x)
- else
- fun_l24_n89(x)
- end
-end
-
-def fun_l23_n729(x)
- if (x < 1)
- fun_l24_n497(x)
- else
- fun_l24_n320(x)
- end
-end
-
-def fun_l23_n730(x)
- if (x < 1)
- fun_l24_n936(x)
- else
- fun_l24_n209(x)
- end
-end
-
-def fun_l23_n731(x)
- if (x < 1)
- fun_l24_n763(x)
- else
- fun_l24_n836(x)
- end
-end
-
-def fun_l23_n732(x)
- if (x < 1)
- fun_l24_n60(x)
- else
- fun_l24_n867(x)
- end
-end
-
-def fun_l23_n733(x)
- if (x < 1)
- fun_l24_n146(x)
- else
- fun_l24_n294(x)
- end
-end
-
-def fun_l23_n734(x)
- if (x < 1)
- fun_l24_n905(x)
- else
- fun_l24_n463(x)
- end
-end
-
-def fun_l23_n735(x)
- if (x < 1)
- fun_l24_n566(x)
- else
- fun_l24_n240(x)
- end
-end
-
-def fun_l23_n736(x)
- if (x < 1)
- fun_l24_n321(x)
- else
- fun_l24_n597(x)
- end
-end
-
-def fun_l23_n737(x)
- if (x < 1)
- fun_l24_n169(x)
- else
- fun_l24_n201(x)
- end
-end
-
-def fun_l23_n738(x)
- if (x < 1)
- fun_l24_n157(x)
- else
- fun_l24_n349(x)
- end
-end
-
-def fun_l23_n739(x)
- if (x < 1)
- fun_l24_n503(x)
- else
- fun_l24_n342(x)
- end
-end
-
-def fun_l23_n740(x)
- if (x < 1)
- fun_l24_n974(x)
- else
- fun_l24_n467(x)
- end
-end
-
-def fun_l23_n741(x)
- if (x < 1)
- fun_l24_n566(x)
- else
- fun_l24_n162(x)
- end
-end
-
-def fun_l23_n742(x)
- if (x < 1)
- fun_l24_n19(x)
- else
- fun_l24_n750(x)
- end
-end
-
-def fun_l23_n743(x)
- if (x < 1)
- fun_l24_n409(x)
- else
- fun_l24_n362(x)
- end
-end
-
-def fun_l23_n744(x)
- if (x < 1)
- fun_l24_n281(x)
- else
- fun_l24_n439(x)
- end
-end
-
-def fun_l23_n745(x)
- if (x < 1)
- fun_l24_n808(x)
- else
- fun_l24_n794(x)
- end
-end
-
-def fun_l23_n746(x)
- if (x < 1)
- fun_l24_n173(x)
- else
- fun_l24_n892(x)
- end
-end
-
-def fun_l23_n747(x)
- if (x < 1)
- fun_l24_n762(x)
- else
- fun_l24_n339(x)
- end
-end
-
-def fun_l23_n748(x)
- if (x < 1)
- fun_l24_n319(x)
- else
- fun_l24_n753(x)
- end
-end
-
-def fun_l23_n749(x)
- if (x < 1)
- fun_l24_n546(x)
- else
- fun_l24_n727(x)
- end
-end
-
-def fun_l23_n750(x)
- if (x < 1)
- fun_l24_n699(x)
- else
- fun_l24_n173(x)
- end
-end
-
-def fun_l23_n751(x)
- if (x < 1)
- fun_l24_n280(x)
- else
- fun_l24_n468(x)
- end
-end
-
-def fun_l23_n752(x)
- if (x < 1)
- fun_l24_n910(x)
- else
- fun_l24_n500(x)
- end
-end
-
-def fun_l23_n753(x)
- if (x < 1)
- fun_l24_n463(x)
- else
- fun_l24_n81(x)
- end
-end
-
-def fun_l23_n754(x)
- if (x < 1)
- fun_l24_n769(x)
- else
- fun_l24_n584(x)
- end
-end
-
-def fun_l23_n755(x)
- if (x < 1)
- fun_l24_n702(x)
- else
- fun_l24_n337(x)
- end
-end
-
-def fun_l23_n756(x)
- if (x < 1)
- fun_l24_n12(x)
- else
- fun_l24_n335(x)
- end
-end
-
-def fun_l23_n757(x)
- if (x < 1)
- fun_l24_n100(x)
- else
- fun_l24_n743(x)
- end
-end
-
-def fun_l23_n758(x)
- if (x < 1)
- fun_l24_n865(x)
- else
- fun_l24_n594(x)
- end
-end
-
-def fun_l23_n759(x)
- if (x < 1)
- fun_l24_n948(x)
- else
- fun_l24_n32(x)
- end
-end
-
-def fun_l23_n760(x)
- if (x < 1)
- fun_l24_n487(x)
- else
- fun_l24_n72(x)
- end
-end
-
-def fun_l23_n761(x)
- if (x < 1)
- fun_l24_n566(x)
- else
- fun_l24_n290(x)
- end
-end
-
-def fun_l23_n762(x)
- if (x < 1)
- fun_l24_n896(x)
- else
- fun_l24_n840(x)
- end
-end
-
-def fun_l23_n763(x)
- if (x < 1)
- fun_l24_n175(x)
- else
- fun_l24_n50(x)
- end
-end
-
-def fun_l23_n764(x)
- if (x < 1)
- fun_l24_n107(x)
- else
- fun_l24_n446(x)
- end
-end
-
-def fun_l23_n765(x)
- if (x < 1)
- fun_l24_n238(x)
- else
- fun_l24_n944(x)
- end
-end
-
-def fun_l23_n766(x)
- if (x < 1)
- fun_l24_n999(x)
- else
- fun_l24_n419(x)
- end
-end
-
-def fun_l23_n767(x)
- if (x < 1)
- fun_l24_n476(x)
- else
- fun_l24_n976(x)
- end
-end
-
-def fun_l23_n768(x)
- if (x < 1)
- fun_l24_n328(x)
- else
- fun_l24_n782(x)
- end
-end
-
-def fun_l23_n769(x)
- if (x < 1)
- fun_l24_n875(x)
- else
- fun_l24_n847(x)
- end
-end
-
-def fun_l23_n770(x)
- if (x < 1)
- fun_l24_n391(x)
- else
- fun_l24_n123(x)
- end
-end
-
-def fun_l23_n771(x)
- if (x < 1)
- fun_l24_n968(x)
- else
- fun_l24_n915(x)
- end
-end
-
-def fun_l23_n772(x)
- if (x < 1)
- fun_l24_n883(x)
- else
- fun_l24_n604(x)
- end
-end
-
-def fun_l23_n773(x)
- if (x < 1)
- fun_l24_n307(x)
- else
- fun_l24_n70(x)
- end
-end
-
-def fun_l23_n774(x)
- if (x < 1)
- fun_l24_n615(x)
- else
- fun_l24_n115(x)
- end
-end
-
-def fun_l23_n775(x)
- if (x < 1)
- fun_l24_n250(x)
- else
- fun_l24_n178(x)
- end
-end
-
-def fun_l23_n776(x)
- if (x < 1)
- fun_l24_n982(x)
- else
- fun_l24_n570(x)
- end
-end
-
-def fun_l23_n777(x)
- if (x < 1)
- fun_l24_n317(x)
- else
- fun_l24_n170(x)
- end
-end
-
-def fun_l23_n778(x)
- if (x < 1)
- fun_l24_n895(x)
- else
- fun_l24_n147(x)
- end
-end
-
-def fun_l23_n779(x)
- if (x < 1)
- fun_l24_n393(x)
- else
- fun_l24_n513(x)
- end
-end
-
-def fun_l23_n780(x)
- if (x < 1)
- fun_l24_n635(x)
- else
- fun_l24_n161(x)
- end
-end
-
-def fun_l23_n781(x)
- if (x < 1)
- fun_l24_n189(x)
- else
- fun_l24_n225(x)
- end
-end
-
-def fun_l23_n782(x)
- if (x < 1)
- fun_l24_n205(x)
- else
- fun_l24_n620(x)
- end
-end
-
-def fun_l23_n783(x)
- if (x < 1)
- fun_l24_n203(x)
- else
- fun_l24_n58(x)
- end
-end
-
-def fun_l23_n784(x)
- if (x < 1)
- fun_l24_n198(x)
- else
- fun_l24_n948(x)
- end
-end
-
-def fun_l23_n785(x)
- if (x < 1)
- fun_l24_n60(x)
- else
- fun_l24_n406(x)
- end
-end
-
-def fun_l23_n786(x)
- if (x < 1)
- fun_l24_n538(x)
- else
- fun_l24_n992(x)
- end
-end
-
-def fun_l23_n787(x)
- if (x < 1)
- fun_l24_n83(x)
- else
- fun_l24_n544(x)
- end
-end
-
-def fun_l23_n788(x)
- if (x < 1)
- fun_l24_n964(x)
- else
- fun_l24_n939(x)
- end
-end
-
-def fun_l23_n789(x)
- if (x < 1)
- fun_l24_n120(x)
- else
- fun_l24_n843(x)
- end
-end
-
-def fun_l23_n790(x)
- if (x < 1)
- fun_l24_n772(x)
- else
- fun_l24_n111(x)
- end
-end
-
-def fun_l23_n791(x)
- if (x < 1)
- fun_l24_n983(x)
- else
- fun_l24_n934(x)
- end
-end
-
-def fun_l23_n792(x)
- if (x < 1)
- fun_l24_n475(x)
- else
- fun_l24_n532(x)
- end
-end
-
-def fun_l23_n793(x)
- if (x < 1)
- fun_l24_n316(x)
- else
- fun_l24_n400(x)
- end
-end
-
-def fun_l23_n794(x)
- if (x < 1)
- fun_l24_n103(x)
- else
- fun_l24_n19(x)
- end
-end
-
-def fun_l23_n795(x)
- if (x < 1)
- fun_l24_n371(x)
- else
- fun_l24_n176(x)
- end
-end
-
-def fun_l23_n796(x)
- if (x < 1)
- fun_l24_n469(x)
- else
- fun_l24_n958(x)
- end
-end
-
-def fun_l23_n797(x)
- if (x < 1)
- fun_l24_n706(x)
- else
- fun_l24_n953(x)
- end
-end
-
-def fun_l23_n798(x)
- if (x < 1)
- fun_l24_n384(x)
- else
- fun_l24_n439(x)
- end
-end
-
-def fun_l23_n799(x)
- if (x < 1)
- fun_l24_n352(x)
- else
- fun_l24_n36(x)
- end
-end
-
-def fun_l23_n800(x)
- if (x < 1)
- fun_l24_n390(x)
- else
- fun_l24_n963(x)
- end
-end
-
-def fun_l23_n801(x)
- if (x < 1)
- fun_l24_n470(x)
- else
- fun_l24_n818(x)
- end
-end
-
-def fun_l23_n802(x)
- if (x < 1)
- fun_l24_n262(x)
- else
- fun_l24_n893(x)
- end
-end
-
-def fun_l23_n803(x)
- if (x < 1)
- fun_l24_n118(x)
- else
- fun_l24_n684(x)
- end
-end
-
-def fun_l23_n804(x)
- if (x < 1)
- fun_l24_n484(x)
- else
- fun_l24_n520(x)
- end
-end
-
-def fun_l23_n805(x)
- if (x < 1)
- fun_l24_n370(x)
- else
- fun_l24_n80(x)
- end
-end
-
-def fun_l23_n806(x)
- if (x < 1)
- fun_l24_n326(x)
- else
- fun_l24_n436(x)
- end
-end
-
-def fun_l23_n807(x)
- if (x < 1)
- fun_l24_n490(x)
- else
- fun_l24_n811(x)
- end
-end
-
-def fun_l23_n808(x)
- if (x < 1)
- fun_l24_n447(x)
- else
- fun_l24_n150(x)
- end
-end
-
-def fun_l23_n809(x)
- if (x < 1)
- fun_l24_n339(x)
- else
- fun_l24_n367(x)
- end
-end
-
-def fun_l23_n810(x)
- if (x < 1)
- fun_l24_n221(x)
- else
- fun_l24_n505(x)
- end
-end
-
-def fun_l23_n811(x)
- if (x < 1)
- fun_l24_n637(x)
- else
- fun_l24_n101(x)
- end
-end
-
-def fun_l23_n812(x)
- if (x < 1)
- fun_l24_n83(x)
- else
- fun_l24_n538(x)
- end
-end
-
-def fun_l23_n813(x)
- if (x < 1)
- fun_l24_n927(x)
- else
- fun_l24_n513(x)
- end
-end
-
-def fun_l23_n814(x)
- if (x < 1)
- fun_l24_n496(x)
- else
- fun_l24_n290(x)
- end
-end
-
-def fun_l23_n815(x)
- if (x < 1)
- fun_l24_n640(x)
- else
- fun_l24_n796(x)
- end
-end
-
-def fun_l23_n816(x)
- if (x < 1)
- fun_l24_n999(x)
- else
- fun_l24_n54(x)
- end
-end
-
-def fun_l23_n817(x)
- if (x < 1)
- fun_l24_n162(x)
- else
- fun_l24_n617(x)
- end
-end
-
-def fun_l23_n818(x)
- if (x < 1)
- fun_l24_n118(x)
- else
- fun_l24_n187(x)
- end
-end
-
-def fun_l23_n819(x)
- if (x < 1)
- fun_l24_n334(x)
- else
- fun_l24_n901(x)
- end
-end
-
-def fun_l23_n820(x)
- if (x < 1)
- fun_l24_n939(x)
- else
- fun_l24_n896(x)
- end
-end
-
-def fun_l23_n821(x)
- if (x < 1)
- fun_l24_n970(x)
- else
- fun_l24_n725(x)
- end
-end
-
-def fun_l23_n822(x)
- if (x < 1)
- fun_l24_n357(x)
- else
- fun_l24_n771(x)
- end
-end
-
-def fun_l23_n823(x)
- if (x < 1)
- fun_l24_n8(x)
- else
- fun_l24_n214(x)
- end
-end
-
-def fun_l23_n824(x)
- if (x < 1)
- fun_l24_n412(x)
- else
- fun_l24_n145(x)
- end
-end
-
-def fun_l23_n825(x)
- if (x < 1)
- fun_l24_n218(x)
- else
- fun_l24_n700(x)
- end
-end
-
-def fun_l23_n826(x)
- if (x < 1)
- fun_l24_n945(x)
- else
- fun_l24_n523(x)
- end
-end
-
-def fun_l23_n827(x)
- if (x < 1)
- fun_l24_n251(x)
- else
- fun_l24_n854(x)
- end
-end
-
-def fun_l23_n828(x)
- if (x < 1)
- fun_l24_n704(x)
- else
- fun_l24_n879(x)
- end
-end
-
-def fun_l23_n829(x)
- if (x < 1)
- fun_l24_n161(x)
- else
- fun_l24_n529(x)
- end
-end
-
-def fun_l23_n830(x)
- if (x < 1)
- fun_l24_n751(x)
- else
- fun_l24_n409(x)
- end
-end
-
-def fun_l23_n831(x)
- if (x < 1)
- fun_l24_n883(x)
- else
- fun_l24_n1(x)
- end
-end
-
-def fun_l23_n832(x)
- if (x < 1)
- fun_l24_n135(x)
- else
- fun_l24_n738(x)
- end
-end
-
-def fun_l23_n833(x)
- if (x < 1)
- fun_l24_n507(x)
- else
- fun_l24_n727(x)
- end
-end
-
-def fun_l23_n834(x)
- if (x < 1)
- fun_l24_n677(x)
- else
- fun_l24_n602(x)
- end
-end
-
-def fun_l23_n835(x)
- if (x < 1)
- fun_l24_n197(x)
- else
- fun_l24_n481(x)
- end
-end
-
-def fun_l23_n836(x)
- if (x < 1)
- fun_l24_n39(x)
- else
- fun_l24_n149(x)
- end
-end
-
-def fun_l23_n837(x)
- if (x < 1)
- fun_l24_n950(x)
- else
- fun_l24_n455(x)
- end
-end
-
-def fun_l23_n838(x)
- if (x < 1)
- fun_l24_n718(x)
- else
- fun_l24_n264(x)
- end
-end
-
-def fun_l23_n839(x)
- if (x < 1)
- fun_l24_n831(x)
- else
- fun_l24_n576(x)
- end
-end
-
-def fun_l23_n840(x)
- if (x < 1)
- fun_l24_n813(x)
- else
- fun_l24_n564(x)
- end
-end
-
-def fun_l23_n841(x)
- if (x < 1)
- fun_l24_n537(x)
- else
- fun_l24_n880(x)
- end
-end
-
-def fun_l23_n842(x)
- if (x < 1)
- fun_l24_n958(x)
- else
- fun_l24_n963(x)
- end
-end
-
-def fun_l23_n843(x)
- if (x < 1)
- fun_l24_n879(x)
- else
- fun_l24_n281(x)
- end
-end
-
-def fun_l23_n844(x)
- if (x < 1)
- fun_l24_n138(x)
- else
- fun_l24_n562(x)
- end
-end
-
-def fun_l23_n845(x)
- if (x < 1)
- fun_l24_n804(x)
- else
- fun_l24_n283(x)
- end
-end
-
-def fun_l23_n846(x)
- if (x < 1)
- fun_l24_n253(x)
- else
- fun_l24_n339(x)
- end
-end
-
-def fun_l23_n847(x)
- if (x < 1)
- fun_l24_n99(x)
- else
- fun_l24_n623(x)
- end
-end
-
-def fun_l23_n848(x)
- if (x < 1)
- fun_l24_n955(x)
- else
- fun_l24_n121(x)
- end
-end
-
-def fun_l23_n849(x)
- if (x < 1)
- fun_l24_n437(x)
- else
- fun_l24_n387(x)
- end
-end
-
-def fun_l23_n850(x)
- if (x < 1)
- fun_l24_n19(x)
- else
- fun_l24_n790(x)
- end
-end
-
-def fun_l23_n851(x)
- if (x < 1)
- fun_l24_n11(x)
- else
- fun_l24_n931(x)
- end
-end
-
-def fun_l23_n852(x)
- if (x < 1)
- fun_l24_n506(x)
- else
- fun_l24_n162(x)
- end
-end
-
-def fun_l23_n853(x)
- if (x < 1)
- fun_l24_n262(x)
- else
- fun_l24_n1(x)
- end
-end
-
-def fun_l23_n854(x)
- if (x < 1)
- fun_l24_n275(x)
- else
- fun_l24_n549(x)
- end
-end
-
-def fun_l23_n855(x)
- if (x < 1)
- fun_l24_n865(x)
- else
- fun_l24_n472(x)
- end
-end
-
-def fun_l23_n856(x)
- if (x < 1)
- fun_l24_n270(x)
- else
- fun_l24_n312(x)
- end
-end
-
-def fun_l23_n857(x)
- if (x < 1)
- fun_l24_n261(x)
- else
- fun_l24_n240(x)
- end
-end
-
-def fun_l23_n858(x)
- if (x < 1)
- fun_l24_n166(x)
- else
- fun_l24_n996(x)
- end
-end
-
-def fun_l23_n859(x)
- if (x < 1)
- fun_l24_n653(x)
- else
- fun_l24_n464(x)
- end
-end
-
-def fun_l23_n860(x)
- if (x < 1)
- fun_l24_n446(x)
- else
- fun_l24_n706(x)
- end
-end
-
-def fun_l23_n861(x)
- if (x < 1)
- fun_l24_n744(x)
- else
- fun_l24_n53(x)
- end
-end
-
-def fun_l23_n862(x)
- if (x < 1)
- fun_l24_n983(x)
- else
- fun_l24_n188(x)
- end
-end
-
-def fun_l23_n863(x)
- if (x < 1)
- fun_l24_n399(x)
- else
- fun_l24_n582(x)
- end
-end
-
-def fun_l23_n864(x)
- if (x < 1)
- fun_l24_n392(x)
- else
- fun_l24_n937(x)
- end
-end
-
-def fun_l23_n865(x)
- if (x < 1)
- fun_l24_n495(x)
- else
- fun_l24_n557(x)
- end
-end
-
-def fun_l23_n866(x)
- if (x < 1)
- fun_l24_n94(x)
- else
- fun_l24_n295(x)
- end
-end
-
-def fun_l23_n867(x)
- if (x < 1)
- fun_l24_n628(x)
- else
- fun_l24_n432(x)
- end
-end
-
-def fun_l23_n868(x)
- if (x < 1)
- fun_l24_n386(x)
- else
- fun_l24_n385(x)
- end
-end
-
-def fun_l23_n869(x)
- if (x < 1)
- fun_l24_n376(x)
- else
- fun_l24_n469(x)
- end
-end
-
-def fun_l23_n870(x)
- if (x < 1)
- fun_l24_n74(x)
- else
- fun_l24_n712(x)
- end
-end
-
-def fun_l23_n871(x)
- if (x < 1)
- fun_l24_n72(x)
- else
- fun_l24_n642(x)
- end
-end
-
-def fun_l23_n872(x)
- if (x < 1)
- fun_l24_n937(x)
- else
- fun_l24_n751(x)
- end
-end
-
-def fun_l23_n873(x)
- if (x < 1)
- fun_l24_n385(x)
- else
- fun_l24_n404(x)
- end
-end
-
-def fun_l23_n874(x)
- if (x < 1)
- fun_l24_n336(x)
- else
- fun_l24_n226(x)
- end
-end
-
-def fun_l23_n875(x)
- if (x < 1)
- fun_l24_n289(x)
- else
- fun_l24_n989(x)
- end
-end
-
-def fun_l23_n876(x)
- if (x < 1)
- fun_l24_n45(x)
- else
- fun_l24_n279(x)
- end
-end
-
-def fun_l23_n877(x)
- if (x < 1)
- fun_l24_n683(x)
- else
- fun_l24_n342(x)
- end
-end
-
-def fun_l23_n878(x)
- if (x < 1)
- fun_l24_n279(x)
- else
- fun_l24_n600(x)
- end
-end
-
-def fun_l23_n879(x)
- if (x < 1)
- fun_l24_n82(x)
- else
- fun_l24_n177(x)
- end
-end
-
-def fun_l23_n880(x)
- if (x < 1)
- fun_l24_n167(x)
- else
- fun_l24_n912(x)
- end
-end
-
-def fun_l23_n881(x)
- if (x < 1)
- fun_l24_n311(x)
- else
- fun_l24_n634(x)
- end
-end
-
-def fun_l23_n882(x)
- if (x < 1)
- fun_l24_n127(x)
- else
- fun_l24_n661(x)
- end
-end
-
-def fun_l23_n883(x)
- if (x < 1)
- fun_l24_n199(x)
- else
- fun_l24_n999(x)
- end
-end
-
-def fun_l23_n884(x)
- if (x < 1)
- fun_l24_n525(x)
- else
- fun_l24_n948(x)
- end
-end
-
-def fun_l23_n885(x)
- if (x < 1)
- fun_l24_n590(x)
- else
- fun_l24_n822(x)
- end
-end
-
-def fun_l23_n886(x)
- if (x < 1)
- fun_l24_n811(x)
- else
- fun_l24_n975(x)
- end
-end
-
-def fun_l23_n887(x)
- if (x < 1)
- fun_l24_n446(x)
- else
- fun_l24_n710(x)
- end
-end
-
-def fun_l23_n888(x)
- if (x < 1)
- fun_l24_n31(x)
- else
- fun_l24_n92(x)
- end
-end
-
-def fun_l23_n889(x)
- if (x < 1)
- fun_l24_n535(x)
- else
- fun_l24_n819(x)
- end
-end
-
-def fun_l23_n890(x)
- if (x < 1)
- fun_l24_n526(x)
- else
- fun_l24_n207(x)
- end
-end
-
-def fun_l23_n891(x)
- if (x < 1)
- fun_l24_n752(x)
- else
- fun_l24_n994(x)
- end
-end
-
-def fun_l23_n892(x)
- if (x < 1)
- fun_l24_n758(x)
- else
- fun_l24_n292(x)
- end
-end
-
-def fun_l23_n893(x)
- if (x < 1)
- fun_l24_n106(x)
- else
- fun_l24_n742(x)
- end
-end
-
-def fun_l23_n894(x)
- if (x < 1)
- fun_l24_n385(x)
- else
- fun_l24_n562(x)
- end
-end
-
-def fun_l23_n895(x)
- if (x < 1)
- fun_l24_n565(x)
- else
- fun_l24_n242(x)
- end
-end
-
-def fun_l23_n896(x)
- if (x < 1)
- fun_l24_n570(x)
- else
- fun_l24_n241(x)
- end
-end
-
-def fun_l23_n897(x)
- if (x < 1)
- fun_l24_n840(x)
- else
- fun_l24_n681(x)
- end
-end
-
-def fun_l23_n898(x)
- if (x < 1)
- fun_l24_n524(x)
- else
- fun_l24_n9(x)
- end
-end
-
-def fun_l23_n899(x)
- if (x < 1)
- fun_l24_n161(x)
- else
- fun_l24_n795(x)
- end
-end
-
-def fun_l23_n900(x)
- if (x < 1)
- fun_l24_n64(x)
- else
- fun_l24_n447(x)
- end
-end
-
-def fun_l23_n901(x)
- if (x < 1)
- fun_l24_n676(x)
- else
- fun_l24_n286(x)
- end
-end
-
-def fun_l23_n902(x)
- if (x < 1)
- fun_l24_n623(x)
- else
- fun_l24_n298(x)
- end
-end
-
-def fun_l23_n903(x)
- if (x < 1)
- fun_l24_n795(x)
- else
- fun_l24_n646(x)
- end
-end
-
-def fun_l23_n904(x)
- if (x < 1)
- fun_l24_n746(x)
- else
- fun_l24_n7(x)
- end
-end
-
-def fun_l23_n905(x)
- if (x < 1)
- fun_l24_n311(x)
- else
- fun_l24_n417(x)
- end
-end
-
-def fun_l23_n906(x)
- if (x < 1)
- fun_l24_n338(x)
- else
- fun_l24_n592(x)
- end
-end
-
-def fun_l23_n907(x)
- if (x < 1)
- fun_l24_n667(x)
- else
- fun_l24_n370(x)
- end
-end
-
-def fun_l23_n908(x)
- if (x < 1)
- fun_l24_n444(x)
- else
- fun_l24_n703(x)
- end
-end
-
-def fun_l23_n909(x)
- if (x < 1)
- fun_l24_n325(x)
- else
- fun_l24_n977(x)
- end
-end
-
-def fun_l23_n910(x)
- if (x < 1)
- fun_l24_n994(x)
- else
- fun_l24_n765(x)
- end
-end
-
-def fun_l23_n911(x)
- if (x < 1)
- fun_l24_n327(x)
- else
- fun_l24_n657(x)
- end
-end
-
-def fun_l23_n912(x)
- if (x < 1)
- fun_l24_n932(x)
- else
- fun_l24_n769(x)
- end
-end
-
-def fun_l23_n913(x)
- if (x < 1)
- fun_l24_n263(x)
- else
- fun_l24_n729(x)
- end
-end
-
-def fun_l23_n914(x)
- if (x < 1)
- fun_l24_n248(x)
- else
- fun_l24_n412(x)
- end
-end
-
-def fun_l23_n915(x)
- if (x < 1)
- fun_l24_n793(x)
- else
- fun_l24_n329(x)
- end
-end
-
-def fun_l23_n916(x)
- if (x < 1)
- fun_l24_n7(x)
- else
- fun_l24_n460(x)
- end
-end
-
-def fun_l23_n917(x)
- if (x < 1)
- fun_l24_n612(x)
- else
- fun_l24_n79(x)
- end
-end
-
-def fun_l23_n918(x)
- if (x < 1)
- fun_l24_n450(x)
- else
- fun_l24_n950(x)
- end
-end
-
-def fun_l23_n919(x)
- if (x < 1)
- fun_l24_n72(x)
- else
- fun_l24_n550(x)
- end
-end
-
-def fun_l23_n920(x)
- if (x < 1)
- fun_l24_n73(x)
- else
- fun_l24_n339(x)
- end
-end
-
-def fun_l23_n921(x)
- if (x < 1)
- fun_l24_n6(x)
- else
- fun_l24_n865(x)
- end
-end
-
-def fun_l23_n922(x)
- if (x < 1)
- fun_l24_n507(x)
- else
- fun_l24_n475(x)
- end
-end
-
-def fun_l23_n923(x)
- if (x < 1)
- fun_l24_n579(x)
- else
- fun_l24_n832(x)
- end
-end
-
-def fun_l23_n924(x)
- if (x < 1)
- fun_l24_n681(x)
- else
- fun_l24_n253(x)
- end
-end
-
-def fun_l23_n925(x)
- if (x < 1)
- fun_l24_n611(x)
- else
- fun_l24_n831(x)
- end
-end
-
-def fun_l23_n926(x)
- if (x < 1)
- fun_l24_n371(x)
- else
- fun_l24_n236(x)
- end
-end
-
-def fun_l23_n927(x)
- if (x < 1)
- fun_l24_n941(x)
- else
- fun_l24_n905(x)
- end
-end
-
-def fun_l23_n928(x)
- if (x < 1)
- fun_l24_n616(x)
- else
- fun_l24_n421(x)
- end
-end
-
-def fun_l23_n929(x)
- if (x < 1)
- fun_l24_n469(x)
- else
- fun_l24_n405(x)
- end
-end
-
-def fun_l23_n930(x)
- if (x < 1)
- fun_l24_n584(x)
- else
- fun_l24_n694(x)
- end
-end
-
-def fun_l23_n931(x)
- if (x < 1)
- fun_l24_n530(x)
- else
- fun_l24_n112(x)
- end
-end
-
-def fun_l23_n932(x)
- if (x < 1)
- fun_l24_n115(x)
- else
- fun_l24_n667(x)
- end
-end
-
-def fun_l23_n933(x)
- if (x < 1)
- fun_l24_n23(x)
- else
- fun_l24_n68(x)
- end
-end
-
-def fun_l23_n934(x)
- if (x < 1)
- fun_l24_n215(x)
- else
- fun_l24_n459(x)
- end
-end
-
-def fun_l23_n935(x)
- if (x < 1)
- fun_l24_n533(x)
- else
- fun_l24_n882(x)
- end
-end
-
-def fun_l23_n936(x)
- if (x < 1)
- fun_l24_n918(x)
- else
- fun_l24_n522(x)
- end
-end
-
-def fun_l23_n937(x)
- if (x < 1)
- fun_l24_n472(x)
- else
- fun_l24_n322(x)
- end
-end
-
-def fun_l23_n938(x)
- if (x < 1)
- fun_l24_n528(x)
- else
- fun_l24_n937(x)
- end
-end
-
-def fun_l23_n939(x)
- if (x < 1)
- fun_l24_n426(x)
- else
- fun_l24_n904(x)
- end
-end
-
-def fun_l23_n940(x)
- if (x < 1)
- fun_l24_n259(x)
- else
- fun_l24_n350(x)
- end
-end
-
-def fun_l23_n941(x)
- if (x < 1)
- fun_l24_n770(x)
- else
- fun_l24_n449(x)
- end
-end
-
-def fun_l23_n942(x)
- if (x < 1)
- fun_l24_n159(x)
- else
- fun_l24_n312(x)
- end
-end
-
-def fun_l23_n943(x)
- if (x < 1)
- fun_l24_n168(x)
- else
- fun_l24_n820(x)
- end
-end
-
-def fun_l23_n944(x)
- if (x < 1)
- fun_l24_n861(x)
- else
- fun_l24_n395(x)
- end
-end
-
-def fun_l23_n945(x)
- if (x < 1)
- fun_l24_n802(x)
- else
- fun_l24_n651(x)
- end
-end
-
-def fun_l23_n946(x)
- if (x < 1)
- fun_l24_n519(x)
- else
- fun_l24_n736(x)
- end
-end
-
-def fun_l23_n947(x)
- if (x < 1)
- fun_l24_n277(x)
- else
- fun_l24_n705(x)
- end
-end
-
-def fun_l23_n948(x)
- if (x < 1)
- fun_l24_n658(x)
- else
- fun_l24_n983(x)
- end
-end
-
-def fun_l23_n949(x)
- if (x < 1)
- fun_l24_n390(x)
- else
- fun_l24_n365(x)
- end
-end
-
-def fun_l23_n950(x)
- if (x < 1)
- fun_l24_n362(x)
- else
- fun_l24_n895(x)
- end
-end
-
-def fun_l23_n951(x)
- if (x < 1)
- fun_l24_n431(x)
- else
- fun_l24_n240(x)
- end
-end
-
-def fun_l23_n952(x)
- if (x < 1)
- fun_l24_n87(x)
- else
- fun_l24_n923(x)
- end
-end
-
-def fun_l23_n953(x)
- if (x < 1)
- fun_l24_n605(x)
- else
- fun_l24_n369(x)
- end
-end
-
-def fun_l23_n954(x)
- if (x < 1)
- fun_l24_n659(x)
- else
- fun_l24_n485(x)
- end
-end
-
-def fun_l23_n955(x)
- if (x < 1)
- fun_l24_n204(x)
- else
- fun_l24_n719(x)
- end
-end
-
-def fun_l23_n956(x)
- if (x < 1)
- fun_l24_n752(x)
- else
- fun_l24_n522(x)
- end
-end
-
-def fun_l23_n957(x)
- if (x < 1)
- fun_l24_n827(x)
- else
- fun_l24_n740(x)
- end
-end
-
-def fun_l23_n958(x)
- if (x < 1)
- fun_l24_n476(x)
- else
- fun_l24_n766(x)
- end
-end
-
-def fun_l23_n959(x)
- if (x < 1)
- fun_l24_n167(x)
- else
- fun_l24_n552(x)
- end
-end
-
-def fun_l23_n960(x)
- if (x < 1)
- fun_l24_n352(x)
- else
- fun_l24_n147(x)
- end
-end
-
-def fun_l23_n961(x)
- if (x < 1)
- fun_l24_n641(x)
- else
- fun_l24_n263(x)
- end
-end
-
-def fun_l23_n962(x)
- if (x < 1)
- fun_l24_n2(x)
- else
- fun_l24_n819(x)
- end
-end
-
-def fun_l23_n963(x)
- if (x < 1)
- fun_l24_n649(x)
- else
- fun_l24_n589(x)
- end
-end
-
-def fun_l23_n964(x)
- if (x < 1)
- fun_l24_n351(x)
- else
- fun_l24_n170(x)
- end
-end
-
-def fun_l23_n965(x)
- if (x < 1)
- fun_l24_n913(x)
- else
- fun_l24_n141(x)
- end
-end
-
-def fun_l23_n966(x)
- if (x < 1)
- fun_l24_n230(x)
- else
- fun_l24_n438(x)
- end
-end
-
-def fun_l23_n967(x)
- if (x < 1)
- fun_l24_n649(x)
- else
- fun_l24_n867(x)
- end
-end
-
-def fun_l23_n968(x)
- if (x < 1)
- fun_l24_n877(x)
- else
- fun_l24_n341(x)
- end
-end
-
-def fun_l23_n969(x)
- if (x < 1)
- fun_l24_n802(x)
- else
- fun_l24_n409(x)
- end
-end
-
-def fun_l23_n970(x)
- if (x < 1)
- fun_l24_n388(x)
- else
- fun_l24_n521(x)
- end
-end
-
-def fun_l23_n971(x)
- if (x < 1)
- fun_l24_n533(x)
- else
- fun_l24_n856(x)
- end
-end
-
-def fun_l23_n972(x)
- if (x < 1)
- fun_l24_n409(x)
- else
- fun_l24_n119(x)
- end
-end
-
-def fun_l23_n973(x)
- if (x < 1)
- fun_l24_n774(x)
- else
- fun_l24_n561(x)
- end
-end
-
-def fun_l23_n974(x)
- if (x < 1)
- fun_l24_n96(x)
- else
- fun_l24_n629(x)
- end
-end
-
-def fun_l23_n975(x)
- if (x < 1)
- fun_l24_n985(x)
- else
- fun_l24_n651(x)
- end
-end
-
-def fun_l23_n976(x)
- if (x < 1)
- fun_l24_n977(x)
- else
- fun_l24_n274(x)
- end
-end
-
-def fun_l23_n977(x)
- if (x < 1)
- fun_l24_n85(x)
- else
- fun_l24_n337(x)
- end
-end
-
-def fun_l23_n978(x)
- if (x < 1)
- fun_l24_n312(x)
- else
- fun_l24_n990(x)
- end
-end
-
-def fun_l23_n979(x)
- if (x < 1)
- fun_l24_n438(x)
- else
- fun_l24_n42(x)
- end
-end
-
-def fun_l23_n980(x)
- if (x < 1)
- fun_l24_n341(x)
- else
- fun_l24_n27(x)
- end
-end
-
-def fun_l23_n981(x)
- if (x < 1)
- fun_l24_n300(x)
- else
- fun_l24_n669(x)
- end
-end
-
-def fun_l23_n982(x)
- if (x < 1)
- fun_l24_n586(x)
- else
- fun_l24_n822(x)
- end
-end
-
-def fun_l23_n983(x)
- if (x < 1)
- fun_l24_n388(x)
- else
- fun_l24_n966(x)
- end
-end
-
-def fun_l23_n984(x)
- if (x < 1)
- fun_l24_n661(x)
- else
- fun_l24_n66(x)
- end
-end
-
-def fun_l23_n985(x)
- if (x < 1)
- fun_l24_n384(x)
- else
- fun_l24_n419(x)
- end
-end
-
-def fun_l23_n986(x)
- if (x < 1)
- fun_l24_n698(x)
- else
- fun_l24_n961(x)
- end
-end
-
-def fun_l23_n987(x)
- if (x < 1)
- fun_l24_n820(x)
- else
- fun_l24_n112(x)
- end
-end
-
-def fun_l23_n988(x)
- if (x < 1)
- fun_l24_n976(x)
- else
- fun_l24_n232(x)
- end
-end
-
-def fun_l23_n989(x)
- if (x < 1)
- fun_l24_n292(x)
- else
- fun_l24_n77(x)
- end
-end
-
-def fun_l23_n990(x)
- if (x < 1)
- fun_l24_n572(x)
- else
- fun_l24_n524(x)
- end
-end
-
-def fun_l23_n991(x)
- if (x < 1)
- fun_l24_n226(x)
- else
- fun_l24_n821(x)
- end
-end
-
-def fun_l23_n992(x)
- if (x < 1)
- fun_l24_n12(x)
- else
- fun_l24_n891(x)
- end
-end
-
-def fun_l23_n993(x)
- if (x < 1)
- fun_l24_n101(x)
- else
- fun_l24_n592(x)
- end
-end
-
-def fun_l23_n994(x)
- if (x < 1)
- fun_l24_n796(x)
- else
- fun_l24_n594(x)
- end
-end
-
-def fun_l23_n995(x)
- if (x < 1)
- fun_l24_n707(x)
- else
- fun_l24_n577(x)
- end
-end
-
-def fun_l23_n996(x)
- if (x < 1)
- fun_l24_n123(x)
- else
- fun_l24_n730(x)
- end
-end
-
-def fun_l23_n997(x)
- if (x < 1)
- fun_l24_n520(x)
- else
- fun_l24_n888(x)
- end
-end
-
-def fun_l23_n998(x)
- if (x < 1)
- fun_l24_n165(x)
- else
- fun_l24_n576(x)
- end
-end
-
-def fun_l23_n999(x)
- if (x < 1)
- fun_l24_n496(x)
- else
- fun_l24_n722(x)
- end
-end
-
-def fun_l24_n0(x)
- if (x < 1)
- fun_l25_n357(x)
- else
- fun_l25_n144(x)
- end
-end
-
-def fun_l24_n1(x)
- if (x < 1)
- fun_l25_n49(x)
- else
- fun_l25_n870(x)
- end
-end
-
-def fun_l24_n2(x)
- if (x < 1)
- fun_l25_n547(x)
- else
- fun_l25_n357(x)
- end
-end
-
-def fun_l24_n3(x)
- if (x < 1)
- fun_l25_n167(x)
- else
- fun_l25_n908(x)
- end
-end
-
-def fun_l24_n4(x)
- if (x < 1)
- fun_l25_n943(x)
- else
- fun_l25_n882(x)
- end
-end
-
-def fun_l24_n5(x)
- if (x < 1)
- fun_l25_n635(x)
- else
- fun_l25_n988(x)
- end
-end
-
-def fun_l24_n6(x)
- if (x < 1)
- fun_l25_n648(x)
- else
- fun_l25_n62(x)
- end
-end
-
-def fun_l24_n7(x)
- if (x < 1)
- fun_l25_n896(x)
- else
- fun_l25_n636(x)
- end
-end
-
-def fun_l24_n8(x)
- if (x < 1)
- fun_l25_n666(x)
- else
- fun_l25_n50(x)
- end
-end
-
-def fun_l24_n9(x)
- if (x < 1)
- fun_l25_n42(x)
- else
- fun_l25_n216(x)
- end
-end
-
-def fun_l24_n10(x)
- if (x < 1)
- fun_l25_n979(x)
- else
- fun_l25_n27(x)
- end
-end
-
-def fun_l24_n11(x)
- if (x < 1)
- fun_l25_n421(x)
- else
- fun_l25_n239(x)
- end
-end
-
-def fun_l24_n12(x)
- if (x < 1)
- fun_l25_n465(x)
- else
- fun_l25_n483(x)
- end
-end
-
-def fun_l24_n13(x)
- if (x < 1)
- fun_l25_n172(x)
- else
- fun_l25_n918(x)
- end
-end
-
-def fun_l24_n14(x)
- if (x < 1)
- fun_l25_n130(x)
- else
- fun_l25_n144(x)
- end
-end
-
-def fun_l24_n15(x)
- if (x < 1)
- fun_l25_n569(x)
- else
- fun_l25_n319(x)
- end
-end
-
-def fun_l24_n16(x)
- if (x < 1)
- fun_l25_n54(x)
- else
- fun_l25_n253(x)
- end
-end
-
-def fun_l24_n17(x)
- if (x < 1)
- fun_l25_n127(x)
- else
- fun_l25_n594(x)
- end
-end
-
-def fun_l24_n18(x)
- if (x < 1)
- fun_l25_n94(x)
- else
- fun_l25_n486(x)
- end
-end
-
-def fun_l24_n19(x)
- if (x < 1)
- fun_l25_n322(x)
- else
- fun_l25_n731(x)
- end
-end
-
-def fun_l24_n20(x)
- if (x < 1)
- fun_l25_n828(x)
- else
- fun_l25_n410(x)
- end
-end
-
-def fun_l24_n21(x)
- if (x < 1)
- fun_l25_n422(x)
- else
- fun_l25_n265(x)
- end
-end
-
-def fun_l24_n22(x)
- if (x < 1)
- fun_l25_n259(x)
- else
- fun_l25_n902(x)
- end
-end
-
-def fun_l24_n23(x)
- if (x < 1)
- fun_l25_n660(x)
- else
- fun_l25_n525(x)
- end
-end
-
-def fun_l24_n24(x)
- if (x < 1)
- fun_l25_n898(x)
- else
- fun_l25_n231(x)
- end
-end
-
-def fun_l24_n25(x)
- if (x < 1)
- fun_l25_n319(x)
- else
- fun_l25_n306(x)
- end
-end
-
-def fun_l24_n26(x)
- if (x < 1)
- fun_l25_n447(x)
- else
- fun_l25_n110(x)
- end
-end
-
-def fun_l24_n27(x)
- if (x < 1)
- fun_l25_n416(x)
- else
- fun_l25_n335(x)
- end
-end
-
-def fun_l24_n28(x)
- if (x < 1)
- fun_l25_n132(x)
- else
- fun_l25_n549(x)
- end
-end
-
-def fun_l24_n29(x)
- if (x < 1)
- fun_l25_n878(x)
- else
- fun_l25_n790(x)
- end
-end
-
-def fun_l24_n30(x)
- if (x < 1)
- fun_l25_n205(x)
- else
- fun_l25_n328(x)
- end
-end
-
-def fun_l24_n31(x)
- if (x < 1)
- fun_l25_n448(x)
- else
- fun_l25_n255(x)
- end
-end
-
-def fun_l24_n32(x)
- if (x < 1)
- fun_l25_n800(x)
- else
- fun_l25_n254(x)
- end
-end
-
-def fun_l24_n33(x)
- if (x < 1)
- fun_l25_n377(x)
- else
- fun_l25_n178(x)
- end
-end
-
-def fun_l24_n34(x)
- if (x < 1)
- fun_l25_n317(x)
- else
- fun_l25_n271(x)
- end
-end
-
-def fun_l24_n35(x)
- if (x < 1)
- fun_l25_n50(x)
- else
- fun_l25_n801(x)
- end
-end
-
-def fun_l24_n36(x)
- if (x < 1)
- fun_l25_n720(x)
- else
- fun_l25_n267(x)
- end
-end
-
-def fun_l24_n37(x)
- if (x < 1)
- fun_l25_n688(x)
- else
- fun_l25_n901(x)
- end
-end
-
-def fun_l24_n38(x)
- if (x < 1)
- fun_l25_n752(x)
- else
- fun_l25_n541(x)
- end
-end
-
-def fun_l24_n39(x)
- if (x < 1)
- fun_l25_n716(x)
- else
- fun_l25_n884(x)
- end
-end
-
-def fun_l24_n40(x)
- if (x < 1)
- fun_l25_n138(x)
- else
- fun_l25_n536(x)
- end
-end
-
-def fun_l24_n41(x)
- if (x < 1)
- fun_l25_n382(x)
- else
- fun_l25_n496(x)
- end
-end
-
-def fun_l24_n42(x)
- if (x < 1)
- fun_l25_n729(x)
- else
- fun_l25_n443(x)
- end
-end
-
-def fun_l24_n43(x)
- if (x < 1)
- fun_l25_n401(x)
- else
- fun_l25_n300(x)
- end
-end
-
-def fun_l24_n44(x)
- if (x < 1)
- fun_l25_n695(x)
- else
- fun_l25_n139(x)
- end
-end
-
-def fun_l24_n45(x)
- if (x < 1)
- fun_l25_n186(x)
- else
- fun_l25_n446(x)
- end
-end
-
-def fun_l24_n46(x)
- if (x < 1)
- fun_l25_n102(x)
- else
- fun_l25_n415(x)
- end
-end
-
-def fun_l24_n47(x)
- if (x < 1)
- fun_l25_n74(x)
- else
- fun_l25_n947(x)
- end
-end
-
-def fun_l24_n48(x)
- if (x < 1)
- fun_l25_n720(x)
- else
- fun_l25_n873(x)
- end
-end
-
-def fun_l24_n49(x)
- if (x < 1)
- fun_l25_n779(x)
- else
- fun_l25_n61(x)
- end
-end
-
-def fun_l24_n50(x)
- if (x < 1)
- fun_l25_n889(x)
- else
- fun_l25_n620(x)
- end
-end
-
-def fun_l24_n51(x)
- if (x < 1)
- fun_l25_n323(x)
- else
- fun_l25_n412(x)
- end
-end
-
-def fun_l24_n52(x)
- if (x < 1)
- fun_l25_n986(x)
- else
- fun_l25_n950(x)
- end
-end
-
-def fun_l24_n53(x)
- if (x < 1)
- fun_l25_n810(x)
- else
- fun_l25_n956(x)
- end
-end
-
-def fun_l24_n54(x)
- if (x < 1)
- fun_l25_n89(x)
- else
- fun_l25_n110(x)
- end
-end
-
-def fun_l24_n55(x)
- if (x < 1)
- fun_l25_n255(x)
- else
- fun_l25_n953(x)
- end
-end
-
-def fun_l24_n56(x)
- if (x < 1)
- fun_l25_n200(x)
- else
- fun_l25_n366(x)
- end
-end
-
-def fun_l24_n57(x)
- if (x < 1)
- fun_l25_n431(x)
- else
- fun_l25_n49(x)
- end
-end
-
-def fun_l24_n58(x)
- if (x < 1)
- fun_l25_n705(x)
- else
- fun_l25_n362(x)
- end
-end
-
-def fun_l24_n59(x)
- if (x < 1)
- fun_l25_n587(x)
- else
- fun_l25_n511(x)
- end
-end
-
-def fun_l24_n60(x)
- if (x < 1)
- fun_l25_n72(x)
- else
- fun_l25_n560(x)
- end
-end
-
-def fun_l24_n61(x)
- if (x < 1)
- fun_l25_n732(x)
- else
- fun_l25_n214(x)
- end
-end
-
-def fun_l24_n62(x)
- if (x < 1)
- fun_l25_n348(x)
- else
- fun_l25_n70(x)
- end
-end
-
-def fun_l24_n63(x)
- if (x < 1)
- fun_l25_n371(x)
- else
- fun_l25_n625(x)
- end
-end
-
-def fun_l24_n64(x)
- if (x < 1)
- fun_l25_n204(x)
- else
- fun_l25_n249(x)
- end
-end
-
-def fun_l24_n65(x)
- if (x < 1)
- fun_l25_n608(x)
- else
- fun_l25_n682(x)
- end
-end
-
-def fun_l24_n66(x)
- if (x < 1)
- fun_l25_n450(x)
- else
- fun_l25_n951(x)
- end
-end
-
-def fun_l24_n67(x)
- if (x < 1)
- fun_l25_n749(x)
- else
- fun_l25_n39(x)
- end
-end
-
-def fun_l24_n68(x)
- if (x < 1)
- fun_l25_n169(x)
- else
- fun_l25_n801(x)
- end
-end
-
-def fun_l24_n69(x)
- if (x < 1)
- fun_l25_n55(x)
- else
- fun_l25_n728(x)
- end
-end
-
-def fun_l24_n70(x)
- if (x < 1)
- fun_l25_n115(x)
- else
- fun_l25_n689(x)
- end
-end
-
-def fun_l24_n71(x)
- if (x < 1)
- fun_l25_n332(x)
- else
- fun_l25_n474(x)
- end
-end
-
-def fun_l24_n72(x)
- if (x < 1)
- fun_l25_n846(x)
- else
- fun_l25_n808(x)
- end
-end
-
-def fun_l24_n73(x)
- if (x < 1)
- fun_l25_n521(x)
- else
- fun_l25_n229(x)
- end
-end
-
-def fun_l24_n74(x)
- if (x < 1)
- fun_l25_n307(x)
- else
- fun_l25_n992(x)
- end
-end
-
-def fun_l24_n75(x)
- if (x < 1)
- fun_l25_n564(x)
- else
- fun_l25_n940(x)
- end
-end
-
-def fun_l24_n76(x)
- if (x < 1)
- fun_l25_n348(x)
- else
- fun_l25_n453(x)
- end
-end
-
-def fun_l24_n77(x)
- if (x < 1)
- fun_l25_n252(x)
- else
- fun_l25_n270(x)
- end
-end
-
-def fun_l24_n78(x)
- if (x < 1)
- fun_l25_n333(x)
- else
- fun_l25_n980(x)
- end
-end
-
-def fun_l24_n79(x)
- if (x < 1)
- fun_l25_n486(x)
- else
- fun_l25_n276(x)
- end
-end
-
-def fun_l24_n80(x)
- if (x < 1)
- fun_l25_n45(x)
- else
- fun_l25_n930(x)
- end
-end
-
-def fun_l24_n81(x)
- if (x < 1)
- fun_l25_n527(x)
- else
- fun_l25_n181(x)
- end
-end
-
-def fun_l24_n82(x)
- if (x < 1)
- fun_l25_n768(x)
- else
- fun_l25_n869(x)
- end
-end
-
-def fun_l24_n83(x)
- if (x < 1)
- fun_l25_n505(x)
- else
- fun_l25_n214(x)
- end
-end
-
-def fun_l24_n84(x)
- if (x < 1)
- fun_l25_n41(x)
- else
- fun_l25_n873(x)
- end
-end
-
-def fun_l24_n85(x)
- if (x < 1)
- fun_l25_n646(x)
- else
- fun_l25_n105(x)
- end
-end
-
-def fun_l24_n86(x)
- if (x < 1)
- fun_l25_n675(x)
- else
- fun_l25_n830(x)
- end
-end
-
-def fun_l24_n87(x)
- if (x < 1)
- fun_l25_n953(x)
- else
- fun_l25_n268(x)
- end
-end
-
-def fun_l24_n88(x)
- if (x < 1)
- fun_l25_n36(x)
- else
- fun_l25_n31(x)
- end
-end
-
-def fun_l24_n89(x)
- if (x < 1)
- fun_l25_n810(x)
- else
- fun_l25_n315(x)
- end
-end
-
-def fun_l24_n90(x)
- if (x < 1)
- fun_l25_n100(x)
- else
- fun_l25_n882(x)
- end
-end
-
-def fun_l24_n91(x)
- if (x < 1)
- fun_l25_n278(x)
- else
- fun_l25_n720(x)
- end
-end
-
-def fun_l24_n92(x)
- if (x < 1)
- fun_l25_n472(x)
- else
- fun_l25_n615(x)
- end
-end
-
-def fun_l24_n93(x)
- if (x < 1)
- fun_l25_n42(x)
- else
- fun_l25_n16(x)
- end
-end
-
-def fun_l24_n94(x)
- if (x < 1)
- fun_l25_n905(x)
- else
- fun_l25_n988(x)
- end
-end
-
-def fun_l24_n95(x)
- if (x < 1)
- fun_l25_n862(x)
- else
- fun_l25_n355(x)
- end
-end
-
-def fun_l24_n96(x)
- if (x < 1)
- fun_l25_n931(x)
- else
- fun_l25_n539(x)
- end
-end
-
-def fun_l24_n97(x)
- if (x < 1)
- fun_l25_n185(x)
- else
- fun_l25_n868(x)
- end
-end
-
-def fun_l24_n98(x)
- if (x < 1)
- fun_l25_n276(x)
- else
- fun_l25_n591(x)
- end
-end
-
-def fun_l24_n99(x)
- if (x < 1)
- fun_l25_n695(x)
- else
- fun_l25_n965(x)
- end
-end
-
-def fun_l24_n100(x)
- if (x < 1)
- fun_l25_n293(x)
- else
- fun_l25_n127(x)
- end
-end
-
-def fun_l24_n101(x)
- if (x < 1)
- fun_l25_n71(x)
- else
- fun_l25_n245(x)
- end
-end
-
-def fun_l24_n102(x)
- if (x < 1)
- fun_l25_n397(x)
- else
- fun_l25_n893(x)
- end
-end
-
-def fun_l24_n103(x)
- if (x < 1)
- fun_l25_n191(x)
- else
- fun_l25_n101(x)
- end
-end
-
-def fun_l24_n104(x)
- if (x < 1)
- fun_l25_n982(x)
- else
- fun_l25_n101(x)
- end
-end
-
-def fun_l24_n105(x)
- if (x < 1)
- fun_l25_n385(x)
- else
- fun_l25_n651(x)
- end
-end
-
-def fun_l24_n106(x)
- if (x < 1)
- fun_l25_n577(x)
- else
- fun_l25_n241(x)
- end
-end
-
-def fun_l24_n107(x)
- if (x < 1)
- fun_l25_n219(x)
- else
- fun_l25_n92(x)
- end
-end
-
-def fun_l24_n108(x)
- if (x < 1)
- fun_l25_n202(x)
- else
- fun_l25_n133(x)
- end
-end
-
-def fun_l24_n109(x)
- if (x < 1)
- fun_l25_n706(x)
- else
- fun_l25_n970(x)
- end
-end
-
-def fun_l24_n110(x)
- if (x < 1)
- fun_l25_n948(x)
- else
- fun_l25_n595(x)
- end
-end
-
-def fun_l24_n111(x)
- if (x < 1)
- fun_l25_n775(x)
- else
- fun_l25_n609(x)
- end
-end
-
-def fun_l24_n112(x)
- if (x < 1)
- fun_l25_n905(x)
- else
- fun_l25_n11(x)
- end
-end
-
-def fun_l24_n113(x)
- if (x < 1)
- fun_l25_n730(x)
- else
- fun_l25_n826(x)
- end
-end
-
-def fun_l24_n114(x)
- if (x < 1)
- fun_l25_n403(x)
- else
- fun_l25_n562(x)
- end
-end
-
-def fun_l24_n115(x)
- if (x < 1)
- fun_l25_n272(x)
- else
- fun_l25_n844(x)
- end
-end
-
-def fun_l24_n116(x)
- if (x < 1)
- fun_l25_n907(x)
- else
- fun_l25_n797(x)
- end
-end
-
-def fun_l24_n117(x)
- if (x < 1)
- fun_l25_n910(x)
- else
- fun_l25_n632(x)
- end
-end
-
-def fun_l24_n118(x)
- if (x < 1)
- fun_l25_n570(x)
- else
- fun_l25_n645(x)
- end
-end
-
-def fun_l24_n119(x)
- if (x < 1)
- fun_l25_n930(x)
- else
- fun_l25_n31(x)
- end
-end
-
-def fun_l24_n120(x)
- if (x < 1)
- fun_l25_n228(x)
- else
- fun_l25_n340(x)
- end
-end
-
-def fun_l24_n121(x)
- if (x < 1)
- fun_l25_n891(x)
- else
- fun_l25_n395(x)
- end
-end
-
-def fun_l24_n122(x)
- if (x < 1)
- fun_l25_n340(x)
- else
- fun_l25_n966(x)
- end
-end
-
-def fun_l24_n123(x)
- if (x < 1)
- fun_l25_n835(x)
- else
- fun_l25_n407(x)
- end
-end
-
-def fun_l24_n124(x)
- if (x < 1)
- fun_l25_n156(x)
- else
- fun_l25_n151(x)
- end
-end
-
-def fun_l24_n125(x)
- if (x < 1)
- fun_l25_n912(x)
- else
- fun_l25_n733(x)
- end
-end
-
-def fun_l24_n126(x)
- if (x < 1)
- fun_l25_n385(x)
- else
- fun_l25_n406(x)
- end
-end
-
-def fun_l24_n127(x)
- if (x < 1)
- fun_l25_n662(x)
- else
- fun_l25_n932(x)
- end
-end
-
-def fun_l24_n128(x)
- if (x < 1)
- fun_l25_n418(x)
- else
- fun_l25_n445(x)
- end
-end
-
-def fun_l24_n129(x)
- if (x < 1)
- fun_l25_n659(x)
- else
- fun_l25_n518(x)
- end
-end
-
-def fun_l24_n130(x)
- if (x < 1)
- fun_l25_n784(x)
- else
- fun_l25_n342(x)
- end
-end
-
-def fun_l24_n131(x)
- if (x < 1)
- fun_l25_n184(x)
- else
- fun_l25_n316(x)
- end
-end
-
-def fun_l24_n132(x)
- if (x < 1)
- fun_l25_n76(x)
- else
- fun_l25_n156(x)
- end
-end
-
-def fun_l24_n133(x)
- if (x < 1)
- fun_l25_n355(x)
- else
- fun_l25_n430(x)
- end
-end
-
-def fun_l24_n134(x)
- if (x < 1)
- fun_l25_n643(x)
- else
- fun_l25_n109(x)
- end
-end
-
-def fun_l24_n135(x)
- if (x < 1)
- fun_l25_n277(x)
- else
- fun_l25_n76(x)
- end
-end
-
-def fun_l24_n136(x)
- if (x < 1)
- fun_l25_n898(x)
- else
- fun_l25_n870(x)
- end
-end
-
-def fun_l24_n137(x)
- if (x < 1)
- fun_l25_n275(x)
- else
- fun_l25_n762(x)
- end
-end
-
-def fun_l24_n138(x)
- if (x < 1)
- fun_l25_n109(x)
- else
- fun_l25_n913(x)
- end
-end
-
-def fun_l24_n139(x)
- if (x < 1)
- fun_l25_n731(x)
- else
- fun_l25_n767(x)
- end
-end
-
-def fun_l24_n140(x)
- if (x < 1)
- fun_l25_n385(x)
- else
- fun_l25_n743(x)
- end
-end
-
-def fun_l24_n141(x)
- if (x < 1)
- fun_l25_n518(x)
- else
- fun_l25_n185(x)
- end
-end
-
-def fun_l24_n142(x)
- if (x < 1)
- fun_l25_n656(x)
- else
- fun_l25_n614(x)
- end
-end
-
-def fun_l24_n143(x)
- if (x < 1)
- fun_l25_n86(x)
- else
- fun_l25_n825(x)
- end
-end
-
-def fun_l24_n144(x)
- if (x < 1)
- fun_l25_n982(x)
- else
- fun_l25_n970(x)
- end
-end
-
-def fun_l24_n145(x)
- if (x < 1)
- fun_l25_n608(x)
- else
- fun_l25_n970(x)
- end
-end
-
-def fun_l24_n146(x)
- if (x < 1)
- fun_l25_n273(x)
- else
- fun_l25_n4(x)
- end
-end
-
-def fun_l24_n147(x)
- if (x < 1)
- fun_l25_n366(x)
- else
- fun_l25_n902(x)
- end
-end
-
-def fun_l24_n148(x)
- if (x < 1)
- fun_l25_n682(x)
- else
- fun_l25_n210(x)
- end
-end
-
-def fun_l24_n149(x)
- if (x < 1)
- fun_l25_n212(x)
- else
- fun_l25_n429(x)
- end
-end
-
-def fun_l24_n150(x)
- if (x < 1)
- fun_l25_n680(x)
- else
- fun_l25_n959(x)
- end
-end
-
-def fun_l24_n151(x)
- if (x < 1)
- fun_l25_n65(x)
- else
- fun_l25_n654(x)
- end
-end
-
-def fun_l24_n152(x)
- if (x < 1)
- fun_l25_n465(x)
- else
- fun_l25_n24(x)
- end
-end
-
-def fun_l24_n153(x)
- if (x < 1)
- fun_l25_n254(x)
- else
- fun_l25_n611(x)
- end
-end
-
-def fun_l24_n154(x)
- if (x < 1)
- fun_l25_n525(x)
- else
- fun_l25_n25(x)
- end
-end
-
-def fun_l24_n155(x)
- if (x < 1)
- fun_l25_n967(x)
- else
- fun_l25_n163(x)
- end
-end
-
-def fun_l24_n156(x)
- if (x < 1)
- fun_l25_n191(x)
- else
- fun_l25_n603(x)
- end
-end
-
-def fun_l24_n157(x)
- if (x < 1)
- fun_l25_n724(x)
- else
- fun_l25_n537(x)
- end
-end
-
-def fun_l24_n158(x)
- if (x < 1)
- fun_l25_n115(x)
- else
- fun_l25_n967(x)
- end
-end
-
-def fun_l24_n159(x)
- if (x < 1)
- fun_l25_n247(x)
- else
- fun_l25_n650(x)
- end
-end
-
-def fun_l24_n160(x)
- if (x < 1)
- fun_l25_n681(x)
- else
- fun_l25_n754(x)
- end
-end
-
-def fun_l24_n161(x)
- if (x < 1)
- fun_l25_n689(x)
- else
- fun_l25_n283(x)
- end
-end
-
-def fun_l24_n162(x)
- if (x < 1)
- fun_l25_n697(x)
- else
- fun_l25_n262(x)
- end
-end
-
-def fun_l24_n163(x)
- if (x < 1)
- fun_l25_n584(x)
- else
- fun_l25_n502(x)
- end
-end
-
-def fun_l24_n164(x)
- if (x < 1)
- fun_l25_n949(x)
- else
- fun_l25_n738(x)
- end
-end
-
-def fun_l24_n165(x)
- if (x < 1)
- fun_l25_n847(x)
- else
- fun_l25_n317(x)
- end
-end
-
-def fun_l24_n166(x)
- if (x < 1)
- fun_l25_n827(x)
- else
- fun_l25_n831(x)
- end
-end
-
-def fun_l24_n167(x)
- if (x < 1)
- fun_l25_n400(x)
- else
- fun_l25_n60(x)
- end
-end
-
-def fun_l24_n168(x)
- if (x < 1)
- fun_l25_n411(x)
- else
- fun_l25_n333(x)
- end
-end
-
-def fun_l24_n169(x)
- if (x < 1)
- fun_l25_n481(x)
- else
- fun_l25_n336(x)
- end
-end
-
-def fun_l24_n170(x)
- if (x < 1)
- fun_l25_n551(x)
- else
- fun_l25_n184(x)
- end
-end
-
-def fun_l24_n171(x)
- if (x < 1)
- fun_l25_n700(x)
- else
- fun_l25_n542(x)
- end
-end
-
-def fun_l24_n172(x)
- if (x < 1)
- fun_l25_n496(x)
- else
- fun_l25_n494(x)
- end
-end
-
-def fun_l24_n173(x)
- if (x < 1)
- fun_l25_n684(x)
- else
- fun_l25_n865(x)
- end
-end
-
-def fun_l24_n174(x)
- if (x < 1)
- fun_l25_n304(x)
- else
- fun_l25_n641(x)
- end
-end
-
-def fun_l24_n175(x)
- if (x < 1)
- fun_l25_n252(x)
- else
- fun_l25_n573(x)
- end
-end
-
-def fun_l24_n176(x)
- if (x < 1)
- fun_l25_n463(x)
- else
- fun_l25_n596(x)
- end
-end
-
-def fun_l24_n177(x)
- if (x < 1)
- fun_l25_n864(x)
- else
- fun_l25_n810(x)
- end
-end
-
-def fun_l24_n178(x)
- if (x < 1)
- fun_l25_n182(x)
- else
- fun_l25_n900(x)
- end
-end
-
-def fun_l24_n179(x)
- if (x < 1)
- fun_l25_n678(x)
- else
- fun_l25_n299(x)
- end
-end
-
-def fun_l24_n180(x)
- if (x < 1)
- fun_l25_n423(x)
- else
- fun_l25_n791(x)
- end
-end
-
-def fun_l24_n181(x)
- if (x < 1)
- fun_l25_n582(x)
- else
- fun_l25_n382(x)
- end
-end
-
-def fun_l24_n182(x)
- if (x < 1)
- fun_l25_n498(x)
- else
- fun_l25_n247(x)
- end
-end
-
-def fun_l24_n183(x)
- if (x < 1)
- fun_l25_n534(x)
- else
- fun_l25_n504(x)
- end
-end
-
-def fun_l24_n184(x)
- if (x < 1)
- fun_l25_n947(x)
- else
- fun_l25_n708(x)
- end
-end
-
-def fun_l24_n185(x)
- if (x < 1)
- fun_l25_n673(x)
- else
- fun_l25_n711(x)
- end
-end
-
-def fun_l24_n186(x)
- if (x < 1)
- fun_l25_n155(x)
- else
- fun_l25_n233(x)
- end
-end
-
-def fun_l24_n187(x)
- if (x < 1)
- fun_l25_n669(x)
- else
- fun_l25_n558(x)
- end
-end
-
-def fun_l24_n188(x)
- if (x < 1)
- fun_l25_n307(x)
- else
- fun_l25_n839(x)
- end
-end
-
-def fun_l24_n189(x)
- if (x < 1)
- fun_l25_n623(x)
- else
- fun_l25_n17(x)
- end
-end
-
-def fun_l24_n190(x)
- if (x < 1)
- fun_l25_n468(x)
- else
- fun_l25_n391(x)
- end
-end
-
-def fun_l24_n191(x)
- if (x < 1)
- fun_l25_n492(x)
- else
- fun_l25_n953(x)
- end
-end
-
-def fun_l24_n192(x)
- if (x < 1)
- fun_l25_n644(x)
- else
- fun_l25_n724(x)
- end
-end
-
-def fun_l24_n193(x)
- if (x < 1)
- fun_l25_n438(x)
- else
- fun_l25_n110(x)
- end
-end
-
-def fun_l24_n194(x)
- if (x < 1)
- fun_l25_n763(x)
- else
- fun_l25_n0(x)
- end
-end
-
-def fun_l24_n195(x)
- if (x < 1)
- fun_l25_n766(x)
- else
- fun_l25_n436(x)
- end
-end
-
-def fun_l24_n196(x)
- if (x < 1)
- fun_l25_n646(x)
- else
- fun_l25_n264(x)
- end
-end
-
-def fun_l24_n197(x)
- if (x < 1)
- fun_l25_n140(x)
- else
- fun_l25_n387(x)
- end
-end
-
-def fun_l24_n198(x)
- if (x < 1)
- fun_l25_n890(x)
- else
- fun_l25_n756(x)
- end
-end
-
-def fun_l24_n199(x)
- if (x < 1)
- fun_l25_n597(x)
- else
- fun_l25_n330(x)
- end
-end
-
-def fun_l24_n200(x)
- if (x < 1)
- fun_l25_n656(x)
- else
- fun_l25_n292(x)
- end
-end
-
-def fun_l24_n201(x)
- if (x < 1)
- fun_l25_n224(x)
- else
- fun_l25_n233(x)
- end
-end
-
-def fun_l24_n202(x)
- if (x < 1)
- fun_l25_n153(x)
- else
- fun_l25_n926(x)
- end
-end
-
-def fun_l24_n203(x)
- if (x < 1)
- fun_l25_n897(x)
- else
- fun_l25_n680(x)
- end
-end
-
-def fun_l24_n204(x)
- if (x < 1)
- fun_l25_n610(x)
- else
- fun_l25_n154(x)
- end
-end
-
-def fun_l24_n205(x)
- if (x < 1)
- fun_l25_n307(x)
- else
- fun_l25_n451(x)
- end
-end
-
-def fun_l24_n206(x)
- if (x < 1)
- fun_l25_n138(x)
- else
- fun_l25_n875(x)
- end
-end
-
-def fun_l24_n207(x)
- if (x < 1)
- fun_l25_n306(x)
- else
- fun_l25_n474(x)
- end
-end
-
-def fun_l24_n208(x)
- if (x < 1)
- fun_l25_n771(x)
- else
- fun_l25_n105(x)
- end
-end
-
-def fun_l24_n209(x)
- if (x < 1)
- fun_l25_n120(x)
- else
- fun_l25_n961(x)
- end
-end
-
-def fun_l24_n210(x)
- if (x < 1)
- fun_l25_n455(x)
- else
- fun_l25_n244(x)
- end
-end
-
-def fun_l24_n211(x)
- if (x < 1)
- fun_l25_n93(x)
- else
- fun_l25_n31(x)
- end
-end
-
-def fun_l24_n212(x)
- if (x < 1)
- fun_l25_n69(x)
- else
- fun_l25_n39(x)
- end
-end
-
-def fun_l24_n213(x)
- if (x < 1)
- fun_l25_n379(x)
- else
- fun_l25_n482(x)
- end
-end
-
-def fun_l24_n214(x)
- if (x < 1)
- fun_l25_n839(x)
- else
- fun_l25_n669(x)
- end
-end
-
-def fun_l24_n215(x)
- if (x < 1)
- fun_l25_n27(x)
- else
- fun_l25_n46(x)
- end
-end
-
-def fun_l24_n216(x)
- if (x < 1)
- fun_l25_n290(x)
- else
- fun_l25_n908(x)
- end
-end
-
-def fun_l24_n217(x)
- if (x < 1)
- fun_l25_n618(x)
- else
- fun_l25_n242(x)
- end
-end
-
-def fun_l24_n218(x)
- if (x < 1)
- fun_l25_n42(x)
- else
- fun_l25_n674(x)
- end
-end
-
-def fun_l24_n219(x)
- if (x < 1)
- fun_l25_n510(x)
- else
- fun_l25_n963(x)
- end
-end
-
-def fun_l24_n220(x)
- if (x < 1)
- fun_l25_n345(x)
- else
- fun_l25_n666(x)
- end
-end
-
-def fun_l24_n221(x)
- if (x < 1)
- fun_l25_n548(x)
- else
- fun_l25_n424(x)
- end
-end
-
-def fun_l24_n222(x)
- if (x < 1)
- fun_l25_n387(x)
- else
- fun_l25_n30(x)
- end
-end
-
-def fun_l24_n223(x)
- if (x < 1)
- fun_l25_n124(x)
- else
- fun_l25_n374(x)
- end
-end
-
-def fun_l24_n224(x)
- if (x < 1)
- fun_l25_n200(x)
- else
- fun_l25_n108(x)
- end
-end
-
-def fun_l24_n225(x)
- if (x < 1)
- fun_l25_n462(x)
- else
- fun_l25_n11(x)
- end
-end
-
-def fun_l24_n226(x)
- if (x < 1)
- fun_l25_n930(x)
- else
- fun_l25_n791(x)
- end
-end
-
-def fun_l24_n227(x)
- if (x < 1)
- fun_l25_n10(x)
- else
- fun_l25_n447(x)
- end
-end
-
-def fun_l24_n228(x)
- if (x < 1)
- fun_l25_n858(x)
- else
- fun_l25_n472(x)
- end
-end
-
-def fun_l24_n229(x)
- if (x < 1)
- fun_l25_n409(x)
- else
- fun_l25_n228(x)
- end
-end
-
-def fun_l24_n230(x)
- if (x < 1)
- fun_l25_n82(x)
- else
- fun_l25_n665(x)
- end
-end
-
-def fun_l24_n231(x)
- if (x < 1)
- fun_l25_n148(x)
- else
- fun_l25_n174(x)
- end
-end
-
-def fun_l24_n232(x)
- if (x < 1)
- fun_l25_n785(x)
- else
- fun_l25_n996(x)
- end
-end
-
-def fun_l24_n233(x)
- if (x < 1)
- fun_l25_n827(x)
- else
- fun_l25_n393(x)
- end
-end
-
-def fun_l24_n234(x)
- if (x < 1)
- fun_l25_n619(x)
- else
- fun_l25_n361(x)
- end
-end
-
-def fun_l24_n235(x)
- if (x < 1)
- fun_l25_n52(x)
- else
- fun_l25_n420(x)
- end
-end
-
-def fun_l24_n236(x)
- if (x < 1)
- fun_l25_n355(x)
- else
- fun_l25_n561(x)
- end
-end
-
-def fun_l24_n237(x)
- if (x < 1)
- fun_l25_n36(x)
- else
- fun_l25_n885(x)
- end
-end
-
-def fun_l24_n238(x)
- if (x < 1)
- fun_l25_n15(x)
- else
- fun_l25_n19(x)
- end
-end
-
-def fun_l24_n239(x)
- if (x < 1)
- fun_l25_n137(x)
- else
- fun_l25_n34(x)
- end
-end
-
-def fun_l24_n240(x)
- if (x < 1)
- fun_l25_n776(x)
- else
- fun_l25_n199(x)
- end
-end
-
-def fun_l24_n241(x)
- if (x < 1)
- fun_l25_n904(x)
- else
- fun_l25_n396(x)
- end
-end
-
-def fun_l24_n242(x)
- if (x < 1)
- fun_l25_n122(x)
- else
- fun_l25_n720(x)
- end
-end
-
-def fun_l24_n243(x)
- if (x < 1)
- fun_l25_n513(x)
- else
- fun_l25_n429(x)
- end
-end
-
-def fun_l24_n244(x)
- if (x < 1)
- fun_l25_n289(x)
- else
- fun_l25_n265(x)
- end
-end
-
-def fun_l24_n245(x)
- if (x < 1)
- fun_l25_n334(x)
- else
- fun_l25_n42(x)
- end
-end
-
-def fun_l24_n246(x)
- if (x < 1)
- fun_l25_n55(x)
- else
- fun_l25_n67(x)
- end
-end
-
-def fun_l24_n247(x)
- if (x < 1)
- fun_l25_n648(x)
- else
- fun_l25_n38(x)
- end
-end
-
-def fun_l24_n248(x)
- if (x < 1)
- fun_l25_n904(x)
- else
- fun_l25_n732(x)
- end
-end
-
-def fun_l24_n249(x)
- if (x < 1)
- fun_l25_n243(x)
- else
- fun_l25_n704(x)
- end
-end
-
-def fun_l24_n250(x)
- if (x < 1)
- fun_l25_n513(x)
- else
- fun_l25_n326(x)
- end
-end
-
-def fun_l24_n251(x)
- if (x < 1)
- fun_l25_n122(x)
- else
- fun_l25_n617(x)
- end
-end
-
-def fun_l24_n252(x)
- if (x < 1)
- fun_l25_n837(x)
- else
- fun_l25_n891(x)
- end
-end
-
-def fun_l24_n253(x)
- if (x < 1)
- fun_l25_n39(x)
- else
- fun_l25_n318(x)
- end
-end
-
-def fun_l24_n254(x)
- if (x < 1)
- fun_l25_n79(x)
- else
- fun_l25_n195(x)
- end
-end
-
-def fun_l24_n255(x)
- if (x < 1)
- fun_l25_n671(x)
- else
- fun_l25_n485(x)
- end
-end
-
-def fun_l24_n256(x)
- if (x < 1)
- fun_l25_n775(x)
- else
- fun_l25_n187(x)
- end
-end
-
-def fun_l24_n257(x)
- if (x < 1)
- fun_l25_n150(x)
- else
- fun_l25_n740(x)
- end
-end
-
-def fun_l24_n258(x)
- if (x < 1)
- fun_l25_n131(x)
- else
- fun_l25_n960(x)
- end
-end
-
-def fun_l24_n259(x)
- if (x < 1)
- fun_l25_n608(x)
- else
- fun_l25_n931(x)
- end
-end
-
-def fun_l24_n260(x)
- if (x < 1)
- fun_l25_n846(x)
- else
- fun_l25_n278(x)
- end
-end
-
-def fun_l24_n261(x)
- if (x < 1)
- fun_l25_n532(x)
- else
- fun_l25_n432(x)
- end
-end
-
-def fun_l24_n262(x)
- if (x < 1)
- fun_l25_n367(x)
- else
- fun_l25_n847(x)
- end
-end
-
-def fun_l24_n263(x)
- if (x < 1)
- fun_l25_n782(x)
- else
- fun_l25_n33(x)
- end
-end
-
-def fun_l24_n264(x)
- if (x < 1)
- fun_l25_n822(x)
- else
- fun_l25_n711(x)
- end
-end
-
-def fun_l24_n265(x)
- if (x < 1)
- fun_l25_n994(x)
- else
- fun_l25_n573(x)
- end
-end
-
-def fun_l24_n266(x)
- if (x < 1)
- fun_l25_n234(x)
- else
- fun_l25_n617(x)
- end
-end
-
-def fun_l24_n267(x)
- if (x < 1)
- fun_l25_n52(x)
- else
- fun_l25_n759(x)
- end
-end
-
-def fun_l24_n268(x)
- if (x < 1)
- fun_l25_n161(x)
- else
- fun_l25_n167(x)
- end
-end
-
-def fun_l24_n269(x)
- if (x < 1)
- fun_l25_n113(x)
- else
- fun_l25_n158(x)
- end
-end
-
-def fun_l24_n270(x)
- if (x < 1)
- fun_l25_n151(x)
- else
- fun_l25_n127(x)
- end
-end
-
-def fun_l24_n271(x)
- if (x < 1)
- fun_l25_n811(x)
- else
- fun_l25_n81(x)
- end
-end
-
-def fun_l24_n272(x)
- if (x < 1)
- fun_l25_n622(x)
- else
- fun_l25_n796(x)
- end
-end
-
-def fun_l24_n273(x)
- if (x < 1)
- fun_l25_n106(x)
- else
- fun_l25_n697(x)
- end
-end
-
-def fun_l24_n274(x)
- if (x < 1)
- fun_l25_n63(x)
- else
- fun_l25_n599(x)
- end
-end
-
-def fun_l24_n275(x)
- if (x < 1)
- fun_l25_n999(x)
- else
- fun_l25_n188(x)
- end
-end
-
-def fun_l24_n276(x)
- if (x < 1)
- fun_l25_n491(x)
- else
- fun_l25_n614(x)
- end
-end
-
-def fun_l24_n277(x)
- if (x < 1)
- fun_l25_n549(x)
- else
- fun_l25_n141(x)
- end
-end
-
-def fun_l24_n278(x)
- if (x < 1)
- fun_l25_n442(x)
- else
- fun_l25_n900(x)
- end
-end
-
-def fun_l24_n279(x)
- if (x < 1)
- fun_l25_n816(x)
- else
- fun_l25_n904(x)
- end
-end
-
-def fun_l24_n280(x)
- if (x < 1)
- fun_l25_n508(x)
- else
- fun_l25_n569(x)
- end
-end
-
-def fun_l24_n281(x)
- if (x < 1)
- fun_l25_n438(x)
- else
- fun_l25_n750(x)
- end
-end
-
-def fun_l24_n282(x)
- if (x < 1)
- fun_l25_n984(x)
- else
- fun_l25_n573(x)
- end
-end
-
-def fun_l24_n283(x)
- if (x < 1)
- fun_l25_n425(x)
- else
- fun_l25_n963(x)
- end
-end
-
-def fun_l24_n284(x)
- if (x < 1)
- fun_l25_n213(x)
- else
- fun_l25_n344(x)
- end
-end
-
-def fun_l24_n285(x)
- if (x < 1)
- fun_l25_n1(x)
- else
- fun_l25_n826(x)
- end
-end
-
-def fun_l24_n286(x)
- if (x < 1)
- fun_l25_n297(x)
- else
- fun_l25_n266(x)
- end
-end
-
-def fun_l24_n287(x)
- if (x < 1)
- fun_l25_n203(x)
- else
- fun_l25_n570(x)
- end
-end
-
-def fun_l24_n288(x)
- if (x < 1)
- fun_l25_n849(x)
- else
- fun_l25_n336(x)
- end
-end
-
-def fun_l24_n289(x)
- if (x < 1)
- fun_l25_n982(x)
- else
- fun_l25_n38(x)
- end
-end
-
-def fun_l24_n290(x)
- if (x < 1)
- fun_l25_n687(x)
- else
- fun_l25_n906(x)
- end
-end
-
-def fun_l24_n291(x)
- if (x < 1)
- fun_l25_n921(x)
- else
- fun_l25_n229(x)
- end
-end
-
-def fun_l24_n292(x)
- if (x < 1)
- fun_l25_n494(x)
- else
- fun_l25_n138(x)
- end
-end
-
-def fun_l24_n293(x)
- if (x < 1)
- fun_l25_n175(x)
- else
- fun_l25_n575(x)
- end
-end
-
-def fun_l24_n294(x)
- if (x < 1)
- fun_l25_n126(x)
- else
- fun_l25_n902(x)
- end
-end
-
-def fun_l24_n295(x)
- if (x < 1)
- fun_l25_n634(x)
- else
- fun_l25_n199(x)
- end
-end
-
-def fun_l24_n296(x)
- if (x < 1)
- fun_l25_n929(x)
- else
- fun_l25_n468(x)
- end
-end
-
-def fun_l24_n297(x)
- if (x < 1)
- fun_l25_n856(x)
- else
- fun_l25_n135(x)
- end
-end
-
-def fun_l24_n298(x)
- if (x < 1)
- fun_l25_n655(x)
- else
- fun_l25_n545(x)
- end
-end
-
-def fun_l24_n299(x)
- if (x < 1)
- fun_l25_n373(x)
- else
- fun_l25_n173(x)
- end
-end
-
-def fun_l24_n300(x)
- if (x < 1)
- fun_l25_n874(x)
- else
- fun_l25_n85(x)
- end
-end
-
-def fun_l24_n301(x)
- if (x < 1)
- fun_l25_n398(x)
- else
- fun_l25_n43(x)
- end
-end
-
-def fun_l24_n302(x)
- if (x < 1)
- fun_l25_n995(x)
- else
- fun_l25_n890(x)
- end
-end
-
-def fun_l24_n303(x)
- if (x < 1)
- fun_l25_n971(x)
- else
- fun_l25_n250(x)
- end
-end
-
-def fun_l24_n304(x)
- if (x < 1)
- fun_l25_n752(x)
- else
- fun_l25_n681(x)
- end
-end
-
-def fun_l24_n305(x)
- if (x < 1)
- fun_l25_n688(x)
- else
- fun_l25_n451(x)
- end
-end
-
-def fun_l24_n306(x)
- if (x < 1)
- fun_l25_n167(x)
- else
- fun_l25_n784(x)
- end
-end
-
-def fun_l24_n307(x)
- if (x < 1)
- fun_l25_n479(x)
- else
- fun_l25_n295(x)
- end
-end
-
-def fun_l24_n308(x)
- if (x < 1)
- fun_l25_n779(x)
- else
- fun_l25_n472(x)
- end
-end
-
-def fun_l24_n309(x)
- if (x < 1)
- fun_l25_n10(x)
- else
- fun_l25_n301(x)
- end
-end
-
-def fun_l24_n310(x)
- if (x < 1)
- fun_l25_n197(x)
- else
- fun_l25_n152(x)
- end
-end
-
-def fun_l24_n311(x)
- if (x < 1)
- fun_l25_n300(x)
- else
- fun_l25_n105(x)
- end
-end
-
-def fun_l24_n312(x)
- if (x < 1)
- fun_l25_n1(x)
- else
- fun_l25_n956(x)
- end
-end
-
-def fun_l24_n313(x)
- if (x < 1)
- fun_l25_n310(x)
- else
- fun_l25_n701(x)
- end
-end
-
-def fun_l24_n314(x)
- if (x < 1)
- fun_l25_n0(x)
- else
- fun_l25_n58(x)
- end
-end
-
-def fun_l24_n315(x)
- if (x < 1)
- fun_l25_n31(x)
- else
- fun_l25_n69(x)
- end
-end
-
-def fun_l24_n316(x)
- if (x < 1)
- fun_l25_n967(x)
- else
- fun_l25_n130(x)
- end
-end
-
-def fun_l24_n317(x)
- if (x < 1)
- fun_l25_n995(x)
- else
- fun_l25_n630(x)
- end
-end
-
-def fun_l24_n318(x)
- if (x < 1)
- fun_l25_n349(x)
- else
- fun_l25_n916(x)
- end
-end
-
-def fun_l24_n319(x)
- if (x < 1)
- fun_l25_n230(x)
- else
- fun_l25_n880(x)
- end
-end
-
-def fun_l24_n320(x)
- if (x < 1)
- fun_l25_n452(x)
- else
- fun_l25_n316(x)
- end
-end
-
-def fun_l24_n321(x)
- if (x < 1)
- fun_l25_n581(x)
- else
- fun_l25_n262(x)
- end
-end
-
-def fun_l24_n322(x)
- if (x < 1)
- fun_l25_n70(x)
- else
- fun_l25_n674(x)
- end
-end
-
-def fun_l24_n323(x)
- if (x < 1)
- fun_l25_n726(x)
- else
- fun_l25_n943(x)
- end
-end
-
-def fun_l24_n324(x)
- if (x < 1)
- fun_l25_n779(x)
- else
- fun_l25_n209(x)
- end
-end
-
-def fun_l24_n325(x)
- if (x < 1)
- fun_l25_n132(x)
- else
- fun_l25_n301(x)
- end
-end
-
-def fun_l24_n326(x)
- if (x < 1)
- fun_l25_n255(x)
- else
- fun_l25_n154(x)
- end
-end
-
-def fun_l24_n327(x)
- if (x < 1)
- fun_l25_n248(x)
- else
- fun_l25_n152(x)
- end
-end
-
-def fun_l24_n328(x)
- if (x < 1)
- fun_l25_n536(x)
- else
- fun_l25_n703(x)
- end
-end
-
-def fun_l24_n329(x)
- if (x < 1)
- fun_l25_n744(x)
- else
- fun_l25_n133(x)
- end
-end
-
-def fun_l24_n330(x)
- if (x < 1)
- fun_l25_n455(x)
- else
- fun_l25_n576(x)
- end
-end
-
-def fun_l24_n331(x)
- if (x < 1)
- fun_l25_n590(x)
- else
- fun_l25_n357(x)
- end
-end
-
-def fun_l24_n332(x)
- if (x < 1)
- fun_l25_n151(x)
- else
- fun_l25_n969(x)
- end
-end
-
-def fun_l24_n333(x)
- if (x < 1)
- fun_l25_n725(x)
- else
- fun_l25_n681(x)
- end
-end
-
-def fun_l24_n334(x)
- if (x < 1)
- fun_l25_n157(x)
- else
- fun_l25_n643(x)
- end
-end
-
-def fun_l24_n335(x)
- if (x < 1)
- fun_l25_n42(x)
- else
- fun_l25_n749(x)
- end
-end
-
-def fun_l24_n336(x)
- if (x < 1)
- fun_l25_n831(x)
- else
- fun_l25_n126(x)
- end
-end
-
-def fun_l24_n337(x)
- if (x < 1)
- fun_l25_n424(x)
- else
- fun_l25_n559(x)
- end
-end
-
-def fun_l24_n338(x)
- if (x < 1)
- fun_l25_n897(x)
- else
- fun_l25_n89(x)
- end
-end
-
-def fun_l24_n339(x)
- if (x < 1)
- fun_l25_n755(x)
- else
- fun_l25_n506(x)
- end
-end
-
-def fun_l24_n340(x)
- if (x < 1)
- fun_l25_n387(x)
- else
- fun_l25_n631(x)
- end
-end
-
-def fun_l24_n341(x)
- if (x < 1)
- fun_l25_n694(x)
- else
- fun_l25_n707(x)
- end
-end
-
-def fun_l24_n342(x)
- if (x < 1)
- fun_l25_n65(x)
- else
- fun_l25_n687(x)
- end
-end
-
-def fun_l24_n343(x)
- if (x < 1)
- fun_l25_n84(x)
- else
- fun_l25_n738(x)
- end
-end
-
-def fun_l24_n344(x)
- if (x < 1)
- fun_l25_n729(x)
- else
- fun_l25_n639(x)
- end
-end
-
-def fun_l24_n345(x)
- if (x < 1)
- fun_l25_n102(x)
- else
- fun_l25_n299(x)
- end
-end
-
-def fun_l24_n346(x)
- if (x < 1)
- fun_l25_n604(x)
- else
- fun_l25_n94(x)
- end
-end
-
-def fun_l24_n347(x)
- if (x < 1)
- fun_l25_n93(x)
- else
- fun_l25_n975(x)
- end
-end
-
-def fun_l24_n348(x)
- if (x < 1)
- fun_l25_n124(x)
- else
- fun_l25_n927(x)
- end
-end
-
-def fun_l24_n349(x)
- if (x < 1)
- fun_l25_n944(x)
- else
- fun_l25_n162(x)
- end
-end
-
-def fun_l24_n350(x)
- if (x < 1)
- fun_l25_n623(x)
- else
- fun_l25_n5(x)
- end
-end
-
-def fun_l24_n351(x)
- if (x < 1)
- fun_l25_n885(x)
- else
- fun_l25_n884(x)
- end
-end
-
-def fun_l24_n352(x)
- if (x < 1)
- fun_l25_n1(x)
- else
- fun_l25_n366(x)
- end
-end
-
-def fun_l24_n353(x)
- if (x < 1)
- fun_l25_n240(x)
- else
- fun_l25_n630(x)
- end
-end
-
-def fun_l24_n354(x)
- if (x < 1)
- fun_l25_n232(x)
- else
- fun_l25_n758(x)
- end
-end
-
-def fun_l24_n355(x)
- if (x < 1)
- fun_l25_n529(x)
- else
- fun_l25_n810(x)
- end
-end
-
-def fun_l24_n356(x)
- if (x < 1)
- fun_l25_n438(x)
- else
- fun_l25_n146(x)
- end
-end
-
-def fun_l24_n357(x)
- if (x < 1)
- fun_l25_n551(x)
- else
- fun_l25_n727(x)
- end
-end
-
-def fun_l24_n358(x)
- if (x < 1)
- fun_l25_n764(x)
- else
- fun_l25_n379(x)
- end
-end
-
-def fun_l24_n359(x)
- if (x < 1)
- fun_l25_n89(x)
- else
- fun_l25_n518(x)
- end
-end
-
-def fun_l24_n360(x)
- if (x < 1)
- fun_l25_n567(x)
- else
- fun_l25_n98(x)
- end
-end
-
-def fun_l24_n361(x)
- if (x < 1)
- fun_l25_n26(x)
- else
- fun_l25_n818(x)
- end
-end
-
-def fun_l24_n362(x)
- if (x < 1)
- fun_l25_n205(x)
- else
- fun_l25_n460(x)
- end
-end
-
-def fun_l24_n363(x)
- if (x < 1)
- fun_l25_n19(x)
- else
- fun_l25_n134(x)
- end
-end
-
-def fun_l24_n364(x)
- if (x < 1)
- fun_l25_n221(x)
- else
- fun_l25_n391(x)
- end
-end
-
-def fun_l24_n365(x)
- if (x < 1)
- fun_l25_n546(x)
- else
- fun_l25_n62(x)
- end
-end
-
-def fun_l24_n366(x)
- if (x < 1)
- fun_l25_n412(x)
- else
- fun_l25_n593(x)
- end
-end
-
-def fun_l24_n367(x)
- if (x < 1)
- fun_l25_n576(x)
- else
- fun_l25_n798(x)
- end
-end
-
-def fun_l24_n368(x)
- if (x < 1)
- fun_l25_n528(x)
- else
- fun_l25_n575(x)
- end
-end
-
-def fun_l24_n369(x)
- if (x < 1)
- fun_l25_n914(x)
- else
- fun_l25_n417(x)
- end
-end
-
-def fun_l24_n370(x)
- if (x < 1)
- fun_l25_n397(x)
- else
- fun_l25_n684(x)
- end
-end
-
-def fun_l24_n371(x)
- if (x < 1)
- fun_l25_n827(x)
- else
- fun_l25_n677(x)
- end
-end
-
-def fun_l24_n372(x)
- if (x < 1)
- fun_l25_n256(x)
- else
- fun_l25_n841(x)
- end
-end
-
-def fun_l24_n373(x)
- if (x < 1)
- fun_l25_n671(x)
- else
- fun_l25_n712(x)
- end
-end
-
-def fun_l24_n374(x)
- if (x < 1)
- fun_l25_n696(x)
- else
- fun_l25_n598(x)
- end
-end
-
-def fun_l24_n375(x)
- if (x < 1)
- fun_l25_n384(x)
- else
- fun_l25_n426(x)
- end
-end
-
-def fun_l24_n376(x)
- if (x < 1)
- fun_l25_n578(x)
- else
- fun_l25_n555(x)
- end
-end
-
-def fun_l24_n377(x)
- if (x < 1)
- fun_l25_n290(x)
- else
- fun_l25_n480(x)
- end
-end
-
-def fun_l24_n378(x)
- if (x < 1)
- fun_l25_n481(x)
- else
- fun_l25_n647(x)
- end
-end
-
-def fun_l24_n379(x)
- if (x < 1)
- fun_l25_n502(x)
- else
- fun_l25_n985(x)
- end
-end
-
-def fun_l24_n380(x)
- if (x < 1)
- fun_l25_n275(x)
- else
- fun_l25_n575(x)
- end
-end
-
-def fun_l24_n381(x)
- if (x < 1)
- fun_l25_n901(x)
- else
- fun_l25_n396(x)
- end
-end
-
-def fun_l24_n382(x)
- if (x < 1)
- fun_l25_n283(x)
- else
- fun_l25_n544(x)
- end
-end
-
-def fun_l24_n383(x)
- if (x < 1)
- fun_l25_n192(x)
- else
- fun_l25_n953(x)
- end
-end
-
-def fun_l24_n384(x)
- if (x < 1)
- fun_l25_n862(x)
- else
- fun_l25_n264(x)
- end
-end
-
-def fun_l24_n385(x)
- if (x < 1)
- fun_l25_n528(x)
- else
- fun_l25_n429(x)
- end
-end
-
-def fun_l24_n386(x)
- if (x < 1)
- fun_l25_n29(x)
- else
- fun_l25_n831(x)
- end
-end
-
-def fun_l24_n387(x)
- if (x < 1)
- fun_l25_n152(x)
- else
- fun_l25_n902(x)
- end
-end
-
-def fun_l24_n388(x)
- if (x < 1)
- fun_l25_n538(x)
- else
- fun_l25_n468(x)
- end
-end
-
-def fun_l24_n389(x)
- if (x < 1)
- fun_l25_n772(x)
- else
- fun_l25_n105(x)
- end
-end
-
-def fun_l24_n390(x)
- if (x < 1)
- fun_l25_n875(x)
- else
- fun_l25_n723(x)
- end
-end
-
-def fun_l24_n391(x)
- if (x < 1)
- fun_l25_n330(x)
- else
- fun_l25_n659(x)
- end
-end
-
-def fun_l24_n392(x)
- if (x < 1)
- fun_l25_n168(x)
- else
- fun_l25_n68(x)
- end
-end
-
-def fun_l24_n393(x)
- if (x < 1)
- fun_l25_n481(x)
- else
- fun_l25_n200(x)
- end
-end
-
-def fun_l24_n394(x)
- if (x < 1)
- fun_l25_n391(x)
- else
- fun_l25_n255(x)
- end
-end
-
-def fun_l24_n395(x)
- if (x < 1)
- fun_l25_n383(x)
- else
- fun_l25_n250(x)
- end
-end
-
-def fun_l24_n396(x)
- if (x < 1)
- fun_l25_n537(x)
- else
- fun_l25_n283(x)
- end
-end
-
-def fun_l24_n397(x)
- if (x < 1)
- fun_l25_n504(x)
- else
- fun_l25_n916(x)
- end
-end
-
-def fun_l24_n398(x)
- if (x < 1)
- fun_l25_n992(x)
- else
- fun_l25_n504(x)
- end
-end
-
-def fun_l24_n399(x)
- if (x < 1)
- fun_l25_n294(x)
- else
- fun_l25_n412(x)
- end
-end
-
-def fun_l24_n400(x)
- if (x < 1)
- fun_l25_n686(x)
- else
- fun_l25_n85(x)
- end
-end
-
-def fun_l24_n401(x)
- if (x < 1)
- fun_l25_n874(x)
- else
- fun_l25_n980(x)
- end
-end
-
-def fun_l24_n402(x)
- if (x < 1)
- fun_l25_n454(x)
- else
- fun_l25_n867(x)
- end
-end
-
-def fun_l24_n403(x)
- if (x < 1)
- fun_l25_n594(x)
- else
- fun_l25_n970(x)
- end
-end
-
-def fun_l24_n404(x)
- if (x < 1)
- fun_l25_n281(x)
- else
- fun_l25_n881(x)
- end
-end
-
-def fun_l24_n405(x)
- if (x < 1)
- fun_l25_n713(x)
- else
- fun_l25_n530(x)
- end
-end
-
-def fun_l24_n406(x)
- if (x < 1)
- fun_l25_n874(x)
- else
- fun_l25_n953(x)
- end
-end
-
-def fun_l24_n407(x)
- if (x < 1)
- fun_l25_n569(x)
- else
- fun_l25_n991(x)
- end
-end
-
-def fun_l24_n408(x)
- if (x < 1)
- fun_l25_n875(x)
- else
- fun_l25_n409(x)
- end
-end
-
-def fun_l24_n409(x)
- if (x < 1)
- fun_l25_n604(x)
- else
- fun_l25_n454(x)
- end
-end
-
-def fun_l24_n410(x)
- if (x < 1)
- fun_l25_n267(x)
- else
- fun_l25_n100(x)
- end
-end
-
-def fun_l24_n411(x)
- if (x < 1)
- fun_l25_n966(x)
- else
- fun_l25_n537(x)
- end
-end
-
-def fun_l24_n412(x)
- if (x < 1)
- fun_l25_n261(x)
- else
- fun_l25_n106(x)
- end
-end
-
-def fun_l24_n413(x)
- if (x < 1)
- fun_l25_n869(x)
- else
- fun_l25_n890(x)
- end
-end
-
-def fun_l24_n414(x)
- if (x < 1)
- fun_l25_n784(x)
- else
- fun_l25_n147(x)
- end
-end
-
-def fun_l24_n415(x)
- if (x < 1)
- fun_l25_n6(x)
- else
- fun_l25_n808(x)
- end
-end
-
-def fun_l24_n416(x)
- if (x < 1)
- fun_l25_n940(x)
- else
- fun_l25_n680(x)
- end
-end
-
-def fun_l24_n417(x)
- if (x < 1)
- fun_l25_n3(x)
- else
- fun_l25_n799(x)
- end
-end
-
-def fun_l24_n418(x)
- if (x < 1)
- fun_l25_n196(x)
- else
- fun_l25_n785(x)
- end
-end
-
-def fun_l24_n419(x)
- if (x < 1)
- fun_l25_n786(x)
- else
- fun_l25_n607(x)
- end
-end
-
-def fun_l24_n420(x)
- if (x < 1)
- fun_l25_n720(x)
- else
- fun_l25_n74(x)
- end
-end
-
-def fun_l24_n421(x)
- if (x < 1)
- fun_l25_n962(x)
- else
- fun_l25_n489(x)
- end
-end
-
-def fun_l24_n422(x)
- if (x < 1)
- fun_l25_n231(x)
- else
- fun_l25_n878(x)
- end
-end
-
-def fun_l24_n423(x)
- if (x < 1)
- fun_l25_n720(x)
- else
- fun_l25_n988(x)
- end
-end
-
-def fun_l24_n424(x)
- if (x < 1)
- fun_l25_n883(x)
- else
- fun_l25_n510(x)
- end
-end
-
-def fun_l24_n425(x)
- if (x < 1)
- fun_l25_n443(x)
- else
- fun_l25_n533(x)
- end
-end
-
-def fun_l24_n426(x)
- if (x < 1)
- fun_l25_n541(x)
- else
- fun_l25_n747(x)
- end
-end
-
-def fun_l24_n427(x)
- if (x < 1)
- fun_l25_n308(x)
- else
- fun_l25_n373(x)
- end
-end
-
-def fun_l24_n428(x)
- if (x < 1)
- fun_l25_n484(x)
- else
- fun_l25_n632(x)
- end
-end
-
-def fun_l24_n429(x)
- if (x < 1)
- fun_l25_n777(x)
- else
- fun_l25_n128(x)
- end
-end
-
-def fun_l24_n430(x)
- if (x < 1)
- fun_l25_n729(x)
- else
- fun_l25_n644(x)
- end
-end
-
-def fun_l24_n431(x)
- if (x < 1)
- fun_l25_n330(x)
- else
- fun_l25_n947(x)
- end
-end
-
-def fun_l24_n432(x)
- if (x < 1)
- fun_l25_n929(x)
- else
- fun_l25_n80(x)
- end
-end
-
-def fun_l24_n433(x)
- if (x < 1)
- fun_l25_n269(x)
- else
- fun_l25_n307(x)
- end
-end
-
-def fun_l24_n434(x)
- if (x < 1)
- fun_l25_n824(x)
- else
- fun_l25_n451(x)
- end
-end
-
-def fun_l24_n435(x)
- if (x < 1)
- fun_l25_n93(x)
- else
- fun_l25_n198(x)
- end
-end
-
-def fun_l24_n436(x)
- if (x < 1)
- fun_l25_n359(x)
- else
- fun_l25_n412(x)
- end
-end
-
-def fun_l24_n437(x)
- if (x < 1)
- fun_l25_n427(x)
- else
- fun_l25_n321(x)
- end
-end
-
-def fun_l24_n438(x)
- if (x < 1)
- fun_l25_n765(x)
- else
- fun_l25_n223(x)
- end
-end
-
-def fun_l24_n439(x)
- if (x < 1)
- fun_l25_n918(x)
- else
- fun_l25_n902(x)
- end
-end
-
-def fun_l24_n440(x)
- if (x < 1)
- fun_l25_n320(x)
- else
- fun_l25_n428(x)
- end
-end
-
-def fun_l24_n441(x)
- if (x < 1)
- fun_l25_n159(x)
- else
- fun_l25_n857(x)
- end
-end
-
-def fun_l24_n442(x)
- if (x < 1)
- fun_l25_n505(x)
- else
- fun_l25_n565(x)
- end
-end
-
-def fun_l24_n443(x)
- if (x < 1)
- fun_l25_n214(x)
- else
- fun_l25_n861(x)
- end
-end
-
-def fun_l24_n444(x)
- if (x < 1)
- fun_l25_n185(x)
- else
- fun_l25_n255(x)
- end
-end
-
-def fun_l24_n445(x)
- if (x < 1)
- fun_l25_n198(x)
- else
- fun_l25_n314(x)
- end
-end
-
-def fun_l24_n446(x)
- if (x < 1)
- fun_l25_n334(x)
- else
- fun_l25_n633(x)
- end
-end
-
-def fun_l24_n447(x)
- if (x < 1)
- fun_l25_n972(x)
- else
- fun_l25_n671(x)
- end
-end
-
-def fun_l24_n448(x)
- if (x < 1)
- fun_l25_n608(x)
- else
- fun_l25_n720(x)
- end
-end
-
-def fun_l24_n449(x)
- if (x < 1)
- fun_l25_n71(x)
- else
- fun_l25_n479(x)
- end
-end
-
-def fun_l24_n450(x)
- if (x < 1)
- fun_l25_n689(x)
- else
- fun_l25_n716(x)
- end
-end
-
-def fun_l24_n451(x)
- if (x < 1)
- fun_l25_n696(x)
- else
- fun_l25_n453(x)
- end
-end
-
-def fun_l24_n452(x)
- if (x < 1)
- fun_l25_n804(x)
- else
- fun_l25_n508(x)
- end
-end
-
-def fun_l24_n453(x)
- if (x < 1)
- fun_l25_n32(x)
- else
- fun_l25_n180(x)
- end
-end
-
-def fun_l24_n454(x)
- if (x < 1)
- fun_l25_n493(x)
- else
- fun_l25_n200(x)
- end
-end
-
-def fun_l24_n455(x)
- if (x < 1)
- fun_l25_n763(x)
- else
- fun_l25_n362(x)
- end
-end
-
-def fun_l24_n456(x)
- if (x < 1)
- fun_l25_n488(x)
- else
- fun_l25_n202(x)
- end
-end
-
-def fun_l24_n457(x)
- if (x < 1)
- fun_l25_n752(x)
- else
- fun_l25_n670(x)
- end
-end
-
-def fun_l24_n458(x)
- if (x < 1)
- fun_l25_n462(x)
- else
- fun_l25_n457(x)
- end
-end
-
-def fun_l24_n459(x)
- if (x < 1)
- fun_l25_n266(x)
- else
- fun_l25_n455(x)
- end
-end
-
-def fun_l24_n460(x)
- if (x < 1)
- fun_l25_n173(x)
- else
- fun_l25_n873(x)
- end
-end
-
-def fun_l24_n461(x)
- if (x < 1)
- fun_l25_n127(x)
- else
- fun_l25_n213(x)
- end
-end
-
-def fun_l24_n462(x)
- if (x < 1)
- fun_l25_n579(x)
- else
- fun_l25_n44(x)
- end
-end
-
-def fun_l24_n463(x)
- if (x < 1)
- fun_l25_n68(x)
- else
- fun_l25_n989(x)
- end
-end
-
-def fun_l24_n464(x)
- if (x < 1)
- fun_l25_n826(x)
- else
- fun_l25_n883(x)
- end
-end
-
-def fun_l24_n465(x)
- if (x < 1)
- fun_l25_n855(x)
- else
- fun_l25_n131(x)
- end
-end
-
-def fun_l24_n466(x)
- if (x < 1)
- fun_l25_n923(x)
- else
- fun_l25_n433(x)
- end
-end
-
-def fun_l24_n467(x)
- if (x < 1)
- fun_l25_n84(x)
- else
- fun_l25_n648(x)
- end
-end
-
-def fun_l24_n468(x)
- if (x < 1)
- fun_l25_n53(x)
- else
- fun_l25_n766(x)
- end
-end
-
-def fun_l24_n469(x)
- if (x < 1)
- fun_l25_n689(x)
- else
- fun_l25_n201(x)
- end
-end
-
-def fun_l24_n470(x)
- if (x < 1)
- fun_l25_n361(x)
- else
- fun_l25_n459(x)
- end
-end
-
-def fun_l24_n471(x)
- if (x < 1)
- fun_l25_n550(x)
- else
- fun_l25_n522(x)
- end
-end
-
-def fun_l24_n472(x)
- if (x < 1)
- fun_l25_n128(x)
- else
- fun_l25_n417(x)
- end
-end
-
-def fun_l24_n473(x)
- if (x < 1)
- fun_l25_n600(x)
- else
- fun_l25_n137(x)
- end
-end
-
-def fun_l24_n474(x)
- if (x < 1)
- fun_l25_n72(x)
- else
- fun_l25_n548(x)
- end
-end
-
-def fun_l24_n475(x)
- if (x < 1)
- fun_l25_n879(x)
- else
- fun_l25_n376(x)
- end
-end
-
-def fun_l24_n476(x)
- if (x < 1)
- fun_l25_n822(x)
- else
- fun_l25_n695(x)
- end
-end
-
-def fun_l24_n477(x)
- if (x < 1)
- fun_l25_n991(x)
- else
- fun_l25_n208(x)
- end
-end
-
-def fun_l24_n478(x)
- if (x < 1)
- fun_l25_n17(x)
- else
- fun_l25_n332(x)
- end
-end
-
-def fun_l24_n479(x)
- if (x < 1)
- fun_l25_n353(x)
- else
- fun_l25_n438(x)
- end
-end
-
-def fun_l24_n480(x)
- if (x < 1)
- fun_l25_n109(x)
- else
- fun_l25_n360(x)
- end
-end
-
-def fun_l24_n481(x)
- if (x < 1)
- fun_l25_n57(x)
- else
- fun_l25_n417(x)
- end
-end
-
-def fun_l24_n482(x)
- if (x < 1)
- fun_l25_n903(x)
- else
- fun_l25_n486(x)
- end
-end
-
-def fun_l24_n483(x)
- if (x < 1)
- fun_l25_n677(x)
- else
- fun_l25_n77(x)
- end
-end
-
-def fun_l24_n484(x)
- if (x < 1)
- fun_l25_n117(x)
- else
- fun_l25_n582(x)
- end
-end
-
-def fun_l24_n485(x)
- if (x < 1)
- fun_l25_n454(x)
- else
- fun_l25_n198(x)
- end
-end
-
-def fun_l24_n486(x)
- if (x < 1)
- fun_l25_n779(x)
- else
- fun_l25_n301(x)
- end
-end
-
-def fun_l24_n487(x)
- if (x < 1)
- fun_l25_n3(x)
- else
- fun_l25_n363(x)
- end
-end
-
-def fun_l24_n488(x)
- if (x < 1)
- fun_l25_n84(x)
- else
- fun_l25_n793(x)
- end
-end
-
-def fun_l24_n489(x)
- if (x < 1)
- fun_l25_n344(x)
- else
- fun_l25_n342(x)
- end
-end
-
-def fun_l24_n490(x)
- if (x < 1)
- fun_l25_n365(x)
- else
- fun_l25_n546(x)
- end
-end
-
-def fun_l24_n491(x)
- if (x < 1)
- fun_l25_n431(x)
- else
- fun_l25_n193(x)
- end
-end
-
-def fun_l24_n492(x)
- if (x < 1)
- fun_l25_n763(x)
- else
- fun_l25_n174(x)
- end
-end
-
-def fun_l24_n493(x)
- if (x < 1)
- fun_l25_n231(x)
- else
- fun_l25_n435(x)
- end
-end
-
-def fun_l24_n494(x)
- if (x < 1)
- fun_l25_n408(x)
- else
- fun_l25_n848(x)
- end
-end
-
-def fun_l24_n495(x)
- if (x < 1)
- fun_l25_n955(x)
- else
- fun_l25_n232(x)
- end
-end
-
-def fun_l24_n496(x)
- if (x < 1)
- fun_l25_n72(x)
- else
- fun_l25_n11(x)
- end
-end
-
-def fun_l24_n497(x)
- if (x < 1)
- fun_l25_n196(x)
- else
- fun_l25_n180(x)
- end
-end
-
-def fun_l24_n498(x)
- if (x < 1)
- fun_l25_n102(x)
- else
- fun_l25_n360(x)
- end
-end
-
-def fun_l24_n499(x)
- if (x < 1)
- fun_l25_n755(x)
- else
- fun_l25_n760(x)
- end
-end
-
-def fun_l24_n500(x)
- if (x < 1)
- fun_l25_n676(x)
- else
- fun_l25_n825(x)
- end
-end
-
-def fun_l24_n501(x)
- if (x < 1)
- fun_l25_n203(x)
- else
- fun_l25_n731(x)
- end
-end
-
-def fun_l24_n502(x)
- if (x < 1)
- fun_l25_n551(x)
- else
- fun_l25_n165(x)
- end
-end
-
-def fun_l24_n503(x)
- if (x < 1)
- fun_l25_n702(x)
- else
- fun_l25_n779(x)
- end
-end
-
-def fun_l24_n504(x)
- if (x < 1)
- fun_l25_n525(x)
- else
- fun_l25_n846(x)
- end
-end
-
-def fun_l24_n505(x)
- if (x < 1)
- fun_l25_n97(x)
- else
- fun_l25_n331(x)
- end
-end
-
-def fun_l24_n506(x)
- if (x < 1)
- fun_l25_n572(x)
- else
- fun_l25_n759(x)
- end
-end
-
-def fun_l24_n507(x)
- if (x < 1)
- fun_l25_n402(x)
- else
- fun_l25_n460(x)
- end
-end
-
-def fun_l24_n508(x)
- if (x < 1)
- fun_l25_n640(x)
- else
- fun_l25_n833(x)
- end
-end
-
-def fun_l24_n509(x)
- if (x < 1)
- fun_l25_n190(x)
- else
- fun_l25_n524(x)
- end
-end
-
-def fun_l24_n510(x)
- if (x < 1)
- fun_l25_n307(x)
- else
- fun_l25_n92(x)
- end
-end
-
-def fun_l24_n511(x)
- if (x < 1)
- fun_l25_n444(x)
- else
- fun_l25_n593(x)
- end
-end
-
-def fun_l24_n512(x)
- if (x < 1)
- fun_l25_n684(x)
- else
- fun_l25_n163(x)
- end
-end
-
-def fun_l24_n513(x)
- if (x < 1)
- fun_l25_n998(x)
- else
- fun_l25_n582(x)
- end
-end
-
-def fun_l24_n514(x)
- if (x < 1)
- fun_l25_n767(x)
- else
- fun_l25_n557(x)
- end
-end
-
-def fun_l24_n515(x)
- if (x < 1)
- fun_l25_n893(x)
- else
- fun_l25_n179(x)
- end
-end
-
-def fun_l24_n516(x)
- if (x < 1)
- fun_l25_n726(x)
- else
- fun_l25_n651(x)
- end
-end
-
-def fun_l24_n517(x)
- if (x < 1)
- fun_l25_n57(x)
- else
- fun_l25_n454(x)
- end
-end
-
-def fun_l24_n518(x)
- if (x < 1)
- fun_l25_n598(x)
- else
- fun_l25_n554(x)
- end
-end
-
-def fun_l24_n519(x)
- if (x < 1)
- fun_l25_n437(x)
- else
- fun_l25_n349(x)
- end
-end
-
-def fun_l24_n520(x)
- if (x < 1)
- fun_l25_n754(x)
- else
- fun_l25_n259(x)
- end
-end
-
-def fun_l24_n521(x)
- if (x < 1)
- fun_l25_n856(x)
- else
- fun_l25_n155(x)
- end
-end
-
-def fun_l24_n522(x)
- if (x < 1)
- fun_l25_n607(x)
- else
- fun_l25_n751(x)
- end
-end
-
-def fun_l24_n523(x)
- if (x < 1)
- fun_l25_n510(x)
- else
- fun_l25_n297(x)
- end
-end
-
-def fun_l24_n524(x)
- if (x < 1)
- fun_l25_n433(x)
- else
- fun_l25_n102(x)
- end
-end
-
-def fun_l24_n525(x)
- if (x < 1)
- fun_l25_n173(x)
- else
- fun_l25_n487(x)
- end
-end
-
-def fun_l24_n526(x)
- if (x < 1)
- fun_l25_n716(x)
- else
- fun_l25_n230(x)
- end
-end
-
-def fun_l24_n527(x)
- if (x < 1)
- fun_l25_n511(x)
- else
- fun_l25_n272(x)
- end
-end
-
-def fun_l24_n528(x)
- if (x < 1)
- fun_l25_n974(x)
- else
- fun_l25_n954(x)
- end
-end
-
-def fun_l24_n529(x)
- if (x < 1)
- fun_l25_n92(x)
- else
- fun_l25_n704(x)
- end
-end
-
-def fun_l24_n530(x)
- if (x < 1)
- fun_l25_n117(x)
- else
- fun_l25_n725(x)
- end
-end
-
-def fun_l24_n531(x)
- if (x < 1)
- fun_l25_n817(x)
- else
- fun_l25_n6(x)
- end
-end
-
-def fun_l24_n532(x)
- if (x < 1)
- fun_l25_n27(x)
- else
- fun_l25_n438(x)
- end
-end
-
-def fun_l24_n533(x)
- if (x < 1)
- fun_l25_n964(x)
- else
- fun_l25_n291(x)
- end
-end
-
-def fun_l24_n534(x)
- if (x < 1)
- fun_l25_n786(x)
- else
- fun_l25_n871(x)
- end
-end
-
-def fun_l24_n535(x)
- if (x < 1)
- fun_l25_n79(x)
- else
- fun_l25_n786(x)
- end
-end
-
-def fun_l24_n536(x)
- if (x < 1)
- fun_l25_n403(x)
- else
- fun_l25_n78(x)
- end
-end
-
-def fun_l24_n537(x)
- if (x < 1)
- fun_l25_n20(x)
- else
- fun_l25_n239(x)
- end
-end
-
-def fun_l24_n538(x)
- if (x < 1)
- fun_l25_n818(x)
- else
- fun_l25_n917(x)
- end
-end
-
-def fun_l24_n539(x)
- if (x < 1)
- fun_l25_n598(x)
- else
- fun_l25_n708(x)
- end
-end
-
-def fun_l24_n540(x)
- if (x < 1)
- fun_l25_n802(x)
- else
- fun_l25_n208(x)
- end
-end
-
-def fun_l24_n541(x)
- if (x < 1)
- fun_l25_n962(x)
- else
- fun_l25_n487(x)
- end
-end
-
-def fun_l24_n542(x)
- if (x < 1)
- fun_l25_n690(x)
- else
- fun_l25_n503(x)
- end
-end
-
-def fun_l24_n543(x)
- if (x < 1)
- fun_l25_n548(x)
- else
- fun_l25_n295(x)
- end
-end
-
-def fun_l24_n544(x)
- if (x < 1)
- fun_l25_n373(x)
- else
- fun_l25_n896(x)
- end
-end
-
-def fun_l24_n545(x)
- if (x < 1)
- fun_l25_n759(x)
- else
- fun_l25_n171(x)
- end
-end
-
-def fun_l24_n546(x)
- if (x < 1)
- fun_l25_n269(x)
- else
- fun_l25_n153(x)
- end
-end
-
-def fun_l24_n547(x)
- if (x < 1)
- fun_l25_n489(x)
- else
- fun_l25_n628(x)
- end
-end
-
-def fun_l24_n548(x)
- if (x < 1)
- fun_l25_n540(x)
- else
- fun_l25_n7(x)
- end
-end
-
-def fun_l24_n549(x)
- if (x < 1)
- fun_l25_n916(x)
- else
- fun_l25_n365(x)
- end
-end
-
-def fun_l24_n550(x)
- if (x < 1)
- fun_l25_n377(x)
- else
- fun_l25_n420(x)
- end
-end
-
-def fun_l24_n551(x)
- if (x < 1)
- fun_l25_n331(x)
- else
- fun_l25_n568(x)
- end
-end
-
-def fun_l24_n552(x)
- if (x < 1)
- fun_l25_n348(x)
- else
- fun_l25_n934(x)
- end
-end
-
-def fun_l24_n553(x)
- if (x < 1)
- fun_l25_n676(x)
- else
- fun_l25_n142(x)
- end
-end
-
-def fun_l24_n554(x)
- if (x < 1)
- fun_l25_n913(x)
- else
- fun_l25_n255(x)
- end
-end
-
-def fun_l24_n555(x)
- if (x < 1)
- fun_l25_n873(x)
- else
- fun_l25_n951(x)
- end
-end
-
-def fun_l24_n556(x)
- if (x < 1)
- fun_l25_n300(x)
- else
- fun_l25_n969(x)
- end
-end
-
-def fun_l24_n557(x)
- if (x < 1)
- fun_l25_n674(x)
- else
- fun_l25_n290(x)
- end
-end
-
-def fun_l24_n558(x)
- if (x < 1)
- fun_l25_n323(x)
- else
- fun_l25_n325(x)
- end
-end
-
-def fun_l24_n559(x)
- if (x < 1)
- fun_l25_n547(x)
- else
- fun_l25_n207(x)
- end
-end
-
-def fun_l24_n560(x)
- if (x < 1)
- fun_l25_n858(x)
- else
- fun_l25_n304(x)
- end
-end
-
-def fun_l24_n561(x)
- if (x < 1)
- fun_l25_n831(x)
- else
- fun_l25_n840(x)
- end
-end
-
-def fun_l24_n562(x)
- if (x < 1)
- fun_l25_n174(x)
- else
- fun_l25_n162(x)
- end
-end
-
-def fun_l24_n563(x)
- if (x < 1)
- fun_l25_n662(x)
- else
- fun_l25_n676(x)
- end
-end
-
-def fun_l24_n564(x)
- if (x < 1)
- fun_l25_n474(x)
- else
- fun_l25_n173(x)
- end
-end
-
-def fun_l24_n565(x)
- if (x < 1)
- fun_l25_n232(x)
- else
- fun_l25_n57(x)
- end
-end
-
-def fun_l24_n566(x)
- if (x < 1)
- fun_l25_n615(x)
- else
- fun_l25_n944(x)
- end
-end
-
-def fun_l24_n567(x)
- if (x < 1)
- fun_l25_n586(x)
- else
- fun_l25_n183(x)
- end
-end
-
-def fun_l24_n568(x)
- if (x < 1)
- fun_l25_n758(x)
- else
- fun_l25_n376(x)
- end
-end
-
-def fun_l24_n569(x)
- if (x < 1)
- fun_l25_n755(x)
- else
- fun_l25_n903(x)
- end
-end
-
-def fun_l24_n570(x)
- if (x < 1)
- fun_l25_n562(x)
- else
- fun_l25_n843(x)
- end
-end
-
-def fun_l24_n571(x)
- if (x < 1)
- fun_l25_n369(x)
- else
- fun_l25_n712(x)
- end
-end
-
-def fun_l24_n572(x)
- if (x < 1)
- fun_l25_n183(x)
- else
- fun_l25_n273(x)
- end
-end
-
-def fun_l24_n573(x)
- if (x < 1)
- fun_l25_n150(x)
- else
- fun_l25_n309(x)
- end
-end
-
-def fun_l24_n574(x)
- if (x < 1)
- fun_l25_n485(x)
- else
- fun_l25_n20(x)
- end
-end
-
-def fun_l24_n575(x)
- if (x < 1)
- fun_l25_n325(x)
- else
- fun_l25_n770(x)
- end
-end
-
-def fun_l24_n576(x)
- if (x < 1)
- fun_l25_n528(x)
- else
- fun_l25_n529(x)
- end
-end
-
-def fun_l24_n577(x)
- if (x < 1)
- fun_l25_n557(x)
- else
- fun_l25_n416(x)
- end
-end
-
-def fun_l24_n578(x)
- if (x < 1)
- fun_l25_n501(x)
- else
- fun_l25_n81(x)
- end
-end
-
-def fun_l24_n579(x)
- if (x < 1)
- fun_l25_n355(x)
- else
- fun_l25_n391(x)
- end
-end
-
-def fun_l24_n580(x)
- if (x < 1)
- fun_l25_n665(x)
- else
- fun_l25_n656(x)
- end
-end
-
-def fun_l24_n581(x)
- if (x < 1)
- fun_l25_n496(x)
- else
- fun_l25_n933(x)
- end
-end
-
-def fun_l24_n582(x)
- if (x < 1)
- fun_l25_n71(x)
- else
- fun_l25_n815(x)
- end
-end
-
-def fun_l24_n583(x)
- if (x < 1)
- fun_l25_n488(x)
- else
- fun_l25_n587(x)
- end
-end
-
-def fun_l24_n584(x)
- if (x < 1)
- fun_l25_n909(x)
- else
- fun_l25_n673(x)
- end
-end
-
-def fun_l24_n585(x)
- if (x < 1)
- fun_l25_n452(x)
- else
- fun_l25_n774(x)
- end
-end
-
-def fun_l24_n586(x)
- if (x < 1)
- fun_l25_n376(x)
- else
- fun_l25_n855(x)
- end
-end
-
-def fun_l24_n587(x)
- if (x < 1)
- fun_l25_n452(x)
- else
- fun_l25_n331(x)
- end
-end
-
-def fun_l24_n588(x)
- if (x < 1)
- fun_l25_n718(x)
- else
- fun_l25_n496(x)
- end
-end
-
-def fun_l24_n589(x)
- if (x < 1)
- fun_l25_n923(x)
- else
- fun_l25_n633(x)
- end
-end
-
-def fun_l24_n590(x)
- if (x < 1)
- fun_l25_n815(x)
- else
- fun_l25_n633(x)
- end
-end
-
-def fun_l24_n591(x)
- if (x < 1)
- fun_l25_n699(x)
- else
- fun_l25_n609(x)
- end
-end
-
-def fun_l24_n592(x)
- if (x < 1)
- fun_l25_n722(x)
- else
- fun_l25_n884(x)
- end
-end
-
-def fun_l24_n593(x)
- if (x < 1)
- fun_l25_n580(x)
- else
- fun_l25_n48(x)
- end
-end
-
-def fun_l24_n594(x)
- if (x < 1)
- fun_l25_n245(x)
- else
- fun_l25_n126(x)
- end
-end
-
-def fun_l24_n595(x)
- if (x < 1)
- fun_l25_n778(x)
- else
- fun_l25_n989(x)
- end
-end
-
-def fun_l24_n596(x)
- if (x < 1)
- fun_l25_n813(x)
- else
- fun_l25_n117(x)
- end
-end
-
-def fun_l24_n597(x)
- if (x < 1)
- fun_l25_n622(x)
- else
- fun_l25_n293(x)
- end
-end
-
-def fun_l24_n598(x)
- if (x < 1)
- fun_l25_n996(x)
- else
- fun_l25_n704(x)
- end
-end
-
-def fun_l24_n599(x)
- if (x < 1)
- fun_l25_n173(x)
- else
- fun_l25_n336(x)
- end
-end
-
-def fun_l24_n600(x)
- if (x < 1)
- fun_l25_n295(x)
- else
- fun_l25_n293(x)
- end
-end
-
-def fun_l24_n601(x)
- if (x < 1)
- fun_l25_n104(x)
- else
- fun_l25_n907(x)
- end
-end
-
-def fun_l24_n602(x)
- if (x < 1)
- fun_l25_n136(x)
- else
- fun_l25_n915(x)
- end
-end
-
-def fun_l24_n603(x)
- if (x < 1)
- fun_l25_n19(x)
- else
- fun_l25_n113(x)
- end
-end
-
-def fun_l24_n604(x)
- if (x < 1)
- fun_l25_n389(x)
- else
- fun_l25_n863(x)
- end
-end
-
-def fun_l24_n605(x)
- if (x < 1)
- fun_l25_n20(x)
- else
- fun_l25_n830(x)
- end
-end
-
-def fun_l24_n606(x)
- if (x < 1)
- fun_l25_n723(x)
- else
- fun_l25_n956(x)
- end
-end
-
-def fun_l24_n607(x)
- if (x < 1)
- fun_l25_n765(x)
- else
- fun_l25_n27(x)
- end
-end
-
-def fun_l24_n608(x)
- if (x < 1)
- fun_l25_n682(x)
- else
- fun_l25_n953(x)
- end
-end
-
-def fun_l24_n609(x)
- if (x < 1)
- fun_l25_n501(x)
- else
- fun_l25_n81(x)
- end
-end
-
-def fun_l24_n610(x)
- if (x < 1)
- fun_l25_n896(x)
- else
- fun_l25_n192(x)
- end
-end
-
-def fun_l24_n611(x)
- if (x < 1)
- fun_l25_n605(x)
- else
- fun_l25_n443(x)
- end
-end
-
-def fun_l24_n612(x)
- if (x < 1)
- fun_l25_n298(x)
- else
- fun_l25_n818(x)
- end
-end
-
-def fun_l24_n613(x)
- if (x < 1)
- fun_l25_n289(x)
- else
- fun_l25_n227(x)
- end
-end
-
-def fun_l24_n614(x)
- if (x < 1)
- fun_l25_n511(x)
- else
- fun_l25_n460(x)
- end
-end
-
-def fun_l24_n615(x)
- if (x < 1)
- fun_l25_n774(x)
- else
- fun_l25_n794(x)
- end
-end
-
-def fun_l24_n616(x)
- if (x < 1)
- fun_l25_n933(x)
- else
- fun_l25_n448(x)
- end
-end
-
-def fun_l24_n617(x)
- if (x < 1)
- fun_l25_n239(x)
- else
- fun_l25_n156(x)
- end
-end
-
-def fun_l24_n618(x)
- if (x < 1)
- fun_l25_n713(x)
- else
- fun_l25_n337(x)
- end
-end
-
-def fun_l24_n619(x)
- if (x < 1)
- fun_l25_n450(x)
- else
- fun_l25_n282(x)
- end
-end
-
-def fun_l24_n620(x)
- if (x < 1)
- fun_l25_n97(x)
- else
- fun_l25_n360(x)
- end
-end
-
-def fun_l24_n621(x)
- if (x < 1)
- fun_l25_n197(x)
- else
- fun_l25_n406(x)
- end
-end
-
-def fun_l24_n622(x)
- if (x < 1)
- fun_l25_n791(x)
- else
- fun_l25_n876(x)
- end
-end
-
-def fun_l24_n623(x)
- if (x < 1)
- fun_l25_n989(x)
- else
- fun_l25_n616(x)
- end
-end
-
-def fun_l24_n624(x)
- if (x < 1)
- fun_l25_n754(x)
- else
- fun_l25_n605(x)
- end
-end
-
-def fun_l24_n625(x)
- if (x < 1)
- fun_l25_n113(x)
- else
- fun_l25_n400(x)
- end
-end
-
-def fun_l24_n626(x)
- if (x < 1)
- fun_l25_n6(x)
- else
- fun_l25_n742(x)
- end
-end
-
-def fun_l24_n627(x)
- if (x < 1)
- fun_l25_n916(x)
- else
- fun_l25_n5(x)
- end
-end
-
-def fun_l24_n628(x)
- if (x < 1)
- fun_l25_n5(x)
- else
- fun_l25_n327(x)
- end
-end
-
-def fun_l24_n629(x)
- if (x < 1)
- fun_l25_n867(x)
- else
- fun_l25_n37(x)
- end
-end
-
-def fun_l24_n630(x)
- if (x < 1)
- fun_l25_n409(x)
- else
- fun_l25_n137(x)
- end
-end
-
-def fun_l24_n631(x)
- if (x < 1)
- fun_l25_n128(x)
- else
- fun_l25_n499(x)
- end
-end
-
-def fun_l24_n632(x)
- if (x < 1)
- fun_l25_n694(x)
- else
- fun_l25_n983(x)
- end
-end
-
-def fun_l24_n633(x)
- if (x < 1)
- fun_l25_n62(x)
- else
- fun_l25_n538(x)
- end
-end
-
-def fun_l24_n634(x)
- if (x < 1)
- fun_l25_n740(x)
- else
- fun_l25_n795(x)
- end
-end
-
-def fun_l24_n635(x)
- if (x < 1)
- fun_l25_n597(x)
- else
- fun_l25_n557(x)
- end
-end
-
-def fun_l24_n636(x)
- if (x < 1)
- fun_l25_n642(x)
- else
- fun_l25_n40(x)
- end
-end
-
-def fun_l24_n637(x)
- if (x < 1)
- fun_l25_n303(x)
- else
- fun_l25_n931(x)
- end
-end
-
-def fun_l24_n638(x)
- if (x < 1)
- fun_l25_n977(x)
- else
- fun_l25_n848(x)
- end
-end
-
-def fun_l24_n639(x)
- if (x < 1)
- fun_l25_n983(x)
- else
- fun_l25_n11(x)
- end
-end
-
-def fun_l24_n640(x)
- if (x < 1)
- fun_l25_n258(x)
- else
- fun_l25_n280(x)
- end
-end
-
-def fun_l24_n641(x)
- if (x < 1)
- fun_l25_n553(x)
- else
- fun_l25_n351(x)
- end
-end
-
-def fun_l24_n642(x)
- if (x < 1)
- fun_l25_n4(x)
- else
- fun_l25_n375(x)
- end
-end
-
-def fun_l24_n643(x)
- if (x < 1)
- fun_l25_n678(x)
- else
- fun_l25_n139(x)
- end
-end
-
-def fun_l24_n644(x)
- if (x < 1)
- fun_l25_n193(x)
- else
- fun_l25_n490(x)
- end
-end
-
-def fun_l24_n645(x)
- if (x < 1)
- fun_l25_n146(x)
- else
- fun_l25_n450(x)
- end
-end
-
-def fun_l24_n646(x)
- if (x < 1)
- fun_l25_n813(x)
- else
- fun_l25_n59(x)
- end
-end
-
-def fun_l24_n647(x)
- if (x < 1)
- fun_l25_n726(x)
- else
- fun_l25_n792(x)
- end
-end
-
-def fun_l24_n648(x)
- if (x < 1)
- fun_l25_n508(x)
- else
- fun_l25_n496(x)
- end
-end
-
-def fun_l24_n649(x)
- if (x < 1)
- fun_l25_n231(x)
- else
- fun_l25_n688(x)
- end
-end
-
-def fun_l24_n650(x)
- if (x < 1)
- fun_l25_n602(x)
- else
- fun_l25_n641(x)
- end
-end
-
-def fun_l24_n651(x)
- if (x < 1)
- fun_l25_n101(x)
- else
- fun_l25_n394(x)
- end
-end
-
-def fun_l24_n652(x)
- if (x < 1)
- fun_l25_n454(x)
- else
- fun_l25_n466(x)
- end
-end
-
-def fun_l24_n653(x)
- if (x < 1)
- fun_l25_n147(x)
- else
- fun_l25_n116(x)
- end
-end
-
-def fun_l24_n654(x)
- if (x < 1)
- fun_l25_n83(x)
- else
- fun_l25_n951(x)
- end
-end
-
-def fun_l24_n655(x)
- if (x < 1)
- fun_l25_n667(x)
- else
- fun_l25_n293(x)
- end
-end
-
-def fun_l24_n656(x)
- if (x < 1)
- fun_l25_n413(x)
- else
- fun_l25_n708(x)
- end
-end
-
-def fun_l24_n657(x)
- if (x < 1)
- fun_l25_n495(x)
- else
- fun_l25_n277(x)
- end
-end
-
-def fun_l24_n658(x)
- if (x < 1)
- fun_l25_n926(x)
- else
- fun_l25_n624(x)
- end
-end
-
-def fun_l24_n659(x)
- if (x < 1)
- fun_l25_n612(x)
- else
- fun_l25_n666(x)
- end
-end
-
-def fun_l24_n660(x)
- if (x < 1)
- fun_l25_n32(x)
- else
- fun_l25_n290(x)
- end
-end
-
-def fun_l24_n661(x)
- if (x < 1)
- fun_l25_n674(x)
- else
- fun_l25_n937(x)
- end
-end
-
-def fun_l24_n662(x)
- if (x < 1)
- fun_l25_n556(x)
- else
- fun_l25_n576(x)
- end
-end
-
-def fun_l24_n663(x)
- if (x < 1)
- fun_l25_n763(x)
- else
- fun_l25_n898(x)
- end
-end
-
-def fun_l24_n664(x)
- if (x < 1)
- fun_l25_n564(x)
- else
- fun_l25_n478(x)
- end
-end
-
-def fun_l24_n665(x)
- if (x < 1)
- fun_l25_n515(x)
- else
- fun_l25_n991(x)
- end
-end
-
-def fun_l24_n666(x)
- if (x < 1)
- fun_l25_n737(x)
- else
- fun_l25_n936(x)
- end
-end
-
-def fun_l24_n667(x)
- if (x < 1)
- fun_l25_n829(x)
- else
- fun_l25_n350(x)
- end
-end
-
-def fun_l24_n668(x)
- if (x < 1)
- fun_l25_n59(x)
- else
- fun_l25_n979(x)
- end
-end
-
-def fun_l24_n669(x)
- if (x < 1)
- fun_l25_n866(x)
- else
- fun_l25_n624(x)
- end
-end
-
-def fun_l24_n670(x)
- if (x < 1)
- fun_l25_n572(x)
- else
- fun_l25_n203(x)
- end
-end
-
-def fun_l24_n671(x)
- if (x < 1)
- fun_l25_n96(x)
- else
- fun_l25_n862(x)
- end
-end
-
-def fun_l24_n672(x)
- if (x < 1)
- fun_l25_n979(x)
- else
- fun_l25_n484(x)
- end
-end
-
-def fun_l24_n673(x)
- if (x < 1)
- fun_l25_n20(x)
- else
- fun_l25_n201(x)
- end
-end
-
-def fun_l24_n674(x)
- if (x < 1)
- fun_l25_n109(x)
- else
- fun_l25_n788(x)
- end
-end
-
-def fun_l24_n675(x)
- if (x < 1)
- fun_l25_n792(x)
- else
- fun_l25_n132(x)
- end
-end
-
-def fun_l24_n676(x)
- if (x < 1)
- fun_l25_n786(x)
- else
- fun_l25_n77(x)
- end
-end
-
-def fun_l24_n677(x)
- if (x < 1)
- fun_l25_n21(x)
- else
- fun_l25_n96(x)
- end
-end
-
-def fun_l24_n678(x)
- if (x < 1)
- fun_l25_n299(x)
- else
- fun_l25_n649(x)
- end
-end
-
-def fun_l24_n679(x)
- if (x < 1)
- fun_l25_n247(x)
- else
- fun_l25_n607(x)
- end
-end
-
-def fun_l24_n680(x)
- if (x < 1)
- fun_l25_n480(x)
- else
- fun_l25_n471(x)
- end
-end
-
-def fun_l24_n681(x)
- if (x < 1)
- fun_l25_n277(x)
- else
- fun_l25_n460(x)
- end
-end
-
-def fun_l24_n682(x)
- if (x < 1)
- fun_l25_n573(x)
- else
- fun_l25_n193(x)
- end
-end
-
-def fun_l24_n683(x)
- if (x < 1)
- fun_l25_n741(x)
- else
- fun_l25_n441(x)
- end
-end
-
-def fun_l24_n684(x)
- if (x < 1)
- fun_l25_n821(x)
- else
- fun_l25_n24(x)
- end
-end
-
-def fun_l24_n685(x)
- if (x < 1)
- fun_l25_n150(x)
- else
- fun_l25_n530(x)
- end
-end
-
-def fun_l24_n686(x)
- if (x < 1)
- fun_l25_n564(x)
- else
- fun_l25_n26(x)
- end
-end
-
-def fun_l24_n687(x)
- if (x < 1)
- fun_l25_n872(x)
- else
- fun_l25_n522(x)
- end
-end
-
-def fun_l24_n688(x)
- if (x < 1)
- fun_l25_n963(x)
- else
- fun_l25_n422(x)
- end
-end
-
-def fun_l24_n689(x)
- if (x < 1)
- fun_l25_n418(x)
- else
- fun_l25_n900(x)
- end
-end
-
-def fun_l24_n690(x)
- if (x < 1)
- fun_l25_n117(x)
- else
- fun_l25_n900(x)
- end
-end
-
-def fun_l24_n691(x)
- if (x < 1)
- fun_l25_n412(x)
- else
- fun_l25_n466(x)
- end
-end
-
-def fun_l24_n692(x)
- if (x < 1)
- fun_l25_n761(x)
- else
- fun_l25_n190(x)
- end
-end
-
-def fun_l24_n693(x)
- if (x < 1)
- fun_l25_n875(x)
- else
- fun_l25_n222(x)
- end
-end
-
-def fun_l24_n694(x)
- if (x < 1)
- fun_l25_n405(x)
- else
- fun_l25_n66(x)
- end
-end
-
-def fun_l24_n695(x)
- if (x < 1)
- fun_l25_n570(x)
- else
- fun_l25_n801(x)
- end
-end
-
-def fun_l24_n696(x)
- if (x < 1)
- fun_l25_n591(x)
- else
- fun_l25_n121(x)
- end
-end
-
-def fun_l24_n697(x)
- if (x < 1)
- fun_l25_n27(x)
- else
- fun_l25_n610(x)
- end
-end
-
-def fun_l24_n698(x)
- if (x < 1)
- fun_l25_n843(x)
- else
- fun_l25_n488(x)
- end
-end
-
-def fun_l24_n699(x)
- if (x < 1)
- fun_l25_n946(x)
- else
- fun_l25_n164(x)
- end
-end
-
-def fun_l24_n700(x)
- if (x < 1)
- fun_l25_n424(x)
- else
- fun_l25_n614(x)
- end
-end
-
-def fun_l24_n701(x)
- if (x < 1)
- fun_l25_n692(x)
- else
- fun_l25_n893(x)
- end
-end
-
-def fun_l24_n702(x)
- if (x < 1)
- fun_l25_n39(x)
- else
- fun_l25_n274(x)
- end
-end
-
-def fun_l24_n703(x)
- if (x < 1)
- fun_l25_n814(x)
- else
- fun_l25_n281(x)
- end
-end
-
-def fun_l24_n704(x)
- if (x < 1)
- fun_l25_n670(x)
- else
- fun_l25_n882(x)
- end
-end
-
-def fun_l24_n705(x)
- if (x < 1)
- fun_l25_n498(x)
- else
- fun_l25_n881(x)
- end
-end
-
-def fun_l24_n706(x)
- if (x < 1)
- fun_l25_n193(x)
- else
- fun_l25_n10(x)
- end
-end
-
-def fun_l24_n707(x)
- if (x < 1)
- fun_l25_n531(x)
- else
- fun_l25_n870(x)
- end
-end
-
-def fun_l24_n708(x)
- if (x < 1)
- fun_l25_n106(x)
- else
- fun_l25_n692(x)
- end
-end
-
-def fun_l24_n709(x)
- if (x < 1)
- fun_l25_n484(x)
- else
- fun_l25_n700(x)
- end
-end
-
-def fun_l24_n710(x)
- if (x < 1)
- fun_l25_n699(x)
- else
- fun_l25_n117(x)
- end
-end
-
-def fun_l24_n711(x)
- if (x < 1)
- fun_l25_n138(x)
- else
- fun_l25_n532(x)
- end
-end
-
-def fun_l24_n712(x)
- if (x < 1)
- fun_l25_n468(x)
- else
- fun_l25_n350(x)
- end
-end
-
-def fun_l24_n713(x)
- if (x < 1)
- fun_l25_n906(x)
- else
- fun_l25_n25(x)
- end
-end
-
-def fun_l24_n714(x)
- if (x < 1)
- fun_l25_n23(x)
- else
- fun_l25_n745(x)
- end
-end
-
-def fun_l24_n715(x)
- if (x < 1)
- fun_l25_n917(x)
- else
- fun_l25_n942(x)
- end
-end
-
-def fun_l24_n716(x)
- if (x < 1)
- fun_l25_n986(x)
- else
- fun_l25_n605(x)
- end
-end
-
-def fun_l24_n717(x)
- if (x < 1)
- fun_l25_n771(x)
- else
- fun_l25_n100(x)
- end
-end
-
-def fun_l24_n718(x)
- if (x < 1)
- fun_l25_n994(x)
- else
- fun_l25_n249(x)
- end
-end
-
-def fun_l24_n719(x)
- if (x < 1)
- fun_l25_n368(x)
- else
- fun_l25_n657(x)
- end
-end
-
-def fun_l24_n720(x)
- if (x < 1)
- fun_l25_n856(x)
- else
- fun_l25_n650(x)
- end
-end
-
-def fun_l24_n721(x)
- if (x < 1)
- fun_l25_n667(x)
- else
- fun_l25_n609(x)
- end
-end
-
-def fun_l24_n722(x)
- if (x < 1)
- fun_l25_n353(x)
- else
- fun_l25_n665(x)
- end
-end
-
-def fun_l24_n723(x)
- if (x < 1)
- fun_l25_n520(x)
- else
- fun_l25_n771(x)
- end
-end
-
-def fun_l24_n724(x)
- if (x < 1)
- fun_l25_n636(x)
- else
- fun_l25_n34(x)
- end
-end
-
-def fun_l24_n725(x)
- if (x < 1)
- fun_l25_n222(x)
- else
- fun_l25_n444(x)
- end
-end
-
-def fun_l24_n726(x)
- if (x < 1)
- fun_l25_n519(x)
- else
- fun_l25_n675(x)
- end
-end
-
-def fun_l24_n727(x)
- if (x < 1)
- fun_l25_n739(x)
- else
- fun_l25_n910(x)
- end
-end
-
-def fun_l24_n728(x)
- if (x < 1)
- fun_l25_n669(x)
- else
- fun_l25_n645(x)
- end
-end
-
-def fun_l24_n729(x)
- if (x < 1)
- fun_l25_n358(x)
- else
- fun_l25_n316(x)
- end
-end
-
-def fun_l24_n730(x)
- if (x < 1)
- fun_l25_n614(x)
- else
- fun_l25_n484(x)
- end
-end
-
-def fun_l24_n731(x)
- if (x < 1)
- fun_l25_n640(x)
- else
- fun_l25_n613(x)
- end
-end
-
-def fun_l24_n732(x)
- if (x < 1)
- fun_l25_n16(x)
- else
- fun_l25_n596(x)
- end
-end
-
-def fun_l24_n733(x)
- if (x < 1)
- fun_l25_n780(x)
- else
- fun_l25_n673(x)
- end
-end
-
-def fun_l24_n734(x)
- if (x < 1)
- fun_l25_n999(x)
- else
- fun_l25_n210(x)
- end
-end
-
-def fun_l24_n735(x)
- if (x < 1)
- fun_l25_n915(x)
- else
- fun_l25_n788(x)
- end
-end
-
-def fun_l24_n736(x)
- if (x < 1)
- fun_l25_n484(x)
- else
- fun_l25_n369(x)
- end
-end
-
-def fun_l24_n737(x)
- if (x < 1)
- fun_l25_n851(x)
- else
- fun_l25_n674(x)
- end
-end
-
-def fun_l24_n738(x)
- if (x < 1)
- fun_l25_n830(x)
- else
- fun_l25_n382(x)
- end
-end
-
-def fun_l24_n739(x)
- if (x < 1)
- fun_l25_n861(x)
- else
- fun_l25_n482(x)
- end
-end
-
-def fun_l24_n740(x)
- if (x < 1)
- fun_l25_n244(x)
- else
- fun_l25_n414(x)
- end
-end
-
-def fun_l24_n741(x)
- if (x < 1)
- fun_l25_n829(x)
- else
- fun_l25_n846(x)
- end
-end
-
-def fun_l24_n742(x)
- if (x < 1)
- fun_l25_n197(x)
- else
- fun_l25_n943(x)
- end
-end
-
-def fun_l24_n743(x)
- if (x < 1)
- fun_l25_n290(x)
- else
- fun_l25_n394(x)
- end
-end
-
-def fun_l24_n744(x)
- if (x < 1)
- fun_l25_n965(x)
- else
- fun_l25_n987(x)
- end
-end
-
-def fun_l24_n745(x)
- if (x < 1)
- fun_l25_n104(x)
- else
- fun_l25_n369(x)
- end
-end
-
-def fun_l24_n746(x)
- if (x < 1)
- fun_l25_n880(x)
- else
- fun_l25_n541(x)
- end
-end
-
-def fun_l24_n747(x)
- if (x < 1)
- fun_l25_n345(x)
- else
- fun_l25_n155(x)
- end
-end
-
-def fun_l24_n748(x)
- if (x < 1)
- fun_l25_n803(x)
- else
- fun_l25_n383(x)
- end
-end
-
-def fun_l24_n749(x)
- if (x < 1)
- fun_l25_n848(x)
- else
- fun_l25_n340(x)
- end
-end
-
-def fun_l24_n750(x)
- if (x < 1)
- fun_l25_n197(x)
- else
- fun_l25_n313(x)
- end
-end
-
-def fun_l24_n751(x)
- if (x < 1)
- fun_l25_n253(x)
- else
- fun_l25_n99(x)
- end
-end
-
-def fun_l24_n752(x)
- if (x < 1)
- fun_l25_n873(x)
- else
- fun_l25_n347(x)
- end
-end
-
-def fun_l24_n753(x)
- if (x < 1)
- fun_l25_n849(x)
- else
- fun_l25_n627(x)
- end
-end
-
-def fun_l24_n754(x)
- if (x < 1)
- fun_l25_n817(x)
- else
- fun_l25_n441(x)
- end
-end
-
-def fun_l24_n755(x)
- if (x < 1)
- fun_l25_n235(x)
- else
- fun_l25_n602(x)
- end
-end
-
-def fun_l24_n756(x)
- if (x < 1)
- fun_l25_n950(x)
- else
- fun_l25_n516(x)
- end
-end
-
-def fun_l24_n757(x)
- if (x < 1)
- fun_l25_n646(x)
- else
- fun_l25_n996(x)
- end
-end
-
-def fun_l24_n758(x)
- if (x < 1)
- fun_l25_n27(x)
- else
- fun_l25_n650(x)
- end
-end
-
-def fun_l24_n759(x)
- if (x < 1)
- fun_l25_n290(x)
- else
- fun_l25_n852(x)
- end
-end
-
-def fun_l24_n760(x)
- if (x < 1)
- fun_l25_n118(x)
- else
- fun_l25_n871(x)
- end
-end
-
-def fun_l24_n761(x)
- if (x < 1)
- fun_l25_n372(x)
- else
- fun_l25_n537(x)
- end
-end
-
-def fun_l24_n762(x)
- if (x < 1)
- fun_l25_n124(x)
- else
- fun_l25_n939(x)
- end
-end
-
-def fun_l24_n763(x)
- if (x < 1)
- fun_l25_n163(x)
- else
- fun_l25_n787(x)
- end
-end
-
-def fun_l24_n764(x)
- if (x < 1)
- fun_l25_n485(x)
- else
- fun_l25_n753(x)
- end
-end
-
-def fun_l24_n765(x)
- if (x < 1)
- fun_l25_n181(x)
- else
- fun_l25_n595(x)
- end
-end
-
-def fun_l24_n766(x)
- if (x < 1)
- fun_l25_n909(x)
- else
- fun_l25_n734(x)
- end
-end
-
-def fun_l24_n767(x)
- if (x < 1)
- fun_l25_n980(x)
- else
- fun_l25_n673(x)
- end
-end
-
-def fun_l24_n768(x)
- if (x < 1)
- fun_l25_n756(x)
- else
- fun_l25_n429(x)
- end
-end
-
-def fun_l24_n769(x)
- if (x < 1)
- fun_l25_n301(x)
- else
- fun_l25_n197(x)
- end
-end
-
-def fun_l24_n770(x)
- if (x < 1)
- fun_l25_n977(x)
- else
- fun_l25_n569(x)
- end
-end
-
-def fun_l24_n771(x)
- if (x < 1)
- fun_l25_n829(x)
- else
- fun_l25_n34(x)
- end
-end
-
-def fun_l24_n772(x)
- if (x < 1)
- fun_l25_n601(x)
- else
- fun_l25_n762(x)
- end
-end
-
-def fun_l24_n773(x)
- if (x < 1)
- fun_l25_n790(x)
- else
- fun_l25_n282(x)
- end
-end
-
-def fun_l24_n774(x)
- if (x < 1)
- fun_l25_n464(x)
- else
- fun_l25_n814(x)
- end
-end
-
-def fun_l24_n775(x)
- if (x < 1)
- fun_l25_n562(x)
- else
- fun_l25_n543(x)
- end
-end
-
-def fun_l24_n776(x)
- if (x < 1)
- fun_l25_n869(x)
- else
- fun_l25_n857(x)
- end
-end
-
-def fun_l24_n777(x)
- if (x < 1)
- fun_l25_n206(x)
- else
- fun_l25_n369(x)
- end
-end
-
-def fun_l24_n778(x)
- if (x < 1)
- fun_l25_n43(x)
- else
- fun_l25_n405(x)
- end
-end
-
-def fun_l24_n779(x)
- if (x < 1)
- fun_l25_n116(x)
- else
- fun_l25_n644(x)
- end
-end
-
-def fun_l24_n780(x)
- if (x < 1)
- fun_l25_n455(x)
- else
- fun_l25_n174(x)
- end
-end
-
-def fun_l24_n781(x)
- if (x < 1)
- fun_l25_n234(x)
- else
- fun_l25_n887(x)
- end
-end
-
-def fun_l24_n782(x)
- if (x < 1)
- fun_l25_n157(x)
- else
- fun_l25_n459(x)
- end
-end
-
-def fun_l24_n783(x)
- if (x < 1)
- fun_l25_n441(x)
- else
- fun_l25_n830(x)
- end
-end
-
-def fun_l24_n784(x)
- if (x < 1)
- fun_l25_n908(x)
- else
- fun_l25_n363(x)
- end
-end
-
-def fun_l24_n785(x)
- if (x < 1)
- fun_l25_n495(x)
- else
- fun_l25_n790(x)
- end
-end
-
-def fun_l24_n786(x)
- if (x < 1)
- fun_l25_n365(x)
- else
- fun_l25_n561(x)
- end
-end
-
-def fun_l24_n787(x)
- if (x < 1)
- fun_l25_n419(x)
- else
- fun_l25_n471(x)
- end
-end
-
-def fun_l24_n788(x)
- if (x < 1)
- fun_l25_n568(x)
- else
- fun_l25_n807(x)
- end
-end
-
-def fun_l24_n789(x)
- if (x < 1)
- fun_l25_n148(x)
- else
- fun_l25_n476(x)
- end
-end
-
-def fun_l24_n790(x)
- if (x < 1)
- fun_l25_n470(x)
- else
- fun_l25_n662(x)
- end
-end
-
-def fun_l24_n791(x)
- if (x < 1)
- fun_l25_n307(x)
- else
- fun_l25_n828(x)
- end
-end
-
-def fun_l24_n792(x)
- if (x < 1)
- fun_l25_n227(x)
- else
- fun_l25_n802(x)
- end
-end
-
-def fun_l24_n793(x)
- if (x < 1)
- fun_l25_n891(x)
- else
- fun_l25_n561(x)
- end
-end
-
-def fun_l24_n794(x)
- if (x < 1)
- fun_l25_n465(x)
- else
- fun_l25_n805(x)
- end
-end
-
-def fun_l24_n795(x)
- if (x < 1)
- fun_l25_n869(x)
- else
- fun_l25_n250(x)
- end
-end
-
-def fun_l24_n796(x)
- if (x < 1)
- fun_l25_n479(x)
- else
- fun_l25_n996(x)
- end
-end
-
-def fun_l24_n797(x)
- if (x < 1)
- fun_l25_n773(x)
- else
- fun_l25_n294(x)
- end
-end
-
-def fun_l24_n798(x)
- if (x < 1)
- fun_l25_n601(x)
- else
- fun_l25_n259(x)
- end
-end
-
-def fun_l24_n799(x)
- if (x < 1)
- fun_l25_n334(x)
- else
- fun_l25_n696(x)
- end
-end
-
-def fun_l24_n800(x)
- if (x < 1)
- fun_l25_n6(x)
- else
- fun_l25_n184(x)
- end
-end
-
-def fun_l24_n801(x)
- if (x < 1)
- fun_l25_n345(x)
- else
- fun_l25_n476(x)
- end
-end
-
-def fun_l24_n802(x)
- if (x < 1)
- fun_l25_n957(x)
- else
- fun_l25_n893(x)
- end
-end
-
-def fun_l24_n803(x)
- if (x < 1)
- fun_l25_n541(x)
- else
- fun_l25_n562(x)
- end
-end
-
-def fun_l24_n804(x)
- if (x < 1)
- fun_l25_n403(x)
- else
- fun_l25_n398(x)
- end
-end
-
-def fun_l24_n805(x)
- if (x < 1)
- fun_l25_n759(x)
- else
- fun_l25_n861(x)
- end
-end
-
-def fun_l24_n806(x)
- if (x < 1)
- fun_l25_n145(x)
- else
- fun_l25_n460(x)
- end
-end
-
-def fun_l24_n807(x)
- if (x < 1)
- fun_l25_n960(x)
- else
- fun_l25_n865(x)
- end
-end
-
-def fun_l24_n808(x)
- if (x < 1)
- fun_l25_n386(x)
- else
- fun_l25_n443(x)
- end
-end
-
-def fun_l24_n809(x)
- if (x < 1)
- fun_l25_n789(x)
- else
- fun_l25_n295(x)
- end
-end
-
-def fun_l24_n810(x)
- if (x < 1)
- fun_l25_n985(x)
- else
- fun_l25_n15(x)
- end
-end
-
-def fun_l24_n811(x)
- if (x < 1)
- fun_l25_n976(x)
- else
- fun_l25_n636(x)
- end
-end
-
-def fun_l24_n812(x)
- if (x < 1)
- fun_l25_n183(x)
- else
- fun_l25_n146(x)
- end
-end
-
-def fun_l24_n813(x)
- if (x < 1)
- fun_l25_n457(x)
- else
- fun_l25_n141(x)
- end
-end
-
-def fun_l24_n814(x)
- if (x < 1)
- fun_l25_n1(x)
- else
- fun_l25_n708(x)
- end
-end
-
-def fun_l24_n815(x)
- if (x < 1)
- fun_l25_n696(x)
- else
- fun_l25_n898(x)
- end
-end
-
-def fun_l24_n816(x)
- if (x < 1)
- fun_l25_n423(x)
- else
- fun_l25_n250(x)
- end
-end
-
-def fun_l24_n817(x)
- if (x < 1)
- fun_l25_n432(x)
- else
- fun_l25_n918(x)
- end
-end
-
-def fun_l24_n818(x)
- if (x < 1)
- fun_l25_n712(x)
- else
- fun_l25_n8(x)
- end
-end
-
-def fun_l24_n819(x)
- if (x < 1)
- fun_l25_n331(x)
- else
- fun_l25_n194(x)
- end
-end
-
-def fun_l24_n820(x)
- if (x < 1)
- fun_l25_n106(x)
- else
- fun_l25_n588(x)
- end
-end
-
-def fun_l24_n821(x)
- if (x < 1)
- fun_l25_n662(x)
- else
- fun_l25_n365(x)
- end
-end
-
-def fun_l24_n822(x)
- if (x < 1)
- fun_l25_n461(x)
- else
- fun_l25_n931(x)
- end
-end
-
-def fun_l24_n823(x)
- if (x < 1)
- fun_l25_n243(x)
- else
- fun_l25_n26(x)
- end
-end
-
-def fun_l24_n824(x)
- if (x < 1)
- fun_l25_n6(x)
- else
- fun_l25_n787(x)
- end
-end
-
-def fun_l24_n825(x)
- if (x < 1)
- fun_l25_n536(x)
- else
- fun_l25_n721(x)
- end
-end
-
-def fun_l24_n826(x)
- if (x < 1)
- fun_l25_n693(x)
- else
- fun_l25_n649(x)
- end
-end
-
-def fun_l24_n827(x)
- if (x < 1)
- fun_l25_n662(x)
- else
- fun_l25_n981(x)
- end
-end
-
-def fun_l24_n828(x)
- if (x < 1)
- fun_l25_n594(x)
- else
- fun_l25_n345(x)
- end
-end
-
-def fun_l24_n829(x)
- if (x < 1)
- fun_l25_n917(x)
- else
- fun_l25_n665(x)
- end
-end
-
-def fun_l24_n830(x)
- if (x < 1)
- fun_l25_n246(x)
- else
- fun_l25_n58(x)
- end
-end
-
-def fun_l24_n831(x)
- if (x < 1)
- fun_l25_n415(x)
- else
- fun_l25_n617(x)
- end
-end
-
-def fun_l24_n832(x)
- if (x < 1)
- fun_l25_n596(x)
- else
- fun_l25_n858(x)
- end
-end
-
-def fun_l24_n833(x)
- if (x < 1)
- fun_l25_n810(x)
- else
- fun_l25_n532(x)
- end
-end
-
-def fun_l24_n834(x)
- if (x < 1)
- fun_l25_n298(x)
- else
- fun_l25_n881(x)
- end
-end
-
-def fun_l24_n835(x)
- if (x < 1)
- fun_l25_n791(x)
- else
- fun_l25_n344(x)
- end
-end
-
-def fun_l24_n836(x)
- if (x < 1)
- fun_l25_n531(x)
- else
- fun_l25_n880(x)
- end
-end
-
-def fun_l24_n837(x)
- if (x < 1)
- fun_l25_n571(x)
- else
- fun_l25_n306(x)
- end
-end
-
-def fun_l24_n838(x)
- if (x < 1)
- fun_l25_n191(x)
- else
- fun_l25_n450(x)
- end
-end
-
-def fun_l24_n839(x)
- if (x < 1)
- fun_l25_n777(x)
- else
- fun_l25_n234(x)
- end
-end
-
-def fun_l24_n840(x)
- if (x < 1)
- fun_l25_n876(x)
- else
- fun_l25_n548(x)
- end
-end
-
-def fun_l24_n841(x)
- if (x < 1)
- fun_l25_n83(x)
- else
- fun_l25_n346(x)
- end
-end
-
-def fun_l24_n842(x)
- if (x < 1)
- fun_l25_n976(x)
- else
- fun_l25_n843(x)
- end
-end
-
-def fun_l24_n843(x)
- if (x < 1)
- fun_l25_n559(x)
- else
- fun_l25_n424(x)
- end
-end
-
-def fun_l24_n844(x)
- if (x < 1)
- fun_l25_n974(x)
- else
- fun_l25_n906(x)
- end
-end
-
-def fun_l24_n845(x)
- if (x < 1)
- fun_l25_n274(x)
- else
- fun_l25_n528(x)
- end
-end
-
-def fun_l24_n846(x)
- if (x < 1)
- fun_l25_n773(x)
- else
- fun_l25_n507(x)
- end
-end
-
-def fun_l24_n847(x)
- if (x < 1)
- fun_l25_n80(x)
- else
- fun_l25_n274(x)
- end
-end
-
-def fun_l24_n848(x)
- if (x < 1)
- fun_l25_n557(x)
- else
- fun_l25_n541(x)
- end
-end
-
-def fun_l24_n849(x)
- if (x < 1)
- fun_l25_n208(x)
- else
- fun_l25_n765(x)
- end
-end
-
-def fun_l24_n850(x)
- if (x < 1)
- fun_l25_n705(x)
- else
- fun_l25_n81(x)
- end
-end
-
-def fun_l24_n851(x)
- if (x < 1)
- fun_l25_n151(x)
- else
- fun_l25_n706(x)
- end
-end
-
-def fun_l24_n852(x)
- if (x < 1)
- fun_l25_n723(x)
- else
- fun_l25_n451(x)
- end
-end
-
-def fun_l24_n853(x)
- if (x < 1)
- fun_l25_n155(x)
- else
- fun_l25_n48(x)
- end
-end
-
-def fun_l24_n854(x)
- if (x < 1)
- fun_l25_n317(x)
- else
- fun_l25_n118(x)
- end
-end
-
-def fun_l24_n855(x)
- if (x < 1)
- fun_l25_n794(x)
- else
- fun_l25_n880(x)
- end
-end
-
-def fun_l24_n856(x)
- if (x < 1)
- fun_l25_n556(x)
- else
- fun_l25_n255(x)
- end
-end
-
-def fun_l24_n857(x)
- if (x < 1)
- fun_l25_n665(x)
- else
- fun_l25_n640(x)
- end
-end
-
-def fun_l24_n858(x)
- if (x < 1)
- fun_l25_n732(x)
- else
- fun_l25_n771(x)
- end
-end
-
-def fun_l24_n859(x)
- if (x < 1)
- fun_l25_n367(x)
- else
- fun_l25_n616(x)
- end
-end
-
-def fun_l24_n860(x)
- if (x < 1)
- fun_l25_n184(x)
- else
- fun_l25_n912(x)
- end
-end
-
-def fun_l24_n861(x)
- if (x < 1)
- fun_l25_n916(x)
- else
- fun_l25_n66(x)
- end
-end
-
-def fun_l24_n862(x)
- if (x < 1)
- fun_l25_n526(x)
- else
- fun_l25_n807(x)
- end
-end
-
-def fun_l24_n863(x)
- if (x < 1)
- fun_l25_n83(x)
- else
- fun_l25_n180(x)
- end
-end
-
-def fun_l24_n864(x)
- if (x < 1)
- fun_l25_n199(x)
- else
- fun_l25_n471(x)
- end
-end
-
-def fun_l24_n865(x)
- if (x < 1)
- fun_l25_n763(x)
- else
- fun_l25_n16(x)
- end
-end
-
-def fun_l24_n866(x)
- if (x < 1)
- fun_l25_n280(x)
- else
- fun_l25_n66(x)
- end
-end
-
-def fun_l24_n867(x)
- if (x < 1)
- fun_l25_n366(x)
- else
- fun_l25_n143(x)
- end
-end
-
-def fun_l24_n868(x)
- if (x < 1)
- fun_l25_n110(x)
- else
- fun_l25_n151(x)
- end
-end
-
-def fun_l24_n869(x)
- if (x < 1)
- fun_l25_n936(x)
- else
- fun_l25_n153(x)
- end
-end
-
-def fun_l24_n870(x)
- if (x < 1)
- fun_l25_n555(x)
- else
- fun_l25_n915(x)
- end
-end
-
-def fun_l24_n871(x)
- if (x < 1)
- fun_l25_n199(x)
- else
- fun_l25_n613(x)
- end
-end
-
-def fun_l24_n872(x)
- if (x < 1)
- fun_l25_n381(x)
- else
- fun_l25_n899(x)
- end
-end
-
-def fun_l24_n873(x)
- if (x < 1)
- fun_l25_n64(x)
- else
- fun_l25_n337(x)
- end
-end
-
-def fun_l24_n874(x)
- if (x < 1)
- fun_l25_n753(x)
- else
- fun_l25_n981(x)
- end
-end
-
-def fun_l24_n875(x)
- if (x < 1)
- fun_l25_n113(x)
- else
- fun_l25_n126(x)
- end
-end
-
-def fun_l24_n876(x)
- if (x < 1)
- fun_l25_n3(x)
- else
- fun_l25_n288(x)
- end
-end
-
-def fun_l24_n877(x)
- if (x < 1)
- fun_l25_n359(x)
- else
- fun_l25_n596(x)
- end
-end
-
-def fun_l24_n878(x)
- if (x < 1)
- fun_l25_n937(x)
- else
- fun_l25_n72(x)
- end
-end
-
-def fun_l24_n879(x)
- if (x < 1)
- fun_l25_n495(x)
- else
- fun_l25_n368(x)
- end
-end
-
-def fun_l24_n880(x)
- if (x < 1)
- fun_l25_n524(x)
- else
- fun_l25_n228(x)
- end
-end
-
-def fun_l24_n881(x)
- if (x < 1)
- fun_l25_n438(x)
- else
- fun_l25_n986(x)
- end
-end
-
-def fun_l24_n882(x)
- if (x < 1)
- fun_l25_n334(x)
- else
- fun_l25_n54(x)
- end
-end
-
-def fun_l24_n883(x)
- if (x < 1)
- fun_l25_n612(x)
- else
- fun_l25_n126(x)
- end
-end
-
-def fun_l24_n884(x)
- if (x < 1)
- fun_l25_n316(x)
- else
- fun_l25_n222(x)
- end
-end
-
-def fun_l24_n885(x)
- if (x < 1)
- fun_l25_n915(x)
- else
- fun_l25_n971(x)
- end
-end
-
-def fun_l24_n886(x)
- if (x < 1)
- fun_l25_n987(x)
- else
- fun_l25_n499(x)
- end
-end
-
-def fun_l24_n887(x)
- if (x < 1)
- fun_l25_n476(x)
- else
- fun_l25_n280(x)
- end
-end
-
-def fun_l24_n888(x)
- if (x < 1)
- fun_l25_n420(x)
- else
- fun_l25_n584(x)
- end
-end
-
-def fun_l24_n889(x)
- if (x < 1)
- fun_l25_n560(x)
- else
- fun_l25_n767(x)
- end
-end
-
-def fun_l24_n890(x)
- if (x < 1)
- fun_l25_n26(x)
- else
- fun_l25_n431(x)
- end
-end
-
-def fun_l24_n891(x)
- if (x < 1)
- fun_l25_n107(x)
- else
- fun_l25_n803(x)
- end
-end
-
-def fun_l24_n892(x)
- if (x < 1)
- fun_l25_n225(x)
- else
- fun_l25_n665(x)
- end
-end
-
-def fun_l24_n893(x)
- if (x < 1)
- fun_l25_n19(x)
- else
- fun_l25_n507(x)
- end
-end
-
-def fun_l24_n894(x)
- if (x < 1)
- fun_l25_n44(x)
- else
- fun_l25_n420(x)
- end
-end
-
-def fun_l24_n895(x)
- if (x < 1)
- fun_l25_n526(x)
- else
- fun_l25_n871(x)
- end
-end
-
-def fun_l24_n896(x)
- if (x < 1)
- fun_l25_n900(x)
- else
- fun_l25_n824(x)
- end
-end
-
-def fun_l24_n897(x)
- if (x < 1)
- fun_l25_n105(x)
- else
- fun_l25_n602(x)
- end
-end
-
-def fun_l24_n898(x)
- if (x < 1)
- fun_l25_n228(x)
- else
- fun_l25_n993(x)
- end
-end
-
-def fun_l24_n899(x)
- if (x < 1)
- fun_l25_n330(x)
- else
- fun_l25_n60(x)
- end
-end
-
-def fun_l24_n900(x)
- if (x < 1)
- fun_l25_n512(x)
- else
- fun_l25_n708(x)
- end
-end
-
-def fun_l24_n901(x)
- if (x < 1)
- fun_l25_n791(x)
- else
- fun_l25_n554(x)
- end
-end
-
-def fun_l24_n902(x)
- if (x < 1)
- fun_l25_n204(x)
- else
- fun_l25_n439(x)
- end
-end
-
-def fun_l24_n903(x)
- if (x < 1)
- fun_l25_n577(x)
- else
- fun_l25_n174(x)
- end
-end
-
-def fun_l24_n904(x)
- if (x < 1)
- fun_l25_n713(x)
- else
- fun_l25_n35(x)
- end
-end
-
-def fun_l24_n905(x)
- if (x < 1)
- fun_l25_n290(x)
- else
- fun_l25_n342(x)
- end
-end
-
-def fun_l24_n906(x)
- if (x < 1)
- fun_l25_n607(x)
- else
- fun_l25_n52(x)
- end
-end
-
-def fun_l24_n907(x)
- if (x < 1)
- fun_l25_n72(x)
- else
- fun_l25_n169(x)
- end
-end
-
-def fun_l24_n908(x)
- if (x < 1)
- fun_l25_n179(x)
- else
- fun_l25_n383(x)
- end
-end
-
-def fun_l24_n909(x)
- if (x < 1)
- fun_l25_n52(x)
- else
- fun_l25_n504(x)
- end
-end
-
-def fun_l24_n910(x)
- if (x < 1)
- fun_l25_n346(x)
- else
- fun_l25_n775(x)
- end
-end
-
-def fun_l24_n911(x)
- if (x < 1)
- fun_l25_n535(x)
- else
- fun_l25_n210(x)
- end
-end
-
-def fun_l24_n912(x)
- if (x < 1)
- fun_l25_n937(x)
- else
- fun_l25_n409(x)
- end
-end
-
-def fun_l24_n913(x)
- if (x < 1)
- fun_l25_n889(x)
- else
- fun_l25_n463(x)
- end
-end
-
-def fun_l24_n914(x)
- if (x < 1)
- fun_l25_n75(x)
- else
- fun_l25_n817(x)
- end
-end
-
-def fun_l24_n915(x)
- if (x < 1)
- fun_l25_n277(x)
- else
- fun_l25_n3(x)
- end
-end
-
-def fun_l24_n916(x)
- if (x < 1)
- fun_l25_n97(x)
- else
- fun_l25_n819(x)
- end
-end
-
-def fun_l24_n917(x)
- if (x < 1)
- fun_l25_n412(x)
- else
- fun_l25_n851(x)
- end
-end
-
-def fun_l24_n918(x)
- if (x < 1)
- fun_l25_n803(x)
- else
- fun_l25_n429(x)
- end
-end
-
-def fun_l24_n919(x)
- if (x < 1)
- fun_l25_n12(x)
- else
- fun_l25_n434(x)
- end
-end
-
-def fun_l24_n920(x)
- if (x < 1)
- fun_l25_n721(x)
- else
- fun_l25_n553(x)
- end
-end
-
-def fun_l24_n921(x)
- if (x < 1)
- fun_l25_n438(x)
- else
- fun_l25_n211(x)
- end
-end
-
-def fun_l24_n922(x)
- if (x < 1)
- fun_l25_n123(x)
- else
- fun_l25_n89(x)
- end
-end
-
-def fun_l24_n923(x)
- if (x < 1)
- fun_l25_n696(x)
- else
- fun_l25_n78(x)
- end
-end
-
-def fun_l24_n924(x)
- if (x < 1)
- fun_l25_n556(x)
- else
- fun_l25_n788(x)
- end
-end
-
-def fun_l24_n925(x)
- if (x < 1)
- fun_l25_n928(x)
- else
- fun_l25_n797(x)
- end
-end
-
-def fun_l24_n926(x)
- if (x < 1)
- fun_l25_n796(x)
- else
- fun_l25_n84(x)
- end
-end
-
-def fun_l24_n927(x)
- if (x < 1)
- fun_l25_n874(x)
- else
- fun_l25_n255(x)
- end
-end
-
-def fun_l24_n928(x)
- if (x < 1)
- fun_l25_n715(x)
- else
- fun_l25_n812(x)
- end
-end
-
-def fun_l24_n929(x)
- if (x < 1)
- fun_l25_n384(x)
- else
- fun_l25_n859(x)
- end
-end
-
-def fun_l24_n930(x)
- if (x < 1)
- fun_l25_n133(x)
- else
- fun_l25_n923(x)
- end
-end
-
-def fun_l24_n931(x)
- if (x < 1)
- fun_l25_n712(x)
- else
- fun_l25_n850(x)
- end
-end
-
-def fun_l24_n932(x)
- if (x < 1)
- fun_l25_n301(x)
- else
- fun_l25_n743(x)
- end
-end
-
-def fun_l24_n933(x)
- if (x < 1)
- fun_l25_n554(x)
- else
- fun_l25_n4(x)
- end
-end
-
-def fun_l24_n934(x)
- if (x < 1)
- fun_l25_n407(x)
- else
- fun_l25_n656(x)
- end
-end
-
-def fun_l24_n935(x)
- if (x < 1)
- fun_l25_n109(x)
- else
- fun_l25_n356(x)
- end
-end
-
-def fun_l24_n936(x)
- if (x < 1)
- fun_l25_n985(x)
- else
- fun_l25_n183(x)
- end
-end
-
-def fun_l24_n937(x)
- if (x < 1)
- fun_l25_n365(x)
- else
- fun_l25_n949(x)
- end
-end
-
-def fun_l24_n938(x)
- if (x < 1)
- fun_l25_n672(x)
- else
- fun_l25_n417(x)
- end
-end
-
-def fun_l24_n939(x)
- if (x < 1)
- fun_l25_n360(x)
- else
- fun_l25_n271(x)
- end
-end
-
-def fun_l24_n940(x)
- if (x < 1)
- fun_l25_n654(x)
- else
- fun_l25_n365(x)
- end
-end
-
-def fun_l24_n941(x)
- if (x < 1)
- fun_l25_n836(x)
- else
- fun_l25_n303(x)
- end
-end
-
-def fun_l24_n942(x)
- if (x < 1)
- fun_l25_n299(x)
- else
- fun_l25_n130(x)
- end
-end
-
-def fun_l24_n943(x)
- if (x < 1)
- fun_l25_n566(x)
- else
- fun_l25_n347(x)
- end
-end
-
-def fun_l24_n944(x)
- if (x < 1)
- fun_l25_n754(x)
- else
- fun_l25_n670(x)
- end
-end
-
-def fun_l24_n945(x)
- if (x < 1)
- fun_l25_n484(x)
- else
- fun_l25_n278(x)
- end
-end
-
-def fun_l24_n946(x)
- if (x < 1)
- fun_l25_n35(x)
- else
- fun_l25_n915(x)
- end
-end
-
-def fun_l24_n947(x)
- if (x < 1)
- fun_l25_n488(x)
- else
- fun_l25_n664(x)
- end
-end
-
-def fun_l24_n948(x)
- if (x < 1)
- fun_l25_n249(x)
- else
- fun_l25_n931(x)
- end
-end
-
-def fun_l24_n949(x)
- if (x < 1)
- fun_l25_n165(x)
- else
- fun_l25_n101(x)
- end
-end
-
-def fun_l24_n950(x)
- if (x < 1)
- fun_l25_n304(x)
- else
- fun_l25_n668(x)
- end
-end
-
-def fun_l24_n951(x)
- if (x < 1)
- fun_l25_n279(x)
- else
- fun_l25_n600(x)
- end
-end
-
-def fun_l24_n952(x)
- if (x < 1)
- fun_l25_n70(x)
- else
- fun_l25_n852(x)
- end
-end
-
-def fun_l24_n953(x)
- if (x < 1)
- fun_l25_n419(x)
- else
- fun_l25_n856(x)
- end
-end
-
-def fun_l24_n954(x)
- if (x < 1)
- fun_l25_n55(x)
- else
- fun_l25_n857(x)
- end
-end
-
-def fun_l24_n955(x)
- if (x < 1)
- fun_l25_n122(x)
- else
- fun_l25_n658(x)
- end
-end
-
-def fun_l24_n956(x)
- if (x < 1)
- fun_l25_n973(x)
- else
- fun_l25_n421(x)
- end
-end
-
-def fun_l24_n957(x)
- if (x < 1)
- fun_l25_n82(x)
- else
- fun_l25_n264(x)
- end
-end
-
-def fun_l24_n958(x)
- if (x < 1)
- fun_l25_n608(x)
- else
- fun_l25_n469(x)
- end
-end
-
-def fun_l24_n959(x)
- if (x < 1)
- fun_l25_n823(x)
- else
- fun_l25_n320(x)
- end
-end
-
-def fun_l24_n960(x)
- if (x < 1)
- fun_l25_n765(x)
- else
- fun_l25_n461(x)
- end
-end
-
-def fun_l24_n961(x)
- if (x < 1)
- fun_l25_n343(x)
- else
- fun_l25_n18(x)
- end
-end
-
-def fun_l24_n962(x)
- if (x < 1)
- fun_l25_n346(x)
- else
- fun_l25_n821(x)
- end
-end
-
-def fun_l24_n963(x)
- if (x < 1)
- fun_l25_n80(x)
- else
- fun_l25_n949(x)
- end
-end
-
-def fun_l24_n964(x)
- if (x < 1)
- fun_l25_n171(x)
- else
- fun_l25_n514(x)
- end
-end
-
-def fun_l24_n965(x)
- if (x < 1)
- fun_l25_n625(x)
- else
- fun_l25_n768(x)
- end
-end
-
-def fun_l24_n966(x)
- if (x < 1)
- fun_l25_n390(x)
- else
- fun_l25_n195(x)
- end
-end
-
-def fun_l24_n967(x)
- if (x < 1)
- fun_l25_n774(x)
- else
- fun_l25_n928(x)
- end
-end
-
-def fun_l24_n968(x)
- if (x < 1)
- fun_l25_n997(x)
- else
- fun_l25_n441(x)
- end
-end
-
-def fun_l24_n969(x)
- if (x < 1)
- fun_l25_n865(x)
- else
- fun_l25_n418(x)
- end
-end
-
-def fun_l24_n970(x)
- if (x < 1)
- fun_l25_n238(x)
- else
- fun_l25_n816(x)
- end
-end
-
-def fun_l24_n971(x)
- if (x < 1)
- fun_l25_n521(x)
- else
- fun_l25_n427(x)
- end
-end
-
-def fun_l24_n972(x)
- if (x < 1)
- fun_l25_n214(x)
- else
- fun_l25_n282(x)
- end
-end
-
-def fun_l24_n973(x)
- if (x < 1)
- fun_l25_n611(x)
- else
- fun_l25_n439(x)
- end
-end
-
-def fun_l24_n974(x)
- if (x < 1)
- fun_l25_n395(x)
- else
- fun_l25_n593(x)
- end
-end
-
-def fun_l24_n975(x)
- if (x < 1)
- fun_l25_n720(x)
- else
- fun_l25_n477(x)
- end
-end
-
-def fun_l24_n976(x)
- if (x < 1)
- fun_l25_n204(x)
- else
- fun_l25_n912(x)
- end
-end
-
-def fun_l24_n977(x)
- if (x < 1)
- fun_l25_n703(x)
- else
- fun_l25_n651(x)
- end
-end
-
-def fun_l24_n978(x)
- if (x < 1)
- fun_l25_n247(x)
- else
- fun_l25_n917(x)
- end
-end
-
-def fun_l24_n979(x)
- if (x < 1)
- fun_l25_n792(x)
- else
- fun_l25_n320(x)
- end
-end
-
-def fun_l24_n980(x)
- if (x < 1)
- fun_l25_n480(x)
- else
- fun_l25_n128(x)
- end
-end
-
-def fun_l24_n981(x)
- if (x < 1)
- fun_l25_n848(x)
- else
- fun_l25_n344(x)
- end
-end
-
-def fun_l24_n982(x)
- if (x < 1)
- fun_l25_n84(x)
- else
- fun_l25_n977(x)
- end
-end
-
-def fun_l24_n983(x)
- if (x < 1)
- fun_l25_n213(x)
- else
- fun_l25_n131(x)
- end
-end
-
-def fun_l24_n984(x)
- if (x < 1)
- fun_l25_n2(x)
- else
- fun_l25_n21(x)
- end
-end
-
-def fun_l24_n985(x)
- if (x < 1)
- fun_l25_n301(x)
- else
- fun_l25_n910(x)
- end
-end
-
-def fun_l24_n986(x)
- if (x < 1)
- fun_l25_n533(x)
- else
- fun_l25_n397(x)
- end
-end
-
-def fun_l24_n987(x)
- if (x < 1)
- fun_l25_n226(x)
- else
- fun_l25_n281(x)
- end
-end
-
-def fun_l24_n988(x)
- if (x < 1)
- fun_l25_n402(x)
- else
- fun_l25_n70(x)
- end
-end
-
-def fun_l24_n989(x)
- if (x < 1)
- fun_l25_n190(x)
- else
- fun_l25_n70(x)
- end
-end
-
-def fun_l24_n990(x)
- if (x < 1)
- fun_l25_n376(x)
- else
- fun_l25_n331(x)
- end
-end
-
-def fun_l24_n991(x)
- if (x < 1)
- fun_l25_n915(x)
- else
- fun_l25_n234(x)
- end
-end
-
-def fun_l24_n992(x)
- if (x < 1)
- fun_l25_n146(x)
- else
- fun_l25_n825(x)
- end
-end
-
-def fun_l24_n993(x)
- if (x < 1)
- fun_l25_n877(x)
- else
- fun_l25_n237(x)
- end
-end
-
-def fun_l24_n994(x)
- if (x < 1)
- fun_l25_n454(x)
- else
- fun_l25_n852(x)
- end
-end
-
-def fun_l24_n995(x)
- if (x < 1)
- fun_l25_n45(x)
- else
- fun_l25_n337(x)
- end
-end
-
-def fun_l24_n996(x)
- if (x < 1)
- fun_l25_n491(x)
- else
- fun_l25_n319(x)
- end
-end
-
-def fun_l24_n997(x)
- if (x < 1)
- fun_l25_n216(x)
- else
- fun_l25_n249(x)
- end
-end
-
-def fun_l24_n998(x)
- if (x < 1)
- fun_l25_n370(x)
- else
- fun_l25_n747(x)
- end
-end
-
-def fun_l24_n999(x)
- if (x < 1)
- fun_l25_n584(x)
- else
- fun_l25_n813(x)
- end
-end
-
-def fun_l25_n0(x)
- if (x < 1)
- fun_l26_n818(x)
- else
- fun_l26_n750(x)
- end
-end
-
-def fun_l25_n1(x)
- if (x < 1)
- fun_l26_n725(x)
- else
- fun_l26_n848(x)
- end
-end
-
-def fun_l25_n2(x)
- if (x < 1)
- fun_l26_n716(x)
- else
- fun_l26_n190(x)
- end
-end
-
-def fun_l25_n3(x)
- if (x < 1)
- fun_l26_n977(x)
- else
- fun_l26_n222(x)
- end
-end
-
-def fun_l25_n4(x)
- if (x < 1)
- fun_l26_n931(x)
- else
- fun_l26_n615(x)
- end
-end
-
-def fun_l25_n5(x)
- if (x < 1)
- fun_l26_n720(x)
- else
- fun_l26_n440(x)
- end
-end
-
-def fun_l25_n6(x)
- if (x < 1)
- fun_l26_n400(x)
- else
- fun_l26_n336(x)
- end
-end
-
-def fun_l25_n7(x)
- if (x < 1)
- fun_l26_n109(x)
- else
- fun_l26_n74(x)
- end
-end
-
-def fun_l25_n8(x)
- if (x < 1)
- fun_l26_n12(x)
- else
- fun_l26_n857(x)
- end
-end
-
-def fun_l25_n9(x)
- if (x < 1)
- fun_l26_n778(x)
- else
- fun_l26_n286(x)
- end
-end
-
-def fun_l25_n10(x)
- if (x < 1)
- fun_l26_n857(x)
- else
- fun_l26_n311(x)
- end
-end
-
-def fun_l25_n11(x)
- if (x < 1)
- fun_l26_n204(x)
- else
- fun_l26_n348(x)
- end
-end
-
-def fun_l25_n12(x)
- if (x < 1)
- fun_l26_n626(x)
- else
- fun_l26_n983(x)
- end
-end
-
-def fun_l25_n13(x)
- if (x < 1)
- fun_l26_n417(x)
- else
- fun_l26_n334(x)
- end
-end
-
-def fun_l25_n14(x)
- if (x < 1)
- fun_l26_n34(x)
- else
- fun_l26_n269(x)
- end
-end
-
-def fun_l25_n15(x)
- if (x < 1)
- fun_l26_n184(x)
- else
- fun_l26_n183(x)
- end
-end
-
-def fun_l25_n16(x)
- if (x < 1)
- fun_l26_n744(x)
- else
- fun_l26_n450(x)
- end
-end
-
-def fun_l25_n17(x)
- if (x < 1)
- fun_l26_n763(x)
- else
- fun_l26_n390(x)
- end
-end
-
-def fun_l25_n18(x)
- if (x < 1)
- fun_l26_n926(x)
- else
- fun_l26_n379(x)
- end
-end
-
-def fun_l25_n19(x)
- if (x < 1)
- fun_l26_n746(x)
- else
- fun_l26_n946(x)
- end
-end
-
-def fun_l25_n20(x)
- if (x < 1)
- fun_l26_n500(x)
- else
- fun_l26_n599(x)
- end
-end
-
-def fun_l25_n21(x)
- if (x < 1)
- fun_l26_n757(x)
- else
- fun_l26_n725(x)
- end
-end
-
-def fun_l25_n22(x)
- if (x < 1)
- fun_l26_n738(x)
- else
- fun_l26_n24(x)
- end
-end
-
-def fun_l25_n23(x)
- if (x < 1)
- fun_l26_n350(x)
- else
- fun_l26_n344(x)
- end
-end
-
-def fun_l25_n24(x)
- if (x < 1)
- fun_l26_n521(x)
- else
- fun_l26_n680(x)
- end
-end
-
-def fun_l25_n25(x)
- if (x < 1)
- fun_l26_n647(x)
- else
- fun_l26_n604(x)
- end
-end
-
-def fun_l25_n26(x)
- if (x < 1)
- fun_l26_n990(x)
- else
- fun_l26_n262(x)
- end
-end
-
-def fun_l25_n27(x)
- if (x < 1)
- fun_l26_n309(x)
- else
- fun_l26_n759(x)
- end
-end
-
-def fun_l25_n28(x)
- if (x < 1)
- fun_l26_n720(x)
- else
- fun_l26_n11(x)
- end
-end
-
-def fun_l25_n29(x)
- if (x < 1)
- fun_l26_n761(x)
- else
- fun_l26_n690(x)
- end
-end
-
-def fun_l25_n30(x)
- if (x < 1)
- fun_l26_n729(x)
- else
- fun_l26_n577(x)
- end
-end
-
-def fun_l25_n31(x)
- if (x < 1)
- fun_l26_n321(x)
- else
- fun_l26_n608(x)
- end
-end
-
-def fun_l25_n32(x)
- if (x < 1)
- fun_l26_n325(x)
- else
- fun_l26_n541(x)
- end
-end
-
-def fun_l25_n33(x)
- if (x < 1)
- fun_l26_n644(x)
- else
- fun_l26_n15(x)
- end
-end
-
-def fun_l25_n34(x)
- if (x < 1)
- fun_l26_n53(x)
- else
- fun_l26_n887(x)
- end
-end
-
-def fun_l25_n35(x)
- if (x < 1)
- fun_l26_n470(x)
- else
- fun_l26_n564(x)
- end
-end
-
-def fun_l25_n36(x)
- if (x < 1)
- fun_l26_n198(x)
- else
- fun_l26_n542(x)
- end
-end
-
-def fun_l25_n37(x)
- if (x < 1)
- fun_l26_n455(x)
- else
- fun_l26_n373(x)
- end
-end
-
-def fun_l25_n38(x)
- if (x < 1)
- fun_l26_n216(x)
- else
- fun_l26_n86(x)
- end
-end
-
-def fun_l25_n39(x)
- if (x < 1)
- fun_l26_n417(x)
- else
- fun_l26_n50(x)
- end
-end
-
-def fun_l25_n40(x)
- if (x < 1)
- fun_l26_n955(x)
- else
- fun_l26_n979(x)
- end
-end
-
-def fun_l25_n41(x)
- if (x < 1)
- fun_l26_n692(x)
- else
- fun_l26_n935(x)
- end
-end
-
-def fun_l25_n42(x)
- if (x < 1)
- fun_l26_n360(x)
- else
- fun_l26_n246(x)
- end
-end
-
-def fun_l25_n43(x)
- if (x < 1)
- fun_l26_n826(x)
- else
- fun_l26_n433(x)
- end
-end
-
-def fun_l25_n44(x)
- if (x < 1)
- fun_l26_n222(x)
- else
- fun_l26_n101(x)
- end
-end
-
-def fun_l25_n45(x)
- if (x < 1)
- fun_l26_n590(x)
- else
- fun_l26_n398(x)
- end
-end
-
-def fun_l25_n46(x)
- if (x < 1)
- fun_l26_n959(x)
- else
- fun_l26_n620(x)
- end
-end
-
-def fun_l25_n47(x)
- if (x < 1)
- fun_l26_n530(x)
- else
- fun_l26_n503(x)
- end
-end
-
-def fun_l25_n48(x)
- if (x < 1)
- fun_l26_n615(x)
- else
- fun_l26_n640(x)
- end
-end
-
-def fun_l25_n49(x)
- if (x < 1)
- fun_l26_n774(x)
- else
- fun_l26_n23(x)
- end
-end
-
-def fun_l25_n50(x)
- if (x < 1)
- fun_l26_n344(x)
- else
- fun_l26_n303(x)
- end
-end
-
-def fun_l25_n51(x)
- if (x < 1)
- fun_l26_n54(x)
- else
- fun_l26_n26(x)
- end
-end
-
-def fun_l25_n52(x)
- if (x < 1)
- fun_l26_n545(x)
- else
- fun_l26_n791(x)
- end
-end
-
-def fun_l25_n53(x)
- if (x < 1)
- fun_l26_n554(x)
- else
- fun_l26_n42(x)
- end
-end
-
-def fun_l25_n54(x)
- if (x < 1)
- fun_l26_n419(x)
- else
- fun_l26_n179(x)
- end
-end
-
-def fun_l25_n55(x)
- if (x < 1)
- fun_l26_n845(x)
- else
- fun_l26_n641(x)
- end
-end
-
-def fun_l25_n56(x)
- if (x < 1)
- fun_l26_n389(x)
- else
- fun_l26_n547(x)
- end
-end
-
-def fun_l25_n57(x)
- if (x < 1)
- fun_l26_n744(x)
- else
- fun_l26_n946(x)
- end
-end
-
-def fun_l25_n58(x)
- if (x < 1)
- fun_l26_n410(x)
- else
- fun_l26_n909(x)
- end
-end
-
-def fun_l25_n59(x)
- if (x < 1)
- fun_l26_n126(x)
- else
- fun_l26_n382(x)
- end
-end
-
-def fun_l25_n60(x)
- if (x < 1)
- fun_l26_n355(x)
- else
- fun_l26_n902(x)
- end
-end
-
-def fun_l25_n61(x)
- if (x < 1)
- fun_l26_n759(x)
- else
- fun_l26_n445(x)
- end
-end
-
-def fun_l25_n62(x)
- if (x < 1)
- fun_l26_n859(x)
- else
- fun_l26_n362(x)
- end
-end
-
-def fun_l25_n63(x)
- if (x < 1)
- fun_l26_n488(x)
- else
- fun_l26_n725(x)
- end
-end
-
-def fun_l25_n64(x)
- if (x < 1)
- fun_l26_n268(x)
- else
- fun_l26_n865(x)
- end
-end
-
-def fun_l25_n65(x)
- if (x < 1)
- fun_l26_n33(x)
- else
- fun_l26_n417(x)
- end
-end
-
-def fun_l25_n66(x)
- if (x < 1)
- fun_l26_n281(x)
- else
- fun_l26_n485(x)
- end
-end
-
-def fun_l25_n67(x)
- if (x < 1)
- fun_l26_n627(x)
- else
- fun_l26_n200(x)
- end
-end
-
-def fun_l25_n68(x)
- if (x < 1)
- fun_l26_n392(x)
- else
- fun_l26_n639(x)
- end
-end
-
-def fun_l25_n69(x)
- if (x < 1)
- fun_l26_n799(x)
- else
- fun_l26_n242(x)
- end
-end
-
-def fun_l25_n70(x)
- if (x < 1)
- fun_l26_n783(x)
- else
- fun_l26_n564(x)
- end
-end
-
-def fun_l25_n71(x)
- if (x < 1)
- fun_l26_n768(x)
- else
- fun_l26_n908(x)
- end
-end
-
-def fun_l25_n72(x)
- if (x < 1)
- fun_l26_n567(x)
- else
- fun_l26_n365(x)
- end
-end
-
-def fun_l25_n73(x)
- if (x < 1)
- fun_l26_n291(x)
- else
- fun_l26_n887(x)
- end
-end
-
-def fun_l25_n74(x)
- if (x < 1)
- fun_l26_n889(x)
- else
- fun_l26_n180(x)
- end
-end
-
-def fun_l25_n75(x)
- if (x < 1)
- fun_l26_n142(x)
- else
- fun_l26_n101(x)
- end
-end
-
-def fun_l25_n76(x)
- if (x < 1)
- fun_l26_n108(x)
- else
- fun_l26_n863(x)
- end
-end
-
-def fun_l25_n77(x)
- if (x < 1)
- fun_l26_n441(x)
- else
- fun_l26_n51(x)
- end
-end
-
-def fun_l25_n78(x)
- if (x < 1)
- fun_l26_n787(x)
- else
- fun_l26_n543(x)
- end
-end
-
-def fun_l25_n79(x)
- if (x < 1)
- fun_l26_n699(x)
- else
- fun_l26_n513(x)
- end
-end
-
-def fun_l25_n80(x)
- if (x < 1)
- fun_l26_n400(x)
- else
- fun_l26_n72(x)
- end
-end
-
-def fun_l25_n81(x)
- if (x < 1)
- fun_l26_n814(x)
- else
- fun_l26_n732(x)
- end
-end
-
-def fun_l25_n82(x)
- if (x < 1)
- fun_l26_n755(x)
- else
- fun_l26_n606(x)
- end
-end
-
-def fun_l25_n83(x)
- if (x < 1)
- fun_l26_n351(x)
- else
- fun_l26_n208(x)
- end
-end
-
-def fun_l25_n84(x)
- if (x < 1)
- fun_l26_n124(x)
- else
- fun_l26_n554(x)
- end
-end
-
-def fun_l25_n85(x)
- if (x < 1)
- fun_l26_n19(x)
- else
- fun_l26_n58(x)
- end
-end
-
-def fun_l25_n86(x)
- if (x < 1)
- fun_l26_n710(x)
- else
- fun_l26_n300(x)
- end
-end
-
-def fun_l25_n87(x)
- if (x < 1)
- fun_l26_n833(x)
- else
- fun_l26_n53(x)
- end
-end
-
-def fun_l25_n88(x)
- if (x < 1)
- fun_l26_n923(x)
- else
- fun_l26_n445(x)
- end
-end
-
-def fun_l25_n89(x)
- if (x < 1)
- fun_l26_n674(x)
- else
- fun_l26_n176(x)
- end
-end
-
-def fun_l25_n90(x)
- if (x < 1)
- fun_l26_n78(x)
- else
- fun_l26_n506(x)
- end
-end
-
-def fun_l25_n91(x)
- if (x < 1)
- fun_l26_n352(x)
- else
- fun_l26_n312(x)
- end
-end
-
-def fun_l25_n92(x)
- if (x < 1)
- fun_l26_n400(x)
- else
- fun_l26_n787(x)
- end
-end
-
-def fun_l25_n93(x)
- if (x < 1)
- fun_l26_n897(x)
- else
- fun_l26_n395(x)
- end
-end
-
-def fun_l25_n94(x)
- if (x < 1)
- fun_l26_n267(x)
- else
- fun_l26_n974(x)
- end
-end
-
-def fun_l25_n95(x)
- if (x < 1)
- fun_l26_n547(x)
- else
- fun_l26_n280(x)
- end
-end
-
-def fun_l25_n96(x)
- if (x < 1)
- fun_l26_n281(x)
- else
- fun_l26_n222(x)
- end
-end
-
-def fun_l25_n97(x)
- if (x < 1)
- fun_l26_n130(x)
- else
- fun_l26_n232(x)
- end
-end
-
-def fun_l25_n98(x)
- if (x < 1)
- fun_l26_n863(x)
- else
- fun_l26_n970(x)
- end
-end
-
-def fun_l25_n99(x)
- if (x < 1)
- fun_l26_n28(x)
- else
- fun_l26_n344(x)
- end
-end
-
-def fun_l25_n100(x)
- if (x < 1)
- fun_l26_n906(x)
- else
- fun_l26_n818(x)
- end
-end
-
-def fun_l25_n101(x)
- if (x < 1)
- fun_l26_n658(x)
- else
- fun_l26_n708(x)
- end
-end
-
-def fun_l25_n102(x)
- if (x < 1)
- fun_l26_n545(x)
- else
- fun_l26_n627(x)
- end
-end
-
-def fun_l25_n103(x)
- if (x < 1)
- fun_l26_n377(x)
- else
- fun_l26_n555(x)
- end
-end
-
-def fun_l25_n104(x)
- if (x < 1)
- fun_l26_n628(x)
- else
- fun_l26_n465(x)
- end
-end
-
-def fun_l25_n105(x)
- if (x < 1)
- fun_l26_n208(x)
- else
- fun_l26_n720(x)
- end
-end
-
-def fun_l25_n106(x)
- if (x < 1)
- fun_l26_n203(x)
- else
- fun_l26_n984(x)
- end
-end
-
-def fun_l25_n107(x)
- if (x < 1)
- fun_l26_n265(x)
- else
- fun_l26_n124(x)
- end
-end
-
-def fun_l25_n108(x)
- if (x < 1)
- fun_l26_n786(x)
- else
- fun_l26_n305(x)
- end
-end
-
-def fun_l25_n109(x)
- if (x < 1)
- fun_l26_n907(x)
- else
- fun_l26_n57(x)
- end
-end
-
-def fun_l25_n110(x)
- if (x < 1)
- fun_l26_n883(x)
- else
- fun_l26_n107(x)
- end
-end
-
-def fun_l25_n111(x)
- if (x < 1)
- fun_l26_n783(x)
- else
- fun_l26_n443(x)
- end
-end
-
-def fun_l25_n112(x)
- if (x < 1)
- fun_l26_n309(x)
- else
- fun_l26_n127(x)
- end
-end
-
-def fun_l25_n113(x)
- if (x < 1)
- fun_l26_n578(x)
- else
- fun_l26_n656(x)
- end
-end
-
-def fun_l25_n114(x)
- if (x < 1)
- fun_l26_n352(x)
- else
- fun_l26_n610(x)
- end
-end
-
-def fun_l25_n115(x)
- if (x < 1)
- fun_l26_n975(x)
- else
- fun_l26_n580(x)
- end
-end
-
-def fun_l25_n116(x)
- if (x < 1)
- fun_l26_n892(x)
- else
- fun_l26_n596(x)
- end
-end
-
-def fun_l25_n117(x)
- if (x < 1)
- fun_l26_n80(x)
- else
- fun_l26_n759(x)
- end
-end
-
-def fun_l25_n118(x)
- if (x < 1)
- fun_l26_n866(x)
- else
- fun_l26_n964(x)
- end
-end
-
-def fun_l25_n119(x)
- if (x < 1)
- fun_l26_n367(x)
- else
- fun_l26_n896(x)
- end
-end
-
-def fun_l25_n120(x)
- if (x < 1)
- fun_l26_n787(x)
- else
- fun_l26_n17(x)
- end
-end
-
-def fun_l25_n121(x)
- if (x < 1)
- fun_l26_n312(x)
- else
- fun_l26_n247(x)
- end
-end
-
-def fun_l25_n122(x)
- if (x < 1)
- fun_l26_n163(x)
- else
- fun_l26_n906(x)
- end
-end
-
-def fun_l25_n123(x)
- if (x < 1)
- fun_l26_n706(x)
- else
- fun_l26_n840(x)
- end
-end
-
-def fun_l25_n124(x)
- if (x < 1)
- fun_l26_n85(x)
- else
- fun_l26_n200(x)
- end
-end
-
-def fun_l25_n125(x)
- if (x < 1)
- fun_l26_n389(x)
- else
- fun_l26_n274(x)
- end
-end
-
-def fun_l25_n126(x)
- if (x < 1)
- fun_l26_n509(x)
- else
- fun_l26_n471(x)
- end
-end
-
-def fun_l25_n127(x)
- if (x < 1)
- fun_l26_n924(x)
- else
- fun_l26_n132(x)
- end
-end
-
-def fun_l25_n128(x)
- if (x < 1)
- fun_l26_n496(x)
- else
- fun_l26_n865(x)
- end
-end
-
-def fun_l25_n129(x)
- if (x < 1)
- fun_l26_n775(x)
- else
- fun_l26_n22(x)
- end
-end
-
-def fun_l25_n130(x)
- if (x < 1)
- fun_l26_n875(x)
- else
- fun_l26_n771(x)
- end
-end
-
-def fun_l25_n131(x)
- if (x < 1)
- fun_l26_n656(x)
- else
- fun_l26_n709(x)
- end
-end
-
-def fun_l25_n132(x)
- if (x < 1)
- fun_l26_n733(x)
- else
- fun_l26_n343(x)
- end
-end
-
-def fun_l25_n133(x)
- if (x < 1)
- fun_l26_n791(x)
- else
- fun_l26_n954(x)
- end
-end
-
-def fun_l25_n134(x)
- if (x < 1)
- fun_l26_n792(x)
- else
- fun_l26_n118(x)
- end
-end
-
-def fun_l25_n135(x)
- if (x < 1)
- fun_l26_n93(x)
- else
- fun_l26_n683(x)
- end
-end
-
-def fun_l25_n136(x)
- if (x < 1)
- fun_l26_n290(x)
- else
- fun_l26_n787(x)
- end
-end
-
-def fun_l25_n137(x)
- if (x < 1)
- fun_l26_n459(x)
- else
- fun_l26_n283(x)
- end
-end
-
-def fun_l25_n138(x)
- if (x < 1)
- fun_l26_n240(x)
- else
- fun_l26_n552(x)
- end
-end
-
-def fun_l25_n139(x)
- if (x < 1)
- fun_l26_n323(x)
- else
- fun_l26_n157(x)
- end
-end
-
-def fun_l25_n140(x)
- if (x < 1)
- fun_l26_n926(x)
- else
- fun_l26_n446(x)
- end
-end
-
-def fun_l25_n141(x)
- if (x < 1)
- fun_l26_n382(x)
- else
- fun_l26_n317(x)
- end
-end
-
-def fun_l25_n142(x)
- if (x < 1)
- fun_l26_n296(x)
- else
- fun_l26_n672(x)
- end
-end
-
-def fun_l25_n143(x)
- if (x < 1)
- fun_l26_n313(x)
- else
- fun_l26_n222(x)
- end
-end
-
-def fun_l25_n144(x)
- if (x < 1)
- fun_l26_n25(x)
- else
- fun_l26_n260(x)
- end
-end
-
-def fun_l25_n145(x)
- if (x < 1)
- fun_l26_n457(x)
- else
- fun_l26_n876(x)
- end
-end
-
-def fun_l25_n146(x)
- if (x < 1)
- fun_l26_n503(x)
- else
- fun_l26_n850(x)
- end
-end
-
-def fun_l25_n147(x)
- if (x < 1)
- fun_l26_n811(x)
- else
- fun_l26_n293(x)
- end
-end
-
-def fun_l25_n148(x)
- if (x < 1)
- fun_l26_n433(x)
- else
- fun_l26_n582(x)
- end
-end
-
-def fun_l25_n149(x)
- if (x < 1)
- fun_l26_n860(x)
- else
- fun_l26_n663(x)
- end
-end
-
-def fun_l25_n150(x)
- if (x < 1)
- fun_l26_n293(x)
- else
- fun_l26_n341(x)
- end
-end
-
-def fun_l25_n151(x)
- if (x < 1)
- fun_l26_n187(x)
- else
- fun_l26_n430(x)
- end
-end
-
-def fun_l25_n152(x)
- if (x < 1)
- fun_l26_n914(x)
- else
- fun_l26_n250(x)
- end
-end
-
-def fun_l25_n153(x)
- if (x < 1)
- fun_l26_n370(x)
- else
- fun_l26_n378(x)
- end
-end
-
-def fun_l25_n154(x)
- if (x < 1)
- fun_l26_n238(x)
- else
- fun_l26_n743(x)
- end
-end
-
-def fun_l25_n155(x)
- if (x < 1)
- fun_l26_n149(x)
- else
- fun_l26_n556(x)
- end
-end
-
-def fun_l25_n156(x)
- if (x < 1)
- fun_l26_n530(x)
- else
- fun_l26_n543(x)
- end
-end
-
-def fun_l25_n157(x)
- if (x < 1)
- fun_l26_n230(x)
- else
- fun_l26_n600(x)
- end
-end
-
-def fun_l25_n158(x)
- if (x < 1)
- fun_l26_n110(x)
- else
- fun_l26_n954(x)
- end
-end
-
-def fun_l25_n159(x)
- if (x < 1)
- fun_l26_n952(x)
- else
- fun_l26_n110(x)
- end
-end
-
-def fun_l25_n160(x)
- if (x < 1)
- fun_l26_n525(x)
- else
- fun_l26_n435(x)
- end
-end
-
-def fun_l25_n161(x)
- if (x < 1)
- fun_l26_n511(x)
- else
- fun_l26_n10(x)
- end
-end
-
-def fun_l25_n162(x)
- if (x < 1)
- fun_l26_n755(x)
- else
- fun_l26_n567(x)
- end
-end
-
-def fun_l25_n163(x)
- if (x < 1)
- fun_l26_n618(x)
- else
- fun_l26_n249(x)
- end
-end
-
-def fun_l25_n164(x)
- if (x < 1)
- fun_l26_n803(x)
- else
- fun_l26_n512(x)
- end
-end
-
-def fun_l25_n165(x)
- if (x < 1)
- fun_l26_n234(x)
- else
- fun_l26_n806(x)
- end
-end
-
-def fun_l25_n166(x)
- if (x < 1)
- fun_l26_n442(x)
- else
- fun_l26_n904(x)
- end
-end
-
-def fun_l25_n167(x)
- if (x < 1)
- fun_l26_n369(x)
- else
- fun_l26_n910(x)
- end
-end
-
-def fun_l25_n168(x)
- if (x < 1)
- fun_l26_n107(x)
- else
- fun_l26_n125(x)
- end
-end
-
-def fun_l25_n169(x)
- if (x < 1)
- fun_l26_n415(x)
- else
- fun_l26_n37(x)
- end
-end
-
-def fun_l25_n170(x)
- if (x < 1)
- fun_l26_n315(x)
- else
- fun_l26_n977(x)
- end
-end
-
-def fun_l25_n171(x)
- if (x < 1)
- fun_l26_n106(x)
- else
- fun_l26_n908(x)
- end
-end
-
-def fun_l25_n172(x)
- if (x < 1)
- fun_l26_n870(x)
- else
- fun_l26_n74(x)
- end
-end
-
-def fun_l25_n173(x)
- if (x < 1)
- fun_l26_n290(x)
- else
- fun_l26_n938(x)
- end
-end
-
-def fun_l25_n174(x)
- if (x < 1)
- fun_l26_n908(x)
- else
- fun_l26_n215(x)
- end
-end
-
-def fun_l25_n175(x)
- if (x < 1)
- fun_l26_n671(x)
- else
- fun_l26_n976(x)
- end
-end
-
-def fun_l25_n176(x)
- if (x < 1)
- fun_l26_n727(x)
- else
- fun_l26_n559(x)
- end
-end
-
-def fun_l25_n177(x)
- if (x < 1)
- fun_l26_n684(x)
- else
- fun_l26_n353(x)
- end
-end
-
-def fun_l25_n178(x)
- if (x < 1)
- fun_l26_n353(x)
- else
- fun_l26_n327(x)
- end
-end
-
-def fun_l25_n179(x)
- if (x < 1)
- fun_l26_n393(x)
- else
- fun_l26_n774(x)
- end
-end
-
-def fun_l25_n180(x)
- if (x < 1)
- fun_l26_n500(x)
- else
- fun_l26_n23(x)
- end
-end
-
-def fun_l25_n181(x)
- if (x < 1)
- fun_l26_n49(x)
- else
- fun_l26_n504(x)
- end
-end
-
-def fun_l25_n182(x)
- if (x < 1)
- fun_l26_n631(x)
- else
- fun_l26_n147(x)
- end
-end
-
-def fun_l25_n183(x)
- if (x < 1)
- fun_l26_n353(x)
- else
- fun_l26_n64(x)
- end
-end
-
-def fun_l25_n184(x)
- if (x < 1)
- fun_l26_n215(x)
- else
- fun_l26_n416(x)
- end
-end
-
-def fun_l25_n185(x)
- if (x < 1)
- fun_l26_n701(x)
- else
- fun_l26_n809(x)
- end
-end
-
-def fun_l25_n186(x)
- if (x < 1)
- fun_l26_n267(x)
- else
- fun_l26_n197(x)
- end
-end
-
-def fun_l25_n187(x)
- if (x < 1)
- fun_l26_n436(x)
- else
- fun_l26_n609(x)
- end
-end
-
-def fun_l25_n188(x)
- if (x < 1)
- fun_l26_n993(x)
- else
- fun_l26_n740(x)
- end
-end
-
-def fun_l25_n189(x)
- if (x < 1)
- fun_l26_n742(x)
- else
- fun_l26_n507(x)
- end
-end
-
-def fun_l25_n190(x)
- if (x < 1)
- fun_l26_n850(x)
- else
- fun_l26_n394(x)
- end
-end
-
-def fun_l25_n191(x)
- if (x < 1)
- fun_l26_n494(x)
- else
- fun_l26_n219(x)
- end
-end
-
-def fun_l25_n192(x)
- if (x < 1)
- fun_l26_n477(x)
- else
- fun_l26_n115(x)
- end
-end
-
-def fun_l25_n193(x)
- if (x < 1)
- fun_l26_n629(x)
- else
- fun_l26_n772(x)
- end
-end
-
-def fun_l25_n194(x)
- if (x < 1)
- fun_l26_n995(x)
- else
- fun_l26_n75(x)
- end
-end
-
-def fun_l25_n195(x)
- if (x < 1)
- fun_l26_n34(x)
- else
- fun_l26_n590(x)
- end
-end
-
-def fun_l25_n196(x)
- if (x < 1)
- fun_l26_n767(x)
- else
- fun_l26_n468(x)
- end
-end
-
-def fun_l25_n197(x)
- if (x < 1)
- fun_l26_n883(x)
- else
- fun_l26_n757(x)
- end
-end
-
-def fun_l25_n198(x)
- if (x < 1)
- fun_l26_n687(x)
- else
- fun_l26_n288(x)
- end
-end
-
-def fun_l25_n199(x)
- if (x < 1)
- fun_l26_n328(x)
- else
- fun_l26_n556(x)
- end
-end
-
-def fun_l25_n200(x)
- if (x < 1)
- fun_l26_n894(x)
- else
- fun_l26_n854(x)
- end
-end
-
-def fun_l25_n201(x)
- if (x < 1)
- fun_l26_n343(x)
- else
- fun_l26_n889(x)
- end
-end
-
-def fun_l25_n202(x)
- if (x < 1)
- fun_l26_n430(x)
- else
- fun_l26_n935(x)
- end
-end
-
-def fun_l25_n203(x)
- if (x < 1)
- fun_l26_n384(x)
- else
- fun_l26_n37(x)
- end
-end
-
-def fun_l25_n204(x)
- if (x < 1)
- fun_l26_n821(x)
- else
- fun_l26_n509(x)
- end
-end
-
-def fun_l25_n205(x)
- if (x < 1)
- fun_l26_n985(x)
- else
- fun_l26_n877(x)
- end
-end
-
-def fun_l25_n206(x)
- if (x < 1)
- fun_l26_n184(x)
- else
- fun_l26_n568(x)
- end
-end
-
-def fun_l25_n207(x)
- if (x < 1)
- fun_l26_n753(x)
- else
- fun_l26_n922(x)
- end
-end
-
-def fun_l25_n208(x)
- if (x < 1)
- fun_l26_n454(x)
- else
- fun_l26_n499(x)
- end
-end
-
-def fun_l25_n209(x)
- if (x < 1)
- fun_l26_n695(x)
- else
- fun_l26_n181(x)
- end
-end
-
-def fun_l25_n210(x)
- if (x < 1)
- fun_l26_n139(x)
- else
- fun_l26_n456(x)
- end
-end
-
-def fun_l25_n211(x)
- if (x < 1)
- fun_l26_n745(x)
- else
- fun_l26_n447(x)
- end
-end
-
-def fun_l25_n212(x)
- if (x < 1)
- fun_l26_n785(x)
- else
- fun_l26_n946(x)
- end
-end
-
-def fun_l25_n213(x)
- if (x < 1)
- fun_l26_n161(x)
- else
- fun_l26_n283(x)
- end
-end
-
-def fun_l25_n214(x)
- if (x < 1)
- fun_l26_n16(x)
- else
- fun_l26_n450(x)
- end
-end
-
-def fun_l25_n215(x)
- if (x < 1)
- fun_l26_n818(x)
- else
- fun_l26_n2(x)
- end
-end
-
-def fun_l25_n216(x)
- if (x < 1)
- fun_l26_n242(x)
- else
- fun_l26_n691(x)
- end
-end
-
-def fun_l25_n217(x)
- if (x < 1)
- fun_l26_n18(x)
- else
- fun_l26_n522(x)
- end
-end
-
-def fun_l25_n218(x)
- if (x < 1)
- fun_l26_n87(x)
- else
- fun_l26_n888(x)
- end
-end
-
-def fun_l25_n219(x)
- if (x < 1)
- fun_l26_n317(x)
- else
- fun_l26_n593(x)
- end
-end
-
-def fun_l25_n220(x)
- if (x < 1)
- fun_l26_n650(x)
- else
- fun_l26_n258(x)
- end
-end
-
-def fun_l25_n221(x)
- if (x < 1)
- fun_l26_n381(x)
- else
- fun_l26_n500(x)
- end
-end
-
-def fun_l25_n222(x)
- if (x < 1)
- fun_l26_n607(x)
- else
- fun_l26_n138(x)
- end
-end
-
-def fun_l25_n223(x)
- if (x < 1)
- fun_l26_n595(x)
- else
- fun_l26_n657(x)
- end
-end
-
-def fun_l25_n224(x)
- if (x < 1)
- fun_l26_n166(x)
- else
- fun_l26_n420(x)
- end
-end
-
-def fun_l25_n225(x)
- if (x < 1)
- fun_l26_n744(x)
- else
- fun_l26_n684(x)
- end
-end
-
-def fun_l25_n226(x)
- if (x < 1)
- fun_l26_n225(x)
- else
- fun_l26_n264(x)
- end
-end
-
-def fun_l25_n227(x)
- if (x < 1)
- fun_l26_n140(x)
- else
- fun_l26_n387(x)
- end
-end
-
-def fun_l25_n228(x)
- if (x < 1)
- fun_l26_n563(x)
- else
- fun_l26_n83(x)
- end
-end
-
-def fun_l25_n229(x)
- if (x < 1)
- fun_l26_n392(x)
- else
- fun_l26_n130(x)
- end
-end
-
-def fun_l25_n230(x)
- if (x < 1)
- fun_l26_n687(x)
- else
- fun_l26_n970(x)
- end
-end
-
-def fun_l25_n231(x)
- if (x < 1)
- fun_l26_n328(x)
- else
- fun_l26_n809(x)
- end
-end
-
-def fun_l25_n232(x)
- if (x < 1)
- fun_l26_n963(x)
- else
- fun_l26_n429(x)
- end
-end
-
-def fun_l25_n233(x)
- if (x < 1)
- fun_l26_n290(x)
- else
- fun_l26_n131(x)
- end
-end
-
-def fun_l25_n234(x)
- if (x < 1)
- fun_l26_n877(x)
- else
- fun_l26_n729(x)
- end
-end
-
-def fun_l25_n235(x)
- if (x < 1)
- fun_l26_n916(x)
- else
- fun_l26_n694(x)
- end
-end
-
-def fun_l25_n236(x)
- if (x < 1)
- fun_l26_n901(x)
- else
- fun_l26_n226(x)
- end
-end
-
-def fun_l25_n237(x)
- if (x < 1)
- fun_l26_n65(x)
- else
- fun_l26_n748(x)
- end
-end
-
-def fun_l25_n238(x)
- if (x < 1)
- fun_l26_n171(x)
- else
- fun_l26_n858(x)
- end
-end
-
-def fun_l25_n239(x)
- if (x < 1)
- fun_l26_n391(x)
- else
- fun_l26_n809(x)
- end
-end
-
-def fun_l25_n240(x)
- if (x < 1)
- fun_l26_n336(x)
- else
- fun_l26_n391(x)
- end
-end
-
-def fun_l25_n241(x)
- if (x < 1)
- fun_l26_n418(x)
- else
- fun_l26_n133(x)
- end
-end
-
-def fun_l25_n242(x)
- if (x < 1)
- fun_l26_n617(x)
- else
- fun_l26_n283(x)
- end
-end
-
-def fun_l25_n243(x)
- if (x < 1)
- fun_l26_n962(x)
- else
- fun_l26_n763(x)
- end
-end
-
-def fun_l25_n244(x)
- if (x < 1)
- fun_l26_n34(x)
- else
- fun_l26_n629(x)
- end
-end
-
-def fun_l25_n245(x)
- if (x < 1)
- fun_l26_n444(x)
- else
- fun_l26_n271(x)
- end
-end
-
-def fun_l25_n246(x)
- if (x < 1)
- fun_l26_n478(x)
- else
- fun_l26_n541(x)
- end
-end
-
-def fun_l25_n247(x)
- if (x < 1)
- fun_l26_n796(x)
- else
- fun_l26_n673(x)
- end
-end
-
-def fun_l25_n248(x)
- if (x < 1)
- fun_l26_n400(x)
- else
- fun_l26_n602(x)
- end
-end
-
-def fun_l25_n249(x)
- if (x < 1)
- fun_l26_n70(x)
- else
- fun_l26_n796(x)
- end
-end
-
-def fun_l25_n250(x)
- if (x < 1)
- fun_l26_n187(x)
- else
- fun_l26_n602(x)
- end
-end
-
-def fun_l25_n251(x)
- if (x < 1)
- fun_l26_n29(x)
- else
- fun_l26_n283(x)
- end
-end
-
-def fun_l25_n252(x)
- if (x < 1)
- fun_l26_n49(x)
- else
- fun_l26_n522(x)
- end
-end
-
-def fun_l25_n253(x)
- if (x < 1)
- fun_l26_n998(x)
- else
- fun_l26_n986(x)
- end
-end
-
-def fun_l25_n254(x)
- if (x < 1)
- fun_l26_n586(x)
- else
- fun_l26_n566(x)
- end
-end
-
-def fun_l25_n255(x)
- if (x < 1)
- fun_l26_n474(x)
- else
- fun_l26_n279(x)
- end
-end
-
-def fun_l25_n256(x)
- if (x < 1)
- fun_l26_n769(x)
- else
- fun_l26_n240(x)
- end
-end
-
-def fun_l25_n257(x)
- if (x < 1)
- fun_l26_n212(x)
- else
- fun_l26_n512(x)
- end
-end
-
-def fun_l25_n258(x)
- if (x < 1)
- fun_l26_n980(x)
- else
- fun_l26_n715(x)
- end
-end
-
-def fun_l25_n259(x)
- if (x < 1)
- fun_l26_n237(x)
- else
- fun_l26_n355(x)
- end
-end
-
-def fun_l25_n260(x)
- if (x < 1)
- fun_l26_n406(x)
- else
- fun_l26_n584(x)
- end
-end
-
-def fun_l25_n261(x)
- if (x < 1)
- fun_l26_n632(x)
- else
- fun_l26_n28(x)
- end
-end
-
-def fun_l25_n262(x)
- if (x < 1)
- fun_l26_n481(x)
- else
- fun_l26_n303(x)
- end
-end
-
-def fun_l25_n263(x)
- if (x < 1)
- fun_l26_n676(x)
- else
- fun_l26_n220(x)
- end
-end
-
-def fun_l25_n264(x)
- if (x < 1)
- fun_l26_n757(x)
- else
- fun_l26_n58(x)
- end
-end
-
-def fun_l25_n265(x)
- if (x < 1)
- fun_l26_n525(x)
- else
- fun_l26_n168(x)
- end
-end
-
-def fun_l25_n266(x)
- if (x < 1)
- fun_l26_n832(x)
- else
- fun_l26_n754(x)
- end
-end
-
-def fun_l25_n267(x)
- if (x < 1)
- fun_l26_n723(x)
- else
- fun_l26_n830(x)
- end
-end
-
-def fun_l25_n268(x)
- if (x < 1)
- fun_l26_n171(x)
- else
- fun_l26_n411(x)
- end
-end
-
-def fun_l25_n269(x)
- if (x < 1)
- fun_l26_n150(x)
- else
- fun_l26_n360(x)
- end
-end
-
-def fun_l25_n270(x)
- if (x < 1)
- fun_l26_n401(x)
- else
- fun_l26_n767(x)
- end
-end
-
-def fun_l25_n271(x)
- if (x < 1)
- fun_l26_n462(x)
- else
- fun_l26_n305(x)
- end
-end
-
-def fun_l25_n272(x)
- if (x < 1)
- fun_l26_n989(x)
- else
- fun_l26_n780(x)
- end
-end
-
-def fun_l25_n273(x)
- if (x < 1)
- fun_l26_n2(x)
- else
- fun_l26_n735(x)
- end
-end
-
-def fun_l25_n274(x)
- if (x < 1)
- fun_l26_n646(x)
- else
- fun_l26_n30(x)
- end
-end
-
-def fun_l25_n275(x)
- if (x < 1)
- fun_l26_n197(x)
- else
- fun_l26_n262(x)
- end
-end
-
-def fun_l25_n276(x)
- if (x < 1)
- fun_l26_n647(x)
- else
- fun_l26_n715(x)
- end
-end
-
-def fun_l25_n277(x)
- if (x < 1)
- fun_l26_n597(x)
- else
- fun_l26_n228(x)
- end
-end
-
-def fun_l25_n278(x)
- if (x < 1)
- fun_l26_n880(x)
- else
- fun_l26_n324(x)
- end
-end
-
-def fun_l25_n279(x)
- if (x < 1)
- fun_l26_n40(x)
- else
- fun_l26_n615(x)
- end
-end
-
-def fun_l25_n280(x)
- if (x < 1)
- fun_l26_n697(x)
- else
- fun_l26_n671(x)
- end
-end
-
-def fun_l25_n281(x)
- if (x < 1)
- fun_l26_n819(x)
- else
- fun_l26_n469(x)
- end
-end
-
-def fun_l25_n282(x)
- if (x < 1)
- fun_l26_n427(x)
- else
- fun_l26_n295(x)
- end
-end
-
-def fun_l25_n283(x)
- if (x < 1)
- fun_l26_n35(x)
- else
- fun_l26_n432(x)
- end
-end
-
-def fun_l25_n284(x)
- if (x < 1)
- fun_l26_n691(x)
- else
- fun_l26_n846(x)
- end
-end
-
-def fun_l25_n285(x)
- if (x < 1)
- fun_l26_n353(x)
- else
- fun_l26_n473(x)
- end
-end
-
-def fun_l25_n286(x)
- if (x < 1)
- fun_l26_n959(x)
- else
- fun_l26_n608(x)
- end
-end
-
-def fun_l25_n287(x)
- if (x < 1)
- fun_l26_n728(x)
- else
- fun_l26_n993(x)
- end
-end
-
-def fun_l25_n288(x)
- if (x < 1)
- fun_l26_n836(x)
- else
- fun_l26_n587(x)
- end
-end
-
-def fun_l25_n289(x)
- if (x < 1)
- fun_l26_n300(x)
- else
- fun_l26_n965(x)
- end
-end
-
-def fun_l25_n290(x)
- if (x < 1)
- fun_l26_n925(x)
- else
- fun_l26_n180(x)
- end
-end
-
-def fun_l25_n291(x)
- if (x < 1)
- fun_l26_n934(x)
- else
- fun_l26_n579(x)
- end
-end
-
-def fun_l25_n292(x)
- if (x < 1)
- fun_l26_n97(x)
- else
- fun_l26_n33(x)
- end
-end
-
-def fun_l25_n293(x)
- if (x < 1)
- fun_l26_n653(x)
- else
- fun_l26_n968(x)
- end
-end
-
-def fun_l25_n294(x)
- if (x < 1)
- fun_l26_n264(x)
- else
- fun_l26_n68(x)
- end
-end
-
-def fun_l25_n295(x)
- if (x < 1)
- fun_l26_n420(x)
- else
- fun_l26_n450(x)
- end
-end
-
-def fun_l25_n296(x)
- if (x < 1)
- fun_l26_n200(x)
- else
- fun_l26_n599(x)
- end
-end
-
-def fun_l25_n297(x)
- if (x < 1)
- fun_l26_n922(x)
- else
- fun_l26_n36(x)
- end
-end
-
-def fun_l25_n298(x)
- if (x < 1)
- fun_l26_n741(x)
- else
- fun_l26_n743(x)
- end
-end
-
-def fun_l25_n299(x)
- if (x < 1)
- fun_l26_n989(x)
- else
- fun_l26_n777(x)
- end
-end
-
-def fun_l25_n300(x)
- if (x < 1)
- fun_l26_n600(x)
- else
- fun_l26_n228(x)
- end
-end
-
-def fun_l25_n301(x)
- if (x < 1)
- fun_l26_n493(x)
- else
- fun_l26_n852(x)
- end
-end
-
-def fun_l25_n302(x)
- if (x < 1)
- fun_l26_n552(x)
- else
- fun_l26_n305(x)
- end
-end
-
-def fun_l25_n303(x)
- if (x < 1)
- fun_l26_n280(x)
- else
- fun_l26_n373(x)
- end
-end
-
-def fun_l25_n304(x)
- if (x < 1)
- fun_l26_n379(x)
- else
- fun_l26_n877(x)
- end
-end
-
-def fun_l25_n305(x)
- if (x < 1)
- fun_l26_n562(x)
- else
- fun_l26_n165(x)
- end
-end
-
-def fun_l25_n306(x)
- if (x < 1)
- fun_l26_n890(x)
- else
- fun_l26_n24(x)
- end
-end
-
-def fun_l25_n307(x)
- if (x < 1)
- fun_l26_n881(x)
- else
- fun_l26_n936(x)
- end
-end
-
-def fun_l25_n308(x)
- if (x < 1)
- fun_l26_n31(x)
- else
- fun_l26_n851(x)
- end
-end
-
-def fun_l25_n309(x)
- if (x < 1)
- fun_l26_n894(x)
- else
- fun_l26_n496(x)
- end
-end
-
-def fun_l25_n310(x)
- if (x < 1)
- fun_l26_n477(x)
- else
- fun_l26_n436(x)
- end
-end
-
-def fun_l25_n311(x)
- if (x < 1)
- fun_l26_n943(x)
- else
- fun_l26_n565(x)
- end
-end
-
-def fun_l25_n312(x)
- if (x < 1)
- fun_l26_n795(x)
- else
- fun_l26_n416(x)
- end
-end
-
-def fun_l25_n313(x)
- if (x < 1)
- fun_l26_n264(x)
- else
- fun_l26_n528(x)
- end
-end
-
-def fun_l25_n314(x)
- if (x < 1)
- fun_l26_n269(x)
- else
- fun_l26_n666(x)
- end
-end
-
-def fun_l25_n315(x)
- if (x < 1)
- fun_l26_n166(x)
- else
- fun_l26_n633(x)
- end
-end
-
-def fun_l25_n316(x)
- if (x < 1)
- fun_l26_n463(x)
- else
- fun_l26_n82(x)
- end
-end
-
-def fun_l25_n317(x)
- if (x < 1)
- fun_l26_n379(x)
- else
- fun_l26_n429(x)
- end
-end
-
-def fun_l25_n318(x)
- if (x < 1)
- fun_l26_n538(x)
- else
- fun_l26_n714(x)
- end
-end
-
-def fun_l25_n319(x)
- if (x < 1)
- fun_l26_n913(x)
- else
- fun_l26_n584(x)
- end
-end
-
-def fun_l25_n320(x)
- if (x < 1)
- fun_l26_n833(x)
- else
- fun_l26_n887(x)
- end
-end
-
-def fun_l25_n321(x)
- if (x < 1)
- fun_l26_n332(x)
- else
- fun_l26_n720(x)
- end
-end
-
-def fun_l25_n322(x)
- if (x < 1)
- fun_l26_n409(x)
- else
- fun_l26_n924(x)
- end
-end
-
-def fun_l25_n323(x)
- if (x < 1)
- fun_l26_n201(x)
- else
- fun_l26_n15(x)
- end
-end
-
-def fun_l25_n324(x)
- if (x < 1)
- fun_l26_n454(x)
- else
- fun_l26_n348(x)
- end
-end
-
-def fun_l25_n325(x)
- if (x < 1)
- fun_l26_n798(x)
- else
- fun_l26_n310(x)
- end
-end
-
-def fun_l25_n326(x)
- if (x < 1)
- fun_l26_n70(x)
- else
- fun_l26_n973(x)
- end
-end
-
-def fun_l25_n327(x)
- if (x < 1)
- fun_l26_n683(x)
- else
- fun_l26_n857(x)
- end
-end
-
-def fun_l25_n328(x)
- if (x < 1)
- fun_l26_n885(x)
- else
- fun_l26_n855(x)
- end
-end
-
-def fun_l25_n329(x)
- if (x < 1)
- fun_l26_n725(x)
- else
- fun_l26_n625(x)
- end
-end
-
-def fun_l25_n330(x)
- if (x < 1)
- fun_l26_n960(x)
- else
- fun_l26_n710(x)
- end
-end
-
-def fun_l25_n331(x)
- if (x < 1)
- fun_l26_n899(x)
- else
- fun_l26_n671(x)
- end
-end
-
-def fun_l25_n332(x)
- if (x < 1)
- fun_l26_n743(x)
- else
- fun_l26_n541(x)
- end
-end
-
-def fun_l25_n333(x)
- if (x < 1)
- fun_l26_n353(x)
- else
- fun_l26_n336(x)
- end
-end
-
-def fun_l25_n334(x)
- if (x < 1)
- fun_l26_n53(x)
- else
- fun_l26_n422(x)
- end
-end
-
-def fun_l25_n335(x)
- if (x < 1)
- fun_l26_n291(x)
- else
- fun_l26_n586(x)
- end
-end
-
-def fun_l25_n336(x)
- if (x < 1)
- fun_l26_n395(x)
- else
- fun_l26_n716(x)
- end
-end
-
-def fun_l25_n337(x)
- if (x < 1)
- fun_l26_n655(x)
- else
- fun_l26_n590(x)
- end
-end
-
-def fun_l25_n338(x)
- if (x < 1)
- fun_l26_n443(x)
- else
- fun_l26_n680(x)
- end
-end
-
-def fun_l25_n339(x)
- if (x < 1)
- fun_l26_n930(x)
- else
- fun_l26_n828(x)
- end
-end
-
-def fun_l25_n340(x)
- if (x < 1)
- fun_l26_n488(x)
- else
- fun_l26_n514(x)
- end
-end
-
-def fun_l25_n341(x)
- if (x < 1)
- fun_l26_n504(x)
- else
- fun_l26_n592(x)
- end
-end
-
-def fun_l25_n342(x)
- if (x < 1)
- fun_l26_n695(x)
- else
- fun_l26_n945(x)
- end
-end
-
-def fun_l25_n343(x)
- if (x < 1)
- fun_l26_n483(x)
- else
- fun_l26_n511(x)
- end
-end
-
-def fun_l25_n344(x)
- if (x < 1)
- fun_l26_n958(x)
- else
- fun_l26_n316(x)
- end
-end
-
-def fun_l25_n345(x)
- if (x < 1)
- fun_l26_n481(x)
- else
- fun_l26_n473(x)
- end
-end
-
-def fun_l25_n346(x)
- if (x < 1)
- fun_l26_n340(x)
- else
- fun_l26_n672(x)
- end
-end
-
-def fun_l25_n347(x)
- if (x < 1)
- fun_l26_n222(x)
- else
- fun_l26_n232(x)
- end
-end
-
-def fun_l25_n348(x)
- if (x < 1)
- fun_l26_n162(x)
- else
- fun_l26_n846(x)
- end
-end
-
-def fun_l25_n349(x)
- if (x < 1)
- fun_l26_n56(x)
- else
- fun_l26_n93(x)
- end
-end
-
-def fun_l25_n350(x)
- if (x < 1)
- fun_l26_n191(x)
- else
- fun_l26_n245(x)
- end
-end
-
-def fun_l25_n351(x)
- if (x < 1)
- fun_l26_n294(x)
- else
- fun_l26_n494(x)
- end
-end
-
-def fun_l25_n352(x)
- if (x < 1)
- fun_l26_n591(x)
- else
- fun_l26_n524(x)
- end
-end
-
-def fun_l25_n353(x)
- if (x < 1)
- fun_l26_n904(x)
- else
- fun_l26_n793(x)
- end
-end
-
-def fun_l25_n354(x)
- if (x < 1)
- fun_l26_n1(x)
- else
- fun_l26_n432(x)
- end
-end
-
-def fun_l25_n355(x)
- if (x < 1)
- fun_l26_n757(x)
- else
- fun_l26_n733(x)
- end
-end
-
-def fun_l25_n356(x)
- if (x < 1)
- fun_l26_n987(x)
- else
- fun_l26_n425(x)
- end
-end
-
-def fun_l25_n357(x)
- if (x < 1)
- fun_l26_n288(x)
- else
- fun_l26_n587(x)
- end
-end
-
-def fun_l25_n358(x)
- if (x < 1)
- fun_l26_n843(x)
- else
- fun_l26_n731(x)
- end
-end
-
-def fun_l25_n359(x)
- if (x < 1)
- fun_l26_n433(x)
- else
- fun_l26_n208(x)
- end
-end
-
-def fun_l25_n360(x)
- if (x < 1)
- fun_l26_n473(x)
- else
- fun_l26_n992(x)
- end
-end
-
-def fun_l25_n361(x)
- if (x < 1)
- fun_l26_n210(x)
- else
- fun_l26_n704(x)
- end
-end
-
-def fun_l25_n362(x)
- if (x < 1)
- fun_l26_n625(x)
- else
- fun_l26_n365(x)
- end
-end
-
-def fun_l25_n363(x)
- if (x < 1)
- fun_l26_n55(x)
- else
- fun_l26_n555(x)
- end
-end
-
-def fun_l25_n364(x)
- if (x < 1)
- fun_l26_n763(x)
- else
- fun_l26_n417(x)
- end
-end
-
-def fun_l25_n365(x)
- if (x < 1)
- fun_l26_n557(x)
- else
- fun_l26_n24(x)
- end
-end
-
-def fun_l25_n366(x)
- if (x < 1)
- fun_l26_n791(x)
- else
- fun_l26_n753(x)
- end
-end
-
-def fun_l25_n367(x)
- if (x < 1)
- fun_l26_n490(x)
- else
- fun_l26_n765(x)
- end
-end
-
-def fun_l25_n368(x)
- if (x < 1)
- fun_l26_n875(x)
- else
- fun_l26_n628(x)
- end
-end
-
-def fun_l25_n369(x)
- if (x < 1)
- fun_l26_n544(x)
- else
- fun_l26_n234(x)
- end
-end
-
-def fun_l25_n370(x)
- if (x < 1)
- fun_l26_n288(x)
- else
- fun_l26_n524(x)
- end
-end
-
-def fun_l25_n371(x)
- if (x < 1)
- fun_l26_n548(x)
- else
- fun_l26_n782(x)
- end
-end
-
-def fun_l25_n372(x)
- if (x < 1)
- fun_l26_n112(x)
- else
- fun_l26_n861(x)
- end
-end
-
-def fun_l25_n373(x)
- if (x < 1)
- fun_l26_n565(x)
- else
- fun_l26_n442(x)
- end
-end
-
-def fun_l25_n374(x)
- if (x < 1)
- fun_l26_n37(x)
- else
- fun_l26_n810(x)
- end
-end
-
-def fun_l25_n375(x)
- if (x < 1)
- fun_l26_n384(x)
- else
- fun_l26_n103(x)
- end
-end
-
-def fun_l25_n376(x)
- if (x < 1)
- fun_l26_n371(x)
- else
- fun_l26_n219(x)
- end
-end
-
-def fun_l25_n377(x)
- if (x < 1)
- fun_l26_n964(x)
- else
- fun_l26_n542(x)
- end
-end
-
-def fun_l25_n378(x)
- if (x < 1)
- fun_l26_n617(x)
- else
- fun_l26_n616(x)
- end
-end
-
-def fun_l25_n379(x)
- if (x < 1)
- fun_l26_n94(x)
- else
- fun_l26_n870(x)
- end
-end
-
-def fun_l25_n380(x)
- if (x < 1)
- fun_l26_n538(x)
- else
- fun_l26_n483(x)
- end
-end
-
-def fun_l25_n381(x)
- if (x < 1)
- fun_l26_n395(x)
- else
- fun_l26_n873(x)
- end
-end
-
-def fun_l25_n382(x)
- if (x < 1)
- fun_l26_n406(x)
- else
- fun_l26_n843(x)
- end
-end
-
-def fun_l25_n383(x)
- if (x < 1)
- fun_l26_n422(x)
- else
- fun_l26_n367(x)
- end
-end
-
-def fun_l25_n384(x)
- if (x < 1)
- fun_l26_n472(x)
- else
- fun_l26_n676(x)
- end
-end
-
-def fun_l25_n385(x)
- if (x < 1)
- fun_l26_n782(x)
- else
- fun_l26_n995(x)
- end
-end
-
-def fun_l25_n386(x)
- if (x < 1)
- fun_l26_n655(x)
- else
- fun_l26_n758(x)
- end
-end
-
-def fun_l25_n387(x)
- if (x < 1)
- fun_l26_n665(x)
- else
- fun_l26_n775(x)
- end
-end
-
-def fun_l25_n388(x)
- if (x < 1)
- fun_l26_n168(x)
- else
- fun_l26_n604(x)
- end
-end
-
-def fun_l25_n389(x)
- if (x < 1)
- fun_l26_n31(x)
- else
- fun_l26_n681(x)
- end
-end
-
-def fun_l25_n390(x)
- if (x < 1)
- fun_l26_n758(x)
- else
- fun_l26_n596(x)
- end
-end
-
-def fun_l25_n391(x)
- if (x < 1)
- fun_l26_n413(x)
- else
- fun_l26_n528(x)
- end
-end
-
-def fun_l25_n392(x)
- if (x < 1)
- fun_l26_n136(x)
- else
- fun_l26_n408(x)
- end
-end
-
-def fun_l25_n393(x)
- if (x < 1)
- fun_l26_n493(x)
- else
- fun_l26_n182(x)
- end
-end
-
-def fun_l25_n394(x)
- if (x < 1)
- fun_l26_n156(x)
- else
- fun_l26_n775(x)
- end
-end
-
-def fun_l25_n395(x)
- if (x < 1)
- fun_l26_n839(x)
- else
- fun_l26_n823(x)
- end
-end
-
-def fun_l25_n396(x)
- if (x < 1)
- fun_l26_n248(x)
- else
- fun_l26_n679(x)
- end
-end
-
-def fun_l25_n397(x)
- if (x < 1)
- fun_l26_n594(x)
- else
- fun_l26_n117(x)
- end
-end
-
-def fun_l25_n398(x)
- if (x < 1)
- fun_l26_n82(x)
- else
- fun_l26_n595(x)
- end
-end
-
-def fun_l25_n399(x)
- if (x < 1)
- fun_l26_n978(x)
- else
- fun_l26_n391(x)
- end
-end
-
-def fun_l25_n400(x)
- if (x < 1)
- fun_l26_n731(x)
- else
- fun_l26_n252(x)
- end
-end
-
-def fun_l25_n401(x)
- if (x < 1)
- fun_l26_n297(x)
- else
- fun_l26_n918(x)
- end
-end
-
-def fun_l25_n402(x)
- if (x < 1)
- fun_l26_n745(x)
- else
- fun_l26_n972(x)
- end
-end
-
-def fun_l25_n403(x)
- if (x < 1)
- fun_l26_n685(x)
- else
- fun_l26_n555(x)
- end
-end
-
-def fun_l25_n404(x)
- if (x < 1)
- fun_l26_n667(x)
- else
- fun_l26_n384(x)
- end
-end
-
-def fun_l25_n405(x)
- if (x < 1)
- fun_l26_n330(x)
- else
- fun_l26_n440(x)
- end
-end
-
-def fun_l25_n406(x)
- if (x < 1)
- fun_l26_n911(x)
- else
- fun_l26_n580(x)
- end
-end
-
-def fun_l25_n407(x)
- if (x < 1)
- fun_l26_n789(x)
- else
- fun_l26_n297(x)
- end
-end
-
-def fun_l25_n408(x)
- if (x < 1)
- fun_l26_n879(x)
- else
- fun_l26_n201(x)
- end
-end
-
-def fun_l25_n409(x)
- if (x < 1)
- fun_l26_n36(x)
- else
- fun_l26_n885(x)
- end
-end
-
-def fun_l25_n410(x)
- if (x < 1)
- fun_l26_n224(x)
- else
- fun_l26_n571(x)
- end
-end
-
-def fun_l25_n411(x)
- if (x < 1)
- fun_l26_n395(x)
- else
- fun_l26_n640(x)
- end
-end
-
-def fun_l25_n412(x)
- if (x < 1)
- fun_l26_n754(x)
- else
- fun_l26_n754(x)
- end
-end
-
-def fun_l25_n413(x)
- if (x < 1)
- fun_l26_n885(x)
- else
- fun_l26_n857(x)
- end
-end
-
-def fun_l25_n414(x)
- if (x < 1)
- fun_l26_n464(x)
- else
- fun_l26_n44(x)
- end
-end
-
-def fun_l25_n415(x)
- if (x < 1)
- fun_l26_n13(x)
- else
- fun_l26_n546(x)
- end
-end
-
-def fun_l25_n416(x)
- if (x < 1)
- fun_l26_n318(x)
- else
- fun_l26_n313(x)
- end
-end
-
-def fun_l25_n417(x)
- if (x < 1)
- fun_l26_n98(x)
- else
- fun_l26_n139(x)
- end
-end
-
-def fun_l25_n418(x)
- if (x < 1)
- fun_l26_n654(x)
- else
- fun_l26_n602(x)
- end
-end
-
-def fun_l25_n419(x)
- if (x < 1)
- fun_l26_n808(x)
- else
- fun_l26_n987(x)
- end
-end
-
-def fun_l25_n420(x)
- if (x < 1)
- fun_l26_n878(x)
- else
- fun_l26_n36(x)
- end
-end
-
-def fun_l25_n421(x)
- if (x < 1)
- fun_l26_n427(x)
- else
- fun_l26_n620(x)
- end
-end
-
-def fun_l25_n422(x)
- if (x < 1)
- fun_l26_n118(x)
- else
- fun_l26_n145(x)
- end
-end
-
-def fun_l25_n423(x)
- if (x < 1)
- fun_l26_n131(x)
- else
- fun_l26_n520(x)
- end
-end
-
-def fun_l25_n424(x)
- if (x < 1)
- fun_l26_n295(x)
- else
- fun_l26_n197(x)
- end
-end
-
-def fun_l25_n425(x)
- if (x < 1)
- fun_l26_n632(x)
- else
- fun_l26_n951(x)
- end
-end
-
-def fun_l25_n426(x)
- if (x < 1)
- fun_l26_n92(x)
- else
- fun_l26_n96(x)
- end
-end
-
-def fun_l25_n427(x)
- if (x < 1)
- fun_l26_n677(x)
- else
- fun_l26_n5(x)
- end
-end
-
-def fun_l25_n428(x)
- if (x < 1)
- fun_l26_n425(x)
- else
- fun_l26_n864(x)
- end
-end
-
-def fun_l25_n429(x)
- if (x < 1)
- fun_l26_n187(x)
- else
- fun_l26_n62(x)
- end
-end
-
-def fun_l25_n430(x)
- if (x < 1)
- fun_l26_n964(x)
- else
- fun_l26_n704(x)
- end
-end
-
-def fun_l25_n431(x)
- if (x < 1)
- fun_l26_n109(x)
- else
- fun_l26_n181(x)
- end
-end
-
-def fun_l25_n432(x)
- if (x < 1)
- fun_l26_n620(x)
- else
- fun_l26_n484(x)
- end
-end
-
-def fun_l25_n433(x)
- if (x < 1)
- fun_l26_n283(x)
- else
- fun_l26_n622(x)
- end
-end
-
-def fun_l25_n434(x)
- if (x < 1)
- fun_l26_n377(x)
- else
- fun_l26_n357(x)
- end
-end
-
-def fun_l25_n435(x)
- if (x < 1)
- fun_l26_n375(x)
- else
- fun_l26_n346(x)
- end
-end
-
-def fun_l25_n436(x)
- if (x < 1)
- fun_l26_n50(x)
- else
- fun_l26_n283(x)
- end
-end
-
-def fun_l25_n437(x)
- if (x < 1)
- fun_l26_n348(x)
- else
- fun_l26_n465(x)
- end
-end
-
-def fun_l25_n438(x)
- if (x < 1)
- fun_l26_n206(x)
- else
- fun_l26_n968(x)
- end
-end
-
-def fun_l25_n439(x)
- if (x < 1)
- fun_l26_n878(x)
- else
- fun_l26_n248(x)
- end
-end
-
-def fun_l25_n440(x)
- if (x < 1)
- fun_l26_n469(x)
- else
- fun_l26_n842(x)
- end
-end
-
-def fun_l25_n441(x)
- if (x < 1)
- fun_l26_n476(x)
- else
- fun_l26_n666(x)
- end
-end
-
-def fun_l25_n442(x)
- if (x < 1)
- fun_l26_n491(x)
- else
- fun_l26_n365(x)
- end
-end
-
-def fun_l25_n443(x)
- if (x < 1)
- fun_l26_n412(x)
- else
- fun_l26_n308(x)
- end
-end
-
-def fun_l25_n444(x)
- if (x < 1)
- fun_l26_n750(x)
- else
- fun_l26_n82(x)
- end
-end
-
-def fun_l25_n445(x)
- if (x < 1)
- fun_l26_n434(x)
- else
- fun_l26_n711(x)
- end
-end
-
-def fun_l25_n446(x)
- if (x < 1)
- fun_l26_n698(x)
- else
- fun_l26_n407(x)
- end
-end
-
-def fun_l25_n447(x)
- if (x < 1)
- fun_l26_n992(x)
- else
- fun_l26_n404(x)
- end
-end
-
-def fun_l25_n448(x)
- if (x < 1)
- fun_l26_n723(x)
- else
- fun_l26_n317(x)
- end
-end
-
-def fun_l25_n449(x)
- if (x < 1)
- fun_l26_n582(x)
- else
- fun_l26_n384(x)
- end
-end
-
-def fun_l25_n450(x)
- if (x < 1)
- fun_l26_n956(x)
- else
- fun_l26_n111(x)
- end
-end
-
-def fun_l25_n451(x)
- if (x < 1)
- fun_l26_n506(x)
- else
- fun_l26_n775(x)
- end
-end
-
-def fun_l25_n452(x)
- if (x < 1)
- fun_l26_n857(x)
- else
- fun_l26_n884(x)
- end
-end
-
-def fun_l25_n453(x)
- if (x < 1)
- fun_l26_n889(x)
- else
- fun_l26_n471(x)
- end
-end
-
-def fun_l25_n454(x)
- if (x < 1)
- fun_l26_n850(x)
- else
- fun_l26_n204(x)
- end
-end
-
-def fun_l25_n455(x)
- if (x < 1)
- fun_l26_n244(x)
- else
- fun_l26_n507(x)
- end
-end
-
-def fun_l25_n456(x)
- if (x < 1)
- fun_l26_n875(x)
- else
- fun_l26_n694(x)
- end
-end
-
-def fun_l25_n457(x)
- if (x < 1)
- fun_l26_n517(x)
- else
- fun_l26_n64(x)
- end
-end
-
-def fun_l25_n458(x)
- if (x < 1)
- fun_l26_n870(x)
- else
- fun_l26_n495(x)
- end
-end
-
-def fun_l25_n459(x)
- if (x < 1)
- fun_l26_n577(x)
- else
- fun_l26_n42(x)
- end
-end
-
-def fun_l25_n460(x)
- if (x < 1)
- fun_l26_n919(x)
- else
- fun_l26_n508(x)
- end
-end
-
-def fun_l25_n461(x)
- if (x < 1)
- fun_l26_n334(x)
- else
- fun_l26_n720(x)
- end
-end
-
-def fun_l25_n462(x)
- if (x < 1)
- fun_l26_n682(x)
- else
- fun_l26_n422(x)
- end
-end
-
-def fun_l25_n463(x)
- if (x < 1)
- fun_l26_n415(x)
- else
- fun_l26_n505(x)
- end
-end
-
-def fun_l25_n464(x)
- if (x < 1)
- fun_l26_n783(x)
- else
- fun_l26_n269(x)
- end
-end
-
-def fun_l25_n465(x)
- if (x < 1)
- fun_l26_n797(x)
- else
- fun_l26_n780(x)
- end
-end
-
-def fun_l25_n466(x)
- if (x < 1)
- fun_l26_n806(x)
- else
- fun_l26_n773(x)
- end
-end
-
-def fun_l25_n467(x)
- if (x < 1)
- fun_l26_n922(x)
- else
- fun_l26_n45(x)
- end
-end
-
-def fun_l25_n468(x)
- if (x < 1)
- fun_l26_n919(x)
- else
- fun_l26_n780(x)
- end
-end
-
-def fun_l25_n469(x)
- if (x < 1)
- fun_l26_n354(x)
- else
- fun_l26_n360(x)
- end
-end
-
-def fun_l25_n470(x)
- if (x < 1)
- fun_l26_n492(x)
- else
- fun_l26_n230(x)
- end
-end
-
-def fun_l25_n471(x)
- if (x < 1)
- fun_l26_n1(x)
- else
- fun_l26_n845(x)
- end
-end
-
-def fun_l25_n472(x)
- if (x < 1)
- fun_l26_n854(x)
- else
- fun_l26_n408(x)
- end
-end
-
-def fun_l25_n473(x)
- if (x < 1)
- fun_l26_n17(x)
- else
- fun_l26_n570(x)
- end
-end
-
-def fun_l25_n474(x)
- if (x < 1)
- fun_l26_n485(x)
- else
- fun_l26_n953(x)
- end
-end
-
-def fun_l25_n475(x)
- if (x < 1)
- fun_l26_n398(x)
- else
- fun_l26_n712(x)
- end
-end
-
-def fun_l25_n476(x)
- if (x < 1)
- fun_l26_n499(x)
- else
- fun_l26_n218(x)
- end
-end
-
-def fun_l25_n477(x)
- if (x < 1)
- fun_l26_n107(x)
- else
- fun_l26_n38(x)
- end
-end
-
-def fun_l25_n478(x)
- if (x < 1)
- fun_l26_n234(x)
- else
- fun_l26_n718(x)
- end
-end
-
-def fun_l25_n479(x)
- if (x < 1)
- fun_l26_n396(x)
- else
- fun_l26_n247(x)
- end
-end
-
-def fun_l25_n480(x)
- if (x < 1)
- fun_l26_n457(x)
- else
- fun_l26_n259(x)
- end
-end
-
-def fun_l25_n481(x)
- if (x < 1)
- fun_l26_n581(x)
- else
- fun_l26_n512(x)
- end
-end
-
-def fun_l25_n482(x)
- if (x < 1)
- fun_l26_n262(x)
- else
- fun_l26_n790(x)
- end
-end
-
-def fun_l25_n483(x)
- if (x < 1)
- fun_l26_n140(x)
- else
- fun_l26_n821(x)
- end
-end
-
-def fun_l25_n484(x)
- if (x < 1)
- fun_l26_n133(x)
- else
- fun_l26_n863(x)
- end
-end
-
-def fun_l25_n485(x)
- if (x < 1)
- fun_l26_n440(x)
- else
- fun_l26_n265(x)
- end
-end
-
-def fun_l25_n486(x)
- if (x < 1)
- fun_l26_n913(x)
- else
- fun_l26_n994(x)
- end
-end
-
-def fun_l25_n487(x)
- if (x < 1)
- fun_l26_n186(x)
- else
- fun_l26_n433(x)
- end
-end
-
-def fun_l25_n488(x)
- if (x < 1)
- fun_l26_n357(x)
- else
- fun_l26_n16(x)
- end
-end
-
-def fun_l25_n489(x)
- if (x < 1)
- fun_l26_n165(x)
- else
- fun_l26_n674(x)
- end
-end
-
-def fun_l25_n490(x)
- if (x < 1)
- fun_l26_n772(x)
- else
- fun_l26_n749(x)
- end
-end
-
-def fun_l25_n491(x)
- if (x < 1)
- fun_l26_n677(x)
- else
- fun_l26_n36(x)
- end
-end
-
-def fun_l25_n492(x)
- if (x < 1)
- fun_l26_n962(x)
- else
- fun_l26_n750(x)
- end
-end
-
-def fun_l25_n493(x)
- if (x < 1)
- fun_l26_n22(x)
- else
- fun_l26_n657(x)
- end
-end
-
-def fun_l25_n494(x)
- if (x < 1)
- fun_l26_n302(x)
- else
- fun_l26_n394(x)
- end
-end
-
-def fun_l25_n495(x)
- if (x < 1)
- fun_l26_n313(x)
- else
- fun_l26_n552(x)
- end
-end
-
-def fun_l25_n496(x)
- if (x < 1)
- fun_l26_n946(x)
- else
- fun_l26_n447(x)
- end
-end
-
-def fun_l25_n497(x)
- if (x < 1)
- fun_l26_n565(x)
- else
- fun_l26_n242(x)
- end
-end
-
-def fun_l25_n498(x)
- if (x < 1)
- fun_l26_n932(x)
- else
- fun_l26_n413(x)
- end
-end
-
-def fun_l25_n499(x)
- if (x < 1)
- fun_l26_n751(x)
- else
- fun_l26_n921(x)
- end
-end
-
-def fun_l25_n500(x)
- if (x < 1)
- fun_l26_n1(x)
- else
- fun_l26_n722(x)
- end
-end
-
-def fun_l25_n501(x)
- if (x < 1)
- fun_l26_n63(x)
- else
- fun_l26_n205(x)
- end
-end
-
-def fun_l25_n502(x)
- if (x < 1)
- fun_l26_n67(x)
- else
- fun_l26_n638(x)
- end
-end
-
-def fun_l25_n503(x)
- if (x < 1)
- fun_l26_n762(x)
- else
- fun_l26_n688(x)
- end
-end
-
-def fun_l25_n504(x)
- if (x < 1)
- fun_l26_n839(x)
- else
- fun_l26_n775(x)
- end
-end
-
-def fun_l25_n505(x)
- if (x < 1)
- fun_l26_n773(x)
- else
- fun_l26_n986(x)
- end
-end
-
-def fun_l25_n506(x)
- if (x < 1)
- fun_l26_n934(x)
- else
- fun_l26_n117(x)
- end
-end
-
-def fun_l25_n507(x)
- if (x < 1)
- fun_l26_n507(x)
- else
- fun_l26_n217(x)
- end
-end
-
-def fun_l25_n508(x)
- if (x < 1)
- fun_l26_n833(x)
- else
- fun_l26_n779(x)
- end
-end
-
-def fun_l25_n509(x)
- if (x < 1)
- fun_l26_n244(x)
- else
- fun_l26_n71(x)
- end
-end
-
-def fun_l25_n510(x)
- if (x < 1)
- fun_l26_n466(x)
- else
- fun_l26_n440(x)
- end
-end
-
-def fun_l25_n511(x)
- if (x < 1)
- fun_l26_n829(x)
- else
- fun_l26_n459(x)
- end
-end
-
-def fun_l25_n512(x)
- if (x < 1)
- fun_l26_n923(x)
- else
- fun_l26_n672(x)
- end
-end
-
-def fun_l25_n513(x)
- if (x < 1)
- fun_l26_n925(x)
- else
- fun_l26_n758(x)
- end
-end
-
-def fun_l25_n514(x)
- if (x < 1)
- fun_l26_n782(x)
- else
- fun_l26_n157(x)
- end
-end
-
-def fun_l25_n515(x)
- if (x < 1)
- fun_l26_n987(x)
- else
- fun_l26_n407(x)
- end
-end
-
-def fun_l25_n516(x)
- if (x < 1)
- fun_l26_n224(x)
- else
- fun_l26_n531(x)
- end
-end
-
-def fun_l25_n517(x)
- if (x < 1)
- fun_l26_n222(x)
- else
- fun_l26_n141(x)
- end
-end
-
-def fun_l25_n518(x)
- if (x < 1)
- fun_l26_n723(x)
- else
- fun_l26_n787(x)
- end
-end
-
-def fun_l25_n519(x)
- if (x < 1)
- fun_l26_n802(x)
- else
- fun_l26_n448(x)
- end
-end
-
-def fun_l25_n520(x)
- if (x < 1)
- fun_l26_n152(x)
- else
- fun_l26_n666(x)
- end
-end
-
-def fun_l25_n521(x)
- if (x < 1)
- fun_l26_n476(x)
- else
- fun_l26_n7(x)
- end
-end
-
-def fun_l25_n522(x)
- if (x < 1)
- fun_l26_n523(x)
- else
- fun_l26_n326(x)
- end
-end
-
-def fun_l25_n523(x)
- if (x < 1)
- fun_l26_n432(x)
- else
- fun_l26_n525(x)
- end
-end
-
-def fun_l25_n524(x)
- if (x < 1)
- fun_l26_n403(x)
- else
- fun_l26_n983(x)
- end
-end
-
-def fun_l25_n525(x)
- if (x < 1)
- fun_l26_n681(x)
- else
- fun_l26_n326(x)
- end
-end
-
-def fun_l25_n526(x)
- if (x < 1)
- fun_l26_n352(x)
- else
- fun_l26_n402(x)
- end
-end
-
-def fun_l25_n527(x)
- if (x < 1)
- fun_l26_n870(x)
- else
- fun_l26_n181(x)
- end
-end
-
-def fun_l25_n528(x)
- if (x < 1)
- fun_l26_n382(x)
- else
- fun_l26_n880(x)
- end
-end
-
-def fun_l25_n529(x)
- if (x < 1)
- fun_l26_n337(x)
- else
- fun_l26_n616(x)
- end
-end
-
-def fun_l25_n530(x)
- if (x < 1)
- fun_l26_n959(x)
- else
- fun_l26_n239(x)
- end
-end
-
-def fun_l25_n531(x)
- if (x < 1)
- fun_l26_n57(x)
- else
- fun_l26_n896(x)
- end
-end
-
-def fun_l25_n532(x)
- if (x < 1)
- fun_l26_n456(x)
- else
- fun_l26_n365(x)
- end
-end
-
-def fun_l25_n533(x)
- if (x < 1)
- fun_l26_n73(x)
- else
- fun_l26_n420(x)
- end
-end
-
-def fun_l25_n534(x)
- if (x < 1)
- fun_l26_n295(x)
- else
- fun_l26_n663(x)
- end
-end
-
-def fun_l25_n535(x)
- if (x < 1)
- fun_l26_n881(x)
- else
- fun_l26_n391(x)
- end
-end
-
-def fun_l25_n536(x)
- if (x < 1)
- fun_l26_n775(x)
- else
- fun_l26_n19(x)
- end
-end
-
-def fun_l25_n537(x)
- if (x < 1)
- fun_l26_n954(x)
- else
- fun_l26_n97(x)
- end
-end
-
-def fun_l25_n538(x)
- if (x < 1)
- fun_l26_n764(x)
- else
- fun_l26_n353(x)
- end
-end
-
-def fun_l25_n539(x)
- if (x < 1)
- fun_l26_n220(x)
- else
- fun_l26_n958(x)
- end
-end
-
-def fun_l25_n540(x)
- if (x < 1)
- fun_l26_n915(x)
- else
- fun_l26_n792(x)
- end
-end
-
-def fun_l25_n541(x)
- if (x < 1)
- fun_l26_n880(x)
- else
- fun_l26_n374(x)
- end
-end
-
-def fun_l25_n542(x)
- if (x < 1)
- fun_l26_n655(x)
- else
- fun_l26_n578(x)
- end
-end
-
-def fun_l25_n543(x)
- if (x < 1)
- fun_l26_n862(x)
- else
- fun_l26_n177(x)
- end
-end
-
-def fun_l25_n544(x)
- if (x < 1)
- fun_l26_n286(x)
- else
- fun_l26_n670(x)
- end
-end
-
-def fun_l25_n545(x)
- if (x < 1)
- fun_l26_n862(x)
- else
- fun_l26_n45(x)
- end
-end
-
-def fun_l25_n546(x)
- if (x < 1)
- fun_l26_n743(x)
- else
- fun_l26_n575(x)
- end
-end
-
-def fun_l25_n547(x)
- if (x < 1)
- fun_l26_n909(x)
- else
- fun_l26_n457(x)
- end
-end
-
-def fun_l25_n548(x)
- if (x < 1)
- fun_l26_n784(x)
- else
- fun_l26_n482(x)
- end
-end
-
-def fun_l25_n549(x)
- if (x < 1)
- fun_l26_n381(x)
- else
- fun_l26_n560(x)
- end
-end
-
-def fun_l25_n550(x)
- if (x < 1)
- fun_l26_n62(x)
- else
- fun_l26_n640(x)
- end
-end
-
-def fun_l25_n551(x)
- if (x < 1)
- fun_l26_n714(x)
- else
- fun_l26_n898(x)
- end
-end
-
-def fun_l25_n552(x)
- if (x < 1)
- fun_l26_n515(x)
- else
- fun_l26_n221(x)
- end
-end
-
-def fun_l25_n553(x)
- if (x < 1)
- fun_l26_n217(x)
- else
- fun_l26_n932(x)
- end
-end
-
-def fun_l25_n554(x)
- if (x < 1)
- fun_l26_n583(x)
- else
- fun_l26_n722(x)
- end
-end
-
-def fun_l25_n555(x)
- if (x < 1)
- fun_l26_n398(x)
- else
- fun_l26_n503(x)
- end
-end
-
-def fun_l25_n556(x)
- if (x < 1)
- fun_l26_n891(x)
- else
- fun_l26_n72(x)
- end
-end
-
-def fun_l25_n557(x)
- if (x < 1)
- fun_l26_n367(x)
- else
- fun_l26_n141(x)
- end
-end
-
-def fun_l25_n558(x)
- if (x < 1)
- fun_l26_n477(x)
- else
- fun_l26_n40(x)
- end
-end
-
-def fun_l25_n559(x)
- if (x < 1)
- fun_l26_n156(x)
- else
- fun_l26_n491(x)
- end
-end
-
-def fun_l25_n560(x)
- if (x < 1)
- fun_l26_n859(x)
- else
- fun_l26_n423(x)
- end
-end
-
-def fun_l25_n561(x)
- if (x < 1)
- fun_l26_n693(x)
- else
- fun_l26_n281(x)
- end
-end
-
-def fun_l25_n562(x)
- if (x < 1)
- fun_l26_n460(x)
- else
- fun_l26_n151(x)
- end
-end
-
-def fun_l25_n563(x)
- if (x < 1)
- fun_l26_n14(x)
- else
- fun_l26_n395(x)
- end
-end
-
-def fun_l25_n564(x)
- if (x < 1)
- fun_l26_n423(x)
- else
- fun_l26_n198(x)
- end
-end
-
-def fun_l25_n565(x)
- if (x < 1)
- fun_l26_n911(x)
- else
- fun_l26_n841(x)
- end
-end
-
-def fun_l25_n566(x)
- if (x < 1)
- fun_l26_n273(x)
- else
- fun_l26_n361(x)
- end
-end
-
-def fun_l25_n567(x)
- if (x < 1)
- fun_l26_n94(x)
- else
- fun_l26_n932(x)
- end
-end
-
-def fun_l25_n568(x)
- if (x < 1)
- fun_l26_n734(x)
- else
- fun_l26_n191(x)
- end
-end
-
-def fun_l25_n569(x)
- if (x < 1)
- fun_l26_n699(x)
- else
- fun_l26_n496(x)
- end
-end
-
-def fun_l25_n570(x)
- if (x < 1)
- fun_l26_n90(x)
- else
- fun_l26_n574(x)
- end
-end
-
-def fun_l25_n571(x)
- if (x < 1)
- fun_l26_n818(x)
- else
- fun_l26_n529(x)
- end
-end
-
-def fun_l25_n572(x)
- if (x < 1)
- fun_l26_n459(x)
- else
- fun_l26_n770(x)
- end
-end
-
-def fun_l25_n573(x)
- if (x < 1)
- fun_l26_n725(x)
- else
- fun_l26_n896(x)
- end
-end
-
-def fun_l25_n574(x)
- if (x < 1)
- fun_l26_n773(x)
- else
- fun_l26_n8(x)
- end
-end
-
-def fun_l25_n575(x)
- if (x < 1)
- fun_l26_n582(x)
- else
- fun_l26_n274(x)
- end
-end
-
-def fun_l25_n576(x)
- if (x < 1)
- fun_l26_n529(x)
- else
- fun_l26_n434(x)
- end
-end
-
-def fun_l25_n577(x)
- if (x < 1)
- fun_l26_n197(x)
- else
- fun_l26_n88(x)
- end
-end
-
-def fun_l25_n578(x)
- if (x < 1)
- fun_l26_n938(x)
- else
- fun_l26_n184(x)
- end
-end
-
-def fun_l25_n579(x)
- if (x < 1)
- fun_l26_n801(x)
- else
- fun_l26_n990(x)
- end
-end
-
-def fun_l25_n580(x)
- if (x < 1)
- fun_l26_n732(x)
- else
- fun_l26_n955(x)
- end
-end
-
-def fun_l25_n581(x)
- if (x < 1)
- fun_l26_n130(x)
- else
- fun_l26_n167(x)
- end
-end
-
-def fun_l25_n582(x)
- if (x < 1)
- fun_l26_n942(x)
- else
- fun_l26_n352(x)
- end
-end
-
-def fun_l25_n583(x)
- if (x < 1)
- fun_l26_n673(x)
- else
- fun_l26_n613(x)
- end
-end
-
-def fun_l25_n584(x)
- if (x < 1)
- fun_l26_n386(x)
- else
- fun_l26_n840(x)
- end
-end
-
-def fun_l25_n585(x)
- if (x < 1)
- fun_l26_n847(x)
- else
- fun_l26_n372(x)
- end
-end
-
-def fun_l25_n586(x)
- if (x < 1)
- fun_l26_n0(x)
- else
- fun_l26_n717(x)
- end
-end
-
-def fun_l25_n587(x)
- if (x < 1)
- fun_l26_n403(x)
- else
- fun_l26_n689(x)
- end
-end
-
-def fun_l25_n588(x)
- if (x < 1)
- fun_l26_n325(x)
- else
- fun_l26_n75(x)
- end
-end
-
-def fun_l25_n589(x)
- if (x < 1)
- fun_l26_n653(x)
- else
- fun_l26_n993(x)
- end
-end
-
-def fun_l25_n590(x)
- if (x < 1)
- fun_l26_n413(x)
- else
- fun_l26_n428(x)
- end
-end
-
-def fun_l25_n591(x)
- if (x < 1)
- fun_l26_n93(x)
- else
- fun_l26_n264(x)
- end
-end
-
-def fun_l25_n592(x)
- if (x < 1)
- fun_l26_n117(x)
- else
- fun_l26_n466(x)
- end
-end
-
-def fun_l25_n593(x)
- if (x < 1)
- fun_l26_n463(x)
- else
- fun_l26_n270(x)
- end
-end
-
-def fun_l25_n594(x)
- if (x < 1)
- fun_l26_n348(x)
- else
- fun_l26_n844(x)
- end
-end
-
-def fun_l25_n595(x)
- if (x < 1)
- fun_l26_n939(x)
- else
- fun_l26_n891(x)
- end
-end
-
-def fun_l25_n596(x)
- if (x < 1)
- fun_l26_n949(x)
- else
- fun_l26_n743(x)
- end
-end
-
-def fun_l25_n597(x)
- if (x < 1)
- fun_l26_n884(x)
- else
- fun_l26_n831(x)
- end
-end
-
-def fun_l25_n598(x)
- if (x < 1)
- fun_l26_n910(x)
- else
- fun_l26_n79(x)
- end
-end
-
-def fun_l25_n599(x)
- if (x < 1)
- fun_l26_n491(x)
- else
- fun_l26_n727(x)
- end
-end
-
-def fun_l25_n600(x)
- if (x < 1)
- fun_l26_n295(x)
- else
- fun_l26_n929(x)
- end
-end
-
-def fun_l25_n601(x)
- if (x < 1)
- fun_l26_n130(x)
- else
- fun_l26_n35(x)
- end
-end
-
-def fun_l25_n602(x)
- if (x < 1)
- fun_l26_n673(x)
- else
- fun_l26_n103(x)
- end
-end
-
-def fun_l25_n603(x)
- if (x < 1)
- fun_l26_n669(x)
- else
- fun_l26_n449(x)
- end
-end
-
-def fun_l25_n604(x)
- if (x < 1)
- fun_l26_n201(x)
- else
- fun_l26_n616(x)
- end
-end
-
-def fun_l25_n605(x)
- if (x < 1)
- fun_l26_n326(x)
- else
- fun_l26_n718(x)
- end
-end
-
-def fun_l25_n606(x)
- if (x < 1)
- fun_l26_n857(x)
- else
- fun_l26_n188(x)
- end
-end
-
-def fun_l25_n607(x)
- if (x < 1)
- fun_l26_n351(x)
- else
- fun_l26_n688(x)
- end
-end
-
-def fun_l25_n608(x)
- if (x < 1)
- fun_l26_n652(x)
- else
- fun_l26_n280(x)
- end
-end
-
-def fun_l25_n609(x)
- if (x < 1)
- fun_l26_n994(x)
- else
- fun_l26_n341(x)
- end
-end
-
-def fun_l25_n610(x)
- if (x < 1)
- fun_l26_n876(x)
- else
- fun_l26_n643(x)
- end
-end
-
-def fun_l25_n611(x)
- if (x < 1)
- fun_l26_n825(x)
- else
- fun_l26_n306(x)
- end
-end
-
-def fun_l25_n612(x)
- if (x < 1)
- fun_l26_n139(x)
- else
- fun_l26_n452(x)
- end
-end
-
-def fun_l25_n613(x)
- if (x < 1)
- fun_l26_n689(x)
- else
- fun_l26_n818(x)
- end
-end
-
-def fun_l25_n614(x)
- if (x < 1)
- fun_l26_n171(x)
- else
- fun_l26_n366(x)
- end
-end
-
-def fun_l25_n615(x)
- if (x < 1)
- fun_l26_n658(x)
- else
- fun_l26_n603(x)
- end
-end
-
-def fun_l25_n616(x)
- if (x < 1)
- fun_l26_n150(x)
- else
- fun_l26_n603(x)
- end
-end
-
-def fun_l25_n617(x)
- if (x < 1)
- fun_l26_n432(x)
- else
- fun_l26_n391(x)
- end
-end
-
-def fun_l25_n618(x)
- if (x < 1)
- fun_l26_n79(x)
- else
- fun_l26_n416(x)
- end
-end
-
-def fun_l25_n619(x)
- if (x < 1)
- fun_l26_n494(x)
- else
- fun_l26_n355(x)
- end
-end
-
-def fun_l25_n620(x)
- if (x < 1)
- fun_l26_n868(x)
- else
- fun_l26_n461(x)
- end
-end
-
-def fun_l25_n621(x)
- if (x < 1)
- fun_l26_n954(x)
- else
- fun_l26_n31(x)
- end
-end
-
-def fun_l25_n622(x)
- if (x < 1)
- fun_l26_n620(x)
- else
- fun_l26_n777(x)
- end
-end
-
-def fun_l25_n623(x)
- if (x < 1)
- fun_l26_n938(x)
- else
- fun_l26_n339(x)
- end
-end
-
-def fun_l25_n624(x)
- if (x < 1)
- fun_l26_n385(x)
- else
- fun_l26_n462(x)
- end
-end
-
-def fun_l25_n625(x)
- if (x < 1)
- fun_l26_n83(x)
- else
- fun_l26_n351(x)
- end
-end
-
-def fun_l25_n626(x)
- if (x < 1)
- fun_l26_n317(x)
- else
- fun_l26_n16(x)
- end
-end
-
-def fun_l25_n627(x)
- if (x < 1)
- fun_l26_n321(x)
- else
- fun_l26_n955(x)
- end
-end
-
-def fun_l25_n628(x)
- if (x < 1)
- fun_l26_n649(x)
- else
- fun_l26_n195(x)
- end
-end
-
-def fun_l25_n629(x)
- if (x < 1)
- fun_l26_n351(x)
- else
- fun_l26_n429(x)
- end
-end
-
-def fun_l25_n630(x)
- if (x < 1)
- fun_l26_n338(x)
- else
- fun_l26_n334(x)
- end
-end
-
-def fun_l25_n631(x)
- if (x < 1)
- fun_l26_n355(x)
- else
- fun_l26_n782(x)
- end
-end
-
-def fun_l25_n632(x)
- if (x < 1)
- fun_l26_n619(x)
- else
- fun_l26_n189(x)
- end
-end
-
-def fun_l25_n633(x)
- if (x < 1)
- fun_l26_n818(x)
- else
- fun_l26_n740(x)
- end
-end
-
-def fun_l25_n634(x)
- if (x < 1)
- fun_l26_n725(x)
- else
- fun_l26_n114(x)
- end
-end
-
-def fun_l25_n635(x)
- if (x < 1)
- fun_l26_n948(x)
- else
- fun_l26_n587(x)
- end
-end
-
-def fun_l25_n636(x)
- if (x < 1)
- fun_l26_n268(x)
- else
- fun_l26_n871(x)
- end
-end
-
-def fun_l25_n637(x)
- if (x < 1)
- fun_l26_n128(x)
- else
- fun_l26_n5(x)
- end
-end
-
-def fun_l25_n638(x)
- if (x < 1)
- fun_l26_n981(x)
- else
- fun_l26_n209(x)
- end
-end
-
-def fun_l25_n639(x)
- if (x < 1)
- fun_l26_n729(x)
- else
- fun_l26_n786(x)
- end
-end
-
-def fun_l25_n640(x)
- if (x < 1)
- fun_l26_n86(x)
- else
- fun_l26_n320(x)
- end
-end
-
-def fun_l25_n641(x)
- if (x < 1)
- fun_l26_n59(x)
- else
- fun_l26_n457(x)
- end
-end
-
-def fun_l25_n642(x)
- if (x < 1)
- fun_l26_n517(x)
- else
- fun_l26_n249(x)
- end
-end
-
-def fun_l25_n643(x)
- if (x < 1)
- fun_l26_n528(x)
- else
- fun_l26_n754(x)
- end
-end
-
-def fun_l25_n644(x)
- if (x < 1)
- fun_l26_n254(x)
- else
- fun_l26_n886(x)
- end
-end
-
-def fun_l25_n645(x)
- if (x < 1)
- fun_l26_n244(x)
- else
- fun_l26_n364(x)
- end
-end
-
-def fun_l25_n646(x)
- if (x < 1)
- fun_l26_n550(x)
- else
- fun_l26_n877(x)
- end
-end
-
-def fun_l25_n647(x)
- if (x < 1)
- fun_l26_n274(x)
- else
- fun_l26_n712(x)
- end
-end
-
-def fun_l25_n648(x)
- if (x < 1)
- fun_l26_n299(x)
- else
- fun_l26_n957(x)
- end
-end
-
-def fun_l25_n649(x)
- if (x < 1)
- fun_l26_n996(x)
- else
- fun_l26_n671(x)
- end
-end
-
-def fun_l25_n650(x)
- if (x < 1)
- fun_l26_n91(x)
- else
- fun_l26_n867(x)
- end
-end
-
-def fun_l25_n651(x)
- if (x < 1)
- fun_l26_n987(x)
- else
- fun_l26_n643(x)
- end
-end
-
-def fun_l25_n652(x)
- if (x < 1)
- fun_l26_n429(x)
- else
- fun_l26_n802(x)
- end
-end
-
-def fun_l25_n653(x)
- if (x < 1)
- fun_l26_n967(x)
- else
- fun_l26_n590(x)
- end
-end
-
-def fun_l25_n654(x)
- if (x < 1)
- fun_l26_n404(x)
- else
- fun_l26_n283(x)
- end
-end
-
-def fun_l25_n655(x)
- if (x < 1)
- fun_l26_n438(x)
- else
- fun_l26_n232(x)
- end
-end
-
-def fun_l25_n656(x)
- if (x < 1)
- fun_l26_n295(x)
- else
- fun_l26_n559(x)
- end
-end
-
-def fun_l25_n657(x)
- if (x < 1)
- fun_l26_n892(x)
- else
- fun_l26_n46(x)
- end
-end
-
-def fun_l25_n658(x)
- if (x < 1)
- fun_l26_n30(x)
- else
- fun_l26_n640(x)
- end
-end
-
-def fun_l25_n659(x)
- if (x < 1)
- fun_l26_n323(x)
- else
- fun_l26_n583(x)
- end
-end
-
-def fun_l25_n660(x)
- if (x < 1)
- fun_l26_n682(x)
- else
- fun_l26_n668(x)
- end
-end
-
-def fun_l25_n661(x)
- if (x < 1)
- fun_l26_n78(x)
- else
- fun_l26_n83(x)
- end
-end
-
-def fun_l25_n662(x)
- if (x < 1)
- fun_l26_n457(x)
- else
- fun_l26_n289(x)
- end
-end
-
-def fun_l25_n663(x)
- if (x < 1)
- fun_l26_n444(x)
- else
- fun_l26_n159(x)
- end
-end
-
-def fun_l25_n664(x)
- if (x < 1)
- fun_l26_n10(x)
- else
- fun_l26_n925(x)
- end
-end
-
-def fun_l25_n665(x)
- if (x < 1)
- fun_l26_n870(x)
- else
- fun_l26_n253(x)
- end
-end
-
-def fun_l25_n666(x)
- if (x < 1)
- fun_l26_n55(x)
- else
- fun_l26_n705(x)
- end
-end
-
-def fun_l25_n667(x)
- if (x < 1)
- fun_l26_n179(x)
- else
- fun_l26_n607(x)
- end
-end
-
-def fun_l25_n668(x)
- if (x < 1)
- fun_l26_n359(x)
- else
- fun_l26_n56(x)
- end
-end
-
-def fun_l25_n669(x)
- if (x < 1)
- fun_l26_n908(x)
- else
- fun_l26_n997(x)
- end
-end
-
-def fun_l25_n670(x)
- if (x < 1)
- fun_l26_n469(x)
- else
- fun_l26_n438(x)
- end
-end
-
-def fun_l25_n671(x)
- if (x < 1)
- fun_l26_n740(x)
- else
- fun_l26_n847(x)
- end
-end
-
-def fun_l25_n672(x)
- if (x < 1)
- fun_l26_n123(x)
- else
- fun_l26_n636(x)
- end
-end
-
-def fun_l25_n673(x)
- if (x < 1)
- fun_l26_n654(x)
- else
- fun_l26_n221(x)
- end
-end
-
-def fun_l25_n674(x)
- if (x < 1)
- fun_l26_n14(x)
- else
- fun_l26_n792(x)
- end
-end
-
-def fun_l25_n675(x)
- if (x < 1)
- fun_l26_n424(x)
- else
- fun_l26_n999(x)
- end
-end
-
-def fun_l25_n676(x)
- if (x < 1)
- fun_l26_n491(x)
- else
- fun_l26_n698(x)
- end
-end
-
-def fun_l25_n677(x)
- if (x < 1)
- fun_l26_n859(x)
- else
- fun_l26_n749(x)
- end
-end
-
-def fun_l25_n678(x)
- if (x < 1)
- fun_l26_n357(x)
- else
- fun_l26_n861(x)
- end
-end
-
-def fun_l25_n679(x)
- if (x < 1)
- fun_l26_n144(x)
- else
- fun_l26_n347(x)
- end
-end
-
-def fun_l25_n680(x)
- if (x < 1)
- fun_l26_n42(x)
- else
- fun_l26_n168(x)
- end
-end
-
-def fun_l25_n681(x)
- if (x < 1)
- fun_l26_n808(x)
- else
- fun_l26_n639(x)
- end
-end
-
-def fun_l25_n682(x)
- if (x < 1)
- fun_l26_n943(x)
- else
- fun_l26_n152(x)
- end
-end
-
-def fun_l25_n683(x)
- if (x < 1)
- fun_l26_n668(x)
- else
- fun_l26_n186(x)
- end
-end
-
-def fun_l25_n684(x)
- if (x < 1)
- fun_l26_n607(x)
- else
- fun_l26_n141(x)
- end
-end
-
-def fun_l25_n685(x)
- if (x < 1)
- fun_l26_n221(x)
- else
- fun_l26_n960(x)
- end
-end
-
-def fun_l25_n686(x)
- if (x < 1)
- fun_l26_n85(x)
- else
- fun_l26_n285(x)
- end
-end
-
-def fun_l25_n687(x)
- if (x < 1)
- fun_l26_n707(x)
- else
- fun_l26_n638(x)
- end
-end
-
-def fun_l25_n688(x)
- if (x < 1)
- fun_l26_n288(x)
- else
- fun_l26_n318(x)
- end
-end
-
-def fun_l25_n689(x)
- if (x < 1)
- fun_l26_n505(x)
- else
- fun_l26_n802(x)
- end
-end
-
-def fun_l25_n690(x)
- if (x < 1)
- fun_l26_n757(x)
- else
- fun_l26_n988(x)
- end
-end
-
-def fun_l25_n691(x)
- if (x < 1)
- fun_l26_n211(x)
- else
- fun_l26_n868(x)
- end
-end
-
-def fun_l25_n692(x)
- if (x < 1)
- fun_l26_n945(x)
- else
- fun_l26_n689(x)
- end
-end
-
-def fun_l25_n693(x)
- if (x < 1)
- fun_l26_n65(x)
- else
- fun_l26_n326(x)
- end
-end
-
-def fun_l25_n694(x)
- if (x < 1)
- fun_l26_n905(x)
- else
- fun_l26_n912(x)
- end
-end
-
-def fun_l25_n695(x)
- if (x < 1)
- fun_l26_n408(x)
- else
- fun_l26_n834(x)
- end
-end
-
-def fun_l25_n696(x)
- if (x < 1)
- fun_l26_n862(x)
- else
- fun_l26_n827(x)
- end
-end
-
-def fun_l25_n697(x)
- if (x < 1)
- fun_l26_n356(x)
- else
- fun_l26_n201(x)
- end
-end
-
-def fun_l25_n698(x)
- if (x < 1)
- fun_l26_n819(x)
- else
- fun_l26_n672(x)
- end
-end
-
-def fun_l25_n699(x)
- if (x < 1)
- fun_l26_n252(x)
- else
- fun_l26_n672(x)
- end
-end
-
-def fun_l25_n700(x)
- if (x < 1)
- fun_l26_n620(x)
- else
- fun_l26_n693(x)
- end
-end
-
-def fun_l25_n701(x)
- if (x < 1)
- fun_l26_n393(x)
- else
- fun_l26_n246(x)
- end
-end
-
-def fun_l25_n702(x)
- if (x < 1)
- fun_l26_n601(x)
- else
- fun_l26_n230(x)
- end
-end
-
-def fun_l25_n703(x)
- if (x < 1)
- fun_l26_n583(x)
- else
- fun_l26_n503(x)
- end
-end
-
-def fun_l25_n704(x)
- if (x < 1)
- fun_l26_n156(x)
- else
- fun_l26_n951(x)
- end
-end
-
-def fun_l25_n705(x)
- if (x < 1)
- fun_l26_n681(x)
- else
- fun_l26_n692(x)
- end
-end
-
-def fun_l25_n706(x)
- if (x < 1)
- fun_l26_n176(x)
- else
- fun_l26_n158(x)
- end
-end
-
-def fun_l25_n707(x)
- if (x < 1)
- fun_l26_n607(x)
- else
- fun_l26_n3(x)
- end
-end
-
-def fun_l25_n708(x)
- if (x < 1)
- fun_l26_n999(x)
- else
- fun_l26_n614(x)
- end
-end
-
-def fun_l25_n709(x)
- if (x < 1)
- fun_l26_n930(x)
- else
- fun_l26_n888(x)
- end
-end
-
-def fun_l25_n710(x)
- if (x < 1)
- fun_l26_n347(x)
- else
- fun_l26_n106(x)
- end
-end
-
-def fun_l25_n711(x)
- if (x < 1)
- fun_l26_n425(x)
- else
- fun_l26_n474(x)
- end
-end
-
-def fun_l25_n712(x)
- if (x < 1)
- fun_l26_n265(x)
- else
- fun_l26_n519(x)
- end
-end
-
-def fun_l25_n713(x)
- if (x < 1)
- fun_l26_n205(x)
- else
- fun_l26_n76(x)
- end
-end
-
-def fun_l25_n714(x)
- if (x < 1)
- fun_l26_n628(x)
- else
- fun_l26_n784(x)
- end
-end
-
-def fun_l25_n715(x)
- if (x < 1)
- fun_l26_n217(x)
- else
- fun_l26_n484(x)
- end
-end
-
-def fun_l25_n716(x)
- if (x < 1)
- fun_l26_n883(x)
- else
- fun_l26_n5(x)
- end
-end
-
-def fun_l25_n717(x)
- if (x < 1)
- fun_l26_n23(x)
- else
- fun_l26_n457(x)
- end
-end
-
-def fun_l25_n718(x)
- if (x < 1)
- fun_l26_n370(x)
- else
- fun_l26_n789(x)
- end
-end
-
-def fun_l25_n719(x)
- if (x < 1)
- fun_l26_n636(x)
- else
- fun_l26_n776(x)
- end
-end
-
-def fun_l25_n720(x)
- if (x < 1)
- fun_l26_n558(x)
- else
- fun_l26_n491(x)
- end
-end
-
-def fun_l25_n721(x)
- if (x < 1)
- fun_l26_n867(x)
- else
- fun_l26_n49(x)
- end
-end
-
-def fun_l25_n722(x)
- if (x < 1)
- fun_l26_n178(x)
- else
- fun_l26_n835(x)
- end
-end
-
-def fun_l25_n723(x)
- if (x < 1)
- fun_l26_n967(x)
- else
- fun_l26_n266(x)
- end
-end
-
-def fun_l25_n724(x)
- if (x < 1)
- fun_l26_n191(x)
- else
- fun_l26_n58(x)
- end
-end
-
-def fun_l25_n725(x)
- if (x < 1)
- fun_l26_n536(x)
- else
- fun_l26_n78(x)
- end
-end
-
-def fun_l25_n726(x)
- if (x < 1)
- fun_l26_n128(x)
- else
- fun_l26_n764(x)
- end
-end
-
-def fun_l25_n727(x)
- if (x < 1)
- fun_l26_n243(x)
- else
- fun_l26_n217(x)
- end
-end
-
-def fun_l25_n728(x)
- if (x < 1)
- fun_l26_n608(x)
- else
- fun_l26_n613(x)
- end
-end
-
-def fun_l25_n729(x)
- if (x < 1)
- fun_l26_n765(x)
- else
- fun_l26_n822(x)
- end
-end
-
-def fun_l25_n730(x)
- if (x < 1)
- fun_l26_n445(x)
- else
- fun_l26_n160(x)
- end
-end
-
-def fun_l25_n731(x)
- if (x < 1)
- fun_l26_n209(x)
- else
- fun_l26_n980(x)
- end
-end
-
-def fun_l25_n732(x)
- if (x < 1)
- fun_l26_n888(x)
- else
- fun_l26_n726(x)
- end
-end
-
-def fun_l25_n733(x)
- if (x < 1)
- fun_l26_n232(x)
- else
- fun_l26_n47(x)
- end
-end
-
-def fun_l25_n734(x)
- if (x < 1)
- fun_l26_n278(x)
- else
- fun_l26_n878(x)
- end
-end
-
-def fun_l25_n735(x)
- if (x < 1)
- fun_l26_n894(x)
- else
- fun_l26_n523(x)
- end
-end
-
-def fun_l25_n736(x)
- if (x < 1)
- fun_l26_n334(x)
- else
- fun_l26_n270(x)
- end
-end
-
-def fun_l25_n737(x)
- if (x < 1)
- fun_l26_n877(x)
- else
- fun_l26_n105(x)
- end
-end
-
-def fun_l25_n738(x)
- if (x < 1)
- fun_l26_n761(x)
- else
- fun_l26_n187(x)
- end
-end
-
-def fun_l25_n739(x)
- if (x < 1)
- fun_l26_n668(x)
- else
- fun_l26_n592(x)
- end
-end
-
-def fun_l25_n740(x)
- if (x < 1)
- fun_l26_n497(x)
- else
- fun_l26_n98(x)
- end
-end
-
-def fun_l25_n741(x)
- if (x < 1)
- fun_l26_n415(x)
- else
- fun_l26_n85(x)
- end
-end
-
-def fun_l25_n742(x)
- if (x < 1)
- fun_l26_n883(x)
- else
- fun_l26_n505(x)
- end
-end
-
-def fun_l25_n743(x)
- if (x < 1)
- fun_l26_n12(x)
- else
- fun_l26_n91(x)
- end
-end
-
-def fun_l25_n744(x)
- if (x < 1)
- fun_l26_n487(x)
- else
- fun_l26_n336(x)
- end
-end
-
-def fun_l25_n745(x)
- if (x < 1)
- fun_l26_n489(x)
- else
- fun_l26_n186(x)
- end
-end
-
-def fun_l25_n746(x)
- if (x < 1)
- fun_l26_n783(x)
- else
- fun_l26_n233(x)
- end
-end
-
-def fun_l25_n747(x)
- if (x < 1)
- fun_l26_n171(x)
- else
- fun_l26_n574(x)
- end
-end
-
-def fun_l25_n748(x)
- if (x < 1)
- fun_l26_n171(x)
- else
- fun_l26_n61(x)
- end
-end
-
-def fun_l25_n749(x)
- if (x < 1)
- fun_l26_n444(x)
- else
- fun_l26_n89(x)
- end
-end
-
-def fun_l25_n750(x)
- if (x < 1)
- fun_l26_n609(x)
- else
- fun_l26_n998(x)
- end
-end
-
-def fun_l25_n751(x)
- if (x < 1)
- fun_l26_n914(x)
- else
- fun_l26_n893(x)
- end
-end
-
-def fun_l25_n752(x)
- if (x < 1)
- fun_l26_n782(x)
- else
- fun_l26_n984(x)
- end
-end
-
-def fun_l25_n753(x)
- if (x < 1)
- fun_l26_n351(x)
- else
- fun_l26_n370(x)
- end
-end
-
-def fun_l25_n754(x)
- if (x < 1)
- fun_l26_n689(x)
- else
- fun_l26_n234(x)
- end
-end
-
-def fun_l25_n755(x)
- if (x < 1)
- fun_l26_n131(x)
- else
- fun_l26_n960(x)
- end
-end
-
-def fun_l25_n756(x)
- if (x < 1)
- fun_l26_n635(x)
- else
- fun_l26_n89(x)
- end
-end
-
-def fun_l25_n757(x)
- if (x < 1)
- fun_l26_n309(x)
- else
- fun_l26_n74(x)
- end
-end
-
-def fun_l25_n758(x)
- if (x < 1)
- fun_l26_n818(x)
- else
- fun_l26_n520(x)
- end
-end
-
-def fun_l25_n759(x)
- if (x < 1)
- fun_l26_n873(x)
- else
- fun_l26_n761(x)
- end
-end
-
-def fun_l25_n760(x)
- if (x < 1)
- fun_l26_n216(x)
- else
- fun_l26_n449(x)
- end
-end
-
-def fun_l25_n761(x)
- if (x < 1)
- fun_l26_n596(x)
- else
- fun_l26_n617(x)
- end
-end
-
-def fun_l25_n762(x)
- if (x < 1)
- fun_l26_n485(x)
- else
- fun_l26_n164(x)
- end
-end
-
-def fun_l25_n763(x)
- if (x < 1)
- fun_l26_n434(x)
- else
- fun_l26_n422(x)
- end
-end
-
-def fun_l25_n764(x)
- if (x < 1)
- fun_l26_n845(x)
- else
- fun_l26_n678(x)
- end
-end
-
-def fun_l25_n765(x)
- if (x < 1)
- fun_l26_n376(x)
- else
- fun_l26_n128(x)
- end
-end
-
-def fun_l25_n766(x)
- if (x < 1)
- fun_l26_n217(x)
- else
- fun_l26_n721(x)
- end
-end
-
-def fun_l25_n767(x)
- if (x < 1)
- fun_l26_n929(x)
- else
- fun_l26_n425(x)
- end
-end
-
-def fun_l25_n768(x)
- if (x < 1)
- fun_l26_n420(x)
- else
- fun_l26_n990(x)
- end
-end
-
-def fun_l25_n769(x)
- if (x < 1)
- fun_l26_n310(x)
- else
- fun_l26_n901(x)
- end
-end
-
-def fun_l25_n770(x)
- if (x < 1)
- fun_l26_n667(x)
- else
- fun_l26_n627(x)
- end
-end
-
-def fun_l25_n771(x)
- if (x < 1)
- fun_l26_n265(x)
- else
- fun_l26_n852(x)
- end
-end
-
-def fun_l25_n772(x)
- if (x < 1)
- fun_l26_n520(x)
- else
- fun_l26_n596(x)
- end
-end
-
-def fun_l25_n773(x)
- if (x < 1)
- fun_l26_n280(x)
- else
- fun_l26_n0(x)
- end
-end
-
-def fun_l25_n774(x)
- if (x < 1)
- fun_l26_n451(x)
- else
- fun_l26_n828(x)
- end
-end
-
-def fun_l25_n775(x)
- if (x < 1)
- fun_l26_n814(x)
- else
- fun_l26_n797(x)
- end
-end
-
-def fun_l25_n776(x)
- if (x < 1)
- fun_l26_n345(x)
- else
- fun_l26_n223(x)
- end
-end
-
-def fun_l25_n777(x)
- if (x < 1)
- fun_l26_n392(x)
- else
- fun_l26_n847(x)
- end
-end
-
-def fun_l25_n778(x)
- if (x < 1)
- fun_l26_n957(x)
- else
- fun_l26_n474(x)
- end
-end
-
-def fun_l25_n779(x)
- if (x < 1)
- fun_l26_n950(x)
- else
- fun_l26_n804(x)
- end
-end
-
-def fun_l25_n780(x)
- if (x < 1)
- fun_l26_n939(x)
- else
- fun_l26_n133(x)
- end
-end
-
-def fun_l25_n781(x)
- if (x < 1)
- fun_l26_n176(x)
- else
- fun_l26_n237(x)
- end
-end
-
-def fun_l25_n782(x)
- if (x < 1)
- fun_l26_n156(x)
- else
- fun_l26_n268(x)
- end
-end
-
-def fun_l25_n783(x)
- if (x < 1)
- fun_l26_n750(x)
- else
- fun_l26_n88(x)
- end
-end
-
-def fun_l25_n784(x)
- if (x < 1)
- fun_l26_n638(x)
- else
- fun_l26_n147(x)
- end
-end
-
-def fun_l25_n785(x)
- if (x < 1)
- fun_l26_n570(x)
- else
- fun_l26_n698(x)
- end
-end
-
-def fun_l25_n786(x)
- if (x < 1)
- fun_l26_n749(x)
- else
- fun_l26_n728(x)
- end
-end
-
-def fun_l25_n787(x)
- if (x < 1)
- fun_l26_n183(x)
- else
- fun_l26_n649(x)
- end
-end
-
-def fun_l25_n788(x)
- if (x < 1)
- fun_l26_n157(x)
- else
- fun_l26_n55(x)
- end
-end
-
-def fun_l25_n789(x)
- if (x < 1)
- fun_l26_n559(x)
- else
- fun_l26_n228(x)
- end
-end
-
-def fun_l25_n790(x)
- if (x < 1)
- fun_l26_n690(x)
- else
- fun_l26_n214(x)
- end
-end
-
-def fun_l25_n791(x)
- if (x < 1)
- fun_l26_n621(x)
- else
- fun_l26_n184(x)
- end
-end
-
-def fun_l25_n792(x)
- if (x < 1)
- fun_l26_n13(x)
- else
- fun_l26_n610(x)
- end
-end
-
-def fun_l25_n793(x)
- if (x < 1)
- fun_l26_n709(x)
- else
- fun_l26_n40(x)
- end
-end
-
-def fun_l25_n794(x)
- if (x < 1)
- fun_l26_n51(x)
- else
- fun_l26_n288(x)
- end
-end
-
-def fun_l25_n795(x)
- if (x < 1)
- fun_l26_n526(x)
- else
- fun_l26_n237(x)
- end
-end
-
-def fun_l25_n796(x)
- if (x < 1)
- fun_l26_n279(x)
- else
- fun_l26_n157(x)
- end
-end
-
-def fun_l25_n797(x)
- if (x < 1)
- fun_l26_n299(x)
- else
- fun_l26_n999(x)
- end
-end
-
-def fun_l25_n798(x)
- if (x < 1)
- fun_l26_n547(x)
- else
- fun_l26_n41(x)
- end
-end
-
-def fun_l25_n799(x)
- if (x < 1)
- fun_l26_n522(x)
- else
- fun_l26_n544(x)
- end
-end
-
-def fun_l25_n800(x)
- if (x < 1)
- fun_l26_n509(x)
- else
- fun_l26_n364(x)
- end
-end
-
-def fun_l25_n801(x)
- if (x < 1)
- fun_l26_n412(x)
- else
- fun_l26_n719(x)
- end
-end
-
-def fun_l25_n802(x)
- if (x < 1)
- fun_l26_n844(x)
- else
- fun_l26_n452(x)
- end
-end
-
-def fun_l25_n803(x)
- if (x < 1)
- fun_l26_n681(x)
- else
- fun_l26_n217(x)
- end
-end
-
-def fun_l25_n804(x)
- if (x < 1)
- fun_l26_n855(x)
- else
- fun_l26_n97(x)
- end
-end
-
-def fun_l25_n805(x)
- if (x < 1)
- fun_l26_n32(x)
- else
- fun_l26_n512(x)
- end
-end
-
-def fun_l25_n806(x)
- if (x < 1)
- fun_l26_n674(x)
- else
- fun_l26_n675(x)
- end
-end
-
-def fun_l25_n807(x)
- if (x < 1)
- fun_l26_n684(x)
- else
- fun_l26_n848(x)
- end
-end
-
-def fun_l25_n808(x)
- if (x < 1)
- fun_l26_n784(x)
- else
- fun_l26_n603(x)
- end
-end
-
-def fun_l25_n809(x)
- if (x < 1)
- fun_l26_n58(x)
- else
- fun_l26_n20(x)
- end
-end
-
-def fun_l25_n810(x)
- if (x < 1)
- fun_l26_n654(x)
- else
- fun_l26_n230(x)
- end
-end
-
-def fun_l25_n811(x)
- if (x < 1)
- fun_l26_n627(x)
- else
- fun_l26_n812(x)
- end
-end
-
-def fun_l25_n812(x)
- if (x < 1)
- fun_l26_n30(x)
- else
- fun_l26_n315(x)
- end
-end
-
-def fun_l25_n813(x)
- if (x < 1)
- fun_l26_n690(x)
- else
- fun_l26_n755(x)
- end
-end
-
-def fun_l25_n814(x)
- if (x < 1)
- fun_l26_n566(x)
- else
- fun_l26_n44(x)
- end
-end
-
-def fun_l25_n815(x)
- if (x < 1)
- fun_l26_n884(x)
- else
- fun_l26_n954(x)
- end
-end
-
-def fun_l25_n816(x)
- if (x < 1)
- fun_l26_n64(x)
- else
- fun_l26_n179(x)
- end
-end
-
-def fun_l25_n817(x)
- if (x < 1)
- fun_l26_n341(x)
- else
- fun_l26_n440(x)
- end
-end
-
-def fun_l25_n818(x)
- if (x < 1)
- fun_l26_n934(x)
- else
- fun_l26_n678(x)
- end
-end
-
-def fun_l25_n819(x)
- if (x < 1)
- fun_l26_n225(x)
- else
- fun_l26_n807(x)
- end
-end
-
-def fun_l25_n820(x)
- if (x < 1)
- fun_l26_n625(x)
- else
- fun_l26_n63(x)
- end
-end
-
-def fun_l25_n821(x)
- if (x < 1)
- fun_l26_n744(x)
- else
- fun_l26_n68(x)
- end
-end
-
-def fun_l25_n822(x)
- if (x < 1)
- fun_l26_n962(x)
- else
- fun_l26_n205(x)
- end
-end
-
-def fun_l25_n823(x)
- if (x < 1)
- fun_l26_n715(x)
- else
- fun_l26_n130(x)
- end
-end
-
-def fun_l25_n824(x)
- if (x < 1)
- fun_l26_n843(x)
- else
- fun_l26_n853(x)
- end
-end
-
-def fun_l25_n825(x)
- if (x < 1)
- fun_l26_n34(x)
- else
- fun_l26_n665(x)
- end
-end
-
-def fun_l25_n826(x)
- if (x < 1)
- fun_l26_n540(x)
- else
- fun_l26_n693(x)
- end
-end
-
-def fun_l25_n827(x)
- if (x < 1)
- fun_l26_n482(x)
- else
- fun_l26_n527(x)
- end
-end
-
-def fun_l25_n828(x)
- if (x < 1)
- fun_l26_n98(x)
- else
- fun_l26_n888(x)
- end
-end
-
-def fun_l25_n829(x)
- if (x < 1)
- fun_l26_n681(x)
- else
- fun_l26_n176(x)
- end
-end
-
-def fun_l25_n830(x)
- if (x < 1)
- fun_l26_n453(x)
- else
- fun_l26_n455(x)
- end
-end
-
-def fun_l25_n831(x)
- if (x < 1)
- fun_l26_n587(x)
- else
- fun_l26_n501(x)
- end
-end
-
-def fun_l25_n832(x)
- if (x < 1)
- fun_l26_n725(x)
- else
- fun_l26_n608(x)
- end
-end
-
-def fun_l25_n833(x)
- if (x < 1)
- fun_l26_n589(x)
- else
- fun_l26_n945(x)
- end
-end
-
-def fun_l25_n834(x)
- if (x < 1)
- fun_l26_n41(x)
- else
- fun_l26_n925(x)
- end
-end
-
-def fun_l25_n835(x)
- if (x < 1)
- fun_l26_n858(x)
- else
- fun_l26_n840(x)
- end
-end
-
-def fun_l25_n836(x)
- if (x < 1)
- fun_l26_n572(x)
- else
- fun_l26_n360(x)
- end
-end
-
-def fun_l25_n837(x)
- if (x < 1)
- fun_l26_n446(x)
- else
- fun_l26_n912(x)
- end
-end
-
-def fun_l25_n838(x)
- if (x < 1)
- fun_l26_n104(x)
- else
- fun_l26_n795(x)
- end
-end
-
-def fun_l25_n839(x)
- if (x < 1)
- fun_l26_n607(x)
- else
- fun_l26_n803(x)
- end
-end
-
-def fun_l25_n840(x)
- if (x < 1)
- fun_l26_n156(x)
- else
- fun_l26_n874(x)
- end
-end
-
-def fun_l25_n841(x)
- if (x < 1)
- fun_l26_n314(x)
- else
- fun_l26_n28(x)
- end
-end
-
-def fun_l25_n842(x)
- if (x < 1)
- fun_l26_n683(x)
- else
- fun_l26_n695(x)
- end
-end
-
-def fun_l25_n843(x)
- if (x < 1)
- fun_l26_n881(x)
- else
- fun_l26_n272(x)
- end
-end
-
-def fun_l25_n844(x)
- if (x < 1)
- fun_l26_n354(x)
- else
- fun_l26_n993(x)
- end
-end
-
-def fun_l25_n845(x)
- if (x < 1)
- fun_l26_n686(x)
- else
- fun_l26_n594(x)
- end
-end
-
-def fun_l25_n846(x)
- if (x < 1)
- fun_l26_n644(x)
- else
- fun_l26_n930(x)
- end
-end
-
-def fun_l25_n847(x)
- if (x < 1)
- fun_l26_n417(x)
- else
- fun_l26_n705(x)
- end
-end
-
-def fun_l25_n848(x)
- if (x < 1)
- fun_l26_n694(x)
- else
- fun_l26_n331(x)
- end
-end
-
-def fun_l25_n849(x)
- if (x < 1)
- fun_l26_n546(x)
- else
- fun_l26_n848(x)
- end
-end
-
-def fun_l25_n850(x)
- if (x < 1)
- fun_l26_n199(x)
- else
- fun_l26_n49(x)
- end
-end
-
-def fun_l25_n851(x)
- if (x < 1)
- fun_l26_n439(x)
- else
- fun_l26_n406(x)
- end
-end
-
-def fun_l25_n852(x)
- if (x < 1)
- fun_l26_n355(x)
- else
- fun_l26_n582(x)
- end
-end
-
-def fun_l25_n853(x)
- if (x < 1)
- fun_l26_n839(x)
- else
- fun_l26_n485(x)
- end
-end
-
-def fun_l25_n854(x)
- if (x < 1)
- fun_l26_n952(x)
- else
- fun_l26_n781(x)
- end
-end
-
-def fun_l25_n855(x)
- if (x < 1)
- fun_l26_n616(x)
- else
- fun_l26_n811(x)
- end
-end
-
-def fun_l25_n856(x)
- if (x < 1)
- fun_l26_n590(x)
- else
- fun_l26_n977(x)
- end
-end
-
-def fun_l25_n857(x)
- if (x < 1)
- fun_l26_n167(x)
- else
- fun_l26_n329(x)
- end
-end
-
-def fun_l25_n858(x)
- if (x < 1)
- fun_l26_n732(x)
- else
- fun_l26_n707(x)
- end
-end
-
-def fun_l25_n859(x)
- if (x < 1)
- fun_l26_n956(x)
- else
- fun_l26_n955(x)
- end
-end
-
-def fun_l25_n860(x)
- if (x < 1)
- fun_l26_n443(x)
- else
- fun_l26_n816(x)
- end
-end
-
-def fun_l25_n861(x)
- if (x < 1)
- fun_l26_n584(x)
- else
- fun_l26_n671(x)
- end
-end
-
-def fun_l25_n862(x)
- if (x < 1)
- fun_l26_n43(x)
- else
- fun_l26_n0(x)
- end
-end
-
-def fun_l25_n863(x)
- if (x < 1)
- fun_l26_n697(x)
- else
- fun_l26_n842(x)
- end
-end
-
-def fun_l25_n864(x)
- if (x < 1)
- fun_l26_n423(x)
- else
- fun_l26_n509(x)
- end
-end
-
-def fun_l25_n865(x)
- if (x < 1)
- fun_l26_n239(x)
- else
- fun_l26_n257(x)
- end
-end
-
-def fun_l25_n866(x)
- if (x < 1)
- fun_l26_n78(x)
- else
- fun_l26_n450(x)
- end
-end
-
-def fun_l25_n867(x)
- if (x < 1)
- fun_l26_n121(x)
- else
- fun_l26_n453(x)
- end
-end
-
-def fun_l25_n868(x)
- if (x < 1)
- fun_l26_n844(x)
- else
- fun_l26_n977(x)
- end
-end
-
-def fun_l25_n869(x)
- if (x < 1)
- fun_l26_n54(x)
- else
- fun_l26_n869(x)
- end
-end
-
-def fun_l25_n870(x)
- if (x < 1)
- fun_l26_n18(x)
- else
- fun_l26_n799(x)
- end
-end
-
-def fun_l25_n871(x)
- if (x < 1)
- fun_l26_n990(x)
- else
- fun_l26_n53(x)
- end
-end
-
-def fun_l25_n872(x)
- if (x < 1)
- fun_l26_n607(x)
- else
- fun_l26_n822(x)
- end
-end
-
-def fun_l25_n873(x)
- if (x < 1)
- fun_l26_n378(x)
- else
- fun_l26_n158(x)
- end
-end
-
-def fun_l25_n874(x)
- if (x < 1)
- fun_l26_n206(x)
- else
- fun_l26_n271(x)
- end
-end
-
-def fun_l25_n875(x)
- if (x < 1)
- fun_l26_n536(x)
- else
- fun_l26_n850(x)
- end
-end
-
-def fun_l25_n876(x)
- if (x < 1)
- fun_l26_n129(x)
- else
- fun_l26_n750(x)
- end
-end
-
-def fun_l25_n877(x)
- if (x < 1)
- fun_l26_n553(x)
- else
- fun_l26_n815(x)
- end
-end
-
-def fun_l25_n878(x)
- if (x < 1)
- fun_l26_n619(x)
- else
- fun_l26_n182(x)
- end
-end
-
-def fun_l25_n879(x)
- if (x < 1)
- fun_l26_n529(x)
- else
- fun_l26_n541(x)
- end
-end
-
-def fun_l25_n880(x)
- if (x < 1)
- fun_l26_n228(x)
- else
- fun_l26_n672(x)
- end
-end
-
-def fun_l25_n881(x)
- if (x < 1)
- fun_l26_n834(x)
- else
- fun_l26_n830(x)
- end
-end
-
-def fun_l25_n882(x)
- if (x < 1)
- fun_l26_n80(x)
- else
- fun_l26_n257(x)
- end
-end
-
-def fun_l25_n883(x)
- if (x < 1)
- fun_l26_n805(x)
- else
- fun_l26_n589(x)
- end
-end
-
-def fun_l25_n884(x)
- if (x < 1)
- fun_l26_n20(x)
- else
- fun_l26_n880(x)
- end
-end
-
-def fun_l25_n885(x)
- if (x < 1)
- fun_l26_n924(x)
- else
- fun_l26_n832(x)
- end
-end
-
-def fun_l25_n886(x)
- if (x < 1)
- fun_l26_n262(x)
- else
- fun_l26_n928(x)
- end
-end
-
-def fun_l25_n887(x)
- if (x < 1)
- fun_l26_n461(x)
- else
- fun_l26_n81(x)
- end
-end
-
-def fun_l25_n888(x)
- if (x < 1)
- fun_l26_n484(x)
- else
- fun_l26_n376(x)
- end
-end
-
-def fun_l25_n889(x)
- if (x < 1)
- fun_l26_n26(x)
- else
- fun_l26_n28(x)
- end
-end
-
-def fun_l25_n890(x)
- if (x < 1)
- fun_l26_n184(x)
- else
- fun_l26_n623(x)
- end
-end
-
-def fun_l25_n891(x)
- if (x < 1)
- fun_l26_n326(x)
- else
- fun_l26_n441(x)
- end
-end
-
-def fun_l25_n892(x)
- if (x < 1)
- fun_l26_n35(x)
- else
- fun_l26_n543(x)
- end
-end
-
-def fun_l25_n893(x)
- if (x < 1)
- fun_l26_n568(x)
- else
- fun_l26_n229(x)
- end
-end
-
-def fun_l25_n894(x)
- if (x < 1)
- fun_l26_n163(x)
- else
- fun_l26_n505(x)
- end
-end
-
-def fun_l25_n895(x)
- if (x < 1)
- fun_l26_n675(x)
- else
- fun_l26_n508(x)
- end
-end
-
-def fun_l25_n896(x)
- if (x < 1)
- fun_l26_n285(x)
- else
- fun_l26_n936(x)
- end
-end
-
-def fun_l25_n897(x)
- if (x < 1)
- fun_l26_n848(x)
- else
- fun_l26_n169(x)
- end
-end
-
-def fun_l25_n898(x)
- if (x < 1)
- fun_l26_n139(x)
- else
- fun_l26_n479(x)
- end
-end
-
-def fun_l25_n899(x)
- if (x < 1)
- fun_l26_n355(x)
- else
- fun_l26_n49(x)
- end
-end
-
-def fun_l25_n900(x)
- if (x < 1)
- fun_l26_n918(x)
- else
- fun_l26_n215(x)
- end
-end
-
-def fun_l25_n901(x)
- if (x < 1)
- fun_l26_n55(x)
- else
- fun_l26_n550(x)
- end
-end
-
-def fun_l25_n902(x)
- if (x < 1)
- fun_l26_n660(x)
- else
- fun_l26_n117(x)
- end
-end
-
-def fun_l25_n903(x)
- if (x < 1)
- fun_l26_n968(x)
- else
- fun_l26_n279(x)
- end
-end
-
-def fun_l25_n904(x)
- if (x < 1)
- fun_l26_n693(x)
- else
- fun_l26_n57(x)
- end
-end
-
-def fun_l25_n905(x)
- if (x < 1)
- fun_l26_n248(x)
- else
- fun_l26_n154(x)
- end
-end
-
-def fun_l25_n906(x)
- if (x < 1)
- fun_l26_n837(x)
- else
- fun_l26_n698(x)
- end
-end
-
-def fun_l25_n907(x)
- if (x < 1)
- fun_l26_n630(x)
- else
- fun_l26_n460(x)
- end
-end
-
-def fun_l25_n908(x)
- if (x < 1)
- fun_l26_n424(x)
- else
- fun_l26_n243(x)
- end
-end
-
-def fun_l25_n909(x)
- if (x < 1)
- fun_l26_n897(x)
- else
- fun_l26_n736(x)
- end
-end
-
-def fun_l25_n910(x)
- if (x < 1)
- fun_l26_n573(x)
- else
- fun_l26_n205(x)
- end
-end
-
-def fun_l25_n911(x)
- if (x < 1)
- fun_l26_n535(x)
- else
- fun_l26_n970(x)
- end
-end
-
-def fun_l25_n912(x)
- if (x < 1)
- fun_l26_n826(x)
- else
- fun_l26_n744(x)
- end
-end
-
-def fun_l25_n913(x)
- if (x < 1)
- fun_l26_n244(x)
- else
- fun_l26_n216(x)
- end
-end
-
-def fun_l25_n914(x)
- if (x < 1)
- fun_l26_n958(x)
- else
- fun_l26_n617(x)
- end
-end
-
-def fun_l25_n915(x)
- if (x < 1)
- fun_l26_n911(x)
- else
- fun_l26_n684(x)
- end
-end
-
-def fun_l25_n916(x)
- if (x < 1)
- fun_l26_n294(x)
- else
- fun_l26_n319(x)
- end
-end
-
-def fun_l25_n917(x)
- if (x < 1)
- fun_l26_n665(x)
- else
- fun_l26_n867(x)
- end
-end
-
-def fun_l25_n918(x)
- if (x < 1)
- fun_l26_n733(x)
- else
- fun_l26_n746(x)
- end
-end
-
-def fun_l25_n919(x)
- if (x < 1)
- fun_l26_n243(x)
- else
- fun_l26_n328(x)
- end
-end
-
-def fun_l25_n920(x)
- if (x < 1)
- fun_l26_n897(x)
- else
- fun_l26_n197(x)
- end
-end
-
-def fun_l25_n921(x)
- if (x < 1)
- fun_l26_n528(x)
- else
- fun_l26_n229(x)
- end
-end
-
-def fun_l25_n922(x)
- if (x < 1)
- fun_l26_n897(x)
- else
- fun_l26_n547(x)
- end
-end
-
-def fun_l25_n923(x)
- if (x < 1)
- fun_l26_n234(x)
- else
- fun_l26_n920(x)
- end
-end
-
-def fun_l25_n924(x)
- if (x < 1)
- fun_l26_n827(x)
- else
- fun_l26_n257(x)
- end
-end
-
-def fun_l25_n925(x)
- if (x < 1)
- fun_l26_n847(x)
- else
- fun_l26_n469(x)
- end
-end
-
-def fun_l25_n926(x)
- if (x < 1)
- fun_l26_n27(x)
- else
- fun_l26_n974(x)
- end
-end
-
-def fun_l25_n927(x)
- if (x < 1)
- fun_l26_n872(x)
- else
- fun_l26_n535(x)
- end
-end
-
-def fun_l25_n928(x)
- if (x < 1)
- fun_l26_n870(x)
- else
- fun_l26_n783(x)
- end
-end
-
-def fun_l25_n929(x)
- if (x < 1)
- fun_l26_n993(x)
- else
- fun_l26_n168(x)
- end
-end
-
-def fun_l25_n930(x)
- if (x < 1)
- fun_l26_n852(x)
- else
- fun_l26_n41(x)
- end
-end
-
-def fun_l25_n931(x)
- if (x < 1)
- fun_l26_n290(x)
- else
- fun_l26_n249(x)
- end
-end
-
-def fun_l25_n932(x)
- if (x < 1)
- fun_l26_n446(x)
- else
- fun_l26_n841(x)
- end
-end
-
-def fun_l25_n933(x)
- if (x < 1)
- fun_l26_n303(x)
- else
- fun_l26_n779(x)
- end
-end
-
-def fun_l25_n934(x)
- if (x < 1)
- fun_l26_n352(x)
- else
- fun_l26_n731(x)
- end
-end
-
-def fun_l25_n935(x)
- if (x < 1)
- fun_l26_n377(x)
- else
- fun_l26_n214(x)
- end
-end
-
-def fun_l25_n936(x)
- if (x < 1)
- fun_l26_n374(x)
- else
- fun_l26_n793(x)
- end
-end
-
-def fun_l25_n937(x)
- if (x < 1)
- fun_l26_n656(x)
- else
- fun_l26_n575(x)
- end
-end
-
-def fun_l25_n938(x)
- if (x < 1)
- fun_l26_n777(x)
- else
- fun_l26_n773(x)
- end
-end
-
-def fun_l25_n939(x)
- if (x < 1)
- fun_l26_n5(x)
- else
- fun_l26_n206(x)
- end
-end
-
-def fun_l25_n940(x)
- if (x < 1)
- fun_l26_n780(x)
- else
- fun_l26_n486(x)
- end
-end
-
-def fun_l25_n941(x)
- if (x < 1)
- fun_l26_n634(x)
- else
- fun_l26_n727(x)
- end
-end
-
-def fun_l25_n942(x)
- if (x < 1)
- fun_l26_n78(x)
- else
- fun_l26_n918(x)
- end
-end
-
-def fun_l25_n943(x)
- if (x < 1)
- fun_l26_n616(x)
- else
- fun_l26_n35(x)
- end
-end
-
-def fun_l25_n944(x)
- if (x < 1)
- fun_l26_n540(x)
- else
- fun_l26_n837(x)
- end
-end
-
-def fun_l25_n945(x)
- if (x < 1)
- fun_l26_n365(x)
- else
- fun_l26_n561(x)
- end
-end
-
-def fun_l25_n946(x)
- if (x < 1)
- fun_l26_n519(x)
- else
- fun_l26_n440(x)
- end
-end
-
-def fun_l25_n947(x)
- if (x < 1)
- fun_l26_n144(x)
- else
- fun_l26_n426(x)
- end
-end
-
-def fun_l25_n948(x)
- if (x < 1)
- fun_l26_n973(x)
- else
- fun_l26_n63(x)
- end
-end
-
-def fun_l25_n949(x)
- if (x < 1)
- fun_l26_n258(x)
- else
- fun_l26_n690(x)
- end
-end
-
-def fun_l25_n950(x)
- if (x < 1)
- fun_l26_n368(x)
- else
- fun_l26_n307(x)
- end
-end
-
-def fun_l25_n951(x)
- if (x < 1)
- fun_l26_n133(x)
- else
- fun_l26_n774(x)
- end
-end
-
-def fun_l25_n952(x)
- if (x < 1)
- fun_l26_n866(x)
- else
- fun_l26_n299(x)
- end
-end
-
-def fun_l25_n953(x)
- if (x < 1)
- fun_l26_n72(x)
- else
- fun_l26_n421(x)
- end
-end
-
-def fun_l25_n954(x)
- if (x < 1)
- fun_l26_n990(x)
- else
- fun_l26_n716(x)
- end
-end
-
-def fun_l25_n955(x)
- if (x < 1)
- fun_l26_n138(x)
- else
- fun_l26_n387(x)
- end
-end
-
-def fun_l25_n956(x)
- if (x < 1)
- fun_l26_n451(x)
- else
- fun_l26_n965(x)
- end
-end
-
-def fun_l25_n957(x)
- if (x < 1)
- fun_l26_n292(x)
- else
- fun_l26_n741(x)
- end
-end
-
-def fun_l25_n958(x)
- if (x < 1)
- fun_l26_n835(x)
- else
- fun_l26_n82(x)
- end
-end
-
-def fun_l25_n959(x)
- if (x < 1)
- fun_l26_n73(x)
- else
- fun_l26_n987(x)
- end
-end
-
-def fun_l25_n960(x)
- if (x < 1)
- fun_l26_n465(x)
- else
- fun_l26_n893(x)
- end
-end
-
-def fun_l25_n961(x)
- if (x < 1)
- fun_l26_n277(x)
- else
- fun_l26_n846(x)
- end
-end
-
-def fun_l25_n962(x)
- if (x < 1)
- fun_l26_n1(x)
- else
- fun_l26_n408(x)
- end
-end
-
-def fun_l25_n963(x)
- if (x < 1)
- fun_l26_n139(x)
- else
- fun_l26_n43(x)
- end
-end
-
-def fun_l25_n964(x)
- if (x < 1)
- fun_l26_n238(x)
- else
- fun_l26_n427(x)
- end
-end
-
-def fun_l25_n965(x)
- if (x < 1)
- fun_l26_n150(x)
- else
- fun_l26_n60(x)
- end
-end
-
-def fun_l25_n966(x)
- if (x < 1)
- fun_l26_n423(x)
- else
- fun_l26_n166(x)
- end
-end
-
-def fun_l25_n967(x)
- if (x < 1)
- fun_l26_n102(x)
- else
- fun_l26_n679(x)
- end
-end
-
-def fun_l25_n968(x)
- if (x < 1)
- fun_l26_n41(x)
- else
- fun_l26_n553(x)
- end
-end
-
-def fun_l25_n969(x)
- if (x < 1)
- fun_l26_n577(x)
- else
- fun_l26_n589(x)
- end
-end
-
-def fun_l25_n970(x)
- if (x < 1)
- fun_l26_n569(x)
- else
- fun_l26_n677(x)
- end
-end
-
-def fun_l25_n971(x)
- if (x < 1)
- fun_l26_n845(x)
- else
- fun_l26_n237(x)
- end
-end
-
-def fun_l25_n972(x)
- if (x < 1)
- fun_l26_n33(x)
- else
- fun_l26_n281(x)
- end
-end
-
-def fun_l25_n973(x)
- if (x < 1)
- fun_l26_n432(x)
- else
- fun_l26_n800(x)
- end
-end
-
-def fun_l25_n974(x)
- if (x < 1)
- fun_l26_n49(x)
- else
- fun_l26_n864(x)
- end
-end
-
-def fun_l25_n975(x)
- if (x < 1)
- fun_l26_n379(x)
- else
- fun_l26_n704(x)
- end
-end
-
-def fun_l25_n976(x)
- if (x < 1)
- fun_l26_n778(x)
- else
- fun_l26_n310(x)
- end
-end
-
-def fun_l25_n977(x)
- if (x < 1)
- fun_l26_n137(x)
- else
- fun_l26_n261(x)
- end
-end
-
-def fun_l25_n978(x)
- if (x < 1)
- fun_l26_n38(x)
- else
- fun_l26_n244(x)
- end
-end
-
-def fun_l25_n979(x)
- if (x < 1)
- fun_l26_n665(x)
- else
- fun_l26_n883(x)
- end
-end
-
-def fun_l25_n980(x)
- if (x < 1)
- fun_l26_n448(x)
- else
- fun_l26_n619(x)
- end
-end
-
-def fun_l25_n981(x)
- if (x < 1)
- fun_l26_n652(x)
- else
- fun_l26_n804(x)
- end
-end
-
-def fun_l25_n982(x)
- if (x < 1)
- fun_l26_n804(x)
- else
- fun_l26_n110(x)
- end
-end
-
-def fun_l25_n983(x)
- if (x < 1)
- fun_l26_n151(x)
- else
- fun_l26_n588(x)
- end
-end
-
-def fun_l25_n984(x)
- if (x < 1)
- fun_l26_n379(x)
- else
- fun_l26_n156(x)
- end
-end
-
-def fun_l25_n985(x)
- if (x < 1)
- fun_l26_n936(x)
- else
- fun_l26_n31(x)
- end
-end
-
-def fun_l25_n986(x)
- if (x < 1)
- fun_l26_n65(x)
- else
- fun_l26_n303(x)
- end
-end
-
-def fun_l25_n987(x)
- if (x < 1)
- fun_l26_n273(x)
- else
- fun_l26_n4(x)
- end
-end
-
-def fun_l25_n988(x)
- if (x < 1)
- fun_l26_n538(x)
- else
- fun_l26_n357(x)
- end
-end
-
-def fun_l25_n989(x)
- if (x < 1)
- fun_l26_n922(x)
- else
- fun_l26_n457(x)
- end
-end
-
-def fun_l25_n990(x)
- if (x < 1)
- fun_l26_n250(x)
- else
- fun_l26_n945(x)
- end
-end
-
-def fun_l25_n991(x)
- if (x < 1)
- fun_l26_n878(x)
- else
- fun_l26_n992(x)
- end
-end
-
-def fun_l25_n992(x)
- if (x < 1)
- fun_l26_n767(x)
- else
- fun_l26_n132(x)
- end
-end
-
-def fun_l25_n993(x)
- if (x < 1)
- fun_l26_n737(x)
- else
- fun_l26_n323(x)
- end
-end
-
-def fun_l25_n994(x)
- if (x < 1)
- fun_l26_n173(x)
- else
- fun_l26_n424(x)
- end
-end
-
-def fun_l25_n995(x)
- if (x < 1)
- fun_l26_n860(x)
- else
- fun_l26_n390(x)
- end
-end
-
-def fun_l25_n996(x)
- if (x < 1)
- fun_l26_n794(x)
- else
- fun_l26_n613(x)
- end
-end
-
-def fun_l25_n997(x)
- if (x < 1)
- fun_l26_n807(x)
- else
- fun_l26_n277(x)
- end
-end
-
-def fun_l25_n998(x)
- if (x < 1)
- fun_l26_n418(x)
- else
- fun_l26_n830(x)
- end
-end
-
-def fun_l25_n999(x)
- if (x < 1)
- fun_l26_n212(x)
- else
- fun_l26_n863(x)
- end
-end
-
-def fun_l26_n0(x)
- if (x < 1)
- fun_l27_n276(x)
- else
- fun_l27_n243(x)
- end
-end
-
-def fun_l26_n1(x)
- if (x < 1)
- fun_l27_n136(x)
- else
- fun_l27_n625(x)
- end
-end
-
-def fun_l26_n2(x)
- if (x < 1)
- fun_l27_n205(x)
- else
- fun_l27_n576(x)
- end
-end
-
-def fun_l26_n3(x)
- if (x < 1)
- fun_l27_n97(x)
- else
- fun_l27_n753(x)
- end
-end
-
-def fun_l26_n4(x)
- if (x < 1)
- fun_l27_n984(x)
- else
- fun_l27_n827(x)
- end
-end
-
-def fun_l26_n5(x)
- if (x < 1)
- fun_l27_n428(x)
- else
- fun_l27_n559(x)
- end
-end
-
-def fun_l26_n6(x)
- if (x < 1)
- fun_l27_n148(x)
- else
- fun_l27_n351(x)
- end
-end
-
-def fun_l26_n7(x)
- if (x < 1)
- fun_l27_n90(x)
- else
- fun_l27_n241(x)
- end
-end
-
-def fun_l26_n8(x)
- if (x < 1)
- fun_l27_n860(x)
- else
- fun_l27_n495(x)
- end
-end
-
-def fun_l26_n9(x)
- if (x < 1)
- fun_l27_n245(x)
- else
- fun_l27_n429(x)
- end
-end
-
-def fun_l26_n10(x)
- if (x < 1)
- fun_l27_n999(x)
- else
- fun_l27_n536(x)
- end
-end
-
-def fun_l26_n11(x)
- if (x < 1)
- fun_l27_n777(x)
- else
- fun_l27_n823(x)
- end
-end
-
-def fun_l26_n12(x)
- if (x < 1)
- fun_l27_n158(x)
- else
- fun_l27_n249(x)
- end
-end
-
-def fun_l26_n13(x)
- if (x < 1)
- fun_l27_n781(x)
- else
- fun_l27_n710(x)
- end
-end
-
-def fun_l26_n14(x)
- if (x < 1)
- fun_l27_n784(x)
- else
- fun_l27_n728(x)
- end
-end
-
-def fun_l26_n15(x)
- if (x < 1)
- fun_l27_n225(x)
- else
- fun_l27_n216(x)
- end
-end
-
-def fun_l26_n16(x)
- if (x < 1)
- fun_l27_n228(x)
- else
- fun_l27_n219(x)
- end
-end
-
-def fun_l26_n17(x)
- if (x < 1)
- fun_l27_n849(x)
- else
- fun_l27_n348(x)
- end
-end
-
-def fun_l26_n18(x)
- if (x < 1)
- fun_l27_n722(x)
- else
- fun_l27_n884(x)
- end
-end
-
-def fun_l26_n19(x)
- if (x < 1)
- fun_l27_n756(x)
- else
- fun_l27_n715(x)
- end
-end
-
-def fun_l26_n20(x)
- if (x < 1)
- fun_l27_n217(x)
- else
- fun_l27_n909(x)
- end
-end
-
-def fun_l26_n21(x)
- if (x < 1)
- fun_l27_n239(x)
- else
- fun_l27_n370(x)
- end
-end
-
-def fun_l26_n22(x)
- if (x < 1)
- fun_l27_n954(x)
- else
- fun_l27_n223(x)
- end
-end
-
-def fun_l26_n23(x)
- if (x < 1)
- fun_l27_n781(x)
- else
- fun_l27_n845(x)
- end
-end
-
-def fun_l26_n24(x)
- if (x < 1)
- fun_l27_n80(x)
- else
- fun_l27_n71(x)
- end
-end
-
-def fun_l26_n25(x)
- if (x < 1)
- fun_l27_n850(x)
- else
- fun_l27_n715(x)
- end
-end
-
-def fun_l26_n26(x)
- if (x < 1)
- fun_l27_n632(x)
- else
- fun_l27_n624(x)
- end
-end
-
-def fun_l26_n27(x)
- if (x < 1)
- fun_l27_n342(x)
- else
- fun_l27_n999(x)
- end
-end
-
-def fun_l26_n28(x)
- if (x < 1)
- fun_l27_n105(x)
- else
- fun_l27_n390(x)
- end
-end
-
-def fun_l26_n29(x)
- if (x < 1)
- fun_l27_n972(x)
- else
- fun_l27_n451(x)
- end
-end
-
-def fun_l26_n30(x)
- if (x < 1)
- fun_l27_n364(x)
- else
- fun_l27_n392(x)
- end
-end
-
-def fun_l26_n31(x)
- if (x < 1)
- fun_l27_n892(x)
- else
- fun_l27_n874(x)
- end
-end
-
-def fun_l26_n32(x)
- if (x < 1)
- fun_l27_n783(x)
- else
- fun_l27_n456(x)
- end
-end
-
-def fun_l26_n33(x)
- if (x < 1)
- fun_l27_n491(x)
- else
- fun_l27_n479(x)
- end
-end
-
-def fun_l26_n34(x)
- if (x < 1)
- fun_l27_n799(x)
- else
- fun_l27_n438(x)
- end
-end
-
-def fun_l26_n35(x)
- if (x < 1)
- fun_l27_n335(x)
- else
- fun_l27_n263(x)
- end
-end
-
-def fun_l26_n36(x)
- if (x < 1)
- fun_l27_n935(x)
- else
- fun_l27_n715(x)
- end
-end
-
-def fun_l26_n37(x)
- if (x < 1)
- fun_l27_n2(x)
- else
- fun_l27_n13(x)
- end
-end
-
-def fun_l26_n38(x)
- if (x < 1)
- fun_l27_n567(x)
- else
- fun_l27_n878(x)
- end
-end
-
-def fun_l26_n39(x)
- if (x < 1)
- fun_l27_n144(x)
- else
- fun_l27_n349(x)
- end
-end
-
-def fun_l26_n40(x)
- if (x < 1)
- fun_l27_n957(x)
- else
- fun_l27_n990(x)
- end
-end
-
-def fun_l26_n41(x)
- if (x < 1)
- fun_l27_n501(x)
- else
- fun_l27_n752(x)
- end
-end
-
-def fun_l26_n42(x)
- if (x < 1)
- fun_l27_n23(x)
- else
- fun_l27_n200(x)
- end
-end
-
-def fun_l26_n43(x)
- if (x < 1)
- fun_l27_n61(x)
- else
- fun_l27_n306(x)
- end
-end
-
-def fun_l26_n44(x)
- if (x < 1)
- fun_l27_n336(x)
- else
- fun_l27_n468(x)
- end
-end
-
-def fun_l26_n45(x)
- if (x < 1)
- fun_l27_n350(x)
- else
- fun_l27_n359(x)
- end
-end
-
-def fun_l26_n46(x)
- if (x < 1)
- fun_l27_n574(x)
- else
- fun_l27_n791(x)
- end
-end
-
-def fun_l26_n47(x)
- if (x < 1)
- fun_l27_n859(x)
- else
- fun_l27_n524(x)
- end
-end
-
-def fun_l26_n48(x)
- if (x < 1)
- fun_l27_n530(x)
- else
- fun_l27_n387(x)
- end
-end
-
-def fun_l26_n49(x)
- if (x < 1)
- fun_l27_n174(x)
- else
- fun_l27_n673(x)
- end
-end
-
-def fun_l26_n50(x)
- if (x < 1)
- fun_l27_n457(x)
- else
- fun_l27_n996(x)
- end
-end
-
-def fun_l26_n51(x)
- if (x < 1)
- fun_l27_n757(x)
- else
- fun_l27_n84(x)
- end
-end
-
-def fun_l26_n52(x)
- if (x < 1)
- fun_l27_n315(x)
- else
- fun_l27_n790(x)
- end
-end
-
-def fun_l26_n53(x)
- if (x < 1)
- fun_l27_n452(x)
- else
- fun_l27_n201(x)
- end
-end
-
-def fun_l26_n54(x)
- if (x < 1)
- fun_l27_n153(x)
- else
- fun_l27_n143(x)
- end
-end
-
-def fun_l26_n55(x)
- if (x < 1)
- fun_l27_n476(x)
- else
- fun_l27_n149(x)
- end
-end
-
-def fun_l26_n56(x)
- if (x < 1)
- fun_l27_n737(x)
- else
- fun_l27_n628(x)
- end
-end
-
-def fun_l26_n57(x)
- if (x < 1)
- fun_l27_n780(x)
- else
- fun_l27_n906(x)
- end
-end
-
-def fun_l26_n58(x)
- if (x < 1)
- fun_l27_n914(x)
- else
- fun_l27_n197(x)
- end
-end
-
-def fun_l26_n59(x)
- if (x < 1)
- fun_l27_n816(x)
- else
- fun_l27_n16(x)
- end
-end
-
-def fun_l26_n60(x)
- if (x < 1)
- fun_l27_n643(x)
- else
- fun_l27_n90(x)
- end
-end
-
-def fun_l26_n61(x)
- if (x < 1)
- fun_l27_n514(x)
- else
- fun_l27_n156(x)
- end
-end
-
-def fun_l26_n62(x)
- if (x < 1)
- fun_l27_n261(x)
- else
- fun_l27_n410(x)
- end
-end
-
-def fun_l26_n63(x)
- if (x < 1)
- fun_l27_n82(x)
- else
- fun_l27_n817(x)
- end
-end
-
-def fun_l26_n64(x)
- if (x < 1)
- fun_l27_n755(x)
- else
- fun_l27_n438(x)
- end
-end
-
-def fun_l26_n65(x)
- if (x < 1)
- fun_l27_n960(x)
- else
- fun_l27_n600(x)
- end
-end
-
-def fun_l26_n66(x)
- if (x < 1)
- fun_l27_n100(x)
- else
- fun_l27_n699(x)
- end
-end
-
-def fun_l26_n67(x)
- if (x < 1)
- fun_l27_n367(x)
- else
- fun_l27_n783(x)
- end
-end
-
-def fun_l26_n68(x)
- if (x < 1)
- fun_l27_n691(x)
- else
- fun_l27_n996(x)
- end
-end
-
-def fun_l26_n69(x)
- if (x < 1)
- fun_l27_n989(x)
- else
- fun_l27_n628(x)
- end
-end
-
-def fun_l26_n70(x)
- if (x < 1)
- fun_l27_n139(x)
- else
- fun_l27_n4(x)
- end
-end
-
-def fun_l26_n71(x)
- if (x < 1)
- fun_l27_n890(x)
- else
- fun_l27_n88(x)
- end
-end
-
-def fun_l26_n72(x)
- if (x < 1)
- fun_l27_n35(x)
- else
- fun_l27_n991(x)
- end
-end
-
-def fun_l26_n73(x)
- if (x < 1)
- fun_l27_n613(x)
- else
- fun_l27_n836(x)
- end
-end
-
-def fun_l26_n74(x)
- if (x < 1)
- fun_l27_n739(x)
- else
- fun_l27_n455(x)
- end
-end
-
-def fun_l26_n75(x)
- if (x < 1)
- fun_l27_n382(x)
- else
- fun_l27_n909(x)
- end
-end
-
-def fun_l26_n76(x)
- if (x < 1)
- fun_l27_n480(x)
- else
- fun_l27_n178(x)
- end
-end
-
-def fun_l26_n77(x)
- if (x < 1)
- fun_l27_n180(x)
- else
- fun_l27_n577(x)
- end
-end
-
-def fun_l26_n78(x)
- if (x < 1)
- fun_l27_n910(x)
- else
- fun_l27_n659(x)
- end
-end
-
-def fun_l26_n79(x)
- if (x < 1)
- fun_l27_n710(x)
- else
- fun_l27_n159(x)
- end
-end
-
-def fun_l26_n80(x)
- if (x < 1)
- fun_l27_n153(x)
- else
- fun_l27_n367(x)
- end
-end
-
-def fun_l26_n81(x)
- if (x < 1)
- fun_l27_n935(x)
- else
- fun_l27_n389(x)
- end
-end
-
-def fun_l26_n82(x)
- if (x < 1)
- fun_l27_n782(x)
- else
- fun_l27_n333(x)
- end
-end
-
-def fun_l26_n83(x)
- if (x < 1)
- fun_l27_n85(x)
- else
- fun_l27_n122(x)
- end
-end
-
-def fun_l26_n84(x)
- if (x < 1)
- fun_l27_n722(x)
- else
- fun_l27_n937(x)
- end
-end
-
-def fun_l26_n85(x)
- if (x < 1)
- fun_l27_n403(x)
- else
- fun_l27_n270(x)
- end
-end
-
-def fun_l26_n86(x)
- if (x < 1)
- fun_l27_n987(x)
- else
- fun_l27_n622(x)
- end
-end
-
-def fun_l26_n87(x)
- if (x < 1)
- fun_l27_n316(x)
- else
- fun_l27_n519(x)
- end
-end
-
-def fun_l26_n88(x)
- if (x < 1)
- fun_l27_n503(x)
- else
- fun_l27_n320(x)
- end
-end
-
-def fun_l26_n89(x)
- if (x < 1)
- fun_l27_n936(x)
- else
- fun_l27_n77(x)
- end
-end
-
-def fun_l26_n90(x)
- if (x < 1)
- fun_l27_n875(x)
- else
- fun_l27_n857(x)
- end
-end
-
-def fun_l26_n91(x)
- if (x < 1)
- fun_l27_n277(x)
- else
- fun_l27_n231(x)
- end
-end
-
-def fun_l26_n92(x)
- if (x < 1)
- fun_l27_n743(x)
- else
- fun_l27_n468(x)
- end
-end
-
-def fun_l26_n93(x)
- if (x < 1)
- fun_l27_n997(x)
- else
- fun_l27_n49(x)
- end
-end
-
-def fun_l26_n94(x)
- if (x < 1)
- fun_l27_n410(x)
- else
- fun_l27_n123(x)
- end
-end
-
-def fun_l26_n95(x)
- if (x < 1)
- fun_l27_n696(x)
- else
- fun_l27_n799(x)
- end
-end
-
-def fun_l26_n96(x)
- if (x < 1)
- fun_l27_n47(x)
- else
- fun_l27_n195(x)
- end
-end
-
-def fun_l26_n97(x)
- if (x < 1)
- fun_l27_n559(x)
- else
- fun_l27_n242(x)
- end
-end
-
-def fun_l26_n98(x)
- if (x < 1)
- fun_l27_n407(x)
- else
- fun_l27_n797(x)
- end
-end
-
-def fun_l26_n99(x)
- if (x < 1)
- fun_l27_n886(x)
- else
- fun_l27_n253(x)
- end
-end
-
-def fun_l26_n100(x)
- if (x < 1)
- fun_l27_n753(x)
- else
- fun_l27_n103(x)
- end
-end
-
-def fun_l26_n101(x)
- if (x < 1)
- fun_l27_n717(x)
- else
- fun_l27_n596(x)
- end
-end
-
-def fun_l26_n102(x)
- if (x < 1)
- fun_l27_n88(x)
- else
- fun_l27_n916(x)
- end
-end
-
-def fun_l26_n103(x)
- if (x < 1)
- fun_l27_n504(x)
- else
- fun_l27_n91(x)
- end
-end
-
-def fun_l26_n104(x)
- if (x < 1)
- fun_l27_n418(x)
- else
- fun_l27_n810(x)
- end
-end
-
-def fun_l26_n105(x)
- if (x < 1)
- fun_l27_n736(x)
- else
- fun_l27_n515(x)
- end
-end
-
-def fun_l26_n106(x)
- if (x < 1)
- fun_l27_n450(x)
- else
- fun_l27_n778(x)
- end
-end
-
-def fun_l26_n107(x)
- if (x < 1)
- fun_l27_n670(x)
- else
- fun_l27_n483(x)
- end
-end
-
-def fun_l26_n108(x)
- if (x < 1)
- fun_l27_n592(x)
- else
- fun_l27_n638(x)
- end
-end
-
-def fun_l26_n109(x)
- if (x < 1)
- fun_l27_n803(x)
- else
- fun_l27_n865(x)
- end
-end
-
-def fun_l26_n110(x)
- if (x < 1)
- fun_l27_n555(x)
- else
- fun_l27_n123(x)
- end
-end
-
-def fun_l26_n111(x)
- if (x < 1)
- fun_l27_n5(x)
- else
- fun_l27_n768(x)
- end
-end
-
-def fun_l26_n112(x)
- if (x < 1)
- fun_l27_n452(x)
- else
- fun_l27_n356(x)
- end
-end
-
-def fun_l26_n113(x)
- if (x < 1)
- fun_l27_n353(x)
- else
- fun_l27_n513(x)
- end
-end
-
-def fun_l26_n114(x)
- if (x < 1)
- fun_l27_n859(x)
- else
- fun_l27_n851(x)
- end
-end
-
-def fun_l26_n115(x)
- if (x < 1)
- fun_l27_n47(x)
- else
- fun_l27_n206(x)
- end
-end
-
-def fun_l26_n116(x)
- if (x < 1)
- fun_l27_n260(x)
- else
- fun_l27_n746(x)
- end
-end
-
-def fun_l26_n117(x)
- if (x < 1)
- fun_l27_n733(x)
- else
- fun_l27_n906(x)
- end
-end
-
-def fun_l26_n118(x)
- if (x < 1)
- fun_l27_n40(x)
- else
- fun_l27_n467(x)
- end
-end
-
-def fun_l26_n119(x)
- if (x < 1)
- fun_l27_n764(x)
- else
- fun_l27_n69(x)
- end
-end
-
-def fun_l26_n120(x)
- if (x < 1)
- fun_l27_n851(x)
- else
- fun_l27_n905(x)
- end
-end
-
-def fun_l26_n121(x)
- if (x < 1)
- fun_l27_n793(x)
- else
- fun_l27_n169(x)
- end
-end
-
-def fun_l26_n122(x)
- if (x < 1)
- fun_l27_n126(x)
- else
- fun_l27_n440(x)
- end
-end
-
-def fun_l26_n123(x)
- if (x < 1)
- fun_l27_n147(x)
- else
- fun_l27_n720(x)
- end
-end
-
-def fun_l26_n124(x)
- if (x < 1)
- fun_l27_n843(x)
- else
- fun_l27_n789(x)
- end
-end
-
-def fun_l26_n125(x)
- if (x < 1)
- fun_l27_n927(x)
- else
- fun_l27_n364(x)
- end
-end
-
-def fun_l26_n126(x)
- if (x < 1)
- fun_l27_n203(x)
- else
- fun_l27_n344(x)
- end
-end
-
-def fun_l26_n127(x)
- if (x < 1)
- fun_l27_n398(x)
- else
- fun_l27_n202(x)
- end
-end
-
-def fun_l26_n128(x)
- if (x < 1)
- fun_l27_n216(x)
- else
- fun_l27_n344(x)
- end
-end
-
-def fun_l26_n129(x)
- if (x < 1)
- fun_l27_n496(x)
- else
- fun_l27_n40(x)
- end
-end
-
-def fun_l26_n130(x)
- if (x < 1)
- fun_l27_n615(x)
- else
- fun_l27_n762(x)
- end
-end
-
-def fun_l26_n131(x)
- if (x < 1)
- fun_l27_n642(x)
- else
- fun_l27_n329(x)
- end
-end
-
-def fun_l26_n132(x)
- if (x < 1)
- fun_l27_n364(x)
- else
- fun_l27_n436(x)
- end
-end
-
-def fun_l26_n133(x)
- if (x < 1)
- fun_l27_n502(x)
- else
- fun_l27_n176(x)
- end
-end
-
-def fun_l26_n134(x)
- if (x < 1)
- fun_l27_n591(x)
- else
- fun_l27_n119(x)
- end
-end
-
-def fun_l26_n135(x)
- if (x < 1)
- fun_l27_n946(x)
- else
- fun_l27_n963(x)
- end
-end
-
-def fun_l26_n136(x)
- if (x < 1)
- fun_l27_n688(x)
- else
- fun_l27_n44(x)
- end
-end
-
-def fun_l26_n137(x)
- if (x < 1)
- fun_l27_n786(x)
- else
- fun_l27_n965(x)
- end
-end
-
-def fun_l26_n138(x)
- if (x < 1)
- fun_l27_n259(x)
- else
- fun_l27_n63(x)
- end
-end
-
-def fun_l26_n139(x)
- if (x < 1)
- fun_l27_n568(x)
- else
- fun_l27_n129(x)
- end
-end
-
-def fun_l26_n140(x)
- if (x < 1)
- fun_l27_n255(x)
- else
- fun_l27_n873(x)
- end
-end
-
-def fun_l26_n141(x)
- if (x < 1)
- fun_l27_n777(x)
- else
- fun_l27_n86(x)
- end
-end
-
-def fun_l26_n142(x)
- if (x < 1)
- fun_l27_n134(x)
- else
- fun_l27_n569(x)
- end
-end
-
-def fun_l26_n143(x)
- if (x < 1)
- fun_l27_n147(x)
- else
- fun_l27_n388(x)
- end
-end
-
-def fun_l26_n144(x)
- if (x < 1)
- fun_l27_n633(x)
- else
- fun_l27_n256(x)
- end
-end
-
-def fun_l26_n145(x)
- if (x < 1)
- fun_l27_n38(x)
- else
- fun_l27_n94(x)
- end
-end
-
-def fun_l26_n146(x)
- if (x < 1)
- fun_l27_n710(x)
- else
- fun_l27_n489(x)
- end
-end
-
-def fun_l26_n147(x)
- if (x < 1)
- fun_l27_n187(x)
- else
- fun_l27_n252(x)
- end
-end
-
-def fun_l26_n148(x)
- if (x < 1)
- fun_l27_n978(x)
- else
- fun_l27_n835(x)
- end
-end
-
-def fun_l26_n149(x)
- if (x < 1)
- fun_l27_n759(x)
- else
- fun_l27_n742(x)
- end
-end
-
-def fun_l26_n150(x)
- if (x < 1)
- fun_l27_n438(x)
- else
- fun_l27_n808(x)
- end
-end
-
-def fun_l26_n151(x)
- if (x < 1)
- fun_l27_n424(x)
- else
- fun_l27_n54(x)
- end
-end
-
-def fun_l26_n152(x)
- if (x < 1)
- fun_l27_n455(x)
- else
- fun_l27_n953(x)
- end
-end
-
-def fun_l26_n153(x)
- if (x < 1)
- fun_l27_n13(x)
- else
- fun_l27_n330(x)
- end
-end
-
-def fun_l26_n154(x)
- if (x < 1)
- fun_l27_n399(x)
- else
- fun_l27_n81(x)
- end
-end
-
-def fun_l26_n155(x)
- if (x < 1)
- fun_l27_n356(x)
- else
- fun_l27_n237(x)
- end
-end
-
-def fun_l26_n156(x)
- if (x < 1)
- fun_l27_n636(x)
- else
- fun_l27_n446(x)
- end
-end
-
-def fun_l26_n157(x)
- if (x < 1)
- fun_l27_n715(x)
- else
- fun_l27_n800(x)
- end
-end
-
-def fun_l26_n158(x)
- if (x < 1)
- fun_l27_n284(x)
- else
- fun_l27_n280(x)
- end
-end
-
-def fun_l26_n159(x)
- if (x < 1)
- fun_l27_n41(x)
- else
- fun_l27_n65(x)
- end
-end
-
-def fun_l26_n160(x)
- if (x < 1)
- fun_l27_n691(x)
- else
- fun_l27_n76(x)
- end
-end
-
-def fun_l26_n161(x)
- if (x < 1)
- fun_l27_n863(x)
- else
- fun_l27_n878(x)
- end
-end
-
-def fun_l26_n162(x)
- if (x < 1)
- fun_l27_n694(x)
- else
- fun_l27_n5(x)
- end
-end
-
-def fun_l26_n163(x)
- if (x < 1)
- fun_l27_n16(x)
- else
- fun_l27_n644(x)
- end
-end
-
-def fun_l26_n164(x)
- if (x < 1)
- fun_l27_n760(x)
- else
- fun_l27_n167(x)
- end
-end
-
-def fun_l26_n165(x)
- if (x < 1)
- fun_l27_n884(x)
- else
- fun_l27_n297(x)
- end
-end
-
-def fun_l26_n166(x)
- if (x < 1)
- fun_l27_n707(x)
- else
- fun_l27_n456(x)
- end
-end
-
-def fun_l26_n167(x)
- if (x < 1)
- fun_l27_n140(x)
- else
- fun_l27_n143(x)
- end
-end
-
-def fun_l26_n168(x)
- if (x < 1)
- fun_l27_n581(x)
- else
- fun_l27_n369(x)
- end
-end
-
-def fun_l26_n169(x)
- if (x < 1)
- fun_l27_n538(x)
- else
- fun_l27_n276(x)
- end
-end
-
-def fun_l26_n170(x)
- if (x < 1)
- fun_l27_n984(x)
- else
- fun_l27_n729(x)
- end
-end
-
-def fun_l26_n171(x)
- if (x < 1)
- fun_l27_n274(x)
- else
- fun_l27_n519(x)
- end
-end
-
-def fun_l26_n172(x)
- if (x < 1)
- fun_l27_n597(x)
- else
- fun_l27_n632(x)
- end
-end
-
-def fun_l26_n173(x)
- if (x < 1)
- fun_l27_n485(x)
- else
- fun_l27_n130(x)
- end
-end
-
-def fun_l26_n174(x)
- if (x < 1)
- fun_l27_n460(x)
- else
- fun_l27_n133(x)
- end
-end
-
-def fun_l26_n175(x)
- if (x < 1)
- fun_l27_n512(x)
- else
- fun_l27_n252(x)
- end
-end
-
-def fun_l26_n176(x)
- if (x < 1)
- fun_l27_n429(x)
- else
- fun_l27_n297(x)
- end
-end
-
-def fun_l26_n177(x)
- if (x < 1)
- fun_l27_n497(x)
- else
- fun_l27_n845(x)
- end
-end
-
-def fun_l26_n178(x)
- if (x < 1)
- fun_l27_n930(x)
- else
- fun_l27_n923(x)
- end
-end
-
-def fun_l26_n179(x)
- if (x < 1)
- fun_l27_n218(x)
- else
- fun_l27_n921(x)
- end
-end
-
-def fun_l26_n180(x)
- if (x < 1)
- fun_l27_n793(x)
- else
- fun_l27_n278(x)
- end
-end
-
-def fun_l26_n181(x)
- if (x < 1)
- fun_l27_n606(x)
- else
- fun_l27_n9(x)
- end
-end
-
-def fun_l26_n182(x)
- if (x < 1)
- fun_l27_n297(x)
- else
- fun_l27_n62(x)
- end
-end
-
-def fun_l26_n183(x)
- if (x < 1)
- fun_l27_n174(x)
- else
- fun_l27_n698(x)
- end
-end
-
-def fun_l26_n184(x)
- if (x < 1)
- fun_l27_n773(x)
- else
- fun_l27_n312(x)
- end
-end
-
-def fun_l26_n185(x)
- if (x < 1)
- fun_l27_n75(x)
- else
- fun_l27_n65(x)
- end
-end
-
-def fun_l26_n186(x)
- if (x < 1)
- fun_l27_n389(x)
- else
- fun_l27_n27(x)
- end
-end
-
-def fun_l26_n187(x)
- if (x < 1)
- fun_l27_n674(x)
- else
- fun_l27_n70(x)
- end
-end
-
-def fun_l26_n188(x)
- if (x < 1)
- fun_l27_n157(x)
- else
- fun_l27_n160(x)
- end
-end
-
-def fun_l26_n189(x)
- if (x < 1)
- fun_l27_n401(x)
- else
- fun_l27_n340(x)
- end
-end
-
-def fun_l26_n190(x)
- if (x < 1)
- fun_l27_n550(x)
- else
- fun_l27_n551(x)
- end
-end
-
-def fun_l26_n191(x)
- if (x < 1)
- fun_l27_n971(x)
- else
- fun_l27_n925(x)
- end
-end
-
-def fun_l26_n192(x)
- if (x < 1)
- fun_l27_n370(x)
- else
- fun_l27_n697(x)
- end
-end
-
-def fun_l26_n193(x)
- if (x < 1)
- fun_l27_n188(x)
- else
- fun_l27_n989(x)
- end
-end
-
-def fun_l26_n194(x)
- if (x < 1)
- fun_l27_n848(x)
- else
- fun_l27_n288(x)
- end
-end
-
-def fun_l26_n195(x)
- if (x < 1)
- fun_l27_n886(x)
- else
- fun_l27_n554(x)
- end
-end
-
-def fun_l26_n196(x)
- if (x < 1)
- fun_l27_n989(x)
- else
- fun_l27_n577(x)
- end
-end
-
-def fun_l26_n197(x)
- if (x < 1)
- fun_l27_n55(x)
- else
- fun_l27_n951(x)
- end
-end
-
-def fun_l26_n198(x)
- if (x < 1)
- fun_l27_n750(x)
- else
- fun_l27_n941(x)
- end
-end
-
-def fun_l26_n199(x)
- if (x < 1)
- fun_l27_n468(x)
- else
- fun_l27_n64(x)
- end
-end
-
-def fun_l26_n200(x)
- if (x < 1)
- fun_l27_n617(x)
- else
- fun_l27_n156(x)
- end
-end
-
-def fun_l26_n201(x)
- if (x < 1)
- fun_l27_n119(x)
- else
- fun_l27_n63(x)
- end
-end
-
-def fun_l26_n202(x)
- if (x < 1)
- fun_l27_n524(x)
- else
- fun_l27_n455(x)
- end
-end
-
-def fun_l26_n203(x)
- if (x < 1)
- fun_l27_n489(x)
- else
- fun_l27_n328(x)
- end
-end
-
-def fun_l26_n204(x)
- if (x < 1)
- fun_l27_n854(x)
- else
- fun_l27_n605(x)
- end
-end
-
-def fun_l26_n205(x)
- if (x < 1)
- fun_l27_n591(x)
- else
- fun_l27_n787(x)
- end
-end
-
-def fun_l26_n206(x)
- if (x < 1)
- fun_l27_n122(x)
- else
- fun_l27_n977(x)
- end
-end
-
-def fun_l26_n207(x)
- if (x < 1)
- fun_l27_n204(x)
- else
- fun_l27_n652(x)
- end
-end
-
-def fun_l26_n208(x)
- if (x < 1)
- fun_l27_n213(x)
- else
- fun_l27_n699(x)
- end
-end
-
-def fun_l26_n209(x)
- if (x < 1)
- fun_l27_n731(x)
- else
- fun_l27_n910(x)
- end
-end
-
-def fun_l26_n210(x)
- if (x < 1)
- fun_l27_n398(x)
- else
- fun_l27_n2(x)
- end
-end
-
-def fun_l26_n211(x)
- if (x < 1)
- fun_l27_n132(x)
- else
- fun_l27_n574(x)
- end
-end
-
-def fun_l26_n212(x)
- if (x < 1)
- fun_l27_n701(x)
- else
- fun_l27_n617(x)
- end
-end
-
-def fun_l26_n213(x)
- if (x < 1)
- fun_l27_n486(x)
- else
- fun_l27_n861(x)
- end
-end
-
-def fun_l26_n214(x)
- if (x < 1)
- fun_l27_n305(x)
- else
- fun_l27_n20(x)
- end
-end
-
-def fun_l26_n215(x)
- if (x < 1)
- fun_l27_n598(x)
- else
- fun_l27_n842(x)
- end
-end
-
-def fun_l26_n216(x)
- if (x < 1)
- fun_l27_n948(x)
- else
- fun_l27_n669(x)
- end
-end
-
-def fun_l26_n217(x)
- if (x < 1)
- fun_l27_n344(x)
- else
- fun_l27_n101(x)
- end
-end
-
-def fun_l26_n218(x)
- if (x < 1)
- fun_l27_n527(x)
- else
- fun_l27_n930(x)
- end
-end
-
-def fun_l26_n219(x)
- if (x < 1)
- fun_l27_n889(x)
- else
- fun_l27_n380(x)
- end
-end
-
-def fun_l26_n220(x)
- if (x < 1)
- fun_l27_n873(x)
- else
- fun_l27_n925(x)
- end
-end
-
-def fun_l26_n221(x)
- if (x < 1)
- fun_l27_n403(x)
- else
- fun_l27_n280(x)
- end
-end
-
-def fun_l26_n222(x)
- if (x < 1)
- fun_l27_n614(x)
- else
- fun_l27_n370(x)
- end
-end
-
-def fun_l26_n223(x)
- if (x < 1)
- fun_l27_n543(x)
- else
- fun_l27_n543(x)
- end
-end
-
-def fun_l26_n224(x)
- if (x < 1)
- fun_l27_n873(x)
- else
- fun_l27_n895(x)
- end
-end
-
-def fun_l26_n225(x)
- if (x < 1)
- fun_l27_n665(x)
- else
- fun_l27_n259(x)
- end
-end
-
-def fun_l26_n226(x)
- if (x < 1)
- fun_l27_n663(x)
- else
- fun_l27_n271(x)
- end
-end
-
-def fun_l26_n227(x)
- if (x < 1)
- fun_l27_n816(x)
- else
- fun_l27_n353(x)
- end
-end
-
-def fun_l26_n228(x)
- if (x < 1)
- fun_l27_n941(x)
- else
- fun_l27_n484(x)
- end
-end
-
-def fun_l26_n229(x)
- if (x < 1)
- fun_l27_n455(x)
- else
- fun_l27_n385(x)
- end
-end
-
-def fun_l26_n230(x)
- if (x < 1)
- fun_l27_n398(x)
- else
- fun_l27_n888(x)
- end
-end
-
-def fun_l26_n231(x)
- if (x < 1)
- fun_l27_n93(x)
- else
- fun_l27_n297(x)
- end
-end
-
-def fun_l26_n232(x)
- if (x < 1)
- fun_l27_n197(x)
- else
- fun_l27_n779(x)
- end
-end
-
-def fun_l26_n233(x)
- if (x < 1)
- fun_l27_n826(x)
- else
- fun_l27_n835(x)
- end
-end
-
-def fun_l26_n234(x)
- if (x < 1)
- fun_l27_n32(x)
- else
- fun_l27_n430(x)
- end
-end
-
-def fun_l26_n235(x)
- if (x < 1)
- fun_l27_n133(x)
- else
- fun_l27_n743(x)
- end
-end
-
-def fun_l26_n236(x)
- if (x < 1)
- fun_l27_n763(x)
- else
- fun_l27_n683(x)
- end
-end
-
-def fun_l26_n237(x)
- if (x < 1)
- fun_l27_n211(x)
- else
- fun_l27_n726(x)
- end
-end
-
-def fun_l26_n238(x)
- if (x < 1)
- fun_l27_n19(x)
- else
- fun_l27_n404(x)
- end
-end
-
-def fun_l26_n239(x)
- if (x < 1)
- fun_l27_n635(x)
- else
- fun_l27_n427(x)
- end
-end
-
-def fun_l26_n240(x)
- if (x < 1)
- fun_l27_n102(x)
- else
- fun_l27_n875(x)
- end
-end
-
-def fun_l26_n241(x)
- if (x < 1)
- fun_l27_n930(x)
- else
- fun_l27_n189(x)
- end
-end
-
-def fun_l26_n242(x)
- if (x < 1)
- fun_l27_n860(x)
- else
- fun_l27_n347(x)
- end
-end
-
-def fun_l26_n243(x)
- if (x < 1)
- fun_l27_n826(x)
- else
- fun_l27_n848(x)
- end
-end
-
-def fun_l26_n244(x)
- if (x < 1)
- fun_l27_n491(x)
- else
- fun_l27_n797(x)
- end
-end
-
-def fun_l26_n245(x)
- if (x < 1)
- fun_l27_n361(x)
- else
- fun_l27_n382(x)
- end
-end
-
-def fun_l26_n246(x)
- if (x < 1)
- fun_l27_n391(x)
- else
- fun_l27_n907(x)
- end
-end
-
-def fun_l26_n247(x)
- if (x < 1)
- fun_l27_n352(x)
- else
- fun_l27_n501(x)
- end
-end
-
-def fun_l26_n248(x)
- if (x < 1)
- fun_l27_n235(x)
- else
- fun_l27_n610(x)
- end
-end
-
-def fun_l26_n249(x)
- if (x < 1)
- fun_l27_n970(x)
- else
- fun_l27_n561(x)
- end
-end
-
-def fun_l26_n250(x)
- if (x < 1)
- fun_l27_n625(x)
- else
- fun_l27_n526(x)
- end
-end
-
-def fun_l26_n251(x)
- if (x < 1)
- fun_l27_n185(x)
- else
- fun_l27_n911(x)
- end
-end
-
-def fun_l26_n252(x)
- if (x < 1)
- fun_l27_n426(x)
- else
- fun_l27_n247(x)
- end
-end
-
-def fun_l26_n253(x)
- if (x < 1)
- fun_l27_n874(x)
- else
- fun_l27_n28(x)
- end
-end
-
-def fun_l26_n254(x)
- if (x < 1)
- fun_l27_n178(x)
- else
- fun_l27_n290(x)
- end
-end
-
-def fun_l26_n255(x)
- if (x < 1)
- fun_l27_n218(x)
- else
- fun_l27_n816(x)
- end
-end
-
-def fun_l26_n256(x)
- if (x < 1)
- fun_l27_n27(x)
- else
- fun_l27_n896(x)
- end
-end
-
-def fun_l26_n257(x)
- if (x < 1)
- fun_l27_n690(x)
- else
- fun_l27_n27(x)
- end
-end
-
-def fun_l26_n258(x)
- if (x < 1)
- fun_l27_n549(x)
- else
- fun_l27_n481(x)
- end
-end
-
-def fun_l26_n259(x)
- if (x < 1)
- fun_l27_n357(x)
- else
- fun_l27_n604(x)
- end
-end
-
-def fun_l26_n260(x)
- if (x < 1)
- fun_l27_n731(x)
- else
- fun_l27_n111(x)
- end
-end
-
-def fun_l26_n261(x)
- if (x < 1)
- fun_l27_n849(x)
- else
- fun_l27_n91(x)
- end
-end
-
-def fun_l26_n262(x)
- if (x < 1)
- fun_l27_n686(x)
- else
- fun_l27_n969(x)
- end
-end
-
-def fun_l26_n263(x)
- if (x < 1)
- fun_l27_n17(x)
- else
- fun_l27_n424(x)
- end
-end
-
-def fun_l26_n264(x)
- if (x < 1)
- fun_l27_n25(x)
- else
- fun_l27_n487(x)
- end
-end
-
-def fun_l26_n265(x)
- if (x < 1)
- fun_l27_n715(x)
- else
- fun_l27_n210(x)
- end
-end
-
-def fun_l26_n266(x)
- if (x < 1)
- fun_l27_n997(x)
- else
- fun_l27_n563(x)
- end
-end
-
-def fun_l26_n267(x)
- if (x < 1)
- fun_l27_n489(x)
- else
- fun_l27_n666(x)
- end
-end
-
-def fun_l26_n268(x)
- if (x < 1)
- fun_l27_n85(x)
- else
- fun_l27_n780(x)
- end
-end
-
-def fun_l26_n269(x)
- if (x < 1)
- fun_l27_n420(x)
- else
- fun_l27_n897(x)
- end
-end
-
-def fun_l26_n270(x)
- if (x < 1)
- fun_l27_n152(x)
- else
- fun_l27_n841(x)
- end
-end
-
-def fun_l26_n271(x)
- if (x < 1)
- fun_l27_n60(x)
- else
- fun_l27_n808(x)
- end
-end
-
-def fun_l26_n272(x)
- if (x < 1)
- fun_l27_n27(x)
- else
- fun_l27_n69(x)
- end
-end
-
-def fun_l26_n273(x)
- if (x < 1)
- fun_l27_n992(x)
- else
- fun_l27_n306(x)
- end
-end
-
-def fun_l26_n274(x)
- if (x < 1)
- fun_l27_n893(x)
- else
- fun_l27_n837(x)
- end
-end
-
-def fun_l26_n275(x)
- if (x < 1)
- fun_l27_n617(x)
- else
- fun_l27_n628(x)
- end
-end
-
-def fun_l26_n276(x)
- if (x < 1)
- fun_l27_n402(x)
- else
- fun_l27_n766(x)
- end
-end
-
-def fun_l26_n277(x)
- if (x < 1)
- fun_l27_n692(x)
- else
- fun_l27_n999(x)
- end
-end
-
-def fun_l26_n278(x)
- if (x < 1)
- fun_l27_n896(x)
- else
- fun_l27_n941(x)
- end
-end
-
-def fun_l26_n279(x)
- if (x < 1)
- fun_l27_n440(x)
- else
- fun_l27_n888(x)
- end
-end
-
-def fun_l26_n280(x)
- if (x < 1)
- fun_l27_n350(x)
- else
- fun_l27_n19(x)
- end
-end
-
-def fun_l26_n281(x)
- if (x < 1)
- fun_l27_n324(x)
- else
- fun_l27_n63(x)
- end
-end
-
-def fun_l26_n282(x)
- if (x < 1)
- fun_l27_n422(x)
- else
- fun_l27_n369(x)
- end
-end
-
-def fun_l26_n283(x)
- if (x < 1)
- fun_l27_n629(x)
- else
- fun_l27_n200(x)
- end
-end
-
-def fun_l26_n284(x)
- if (x < 1)
- fun_l27_n466(x)
- else
- fun_l27_n392(x)
- end
-end
-
-def fun_l26_n285(x)
- if (x < 1)
- fun_l27_n995(x)
- else
- fun_l27_n374(x)
- end
-end
-
-def fun_l26_n286(x)
- if (x < 1)
- fun_l27_n808(x)
- else
- fun_l27_n529(x)
- end
-end
-
-def fun_l26_n287(x)
- if (x < 1)
- fun_l27_n764(x)
- else
- fun_l27_n155(x)
- end
-end
-
-def fun_l26_n288(x)
- if (x < 1)
- fun_l27_n282(x)
- else
- fun_l27_n676(x)
- end
-end
-
-def fun_l26_n289(x)
- if (x < 1)
- fun_l27_n797(x)
- else
- fun_l27_n462(x)
- end
-end
-
-def fun_l26_n290(x)
- if (x < 1)
- fun_l27_n572(x)
- else
- fun_l27_n909(x)
- end
-end
-
-def fun_l26_n291(x)
- if (x < 1)
- fun_l27_n401(x)
- else
- fun_l27_n906(x)
- end
-end
-
-def fun_l26_n292(x)
- if (x < 1)
- fun_l27_n680(x)
- else
- fun_l27_n922(x)
- end
-end
-
-def fun_l26_n293(x)
- if (x < 1)
- fun_l27_n876(x)
- else
- fun_l27_n882(x)
- end
-end
-
-def fun_l26_n294(x)
- if (x < 1)
- fun_l27_n40(x)
- else
- fun_l27_n752(x)
- end
-end
-
-def fun_l26_n295(x)
- if (x < 1)
- fun_l27_n164(x)
- else
- fun_l27_n479(x)
- end
-end
-
-def fun_l26_n296(x)
- if (x < 1)
- fun_l27_n836(x)
- else
- fun_l27_n956(x)
- end
-end
-
-def fun_l26_n297(x)
- if (x < 1)
- fun_l27_n197(x)
- else
- fun_l27_n135(x)
- end
-end
-
-def fun_l26_n298(x)
- if (x < 1)
- fun_l27_n289(x)
- else
- fun_l27_n314(x)
- end
-end
-
-def fun_l26_n299(x)
- if (x < 1)
- fun_l27_n942(x)
- else
- fun_l27_n747(x)
- end
-end
-
-def fun_l26_n300(x)
- if (x < 1)
- fun_l27_n4(x)
- else
- fun_l27_n355(x)
- end
-end
-
-def fun_l26_n301(x)
- if (x < 1)
- fun_l27_n616(x)
- else
- fun_l27_n681(x)
- end
-end
-
-def fun_l26_n302(x)
- if (x < 1)
- fun_l27_n175(x)
- else
- fun_l27_n859(x)
- end
-end
-
-def fun_l26_n303(x)
- if (x < 1)
- fun_l27_n323(x)
- else
- fun_l27_n491(x)
- end
-end
-
-def fun_l26_n304(x)
- if (x < 1)
- fun_l27_n630(x)
- else
- fun_l27_n821(x)
- end
-end
-
-def fun_l26_n305(x)
- if (x < 1)
- fun_l27_n416(x)
- else
- fun_l27_n927(x)
- end
-end
-
-def fun_l26_n306(x)
- if (x < 1)
- fun_l27_n80(x)
- else
- fun_l27_n69(x)
- end
-end
-
-def fun_l26_n307(x)
- if (x < 1)
- fun_l27_n209(x)
- else
- fun_l27_n476(x)
- end
-end
-
-def fun_l26_n308(x)
- if (x < 1)
- fun_l27_n201(x)
- else
- fun_l27_n18(x)
- end
-end
-
-def fun_l26_n309(x)
- if (x < 1)
- fun_l27_n712(x)
- else
- fun_l27_n697(x)
- end
-end
-
-def fun_l26_n310(x)
- if (x < 1)
- fun_l27_n815(x)
- else
- fun_l27_n626(x)
- end
-end
-
-def fun_l26_n311(x)
- if (x < 1)
- fun_l27_n159(x)
- else
- fun_l27_n483(x)
- end
-end
-
-def fun_l26_n312(x)
- if (x < 1)
- fun_l27_n304(x)
- else
- fun_l27_n260(x)
- end
-end
-
-def fun_l26_n313(x)
- if (x < 1)
- fun_l27_n15(x)
- else
- fun_l27_n50(x)
- end
-end
-
-def fun_l26_n314(x)
- if (x < 1)
- fun_l27_n748(x)
- else
- fun_l27_n71(x)
- end
-end
-
-def fun_l26_n315(x)
- if (x < 1)
- fun_l27_n957(x)
- else
- fun_l27_n90(x)
- end
-end
-
-def fun_l26_n316(x)
- if (x < 1)
- fun_l27_n189(x)
- else
- fun_l27_n276(x)
- end
-end
-
-def fun_l26_n317(x)
- if (x < 1)
- fun_l27_n926(x)
- else
- fun_l27_n916(x)
- end
-end
-
-def fun_l26_n318(x)
- if (x < 1)
- fun_l27_n74(x)
- else
- fun_l27_n395(x)
- end
-end
-
-def fun_l26_n319(x)
- if (x < 1)
- fun_l27_n424(x)
- else
- fun_l27_n826(x)
- end
-end
-
-def fun_l26_n320(x)
- if (x < 1)
- fun_l27_n321(x)
- else
- fun_l27_n553(x)
- end
-end
-
-def fun_l26_n321(x)
- if (x < 1)
- fun_l27_n906(x)
- else
- fun_l27_n344(x)
- end
-end
-
-def fun_l26_n322(x)
- if (x < 1)
- fun_l27_n706(x)
- else
- fun_l27_n189(x)
- end
-end
-
-def fun_l26_n323(x)
- if (x < 1)
- fun_l27_n303(x)
- else
- fun_l27_n135(x)
- end
-end
-
-def fun_l26_n324(x)
- if (x < 1)
- fun_l27_n103(x)
- else
- fun_l27_n579(x)
- end
-end
-
-def fun_l26_n325(x)
- if (x < 1)
- fun_l27_n655(x)
- else
- fun_l27_n619(x)
- end
-end
-
-def fun_l26_n326(x)
- if (x < 1)
- fun_l27_n119(x)
- else
- fun_l27_n950(x)
- end
-end
-
-def fun_l26_n327(x)
- if (x < 1)
- fun_l27_n402(x)
- else
- fun_l27_n490(x)
- end
-end
-
-def fun_l26_n328(x)
- if (x < 1)
- fun_l27_n6(x)
- else
- fun_l27_n844(x)
- end
-end
-
-def fun_l26_n329(x)
- if (x < 1)
- fun_l27_n297(x)
- else
- fun_l27_n879(x)
- end
-end
-
-def fun_l26_n330(x)
- if (x < 1)
- fun_l27_n747(x)
- else
- fun_l27_n701(x)
- end
-end
-
-def fun_l26_n331(x)
- if (x < 1)
- fun_l27_n714(x)
- else
- fun_l27_n770(x)
- end
-end
-
-def fun_l26_n332(x)
- if (x < 1)
- fun_l27_n377(x)
- else
- fun_l27_n434(x)
- end
-end
-
-def fun_l26_n333(x)
- if (x < 1)
- fun_l27_n530(x)
- else
- fun_l27_n678(x)
- end
-end
-
-def fun_l26_n334(x)
- if (x < 1)
- fun_l27_n28(x)
- else
- fun_l27_n154(x)
- end
-end
-
-def fun_l26_n335(x)
- if (x < 1)
- fun_l27_n905(x)
- else
- fun_l27_n207(x)
- end
-end
-
-def fun_l26_n336(x)
- if (x < 1)
- fun_l27_n537(x)
- else
- fun_l27_n426(x)
- end
-end
-
-def fun_l26_n337(x)
- if (x < 1)
- fun_l27_n284(x)
- else
- fun_l27_n118(x)
- end
-end
-
-def fun_l26_n338(x)
- if (x < 1)
- fun_l27_n40(x)
- else
- fun_l27_n123(x)
- end
-end
-
-def fun_l26_n339(x)
- if (x < 1)
- fun_l27_n620(x)
- else
- fun_l27_n370(x)
- end
-end
-
-def fun_l26_n340(x)
- if (x < 1)
- fun_l27_n946(x)
- else
- fun_l27_n994(x)
- end
-end
-
-def fun_l26_n341(x)
- if (x < 1)
- fun_l27_n685(x)
- else
- fun_l27_n911(x)
- end
-end
-
-def fun_l26_n342(x)
- if (x < 1)
- fun_l27_n641(x)
- else
- fun_l27_n339(x)
- end
-end
-
-def fun_l26_n343(x)
- if (x < 1)
- fun_l27_n936(x)
- else
- fun_l27_n344(x)
- end
-end
-
-def fun_l26_n344(x)
- if (x < 1)
- fun_l27_n822(x)
- else
- fun_l27_n939(x)
- end
-end
-
-def fun_l26_n345(x)
- if (x < 1)
- fun_l27_n608(x)
- else
- fun_l27_n870(x)
- end
-end
-
-def fun_l26_n346(x)
- if (x < 1)
- fun_l27_n211(x)
- else
- fun_l27_n124(x)
- end
-end
-
-def fun_l26_n347(x)
- if (x < 1)
- fun_l27_n71(x)
- else
- fun_l27_n9(x)
- end
-end
-
-def fun_l26_n348(x)
- if (x < 1)
- fun_l27_n68(x)
- else
- fun_l27_n51(x)
- end
-end
-
-def fun_l26_n349(x)
- if (x < 1)
- fun_l27_n641(x)
- else
- fun_l27_n665(x)
- end
-end
-
-def fun_l26_n350(x)
- if (x < 1)
- fun_l27_n516(x)
- else
- fun_l27_n364(x)
- end
-end
-
-def fun_l26_n351(x)
- if (x < 1)
- fun_l27_n104(x)
- else
- fun_l27_n569(x)
- end
-end
-
-def fun_l26_n352(x)
- if (x < 1)
- fun_l27_n90(x)
- else
- fun_l27_n565(x)
- end
-end
-
-def fun_l26_n353(x)
- if (x < 1)
- fun_l27_n647(x)
- else
- fun_l27_n124(x)
- end
-end
-
-def fun_l26_n354(x)
- if (x < 1)
- fun_l27_n332(x)
- else
- fun_l27_n368(x)
- end
-end
-
-def fun_l26_n355(x)
- if (x < 1)
- fun_l27_n547(x)
- else
- fun_l27_n797(x)
- end
-end
-
-def fun_l26_n356(x)
- if (x < 1)
- fun_l27_n462(x)
- else
- fun_l27_n503(x)
- end
-end
-
-def fun_l26_n357(x)
- if (x < 1)
- fun_l27_n25(x)
- else
- fun_l27_n920(x)
- end
-end
-
-def fun_l26_n358(x)
- if (x < 1)
- fun_l27_n891(x)
- else
- fun_l27_n136(x)
- end
-end
-
-def fun_l26_n359(x)
- if (x < 1)
- fun_l27_n785(x)
- else
- fun_l27_n600(x)
- end
-end
-
-def fun_l26_n360(x)
- if (x < 1)
- fun_l27_n945(x)
- else
- fun_l27_n617(x)
- end
-end
-
-def fun_l26_n361(x)
- if (x < 1)
- fun_l27_n995(x)
- else
- fun_l27_n781(x)
- end
-end
-
-def fun_l26_n362(x)
- if (x < 1)
- fun_l27_n553(x)
- else
- fun_l27_n650(x)
- end
-end
-
-def fun_l26_n363(x)
- if (x < 1)
- fun_l27_n937(x)
- else
- fun_l27_n382(x)
- end
-end
-
-def fun_l26_n364(x)
- if (x < 1)
- fun_l27_n946(x)
- else
- fun_l27_n980(x)
- end
-end
-
-def fun_l26_n365(x)
- if (x < 1)
- fun_l27_n293(x)
- else
- fun_l27_n225(x)
- end
-end
-
-def fun_l26_n366(x)
- if (x < 1)
- fun_l27_n872(x)
- else
- fun_l27_n535(x)
- end
-end
-
-def fun_l26_n367(x)
- if (x < 1)
- fun_l27_n427(x)
- else
- fun_l27_n175(x)
- end
-end
-
-def fun_l26_n368(x)
- if (x < 1)
- fun_l27_n111(x)
- else
- fun_l27_n379(x)
- end
-end
-
-def fun_l26_n369(x)
- if (x < 1)
- fun_l27_n735(x)
- else
- fun_l27_n921(x)
- end
-end
-
-def fun_l26_n370(x)
- if (x < 1)
- fun_l27_n818(x)
- else
- fun_l27_n189(x)
- end
-end
-
-def fun_l26_n371(x)
- if (x < 1)
- fun_l27_n932(x)
- else
- fun_l27_n884(x)
- end
-end
-
-def fun_l26_n372(x)
- if (x < 1)
- fun_l27_n40(x)
- else
- fun_l27_n732(x)
- end
-end
-
-def fun_l26_n373(x)
- if (x < 1)
- fun_l27_n54(x)
- else
- fun_l27_n365(x)
- end
-end
-
-def fun_l26_n374(x)
- if (x < 1)
- fun_l27_n742(x)
- else
- fun_l27_n319(x)
- end
-end
-
-def fun_l26_n375(x)
- if (x < 1)
- fun_l27_n149(x)
- else
- fun_l27_n504(x)
- end
-end
-
-def fun_l26_n376(x)
- if (x < 1)
- fun_l27_n185(x)
- else
- fun_l27_n458(x)
- end
-end
-
-def fun_l26_n377(x)
- if (x < 1)
- fun_l27_n107(x)
- else
- fun_l27_n201(x)
- end
-end
-
-def fun_l26_n378(x)
- if (x < 1)
- fun_l27_n94(x)
- else
- fun_l27_n173(x)
- end
-end
-
-def fun_l26_n379(x)
- if (x < 1)
- fun_l27_n198(x)
- else
- fun_l27_n885(x)
- end
-end
-
-def fun_l26_n380(x)
- if (x < 1)
- fun_l27_n164(x)
- else
- fun_l27_n23(x)
- end
-end
-
-def fun_l26_n381(x)
- if (x < 1)
- fun_l27_n170(x)
- else
- fun_l27_n431(x)
- end
-end
-
-def fun_l26_n382(x)
- if (x < 1)
- fun_l27_n679(x)
- else
- fun_l27_n613(x)
- end
-end
-
-def fun_l26_n383(x)
- if (x < 1)
- fun_l27_n981(x)
- else
- fun_l27_n69(x)
- end
-end
-
-def fun_l26_n384(x)
- if (x < 1)
- fun_l27_n600(x)
- else
- fun_l27_n544(x)
- end
-end
-
-def fun_l26_n385(x)
- if (x < 1)
- fun_l27_n153(x)
- else
- fun_l27_n332(x)
- end
-end
-
-def fun_l26_n386(x)
- if (x < 1)
- fun_l27_n63(x)
- else
- fun_l27_n597(x)
- end
-end
-
-def fun_l26_n387(x)
- if (x < 1)
- fun_l27_n259(x)
- else
- fun_l27_n33(x)
- end
-end
-
-def fun_l26_n388(x)
- if (x < 1)
- fun_l27_n363(x)
- else
- fun_l27_n765(x)
- end
-end
-
-def fun_l26_n389(x)
- if (x < 1)
- fun_l27_n495(x)
- else
- fun_l27_n133(x)
- end
-end
-
-def fun_l26_n390(x)
- if (x < 1)
- fun_l27_n62(x)
- else
- fun_l27_n462(x)
- end
-end
-
-def fun_l26_n391(x)
- if (x < 1)
- fun_l27_n811(x)
- else
- fun_l27_n30(x)
- end
-end
-
-def fun_l26_n392(x)
- if (x < 1)
- fun_l27_n222(x)
- else
- fun_l27_n451(x)
- end
-end
-
-def fun_l26_n393(x)
- if (x < 1)
- fun_l27_n286(x)
- else
- fun_l27_n664(x)
- end
-end
-
-def fun_l26_n394(x)
- if (x < 1)
- fun_l27_n935(x)
- else
- fun_l27_n392(x)
- end
-end
-
-def fun_l26_n395(x)
- if (x < 1)
- fun_l27_n621(x)
- else
- fun_l27_n434(x)
- end
-end
-
-def fun_l26_n396(x)
- if (x < 1)
- fun_l27_n318(x)
- else
- fun_l27_n410(x)
- end
-end
-
-def fun_l26_n397(x)
- if (x < 1)
- fun_l27_n847(x)
- else
- fun_l27_n727(x)
- end
-end
-
-def fun_l26_n398(x)
- if (x < 1)
- fun_l27_n705(x)
- else
- fun_l27_n453(x)
- end
-end
-
-def fun_l26_n399(x)
- if (x < 1)
- fun_l27_n787(x)
- else
- fun_l27_n442(x)
- end
-end
-
-def fun_l26_n400(x)
- if (x < 1)
- fun_l27_n854(x)
- else
- fun_l27_n885(x)
- end
-end
-
-def fun_l26_n401(x)
- if (x < 1)
- fun_l27_n825(x)
- else
- fun_l27_n399(x)
- end
-end
-
-def fun_l26_n402(x)
- if (x < 1)
- fun_l27_n420(x)
- else
- fun_l27_n747(x)
- end
-end
-
-def fun_l26_n403(x)
- if (x < 1)
- fun_l27_n985(x)
- else
- fun_l27_n875(x)
- end
-end
-
-def fun_l26_n404(x)
- if (x < 1)
- fun_l27_n193(x)
- else
- fun_l27_n448(x)
- end
-end
-
-def fun_l26_n405(x)
- if (x < 1)
- fun_l27_n594(x)
- else
- fun_l27_n769(x)
- end
-end
-
-def fun_l26_n406(x)
- if (x < 1)
- fun_l27_n774(x)
- else
- fun_l27_n44(x)
- end
-end
-
-def fun_l26_n407(x)
- if (x < 1)
- fun_l27_n563(x)
- else
- fun_l27_n979(x)
- end
-end
-
-def fun_l26_n408(x)
- if (x < 1)
- fun_l27_n369(x)
- else
- fun_l27_n825(x)
- end
-end
-
-def fun_l26_n409(x)
- if (x < 1)
- fun_l27_n70(x)
- else
- fun_l27_n894(x)
- end
-end
-
-def fun_l26_n410(x)
- if (x < 1)
- fun_l27_n651(x)
- else
- fun_l27_n224(x)
- end
-end
-
-def fun_l26_n411(x)
- if (x < 1)
- fun_l27_n219(x)
- else
- fun_l27_n193(x)
- end
-end
-
-def fun_l26_n412(x)
- if (x < 1)
- fun_l27_n16(x)
- else
- fun_l27_n113(x)
- end
-end
-
-def fun_l26_n413(x)
- if (x < 1)
- fun_l27_n653(x)
- else
- fun_l27_n754(x)
- end
-end
-
-def fun_l26_n414(x)
- if (x < 1)
- fun_l27_n682(x)
- else
- fun_l27_n378(x)
- end
-end
-
-def fun_l26_n415(x)
- if (x < 1)
- fun_l27_n326(x)
- else
- fun_l27_n534(x)
- end
-end
-
-def fun_l26_n416(x)
- if (x < 1)
- fun_l27_n552(x)
- else
- fun_l27_n627(x)
- end
-end
-
-def fun_l26_n417(x)
- if (x < 1)
- fun_l27_n486(x)
- else
- fun_l27_n729(x)
- end
-end
-
-def fun_l26_n418(x)
- if (x < 1)
- fun_l27_n153(x)
- else
- fun_l27_n220(x)
- end
-end
-
-def fun_l26_n419(x)
- if (x < 1)
- fun_l27_n636(x)
- else
- fun_l27_n492(x)
- end
-end
-
-def fun_l26_n420(x)
- if (x < 1)
- fun_l27_n692(x)
- else
- fun_l27_n7(x)
- end
-end
-
-def fun_l26_n421(x)
- if (x < 1)
- fun_l27_n303(x)
- else
- fun_l27_n396(x)
- end
-end
-
-def fun_l26_n422(x)
- if (x < 1)
- fun_l27_n937(x)
- else
- fun_l27_n940(x)
- end
-end
-
-def fun_l26_n423(x)
- if (x < 1)
- fun_l27_n581(x)
- else
- fun_l27_n355(x)
- end
-end
-
-def fun_l26_n424(x)
- if (x < 1)
- fun_l27_n743(x)
- else
- fun_l27_n636(x)
- end
-end
-
-def fun_l26_n425(x)
- if (x < 1)
- fun_l27_n385(x)
- else
- fun_l27_n573(x)
- end
-end
-
-def fun_l26_n426(x)
- if (x < 1)
- fun_l27_n595(x)
- else
- fun_l27_n873(x)
- end
-end
-
-def fun_l26_n427(x)
- if (x < 1)
- fun_l27_n700(x)
- else
- fun_l27_n541(x)
- end
-end
-
-def fun_l26_n428(x)
- if (x < 1)
- fun_l27_n445(x)
- else
- fun_l27_n239(x)
- end
-end
-
-def fun_l26_n429(x)
- if (x < 1)
- fun_l27_n500(x)
- else
- fun_l27_n7(x)
- end
-end
-
-def fun_l26_n430(x)
- if (x < 1)
- fun_l27_n615(x)
- else
- fun_l27_n383(x)
- end
-end
-
-def fun_l26_n431(x)
- if (x < 1)
- fun_l27_n962(x)
- else
- fun_l27_n424(x)
- end
-end
-
-def fun_l26_n432(x)
- if (x < 1)
- fun_l27_n289(x)
- else
- fun_l27_n142(x)
- end
-end
-
-def fun_l26_n433(x)
- if (x < 1)
- fun_l27_n527(x)
- else
- fun_l27_n112(x)
- end
-end
-
-def fun_l26_n434(x)
- if (x < 1)
- fun_l27_n884(x)
- else
- fun_l27_n509(x)
- end
-end
-
-def fun_l26_n435(x)
- if (x < 1)
- fun_l27_n65(x)
- else
- fun_l27_n431(x)
- end
-end
-
-def fun_l26_n436(x)
- if (x < 1)
- fun_l27_n324(x)
- else
- fun_l27_n885(x)
- end
-end
-
-def fun_l26_n437(x)
- if (x < 1)
- fun_l27_n826(x)
- else
- fun_l27_n372(x)
- end
-end
-
-def fun_l26_n438(x)
- if (x < 1)
- fun_l27_n291(x)
- else
- fun_l27_n793(x)
- end
-end
-
-def fun_l26_n439(x)
- if (x < 1)
- fun_l27_n677(x)
- else
- fun_l27_n31(x)
- end
-end
-
-def fun_l26_n440(x)
- if (x < 1)
- fun_l27_n948(x)
- else
- fun_l27_n320(x)
- end
-end
-
-def fun_l26_n441(x)
- if (x < 1)
- fun_l27_n951(x)
- else
- fun_l27_n504(x)
- end
-end
-
-def fun_l26_n442(x)
- if (x < 1)
- fun_l27_n388(x)
- else
- fun_l27_n1(x)
- end
-end
-
-def fun_l26_n443(x)
- if (x < 1)
- fun_l27_n92(x)
- else
- fun_l27_n570(x)
- end
-end
-
-def fun_l26_n444(x)
- if (x < 1)
- fun_l27_n956(x)
- else
- fun_l27_n120(x)
- end
-end
-
-def fun_l26_n445(x)
- if (x < 1)
- fun_l27_n985(x)
- else
- fun_l27_n233(x)
- end
-end
-
-def fun_l26_n446(x)
- if (x < 1)
- fun_l27_n153(x)
- else
- fun_l27_n590(x)
- end
-end
-
-def fun_l26_n447(x)
- if (x < 1)
- fun_l27_n793(x)
- else
- fun_l27_n675(x)
- end
-end
-
-def fun_l26_n448(x)
- if (x < 1)
- fun_l27_n351(x)
- else
- fun_l27_n781(x)
- end
-end
-
-def fun_l26_n449(x)
- if (x < 1)
- fun_l27_n137(x)
- else
- fun_l27_n147(x)
- end
-end
-
-def fun_l26_n450(x)
- if (x < 1)
- fun_l27_n138(x)
- else
- fun_l27_n636(x)
- end
-end
-
-def fun_l26_n451(x)
- if (x < 1)
- fun_l27_n154(x)
- else
- fun_l27_n755(x)
- end
-end
-
-def fun_l26_n452(x)
- if (x < 1)
- fun_l27_n665(x)
- else
- fun_l27_n65(x)
- end
-end
-
-def fun_l26_n453(x)
- if (x < 1)
- fun_l27_n769(x)
- else
- fun_l27_n847(x)
- end
-end
-
-def fun_l26_n454(x)
- if (x < 1)
- fun_l27_n959(x)
- else
- fun_l27_n731(x)
- end
-end
-
-def fun_l26_n455(x)
- if (x < 1)
- fun_l27_n565(x)
- else
- fun_l27_n916(x)
- end
-end
-
-def fun_l26_n456(x)
- if (x < 1)
- fun_l27_n421(x)
- else
- fun_l27_n57(x)
- end
-end
-
-def fun_l26_n457(x)
- if (x < 1)
- fun_l27_n595(x)
- else
- fun_l27_n920(x)
- end
-end
-
-def fun_l26_n458(x)
- if (x < 1)
- fun_l27_n660(x)
- else
- fun_l27_n835(x)
- end
-end
-
-def fun_l26_n459(x)
- if (x < 1)
- fun_l27_n114(x)
- else
- fun_l27_n418(x)
- end
-end
-
-def fun_l26_n460(x)
- if (x < 1)
- fun_l27_n744(x)
- else
- fun_l27_n674(x)
- end
-end
-
-def fun_l26_n461(x)
- if (x < 1)
- fun_l27_n436(x)
- else
- fun_l27_n448(x)
- end
-end
-
-def fun_l26_n462(x)
- if (x < 1)
- fun_l27_n796(x)
- else
- fun_l27_n960(x)
- end
-end
-
-def fun_l26_n463(x)
- if (x < 1)
- fun_l27_n871(x)
- else
- fun_l27_n300(x)
- end
-end
-
-def fun_l26_n464(x)
- if (x < 1)
- fun_l27_n942(x)
- else
- fun_l27_n625(x)
- end
-end
-
-def fun_l26_n465(x)
- if (x < 1)
- fun_l27_n219(x)
- else
- fun_l27_n383(x)
- end
-end
-
-def fun_l26_n466(x)
- if (x < 1)
- fun_l27_n440(x)
- else
- fun_l27_n177(x)
- end
-end
-
-def fun_l26_n467(x)
- if (x < 1)
- fun_l27_n958(x)
- else
- fun_l27_n441(x)
- end
-end
-
-def fun_l26_n468(x)
- if (x < 1)
- fun_l27_n899(x)
- else
- fun_l27_n613(x)
- end
-end
-
-def fun_l26_n469(x)
- if (x < 1)
- fun_l27_n535(x)
- else
- fun_l27_n439(x)
- end
-end
-
-def fun_l26_n470(x)
- if (x < 1)
- fun_l27_n18(x)
- else
- fun_l27_n716(x)
- end
-end
-
-def fun_l26_n471(x)
- if (x < 1)
- fun_l27_n768(x)
- else
- fun_l27_n374(x)
- end
-end
-
-def fun_l26_n472(x)
- if (x < 1)
- fun_l27_n537(x)
- else
- fun_l27_n434(x)
- end
-end
-
-def fun_l26_n473(x)
- if (x < 1)
- fun_l27_n632(x)
- else
- fun_l27_n733(x)
- end
-end
-
-def fun_l26_n474(x)
- if (x < 1)
- fun_l27_n347(x)
- else
- fun_l27_n562(x)
- end
-end
-
-def fun_l26_n475(x)
- if (x < 1)
- fun_l27_n741(x)
- else
- fun_l27_n684(x)
- end
-end
-
-def fun_l26_n476(x)
- if (x < 1)
- fun_l27_n222(x)
- else
- fun_l27_n41(x)
- end
-end
-
-def fun_l26_n477(x)
- if (x < 1)
- fun_l27_n23(x)
- else
- fun_l27_n541(x)
- end
-end
-
-def fun_l26_n478(x)
- if (x < 1)
- fun_l27_n588(x)
- else
- fun_l27_n394(x)
- end
-end
-
-def fun_l26_n479(x)
- if (x < 1)
- fun_l27_n526(x)
- else
- fun_l27_n974(x)
- end
-end
-
-def fun_l26_n480(x)
- if (x < 1)
- fun_l27_n845(x)
- else
- fun_l27_n528(x)
- end
-end
-
-def fun_l26_n481(x)
- if (x < 1)
- fun_l27_n505(x)
- else
- fun_l27_n913(x)
- end
-end
-
-def fun_l26_n482(x)
- if (x < 1)
- fun_l27_n100(x)
- else
- fun_l27_n233(x)
- end
-end
-
-def fun_l26_n483(x)
- if (x < 1)
- fun_l27_n87(x)
- else
- fun_l27_n339(x)
- end
-end
-
-def fun_l26_n484(x)
- if (x < 1)
- fun_l27_n744(x)
- else
- fun_l27_n404(x)
- end
-end
-
-def fun_l26_n485(x)
- if (x < 1)
- fun_l27_n965(x)
- else
- fun_l27_n86(x)
- end
-end
-
-def fun_l26_n486(x)
- if (x < 1)
- fun_l27_n826(x)
- else
- fun_l27_n25(x)
- end
-end
-
-def fun_l26_n487(x)
- if (x < 1)
- fun_l27_n950(x)
- else
- fun_l27_n876(x)
- end
-end
-
-def fun_l26_n488(x)
- if (x < 1)
- fun_l27_n964(x)
- else
- fun_l27_n60(x)
- end
-end
-
-def fun_l26_n489(x)
- if (x < 1)
- fun_l27_n171(x)
- else
- fun_l27_n768(x)
- end
-end
-
-def fun_l26_n490(x)
- if (x < 1)
- fun_l27_n391(x)
- else
- fun_l27_n308(x)
- end
-end
-
-def fun_l26_n491(x)
- if (x < 1)
- fun_l27_n440(x)
- else
- fun_l27_n51(x)
- end
-end
-
-def fun_l26_n492(x)
- if (x < 1)
- fun_l27_n403(x)
- else
- fun_l27_n956(x)
- end
-end
-
-def fun_l26_n493(x)
- if (x < 1)
- fun_l27_n802(x)
- else
- fun_l27_n931(x)
- end
-end
-
-def fun_l26_n494(x)
- if (x < 1)
- fun_l27_n7(x)
- else
- fun_l27_n291(x)
- end
-end
-
-def fun_l26_n495(x)
- if (x < 1)
- fun_l27_n149(x)
- else
- fun_l27_n173(x)
- end
-end
-
-def fun_l26_n496(x)
- if (x < 1)
- fun_l27_n864(x)
- else
- fun_l27_n488(x)
- end
-end
-
-def fun_l26_n497(x)
- if (x < 1)
- fun_l27_n290(x)
- else
- fun_l27_n431(x)
- end
-end
-
-def fun_l26_n498(x)
- if (x < 1)
- fun_l27_n269(x)
- else
- fun_l27_n622(x)
- end
-end
-
-def fun_l26_n499(x)
- if (x < 1)
- fun_l27_n168(x)
- else
- fun_l27_n225(x)
- end
-end
-
-def fun_l26_n500(x)
- if (x < 1)
- fun_l27_n512(x)
- else
- fun_l27_n363(x)
- end
-end
-
-def fun_l26_n501(x)
- if (x < 1)
- fun_l27_n844(x)
- else
- fun_l27_n15(x)
- end
-end
-
-def fun_l26_n502(x)
- if (x < 1)
- fun_l27_n242(x)
- else
- fun_l27_n479(x)
- end
-end
-
-def fun_l26_n503(x)
- if (x < 1)
- fun_l27_n285(x)
- else
- fun_l27_n202(x)
- end
-end
-
-def fun_l26_n504(x)
- if (x < 1)
- fun_l27_n64(x)
- else
- fun_l27_n223(x)
- end
-end
-
-def fun_l26_n505(x)
- if (x < 1)
- fun_l27_n85(x)
- else
- fun_l27_n477(x)
- end
-end
-
-def fun_l26_n506(x)
- if (x < 1)
- fun_l27_n360(x)
- else
- fun_l27_n406(x)
- end
-end
-
-def fun_l26_n507(x)
- if (x < 1)
- fun_l27_n515(x)
- else
- fun_l27_n599(x)
- end
-end
-
-def fun_l26_n508(x)
- if (x < 1)
- fun_l27_n848(x)
- else
- fun_l27_n832(x)
- end
-end
-
-def fun_l26_n509(x)
- if (x < 1)
- fun_l27_n831(x)
- else
- fun_l27_n334(x)
- end
-end
-
-def fun_l26_n510(x)
- if (x < 1)
- fun_l27_n53(x)
- else
- fun_l27_n937(x)
- end
-end
-
-def fun_l26_n511(x)
- if (x < 1)
- fun_l27_n583(x)
- else
- fun_l27_n901(x)
- end
-end
-
-def fun_l26_n512(x)
- if (x < 1)
- fun_l27_n394(x)
- else
- fun_l27_n135(x)
- end
-end
-
-def fun_l26_n513(x)
- if (x < 1)
- fun_l27_n175(x)
- else
- fun_l27_n339(x)
- end
-end
-
-def fun_l26_n514(x)
- if (x < 1)
- fun_l27_n200(x)
- else
- fun_l27_n124(x)
- end
-end
-
-def fun_l26_n515(x)
- if (x < 1)
- fun_l27_n145(x)
- else
- fun_l27_n426(x)
- end
-end
-
-def fun_l26_n516(x)
- if (x < 1)
- fun_l27_n803(x)
- else
- fun_l27_n466(x)
- end
-end
-
-def fun_l26_n517(x)
- if (x < 1)
- fun_l27_n773(x)
- else
- fun_l27_n296(x)
- end
-end
-
-def fun_l26_n518(x)
- if (x < 1)
- fun_l27_n957(x)
- else
- fun_l27_n373(x)
- end
-end
-
-def fun_l26_n519(x)
- if (x < 1)
- fun_l27_n887(x)
- else
- fun_l27_n498(x)
- end
-end
-
-def fun_l26_n520(x)
- if (x < 1)
- fun_l27_n629(x)
- else
- fun_l27_n477(x)
- end
-end
-
-def fun_l26_n521(x)
- if (x < 1)
- fun_l27_n634(x)
- else
- fun_l27_n138(x)
- end
-end
-
-def fun_l26_n522(x)
- if (x < 1)
- fun_l27_n942(x)
- else
- fun_l27_n853(x)
- end
-end
-
-def fun_l26_n523(x)
- if (x < 1)
- fun_l27_n453(x)
- else
- fun_l27_n520(x)
- end
-end
-
-def fun_l26_n524(x)
- if (x < 1)
- fun_l27_n125(x)
- else
- fun_l27_n922(x)
- end
-end
-
-def fun_l26_n525(x)
- if (x < 1)
- fun_l27_n629(x)
- else
- fun_l27_n711(x)
- end
-end
-
-def fun_l26_n526(x)
- if (x < 1)
- fun_l27_n243(x)
- else
- fun_l27_n374(x)
- end
-end
-
-def fun_l26_n527(x)
- if (x < 1)
- fun_l27_n476(x)
- else
- fun_l27_n348(x)
- end
-end
-
-def fun_l26_n528(x)
- if (x < 1)
- fun_l27_n532(x)
- else
- fun_l27_n156(x)
- end
-end
-
-def fun_l26_n529(x)
- if (x < 1)
- fun_l27_n139(x)
- else
- fun_l27_n976(x)
- end
-end
-
-def fun_l26_n530(x)
- if (x < 1)
- fun_l27_n323(x)
- else
- fun_l27_n48(x)
- end
-end
-
-def fun_l26_n531(x)
- if (x < 1)
- fun_l27_n626(x)
- else
- fun_l27_n913(x)
- end
-end
-
-def fun_l26_n532(x)
- if (x < 1)
- fun_l27_n98(x)
- else
- fun_l27_n369(x)
- end
-end
-
-def fun_l26_n533(x)
- if (x < 1)
- fun_l27_n50(x)
- else
- fun_l27_n41(x)
- end
-end
-
-def fun_l26_n534(x)
- if (x < 1)
- fun_l27_n163(x)
- else
- fun_l27_n722(x)
- end
-end
-
-def fun_l26_n535(x)
- if (x < 1)
- fun_l27_n640(x)
- else
- fun_l27_n622(x)
- end
-end
-
-def fun_l26_n536(x)
- if (x < 1)
- fun_l27_n98(x)
- else
- fun_l27_n970(x)
- end
-end
-
-def fun_l26_n537(x)
- if (x < 1)
- fun_l27_n828(x)
- else
- fun_l27_n240(x)
- end
-end
-
-def fun_l26_n538(x)
- if (x < 1)
- fun_l27_n303(x)
- else
- fun_l27_n116(x)
- end
-end
-
-def fun_l26_n539(x)
- if (x < 1)
- fun_l27_n341(x)
- else
- fun_l27_n545(x)
- end
-end
-
-def fun_l26_n540(x)
- if (x < 1)
- fun_l27_n476(x)
- else
- fun_l27_n943(x)
- end
-end
-
-def fun_l26_n541(x)
- if (x < 1)
- fun_l27_n380(x)
- else
- fun_l27_n894(x)
- end
-end
-
-def fun_l26_n542(x)
- if (x < 1)
- fun_l27_n330(x)
- else
- fun_l27_n96(x)
- end
-end
-
-def fun_l26_n543(x)
- if (x < 1)
- fun_l27_n676(x)
- else
- fun_l27_n876(x)
- end
-end
-
-def fun_l26_n544(x)
- if (x < 1)
- fun_l27_n396(x)
- else
- fun_l27_n116(x)
- end
-end
-
-def fun_l26_n545(x)
- if (x < 1)
- fun_l27_n691(x)
- else
- fun_l27_n178(x)
- end
-end
-
-def fun_l26_n546(x)
- if (x < 1)
- fun_l27_n118(x)
- else
- fun_l27_n956(x)
- end
-end
-
-def fun_l26_n547(x)
- if (x < 1)
- fun_l27_n20(x)
- else
- fun_l27_n777(x)
- end
-end
-
-def fun_l26_n548(x)
- if (x < 1)
- fun_l27_n522(x)
- else
- fun_l27_n808(x)
- end
-end
-
-def fun_l26_n549(x)
- if (x < 1)
- fun_l27_n624(x)
- else
- fun_l27_n54(x)
- end
-end
-
-def fun_l26_n550(x)
- if (x < 1)
- fun_l27_n364(x)
- else
- fun_l27_n243(x)
- end
-end
-
-def fun_l26_n551(x)
- if (x < 1)
- fun_l27_n283(x)
- else
- fun_l27_n913(x)
- end
-end
-
-def fun_l26_n552(x)
- if (x < 1)
- fun_l27_n101(x)
- else
- fun_l27_n136(x)
- end
-end
-
-def fun_l26_n553(x)
- if (x < 1)
- fun_l27_n965(x)
- else
- fun_l27_n453(x)
- end
-end
-
-def fun_l26_n554(x)
- if (x < 1)
- fun_l27_n807(x)
- else
- fun_l27_n442(x)
- end
-end
-
-def fun_l26_n555(x)
- if (x < 1)
- fun_l27_n987(x)
- else
- fun_l27_n883(x)
- end
-end
-
-def fun_l26_n556(x)
- if (x < 1)
- fun_l27_n475(x)
- else
- fun_l27_n439(x)
- end
-end
-
-def fun_l26_n557(x)
- if (x < 1)
- fun_l27_n580(x)
- else
- fun_l27_n301(x)
- end
-end
-
-def fun_l26_n558(x)
- if (x < 1)
- fun_l27_n91(x)
- else
- fun_l27_n514(x)
- end
-end
-
-def fun_l26_n559(x)
- if (x < 1)
- fun_l27_n395(x)
- else
- fun_l27_n583(x)
- end
-end
-
-def fun_l26_n560(x)
- if (x < 1)
- fun_l27_n81(x)
- else
- fun_l27_n817(x)
- end
-end
-
-def fun_l26_n561(x)
- if (x < 1)
- fun_l27_n816(x)
- else
- fun_l27_n423(x)
- end
-end
-
-def fun_l26_n562(x)
- if (x < 1)
- fun_l27_n513(x)
- else
- fun_l27_n577(x)
- end
-end
-
-def fun_l26_n563(x)
- if (x < 1)
- fun_l27_n864(x)
- else
- fun_l27_n249(x)
- end
-end
-
-def fun_l26_n564(x)
- if (x < 1)
- fun_l27_n408(x)
- else
- fun_l27_n281(x)
- end
-end
-
-def fun_l26_n565(x)
- if (x < 1)
- fun_l27_n963(x)
- else
- fun_l27_n736(x)
- end
-end
-
-def fun_l26_n566(x)
- if (x < 1)
- fun_l27_n366(x)
- else
- fun_l27_n774(x)
- end
-end
-
-def fun_l26_n567(x)
- if (x < 1)
- fun_l27_n239(x)
- else
- fun_l27_n473(x)
- end
-end
-
-def fun_l26_n568(x)
- if (x < 1)
- fun_l27_n272(x)
- else
- fun_l27_n790(x)
- end
-end
-
-def fun_l26_n569(x)
- if (x < 1)
- fun_l27_n225(x)
- else
- fun_l27_n970(x)
- end
-end
-
-def fun_l26_n570(x)
- if (x < 1)
- fun_l27_n631(x)
- else
- fun_l27_n988(x)
- end
-end
-
-def fun_l26_n571(x)
- if (x < 1)
- fun_l27_n224(x)
- else
- fun_l27_n286(x)
- end
-end
-
-def fun_l26_n572(x)
- if (x < 1)
- fun_l27_n141(x)
- else
- fun_l27_n573(x)
- end
-end
-
-def fun_l26_n573(x)
- if (x < 1)
- fun_l27_n493(x)
- else
- fun_l27_n288(x)
- end
-end
-
-def fun_l26_n574(x)
- if (x < 1)
- fun_l27_n573(x)
- else
- fun_l27_n88(x)
- end
-end
-
-def fun_l26_n575(x)
- if (x < 1)
- fun_l27_n174(x)
- else
- fun_l27_n635(x)
- end
-end
-
-def fun_l26_n576(x)
- if (x < 1)
- fun_l27_n146(x)
- else
- fun_l27_n48(x)
- end
-end
-
-def fun_l26_n577(x)
- if (x < 1)
- fun_l27_n344(x)
- else
- fun_l27_n668(x)
- end
-end
-
-def fun_l26_n578(x)
- if (x < 1)
- fun_l27_n624(x)
- else
- fun_l27_n516(x)
- end
-end
-
-def fun_l26_n579(x)
- if (x < 1)
- fun_l27_n349(x)
- else
- fun_l27_n510(x)
- end
-end
-
-def fun_l26_n580(x)
- if (x < 1)
- fun_l27_n625(x)
- else
- fun_l27_n474(x)
- end
-end
-
-def fun_l26_n581(x)
- if (x < 1)
- fun_l27_n473(x)
- else
- fun_l27_n785(x)
- end
-end
-
-def fun_l26_n582(x)
- if (x < 1)
- fun_l27_n246(x)
- else
- fun_l27_n803(x)
- end
-end
-
-def fun_l26_n583(x)
- if (x < 1)
- fun_l27_n232(x)
- else
- fun_l27_n981(x)
- end
-end
-
-def fun_l26_n584(x)
- if (x < 1)
- fun_l27_n825(x)
- else
- fun_l27_n65(x)
- end
-end
-
-def fun_l26_n585(x)
- if (x < 1)
- fun_l27_n258(x)
- else
- fun_l27_n700(x)
- end
-end
-
-def fun_l26_n586(x)
- if (x < 1)
- fun_l27_n404(x)
- else
- fun_l27_n124(x)
- end
-end
-
-def fun_l26_n587(x)
- if (x < 1)
- fun_l27_n390(x)
- else
- fun_l27_n812(x)
- end
-end
-
-def fun_l26_n588(x)
- if (x < 1)
- fun_l27_n874(x)
- else
- fun_l27_n249(x)
- end
-end
-
-def fun_l26_n589(x)
- if (x < 1)
- fun_l27_n837(x)
- else
- fun_l27_n480(x)
- end
-end
-
-def fun_l26_n590(x)
- if (x < 1)
- fun_l27_n126(x)
- else
- fun_l27_n446(x)
- end
-end
-
-def fun_l26_n591(x)
- if (x < 1)
- fun_l27_n838(x)
- else
- fun_l27_n285(x)
- end
-end
-
-def fun_l26_n592(x)
- if (x < 1)
- fun_l27_n364(x)
- else
- fun_l27_n821(x)
- end
-end
-
-def fun_l26_n593(x)
- if (x < 1)
- fun_l27_n781(x)
- else
- fun_l27_n310(x)
- end
-end
-
-def fun_l26_n594(x)
- if (x < 1)
- fun_l27_n343(x)
- else
- fun_l27_n853(x)
- end
-end
-
-def fun_l26_n595(x)
- if (x < 1)
- fun_l27_n216(x)
- else
- fun_l27_n334(x)
- end
-end
-
-def fun_l26_n596(x)
- if (x < 1)
- fun_l27_n866(x)
- else
- fun_l27_n981(x)
- end
-end
-
-def fun_l26_n597(x)
- if (x < 1)
- fun_l27_n551(x)
- else
- fun_l27_n184(x)
- end
-end
-
-def fun_l26_n598(x)
- if (x < 1)
- fun_l27_n538(x)
- else
- fun_l27_n878(x)
- end
-end
-
-def fun_l26_n599(x)
- if (x < 1)
- fun_l27_n909(x)
- else
- fun_l27_n435(x)
- end
-end
-
-def fun_l26_n600(x)
- if (x < 1)
- fun_l27_n695(x)
- else
- fun_l27_n886(x)
- end
-end
-
-def fun_l26_n601(x)
- if (x < 1)
- fun_l27_n927(x)
- else
- fun_l27_n303(x)
- end
-end
-
-def fun_l26_n602(x)
- if (x < 1)
- fun_l27_n323(x)
- else
- fun_l27_n534(x)
- end
-end
-
-def fun_l26_n603(x)
- if (x < 1)
- fun_l27_n803(x)
- else
- fun_l27_n34(x)
- end
-end
-
-def fun_l26_n604(x)
- if (x < 1)
- fun_l27_n266(x)
- else
- fun_l27_n800(x)
- end
-end
-
-def fun_l26_n605(x)
- if (x < 1)
- fun_l27_n831(x)
- else
- fun_l27_n338(x)
- end
-end
-
-def fun_l26_n606(x)
- if (x < 1)
- fun_l27_n97(x)
- else
- fun_l27_n772(x)
- end
-end
-
-def fun_l26_n607(x)
- if (x < 1)
- fun_l27_n291(x)
- else
- fun_l27_n756(x)
- end
-end
-
-def fun_l26_n608(x)
- if (x < 1)
- fun_l27_n906(x)
- else
- fun_l27_n861(x)
- end
-end
-
-def fun_l26_n609(x)
- if (x < 1)
- fun_l27_n793(x)
- else
- fun_l27_n845(x)
- end
-end
-
-def fun_l26_n610(x)
- if (x < 1)
- fun_l27_n83(x)
- else
- fun_l27_n359(x)
- end
-end
-
-def fun_l26_n611(x)
- if (x < 1)
- fun_l27_n911(x)
- else
- fun_l27_n526(x)
- end
-end
-
-def fun_l26_n612(x)
- if (x < 1)
- fun_l27_n377(x)
- else
- fun_l27_n387(x)
- end
-end
-
-def fun_l26_n613(x)
- if (x < 1)
- fun_l27_n809(x)
- else
- fun_l27_n802(x)
- end
-end
-
-def fun_l26_n614(x)
- if (x < 1)
- fun_l27_n984(x)
- else
- fun_l27_n683(x)
- end
-end
-
-def fun_l26_n615(x)
- if (x < 1)
- fun_l27_n330(x)
- else
- fun_l27_n439(x)
- end
-end
-
-def fun_l26_n616(x)
- if (x < 1)
- fun_l27_n16(x)
- else
- fun_l27_n831(x)
- end
-end
-
-def fun_l26_n617(x)
- if (x < 1)
- fun_l27_n149(x)
- else
- fun_l27_n934(x)
- end
-end
-
-def fun_l26_n618(x)
- if (x < 1)
- fun_l27_n383(x)
- else
- fun_l27_n439(x)
- end
-end
-
-def fun_l26_n619(x)
- if (x < 1)
- fun_l27_n599(x)
- else
- fun_l27_n855(x)
- end
-end
-
-def fun_l26_n620(x)
- if (x < 1)
- fun_l27_n202(x)
- else
- fun_l27_n902(x)
- end
-end
-
-def fun_l26_n621(x)
- if (x < 1)
- fun_l27_n219(x)
- else
- fun_l27_n13(x)
- end
-end
-
-def fun_l26_n622(x)
- if (x < 1)
- fun_l27_n473(x)
- else
- fun_l27_n12(x)
- end
-end
-
-def fun_l26_n623(x)
- if (x < 1)
- fun_l27_n918(x)
- else
- fun_l27_n50(x)
- end
-end
-
-def fun_l26_n624(x)
- if (x < 1)
- fun_l27_n585(x)
- else
- fun_l27_n902(x)
- end
-end
-
-def fun_l26_n625(x)
- if (x < 1)
- fun_l27_n676(x)
- else
- fun_l27_n533(x)
- end
-end
-
-def fun_l26_n626(x)
- if (x < 1)
- fun_l27_n122(x)
- else
- fun_l27_n823(x)
- end
-end
-
-def fun_l26_n627(x)
- if (x < 1)
- fun_l27_n214(x)
- else
- fun_l27_n485(x)
- end
-end
-
-def fun_l26_n628(x)
- if (x < 1)
- fun_l27_n453(x)
- else
- fun_l27_n312(x)
- end
-end
-
-def fun_l26_n629(x)
- if (x < 1)
- fun_l27_n929(x)
- else
- fun_l27_n272(x)
- end
-end
-
-def fun_l26_n630(x)
- if (x < 1)
- fun_l27_n546(x)
- else
- fun_l27_n950(x)
- end
-end
-
-def fun_l26_n631(x)
- if (x < 1)
- fun_l27_n222(x)
- else
- fun_l27_n780(x)
- end
-end
-
-def fun_l26_n632(x)
- if (x < 1)
- fun_l27_n878(x)
- else
- fun_l27_n721(x)
- end
-end
-
-def fun_l26_n633(x)
- if (x < 1)
- fun_l27_n611(x)
- else
- fun_l27_n15(x)
- end
-end
-
-def fun_l26_n634(x)
- if (x < 1)
- fun_l27_n728(x)
- else
- fun_l27_n848(x)
- end
-end
-
-def fun_l26_n635(x)
- if (x < 1)
- fun_l27_n489(x)
- else
- fun_l27_n3(x)
- end
-end
-
-def fun_l26_n636(x)
- if (x < 1)
- fun_l27_n138(x)
- else
- fun_l27_n231(x)
- end
-end
-
-def fun_l26_n637(x)
- if (x < 1)
- fun_l27_n861(x)
- else
- fun_l27_n115(x)
- end
-end
-
-def fun_l26_n638(x)
- if (x < 1)
- fun_l27_n7(x)
- else
- fun_l27_n894(x)
- end
-end
-
-def fun_l26_n639(x)
- if (x < 1)
- fun_l27_n683(x)
- else
- fun_l27_n964(x)
- end
-end
-
-def fun_l26_n640(x)
- if (x < 1)
- fun_l27_n100(x)
- else
- fun_l27_n40(x)
- end
-end
-
-def fun_l26_n641(x)
- if (x < 1)
- fun_l27_n744(x)
- else
- fun_l27_n855(x)
- end
-end
-
-def fun_l26_n642(x)
- if (x < 1)
- fun_l27_n923(x)
- else
- fun_l27_n664(x)
- end
-end
-
-def fun_l26_n643(x)
- if (x < 1)
- fun_l27_n150(x)
- else
- fun_l27_n713(x)
- end
-end
-
-def fun_l26_n644(x)
- if (x < 1)
- fun_l27_n95(x)
- else
- fun_l27_n566(x)
- end
-end
-
-def fun_l26_n645(x)
- if (x < 1)
- fun_l27_n886(x)
- else
- fun_l27_n811(x)
- end
-end
-
-def fun_l26_n646(x)
- if (x < 1)
- fun_l27_n547(x)
- else
- fun_l27_n412(x)
- end
-end
-
-def fun_l26_n647(x)
- if (x < 1)
- fun_l27_n570(x)
- else
- fun_l27_n606(x)
- end
-end
-
-def fun_l26_n648(x)
- if (x < 1)
- fun_l27_n181(x)
- else
- fun_l27_n216(x)
- end
-end
-
-def fun_l26_n649(x)
- if (x < 1)
- fun_l27_n198(x)
- else
- fun_l27_n988(x)
- end
-end
-
-def fun_l26_n650(x)
- if (x < 1)
- fun_l27_n503(x)
- else
- fun_l27_n257(x)
- end
-end
-
-def fun_l26_n651(x)
- if (x < 1)
- fun_l27_n799(x)
- else
- fun_l27_n175(x)
- end
-end
-
-def fun_l26_n652(x)
- if (x < 1)
- fun_l27_n338(x)
- else
- fun_l27_n560(x)
- end
-end
-
-def fun_l26_n653(x)
- if (x < 1)
- fun_l27_n597(x)
- else
- fun_l27_n988(x)
- end
-end
-
-def fun_l26_n654(x)
- if (x < 1)
- fun_l27_n319(x)
- else
- fun_l27_n299(x)
- end
-end
-
-def fun_l26_n655(x)
- if (x < 1)
- fun_l27_n510(x)
- else
- fun_l27_n375(x)
- end
-end
-
-def fun_l26_n656(x)
- if (x < 1)
- fun_l27_n808(x)
- else
- fun_l27_n289(x)
- end
-end
-
-def fun_l26_n657(x)
- if (x < 1)
- fun_l27_n170(x)
- else
- fun_l27_n64(x)
- end
-end
-
-def fun_l26_n658(x)
- if (x < 1)
- fun_l27_n966(x)
- else
- fun_l27_n487(x)
- end
-end
-
-def fun_l26_n659(x)
- if (x < 1)
- fun_l27_n238(x)
- else
- fun_l27_n638(x)
- end
-end
-
-def fun_l26_n660(x)
- if (x < 1)
- fun_l27_n814(x)
- else
- fun_l27_n203(x)
- end
-end
-
-def fun_l26_n661(x)
- if (x < 1)
- fun_l27_n840(x)
- else
- fun_l27_n867(x)
- end
-end
-
-def fun_l26_n662(x)
- if (x < 1)
- fun_l27_n753(x)
- else
- fun_l27_n543(x)
- end
-end
-
-def fun_l26_n663(x)
- if (x < 1)
- fun_l27_n850(x)
- else
- fun_l27_n539(x)
- end
-end
-
-def fun_l26_n664(x)
- if (x < 1)
- fun_l27_n878(x)
- else
- fun_l27_n648(x)
- end
-end
-
-def fun_l26_n665(x)
- if (x < 1)
- fun_l27_n256(x)
- else
- fun_l27_n243(x)
- end
-end
-
-def fun_l26_n666(x)
- if (x < 1)
- fun_l27_n833(x)
- else
- fun_l27_n251(x)
- end
-end
-
-def fun_l26_n667(x)
- if (x < 1)
- fun_l27_n26(x)
- else
- fun_l27_n206(x)
- end
-end
-
-def fun_l26_n668(x)
- if (x < 1)
- fun_l27_n860(x)
- else
- fun_l27_n736(x)
- end
-end
-
-def fun_l26_n669(x)
- if (x < 1)
- fun_l27_n794(x)
- else
- fun_l27_n185(x)
- end
-end
-
-def fun_l26_n670(x)
- if (x < 1)
- fun_l27_n849(x)
- else
- fun_l27_n218(x)
- end
-end
-
-def fun_l26_n671(x)
- if (x < 1)
- fun_l27_n423(x)
- else
- fun_l27_n163(x)
- end
-end
-
-def fun_l26_n672(x)
- if (x < 1)
- fun_l27_n94(x)
- else
- fun_l27_n341(x)
- end
-end
-
-def fun_l26_n673(x)
- if (x < 1)
- fun_l27_n927(x)
- else
- fun_l27_n721(x)
- end
-end
-
-def fun_l26_n674(x)
- if (x < 1)
- fun_l27_n390(x)
- else
- fun_l27_n807(x)
- end
-end
-
-def fun_l26_n675(x)
- if (x < 1)
- fun_l27_n818(x)
- else
- fun_l27_n532(x)
- end
-end
-
-def fun_l26_n676(x)
- if (x < 1)
- fun_l27_n513(x)
- else
- fun_l27_n414(x)
- end
-end
-
-def fun_l26_n677(x)
- if (x < 1)
- fun_l27_n364(x)
- else
- fun_l27_n940(x)
- end
-end
-
-def fun_l26_n678(x)
- if (x < 1)
- fun_l27_n178(x)
- else
- fun_l27_n857(x)
- end
-end
-
-def fun_l26_n679(x)
- if (x < 1)
- fun_l27_n806(x)
- else
- fun_l27_n838(x)
- end
-end
-
-def fun_l26_n680(x)
- if (x < 1)
- fun_l27_n216(x)
- else
- fun_l27_n774(x)
- end
-end
-
-def fun_l26_n681(x)
- if (x < 1)
- fun_l27_n969(x)
- else
- fun_l27_n247(x)
- end
-end
-
-def fun_l26_n682(x)
- if (x < 1)
- fun_l27_n175(x)
- else
- fun_l27_n588(x)
- end
-end
-
-def fun_l26_n683(x)
- if (x < 1)
- fun_l27_n310(x)
- else
- fun_l27_n48(x)
- end
-end
-
-def fun_l26_n684(x)
- if (x < 1)
- fun_l27_n669(x)
- else
- fun_l27_n428(x)
- end
-end
-
-def fun_l26_n685(x)
- if (x < 1)
- fun_l27_n592(x)
- else
- fun_l27_n535(x)
- end
-end
-
-def fun_l26_n686(x)
- if (x < 1)
- fun_l27_n81(x)
- else
- fun_l27_n259(x)
- end
-end
-
-def fun_l26_n687(x)
- if (x < 1)
- fun_l27_n498(x)
- else
- fun_l27_n859(x)
- end
-end
-
-def fun_l26_n688(x)
- if (x < 1)
- fun_l27_n695(x)
- else
- fun_l27_n67(x)
- end
-end
-
-def fun_l26_n689(x)
- if (x < 1)
- fun_l27_n97(x)
- else
- fun_l27_n11(x)
- end
-end
-
-def fun_l26_n690(x)
- if (x < 1)
- fun_l27_n901(x)
- else
- fun_l27_n525(x)
- end
-end
-
-def fun_l26_n691(x)
- if (x < 1)
- fun_l27_n545(x)
- else
- fun_l27_n649(x)
- end
-end
-
-def fun_l26_n692(x)
- if (x < 1)
- fun_l27_n866(x)
- else
- fun_l27_n379(x)
- end
-end
-
-def fun_l26_n693(x)
- if (x < 1)
- fun_l27_n475(x)
- else
- fun_l27_n504(x)
- end
-end
-
-def fun_l26_n694(x)
- if (x < 1)
- fun_l27_n527(x)
- else
- fun_l27_n701(x)
- end
-end
-
-def fun_l26_n695(x)
- if (x < 1)
- fun_l27_n159(x)
- else
- fun_l27_n946(x)
- end
-end
-
-def fun_l26_n696(x)
- if (x < 1)
- fun_l27_n850(x)
- else
- fun_l27_n200(x)
- end
-end
-
-def fun_l26_n697(x)
- if (x < 1)
- fun_l27_n318(x)
- else
- fun_l27_n55(x)
- end
-end
-
-def fun_l26_n698(x)
- if (x < 1)
- fun_l27_n563(x)
- else
- fun_l27_n413(x)
- end
-end
-
-def fun_l26_n699(x)
- if (x < 1)
- fun_l27_n976(x)
- else
- fun_l27_n42(x)
- end
-end
-
-def fun_l26_n700(x)
- if (x < 1)
- fun_l27_n112(x)
- else
- fun_l27_n764(x)
- end
-end
-
-def fun_l26_n701(x)
- if (x < 1)
- fun_l27_n519(x)
- else
- fun_l27_n800(x)
- end
-end
-
-def fun_l26_n702(x)
- if (x < 1)
- fun_l27_n701(x)
- else
- fun_l27_n102(x)
- end
-end
-
-def fun_l26_n703(x)
- if (x < 1)
- fun_l27_n200(x)
- else
- fun_l27_n685(x)
- end
-end
-
-def fun_l26_n704(x)
- if (x < 1)
- fun_l27_n770(x)
- else
- fun_l27_n47(x)
- end
-end
-
-def fun_l26_n705(x)
- if (x < 1)
- fun_l27_n479(x)
- else
- fun_l27_n875(x)
- end
-end
-
-def fun_l26_n706(x)
- if (x < 1)
- fun_l27_n369(x)
- else
- fun_l27_n53(x)
- end
-end
-
-def fun_l26_n707(x)
- if (x < 1)
- fun_l27_n16(x)
- else
- fun_l27_n612(x)
- end
-end
-
-def fun_l26_n708(x)
- if (x < 1)
- fun_l27_n235(x)
- else
- fun_l27_n211(x)
- end
-end
-
-def fun_l26_n709(x)
- if (x < 1)
- fun_l27_n636(x)
- else
- fun_l27_n890(x)
- end
-end
-
-def fun_l26_n710(x)
- if (x < 1)
- fun_l27_n877(x)
- else
- fun_l27_n301(x)
- end
-end
-
-def fun_l26_n711(x)
- if (x < 1)
- fun_l27_n783(x)
- else
- fun_l27_n409(x)
- end
-end
-
-def fun_l26_n712(x)
- if (x < 1)
- fun_l27_n595(x)
- else
- fun_l27_n968(x)
- end
-end
-
-def fun_l26_n713(x)
- if (x < 1)
- fun_l27_n858(x)
- else
- fun_l27_n879(x)
- end
-end
-
-def fun_l26_n714(x)
- if (x < 1)
- fun_l27_n66(x)
- else
- fun_l27_n107(x)
- end
-end
-
-def fun_l26_n715(x)
- if (x < 1)
- fun_l27_n636(x)
- else
- fun_l27_n912(x)
- end
-end
-
-def fun_l26_n716(x)
- if (x < 1)
- fun_l27_n605(x)
- else
- fun_l27_n935(x)
- end
-end
-
-def fun_l26_n717(x)
- if (x < 1)
- fun_l27_n186(x)
- else
- fun_l27_n664(x)
- end
-end
-
-def fun_l26_n718(x)
- if (x < 1)
- fun_l27_n865(x)
- else
- fun_l27_n462(x)
- end
-end
-
-def fun_l26_n719(x)
- if (x < 1)
- fun_l27_n783(x)
- else
- fun_l27_n668(x)
- end
-end
-
-def fun_l26_n720(x)
- if (x < 1)
- fun_l27_n697(x)
- else
- fun_l27_n850(x)
- end
-end
-
-def fun_l26_n721(x)
- if (x < 1)
- fun_l27_n668(x)
- else
- fun_l27_n493(x)
- end
-end
-
-def fun_l26_n722(x)
- if (x < 1)
- fun_l27_n25(x)
- else
- fun_l27_n473(x)
- end
-end
-
-def fun_l26_n723(x)
- if (x < 1)
- fun_l27_n311(x)
- else
- fun_l27_n380(x)
- end
-end
-
-def fun_l26_n724(x)
- if (x < 1)
- fun_l27_n766(x)
- else
- fun_l27_n303(x)
- end
-end
-
-def fun_l26_n725(x)
- if (x < 1)
- fun_l27_n97(x)
- else
- fun_l27_n306(x)
- end
-end
-
-def fun_l26_n726(x)
- if (x < 1)
- fun_l27_n333(x)
- else
- fun_l27_n590(x)
- end
-end
-
-def fun_l26_n727(x)
- if (x < 1)
- fun_l27_n596(x)
- else
- fun_l27_n509(x)
- end
-end
-
-def fun_l26_n728(x)
- if (x < 1)
- fun_l27_n234(x)
- else
- fun_l27_n583(x)
- end
-end
-
-def fun_l26_n729(x)
- if (x < 1)
- fun_l27_n692(x)
- else
- fun_l27_n890(x)
- end
-end
-
-def fun_l26_n730(x)
- if (x < 1)
- fun_l27_n864(x)
- else
- fun_l27_n433(x)
- end
-end
-
-def fun_l26_n731(x)
- if (x < 1)
- fun_l27_n866(x)
- else
- fun_l27_n350(x)
- end
-end
-
-def fun_l26_n732(x)
- if (x < 1)
- fun_l27_n913(x)
- else
- fun_l27_n651(x)
- end
-end
-
-def fun_l26_n733(x)
- if (x < 1)
- fun_l27_n919(x)
- else
- fun_l27_n902(x)
- end
-end
-
-def fun_l26_n734(x)
- if (x < 1)
- fun_l27_n731(x)
- else
- fun_l27_n768(x)
- end
-end
-
-def fun_l26_n735(x)
- if (x < 1)
- fun_l27_n613(x)
- else
- fun_l27_n550(x)
- end
-end
-
-def fun_l26_n736(x)
- if (x < 1)
- fun_l27_n795(x)
- else
- fun_l27_n152(x)
- end
-end
-
-def fun_l26_n737(x)
- if (x < 1)
- fun_l27_n214(x)
- else
- fun_l27_n990(x)
- end
-end
-
-def fun_l26_n738(x)
- if (x < 1)
- fun_l27_n521(x)
- else
- fun_l27_n773(x)
- end
-end
-
-def fun_l26_n739(x)
- if (x < 1)
- fun_l27_n44(x)
- else
- fun_l27_n580(x)
- end
-end
-
-def fun_l26_n740(x)
- if (x < 1)
- fun_l27_n800(x)
- else
- fun_l27_n385(x)
- end
-end
-
-def fun_l26_n741(x)
- if (x < 1)
- fun_l27_n412(x)
- else
- fun_l27_n979(x)
- end
-end
-
-def fun_l26_n742(x)
- if (x < 1)
- fun_l27_n392(x)
- else
- fun_l27_n627(x)
- end
-end
-
-def fun_l26_n743(x)
- if (x < 1)
- fun_l27_n348(x)
- else
- fun_l27_n141(x)
- end
-end
-
-def fun_l26_n744(x)
- if (x < 1)
- fun_l27_n199(x)
- else
- fun_l27_n327(x)
- end
-end
-
-def fun_l26_n745(x)
- if (x < 1)
- fun_l27_n302(x)
- else
- fun_l27_n708(x)
- end
-end
-
-def fun_l26_n746(x)
- if (x < 1)
- fun_l27_n431(x)
- else
- fun_l27_n362(x)
- end
-end
-
-def fun_l26_n747(x)
- if (x < 1)
- fun_l27_n409(x)
- else
- fun_l27_n102(x)
- end
-end
-
-def fun_l26_n748(x)
- if (x < 1)
- fun_l27_n631(x)
- else
- fun_l27_n415(x)
- end
-end
-
-def fun_l26_n749(x)
- if (x < 1)
- fun_l27_n196(x)
- else
- fun_l27_n835(x)
- end
-end
-
-def fun_l26_n750(x)
- if (x < 1)
- fun_l27_n731(x)
- else
- fun_l27_n400(x)
- end
-end
-
-def fun_l26_n751(x)
- if (x < 1)
- fun_l27_n561(x)
- else
- fun_l27_n444(x)
- end
-end
-
-def fun_l26_n752(x)
- if (x < 1)
- fun_l27_n444(x)
- else
- fun_l27_n245(x)
- end
-end
-
-def fun_l26_n753(x)
- if (x < 1)
- fun_l27_n784(x)
- else
- fun_l27_n640(x)
- end
-end
-
-def fun_l26_n754(x)
- if (x < 1)
- fun_l27_n988(x)
- else
- fun_l27_n335(x)
- end
-end
-
-def fun_l26_n755(x)
- if (x < 1)
- fun_l27_n188(x)
- else
- fun_l27_n584(x)
- end
-end
-
-def fun_l26_n756(x)
- if (x < 1)
- fun_l27_n356(x)
- else
- fun_l27_n989(x)
- end
-end
-
-def fun_l26_n757(x)
- if (x < 1)
- fun_l27_n687(x)
- else
- fun_l27_n409(x)
- end
-end
-
-def fun_l26_n758(x)
- if (x < 1)
- fun_l27_n383(x)
- else
- fun_l27_n502(x)
- end
-end
-
-def fun_l26_n759(x)
- if (x < 1)
- fun_l27_n507(x)
- else
- fun_l27_n868(x)
- end
-end
-
-def fun_l26_n760(x)
- if (x < 1)
- fun_l27_n109(x)
- else
- fun_l27_n641(x)
- end
-end
-
-def fun_l26_n761(x)
- if (x < 1)
- fun_l27_n831(x)
- else
- fun_l27_n248(x)
- end
-end
-
-def fun_l26_n762(x)
- if (x < 1)
- fun_l27_n150(x)
- else
- fun_l27_n116(x)
- end
-end
-
-def fun_l26_n763(x)
- if (x < 1)
- fun_l27_n811(x)
- else
- fun_l27_n680(x)
- end
-end
-
-def fun_l26_n764(x)
- if (x < 1)
- fun_l27_n593(x)
- else
- fun_l27_n756(x)
- end
-end
-
-def fun_l26_n765(x)
- if (x < 1)
- fun_l27_n468(x)
- else
- fun_l27_n888(x)
- end
-end
-
-def fun_l26_n766(x)
- if (x < 1)
- fun_l27_n154(x)
- else
- fun_l27_n65(x)
- end
-end
-
-def fun_l26_n767(x)
- if (x < 1)
- fun_l27_n709(x)
- else
- fun_l27_n878(x)
- end
-end
-
-def fun_l26_n768(x)
- if (x < 1)
- fun_l27_n270(x)
- else
- fun_l27_n393(x)
- end
-end
-
-def fun_l26_n769(x)
- if (x < 1)
- fun_l27_n315(x)
- else
- fun_l27_n46(x)
- end
-end
-
-def fun_l26_n770(x)
- if (x < 1)
- fun_l27_n448(x)
- else
- fun_l27_n364(x)
- end
-end
-
-def fun_l26_n771(x)
- if (x < 1)
- fun_l27_n865(x)
- else
- fun_l27_n842(x)
- end
-end
-
-def fun_l26_n772(x)
- if (x < 1)
- fun_l27_n231(x)
- else
- fun_l27_n731(x)
- end
-end
-
-def fun_l26_n773(x)
- if (x < 1)
- fun_l27_n303(x)
- else
- fun_l27_n769(x)
- end
-end
-
-def fun_l26_n774(x)
- if (x < 1)
- fun_l27_n257(x)
- else
- fun_l27_n513(x)
- end
-end
-
-def fun_l26_n775(x)
- if (x < 1)
- fun_l27_n805(x)
- else
- fun_l27_n947(x)
- end
-end
-
-def fun_l26_n776(x)
- if (x < 1)
- fun_l27_n199(x)
- else
- fun_l27_n413(x)
- end
-end
-
-def fun_l26_n777(x)
- if (x < 1)
- fun_l27_n631(x)
- else
- fun_l27_n734(x)
- end
-end
-
-def fun_l26_n778(x)
- if (x < 1)
- fun_l27_n978(x)
- else
- fun_l27_n638(x)
- end
-end
-
-def fun_l26_n779(x)
- if (x < 1)
- fun_l27_n441(x)
- else
- fun_l27_n936(x)
- end
-end
-
-def fun_l26_n780(x)
- if (x < 1)
- fun_l27_n120(x)
- else
- fun_l27_n37(x)
- end
-end
-
-def fun_l26_n781(x)
- if (x < 1)
- fun_l27_n44(x)
- else
- fun_l27_n240(x)
- end
-end
-
-def fun_l26_n782(x)
- if (x < 1)
- fun_l27_n920(x)
- else
- fun_l27_n54(x)
- end
-end
-
-def fun_l26_n783(x)
- if (x < 1)
- fun_l27_n488(x)
- else
- fun_l27_n965(x)
- end
-end
-
-def fun_l26_n784(x)
- if (x < 1)
- fun_l27_n226(x)
- else
- fun_l27_n449(x)
- end
-end
-
-def fun_l26_n785(x)
- if (x < 1)
- fun_l27_n794(x)
- else
- fun_l27_n469(x)
- end
-end
-
-def fun_l26_n786(x)
- if (x < 1)
- fun_l27_n287(x)
- else
- fun_l27_n863(x)
- end
-end
-
-def fun_l26_n787(x)
- if (x < 1)
- fun_l27_n714(x)
- else
- fun_l27_n606(x)
- end
-end
-
-def fun_l26_n788(x)
- if (x < 1)
- fun_l27_n649(x)
- else
- fun_l27_n347(x)
- end
-end
-
-def fun_l26_n789(x)
- if (x < 1)
- fun_l27_n176(x)
- else
- fun_l27_n410(x)
- end
-end
-
-def fun_l26_n790(x)
- if (x < 1)
- fun_l27_n688(x)
- else
- fun_l27_n248(x)
- end
-end
-
-def fun_l26_n791(x)
- if (x < 1)
- fun_l27_n157(x)
- else
- fun_l27_n119(x)
- end
-end
-
-def fun_l26_n792(x)
- if (x < 1)
- fun_l27_n470(x)
- else
- fun_l27_n657(x)
- end
-end
-
-def fun_l26_n793(x)
- if (x < 1)
- fun_l27_n246(x)
- else
- fun_l27_n262(x)
- end
-end
-
-def fun_l26_n794(x)
- if (x < 1)
- fun_l27_n142(x)
- else
- fun_l27_n524(x)
- end
-end
-
-def fun_l26_n795(x)
- if (x < 1)
- fun_l27_n695(x)
- else
- fun_l27_n88(x)
- end
-end
-
-def fun_l26_n796(x)
- if (x < 1)
- fun_l27_n599(x)
- else
- fun_l27_n776(x)
- end
-end
-
-def fun_l26_n797(x)
- if (x < 1)
- fun_l27_n364(x)
- else
- fun_l27_n616(x)
- end
-end
-
-def fun_l26_n798(x)
- if (x < 1)
- fun_l27_n793(x)
- else
- fun_l27_n416(x)
- end
-end
-
-def fun_l26_n799(x)
- if (x < 1)
- fun_l27_n552(x)
- else
- fun_l27_n490(x)
- end
-end
-
-def fun_l26_n800(x)
- if (x < 1)
- fun_l27_n691(x)
- else
- fun_l27_n743(x)
- end
-end
-
-def fun_l26_n801(x)
- if (x < 1)
- fun_l27_n257(x)
- else
- fun_l27_n687(x)
- end
-end
-
-def fun_l26_n802(x)
- if (x < 1)
- fun_l27_n877(x)
- else
- fun_l27_n273(x)
- end
-end
-
-def fun_l26_n803(x)
- if (x < 1)
- fun_l27_n398(x)
- else
- fun_l27_n874(x)
- end
-end
-
-def fun_l26_n804(x)
- if (x < 1)
- fun_l27_n114(x)
- else
- fun_l27_n96(x)
- end
-end
-
-def fun_l26_n805(x)
- if (x < 1)
- fun_l27_n489(x)
- else
- fun_l27_n537(x)
- end
-end
-
-def fun_l26_n806(x)
- if (x < 1)
- fun_l27_n619(x)
- else
- fun_l27_n813(x)
- end
-end
-
-def fun_l26_n807(x)
- if (x < 1)
- fun_l27_n335(x)
- else
- fun_l27_n467(x)
- end
-end
-
-def fun_l26_n808(x)
- if (x < 1)
- fun_l27_n17(x)
- else
- fun_l27_n133(x)
- end
-end
-
-def fun_l26_n809(x)
- if (x < 1)
- fun_l27_n266(x)
- else
- fun_l27_n383(x)
- end
-end
-
-def fun_l26_n810(x)
- if (x < 1)
- fun_l27_n391(x)
- else
- fun_l27_n326(x)
- end
-end
-
-def fun_l26_n811(x)
- if (x < 1)
- fun_l27_n292(x)
- else
- fun_l27_n444(x)
- end
-end
-
-def fun_l26_n812(x)
- if (x < 1)
- fun_l27_n920(x)
- else
- fun_l27_n909(x)
- end
-end
-
-def fun_l26_n813(x)
- if (x < 1)
- fun_l27_n575(x)
- else
- fun_l27_n221(x)
- end
-end
-
-def fun_l26_n814(x)
- if (x < 1)
- fun_l27_n66(x)
- else
- fun_l27_n241(x)
- end
-end
-
-def fun_l26_n815(x)
- if (x < 1)
- fun_l27_n552(x)
- else
- fun_l27_n906(x)
- end
-end
-
-def fun_l26_n816(x)
- if (x < 1)
- fun_l27_n301(x)
- else
- fun_l27_n656(x)
- end
-end
-
-def fun_l26_n817(x)
- if (x < 1)
- fun_l27_n472(x)
- else
- fun_l27_n688(x)
- end
-end
-
-def fun_l26_n818(x)
- if (x < 1)
- fun_l27_n712(x)
- else
- fun_l27_n830(x)
- end
-end
-
-def fun_l26_n819(x)
- if (x < 1)
- fun_l27_n102(x)
- else
- fun_l27_n146(x)
- end
-end
-
-def fun_l26_n820(x)
- if (x < 1)
- fun_l27_n448(x)
- else
- fun_l27_n207(x)
- end
-end
-
-def fun_l26_n821(x)
- if (x < 1)
- fun_l27_n732(x)
- else
- fun_l27_n285(x)
- end
-end
-
-def fun_l26_n822(x)
- if (x < 1)
- fun_l27_n973(x)
- else
- fun_l27_n395(x)
- end
-end
-
-def fun_l26_n823(x)
- if (x < 1)
- fun_l27_n329(x)
- else
- fun_l27_n748(x)
- end
-end
-
-def fun_l26_n824(x)
- if (x < 1)
- fun_l27_n280(x)
- else
- fun_l27_n676(x)
- end
-end
-
-def fun_l26_n825(x)
- if (x < 1)
- fun_l27_n867(x)
- else
- fun_l27_n285(x)
- end
-end
-
-def fun_l26_n826(x)
- if (x < 1)
- fun_l27_n380(x)
- else
- fun_l27_n720(x)
- end
-end
-
-def fun_l26_n827(x)
- if (x < 1)
- fun_l27_n595(x)
- else
- fun_l27_n740(x)
- end
-end
-
-def fun_l26_n828(x)
- if (x < 1)
- fun_l27_n356(x)
- else
- fun_l27_n878(x)
- end
-end
-
-def fun_l26_n829(x)
- if (x < 1)
- fun_l27_n453(x)
- else
- fun_l27_n234(x)
- end
-end
-
-def fun_l26_n830(x)
- if (x < 1)
- fun_l27_n775(x)
- else
- fun_l27_n13(x)
- end
-end
-
-def fun_l26_n831(x)
- if (x < 1)
- fun_l27_n242(x)
- else
- fun_l27_n144(x)
- end
-end
-
-def fun_l26_n832(x)
- if (x < 1)
- fun_l27_n734(x)
- else
- fun_l27_n432(x)
- end
-end
-
-def fun_l26_n833(x)
- if (x < 1)
- fun_l27_n996(x)
- else
- fun_l27_n396(x)
- end
-end
-
-def fun_l26_n834(x)
- if (x < 1)
- fun_l27_n367(x)
- else
- fun_l27_n991(x)
- end
-end
-
-def fun_l26_n835(x)
- if (x < 1)
- fun_l27_n285(x)
- else
- fun_l27_n526(x)
- end
-end
-
-def fun_l26_n836(x)
- if (x < 1)
- fun_l27_n945(x)
- else
- fun_l27_n418(x)
- end
-end
-
-def fun_l26_n837(x)
- if (x < 1)
- fun_l27_n622(x)
- else
- fun_l27_n922(x)
- end
-end
-
-def fun_l26_n838(x)
- if (x < 1)
- fun_l27_n997(x)
- else
- fun_l27_n786(x)
- end
-end
-
-def fun_l26_n839(x)
- if (x < 1)
- fun_l27_n478(x)
- else
- fun_l27_n991(x)
- end
-end
-
-def fun_l26_n840(x)
- if (x < 1)
- fun_l27_n473(x)
- else
- fun_l27_n801(x)
- end
-end
-
-def fun_l26_n841(x)
- if (x < 1)
- fun_l27_n675(x)
- else
- fun_l27_n486(x)
- end
-end
-
-def fun_l26_n842(x)
- if (x < 1)
- fun_l27_n170(x)
- else
- fun_l27_n27(x)
- end
-end
-
-def fun_l26_n843(x)
- if (x < 1)
- fun_l27_n699(x)
- else
- fun_l27_n536(x)
- end
-end
-
-def fun_l26_n844(x)
- if (x < 1)
- fun_l27_n388(x)
- else
- fun_l27_n431(x)
- end
-end
-
-def fun_l26_n845(x)
- if (x < 1)
- fun_l27_n248(x)
- else
- fun_l27_n64(x)
- end
-end
-
-def fun_l26_n846(x)
- if (x < 1)
- fun_l27_n64(x)
- else
- fun_l27_n829(x)
- end
-end
-
-def fun_l26_n847(x)
- if (x < 1)
- fun_l27_n850(x)
- else
- fun_l27_n626(x)
- end
-end
-
-def fun_l26_n848(x)
- if (x < 1)
- fun_l27_n889(x)
- else
- fun_l27_n504(x)
- end
-end
-
-def fun_l26_n849(x)
- if (x < 1)
- fun_l27_n121(x)
- else
- fun_l27_n864(x)
- end
-end
-
-def fun_l26_n850(x)
- if (x < 1)
- fun_l27_n985(x)
- else
- fun_l27_n447(x)
- end
-end
-
-def fun_l26_n851(x)
- if (x < 1)
- fun_l27_n952(x)
- else
- fun_l27_n30(x)
- end
-end
-
-def fun_l26_n852(x)
- if (x < 1)
- fun_l27_n444(x)
- else
- fun_l27_n780(x)
- end
-end
-
-def fun_l26_n853(x)
- if (x < 1)
- fun_l27_n969(x)
- else
- fun_l27_n400(x)
- end
-end
-
-def fun_l26_n854(x)
- if (x < 1)
- fun_l27_n711(x)
- else
- fun_l27_n165(x)
- end
-end
-
-def fun_l26_n855(x)
- if (x < 1)
- fun_l27_n514(x)
- else
- fun_l27_n464(x)
- end
-end
-
-def fun_l26_n856(x)
- if (x < 1)
- fun_l27_n531(x)
- else
- fun_l27_n548(x)
- end
-end
-
-def fun_l26_n857(x)
- if (x < 1)
- fun_l27_n996(x)
- else
- fun_l27_n63(x)
- end
-end
-
-def fun_l26_n858(x)
- if (x < 1)
- fun_l27_n516(x)
- else
- fun_l27_n905(x)
- end
-end
-
-def fun_l26_n859(x)
- if (x < 1)
- fun_l27_n42(x)
- else
- fun_l27_n327(x)
- end
-end
-
-def fun_l26_n860(x)
- if (x < 1)
- fun_l27_n300(x)
- else
- fun_l27_n276(x)
- end
-end
-
-def fun_l26_n861(x)
- if (x < 1)
- fun_l27_n734(x)
- else
- fun_l27_n859(x)
- end
-end
-
-def fun_l26_n862(x)
- if (x < 1)
- fun_l27_n135(x)
- else
- fun_l27_n821(x)
- end
-end
-
-def fun_l26_n863(x)
- if (x < 1)
- fun_l27_n645(x)
- else
- fun_l27_n287(x)
- end
-end
-
-def fun_l26_n864(x)
- if (x < 1)
- fun_l27_n243(x)
- else
- fun_l27_n844(x)
- end
-end
-
-def fun_l26_n865(x)
- if (x < 1)
- fun_l27_n909(x)
- else
- fun_l27_n291(x)
- end
-end
-
-def fun_l26_n866(x)
- if (x < 1)
- fun_l27_n925(x)
- else
- fun_l27_n484(x)
- end
-end
-
-def fun_l26_n867(x)
- if (x < 1)
- fun_l27_n678(x)
- else
- fun_l27_n205(x)
- end
-end
-
-def fun_l26_n868(x)
- if (x < 1)
- fun_l27_n612(x)
- else
- fun_l27_n339(x)
- end
-end
-
-def fun_l26_n869(x)
- if (x < 1)
- fun_l27_n622(x)
- else
- fun_l27_n246(x)
- end
-end
-
-def fun_l26_n870(x)
- if (x < 1)
- fun_l27_n431(x)
- else
- fun_l27_n635(x)
- end
-end
-
-def fun_l26_n871(x)
- if (x < 1)
- fun_l27_n89(x)
- else
- fun_l27_n969(x)
- end
-end
-
-def fun_l26_n872(x)
- if (x < 1)
- fun_l27_n839(x)
- else
- fun_l27_n398(x)
- end
-end
-
-def fun_l26_n873(x)
- if (x < 1)
- fun_l27_n230(x)
- else
- fun_l27_n885(x)
- end
-end
-
-def fun_l26_n874(x)
- if (x < 1)
- fun_l27_n202(x)
- else
- fun_l27_n530(x)
- end
-end
-
-def fun_l26_n875(x)
- if (x < 1)
- fun_l27_n153(x)
- else
- fun_l27_n959(x)
- end
-end
-
-def fun_l26_n876(x)
- if (x < 1)
- fun_l27_n891(x)
- else
- fun_l27_n307(x)
- end
-end
-
-def fun_l26_n877(x)
- if (x < 1)
- fun_l27_n648(x)
- else
- fun_l27_n767(x)
- end
-end
-
-def fun_l26_n878(x)
- if (x < 1)
- fun_l27_n120(x)
- else
- fun_l27_n614(x)
- end
-end
-
-def fun_l26_n879(x)
- if (x < 1)
- fun_l27_n46(x)
- else
- fun_l27_n766(x)
- end
-end
-
-def fun_l26_n880(x)
- if (x < 1)
- fun_l27_n882(x)
- else
- fun_l27_n745(x)
- end
-end
-
-def fun_l26_n881(x)
- if (x < 1)
- fun_l27_n966(x)
- else
- fun_l27_n699(x)
- end
-end
-
-def fun_l26_n882(x)
- if (x < 1)
- fun_l27_n354(x)
- else
- fun_l27_n698(x)
- end
-end
-
-def fun_l26_n883(x)
- if (x < 1)
- fun_l27_n723(x)
- else
- fun_l27_n507(x)
- end
-end
-
-def fun_l26_n884(x)
- if (x < 1)
- fun_l27_n705(x)
- else
- fun_l27_n865(x)
- end
-end
-
-def fun_l26_n885(x)
- if (x < 1)
- fun_l27_n609(x)
- else
- fun_l27_n830(x)
- end
-end
-
-def fun_l26_n886(x)
- if (x < 1)
- fun_l27_n679(x)
- else
- fun_l27_n359(x)
- end
-end
-
-def fun_l26_n887(x)
- if (x < 1)
- fun_l27_n830(x)
- else
- fun_l27_n59(x)
- end
-end
-
-def fun_l26_n888(x)
- if (x < 1)
- fun_l27_n160(x)
- else
- fun_l27_n559(x)
- end
-end
-
-def fun_l26_n889(x)
- if (x < 1)
- fun_l27_n233(x)
- else
- fun_l27_n148(x)
- end
-end
-
-def fun_l26_n890(x)
- if (x < 1)
- fun_l27_n520(x)
- else
- fun_l27_n104(x)
- end
-end
-
-def fun_l26_n891(x)
- if (x < 1)
- fun_l27_n826(x)
- else
- fun_l27_n884(x)
- end
-end
-
-def fun_l26_n892(x)
- if (x < 1)
- fun_l27_n546(x)
- else
- fun_l27_n651(x)
- end
-end
-
-def fun_l26_n893(x)
- if (x < 1)
- fun_l27_n181(x)
- else
- fun_l27_n430(x)
- end
-end
-
-def fun_l26_n894(x)
- if (x < 1)
- fun_l27_n540(x)
- else
- fun_l27_n424(x)
- end
-end
-
-def fun_l26_n895(x)
- if (x < 1)
- fun_l27_n321(x)
- else
- fun_l27_n72(x)
- end
-end
-
-def fun_l26_n896(x)
- if (x < 1)
- fun_l27_n532(x)
- else
- fun_l27_n535(x)
- end
-end
-
-def fun_l26_n897(x)
- if (x < 1)
- fun_l27_n171(x)
- else
- fun_l27_n575(x)
- end
-end
-
-def fun_l26_n898(x)
- if (x < 1)
- fun_l27_n150(x)
- else
- fun_l27_n539(x)
- end
-end
-
-def fun_l26_n899(x)
- if (x < 1)
- fun_l27_n27(x)
- else
- fun_l27_n487(x)
- end
-end
-
-def fun_l26_n900(x)
- if (x < 1)
- fun_l27_n484(x)
- else
- fun_l27_n366(x)
- end
-end
-
-def fun_l26_n901(x)
- if (x < 1)
- fun_l27_n708(x)
- else
- fun_l27_n624(x)
- end
-end
-
-def fun_l26_n902(x)
- if (x < 1)
- fun_l27_n811(x)
- else
- fun_l27_n905(x)
- end
-end
-
-def fun_l26_n903(x)
- if (x < 1)
- fun_l27_n474(x)
- else
- fun_l27_n252(x)
- end
-end
-
-def fun_l26_n904(x)
- if (x < 1)
- fun_l27_n765(x)
- else
- fun_l27_n86(x)
- end
-end
-
-def fun_l26_n905(x)
- if (x < 1)
- fun_l27_n120(x)
- else
- fun_l27_n868(x)
- end
-end
-
-def fun_l26_n906(x)
- if (x < 1)
- fun_l27_n824(x)
- else
- fun_l27_n167(x)
- end
-end
-
-def fun_l26_n907(x)
- if (x < 1)
- fun_l27_n874(x)
- else
- fun_l27_n428(x)
- end
-end
-
-def fun_l26_n908(x)
- if (x < 1)
- fun_l27_n270(x)
- else
- fun_l27_n539(x)
- end
-end
-
-def fun_l26_n909(x)
- if (x < 1)
- fun_l27_n451(x)
- else
- fun_l27_n64(x)
- end
-end
-
-def fun_l26_n910(x)
- if (x < 1)
- fun_l27_n680(x)
- else
- fun_l27_n556(x)
- end
-end
-
-def fun_l26_n911(x)
- if (x < 1)
- fun_l27_n480(x)
- else
- fun_l27_n599(x)
- end
-end
-
-def fun_l26_n912(x)
- if (x < 1)
- fun_l27_n861(x)
- else
- fun_l27_n768(x)
- end
-end
-
-def fun_l26_n913(x)
- if (x < 1)
- fun_l27_n679(x)
- else
- fun_l27_n541(x)
- end
-end
-
-def fun_l26_n914(x)
- if (x < 1)
- fun_l27_n69(x)
- else
- fun_l27_n904(x)
- end
-end
-
-def fun_l26_n915(x)
- if (x < 1)
- fun_l27_n658(x)
- else
- fun_l27_n580(x)
- end
-end
-
-def fun_l26_n916(x)
- if (x < 1)
- fun_l27_n595(x)
- else
- fun_l27_n194(x)
- end
-end
-
-def fun_l26_n917(x)
- if (x < 1)
- fun_l27_n518(x)
- else
- fun_l27_n613(x)
- end
-end
-
-def fun_l26_n918(x)
- if (x < 1)
- fun_l27_n46(x)
- else
- fun_l27_n910(x)
- end
-end
-
-def fun_l26_n919(x)
- if (x < 1)
- fun_l27_n471(x)
- else
- fun_l27_n562(x)
- end
-end
-
-def fun_l26_n920(x)
- if (x < 1)
- fun_l27_n637(x)
- else
- fun_l27_n638(x)
- end
-end
-
-def fun_l26_n921(x)
- if (x < 1)
- fun_l27_n77(x)
- else
- fun_l27_n100(x)
- end
-end
-
-def fun_l26_n922(x)
- if (x < 1)
- fun_l27_n382(x)
- else
- fun_l27_n235(x)
- end
-end
-
-def fun_l26_n923(x)
- if (x < 1)
- fun_l27_n576(x)
- else
- fun_l27_n404(x)
- end
-end
-
-def fun_l26_n924(x)
- if (x < 1)
- fun_l27_n338(x)
- else
- fun_l27_n919(x)
- end
-end
-
-def fun_l26_n925(x)
- if (x < 1)
- fun_l27_n758(x)
- else
- fun_l27_n141(x)
- end
-end
-
-def fun_l26_n926(x)
- if (x < 1)
- fun_l27_n904(x)
- else
- fun_l27_n965(x)
- end
-end
-
-def fun_l26_n927(x)
- if (x < 1)
- fun_l27_n149(x)
- else
- fun_l27_n707(x)
- end
-end
-
-def fun_l26_n928(x)
- if (x < 1)
- fun_l27_n337(x)
- else
- fun_l27_n601(x)
- end
-end
-
-def fun_l26_n929(x)
- if (x < 1)
- fun_l27_n34(x)
- else
- fun_l27_n383(x)
- end
-end
-
-def fun_l26_n930(x)
- if (x < 1)
- fun_l27_n937(x)
- else
- fun_l27_n656(x)
- end
-end
-
-def fun_l26_n931(x)
- if (x < 1)
- fun_l27_n786(x)
- else
- fun_l27_n73(x)
- end
-end
-
-def fun_l26_n932(x)
- if (x < 1)
- fun_l27_n568(x)
- else
- fun_l27_n465(x)
- end
-end
-
-def fun_l26_n933(x)
- if (x < 1)
- fun_l27_n552(x)
- else
- fun_l27_n557(x)
- end
-end
-
-def fun_l26_n934(x)
- if (x < 1)
- fun_l27_n261(x)
- else
- fun_l27_n612(x)
- end
-end
-
-def fun_l26_n935(x)
- if (x < 1)
- fun_l27_n707(x)
- else
- fun_l27_n955(x)
- end
-end
-
-def fun_l26_n936(x)
- if (x < 1)
- fun_l27_n948(x)
- else
- fun_l27_n78(x)
- end
-end
-
-def fun_l26_n937(x)
- if (x < 1)
- fun_l27_n963(x)
- else
- fun_l27_n203(x)
- end
-end
-
-def fun_l26_n938(x)
- if (x < 1)
- fun_l27_n779(x)
- else
- fun_l27_n393(x)
- end
-end
-
-def fun_l26_n939(x)
- if (x < 1)
- fun_l27_n403(x)
- else
- fun_l27_n303(x)
- end
-end
-
-def fun_l26_n940(x)
- if (x < 1)
- fun_l27_n779(x)
- else
- fun_l27_n934(x)
- end
-end
-
-def fun_l26_n941(x)
- if (x < 1)
- fun_l27_n191(x)
- else
- fun_l27_n414(x)
- end
-end
-
-def fun_l26_n942(x)
- if (x < 1)
- fun_l27_n22(x)
- else
- fun_l27_n101(x)
- end
-end
-
-def fun_l26_n943(x)
- if (x < 1)
- fun_l27_n501(x)
- else
- fun_l27_n43(x)
- end
-end
-
-def fun_l26_n944(x)
- if (x < 1)
- fun_l27_n154(x)
- else
- fun_l27_n659(x)
- end
-end
-
-def fun_l26_n945(x)
- if (x < 1)
- fun_l27_n346(x)
- else
- fun_l27_n380(x)
- end
-end
-
-def fun_l26_n946(x)
- if (x < 1)
- fun_l27_n653(x)
- else
- fun_l27_n762(x)
- end
-end
-
-def fun_l26_n947(x)
- if (x < 1)
- fun_l27_n191(x)
- else
- fun_l27_n649(x)
- end
-end
-
-def fun_l26_n948(x)
- if (x < 1)
- fun_l27_n645(x)
- else
- fun_l27_n199(x)
- end
-end
-
-def fun_l26_n949(x)
- if (x < 1)
- fun_l27_n251(x)
- else
- fun_l27_n461(x)
- end
-end
-
-def fun_l26_n950(x)
- if (x < 1)
- fun_l27_n720(x)
- else
- fun_l27_n645(x)
- end
-end
-
-def fun_l26_n951(x)
- if (x < 1)
- fun_l27_n200(x)
- else
- fun_l27_n73(x)
- end
-end
-
-def fun_l26_n952(x)
- if (x < 1)
- fun_l27_n86(x)
- else
- fun_l27_n526(x)
- end
-end
-
-def fun_l26_n953(x)
- if (x < 1)
- fun_l27_n448(x)
- else
- fun_l27_n108(x)
- end
-end
-
-def fun_l26_n954(x)
- if (x < 1)
- fun_l27_n931(x)
- else
- fun_l27_n540(x)
- end
-end
-
-def fun_l26_n955(x)
- if (x < 1)
- fun_l27_n298(x)
- else
- fun_l27_n836(x)
- end
-end
-
-def fun_l26_n956(x)
- if (x < 1)
- fun_l27_n232(x)
- else
- fun_l27_n200(x)
- end
-end
-
-def fun_l26_n957(x)
- if (x < 1)
- fun_l27_n342(x)
- else
- fun_l27_n885(x)
- end
-end
-
-def fun_l26_n958(x)
- if (x < 1)
- fun_l27_n254(x)
- else
- fun_l27_n764(x)
- end
-end
-
-def fun_l26_n959(x)
- if (x < 1)
- fun_l27_n765(x)
- else
- fun_l27_n264(x)
- end
-end
-
-def fun_l26_n960(x)
- if (x < 1)
- fun_l27_n45(x)
- else
- fun_l27_n993(x)
- end
-end
-
-def fun_l26_n961(x)
- if (x < 1)
- fun_l27_n105(x)
- else
- fun_l27_n100(x)
- end
-end
-
-def fun_l26_n962(x)
- if (x < 1)
- fun_l27_n979(x)
- else
- fun_l27_n87(x)
- end
-end
-
-def fun_l26_n963(x)
- if (x < 1)
- fun_l27_n103(x)
- else
- fun_l27_n927(x)
- end
-end
-
-def fun_l26_n964(x)
- if (x < 1)
- fun_l27_n635(x)
- else
- fun_l27_n489(x)
- end
-end
-
-def fun_l26_n965(x)
- if (x < 1)
- fun_l27_n565(x)
- else
- fun_l27_n70(x)
- end
-end
-
-def fun_l26_n966(x)
- if (x < 1)
- fun_l27_n370(x)
- else
- fun_l27_n975(x)
- end
-end
-
-def fun_l26_n967(x)
- if (x < 1)
- fun_l27_n997(x)
- else
- fun_l27_n132(x)
- end
-end
-
-def fun_l26_n968(x)
- if (x < 1)
- fun_l27_n964(x)
- else
- fun_l27_n201(x)
- end
-end
-
-def fun_l26_n969(x)
- if (x < 1)
- fun_l27_n710(x)
- else
- fun_l27_n875(x)
- end
-end
-
-def fun_l26_n970(x)
- if (x < 1)
- fun_l27_n736(x)
- else
- fun_l27_n338(x)
- end
-end
-
-def fun_l26_n971(x)
- if (x < 1)
- fun_l27_n429(x)
- else
- fun_l27_n64(x)
- end
-end
-
-def fun_l26_n972(x)
- if (x < 1)
- fun_l27_n986(x)
- else
- fun_l27_n27(x)
- end
-end
-
-def fun_l26_n973(x)
- if (x < 1)
- fun_l27_n419(x)
- else
- fun_l27_n579(x)
- end
-end
-
-def fun_l26_n974(x)
- if (x < 1)
- fun_l27_n479(x)
- else
- fun_l27_n709(x)
- end
-end
-
-def fun_l26_n975(x)
- if (x < 1)
- fun_l27_n524(x)
- else
- fun_l27_n550(x)
- end
-end
-
-def fun_l26_n976(x)
- if (x < 1)
- fun_l27_n679(x)
- else
- fun_l27_n822(x)
- end
-end
-
-def fun_l26_n977(x)
- if (x < 1)
- fun_l27_n535(x)
- else
- fun_l27_n198(x)
- end
-end
-
-def fun_l26_n978(x)
- if (x < 1)
- fun_l27_n226(x)
- else
- fun_l27_n610(x)
- end
-end
-
-def fun_l26_n979(x)
- if (x < 1)
- fun_l27_n460(x)
- else
- fun_l27_n562(x)
- end
-end
-
-def fun_l26_n980(x)
- if (x < 1)
- fun_l27_n109(x)
- else
- fun_l27_n632(x)
- end
-end
-
-def fun_l26_n981(x)
- if (x < 1)
- fun_l27_n936(x)
- else
- fun_l27_n288(x)
- end
-end
-
-def fun_l26_n982(x)
- if (x < 1)
- fun_l27_n668(x)
- else
- fun_l27_n5(x)
- end
-end
-
-def fun_l26_n983(x)
- if (x < 1)
- fun_l27_n458(x)
- else
- fun_l27_n861(x)
- end
-end
-
-def fun_l26_n984(x)
- if (x < 1)
- fun_l27_n722(x)
- else
- fun_l27_n838(x)
- end
-end
-
-def fun_l26_n985(x)
- if (x < 1)
- fun_l27_n883(x)
- else
- fun_l27_n124(x)
- end
-end
-
-def fun_l26_n986(x)
- if (x < 1)
- fun_l27_n873(x)
- else
- fun_l27_n399(x)
- end
-end
-
-def fun_l26_n987(x)
- if (x < 1)
- fun_l27_n449(x)
- else
- fun_l27_n34(x)
- end
-end
-
-def fun_l26_n988(x)
- if (x < 1)
- fun_l27_n549(x)
- else
- fun_l27_n304(x)
- end
-end
-
-def fun_l26_n989(x)
- if (x < 1)
- fun_l27_n287(x)
- else
- fun_l27_n270(x)
- end
-end
-
-def fun_l26_n990(x)
- if (x < 1)
- fun_l27_n950(x)
- else
- fun_l27_n203(x)
- end
-end
-
-def fun_l26_n991(x)
- if (x < 1)
- fun_l27_n39(x)
- else
- fun_l27_n284(x)
- end
-end
-
-def fun_l26_n992(x)
- if (x < 1)
- fun_l27_n944(x)
- else
- fun_l27_n420(x)
- end
-end
-
-def fun_l26_n993(x)
- if (x < 1)
- fun_l27_n254(x)
- else
- fun_l27_n960(x)
- end
-end
-
-def fun_l26_n994(x)
- if (x < 1)
- fun_l27_n374(x)
- else
- fun_l27_n354(x)
- end
-end
-
-def fun_l26_n995(x)
- if (x < 1)
- fun_l27_n766(x)
- else
- fun_l27_n937(x)
- end
-end
-
-def fun_l26_n996(x)
- if (x < 1)
- fun_l27_n299(x)
- else
- fun_l27_n565(x)
- end
-end
-
-def fun_l26_n997(x)
- if (x < 1)
- fun_l27_n390(x)
- else
- fun_l27_n924(x)
- end
-end
-
-def fun_l26_n998(x)
- if (x < 1)
- fun_l27_n452(x)
- else
- fun_l27_n653(x)
- end
-end
-
-def fun_l26_n999(x)
- if (x < 1)
- fun_l27_n110(x)
- else
- fun_l27_n781(x)
- end
-end
-
-def fun_l27_n0(x)
- if (x < 1)
- fun_l28_n77(x)
- else
- fun_l28_n170(x)
- end
-end
-
-def fun_l27_n1(x)
- if (x < 1)
- fun_l28_n420(x)
- else
- fun_l28_n414(x)
- end
-end
-
-def fun_l27_n2(x)
- if (x < 1)
- fun_l28_n802(x)
- else
- fun_l28_n702(x)
- end
-end
-
-def fun_l27_n3(x)
- if (x < 1)
- fun_l28_n742(x)
- else
- fun_l28_n819(x)
- end
-end
-
-def fun_l27_n4(x)
- if (x < 1)
- fun_l28_n75(x)
- else
- fun_l28_n675(x)
- end
-end
-
-def fun_l27_n5(x)
- if (x < 1)
- fun_l28_n276(x)
- else
- fun_l28_n554(x)
- end
-end
-
-def fun_l27_n6(x)
- if (x < 1)
- fun_l28_n505(x)
- else
- fun_l28_n462(x)
- end
-end
-
-def fun_l27_n7(x)
- if (x < 1)
- fun_l28_n401(x)
- else
- fun_l28_n437(x)
- end
-end
-
-def fun_l27_n8(x)
- if (x < 1)
- fun_l28_n987(x)
- else
- fun_l28_n911(x)
- end
-end
-
-def fun_l27_n9(x)
- if (x < 1)
- fun_l28_n196(x)
- else
- fun_l28_n507(x)
- end
-end
-
-def fun_l27_n10(x)
- if (x < 1)
- fun_l28_n676(x)
- else
- fun_l28_n612(x)
- end
-end
-
-def fun_l27_n11(x)
- if (x < 1)
- fun_l28_n630(x)
- else
- fun_l28_n897(x)
- end
-end
-
-def fun_l27_n12(x)
- if (x < 1)
- fun_l28_n655(x)
- else
- fun_l28_n58(x)
- end
-end
-
-def fun_l27_n13(x)
- if (x < 1)
- fun_l28_n777(x)
- else
- fun_l28_n138(x)
- end
-end
-
-def fun_l27_n14(x)
- if (x < 1)
- fun_l28_n233(x)
- else
- fun_l28_n296(x)
- end
-end
-
-def fun_l27_n15(x)
- if (x < 1)
- fun_l28_n580(x)
- else
- fun_l28_n538(x)
- end
-end
-
-def fun_l27_n16(x)
- if (x < 1)
- fun_l28_n124(x)
- else
- fun_l28_n285(x)
- end
-end
-
-def fun_l27_n17(x)
- if (x < 1)
- fun_l28_n250(x)
- else
- fun_l28_n255(x)
- end
-end
-
-def fun_l27_n18(x)
- if (x < 1)
- fun_l28_n872(x)
- else
- fun_l28_n242(x)
- end
-end
-
-def fun_l27_n19(x)
- if (x < 1)
- fun_l28_n548(x)
- else
- fun_l28_n30(x)
- end
-end
-
-def fun_l27_n20(x)
- if (x < 1)
- fun_l28_n411(x)
- else
- fun_l28_n997(x)
- end
-end
-
-def fun_l27_n21(x)
- if (x < 1)
- fun_l28_n860(x)
- else
- fun_l28_n22(x)
- end
-end
-
-def fun_l27_n22(x)
- if (x < 1)
- fun_l28_n147(x)
- else
- fun_l28_n210(x)
- end
-end
-
-def fun_l27_n23(x)
- if (x < 1)
- fun_l28_n763(x)
- else
- fun_l28_n652(x)
- end
-end
-
-def fun_l27_n24(x)
- if (x < 1)
- fun_l28_n678(x)
- else
- fun_l28_n637(x)
- end
-end
-
-def fun_l27_n25(x)
- if (x < 1)
- fun_l28_n748(x)
- else
- fun_l28_n445(x)
- end
-end
-
-def fun_l27_n26(x)
- if (x < 1)
- fun_l28_n796(x)
- else
- fun_l28_n780(x)
- end
-end
-
-def fun_l27_n27(x)
- if (x < 1)
- fun_l28_n26(x)
- else
- fun_l28_n737(x)
- end
-end
-
-def fun_l27_n28(x)
- if (x < 1)
- fun_l28_n779(x)
- else
- fun_l28_n206(x)
- end
-end
-
-def fun_l27_n29(x)
- if (x < 1)
- fun_l28_n236(x)
- else
- fun_l28_n864(x)
- end
-end
-
-def fun_l27_n30(x)
- if (x < 1)
- fun_l28_n937(x)
- else
- fun_l28_n524(x)
- end
-end
-
-def fun_l27_n31(x)
- if (x < 1)
- fun_l28_n61(x)
- else
- fun_l28_n791(x)
- end
-end
-
-def fun_l27_n32(x)
- if (x < 1)
- fun_l28_n891(x)
- else
- fun_l28_n424(x)
- end
-end
-
-def fun_l27_n33(x)
- if (x < 1)
- fun_l28_n856(x)
- else
- fun_l28_n544(x)
- end
-end
-
-def fun_l27_n34(x)
- if (x < 1)
- fun_l28_n575(x)
- else
- fun_l28_n608(x)
- end
-end
-
-def fun_l27_n35(x)
- if (x < 1)
- fun_l28_n546(x)
- else
- fun_l28_n164(x)
- end
-end
-
-def fun_l27_n36(x)
- if (x < 1)
- fun_l28_n482(x)
- else
- fun_l28_n854(x)
- end
-end
-
-def fun_l27_n37(x)
- if (x < 1)
- fun_l28_n667(x)
- else
- fun_l28_n568(x)
- end
-end
-
-def fun_l27_n38(x)
- if (x < 1)
- fun_l28_n8(x)
- else
- fun_l28_n794(x)
- end
-end
-
-def fun_l27_n39(x)
- if (x < 1)
- fun_l28_n504(x)
- else
- fun_l28_n199(x)
- end
-end
-
-def fun_l27_n40(x)
- if (x < 1)
- fun_l28_n360(x)
- else
- fun_l28_n714(x)
- end
-end
-
-def fun_l27_n41(x)
- if (x < 1)
- fun_l28_n758(x)
- else
- fun_l28_n499(x)
- end
-end
-
-def fun_l27_n42(x)
- if (x < 1)
- fun_l28_n617(x)
- else
- fun_l28_n239(x)
- end
-end
-
-def fun_l27_n43(x)
- if (x < 1)
- fun_l28_n357(x)
- else
- fun_l28_n950(x)
- end
-end
-
-def fun_l27_n44(x)
- if (x < 1)
- fun_l28_n308(x)
- else
- fun_l28_n248(x)
- end
-end
-
-def fun_l27_n45(x)
- if (x < 1)
- fun_l28_n887(x)
- else
- fun_l28_n541(x)
- end
-end
-
-def fun_l27_n46(x)
- if (x < 1)
- fun_l28_n922(x)
- else
- fun_l28_n21(x)
- end
-end
-
-def fun_l27_n47(x)
- if (x < 1)
- fun_l28_n398(x)
- else
- fun_l28_n781(x)
- end
-end
-
-def fun_l27_n48(x)
- if (x < 1)
- fun_l28_n573(x)
- else
- fun_l28_n22(x)
- end
-end
-
-def fun_l27_n49(x)
- if (x < 1)
- fun_l28_n324(x)
- else
- fun_l28_n764(x)
- end
-end
-
-def fun_l27_n50(x)
- if (x < 1)
- fun_l28_n428(x)
- else
- fun_l28_n3(x)
- end
-end
-
-def fun_l27_n51(x)
- if (x < 1)
- fun_l28_n637(x)
- else
- fun_l28_n871(x)
- end
-end
-
-def fun_l27_n52(x)
- if (x < 1)
- fun_l28_n547(x)
- else
- fun_l28_n370(x)
- end
-end
-
-def fun_l27_n53(x)
- if (x < 1)
- fun_l28_n864(x)
- else
- fun_l28_n360(x)
- end
-end
-
-def fun_l27_n54(x)
- if (x < 1)
- fun_l28_n960(x)
- else
- fun_l28_n80(x)
- end
-end
-
-def fun_l27_n55(x)
- if (x < 1)
- fun_l28_n339(x)
- else
- fun_l28_n828(x)
- end
-end
-
-def fun_l27_n56(x)
- if (x < 1)
- fun_l28_n613(x)
- else
- fun_l28_n109(x)
- end
-end
-
-def fun_l27_n57(x)
- if (x < 1)
- fun_l28_n458(x)
- else
- fun_l28_n339(x)
- end
-end
-
-def fun_l27_n58(x)
- if (x < 1)
- fun_l28_n313(x)
- else
- fun_l28_n20(x)
- end
-end
-
-def fun_l27_n59(x)
- if (x < 1)
- fun_l28_n642(x)
- else
- fun_l28_n582(x)
- end
-end
-
-def fun_l27_n60(x)
- if (x < 1)
- fun_l28_n407(x)
- else
- fun_l28_n182(x)
- end
-end
-
-def fun_l27_n61(x)
- if (x < 1)
- fun_l28_n475(x)
- else
- fun_l28_n865(x)
- end
-end
-
-def fun_l27_n62(x)
- if (x < 1)
- fun_l28_n867(x)
- else
- fun_l28_n935(x)
- end
-end
-
-def fun_l27_n63(x)
- if (x < 1)
- fun_l28_n361(x)
- else
- fun_l28_n675(x)
- end
-end
-
-def fun_l27_n64(x)
- if (x < 1)
- fun_l28_n583(x)
- else
- fun_l28_n990(x)
- end
-end
-
-def fun_l27_n65(x)
- if (x < 1)
- fun_l28_n305(x)
- else
- fun_l28_n918(x)
- end
-end
-
-def fun_l27_n66(x)
- if (x < 1)
- fun_l28_n449(x)
- else
- fun_l28_n172(x)
- end
-end
-
-def fun_l27_n67(x)
- if (x < 1)
- fun_l28_n384(x)
- else
- fun_l28_n102(x)
- end
-end
-
-def fun_l27_n68(x)
- if (x < 1)
- fun_l28_n27(x)
- else
- fun_l28_n638(x)
- end
-end
-
-def fun_l27_n69(x)
- if (x < 1)
- fun_l28_n370(x)
- else
- fun_l28_n305(x)
- end
-end
-
-def fun_l27_n70(x)
- if (x < 1)
- fun_l28_n91(x)
- else
- fun_l28_n516(x)
- end
-end
-
-def fun_l27_n71(x)
- if (x < 1)
- fun_l28_n835(x)
- else
- fun_l28_n422(x)
- end
-end
-
-def fun_l27_n72(x)
- if (x < 1)
- fun_l28_n528(x)
- else
- fun_l28_n924(x)
- end
-end
-
-def fun_l27_n73(x)
- if (x < 1)
- fun_l28_n910(x)
- else
- fun_l28_n177(x)
- end
-end
-
-def fun_l27_n74(x)
- if (x < 1)
- fun_l28_n424(x)
- else
- fun_l28_n133(x)
- end
-end
-
-def fun_l27_n75(x)
- if (x < 1)
- fun_l28_n207(x)
- else
- fun_l28_n206(x)
- end
-end
-
-def fun_l27_n76(x)
- if (x < 1)
- fun_l28_n285(x)
- else
- fun_l28_n513(x)
- end
-end
-
-def fun_l27_n77(x)
- if (x < 1)
- fun_l28_n446(x)
- else
- fun_l28_n985(x)
- end
-end
-
-def fun_l27_n78(x)
- if (x < 1)
- fun_l28_n814(x)
- else
- fun_l28_n43(x)
- end
-end
-
-def fun_l27_n79(x)
- if (x < 1)
- fun_l28_n155(x)
- else
- fun_l28_n944(x)
- end
-end
-
-def fun_l27_n80(x)
- if (x < 1)
- fun_l28_n22(x)
- else
- fun_l28_n815(x)
- end
-end
-
-def fun_l27_n81(x)
- if (x < 1)
- fun_l28_n465(x)
- else
- fun_l28_n132(x)
- end
-end
-
-def fun_l27_n82(x)
- if (x < 1)
- fun_l28_n540(x)
- else
- fun_l28_n199(x)
- end
-end
-
-def fun_l27_n83(x)
- if (x < 1)
- fun_l28_n28(x)
- else
- fun_l28_n64(x)
- end
-end
-
-def fun_l27_n84(x)
- if (x < 1)
- fun_l28_n4(x)
- else
- fun_l28_n782(x)
- end
-end
-
-def fun_l27_n85(x)
- if (x < 1)
- fun_l28_n685(x)
- else
- fun_l28_n57(x)
- end
-end
-
-def fun_l27_n86(x)
- if (x < 1)
- fun_l28_n755(x)
- else
- fun_l28_n317(x)
- end
-end
-
-def fun_l27_n87(x)
- if (x < 1)
- fun_l28_n298(x)
- else
- fun_l28_n645(x)
- end
-end
-
-def fun_l27_n88(x)
- if (x < 1)
- fun_l28_n489(x)
- else
- fun_l28_n357(x)
- end
-end
-
-def fun_l27_n89(x)
- if (x < 1)
- fun_l28_n225(x)
- else
- fun_l28_n465(x)
- end
-end
-
-def fun_l27_n90(x)
- if (x < 1)
- fun_l28_n729(x)
- else
- fun_l28_n688(x)
- end
-end
-
-def fun_l27_n91(x)
- if (x < 1)
- fun_l28_n936(x)
- else
- fun_l28_n62(x)
- end
-end
-
-def fun_l27_n92(x)
- if (x < 1)
- fun_l28_n564(x)
- else
- fun_l28_n497(x)
- end
-end
-
-def fun_l27_n93(x)
- if (x < 1)
- fun_l28_n78(x)
- else
- fun_l28_n167(x)
- end
-end
-
-def fun_l27_n94(x)
- if (x < 1)
- fun_l28_n24(x)
- else
- fun_l28_n543(x)
- end
-end
-
-def fun_l27_n95(x)
- if (x < 1)
- fun_l28_n56(x)
- else
- fun_l28_n796(x)
- end
-end
-
-def fun_l27_n96(x)
- if (x < 1)
- fun_l28_n768(x)
- else
- fun_l28_n909(x)
- end
-end
-
-def fun_l27_n97(x)
- if (x < 1)
- fun_l28_n72(x)
- else
- fun_l28_n604(x)
- end
-end
-
-def fun_l27_n98(x)
- if (x < 1)
- fun_l28_n903(x)
- else
- fun_l28_n998(x)
- end
-end
-
-def fun_l27_n99(x)
- if (x < 1)
- fun_l28_n525(x)
- else
- fun_l28_n158(x)
- end
-end
-
-def fun_l27_n100(x)
- if (x < 1)
- fun_l28_n54(x)
- else
- fun_l28_n667(x)
- end
-end
-
-def fun_l27_n101(x)
- if (x < 1)
- fun_l28_n894(x)
- else
- fun_l28_n807(x)
- end
-end
-
-def fun_l27_n102(x)
- if (x < 1)
- fun_l28_n334(x)
- else
- fun_l28_n479(x)
- end
-end
-
-def fun_l27_n103(x)
- if (x < 1)
- fun_l28_n211(x)
- else
- fun_l28_n383(x)
- end
-end
-
-def fun_l27_n104(x)
- if (x < 1)
- fun_l28_n598(x)
- else
- fun_l28_n793(x)
- end
-end
-
-def fun_l27_n105(x)
- if (x < 1)
- fun_l28_n812(x)
- else
- fun_l28_n806(x)
- end
-end
-
-def fun_l27_n106(x)
- if (x < 1)
- fun_l28_n726(x)
- else
- fun_l28_n769(x)
- end
-end
-
-def fun_l27_n107(x)
- if (x < 1)
- fun_l28_n593(x)
- else
- fun_l28_n173(x)
- end
-end
-
-def fun_l27_n108(x)
- if (x < 1)
- fun_l28_n490(x)
- else
- fun_l28_n681(x)
- end
-end
-
-def fun_l27_n109(x)
- if (x < 1)
- fun_l28_n691(x)
- else
- fun_l28_n323(x)
- end
-end
-
-def fun_l27_n110(x)
- if (x < 1)
- fun_l28_n710(x)
- else
- fun_l28_n624(x)
- end
-end
-
-def fun_l27_n111(x)
- if (x < 1)
- fun_l28_n563(x)
- else
- fun_l28_n335(x)
- end
-end
-
-def fun_l27_n112(x)
- if (x < 1)
- fun_l28_n510(x)
- else
- fun_l28_n879(x)
- end
-end
-
-def fun_l27_n113(x)
- if (x < 1)
- fun_l28_n900(x)
- else
- fun_l28_n119(x)
- end
-end
-
-def fun_l27_n114(x)
- if (x < 1)
- fun_l28_n17(x)
- else
- fun_l28_n8(x)
- end
-end
-
-def fun_l27_n115(x)
- if (x < 1)
- fun_l28_n813(x)
- else
- fun_l28_n948(x)
- end
-end
-
-def fun_l27_n116(x)
- if (x < 1)
- fun_l28_n644(x)
- else
- fun_l28_n177(x)
- end
-end
-
-def fun_l27_n117(x)
- if (x < 1)
- fun_l28_n635(x)
- else
- fun_l28_n489(x)
- end
-end
-
-def fun_l27_n118(x)
- if (x < 1)
- fun_l28_n520(x)
- else
- fun_l28_n127(x)
- end
-end
-
-def fun_l27_n119(x)
- if (x < 1)
- fun_l28_n859(x)
- else
- fun_l28_n264(x)
- end
-end
-
-def fun_l27_n120(x)
- if (x < 1)
- fun_l28_n29(x)
- else
- fun_l28_n984(x)
- end
-end
-
-def fun_l27_n121(x)
- if (x < 1)
- fun_l28_n2(x)
- else
- fun_l28_n858(x)
- end
-end
-
-def fun_l27_n122(x)
- if (x < 1)
- fun_l28_n907(x)
- else
- fun_l28_n34(x)
- end
-end
-
-def fun_l27_n123(x)
- if (x < 1)
- fun_l28_n495(x)
- else
- fun_l28_n144(x)
- end
-end
-
-def fun_l27_n124(x)
- if (x < 1)
- fun_l28_n160(x)
- else
- fun_l28_n987(x)
- end
-end
-
-def fun_l27_n125(x)
- if (x < 1)
- fun_l28_n60(x)
- else
- fun_l28_n415(x)
- end
-end
-
-def fun_l27_n126(x)
- if (x < 1)
- fun_l28_n473(x)
- else
- fun_l28_n461(x)
- end
-end
-
-def fun_l27_n127(x)
- if (x < 1)
- fun_l28_n664(x)
- else
- fun_l28_n764(x)
- end
-end
-
-def fun_l27_n128(x)
- if (x < 1)
- fun_l28_n815(x)
- else
- fun_l28_n677(x)
- end
-end
-
-def fun_l27_n129(x)
- if (x < 1)
- fun_l28_n828(x)
- else
- fun_l28_n575(x)
- end
-end
-
-def fun_l27_n130(x)
- if (x < 1)
- fun_l28_n100(x)
- else
- fun_l28_n811(x)
- end
-end
-
-def fun_l27_n131(x)
- if (x < 1)
- fun_l28_n789(x)
- else
- fun_l28_n246(x)
- end
-end
-
-def fun_l27_n132(x)
- if (x < 1)
- fun_l28_n506(x)
- else
- fun_l28_n555(x)
- end
-end
-
-def fun_l27_n133(x)
- if (x < 1)
- fun_l28_n272(x)
- else
- fun_l28_n115(x)
- end
-end
-
-def fun_l27_n134(x)
- if (x < 1)
- fun_l28_n925(x)
- else
- fun_l28_n34(x)
- end
-end
-
-def fun_l27_n135(x)
- if (x < 1)
- fun_l28_n844(x)
- else
- fun_l28_n725(x)
- end
-end
-
-def fun_l27_n136(x)
- if (x < 1)
- fun_l28_n825(x)
- else
- fun_l28_n38(x)
- end
-end
-
-def fun_l27_n137(x)
- if (x < 1)
- fun_l28_n607(x)
- else
- fun_l28_n343(x)
- end
-end
-
-def fun_l27_n138(x)
- if (x < 1)
- fun_l28_n874(x)
- else
- fun_l28_n449(x)
- end
-end
-
-def fun_l27_n139(x)
- if (x < 1)
- fun_l28_n632(x)
- else
- fun_l28_n454(x)
- end
-end
-
-def fun_l27_n140(x)
- if (x < 1)
- fun_l28_n902(x)
- else
- fun_l28_n301(x)
- end
-end
-
-def fun_l27_n141(x)
- if (x < 1)
- fun_l28_n395(x)
- else
- fun_l28_n890(x)
- end
-end
-
-def fun_l27_n142(x)
- if (x < 1)
- fun_l28_n625(x)
- else
- fun_l28_n246(x)
- end
-end
-
-def fun_l27_n143(x)
- if (x < 1)
- fun_l28_n312(x)
- else
- fun_l28_n975(x)
- end
-end
-
-def fun_l27_n144(x)
- if (x < 1)
- fun_l28_n974(x)
- else
- fun_l28_n451(x)
- end
-end
-
-def fun_l27_n145(x)
- if (x < 1)
- fun_l28_n541(x)
- else
- fun_l28_n566(x)
- end
-end
-
-def fun_l27_n146(x)
- if (x < 1)
- fun_l28_n285(x)
- else
- fun_l28_n443(x)
- end
-end
-
-def fun_l27_n147(x)
- if (x < 1)
- fun_l28_n71(x)
- else
- fun_l28_n200(x)
- end
-end
-
-def fun_l27_n148(x)
- if (x < 1)
- fun_l28_n681(x)
- else
- fun_l28_n561(x)
- end
-end
-
-def fun_l27_n149(x)
- if (x < 1)
- fun_l28_n470(x)
- else
- fun_l28_n529(x)
- end
-end
-
-def fun_l27_n150(x)
- if (x < 1)
- fun_l28_n83(x)
- else
- fun_l28_n755(x)
- end
-end
-
-def fun_l27_n151(x)
- if (x < 1)
- fun_l28_n142(x)
- else
- fun_l28_n631(x)
- end
-end
-
-def fun_l27_n152(x)
- if (x < 1)
- fun_l28_n49(x)
- else
- fun_l28_n531(x)
- end
-end
-
-def fun_l27_n153(x)
- if (x < 1)
- fun_l28_n237(x)
- else
- fun_l28_n241(x)
- end
-end
-
-def fun_l27_n154(x)
- if (x < 1)
- fun_l28_n36(x)
- else
- fun_l28_n862(x)
- end
-end
-
-def fun_l27_n155(x)
- if (x < 1)
- fun_l28_n310(x)
- else
- fun_l28_n387(x)
- end
-end
-
-def fun_l27_n156(x)
- if (x < 1)
- fun_l28_n1(x)
- else
- fun_l28_n131(x)
- end
-end
-
-def fun_l27_n157(x)
- if (x < 1)
- fun_l28_n232(x)
- else
- fun_l28_n503(x)
- end
-end
-
-def fun_l27_n158(x)
- if (x < 1)
- fun_l28_n48(x)
- else
- fun_l28_n68(x)
- end
-end
-
-def fun_l27_n159(x)
- if (x < 1)
- fun_l28_n98(x)
- else
- fun_l28_n82(x)
- end
-end
-
-def fun_l27_n160(x)
- if (x < 1)
- fun_l28_n175(x)
- else
- fun_l28_n466(x)
- end
-end
-
-def fun_l27_n161(x)
- if (x < 1)
- fun_l28_n105(x)
- else
- fun_l28_n159(x)
- end
-end
-
-def fun_l27_n162(x)
- if (x < 1)
- fun_l28_n336(x)
- else
- fun_l28_n314(x)
- end
-end
-
-def fun_l27_n163(x)
- if (x < 1)
- fun_l28_n458(x)
- else
- fun_l28_n901(x)
- end
-end
-
-def fun_l27_n164(x)
- if (x < 1)
- fun_l28_n621(x)
- else
- fun_l28_n876(x)
- end
-end
-
-def fun_l27_n165(x)
- if (x < 1)
- fun_l28_n830(x)
- else
- fun_l28_n468(x)
- end
-end
-
-def fun_l27_n166(x)
- if (x < 1)
- fun_l28_n606(x)
- else
- fun_l28_n253(x)
- end
-end
-
-def fun_l27_n167(x)
- if (x < 1)
- fun_l28_n905(x)
- else
- fun_l28_n582(x)
- end
-end
-
-def fun_l27_n168(x)
- if (x < 1)
- fun_l28_n882(x)
- else
- fun_l28_n280(x)
- end
-end
-
-def fun_l27_n169(x)
- if (x < 1)
- fun_l28_n824(x)
- else
- fun_l28_n672(x)
- end
-end
-
-def fun_l27_n170(x)
- if (x < 1)
- fun_l28_n455(x)
- else
- fun_l28_n621(x)
- end
-end
-
-def fun_l27_n171(x)
- if (x < 1)
- fun_l28_n594(x)
- else
- fun_l28_n143(x)
- end
-end
-
-def fun_l27_n172(x)
- if (x < 1)
- fun_l28_n414(x)
- else
- fun_l28_n371(x)
- end
-end
-
-def fun_l27_n173(x)
- if (x < 1)
- fun_l28_n2(x)
- else
- fun_l28_n883(x)
- end
-end
-
-def fun_l27_n174(x)
- if (x < 1)
- fun_l28_n710(x)
- else
- fun_l28_n322(x)
- end
-end
-
-def fun_l27_n175(x)
- if (x < 1)
- fun_l28_n271(x)
- else
- fun_l28_n110(x)
- end
-end
-
-def fun_l27_n176(x)
- if (x < 1)
- fun_l28_n100(x)
- else
- fun_l28_n870(x)
- end
-end
-
-def fun_l27_n177(x)
- if (x < 1)
- fun_l28_n446(x)
- else
- fun_l28_n742(x)
- end
-end
-
-def fun_l27_n178(x)
- if (x < 1)
- fun_l28_n175(x)
- else
- fun_l28_n170(x)
- end
-end
-
-def fun_l27_n179(x)
- if (x < 1)
- fun_l28_n724(x)
- else
- fun_l28_n364(x)
- end
-end
-
-def fun_l27_n180(x)
- if (x < 1)
- fun_l28_n167(x)
- else
- fun_l28_n826(x)
- end
-end
-
-def fun_l27_n181(x)
- if (x < 1)
- fun_l28_n65(x)
- else
- fun_l28_n375(x)
- end
-end
-
-def fun_l27_n182(x)
- if (x < 1)
- fun_l28_n709(x)
- else
- fun_l28_n62(x)
- end
-end
-
-def fun_l27_n183(x)
- if (x < 1)
- fun_l28_n584(x)
- else
- fun_l28_n611(x)
- end
-end
-
-def fun_l27_n184(x)
- if (x < 1)
- fun_l28_n442(x)
- else
- fun_l28_n174(x)
- end
-end
-
-def fun_l27_n185(x)
- if (x < 1)
- fun_l28_n684(x)
- else
- fun_l28_n768(x)
- end
-end
-
-def fun_l27_n186(x)
- if (x < 1)
- fun_l28_n424(x)
- else
- fun_l28_n207(x)
- end
-end
-
-def fun_l27_n187(x)
- if (x < 1)
- fun_l28_n670(x)
- else
- fun_l28_n970(x)
- end
-end
-
-def fun_l27_n188(x)
- if (x < 1)
- fun_l28_n470(x)
- else
- fun_l28_n774(x)
- end
-end
-
-def fun_l27_n189(x)
- if (x < 1)
- fun_l28_n58(x)
- else
- fun_l28_n578(x)
- end
-end
-
-def fun_l27_n190(x)
- if (x < 1)
- fun_l28_n697(x)
- else
- fun_l28_n310(x)
- end
-end
-
-def fun_l27_n191(x)
- if (x < 1)
- fun_l28_n493(x)
- else
- fun_l28_n56(x)
- end
-end
-
-def fun_l27_n192(x)
- if (x < 1)
- fun_l28_n12(x)
- else
- fun_l28_n471(x)
- end
-end
-
-def fun_l27_n193(x)
- if (x < 1)
- fun_l28_n306(x)
- else
- fun_l28_n10(x)
- end
-end
-
-def fun_l27_n194(x)
- if (x < 1)
- fun_l28_n87(x)
- else
- fun_l28_n59(x)
- end
-end
-
-def fun_l27_n195(x)
- if (x < 1)
- fun_l28_n207(x)
- else
- fun_l28_n555(x)
- end
-end
-
-def fun_l27_n196(x)
- if (x < 1)
- fun_l28_n563(x)
- else
- fun_l28_n256(x)
- end
-end
-
-def fun_l27_n197(x)
- if (x < 1)
- fun_l28_n14(x)
- else
- fun_l28_n895(x)
- end
-end
-
-def fun_l27_n198(x)
- if (x < 1)
- fun_l28_n986(x)
- else
- fun_l28_n287(x)
- end
-end
-
-def fun_l27_n199(x)
- if (x < 1)
- fun_l28_n810(x)
- else
- fun_l28_n66(x)
- end
-end
-
-def fun_l27_n200(x)
- if (x < 1)
- fun_l28_n457(x)
- else
- fun_l28_n186(x)
- end
-end
-
-def fun_l27_n201(x)
- if (x < 1)
- fun_l28_n580(x)
- else
- fun_l28_n248(x)
- end
-end
-
-def fun_l27_n202(x)
- if (x < 1)
- fun_l28_n9(x)
- else
- fun_l28_n66(x)
- end
-end
-
-def fun_l27_n203(x)
- if (x < 1)
- fun_l28_n659(x)
- else
- fun_l28_n403(x)
- end
-end
-
-def fun_l27_n204(x)
- if (x < 1)
- fun_l28_n66(x)
- else
- fun_l28_n524(x)
- end
-end
-
-def fun_l27_n205(x)
- if (x < 1)
- fun_l28_n754(x)
- else
- fun_l28_n46(x)
- end
-end
-
-def fun_l27_n206(x)
- if (x < 1)
- fun_l28_n32(x)
- else
- fun_l28_n655(x)
- end
-end
-
-def fun_l27_n207(x)
- if (x < 1)
- fun_l28_n559(x)
- else
- fun_l28_n619(x)
- end
-end
-
-def fun_l27_n208(x)
- if (x < 1)
- fun_l28_n251(x)
- else
- fun_l28_n410(x)
- end
-end
-
-def fun_l27_n209(x)
- if (x < 1)
- fun_l28_n339(x)
- else
- fun_l28_n726(x)
- end
-end
-
-def fun_l27_n210(x)
- if (x < 1)
- fun_l28_n104(x)
- else
- fun_l28_n733(x)
- end
-end
-
-def fun_l27_n211(x)
- if (x < 1)
- fun_l28_n500(x)
- else
- fun_l28_n654(x)
- end
-end
-
-def fun_l27_n212(x)
- if (x < 1)
- fun_l28_n244(x)
- else
- fun_l28_n471(x)
- end
-end
-
-def fun_l27_n213(x)
- if (x < 1)
- fun_l28_n692(x)
- else
- fun_l28_n56(x)
- end
-end
-
-def fun_l27_n214(x)
- if (x < 1)
- fun_l28_n54(x)
- else
- fun_l28_n753(x)
- end
-end
-
-def fun_l27_n215(x)
- if (x < 1)
- fun_l28_n770(x)
- else
- fun_l28_n756(x)
- end
-end
-
-def fun_l27_n216(x)
- if (x < 1)
- fun_l28_n771(x)
- else
- fun_l28_n407(x)
- end
-end
-
-def fun_l27_n217(x)
- if (x < 1)
- fun_l28_n728(x)
- else
- fun_l28_n361(x)
- end
-end
-
-def fun_l27_n218(x)
- if (x < 1)
- fun_l28_n983(x)
- else
- fun_l28_n440(x)
- end
-end
-
-def fun_l27_n219(x)
- if (x < 1)
- fun_l28_n105(x)
- else
- fun_l28_n906(x)
- end
-end
-
-def fun_l27_n220(x)
- if (x < 1)
- fun_l28_n694(x)
- else
- fun_l28_n792(x)
- end
-end
-
-def fun_l27_n221(x)
- if (x < 1)
- fun_l28_n325(x)
- else
- fun_l28_n98(x)
- end
-end
-
-def fun_l27_n222(x)
- if (x < 1)
- fun_l28_n354(x)
- else
- fun_l28_n683(x)
- end
-end
-
-def fun_l27_n223(x)
- if (x < 1)
- fun_l28_n236(x)
- else
- fun_l28_n999(x)
- end
-end
-
-def fun_l27_n224(x)
- if (x < 1)
- fun_l28_n671(x)
- else
- fun_l28_n621(x)
- end
-end
-
-def fun_l27_n225(x)
- if (x < 1)
- fun_l28_n113(x)
- else
- fun_l28_n532(x)
- end
-end
-
-def fun_l27_n226(x)
- if (x < 1)
- fun_l28_n43(x)
- else
- fun_l28_n449(x)
- end
-end
-
-def fun_l27_n227(x)
- if (x < 1)
- fun_l28_n402(x)
- else
- fun_l28_n298(x)
- end
-end
-
-def fun_l27_n228(x)
- if (x < 1)
- fun_l28_n858(x)
- else
- fun_l28_n626(x)
- end
-end
-
-def fun_l27_n229(x)
- if (x < 1)
- fun_l28_n596(x)
- else
- fun_l28_n21(x)
- end
-end
-
-def fun_l27_n230(x)
- if (x < 1)
- fun_l28_n713(x)
- else
- fun_l28_n755(x)
- end
-end
-
-def fun_l27_n231(x)
- if (x < 1)
- fun_l28_n59(x)
- else
- fun_l28_n695(x)
- end
-end
-
-def fun_l27_n232(x)
- if (x < 1)
- fun_l28_n715(x)
- else
- fun_l28_n614(x)
- end
-end
-
-def fun_l27_n233(x)
- if (x < 1)
- fun_l28_n124(x)
- else
- fun_l28_n877(x)
- end
-end
-
-def fun_l27_n234(x)
- if (x < 1)
- fun_l28_n563(x)
- else
- fun_l28_n273(x)
- end
-end
-
-def fun_l27_n235(x)
- if (x < 1)
- fun_l28_n331(x)
- else
- fun_l28_n866(x)
- end
-end
-
-def fun_l27_n236(x)
- if (x < 1)
- fun_l28_n950(x)
- else
- fun_l28_n765(x)
- end
-end
-
-def fun_l27_n237(x)
- if (x < 1)
- fun_l28_n550(x)
- else
- fun_l28_n133(x)
- end
-end
-
-def fun_l27_n238(x)
- if (x < 1)
- fun_l28_n0(x)
- else
- fun_l28_n749(x)
- end
-end
-
-def fun_l27_n239(x)
- if (x < 1)
- fun_l28_n578(x)
- else
- fun_l28_n692(x)
- end
-end
-
-def fun_l27_n240(x)
- if (x < 1)
- fun_l28_n111(x)
- else
- fun_l28_n301(x)
- end
-end
-
-def fun_l27_n241(x)
- if (x < 1)
- fun_l28_n191(x)
- else
- fun_l28_n272(x)
- end
-end
-
-def fun_l27_n242(x)
- if (x < 1)
- fun_l28_n547(x)
- else
- fun_l28_n425(x)
- end
-end
-
-def fun_l27_n243(x)
- if (x < 1)
- fun_l28_n173(x)
- else
- fun_l28_n101(x)
- end
-end
-
-def fun_l27_n244(x)
- if (x < 1)
- fun_l28_n511(x)
- else
- fun_l28_n758(x)
- end
-end
-
-def fun_l27_n245(x)
- if (x < 1)
- fun_l28_n272(x)
- else
- fun_l28_n497(x)
- end
-end
-
-def fun_l27_n246(x)
- if (x < 1)
- fun_l28_n59(x)
- else
- fun_l28_n348(x)
- end
-end
-
-def fun_l27_n247(x)
- if (x < 1)
- fun_l28_n583(x)
- else
- fun_l28_n730(x)
- end
-end
-
-def fun_l27_n248(x)
- if (x < 1)
- fun_l28_n635(x)
- else
- fun_l28_n714(x)
- end
-end
-
-def fun_l27_n249(x)
- if (x < 1)
- fun_l28_n815(x)
- else
- fun_l28_n844(x)
- end
-end
-
-def fun_l27_n250(x)
- if (x < 1)
- fun_l28_n694(x)
- else
- fun_l28_n869(x)
- end
-end
-
-def fun_l27_n251(x)
- if (x < 1)
- fun_l28_n681(x)
- else
- fun_l28_n894(x)
- end
-end
-
-def fun_l27_n252(x)
- if (x < 1)
- fun_l28_n756(x)
- else
- fun_l28_n657(x)
- end
-end
-
-def fun_l27_n253(x)
- if (x < 1)
- fun_l28_n392(x)
- else
- fun_l28_n706(x)
- end
-end
-
-def fun_l27_n254(x)
- if (x < 1)
- fun_l28_n267(x)
- else
- fun_l28_n238(x)
- end
-end
-
-def fun_l27_n255(x)
- if (x < 1)
- fun_l28_n914(x)
- else
- fun_l28_n574(x)
- end
-end
-
-def fun_l27_n256(x)
- if (x < 1)
- fun_l28_n872(x)
- else
- fun_l28_n269(x)
- end
-end
-
-def fun_l27_n257(x)
- if (x < 1)
- fun_l28_n454(x)
- else
- fun_l28_n485(x)
- end
-end
-
-def fun_l27_n258(x)
- if (x < 1)
- fun_l28_n994(x)
- else
- fun_l28_n83(x)
- end
-end
-
-def fun_l27_n259(x)
- if (x < 1)
- fun_l28_n41(x)
- else
- fun_l28_n495(x)
- end
-end
-
-def fun_l27_n260(x)
- if (x < 1)
- fun_l28_n75(x)
- else
- fun_l28_n508(x)
- end
-end
-
-def fun_l27_n261(x)
- if (x < 1)
- fun_l28_n684(x)
- else
- fun_l28_n524(x)
- end
-end
-
-def fun_l27_n262(x)
- if (x < 1)
- fun_l28_n78(x)
- else
- fun_l28_n563(x)
- end
-end
-
-def fun_l27_n263(x)
- if (x < 1)
- fun_l28_n227(x)
- else
- fun_l28_n359(x)
- end
-end
-
-def fun_l27_n264(x)
- if (x < 1)
- fun_l28_n679(x)
- else
- fun_l28_n711(x)
- end
-end
-
-def fun_l27_n265(x)
- if (x < 1)
- fun_l28_n0(x)
- else
- fun_l28_n720(x)
- end
-end
-
-def fun_l27_n266(x)
- if (x < 1)
- fun_l28_n384(x)
- else
- fun_l28_n915(x)
- end
-end
-
-def fun_l27_n267(x)
- if (x < 1)
- fun_l28_n912(x)
- else
- fun_l28_n24(x)
- end
-end
-
-def fun_l27_n268(x)
- if (x < 1)
- fun_l28_n337(x)
- else
- fun_l28_n880(x)
- end
-end
-
-def fun_l27_n269(x)
- if (x < 1)
- fun_l28_n84(x)
- else
- fun_l28_n387(x)
- end
-end
-
-def fun_l27_n270(x)
- if (x < 1)
- fun_l28_n155(x)
- else
- fun_l28_n705(x)
- end
-end
-
-def fun_l27_n271(x)
- if (x < 1)
- fun_l28_n159(x)
- else
- fun_l28_n815(x)
- end
-end
-
-def fun_l27_n272(x)
- if (x < 1)
- fun_l28_n182(x)
- else
- fun_l28_n210(x)
- end
-end
-
-def fun_l27_n273(x)
- if (x < 1)
- fun_l28_n446(x)
- else
- fun_l28_n524(x)
- end
-end
-
-def fun_l27_n274(x)
- if (x < 1)
- fun_l28_n828(x)
- else
- fun_l28_n14(x)
- end
-end
-
-def fun_l27_n275(x)
- if (x < 1)
- fun_l28_n176(x)
- else
- fun_l28_n857(x)
- end
-end
-
-def fun_l27_n276(x)
- if (x < 1)
- fun_l28_n39(x)
- else
- fun_l28_n973(x)
- end
-end
-
-def fun_l27_n277(x)
- if (x < 1)
- fun_l28_n310(x)
- else
- fun_l28_n900(x)
- end
-end
-
-def fun_l27_n278(x)
- if (x < 1)
- fun_l28_n729(x)
- else
- fun_l28_n544(x)
- end
-end
-
-def fun_l27_n279(x)
- if (x < 1)
- fun_l28_n111(x)
- else
- fun_l28_n939(x)
- end
-end
-
-def fun_l27_n280(x)
- if (x < 1)
- fun_l28_n102(x)
- else
- fun_l28_n658(x)
- end
-end
-
-def fun_l27_n281(x)
- if (x < 1)
- fun_l28_n186(x)
- else
- fun_l28_n939(x)
- end
-end
-
-def fun_l27_n282(x)
- if (x < 1)
- fun_l28_n276(x)
- else
- fun_l28_n428(x)
- end
-end
-
-def fun_l27_n283(x)
- if (x < 1)
- fun_l28_n137(x)
- else
- fun_l28_n876(x)
- end
-end
-
-def fun_l27_n284(x)
- if (x < 1)
- fun_l28_n31(x)
- else
- fun_l28_n351(x)
- end
-end
-
-def fun_l27_n285(x)
- if (x < 1)
- fun_l28_n143(x)
- else
- fun_l28_n192(x)
- end
-end
-
-def fun_l27_n286(x)
- if (x < 1)
- fun_l28_n63(x)
- else
- fun_l28_n764(x)
- end
-end
-
-def fun_l27_n287(x)
- if (x < 1)
- fun_l28_n361(x)
- else
- fun_l28_n512(x)
- end
-end
-
-def fun_l27_n288(x)
- if (x < 1)
- fun_l28_n817(x)
- else
- fun_l28_n997(x)
- end
-end
-
-def fun_l27_n289(x)
- if (x < 1)
- fun_l28_n837(x)
- else
- fun_l28_n834(x)
- end
-end
-
-def fun_l27_n290(x)
- if (x < 1)
- fun_l28_n436(x)
- else
- fun_l28_n873(x)
- end
-end
-
-def fun_l27_n291(x)
- if (x < 1)
- fun_l28_n412(x)
- else
- fun_l28_n494(x)
- end
-end
-
-def fun_l27_n292(x)
- if (x < 1)
- fun_l28_n794(x)
- else
- fun_l28_n972(x)
- end
-end
-
-def fun_l27_n293(x)
- if (x < 1)
- fun_l28_n486(x)
- else
- fun_l28_n401(x)
- end
-end
-
-def fun_l27_n294(x)
- if (x < 1)
- fun_l28_n171(x)
- else
- fun_l28_n334(x)
- end
-end
-
-def fun_l27_n295(x)
- if (x < 1)
- fun_l28_n681(x)
- else
- fun_l28_n753(x)
- end
-end
-
-def fun_l27_n296(x)
- if (x < 1)
- fun_l28_n541(x)
- else
- fun_l28_n855(x)
- end
-end
-
-def fun_l27_n297(x)
- if (x < 1)
- fun_l28_n270(x)
- else
- fun_l28_n257(x)
- end
-end
-
-def fun_l27_n298(x)
- if (x < 1)
- fun_l28_n923(x)
- else
- fun_l28_n997(x)
- end
-end
-
-def fun_l27_n299(x)
- if (x < 1)
- fun_l28_n508(x)
- else
- fun_l28_n649(x)
- end
-end
-
-def fun_l27_n300(x)
- if (x < 1)
- fun_l28_n351(x)
- else
- fun_l28_n966(x)
- end
-end
-
-def fun_l27_n301(x)
- if (x < 1)
- fun_l28_n622(x)
- else
- fun_l28_n436(x)
- end
-end
-
-def fun_l27_n302(x)
- if (x < 1)
- fun_l28_n723(x)
- else
- fun_l28_n261(x)
- end
-end
-
-def fun_l27_n303(x)
- if (x < 1)
- fun_l28_n269(x)
- else
- fun_l28_n483(x)
- end
-end
-
-def fun_l27_n304(x)
- if (x < 1)
- fun_l28_n449(x)
- else
- fun_l28_n5(x)
- end
-end
-
-def fun_l27_n305(x)
- if (x < 1)
- fun_l28_n967(x)
- else
- fun_l28_n967(x)
- end
-end
-
-def fun_l27_n306(x)
- if (x < 1)
- fun_l28_n866(x)
- else
- fun_l28_n590(x)
- end
-end
-
-def fun_l27_n307(x)
- if (x < 1)
- fun_l28_n145(x)
- else
- fun_l28_n75(x)
- end
-end
-
-def fun_l27_n308(x)
- if (x < 1)
- fun_l28_n329(x)
- else
- fun_l28_n834(x)
- end
-end
-
-def fun_l27_n309(x)
- if (x < 1)
- fun_l28_n668(x)
- else
- fun_l28_n909(x)
- end
-end
-
-def fun_l27_n310(x)
- if (x < 1)
- fun_l28_n70(x)
- else
- fun_l28_n311(x)
- end
-end
-
-def fun_l27_n311(x)
- if (x < 1)
- fun_l28_n669(x)
- else
- fun_l28_n90(x)
- end
-end
-
-def fun_l27_n312(x)
- if (x < 1)
- fun_l28_n805(x)
- else
- fun_l28_n558(x)
- end
-end
-
-def fun_l27_n313(x)
- if (x < 1)
- fun_l28_n493(x)
- else
- fun_l28_n642(x)
- end
-end
-
-def fun_l27_n314(x)
- if (x < 1)
- fun_l28_n285(x)
- else
- fun_l28_n968(x)
- end
-end
-
-def fun_l27_n315(x)
- if (x < 1)
- fun_l28_n806(x)
- else
- fun_l28_n731(x)
- end
-end
-
-def fun_l27_n316(x)
- if (x < 1)
- fun_l28_n284(x)
- else
- fun_l28_n441(x)
- end
-end
-
-def fun_l27_n317(x)
- if (x < 1)
- fun_l28_n644(x)
- else
- fun_l28_n16(x)
- end
-end
-
-def fun_l27_n318(x)
- if (x < 1)
- fun_l28_n411(x)
- else
- fun_l28_n739(x)
- end
-end
-
-def fun_l27_n319(x)
- if (x < 1)
- fun_l28_n462(x)
- else
- fun_l28_n680(x)
- end
-end
-
-def fun_l27_n320(x)
- if (x < 1)
- fun_l28_n126(x)
- else
- fun_l28_n558(x)
- end
-end
-
-def fun_l27_n321(x)
- if (x < 1)
- fun_l28_n869(x)
- else
- fun_l28_n581(x)
- end
-end
-
-def fun_l27_n322(x)
- if (x < 1)
- fun_l28_n25(x)
- else
- fun_l28_n352(x)
- end
-end
-
-def fun_l27_n323(x)
- if (x < 1)
- fun_l28_n203(x)
- else
- fun_l28_n776(x)
- end
-end
-
-def fun_l27_n324(x)
- if (x < 1)
- fun_l28_n6(x)
- else
- fun_l28_n833(x)
- end
-end
-
-def fun_l27_n325(x)
- if (x < 1)
- fun_l28_n817(x)
- else
- fun_l28_n258(x)
- end
-end
-
-def fun_l27_n326(x)
- if (x < 1)
- fun_l28_n607(x)
- else
- fun_l28_n813(x)
- end
-end
-
-def fun_l27_n327(x)
- if (x < 1)
- fun_l28_n761(x)
- else
- fun_l28_n893(x)
- end
-end
-
-def fun_l27_n328(x)
- if (x < 1)
- fun_l28_n861(x)
- else
- fun_l28_n879(x)
- end
-end
-
-def fun_l27_n329(x)
- if (x < 1)
- fun_l28_n682(x)
- else
- fun_l28_n680(x)
- end
-end
-
-def fun_l27_n330(x)
- if (x < 1)
- fun_l28_n61(x)
- else
- fun_l28_n481(x)
- end
-end
-
-def fun_l27_n331(x)
- if (x < 1)
- fun_l28_n738(x)
- else
- fun_l28_n230(x)
- end
-end
-
-def fun_l27_n332(x)
- if (x < 1)
- fun_l28_n45(x)
- else
- fun_l28_n279(x)
- end
-end
-
-def fun_l27_n333(x)
- if (x < 1)
- fun_l28_n24(x)
- else
- fun_l28_n561(x)
- end
-end
-
-def fun_l27_n334(x)
- if (x < 1)
- fun_l28_n459(x)
- else
- fun_l28_n594(x)
- end
-end
-
-def fun_l27_n335(x)
- if (x < 1)
- fun_l28_n695(x)
- else
- fun_l28_n513(x)
- end
-end
-
-def fun_l27_n336(x)
- if (x < 1)
- fun_l28_n729(x)
- else
- fun_l28_n89(x)
- end
-end
-
-def fun_l27_n337(x)
- if (x < 1)
- fun_l28_n509(x)
- else
- fun_l28_n574(x)
- end
-end
-
-def fun_l27_n338(x)
- if (x < 1)
- fun_l28_n80(x)
- else
- fun_l28_n448(x)
- end
-end
-
-def fun_l27_n339(x)
- if (x < 1)
- fun_l28_n279(x)
- else
- fun_l28_n177(x)
- end
-end
-
-def fun_l27_n340(x)
- if (x < 1)
- fun_l28_n508(x)
- else
- fun_l28_n706(x)
- end
-end
-
-def fun_l27_n341(x)
- if (x < 1)
- fun_l28_n790(x)
- else
- fun_l28_n774(x)
- end
-end
-
-def fun_l27_n342(x)
- if (x < 1)
- fun_l28_n606(x)
- else
- fun_l28_n642(x)
- end
-end
-
-def fun_l27_n343(x)
- if (x < 1)
- fun_l28_n108(x)
- else
- fun_l28_n539(x)
- end
-end
-
-def fun_l27_n344(x)
- if (x < 1)
- fun_l28_n418(x)
- else
- fun_l28_n687(x)
- end
-end
-
-def fun_l27_n345(x)
- if (x < 1)
- fun_l28_n386(x)
- else
- fun_l28_n170(x)
- end
-end
-
-def fun_l27_n346(x)
- if (x < 1)
- fun_l28_n648(x)
- else
- fun_l28_n340(x)
- end
-end
-
-def fun_l27_n347(x)
- if (x < 1)
- fun_l28_n516(x)
- else
- fun_l28_n586(x)
- end
-end
-
-def fun_l27_n348(x)
- if (x < 1)
- fun_l28_n646(x)
- else
- fun_l28_n448(x)
- end
-end
-
-def fun_l27_n349(x)
- if (x < 1)
- fun_l28_n378(x)
- else
- fun_l28_n413(x)
- end
-end
-
-def fun_l27_n350(x)
- if (x < 1)
- fun_l28_n885(x)
- else
- fun_l28_n932(x)
- end
-end
-
-def fun_l27_n351(x)
- if (x < 1)
- fun_l28_n9(x)
- else
- fun_l28_n843(x)
- end
-end
-
-def fun_l27_n352(x)
- if (x < 1)
- fun_l28_n502(x)
- else
- fun_l28_n229(x)
- end
-end
-
-def fun_l27_n353(x)
- if (x < 1)
- fun_l28_n752(x)
- else
- fun_l28_n677(x)
- end
-end
-
-def fun_l27_n354(x)
- if (x < 1)
- fun_l28_n246(x)
- else
- fun_l28_n32(x)
- end
-end
-
-def fun_l27_n355(x)
- if (x < 1)
- fun_l28_n969(x)
- else
- fun_l28_n933(x)
- end
-end
-
-def fun_l27_n356(x)
- if (x < 1)
- fun_l28_n44(x)
- else
- fun_l28_n704(x)
- end
-end
-
-def fun_l27_n357(x)
- if (x < 1)
- fun_l28_n863(x)
- else
- fun_l28_n324(x)
- end
-end
-
-def fun_l27_n358(x)
- if (x < 1)
- fun_l28_n467(x)
- else
- fun_l28_n418(x)
- end
-end
-
-def fun_l27_n359(x)
- if (x < 1)
- fun_l28_n222(x)
- else
- fun_l28_n138(x)
- end
-end
-
-def fun_l27_n360(x)
- if (x < 1)
- fun_l28_n261(x)
- else
- fun_l28_n605(x)
- end
-end
-
-def fun_l27_n361(x)
- if (x < 1)
- fun_l28_n470(x)
- else
- fun_l28_n519(x)
- end
-end
-
-def fun_l27_n362(x)
- if (x < 1)
- fun_l28_n717(x)
- else
- fun_l28_n817(x)
- end
-end
-
-def fun_l27_n363(x)
- if (x < 1)
- fun_l28_n591(x)
- else
- fun_l28_n537(x)
- end
-end
-
-def fun_l27_n364(x)
- if (x < 1)
- fun_l28_n733(x)
- else
- fun_l28_n222(x)
- end
-end
-
-def fun_l27_n365(x)
- if (x < 1)
- fun_l28_n137(x)
- else
- fun_l28_n225(x)
- end
-end
-
-def fun_l27_n366(x)
- if (x < 1)
- fun_l28_n610(x)
- else
- fun_l28_n870(x)
- end
-end
-
-def fun_l27_n367(x)
- if (x < 1)
- fun_l28_n697(x)
- else
- fun_l28_n866(x)
- end
-end
-
-def fun_l27_n368(x)
- if (x < 1)
- fun_l28_n902(x)
- else
- fun_l28_n827(x)
- end
-end
-
-def fun_l27_n369(x)
- if (x < 1)
- fun_l28_n769(x)
- else
- fun_l28_n238(x)
- end
-end
-
-def fun_l27_n370(x)
- if (x < 1)
- fun_l28_n66(x)
- else
- fun_l28_n958(x)
- end
-end
-
-def fun_l27_n371(x)
- if (x < 1)
- fun_l28_n847(x)
- else
- fun_l28_n177(x)
- end
-end
-
-def fun_l27_n372(x)
- if (x < 1)
- fun_l28_n64(x)
- else
- fun_l28_n198(x)
- end
-end
-
-def fun_l27_n373(x)
- if (x < 1)
- fun_l28_n36(x)
- else
- fun_l28_n282(x)
- end
-end
-
-def fun_l27_n374(x)
- if (x < 1)
- fun_l28_n647(x)
- else
- fun_l28_n228(x)
- end
-end
-
-def fun_l27_n375(x)
- if (x < 1)
- fun_l28_n737(x)
- else
- fun_l28_n689(x)
- end
-end
-
-def fun_l27_n376(x)
- if (x < 1)
- fun_l28_n336(x)
- else
- fun_l28_n20(x)
- end
-end
-
-def fun_l27_n377(x)
- if (x < 1)
- fun_l28_n859(x)
- else
- fun_l28_n661(x)
- end
-end
-
-def fun_l27_n378(x)
- if (x < 1)
- fun_l28_n148(x)
- else
- fun_l28_n197(x)
- end
-end
-
-def fun_l27_n379(x)
- if (x < 1)
- fun_l28_n986(x)
- else
- fun_l28_n441(x)
- end
-end
-
-def fun_l27_n380(x)
- if (x < 1)
- fun_l28_n966(x)
- else
- fun_l28_n994(x)
- end
-end
-
-def fun_l27_n381(x)
- if (x < 1)
- fun_l28_n546(x)
- else
- fun_l28_n687(x)
- end
-end
-
-def fun_l27_n382(x)
- if (x < 1)
- fun_l28_n63(x)
- else
- fun_l28_n366(x)
- end
-end
-
-def fun_l27_n383(x)
- if (x < 1)
- fun_l28_n146(x)
- else
- fun_l28_n96(x)
- end
-end
-
-def fun_l27_n384(x)
- if (x < 1)
- fun_l28_n747(x)
- else
- fun_l28_n168(x)
- end
-end
-
-def fun_l27_n385(x)
- if (x < 1)
- fun_l28_n556(x)
- else
- fun_l28_n194(x)
- end
-end
-
-def fun_l27_n386(x)
- if (x < 1)
- fun_l28_n180(x)
- else
- fun_l28_n648(x)
- end
-end
-
-def fun_l27_n387(x)
- if (x < 1)
- fun_l28_n898(x)
- else
- fun_l28_n499(x)
- end
-end
-
-def fun_l27_n388(x)
- if (x < 1)
- fun_l28_n720(x)
- else
- fun_l28_n996(x)
- end
-end
-
-def fun_l27_n389(x)
- if (x < 1)
- fun_l28_n743(x)
- else
- fun_l28_n781(x)
- end
-end
-
-def fun_l27_n390(x)
- if (x < 1)
- fun_l28_n372(x)
- else
- fun_l28_n907(x)
- end
-end
-
-def fun_l27_n391(x)
- if (x < 1)
- fun_l28_n893(x)
- else
- fun_l28_n911(x)
- end
-end
-
-def fun_l27_n392(x)
- if (x < 1)
- fun_l28_n304(x)
- else
- fun_l28_n164(x)
- end
-end
-
-def fun_l27_n393(x)
- if (x < 1)
- fun_l28_n212(x)
- else
- fun_l28_n575(x)
- end
-end
-
-def fun_l27_n394(x)
- if (x < 1)
- fun_l28_n279(x)
- else
- fun_l28_n306(x)
- end
-end
-
-def fun_l27_n395(x)
- if (x < 1)
- fun_l28_n662(x)
- else
- fun_l28_n838(x)
- end
-end
-
-def fun_l27_n396(x)
- if (x < 1)
- fun_l28_n882(x)
- else
- fun_l28_n321(x)
- end
-end
-
-def fun_l27_n397(x)
- if (x < 1)
- fun_l28_n996(x)
- else
- fun_l28_n170(x)
- end
-end
-
-def fun_l27_n398(x)
- if (x < 1)
- fun_l28_n309(x)
- else
- fun_l28_n805(x)
- end
-end
-
-def fun_l27_n399(x)
- if (x < 1)
- fun_l28_n584(x)
- else
- fun_l28_n304(x)
- end
-end
-
-def fun_l27_n400(x)
- if (x < 1)
- fun_l28_n575(x)
- else
- fun_l28_n405(x)
- end
-end
-
-def fun_l27_n401(x)
- if (x < 1)
- fun_l28_n507(x)
- else
- fun_l28_n773(x)
- end
-end
-
-def fun_l27_n402(x)
- if (x < 1)
- fun_l28_n759(x)
- else
- fun_l28_n583(x)
- end
-end
-
-def fun_l27_n403(x)
- if (x < 1)
- fun_l28_n689(x)
- else
- fun_l28_n511(x)
- end
-end
-
-def fun_l27_n404(x)
- if (x < 1)
- fun_l28_n706(x)
- else
- fun_l28_n258(x)
- end
-end
-
-def fun_l27_n405(x)
- if (x < 1)
- fun_l28_n736(x)
- else
- fun_l28_n482(x)
- end
-end
-
-def fun_l27_n406(x)
- if (x < 1)
- fun_l28_n851(x)
- else
- fun_l28_n898(x)
- end
-end
-
-def fun_l27_n407(x)
- if (x < 1)
- fun_l28_n86(x)
- else
- fun_l28_n913(x)
- end
-end
-
-def fun_l27_n408(x)
- if (x < 1)
- fun_l28_n277(x)
- else
- fun_l28_n960(x)
- end
-end
-
-def fun_l27_n409(x)
- if (x < 1)
- fun_l28_n137(x)
- else
- fun_l28_n789(x)
- end
-end
-
-def fun_l27_n410(x)
- if (x < 1)
- fun_l28_n23(x)
- else
- fun_l28_n633(x)
- end
-end
-
-def fun_l27_n411(x)
- if (x < 1)
- fun_l28_n246(x)
- else
- fun_l28_n560(x)
- end
-end
-
-def fun_l27_n412(x)
- if (x < 1)
- fun_l28_n218(x)
- else
- fun_l28_n66(x)
- end
-end
-
-def fun_l27_n413(x)
- if (x < 1)
- fun_l28_n680(x)
- else
- fun_l28_n9(x)
- end
-end
-
-def fun_l27_n414(x)
- if (x < 1)
- fun_l28_n693(x)
- else
- fun_l28_n625(x)
- end
-end
-
-def fun_l27_n415(x)
- if (x < 1)
- fun_l28_n560(x)
- else
- fun_l28_n739(x)
- end
-end
-
-def fun_l27_n416(x)
- if (x < 1)
- fun_l28_n467(x)
- else
- fun_l28_n542(x)
- end
-end
-
-def fun_l27_n417(x)
- if (x < 1)
- fun_l28_n364(x)
- else
- fun_l28_n468(x)
- end
-end
-
-def fun_l27_n418(x)
- if (x < 1)
- fun_l28_n123(x)
- else
- fun_l28_n775(x)
- end
-end
-
-def fun_l27_n419(x)
- if (x < 1)
- fun_l28_n17(x)
- else
- fun_l28_n875(x)
- end
-end
-
-def fun_l27_n420(x)
- if (x < 1)
- fun_l28_n596(x)
- else
- fun_l28_n163(x)
- end
-end
-
-def fun_l27_n421(x)
- if (x < 1)
- fun_l28_n638(x)
- else
- fun_l28_n426(x)
- end
-end
-
-def fun_l27_n422(x)
- if (x < 1)
- fun_l28_n637(x)
- else
- fun_l28_n696(x)
- end
-end
-
-def fun_l27_n423(x)
- if (x < 1)
- fun_l28_n299(x)
- else
- fun_l28_n218(x)
- end
-end
-
-def fun_l27_n424(x)
- if (x < 1)
- fun_l28_n683(x)
- else
- fun_l28_n248(x)
- end
-end
-
-def fun_l27_n425(x)
- if (x < 1)
- fun_l28_n272(x)
- else
- fun_l28_n359(x)
- end
-end
-
-def fun_l27_n426(x)
- if (x < 1)
- fun_l28_n327(x)
- else
- fun_l28_n984(x)
- end
-end
-
-def fun_l27_n427(x)
- if (x < 1)
- fun_l28_n912(x)
- else
- fun_l28_n393(x)
- end
-end
-
-def fun_l27_n428(x)
- if (x < 1)
- fun_l28_n842(x)
- else
- fun_l28_n919(x)
- end
-end
-
-def fun_l27_n429(x)
- if (x < 1)
- fun_l28_n721(x)
- else
- fun_l28_n36(x)
- end
-end
-
-def fun_l27_n430(x)
- if (x < 1)
- fun_l28_n16(x)
- else
- fun_l28_n418(x)
- end
-end
-
-def fun_l27_n431(x)
- if (x < 1)
- fun_l28_n747(x)
- else
- fun_l28_n132(x)
- end
-end
-
-def fun_l27_n432(x)
- if (x < 1)
- fun_l28_n906(x)
- else
- fun_l28_n718(x)
- end
-end
-
-def fun_l27_n433(x)
- if (x < 1)
- fun_l28_n508(x)
- else
- fun_l28_n862(x)
- end
-end
-
-def fun_l27_n434(x)
- if (x < 1)
- fun_l28_n478(x)
- else
- fun_l28_n542(x)
- end
-end
-
-def fun_l27_n435(x)
- if (x < 1)
- fun_l28_n186(x)
- else
- fun_l28_n976(x)
- end
-end
-
-def fun_l27_n436(x)
- if (x < 1)
- fun_l28_n637(x)
- else
- fun_l28_n49(x)
- end
-end
-
-def fun_l27_n437(x)
- if (x < 1)
- fun_l28_n242(x)
- else
- fun_l28_n774(x)
- end
-end
-
-def fun_l27_n438(x)
- if (x < 1)
- fun_l28_n303(x)
- else
- fun_l28_n175(x)
- end
-end
-
-def fun_l27_n439(x)
- if (x < 1)
- fun_l28_n851(x)
- else
- fun_l28_n908(x)
- end
-end
-
-def fun_l27_n440(x)
- if (x < 1)
- fun_l28_n139(x)
- else
- fun_l28_n473(x)
- end
-end
-
-def fun_l27_n441(x)
- if (x < 1)
- fun_l28_n70(x)
- else
- fun_l28_n406(x)
- end
-end
-
-def fun_l27_n442(x)
- if (x < 1)
- fun_l28_n368(x)
- else
- fun_l28_n624(x)
- end
-end
-
-def fun_l27_n443(x)
- if (x < 1)
- fun_l28_n900(x)
- else
- fun_l28_n173(x)
- end
-end
-
-def fun_l27_n444(x)
- if (x < 1)
- fun_l28_n646(x)
- else
- fun_l28_n733(x)
- end
-end
-
-def fun_l27_n445(x)
- if (x < 1)
- fun_l28_n859(x)
- else
- fun_l28_n100(x)
- end
-end
-
-def fun_l27_n446(x)
- if (x < 1)
- fun_l28_n418(x)
- else
- fun_l28_n765(x)
- end
-end
-
-def fun_l27_n447(x)
- if (x < 1)
- fun_l28_n204(x)
- else
- fun_l28_n541(x)
- end
-end
-
-def fun_l27_n448(x)
- if (x < 1)
- fun_l28_n192(x)
- else
- fun_l28_n414(x)
- end
-end
-
-def fun_l27_n449(x)
- if (x < 1)
- fun_l28_n904(x)
- else
- fun_l28_n247(x)
- end
-end
-
-def fun_l27_n450(x)
- if (x < 1)
- fun_l28_n528(x)
- else
- fun_l28_n24(x)
- end
-end
-
-def fun_l27_n451(x)
- if (x < 1)
- fun_l28_n312(x)
- else
- fun_l28_n48(x)
- end
-end
-
-def fun_l27_n452(x)
- if (x < 1)
- fun_l28_n169(x)
- else
- fun_l28_n37(x)
- end
-end
-
-def fun_l27_n453(x)
- if (x < 1)
- fun_l28_n713(x)
- else
- fun_l28_n168(x)
- end
-end
-
-def fun_l27_n454(x)
- if (x < 1)
- fun_l28_n748(x)
- else
- fun_l28_n213(x)
- end
-end
-
-def fun_l27_n455(x)
- if (x < 1)
- fun_l28_n157(x)
- else
- fun_l28_n444(x)
- end
-end
-
-def fun_l27_n456(x)
- if (x < 1)
- fun_l28_n32(x)
- else
- fun_l28_n475(x)
- end
-end
-
-def fun_l27_n457(x)
- if (x < 1)
- fun_l28_n252(x)
- else
- fun_l28_n730(x)
- end
-end
-
-def fun_l27_n458(x)
- if (x < 1)
- fun_l28_n261(x)
- else
- fun_l28_n576(x)
- end
-end
-
-def fun_l27_n459(x)
- if (x < 1)
- fun_l28_n859(x)
- else
- fun_l28_n401(x)
- end
-end
-
-def fun_l27_n460(x)
- if (x < 1)
- fun_l28_n394(x)
- else
- fun_l28_n10(x)
- end
-end
-
-def fun_l27_n461(x)
- if (x < 1)
- fun_l28_n89(x)
- else
- fun_l28_n402(x)
- end
-end
-
-def fun_l27_n462(x)
- if (x < 1)
- fun_l28_n100(x)
- else
- fun_l28_n207(x)
- end
-end
-
-def fun_l27_n463(x)
- if (x < 1)
- fun_l28_n907(x)
- else
- fun_l28_n354(x)
- end
-end
-
-def fun_l27_n464(x)
- if (x < 1)
- fun_l28_n612(x)
- else
- fun_l28_n31(x)
- end
-end
-
-def fun_l27_n465(x)
- if (x < 1)
- fun_l28_n622(x)
- else
- fun_l28_n342(x)
- end
-end
-
-def fun_l27_n466(x)
- if (x < 1)
- fun_l28_n373(x)
- else
- fun_l28_n831(x)
- end
-end
-
-def fun_l27_n467(x)
- if (x < 1)
- fun_l28_n858(x)
- else
- fun_l28_n233(x)
- end
-end
-
-def fun_l27_n468(x)
- if (x < 1)
- fun_l28_n104(x)
- else
- fun_l28_n918(x)
- end
-end
-
-def fun_l27_n469(x)
- if (x < 1)
- fun_l28_n778(x)
- else
- fun_l28_n758(x)
- end
-end
-
-def fun_l27_n470(x)
- if (x < 1)
- fun_l28_n695(x)
- else
- fun_l28_n217(x)
- end
-end
-
-def fun_l27_n471(x)
- if (x < 1)
- fun_l28_n781(x)
- else
- fun_l28_n584(x)
- end
-end
-
-def fun_l27_n472(x)
- if (x < 1)
- fun_l28_n883(x)
- else
- fun_l28_n152(x)
- end
-end
-
-def fun_l27_n473(x)
- if (x < 1)
- fun_l28_n525(x)
- else
- fun_l28_n369(x)
- end
-end
-
-def fun_l27_n474(x)
- if (x < 1)
- fun_l28_n42(x)
- else
- fun_l28_n299(x)
- end
-end
-
-def fun_l27_n475(x)
- if (x < 1)
- fun_l28_n174(x)
- else
- fun_l28_n664(x)
- end
-end
-
-def fun_l27_n476(x)
- if (x < 1)
- fun_l28_n489(x)
- else
- fun_l28_n296(x)
- end
-end
-
-def fun_l27_n477(x)
- if (x < 1)
- fun_l28_n725(x)
- else
- fun_l28_n384(x)
- end
-end
-
-def fun_l27_n478(x)
- if (x < 1)
- fun_l28_n138(x)
- else
- fun_l28_n812(x)
- end
-end
-
-def fun_l27_n479(x)
- if (x < 1)
- fun_l28_n161(x)
- else
- fun_l28_n786(x)
- end
-end
-
-def fun_l27_n480(x)
- if (x < 1)
- fun_l28_n751(x)
- else
- fun_l28_n91(x)
- end
-end
-
-def fun_l27_n481(x)
- if (x < 1)
- fun_l28_n434(x)
- else
- fun_l28_n507(x)
- end
-end
-
-def fun_l27_n482(x)
- if (x < 1)
- fun_l28_n101(x)
- else
- fun_l28_n809(x)
- end
-end
-
-def fun_l27_n483(x)
- if (x < 1)
- fun_l28_n79(x)
- else
- fun_l28_n565(x)
- end
-end
-
-def fun_l27_n484(x)
- if (x < 1)
- fun_l28_n681(x)
- else
- fun_l28_n390(x)
- end
-end
-
-def fun_l27_n485(x)
- if (x < 1)
- fun_l28_n950(x)
- else
- fun_l28_n262(x)
- end
-end
-
-def fun_l27_n486(x)
- if (x < 1)
- fun_l28_n188(x)
- else
- fun_l28_n731(x)
- end
-end
-
-def fun_l27_n487(x)
- if (x < 1)
- fun_l28_n724(x)
- else
- fun_l28_n806(x)
- end
-end
-
-def fun_l27_n488(x)
- if (x < 1)
- fun_l28_n680(x)
- else
- fun_l28_n475(x)
- end
-end
-
-def fun_l27_n489(x)
- if (x < 1)
- fun_l28_n662(x)
- else
- fun_l28_n242(x)
- end
-end
-
-def fun_l27_n490(x)
- if (x < 1)
- fun_l28_n578(x)
- else
- fun_l28_n534(x)
- end
-end
-
-def fun_l27_n491(x)
- if (x < 1)
- fun_l28_n173(x)
- else
- fun_l28_n239(x)
- end
-end
-
-def fun_l27_n492(x)
- if (x < 1)
- fun_l28_n724(x)
- else
- fun_l28_n579(x)
- end
-end
-
-def fun_l27_n493(x)
- if (x < 1)
- fun_l28_n449(x)
- else
- fun_l28_n44(x)
- end
-end
-
-def fun_l27_n494(x)
- if (x < 1)
- fun_l28_n180(x)
- else
- fun_l28_n836(x)
- end
-end
-
-def fun_l27_n495(x)
- if (x < 1)
- fun_l28_n232(x)
- else
- fun_l28_n371(x)
- end
-end
-
-def fun_l27_n496(x)
- if (x < 1)
- fun_l28_n558(x)
- else
- fun_l28_n904(x)
- end
-end
-
-def fun_l27_n497(x)
- if (x < 1)
- fun_l28_n324(x)
- else
- fun_l28_n85(x)
- end
-end
-
-def fun_l27_n498(x)
- if (x < 1)
- fun_l28_n272(x)
- else
- fun_l28_n469(x)
- end
-end
-
-def fun_l27_n499(x)
- if (x < 1)
- fun_l28_n232(x)
- else
- fun_l28_n899(x)
- end
-end
-
-def fun_l27_n500(x)
- if (x < 1)
- fun_l28_n654(x)
- else
- fun_l28_n390(x)
- end
-end
-
-def fun_l27_n501(x)
- if (x < 1)
- fun_l28_n84(x)
- else
- fun_l28_n74(x)
- end
-end
-
-def fun_l27_n502(x)
- if (x < 1)
- fun_l28_n799(x)
- else
- fun_l28_n224(x)
- end
-end
-
-def fun_l27_n503(x)
- if (x < 1)
- fun_l28_n635(x)
- else
- fun_l28_n770(x)
- end
-end
-
-def fun_l27_n504(x)
- if (x < 1)
- fun_l28_n734(x)
- else
- fun_l28_n451(x)
- end
-end
-
-def fun_l27_n505(x)
- if (x < 1)
- fun_l28_n340(x)
- else
- fun_l28_n318(x)
- end
-end
-
-def fun_l27_n506(x)
- if (x < 1)
- fun_l28_n521(x)
- else
- fun_l28_n590(x)
- end
-end
-
-def fun_l27_n507(x)
- if (x < 1)
- fun_l28_n727(x)
- else
- fun_l28_n825(x)
- end
-end
-
-def fun_l27_n508(x)
- if (x < 1)
- fun_l28_n923(x)
- else
- fun_l28_n413(x)
- end
-end
-
-def fun_l27_n509(x)
- if (x < 1)
- fun_l28_n825(x)
- else
- fun_l28_n235(x)
- end
-end
-
-def fun_l27_n510(x)
- if (x < 1)
- fun_l28_n212(x)
- else
- fun_l28_n509(x)
- end
-end
-
-def fun_l27_n511(x)
- if (x < 1)
- fun_l28_n6(x)
- else
- fun_l28_n16(x)
- end
-end
-
-def fun_l27_n512(x)
- if (x < 1)
- fun_l28_n409(x)
- else
- fun_l28_n473(x)
- end
-end
-
-def fun_l27_n513(x)
- if (x < 1)
- fun_l28_n220(x)
- else
- fun_l28_n383(x)
- end
-end
-
-def fun_l27_n514(x)
- if (x < 1)
- fun_l28_n338(x)
- else
- fun_l28_n32(x)
- end
-end
-
-def fun_l27_n515(x)
- if (x < 1)
- fun_l28_n218(x)
- else
- fun_l28_n307(x)
- end
-end
-
-def fun_l27_n516(x)
- if (x < 1)
- fun_l28_n591(x)
- else
- fun_l28_n545(x)
- end
-end
-
-def fun_l27_n517(x)
- if (x < 1)
- fun_l28_n405(x)
- else
- fun_l28_n241(x)
- end
-end
-
-def fun_l27_n518(x)
- if (x < 1)
- fun_l28_n545(x)
- else
- fun_l28_n215(x)
- end
-end
-
-def fun_l27_n519(x)
- if (x < 1)
- fun_l28_n989(x)
- else
- fun_l28_n480(x)
- end
-end
-
-def fun_l27_n520(x)
- if (x < 1)
- fun_l28_n479(x)
- else
- fun_l28_n869(x)
- end
-end
-
-def fun_l27_n521(x)
- if (x < 1)
- fun_l28_n376(x)
- else
- fun_l28_n216(x)
- end
-end
-
-def fun_l27_n522(x)
- if (x < 1)
- fun_l28_n74(x)
- else
- fun_l28_n370(x)
- end
-end
-
-def fun_l27_n523(x)
- if (x < 1)
- fun_l28_n665(x)
- else
- fun_l28_n982(x)
- end
-end
-
-def fun_l27_n524(x)
- if (x < 1)
- fun_l28_n412(x)
- else
- fun_l28_n515(x)
- end
-end
-
-def fun_l27_n525(x)
- if (x < 1)
- fun_l28_n421(x)
- else
- fun_l28_n718(x)
- end
-end
-
-def fun_l27_n526(x)
- if (x < 1)
- fun_l28_n914(x)
- else
- fun_l28_n297(x)
- end
-end
-
-def fun_l27_n527(x)
- if (x < 1)
- fun_l28_n134(x)
- else
- fun_l28_n602(x)
- end
-end
-
-def fun_l27_n528(x)
- if (x < 1)
- fun_l28_n0(x)
- else
- fun_l28_n23(x)
- end
-end
-
-def fun_l27_n529(x)
- if (x < 1)
- fun_l28_n610(x)
- else
- fun_l28_n736(x)
- end
-end
-
-def fun_l27_n530(x)
- if (x < 1)
- fun_l28_n350(x)
- else
- fun_l28_n51(x)
- end
-end
-
-def fun_l27_n531(x)
- if (x < 1)
- fun_l28_n648(x)
- else
- fun_l28_n382(x)
- end
-end
-
-def fun_l27_n532(x)
- if (x < 1)
- fun_l28_n432(x)
- else
- fun_l28_n872(x)
- end
-end
-
-def fun_l27_n533(x)
- if (x < 1)
- fun_l28_n747(x)
- else
- fun_l28_n588(x)
- end
-end
-
-def fun_l27_n534(x)
- if (x < 1)
- fun_l28_n763(x)
- else
- fun_l28_n846(x)
- end
-end
-
-def fun_l27_n535(x)
- if (x < 1)
- fun_l28_n300(x)
- else
- fun_l28_n26(x)
- end
-end
-
-def fun_l27_n536(x)
- if (x < 1)
- fun_l28_n851(x)
- else
- fun_l28_n907(x)
- end
-end
-
-def fun_l27_n537(x)
- if (x < 1)
- fun_l28_n759(x)
- else
- fun_l28_n927(x)
- end
-end
-
-def fun_l27_n538(x)
- if (x < 1)
- fun_l28_n188(x)
- else
- fun_l28_n199(x)
- end
-end
-
-def fun_l27_n539(x)
- if (x < 1)
- fun_l28_n496(x)
- else
- fun_l28_n664(x)
- end
-end
-
-def fun_l27_n540(x)
- if (x < 1)
- fun_l28_n595(x)
- else
- fun_l28_n651(x)
- end
-end
-
-def fun_l27_n541(x)
- if (x < 1)
- fun_l28_n678(x)
- else
- fun_l28_n172(x)
- end
-end
-
-def fun_l27_n542(x)
- if (x < 1)
- fun_l28_n37(x)
- else
- fun_l28_n255(x)
- end
-end
-
-def fun_l27_n543(x)
- if (x < 1)
- fun_l28_n58(x)
- else
- fun_l28_n367(x)
- end
-end
-
-def fun_l27_n544(x)
- if (x < 1)
- fun_l28_n275(x)
- else
- fun_l28_n925(x)
- end
-end
-
-def fun_l27_n545(x)
- if (x < 1)
- fun_l28_n469(x)
- else
- fun_l28_n774(x)
- end
-end
-
-def fun_l27_n546(x)
- if (x < 1)
- fun_l28_n508(x)
- else
- fun_l28_n267(x)
- end
-end
-
-def fun_l27_n547(x)
- if (x < 1)
- fun_l28_n288(x)
- else
- fun_l28_n64(x)
- end
-end
-
-def fun_l27_n548(x)
- if (x < 1)
- fun_l28_n941(x)
- else
- fun_l28_n632(x)
- end
-end
-
-def fun_l27_n549(x)
- if (x < 1)
- fun_l28_n816(x)
- else
- fun_l28_n551(x)
- end
-end
-
-def fun_l27_n550(x)
- if (x < 1)
- fun_l28_n848(x)
- else
- fun_l28_n778(x)
- end
-end
-
-def fun_l27_n551(x)
- if (x < 1)
- fun_l28_n273(x)
- else
- fun_l28_n846(x)
- end
-end
-
-def fun_l27_n552(x)
- if (x < 1)
- fun_l28_n18(x)
- else
- fun_l28_n530(x)
- end
-end
-
-def fun_l27_n553(x)
- if (x < 1)
- fun_l28_n673(x)
- else
- fun_l28_n824(x)
- end
-end
-
-def fun_l27_n554(x)
- if (x < 1)
- fun_l28_n376(x)
- else
- fun_l28_n32(x)
- end
-end
-
-def fun_l27_n555(x)
- if (x < 1)
- fun_l28_n500(x)
- else
- fun_l28_n389(x)
- end
-end
-
-def fun_l27_n556(x)
- if (x < 1)
- fun_l28_n712(x)
- else
- fun_l28_n729(x)
- end
-end
-
-def fun_l27_n557(x)
- if (x < 1)
- fun_l28_n951(x)
- else
- fun_l28_n846(x)
- end
-end
-
-def fun_l27_n558(x)
- if (x < 1)
- fun_l28_n269(x)
- else
- fun_l28_n538(x)
- end
-end
-
-def fun_l27_n559(x)
- if (x < 1)
- fun_l28_n72(x)
- else
- fun_l28_n711(x)
- end
-end
-
-def fun_l27_n560(x)
- if (x < 1)
- fun_l28_n510(x)
- else
- fun_l28_n718(x)
- end
-end
-
-def fun_l27_n561(x)
- if (x < 1)
- fun_l28_n123(x)
- else
- fun_l28_n983(x)
- end
-end
-
-def fun_l27_n562(x)
- if (x < 1)
- fun_l28_n486(x)
- else
- fun_l28_n796(x)
- end
-end
-
-def fun_l27_n563(x)
- if (x < 1)
- fun_l28_n925(x)
- else
- fun_l28_n499(x)
- end
-end
-
-def fun_l27_n564(x)
- if (x < 1)
- fun_l28_n811(x)
- else
- fun_l28_n604(x)
- end
-end
-
-def fun_l27_n565(x)
- if (x < 1)
- fun_l28_n685(x)
- else
- fun_l28_n721(x)
- end
-end
-
-def fun_l27_n566(x)
- if (x < 1)
- fun_l28_n946(x)
- else
- fun_l28_n890(x)
- end
-end
-
-def fun_l27_n567(x)
- if (x < 1)
- fun_l28_n646(x)
- else
- fun_l28_n2(x)
- end
-end
-
-def fun_l27_n568(x)
- if (x < 1)
- fun_l28_n570(x)
- else
- fun_l28_n427(x)
- end
-end
-
-def fun_l27_n569(x)
- if (x < 1)
- fun_l28_n435(x)
- else
- fun_l28_n877(x)
- end
-end
-
-def fun_l27_n570(x)
- if (x < 1)
- fun_l28_n67(x)
- else
- fun_l28_n879(x)
- end
-end
-
-def fun_l27_n571(x)
- if (x < 1)
- fun_l28_n278(x)
- else
- fun_l28_n90(x)
- end
-end
-
-def fun_l27_n572(x)
- if (x < 1)
- fun_l28_n748(x)
- else
- fun_l28_n202(x)
- end
-end
-
-def fun_l27_n573(x)
- if (x < 1)
- fun_l28_n795(x)
- else
- fun_l28_n862(x)
- end
-end
-
-def fun_l27_n574(x)
- if (x < 1)
- fun_l28_n208(x)
- else
- fun_l28_n979(x)
- end
-end
-
-def fun_l27_n575(x)
- if (x < 1)
- fun_l28_n134(x)
- else
- fun_l28_n208(x)
- end
-end
-
-def fun_l27_n576(x)
- if (x < 1)
- fun_l28_n591(x)
- else
- fun_l28_n400(x)
- end
-end
-
-def fun_l27_n577(x)
- if (x < 1)
- fun_l28_n579(x)
- else
- fun_l28_n675(x)
- end
-end
-
-def fun_l27_n578(x)
- if (x < 1)
- fun_l28_n186(x)
- else
- fun_l28_n643(x)
- end
-end
-
-def fun_l27_n579(x)
- if (x < 1)
- fun_l28_n974(x)
- else
- fun_l28_n716(x)
- end
-end
-
-def fun_l27_n580(x)
- if (x < 1)
- fun_l28_n168(x)
- else
- fun_l28_n10(x)
- end
-end
-
-def fun_l27_n581(x)
- if (x < 1)
- fun_l28_n124(x)
- else
- fun_l28_n657(x)
- end
-end
-
-def fun_l27_n582(x)
- if (x < 1)
- fun_l28_n240(x)
- else
- fun_l28_n335(x)
- end
-end
-
-def fun_l27_n583(x)
- if (x < 1)
- fun_l28_n346(x)
- else
- fun_l28_n170(x)
- end
-end
-
-def fun_l27_n584(x)
- if (x < 1)
- fun_l28_n854(x)
- else
- fun_l28_n681(x)
- end
-end
-
-def fun_l27_n585(x)
- if (x < 1)
- fun_l28_n515(x)
- else
- fun_l28_n884(x)
- end
-end
-
-def fun_l27_n586(x)
- if (x < 1)
- fun_l28_n901(x)
- else
- fun_l28_n12(x)
- end
-end
-
-def fun_l27_n587(x)
- if (x < 1)
- fun_l28_n300(x)
- else
- fun_l28_n205(x)
- end
-end
-
-def fun_l27_n588(x)
- if (x < 1)
- fun_l28_n52(x)
- else
- fun_l28_n823(x)
- end
-end
-
-def fun_l27_n589(x)
- if (x < 1)
- fun_l28_n170(x)
- else
- fun_l28_n588(x)
- end
-end
-
-def fun_l27_n590(x)
- if (x < 1)
- fun_l28_n777(x)
- else
- fun_l28_n232(x)
- end
-end
-
-def fun_l27_n591(x)
- if (x < 1)
- fun_l28_n234(x)
- else
- fun_l28_n552(x)
- end
-end
-
-def fun_l27_n592(x)
- if (x < 1)
- fun_l28_n83(x)
- else
- fun_l28_n736(x)
- end
-end
-
-def fun_l27_n593(x)
- if (x < 1)
- fun_l28_n623(x)
- else
- fun_l28_n663(x)
- end
-end
-
-def fun_l27_n594(x)
- if (x < 1)
- fun_l28_n137(x)
- else
- fun_l28_n858(x)
- end
-end
-
-def fun_l27_n595(x)
- if (x < 1)
- fun_l28_n238(x)
- else
- fun_l28_n11(x)
- end
-end
-
-def fun_l27_n596(x)
- if (x < 1)
- fun_l28_n692(x)
- else
- fun_l28_n815(x)
- end
-end
-
-def fun_l27_n597(x)
- if (x < 1)
- fun_l28_n259(x)
- else
- fun_l28_n535(x)
- end
-end
-
-def fun_l27_n598(x)
- if (x < 1)
- fun_l28_n135(x)
- else
- fun_l28_n567(x)
- end
-end
-
-def fun_l27_n599(x)
- if (x < 1)
- fun_l28_n725(x)
- else
- fun_l28_n393(x)
- end
-end
-
-def fun_l27_n600(x)
- if (x < 1)
- fun_l28_n790(x)
- else
- fun_l28_n478(x)
- end
-end
-
-def fun_l27_n601(x)
- if (x < 1)
- fun_l28_n248(x)
- else
- fun_l28_n62(x)
- end
-end
-
-def fun_l27_n602(x)
- if (x < 1)
- fun_l28_n790(x)
- else
- fun_l28_n854(x)
- end
-end
-
-def fun_l27_n603(x)
- if (x < 1)
- fun_l28_n345(x)
- else
- fun_l28_n795(x)
- end
-end
-
-def fun_l27_n604(x)
- if (x < 1)
- fun_l28_n689(x)
- else
- fun_l28_n357(x)
- end
-end
-
-def fun_l27_n605(x)
- if (x < 1)
- fun_l28_n314(x)
- else
- fun_l28_n886(x)
- end
-end
-
-def fun_l27_n606(x)
- if (x < 1)
- fun_l28_n401(x)
- else
- fun_l28_n688(x)
- end
-end
-
-def fun_l27_n607(x)
- if (x < 1)
- fun_l28_n386(x)
- else
- fun_l28_n126(x)
- end
-end
-
-def fun_l27_n608(x)
- if (x < 1)
- fun_l28_n232(x)
- else
- fun_l28_n387(x)
- end
-end
-
-def fun_l27_n609(x)
- if (x < 1)
- fun_l28_n938(x)
- else
- fun_l28_n657(x)
- end
-end
-
-def fun_l27_n610(x)
- if (x < 1)
- fun_l28_n40(x)
- else
- fun_l28_n141(x)
- end
-end
-
-def fun_l27_n611(x)
- if (x < 1)
- fun_l28_n909(x)
- else
- fun_l28_n265(x)
- end
-end
-
-def fun_l27_n612(x)
- if (x < 1)
- fun_l28_n486(x)
- else
- fun_l28_n470(x)
- end
-end
-
-def fun_l27_n613(x)
- if (x < 1)
- fun_l28_n959(x)
- else
- fun_l28_n793(x)
- end
-end
-
-def fun_l27_n614(x)
- if (x < 1)
- fun_l28_n422(x)
- else
- fun_l28_n246(x)
- end
-end
-
-def fun_l27_n615(x)
- if (x < 1)
- fun_l28_n860(x)
- else
- fun_l28_n315(x)
- end
-end
-
-def fun_l27_n616(x)
- if (x < 1)
- fun_l28_n529(x)
- else
- fun_l28_n647(x)
- end
-end
-
-def fun_l27_n617(x)
- if (x < 1)
- fun_l28_n860(x)
- else
- fun_l28_n860(x)
- end
-end
-
-def fun_l27_n618(x)
- if (x < 1)
- fun_l28_n147(x)
- else
- fun_l28_n814(x)
- end
-end
-
-def fun_l27_n619(x)
- if (x < 1)
- fun_l28_n828(x)
- else
- fun_l28_n854(x)
- end
-end
-
-def fun_l27_n620(x)
- if (x < 1)
- fun_l28_n464(x)
- else
- fun_l28_n838(x)
- end
-end
-
-def fun_l27_n621(x)
- if (x < 1)
- fun_l28_n89(x)
- else
- fun_l28_n884(x)
- end
-end
-
-def fun_l27_n622(x)
- if (x < 1)
- fun_l28_n933(x)
- else
- fun_l28_n889(x)
- end
-end
-
-def fun_l27_n623(x)
- if (x < 1)
- fun_l28_n638(x)
- else
- fun_l28_n246(x)
- end
-end
-
-def fun_l27_n624(x)
- if (x < 1)
- fun_l28_n724(x)
- else
- fun_l28_n305(x)
- end
-end
-
-def fun_l27_n625(x)
- if (x < 1)
- fun_l28_n927(x)
- else
- fun_l28_n772(x)
- end
-end
-
-def fun_l27_n626(x)
- if (x < 1)
- fun_l28_n612(x)
- else
- fun_l28_n953(x)
- end
-end
-
-def fun_l27_n627(x)
- if (x < 1)
- fun_l28_n694(x)
- else
- fun_l28_n529(x)
- end
-end
-
-def fun_l27_n628(x)
- if (x < 1)
- fun_l28_n136(x)
- else
- fun_l28_n977(x)
- end
-end
-
-def fun_l27_n629(x)
- if (x < 1)
- fun_l28_n108(x)
- else
- fun_l28_n940(x)
- end
-end
-
-def fun_l27_n630(x)
- if (x < 1)
- fun_l28_n773(x)
- else
- fun_l28_n62(x)
- end
-end
-
-def fun_l27_n631(x)
- if (x < 1)
- fun_l28_n531(x)
- else
- fun_l28_n68(x)
- end
-end
-
-def fun_l27_n632(x)
- if (x < 1)
- fun_l28_n910(x)
- else
- fun_l28_n638(x)
- end
-end
-
-def fun_l27_n633(x)
- if (x < 1)
- fun_l28_n943(x)
- else
- fun_l28_n530(x)
- end
-end
-
-def fun_l27_n634(x)
- if (x < 1)
- fun_l28_n161(x)
- else
- fun_l28_n842(x)
- end
-end
-
-def fun_l27_n635(x)
- if (x < 1)
- fun_l28_n252(x)
- else
- fun_l28_n659(x)
- end
-end
-
-def fun_l27_n636(x)
- if (x < 1)
- fun_l28_n739(x)
- else
- fun_l28_n116(x)
- end
-end
-
-def fun_l27_n637(x)
- if (x < 1)
- fun_l28_n528(x)
- else
- fun_l28_n451(x)
- end
-end
-
-def fun_l27_n638(x)
- if (x < 1)
- fun_l28_n772(x)
- else
- fun_l28_n163(x)
- end
-end
-
-def fun_l27_n639(x)
- if (x < 1)
- fun_l28_n300(x)
- else
- fun_l28_n174(x)
- end
-end
-
-def fun_l27_n640(x)
- if (x < 1)
- fun_l28_n967(x)
- else
- fun_l28_n437(x)
- end
-end
-
-def fun_l27_n641(x)
- if (x < 1)
- fun_l28_n716(x)
- else
- fun_l28_n855(x)
- end
-end
-
-def fun_l27_n642(x)
- if (x < 1)
- fun_l28_n510(x)
- else
- fun_l28_n958(x)
- end
-end
-
-def fun_l27_n643(x)
- if (x < 1)
- fun_l28_n57(x)
- else
- fun_l28_n347(x)
- end
-end
-
-def fun_l27_n644(x)
- if (x < 1)
- fun_l28_n145(x)
- else
- fun_l28_n652(x)
- end
-end
-
-def fun_l27_n645(x)
- if (x < 1)
- fun_l28_n730(x)
- else
- fun_l28_n388(x)
- end
-end
-
-def fun_l27_n646(x)
- if (x < 1)
- fun_l28_n409(x)
- else
- fun_l28_n394(x)
- end
-end
-
-def fun_l27_n647(x)
- if (x < 1)
- fun_l28_n484(x)
- else
- fun_l28_n754(x)
- end
-end
-
-def fun_l27_n648(x)
- if (x < 1)
- fun_l28_n888(x)
- else
- fun_l28_n229(x)
- end
-end
-
-def fun_l27_n649(x)
- if (x < 1)
- fun_l28_n1(x)
- else
- fun_l28_n995(x)
- end
-end
-
-def fun_l27_n650(x)
- if (x < 1)
- fun_l28_n992(x)
- else
- fun_l28_n522(x)
- end
-end
-
-def fun_l27_n651(x)
- if (x < 1)
- fun_l28_n69(x)
- else
- fun_l28_n696(x)
- end
-end
-
-def fun_l27_n652(x)
- if (x < 1)
- fun_l28_n496(x)
- else
- fun_l28_n47(x)
- end
-end
-
-def fun_l27_n653(x)
- if (x < 1)
- fun_l28_n176(x)
- else
- fun_l28_n830(x)
- end
-end
-
-def fun_l27_n654(x)
- if (x < 1)
- fun_l28_n277(x)
- else
- fun_l28_n311(x)
- end
-end
-
-def fun_l27_n655(x)
- if (x < 1)
- fun_l28_n994(x)
- else
- fun_l28_n518(x)
- end
-end
-
-def fun_l27_n656(x)
- if (x < 1)
- fun_l28_n238(x)
- else
- fun_l28_n99(x)
- end
-end
-
-def fun_l27_n657(x)
- if (x < 1)
- fun_l28_n636(x)
- else
- fun_l28_n734(x)
- end
-end
-
-def fun_l27_n658(x)
- if (x < 1)
- fun_l28_n796(x)
- else
- fun_l28_n109(x)
- end
-end
-
-def fun_l27_n659(x)
- if (x < 1)
- fun_l28_n271(x)
- else
- fun_l28_n348(x)
- end
-end
-
-def fun_l27_n660(x)
- if (x < 1)
- fun_l28_n847(x)
- else
- fun_l28_n926(x)
- end
-end
-
-def fun_l27_n661(x)
- if (x < 1)
- fun_l28_n559(x)
- else
- fun_l28_n636(x)
- end
-end
-
-def fun_l27_n662(x)
- if (x < 1)
- fun_l28_n528(x)
- else
- fun_l28_n0(x)
- end
-end
-
-def fun_l27_n663(x)
- if (x < 1)
- fun_l28_n835(x)
- else
- fun_l28_n41(x)
- end
-end
-
-def fun_l27_n664(x)
- if (x < 1)
- fun_l28_n135(x)
- else
- fun_l28_n356(x)
- end
-end
-
-def fun_l27_n665(x)
- if (x < 1)
- fun_l28_n825(x)
- else
- fun_l28_n55(x)
- end
-end
-
-def fun_l27_n666(x)
- if (x < 1)
- fun_l28_n659(x)
- else
- fun_l28_n384(x)
- end
-end
-
-def fun_l27_n667(x)
- if (x < 1)
- fun_l28_n604(x)
- else
- fun_l28_n870(x)
- end
-end
-
-def fun_l27_n668(x)
- if (x < 1)
- fun_l28_n136(x)
- else
- fun_l28_n343(x)
- end
-end
-
-def fun_l27_n669(x)
- if (x < 1)
- fun_l28_n206(x)
- else
- fun_l28_n341(x)
- end
-end
-
-def fun_l27_n670(x)
- if (x < 1)
- fun_l28_n947(x)
- else
- fun_l28_n926(x)
- end
-end
-
-def fun_l27_n671(x)
- if (x < 1)
- fun_l28_n303(x)
- else
- fun_l28_n79(x)
- end
-end
-
-def fun_l27_n672(x)
- if (x < 1)
- fun_l28_n181(x)
- else
- fun_l28_n937(x)
- end
-end
-
-def fun_l27_n673(x)
- if (x < 1)
- fun_l28_n301(x)
- else
- fun_l28_n687(x)
- end
-end
-
-def fun_l27_n674(x)
- if (x < 1)
- fun_l28_n992(x)
- else
- fun_l28_n814(x)
- end
-end
-
-def fun_l27_n675(x)
- if (x < 1)
- fun_l28_n239(x)
- else
- fun_l28_n248(x)
- end
-end
-
-def fun_l27_n676(x)
- if (x < 1)
- fun_l28_n728(x)
- else
- fun_l28_n368(x)
- end
-end
-
-def fun_l27_n677(x)
- if (x < 1)
- fun_l28_n411(x)
- else
- fun_l28_n773(x)
- end
-end
-
-def fun_l27_n678(x)
- if (x < 1)
- fun_l28_n522(x)
- else
- fun_l28_n754(x)
- end
-end
-
-def fun_l27_n679(x)
- if (x < 1)
- fun_l28_n538(x)
- else
- fun_l28_n976(x)
- end
-end
-
-def fun_l27_n680(x)
- if (x < 1)
- fun_l28_n744(x)
- else
- fun_l28_n752(x)
- end
-end
-
-def fun_l27_n681(x)
- if (x < 1)
- fun_l28_n658(x)
- else
- fun_l28_n19(x)
- end
-end
-
-def fun_l27_n682(x)
- if (x < 1)
- fun_l28_n843(x)
- else
- fun_l28_n657(x)
- end
-end
-
-def fun_l27_n683(x)
- if (x < 1)
- fun_l28_n256(x)
- else
- fun_l28_n744(x)
- end
-end
-
-def fun_l27_n684(x)
- if (x < 1)
- fun_l28_n380(x)
- else
- fun_l28_n223(x)
- end
-end
-
-def fun_l27_n685(x)
- if (x < 1)
- fun_l28_n762(x)
- else
- fun_l28_n122(x)
- end
-end
-
-def fun_l27_n686(x)
- if (x < 1)
- fun_l28_n860(x)
- else
- fun_l28_n51(x)
- end
-end
-
-def fun_l27_n687(x)
- if (x < 1)
- fun_l28_n210(x)
- else
- fun_l28_n658(x)
- end
-end
-
-def fun_l27_n688(x)
- if (x < 1)
- fun_l28_n250(x)
- else
- fun_l28_n165(x)
- end
-end
-
-def fun_l27_n689(x)
- if (x < 1)
- fun_l28_n955(x)
- else
- fun_l28_n862(x)
- end
-end
-
-def fun_l27_n690(x)
- if (x < 1)
- fun_l28_n592(x)
- else
- fun_l28_n54(x)
- end
-end
-
-def fun_l27_n691(x)
- if (x < 1)
- fun_l28_n558(x)
- else
- fun_l28_n750(x)
- end
-end
-
-def fun_l27_n692(x)
- if (x < 1)
- fun_l28_n307(x)
- else
- fun_l28_n143(x)
- end
-end
-
-def fun_l27_n693(x)
- if (x < 1)
- fun_l28_n625(x)
- else
- fun_l28_n743(x)
- end
-end
-
-def fun_l27_n694(x)
- if (x < 1)
- fun_l28_n883(x)
- else
- fun_l28_n567(x)
- end
-end
-
-def fun_l27_n695(x)
- if (x < 1)
- fun_l28_n889(x)
- else
- fun_l28_n805(x)
- end
-end
-
-def fun_l27_n696(x)
- if (x < 1)
- fun_l28_n366(x)
- else
- fun_l28_n112(x)
- end
-end
-
-def fun_l27_n697(x)
- if (x < 1)
- fun_l28_n746(x)
- else
- fun_l28_n924(x)
- end
-end
-
-def fun_l27_n698(x)
- if (x < 1)
- fun_l28_n694(x)
- else
- fun_l28_n703(x)
- end
-end
-
-def fun_l27_n699(x)
- if (x < 1)
- fun_l28_n304(x)
- else
- fun_l28_n200(x)
- end
-end
-
-def fun_l27_n700(x)
- if (x < 1)
- fun_l28_n477(x)
- else
- fun_l28_n851(x)
- end
-end
-
-def fun_l27_n701(x)
- if (x < 1)
- fun_l28_n940(x)
- else
- fun_l28_n8(x)
- end
-end
-
-def fun_l27_n702(x)
- if (x < 1)
- fun_l28_n675(x)
- else
- fun_l28_n631(x)
- end
-end
-
-def fun_l27_n703(x)
- if (x < 1)
- fun_l28_n683(x)
- else
- fun_l28_n191(x)
- end
-end
-
-def fun_l27_n704(x)
- if (x < 1)
- fun_l28_n431(x)
- else
- fun_l28_n573(x)
- end
-end
-
-def fun_l27_n705(x)
- if (x < 1)
- fun_l28_n86(x)
- else
- fun_l28_n89(x)
- end
-end
-
-def fun_l27_n706(x)
- if (x < 1)
- fun_l28_n315(x)
- else
- fun_l28_n388(x)
- end
-end
-
-def fun_l27_n707(x)
- if (x < 1)
- fun_l28_n94(x)
- else
- fun_l28_n176(x)
- end
-end
-
-def fun_l27_n708(x)
- if (x < 1)
- fun_l28_n391(x)
- else
- fun_l28_n187(x)
- end
-end
-
-def fun_l27_n709(x)
- if (x < 1)
- fun_l28_n845(x)
- else
- fun_l28_n497(x)
- end
-end
-
-def fun_l27_n710(x)
- if (x < 1)
- fun_l28_n195(x)
- else
- fun_l28_n242(x)
- end
-end
-
-def fun_l27_n711(x)
- if (x < 1)
- fun_l28_n276(x)
- else
- fun_l28_n856(x)
- end
-end
-
-def fun_l27_n712(x)
- if (x < 1)
- fun_l28_n42(x)
- else
- fun_l28_n184(x)
- end
-end
-
-def fun_l27_n713(x)
- if (x < 1)
- fun_l28_n270(x)
- else
- fun_l28_n813(x)
- end
-end
-
-def fun_l27_n714(x)
- if (x < 1)
- fun_l28_n281(x)
- else
- fun_l28_n54(x)
- end
-end
-
-def fun_l27_n715(x)
- if (x < 1)
- fun_l28_n226(x)
- else
- fun_l28_n202(x)
- end
-end
-
-def fun_l27_n716(x)
- if (x < 1)
- fun_l28_n391(x)
- else
- fun_l28_n143(x)
- end
-end
-
-def fun_l27_n717(x)
- if (x < 1)
- fun_l28_n449(x)
- else
- fun_l28_n530(x)
- end
-end
-
-def fun_l27_n718(x)
- if (x < 1)
- fun_l28_n198(x)
- else
- fun_l28_n342(x)
- end
-end
-
-def fun_l27_n719(x)
- if (x < 1)
- fun_l28_n741(x)
- else
- fun_l28_n703(x)
- end
-end
-
-def fun_l27_n720(x)
- if (x < 1)
- fun_l28_n779(x)
- else
- fun_l28_n706(x)
- end
-end
-
-def fun_l27_n721(x)
- if (x < 1)
- fun_l28_n184(x)
- else
- fun_l28_n472(x)
- end
-end
-
-def fun_l27_n722(x)
- if (x < 1)
- fun_l28_n752(x)
- else
- fun_l28_n230(x)
- end
-end
-
-def fun_l27_n723(x)
- if (x < 1)
- fun_l28_n137(x)
- else
- fun_l28_n228(x)
- end
-end
-
-def fun_l27_n724(x)
- if (x < 1)
- fun_l28_n360(x)
- else
- fun_l28_n186(x)
- end
-end
-
-def fun_l27_n725(x)
- if (x < 1)
- fun_l28_n791(x)
- else
- fun_l28_n752(x)
- end
-end
-
-def fun_l27_n726(x)
- if (x < 1)
- fun_l28_n162(x)
- else
- fun_l28_n492(x)
- end
-end
-
-def fun_l27_n727(x)
- if (x < 1)
- fun_l28_n329(x)
- else
- fun_l28_n286(x)
- end
-end
-
-def fun_l27_n728(x)
- if (x < 1)
- fun_l28_n262(x)
- else
- fun_l28_n775(x)
- end
-end
-
-def fun_l27_n729(x)
- if (x < 1)
- fun_l28_n773(x)
- else
- fun_l28_n424(x)
- end
-end
-
-def fun_l27_n730(x)
- if (x < 1)
- fun_l28_n202(x)
- else
- fun_l28_n379(x)
- end
-end
-
-def fun_l27_n731(x)
- if (x < 1)
- fun_l28_n761(x)
- else
- fun_l28_n759(x)
- end
-end
-
-def fun_l27_n732(x)
- if (x < 1)
- fun_l28_n544(x)
- else
- fun_l28_n980(x)
- end
-end
-
-def fun_l27_n733(x)
- if (x < 1)
- fun_l28_n75(x)
- else
- fun_l28_n786(x)
- end
-end
-
-def fun_l27_n734(x)
- if (x < 1)
- fun_l28_n708(x)
- else
- fun_l28_n92(x)
- end
-end
-
-def fun_l27_n735(x)
- if (x < 1)
- fun_l28_n213(x)
- else
- fun_l28_n966(x)
- end
-end
-
-def fun_l27_n736(x)
- if (x < 1)
- fun_l28_n298(x)
- else
- fun_l28_n517(x)
- end
-end
-
-def fun_l27_n737(x)
- if (x < 1)
- fun_l28_n665(x)
- else
- fun_l28_n960(x)
- end
-end
-
-def fun_l27_n738(x)
- if (x < 1)
- fun_l28_n51(x)
- else
- fun_l28_n605(x)
- end
-end
-
-def fun_l27_n739(x)
- if (x < 1)
- fun_l28_n931(x)
- else
- fun_l28_n697(x)
- end
-end
-
-def fun_l27_n740(x)
- if (x < 1)
- fun_l28_n341(x)
- else
- fun_l28_n57(x)
- end
-end
-
-def fun_l27_n741(x)
- if (x < 1)
- fun_l28_n614(x)
- else
- fun_l28_n623(x)
- end
-end
-
-def fun_l27_n742(x)
- if (x < 1)
- fun_l28_n466(x)
- else
- fun_l28_n260(x)
- end
-end
-
-def fun_l27_n743(x)
- if (x < 1)
- fun_l28_n741(x)
- else
- fun_l28_n337(x)
- end
-end
-
-def fun_l27_n744(x)
- if (x < 1)
- fun_l28_n414(x)
- else
- fun_l28_n277(x)
- end
-end
-
-def fun_l27_n745(x)
- if (x < 1)
- fun_l28_n377(x)
- else
- fun_l28_n245(x)
- end
-end
-
-def fun_l27_n746(x)
- if (x < 1)
- fun_l28_n441(x)
- else
- fun_l28_n347(x)
- end
-end
-
-def fun_l27_n747(x)
- if (x < 1)
- fun_l28_n473(x)
- else
- fun_l28_n54(x)
- end
-end
-
-def fun_l27_n748(x)
- if (x < 1)
- fun_l28_n140(x)
- else
- fun_l28_n680(x)
- end
-end
-
-def fun_l27_n749(x)
- if (x < 1)
- fun_l28_n491(x)
- else
- fun_l28_n830(x)
- end
-end
-
-def fun_l27_n750(x)
- if (x < 1)
- fun_l28_n803(x)
- else
- fun_l28_n917(x)
- end
-end
-
-def fun_l27_n751(x)
- if (x < 1)
- fun_l28_n97(x)
- else
- fun_l28_n702(x)
- end
-end
-
-def fun_l27_n752(x)
- if (x < 1)
- fun_l28_n113(x)
- else
- fun_l28_n447(x)
- end
-end
-
-def fun_l27_n753(x)
- if (x < 1)
- fun_l28_n589(x)
- else
- fun_l28_n933(x)
- end
-end
-
-def fun_l27_n754(x)
- if (x < 1)
- fun_l28_n610(x)
- else
- fun_l28_n365(x)
- end
-end
-
-def fun_l27_n755(x)
- if (x < 1)
- fun_l28_n813(x)
- else
- fun_l28_n930(x)
- end
-end
-
-def fun_l27_n756(x)
- if (x < 1)
- fun_l28_n997(x)
- else
- fun_l28_n112(x)
- end
-end
-
-def fun_l27_n757(x)
- if (x < 1)
- fun_l28_n635(x)
- else
- fun_l28_n852(x)
- end
-end
-
-def fun_l27_n758(x)
- if (x < 1)
- fun_l28_n735(x)
- else
- fun_l28_n3(x)
- end
-end
-
-def fun_l27_n759(x)
- if (x < 1)
- fun_l28_n473(x)
- else
- fun_l28_n276(x)
- end
-end
-
-def fun_l27_n760(x)
- if (x < 1)
- fun_l28_n708(x)
- else
- fun_l28_n602(x)
- end
-end
-
-def fun_l27_n761(x)
- if (x < 1)
- fun_l28_n178(x)
- else
- fun_l28_n766(x)
- end
-end
-
-def fun_l27_n762(x)
- if (x < 1)
- fun_l28_n968(x)
- else
- fun_l28_n935(x)
- end
-end
-
-def fun_l27_n763(x)
- if (x < 1)
- fun_l28_n17(x)
- else
- fun_l28_n680(x)
- end
-end
-
-def fun_l27_n764(x)
- if (x < 1)
- fun_l28_n465(x)
- else
- fun_l28_n484(x)
- end
-end
-
-def fun_l27_n765(x)
- if (x < 1)
- fun_l28_n157(x)
- else
- fun_l28_n33(x)
- end
-end
-
-def fun_l27_n766(x)
- if (x < 1)
- fun_l28_n306(x)
- else
- fun_l28_n588(x)
- end
-end
-
-def fun_l27_n767(x)
- if (x < 1)
- fun_l28_n73(x)
- else
- fun_l28_n144(x)
- end
-end
-
-def fun_l27_n768(x)
- if (x < 1)
- fun_l28_n838(x)
- else
- fun_l28_n984(x)
- end
-end
-
-def fun_l27_n769(x)
- if (x < 1)
- fun_l28_n541(x)
- else
- fun_l28_n687(x)
- end
-end
-
-def fun_l27_n770(x)
- if (x < 1)
- fun_l28_n129(x)
- else
- fun_l28_n256(x)
- end
-end
-
-def fun_l27_n771(x)
- if (x < 1)
- fun_l28_n78(x)
- else
- fun_l28_n617(x)
- end
-end
-
-def fun_l27_n772(x)
- if (x < 1)
- fun_l28_n590(x)
- else
- fun_l28_n78(x)
- end
-end
-
-def fun_l27_n773(x)
- if (x < 1)
- fun_l28_n609(x)
- else
- fun_l28_n942(x)
- end
-end
-
-def fun_l27_n774(x)
- if (x < 1)
- fun_l28_n794(x)
- else
- fun_l28_n361(x)
- end
-end
-
-def fun_l27_n775(x)
- if (x < 1)
- fun_l28_n632(x)
- else
- fun_l28_n722(x)
- end
-end
-
-def fun_l27_n776(x)
- if (x < 1)
- fun_l28_n655(x)
- else
- fun_l28_n944(x)
- end
-end
-
-def fun_l27_n777(x)
- if (x < 1)
- fun_l28_n117(x)
- else
- fun_l28_n725(x)
- end
-end
-
-def fun_l27_n778(x)
- if (x < 1)
- fun_l28_n511(x)
- else
- fun_l28_n934(x)
- end
-end
-
-def fun_l27_n779(x)
- if (x < 1)
- fun_l28_n11(x)
- else
- fun_l28_n421(x)
- end
-end
-
-def fun_l27_n780(x)
- if (x < 1)
- fun_l28_n957(x)
- else
- fun_l28_n941(x)
- end
-end
-
-def fun_l27_n781(x)
- if (x < 1)
- fun_l28_n899(x)
- else
- fun_l28_n122(x)
- end
-end
-
-def fun_l27_n782(x)
- if (x < 1)
- fun_l28_n42(x)
- else
- fun_l28_n885(x)
- end
-end
-
-def fun_l27_n783(x)
- if (x < 1)
- fun_l28_n696(x)
- else
- fun_l28_n25(x)
- end
-end
-
-def fun_l27_n784(x)
- if (x < 1)
- fun_l28_n683(x)
- else
- fun_l28_n201(x)
- end
-end
-
-def fun_l27_n785(x)
- if (x < 1)
- fun_l28_n337(x)
- else
- fun_l28_n977(x)
- end
-end
-
-def fun_l27_n786(x)
- if (x < 1)
- fun_l28_n113(x)
- else
- fun_l28_n946(x)
- end
-end
-
-def fun_l27_n787(x)
- if (x < 1)
- fun_l28_n311(x)
- else
- fun_l28_n396(x)
- end
-end
-
-def fun_l27_n788(x)
- if (x < 1)
- fun_l28_n963(x)
- else
- fun_l28_n592(x)
- end
-end
-
-def fun_l27_n789(x)
- if (x < 1)
- fun_l28_n647(x)
- else
- fun_l28_n614(x)
- end
-end
-
-def fun_l27_n790(x)
- if (x < 1)
- fun_l28_n15(x)
- else
- fun_l28_n602(x)
- end
-end
-
-def fun_l27_n791(x)
- if (x < 1)
- fun_l28_n648(x)
- else
- fun_l28_n921(x)
- end
-end
-
-def fun_l27_n792(x)
- if (x < 1)
- fun_l28_n272(x)
- else
- fun_l28_n585(x)
- end
-end
-
-def fun_l27_n793(x)
- if (x < 1)
- fun_l28_n74(x)
- else
- fun_l28_n412(x)
- end
-end
-
-def fun_l27_n794(x)
- if (x < 1)
- fun_l28_n610(x)
- else
- fun_l28_n121(x)
- end
-end
-
-def fun_l27_n795(x)
- if (x < 1)
- fun_l28_n905(x)
- else
- fun_l28_n620(x)
- end
-end
-
-def fun_l27_n796(x)
- if (x < 1)
- fun_l28_n691(x)
- else
- fun_l28_n833(x)
- end
-end
-
-def fun_l27_n797(x)
- if (x < 1)
- fun_l28_n148(x)
- else
- fun_l28_n223(x)
- end
-end
-
-def fun_l27_n798(x)
- if (x < 1)
- fun_l28_n835(x)
- else
- fun_l28_n59(x)
- end
-end
-
-def fun_l27_n799(x)
- if (x < 1)
- fun_l28_n317(x)
- else
- fun_l28_n39(x)
- end
-end
-
-def fun_l27_n800(x)
- if (x < 1)
- fun_l28_n694(x)
- else
- fun_l28_n833(x)
- end
-end
-
-def fun_l27_n801(x)
- if (x < 1)
- fun_l28_n280(x)
- else
- fun_l28_n322(x)
- end
-end
-
-def fun_l27_n802(x)
- if (x < 1)
- fun_l28_n612(x)
- else
- fun_l28_n866(x)
- end
-end
-
-def fun_l27_n803(x)
- if (x < 1)
- fun_l28_n114(x)
- else
- fun_l28_n901(x)
- end
-end
-
-def fun_l27_n804(x)
- if (x < 1)
- fun_l28_n983(x)
- else
- fun_l28_n837(x)
- end
-end
-
-def fun_l27_n805(x)
- if (x < 1)
- fun_l28_n225(x)
- else
- fun_l28_n345(x)
- end
-end
-
-def fun_l27_n806(x)
- if (x < 1)
- fun_l28_n879(x)
- else
- fun_l28_n929(x)
- end
-end
-
-def fun_l27_n807(x)
- if (x < 1)
- fun_l28_n41(x)
- else
- fun_l28_n670(x)
- end
-end
-
-def fun_l27_n808(x)
- if (x < 1)
- fun_l28_n407(x)
- else
- fun_l28_n46(x)
- end
-end
-
-def fun_l27_n809(x)
- if (x < 1)
- fun_l28_n377(x)
- else
- fun_l28_n646(x)
- end
-end
-
-def fun_l27_n810(x)
- if (x < 1)
- fun_l28_n293(x)
- else
- fun_l28_n40(x)
- end
-end
-
-def fun_l27_n811(x)
- if (x < 1)
- fun_l28_n150(x)
- else
- fun_l28_n743(x)
- end
-end
-
-def fun_l27_n812(x)
- if (x < 1)
- fun_l28_n285(x)
- else
- fun_l28_n124(x)
- end
-end
-
-def fun_l27_n813(x)
- if (x < 1)
- fun_l28_n861(x)
- else
- fun_l28_n641(x)
- end
-end
-
-def fun_l27_n814(x)
- if (x < 1)
- fun_l28_n917(x)
- else
- fun_l28_n51(x)
- end
-end
-
-def fun_l27_n815(x)
- if (x < 1)
- fun_l28_n573(x)
- else
- fun_l28_n551(x)
- end
-end
-
-def fun_l27_n816(x)
- if (x < 1)
- fun_l28_n420(x)
- else
- fun_l28_n155(x)
- end
-end
-
-def fun_l27_n817(x)
- if (x < 1)
- fun_l28_n283(x)
- else
- fun_l28_n797(x)
- end
-end
-
-def fun_l27_n818(x)
- if (x < 1)
- fun_l28_n744(x)
- else
- fun_l28_n22(x)
- end
-end
-
-def fun_l27_n819(x)
- if (x < 1)
- fun_l28_n370(x)
- else
- fun_l28_n287(x)
- end
-end
-
-def fun_l27_n820(x)
- if (x < 1)
- fun_l28_n435(x)
- else
- fun_l28_n23(x)
- end
-end
-
-def fun_l27_n821(x)
- if (x < 1)
- fun_l28_n947(x)
- else
- fun_l28_n200(x)
- end
-end
-
-def fun_l27_n822(x)
- if (x < 1)
- fun_l28_n259(x)
- else
- fun_l28_n444(x)
- end
-end
-
-def fun_l27_n823(x)
- if (x < 1)
- fun_l28_n663(x)
- else
- fun_l28_n755(x)
- end
-end
-
-def fun_l27_n824(x)
- if (x < 1)
- fun_l28_n564(x)
- else
- fun_l28_n572(x)
- end
-end
-
-def fun_l27_n825(x)
- if (x < 1)
- fun_l28_n679(x)
- else
- fun_l28_n351(x)
- end
-end
-
-def fun_l27_n826(x)
- if (x < 1)
- fun_l28_n654(x)
- else
- fun_l28_n393(x)
- end
-end
-
-def fun_l27_n827(x)
- if (x < 1)
- fun_l28_n454(x)
- else
- fun_l28_n698(x)
- end
-end
-
-def fun_l27_n828(x)
- if (x < 1)
- fun_l28_n389(x)
- else
- fun_l28_n118(x)
- end
-end
-
-def fun_l27_n829(x)
- if (x < 1)
- fun_l28_n918(x)
- else
- fun_l28_n176(x)
- end
-end
-
-def fun_l27_n830(x)
- if (x < 1)
- fun_l28_n158(x)
- else
- fun_l28_n309(x)
- end
-end
-
-def fun_l27_n831(x)
- if (x < 1)
- fun_l28_n86(x)
- else
- fun_l28_n250(x)
- end
-end
-
-def fun_l27_n832(x)
- if (x < 1)
- fun_l28_n21(x)
- else
- fun_l28_n688(x)
- end
-end
-
-def fun_l27_n833(x)
- if (x < 1)
- fun_l28_n587(x)
- else
- fun_l28_n484(x)
- end
-end
-
-def fun_l27_n834(x)
- if (x < 1)
- fun_l28_n886(x)
- else
- fun_l28_n579(x)
- end
-end
-
-def fun_l27_n835(x)
- if (x < 1)
- fun_l28_n923(x)
- else
- fun_l28_n140(x)
- end
-end
-
-def fun_l27_n836(x)
- if (x < 1)
- fun_l28_n120(x)
- else
- fun_l28_n704(x)
- end
-end
-
-def fun_l27_n837(x)
- if (x < 1)
- fun_l28_n905(x)
- else
- fun_l28_n918(x)
- end
-end
-
-def fun_l27_n838(x)
- if (x < 1)
- fun_l28_n679(x)
- else
- fun_l28_n588(x)
- end
-end
-
-def fun_l27_n839(x)
- if (x < 1)
- fun_l28_n445(x)
- else
- fun_l28_n187(x)
- end
-end
-
-def fun_l27_n840(x)
- if (x < 1)
- fun_l28_n695(x)
- else
- fun_l28_n86(x)
- end
-end
-
-def fun_l27_n841(x)
- if (x < 1)
- fun_l28_n784(x)
- else
- fun_l28_n802(x)
- end
-end
-
-def fun_l27_n842(x)
- if (x < 1)
- fun_l28_n854(x)
- else
- fun_l28_n617(x)
- end
-end
-
-def fun_l27_n843(x)
- if (x < 1)
- fun_l28_n466(x)
- else
- fun_l28_n261(x)
- end
-end
-
-def fun_l27_n844(x)
- if (x < 1)
- fun_l28_n326(x)
- else
- fun_l28_n517(x)
- end
-end
-
-def fun_l27_n845(x)
- if (x < 1)
- fun_l28_n686(x)
- else
- fun_l28_n81(x)
- end
-end
-
-def fun_l27_n846(x)
- if (x < 1)
- fun_l28_n71(x)
- else
- fun_l28_n685(x)
- end
-end
-
-def fun_l27_n847(x)
- if (x < 1)
- fun_l28_n622(x)
- else
- fun_l28_n469(x)
- end
-end
-
-def fun_l27_n848(x)
- if (x < 1)
- fun_l28_n125(x)
- else
- fun_l28_n252(x)
- end
-end
-
-def fun_l27_n849(x)
- if (x < 1)
- fun_l28_n820(x)
- else
- fun_l28_n752(x)
- end
-end
-
-def fun_l27_n850(x)
- if (x < 1)
- fun_l28_n278(x)
- else
- fun_l28_n198(x)
- end
-end
-
-def fun_l27_n851(x)
- if (x < 1)
- fun_l28_n631(x)
- else
- fun_l28_n241(x)
- end
-end
-
-def fun_l27_n852(x)
- if (x < 1)
- fun_l28_n917(x)
- else
- fun_l28_n95(x)
- end
-end
-
-def fun_l27_n853(x)
- if (x < 1)
- fun_l28_n271(x)
- else
- fun_l28_n493(x)
- end
-end
-
-def fun_l27_n854(x)
- if (x < 1)
- fun_l28_n578(x)
- else
- fun_l28_n31(x)
- end
-end
-
-def fun_l27_n855(x)
- if (x < 1)
- fun_l28_n407(x)
- else
- fun_l28_n694(x)
- end
-end
-
-def fun_l27_n856(x)
- if (x < 1)
- fun_l28_n541(x)
- else
- fun_l28_n81(x)
- end
-end
-
-def fun_l27_n857(x)
- if (x < 1)
- fun_l28_n144(x)
- else
- fun_l28_n965(x)
- end
-end
-
-def fun_l27_n858(x)
- if (x < 1)
- fun_l28_n476(x)
- else
- fun_l28_n44(x)
- end
-end
-
-def fun_l27_n859(x)
- if (x < 1)
- fun_l28_n647(x)
- else
- fun_l28_n973(x)
- end
-end
-
-def fun_l27_n860(x)
- if (x < 1)
- fun_l28_n641(x)
- else
- fun_l28_n331(x)
- end
-end
-
-def fun_l27_n861(x)
- if (x < 1)
- fun_l28_n75(x)
- else
- fun_l28_n10(x)
- end
-end
-
-def fun_l27_n862(x)
- if (x < 1)
- fun_l28_n435(x)
- else
- fun_l28_n182(x)
- end
-end
-
-def fun_l27_n863(x)
- if (x < 1)
- fun_l28_n244(x)
- else
- fun_l28_n135(x)
- end
-end
-
-def fun_l27_n864(x)
- if (x < 1)
- fun_l28_n598(x)
- else
- fun_l28_n495(x)
- end
-end
-
-def fun_l27_n865(x)
- if (x < 1)
- fun_l28_n456(x)
- else
- fun_l28_n16(x)
- end
-end
-
-def fun_l27_n866(x)
- if (x < 1)
- fun_l28_n43(x)
- else
- fun_l28_n279(x)
- end
-end
-
-def fun_l27_n867(x)
- if (x < 1)
- fun_l28_n853(x)
- else
- fun_l28_n906(x)
- end
-end
-
-def fun_l27_n868(x)
- if (x < 1)
- fun_l28_n641(x)
- else
- fun_l28_n479(x)
- end
-end
-
-def fun_l27_n869(x)
- if (x < 1)
- fun_l28_n78(x)
- else
- fun_l28_n727(x)
- end
-end
-
-def fun_l27_n870(x)
- if (x < 1)
- fun_l28_n815(x)
- else
- fun_l28_n803(x)
- end
-end
-
-def fun_l27_n871(x)
- if (x < 1)
- fun_l28_n343(x)
- else
- fun_l28_n665(x)
- end
-end
-
-def fun_l27_n872(x)
- if (x < 1)
- fun_l28_n907(x)
- else
- fun_l28_n410(x)
- end
-end
-
-def fun_l27_n873(x)
- if (x < 1)
- fun_l28_n797(x)
- else
- fun_l28_n626(x)
- end
-end
-
-def fun_l27_n874(x)
- if (x < 1)
- fun_l28_n784(x)
- else
- fun_l28_n679(x)
- end
-end
-
-def fun_l27_n875(x)
- if (x < 1)
- fun_l28_n247(x)
- else
- fun_l28_n89(x)
- end
-end
-
-def fun_l27_n876(x)
- if (x < 1)
- fun_l28_n911(x)
- else
- fun_l28_n503(x)
- end
-end
-
-def fun_l27_n877(x)
- if (x < 1)
- fun_l28_n233(x)
- else
- fun_l28_n437(x)
- end
-end
-
-def fun_l27_n878(x)
- if (x < 1)
- fun_l28_n913(x)
- else
- fun_l28_n984(x)
- end
-end
-
-def fun_l27_n879(x)
- if (x < 1)
- fun_l28_n690(x)
- else
- fun_l28_n642(x)
- end
-end
-
-def fun_l27_n880(x)
- if (x < 1)
- fun_l28_n222(x)
- else
- fun_l28_n400(x)
- end
-end
-
-def fun_l27_n881(x)
- if (x < 1)
- fun_l28_n611(x)
- else
- fun_l28_n446(x)
- end
-end
-
-def fun_l27_n882(x)
- if (x < 1)
- fun_l28_n821(x)
- else
- fun_l28_n784(x)
- end
-end
-
-def fun_l27_n883(x)
- if (x < 1)
- fun_l28_n849(x)
- else
- fun_l28_n83(x)
- end
-end
-
-def fun_l27_n884(x)
- if (x < 1)
- fun_l28_n366(x)
- else
- fun_l28_n822(x)
- end
-end
-
-def fun_l27_n885(x)
- if (x < 1)
- fun_l28_n40(x)
- else
- fun_l28_n626(x)
- end
-end
-
-def fun_l27_n886(x)
- if (x < 1)
- fun_l28_n280(x)
- else
- fun_l28_n957(x)
- end
-end
-
-def fun_l27_n887(x)
- if (x < 1)
- fun_l28_n466(x)
- else
- fun_l28_n377(x)
- end
-end
-
-def fun_l27_n888(x)
- if (x < 1)
- fun_l28_n258(x)
- else
- fun_l28_n816(x)
- end
-end
-
-def fun_l27_n889(x)
- if (x < 1)
- fun_l28_n893(x)
- else
- fun_l28_n263(x)
- end
-end
-
-def fun_l27_n890(x)
- if (x < 1)
- fun_l28_n366(x)
- else
- fun_l28_n890(x)
- end
-end
-
-def fun_l27_n891(x)
- if (x < 1)
- fun_l28_n692(x)
- else
- fun_l28_n781(x)
- end
-end
-
-def fun_l27_n892(x)
- if (x < 1)
- fun_l28_n301(x)
- else
- fun_l28_n142(x)
- end
-end
-
-def fun_l27_n893(x)
- if (x < 1)
- fun_l28_n275(x)
- else
- fun_l28_n302(x)
- end
-end
-
-def fun_l27_n894(x)
- if (x < 1)
- fun_l28_n726(x)
- else
- fun_l28_n445(x)
- end
-end
-
-def fun_l27_n895(x)
- if (x < 1)
- fun_l28_n859(x)
- else
- fun_l28_n839(x)
- end
-end
-
-def fun_l27_n896(x)
- if (x < 1)
- fun_l28_n252(x)
- else
- fun_l28_n844(x)
- end
-end
-
-def fun_l27_n897(x)
- if (x < 1)
- fun_l28_n245(x)
- else
- fun_l28_n133(x)
- end
-end
-
-def fun_l27_n898(x)
- if (x < 1)
- fun_l28_n233(x)
- else
- fun_l28_n417(x)
- end
-end
-
-def fun_l27_n899(x)
- if (x < 1)
- fun_l28_n171(x)
- else
- fun_l28_n479(x)
- end
-end
-
-def fun_l27_n900(x)
- if (x < 1)
- fun_l28_n528(x)
- else
- fun_l28_n196(x)
- end
-end
-
-def fun_l27_n901(x)
- if (x < 1)
- fun_l28_n243(x)
- else
- fun_l28_n270(x)
- end
-end
-
-def fun_l27_n902(x)
- if (x < 1)
- fun_l28_n319(x)
- else
- fun_l28_n885(x)
- end
-end
-
-def fun_l27_n903(x)
- if (x < 1)
- fun_l28_n570(x)
- else
- fun_l28_n321(x)
- end
-end
-
-def fun_l27_n904(x)
- if (x < 1)
- fun_l28_n522(x)
- else
- fun_l28_n720(x)
- end
-end
-
-def fun_l27_n905(x)
- if (x < 1)
- fun_l28_n820(x)
- else
- fun_l28_n789(x)
- end
-end
-
-def fun_l27_n906(x)
- if (x < 1)
- fun_l28_n592(x)
- else
- fun_l28_n113(x)
- end
-end
-
-def fun_l27_n907(x)
- if (x < 1)
- fun_l28_n432(x)
- else
- fun_l28_n591(x)
- end
-end
-
-def fun_l27_n908(x)
- if (x < 1)
- fun_l28_n538(x)
- else
- fun_l28_n701(x)
- end
-end
-
-def fun_l27_n909(x)
- if (x < 1)
- fun_l28_n963(x)
- else
- fun_l28_n756(x)
- end
-end
-
-def fun_l27_n910(x)
- if (x < 1)
- fun_l28_n871(x)
- else
- fun_l28_n387(x)
- end
-end
-
-def fun_l27_n911(x)
- if (x < 1)
- fun_l28_n779(x)
- else
- fun_l28_n862(x)
- end
-end
-
-def fun_l27_n912(x)
- if (x < 1)
- fun_l28_n0(x)
- else
- fun_l28_n208(x)
- end
-end
-
-def fun_l27_n913(x)
- if (x < 1)
- fun_l28_n994(x)
- else
- fun_l28_n756(x)
- end
-end
-
-def fun_l27_n914(x)
- if (x < 1)
- fun_l28_n950(x)
- else
- fun_l28_n770(x)
- end
-end
-
-def fun_l27_n915(x)
- if (x < 1)
- fun_l28_n922(x)
- else
- fun_l28_n372(x)
- end
-end
-
-def fun_l27_n916(x)
- if (x < 1)
- fun_l28_n786(x)
- else
- fun_l28_n786(x)
- end
-end
-
-def fun_l27_n917(x)
- if (x < 1)
- fun_l28_n745(x)
- else
- fun_l28_n822(x)
- end
-end
-
-def fun_l27_n918(x)
- if (x < 1)
- fun_l28_n69(x)
- else
- fun_l28_n669(x)
- end
-end
-
-def fun_l27_n919(x)
- if (x < 1)
- fun_l28_n714(x)
- else
- fun_l28_n777(x)
- end
-end
-
-def fun_l27_n920(x)
- if (x < 1)
- fun_l28_n934(x)
- else
- fun_l28_n392(x)
- end
-end
-
-def fun_l27_n921(x)
- if (x < 1)
- fun_l28_n746(x)
- else
- fun_l28_n355(x)
- end
-end
-
-def fun_l27_n922(x)
- if (x < 1)
- fun_l28_n645(x)
- else
- fun_l28_n351(x)
- end
-end
-
-def fun_l27_n923(x)
- if (x < 1)
- fun_l28_n48(x)
- else
- fun_l28_n826(x)
- end
-end
-
-def fun_l27_n924(x)
- if (x < 1)
- fun_l28_n531(x)
- else
- fun_l28_n577(x)
- end
-end
-
-def fun_l27_n925(x)
- if (x < 1)
- fun_l28_n907(x)
- else
- fun_l28_n136(x)
- end
-end
-
-def fun_l27_n926(x)
- if (x < 1)
- fun_l28_n256(x)
- else
- fun_l28_n527(x)
- end
-end
-
-def fun_l27_n927(x)
- if (x < 1)
- fun_l28_n870(x)
- else
- fun_l28_n475(x)
- end
-end
-
-def fun_l27_n928(x)
- if (x < 1)
- fun_l28_n184(x)
- else
- fun_l28_n397(x)
- end
-end
-
-def fun_l27_n929(x)
- if (x < 1)
- fun_l28_n99(x)
- else
- fun_l28_n363(x)
- end
-end
-
-def fun_l27_n930(x)
- if (x < 1)
- fun_l28_n217(x)
- else
- fun_l28_n978(x)
- end
-end
-
-def fun_l27_n931(x)
- if (x < 1)
- fun_l28_n372(x)
- else
- fun_l28_n542(x)
- end
-end
-
-def fun_l27_n932(x)
- if (x < 1)
- fun_l28_n337(x)
- else
- fun_l28_n150(x)
- end
-end
-
-def fun_l27_n933(x)
- if (x < 1)
- fun_l28_n81(x)
- else
- fun_l28_n206(x)
- end
-end
-
-def fun_l27_n934(x)
- if (x < 1)
- fun_l28_n984(x)
- else
- fun_l28_n748(x)
- end
-end
-
-def fun_l27_n935(x)
- if (x < 1)
- fun_l28_n746(x)
- else
- fun_l28_n824(x)
- end
-end
-
-def fun_l27_n936(x)
- if (x < 1)
- fun_l28_n737(x)
- else
- fun_l28_n353(x)
- end
-end
-
-def fun_l27_n937(x)
- if (x < 1)
- fun_l28_n681(x)
- else
- fun_l28_n518(x)
- end
-end
-
-def fun_l27_n938(x)
- if (x < 1)
- fun_l28_n401(x)
- else
- fun_l28_n99(x)
- end
-end
-
-def fun_l27_n939(x)
- if (x < 1)
- fun_l28_n821(x)
- else
- fun_l28_n456(x)
- end
-end
-
-def fun_l27_n940(x)
- if (x < 1)
- fun_l28_n411(x)
- else
- fun_l28_n578(x)
- end
-end
-
-def fun_l27_n941(x)
- if (x < 1)
- fun_l28_n318(x)
- else
- fun_l28_n479(x)
- end
-end
-
-def fun_l27_n942(x)
- if (x < 1)
- fun_l28_n229(x)
- else
- fun_l28_n338(x)
- end
-end
-
-def fun_l27_n943(x)
- if (x < 1)
- fun_l28_n195(x)
- else
- fun_l28_n667(x)
- end
-end
-
-def fun_l27_n944(x)
- if (x < 1)
- fun_l28_n256(x)
- else
- fun_l28_n309(x)
- end
-end
-
-def fun_l27_n945(x)
- if (x < 1)
- fun_l28_n939(x)
- else
- fun_l28_n284(x)
- end
-end
-
-def fun_l27_n946(x)
- if (x < 1)
- fun_l28_n70(x)
- else
- fun_l28_n408(x)
- end
-end
-
-def fun_l27_n947(x)
- if (x < 1)
- fun_l28_n586(x)
- else
- fun_l28_n931(x)
- end
-end
-
-def fun_l27_n948(x)
- if (x < 1)
- fun_l28_n878(x)
- else
- fun_l28_n95(x)
- end
-end
-
-def fun_l27_n949(x)
- if (x < 1)
- fun_l28_n749(x)
- else
- fun_l28_n414(x)
- end
-end
-
-def fun_l27_n950(x)
- if (x < 1)
- fun_l28_n913(x)
- else
- fun_l28_n933(x)
- end
-end
-
-def fun_l27_n951(x)
- if (x < 1)
- fun_l28_n394(x)
- else
- fun_l28_n121(x)
- end
-end
-
-def fun_l27_n952(x)
- if (x < 1)
- fun_l28_n381(x)
- else
- fun_l28_n279(x)
- end
-end
-
-def fun_l27_n953(x)
- if (x < 1)
- fun_l28_n302(x)
- else
- fun_l28_n710(x)
- end
-end
-
-def fun_l27_n954(x)
- if (x < 1)
- fun_l28_n765(x)
- else
- fun_l28_n254(x)
- end
-end
-
-def fun_l27_n955(x)
- if (x < 1)
- fun_l28_n736(x)
- else
- fun_l28_n67(x)
- end
-end
-
-def fun_l27_n956(x)
- if (x < 1)
- fun_l28_n61(x)
- else
- fun_l28_n873(x)
- end
-end
-
-def fun_l27_n957(x)
- if (x < 1)
- fun_l28_n920(x)
- else
- fun_l28_n261(x)
- end
-end
-
-def fun_l27_n958(x)
- if (x < 1)
- fun_l28_n350(x)
- else
- fun_l28_n545(x)
- end
-end
-
-def fun_l27_n959(x)
- if (x < 1)
- fun_l28_n538(x)
- else
- fun_l28_n829(x)
- end
-end
-
-def fun_l27_n960(x)
- if (x < 1)
- fun_l28_n920(x)
- else
- fun_l28_n534(x)
- end
-end
-
-def fun_l27_n961(x)
- if (x < 1)
- fun_l28_n730(x)
- else
- fun_l28_n19(x)
- end
-end
-
-def fun_l27_n962(x)
- if (x < 1)
- fun_l28_n293(x)
- else
- fun_l28_n187(x)
- end
-end
-
-def fun_l27_n963(x)
- if (x < 1)
- fun_l28_n169(x)
- else
- fun_l28_n751(x)
- end
-end
-
-def fun_l27_n964(x)
- if (x < 1)
- fun_l28_n195(x)
- else
- fun_l28_n112(x)
- end
-end
-
-def fun_l27_n965(x)
- if (x < 1)
- fun_l28_n756(x)
- else
- fun_l28_n700(x)
- end
-end
-
-def fun_l27_n966(x)
- if (x < 1)
- fun_l28_n739(x)
- else
- fun_l28_n320(x)
- end
-end
-
-def fun_l27_n967(x)
- if (x < 1)
- fun_l28_n693(x)
- else
- fun_l28_n101(x)
- end
-end
-
-def fun_l27_n968(x)
- if (x < 1)
- fun_l28_n94(x)
- else
- fun_l28_n131(x)
- end
-end
-
-def fun_l27_n969(x)
- if (x < 1)
- fun_l28_n142(x)
- else
- fun_l28_n839(x)
- end
-end
-
-def fun_l27_n970(x)
- if (x < 1)
- fun_l28_n792(x)
- else
- fun_l28_n243(x)
- end
-end
-
-def fun_l27_n971(x)
- if (x < 1)
- fun_l28_n268(x)
- else
- fun_l28_n525(x)
- end
-end
-
-def fun_l27_n972(x)
- if (x < 1)
- fun_l28_n776(x)
- else
- fun_l28_n117(x)
- end
-end
-
-def fun_l27_n973(x)
- if (x < 1)
- fun_l28_n401(x)
- else
- fun_l28_n571(x)
- end
-end
-
-def fun_l27_n974(x)
- if (x < 1)
- fun_l28_n515(x)
- else
- fun_l28_n5(x)
- end
-end
-
-def fun_l27_n975(x)
- if (x < 1)
- fun_l28_n225(x)
- else
- fun_l28_n956(x)
- end
-end
-
-def fun_l27_n976(x)
- if (x < 1)
- fun_l28_n536(x)
- else
- fun_l28_n379(x)
- end
-end
-
-def fun_l27_n977(x)
- if (x < 1)
- fun_l28_n942(x)
- else
- fun_l28_n665(x)
- end
-end
-
-def fun_l27_n978(x)
- if (x < 1)
- fun_l28_n753(x)
- else
- fun_l28_n807(x)
- end
-end
-
-def fun_l27_n979(x)
- if (x < 1)
- fun_l28_n206(x)
- else
- fun_l28_n548(x)
- end
-end
-
-def fun_l27_n980(x)
- if (x < 1)
- fun_l28_n149(x)
- else
- fun_l28_n126(x)
- end
-end
-
-def fun_l27_n981(x)
- if (x < 1)
- fun_l28_n829(x)
- else
- fun_l28_n384(x)
- end
-end
-
-def fun_l27_n982(x)
- if (x < 1)
- fun_l28_n764(x)
- else
- fun_l28_n554(x)
- end
-end
-
-def fun_l27_n983(x)
- if (x < 1)
- fun_l28_n868(x)
- else
- fun_l28_n933(x)
- end
-end
-
-def fun_l27_n984(x)
- if (x < 1)
- fun_l28_n627(x)
- else
- fun_l28_n791(x)
- end
-end
-
-def fun_l27_n985(x)
- if (x < 1)
- fun_l28_n796(x)
- else
- fun_l28_n352(x)
- end
-end
-
-def fun_l27_n986(x)
- if (x < 1)
- fun_l28_n213(x)
- else
- fun_l28_n282(x)
- end
-end
-
-def fun_l27_n987(x)
- if (x < 1)
- fun_l28_n403(x)
- else
- fun_l28_n504(x)
- end
-end
-
-def fun_l27_n988(x)
- if (x < 1)
- fun_l28_n78(x)
- else
- fun_l28_n283(x)
- end
-end
-
-def fun_l27_n989(x)
- if (x < 1)
- fun_l28_n364(x)
- else
- fun_l28_n802(x)
- end
-end
-
-def fun_l27_n990(x)
- if (x < 1)
- fun_l28_n508(x)
- else
- fun_l28_n561(x)
- end
-end
-
-def fun_l27_n991(x)
- if (x < 1)
- fun_l28_n922(x)
- else
- fun_l28_n901(x)
- end
-end
-
-def fun_l27_n992(x)
- if (x < 1)
- fun_l28_n103(x)
- else
- fun_l28_n275(x)
- end
-end
-
-def fun_l27_n993(x)
- if (x < 1)
- fun_l28_n566(x)
- else
- fun_l28_n88(x)
- end
-end
-
-def fun_l27_n994(x)
- if (x < 1)
- fun_l28_n174(x)
- else
- fun_l28_n741(x)
- end
-end
-
-def fun_l27_n995(x)
- if (x < 1)
- fun_l28_n40(x)
- else
- fun_l28_n426(x)
- end
-end
-
-def fun_l27_n996(x)
- if (x < 1)
- fun_l28_n941(x)
- else
- fun_l28_n941(x)
- end
-end
-
-def fun_l27_n997(x)
- if (x < 1)
- fun_l28_n651(x)
- else
- fun_l28_n301(x)
- end
-end
-
-def fun_l27_n998(x)
- if (x < 1)
- fun_l28_n789(x)
- else
- fun_l28_n720(x)
- end
-end
-
-def fun_l27_n999(x)
- if (x < 1)
- fun_l28_n536(x)
- else
- fun_l28_n903(x)
- end
-end
-
-def fun_l28_n0(x)
- if (x < 1)
- fun_l29_n585(x)
- else
- fun_l29_n979(x)
- end
-end
-
-def fun_l28_n1(x)
- if (x < 1)
- fun_l29_n182(x)
- else
- fun_l29_n513(x)
- end
-end
-
-def fun_l28_n2(x)
- if (x < 1)
- fun_l29_n975(x)
- else
- fun_l29_n445(x)
- end
-end
-
-def fun_l28_n3(x)
- if (x < 1)
- fun_l29_n7(x)
- else
- fun_l29_n958(x)
- end
-end
-
-def fun_l28_n4(x)
- if (x < 1)
- fun_l29_n751(x)
- else
- fun_l29_n426(x)
- end
-end
-
-def fun_l28_n5(x)
- if (x < 1)
- fun_l29_n29(x)
- else
- fun_l29_n840(x)
- end
-end
-
-def fun_l28_n6(x)
- if (x < 1)
- fun_l29_n571(x)
- else
- fun_l29_n971(x)
- end
-end
-
-def fun_l28_n7(x)
- if (x < 1)
- fun_l29_n384(x)
- else
- fun_l29_n495(x)
- end
-end
-
-def fun_l28_n8(x)
- if (x < 1)
- fun_l29_n185(x)
- else
- fun_l29_n507(x)
- end
-end
-
-def fun_l28_n9(x)
- if (x < 1)
- fun_l29_n496(x)
- else
- fun_l29_n241(x)
- end
-end
-
-def fun_l28_n10(x)
- if (x < 1)
- fun_l29_n494(x)
- else
- fun_l29_n473(x)
- end
-end
-
-def fun_l28_n11(x)
- if (x < 1)
- fun_l29_n851(x)
- else
- fun_l29_n809(x)
- end
-end
-
-def fun_l28_n12(x)
- if (x < 1)
- fun_l29_n875(x)
- else
- fun_l29_n135(x)
- end
-end
-
-def fun_l28_n13(x)
- if (x < 1)
- fun_l29_n957(x)
- else
- fun_l29_n337(x)
- end
-end
-
-def fun_l28_n14(x)
- if (x < 1)
- fun_l29_n82(x)
- else
- fun_l29_n901(x)
- end
-end
-
-def fun_l28_n15(x)
- if (x < 1)
- fun_l29_n608(x)
- else
- fun_l29_n334(x)
- end
-end
-
-def fun_l28_n16(x)
- if (x < 1)
- fun_l29_n772(x)
- else
- fun_l29_n912(x)
- end
-end
-
-def fun_l28_n17(x)
- if (x < 1)
- fun_l29_n971(x)
- else
- fun_l29_n127(x)
- end
-end
-
-def fun_l28_n18(x)
- if (x < 1)
- fun_l29_n667(x)
- else
- fun_l29_n347(x)
- end
-end
-
-def fun_l28_n19(x)
- if (x < 1)
- fun_l29_n453(x)
- else
- fun_l29_n39(x)
- end
-end
-
-def fun_l28_n20(x)
- if (x < 1)
- fun_l29_n853(x)
- else
- fun_l29_n747(x)
- end
-end
-
-def fun_l28_n21(x)
- if (x < 1)
- fun_l29_n433(x)
- else
- fun_l29_n298(x)
- end
-end
-
-def fun_l28_n22(x)
- if (x < 1)
- fun_l29_n94(x)
- else
- fun_l29_n307(x)
- end
-end
-
-def fun_l28_n23(x)
- if (x < 1)
- fun_l29_n424(x)
- else
- fun_l29_n599(x)
- end
-end
-
-def fun_l28_n24(x)
- if (x < 1)
- fun_l29_n986(x)
- else
- fun_l29_n232(x)
- end
-end
-
-def fun_l28_n25(x)
- if (x < 1)
- fun_l29_n658(x)
- else
- fun_l29_n744(x)
- end
-end
-
-def fun_l28_n26(x)
- if (x < 1)
- fun_l29_n151(x)
- else
- fun_l29_n855(x)
- end
-end
-
-def fun_l28_n27(x)
- if (x < 1)
- fun_l29_n416(x)
- else
- fun_l29_n763(x)
- end
-end
-
-def fun_l28_n28(x)
- if (x < 1)
- fun_l29_n489(x)
- else
- fun_l29_n55(x)
- end
-end
-
-def fun_l28_n29(x)
- if (x < 1)
- fun_l29_n714(x)
- else
- fun_l29_n489(x)
- end
-end
-
-def fun_l28_n30(x)
- if (x < 1)
- fun_l29_n328(x)
- else
- fun_l29_n476(x)
- end
-end
-
-def fun_l28_n31(x)
- if (x < 1)
- fun_l29_n317(x)
- else
- fun_l29_n836(x)
- end
-end
-
-def fun_l28_n32(x)
- if (x < 1)
- fun_l29_n970(x)
- else
- fun_l29_n48(x)
- end
-end
-
-def fun_l28_n33(x)
- if (x < 1)
- fun_l29_n159(x)
- else
- fun_l29_n449(x)
- end
-end
-
-def fun_l28_n34(x)
- if (x < 1)
- fun_l29_n80(x)
- else
- fun_l29_n994(x)
- end
-end
-
-def fun_l28_n35(x)
- if (x < 1)
- fun_l29_n413(x)
- else
- fun_l29_n718(x)
- end
-end
-
-def fun_l28_n36(x)
- if (x < 1)
- fun_l29_n196(x)
- else
- fun_l29_n713(x)
- end
-end
-
-def fun_l28_n37(x)
- if (x < 1)
- fun_l29_n815(x)
- else
- fun_l29_n595(x)
- end
-end
-
-def fun_l28_n38(x)
- if (x < 1)
- fun_l29_n862(x)
- else
- fun_l29_n546(x)
- end
-end
-
-def fun_l28_n39(x)
- if (x < 1)
- fun_l29_n875(x)
- else
- fun_l29_n456(x)
- end
-end
-
-def fun_l28_n40(x)
- if (x < 1)
- fun_l29_n424(x)
- else
- fun_l29_n445(x)
- end
-end
-
-def fun_l28_n41(x)
- if (x < 1)
- fun_l29_n743(x)
- else
- fun_l29_n498(x)
- end
-end
-
-def fun_l28_n42(x)
- if (x < 1)
- fun_l29_n950(x)
- else
- fun_l29_n497(x)
- end
-end
-
-def fun_l28_n43(x)
- if (x < 1)
- fun_l29_n792(x)
- else
- fun_l29_n487(x)
- end
-end
-
-def fun_l28_n44(x)
- if (x < 1)
- fun_l29_n421(x)
- else
- fun_l29_n484(x)
- end
-end
-
-def fun_l28_n45(x)
- if (x < 1)
- fun_l29_n862(x)
- else
- fun_l29_n824(x)
- end
-end
-
-def fun_l28_n46(x)
- if (x < 1)
- fun_l29_n163(x)
- else
- fun_l29_n184(x)
- end
-end
-
-def fun_l28_n47(x)
- if (x < 1)
- fun_l29_n374(x)
- else
- fun_l29_n954(x)
- end
-end
-
-def fun_l28_n48(x)
- if (x < 1)
- fun_l29_n422(x)
- else
- fun_l29_n223(x)
- end
-end
-
-def fun_l28_n49(x)
- if (x < 1)
- fun_l29_n885(x)
- else
- fun_l29_n527(x)
- end
-end
-
-def fun_l28_n50(x)
- if (x < 1)
- fun_l29_n694(x)
- else
- fun_l29_n702(x)
- end
-end
-
-def fun_l28_n51(x)
- if (x < 1)
- fun_l29_n273(x)
- else
- fun_l29_n504(x)
- end
-end
-
-def fun_l28_n52(x)
- if (x < 1)
- fun_l29_n330(x)
- else
- fun_l29_n267(x)
- end
-end
-
-def fun_l28_n53(x)
- if (x < 1)
- fun_l29_n103(x)
- else
- fun_l29_n407(x)
- end
-end
-
-def fun_l28_n54(x)
- if (x < 1)
- fun_l29_n210(x)
- else
- fun_l29_n645(x)
- end
-end
-
-def fun_l28_n55(x)
- if (x < 1)
- fun_l29_n871(x)
- else
- fun_l29_n641(x)
- end
-end
-
-def fun_l28_n56(x)
- if (x < 1)
- fun_l29_n233(x)
- else
- fun_l29_n715(x)
- end
-end
-
-def fun_l28_n57(x)
- if (x < 1)
- fun_l29_n742(x)
- else
- fun_l29_n104(x)
- end
-end
-
-def fun_l28_n58(x)
- if (x < 1)
- fun_l29_n713(x)
- else
- fun_l29_n919(x)
- end
-end
-
-def fun_l28_n59(x)
- if (x < 1)
- fun_l29_n192(x)
- else
- fun_l29_n988(x)
- end
-end
-
-def fun_l28_n60(x)
- if (x < 1)
- fun_l29_n533(x)
- else
- fun_l29_n972(x)
- end
-end
-
-def fun_l28_n61(x)
- if (x < 1)
- fun_l29_n286(x)
- else
- fun_l29_n129(x)
- end
-end
-
-def fun_l28_n62(x)
- if (x < 1)
- fun_l29_n208(x)
- else
- fun_l29_n715(x)
- end
-end
-
-def fun_l28_n63(x)
- if (x < 1)
- fun_l29_n588(x)
- else
- fun_l29_n975(x)
- end
-end
-
-def fun_l28_n64(x)
- if (x < 1)
- fun_l29_n202(x)
- else
- fun_l29_n784(x)
- end
-end
-
-def fun_l28_n65(x)
- if (x < 1)
- fun_l29_n531(x)
- else
- fun_l29_n758(x)
- end
-end
-
-def fun_l28_n66(x)
- if (x < 1)
- fun_l29_n102(x)
- else
- fun_l29_n23(x)
- end
-end
-
-def fun_l28_n67(x)
- if (x < 1)
- fun_l29_n546(x)
- else
- fun_l29_n964(x)
- end
-end
-
-def fun_l28_n68(x)
- if (x < 1)
- fun_l29_n31(x)
- else
- fun_l29_n223(x)
- end
-end
-
-def fun_l28_n69(x)
- if (x < 1)
- fun_l29_n344(x)
- else
- fun_l29_n250(x)
- end
-end
-
-def fun_l28_n70(x)
- if (x < 1)
- fun_l29_n910(x)
- else
- fun_l29_n880(x)
- end
-end
-
-def fun_l28_n71(x)
- if (x < 1)
- fun_l29_n181(x)
- else
- fun_l29_n950(x)
- end
-end
-
-def fun_l28_n72(x)
- if (x < 1)
- fun_l29_n405(x)
- else
- fun_l29_n105(x)
- end
-end
-
-def fun_l28_n73(x)
- if (x < 1)
- fun_l29_n419(x)
- else
- fun_l29_n120(x)
- end
-end
-
-def fun_l28_n74(x)
- if (x < 1)
- fun_l29_n485(x)
- else
- fun_l29_n616(x)
- end
-end
-
-def fun_l28_n75(x)
- if (x < 1)
- fun_l29_n690(x)
- else
- fun_l29_n581(x)
- end
-end
-
-def fun_l28_n76(x)
- if (x < 1)
- fun_l29_n68(x)
- else
- fun_l29_n47(x)
- end
-end
-
-def fun_l28_n77(x)
- if (x < 1)
- fun_l29_n324(x)
- else
- fun_l29_n102(x)
- end
-end
-
-def fun_l28_n78(x)
- if (x < 1)
- fun_l29_n416(x)
- else
- fun_l29_n965(x)
- end
-end
-
-def fun_l28_n79(x)
- if (x < 1)
- fun_l29_n584(x)
- else
- fun_l29_n901(x)
- end
-end
-
-def fun_l28_n80(x)
- if (x < 1)
- fun_l29_n914(x)
- else
- fun_l29_n890(x)
- end
-end
-
-def fun_l28_n81(x)
- if (x < 1)
- fun_l29_n85(x)
- else
- fun_l29_n822(x)
- end
-end
-
-def fun_l28_n82(x)
- if (x < 1)
- fun_l29_n311(x)
- else
- fun_l29_n621(x)
- end
-end
-
-def fun_l28_n83(x)
- if (x < 1)
- fun_l29_n361(x)
- else
- fun_l29_n336(x)
- end
-end
-
-def fun_l28_n84(x)
- if (x < 1)
- fun_l29_n642(x)
- else
- fun_l29_n495(x)
- end
-end
-
-def fun_l28_n85(x)
- if (x < 1)
- fun_l29_n688(x)
- else
- fun_l29_n20(x)
- end
-end
-
-def fun_l28_n86(x)
- if (x < 1)
- fun_l29_n805(x)
- else
- fun_l29_n363(x)
- end
-end
-
-def fun_l28_n87(x)
- if (x < 1)
- fun_l29_n215(x)
- else
- fun_l29_n530(x)
- end
-end
-
-def fun_l28_n88(x)
- if (x < 1)
- fun_l29_n355(x)
- else
- fun_l29_n820(x)
- end
-end
-
-def fun_l28_n89(x)
- if (x < 1)
- fun_l29_n593(x)
- else
- fun_l29_n443(x)
- end
-end
-
-def fun_l28_n90(x)
- if (x < 1)
- fun_l29_n917(x)
- else
- fun_l29_n920(x)
- end
-end
-
-def fun_l28_n91(x)
- if (x < 1)
- fun_l29_n571(x)
- else
- fun_l29_n545(x)
- end
-end
-
-def fun_l28_n92(x)
- if (x < 1)
- fun_l29_n871(x)
- else
- fun_l29_n497(x)
- end
-end
-
-def fun_l28_n93(x)
- if (x < 1)
- fun_l29_n433(x)
- else
- fun_l29_n899(x)
- end
-end
-
-def fun_l28_n94(x)
- if (x < 1)
- fun_l29_n139(x)
- else
- fun_l29_n836(x)
- end
-end
-
-def fun_l28_n95(x)
- if (x < 1)
- fun_l29_n265(x)
- else
- fun_l29_n297(x)
- end
-end
-
-def fun_l28_n96(x)
- if (x < 1)
- fun_l29_n554(x)
- else
- fun_l29_n345(x)
- end
-end
-
-def fun_l28_n97(x)
- if (x < 1)
- fun_l29_n674(x)
- else
- fun_l29_n632(x)
- end
-end
-
-def fun_l28_n98(x)
- if (x < 1)
- fun_l29_n287(x)
- else
- fun_l29_n606(x)
- end
-end
-
-def fun_l28_n99(x)
- if (x < 1)
- fun_l29_n288(x)
- else
- fun_l29_n751(x)
- end
-end
-
-def fun_l28_n100(x)
- if (x < 1)
- fun_l29_n673(x)
- else
- fun_l29_n461(x)
- end
-end
-
-def fun_l28_n101(x)
- if (x < 1)
- fun_l29_n633(x)
- else
- fun_l29_n688(x)
- end
-end
-
-def fun_l28_n102(x)
- if (x < 1)
- fun_l29_n487(x)
- else
- fun_l29_n879(x)
- end
-end
-
-def fun_l28_n103(x)
- if (x < 1)
- fun_l29_n12(x)
- else
- fun_l29_n808(x)
- end
-end
-
-def fun_l28_n104(x)
- if (x < 1)
- fun_l29_n560(x)
- else
- fun_l29_n174(x)
- end
-end
-
-def fun_l28_n105(x)
- if (x < 1)
- fun_l29_n379(x)
- else
- fun_l29_n509(x)
- end
-end
-
-def fun_l28_n106(x)
- if (x < 1)
- fun_l29_n848(x)
- else
- fun_l29_n783(x)
- end
-end
-
-def fun_l28_n107(x)
- if (x < 1)
- fun_l29_n564(x)
- else
- fun_l29_n584(x)
- end
-end
-
-def fun_l28_n108(x)
- if (x < 1)
- fun_l29_n251(x)
- else
- fun_l29_n77(x)
- end
-end
-
-def fun_l28_n109(x)
- if (x < 1)
- fun_l29_n588(x)
- else
- fun_l29_n351(x)
- end
-end
-
-def fun_l28_n110(x)
- if (x < 1)
- fun_l29_n43(x)
- else
- fun_l29_n102(x)
- end
-end
-
-def fun_l28_n111(x)
- if (x < 1)
- fun_l29_n33(x)
- else
- fun_l29_n168(x)
- end
-end
-
-def fun_l28_n112(x)
- if (x < 1)
- fun_l29_n977(x)
- else
- fun_l29_n832(x)
- end
-end
-
-def fun_l28_n113(x)
- if (x < 1)
- fun_l29_n189(x)
- else
- fun_l29_n657(x)
- end
-end
-
-def fun_l28_n114(x)
- if (x < 1)
- fun_l29_n833(x)
- else
- fun_l29_n237(x)
- end
-end
-
-def fun_l28_n115(x)
- if (x < 1)
- fun_l29_n621(x)
- else
- fun_l29_n675(x)
- end
-end
-
-def fun_l28_n116(x)
- if (x < 1)
- fun_l29_n944(x)
- else
- fun_l29_n469(x)
- end
-end
-
-def fun_l28_n117(x)
- if (x < 1)
- fun_l29_n2(x)
- else
- fun_l29_n959(x)
- end
-end
-
-def fun_l28_n118(x)
- if (x < 1)
- fun_l29_n260(x)
- else
- fun_l29_n580(x)
- end
-end
-
-def fun_l28_n119(x)
- if (x < 1)
- fun_l29_n464(x)
- else
- fun_l29_n411(x)
- end
-end
-
-def fun_l28_n120(x)
- if (x < 1)
- fun_l29_n973(x)
- else
- fun_l29_n837(x)
- end
-end
-
-def fun_l28_n121(x)
- if (x < 1)
- fun_l29_n511(x)
- else
- fun_l29_n896(x)
- end
-end
-
-def fun_l28_n122(x)
- if (x < 1)
- fun_l29_n621(x)
- else
- fun_l29_n952(x)
- end
-end
-
-def fun_l28_n123(x)
- if (x < 1)
- fun_l29_n250(x)
- else
- fun_l29_n551(x)
- end
-end
-
-def fun_l28_n124(x)
- if (x < 1)
- fun_l29_n761(x)
- else
- fun_l29_n659(x)
- end
-end
-
-def fun_l28_n125(x)
- if (x < 1)
- fun_l29_n43(x)
- else
- fun_l29_n265(x)
- end
-end
-
-def fun_l28_n126(x)
- if (x < 1)
- fun_l29_n794(x)
- else
- fun_l29_n953(x)
- end
-end
-
-def fun_l28_n127(x)
- if (x < 1)
- fun_l29_n858(x)
- else
- fun_l29_n582(x)
- end
-end
-
-def fun_l28_n128(x)
- if (x < 1)
- fun_l29_n762(x)
- else
- fun_l29_n710(x)
- end
-end
-
-def fun_l28_n129(x)
- if (x < 1)
- fun_l29_n541(x)
- else
- fun_l29_n182(x)
- end
-end
-
-def fun_l28_n130(x)
- if (x < 1)
- fun_l29_n325(x)
- else
- fun_l29_n318(x)
- end
-end
-
-def fun_l28_n131(x)
- if (x < 1)
- fun_l29_n751(x)
- else
- fun_l29_n499(x)
- end
-end
-
-def fun_l28_n132(x)
- if (x < 1)
- fun_l29_n185(x)
- else
- fun_l29_n547(x)
- end
-end
-
-def fun_l28_n133(x)
- if (x < 1)
- fun_l29_n155(x)
- else
- fun_l29_n691(x)
- end
-end
-
-def fun_l28_n134(x)
- if (x < 1)
- fun_l29_n326(x)
- else
- fun_l29_n950(x)
- end
-end
-
-def fun_l28_n135(x)
- if (x < 1)
- fun_l29_n782(x)
- else
- fun_l29_n968(x)
- end
-end
-
-def fun_l28_n136(x)
- if (x < 1)
- fun_l29_n349(x)
- else
- fun_l29_n668(x)
- end
-end
-
-def fun_l28_n137(x)
- if (x < 1)
- fun_l29_n897(x)
- else
- fun_l29_n243(x)
- end
-end
-
-def fun_l28_n138(x)
- if (x < 1)
- fun_l29_n994(x)
- else
- fun_l29_n84(x)
- end
-end
-
-def fun_l28_n139(x)
- if (x < 1)
- fun_l29_n95(x)
- else
- fun_l29_n705(x)
- end
-end
-
-def fun_l28_n140(x)
- if (x < 1)
- fun_l29_n864(x)
- else
- fun_l29_n636(x)
- end
-end
-
-def fun_l28_n141(x)
- if (x < 1)
- fun_l29_n587(x)
- else
- fun_l29_n908(x)
- end
-end
-
-def fun_l28_n142(x)
- if (x < 1)
- fun_l29_n255(x)
- else
- fun_l29_n633(x)
- end
-end
-
-def fun_l28_n143(x)
- if (x < 1)
- fun_l29_n142(x)
- else
- fun_l29_n305(x)
- end
-end
-
-def fun_l28_n144(x)
- if (x < 1)
- fun_l29_n735(x)
- else
- fun_l29_n637(x)
- end
-end
-
-def fun_l28_n145(x)
- if (x < 1)
- fun_l29_n637(x)
- else
- fun_l29_n975(x)
- end
-end
-
-def fun_l28_n146(x)
- if (x < 1)
- fun_l29_n560(x)
- else
- fun_l29_n534(x)
- end
-end
-
-def fun_l28_n147(x)
- if (x < 1)
- fun_l29_n829(x)
- else
- fun_l29_n344(x)
- end
-end
-
-def fun_l28_n148(x)
- if (x < 1)
- fun_l29_n38(x)
- else
- fun_l29_n339(x)
- end
-end
-
-def fun_l28_n149(x)
- if (x < 1)
- fun_l29_n178(x)
- else
- fun_l29_n178(x)
- end
-end
-
-def fun_l28_n150(x)
- if (x < 1)
- fun_l29_n434(x)
- else
- fun_l29_n677(x)
- end
-end
-
-def fun_l28_n151(x)
- if (x < 1)
- fun_l29_n910(x)
- else
- fun_l29_n230(x)
- end
-end
-
-def fun_l28_n152(x)
- if (x < 1)
- fun_l29_n750(x)
- else
- fun_l29_n534(x)
- end
-end
-
-def fun_l28_n153(x)
- if (x < 1)
- fun_l29_n550(x)
- else
- fun_l29_n757(x)
- end
-end
-
-def fun_l28_n154(x)
- if (x < 1)
- fun_l29_n832(x)
- else
- fun_l29_n177(x)
- end
-end
-
-def fun_l28_n155(x)
- if (x < 1)
- fun_l29_n724(x)
- else
- fun_l29_n669(x)
- end
-end
-
-def fun_l28_n156(x)
- if (x < 1)
- fun_l29_n362(x)
- else
- fun_l29_n882(x)
- end
-end
-
-def fun_l28_n157(x)
- if (x < 1)
- fun_l29_n164(x)
- else
- fun_l29_n919(x)
- end
-end
-
-def fun_l28_n158(x)
- if (x < 1)
- fun_l29_n300(x)
- else
- fun_l29_n343(x)
- end
-end
-
-def fun_l28_n159(x)
- if (x < 1)
- fun_l29_n395(x)
- else
- fun_l29_n535(x)
- end
-end
-
-def fun_l28_n160(x)
- if (x < 1)
- fun_l29_n127(x)
- else
- fun_l29_n666(x)
- end
-end
-
-def fun_l28_n161(x)
- if (x < 1)
- fun_l29_n207(x)
- else
- fun_l29_n935(x)
- end
-end
-
-def fun_l28_n162(x)
- if (x < 1)
- fun_l29_n865(x)
- else
- fun_l29_n692(x)
- end
-end
-
-def fun_l28_n163(x)
- if (x < 1)
- fun_l29_n429(x)
- else
- fun_l29_n329(x)
- end
-end
-
-def fun_l28_n164(x)
- if (x < 1)
- fun_l29_n874(x)
- else
- fun_l29_n650(x)
- end
-end
-
-def fun_l28_n165(x)
- if (x < 1)
- fun_l29_n985(x)
- else
- fun_l29_n488(x)
- end
-end
-
-def fun_l28_n166(x)
- if (x < 1)
- fun_l29_n425(x)
- else
- fun_l29_n297(x)
- end
-end
-
-def fun_l28_n167(x)
- if (x < 1)
- fun_l29_n468(x)
- else
- fun_l29_n331(x)
- end
-end
-
-def fun_l28_n168(x)
- if (x < 1)
- fun_l29_n991(x)
- else
- fun_l29_n399(x)
- end
-end
-
-def fun_l28_n169(x)
- if (x < 1)
- fun_l29_n402(x)
- else
- fun_l29_n931(x)
- end
-end
-
-def fun_l28_n170(x)
- if (x < 1)
- fun_l29_n984(x)
- else
- fun_l29_n586(x)
- end
-end
-
-def fun_l28_n171(x)
- if (x < 1)
- fun_l29_n305(x)
- else
- fun_l29_n638(x)
- end
-end
-
-def fun_l28_n172(x)
- if (x < 1)
- fun_l29_n251(x)
- else
- fun_l29_n94(x)
- end
-end
-
-def fun_l28_n173(x)
- if (x < 1)
- fun_l29_n225(x)
- else
- fun_l29_n466(x)
- end
-end
-
-def fun_l28_n174(x)
- if (x < 1)
- fun_l29_n643(x)
- else
- fun_l29_n974(x)
- end
-end
-
-def fun_l28_n175(x)
- if (x < 1)
- fun_l29_n634(x)
- else
- fun_l29_n321(x)
- end
-end
-
-def fun_l28_n176(x)
- if (x < 1)
- fun_l29_n269(x)
- else
- fun_l29_n237(x)
- end
-end
-
-def fun_l28_n177(x)
- if (x < 1)
- fun_l29_n649(x)
- else
- fun_l29_n661(x)
- end
-end
-
-def fun_l28_n178(x)
- if (x < 1)
- fun_l29_n919(x)
- else
- fun_l29_n997(x)
- end
-end
-
-def fun_l28_n179(x)
- if (x < 1)
- fun_l29_n634(x)
- else
- fun_l29_n967(x)
- end
-end
-
-def fun_l28_n180(x)
- if (x < 1)
- fun_l29_n798(x)
- else
- fun_l29_n733(x)
- end
-end
-
-def fun_l28_n181(x)
- if (x < 1)
- fun_l29_n975(x)
- else
- fun_l29_n28(x)
- end
-end
-
-def fun_l28_n182(x)
- if (x < 1)
- fun_l29_n973(x)
- else
- fun_l29_n616(x)
- end
-end
-
-def fun_l28_n183(x)
- if (x < 1)
- fun_l29_n360(x)
- else
- fun_l29_n18(x)
- end
-end
-
-def fun_l28_n184(x)
- if (x < 1)
- fun_l29_n281(x)
- else
- fun_l29_n271(x)
- end
-end
-
-def fun_l28_n185(x)
- if (x < 1)
- fun_l29_n216(x)
- else
- fun_l29_n193(x)
- end
-end
-
-def fun_l28_n186(x)
- if (x < 1)
- fun_l29_n262(x)
- else
- fun_l29_n509(x)
- end
-end
-
-def fun_l28_n187(x)
- if (x < 1)
- fun_l29_n160(x)
- else
- fun_l29_n770(x)
- end
-end
-
-def fun_l28_n188(x)
- if (x < 1)
- fun_l29_n411(x)
- else
- fun_l29_n605(x)
- end
-end
-
-def fun_l28_n189(x)
- if (x < 1)
- fun_l29_n397(x)
- else
- fun_l29_n205(x)
- end
-end
-
-def fun_l28_n190(x)
- if (x < 1)
- fun_l29_n529(x)
- else
- fun_l29_n545(x)
- end
-end
-
-def fun_l28_n191(x)
- if (x < 1)
- fun_l29_n528(x)
- else
- fun_l29_n472(x)
- end
-end
-
-def fun_l28_n192(x)
- if (x < 1)
- fun_l29_n843(x)
- else
- fun_l29_n88(x)
- end
-end
-
-def fun_l28_n193(x)
- if (x < 1)
- fun_l29_n827(x)
- else
- fun_l29_n6(x)
- end
-end
-
-def fun_l28_n194(x)
- if (x < 1)
- fun_l29_n567(x)
- else
- fun_l29_n622(x)
- end
-end
-
-def fun_l28_n195(x)
- if (x < 1)
- fun_l29_n799(x)
- else
- fun_l29_n605(x)
- end
-end
-
-def fun_l28_n196(x)
- if (x < 1)
- fun_l29_n930(x)
- else
- fun_l29_n643(x)
- end
-end
-
-def fun_l28_n197(x)
- if (x < 1)
- fun_l29_n445(x)
- else
- fun_l29_n226(x)
- end
-end
-
-def fun_l28_n198(x)
- if (x < 1)
- fun_l29_n453(x)
- else
- fun_l29_n941(x)
- end
-end
-
-def fun_l28_n199(x)
- if (x < 1)
- fun_l29_n40(x)
- else
- fun_l29_n602(x)
- end
-end
-
-def fun_l28_n200(x)
- if (x < 1)
- fun_l29_n804(x)
- else
- fun_l29_n355(x)
- end
-end
-
-def fun_l28_n201(x)
- if (x < 1)
- fun_l29_n894(x)
- else
- fun_l29_n749(x)
- end
-end
-
-def fun_l28_n202(x)
- if (x < 1)
- fun_l29_n105(x)
- else
- fun_l29_n182(x)
- end
-end
-
-def fun_l28_n203(x)
- if (x < 1)
- fun_l29_n106(x)
- else
- fun_l29_n670(x)
- end
-end
-
-def fun_l28_n204(x)
- if (x < 1)
- fun_l29_n897(x)
- else
- fun_l29_n337(x)
- end
-end
-
-def fun_l28_n205(x)
- if (x < 1)
- fun_l29_n149(x)
- else
- fun_l29_n822(x)
- end
-end
-
-def fun_l28_n206(x)
- if (x < 1)
- fun_l29_n2(x)
- else
- fun_l29_n370(x)
- end
-end
-
-def fun_l28_n207(x)
- if (x < 1)
- fun_l29_n430(x)
- else
- fun_l29_n262(x)
- end
-end
-
-def fun_l28_n208(x)
- if (x < 1)
- fun_l29_n275(x)
- else
- fun_l29_n156(x)
- end
-end
-
-def fun_l28_n209(x)
- if (x < 1)
- fun_l29_n677(x)
- else
- fun_l29_n620(x)
- end
-end
-
-def fun_l28_n210(x)
- if (x < 1)
- fun_l29_n732(x)
- else
- fun_l29_n533(x)
- end
-end
-
-def fun_l28_n211(x)
- if (x < 1)
- fun_l29_n934(x)
- else
- fun_l29_n334(x)
- end
-end
-
-def fun_l28_n212(x)
- if (x < 1)
- fun_l29_n656(x)
- else
- fun_l29_n889(x)
- end
-end
-
-def fun_l28_n213(x)
- if (x < 1)
- fun_l29_n210(x)
- else
- fun_l29_n225(x)
- end
-end
-
-def fun_l28_n214(x)
- if (x < 1)
- fun_l29_n496(x)
- else
- fun_l29_n901(x)
- end
-end
-
-def fun_l28_n215(x)
- if (x < 1)
- fun_l29_n190(x)
- else
- fun_l29_n254(x)
- end
-end
-
-def fun_l28_n216(x)
- if (x < 1)
- fun_l29_n708(x)
- else
- fun_l29_n680(x)
- end
-end
-
-def fun_l28_n217(x)
- if (x < 1)
- fun_l29_n616(x)
- else
- fun_l29_n942(x)
- end
-end
-
-def fun_l28_n218(x)
- if (x < 1)
- fun_l29_n515(x)
- else
- fun_l29_n269(x)
- end
-end
-
-def fun_l28_n219(x)
- if (x < 1)
- fun_l29_n422(x)
- else
- fun_l29_n644(x)
- end
-end
-
-def fun_l28_n220(x)
- if (x < 1)
- fun_l29_n114(x)
- else
- fun_l29_n566(x)
- end
-end
-
-def fun_l28_n221(x)
- if (x < 1)
- fun_l29_n750(x)
- else
- fun_l29_n799(x)
- end
-end
-
-def fun_l28_n222(x)
- if (x < 1)
- fun_l29_n121(x)
- else
- fun_l29_n556(x)
- end
-end
-
-def fun_l28_n223(x)
- if (x < 1)
- fun_l29_n161(x)
- else
- fun_l29_n422(x)
- end
-end
-
-def fun_l28_n224(x)
- if (x < 1)
- fun_l29_n779(x)
- else
- fun_l29_n214(x)
- end
-end
-
-def fun_l28_n225(x)
- if (x < 1)
- fun_l29_n355(x)
- else
- fun_l29_n10(x)
- end
-end
-
-def fun_l28_n226(x)
- if (x < 1)
- fun_l29_n923(x)
- else
- fun_l29_n672(x)
- end
-end
-
-def fun_l28_n227(x)
- if (x < 1)
- fun_l29_n578(x)
- else
- fun_l29_n809(x)
- end
-end
-
-def fun_l28_n228(x)
- if (x < 1)
- fun_l29_n277(x)
- else
- fun_l29_n979(x)
- end
-end
-
-def fun_l28_n229(x)
- if (x < 1)
- fun_l29_n248(x)
- else
- fun_l29_n731(x)
- end
-end
-
-def fun_l28_n230(x)
- if (x < 1)
- fun_l29_n374(x)
- else
- fun_l29_n675(x)
- end
-end
-
-def fun_l28_n231(x)
- if (x < 1)
- fun_l29_n339(x)
- else
- fun_l29_n62(x)
- end
-end
-
-def fun_l28_n232(x)
- if (x < 1)
- fun_l29_n350(x)
- else
- fun_l29_n51(x)
- end
-end
-
-def fun_l28_n233(x)
- if (x < 1)
- fun_l29_n606(x)
- else
- fun_l29_n460(x)
- end
-end
-
-def fun_l28_n234(x)
- if (x < 1)
- fun_l29_n266(x)
- else
- fun_l29_n843(x)
- end
-end
-
-def fun_l28_n235(x)
- if (x < 1)
- fun_l29_n762(x)
- else
- fun_l29_n1(x)
- end
-end
-
-def fun_l28_n236(x)
- if (x < 1)
- fun_l29_n405(x)
- else
- fun_l29_n867(x)
- end
-end
-
-def fun_l28_n237(x)
- if (x < 1)
- fun_l29_n62(x)
- else
- fun_l29_n288(x)
- end
-end
-
-def fun_l28_n238(x)
- if (x < 1)
- fun_l29_n120(x)
- else
- fun_l29_n346(x)
- end
-end
-
-def fun_l28_n239(x)
- if (x < 1)
- fun_l29_n789(x)
- else
- fun_l29_n633(x)
- end
-end
-
-def fun_l28_n240(x)
- if (x < 1)
- fun_l29_n467(x)
- else
- fun_l29_n150(x)
- end
-end
-
-def fun_l28_n241(x)
- if (x < 1)
- fun_l29_n487(x)
- else
- fun_l29_n671(x)
- end
-end
-
-def fun_l28_n242(x)
- if (x < 1)
- fun_l29_n147(x)
- else
- fun_l29_n636(x)
- end
-end
-
-def fun_l28_n243(x)
- if (x < 1)
- fun_l29_n710(x)
- else
- fun_l29_n196(x)
- end
-end
-
-def fun_l28_n244(x)
- if (x < 1)
- fun_l29_n943(x)
- else
- fun_l29_n768(x)
- end
-end
-
-def fun_l28_n245(x)
- if (x < 1)
- fun_l29_n670(x)
- else
- fun_l29_n522(x)
- end
-end
-
-def fun_l28_n246(x)
- if (x < 1)
- fun_l29_n12(x)
- else
- fun_l29_n459(x)
- end
-end
-
-def fun_l28_n247(x)
- if (x < 1)
- fun_l29_n901(x)
- else
- fun_l29_n726(x)
- end
-end
-
-def fun_l28_n248(x)
- if (x < 1)
- fun_l29_n824(x)
- else
- fun_l29_n327(x)
- end
-end
-
-def fun_l28_n249(x)
- if (x < 1)
- fun_l29_n327(x)
- else
- fun_l29_n343(x)
- end
-end
-
-def fun_l28_n250(x)
- if (x < 1)
- fun_l29_n242(x)
- else
- fun_l29_n764(x)
- end
-end
-
-def fun_l28_n251(x)
- if (x < 1)
- fun_l29_n780(x)
- else
- fun_l29_n117(x)
- end
-end
-
-def fun_l28_n252(x)
- if (x < 1)
- fun_l29_n309(x)
- else
- fun_l29_n821(x)
- end
-end
-
-def fun_l28_n253(x)
- if (x < 1)
- fun_l29_n250(x)
- else
- fun_l29_n933(x)
- end
-end
-
-def fun_l28_n254(x)
- if (x < 1)
- fun_l29_n470(x)
- else
- fun_l29_n808(x)
- end
-end
-
-def fun_l28_n255(x)
- if (x < 1)
- fun_l29_n425(x)
- else
- fun_l29_n800(x)
- end
-end
-
-def fun_l28_n256(x)
- if (x < 1)
- fun_l29_n913(x)
- else
- fun_l29_n199(x)
- end
-end
-
-def fun_l28_n257(x)
- if (x < 1)
- fun_l29_n25(x)
- else
- fun_l29_n412(x)
- end
-end
-
-def fun_l28_n258(x)
- if (x < 1)
- fun_l29_n194(x)
- else
- fun_l29_n606(x)
- end
-end
-
-def fun_l28_n259(x)
- if (x < 1)
- fun_l29_n653(x)
- else
- fun_l29_n72(x)
- end
-end
-
-def fun_l28_n260(x)
- if (x < 1)
- fun_l29_n198(x)
- else
- fun_l29_n742(x)
- end
-end
-
-def fun_l28_n261(x)
- if (x < 1)
- fun_l29_n452(x)
- else
- fun_l29_n522(x)
- end
-end
-
-def fun_l28_n262(x)
- if (x < 1)
- fun_l29_n214(x)
- else
- fun_l29_n131(x)
- end
-end
-
-def fun_l28_n263(x)
- if (x < 1)
- fun_l29_n481(x)
- else
- fun_l29_n848(x)
- end
-end
-
-def fun_l28_n264(x)
- if (x < 1)
- fun_l29_n147(x)
- else
- fun_l29_n187(x)
- end
-end
-
-def fun_l28_n265(x)
- if (x < 1)
- fun_l29_n476(x)
- else
- fun_l29_n859(x)
- end
-end
-
-def fun_l28_n266(x)
- if (x < 1)
- fun_l29_n130(x)
- else
- fun_l29_n356(x)
- end
-end
-
-def fun_l28_n267(x)
- if (x < 1)
- fun_l29_n427(x)
- else
- fun_l29_n578(x)
- end
-end
-
-def fun_l28_n268(x)
- if (x < 1)
- fun_l29_n810(x)
- else
- fun_l29_n483(x)
- end
-end
-
-def fun_l28_n269(x)
- if (x < 1)
- fun_l29_n496(x)
- else
- fun_l29_n548(x)
- end
-end
-
-def fun_l28_n270(x)
- if (x < 1)
- fun_l29_n159(x)
- else
- fun_l29_n184(x)
- end
-end
-
-def fun_l28_n271(x)
- if (x < 1)
- fun_l29_n407(x)
- else
- fun_l29_n855(x)
- end
-end
-
-def fun_l28_n272(x)
- if (x < 1)
- fun_l29_n41(x)
- else
- fun_l29_n493(x)
- end
-end
-
-def fun_l28_n273(x)
- if (x < 1)
- fun_l29_n853(x)
- else
- fun_l29_n711(x)
- end
-end
-
-def fun_l28_n274(x)
- if (x < 1)
- fun_l29_n397(x)
- else
- fun_l29_n68(x)
- end
-end
-
-def fun_l28_n275(x)
- if (x < 1)
- fun_l29_n744(x)
- else
- fun_l29_n944(x)
- end
-end
-
-def fun_l28_n276(x)
- if (x < 1)
- fun_l29_n641(x)
- else
- fun_l29_n766(x)
- end
-end
-
-def fun_l28_n277(x)
- if (x < 1)
- fun_l29_n983(x)
- else
- fun_l29_n587(x)
- end
-end
-
-def fun_l28_n278(x)
- if (x < 1)
- fun_l29_n683(x)
- else
- fun_l29_n192(x)
- end
-end
-
-def fun_l28_n279(x)
- if (x < 1)
- fun_l29_n252(x)
- else
- fun_l29_n30(x)
- end
-end
-
-def fun_l28_n280(x)
- if (x < 1)
- fun_l29_n129(x)
- else
- fun_l29_n561(x)
- end
-end
-
-def fun_l28_n281(x)
- if (x < 1)
- fun_l29_n828(x)
- else
- fun_l29_n697(x)
- end
-end
-
-def fun_l28_n282(x)
- if (x < 1)
- fun_l29_n492(x)
- else
- fun_l29_n243(x)
- end
-end
-
-def fun_l28_n283(x)
- if (x < 1)
- fun_l29_n642(x)
- else
- fun_l29_n736(x)
- end
-end
-
-def fun_l28_n284(x)
- if (x < 1)
- fun_l29_n448(x)
- else
- fun_l29_n838(x)
- end
-end
-
-def fun_l28_n285(x)
- if (x < 1)
- fun_l29_n133(x)
- else
- fun_l29_n372(x)
- end
-end
-
-def fun_l28_n286(x)
- if (x < 1)
- fun_l29_n318(x)
- else
- fun_l29_n739(x)
- end
-end
-
-def fun_l28_n287(x)
- if (x < 1)
- fun_l29_n449(x)
- else
- fun_l29_n743(x)
- end
-end
-
-def fun_l28_n288(x)
- if (x < 1)
- fun_l29_n769(x)
- else
- fun_l29_n496(x)
- end
-end
-
-def fun_l28_n289(x)
- if (x < 1)
- fun_l29_n455(x)
- else
- fun_l29_n893(x)
- end
-end
-
-def fun_l28_n290(x)
- if (x < 1)
- fun_l29_n651(x)
- else
- fun_l29_n865(x)
- end
-end
-
-def fun_l28_n291(x)
- if (x < 1)
- fun_l29_n194(x)
- else
- fun_l29_n491(x)
- end
-end
-
-def fun_l28_n292(x)
- if (x < 1)
- fun_l29_n178(x)
- else
- fun_l29_n96(x)
- end
-end
-
-def fun_l28_n293(x)
- if (x < 1)
- fun_l29_n32(x)
- else
- fun_l29_n262(x)
- end
-end
-
-def fun_l28_n294(x)
- if (x < 1)
- fun_l29_n706(x)
- else
- fun_l29_n864(x)
- end
-end
-
-def fun_l28_n295(x)
- if (x < 1)
- fun_l29_n209(x)
- else
- fun_l29_n220(x)
- end
-end
-
-def fun_l28_n296(x)
- if (x < 1)
- fun_l29_n970(x)
- else
- fun_l29_n194(x)
- end
-end
-
-def fun_l28_n297(x)
- if (x < 1)
- fun_l29_n959(x)
- else
- fun_l29_n472(x)
- end
-end
-
-def fun_l28_n298(x)
- if (x < 1)
- fun_l29_n778(x)
- else
- fun_l29_n66(x)
- end
-end
-
-def fun_l28_n299(x)
- if (x < 1)
- fun_l29_n942(x)
- else
- fun_l29_n461(x)
- end
-end
-
-def fun_l28_n300(x)
- if (x < 1)
- fun_l29_n563(x)
- else
- fun_l29_n426(x)
- end
-end
-
-def fun_l28_n301(x)
- if (x < 1)
- fun_l29_n603(x)
- else
- fun_l29_n968(x)
- end
-end
-
-def fun_l28_n302(x)
- if (x < 1)
- fun_l29_n908(x)
- else
- fun_l29_n767(x)
- end
-end
-
-def fun_l28_n303(x)
- if (x < 1)
- fun_l29_n387(x)
- else
- fun_l29_n484(x)
- end
-end
-
-def fun_l28_n304(x)
- if (x < 1)
- fun_l29_n744(x)
- else
- fun_l29_n463(x)
- end
-end
-
-def fun_l28_n305(x)
- if (x < 1)
- fun_l29_n964(x)
- else
- fun_l29_n43(x)
- end
-end
-
-def fun_l28_n306(x)
- if (x < 1)
- fun_l29_n65(x)
- else
- fun_l29_n910(x)
- end
-end
-
-def fun_l28_n307(x)
- if (x < 1)
- fun_l29_n318(x)
- else
- fun_l29_n375(x)
- end
-end
-
-def fun_l28_n308(x)
- if (x < 1)
- fun_l29_n775(x)
- else
- fun_l29_n588(x)
- end
-end
-
-def fun_l28_n309(x)
- if (x < 1)
- fun_l29_n977(x)
- else
- fun_l29_n299(x)
- end
-end
-
-def fun_l28_n310(x)
- if (x < 1)
- fun_l29_n497(x)
- else
- fun_l29_n792(x)
- end
-end
-
-def fun_l28_n311(x)
- if (x < 1)
- fun_l29_n909(x)
- else
- fun_l29_n740(x)
- end
-end
-
-def fun_l28_n312(x)
- if (x < 1)
- fun_l29_n967(x)
- else
- fun_l29_n4(x)
- end
-end
-
-def fun_l28_n313(x)
- if (x < 1)
- fun_l29_n455(x)
- else
- fun_l29_n11(x)
- end
-end
-
-def fun_l28_n314(x)
- if (x < 1)
- fun_l29_n996(x)
- else
- fun_l29_n851(x)
- end
-end
-
-def fun_l28_n315(x)
- if (x < 1)
- fun_l29_n110(x)
- else
- fun_l29_n517(x)
- end
-end
-
-def fun_l28_n316(x)
- if (x < 1)
- fun_l29_n648(x)
- else
- fun_l29_n279(x)
- end
-end
-
-def fun_l28_n317(x)
- if (x < 1)
- fun_l29_n820(x)
- else
- fun_l29_n157(x)
- end
-end
-
-def fun_l28_n318(x)
- if (x < 1)
- fun_l29_n957(x)
- else
- fun_l29_n93(x)
- end
-end
-
-def fun_l28_n319(x)
- if (x < 1)
- fun_l29_n681(x)
- else
- fun_l29_n508(x)
- end
-end
-
-def fun_l28_n320(x)
- if (x < 1)
- fun_l29_n613(x)
- else
- fun_l29_n274(x)
- end
-end
-
-def fun_l28_n321(x)
- if (x < 1)
- fun_l29_n239(x)
- else
- fun_l29_n862(x)
- end
-end
-
-def fun_l28_n322(x)
- if (x < 1)
- fun_l29_n101(x)
- else
- fun_l29_n81(x)
- end
-end
-
-def fun_l28_n323(x)
- if (x < 1)
- fun_l29_n96(x)
- else
- fun_l29_n908(x)
- end
-end
-
-def fun_l28_n324(x)
- if (x < 1)
- fun_l29_n443(x)
- else
- fun_l29_n78(x)
- end
-end
-
-def fun_l28_n325(x)
- if (x < 1)
- fun_l29_n857(x)
- else
- fun_l29_n210(x)
- end
-end
-
-def fun_l28_n326(x)
- if (x < 1)
- fun_l29_n51(x)
- else
- fun_l29_n524(x)
- end
-end
-
-def fun_l28_n327(x)
- if (x < 1)
- fun_l29_n381(x)
- else
- fun_l29_n309(x)
- end
-end
-
-def fun_l28_n328(x)
- if (x < 1)
- fun_l29_n787(x)
- else
- fun_l29_n176(x)
- end
-end
-
-def fun_l28_n329(x)
- if (x < 1)
- fun_l29_n568(x)
- else
- fun_l29_n652(x)
- end
-end
-
-def fun_l28_n330(x)
- if (x < 1)
- fun_l29_n1(x)
- else
- fun_l29_n634(x)
- end
-end
-
-def fun_l28_n331(x)
- if (x < 1)
- fun_l29_n491(x)
- else
- fun_l29_n365(x)
- end
-end
-
-def fun_l28_n332(x)
- if (x < 1)
- fun_l29_n604(x)
- else
- fun_l29_n586(x)
- end
-end
-
-def fun_l28_n333(x)
- if (x < 1)
- fun_l29_n811(x)
- else
- fun_l29_n981(x)
- end
-end
-
-def fun_l28_n334(x)
- if (x < 1)
- fun_l29_n485(x)
- else
- fun_l29_n843(x)
- end
-end
-
-def fun_l28_n335(x)
- if (x < 1)
- fun_l29_n188(x)
- else
- fun_l29_n805(x)
- end
-end
-
-def fun_l28_n336(x)
- if (x < 1)
- fun_l29_n818(x)
- else
- fun_l29_n650(x)
- end
-end
-
-def fun_l28_n337(x)
- if (x < 1)
- fun_l29_n829(x)
- else
- fun_l29_n13(x)
- end
-end
-
-def fun_l28_n338(x)
- if (x < 1)
- fun_l29_n665(x)
- else
- fun_l29_n7(x)
- end
-end
-
-def fun_l28_n339(x)
- if (x < 1)
- fun_l29_n347(x)
- else
- fun_l29_n914(x)
- end
-end
-
-def fun_l28_n340(x)
- if (x < 1)
- fun_l29_n819(x)
- else
- fun_l29_n7(x)
- end
-end
-
-def fun_l28_n341(x)
- if (x < 1)
- fun_l29_n108(x)
- else
- fun_l29_n838(x)
- end
-end
-
-def fun_l28_n342(x)
- if (x < 1)
- fun_l29_n292(x)
- else
- fun_l29_n831(x)
- end
-end
-
-def fun_l28_n343(x)
- if (x < 1)
- fun_l29_n892(x)
- else
- fun_l29_n717(x)
- end
-end
-
-def fun_l28_n344(x)
- if (x < 1)
- fun_l29_n664(x)
- else
- fun_l29_n422(x)
- end
-end
-
-def fun_l28_n345(x)
- if (x < 1)
- fun_l29_n59(x)
- else
- fun_l29_n858(x)
- end
-end
-
-def fun_l28_n346(x)
- if (x < 1)
- fun_l29_n88(x)
- else
- fun_l29_n97(x)
- end
-end
-
-def fun_l28_n347(x)
- if (x < 1)
- fun_l29_n852(x)
- else
- fun_l29_n37(x)
- end
-end
-
-def fun_l28_n348(x)
- if (x < 1)
- fun_l29_n201(x)
- else
- fun_l29_n663(x)
- end
-end
-
-def fun_l28_n349(x)
- if (x < 1)
- fun_l29_n928(x)
- else
- fun_l29_n743(x)
- end
-end
-
-def fun_l28_n350(x)
- if (x < 1)
- fun_l29_n206(x)
- else
- fun_l29_n609(x)
- end
-end
-
-def fun_l28_n351(x)
- if (x < 1)
- fun_l29_n98(x)
- else
- fun_l29_n659(x)
- end
-end
-
-def fun_l28_n352(x)
- if (x < 1)
- fun_l29_n350(x)
- else
- fun_l29_n604(x)
- end
-end
-
-def fun_l28_n353(x)
- if (x < 1)
- fun_l29_n273(x)
- else
- fun_l29_n831(x)
- end
-end
-
-def fun_l28_n354(x)
- if (x < 1)
- fun_l29_n377(x)
- else
- fun_l29_n926(x)
- end
-end
-
-def fun_l28_n355(x)
- if (x < 1)
- fun_l29_n783(x)
- else
- fun_l29_n646(x)
- end
-end
-
-def fun_l28_n356(x)
- if (x < 1)
- fun_l29_n968(x)
- else
- fun_l29_n587(x)
- end
-end
-
-def fun_l28_n357(x)
- if (x < 1)
- fun_l29_n813(x)
- else
- fun_l29_n791(x)
- end
-end
-
-def fun_l28_n358(x)
- if (x < 1)
- fun_l29_n130(x)
- else
- fun_l29_n851(x)
- end
-end
-
-def fun_l28_n359(x)
- if (x < 1)
- fun_l29_n858(x)
- else
- fun_l29_n112(x)
- end
-end
-
-def fun_l28_n360(x)
- if (x < 1)
- fun_l29_n349(x)
- else
- fun_l29_n612(x)
- end
-end
-
-def fun_l28_n361(x)
- if (x < 1)
- fun_l29_n282(x)
- else
- fun_l29_n357(x)
- end
-end
-
-def fun_l28_n362(x)
- if (x < 1)
- fun_l29_n144(x)
- else
- fun_l29_n426(x)
- end
-end
-
-def fun_l28_n363(x)
- if (x < 1)
- fun_l29_n438(x)
- else
- fun_l29_n539(x)
- end
-end
-
-def fun_l28_n364(x)
- if (x < 1)
- fun_l29_n321(x)
- else
- fun_l29_n874(x)
- end
-end
-
-def fun_l28_n365(x)
- if (x < 1)
- fun_l29_n443(x)
- else
- fun_l29_n985(x)
- end
-end
-
-def fun_l28_n366(x)
- if (x < 1)
- fun_l29_n436(x)
- else
- fun_l29_n787(x)
- end
-end
-
-def fun_l28_n367(x)
- if (x < 1)
- fun_l29_n354(x)
- else
- fun_l29_n75(x)
- end
-end
-
-def fun_l28_n368(x)
- if (x < 1)
- fun_l29_n515(x)
- else
- fun_l29_n57(x)
- end
-end
-
-def fun_l28_n369(x)
- if (x < 1)
- fun_l29_n222(x)
- else
- fun_l29_n954(x)
- end
-end
-
-def fun_l28_n370(x)
- if (x < 1)
- fun_l29_n37(x)
- else
- fun_l29_n683(x)
- end
-end
-
-def fun_l28_n371(x)
- if (x < 1)
- fun_l29_n104(x)
- else
- fun_l29_n721(x)
- end
-end
-
-def fun_l28_n372(x)
- if (x < 1)
- fun_l29_n763(x)
- else
- fun_l29_n173(x)
- end
-end
-
-def fun_l28_n373(x)
- if (x < 1)
- fun_l29_n693(x)
- else
- fun_l29_n132(x)
- end
-end
-
-def fun_l28_n374(x)
- if (x < 1)
- fun_l29_n586(x)
- else
- fun_l29_n992(x)
- end
-end
-
-def fun_l28_n375(x)
- if (x < 1)
- fun_l29_n815(x)
- else
- fun_l29_n721(x)
- end
-end
-
-def fun_l28_n376(x)
- if (x < 1)
- fun_l29_n653(x)
- else
- fun_l29_n67(x)
- end
-end
-
-def fun_l28_n377(x)
- if (x < 1)
- fun_l29_n710(x)
- else
- fun_l29_n787(x)
- end
-end
-
-def fun_l28_n378(x)
- if (x < 1)
- fun_l29_n448(x)
- else
- fun_l29_n170(x)
- end
-end
-
-def fun_l28_n379(x)
- if (x < 1)
- fun_l29_n433(x)
- else
- fun_l29_n970(x)
- end
-end
-
-def fun_l28_n380(x)
- if (x < 1)
- fun_l29_n933(x)
- else
- fun_l29_n995(x)
- end
-end
-
-def fun_l28_n381(x)
- if (x < 1)
- fun_l29_n78(x)
- else
- fun_l29_n791(x)
- end
-end
-
-def fun_l28_n382(x)
- if (x < 1)
- fun_l29_n101(x)
- else
- fun_l29_n592(x)
- end
-end
-
-def fun_l28_n383(x)
- if (x < 1)
- fun_l29_n470(x)
- else
- fun_l29_n988(x)
- end
-end
-
-def fun_l28_n384(x)
- if (x < 1)
- fun_l29_n260(x)
- else
- fun_l29_n359(x)
- end
-end
-
-def fun_l28_n385(x)
- if (x < 1)
- fun_l29_n743(x)
- else
- fun_l29_n373(x)
- end
-end
-
-def fun_l28_n386(x)
- if (x < 1)
- fun_l29_n49(x)
- else
- fun_l29_n591(x)
- end
-end
-
-def fun_l28_n387(x)
- if (x < 1)
- fun_l29_n271(x)
- else
- fun_l29_n924(x)
- end
-end
-
-def fun_l28_n388(x)
- if (x < 1)
- fun_l29_n876(x)
- else
- fun_l29_n219(x)
- end
-end
-
-def fun_l28_n389(x)
- if (x < 1)
- fun_l29_n262(x)
- else
- fun_l29_n857(x)
- end
-end
-
-def fun_l28_n390(x)
- if (x < 1)
- fun_l29_n217(x)
- else
- fun_l29_n198(x)
- end
-end
-
-def fun_l28_n391(x)
- if (x < 1)
- fun_l29_n603(x)
- else
- fun_l29_n87(x)
- end
-end
-
-def fun_l28_n392(x)
- if (x < 1)
- fun_l29_n498(x)
- else
- fun_l29_n913(x)
- end
-end
-
-def fun_l28_n393(x)
- if (x < 1)
- fun_l29_n795(x)
- else
- fun_l29_n87(x)
- end
-end
-
-def fun_l28_n394(x)
- if (x < 1)
- fun_l29_n528(x)
- else
- fun_l29_n217(x)
- end
-end
-
-def fun_l28_n395(x)
- if (x < 1)
- fun_l29_n300(x)
- else
- fun_l29_n725(x)
- end
-end
-
-def fun_l28_n396(x)
- if (x < 1)
- fun_l29_n538(x)
- else
- fun_l29_n812(x)
- end
-end
-
-def fun_l28_n397(x)
- if (x < 1)
- fun_l29_n179(x)
- else
- fun_l29_n765(x)
- end
-end
-
-def fun_l28_n398(x)
- if (x < 1)
- fun_l29_n28(x)
- else
- fun_l29_n475(x)
- end
-end
-
-def fun_l28_n399(x)
- if (x < 1)
- fun_l29_n471(x)
- else
- fun_l29_n368(x)
- end
-end
-
-def fun_l28_n400(x)
- if (x < 1)
- fun_l29_n241(x)
- else
- fun_l29_n461(x)
- end
-end
-
-def fun_l28_n401(x)
- if (x < 1)
- fun_l29_n707(x)
- else
- fun_l29_n502(x)
- end
-end
-
-def fun_l28_n402(x)
- if (x < 1)
- fun_l29_n129(x)
- else
- fun_l29_n176(x)
- end
-end
-
-def fun_l28_n403(x)
- if (x < 1)
- fun_l29_n410(x)
- else
- fun_l29_n954(x)
- end
-end
-
-def fun_l28_n404(x)
- if (x < 1)
- fun_l29_n203(x)
- else
- fun_l29_n455(x)
- end
-end
-
-def fun_l28_n405(x)
- if (x < 1)
- fun_l29_n238(x)
- else
- fun_l29_n865(x)
- end
-end
-
-def fun_l28_n406(x)
- if (x < 1)
- fun_l29_n836(x)
- else
- fun_l29_n778(x)
- end
-end
-
-def fun_l28_n407(x)
- if (x < 1)
- fun_l29_n620(x)
- else
- fun_l29_n879(x)
- end
-end
-
-def fun_l28_n408(x)
- if (x < 1)
- fun_l29_n656(x)
- else
- fun_l29_n594(x)
- end
-end
-
-def fun_l28_n409(x)
- if (x < 1)
- fun_l29_n382(x)
- else
- fun_l29_n51(x)
- end
-end
-
-def fun_l28_n410(x)
- if (x < 1)
- fun_l29_n357(x)
- else
- fun_l29_n660(x)
- end
-end
-
-def fun_l28_n411(x)
- if (x < 1)
- fun_l29_n900(x)
- else
- fun_l29_n902(x)
- end
-end
-
-def fun_l28_n412(x)
- if (x < 1)
- fun_l29_n645(x)
- else
- fun_l29_n0(x)
- end
-end
-
-def fun_l28_n413(x)
- if (x < 1)
- fun_l29_n250(x)
- else
- fun_l29_n499(x)
- end
-end
-
-def fun_l28_n414(x)
- if (x < 1)
- fun_l29_n700(x)
- else
- fun_l29_n301(x)
- end
-end
-
-def fun_l28_n415(x)
- if (x < 1)
- fun_l29_n711(x)
- else
- fun_l29_n83(x)
- end
-end
-
-def fun_l28_n416(x)
- if (x < 1)
- fun_l29_n332(x)
- else
- fun_l29_n237(x)
- end
-end
-
-def fun_l28_n417(x)
- if (x < 1)
- fun_l29_n573(x)
- else
- fun_l29_n822(x)
- end
-end
-
-def fun_l28_n418(x)
- if (x < 1)
- fun_l29_n766(x)
- else
- fun_l29_n131(x)
- end
-end
-
-def fun_l28_n419(x)
- if (x < 1)
- fun_l29_n696(x)
- else
- fun_l29_n772(x)
- end
-end
-
-def fun_l28_n420(x)
- if (x < 1)
- fun_l29_n361(x)
- else
- fun_l29_n598(x)
- end
-end
-
-def fun_l28_n421(x)
- if (x < 1)
- fun_l29_n941(x)
- else
- fun_l29_n403(x)
- end
-end
-
-def fun_l28_n422(x)
- if (x < 1)
- fun_l29_n471(x)
- else
- fun_l29_n636(x)
- end
-end
-
-def fun_l28_n423(x)
- if (x < 1)
- fun_l29_n650(x)
- else
- fun_l29_n787(x)
- end
-end
-
-def fun_l28_n424(x)
- if (x < 1)
- fun_l29_n982(x)
- else
- fun_l29_n51(x)
- end
-end
-
-def fun_l28_n425(x)
- if (x < 1)
- fun_l29_n140(x)
- else
- fun_l29_n255(x)
- end
-end
-
-def fun_l28_n426(x)
- if (x < 1)
- fun_l29_n694(x)
- else
- fun_l29_n777(x)
- end
-end
-
-def fun_l28_n427(x)
- if (x < 1)
- fun_l29_n984(x)
- else
- fun_l29_n118(x)
- end
-end
-
-def fun_l28_n428(x)
- if (x < 1)
- fun_l29_n641(x)
- else
- fun_l29_n904(x)
- end
-end
-
-def fun_l28_n429(x)
- if (x < 1)
- fun_l29_n537(x)
- else
- fun_l29_n950(x)
- end
-end
-
-def fun_l28_n430(x)
- if (x < 1)
- fun_l29_n844(x)
- else
- fun_l29_n350(x)
- end
-end
-
-def fun_l28_n431(x)
- if (x < 1)
- fun_l29_n223(x)
- else
- fun_l29_n711(x)
- end
-end
-
-def fun_l28_n432(x)
- if (x < 1)
- fun_l29_n287(x)
- else
- fun_l29_n424(x)
- end
-end
-
-def fun_l28_n433(x)
- if (x < 1)
- fun_l29_n447(x)
- else
- fun_l29_n253(x)
- end
-end
-
-def fun_l28_n434(x)
- if (x < 1)
- fun_l29_n484(x)
- else
- fun_l29_n377(x)
- end
-end
-
-def fun_l28_n435(x)
- if (x < 1)
- fun_l29_n899(x)
- else
- fun_l29_n385(x)
- end
-end
-
-def fun_l28_n436(x)
- if (x < 1)
- fun_l29_n13(x)
- else
- fun_l29_n910(x)
- end
-end
-
-def fun_l28_n437(x)
- if (x < 1)
- fun_l29_n431(x)
- else
- fun_l29_n505(x)
- end
-end
-
-def fun_l28_n438(x)
- if (x < 1)
- fun_l29_n974(x)
- else
- fun_l29_n162(x)
- end
-end
-
-def fun_l28_n439(x)
- if (x < 1)
- fun_l29_n833(x)
- else
- fun_l29_n26(x)
- end
-end
-
-def fun_l28_n440(x)
- if (x < 1)
- fun_l29_n576(x)
- else
- fun_l29_n783(x)
- end
-end
-
-def fun_l28_n441(x)
- if (x < 1)
- fun_l29_n580(x)
- else
- fun_l29_n476(x)
- end
-end
-
-def fun_l28_n442(x)
- if (x < 1)
- fun_l29_n415(x)
- else
- fun_l29_n695(x)
- end
-end
-
-def fun_l28_n443(x)
- if (x < 1)
- fun_l29_n279(x)
- else
- fun_l29_n442(x)
- end
-end
-
-def fun_l28_n444(x)
- if (x < 1)
- fun_l29_n784(x)
- else
- fun_l29_n25(x)
- end
-end
-
-def fun_l28_n445(x)
- if (x < 1)
- fun_l29_n682(x)
- else
- fun_l29_n632(x)
- end
-end
-
-def fun_l28_n446(x)
- if (x < 1)
- fun_l29_n793(x)
- else
- fun_l29_n199(x)
- end
-end
-
-def fun_l28_n447(x)
- if (x < 1)
- fun_l29_n885(x)
- else
- fun_l29_n590(x)
- end
-end
-
-def fun_l28_n448(x)
- if (x < 1)
- fun_l29_n457(x)
- else
- fun_l29_n664(x)
- end
-end
-
-def fun_l28_n449(x)
- if (x < 1)
- fun_l29_n272(x)
- else
- fun_l29_n207(x)
- end
-end
-
-def fun_l28_n450(x)
- if (x < 1)
- fun_l29_n73(x)
- else
- fun_l29_n598(x)
- end
-end
-
-def fun_l28_n451(x)
- if (x < 1)
- fun_l29_n674(x)
- else
- fun_l29_n305(x)
- end
-end
-
-def fun_l28_n452(x)
- if (x < 1)
- fun_l29_n97(x)
- else
- fun_l29_n472(x)
- end
-end
-
-def fun_l28_n453(x)
- if (x < 1)
- fun_l29_n995(x)
- else
- fun_l29_n156(x)
- end
-end
-
-def fun_l28_n454(x)
- if (x < 1)
- fun_l29_n890(x)
- else
- fun_l29_n885(x)
- end
-end
-
-def fun_l28_n455(x)
- if (x < 1)
- fun_l29_n481(x)
- else
- fun_l29_n712(x)
- end
-end
-
-def fun_l28_n456(x)
- if (x < 1)
- fun_l29_n34(x)
- else
- fun_l29_n186(x)
- end
-end
-
-def fun_l28_n457(x)
- if (x < 1)
- fun_l29_n767(x)
- else
- fun_l29_n769(x)
- end
-end
-
-def fun_l28_n458(x)
- if (x < 1)
- fun_l29_n185(x)
- else
- fun_l29_n55(x)
- end
-end
-
-def fun_l28_n459(x)
- if (x < 1)
- fun_l29_n826(x)
- else
- fun_l29_n954(x)
- end
-end
-
-def fun_l28_n460(x)
- if (x < 1)
- fun_l29_n111(x)
- else
- fun_l29_n374(x)
- end
-end
-
-def fun_l28_n461(x)
- if (x < 1)
- fun_l29_n988(x)
- else
- fun_l29_n719(x)
- end
-end
-
-def fun_l28_n462(x)
- if (x < 1)
- fun_l29_n355(x)
- else
- fun_l29_n772(x)
- end
-end
-
-def fun_l28_n463(x)
- if (x < 1)
- fun_l29_n348(x)
- else
- fun_l29_n973(x)
- end
-end
-
-def fun_l28_n464(x)
- if (x < 1)
- fun_l29_n466(x)
- else
- fun_l29_n661(x)
- end
-end
-
-def fun_l28_n465(x)
- if (x < 1)
- fun_l29_n95(x)
- else
- fun_l29_n300(x)
- end
-end
-
-def fun_l28_n466(x)
- if (x < 1)
- fun_l29_n373(x)
- else
- fun_l29_n425(x)
- end
-end
-
-def fun_l28_n467(x)
- if (x < 1)
- fun_l29_n669(x)
- else
- fun_l29_n990(x)
- end
-end
-
-def fun_l28_n468(x)
- if (x < 1)
- fun_l29_n908(x)
- else
- fun_l29_n416(x)
- end
-end
-
-def fun_l28_n469(x)
- if (x < 1)
- fun_l29_n795(x)
- else
- fun_l29_n7(x)
- end
-end
-
-def fun_l28_n470(x)
- if (x < 1)
- fun_l29_n660(x)
- else
- fun_l29_n938(x)
- end
-end
-
-def fun_l28_n471(x)
- if (x < 1)
- fun_l29_n816(x)
- else
- fun_l29_n857(x)
- end
-end
-
-def fun_l28_n472(x)
- if (x < 1)
- fun_l29_n685(x)
- else
- fun_l29_n631(x)
- end
-end
-
-def fun_l28_n473(x)
- if (x < 1)
- fun_l29_n521(x)
- else
- fun_l29_n21(x)
- end
-end
-
-def fun_l28_n474(x)
- if (x < 1)
- fun_l29_n994(x)
- else
- fun_l29_n888(x)
- end
-end
-
-def fun_l28_n475(x)
- if (x < 1)
- fun_l29_n819(x)
- else
- fun_l29_n735(x)
- end
-end
-
-def fun_l28_n476(x)
- if (x < 1)
- fun_l29_n809(x)
- else
- fun_l29_n265(x)
- end
-end
-
-def fun_l28_n477(x)
- if (x < 1)
- fun_l29_n99(x)
- else
- fun_l29_n484(x)
- end
-end
-
-def fun_l28_n478(x)
- if (x < 1)
- fun_l29_n985(x)
- else
- fun_l29_n922(x)
- end
-end
-
-def fun_l28_n479(x)
- if (x < 1)
- fun_l29_n502(x)
- else
- fun_l29_n475(x)
- end
-end
-
-def fun_l28_n480(x)
- if (x < 1)
- fun_l29_n104(x)
- else
- fun_l29_n168(x)
- end
-end
-
-def fun_l28_n481(x)
- if (x < 1)
- fun_l29_n176(x)
- else
- fun_l29_n736(x)
- end
-end
-
-def fun_l28_n482(x)
- if (x < 1)
- fun_l29_n817(x)
- else
- fun_l29_n155(x)
- end
-end
-
-def fun_l28_n483(x)
- if (x < 1)
- fun_l29_n162(x)
- else
- fun_l29_n45(x)
- end
-end
-
-def fun_l28_n484(x)
- if (x < 1)
- fun_l29_n733(x)
- else
- fun_l29_n438(x)
- end
-end
-
-def fun_l28_n485(x)
- if (x < 1)
- fun_l29_n323(x)
- else
- fun_l29_n410(x)
- end
-end
-
-def fun_l28_n486(x)
- if (x < 1)
- fun_l29_n141(x)
- else
- fun_l29_n327(x)
- end
-end
-
-def fun_l28_n487(x)
- if (x < 1)
- fun_l29_n122(x)
- else
- fun_l29_n280(x)
- end
-end
-
-def fun_l28_n488(x)
- if (x < 1)
- fun_l29_n966(x)
- else
- fun_l29_n407(x)
- end
-end
-
-def fun_l28_n489(x)
- if (x < 1)
- fun_l29_n826(x)
- else
- fun_l29_n852(x)
- end
-end
-
-def fun_l28_n490(x)
- if (x < 1)
- fun_l29_n823(x)
- else
- fun_l29_n724(x)
- end
-end
-
-def fun_l28_n491(x)
- if (x < 1)
- fun_l29_n291(x)
- else
- fun_l29_n151(x)
- end
-end
-
-def fun_l28_n492(x)
- if (x < 1)
- fun_l29_n944(x)
- else
- fun_l29_n663(x)
- end
-end
-
-def fun_l28_n493(x)
- if (x < 1)
- fun_l29_n552(x)
- else
- fun_l29_n954(x)
- end
-end
-
-def fun_l28_n494(x)
- if (x < 1)
- fun_l29_n622(x)
- else
- fun_l29_n378(x)
- end
-end
-
-def fun_l28_n495(x)
- if (x < 1)
- fun_l29_n824(x)
- else
- fun_l29_n377(x)
- end
-end
-
-def fun_l28_n496(x)
- if (x < 1)
- fun_l29_n939(x)
- else
- fun_l29_n927(x)
- end
-end
-
-def fun_l28_n497(x)
- if (x < 1)
- fun_l29_n760(x)
- else
- fun_l29_n215(x)
- end
-end
-
-def fun_l28_n498(x)
- if (x < 1)
- fun_l29_n208(x)
- else
- fun_l29_n256(x)
- end
-end
-
-def fun_l28_n499(x)
- if (x < 1)
- fun_l29_n19(x)
- else
- fun_l29_n956(x)
- end
-end
-
-def fun_l28_n500(x)
- if (x < 1)
- fun_l29_n963(x)
- else
- fun_l29_n322(x)
- end
-end
-
-def fun_l28_n501(x)
- if (x < 1)
- fun_l29_n564(x)
- else
- fun_l29_n261(x)
- end
-end
-
-def fun_l28_n502(x)
- if (x < 1)
- fun_l29_n105(x)
- else
- fun_l29_n82(x)
- end
-end
-
-def fun_l28_n503(x)
- if (x < 1)
- fun_l29_n165(x)
- else
- fun_l29_n101(x)
- end
-end
-
-def fun_l28_n504(x)
- if (x < 1)
- fun_l29_n619(x)
- else
- fun_l29_n453(x)
- end
-end
-
-def fun_l28_n505(x)
- if (x < 1)
- fun_l29_n20(x)
- else
- fun_l29_n329(x)
- end
-end
-
-def fun_l28_n506(x)
- if (x < 1)
- fun_l29_n889(x)
- else
- fun_l29_n392(x)
- end
-end
-
-def fun_l28_n507(x)
- if (x < 1)
- fun_l29_n824(x)
- else
- fun_l29_n709(x)
- end
-end
-
-def fun_l28_n508(x)
- if (x < 1)
- fun_l29_n838(x)
- else
- fun_l29_n384(x)
- end
-end
-
-def fun_l28_n509(x)
- if (x < 1)
- fun_l29_n364(x)
- else
- fun_l29_n789(x)
- end
-end
-
-def fun_l28_n510(x)
- if (x < 1)
- fun_l29_n824(x)
- else
- fun_l29_n4(x)
- end
-end
-
-def fun_l28_n511(x)
- if (x < 1)
- fun_l29_n481(x)
- else
- fun_l29_n883(x)
- end
-end
-
-def fun_l28_n512(x)
- if (x < 1)
- fun_l29_n842(x)
- else
- fun_l29_n959(x)
- end
-end
-
-def fun_l28_n513(x)
- if (x < 1)
- fun_l29_n989(x)
- else
- fun_l29_n400(x)
- end
-end
-
-def fun_l28_n514(x)
- if (x < 1)
- fun_l29_n952(x)
- else
- fun_l29_n245(x)
- end
-end
-
-def fun_l28_n515(x)
- if (x < 1)
- fun_l29_n966(x)
- else
- fun_l29_n91(x)
- end
-end
-
-def fun_l28_n516(x)
- if (x < 1)
- fun_l29_n489(x)
- else
- fun_l29_n280(x)
- end
-end
-
-def fun_l28_n517(x)
- if (x < 1)
- fun_l29_n128(x)
- else
- fun_l29_n722(x)
- end
-end
-
-def fun_l28_n518(x)
- if (x < 1)
- fun_l29_n429(x)
- else
- fun_l29_n412(x)
- end
-end
-
-def fun_l28_n519(x)
- if (x < 1)
- fun_l29_n884(x)
- else
- fun_l29_n993(x)
- end
-end
-
-def fun_l28_n520(x)
- if (x < 1)
- fun_l29_n470(x)
- else
- fun_l29_n308(x)
- end
-end
-
-def fun_l28_n521(x)
- if (x < 1)
- fun_l29_n583(x)
- else
- fun_l29_n683(x)
- end
-end
-
-def fun_l28_n522(x)
- if (x < 1)
- fun_l29_n400(x)
- else
- fun_l29_n643(x)
- end
-end
-
-def fun_l28_n523(x)
- if (x < 1)
- fun_l29_n750(x)
- else
- fun_l29_n388(x)
- end
-end
-
-def fun_l28_n524(x)
- if (x < 1)
- fun_l29_n252(x)
- else
- fun_l29_n426(x)
- end
-end
-
-def fun_l28_n525(x)
- if (x < 1)
- fun_l29_n51(x)
- else
- fun_l29_n720(x)
- end
-end
-
-def fun_l28_n526(x)
- if (x < 1)
- fun_l29_n633(x)
- else
- fun_l29_n160(x)
- end
-end
-
-def fun_l28_n527(x)
- if (x < 1)
- fun_l29_n507(x)
- else
- fun_l29_n630(x)
- end
-end
-
-def fun_l28_n528(x)
- if (x < 1)
- fun_l29_n53(x)
- else
- fun_l29_n189(x)
- end
-end
-
-def fun_l28_n529(x)
- if (x < 1)
- fun_l29_n191(x)
- else
- fun_l29_n767(x)
- end
-end
-
-def fun_l28_n530(x)
- if (x < 1)
- fun_l29_n265(x)
- else
- fun_l29_n130(x)
- end
-end
-
-def fun_l28_n531(x)
- if (x < 1)
- fun_l29_n936(x)
- else
- fun_l29_n270(x)
- end
-end
-
-def fun_l28_n532(x)
- if (x < 1)
- fun_l29_n910(x)
- else
- fun_l29_n144(x)
- end
-end
-
-def fun_l28_n533(x)
- if (x < 1)
- fun_l29_n155(x)
- else
- fun_l29_n947(x)
- end
-end
-
-def fun_l28_n534(x)
- if (x < 1)
- fun_l29_n977(x)
- else
- fun_l29_n372(x)
- end
-end
-
-def fun_l28_n535(x)
- if (x < 1)
- fun_l29_n728(x)
- else
- fun_l29_n657(x)
- end
-end
-
-def fun_l28_n536(x)
- if (x < 1)
- fun_l29_n360(x)
- else
- fun_l29_n154(x)
- end
-end
-
-def fun_l28_n537(x)
- if (x < 1)
- fun_l29_n934(x)
- else
- fun_l29_n93(x)
- end
-end
-
-def fun_l28_n538(x)
- if (x < 1)
- fun_l29_n254(x)
- else
- fun_l29_n201(x)
- end
-end
-
-def fun_l28_n539(x)
- if (x < 1)
- fun_l29_n310(x)
- else
- fun_l29_n104(x)
- end
-end
-
-def fun_l28_n540(x)
- if (x < 1)
- fun_l29_n197(x)
- else
- fun_l29_n332(x)
- end
-end
-
-def fun_l28_n541(x)
- if (x < 1)
- fun_l29_n144(x)
- else
- fun_l29_n519(x)
- end
-end
-
-def fun_l28_n542(x)
- if (x < 1)
- fun_l29_n582(x)
- else
- fun_l29_n257(x)
- end
-end
-
-def fun_l28_n543(x)
- if (x < 1)
- fun_l29_n984(x)
- else
- fun_l29_n375(x)
- end
-end
-
-def fun_l28_n544(x)
- if (x < 1)
- fun_l29_n201(x)
- else
- fun_l29_n746(x)
- end
-end
-
-def fun_l28_n545(x)
- if (x < 1)
- fun_l29_n530(x)
- else
- fun_l29_n209(x)
- end
-end
-
-def fun_l28_n546(x)
- if (x < 1)
- fun_l29_n764(x)
- else
- fun_l29_n858(x)
- end
-end
-
-def fun_l28_n547(x)
- if (x < 1)
- fun_l29_n830(x)
- else
- fun_l29_n58(x)
- end
-end
-
-def fun_l28_n548(x)
- if (x < 1)
- fun_l29_n746(x)
- else
- fun_l29_n374(x)
- end
-end
-
-def fun_l28_n549(x)
- if (x < 1)
- fun_l29_n923(x)
- else
- fun_l29_n489(x)
- end
-end
-
-def fun_l28_n550(x)
- if (x < 1)
- fun_l29_n188(x)
- else
- fun_l29_n866(x)
- end
-end
-
-def fun_l28_n551(x)
- if (x < 1)
- fun_l29_n959(x)
- else
- fun_l29_n493(x)
- end
-end
-
-def fun_l28_n552(x)
- if (x < 1)
- fun_l29_n568(x)
- else
- fun_l29_n747(x)
- end
-end
-
-def fun_l28_n553(x)
- if (x < 1)
- fun_l29_n972(x)
- else
- fun_l29_n507(x)
- end
-end
-
-def fun_l28_n554(x)
- if (x < 1)
- fun_l29_n557(x)
- else
- fun_l29_n765(x)
- end
-end
-
-def fun_l28_n555(x)
- if (x < 1)
- fun_l29_n430(x)
- else
- fun_l29_n941(x)
- end
-end
-
-def fun_l28_n556(x)
- if (x < 1)
- fun_l29_n631(x)
- else
- fun_l29_n384(x)
- end
-end
-
-def fun_l28_n557(x)
- if (x < 1)
- fun_l29_n681(x)
- else
- fun_l29_n976(x)
- end
-end
-
-def fun_l28_n558(x)
- if (x < 1)
- fun_l29_n326(x)
- else
- fun_l29_n481(x)
- end
-end
-
-def fun_l28_n559(x)
- if (x < 1)
- fun_l29_n882(x)
- else
- fun_l29_n129(x)
- end
-end
-
-def fun_l28_n560(x)
- if (x < 1)
- fun_l29_n471(x)
- else
- fun_l29_n156(x)
- end
-end
-
-def fun_l28_n561(x)
- if (x < 1)
- fun_l29_n692(x)
- else
- fun_l29_n968(x)
- end
-end
-
-def fun_l28_n562(x)
- if (x < 1)
- fun_l29_n207(x)
- else
- fun_l29_n251(x)
- end
-end
-
-def fun_l28_n563(x)
- if (x < 1)
- fun_l29_n519(x)
- else
- fun_l29_n749(x)
- end
-end
-
-def fun_l28_n564(x)
- if (x < 1)
- fun_l29_n609(x)
- else
- fun_l29_n657(x)
- end
-end
-
-def fun_l28_n565(x)
- if (x < 1)
- fun_l29_n100(x)
- else
- fun_l29_n932(x)
- end
-end
-
-def fun_l28_n566(x)
- if (x < 1)
- fun_l29_n499(x)
- else
- fun_l29_n455(x)
- end
-end
-
-def fun_l28_n567(x)
- if (x < 1)
- fun_l29_n486(x)
- else
- fun_l29_n13(x)
- end
-end
-
-def fun_l28_n568(x)
- if (x < 1)
- fun_l29_n855(x)
- else
- fun_l29_n809(x)
- end
-end
-
-def fun_l28_n569(x)
- if (x < 1)
- fun_l29_n295(x)
- else
- fun_l29_n576(x)
- end
-end
-
-def fun_l28_n570(x)
- if (x < 1)
- fun_l29_n354(x)
- else
- fun_l29_n430(x)
- end
-end
-
-def fun_l28_n571(x)
- if (x < 1)
- fun_l29_n307(x)
- else
- fun_l29_n560(x)
- end
-end
-
-def fun_l28_n572(x)
- if (x < 1)
- fun_l29_n528(x)
- else
- fun_l29_n642(x)
- end
-end
-
-def fun_l28_n573(x)
- if (x < 1)
- fun_l29_n552(x)
- else
- fun_l29_n421(x)
- end
-end
-
-def fun_l28_n574(x)
- if (x < 1)
- fun_l29_n238(x)
- else
- fun_l29_n471(x)
- end
-end
-
-def fun_l28_n575(x)
- if (x < 1)
- fun_l29_n748(x)
- else
- fun_l29_n381(x)
- end
-end
-
-def fun_l28_n576(x)
- if (x < 1)
- fun_l29_n75(x)
- else
- fun_l29_n994(x)
- end
-end
-
-def fun_l28_n577(x)
- if (x < 1)
- fun_l29_n159(x)
- else
- fun_l29_n923(x)
- end
-end
-
-def fun_l28_n578(x)
- if (x < 1)
- fun_l29_n657(x)
- else
- fun_l29_n984(x)
- end
-end
-
-def fun_l28_n579(x)
- if (x < 1)
- fun_l29_n150(x)
- else
- fun_l29_n887(x)
- end
-end
-
-def fun_l28_n580(x)
- if (x < 1)
- fun_l29_n362(x)
- else
- fun_l29_n574(x)
- end
-end
-
-def fun_l28_n581(x)
- if (x < 1)
- fun_l29_n95(x)
- else
- fun_l29_n258(x)
- end
-end
-
-def fun_l28_n582(x)
- if (x < 1)
- fun_l29_n123(x)
- else
- fun_l29_n501(x)
- end
-end
-
-def fun_l28_n583(x)
- if (x < 1)
- fun_l29_n934(x)
- else
- fun_l29_n94(x)
- end
-end
-
-def fun_l28_n584(x)
- if (x < 1)
- fun_l29_n764(x)
- else
- fun_l29_n350(x)
- end
-end
-
-def fun_l28_n585(x)
- if (x < 1)
- fun_l29_n328(x)
- else
- fun_l29_n483(x)
- end
-end
-
-def fun_l28_n586(x)
- if (x < 1)
- fun_l29_n533(x)
- else
- fun_l29_n956(x)
- end
-end
-
-def fun_l28_n587(x)
- if (x < 1)
- fun_l29_n632(x)
- else
- fun_l29_n243(x)
- end
-end
-
-def fun_l28_n588(x)
- if (x < 1)
- fun_l29_n897(x)
- else
- fun_l29_n894(x)
- end
-end
-
-def fun_l28_n589(x)
- if (x < 1)
- fun_l29_n867(x)
- else
- fun_l29_n68(x)
- end
-end
-
-def fun_l28_n590(x)
- if (x < 1)
- fun_l29_n266(x)
- else
- fun_l29_n763(x)
- end
-end
-
-def fun_l28_n591(x)
- if (x < 1)
- fun_l29_n104(x)
- else
- fun_l29_n940(x)
- end
-end
-
-def fun_l28_n592(x)
- if (x < 1)
- fun_l29_n409(x)
- else
- fun_l29_n561(x)
- end
-end
-
-def fun_l28_n593(x)
- if (x < 1)
- fun_l29_n485(x)
- else
- fun_l29_n780(x)
- end
-end
-
-def fun_l28_n594(x)
- if (x < 1)
- fun_l29_n925(x)
- else
- fun_l29_n581(x)
- end
-end
-
-def fun_l28_n595(x)
- if (x < 1)
- fun_l29_n566(x)
- else
- fun_l29_n288(x)
- end
-end
-
-def fun_l28_n596(x)
- if (x < 1)
- fun_l29_n166(x)
- else
- fun_l29_n702(x)
- end
-end
-
-def fun_l28_n597(x)
- if (x < 1)
- fun_l29_n82(x)
- else
- fun_l29_n815(x)
- end
-end
-
-def fun_l28_n598(x)
- if (x < 1)
- fun_l29_n913(x)
- else
- fun_l29_n623(x)
- end
-end
-
-def fun_l28_n599(x)
- if (x < 1)
- fun_l29_n431(x)
- else
- fun_l29_n216(x)
- end
-end
-
-def fun_l28_n600(x)
- if (x < 1)
- fun_l29_n260(x)
- else
- fun_l29_n907(x)
- end
-end
-
-def fun_l28_n601(x)
- if (x < 1)
- fun_l29_n232(x)
- else
- fun_l29_n504(x)
- end
-end
-
-def fun_l28_n602(x)
- if (x < 1)
- fun_l29_n25(x)
- else
- fun_l29_n844(x)
- end
-end
-
-def fun_l28_n603(x)
- if (x < 1)
- fun_l29_n997(x)
- else
- fun_l29_n821(x)
- end
-end
-
-def fun_l28_n604(x)
- if (x < 1)
- fun_l29_n732(x)
- else
- fun_l29_n301(x)
- end
-end
-
-def fun_l28_n605(x)
- if (x < 1)
- fun_l29_n971(x)
- else
- fun_l29_n522(x)
- end
-end
-
-def fun_l28_n606(x)
- if (x < 1)
- fun_l29_n518(x)
- else
- fun_l29_n874(x)
- end
-end
-
-def fun_l28_n607(x)
- if (x < 1)
- fun_l29_n104(x)
- else
- fun_l29_n529(x)
- end
-end
-
-def fun_l28_n608(x)
- if (x < 1)
- fun_l29_n662(x)
- else
- fun_l29_n830(x)
- end
-end
-
-def fun_l28_n609(x)
- if (x < 1)
- fun_l29_n521(x)
- else
- fun_l29_n944(x)
- end
-end
-
-def fun_l28_n610(x)
- if (x < 1)
- fun_l29_n231(x)
- else
- fun_l29_n92(x)
- end
-end
-
-def fun_l28_n611(x)
- if (x < 1)
- fun_l29_n290(x)
- else
- fun_l29_n261(x)
- end
-end
-
-def fun_l28_n612(x)
- if (x < 1)
- fun_l29_n490(x)
- else
- fun_l29_n621(x)
- end
-end
-
-def fun_l28_n613(x)
- if (x < 1)
- fun_l29_n131(x)
- else
- fun_l29_n946(x)
- end
-end
-
-def fun_l28_n614(x)
- if (x < 1)
- fun_l29_n34(x)
- else
- fun_l29_n159(x)
- end
-end
-
-def fun_l28_n615(x)
- if (x < 1)
- fun_l29_n811(x)
- else
- fun_l29_n895(x)
- end
-end
-
-def fun_l28_n616(x)
- if (x < 1)
- fun_l29_n713(x)
- else
- fun_l29_n686(x)
- end
-end
-
-def fun_l28_n617(x)
- if (x < 1)
- fun_l29_n650(x)
- else
- fun_l29_n256(x)
- end
-end
-
-def fun_l28_n618(x)
- if (x < 1)
- fun_l29_n815(x)
- else
- fun_l29_n537(x)
- end
-end
-
-def fun_l28_n619(x)
- if (x < 1)
- fun_l29_n739(x)
- else
- fun_l29_n735(x)
- end
-end
-
-def fun_l28_n620(x)
- if (x < 1)
- fun_l29_n857(x)
- else
- fun_l29_n863(x)
- end
-end
-
-def fun_l28_n621(x)
- if (x < 1)
- fun_l29_n81(x)
- else
- fun_l29_n755(x)
- end
-end
-
-def fun_l28_n622(x)
- if (x < 1)
- fun_l29_n841(x)
- else
- fun_l29_n597(x)
- end
-end
-
-def fun_l28_n623(x)
- if (x < 1)
- fun_l29_n87(x)
- else
- fun_l29_n676(x)
- end
-end
-
-def fun_l28_n624(x)
- if (x < 1)
- fun_l29_n67(x)
- else
- fun_l29_n883(x)
- end
-end
-
-def fun_l28_n625(x)
- if (x < 1)
- fun_l29_n223(x)
- else
- fun_l29_n139(x)
- end
-end
-
-def fun_l28_n626(x)
- if (x < 1)
- fun_l29_n351(x)
- else
- fun_l29_n11(x)
- end
-end
-
-def fun_l28_n627(x)
- if (x < 1)
- fun_l29_n281(x)
- else
- fun_l29_n138(x)
- end
-end
-
-def fun_l28_n628(x)
- if (x < 1)
- fun_l29_n118(x)
- else
- fun_l29_n44(x)
- end
-end
-
-def fun_l28_n629(x)
- if (x < 1)
- fun_l29_n55(x)
- else
- fun_l29_n249(x)
- end
-end
-
-def fun_l28_n630(x)
- if (x < 1)
- fun_l29_n636(x)
- else
- fun_l29_n717(x)
- end
-end
-
-def fun_l28_n631(x)
- if (x < 1)
- fun_l29_n88(x)
- else
- fun_l29_n670(x)
- end
-end
-
-def fun_l28_n632(x)
- if (x < 1)
- fun_l29_n311(x)
- else
- fun_l29_n337(x)
- end
-end
-
-def fun_l28_n633(x)
- if (x < 1)
- fun_l29_n67(x)
- else
- fun_l29_n12(x)
- end
-end
-
-def fun_l28_n634(x)
- if (x < 1)
- fun_l29_n581(x)
- else
- fun_l29_n618(x)
- end
-end
-
-def fun_l28_n635(x)
- if (x < 1)
- fun_l29_n709(x)
- else
- fun_l29_n120(x)
- end
-end
-
-def fun_l28_n636(x)
- if (x < 1)
- fun_l29_n904(x)
- else
- fun_l29_n987(x)
- end
-end
-
-def fun_l28_n637(x)
- if (x < 1)
- fun_l29_n274(x)
- else
- fun_l29_n219(x)
- end
-end
-
-def fun_l28_n638(x)
- if (x < 1)
- fun_l29_n444(x)
- else
- fun_l29_n609(x)
- end
-end
-
-def fun_l28_n639(x)
- if (x < 1)
- fun_l29_n473(x)
- else
- fun_l29_n433(x)
- end
-end
-
-def fun_l28_n640(x)
- if (x < 1)
- fun_l29_n344(x)
- else
- fun_l29_n59(x)
- end
-end
-
-def fun_l28_n641(x)
- if (x < 1)
- fun_l29_n973(x)
- else
- fun_l29_n506(x)
- end
-end
-
-def fun_l28_n642(x)
- if (x < 1)
- fun_l29_n387(x)
- else
- fun_l29_n347(x)
- end
-end
-
-def fun_l28_n643(x)
- if (x < 1)
- fun_l29_n138(x)
- else
- fun_l29_n597(x)
- end
-end
-
-def fun_l28_n644(x)
- if (x < 1)
- fun_l29_n622(x)
- else
- fun_l29_n276(x)
- end
-end
-
-def fun_l28_n645(x)
- if (x < 1)
- fun_l29_n454(x)
- else
- fun_l29_n930(x)
- end
-end
-
-def fun_l28_n646(x)
- if (x < 1)
- fun_l29_n586(x)
- else
- fun_l29_n3(x)
- end
-end
-
-def fun_l28_n647(x)
- if (x < 1)
- fun_l29_n508(x)
- else
- fun_l29_n489(x)
- end
-end
-
-def fun_l28_n648(x)
- if (x < 1)
- fun_l29_n549(x)
- else
- fun_l29_n57(x)
- end
-end
-
-def fun_l28_n649(x)
- if (x < 1)
- fun_l29_n32(x)
- else
- fun_l29_n487(x)
- end
-end
-
-def fun_l28_n650(x)
- if (x < 1)
- fun_l29_n567(x)
- else
- fun_l29_n733(x)
- end
-end
-
-def fun_l28_n651(x)
- if (x < 1)
- fun_l29_n401(x)
- else
- fun_l29_n234(x)
- end
-end
-
-def fun_l28_n652(x)
- if (x < 1)
- fun_l29_n124(x)
- else
- fun_l29_n387(x)
- end
-end
-
-def fun_l28_n653(x)
- if (x < 1)
- fun_l29_n517(x)
- else
- fun_l29_n150(x)
- end
-end
-
-def fun_l28_n654(x)
- if (x < 1)
- fun_l29_n502(x)
- else
- fun_l29_n139(x)
- end
-end
-
-def fun_l28_n655(x)
- if (x < 1)
- fun_l29_n304(x)
- else
- fun_l29_n871(x)
- end
-end
-
-def fun_l28_n656(x)
- if (x < 1)
- fun_l29_n413(x)
- else
- fun_l29_n759(x)
- end
-end
-
-def fun_l28_n657(x)
- if (x < 1)
- fun_l29_n810(x)
- else
- fun_l29_n274(x)
- end
-end
-
-def fun_l28_n658(x)
- if (x < 1)
- fun_l29_n706(x)
- else
- fun_l29_n564(x)
- end
-end
-
-def fun_l28_n659(x)
- if (x < 1)
- fun_l29_n205(x)
- else
- fun_l29_n857(x)
- end
-end
-
-def fun_l28_n660(x)
- if (x < 1)
- fun_l29_n534(x)
- else
- fun_l29_n853(x)
- end
-end
-
-def fun_l28_n661(x)
- if (x < 1)
- fun_l29_n436(x)
- else
- fun_l29_n227(x)
- end
-end
-
-def fun_l28_n662(x)
- if (x < 1)
- fun_l29_n784(x)
- else
- fun_l29_n352(x)
- end
-end
-
-def fun_l28_n663(x)
- if (x < 1)
- fun_l29_n889(x)
- else
- fun_l29_n186(x)
- end
-end
-
-def fun_l28_n664(x)
- if (x < 1)
- fun_l29_n872(x)
- else
- fun_l29_n217(x)
- end
-end
-
-def fun_l28_n665(x)
- if (x < 1)
- fun_l29_n111(x)
- else
- fun_l29_n355(x)
- end
-end
-
-def fun_l28_n666(x)
- if (x < 1)
- fun_l29_n175(x)
- else
- fun_l29_n971(x)
- end
-end
-
-def fun_l28_n667(x)
- if (x < 1)
- fun_l29_n823(x)
- else
- fun_l29_n123(x)
- end
-end
-
-def fun_l28_n668(x)
- if (x < 1)
- fun_l29_n239(x)
- else
- fun_l29_n58(x)
- end
-end
-
-def fun_l28_n669(x)
- if (x < 1)
- fun_l29_n127(x)
- else
- fun_l29_n628(x)
- end
-end
-
-def fun_l28_n670(x)
- if (x < 1)
- fun_l29_n967(x)
- else
- fun_l29_n575(x)
- end
-end
-
-def fun_l28_n671(x)
- if (x < 1)
- fun_l29_n994(x)
- else
- fun_l29_n352(x)
- end
-end
-
-def fun_l28_n672(x)
- if (x < 1)
- fun_l29_n598(x)
- else
- fun_l29_n620(x)
- end
-end
-
-def fun_l28_n673(x)
- if (x < 1)
- fun_l29_n407(x)
- else
- fun_l29_n132(x)
- end
-end
-
-def fun_l28_n674(x)
- if (x < 1)
- fun_l29_n553(x)
- else
- fun_l29_n807(x)
- end
-end
-
-def fun_l28_n675(x)
- if (x < 1)
- fun_l29_n918(x)
- else
- fun_l29_n462(x)
- end
-end
-
-def fun_l28_n676(x)
- if (x < 1)
- fun_l29_n340(x)
- else
- fun_l29_n905(x)
- end
-end
-
-def fun_l28_n677(x)
- if (x < 1)
- fun_l29_n322(x)
- else
- fun_l29_n657(x)
- end
-end
-
-def fun_l28_n678(x)
- if (x < 1)
- fun_l29_n249(x)
- else
- fun_l29_n691(x)
- end
-end
-
-def fun_l28_n679(x)
- if (x < 1)
- fun_l29_n227(x)
- else
- fun_l29_n559(x)
- end
-end
-
-def fun_l28_n680(x)
- if (x < 1)
- fun_l29_n151(x)
- else
- fun_l29_n191(x)
- end
-end
-
-def fun_l28_n681(x)
- if (x < 1)
- fun_l29_n211(x)
- else
- fun_l29_n400(x)
- end
-end
-
-def fun_l28_n682(x)
- if (x < 1)
- fun_l29_n124(x)
- else
- fun_l29_n334(x)
- end
-end
-
-def fun_l28_n683(x)
- if (x < 1)
- fun_l29_n876(x)
- else
- fun_l29_n839(x)
- end
-end
-
-def fun_l28_n684(x)
- if (x < 1)
- fun_l29_n764(x)
- else
- fun_l29_n449(x)
- end
-end
-
-def fun_l28_n685(x)
- if (x < 1)
- fun_l29_n316(x)
- else
- fun_l29_n730(x)
- end
-end
-
-def fun_l28_n686(x)
- if (x < 1)
- fun_l29_n557(x)
- else
- fun_l29_n851(x)
- end
-end
-
-def fun_l28_n687(x)
- if (x < 1)
- fun_l29_n315(x)
- else
- fun_l29_n280(x)
- end
-end
-
-def fun_l28_n688(x)
- if (x < 1)
- fun_l29_n467(x)
- else
- fun_l29_n593(x)
- end
-end
-
-def fun_l28_n689(x)
- if (x < 1)
- fun_l29_n537(x)
- else
- fun_l29_n37(x)
- end
-end
-
-def fun_l28_n690(x)
- if (x < 1)
- fun_l29_n582(x)
- else
- fun_l29_n205(x)
- end
-end
-
-def fun_l28_n691(x)
- if (x < 1)
- fun_l29_n672(x)
- else
- fun_l29_n656(x)
- end
-end
-
-def fun_l28_n692(x)
- if (x < 1)
- fun_l29_n280(x)
- else
- fun_l29_n404(x)
- end
-end
-
-def fun_l28_n693(x)
- if (x < 1)
- fun_l29_n609(x)
- else
- fun_l29_n914(x)
- end
-end
-
-def fun_l28_n694(x)
- if (x < 1)
- fun_l29_n563(x)
- else
- fun_l29_n215(x)
- end
-end
-
-def fun_l28_n695(x)
- if (x < 1)
- fun_l29_n207(x)
- else
- fun_l29_n548(x)
- end
-end
-
-def fun_l28_n696(x)
- if (x < 1)
- fun_l29_n981(x)
- else
- fun_l29_n79(x)
- end
-end
-
-def fun_l28_n697(x)
- if (x < 1)
- fun_l29_n747(x)
- else
- fun_l29_n687(x)
- end
-end
-
-def fun_l28_n698(x)
- if (x < 1)
- fun_l29_n30(x)
- else
- fun_l29_n104(x)
- end
-end
-
-def fun_l28_n699(x)
- if (x < 1)
- fun_l29_n587(x)
- else
- fun_l29_n414(x)
- end
-end
-
-def fun_l28_n700(x)
- if (x < 1)
- fun_l29_n956(x)
- else
- fun_l29_n601(x)
- end
-end
-
-def fun_l28_n701(x)
- if (x < 1)
- fun_l29_n276(x)
- else
- fun_l29_n815(x)
- end
-end
-
-def fun_l28_n702(x)
- if (x < 1)
- fun_l29_n294(x)
- else
- fun_l29_n94(x)
- end
-end
-
-def fun_l28_n703(x)
- if (x < 1)
- fun_l29_n161(x)
- else
- fun_l29_n133(x)
- end
-end
-
-def fun_l28_n704(x)
- if (x < 1)
- fun_l29_n898(x)
- else
- fun_l29_n483(x)
- end
-end
-
-def fun_l28_n705(x)
- if (x < 1)
- fun_l29_n651(x)
- else
- fun_l29_n577(x)
- end
-end
-
-def fun_l28_n706(x)
- if (x < 1)
- fun_l29_n389(x)
- else
- fun_l29_n595(x)
- end
-end
-
-def fun_l28_n707(x)
- if (x < 1)
- fun_l29_n856(x)
- else
- fun_l29_n65(x)
- end
-end
-
-def fun_l28_n708(x)
- if (x < 1)
- fun_l29_n77(x)
- else
- fun_l29_n687(x)
- end
-end
-
-def fun_l28_n709(x)
- if (x < 1)
- fun_l29_n962(x)
- else
- fun_l29_n517(x)
- end
-end
-
-def fun_l28_n710(x)
- if (x < 1)
- fun_l29_n934(x)
- else
- fun_l29_n804(x)
- end
-end
-
-def fun_l28_n711(x)
- if (x < 1)
- fun_l29_n267(x)
- else
- fun_l29_n557(x)
- end
-end
-
-def fun_l28_n712(x)
- if (x < 1)
- fun_l29_n691(x)
- else
- fun_l29_n558(x)
- end
-end
-
-def fun_l28_n713(x)
- if (x < 1)
- fun_l29_n420(x)
- else
- fun_l29_n150(x)
- end
-end
-
-def fun_l28_n714(x)
- if (x < 1)
- fun_l29_n289(x)
- else
- fun_l29_n814(x)
- end
-end
-
-def fun_l28_n715(x)
- if (x < 1)
- fun_l29_n579(x)
- else
- fun_l29_n730(x)
- end
-end
-
-def fun_l28_n716(x)
- if (x < 1)
- fun_l29_n331(x)
- else
- fun_l29_n178(x)
- end
-end
-
-def fun_l28_n717(x)
- if (x < 1)
- fun_l29_n914(x)
- else
- fun_l29_n176(x)
- end
-end
-
-def fun_l28_n718(x)
- if (x < 1)
- fun_l29_n261(x)
- else
- fun_l29_n203(x)
- end
-end
-
-def fun_l28_n719(x)
- if (x < 1)
- fun_l29_n621(x)
- else
- fun_l29_n236(x)
- end
-end
-
-def fun_l28_n720(x)
- if (x < 1)
- fun_l29_n453(x)
- else
- fun_l29_n420(x)
- end
-end
-
-def fun_l28_n721(x)
- if (x < 1)
- fun_l29_n39(x)
- else
- fun_l29_n499(x)
- end
-end
-
-def fun_l28_n722(x)
- if (x < 1)
- fun_l29_n629(x)
- else
- fun_l29_n23(x)
- end
-end
-
-def fun_l28_n723(x)
- if (x < 1)
- fun_l29_n55(x)
- else
- fun_l29_n497(x)
- end
-end
-
-def fun_l28_n724(x)
- if (x < 1)
- fun_l29_n934(x)
- else
- fun_l29_n891(x)
- end
-end
-
-def fun_l28_n725(x)
- if (x < 1)
- fun_l29_n532(x)
- else
- fun_l29_n959(x)
- end
-end
-
-def fun_l28_n726(x)
- if (x < 1)
- fun_l29_n510(x)
- else
- fun_l29_n171(x)
- end
-end
-
-def fun_l28_n727(x)
- if (x < 1)
- fun_l29_n42(x)
- else
- fun_l29_n680(x)
- end
-end
-
-def fun_l28_n728(x)
- if (x < 1)
- fun_l29_n488(x)
- else
- fun_l29_n994(x)
- end
-end
-
-def fun_l28_n729(x)
- if (x < 1)
- fun_l29_n347(x)
- else
- fun_l29_n135(x)
- end
-end
-
-def fun_l28_n730(x)
- if (x < 1)
- fun_l29_n97(x)
- else
- fun_l29_n176(x)
- end
-end
-
-def fun_l28_n731(x)
- if (x < 1)
- fun_l29_n4(x)
- else
- fun_l29_n330(x)
- end
-end
-
-def fun_l28_n732(x)
- if (x < 1)
- fun_l29_n808(x)
- else
- fun_l29_n491(x)
- end
-end
-
-def fun_l28_n733(x)
- if (x < 1)
- fun_l29_n147(x)
- else
- fun_l29_n520(x)
- end
-end
-
-def fun_l28_n734(x)
- if (x < 1)
- fun_l29_n510(x)
- else
- fun_l29_n980(x)
- end
-end
-
-def fun_l28_n735(x)
- if (x < 1)
- fun_l29_n656(x)
- else
- fun_l29_n861(x)
- end
-end
-
-def fun_l28_n736(x)
- if (x < 1)
- fun_l29_n445(x)
- else
- fun_l29_n625(x)
- end
-end
-
-def fun_l28_n737(x)
- if (x < 1)
- fun_l29_n101(x)
- else
- fun_l29_n874(x)
- end
-end
-
-def fun_l28_n738(x)
- if (x < 1)
- fun_l29_n337(x)
- else
- fun_l29_n231(x)
- end
-end
-
-def fun_l28_n739(x)
- if (x < 1)
- fun_l29_n518(x)
- else
- fun_l29_n575(x)
- end
-end
-
-def fun_l28_n740(x)
- if (x < 1)
- fun_l29_n472(x)
- else
- fun_l29_n401(x)
- end
-end
-
-def fun_l28_n741(x)
- if (x < 1)
- fun_l29_n47(x)
- else
- fun_l29_n435(x)
- end
-end
-
-def fun_l28_n742(x)
- if (x < 1)
- fun_l29_n113(x)
- else
- fun_l29_n56(x)
- end
-end
-
-def fun_l28_n743(x)
- if (x < 1)
- fun_l29_n435(x)
- else
- fun_l29_n972(x)
- end
-end
-
-def fun_l28_n744(x)
- if (x < 1)
- fun_l29_n692(x)
- else
- fun_l29_n328(x)
- end
-end
-
-def fun_l28_n745(x)
- if (x < 1)
- fun_l29_n830(x)
- else
- fun_l29_n92(x)
- end
-end
-
-def fun_l28_n746(x)
- if (x < 1)
- fun_l29_n921(x)
- else
- fun_l29_n340(x)
- end
-end
-
-def fun_l28_n747(x)
- if (x < 1)
- fun_l29_n346(x)
- else
- fun_l29_n654(x)
- end
-end
-
-def fun_l28_n748(x)
- if (x < 1)
- fun_l29_n850(x)
- else
- fun_l29_n40(x)
- end
-end
-
-def fun_l28_n749(x)
- if (x < 1)
- fun_l29_n432(x)
- else
- fun_l29_n445(x)
- end
-end
-
-def fun_l28_n750(x)
- if (x < 1)
- fun_l29_n28(x)
- else
- fun_l29_n537(x)
- end
-end
-
-def fun_l28_n751(x)
- if (x < 1)
- fun_l29_n858(x)
- else
- fun_l29_n375(x)
- end
-end
-
-def fun_l28_n752(x)
- if (x < 1)
- fun_l29_n625(x)
- else
- fun_l29_n581(x)
- end
-end
-
-def fun_l28_n753(x)
- if (x < 1)
- fun_l29_n223(x)
- else
- fun_l29_n509(x)
- end
-end
-
-def fun_l28_n754(x)
- if (x < 1)
- fun_l29_n655(x)
- else
- fun_l29_n218(x)
- end
-end
-
-def fun_l28_n755(x)
- if (x < 1)
- fun_l29_n998(x)
- else
- fun_l29_n177(x)
- end
-end
-
-def fun_l28_n756(x)
- if (x < 1)
- fun_l29_n66(x)
- else
- fun_l29_n763(x)
- end
-end
-
-def fun_l28_n757(x)
- if (x < 1)
- fun_l29_n112(x)
- else
- fun_l29_n494(x)
- end
-end
-
-def fun_l28_n758(x)
- if (x < 1)
- fun_l29_n144(x)
- else
- fun_l29_n402(x)
- end
-end
-
-def fun_l28_n759(x)
- if (x < 1)
- fun_l29_n162(x)
- else
- fun_l29_n338(x)
- end
-end
-
-def fun_l28_n760(x)
- if (x < 1)
- fun_l29_n975(x)
- else
- fun_l29_n431(x)
- end
-end
-
-def fun_l28_n761(x)
- if (x < 1)
- fun_l29_n676(x)
- else
- fun_l29_n787(x)
- end
-end
-
-def fun_l28_n762(x)
- if (x < 1)
- fun_l29_n90(x)
- else
- fun_l29_n828(x)
- end
-end
-
-def fun_l28_n763(x)
- if (x < 1)
- fun_l29_n816(x)
- else
- fun_l29_n119(x)
- end
-end
-
-def fun_l28_n764(x)
- if (x < 1)
- fun_l29_n624(x)
- else
- fun_l29_n885(x)
- end
-end
-
-def fun_l28_n765(x)
- if (x < 1)
- fun_l29_n933(x)
- else
- fun_l29_n378(x)
- end
-end
-
-def fun_l28_n766(x)
- if (x < 1)
- fun_l29_n967(x)
- else
- fun_l29_n580(x)
- end
-end
-
-def fun_l28_n767(x)
- if (x < 1)
- fun_l29_n752(x)
- else
- fun_l29_n607(x)
- end
-end
-
-def fun_l28_n768(x)
- if (x < 1)
- fun_l29_n333(x)
- else
- fun_l29_n339(x)
- end
-end
-
-def fun_l28_n769(x)
- if (x < 1)
- fun_l29_n720(x)
- else
- fun_l29_n952(x)
- end
-end
-
-def fun_l28_n770(x)
- if (x < 1)
- fun_l29_n323(x)
- else
- fun_l29_n542(x)
- end
-end
-
-def fun_l28_n771(x)
- if (x < 1)
- fun_l29_n472(x)
- else
- fun_l29_n4(x)
- end
-end
-
-def fun_l28_n772(x)
- if (x < 1)
- fun_l29_n962(x)
- else
- fun_l29_n345(x)
- end
-end
-
-def fun_l28_n773(x)
- if (x < 1)
- fun_l29_n305(x)
- else
- fun_l29_n106(x)
- end
-end
-
-def fun_l28_n774(x)
- if (x < 1)
- fun_l29_n880(x)
- else
- fun_l29_n731(x)
- end
-end
-
-def fun_l28_n775(x)
- if (x < 1)
- fun_l29_n760(x)
- else
- fun_l29_n460(x)
- end
-end
-
-def fun_l28_n776(x)
- if (x < 1)
- fun_l29_n445(x)
- else
- fun_l29_n725(x)
- end
-end
-
-def fun_l28_n777(x)
- if (x < 1)
- fun_l29_n850(x)
- else
- fun_l29_n121(x)
- end
-end
-
-def fun_l28_n778(x)
- if (x < 1)
- fun_l29_n270(x)
- else
- fun_l29_n85(x)
- end
-end
-
-def fun_l28_n779(x)
- if (x < 1)
- fun_l29_n208(x)
- else
- fun_l29_n822(x)
- end
-end
-
-def fun_l28_n780(x)
- if (x < 1)
- fun_l29_n832(x)
- else
- fun_l29_n712(x)
- end
-end
-
-def fun_l28_n781(x)
- if (x < 1)
- fun_l29_n456(x)
- else
- fun_l29_n947(x)
- end
-end
-
-def fun_l28_n782(x)
- if (x < 1)
- fun_l29_n973(x)
- else
- fun_l29_n912(x)
- end
-end
-
-def fun_l28_n783(x)
- if (x < 1)
- fun_l29_n365(x)
- else
- fun_l29_n496(x)
- end
-end
-
-def fun_l28_n784(x)
- if (x < 1)
- fun_l29_n717(x)
- else
- fun_l29_n157(x)
- end
-end
-
-def fun_l28_n785(x)
- if (x < 1)
- fun_l29_n754(x)
- else
- fun_l29_n462(x)
- end
-end
-
-def fun_l28_n786(x)
- if (x < 1)
- fun_l29_n470(x)
- else
- fun_l29_n528(x)
- end
-end
-
-def fun_l28_n787(x)
- if (x < 1)
- fun_l29_n463(x)
- else
- fun_l29_n107(x)
- end
-end
-
-def fun_l28_n788(x)
- if (x < 1)
- fun_l29_n583(x)
- else
- fun_l29_n387(x)
- end
-end
-
-def fun_l28_n789(x)
- if (x < 1)
- fun_l29_n55(x)
- else
- fun_l29_n694(x)
- end
-end
-
-def fun_l28_n790(x)
- if (x < 1)
- fun_l29_n834(x)
- else
- fun_l29_n306(x)
- end
-end
-
-def fun_l28_n791(x)
- if (x < 1)
- fun_l29_n374(x)
- else
- fun_l29_n502(x)
- end
-end
-
-def fun_l28_n792(x)
- if (x < 1)
- fun_l29_n462(x)
- else
- fun_l29_n221(x)
- end
-end
-
-def fun_l28_n793(x)
- if (x < 1)
- fun_l29_n680(x)
- else
- fun_l29_n966(x)
- end
-end
-
-def fun_l28_n794(x)
- if (x < 1)
- fun_l29_n936(x)
- else
- fun_l29_n911(x)
- end
-end
-
-def fun_l28_n795(x)
- if (x < 1)
- fun_l29_n863(x)
- else
- fun_l29_n978(x)
- end
-end
-
-def fun_l28_n796(x)
- if (x < 1)
- fun_l29_n1(x)
- else
- fun_l29_n399(x)
- end
-end
-
-def fun_l28_n797(x)
- if (x < 1)
- fun_l29_n628(x)
- else
- fun_l29_n603(x)
- end
-end
-
-def fun_l28_n798(x)
- if (x < 1)
- fun_l29_n799(x)
- else
- fun_l29_n979(x)
- end
-end
-
-def fun_l28_n799(x)
- if (x < 1)
- fun_l29_n856(x)
- else
- fun_l29_n946(x)
- end
-end
-
-def fun_l28_n800(x)
- if (x < 1)
- fun_l29_n556(x)
- else
- fun_l29_n816(x)
- end
-end
-
-def fun_l28_n801(x)
- if (x < 1)
- fun_l29_n619(x)
- else
- fun_l29_n19(x)
- end
-end
-
-def fun_l28_n802(x)
- if (x < 1)
- fun_l29_n143(x)
- else
- fun_l29_n287(x)
- end
-end
-
-def fun_l28_n803(x)
- if (x < 1)
- fun_l29_n816(x)
- else
- fun_l29_n271(x)
- end
-end
-
-def fun_l28_n804(x)
- if (x < 1)
- fun_l29_n517(x)
- else
- fun_l29_n931(x)
- end
-end
-
-def fun_l28_n805(x)
- if (x < 1)
- fun_l29_n298(x)
- else
- fun_l29_n509(x)
- end
-end
-
-def fun_l28_n806(x)
- if (x < 1)
- fun_l29_n493(x)
- else
- fun_l29_n341(x)
- end
-end
-
-def fun_l28_n807(x)
- if (x < 1)
- fun_l29_n270(x)
- else
- fun_l29_n82(x)
- end
-end
-
-def fun_l28_n808(x)
- if (x < 1)
- fun_l29_n980(x)
- else
- fun_l29_n771(x)
- end
-end
-
-def fun_l28_n809(x)
- if (x < 1)
- fun_l29_n784(x)
- else
- fun_l29_n696(x)
- end
-end
-
-def fun_l28_n810(x)
- if (x < 1)
- fun_l29_n966(x)
- else
- fun_l29_n216(x)
- end
-end
-
-def fun_l28_n811(x)
- if (x < 1)
- fun_l29_n374(x)
- else
- fun_l29_n482(x)
- end
-end
-
-def fun_l28_n812(x)
- if (x < 1)
- fun_l29_n682(x)
- else
- fun_l29_n42(x)
- end
-end
-
-def fun_l28_n813(x)
- if (x < 1)
- fun_l29_n254(x)
- else
- fun_l29_n899(x)
- end
-end
-
-def fun_l28_n814(x)
- if (x < 1)
- fun_l29_n115(x)
- else
- fun_l29_n336(x)
- end
-end
-
-def fun_l28_n815(x)
- if (x < 1)
- fun_l29_n842(x)
- else
- fun_l29_n201(x)
- end
-end
-
-def fun_l28_n816(x)
- if (x < 1)
- fun_l29_n258(x)
- else
- fun_l29_n675(x)
- end
-end
-
-def fun_l28_n817(x)
- if (x < 1)
- fun_l29_n594(x)
- else
- fun_l29_n61(x)
- end
-end
-
-def fun_l28_n818(x)
- if (x < 1)
- fun_l29_n691(x)
- else
- fun_l29_n627(x)
- end
-end
-
-def fun_l28_n819(x)
- if (x < 1)
- fun_l29_n963(x)
- else
- fun_l29_n611(x)
- end
-end
-
-def fun_l28_n820(x)
- if (x < 1)
- fun_l29_n455(x)
- else
- fun_l29_n829(x)
- end
-end
-
-def fun_l28_n821(x)
- if (x < 1)
- fun_l29_n818(x)
- else
- fun_l29_n242(x)
- end
-end
-
-def fun_l28_n822(x)
- if (x < 1)
- fun_l29_n242(x)
- else
- fun_l29_n474(x)
- end
-end
-
-def fun_l28_n823(x)
- if (x < 1)
- fun_l29_n847(x)
- else
- fun_l29_n119(x)
- end
-end
-
-def fun_l28_n824(x)
- if (x < 1)
- fun_l29_n141(x)
- else
- fun_l29_n371(x)
- end
-end
-
-def fun_l28_n825(x)
- if (x < 1)
- fun_l29_n913(x)
- else
- fun_l29_n129(x)
- end
-end
-
-def fun_l28_n826(x)
- if (x < 1)
- fun_l29_n440(x)
- else
- fun_l29_n860(x)
- end
-end
-
-def fun_l28_n827(x)
- if (x < 1)
- fun_l29_n194(x)
- else
- fun_l29_n940(x)
- end
-end
-
-def fun_l28_n828(x)
- if (x < 1)
- fun_l29_n444(x)
- else
- fun_l29_n332(x)
- end
-end
-
-def fun_l28_n829(x)
- if (x < 1)
- fun_l29_n435(x)
- else
- fun_l29_n559(x)
- end
-end
-
-def fun_l28_n830(x)
- if (x < 1)
- fun_l29_n898(x)
- else
- fun_l29_n418(x)
- end
-end
-
-def fun_l28_n831(x)
- if (x < 1)
- fun_l29_n13(x)
- else
- fun_l29_n917(x)
- end
-end
-
-def fun_l28_n832(x)
- if (x < 1)
- fun_l29_n705(x)
- else
- fun_l29_n738(x)
- end
-end
-
-def fun_l28_n833(x)
- if (x < 1)
- fun_l29_n519(x)
- else
- fun_l29_n35(x)
- end
-end
-
-def fun_l28_n834(x)
- if (x < 1)
- fun_l29_n205(x)
- else
- fun_l29_n928(x)
- end
-end
-
-def fun_l28_n835(x)
- if (x < 1)
- fun_l29_n401(x)
- else
- fun_l29_n191(x)
- end
-end
-
-def fun_l28_n836(x)
- if (x < 1)
- fun_l29_n497(x)
- else
- fun_l29_n789(x)
- end
-end
-
-def fun_l28_n837(x)
- if (x < 1)
- fun_l29_n745(x)
- else
- fun_l29_n714(x)
- end
-end
-
-def fun_l28_n838(x)
- if (x < 1)
- fun_l29_n885(x)
- else
- fun_l29_n845(x)
- end
-end
-
-def fun_l28_n839(x)
- if (x < 1)
- fun_l29_n423(x)
- else
- fun_l29_n835(x)
- end
-end
-
-def fun_l28_n840(x)
- if (x < 1)
- fun_l29_n844(x)
- else
- fun_l29_n296(x)
- end
-end
-
-def fun_l28_n841(x)
- if (x < 1)
- fun_l29_n980(x)
- else
- fun_l29_n298(x)
- end
-end
-
-def fun_l28_n842(x)
- if (x < 1)
- fun_l29_n169(x)
- else
- fun_l29_n613(x)
- end
-end
-
-def fun_l28_n843(x)
- if (x < 1)
- fun_l29_n323(x)
- else
- fun_l29_n437(x)
- end
-end
-
-def fun_l28_n844(x)
- if (x < 1)
- fun_l29_n532(x)
- else
- fun_l29_n841(x)
- end
-end
-
-def fun_l28_n845(x)
- if (x < 1)
- fun_l29_n984(x)
- else
- fun_l29_n696(x)
- end
-end
-
-def fun_l28_n846(x)
- if (x < 1)
- fun_l29_n474(x)
- else
- fun_l29_n346(x)
- end
-end
-
-def fun_l28_n847(x)
- if (x < 1)
- fun_l29_n725(x)
- else
- fun_l29_n994(x)
- end
-end
-
-def fun_l28_n848(x)
- if (x < 1)
- fun_l29_n650(x)
- else
- fun_l29_n920(x)
- end
-end
-
-def fun_l28_n849(x)
- if (x < 1)
- fun_l29_n626(x)
- else
- fun_l29_n704(x)
- end
-end
-
-def fun_l28_n850(x)
- if (x < 1)
- fun_l29_n506(x)
- else
- fun_l29_n440(x)
- end
-end
-
-def fun_l28_n851(x)
- if (x < 1)
- fun_l29_n512(x)
- else
- fun_l29_n811(x)
- end
-end
-
-def fun_l28_n852(x)
- if (x < 1)
- fun_l29_n763(x)
- else
- fun_l29_n986(x)
- end
-end
-
-def fun_l28_n853(x)
- if (x < 1)
- fun_l29_n866(x)
- else
- fun_l29_n972(x)
- end
-end
-
-def fun_l28_n854(x)
- if (x < 1)
- fun_l29_n71(x)
- else
- fun_l29_n347(x)
- end
-end
-
-def fun_l28_n855(x)
- if (x < 1)
- fun_l29_n380(x)
- else
- fun_l29_n809(x)
- end
-end
-
-def fun_l28_n856(x)
- if (x < 1)
- fun_l29_n802(x)
- else
- fun_l29_n13(x)
- end
-end
-
-def fun_l28_n857(x)
- if (x < 1)
- fun_l29_n631(x)
- else
- fun_l29_n636(x)
- end
-end
-
-def fun_l28_n858(x)
- if (x < 1)
- fun_l29_n542(x)
- else
- fun_l29_n166(x)
- end
-end
-
-def fun_l28_n859(x)
- if (x < 1)
- fun_l29_n393(x)
- else
- fun_l29_n317(x)
- end
-end
-
-def fun_l28_n860(x)
- if (x < 1)
- fun_l29_n833(x)
- else
- fun_l29_n424(x)
- end
-end
-
-def fun_l28_n861(x)
- if (x < 1)
- fun_l29_n62(x)
- else
- fun_l29_n78(x)
- end
-end
-
-def fun_l28_n862(x)
- if (x < 1)
- fun_l29_n145(x)
- else
- fun_l29_n322(x)
- end
-end
-
-def fun_l28_n863(x)
- if (x < 1)
- fun_l29_n733(x)
- else
- fun_l29_n171(x)
- end
-end
-
-def fun_l28_n864(x)
- if (x < 1)
- fun_l29_n35(x)
- else
- fun_l29_n626(x)
- end
-end
-
-def fun_l28_n865(x)
- if (x < 1)
- fun_l29_n356(x)
- else
- fun_l29_n832(x)
- end
-end
-
-def fun_l28_n866(x)
- if (x < 1)
- fun_l29_n823(x)
- else
- fun_l29_n480(x)
- end
-end
-
-def fun_l28_n867(x)
- if (x < 1)
- fun_l29_n397(x)
- else
- fun_l29_n245(x)
- end
-end
-
-def fun_l28_n868(x)
- if (x < 1)
- fun_l29_n403(x)
- else
- fun_l29_n682(x)
- end
-end
-
-def fun_l28_n869(x)
- if (x < 1)
- fun_l29_n481(x)
- else
- fun_l29_n543(x)
- end
-end
-
-def fun_l28_n870(x)
- if (x < 1)
- fun_l29_n759(x)
- else
- fun_l29_n281(x)
- end
-end
-
-def fun_l28_n871(x)
- if (x < 1)
- fun_l29_n671(x)
- else
- fun_l29_n644(x)
- end
-end
-
-def fun_l28_n872(x)
- if (x < 1)
- fun_l29_n210(x)
- else
- fun_l29_n76(x)
- end
-end
-
-def fun_l28_n873(x)
- if (x < 1)
- fun_l29_n823(x)
- else
- fun_l29_n461(x)
- end
-end
-
-def fun_l28_n874(x)
- if (x < 1)
- fun_l29_n269(x)
- else
- fun_l29_n368(x)
- end
-end
-
-def fun_l28_n875(x)
- if (x < 1)
- fun_l29_n727(x)
- else
- fun_l29_n37(x)
- end
-end
-
-def fun_l28_n876(x)
- if (x < 1)
- fun_l29_n670(x)
- else
- fun_l29_n389(x)
- end
-end
-
-def fun_l28_n877(x)
- if (x < 1)
- fun_l29_n844(x)
- else
- fun_l29_n424(x)
- end
-end
-
-def fun_l28_n878(x)
- if (x < 1)
- fun_l29_n612(x)
- else
- fun_l29_n201(x)
- end
-end
-
-def fun_l28_n879(x)
- if (x < 1)
- fun_l29_n790(x)
- else
- fun_l29_n270(x)
- end
-end
-
-def fun_l28_n880(x)
- if (x < 1)
- fun_l29_n976(x)
- else
- fun_l29_n362(x)
- end
-end
-
-def fun_l28_n881(x)
- if (x < 1)
- fun_l29_n701(x)
- else
- fun_l29_n846(x)
- end
-end
-
-def fun_l28_n882(x)
- if (x < 1)
- fun_l29_n354(x)
- else
- fun_l29_n803(x)
- end
-end
-
-def fun_l28_n883(x)
- if (x < 1)
- fun_l29_n40(x)
- else
- fun_l29_n168(x)
- end
-end
-
-def fun_l28_n884(x)
- if (x < 1)
- fun_l29_n471(x)
- else
- fun_l29_n15(x)
- end
-end
-
-def fun_l28_n885(x)
- if (x < 1)
- fun_l29_n87(x)
- else
- fun_l29_n287(x)
- end
-end
-
-def fun_l28_n886(x)
- if (x < 1)
- fun_l29_n659(x)
- else
- fun_l29_n623(x)
- end
-end
-
-def fun_l28_n887(x)
- if (x < 1)
- fun_l29_n318(x)
- else
- fun_l29_n377(x)
- end
-end
-
-def fun_l28_n888(x)
- if (x < 1)
- fun_l29_n996(x)
- else
- fun_l29_n393(x)
- end
-end
-
-def fun_l28_n889(x)
- if (x < 1)
- fun_l29_n999(x)
- else
- fun_l29_n370(x)
- end
-end
-
-def fun_l28_n890(x)
- if (x < 1)
- fun_l29_n900(x)
- else
- fun_l29_n902(x)
- end
-end
-
-def fun_l28_n891(x)
- if (x < 1)
- fun_l29_n180(x)
- else
- fun_l29_n477(x)
- end
-end
-
-def fun_l28_n892(x)
- if (x < 1)
- fun_l29_n254(x)
- else
- fun_l29_n762(x)
- end
-end
-
-def fun_l28_n893(x)
- if (x < 1)
- fun_l29_n36(x)
- else
- fun_l29_n198(x)
- end
-end
-
-def fun_l28_n894(x)
- if (x < 1)
- fun_l29_n811(x)
- else
- fun_l29_n667(x)
- end
-end
-
-def fun_l28_n895(x)
- if (x < 1)
- fun_l29_n711(x)
- else
- fun_l29_n462(x)
- end
-end
-
-def fun_l28_n896(x)
- if (x < 1)
- fun_l29_n535(x)
- else
- fun_l29_n759(x)
- end
-end
-
-def fun_l28_n897(x)
- if (x < 1)
- fun_l29_n336(x)
- else
- fun_l29_n72(x)
- end
-end
-
-def fun_l28_n898(x)
- if (x < 1)
- fun_l29_n556(x)
- else
- fun_l29_n324(x)
- end
-end
-
-def fun_l28_n899(x)
- if (x < 1)
- fun_l29_n821(x)
- else
- fun_l29_n520(x)
- end
-end
-
-def fun_l28_n900(x)
- if (x < 1)
- fun_l29_n820(x)
- else
- fun_l29_n581(x)
- end
-end
-
-def fun_l28_n901(x)
- if (x < 1)
- fun_l29_n416(x)
- else
- fun_l29_n662(x)
- end
-end
-
-def fun_l28_n902(x)
- if (x < 1)
- fun_l29_n574(x)
- else
- fun_l29_n472(x)
- end
-end
-
-def fun_l28_n903(x)
- if (x < 1)
- fun_l29_n140(x)
- else
- fun_l29_n608(x)
- end
-end
-
-def fun_l28_n904(x)
- if (x < 1)
- fun_l29_n492(x)
- else
- fun_l29_n50(x)
- end
-end
-
-def fun_l28_n905(x)
- if (x < 1)
- fun_l29_n240(x)
- else
- fun_l29_n308(x)
- end
-end
-
-def fun_l28_n906(x)
- if (x < 1)
- fun_l29_n400(x)
- else
- fun_l29_n560(x)
- end
-end
-
-def fun_l28_n907(x)
- if (x < 1)
- fun_l29_n974(x)
- else
- fun_l29_n580(x)
- end
-end
-
-def fun_l28_n908(x)
- if (x < 1)
- fun_l29_n234(x)
- else
- fun_l29_n921(x)
- end
-end
-
-def fun_l28_n909(x)
- if (x < 1)
- fun_l29_n712(x)
- else
- fun_l29_n861(x)
- end
-end
-
-def fun_l28_n910(x)
- if (x < 1)
- fun_l29_n716(x)
- else
- fun_l29_n818(x)
- end
-end
-
-def fun_l28_n911(x)
- if (x < 1)
- fun_l29_n574(x)
- else
- fun_l29_n668(x)
- end
-end
-
-def fun_l28_n912(x)
- if (x < 1)
- fun_l29_n259(x)
- else
- fun_l29_n573(x)
- end
-end
-
-def fun_l28_n913(x)
- if (x < 1)
- fun_l29_n427(x)
- else
- fun_l29_n572(x)
- end
-end
-
-def fun_l28_n914(x)
- if (x < 1)
- fun_l29_n449(x)
- else
- fun_l29_n25(x)
- end
-end
-
-def fun_l28_n915(x)
- if (x < 1)
- fun_l29_n234(x)
- else
- fun_l29_n391(x)
- end
-end
-
-def fun_l28_n916(x)
- if (x < 1)
- fun_l29_n115(x)
- else
- fun_l29_n918(x)
- end
-end
-
-def fun_l28_n917(x)
- if (x < 1)
- fun_l29_n83(x)
- else
- fun_l29_n295(x)
- end
-end
-
-def fun_l28_n918(x)
- if (x < 1)
- fun_l29_n917(x)
- else
- fun_l29_n542(x)
- end
-end
-
-def fun_l28_n919(x)
- if (x < 1)
- fun_l29_n836(x)
- else
- fun_l29_n460(x)
- end
-end
-
-def fun_l28_n920(x)
- if (x < 1)
- fun_l29_n333(x)
- else
- fun_l29_n622(x)
- end
-end
-
-def fun_l28_n921(x)
- if (x < 1)
- fun_l29_n717(x)
- else
- fun_l29_n342(x)
- end
-end
-
-def fun_l28_n922(x)
- if (x < 1)
- fun_l29_n670(x)
- else
- fun_l29_n735(x)
- end
-end
-
-def fun_l28_n923(x)
- if (x < 1)
- fun_l29_n723(x)
- else
- fun_l29_n994(x)
- end
-end
-
-def fun_l28_n924(x)
- if (x < 1)
- fun_l29_n477(x)
- else
- fun_l29_n234(x)
- end
-end
-
-def fun_l28_n925(x)
- if (x < 1)
- fun_l29_n514(x)
- else
- fun_l29_n194(x)
- end
-end
-
-def fun_l28_n926(x)
- if (x < 1)
- fun_l29_n33(x)
- else
- fun_l29_n149(x)
- end
-end
-
-def fun_l28_n927(x)
- if (x < 1)
- fun_l29_n805(x)
- else
- fun_l29_n9(x)
- end
-end
-
-def fun_l28_n928(x)
- if (x < 1)
- fun_l29_n351(x)
- else
- fun_l29_n250(x)
- end
-end
-
-def fun_l28_n929(x)
- if (x < 1)
- fun_l29_n22(x)
- else
- fun_l29_n294(x)
- end
-end
-
-def fun_l28_n930(x)
- if (x < 1)
- fun_l29_n456(x)
- else
- fun_l29_n194(x)
- end
-end
-
-def fun_l28_n931(x)
- if (x < 1)
- fun_l29_n354(x)
- else
- fun_l29_n341(x)
- end
-end
-
-def fun_l28_n932(x)
- if (x < 1)
- fun_l29_n782(x)
- else
- fun_l29_n159(x)
- end
-end
-
-def fun_l28_n933(x)
- if (x < 1)
- fun_l29_n636(x)
- else
- fun_l29_n588(x)
- end
-end
-
-def fun_l28_n934(x)
- if (x < 1)
- fun_l29_n473(x)
- else
- fun_l29_n527(x)
- end
-end
-
-def fun_l28_n935(x)
- if (x < 1)
- fun_l29_n776(x)
- else
- fun_l29_n349(x)
- end
-end
-
-def fun_l28_n936(x)
- if (x < 1)
- fun_l29_n786(x)
- else
- fun_l29_n95(x)
- end
-end
-
-def fun_l28_n937(x)
- if (x < 1)
- fun_l29_n276(x)
- else
- fun_l29_n952(x)
- end
-end
-
-def fun_l28_n938(x)
- if (x < 1)
- fun_l29_n826(x)
- else
- fun_l29_n183(x)
- end
-end
-
-def fun_l28_n939(x)
- if (x < 1)
- fun_l29_n11(x)
- else
- fun_l29_n775(x)
- end
-end
-
-def fun_l28_n940(x)
- if (x < 1)
- fun_l29_n161(x)
- else
- fun_l29_n255(x)
- end
-end
-
-def fun_l28_n941(x)
- if (x < 1)
- fun_l29_n77(x)
- else
- fun_l29_n673(x)
- end
-end
-
-def fun_l28_n942(x)
- if (x < 1)
- fun_l29_n659(x)
- else
- fun_l29_n413(x)
- end
-end
-
-def fun_l28_n943(x)
- if (x < 1)
- fun_l29_n827(x)
- else
- fun_l29_n262(x)
- end
-end
-
-def fun_l28_n944(x)
- if (x < 1)
- fun_l29_n720(x)
- else
- fun_l29_n476(x)
- end
-end
-
-def fun_l28_n945(x)
- if (x < 1)
- fun_l29_n457(x)
- else
- fun_l29_n613(x)
- end
-end
-
-def fun_l28_n946(x)
- if (x < 1)
- fun_l29_n137(x)
- else
- fun_l29_n763(x)
- end
-end
-
-def fun_l28_n947(x)
- if (x < 1)
- fun_l29_n569(x)
- else
- fun_l29_n331(x)
- end
-end
-
-def fun_l28_n948(x)
- if (x < 1)
- fun_l29_n687(x)
- else
- fun_l29_n684(x)
- end
-end
-
-def fun_l28_n949(x)
- if (x < 1)
- fun_l29_n532(x)
- else
- fun_l29_n203(x)
- end
-end
-
-def fun_l28_n950(x)
- if (x < 1)
- fun_l29_n211(x)
- else
- fun_l29_n606(x)
- end
-end
-
-def fun_l28_n951(x)
- if (x < 1)
- fun_l29_n522(x)
- else
- fun_l29_n907(x)
- end
-end
-
-def fun_l28_n952(x)
- if (x < 1)
- fun_l29_n64(x)
- else
- fun_l29_n742(x)
- end
-end
-
-def fun_l28_n953(x)
- if (x < 1)
- fun_l29_n28(x)
- else
- fun_l29_n712(x)
- end
-end
-
-def fun_l28_n954(x)
- if (x < 1)
- fun_l29_n177(x)
- else
- fun_l29_n327(x)
- end
-end
-
-def fun_l28_n955(x)
- if (x < 1)
- fun_l29_n274(x)
- else
- fun_l29_n830(x)
- end
-end
-
-def fun_l28_n956(x)
- if (x < 1)
- fun_l29_n709(x)
- else
- fun_l29_n115(x)
- end
-end
-
-def fun_l28_n957(x)
- if (x < 1)
- fun_l29_n72(x)
- else
- fun_l29_n849(x)
- end
-end
-
-def fun_l28_n958(x)
- if (x < 1)
- fun_l29_n347(x)
- else
- fun_l29_n317(x)
- end
-end
-
-def fun_l28_n959(x)
- if (x < 1)
- fun_l29_n540(x)
- else
- fun_l29_n226(x)
- end
-end
-
-def fun_l28_n960(x)
- if (x < 1)
- fun_l29_n383(x)
- else
- fun_l29_n634(x)
- end
-end
-
-def fun_l28_n961(x)
- if (x < 1)
- fun_l29_n616(x)
- else
- fun_l29_n300(x)
- end
-end
-
-def fun_l28_n962(x)
- if (x < 1)
- fun_l29_n955(x)
- else
- fun_l29_n861(x)
- end
-end
-
-def fun_l28_n963(x)
- if (x < 1)
- fun_l29_n143(x)
- else
- fun_l29_n106(x)
- end
-end
-
-def fun_l28_n964(x)
- if (x < 1)
- fun_l29_n883(x)
- else
- fun_l29_n997(x)
- end
-end
-
-def fun_l28_n965(x)
- if (x < 1)
- fun_l29_n247(x)
- else
- fun_l29_n471(x)
- end
-end
-
-def fun_l28_n966(x)
- if (x < 1)
- fun_l29_n237(x)
- else
- fun_l29_n107(x)
- end
-end
-
-def fun_l28_n967(x)
- if (x < 1)
- fun_l29_n754(x)
- else
- fun_l29_n996(x)
- end
-end
-
-def fun_l28_n968(x)
- if (x < 1)
- fun_l29_n951(x)
- else
- fun_l29_n216(x)
- end
-end
-
-def fun_l28_n969(x)
- if (x < 1)
- fun_l29_n36(x)
- else
- fun_l29_n815(x)
- end
-end
-
-def fun_l28_n970(x)
- if (x < 1)
- fun_l29_n362(x)
- else
- fun_l29_n27(x)
- end
-end
-
-def fun_l28_n971(x)
- if (x < 1)
- fun_l29_n837(x)
- else
- fun_l29_n230(x)
- end
-end
-
-def fun_l28_n972(x)
- if (x < 1)
- fun_l29_n295(x)
- else
- fun_l29_n772(x)
- end
-end
-
-def fun_l28_n973(x)
- if (x < 1)
- fun_l29_n570(x)
- else
- fun_l29_n514(x)
- end
-end
-
-def fun_l28_n974(x)
- if (x < 1)
- fun_l29_n151(x)
- else
- fun_l29_n368(x)
- end
-end
-
-def fun_l28_n975(x)
- if (x < 1)
- fun_l29_n229(x)
- else
- fun_l29_n408(x)
- end
-end
-
-def fun_l28_n976(x)
- if (x < 1)
- fun_l29_n209(x)
- else
- fun_l29_n513(x)
- end
-end
-
-def fun_l28_n977(x)
- if (x < 1)
- fun_l29_n753(x)
- else
- fun_l29_n36(x)
- end
-end
-
-def fun_l28_n978(x)
- if (x < 1)
- fun_l29_n887(x)
- else
- fun_l29_n330(x)
- end
-end
-
-def fun_l28_n979(x)
- if (x < 1)
- fun_l29_n880(x)
- else
- fun_l29_n6(x)
- end
-end
-
-def fun_l28_n980(x)
- if (x < 1)
- fun_l29_n953(x)
- else
- fun_l29_n573(x)
- end
-end
-
-def fun_l28_n981(x)
- if (x < 1)
- fun_l29_n960(x)
- else
- fun_l29_n774(x)
- end
-end
-
-def fun_l28_n982(x)
- if (x < 1)
- fun_l29_n769(x)
- else
- fun_l29_n43(x)
- end
-end
-
-def fun_l28_n983(x)
- if (x < 1)
- fun_l29_n43(x)
- else
- fun_l29_n168(x)
- end
-end
-
-def fun_l28_n984(x)
- if (x < 1)
- fun_l29_n70(x)
- else
- fun_l29_n695(x)
- end
-end
-
-def fun_l28_n985(x)
- if (x < 1)
- fun_l29_n421(x)
- else
- fun_l29_n9(x)
- end
-end
-
-def fun_l28_n986(x)
- if (x < 1)
- fun_l29_n588(x)
- else
- fun_l29_n916(x)
- end
-end
-
-def fun_l28_n987(x)
- if (x < 1)
- fun_l29_n693(x)
- else
- fun_l29_n979(x)
- end
-end
-
-def fun_l28_n988(x)
- if (x < 1)
- fun_l29_n684(x)
- else
- fun_l29_n342(x)
- end
-end
-
-def fun_l28_n989(x)
- if (x < 1)
- fun_l29_n148(x)
- else
- fun_l29_n348(x)
- end
-end
-
-def fun_l28_n990(x)
- if (x < 1)
- fun_l29_n740(x)
- else
- fun_l29_n120(x)
- end
-end
-
-def fun_l28_n991(x)
- if (x < 1)
- fun_l29_n258(x)
- else
- fun_l29_n670(x)
- end
-end
-
-def fun_l28_n992(x)
- if (x < 1)
- fun_l29_n514(x)
- else
- fun_l29_n198(x)
- end
-end
-
-def fun_l28_n993(x)
- if (x < 1)
- fun_l29_n563(x)
- else
- fun_l29_n174(x)
- end
-end
-
-def fun_l28_n994(x)
- if (x < 1)
- fun_l29_n391(x)
- else
- fun_l29_n689(x)
- end
-end
-
-def fun_l28_n995(x)
- if (x < 1)
- fun_l29_n156(x)
- else
- fun_l29_n579(x)
- end
-end
-
-def fun_l28_n996(x)
- if (x < 1)
- fun_l29_n411(x)
- else
- fun_l29_n212(x)
- end
-end
-
-def fun_l28_n997(x)
- if (x < 1)
- fun_l29_n709(x)
- else
- fun_l29_n735(x)
- end
-end
-
-def fun_l28_n998(x)
- if (x < 1)
- fun_l29_n960(x)
- else
- fun_l29_n813(x)
- end
-end
-
-def fun_l28_n999(x)
- if (x < 1)
- fun_l29_n553(x)
- else
- fun_l29_n875(x)
- end
-end
-
-def fun_l29_n0(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n1(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n2(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n3(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n4(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n5(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n6(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n7(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n8(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n9(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n10(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n11(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n12(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n13(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n14(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n15(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n16(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n17(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n18(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n19(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n20(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n21(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n22(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n23(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n24(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n25(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n26(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n27(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n28(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n29(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n30(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n31(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n32(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n33(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n34(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n35(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n36(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n37(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n38(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n39(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n40(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n41(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n42(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n43(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n44(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n45(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n46(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n47(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n48(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n49(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n50(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n51(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n52(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n53(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n54(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n55(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n56(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n57(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n58(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n59(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n60(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n61(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n62(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n63(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n64(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n65(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n66(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n67(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n68(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n69(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n70(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n71(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n72(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n73(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n74(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n75(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n76(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n77(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n78(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n79(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n80(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n81(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n82(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n83(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n84(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n85(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n86(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n87(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n88(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n89(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n90(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n91(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n92(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n93(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n94(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n95(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n96(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n97(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n98(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n99(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n100(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n101(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n102(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n103(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n104(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n105(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n106(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n107(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n108(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n109(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n110(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n111(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n112(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n113(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n114(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n115(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n116(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n117(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n118(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n119(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n120(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n121(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n122(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n123(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n124(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n125(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n126(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n127(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n128(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n129(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n130(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n131(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n132(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n133(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n134(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n135(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n136(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n137(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n138(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n139(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n140(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n141(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n142(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n143(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n144(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n145(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n146(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n147(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n148(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n149(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n150(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n151(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n152(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n153(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n154(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n155(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n156(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n157(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n158(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n159(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n160(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n161(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n162(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n163(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n164(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n165(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n166(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n167(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n168(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n169(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n170(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n171(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n172(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n173(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n174(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n175(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n176(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n177(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n178(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n179(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n180(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n181(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n182(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n183(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n184(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n185(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n186(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n187(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n188(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n189(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n190(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n191(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n192(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n193(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n194(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n195(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n196(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n197(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n198(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n199(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n200(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n201(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n202(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n203(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n204(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n205(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n206(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n207(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n208(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n209(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n210(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n211(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n212(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n213(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n214(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n215(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n216(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n217(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n218(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n219(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n220(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n221(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n222(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n223(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n224(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n225(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n226(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n227(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n228(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n229(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n230(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n231(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n232(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n233(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n234(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n235(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n236(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n237(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n238(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n239(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n240(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n241(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n242(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n243(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n244(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n245(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n246(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n247(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n248(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n249(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n250(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n251(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n252(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n253(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n254(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n255(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n256(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n257(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n258(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n259(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n260(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n261(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n262(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n263(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n264(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n265(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n266(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n267(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n268(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n269(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n270(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n271(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n272(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n273(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n274(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n275(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n276(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n277(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n278(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n279(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n280(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n281(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n282(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n283(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n284(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n285(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n286(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n287(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n288(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n289(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n290(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n291(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n292(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n293(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n294(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n295(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n296(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n297(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n298(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n299(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n300(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n301(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n302(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n303(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n304(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n305(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n306(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n307(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n308(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n309(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n310(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n311(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n312(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n313(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n314(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n315(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n316(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n317(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n318(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n319(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n320(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n321(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n322(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n323(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n324(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n325(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n326(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n327(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n328(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n329(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n330(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n331(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n332(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n333(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n334(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n335(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n336(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n337(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n338(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n339(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n340(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n341(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n342(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n343(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n344(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n345(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n346(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n347(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n348(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n349(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n350(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n351(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n352(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n353(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n354(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n355(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n356(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n357(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n358(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n359(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n360(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n361(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n362(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n363(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n364(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n365(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n366(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n367(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n368(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n369(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n370(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n371(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n372(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n373(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n374(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n375(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n376(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n377(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n378(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n379(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n380(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n381(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n382(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n383(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n384(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n385(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n386(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n387(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n388(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n389(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n390(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n391(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n392(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n393(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n394(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n395(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n396(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n397(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n398(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n399(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n400(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n401(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n402(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n403(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n404(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n405(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n406(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n407(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n408(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n409(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n410(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n411(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n412(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n413(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n414(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n415(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n416(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n417(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n418(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n419(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n420(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n421(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n422(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n423(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n424(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n425(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n426(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n427(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n428(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n429(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n430(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n431(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n432(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n433(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n434(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n435(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n436(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n437(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n438(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n439(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n440(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n441(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n442(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n443(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n444(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n445(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n446(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n447(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n448(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n449(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n450(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n451(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n452(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n453(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n454(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n455(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n456(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n457(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n458(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n459(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n460(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n461(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n462(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n463(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n464(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n465(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n466(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n467(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n468(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n469(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n470(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n471(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n472(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n473(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n474(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n475(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n476(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n477(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n478(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n479(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n480(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n481(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n482(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n483(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n484(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n485(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n486(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n487(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n488(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n489(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n490(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n491(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n492(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n493(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n494(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n495(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n496(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n497(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n498(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n499(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n500(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n501(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n502(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n503(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n504(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n505(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n506(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n507(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n508(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n509(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n510(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n511(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n512(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n513(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n514(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n515(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n516(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n517(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n518(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n519(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n520(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n521(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n522(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n523(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n524(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n525(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n526(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n527(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n528(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n529(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n530(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n531(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n532(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n533(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n534(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n535(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n536(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n537(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n538(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n539(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n540(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n541(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n542(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n543(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n544(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n545(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n546(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n547(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n548(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n549(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n550(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n551(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n552(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n553(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n554(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n555(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n556(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n557(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n558(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n559(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n560(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n561(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n562(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n563(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n564(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n565(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n566(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n567(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n568(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n569(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n570(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n571(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n572(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n573(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n574(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n575(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n576(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n577(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n578(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n579(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n580(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n581(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n582(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n583(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n584(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n585(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n586(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n587(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n588(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n589(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n590(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n591(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n592(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n593(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n594(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n595(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n596(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n597(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n598(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n599(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n600(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n601(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n602(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n603(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n604(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n605(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n606(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n607(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n608(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n609(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n610(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n611(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n612(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n613(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n614(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n615(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n616(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n617(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n618(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n619(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n620(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n621(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n622(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n623(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n624(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n625(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n626(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n627(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n628(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n629(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n630(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n631(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n632(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n633(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n634(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n635(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n636(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n637(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n638(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n639(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n640(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n641(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n642(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n643(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n644(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n645(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n646(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n647(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n648(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n649(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n650(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n651(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n652(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n653(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n654(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n655(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n656(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n657(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n658(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n659(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n660(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n661(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n662(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n663(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n664(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n665(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n666(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n667(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n668(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n669(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n670(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n671(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n672(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n673(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n674(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n675(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n676(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n677(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n678(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n679(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n680(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n681(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n682(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n683(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n684(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n685(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n686(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n687(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n688(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n689(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n690(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n691(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n692(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n693(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n694(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n695(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n696(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n697(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n698(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n699(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n700(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n701(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n702(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n703(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n704(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n705(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n706(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n707(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n708(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n709(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n710(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n711(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n712(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n713(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n714(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n715(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n716(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n717(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n718(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n719(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n720(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n721(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n722(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n723(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n724(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n725(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n726(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n727(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n728(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n729(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n730(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n731(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n732(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n733(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n734(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n735(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n736(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n737(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n738(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n739(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n740(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n741(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n742(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n743(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n744(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n745(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n746(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n747(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n748(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n749(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n750(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n751(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n752(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n753(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n754(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n755(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n756(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n757(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n758(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n759(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n760(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n761(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n762(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n763(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n764(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n765(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n766(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n767(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n768(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n769(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n770(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n771(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n772(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n773(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n774(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n775(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n776(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n777(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n778(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n779(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n780(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n781(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n782(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n783(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n784(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n785(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n786(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n787(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n788(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n789(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n790(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n791(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n792(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n793(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n794(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n795(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n796(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n797(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n798(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n799(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n800(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n801(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n802(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n803(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n804(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n805(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n806(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n807(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n808(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n809(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n810(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n811(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n812(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n813(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n814(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n815(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n816(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n817(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n818(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n819(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n820(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n821(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n822(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n823(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n824(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n825(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n826(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n827(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n828(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n829(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n830(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n831(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n832(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n833(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n834(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n835(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n836(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n837(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n838(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n839(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n840(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n841(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n842(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n843(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n844(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n845(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n846(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n847(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n848(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n849(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n850(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n851(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n852(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n853(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n854(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n855(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n856(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n857(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n858(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n859(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n860(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n861(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n862(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n863(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n864(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n865(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n866(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n867(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n868(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n869(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n870(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n871(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n872(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n873(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n874(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n875(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n876(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n877(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n878(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n879(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n880(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n881(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n882(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n883(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n884(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n885(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n886(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n887(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n888(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n889(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n890(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n891(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n892(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n893(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n894(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n895(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n896(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n897(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n898(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n899(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n900(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n901(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n902(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n903(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n904(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n905(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n906(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n907(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n908(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n909(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n910(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n911(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n912(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n913(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n914(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n915(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n916(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n917(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n918(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n919(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n920(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n921(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n922(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n923(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n924(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n925(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n926(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n927(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n928(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n929(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n930(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n931(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n932(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n933(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n934(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n935(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n936(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n937(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n938(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n939(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n940(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n941(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n942(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n943(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n944(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n945(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n946(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n947(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n948(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n949(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n950(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n951(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n952(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n953(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n954(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n955(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n956(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n957(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n958(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n959(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n960(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n961(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n962(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n963(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n964(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n965(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n966(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n967(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n968(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n969(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n970(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n971(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n972(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n973(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n974(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n975(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n976(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n977(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n978(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n979(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n980(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n981(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n982(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n983(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n984(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n985(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n986(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n987(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n988(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n989(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n990(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n991(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n992(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n993(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n994(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n995(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n996(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n997(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n998(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-def fun_l29_n999(x)
- if (x < 1)
- inc(x)
- else
- inc(x)
- end
-end
-
-@a = 0
-@b = 0
-@c = 0
-@d = 0
-
-@count = 0
-def inc(x)
- @count += 1
-end
-
-@x = 0
-
-100.times do
- @x = (@x < 1)? 1:0
- fun_l0_n0(@x)
- fun_l0_n1(@x)
- fun_l0_n2(@x)
- fun_l0_n3(@x)
- fun_l0_n4(@x)
- fun_l0_n5(@x)
- fun_l0_n6(@x)
- fun_l0_n7(@x)
- fun_l0_n8(@x)
- fun_l0_n9(@x)
- fun_l0_n10(@x)
- fun_l0_n11(@x)
- fun_l0_n12(@x)
- fun_l0_n13(@x)
- fun_l0_n14(@x)
- fun_l0_n15(@x)
- fun_l0_n16(@x)
- fun_l0_n17(@x)
- fun_l0_n18(@x)
- fun_l0_n19(@x)
- fun_l0_n20(@x)
- fun_l0_n21(@x)
- fun_l0_n22(@x)
- fun_l0_n23(@x)
- fun_l0_n24(@x)
- fun_l0_n25(@x)
- fun_l0_n26(@x)
- fun_l0_n27(@x)
- fun_l0_n28(@x)
- fun_l0_n29(@x)
- fun_l0_n30(@x)
- fun_l0_n31(@x)
- fun_l0_n32(@x)
- fun_l0_n33(@x)
- fun_l0_n34(@x)
- fun_l0_n35(@x)
- fun_l0_n36(@x)
- fun_l0_n37(@x)
- fun_l0_n38(@x)
- fun_l0_n39(@x)
- fun_l0_n40(@x)
- fun_l0_n41(@x)
- fun_l0_n42(@x)
- fun_l0_n43(@x)
- fun_l0_n44(@x)
- fun_l0_n45(@x)
- fun_l0_n46(@x)
- fun_l0_n47(@x)
- fun_l0_n48(@x)
- fun_l0_n49(@x)
- fun_l0_n50(@x)
- fun_l0_n51(@x)
- fun_l0_n52(@x)
- fun_l0_n53(@x)
- fun_l0_n54(@x)
- fun_l0_n55(@x)
- fun_l0_n56(@x)
- fun_l0_n57(@x)
- fun_l0_n58(@x)
- fun_l0_n59(@x)
- fun_l0_n60(@x)
- fun_l0_n61(@x)
- fun_l0_n62(@x)
- fun_l0_n63(@x)
- fun_l0_n64(@x)
- fun_l0_n65(@x)
- fun_l0_n66(@x)
- fun_l0_n67(@x)
- fun_l0_n68(@x)
- fun_l0_n69(@x)
- fun_l0_n70(@x)
- fun_l0_n71(@x)
- fun_l0_n72(@x)
- fun_l0_n73(@x)
- fun_l0_n74(@x)
- fun_l0_n75(@x)
- fun_l0_n76(@x)
- fun_l0_n77(@x)
- fun_l0_n78(@x)
- fun_l0_n79(@x)
- fun_l0_n80(@x)
- fun_l0_n81(@x)
- fun_l0_n82(@x)
- fun_l0_n83(@x)
- fun_l0_n84(@x)
- fun_l0_n85(@x)
- fun_l0_n86(@x)
- fun_l0_n87(@x)
- fun_l0_n88(@x)
- fun_l0_n89(@x)
- fun_l0_n90(@x)
- fun_l0_n91(@x)
- fun_l0_n92(@x)
- fun_l0_n93(@x)
- fun_l0_n94(@x)
- fun_l0_n95(@x)
- fun_l0_n96(@x)
- fun_l0_n97(@x)
- fun_l0_n98(@x)
- fun_l0_n99(@x)
- fun_l0_n100(@x)
- fun_l0_n101(@x)
- fun_l0_n102(@x)
- fun_l0_n103(@x)
- fun_l0_n104(@x)
- fun_l0_n105(@x)
- fun_l0_n106(@x)
- fun_l0_n107(@x)
- fun_l0_n108(@x)
- fun_l0_n109(@x)
- fun_l0_n110(@x)
- fun_l0_n111(@x)
- fun_l0_n112(@x)
- fun_l0_n113(@x)
- fun_l0_n114(@x)
- fun_l0_n115(@x)
- fun_l0_n116(@x)
- fun_l0_n117(@x)
- fun_l0_n118(@x)
- fun_l0_n119(@x)
- fun_l0_n120(@x)
- fun_l0_n121(@x)
- fun_l0_n122(@x)
- fun_l0_n123(@x)
- fun_l0_n124(@x)
- fun_l0_n125(@x)
- fun_l0_n126(@x)
- fun_l0_n127(@x)
- fun_l0_n128(@x)
- fun_l0_n129(@x)
- fun_l0_n130(@x)
- fun_l0_n131(@x)
- fun_l0_n132(@x)
- fun_l0_n133(@x)
- fun_l0_n134(@x)
- fun_l0_n135(@x)
- fun_l0_n136(@x)
- fun_l0_n137(@x)
- fun_l0_n138(@x)
- fun_l0_n139(@x)
- fun_l0_n140(@x)
- fun_l0_n141(@x)
- fun_l0_n142(@x)
- fun_l0_n143(@x)
- fun_l0_n144(@x)
- fun_l0_n145(@x)
- fun_l0_n146(@x)
- fun_l0_n147(@x)
- fun_l0_n148(@x)
- fun_l0_n149(@x)
- fun_l0_n150(@x)
- fun_l0_n151(@x)
- fun_l0_n152(@x)
- fun_l0_n153(@x)
- fun_l0_n154(@x)
- fun_l0_n155(@x)
- fun_l0_n156(@x)
- fun_l0_n157(@x)
- fun_l0_n158(@x)
- fun_l0_n159(@x)
- fun_l0_n160(@x)
- fun_l0_n161(@x)
- fun_l0_n162(@x)
- fun_l0_n163(@x)
- fun_l0_n164(@x)
- fun_l0_n165(@x)
- fun_l0_n166(@x)
- fun_l0_n167(@x)
- fun_l0_n168(@x)
- fun_l0_n169(@x)
- fun_l0_n170(@x)
- fun_l0_n171(@x)
- fun_l0_n172(@x)
- fun_l0_n173(@x)
- fun_l0_n174(@x)
- fun_l0_n175(@x)
- fun_l0_n176(@x)
- fun_l0_n177(@x)
- fun_l0_n178(@x)
- fun_l0_n179(@x)
- fun_l0_n180(@x)
- fun_l0_n181(@x)
- fun_l0_n182(@x)
- fun_l0_n183(@x)
- fun_l0_n184(@x)
- fun_l0_n185(@x)
- fun_l0_n186(@x)
- fun_l0_n187(@x)
- fun_l0_n188(@x)
- fun_l0_n189(@x)
- fun_l0_n190(@x)
- fun_l0_n191(@x)
- fun_l0_n192(@x)
- fun_l0_n193(@x)
- fun_l0_n194(@x)
- fun_l0_n195(@x)
- fun_l0_n196(@x)
- fun_l0_n197(@x)
- fun_l0_n198(@x)
- fun_l0_n199(@x)
- fun_l0_n200(@x)
- fun_l0_n201(@x)
- fun_l0_n202(@x)
- fun_l0_n203(@x)
- fun_l0_n204(@x)
- fun_l0_n205(@x)
- fun_l0_n206(@x)
- fun_l0_n207(@x)
- fun_l0_n208(@x)
- fun_l0_n209(@x)
- fun_l0_n210(@x)
- fun_l0_n211(@x)
- fun_l0_n212(@x)
- fun_l0_n213(@x)
- fun_l0_n214(@x)
- fun_l0_n215(@x)
- fun_l0_n216(@x)
- fun_l0_n217(@x)
- fun_l0_n218(@x)
- fun_l0_n219(@x)
- fun_l0_n220(@x)
- fun_l0_n221(@x)
- fun_l0_n222(@x)
- fun_l0_n223(@x)
- fun_l0_n224(@x)
- fun_l0_n225(@x)
- fun_l0_n226(@x)
- fun_l0_n227(@x)
- fun_l0_n228(@x)
- fun_l0_n229(@x)
- fun_l0_n230(@x)
- fun_l0_n231(@x)
- fun_l0_n232(@x)
- fun_l0_n233(@x)
- fun_l0_n234(@x)
- fun_l0_n235(@x)
- fun_l0_n236(@x)
- fun_l0_n237(@x)
- fun_l0_n238(@x)
- fun_l0_n239(@x)
- fun_l0_n240(@x)
- fun_l0_n241(@x)
- fun_l0_n242(@x)
- fun_l0_n243(@x)
- fun_l0_n244(@x)
- fun_l0_n245(@x)
- fun_l0_n246(@x)
- fun_l0_n247(@x)
- fun_l0_n248(@x)
- fun_l0_n249(@x)
- fun_l0_n250(@x)
- fun_l0_n251(@x)
- fun_l0_n252(@x)
- fun_l0_n253(@x)
- fun_l0_n254(@x)
- fun_l0_n255(@x)
- fun_l0_n256(@x)
- fun_l0_n257(@x)
- fun_l0_n258(@x)
- fun_l0_n259(@x)
- fun_l0_n260(@x)
- fun_l0_n261(@x)
- fun_l0_n262(@x)
- fun_l0_n263(@x)
- fun_l0_n264(@x)
- fun_l0_n265(@x)
- fun_l0_n266(@x)
- fun_l0_n267(@x)
- fun_l0_n268(@x)
- fun_l0_n269(@x)
- fun_l0_n270(@x)
- fun_l0_n271(@x)
- fun_l0_n272(@x)
- fun_l0_n273(@x)
- fun_l0_n274(@x)
- fun_l0_n275(@x)
- fun_l0_n276(@x)
- fun_l0_n277(@x)
- fun_l0_n278(@x)
- fun_l0_n279(@x)
- fun_l0_n280(@x)
- fun_l0_n281(@x)
- fun_l0_n282(@x)
- fun_l0_n283(@x)
- fun_l0_n284(@x)
- fun_l0_n285(@x)
- fun_l0_n286(@x)
- fun_l0_n287(@x)
- fun_l0_n288(@x)
- fun_l0_n289(@x)
- fun_l0_n290(@x)
- fun_l0_n291(@x)
- fun_l0_n292(@x)
- fun_l0_n293(@x)
- fun_l0_n294(@x)
- fun_l0_n295(@x)
- fun_l0_n296(@x)
- fun_l0_n297(@x)
- fun_l0_n298(@x)
- fun_l0_n299(@x)
- fun_l0_n300(@x)
- fun_l0_n301(@x)
- fun_l0_n302(@x)
- fun_l0_n303(@x)
- fun_l0_n304(@x)
- fun_l0_n305(@x)
- fun_l0_n306(@x)
- fun_l0_n307(@x)
- fun_l0_n308(@x)
- fun_l0_n309(@x)
- fun_l0_n310(@x)
- fun_l0_n311(@x)
- fun_l0_n312(@x)
- fun_l0_n313(@x)
- fun_l0_n314(@x)
- fun_l0_n315(@x)
- fun_l0_n316(@x)
- fun_l0_n317(@x)
- fun_l0_n318(@x)
- fun_l0_n319(@x)
- fun_l0_n320(@x)
- fun_l0_n321(@x)
- fun_l0_n322(@x)
- fun_l0_n323(@x)
- fun_l0_n324(@x)
- fun_l0_n325(@x)
- fun_l0_n326(@x)
- fun_l0_n327(@x)
- fun_l0_n328(@x)
- fun_l0_n329(@x)
- fun_l0_n330(@x)
- fun_l0_n331(@x)
- fun_l0_n332(@x)
- fun_l0_n333(@x)
- fun_l0_n334(@x)
- fun_l0_n335(@x)
- fun_l0_n336(@x)
- fun_l0_n337(@x)
- fun_l0_n338(@x)
- fun_l0_n339(@x)
- fun_l0_n340(@x)
- fun_l0_n341(@x)
- fun_l0_n342(@x)
- fun_l0_n343(@x)
- fun_l0_n344(@x)
- fun_l0_n345(@x)
- fun_l0_n346(@x)
- fun_l0_n347(@x)
- fun_l0_n348(@x)
- fun_l0_n349(@x)
- fun_l0_n350(@x)
- fun_l0_n351(@x)
- fun_l0_n352(@x)
- fun_l0_n353(@x)
- fun_l0_n354(@x)
- fun_l0_n355(@x)
- fun_l0_n356(@x)
- fun_l0_n357(@x)
- fun_l0_n358(@x)
- fun_l0_n359(@x)
- fun_l0_n360(@x)
- fun_l0_n361(@x)
- fun_l0_n362(@x)
- fun_l0_n363(@x)
- fun_l0_n364(@x)
- fun_l0_n365(@x)
- fun_l0_n366(@x)
- fun_l0_n367(@x)
- fun_l0_n368(@x)
- fun_l0_n369(@x)
- fun_l0_n370(@x)
- fun_l0_n371(@x)
- fun_l0_n372(@x)
- fun_l0_n373(@x)
- fun_l0_n374(@x)
- fun_l0_n375(@x)
- fun_l0_n376(@x)
- fun_l0_n377(@x)
- fun_l0_n378(@x)
- fun_l0_n379(@x)
- fun_l0_n380(@x)
- fun_l0_n381(@x)
- fun_l0_n382(@x)
- fun_l0_n383(@x)
- fun_l0_n384(@x)
- fun_l0_n385(@x)
- fun_l0_n386(@x)
- fun_l0_n387(@x)
- fun_l0_n388(@x)
- fun_l0_n389(@x)
- fun_l0_n390(@x)
- fun_l0_n391(@x)
- fun_l0_n392(@x)
- fun_l0_n393(@x)
- fun_l0_n394(@x)
- fun_l0_n395(@x)
- fun_l0_n396(@x)
- fun_l0_n397(@x)
- fun_l0_n398(@x)
- fun_l0_n399(@x)
- fun_l0_n400(@x)
- fun_l0_n401(@x)
- fun_l0_n402(@x)
- fun_l0_n403(@x)
- fun_l0_n404(@x)
- fun_l0_n405(@x)
- fun_l0_n406(@x)
- fun_l0_n407(@x)
- fun_l0_n408(@x)
- fun_l0_n409(@x)
- fun_l0_n410(@x)
- fun_l0_n411(@x)
- fun_l0_n412(@x)
- fun_l0_n413(@x)
- fun_l0_n414(@x)
- fun_l0_n415(@x)
- fun_l0_n416(@x)
- fun_l0_n417(@x)
- fun_l0_n418(@x)
- fun_l0_n419(@x)
- fun_l0_n420(@x)
- fun_l0_n421(@x)
- fun_l0_n422(@x)
- fun_l0_n423(@x)
- fun_l0_n424(@x)
- fun_l0_n425(@x)
- fun_l0_n426(@x)
- fun_l0_n427(@x)
- fun_l0_n428(@x)
- fun_l0_n429(@x)
- fun_l0_n430(@x)
- fun_l0_n431(@x)
- fun_l0_n432(@x)
- fun_l0_n433(@x)
- fun_l0_n434(@x)
- fun_l0_n435(@x)
- fun_l0_n436(@x)
- fun_l0_n437(@x)
- fun_l0_n438(@x)
- fun_l0_n439(@x)
- fun_l0_n440(@x)
- fun_l0_n441(@x)
- fun_l0_n442(@x)
- fun_l0_n443(@x)
- fun_l0_n444(@x)
- fun_l0_n445(@x)
- fun_l0_n446(@x)
- fun_l0_n447(@x)
- fun_l0_n448(@x)
- fun_l0_n449(@x)
- fun_l0_n450(@x)
- fun_l0_n451(@x)
- fun_l0_n452(@x)
- fun_l0_n453(@x)
- fun_l0_n454(@x)
- fun_l0_n455(@x)
- fun_l0_n456(@x)
- fun_l0_n457(@x)
- fun_l0_n458(@x)
- fun_l0_n459(@x)
- fun_l0_n460(@x)
- fun_l0_n461(@x)
- fun_l0_n462(@x)
- fun_l0_n463(@x)
- fun_l0_n464(@x)
- fun_l0_n465(@x)
- fun_l0_n466(@x)
- fun_l0_n467(@x)
- fun_l0_n468(@x)
- fun_l0_n469(@x)
- fun_l0_n470(@x)
- fun_l0_n471(@x)
- fun_l0_n472(@x)
- fun_l0_n473(@x)
- fun_l0_n474(@x)
- fun_l0_n475(@x)
- fun_l0_n476(@x)
- fun_l0_n477(@x)
- fun_l0_n478(@x)
- fun_l0_n479(@x)
- fun_l0_n480(@x)
- fun_l0_n481(@x)
- fun_l0_n482(@x)
- fun_l0_n483(@x)
- fun_l0_n484(@x)
- fun_l0_n485(@x)
- fun_l0_n486(@x)
- fun_l0_n487(@x)
- fun_l0_n488(@x)
- fun_l0_n489(@x)
- fun_l0_n490(@x)
- fun_l0_n491(@x)
- fun_l0_n492(@x)
- fun_l0_n493(@x)
- fun_l0_n494(@x)
- fun_l0_n495(@x)
- fun_l0_n496(@x)
- fun_l0_n497(@x)
- fun_l0_n498(@x)
- fun_l0_n499(@x)
- fun_l0_n500(@x)
- fun_l0_n501(@x)
- fun_l0_n502(@x)
- fun_l0_n503(@x)
- fun_l0_n504(@x)
- fun_l0_n505(@x)
- fun_l0_n506(@x)
- fun_l0_n507(@x)
- fun_l0_n508(@x)
- fun_l0_n509(@x)
- fun_l0_n510(@x)
- fun_l0_n511(@x)
- fun_l0_n512(@x)
- fun_l0_n513(@x)
- fun_l0_n514(@x)
- fun_l0_n515(@x)
- fun_l0_n516(@x)
- fun_l0_n517(@x)
- fun_l0_n518(@x)
- fun_l0_n519(@x)
- fun_l0_n520(@x)
- fun_l0_n521(@x)
- fun_l0_n522(@x)
- fun_l0_n523(@x)
- fun_l0_n524(@x)
- fun_l0_n525(@x)
- fun_l0_n526(@x)
- fun_l0_n527(@x)
- fun_l0_n528(@x)
- fun_l0_n529(@x)
- fun_l0_n530(@x)
- fun_l0_n531(@x)
- fun_l0_n532(@x)
- fun_l0_n533(@x)
- fun_l0_n534(@x)
- fun_l0_n535(@x)
- fun_l0_n536(@x)
- fun_l0_n537(@x)
- fun_l0_n538(@x)
- fun_l0_n539(@x)
- fun_l0_n540(@x)
- fun_l0_n541(@x)
- fun_l0_n542(@x)
- fun_l0_n543(@x)
- fun_l0_n544(@x)
- fun_l0_n545(@x)
- fun_l0_n546(@x)
- fun_l0_n547(@x)
- fun_l0_n548(@x)
- fun_l0_n549(@x)
- fun_l0_n550(@x)
- fun_l0_n551(@x)
- fun_l0_n552(@x)
- fun_l0_n553(@x)
- fun_l0_n554(@x)
- fun_l0_n555(@x)
- fun_l0_n556(@x)
- fun_l0_n557(@x)
- fun_l0_n558(@x)
- fun_l0_n559(@x)
- fun_l0_n560(@x)
- fun_l0_n561(@x)
- fun_l0_n562(@x)
- fun_l0_n563(@x)
- fun_l0_n564(@x)
- fun_l0_n565(@x)
- fun_l0_n566(@x)
- fun_l0_n567(@x)
- fun_l0_n568(@x)
- fun_l0_n569(@x)
- fun_l0_n570(@x)
- fun_l0_n571(@x)
- fun_l0_n572(@x)
- fun_l0_n573(@x)
- fun_l0_n574(@x)
- fun_l0_n575(@x)
- fun_l0_n576(@x)
- fun_l0_n577(@x)
- fun_l0_n578(@x)
- fun_l0_n579(@x)
- fun_l0_n580(@x)
- fun_l0_n581(@x)
- fun_l0_n582(@x)
- fun_l0_n583(@x)
- fun_l0_n584(@x)
- fun_l0_n585(@x)
- fun_l0_n586(@x)
- fun_l0_n587(@x)
- fun_l0_n588(@x)
- fun_l0_n589(@x)
- fun_l0_n590(@x)
- fun_l0_n591(@x)
- fun_l0_n592(@x)
- fun_l0_n593(@x)
- fun_l0_n594(@x)
- fun_l0_n595(@x)
- fun_l0_n596(@x)
- fun_l0_n597(@x)
- fun_l0_n598(@x)
- fun_l0_n599(@x)
- fun_l0_n600(@x)
- fun_l0_n601(@x)
- fun_l0_n602(@x)
- fun_l0_n603(@x)
- fun_l0_n604(@x)
- fun_l0_n605(@x)
- fun_l0_n606(@x)
- fun_l0_n607(@x)
- fun_l0_n608(@x)
- fun_l0_n609(@x)
- fun_l0_n610(@x)
- fun_l0_n611(@x)
- fun_l0_n612(@x)
- fun_l0_n613(@x)
- fun_l0_n614(@x)
- fun_l0_n615(@x)
- fun_l0_n616(@x)
- fun_l0_n617(@x)
- fun_l0_n618(@x)
- fun_l0_n619(@x)
- fun_l0_n620(@x)
- fun_l0_n621(@x)
- fun_l0_n622(@x)
- fun_l0_n623(@x)
- fun_l0_n624(@x)
- fun_l0_n625(@x)
- fun_l0_n626(@x)
- fun_l0_n627(@x)
- fun_l0_n628(@x)
- fun_l0_n629(@x)
- fun_l0_n630(@x)
- fun_l0_n631(@x)
- fun_l0_n632(@x)
- fun_l0_n633(@x)
- fun_l0_n634(@x)
- fun_l0_n635(@x)
- fun_l0_n636(@x)
- fun_l0_n637(@x)
- fun_l0_n638(@x)
- fun_l0_n639(@x)
- fun_l0_n640(@x)
- fun_l0_n641(@x)
- fun_l0_n642(@x)
- fun_l0_n643(@x)
- fun_l0_n644(@x)
- fun_l0_n645(@x)
- fun_l0_n646(@x)
- fun_l0_n647(@x)
- fun_l0_n648(@x)
- fun_l0_n649(@x)
- fun_l0_n650(@x)
- fun_l0_n651(@x)
- fun_l0_n652(@x)
- fun_l0_n653(@x)
- fun_l0_n654(@x)
- fun_l0_n655(@x)
- fun_l0_n656(@x)
- fun_l0_n657(@x)
- fun_l0_n658(@x)
- fun_l0_n659(@x)
- fun_l0_n660(@x)
- fun_l0_n661(@x)
- fun_l0_n662(@x)
- fun_l0_n663(@x)
- fun_l0_n664(@x)
- fun_l0_n665(@x)
- fun_l0_n666(@x)
- fun_l0_n667(@x)
- fun_l0_n668(@x)
- fun_l0_n669(@x)
- fun_l0_n670(@x)
- fun_l0_n671(@x)
- fun_l0_n672(@x)
- fun_l0_n673(@x)
- fun_l0_n674(@x)
- fun_l0_n675(@x)
- fun_l0_n676(@x)
- fun_l0_n677(@x)
- fun_l0_n678(@x)
- fun_l0_n679(@x)
- fun_l0_n680(@x)
- fun_l0_n681(@x)
- fun_l0_n682(@x)
- fun_l0_n683(@x)
- fun_l0_n684(@x)
- fun_l0_n685(@x)
- fun_l0_n686(@x)
- fun_l0_n687(@x)
- fun_l0_n688(@x)
- fun_l0_n689(@x)
- fun_l0_n690(@x)
- fun_l0_n691(@x)
- fun_l0_n692(@x)
- fun_l0_n693(@x)
- fun_l0_n694(@x)
- fun_l0_n695(@x)
- fun_l0_n696(@x)
- fun_l0_n697(@x)
- fun_l0_n698(@x)
- fun_l0_n699(@x)
- fun_l0_n700(@x)
- fun_l0_n701(@x)
- fun_l0_n702(@x)
- fun_l0_n703(@x)
- fun_l0_n704(@x)
- fun_l0_n705(@x)
- fun_l0_n706(@x)
- fun_l0_n707(@x)
- fun_l0_n708(@x)
- fun_l0_n709(@x)
- fun_l0_n710(@x)
- fun_l0_n711(@x)
- fun_l0_n712(@x)
- fun_l0_n713(@x)
- fun_l0_n714(@x)
- fun_l0_n715(@x)
- fun_l0_n716(@x)
- fun_l0_n717(@x)
- fun_l0_n718(@x)
- fun_l0_n719(@x)
- fun_l0_n720(@x)
- fun_l0_n721(@x)
- fun_l0_n722(@x)
- fun_l0_n723(@x)
- fun_l0_n724(@x)
- fun_l0_n725(@x)
- fun_l0_n726(@x)
- fun_l0_n727(@x)
- fun_l0_n728(@x)
- fun_l0_n729(@x)
- fun_l0_n730(@x)
- fun_l0_n731(@x)
- fun_l0_n732(@x)
- fun_l0_n733(@x)
- fun_l0_n734(@x)
- fun_l0_n735(@x)
- fun_l0_n736(@x)
- fun_l0_n737(@x)
- fun_l0_n738(@x)
- fun_l0_n739(@x)
- fun_l0_n740(@x)
- fun_l0_n741(@x)
- fun_l0_n742(@x)
- fun_l0_n743(@x)
- fun_l0_n744(@x)
- fun_l0_n745(@x)
- fun_l0_n746(@x)
- fun_l0_n747(@x)
- fun_l0_n748(@x)
- fun_l0_n749(@x)
- fun_l0_n750(@x)
- fun_l0_n751(@x)
- fun_l0_n752(@x)
- fun_l0_n753(@x)
- fun_l0_n754(@x)
- fun_l0_n755(@x)
- fun_l0_n756(@x)
- fun_l0_n757(@x)
- fun_l0_n758(@x)
- fun_l0_n759(@x)
- fun_l0_n760(@x)
- fun_l0_n761(@x)
- fun_l0_n762(@x)
- fun_l0_n763(@x)
- fun_l0_n764(@x)
- fun_l0_n765(@x)
- fun_l0_n766(@x)
- fun_l0_n767(@x)
- fun_l0_n768(@x)
- fun_l0_n769(@x)
- fun_l0_n770(@x)
- fun_l0_n771(@x)
- fun_l0_n772(@x)
- fun_l0_n773(@x)
- fun_l0_n774(@x)
- fun_l0_n775(@x)
- fun_l0_n776(@x)
- fun_l0_n777(@x)
- fun_l0_n778(@x)
- fun_l0_n779(@x)
- fun_l0_n780(@x)
- fun_l0_n781(@x)
- fun_l0_n782(@x)
- fun_l0_n783(@x)
- fun_l0_n784(@x)
- fun_l0_n785(@x)
- fun_l0_n786(@x)
- fun_l0_n787(@x)
- fun_l0_n788(@x)
- fun_l0_n789(@x)
- fun_l0_n790(@x)
- fun_l0_n791(@x)
- fun_l0_n792(@x)
- fun_l0_n793(@x)
- fun_l0_n794(@x)
- fun_l0_n795(@x)
- fun_l0_n796(@x)
- fun_l0_n797(@x)
- fun_l0_n798(@x)
- fun_l0_n799(@x)
- fun_l0_n800(@x)
- fun_l0_n801(@x)
- fun_l0_n802(@x)
- fun_l0_n803(@x)
- fun_l0_n804(@x)
- fun_l0_n805(@x)
- fun_l0_n806(@x)
- fun_l0_n807(@x)
- fun_l0_n808(@x)
- fun_l0_n809(@x)
- fun_l0_n810(@x)
- fun_l0_n811(@x)
- fun_l0_n812(@x)
- fun_l0_n813(@x)
- fun_l0_n814(@x)
- fun_l0_n815(@x)
- fun_l0_n816(@x)
- fun_l0_n817(@x)
- fun_l0_n818(@x)
- fun_l0_n819(@x)
- fun_l0_n820(@x)
- fun_l0_n821(@x)
- fun_l0_n822(@x)
- fun_l0_n823(@x)
- fun_l0_n824(@x)
- fun_l0_n825(@x)
- fun_l0_n826(@x)
- fun_l0_n827(@x)
- fun_l0_n828(@x)
- fun_l0_n829(@x)
- fun_l0_n830(@x)
- fun_l0_n831(@x)
- fun_l0_n832(@x)
- fun_l0_n833(@x)
- fun_l0_n834(@x)
- fun_l0_n835(@x)
- fun_l0_n836(@x)
- fun_l0_n837(@x)
- fun_l0_n838(@x)
- fun_l0_n839(@x)
- fun_l0_n840(@x)
- fun_l0_n841(@x)
- fun_l0_n842(@x)
- fun_l0_n843(@x)
- fun_l0_n844(@x)
- fun_l0_n845(@x)
- fun_l0_n846(@x)
- fun_l0_n847(@x)
- fun_l0_n848(@x)
- fun_l0_n849(@x)
- fun_l0_n850(@x)
- fun_l0_n851(@x)
- fun_l0_n852(@x)
- fun_l0_n853(@x)
- fun_l0_n854(@x)
- fun_l0_n855(@x)
- fun_l0_n856(@x)
- fun_l0_n857(@x)
- fun_l0_n858(@x)
- fun_l0_n859(@x)
- fun_l0_n860(@x)
- fun_l0_n861(@x)
- fun_l0_n862(@x)
- fun_l0_n863(@x)
- fun_l0_n864(@x)
- fun_l0_n865(@x)
- fun_l0_n866(@x)
- fun_l0_n867(@x)
- fun_l0_n868(@x)
- fun_l0_n869(@x)
- fun_l0_n870(@x)
- fun_l0_n871(@x)
- fun_l0_n872(@x)
- fun_l0_n873(@x)
- fun_l0_n874(@x)
- fun_l0_n875(@x)
- fun_l0_n876(@x)
- fun_l0_n877(@x)
- fun_l0_n878(@x)
- fun_l0_n879(@x)
- fun_l0_n880(@x)
- fun_l0_n881(@x)
- fun_l0_n882(@x)
- fun_l0_n883(@x)
- fun_l0_n884(@x)
- fun_l0_n885(@x)
- fun_l0_n886(@x)
- fun_l0_n887(@x)
- fun_l0_n888(@x)
- fun_l0_n889(@x)
- fun_l0_n890(@x)
- fun_l0_n891(@x)
- fun_l0_n892(@x)
- fun_l0_n893(@x)
- fun_l0_n894(@x)
- fun_l0_n895(@x)
- fun_l0_n896(@x)
- fun_l0_n897(@x)
- fun_l0_n898(@x)
- fun_l0_n899(@x)
- fun_l0_n900(@x)
- fun_l0_n901(@x)
- fun_l0_n902(@x)
- fun_l0_n903(@x)
- fun_l0_n904(@x)
- fun_l0_n905(@x)
- fun_l0_n906(@x)
- fun_l0_n907(@x)
- fun_l0_n908(@x)
- fun_l0_n909(@x)
- fun_l0_n910(@x)
- fun_l0_n911(@x)
- fun_l0_n912(@x)
- fun_l0_n913(@x)
- fun_l0_n914(@x)
- fun_l0_n915(@x)
- fun_l0_n916(@x)
- fun_l0_n917(@x)
- fun_l0_n918(@x)
- fun_l0_n919(@x)
- fun_l0_n920(@x)
- fun_l0_n921(@x)
- fun_l0_n922(@x)
- fun_l0_n923(@x)
- fun_l0_n924(@x)
- fun_l0_n925(@x)
- fun_l0_n926(@x)
- fun_l0_n927(@x)
- fun_l0_n928(@x)
- fun_l0_n929(@x)
- fun_l0_n930(@x)
- fun_l0_n931(@x)
- fun_l0_n932(@x)
- fun_l0_n933(@x)
- fun_l0_n934(@x)
- fun_l0_n935(@x)
- fun_l0_n936(@x)
- fun_l0_n937(@x)
- fun_l0_n938(@x)
- fun_l0_n939(@x)
- fun_l0_n940(@x)
- fun_l0_n941(@x)
- fun_l0_n942(@x)
- fun_l0_n943(@x)
- fun_l0_n944(@x)
- fun_l0_n945(@x)
- fun_l0_n946(@x)
- fun_l0_n947(@x)
- fun_l0_n948(@x)
- fun_l0_n949(@x)
- fun_l0_n950(@x)
- fun_l0_n951(@x)
- fun_l0_n952(@x)
- fun_l0_n953(@x)
- fun_l0_n954(@x)
- fun_l0_n955(@x)
- fun_l0_n956(@x)
- fun_l0_n957(@x)
- fun_l0_n958(@x)
- fun_l0_n959(@x)
- fun_l0_n960(@x)
- fun_l0_n961(@x)
- fun_l0_n962(@x)
- fun_l0_n963(@x)
- fun_l0_n964(@x)
- fun_l0_n965(@x)
- fun_l0_n966(@x)
- fun_l0_n967(@x)
- fun_l0_n968(@x)
- fun_l0_n969(@x)
- fun_l0_n970(@x)
- fun_l0_n971(@x)
- fun_l0_n972(@x)
- fun_l0_n973(@x)
- fun_l0_n974(@x)
- fun_l0_n975(@x)
- fun_l0_n976(@x)
- fun_l0_n977(@x)
- fun_l0_n978(@x)
- fun_l0_n979(@x)
- fun_l0_n980(@x)
- fun_l0_n981(@x)
- fun_l0_n982(@x)
- fun_l0_n983(@x)
- fun_l0_n984(@x)
- fun_l0_n985(@x)
- fun_l0_n986(@x)
- fun_l0_n987(@x)
- fun_l0_n988(@x)
- fun_l0_n989(@x)
- fun_l0_n990(@x)
- fun_l0_n991(@x)
- fun_l0_n992(@x)
- fun_l0_n993(@x)
- fun_l0_n994(@x)
- fun_l0_n995(@x)
- fun_l0_n996(@x)
- fun_l0_n997(@x)
- fun_l0_n998(@x)
- fun_l0_n999(@x)
-end
-
-@count
-
-}
diff --git a/bootstraptest/test_yjit_30k_methods.rb b/bootstraptest/test_yjit_30k_methods.rb
deleted file mode 100644
index f2acea4ce5..0000000000
--- a/bootstraptest/test_yjit_30k_methods.rb
+++ /dev/null
@@ -1,121018 +0,0 @@
-# This is a torture test for the JIT.
-# There are 30K tiny methods in a 30-deep call hierarchy.
-assert_equal '1000000', %q{
-
-def fun_l0_n0()
- fun_l1_n758
-end
-
-def fun_l0_n1()
- fun_l1_n491
-end
-
-def fun_l0_n2()
- fun_l1_n804
-end
-
-def fun_l0_n3()
- fun_l1_n253
-end
-
-def fun_l0_n4()
- fun_l1_n409
-end
-
-def fun_l0_n5()
- fun_l1_n383
-end
-
-def fun_l0_n6()
- fun_l1_n170
-end
-
-def fun_l0_n7()
- fun_l1_n821
-end
-
-def fun_l0_n8()
- fun_l1_n424
-end
-
-def fun_l0_n9()
- fun_l1_n328
-end
-
-def fun_l0_n10()
- fun_l1_n326
-end
-
-def fun_l0_n11()
- fun_l1_n879
-end
-
-def fun_l0_n12()
- fun_l1_n509
-end
-
-def fun_l0_n13()
- fun_l1_n464
-end
-
-def fun_l0_n14()
- fun_l1_n806
-end
-
-def fun_l0_n15()
- fun_l1_n277
-end
-
-def fun_l0_n16()
- fun_l1_n684
-end
-
-def fun_l0_n17()
- fun_l1_n54
-end
-
-def fun_l0_n18()
- fun_l1_n514
-end
-
-def fun_l0_n19()
- fun_l1_n967
-end
-
-def fun_l0_n20()
- fun_l1_n50
-end
-
-def fun_l0_n21()
- fun_l1_n248
-end
-
-def fun_l0_n22()
- fun_l1_n410
-end
-
-def fun_l0_n23()
- fun_l1_n411
-end
-
-def fun_l0_n24()
- fun_l1_n422
-end
-
-def fun_l0_n25()
- fun_l1_n427
-end
-
-def fun_l0_n26()
- fun_l1_n929
-end
-
-def fun_l0_n27()
- fun_l1_n93
-end
-
-def fun_l0_n28()
- fun_l1_n790
-end
-
-def fun_l0_n29()
- fun_l1_n107
-end
-
-def fun_l0_n30()
- fun_l1_n29
-end
-
-def fun_l0_n31()
- fun_l1_n164
-end
-
-def fun_l0_n32()
- fun_l1_n720
-end
-
-def fun_l0_n33()
- fun_l1_n30
-end
-
-def fun_l0_n34()
- fun_l1_n133
-end
-
-def fun_l0_n35()
- fun_l1_n122
-end
-
-def fun_l0_n36()
- fun_l1_n101
-end
-
-def fun_l0_n37()
- fun_l1_n80
-end
-
-def fun_l0_n38()
- fun_l1_n759
-end
-
-def fun_l0_n39()
- fun_l1_n315
-end
-
-def fun_l0_n40()
- fun_l1_n508
-end
-
-def fun_l0_n41()
- fun_l1_n750
-end
-
-def fun_l0_n42()
- fun_l1_n200
-end
-
-def fun_l0_n43()
- fun_l1_n662
-end
-
-def fun_l0_n44()
- fun_l1_n2
-end
-
-def fun_l0_n45()
- fun_l1_n864
-end
-
-def fun_l0_n46()
- fun_l1_n482
-end
-
-def fun_l0_n47()
- fun_l1_n196
-end
-
-def fun_l0_n48()
- fun_l1_n867
-end
-
-def fun_l0_n49()
- fun_l1_n942
-end
-
-def fun_l0_n50()
- fun_l1_n179
-end
-
-def fun_l0_n51()
- fun_l1_n442
-end
-
-def fun_l0_n52()
- fun_l1_n613
-end
-
-def fun_l0_n53()
- fun_l1_n282
-end
-
-def fun_l0_n54()
- fun_l1_n624
-end
-
-def fun_l0_n55()
- fun_l1_n514
-end
-
-def fun_l0_n56()
- fun_l1_n59
-end
-
-def fun_l0_n57()
- fun_l1_n401
-end
-
-def fun_l0_n58()
- fun_l1_n693
-end
-
-def fun_l0_n59()
- fun_l1_n643
-end
-
-def fun_l0_n60()
- fun_l1_n104
-end
-
-def fun_l0_n61()
- fun_l1_n407
-end
-
-def fun_l0_n62()
- fun_l1_n418
-end
-
-def fun_l0_n63()
- fun_l1_n775
-end
-
-def fun_l0_n64()
- fun_l1_n351
-end
-
-def fun_l0_n65()
- fun_l1_n320
-end
-
-def fun_l0_n66()
- fun_l1_n181
-end
-
-def fun_l0_n67()
- fun_l1_n878
-end
-
-def fun_l0_n68()
- fun_l1_n404
-end
-
-def fun_l0_n69()
- fun_l1_n660
-end
-
-def fun_l0_n70()
- fun_l1_n644
-end
-
-def fun_l0_n71()
- fun_l1_n416
-end
-
-def fun_l0_n72()
- fun_l1_n372
-end
-
-def fun_l0_n73()
- fun_l1_n525
-end
-
-def fun_l0_n74()
- fun_l1_n468
-end
-
-def fun_l0_n75()
- fun_l1_n652
-end
-
-def fun_l0_n76()
- fun_l1_n418
-end
-
-def fun_l0_n77()
- fun_l1_n935
-end
-
-def fun_l0_n78()
- fun_l1_n170
-end
-
-def fun_l0_n79()
- fun_l1_n805
-end
-
-def fun_l0_n80()
- fun_l1_n405
-end
-
-def fun_l0_n81()
- fun_l1_n994
-end
-
-def fun_l0_n82()
- fun_l1_n395
-end
-
-def fun_l0_n83()
- fun_l1_n399
-end
-
-def fun_l0_n84()
- fun_l1_n503
-end
-
-def fun_l0_n85()
- fun_l1_n451
-end
-
-def fun_l0_n86()
- fun_l1_n920
-end
-
-def fun_l0_n87()
- fun_l1_n446
-end
-
-def fun_l0_n88()
- fun_l1_n637
-end
-
-def fun_l0_n89()
- fun_l1_n732
-end
-
-def fun_l0_n90()
- fun_l1_n823
-end
-
-def fun_l0_n91()
- fun_l1_n347
-end
-
-def fun_l0_n92()
- fun_l1_n808
-end
-
-def fun_l0_n93()
- fun_l1_n941
-end
-
-def fun_l0_n94()
- fun_l1_n808
-end
-
-def fun_l0_n95()
- fun_l1_n575
-end
-
-def fun_l0_n96()
- fun_l1_n835
-end
-
-def fun_l0_n97()
- fun_l1_n601
-end
-
-def fun_l0_n98()
- fun_l1_n522
-end
-
-def fun_l0_n99()
- fun_l1_n884
-end
-
-def fun_l0_n100()
- fun_l1_n234
-end
-
-def fun_l0_n101()
- fun_l1_n58
-end
-
-def fun_l0_n102()
- fun_l1_n702
-end
-
-def fun_l0_n103()
- fun_l1_n816
-end
-
-def fun_l0_n104()
- fun_l1_n92
-end
-
-def fun_l0_n105()
- fun_l1_n673
-end
-
-def fun_l0_n106()
- fun_l1_n360
-end
-
-def fun_l0_n107()
- fun_l1_n305
-end
-
-def fun_l0_n108()
- fun_l1_n202
-end
-
-def fun_l0_n109()
- fun_l1_n879
-end
-
-def fun_l0_n110()
- fun_l1_n84
-end
-
-def fun_l0_n111()
- fun_l1_n50
-end
-
-def fun_l0_n112()
- fun_l1_n648
-end
-
-def fun_l0_n113()
- fun_l1_n786
-end
-
-def fun_l0_n114()
- fun_l1_n627
-end
-
-def fun_l0_n115()
- fun_l1_n404
-end
-
-def fun_l0_n116()
- fun_l1_n496
-end
-
-def fun_l0_n117()
- fun_l1_n778
-end
-
-def fun_l0_n118()
- fun_l1_n119
-end
-
-def fun_l0_n119()
- fun_l1_n350
-end
-
-def fun_l0_n120()
- fun_l1_n767
-end
-
-def fun_l0_n121()
- fun_l1_n463
-end
-
-def fun_l0_n122()
- fun_l1_n481
-end
-
-def fun_l0_n123()
- fun_l1_n80
-end
-
-def fun_l0_n124()
- fun_l1_n271
-end
-
-def fun_l0_n125()
- fun_l1_n315
-end
-
-def fun_l0_n126()
- fun_l1_n545
-end
-
-def fun_l0_n127()
- fun_l1_n598
-end
-
-def fun_l0_n128()
- fun_l1_n599
-end
-
-def fun_l0_n129()
- fun_l1_n263
-end
-
-def fun_l0_n130()
- fun_l1_n514
-end
-
-def fun_l0_n131()
- fun_l1_n779
-end
-
-def fun_l0_n132()
- fun_l1_n585
-end
-
-def fun_l0_n133()
- fun_l1_n919
-end
-
-def fun_l0_n134()
- fun_l1_n665
-end
-
-def fun_l0_n135()
- fun_l1_n442
-end
-
-def fun_l0_n136()
- fun_l1_n84
-end
-
-def fun_l0_n137()
- fun_l1_n74
-end
-
-def fun_l0_n138()
- fun_l1_n606
-end
-
-def fun_l0_n139()
- fun_l1_n655
-end
-
-def fun_l0_n140()
- fun_l1_n130
-end
-
-def fun_l0_n141()
- fun_l1_n626
-end
-
-def fun_l0_n142()
- fun_l1_n605
-end
-
-def fun_l0_n143()
- fun_l1_n420
-end
-
-def fun_l0_n144()
- fun_l1_n100
-end
-
-def fun_l0_n145()
- fun_l1_n961
-end
-
-def fun_l0_n146()
- fun_l1_n721
-end
-
-def fun_l0_n147()
- fun_l1_n453
-end
-
-def fun_l0_n148()
- fun_l1_n737
-end
-
-def fun_l0_n149()
- fun_l1_n230
-end
-
-def fun_l0_n150()
- fun_l1_n881
-end
-
-def fun_l0_n151()
- fun_l1_n471
-end
-
-def fun_l0_n152()
- fun_l1_n72
-end
-
-def fun_l0_n153()
- fun_l1_n221
-end
-
-def fun_l0_n154()
- fun_l1_n504
-end
-
-def fun_l0_n155()
- fun_l1_n222
-end
-
-def fun_l0_n156()
- fun_l1_n348
-end
-
-def fun_l0_n157()
- fun_l1_n738
-end
-
-def fun_l0_n158()
- fun_l1_n588
-end
-
-def fun_l0_n159()
- fun_l1_n64
-end
-
-def fun_l0_n160()
- fun_l1_n829
-end
-
-def fun_l0_n161()
- fun_l1_n265
-end
-
-def fun_l0_n162()
- fun_l1_n471
-end
-
-def fun_l0_n163()
- fun_l1_n304
-end
-
-def fun_l0_n164()
- fun_l1_n518
-end
-
-def fun_l0_n165()
- fun_l1_n89
-end
-
-def fun_l0_n166()
- fun_l1_n728
-end
-
-def fun_l0_n167()
- fun_l1_n292
-end
-
-def fun_l0_n168()
- fun_l1_n142
-end
-
-def fun_l0_n169()
- fun_l1_n374
-end
-
-def fun_l0_n170()
- fun_l1_n371
-end
-
-def fun_l0_n171()
- fun_l1_n904
-end
-
-def fun_l0_n172()
- fun_l1_n519
-end
-
-def fun_l0_n173()
- fun_l1_n239
-end
-
-def fun_l0_n174()
- fun_l1_n664
-end
-
-def fun_l0_n175()
- fun_l1_n701
-end
-
-def fun_l0_n176()
- fun_l1_n586
-end
-
-def fun_l0_n177()
- fun_l1_n78
-end
-
-def fun_l0_n178()
- fun_l1_n663
-end
-
-def fun_l0_n179()
- fun_l1_n46
-end
-
-def fun_l0_n180()
- fun_l1_n273
-end
-
-def fun_l0_n181()
- fun_l1_n250
-end
-
-def fun_l0_n182()
- fun_l1_n362
-end
-
-def fun_l0_n183()
- fun_l1_n69
-end
-
-def fun_l0_n184()
- fun_l1_n874
-end
-
-def fun_l0_n185()
- fun_l1_n135
-end
-
-def fun_l0_n186()
- fun_l1_n634
-end
-
-def fun_l0_n187()
- fun_l1_n885
-end
-
-def fun_l0_n188()
- fun_l1_n589
-end
-
-def fun_l0_n189()
- fun_l1_n21
-end
-
-def fun_l0_n190()
- fun_l1_n962
-end
-
-def fun_l0_n191()
- fun_l1_n267
-end
-
-def fun_l0_n192()
- fun_l1_n569
-end
-
-def fun_l0_n193()
- fun_l1_n921
-end
-
-def fun_l0_n194()
- fun_l1_n535
-end
-
-def fun_l0_n195()
- fun_l1_n362
-end
-
-def fun_l0_n196()
- fun_l1_n862
-end
-
-def fun_l0_n197()
- fun_l1_n565
-end
-
-def fun_l0_n198()
- fun_l1_n779
-end
-
-def fun_l0_n199()
- fun_l1_n848
-end
-
-def fun_l0_n200()
- fun_l1_n755
-end
-
-def fun_l0_n201()
- fun_l1_n493
-end
-
-def fun_l0_n202()
- fun_l1_n574
-end
-
-def fun_l0_n203()
- fun_l1_n172
-end
-
-def fun_l0_n204()
- fun_l1_n388
-end
-
-def fun_l0_n205()
- fun_l1_n67
-end
-
-def fun_l0_n206()
- fun_l1_n449
-end
-
-def fun_l0_n207()
- fun_l1_n883
-end
-
-def fun_l0_n208()
- fun_l1_n749
-end
-
-def fun_l0_n209()
- fun_l1_n425
-end
-
-def fun_l0_n210()
- fun_l1_n848
-end
-
-def fun_l0_n211()
- fun_l1_n320
-end
-
-def fun_l0_n212()
- fun_l1_n122
-end
-
-def fun_l0_n213()
- fun_l1_n878
-end
-
-def fun_l0_n214()
- fun_l1_n763
-end
-
-def fun_l0_n215()
- fun_l1_n70
-end
-
-def fun_l0_n216()
- fun_l1_n494
-end
-
-def fun_l0_n217()
- fun_l1_n13
-end
-
-def fun_l0_n218()
- fun_l1_n907
-end
-
-def fun_l0_n219()
- fun_l1_n775
-end
-
-def fun_l0_n220()
- fun_l1_n633
-end
-
-def fun_l0_n221()
- fun_l1_n371
-end
-
-def fun_l0_n222()
- fun_l1_n691
-end
-
-def fun_l0_n223()
- fun_l1_n994
-end
-
-def fun_l0_n224()
- fun_l1_n268
-end
-
-def fun_l0_n225()
- fun_l1_n52
-end
-
-def fun_l0_n226()
- fun_l1_n291
-end
-
-def fun_l0_n227()
- fun_l1_n903
-end
-
-def fun_l0_n228()
- fun_l1_n369
-end
-
-def fun_l0_n229()
- fun_l1_n232
-end
-
-def fun_l0_n230()
- fun_l1_n554
-end
-
-def fun_l0_n231()
- fun_l1_n479
-end
-
-def fun_l0_n232()
- fun_l1_n838
-end
-
-def fun_l0_n233()
- fun_l1_n316
-end
-
-def fun_l0_n234()
- fun_l1_n685
-end
-
-def fun_l0_n235()
- fun_l1_n95
-end
-
-def fun_l0_n236()
- fun_l1_n629
-end
-
-def fun_l0_n237()
- fun_l1_n218
-end
-
-def fun_l0_n238()
- fun_l1_n406
-end
-
-def fun_l0_n239()
- fun_l1_n187
-end
-
-def fun_l0_n240()
- fun_l1_n905
-end
-
-def fun_l0_n241()
- fun_l1_n262
-end
-
-def fun_l0_n242()
- fun_l1_n314
-end
-
-def fun_l0_n243()
- fun_l1_n669
-end
-
-def fun_l0_n244()
- fun_l1_n112
-end
-
-def fun_l0_n245()
- fun_l1_n744
-end
-
-def fun_l0_n246()
- fun_l1_n637
-end
-
-def fun_l0_n247()
- fun_l1_n409
-end
-
-def fun_l0_n248()
- fun_l1_n706
-end
-
-def fun_l0_n249()
- fun_l1_n150
-end
-
-def fun_l0_n250()
- fun_l1_n863
-end
-
-def fun_l0_n251()
- fun_l1_n364
-end
-
-def fun_l0_n252()
- fun_l1_n989
-end
-
-def fun_l0_n253()
- fun_l1_n565
-end
-
-def fun_l0_n254()
- fun_l1_n701
-end
-
-def fun_l0_n255()
- fun_l1_n48
-end
-
-def fun_l0_n256()
- fun_l1_n278
-end
-
-def fun_l0_n257()
- fun_l1_n816
-end
-
-def fun_l0_n258()
- fun_l1_n981
-end
-
-def fun_l0_n259()
- fun_l1_n556
-end
-
-def fun_l0_n260()
- fun_l1_n887
-end
-
-def fun_l0_n261()
- fun_l1_n193
-end
-
-def fun_l0_n262()
- fun_l1_n690
-end
-
-def fun_l0_n263()
- fun_l1_n144
-end
-
-def fun_l0_n264()
- fun_l1_n577
-end
-
-def fun_l0_n265()
- fun_l1_n949
-end
-
-def fun_l0_n266()
- fun_l1_n320
-end
-
-def fun_l0_n267()
- fun_l1_n857
-end
-
-def fun_l0_n268()
- fun_l1_n676
-end
-
-def fun_l0_n269()
- fun_l1_n683
-end
-
-def fun_l0_n270()
- fun_l1_n303
-end
-
-def fun_l0_n271()
- fun_l1_n847
-end
-
-def fun_l0_n272()
- fun_l1_n588
-end
-
-def fun_l0_n273()
- fun_l1_n456
-end
-
-def fun_l0_n274()
- fun_l1_n355
-end
-
-def fun_l0_n275()
- fun_l1_n183
-end
-
-def fun_l0_n276()
- fun_l1_n271
-end
-
-def fun_l0_n277()
- fun_l1_n746
-end
-
-def fun_l0_n278()
- fun_l1_n885
-end
-
-def fun_l0_n279()
- fun_l1_n951
-end
-
-def fun_l0_n280()
- fun_l1_n935
-end
-
-def fun_l0_n281()
- fun_l1_n445
-end
-
-def fun_l0_n282()
- fun_l1_n2
-end
-
-def fun_l0_n283()
- fun_l1_n52
-end
-
-def fun_l0_n284()
- fun_l1_n208
-end
-
-def fun_l0_n285()
- fun_l1_n27
-end
-
-def fun_l0_n286()
- fun_l1_n657
-end
-
-def fun_l0_n287()
- fun_l1_n373
-end
-
-def fun_l0_n288()
- fun_l1_n439
-end
-
-def fun_l0_n289()
- fun_l1_n974
-end
-
-def fun_l0_n290()
- fun_l1_n834
-end
-
-def fun_l0_n291()
- fun_l1_n673
-end
-
-def fun_l0_n292()
- fun_l1_n978
-end
-
-def fun_l0_n293()
- fun_l1_n123
-end
-
-def fun_l0_n294()
- fun_l1_n644
-end
-
-def fun_l0_n295()
- fun_l1_n715
-end
-
-def fun_l0_n296()
- fun_l1_n912
-end
-
-def fun_l0_n297()
- fun_l1_n954
-end
-
-def fun_l0_n298()
- fun_l1_n519
-end
-
-def fun_l0_n299()
- fun_l1_n726
-end
-
-def fun_l0_n300()
- fun_l1_n417
-end
-
-def fun_l0_n301()
- fun_l1_n199
-end
-
-def fun_l0_n302()
- fun_l1_n157
-end
-
-def fun_l0_n303()
- fun_l1_n432
-end
-
-def fun_l0_n304()
- fun_l1_n59
-end
-
-def fun_l0_n305()
- fun_l1_n604
-end
-
-def fun_l0_n306()
- fun_l1_n301
-end
-
-def fun_l0_n307()
- fun_l1_n558
-end
-
-def fun_l0_n308()
- fun_l1_n443
-end
-
-def fun_l0_n309()
- fun_l1_n873
-end
-
-def fun_l0_n310()
- fun_l1_n415
-end
-
-def fun_l0_n311()
- fun_l1_n907
-end
-
-def fun_l0_n312()
- fun_l1_n159
-end
-
-def fun_l0_n313()
- fun_l1_n695
-end
-
-def fun_l0_n314()
- fun_l1_n679
-end
-
-def fun_l0_n315()
- fun_l1_n788
-end
-
-def fun_l0_n316()
- fun_l1_n510
-end
-
-def fun_l0_n317()
- fun_l1_n997
-end
-
-def fun_l0_n318()
- fun_l1_n821
-end
-
-def fun_l0_n319()
- fun_l1_n554
-end
-
-def fun_l0_n320()
- fun_l1_n982
-end
-
-def fun_l0_n321()
- fun_l1_n996
-end
-
-def fun_l0_n322()
- fun_l1_n73
-end
-
-def fun_l0_n323()
- fun_l1_n951
-end
-
-def fun_l0_n324()
- fun_l1_n597
-end
-
-def fun_l0_n325()
- fun_l1_n502
-end
-
-def fun_l0_n326()
- fun_l1_n150
-end
-
-def fun_l0_n327()
- fun_l1_n979
-end
-
-def fun_l0_n328()
- fun_l1_n81
-end
-
-def fun_l0_n329()
- fun_l1_n87
-end
-
-def fun_l0_n330()
- fun_l1_n726
-end
-
-def fun_l0_n331()
- fun_l1_n159
-end
-
-def fun_l0_n332()
- fun_l1_n799
-end
-
-def fun_l0_n333()
- fun_l1_n202
-end
-
-def fun_l0_n334()
- fun_l1_n904
-end
-
-def fun_l0_n335()
- fun_l1_n14
-end
-
-def fun_l0_n336()
- fun_l1_n136
-end
-
-def fun_l0_n337()
- fun_l1_n865
-end
-
-def fun_l0_n338()
- fun_l1_n307
-end
-
-def fun_l0_n339()
- fun_l1_n827
-end
-
-def fun_l0_n340()
- fun_l1_n518
-end
-
-def fun_l0_n341()
- fun_l1_n416
-end
-
-def fun_l0_n342()
- fun_l1_n277
-end
-
-def fun_l0_n343()
- fun_l1_n609
-end
-
-def fun_l0_n344()
- fun_l1_n328
-end
-
-def fun_l0_n345()
- fun_l1_n941
-end
-
-def fun_l0_n346()
- fun_l1_n707
-end
-
-def fun_l0_n347()
- fun_l1_n452
-end
-
-def fun_l0_n348()
- fun_l1_n874
-end
-
-def fun_l0_n349()
- fun_l1_n117
-end
-
-def fun_l0_n350()
- fun_l1_n739
-end
-
-def fun_l0_n351()
- fun_l1_n202
-end
-
-def fun_l0_n352()
- fun_l1_n80
-end
-
-def fun_l0_n353()
- fun_l1_n373
-end
-
-def fun_l0_n354()
- fun_l1_n747
-end
-
-def fun_l0_n355()
- fun_l1_n949
-end
-
-def fun_l0_n356()
- fun_l1_n901
-end
-
-def fun_l0_n357()
- fun_l1_n512
-end
-
-def fun_l0_n358()
- fun_l1_n528
-end
-
-def fun_l0_n359()
- fun_l1_n895
-end
-
-def fun_l0_n360()
- fun_l1_n683
-end
-
-def fun_l0_n361()
- fun_l1_n80
-end
-
-def fun_l0_n362()
- fun_l1_n718
-end
-
-def fun_l0_n363()
- fun_l1_n388
-end
-
-def fun_l0_n364()
- fun_l1_n701
-end
-
-def fun_l0_n365()
- fun_l1_n146
-end
-
-def fun_l0_n366()
- fun_l1_n143
-end
-
-def fun_l0_n367()
- fun_l1_n872
-end
-
-def fun_l0_n368()
- fun_l1_n818
-end
-
-def fun_l0_n369()
- fun_l1_n821
-end
-
-def fun_l0_n370()
- fun_l1_n180
-end
-
-def fun_l0_n371()
- fun_l1_n346
-end
-
-def fun_l0_n372()
- fun_l1_n524
-end
-
-def fun_l0_n373()
- fun_l1_n451
-end
-
-def fun_l0_n374()
- fun_l1_n592
-end
-
-def fun_l0_n375()
- fun_l1_n215
-end
-
-def fun_l0_n376()
- fun_l1_n737
-end
-
-def fun_l0_n377()
- fun_l1_n631
-end
-
-def fun_l0_n378()
- fun_l1_n385
-end
-
-def fun_l0_n379()
- fun_l1_n593
-end
-
-def fun_l0_n380()
- fun_l1_n484
-end
-
-def fun_l0_n381()
- fun_l1_n979
-end
-
-def fun_l0_n382()
- fun_l1_n491
-end
-
-def fun_l0_n383()
- fun_l1_n632
-end
-
-def fun_l0_n384()
- fun_l1_n939
-end
-
-def fun_l0_n385()
- fun_l1_n932
-end
-
-def fun_l0_n386()
- fun_l1_n816
-end
-
-def fun_l0_n387()
- fun_l1_n308
-end
-
-def fun_l0_n388()
- fun_l1_n525
-end
-
-def fun_l0_n389()
- fun_l1_n160
-end
-
-def fun_l0_n390()
- fun_l1_n313
-end
-
-def fun_l0_n391()
- fun_l1_n816
-end
-
-def fun_l0_n392()
- fun_l1_n641
-end
-
-def fun_l0_n393()
- fun_l1_n319
-end
-
-def fun_l0_n394()
- fun_l1_n559
-end
-
-def fun_l0_n395()
- fun_l1_n520
-end
-
-def fun_l0_n396()
- fun_l1_n277
-end
-
-def fun_l0_n397()
- fun_l1_n410
-end
-
-def fun_l0_n398()
- fun_l1_n956
-end
-
-def fun_l0_n399()
- fun_l1_n101
-end
-
-def fun_l0_n400()
- fun_l1_n33
-end
-
-def fun_l0_n401()
- fun_l1_n554
-end
-
-def fun_l0_n402()
- fun_l1_n821
-end
-
-def fun_l0_n403()
- fun_l1_n230
-end
-
-def fun_l0_n404()
- fun_l1_n185
-end
-
-def fun_l0_n405()
- fun_l1_n430
-end
-
-def fun_l0_n406()
- fun_l1_n94
-end
-
-def fun_l0_n407()
- fun_l1_n776
-end
-
-def fun_l0_n408()
- fun_l1_n981
-end
-
-def fun_l0_n409()
- fun_l1_n414
-end
-
-def fun_l0_n410()
- fun_l1_n421
-end
-
-def fun_l0_n411()
- fun_l1_n343
-end
-
-def fun_l0_n412()
- fun_l1_n484
-end
-
-def fun_l0_n413()
- fun_l1_n818
-end
-
-def fun_l0_n414()
- fun_l1_n860
-end
-
-def fun_l0_n415()
- fun_l1_n70
-end
-
-def fun_l0_n416()
- fun_l1_n643
-end
-
-def fun_l0_n417()
- fun_l1_n382
-end
-
-def fun_l0_n418()
- fun_l1_n174
-end
-
-def fun_l0_n419()
- fun_l1_n500
-end
-
-def fun_l0_n420()
- fun_l1_n904
-end
-
-def fun_l0_n421()
- fun_l1_n971
-end
-
-def fun_l0_n422()
- fun_l1_n438
-end
-
-def fun_l0_n423()
- fun_l1_n524
-end
-
-def fun_l0_n424()
- fun_l1_n537
-end
-
-def fun_l0_n425()
- fun_l1_n564
-end
-
-def fun_l0_n426()
- fun_l1_n378
-end
-
-def fun_l0_n427()
- fun_l1_n603
-end
-
-def fun_l0_n428()
- fun_l1_n442
-end
-
-def fun_l0_n429()
- fun_l1_n687
-end
-
-def fun_l0_n430()
- fun_l1_n682
-end
-
-def fun_l0_n431()
- fun_l1_n664
-end
-
-def fun_l0_n432()
- fun_l1_n319
-end
-
-def fun_l0_n433()
- fun_l1_n671
-end
-
-def fun_l0_n434()
- fun_l1_n211
-end
-
-def fun_l0_n435()
- fun_l1_n65
-end
-
-def fun_l0_n436()
- fun_l1_n2
-end
-
-def fun_l0_n437()
- fun_l1_n36
-end
-
-def fun_l0_n438()
- fun_l1_n270
-end
-
-def fun_l0_n439()
- fun_l1_n793
-end
-
-def fun_l0_n440()
- fun_l1_n312
-end
-
-def fun_l0_n441()
- fun_l1_n134
-end
-
-def fun_l0_n442()
- fun_l1_n246
-end
-
-def fun_l0_n443()
- fun_l1_n498
-end
-
-def fun_l0_n444()
- fun_l1_n606
-end
-
-def fun_l0_n445()
- fun_l1_n986
-end
-
-def fun_l0_n446()
- fun_l1_n659
-end
-
-def fun_l0_n447()
- fun_l1_n823
-end
-
-def fun_l0_n448()
- fun_l1_n635
-end
-
-def fun_l0_n449()
- fun_l1_n388
-end
-
-def fun_l0_n450()
- fun_l1_n474
-end
-
-def fun_l0_n451()
- fun_l1_n742
-end
-
-def fun_l0_n452()
- fun_l1_n605
-end
-
-def fun_l0_n453()
- fun_l1_n0
-end
-
-def fun_l0_n454()
- fun_l1_n691
-end
-
-def fun_l0_n455()
- fun_l1_n791
-end
-
-def fun_l0_n456()
- fun_l1_n363
-end
-
-def fun_l0_n457()
- fun_l1_n370
-end
-
-def fun_l0_n458()
- fun_l1_n168
-end
-
-def fun_l0_n459()
- fun_l1_n626
-end
-
-def fun_l0_n460()
- fun_l1_n139
-end
-
-def fun_l0_n461()
- fun_l1_n708
-end
-
-def fun_l0_n462()
- fun_l1_n77
-end
-
-def fun_l0_n463()
- fun_l1_n27
-end
-
-def fun_l0_n464()
- fun_l1_n706
-end
-
-def fun_l0_n465()
- fun_l1_n29
-end
-
-def fun_l0_n466()
- fun_l1_n470
-end
-
-def fun_l0_n467()
- fun_l1_n606
-end
-
-def fun_l0_n468()
- fun_l1_n458
-end
-
-def fun_l0_n469()
- fun_l1_n465
-end
-
-def fun_l0_n470()
- fun_l1_n23
-end
-
-def fun_l0_n471()
- fun_l1_n364
-end
-
-def fun_l0_n472()
- fun_l1_n606
-end
-
-def fun_l0_n473()
- fun_l1_n109
-end
-
-def fun_l0_n474()
- fun_l1_n904
-end
-
-def fun_l0_n475()
- fun_l1_n923
-end
-
-def fun_l0_n476()
- fun_l1_n19
-end
-
-def fun_l0_n477()
- fun_l1_n871
-end
-
-def fun_l0_n478()
- fun_l1_n422
-end
-
-def fun_l0_n479()
- fun_l1_n72
-end
-
-def fun_l0_n480()
- fun_l1_n528
-end
-
-def fun_l0_n481()
- fun_l1_n181
-end
-
-def fun_l0_n482()
- fun_l1_n33
-end
-
-def fun_l0_n483()
- fun_l1_n951
-end
-
-def fun_l0_n484()
- fun_l1_n747
-end
-
-def fun_l0_n485()
- fun_l1_n200
-end
-
-def fun_l0_n486()
- fun_l1_n474
-end
-
-def fun_l0_n487()
- fun_l1_n126
-end
-
-def fun_l0_n488()
- fun_l1_n757
-end
-
-def fun_l0_n489()
- fun_l1_n101
-end
-
-def fun_l0_n490()
- fun_l1_n925
-end
-
-def fun_l0_n491()
- fun_l1_n791
-end
-
-def fun_l0_n492()
- fun_l1_n404
-end
-
-def fun_l0_n493()
- fun_l1_n841
-end
-
-def fun_l0_n494()
- fun_l1_n774
-end
-
-def fun_l0_n495()
- fun_l1_n230
-end
-
-def fun_l0_n496()
- fun_l1_n796
-end
-
-def fun_l0_n497()
- fun_l1_n270
-end
-
-def fun_l0_n498()
- fun_l1_n795
-end
-
-def fun_l0_n499()
- fun_l1_n628
-end
-
-def fun_l0_n500()
- fun_l1_n865
-end
-
-def fun_l0_n501()
- fun_l1_n105
-end
-
-def fun_l0_n502()
- fun_l1_n538
-end
-
-def fun_l0_n503()
- fun_l1_n769
-end
-
-def fun_l0_n504()
- fun_l1_n714
-end
-
-def fun_l0_n505()
- fun_l1_n889
-end
-
-def fun_l0_n506()
- fun_l1_n191
-end
-
-def fun_l0_n507()
- fun_l1_n966
-end
-
-def fun_l0_n508()
- fun_l1_n196
-end
-
-def fun_l0_n509()
- fun_l1_n878
-end
-
-def fun_l0_n510()
- fun_l1_n487
-end
-
-def fun_l0_n511()
- fun_l1_n242
-end
-
-def fun_l0_n512()
- fun_l1_n740
-end
-
-def fun_l0_n513()
- fun_l1_n938
-end
-
-def fun_l0_n514()
- fun_l1_n485
-end
-
-def fun_l0_n515()
- fun_l1_n380
-end
-
-def fun_l0_n516()
- fun_l1_n936
-end
-
-def fun_l0_n517()
- fun_l1_n237
-end
-
-def fun_l0_n518()
- fun_l1_n79
-end
-
-def fun_l0_n519()
- fun_l1_n501
-end
-
-def fun_l0_n520()
- fun_l1_n966
-end
-
-def fun_l0_n521()
- fun_l1_n741
-end
-
-def fun_l0_n522()
- fun_l1_n170
-end
-
-def fun_l0_n523()
- fun_l1_n183
-end
-
-def fun_l0_n524()
- fun_l1_n556
-end
-
-def fun_l0_n525()
- fun_l1_n865
-end
-
-def fun_l0_n526()
- fun_l1_n884
-end
-
-def fun_l0_n527()
- fun_l1_n725
-end
-
-def fun_l0_n528()
- fun_l1_n205
-end
-
-def fun_l0_n529()
- fun_l1_n72
-end
-
-def fun_l0_n530()
- fun_l1_n432
-end
-
-def fun_l0_n531()
- fun_l1_n90
-end
-
-def fun_l0_n532()
- fun_l1_n189
-end
-
-def fun_l0_n533()
- fun_l1_n395
-end
-
-def fun_l0_n534()
- fun_l1_n201
-end
-
-def fun_l0_n535()
- fun_l1_n534
-end
-
-def fun_l0_n536()
- fun_l1_n748
-end
-
-def fun_l0_n537()
- fun_l1_n439
-end
-
-def fun_l0_n538()
- fun_l1_n495
-end
-
-def fun_l0_n539()
- fun_l1_n904
-end
-
-def fun_l0_n540()
- fun_l1_n525
-end
-
-def fun_l0_n541()
- fun_l1_n924
-end
-
-def fun_l0_n542()
- fun_l1_n549
-end
-
-def fun_l0_n543()
- fun_l1_n2
-end
-
-def fun_l0_n544()
- fun_l1_n257
-end
-
-def fun_l0_n545()
- fun_l1_n921
-end
-
-def fun_l0_n546()
- fun_l1_n82
-end
-
-def fun_l0_n547()
- fun_l1_n384
-end
-
-def fun_l0_n548()
- fun_l1_n219
-end
-
-def fun_l0_n549()
- fun_l1_n379
-end
-
-def fun_l0_n550()
- fun_l1_n488
-end
-
-def fun_l0_n551()
- fun_l1_n4
-end
-
-def fun_l0_n552()
- fun_l1_n150
-end
-
-def fun_l0_n553()
- fun_l1_n168
-end
-
-def fun_l0_n554()
- fun_l1_n773
-end
-
-def fun_l0_n555()
- fun_l1_n444
-end
-
-def fun_l0_n556()
- fun_l1_n201
-end
-
-def fun_l0_n557()
- fun_l1_n333
-end
-
-def fun_l0_n558()
- fun_l1_n556
-end
-
-def fun_l0_n559()
- fun_l1_n394
-end
-
-def fun_l0_n560()
- fun_l1_n540
-end
-
-def fun_l0_n561()
- fun_l1_n640
-end
-
-def fun_l0_n562()
- fun_l1_n321
-end
-
-def fun_l0_n563()
- fun_l1_n286
-end
-
-def fun_l0_n564()
- fun_l1_n320
-end
-
-def fun_l0_n565()
- fun_l1_n2
-end
-
-def fun_l0_n566()
- fun_l1_n50
-end
-
-def fun_l0_n567()
- fun_l1_n269
-end
-
-def fun_l0_n568()
- fun_l1_n412
-end
-
-def fun_l0_n569()
- fun_l1_n984
-end
-
-def fun_l0_n570()
- fun_l1_n307
-end
-
-def fun_l0_n571()
- fun_l1_n954
-end
-
-def fun_l0_n572()
- fun_l1_n728
-end
-
-def fun_l0_n573()
- fun_l1_n227
-end
-
-def fun_l0_n574()
- fun_l1_n917
-end
-
-def fun_l0_n575()
- fun_l1_n974
-end
-
-def fun_l0_n576()
- fun_l1_n995
-end
-
-def fun_l0_n577()
- fun_l1_n593
-end
-
-def fun_l0_n578()
- fun_l1_n704
-end
-
-def fun_l0_n579()
- fun_l1_n142
-end
-
-def fun_l0_n580()
- fun_l1_n585
-end
-
-def fun_l0_n581()
- fun_l1_n634
-end
-
-def fun_l0_n582()
- fun_l1_n888
-end
-
-def fun_l0_n583()
- fun_l1_n873
-end
-
-def fun_l0_n584()
- fun_l1_n674
-end
-
-def fun_l0_n585()
- fun_l1_n657
-end
-
-def fun_l0_n586()
- fun_l1_n248
-end
-
-def fun_l0_n587()
- fun_l1_n478
-end
-
-def fun_l0_n588()
- fun_l1_n263
-end
-
-def fun_l0_n589()
- fun_l1_n908
-end
-
-def fun_l0_n590()
- fun_l1_n741
-end
-
-def fun_l0_n591()
- fun_l1_n299
-end
-
-def fun_l0_n592()
- fun_l1_n763
-end
-
-def fun_l0_n593()
- fun_l1_n746
-end
-
-def fun_l0_n594()
- fun_l1_n367
-end
-
-def fun_l0_n595()
- fun_l1_n394
-end
-
-def fun_l0_n596()
- fun_l1_n304
-end
-
-def fun_l0_n597()
- fun_l1_n939
-end
-
-def fun_l0_n598()
- fun_l1_n392
-end
-
-def fun_l0_n599()
- fun_l1_n758
-end
-
-def fun_l0_n600()
- fun_l1_n133
-end
-
-def fun_l0_n601()
- fun_l1_n212
-end
-
-def fun_l0_n602()
- fun_l1_n719
-end
-
-def fun_l0_n603()
- fun_l1_n952
-end
-
-def fun_l0_n604()
- fun_l1_n818
-end
-
-def fun_l0_n605()
- fun_l1_n216
-end
-
-def fun_l0_n606()
- fun_l1_n438
-end
-
-def fun_l0_n607()
- fun_l1_n315
-end
-
-def fun_l0_n608()
- fun_l1_n450
-end
-
-def fun_l0_n609()
- fun_l1_n420
-end
-
-def fun_l0_n610()
- fun_l1_n917
-end
-
-def fun_l0_n611()
- fun_l1_n921
-end
-
-def fun_l0_n612()
- fun_l1_n596
-end
-
-def fun_l0_n613()
- fun_l1_n253
-end
-
-def fun_l0_n614()
- fun_l1_n395
-end
-
-def fun_l0_n615()
- fun_l1_n120
-end
-
-def fun_l0_n616()
- fun_l1_n742
-end
-
-def fun_l0_n617()
- fun_l1_n489
-end
-
-def fun_l0_n618()
- fun_l1_n338
-end
-
-def fun_l0_n619()
- fun_l1_n351
-end
-
-def fun_l0_n620()
- fun_l1_n384
-end
-
-def fun_l0_n621()
- fun_l1_n581
-end
-
-def fun_l0_n622()
- fun_l1_n667
-end
-
-def fun_l0_n623()
- fun_l1_n956
-end
-
-def fun_l0_n624()
- fun_l1_n156
-end
-
-def fun_l0_n625()
- fun_l1_n909
-end
-
-def fun_l0_n626()
- fun_l1_n548
-end
-
-def fun_l0_n627()
- fun_l1_n293
-end
-
-def fun_l0_n628()
- fun_l1_n997
-end
-
-def fun_l0_n629()
- fun_l1_n950
-end
-
-def fun_l0_n630()
- fun_l1_n761
-end
-
-def fun_l0_n631()
- fun_l1_n72
-end
-
-def fun_l0_n632()
- fun_l1_n213
-end
-
-def fun_l0_n633()
- fun_l1_n746
-end
-
-def fun_l0_n634()
- fun_l1_n327
-end
-
-def fun_l0_n635()
- fun_l1_n166
-end
-
-def fun_l0_n636()
- fun_l1_n749
-end
-
-def fun_l0_n637()
- fun_l1_n196
-end
-
-def fun_l0_n638()
- fun_l1_n786
-end
-
-def fun_l0_n639()
- fun_l1_n613
-end
-
-def fun_l0_n640()
- fun_l1_n903
-end
-
-def fun_l0_n641()
- fun_l1_n836
-end
-
-def fun_l0_n642()
- fun_l1_n687
-end
-
-def fun_l0_n643()
- fun_l1_n533
-end
-
-def fun_l0_n644()
- fun_l1_n544
-end
-
-def fun_l0_n645()
- fun_l1_n637
-end
-
-def fun_l0_n646()
- fun_l1_n859
-end
-
-def fun_l0_n647()
- fun_l1_n917
-end
-
-def fun_l0_n648()
- fun_l1_n119
-end
-
-def fun_l0_n649()
- fun_l1_n327
-end
-
-def fun_l0_n650()
- fun_l1_n759
-end
-
-def fun_l0_n651()
- fun_l1_n169
-end
-
-def fun_l0_n652()
- fun_l1_n497
-end
-
-def fun_l0_n653()
- fun_l1_n441
-end
-
-def fun_l0_n654()
- fun_l1_n151
-end
-
-def fun_l0_n655()
- fun_l1_n553
-end
-
-def fun_l0_n656()
- fun_l1_n441
-end
-
-def fun_l0_n657()
- fun_l1_n390
-end
-
-def fun_l0_n658()
- fun_l1_n615
-end
-
-def fun_l0_n659()
- fun_l1_n578
-end
-
-def fun_l0_n660()
- fun_l1_n873
-end
-
-def fun_l0_n661()
- fun_l1_n608
-end
-
-def fun_l0_n662()
- fun_l1_n446
-end
-
-def fun_l0_n663()
- fun_l1_n647
-end
-
-def fun_l0_n664()
- fun_l1_n601
-end
-
-def fun_l0_n665()
- fun_l1_n945
-end
-
-def fun_l0_n666()
- fun_l1_n172
-end
-
-def fun_l0_n667()
- fun_l1_n547
-end
-
-def fun_l0_n668()
- fun_l1_n977
-end
-
-def fun_l0_n669()
- fun_l1_n419
-end
-
-def fun_l0_n670()
- fun_l1_n626
-end
-
-def fun_l0_n671()
- fun_l1_n345
-end
-
-def fun_l0_n672()
- fun_l1_n899
-end
-
-def fun_l0_n673()
- fun_l1_n442
-end
-
-def fun_l0_n674()
- fun_l1_n296
-end
-
-def fun_l0_n675()
- fun_l1_n303
-end
-
-def fun_l0_n676()
- fun_l1_n679
-end
-
-def fun_l0_n677()
- fun_l1_n655
-end
-
-def fun_l0_n678()
- fun_l1_n998
-end
-
-def fun_l0_n679()
- fun_l1_n157
-end
-
-def fun_l0_n680()
- fun_l1_n705
-end
-
-def fun_l0_n681()
- fun_l1_n832
-end
-
-def fun_l0_n682()
- fun_l1_n113
-end
-
-def fun_l0_n683()
- fun_l1_n550
-end
-
-def fun_l0_n684()
- fun_l1_n21
-end
-
-def fun_l0_n685()
- fun_l1_n21
-end
-
-def fun_l0_n686()
- fun_l1_n195
-end
-
-def fun_l0_n687()
- fun_l1_n269
-end
-
-def fun_l0_n688()
- fun_l1_n12
-end
-
-def fun_l0_n689()
- fun_l1_n49
-end
-
-def fun_l0_n690()
- fun_l1_n836
-end
-
-def fun_l0_n691()
- fun_l1_n808
-end
-
-def fun_l0_n692()
- fun_l1_n938
-end
-
-def fun_l0_n693()
- fun_l1_n531
-end
-
-def fun_l0_n694()
- fun_l1_n296
-end
-
-def fun_l0_n695()
- fun_l1_n32
-end
-
-def fun_l0_n696()
- fun_l1_n641
-end
-
-def fun_l0_n697()
- fun_l1_n549
-end
-
-def fun_l0_n698()
- fun_l1_n437
-end
-
-def fun_l0_n699()
- fun_l1_n133
-end
-
-def fun_l0_n700()
- fun_l1_n734
-end
-
-def fun_l0_n701()
- fun_l1_n340
-end
-
-def fun_l0_n702()
- fun_l1_n768
-end
-
-def fun_l0_n703()
- fun_l1_n97
-end
-
-def fun_l0_n704()
- fun_l1_n52
-end
-
-def fun_l0_n705()
- fun_l1_n121
-end
-
-def fun_l0_n706()
- fun_l1_n471
-end
-
-def fun_l0_n707()
- fun_l1_n94
-end
-
-def fun_l0_n708()
- fun_l1_n946
-end
-
-def fun_l0_n709()
- fun_l1_n151
-end
-
-def fun_l0_n710()
- fun_l1_n946
-end
-
-def fun_l0_n711()
- fun_l1_n191
-end
-
-def fun_l0_n712()
- fun_l1_n552
-end
-
-def fun_l0_n713()
- fun_l1_n733
-end
-
-def fun_l0_n714()
- fun_l1_n895
-end
-
-def fun_l0_n715()
- fun_l1_n850
-end
-
-def fun_l0_n716()
- fun_l1_n113
-end
-
-def fun_l0_n717()
- fun_l1_n69
-end
-
-def fun_l0_n718()
- fun_l1_n862
-end
-
-def fun_l0_n719()
- fun_l1_n635
-end
-
-def fun_l0_n720()
- fun_l1_n714
-end
-
-def fun_l0_n721()
- fun_l1_n179
-end
-
-def fun_l0_n722()
- fun_l1_n17
-end
-
-def fun_l0_n723()
- fun_l1_n299
-end
-
-def fun_l0_n724()
- fun_l1_n141
-end
-
-def fun_l0_n725()
- fun_l1_n338
-end
-
-def fun_l0_n726()
- fun_l1_n650
-end
-
-def fun_l0_n727()
- fun_l1_n784
-end
-
-def fun_l0_n728()
- fun_l1_n333
-end
-
-def fun_l0_n729()
- fun_l1_n10
-end
-
-def fun_l0_n730()
- fun_l1_n271
-end
-
-def fun_l0_n731()
- fun_l1_n882
-end
-
-def fun_l0_n732()
- fun_l1_n512
-end
-
-def fun_l0_n733()
- fun_l1_n932
-end
-
-def fun_l0_n734()
- fun_l1_n68
-end
-
-def fun_l0_n735()
- fun_l1_n111
-end
-
-def fun_l0_n736()
- fun_l1_n649
-end
-
-def fun_l0_n737()
- fun_l1_n512
-end
-
-def fun_l0_n738()
- fun_l1_n551
-end
-
-def fun_l0_n739()
- fun_l1_n153
-end
-
-def fun_l0_n740()
- fun_l1_n582
-end
-
-def fun_l0_n741()
- fun_l1_n366
-end
-
-def fun_l0_n742()
- fun_l1_n135
-end
-
-def fun_l0_n743()
- fun_l1_n136
-end
-
-def fun_l0_n744()
- fun_l1_n782
-end
-
-def fun_l0_n745()
- fun_l1_n258
-end
-
-def fun_l0_n746()
- fun_l1_n44
-end
-
-def fun_l0_n747()
- fun_l1_n379
-end
-
-def fun_l0_n748()
- fun_l1_n14
-end
-
-def fun_l0_n749()
- fun_l1_n563
-end
-
-def fun_l0_n750()
- fun_l1_n361
-end
-
-def fun_l0_n751()
- fun_l1_n624
-end
-
-def fun_l0_n752()
- fun_l1_n516
-end
-
-def fun_l0_n753()
- fun_l1_n944
-end
-
-def fun_l0_n754()
- fun_l1_n783
-end
-
-def fun_l0_n755()
- fun_l1_n744
-end
-
-def fun_l0_n756()
- fun_l1_n500
-end
-
-def fun_l0_n757()
- fun_l1_n809
-end
-
-def fun_l0_n758()
- fun_l1_n757
-end
-
-def fun_l0_n759()
- fun_l1_n995
-end
-
-def fun_l0_n760()
- fun_l1_n114
-end
-
-def fun_l0_n761()
- fun_l1_n802
-end
-
-def fun_l0_n762()
- fun_l1_n114
-end
-
-def fun_l0_n763()
- fun_l1_n683
-end
-
-def fun_l0_n764()
- fun_l1_n775
-end
-
-def fun_l0_n765()
- fun_l1_n967
-end
-
-def fun_l0_n766()
- fun_l1_n499
-end
-
-def fun_l0_n767()
- fun_l1_n561
-end
-
-def fun_l0_n768()
- fun_l1_n206
-end
-
-def fun_l0_n769()
- fun_l1_n738
-end
-
-def fun_l0_n770()
- fun_l1_n953
-end
-
-def fun_l0_n771()
- fun_l1_n394
-end
-
-def fun_l0_n772()
- fun_l1_n393
-end
-
-def fun_l0_n773()
- fun_l1_n226
-end
-
-def fun_l0_n774()
- fun_l1_n363
-end
-
-def fun_l0_n775()
- fun_l1_n928
-end
-
-def fun_l0_n776()
- fun_l1_n213
-end
-
-def fun_l0_n777()
- fun_l1_n3
-end
-
-def fun_l0_n778()
- fun_l1_n656
-end
-
-def fun_l0_n779()
- fun_l1_n927
-end
-
-def fun_l0_n780()
- fun_l1_n406
-end
-
-def fun_l0_n781()
- fun_l1_n589
-end
-
-def fun_l0_n782()
- fun_l1_n56
-end
-
-def fun_l0_n783()
- fun_l1_n280
-end
-
-def fun_l0_n784()
- fun_l1_n156
-end
-
-def fun_l0_n785()
- fun_l1_n257
-end
-
-def fun_l0_n786()
- fun_l1_n269
-end
-
-def fun_l0_n787()
- fun_l1_n453
-end
-
-def fun_l0_n788()
- fun_l1_n293
-end
-
-def fun_l0_n789()
- fun_l1_n570
-end
-
-def fun_l0_n790()
- fun_l1_n194
-end
-
-def fun_l0_n791()
- fun_l1_n120
-end
-
-def fun_l0_n792()
- fun_l1_n976
-end
-
-def fun_l0_n793()
- fun_l1_n115
-end
-
-def fun_l0_n794()
- fun_l1_n74
-end
-
-def fun_l0_n795()
- fun_l1_n25
-end
-
-def fun_l0_n796()
- fun_l1_n288
-end
-
-def fun_l0_n797()
- fun_l1_n49
-end
-
-def fun_l0_n798()
- fun_l1_n237
-end
-
-def fun_l0_n799()
- fun_l1_n481
-end
-
-def fun_l0_n800()
- fun_l1_n329
-end
-
-def fun_l0_n801()
- fun_l1_n907
-end
-
-def fun_l0_n802()
- fun_l1_n804
-end
-
-def fun_l0_n803()
- fun_l1_n8
-end
-
-def fun_l0_n804()
- fun_l1_n270
-end
-
-def fun_l0_n805()
- fun_l1_n315
-end
-
-def fun_l0_n806()
- fun_l1_n941
-end
-
-def fun_l0_n807()
- fun_l1_n343
-end
-
-def fun_l0_n808()
- fun_l1_n817
-end
-
-def fun_l0_n809()
- fun_l1_n315
-end
-
-def fun_l0_n810()
- fun_l1_n156
-end
-
-def fun_l0_n811()
- fun_l1_n689
-end
-
-def fun_l0_n812()
- fun_l1_n644
-end
-
-def fun_l0_n813()
- fun_l1_n158
-end
-
-def fun_l0_n814()
- fun_l1_n588
-end
-
-def fun_l0_n815()
- fun_l1_n820
-end
-
-def fun_l0_n816()
- fun_l1_n86
-end
-
-def fun_l0_n817()
- fun_l1_n176
-end
-
-def fun_l0_n818()
- fun_l1_n611
-end
-
-def fun_l0_n819()
- fun_l1_n816
-end
-
-def fun_l0_n820()
- fun_l1_n332
-end
-
-def fun_l0_n821()
- fun_l1_n170
-end
-
-def fun_l0_n822()
- fun_l1_n483
-end
-
-def fun_l0_n823()
- fun_l1_n768
-end
-
-def fun_l0_n824()
- fun_l1_n825
-end
-
-def fun_l0_n825()
- fun_l1_n114
-end
-
-def fun_l0_n826()
- fun_l1_n102
-end
-
-def fun_l0_n827()
- fun_l1_n963
-end
-
-def fun_l0_n828()
- fun_l1_n202
-end
-
-def fun_l0_n829()
- fun_l1_n708
-end
-
-def fun_l0_n830()
- fun_l1_n350
-end
-
-def fun_l0_n831()
- fun_l1_n976
-end
-
-def fun_l0_n832()
- fun_l1_n834
-end
-
-def fun_l0_n833()
- fun_l1_n342
-end
-
-def fun_l0_n834()
- fun_l1_n764
-end
-
-def fun_l0_n835()
- fun_l1_n211
-end
-
-def fun_l0_n836()
- fun_l1_n173
-end
-
-def fun_l0_n837()
- fun_l1_n988
-end
-
-def fun_l0_n838()
- fun_l1_n369
-end
-
-def fun_l0_n839()
- fun_l1_n481
-end
-
-def fun_l0_n840()
- fun_l1_n580
-end
-
-def fun_l0_n841()
- fun_l1_n255
-end
-
-def fun_l0_n842()
- fun_l1_n476
-end
-
-def fun_l0_n843()
- fun_l1_n795
-end
-
-def fun_l0_n844()
- fun_l1_n296
-end
-
-def fun_l0_n845()
- fun_l1_n880
-end
-
-def fun_l0_n846()
- fun_l1_n457
-end
-
-def fun_l0_n847()
- fun_l1_n88
-end
-
-def fun_l0_n848()
- fun_l1_n901
-end
-
-def fun_l0_n849()
- fun_l1_n988
-end
-
-def fun_l0_n850()
- fun_l1_n396
-end
-
-def fun_l0_n851()
- fun_l1_n60
-end
-
-def fun_l0_n852()
- fun_l1_n738
-end
-
-def fun_l0_n853()
- fun_l1_n2
-end
-
-def fun_l0_n854()
- fun_l1_n652
-end
-
-def fun_l0_n855()
- fun_l1_n982
-end
-
-def fun_l0_n856()
- fun_l1_n987
-end
-
-def fun_l0_n857()
- fun_l1_n488
-end
-
-def fun_l0_n858()
- fun_l1_n354
-end
-
-def fun_l0_n859()
- fun_l1_n320
-end
-
-def fun_l0_n860()
- fun_l1_n378
-end
-
-def fun_l0_n861()
- fun_l1_n965
-end
-
-def fun_l0_n862()
- fun_l1_n858
-end
-
-def fun_l0_n863()
- fun_l1_n360
-end
-
-def fun_l0_n864()
- fun_l1_n812
-end
-
-def fun_l0_n865()
- fun_l1_n590
-end
-
-def fun_l0_n866()
- fun_l1_n339
-end
-
-def fun_l0_n867()
- fun_l1_n365
-end
-
-def fun_l0_n868()
- fun_l1_n190
-end
-
-def fun_l0_n869()
- fun_l1_n555
-end
-
-def fun_l0_n870()
- fun_l1_n676
-end
-
-def fun_l0_n871()
- fun_l1_n681
-end
-
-def fun_l0_n872()
- fun_l1_n283
-end
-
-def fun_l0_n873()
- fun_l1_n865
-end
-
-def fun_l0_n874()
- fun_l1_n402
-end
-
-def fun_l0_n875()
- fun_l1_n530
-end
-
-def fun_l0_n876()
- fun_l1_n25
-end
-
-def fun_l0_n877()
- fun_l1_n10
-end
-
-def fun_l0_n878()
- fun_l1_n252
-end
-
-def fun_l0_n879()
- fun_l1_n174
-end
-
-def fun_l0_n880()
- fun_l1_n449
-end
-
-def fun_l0_n881()
- fun_l1_n385
-end
-
-def fun_l0_n882()
- fun_l1_n689
-end
-
-def fun_l0_n883()
- fun_l1_n492
-end
-
-def fun_l0_n884()
- fun_l1_n949
-end
-
-def fun_l0_n885()
- fun_l1_n912
-end
-
-def fun_l0_n886()
- fun_l1_n131
-end
-
-def fun_l0_n887()
- fun_l1_n484
-end
-
-def fun_l0_n888()
- fun_l1_n647
-end
-
-def fun_l0_n889()
- fun_l1_n679
-end
-
-def fun_l0_n890()
- fun_l1_n16
-end
-
-def fun_l0_n891()
- fun_l1_n745
-end
-
-def fun_l0_n892()
- fun_l1_n490
-end
-
-def fun_l0_n893()
- fun_l1_n104
-end
-
-def fun_l0_n894()
- fun_l1_n91
-end
-
-def fun_l0_n895()
- fun_l1_n368
-end
-
-def fun_l0_n896()
- fun_l1_n439
-end
-
-def fun_l0_n897()
- fun_l1_n23
-end
-
-def fun_l0_n898()
- fun_l1_n277
-end
-
-def fun_l0_n899()
- fun_l1_n597
-end
-
-def fun_l0_n900()
- fun_l1_n644
-end
-
-def fun_l0_n901()
- fun_l1_n255
-end
-
-def fun_l0_n902()
- fun_l1_n767
-end
-
-def fun_l0_n903()
- fun_l1_n417
-end
-
-def fun_l0_n904()
- fun_l1_n517
-end
-
-def fun_l0_n905()
- fun_l1_n609
-end
-
-def fun_l0_n906()
- fun_l1_n498
-end
-
-def fun_l0_n907()
- fun_l1_n24
-end
-
-def fun_l0_n908()
- fun_l1_n722
-end
-
-def fun_l0_n909()
- fun_l1_n494
-end
-
-def fun_l0_n910()
- fun_l1_n450
-end
-
-def fun_l0_n911()
- fun_l1_n302
-end
-
-def fun_l0_n912()
- fun_l1_n801
-end
-
-def fun_l0_n913()
- fun_l1_n709
-end
-
-def fun_l0_n914()
- fun_l1_n555
-end
-
-def fun_l0_n915()
- fun_l1_n955
-end
-
-def fun_l0_n916()
- fun_l1_n310
-end
-
-def fun_l0_n917()
- fun_l1_n839
-end
-
-def fun_l0_n918()
- fun_l1_n590
-end
-
-def fun_l0_n919()
- fun_l1_n83
-end
-
-def fun_l0_n920()
- fun_l1_n335
-end
-
-def fun_l0_n921()
- fun_l1_n740
-end
-
-def fun_l0_n922()
- fun_l1_n357
-end
-
-def fun_l0_n923()
- fun_l1_n312
-end
-
-def fun_l0_n924()
- fun_l1_n544
-end
-
-def fun_l0_n925()
- fun_l1_n611
-end
-
-def fun_l0_n926()
- fun_l1_n651
-end
-
-def fun_l0_n927()
- fun_l1_n730
-end
-
-def fun_l0_n928()
- fun_l1_n623
-end
-
-def fun_l0_n929()
- fun_l1_n337
-end
-
-def fun_l0_n930()
- fun_l1_n574
-end
-
-def fun_l0_n931()
- fun_l1_n795
-end
-
-def fun_l0_n932()
- fun_l1_n224
-end
-
-def fun_l0_n933()
- fun_l1_n355
-end
-
-def fun_l0_n934()
- fun_l1_n286
-end
-
-def fun_l0_n935()
- fun_l1_n893
-end
-
-def fun_l0_n936()
- fun_l1_n278
-end
-
-def fun_l0_n937()
- fun_l1_n970
-end
-
-def fun_l0_n938()
- fun_l1_n761
-end
-
-def fun_l0_n939()
- fun_l1_n244
-end
-
-def fun_l0_n940()
- fun_l1_n381
-end
-
-def fun_l0_n941()
- fun_l1_n661
-end
-
-def fun_l0_n942()
- fun_l1_n543
-end
-
-def fun_l0_n943()
- fun_l1_n432
-end
-
-def fun_l0_n944()
- fun_l1_n237
-end
-
-def fun_l0_n945()
- fun_l1_n815
-end
-
-def fun_l0_n946()
- fun_l1_n580
-end
-
-def fun_l0_n947()
- fun_l1_n99
-end
-
-def fun_l0_n948()
- fun_l1_n492
-end
-
-def fun_l0_n949()
- fun_l1_n799
-end
-
-def fun_l0_n950()
- fun_l1_n727
-end
-
-def fun_l0_n951()
- fun_l1_n632
-end
-
-def fun_l0_n952()
- fun_l1_n689
-end
-
-def fun_l0_n953()
- fun_l1_n69
-end
-
-def fun_l0_n954()
- fun_l1_n782
-end
-
-def fun_l0_n955()
- fun_l1_n140
-end
-
-def fun_l0_n956()
- fun_l1_n451
-end
-
-def fun_l0_n957()
- fun_l1_n440
-end
-
-def fun_l0_n958()
- fun_l1_n88
-end
-
-def fun_l0_n959()
- fun_l1_n775
-end
-
-def fun_l0_n960()
- fun_l1_n455
-end
-
-def fun_l0_n961()
- fun_l1_n402
-end
-
-def fun_l0_n962()
- fun_l1_n906
-end
-
-def fun_l0_n963()
- fun_l1_n990
-end
-
-def fun_l0_n964()
- fun_l1_n432
-end
-
-def fun_l0_n965()
- fun_l1_n419
-end
-
-def fun_l0_n966()
- fun_l1_n568
-end
-
-def fun_l0_n967()
- fun_l1_n177
-end
-
-def fun_l0_n968()
- fun_l1_n206
-end
-
-def fun_l0_n969()
- fun_l1_n170
-end
-
-def fun_l0_n970()
- fun_l1_n216
-end
-
-def fun_l0_n971()
- fun_l1_n700
-end
-
-def fun_l0_n972()
- fun_l1_n286
-end
-
-def fun_l0_n973()
- fun_l1_n817
-end
-
-def fun_l0_n974()
- fun_l1_n605
-end
-
-def fun_l0_n975()
- fun_l1_n400
-end
-
-def fun_l0_n976()
- fun_l1_n282
-end
-
-def fun_l0_n977()
- fun_l1_n978
-end
-
-def fun_l0_n978()
- fun_l1_n661
-end
-
-def fun_l0_n979()
- fun_l1_n42
-end
-
-def fun_l0_n980()
- fun_l1_n1
-end
-
-def fun_l0_n981()
- fun_l1_n864
-end
-
-def fun_l0_n982()
- fun_l1_n829
-end
-
-def fun_l0_n983()
- fun_l1_n713
-end
-
-def fun_l0_n984()
- fun_l1_n653
-end
-
-def fun_l0_n985()
- fun_l1_n332
-end
-
-def fun_l0_n986()
- fun_l1_n21
-end
-
-def fun_l0_n987()
- fun_l1_n532
-end
-
-def fun_l0_n988()
- fun_l1_n163
-end
-
-def fun_l0_n989()
- fun_l1_n154
-end
-
-def fun_l0_n990()
- fun_l1_n351
-end
-
-def fun_l0_n991()
- fun_l1_n708
-end
-
-def fun_l0_n992()
- fun_l1_n955
-end
-
-def fun_l0_n993()
- fun_l1_n250
-end
-
-def fun_l0_n994()
- fun_l1_n645
-end
-
-def fun_l0_n995()
- fun_l1_n668
-end
-
-def fun_l0_n996()
- fun_l1_n764
-end
-
-def fun_l0_n997()
- fun_l1_n79
-end
-
-def fun_l0_n998()
- fun_l1_n251
-end
-
-def fun_l0_n999()
- fun_l1_n586
-end
-
-def fun_l1_n0()
- fun_l2_n188
-end
-
-def fun_l1_n1()
- fun_l2_n165
-end
-
-def fun_l1_n2()
- fun_l2_n875
-end
-
-def fun_l1_n3()
- fun_l2_n246
-end
-
-def fun_l1_n4()
- fun_l2_n887
-end
-
-def fun_l1_n5()
- fun_l2_n191
-end
-
-def fun_l1_n6()
- fun_l2_n187
-end
-
-def fun_l1_n7()
- fun_l2_n138
-end
-
-def fun_l1_n8()
- fun_l2_n455
-end
-
-def fun_l1_n9()
- fun_l2_n861
-end
-
-def fun_l1_n10()
- fun_l2_n588
-end
-
-def fun_l1_n11()
- fun_l2_n157
-end
-
-def fun_l1_n12()
- fun_l2_n903
-end
-
-def fun_l1_n13()
- fun_l2_n655
-end
-
-def fun_l1_n14()
- fun_l2_n252
-end
-
-def fun_l1_n15()
- fun_l2_n894
-end
-
-def fun_l1_n16()
- fun_l2_n908
-end
-
-def fun_l1_n17()
- fun_l2_n649
-end
-
-def fun_l1_n18()
- fun_l2_n890
-end
-
-def fun_l1_n19()
- fun_l2_n451
-end
-
-def fun_l1_n20()
- fun_l2_n775
-end
-
-def fun_l1_n21()
- fun_l2_n522
-end
-
-def fun_l1_n22()
- fun_l2_n666
-end
-
-def fun_l1_n23()
- fun_l2_n784
-end
-
-def fun_l1_n24()
- fun_l2_n204
-end
-
-def fun_l1_n25()
- fun_l2_n310
-end
-
-def fun_l1_n26()
- fun_l2_n740
-end
-
-def fun_l1_n27()
- fun_l2_n22
-end
-
-def fun_l1_n28()
- fun_l2_n114
-end
-
-def fun_l1_n29()
- fun_l2_n132
-end
-
-def fun_l1_n30()
- fun_l2_n935
-end
-
-def fun_l1_n31()
- fun_l2_n459
-end
-
-def fun_l1_n32()
- fun_l2_n262
-end
-
-def fun_l1_n33()
- fun_l2_n22
-end
-
-def fun_l1_n34()
- fun_l2_n649
-end
-
-def fun_l1_n35()
- fun_l2_n817
-end
-
-def fun_l1_n36()
- fun_l2_n17
-end
-
-def fun_l1_n37()
- fun_l2_n685
-end
-
-def fun_l1_n38()
- fun_l2_n118
-end
-
-def fun_l1_n39()
- fun_l2_n285
-end
-
-def fun_l1_n40()
- fun_l2_n186
-end
-
-def fun_l1_n41()
- fun_l2_n318
-end
-
-def fun_l1_n42()
- fun_l2_n133
-end
-
-def fun_l1_n43()
- fun_l2_n364
-end
-
-def fun_l1_n44()
- fun_l2_n672
-end
-
-def fun_l1_n45()
- fun_l2_n710
-end
-
-def fun_l1_n46()
- fun_l2_n568
-end
-
-def fun_l1_n47()
- fun_l2_n923
-end
-
-def fun_l1_n48()
- fun_l2_n664
-end
-
-def fun_l1_n49()
- fun_l2_n460
-end
-
-def fun_l1_n50()
- fun_l2_n900
-end
-
-def fun_l1_n51()
- fun_l2_n144
-end
-
-def fun_l1_n52()
- fun_l2_n798
-end
-
-def fun_l1_n53()
- fun_l2_n529
-end
-
-def fun_l1_n54()
- fun_l2_n547
-end
-
-def fun_l1_n55()
- fun_l2_n643
-end
-
-def fun_l1_n56()
- fun_l2_n454
-end
-
-def fun_l1_n57()
- fun_l2_n210
-end
-
-def fun_l1_n58()
- fun_l2_n69
-end
-
-def fun_l1_n59()
- fun_l2_n140
-end
-
-def fun_l1_n60()
- fun_l2_n844
-end
-
-def fun_l1_n61()
- fun_l2_n933
-end
-
-def fun_l1_n62()
- fun_l2_n569
-end
-
-def fun_l1_n63()
- fun_l2_n596
-end
-
-def fun_l1_n64()
- fun_l2_n254
-end
-
-def fun_l1_n65()
- fun_l2_n838
-end
-
-def fun_l1_n66()
- fun_l2_n796
-end
-
-def fun_l1_n67()
- fun_l2_n262
-end
-
-def fun_l1_n68()
- fun_l2_n379
-end
-
-def fun_l1_n69()
- fun_l2_n700
-end
-
-def fun_l1_n70()
- fun_l2_n947
-end
-
-def fun_l1_n71()
- fun_l2_n226
-end
-
-def fun_l1_n72()
- fun_l2_n550
-end
-
-def fun_l1_n73()
- fun_l2_n791
-end
-
-def fun_l1_n74()
- fun_l2_n252
-end
-
-def fun_l1_n75()
- fun_l2_n347
-end
-
-def fun_l1_n76()
- fun_l2_n812
-end
-
-def fun_l1_n77()
- fun_l2_n14
-end
-
-def fun_l1_n78()
- fun_l2_n19
-end
-
-def fun_l1_n79()
- fun_l2_n296
-end
-
-def fun_l1_n80()
- fun_l2_n217
-end
-
-def fun_l1_n81()
- fun_l2_n979
-end
-
-def fun_l1_n82()
- fun_l2_n815
-end
-
-def fun_l1_n83()
- fun_l2_n879
-end
-
-def fun_l1_n84()
- fun_l2_n311
-end
-
-def fun_l1_n85()
- fun_l2_n351
-end
-
-def fun_l1_n86()
- fun_l2_n997
-end
-
-def fun_l1_n87()
- fun_l2_n551
-end
-
-def fun_l1_n88()
- fun_l2_n221
-end
-
-def fun_l1_n89()
- fun_l2_n869
-end
-
-def fun_l1_n90()
- fun_l2_n700
-end
-
-def fun_l1_n91()
- fun_l2_n627
-end
-
-def fun_l1_n92()
- fun_l2_n106
-end
-
-def fun_l1_n93()
- fun_l2_n731
-end
-
-def fun_l1_n94()
- fun_l2_n61
-end
-
-def fun_l1_n95()
- fun_l2_n386
-end
-
-def fun_l1_n96()
- fun_l2_n960
-end
-
-def fun_l1_n97()
- fun_l2_n75
-end
-
-def fun_l1_n98()
- fun_l2_n896
-end
-
-def fun_l1_n99()
- fun_l2_n597
-end
-
-def fun_l1_n100()
- fun_l2_n73
-end
-
-def fun_l1_n101()
- fun_l2_n78
-end
-
-def fun_l1_n102()
- fun_l2_n919
-end
-
-def fun_l1_n103()
- fun_l2_n784
-end
-
-def fun_l1_n104()
- fun_l2_n798
-end
-
-def fun_l1_n105()
- fun_l2_n478
-end
-
-def fun_l1_n106()
- fun_l2_n883
-end
-
-def fun_l1_n107()
- fun_l2_n855
-end
-
-def fun_l1_n108()
- fun_l2_n581
-end
-
-def fun_l1_n109()
- fun_l2_n694
-end
-
-def fun_l1_n110()
- fun_l2_n490
-end
-
-def fun_l1_n111()
- fun_l2_n44
-end
-
-def fun_l1_n112()
- fun_l2_n537
-end
-
-def fun_l1_n113()
- fun_l2_n21
-end
-
-def fun_l1_n114()
- fun_l2_n312
-end
-
-def fun_l1_n115()
- fun_l2_n700
-end
-
-def fun_l1_n116()
- fun_l2_n227
-end
-
-def fun_l1_n117()
- fun_l2_n689
-end
-
-def fun_l1_n118()
- fun_l2_n664
-end
-
-def fun_l1_n119()
- fun_l2_n669
-end
-
-def fun_l1_n120()
- fun_l2_n306
-end
-
-def fun_l1_n121()
- fun_l2_n278
-end
-
-def fun_l1_n122()
- fun_l2_n312
-end
-
-def fun_l1_n123()
- fun_l2_n416
-end
-
-def fun_l1_n124()
- fun_l2_n912
-end
-
-def fun_l1_n125()
- fun_l2_n135
-end
-
-def fun_l1_n126()
- fun_l2_n814
-end
-
-def fun_l1_n127()
- fun_l2_n468
-end
-
-def fun_l1_n128()
- fun_l2_n342
-end
-
-def fun_l1_n129()
- fun_l2_n584
-end
-
-def fun_l1_n130()
- fun_l2_n826
-end
-
-def fun_l1_n131()
- fun_l2_n361
-end
-
-def fun_l1_n132()
- fun_l2_n517
-end
-
-def fun_l1_n133()
- fun_l2_n894
-end
-
-def fun_l1_n134()
- fun_l2_n40
-end
-
-def fun_l1_n135()
- fun_l2_n674
-end
-
-def fun_l1_n136()
- fun_l2_n137
-end
-
-def fun_l1_n137()
- fun_l2_n915
-end
-
-def fun_l1_n138()
- fun_l2_n990
-end
-
-def fun_l1_n139()
- fun_l2_n86
-end
-
-def fun_l1_n140()
- fun_l2_n692
-end
-
-def fun_l1_n141()
- fun_l2_n977
-end
-
-def fun_l1_n142()
- fun_l2_n956
-end
-
-def fun_l1_n143()
- fun_l2_n909
-end
-
-def fun_l1_n144()
- fun_l2_n854
-end
-
-def fun_l1_n145()
- fun_l2_n223
-end
-
-def fun_l1_n146()
- fun_l2_n873
-end
-
-def fun_l1_n147()
- fun_l2_n962
-end
-
-def fun_l1_n148()
- fun_l2_n441
-end
-
-def fun_l1_n149()
- fun_l2_n598
-end
-
-def fun_l1_n150()
- fun_l2_n329
-end
-
-def fun_l1_n151()
- fun_l2_n749
-end
-
-def fun_l1_n152()
- fun_l2_n756
-end
-
-def fun_l1_n153()
- fun_l2_n567
-end
-
-def fun_l1_n154()
- fun_l2_n23
-end
-
-def fun_l1_n155()
- fun_l2_n626
-end
-
-def fun_l1_n156()
- fun_l2_n368
-end
-
-def fun_l1_n157()
- fun_l2_n169
-end
-
-def fun_l1_n158()
- fun_l2_n496
-end
-
-def fun_l1_n159()
- fun_l2_n582
-end
-
-def fun_l1_n160()
- fun_l2_n443
-end
-
-def fun_l1_n161()
- fun_l2_n406
-end
-
-def fun_l1_n162()
- fun_l2_n97
-end
-
-def fun_l1_n163()
- fun_l2_n293
-end
-
-def fun_l1_n164()
- fun_l2_n608
-end
-
-def fun_l1_n165()
- fun_l2_n255
-end
-
-def fun_l1_n166()
- fun_l2_n421
-end
-
-def fun_l1_n167()
- fun_l2_n126
-end
-
-def fun_l1_n168()
- fun_l2_n894
-end
-
-def fun_l1_n169()
- fun_l2_n486
-end
-
-def fun_l1_n170()
- fun_l2_n219
-end
-
-def fun_l1_n171()
- fun_l2_n343
-end
-
-def fun_l1_n172()
- fun_l2_n914
-end
-
-def fun_l1_n173()
- fun_l2_n815
-end
-
-def fun_l1_n174()
- fun_l2_n436
-end
-
-def fun_l1_n175()
- fun_l2_n923
-end
-
-def fun_l1_n176()
- fun_l2_n706
-end
-
-def fun_l1_n177()
- fun_l2_n769
-end
-
-def fun_l1_n178()
- fun_l2_n271
-end
-
-def fun_l1_n179()
- fun_l2_n489
-end
-
-def fun_l1_n180()
- fun_l2_n724
-end
-
-def fun_l1_n181()
- fun_l2_n202
-end
-
-def fun_l1_n182()
- fun_l2_n884
-end
-
-def fun_l1_n183()
- fun_l2_n957
-end
-
-def fun_l1_n184()
- fun_l2_n690
-end
-
-def fun_l1_n185()
- fun_l2_n468
-end
-
-def fun_l1_n186()
- fun_l2_n6
-end
-
-def fun_l1_n187()
- fun_l2_n94
-end
-
-def fun_l1_n188()
- fun_l2_n226
-end
-
-def fun_l1_n189()
- fun_l2_n462
-end
-
-def fun_l1_n190()
- fun_l2_n228
-end
-
-def fun_l1_n191()
- fun_l2_n497
-end
-
-def fun_l1_n192()
- fun_l2_n246
-end
-
-def fun_l1_n193()
- fun_l2_n960
-end
-
-def fun_l1_n194()
- fun_l2_n492
-end
-
-def fun_l1_n195()
- fun_l2_n485
-end
-
-def fun_l1_n196()
- fun_l2_n18
-end
-
-def fun_l1_n197()
- fun_l2_n536
-end
-
-def fun_l1_n198()
- fun_l2_n802
-end
-
-def fun_l1_n199()
- fun_l2_n151
-end
-
-def fun_l1_n200()
- fun_l2_n82
-end
-
-def fun_l1_n201()
- fun_l2_n266
-end
-
-def fun_l1_n202()
- fun_l2_n445
-end
-
-def fun_l1_n203()
- fun_l2_n64
-end
-
-def fun_l1_n204()
- fun_l2_n11
-end
-
-def fun_l1_n205()
- fun_l2_n351
-end
-
-def fun_l1_n206()
- fun_l2_n994
-end
-
-def fun_l1_n207()
- fun_l2_n305
-end
-
-def fun_l1_n208()
- fun_l2_n258
-end
-
-def fun_l1_n209()
- fun_l2_n122
-end
-
-def fun_l1_n210()
- fun_l2_n426
-end
-
-def fun_l1_n211()
- fun_l2_n385
-end
-
-def fun_l1_n212()
- fun_l2_n556
-end
-
-def fun_l1_n213()
- fun_l2_n490
-end
-
-def fun_l1_n214()
- fun_l2_n809
-end
-
-def fun_l1_n215()
- fun_l2_n547
-end
-
-def fun_l1_n216()
- fun_l2_n62
-end
-
-def fun_l1_n217()
- fun_l2_n675
-end
-
-def fun_l1_n218()
- fun_l2_n923
-end
-
-def fun_l1_n219()
- fun_l2_n746
-end
-
-def fun_l1_n220()
- fun_l2_n222
-end
-
-def fun_l1_n221()
- fun_l2_n962
-end
-
-def fun_l1_n222()
- fun_l2_n925
-end
-
-def fun_l1_n223()
- fun_l2_n908
-end
-
-def fun_l1_n224()
- fun_l2_n593
-end
-
-def fun_l1_n225()
- fun_l2_n653
-end
-
-def fun_l1_n226()
- fun_l2_n21
-end
-
-def fun_l1_n227()
- fun_l2_n135
-end
-
-def fun_l1_n228()
- fun_l2_n892
-end
-
-def fun_l1_n229()
- fun_l2_n976
-end
-
-def fun_l1_n230()
- fun_l2_n20
-end
-
-def fun_l1_n231()
- fun_l2_n469
-end
-
-def fun_l1_n232()
- fun_l2_n741
-end
-
-def fun_l1_n233()
- fun_l2_n259
-end
-
-def fun_l1_n234()
- fun_l2_n638
-end
-
-def fun_l1_n235()
- fun_l2_n335
-end
-
-def fun_l1_n236()
- fun_l2_n775
-end
-
-def fun_l1_n237()
- fun_l2_n228
-end
-
-def fun_l1_n238()
- fun_l2_n287
-end
-
-def fun_l1_n239()
- fun_l2_n690
-end
-
-def fun_l1_n240()
- fun_l2_n241
-end
-
-def fun_l1_n241()
- fun_l2_n728
-end
-
-def fun_l1_n242()
- fun_l2_n507
-end
-
-def fun_l1_n243()
- fun_l2_n631
-end
-
-def fun_l1_n244()
- fun_l2_n338
-end
-
-def fun_l1_n245()
- fun_l2_n41
-end
-
-def fun_l1_n246()
- fun_l2_n744
-end
-
-def fun_l1_n247()
- fun_l2_n52
-end
-
-def fun_l1_n248()
- fun_l2_n406
-end
-
-def fun_l1_n249()
- fun_l2_n619
-end
-
-def fun_l1_n250()
- fun_l2_n710
-end
-
-def fun_l1_n251()
- fun_l2_n54
-end
-
-def fun_l1_n252()
- fun_l2_n162
-end
-
-def fun_l1_n253()
- fun_l2_n952
-end
-
-def fun_l1_n254()
- fun_l2_n909
-end
-
-def fun_l1_n255()
- fun_l2_n270
-end
-
-def fun_l1_n256()
- fun_l2_n752
-end
-
-def fun_l1_n257()
- fun_l2_n377
-end
-
-def fun_l1_n258()
- fun_l2_n606
-end
-
-def fun_l1_n259()
- fun_l2_n368
-end
-
-def fun_l1_n260()
- fun_l2_n165
-end
-
-def fun_l1_n261()
- fun_l2_n353
-end
-
-def fun_l1_n262()
- fun_l2_n199
-end
-
-def fun_l1_n263()
- fun_l2_n17
-end
-
-def fun_l1_n264()
- fun_l2_n613
-end
-
-def fun_l1_n265()
- fun_l2_n329
-end
-
-def fun_l1_n266()
- fun_l2_n827
-end
-
-def fun_l1_n267()
- fun_l2_n415
-end
-
-def fun_l1_n268()
- fun_l2_n835
-end
-
-def fun_l1_n269()
- fun_l2_n267
-end
-
-def fun_l1_n270()
- fun_l2_n911
-end
-
-def fun_l1_n271()
- fun_l2_n640
-end
-
-def fun_l1_n272()
- fun_l2_n810
-end
-
-def fun_l1_n273()
- fun_l2_n469
-end
-
-def fun_l1_n274()
- fun_l2_n121
-end
-
-def fun_l1_n275()
- fun_l2_n661
-end
-
-def fun_l1_n276()
- fun_l2_n882
-end
-
-def fun_l1_n277()
- fun_l2_n469
-end
-
-def fun_l1_n278()
- fun_l2_n356
-end
-
-def fun_l1_n279()
- fun_l2_n328
-end
-
-def fun_l1_n280()
- fun_l2_n155
-end
-
-def fun_l1_n281()
- fun_l2_n386
-end
-
-def fun_l1_n282()
- fun_l2_n974
-end
-
-def fun_l1_n283()
- fun_l2_n126
-end
-
-def fun_l1_n284()
- fun_l2_n294
-end
-
-def fun_l1_n285()
- fun_l2_n338
-end
-
-def fun_l1_n286()
- fun_l2_n366
-end
-
-def fun_l1_n287()
- fun_l2_n159
-end
-
-def fun_l1_n288()
- fun_l2_n729
-end
-
-def fun_l1_n289()
- fun_l2_n422
-end
-
-def fun_l1_n290()
- fun_l2_n865
-end
-
-def fun_l1_n291()
- fun_l2_n930
-end
-
-def fun_l1_n292()
- fun_l2_n469
-end
-
-def fun_l1_n293()
- fun_l2_n567
-end
-
-def fun_l1_n294()
- fun_l2_n521
-end
-
-def fun_l1_n295()
- fun_l2_n208
-end
-
-def fun_l1_n296()
- fun_l2_n778
-end
-
-def fun_l1_n297()
- fun_l2_n898
-end
-
-def fun_l1_n298()
- fun_l2_n523
-end
-
-def fun_l1_n299()
- fun_l2_n475
-end
-
-def fun_l1_n300()
- fun_l2_n0
-end
-
-def fun_l1_n301()
- fun_l2_n818
-end
-
-def fun_l1_n302()
- fun_l2_n278
-end
-
-def fun_l1_n303()
- fun_l2_n420
-end
-
-def fun_l1_n304()
- fun_l2_n988
-end
-
-def fun_l1_n305()
- fun_l2_n311
-end
-
-def fun_l1_n306()
- fun_l2_n258
-end
-
-def fun_l1_n307()
- fun_l2_n41
-end
-
-def fun_l1_n308()
- fun_l2_n654
-end
-
-def fun_l1_n309()
- fun_l2_n1
-end
-
-def fun_l1_n310()
- fun_l2_n161
-end
-
-def fun_l1_n311()
- fun_l2_n438
-end
-
-def fun_l1_n312()
- fun_l2_n615
-end
-
-def fun_l1_n313()
- fun_l2_n461
-end
-
-def fun_l1_n314()
- fun_l2_n617
-end
-
-def fun_l1_n315()
- fun_l2_n589
-end
-
-def fun_l1_n316()
- fun_l2_n793
-end
-
-def fun_l1_n317()
- fun_l2_n955
-end
-
-def fun_l1_n318()
- fun_l2_n570
-end
-
-def fun_l1_n319()
- fun_l2_n15
-end
-
-def fun_l1_n320()
- fun_l2_n422
-end
-
-def fun_l1_n321()
- fun_l2_n736
-end
-
-def fun_l1_n322()
- fun_l2_n726
-end
-
-def fun_l1_n323()
- fun_l2_n704
-end
-
-def fun_l1_n324()
- fun_l2_n141
-end
-
-def fun_l1_n325()
- fun_l2_n262
-end
-
-def fun_l1_n326()
- fun_l2_n426
-end
-
-def fun_l1_n327()
- fun_l2_n525
-end
-
-def fun_l1_n328()
- fun_l2_n806
-end
-
-def fun_l1_n329()
- fun_l2_n450
-end
-
-def fun_l1_n330()
- fun_l2_n326
-end
-
-def fun_l1_n331()
- fun_l2_n760
-end
-
-def fun_l1_n332()
- fun_l2_n51
-end
-
-def fun_l1_n333()
- fun_l2_n456
-end
-
-def fun_l1_n334()
- fun_l2_n94
-end
-
-def fun_l1_n335()
- fun_l2_n503
-end
-
-def fun_l1_n336()
- fun_l2_n499
-end
-
-def fun_l1_n337()
- fun_l2_n645
-end
-
-def fun_l1_n338()
- fun_l2_n279
-end
-
-def fun_l1_n339()
- fun_l2_n665
-end
-
-def fun_l1_n340()
- fun_l2_n153
-end
-
-def fun_l1_n341()
- fun_l2_n184
-end
-
-def fun_l1_n342()
- fun_l2_n630
-end
-
-def fun_l1_n343()
- fun_l2_n59
-end
-
-def fun_l1_n344()
- fun_l2_n745
-end
-
-def fun_l1_n345()
- fun_l2_n310
-end
-
-def fun_l1_n346()
- fun_l2_n380
-end
-
-def fun_l1_n347()
- fun_l2_n11
-end
-
-def fun_l1_n348()
- fun_l2_n424
-end
-
-def fun_l1_n349()
- fun_l2_n484
-end
-
-def fun_l1_n350()
- fun_l2_n255
-end
-
-def fun_l1_n351()
- fun_l2_n350
-end
-
-def fun_l1_n352()
- fun_l2_n672
-end
-
-def fun_l1_n353()
- fun_l2_n835
-end
-
-def fun_l1_n354()
- fun_l2_n380
-end
-
-def fun_l1_n355()
- fun_l2_n897
-end
-
-def fun_l1_n356()
- fun_l2_n963
-end
-
-def fun_l1_n357()
- fun_l2_n16
-end
-
-def fun_l1_n358()
- fun_l2_n584
-end
-
-def fun_l1_n359()
- fun_l2_n684
-end
-
-def fun_l1_n360()
- fun_l2_n582
-end
-
-def fun_l1_n361()
- fun_l2_n982
-end
-
-def fun_l1_n362()
- fun_l2_n224
-end
-
-def fun_l1_n363()
- fun_l2_n143
-end
-
-def fun_l1_n364()
- fun_l2_n809
-end
-
-def fun_l1_n365()
- fun_l2_n94
-end
-
-def fun_l1_n366()
- fun_l2_n643
-end
-
-def fun_l1_n367()
- fun_l2_n511
-end
-
-def fun_l1_n368()
- fun_l2_n858
-end
-
-def fun_l1_n369()
- fun_l2_n649
-end
-
-def fun_l1_n370()
- fun_l2_n98
-end
-
-def fun_l1_n371()
- fun_l2_n537
-end
-
-def fun_l1_n372()
- fun_l2_n418
-end
-
-def fun_l1_n373()
- fun_l2_n456
-end
-
-def fun_l1_n374()
- fun_l2_n694
-end
-
-def fun_l1_n375()
- fun_l2_n37
-end
-
-def fun_l1_n376()
- fun_l2_n152
-end
-
-def fun_l1_n377()
- fun_l2_n916
-end
-
-def fun_l1_n378()
- fun_l2_n926
-end
-
-def fun_l1_n379()
- fun_l2_n978
-end
-
-def fun_l1_n380()
- fun_l2_n706
-end
-
-def fun_l1_n381()
- fun_l2_n666
-end
-
-def fun_l1_n382()
- fun_l2_n407
-end
-
-def fun_l1_n383()
- fun_l2_n839
-end
-
-def fun_l1_n384()
- fun_l2_n936
-end
-
-def fun_l1_n385()
- fun_l2_n122
-end
-
-def fun_l1_n386()
- fun_l2_n189
-end
-
-def fun_l1_n387()
- fun_l2_n799
-end
-
-def fun_l1_n388()
- fun_l2_n494
-end
-
-def fun_l1_n389()
- fun_l2_n534
-end
-
-def fun_l1_n390()
- fun_l2_n986
-end
-
-def fun_l1_n391()
- fun_l2_n870
-end
-
-def fun_l1_n392()
- fun_l2_n341
-end
-
-def fun_l1_n393()
- fun_l2_n251
-end
-
-def fun_l1_n394()
- fun_l2_n95
-end
-
-def fun_l1_n395()
- fun_l2_n127
-end
-
-def fun_l1_n396()
- fun_l2_n496
-end
-
-def fun_l1_n397()
- fun_l2_n81
-end
-
-def fun_l1_n398()
- fun_l2_n628
-end
-
-def fun_l1_n399()
- fun_l2_n212
-end
-
-def fun_l1_n400()
- fun_l2_n968
-end
-
-def fun_l1_n401()
- fun_l2_n3
-end
-
-def fun_l1_n402()
- fun_l2_n266
-end
-
-def fun_l1_n403()
- fun_l2_n227
-end
-
-def fun_l1_n404()
- fun_l2_n311
-end
-
-def fun_l1_n405()
- fun_l2_n977
-end
-
-def fun_l1_n406()
- fun_l2_n298
-end
-
-def fun_l1_n407()
- fun_l2_n619
-end
-
-def fun_l1_n408()
- fun_l2_n11
-end
-
-def fun_l1_n409()
- fun_l2_n40
-end
-
-def fun_l1_n410()
- fun_l2_n238
-end
-
-def fun_l1_n411()
- fun_l2_n378
-end
-
-def fun_l1_n412()
- fun_l2_n166
-end
-
-def fun_l1_n413()
- fun_l2_n392
-end
-
-def fun_l1_n414()
- fun_l2_n374
-end
-
-def fun_l1_n415()
- fun_l2_n195
-end
-
-def fun_l1_n416()
- fun_l2_n627
-end
-
-def fun_l1_n417()
- fun_l2_n795
-end
-
-def fun_l1_n418()
- fun_l2_n79
-end
-
-def fun_l1_n419()
- fun_l2_n425
-end
-
-def fun_l1_n420()
- fun_l2_n733
-end
-
-def fun_l1_n421()
- fun_l2_n974
-end
-
-def fun_l1_n422()
- fun_l2_n697
-end
-
-def fun_l1_n423()
- fun_l2_n997
-end
-
-def fun_l1_n424()
- fun_l2_n860
-end
-
-def fun_l1_n425()
- fun_l2_n446
-end
-
-def fun_l1_n426()
- fun_l2_n250
-end
-
-def fun_l1_n427()
- fun_l2_n556
-end
-
-def fun_l1_n428()
- fun_l2_n945
-end
-
-def fun_l1_n429()
- fun_l2_n307
-end
-
-def fun_l1_n430()
- fun_l2_n541
-end
-
-def fun_l1_n431()
- fun_l2_n171
-end
-
-def fun_l1_n432()
- fun_l2_n859
-end
-
-def fun_l1_n433()
- fun_l2_n351
-end
-
-def fun_l1_n434()
- fun_l2_n218
-end
-
-def fun_l1_n435()
- fun_l2_n456
-end
-
-def fun_l1_n436()
- fun_l2_n418
-end
-
-def fun_l1_n437()
- fun_l2_n611
-end
-
-def fun_l1_n438()
- fun_l2_n797
-end
-
-def fun_l1_n439()
- fun_l2_n738
-end
-
-def fun_l1_n440()
- fun_l2_n796
-end
-
-def fun_l1_n441()
- fun_l2_n978
-end
-
-def fun_l1_n442()
- fun_l2_n400
-end
-
-def fun_l1_n443()
- fun_l2_n295
-end
-
-def fun_l1_n444()
- fun_l2_n749
-end
-
-def fun_l1_n445()
- fun_l2_n401
-end
-
-def fun_l1_n446()
- fun_l2_n96
-end
-
-def fun_l1_n447()
- fun_l2_n134
-end
-
-def fun_l1_n448()
- fun_l2_n149
-end
-
-def fun_l1_n449()
- fun_l2_n306
-end
-
-def fun_l1_n450()
- fun_l2_n125
-end
-
-def fun_l1_n451()
- fun_l2_n34
-end
-
-def fun_l1_n452()
- fun_l2_n891
-end
-
-def fun_l1_n453()
- fun_l2_n260
-end
-
-def fun_l1_n454()
- fun_l2_n104
-end
-
-def fun_l1_n455()
- fun_l2_n766
-end
-
-def fun_l1_n456()
- fun_l2_n246
-end
-
-def fun_l1_n457()
- fun_l2_n292
-end
-
-def fun_l1_n458()
- fun_l2_n730
-end
-
-def fun_l1_n459()
- fun_l2_n536
-end
-
-def fun_l1_n460()
- fun_l2_n139
-end
-
-def fun_l1_n461()
- fun_l2_n433
-end
-
-def fun_l1_n462()
- fun_l2_n983
-end
-
-def fun_l1_n463()
- fun_l2_n730
-end
-
-def fun_l1_n464()
- fun_l2_n543
-end
-
-def fun_l1_n465()
- fun_l2_n499
-end
-
-def fun_l1_n466()
- fun_l2_n180
-end
-
-def fun_l1_n467()
- fun_l2_n242
-end
-
-def fun_l1_n468()
- fun_l2_n351
-end
-
-def fun_l1_n469()
- fun_l2_n229
-end
-
-def fun_l1_n470()
- fun_l2_n999
-end
-
-def fun_l1_n471()
- fun_l2_n261
-end
-
-def fun_l1_n472()
- fun_l2_n738
-end
-
-def fun_l1_n473()
- fun_l2_n406
-end
-
-def fun_l1_n474()
- fun_l2_n672
-end
-
-def fun_l1_n475()
- fun_l2_n86
-end
-
-def fun_l1_n476()
- fun_l2_n616
-end
-
-def fun_l1_n477()
- fun_l2_n555
-end
-
-def fun_l1_n478()
- fun_l2_n686
-end
-
-def fun_l1_n479()
- fun_l2_n964
-end
-
-def fun_l1_n480()
- fun_l2_n171
-end
-
-def fun_l1_n481()
- fun_l2_n525
-end
-
-def fun_l1_n482()
- fun_l2_n106
-end
-
-def fun_l1_n483()
- fun_l2_n992
-end
-
-def fun_l1_n484()
- fun_l2_n988
-end
-
-def fun_l1_n485()
- fun_l2_n657
-end
-
-def fun_l1_n486()
- fun_l2_n464
-end
-
-def fun_l1_n487()
- fun_l2_n55
-end
-
-def fun_l1_n488()
- fun_l2_n416
-end
-
-def fun_l1_n489()
- fun_l2_n582
-end
-
-def fun_l1_n490()
- fun_l2_n873
-end
-
-def fun_l1_n491()
- fun_l2_n629
-end
-
-def fun_l1_n492()
- fun_l2_n156
-end
-
-def fun_l1_n493()
- fun_l2_n68
-end
-
-def fun_l1_n494()
- fun_l2_n239
-end
-
-def fun_l1_n495()
- fun_l2_n319
-end
-
-def fun_l1_n496()
- fun_l2_n539
-end
-
-def fun_l1_n497()
- fun_l2_n237
-end
-
-def fun_l1_n498()
- fun_l2_n241
-end
-
-def fun_l1_n499()
- fun_l2_n34
-end
-
-def fun_l1_n500()
- fun_l2_n588
-end
-
-def fun_l1_n501()
- fun_l2_n540
-end
-
-def fun_l1_n502()
- fun_l2_n591
-end
-
-def fun_l1_n503()
- fun_l2_n199
-end
-
-def fun_l1_n504()
- fun_l2_n265
-end
-
-def fun_l1_n505()
- fun_l2_n170
-end
-
-def fun_l1_n506()
- fun_l2_n29
-end
-
-def fun_l1_n507()
- fun_l2_n741
-end
-
-def fun_l1_n508()
- fun_l2_n877
-end
-
-def fun_l1_n509()
- fun_l2_n710
-end
-
-def fun_l1_n510()
- fun_l2_n197
-end
-
-def fun_l1_n511()
- fun_l2_n319
-end
-
-def fun_l1_n512()
- fun_l2_n60
-end
-
-def fun_l1_n513()
- fun_l2_n753
-end
-
-def fun_l1_n514()
- fun_l2_n492
-end
-
-def fun_l1_n515()
- fun_l2_n961
-end
-
-def fun_l1_n516()
- fun_l2_n227
-end
-
-def fun_l1_n517()
- fun_l2_n361
-end
-
-def fun_l1_n518()
- fun_l2_n265
-end
-
-def fun_l1_n519()
- fun_l2_n392
-end
-
-def fun_l1_n520()
- fun_l2_n425
-end
-
-def fun_l1_n521()
- fun_l2_n869
-end
-
-def fun_l1_n522()
- fun_l2_n859
-end
-
-def fun_l1_n523()
- fun_l2_n140
-end
-
-def fun_l1_n524()
- fun_l2_n451
-end
-
-def fun_l1_n525()
- fun_l2_n274
-end
-
-def fun_l1_n526()
- fun_l2_n358
-end
-
-def fun_l1_n527()
- fun_l2_n475
-end
-
-def fun_l1_n528()
- fun_l2_n948
-end
-
-def fun_l1_n529()
- fun_l2_n866
-end
-
-def fun_l1_n530()
- fun_l2_n70
-end
-
-def fun_l1_n531()
- fun_l2_n756
-end
-
-def fun_l1_n532()
- fun_l2_n704
-end
-
-def fun_l1_n533()
- fun_l2_n59
-end
-
-def fun_l1_n534()
- fun_l2_n174
-end
-
-def fun_l1_n535()
- fun_l2_n476
-end
-
-def fun_l1_n536()
- fun_l2_n269
-end
-
-def fun_l1_n537()
- fun_l2_n897
-end
-
-def fun_l1_n538()
- fun_l2_n550
-end
-
-def fun_l1_n539()
- fun_l2_n404
-end
-
-def fun_l1_n540()
- fun_l2_n167
-end
-
-def fun_l1_n541()
- fun_l2_n332
-end
-
-def fun_l1_n542()
- fun_l2_n853
-end
-
-def fun_l1_n543()
- fun_l2_n621
-end
-
-def fun_l1_n544()
- fun_l2_n36
-end
-
-def fun_l1_n545()
- fun_l2_n978
-end
-
-def fun_l1_n546()
- fun_l2_n295
-end
-
-def fun_l1_n547()
- fun_l2_n537
-end
-
-def fun_l1_n548()
- fun_l2_n315
-end
-
-def fun_l1_n549()
- fun_l2_n944
-end
-
-def fun_l1_n550()
- fun_l2_n933
-end
-
-def fun_l1_n551()
- fun_l2_n209
-end
-
-def fun_l1_n552()
- fun_l2_n524
-end
-
-def fun_l1_n553()
- fun_l2_n115
-end
-
-def fun_l1_n554()
- fun_l2_n475
-end
-
-def fun_l1_n555()
- fun_l2_n417
-end
-
-def fun_l1_n556()
- fun_l2_n507
-end
-
-def fun_l1_n557()
- fun_l2_n812
-end
-
-def fun_l1_n558()
- fun_l2_n261
-end
-
-def fun_l1_n559()
- fun_l2_n268
-end
-
-def fun_l1_n560()
- fun_l2_n34
-end
-
-def fun_l1_n561()
- fun_l2_n774
-end
-
-def fun_l1_n562()
- fun_l2_n102
-end
-
-def fun_l1_n563()
- fun_l2_n791
-end
-
-def fun_l1_n564()
- fun_l2_n760
-end
-
-def fun_l1_n565()
- fun_l2_n376
-end
-
-def fun_l1_n566()
- fun_l2_n897
-end
-
-def fun_l1_n567()
- fun_l2_n456
-end
-
-def fun_l1_n568()
- fun_l2_n120
-end
-
-def fun_l1_n569()
- fun_l2_n892
-end
-
-def fun_l1_n570()
- fun_l2_n948
-end
-
-def fun_l1_n571()
- fun_l2_n586
-end
-
-def fun_l1_n572()
- fun_l2_n428
-end
-
-def fun_l1_n573()
- fun_l2_n182
-end
-
-def fun_l1_n574()
- fun_l2_n980
-end
-
-def fun_l1_n575()
- fun_l2_n192
-end
-
-def fun_l1_n576()
- fun_l2_n440
-end
-
-def fun_l1_n577()
- fun_l2_n381
-end
-
-def fun_l1_n578()
- fun_l2_n508
-end
-
-def fun_l1_n579()
- fun_l2_n560
-end
-
-def fun_l1_n580()
- fun_l2_n673
-end
-
-def fun_l1_n581()
- fun_l2_n236
-end
-
-def fun_l1_n582()
- fun_l2_n936
-end
-
-def fun_l1_n583()
- fun_l2_n104
-end
-
-def fun_l1_n584()
- fun_l2_n439
-end
-
-def fun_l1_n585()
- fun_l2_n844
-end
-
-def fun_l1_n586()
- fun_l2_n115
-end
-
-def fun_l1_n587()
- fun_l2_n114
-end
-
-def fun_l1_n588()
- fun_l2_n963
-end
-
-def fun_l1_n589()
- fun_l2_n972
-end
-
-def fun_l1_n590()
- fun_l2_n333
-end
-
-def fun_l1_n591()
- fun_l2_n624
-end
-
-def fun_l1_n592()
- fun_l2_n478
-end
-
-def fun_l1_n593()
- fun_l2_n581
-end
-
-def fun_l1_n594()
- fun_l2_n199
-end
-
-def fun_l1_n595()
- fun_l2_n596
-end
-
-def fun_l1_n596()
- fun_l2_n458
-end
-
-def fun_l1_n597()
- fun_l2_n729
-end
-
-def fun_l1_n598()
- fun_l2_n545
-end
-
-def fun_l1_n599()
- fun_l2_n60
-end
-
-def fun_l1_n600()
- fun_l2_n801
-end
-
-def fun_l1_n601()
- fun_l2_n164
-end
-
-def fun_l1_n602()
- fun_l2_n3
-end
-
-def fun_l1_n603()
- fun_l2_n334
-end
-
-def fun_l1_n604()
- fun_l2_n887
-end
-
-def fun_l1_n605()
- fun_l2_n777
-end
-
-def fun_l1_n606()
- fun_l2_n765
-end
-
-def fun_l1_n607()
- fun_l2_n529
-end
-
-def fun_l1_n608()
- fun_l2_n233
-end
-
-def fun_l1_n609()
- fun_l2_n164
-end
-
-def fun_l1_n610()
- fun_l2_n289
-end
-
-def fun_l1_n611()
- fun_l2_n918
-end
-
-def fun_l1_n612()
- fun_l2_n13
-end
-
-def fun_l1_n613()
- fun_l2_n530
-end
-
-def fun_l1_n614()
- fun_l2_n574
-end
-
-def fun_l1_n615()
- fun_l2_n383
-end
-
-def fun_l1_n616()
- fun_l2_n470
-end
-
-def fun_l1_n617()
- fun_l2_n551
-end
-
-def fun_l1_n618()
- fun_l2_n539
-end
-
-def fun_l1_n619()
- fun_l2_n858
-end
-
-def fun_l1_n620()
- fun_l2_n523
-end
-
-def fun_l1_n621()
- fun_l2_n439
-end
-
-def fun_l1_n622()
- fun_l2_n909
-end
-
-def fun_l1_n623()
- fun_l2_n686
-end
-
-def fun_l1_n624()
- fun_l2_n133
-end
-
-def fun_l1_n625()
- fun_l2_n92
-end
-
-def fun_l1_n626()
- fun_l2_n443
-end
-
-def fun_l1_n627()
- fun_l2_n682
-end
-
-def fun_l1_n628()
- fun_l2_n113
-end
-
-def fun_l1_n629()
- fun_l2_n353
-end
-
-def fun_l1_n630()
- fun_l2_n631
-end
-
-def fun_l1_n631()
- fun_l2_n858
-end
-
-def fun_l1_n632()
- fun_l2_n816
-end
-
-def fun_l1_n633()
- fun_l2_n683
-end
-
-def fun_l1_n634()
- fun_l2_n32
-end
-
-def fun_l1_n635()
- fun_l2_n983
-end
-
-def fun_l1_n636()
- fun_l2_n587
-end
-
-def fun_l1_n637()
- fun_l2_n17
-end
-
-def fun_l1_n638()
- fun_l2_n129
-end
-
-def fun_l1_n639()
- fun_l2_n166
-end
-
-def fun_l1_n640()
- fun_l2_n742
-end
-
-def fun_l1_n641()
- fun_l2_n8
-end
-
-def fun_l1_n642()
- fun_l2_n119
-end
-
-def fun_l1_n643()
- fun_l2_n615
-end
-
-def fun_l1_n644()
- fun_l2_n419
-end
-
-def fun_l1_n645()
- fun_l2_n324
-end
-
-def fun_l1_n646()
- fun_l2_n806
-end
-
-def fun_l1_n647()
- fun_l2_n722
-end
-
-def fun_l1_n648()
- fun_l2_n462
-end
-
-def fun_l1_n649()
- fun_l2_n602
-end
-
-def fun_l1_n650()
- fun_l2_n39
-end
-
-def fun_l1_n651()
- fun_l2_n53
-end
-
-def fun_l1_n652()
- fun_l2_n201
-end
-
-def fun_l1_n653()
- fun_l2_n403
-end
-
-def fun_l1_n654()
- fun_l2_n595
-end
-
-def fun_l1_n655()
- fun_l2_n467
-end
-
-def fun_l1_n656()
- fun_l2_n904
-end
-
-def fun_l1_n657()
- fun_l2_n429
-end
-
-def fun_l1_n658()
- fun_l2_n463
-end
-
-def fun_l1_n659()
- fun_l2_n470
-end
-
-def fun_l1_n660()
- fun_l2_n0
-end
-
-def fun_l1_n661()
- fun_l2_n258
-end
-
-def fun_l1_n662()
- fun_l2_n950
-end
-
-def fun_l1_n663()
- fun_l2_n953
-end
-
-def fun_l1_n664()
- fun_l2_n664
-end
-
-def fun_l1_n665()
- fun_l2_n12
-end
-
-def fun_l1_n666()
- fun_l2_n317
-end
-
-def fun_l1_n667()
- fun_l2_n526
-end
-
-def fun_l1_n668()
- fun_l2_n984
-end
-
-def fun_l1_n669()
- fun_l2_n273
-end
-
-def fun_l1_n670()
- fun_l2_n822
-end
-
-def fun_l1_n671()
- fun_l2_n759
-end
-
-def fun_l1_n672()
- fun_l2_n927
-end
-
-def fun_l1_n673()
- fun_l2_n419
-end
-
-def fun_l1_n674()
- fun_l2_n546
-end
-
-def fun_l1_n675()
- fun_l2_n879
-end
-
-def fun_l1_n676()
- fun_l2_n659
-end
-
-def fun_l1_n677()
- fun_l2_n317
-end
-
-def fun_l1_n678()
- fun_l2_n234
-end
-
-def fun_l1_n679()
- fun_l2_n416
-end
-
-def fun_l1_n680()
- fun_l2_n890
-end
-
-def fun_l1_n681()
- fun_l2_n401
-end
-
-def fun_l1_n682()
- fun_l2_n271
-end
-
-def fun_l1_n683()
- fun_l2_n915
-end
-
-def fun_l1_n684()
- fun_l2_n666
-end
-
-def fun_l1_n685()
- fun_l2_n151
-end
-
-def fun_l1_n686()
- fun_l2_n786
-end
-
-def fun_l1_n687()
- fun_l2_n82
-end
-
-def fun_l1_n688()
- fun_l2_n831
-end
-
-def fun_l1_n689()
- fun_l2_n830
-end
-
-def fun_l1_n690()
- fun_l2_n221
-end
-
-def fun_l1_n691()
- fun_l2_n530
-end
-
-def fun_l1_n692()
- fun_l2_n131
-end
-
-def fun_l1_n693()
- fun_l2_n17
-end
-
-def fun_l1_n694()
- fun_l2_n265
-end
-
-def fun_l1_n695()
- fun_l2_n111
-end
-
-def fun_l1_n696()
- fun_l2_n39
-end
-
-def fun_l1_n697()
- fun_l2_n326
-end
-
-def fun_l1_n698()
- fun_l2_n713
-end
-
-def fun_l1_n699()
- fun_l2_n960
-end
-
-def fun_l1_n700()
- fun_l2_n633
-end
-
-def fun_l1_n701()
- fun_l2_n291
-end
-
-def fun_l1_n702()
- fun_l2_n746
-end
-
-def fun_l1_n703()
- fun_l2_n316
-end
-
-def fun_l1_n704()
- fun_l2_n116
-end
-
-def fun_l1_n705()
- fun_l2_n195
-end
-
-def fun_l1_n706()
- fun_l2_n614
-end
-
-def fun_l1_n707()
- fun_l2_n591
-end
-
-def fun_l1_n708()
- fun_l2_n879
-end
-
-def fun_l1_n709()
- fun_l2_n770
-end
-
-def fun_l1_n710()
- fun_l2_n332
-end
-
-def fun_l1_n711()
- fun_l2_n696
-end
-
-def fun_l1_n712()
- fun_l2_n42
-end
-
-def fun_l1_n713()
- fun_l2_n126
-end
-
-def fun_l1_n714()
- fun_l2_n486
-end
-
-def fun_l1_n715()
- fun_l2_n259
-end
-
-def fun_l1_n716()
- fun_l2_n390
-end
-
-def fun_l1_n717()
- fun_l2_n590
-end
-
-def fun_l1_n718()
- fun_l2_n180
-end
-
-def fun_l1_n719()
- fun_l2_n673
-end
-
-def fun_l1_n720()
- fun_l2_n565
-end
-
-def fun_l1_n721()
- fun_l2_n504
-end
-
-def fun_l1_n722()
- fun_l2_n585
-end
-
-def fun_l1_n723()
- fun_l2_n746
-end
-
-def fun_l1_n724()
- fun_l2_n797
-end
-
-def fun_l1_n725()
- fun_l2_n281
-end
-
-def fun_l1_n726()
- fun_l2_n670
-end
-
-def fun_l1_n727()
- fun_l2_n678
-end
-
-def fun_l1_n728()
- fun_l2_n329
-end
-
-def fun_l1_n729()
- fun_l2_n581
-end
-
-def fun_l1_n730()
- fun_l2_n313
-end
-
-def fun_l1_n731()
- fun_l2_n893
-end
-
-def fun_l1_n732()
- fun_l2_n773
-end
-
-def fun_l1_n733()
- fun_l2_n527
-end
-
-def fun_l1_n734()
- fun_l2_n473
-end
-
-def fun_l1_n735()
- fun_l2_n242
-end
-
-def fun_l1_n736()
- fun_l2_n681
-end
-
-def fun_l1_n737()
- fun_l2_n593
-end
-
-def fun_l1_n738()
- fun_l2_n214
-end
-
-def fun_l1_n739()
- fun_l2_n931
-end
-
-def fun_l1_n740()
- fun_l2_n157
-end
-
-def fun_l1_n741()
- fun_l2_n207
-end
-
-def fun_l1_n742()
- fun_l2_n583
-end
-
-def fun_l1_n743()
- fun_l2_n978
-end
-
-def fun_l1_n744()
- fun_l2_n220
-end
-
-def fun_l1_n745()
- fun_l2_n0
-end
-
-def fun_l1_n746()
- fun_l2_n871
-end
-
-def fun_l1_n747()
- fun_l2_n344
-end
-
-def fun_l1_n748()
- fun_l2_n445
-end
-
-def fun_l1_n749()
- fun_l2_n682
-end
-
-def fun_l1_n750()
- fun_l2_n553
-end
-
-def fun_l1_n751()
- fun_l2_n616
-end
-
-def fun_l1_n752()
- fun_l2_n93
-end
-
-def fun_l1_n753()
- fun_l2_n297
-end
-
-def fun_l1_n754()
- fun_l2_n653
-end
-
-def fun_l1_n755()
- fun_l2_n730
-end
-
-def fun_l1_n756()
- fun_l2_n375
-end
-
-def fun_l1_n757()
- fun_l2_n522
-end
-
-def fun_l1_n758()
- fun_l2_n855
-end
-
-def fun_l1_n759()
- fun_l2_n727
-end
-
-def fun_l1_n760()
- fun_l2_n516
-end
-
-def fun_l1_n761()
- fun_l2_n322
-end
-
-def fun_l1_n762()
- fun_l2_n84
-end
-
-def fun_l1_n763()
- fun_l2_n704
-end
-
-def fun_l1_n764()
- fun_l2_n516
-end
-
-def fun_l1_n765()
- fun_l2_n97
-end
-
-def fun_l1_n766()
- fun_l2_n678
-end
-
-def fun_l1_n767()
- fun_l2_n690
-end
-
-def fun_l1_n768()
- fun_l2_n704
-end
-
-def fun_l1_n769()
- fun_l2_n664
-end
-
-def fun_l1_n770()
- fun_l2_n157
-end
-
-def fun_l1_n771()
- fun_l2_n24
-end
-
-def fun_l1_n772()
- fun_l2_n399
-end
-
-def fun_l1_n773()
- fun_l2_n362
-end
-
-def fun_l1_n774()
- fun_l2_n687
-end
-
-def fun_l1_n775()
- fun_l2_n228
-end
-
-def fun_l1_n776()
- fun_l2_n781
-end
-
-def fun_l1_n777()
- fun_l2_n112
-end
-
-def fun_l1_n778()
- fun_l2_n126
-end
-
-def fun_l1_n779()
- fun_l2_n298
-end
-
-def fun_l1_n780()
- fun_l2_n779
-end
-
-def fun_l1_n781()
- fun_l2_n354
-end
-
-def fun_l1_n782()
- fun_l2_n357
-end
-
-def fun_l1_n783()
- fun_l2_n814
-end
-
-def fun_l1_n784()
- fun_l2_n975
-end
-
-def fun_l1_n785()
- fun_l2_n853
-end
-
-def fun_l1_n786()
- fun_l2_n58
-end
-
-def fun_l1_n787()
- fun_l2_n455
-end
-
-def fun_l1_n788()
- fun_l2_n31
-end
-
-def fun_l1_n789()
- fun_l2_n621
-end
-
-def fun_l1_n790()
- fun_l2_n714
-end
-
-def fun_l1_n791()
- fun_l2_n931
-end
-
-def fun_l1_n792()
- fun_l2_n511
-end
-
-def fun_l1_n793()
- fun_l2_n128
-end
-
-def fun_l1_n794()
- fun_l2_n750
-end
-
-def fun_l1_n795()
- fun_l2_n121
-end
-
-def fun_l1_n796()
- fun_l2_n226
-end
-
-def fun_l1_n797()
- fun_l2_n515
-end
-
-def fun_l1_n798()
- fun_l2_n8
-end
-
-def fun_l1_n799()
- fun_l2_n372
-end
-
-def fun_l1_n800()
- fun_l2_n646
-end
-
-def fun_l1_n801()
- fun_l2_n722
-end
-
-def fun_l1_n802()
- fun_l2_n932
-end
-
-def fun_l1_n803()
- fun_l2_n992
-end
-
-def fun_l1_n804()
- fun_l2_n628
-end
-
-def fun_l1_n805()
- fun_l2_n97
-end
-
-def fun_l1_n806()
- fun_l2_n113
-end
-
-def fun_l1_n807()
- fun_l2_n249
-end
-
-def fun_l1_n808()
- fun_l2_n211
-end
-
-def fun_l1_n809()
- fun_l2_n40
-end
-
-def fun_l1_n810()
- fun_l2_n608
-end
-
-def fun_l1_n811()
- fun_l2_n560
-end
-
-def fun_l1_n812()
- fun_l2_n182
-end
-
-def fun_l1_n813()
- fun_l2_n7
-end
-
-def fun_l1_n814()
- fun_l2_n641
-end
-
-def fun_l1_n815()
- fun_l2_n541
-end
-
-def fun_l1_n816()
- fun_l2_n951
-end
-
-def fun_l1_n817()
- fun_l2_n122
-end
-
-def fun_l1_n818()
- fun_l2_n270
-end
-
-def fun_l1_n819()
- fun_l2_n631
-end
-
-def fun_l1_n820()
- fun_l2_n787
-end
-
-def fun_l1_n821()
- fun_l2_n543
-end
-
-def fun_l1_n822()
- fun_l2_n599
-end
-
-def fun_l1_n823()
- fun_l2_n686
-end
-
-def fun_l1_n824()
- fun_l2_n11
-end
-
-def fun_l1_n825()
- fun_l2_n379
-end
-
-def fun_l1_n826()
- fun_l2_n190
-end
-
-def fun_l1_n827()
- fun_l2_n815
-end
-
-def fun_l1_n828()
- fun_l2_n117
-end
-
-def fun_l1_n829()
- fun_l2_n465
-end
-
-def fun_l1_n830()
- fun_l2_n333
-end
-
-def fun_l1_n831()
- fun_l2_n928
-end
-
-def fun_l1_n832()
- fun_l2_n565
-end
-
-def fun_l1_n833()
- fun_l2_n83
-end
-
-def fun_l1_n834()
- fun_l2_n364
-end
-
-def fun_l1_n835()
- fun_l2_n93
-end
-
-def fun_l1_n836()
- fun_l2_n20
-end
-
-def fun_l1_n837()
- fun_l2_n223
-end
-
-def fun_l1_n838()
- fun_l2_n720
-end
-
-def fun_l1_n839()
- fun_l2_n848
-end
-
-def fun_l1_n840()
- fun_l2_n228
-end
-
-def fun_l1_n841()
- fun_l2_n607
-end
-
-def fun_l1_n842()
- fun_l2_n253
-end
-
-def fun_l1_n843()
- fun_l2_n426
-end
-
-def fun_l1_n844()
- fun_l2_n295
-end
-
-def fun_l1_n845()
- fun_l2_n213
-end
-
-def fun_l1_n846()
- fun_l2_n991
-end
-
-def fun_l1_n847()
- fun_l2_n169
-end
-
-def fun_l1_n848()
- fun_l2_n32
-end
-
-def fun_l1_n849()
- fun_l2_n495
-end
-
-def fun_l1_n850()
- fun_l2_n528
-end
-
-def fun_l1_n851()
- fun_l2_n862
-end
-
-def fun_l1_n852()
- fun_l2_n712
-end
-
-def fun_l1_n853()
- fun_l2_n234
-end
-
-def fun_l1_n854()
- fun_l2_n646
-end
-
-def fun_l1_n855()
- fun_l2_n720
-end
-
-def fun_l1_n856()
- fun_l2_n605
-end
-
-def fun_l1_n857()
- fun_l2_n966
-end
-
-def fun_l1_n858()
- fun_l2_n68
-end
-
-def fun_l1_n859()
- fun_l2_n914
-end
-
-def fun_l1_n860()
- fun_l2_n234
-end
-
-def fun_l1_n861()
- fun_l2_n410
-end
-
-def fun_l1_n862()
- fun_l2_n370
-end
-
-def fun_l1_n863()
- fun_l2_n127
-end
-
-def fun_l1_n864()
- fun_l2_n187
-end
-
-def fun_l1_n865()
- fun_l2_n98
-end
-
-def fun_l1_n866()
- fun_l2_n256
-end
-
-def fun_l1_n867()
- fun_l2_n747
-end
-
-def fun_l1_n868()
- fun_l2_n344
-end
-
-def fun_l1_n869()
- fun_l2_n570
-end
-
-def fun_l1_n870()
- fun_l2_n552
-end
-
-def fun_l1_n871()
- fun_l2_n499
-end
-
-def fun_l1_n872()
- fun_l2_n763
-end
-
-def fun_l1_n873()
- fun_l2_n35
-end
-
-def fun_l1_n874()
- fun_l2_n229
-end
-
-def fun_l1_n875()
- fun_l2_n124
-end
-
-def fun_l1_n876()
- fun_l2_n258
-end
-
-def fun_l1_n877()
- fun_l2_n280
-end
-
-def fun_l1_n878()
- fun_l2_n899
-end
-
-def fun_l1_n879()
- fun_l2_n211
-end
-
-def fun_l1_n880()
- fun_l2_n741
-end
-
-def fun_l1_n881()
- fun_l2_n32
-end
-
-def fun_l1_n882()
- fun_l2_n212
-end
-
-def fun_l1_n883()
- fun_l2_n661
-end
-
-def fun_l1_n884()
- fun_l2_n889
-end
-
-def fun_l1_n885()
- fun_l2_n975
-end
-
-def fun_l1_n886()
- fun_l2_n288
-end
-
-def fun_l1_n887()
- fun_l2_n448
-end
-
-def fun_l1_n888()
- fun_l2_n520
-end
-
-def fun_l1_n889()
- fun_l2_n284
-end
-
-def fun_l1_n890()
- fun_l2_n254
-end
-
-def fun_l1_n891()
- fun_l2_n703
-end
-
-def fun_l1_n892()
- fun_l2_n706
-end
-
-def fun_l1_n893()
- fun_l2_n9
-end
-
-def fun_l1_n894()
- fun_l2_n717
-end
-
-def fun_l1_n895()
- fun_l2_n290
-end
-
-def fun_l1_n896()
- fun_l2_n657
-end
-
-def fun_l1_n897()
- fun_l2_n452
-end
-
-def fun_l1_n898()
- fun_l2_n493
-end
-
-def fun_l1_n899()
- fun_l2_n308
-end
-
-def fun_l1_n900()
- fun_l2_n781
-end
-
-def fun_l1_n901()
- fun_l2_n970
-end
-
-def fun_l1_n902()
- fun_l2_n371
-end
-
-def fun_l1_n903()
- fun_l2_n195
-end
-
-def fun_l1_n904()
- fun_l2_n662
-end
-
-def fun_l1_n905()
- fun_l2_n172
-end
-
-def fun_l1_n906()
- fun_l2_n579
-end
-
-def fun_l1_n907()
- fun_l2_n913
-end
-
-def fun_l1_n908()
- fun_l2_n949
-end
-
-def fun_l1_n909()
- fun_l2_n386
-end
-
-def fun_l1_n910()
- fun_l2_n727
-end
-
-def fun_l1_n911()
- fun_l2_n283
-end
-
-def fun_l1_n912()
- fun_l2_n136
-end
-
-def fun_l1_n913()
- fun_l2_n818
-end
-
-def fun_l1_n914()
- fun_l2_n118
-end
-
-def fun_l1_n915()
- fun_l2_n366
-end
-
-def fun_l1_n916()
- fun_l2_n362
-end
-
-def fun_l1_n917()
- fun_l2_n854
-end
-
-def fun_l1_n918()
- fun_l2_n272
-end
-
-def fun_l1_n919()
- fun_l2_n754
-end
-
-def fun_l1_n920()
- fun_l2_n145
-end
-
-def fun_l1_n921()
- fun_l2_n631
-end
-
-def fun_l1_n922()
- fun_l2_n131
-end
-
-def fun_l1_n923()
- fun_l2_n862
-end
-
-def fun_l1_n924()
- fun_l2_n930
-end
-
-def fun_l1_n925()
- fun_l2_n24
-end
-
-def fun_l1_n926()
- fun_l2_n336
-end
-
-def fun_l1_n927()
- fun_l2_n438
-end
-
-def fun_l1_n928()
- fun_l2_n306
-end
-
-def fun_l1_n929()
- fun_l2_n897
-end
-
-def fun_l1_n930()
- fun_l2_n186
-end
-
-def fun_l1_n931()
- fun_l2_n227
-end
-
-def fun_l1_n932()
- fun_l2_n462
-end
-
-def fun_l1_n933()
- fun_l2_n224
-end
-
-def fun_l1_n934()
- fun_l2_n210
-end
-
-def fun_l1_n935()
- fun_l2_n315
-end
-
-def fun_l1_n936()
- fun_l2_n850
-end
-
-def fun_l1_n937()
- fun_l2_n997
-end
-
-def fun_l1_n938()
- fun_l2_n703
-end
-
-def fun_l1_n939()
- fun_l2_n635
-end
-
-def fun_l1_n940()
- fun_l2_n507
-end
-
-def fun_l1_n941()
- fun_l2_n202
-end
-
-def fun_l1_n942()
- fun_l2_n319
-end
-
-def fun_l1_n943()
- fun_l2_n785
-end
-
-def fun_l1_n944()
- fun_l2_n26
-end
-
-def fun_l1_n945()
- fun_l2_n777
-end
-
-def fun_l1_n946()
- fun_l2_n235
-end
-
-def fun_l1_n947()
- fun_l2_n845
-end
-
-def fun_l1_n948()
- fun_l2_n515
-end
-
-def fun_l1_n949()
- fun_l2_n427
-end
-
-def fun_l1_n950()
- fun_l2_n34
-end
-
-def fun_l1_n951()
- fun_l2_n905
-end
-
-def fun_l1_n952()
- fun_l2_n683
-end
-
-def fun_l1_n953()
- fun_l2_n171
-end
-
-def fun_l1_n954()
- fun_l2_n593
-end
-
-def fun_l1_n955()
- fun_l2_n191
-end
-
-def fun_l1_n956()
- fun_l2_n370
-end
-
-def fun_l1_n957()
- fun_l2_n911
-end
-
-def fun_l1_n958()
- fun_l2_n813
-end
-
-def fun_l1_n959()
- fun_l2_n765
-end
-
-def fun_l1_n960()
- fun_l2_n434
-end
-
-def fun_l1_n961()
- fun_l2_n442
-end
-
-def fun_l1_n962()
- fun_l2_n390
-end
-
-def fun_l1_n963()
- fun_l2_n549
-end
-
-def fun_l1_n964()
- fun_l2_n757
-end
-
-def fun_l1_n965()
- fun_l2_n12
-end
-
-def fun_l1_n966()
- fun_l2_n456
-end
-
-def fun_l1_n967()
- fun_l2_n889
-end
-
-def fun_l1_n968()
- fun_l2_n933
-end
-
-def fun_l1_n969()
- fun_l2_n695
-end
-
-def fun_l1_n970()
- fun_l2_n628
-end
-
-def fun_l1_n971()
- fun_l2_n265
-end
-
-def fun_l1_n972()
- fun_l2_n634
-end
-
-def fun_l1_n973()
- fun_l2_n31
-end
-
-def fun_l1_n974()
- fun_l2_n49
-end
-
-def fun_l1_n975()
- fun_l2_n872
-end
-
-def fun_l1_n976()
- fun_l2_n475
-end
-
-def fun_l1_n977()
- fun_l2_n927
-end
-
-def fun_l1_n978()
- fun_l2_n459
-end
-
-def fun_l1_n979()
- fun_l2_n364
-end
-
-def fun_l1_n980()
- fun_l2_n246
-end
-
-def fun_l1_n981()
- fun_l2_n693
-end
-
-def fun_l1_n982()
- fun_l2_n218
-end
-
-def fun_l1_n983()
- fun_l2_n21
-end
-
-def fun_l1_n984()
- fun_l2_n967
-end
-
-def fun_l1_n985()
- fun_l2_n81
-end
-
-def fun_l1_n986()
- fun_l2_n753
-end
-
-def fun_l1_n987()
- fun_l2_n386
-end
-
-def fun_l1_n988()
- fun_l2_n394
-end
-
-def fun_l1_n989()
- fun_l2_n804
-end
-
-def fun_l1_n990()
- fun_l2_n55
-end
-
-def fun_l1_n991()
- fun_l2_n359
-end
-
-def fun_l1_n992()
- fun_l2_n883
-end
-
-def fun_l1_n993()
- fun_l2_n404
-end
-
-def fun_l1_n994()
- fun_l2_n145
-end
-
-def fun_l1_n995()
- fun_l2_n684
-end
-
-def fun_l1_n996()
- fun_l2_n38
-end
-
-def fun_l1_n997()
- fun_l2_n309
-end
-
-def fun_l1_n998()
- fun_l2_n560
-end
-
-def fun_l1_n999()
- fun_l2_n95
-end
-
-def fun_l2_n0()
- fun_l3_n813
-end
-
-def fun_l2_n1()
- fun_l3_n785
-end
-
-def fun_l2_n2()
- fun_l3_n218
-end
-
-def fun_l2_n3()
- fun_l3_n111
-end
-
-def fun_l2_n4()
- fun_l3_n581
-end
-
-def fun_l2_n5()
- fun_l3_n873
-end
-
-def fun_l2_n6()
- fun_l3_n123
-end
-
-def fun_l2_n7()
- fun_l3_n576
-end
-
-def fun_l2_n8()
- fun_l3_n543
-end
-
-def fun_l2_n9()
- fun_l3_n720
-end
-
-def fun_l2_n10()
- fun_l3_n970
-end
-
-def fun_l2_n11()
- fun_l3_n663
-end
-
-def fun_l2_n12()
- fun_l3_n549
-end
-
-def fun_l2_n13()
- fun_l3_n787
-end
-
-def fun_l2_n14()
- fun_l3_n15
-end
-
-def fun_l2_n15()
- fun_l3_n858
-end
-
-def fun_l2_n16()
- fun_l3_n873
-end
-
-def fun_l2_n17()
- fun_l3_n482
-end
-
-def fun_l2_n18()
- fun_l3_n26
-end
-
-def fun_l2_n19()
- fun_l3_n591
-end
-
-def fun_l2_n20()
- fun_l3_n879
-end
-
-def fun_l2_n21()
- fun_l3_n891
-end
-
-def fun_l2_n22()
- fun_l3_n381
-end
-
-def fun_l2_n23()
- fun_l3_n504
-end
-
-def fun_l2_n24()
- fun_l3_n595
-end
-
-def fun_l2_n25()
- fun_l3_n985
-end
-
-def fun_l2_n26()
- fun_l3_n77
-end
-
-def fun_l2_n27()
- fun_l3_n144
-end
-
-def fun_l2_n28()
- fun_l3_n912
-end
-
-def fun_l2_n29()
- fun_l3_n1
-end
-
-def fun_l2_n30()
- fun_l3_n816
-end
-
-def fun_l2_n31()
- fun_l3_n246
-end
-
-def fun_l2_n32()
- fun_l3_n599
-end
-
-def fun_l2_n33()
- fun_l3_n961
-end
-
-def fun_l2_n34()
- fun_l3_n392
-end
-
-def fun_l2_n35()
- fun_l3_n437
-end
-
-def fun_l2_n36()
- fun_l3_n520
-end
-
-def fun_l2_n37()
- fun_l3_n146
-end
-
-def fun_l2_n38()
- fun_l3_n186
-end
-
-def fun_l2_n39()
- fun_l3_n699
-end
-
-def fun_l2_n40()
- fun_l3_n863
-end
-
-def fun_l2_n41()
- fun_l3_n539
-end
-
-def fun_l2_n42()
- fun_l3_n581
-end
-
-def fun_l2_n43()
- fun_l3_n325
-end
-
-def fun_l2_n44()
- fun_l3_n604
-end
-
-def fun_l2_n45()
- fun_l3_n79
-end
-
-def fun_l2_n46()
- fun_l3_n530
-end
-
-def fun_l2_n47()
- fun_l3_n344
-end
-
-def fun_l2_n48()
- fun_l3_n92
-end
-
-def fun_l2_n49()
- fun_l3_n826
-end
-
-def fun_l2_n50()
- fun_l3_n283
-end
-
-def fun_l2_n51()
- fun_l3_n220
-end
-
-def fun_l2_n52()
- fun_l3_n96
-end
-
-def fun_l2_n53()
- fun_l3_n647
-end
-
-def fun_l2_n54()
- fun_l3_n664
-end
-
-def fun_l2_n55()
- fun_l3_n718
-end
-
-def fun_l2_n56()
- fun_l3_n281
-end
-
-def fun_l2_n57()
- fun_l3_n214
-end
-
-def fun_l2_n58()
- fun_l3_n143
-end
-
-def fun_l2_n59()
- fun_l3_n423
-end
-
-def fun_l2_n60()
- fun_l3_n815
-end
-
-def fun_l2_n61()
- fun_l3_n561
-end
-
-def fun_l2_n62()
- fun_l3_n634
-end
-
-def fun_l2_n63()
- fun_l3_n354
-end
-
-def fun_l2_n64()
- fun_l3_n39
-end
-
-def fun_l2_n65()
- fun_l3_n704
-end
-
-def fun_l2_n66()
- fun_l3_n193
-end
-
-def fun_l2_n67()
- fun_l3_n267
-end
-
-def fun_l2_n68()
- fun_l3_n225
-end
-
-def fun_l2_n69()
- fun_l3_n253
-end
-
-def fun_l2_n70()
- fun_l3_n97
-end
-
-def fun_l2_n71()
- fun_l3_n312
-end
-
-def fun_l2_n72()
- fun_l3_n663
-end
-
-def fun_l2_n73()
- fun_l3_n730
-end
-
-def fun_l2_n74()
- fun_l3_n31
-end
-
-def fun_l2_n75()
- fun_l3_n94
-end
-
-def fun_l2_n76()
- fun_l3_n719
-end
-
-def fun_l2_n77()
- fun_l3_n72
-end
-
-def fun_l2_n78()
- fun_l3_n593
-end
-
-def fun_l2_n79()
- fun_l3_n586
-end
-
-def fun_l2_n80()
- fun_l3_n477
-end
-
-def fun_l2_n81()
- fun_l3_n406
-end
-
-def fun_l2_n82()
- fun_l3_n624
-end
-
-def fun_l2_n83()
- fun_l3_n127
-end
-
-def fun_l2_n84()
- fun_l3_n993
-end
-
-def fun_l2_n85()
- fun_l3_n764
-end
-
-def fun_l2_n86()
- fun_l3_n892
-end
-
-def fun_l2_n87()
- fun_l3_n147
-end
-
-def fun_l2_n88()
- fun_l3_n971
-end
-
-def fun_l2_n89()
- fun_l3_n239
-end
-
-def fun_l2_n90()
- fun_l3_n96
-end
-
-def fun_l2_n91()
- fun_l3_n686
-end
-
-def fun_l2_n92()
- fun_l3_n388
-end
-
-def fun_l2_n93()
- fun_l3_n848
-end
-
-def fun_l2_n94()
- fun_l3_n415
-end
-
-def fun_l2_n95()
- fun_l3_n155
-end
-
-def fun_l2_n96()
- fun_l3_n245
-end
-
-def fun_l2_n97()
- fun_l3_n103
-end
-
-def fun_l2_n98()
- fun_l3_n591
-end
-
-def fun_l2_n99()
- fun_l3_n610
-end
-
-def fun_l2_n100()
- fun_l3_n925
-end
-
-def fun_l2_n101()
- fun_l3_n435
-end
-
-def fun_l2_n102()
- fun_l3_n580
-end
-
-def fun_l2_n103()
- fun_l3_n116
-end
-
-def fun_l2_n104()
- fun_l3_n160
-end
-
-def fun_l2_n105()
- fun_l3_n245
-end
-
-def fun_l2_n106()
- fun_l3_n970
-end
-
-def fun_l2_n107()
- fun_l3_n540
-end
-
-def fun_l2_n108()
- fun_l3_n385
-end
-
-def fun_l2_n109()
- fun_l3_n292
-end
-
-def fun_l2_n110()
- fun_l3_n785
-end
-
-def fun_l2_n111()
- fun_l3_n310
-end
-
-def fun_l2_n112()
- fun_l3_n983
-end
-
-def fun_l2_n113()
- fun_l3_n378
-end
-
-def fun_l2_n114()
- fun_l3_n538
-end
-
-def fun_l2_n115()
- fun_l3_n161
-end
-
-def fun_l2_n116()
- fun_l3_n537
-end
-
-def fun_l2_n117()
- fun_l3_n1
-end
-
-def fun_l2_n118()
- fun_l3_n606
-end
-
-def fun_l2_n119()
- fun_l3_n377
-end
-
-def fun_l2_n120()
- fun_l3_n839
-end
-
-def fun_l2_n121()
- fun_l3_n174
-end
-
-def fun_l2_n122()
- fun_l3_n709
-end
-
-def fun_l2_n123()
- fun_l3_n384
-end
-
-def fun_l2_n124()
- fun_l3_n566
-end
-
-def fun_l2_n125()
- fun_l3_n329
-end
-
-def fun_l2_n126()
- fun_l3_n238
-end
-
-def fun_l2_n127()
- fun_l3_n366
-end
-
-def fun_l2_n128()
- fun_l3_n443
-end
-
-def fun_l2_n129()
- fun_l3_n901
-end
-
-def fun_l2_n130()
- fun_l3_n16
-end
-
-def fun_l2_n131()
- fun_l3_n959
-end
-
-def fun_l2_n132()
- fun_l3_n460
-end
-
-def fun_l2_n133()
- fun_l3_n26
-end
-
-def fun_l2_n134()
- fun_l3_n552
-end
-
-def fun_l2_n135()
- fun_l3_n207
-end
-
-def fun_l2_n136()
- fun_l3_n804
-end
-
-def fun_l2_n137()
- fun_l3_n178
-end
-
-def fun_l2_n138()
- fun_l3_n826
-end
-
-def fun_l2_n139()
- fun_l3_n421
-end
-
-def fun_l2_n140()
- fun_l3_n101
-end
-
-def fun_l2_n141()
- fun_l3_n529
-end
-
-def fun_l2_n142()
- fun_l3_n594
-end
-
-def fun_l2_n143()
- fun_l3_n977
-end
-
-def fun_l2_n144()
- fun_l3_n859
-end
-
-def fun_l2_n145()
- fun_l3_n24
-end
-
-def fun_l2_n146()
- fun_l3_n806
-end
-
-def fun_l2_n147()
- fun_l3_n355
-end
-
-def fun_l2_n148()
- fun_l3_n648
-end
-
-def fun_l2_n149()
- fun_l3_n554
-end
-
-def fun_l2_n150()
- fun_l3_n188
-end
-
-def fun_l2_n151()
- fun_l3_n711
-end
-
-def fun_l2_n152()
- fun_l3_n574
-end
-
-def fun_l2_n153()
- fun_l3_n667
-end
-
-def fun_l2_n154()
- fun_l3_n638
-end
-
-def fun_l2_n155()
- fun_l3_n283
-end
-
-def fun_l2_n156()
- fun_l3_n999
-end
-
-def fun_l2_n157()
- fun_l3_n412
-end
-
-def fun_l2_n158()
- fun_l3_n621
-end
-
-def fun_l2_n159()
- fun_l3_n821
-end
-
-def fun_l2_n160()
- fun_l3_n857
-end
-
-def fun_l2_n161()
- fun_l3_n73
-end
-
-def fun_l2_n162()
- fun_l3_n768
-end
-
-def fun_l2_n163()
- fun_l3_n929
-end
-
-def fun_l2_n164()
- fun_l3_n205
-end
-
-def fun_l2_n165()
- fun_l3_n120
-end
-
-def fun_l2_n166()
- fun_l3_n787
-end
-
-def fun_l2_n167()
- fun_l3_n69
-end
-
-def fun_l2_n168()
- fun_l3_n567
-end
-
-def fun_l2_n169()
- fun_l3_n106
-end
-
-def fun_l2_n170()
- fun_l3_n751
-end
-
-def fun_l2_n171()
- fun_l3_n642
-end
-
-def fun_l2_n172()
- fun_l3_n744
-end
-
-def fun_l2_n173()
- fun_l3_n730
-end
-
-def fun_l2_n174()
- fun_l3_n681
-end
-
-def fun_l2_n175()
- fun_l3_n493
-end
-
-def fun_l2_n176()
- fun_l3_n773
-end
-
-def fun_l2_n177()
- fun_l3_n393
-end
-
-def fun_l2_n178()
- fun_l3_n702
-end
-
-def fun_l2_n179()
- fun_l3_n353
-end
-
-def fun_l2_n180()
- fun_l3_n21
-end
-
-def fun_l2_n181()
- fun_l3_n575
-end
-
-def fun_l2_n182()
- fun_l3_n975
-end
-
-def fun_l2_n183()
- fun_l3_n969
-end
-
-def fun_l2_n184()
- fun_l3_n8
-end
-
-def fun_l2_n185()
- fun_l3_n81
-end
-
-def fun_l2_n186()
- fun_l3_n650
-end
-
-def fun_l2_n187()
- fun_l3_n257
-end
-
-def fun_l2_n188()
- fun_l3_n443
-end
-
-def fun_l2_n189()
- fun_l3_n647
-end
-
-def fun_l2_n190()
- fun_l3_n783
-end
-
-def fun_l2_n191()
- fun_l3_n447
-end
-
-def fun_l2_n192()
- fun_l3_n50
-end
-
-def fun_l2_n193()
- fun_l3_n25
-end
-
-def fun_l2_n194()
- fun_l3_n646
-end
-
-def fun_l2_n195()
- fun_l3_n878
-end
-
-def fun_l2_n196()
- fun_l3_n156
-end
-
-def fun_l2_n197()
- fun_l3_n999
-end
-
-def fun_l2_n198()
- fun_l3_n292
-end
-
-def fun_l2_n199()
- fun_l3_n386
-end
-
-def fun_l2_n200()
- fun_l3_n3
-end
-
-def fun_l2_n201()
- fun_l3_n111
-end
-
-def fun_l2_n202()
- fun_l3_n89
-end
-
-def fun_l2_n203()
- fun_l3_n628
-end
-
-def fun_l2_n204()
- fun_l3_n384
-end
-
-def fun_l2_n205()
- fun_l3_n951
-end
-
-def fun_l2_n206()
- fun_l3_n662
-end
-
-def fun_l2_n207()
- fun_l3_n607
-end
-
-def fun_l2_n208()
- fun_l3_n245
-end
-
-def fun_l2_n209()
- fun_l3_n875
-end
-
-def fun_l2_n210()
- fun_l3_n493
-end
-
-def fun_l2_n211()
- fun_l3_n639
-end
-
-def fun_l2_n212()
- fun_l3_n257
-end
-
-def fun_l2_n213()
- fun_l3_n710
-end
-
-def fun_l2_n214()
- fun_l3_n848
-end
-
-def fun_l2_n215()
- fun_l3_n86
-end
-
-def fun_l2_n216()
- fun_l3_n269
-end
-
-def fun_l2_n217()
- fun_l3_n907
-end
-
-def fun_l2_n218()
- fun_l3_n491
-end
-
-def fun_l2_n219()
- fun_l3_n194
-end
-
-def fun_l2_n220()
- fun_l3_n204
-end
-
-def fun_l2_n221()
- fun_l3_n647
-end
-
-def fun_l2_n222()
- fun_l3_n277
-end
-
-def fun_l2_n223()
- fun_l3_n687
-end
-
-def fun_l2_n224()
- fun_l3_n438
-end
-
-def fun_l2_n225()
- fun_l3_n634
-end
-
-def fun_l2_n226()
- fun_l3_n826
-end
-
-def fun_l2_n227()
- fun_l3_n702
-end
-
-def fun_l2_n228()
- fun_l3_n541
-end
-
-def fun_l2_n229()
- fun_l3_n741
-end
-
-def fun_l2_n230()
- fun_l3_n886
-end
-
-def fun_l2_n231()
- fun_l3_n243
-end
-
-def fun_l2_n232()
- fun_l3_n313
-end
-
-def fun_l2_n233()
- fun_l3_n499
-end
-
-def fun_l2_n234()
- fun_l3_n100
-end
-
-def fun_l2_n235()
- fun_l3_n958
-end
-
-def fun_l2_n236()
- fun_l3_n192
-end
-
-def fun_l2_n237()
- fun_l3_n529
-end
-
-def fun_l2_n238()
- fun_l3_n761
-end
-
-def fun_l2_n239()
- fun_l3_n558
-end
-
-def fun_l2_n240()
- fun_l3_n58
-end
-
-def fun_l2_n241()
- fun_l3_n65
-end
-
-def fun_l2_n242()
- fun_l3_n685
-end
-
-def fun_l2_n243()
- fun_l3_n418
-end
-
-def fun_l2_n244()
- fun_l3_n206
-end
-
-def fun_l2_n245()
- fun_l3_n147
-end
-
-def fun_l2_n246()
- fun_l3_n98
-end
-
-def fun_l2_n247()
- fun_l3_n104
-end
-
-def fun_l2_n248()
- fun_l3_n336
-end
-
-def fun_l2_n249()
- fun_l3_n406
-end
-
-def fun_l2_n250()
- fun_l3_n835
-end
-
-def fun_l2_n251()
- fun_l3_n611
-end
-
-def fun_l2_n252()
- fun_l3_n890
-end
-
-def fun_l2_n253()
- fun_l3_n272
-end
-
-def fun_l2_n254()
- fun_l3_n962
-end
-
-def fun_l2_n255()
- fun_l3_n960
-end
-
-def fun_l2_n256()
- fun_l3_n675
-end
-
-def fun_l2_n257()
- fun_l3_n161
-end
-
-def fun_l2_n258()
- fun_l3_n509
-end
-
-def fun_l2_n259()
- fun_l3_n36
-end
-
-def fun_l2_n260()
- fun_l3_n381
-end
-
-def fun_l2_n261()
- fun_l3_n721
-end
-
-def fun_l2_n262()
- fun_l3_n807
-end
-
-def fun_l2_n263()
- fun_l3_n424
-end
-
-def fun_l2_n264()
- fun_l3_n733
-end
-
-def fun_l2_n265()
- fun_l3_n417
-end
-
-def fun_l2_n266()
- fun_l3_n630
-end
-
-def fun_l2_n267()
- fun_l3_n733
-end
-
-def fun_l2_n268()
- fun_l3_n797
-end
-
-def fun_l2_n269()
- fun_l3_n446
-end
-
-def fun_l2_n270()
- fun_l3_n877
-end
-
-def fun_l2_n271()
- fun_l3_n64
-end
-
-def fun_l2_n272()
- fun_l3_n553
-end
-
-def fun_l2_n273()
- fun_l3_n369
-end
-
-def fun_l2_n274()
- fun_l3_n261
-end
-
-def fun_l2_n275()
- fun_l3_n244
-end
-
-def fun_l2_n276()
- fun_l3_n544
-end
-
-def fun_l2_n277()
- fun_l3_n779
-end
-
-def fun_l2_n278()
- fun_l3_n864
-end
-
-def fun_l2_n279()
- fun_l3_n235
-end
-
-def fun_l2_n280()
- fun_l3_n343
-end
-
-def fun_l2_n281()
- fun_l3_n601
-end
-
-def fun_l2_n282()
- fun_l3_n925
-end
-
-def fun_l2_n283()
- fun_l3_n822
-end
-
-def fun_l2_n284()
- fun_l3_n675
-end
-
-def fun_l2_n285()
- fun_l3_n791
-end
-
-def fun_l2_n286()
- fun_l3_n359
-end
-
-def fun_l2_n287()
- fun_l3_n596
-end
-
-def fun_l2_n288()
- fun_l3_n153
-end
-
-def fun_l2_n289()
- fun_l3_n420
-end
-
-def fun_l2_n290()
- fun_l3_n464
-end
-
-def fun_l2_n291()
- fun_l3_n393
-end
-
-def fun_l2_n292()
- fun_l3_n614
-end
-
-def fun_l2_n293()
- fun_l3_n449
-end
-
-def fun_l2_n294()
- fun_l3_n561
-end
-
-def fun_l2_n295()
- fun_l3_n119
-end
-
-def fun_l2_n296()
- fun_l3_n82
-end
-
-def fun_l2_n297()
- fun_l3_n932
-end
-
-def fun_l2_n298()
- fun_l3_n505
-end
-
-def fun_l2_n299()
- fun_l3_n664
-end
-
-def fun_l2_n300()
- fun_l3_n222
-end
-
-def fun_l2_n301()
- fun_l3_n428
-end
-
-def fun_l2_n302()
- fun_l3_n975
-end
-
-def fun_l2_n303()
- fun_l3_n481
-end
-
-def fun_l2_n304()
- fun_l3_n263
-end
-
-def fun_l2_n305()
- fun_l3_n816
-end
-
-def fun_l2_n306()
- fun_l3_n58
-end
-
-def fun_l2_n307()
- fun_l3_n89
-end
-
-def fun_l2_n308()
- fun_l3_n509
-end
-
-def fun_l2_n309()
- fun_l3_n162
-end
-
-def fun_l2_n310()
- fun_l3_n222
-end
-
-def fun_l2_n311()
- fun_l3_n999
-end
-
-def fun_l2_n312()
- fun_l3_n26
-end
-
-def fun_l2_n313()
- fun_l3_n857
-end
-
-def fun_l2_n314()
- fun_l3_n485
-end
-
-def fun_l2_n315()
- fun_l3_n935
-end
-
-def fun_l2_n316()
- fun_l3_n159
-end
-
-def fun_l2_n317()
- fun_l3_n987
-end
-
-def fun_l2_n318()
- fun_l3_n122
-end
-
-def fun_l2_n319()
- fun_l3_n675
-end
-
-def fun_l2_n320()
- fun_l3_n88
-end
-
-def fun_l2_n321()
- fun_l3_n84
-end
-
-def fun_l2_n322()
- fun_l3_n17
-end
-
-def fun_l2_n323()
- fun_l3_n859
-end
-
-def fun_l2_n324()
- fun_l3_n340
-end
-
-def fun_l2_n325()
- fun_l3_n122
-end
-
-def fun_l2_n326()
- fun_l3_n675
-end
-
-def fun_l2_n327()
- fun_l3_n502
-end
-
-def fun_l2_n328()
- fun_l3_n56
-end
-
-def fun_l2_n329()
- fun_l3_n398
-end
-
-def fun_l2_n330()
- fun_l3_n985
-end
-
-def fun_l2_n331()
- fun_l3_n117
-end
-
-def fun_l2_n332()
- fun_l3_n264
-end
-
-def fun_l2_n333()
- fun_l3_n664
-end
-
-def fun_l2_n334()
- fun_l3_n958
-end
-
-def fun_l2_n335()
- fun_l3_n495
-end
-
-def fun_l2_n336()
- fun_l3_n794
-end
-
-def fun_l2_n337()
- fun_l3_n95
-end
-
-def fun_l2_n338()
- fun_l3_n202
-end
-
-def fun_l2_n339()
- fun_l3_n510
-end
-
-def fun_l2_n340()
- fun_l3_n919
-end
-
-def fun_l2_n341()
- fun_l3_n602
-end
-
-def fun_l2_n342()
- fun_l3_n750
-end
-
-def fun_l2_n343()
- fun_l3_n122
-end
-
-def fun_l2_n344()
- fun_l3_n358
-end
-
-def fun_l2_n345()
- fun_l3_n539
-end
-
-def fun_l2_n346()
- fun_l3_n67
-end
-
-def fun_l2_n347()
- fun_l3_n881
-end
-
-def fun_l2_n348()
- fun_l3_n257
-end
-
-def fun_l2_n349()
- fun_l3_n987
-end
-
-def fun_l2_n350()
- fun_l3_n482
-end
-
-def fun_l2_n351()
- fun_l3_n803
-end
-
-def fun_l2_n352()
- fun_l3_n172
-end
-
-def fun_l2_n353()
- fun_l3_n826
-end
-
-def fun_l2_n354()
- fun_l3_n977
-end
-
-def fun_l2_n355()
- fun_l3_n976
-end
-
-def fun_l2_n356()
- fun_l3_n970
-end
-
-def fun_l2_n357()
- fun_l3_n904
-end
-
-def fun_l2_n358()
- fun_l3_n735
-end
-
-def fun_l2_n359()
- fun_l3_n146
-end
-
-def fun_l2_n360()
- fun_l3_n810
-end
-
-def fun_l2_n361()
- fun_l3_n591
-end
-
-def fun_l2_n362()
- fun_l3_n882
-end
-
-def fun_l2_n363()
- fun_l3_n980
-end
-
-def fun_l2_n364()
- fun_l3_n594
-end
-
-def fun_l2_n365()
- fun_l3_n431
-end
-
-def fun_l2_n366()
- fun_l3_n225
-end
-
-def fun_l2_n367()
- fun_l3_n11
-end
-
-def fun_l2_n368()
- fun_l3_n283
-end
-
-def fun_l2_n369()
- fun_l3_n476
-end
-
-def fun_l2_n370()
- fun_l3_n382
-end
-
-def fun_l2_n371()
- fun_l3_n422
-end
-
-def fun_l2_n372()
- fun_l3_n272
-end
-
-def fun_l2_n373()
- fun_l3_n911
-end
-
-def fun_l2_n374()
- fun_l3_n282
-end
-
-def fun_l2_n375()
- fun_l3_n388
-end
-
-def fun_l2_n376()
- fun_l3_n928
-end
-
-def fun_l2_n377()
- fun_l3_n784
-end
-
-def fun_l2_n378()
- fun_l3_n817
-end
-
-def fun_l2_n379()
- fun_l3_n799
-end
-
-def fun_l2_n380()
- fun_l3_n538
-end
-
-def fun_l2_n381()
- fun_l3_n24
-end
-
-def fun_l2_n382()
- fun_l3_n726
-end
-
-def fun_l2_n383()
- fun_l3_n213
-end
-
-def fun_l2_n384()
- fun_l3_n15
-end
-
-def fun_l2_n385()
- fun_l3_n915
-end
-
-def fun_l2_n386()
- fun_l3_n357
-end
-
-def fun_l2_n387()
- fun_l3_n343
-end
-
-def fun_l2_n388()
- fun_l3_n258
-end
-
-def fun_l2_n389()
- fun_l3_n396
-end
-
-def fun_l2_n390()
- fun_l3_n478
-end
-
-def fun_l2_n391()
- fun_l3_n122
-end
-
-def fun_l2_n392()
- fun_l3_n925
-end
-
-def fun_l2_n393()
- fun_l3_n6
-end
-
-def fun_l2_n394()
- fun_l3_n251
-end
-
-def fun_l2_n395()
- fun_l3_n21
-end
-
-def fun_l2_n396()
- fun_l3_n781
-end
-
-def fun_l2_n397()
- fun_l3_n765
-end
-
-def fun_l2_n398()
- fun_l3_n574
-end
-
-def fun_l2_n399()
- fun_l3_n347
-end
-
-def fun_l2_n400()
- fun_l3_n409
-end
-
-def fun_l2_n401()
- fun_l3_n343
-end
-
-def fun_l2_n402()
- fun_l3_n580
-end
-
-def fun_l2_n403()
- fun_l3_n878
-end
-
-def fun_l2_n404()
- fun_l3_n150
-end
-
-def fun_l2_n405()
- fun_l3_n900
-end
-
-def fun_l2_n406()
- fun_l3_n19
-end
-
-def fun_l2_n407()
- fun_l3_n671
-end
-
-def fun_l2_n408()
- fun_l3_n714
-end
-
-def fun_l2_n409()
- fun_l3_n865
-end
-
-def fun_l2_n410()
- fun_l3_n634
-end
-
-def fun_l2_n411()
- fun_l3_n780
-end
-
-def fun_l2_n412()
- fun_l3_n404
-end
-
-def fun_l2_n413()
- fun_l3_n506
-end
-
-def fun_l2_n414()
- fun_l3_n503
-end
-
-def fun_l2_n415()
- fun_l3_n120
-end
-
-def fun_l2_n416()
- fun_l3_n603
-end
-
-def fun_l2_n417()
- fun_l3_n263
-end
-
-def fun_l2_n418()
- fun_l3_n142
-end
-
-def fun_l2_n419()
- fun_l3_n174
-end
-
-def fun_l2_n420()
- fun_l3_n474
-end
-
-def fun_l2_n421()
- fun_l3_n980
-end
-
-def fun_l2_n422()
- fun_l3_n302
-end
-
-def fun_l2_n423()
- fun_l3_n850
-end
-
-def fun_l2_n424()
- fun_l3_n395
-end
-
-def fun_l2_n425()
- fun_l3_n49
-end
-
-def fun_l2_n426()
- fun_l3_n732
-end
-
-def fun_l2_n427()
- fun_l3_n473
-end
-
-def fun_l2_n428()
- fun_l3_n906
-end
-
-def fun_l2_n429()
- fun_l3_n120
-end
-
-def fun_l2_n430()
- fun_l3_n818
-end
-
-def fun_l2_n431()
- fun_l3_n177
-end
-
-def fun_l2_n432()
- fun_l3_n47
-end
-
-def fun_l2_n433()
- fun_l3_n423
-end
-
-def fun_l2_n434()
- fun_l3_n435
-end
-
-def fun_l2_n435()
- fun_l3_n748
-end
-
-def fun_l2_n436()
- fun_l3_n953
-end
-
-def fun_l2_n437()
- fun_l3_n78
-end
-
-def fun_l2_n438()
- fun_l3_n184
-end
-
-def fun_l2_n439()
- fun_l3_n533
-end
-
-def fun_l2_n440()
- fun_l3_n184
-end
-
-def fun_l2_n441()
- fun_l3_n698
-end
-
-def fun_l2_n442()
- fun_l3_n752
-end
-
-def fun_l2_n443()
- fun_l3_n448
-end
-
-def fun_l2_n444()
- fun_l3_n307
-end
-
-def fun_l2_n445()
- fun_l3_n333
-end
-
-def fun_l2_n446()
- fun_l3_n237
-end
-
-def fun_l2_n447()
- fun_l3_n550
-end
-
-def fun_l2_n448()
- fun_l3_n951
-end
-
-def fun_l2_n449()
- fun_l3_n341
-end
-
-def fun_l2_n450()
- fun_l3_n188
-end
-
-def fun_l2_n451()
- fun_l3_n505
-end
-
-def fun_l2_n452()
- fun_l3_n779
-end
-
-def fun_l2_n453()
- fun_l3_n368
-end
-
-def fun_l2_n454()
- fun_l3_n191
-end
-
-def fun_l2_n455()
- fun_l3_n952
-end
-
-def fun_l2_n456()
- fun_l3_n472
-end
-
-def fun_l2_n457()
- fun_l3_n294
-end
-
-def fun_l2_n458()
- fun_l3_n280
-end
-
-def fun_l2_n459()
- fun_l3_n794
-end
-
-def fun_l2_n460()
- fun_l3_n780
-end
-
-def fun_l2_n461()
- fun_l3_n527
-end
-
-def fun_l2_n462()
- fun_l3_n129
-end
-
-def fun_l2_n463()
- fun_l3_n365
-end
-
-def fun_l2_n464()
- fun_l3_n898
-end
-
-def fun_l2_n465()
- fun_l3_n932
-end
-
-def fun_l2_n466()
- fun_l3_n616
-end
-
-def fun_l2_n467()
- fun_l3_n828
-end
-
-def fun_l2_n468()
- fun_l3_n660
-end
-
-def fun_l2_n469()
- fun_l3_n255
-end
-
-def fun_l2_n470()
- fun_l3_n845
-end
-
-def fun_l2_n471()
- fun_l3_n347
-end
-
-def fun_l2_n472()
- fun_l3_n154
-end
-
-def fun_l2_n473()
- fun_l3_n349
-end
-
-def fun_l2_n474()
- fun_l3_n276
-end
-
-def fun_l2_n475()
- fun_l3_n962
-end
-
-def fun_l2_n476()
- fun_l3_n195
-end
-
-def fun_l2_n477()
- fun_l3_n648
-end
-
-def fun_l2_n478()
- fun_l3_n692
-end
-
-def fun_l2_n479()
- fun_l3_n294
-end
-
-def fun_l2_n480()
- fun_l3_n144
-end
-
-def fun_l2_n481()
- fun_l3_n702
-end
-
-def fun_l2_n482()
- fun_l3_n110
-end
-
-def fun_l2_n483()
- fun_l3_n169
-end
-
-def fun_l2_n484()
- fun_l3_n140
-end
-
-def fun_l2_n485()
- fun_l3_n614
-end
-
-def fun_l2_n486()
- fun_l3_n309
-end
-
-def fun_l2_n487()
- fun_l3_n792
-end
-
-def fun_l2_n488()
- fun_l3_n465
-end
-
-def fun_l2_n489()
- fun_l3_n892
-end
-
-def fun_l2_n490()
- fun_l3_n205
-end
-
-def fun_l2_n491()
- fun_l3_n267
-end
-
-def fun_l2_n492()
- fun_l3_n743
-end
-
-def fun_l2_n493()
- fun_l3_n669
-end
-
-def fun_l2_n494()
- fun_l3_n882
-end
-
-def fun_l2_n495()
- fun_l3_n654
-end
-
-def fun_l2_n496()
- fun_l3_n885
-end
-
-def fun_l2_n497()
- fun_l3_n955
-end
-
-def fun_l2_n498()
- fun_l3_n251
-end
-
-def fun_l2_n499()
- fun_l3_n521
-end
-
-def fun_l2_n500()
- fun_l3_n484
-end
-
-def fun_l2_n501()
- fun_l3_n525
-end
-
-def fun_l2_n502()
- fun_l3_n493
-end
-
-def fun_l2_n503()
- fun_l3_n161
-end
-
-def fun_l2_n504()
- fun_l3_n447
-end
-
-def fun_l2_n505()
- fun_l3_n339
-end
-
-def fun_l2_n506()
- fun_l3_n946
-end
-
-def fun_l2_n507()
- fun_l3_n564
-end
-
-def fun_l2_n508()
- fun_l3_n586
-end
-
-def fun_l2_n509()
- fun_l3_n345
-end
-
-def fun_l2_n510()
- fun_l3_n814
-end
-
-def fun_l2_n511()
- fun_l3_n946
-end
-
-def fun_l2_n512()
- fun_l3_n629
-end
-
-def fun_l2_n513()
- fun_l3_n726
-end
-
-def fun_l2_n514()
- fun_l3_n91
-end
-
-def fun_l2_n515()
- fun_l3_n393
-end
-
-def fun_l2_n516()
- fun_l3_n620
-end
-
-def fun_l2_n517()
- fun_l3_n907
-end
-
-def fun_l2_n518()
- fun_l3_n911
-end
-
-def fun_l2_n519()
- fun_l3_n361
-end
-
-def fun_l2_n520()
- fun_l3_n420
-end
-
-def fun_l2_n521()
- fun_l3_n479
-end
-
-def fun_l2_n522()
- fun_l3_n686
-end
-
-def fun_l2_n523()
- fun_l3_n888
-end
-
-def fun_l2_n524()
- fun_l3_n141
-end
-
-def fun_l2_n525()
- fun_l3_n830
-end
-
-def fun_l2_n526()
- fun_l3_n681
-end
-
-def fun_l2_n527()
- fun_l3_n58
-end
-
-def fun_l2_n528()
- fun_l3_n835
-end
-
-def fun_l2_n529()
- fun_l3_n390
-end
-
-def fun_l2_n530()
- fun_l3_n930
-end
-
-def fun_l2_n531()
- fun_l3_n569
-end
-
-def fun_l2_n532()
- fun_l3_n943
-end
-
-def fun_l2_n533()
- fun_l3_n888
-end
-
-def fun_l2_n534()
- fun_l3_n220
-end
-
-def fun_l2_n535()
- fun_l3_n809
-end
-
-def fun_l2_n536()
- fun_l3_n382
-end
-
-def fun_l2_n537()
- fun_l3_n356
-end
-
-def fun_l2_n538()
- fun_l3_n912
-end
-
-def fun_l2_n539()
- fun_l3_n151
-end
-
-def fun_l2_n540()
- fun_l3_n740
-end
-
-def fun_l2_n541()
- fun_l3_n925
-end
-
-def fun_l2_n542()
- fun_l3_n776
-end
-
-def fun_l2_n543()
- fun_l3_n4
-end
-
-def fun_l2_n544()
- fun_l3_n549
-end
-
-def fun_l2_n545()
- fun_l3_n220
-end
-
-def fun_l2_n546()
- fun_l3_n932
-end
-
-def fun_l2_n547()
- fun_l3_n267
-end
-
-def fun_l2_n548()
- fun_l3_n646
-end
-
-def fun_l2_n549()
- fun_l3_n217
-end
-
-def fun_l2_n550()
- fun_l3_n217
-end
-
-def fun_l2_n551()
- fun_l3_n197
-end
-
-def fun_l2_n552()
- fun_l3_n419
-end
-
-def fun_l2_n553()
- fun_l3_n232
-end
-
-def fun_l2_n554()
- fun_l3_n327
-end
-
-def fun_l2_n555()
- fun_l3_n201
-end
-
-def fun_l2_n556()
- fun_l3_n567
-end
-
-def fun_l2_n557()
- fun_l3_n870
-end
-
-def fun_l2_n558()
- fun_l3_n222
-end
-
-def fun_l2_n559()
- fun_l3_n792
-end
-
-def fun_l2_n560()
- fun_l3_n157
-end
-
-def fun_l2_n561()
- fun_l3_n870
-end
-
-def fun_l2_n562()
- fun_l3_n564
-end
-
-def fun_l2_n563()
- fun_l3_n571
-end
-
-def fun_l2_n564()
- fun_l3_n211
-end
-
-def fun_l2_n565()
- fun_l3_n657
-end
-
-def fun_l2_n566()
- fun_l3_n869
-end
-
-def fun_l2_n567()
- fun_l3_n288
-end
-
-def fun_l2_n568()
- fun_l3_n736
-end
-
-def fun_l2_n569()
- fun_l3_n273
-end
-
-def fun_l2_n570()
- fun_l3_n194
-end
-
-def fun_l2_n571()
- fun_l3_n435
-end
-
-def fun_l2_n572()
- fun_l3_n775
-end
-
-def fun_l2_n573()
- fun_l3_n342
-end
-
-def fun_l2_n574()
- fun_l3_n843
-end
-
-def fun_l2_n575()
- fun_l3_n585
-end
-
-def fun_l2_n576()
- fun_l3_n518
-end
-
-def fun_l2_n577()
- fun_l3_n524
-end
-
-def fun_l2_n578()
- fun_l3_n457
-end
-
-def fun_l2_n579()
- fun_l3_n905
-end
-
-def fun_l2_n580()
- fun_l3_n346
-end
-
-def fun_l2_n581()
- fun_l3_n412
-end
-
-def fun_l2_n582()
- fun_l3_n970
-end
-
-def fun_l2_n583()
- fun_l3_n648
-end
-
-def fun_l2_n584()
- fun_l3_n870
-end
-
-def fun_l2_n585()
- fun_l3_n783
-end
-
-def fun_l2_n586()
- fun_l3_n856
-end
-
-def fun_l2_n587()
- fun_l3_n708
-end
-
-def fun_l2_n588()
- fun_l3_n473
-end
-
-def fun_l2_n589()
- fun_l3_n277
-end
-
-def fun_l2_n590()
- fun_l3_n112
-end
-
-def fun_l2_n591()
- fun_l3_n785
-end
-
-def fun_l2_n592()
- fun_l3_n283
-end
-
-def fun_l2_n593()
- fun_l3_n720
-end
-
-def fun_l2_n594()
- fun_l3_n195
-end
-
-def fun_l2_n595()
- fun_l3_n923
-end
-
-def fun_l2_n596()
- fun_l3_n306
-end
-
-def fun_l2_n597()
- fun_l3_n108
-end
-
-def fun_l2_n598()
- fun_l3_n615
-end
-
-def fun_l2_n599()
- fun_l3_n135
-end
-
-def fun_l2_n600()
- fun_l3_n710
-end
-
-def fun_l2_n601()
- fun_l3_n722
-end
-
-def fun_l2_n602()
- fun_l3_n943
-end
-
-def fun_l2_n603()
- fun_l3_n626
-end
-
-def fun_l2_n604()
- fun_l3_n702
-end
-
-def fun_l2_n605()
- fun_l3_n812
-end
-
-def fun_l2_n606()
- fun_l3_n551
-end
-
-def fun_l2_n607()
- fun_l3_n497
-end
-
-def fun_l2_n608()
- fun_l3_n123
-end
-
-def fun_l2_n609()
- fun_l3_n302
-end
-
-def fun_l2_n610()
- fun_l3_n850
-end
-
-def fun_l2_n611()
- fun_l3_n327
-end
-
-def fun_l2_n612()
- fun_l3_n529
-end
-
-def fun_l2_n613()
- fun_l3_n441
-end
-
-def fun_l2_n614()
- fun_l3_n26
-end
-
-def fun_l2_n615()
- fun_l3_n275
-end
-
-def fun_l2_n616()
- fun_l3_n211
-end
-
-def fun_l2_n617()
- fun_l3_n253
-end
-
-def fun_l2_n618()
- fun_l3_n767
-end
-
-def fun_l2_n619()
- fun_l3_n601
-end
-
-def fun_l2_n620()
- fun_l3_n350
-end
-
-def fun_l2_n621()
- fun_l3_n407
-end
-
-def fun_l2_n622()
- fun_l3_n12
-end
-
-def fun_l2_n623()
- fun_l3_n378
-end
-
-def fun_l2_n624()
- fun_l3_n159
-end
-
-def fun_l2_n625()
- fun_l3_n521
-end
-
-def fun_l2_n626()
- fun_l3_n657
-end
-
-def fun_l2_n627()
- fun_l3_n997
-end
-
-def fun_l2_n628()
- fun_l3_n504
-end
-
-def fun_l2_n629()
- fun_l3_n177
-end
-
-def fun_l2_n630()
- fun_l3_n352
-end
-
-def fun_l2_n631()
- fun_l3_n579
-end
-
-def fun_l2_n632()
- fun_l3_n607
-end
-
-def fun_l2_n633()
- fun_l3_n430
-end
-
-def fun_l2_n634()
- fun_l3_n437
-end
-
-def fun_l2_n635()
- fun_l3_n495
-end
-
-def fun_l2_n636()
- fun_l3_n247
-end
-
-def fun_l2_n637()
- fun_l3_n68
-end
-
-def fun_l2_n638()
- fun_l3_n815
-end
-
-def fun_l2_n639()
- fun_l3_n477
-end
-
-def fun_l2_n640()
- fun_l3_n894
-end
-
-def fun_l2_n641()
- fun_l3_n804
-end
-
-def fun_l2_n642()
- fun_l3_n198
-end
-
-def fun_l2_n643()
- fun_l3_n676
-end
-
-def fun_l2_n644()
- fun_l3_n306
-end
-
-def fun_l2_n645()
- fun_l3_n545
-end
-
-def fun_l2_n646()
- fun_l3_n519
-end
-
-def fun_l2_n647()
- fun_l3_n328
-end
-
-def fun_l2_n648()
- fun_l3_n654
-end
-
-def fun_l2_n649()
- fun_l3_n879
-end
-
-def fun_l2_n650()
- fun_l3_n224
-end
-
-def fun_l2_n651()
- fun_l3_n826
-end
-
-def fun_l2_n652()
- fun_l3_n976
-end
-
-def fun_l2_n653()
- fun_l3_n287
-end
-
-def fun_l2_n654()
- fun_l3_n471
-end
-
-def fun_l2_n655()
- fun_l3_n738
-end
-
-def fun_l2_n656()
- fun_l3_n545
-end
-
-def fun_l2_n657()
- fun_l3_n819
-end
-
-def fun_l2_n658()
- fun_l3_n866
-end
-
-def fun_l2_n659()
- fun_l3_n215
-end
-
-def fun_l2_n660()
- fun_l3_n656
-end
-
-def fun_l2_n661()
- fun_l3_n519
-end
-
-def fun_l2_n662()
- fun_l3_n812
-end
-
-def fun_l2_n663()
- fun_l3_n241
-end
-
-def fun_l2_n664()
- fun_l3_n245
-end
-
-def fun_l2_n665()
- fun_l3_n60
-end
-
-def fun_l2_n666()
- fun_l3_n516
-end
-
-def fun_l2_n667()
- fun_l3_n264
-end
-
-def fun_l2_n668()
- fun_l3_n254
-end
-
-def fun_l2_n669()
- fun_l3_n952
-end
-
-def fun_l2_n670()
- fun_l3_n928
-end
-
-def fun_l2_n671()
- fun_l3_n718
-end
-
-def fun_l2_n672()
- fun_l3_n937
-end
-
-def fun_l2_n673()
- fun_l3_n549
-end
-
-def fun_l2_n674()
- fun_l3_n138
-end
-
-def fun_l2_n675()
- fun_l3_n441
-end
-
-def fun_l2_n676()
- fun_l3_n641
-end
-
-def fun_l2_n677()
- fun_l3_n611
-end
-
-def fun_l2_n678()
- fun_l3_n711
-end
-
-def fun_l2_n679()
- fun_l3_n60
-end
-
-def fun_l2_n680()
- fun_l3_n894
-end
-
-def fun_l2_n681()
- fun_l3_n957
-end
-
-def fun_l2_n682()
- fun_l3_n516
-end
-
-def fun_l2_n683()
- fun_l3_n348
-end
-
-def fun_l2_n684()
- fun_l3_n600
-end
-
-def fun_l2_n685()
- fun_l3_n955
-end
-
-def fun_l2_n686()
- fun_l3_n842
-end
-
-def fun_l2_n687()
- fun_l3_n126
-end
-
-def fun_l2_n688()
- fun_l3_n739
-end
-
-def fun_l2_n689()
- fun_l3_n435
-end
-
-def fun_l2_n690()
- fun_l3_n445
-end
-
-def fun_l2_n691()
- fun_l3_n973
-end
-
-def fun_l2_n692()
- fun_l3_n54
-end
-
-def fun_l2_n693()
- fun_l3_n629
-end
-
-def fun_l2_n694()
- fun_l3_n83
-end
-
-def fun_l2_n695()
- fun_l3_n887
-end
-
-def fun_l2_n696()
- fun_l3_n552
-end
-
-def fun_l2_n697()
- fun_l3_n263
-end
-
-def fun_l2_n698()
- fun_l3_n532
-end
-
-def fun_l2_n699()
- fun_l3_n462
-end
-
-def fun_l2_n700()
- fun_l3_n319
-end
-
-def fun_l2_n701()
- fun_l3_n464
-end
-
-def fun_l2_n702()
- fun_l3_n340
-end
-
-def fun_l2_n703()
- fun_l3_n188
-end
-
-def fun_l2_n704()
- fun_l3_n157
-end
-
-def fun_l2_n705()
- fun_l3_n345
-end
-
-def fun_l2_n706()
- fun_l3_n637
-end
-
-def fun_l2_n707()
- fun_l3_n157
-end
-
-def fun_l2_n708()
- fun_l3_n270
-end
-
-def fun_l2_n709()
- fun_l3_n13
-end
-
-def fun_l2_n710()
- fun_l3_n360
-end
-
-def fun_l2_n711()
- fun_l3_n890
-end
-
-def fun_l2_n712()
- fun_l3_n539
-end
-
-def fun_l2_n713()
- fun_l3_n582
-end
-
-def fun_l2_n714()
- fun_l3_n466
-end
-
-def fun_l2_n715()
- fun_l3_n623
-end
-
-def fun_l2_n716()
- fun_l3_n995
-end
-
-def fun_l2_n717()
- fun_l3_n810
-end
-
-def fun_l2_n718()
- fun_l3_n95
-end
-
-def fun_l2_n719()
- fun_l3_n103
-end
-
-def fun_l2_n720()
- fun_l3_n755
-end
-
-def fun_l2_n721()
- fun_l3_n858
-end
-
-def fun_l2_n722()
- fun_l3_n519
-end
-
-def fun_l2_n723()
- fun_l3_n489
-end
-
-def fun_l2_n724()
- fun_l3_n578
-end
-
-def fun_l2_n725()
- fun_l3_n176
-end
-
-def fun_l2_n726()
- fun_l3_n58
-end
-
-def fun_l2_n727()
- fun_l3_n817
-end
-
-def fun_l2_n728()
- fun_l3_n612
-end
-
-def fun_l2_n729()
- fun_l3_n510
-end
-
-def fun_l2_n730()
- fun_l3_n934
-end
-
-def fun_l2_n731()
- fun_l3_n691
-end
-
-def fun_l2_n732()
- fun_l3_n697
-end
-
-def fun_l2_n733()
- fun_l3_n667
-end
-
-def fun_l2_n734()
- fun_l3_n49
-end
-
-def fun_l2_n735()
- fun_l3_n113
-end
-
-def fun_l2_n736()
- fun_l3_n157
-end
-
-def fun_l2_n737()
- fun_l3_n756
-end
-
-def fun_l2_n738()
- fun_l3_n888
-end
-
-def fun_l2_n739()
- fun_l3_n847
-end
-
-def fun_l2_n740()
- fun_l3_n693
-end
-
-def fun_l2_n741()
- fun_l3_n116
-end
-
-def fun_l2_n742()
- fun_l3_n95
-end
-
-def fun_l2_n743()
- fun_l3_n662
-end
-
-def fun_l2_n744()
- fun_l3_n744
-end
-
-def fun_l2_n745()
- fun_l3_n800
-end
-
-def fun_l2_n746()
- fun_l3_n732
-end
-
-def fun_l2_n747()
- fun_l3_n278
-end
-
-def fun_l2_n748()
- fun_l3_n441
-end
-
-def fun_l2_n749()
- fun_l3_n838
-end
-
-def fun_l2_n750()
- fun_l3_n616
-end
-
-def fun_l2_n751()
- fun_l3_n438
-end
-
-def fun_l2_n752()
- fun_l3_n271
-end
-
-def fun_l2_n753()
- fun_l3_n527
-end
-
-def fun_l2_n754()
- fun_l3_n568
-end
-
-def fun_l2_n755()
- fun_l3_n584
-end
-
-def fun_l2_n756()
- fun_l3_n514
-end
-
-def fun_l2_n757()
- fun_l3_n599
-end
-
-def fun_l2_n758()
- fun_l3_n878
-end
-
-def fun_l2_n759()
- fun_l3_n314
-end
-
-def fun_l2_n760()
- fun_l3_n277
-end
-
-def fun_l2_n761()
- fun_l3_n296
-end
-
-def fun_l2_n762()
- fun_l3_n729
-end
-
-def fun_l2_n763()
- fun_l3_n192
-end
-
-def fun_l2_n764()
- fun_l3_n549
-end
-
-def fun_l2_n765()
- fun_l3_n304
-end
-
-def fun_l2_n766()
- fun_l3_n133
-end
-
-def fun_l2_n767()
- fun_l3_n678
-end
-
-def fun_l2_n768()
- fun_l3_n608
-end
-
-def fun_l2_n769()
- fun_l3_n830
-end
-
-def fun_l2_n770()
- fun_l3_n419
-end
-
-def fun_l2_n771()
- fun_l3_n174
-end
-
-def fun_l2_n772()
- fun_l3_n806
-end
-
-def fun_l2_n773()
- fun_l3_n257
-end
-
-def fun_l2_n774()
- fun_l3_n203
-end
-
-def fun_l2_n775()
- fun_l3_n572
-end
-
-def fun_l2_n776()
- fun_l3_n665
-end
-
-def fun_l2_n777()
- fun_l3_n417
-end
-
-def fun_l2_n778()
- fun_l3_n44
-end
-
-def fun_l2_n779()
- fun_l3_n202
-end
-
-def fun_l2_n780()
- fun_l3_n343
-end
-
-def fun_l2_n781()
- fun_l3_n343
-end
-
-def fun_l2_n782()
- fun_l3_n57
-end
-
-def fun_l2_n783()
- fun_l3_n836
-end
-
-def fun_l2_n784()
- fun_l3_n634
-end
-
-def fun_l2_n785()
- fun_l3_n788
-end
-
-def fun_l2_n786()
- fun_l3_n541
-end
-
-def fun_l2_n787()
- fun_l3_n906
-end
-
-def fun_l2_n788()
- fun_l3_n12
-end
-
-def fun_l2_n789()
- fun_l3_n682
-end
-
-def fun_l2_n790()
- fun_l3_n80
-end
-
-def fun_l2_n791()
- fun_l3_n594
-end
-
-def fun_l2_n792()
- fun_l3_n120
-end
-
-def fun_l2_n793()
- fun_l3_n551
-end
-
-def fun_l2_n794()
- fun_l3_n164
-end
-
-def fun_l2_n795()
- fun_l3_n817
-end
-
-def fun_l2_n796()
- fun_l3_n611
-end
-
-def fun_l2_n797()
- fun_l3_n878
-end
-
-def fun_l2_n798()
- fun_l3_n235
-end
-
-def fun_l2_n799()
- fun_l3_n210
-end
-
-def fun_l2_n800()
- fun_l3_n343
-end
-
-def fun_l2_n801()
- fun_l3_n445
-end
-
-def fun_l2_n802()
- fun_l3_n549
-end
-
-def fun_l2_n803()
- fun_l3_n992
-end
-
-def fun_l2_n804()
- fun_l3_n751
-end
-
-def fun_l2_n805()
- fun_l3_n514
-end
-
-def fun_l2_n806()
- fun_l3_n593
-end
-
-def fun_l2_n807()
- fun_l3_n876
-end
-
-def fun_l2_n808()
- fun_l3_n612
-end
-
-def fun_l2_n809()
- fun_l3_n184
-end
-
-def fun_l2_n810()
- fun_l3_n34
-end
-
-def fun_l2_n811()
- fun_l3_n703
-end
-
-def fun_l2_n812()
- fun_l3_n296
-end
-
-def fun_l2_n813()
- fun_l3_n815
-end
-
-def fun_l2_n814()
- fun_l3_n417
-end
-
-def fun_l2_n815()
- fun_l3_n230
-end
-
-def fun_l2_n816()
- fun_l3_n140
-end
-
-def fun_l2_n817()
- fun_l3_n772
-end
-
-def fun_l2_n818()
- fun_l3_n671
-end
-
-def fun_l2_n819()
- fun_l3_n670
-end
-
-def fun_l2_n820()
- fun_l3_n286
-end
-
-def fun_l2_n821()
- fun_l3_n406
-end
-
-def fun_l2_n822()
- fun_l3_n757
-end
-
-def fun_l2_n823()
- fun_l3_n995
-end
-
-def fun_l2_n824()
- fun_l3_n816
-end
-
-def fun_l2_n825()
- fun_l3_n624
-end
-
-def fun_l2_n826()
- fun_l3_n625
-end
-
-def fun_l2_n827()
- fun_l3_n559
-end
-
-def fun_l2_n828()
- fun_l3_n224
-end
-
-def fun_l2_n829()
- fun_l3_n437
-end
-
-def fun_l2_n830()
- fun_l3_n745
-end
-
-def fun_l2_n831()
- fun_l3_n289
-end
-
-def fun_l2_n832()
- fun_l3_n555
-end
-
-def fun_l2_n833()
- fun_l3_n477
-end
-
-def fun_l2_n834()
- fun_l3_n545
-end
-
-def fun_l2_n835()
- fun_l3_n87
-end
-
-def fun_l2_n836()
- fun_l3_n100
-end
-
-def fun_l2_n837()
- fun_l3_n796
-end
-
-def fun_l2_n838()
- fun_l3_n166
-end
-
-def fun_l2_n839()
- fun_l3_n91
-end
-
-def fun_l2_n840()
- fun_l3_n325
-end
-
-def fun_l2_n841()
- fun_l3_n717
-end
-
-def fun_l2_n842()
- fun_l3_n522
-end
-
-def fun_l2_n843()
- fun_l3_n560
-end
-
-def fun_l2_n844()
- fun_l3_n811
-end
-
-def fun_l2_n845()
- fun_l3_n451
-end
-
-def fun_l2_n846()
- fun_l3_n45
-end
-
-def fun_l2_n847()
- fun_l3_n410
-end
-
-def fun_l2_n848()
- fun_l3_n976
-end
-
-def fun_l2_n849()
- fun_l3_n873
-end
-
-def fun_l2_n850()
- fun_l3_n302
-end
-
-def fun_l2_n851()
- fun_l3_n346
-end
-
-def fun_l2_n852()
- fun_l3_n314
-end
-
-def fun_l2_n853()
- fun_l3_n829
-end
-
-def fun_l2_n854()
- fun_l3_n259
-end
-
-def fun_l2_n855()
- fun_l3_n799
-end
-
-def fun_l2_n856()
- fun_l3_n451
-end
-
-def fun_l2_n857()
- fun_l3_n154
-end
-
-def fun_l2_n858()
- fun_l3_n867
-end
-
-def fun_l2_n859()
- fun_l3_n806
-end
-
-def fun_l2_n860()
- fun_l3_n138
-end
-
-def fun_l2_n861()
- fun_l3_n508
-end
-
-def fun_l2_n862()
- fun_l3_n627
-end
-
-def fun_l2_n863()
- fun_l3_n931
-end
-
-def fun_l2_n864()
- fun_l3_n95
-end
-
-def fun_l2_n865()
- fun_l3_n533
-end
-
-def fun_l2_n866()
- fun_l3_n425
-end
-
-def fun_l2_n867()
- fun_l3_n996
-end
-
-def fun_l2_n868()
- fun_l3_n331
-end
-
-def fun_l2_n869()
- fun_l3_n126
-end
-
-def fun_l2_n870()
- fun_l3_n848
-end
-
-def fun_l2_n871()
- fun_l3_n174
-end
-
-def fun_l2_n872()
- fun_l3_n867
-end
-
-def fun_l2_n873()
- fun_l3_n800
-end
-
-def fun_l2_n874()
- fun_l3_n526
-end
-
-def fun_l2_n875()
- fun_l3_n250
-end
-
-def fun_l2_n876()
- fun_l3_n896
-end
-
-def fun_l2_n877()
- fun_l3_n229
-end
-
-def fun_l2_n878()
- fun_l3_n290
-end
-
-def fun_l2_n879()
- fun_l3_n130
-end
-
-def fun_l2_n880()
- fun_l3_n437
-end
-
-def fun_l2_n881()
- fun_l3_n654
-end
-
-def fun_l2_n882()
- fun_l3_n93
-end
-
-def fun_l2_n883()
- fun_l3_n632
-end
-
-def fun_l2_n884()
- fun_l3_n772
-end
-
-def fun_l2_n885()
- fun_l3_n597
-end
-
-def fun_l2_n886()
- fun_l3_n668
-end
-
-def fun_l2_n887()
- fun_l3_n969
-end
-
-def fun_l2_n888()
- fun_l3_n908
-end
-
-def fun_l2_n889()
- fun_l3_n10
-end
-
-def fun_l2_n890()
- fun_l3_n676
-end
-
-def fun_l2_n891()
- fun_l3_n729
-end
-
-def fun_l2_n892()
- fun_l3_n659
-end
-
-def fun_l2_n893()
- fun_l3_n121
-end
-
-def fun_l2_n894()
- fun_l3_n543
-end
-
-def fun_l2_n895()
- fun_l3_n931
-end
-
-def fun_l2_n896()
- fun_l3_n64
-end
-
-def fun_l2_n897()
- fun_l3_n500
-end
-
-def fun_l2_n898()
- fun_l3_n664
-end
-
-def fun_l2_n899()
- fun_l3_n929
-end
-
-def fun_l2_n900()
- fun_l3_n772
-end
-
-def fun_l2_n901()
- fun_l3_n309
-end
-
-def fun_l2_n902()
- fun_l3_n284
-end
-
-def fun_l2_n903()
- fun_l3_n304
-end
-
-def fun_l2_n904()
- fun_l3_n18
-end
-
-def fun_l2_n905()
- fun_l3_n715
-end
-
-def fun_l2_n906()
- fun_l3_n469
-end
-
-def fun_l2_n907()
- fun_l3_n524
-end
-
-def fun_l2_n908()
- fun_l3_n476
-end
-
-def fun_l2_n909()
- fun_l3_n90
-end
-
-def fun_l2_n910()
- fun_l3_n471
-end
-
-def fun_l2_n911()
- fun_l3_n885
-end
-
-def fun_l2_n912()
- fun_l3_n696
-end
-
-def fun_l2_n913()
- fun_l3_n393
-end
-
-def fun_l2_n914()
- fun_l3_n987
-end
-
-def fun_l2_n915()
- fun_l3_n830
-end
-
-def fun_l2_n916()
- fun_l3_n684
-end
-
-def fun_l2_n917()
- fun_l3_n379
-end
-
-def fun_l2_n918()
- fun_l3_n237
-end
-
-def fun_l2_n919()
- fun_l3_n115
-end
-
-def fun_l2_n920()
- fun_l3_n499
-end
-
-def fun_l2_n921()
- fun_l3_n88
-end
-
-def fun_l2_n922()
- fun_l3_n563
-end
-
-def fun_l2_n923()
- fun_l3_n280
-end
-
-def fun_l2_n924()
- fun_l3_n400
-end
-
-def fun_l2_n925()
- fun_l3_n750
-end
-
-def fun_l2_n926()
- fun_l3_n429
-end
-
-def fun_l2_n927()
- fun_l3_n669
-end
-
-def fun_l2_n928()
- fun_l3_n275
-end
-
-def fun_l2_n929()
- fun_l3_n468
-end
-
-def fun_l2_n930()
- fun_l3_n617
-end
-
-def fun_l2_n931()
- fun_l3_n291
-end
-
-def fun_l2_n932()
- fun_l3_n870
-end
-
-def fun_l2_n933()
- fun_l3_n169
-end
-
-def fun_l2_n934()
- fun_l3_n603
-end
-
-def fun_l2_n935()
- fun_l3_n669
-end
-
-def fun_l2_n936()
- fun_l3_n738
-end
-
-def fun_l2_n937()
- fun_l3_n417
-end
-
-def fun_l2_n938()
- fun_l3_n339
-end
-
-def fun_l2_n939()
- fun_l3_n660
-end
-
-def fun_l2_n940()
- fun_l3_n253
-end
-
-def fun_l2_n941()
- fun_l3_n598
-end
-
-def fun_l2_n942()
- fun_l3_n369
-end
-
-def fun_l2_n943()
- fun_l3_n453
-end
-
-def fun_l2_n944()
- fun_l3_n535
-end
-
-def fun_l2_n945()
- fun_l3_n492
-end
-
-def fun_l2_n946()
- fun_l3_n950
-end
-
-def fun_l2_n947()
- fun_l3_n939
-end
-
-def fun_l2_n948()
- fun_l3_n607
-end
-
-def fun_l2_n949()
- fun_l3_n440
-end
-
-def fun_l2_n950()
- fun_l3_n615
-end
-
-def fun_l2_n951()
- fun_l3_n690
-end
-
-def fun_l2_n952()
- fun_l3_n205
-end
-
-def fun_l2_n953()
- fun_l3_n831
-end
-
-def fun_l2_n954()
- fun_l3_n56
-end
-
-def fun_l2_n955()
- fun_l3_n695
-end
-
-def fun_l2_n956()
- fun_l3_n358
-end
-
-def fun_l2_n957()
- fun_l3_n2
-end
-
-def fun_l2_n958()
- fun_l3_n663
-end
-
-def fun_l2_n959()
- fun_l3_n829
-end
-
-def fun_l2_n960()
- fun_l3_n627
-end
-
-def fun_l2_n961()
- fun_l3_n43
-end
-
-def fun_l2_n962()
- fun_l3_n293
-end
-
-def fun_l2_n963()
- fun_l3_n982
-end
-
-def fun_l2_n964()
- fun_l3_n472
-end
-
-def fun_l2_n965()
- fun_l3_n703
-end
-
-def fun_l2_n966()
- fun_l3_n884
-end
-
-def fun_l2_n967()
- fun_l3_n395
-end
-
-def fun_l2_n968()
- fun_l3_n398
-end
-
-def fun_l2_n969()
- fun_l3_n251
-end
-
-def fun_l2_n970()
- fun_l3_n52
-end
-
-def fun_l2_n971()
- fun_l3_n263
-end
-
-def fun_l2_n972()
- fun_l3_n172
-end
-
-def fun_l2_n973()
- fun_l3_n334
-end
-
-def fun_l2_n974()
- fun_l3_n552
-end
-
-def fun_l2_n975()
- fun_l3_n898
-end
-
-def fun_l2_n976()
- fun_l3_n55
-end
-
-def fun_l2_n977()
- fun_l3_n556
-end
-
-def fun_l2_n978()
- fun_l3_n852
-end
-
-def fun_l2_n979()
- fun_l3_n681
-end
-
-def fun_l2_n980()
- fun_l3_n470
-end
-
-def fun_l2_n981()
- fun_l3_n807
-end
-
-def fun_l2_n982()
- fun_l3_n411
-end
-
-def fun_l2_n983()
- fun_l3_n251
-end
-
-def fun_l2_n984()
- fun_l3_n302
-end
-
-def fun_l2_n985()
- fun_l3_n598
-end
-
-def fun_l2_n986()
- fun_l3_n897
-end
-
-def fun_l2_n987()
- fun_l3_n449
-end
-
-def fun_l2_n988()
- fun_l3_n178
-end
-
-def fun_l2_n989()
- fun_l3_n208
-end
-
-def fun_l2_n990()
- fun_l3_n287
-end
-
-def fun_l2_n991()
- fun_l3_n237
-end
-
-def fun_l2_n992()
- fun_l3_n56
-end
-
-def fun_l2_n993()
- fun_l3_n66
-end
-
-def fun_l2_n994()
- fun_l3_n838
-end
-
-def fun_l2_n995()
- fun_l3_n726
-end
-
-def fun_l2_n996()
- fun_l3_n758
-end
-
-def fun_l2_n997()
- fun_l3_n850
-end
-
-def fun_l2_n998()
- fun_l3_n132
-end
-
-def fun_l2_n999()
- fun_l3_n477
-end
-
-def fun_l3_n0()
- fun_l4_n984
-end
-
-def fun_l3_n1()
- fun_l4_n136
-end
-
-def fun_l3_n2()
- fun_l4_n494
-end
-
-def fun_l3_n3()
- fun_l4_n267
-end
-
-def fun_l3_n4()
- fun_l4_n305
-end
-
-def fun_l3_n5()
- fun_l4_n646
-end
-
-def fun_l3_n6()
- fun_l4_n144
-end
-
-def fun_l3_n7()
- fun_l4_n341
-end
-
-def fun_l3_n8()
- fun_l4_n142
-end
-
-def fun_l3_n9()
- fun_l4_n382
-end
-
-def fun_l3_n10()
- fun_l4_n726
-end
-
-def fun_l3_n11()
- fun_l4_n23
-end
-
-def fun_l3_n12()
- fun_l4_n911
-end
-
-def fun_l3_n13()
- fun_l4_n221
-end
-
-def fun_l3_n14()
- fun_l4_n554
-end
-
-def fun_l3_n15()
- fun_l4_n602
-end
-
-def fun_l3_n16()
- fun_l4_n893
-end
-
-def fun_l3_n17()
- fun_l4_n943
-end
-
-def fun_l3_n18()
- fun_l4_n523
-end
-
-def fun_l3_n19()
- fun_l4_n896
-end
-
-def fun_l3_n20()
- fun_l4_n539
-end
-
-def fun_l3_n21()
- fun_l4_n333
-end
-
-def fun_l3_n22()
- fun_l4_n230
-end
-
-def fun_l3_n23()
- fun_l4_n256
-end
-
-def fun_l3_n24()
- fun_l4_n278
-end
-
-def fun_l3_n25()
- fun_l4_n699
-end
-
-def fun_l3_n26()
- fun_l4_n584
-end
-
-def fun_l3_n27()
- fun_l4_n259
-end
-
-def fun_l3_n28()
- fun_l4_n993
-end
-
-def fun_l3_n29()
- fun_l4_n183
-end
-
-def fun_l3_n30()
- fun_l4_n249
-end
-
-def fun_l3_n31()
- fun_l4_n253
-end
-
-def fun_l3_n32()
- fun_l4_n507
-end
-
-def fun_l3_n33()
- fun_l4_n507
-end
-
-def fun_l3_n34()
- fun_l4_n142
-end
-
-def fun_l3_n35()
- fun_l4_n392
-end
-
-def fun_l3_n36()
- fun_l4_n962
-end
-
-def fun_l3_n37()
- fun_l4_n799
-end
-
-def fun_l3_n38()
- fun_l4_n110
-end
-
-def fun_l3_n39()
- fun_l4_n623
-end
-
-def fun_l3_n40()
- fun_l4_n508
-end
-
-def fun_l3_n41()
- fun_l4_n726
-end
-
-def fun_l3_n42()
- fun_l4_n282
-end
-
-def fun_l3_n43()
- fun_l4_n942
-end
-
-def fun_l3_n44()
- fun_l4_n711
-end
-
-def fun_l3_n45()
- fun_l4_n926
-end
-
-def fun_l3_n46()
- fun_l4_n793
-end
-
-def fun_l3_n47()
- fun_l4_n658
-end
-
-def fun_l3_n48()
- fun_l4_n802
-end
-
-def fun_l3_n49()
- fun_l4_n499
-end
-
-def fun_l3_n50()
- fun_l4_n648
-end
-
-def fun_l3_n51()
- fun_l4_n465
-end
-
-def fun_l3_n52()
- fun_l4_n460
-end
-
-def fun_l3_n53()
- fun_l4_n904
-end
-
-def fun_l3_n54()
- fun_l4_n939
-end
-
-def fun_l3_n55()
- fun_l4_n306
-end
-
-def fun_l3_n56()
- fun_l4_n235
-end
-
-def fun_l3_n57()
- fun_l4_n783
-end
-
-def fun_l3_n58()
- fun_l4_n992
-end
-
-def fun_l3_n59()
- fun_l4_n196
-end
-
-def fun_l3_n60()
- fun_l4_n637
-end
-
-def fun_l3_n61()
- fun_l4_n512
-end
-
-def fun_l3_n62()
- fun_l4_n480
-end
-
-def fun_l3_n63()
- fun_l4_n31
-end
-
-def fun_l3_n64()
- fun_l4_n277
-end
-
-def fun_l3_n65()
- fun_l4_n814
-end
-
-def fun_l3_n66()
- fun_l4_n170
-end
-
-def fun_l3_n67()
- fun_l4_n604
-end
-
-def fun_l3_n68()
- fun_l4_n794
-end
-
-def fun_l3_n69()
- fun_l4_n530
-end
-
-def fun_l3_n70()
- fun_l4_n291
-end
-
-def fun_l3_n71()
- fun_l4_n146
-end
-
-def fun_l3_n72()
- fun_l4_n588
-end
-
-def fun_l3_n73()
- fun_l4_n624
-end
-
-def fun_l3_n74()
- fun_l4_n210
-end
-
-def fun_l3_n75()
- fun_l4_n924
-end
-
-def fun_l3_n76()
- fun_l4_n77
-end
-
-def fun_l3_n77()
- fun_l4_n727
-end
-
-def fun_l3_n78()
- fun_l4_n840
-end
-
-def fun_l3_n79()
- fun_l4_n257
-end
-
-def fun_l3_n80()
- fun_l4_n654
-end
-
-def fun_l3_n81()
- fun_l4_n498
-end
-
-def fun_l3_n82()
- fun_l4_n445
-end
-
-def fun_l3_n83()
- fun_l4_n820
-end
-
-def fun_l3_n84()
- fun_l4_n376
-end
-
-def fun_l3_n85()
- fun_l4_n702
-end
-
-def fun_l3_n86()
- fun_l4_n22
-end
-
-def fun_l3_n87()
- fun_l4_n278
-end
-
-def fun_l3_n88()
- fun_l4_n399
-end
-
-def fun_l3_n89()
- fun_l4_n166
-end
-
-def fun_l3_n90()
- fun_l4_n461
-end
-
-def fun_l3_n91()
- fun_l4_n992
-end
-
-def fun_l3_n92()
- fun_l4_n207
-end
-
-def fun_l3_n93()
- fun_l4_n915
-end
-
-def fun_l3_n94()
- fun_l4_n852
-end
-
-def fun_l3_n95()
- fun_l4_n591
-end
-
-def fun_l3_n96()
- fun_l4_n74
-end
-
-def fun_l3_n97()
- fun_l4_n735
-end
-
-def fun_l3_n98()
- fun_l4_n863
-end
-
-def fun_l3_n99()
- fun_l4_n692
-end
-
-def fun_l3_n100()
- fun_l4_n633
-end
-
-def fun_l3_n101()
- fun_l4_n618
-end
-
-def fun_l3_n102()
- fun_l4_n306
-end
-
-def fun_l3_n103()
- fun_l4_n620
-end
-
-def fun_l3_n104()
- fun_l4_n981
-end
-
-def fun_l3_n105()
- fun_l4_n763
-end
-
-def fun_l3_n106()
- fun_l4_n727
-end
-
-def fun_l3_n107()
- fun_l4_n173
-end
-
-def fun_l3_n108()
- fun_l4_n645
-end
-
-def fun_l3_n109()
- fun_l4_n333
-end
-
-def fun_l3_n110()
- fun_l4_n847
-end
-
-def fun_l3_n111()
- fun_l4_n905
-end
-
-def fun_l3_n112()
- fun_l4_n753
-end
-
-def fun_l3_n113()
- fun_l4_n294
-end
-
-def fun_l3_n114()
- fun_l4_n891
-end
-
-def fun_l3_n115()
- fun_l4_n495
-end
-
-def fun_l3_n116()
- fun_l4_n683
-end
-
-def fun_l3_n117()
- fun_l4_n925
-end
-
-def fun_l3_n118()
- fun_l4_n630
-end
-
-def fun_l3_n119()
- fun_l4_n548
-end
-
-def fun_l3_n120()
- fun_l4_n767
-end
-
-def fun_l3_n121()
- fun_l4_n623
-end
-
-def fun_l3_n122()
- fun_l4_n0
-end
-
-def fun_l3_n123()
- fun_l4_n849
-end
-
-def fun_l3_n124()
- fun_l4_n643
-end
-
-def fun_l3_n125()
- fun_l4_n559
-end
-
-def fun_l3_n126()
- fun_l4_n533
-end
-
-def fun_l3_n127()
- fun_l4_n287
-end
-
-def fun_l3_n128()
- fun_l4_n146
-end
-
-def fun_l3_n129()
- fun_l4_n636
-end
-
-def fun_l3_n130()
- fun_l4_n914
-end
-
-def fun_l3_n131()
- fun_l4_n274
-end
-
-def fun_l3_n132()
- fun_l4_n60
-end
-
-def fun_l3_n133()
- fun_l4_n858
-end
-
-def fun_l3_n134()
- fun_l4_n334
-end
-
-def fun_l3_n135()
- fun_l4_n892
-end
-
-def fun_l3_n136()
- fun_l4_n81
-end
-
-def fun_l3_n137()
- fun_l4_n567
-end
-
-def fun_l3_n138()
- fun_l4_n456
-end
-
-def fun_l3_n139()
- fun_l4_n625
-end
-
-def fun_l3_n140()
- fun_l4_n690
-end
-
-def fun_l3_n141()
- fun_l4_n919
-end
-
-def fun_l3_n142()
- fun_l4_n504
-end
-
-def fun_l3_n143()
- fun_l4_n986
-end
-
-def fun_l3_n144()
- fun_l4_n99
-end
-
-def fun_l3_n145()
- fun_l4_n312
-end
-
-def fun_l3_n146()
- fun_l4_n36
-end
-
-def fun_l3_n147()
- fun_l4_n3
-end
-
-def fun_l3_n148()
- fun_l4_n328
-end
-
-def fun_l3_n149()
- fun_l4_n978
-end
-
-def fun_l3_n150()
- fun_l4_n474
-end
-
-def fun_l3_n151()
- fun_l4_n985
-end
-
-def fun_l3_n152()
- fun_l4_n809
-end
-
-def fun_l3_n153()
- fun_l4_n379
-end
-
-def fun_l3_n154()
- fun_l4_n589
-end
-
-def fun_l3_n155()
- fun_l4_n625
-end
-
-def fun_l3_n156()
- fun_l4_n937
-end
-
-def fun_l3_n157()
- fun_l4_n774
-end
-
-def fun_l3_n158()
- fun_l4_n465
-end
-
-def fun_l3_n159()
- fun_l4_n315
-end
-
-def fun_l3_n160()
- fun_l4_n733
-end
-
-def fun_l3_n161()
- fun_l4_n572
-end
-
-def fun_l3_n162()
- fun_l4_n794
-end
-
-def fun_l3_n163()
- fun_l4_n76
-end
-
-def fun_l3_n164()
- fun_l4_n550
-end
-
-def fun_l3_n165()
- fun_l4_n913
-end
-
-def fun_l3_n166()
- fun_l4_n553
-end
-
-def fun_l3_n167()
- fun_l4_n383
-end
-
-def fun_l3_n168()
- fun_l4_n118
-end
-
-def fun_l3_n169()
- fun_l4_n561
-end
-
-def fun_l3_n170()
- fun_l4_n517
-end
-
-def fun_l3_n171()
- fun_l4_n680
-end
-
-def fun_l3_n172()
- fun_l4_n466
-end
-
-def fun_l3_n173()
- fun_l4_n629
-end
-
-def fun_l3_n174()
- fun_l4_n469
-end
-
-def fun_l3_n175()
- fun_l4_n731
-end
-
-def fun_l3_n176()
- fun_l4_n579
-end
-
-def fun_l3_n177()
- fun_l4_n574
-end
-
-def fun_l3_n178()
- fun_l4_n936
-end
-
-def fun_l3_n179()
- fun_l4_n405
-end
-
-def fun_l3_n180()
- fun_l4_n667
-end
-
-def fun_l3_n181()
- fun_l4_n369
-end
-
-def fun_l3_n182()
- fun_l4_n852
-end
-
-def fun_l3_n183()
- fun_l4_n861
-end
-
-def fun_l3_n184()
- fun_l4_n425
-end
-
-def fun_l3_n185()
- fun_l4_n4
-end
-
-def fun_l3_n186()
- fun_l4_n28
-end
-
-def fun_l3_n187()
- fun_l4_n470
-end
-
-def fun_l3_n188()
- fun_l4_n568
-end
-
-def fun_l3_n189()
- fun_l4_n83
-end
-
-def fun_l3_n190()
- fun_l4_n981
-end
-
-def fun_l3_n191()
- fun_l4_n526
-end
-
-def fun_l3_n192()
- fun_l4_n496
-end
-
-def fun_l3_n193()
- fun_l4_n954
-end
-
-def fun_l3_n194()
- fun_l4_n340
-end
-
-def fun_l3_n195()
- fun_l4_n343
-end
-
-def fun_l3_n196()
- fun_l4_n964
-end
-
-def fun_l3_n197()
- fun_l4_n58
-end
-
-def fun_l3_n198()
- fun_l4_n317
-end
-
-def fun_l3_n199()
- fun_l4_n255
-end
-
-def fun_l3_n200()
- fun_l4_n546
-end
-
-def fun_l3_n201()
- fun_l4_n933
-end
-
-def fun_l3_n202()
- fun_l4_n387
-end
-
-def fun_l3_n203()
- fun_l4_n32
-end
-
-def fun_l3_n204()
- fun_l4_n514
-end
-
-def fun_l3_n205()
- fun_l4_n175
-end
-
-def fun_l3_n206()
- fun_l4_n813
-end
-
-def fun_l3_n207()
- fun_l4_n881
-end
-
-def fun_l3_n208()
- fun_l4_n52
-end
-
-def fun_l3_n209()
- fun_l4_n839
-end
-
-def fun_l3_n210()
- fun_l4_n919
-end
-
-def fun_l3_n211()
- fun_l4_n208
-end
-
-def fun_l3_n212()
- fun_l4_n111
-end
-
-def fun_l3_n213()
- fun_l4_n878
-end
-
-def fun_l3_n214()
- fun_l4_n110
-end
-
-def fun_l3_n215()
- fun_l4_n701
-end
-
-def fun_l3_n216()
- fun_l4_n769
-end
-
-def fun_l3_n217()
- fun_l4_n487
-end
-
-def fun_l3_n218()
- fun_l4_n940
-end
-
-def fun_l3_n219()
- fun_l4_n427
-end
-
-def fun_l3_n220()
- fun_l4_n731
-end
-
-def fun_l3_n221()
- fun_l4_n92
-end
-
-def fun_l3_n222()
- fun_l4_n246
-end
-
-def fun_l3_n223()
- fun_l4_n574
-end
-
-def fun_l3_n224()
- fun_l4_n297
-end
-
-def fun_l3_n225()
- fun_l4_n48
-end
-
-def fun_l3_n226()
- fun_l4_n433
-end
-
-def fun_l3_n227()
- fun_l4_n628
-end
-
-def fun_l3_n228()
- fun_l4_n426
-end
-
-def fun_l3_n229()
- fun_l4_n22
-end
-
-def fun_l3_n230()
- fun_l4_n878
-end
-
-def fun_l3_n231()
- fun_l4_n905
-end
-
-def fun_l3_n232()
- fun_l4_n222
-end
-
-def fun_l3_n233()
- fun_l4_n523
-end
-
-def fun_l3_n234()
- fun_l4_n9
-end
-
-def fun_l3_n235()
- fun_l4_n705
-end
-
-def fun_l3_n236()
- fun_l4_n811
-end
-
-def fun_l3_n237()
- fun_l4_n987
-end
-
-def fun_l3_n238()
- fun_l4_n915
-end
-
-def fun_l3_n239()
- fun_l4_n302
-end
-
-def fun_l3_n240()
- fun_l4_n766
-end
-
-def fun_l3_n241()
- fun_l4_n29
-end
-
-def fun_l3_n242()
- fun_l4_n154
-end
-
-def fun_l3_n243()
- fun_l4_n853
-end
-
-def fun_l3_n244()
- fun_l4_n619
-end
-
-def fun_l3_n245()
- fun_l4_n739
-end
-
-def fun_l3_n246()
- fun_l4_n814
-end
-
-def fun_l3_n247()
- fun_l4_n768
-end
-
-def fun_l3_n248()
- fun_l4_n2
-end
-
-def fun_l3_n249()
- fun_l4_n595
-end
-
-def fun_l3_n250()
- fun_l4_n606
-end
-
-def fun_l3_n251()
- fun_l4_n144
-end
-
-def fun_l3_n252()
- fun_l4_n550
-end
-
-def fun_l3_n253()
- fun_l4_n268
-end
-
-def fun_l3_n254()
- fun_l4_n320
-end
-
-def fun_l3_n255()
- fun_l4_n59
-end
-
-def fun_l3_n256()
- fun_l4_n586
-end
-
-def fun_l3_n257()
- fun_l4_n766
-end
-
-def fun_l3_n258()
- fun_l4_n96
-end
-
-def fun_l3_n259()
- fun_l4_n964
-end
-
-def fun_l3_n260()
- fun_l4_n163
-end
-
-def fun_l3_n261()
- fun_l4_n305
-end
-
-def fun_l3_n262()
- fun_l4_n155
-end
-
-def fun_l3_n263()
- fun_l4_n249
-end
-
-def fun_l3_n264()
- fun_l4_n887
-end
-
-def fun_l3_n265()
- fun_l4_n625
-end
-
-def fun_l3_n266()
- fun_l4_n241
-end
-
-def fun_l3_n267()
- fun_l4_n385
-end
-
-def fun_l3_n268()
- fun_l4_n287
-end
-
-def fun_l3_n269()
- fun_l4_n375
-end
-
-def fun_l3_n270()
- fun_l4_n13
-end
-
-def fun_l3_n271()
- fun_l4_n44
-end
-
-def fun_l3_n272()
- fun_l4_n259
-end
-
-def fun_l3_n273()
- fun_l4_n231
-end
-
-def fun_l3_n274()
- fun_l4_n692
-end
-
-def fun_l3_n275()
- fun_l4_n279
-end
-
-def fun_l3_n276()
- fun_l4_n353
-end
-
-def fun_l3_n277()
- fun_l4_n287
-end
-
-def fun_l3_n278()
- fun_l4_n254
-end
-
-def fun_l3_n279()
- fun_l4_n717
-end
-
-def fun_l3_n280()
- fun_l4_n635
-end
-
-def fun_l3_n281()
- fun_l4_n264
-end
-
-def fun_l3_n282()
- fun_l4_n390
-end
-
-def fun_l3_n283()
- fun_l4_n824
-end
-
-def fun_l3_n284()
- fun_l4_n919
-end
-
-def fun_l3_n285()
- fun_l4_n273
-end
-
-def fun_l3_n286()
- fun_l4_n566
-end
-
-def fun_l3_n287()
- fun_l4_n6
-end
-
-def fun_l3_n288()
- fun_l4_n28
-end
-
-def fun_l3_n289()
- fun_l4_n602
-end
-
-def fun_l3_n290()
- fun_l4_n209
-end
-
-def fun_l3_n291()
- fun_l4_n753
-end
-
-def fun_l3_n292()
- fun_l4_n914
-end
-
-def fun_l3_n293()
- fun_l4_n345
-end
-
-def fun_l3_n294()
- fun_l4_n616
-end
-
-def fun_l3_n295()
- fun_l4_n640
-end
-
-def fun_l3_n296()
- fun_l4_n47
-end
-
-def fun_l3_n297()
- fun_l4_n542
-end
-
-def fun_l3_n298()
- fun_l4_n379
-end
-
-def fun_l3_n299()
- fun_l4_n14
-end
-
-def fun_l3_n300()
- fun_l4_n126
-end
-
-def fun_l3_n301()
- fun_l4_n913
-end
-
-def fun_l3_n302()
- fun_l4_n933
-end
-
-def fun_l3_n303()
- fun_l4_n429
-end
-
-def fun_l3_n304()
- fun_l4_n175
-end
-
-def fun_l3_n305()
- fun_l4_n152
-end
-
-def fun_l3_n306()
- fun_l4_n556
-end
-
-def fun_l3_n307()
- fun_l4_n799
-end
-
-def fun_l3_n308()
- fun_l4_n865
-end
-
-def fun_l3_n309()
- fun_l4_n501
-end
-
-def fun_l3_n310()
- fun_l4_n148
-end
-
-def fun_l3_n311()
- fun_l4_n160
-end
-
-def fun_l3_n312()
- fun_l4_n333
-end
-
-def fun_l3_n313()
- fun_l4_n987
-end
-
-def fun_l3_n314()
- fun_l4_n449
-end
-
-def fun_l3_n315()
- fun_l4_n460
-end
-
-def fun_l3_n316()
- fun_l4_n866
-end
-
-def fun_l3_n317()
- fun_l4_n554
-end
-
-def fun_l3_n318()
- fun_l4_n497
-end
-
-def fun_l3_n319()
- fun_l4_n25
-end
-
-def fun_l3_n320()
- fun_l4_n483
-end
-
-def fun_l3_n321()
- fun_l4_n412
-end
-
-def fun_l3_n322()
- fun_l4_n594
-end
-
-def fun_l3_n323()
- fun_l4_n727
-end
-
-def fun_l3_n324()
- fun_l4_n209
-end
-
-def fun_l3_n325()
- fun_l4_n956
-end
-
-def fun_l3_n326()
- fun_l4_n127
-end
-
-def fun_l3_n327()
- fun_l4_n942
-end
-
-def fun_l3_n328()
- fun_l4_n984
-end
-
-def fun_l3_n329()
- fun_l4_n387
-end
-
-def fun_l3_n330()
- fun_l4_n834
-end
-
-def fun_l3_n331()
- fun_l4_n723
-end
-
-def fun_l3_n332()
- fun_l4_n576
-end
-
-def fun_l3_n333()
- fun_l4_n949
-end
-
-def fun_l3_n334()
- fun_l4_n792
-end
-
-def fun_l3_n335()
- fun_l4_n28
-end
-
-def fun_l3_n336()
- fun_l4_n805
-end
-
-def fun_l3_n337()
- fun_l4_n469
-end
-
-def fun_l3_n338()
- fun_l4_n651
-end
-
-def fun_l3_n339()
- fun_l4_n672
-end
-
-def fun_l3_n340()
- fun_l4_n835
-end
-
-def fun_l3_n341()
- fun_l4_n902
-end
-
-def fun_l3_n342()
- fun_l4_n9
-end
-
-def fun_l3_n343()
- fun_l4_n111
-end
-
-def fun_l3_n344()
- fun_l4_n234
-end
-
-def fun_l3_n345()
- fun_l4_n608
-end
-
-def fun_l3_n346()
- fun_l4_n577
-end
-
-def fun_l3_n347()
- fun_l4_n966
-end
-
-def fun_l3_n348()
- fun_l4_n777
-end
-
-def fun_l3_n349()
- fun_l4_n387
-end
-
-def fun_l3_n350()
- fun_l4_n27
-end
-
-def fun_l3_n351()
- fun_l4_n94
-end
-
-def fun_l3_n352()
- fun_l4_n12
-end
-
-def fun_l3_n353()
- fun_l4_n632
-end
-
-def fun_l3_n354()
- fun_l4_n314
-end
-
-def fun_l3_n355()
- fun_l4_n472
-end
-
-def fun_l3_n356()
- fun_l4_n737
-end
-
-def fun_l3_n357()
- fun_l4_n775
-end
-
-def fun_l3_n358()
- fun_l4_n255
-end
-
-def fun_l3_n359()
- fun_l4_n474
-end
-
-def fun_l3_n360()
- fun_l4_n668
-end
-
-def fun_l3_n361()
- fun_l4_n907
-end
-
-def fun_l3_n362()
- fun_l4_n608
-end
-
-def fun_l3_n363()
- fun_l4_n885
-end
-
-def fun_l3_n364()
- fun_l4_n63
-end
-
-def fun_l3_n365()
- fun_l4_n432
-end
-
-def fun_l3_n366()
- fun_l4_n748
-end
-
-def fun_l3_n367()
- fun_l4_n741
-end
-
-def fun_l3_n368()
- fun_l4_n799
-end
-
-def fun_l3_n369()
- fun_l4_n747
-end
-
-def fun_l3_n370()
- fun_l4_n939
-end
-
-def fun_l3_n371()
- fun_l4_n569
-end
-
-def fun_l3_n372()
- fun_l4_n267
-end
-
-def fun_l3_n373()
- fun_l4_n640
-end
-
-def fun_l3_n374()
- fun_l4_n647
-end
-
-def fun_l3_n375()
- fun_l4_n658
-end
-
-def fun_l3_n376()
- fun_l4_n346
-end
-
-def fun_l3_n377()
- fun_l4_n781
-end
-
-def fun_l3_n378()
- fun_l4_n820
-end
-
-def fun_l3_n379()
- fun_l4_n11
-end
-
-def fun_l3_n380()
- fun_l4_n238
-end
-
-def fun_l3_n381()
- fun_l4_n78
-end
-
-def fun_l3_n382()
- fun_l4_n497
-end
-
-def fun_l3_n383()
- fun_l4_n815
-end
-
-def fun_l3_n384()
- fun_l4_n876
-end
-
-def fun_l3_n385()
- fun_l4_n392
-end
-
-def fun_l3_n386()
- fun_l4_n228
-end
-
-def fun_l3_n387()
- fun_l4_n230
-end
-
-def fun_l3_n388()
- fun_l4_n216
-end
-
-def fun_l3_n389()
- fun_l4_n661
-end
-
-def fun_l3_n390()
- fun_l4_n831
-end
-
-def fun_l3_n391()
- fun_l4_n588
-end
-
-def fun_l3_n392()
- fun_l4_n377
-end
-
-def fun_l3_n393()
- fun_l4_n245
-end
-
-def fun_l3_n394()
- fun_l4_n546
-end
-
-def fun_l3_n395()
- fun_l4_n48
-end
-
-def fun_l3_n396()
- fun_l4_n109
-end
-
-def fun_l3_n397()
- fun_l4_n958
-end
-
-def fun_l3_n398()
- fun_l4_n779
-end
-
-def fun_l3_n399()
- fun_l4_n942
-end
-
-def fun_l3_n400()
- fun_l4_n436
-end
-
-def fun_l3_n401()
- fun_l4_n321
-end
-
-def fun_l3_n402()
- fun_l4_n789
-end
-
-def fun_l3_n403()
- fun_l4_n96
-end
-
-def fun_l3_n404()
- fun_l4_n101
-end
-
-def fun_l3_n405()
- fun_l4_n373
-end
-
-def fun_l3_n406()
- fun_l4_n143
-end
-
-def fun_l3_n407()
- fun_l4_n869
-end
-
-def fun_l3_n408()
- fun_l4_n836
-end
-
-def fun_l3_n409()
- fun_l4_n278
-end
-
-def fun_l3_n410()
- fun_l4_n819
-end
-
-def fun_l3_n411()
- fun_l4_n716
-end
-
-def fun_l3_n412()
- fun_l4_n729
-end
-
-def fun_l3_n413()
- fun_l4_n565
-end
-
-def fun_l3_n414()
- fun_l4_n258
-end
-
-def fun_l3_n415()
- fun_l4_n187
-end
-
-def fun_l3_n416()
- fun_l4_n425
-end
-
-def fun_l3_n417()
- fun_l4_n239
-end
-
-def fun_l3_n418()
- fun_l4_n352
-end
-
-def fun_l3_n419()
- fun_l4_n747
-end
-
-def fun_l3_n420()
- fun_l4_n103
-end
-
-def fun_l3_n421()
- fun_l4_n276
-end
-
-def fun_l3_n422()
- fun_l4_n348
-end
-
-def fun_l3_n423()
- fun_l4_n737
-end
-
-def fun_l3_n424()
- fun_l4_n615
-end
-
-def fun_l3_n425()
- fun_l4_n305
-end
-
-def fun_l3_n426()
- fun_l4_n474
-end
-
-def fun_l3_n427()
- fun_l4_n304
-end
-
-def fun_l3_n428()
- fun_l4_n607
-end
-
-def fun_l3_n429()
- fun_l4_n202
-end
-
-def fun_l3_n430()
- fun_l4_n370
-end
-
-def fun_l3_n431()
- fun_l4_n580
-end
-
-def fun_l3_n432()
- fun_l4_n752
-end
-
-def fun_l3_n433()
- fun_l4_n720
-end
-
-def fun_l3_n434()
- fun_l4_n916
-end
-
-def fun_l3_n435()
- fun_l4_n424
-end
-
-def fun_l3_n436()
- fun_l4_n922
-end
-
-def fun_l3_n437()
- fun_l4_n885
-end
-
-def fun_l3_n438()
- fun_l4_n849
-end
-
-def fun_l3_n439()
- fun_l4_n595
-end
-
-def fun_l3_n440()
- fun_l4_n753
-end
-
-def fun_l3_n441()
- fun_l4_n871
-end
-
-def fun_l3_n442()
- fun_l4_n979
-end
-
-def fun_l3_n443()
- fun_l4_n217
-end
-
-def fun_l3_n444()
- fun_l4_n249
-end
-
-def fun_l3_n445()
- fun_l4_n181
-end
-
-def fun_l3_n446()
- fun_l4_n283
-end
-
-def fun_l3_n447()
- fun_l4_n495
-end
-
-def fun_l3_n448()
- fun_l4_n701
-end
-
-def fun_l3_n449()
- fun_l4_n897
-end
-
-def fun_l3_n450()
- fun_l4_n479
-end
-
-def fun_l3_n451()
- fun_l4_n410
-end
-
-def fun_l3_n452()
- fun_l4_n842
-end
-
-def fun_l3_n453()
- fun_l4_n700
-end
-
-def fun_l3_n454()
- fun_l4_n855
-end
-
-def fun_l3_n455()
- fun_l4_n743
-end
-
-def fun_l3_n456()
- fun_l4_n842
-end
-
-def fun_l3_n457()
- fun_l4_n575
-end
-
-def fun_l3_n458()
- fun_l4_n48
-end
-
-def fun_l3_n459()
- fun_l4_n650
-end
-
-def fun_l3_n460()
- fun_l4_n714
-end
-
-def fun_l3_n461()
- fun_l4_n409
-end
-
-def fun_l3_n462()
- fun_l4_n225
-end
-
-def fun_l3_n463()
- fun_l4_n419
-end
-
-def fun_l3_n464()
- fun_l4_n563
-end
-
-def fun_l3_n465()
- fun_l4_n416
-end
-
-def fun_l3_n466()
- fun_l4_n738
-end
-
-def fun_l3_n467()
- fun_l4_n955
-end
-
-def fun_l3_n468()
- fun_l4_n406
-end
-
-def fun_l3_n469()
- fun_l4_n157
-end
-
-def fun_l3_n470()
- fun_l4_n732
-end
-
-def fun_l3_n471()
- fun_l4_n567
-end
-
-def fun_l3_n472()
- fun_l4_n895
-end
-
-def fun_l3_n473()
- fun_l4_n377
-end
-
-def fun_l3_n474()
- fun_l4_n105
-end
-
-def fun_l3_n475()
- fun_l4_n640
-end
-
-def fun_l3_n476()
- fun_l4_n617
-end
-
-def fun_l3_n477()
- fun_l4_n109
-end
-
-def fun_l3_n478()
- fun_l4_n358
-end
-
-def fun_l3_n479()
- fun_l4_n522
-end
-
-def fun_l3_n480()
- fun_l4_n550
-end
-
-def fun_l3_n481()
- fun_l4_n648
-end
-
-def fun_l3_n482()
- fun_l4_n533
-end
-
-def fun_l3_n483()
- fun_l4_n782
-end
-
-def fun_l3_n484()
- fun_l4_n369
-end
-
-def fun_l3_n485()
- fun_l4_n644
-end
-
-def fun_l3_n486()
- fun_l4_n989
-end
-
-def fun_l3_n487()
- fun_l4_n434
-end
-
-def fun_l3_n488()
- fun_l4_n914
-end
-
-def fun_l3_n489()
- fun_l4_n2
-end
-
-def fun_l3_n490()
- fun_l4_n494
-end
-
-def fun_l3_n491()
- fun_l4_n479
-end
-
-def fun_l3_n492()
- fun_l4_n733
-end
-
-def fun_l3_n493()
- fun_l4_n394
-end
-
-def fun_l3_n494()
- fun_l4_n39
-end
-
-def fun_l3_n495()
- fun_l4_n866
-end
-
-def fun_l3_n496()
- fun_l4_n151
-end
-
-def fun_l3_n497()
- fun_l4_n155
-end
-
-def fun_l3_n498()
- fun_l4_n417
-end
-
-def fun_l3_n499()
- fun_l4_n933
-end
-
-def fun_l3_n500()
- fun_l4_n44
-end
-
-def fun_l3_n501()
- fun_l4_n738
-end
-
-def fun_l3_n502()
- fun_l4_n859
-end
-
-def fun_l3_n503()
- fun_l4_n124
-end
-
-def fun_l3_n504()
- fun_l4_n344
-end
-
-def fun_l3_n505()
- fun_l4_n921
-end
-
-def fun_l3_n506()
- fun_l4_n168
-end
-
-def fun_l3_n507()
- fun_l4_n135
-end
-
-def fun_l3_n508()
- fun_l4_n730
-end
-
-def fun_l3_n509()
- fun_l4_n671
-end
-
-def fun_l3_n510()
- fun_l4_n899
-end
-
-def fun_l3_n511()
- fun_l4_n630
-end
-
-def fun_l3_n512()
- fun_l4_n228
-end
-
-def fun_l3_n513()
- fun_l4_n429
-end
-
-def fun_l3_n514()
- fun_l4_n723
-end
-
-def fun_l3_n515()
- fun_l4_n185
-end
-
-def fun_l3_n516()
- fun_l4_n161
-end
-
-def fun_l3_n517()
- fun_l4_n491
-end
-
-def fun_l3_n518()
- fun_l4_n643
-end
-
-def fun_l3_n519()
- fun_l4_n3
-end
-
-def fun_l3_n520()
- fun_l4_n399
-end
-
-def fun_l3_n521()
- fun_l4_n927
-end
-
-def fun_l3_n522()
- fun_l4_n501
-end
-
-def fun_l3_n523()
- fun_l4_n729
-end
-
-def fun_l3_n524()
- fun_l4_n628
-end
-
-def fun_l3_n525()
- fun_l4_n469
-end
-
-def fun_l3_n526()
- fun_l4_n754
-end
-
-def fun_l3_n527()
- fun_l4_n448
-end
-
-def fun_l3_n528()
- fun_l4_n562
-end
-
-def fun_l3_n529()
- fun_l4_n779
-end
-
-def fun_l3_n530()
- fun_l4_n452
-end
-
-def fun_l3_n531()
- fun_l4_n756
-end
-
-def fun_l3_n532()
- fun_l4_n107
-end
-
-def fun_l3_n533()
- fun_l4_n311
-end
-
-def fun_l3_n534()
- fun_l4_n169
-end
-
-def fun_l3_n535()
- fun_l4_n956
-end
-
-def fun_l3_n536()
- fun_l4_n754
-end
-
-def fun_l3_n537()
- fun_l4_n675
-end
-
-def fun_l3_n538()
- fun_l4_n636
-end
-
-def fun_l3_n539()
- fun_l4_n691
-end
-
-def fun_l3_n540()
- fun_l4_n867
-end
-
-def fun_l3_n541()
- fun_l4_n179
-end
-
-def fun_l3_n542()
- fun_l4_n153
-end
-
-def fun_l3_n543()
- fun_l4_n133
-end
-
-def fun_l3_n544()
- fun_l4_n592
-end
-
-def fun_l3_n545()
- fun_l4_n71
-end
-
-def fun_l3_n546()
- fun_l4_n87
-end
-
-def fun_l3_n547()
- fun_l4_n740
-end
-
-def fun_l3_n548()
- fun_l4_n436
-end
-
-def fun_l3_n549()
- fun_l4_n59
-end
-
-def fun_l3_n550()
- fun_l4_n252
-end
-
-def fun_l3_n551()
- fun_l4_n596
-end
-
-def fun_l3_n552()
- fun_l4_n851
-end
-
-def fun_l3_n553()
- fun_l4_n708
-end
-
-def fun_l3_n554()
- fun_l4_n210
-end
-
-def fun_l3_n555()
- fun_l4_n931
-end
-
-def fun_l3_n556()
- fun_l4_n293
-end
-
-def fun_l3_n557()
- fun_l4_n413
-end
-
-def fun_l3_n558()
- fun_l4_n547
-end
-
-def fun_l3_n559()
- fun_l4_n338
-end
-
-def fun_l3_n560()
- fun_l4_n194
-end
-
-def fun_l3_n561()
- fun_l4_n937
-end
-
-def fun_l3_n562()
- fun_l4_n19
-end
-
-def fun_l3_n563()
- fun_l4_n651
-end
-
-def fun_l3_n564()
- fun_l4_n364
-end
-
-def fun_l3_n565()
- fun_l4_n295
-end
-
-def fun_l3_n566()
- fun_l4_n946
-end
-
-def fun_l3_n567()
- fun_l4_n712
-end
-
-def fun_l3_n568()
- fun_l4_n243
-end
-
-def fun_l3_n569()
- fun_l4_n563
-end
-
-def fun_l3_n570()
- fun_l4_n651
-end
-
-def fun_l3_n571()
- fun_l4_n645
-end
-
-def fun_l3_n572()
- fun_l4_n46
-end
-
-def fun_l3_n573()
- fun_l4_n971
-end
-
-def fun_l3_n574()
- fun_l4_n769
-end
-
-def fun_l3_n575()
- fun_l4_n315
-end
-
-def fun_l3_n576()
- fun_l4_n657
-end
-
-def fun_l3_n577()
- fun_l4_n607
-end
-
-def fun_l3_n578()
- fun_l4_n352
-end
-
-def fun_l3_n579()
- fun_l4_n346
-end
-
-def fun_l3_n580()
- fun_l4_n424
-end
-
-def fun_l3_n581()
- fun_l4_n703
-end
-
-def fun_l3_n582()
- fun_l4_n872
-end
-
-def fun_l3_n583()
- fun_l4_n828
-end
-
-def fun_l3_n584()
- fun_l4_n283
-end
-
-def fun_l3_n585()
- fun_l4_n557
-end
-
-def fun_l3_n586()
- fun_l4_n942
-end
-
-def fun_l3_n587()
- fun_l4_n121
-end
-
-def fun_l3_n588()
- fun_l4_n866
-end
-
-def fun_l3_n589()
- fun_l4_n539
-end
-
-def fun_l3_n590()
- fun_l4_n240
-end
-
-def fun_l3_n591()
- fun_l4_n438
-end
-
-def fun_l3_n592()
- fun_l4_n652
-end
-
-def fun_l3_n593()
- fun_l4_n540
-end
-
-def fun_l3_n594()
- fun_l4_n122
-end
-
-def fun_l3_n595()
- fun_l4_n877
-end
-
-def fun_l3_n596()
- fun_l4_n30
-end
-
-def fun_l3_n597()
- fun_l4_n465
-end
-
-def fun_l3_n598()
- fun_l4_n964
-end
-
-def fun_l3_n599()
- fun_l4_n123
-end
-
-def fun_l3_n600()
- fun_l4_n365
-end
-
-def fun_l3_n601()
- fun_l4_n531
-end
-
-def fun_l3_n602()
- fun_l4_n774
-end
-
-def fun_l3_n603()
- fun_l4_n961
-end
-
-def fun_l3_n604()
- fun_l4_n360
-end
-
-def fun_l3_n605()
- fun_l4_n640
-end
-
-def fun_l3_n606()
- fun_l4_n785
-end
-
-def fun_l3_n607()
- fun_l4_n433
-end
-
-def fun_l3_n608()
- fun_l4_n528
-end
-
-def fun_l3_n609()
- fun_l4_n125
-end
-
-def fun_l3_n610()
- fun_l4_n179
-end
-
-def fun_l3_n611()
- fun_l4_n946
-end
-
-def fun_l3_n612()
- fun_l4_n899
-end
-
-def fun_l3_n613()
- fun_l4_n917
-end
-
-def fun_l3_n614()
- fun_l4_n444
-end
-
-def fun_l3_n615()
- fun_l4_n823
-end
-
-def fun_l3_n616()
- fun_l4_n221
-end
-
-def fun_l3_n617()
- fun_l4_n483
-end
-
-def fun_l3_n618()
- fun_l4_n112
-end
-
-def fun_l3_n619()
- fun_l4_n814
-end
-
-def fun_l3_n620()
- fun_l4_n648
-end
-
-def fun_l3_n621()
- fun_l4_n823
-end
-
-def fun_l3_n622()
- fun_l4_n457
-end
-
-def fun_l3_n623()
- fun_l4_n92
-end
-
-def fun_l3_n624()
- fun_l4_n8
-end
-
-def fun_l3_n625()
- fun_l4_n297
-end
-
-def fun_l3_n626()
- fun_l4_n517
-end
-
-def fun_l3_n627()
- fun_l4_n159
-end
-
-def fun_l3_n628()
- fun_l4_n79
-end
-
-def fun_l3_n629()
- fun_l4_n791
-end
-
-def fun_l3_n630()
- fun_l4_n692
-end
-
-def fun_l3_n631()
- fun_l4_n554
-end
-
-def fun_l3_n632()
- fun_l4_n872
-end
-
-def fun_l3_n633()
- fun_l4_n871
-end
-
-def fun_l3_n634()
- fun_l4_n524
-end
-
-def fun_l3_n635()
- fun_l4_n588
-end
-
-def fun_l3_n636()
- fun_l4_n596
-end
-
-def fun_l3_n637()
- fun_l4_n936
-end
-
-def fun_l3_n638()
- fun_l4_n478
-end
-
-def fun_l3_n639()
- fun_l4_n893
-end
-
-def fun_l3_n640()
- fun_l4_n348
-end
-
-def fun_l3_n641()
- fun_l4_n806
-end
-
-def fun_l3_n642()
- fun_l4_n522
-end
-
-def fun_l3_n643()
- fun_l4_n249
-end
-
-def fun_l3_n644()
- fun_l4_n208
-end
-
-def fun_l3_n645()
- fun_l4_n989
-end
-
-def fun_l3_n646()
- fun_l4_n194
-end
-
-def fun_l3_n647()
- fun_l4_n157
-end
-
-def fun_l3_n648()
- fun_l4_n395
-end
-
-def fun_l3_n649()
- fun_l4_n191
-end
-
-def fun_l3_n650()
- fun_l4_n292
-end
-
-def fun_l3_n651()
- fun_l4_n640
-end
-
-def fun_l3_n652()
- fun_l4_n818
-end
-
-def fun_l3_n653()
- fun_l4_n481
-end
-
-def fun_l3_n654()
- fun_l4_n304
-end
-
-def fun_l3_n655()
- fun_l4_n102
-end
-
-def fun_l3_n656()
- fun_l4_n51
-end
-
-def fun_l3_n657()
- fun_l4_n110
-end
-
-def fun_l3_n658()
- fun_l4_n226
-end
-
-def fun_l3_n659()
- fun_l4_n48
-end
-
-def fun_l3_n660()
- fun_l4_n112
-end
-
-def fun_l3_n661()
- fun_l4_n677
-end
-
-def fun_l3_n662()
- fun_l4_n168
-end
-
-def fun_l3_n663()
- fun_l4_n15
-end
-
-def fun_l3_n664()
- fun_l4_n311
-end
-
-def fun_l3_n665()
- fun_l4_n935
-end
-
-def fun_l3_n666()
- fun_l4_n861
-end
-
-def fun_l3_n667()
- fun_l4_n169
-end
-
-def fun_l3_n668()
- fun_l4_n395
-end
-
-def fun_l3_n669()
- fun_l4_n371
-end
-
-def fun_l3_n670()
- fun_l4_n625
-end
-
-def fun_l3_n671()
- fun_l4_n183
-end
-
-def fun_l3_n672()
- fun_l4_n299
-end
-
-def fun_l3_n673()
- fun_l4_n104
-end
-
-def fun_l3_n674()
- fun_l4_n413
-end
-
-def fun_l3_n675()
- fun_l4_n957
-end
-
-def fun_l3_n676()
- fun_l4_n878
-end
-
-def fun_l3_n677()
- fun_l4_n222
-end
-
-def fun_l3_n678()
- fun_l4_n832
-end
-
-def fun_l3_n679()
- fun_l4_n406
-end
-
-def fun_l3_n680()
- fun_l4_n779
-end
-
-def fun_l3_n681()
- fun_l4_n874
-end
-
-def fun_l3_n682()
- fun_l4_n328
-end
-
-def fun_l3_n683()
- fun_l4_n412
-end
-
-def fun_l3_n684()
- fun_l4_n46
-end
-
-def fun_l3_n685()
- fun_l4_n799
-end
-
-def fun_l3_n686()
- fun_l4_n751
-end
-
-def fun_l3_n687()
- fun_l4_n32
-end
-
-def fun_l3_n688()
- fun_l4_n237
-end
-
-def fun_l3_n689()
- fun_l4_n770
-end
-
-def fun_l3_n690()
- fun_l4_n120
-end
-
-def fun_l3_n691()
- fun_l4_n977
-end
-
-def fun_l3_n692()
- fun_l4_n35
-end
-
-def fun_l3_n693()
- fun_l4_n398
-end
-
-def fun_l3_n694()
- fun_l4_n551
-end
-
-def fun_l3_n695()
- fun_l4_n122
-end
-
-def fun_l3_n696()
- fun_l4_n268
-end
-
-def fun_l3_n697()
- fun_l4_n628
-end
-
-def fun_l3_n698()
- fun_l4_n611
-end
-
-def fun_l3_n699()
- fun_l4_n382
-end
-
-def fun_l3_n700()
- fun_l4_n819
-end
-
-def fun_l3_n701()
- fun_l4_n124
-end
-
-def fun_l3_n702()
- fun_l4_n529
-end
-
-def fun_l3_n703()
- fun_l4_n838
-end
-
-def fun_l3_n704()
- fun_l4_n181
-end
-
-def fun_l3_n705()
- fun_l4_n123
-end
-
-def fun_l3_n706()
- fun_l4_n646
-end
-
-def fun_l3_n707()
- fun_l4_n193
-end
-
-def fun_l3_n708()
- fun_l4_n233
-end
-
-def fun_l3_n709()
- fun_l4_n621
-end
-
-def fun_l3_n710()
- fun_l4_n772
-end
-
-def fun_l3_n711()
- fun_l4_n461
-end
-
-def fun_l3_n712()
- fun_l4_n673
-end
-
-def fun_l3_n713()
- fun_l4_n101
-end
-
-def fun_l3_n714()
- fun_l4_n467
-end
-
-def fun_l3_n715()
- fun_l4_n211
-end
-
-def fun_l3_n716()
- fun_l4_n554
-end
-
-def fun_l3_n717()
- fun_l4_n276
-end
-
-def fun_l3_n718()
- fun_l4_n655
-end
-
-def fun_l3_n719()
- fun_l4_n425
-end
-
-def fun_l3_n720()
- fun_l4_n241
-end
-
-def fun_l3_n721()
- fun_l4_n904
-end
-
-def fun_l3_n722()
- fun_l4_n839
-end
-
-def fun_l3_n723()
- fun_l4_n991
-end
-
-def fun_l3_n724()
- fun_l4_n556
-end
-
-def fun_l3_n725()
- fun_l4_n86
-end
-
-def fun_l3_n726()
- fun_l4_n953
-end
-
-def fun_l3_n727()
- fun_l4_n18
-end
-
-def fun_l3_n728()
- fun_l4_n374
-end
-
-def fun_l3_n729()
- fun_l4_n712
-end
-
-def fun_l3_n730()
- fun_l4_n228
-end
-
-def fun_l3_n731()
- fun_l4_n830
-end
-
-def fun_l3_n732()
- fun_l4_n49
-end
-
-def fun_l3_n733()
- fun_l4_n987
-end
-
-def fun_l3_n734()
- fun_l4_n815
-end
-
-def fun_l3_n735()
- fun_l4_n386
-end
-
-def fun_l3_n736()
- fun_l4_n843
-end
-
-def fun_l3_n737()
- fun_l4_n958
-end
-
-def fun_l3_n738()
- fun_l4_n317
-end
-
-def fun_l3_n739()
- fun_l4_n361
-end
-
-def fun_l3_n740()
- fun_l4_n392
-end
-
-def fun_l3_n741()
- fun_l4_n888
-end
-
-def fun_l3_n742()
- fun_l4_n186
-end
-
-def fun_l3_n743()
- fun_l4_n493
-end
-
-def fun_l3_n744()
- fun_l4_n302
-end
-
-def fun_l3_n745()
- fun_l4_n690
-end
-
-def fun_l3_n746()
- fun_l4_n601
-end
-
-def fun_l3_n747()
- fun_l4_n975
-end
-
-def fun_l3_n748()
- fun_l4_n543
-end
-
-def fun_l3_n749()
- fun_l4_n8
-end
-
-def fun_l3_n750()
- fun_l4_n905
-end
-
-def fun_l3_n751()
- fun_l4_n964
-end
-
-def fun_l3_n752()
- fun_l4_n739
-end
-
-def fun_l3_n753()
- fun_l4_n24
-end
-
-def fun_l3_n754()
- fun_l4_n806
-end
-
-def fun_l3_n755()
- fun_l4_n704
-end
-
-def fun_l3_n756()
- fun_l4_n579
-end
-
-def fun_l3_n757()
- fun_l4_n264
-end
-
-def fun_l3_n758()
- fun_l4_n357
-end
-
-def fun_l3_n759()
- fun_l4_n333
-end
-
-def fun_l3_n760()
- fun_l4_n309
-end
-
-def fun_l3_n761()
- fun_l4_n419
-end
-
-def fun_l3_n762()
- fun_l4_n347
-end
-
-def fun_l3_n763()
- fun_l4_n132
-end
-
-def fun_l3_n764()
- fun_l4_n45
-end
-
-def fun_l3_n765()
- fun_l4_n740
-end
-
-def fun_l3_n766()
- fun_l4_n332
-end
-
-def fun_l3_n767()
- fun_l4_n600
-end
-
-def fun_l3_n768()
- fun_l4_n343
-end
-
-def fun_l3_n769()
- fun_l4_n872
-end
-
-def fun_l3_n770()
- fun_l4_n326
-end
-
-def fun_l3_n771()
- fun_l4_n862
-end
-
-def fun_l3_n772()
- fun_l4_n800
-end
-
-def fun_l3_n773()
- fun_l4_n616
-end
-
-def fun_l3_n774()
- fun_l4_n392
-end
-
-def fun_l3_n775()
- fun_l4_n252
-end
-
-def fun_l3_n776()
- fun_l4_n289
-end
-
-def fun_l3_n777()
- fun_l4_n789
-end
-
-def fun_l3_n778()
- fun_l4_n370
-end
-
-def fun_l3_n779()
- fun_l4_n969
-end
-
-def fun_l3_n780()
- fun_l4_n444
-end
-
-def fun_l3_n781()
- fun_l4_n671
-end
-
-def fun_l3_n782()
- fun_l4_n301
-end
-
-def fun_l3_n783()
- fun_l4_n418
-end
-
-def fun_l3_n784()
- fun_l4_n491
-end
-
-def fun_l3_n785()
- fun_l4_n746
-end
-
-def fun_l3_n786()
- fun_l4_n212
-end
-
-def fun_l3_n787()
- fun_l4_n856
-end
-
-def fun_l3_n788()
- fun_l4_n155
-end
-
-def fun_l3_n789()
- fun_l4_n685
-end
-
-def fun_l3_n790()
- fun_l4_n879
-end
-
-def fun_l3_n791()
- fun_l4_n363
-end
-
-def fun_l3_n792()
- fun_l4_n231
-end
-
-def fun_l3_n793()
- fun_l4_n727
-end
-
-def fun_l3_n794()
- fun_l4_n355
-end
-
-def fun_l3_n795()
- fun_l4_n671
-end
-
-def fun_l3_n796()
- fun_l4_n20
-end
-
-def fun_l3_n797()
- fun_l4_n523
-end
-
-def fun_l3_n798()
- fun_l4_n26
-end
-
-def fun_l3_n799()
- fun_l4_n785
-end
-
-def fun_l3_n800()
- fun_l4_n458
-end
-
-def fun_l3_n801()
- fun_l4_n160
-end
-
-def fun_l3_n802()
- fun_l4_n543
-end
-
-def fun_l3_n803()
- fun_l4_n292
-end
-
-def fun_l3_n804()
- fun_l4_n64
-end
-
-def fun_l3_n805()
- fun_l4_n851
-end
-
-def fun_l3_n806()
- fun_l4_n369
-end
-
-def fun_l3_n807()
- fun_l4_n827
-end
-
-def fun_l3_n808()
- fun_l4_n420
-end
-
-def fun_l3_n809()
- fun_l4_n98
-end
-
-def fun_l3_n810()
- fun_l4_n508
-end
-
-def fun_l3_n811()
- fun_l4_n366
-end
-
-def fun_l3_n812()
- fun_l4_n795
-end
-
-def fun_l3_n813()
- fun_l4_n345
-end
-
-def fun_l3_n814()
- fun_l4_n505
-end
-
-def fun_l3_n815()
- fun_l4_n302
-end
-
-def fun_l3_n816()
- fun_l4_n561
-end
-
-def fun_l3_n817()
- fun_l4_n781
-end
-
-def fun_l3_n818()
- fun_l4_n599
-end
-
-def fun_l3_n819()
- fun_l4_n967
-end
-
-def fun_l3_n820()
- fun_l4_n691
-end
-
-def fun_l3_n821()
- fun_l4_n563
-end
-
-def fun_l3_n822()
- fun_l4_n769
-end
-
-def fun_l3_n823()
- fun_l4_n531
-end
-
-def fun_l3_n824()
- fun_l4_n957
-end
-
-def fun_l3_n825()
- fun_l4_n395
-end
-
-def fun_l3_n826()
- fun_l4_n92
-end
-
-def fun_l3_n827()
- fun_l4_n781
-end
-
-def fun_l3_n828()
- fun_l4_n758
-end
-
-def fun_l3_n829()
- fun_l4_n648
-end
-
-def fun_l3_n830()
- fun_l4_n799
-end
-
-def fun_l3_n831()
- fun_l4_n922
-end
-
-def fun_l3_n832()
- fun_l4_n808
-end
-
-def fun_l3_n833()
- fun_l4_n180
-end
-
-def fun_l3_n834()
- fun_l4_n126
-end
-
-def fun_l3_n835()
- fun_l4_n261
-end
-
-def fun_l3_n836()
- fun_l4_n470
-end
-
-def fun_l3_n837()
- fun_l4_n441
-end
-
-def fun_l3_n838()
- fun_l4_n505
-end
-
-def fun_l3_n839()
- fun_l4_n490
-end
-
-def fun_l3_n840()
- fun_l4_n663
-end
-
-def fun_l3_n841()
- fun_l4_n256
-end
-
-def fun_l3_n842()
- fun_l4_n797
-end
-
-def fun_l3_n843()
- fun_l4_n836
-end
-
-def fun_l3_n844()
- fun_l4_n868
-end
-
-def fun_l3_n845()
- fun_l4_n927
-end
-
-def fun_l3_n846()
- fun_l4_n746
-end
-
-def fun_l3_n847()
- fun_l4_n143
-end
-
-def fun_l3_n848()
- fun_l4_n90
-end
-
-def fun_l3_n849()
- fun_l4_n63
-end
-
-def fun_l3_n850()
- fun_l4_n629
-end
-
-def fun_l3_n851()
- fun_l4_n66
-end
-
-def fun_l3_n852()
- fun_l4_n192
-end
-
-def fun_l3_n853()
- fun_l4_n780
-end
-
-def fun_l3_n854()
- fun_l4_n744
-end
-
-def fun_l3_n855()
- fun_l4_n989
-end
-
-def fun_l3_n856()
- fun_l4_n609
-end
-
-def fun_l3_n857()
- fun_l4_n534
-end
-
-def fun_l3_n858()
- fun_l4_n961
-end
-
-def fun_l3_n859()
- fun_l4_n605
-end
-
-def fun_l3_n860()
- fun_l4_n675
-end
-
-def fun_l3_n861()
- fun_l4_n520
-end
-
-def fun_l3_n862()
- fun_l4_n656
-end
-
-def fun_l3_n863()
- fun_l4_n917
-end
-
-def fun_l3_n864()
- fun_l4_n291
-end
-
-def fun_l3_n865()
- fun_l4_n343
-end
-
-def fun_l3_n866()
- fun_l4_n704
-end
-
-def fun_l3_n867()
- fun_l4_n368
-end
-
-def fun_l3_n868()
- fun_l4_n678
-end
-
-def fun_l3_n869()
- fun_l4_n788
-end
-
-def fun_l3_n870()
- fun_l4_n458
-end
-
-def fun_l3_n871()
- fun_l4_n882
-end
-
-def fun_l3_n872()
- fun_l4_n830
-end
-
-def fun_l3_n873()
- fun_l4_n434
-end
-
-def fun_l3_n874()
- fun_l4_n92
-end
-
-def fun_l3_n875()
- fun_l4_n633
-end
-
-def fun_l3_n876()
- fun_l4_n243
-end
-
-def fun_l3_n877()
- fun_l4_n641
-end
-
-def fun_l3_n878()
- fun_l4_n114
-end
-
-def fun_l3_n879()
- fun_l4_n696
-end
-
-def fun_l3_n880()
- fun_l4_n354
-end
-
-def fun_l3_n881()
- fun_l4_n644
-end
-
-def fun_l3_n882()
- fun_l4_n771
-end
-
-def fun_l3_n883()
- fun_l4_n196
-end
-
-def fun_l3_n884()
- fun_l4_n202
-end
-
-def fun_l3_n885()
- fun_l4_n322
-end
-
-def fun_l3_n886()
- fun_l4_n125
-end
-
-def fun_l3_n887()
- fun_l4_n760
-end
-
-def fun_l3_n888()
- fun_l4_n69
-end
-
-def fun_l3_n889()
- fun_l4_n101
-end
-
-def fun_l3_n890()
- fun_l4_n108
-end
-
-def fun_l3_n891()
- fun_l4_n929
-end
-
-def fun_l3_n892()
- fun_l4_n766
-end
-
-def fun_l3_n893()
- fun_l4_n811
-end
-
-def fun_l3_n894()
- fun_l4_n169
-end
-
-def fun_l3_n895()
- fun_l4_n613
-end
-
-def fun_l3_n896()
- fun_l4_n145
-end
-
-def fun_l3_n897()
- fun_l4_n780
-end
-
-def fun_l3_n898()
- fun_l4_n972
-end
-
-def fun_l3_n899()
- fun_l4_n508
-end
-
-def fun_l3_n900()
- fun_l4_n468
-end
-
-def fun_l3_n901()
- fun_l4_n968
-end
-
-def fun_l3_n902()
- fun_l4_n714
-end
-
-def fun_l3_n903()
- fun_l4_n817
-end
-
-def fun_l3_n904()
- fun_l4_n111
-end
-
-def fun_l3_n905()
- fun_l4_n115
-end
-
-def fun_l3_n906()
- fun_l4_n593
-end
-
-def fun_l3_n907()
- fun_l4_n961
-end
-
-def fun_l3_n908()
- fun_l4_n362
-end
-
-def fun_l3_n909()
- fun_l4_n251
-end
-
-def fun_l3_n910()
- fun_l4_n532
-end
-
-def fun_l3_n911()
- fun_l4_n252
-end
-
-def fun_l3_n912()
- fun_l4_n751
-end
-
-def fun_l3_n913()
- fun_l4_n962
-end
-
-def fun_l3_n914()
- fun_l4_n151
-end
-
-def fun_l3_n915()
- fun_l4_n91
-end
-
-def fun_l3_n916()
- fun_l4_n164
-end
-
-def fun_l3_n917()
- fun_l4_n714
-end
-
-def fun_l3_n918()
- fun_l4_n496
-end
-
-def fun_l3_n919()
- fun_l4_n833
-end
-
-def fun_l3_n920()
- fun_l4_n315
-end
-
-def fun_l3_n921()
- fun_l4_n551
-end
-
-def fun_l3_n922()
- fun_l4_n986
-end
-
-def fun_l3_n923()
- fun_l4_n924
-end
-
-def fun_l3_n924()
- fun_l4_n670
-end
-
-def fun_l3_n925()
- fun_l4_n611
-end
-
-def fun_l3_n926()
- fun_l4_n590
-end
-
-def fun_l3_n927()
- fun_l4_n951
-end
-
-def fun_l3_n928()
- fun_l4_n438
-end
-
-def fun_l3_n929()
- fun_l4_n914
-end
-
-def fun_l3_n930()
- fun_l4_n357
-end
-
-def fun_l3_n931()
- fun_l4_n330
-end
-
-def fun_l3_n932()
- fun_l4_n737
-end
-
-def fun_l3_n933()
- fun_l4_n857
-end
-
-def fun_l3_n934()
- fun_l4_n32
-end
-
-def fun_l3_n935()
- fun_l4_n980
-end
-
-def fun_l3_n936()
- fun_l4_n229
-end
-
-def fun_l3_n937()
- fun_l4_n779
-end
-
-def fun_l3_n938()
- fun_l4_n365
-end
-
-def fun_l3_n939()
- fun_l4_n681
-end
-
-def fun_l3_n940()
- fun_l4_n55
-end
-
-def fun_l3_n941()
- fun_l4_n324
-end
-
-def fun_l3_n942()
- fun_l4_n630
-end
-
-def fun_l3_n943()
- fun_l4_n910
-end
-
-def fun_l3_n944()
- fun_l4_n590
-end
-
-def fun_l3_n945()
- fun_l4_n798
-end
-
-def fun_l3_n946()
- fun_l4_n973
-end
-
-def fun_l3_n947()
- fun_l4_n180
-end
-
-def fun_l3_n948()
- fun_l4_n425
-end
-
-def fun_l3_n949()
- fun_l4_n446
-end
-
-def fun_l3_n950()
- fun_l4_n296
-end
-
-def fun_l3_n951()
- fun_l4_n61
-end
-
-def fun_l3_n952()
- fun_l4_n797
-end
-
-def fun_l3_n953()
- fun_l4_n824
-end
-
-def fun_l3_n954()
- fun_l4_n336
-end
-
-def fun_l3_n955()
- fun_l4_n82
-end
-
-def fun_l3_n956()
- fun_l4_n310
-end
-
-def fun_l3_n957()
- fun_l4_n983
-end
-
-def fun_l3_n958()
- fun_l4_n780
-end
-
-def fun_l3_n959()
- fun_l4_n697
-end
-
-def fun_l3_n960()
- fun_l4_n822
-end
-
-def fun_l3_n961()
- fun_l4_n209
-end
-
-def fun_l3_n962()
- fun_l4_n549
-end
-
-def fun_l3_n963()
- fun_l4_n226
-end
-
-def fun_l3_n964()
- fun_l4_n324
-end
-
-def fun_l3_n965()
- fun_l4_n63
-end
-
-def fun_l3_n966()
- fun_l4_n430
-end
-
-def fun_l3_n967()
- fun_l4_n645
-end
-
-def fun_l3_n968()
- fun_l4_n875
-end
-
-def fun_l3_n969()
- fun_l4_n713
-end
-
-def fun_l3_n970()
- fun_l4_n457
-end
-
-def fun_l3_n971()
- fun_l4_n768
-end
-
-def fun_l3_n972()
- fun_l4_n548
-end
-
-def fun_l3_n973()
- fun_l4_n577
-end
-
-def fun_l3_n974()
- fun_l4_n109
-end
-
-def fun_l3_n975()
- fun_l4_n460
-end
-
-def fun_l3_n976()
- fun_l4_n83
-end
-
-def fun_l3_n977()
- fun_l4_n152
-end
-
-def fun_l3_n978()
- fun_l4_n224
-end
-
-def fun_l3_n979()
- fun_l4_n897
-end
-
-def fun_l3_n980()
- fun_l4_n830
-end
-
-def fun_l3_n981()
- fun_l4_n747
-end
-
-def fun_l3_n982()
- fun_l4_n21
-end
-
-def fun_l3_n983()
- fun_l4_n84
-end
-
-def fun_l3_n984()
- fun_l4_n342
-end
-
-def fun_l3_n985()
- fun_l4_n950
-end
-
-def fun_l3_n986()
- fun_l4_n33
-end
-
-def fun_l3_n987()
- fun_l4_n388
-end
-
-def fun_l3_n988()
- fun_l4_n766
-end
-
-def fun_l3_n989()
- fun_l4_n708
-end
-
-def fun_l3_n990()
- fun_l4_n392
-end
-
-def fun_l3_n991()
- fun_l4_n782
-end
-
-def fun_l3_n992()
- fun_l4_n223
-end
-
-def fun_l3_n993()
- fun_l4_n416
-end
-
-def fun_l3_n994()
- fun_l4_n609
-end
-
-def fun_l3_n995()
- fun_l4_n158
-end
-
-def fun_l3_n996()
- fun_l4_n246
-end
-
-def fun_l3_n997()
- fun_l4_n667
-end
-
-def fun_l3_n998()
- fun_l4_n126
-end
-
-def fun_l3_n999()
- fun_l4_n726
-end
-
-def fun_l4_n0()
- fun_l5_n544
-end
-
-def fun_l4_n1()
- fun_l5_n456
-end
-
-def fun_l4_n2()
- fun_l5_n364
-end
-
-def fun_l4_n3()
- fun_l5_n929
-end
-
-def fun_l4_n4()
- fun_l5_n593
-end
-
-def fun_l4_n5()
- fun_l5_n287
-end
-
-def fun_l4_n6()
- fun_l5_n272
-end
-
-def fun_l4_n7()
- fun_l5_n71
-end
-
-def fun_l4_n8()
- fun_l5_n704
-end
-
-def fun_l4_n9()
- fun_l5_n462
-end
-
-def fun_l4_n10()
- fun_l5_n239
-end
-
-def fun_l4_n11()
- fun_l5_n853
-end
-
-def fun_l4_n12()
- fun_l5_n217
-end
-
-def fun_l4_n13()
- fun_l5_n822
-end
-
-def fun_l4_n14()
- fun_l5_n663
-end
-
-def fun_l4_n15()
- fun_l5_n400
-end
-
-def fun_l4_n16()
- fun_l5_n307
-end
-
-def fun_l4_n17()
- fun_l5_n820
-end
-
-def fun_l4_n18()
- fun_l5_n885
-end
-
-def fun_l4_n19()
- fun_l5_n680
-end
-
-def fun_l4_n20()
- fun_l5_n592
-end
-
-def fun_l4_n21()
- fun_l5_n615
-end
-
-def fun_l4_n22()
- fun_l5_n669
-end
-
-def fun_l4_n23()
- fun_l5_n978
-end
-
-def fun_l4_n24()
- fun_l5_n946
-end
-
-def fun_l4_n25()
- fun_l5_n915
-end
-
-def fun_l4_n26()
- fun_l5_n286
-end
-
-def fun_l4_n27()
- fun_l5_n466
-end
-
-def fun_l4_n28()
- fun_l5_n970
-end
-
-def fun_l4_n29()
- fun_l5_n822
-end
-
-def fun_l4_n30()
- fun_l5_n883
-end
-
-def fun_l4_n31()
- fun_l5_n137
-end
-
-def fun_l4_n32()
- fun_l5_n957
-end
-
-def fun_l4_n33()
- fun_l5_n912
-end
-
-def fun_l4_n34()
- fun_l5_n156
-end
-
-def fun_l4_n35()
- fun_l5_n207
-end
-
-def fun_l4_n36()
- fun_l5_n525
-end
-
-def fun_l4_n37()
- fun_l5_n673
-end
-
-def fun_l4_n38()
- fun_l5_n151
-end
-
-def fun_l4_n39()
- fun_l5_n517
-end
-
-def fun_l4_n40()
- fun_l5_n459
-end
-
-def fun_l4_n41()
- fun_l5_n738
-end
-
-def fun_l4_n42()
- fun_l5_n809
-end
-
-def fun_l4_n43()
- fun_l5_n853
-end
-
-def fun_l4_n44()
- fun_l5_n653
-end
-
-def fun_l4_n45()
- fun_l5_n346
-end
-
-def fun_l4_n46()
- fun_l5_n704
-end
-
-def fun_l4_n47()
- fun_l5_n662
-end
-
-def fun_l4_n48()
- fun_l5_n990
-end
-
-def fun_l4_n49()
- fun_l5_n731
-end
-
-def fun_l4_n50()
- fun_l5_n305
-end
-
-def fun_l4_n51()
- fun_l5_n238
-end
-
-def fun_l4_n52()
- fun_l5_n710
-end
-
-def fun_l4_n53()
- fun_l5_n61
-end
-
-def fun_l4_n54()
- fun_l5_n572
-end
-
-def fun_l4_n55()
- fun_l5_n939
-end
-
-def fun_l4_n56()
- fun_l5_n223
-end
-
-def fun_l4_n57()
- fun_l5_n466
-end
-
-def fun_l4_n58()
- fun_l5_n442
-end
-
-def fun_l4_n59()
- fun_l5_n971
-end
-
-def fun_l4_n60()
- fun_l5_n42
-end
-
-def fun_l4_n61()
- fun_l5_n390
-end
-
-def fun_l4_n62()
- fun_l5_n254
-end
-
-def fun_l4_n63()
- fun_l5_n522
-end
-
-def fun_l4_n64()
- fun_l5_n16
-end
-
-def fun_l4_n65()
- fun_l5_n567
-end
-
-def fun_l4_n66()
- fun_l5_n353
-end
-
-def fun_l4_n67()
- fun_l5_n676
-end
-
-def fun_l4_n68()
- fun_l5_n526
-end
-
-def fun_l4_n69()
- fun_l5_n140
-end
-
-def fun_l4_n70()
- fun_l5_n829
-end
-
-def fun_l4_n71()
- fun_l5_n562
-end
-
-def fun_l4_n72()
- fun_l5_n489
-end
-
-def fun_l4_n73()
- fun_l5_n205
-end
-
-def fun_l4_n74()
- fun_l5_n558
-end
-
-def fun_l4_n75()
- fun_l5_n689
-end
-
-def fun_l4_n76()
- fun_l5_n803
-end
-
-def fun_l4_n77()
- fun_l5_n222
-end
-
-def fun_l4_n78()
- fun_l5_n696
-end
-
-def fun_l4_n79()
- fun_l5_n457
-end
-
-def fun_l4_n80()
- fun_l5_n794
-end
-
-def fun_l4_n81()
- fun_l5_n886
-end
-
-def fun_l4_n82()
- fun_l5_n742
-end
-
-def fun_l4_n83()
- fun_l5_n560
-end
-
-def fun_l4_n84()
- fun_l5_n207
-end
-
-def fun_l4_n85()
- fun_l5_n265
-end
-
-def fun_l4_n86()
- fun_l5_n871
-end
-
-def fun_l4_n87()
- fun_l5_n113
-end
-
-def fun_l4_n88()
- fun_l5_n141
-end
-
-def fun_l4_n89()
- fun_l5_n231
-end
-
-def fun_l4_n90()
- fun_l5_n980
-end
-
-def fun_l4_n91()
- fun_l5_n586
-end
-
-def fun_l4_n92()
- fun_l5_n961
-end
-
-def fun_l4_n93()
- fun_l5_n128
-end
-
-def fun_l4_n94()
- fun_l5_n395
-end
-
-def fun_l4_n95()
- fun_l5_n810
-end
-
-def fun_l4_n96()
- fun_l5_n337
-end
-
-def fun_l4_n97()
- fun_l5_n256
-end
-
-def fun_l4_n98()
- fun_l5_n188
-end
-
-def fun_l4_n99()
- fun_l5_n358
-end
-
-def fun_l4_n100()
- fun_l5_n751
-end
-
-def fun_l4_n101()
- fun_l5_n898
-end
-
-def fun_l4_n102()
- fun_l5_n323
-end
-
-def fun_l4_n103()
- fun_l5_n455
-end
-
-def fun_l4_n104()
- fun_l5_n976
-end
-
-def fun_l4_n105()
- fun_l5_n962
-end
-
-def fun_l4_n106()
- fun_l5_n781
-end
-
-def fun_l4_n107()
- fun_l5_n277
-end
-
-def fun_l4_n108()
- fun_l5_n146
-end
-
-def fun_l4_n109()
- fun_l5_n793
-end
-
-def fun_l4_n110()
- fun_l5_n787
-end
-
-def fun_l4_n111()
- fun_l5_n597
-end
-
-def fun_l4_n112()
- fun_l5_n799
-end
-
-def fun_l4_n113()
- fun_l5_n598
-end
-
-def fun_l4_n114()
- fun_l5_n456
-end
-
-def fun_l4_n115()
- fun_l5_n45
-end
-
-def fun_l4_n116()
- fun_l5_n265
-end
-
-def fun_l4_n117()
- fun_l5_n661
-end
-
-def fun_l4_n118()
- fun_l5_n657
-end
-
-def fun_l4_n119()
- fun_l5_n703
-end
-
-def fun_l4_n120()
- fun_l5_n164
-end
-
-def fun_l4_n121()
- fun_l5_n182
-end
-
-def fun_l4_n122()
- fun_l5_n605
-end
-
-def fun_l4_n123()
- fun_l5_n237
-end
-
-def fun_l4_n124()
- fun_l5_n582
-end
-
-def fun_l4_n125()
- fun_l5_n381
-end
-
-def fun_l4_n126()
- fun_l5_n244
-end
-
-def fun_l4_n127()
- fun_l5_n272
-end
-
-def fun_l4_n128()
- fun_l5_n989
-end
-
-def fun_l4_n129()
- fun_l5_n366
-end
-
-def fun_l4_n130()
- fun_l5_n640
-end
-
-def fun_l4_n131()
- fun_l5_n953
-end
-
-def fun_l4_n132()
- fun_l5_n990
-end
-
-def fun_l4_n133()
- fun_l5_n497
-end
-
-def fun_l4_n134()
- fun_l5_n12
-end
-
-def fun_l4_n135()
- fun_l5_n993
-end
-
-def fun_l4_n136()
- fun_l5_n802
-end
-
-def fun_l4_n137()
- fun_l5_n411
-end
-
-def fun_l4_n138()
- fun_l5_n154
-end
-
-def fun_l4_n139()
- fun_l5_n924
-end
-
-def fun_l4_n140()
- fun_l5_n772
-end
-
-def fun_l4_n141()
- fun_l5_n972
-end
-
-def fun_l4_n142()
- fun_l5_n847
-end
-
-def fun_l4_n143()
- fun_l5_n481
-end
-
-def fun_l4_n144()
- fun_l5_n52
-end
-
-def fun_l4_n145()
- fun_l5_n451
-end
-
-def fun_l4_n146()
- fun_l5_n339
-end
-
-def fun_l4_n147()
- fun_l5_n531
-end
-
-def fun_l4_n148()
- fun_l5_n735
-end
-
-def fun_l4_n149()
- fun_l5_n747
-end
-
-def fun_l4_n150()
- fun_l5_n750
-end
-
-def fun_l4_n151()
- fun_l5_n762
-end
-
-def fun_l4_n152()
- fun_l5_n131
-end
-
-def fun_l4_n153()
- fun_l5_n532
-end
-
-def fun_l4_n154()
- fun_l5_n398
-end
-
-def fun_l4_n155()
- fun_l5_n660
-end
-
-def fun_l4_n156()
- fun_l5_n374
-end
-
-def fun_l4_n157()
- fun_l5_n245
-end
-
-def fun_l4_n158()
- fun_l5_n850
-end
-
-def fun_l4_n159()
- fun_l5_n518
-end
-
-def fun_l4_n160()
- fun_l5_n607
-end
-
-def fun_l4_n161()
- fun_l5_n823
-end
-
-def fun_l4_n162()
- fun_l5_n816
-end
-
-def fun_l4_n163()
- fun_l5_n735
-end
-
-def fun_l4_n164()
- fun_l5_n802
-end
-
-def fun_l4_n165()
- fun_l5_n398
-end
-
-def fun_l4_n166()
- fun_l5_n149
-end
-
-def fun_l4_n167()
- fun_l5_n292
-end
-
-def fun_l4_n168()
- fun_l5_n733
-end
-
-def fun_l4_n169()
- fun_l5_n145
-end
-
-def fun_l4_n170()
- fun_l5_n288
-end
-
-def fun_l4_n171()
- fun_l5_n131
-end
-
-def fun_l4_n172()
- fun_l5_n31
-end
-
-def fun_l4_n173()
- fun_l5_n253
-end
-
-def fun_l4_n174()
- fun_l5_n41
-end
-
-def fun_l4_n175()
- fun_l5_n403
-end
-
-def fun_l4_n176()
- fun_l5_n859
-end
-
-def fun_l4_n177()
- fun_l5_n804
-end
-
-def fun_l4_n178()
- fun_l5_n26
-end
-
-def fun_l4_n179()
- fun_l5_n729
-end
-
-def fun_l4_n180()
- fun_l5_n978
-end
-
-def fun_l4_n181()
- fun_l5_n42
-end
-
-def fun_l4_n182()
- fun_l5_n38
-end
-
-def fun_l4_n183()
- fun_l5_n758
-end
-
-def fun_l4_n184()
- fun_l5_n885
-end
-
-def fun_l4_n185()
- fun_l5_n473
-end
-
-def fun_l4_n186()
- fun_l5_n737
-end
-
-def fun_l4_n187()
- fun_l5_n889
-end
-
-def fun_l4_n188()
- fun_l5_n398
-end
-
-def fun_l4_n189()
- fun_l5_n72
-end
-
-def fun_l4_n190()
- fun_l5_n725
-end
-
-def fun_l4_n191()
- fun_l5_n774
-end
-
-def fun_l4_n192()
- fun_l5_n453
-end
-
-def fun_l4_n193()
- fun_l5_n370
-end
-
-def fun_l4_n194()
- fun_l5_n648
-end
-
-def fun_l4_n195()
- fun_l5_n882
-end
-
-def fun_l4_n196()
- fun_l5_n745
-end
-
-def fun_l4_n197()
- fun_l5_n529
-end
-
-def fun_l4_n198()
- fun_l5_n957
-end
-
-def fun_l4_n199()
- fun_l5_n423
-end
-
-def fun_l4_n200()
- fun_l5_n399
-end
-
-def fun_l4_n201()
- fun_l5_n917
-end
-
-def fun_l4_n202()
- fun_l5_n634
-end
-
-def fun_l4_n203()
- fun_l5_n868
-end
-
-def fun_l4_n204()
- fun_l5_n627
-end
-
-def fun_l4_n205()
- fun_l5_n514
-end
-
-def fun_l4_n206()
- fun_l5_n61
-end
-
-def fun_l4_n207()
- fun_l5_n848
-end
-
-def fun_l4_n208()
- fun_l5_n611
-end
-
-def fun_l4_n209()
- fun_l5_n417
-end
-
-def fun_l4_n210()
- fun_l5_n423
-end
-
-def fun_l4_n211()
- fun_l5_n247
-end
-
-def fun_l4_n212()
- fun_l5_n208
-end
-
-def fun_l4_n213()
- fun_l5_n253
-end
-
-def fun_l4_n214()
- fun_l5_n833
-end
-
-def fun_l4_n215()
- fun_l5_n351
-end
-
-def fun_l4_n216()
- fun_l5_n326
-end
-
-def fun_l4_n217()
- fun_l5_n741
-end
-
-def fun_l4_n218()
- fun_l5_n958
-end
-
-def fun_l4_n219()
- fun_l5_n347
-end
-
-def fun_l4_n220()
- fun_l5_n317
-end
-
-def fun_l4_n221()
- fun_l5_n291
-end
-
-def fun_l4_n222()
- fun_l5_n863
-end
-
-def fun_l4_n223()
- fun_l5_n30
-end
-
-def fun_l4_n224()
- fun_l5_n413
-end
-
-def fun_l4_n225()
- fun_l5_n352
-end
-
-def fun_l4_n226()
- fun_l5_n125
-end
-
-def fun_l4_n227()
- fun_l5_n266
-end
-
-def fun_l4_n228()
- fun_l5_n264
-end
-
-def fun_l4_n229()
- fun_l5_n745
-end
-
-def fun_l4_n230()
- fun_l5_n622
-end
-
-def fun_l4_n231()
- fun_l5_n160
-end
-
-def fun_l4_n232()
- fun_l5_n121
-end
-
-def fun_l4_n233()
- fun_l5_n150
-end
-
-def fun_l4_n234()
- fun_l5_n495
-end
-
-def fun_l4_n235()
- fun_l5_n905
-end
-
-def fun_l4_n236()
- fun_l5_n886
-end
-
-def fun_l4_n237()
- fun_l5_n221
-end
-
-def fun_l4_n238()
- fun_l5_n912
-end
-
-def fun_l4_n239()
- fun_l5_n834
-end
-
-def fun_l4_n240()
- fun_l5_n703
-end
-
-def fun_l4_n241()
- fun_l5_n651
-end
-
-def fun_l4_n242()
- fun_l5_n404
-end
-
-def fun_l4_n243()
- fun_l5_n213
-end
-
-def fun_l4_n244()
- fun_l5_n342
-end
-
-def fun_l4_n245()
- fun_l5_n887
-end
-
-def fun_l4_n246()
- fun_l5_n69
-end
-
-def fun_l4_n247()
- fun_l5_n835
-end
-
-def fun_l4_n248()
- fun_l5_n856
-end
-
-def fun_l4_n249()
- fun_l5_n485
-end
-
-def fun_l4_n250()
- fun_l5_n441
-end
-
-def fun_l4_n251()
- fun_l5_n976
-end
-
-def fun_l4_n252()
- fun_l5_n586
-end
-
-def fun_l4_n253()
- fun_l5_n728
-end
-
-def fun_l4_n254()
- fun_l5_n377
-end
-
-def fun_l4_n255()
- fun_l5_n293
-end
-
-def fun_l4_n256()
- fun_l5_n149
-end
-
-def fun_l4_n257()
- fun_l5_n205
-end
-
-def fun_l4_n258()
- fun_l5_n301
-end
-
-def fun_l4_n259()
- fun_l5_n528
-end
-
-def fun_l4_n260()
- fun_l5_n642
-end
-
-def fun_l4_n261()
- fun_l5_n430
-end
-
-def fun_l4_n262()
- fun_l5_n14
-end
-
-def fun_l4_n263()
- fun_l5_n796
-end
-
-def fun_l4_n264()
- fun_l5_n849
-end
-
-def fun_l4_n265()
- fun_l5_n547
-end
-
-def fun_l4_n266()
- fun_l5_n946
-end
-
-def fun_l4_n267()
- fun_l5_n131
-end
-
-def fun_l4_n268()
- fun_l5_n141
-end
-
-def fun_l4_n269()
- fun_l5_n9
-end
-
-def fun_l4_n270()
- fun_l5_n884
-end
-
-def fun_l4_n271()
- fun_l5_n978
-end
-
-def fun_l4_n272()
- fun_l5_n47
-end
-
-def fun_l4_n273()
- fun_l5_n100
-end
-
-def fun_l4_n274()
- fun_l5_n254
-end
-
-def fun_l4_n275()
- fun_l5_n972
-end
-
-def fun_l4_n276()
- fun_l5_n705
-end
-
-def fun_l4_n277()
- fun_l5_n504
-end
-
-def fun_l4_n278()
- fun_l5_n854
-end
-
-def fun_l4_n279()
- fun_l5_n331
-end
-
-def fun_l4_n280()
- fun_l5_n394
-end
-
-def fun_l4_n281()
- fun_l5_n922
-end
-
-def fun_l4_n282()
- fun_l5_n503
-end
-
-def fun_l4_n283()
- fun_l5_n854
-end
-
-def fun_l4_n284()
- fun_l5_n679
-end
-
-def fun_l4_n285()
- fun_l5_n317
-end
-
-def fun_l4_n286()
- fun_l5_n753
-end
-
-def fun_l4_n287()
- fun_l5_n154
-end
-
-def fun_l4_n288()
- fun_l5_n184
-end
-
-def fun_l4_n289()
- fun_l5_n416
-end
-
-def fun_l4_n290()
- fun_l5_n426
-end
-
-def fun_l4_n291()
- fun_l5_n186
-end
-
-def fun_l4_n292()
- fun_l5_n527
-end
-
-def fun_l4_n293()
- fun_l5_n483
-end
-
-def fun_l4_n294()
- fun_l5_n718
-end
-
-def fun_l4_n295()
- fun_l5_n469
-end
-
-def fun_l4_n296()
- fun_l5_n842
-end
-
-def fun_l4_n297()
- fun_l5_n998
-end
-
-def fun_l4_n298()
- fun_l5_n964
-end
-
-def fun_l4_n299()
- fun_l5_n377
-end
-
-def fun_l4_n300()
- fun_l5_n9
-end
-
-def fun_l4_n301()
- fun_l5_n234
-end
-
-def fun_l4_n302()
- fun_l5_n813
-end
-
-def fun_l4_n303()
- fun_l5_n211
-end
-
-def fun_l4_n304()
- fun_l5_n593
-end
-
-def fun_l4_n305()
- fun_l5_n847
-end
-
-def fun_l4_n306()
- fun_l5_n628
-end
-
-def fun_l4_n307()
- fun_l5_n827
-end
-
-def fun_l4_n308()
- fun_l5_n417
-end
-
-def fun_l4_n309()
- fun_l5_n958
-end
-
-def fun_l4_n310()
- fun_l5_n838
-end
-
-def fun_l4_n311()
- fun_l5_n712
-end
-
-def fun_l4_n312()
- fun_l5_n615
-end
-
-def fun_l4_n313()
- fun_l5_n693
-end
-
-def fun_l4_n314()
- fun_l5_n708
-end
-
-def fun_l4_n315()
- fun_l5_n525
-end
-
-def fun_l4_n316()
- fun_l5_n943
-end
-
-def fun_l4_n317()
- fun_l5_n959
-end
-
-def fun_l4_n318()
- fun_l5_n316
-end
-
-def fun_l4_n319()
- fun_l5_n424
-end
-
-def fun_l4_n320()
- fun_l5_n391
-end
-
-def fun_l4_n321()
- fun_l5_n303
-end
-
-def fun_l4_n322()
- fun_l5_n159
-end
-
-def fun_l4_n323()
- fun_l5_n853
-end
-
-def fun_l4_n324()
- fun_l5_n525
-end
-
-def fun_l4_n325()
- fun_l5_n390
-end
-
-def fun_l4_n326()
- fun_l5_n225
-end
-
-def fun_l4_n327()
- fun_l5_n983
-end
-
-def fun_l4_n328()
- fun_l5_n509
-end
-
-def fun_l4_n329()
- fun_l5_n141
-end
-
-def fun_l4_n330()
- fun_l5_n92
-end
-
-def fun_l4_n331()
- fun_l5_n288
-end
-
-def fun_l4_n332()
- fun_l5_n213
-end
-
-def fun_l4_n333()
- fun_l5_n830
-end
-
-def fun_l4_n334()
- fun_l5_n512
-end
-
-def fun_l4_n335()
- fun_l5_n449
-end
-
-def fun_l4_n336()
- fun_l5_n148
-end
-
-def fun_l4_n337()
- fun_l5_n829
-end
-
-def fun_l4_n338()
- fun_l5_n232
-end
-
-def fun_l4_n339()
- fun_l5_n989
-end
-
-def fun_l4_n340()
- fun_l5_n226
-end
-
-def fun_l4_n341()
- fun_l5_n187
-end
-
-def fun_l4_n342()
- fun_l5_n874
-end
-
-def fun_l4_n343()
- fun_l5_n621
-end
-
-def fun_l4_n344()
- fun_l5_n861
-end
-
-def fun_l4_n345()
- fun_l5_n22
-end
-
-def fun_l4_n346()
- fun_l5_n6
-end
-
-def fun_l4_n347()
- fun_l5_n580
-end
-
-def fun_l4_n348()
- fun_l5_n56
-end
-
-def fun_l4_n349()
- fun_l5_n834
-end
-
-def fun_l4_n350()
- fun_l5_n460
-end
-
-def fun_l4_n351()
- fun_l5_n697
-end
-
-def fun_l4_n352()
- fun_l5_n792
-end
-
-def fun_l4_n353()
- fun_l5_n777
-end
-
-def fun_l4_n354()
- fun_l5_n73
-end
-
-def fun_l4_n355()
- fun_l5_n555
-end
-
-def fun_l4_n356()
- fun_l5_n32
-end
-
-def fun_l4_n357()
- fun_l5_n242
-end
-
-def fun_l4_n358()
- fun_l5_n791
-end
-
-def fun_l4_n359()
- fun_l5_n570
-end
-
-def fun_l4_n360()
- fun_l5_n272
-end
-
-def fun_l4_n361()
- fun_l5_n757
-end
-
-def fun_l4_n362()
- fun_l5_n946
-end
-
-def fun_l4_n363()
- fun_l5_n127
-end
-
-def fun_l4_n364()
- fun_l5_n940
-end
-
-def fun_l4_n365()
- fun_l5_n662
-end
-
-def fun_l4_n366()
- fun_l5_n99
-end
-
-def fun_l4_n367()
- fun_l5_n107
-end
-
-def fun_l4_n368()
- fun_l5_n370
-end
-
-def fun_l4_n369()
- fun_l5_n738
-end
-
-def fun_l4_n370()
- fun_l5_n346
-end
-
-def fun_l4_n371()
- fun_l5_n63
-end
-
-def fun_l4_n372()
- fun_l5_n274
-end
-
-def fun_l4_n373()
- fun_l5_n936
-end
-
-def fun_l4_n374()
- fun_l5_n602
-end
-
-def fun_l4_n375()
- fun_l5_n362
-end
-
-def fun_l4_n376()
- fun_l5_n605
-end
-
-def fun_l4_n377()
- fun_l5_n477
-end
-
-def fun_l4_n378()
- fun_l5_n349
-end
-
-def fun_l4_n379()
- fun_l5_n241
-end
-
-def fun_l4_n380()
- fun_l5_n913
-end
-
-def fun_l4_n381()
- fun_l5_n392
-end
-
-def fun_l4_n382()
- fun_l5_n669
-end
-
-def fun_l4_n383()
- fun_l5_n41
-end
-
-def fun_l4_n384()
- fun_l5_n928
-end
-
-def fun_l4_n385()
- fun_l5_n646
-end
-
-def fun_l4_n386()
- fun_l5_n23
-end
-
-def fun_l4_n387()
- fun_l5_n815
-end
-
-def fun_l4_n388()
- fun_l5_n595
-end
-
-def fun_l4_n389()
- fun_l5_n210
-end
-
-def fun_l4_n390()
- fun_l5_n247
-end
-
-def fun_l4_n391()
- fun_l5_n914
-end
-
-def fun_l4_n392()
- fun_l5_n882
-end
-
-def fun_l4_n393()
- fun_l5_n319
-end
-
-def fun_l4_n394()
- fun_l5_n764
-end
-
-def fun_l4_n395()
- fun_l5_n282
-end
-
-def fun_l4_n396()
- fun_l5_n585
-end
-
-def fun_l4_n397()
- fun_l5_n551
-end
-
-def fun_l4_n398()
- fun_l5_n56
-end
-
-def fun_l4_n399()
- fun_l5_n807
-end
-
-def fun_l4_n400()
- fun_l5_n678
-end
-
-def fun_l4_n401()
- fun_l5_n153
-end
-
-def fun_l4_n402()
- fun_l5_n993
-end
-
-def fun_l4_n403()
- fun_l5_n835
-end
-
-def fun_l4_n404()
- fun_l5_n642
-end
-
-def fun_l4_n405()
- fun_l5_n460
-end
-
-def fun_l4_n406()
- fun_l5_n135
-end
-
-def fun_l4_n407()
- fun_l5_n199
-end
-
-def fun_l4_n408()
- fun_l5_n782
-end
-
-def fun_l4_n409()
- fun_l5_n723
-end
-
-def fun_l4_n410()
- fun_l5_n638
-end
-
-def fun_l4_n411()
- fun_l5_n157
-end
-
-def fun_l4_n412()
- fun_l5_n840
-end
-
-def fun_l4_n413()
- fun_l5_n11
-end
-
-def fun_l4_n414()
- fun_l5_n148
-end
-
-def fun_l4_n415()
- fun_l5_n577
-end
-
-def fun_l4_n416()
- fun_l5_n403
-end
-
-def fun_l4_n417()
- fun_l5_n971
-end
-
-def fun_l4_n418()
- fun_l5_n951
-end
-
-def fun_l4_n419()
- fun_l5_n620
-end
-
-def fun_l4_n420()
- fun_l5_n120
-end
-
-def fun_l4_n421()
- fun_l5_n981
-end
-
-def fun_l4_n422()
- fun_l5_n543
-end
-
-def fun_l4_n423()
- fun_l5_n543
-end
-
-def fun_l4_n424()
- fun_l5_n161
-end
-
-def fun_l4_n425()
- fun_l5_n308
-end
-
-def fun_l4_n426()
- fun_l5_n94
-end
-
-def fun_l4_n427()
- fun_l5_n209
-end
-
-def fun_l4_n428()
- fun_l5_n543
-end
-
-def fun_l4_n429()
- fun_l5_n825
-end
-
-def fun_l4_n430()
- fun_l5_n808
-end
-
-def fun_l4_n431()
- fun_l5_n315
-end
-
-def fun_l4_n432()
- fun_l5_n846
-end
-
-def fun_l4_n433()
- fun_l5_n448
-end
-
-def fun_l4_n434()
- fun_l5_n903
-end
-
-def fun_l4_n435()
- fun_l5_n933
-end
-
-def fun_l4_n436()
- fun_l5_n872
-end
-
-def fun_l4_n437()
- fun_l5_n297
-end
-
-def fun_l4_n438()
- fun_l5_n689
-end
-
-def fun_l4_n439()
- fun_l5_n700
-end
-
-def fun_l4_n440()
- fun_l5_n316
-end
-
-def fun_l4_n441()
- fun_l5_n983
-end
-
-def fun_l4_n442()
- fun_l5_n32
-end
-
-def fun_l4_n443()
- fun_l5_n404
-end
-
-def fun_l4_n444()
- fun_l5_n770
-end
-
-def fun_l4_n445()
- fun_l5_n497
-end
-
-def fun_l4_n446()
- fun_l5_n762
-end
-
-def fun_l4_n447()
- fun_l5_n402
-end
-
-def fun_l4_n448()
- fun_l5_n773
-end
-
-def fun_l4_n449()
- fun_l5_n264
-end
-
-def fun_l4_n450()
- fun_l5_n373
-end
-
-def fun_l4_n451()
- fun_l5_n907
-end
-
-def fun_l4_n452()
- fun_l5_n477
-end
-
-def fun_l4_n453()
- fun_l5_n15
-end
-
-def fun_l4_n454()
- fun_l5_n550
-end
-
-def fun_l4_n455()
- fun_l5_n973
-end
-
-def fun_l4_n456()
- fun_l5_n247
-end
-
-def fun_l4_n457()
- fun_l5_n231
-end
-
-def fun_l4_n458()
- fun_l5_n431
-end
-
-def fun_l4_n459()
- fun_l5_n549
-end
-
-def fun_l4_n460()
- fun_l5_n251
-end
-
-def fun_l4_n461()
- fun_l5_n313
-end
-
-def fun_l4_n462()
- fun_l5_n826
-end
-
-def fun_l4_n463()
- fun_l5_n454
-end
-
-def fun_l4_n464()
- fun_l5_n329
-end
-
-def fun_l4_n465()
- fun_l5_n502
-end
-
-def fun_l4_n466()
- fun_l5_n786
-end
-
-def fun_l4_n467()
- fun_l5_n195
-end
-
-def fun_l4_n468()
- fun_l5_n710
-end
-
-def fun_l4_n469()
- fun_l5_n970
-end
-
-def fun_l4_n470()
- fun_l5_n925
-end
-
-def fun_l4_n471()
- fun_l5_n420
-end
-
-def fun_l4_n472()
- fun_l5_n231
-end
-
-def fun_l4_n473()
- fun_l5_n867
-end
-
-def fun_l4_n474()
- fun_l5_n798
-end
-
-def fun_l4_n475()
- fun_l5_n697
-end
-
-def fun_l4_n476()
- fun_l5_n767
-end
-
-def fun_l4_n477()
- fun_l5_n199
-end
-
-def fun_l4_n478()
- fun_l5_n190
-end
-
-def fun_l4_n479()
- fun_l5_n524
-end
-
-def fun_l4_n480()
- fun_l5_n451
-end
-
-def fun_l4_n481()
- fun_l5_n182
-end
-
-def fun_l4_n482()
- fun_l5_n906
-end
-
-def fun_l4_n483()
- fun_l5_n806
-end
-
-def fun_l4_n484()
- fun_l5_n871
-end
-
-def fun_l4_n485()
- fun_l5_n947
-end
-
-def fun_l4_n486()
- fun_l5_n599
-end
-
-def fun_l4_n487()
- fun_l5_n266
-end
-
-def fun_l4_n488()
- fun_l5_n20
-end
-
-def fun_l4_n489()
- fun_l5_n875
-end
-
-def fun_l4_n490()
- fun_l5_n393
-end
-
-def fun_l4_n491()
- fun_l5_n673
-end
-
-def fun_l4_n492()
- fun_l5_n159
-end
-
-def fun_l4_n493()
- fun_l5_n327
-end
-
-def fun_l4_n494()
- fun_l5_n71
-end
-
-def fun_l4_n495()
- fun_l5_n146
-end
-
-def fun_l4_n496()
- fun_l5_n372
-end
-
-def fun_l4_n497()
- fun_l5_n654
-end
-
-def fun_l4_n498()
- fun_l5_n1
-end
-
-def fun_l4_n499()
- fun_l5_n448
-end
-
-def fun_l4_n500()
- fun_l5_n684
-end
-
-def fun_l4_n501()
- fun_l5_n561
-end
-
-def fun_l4_n502()
- fun_l5_n47
-end
-
-def fun_l4_n503()
- fun_l5_n313
-end
-
-def fun_l4_n504()
- fun_l5_n380
-end
-
-def fun_l4_n505()
- fun_l5_n416
-end
-
-def fun_l4_n506()
- fun_l5_n90
-end
-
-def fun_l4_n507()
- fun_l5_n65
-end
-
-def fun_l4_n508()
- fun_l5_n61
-end
-
-def fun_l4_n509()
- fun_l5_n451
-end
-
-def fun_l4_n510()
- fun_l5_n174
-end
-
-def fun_l4_n511()
- fun_l5_n236
-end
-
-def fun_l4_n512()
- fun_l5_n470
-end
-
-def fun_l4_n513()
- fun_l5_n304
-end
-
-def fun_l4_n514()
- fun_l5_n146
-end
-
-def fun_l4_n515()
- fun_l5_n671
-end
-
-def fun_l4_n516()
- fun_l5_n626
-end
-
-def fun_l4_n517()
- fun_l5_n164
-end
-
-def fun_l4_n518()
- fun_l5_n308
-end
-
-def fun_l4_n519()
- fun_l5_n799
-end
-
-def fun_l4_n520()
- fun_l5_n521
-end
-
-def fun_l4_n521()
- fun_l5_n675
-end
-
-def fun_l4_n522()
- fun_l5_n110
-end
-
-def fun_l4_n523()
- fun_l5_n726
-end
-
-def fun_l4_n524()
- fun_l5_n189
-end
-
-def fun_l4_n525()
- fun_l5_n303
-end
-
-def fun_l4_n526()
- fun_l5_n571
-end
-
-def fun_l4_n527()
- fun_l5_n693
-end
-
-def fun_l4_n528()
- fun_l5_n782
-end
-
-def fun_l4_n529()
- fun_l5_n764
-end
-
-def fun_l4_n530()
- fun_l5_n629
-end
-
-def fun_l4_n531()
- fun_l5_n677
-end
-
-def fun_l4_n532()
- fun_l5_n745
-end
-
-def fun_l4_n533()
- fun_l5_n868
-end
-
-def fun_l4_n534()
- fun_l5_n771
-end
-
-def fun_l4_n535()
- fun_l5_n248
-end
-
-def fun_l4_n536()
- fun_l5_n412
-end
-
-def fun_l4_n537()
- fun_l5_n736
-end
-
-def fun_l4_n538()
- fun_l5_n296
-end
-
-def fun_l4_n539()
- fun_l5_n847
-end
-
-def fun_l4_n540()
- fun_l5_n188
-end
-
-def fun_l4_n541()
- fun_l5_n131
-end
-
-def fun_l4_n542()
- fun_l5_n31
-end
-
-def fun_l4_n543()
- fun_l5_n563
-end
-
-def fun_l4_n544()
- fun_l5_n479
-end
-
-def fun_l4_n545()
- fun_l5_n243
-end
-
-def fun_l4_n546()
- fun_l5_n471
-end
-
-def fun_l4_n547()
- fun_l5_n237
-end
-
-def fun_l4_n548()
- fun_l5_n772
-end
-
-def fun_l4_n549()
- fun_l5_n723
-end
-
-def fun_l4_n550()
- fun_l5_n733
-end
-
-def fun_l4_n551()
- fun_l5_n274
-end
-
-def fun_l4_n552()
- fun_l5_n351
-end
-
-def fun_l4_n553()
- fun_l5_n30
-end
-
-def fun_l4_n554()
- fun_l5_n112
-end
-
-def fun_l4_n555()
- fun_l5_n438
-end
-
-def fun_l4_n556()
- fun_l5_n969
-end
-
-def fun_l4_n557()
- fun_l5_n57
-end
-
-def fun_l4_n558()
- fun_l5_n971
-end
-
-def fun_l4_n559()
- fun_l5_n831
-end
-
-def fun_l4_n560()
- fun_l5_n833
-end
-
-def fun_l4_n561()
- fun_l5_n896
-end
-
-def fun_l4_n562()
- fun_l5_n607
-end
-
-def fun_l4_n563()
- fun_l5_n793
-end
-
-def fun_l4_n564()
- fun_l5_n711
-end
-
-def fun_l4_n565()
- fun_l5_n570
-end
-
-def fun_l4_n566()
- fun_l5_n933
-end
-
-def fun_l4_n567()
- fun_l5_n917
-end
-
-def fun_l4_n568()
- fun_l5_n811
-end
-
-def fun_l4_n569()
- fun_l5_n414
-end
-
-def fun_l4_n570()
- fun_l5_n14
-end
-
-def fun_l4_n571()
- fun_l5_n911
-end
-
-def fun_l4_n572()
- fun_l5_n114
-end
-
-def fun_l4_n573()
- fun_l5_n732
-end
-
-def fun_l4_n574()
- fun_l5_n913
-end
-
-def fun_l4_n575()
- fun_l5_n66
-end
-
-def fun_l4_n576()
- fun_l5_n330
-end
-
-def fun_l4_n577()
- fun_l5_n892
-end
-
-def fun_l4_n578()
- fun_l5_n329
-end
-
-def fun_l4_n579()
- fun_l5_n539
-end
-
-def fun_l4_n580()
- fun_l5_n268
-end
-
-def fun_l4_n581()
- fun_l5_n357
-end
-
-def fun_l4_n582()
- fun_l5_n259
-end
-
-def fun_l4_n583()
- fun_l5_n968
-end
-
-def fun_l4_n584()
- fun_l5_n873
-end
-
-def fun_l4_n585()
- fun_l5_n644
-end
-
-def fun_l4_n586()
- fun_l5_n659
-end
-
-def fun_l4_n587()
- fun_l5_n906
-end
-
-def fun_l4_n588()
- fun_l5_n746
-end
-
-def fun_l4_n589()
- fun_l5_n802
-end
-
-def fun_l4_n590()
- fun_l5_n9
-end
-
-def fun_l4_n591()
- fun_l5_n620
-end
-
-def fun_l4_n592()
- fun_l5_n507
-end
-
-def fun_l4_n593()
- fun_l5_n338
-end
-
-def fun_l4_n594()
- fun_l5_n396
-end
-
-def fun_l4_n595()
- fun_l5_n627
-end
-
-def fun_l4_n596()
- fun_l5_n621
-end
-
-def fun_l4_n597()
- fun_l5_n597
-end
-
-def fun_l4_n598()
- fun_l5_n496
-end
-
-def fun_l4_n599()
- fun_l5_n265
-end
-
-def fun_l4_n600()
- fun_l5_n897
-end
-
-def fun_l4_n601()
- fun_l5_n142
-end
-
-def fun_l4_n602()
- fun_l5_n614
-end
-
-def fun_l4_n603()
- fun_l5_n565
-end
-
-def fun_l4_n604()
- fun_l5_n653
-end
-
-def fun_l4_n605()
- fun_l5_n728
-end
-
-def fun_l4_n606()
- fun_l5_n799
-end
-
-def fun_l4_n607()
- fun_l5_n714
-end
-
-def fun_l4_n608()
- fun_l5_n448
-end
-
-def fun_l4_n609()
- fun_l5_n778
-end
-
-def fun_l4_n610()
- fun_l5_n508
-end
-
-def fun_l4_n611()
- fun_l5_n216
-end
-
-def fun_l4_n612()
- fun_l5_n604
-end
-
-def fun_l4_n613()
- fun_l5_n231
-end
-
-def fun_l4_n614()
- fun_l5_n696
-end
-
-def fun_l4_n615()
- fun_l5_n354
-end
-
-def fun_l4_n616()
- fun_l5_n595
-end
-
-def fun_l4_n617()
- fun_l5_n747
-end
-
-def fun_l4_n618()
- fun_l5_n377
-end
-
-def fun_l4_n619()
- fun_l5_n852
-end
-
-def fun_l4_n620()
- fun_l5_n381
-end
-
-def fun_l4_n621()
- fun_l5_n674
-end
-
-def fun_l4_n622()
- fun_l5_n696
-end
-
-def fun_l4_n623()
- fun_l5_n25
-end
-
-def fun_l4_n624()
- fun_l5_n133
-end
-
-def fun_l4_n625()
- fun_l5_n419
-end
-
-def fun_l4_n626()
- fun_l5_n612
-end
-
-def fun_l4_n627()
- fun_l5_n798
-end
-
-def fun_l4_n628()
- fun_l5_n702
-end
-
-def fun_l4_n629()
- fun_l5_n125
-end
-
-def fun_l4_n630()
- fun_l5_n567
-end
-
-def fun_l4_n631()
- fun_l5_n825
-end
-
-def fun_l4_n632()
- fun_l5_n794
-end
-
-def fun_l4_n633()
- fun_l5_n802
-end
-
-def fun_l4_n634()
- fun_l5_n297
-end
-
-def fun_l4_n635()
- fun_l5_n366
-end
-
-def fun_l4_n636()
- fun_l5_n149
-end
-
-def fun_l4_n637()
- fun_l5_n648
-end
-
-def fun_l4_n638()
- fun_l5_n997
-end
-
-def fun_l4_n639()
- fun_l5_n569
-end
-
-def fun_l4_n640()
- fun_l5_n917
-end
-
-def fun_l4_n641()
- fun_l5_n172
-end
-
-def fun_l4_n642()
- fun_l5_n353
-end
-
-def fun_l4_n643()
- fun_l5_n940
-end
-
-def fun_l4_n644()
- fun_l5_n255
-end
-
-def fun_l4_n645()
- fun_l5_n690
-end
-
-def fun_l4_n646()
- fun_l5_n17
-end
-
-def fun_l4_n647()
- fun_l5_n320
-end
-
-def fun_l4_n648()
- fun_l5_n328
-end
-
-def fun_l4_n649()
- fun_l5_n467
-end
-
-def fun_l4_n650()
- fun_l5_n352
-end
-
-def fun_l4_n651()
- fun_l5_n671
-end
-
-def fun_l4_n652()
- fun_l5_n104
-end
-
-def fun_l4_n653()
- fun_l5_n40
-end
-
-def fun_l4_n654()
- fun_l5_n445
-end
-
-def fun_l4_n655()
- fun_l5_n703
-end
-
-def fun_l4_n656()
- fun_l5_n699
-end
-
-def fun_l4_n657()
- fun_l5_n156
-end
-
-def fun_l4_n658()
- fun_l5_n1
-end
-
-def fun_l4_n659()
- fun_l5_n728
-end
-
-def fun_l4_n660()
- fun_l5_n200
-end
-
-def fun_l4_n661()
- fun_l5_n369
-end
-
-def fun_l4_n662()
- fun_l5_n621
-end
-
-def fun_l4_n663()
- fun_l5_n600
-end
-
-def fun_l4_n664()
- fun_l5_n342
-end
-
-def fun_l4_n665()
- fun_l5_n129
-end
-
-def fun_l4_n666()
- fun_l5_n627
-end
-
-def fun_l4_n667()
- fun_l5_n44
-end
-
-def fun_l4_n668()
- fun_l5_n43
-end
-
-def fun_l4_n669()
- fun_l5_n708
-end
-
-def fun_l4_n670()
- fun_l5_n378
-end
-
-def fun_l4_n671()
- fun_l5_n320
-end
-
-def fun_l4_n672()
- fun_l5_n896
-end
-
-def fun_l4_n673()
- fun_l5_n185
-end
-
-def fun_l4_n674()
- fun_l5_n456
-end
-
-def fun_l4_n675()
- fun_l5_n520
-end
-
-def fun_l4_n676()
- fun_l5_n633
-end
-
-def fun_l4_n677()
- fun_l5_n122
-end
-
-def fun_l4_n678()
- fun_l5_n333
-end
-
-def fun_l4_n679()
- fun_l5_n100
-end
-
-def fun_l4_n680()
- fun_l5_n941
-end
-
-def fun_l4_n681()
- fun_l5_n468
-end
-
-def fun_l4_n682()
- fun_l5_n45
-end
-
-def fun_l4_n683()
- fun_l5_n295
-end
-
-def fun_l4_n684()
- fun_l5_n400
-end
-
-def fun_l4_n685()
- fun_l5_n999
-end
-
-def fun_l4_n686()
- fun_l5_n294
-end
-
-def fun_l4_n687()
- fun_l5_n575
-end
-
-def fun_l4_n688()
- fun_l5_n372
-end
-
-def fun_l4_n689()
- fun_l5_n777
-end
-
-def fun_l4_n690()
- fun_l5_n795
-end
-
-def fun_l4_n691()
- fun_l5_n44
-end
-
-def fun_l4_n692()
- fun_l5_n27
-end
-
-def fun_l4_n693()
- fun_l5_n488
-end
-
-def fun_l4_n694()
- fun_l5_n932
-end
-
-def fun_l4_n695()
- fun_l5_n104
-end
-
-def fun_l4_n696()
- fun_l5_n552
-end
-
-def fun_l4_n697()
- fun_l5_n830
-end
-
-def fun_l4_n698()
- fun_l5_n612
-end
-
-def fun_l4_n699()
- fun_l5_n889
-end
-
-def fun_l4_n700()
- fun_l5_n205
-end
-
-def fun_l4_n701()
- fun_l5_n90
-end
-
-def fun_l4_n702()
- fun_l5_n210
-end
-
-def fun_l4_n703()
- fun_l5_n514
-end
-
-def fun_l4_n704()
- fun_l5_n374
-end
-
-def fun_l4_n705()
- fun_l5_n176
-end
-
-def fun_l4_n706()
- fun_l5_n465
-end
-
-def fun_l4_n707()
- fun_l5_n542
-end
-
-def fun_l4_n708()
- fun_l5_n175
-end
-
-def fun_l4_n709()
- fun_l5_n148
-end
-
-def fun_l4_n710()
- fun_l5_n212
-end
-
-def fun_l4_n711()
- fun_l5_n418
-end
-
-def fun_l4_n712()
- fun_l5_n401
-end
-
-def fun_l4_n713()
- fun_l5_n14
-end
-
-def fun_l4_n714()
- fun_l5_n965
-end
-
-def fun_l4_n715()
- fun_l5_n783
-end
-
-def fun_l4_n716()
- fun_l5_n421
-end
-
-def fun_l4_n717()
- fun_l5_n346
-end
-
-def fun_l4_n718()
- fun_l5_n176
-end
-
-def fun_l4_n719()
- fun_l5_n522
-end
-
-def fun_l4_n720()
- fun_l5_n207
-end
-
-def fun_l4_n721()
- fun_l5_n707
-end
-
-def fun_l4_n722()
- fun_l5_n593
-end
-
-def fun_l4_n723()
- fun_l5_n609
-end
-
-def fun_l4_n724()
- fun_l5_n798
-end
-
-def fun_l4_n725()
- fun_l5_n744
-end
-
-def fun_l4_n726()
- fun_l5_n514
-end
-
-def fun_l4_n727()
- fun_l5_n278
-end
-
-def fun_l4_n728()
- fun_l5_n425
-end
-
-def fun_l4_n729()
- fun_l5_n147
-end
-
-def fun_l4_n730()
- fun_l5_n676
-end
-
-def fun_l4_n731()
- fun_l5_n887
-end
-
-def fun_l4_n732()
- fun_l5_n865
-end
-
-def fun_l4_n733()
- fun_l5_n811
-end
-
-def fun_l4_n734()
- fun_l5_n545
-end
-
-def fun_l4_n735()
- fun_l5_n219
-end
-
-def fun_l4_n736()
- fun_l5_n121
-end
-
-def fun_l4_n737()
- fun_l5_n253
-end
-
-def fun_l4_n738()
- fun_l5_n349
-end
-
-def fun_l4_n739()
- fun_l5_n540
-end
-
-def fun_l4_n740()
- fun_l5_n301
-end
-
-def fun_l4_n741()
- fun_l5_n367
-end
-
-def fun_l4_n742()
- fun_l5_n989
-end
-
-def fun_l4_n743()
- fun_l5_n454
-end
-
-def fun_l4_n744()
- fun_l5_n390
-end
-
-def fun_l4_n745()
- fun_l5_n650
-end
-
-def fun_l4_n746()
- fun_l5_n403
-end
-
-def fun_l4_n747()
- fun_l5_n807
-end
-
-def fun_l4_n748()
- fun_l5_n219
-end
-
-def fun_l4_n749()
- fun_l5_n756
-end
-
-def fun_l4_n750()
- fun_l5_n730
-end
-
-def fun_l4_n751()
- fun_l5_n923
-end
-
-def fun_l4_n752()
- fun_l5_n407
-end
-
-def fun_l4_n753()
- fun_l5_n734
-end
-
-def fun_l4_n754()
- fun_l5_n192
-end
-
-def fun_l4_n755()
- fun_l5_n26
-end
-
-def fun_l4_n756()
- fun_l5_n571
-end
-
-def fun_l4_n757()
- fun_l5_n515
-end
-
-def fun_l4_n758()
- fun_l5_n701
-end
-
-def fun_l4_n759()
- fun_l5_n808
-end
-
-def fun_l4_n760()
- fun_l5_n607
-end
-
-def fun_l4_n761()
- fun_l5_n231
-end
-
-def fun_l4_n762()
- fun_l5_n144
-end
-
-def fun_l4_n763()
- fun_l5_n829
-end
-
-def fun_l4_n764()
- fun_l5_n939
-end
-
-def fun_l4_n765()
- fun_l5_n486
-end
-
-def fun_l4_n766()
- fun_l5_n73
-end
-
-def fun_l4_n767()
- fun_l5_n409
-end
-
-def fun_l4_n768()
- fun_l5_n197
-end
-
-def fun_l4_n769()
- fun_l5_n803
-end
-
-def fun_l4_n770()
- fun_l5_n877
-end
-
-def fun_l4_n771()
- fun_l5_n739
-end
-
-def fun_l4_n772()
- fun_l5_n500
-end
-
-def fun_l4_n773()
- fun_l5_n104
-end
-
-def fun_l4_n774()
- fun_l5_n526
-end
-
-def fun_l4_n775()
- fun_l5_n443
-end
-
-def fun_l4_n776()
- fun_l5_n397
-end
-
-def fun_l4_n777()
- fun_l5_n496
-end
-
-def fun_l4_n778()
- fun_l5_n360
-end
-
-def fun_l4_n779()
- fun_l5_n93
-end
-
-def fun_l4_n780()
- fun_l5_n635
-end
-
-def fun_l4_n781()
- fun_l5_n724
-end
-
-def fun_l4_n782()
- fun_l5_n445
-end
-
-def fun_l4_n783()
- fun_l5_n546
-end
-
-def fun_l4_n784()
- fun_l5_n353
-end
-
-def fun_l4_n785()
- fun_l5_n546
-end
-
-def fun_l4_n786()
- fun_l5_n243
-end
-
-def fun_l4_n787()
- fun_l5_n614
-end
-
-def fun_l4_n788()
- fun_l5_n249
-end
-
-def fun_l4_n789()
- fun_l5_n281
-end
-
-def fun_l4_n790()
- fun_l5_n22
-end
-
-def fun_l4_n791()
- fun_l5_n857
-end
-
-def fun_l4_n792()
- fun_l5_n685
-end
-
-def fun_l4_n793()
- fun_l5_n784
-end
-
-def fun_l4_n794()
- fun_l5_n522
-end
-
-def fun_l4_n795()
- fun_l5_n970
-end
-
-def fun_l4_n796()
- fun_l5_n734
-end
-
-def fun_l4_n797()
- fun_l5_n36
-end
-
-def fun_l4_n798()
- fun_l5_n257
-end
-
-def fun_l4_n799()
- fun_l5_n677
-end
-
-def fun_l4_n800()
- fun_l5_n556
-end
-
-def fun_l4_n801()
- fun_l5_n783
-end
-
-def fun_l4_n802()
- fun_l5_n501
-end
-
-def fun_l4_n803()
- fun_l5_n731
-end
-
-def fun_l4_n804()
- fun_l5_n175
-end
-
-def fun_l4_n805()
- fun_l5_n712
-end
-
-def fun_l4_n806()
- fun_l5_n566
-end
-
-def fun_l4_n807()
- fun_l5_n158
-end
-
-def fun_l4_n808()
- fun_l5_n63
-end
-
-def fun_l4_n809()
- fun_l5_n354
-end
-
-def fun_l4_n810()
- fun_l5_n552
-end
-
-def fun_l4_n811()
- fun_l5_n255
-end
-
-def fun_l4_n812()
- fun_l5_n830
-end
-
-def fun_l4_n813()
- fun_l5_n792
-end
-
-def fun_l4_n814()
- fun_l5_n214
-end
-
-def fun_l4_n815()
- fun_l5_n906
-end
-
-def fun_l4_n816()
- fun_l5_n852
-end
-
-def fun_l4_n817()
- fun_l5_n286
-end
-
-def fun_l4_n818()
- fun_l5_n704
-end
-
-def fun_l4_n819()
- fun_l5_n860
-end
-
-def fun_l4_n820()
- fun_l5_n150
-end
-
-def fun_l4_n821()
- fun_l5_n793
-end
-
-def fun_l4_n822()
- fun_l5_n356
-end
-
-def fun_l4_n823()
- fun_l5_n369
-end
-
-def fun_l4_n824()
- fun_l5_n519
-end
-
-def fun_l4_n825()
- fun_l5_n765
-end
-
-def fun_l4_n826()
- fun_l5_n974
-end
-
-def fun_l4_n827()
- fun_l5_n265
-end
-
-def fun_l4_n828()
- fun_l5_n948
-end
-
-def fun_l4_n829()
- fun_l5_n2
-end
-
-def fun_l4_n830()
- fun_l5_n269
-end
-
-def fun_l4_n831()
- fun_l5_n96
-end
-
-def fun_l4_n832()
- fun_l5_n964
-end
-
-def fun_l4_n833()
- fun_l5_n362
-end
-
-def fun_l4_n834()
- fun_l5_n915
-end
-
-def fun_l4_n835()
- fun_l5_n179
-end
-
-def fun_l4_n836()
- fun_l5_n128
-end
-
-def fun_l4_n837()
- fun_l5_n195
-end
-
-def fun_l4_n838()
- fun_l5_n393
-end
-
-def fun_l4_n839()
- fun_l5_n120
-end
-
-def fun_l4_n840()
- fun_l5_n239
-end
-
-def fun_l4_n841()
- fun_l5_n669
-end
-
-def fun_l4_n842()
- fun_l5_n234
-end
-
-def fun_l4_n843()
- fun_l5_n60
-end
-
-def fun_l4_n844()
- fun_l5_n962
-end
-
-def fun_l4_n845()
- fun_l5_n770
-end
-
-def fun_l4_n846()
- fun_l5_n207
-end
-
-def fun_l4_n847()
- fun_l5_n46
-end
-
-def fun_l4_n848()
- fun_l5_n615
-end
-
-def fun_l4_n849()
- fun_l5_n709
-end
-
-def fun_l4_n850()
- fun_l5_n198
-end
-
-def fun_l4_n851()
- fun_l5_n639
-end
-
-def fun_l4_n852()
- fun_l5_n125
-end
-
-def fun_l4_n853()
- fun_l5_n193
-end
-
-def fun_l4_n854()
- fun_l5_n806
-end
-
-def fun_l4_n855()
- fun_l5_n237
-end
-
-def fun_l4_n856()
- fun_l5_n319
-end
-
-def fun_l4_n857()
- fun_l5_n533
-end
-
-def fun_l4_n858()
- fun_l5_n320
-end
-
-def fun_l4_n859()
- fun_l5_n501
-end
-
-def fun_l4_n860()
- fun_l5_n404
-end
-
-def fun_l4_n861()
- fun_l5_n849
-end
-
-def fun_l4_n862()
- fun_l5_n743
-end
-
-def fun_l4_n863()
- fun_l5_n764
-end
-
-def fun_l4_n864()
- fun_l5_n956
-end
-
-def fun_l4_n865()
- fun_l5_n914
-end
-
-def fun_l4_n866()
- fun_l5_n652
-end
-
-def fun_l4_n867()
- fun_l5_n30
-end
-
-def fun_l4_n868()
- fun_l5_n330
-end
-
-def fun_l4_n869()
- fun_l5_n677
-end
-
-def fun_l4_n870()
- fun_l5_n988
-end
-
-def fun_l4_n871()
- fun_l5_n676
-end
-
-def fun_l4_n872()
- fun_l5_n752
-end
-
-def fun_l4_n873()
- fun_l5_n636
-end
-
-def fun_l4_n874()
- fun_l5_n395
-end
-
-def fun_l4_n875()
- fun_l5_n428
-end
-
-def fun_l4_n876()
- fun_l5_n83
-end
-
-def fun_l4_n877()
- fun_l5_n712
-end
-
-def fun_l4_n878()
- fun_l5_n708
-end
-
-def fun_l4_n879()
- fun_l5_n418
-end
-
-def fun_l4_n880()
- fun_l5_n265
-end
-
-def fun_l4_n881()
- fun_l5_n379
-end
-
-def fun_l4_n882()
- fun_l5_n758
-end
-
-def fun_l4_n883()
- fun_l5_n251
-end
-
-def fun_l4_n884()
- fun_l5_n723
-end
-
-def fun_l4_n885()
- fun_l5_n216
-end
-
-def fun_l4_n886()
- fun_l5_n197
-end
-
-def fun_l4_n887()
- fun_l5_n261
-end
-
-def fun_l4_n888()
- fun_l5_n62
-end
-
-def fun_l4_n889()
- fun_l5_n941
-end
-
-def fun_l4_n890()
- fun_l5_n535
-end
-
-def fun_l4_n891()
- fun_l5_n727
-end
-
-def fun_l4_n892()
- fun_l5_n279
-end
-
-def fun_l4_n893()
- fun_l5_n541
-end
-
-def fun_l4_n894()
- fun_l5_n684
-end
-
-def fun_l4_n895()
- fun_l5_n649
-end
-
-def fun_l4_n896()
- fun_l5_n396
-end
-
-def fun_l4_n897()
- fun_l5_n992
-end
-
-def fun_l4_n898()
- fun_l5_n160
-end
-
-def fun_l4_n899()
- fun_l5_n84
-end
-
-def fun_l4_n900()
- fun_l5_n318
-end
-
-def fun_l4_n901()
- fun_l5_n428
-end
-
-def fun_l4_n902()
- fun_l5_n534
-end
-
-def fun_l4_n903()
- fun_l5_n25
-end
-
-def fun_l4_n904()
- fun_l5_n392
-end
-
-def fun_l4_n905()
- fun_l5_n926
-end
-
-def fun_l4_n906()
- fun_l5_n724
-end
-
-def fun_l4_n907()
- fun_l5_n311
-end
-
-def fun_l4_n908()
- fun_l5_n535
-end
-
-def fun_l4_n909()
- fun_l5_n179
-end
-
-def fun_l4_n910()
- fun_l5_n533
-end
-
-def fun_l4_n911()
- fun_l5_n875
-end
-
-def fun_l4_n912()
- fun_l5_n105
-end
-
-def fun_l4_n913()
- fun_l5_n618
-end
-
-def fun_l4_n914()
- fun_l5_n827
-end
-
-def fun_l4_n915()
- fun_l5_n555
-end
-
-def fun_l4_n916()
- fun_l5_n339
-end
-
-def fun_l4_n917()
- fun_l5_n848
-end
-
-def fun_l4_n918()
- fun_l5_n676
-end
-
-def fun_l4_n919()
- fun_l5_n204
-end
-
-def fun_l4_n920()
- fun_l5_n769
-end
-
-def fun_l4_n921()
- fun_l5_n229
-end
-
-def fun_l4_n922()
- fun_l5_n92
-end
-
-def fun_l4_n923()
- fun_l5_n973
-end
-
-def fun_l4_n924()
- fun_l5_n700
-end
-
-def fun_l4_n925()
- fun_l5_n581
-end
-
-def fun_l4_n926()
- fun_l5_n138
-end
-
-def fun_l4_n927()
- fun_l5_n43
-end
-
-def fun_l4_n928()
- fun_l5_n537
-end
-
-def fun_l4_n929()
- fun_l5_n882
-end
-
-def fun_l4_n930()
- fun_l5_n871
-end
-
-def fun_l4_n931()
- fun_l5_n158
-end
-
-def fun_l4_n932()
- fun_l5_n542
-end
-
-def fun_l4_n933()
- fun_l5_n468
-end
-
-def fun_l4_n934()
- fun_l5_n28
-end
-
-def fun_l4_n935()
- fun_l5_n976
-end
-
-def fun_l4_n936()
- fun_l5_n632
-end
-
-def fun_l4_n937()
- fun_l5_n857
-end
-
-def fun_l4_n938()
- fun_l5_n841
-end
-
-def fun_l4_n939()
- fun_l5_n762
-end
-
-def fun_l4_n940()
- fun_l5_n522
-end
-
-def fun_l4_n941()
- fun_l5_n841
-end
-
-def fun_l4_n942()
- fun_l5_n42
-end
-
-def fun_l4_n943()
- fun_l5_n771
-end
-
-def fun_l4_n944()
- fun_l5_n145
-end
-
-def fun_l4_n945()
- fun_l5_n435
-end
-
-def fun_l4_n946()
- fun_l5_n573
-end
-
-def fun_l4_n947()
- fun_l5_n422
-end
-
-def fun_l4_n948()
- fun_l5_n34
-end
-
-def fun_l4_n949()
- fun_l5_n577
-end
-
-def fun_l4_n950()
- fun_l5_n156
-end
-
-def fun_l4_n951()
- fun_l5_n707
-end
-
-def fun_l4_n952()
- fun_l5_n198
-end
-
-def fun_l4_n953()
- fun_l5_n950
-end
-
-def fun_l4_n954()
- fun_l5_n474
-end
-
-def fun_l4_n955()
- fun_l5_n319
-end
-
-def fun_l4_n956()
- fun_l5_n208
-end
-
-def fun_l4_n957()
- fun_l5_n360
-end
-
-def fun_l4_n958()
- fun_l5_n101
-end
-
-def fun_l4_n959()
- fun_l5_n37
-end
-
-def fun_l4_n960()
- fun_l5_n20
-end
-
-def fun_l4_n961()
- fun_l5_n897
-end
-
-def fun_l4_n962()
- fun_l5_n92
-end
-
-def fun_l4_n963()
- fun_l5_n105
-end
-
-def fun_l4_n964()
- fun_l5_n255
-end
-
-def fun_l4_n965()
- fun_l5_n97
-end
-
-def fun_l4_n966()
- fun_l5_n398
-end
-
-def fun_l4_n967()
- fun_l5_n393
-end
-
-def fun_l4_n968()
- fun_l5_n135
-end
-
-def fun_l4_n969()
- fun_l5_n306
-end
-
-def fun_l4_n970()
- fun_l5_n202
-end
-
-def fun_l4_n971()
- fun_l5_n832
-end
-
-def fun_l4_n972()
- fun_l5_n444
-end
-
-def fun_l4_n973()
- fun_l5_n768
-end
-
-def fun_l4_n974()
- fun_l5_n384
-end
-
-def fun_l4_n975()
- fun_l5_n142
-end
-
-def fun_l4_n976()
- fun_l5_n208
-end
-
-def fun_l4_n977()
- fun_l5_n818
-end
-
-def fun_l4_n978()
- fun_l5_n5
-end
-
-def fun_l4_n979()
- fun_l5_n410
-end
-
-def fun_l4_n980()
- fun_l5_n713
-end
-
-def fun_l4_n981()
- fun_l5_n42
-end
-
-def fun_l4_n982()
- fun_l5_n335
-end
-
-def fun_l4_n983()
- fun_l5_n446
-end
-
-def fun_l4_n984()
- fun_l5_n957
-end
-
-def fun_l4_n985()
- fun_l5_n652
-end
-
-def fun_l4_n986()
- fun_l5_n341
-end
-
-def fun_l4_n987()
- fun_l5_n300
-end
-
-def fun_l4_n988()
- fun_l5_n859
-end
-
-def fun_l4_n989()
- fun_l5_n467
-end
-
-def fun_l4_n990()
- fun_l5_n182
-end
-
-def fun_l4_n991()
- fun_l5_n755
-end
-
-def fun_l4_n992()
- fun_l5_n925
-end
-
-def fun_l4_n993()
- fun_l5_n695
-end
-
-def fun_l4_n994()
- fun_l5_n901
-end
-
-def fun_l4_n995()
- fun_l5_n844
-end
-
-def fun_l4_n996()
- fun_l5_n430
-end
-
-def fun_l4_n997()
- fun_l5_n568
-end
-
-def fun_l4_n998()
- fun_l5_n472
-end
-
-def fun_l4_n999()
- fun_l5_n871
-end
-
-def fun_l5_n0()
- fun_l6_n383
-end
-
-def fun_l5_n1()
- fun_l6_n172
-end
-
-def fun_l5_n2()
- fun_l6_n405
-end
-
-def fun_l5_n3()
- fun_l6_n960
-end
-
-def fun_l5_n4()
- fun_l6_n846
-end
-
-def fun_l5_n5()
- fun_l6_n207
-end
-
-def fun_l5_n6()
- fun_l6_n217
-end
-
-def fun_l5_n7()
- fun_l6_n317
-end
-
-def fun_l5_n8()
- fun_l6_n628
-end
-
-def fun_l5_n9()
- fun_l6_n407
-end
-
-def fun_l5_n10()
- fun_l6_n933
-end
-
-def fun_l5_n11()
- fun_l6_n318
-end
-
-def fun_l5_n12()
- fun_l6_n349
-end
-
-def fun_l5_n13()
- fun_l6_n559
-end
-
-def fun_l5_n14()
- fun_l6_n352
-end
-
-def fun_l5_n15()
- fun_l6_n531
-end
-
-def fun_l5_n16()
- fun_l6_n6
-end
-
-def fun_l5_n17()
- fun_l6_n285
-end
-
-def fun_l5_n18()
- fun_l6_n419
-end
-
-def fun_l5_n19()
- fun_l6_n232
-end
-
-def fun_l5_n20()
- fun_l6_n285
-end
-
-def fun_l5_n21()
- fun_l6_n814
-end
-
-def fun_l5_n22()
- fun_l6_n773
-end
-
-def fun_l5_n23()
- fun_l6_n771
-end
-
-def fun_l5_n24()
- fun_l6_n903
-end
-
-def fun_l5_n25()
- fun_l6_n116
-end
-
-def fun_l5_n26()
- fun_l6_n116
-end
-
-def fun_l5_n27()
- fun_l6_n531
-end
-
-def fun_l5_n28()
- fun_l6_n418
-end
-
-def fun_l5_n29()
- fun_l6_n564
-end
-
-def fun_l5_n30()
- fun_l6_n691
-end
-
-def fun_l5_n31()
- fun_l6_n267
-end
-
-def fun_l5_n32()
- fun_l6_n209
-end
-
-def fun_l5_n33()
- fun_l6_n27
-end
-
-def fun_l5_n34()
- fun_l6_n312
-end
-
-def fun_l5_n35()
- fun_l6_n240
-end
-
-def fun_l5_n36()
- fun_l6_n507
-end
-
-def fun_l5_n37()
- fun_l6_n808
-end
-
-def fun_l5_n38()
- fun_l6_n28
-end
-
-def fun_l5_n39()
- fun_l6_n33
-end
-
-def fun_l5_n40()
- fun_l6_n808
-end
-
-def fun_l5_n41()
- fun_l6_n15
-end
-
-def fun_l5_n42()
- fun_l6_n995
-end
-
-def fun_l5_n43()
- fun_l6_n886
-end
-
-def fun_l5_n44()
- fun_l6_n164
-end
-
-def fun_l5_n45()
- fun_l6_n804
-end
-
-def fun_l5_n46()
- fun_l6_n776
-end
-
-def fun_l5_n47()
- fun_l6_n584
-end
-
-def fun_l5_n48()
- fun_l6_n220
-end
-
-def fun_l5_n49()
- fun_l6_n680
-end
-
-def fun_l5_n50()
- fun_l6_n438
-end
-
-def fun_l5_n51()
- fun_l6_n565
-end
-
-def fun_l5_n52()
- fun_l6_n394
-end
-
-def fun_l5_n53()
- fun_l6_n867
-end
-
-def fun_l5_n54()
- fun_l6_n468
-end
-
-def fun_l5_n55()
- fun_l6_n622
-end
-
-def fun_l5_n56()
- fun_l6_n846
-end
-
-def fun_l5_n57()
- fun_l6_n718
-end
-
-def fun_l5_n58()
- fun_l6_n367
-end
-
-def fun_l5_n59()
- fun_l6_n284
-end
-
-def fun_l5_n60()
- fun_l6_n350
-end
-
-def fun_l5_n61()
- fun_l6_n849
-end
-
-def fun_l5_n62()
- fun_l6_n537
-end
-
-def fun_l5_n63()
- fun_l6_n475
-end
-
-def fun_l5_n64()
- fun_l6_n525
-end
-
-def fun_l5_n65()
- fun_l6_n416
-end
-
-def fun_l5_n66()
- fun_l6_n261
-end
-
-def fun_l5_n67()
- fun_l6_n528
-end
-
-def fun_l5_n68()
- fun_l6_n331
-end
-
-def fun_l5_n69()
- fun_l6_n387
-end
-
-def fun_l5_n70()
- fun_l6_n780
-end
-
-def fun_l5_n71()
- fun_l6_n542
-end
-
-def fun_l5_n72()
- fun_l6_n930
-end
-
-def fun_l5_n73()
- fun_l6_n79
-end
-
-def fun_l5_n74()
- fun_l6_n351
-end
-
-def fun_l5_n75()
- fun_l6_n290
-end
-
-def fun_l5_n76()
- fun_l6_n659
-end
-
-def fun_l5_n77()
- fun_l6_n421
-end
-
-def fun_l5_n78()
- fun_l6_n454
-end
-
-def fun_l5_n79()
- fun_l6_n78
-end
-
-def fun_l5_n80()
- fun_l6_n63
-end
-
-def fun_l5_n81()
- fun_l6_n555
-end
-
-def fun_l5_n82()
- fun_l6_n54
-end
-
-def fun_l5_n83()
- fun_l6_n46
-end
-
-def fun_l5_n84()
- fun_l6_n225
-end
-
-def fun_l5_n85()
- fun_l6_n330
-end
-
-def fun_l5_n86()
- fun_l6_n772
-end
-
-def fun_l5_n87()
- fun_l6_n654
-end
-
-def fun_l5_n88()
- fun_l6_n281
-end
-
-def fun_l5_n89()
- fun_l6_n857
-end
-
-def fun_l5_n90()
- fun_l6_n453
-end
-
-def fun_l5_n91()
- fun_l6_n504
-end
-
-def fun_l5_n92()
- fun_l6_n649
-end
-
-def fun_l5_n93()
- fun_l6_n90
-end
-
-def fun_l5_n94()
- fun_l6_n520
-end
-
-def fun_l5_n95()
- fun_l6_n251
-end
-
-def fun_l5_n96()
- fun_l6_n738
-end
-
-def fun_l5_n97()
- fun_l6_n837
-end
-
-def fun_l5_n98()
- fun_l6_n98
-end
-
-def fun_l5_n99()
- fun_l6_n844
-end
-
-def fun_l5_n100()
- fun_l6_n699
-end
-
-def fun_l5_n101()
- fun_l6_n901
-end
-
-def fun_l5_n102()
- fun_l6_n342
-end
-
-def fun_l5_n103()
- fun_l6_n856
-end
-
-def fun_l5_n104()
- fun_l6_n113
-end
-
-def fun_l5_n105()
- fun_l6_n530
-end
-
-def fun_l5_n106()
- fun_l6_n445
-end
-
-def fun_l5_n107()
- fun_l6_n515
-end
-
-def fun_l5_n108()
- fun_l6_n958
-end
-
-def fun_l5_n109()
- fun_l6_n561
-end
-
-def fun_l5_n110()
- fun_l6_n130
-end
-
-def fun_l5_n111()
- fun_l6_n653
-end
-
-def fun_l5_n112()
- fun_l6_n367
-end
-
-def fun_l5_n113()
- fun_l6_n515
-end
-
-def fun_l5_n114()
- fun_l6_n50
-end
-
-def fun_l5_n115()
- fun_l6_n259
-end
-
-def fun_l5_n116()
- fun_l6_n280
-end
-
-def fun_l5_n117()
- fun_l6_n589
-end
-
-def fun_l5_n118()
- fun_l6_n988
-end
-
-def fun_l5_n119()
- fun_l6_n544
-end
-
-def fun_l5_n120()
- fun_l6_n564
-end
-
-def fun_l5_n121()
- fun_l6_n468
-end
-
-def fun_l5_n122()
- fun_l6_n586
-end
-
-def fun_l5_n123()
- fun_l6_n705
-end
-
-def fun_l5_n124()
- fun_l6_n510
-end
-
-def fun_l5_n125()
- fun_l6_n995
-end
-
-def fun_l5_n126()
- fun_l6_n576
-end
-
-def fun_l5_n127()
- fun_l6_n221
-end
-
-def fun_l5_n128()
- fun_l6_n498
-end
-
-def fun_l5_n129()
- fun_l6_n113
-end
-
-def fun_l5_n130()
- fun_l6_n916
-end
-
-def fun_l5_n131()
- fun_l6_n626
-end
-
-def fun_l5_n132()
- fun_l6_n635
-end
-
-def fun_l5_n133()
- fun_l6_n605
-end
-
-def fun_l5_n134()
- fun_l6_n931
-end
-
-def fun_l5_n135()
- fun_l6_n282
-end
-
-def fun_l5_n136()
- fun_l6_n904
-end
-
-def fun_l5_n137()
- fun_l6_n522
-end
-
-def fun_l5_n138()
- fun_l6_n255
-end
-
-def fun_l5_n139()
- fun_l6_n308
-end
-
-def fun_l5_n140()
- fun_l6_n482
-end
-
-def fun_l5_n141()
- fun_l6_n911
-end
-
-def fun_l5_n142()
- fun_l6_n640
-end
-
-def fun_l5_n143()
- fun_l6_n783
-end
-
-def fun_l5_n144()
- fun_l6_n980
-end
-
-def fun_l5_n145()
- fun_l6_n85
-end
-
-def fun_l5_n146()
- fun_l6_n181
-end
-
-def fun_l5_n147()
- fun_l6_n963
-end
-
-def fun_l5_n148()
- fun_l6_n516
-end
-
-def fun_l5_n149()
- fun_l6_n315
-end
-
-def fun_l5_n150()
- fun_l6_n822
-end
-
-def fun_l5_n151()
- fun_l6_n528
-end
-
-def fun_l5_n152()
- fun_l6_n220
-end
-
-def fun_l5_n153()
- fun_l6_n13
-end
-
-def fun_l5_n154()
- fun_l6_n172
-end
-
-def fun_l5_n155()
- fun_l6_n987
-end
-
-def fun_l5_n156()
- fun_l6_n414
-end
-
-def fun_l5_n157()
- fun_l6_n758
-end
-
-def fun_l5_n158()
- fun_l6_n889
-end
-
-def fun_l5_n159()
- fun_l6_n526
-end
-
-def fun_l5_n160()
- fun_l6_n576
-end
-
-def fun_l5_n161()
- fun_l6_n35
-end
-
-def fun_l5_n162()
- fun_l6_n382
-end
-
-def fun_l5_n163()
- fun_l6_n503
-end
-
-def fun_l5_n164()
- fun_l6_n950
-end
-
-def fun_l5_n165()
- fun_l6_n796
-end
-
-def fun_l5_n166()
- fun_l6_n72
-end
-
-def fun_l5_n167()
- fun_l6_n258
-end
-
-def fun_l5_n168()
- fun_l6_n624
-end
-
-def fun_l5_n169()
- fun_l6_n146
-end
-
-def fun_l5_n170()
- fun_l6_n202
-end
-
-def fun_l5_n171()
- fun_l6_n18
-end
-
-def fun_l5_n172()
- fun_l6_n822
-end
-
-def fun_l5_n173()
- fun_l6_n839
-end
-
-def fun_l5_n174()
- fun_l6_n201
-end
-
-def fun_l5_n175()
- fun_l6_n109
-end
-
-def fun_l5_n176()
- fun_l6_n265
-end
-
-def fun_l5_n177()
- fun_l6_n899
-end
-
-def fun_l5_n178()
- fun_l6_n805
-end
-
-def fun_l5_n179()
- fun_l6_n245
-end
-
-def fun_l5_n180()
- fun_l6_n309
-end
-
-def fun_l5_n181()
- fun_l6_n31
-end
-
-def fun_l5_n182()
- fun_l6_n642
-end
-
-def fun_l5_n183()
- fun_l6_n552
-end
-
-def fun_l5_n184()
- fun_l6_n217
-end
-
-def fun_l5_n185()
- fun_l6_n382
-end
-
-def fun_l5_n186()
- fun_l6_n642
-end
-
-def fun_l5_n187()
- fun_l6_n415
-end
-
-def fun_l5_n188()
- fun_l6_n246
-end
-
-def fun_l5_n189()
- fun_l6_n754
-end
-
-def fun_l5_n190()
- fun_l6_n869
-end
-
-def fun_l5_n191()
- fun_l6_n944
-end
-
-def fun_l5_n192()
- fun_l6_n558
-end
-
-def fun_l5_n193()
- fun_l6_n548
-end
-
-def fun_l5_n194()
- fun_l6_n156
-end
-
-def fun_l5_n195()
- fun_l6_n507
-end
-
-def fun_l5_n196()
- fun_l6_n897
-end
-
-def fun_l5_n197()
- fun_l6_n297
-end
-
-def fun_l5_n198()
- fun_l6_n775
-end
-
-def fun_l5_n199()
- fun_l6_n897
-end
-
-def fun_l5_n200()
- fun_l6_n232
-end
-
-def fun_l5_n201()
- fun_l6_n341
-end
-
-def fun_l5_n202()
- fun_l6_n881
-end
-
-def fun_l5_n203()
- fun_l6_n757
-end
-
-def fun_l5_n204()
- fun_l6_n673
-end
-
-def fun_l5_n205()
- fun_l6_n753
-end
-
-def fun_l5_n206()
- fun_l6_n191
-end
-
-def fun_l5_n207()
- fun_l6_n768
-end
-
-def fun_l5_n208()
- fun_l6_n963
-end
-
-def fun_l5_n209()
- fun_l6_n102
-end
-
-def fun_l5_n210()
- fun_l6_n355
-end
-
-def fun_l5_n211()
- fun_l6_n838
-end
-
-def fun_l5_n212()
- fun_l6_n388
-end
-
-def fun_l5_n213()
- fun_l6_n840
-end
-
-def fun_l5_n214()
- fun_l6_n501
-end
-
-def fun_l5_n215()
- fun_l6_n792
-end
-
-def fun_l5_n216()
- fun_l6_n360
-end
-
-def fun_l5_n217()
- fun_l6_n70
-end
-
-def fun_l5_n218()
- fun_l6_n887
-end
-
-def fun_l5_n219()
- fun_l6_n57
-end
-
-def fun_l5_n220()
- fun_l6_n595
-end
-
-def fun_l5_n221()
- fun_l6_n988
-end
-
-def fun_l5_n222()
- fun_l6_n191
-end
-
-def fun_l5_n223()
- fun_l6_n667
-end
-
-def fun_l5_n224()
- fun_l6_n410
-end
-
-def fun_l5_n225()
- fun_l6_n636
-end
-
-def fun_l5_n226()
- fun_l6_n669
-end
-
-def fun_l5_n227()
- fun_l6_n980
-end
-
-def fun_l5_n228()
- fun_l6_n521
-end
-
-def fun_l5_n229()
- fun_l6_n707
-end
-
-def fun_l5_n230()
- fun_l6_n757
-end
-
-def fun_l5_n231()
- fun_l6_n360
-end
-
-def fun_l5_n232()
- fun_l6_n480
-end
-
-def fun_l5_n233()
- fun_l6_n8
-end
-
-def fun_l5_n234()
- fun_l6_n47
-end
-
-def fun_l5_n235()
- fun_l6_n985
-end
-
-def fun_l5_n236()
- fun_l6_n331
-end
-
-def fun_l5_n237()
- fun_l6_n314
-end
-
-def fun_l5_n238()
- fun_l6_n666
-end
-
-def fun_l5_n239()
- fun_l6_n289
-end
-
-def fun_l5_n240()
- fun_l6_n487
-end
-
-def fun_l5_n241()
- fun_l6_n298
-end
-
-def fun_l5_n242()
- fun_l6_n460
-end
-
-def fun_l5_n243()
- fun_l6_n63
-end
-
-def fun_l5_n244()
- fun_l6_n898
-end
-
-def fun_l5_n245()
- fun_l6_n706
-end
-
-def fun_l5_n246()
- fun_l6_n276
-end
-
-def fun_l5_n247()
- fun_l6_n709
-end
-
-def fun_l5_n248()
- fun_l6_n60
-end
-
-def fun_l5_n249()
- fun_l6_n53
-end
-
-def fun_l5_n250()
- fun_l6_n396
-end
-
-def fun_l5_n251()
- fun_l6_n124
-end
-
-def fun_l5_n252()
- fun_l6_n713
-end
-
-def fun_l5_n253()
- fun_l6_n208
-end
-
-def fun_l5_n254()
- fun_l6_n345
-end
-
-def fun_l5_n255()
- fun_l6_n976
-end
-
-def fun_l5_n256()
- fun_l6_n775
-end
-
-def fun_l5_n257()
- fun_l6_n20
-end
-
-def fun_l5_n258()
- fun_l6_n476
-end
-
-def fun_l5_n259()
- fun_l6_n80
-end
-
-def fun_l5_n260()
- fun_l6_n160
-end
-
-def fun_l5_n261()
- fun_l6_n624
-end
-
-def fun_l5_n262()
- fun_l6_n275
-end
-
-def fun_l5_n263()
- fun_l6_n301
-end
-
-def fun_l5_n264()
- fun_l6_n640
-end
-
-def fun_l5_n265()
- fun_l6_n473
-end
-
-def fun_l5_n266()
- fun_l6_n991
-end
-
-def fun_l5_n267()
- fun_l6_n458
-end
-
-def fun_l5_n268()
- fun_l6_n128
-end
-
-def fun_l5_n269()
- fun_l6_n28
-end
-
-def fun_l5_n270()
- fun_l6_n40
-end
-
-def fun_l5_n271()
- fun_l6_n48
-end
-
-def fun_l5_n272()
- fun_l6_n916
-end
-
-def fun_l5_n273()
- fun_l6_n114
-end
-
-def fun_l5_n274()
- fun_l6_n747
-end
-
-def fun_l5_n275()
- fun_l6_n239
-end
-
-def fun_l5_n276()
- fun_l6_n151
-end
-
-def fun_l5_n277()
- fun_l6_n820
-end
-
-def fun_l5_n278()
- fun_l6_n684
-end
-
-def fun_l5_n279()
- fun_l6_n628
-end
-
-def fun_l5_n280()
- fun_l6_n248
-end
-
-def fun_l5_n281()
- fun_l6_n793
-end
-
-def fun_l5_n282()
- fun_l6_n137
-end
-
-def fun_l5_n283()
- fun_l6_n520
-end
-
-def fun_l5_n284()
- fun_l6_n750
-end
-
-def fun_l5_n285()
- fun_l6_n445
-end
-
-def fun_l5_n286()
- fun_l6_n419
-end
-
-def fun_l5_n287()
- fun_l6_n681
-end
-
-def fun_l5_n288()
- fun_l6_n16
-end
-
-def fun_l5_n289()
- fun_l6_n939
-end
-
-def fun_l5_n290()
- fun_l6_n664
-end
-
-def fun_l5_n291()
- fun_l6_n580
-end
-
-def fun_l5_n292()
- fun_l6_n945
-end
-
-def fun_l5_n293()
- fun_l6_n129
-end
-
-def fun_l5_n294()
- fun_l6_n142
-end
-
-def fun_l5_n295()
- fun_l6_n774
-end
-
-def fun_l5_n296()
- fun_l6_n667
-end
-
-def fun_l5_n297()
- fun_l6_n659
-end
-
-def fun_l5_n298()
- fun_l6_n82
-end
-
-def fun_l5_n299()
- fun_l6_n452
-end
-
-def fun_l5_n300()
- fun_l6_n340
-end
-
-def fun_l5_n301()
- fun_l6_n675
-end
-
-def fun_l5_n302()
- fun_l6_n506
-end
-
-def fun_l5_n303()
- fun_l6_n166
-end
-
-def fun_l5_n304()
- fun_l6_n220
-end
-
-def fun_l5_n305()
- fun_l6_n894
-end
-
-def fun_l5_n306()
- fun_l6_n467
-end
-
-def fun_l5_n307()
- fun_l6_n204
-end
-
-def fun_l5_n308()
- fun_l6_n580
-end
-
-def fun_l5_n309()
- fun_l6_n90
-end
-
-def fun_l5_n310()
- fun_l6_n854
-end
-
-def fun_l5_n311()
- fun_l6_n384
-end
-
-def fun_l5_n312()
- fun_l6_n540
-end
-
-def fun_l5_n313()
- fun_l6_n314
-end
-
-def fun_l5_n314()
- fun_l6_n90
-end
-
-def fun_l5_n315()
- fun_l6_n106
-end
-
-def fun_l5_n316()
- fun_l6_n404
-end
-
-def fun_l5_n317()
- fun_l6_n396
-end
-
-def fun_l5_n318()
- fun_l6_n229
-end
-
-def fun_l5_n319()
- fun_l6_n137
-end
-
-def fun_l5_n320()
- fun_l6_n781
-end
-
-def fun_l5_n321()
- fun_l6_n949
-end
-
-def fun_l5_n322()
- fun_l6_n810
-end
-
-def fun_l5_n323()
- fun_l6_n574
-end
-
-def fun_l5_n324()
- fun_l6_n465
-end
-
-def fun_l5_n325()
- fun_l6_n785
-end
-
-def fun_l5_n326()
- fun_l6_n408
-end
-
-def fun_l5_n327()
- fun_l6_n658
-end
-
-def fun_l5_n328()
- fun_l6_n1
-end
-
-def fun_l5_n329()
- fun_l6_n586
-end
-
-def fun_l5_n330()
- fun_l6_n375
-end
-
-def fun_l5_n331()
- fun_l6_n950
-end
-
-def fun_l5_n332()
- fun_l6_n924
-end
-
-def fun_l5_n333()
- fun_l6_n224
-end
-
-def fun_l5_n334()
- fun_l6_n786
-end
-
-def fun_l5_n335()
- fun_l6_n184
-end
-
-def fun_l5_n336()
- fun_l6_n125
-end
-
-def fun_l5_n337()
- fun_l6_n215
-end
-
-def fun_l5_n338()
- fun_l6_n110
-end
-
-def fun_l5_n339()
- fun_l6_n16
-end
-
-def fun_l5_n340()
- fun_l6_n746
-end
-
-def fun_l5_n341()
- fun_l6_n50
-end
-
-def fun_l5_n342()
- fun_l6_n198
-end
-
-def fun_l5_n343()
- fun_l6_n735
-end
-
-def fun_l5_n344()
- fun_l6_n260
-end
-
-def fun_l5_n345()
- fun_l6_n481
-end
-
-def fun_l5_n346()
- fun_l6_n100
-end
-
-def fun_l5_n347()
- fun_l6_n581
-end
-
-def fun_l5_n348()
- fun_l6_n803
-end
-
-def fun_l5_n349()
- fun_l6_n495
-end
-
-def fun_l5_n350()
- fun_l6_n316
-end
-
-def fun_l5_n351()
- fun_l6_n810
-end
-
-def fun_l5_n352()
- fun_l6_n21
-end
-
-def fun_l5_n353()
- fun_l6_n409
-end
-
-def fun_l5_n354()
- fun_l6_n814
-end
-
-def fun_l5_n355()
- fun_l6_n525
-end
-
-def fun_l5_n356()
- fun_l6_n445
-end
-
-def fun_l5_n357()
- fun_l6_n940
-end
-
-def fun_l5_n358()
- fun_l6_n508
-end
-
-def fun_l5_n359()
- fun_l6_n511
-end
-
-def fun_l5_n360()
- fun_l6_n29
-end
-
-def fun_l5_n361()
- fun_l6_n272
-end
-
-def fun_l5_n362()
- fun_l6_n715
-end
-
-def fun_l5_n363()
- fun_l6_n518
-end
-
-def fun_l5_n364()
- fun_l6_n392
-end
-
-def fun_l5_n365()
- fun_l6_n762
-end
-
-def fun_l5_n366()
- fun_l6_n250
-end
-
-def fun_l5_n367()
- fun_l6_n192
-end
-
-def fun_l5_n368()
- fun_l6_n741
-end
-
-def fun_l5_n369()
- fun_l6_n340
-end
-
-def fun_l5_n370()
- fun_l6_n891
-end
-
-def fun_l5_n371()
- fun_l6_n22
-end
-
-def fun_l5_n372()
- fun_l6_n369
-end
-
-def fun_l5_n373()
- fun_l6_n653
-end
-
-def fun_l5_n374()
- fun_l6_n282
-end
-
-def fun_l5_n375()
- fun_l6_n7
-end
-
-def fun_l5_n376()
- fun_l6_n511
-end
-
-def fun_l5_n377()
- fun_l6_n511
-end
-
-def fun_l5_n378()
- fun_l6_n718
-end
-
-def fun_l5_n379()
- fun_l6_n521
-end
-
-def fun_l5_n380()
- fun_l6_n331
-end
-
-def fun_l5_n381()
- fun_l6_n343
-end
-
-def fun_l5_n382()
- fun_l6_n411
-end
-
-def fun_l5_n383()
- fun_l6_n780
-end
-
-def fun_l5_n384()
- fun_l6_n398
-end
-
-def fun_l5_n385()
- fun_l6_n173
-end
-
-def fun_l5_n386()
- fun_l6_n693
-end
-
-def fun_l5_n387()
- fun_l6_n360
-end
-
-def fun_l5_n388()
- fun_l6_n146
-end
-
-def fun_l5_n389()
- fun_l6_n796
-end
-
-def fun_l5_n390()
- fun_l6_n403
-end
-
-def fun_l5_n391()
- fun_l6_n662
-end
-
-def fun_l5_n392()
- fun_l6_n281
-end
-
-def fun_l5_n393()
- fun_l6_n617
-end
-
-def fun_l5_n394()
- fun_l6_n367
-end
-
-def fun_l5_n395()
- fun_l6_n433
-end
-
-def fun_l5_n396()
- fun_l6_n748
-end
-
-def fun_l5_n397()
- fun_l6_n600
-end
-
-def fun_l5_n398()
- fun_l6_n490
-end
-
-def fun_l5_n399()
- fun_l6_n120
-end
-
-def fun_l5_n400()
- fun_l6_n549
-end
-
-def fun_l5_n401()
- fun_l6_n148
-end
-
-def fun_l5_n402()
- fun_l6_n488
-end
-
-def fun_l5_n403()
- fun_l6_n316
-end
-
-def fun_l5_n404()
- fun_l6_n106
-end
-
-def fun_l5_n405()
- fun_l6_n702
-end
-
-def fun_l5_n406()
- fun_l6_n787
-end
-
-def fun_l5_n407()
- fun_l6_n9
-end
-
-def fun_l5_n408()
- fun_l6_n338
-end
-
-def fun_l5_n409()
- fun_l6_n83
-end
-
-def fun_l5_n410()
- fun_l6_n234
-end
-
-def fun_l5_n411()
- fun_l6_n147
-end
-
-def fun_l5_n412()
- fun_l6_n602
-end
-
-def fun_l5_n413()
- fun_l6_n173
-end
-
-def fun_l5_n414()
- fun_l6_n420
-end
-
-def fun_l5_n415()
- fun_l6_n214
-end
-
-def fun_l5_n416()
- fun_l6_n400
-end
-
-def fun_l5_n417()
- fun_l6_n35
-end
-
-def fun_l5_n418()
- fun_l6_n545
-end
-
-def fun_l5_n419()
- fun_l6_n823
-end
-
-def fun_l5_n420()
- fun_l6_n401
-end
-
-def fun_l5_n421()
- fun_l6_n447
-end
-
-def fun_l5_n422()
- fun_l6_n461
-end
-
-def fun_l5_n423()
- fun_l6_n447
-end
-
-def fun_l5_n424()
- fun_l6_n530
-end
-
-def fun_l5_n425()
- fun_l6_n104
-end
-
-def fun_l5_n426()
- fun_l6_n206
-end
-
-def fun_l5_n427()
- fun_l6_n25
-end
-
-def fun_l5_n428()
- fun_l6_n867
-end
-
-def fun_l5_n429()
- fun_l6_n160
-end
-
-def fun_l5_n430()
- fun_l6_n152
-end
-
-def fun_l5_n431()
- fun_l6_n308
-end
-
-def fun_l5_n432()
- fun_l6_n603
-end
-
-def fun_l5_n433()
- fun_l6_n270
-end
-
-def fun_l5_n434()
- fun_l6_n397
-end
-
-def fun_l5_n435()
- fun_l6_n819
-end
-
-def fun_l5_n436()
- fun_l6_n476
-end
-
-def fun_l5_n437()
- fun_l6_n533
-end
-
-def fun_l5_n438()
- fun_l6_n989
-end
-
-def fun_l5_n439()
- fun_l6_n329
-end
-
-def fun_l5_n440()
- fun_l6_n216
-end
-
-def fun_l5_n441()
- fun_l6_n54
-end
-
-def fun_l5_n442()
- fun_l6_n374
-end
-
-def fun_l5_n443()
- fun_l6_n544
-end
-
-def fun_l5_n444()
- fun_l6_n586
-end
-
-def fun_l5_n445()
- fun_l6_n137
-end
-
-def fun_l5_n446()
- fun_l6_n115
-end
-
-def fun_l5_n447()
- fun_l6_n908
-end
-
-def fun_l5_n448()
- fun_l6_n657
-end
-
-def fun_l5_n449()
- fun_l6_n876
-end
-
-def fun_l5_n450()
- fun_l6_n585
-end
-
-def fun_l5_n451()
- fun_l6_n159
-end
-
-def fun_l5_n452()
- fun_l6_n66
-end
-
-def fun_l5_n453()
- fun_l6_n327
-end
-
-def fun_l5_n454()
- fun_l6_n441
-end
-
-def fun_l5_n455()
- fun_l6_n399
-end
-
-def fun_l5_n456()
- fun_l6_n335
-end
-
-def fun_l5_n457()
- fun_l6_n820
-end
-
-def fun_l5_n458()
- fun_l6_n494
-end
-
-def fun_l5_n459()
- fun_l6_n683
-end
-
-def fun_l5_n460()
- fun_l6_n453
-end
-
-def fun_l5_n461()
- fun_l6_n202
-end
-
-def fun_l5_n462()
- fun_l6_n274
-end
-
-def fun_l5_n463()
- fun_l6_n493
-end
-
-def fun_l5_n464()
- fun_l6_n874
-end
-
-def fun_l5_n465()
- fun_l6_n882
-end
-
-def fun_l5_n466()
- fun_l6_n706
-end
-
-def fun_l5_n467()
- fun_l6_n356
-end
-
-def fun_l5_n468()
- fun_l6_n21
-end
-
-def fun_l5_n469()
- fun_l6_n131
-end
-
-def fun_l5_n470()
- fun_l6_n818
-end
-
-def fun_l5_n471()
- fun_l6_n58
-end
-
-def fun_l5_n472()
- fun_l6_n606
-end
-
-def fun_l5_n473()
- fun_l6_n368
-end
-
-def fun_l5_n474()
- fun_l6_n266
-end
-
-def fun_l5_n475()
- fun_l6_n910
-end
-
-def fun_l5_n476()
- fun_l6_n406
-end
-
-def fun_l5_n477()
- fun_l6_n522
-end
-
-def fun_l5_n478()
- fun_l6_n479
-end
-
-def fun_l5_n479()
- fun_l6_n247
-end
-
-def fun_l5_n480()
- fun_l6_n785
-end
-
-def fun_l5_n481()
- fun_l6_n953
-end
-
-def fun_l5_n482()
- fun_l6_n443
-end
-
-def fun_l5_n483()
- fun_l6_n834
-end
-
-def fun_l5_n484()
- fun_l6_n494
-end
-
-def fun_l5_n485()
- fun_l6_n65
-end
-
-def fun_l5_n486()
- fun_l6_n93
-end
-
-def fun_l5_n487()
- fun_l6_n702
-end
-
-def fun_l5_n488()
- fun_l6_n571
-end
-
-def fun_l5_n489()
- fun_l6_n233
-end
-
-def fun_l5_n490()
- fun_l6_n106
-end
-
-def fun_l5_n491()
- fun_l6_n806
-end
-
-def fun_l5_n492()
- fun_l6_n795
-end
-
-def fun_l5_n493()
- fun_l6_n273
-end
-
-def fun_l5_n494()
- fun_l6_n943
-end
-
-def fun_l5_n495()
- fun_l6_n710
-end
-
-def fun_l5_n496()
- fun_l6_n419
-end
-
-def fun_l5_n497()
- fun_l6_n758
-end
-
-def fun_l5_n498()
- fun_l6_n677
-end
-
-def fun_l5_n499()
- fun_l6_n573
-end
-
-def fun_l5_n500()
- fun_l6_n576
-end
-
-def fun_l5_n501()
- fun_l6_n654
-end
-
-def fun_l5_n502()
- fun_l6_n497
-end
-
-def fun_l5_n503()
- fun_l6_n75
-end
-
-def fun_l5_n504()
- fun_l6_n660
-end
-
-def fun_l5_n505()
- fun_l6_n923
-end
-
-def fun_l5_n506()
- fun_l6_n250
-end
-
-def fun_l5_n507()
- fun_l6_n648
-end
-
-def fun_l5_n508()
- fun_l6_n785
-end
-
-def fun_l5_n509()
- fun_l6_n158
-end
-
-def fun_l5_n510()
- fun_l6_n564
-end
-
-def fun_l5_n511()
- fun_l6_n916
-end
-
-def fun_l5_n512()
- fun_l6_n943
-end
-
-def fun_l5_n513()
- fun_l6_n468
-end
-
-def fun_l5_n514()
- fun_l6_n165
-end
-
-def fun_l5_n515()
- fun_l6_n566
-end
-
-def fun_l5_n516()
- fun_l6_n280
-end
-
-def fun_l5_n517()
- fun_l6_n998
-end
-
-def fun_l5_n518()
- fun_l6_n282
-end
-
-def fun_l5_n519()
- fun_l6_n419
-end
-
-def fun_l5_n520()
- fun_l6_n10
-end
-
-def fun_l5_n521()
- fun_l6_n298
-end
-
-def fun_l5_n522()
- fun_l6_n571
-end
-
-def fun_l5_n523()
- fun_l6_n873
-end
-
-def fun_l5_n524()
- fun_l6_n165
-end
-
-def fun_l5_n525()
- fun_l6_n807
-end
-
-def fun_l5_n526()
- fun_l6_n194
-end
-
-def fun_l5_n527()
- fun_l6_n410
-end
-
-def fun_l5_n528()
- fun_l6_n377
-end
-
-def fun_l5_n529()
- fun_l6_n328
-end
-
-def fun_l5_n530()
- fun_l6_n322
-end
-
-def fun_l5_n531()
- fun_l6_n760
-end
-
-def fun_l5_n532()
- fun_l6_n738
-end
-
-def fun_l5_n533()
- fun_l6_n388
-end
-
-def fun_l5_n534()
- fun_l6_n609
-end
-
-def fun_l5_n535()
- fun_l6_n808
-end
-
-def fun_l5_n536()
- fun_l6_n686
-end
-
-def fun_l5_n537()
- fun_l6_n825
-end
-
-def fun_l5_n538()
- fun_l6_n940
-end
-
-def fun_l5_n539()
- fun_l6_n147
-end
-
-def fun_l5_n540()
- fun_l6_n851
-end
-
-def fun_l5_n541()
- fun_l6_n983
-end
-
-def fun_l5_n542()
- fun_l6_n938
-end
-
-def fun_l5_n543()
- fun_l6_n323
-end
-
-def fun_l5_n544()
- fun_l6_n662
-end
-
-def fun_l5_n545()
- fun_l6_n611
-end
-
-def fun_l5_n546()
- fun_l6_n185
-end
-
-def fun_l5_n547()
- fun_l6_n321
-end
-
-def fun_l5_n548()
- fun_l6_n353
-end
-
-def fun_l5_n549()
- fun_l6_n240
-end
-
-def fun_l5_n550()
- fun_l6_n69
-end
-
-def fun_l5_n551()
- fun_l6_n58
-end
-
-def fun_l5_n552()
- fun_l6_n108
-end
-
-def fun_l5_n553()
- fun_l6_n169
-end
-
-def fun_l5_n554()
- fun_l6_n649
-end
-
-def fun_l5_n555()
- fun_l6_n28
-end
-
-def fun_l5_n556()
- fun_l6_n136
-end
-
-def fun_l5_n557()
- fun_l6_n958
-end
-
-def fun_l5_n558()
- fun_l6_n107
-end
-
-def fun_l5_n559()
- fun_l6_n495
-end
-
-def fun_l5_n560()
- fun_l6_n927
-end
-
-def fun_l5_n561()
- fun_l6_n994
-end
-
-def fun_l5_n562()
- fun_l6_n134
-end
-
-def fun_l5_n563()
- fun_l6_n393
-end
-
-def fun_l5_n564()
- fun_l6_n73
-end
-
-def fun_l5_n565()
- fun_l6_n860
-end
-
-def fun_l5_n566()
- fun_l6_n763
-end
-
-def fun_l5_n567()
- fun_l6_n545
-end
-
-def fun_l5_n568()
- fun_l6_n429
-end
-
-def fun_l5_n569()
- fun_l6_n430
-end
-
-def fun_l5_n570()
- fun_l6_n50
-end
-
-def fun_l5_n571()
- fun_l6_n574
-end
-
-def fun_l5_n572()
- fun_l6_n195
-end
-
-def fun_l5_n573()
- fun_l6_n327
-end
-
-def fun_l5_n574()
- fun_l6_n207
-end
-
-def fun_l5_n575()
- fun_l6_n669
-end
-
-def fun_l5_n576()
- fun_l6_n978
-end
-
-def fun_l5_n577()
- fun_l6_n60
-end
-
-def fun_l5_n578()
- fun_l6_n561
-end
-
-def fun_l5_n579()
- fun_l6_n298
-end
-
-def fun_l5_n580()
- fun_l6_n790
-end
-
-def fun_l5_n581()
- fun_l6_n887
-end
-
-def fun_l5_n582()
- fun_l6_n516
-end
-
-def fun_l5_n583()
- fun_l6_n895
-end
-
-def fun_l5_n584()
- fun_l6_n345
-end
-
-def fun_l5_n585()
- fun_l6_n117
-end
-
-def fun_l5_n586()
- fun_l6_n493
-end
-
-def fun_l5_n587()
- fun_l6_n84
-end
-
-def fun_l5_n588()
- fun_l6_n62
-end
-
-def fun_l5_n589()
- fun_l6_n91
-end
-
-def fun_l5_n590()
- fun_l6_n113
-end
-
-def fun_l5_n591()
- fun_l6_n568
-end
-
-def fun_l5_n592()
- fun_l6_n273
-end
-
-def fun_l5_n593()
- fun_l6_n557
-end
-
-def fun_l5_n594()
- fun_l6_n528
-end
-
-def fun_l5_n595()
- fun_l6_n283
-end
-
-def fun_l5_n596()
- fun_l6_n962
-end
-
-def fun_l5_n597()
- fun_l6_n140
-end
-
-def fun_l5_n598()
- fun_l6_n780
-end
-
-def fun_l5_n599()
- fun_l6_n220
-end
-
-def fun_l5_n600()
- fun_l6_n43
-end
-
-def fun_l5_n601()
- fun_l6_n256
-end
-
-def fun_l5_n602()
- fun_l6_n619
-end
-
-def fun_l5_n603()
- fun_l6_n873
-end
-
-def fun_l5_n604()
- fun_l6_n975
-end
-
-def fun_l5_n605()
- fun_l6_n308
-end
-
-def fun_l5_n606()
- fun_l6_n519
-end
-
-def fun_l5_n607()
- fun_l6_n356
-end
-
-def fun_l5_n608()
- fun_l6_n7
-end
-
-def fun_l5_n609()
- fun_l6_n161
-end
-
-def fun_l5_n610()
- fun_l6_n122
-end
-
-def fun_l5_n611()
- fun_l6_n311
-end
-
-def fun_l5_n612()
- fun_l6_n130
-end
-
-def fun_l5_n613()
- fun_l6_n603
-end
-
-def fun_l5_n614()
- fun_l6_n53
-end
-
-def fun_l5_n615()
- fun_l6_n478
-end
-
-def fun_l5_n616()
- fun_l6_n585
-end
-
-def fun_l5_n617()
- fun_l6_n639
-end
-
-def fun_l5_n618()
- fun_l6_n943
-end
-
-def fun_l5_n619()
- fun_l6_n432
-end
-
-def fun_l5_n620()
- fun_l6_n959
-end
-
-def fun_l5_n621()
- fun_l6_n220
-end
-
-def fun_l5_n622()
- fun_l6_n243
-end
-
-def fun_l5_n623()
- fun_l6_n755
-end
-
-def fun_l5_n624()
- fun_l6_n312
-end
-
-def fun_l5_n625()
- fun_l6_n61
-end
-
-def fun_l5_n626()
- fun_l6_n290
-end
-
-def fun_l5_n627()
- fun_l6_n452
-end
-
-def fun_l5_n628()
- fun_l6_n225
-end
-
-def fun_l5_n629()
- fun_l6_n69
-end
-
-def fun_l5_n630()
- fun_l6_n329
-end
-
-def fun_l5_n631()
- fun_l6_n24
-end
-
-def fun_l5_n632()
- fun_l6_n798
-end
-
-def fun_l5_n633()
- fun_l6_n931
-end
-
-def fun_l5_n634()
- fun_l6_n801
-end
-
-def fun_l5_n635()
- fun_l6_n725
-end
-
-def fun_l5_n636()
- fun_l6_n839
-end
-
-def fun_l5_n637()
- fun_l6_n870
-end
-
-def fun_l5_n638()
- fun_l6_n847
-end
-
-def fun_l5_n639()
- fun_l6_n448
-end
-
-def fun_l5_n640()
- fun_l6_n46
-end
-
-def fun_l5_n641()
- fun_l6_n359
-end
-
-def fun_l5_n642()
- fun_l6_n102
-end
-
-def fun_l5_n643()
- fun_l6_n149
-end
-
-def fun_l5_n644()
- fun_l6_n126
-end
-
-def fun_l5_n645()
- fun_l6_n72
-end
-
-def fun_l5_n646()
- fun_l6_n320
-end
-
-def fun_l5_n647()
- fun_l6_n483
-end
-
-def fun_l5_n648()
- fun_l6_n797
-end
-
-def fun_l5_n649()
- fun_l6_n130
-end
-
-def fun_l5_n650()
- fun_l6_n711
-end
-
-def fun_l5_n651()
- fun_l6_n979
-end
-
-def fun_l5_n652()
- fun_l6_n534
-end
-
-def fun_l5_n653()
- fun_l6_n335
-end
-
-def fun_l5_n654()
- fun_l6_n181
-end
-
-def fun_l5_n655()
- fun_l6_n435
-end
-
-def fun_l5_n656()
- fun_l6_n412
-end
-
-def fun_l5_n657()
- fun_l6_n247
-end
-
-def fun_l5_n658()
- fun_l6_n450
-end
-
-def fun_l5_n659()
- fun_l6_n367
-end
-
-def fun_l5_n660()
- fun_l6_n220
-end
-
-def fun_l5_n661()
- fun_l6_n410
-end
-
-def fun_l5_n662()
- fun_l6_n739
-end
-
-def fun_l5_n663()
- fun_l6_n846
-end
-
-def fun_l5_n664()
- fun_l6_n238
-end
-
-def fun_l5_n665()
- fun_l6_n419
-end
-
-def fun_l5_n666()
- fun_l6_n687
-end
-
-def fun_l5_n667()
- fun_l6_n229
-end
-
-def fun_l5_n668()
- fun_l6_n129
-end
-
-def fun_l5_n669()
- fun_l6_n767
-end
-
-def fun_l5_n670()
- fun_l6_n809
-end
-
-def fun_l5_n671()
- fun_l6_n301
-end
-
-def fun_l5_n672()
- fun_l6_n268
-end
-
-def fun_l5_n673()
- fun_l6_n635
-end
-
-def fun_l5_n674()
- fun_l6_n623
-end
-
-def fun_l5_n675()
- fun_l6_n601
-end
-
-def fun_l5_n676()
- fun_l6_n464
-end
-
-def fun_l5_n677()
- fun_l6_n285
-end
-
-def fun_l5_n678()
- fun_l6_n536
-end
-
-def fun_l5_n679()
- fun_l6_n233
-end
-
-def fun_l5_n680()
- fun_l6_n78
-end
-
-def fun_l5_n681()
- fun_l6_n644
-end
-
-def fun_l5_n682()
- fun_l6_n289
-end
-
-def fun_l5_n683()
- fun_l6_n314
-end
-
-def fun_l5_n684()
- fun_l6_n743
-end
-
-def fun_l5_n685()
- fun_l6_n444
-end
-
-def fun_l5_n686()
- fun_l6_n645
-end
-
-def fun_l5_n687()
- fun_l6_n800
-end
-
-def fun_l5_n688()
- fun_l6_n507
-end
-
-def fun_l5_n689()
- fun_l6_n675
-end
-
-def fun_l5_n690()
- fun_l6_n231
-end
-
-def fun_l5_n691()
- fun_l6_n595
-end
-
-def fun_l5_n692()
- fun_l6_n675
-end
-
-def fun_l5_n693()
- fun_l6_n555
-end
-
-def fun_l5_n694()
- fun_l6_n35
-end
-
-def fun_l5_n695()
- fun_l6_n342
-end
-
-def fun_l5_n696()
- fun_l6_n250
-end
-
-def fun_l5_n697()
- fun_l6_n706
-end
-
-def fun_l5_n698()
- fun_l6_n550
-end
-
-def fun_l5_n699()
- fun_l6_n446
-end
-
-def fun_l5_n700()
- fun_l6_n190
-end
-
-def fun_l5_n701()
- fun_l6_n404
-end
-
-def fun_l5_n702()
- fun_l6_n545
-end
-
-def fun_l5_n703()
- fun_l6_n721
-end
-
-def fun_l5_n704()
- fun_l6_n681
-end
-
-def fun_l5_n705()
- fun_l6_n760
-end
-
-def fun_l5_n706()
- fun_l6_n853
-end
-
-def fun_l5_n707()
- fun_l6_n847
-end
-
-def fun_l5_n708()
- fun_l6_n661
-end
-
-def fun_l5_n709()
- fun_l6_n257
-end
-
-def fun_l5_n710()
- fun_l6_n151
-end
-
-def fun_l5_n711()
- fun_l6_n120
-end
-
-def fun_l5_n712()
- fun_l6_n701
-end
-
-def fun_l5_n713()
- fun_l6_n89
-end
-
-def fun_l5_n714()
- fun_l6_n443
-end
-
-def fun_l5_n715()
- fun_l6_n969
-end
-
-def fun_l5_n716()
- fun_l6_n879
-end
-
-def fun_l5_n717()
- fun_l6_n525
-end
-
-def fun_l5_n718()
- fun_l6_n471
-end
-
-def fun_l5_n719()
- fun_l6_n762
-end
-
-def fun_l5_n720()
- fun_l6_n803
-end
-
-def fun_l5_n721()
- fun_l6_n741
-end
-
-def fun_l5_n722()
- fun_l6_n279
-end
-
-def fun_l5_n723()
- fun_l6_n903
-end
-
-def fun_l5_n724()
- fun_l6_n20
-end
-
-def fun_l5_n725()
- fun_l6_n930
-end
-
-def fun_l5_n726()
- fun_l6_n504
-end
-
-def fun_l5_n727()
- fun_l6_n978
-end
-
-def fun_l5_n728()
- fun_l6_n304
-end
-
-def fun_l5_n729()
- fun_l6_n133
-end
-
-def fun_l5_n730()
- fun_l6_n430
-end
-
-def fun_l5_n731()
- fun_l6_n917
-end
-
-def fun_l5_n732()
- fun_l6_n987
-end
-
-def fun_l5_n733()
- fun_l6_n24
-end
-
-def fun_l5_n734()
- fun_l6_n884
-end
-
-def fun_l5_n735()
- fun_l6_n928
-end
-
-def fun_l5_n736()
- fun_l6_n126
-end
-
-def fun_l5_n737()
- fun_l6_n425
-end
-
-def fun_l5_n738()
- fun_l6_n113
-end
-
-def fun_l5_n739()
- fun_l6_n779
-end
-
-def fun_l5_n740()
- fun_l6_n649
-end
-
-def fun_l5_n741()
- fun_l6_n352
-end
-
-def fun_l5_n742()
- fun_l6_n369
-end
-
-def fun_l5_n743()
- fun_l6_n13
-end
-
-def fun_l5_n744()
- fun_l6_n460
-end
-
-def fun_l5_n745()
- fun_l6_n476
-end
-
-def fun_l5_n746()
- fun_l6_n146
-end
-
-def fun_l5_n747()
- fun_l6_n38
-end
-
-def fun_l5_n748()
- fun_l6_n86
-end
-
-def fun_l5_n749()
- fun_l6_n875
-end
-
-def fun_l5_n750()
- fun_l6_n812
-end
-
-def fun_l5_n751()
- fun_l6_n282
-end
-
-def fun_l5_n752()
- fun_l6_n474
-end
-
-def fun_l5_n753()
- fun_l6_n546
-end
-
-def fun_l5_n754()
- fun_l6_n107
-end
-
-def fun_l5_n755()
- fun_l6_n550
-end
-
-def fun_l5_n756()
- fun_l6_n868
-end
-
-def fun_l5_n757()
- fun_l6_n149
-end
-
-def fun_l5_n758()
- fun_l6_n662
-end
-
-def fun_l5_n759()
- fun_l6_n642
-end
-
-def fun_l5_n760()
- fun_l6_n760
-end
-
-def fun_l5_n761()
- fun_l6_n530
-end
-
-def fun_l5_n762()
- fun_l6_n765
-end
-
-def fun_l5_n763()
- fun_l6_n634
-end
-
-def fun_l5_n764()
- fun_l6_n946
-end
-
-def fun_l5_n765()
- fun_l6_n423
-end
-
-def fun_l5_n766()
- fun_l6_n478
-end
-
-def fun_l5_n767()
- fun_l6_n142
-end
-
-def fun_l5_n768()
- fun_l6_n550
-end
-
-def fun_l5_n769()
- fun_l6_n610
-end
-
-def fun_l5_n770()
- fun_l6_n340
-end
-
-def fun_l5_n771()
- fun_l6_n29
-end
-
-def fun_l5_n772()
- fun_l6_n164
-end
-
-def fun_l5_n773()
- fun_l6_n476
-end
-
-def fun_l5_n774()
- fun_l6_n48
-end
-
-def fun_l5_n775()
- fun_l6_n123
-end
-
-def fun_l5_n776()
- fun_l6_n879
-end
-
-def fun_l5_n777()
- fun_l6_n958
-end
-
-def fun_l5_n778()
- fun_l6_n100
-end
-
-def fun_l5_n779()
- fun_l6_n927
-end
-
-def fun_l5_n780()
- fun_l6_n105
-end
-
-def fun_l5_n781()
- fun_l6_n360
-end
-
-def fun_l5_n782()
- fun_l6_n327
-end
-
-def fun_l5_n783()
- fun_l6_n677
-end
-
-def fun_l5_n784()
- fun_l6_n378
-end
-
-def fun_l5_n785()
- fun_l6_n9
-end
-
-def fun_l5_n786()
- fun_l6_n692
-end
-
-def fun_l5_n787()
- fun_l6_n952
-end
-
-def fun_l5_n788()
- fun_l6_n156
-end
-
-def fun_l5_n789()
- fun_l6_n222
-end
-
-def fun_l5_n790()
- fun_l6_n419
-end
-
-def fun_l5_n791()
- fun_l6_n128
-end
-
-def fun_l5_n792()
- fun_l6_n311
-end
-
-def fun_l5_n793()
- fun_l6_n610
-end
-
-def fun_l5_n794()
- fun_l6_n897
-end
-
-def fun_l5_n795()
- fun_l6_n806
-end
-
-def fun_l5_n796()
- fun_l6_n291
-end
-
-def fun_l5_n797()
- fun_l6_n942
-end
-
-def fun_l5_n798()
- fun_l6_n208
-end
-
-def fun_l5_n799()
- fun_l6_n776
-end
-
-def fun_l5_n800()
- fun_l6_n866
-end
-
-def fun_l5_n801()
- fun_l6_n132
-end
-
-def fun_l5_n802()
- fun_l6_n436
-end
-
-def fun_l5_n803()
- fun_l6_n804
-end
-
-def fun_l5_n804()
- fun_l6_n810
-end
-
-def fun_l5_n805()
- fun_l6_n302
-end
-
-def fun_l5_n806()
- fun_l6_n501
-end
-
-def fun_l5_n807()
- fun_l6_n812
-end
-
-def fun_l5_n808()
- fun_l6_n861
-end
-
-def fun_l5_n809()
- fun_l6_n359
-end
-
-def fun_l5_n810()
- fun_l6_n366
-end
-
-def fun_l5_n811()
- fun_l6_n855
-end
-
-def fun_l5_n812()
- fun_l6_n960
-end
-
-def fun_l5_n813()
- fun_l6_n868
-end
-
-def fun_l5_n814()
- fun_l6_n101
-end
-
-def fun_l5_n815()
- fun_l6_n540
-end
-
-def fun_l5_n816()
- fun_l6_n486
-end
-
-def fun_l5_n817()
- fun_l6_n896
-end
-
-def fun_l5_n818()
- fun_l6_n240
-end
-
-def fun_l5_n819()
- fun_l6_n425
-end
-
-def fun_l5_n820()
- fun_l6_n408
-end
-
-def fun_l5_n821()
- fun_l6_n779
-end
-
-def fun_l5_n822()
- fun_l6_n486
-end
-
-def fun_l5_n823()
- fun_l6_n903
-end
-
-def fun_l5_n824()
- fun_l6_n957
-end
-
-def fun_l5_n825()
- fun_l6_n213
-end
-
-def fun_l5_n826()
- fun_l6_n326
-end
-
-def fun_l5_n827()
- fun_l6_n944
-end
-
-def fun_l5_n828()
- fun_l6_n772
-end
-
-def fun_l5_n829()
- fun_l6_n879
-end
-
-def fun_l5_n830()
- fun_l6_n406
-end
-
-def fun_l5_n831()
- fun_l6_n488
-end
-
-def fun_l5_n832()
- fun_l6_n615
-end
-
-def fun_l5_n833()
- fun_l6_n113
-end
-
-def fun_l5_n834()
- fun_l6_n826
-end
-
-def fun_l5_n835()
- fun_l6_n621
-end
-
-def fun_l5_n836()
- fun_l6_n520
-end
-
-def fun_l5_n837()
- fun_l6_n729
-end
-
-def fun_l5_n838()
- fun_l6_n83
-end
-
-def fun_l5_n839()
- fun_l6_n616
-end
-
-def fun_l5_n840()
- fun_l6_n477
-end
-
-def fun_l5_n841()
- fun_l6_n25
-end
-
-def fun_l5_n842()
- fun_l6_n391
-end
-
-def fun_l5_n843()
- fun_l6_n974
-end
-
-def fun_l5_n844()
- fun_l6_n970
-end
-
-def fun_l5_n845()
- fun_l6_n316
-end
-
-def fun_l5_n846()
- fun_l6_n596
-end
-
-def fun_l5_n847()
- fun_l6_n518
-end
-
-def fun_l5_n848()
- fun_l6_n437
-end
-
-def fun_l5_n849()
- fun_l6_n268
-end
-
-def fun_l5_n850()
- fun_l6_n347
-end
-
-def fun_l5_n851()
- fun_l6_n110
-end
-
-def fun_l5_n852()
- fun_l6_n783
-end
-
-def fun_l5_n853()
- fun_l6_n503
-end
-
-def fun_l5_n854()
- fun_l6_n56
-end
-
-def fun_l5_n855()
- fun_l6_n294
-end
-
-def fun_l5_n856()
- fun_l6_n145
-end
-
-def fun_l5_n857()
- fun_l6_n627
-end
-
-def fun_l5_n858()
- fun_l6_n917
-end
-
-def fun_l5_n859()
- fun_l6_n242
-end
-
-def fun_l5_n860()
- fun_l6_n35
-end
-
-def fun_l5_n861()
- fun_l6_n883
-end
-
-def fun_l5_n862()
- fun_l6_n766
-end
-
-def fun_l5_n863()
- fun_l6_n877
-end
-
-def fun_l5_n864()
- fun_l6_n974
-end
-
-def fun_l5_n865()
- fun_l6_n525
-end
-
-def fun_l5_n866()
- fun_l6_n490
-end
-
-def fun_l5_n867()
- fun_l6_n920
-end
-
-def fun_l5_n868()
- fun_l6_n28
-end
-
-def fun_l5_n869()
- fun_l6_n855
-end
-
-def fun_l5_n870()
- fun_l6_n246
-end
-
-def fun_l5_n871()
- fun_l6_n60
-end
-
-def fun_l5_n872()
- fun_l6_n868
-end
-
-def fun_l5_n873()
- fun_l6_n706
-end
-
-def fun_l5_n874()
- fun_l6_n629
-end
-
-def fun_l5_n875()
- fun_l6_n44
-end
-
-def fun_l5_n876()
- fun_l6_n521
-end
-
-def fun_l5_n877()
- fun_l6_n607
-end
-
-def fun_l5_n878()
- fun_l6_n385
-end
-
-def fun_l5_n879()
- fun_l6_n109
-end
-
-def fun_l5_n880()
- fun_l6_n296
-end
-
-def fun_l5_n881()
- fun_l6_n466
-end
-
-def fun_l5_n882()
- fun_l6_n933
-end
-
-def fun_l5_n883()
- fun_l6_n529
-end
-
-def fun_l5_n884()
- fun_l6_n863
-end
-
-def fun_l5_n885()
- fun_l6_n112
-end
-
-def fun_l5_n886()
- fun_l6_n262
-end
-
-def fun_l5_n887()
- fun_l6_n853
-end
-
-def fun_l5_n888()
- fun_l6_n657
-end
-
-def fun_l5_n889()
- fun_l6_n860
-end
-
-def fun_l5_n890()
- fun_l6_n878
-end
-
-def fun_l5_n891()
- fun_l6_n810
-end
-
-def fun_l5_n892()
- fun_l6_n285
-end
-
-def fun_l5_n893()
- fun_l6_n319
-end
-
-def fun_l5_n894()
- fun_l6_n927
-end
-
-def fun_l5_n895()
- fun_l6_n530
-end
-
-def fun_l5_n896()
- fun_l6_n874
-end
-
-def fun_l5_n897()
- fun_l6_n522
-end
-
-def fun_l5_n898()
- fun_l6_n31
-end
-
-def fun_l5_n899()
- fun_l6_n292
-end
-
-def fun_l5_n900()
- fun_l6_n847
-end
-
-def fun_l5_n901()
- fun_l6_n989
-end
-
-def fun_l5_n902()
- fun_l6_n435
-end
-
-def fun_l5_n903()
- fun_l6_n368
-end
-
-def fun_l5_n904()
- fun_l6_n320
-end
-
-def fun_l5_n905()
- fun_l6_n889
-end
-
-def fun_l5_n906()
- fun_l6_n101
-end
-
-def fun_l5_n907()
- fun_l6_n717
-end
-
-def fun_l5_n908()
- fun_l6_n456
-end
-
-def fun_l5_n909()
- fun_l6_n448
-end
-
-def fun_l5_n910()
- fun_l6_n523
-end
-
-def fun_l5_n911()
- fun_l6_n604
-end
-
-def fun_l5_n912()
- fun_l6_n429
-end
-
-def fun_l5_n913()
- fun_l6_n947
-end
-
-def fun_l5_n914()
- fun_l6_n804
-end
-
-def fun_l5_n915()
- fun_l6_n665
-end
-
-def fun_l5_n916()
- fun_l6_n195
-end
-
-def fun_l5_n917()
- fun_l6_n803
-end
-
-def fun_l5_n918()
- fun_l6_n957
-end
-
-def fun_l5_n919()
- fun_l6_n187
-end
-
-def fun_l5_n920()
- fun_l6_n489
-end
-
-def fun_l5_n921()
- fun_l6_n315
-end
-
-def fun_l5_n922()
- fun_l6_n216
-end
-
-def fun_l5_n923()
- fun_l6_n482
-end
-
-def fun_l5_n924()
- fun_l6_n20
-end
-
-def fun_l5_n925()
- fun_l6_n941
-end
-
-def fun_l5_n926()
- fun_l6_n73
-end
-
-def fun_l5_n927()
- fun_l6_n563
-end
-
-def fun_l5_n928()
- fun_l6_n179
-end
-
-def fun_l5_n929()
- fun_l6_n861
-end
-
-def fun_l5_n930()
- fun_l6_n811
-end
-
-def fun_l5_n931()
- fun_l6_n996
-end
-
-def fun_l5_n932()
- fun_l6_n25
-end
-
-def fun_l5_n933()
- fun_l6_n232
-end
-
-def fun_l5_n934()
- fun_l6_n671
-end
-
-def fun_l5_n935()
- fun_l6_n162
-end
-
-def fun_l5_n936()
- fun_l6_n363
-end
-
-def fun_l5_n937()
- fun_l6_n517
-end
-
-def fun_l5_n938()
- fun_l6_n655
-end
-
-def fun_l5_n939()
- fun_l6_n825
-end
-
-def fun_l5_n940()
- fun_l6_n58
-end
-
-def fun_l5_n941()
- fun_l6_n440
-end
-
-def fun_l5_n942()
- fun_l6_n106
-end
-
-def fun_l5_n943()
- fun_l6_n218
-end
-
-def fun_l5_n944()
- fun_l6_n580
-end
-
-def fun_l5_n945()
- fun_l6_n63
-end
-
-def fun_l5_n946()
- fun_l6_n116
-end
-
-def fun_l5_n947()
- fun_l6_n329
-end
-
-def fun_l5_n948()
- fun_l6_n511
-end
-
-def fun_l5_n949()
- fun_l6_n499
-end
-
-def fun_l5_n950()
- fun_l6_n469
-end
-
-def fun_l5_n951()
- fun_l6_n18
-end
-
-def fun_l5_n952()
- fun_l6_n200
-end
-
-def fun_l5_n953()
- fun_l6_n924
-end
-
-def fun_l5_n954()
- fun_l6_n879
-end
-
-def fun_l5_n955()
- fun_l6_n959
-end
-
-def fun_l5_n956()
- fun_l6_n867
-end
-
-def fun_l5_n957()
- fun_l6_n650
-end
-
-def fun_l5_n958()
- fun_l6_n481
-end
-
-def fun_l5_n959()
- fun_l6_n892
-end
-
-def fun_l5_n960()
- fun_l6_n499
-end
-
-def fun_l5_n961()
- fun_l6_n406
-end
-
-def fun_l5_n962()
- fun_l6_n762
-end
-
-def fun_l5_n963()
- fun_l6_n479
-end
-
-def fun_l5_n964()
- fun_l6_n869
-end
-
-def fun_l5_n965()
- fun_l6_n321
-end
-
-def fun_l5_n966()
- fun_l6_n722
-end
-
-def fun_l5_n967()
- fun_l6_n834
-end
-
-def fun_l5_n968()
- fun_l6_n873
-end
-
-def fun_l5_n969()
- fun_l6_n295
-end
-
-def fun_l5_n970()
- fun_l6_n394
-end
-
-def fun_l5_n971()
- fun_l6_n944
-end
-
-def fun_l5_n972()
- fun_l6_n335
-end
-
-def fun_l5_n973()
- fun_l6_n958
-end
-
-def fun_l5_n974()
- fun_l6_n159
-end
-
-def fun_l5_n975()
- fun_l6_n336
-end
-
-def fun_l5_n976()
- fun_l6_n979
-end
-
-def fun_l5_n977()
- fun_l6_n106
-end
-
-def fun_l5_n978()
- fun_l6_n587
-end
-
-def fun_l5_n979()
- fun_l6_n693
-end
-
-def fun_l5_n980()
- fun_l6_n633
-end
-
-def fun_l5_n981()
- fun_l6_n359
-end
-
-def fun_l5_n982()
- fun_l6_n118
-end
-
-def fun_l5_n983()
- fun_l6_n689
-end
-
-def fun_l5_n984()
- fun_l6_n398
-end
-
-def fun_l5_n985()
- fun_l6_n985
-end
-
-def fun_l5_n986()
- fun_l6_n381
-end
-
-def fun_l5_n987()
- fun_l6_n322
-end
-
-def fun_l5_n988()
- fun_l6_n817
-end
-
-def fun_l5_n989()
- fun_l6_n793
-end
-
-def fun_l5_n990()
- fun_l6_n619
-end
-
-def fun_l5_n991()
- fun_l6_n876
-end
-
-def fun_l5_n992()
- fun_l6_n390
-end
-
-def fun_l5_n993()
- fun_l6_n58
-end
-
-def fun_l5_n994()
- fun_l6_n545
-end
-
-def fun_l5_n995()
- fun_l6_n364
-end
-
-def fun_l5_n996()
- fun_l6_n849
-end
-
-def fun_l5_n997()
- fun_l6_n185
-end
-
-def fun_l5_n998()
- fun_l6_n56
-end
-
-def fun_l5_n999()
- fun_l6_n156
-end
-
-def fun_l6_n0()
- fun_l7_n367
-end
-
-def fun_l6_n1()
- fun_l7_n681
-end
-
-def fun_l6_n2()
- fun_l7_n170
-end
-
-def fun_l6_n3()
- fun_l7_n39
-end
-
-def fun_l6_n4()
- fun_l7_n320
-end
-
-def fun_l6_n5()
- fun_l7_n862
-end
-
-def fun_l6_n6()
- fun_l7_n604
-end
-
-def fun_l6_n7()
- fun_l7_n816
-end
-
-def fun_l6_n8()
- fun_l7_n31
-end
-
-def fun_l6_n9()
- fun_l7_n285
-end
-
-def fun_l6_n10()
- fun_l7_n74
-end
-
-def fun_l6_n11()
- fun_l7_n638
-end
-
-def fun_l6_n12()
- fun_l7_n471
-end
-
-def fun_l6_n13()
- fun_l7_n909
-end
-
-def fun_l6_n14()
- fun_l7_n677
-end
-
-def fun_l6_n15()
- fun_l7_n603
-end
-
-def fun_l6_n16()
- fun_l7_n670
-end
-
-def fun_l6_n17()
- fun_l7_n270
-end
-
-def fun_l6_n18()
- fun_l7_n10
-end
-
-def fun_l6_n19()
- fun_l7_n963
-end
-
-def fun_l6_n20()
- fun_l7_n517
-end
-
-def fun_l6_n21()
- fun_l7_n956
-end
-
-def fun_l6_n22()
- fun_l7_n13
-end
-
-def fun_l6_n23()
- fun_l7_n157
-end
-
-def fun_l6_n24()
- fun_l7_n828
-end
-
-def fun_l6_n25()
- fun_l7_n895
-end
-
-def fun_l6_n26()
- fun_l7_n48
-end
-
-def fun_l6_n27()
- fun_l7_n760
-end
-
-def fun_l6_n28()
- fun_l7_n674
-end
-
-def fun_l6_n29()
- fun_l7_n639
-end
-
-def fun_l6_n30()
- fun_l7_n395
-end
-
-def fun_l6_n31()
- fun_l7_n541
-end
-
-def fun_l6_n32()
- fun_l7_n548
-end
-
-def fun_l6_n33()
- fun_l7_n348
-end
-
-def fun_l6_n34()
- fun_l7_n257
-end
-
-def fun_l6_n35()
- fun_l7_n531
-end
-
-def fun_l6_n36()
- fun_l7_n210
-end
-
-def fun_l6_n37()
- fun_l7_n56
-end
-
-def fun_l6_n38()
- fun_l7_n466
-end
-
-def fun_l6_n39()
- fun_l7_n369
-end
-
-def fun_l6_n40()
- fun_l7_n465
-end
-
-def fun_l6_n41()
- fun_l7_n665
-end
-
-def fun_l6_n42()
- fun_l7_n662
-end
-
-def fun_l6_n43()
- fun_l7_n205
-end
-
-def fun_l6_n44()
- fun_l7_n997
-end
-
-def fun_l6_n45()
- fun_l7_n840
-end
-
-def fun_l6_n46()
- fun_l7_n998
-end
-
-def fun_l6_n47()
- fun_l7_n563
-end
-
-def fun_l6_n48()
- fun_l7_n442
-end
-
-def fun_l6_n49()
- fun_l7_n768
-end
-
-def fun_l6_n50()
- fun_l7_n948
-end
-
-def fun_l6_n51()
- fun_l7_n773
-end
-
-def fun_l6_n52()
- fun_l7_n910
-end
-
-def fun_l6_n53()
- fun_l7_n152
-end
-
-def fun_l6_n54()
- fun_l7_n277
-end
-
-def fun_l6_n55()
- fun_l7_n139
-end
-
-def fun_l6_n56()
- fun_l7_n530
-end
-
-def fun_l6_n57()
- fun_l7_n587
-end
-
-def fun_l6_n58()
- fun_l7_n650
-end
-
-def fun_l6_n59()
- fun_l7_n30
-end
-
-def fun_l6_n60()
- fun_l7_n31
-end
-
-def fun_l6_n61()
- fun_l7_n908
-end
-
-def fun_l6_n62()
- fun_l7_n228
-end
-
-def fun_l6_n63()
- fun_l7_n210
-end
-
-def fun_l6_n64()
- fun_l7_n854
-end
-
-def fun_l6_n65()
- fun_l7_n198
-end
-
-def fun_l6_n66()
- fun_l7_n183
-end
-
-def fun_l6_n67()
- fun_l7_n633
-end
-
-def fun_l6_n68()
- fun_l7_n523
-end
-
-def fun_l6_n69()
- fun_l7_n392
-end
-
-def fun_l6_n70()
- fun_l7_n293
-end
-
-def fun_l6_n71()
- fun_l7_n523
-end
-
-def fun_l6_n72()
- fun_l7_n314
-end
-
-def fun_l6_n73()
- fun_l7_n500
-end
-
-def fun_l6_n74()
- fun_l7_n685
-end
-
-def fun_l6_n75()
- fun_l7_n692
-end
-
-def fun_l6_n76()
- fun_l7_n773
-end
-
-def fun_l6_n77()
- fun_l7_n582
-end
-
-def fun_l6_n78()
- fun_l7_n934
-end
-
-def fun_l6_n79()
- fun_l7_n829
-end
-
-def fun_l6_n80()
- fun_l7_n603
-end
-
-def fun_l6_n81()
- fun_l7_n735
-end
-
-def fun_l6_n82()
- fun_l7_n906
-end
-
-def fun_l6_n83()
- fun_l7_n828
-end
-
-def fun_l6_n84()
- fun_l7_n945
-end
-
-def fun_l6_n85()
- fun_l7_n316
-end
-
-def fun_l6_n86()
- fun_l7_n135
-end
-
-def fun_l6_n87()
- fun_l7_n444
-end
-
-def fun_l6_n88()
- fun_l7_n300
-end
-
-def fun_l6_n89()
- fun_l7_n975
-end
-
-def fun_l6_n90()
- fun_l7_n385
-end
-
-def fun_l6_n91()
- fun_l7_n885
-end
-
-def fun_l6_n92()
- fun_l7_n838
-end
-
-def fun_l6_n93()
- fun_l7_n769
-end
-
-def fun_l6_n94()
- fun_l7_n263
-end
-
-def fun_l6_n95()
- fun_l7_n719
-end
-
-def fun_l6_n96()
- fun_l7_n585
-end
-
-def fun_l6_n97()
- fun_l7_n238
-end
-
-def fun_l6_n98()
- fun_l7_n366
-end
-
-def fun_l6_n99()
- fun_l7_n498
-end
-
-def fun_l6_n100()
- fun_l7_n596
-end
-
-def fun_l6_n101()
- fun_l7_n437
-end
-
-def fun_l6_n102()
- fun_l7_n441
-end
-
-def fun_l6_n103()
- fun_l7_n721
-end
-
-def fun_l6_n104()
- fun_l7_n9
-end
-
-def fun_l6_n105()
- fun_l7_n412
-end
-
-def fun_l6_n106()
- fun_l7_n981
-end
-
-def fun_l6_n107()
- fun_l7_n824
-end
-
-def fun_l6_n108()
- fun_l7_n255
-end
-
-def fun_l6_n109()
- fun_l7_n608
-end
-
-def fun_l6_n110()
- fun_l7_n481
-end
-
-def fun_l6_n111()
- fun_l7_n804
-end
-
-def fun_l6_n112()
- fun_l7_n316
-end
-
-def fun_l6_n113()
- fun_l7_n446
-end
-
-def fun_l6_n114()
- fun_l7_n123
-end
-
-def fun_l6_n115()
- fun_l7_n522
-end
-
-def fun_l6_n116()
- fun_l7_n52
-end
-
-def fun_l6_n117()
- fun_l7_n559
-end
-
-def fun_l6_n118()
- fun_l7_n937
-end
-
-def fun_l6_n119()
- fun_l7_n425
-end
-
-def fun_l6_n120()
- fun_l7_n112
-end
-
-def fun_l6_n121()
- fun_l7_n83
-end
-
-def fun_l6_n122()
- fun_l7_n305
-end
-
-def fun_l6_n123()
- fun_l7_n157
-end
-
-def fun_l6_n124()
- fun_l7_n944
-end
-
-def fun_l6_n125()
- fun_l7_n356
-end
-
-def fun_l6_n126()
- fun_l7_n69
-end
-
-def fun_l6_n127()
- fun_l7_n689
-end
-
-def fun_l6_n128()
- fun_l7_n145
-end
-
-def fun_l6_n129()
- fun_l7_n633
-end
-
-def fun_l6_n130()
- fun_l7_n389
-end
-
-def fun_l6_n131()
- fun_l7_n646
-end
-
-def fun_l6_n132()
- fun_l7_n684
-end
-
-def fun_l6_n133()
- fun_l7_n38
-end
-
-def fun_l6_n134()
- fun_l7_n104
-end
-
-def fun_l6_n135()
- fun_l7_n856
-end
-
-def fun_l6_n136()
- fun_l7_n237
-end
-
-def fun_l6_n137()
- fun_l7_n594
-end
-
-def fun_l6_n138()
- fun_l7_n929
-end
-
-def fun_l6_n139()
- fun_l7_n686
-end
-
-def fun_l6_n140()
- fun_l7_n501
-end
-
-def fun_l6_n141()
- fun_l7_n309
-end
-
-def fun_l6_n142()
- fun_l7_n567
-end
-
-def fun_l6_n143()
- fun_l7_n451
-end
-
-def fun_l6_n144()
- fun_l7_n325
-end
-
-def fun_l6_n145()
- fun_l7_n363
-end
-
-def fun_l6_n146()
- fun_l7_n650
-end
-
-def fun_l6_n147()
- fun_l7_n551
-end
-
-def fun_l6_n148()
- fun_l7_n495
-end
-
-def fun_l6_n149()
- fun_l7_n998
-end
-
-def fun_l6_n150()
- fun_l7_n584
-end
-
-def fun_l6_n151()
- fun_l7_n36
-end
-
-def fun_l6_n152()
- fun_l7_n109
-end
-
-def fun_l6_n153()
- fun_l7_n855
-end
-
-def fun_l6_n154()
- fun_l7_n544
-end
-
-def fun_l6_n155()
- fun_l7_n580
-end
-
-def fun_l6_n156()
- fun_l7_n872
-end
-
-def fun_l6_n157()
- fun_l7_n954
-end
-
-def fun_l6_n158()
- fun_l7_n14
-end
-
-def fun_l6_n159()
- fun_l7_n802
-end
-
-def fun_l6_n160()
- fun_l7_n298
-end
-
-def fun_l6_n161()
- fun_l7_n876
-end
-
-def fun_l6_n162()
- fun_l7_n694
-end
-
-def fun_l6_n163()
- fun_l7_n538
-end
-
-def fun_l6_n164()
- fun_l7_n325
-end
-
-def fun_l6_n165()
- fun_l7_n47
-end
-
-def fun_l6_n166()
- fun_l7_n433
-end
-
-def fun_l6_n167()
- fun_l7_n356
-end
-
-def fun_l6_n168()
- fun_l7_n81
-end
-
-def fun_l6_n169()
- fun_l7_n10
-end
-
-def fun_l6_n170()
- fun_l7_n391
-end
-
-def fun_l6_n171()
- fun_l7_n770
-end
-
-def fun_l6_n172()
- fun_l7_n45
-end
-
-def fun_l6_n173()
- fun_l7_n808
-end
-
-def fun_l6_n174()
- fun_l7_n722
-end
-
-def fun_l6_n175()
- fun_l7_n532
-end
-
-def fun_l6_n176()
- fun_l7_n983
-end
-
-def fun_l6_n177()
- fun_l7_n666
-end
-
-def fun_l6_n178()
- fun_l7_n505
-end
-
-def fun_l6_n179()
- fun_l7_n200
-end
-
-def fun_l6_n180()
- fun_l7_n57
-end
-
-def fun_l6_n181()
- fun_l7_n888
-end
-
-def fun_l6_n182()
- fun_l7_n288
-end
-
-def fun_l6_n183()
- fun_l7_n435
-end
-
-def fun_l6_n184()
- fun_l7_n330
-end
-
-def fun_l6_n185()
- fun_l7_n432
-end
-
-def fun_l6_n186()
- fun_l7_n321
-end
-
-def fun_l6_n187()
- fun_l7_n160
-end
-
-def fun_l6_n188()
- fun_l7_n806
-end
-
-def fun_l6_n189()
- fun_l7_n929
-end
-
-def fun_l6_n190()
- fun_l7_n49
-end
-
-def fun_l6_n191()
- fun_l7_n642
-end
-
-def fun_l6_n192()
- fun_l7_n551
-end
-
-def fun_l6_n193()
- fun_l7_n243
-end
-
-def fun_l6_n194()
- fun_l7_n126
-end
-
-def fun_l6_n195()
- fun_l7_n594
-end
-
-def fun_l6_n196()
- fun_l7_n166
-end
-
-def fun_l6_n197()
- fun_l7_n610
-end
-
-def fun_l6_n198()
- fun_l7_n730
-end
-
-def fun_l6_n199()
- fun_l7_n770
-end
-
-def fun_l6_n200()
- fun_l7_n873
-end
-
-def fun_l6_n201()
- fun_l7_n833
-end
-
-def fun_l6_n202()
- fun_l7_n883
-end
-
-def fun_l6_n203()
- fun_l7_n639
-end
-
-def fun_l6_n204()
- fun_l7_n563
-end
-
-def fun_l6_n205()
- fun_l7_n437
-end
-
-def fun_l6_n206()
- fun_l7_n722
-end
-
-def fun_l6_n207()
- fun_l7_n785
-end
-
-def fun_l6_n208()
- fun_l7_n241
-end
-
-def fun_l6_n209()
- fun_l7_n42
-end
-
-def fun_l6_n210()
- fun_l7_n352
-end
-
-def fun_l6_n211()
- fun_l7_n633
-end
-
-def fun_l6_n212()
- fun_l7_n758
-end
-
-def fun_l6_n213()
- fun_l7_n194
-end
-
-def fun_l6_n214()
- fun_l7_n864
-end
-
-def fun_l6_n215()
- fun_l7_n407
-end
-
-def fun_l6_n216()
- fun_l7_n78
-end
-
-def fun_l6_n217()
- fun_l7_n723
-end
-
-def fun_l6_n218()
- fun_l7_n98
-end
-
-def fun_l6_n219()
- fun_l7_n909
-end
-
-def fun_l6_n220()
- fun_l7_n380
-end
-
-def fun_l6_n221()
- fun_l7_n348
-end
-
-def fun_l6_n222()
- fun_l7_n934
-end
-
-def fun_l6_n223()
- fun_l7_n114
-end
-
-def fun_l6_n224()
- fun_l7_n34
-end
-
-def fun_l6_n225()
- fun_l7_n774
-end
-
-def fun_l6_n226()
- fun_l7_n681
-end
-
-def fun_l6_n227()
- fun_l7_n215
-end
-
-def fun_l6_n228()
- fun_l7_n526
-end
-
-def fun_l6_n229()
- fun_l7_n38
-end
-
-def fun_l6_n230()
- fun_l7_n506
-end
-
-def fun_l6_n231()
- fun_l7_n456
-end
-
-def fun_l6_n232()
- fun_l7_n476
-end
-
-def fun_l6_n233()
- fun_l7_n183
-end
-
-def fun_l6_n234()
- fun_l7_n73
-end
-
-def fun_l6_n235()
- fun_l7_n639
-end
-
-def fun_l6_n236()
- fun_l7_n344
-end
-
-def fun_l6_n237()
- fun_l7_n656
-end
-
-def fun_l6_n238()
- fun_l7_n887
-end
-
-def fun_l6_n239()
- fun_l7_n705
-end
-
-def fun_l6_n240()
- fun_l7_n342
-end
-
-def fun_l6_n241()
- fun_l7_n461
-end
-
-def fun_l6_n242()
- fun_l7_n215
-end
-
-def fun_l6_n243()
- fun_l7_n74
-end
-
-def fun_l6_n244()
- fun_l7_n715
-end
-
-def fun_l6_n245()
- fun_l7_n317
-end
-
-def fun_l6_n246()
- fun_l7_n238
-end
-
-def fun_l6_n247()
- fun_l7_n899
-end
-
-def fun_l6_n248()
- fun_l7_n360
-end
-
-def fun_l6_n249()
- fun_l7_n753
-end
-
-def fun_l6_n250()
- fun_l7_n722
-end
-
-def fun_l6_n251()
- fun_l7_n649
-end
-
-def fun_l6_n252()
- fun_l7_n640
-end
-
-def fun_l6_n253()
- fun_l7_n146
-end
-
-def fun_l6_n254()
- fun_l7_n385
-end
-
-def fun_l6_n255()
- fun_l7_n483
-end
-
-def fun_l6_n256()
- fun_l7_n142
-end
-
-def fun_l6_n257()
- fun_l7_n815
-end
-
-def fun_l6_n258()
- fun_l7_n499
-end
-
-def fun_l6_n259()
- fun_l7_n827
-end
-
-def fun_l6_n260()
- fun_l7_n799
-end
-
-def fun_l6_n261()
- fun_l7_n633
-end
-
-def fun_l6_n262()
- fun_l7_n399
-end
-
-def fun_l6_n263()
- fun_l7_n123
-end
-
-def fun_l6_n264()
- fun_l7_n94
-end
-
-def fun_l6_n265()
- fun_l7_n799
-end
-
-def fun_l6_n266()
- fun_l7_n884
-end
-
-def fun_l6_n267()
- fun_l7_n983
-end
-
-def fun_l6_n268()
- fun_l7_n880
-end
-
-def fun_l6_n269()
- fun_l7_n58
-end
-
-def fun_l6_n270()
- fun_l7_n181
-end
-
-def fun_l6_n271()
- fun_l7_n241
-end
-
-def fun_l6_n272()
- fun_l7_n971
-end
-
-def fun_l6_n273()
- fun_l7_n297
-end
-
-def fun_l6_n274()
- fun_l7_n435
-end
-
-def fun_l6_n275()
- fun_l7_n57
-end
-
-def fun_l6_n276()
- fun_l7_n665
-end
-
-def fun_l6_n277()
- fun_l7_n725
-end
-
-def fun_l6_n278()
- fun_l7_n258
-end
-
-def fun_l6_n279()
- fun_l7_n680
-end
-
-def fun_l6_n280()
- fun_l7_n969
-end
-
-def fun_l6_n281()
- fun_l7_n714
-end
-
-def fun_l6_n282()
- fun_l7_n166
-end
-
-def fun_l6_n283()
- fun_l7_n876
-end
-
-def fun_l6_n284()
- fun_l7_n893
-end
-
-def fun_l6_n285()
- fun_l7_n530
-end
-
-def fun_l6_n286()
- fun_l7_n552
-end
-
-def fun_l6_n287()
- fun_l7_n212
-end
-
-def fun_l6_n288()
- fun_l7_n194
-end
-
-def fun_l6_n289()
- fun_l7_n375
-end
-
-def fun_l6_n290()
- fun_l7_n726
-end
-
-def fun_l6_n291()
- fun_l7_n498
-end
-
-def fun_l6_n292()
- fun_l7_n630
-end
-
-def fun_l6_n293()
- fun_l7_n781
-end
-
-def fun_l6_n294()
- fun_l7_n122
-end
-
-def fun_l6_n295()
- fun_l7_n864
-end
-
-def fun_l6_n296()
- fun_l7_n931
-end
-
-def fun_l6_n297()
- fun_l7_n561
-end
-
-def fun_l6_n298()
- fun_l7_n891
-end
-
-def fun_l6_n299()
- fun_l7_n149
-end
-
-def fun_l6_n300()
- fun_l7_n697
-end
-
-def fun_l6_n301()
- fun_l7_n152
-end
-
-def fun_l6_n302()
- fun_l7_n973
-end
-
-def fun_l6_n303()
- fun_l7_n32
-end
-
-def fun_l6_n304()
- fun_l7_n254
-end
-
-def fun_l6_n305()
- fun_l7_n68
-end
-
-def fun_l6_n306()
- fun_l7_n46
-end
-
-def fun_l6_n307()
- fun_l7_n2
-end
-
-def fun_l6_n308()
- fun_l7_n862
-end
-
-def fun_l6_n309()
- fun_l7_n722
-end
-
-def fun_l6_n310()
- fun_l7_n501
-end
-
-def fun_l6_n311()
- fun_l7_n779
-end
-
-def fun_l6_n312()
- fun_l7_n899
-end
-
-def fun_l6_n313()
- fun_l7_n209
-end
-
-def fun_l6_n314()
- fun_l7_n445
-end
-
-def fun_l6_n315()
- fun_l7_n882
-end
-
-def fun_l6_n316()
- fun_l7_n825
-end
-
-def fun_l6_n317()
- fun_l7_n52
-end
-
-def fun_l6_n318()
- fun_l7_n813
-end
-
-def fun_l6_n319()
- fun_l7_n103
-end
-
-def fun_l6_n320()
- fun_l7_n480
-end
-
-def fun_l6_n321()
- fun_l7_n357
-end
-
-def fun_l6_n322()
- fun_l7_n138
-end
-
-def fun_l6_n323()
- fun_l7_n277
-end
-
-def fun_l6_n324()
- fun_l7_n287
-end
-
-def fun_l6_n325()
- fun_l7_n822
-end
-
-def fun_l6_n326()
- fun_l7_n299
-end
-
-def fun_l6_n327()
- fun_l7_n617
-end
-
-def fun_l6_n328()
- fun_l7_n618
-end
-
-def fun_l6_n329()
- fun_l7_n721
-end
-
-def fun_l6_n330()
- fun_l7_n600
-end
-
-def fun_l6_n331()
- fun_l7_n349
-end
-
-def fun_l6_n332()
- fun_l7_n978
-end
-
-def fun_l6_n333()
- fun_l7_n889
-end
-
-def fun_l6_n334()
- fun_l7_n129
-end
-
-def fun_l6_n335()
- fun_l7_n404
-end
-
-def fun_l6_n336()
- fun_l7_n169
-end
-
-def fun_l6_n337()
- fun_l7_n498
-end
-
-def fun_l6_n338()
- fun_l7_n428
-end
-
-def fun_l6_n339()
- fun_l7_n910
-end
-
-def fun_l6_n340()
- fun_l7_n441
-end
-
-def fun_l6_n341()
- fun_l7_n649
-end
-
-def fun_l6_n342()
- fun_l7_n251
-end
-
-def fun_l6_n343()
- fun_l7_n146
-end
-
-def fun_l6_n344()
- fun_l7_n979
-end
-
-def fun_l6_n345()
- fun_l7_n561
-end
-
-def fun_l6_n346()
- fun_l7_n667
-end
-
-def fun_l6_n347()
- fun_l7_n50
-end
-
-def fun_l6_n348()
- fun_l7_n324
-end
-
-def fun_l6_n349()
- fun_l7_n60
-end
-
-def fun_l6_n350()
- fun_l7_n292
-end
-
-def fun_l6_n351()
- fun_l7_n227
-end
-
-def fun_l6_n352()
- fun_l7_n99
-end
-
-def fun_l6_n353()
- fun_l7_n124
-end
-
-def fun_l6_n354()
- fun_l7_n519
-end
-
-def fun_l6_n355()
- fun_l7_n245
-end
-
-def fun_l6_n356()
- fun_l7_n438
-end
-
-def fun_l6_n357()
- fun_l7_n916
-end
-
-def fun_l6_n358()
- fun_l7_n865
-end
-
-def fun_l6_n359()
- fun_l7_n886
-end
-
-def fun_l6_n360()
- fun_l7_n432
-end
-
-def fun_l6_n361()
- fun_l7_n406
-end
-
-def fun_l6_n362()
- fun_l7_n709
-end
-
-def fun_l6_n363()
- fun_l7_n271
-end
-
-def fun_l6_n364()
- fun_l7_n320
-end
-
-def fun_l6_n365()
- fun_l7_n3
-end
-
-def fun_l6_n366()
- fun_l7_n831
-end
-
-def fun_l6_n367()
- fun_l7_n417
-end
-
-def fun_l6_n368()
- fun_l7_n949
-end
-
-def fun_l6_n369()
- fun_l7_n941
-end
-
-def fun_l6_n370()
- fun_l7_n404
-end
-
-def fun_l6_n371()
- fun_l7_n715
-end
-
-def fun_l6_n372()
- fun_l7_n223
-end
-
-def fun_l6_n373()
- fun_l7_n813
-end
-
-def fun_l6_n374()
- fun_l7_n594
-end
-
-def fun_l6_n375()
- fun_l7_n949
-end
-
-def fun_l6_n376()
- fun_l7_n107
-end
-
-def fun_l6_n377()
- fun_l7_n951
-end
-
-def fun_l6_n378()
- fun_l7_n940
-end
-
-def fun_l6_n379()
- fun_l7_n224
-end
-
-def fun_l6_n380()
- fun_l7_n82
-end
-
-def fun_l6_n381()
- fun_l7_n815
-end
-
-def fun_l6_n382()
- fun_l7_n443
-end
-
-def fun_l6_n383()
- fun_l7_n566
-end
-
-def fun_l6_n384()
- fun_l7_n954
-end
-
-def fun_l6_n385()
- fun_l7_n562
-end
-
-def fun_l6_n386()
- fun_l7_n9
-end
-
-def fun_l6_n387()
- fun_l7_n233
-end
-
-def fun_l6_n388()
- fun_l7_n510
-end
-
-def fun_l6_n389()
- fun_l7_n616
-end
-
-def fun_l6_n390()
- fun_l7_n991
-end
-
-def fun_l6_n391()
- fun_l7_n184
-end
-
-def fun_l6_n392()
- fun_l7_n288
-end
-
-def fun_l6_n393()
- fun_l7_n282
-end
-
-def fun_l6_n394()
- fun_l7_n81
-end
-
-def fun_l6_n395()
- fun_l7_n567
-end
-
-def fun_l6_n396()
- fun_l7_n465
-end
-
-def fun_l6_n397()
- fun_l7_n856
-end
-
-def fun_l6_n398()
- fun_l7_n268
-end
-
-def fun_l6_n399()
- fun_l7_n695
-end
-
-def fun_l6_n400()
- fun_l7_n403
-end
-
-def fun_l6_n401()
- fun_l7_n153
-end
-
-def fun_l6_n402()
- fun_l7_n321
-end
-
-def fun_l6_n403()
- fun_l7_n233
-end
-
-def fun_l6_n404()
- fun_l7_n218
-end
-
-def fun_l6_n405()
- fun_l7_n285
-end
-
-def fun_l6_n406()
- fun_l7_n829
-end
-
-def fun_l6_n407()
- fun_l7_n218
-end
-
-def fun_l6_n408()
- fun_l7_n457
-end
-
-def fun_l6_n409()
- fun_l7_n513
-end
-
-def fun_l6_n410()
- fun_l7_n677
-end
-
-def fun_l6_n411()
- fun_l7_n849
-end
-
-def fun_l6_n412()
- fun_l7_n579
-end
-
-def fun_l6_n413()
- fun_l7_n160
-end
-
-def fun_l6_n414()
- fun_l7_n567
-end
-
-def fun_l6_n415()
- fun_l7_n394
-end
-
-def fun_l6_n416()
- fun_l7_n480
-end
-
-def fun_l6_n417()
- fun_l7_n234
-end
-
-def fun_l6_n418()
- fun_l7_n410
-end
-
-def fun_l6_n419()
- fun_l7_n405
-end
-
-def fun_l6_n420()
- fun_l7_n497
-end
-
-def fun_l6_n421()
- fun_l7_n242
-end
-
-def fun_l6_n422()
- fun_l7_n190
-end
-
-def fun_l6_n423()
- fun_l7_n513
-end
-
-def fun_l6_n424()
- fun_l7_n790
-end
-
-def fun_l6_n425()
- fun_l7_n112
-end
-
-def fun_l6_n426()
- fun_l7_n792
-end
-
-def fun_l6_n427()
- fun_l7_n209
-end
-
-def fun_l6_n428()
- fun_l7_n451
-end
-
-def fun_l6_n429()
- fun_l7_n897
-end
-
-def fun_l6_n430()
- fun_l7_n884
-end
-
-def fun_l6_n431()
- fun_l7_n81
-end
-
-def fun_l6_n432()
- fun_l7_n764
-end
-
-def fun_l6_n433()
- fun_l7_n204
-end
-
-def fun_l6_n434()
- fun_l7_n56
-end
-
-def fun_l6_n435()
- fun_l7_n394
-end
-
-def fun_l6_n436()
- fun_l7_n903
-end
-
-def fun_l6_n437()
- fun_l7_n423
-end
-
-def fun_l6_n438()
- fun_l7_n899
-end
-
-def fun_l6_n439()
- fun_l7_n40
-end
-
-def fun_l6_n440()
- fun_l7_n145
-end
-
-def fun_l6_n441()
- fun_l7_n811
-end
-
-def fun_l6_n442()
- fun_l7_n821
-end
-
-def fun_l6_n443()
- fun_l7_n675
-end
-
-def fun_l6_n444()
- fun_l7_n665
-end
-
-def fun_l6_n445()
- fun_l7_n1
-end
-
-def fun_l6_n446()
- fun_l7_n936
-end
-
-def fun_l6_n447()
- fun_l7_n838
-end
-
-def fun_l6_n448()
- fun_l7_n820
-end
-
-def fun_l6_n449()
- fun_l7_n206
-end
-
-def fun_l6_n450()
- fun_l7_n234
-end
-
-def fun_l6_n451()
- fun_l7_n150
-end
-
-def fun_l6_n452()
- fun_l7_n699
-end
-
-def fun_l6_n453()
- fun_l7_n369
-end
-
-def fun_l6_n454()
- fun_l7_n759
-end
-
-def fun_l6_n455()
- fun_l7_n836
-end
-
-def fun_l6_n456()
- fun_l7_n55
-end
-
-def fun_l6_n457()
- fun_l7_n457
-end
-
-def fun_l6_n458()
- fun_l7_n623
-end
-
-def fun_l6_n459()
- fun_l7_n679
-end
-
-def fun_l6_n460()
- fun_l7_n199
-end
-
-def fun_l6_n461()
- fun_l7_n738
-end
-
-def fun_l6_n462()
- fun_l7_n479
-end
-
-def fun_l6_n463()
- fun_l7_n673
-end
-
-def fun_l6_n464()
- fun_l7_n323
-end
-
-def fun_l6_n465()
- fun_l7_n652
-end
-
-def fun_l6_n466()
- fun_l7_n470
-end
-
-def fun_l6_n467()
- fun_l7_n133
-end
-
-def fun_l6_n468()
- fun_l7_n179
-end
-
-def fun_l6_n469()
- fun_l7_n647
-end
-
-def fun_l6_n470()
- fun_l7_n869
-end
-
-def fun_l6_n471()
- fun_l7_n553
-end
-
-def fun_l6_n472()
- fun_l7_n173
-end
-
-def fun_l6_n473()
- fun_l7_n188
-end
-
-def fun_l6_n474()
- fun_l7_n530
-end
-
-def fun_l6_n475()
- fun_l7_n233
-end
-
-def fun_l6_n476()
- fun_l7_n46
-end
-
-def fun_l6_n477()
- fun_l7_n892
-end
-
-def fun_l6_n478()
- fun_l7_n879
-end
-
-def fun_l6_n479()
- fun_l7_n507
-end
-
-def fun_l6_n480()
- fun_l7_n383
-end
-
-def fun_l6_n481()
- fun_l7_n500
-end
-
-def fun_l6_n482()
- fun_l7_n595
-end
-
-def fun_l6_n483()
- fun_l7_n225
-end
-
-def fun_l6_n484()
- fun_l7_n396
-end
-
-def fun_l6_n485()
- fun_l7_n61
-end
-
-def fun_l6_n486()
- fun_l7_n953
-end
-
-def fun_l6_n487()
- fun_l7_n891
-end
-
-def fun_l6_n488()
- fun_l7_n620
-end
-
-def fun_l6_n489()
- fun_l7_n672
-end
-
-def fun_l6_n490()
- fun_l7_n824
-end
-
-def fun_l6_n491()
- fun_l7_n216
-end
-
-def fun_l6_n492()
- fun_l7_n404
-end
-
-def fun_l6_n493()
- fun_l7_n428
-end
-
-def fun_l6_n494()
- fun_l7_n907
-end
-
-def fun_l6_n495()
- fun_l7_n297
-end
-
-def fun_l6_n496()
- fun_l7_n349
-end
-
-def fun_l6_n497()
- fun_l7_n291
-end
-
-def fun_l6_n498()
- fun_l7_n642
-end
-
-def fun_l6_n499()
- fun_l7_n906
-end
-
-def fun_l6_n500()
- fun_l7_n78
-end
-
-def fun_l6_n501()
- fun_l7_n568
-end
-
-def fun_l6_n502()
- fun_l7_n591
-end
-
-def fun_l6_n503()
- fun_l7_n921
-end
-
-def fun_l6_n504()
- fun_l7_n832
-end
-
-def fun_l6_n505()
- fun_l7_n826
-end
-
-def fun_l6_n506()
- fun_l7_n930
-end
-
-def fun_l6_n507()
- fun_l7_n791
-end
-
-def fun_l6_n508()
- fun_l7_n608
-end
-
-def fun_l6_n509()
- fun_l7_n144
-end
-
-def fun_l6_n510()
- fun_l7_n202
-end
-
-def fun_l6_n511()
- fun_l7_n379
-end
-
-def fun_l6_n512()
- fun_l7_n354
-end
-
-def fun_l6_n513()
- fun_l7_n245
-end
-
-def fun_l6_n514()
- fun_l7_n402
-end
-
-def fun_l6_n515()
- fun_l7_n875
-end
-
-def fun_l6_n516()
- fun_l7_n847
-end
-
-def fun_l6_n517()
- fun_l7_n736
-end
-
-def fun_l6_n518()
- fun_l7_n325
-end
-
-def fun_l6_n519()
- fun_l7_n949
-end
-
-def fun_l6_n520()
- fun_l7_n993
-end
-
-def fun_l6_n521()
- fun_l7_n271
-end
-
-def fun_l6_n522()
- fun_l7_n799
-end
-
-def fun_l6_n523()
- fun_l7_n861
-end
-
-def fun_l6_n524()
- fun_l7_n164
-end
-
-def fun_l6_n525()
- fun_l7_n293
-end
-
-def fun_l6_n526()
- fun_l7_n948
-end
-
-def fun_l6_n527()
- fun_l7_n682
-end
-
-def fun_l6_n528()
- fun_l7_n914
-end
-
-def fun_l6_n529()
- fun_l7_n395
-end
-
-def fun_l6_n530()
- fun_l7_n399
-end
-
-def fun_l6_n531()
- fun_l7_n220
-end
-
-def fun_l6_n532()
- fun_l7_n874
-end
-
-def fun_l6_n533()
- fun_l7_n504
-end
-
-def fun_l6_n534()
- fun_l7_n713
-end
-
-def fun_l6_n535()
- fun_l7_n185
-end
-
-def fun_l6_n536()
- fun_l7_n229
-end
-
-def fun_l6_n537()
- fun_l7_n696
-end
-
-def fun_l6_n538()
- fun_l7_n840
-end
-
-def fun_l6_n539()
- fun_l7_n323
-end
-
-def fun_l6_n540()
- fun_l7_n342
-end
-
-def fun_l6_n541()
- fun_l7_n60
-end
-
-def fun_l6_n542()
- fun_l7_n149
-end
-
-def fun_l6_n543()
- fun_l7_n465
-end
-
-def fun_l6_n544()
- fun_l7_n392
-end
-
-def fun_l6_n545()
- fun_l7_n210
-end
-
-def fun_l6_n546()
- fun_l7_n565
-end
-
-def fun_l6_n547()
- fun_l7_n63
-end
-
-def fun_l6_n548()
- fun_l7_n722
-end
-
-def fun_l6_n549()
- fun_l7_n119
-end
-
-def fun_l6_n550()
- fun_l7_n933
-end
-
-def fun_l6_n551()
- fun_l7_n612
-end
-
-def fun_l6_n552()
- fun_l7_n479
-end
-
-def fun_l6_n553()
- fun_l7_n866
-end
-
-def fun_l6_n554()
- fun_l7_n268
-end
-
-def fun_l6_n555()
- fun_l7_n547
-end
-
-def fun_l6_n556()
- fun_l7_n621
-end
-
-def fun_l6_n557()
- fun_l7_n461
-end
-
-def fun_l6_n558()
- fun_l7_n907
-end
-
-def fun_l6_n559()
- fun_l7_n660
-end
-
-def fun_l6_n560()
- fun_l7_n857
-end
-
-def fun_l6_n561()
- fun_l7_n398
-end
-
-def fun_l6_n562()
- fun_l7_n484
-end
-
-def fun_l6_n563()
- fun_l7_n16
-end
-
-def fun_l6_n564()
- fun_l7_n697
-end
-
-def fun_l6_n565()
- fun_l7_n135
-end
-
-def fun_l6_n566()
- fun_l7_n265
-end
-
-def fun_l6_n567()
- fun_l7_n627
-end
-
-def fun_l6_n568()
- fun_l7_n345
-end
-
-def fun_l6_n569()
- fun_l7_n528
-end
-
-def fun_l6_n570()
- fun_l7_n926
-end
-
-def fun_l6_n571()
- fun_l7_n198
-end
-
-def fun_l6_n572()
- fun_l7_n837
-end
-
-def fun_l6_n573()
- fun_l7_n95
-end
-
-def fun_l6_n574()
- fun_l7_n802
-end
-
-def fun_l6_n575()
- fun_l7_n265
-end
-
-def fun_l6_n576()
- fun_l7_n884
-end
-
-def fun_l6_n577()
- fun_l7_n227
-end
-
-def fun_l6_n578()
- fun_l7_n915
-end
-
-def fun_l6_n579()
- fun_l7_n221
-end
-
-def fun_l6_n580()
- fun_l7_n718
-end
-
-def fun_l6_n581()
- fun_l7_n179
-end
-
-def fun_l6_n582()
- fun_l7_n975
-end
-
-def fun_l6_n583()
- fun_l7_n207
-end
-
-def fun_l6_n584()
- fun_l7_n874
-end
-
-def fun_l6_n585()
- fun_l7_n540
-end
-
-def fun_l6_n586()
- fun_l7_n765
-end
-
-def fun_l6_n587()
- fun_l7_n613
-end
-
-def fun_l6_n588()
- fun_l7_n853
-end
-
-def fun_l6_n589()
- fun_l7_n241
-end
-
-def fun_l6_n590()
- fun_l7_n91
-end
-
-def fun_l6_n591()
- fun_l7_n383
-end
-
-def fun_l6_n592()
- fun_l7_n567
-end
-
-def fun_l6_n593()
- fun_l7_n144
-end
-
-def fun_l6_n594()
- fun_l7_n663
-end
-
-def fun_l6_n595()
- fun_l7_n674
-end
-
-def fun_l6_n596()
- fun_l7_n407
-end
-
-def fun_l6_n597()
- fun_l7_n207
-end
-
-def fun_l6_n598()
- fun_l7_n746
-end
-
-def fun_l6_n599()
- fun_l7_n24
-end
-
-def fun_l6_n600()
- fun_l7_n150
-end
-
-def fun_l6_n601()
- fun_l7_n317
-end
-
-def fun_l6_n602()
- fun_l7_n773
-end
-
-def fun_l6_n603()
- fun_l7_n932
-end
-
-def fun_l6_n604()
- fun_l7_n772
-end
-
-def fun_l6_n605()
- fun_l7_n495
-end
-
-def fun_l6_n606()
- fun_l7_n526
-end
-
-def fun_l6_n607()
- fun_l7_n758
-end
-
-def fun_l6_n608()
- fun_l7_n941
-end
-
-def fun_l6_n609()
- fun_l7_n998
-end
-
-def fun_l6_n610()
- fun_l7_n543
-end
-
-def fun_l6_n611()
- fun_l7_n216
-end
-
-def fun_l6_n612()
- fun_l7_n445
-end
-
-def fun_l6_n613()
- fun_l7_n314
-end
-
-def fun_l6_n614()
- fun_l7_n840
-end
-
-def fun_l6_n615()
- fun_l7_n722
-end
-
-def fun_l6_n616()
- fun_l7_n89
-end
-
-def fun_l6_n617()
- fun_l7_n353
-end
-
-def fun_l6_n618()
- fun_l7_n800
-end
-
-def fun_l6_n619()
- fun_l7_n736
-end
-
-def fun_l6_n620()
- fun_l7_n376
-end
-
-def fun_l6_n621()
- fun_l7_n24
-end
-
-def fun_l6_n622()
- fun_l7_n258
-end
-
-def fun_l6_n623()
- fun_l7_n943
-end
-
-def fun_l6_n624()
- fun_l7_n963
-end
-
-def fun_l6_n625()
- fun_l7_n709
-end
-
-def fun_l6_n626()
- fun_l7_n350
-end
-
-def fun_l6_n627()
- fun_l7_n322
-end
-
-def fun_l6_n628()
- fun_l7_n717
-end
-
-def fun_l6_n629()
- fun_l7_n529
-end
-
-def fun_l6_n630()
- fun_l7_n365
-end
-
-def fun_l6_n631()
- fun_l7_n977
-end
-
-def fun_l6_n632()
- fun_l7_n606
-end
-
-def fun_l6_n633()
- fun_l7_n712
-end
-
-def fun_l6_n634()
- fun_l7_n559
-end
-
-def fun_l6_n635()
- fun_l7_n499
-end
-
-def fun_l6_n636()
- fun_l7_n871
-end
-
-def fun_l6_n637()
- fun_l7_n684
-end
-
-def fun_l6_n638()
- fun_l7_n558
-end
-
-def fun_l6_n639()
- fun_l7_n333
-end
-
-def fun_l6_n640()
- fun_l7_n37
-end
-
-def fun_l6_n641()
- fun_l7_n559
-end
-
-def fun_l6_n642()
- fun_l7_n17
-end
-
-def fun_l6_n643()
- fun_l7_n913
-end
-
-def fun_l6_n644()
- fun_l7_n79
-end
-
-def fun_l6_n645()
- fun_l7_n402
-end
-
-def fun_l6_n646()
- fun_l7_n268
-end
-
-def fun_l6_n647()
- fun_l7_n797
-end
-
-def fun_l6_n648()
- fun_l7_n985
-end
-
-def fun_l6_n649()
- fun_l7_n192
-end
-
-def fun_l6_n650()
- fun_l7_n774
-end
-
-def fun_l6_n651()
- fun_l7_n805
-end
-
-def fun_l6_n652()
- fun_l7_n208
-end
-
-def fun_l6_n653()
- fun_l7_n608
-end
-
-def fun_l6_n654()
- fun_l7_n714
-end
-
-def fun_l6_n655()
- fun_l7_n883
-end
-
-def fun_l6_n656()
- fun_l7_n841
-end
-
-def fun_l6_n657()
- fun_l7_n646
-end
-
-def fun_l6_n658()
- fun_l7_n39
-end
-
-def fun_l6_n659()
- fun_l7_n432
-end
-
-def fun_l6_n660()
- fun_l7_n177
-end
-
-def fun_l6_n661()
- fun_l7_n700
-end
-
-def fun_l6_n662()
- fun_l7_n815
-end
-
-def fun_l6_n663()
- fun_l7_n553
-end
-
-def fun_l6_n664()
- fun_l7_n540
-end
-
-def fun_l6_n665()
- fun_l7_n853
-end
-
-def fun_l6_n666()
- fun_l7_n526
-end
-
-def fun_l6_n667()
- fun_l7_n670
-end
-
-def fun_l6_n668()
- fun_l7_n753
-end
-
-def fun_l6_n669()
- fun_l7_n811
-end
-
-def fun_l6_n670()
- fun_l7_n782
-end
-
-def fun_l6_n671()
- fun_l7_n275
-end
-
-def fun_l6_n672()
- fun_l7_n884
-end
-
-def fun_l6_n673()
- fun_l7_n984
-end
-
-def fun_l6_n674()
- fun_l7_n980
-end
-
-def fun_l6_n675()
- fun_l7_n341
-end
-
-def fun_l6_n676()
- fun_l7_n346
-end
-
-def fun_l6_n677()
- fun_l7_n164
-end
-
-def fun_l6_n678()
- fun_l7_n600
-end
-
-def fun_l6_n679()
- fun_l7_n351
-end
-
-def fun_l6_n680()
- fun_l7_n527
-end
-
-def fun_l6_n681()
- fun_l7_n206
-end
-
-def fun_l6_n682()
- fun_l7_n50
-end
-
-def fun_l6_n683()
- fun_l7_n476
-end
-
-def fun_l6_n684()
- fun_l7_n684
-end
-
-def fun_l6_n685()
- fun_l7_n883
-end
-
-def fun_l6_n686()
- fun_l7_n41
-end
-
-def fun_l6_n687()
- fun_l7_n382
-end
-
-def fun_l6_n688()
- fun_l7_n418
-end
-
-def fun_l6_n689()
- fun_l7_n22
-end
-
-def fun_l6_n690()
- fun_l7_n543
-end
-
-def fun_l6_n691()
- fun_l7_n143
-end
-
-def fun_l6_n692()
- fun_l7_n120
-end
-
-def fun_l6_n693()
- fun_l7_n431
-end
-
-def fun_l6_n694()
- fun_l7_n405
-end
-
-def fun_l6_n695()
- fun_l7_n474
-end
-
-def fun_l6_n696()
- fun_l7_n117
-end
-
-def fun_l6_n697()
- fun_l7_n475
-end
-
-def fun_l6_n698()
- fun_l7_n674
-end
-
-def fun_l6_n699()
- fun_l7_n398
-end
-
-def fun_l6_n700()
- fun_l7_n709
-end
-
-def fun_l6_n701()
- fun_l7_n360
-end
-
-def fun_l6_n702()
- fun_l7_n241
-end
-
-def fun_l6_n703()
- fun_l7_n837
-end
-
-def fun_l6_n704()
- fun_l7_n483
-end
-
-def fun_l6_n705()
- fun_l7_n943
-end
-
-def fun_l6_n706()
- fun_l7_n292
-end
-
-def fun_l6_n707()
- fun_l7_n659
-end
-
-def fun_l6_n708()
- fun_l7_n657
-end
-
-def fun_l6_n709()
- fun_l7_n143
-end
-
-def fun_l6_n710()
- fun_l7_n883
-end
-
-def fun_l6_n711()
- fun_l7_n764
-end
-
-def fun_l6_n712()
- fun_l7_n421
-end
-
-def fun_l6_n713()
- fun_l7_n611
-end
-
-def fun_l6_n714()
- fun_l7_n657
-end
-
-def fun_l6_n715()
- fun_l7_n765
-end
-
-def fun_l6_n716()
- fun_l7_n793
-end
-
-def fun_l6_n717()
- fun_l7_n752
-end
-
-def fun_l6_n718()
- fun_l7_n713
-end
-
-def fun_l6_n719()
- fun_l7_n577
-end
-
-def fun_l6_n720()
- fun_l7_n422
-end
-
-def fun_l6_n721()
- fun_l7_n368
-end
-
-def fun_l6_n722()
- fun_l7_n2
-end
-
-def fun_l6_n723()
- fun_l7_n739
-end
-
-def fun_l6_n724()
- fun_l7_n481
-end
-
-def fun_l6_n725()
- fun_l7_n516
-end
-
-def fun_l6_n726()
- fun_l7_n266
-end
-
-def fun_l6_n727()
- fun_l7_n269
-end
-
-def fun_l6_n728()
- fun_l7_n308
-end
-
-def fun_l6_n729()
- fun_l7_n915
-end
-
-def fun_l6_n730()
- fun_l7_n603
-end
-
-def fun_l6_n731()
- fun_l7_n585
-end
-
-def fun_l6_n732()
- fun_l7_n182
-end
-
-def fun_l6_n733()
- fun_l7_n28
-end
-
-def fun_l6_n734()
- fun_l7_n829
-end
-
-def fun_l6_n735()
- fun_l7_n365
-end
-
-def fun_l6_n736()
- fun_l7_n208
-end
-
-def fun_l6_n737()
- fun_l7_n395
-end
-
-def fun_l6_n738()
- fun_l7_n745
-end
-
-def fun_l6_n739()
- fun_l7_n90
-end
-
-def fun_l6_n740()
- fun_l7_n696
-end
-
-def fun_l6_n741()
- fun_l7_n730
-end
-
-def fun_l6_n742()
- fun_l7_n143
-end
-
-def fun_l6_n743()
- fun_l7_n753
-end
-
-def fun_l6_n744()
- fun_l7_n484
-end
-
-def fun_l6_n745()
- fun_l7_n779
-end
-
-def fun_l6_n746()
- fun_l7_n668
-end
-
-def fun_l6_n747()
- fun_l7_n331
-end
-
-def fun_l6_n748()
- fun_l7_n961
-end
-
-def fun_l6_n749()
- fun_l7_n875
-end
-
-def fun_l6_n750()
- fun_l7_n541
-end
-
-def fun_l6_n751()
- fun_l7_n122
-end
-
-def fun_l6_n752()
- fun_l7_n278
-end
-
-def fun_l6_n753()
- fun_l7_n510
-end
-
-def fun_l6_n754()
- fun_l7_n619
-end
-
-def fun_l6_n755()
- fun_l7_n165
-end
-
-def fun_l6_n756()
- fun_l7_n537
-end
-
-def fun_l6_n757()
- fun_l7_n917
-end
-
-def fun_l6_n758()
- fun_l7_n102
-end
-
-def fun_l6_n759()
- fun_l7_n504
-end
-
-def fun_l6_n760()
- fun_l7_n768
-end
-
-def fun_l6_n761()
- fun_l7_n259
-end
-
-def fun_l6_n762()
- fun_l7_n371
-end
-
-def fun_l6_n763()
- fun_l7_n727
-end
-
-def fun_l6_n764()
- fun_l7_n959
-end
-
-def fun_l6_n765()
- fun_l7_n191
-end
-
-def fun_l6_n766()
- fun_l7_n570
-end
-
-def fun_l6_n767()
- fun_l7_n746
-end
-
-def fun_l6_n768()
- fun_l7_n133
-end
-
-def fun_l6_n769()
- fun_l7_n520
-end
-
-def fun_l6_n770()
- fun_l7_n602
-end
-
-def fun_l6_n771()
- fun_l7_n722
-end
-
-def fun_l6_n772()
- fun_l7_n165
-end
-
-def fun_l6_n773()
- fun_l7_n132
-end
-
-def fun_l6_n774()
- fun_l7_n328
-end
-
-def fun_l6_n775()
- fun_l7_n88
-end
-
-def fun_l6_n776()
- fun_l7_n296
-end
-
-def fun_l6_n777()
- fun_l7_n389
-end
-
-def fun_l6_n778()
- fun_l7_n433
-end
-
-def fun_l6_n779()
- fun_l7_n525
-end
-
-def fun_l6_n780()
- fun_l7_n736
-end
-
-def fun_l6_n781()
- fun_l7_n300
-end
-
-def fun_l6_n782()
- fun_l7_n663
-end
-
-def fun_l6_n783()
- fun_l7_n33
-end
-
-def fun_l6_n784()
- fun_l7_n964
-end
-
-def fun_l6_n785()
- fun_l7_n459
-end
-
-def fun_l6_n786()
- fun_l7_n397
-end
-
-def fun_l6_n787()
- fun_l7_n453
-end
-
-def fun_l6_n788()
- fun_l7_n951
-end
-
-def fun_l6_n789()
- fun_l7_n485
-end
-
-def fun_l6_n790()
- fun_l7_n480
-end
-
-def fun_l6_n791()
- fun_l7_n663
-end
-
-def fun_l6_n792()
- fun_l7_n245
-end
-
-def fun_l6_n793()
- fun_l7_n933
-end
-
-def fun_l6_n794()
- fun_l7_n253
-end
-
-def fun_l6_n795()
- fun_l7_n746
-end
-
-def fun_l6_n796()
- fun_l7_n242
-end
-
-def fun_l6_n797()
- fun_l7_n435
-end
-
-def fun_l6_n798()
- fun_l7_n982
-end
-
-def fun_l6_n799()
- fun_l7_n516
-end
-
-def fun_l6_n800()
- fun_l7_n118
-end
-
-def fun_l6_n801()
- fun_l7_n787
-end
-
-def fun_l6_n802()
- fun_l7_n13
-end
-
-def fun_l6_n803()
- fun_l7_n381
-end
-
-def fun_l6_n804()
- fun_l7_n601
-end
-
-def fun_l6_n805()
- fun_l7_n95
-end
-
-def fun_l6_n806()
- fun_l7_n589
-end
-
-def fun_l6_n807()
- fun_l7_n33
-end
-
-def fun_l6_n808()
- fun_l7_n801
-end
-
-def fun_l6_n809()
- fun_l7_n857
-end
-
-def fun_l6_n810()
- fun_l7_n23
-end
-
-def fun_l6_n811()
- fun_l7_n998
-end
-
-def fun_l6_n812()
- fun_l7_n424
-end
-
-def fun_l6_n813()
- fun_l7_n525
-end
-
-def fun_l6_n814()
- fun_l7_n428
-end
-
-def fun_l6_n815()
- fun_l7_n509
-end
-
-def fun_l6_n816()
- fun_l7_n599
-end
-
-def fun_l6_n817()
- fun_l7_n642
-end
-
-def fun_l6_n818()
- fun_l7_n381
-end
-
-def fun_l6_n819()
- fun_l7_n802
-end
-
-def fun_l6_n820()
- fun_l7_n324
-end
-
-def fun_l6_n821()
- fun_l7_n804
-end
-
-def fun_l6_n822()
- fun_l7_n743
-end
-
-def fun_l6_n823()
- fun_l7_n961
-end
-
-def fun_l6_n824()
- fun_l7_n222
-end
-
-def fun_l6_n825()
- fun_l7_n184
-end
-
-def fun_l6_n826()
- fun_l7_n157
-end
-
-def fun_l6_n827()
- fun_l7_n387
-end
-
-def fun_l6_n828()
- fun_l7_n963
-end
-
-def fun_l6_n829()
- fun_l7_n817
-end
-
-def fun_l6_n830()
- fun_l7_n673
-end
-
-def fun_l6_n831()
- fun_l7_n471
-end
-
-def fun_l6_n832()
- fun_l7_n662
-end
-
-def fun_l6_n833()
- fun_l7_n385
-end
-
-def fun_l6_n834()
- fun_l7_n802
-end
-
-def fun_l6_n835()
- fun_l7_n827
-end
-
-def fun_l6_n836()
- fun_l7_n495
-end
-
-def fun_l6_n837()
- fun_l7_n44
-end
-
-def fun_l6_n838()
- fun_l7_n958
-end
-
-def fun_l6_n839()
- fun_l7_n436
-end
-
-def fun_l6_n840()
- fun_l7_n210
-end
-
-def fun_l6_n841()
- fun_l7_n14
-end
-
-def fun_l6_n842()
- fun_l7_n67
-end
-
-def fun_l6_n843()
- fun_l7_n0
-end
-
-def fun_l6_n844()
- fun_l7_n50
-end
-
-def fun_l6_n845()
- fun_l7_n398
-end
-
-def fun_l6_n846()
- fun_l7_n269
-end
-
-def fun_l6_n847()
- fun_l7_n478
-end
-
-def fun_l6_n848()
- fun_l7_n879
-end
-
-def fun_l6_n849()
- fun_l7_n713
-end
-
-def fun_l6_n850()
- fun_l7_n496
-end
-
-def fun_l6_n851()
- fun_l7_n995
-end
-
-def fun_l6_n852()
- fun_l7_n973
-end
-
-def fun_l6_n853()
- fun_l7_n990
-end
-
-def fun_l6_n854()
- fun_l7_n193
-end
-
-def fun_l6_n855()
- fun_l7_n200
-end
-
-def fun_l6_n856()
- fun_l7_n377
-end
-
-def fun_l6_n857()
- fun_l7_n82
-end
-
-def fun_l6_n858()
- fun_l7_n261
-end
-
-def fun_l6_n859()
- fun_l7_n464
-end
-
-def fun_l6_n860()
- fun_l7_n358
-end
-
-def fun_l6_n861()
- fun_l7_n920
-end
-
-def fun_l6_n862()
- fun_l7_n724
-end
-
-def fun_l6_n863()
- fun_l7_n536
-end
-
-def fun_l6_n864()
- fun_l7_n127
-end
-
-def fun_l6_n865()
- fun_l7_n919
-end
-
-def fun_l6_n866()
- fun_l7_n972
-end
-
-def fun_l6_n867()
- fun_l7_n773
-end
-
-def fun_l6_n868()
- fun_l7_n444
-end
-
-def fun_l6_n869()
- fun_l7_n242
-end
-
-def fun_l6_n870()
- fun_l7_n910
-end
-
-def fun_l6_n871()
- fun_l7_n396
-end
-
-def fun_l6_n872()
- fun_l7_n110
-end
-
-def fun_l6_n873()
- fun_l7_n393
-end
-
-def fun_l6_n874()
- fun_l7_n295
-end
-
-def fun_l6_n875()
- fun_l7_n998
-end
-
-def fun_l6_n876()
- fun_l7_n357
-end
-
-def fun_l6_n877()
- fun_l7_n586
-end
-
-def fun_l6_n878()
- fun_l7_n752
-end
-
-def fun_l6_n879()
- fun_l7_n998
-end
-
-def fun_l6_n880()
- fun_l7_n33
-end
-
-def fun_l6_n881()
- fun_l7_n472
-end
-
-def fun_l6_n882()
- fun_l7_n511
-end
-
-def fun_l6_n883()
- fun_l7_n677
-end
-
-def fun_l6_n884()
- fun_l7_n562
-end
-
-def fun_l6_n885()
- fun_l7_n100
-end
-
-def fun_l6_n886()
- fun_l7_n964
-end
-
-def fun_l6_n887()
- fun_l7_n306
-end
-
-def fun_l6_n888()
- fun_l7_n295
-end
-
-def fun_l6_n889()
- fun_l7_n323
-end
-
-def fun_l6_n890()
- fun_l7_n559
-end
-
-def fun_l6_n891()
- fun_l7_n872
-end
-
-def fun_l6_n892()
- fun_l7_n236
-end
-
-def fun_l6_n893()
- fun_l7_n845
-end
-
-def fun_l6_n894()
- fun_l7_n853
-end
-
-def fun_l6_n895()
- fun_l7_n333
-end
-
-def fun_l6_n896()
- fun_l7_n404
-end
-
-def fun_l6_n897()
- fun_l7_n17
-end
-
-def fun_l6_n898()
- fun_l7_n997
-end
-
-def fun_l6_n899()
- fun_l7_n844
-end
-
-def fun_l6_n900()
- fun_l7_n327
-end
-
-def fun_l6_n901()
- fun_l7_n863
-end
-
-def fun_l6_n902()
- fun_l7_n516
-end
-
-def fun_l6_n903()
- fun_l7_n298
-end
-
-def fun_l6_n904()
- fun_l7_n171
-end
-
-def fun_l6_n905()
- fun_l7_n908
-end
-
-def fun_l6_n906()
- fun_l7_n934
-end
-
-def fun_l6_n907()
- fun_l7_n361
-end
-
-def fun_l6_n908()
- fun_l7_n901
-end
-
-def fun_l6_n909()
- fun_l7_n830
-end
-
-def fun_l6_n910()
- fun_l7_n313
-end
-
-def fun_l6_n911()
- fun_l7_n799
-end
-
-def fun_l6_n912()
- fun_l7_n223
-end
-
-def fun_l6_n913()
- fun_l7_n108
-end
-
-def fun_l6_n914()
- fun_l7_n822
-end
-
-def fun_l6_n915()
- fun_l7_n42
-end
-
-def fun_l6_n916()
- fun_l7_n276
-end
-
-def fun_l6_n917()
- fun_l7_n535
-end
-
-def fun_l6_n918()
- fun_l7_n586
-end
-
-def fun_l6_n919()
- fun_l7_n847
-end
-
-def fun_l6_n920()
- fun_l7_n851
-end
-
-def fun_l6_n921()
- fun_l7_n544
-end
-
-def fun_l6_n922()
- fun_l7_n416
-end
-
-def fun_l6_n923()
- fun_l7_n670
-end
-
-def fun_l6_n924()
- fun_l7_n366
-end
-
-def fun_l6_n925()
- fun_l7_n94
-end
-
-def fun_l6_n926()
- fun_l7_n187
-end
-
-def fun_l6_n927()
- fun_l7_n72
-end
-
-def fun_l6_n928()
- fun_l7_n19
-end
-
-def fun_l6_n929()
- fun_l7_n424
-end
-
-def fun_l6_n930()
- fun_l7_n833
-end
-
-def fun_l6_n931()
- fun_l7_n438
-end
-
-def fun_l6_n932()
- fun_l7_n9
-end
-
-def fun_l6_n933()
- fun_l7_n967
-end
-
-def fun_l6_n934()
- fun_l7_n155
-end
-
-def fun_l6_n935()
- fun_l7_n119
-end
-
-def fun_l6_n936()
- fun_l7_n916
-end
-
-def fun_l6_n937()
- fun_l7_n232
-end
-
-def fun_l6_n938()
- fun_l7_n880
-end
-
-def fun_l6_n939()
- fun_l7_n456
-end
-
-def fun_l6_n940()
- fun_l7_n764
-end
-
-def fun_l6_n941()
- fun_l7_n525
-end
-
-def fun_l6_n942()
- fun_l7_n794
-end
-
-def fun_l6_n943()
- fun_l7_n887
-end
-
-def fun_l6_n944()
- fun_l7_n756
-end
-
-def fun_l6_n945()
- fun_l7_n863
-end
-
-def fun_l6_n946()
- fun_l7_n959
-end
-
-def fun_l6_n947()
- fun_l7_n597
-end
-
-def fun_l6_n948()
- fun_l7_n919
-end
-
-def fun_l6_n949()
- fun_l7_n196
-end
-
-def fun_l6_n950()
- fun_l7_n505
-end
-
-def fun_l6_n951()
- fun_l7_n374
-end
-
-def fun_l6_n952()
- fun_l7_n272
-end
-
-def fun_l6_n953()
- fun_l7_n317
-end
-
-def fun_l6_n954()
- fun_l7_n149
-end
-
-def fun_l6_n955()
- fun_l7_n885
-end
-
-def fun_l6_n956()
- fun_l7_n174
-end
-
-def fun_l6_n957()
- fun_l7_n234
-end
-
-def fun_l6_n958()
- fun_l7_n848
-end
-
-def fun_l6_n959()
- fun_l7_n18
-end
-
-def fun_l6_n960()
- fun_l7_n111
-end
-
-def fun_l6_n961()
- fun_l7_n355
-end
-
-def fun_l6_n962()
- fun_l7_n640
-end
-
-def fun_l6_n963()
- fun_l7_n486
-end
-
-def fun_l6_n964()
- fun_l7_n940
-end
-
-def fun_l6_n965()
- fun_l7_n54
-end
-
-def fun_l6_n966()
- fun_l7_n970
-end
-
-def fun_l6_n967()
- fun_l7_n127
-end
-
-def fun_l6_n968()
- fun_l7_n581
-end
-
-def fun_l6_n969()
- fun_l7_n921
-end
-
-def fun_l6_n970()
- fun_l7_n837
-end
-
-def fun_l6_n971()
- fun_l7_n933
-end
-
-def fun_l6_n972()
- fun_l7_n109
-end
-
-def fun_l6_n973()
- fun_l7_n846
-end
-
-def fun_l6_n974()
- fun_l7_n178
-end
-
-def fun_l6_n975()
- fun_l7_n278
-end
-
-def fun_l6_n976()
- fun_l7_n404
-end
-
-def fun_l6_n977()
- fun_l7_n456
-end
-
-def fun_l6_n978()
- fun_l7_n860
-end
-
-def fun_l6_n979()
- fun_l7_n637
-end
-
-def fun_l6_n980()
- fun_l7_n201
-end
-
-def fun_l6_n981()
- fun_l7_n836
-end
-
-def fun_l6_n982()
- fun_l7_n172
-end
-
-def fun_l6_n983()
- fun_l7_n935
-end
-
-def fun_l6_n984()
- fun_l7_n937
-end
-
-def fun_l6_n985()
- fun_l7_n817
-end
-
-def fun_l6_n986()
- fun_l7_n16
-end
-
-def fun_l6_n987()
- fun_l7_n152
-end
-
-def fun_l6_n988()
- fun_l7_n359
-end
-
-def fun_l6_n989()
- fun_l7_n357
-end
-
-def fun_l6_n990()
- fun_l7_n609
-end
-
-def fun_l6_n991()
- fun_l7_n604
-end
-
-def fun_l6_n992()
- fun_l7_n998
-end
-
-def fun_l6_n993()
- fun_l7_n366
-end
-
-def fun_l6_n994()
- fun_l7_n150
-end
-
-def fun_l6_n995()
- fun_l7_n823
-end
-
-def fun_l6_n996()
- fun_l7_n476
-end
-
-def fun_l6_n997()
- fun_l7_n535
-end
-
-def fun_l6_n998()
- fun_l7_n222
-end
-
-def fun_l6_n999()
- fun_l7_n238
-end
-
-def fun_l7_n0()
- fun_l8_n3
-end
-
-def fun_l7_n1()
- fun_l8_n706
-end
-
-def fun_l7_n2()
- fun_l8_n887
-end
-
-def fun_l7_n3()
- fun_l8_n693
-end
-
-def fun_l7_n4()
- fun_l8_n11
-end
-
-def fun_l7_n5()
- fun_l8_n155
-end
-
-def fun_l7_n6()
- fun_l8_n604
-end
-
-def fun_l7_n7()
- fun_l8_n616
-end
-
-def fun_l7_n8()
- fun_l8_n686
-end
-
-def fun_l7_n9()
- fun_l8_n257
-end
-
-def fun_l7_n10()
- fun_l8_n594
-end
-
-def fun_l7_n11()
- fun_l8_n548
-end
-
-def fun_l7_n12()
- fun_l8_n305
-end
-
-def fun_l7_n13()
- fun_l8_n125
-end
-
-def fun_l7_n14()
- fun_l8_n183
-end
-
-def fun_l7_n15()
- fun_l8_n799
-end
-
-def fun_l7_n16()
- fun_l8_n333
-end
-
-def fun_l7_n17()
- fun_l8_n873
-end
-
-def fun_l7_n18()
- fun_l8_n110
-end
-
-def fun_l7_n19()
- fun_l8_n578
-end
-
-def fun_l7_n20()
- fun_l8_n423
-end
-
-def fun_l7_n21()
- fun_l8_n686
-end
-
-def fun_l7_n22()
- fun_l8_n162
-end
-
-def fun_l7_n23()
- fun_l8_n277
-end
-
-def fun_l7_n24()
- fun_l8_n651
-end
-
-def fun_l7_n25()
- fun_l8_n575
-end
-
-def fun_l7_n26()
- fun_l8_n937
-end
-
-def fun_l7_n27()
- fun_l8_n636
-end
-
-def fun_l7_n28()
- fun_l8_n1
-end
-
-def fun_l7_n29()
- fun_l8_n83
-end
-
-def fun_l7_n30()
- fun_l8_n318
-end
-
-def fun_l7_n31()
- fun_l8_n675
-end
-
-def fun_l7_n32()
- fun_l8_n118
-end
-
-def fun_l7_n33()
- fun_l8_n522
-end
-
-def fun_l7_n34()
- fun_l8_n507
-end
-
-def fun_l7_n35()
- fun_l8_n846
-end
-
-def fun_l7_n36()
- fun_l8_n584
-end
-
-def fun_l7_n37()
- fun_l8_n816
-end
-
-def fun_l7_n38()
- fun_l8_n217
-end
-
-def fun_l7_n39()
- fun_l8_n366
-end
-
-def fun_l7_n40()
- fun_l8_n283
-end
-
-def fun_l7_n41()
- fun_l8_n536
-end
-
-def fun_l7_n42()
- fun_l8_n414
-end
-
-def fun_l7_n43()
- fun_l8_n216
-end
-
-def fun_l7_n44()
- fun_l8_n743
-end
-
-def fun_l7_n45()
- fun_l8_n449
-end
-
-def fun_l7_n46()
- fun_l8_n629
-end
-
-def fun_l7_n47()
- fun_l8_n711
-end
-
-def fun_l7_n48()
- fun_l8_n113
-end
-
-def fun_l7_n49()
- fun_l8_n440
-end
-
-def fun_l7_n50()
- fun_l8_n822
-end
-
-def fun_l7_n51()
- fun_l8_n567
-end
-
-def fun_l7_n52()
- fun_l8_n854
-end
-
-def fun_l7_n53()
- fun_l8_n204
-end
-
-def fun_l7_n54()
- fun_l8_n796
-end
-
-def fun_l7_n55()
- fun_l8_n989
-end
-
-def fun_l7_n56()
- fun_l8_n504
-end
-
-def fun_l7_n57()
- fun_l8_n952
-end
-
-def fun_l7_n58()
- fun_l8_n797
-end
-
-def fun_l7_n59()
- fun_l8_n492
-end
-
-def fun_l7_n60()
- fun_l8_n949
-end
-
-def fun_l7_n61()
- fun_l8_n215
-end
-
-def fun_l7_n62()
- fun_l8_n306
-end
-
-def fun_l7_n63()
- fun_l8_n632
-end
-
-def fun_l7_n64()
- fun_l8_n572
-end
-
-def fun_l7_n65()
- fun_l8_n69
-end
-
-def fun_l7_n66()
- fun_l8_n97
-end
-
-def fun_l7_n67()
- fun_l8_n708
-end
-
-def fun_l7_n68()
- fun_l8_n548
-end
-
-def fun_l7_n69()
- fun_l8_n999
-end
-
-def fun_l7_n70()
- fun_l8_n872
-end
-
-def fun_l7_n71()
- fun_l8_n20
-end
-
-def fun_l7_n72()
- fun_l8_n220
-end
-
-def fun_l7_n73()
- fun_l8_n28
-end
-
-def fun_l7_n74()
- fun_l8_n79
-end
-
-def fun_l7_n75()
- fun_l8_n248
-end
-
-def fun_l7_n76()
- fun_l8_n601
-end
-
-def fun_l7_n77()
- fun_l8_n469
-end
-
-def fun_l7_n78()
- fun_l8_n315
-end
-
-def fun_l7_n79()
- fun_l8_n712
-end
-
-def fun_l7_n80()
- fun_l8_n177
-end
-
-def fun_l7_n81()
- fun_l8_n106
-end
-
-def fun_l7_n82()
- fun_l8_n668
-end
-
-def fun_l7_n83()
- fun_l8_n299
-end
-
-def fun_l7_n84()
- fun_l8_n59
-end
-
-def fun_l7_n85()
- fun_l8_n120
-end
-
-def fun_l7_n86()
- fun_l8_n209
-end
-
-def fun_l7_n87()
- fun_l8_n502
-end
-
-def fun_l7_n88()
- fun_l8_n935
-end
-
-def fun_l7_n89()
- fun_l8_n697
-end
-
-def fun_l7_n90()
- fun_l8_n231
-end
-
-def fun_l7_n91()
- fun_l8_n47
-end
-
-def fun_l7_n92()
- fun_l8_n125
-end
-
-def fun_l7_n93()
- fun_l8_n975
-end
-
-def fun_l7_n94()
- fun_l8_n627
-end
-
-def fun_l7_n95()
- fun_l8_n898
-end
-
-def fun_l7_n96()
- fun_l8_n124
-end
-
-def fun_l7_n97()
- fun_l8_n722
-end
-
-def fun_l7_n98()
- fun_l8_n745
-end
-
-def fun_l7_n99()
- fun_l8_n999
-end
-
-def fun_l7_n100()
- fun_l8_n791
-end
-
-def fun_l7_n101()
- fun_l8_n360
-end
-
-def fun_l7_n102()
- fun_l8_n755
-end
-
-def fun_l7_n103()
- fun_l8_n718
-end
-
-def fun_l7_n104()
- fun_l8_n495
-end
-
-def fun_l7_n105()
- fun_l8_n19
-end
-
-def fun_l7_n106()
- fun_l8_n280
-end
-
-def fun_l7_n107()
- fun_l8_n710
-end
-
-def fun_l7_n108()
- fun_l8_n871
-end
-
-def fun_l7_n109()
- fun_l8_n727
-end
-
-def fun_l7_n110()
- fun_l8_n807
-end
-
-def fun_l7_n111()
- fun_l8_n170
-end
-
-def fun_l7_n112()
- fun_l8_n661
-end
-
-def fun_l7_n113()
- fun_l8_n684
-end
-
-def fun_l7_n114()
- fun_l8_n202
-end
-
-def fun_l7_n115()
- fun_l8_n679
-end
-
-def fun_l7_n116()
- fun_l8_n773
-end
-
-def fun_l7_n117()
- fun_l8_n538
-end
-
-def fun_l7_n118()
- fun_l8_n411
-end
-
-def fun_l7_n119()
- fun_l8_n264
-end
-
-def fun_l7_n120()
- fun_l8_n487
-end
-
-def fun_l7_n121()
- fun_l8_n906
-end
-
-def fun_l7_n122()
- fun_l8_n833
-end
-
-def fun_l7_n123()
- fun_l8_n721
-end
-
-def fun_l7_n124()
- fun_l8_n792
-end
-
-def fun_l7_n125()
- fun_l8_n852
-end
-
-def fun_l7_n126()
- fun_l8_n876
-end
-
-def fun_l7_n127()
- fun_l8_n489
-end
-
-def fun_l7_n128()
- fun_l8_n715
-end
-
-def fun_l7_n129()
- fun_l8_n863
-end
-
-def fun_l7_n130()
- fun_l8_n842
-end
-
-def fun_l7_n131()
- fun_l8_n99
-end
-
-def fun_l7_n132()
- fun_l8_n472
-end
-
-def fun_l7_n133()
- fun_l8_n826
-end
-
-def fun_l7_n134()
- fun_l8_n805
-end
-
-def fun_l7_n135()
- fun_l8_n914
-end
-
-def fun_l7_n136()
- fun_l8_n691
-end
-
-def fun_l7_n137()
- fun_l8_n880
-end
-
-def fun_l7_n138()
- fun_l8_n708
-end
-
-def fun_l7_n139()
- fun_l8_n445
-end
-
-def fun_l7_n140()
- fun_l8_n173
-end
-
-def fun_l7_n141()
- fun_l8_n785
-end
-
-def fun_l7_n142()
- fun_l8_n638
-end
-
-def fun_l7_n143()
- fun_l8_n319
-end
-
-def fun_l7_n144()
- fun_l8_n825
-end
-
-def fun_l7_n145()
- fun_l8_n497
-end
-
-def fun_l7_n146()
- fun_l8_n941
-end
-
-def fun_l7_n147()
- fun_l8_n164
-end
-
-def fun_l7_n148()
- fun_l8_n773
-end
-
-def fun_l7_n149()
- fun_l8_n603
-end
-
-def fun_l7_n150()
- fun_l8_n701
-end
-
-def fun_l7_n151()
- fun_l8_n279
-end
-
-def fun_l7_n152()
- fun_l8_n120
-end
-
-def fun_l7_n153()
- fun_l8_n352
-end
-
-def fun_l7_n154()
- fun_l8_n401
-end
-
-def fun_l7_n155()
- fun_l8_n195
-end
-
-def fun_l7_n156()
- fun_l8_n206
-end
-
-def fun_l7_n157()
- fun_l8_n209
-end
-
-def fun_l7_n158()
- fun_l8_n594
-end
-
-def fun_l7_n159()
- fun_l8_n49
-end
-
-def fun_l7_n160()
- fun_l8_n835
-end
-
-def fun_l7_n161()
- fun_l8_n108
-end
-
-def fun_l7_n162()
- fun_l8_n499
-end
-
-def fun_l7_n163()
- fun_l8_n822
-end
-
-def fun_l7_n164()
- fun_l8_n712
-end
-
-def fun_l7_n165()
- fun_l8_n757
-end
-
-def fun_l7_n166()
- fun_l8_n706
-end
-
-def fun_l7_n167()
- fun_l8_n517
-end
-
-def fun_l7_n168()
- fun_l8_n74
-end
-
-def fun_l7_n169()
- fun_l8_n292
-end
-
-def fun_l7_n170()
- fun_l8_n560
-end
-
-def fun_l7_n171()
- fun_l8_n476
-end
-
-def fun_l7_n172()
- fun_l8_n818
-end
-
-def fun_l7_n173()
- fun_l8_n91
-end
-
-def fun_l7_n174()
- fun_l8_n835
-end
-
-def fun_l7_n175()
- fun_l8_n84
-end
-
-def fun_l7_n176()
- fun_l8_n506
-end
-
-def fun_l7_n177()
- fun_l8_n602
-end
-
-def fun_l7_n178()
- fun_l8_n758
-end
-
-def fun_l7_n179()
- fun_l8_n591
-end
-
-def fun_l7_n180()
- fun_l8_n757
-end
-
-def fun_l7_n181()
- fun_l8_n127
-end
-
-def fun_l7_n182()
- fun_l8_n287
-end
-
-def fun_l7_n183()
- fun_l8_n672
-end
-
-def fun_l7_n184()
- fun_l8_n870
-end
-
-def fun_l7_n185()
- fun_l8_n267
-end
-
-def fun_l7_n186()
- fun_l8_n396
-end
-
-def fun_l7_n187()
- fun_l8_n128
-end
-
-def fun_l7_n188()
- fun_l8_n670
-end
-
-def fun_l7_n189()
- fun_l8_n142
-end
-
-def fun_l7_n190()
- fun_l8_n320
-end
-
-def fun_l7_n191()
- fun_l8_n829
-end
-
-def fun_l7_n192()
- fun_l8_n788
-end
-
-def fun_l7_n193()
- fun_l8_n174
-end
-
-def fun_l7_n194()
- fun_l8_n526
-end
-
-def fun_l7_n195()
- fun_l8_n185
-end
-
-def fun_l7_n196()
- fun_l8_n746
-end
-
-def fun_l7_n197()
- fun_l8_n889
-end
-
-def fun_l7_n198()
- fun_l8_n154
-end
-
-def fun_l7_n199()
- fun_l8_n19
-end
-
-def fun_l7_n200()
- fun_l8_n913
-end
-
-def fun_l7_n201()
- fun_l8_n560
-end
-
-def fun_l7_n202()
- fun_l8_n768
-end
-
-def fun_l7_n203()
- fun_l8_n412
-end
-
-def fun_l7_n204()
- fun_l8_n394
-end
-
-def fun_l7_n205()
- fun_l8_n641
-end
-
-def fun_l7_n206()
- fun_l8_n83
-end
-
-def fun_l7_n207()
- fun_l8_n39
-end
-
-def fun_l7_n208()
- fun_l8_n502
-end
-
-def fun_l7_n209()
- fun_l8_n904
-end
-
-def fun_l7_n210()
- fun_l8_n639
-end
-
-def fun_l7_n211()
- fun_l8_n873
-end
-
-def fun_l7_n212()
- fun_l8_n940
-end
-
-def fun_l7_n213()
- fun_l8_n594
-end
-
-def fun_l7_n214()
- fun_l8_n397
-end
-
-def fun_l7_n215()
- fun_l8_n318
-end
-
-def fun_l7_n216()
- fun_l8_n116
-end
-
-def fun_l7_n217()
- fun_l8_n888
-end
-
-def fun_l7_n218()
- fun_l8_n148
-end
-
-def fun_l7_n219()
- fun_l8_n329
-end
-
-def fun_l7_n220()
- fun_l8_n973
-end
-
-def fun_l7_n221()
- fun_l8_n913
-end
-
-def fun_l7_n222()
- fun_l8_n170
-end
-
-def fun_l7_n223()
- fun_l8_n103
-end
-
-def fun_l7_n224()
- fun_l8_n835
-end
-
-def fun_l7_n225()
- fun_l8_n104
-end
-
-def fun_l7_n226()
- fun_l8_n111
-end
-
-def fun_l7_n227()
- fun_l8_n12
-end
-
-def fun_l7_n228()
- fun_l8_n299
-end
-
-def fun_l7_n229()
- fun_l8_n639
-end
-
-def fun_l7_n230()
- fun_l8_n789
-end
-
-def fun_l7_n231()
- fun_l8_n968
-end
-
-def fun_l7_n232()
- fun_l8_n905
-end
-
-def fun_l7_n233()
- fun_l8_n325
-end
-
-def fun_l7_n234()
- fun_l8_n841
-end
-
-def fun_l7_n235()
- fun_l8_n605
-end
-
-def fun_l7_n236()
- fun_l8_n495
-end
-
-def fun_l7_n237()
- fun_l8_n154
-end
-
-def fun_l7_n238()
- fun_l8_n331
-end
-
-def fun_l7_n239()
- fun_l8_n30
-end
-
-def fun_l7_n240()
- fun_l8_n170
-end
-
-def fun_l7_n241()
- fun_l8_n376
-end
-
-def fun_l7_n242()
- fun_l8_n49
-end
-
-def fun_l7_n243()
- fun_l8_n463
-end
-
-def fun_l7_n244()
- fun_l8_n269
-end
-
-def fun_l7_n245()
- fun_l8_n573
-end
-
-def fun_l7_n246()
- fun_l8_n782
-end
-
-def fun_l7_n247()
- fun_l8_n85
-end
-
-def fun_l7_n248()
- fun_l8_n667
-end
-
-def fun_l7_n249()
- fun_l8_n686
-end
-
-def fun_l7_n250()
- fun_l8_n575
-end
-
-def fun_l7_n251()
- fun_l8_n349
-end
-
-def fun_l7_n252()
- fun_l8_n252
-end
-
-def fun_l7_n253()
- fun_l8_n490
-end
-
-def fun_l7_n254()
- fun_l8_n600
-end
-
-def fun_l7_n255()
- fun_l8_n772
-end
-
-def fun_l7_n256()
- fun_l8_n645
-end
-
-def fun_l7_n257()
- fun_l8_n633
-end
-
-def fun_l7_n258()
- fun_l8_n323
-end
-
-def fun_l7_n259()
- fun_l8_n590
-end
-
-def fun_l7_n260()
- fun_l8_n77
-end
-
-def fun_l7_n261()
- fun_l8_n349
-end
-
-def fun_l7_n262()
- fun_l8_n98
-end
-
-def fun_l7_n263()
- fun_l8_n312
-end
-
-def fun_l7_n264()
- fun_l8_n449
-end
-
-def fun_l7_n265()
- fun_l8_n550
-end
-
-def fun_l7_n266()
- fun_l8_n717
-end
-
-def fun_l7_n267()
- fun_l8_n249
-end
-
-def fun_l7_n268()
- fun_l8_n940
-end
-
-def fun_l7_n269()
- fun_l8_n243
-end
-
-def fun_l7_n270()
- fun_l8_n392
-end
-
-def fun_l7_n271()
- fun_l8_n129
-end
-
-def fun_l7_n272()
- fun_l8_n704
-end
-
-def fun_l7_n273()
- fun_l8_n815
-end
-
-def fun_l7_n274()
- fun_l8_n123
-end
-
-def fun_l7_n275()
- fun_l8_n281
-end
-
-def fun_l7_n276()
- fun_l8_n110
-end
-
-def fun_l7_n277()
- fun_l8_n250
-end
-
-def fun_l7_n278()
- fun_l8_n245
-end
-
-def fun_l7_n279()
- fun_l8_n612
-end
-
-def fun_l7_n280()
- fun_l8_n693
-end
-
-def fun_l7_n281()
- fun_l8_n441
-end
-
-def fun_l7_n282()
- fun_l8_n716
-end
-
-def fun_l7_n283()
- fun_l8_n467
-end
-
-def fun_l7_n284()
- fun_l8_n944
-end
-
-def fun_l7_n285()
- fun_l8_n14
-end
-
-def fun_l7_n286()
- fun_l8_n453
-end
-
-def fun_l7_n287()
- fun_l8_n342
-end
-
-def fun_l7_n288()
- fun_l8_n666
-end
-
-def fun_l7_n289()
- fun_l8_n111
-end
-
-def fun_l7_n290()
- fun_l8_n353
-end
-
-def fun_l7_n291()
- fun_l8_n279
-end
-
-def fun_l7_n292()
- fun_l8_n556
-end
-
-def fun_l7_n293()
- fun_l8_n780
-end
-
-def fun_l7_n294()
- fun_l8_n137
-end
-
-def fun_l7_n295()
- fun_l8_n760
-end
-
-def fun_l7_n296()
- fun_l8_n56
-end
-
-def fun_l7_n297()
- fun_l8_n927
-end
-
-def fun_l7_n298()
- fun_l8_n861
-end
-
-def fun_l7_n299()
- fun_l8_n653
-end
-
-def fun_l7_n300()
- fun_l8_n948
-end
-
-def fun_l7_n301()
- fun_l8_n159
-end
-
-def fun_l7_n302()
- fun_l8_n426
-end
-
-def fun_l7_n303()
- fun_l8_n175
-end
-
-def fun_l7_n304()
- fun_l8_n35
-end
-
-def fun_l7_n305()
- fun_l8_n700
-end
-
-def fun_l7_n306()
- fun_l8_n603
-end
-
-def fun_l7_n307()
- fun_l8_n600
-end
-
-def fun_l7_n308()
- fun_l8_n280
-end
-
-def fun_l7_n309()
- fun_l8_n599
-end
-
-def fun_l7_n310()
- fun_l8_n404
-end
-
-def fun_l7_n311()
- fun_l8_n475
-end
-
-def fun_l7_n312()
- fun_l8_n837
-end
-
-def fun_l7_n313()
- fun_l8_n61
-end
-
-def fun_l7_n314()
- fun_l8_n571
-end
-
-def fun_l7_n315()
- fun_l8_n442
-end
-
-def fun_l7_n316()
- fun_l8_n256
-end
-
-def fun_l7_n317()
- fun_l8_n751
-end
-
-def fun_l7_n318()
- fun_l8_n672
-end
-
-def fun_l7_n319()
- fun_l8_n953
-end
-
-def fun_l7_n320()
- fun_l8_n330
-end
-
-def fun_l7_n321()
- fun_l8_n54
-end
-
-def fun_l7_n322()
- fun_l8_n11
-end
-
-def fun_l7_n323()
- fun_l8_n504
-end
-
-def fun_l7_n324()
- fun_l8_n786
-end
-
-def fun_l7_n325()
- fun_l8_n32
-end
-
-def fun_l7_n326()
- fun_l8_n85
-end
-
-def fun_l7_n327()
- fun_l8_n727
-end
-
-def fun_l7_n328()
- fun_l8_n445
-end
-
-def fun_l7_n329()
- fun_l8_n787
-end
-
-def fun_l7_n330()
- fun_l8_n663
-end
-
-def fun_l7_n331()
- fun_l8_n461
-end
-
-def fun_l7_n332()
- fun_l8_n82
-end
-
-def fun_l7_n333()
- fun_l8_n974
-end
-
-def fun_l7_n334()
- fun_l8_n511
-end
-
-def fun_l7_n335()
- fun_l8_n827
-end
-
-def fun_l7_n336()
- fun_l8_n12
-end
-
-def fun_l7_n337()
- fun_l8_n696
-end
-
-def fun_l7_n338()
- fun_l8_n325
-end
-
-def fun_l7_n339()
- fun_l8_n148
-end
-
-def fun_l7_n340()
- fun_l8_n609
-end
-
-def fun_l7_n341()
- fun_l8_n471
-end
-
-def fun_l7_n342()
- fun_l8_n63
-end
-
-def fun_l7_n343()
- fun_l8_n358
-end
-
-def fun_l7_n344()
- fun_l8_n658
-end
-
-def fun_l7_n345()
- fun_l8_n730
-end
-
-def fun_l7_n346()
- fun_l8_n139
-end
-
-def fun_l7_n347()
- fun_l8_n951
-end
-
-def fun_l7_n348()
- fun_l8_n113
-end
-
-def fun_l7_n349()
- fun_l8_n695
-end
-
-def fun_l7_n350()
- fun_l8_n803
-end
-
-def fun_l7_n351()
- fun_l8_n93
-end
-
-def fun_l7_n352()
- fun_l8_n340
-end
-
-def fun_l7_n353()
- fun_l8_n551
-end
-
-def fun_l7_n354()
- fun_l8_n5
-end
-
-def fun_l7_n355()
- fun_l8_n960
-end
-
-def fun_l7_n356()
- fun_l8_n76
-end
-
-def fun_l7_n357()
- fun_l8_n142
-end
-
-def fun_l7_n358()
- fun_l8_n305
-end
-
-def fun_l7_n359()
- fun_l8_n739
-end
-
-def fun_l7_n360()
- fun_l8_n293
-end
-
-def fun_l7_n361()
- fun_l8_n812
-end
-
-def fun_l7_n362()
- fun_l8_n635
-end
-
-def fun_l7_n363()
- fun_l8_n239
-end
-
-def fun_l7_n364()
- fun_l8_n880
-end
-
-def fun_l7_n365()
- fun_l8_n999
-end
-
-def fun_l7_n366()
- fun_l8_n997
-end
-
-def fun_l7_n367()
- fun_l8_n190
-end
-
-def fun_l7_n368()
- fun_l8_n763
-end
-
-def fun_l7_n369()
- fun_l8_n369
-end
-
-def fun_l7_n370()
- fun_l8_n538
-end
-
-def fun_l7_n371()
- fun_l8_n553
-end
-
-def fun_l7_n372()
- fun_l8_n844
-end
-
-def fun_l7_n373()
- fun_l8_n773
-end
-
-def fun_l7_n374()
- fun_l8_n589
-end
-
-def fun_l7_n375()
- fun_l8_n492
-end
-
-def fun_l7_n376()
- fun_l8_n848
-end
-
-def fun_l7_n377()
- fun_l8_n715
-end
-
-def fun_l7_n378()
- fun_l8_n82
-end
-
-def fun_l7_n379()
- fun_l8_n267
-end
-
-def fun_l7_n380()
- fun_l8_n84
-end
-
-def fun_l7_n381()
- fun_l8_n996
-end
-
-def fun_l7_n382()
- fun_l8_n536
-end
-
-def fun_l7_n383()
- fun_l8_n518
-end
-
-def fun_l7_n384()
- fun_l8_n70
-end
-
-def fun_l7_n385()
- fun_l8_n545
-end
-
-def fun_l7_n386()
- fun_l8_n156
-end
-
-def fun_l7_n387()
- fun_l8_n558
-end
-
-def fun_l7_n388()
- fun_l8_n519
-end
-
-def fun_l7_n389()
- fun_l8_n321
-end
-
-def fun_l7_n390()
- fun_l8_n133
-end
-
-def fun_l7_n391()
- fun_l8_n253
-end
-
-def fun_l7_n392()
- fun_l8_n969
-end
-
-def fun_l7_n393()
- fun_l8_n986
-end
-
-def fun_l7_n394()
- fun_l8_n991
-end
-
-def fun_l7_n395()
- fun_l8_n757
-end
-
-def fun_l7_n396()
- fun_l8_n496
-end
-
-def fun_l7_n397()
- fun_l8_n841
-end
-
-def fun_l7_n398()
- fun_l8_n922
-end
-
-def fun_l7_n399()
- fun_l8_n51
-end
-
-def fun_l7_n400()
- fun_l8_n961
-end
-
-def fun_l7_n401()
- fun_l8_n82
-end
-
-def fun_l7_n402()
- fun_l8_n190
-end
-
-def fun_l7_n403()
- fun_l8_n543
-end
-
-def fun_l7_n404()
- fun_l8_n768
-end
-
-def fun_l7_n405()
- fun_l8_n810
-end
-
-def fun_l7_n406()
- fun_l8_n714
-end
-
-def fun_l7_n407()
- fun_l8_n692
-end
-
-def fun_l7_n408()
- fun_l8_n357
-end
-
-def fun_l7_n409()
- fun_l8_n380
-end
-
-def fun_l7_n410()
- fun_l8_n958
-end
-
-def fun_l7_n411()
- fun_l8_n992
-end
-
-def fun_l7_n412()
- fun_l8_n819
-end
-
-def fun_l7_n413()
- fun_l8_n4
-end
-
-def fun_l7_n414()
- fun_l8_n429
-end
-
-def fun_l7_n415()
- fun_l8_n56
-end
-
-def fun_l7_n416()
- fun_l8_n212
-end
-
-def fun_l7_n417()
- fun_l8_n267
-end
-
-def fun_l7_n418()
- fun_l8_n948
-end
-
-def fun_l7_n419()
- fun_l8_n221
-end
-
-def fun_l7_n420()
- fun_l8_n711
-end
-
-def fun_l7_n421()
- fun_l8_n307
-end
-
-def fun_l7_n422()
- fun_l8_n482
-end
-
-def fun_l7_n423()
- fun_l8_n522
-end
-
-def fun_l7_n424()
- fun_l8_n166
-end
-
-def fun_l7_n425()
- fun_l8_n410
-end
-
-def fun_l7_n426()
- fun_l8_n143
-end
-
-def fun_l7_n427()
- fun_l8_n54
-end
-
-def fun_l7_n428()
- fun_l8_n217
-end
-
-def fun_l7_n429()
- fun_l8_n423
-end
-
-def fun_l7_n430()
- fun_l8_n181
-end
-
-def fun_l7_n431()
- fun_l8_n456
-end
-
-def fun_l7_n432()
- fun_l8_n640
-end
-
-def fun_l7_n433()
- fun_l8_n588
-end
-
-def fun_l7_n434()
- fun_l8_n49
-end
-
-def fun_l7_n435()
- fun_l8_n373
-end
-
-def fun_l7_n436()
- fun_l8_n668
-end
-
-def fun_l7_n437()
- fun_l8_n478
-end
-
-def fun_l7_n438()
- fun_l8_n468
-end
-
-def fun_l7_n439()
- fun_l8_n230
-end
-
-def fun_l7_n440()
- fun_l8_n361
-end
-
-def fun_l7_n441()
- fun_l8_n770
-end
-
-def fun_l7_n442()
- fun_l8_n876
-end
-
-def fun_l7_n443()
- fun_l8_n383
-end
-
-def fun_l7_n444()
- fun_l8_n568
-end
-
-def fun_l7_n445()
- fun_l8_n236
-end
-
-def fun_l7_n446()
- fun_l8_n136
-end
-
-def fun_l7_n447()
- fun_l8_n883
-end
-
-def fun_l7_n448()
- fun_l8_n227
-end
-
-def fun_l7_n449()
- fun_l8_n634
-end
-
-def fun_l7_n450()
- fun_l8_n985
-end
-
-def fun_l7_n451()
- fun_l8_n314
-end
-
-def fun_l7_n452()
- fun_l8_n90
-end
-
-def fun_l7_n453()
- fun_l8_n31
-end
-
-def fun_l7_n454()
- fun_l8_n226
-end
-
-def fun_l7_n455()
- fun_l8_n309
-end
-
-def fun_l7_n456()
- fun_l8_n912
-end
-
-def fun_l7_n457()
- fun_l8_n7
-end
-
-def fun_l7_n458()
- fun_l8_n304
-end
-
-def fun_l7_n459()
- fun_l8_n488
-end
-
-def fun_l7_n460()
- fun_l8_n576
-end
-
-def fun_l7_n461()
- fun_l8_n854
-end
-
-def fun_l7_n462()
- fun_l8_n164
-end
-
-def fun_l7_n463()
- fun_l8_n381
-end
-
-def fun_l7_n464()
- fun_l8_n241
-end
-
-def fun_l7_n465()
- fun_l8_n330
-end
-
-def fun_l7_n466()
- fun_l8_n517
-end
-
-def fun_l7_n467()
- fun_l8_n647
-end
-
-def fun_l7_n468()
- fun_l8_n320
-end
-
-def fun_l7_n469()
- fun_l8_n479
-end
-
-def fun_l7_n470()
- fun_l8_n913
-end
-
-def fun_l7_n471()
- fun_l8_n13
-end
-
-def fun_l7_n472()
- fun_l8_n601
-end
-
-def fun_l7_n473()
- fun_l8_n364
-end
-
-def fun_l7_n474()
- fun_l8_n360
-end
-
-def fun_l7_n475()
- fun_l8_n374
-end
-
-def fun_l7_n476()
- fun_l8_n651
-end
-
-def fun_l7_n477()
- fun_l8_n579
-end
-
-def fun_l7_n478()
- fun_l8_n583
-end
-
-def fun_l7_n479()
- fun_l8_n693
-end
-
-def fun_l7_n480()
- fun_l8_n941
-end
-
-def fun_l7_n481()
- fun_l8_n743
-end
-
-def fun_l7_n482()
- fun_l8_n511
-end
-
-def fun_l7_n483()
- fun_l8_n528
-end
-
-def fun_l7_n484()
- fun_l8_n898
-end
-
-def fun_l7_n485()
- fun_l8_n175
-end
-
-def fun_l7_n486()
- fun_l8_n45
-end
-
-def fun_l7_n487()
- fun_l8_n871
-end
-
-def fun_l7_n488()
- fun_l8_n464
-end
-
-def fun_l7_n489()
- fun_l8_n69
-end
-
-def fun_l7_n490()
- fun_l8_n334
-end
-
-def fun_l7_n491()
- fun_l8_n687
-end
-
-def fun_l7_n492()
- fun_l8_n729
-end
-
-def fun_l7_n493()
- fun_l8_n47
-end
-
-def fun_l7_n494()
- fun_l8_n905
-end
-
-def fun_l7_n495()
- fun_l8_n586
-end
-
-def fun_l7_n496()
- fun_l8_n657
-end
-
-def fun_l7_n497()
- fun_l8_n673
-end
-
-def fun_l7_n498()
- fun_l8_n173
-end
-
-def fun_l7_n499()
- fun_l8_n333
-end
-
-def fun_l7_n500()
- fun_l8_n712
-end
-
-def fun_l7_n501()
- fun_l8_n349
-end
-
-def fun_l7_n502()
- fun_l8_n969
-end
-
-def fun_l7_n503()
- fun_l8_n678
-end
-
-def fun_l7_n504()
- fun_l8_n507
-end
-
-def fun_l7_n505()
- fun_l8_n206
-end
-
-def fun_l7_n506()
- fun_l8_n370
-end
-
-def fun_l7_n507()
- fun_l8_n270
-end
-
-def fun_l7_n508()
- fun_l8_n20
-end
-
-def fun_l7_n509()
- fun_l8_n545
-end
-
-def fun_l7_n510()
- fun_l8_n926
-end
-
-def fun_l7_n511()
- fun_l8_n882
-end
-
-def fun_l7_n512()
- fun_l8_n630
-end
-
-def fun_l7_n513()
- fun_l8_n51
-end
-
-def fun_l7_n514()
- fun_l8_n69
-end
-
-def fun_l7_n515()
- fun_l8_n859
-end
-
-def fun_l7_n516()
- fun_l8_n808
-end
-
-def fun_l7_n517()
- fun_l8_n800
-end
-
-def fun_l7_n518()
- fun_l8_n226
-end
-
-def fun_l7_n519()
- fun_l8_n340
-end
-
-def fun_l7_n520()
- fun_l8_n391
-end
-
-def fun_l7_n521()
- fun_l8_n538
-end
-
-def fun_l7_n522()
- fun_l8_n458
-end
-
-def fun_l7_n523()
- fun_l8_n114
-end
-
-def fun_l7_n524()
- fun_l8_n593
-end
-
-def fun_l7_n525()
- fun_l8_n276
-end
-
-def fun_l7_n526()
- fun_l8_n276
-end
-
-def fun_l7_n527()
- fun_l8_n719
-end
-
-def fun_l7_n528()
- fun_l8_n75
-end
-
-def fun_l7_n529()
- fun_l8_n855
-end
-
-def fun_l7_n530()
- fun_l8_n731
-end
-
-def fun_l7_n531()
- fun_l8_n257
-end
-
-def fun_l7_n532()
- fun_l8_n572
-end
-
-def fun_l7_n533()
- fun_l8_n483
-end
-
-def fun_l7_n534()
- fun_l8_n548
-end
-
-def fun_l7_n535()
- fun_l8_n867
-end
-
-def fun_l7_n536()
- fun_l8_n923
-end
-
-def fun_l7_n537()
- fun_l8_n988
-end
-
-def fun_l7_n538()
- fun_l8_n813
-end
-
-def fun_l7_n539()
- fun_l8_n503
-end
-
-def fun_l7_n540()
- fun_l8_n326
-end
-
-def fun_l7_n541()
- fun_l8_n521
-end
-
-def fun_l7_n542()
- fun_l8_n804
-end
-
-def fun_l7_n543()
- fun_l8_n693
-end
-
-def fun_l7_n544()
- fun_l8_n887
-end
-
-def fun_l7_n545()
- fun_l8_n543
-end
-
-def fun_l7_n546()
- fun_l8_n438
-end
-
-def fun_l7_n547()
- fun_l8_n295
-end
-
-def fun_l7_n548()
- fun_l8_n361
-end
-
-def fun_l7_n549()
- fun_l8_n495
-end
-
-def fun_l7_n550()
- fun_l8_n34
-end
-
-def fun_l7_n551()
- fun_l8_n491
-end
-
-def fun_l7_n552()
- fun_l8_n659
-end
-
-def fun_l7_n553()
- fun_l8_n589
-end
-
-def fun_l7_n554()
- fun_l8_n450
-end
-
-def fun_l7_n555()
- fun_l8_n365
-end
-
-def fun_l7_n556()
- fun_l8_n171
-end
-
-def fun_l7_n557()
- fun_l8_n145
-end
-
-def fun_l7_n558()
- fun_l8_n760
-end
-
-def fun_l7_n559()
- fun_l8_n767
-end
-
-def fun_l7_n560()
- fun_l8_n51
-end
-
-def fun_l7_n561()
- fun_l8_n596
-end
-
-def fun_l7_n562()
- fun_l8_n744
-end
-
-def fun_l7_n563()
- fun_l8_n80
-end
-
-def fun_l7_n564()
- fun_l8_n787
-end
-
-def fun_l7_n565()
- fun_l8_n783
-end
-
-def fun_l7_n566()
- fun_l8_n310
-end
-
-def fun_l7_n567()
- fun_l8_n703
-end
-
-def fun_l7_n568()
- fun_l8_n665
-end
-
-def fun_l7_n569()
- fun_l8_n866
-end
-
-def fun_l7_n570()
- fun_l8_n80
-end
-
-def fun_l7_n571()
- fun_l8_n694
-end
-
-def fun_l7_n572()
- fun_l8_n970
-end
-
-def fun_l7_n573()
- fun_l8_n102
-end
-
-def fun_l7_n574()
- fun_l8_n362
-end
-
-def fun_l7_n575()
- fun_l8_n119
-end
-
-def fun_l7_n576()
- fun_l8_n772
-end
-
-def fun_l7_n577()
- fun_l8_n715
-end
-
-def fun_l7_n578()
- fun_l8_n487
-end
-
-def fun_l7_n579()
- fun_l8_n48
-end
-
-def fun_l7_n580()
- fun_l8_n824
-end
-
-def fun_l7_n581()
- fun_l8_n208
-end
-
-def fun_l7_n582()
- fun_l8_n494
-end
-
-def fun_l7_n583()
- fun_l8_n138
-end
-
-def fun_l7_n584()
- fun_l8_n961
-end
-
-def fun_l7_n585()
- fun_l8_n553
-end
-
-def fun_l7_n586()
- fun_l8_n302
-end
-
-def fun_l7_n587()
- fun_l8_n266
-end
-
-def fun_l7_n588()
- fun_l8_n589
-end
-
-def fun_l7_n589()
- fun_l8_n964
-end
-
-def fun_l7_n590()
- fun_l8_n238
-end
-
-def fun_l7_n591()
- fun_l8_n139
-end
-
-def fun_l7_n592()
- fun_l8_n680
-end
-
-def fun_l7_n593()
- fun_l8_n252
-end
-
-def fun_l7_n594()
- fun_l8_n701
-end
-
-def fun_l7_n595()
- fun_l8_n100
-end
-
-def fun_l7_n596()
- fun_l8_n358
-end
-
-def fun_l7_n597()
- fun_l8_n770
-end
-
-def fun_l7_n598()
- fun_l8_n880
-end
-
-def fun_l7_n599()
- fun_l8_n761
-end
-
-def fun_l7_n600()
- fun_l8_n876
-end
-
-def fun_l7_n601()
- fun_l8_n373
-end
-
-def fun_l7_n602()
- fun_l8_n775
-end
-
-def fun_l7_n603()
- fun_l8_n317
-end
-
-def fun_l7_n604()
- fun_l8_n456
-end
-
-def fun_l7_n605()
- fun_l8_n343
-end
-
-def fun_l7_n606()
- fun_l8_n68
-end
-
-def fun_l7_n607()
- fun_l8_n25
-end
-
-def fun_l7_n608()
- fun_l8_n399
-end
-
-def fun_l7_n609()
- fun_l8_n14
-end
-
-def fun_l7_n610()
- fun_l8_n549
-end
-
-def fun_l7_n611()
- fun_l8_n45
-end
-
-def fun_l7_n612()
- fun_l8_n516
-end
-
-def fun_l7_n613()
- fun_l8_n345
-end
-
-def fun_l7_n614()
- fun_l8_n909
-end
-
-def fun_l7_n615()
- fun_l8_n954
-end
-
-def fun_l7_n616()
- fun_l8_n893
-end
-
-def fun_l7_n617()
- fun_l8_n57
-end
-
-def fun_l7_n618()
- fun_l8_n83
-end
-
-def fun_l7_n619()
- fun_l8_n658
-end
-
-def fun_l7_n620()
- fun_l8_n585
-end
-
-def fun_l7_n621()
- fun_l8_n260
-end
-
-def fun_l7_n622()
- fun_l8_n226
-end
-
-def fun_l7_n623()
- fun_l8_n186
-end
-
-def fun_l7_n624()
- fun_l8_n994
-end
-
-def fun_l7_n625()
- fun_l8_n408
-end
-
-def fun_l7_n626()
- fun_l8_n878
-end
-
-def fun_l7_n627()
- fun_l8_n473
-end
-
-def fun_l7_n628()
- fun_l8_n153
-end
-
-def fun_l7_n629()
- fun_l8_n590
-end
-
-def fun_l7_n630()
- fun_l8_n610
-end
-
-def fun_l7_n631()
- fun_l8_n438
-end
-
-def fun_l7_n632()
- fun_l8_n484
-end
-
-def fun_l7_n633()
- fun_l8_n908
-end
-
-def fun_l7_n634()
- fun_l8_n992
-end
-
-def fun_l7_n635()
- fun_l8_n556
-end
-
-def fun_l7_n636()
- fun_l8_n929
-end
-
-def fun_l7_n637()
- fun_l8_n128
-end
-
-def fun_l7_n638()
- fun_l8_n372
-end
-
-def fun_l7_n639()
- fun_l8_n36
-end
-
-def fun_l7_n640()
- fun_l8_n545
-end
-
-def fun_l7_n641()
- fun_l8_n801
-end
-
-def fun_l7_n642()
- fun_l8_n444
-end
-
-def fun_l7_n643()
- fun_l8_n822
-end
-
-def fun_l7_n644()
- fun_l8_n587
-end
-
-def fun_l7_n645()
- fun_l8_n418
-end
-
-def fun_l7_n646()
- fun_l8_n539
-end
-
-def fun_l7_n647()
- fun_l8_n266
-end
-
-def fun_l7_n648()
- fun_l8_n869
-end
-
-def fun_l7_n649()
- fun_l8_n84
-end
-
-def fun_l7_n650()
- fun_l8_n265
-end
-
-def fun_l7_n651()
- fun_l8_n551
-end
-
-def fun_l7_n652()
- fun_l8_n35
-end
-
-def fun_l7_n653()
- fun_l8_n606
-end
-
-def fun_l7_n654()
- fun_l8_n379
-end
-
-def fun_l7_n655()
- fun_l8_n417
-end
-
-def fun_l7_n656()
- fun_l8_n641
-end
-
-def fun_l7_n657()
- fun_l8_n889
-end
-
-def fun_l7_n658()
- fun_l8_n232
-end
-
-def fun_l7_n659()
- fun_l8_n957
-end
-
-def fun_l7_n660()
- fun_l8_n666
-end
-
-def fun_l7_n661()
- fun_l8_n588
-end
-
-def fun_l7_n662()
- fun_l8_n591
-end
-
-def fun_l7_n663()
- fun_l8_n489
-end
-
-def fun_l7_n664()
- fun_l8_n927
-end
-
-def fun_l7_n665()
- fun_l8_n304
-end
-
-def fun_l7_n666()
- fun_l8_n856
-end
-
-def fun_l7_n667()
- fun_l8_n969
-end
-
-def fun_l7_n668()
- fun_l8_n36
-end
-
-def fun_l7_n669()
- fun_l8_n335
-end
-
-def fun_l7_n670()
- fun_l8_n51
-end
-
-def fun_l7_n671()
- fun_l8_n765
-end
-
-def fun_l7_n672()
- fun_l8_n262
-end
-
-def fun_l7_n673()
- fun_l8_n858
-end
-
-def fun_l7_n674()
- fun_l8_n412
-end
-
-def fun_l7_n675()
- fun_l8_n789
-end
-
-def fun_l7_n676()
- fun_l8_n290
-end
-
-def fun_l7_n677()
- fun_l8_n935
-end
-
-def fun_l7_n678()
- fun_l8_n212
-end
-
-def fun_l7_n679()
- fun_l8_n35
-end
-
-def fun_l7_n680()
- fun_l8_n141
-end
-
-def fun_l7_n681()
- fun_l8_n985
-end
-
-def fun_l7_n682()
- fun_l8_n626
-end
-
-def fun_l7_n683()
- fun_l8_n996
-end
-
-def fun_l7_n684()
- fun_l8_n906
-end
-
-def fun_l7_n685()
- fun_l8_n242
-end
-
-def fun_l7_n686()
- fun_l8_n431
-end
-
-def fun_l7_n687()
- fun_l8_n494
-end
-
-def fun_l7_n688()
- fun_l8_n564
-end
-
-def fun_l7_n689()
- fun_l8_n737
-end
-
-def fun_l7_n690()
- fun_l8_n366
-end
-
-def fun_l7_n691()
- fun_l8_n763
-end
-
-def fun_l7_n692()
- fun_l8_n556
-end
-
-def fun_l7_n693()
- fun_l8_n436
-end
-
-def fun_l7_n694()
- fun_l8_n17
-end
-
-def fun_l7_n695()
- fun_l8_n283
-end
-
-def fun_l7_n696()
- fun_l8_n641
-end
-
-def fun_l7_n697()
- fun_l8_n298
-end
-
-def fun_l7_n698()
- fun_l8_n819
-end
-
-def fun_l7_n699()
- fun_l8_n858
-end
-
-def fun_l7_n700()
- fun_l8_n161
-end
-
-def fun_l7_n701()
- fun_l8_n813
-end
-
-def fun_l7_n702()
- fun_l8_n604
-end
-
-def fun_l7_n703()
- fun_l8_n878
-end
-
-def fun_l7_n704()
- fun_l8_n880
-end
-
-def fun_l7_n705()
- fun_l8_n431
-end
-
-def fun_l7_n706()
- fun_l8_n944
-end
-
-def fun_l7_n707()
- fun_l8_n672
-end
-
-def fun_l7_n708()
- fun_l8_n983
-end
-
-def fun_l7_n709()
- fun_l8_n224
-end
-
-def fun_l7_n710()
- fun_l8_n915
-end
-
-def fun_l7_n711()
- fun_l8_n699
-end
-
-def fun_l7_n712()
- fun_l8_n112
-end
-
-def fun_l7_n713()
- fun_l8_n64
-end
-
-def fun_l7_n714()
- fun_l8_n3
-end
-
-def fun_l7_n715()
- fun_l8_n508
-end
-
-def fun_l7_n716()
- fun_l8_n172
-end
-
-def fun_l7_n717()
- fun_l8_n777
-end
-
-def fun_l7_n718()
- fun_l8_n328
-end
-
-def fun_l7_n719()
- fun_l8_n338
-end
-
-def fun_l7_n720()
- fun_l8_n897
-end
-
-def fun_l7_n721()
- fun_l8_n373
-end
-
-def fun_l7_n722()
- fun_l8_n91
-end
-
-def fun_l7_n723()
- fun_l8_n149
-end
-
-def fun_l7_n724()
- fun_l8_n65
-end
-
-def fun_l7_n725()
- fun_l8_n685
-end
-
-def fun_l7_n726()
- fun_l8_n939
-end
-
-def fun_l7_n727()
- fun_l8_n427
-end
-
-def fun_l7_n728()
- fun_l8_n606
-end
-
-def fun_l7_n729()
- fun_l8_n818
-end
-
-def fun_l7_n730()
- fun_l8_n24
-end
-
-def fun_l7_n731()
- fun_l8_n901
-end
-
-def fun_l7_n732()
- fun_l8_n979
-end
-
-def fun_l7_n733()
- fun_l8_n88
-end
-
-def fun_l7_n734()
- fun_l8_n516
-end
-
-def fun_l7_n735()
- fun_l8_n44
-end
-
-def fun_l7_n736()
- fun_l8_n540
-end
-
-def fun_l7_n737()
- fun_l8_n586
-end
-
-def fun_l7_n738()
- fun_l8_n695
-end
-
-def fun_l7_n739()
- fun_l8_n774
-end
-
-def fun_l7_n740()
- fun_l8_n797
-end
-
-def fun_l7_n741()
- fun_l8_n524
-end
-
-def fun_l7_n742()
- fun_l8_n784
-end
-
-def fun_l7_n743()
- fun_l8_n203
-end
-
-def fun_l7_n744()
- fun_l8_n808
-end
-
-def fun_l7_n745()
- fun_l8_n216
-end
-
-def fun_l7_n746()
- fun_l8_n14
-end
-
-def fun_l7_n747()
- fun_l8_n799
-end
-
-def fun_l7_n748()
- fun_l8_n660
-end
-
-def fun_l7_n749()
- fun_l8_n417
-end
-
-def fun_l7_n750()
- fun_l8_n573
-end
-
-def fun_l7_n751()
- fun_l8_n919
-end
-
-def fun_l7_n752()
- fun_l8_n956
-end
-
-def fun_l7_n753()
- fun_l8_n475
-end
-
-def fun_l7_n754()
- fun_l8_n941
-end
-
-def fun_l7_n755()
- fun_l8_n629
-end
-
-def fun_l7_n756()
- fun_l8_n745
-end
-
-def fun_l7_n757()
- fun_l8_n656
-end
-
-def fun_l7_n758()
- fun_l8_n315
-end
-
-def fun_l7_n759()
- fun_l8_n952
-end
-
-def fun_l7_n760()
- fun_l8_n241
-end
-
-def fun_l7_n761()
- fun_l8_n341
-end
-
-def fun_l7_n762()
- fun_l8_n156
-end
-
-def fun_l7_n763()
- fun_l8_n258
-end
-
-def fun_l7_n764()
- fun_l8_n275
-end
-
-def fun_l7_n765()
- fun_l8_n950
-end
-
-def fun_l7_n766()
- fun_l8_n715
-end
-
-def fun_l7_n767()
- fun_l8_n746
-end
-
-def fun_l7_n768()
- fun_l8_n428
-end
-
-def fun_l7_n769()
- fun_l8_n176
-end
-
-def fun_l7_n770()
- fun_l8_n586
-end
-
-def fun_l7_n771()
- fun_l8_n912
-end
-
-def fun_l7_n772()
- fun_l8_n484
-end
-
-def fun_l7_n773()
- fun_l8_n155
-end
-
-def fun_l7_n774()
- fun_l8_n648
-end
-
-def fun_l7_n775()
- fun_l8_n27
-end
-
-def fun_l7_n776()
- fun_l8_n188
-end
-
-def fun_l7_n777()
- fun_l8_n804
-end
-
-def fun_l7_n778()
- fun_l8_n646
-end
-
-def fun_l7_n779()
- fun_l8_n884
-end
-
-def fun_l7_n780()
- fun_l8_n332
-end
-
-def fun_l7_n781()
- fun_l8_n28
-end
-
-def fun_l7_n782()
- fun_l8_n966
-end
-
-def fun_l7_n783()
- fun_l8_n531
-end
-
-def fun_l7_n784()
- fun_l8_n955
-end
-
-def fun_l7_n785()
- fun_l8_n264
-end
-
-def fun_l7_n786()
- fun_l8_n387
-end
-
-def fun_l7_n787()
- fun_l8_n274
-end
-
-def fun_l7_n788()
- fun_l8_n790
-end
-
-def fun_l7_n789()
- fun_l8_n80
-end
-
-def fun_l7_n790()
- fun_l8_n551
-end
-
-def fun_l7_n791()
- fun_l8_n762
-end
-
-def fun_l7_n792()
- fun_l8_n777
-end
-
-def fun_l7_n793()
- fun_l8_n120
-end
-
-def fun_l7_n794()
- fun_l8_n189
-end
-
-def fun_l7_n795()
- fun_l8_n241
-end
-
-def fun_l7_n796()
- fun_l8_n608
-end
-
-def fun_l7_n797()
- fun_l8_n689
-end
-
-def fun_l7_n798()
- fun_l8_n406
-end
-
-def fun_l7_n799()
- fun_l8_n853
-end
-
-def fun_l7_n800()
- fun_l8_n606
-end
-
-def fun_l7_n801()
- fun_l8_n723
-end
-
-def fun_l7_n802()
- fun_l8_n498
-end
-
-def fun_l7_n803()
- fun_l8_n109
-end
-
-def fun_l7_n804()
- fun_l8_n400
-end
-
-def fun_l7_n805()
- fun_l8_n266
-end
-
-def fun_l7_n806()
- fun_l8_n661
-end
-
-def fun_l7_n807()
- fun_l8_n107
-end
-
-def fun_l7_n808()
- fun_l8_n541
-end
-
-def fun_l7_n809()
- fun_l8_n44
-end
-
-def fun_l7_n810()
- fun_l8_n184
-end
-
-def fun_l7_n811()
- fun_l8_n516
-end
-
-def fun_l7_n812()
- fun_l8_n706
-end
-
-def fun_l7_n813()
- fun_l8_n714
-end
-
-def fun_l7_n814()
- fun_l8_n399
-end
-
-def fun_l7_n815()
- fun_l8_n877
-end
-
-def fun_l7_n816()
- fun_l8_n301
-end
-
-def fun_l7_n817()
- fun_l8_n75
-end
-
-def fun_l7_n818()
- fun_l8_n169
-end
-
-def fun_l7_n819()
- fun_l8_n99
-end
-
-def fun_l7_n820()
- fun_l8_n155
-end
-
-def fun_l7_n821()
- fun_l8_n281
-end
-
-def fun_l7_n822()
- fun_l8_n210
-end
-
-def fun_l7_n823()
- fun_l8_n835
-end
-
-def fun_l7_n824()
- fun_l8_n700
-end
-
-def fun_l7_n825()
- fun_l8_n231
-end
-
-def fun_l7_n826()
- fun_l8_n967
-end
-
-def fun_l7_n827()
- fun_l8_n818
-end
-
-def fun_l7_n828()
- fun_l8_n670
-end
-
-def fun_l7_n829()
- fun_l8_n311
-end
-
-def fun_l7_n830()
- fun_l8_n919
-end
-
-def fun_l7_n831()
- fun_l8_n949
-end
-
-def fun_l7_n832()
- fun_l8_n677
-end
-
-def fun_l7_n833()
- fun_l8_n626
-end
-
-def fun_l7_n834()
- fun_l8_n171
-end
-
-def fun_l7_n835()
- fun_l8_n723
-end
-
-def fun_l7_n836()
- fun_l8_n606
-end
-
-def fun_l7_n837()
- fun_l8_n580
-end
-
-def fun_l7_n838()
- fun_l8_n369
-end
-
-def fun_l7_n839()
- fun_l8_n510
-end
-
-def fun_l7_n840()
- fun_l8_n554
-end
-
-def fun_l7_n841()
- fun_l8_n749
-end
-
-def fun_l7_n842()
- fun_l8_n623
-end
-
-def fun_l7_n843()
- fun_l8_n735
-end
-
-def fun_l7_n844()
- fun_l8_n401
-end
-
-def fun_l7_n845()
- fun_l8_n693
-end
-
-def fun_l7_n846()
- fun_l8_n367
-end
-
-def fun_l7_n847()
- fun_l8_n351
-end
-
-def fun_l7_n848()
- fun_l8_n527
-end
-
-def fun_l7_n849()
- fun_l8_n964
-end
-
-def fun_l7_n850()
- fun_l8_n193
-end
-
-def fun_l7_n851()
- fun_l8_n401
-end
-
-def fun_l7_n852()
- fun_l8_n873
-end
-
-def fun_l7_n853()
- fun_l8_n326
-end
-
-def fun_l7_n854()
- fun_l8_n292
-end
-
-def fun_l7_n855()
- fun_l8_n519
-end
-
-def fun_l7_n856()
- fun_l8_n801
-end
-
-def fun_l7_n857()
- fun_l8_n45
-end
-
-def fun_l7_n858()
- fun_l8_n212
-end
-
-def fun_l7_n859()
- fun_l8_n812
-end
-
-def fun_l7_n860()
- fun_l8_n541
-end
-
-def fun_l7_n861()
- fun_l8_n410
-end
-
-def fun_l7_n862()
- fun_l8_n177
-end
-
-def fun_l7_n863()
- fun_l8_n940
-end
-
-def fun_l7_n864()
- fun_l8_n832
-end
-
-def fun_l7_n865()
- fun_l8_n7
-end
-
-def fun_l7_n866()
- fun_l8_n654
-end
-
-def fun_l7_n867()
- fun_l8_n282
-end
-
-def fun_l7_n868()
- fun_l8_n916
-end
-
-def fun_l7_n869()
- fun_l8_n638
-end
-
-def fun_l7_n870()
- fun_l8_n71
-end
-
-def fun_l7_n871()
- fun_l8_n153
-end
-
-def fun_l7_n872()
- fun_l8_n285
-end
-
-def fun_l7_n873()
- fun_l8_n744
-end
-
-def fun_l7_n874()
- fun_l8_n912
-end
-
-def fun_l7_n875()
- fun_l8_n258
-end
-
-def fun_l7_n876()
- fun_l8_n346
-end
-
-def fun_l7_n877()
- fun_l8_n366
-end
-
-def fun_l7_n878()
- fun_l8_n165
-end
-
-def fun_l7_n879()
- fun_l8_n745
-end
-
-def fun_l7_n880()
- fun_l8_n472
-end
-
-def fun_l7_n881()
- fun_l8_n290
-end
-
-def fun_l7_n882()
- fun_l8_n695
-end
-
-def fun_l7_n883()
- fun_l8_n522
-end
-
-def fun_l7_n884()
- fun_l8_n851
-end
-
-def fun_l7_n885()
- fun_l8_n870
-end
-
-def fun_l7_n886()
- fun_l8_n70
-end
-
-def fun_l7_n887()
- fun_l8_n334
-end
-
-def fun_l7_n888()
- fun_l8_n786
-end
-
-def fun_l7_n889()
- fun_l8_n41
-end
-
-def fun_l7_n890()
- fun_l8_n316
-end
-
-def fun_l7_n891()
- fun_l8_n594
-end
-
-def fun_l7_n892()
- fun_l8_n168
-end
-
-def fun_l7_n893()
- fun_l8_n960
-end
-
-def fun_l7_n894()
- fun_l8_n357
-end
-
-def fun_l7_n895()
- fun_l8_n695
-end
-
-def fun_l7_n896()
- fun_l8_n616
-end
-
-def fun_l7_n897()
- fun_l8_n63
-end
-
-def fun_l7_n898()
- fun_l8_n59
-end
-
-def fun_l7_n899()
- fun_l8_n958
-end
-
-def fun_l7_n900()
- fun_l8_n623
-end
-
-def fun_l7_n901()
- fun_l8_n427
-end
-
-def fun_l7_n902()
- fun_l8_n203
-end
-
-def fun_l7_n903()
- fun_l8_n752
-end
-
-def fun_l7_n904()
- fun_l8_n28
-end
-
-def fun_l7_n905()
- fun_l8_n687
-end
-
-def fun_l7_n906()
- fun_l8_n723
-end
-
-def fun_l7_n907()
- fun_l8_n688
-end
-
-def fun_l7_n908()
- fun_l8_n417
-end
-
-def fun_l7_n909()
- fun_l8_n769
-end
-
-def fun_l7_n910()
- fun_l8_n683
-end
-
-def fun_l7_n911()
- fun_l8_n865
-end
-
-def fun_l7_n912()
- fun_l8_n75
-end
-
-def fun_l7_n913()
- fun_l8_n671
-end
-
-def fun_l7_n914()
- fun_l8_n168
-end
-
-def fun_l7_n915()
- fun_l8_n958
-end
-
-def fun_l7_n916()
- fun_l8_n96
-end
-
-def fun_l7_n917()
- fun_l8_n981
-end
-
-def fun_l7_n918()
- fun_l8_n481
-end
-
-def fun_l7_n919()
- fun_l8_n887
-end
-
-def fun_l7_n920()
- fun_l8_n319
-end
-
-def fun_l7_n921()
- fun_l8_n349
-end
-
-def fun_l7_n922()
- fun_l8_n774
-end
-
-def fun_l7_n923()
- fun_l8_n490
-end
-
-def fun_l7_n924()
- fun_l8_n64
-end
-
-def fun_l7_n925()
- fun_l8_n581
-end
-
-def fun_l7_n926()
- fun_l8_n306
-end
-
-def fun_l7_n927()
- fun_l8_n141
-end
-
-def fun_l7_n928()
- fun_l8_n353
-end
-
-def fun_l7_n929()
- fun_l8_n653
-end
-
-def fun_l7_n930()
- fun_l8_n995
-end
-
-def fun_l7_n931()
- fun_l8_n546
-end
-
-def fun_l7_n932()
- fun_l8_n163
-end
-
-def fun_l7_n933()
- fun_l8_n986
-end
-
-def fun_l7_n934()
- fun_l8_n822
-end
-
-def fun_l7_n935()
- fun_l8_n445
-end
-
-def fun_l7_n936()
- fun_l8_n595
-end
-
-def fun_l7_n937()
- fun_l8_n457
-end
-
-def fun_l7_n938()
- fun_l8_n119
-end
-
-def fun_l7_n939()
- fun_l8_n575
-end
-
-def fun_l7_n940()
- fun_l8_n738
-end
-
-def fun_l7_n941()
- fun_l8_n307
-end
-
-def fun_l7_n942()
- fun_l8_n322
-end
-
-def fun_l7_n943()
- fun_l8_n938
-end
-
-def fun_l7_n944()
- fun_l8_n787
-end
-
-def fun_l7_n945()
- fun_l8_n834
-end
-
-def fun_l7_n946()
- fun_l8_n360
-end
-
-def fun_l7_n947()
- fun_l8_n631
-end
-
-def fun_l7_n948()
- fun_l8_n796
-end
-
-def fun_l7_n949()
- fun_l8_n498
-end
-
-def fun_l7_n950()
- fun_l8_n494
-end
-
-def fun_l7_n951()
- fun_l8_n303
-end
-
-def fun_l7_n952()
- fun_l8_n107
-end
-
-def fun_l7_n953()
- fun_l8_n403
-end
-
-def fun_l7_n954()
- fun_l8_n635
-end
-
-def fun_l7_n955()
- fun_l8_n81
-end
-
-def fun_l7_n956()
- fun_l8_n770
-end
-
-def fun_l7_n957()
- fun_l8_n123
-end
-
-def fun_l7_n958()
- fun_l8_n389
-end
-
-def fun_l7_n959()
- fun_l8_n965
-end
-
-def fun_l7_n960()
- fun_l8_n579
-end
-
-def fun_l7_n961()
- fun_l8_n816
-end
-
-def fun_l7_n962()
- fun_l8_n570
-end
-
-def fun_l7_n963()
- fun_l8_n85
-end
-
-def fun_l7_n964()
- fun_l8_n70
-end
-
-def fun_l7_n965()
- fun_l8_n13
-end
-
-def fun_l7_n966()
- fun_l8_n142
-end
-
-def fun_l7_n967()
- fun_l8_n765
-end
-
-def fun_l7_n968()
- fun_l8_n912
-end
-
-def fun_l7_n969()
- fun_l8_n496
-end
-
-def fun_l7_n970()
- fun_l8_n77
-end
-
-def fun_l7_n971()
- fun_l8_n75
-end
-
-def fun_l7_n972()
- fun_l8_n822
-end
-
-def fun_l7_n973()
- fun_l8_n859
-end
-
-def fun_l7_n974()
- fun_l8_n502
-end
-
-def fun_l7_n975()
- fun_l8_n673
-end
-
-def fun_l7_n976()
- fun_l8_n3
-end
-
-def fun_l7_n977()
- fun_l8_n288
-end
-
-def fun_l7_n978()
- fun_l8_n547
-end
-
-def fun_l7_n979()
- fun_l8_n720
-end
-
-def fun_l7_n980()
- fun_l8_n822
-end
-
-def fun_l7_n981()
- fun_l8_n518
-end
-
-def fun_l7_n982()
- fun_l8_n243
-end
-
-def fun_l7_n983()
- fun_l8_n695
-end
-
-def fun_l7_n984()
- fun_l8_n182
-end
-
-def fun_l7_n985()
- fun_l8_n783
-end
-
-def fun_l7_n986()
- fun_l8_n237
-end
-
-def fun_l7_n987()
- fun_l8_n722
-end
-
-def fun_l7_n988()
- fun_l8_n154
-end
-
-def fun_l7_n989()
- fun_l8_n728
-end
-
-def fun_l7_n990()
- fun_l8_n673
-end
-
-def fun_l7_n991()
- fun_l8_n885
-end
-
-def fun_l7_n992()
- fun_l8_n490
-end
-
-def fun_l7_n993()
- fun_l8_n50
-end
-
-def fun_l7_n994()
- fun_l8_n557
-end
-
-def fun_l7_n995()
- fun_l8_n993
-end
-
-def fun_l7_n996()
- fun_l8_n509
-end
-
-def fun_l7_n997()
- fun_l8_n40
-end
-
-def fun_l7_n998()
- fun_l8_n754
-end
-
-def fun_l7_n999()
- fun_l8_n651
-end
-
-def fun_l8_n0()
- fun_l9_n463
-end
-
-def fun_l8_n1()
- fun_l9_n312
-end
-
-def fun_l8_n2()
- fun_l9_n831
-end
-
-def fun_l8_n3()
- fun_l9_n378
-end
-
-def fun_l8_n4()
- fun_l9_n706
-end
-
-def fun_l8_n5()
- fun_l9_n367
-end
-
-def fun_l8_n6()
- fun_l9_n890
-end
-
-def fun_l8_n7()
- fun_l9_n315
-end
-
-def fun_l8_n8()
- fun_l9_n808
-end
-
-def fun_l8_n9()
- fun_l9_n338
-end
-
-def fun_l8_n10()
- fun_l9_n911
-end
-
-def fun_l8_n11()
- fun_l9_n630
-end
-
-def fun_l8_n12()
- fun_l9_n273
-end
-
-def fun_l8_n13()
- fun_l9_n835
-end
-
-def fun_l8_n14()
- fun_l9_n306
-end
-
-def fun_l8_n15()
- fun_l9_n81
-end
-
-def fun_l8_n16()
- fun_l9_n26
-end
-
-def fun_l8_n17()
- fun_l9_n210
-end
-
-def fun_l8_n18()
- fun_l9_n74
-end
-
-def fun_l8_n19()
- fun_l9_n297
-end
-
-def fun_l8_n20()
- fun_l9_n94
-end
-
-def fun_l8_n21()
- fun_l9_n897
-end
-
-def fun_l8_n22()
- fun_l9_n839
-end
-
-def fun_l8_n23()
- fun_l9_n384
-end
-
-def fun_l8_n24()
- fun_l9_n297
-end
-
-def fun_l8_n25()
- fun_l9_n198
-end
-
-def fun_l8_n26()
- fun_l9_n829
-end
-
-def fun_l8_n27()
- fun_l9_n796
-end
-
-def fun_l8_n28()
- fun_l9_n89
-end
-
-def fun_l8_n29()
- fun_l9_n510
-end
-
-def fun_l8_n30()
- fun_l9_n761
-end
-
-def fun_l8_n31()
- fun_l9_n665
-end
-
-def fun_l8_n32()
- fun_l9_n570
-end
-
-def fun_l8_n33()
- fun_l9_n270
-end
-
-def fun_l8_n34()
- fun_l9_n600
-end
-
-def fun_l8_n35()
- fun_l9_n390
-end
-
-def fun_l8_n36()
- fun_l9_n583
-end
-
-def fun_l8_n37()
- fun_l9_n392
-end
-
-def fun_l8_n38()
- fun_l9_n862
-end
-
-def fun_l8_n39()
- fun_l9_n164
-end
-
-def fun_l8_n40()
- fun_l9_n626
-end
-
-def fun_l8_n41()
- fun_l9_n558
-end
-
-def fun_l8_n42()
- fun_l9_n929
-end
-
-def fun_l8_n43()
- fun_l9_n161
-end
-
-def fun_l8_n44()
- fun_l9_n80
-end
-
-def fun_l8_n45()
- fun_l9_n884
-end
-
-def fun_l8_n46()
- fun_l9_n784
-end
-
-def fun_l8_n47()
- fun_l9_n41
-end
-
-def fun_l8_n48()
- fun_l9_n787
-end
-
-def fun_l8_n49()
- fun_l9_n179
-end
-
-def fun_l8_n50()
- fun_l9_n852
-end
-
-def fun_l8_n51()
- fun_l9_n697
-end
-
-def fun_l8_n52()
- fun_l9_n8
-end
-
-def fun_l8_n53()
- fun_l9_n320
-end
-
-def fun_l8_n54()
- fun_l9_n768
-end
-
-def fun_l8_n55()
- fun_l9_n574
-end
-
-def fun_l8_n56()
- fun_l9_n339
-end
-
-def fun_l8_n57()
- fun_l9_n757
-end
-
-def fun_l8_n58()
- fun_l9_n221
-end
-
-def fun_l8_n59()
- fun_l9_n34
-end
-
-def fun_l8_n60()
- fun_l9_n36
-end
-
-def fun_l8_n61()
- fun_l9_n244
-end
-
-def fun_l8_n62()
- fun_l9_n347
-end
-
-def fun_l8_n63()
- fun_l9_n330
-end
-
-def fun_l8_n64()
- fun_l9_n717
-end
-
-def fun_l8_n65()
- fun_l9_n187
-end
-
-def fun_l8_n66()
- fun_l9_n179
-end
-
-def fun_l8_n67()
- fun_l9_n807
-end
-
-def fun_l8_n68()
- fun_l9_n350
-end
-
-def fun_l8_n69()
- fun_l9_n882
-end
-
-def fun_l8_n70()
- fun_l9_n936
-end
-
-def fun_l8_n71()
- fun_l9_n282
-end
-
-def fun_l8_n72()
- fun_l9_n483
-end
-
-def fun_l8_n73()
- fun_l9_n296
-end
-
-def fun_l8_n74()
- fun_l9_n461
-end
-
-def fun_l8_n75()
- fun_l9_n153
-end
-
-def fun_l8_n76()
- fun_l9_n555
-end
-
-def fun_l8_n77()
- fun_l9_n826
-end
-
-def fun_l8_n78()
- fun_l9_n134
-end
-
-def fun_l8_n79()
- fun_l9_n552
-end
-
-def fun_l8_n80()
- fun_l9_n793
-end
-
-def fun_l8_n81()
- fun_l9_n832
-end
-
-def fun_l8_n82()
- fun_l9_n270
-end
-
-def fun_l8_n83()
- fun_l9_n685
-end
-
-def fun_l8_n84()
- fun_l9_n145
-end
-
-def fun_l8_n85()
- fun_l9_n331
-end
-
-def fun_l8_n86()
- fun_l9_n775
-end
-
-def fun_l8_n87()
- fun_l9_n350
-end
-
-def fun_l8_n88()
- fun_l9_n569
-end
-
-def fun_l8_n89()
- fun_l9_n808
-end
-
-def fun_l8_n90()
- fun_l9_n537
-end
-
-def fun_l8_n91()
- fun_l9_n40
-end
-
-def fun_l8_n92()
- fun_l9_n180
-end
-
-def fun_l8_n93()
- fun_l9_n79
-end
-
-def fun_l8_n94()
- fun_l9_n664
-end
-
-def fun_l8_n95()
- fun_l9_n43
-end
-
-def fun_l8_n96()
- fun_l9_n113
-end
-
-def fun_l8_n97()
- fun_l9_n108
-end
-
-def fun_l8_n98()
- fun_l9_n343
-end
-
-def fun_l8_n99()
- fun_l9_n881
-end
-
-def fun_l8_n100()
- fun_l9_n272
-end
-
-def fun_l8_n101()
- fun_l9_n559
-end
-
-def fun_l8_n102()
- fun_l9_n500
-end
-
-def fun_l8_n103()
- fun_l9_n738
-end
-
-def fun_l8_n104()
- fun_l9_n195
-end
-
-def fun_l8_n105()
- fun_l9_n220
-end
-
-def fun_l8_n106()
- fun_l9_n321
-end
-
-def fun_l8_n107()
- fun_l9_n965
-end
-
-def fun_l8_n108()
- fun_l9_n771
-end
-
-def fun_l8_n109()
- fun_l9_n227
-end
-
-def fun_l8_n110()
- fun_l9_n710
-end
-
-def fun_l8_n111()
- fun_l9_n865
-end
-
-def fun_l8_n112()
- fun_l9_n791
-end
-
-def fun_l8_n113()
- fun_l9_n591
-end
-
-def fun_l8_n114()
- fun_l9_n296
-end
-
-def fun_l8_n115()
- fun_l9_n269
-end
-
-def fun_l8_n116()
- fun_l9_n816
-end
-
-def fun_l8_n117()
- fun_l9_n666
-end
-
-def fun_l8_n118()
- fun_l9_n31
-end
-
-def fun_l8_n119()
- fun_l9_n275
-end
-
-def fun_l8_n120()
- fun_l9_n660
-end
-
-def fun_l8_n121()
- fun_l9_n514
-end
-
-def fun_l8_n122()
- fun_l9_n435
-end
-
-def fun_l8_n123()
- fun_l9_n351
-end
-
-def fun_l8_n124()
- fun_l9_n190
-end
-
-def fun_l8_n125()
- fun_l9_n276
-end
-
-def fun_l8_n126()
- fun_l9_n536
-end
-
-def fun_l8_n127()
- fun_l9_n551
-end
-
-def fun_l8_n128()
- fun_l9_n315
-end
-
-def fun_l8_n129()
- fun_l9_n957
-end
-
-def fun_l8_n130()
- fun_l9_n609
-end
-
-def fun_l8_n131()
- fun_l9_n31
-end
-
-def fun_l8_n132()
- fun_l9_n375
-end
-
-def fun_l8_n133()
- fun_l9_n363
-end
-
-def fun_l8_n134()
- fun_l9_n797
-end
-
-def fun_l8_n135()
- fun_l9_n985
-end
-
-def fun_l8_n136()
- fun_l9_n797
-end
-
-def fun_l8_n137()
- fun_l9_n992
-end
-
-def fun_l8_n138()
- fun_l9_n503
-end
-
-def fun_l8_n139()
- fun_l9_n336
-end
-
-def fun_l8_n140()
- fun_l9_n328
-end
-
-def fun_l8_n141()
- fun_l9_n326
-end
-
-def fun_l8_n142()
- fun_l9_n983
-end
-
-def fun_l8_n143()
- fun_l9_n509
-end
-
-def fun_l8_n144()
- fun_l9_n873
-end
-
-def fun_l8_n145()
- fun_l9_n97
-end
-
-def fun_l8_n146()
- fun_l9_n46
-end
-
-def fun_l8_n147()
- fun_l9_n146
-end
-
-def fun_l8_n148()
- fun_l9_n293
-end
-
-def fun_l8_n149()
- fun_l9_n993
-end
-
-def fun_l8_n150()
- fun_l9_n230
-end
-
-def fun_l8_n151()
- fun_l9_n485
-end
-
-def fun_l8_n152()
- fun_l9_n844
-end
-
-def fun_l8_n153()
- fun_l9_n782
-end
-
-def fun_l8_n154()
- fun_l9_n493
-end
-
-def fun_l8_n155()
- fun_l9_n699
-end
-
-def fun_l8_n156()
- fun_l9_n132
-end
-
-def fun_l8_n157()
- fun_l9_n573
-end
-
-def fun_l8_n158()
- fun_l9_n993
-end
-
-def fun_l8_n159()
- fun_l9_n644
-end
-
-def fun_l8_n160()
- fun_l9_n151
-end
-
-def fun_l8_n161()
- fun_l9_n181
-end
-
-def fun_l8_n162()
- fun_l9_n314
-end
-
-def fun_l8_n163()
- fun_l9_n716
-end
-
-def fun_l8_n164()
- fun_l9_n541
-end
-
-def fun_l8_n165()
- fun_l9_n283
-end
-
-def fun_l8_n166()
- fun_l9_n55
-end
-
-def fun_l8_n167()
- fun_l9_n351
-end
-
-def fun_l8_n168()
- fun_l9_n29
-end
-
-def fun_l8_n169()
- fun_l9_n117
-end
-
-def fun_l8_n170()
- fun_l9_n529
-end
-
-def fun_l8_n171()
- fun_l9_n735
-end
-
-def fun_l8_n172()
- fun_l9_n161
-end
-
-def fun_l8_n173()
- fun_l9_n399
-end
-
-def fun_l8_n174()
- fun_l9_n952
-end
-
-def fun_l8_n175()
- fun_l9_n420
-end
-
-def fun_l8_n176()
- fun_l9_n664
-end
-
-def fun_l8_n177()
- fun_l9_n697
-end
-
-def fun_l8_n178()
- fun_l9_n506
-end
-
-def fun_l8_n179()
- fun_l9_n241
-end
-
-def fun_l8_n180()
- fun_l9_n516
-end
-
-def fun_l8_n181()
- fun_l9_n540
-end
-
-def fun_l8_n182()
- fun_l9_n891
-end
-
-def fun_l8_n183()
- fun_l9_n200
-end
-
-def fun_l8_n184()
- fun_l9_n118
-end
-
-def fun_l8_n185()
- fun_l9_n186
-end
-
-def fun_l8_n186()
- fun_l9_n899
-end
-
-def fun_l8_n187()
- fun_l9_n766
-end
-
-def fun_l8_n188()
- fun_l9_n437
-end
-
-def fun_l8_n189()
- fun_l9_n431
-end
-
-def fun_l8_n190()
- fun_l9_n814
-end
-
-def fun_l8_n191()
- fun_l9_n446
-end
-
-def fun_l8_n192()
- fun_l9_n364
-end
-
-def fun_l8_n193()
- fun_l9_n634
-end
-
-def fun_l8_n194()
- fun_l9_n74
-end
-
-def fun_l8_n195()
- fun_l9_n258
-end
-
-def fun_l8_n196()
- fun_l9_n105
-end
-
-def fun_l8_n197()
- fun_l9_n295
-end
-
-def fun_l8_n198()
- fun_l9_n811
-end
-
-def fun_l8_n199()
- fun_l9_n210
-end
-
-def fun_l8_n200()
- fun_l9_n566
-end
-
-def fun_l8_n201()
- fun_l9_n813
-end
-
-def fun_l8_n202()
- fun_l9_n624
-end
-
-def fun_l8_n203()
- fun_l9_n757
-end
-
-def fun_l8_n204()
- fun_l9_n256
-end
-
-def fun_l8_n205()
- fun_l9_n439
-end
-
-def fun_l8_n206()
- fun_l9_n359
-end
-
-def fun_l8_n207()
- fun_l9_n795
-end
-
-def fun_l8_n208()
- fun_l9_n178
-end
-
-def fun_l8_n209()
- fun_l9_n96
-end
-
-def fun_l8_n210()
- fun_l9_n273
-end
-
-def fun_l8_n211()
- fun_l9_n976
-end
-
-def fun_l8_n212()
- fun_l9_n412
-end
-
-def fun_l8_n213()
- fun_l9_n372
-end
-
-def fun_l8_n214()
- fun_l9_n902
-end
-
-def fun_l8_n215()
- fun_l9_n283
-end
-
-def fun_l8_n216()
- fun_l9_n101
-end
-
-def fun_l8_n217()
- fun_l9_n792
-end
-
-def fun_l8_n218()
- fun_l9_n207
-end
-
-def fun_l8_n219()
- fun_l9_n653
-end
-
-def fun_l8_n220()
- fun_l9_n784
-end
-
-def fun_l8_n221()
- fun_l9_n455
-end
-
-def fun_l8_n222()
- fun_l9_n188
-end
-
-def fun_l8_n223()
- fun_l9_n169
-end
-
-def fun_l8_n224()
- fun_l9_n88
-end
-
-def fun_l8_n225()
- fun_l9_n132
-end
-
-def fun_l8_n226()
- fun_l9_n269
-end
-
-def fun_l8_n227()
- fun_l9_n903
-end
-
-def fun_l8_n228()
- fun_l9_n463
-end
-
-def fun_l8_n229()
- fun_l9_n73
-end
-
-def fun_l8_n230()
- fun_l9_n36
-end
-
-def fun_l8_n231()
- fun_l9_n224
-end
-
-def fun_l8_n232()
- fun_l9_n739
-end
-
-def fun_l8_n233()
- fun_l9_n887
-end
-
-def fun_l8_n234()
- fun_l9_n522
-end
-
-def fun_l8_n235()
- fun_l9_n261
-end
-
-def fun_l8_n236()
- fun_l9_n222
-end
-
-def fun_l8_n237()
- fun_l9_n358
-end
-
-def fun_l8_n238()
- fun_l9_n855
-end
-
-def fun_l8_n239()
- fun_l9_n263
-end
-
-def fun_l8_n240()
- fun_l9_n411
-end
-
-def fun_l8_n241()
- fun_l9_n450
-end
-
-def fun_l8_n242()
- fun_l9_n706
-end
-
-def fun_l8_n243()
- fun_l9_n125
-end
-
-def fun_l8_n244()
- fun_l9_n163
-end
-
-def fun_l8_n245()
- fun_l9_n758
-end
-
-def fun_l8_n246()
- fun_l9_n168
-end
-
-def fun_l8_n247()
- fun_l9_n250
-end
-
-def fun_l8_n248()
- fun_l9_n73
-end
-
-def fun_l8_n249()
- fun_l9_n25
-end
-
-def fun_l8_n250()
- fun_l9_n311
-end
-
-def fun_l8_n251()
- fun_l9_n992
-end
-
-def fun_l8_n252()
- fun_l9_n95
-end
-
-def fun_l8_n253()
- fun_l9_n470
-end
-
-def fun_l8_n254()
- fun_l9_n906
-end
-
-def fun_l8_n255()
- fun_l9_n695
-end
-
-def fun_l8_n256()
- fun_l9_n835
-end
-
-def fun_l8_n257()
- fun_l9_n601
-end
-
-def fun_l8_n258()
- fun_l9_n20
-end
-
-def fun_l8_n259()
- fun_l9_n806
-end
-
-def fun_l8_n260()
- fun_l9_n689
-end
-
-def fun_l8_n261()
- fun_l9_n183
-end
-
-def fun_l8_n262()
- fun_l9_n444
-end
-
-def fun_l8_n263()
- fun_l9_n344
-end
-
-def fun_l8_n264()
- fun_l9_n585
-end
-
-def fun_l8_n265()
- fun_l9_n109
-end
-
-def fun_l8_n266()
- fun_l9_n551
-end
-
-def fun_l8_n267()
- fun_l9_n654
-end
-
-def fun_l8_n268()
- fun_l9_n573
-end
-
-def fun_l8_n269()
- fun_l9_n196
-end
-
-def fun_l8_n270()
- fun_l9_n764
-end
-
-def fun_l8_n271()
- fun_l9_n349
-end
-
-def fun_l8_n272()
- fun_l9_n8
-end
-
-def fun_l8_n273()
- fun_l9_n815
-end
-
-def fun_l8_n274()
- fun_l9_n343
-end
-
-def fun_l8_n275()
- fun_l9_n98
-end
-
-def fun_l8_n276()
- fun_l9_n967
-end
-
-def fun_l8_n277()
- fun_l9_n368
-end
-
-def fun_l8_n278()
- fun_l9_n626
-end
-
-def fun_l8_n279()
- fun_l9_n931
-end
-
-def fun_l8_n280()
- fun_l9_n723
-end
-
-def fun_l8_n281()
- fun_l9_n319
-end
-
-def fun_l8_n282()
- fun_l9_n243
-end
-
-def fun_l8_n283()
- fun_l9_n683
-end
-
-def fun_l8_n284()
- fun_l9_n127
-end
-
-def fun_l8_n285()
- fun_l9_n941
-end
-
-def fun_l8_n286()
- fun_l9_n263
-end
-
-def fun_l8_n287()
- fun_l9_n227
-end
-
-def fun_l8_n288()
- fun_l9_n807
-end
-
-def fun_l8_n289()
- fun_l9_n486
-end
-
-def fun_l8_n290()
- fun_l9_n801
-end
-
-def fun_l8_n291()
- fun_l9_n319
-end
-
-def fun_l8_n292()
- fun_l9_n687
-end
-
-def fun_l8_n293()
- fun_l9_n639
-end
-
-def fun_l8_n294()
- fun_l9_n908
-end
-
-def fun_l8_n295()
- fun_l9_n522
-end
-
-def fun_l8_n296()
- fun_l9_n839
-end
-
-def fun_l8_n297()
- fun_l9_n238
-end
-
-def fun_l8_n298()
- fun_l9_n66
-end
-
-def fun_l8_n299()
- fun_l9_n224
-end
-
-def fun_l8_n300()
- fun_l9_n114
-end
-
-def fun_l8_n301()
- fun_l9_n237
-end
-
-def fun_l8_n302()
- fun_l9_n416
-end
-
-def fun_l8_n303()
- fun_l9_n554
-end
-
-def fun_l8_n304()
- fun_l9_n613
-end
-
-def fun_l8_n305()
- fun_l9_n641
-end
-
-def fun_l8_n306()
- fun_l9_n507
-end
-
-def fun_l8_n307()
- fun_l9_n367
-end
-
-def fun_l8_n308()
- fun_l9_n387
-end
-
-def fun_l8_n309()
- fun_l9_n423
-end
-
-def fun_l8_n310()
- fun_l9_n981
-end
-
-def fun_l8_n311()
- fun_l9_n658
-end
-
-def fun_l8_n312()
- fun_l9_n845
-end
-
-def fun_l8_n313()
- fun_l9_n944
-end
-
-def fun_l8_n314()
- fun_l9_n87
-end
-
-def fun_l8_n315()
- fun_l9_n106
-end
-
-def fun_l8_n316()
- fun_l9_n461
-end
-
-def fun_l8_n317()
- fun_l9_n722
-end
-
-def fun_l8_n318()
- fun_l9_n636
-end
-
-def fun_l8_n319()
- fun_l9_n420
-end
-
-def fun_l8_n320()
- fun_l9_n633
-end
-
-def fun_l8_n321()
- fun_l9_n801
-end
-
-def fun_l8_n322()
- fun_l9_n754
-end
-
-def fun_l8_n323()
- fun_l9_n697
-end
-
-def fun_l8_n324()
- fun_l9_n983
-end
-
-def fun_l8_n325()
- fun_l9_n244
-end
-
-def fun_l8_n326()
- fun_l9_n980
-end
-
-def fun_l8_n327()
- fun_l9_n242
-end
-
-def fun_l8_n328()
- fun_l9_n798
-end
-
-def fun_l8_n329()
- fun_l9_n395
-end
-
-def fun_l8_n330()
- fun_l9_n931
-end
-
-def fun_l8_n331()
- fun_l9_n827
-end
-
-def fun_l8_n332()
- fun_l9_n704
-end
-
-def fun_l8_n333()
- fun_l9_n392
-end
-
-def fun_l8_n334()
- fun_l9_n288
-end
-
-def fun_l8_n335()
- fun_l9_n95
-end
-
-def fun_l8_n336()
- fun_l9_n123
-end
-
-def fun_l8_n337()
- fun_l9_n238
-end
-
-def fun_l8_n338()
- fun_l9_n903
-end
-
-def fun_l8_n339()
- fun_l9_n515
-end
-
-def fun_l8_n340()
- fun_l9_n368
-end
-
-def fun_l8_n341()
- fun_l9_n156
-end
-
-def fun_l8_n342()
- fun_l9_n714
-end
-
-def fun_l8_n343()
- fun_l9_n435
-end
-
-def fun_l8_n344()
- fun_l9_n653
-end
-
-def fun_l8_n345()
- fun_l9_n304
-end
-
-def fun_l8_n346()
- fun_l9_n880
-end
-
-def fun_l8_n347()
- fun_l9_n701
-end
-
-def fun_l8_n348()
- fun_l9_n815
-end
-
-def fun_l8_n349()
- fun_l9_n180
-end
-
-def fun_l8_n350()
- fun_l9_n24
-end
-
-def fun_l8_n351()
- fun_l9_n970
-end
-
-def fun_l8_n352()
- fun_l9_n829
-end
-
-def fun_l8_n353()
- fun_l9_n908
-end
-
-def fun_l8_n354()
- fun_l9_n355
-end
-
-def fun_l8_n355()
- fun_l9_n844
-end
-
-def fun_l8_n356()
- fun_l9_n936
-end
-
-def fun_l8_n357()
- fun_l9_n555
-end
-
-def fun_l8_n358()
- fun_l9_n936
-end
-
-def fun_l8_n359()
- fun_l9_n61
-end
-
-def fun_l8_n360()
- fun_l9_n936
-end
-
-def fun_l8_n361()
- fun_l9_n244
-end
-
-def fun_l8_n362()
- fun_l9_n799
-end
-
-def fun_l8_n363()
- fun_l9_n429
-end
-
-def fun_l8_n364()
- fun_l9_n676
-end
-
-def fun_l8_n365()
- fun_l9_n877
-end
-
-def fun_l8_n366()
- fun_l9_n862
-end
-
-def fun_l8_n367()
- fun_l9_n937
-end
-
-def fun_l8_n368()
- fun_l9_n59
-end
-
-def fun_l8_n369()
- fun_l9_n50
-end
-
-def fun_l8_n370()
- fun_l9_n550
-end
-
-def fun_l8_n371()
- fun_l9_n562
-end
-
-def fun_l8_n372()
- fun_l9_n270
-end
-
-def fun_l8_n373()
- fun_l9_n774
-end
-
-def fun_l8_n374()
- fun_l9_n61
-end
-
-def fun_l8_n375()
- fun_l9_n221
-end
-
-def fun_l8_n376()
- fun_l9_n483
-end
-
-def fun_l8_n377()
- fun_l9_n63
-end
-
-def fun_l8_n378()
- fun_l9_n921
-end
-
-def fun_l8_n379()
- fun_l9_n34
-end
-
-def fun_l8_n380()
- fun_l9_n684
-end
-
-def fun_l8_n381()
- fun_l9_n583
-end
-
-def fun_l8_n382()
- fun_l9_n918
-end
-
-def fun_l8_n383()
- fun_l9_n193
-end
-
-def fun_l8_n384()
- fun_l9_n525
-end
-
-def fun_l8_n385()
- fun_l9_n789
-end
-
-def fun_l8_n386()
- fun_l9_n158
-end
-
-def fun_l8_n387()
- fun_l9_n32
-end
-
-def fun_l8_n388()
- fun_l9_n741
-end
-
-def fun_l8_n389()
- fun_l9_n880
-end
-
-def fun_l8_n390()
- fun_l9_n710
-end
-
-def fun_l8_n391()
- fun_l9_n837
-end
-
-def fun_l8_n392()
- fun_l9_n866
-end
-
-def fun_l8_n393()
- fun_l9_n511
-end
-
-def fun_l8_n394()
- fun_l9_n794
-end
-
-def fun_l8_n395()
- fun_l9_n508
-end
-
-def fun_l8_n396()
- fun_l9_n102
-end
-
-def fun_l8_n397()
- fun_l9_n24
-end
-
-def fun_l8_n398()
- fun_l9_n512
-end
-
-def fun_l8_n399()
- fun_l9_n764
-end
-
-def fun_l8_n400()
- fun_l9_n100
-end
-
-def fun_l8_n401()
- fun_l9_n159
-end
-
-def fun_l8_n402()
- fun_l9_n774
-end
-
-def fun_l8_n403()
- fun_l9_n382
-end
-
-def fun_l8_n404()
- fun_l9_n596
-end
-
-def fun_l8_n405()
- fun_l9_n581
-end
-
-def fun_l8_n406()
- fun_l9_n818
-end
-
-def fun_l8_n407()
- fun_l9_n158
-end
-
-def fun_l8_n408()
- fun_l9_n59
-end
-
-def fun_l8_n409()
- fun_l9_n392
-end
-
-def fun_l8_n410()
- fun_l9_n877
-end
-
-def fun_l8_n411()
- fun_l9_n49
-end
-
-def fun_l8_n412()
- fun_l9_n379
-end
-
-def fun_l8_n413()
- fun_l9_n367
-end
-
-def fun_l8_n414()
- fun_l9_n740
-end
-
-def fun_l8_n415()
- fun_l9_n880
-end
-
-def fun_l8_n416()
- fun_l9_n354
-end
-
-def fun_l8_n417()
- fun_l9_n874
-end
-
-def fun_l8_n418()
- fun_l9_n769
-end
-
-def fun_l8_n419()
- fun_l9_n821
-end
-
-def fun_l8_n420()
- fun_l9_n595
-end
-
-def fun_l8_n421()
- fun_l9_n471
-end
-
-def fun_l8_n422()
- fun_l9_n963
-end
-
-def fun_l8_n423()
- fun_l9_n806
-end
-
-def fun_l8_n424()
- fun_l9_n863
-end
-
-def fun_l8_n425()
- fun_l9_n255
-end
-
-def fun_l8_n426()
- fun_l9_n787
-end
-
-def fun_l8_n427()
- fun_l9_n369
-end
-
-def fun_l8_n428()
- fun_l9_n876
-end
-
-def fun_l8_n429()
- fun_l9_n660
-end
-
-def fun_l8_n430()
- fun_l9_n678
-end
-
-def fun_l8_n431()
- fun_l9_n690
-end
-
-def fun_l8_n432()
- fun_l9_n954
-end
-
-def fun_l8_n433()
- fun_l9_n250
-end
-
-def fun_l8_n434()
- fun_l9_n834
-end
-
-def fun_l8_n435()
- fun_l9_n852
-end
-
-def fun_l8_n436()
- fun_l9_n987
-end
-
-def fun_l8_n437()
- fun_l9_n297
-end
-
-def fun_l8_n438()
- fun_l9_n263
-end
-
-def fun_l8_n439()
- fun_l9_n120
-end
-
-def fun_l8_n440()
- fun_l9_n57
-end
-
-def fun_l8_n441()
- fun_l9_n363
-end
-
-def fun_l8_n442()
- fun_l9_n458
-end
-
-def fun_l8_n443()
- fun_l9_n323
-end
-
-def fun_l8_n444()
- fun_l9_n80
-end
-
-def fun_l8_n445()
- fun_l9_n88
-end
-
-def fun_l8_n446()
- fun_l9_n928
-end
-
-def fun_l8_n447()
- fun_l9_n682
-end
-
-def fun_l8_n448()
- fun_l9_n740
-end
-
-def fun_l8_n449()
- fun_l9_n132
-end
-
-def fun_l8_n450()
- fun_l9_n194
-end
-
-def fun_l8_n451()
- fun_l9_n694
-end
-
-def fun_l8_n452()
- fun_l9_n53
-end
-
-def fun_l8_n453()
- fun_l9_n84
-end
-
-def fun_l8_n454()
- fun_l9_n801
-end
-
-def fun_l8_n455()
- fun_l9_n176
-end
-
-def fun_l8_n456()
- fun_l9_n375
-end
-
-def fun_l8_n457()
- fun_l9_n161
-end
-
-def fun_l8_n458()
- fun_l9_n723
-end
-
-def fun_l8_n459()
- fun_l9_n704
-end
-
-def fun_l8_n460()
- fun_l9_n335
-end
-
-def fun_l8_n461()
- fun_l9_n106
-end
-
-def fun_l8_n462()
- fun_l9_n425
-end
-
-def fun_l8_n463()
- fun_l9_n972
-end
-
-def fun_l8_n464()
- fun_l9_n18
-end
-
-def fun_l8_n465()
- fun_l9_n872
-end
-
-def fun_l8_n466()
- fun_l9_n453
-end
-
-def fun_l8_n467()
- fun_l9_n220
-end
-
-def fun_l8_n468()
- fun_l9_n283
-end
-
-def fun_l8_n469()
- fun_l9_n48
-end
-
-def fun_l8_n470()
- fun_l9_n891
-end
-
-def fun_l8_n471()
- fun_l9_n640
-end
-
-def fun_l8_n472()
- fun_l9_n842
-end
-
-def fun_l8_n473()
- fun_l9_n440
-end
-
-def fun_l8_n474()
- fun_l9_n109
-end
-
-def fun_l8_n475()
- fun_l9_n910
-end
-
-def fun_l8_n476()
- fun_l9_n136
-end
-
-def fun_l8_n477()
- fun_l9_n187
-end
-
-def fun_l8_n478()
- fun_l9_n279
-end
-
-def fun_l8_n479()
- fun_l9_n8
-end
-
-def fun_l8_n480()
- fun_l9_n372
-end
-
-def fun_l8_n481()
- fun_l9_n504
-end
-
-def fun_l8_n482()
- fun_l9_n250
-end
-
-def fun_l8_n483()
- fun_l9_n122
-end
-
-def fun_l8_n484()
- fun_l9_n435
-end
-
-def fun_l8_n485()
- fun_l9_n282
-end
-
-def fun_l8_n486()
- fun_l9_n213
-end
-
-def fun_l8_n487()
- fun_l9_n256
-end
-
-def fun_l8_n488()
- fun_l9_n162
-end
-
-def fun_l8_n489()
- fun_l9_n419
-end
-
-def fun_l8_n490()
- fun_l9_n286
-end
-
-def fun_l8_n491()
- fun_l9_n102
-end
-
-def fun_l8_n492()
- fun_l9_n434
-end
-
-def fun_l8_n493()
- fun_l9_n782
-end
-
-def fun_l8_n494()
- fun_l9_n993
-end
-
-def fun_l8_n495()
- fun_l9_n275
-end
-
-def fun_l8_n496()
- fun_l9_n873
-end
-
-def fun_l8_n497()
- fun_l9_n346
-end
-
-def fun_l8_n498()
- fun_l9_n57
-end
-
-def fun_l8_n499()
- fun_l9_n77
-end
-
-def fun_l8_n500()
- fun_l9_n936
-end
-
-def fun_l8_n501()
- fun_l9_n320
-end
-
-def fun_l8_n502()
- fun_l9_n921
-end
-
-def fun_l8_n503()
- fun_l9_n505
-end
-
-def fun_l8_n504()
- fun_l9_n184
-end
-
-def fun_l8_n505()
- fun_l9_n476
-end
-
-def fun_l8_n506()
- fun_l9_n2
-end
-
-def fun_l8_n507()
- fun_l9_n573
-end
-
-def fun_l8_n508()
- fun_l9_n150
-end
-
-def fun_l8_n509()
- fun_l9_n637
-end
-
-def fun_l8_n510()
- fun_l9_n435
-end
-
-def fun_l8_n511()
- fun_l9_n361
-end
-
-def fun_l8_n512()
- fun_l9_n808
-end
-
-def fun_l8_n513()
- fun_l9_n129
-end
-
-def fun_l8_n514()
- fun_l9_n57
-end
-
-def fun_l8_n515()
- fun_l9_n646
-end
-
-def fun_l8_n516()
- fun_l9_n679
-end
-
-def fun_l8_n517()
- fun_l9_n256
-end
-
-def fun_l8_n518()
- fun_l9_n672
-end
-
-def fun_l8_n519()
- fun_l9_n406
-end
-
-def fun_l8_n520()
- fun_l9_n59
-end
-
-def fun_l8_n521()
- fun_l9_n215
-end
-
-def fun_l8_n522()
- fun_l9_n435
-end
-
-def fun_l8_n523()
- fun_l9_n693
-end
-
-def fun_l8_n524()
- fun_l9_n863
-end
-
-def fun_l8_n525()
- fun_l9_n79
-end
-
-def fun_l8_n526()
- fun_l9_n527
-end
-
-def fun_l8_n527()
- fun_l9_n711
-end
-
-def fun_l8_n528()
- fun_l9_n51
-end
-
-def fun_l8_n529()
- fun_l9_n712
-end
-
-def fun_l8_n530()
- fun_l9_n84
-end
-
-def fun_l8_n531()
- fun_l9_n854
-end
-
-def fun_l8_n532()
- fun_l9_n43
-end
-
-def fun_l8_n533()
- fun_l9_n354
-end
-
-def fun_l8_n534()
- fun_l9_n74
-end
-
-def fun_l8_n535()
- fun_l9_n736
-end
-
-def fun_l8_n536()
- fun_l9_n573
-end
-
-def fun_l8_n537()
- fun_l9_n56
-end
-
-def fun_l8_n538()
- fun_l9_n818
-end
-
-def fun_l8_n539()
- fun_l9_n861
-end
-
-def fun_l8_n540()
- fun_l9_n531
-end
-
-def fun_l8_n541()
- fun_l9_n204
-end
-
-def fun_l8_n542()
- fun_l9_n451
-end
-
-def fun_l8_n543()
- fun_l9_n138
-end
-
-def fun_l8_n544()
- fun_l9_n888
-end
-
-def fun_l8_n545()
- fun_l9_n846
-end
-
-def fun_l8_n546()
- fun_l9_n873
-end
-
-def fun_l8_n547()
- fun_l9_n467
-end
-
-def fun_l8_n548()
- fun_l9_n210
-end
-
-def fun_l8_n549()
- fun_l9_n773
-end
-
-def fun_l8_n550()
- fun_l9_n546
-end
-
-def fun_l8_n551()
- fun_l9_n768
-end
-
-def fun_l8_n552()
- fun_l9_n115
-end
-
-def fun_l8_n553()
- fun_l9_n20
-end
-
-def fun_l8_n554()
- fun_l9_n891
-end
-
-def fun_l8_n555()
- fun_l9_n924
-end
-
-def fun_l8_n556()
- fun_l9_n192
-end
-
-def fun_l8_n557()
- fun_l9_n581
-end
-
-def fun_l8_n558()
- fun_l9_n517
-end
-
-def fun_l8_n559()
- fun_l9_n533
-end
-
-def fun_l8_n560()
- fun_l9_n930
-end
-
-def fun_l8_n561()
- fun_l9_n321
-end
-
-def fun_l8_n562()
- fun_l9_n648
-end
-
-def fun_l8_n563()
- fun_l9_n963
-end
-
-def fun_l8_n564()
- fun_l9_n406
-end
-
-def fun_l8_n565()
- fun_l9_n823
-end
-
-def fun_l8_n566()
- fun_l9_n394
-end
-
-def fun_l8_n567()
- fun_l9_n442
-end
-
-def fun_l8_n568()
- fun_l9_n851
-end
-
-def fun_l8_n569()
- fun_l9_n652
-end
-
-def fun_l8_n570()
- fun_l9_n165
-end
-
-def fun_l8_n571()
- fun_l9_n213
-end
-
-def fun_l8_n572()
- fun_l9_n633
-end
-
-def fun_l8_n573()
- fun_l9_n243
-end
-
-def fun_l8_n574()
- fun_l9_n232
-end
-
-def fun_l8_n575()
- fun_l9_n76
-end
-
-def fun_l8_n576()
- fun_l9_n547
-end
-
-def fun_l8_n577()
- fun_l9_n628
-end
-
-def fun_l8_n578()
- fun_l9_n20
-end
-
-def fun_l8_n579()
- fun_l9_n525
-end
-
-def fun_l8_n580()
- fun_l9_n788
-end
-
-def fun_l8_n581()
- fun_l9_n326
-end
-
-def fun_l8_n582()
- fun_l9_n206
-end
-
-def fun_l8_n583()
- fun_l9_n709
-end
-
-def fun_l8_n584()
- fun_l9_n185
-end
-
-def fun_l8_n585()
- fun_l9_n106
-end
-
-def fun_l8_n586()
- fun_l9_n180
-end
-
-def fun_l8_n587()
- fun_l9_n304
-end
-
-def fun_l8_n588()
- fun_l9_n689
-end
-
-def fun_l8_n589()
- fun_l9_n124
-end
-
-def fun_l8_n590()
- fun_l9_n91
-end
-
-def fun_l8_n591()
- fun_l9_n856
-end
-
-def fun_l8_n592()
- fun_l9_n16
-end
-
-def fun_l8_n593()
- fun_l9_n875
-end
-
-def fun_l8_n594()
- fun_l9_n407
-end
-
-def fun_l8_n595()
- fun_l9_n386
-end
-
-def fun_l8_n596()
- fun_l9_n269
-end
-
-def fun_l8_n597()
- fun_l9_n254
-end
-
-def fun_l8_n598()
- fun_l9_n452
-end
-
-def fun_l8_n599()
- fun_l9_n450
-end
-
-def fun_l8_n600()
- fun_l9_n268
-end
-
-def fun_l8_n601()
- fun_l9_n965
-end
-
-def fun_l8_n602()
- fun_l9_n190
-end
-
-def fun_l8_n603()
- fun_l9_n811
-end
-
-def fun_l8_n604()
- fun_l9_n802
-end
-
-def fun_l8_n605()
- fun_l9_n732
-end
-
-def fun_l8_n606()
- fun_l9_n997
-end
-
-def fun_l8_n607()
- fun_l9_n929
-end
-
-def fun_l8_n608()
- fun_l9_n18
-end
-
-def fun_l8_n609()
- fun_l9_n260
-end
-
-def fun_l8_n610()
- fun_l9_n17
-end
-
-def fun_l8_n611()
- fun_l9_n324
-end
-
-def fun_l8_n612()
- fun_l9_n473
-end
-
-def fun_l8_n613()
- fun_l9_n266
-end
-
-def fun_l8_n614()
- fun_l9_n753
-end
-
-def fun_l8_n615()
- fun_l9_n929
-end
-
-def fun_l8_n616()
- fun_l9_n374
-end
-
-def fun_l8_n617()
- fun_l9_n254
-end
-
-def fun_l8_n618()
- fun_l9_n520
-end
-
-def fun_l8_n619()
- fun_l9_n561
-end
-
-def fun_l8_n620()
- fun_l9_n309
-end
-
-def fun_l8_n621()
- fun_l9_n875
-end
-
-def fun_l8_n622()
- fun_l9_n635
-end
-
-def fun_l8_n623()
- fun_l9_n138
-end
-
-def fun_l8_n624()
- fun_l9_n554
-end
-
-def fun_l8_n625()
- fun_l9_n903
-end
-
-def fun_l8_n626()
- fun_l9_n771
-end
-
-def fun_l8_n627()
- fun_l9_n358
-end
-
-def fun_l8_n628()
- fun_l9_n238
-end
-
-def fun_l8_n629()
- fun_l9_n896
-end
-
-def fun_l8_n630()
- fun_l9_n675
-end
-
-def fun_l8_n631()
- fun_l9_n817
-end
-
-def fun_l8_n632()
- fun_l9_n530
-end
-
-def fun_l8_n633()
- fun_l9_n262
-end
-
-def fun_l8_n634()
- fun_l9_n221
-end
-
-def fun_l8_n635()
- fun_l9_n590
-end
-
-def fun_l8_n636()
- fun_l9_n536
-end
-
-def fun_l8_n637()
- fun_l9_n910
-end
-
-def fun_l8_n638()
- fun_l9_n383
-end
-
-def fun_l8_n639()
- fun_l9_n977
-end
-
-def fun_l8_n640()
- fun_l9_n172
-end
-
-def fun_l8_n641()
- fun_l9_n428
-end
-
-def fun_l8_n642()
- fun_l9_n278
-end
-
-def fun_l8_n643()
- fun_l9_n77
-end
-
-def fun_l8_n644()
- fun_l9_n992
-end
-
-def fun_l8_n645()
- fun_l9_n783
-end
-
-def fun_l8_n646()
- fun_l9_n285
-end
-
-def fun_l8_n647()
- fun_l9_n589
-end
-
-def fun_l8_n648()
- fun_l9_n280
-end
-
-def fun_l8_n649()
- fun_l9_n626
-end
-
-def fun_l8_n650()
- fun_l9_n172
-end
-
-def fun_l8_n651()
- fun_l9_n389
-end
-
-def fun_l8_n652()
- fun_l9_n53
-end
-
-def fun_l8_n653()
- fun_l9_n676
-end
-
-def fun_l8_n654()
- fun_l9_n499
-end
-
-def fun_l8_n655()
- fun_l9_n270
-end
-
-def fun_l8_n656()
- fun_l9_n976
-end
-
-def fun_l8_n657()
- fun_l9_n681
-end
-
-def fun_l8_n658()
- fun_l9_n960
-end
-
-def fun_l8_n659()
- fun_l9_n779
-end
-
-def fun_l8_n660()
- fun_l9_n953
-end
-
-def fun_l8_n661()
- fun_l9_n856
-end
-
-def fun_l8_n662()
- fun_l9_n672
-end
-
-def fun_l8_n663()
- fun_l9_n877
-end
-
-def fun_l8_n664()
- fun_l9_n667
-end
-
-def fun_l8_n665()
- fun_l9_n593
-end
-
-def fun_l8_n666()
- fun_l9_n115
-end
-
-def fun_l8_n667()
- fun_l9_n117
-end
-
-def fun_l8_n668()
- fun_l9_n582
-end
-
-def fun_l8_n669()
- fun_l9_n695
-end
-
-def fun_l8_n670()
- fun_l9_n119
-end
-
-def fun_l8_n671()
- fun_l9_n521
-end
-
-def fun_l8_n672()
- fun_l9_n291
-end
-
-def fun_l8_n673()
- fun_l9_n630
-end
-
-def fun_l8_n674()
- fun_l9_n8
-end
-
-def fun_l8_n675()
- fun_l9_n331
-end
-
-def fun_l8_n676()
- fun_l9_n32
-end
-
-def fun_l8_n677()
- fun_l9_n494
-end
-
-def fun_l8_n678()
- fun_l9_n744
-end
-
-def fun_l8_n679()
- fun_l9_n220
-end
-
-def fun_l8_n680()
- fun_l9_n793
-end
-
-def fun_l8_n681()
- fun_l9_n592
-end
-
-def fun_l8_n682()
- fun_l9_n40
-end
-
-def fun_l8_n683()
- fun_l9_n442
-end
-
-def fun_l8_n684()
- fun_l9_n606
-end
-
-def fun_l8_n685()
- fun_l9_n592
-end
-
-def fun_l8_n686()
- fun_l9_n264
-end
-
-def fun_l8_n687()
- fun_l9_n570
-end
-
-def fun_l8_n688()
- fun_l9_n69
-end
-
-def fun_l8_n689()
- fun_l9_n137
-end
-
-def fun_l8_n690()
- fun_l9_n712
-end
-
-def fun_l8_n691()
- fun_l9_n593
-end
-
-def fun_l8_n692()
- fun_l9_n481
-end
-
-def fun_l8_n693()
- fun_l9_n669
-end
-
-def fun_l8_n694()
- fun_l9_n504
-end
-
-def fun_l8_n695()
- fun_l9_n732
-end
-
-def fun_l8_n696()
- fun_l9_n771
-end
-
-def fun_l8_n697()
- fun_l9_n258
-end
-
-def fun_l8_n698()
- fun_l9_n756
-end
-
-def fun_l8_n699()
- fun_l9_n61
-end
-
-def fun_l8_n700()
- fun_l9_n257
-end
-
-def fun_l8_n701()
- fun_l9_n788
-end
-
-def fun_l8_n702()
- fun_l9_n142
-end
-
-def fun_l8_n703()
- fun_l9_n380
-end
-
-def fun_l8_n704()
- fun_l9_n698
-end
-
-def fun_l8_n705()
- fun_l9_n482
-end
-
-def fun_l8_n706()
- fun_l9_n515
-end
-
-def fun_l8_n707()
- fun_l9_n253
-end
-
-def fun_l8_n708()
- fun_l9_n323
-end
-
-def fun_l8_n709()
- fun_l9_n524
-end
-
-def fun_l8_n710()
- fun_l9_n681
-end
-
-def fun_l8_n711()
- fun_l9_n473
-end
-
-def fun_l8_n712()
- fun_l9_n186
-end
-
-def fun_l8_n713()
- fun_l9_n117
-end
-
-def fun_l8_n714()
- fun_l9_n682
-end
-
-def fun_l8_n715()
- fun_l9_n475
-end
-
-def fun_l8_n716()
- fun_l9_n190
-end
-
-def fun_l8_n717()
- fun_l9_n56
-end
-
-def fun_l8_n718()
- fun_l9_n492
-end
-
-def fun_l8_n719()
- fun_l9_n561
-end
-
-def fun_l8_n720()
- fun_l9_n130
-end
-
-def fun_l8_n721()
- fun_l9_n296
-end
-
-def fun_l8_n722()
- fun_l9_n425
-end
-
-def fun_l8_n723()
- fun_l9_n248
-end
-
-def fun_l8_n724()
- fun_l9_n523
-end
-
-def fun_l8_n725()
- fun_l9_n730
-end
-
-def fun_l8_n726()
- fun_l9_n231
-end
-
-def fun_l8_n727()
- fun_l9_n953
-end
-
-def fun_l8_n728()
- fun_l9_n511
-end
-
-def fun_l8_n729()
- fun_l9_n78
-end
-
-def fun_l8_n730()
- fun_l9_n284
-end
-
-def fun_l8_n731()
- fun_l9_n450
-end
-
-def fun_l8_n732()
- fun_l9_n149
-end
-
-def fun_l8_n733()
- fun_l9_n396
-end
-
-def fun_l8_n734()
- fun_l9_n202
-end
-
-def fun_l8_n735()
- fun_l9_n250
-end
-
-def fun_l8_n736()
- fun_l9_n459
-end
-
-def fun_l8_n737()
- fun_l9_n869
-end
-
-def fun_l8_n738()
- fun_l9_n454
-end
-
-def fun_l8_n739()
- fun_l9_n322
-end
-
-def fun_l8_n740()
- fun_l9_n190
-end
-
-def fun_l8_n741()
- fun_l9_n997
-end
-
-def fun_l8_n742()
- fun_l9_n983
-end
-
-def fun_l8_n743()
- fun_l9_n191
-end
-
-def fun_l8_n744()
- fun_l9_n773
-end
-
-def fun_l8_n745()
- fun_l9_n261
-end
-
-def fun_l8_n746()
- fun_l9_n442
-end
-
-def fun_l8_n747()
- fun_l9_n297
-end
-
-def fun_l8_n748()
- fun_l9_n103
-end
-
-def fun_l8_n749()
- fun_l9_n981
-end
-
-def fun_l8_n750()
- fun_l9_n143
-end
-
-def fun_l8_n751()
- fun_l9_n499
-end
-
-def fun_l8_n752()
- fun_l9_n129
-end
-
-def fun_l8_n753()
- fun_l9_n357
-end
-
-def fun_l8_n754()
- fun_l9_n273
-end
-
-def fun_l8_n755()
- fun_l9_n217
-end
-
-def fun_l8_n756()
- fun_l9_n383
-end
-
-def fun_l8_n757()
- fun_l9_n965
-end
-
-def fun_l8_n758()
- fun_l9_n305
-end
-
-def fun_l8_n759()
- fun_l9_n450
-end
-
-def fun_l8_n760()
- fun_l9_n450
-end
-
-def fun_l8_n761()
- fun_l9_n545
-end
-
-def fun_l8_n762()
- fun_l9_n236
-end
-
-def fun_l8_n763()
- fun_l9_n329
-end
-
-def fun_l8_n764()
- fun_l9_n536
-end
-
-def fun_l8_n765()
- fun_l9_n56
-end
-
-def fun_l8_n766()
- fun_l9_n214
-end
-
-def fun_l8_n767()
- fun_l9_n227
-end
-
-def fun_l8_n768()
- fun_l9_n585
-end
-
-def fun_l8_n769()
- fun_l9_n368
-end
-
-def fun_l8_n770()
- fun_l9_n997
-end
-
-def fun_l8_n771()
- fun_l9_n895
-end
-
-def fun_l8_n772()
- fun_l9_n601
-end
-
-def fun_l8_n773()
- fun_l9_n975
-end
-
-def fun_l8_n774()
- fun_l9_n687
-end
-
-def fun_l8_n775()
- fun_l9_n498
-end
-
-def fun_l8_n776()
- fun_l9_n665
-end
-
-def fun_l8_n777()
- fun_l9_n915
-end
-
-def fun_l8_n778()
- fun_l9_n823
-end
-
-def fun_l8_n779()
- fun_l9_n479
-end
-
-def fun_l8_n780()
- fun_l9_n632
-end
-
-def fun_l8_n781()
- fun_l9_n793
-end
-
-def fun_l8_n782()
- fun_l9_n698
-end
-
-def fun_l8_n783()
- fun_l9_n940
-end
-
-def fun_l8_n784()
- fun_l9_n982
-end
-
-def fun_l8_n785()
- fun_l9_n983
-end
-
-def fun_l8_n786()
- fun_l9_n711
-end
-
-def fun_l8_n787()
- fun_l9_n61
-end
-
-def fun_l8_n788()
- fun_l9_n347
-end
-
-def fun_l8_n789()
- fun_l9_n856
-end
-
-def fun_l8_n790()
- fun_l9_n363
-end
-
-def fun_l8_n791()
- fun_l9_n995
-end
-
-def fun_l8_n792()
- fun_l9_n296
-end
-
-def fun_l8_n793()
- fun_l9_n497
-end
-
-def fun_l8_n794()
- fun_l9_n915
-end
-
-def fun_l8_n795()
- fun_l9_n899
-end
-
-def fun_l8_n796()
- fun_l9_n388
-end
-
-def fun_l8_n797()
- fun_l9_n538
-end
-
-def fun_l8_n798()
- fun_l9_n247
-end
-
-def fun_l8_n799()
- fun_l9_n426
-end
-
-def fun_l8_n800()
- fun_l9_n127
-end
-
-def fun_l8_n801()
- fun_l9_n945
-end
-
-def fun_l8_n802()
- fun_l9_n656
-end
-
-def fun_l8_n803()
- fun_l9_n900
-end
-
-def fun_l8_n804()
- fun_l9_n262
-end
-
-def fun_l8_n805()
- fun_l9_n371
-end
-
-def fun_l8_n806()
- fun_l9_n876
-end
-
-def fun_l8_n807()
- fun_l9_n601
-end
-
-def fun_l8_n808()
- fun_l9_n271
-end
-
-def fun_l8_n809()
- fun_l9_n837
-end
-
-def fun_l8_n810()
- fun_l9_n969
-end
-
-def fun_l8_n811()
- fun_l9_n287
-end
-
-def fun_l8_n812()
- fun_l9_n224
-end
-
-def fun_l8_n813()
- fun_l9_n129
-end
-
-def fun_l8_n814()
- fun_l9_n938
-end
-
-def fun_l8_n815()
- fun_l9_n198
-end
-
-def fun_l8_n816()
- fun_l9_n33
-end
-
-def fun_l8_n817()
- fun_l9_n535
-end
-
-def fun_l8_n818()
- fun_l9_n705
-end
-
-def fun_l8_n819()
- fun_l9_n19
-end
-
-def fun_l8_n820()
- fun_l9_n434
-end
-
-def fun_l8_n821()
- fun_l9_n430
-end
-
-def fun_l8_n822()
- fun_l9_n501
-end
-
-def fun_l8_n823()
- fun_l9_n349
-end
-
-def fun_l8_n824()
- fun_l9_n970
-end
-
-def fun_l8_n825()
- fun_l9_n467
-end
-
-def fun_l8_n826()
- fun_l9_n218
-end
-
-def fun_l8_n827()
- fun_l9_n163
-end
-
-def fun_l8_n828()
- fun_l9_n752
-end
-
-def fun_l8_n829()
- fun_l9_n34
-end
-
-def fun_l8_n830()
- fun_l9_n977
-end
-
-def fun_l8_n831()
- fun_l9_n517
-end
-
-def fun_l8_n832()
- fun_l9_n740
-end
-
-def fun_l8_n833()
- fun_l9_n7
-end
-
-def fun_l8_n834()
- fun_l9_n117
-end
-
-def fun_l8_n835()
- fun_l9_n879
-end
-
-def fun_l8_n836()
- fun_l9_n916
-end
-
-def fun_l8_n837()
- fun_l9_n895
-end
-
-def fun_l8_n838()
- fun_l9_n831
-end
-
-def fun_l8_n839()
- fun_l9_n559
-end
-
-def fun_l8_n840()
- fun_l9_n419
-end
-
-def fun_l8_n841()
- fun_l9_n994
-end
-
-def fun_l8_n842()
- fun_l9_n893
-end
-
-def fun_l8_n843()
- fun_l9_n664
-end
-
-def fun_l8_n844()
- fun_l9_n611
-end
-
-def fun_l8_n845()
- fun_l9_n988
-end
-
-def fun_l8_n846()
- fun_l9_n501
-end
-
-def fun_l8_n847()
- fun_l9_n97
-end
-
-def fun_l8_n848()
- fun_l9_n348
-end
-
-def fun_l8_n849()
- fun_l9_n23
-end
-
-def fun_l8_n850()
- fun_l9_n164
-end
-
-def fun_l8_n851()
- fun_l9_n751
-end
-
-def fun_l8_n852()
- fun_l9_n544
-end
-
-def fun_l8_n853()
- fun_l9_n944
-end
-
-def fun_l8_n854()
- fun_l9_n25
-end
-
-def fun_l8_n855()
- fun_l9_n125
-end
-
-def fun_l8_n856()
- fun_l9_n720
-end
-
-def fun_l8_n857()
- fun_l9_n298
-end
-
-def fun_l8_n858()
- fun_l9_n7
-end
-
-def fun_l8_n859()
- fun_l9_n885
-end
-
-def fun_l8_n860()
- fun_l9_n785
-end
-
-def fun_l8_n861()
- fun_l9_n653
-end
-
-def fun_l8_n862()
- fun_l9_n206
-end
-
-def fun_l8_n863()
- fun_l9_n460
-end
-
-def fun_l8_n864()
- fun_l9_n361
-end
-
-def fun_l8_n865()
- fun_l9_n782
-end
-
-def fun_l8_n866()
- fun_l9_n965
-end
-
-def fun_l8_n867()
- fun_l9_n653
-end
-
-def fun_l8_n868()
- fun_l9_n757
-end
-
-def fun_l8_n869()
- fun_l9_n892
-end
-
-def fun_l8_n870()
- fun_l9_n939
-end
-
-def fun_l8_n871()
- fun_l9_n105
-end
-
-def fun_l8_n872()
- fun_l9_n334
-end
-
-def fun_l8_n873()
- fun_l9_n120
-end
-
-def fun_l8_n874()
- fun_l9_n530
-end
-
-def fun_l8_n875()
- fun_l9_n777
-end
-
-def fun_l8_n876()
- fun_l9_n546
-end
-
-def fun_l8_n877()
- fun_l9_n235
-end
-
-def fun_l8_n878()
- fun_l9_n647
-end
-
-def fun_l8_n879()
- fun_l9_n813
-end
-
-def fun_l8_n880()
- fun_l9_n756
-end
-
-def fun_l8_n881()
- fun_l9_n202
-end
-
-def fun_l8_n882()
- fun_l9_n58
-end
-
-def fun_l8_n883()
- fun_l9_n895
-end
-
-def fun_l8_n884()
- fun_l9_n556
-end
-
-def fun_l8_n885()
- fun_l9_n974
-end
-
-def fun_l8_n886()
- fun_l9_n671
-end
-
-def fun_l8_n887()
- fun_l9_n700
-end
-
-def fun_l8_n888()
- fun_l9_n788
-end
-
-def fun_l8_n889()
- fun_l9_n568
-end
-
-def fun_l8_n890()
- fun_l9_n431
-end
-
-def fun_l8_n891()
- fun_l9_n517
-end
-
-def fun_l8_n892()
- fun_l9_n330
-end
-
-def fun_l8_n893()
- fun_l9_n573
-end
-
-def fun_l8_n894()
- fun_l9_n510
-end
-
-def fun_l8_n895()
- fun_l9_n784
-end
-
-def fun_l8_n896()
- fun_l9_n75
-end
-
-def fun_l8_n897()
- fun_l9_n314
-end
-
-def fun_l8_n898()
- fun_l9_n703
-end
-
-def fun_l8_n899()
- fun_l9_n740
-end
-
-def fun_l8_n900()
- fun_l9_n806
-end
-
-def fun_l8_n901()
- fun_l9_n208
-end
-
-def fun_l8_n902()
- fun_l9_n678
-end
-
-def fun_l8_n903()
- fun_l9_n443
-end
-
-def fun_l8_n904()
- fun_l9_n285
-end
-
-def fun_l8_n905()
- fun_l9_n840
-end
-
-def fun_l8_n906()
- fun_l9_n896
-end
-
-def fun_l8_n907()
- fun_l9_n253
-end
-
-def fun_l8_n908()
- fun_l9_n786
-end
-
-def fun_l8_n909()
- fun_l9_n364
-end
-
-def fun_l8_n910()
- fun_l9_n314
-end
-
-def fun_l8_n911()
- fun_l9_n178
-end
-
-def fun_l8_n912()
- fun_l9_n14
-end
-
-def fun_l8_n913()
- fun_l9_n594
-end
-
-def fun_l8_n914()
- fun_l9_n524
-end
-
-def fun_l8_n915()
- fun_l9_n449
-end
-
-def fun_l8_n916()
- fun_l9_n970
-end
-
-def fun_l8_n917()
- fun_l9_n418
-end
-
-def fun_l8_n918()
- fun_l9_n978
-end
-
-def fun_l8_n919()
- fun_l9_n266
-end
-
-def fun_l8_n920()
- fun_l9_n384
-end
-
-def fun_l8_n921()
- fun_l9_n806
-end
-
-def fun_l8_n922()
- fun_l9_n99
-end
-
-def fun_l8_n923()
- fun_l9_n116
-end
-
-def fun_l8_n924()
- fun_l9_n494
-end
-
-def fun_l8_n925()
- fun_l9_n891
-end
-
-def fun_l8_n926()
- fun_l9_n49
-end
-
-def fun_l8_n927()
- fun_l9_n87
-end
-
-def fun_l8_n928()
- fun_l9_n502
-end
-
-def fun_l8_n929()
- fun_l9_n528
-end
-
-def fun_l8_n930()
- fun_l9_n403
-end
-
-def fun_l8_n931()
- fun_l9_n385
-end
-
-def fun_l8_n932()
- fun_l9_n965
-end
-
-def fun_l8_n933()
- fun_l9_n658
-end
-
-def fun_l8_n934()
- fun_l9_n316
-end
-
-def fun_l8_n935()
- fun_l9_n441
-end
-
-def fun_l8_n936()
- fun_l9_n453
-end
-
-def fun_l8_n937()
- fun_l9_n957
-end
-
-def fun_l8_n938()
- fun_l9_n360
-end
-
-def fun_l8_n939()
- fun_l9_n150
-end
-
-def fun_l8_n940()
- fun_l9_n934
-end
-
-def fun_l8_n941()
- fun_l9_n676
-end
-
-def fun_l8_n942()
- fun_l9_n943
-end
-
-def fun_l8_n943()
- fun_l9_n824
-end
-
-def fun_l8_n944()
- fun_l9_n7
-end
-
-def fun_l8_n945()
- fun_l9_n640
-end
-
-def fun_l8_n946()
- fun_l9_n18
-end
-
-def fun_l8_n947()
- fun_l9_n483
-end
-
-def fun_l8_n948()
- fun_l9_n495
-end
-
-def fun_l8_n949()
- fun_l9_n711
-end
-
-def fun_l8_n950()
- fun_l9_n382
-end
-
-def fun_l8_n951()
- fun_l9_n479
-end
-
-def fun_l8_n952()
- fun_l9_n920
-end
-
-def fun_l8_n953()
- fun_l9_n477
-end
-
-def fun_l8_n954()
- fun_l9_n411
-end
-
-def fun_l8_n955()
- fun_l9_n801
-end
-
-def fun_l8_n956()
- fun_l9_n630
-end
-
-def fun_l8_n957()
- fun_l9_n172
-end
-
-def fun_l8_n958()
- fun_l9_n104
-end
-
-def fun_l8_n959()
- fun_l9_n197
-end
-
-def fun_l8_n960()
- fun_l9_n231
-end
-
-def fun_l8_n961()
- fun_l9_n769
-end
-
-def fun_l8_n962()
- fun_l9_n293
-end
-
-def fun_l8_n963()
- fun_l9_n580
-end
-
-def fun_l8_n964()
- fun_l9_n345
-end
-
-def fun_l8_n965()
- fun_l9_n199
-end
-
-def fun_l8_n966()
- fun_l9_n899
-end
-
-def fun_l8_n967()
- fun_l9_n68
-end
-
-def fun_l8_n968()
- fun_l9_n954
-end
-
-def fun_l8_n969()
- fun_l9_n205
-end
-
-def fun_l8_n970()
- fun_l9_n697
-end
-
-def fun_l8_n971()
- fun_l9_n445
-end
-
-def fun_l8_n972()
- fun_l9_n294
-end
-
-def fun_l8_n973()
- fun_l9_n96
-end
-
-def fun_l8_n974()
- fun_l9_n798
-end
-
-def fun_l8_n975()
- fun_l9_n509
-end
-
-def fun_l8_n976()
- fun_l9_n918
-end
-
-def fun_l8_n977()
- fun_l9_n624
-end
-
-def fun_l8_n978()
- fun_l9_n798
-end
-
-def fun_l8_n979()
- fun_l9_n267
-end
-
-def fun_l8_n980()
- fun_l9_n977
-end
-
-def fun_l8_n981()
- fun_l9_n128
-end
-
-def fun_l8_n982()
- fun_l9_n759
-end
-
-def fun_l8_n983()
- fun_l9_n999
-end
-
-def fun_l8_n984()
- fun_l9_n908
-end
-
-def fun_l8_n985()
- fun_l9_n713
-end
-
-def fun_l8_n986()
- fun_l9_n423
-end
-
-def fun_l8_n987()
- fun_l9_n789
-end
-
-def fun_l8_n988()
- fun_l9_n342
-end
-
-def fun_l8_n989()
- fun_l9_n963
-end
-
-def fun_l8_n990()
- fun_l9_n393
-end
-
-def fun_l8_n991()
- fun_l9_n446
-end
-
-def fun_l8_n992()
- fun_l9_n62
-end
-
-def fun_l8_n993()
- fun_l9_n567
-end
-
-def fun_l8_n994()
- fun_l9_n99
-end
-
-def fun_l8_n995()
- fun_l9_n6
-end
-
-def fun_l8_n996()
- fun_l9_n582
-end
-
-def fun_l8_n997()
- fun_l9_n714
-end
-
-def fun_l8_n998()
- fun_l9_n440
-end
-
-def fun_l8_n999()
- fun_l9_n89
-end
-
-def fun_l9_n0()
- fun_l10_n441
-end
-
-def fun_l9_n1()
- fun_l10_n18
-end
-
-def fun_l9_n2()
- fun_l10_n406
-end
-
-def fun_l9_n3()
- fun_l10_n623
-end
-
-def fun_l9_n4()
- fun_l10_n323
-end
-
-def fun_l9_n5()
- fun_l10_n702
-end
-
-def fun_l9_n6()
- fun_l10_n46
-end
-
-def fun_l9_n7()
- fun_l10_n519
-end
-
-def fun_l9_n8()
- fun_l10_n572
-end
-
-def fun_l9_n9()
- fun_l10_n670
-end
-
-def fun_l9_n10()
- fun_l10_n917
-end
-
-def fun_l9_n11()
- fun_l10_n160
-end
-
-def fun_l9_n12()
- fun_l10_n153
-end
-
-def fun_l9_n13()
- fun_l10_n73
-end
-
-def fun_l9_n14()
- fun_l10_n775
-end
-
-def fun_l9_n15()
- fun_l10_n97
-end
-
-def fun_l9_n16()
- fun_l10_n307
-end
-
-def fun_l9_n17()
- fun_l10_n630
-end
-
-def fun_l9_n18()
- fun_l10_n446
-end
-
-def fun_l9_n19()
- fun_l10_n798
-end
-
-def fun_l9_n20()
- fun_l10_n633
-end
-
-def fun_l9_n21()
- fun_l10_n83
-end
-
-def fun_l9_n22()
- fun_l10_n373
-end
-
-def fun_l9_n23()
- fun_l10_n777
-end
-
-def fun_l9_n24()
- fun_l10_n47
-end
-
-def fun_l9_n25()
- fun_l10_n533
-end
-
-def fun_l9_n26()
- fun_l10_n780
-end
-
-def fun_l9_n27()
- fun_l10_n220
-end
-
-def fun_l9_n28()
- fun_l10_n777
-end
-
-def fun_l9_n29()
- fun_l10_n71
-end
-
-def fun_l9_n30()
- fun_l10_n590
-end
-
-def fun_l9_n31()
- fun_l10_n544
-end
-
-def fun_l9_n32()
- fun_l10_n173
-end
-
-def fun_l9_n33()
- fun_l10_n464
-end
-
-def fun_l9_n34()
- fun_l10_n267
-end
-
-def fun_l9_n35()
- fun_l10_n152
-end
-
-def fun_l9_n36()
- fun_l10_n330
-end
-
-def fun_l9_n37()
- fun_l10_n267
-end
-
-def fun_l9_n38()
- fun_l10_n499
-end
-
-def fun_l9_n39()
- fun_l10_n213
-end
-
-def fun_l9_n40()
- fun_l10_n825
-end
-
-def fun_l9_n41()
- fun_l10_n567
-end
-
-def fun_l9_n42()
- fun_l10_n112
-end
-
-def fun_l9_n43()
- fun_l10_n483
-end
-
-def fun_l9_n44()
- fun_l10_n52
-end
-
-def fun_l9_n45()
- fun_l10_n564
-end
-
-def fun_l9_n46()
- fun_l10_n667
-end
-
-def fun_l9_n47()
- fun_l10_n965
-end
-
-def fun_l9_n48()
- fun_l10_n49
-end
-
-def fun_l9_n49()
- fun_l10_n206
-end
-
-def fun_l9_n50()
- fun_l10_n904
-end
-
-def fun_l9_n51()
- fun_l10_n161
-end
-
-def fun_l9_n52()
- fun_l10_n739
-end
-
-def fun_l9_n53()
- fun_l10_n62
-end
-
-def fun_l9_n54()
- fun_l10_n881
-end
-
-def fun_l9_n55()
- fun_l10_n392
-end
-
-def fun_l9_n56()
- fun_l10_n560
-end
-
-def fun_l9_n57()
- fun_l10_n202
-end
-
-def fun_l9_n58()
- fun_l10_n486
-end
-
-def fun_l9_n59()
- fun_l10_n347
-end
-
-def fun_l9_n60()
- fun_l10_n593
-end
-
-def fun_l9_n61()
- fun_l10_n542
-end
-
-def fun_l9_n62()
- fun_l10_n914
-end
-
-def fun_l9_n63()
- fun_l10_n956
-end
-
-def fun_l9_n64()
- fun_l10_n337
-end
-
-def fun_l9_n65()
- fun_l10_n383
-end
-
-def fun_l9_n66()
- fun_l10_n332
-end
-
-def fun_l9_n67()
- fun_l10_n610
-end
-
-def fun_l9_n68()
- fun_l10_n396
-end
-
-def fun_l9_n69()
- fun_l10_n847
-end
-
-def fun_l9_n70()
- fun_l10_n473
-end
-
-def fun_l9_n71()
- fun_l10_n657
-end
-
-def fun_l9_n72()
- fun_l10_n933
-end
-
-def fun_l9_n73()
- fun_l10_n384
-end
-
-def fun_l9_n74()
- fun_l10_n275
-end
-
-def fun_l9_n75()
- fun_l10_n90
-end
-
-def fun_l9_n76()
- fun_l10_n841
-end
-
-def fun_l9_n77()
- fun_l10_n326
-end
-
-def fun_l9_n78()
- fun_l10_n275
-end
-
-def fun_l9_n79()
- fun_l10_n153
-end
-
-def fun_l9_n80()
- fun_l10_n651
-end
-
-def fun_l9_n81()
- fun_l10_n724
-end
-
-def fun_l9_n82()
- fun_l10_n204
-end
-
-def fun_l9_n83()
- fun_l10_n389
-end
-
-def fun_l9_n84()
- fun_l10_n583
-end
-
-def fun_l9_n85()
- fun_l10_n938
-end
-
-def fun_l9_n86()
- fun_l10_n433
-end
-
-def fun_l9_n87()
- fun_l10_n917
-end
-
-def fun_l9_n88()
- fun_l10_n147
-end
-
-def fun_l9_n89()
- fun_l10_n578
-end
-
-def fun_l9_n90()
- fun_l10_n760
-end
-
-def fun_l9_n91()
- fun_l10_n891
-end
-
-def fun_l9_n92()
- fun_l10_n676
-end
-
-def fun_l9_n93()
- fun_l10_n130
-end
-
-def fun_l9_n94()
- fun_l10_n506
-end
-
-def fun_l9_n95()
- fun_l10_n67
-end
-
-def fun_l9_n96()
- fun_l10_n98
-end
-
-def fun_l9_n97()
- fun_l10_n788
-end
-
-def fun_l9_n98()
- fun_l10_n151
-end
-
-def fun_l9_n99()
- fun_l10_n170
-end
-
-def fun_l9_n100()
- fun_l10_n853
-end
-
-def fun_l9_n101()
- fun_l10_n76
-end
-
-def fun_l9_n102()
- fun_l10_n577
-end
-
-def fun_l9_n103()
- fun_l10_n703
-end
-
-def fun_l9_n104()
- fun_l10_n436
-end
-
-def fun_l9_n105()
- fun_l10_n983
-end
-
-def fun_l9_n106()
- fun_l10_n715
-end
-
-def fun_l9_n107()
- fun_l10_n703
-end
-
-def fun_l9_n108()
- fun_l10_n986
-end
-
-def fun_l9_n109()
- fun_l10_n328
-end
-
-def fun_l9_n110()
- fun_l10_n719
-end
-
-def fun_l9_n111()
- fun_l10_n885
-end
-
-def fun_l9_n112()
- fun_l10_n364
-end
-
-def fun_l9_n113()
- fun_l10_n554
-end
-
-def fun_l9_n114()
- fun_l10_n909
-end
-
-def fun_l9_n115()
- fun_l10_n718
-end
-
-def fun_l9_n116()
- fun_l10_n866
-end
-
-def fun_l9_n117()
- fun_l10_n592
-end
-
-def fun_l9_n118()
- fun_l10_n954
-end
-
-def fun_l9_n119()
- fun_l10_n204
-end
-
-def fun_l9_n120()
- fun_l10_n565
-end
-
-def fun_l9_n121()
- fun_l10_n982
-end
-
-def fun_l9_n122()
- fun_l10_n64
-end
-
-def fun_l9_n123()
- fun_l10_n851
-end
-
-def fun_l9_n124()
- fun_l10_n615
-end
-
-def fun_l9_n125()
- fun_l10_n141
-end
-
-def fun_l9_n126()
- fun_l10_n663
-end
-
-def fun_l9_n127()
- fun_l10_n625
-end
-
-def fun_l9_n128()
- fun_l10_n183
-end
-
-def fun_l9_n129()
- fun_l10_n433
-end
-
-def fun_l9_n130()
- fun_l10_n620
-end
-
-def fun_l9_n131()
- fun_l10_n251
-end
-
-def fun_l9_n132()
- fun_l10_n726
-end
-
-def fun_l9_n133()
- fun_l10_n871
-end
-
-def fun_l9_n134()
- fun_l10_n835
-end
-
-def fun_l9_n135()
- fun_l10_n643
-end
-
-def fun_l9_n136()
- fun_l10_n342
-end
-
-def fun_l9_n137()
- fun_l10_n13
-end
-
-def fun_l9_n138()
- fun_l10_n173
-end
-
-def fun_l9_n139()
- fun_l10_n555
-end
-
-def fun_l9_n140()
- fun_l10_n723
-end
-
-def fun_l9_n141()
- fun_l10_n269
-end
-
-def fun_l9_n142()
- fun_l10_n127
-end
-
-def fun_l9_n143()
- fun_l10_n238
-end
-
-def fun_l9_n144()
- fun_l10_n962
-end
-
-def fun_l9_n145()
- fun_l10_n259
-end
-
-def fun_l9_n146()
- fun_l10_n813
-end
-
-def fun_l9_n147()
- fun_l10_n506
-end
-
-def fun_l9_n148()
- fun_l10_n38
-end
-
-def fun_l9_n149()
- fun_l10_n465
-end
-
-def fun_l9_n150()
- fun_l10_n602
-end
-
-def fun_l9_n151()
- fun_l10_n857
-end
-
-def fun_l9_n152()
- fun_l10_n346
-end
-
-def fun_l9_n153()
- fun_l10_n611
-end
-
-def fun_l9_n154()
- fun_l10_n696
-end
-
-def fun_l9_n155()
- fun_l10_n93
-end
-
-def fun_l9_n156()
- fun_l10_n874
-end
-
-def fun_l9_n157()
- fun_l10_n750
-end
-
-def fun_l9_n158()
- fun_l10_n339
-end
-
-def fun_l9_n159()
- fun_l10_n395
-end
-
-def fun_l9_n160()
- fun_l10_n838
-end
-
-def fun_l9_n161()
- fun_l10_n620
-end
-
-def fun_l9_n162()
- fun_l10_n934
-end
-
-def fun_l9_n163()
- fun_l10_n908
-end
-
-def fun_l9_n164()
- fun_l10_n603
-end
-
-def fun_l9_n165()
- fun_l10_n906
-end
-
-def fun_l9_n166()
- fun_l10_n718
-end
-
-def fun_l9_n167()
- fun_l10_n514
-end
-
-def fun_l9_n168()
- fun_l10_n766
-end
-
-def fun_l9_n169()
- fun_l10_n179
-end
-
-def fun_l9_n170()
- fun_l10_n290
-end
-
-def fun_l9_n171()
- fun_l10_n833
-end
-
-def fun_l9_n172()
- fun_l10_n420
-end
-
-def fun_l9_n173()
- fun_l10_n605
-end
-
-def fun_l9_n174()
- fun_l10_n356
-end
-
-def fun_l9_n175()
- fun_l10_n744
-end
-
-def fun_l9_n176()
- fun_l10_n715
-end
-
-def fun_l9_n177()
- fun_l10_n725
-end
-
-def fun_l9_n178()
- fun_l10_n434
-end
-
-def fun_l9_n179()
- fun_l10_n127
-end
-
-def fun_l9_n180()
- fun_l10_n982
-end
-
-def fun_l9_n181()
- fun_l10_n377
-end
-
-def fun_l9_n182()
- fun_l10_n302
-end
-
-def fun_l9_n183()
- fun_l10_n472
-end
-
-def fun_l9_n184()
- fun_l10_n850
-end
-
-def fun_l9_n185()
- fun_l10_n900
-end
-
-def fun_l9_n186()
- fun_l10_n581
-end
-
-def fun_l9_n187()
- fun_l10_n628
-end
-
-def fun_l9_n188()
- fun_l10_n453
-end
-
-def fun_l9_n189()
- fun_l10_n31
-end
-
-def fun_l9_n190()
- fun_l10_n257
-end
-
-def fun_l9_n191()
- fun_l10_n416
-end
-
-def fun_l9_n192()
- fun_l10_n399
-end
-
-def fun_l9_n193()
- fun_l10_n113
-end
-
-def fun_l9_n194()
- fun_l10_n217
-end
-
-def fun_l9_n195()
- fun_l10_n975
-end
-
-def fun_l9_n196()
- fun_l10_n525
-end
-
-def fun_l9_n197()
- fun_l10_n534
-end
-
-def fun_l9_n198()
- fun_l10_n986
-end
-
-def fun_l9_n199()
- fun_l10_n992
-end
-
-def fun_l9_n200()
- fun_l10_n579
-end
-
-def fun_l9_n201()
- fun_l10_n776
-end
-
-def fun_l9_n202()
- fun_l10_n102
-end
-
-def fun_l9_n203()
- fun_l10_n287
-end
-
-def fun_l9_n204()
- fun_l10_n11
-end
-
-def fun_l9_n205()
- fun_l10_n522
-end
-
-def fun_l9_n206()
- fun_l10_n777
-end
-
-def fun_l9_n207()
- fun_l10_n984
-end
-
-def fun_l9_n208()
- fun_l10_n369
-end
-
-def fun_l9_n209()
- fun_l10_n889
-end
-
-def fun_l9_n210()
- fun_l10_n619
-end
-
-def fun_l9_n211()
- fun_l10_n878
-end
-
-def fun_l9_n212()
- fun_l10_n540
-end
-
-def fun_l9_n213()
- fun_l10_n285
-end
-
-def fun_l9_n214()
- fun_l10_n627
-end
-
-def fun_l9_n215()
- fun_l10_n196
-end
-
-def fun_l9_n216()
- fun_l10_n166
-end
-
-def fun_l9_n217()
- fun_l10_n648
-end
-
-def fun_l9_n218()
- fun_l10_n980
-end
-
-def fun_l9_n219()
- fun_l10_n801
-end
-
-def fun_l9_n220()
- fun_l10_n949
-end
-
-def fun_l9_n221()
- fun_l10_n985
-end
-
-def fun_l9_n222()
- fun_l10_n384
-end
-
-def fun_l9_n223()
- fun_l10_n840
-end
-
-def fun_l9_n224()
- fun_l10_n80
-end
-
-def fun_l9_n225()
- fun_l10_n79
-end
-
-def fun_l9_n226()
- fun_l10_n630
-end
-
-def fun_l9_n227()
- fun_l10_n20
-end
-
-def fun_l9_n228()
- fun_l10_n224
-end
-
-def fun_l9_n229()
- fun_l10_n480
-end
-
-def fun_l9_n230()
- fun_l10_n145
-end
-
-def fun_l9_n231()
- fun_l10_n923
-end
-
-def fun_l9_n232()
- fun_l10_n794
-end
-
-def fun_l9_n233()
- fun_l10_n271
-end
-
-def fun_l9_n234()
- fun_l10_n124
-end
-
-def fun_l9_n235()
- fun_l10_n925
-end
-
-def fun_l9_n236()
- fun_l10_n938
-end
-
-def fun_l9_n237()
- fun_l10_n470
-end
-
-def fun_l9_n238()
- fun_l10_n557
-end
-
-def fun_l9_n239()
- fun_l10_n152
-end
-
-def fun_l9_n240()
- fun_l10_n200
-end
-
-def fun_l9_n241()
- fun_l10_n110
-end
-
-def fun_l9_n242()
- fun_l10_n329
-end
-
-def fun_l9_n243()
- fun_l10_n2
-end
-
-def fun_l9_n244()
- fun_l10_n432
-end
-
-def fun_l9_n245()
- fun_l10_n175
-end
-
-def fun_l9_n246()
- fun_l10_n33
-end
-
-def fun_l9_n247()
- fun_l10_n441
-end
-
-def fun_l9_n248()
- fun_l10_n54
-end
-
-def fun_l9_n249()
- fun_l10_n408
-end
-
-def fun_l9_n250()
- fun_l10_n911
-end
-
-def fun_l9_n251()
- fun_l10_n100
-end
-
-def fun_l9_n252()
- fun_l10_n645
-end
-
-def fun_l9_n253()
- fun_l10_n826
-end
-
-def fun_l9_n254()
- fun_l10_n319
-end
-
-def fun_l9_n255()
- fun_l10_n735
-end
-
-def fun_l9_n256()
- fun_l10_n6
-end
-
-def fun_l9_n257()
- fun_l10_n428
-end
-
-def fun_l9_n258()
- fun_l10_n511
-end
-
-def fun_l9_n259()
- fun_l10_n47
-end
-
-def fun_l9_n260()
- fun_l10_n985
-end
-
-def fun_l9_n261()
- fun_l10_n278
-end
-
-def fun_l9_n262()
- fun_l10_n839
-end
-
-def fun_l9_n263()
- fun_l10_n948
-end
-
-def fun_l9_n264()
- fun_l10_n572
-end
-
-def fun_l9_n265()
- fun_l10_n864
-end
-
-def fun_l9_n266()
- fun_l10_n159
-end
-
-def fun_l9_n267()
- fun_l10_n870
-end
-
-def fun_l9_n268()
- fun_l10_n194
-end
-
-def fun_l9_n269()
- fun_l10_n424
-end
-
-def fun_l9_n270()
- fun_l10_n238
-end
-
-def fun_l9_n271()
- fun_l10_n804
-end
-
-def fun_l9_n272()
- fun_l10_n945
-end
-
-def fun_l9_n273()
- fun_l10_n181
-end
-
-def fun_l9_n274()
- fun_l10_n90
-end
-
-def fun_l9_n275()
- fun_l10_n552
-end
-
-def fun_l9_n276()
- fun_l10_n690
-end
-
-def fun_l9_n277()
- fun_l10_n416
-end
-
-def fun_l9_n278()
- fun_l10_n977
-end
-
-def fun_l9_n279()
- fun_l10_n930
-end
-
-def fun_l9_n280()
- fun_l10_n77
-end
-
-def fun_l9_n281()
- fun_l10_n102
-end
-
-def fun_l9_n282()
- fun_l10_n263
-end
-
-def fun_l9_n283()
- fun_l10_n973
-end
-
-def fun_l9_n284()
- fun_l10_n119
-end
-
-def fun_l9_n285()
- fun_l10_n102
-end
-
-def fun_l9_n286()
- fun_l10_n744
-end
-
-def fun_l9_n287()
- fun_l10_n430
-end
-
-def fun_l9_n288()
- fun_l10_n465
-end
-
-def fun_l9_n289()
- fun_l10_n54
-end
-
-def fun_l9_n290()
- fun_l10_n191
-end
-
-def fun_l9_n291()
- fun_l10_n781
-end
-
-def fun_l9_n292()
- fun_l10_n158
-end
-
-def fun_l9_n293()
- fun_l10_n512
-end
-
-def fun_l9_n294()
- fun_l10_n396
-end
-
-def fun_l9_n295()
- fun_l10_n814
-end
-
-def fun_l9_n296()
- fun_l10_n509
-end
-
-def fun_l9_n297()
- fun_l10_n340
-end
-
-def fun_l9_n298()
- fun_l10_n338
-end
-
-def fun_l9_n299()
- fun_l10_n822
-end
-
-def fun_l9_n300()
- fun_l10_n64
-end
-
-def fun_l9_n301()
- fun_l10_n867
-end
-
-def fun_l9_n302()
- fun_l10_n924
-end
-
-def fun_l9_n303()
- fun_l10_n628
-end
-
-def fun_l9_n304()
- fun_l10_n929
-end
-
-def fun_l9_n305()
- fun_l10_n874
-end
-
-def fun_l9_n306()
- fun_l10_n411
-end
-
-def fun_l9_n307()
- fun_l10_n836
-end
-
-def fun_l9_n308()
- fun_l10_n574
-end
-
-def fun_l9_n309()
- fun_l10_n865
-end
-
-def fun_l9_n310()
- fun_l10_n992
-end
-
-def fun_l9_n311()
- fun_l10_n75
-end
-
-def fun_l9_n312()
- fun_l10_n221
-end
-
-def fun_l9_n313()
- fun_l10_n439
-end
-
-def fun_l9_n314()
- fun_l10_n826
-end
-
-def fun_l9_n315()
- fun_l10_n589
-end
-
-def fun_l9_n316()
- fun_l10_n123
-end
-
-def fun_l9_n317()
- fun_l10_n641
-end
-
-def fun_l9_n318()
- fun_l10_n556
-end
-
-def fun_l9_n319()
- fun_l10_n92
-end
-
-def fun_l9_n320()
- fun_l10_n728
-end
-
-def fun_l9_n321()
- fun_l10_n503
-end
-
-def fun_l9_n322()
- fun_l10_n626
-end
-
-def fun_l9_n323()
- fun_l10_n416
-end
-
-def fun_l9_n324()
- fun_l10_n331
-end
-
-def fun_l9_n325()
- fun_l10_n330
-end
-
-def fun_l9_n326()
- fun_l10_n387
-end
-
-def fun_l9_n327()
- fun_l10_n337
-end
-
-def fun_l9_n328()
- fun_l10_n652
-end
-
-def fun_l9_n329()
- fun_l10_n654
-end
-
-def fun_l9_n330()
- fun_l10_n413
-end
-
-def fun_l9_n331()
- fun_l10_n763
-end
-
-def fun_l9_n332()
- fun_l10_n962
-end
-
-def fun_l9_n333()
- fun_l10_n944
-end
-
-def fun_l9_n334()
- fun_l10_n655
-end
-
-def fun_l9_n335()
- fun_l10_n907
-end
-
-def fun_l9_n336()
- fun_l10_n293
-end
-
-def fun_l9_n337()
- fun_l10_n684
-end
-
-def fun_l9_n338()
- fun_l10_n566
-end
-
-def fun_l9_n339()
- fun_l10_n547
-end
-
-def fun_l9_n340()
- fun_l10_n112
-end
-
-def fun_l9_n341()
- fun_l10_n854
-end
-
-def fun_l9_n342()
- fun_l10_n336
-end
-
-def fun_l9_n343()
- fun_l10_n473
-end
-
-def fun_l9_n344()
- fun_l10_n485
-end
-
-def fun_l9_n345()
- fun_l10_n588
-end
-
-def fun_l9_n346()
- fun_l10_n889
-end
-
-def fun_l9_n347()
- fun_l10_n523
-end
-
-def fun_l9_n348()
- fun_l10_n8
-end
-
-def fun_l9_n349()
- fun_l10_n368
-end
-
-def fun_l9_n350()
- fun_l10_n636
-end
-
-def fun_l9_n351()
- fun_l10_n879
-end
-
-def fun_l9_n352()
- fun_l10_n524
-end
-
-def fun_l9_n353()
- fun_l10_n209
-end
-
-def fun_l9_n354()
- fun_l10_n271
-end
-
-def fun_l9_n355()
- fun_l10_n90
-end
-
-def fun_l9_n356()
- fun_l10_n698
-end
-
-def fun_l9_n357()
- fun_l10_n268
-end
-
-def fun_l9_n358()
- fun_l10_n948
-end
-
-def fun_l9_n359()
- fun_l10_n847
-end
-
-def fun_l9_n360()
- fun_l10_n985
-end
-
-def fun_l9_n361()
- fun_l10_n978
-end
-
-def fun_l9_n362()
- fun_l10_n808
-end
-
-def fun_l9_n363()
- fun_l10_n796
-end
-
-def fun_l9_n364()
- fun_l10_n810
-end
-
-def fun_l9_n365()
- fun_l10_n665
-end
-
-def fun_l9_n366()
- fun_l10_n765
-end
-
-def fun_l9_n367()
- fun_l10_n74
-end
-
-def fun_l9_n368()
- fun_l10_n330
-end
-
-def fun_l9_n369()
- fun_l10_n125
-end
-
-def fun_l9_n370()
- fun_l10_n814
-end
-
-def fun_l9_n371()
- fun_l10_n498
-end
-
-def fun_l9_n372()
- fun_l10_n783
-end
-
-def fun_l9_n373()
- fun_l10_n169
-end
-
-def fun_l9_n374()
- fun_l10_n490
-end
-
-def fun_l9_n375()
- fun_l10_n923
-end
-
-def fun_l9_n376()
- fun_l10_n63
-end
-
-def fun_l9_n377()
- fun_l10_n687
-end
-
-def fun_l9_n378()
- fun_l10_n603
-end
-
-def fun_l9_n379()
- fun_l10_n916
-end
-
-def fun_l9_n380()
- fun_l10_n930
-end
-
-def fun_l9_n381()
- fun_l10_n884
-end
-
-def fun_l9_n382()
- fun_l10_n782
-end
-
-def fun_l9_n383()
- fun_l10_n63
-end
-
-def fun_l9_n384()
- fun_l10_n488
-end
-
-def fun_l9_n385()
- fun_l10_n188
-end
-
-def fun_l9_n386()
- fun_l10_n692
-end
-
-def fun_l9_n387()
- fun_l10_n213
-end
-
-def fun_l9_n388()
- fun_l10_n358
-end
-
-def fun_l9_n389()
- fun_l10_n200
-end
-
-def fun_l9_n390()
- fun_l10_n881
-end
-
-def fun_l9_n391()
- fun_l10_n533
-end
-
-def fun_l9_n392()
- fun_l10_n889
-end
-
-def fun_l9_n393()
- fun_l10_n444
-end
-
-def fun_l9_n394()
- fun_l10_n184
-end
-
-def fun_l9_n395()
- fun_l10_n775
-end
-
-def fun_l9_n396()
- fun_l10_n714
-end
-
-def fun_l9_n397()
- fun_l10_n385
-end
-
-def fun_l9_n398()
- fun_l10_n432
-end
-
-def fun_l9_n399()
- fun_l10_n357
-end
-
-def fun_l9_n400()
- fun_l10_n223
-end
-
-def fun_l9_n401()
- fun_l10_n73
-end
-
-def fun_l9_n402()
- fun_l10_n139
-end
-
-def fun_l9_n403()
- fun_l10_n930
-end
-
-def fun_l9_n404()
- fun_l10_n43
-end
-
-def fun_l9_n405()
- fun_l10_n104
-end
-
-def fun_l9_n406()
- fun_l10_n334
-end
-
-def fun_l9_n407()
- fun_l10_n959
-end
-
-def fun_l9_n408()
- fun_l10_n59
-end
-
-def fun_l9_n409()
- fun_l10_n794
-end
-
-def fun_l9_n410()
- fun_l10_n204
-end
-
-def fun_l9_n411()
- fun_l10_n225
-end
-
-def fun_l9_n412()
- fun_l10_n849
-end
-
-def fun_l9_n413()
- fun_l10_n227
-end
-
-def fun_l9_n414()
- fun_l10_n59
-end
-
-def fun_l9_n415()
- fun_l10_n352
-end
-
-def fun_l9_n416()
- fun_l10_n910
-end
-
-def fun_l9_n417()
- fun_l10_n628
-end
-
-def fun_l9_n418()
- fun_l10_n653
-end
-
-def fun_l9_n419()
- fun_l10_n827
-end
-
-def fun_l9_n420()
- fun_l10_n960
-end
-
-def fun_l9_n421()
- fun_l10_n142
-end
-
-def fun_l9_n422()
- fun_l10_n928
-end
-
-def fun_l9_n423()
- fun_l10_n370
-end
-
-def fun_l9_n424()
- fun_l10_n121
-end
-
-def fun_l9_n425()
- fun_l10_n684
-end
-
-def fun_l9_n426()
- fun_l10_n187
-end
-
-def fun_l9_n427()
- fun_l10_n93
-end
-
-def fun_l9_n428()
- fun_l10_n792
-end
-
-def fun_l9_n429()
- fun_l10_n565
-end
-
-def fun_l9_n430()
- fun_l10_n933
-end
-
-def fun_l9_n431()
- fun_l10_n393
-end
-
-def fun_l9_n432()
- fun_l10_n412
-end
-
-def fun_l9_n433()
- fun_l10_n121
-end
-
-def fun_l9_n434()
- fun_l10_n522
-end
-
-def fun_l9_n435()
- fun_l10_n408
-end
-
-def fun_l9_n436()
- fun_l10_n670
-end
-
-def fun_l9_n437()
- fun_l10_n685
-end
-
-def fun_l9_n438()
- fun_l10_n138
-end
-
-def fun_l9_n439()
- fun_l10_n658
-end
-
-def fun_l9_n440()
- fun_l10_n567
-end
-
-def fun_l9_n441()
- fun_l10_n121
-end
-
-def fun_l9_n442()
- fun_l10_n532
-end
-
-def fun_l9_n443()
- fun_l10_n37
-end
-
-def fun_l9_n444()
- fun_l10_n502
-end
-
-def fun_l9_n445()
- fun_l10_n779
-end
-
-def fun_l9_n446()
- fun_l10_n376
-end
-
-def fun_l9_n447()
- fun_l10_n412
-end
-
-def fun_l9_n448()
- fun_l10_n932
-end
-
-def fun_l9_n449()
- fun_l10_n779
-end
-
-def fun_l9_n450()
- fun_l10_n231
-end
-
-def fun_l9_n451()
- fun_l10_n302
-end
-
-def fun_l9_n452()
- fun_l10_n273
-end
-
-def fun_l9_n453()
- fun_l10_n531
-end
-
-def fun_l9_n454()
- fun_l10_n291
-end
-
-def fun_l9_n455()
- fun_l10_n56
-end
-
-def fun_l9_n456()
- fun_l10_n970
-end
-
-def fun_l9_n457()
- fun_l10_n936
-end
-
-def fun_l9_n458()
- fun_l10_n537
-end
-
-def fun_l9_n459()
- fun_l10_n145
-end
-
-def fun_l9_n460()
- fun_l10_n756
-end
-
-def fun_l9_n461()
- fun_l10_n0
-end
-
-def fun_l9_n462()
- fun_l10_n691
-end
-
-def fun_l9_n463()
- fun_l10_n635
-end
-
-def fun_l9_n464()
- fun_l10_n485
-end
-
-def fun_l9_n465()
- fun_l10_n407
-end
-
-def fun_l9_n466()
- fun_l10_n393
-end
-
-def fun_l9_n467()
- fun_l10_n336
-end
-
-def fun_l9_n468()
- fun_l10_n169
-end
-
-def fun_l9_n469()
- fun_l10_n43
-end
-
-def fun_l9_n470()
- fun_l10_n907
-end
-
-def fun_l9_n471()
- fun_l10_n215
-end
-
-def fun_l9_n472()
- fun_l10_n118
-end
-
-def fun_l9_n473()
- fun_l10_n735
-end
-
-def fun_l9_n474()
- fun_l10_n319
-end
-
-def fun_l9_n475()
- fun_l10_n631
-end
-
-def fun_l9_n476()
- fun_l10_n150
-end
-
-def fun_l9_n477()
- fun_l10_n899
-end
-
-def fun_l9_n478()
- fun_l10_n407
-end
-
-def fun_l9_n479()
- fun_l10_n830
-end
-
-def fun_l9_n480()
- fun_l10_n931
-end
-
-def fun_l9_n481()
- fun_l10_n392
-end
-
-def fun_l9_n482()
- fun_l10_n100
-end
-
-def fun_l9_n483()
- fun_l10_n210
-end
-
-def fun_l9_n484()
- fun_l10_n506
-end
-
-def fun_l9_n485()
- fun_l10_n160
-end
-
-def fun_l9_n486()
- fun_l10_n998
-end
-
-def fun_l9_n487()
- fun_l10_n170
-end
-
-def fun_l9_n488()
- fun_l10_n722
-end
-
-def fun_l9_n489()
- fun_l10_n196
-end
-
-def fun_l9_n490()
- fun_l10_n518
-end
-
-def fun_l9_n491()
- fun_l10_n350
-end
-
-def fun_l9_n492()
- fun_l10_n89
-end
-
-def fun_l9_n493()
- fun_l10_n49
-end
-
-def fun_l9_n494()
- fun_l10_n366
-end
-
-def fun_l9_n495()
- fun_l10_n850
-end
-
-def fun_l9_n496()
- fun_l10_n430
-end
-
-def fun_l9_n497()
- fun_l10_n485
-end
-
-def fun_l9_n498()
- fun_l10_n584
-end
-
-def fun_l9_n499()
- fun_l10_n36
-end
-
-def fun_l9_n500()
- fun_l10_n58
-end
-
-def fun_l9_n501()
- fun_l10_n81
-end
-
-def fun_l9_n502()
- fun_l10_n161
-end
-
-def fun_l9_n503()
- fun_l10_n983
-end
-
-def fun_l9_n504()
- fun_l10_n994
-end
-
-def fun_l9_n505()
- fun_l10_n26
-end
-
-def fun_l9_n506()
- fun_l10_n286
-end
-
-def fun_l9_n507()
- fun_l10_n118
-end
-
-def fun_l9_n508()
- fun_l10_n509
-end
-
-def fun_l9_n509()
- fun_l10_n630
-end
-
-def fun_l9_n510()
- fun_l10_n302
-end
-
-def fun_l9_n511()
- fun_l10_n307
-end
-
-def fun_l9_n512()
- fun_l10_n810
-end
-
-def fun_l9_n513()
- fun_l10_n21
-end
-
-def fun_l9_n514()
- fun_l10_n76
-end
-
-def fun_l9_n515()
- fun_l10_n769
-end
-
-def fun_l9_n516()
- fun_l10_n58
-end
-
-def fun_l9_n517()
- fun_l10_n368
-end
-
-def fun_l9_n518()
- fun_l10_n8
-end
-
-def fun_l9_n519()
- fun_l10_n559
-end
-
-def fun_l9_n520()
- fun_l10_n949
-end
-
-def fun_l9_n521()
- fun_l10_n781
-end
-
-def fun_l9_n522()
- fun_l10_n453
-end
-
-def fun_l9_n523()
- fun_l10_n227
-end
-
-def fun_l9_n524()
- fun_l10_n389
-end
-
-def fun_l9_n525()
- fun_l10_n641
-end
-
-def fun_l9_n526()
- fun_l10_n221
-end
-
-def fun_l9_n527()
- fun_l10_n322
-end
-
-def fun_l9_n528()
- fun_l10_n918
-end
-
-def fun_l9_n529()
- fun_l10_n246
-end
-
-def fun_l9_n530()
- fun_l10_n431
-end
-
-def fun_l9_n531()
- fun_l10_n445
-end
-
-def fun_l9_n532()
- fun_l10_n781
-end
-
-def fun_l9_n533()
- fun_l10_n626
-end
-
-def fun_l9_n534()
- fun_l10_n51
-end
-
-def fun_l9_n535()
- fun_l10_n441
-end
-
-def fun_l9_n536()
- fun_l10_n806
-end
-
-def fun_l9_n537()
- fun_l10_n58
-end
-
-def fun_l9_n538()
- fun_l10_n710
-end
-
-def fun_l9_n539()
- fun_l10_n782
-end
-
-def fun_l9_n540()
- fun_l10_n991
-end
-
-def fun_l9_n541()
- fun_l10_n792
-end
-
-def fun_l9_n542()
- fun_l10_n376
-end
-
-def fun_l9_n543()
- fun_l10_n716
-end
-
-def fun_l9_n544()
- fun_l10_n500
-end
-
-def fun_l9_n545()
- fun_l10_n251
-end
-
-def fun_l9_n546()
- fun_l10_n951
-end
-
-def fun_l9_n547()
- fun_l10_n584
-end
-
-def fun_l9_n548()
- fun_l10_n150
-end
-
-def fun_l9_n549()
- fun_l10_n380
-end
-
-def fun_l9_n550()
- fun_l10_n432
-end
-
-def fun_l9_n551()
- fun_l10_n787
-end
-
-def fun_l9_n552()
- fun_l10_n749
-end
-
-def fun_l9_n553()
- fun_l10_n646
-end
-
-def fun_l9_n554()
- fun_l10_n405
-end
-
-def fun_l9_n555()
- fun_l10_n345
-end
-
-def fun_l9_n556()
- fun_l10_n855
-end
-
-def fun_l9_n557()
- fun_l10_n575
-end
-
-def fun_l9_n558()
- fun_l10_n368
-end
-
-def fun_l9_n559()
- fun_l10_n511
-end
-
-def fun_l9_n560()
- fun_l10_n158
-end
-
-def fun_l9_n561()
- fun_l10_n243
-end
-
-def fun_l9_n562()
- fun_l10_n536
-end
-
-def fun_l9_n563()
- fun_l10_n107
-end
-
-def fun_l9_n564()
- fun_l10_n270
-end
-
-def fun_l9_n565()
- fun_l10_n783
-end
-
-def fun_l9_n566()
- fun_l10_n289
-end
-
-def fun_l9_n567()
- fun_l10_n360
-end
-
-def fun_l9_n568()
- fun_l10_n190
-end
-
-def fun_l9_n569()
- fun_l10_n245
-end
-
-def fun_l9_n570()
- fun_l10_n565
-end
-
-def fun_l9_n571()
- fun_l10_n310
-end
-
-def fun_l9_n572()
- fun_l10_n939
-end
-
-def fun_l9_n573()
- fun_l10_n955
-end
-
-def fun_l9_n574()
- fun_l10_n521
-end
-
-def fun_l9_n575()
- fun_l10_n597
-end
-
-def fun_l9_n576()
- fun_l10_n122
-end
-
-def fun_l9_n577()
- fun_l10_n987
-end
-
-def fun_l9_n578()
- fun_l10_n267
-end
-
-def fun_l9_n579()
- fun_l10_n798
-end
-
-def fun_l9_n580()
- fun_l10_n468
-end
-
-def fun_l9_n581()
- fun_l10_n807
-end
-
-def fun_l9_n582()
- fun_l10_n749
-end
-
-def fun_l9_n583()
- fun_l10_n578
-end
-
-def fun_l9_n584()
- fun_l10_n878
-end
-
-def fun_l9_n585()
- fun_l10_n404
-end
-
-def fun_l9_n586()
- fun_l10_n501
-end
-
-def fun_l9_n587()
- fun_l10_n165
-end
-
-def fun_l9_n588()
- fun_l10_n270
-end
-
-def fun_l9_n589()
- fun_l10_n197
-end
-
-def fun_l9_n590()
- fun_l10_n940
-end
-
-def fun_l9_n591()
- fun_l10_n667
-end
-
-def fun_l9_n592()
- fun_l10_n67
-end
-
-def fun_l9_n593()
- fun_l10_n652
-end
-
-def fun_l9_n594()
- fun_l10_n728
-end
-
-def fun_l9_n595()
- fun_l10_n829
-end
-
-def fun_l9_n596()
- fun_l10_n528
-end
-
-def fun_l9_n597()
- fun_l10_n765
-end
-
-def fun_l9_n598()
- fun_l10_n841
-end
-
-def fun_l9_n599()
- fun_l10_n605
-end
-
-def fun_l9_n600()
- fun_l10_n316
-end
-
-def fun_l9_n601()
- fun_l10_n676
-end
-
-def fun_l9_n602()
- fun_l10_n673
-end
-
-def fun_l9_n603()
- fun_l10_n400
-end
-
-def fun_l9_n604()
- fun_l10_n774
-end
-
-def fun_l9_n605()
- fun_l10_n717
-end
-
-def fun_l9_n606()
- fun_l10_n853
-end
-
-def fun_l9_n607()
- fun_l10_n336
-end
-
-def fun_l9_n608()
- fun_l10_n169
-end
-
-def fun_l9_n609()
- fun_l10_n7
-end
-
-def fun_l9_n610()
- fun_l10_n846
-end
-
-def fun_l9_n611()
- fun_l10_n87
-end
-
-def fun_l9_n612()
- fun_l10_n805
-end
-
-def fun_l9_n613()
- fun_l10_n591
-end
-
-def fun_l9_n614()
- fun_l10_n674
-end
-
-def fun_l9_n615()
- fun_l10_n796
-end
-
-def fun_l9_n616()
- fun_l10_n390
-end
-
-def fun_l9_n617()
- fun_l10_n107
-end
-
-def fun_l9_n618()
- fun_l10_n302
-end
-
-def fun_l9_n619()
- fun_l10_n848
-end
-
-def fun_l9_n620()
- fun_l10_n263
-end
-
-def fun_l9_n621()
- fun_l10_n380
-end
-
-def fun_l9_n622()
- fun_l10_n778
-end
-
-def fun_l9_n623()
- fun_l10_n593
-end
-
-def fun_l9_n624()
- fun_l10_n147
-end
-
-def fun_l9_n625()
- fun_l10_n683
-end
-
-def fun_l9_n626()
- fun_l10_n850
-end
-
-def fun_l9_n627()
- fun_l10_n545
-end
-
-def fun_l9_n628()
- fun_l10_n549
-end
-
-def fun_l9_n629()
- fun_l10_n692
-end
-
-def fun_l9_n630()
- fun_l10_n688
-end
-
-def fun_l9_n631()
- fun_l10_n656
-end
-
-def fun_l9_n632()
- fun_l10_n201
-end
-
-def fun_l9_n633()
- fun_l10_n216
-end
-
-def fun_l9_n634()
- fun_l10_n661
-end
-
-def fun_l9_n635()
- fun_l10_n670
-end
-
-def fun_l9_n636()
- fun_l10_n436
-end
-
-def fun_l9_n637()
- fun_l10_n591
-end
-
-def fun_l9_n638()
- fun_l10_n419
-end
-
-def fun_l9_n639()
- fun_l10_n133
-end
-
-def fun_l9_n640()
- fun_l10_n998
-end
-
-def fun_l9_n641()
- fun_l10_n20
-end
-
-def fun_l9_n642()
- fun_l10_n484
-end
-
-def fun_l9_n643()
- fun_l10_n349
-end
-
-def fun_l9_n644()
- fun_l10_n548
-end
-
-def fun_l9_n645()
- fun_l10_n67
-end
-
-def fun_l9_n646()
- fun_l10_n99
-end
-
-def fun_l9_n647()
- fun_l10_n758
-end
-
-def fun_l9_n648()
- fun_l10_n559
-end
-
-def fun_l9_n649()
- fun_l10_n518
-end
-
-def fun_l9_n650()
- fun_l10_n698
-end
-
-def fun_l9_n651()
- fun_l10_n807
-end
-
-def fun_l9_n652()
- fun_l10_n557
-end
-
-def fun_l9_n653()
- fun_l10_n53
-end
-
-def fun_l9_n654()
- fun_l10_n783
-end
-
-def fun_l9_n655()
- fun_l10_n687
-end
-
-def fun_l9_n656()
- fun_l10_n40
-end
-
-def fun_l9_n657()
- fun_l10_n758
-end
-
-def fun_l9_n658()
- fun_l10_n308
-end
-
-def fun_l9_n659()
- fun_l10_n828
-end
-
-def fun_l9_n660()
- fun_l10_n510
-end
-
-def fun_l9_n661()
- fun_l10_n621
-end
-
-def fun_l9_n662()
- fun_l10_n885
-end
-
-def fun_l9_n663()
- fun_l10_n765
-end
-
-def fun_l9_n664()
- fun_l10_n213
-end
-
-def fun_l9_n665()
- fun_l10_n530
-end
-
-def fun_l9_n666()
- fun_l10_n178
-end
-
-def fun_l9_n667()
- fun_l10_n550
-end
-
-def fun_l9_n668()
- fun_l10_n650
-end
-
-def fun_l9_n669()
- fun_l10_n695
-end
-
-def fun_l9_n670()
- fun_l10_n295
-end
-
-def fun_l9_n671()
- fun_l10_n672
-end
-
-def fun_l9_n672()
- fun_l10_n603
-end
-
-def fun_l9_n673()
- fun_l10_n394
-end
-
-def fun_l9_n674()
- fun_l10_n470
-end
-
-def fun_l9_n675()
- fun_l10_n869
-end
-
-def fun_l9_n676()
- fun_l10_n270
-end
-
-def fun_l9_n677()
- fun_l10_n933
-end
-
-def fun_l9_n678()
- fun_l10_n268
-end
-
-def fun_l9_n679()
- fun_l10_n862
-end
-
-def fun_l9_n680()
- fun_l10_n84
-end
-
-def fun_l9_n681()
- fun_l10_n370
-end
-
-def fun_l9_n682()
- fun_l10_n538
-end
-
-def fun_l9_n683()
- fun_l10_n752
-end
-
-def fun_l9_n684()
- fun_l10_n868
-end
-
-def fun_l9_n685()
- fun_l10_n278
-end
-
-def fun_l9_n686()
- fun_l10_n65
-end
-
-def fun_l9_n687()
- fun_l10_n713
-end
-
-def fun_l9_n688()
- fun_l10_n577
-end
-
-def fun_l9_n689()
- fun_l10_n508
-end
-
-def fun_l9_n690()
- fun_l10_n400
-end
-
-def fun_l9_n691()
- fun_l10_n830
-end
-
-def fun_l9_n692()
- fun_l10_n366
-end
-
-def fun_l9_n693()
- fun_l10_n545
-end
-
-def fun_l9_n694()
- fun_l10_n479
-end
-
-def fun_l9_n695()
- fun_l10_n978
-end
-
-def fun_l9_n696()
- fun_l10_n935
-end
-
-def fun_l9_n697()
- fun_l10_n235
-end
-
-def fun_l9_n698()
- fun_l10_n196
-end
-
-def fun_l9_n699()
- fun_l10_n508
-end
-
-def fun_l9_n700()
- fun_l10_n879
-end
-
-def fun_l9_n701()
- fun_l10_n81
-end
-
-def fun_l9_n702()
- fun_l10_n676
-end
-
-def fun_l9_n703()
- fun_l10_n276
-end
-
-def fun_l9_n704()
- fun_l10_n565
-end
-
-def fun_l9_n705()
- fun_l10_n98
-end
-
-def fun_l9_n706()
- fun_l10_n66
-end
-
-def fun_l9_n707()
- fun_l10_n894
-end
-
-def fun_l9_n708()
- fun_l10_n258
-end
-
-def fun_l9_n709()
- fun_l10_n465
-end
-
-def fun_l9_n710()
- fun_l10_n677
-end
-
-def fun_l9_n711()
- fun_l10_n644
-end
-
-def fun_l9_n712()
- fun_l10_n729
-end
-
-def fun_l9_n713()
- fun_l10_n222
-end
-
-def fun_l9_n714()
- fun_l10_n186
-end
-
-def fun_l9_n715()
- fun_l10_n387
-end
-
-def fun_l9_n716()
- fun_l10_n933
-end
-
-def fun_l9_n717()
- fun_l10_n280
-end
-
-def fun_l9_n718()
- fun_l10_n939
-end
-
-def fun_l9_n719()
- fun_l10_n993
-end
-
-def fun_l9_n720()
- fun_l10_n529
-end
-
-def fun_l9_n721()
- fun_l10_n189
-end
-
-def fun_l9_n722()
- fun_l10_n544
-end
-
-def fun_l9_n723()
- fun_l10_n655
-end
-
-def fun_l9_n724()
- fun_l10_n88
-end
-
-def fun_l9_n725()
- fun_l10_n448
-end
-
-def fun_l9_n726()
- fun_l10_n656
-end
-
-def fun_l9_n727()
- fun_l10_n106
-end
-
-def fun_l9_n728()
- fun_l10_n711
-end
-
-def fun_l9_n729()
- fun_l10_n400
-end
-
-def fun_l9_n730()
- fun_l10_n138
-end
-
-def fun_l9_n731()
- fun_l10_n90
-end
-
-def fun_l9_n732()
- fun_l10_n290
-end
-
-def fun_l9_n733()
- fun_l10_n563
-end
-
-def fun_l9_n734()
- fun_l10_n103
-end
-
-def fun_l9_n735()
- fun_l10_n115
-end
-
-def fun_l9_n736()
- fun_l10_n771
-end
-
-def fun_l9_n737()
- fun_l10_n291
-end
-
-def fun_l9_n738()
- fun_l10_n46
-end
-
-def fun_l9_n739()
- fun_l10_n872
-end
-
-def fun_l9_n740()
- fun_l10_n871
-end
-
-def fun_l9_n741()
- fun_l10_n190
-end
-
-def fun_l9_n742()
- fun_l10_n641
-end
-
-def fun_l9_n743()
- fun_l10_n951
-end
-
-def fun_l9_n744()
- fun_l10_n248
-end
-
-def fun_l9_n745()
- fun_l10_n275
-end
-
-def fun_l9_n746()
- fun_l10_n943
-end
-
-def fun_l9_n747()
- fun_l10_n995
-end
-
-def fun_l9_n748()
- fun_l10_n194
-end
-
-def fun_l9_n749()
- fun_l10_n121
-end
-
-def fun_l9_n750()
- fun_l10_n707
-end
-
-def fun_l9_n751()
- fun_l10_n591
-end
-
-def fun_l9_n752()
- fun_l10_n616
-end
-
-def fun_l9_n753()
- fun_l10_n155
-end
-
-def fun_l9_n754()
- fun_l10_n779
-end
-
-def fun_l9_n755()
- fun_l10_n449
-end
-
-def fun_l9_n756()
- fun_l10_n937
-end
-
-def fun_l9_n757()
- fun_l10_n571
-end
-
-def fun_l9_n758()
- fun_l10_n892
-end
-
-def fun_l9_n759()
- fun_l10_n441
-end
-
-def fun_l9_n760()
- fun_l10_n686
-end
-
-def fun_l9_n761()
- fun_l10_n55
-end
-
-def fun_l9_n762()
- fun_l10_n852
-end
-
-def fun_l9_n763()
- fun_l10_n102
-end
-
-def fun_l9_n764()
- fun_l10_n207
-end
-
-def fun_l9_n765()
- fun_l10_n269
-end
-
-def fun_l9_n766()
- fun_l10_n422
-end
-
-def fun_l9_n767()
- fun_l10_n589
-end
-
-def fun_l9_n768()
- fun_l10_n406
-end
-
-def fun_l9_n769()
- fun_l10_n88
-end
-
-def fun_l9_n770()
- fun_l10_n441
-end
-
-def fun_l9_n771()
- fun_l10_n506
-end
-
-def fun_l9_n772()
- fun_l10_n797
-end
-
-def fun_l9_n773()
- fun_l10_n639
-end
-
-def fun_l9_n774()
- fun_l10_n390
-end
-
-def fun_l9_n775()
- fun_l10_n511
-end
-
-def fun_l9_n776()
- fun_l10_n353
-end
-
-def fun_l9_n777()
- fun_l10_n137
-end
-
-def fun_l9_n778()
- fun_l10_n692
-end
-
-def fun_l9_n779()
- fun_l10_n522
-end
-
-def fun_l9_n780()
- fun_l10_n532
-end
-
-def fun_l9_n781()
- fun_l10_n4
-end
-
-def fun_l9_n782()
- fun_l10_n548
-end
-
-def fun_l9_n783()
- fun_l10_n386
-end
-
-def fun_l9_n784()
- fun_l10_n932
-end
-
-def fun_l9_n785()
- fun_l10_n552
-end
-
-def fun_l9_n786()
- fun_l10_n215
-end
-
-def fun_l9_n787()
- fun_l10_n981
-end
-
-def fun_l9_n788()
- fun_l10_n379
-end
-
-def fun_l9_n789()
- fun_l10_n208
-end
-
-def fun_l9_n790()
- fun_l10_n252
-end
-
-def fun_l9_n791()
- fun_l10_n471
-end
-
-def fun_l9_n792()
- fun_l10_n300
-end
-
-def fun_l9_n793()
- fun_l10_n877
-end
-
-def fun_l9_n794()
- fun_l10_n92
-end
-
-def fun_l9_n795()
- fun_l10_n75
-end
-
-def fun_l9_n796()
- fun_l10_n837
-end
-
-def fun_l9_n797()
- fun_l10_n328
-end
-
-def fun_l9_n798()
- fun_l10_n454
-end
-
-def fun_l9_n799()
- fun_l10_n392
-end
-
-def fun_l9_n800()
- fun_l10_n115
-end
-
-def fun_l9_n801()
- fun_l10_n966
-end
-
-def fun_l9_n802()
- fun_l10_n565
-end
-
-def fun_l9_n803()
- fun_l10_n268
-end
-
-def fun_l9_n804()
- fun_l10_n13
-end
-
-def fun_l9_n805()
- fun_l10_n484
-end
-
-def fun_l9_n806()
- fun_l10_n893
-end
-
-def fun_l9_n807()
- fun_l10_n59
-end
-
-def fun_l9_n808()
- fun_l10_n87
-end
-
-def fun_l9_n809()
- fun_l10_n455
-end
-
-def fun_l9_n810()
- fun_l10_n972
-end
-
-def fun_l9_n811()
- fun_l10_n804
-end
-
-def fun_l9_n812()
- fun_l10_n20
-end
-
-def fun_l9_n813()
- fun_l10_n148
-end
-
-def fun_l9_n814()
- fun_l10_n284
-end
-
-def fun_l9_n815()
- fun_l10_n704
-end
-
-def fun_l9_n816()
- fun_l10_n346
-end
-
-def fun_l9_n817()
- fun_l10_n101
-end
-
-def fun_l9_n818()
- fun_l10_n543
-end
-
-def fun_l9_n819()
- fun_l10_n207
-end
-
-def fun_l9_n820()
- fun_l10_n256
-end
-
-def fun_l9_n821()
- fun_l10_n300
-end
-
-def fun_l9_n822()
- fun_l10_n69
-end
-
-def fun_l9_n823()
- fun_l10_n139
-end
-
-def fun_l9_n824()
- fun_l10_n566
-end
-
-def fun_l9_n825()
- fun_l10_n277
-end
-
-def fun_l9_n826()
- fun_l10_n75
-end
-
-def fun_l9_n827()
- fun_l10_n585
-end
-
-def fun_l9_n828()
- fun_l10_n2
-end
-
-def fun_l9_n829()
- fun_l10_n959
-end
-
-def fun_l9_n830()
- fun_l10_n982
-end
-
-def fun_l9_n831()
- fun_l10_n621
-end
-
-def fun_l9_n832()
- fun_l10_n680
-end
-
-def fun_l9_n833()
- fun_l10_n535
-end
-
-def fun_l9_n834()
- fun_l10_n732
-end
-
-def fun_l9_n835()
- fun_l10_n282
-end
-
-def fun_l9_n836()
- fun_l10_n825
-end
-
-def fun_l9_n837()
- fun_l10_n323
-end
-
-def fun_l9_n838()
- fun_l10_n963
-end
-
-def fun_l9_n839()
- fun_l10_n138
-end
-
-def fun_l9_n840()
- fun_l10_n370
-end
-
-def fun_l9_n841()
- fun_l10_n44
-end
-
-def fun_l9_n842()
- fun_l10_n694
-end
-
-def fun_l9_n843()
- fun_l10_n532
-end
-
-def fun_l9_n844()
- fun_l10_n987
-end
-
-def fun_l9_n845()
- fun_l10_n730
-end
-
-def fun_l9_n846()
- fun_l10_n376
-end
-
-def fun_l9_n847()
- fun_l10_n33
-end
-
-def fun_l9_n848()
- fun_l10_n381
-end
-
-def fun_l9_n849()
- fun_l10_n569
-end
-
-def fun_l9_n850()
- fun_l10_n264
-end
-
-def fun_l9_n851()
- fun_l10_n260
-end
-
-def fun_l9_n852()
- fun_l10_n750
-end
-
-def fun_l9_n853()
- fun_l10_n710
-end
-
-def fun_l9_n854()
- fun_l10_n665
-end
-
-def fun_l9_n855()
- fun_l10_n544
-end
-
-def fun_l9_n856()
- fun_l10_n306
-end
-
-def fun_l9_n857()
- fun_l10_n303
-end
-
-def fun_l9_n858()
- fun_l10_n754
-end
-
-def fun_l9_n859()
- fun_l10_n552
-end
-
-def fun_l9_n860()
- fun_l10_n404
-end
-
-def fun_l9_n861()
- fun_l10_n123
-end
-
-def fun_l9_n862()
- fun_l10_n240
-end
-
-def fun_l9_n863()
- fun_l10_n213
-end
-
-def fun_l9_n864()
- fun_l10_n697
-end
-
-def fun_l9_n865()
- fun_l10_n185
-end
-
-def fun_l9_n866()
- fun_l10_n245
-end
-
-def fun_l9_n867()
- fun_l10_n889
-end
-
-def fun_l9_n868()
- fun_l10_n64
-end
-
-def fun_l9_n869()
- fun_l10_n685
-end
-
-def fun_l9_n870()
- fun_l10_n653
-end
-
-def fun_l9_n871()
- fun_l10_n331
-end
-
-def fun_l9_n872()
- fun_l10_n548
-end
-
-def fun_l9_n873()
- fun_l10_n120
-end
-
-def fun_l9_n874()
- fun_l10_n511
-end
-
-def fun_l9_n875()
- fun_l10_n280
-end
-
-def fun_l9_n876()
- fun_l10_n250
-end
-
-def fun_l9_n877()
- fun_l10_n871
-end
-
-def fun_l9_n878()
- fun_l10_n356
-end
-
-def fun_l9_n879()
- fun_l10_n985
-end
-
-def fun_l9_n880()
- fun_l10_n285
-end
-
-def fun_l9_n881()
- fun_l10_n836
-end
-
-def fun_l9_n882()
- fun_l10_n906
-end
-
-def fun_l9_n883()
- fun_l10_n497
-end
-
-def fun_l9_n884()
- fun_l10_n320
-end
-
-def fun_l9_n885()
- fun_l10_n932
-end
-
-def fun_l9_n886()
- fun_l10_n470
-end
-
-def fun_l9_n887()
- fun_l10_n453
-end
-
-def fun_l9_n888()
- fun_l10_n208
-end
-
-def fun_l9_n889()
- fun_l10_n80
-end
-
-def fun_l9_n890()
- fun_l10_n943
-end
-
-def fun_l9_n891()
- fun_l10_n711
-end
-
-def fun_l9_n892()
- fun_l10_n548
-end
-
-def fun_l9_n893()
- fun_l10_n160
-end
-
-def fun_l9_n894()
- fun_l10_n44
-end
-
-def fun_l9_n895()
- fun_l10_n241
-end
-
-def fun_l9_n896()
- fun_l10_n390
-end
-
-def fun_l9_n897()
- fun_l10_n133
-end
-
-def fun_l9_n898()
- fun_l10_n3
-end
-
-def fun_l9_n899()
- fun_l10_n651
-end
-
-def fun_l9_n900()
- fun_l10_n556
-end
-
-def fun_l9_n901()
- fun_l10_n423
-end
-
-def fun_l9_n902()
- fun_l10_n521
-end
-
-def fun_l9_n903()
- fun_l10_n589
-end
-
-def fun_l9_n904()
- fun_l10_n284
-end
-
-def fun_l9_n905()
- fun_l10_n816
-end
-
-def fun_l9_n906()
- fun_l10_n326
-end
-
-def fun_l9_n907()
- fun_l10_n309
-end
-
-def fun_l9_n908()
- fun_l10_n656
-end
-
-def fun_l9_n909()
- fun_l10_n636
-end
-
-def fun_l9_n910()
- fun_l10_n633
-end
-
-def fun_l9_n911()
- fun_l10_n955
-end
-
-def fun_l9_n912()
- fun_l10_n807
-end
-
-def fun_l9_n913()
- fun_l10_n547
-end
-
-def fun_l9_n914()
- fun_l10_n300
-end
-
-def fun_l9_n915()
- fun_l10_n98
-end
-
-def fun_l9_n916()
- fun_l10_n848
-end
-
-def fun_l9_n917()
- fun_l10_n702
-end
-
-def fun_l9_n918()
- fun_l10_n102
-end
-
-def fun_l9_n919()
- fun_l10_n184
-end
-
-def fun_l9_n920()
- fun_l10_n91
-end
-
-def fun_l9_n921()
- fun_l10_n744
-end
-
-def fun_l9_n922()
- fun_l10_n923
-end
-
-def fun_l9_n923()
- fun_l10_n710
-end
-
-def fun_l9_n924()
- fun_l10_n137
-end
-
-def fun_l9_n925()
- fun_l10_n381
-end
-
-def fun_l9_n926()
- fun_l10_n795
-end
-
-def fun_l9_n927()
- fun_l10_n255
-end
-
-def fun_l9_n928()
- fun_l10_n191
-end
-
-def fun_l9_n929()
- fun_l10_n650
-end
-
-def fun_l9_n930()
- fun_l10_n928
-end
-
-def fun_l9_n931()
- fun_l10_n277
-end
-
-def fun_l9_n932()
- fun_l10_n269
-end
-
-def fun_l9_n933()
- fun_l10_n221
-end
-
-def fun_l9_n934()
- fun_l10_n2
-end
-
-def fun_l9_n935()
- fun_l10_n359
-end
-
-def fun_l9_n936()
- fun_l10_n403
-end
-
-def fun_l9_n937()
- fun_l10_n376
-end
-
-def fun_l9_n938()
- fun_l10_n309
-end
-
-def fun_l9_n939()
- fun_l10_n245
-end
-
-def fun_l9_n940()
- fun_l10_n973
-end
-
-def fun_l9_n941()
- fun_l10_n835
-end
-
-def fun_l9_n942()
- fun_l10_n884
-end
-
-def fun_l9_n943()
- fun_l10_n700
-end
-
-def fun_l9_n944()
- fun_l10_n809
-end
-
-def fun_l9_n945()
- fun_l10_n864
-end
-
-def fun_l9_n946()
- fun_l10_n577
-end
-
-def fun_l9_n947()
- fun_l10_n487
-end
-
-def fun_l9_n948()
- fun_l10_n205
-end
-
-def fun_l9_n949()
- fun_l10_n980
-end
-
-def fun_l9_n950()
- fun_l10_n855
-end
-
-def fun_l9_n951()
- fun_l10_n100
-end
-
-def fun_l9_n952()
- fun_l10_n514
-end
-
-def fun_l9_n953()
- fun_l10_n385
-end
-
-def fun_l9_n954()
- fun_l10_n676
-end
-
-def fun_l9_n955()
- fun_l10_n808
-end
-
-def fun_l9_n956()
- fun_l10_n111
-end
-
-def fun_l9_n957()
- fun_l10_n571
-end
-
-def fun_l9_n958()
- fun_l10_n895
-end
-
-def fun_l9_n959()
- fun_l10_n858
-end
-
-def fun_l9_n960()
- fun_l10_n74
-end
-
-def fun_l9_n961()
- fun_l10_n952
-end
-
-def fun_l9_n962()
- fun_l10_n164
-end
-
-def fun_l9_n963()
- fun_l10_n149
-end
-
-def fun_l9_n964()
- fun_l10_n705
-end
-
-def fun_l9_n965()
- fun_l10_n406
-end
-
-def fun_l9_n966()
- fun_l10_n569
-end
-
-def fun_l9_n967()
- fun_l10_n57
-end
-
-def fun_l9_n968()
- fun_l10_n402
-end
-
-def fun_l9_n969()
- fun_l10_n988
-end
-
-def fun_l9_n970()
- fun_l10_n114
-end
-
-def fun_l9_n971()
- fun_l10_n456
-end
-
-def fun_l9_n972()
- fun_l10_n346
-end
-
-def fun_l9_n973()
- fun_l10_n250
-end
-
-def fun_l9_n974()
- fun_l10_n684
-end
-
-def fun_l9_n975()
- fun_l10_n445
-end
-
-def fun_l9_n976()
- fun_l10_n628
-end
-
-def fun_l9_n977()
- fun_l10_n536
-end
-
-def fun_l9_n978()
- fun_l10_n937
-end
-
-def fun_l9_n979()
- fun_l10_n320
-end
-
-def fun_l9_n980()
- fun_l10_n412
-end
-
-def fun_l9_n981()
- fun_l10_n280
-end
-
-def fun_l9_n982()
- fun_l10_n435
-end
-
-def fun_l9_n983()
- fun_l10_n643
-end
-
-def fun_l9_n984()
- fun_l10_n702
-end
-
-def fun_l9_n985()
- fun_l10_n919
-end
-
-def fun_l9_n986()
- fun_l10_n127
-end
-
-def fun_l9_n987()
- fun_l10_n770
-end
-
-def fun_l9_n988()
- fun_l10_n673
-end
-
-def fun_l9_n989()
- fun_l10_n625
-end
-
-def fun_l9_n990()
- fun_l10_n196
-end
-
-def fun_l9_n991()
- fun_l10_n676
-end
-
-def fun_l9_n992()
- fun_l10_n634
-end
-
-def fun_l9_n993()
- fun_l10_n694
-end
-
-def fun_l9_n994()
- fun_l10_n46
-end
-
-def fun_l9_n995()
- fun_l10_n762
-end
-
-def fun_l9_n996()
- fun_l10_n163
-end
-
-def fun_l9_n997()
- fun_l10_n24
-end
-
-def fun_l9_n998()
- fun_l10_n279
-end
-
-def fun_l9_n999()
- fun_l10_n110
-end
-
-def fun_l10_n0()
- fun_l11_n375
-end
-
-def fun_l10_n1()
- fun_l11_n360
-end
-
-def fun_l10_n2()
- fun_l11_n220
-end
-
-def fun_l10_n3()
- fun_l11_n847
-end
-
-def fun_l10_n4()
- fun_l11_n431
-end
-
-def fun_l10_n5()
- fun_l11_n609
-end
-
-def fun_l10_n6()
- fun_l11_n584
-end
-
-def fun_l10_n7()
- fun_l11_n41
-end
-
-def fun_l10_n8()
- fun_l11_n259
-end
-
-def fun_l10_n9()
- fun_l11_n885
-end
-
-def fun_l10_n10()
- fun_l11_n353
-end
-
-def fun_l10_n11()
- fun_l11_n675
-end
-
-def fun_l10_n12()
- fun_l11_n208
-end
-
-def fun_l10_n13()
- fun_l11_n66
-end
-
-def fun_l10_n14()
- fun_l11_n420
-end
-
-def fun_l10_n15()
- fun_l11_n987
-end
-
-def fun_l10_n16()
- fun_l11_n703
-end
-
-def fun_l10_n17()
- fun_l11_n755
-end
-
-def fun_l10_n18()
- fun_l11_n996
-end
-
-def fun_l10_n19()
- fun_l11_n189
-end
-
-def fun_l10_n20()
- fun_l11_n950
-end
-
-def fun_l10_n21()
- fun_l11_n602
-end
-
-def fun_l10_n22()
- fun_l11_n971
-end
-
-def fun_l10_n23()
- fun_l11_n797
-end
-
-def fun_l10_n24()
- fun_l11_n950
-end
-
-def fun_l10_n25()
- fun_l11_n606
-end
-
-def fun_l10_n26()
- fun_l11_n201
-end
-
-def fun_l10_n27()
- fun_l11_n844
-end
-
-def fun_l10_n28()
- fun_l11_n546
-end
-
-def fun_l10_n29()
- fun_l11_n448
-end
-
-def fun_l10_n30()
- fun_l11_n717
-end
-
-def fun_l10_n31()
- fun_l11_n236
-end
-
-def fun_l10_n32()
- fun_l11_n49
-end
-
-def fun_l10_n33()
- fun_l11_n930
-end
-
-def fun_l10_n34()
- fun_l11_n818
-end
-
-def fun_l10_n35()
- fun_l11_n795
-end
-
-def fun_l10_n36()
- fun_l11_n933
-end
-
-def fun_l10_n37()
- fun_l11_n198
-end
-
-def fun_l10_n38()
- fun_l11_n666
-end
-
-def fun_l10_n39()
- fun_l11_n998
-end
-
-def fun_l10_n40()
- fun_l11_n570
-end
-
-def fun_l10_n41()
- fun_l11_n759
-end
-
-def fun_l10_n42()
- fun_l11_n306
-end
-
-def fun_l10_n43()
- fun_l11_n735
-end
-
-def fun_l10_n44()
- fun_l11_n730
-end
-
-def fun_l10_n45()
- fun_l11_n429
-end
-
-def fun_l10_n46()
- fun_l11_n239
-end
-
-def fun_l10_n47()
- fun_l11_n877
-end
-
-def fun_l10_n48()
- fun_l11_n615
-end
-
-def fun_l10_n49()
- fun_l11_n462
-end
-
-def fun_l10_n50()
- fun_l11_n187
-end
-
-def fun_l10_n51()
- fun_l11_n584
-end
-
-def fun_l10_n52()
- fun_l11_n565
-end
-
-def fun_l10_n53()
- fun_l11_n53
-end
-
-def fun_l10_n54()
- fun_l11_n69
-end
-
-def fun_l10_n55()
- fun_l11_n594
-end
-
-def fun_l10_n56()
- fun_l11_n307
-end
-
-def fun_l10_n57()
- fun_l11_n913
-end
-
-def fun_l10_n58()
- fun_l11_n814
-end
-
-def fun_l10_n59()
- fun_l11_n764
-end
-
-def fun_l10_n60()
- fun_l11_n367
-end
-
-def fun_l10_n61()
- fun_l11_n335
-end
-
-def fun_l10_n62()
- fun_l11_n166
-end
-
-def fun_l10_n63()
- fun_l11_n348
-end
-
-def fun_l10_n64()
- fun_l11_n175
-end
-
-def fun_l10_n65()
- fun_l11_n685
-end
-
-def fun_l10_n66()
- fun_l11_n804
-end
-
-def fun_l10_n67()
- fun_l11_n857
-end
-
-def fun_l10_n68()
- fun_l11_n361
-end
-
-def fun_l10_n69()
- fun_l11_n744
-end
-
-def fun_l10_n70()
- fun_l11_n902
-end
-
-def fun_l10_n71()
- fun_l11_n142
-end
-
-def fun_l10_n72()
- fun_l11_n129
-end
-
-def fun_l10_n73()
- fun_l11_n597
-end
-
-def fun_l10_n74()
- fun_l11_n416
-end
-
-def fun_l10_n75()
- fun_l11_n983
-end
-
-def fun_l10_n76()
- fun_l11_n504
-end
-
-def fun_l10_n77()
- fun_l11_n887
-end
-
-def fun_l10_n78()
- fun_l11_n114
-end
-
-def fun_l10_n79()
- fun_l11_n292
-end
-
-def fun_l10_n80()
- fun_l11_n635
-end
-
-def fun_l10_n81()
- fun_l11_n910
-end
-
-def fun_l10_n82()
- fun_l11_n82
-end
-
-def fun_l10_n83()
- fun_l11_n149
-end
-
-def fun_l10_n84()
- fun_l11_n240
-end
-
-def fun_l10_n85()
- fun_l11_n349
-end
-
-def fun_l10_n86()
- fun_l11_n873
-end
-
-def fun_l10_n87()
- fun_l11_n269
-end
-
-def fun_l10_n88()
- fun_l11_n81
-end
-
-def fun_l10_n89()
- fun_l11_n735
-end
-
-def fun_l10_n90()
- fun_l11_n21
-end
-
-def fun_l10_n91()
- fun_l11_n491
-end
-
-def fun_l10_n92()
- fun_l11_n808
-end
-
-def fun_l10_n93()
- fun_l11_n628
-end
-
-def fun_l10_n94()
- fun_l11_n456
-end
-
-def fun_l10_n95()
- fun_l11_n982
-end
-
-def fun_l10_n96()
- fun_l11_n440
-end
-
-def fun_l10_n97()
- fun_l11_n406
-end
-
-def fun_l10_n98()
- fun_l11_n920
-end
-
-def fun_l10_n99()
- fun_l11_n155
-end
-
-def fun_l10_n100()
- fun_l11_n673
-end
-
-def fun_l10_n101()
- fun_l11_n902
-end
-
-def fun_l10_n102()
- fun_l11_n321
-end
-
-def fun_l10_n103()
- fun_l11_n723
-end
-
-def fun_l10_n104()
- fun_l11_n914
-end
-
-def fun_l10_n105()
- fun_l11_n305
-end
-
-def fun_l10_n106()
- fun_l11_n16
-end
-
-def fun_l10_n107()
- fun_l11_n342
-end
-
-def fun_l10_n108()
- fun_l11_n808
-end
-
-def fun_l10_n109()
- fun_l11_n593
-end
-
-def fun_l10_n110()
- fun_l11_n912
-end
-
-def fun_l10_n111()
- fun_l11_n373
-end
-
-def fun_l10_n112()
- fun_l11_n491
-end
-
-def fun_l10_n113()
- fun_l11_n893
-end
-
-def fun_l10_n114()
- fun_l11_n776
-end
-
-def fun_l10_n115()
- fun_l11_n932
-end
-
-def fun_l10_n116()
- fun_l11_n347
-end
-
-def fun_l10_n117()
- fun_l11_n475
-end
-
-def fun_l10_n118()
- fun_l11_n656
-end
-
-def fun_l10_n119()
- fun_l11_n199
-end
-
-def fun_l10_n120()
- fun_l11_n888
-end
-
-def fun_l10_n121()
- fun_l11_n110
-end
-
-def fun_l10_n122()
- fun_l11_n520
-end
-
-def fun_l10_n123()
- fun_l11_n743
-end
-
-def fun_l10_n124()
- fun_l11_n830
-end
-
-def fun_l10_n125()
- fun_l11_n740
-end
-
-def fun_l10_n126()
- fun_l11_n693
-end
-
-def fun_l10_n127()
- fun_l11_n500
-end
-
-def fun_l10_n128()
- fun_l11_n311
-end
-
-def fun_l10_n129()
- fun_l11_n842
-end
-
-def fun_l10_n130()
- fun_l11_n769
-end
-
-def fun_l10_n131()
- fun_l11_n341
-end
-
-def fun_l10_n132()
- fun_l11_n367
-end
-
-def fun_l10_n133()
- fun_l11_n872
-end
-
-def fun_l10_n134()
- fun_l11_n460
-end
-
-def fun_l10_n135()
- fun_l11_n154
-end
-
-def fun_l10_n136()
- fun_l11_n953
-end
-
-def fun_l10_n137()
- fun_l11_n300
-end
-
-def fun_l10_n138()
- fun_l11_n466
-end
-
-def fun_l10_n139()
- fun_l11_n474
-end
-
-def fun_l10_n140()
- fun_l11_n145
-end
-
-def fun_l10_n141()
- fun_l11_n953
-end
-
-def fun_l10_n142()
- fun_l11_n613
-end
-
-def fun_l10_n143()
- fun_l11_n55
-end
-
-def fun_l10_n144()
- fun_l11_n847
-end
-
-def fun_l10_n145()
- fun_l11_n888
-end
-
-def fun_l10_n146()
- fun_l11_n721
-end
-
-def fun_l10_n147()
- fun_l11_n8
-end
-
-def fun_l10_n148()
- fun_l11_n595
-end
-
-def fun_l10_n149()
- fun_l11_n326
-end
-
-def fun_l10_n150()
- fun_l11_n134
-end
-
-def fun_l10_n151()
- fun_l11_n567
-end
-
-def fun_l10_n152()
- fun_l11_n87
-end
-
-def fun_l10_n153()
- fun_l11_n581
-end
-
-def fun_l10_n154()
- fun_l11_n973
-end
-
-def fun_l10_n155()
- fun_l11_n349
-end
-
-def fun_l10_n156()
- fun_l11_n550
-end
-
-def fun_l10_n157()
- fun_l11_n545
-end
-
-def fun_l10_n158()
- fun_l11_n325
-end
-
-def fun_l10_n159()
- fun_l11_n568
-end
-
-def fun_l10_n160()
- fun_l11_n768
-end
-
-def fun_l10_n161()
- fun_l11_n320
-end
-
-def fun_l10_n162()
- fun_l11_n667
-end
-
-def fun_l10_n163()
- fun_l11_n415
-end
-
-def fun_l10_n164()
- fun_l11_n185
-end
-
-def fun_l10_n165()
- fun_l11_n576
-end
-
-def fun_l10_n166()
- fun_l11_n436
-end
-
-def fun_l10_n167()
- fun_l11_n290
-end
-
-def fun_l10_n168()
- fun_l11_n783
-end
-
-def fun_l10_n169()
- fun_l11_n865
-end
-
-def fun_l10_n170()
- fun_l11_n837
-end
-
-def fun_l10_n171()
- fun_l11_n806
-end
-
-def fun_l10_n172()
- fun_l11_n847
-end
-
-def fun_l10_n173()
- fun_l11_n425
-end
-
-def fun_l10_n174()
- fun_l11_n740
-end
-
-def fun_l10_n175()
- fun_l11_n885
-end
-
-def fun_l10_n176()
- fun_l11_n787
-end
-
-def fun_l10_n177()
- fun_l11_n189
-end
-
-def fun_l10_n178()
- fun_l11_n122
-end
-
-def fun_l10_n179()
- fun_l11_n132
-end
-
-def fun_l10_n180()
- fun_l11_n778
-end
-
-def fun_l10_n181()
- fun_l11_n45
-end
-
-def fun_l10_n182()
- fun_l11_n856
-end
-
-def fun_l10_n183()
- fun_l11_n853
-end
-
-def fun_l10_n184()
- fun_l11_n370
-end
-
-def fun_l10_n185()
- fun_l11_n850
-end
-
-def fun_l10_n186()
- fun_l11_n623
-end
-
-def fun_l10_n187()
- fun_l11_n747
-end
-
-def fun_l10_n188()
- fun_l11_n792
-end
-
-def fun_l10_n189()
- fun_l11_n184
-end
-
-def fun_l10_n190()
- fun_l11_n683
-end
-
-def fun_l10_n191()
- fun_l11_n831
-end
-
-def fun_l10_n192()
- fun_l11_n741
-end
-
-def fun_l10_n193()
- fun_l11_n380
-end
-
-def fun_l10_n194()
- fun_l11_n183
-end
-
-def fun_l10_n195()
- fun_l11_n800
-end
-
-def fun_l10_n196()
- fun_l11_n466
-end
-
-def fun_l10_n197()
- fun_l11_n930
-end
-
-def fun_l10_n198()
- fun_l11_n680
-end
-
-def fun_l10_n199()
- fun_l11_n820
-end
-
-def fun_l10_n200()
- fun_l11_n699
-end
-
-def fun_l10_n201()
- fun_l11_n246
-end
-
-def fun_l10_n202()
- fun_l11_n238
-end
-
-def fun_l10_n203()
- fun_l11_n481
-end
-
-def fun_l10_n204()
- fun_l11_n586
-end
-
-def fun_l10_n205()
- fun_l11_n550
-end
-
-def fun_l10_n206()
- fun_l11_n662
-end
-
-def fun_l10_n207()
- fun_l11_n680
-end
-
-def fun_l10_n208()
- fun_l11_n544
-end
-
-def fun_l10_n209()
- fun_l11_n927
-end
-
-def fun_l10_n210()
- fun_l11_n383
-end
-
-def fun_l10_n211()
- fun_l11_n21
-end
-
-def fun_l10_n212()
- fun_l11_n628
-end
-
-def fun_l10_n213()
- fun_l11_n635
-end
-
-def fun_l10_n214()
- fun_l11_n648
-end
-
-def fun_l10_n215()
- fun_l11_n349
-end
-
-def fun_l10_n216()
- fun_l11_n242
-end
-
-def fun_l10_n217()
- fun_l11_n868
-end
-
-def fun_l10_n218()
- fun_l11_n804
-end
-
-def fun_l10_n219()
- fun_l11_n84
-end
-
-def fun_l10_n220()
- fun_l11_n970
-end
-
-def fun_l10_n221()
- fun_l11_n400
-end
-
-def fun_l10_n222()
- fun_l11_n133
-end
-
-def fun_l10_n223()
- fun_l11_n58
-end
-
-def fun_l10_n224()
- fun_l11_n790
-end
-
-def fun_l10_n225()
- fun_l11_n738
-end
-
-def fun_l10_n226()
- fun_l11_n682
-end
-
-def fun_l10_n227()
- fun_l11_n822
-end
-
-def fun_l10_n228()
- fun_l11_n630
-end
-
-def fun_l10_n229()
- fun_l11_n399
-end
-
-def fun_l10_n230()
- fun_l11_n177
-end
-
-def fun_l10_n231()
- fun_l11_n531
-end
-
-def fun_l10_n232()
- fun_l11_n671
-end
-
-def fun_l10_n233()
- fun_l11_n34
-end
-
-def fun_l10_n234()
- fun_l11_n305
-end
-
-def fun_l10_n235()
- fun_l11_n410
-end
-
-def fun_l10_n236()
- fun_l11_n72
-end
-
-def fun_l10_n237()
- fun_l11_n236
-end
-
-def fun_l10_n238()
- fun_l11_n135
-end
-
-def fun_l10_n239()
- fun_l11_n718
-end
-
-def fun_l10_n240()
- fun_l11_n453
-end
-
-def fun_l10_n241()
- fun_l11_n965
-end
-
-def fun_l10_n242()
- fun_l11_n919
-end
-
-def fun_l10_n243()
- fun_l11_n56
-end
-
-def fun_l10_n244()
- fun_l11_n853
-end
-
-def fun_l10_n245()
- fun_l11_n719
-end
-
-def fun_l10_n246()
- fun_l11_n45
-end
-
-def fun_l10_n247()
- fun_l11_n344
-end
-
-def fun_l10_n248()
- fun_l11_n907
-end
-
-def fun_l10_n249()
- fun_l11_n340
-end
-
-def fun_l10_n250()
- fun_l11_n625
-end
-
-def fun_l10_n251()
- fun_l11_n274
-end
-
-def fun_l10_n252()
- fun_l11_n392
-end
-
-def fun_l10_n253()
- fun_l11_n15
-end
-
-def fun_l10_n254()
- fun_l11_n474
-end
-
-def fun_l10_n255()
- fun_l11_n792
-end
-
-def fun_l10_n256()
- fun_l11_n580
-end
-
-def fun_l10_n257()
- fun_l11_n375
-end
-
-def fun_l10_n258()
- fun_l11_n169
-end
-
-def fun_l10_n259()
- fun_l11_n792
-end
-
-def fun_l10_n260()
- fun_l11_n553
-end
-
-def fun_l10_n261()
- fun_l11_n919
-end
-
-def fun_l10_n262()
- fun_l11_n814
-end
-
-def fun_l10_n263()
- fun_l11_n845
-end
-
-def fun_l10_n264()
- fun_l11_n337
-end
-
-def fun_l10_n265()
- fun_l11_n362
-end
-
-def fun_l10_n266()
- fun_l11_n400
-end
-
-def fun_l10_n267()
- fun_l11_n335
-end
-
-def fun_l10_n268()
- fun_l11_n142
-end
-
-def fun_l10_n269()
- fun_l11_n262
-end
-
-def fun_l10_n270()
- fun_l11_n969
-end
-
-def fun_l10_n271()
- fun_l11_n599
-end
-
-def fun_l10_n272()
- fun_l11_n763
-end
-
-def fun_l10_n273()
- fun_l11_n154
-end
-
-def fun_l10_n274()
- fun_l11_n289
-end
-
-def fun_l10_n275()
- fun_l11_n852
-end
-
-def fun_l10_n276()
- fun_l11_n994
-end
-
-def fun_l10_n277()
- fun_l11_n583
-end
-
-def fun_l10_n278()
- fun_l11_n580
-end
-
-def fun_l10_n279()
- fun_l11_n610
-end
-
-def fun_l10_n280()
- fun_l11_n624
-end
-
-def fun_l10_n281()
- fun_l11_n987
-end
-
-def fun_l10_n282()
- fun_l11_n973
-end
-
-def fun_l10_n283()
- fun_l11_n128
-end
-
-def fun_l10_n284()
- fun_l11_n864
-end
-
-def fun_l10_n285()
- fun_l11_n270
-end
-
-def fun_l10_n286()
- fun_l11_n878
-end
-
-def fun_l10_n287()
- fun_l11_n242
-end
-
-def fun_l10_n288()
- fun_l11_n214
-end
-
-def fun_l10_n289()
- fun_l11_n51
-end
-
-def fun_l10_n290()
- fun_l11_n122
-end
-
-def fun_l10_n291()
- fun_l11_n288
-end
-
-def fun_l10_n292()
- fun_l11_n751
-end
-
-def fun_l10_n293()
- fun_l11_n723
-end
-
-def fun_l10_n294()
- fun_l11_n884
-end
-
-def fun_l10_n295()
- fun_l11_n671
-end
-
-def fun_l10_n296()
- fun_l11_n949
-end
-
-def fun_l10_n297()
- fun_l11_n859
-end
-
-def fun_l10_n298()
- fun_l11_n293
-end
-
-def fun_l10_n299()
- fun_l11_n548
-end
-
-def fun_l10_n300()
- fun_l11_n659
-end
-
-def fun_l10_n301()
- fun_l11_n434
-end
-
-def fun_l10_n302()
- fun_l11_n251
-end
-
-def fun_l10_n303()
- fun_l11_n225
-end
-
-def fun_l10_n304()
- fun_l11_n242
-end
-
-def fun_l10_n305()
- fun_l11_n401
-end
-
-def fun_l10_n306()
- fun_l11_n603
-end
-
-def fun_l10_n307()
- fun_l11_n926
-end
-
-def fun_l10_n308()
- fun_l11_n922
-end
-
-def fun_l10_n309()
- fun_l11_n27
-end
-
-def fun_l10_n310()
- fun_l11_n834
-end
-
-def fun_l10_n311()
- fun_l11_n119
-end
-
-def fun_l10_n312()
- fun_l11_n391
-end
-
-def fun_l10_n313()
- fun_l11_n768
-end
-
-def fun_l10_n314()
- fun_l11_n147
-end
-
-def fun_l10_n315()
- fun_l11_n472
-end
-
-def fun_l10_n316()
- fun_l11_n107
-end
-
-def fun_l10_n317()
- fun_l11_n682
-end
-
-def fun_l10_n318()
- fun_l11_n670
-end
-
-def fun_l10_n319()
- fun_l11_n827
-end
-
-def fun_l10_n320()
- fun_l11_n812
-end
-
-def fun_l10_n321()
- fun_l11_n737
-end
-
-def fun_l10_n322()
- fun_l11_n446
-end
-
-def fun_l10_n323()
- fun_l11_n312
-end
-
-def fun_l10_n324()
- fun_l11_n697
-end
-
-def fun_l10_n325()
- fun_l11_n785
-end
-
-def fun_l10_n326()
- fun_l11_n379
-end
-
-def fun_l10_n327()
- fun_l11_n994
-end
-
-def fun_l10_n328()
- fun_l11_n651
-end
-
-def fun_l10_n329()
- fun_l11_n896
-end
-
-def fun_l10_n330()
- fun_l11_n289
-end
-
-def fun_l10_n331()
- fun_l11_n217
-end
-
-def fun_l10_n332()
- fun_l11_n502
-end
-
-def fun_l10_n333()
- fun_l11_n24
-end
-
-def fun_l10_n334()
- fun_l11_n187
-end
-
-def fun_l10_n335()
- fun_l11_n301
-end
-
-def fun_l10_n336()
- fun_l11_n640
-end
-
-def fun_l10_n337()
- fun_l11_n90
-end
-
-def fun_l10_n338()
- fun_l11_n226
-end
-
-def fun_l10_n339()
- fun_l11_n192
-end
-
-def fun_l10_n340()
- fun_l11_n737
-end
-
-def fun_l10_n341()
- fun_l11_n197
-end
-
-def fun_l10_n342()
- fun_l11_n859
-end
-
-def fun_l10_n343()
- fun_l11_n406
-end
-
-def fun_l10_n344()
- fun_l11_n179
-end
-
-def fun_l10_n345()
- fun_l11_n535
-end
-
-def fun_l10_n346()
- fun_l11_n330
-end
-
-def fun_l10_n347()
- fun_l11_n117
-end
-
-def fun_l10_n348()
- fun_l11_n399
-end
-
-def fun_l10_n349()
- fun_l11_n129
-end
-
-def fun_l10_n350()
- fun_l11_n295
-end
-
-def fun_l10_n351()
- fun_l11_n226
-end
-
-def fun_l10_n352()
- fun_l11_n551
-end
-
-def fun_l10_n353()
- fun_l11_n394
-end
-
-def fun_l10_n354()
- fun_l11_n120
-end
-
-def fun_l10_n355()
- fun_l11_n713
-end
-
-def fun_l10_n356()
- fun_l11_n873
-end
-
-def fun_l10_n357()
- fun_l11_n841
-end
-
-def fun_l10_n358()
- fun_l11_n708
-end
-
-def fun_l10_n359()
- fun_l11_n351
-end
-
-def fun_l10_n360()
- fun_l11_n753
-end
-
-def fun_l10_n361()
- fun_l11_n397
-end
-
-def fun_l10_n362()
- fun_l11_n986
-end
-
-def fun_l10_n363()
- fun_l11_n544
-end
-
-def fun_l10_n364()
- fun_l11_n476
-end
-
-def fun_l10_n365()
- fun_l11_n596
-end
-
-def fun_l10_n366()
- fun_l11_n922
-end
-
-def fun_l10_n367()
- fun_l11_n137
-end
-
-def fun_l10_n368()
- fun_l11_n87
-end
-
-def fun_l10_n369()
- fun_l11_n537
-end
-
-def fun_l10_n370()
- fun_l11_n678
-end
-
-def fun_l10_n371()
- fun_l11_n729
-end
-
-def fun_l10_n372()
- fun_l11_n286
-end
-
-def fun_l10_n373()
- fun_l11_n831
-end
-
-def fun_l10_n374()
- fun_l11_n130
-end
-
-def fun_l10_n375()
- fun_l11_n853
-end
-
-def fun_l10_n376()
- fun_l11_n876
-end
-
-def fun_l10_n377()
- fun_l11_n291
-end
-
-def fun_l10_n378()
- fun_l11_n823
-end
-
-def fun_l10_n379()
- fun_l11_n66
-end
-
-def fun_l10_n380()
- fun_l11_n460
-end
-
-def fun_l10_n381()
- fun_l11_n261
-end
-
-def fun_l10_n382()
- fun_l11_n632
-end
-
-def fun_l10_n383()
- fun_l11_n341
-end
-
-def fun_l10_n384()
- fun_l11_n158
-end
-
-def fun_l10_n385()
- fun_l11_n105
-end
-
-def fun_l10_n386()
- fun_l11_n735
-end
-
-def fun_l10_n387()
- fun_l11_n659
-end
-
-def fun_l10_n388()
- fun_l11_n232
-end
-
-def fun_l10_n389()
- fun_l11_n909
-end
-
-def fun_l10_n390()
- fun_l11_n594
-end
-
-def fun_l10_n391()
- fun_l11_n347
-end
-
-def fun_l10_n392()
- fun_l11_n650
-end
-
-def fun_l10_n393()
- fun_l11_n652
-end
-
-def fun_l10_n394()
- fun_l11_n129
-end
-
-def fun_l10_n395()
- fun_l11_n791
-end
-
-def fun_l10_n396()
- fun_l11_n933
-end
-
-def fun_l10_n397()
- fun_l11_n903
-end
-
-def fun_l10_n398()
- fun_l11_n301
-end
-
-def fun_l10_n399()
- fun_l11_n102
-end
-
-def fun_l10_n400()
- fun_l11_n865
-end
-
-def fun_l10_n401()
- fun_l11_n112
-end
-
-def fun_l10_n402()
- fun_l11_n242
-end
-
-def fun_l10_n403()
- fun_l11_n928
-end
-
-def fun_l10_n404()
- fun_l11_n289
-end
-
-def fun_l10_n405()
- fun_l11_n435
-end
-
-def fun_l10_n406()
- fun_l11_n303
-end
-
-def fun_l10_n407()
- fun_l11_n979
-end
-
-def fun_l10_n408()
- fun_l11_n785
-end
-
-def fun_l10_n409()
- fun_l11_n241
-end
-
-def fun_l10_n410()
- fun_l11_n32
-end
-
-def fun_l10_n411()
- fun_l11_n821
-end
-
-def fun_l10_n412()
- fun_l11_n748
-end
-
-def fun_l10_n413()
- fun_l11_n454
-end
-
-def fun_l10_n414()
- fun_l11_n555
-end
-
-def fun_l10_n415()
- fun_l11_n136
-end
-
-def fun_l10_n416()
- fun_l11_n996
-end
-
-def fun_l10_n417()
- fun_l11_n987
-end
-
-def fun_l10_n418()
- fun_l11_n987
-end
-
-def fun_l10_n419()
- fun_l11_n817
-end
-
-def fun_l10_n420()
- fun_l11_n674
-end
-
-def fun_l10_n421()
- fun_l11_n57
-end
-
-def fun_l10_n422()
- fun_l11_n43
-end
-
-def fun_l10_n423()
- fun_l11_n767
-end
-
-def fun_l10_n424()
- fun_l11_n924
-end
-
-def fun_l10_n425()
- fun_l11_n63
-end
-
-def fun_l10_n426()
- fun_l11_n636
-end
-
-def fun_l10_n427()
- fun_l11_n824
-end
-
-def fun_l10_n428()
- fun_l11_n266
-end
-
-def fun_l10_n429()
- fun_l11_n540
-end
-
-def fun_l10_n430()
- fun_l11_n992
-end
-
-def fun_l10_n431()
- fun_l11_n215
-end
-
-def fun_l10_n432()
- fun_l11_n28
-end
-
-def fun_l10_n433()
- fun_l11_n37
-end
-
-def fun_l10_n434()
- fun_l11_n38
-end
-
-def fun_l10_n435()
- fun_l11_n937
-end
-
-def fun_l10_n436()
- fun_l11_n419
-end
-
-def fun_l10_n437()
- fun_l11_n390
-end
-
-def fun_l10_n438()
- fun_l11_n987
-end
-
-def fun_l10_n439()
- fun_l11_n742
-end
-
-def fun_l10_n440()
- fun_l11_n173
-end
-
-def fun_l10_n441()
- fun_l11_n640
-end
-
-def fun_l10_n442()
- fun_l11_n111
-end
-
-def fun_l10_n443()
- fun_l11_n492
-end
-
-def fun_l10_n444()
- fun_l11_n659
-end
-
-def fun_l10_n445()
- fun_l11_n863
-end
-
-def fun_l10_n446()
- fun_l11_n938
-end
-
-def fun_l10_n447()
- fun_l11_n54
-end
-
-def fun_l10_n448()
- fun_l11_n224
-end
-
-def fun_l10_n449()
- fun_l11_n863
-end
-
-def fun_l10_n450()
- fun_l11_n80
-end
-
-def fun_l10_n451()
- fun_l11_n791
-end
-
-def fun_l10_n452()
- fun_l11_n93
-end
-
-def fun_l10_n453()
- fun_l11_n416
-end
-
-def fun_l10_n454()
- fun_l11_n610
-end
-
-def fun_l10_n455()
- fun_l11_n455
-end
-
-def fun_l10_n456()
- fun_l11_n834
-end
-
-def fun_l10_n457()
- fun_l11_n462
-end
-
-def fun_l10_n458()
- fun_l11_n69
-end
-
-def fun_l10_n459()
- fun_l11_n174
-end
-
-def fun_l10_n460()
- fun_l11_n657
-end
-
-def fun_l10_n461()
- fun_l11_n608
-end
-
-def fun_l10_n462()
- fun_l11_n248
-end
-
-def fun_l10_n463()
- fun_l11_n492
-end
-
-def fun_l10_n464()
- fun_l11_n125
-end
-
-def fun_l10_n465()
- fun_l11_n737
-end
-
-def fun_l10_n466()
- fun_l11_n354
-end
-
-def fun_l10_n467()
- fun_l11_n890
-end
-
-def fun_l10_n468()
- fun_l11_n753
-end
-
-def fun_l10_n469()
- fun_l11_n380
-end
-
-def fun_l10_n470()
- fun_l11_n428
-end
-
-def fun_l10_n471()
- fun_l11_n243
-end
-
-def fun_l10_n472()
- fun_l11_n532
-end
-
-def fun_l10_n473()
- fun_l11_n328
-end
-
-def fun_l10_n474()
- fun_l11_n922
-end
-
-def fun_l10_n475()
- fun_l11_n115
-end
-
-def fun_l10_n476()
- fun_l11_n705
-end
-
-def fun_l10_n477()
- fun_l11_n457
-end
-
-def fun_l10_n478()
- fun_l11_n201
-end
-
-def fun_l10_n479()
- fun_l11_n801
-end
-
-def fun_l10_n480()
- fun_l11_n492
-end
-
-def fun_l10_n481()
- fun_l11_n148
-end
-
-def fun_l10_n482()
- fun_l11_n802
-end
-
-def fun_l10_n483()
- fun_l11_n725
-end
-
-def fun_l10_n484()
- fun_l11_n835
-end
-
-def fun_l10_n485()
- fun_l11_n564
-end
-
-def fun_l10_n486()
- fun_l11_n803
-end
-
-def fun_l10_n487()
- fun_l11_n696
-end
-
-def fun_l10_n488()
- fun_l11_n171
-end
-
-def fun_l10_n489()
- fun_l11_n759
-end
-
-def fun_l10_n490()
- fun_l11_n728
-end
-
-def fun_l10_n491()
- fun_l11_n64
-end
-
-def fun_l10_n492()
- fun_l11_n717
-end
-
-def fun_l10_n493()
- fun_l11_n97
-end
-
-def fun_l10_n494()
- fun_l11_n157
-end
-
-def fun_l10_n495()
- fun_l11_n589
-end
-
-def fun_l10_n496()
- fun_l11_n642
-end
-
-def fun_l10_n497()
- fun_l11_n994
-end
-
-def fun_l10_n498()
- fun_l11_n566
-end
-
-def fun_l10_n499()
- fun_l11_n325
-end
-
-def fun_l10_n500()
- fun_l11_n905
-end
-
-def fun_l10_n501()
- fun_l11_n242
-end
-
-def fun_l10_n502()
- fun_l11_n135
-end
-
-def fun_l10_n503()
- fun_l11_n476
-end
-
-def fun_l10_n504()
- fun_l11_n63
-end
-
-def fun_l10_n505()
- fun_l11_n908
-end
-
-def fun_l10_n506()
- fun_l11_n51
-end
-
-def fun_l10_n507()
- fun_l11_n261
-end
-
-def fun_l10_n508()
- fun_l11_n680
-end
-
-def fun_l10_n509()
- fun_l11_n346
-end
-
-def fun_l10_n510()
- fun_l11_n490
-end
-
-def fun_l10_n511()
- fun_l11_n896
-end
-
-def fun_l10_n512()
- fun_l11_n788
-end
-
-def fun_l10_n513()
- fun_l11_n672
-end
-
-def fun_l10_n514()
- fun_l11_n17
-end
-
-def fun_l10_n515()
- fun_l11_n744
-end
-
-def fun_l10_n516()
- fun_l11_n90
-end
-
-def fun_l10_n517()
- fun_l11_n451
-end
-
-def fun_l10_n518()
- fun_l11_n942
-end
-
-def fun_l10_n519()
- fun_l11_n275
-end
-
-def fun_l10_n520()
- fun_l11_n422
-end
-
-def fun_l10_n521()
- fun_l11_n463
-end
-
-def fun_l10_n522()
- fun_l11_n198
-end
-
-def fun_l10_n523()
- fun_l11_n703
-end
-
-def fun_l10_n524()
- fun_l11_n745
-end
-
-def fun_l10_n525()
- fun_l11_n476
-end
-
-def fun_l10_n526()
- fun_l11_n122
-end
-
-def fun_l10_n527()
- fun_l11_n111
-end
-
-def fun_l10_n528()
- fun_l11_n354
-end
-
-def fun_l10_n529()
- fun_l11_n63
-end
-
-def fun_l10_n530()
- fun_l11_n652
-end
-
-def fun_l10_n531()
- fun_l11_n535
-end
-
-def fun_l10_n532()
- fun_l11_n990
-end
-
-def fun_l10_n533()
- fun_l11_n506
-end
-
-def fun_l10_n534()
- fun_l11_n741
-end
-
-def fun_l10_n535()
- fun_l11_n12
-end
-
-def fun_l10_n536()
- fun_l11_n138
-end
-
-def fun_l10_n537()
- fun_l11_n247
-end
-
-def fun_l10_n538()
- fun_l11_n469
-end
-
-def fun_l10_n539()
- fun_l11_n574
-end
-
-def fun_l10_n540()
- fun_l11_n474
-end
-
-def fun_l10_n541()
- fun_l11_n639
-end
-
-def fun_l10_n542()
- fun_l11_n932
-end
-
-def fun_l10_n543()
- fun_l11_n587
-end
-
-def fun_l10_n544()
- fun_l11_n502
-end
-
-def fun_l10_n545()
- fun_l11_n134
-end
-
-def fun_l10_n546()
- fun_l11_n470
-end
-
-def fun_l10_n547()
- fun_l11_n118
-end
-
-def fun_l10_n548()
- fun_l11_n253
-end
-
-def fun_l10_n549()
- fun_l11_n331
-end
-
-def fun_l10_n550()
- fun_l11_n461
-end
-
-def fun_l10_n551()
- fun_l11_n807
-end
-
-def fun_l10_n552()
- fun_l11_n266
-end
-
-def fun_l10_n553()
- fun_l11_n537
-end
-
-def fun_l10_n554()
- fun_l11_n649
-end
-
-def fun_l10_n555()
- fun_l11_n620
-end
-
-def fun_l10_n556()
- fun_l11_n646
-end
-
-def fun_l10_n557()
- fun_l11_n972
-end
-
-def fun_l10_n558()
- fun_l11_n311
-end
-
-def fun_l10_n559()
- fun_l11_n555
-end
-
-def fun_l10_n560()
- fun_l11_n930
-end
-
-def fun_l10_n561()
- fun_l11_n249
-end
-
-def fun_l10_n562()
- fun_l11_n270
-end
-
-def fun_l10_n563()
- fun_l11_n769
-end
-
-def fun_l10_n564()
- fun_l11_n281
-end
-
-def fun_l10_n565()
- fun_l11_n213
-end
-
-def fun_l10_n566()
- fun_l11_n849
-end
-
-def fun_l10_n567()
- fun_l11_n665
-end
-
-def fun_l10_n568()
- fun_l11_n339
-end
-
-def fun_l10_n569()
- fun_l11_n476
-end
-
-def fun_l10_n570()
- fun_l11_n732
-end
-
-def fun_l10_n571()
- fun_l11_n266
-end
-
-def fun_l10_n572()
- fun_l11_n85
-end
-
-def fun_l10_n573()
- fun_l11_n260
-end
-
-def fun_l10_n574()
- fun_l11_n275
-end
-
-def fun_l10_n575()
- fun_l11_n673
-end
-
-def fun_l10_n576()
- fun_l11_n252
-end
-
-def fun_l10_n577()
- fun_l11_n376
-end
-
-def fun_l10_n578()
- fun_l11_n407
-end
-
-def fun_l10_n579()
- fun_l11_n134
-end
-
-def fun_l10_n580()
- fun_l11_n825
-end
-
-def fun_l10_n581()
- fun_l11_n266
-end
-
-def fun_l10_n582()
- fun_l11_n40
-end
-
-def fun_l10_n583()
- fun_l11_n346
-end
-
-def fun_l10_n584()
- fun_l11_n503
-end
-
-def fun_l10_n585()
- fun_l11_n743
-end
-
-def fun_l10_n586()
- fun_l11_n199
-end
-
-def fun_l10_n587()
- fun_l11_n268
-end
-
-def fun_l10_n588()
- fun_l11_n6
-end
-
-def fun_l10_n589()
- fun_l11_n859
-end
-
-def fun_l10_n590()
- fun_l11_n499
-end
-
-def fun_l10_n591()
- fun_l11_n397
-end
-
-def fun_l10_n592()
- fun_l11_n580
-end
-
-def fun_l10_n593()
- fun_l11_n299
-end
-
-def fun_l10_n594()
- fun_l11_n691
-end
-
-def fun_l10_n595()
- fun_l11_n973
-end
-
-def fun_l10_n596()
- fun_l11_n987
-end
-
-def fun_l10_n597()
- fun_l11_n342
-end
-
-def fun_l10_n598()
- fun_l11_n556
-end
-
-def fun_l10_n599()
- fun_l11_n754
-end
-
-def fun_l10_n600()
- fun_l11_n54
-end
-
-def fun_l10_n601()
- fun_l11_n334
-end
-
-def fun_l10_n602()
- fun_l11_n6
-end
-
-def fun_l10_n603()
- fun_l11_n574
-end
-
-def fun_l10_n604()
- fun_l11_n615
-end
-
-def fun_l10_n605()
- fun_l11_n314
-end
-
-def fun_l10_n606()
- fun_l11_n659
-end
-
-def fun_l10_n607()
- fun_l11_n41
-end
-
-def fun_l10_n608()
- fun_l11_n119
-end
-
-def fun_l10_n609()
- fun_l11_n204
-end
-
-def fun_l10_n610()
- fun_l11_n952
-end
-
-def fun_l10_n611()
- fun_l11_n587
-end
-
-def fun_l10_n612()
- fun_l11_n87
-end
-
-def fun_l10_n613()
- fun_l11_n840
-end
-
-def fun_l10_n614()
- fun_l11_n520
-end
-
-def fun_l10_n615()
- fun_l11_n814
-end
-
-def fun_l10_n616()
- fun_l11_n595
-end
-
-def fun_l10_n617()
- fun_l11_n765
-end
-
-def fun_l10_n618()
- fun_l11_n383
-end
-
-def fun_l10_n619()
- fun_l11_n277
-end
-
-def fun_l10_n620()
- fun_l11_n897
-end
-
-def fun_l10_n621()
- fun_l11_n131
-end
-
-def fun_l10_n622()
- fun_l11_n674
-end
-
-def fun_l10_n623()
- fun_l11_n971
-end
-
-def fun_l10_n624()
- fun_l11_n503
-end
-
-def fun_l10_n625()
- fun_l11_n471
-end
-
-def fun_l10_n626()
- fun_l11_n805
-end
-
-def fun_l10_n627()
- fun_l11_n58
-end
-
-def fun_l10_n628()
- fun_l11_n784
-end
-
-def fun_l10_n629()
- fun_l11_n222
-end
-
-def fun_l10_n630()
- fun_l11_n382
-end
-
-def fun_l10_n631()
- fun_l11_n239
-end
-
-def fun_l10_n632()
- fun_l11_n53
-end
-
-def fun_l10_n633()
- fun_l11_n730
-end
-
-def fun_l10_n634()
- fun_l11_n522
-end
-
-def fun_l10_n635()
- fun_l11_n182
-end
-
-def fun_l10_n636()
- fun_l11_n837
-end
-
-def fun_l10_n637()
- fun_l11_n815
-end
-
-def fun_l10_n638()
- fun_l11_n754
-end
-
-def fun_l10_n639()
- fun_l11_n74
-end
-
-def fun_l10_n640()
- fun_l11_n695
-end
-
-def fun_l10_n641()
- fun_l11_n454
-end
-
-def fun_l10_n642()
- fun_l11_n250
-end
-
-def fun_l10_n643()
- fun_l11_n385
-end
-
-def fun_l10_n644()
- fun_l11_n115
-end
-
-def fun_l10_n645()
- fun_l11_n624
-end
-
-def fun_l10_n646()
- fun_l11_n697
-end
-
-def fun_l10_n647()
- fun_l11_n184
-end
-
-def fun_l10_n648()
- fun_l11_n921
-end
-
-def fun_l10_n649()
- fun_l11_n699
-end
-
-def fun_l10_n650()
- fun_l11_n952
-end
-
-def fun_l10_n651()
- fun_l11_n879
-end
-
-def fun_l10_n652()
- fun_l11_n569
-end
-
-def fun_l10_n653()
- fun_l11_n85
-end
-
-def fun_l10_n654()
- fun_l11_n316
-end
-
-def fun_l10_n655()
- fun_l11_n203
-end
-
-def fun_l10_n656()
- fun_l11_n424
-end
-
-def fun_l10_n657()
- fun_l11_n731
-end
-
-def fun_l10_n658()
- fun_l11_n65
-end
-
-def fun_l10_n659()
- fun_l11_n232
-end
-
-def fun_l10_n660()
- fun_l11_n306
-end
-
-def fun_l10_n661()
- fun_l11_n71
-end
-
-def fun_l10_n662()
- fun_l11_n577
-end
-
-def fun_l10_n663()
- fun_l11_n670
-end
-
-def fun_l10_n664()
- fun_l11_n905
-end
-
-def fun_l10_n665()
- fun_l11_n717
-end
-
-def fun_l10_n666()
- fun_l11_n198
-end
-
-def fun_l10_n667()
- fun_l11_n982
-end
-
-def fun_l10_n668()
- fun_l11_n933
-end
-
-def fun_l10_n669()
- fun_l11_n446
-end
-
-def fun_l10_n670()
- fun_l11_n913
-end
-
-def fun_l10_n671()
- fun_l11_n794
-end
-
-def fun_l10_n672()
- fun_l11_n604
-end
-
-def fun_l10_n673()
- fun_l11_n408
-end
-
-def fun_l10_n674()
- fun_l11_n297
-end
-
-def fun_l10_n675()
- fun_l11_n113
-end
-
-def fun_l10_n676()
- fun_l11_n197
-end
-
-def fun_l10_n677()
- fun_l11_n606
-end
-
-def fun_l10_n678()
- fun_l11_n333
-end
-
-def fun_l10_n679()
- fun_l11_n130
-end
-
-def fun_l10_n680()
- fun_l11_n893
-end
-
-def fun_l10_n681()
- fun_l11_n997
-end
-
-def fun_l10_n682()
- fun_l11_n826
-end
-
-def fun_l10_n683()
- fun_l11_n889
-end
-
-def fun_l10_n684()
- fun_l11_n887
-end
-
-def fun_l10_n685()
- fun_l11_n913
-end
-
-def fun_l10_n686()
- fun_l11_n563
-end
-
-def fun_l10_n687()
- fun_l11_n112
-end
-
-def fun_l10_n688()
- fun_l11_n527
-end
-
-def fun_l10_n689()
- fun_l11_n423
-end
-
-def fun_l10_n690()
- fun_l11_n906
-end
-
-def fun_l10_n691()
- fun_l11_n134
-end
-
-def fun_l10_n692()
- fun_l11_n549
-end
-
-def fun_l10_n693()
- fun_l11_n864
-end
-
-def fun_l10_n694()
- fun_l11_n750
-end
-
-def fun_l10_n695()
- fun_l11_n357
-end
-
-def fun_l10_n696()
- fun_l11_n79
-end
-
-def fun_l10_n697()
- fun_l11_n99
-end
-
-def fun_l10_n698()
- fun_l11_n638
-end
-
-def fun_l10_n699()
- fun_l11_n946
-end
-
-def fun_l10_n700()
- fun_l11_n498
-end
-
-def fun_l10_n701()
- fun_l11_n490
-end
-
-def fun_l10_n702()
- fun_l11_n860
-end
-
-def fun_l10_n703()
- fun_l11_n194
-end
-
-def fun_l10_n704()
- fun_l11_n130
-end
-
-def fun_l10_n705()
- fun_l11_n647
-end
-
-def fun_l10_n706()
- fun_l11_n162
-end
-
-def fun_l10_n707()
- fun_l11_n41
-end
-
-def fun_l10_n708()
- fun_l11_n583
-end
-
-def fun_l10_n709()
- fun_l11_n687
-end
-
-def fun_l10_n710()
- fun_l11_n83
-end
-
-def fun_l10_n711()
- fun_l11_n365
-end
-
-def fun_l10_n712()
- fun_l11_n797
-end
-
-def fun_l10_n713()
- fun_l11_n730
-end
-
-def fun_l10_n714()
- fun_l11_n844
-end
-
-def fun_l10_n715()
- fun_l11_n514
-end
-
-def fun_l10_n716()
- fun_l11_n212
-end
-
-def fun_l10_n717()
- fun_l11_n600
-end
-
-def fun_l10_n718()
- fun_l11_n823
-end
-
-def fun_l10_n719()
- fun_l11_n439
-end
-
-def fun_l10_n720()
- fun_l11_n361
-end
-
-def fun_l10_n721()
- fun_l11_n390
-end
-
-def fun_l10_n722()
- fun_l11_n10
-end
-
-def fun_l10_n723()
- fun_l11_n984
-end
-
-def fun_l10_n724()
- fun_l11_n193
-end
-
-def fun_l10_n725()
- fun_l11_n584
-end
-
-def fun_l10_n726()
- fun_l11_n552
-end
-
-def fun_l10_n727()
- fun_l11_n795
-end
-
-def fun_l10_n728()
- fun_l11_n958
-end
-
-def fun_l10_n729()
- fun_l11_n408
-end
-
-def fun_l10_n730()
- fun_l11_n584
-end
-
-def fun_l10_n731()
- fun_l11_n707
-end
-
-def fun_l10_n732()
- fun_l11_n291
-end
-
-def fun_l10_n733()
- fun_l11_n777
-end
-
-def fun_l10_n734()
- fun_l11_n634
-end
-
-def fun_l10_n735()
- fun_l11_n716
-end
-
-def fun_l10_n736()
- fun_l11_n167
-end
-
-def fun_l10_n737()
- fun_l11_n119
-end
-
-def fun_l10_n738()
- fun_l11_n835
-end
-
-def fun_l10_n739()
- fun_l11_n53
-end
-
-def fun_l10_n740()
- fun_l11_n743
-end
-
-def fun_l10_n741()
- fun_l11_n564
-end
-
-def fun_l10_n742()
- fun_l11_n917
-end
-
-def fun_l10_n743()
- fun_l11_n848
-end
-
-def fun_l10_n744()
- fun_l11_n135
-end
-
-def fun_l10_n745()
- fun_l11_n159
-end
-
-def fun_l10_n746()
- fun_l11_n374
-end
-
-def fun_l10_n747()
- fun_l11_n885
-end
-
-def fun_l10_n748()
- fun_l11_n0
-end
-
-def fun_l10_n749()
- fun_l11_n735
-end
-
-def fun_l10_n750()
- fun_l11_n995
-end
-
-def fun_l10_n751()
- fun_l11_n522
-end
-
-def fun_l10_n752()
- fun_l11_n166
-end
-
-def fun_l10_n753()
- fun_l11_n191
-end
-
-def fun_l10_n754()
- fun_l11_n820
-end
-
-def fun_l10_n755()
- fun_l11_n180
-end
-
-def fun_l10_n756()
- fun_l11_n480
-end
-
-def fun_l10_n757()
- fun_l11_n107
-end
-
-def fun_l10_n758()
- fun_l11_n263
-end
-
-def fun_l10_n759()
- fun_l11_n534
-end
-
-def fun_l10_n760()
- fun_l11_n442
-end
-
-def fun_l10_n761()
- fun_l11_n719
-end
-
-def fun_l10_n762()
- fun_l11_n778
-end
-
-def fun_l10_n763()
- fun_l11_n297
-end
-
-def fun_l10_n764()
- fun_l11_n582
-end
-
-def fun_l10_n765()
- fun_l11_n230
-end
-
-def fun_l10_n766()
- fun_l11_n921
-end
-
-def fun_l10_n767()
- fun_l11_n629
-end
-
-def fun_l10_n768()
- fun_l11_n473
-end
-
-def fun_l10_n769()
- fun_l11_n563
-end
-
-def fun_l10_n770()
- fun_l11_n61
-end
-
-def fun_l10_n771()
- fun_l11_n343
-end
-
-def fun_l10_n772()
- fun_l11_n713
-end
-
-def fun_l10_n773()
- fun_l11_n724
-end
-
-def fun_l10_n774()
- fun_l11_n454
-end
-
-def fun_l10_n775()
- fun_l11_n680
-end
-
-def fun_l10_n776()
- fun_l11_n620
-end
-
-def fun_l10_n777()
- fun_l11_n949
-end
-
-def fun_l10_n778()
- fun_l11_n208
-end
-
-def fun_l10_n779()
- fun_l11_n904
-end
-
-def fun_l10_n780()
- fun_l11_n88
-end
-
-def fun_l10_n781()
- fun_l11_n710
-end
-
-def fun_l10_n782()
- fun_l11_n875
-end
-
-def fun_l10_n783()
- fun_l11_n970
-end
-
-def fun_l10_n784()
- fun_l11_n123
-end
-
-def fun_l10_n785()
- fun_l11_n420
-end
-
-def fun_l10_n786()
- fun_l11_n122
-end
-
-def fun_l10_n787()
- fun_l11_n200
-end
-
-def fun_l10_n788()
- fun_l11_n716
-end
-
-def fun_l10_n789()
- fun_l11_n592
-end
-
-def fun_l10_n790()
- fun_l11_n159
-end
-
-def fun_l10_n791()
- fun_l11_n852
-end
-
-def fun_l10_n792()
- fun_l11_n913
-end
-
-def fun_l10_n793()
- fun_l11_n305
-end
-
-def fun_l10_n794()
- fun_l11_n123
-end
-
-def fun_l10_n795()
- fun_l11_n210
-end
-
-def fun_l10_n796()
- fun_l11_n416
-end
-
-def fun_l10_n797()
- fun_l11_n800
-end
-
-def fun_l10_n798()
- fun_l11_n689
-end
-
-def fun_l10_n799()
- fun_l11_n358
-end
-
-def fun_l10_n800()
- fun_l11_n542
-end
-
-def fun_l10_n801()
- fun_l11_n715
-end
-
-def fun_l10_n802()
- fun_l11_n879
-end
-
-def fun_l10_n803()
- fun_l11_n414
-end
-
-def fun_l10_n804()
- fun_l11_n623
-end
-
-def fun_l10_n805()
- fun_l11_n282
-end
-
-def fun_l10_n806()
- fun_l11_n719
-end
-
-def fun_l10_n807()
- fun_l11_n111
-end
-
-def fun_l10_n808()
- fun_l11_n348
-end
-
-def fun_l10_n809()
- fun_l11_n836
-end
-
-def fun_l10_n810()
- fun_l11_n878
-end
-
-def fun_l10_n811()
- fun_l11_n569
-end
-
-def fun_l10_n812()
- fun_l11_n701
-end
-
-def fun_l10_n813()
- fun_l11_n602
-end
-
-def fun_l10_n814()
- fun_l11_n746
-end
-
-def fun_l10_n815()
- fun_l11_n892
-end
-
-def fun_l10_n816()
- fun_l11_n150
-end
-
-def fun_l10_n817()
- fun_l11_n804
-end
-
-def fun_l10_n818()
- fun_l11_n459
-end
-
-def fun_l10_n819()
- fun_l11_n932
-end
-
-def fun_l10_n820()
- fun_l11_n492
-end
-
-def fun_l10_n821()
- fun_l11_n351
-end
-
-def fun_l10_n822()
- fun_l11_n933
-end
-
-def fun_l10_n823()
- fun_l11_n328
-end
-
-def fun_l10_n824()
- fun_l11_n75
-end
-
-def fun_l10_n825()
- fun_l11_n935
-end
-
-def fun_l10_n826()
- fun_l11_n495
-end
-
-def fun_l10_n827()
- fun_l11_n328
-end
-
-def fun_l10_n828()
- fun_l11_n888
-end
-
-def fun_l10_n829()
- fun_l11_n547
-end
-
-def fun_l10_n830()
- fun_l11_n315
-end
-
-def fun_l10_n831()
- fun_l11_n243
-end
-
-def fun_l10_n832()
- fun_l11_n972
-end
-
-def fun_l10_n833()
- fun_l11_n33
-end
-
-def fun_l10_n834()
- fun_l11_n765
-end
-
-def fun_l10_n835()
- fun_l11_n614
-end
-
-def fun_l10_n836()
- fun_l11_n686
-end
-
-def fun_l10_n837()
- fun_l11_n373
-end
-
-def fun_l10_n838()
- fun_l11_n534
-end
-
-def fun_l10_n839()
- fun_l11_n375
-end
-
-def fun_l10_n840()
- fun_l11_n297
-end
-
-def fun_l10_n841()
- fun_l11_n107
-end
-
-def fun_l10_n842()
- fun_l11_n409
-end
-
-def fun_l10_n843()
- fun_l11_n24
-end
-
-def fun_l10_n844()
- fun_l11_n43
-end
-
-def fun_l10_n845()
- fun_l11_n93
-end
-
-def fun_l10_n846()
- fun_l11_n667
-end
-
-def fun_l10_n847()
- fun_l11_n520
-end
-
-def fun_l10_n848()
- fun_l11_n109
-end
-
-def fun_l10_n849()
- fun_l11_n829
-end
-
-def fun_l10_n850()
- fun_l11_n946
-end
-
-def fun_l10_n851()
- fun_l11_n232
-end
-
-def fun_l10_n852()
- fun_l11_n568
-end
-
-def fun_l10_n853()
- fun_l11_n589
-end
-
-def fun_l10_n854()
- fun_l11_n76
-end
-
-def fun_l10_n855()
- fun_l11_n106
-end
-
-def fun_l10_n856()
- fun_l11_n46
-end
-
-def fun_l10_n857()
- fun_l11_n261
-end
-
-def fun_l10_n858()
- fun_l11_n788
-end
-
-def fun_l10_n859()
- fun_l11_n289
-end
-
-def fun_l10_n860()
- fun_l11_n269
-end
-
-def fun_l10_n861()
- fun_l11_n669
-end
-
-def fun_l10_n862()
- fun_l11_n925
-end
-
-def fun_l10_n863()
- fun_l11_n782
-end
-
-def fun_l10_n864()
- fun_l11_n432
-end
-
-def fun_l10_n865()
- fun_l11_n278
-end
-
-def fun_l10_n866()
- fun_l11_n380
-end
-
-def fun_l10_n867()
- fun_l11_n488
-end
-
-def fun_l10_n868()
- fun_l11_n718
-end
-
-def fun_l10_n869()
- fun_l11_n569
-end
-
-def fun_l10_n870()
- fun_l11_n59
-end
-
-def fun_l10_n871()
- fun_l11_n581
-end
-
-def fun_l10_n872()
- fun_l11_n128
-end
-
-def fun_l10_n873()
- fun_l11_n200
-end
-
-def fun_l10_n874()
- fun_l11_n258
-end
-
-def fun_l10_n875()
- fun_l11_n869
-end
-
-def fun_l10_n876()
- fun_l11_n337
-end
-
-def fun_l10_n877()
- fun_l11_n11
-end
-
-def fun_l10_n878()
- fun_l11_n968
-end
-
-def fun_l10_n879()
- fun_l11_n188
-end
-
-def fun_l10_n880()
- fun_l11_n361
-end
-
-def fun_l10_n881()
- fun_l11_n268
-end
-
-def fun_l10_n882()
- fun_l11_n518
-end
-
-def fun_l10_n883()
- fun_l11_n253
-end
-
-def fun_l10_n884()
- fun_l11_n159
-end
-
-def fun_l10_n885()
- fun_l11_n977
-end
-
-def fun_l10_n886()
- fun_l11_n602
-end
-
-def fun_l10_n887()
- fun_l11_n957
-end
-
-def fun_l10_n888()
- fun_l11_n53
-end
-
-def fun_l10_n889()
- fun_l11_n680
-end
-
-def fun_l10_n890()
- fun_l11_n6
-end
-
-def fun_l10_n891()
- fun_l11_n202
-end
-
-def fun_l10_n892()
- fun_l11_n25
-end
-
-def fun_l10_n893()
- fun_l11_n857
-end
-
-def fun_l10_n894()
- fun_l11_n505
-end
-
-def fun_l10_n895()
- fun_l11_n966
-end
-
-def fun_l10_n896()
- fun_l11_n381
-end
-
-def fun_l10_n897()
- fun_l11_n811
-end
-
-def fun_l10_n898()
- fun_l11_n863
-end
-
-def fun_l10_n899()
- fun_l11_n902
-end
-
-def fun_l10_n900()
- fun_l11_n711
-end
-
-def fun_l10_n901()
- fun_l11_n42
-end
-
-def fun_l10_n902()
- fun_l11_n324
-end
-
-def fun_l10_n903()
- fun_l11_n729
-end
-
-def fun_l10_n904()
- fun_l11_n535
-end
-
-def fun_l10_n905()
- fun_l11_n427
-end
-
-def fun_l10_n906()
- fun_l11_n469
-end
-
-def fun_l10_n907()
- fun_l11_n887
-end
-
-def fun_l10_n908()
- fun_l11_n822
-end
-
-def fun_l10_n909()
- fun_l11_n567
-end
-
-def fun_l10_n910()
- fun_l11_n2
-end
-
-def fun_l10_n911()
- fun_l11_n957
-end
-
-def fun_l10_n912()
- fun_l11_n850
-end
-
-def fun_l10_n913()
- fun_l11_n146
-end
-
-def fun_l10_n914()
- fun_l11_n318
-end
-
-def fun_l10_n915()
- fun_l11_n452
-end
-
-def fun_l10_n916()
- fun_l11_n366
-end
-
-def fun_l10_n917()
- fun_l11_n126
-end
-
-def fun_l10_n918()
- fun_l11_n56
-end
-
-def fun_l10_n919()
- fun_l11_n742
-end
-
-def fun_l10_n920()
- fun_l11_n1
-end
-
-def fun_l10_n921()
- fun_l11_n778
-end
-
-def fun_l10_n922()
- fun_l11_n703
-end
-
-def fun_l10_n923()
- fun_l11_n622
-end
-
-def fun_l10_n924()
- fun_l11_n942
-end
-
-def fun_l10_n925()
- fun_l11_n909
-end
-
-def fun_l10_n926()
- fun_l11_n98
-end
-
-def fun_l10_n927()
- fun_l11_n518
-end
-
-def fun_l10_n928()
- fun_l11_n932
-end
-
-def fun_l10_n929()
- fun_l11_n768
-end
-
-def fun_l10_n930()
- fun_l11_n846
-end
-
-def fun_l10_n931()
- fun_l11_n231
-end
-
-def fun_l10_n932()
- fun_l11_n944
-end
-
-def fun_l10_n933()
- fun_l11_n561
-end
-
-def fun_l10_n934()
- fun_l11_n587
-end
-
-def fun_l10_n935()
- fun_l11_n372
-end
-
-def fun_l10_n936()
- fun_l11_n322
-end
-
-def fun_l10_n937()
- fun_l11_n416
-end
-
-def fun_l10_n938()
- fun_l11_n191
-end
-
-def fun_l10_n939()
- fun_l11_n915
-end
-
-def fun_l10_n940()
- fun_l11_n215
-end
-
-def fun_l10_n941()
- fun_l11_n271
-end
-
-def fun_l10_n942()
- fun_l11_n890
-end
-
-def fun_l10_n943()
- fun_l11_n914
-end
-
-def fun_l10_n944()
- fun_l11_n313
-end
-
-def fun_l10_n945()
- fun_l11_n705
-end
-
-def fun_l10_n946()
- fun_l11_n725
-end
-
-def fun_l10_n947()
- fun_l11_n46
-end
-
-def fun_l10_n948()
- fun_l11_n793
-end
-
-def fun_l10_n949()
- fun_l11_n986
-end
-
-def fun_l10_n950()
- fun_l11_n607
-end
-
-def fun_l10_n951()
- fun_l11_n429
-end
-
-def fun_l10_n952()
- fun_l11_n251
-end
-
-def fun_l10_n953()
- fun_l11_n264
-end
-
-def fun_l10_n954()
- fun_l11_n677
-end
-
-def fun_l10_n955()
- fun_l11_n616
-end
-
-def fun_l10_n956()
- fun_l11_n264
-end
-
-def fun_l10_n957()
- fun_l11_n188
-end
-
-def fun_l10_n958()
- fun_l11_n834
-end
-
-def fun_l10_n959()
- fun_l11_n231
-end
-
-def fun_l10_n960()
- fun_l11_n584
-end
-
-def fun_l10_n961()
- fun_l11_n153
-end
-
-def fun_l10_n962()
- fun_l11_n215
-end
-
-def fun_l10_n963()
- fun_l11_n902
-end
-
-def fun_l10_n964()
- fun_l11_n600
-end
-
-def fun_l10_n965()
- fun_l11_n113
-end
-
-def fun_l10_n966()
- fun_l11_n264
-end
-
-def fun_l10_n967()
- fun_l11_n92
-end
-
-def fun_l10_n968()
- fun_l11_n346
-end
-
-def fun_l10_n969()
- fun_l11_n531
-end
-
-def fun_l10_n970()
- fun_l11_n134
-end
-
-def fun_l10_n971()
- fun_l11_n883
-end
-
-def fun_l10_n972()
- fun_l11_n662
-end
-
-def fun_l10_n973()
- fun_l11_n836
-end
-
-def fun_l10_n974()
- fun_l11_n418
-end
-
-def fun_l10_n975()
- fun_l11_n384
-end
-
-def fun_l10_n976()
- fun_l11_n57
-end
-
-def fun_l10_n977()
- fun_l11_n827
-end
-
-def fun_l10_n978()
- fun_l11_n114
-end
-
-def fun_l10_n979()
- fun_l11_n720
-end
-
-def fun_l10_n980()
- fun_l11_n328
-end
-
-def fun_l10_n981()
- fun_l11_n597
-end
-
-def fun_l10_n982()
- fun_l11_n941
-end
-
-def fun_l10_n983()
- fun_l11_n848
-end
-
-def fun_l10_n984()
- fun_l11_n269
-end
-
-def fun_l10_n985()
- fun_l11_n666
-end
-
-def fun_l10_n986()
- fun_l11_n538
-end
-
-def fun_l10_n987()
- fun_l11_n755
-end
-
-def fun_l10_n988()
- fun_l11_n747
-end
-
-def fun_l10_n989()
- fun_l11_n100
-end
-
-def fun_l10_n990()
- fun_l11_n995
-end
-
-def fun_l10_n991()
- fun_l11_n904
-end
-
-def fun_l10_n992()
- fun_l11_n948
-end
-
-def fun_l10_n993()
- fun_l11_n135
-end
-
-def fun_l10_n994()
- fun_l11_n120
-end
-
-def fun_l10_n995()
- fun_l11_n156
-end
-
-def fun_l10_n996()
- fun_l11_n264
-end
-
-def fun_l10_n997()
- fun_l11_n522
-end
-
-def fun_l10_n998()
- fun_l11_n105
-end
-
-def fun_l10_n999()
- fun_l11_n919
-end
-
-def fun_l11_n0()
- fun_l12_n731
-end
-
-def fun_l11_n1()
- fun_l12_n521
-end
-
-def fun_l11_n2()
- fun_l12_n875
-end
-
-def fun_l11_n3()
- fun_l12_n806
-end
-
-def fun_l11_n4()
- fun_l12_n211
-end
-
-def fun_l11_n5()
- fun_l12_n965
-end
-
-def fun_l11_n6()
- fun_l12_n770
-end
-
-def fun_l11_n7()
- fun_l12_n440
-end
-
-def fun_l11_n8()
- fun_l12_n900
-end
-
-def fun_l11_n9()
- fun_l12_n581
-end
-
-def fun_l11_n10()
- fun_l12_n427
-end
-
-def fun_l11_n11()
- fun_l12_n156
-end
-
-def fun_l11_n12()
- fun_l12_n941
-end
-
-def fun_l11_n13()
- fun_l12_n711
-end
-
-def fun_l11_n14()
- fun_l12_n69
-end
-
-def fun_l11_n15()
- fun_l12_n665
-end
-
-def fun_l11_n16()
- fun_l12_n325
-end
-
-def fun_l11_n17()
- fun_l12_n120
-end
-
-def fun_l11_n18()
- fun_l12_n455
-end
-
-def fun_l11_n19()
- fun_l12_n14
-end
-
-def fun_l11_n20()
- fun_l12_n909
-end
-
-def fun_l11_n21()
- fun_l12_n297
-end
-
-def fun_l11_n22()
- fun_l12_n81
-end
-
-def fun_l11_n23()
- fun_l12_n420
-end
-
-def fun_l11_n24()
- fun_l12_n439
-end
-
-def fun_l11_n25()
- fun_l12_n867
-end
-
-def fun_l11_n26()
- fun_l12_n147
-end
-
-def fun_l11_n27()
- fun_l12_n422
-end
-
-def fun_l11_n28()
- fun_l12_n338
-end
-
-def fun_l11_n29()
- fun_l12_n730
-end
-
-def fun_l11_n30()
- fun_l12_n15
-end
-
-def fun_l11_n31()
- fun_l12_n276
-end
-
-def fun_l11_n32()
- fun_l12_n298
-end
-
-def fun_l11_n33()
- fun_l12_n749
-end
-
-def fun_l11_n34()
- fun_l12_n255
-end
-
-def fun_l11_n35()
- fun_l12_n104
-end
-
-def fun_l11_n36()
- fun_l12_n91
-end
-
-def fun_l11_n37()
- fun_l12_n825
-end
-
-def fun_l11_n38()
- fun_l12_n983
-end
-
-def fun_l11_n39()
- fun_l12_n711
-end
-
-def fun_l11_n40()
- fun_l12_n991
-end
-
-def fun_l11_n41()
- fun_l12_n143
-end
-
-def fun_l11_n42()
- fun_l12_n579
-end
-
-def fun_l11_n43()
- fun_l12_n217
-end
-
-def fun_l11_n44()
- fun_l12_n353
-end
-
-def fun_l11_n45()
- fun_l12_n849
-end
-
-def fun_l11_n46()
- fun_l12_n452
-end
-
-def fun_l11_n47()
- fun_l12_n982
-end
-
-def fun_l11_n48()
- fun_l12_n201
-end
-
-def fun_l11_n49()
- fun_l12_n289
-end
-
-def fun_l11_n50()
- fun_l12_n419
-end
-
-def fun_l11_n51()
- fun_l12_n490
-end
-
-def fun_l11_n52()
- fun_l12_n969
-end
-
-def fun_l11_n53()
- fun_l12_n721
-end
-
-def fun_l11_n54()
- fun_l12_n657
-end
-
-def fun_l11_n55()
- fun_l12_n498
-end
-
-def fun_l11_n56()
- fun_l12_n44
-end
-
-def fun_l11_n57()
- fun_l12_n863
-end
-
-def fun_l11_n58()
- fun_l12_n366
-end
-
-def fun_l11_n59()
- fun_l12_n515
-end
-
-def fun_l11_n60()
- fun_l12_n302
-end
-
-def fun_l11_n61()
- fun_l12_n717
-end
-
-def fun_l11_n62()
- fun_l12_n165
-end
-
-def fun_l11_n63()
- fun_l12_n980
-end
-
-def fun_l11_n64()
- fun_l12_n988
-end
-
-def fun_l11_n65()
- fun_l12_n397
-end
-
-def fun_l11_n66()
- fun_l12_n648
-end
-
-def fun_l11_n67()
- fun_l12_n8
-end
-
-def fun_l11_n68()
- fun_l12_n164
-end
-
-def fun_l11_n69()
- fun_l12_n999
-end
-
-def fun_l11_n70()
- fun_l12_n434
-end
-
-def fun_l11_n71()
- fun_l12_n991
-end
-
-def fun_l11_n72()
- fun_l12_n596
-end
-
-def fun_l11_n73()
- fun_l12_n533
-end
-
-def fun_l11_n74()
- fun_l12_n222
-end
-
-def fun_l11_n75()
- fun_l12_n817
-end
-
-def fun_l11_n76()
- fun_l12_n740
-end
-
-def fun_l11_n77()
- fun_l12_n638
-end
-
-def fun_l11_n78()
- fun_l12_n81
-end
-
-def fun_l11_n79()
- fun_l12_n702
-end
-
-def fun_l11_n80()
- fun_l12_n783
-end
-
-def fun_l11_n81()
- fun_l12_n228
-end
-
-def fun_l11_n82()
- fun_l12_n487
-end
-
-def fun_l11_n83()
- fun_l12_n59
-end
-
-def fun_l11_n84()
- fun_l12_n910
-end
-
-def fun_l11_n85()
- fun_l12_n581
-end
-
-def fun_l11_n86()
- fun_l12_n947
-end
-
-def fun_l11_n87()
- fun_l12_n645
-end
-
-def fun_l11_n88()
- fun_l12_n505
-end
-
-def fun_l11_n89()
- fun_l12_n171
-end
-
-def fun_l11_n90()
- fun_l12_n713
-end
-
-def fun_l11_n91()
- fun_l12_n414
-end
-
-def fun_l11_n92()
- fun_l12_n427
-end
-
-def fun_l11_n93()
- fun_l12_n225
-end
-
-def fun_l11_n94()
- fun_l12_n655
-end
-
-def fun_l11_n95()
- fun_l12_n437
-end
-
-def fun_l11_n96()
- fun_l12_n879
-end
-
-def fun_l11_n97()
- fun_l12_n222
-end
-
-def fun_l11_n98()
- fun_l12_n642
-end
-
-def fun_l11_n99()
- fun_l12_n142
-end
-
-def fun_l11_n100()
- fun_l12_n612
-end
-
-def fun_l11_n101()
- fun_l12_n548
-end
-
-def fun_l11_n102()
- fun_l12_n535
-end
-
-def fun_l11_n103()
- fun_l12_n245
-end
-
-def fun_l11_n104()
- fun_l12_n0
-end
-
-def fun_l11_n105()
- fun_l12_n305
-end
-
-def fun_l11_n106()
- fun_l12_n674
-end
-
-def fun_l11_n107()
- fun_l12_n626
-end
-
-def fun_l11_n108()
- fun_l12_n335
-end
-
-def fun_l11_n109()
- fun_l12_n963
-end
-
-def fun_l11_n110()
- fun_l12_n958
-end
-
-def fun_l11_n111()
- fun_l12_n32
-end
-
-def fun_l11_n112()
- fun_l12_n149
-end
-
-def fun_l11_n113()
- fun_l12_n923
-end
-
-def fun_l11_n114()
- fun_l12_n853
-end
-
-def fun_l11_n115()
- fun_l12_n793
-end
-
-def fun_l11_n116()
- fun_l12_n354
-end
-
-def fun_l11_n117()
- fun_l12_n839
-end
-
-def fun_l11_n118()
- fun_l12_n995
-end
-
-def fun_l11_n119()
- fun_l12_n610
-end
-
-def fun_l11_n120()
- fun_l12_n147
-end
-
-def fun_l11_n121()
- fun_l12_n191
-end
-
-def fun_l11_n122()
- fun_l12_n237
-end
-
-def fun_l11_n123()
- fun_l12_n766
-end
-
-def fun_l11_n124()
- fun_l12_n830
-end
-
-def fun_l11_n125()
- fun_l12_n968
-end
-
-def fun_l11_n126()
- fun_l12_n163
-end
-
-def fun_l11_n127()
- fun_l12_n357
-end
-
-def fun_l11_n128()
- fun_l12_n741
-end
-
-def fun_l11_n129()
- fun_l12_n502
-end
-
-def fun_l11_n130()
- fun_l12_n569
-end
-
-def fun_l11_n131()
- fun_l12_n696
-end
-
-def fun_l11_n132()
- fun_l12_n326
-end
-
-def fun_l11_n133()
- fun_l12_n765
-end
-
-def fun_l11_n134()
- fun_l12_n126
-end
-
-def fun_l11_n135()
- fun_l12_n107
-end
-
-def fun_l11_n136()
- fun_l12_n8
-end
-
-def fun_l11_n137()
- fun_l12_n969
-end
-
-def fun_l11_n138()
- fun_l12_n49
-end
-
-def fun_l11_n139()
- fun_l12_n65
-end
-
-def fun_l11_n140()
- fun_l12_n631
-end
-
-def fun_l11_n141()
- fun_l12_n984
-end
-
-def fun_l11_n142()
- fun_l12_n520
-end
-
-def fun_l11_n143()
- fun_l12_n348
-end
-
-def fun_l11_n144()
- fun_l12_n51
-end
-
-def fun_l11_n145()
- fun_l12_n756
-end
-
-def fun_l11_n146()
- fun_l12_n981
-end
-
-def fun_l11_n147()
- fun_l12_n671
-end
-
-def fun_l11_n148()
- fun_l12_n4
-end
-
-def fun_l11_n149()
- fun_l12_n66
-end
-
-def fun_l11_n150()
- fun_l12_n445
-end
-
-def fun_l11_n151()
- fun_l12_n131
-end
-
-def fun_l11_n152()
- fun_l12_n927
-end
-
-def fun_l11_n153()
- fun_l12_n715
-end
-
-def fun_l11_n154()
- fun_l12_n767
-end
-
-def fun_l11_n155()
- fun_l12_n50
-end
-
-def fun_l11_n156()
- fun_l12_n360
-end
-
-def fun_l11_n157()
- fun_l12_n311
-end
-
-def fun_l11_n158()
- fun_l12_n509
-end
-
-def fun_l11_n159()
- fun_l12_n868
-end
-
-def fun_l11_n160()
- fun_l12_n185
-end
-
-def fun_l11_n161()
- fun_l12_n338
-end
-
-def fun_l11_n162()
- fun_l12_n539
-end
-
-def fun_l11_n163()
- fun_l12_n30
-end
-
-def fun_l11_n164()
- fun_l12_n485
-end
-
-def fun_l11_n165()
- fun_l12_n808
-end
-
-def fun_l11_n166()
- fun_l12_n78
-end
-
-def fun_l11_n167()
- fun_l12_n370
-end
-
-def fun_l11_n168()
- fun_l12_n1
-end
-
-def fun_l11_n169()
- fun_l12_n473
-end
-
-def fun_l11_n170()
- fun_l12_n362
-end
-
-def fun_l11_n171()
- fun_l12_n209
-end
-
-def fun_l11_n172()
- fun_l12_n431
-end
-
-def fun_l11_n173()
- fun_l12_n383
-end
-
-def fun_l11_n174()
- fun_l12_n214
-end
-
-def fun_l11_n175()
- fun_l12_n215
-end
-
-def fun_l11_n176()
- fun_l12_n639
-end
-
-def fun_l11_n177()
- fun_l12_n486
-end
-
-def fun_l11_n178()
- fun_l12_n486
-end
-
-def fun_l11_n179()
- fun_l12_n409
-end
-
-def fun_l11_n180()
- fun_l12_n558
-end
-
-def fun_l11_n181()
- fun_l12_n546
-end
-
-def fun_l11_n182()
- fun_l12_n439
-end
-
-def fun_l11_n183()
- fun_l12_n11
-end
-
-def fun_l11_n184()
- fun_l12_n304
-end
-
-def fun_l11_n185()
- fun_l12_n525
-end
-
-def fun_l11_n186()
- fun_l12_n886
-end
-
-def fun_l11_n187()
- fun_l12_n17
-end
-
-def fun_l11_n188()
- fun_l12_n11
-end
-
-def fun_l11_n189()
- fun_l12_n382
-end
-
-def fun_l11_n190()
- fun_l12_n185
-end
-
-def fun_l11_n191()
- fun_l12_n454
-end
-
-def fun_l11_n192()
- fun_l12_n23
-end
-
-def fun_l11_n193()
- fun_l12_n900
-end
-
-def fun_l11_n194()
- fun_l12_n233
-end
-
-def fun_l11_n195()
- fun_l12_n245
-end
-
-def fun_l11_n196()
- fun_l12_n474
-end
-
-def fun_l11_n197()
- fun_l12_n368
-end
-
-def fun_l11_n198()
- fun_l12_n80
-end
-
-def fun_l11_n199()
- fun_l12_n522
-end
-
-def fun_l11_n200()
- fun_l12_n439
-end
-
-def fun_l11_n201()
- fun_l12_n553
-end
-
-def fun_l11_n202()
- fun_l12_n713
-end
-
-def fun_l11_n203()
- fun_l12_n898
-end
-
-def fun_l11_n204()
- fun_l12_n571
-end
-
-def fun_l11_n205()
- fun_l12_n830
-end
-
-def fun_l11_n206()
- fun_l12_n404
-end
-
-def fun_l11_n207()
- fun_l12_n120
-end
-
-def fun_l11_n208()
- fun_l12_n147
-end
-
-def fun_l11_n209()
- fun_l12_n924
-end
-
-def fun_l11_n210()
- fun_l12_n988
-end
-
-def fun_l11_n211()
- fun_l12_n25
-end
-
-def fun_l11_n212()
- fun_l12_n848
-end
-
-def fun_l11_n213()
- fun_l12_n875
-end
-
-def fun_l11_n214()
- fun_l12_n718
-end
-
-def fun_l11_n215()
- fun_l12_n657
-end
-
-def fun_l11_n216()
- fun_l12_n364
-end
-
-def fun_l11_n217()
- fun_l12_n342
-end
-
-def fun_l11_n218()
- fun_l12_n16
-end
-
-def fun_l11_n219()
- fun_l12_n167
-end
-
-def fun_l11_n220()
- fun_l12_n719
-end
-
-def fun_l11_n221()
- fun_l12_n414
-end
-
-def fun_l11_n222()
- fun_l12_n874
-end
-
-def fun_l11_n223()
- fun_l12_n482
-end
-
-def fun_l11_n224()
- fun_l12_n191
-end
-
-def fun_l11_n225()
- fun_l12_n172
-end
-
-def fun_l11_n226()
- fun_l12_n768
-end
-
-def fun_l11_n227()
- fun_l12_n746
-end
-
-def fun_l11_n228()
- fun_l12_n460
-end
-
-def fun_l11_n229()
- fun_l12_n64
-end
-
-def fun_l11_n230()
- fun_l12_n747
-end
-
-def fun_l11_n231()
- fun_l12_n147
-end
-
-def fun_l11_n232()
- fun_l12_n157
-end
-
-def fun_l11_n233()
- fun_l12_n336
-end
-
-def fun_l11_n234()
- fun_l12_n904
-end
-
-def fun_l11_n235()
- fun_l12_n76
-end
-
-def fun_l11_n236()
- fun_l12_n499
-end
-
-def fun_l11_n237()
- fun_l12_n559
-end
-
-def fun_l11_n238()
- fun_l12_n949
-end
-
-def fun_l11_n239()
- fun_l12_n525
-end
-
-def fun_l11_n240()
- fun_l12_n741
-end
-
-def fun_l11_n241()
- fun_l12_n11
-end
-
-def fun_l11_n242()
- fun_l12_n449
-end
-
-def fun_l11_n243()
- fun_l12_n767
-end
-
-def fun_l11_n244()
- fun_l12_n94
-end
-
-def fun_l11_n245()
- fun_l12_n721
-end
-
-def fun_l11_n246()
- fun_l12_n592
-end
-
-def fun_l11_n247()
- fun_l12_n184
-end
-
-def fun_l11_n248()
- fun_l12_n166
-end
-
-def fun_l11_n249()
- fun_l12_n773
-end
-
-def fun_l11_n250()
- fun_l12_n334
-end
-
-def fun_l11_n251()
- fun_l12_n965
-end
-
-def fun_l11_n252()
- fun_l12_n154
-end
-
-def fun_l11_n253()
- fun_l12_n182
-end
-
-def fun_l11_n254()
- fun_l12_n298
-end
-
-def fun_l11_n255()
- fun_l12_n29
-end
-
-def fun_l11_n256()
- fun_l12_n409
-end
-
-def fun_l11_n257()
- fun_l12_n452
-end
-
-def fun_l11_n258()
- fun_l12_n369
-end
-
-def fun_l11_n259()
- fun_l12_n794
-end
-
-def fun_l11_n260()
- fun_l12_n210
-end
-
-def fun_l11_n261()
- fun_l12_n255
-end
-
-def fun_l11_n262()
- fun_l12_n801
-end
-
-def fun_l11_n263()
- fun_l12_n650
-end
-
-def fun_l11_n264()
- fun_l12_n612
-end
-
-def fun_l11_n265()
- fun_l12_n122
-end
-
-def fun_l11_n266()
- fun_l12_n70
-end
-
-def fun_l11_n267()
- fun_l12_n254
-end
-
-def fun_l11_n268()
- fun_l12_n104
-end
-
-def fun_l11_n269()
- fun_l12_n564
-end
-
-def fun_l11_n270()
- fun_l12_n256
-end
-
-def fun_l11_n271()
- fun_l12_n525
-end
-
-def fun_l11_n272()
- fun_l12_n734
-end
-
-def fun_l11_n273()
- fun_l12_n127
-end
-
-def fun_l11_n274()
- fun_l12_n705
-end
-
-def fun_l11_n275()
- fun_l12_n607
-end
-
-def fun_l11_n276()
- fun_l12_n681
-end
-
-def fun_l11_n277()
- fun_l12_n510
-end
-
-def fun_l11_n278()
- fun_l12_n889
-end
-
-def fun_l11_n279()
- fun_l12_n153
-end
-
-def fun_l11_n280()
- fun_l12_n457
-end
-
-def fun_l11_n281()
- fun_l12_n394
-end
-
-def fun_l11_n282()
- fun_l12_n628
-end
-
-def fun_l11_n283()
- fun_l12_n576
-end
-
-def fun_l11_n284()
- fun_l12_n294
-end
-
-def fun_l11_n285()
- fun_l12_n79
-end
-
-def fun_l11_n286()
- fun_l12_n505
-end
-
-def fun_l11_n287()
- fun_l12_n726
-end
-
-def fun_l11_n288()
- fun_l12_n171
-end
-
-def fun_l11_n289()
- fun_l12_n317
-end
-
-def fun_l11_n290()
- fun_l12_n350
-end
-
-def fun_l11_n291()
- fun_l12_n134
-end
-
-def fun_l11_n292()
- fun_l12_n595
-end
-
-def fun_l11_n293()
- fun_l12_n924
-end
-
-def fun_l11_n294()
- fun_l12_n713
-end
-
-def fun_l11_n295()
- fun_l12_n630
-end
-
-def fun_l11_n296()
- fun_l12_n444
-end
-
-def fun_l11_n297()
- fun_l12_n751
-end
-
-def fun_l11_n298()
- fun_l12_n324
-end
-
-def fun_l11_n299()
- fun_l12_n851
-end
-
-def fun_l11_n300()
- fun_l12_n883
-end
-
-def fun_l11_n301()
- fun_l12_n289
-end
-
-def fun_l11_n302()
- fun_l12_n427
-end
-
-def fun_l11_n303()
- fun_l12_n593
-end
-
-def fun_l11_n304()
- fun_l12_n380
-end
-
-def fun_l11_n305()
- fun_l12_n630
-end
-
-def fun_l11_n306()
- fun_l12_n245
-end
-
-def fun_l11_n307()
- fun_l12_n369
-end
-
-def fun_l11_n308()
- fun_l12_n641
-end
-
-def fun_l11_n309()
- fun_l12_n271
-end
-
-def fun_l11_n310()
- fun_l12_n67
-end
-
-def fun_l11_n311()
- fun_l12_n109
-end
-
-def fun_l11_n312()
- fun_l12_n559
-end
-
-def fun_l11_n313()
- fun_l12_n211
-end
-
-def fun_l11_n314()
- fun_l12_n396
-end
-
-def fun_l11_n315()
- fun_l12_n390
-end
-
-def fun_l11_n316()
- fun_l12_n72
-end
-
-def fun_l11_n317()
- fun_l12_n13
-end
-
-def fun_l11_n318()
- fun_l12_n690
-end
-
-def fun_l11_n319()
- fun_l12_n104
-end
-
-def fun_l11_n320()
- fun_l12_n671
-end
-
-def fun_l11_n321()
- fun_l12_n506
-end
-
-def fun_l11_n322()
- fun_l12_n679
-end
-
-def fun_l11_n323()
- fun_l12_n809
-end
-
-def fun_l11_n324()
- fun_l12_n750
-end
-
-def fun_l11_n325()
- fun_l12_n754
-end
-
-def fun_l11_n326()
- fun_l12_n6
-end
-
-def fun_l11_n327()
- fun_l12_n522
-end
-
-def fun_l11_n328()
- fun_l12_n414
-end
-
-def fun_l11_n329()
- fun_l12_n934
-end
-
-def fun_l11_n330()
- fun_l12_n653
-end
-
-def fun_l11_n331()
- fun_l12_n290
-end
-
-def fun_l11_n332()
- fun_l12_n262
-end
-
-def fun_l11_n333()
- fun_l12_n933
-end
-
-def fun_l11_n334()
- fun_l12_n332
-end
-
-def fun_l11_n335()
- fun_l12_n882
-end
-
-def fun_l11_n336()
- fun_l12_n448
-end
-
-def fun_l11_n337()
- fun_l12_n5
-end
-
-def fun_l11_n338()
- fun_l12_n993
-end
-
-def fun_l11_n339()
- fun_l12_n354
-end
-
-def fun_l11_n340()
- fun_l12_n643
-end
-
-def fun_l11_n341()
- fun_l12_n85
-end
-
-def fun_l11_n342()
- fun_l12_n957
-end
-
-def fun_l11_n343()
- fun_l12_n581
-end
-
-def fun_l11_n344()
- fun_l12_n837
-end
-
-def fun_l11_n345()
- fun_l12_n210
-end
-
-def fun_l11_n346()
- fun_l12_n45
-end
-
-def fun_l11_n347()
- fun_l12_n672
-end
-
-def fun_l11_n348()
- fun_l12_n559
-end
-
-def fun_l11_n349()
- fun_l12_n76
-end
-
-def fun_l11_n350()
- fun_l12_n500
-end
-
-def fun_l11_n351()
- fun_l12_n23
-end
-
-def fun_l11_n352()
- fun_l12_n364
-end
-
-def fun_l11_n353()
- fun_l12_n72
-end
-
-def fun_l11_n354()
- fun_l12_n953
-end
-
-def fun_l11_n355()
- fun_l12_n104
-end
-
-def fun_l11_n356()
- fun_l12_n446
-end
-
-def fun_l11_n357()
- fun_l12_n231
-end
-
-def fun_l11_n358()
- fun_l12_n923
-end
-
-def fun_l11_n359()
- fun_l12_n396
-end
-
-def fun_l11_n360()
- fun_l12_n748
-end
-
-def fun_l11_n361()
- fun_l12_n168
-end
-
-def fun_l11_n362()
- fun_l12_n329
-end
-
-def fun_l11_n363()
- fun_l12_n843
-end
-
-def fun_l11_n364()
- fun_l12_n864
-end
-
-def fun_l11_n365()
- fun_l12_n163
-end
-
-def fun_l11_n366()
- fun_l12_n811
-end
-
-def fun_l11_n367()
- fun_l12_n7
-end
-
-def fun_l11_n368()
- fun_l12_n105
-end
-
-def fun_l11_n369()
- fun_l12_n367
-end
-
-def fun_l11_n370()
- fun_l12_n650
-end
-
-def fun_l11_n371()
- fun_l12_n966
-end
-
-def fun_l11_n372()
- fun_l12_n248
-end
-
-def fun_l11_n373()
- fun_l12_n431
-end
-
-def fun_l11_n374()
- fun_l12_n329
-end
-
-def fun_l11_n375()
- fun_l12_n788
-end
-
-def fun_l11_n376()
- fun_l12_n407
-end
-
-def fun_l11_n377()
- fun_l12_n551
-end
-
-def fun_l11_n378()
- fun_l12_n703
-end
-
-def fun_l11_n379()
- fun_l12_n414
-end
-
-def fun_l11_n380()
- fun_l12_n23
-end
-
-def fun_l11_n381()
- fun_l12_n747
-end
-
-def fun_l11_n382()
- fun_l12_n10
-end
-
-def fun_l11_n383()
- fun_l12_n943
-end
-
-def fun_l11_n384()
- fun_l12_n26
-end
-
-def fun_l11_n385()
- fun_l12_n459
-end
-
-def fun_l11_n386()
- fun_l12_n256
-end
-
-def fun_l11_n387()
- fun_l12_n606
-end
-
-def fun_l11_n388()
- fun_l12_n138
-end
-
-def fun_l11_n389()
- fun_l12_n371
-end
-
-def fun_l11_n390()
- fun_l12_n304
-end
-
-def fun_l11_n391()
- fun_l12_n459
-end
-
-def fun_l11_n392()
- fun_l12_n968
-end
-
-def fun_l11_n393()
- fun_l12_n153
-end
-
-def fun_l11_n394()
- fun_l12_n742
-end
-
-def fun_l11_n395()
- fun_l12_n617
-end
-
-def fun_l11_n396()
- fun_l12_n562
-end
-
-def fun_l11_n397()
- fun_l12_n474
-end
-
-def fun_l11_n398()
- fun_l12_n633
-end
-
-def fun_l11_n399()
- fun_l12_n950
-end
-
-def fun_l11_n400()
- fun_l12_n370
-end
-
-def fun_l11_n401()
- fun_l12_n301
-end
-
-def fun_l11_n402()
- fun_l12_n74
-end
-
-def fun_l11_n403()
- fun_l12_n759
-end
-
-def fun_l11_n404()
- fun_l12_n634
-end
-
-def fun_l11_n405()
- fun_l12_n678
-end
-
-def fun_l11_n406()
- fun_l12_n761
-end
-
-def fun_l11_n407()
- fun_l12_n669
-end
-
-def fun_l11_n408()
- fun_l12_n737
-end
-
-def fun_l11_n409()
- fun_l12_n666
-end
-
-def fun_l11_n410()
- fun_l12_n43
-end
-
-def fun_l11_n411()
- fun_l12_n64
-end
-
-def fun_l11_n412()
- fun_l12_n956
-end
-
-def fun_l11_n413()
- fun_l12_n749
-end
-
-def fun_l11_n414()
- fun_l12_n22
-end
-
-def fun_l11_n415()
- fun_l12_n170
-end
-
-def fun_l11_n416()
- fun_l12_n113
-end
-
-def fun_l11_n417()
- fun_l12_n780
-end
-
-def fun_l11_n418()
- fun_l12_n855
-end
-
-def fun_l11_n419()
- fun_l12_n551
-end
-
-def fun_l11_n420()
- fun_l12_n101
-end
-
-def fun_l11_n421()
- fun_l12_n543
-end
-
-def fun_l11_n422()
- fun_l12_n773
-end
-
-def fun_l11_n423()
- fun_l12_n13
-end
-
-def fun_l11_n424()
- fun_l12_n997
-end
-
-def fun_l11_n425()
- fun_l12_n199
-end
-
-def fun_l11_n426()
- fun_l12_n281
-end
-
-def fun_l11_n427()
- fun_l12_n685
-end
-
-def fun_l11_n428()
- fun_l12_n588
-end
-
-def fun_l11_n429()
- fun_l12_n693
-end
-
-def fun_l11_n430()
- fun_l12_n595
-end
-
-def fun_l11_n431()
- fun_l12_n632
-end
-
-def fun_l11_n432()
- fun_l12_n923
-end
-
-def fun_l11_n433()
- fun_l12_n388
-end
-
-def fun_l11_n434()
- fun_l12_n307
-end
-
-def fun_l11_n435()
- fun_l12_n169
-end
-
-def fun_l11_n436()
- fun_l12_n13
-end
-
-def fun_l11_n437()
- fun_l12_n207
-end
-
-def fun_l11_n438()
- fun_l12_n711
-end
-
-def fun_l11_n439()
- fun_l12_n649
-end
-
-def fun_l11_n440()
- fun_l12_n817
-end
-
-def fun_l11_n441()
- fun_l12_n280
-end
-
-def fun_l11_n442()
- fun_l12_n833
-end
-
-def fun_l11_n443()
- fun_l12_n962
-end
-
-def fun_l11_n444()
- fun_l12_n431
-end
-
-def fun_l11_n445()
- fun_l12_n564
-end
-
-def fun_l11_n446()
- fun_l12_n107
-end
-
-def fun_l11_n447()
- fun_l12_n504
-end
-
-def fun_l11_n448()
- fun_l12_n680
-end
-
-def fun_l11_n449()
- fun_l12_n653
-end
-
-def fun_l11_n450()
- fun_l12_n549
-end
-
-def fun_l11_n451()
- fun_l12_n34
-end
-
-def fun_l11_n452()
- fun_l12_n607
-end
-
-def fun_l11_n453()
- fun_l12_n831
-end
-
-def fun_l11_n454()
- fun_l12_n974
-end
-
-def fun_l11_n455()
- fun_l12_n815
-end
-
-def fun_l11_n456()
- fun_l12_n700
-end
-
-def fun_l11_n457()
- fun_l12_n583
-end
-
-def fun_l11_n458()
- fun_l12_n479
-end
-
-def fun_l11_n459()
- fun_l12_n815
-end
-
-def fun_l11_n460()
- fun_l12_n45
-end
-
-def fun_l11_n461()
- fun_l12_n740
-end
-
-def fun_l11_n462()
- fun_l12_n637
-end
-
-def fun_l11_n463()
- fun_l12_n568
-end
-
-def fun_l11_n464()
- fun_l12_n340
-end
-
-def fun_l11_n465()
- fun_l12_n532
-end
-
-def fun_l11_n466()
- fun_l12_n13
-end
-
-def fun_l11_n467()
- fun_l12_n479
-end
-
-def fun_l11_n468()
- fun_l12_n263
-end
-
-def fun_l11_n469()
- fun_l12_n109
-end
-
-def fun_l11_n470()
- fun_l12_n290
-end
-
-def fun_l11_n471()
- fun_l12_n85
-end
-
-def fun_l11_n472()
- fun_l12_n360
-end
-
-def fun_l11_n473()
- fun_l12_n33
-end
-
-def fun_l11_n474()
- fun_l12_n603
-end
-
-def fun_l11_n475()
- fun_l12_n82
-end
-
-def fun_l11_n476()
- fun_l12_n250
-end
-
-def fun_l11_n477()
- fun_l12_n233
-end
-
-def fun_l11_n478()
- fun_l12_n530
-end
-
-def fun_l11_n479()
- fun_l12_n619
-end
-
-def fun_l11_n480()
- fun_l12_n756
-end
-
-def fun_l11_n481()
- fun_l12_n681
-end
-
-def fun_l11_n482()
- fun_l12_n981
-end
-
-def fun_l11_n483()
- fun_l12_n308
-end
-
-def fun_l11_n484()
- fun_l12_n955
-end
-
-def fun_l11_n485()
- fun_l12_n197
-end
-
-def fun_l11_n486()
- fun_l12_n620
-end
-
-def fun_l11_n487()
- fun_l12_n485
-end
-
-def fun_l11_n488()
- fun_l12_n866
-end
-
-def fun_l11_n489()
- fun_l12_n502
-end
-
-def fun_l11_n490()
- fun_l12_n16
-end
-
-def fun_l11_n491()
- fun_l12_n727
-end
-
-def fun_l11_n492()
- fun_l12_n13
-end
-
-def fun_l11_n493()
- fun_l12_n268
-end
-
-def fun_l11_n494()
- fun_l12_n501
-end
-
-def fun_l11_n495()
- fun_l12_n303
-end
-
-def fun_l11_n496()
- fun_l12_n223
-end
-
-def fun_l11_n497()
- fun_l12_n623
-end
-
-def fun_l11_n498()
- fun_l12_n479
-end
-
-def fun_l11_n499()
- fun_l12_n310
-end
-
-def fun_l11_n500()
- fun_l12_n337
-end
-
-def fun_l11_n501()
- fun_l12_n406
-end
-
-def fun_l11_n502()
- fun_l12_n727
-end
-
-def fun_l11_n503()
- fun_l12_n329
-end
-
-def fun_l11_n504()
- fun_l12_n675
-end
-
-def fun_l11_n505()
- fun_l12_n41
-end
-
-def fun_l11_n506()
- fun_l12_n176
-end
-
-def fun_l11_n507()
- fun_l12_n277
-end
-
-def fun_l11_n508()
- fun_l12_n767
-end
-
-def fun_l11_n509()
- fun_l12_n863
-end
-
-def fun_l11_n510()
- fun_l12_n459
-end
-
-def fun_l11_n511()
- fun_l12_n360
-end
-
-def fun_l11_n512()
- fun_l12_n870
-end
-
-def fun_l11_n513()
- fun_l12_n939
-end
-
-def fun_l11_n514()
- fun_l12_n697
-end
-
-def fun_l11_n515()
- fun_l12_n91
-end
-
-def fun_l11_n516()
- fun_l12_n382
-end
-
-def fun_l11_n517()
- fun_l12_n649
-end
-
-def fun_l11_n518()
- fun_l12_n455
-end
-
-def fun_l11_n519()
- fun_l12_n52
-end
-
-def fun_l11_n520()
- fun_l12_n857
-end
-
-def fun_l11_n521()
- fun_l12_n110
-end
-
-def fun_l11_n522()
- fun_l12_n21
-end
-
-def fun_l11_n523()
- fun_l12_n786
-end
-
-def fun_l11_n524()
- fun_l12_n56
-end
-
-def fun_l11_n525()
- fun_l12_n558
-end
-
-def fun_l11_n526()
- fun_l12_n923
-end
-
-def fun_l11_n527()
- fun_l12_n716
-end
-
-def fun_l11_n528()
- fun_l12_n20
-end
-
-def fun_l11_n529()
- fun_l12_n503
-end
-
-def fun_l11_n530()
- fun_l12_n221
-end
-
-def fun_l11_n531()
- fun_l12_n364
-end
-
-def fun_l11_n532()
- fun_l12_n412
-end
-
-def fun_l11_n533()
- fun_l12_n925
-end
-
-def fun_l11_n534()
- fun_l12_n638
-end
-
-def fun_l11_n535()
- fun_l12_n413
-end
-
-def fun_l11_n536()
- fun_l12_n873
-end
-
-def fun_l11_n537()
- fun_l12_n499
-end
-
-def fun_l11_n538()
- fun_l12_n231
-end
-
-def fun_l11_n539()
- fun_l12_n450
-end
-
-def fun_l11_n540()
- fun_l12_n137
-end
-
-def fun_l11_n541()
- fun_l12_n516
-end
-
-def fun_l11_n542()
- fun_l12_n479
-end
-
-def fun_l11_n543()
- fun_l12_n541
-end
-
-def fun_l11_n544()
- fun_l12_n42
-end
-
-def fun_l11_n545()
- fun_l12_n207
-end
-
-def fun_l11_n546()
- fun_l12_n340
-end
-
-def fun_l11_n547()
- fun_l12_n888
-end
-
-def fun_l11_n548()
- fun_l12_n443
-end
-
-def fun_l11_n549()
- fun_l12_n375
-end
-
-def fun_l11_n550()
- fun_l12_n972
-end
-
-def fun_l11_n551()
- fun_l12_n622
-end
-
-def fun_l11_n552()
- fun_l12_n958
-end
-
-def fun_l11_n553()
- fun_l12_n279
-end
-
-def fun_l11_n554()
- fun_l12_n498
-end
-
-def fun_l11_n555()
- fun_l12_n498
-end
-
-def fun_l11_n556()
- fun_l12_n502
-end
-
-def fun_l11_n557()
- fun_l12_n113
-end
-
-def fun_l11_n558()
- fun_l12_n636
-end
-
-def fun_l11_n559()
- fun_l12_n525
-end
-
-def fun_l11_n560()
- fun_l12_n541
-end
-
-def fun_l11_n561()
- fun_l12_n336
-end
-
-def fun_l11_n562()
- fun_l12_n787
-end
-
-def fun_l11_n563()
- fun_l12_n858
-end
-
-def fun_l11_n564()
- fun_l12_n772
-end
-
-def fun_l11_n565()
- fun_l12_n831
-end
-
-def fun_l11_n566()
- fun_l12_n95
-end
-
-def fun_l11_n567()
- fun_l12_n927
-end
-
-def fun_l11_n568()
- fun_l12_n888
-end
-
-def fun_l11_n569()
- fun_l12_n444
-end
-
-def fun_l11_n570()
- fun_l12_n23
-end
-
-def fun_l11_n571()
- fun_l12_n995
-end
-
-def fun_l11_n572()
- fun_l12_n372
-end
-
-def fun_l11_n573()
- fun_l12_n432
-end
-
-def fun_l11_n574()
- fun_l12_n156
-end
-
-def fun_l11_n575()
- fun_l12_n981
-end
-
-def fun_l11_n576()
- fun_l12_n328
-end
-
-def fun_l11_n577()
- fun_l12_n411
-end
-
-def fun_l11_n578()
- fun_l12_n734
-end
-
-def fun_l11_n579()
- fun_l12_n646
-end
-
-def fun_l11_n580()
- fun_l12_n214
-end
-
-def fun_l11_n581()
- fun_l12_n334
-end
-
-def fun_l11_n582()
- fun_l12_n800
-end
-
-def fun_l11_n583()
- fun_l12_n344
-end
-
-def fun_l11_n584()
- fun_l12_n672
-end
-
-def fun_l11_n585()
- fun_l12_n403
-end
-
-def fun_l11_n586()
- fun_l12_n351
-end
-
-def fun_l11_n587()
- fun_l12_n506
-end
-
-def fun_l11_n588()
- fun_l12_n878
-end
-
-def fun_l11_n589()
- fun_l12_n986
-end
-
-def fun_l11_n590()
- fun_l12_n524
-end
-
-def fun_l11_n591()
- fun_l12_n552
-end
-
-def fun_l11_n592()
- fun_l12_n735
-end
-
-def fun_l11_n593()
- fun_l12_n953
-end
-
-def fun_l11_n594()
- fun_l12_n138
-end
-
-def fun_l11_n595()
- fun_l12_n185
-end
-
-def fun_l11_n596()
- fun_l12_n865
-end
-
-def fun_l11_n597()
- fun_l12_n143
-end
-
-def fun_l11_n598()
- fun_l12_n879
-end
-
-def fun_l11_n599()
- fun_l12_n751
-end
-
-def fun_l11_n600()
- fun_l12_n750
-end
-
-def fun_l11_n601()
- fun_l12_n574
-end
-
-def fun_l11_n602()
- fun_l12_n91
-end
-
-def fun_l11_n603()
- fun_l12_n116
-end
-
-def fun_l11_n604()
- fun_l12_n398
-end
-
-def fun_l11_n605()
- fun_l12_n782
-end
-
-def fun_l11_n606()
- fun_l12_n770
-end
-
-def fun_l11_n607()
- fun_l12_n240
-end
-
-def fun_l11_n608()
- fun_l12_n385
-end
-
-def fun_l11_n609()
- fun_l12_n106
-end
-
-def fun_l11_n610()
- fun_l12_n959
-end
-
-def fun_l11_n611()
- fun_l12_n84
-end
-
-def fun_l11_n612()
- fun_l12_n235
-end
-
-def fun_l11_n613()
- fun_l12_n429
-end
-
-def fun_l11_n614()
- fun_l12_n402
-end
-
-def fun_l11_n615()
- fun_l12_n32
-end
-
-def fun_l11_n616()
- fun_l12_n517
-end
-
-def fun_l11_n617()
- fun_l12_n304
-end
-
-def fun_l11_n618()
- fun_l12_n374
-end
-
-def fun_l11_n619()
- fun_l12_n884
-end
-
-def fun_l11_n620()
- fun_l12_n399
-end
-
-def fun_l11_n621()
- fun_l12_n721
-end
-
-def fun_l11_n622()
- fun_l12_n58
-end
-
-def fun_l11_n623()
- fun_l12_n237
-end
-
-def fun_l11_n624()
- fun_l12_n659
-end
-
-def fun_l11_n625()
- fun_l12_n454
-end
-
-def fun_l11_n626()
- fun_l12_n942
-end
-
-def fun_l11_n627()
- fun_l12_n975
-end
-
-def fun_l11_n628()
- fun_l12_n192
-end
-
-def fun_l11_n629()
- fun_l12_n590
-end
-
-def fun_l11_n630()
- fun_l12_n340
-end
-
-def fun_l11_n631()
- fun_l12_n229
-end
-
-def fun_l11_n632()
- fun_l12_n478
-end
-
-def fun_l11_n633()
- fun_l12_n84
-end
-
-def fun_l11_n634()
- fun_l12_n280
-end
-
-def fun_l11_n635()
- fun_l12_n896
-end
-
-def fun_l11_n636()
- fun_l12_n872
-end
-
-def fun_l11_n637()
- fun_l12_n924
-end
-
-def fun_l11_n638()
- fun_l12_n957
-end
-
-def fun_l11_n639()
- fun_l12_n252
-end
-
-def fun_l11_n640()
- fun_l12_n308
-end
-
-def fun_l11_n641()
- fun_l12_n217
-end
-
-def fun_l11_n642()
- fun_l12_n477
-end
-
-def fun_l11_n643()
- fun_l12_n754
-end
-
-def fun_l11_n644()
- fun_l12_n561
-end
-
-def fun_l11_n645()
- fun_l12_n597
-end
-
-def fun_l11_n646()
- fun_l12_n194
-end
-
-def fun_l11_n647()
- fun_l12_n708
-end
-
-def fun_l11_n648()
- fun_l12_n892
-end
-
-def fun_l11_n649()
- fun_l12_n771
-end
-
-def fun_l11_n650()
- fun_l12_n549
-end
-
-def fun_l11_n651()
- fun_l12_n84
-end
-
-def fun_l11_n652()
- fun_l12_n256
-end
-
-def fun_l11_n653()
- fun_l12_n454
-end
-
-def fun_l11_n654()
- fun_l12_n773
-end
-
-def fun_l11_n655()
- fun_l12_n674
-end
-
-def fun_l11_n656()
- fun_l12_n364
-end
-
-def fun_l11_n657()
- fun_l12_n548
-end
-
-def fun_l11_n658()
- fun_l12_n287
-end
-
-def fun_l11_n659()
- fun_l12_n211
-end
-
-def fun_l11_n660()
- fun_l12_n213
-end
-
-def fun_l11_n661()
- fun_l12_n975
-end
-
-def fun_l11_n662()
- fun_l12_n221
-end
-
-def fun_l11_n663()
- fun_l12_n524
-end
-
-def fun_l11_n664()
- fun_l12_n167
-end
-
-def fun_l11_n665()
- fun_l12_n361
-end
-
-def fun_l11_n666()
- fun_l12_n435
-end
-
-def fun_l11_n667()
- fun_l12_n881
-end
-
-def fun_l11_n668()
- fun_l12_n977
-end
-
-def fun_l11_n669()
- fun_l12_n87
-end
-
-def fun_l11_n670()
- fun_l12_n281
-end
-
-def fun_l11_n671()
- fun_l12_n44
-end
-
-def fun_l11_n672()
- fun_l12_n584
-end
-
-def fun_l11_n673()
- fun_l12_n645
-end
-
-def fun_l11_n674()
- fun_l12_n268
-end
-
-def fun_l11_n675()
- fun_l12_n98
-end
-
-def fun_l11_n676()
- fun_l12_n861
-end
-
-def fun_l11_n677()
- fun_l12_n9
-end
-
-def fun_l11_n678()
- fun_l12_n91
-end
-
-def fun_l11_n679()
- fun_l12_n976
-end
-
-def fun_l11_n680()
- fun_l12_n373
-end
-
-def fun_l11_n681()
- fun_l12_n673
-end
-
-def fun_l11_n682()
- fun_l12_n206
-end
-
-def fun_l11_n683()
- fun_l12_n838
-end
-
-def fun_l11_n684()
- fun_l12_n972
-end
-
-def fun_l11_n685()
- fun_l12_n607
-end
-
-def fun_l11_n686()
- fun_l12_n55
-end
-
-def fun_l11_n687()
- fun_l12_n294
-end
-
-def fun_l11_n688()
- fun_l12_n871
-end
-
-def fun_l11_n689()
- fun_l12_n518
-end
-
-def fun_l11_n690()
- fun_l12_n552
-end
-
-def fun_l11_n691()
- fun_l12_n622
-end
-
-def fun_l11_n692()
- fun_l12_n505
-end
-
-def fun_l11_n693()
- fun_l12_n33
-end
-
-def fun_l11_n694()
- fun_l12_n522
-end
-
-def fun_l11_n695()
- fun_l12_n729
-end
-
-def fun_l11_n696()
- fun_l12_n477
-end
-
-def fun_l11_n697()
- fun_l12_n424
-end
-
-def fun_l11_n698()
- fun_l12_n258
-end
-
-def fun_l11_n699()
- fun_l12_n328
-end
-
-def fun_l11_n700()
- fun_l12_n501
-end
-
-def fun_l11_n701()
- fun_l12_n841
-end
-
-def fun_l11_n702()
- fun_l12_n684
-end
-
-def fun_l11_n703()
- fun_l12_n864
-end
-
-def fun_l11_n704()
- fun_l12_n527
-end
-
-def fun_l11_n705()
- fun_l12_n808
-end
-
-def fun_l11_n706()
- fun_l12_n213
-end
-
-def fun_l11_n707()
- fun_l12_n711
-end
-
-def fun_l11_n708()
- fun_l12_n727
-end
-
-def fun_l11_n709()
- fun_l12_n82
-end
-
-def fun_l11_n710()
- fun_l12_n926
-end
-
-def fun_l11_n711()
- fun_l12_n719
-end
-
-def fun_l11_n712()
- fun_l12_n180
-end
-
-def fun_l11_n713()
- fun_l12_n568
-end
-
-def fun_l11_n714()
- fun_l12_n11
-end
-
-def fun_l11_n715()
- fun_l12_n624
-end
-
-def fun_l11_n716()
- fun_l12_n954
-end
-
-def fun_l11_n717()
- fun_l12_n584
-end
-
-def fun_l11_n718()
- fun_l12_n222
-end
-
-def fun_l11_n719()
- fun_l12_n460
-end
-
-def fun_l11_n720()
- fun_l12_n253
-end
-
-def fun_l11_n721()
- fun_l12_n938
-end
-
-def fun_l11_n722()
- fun_l12_n552
-end
-
-def fun_l11_n723()
- fun_l12_n491
-end
-
-def fun_l11_n724()
- fun_l12_n146
-end
-
-def fun_l11_n725()
- fun_l12_n833
-end
-
-def fun_l11_n726()
- fun_l12_n43
-end
-
-def fun_l11_n727()
- fun_l12_n700
-end
-
-def fun_l11_n728()
- fun_l12_n730
-end
-
-def fun_l11_n729()
- fun_l12_n84
-end
-
-def fun_l11_n730()
- fun_l12_n468
-end
-
-def fun_l11_n731()
- fun_l12_n253
-end
-
-def fun_l11_n732()
- fun_l12_n473
-end
-
-def fun_l11_n733()
- fun_l12_n997
-end
-
-def fun_l11_n734()
- fun_l12_n584
-end
-
-def fun_l11_n735()
- fun_l12_n815
-end
-
-def fun_l11_n736()
- fun_l12_n577
-end
-
-def fun_l11_n737()
- fun_l12_n890
-end
-
-def fun_l11_n738()
- fun_l12_n282
-end
-
-def fun_l11_n739()
- fun_l12_n794
-end
-
-def fun_l11_n740()
- fun_l12_n615
-end
-
-def fun_l11_n741()
- fun_l12_n254
-end
-
-def fun_l11_n742()
- fun_l12_n250
-end
-
-def fun_l11_n743()
- fun_l12_n45
-end
-
-def fun_l11_n744()
- fun_l12_n513
-end
-
-def fun_l11_n745()
- fun_l12_n786
-end
-
-def fun_l11_n746()
- fun_l12_n764
-end
-
-def fun_l11_n747()
- fun_l12_n73
-end
-
-def fun_l11_n748()
- fun_l12_n944
-end
-
-def fun_l11_n749()
- fun_l12_n49
-end
-
-def fun_l11_n750()
- fun_l12_n513
-end
-
-def fun_l11_n751()
- fun_l12_n367
-end
-
-def fun_l11_n752()
- fun_l12_n61
-end
-
-def fun_l11_n753()
- fun_l12_n279
-end
-
-def fun_l11_n754()
- fun_l12_n991
-end
-
-def fun_l11_n755()
- fun_l12_n747
-end
-
-def fun_l11_n756()
- fun_l12_n422
-end
-
-def fun_l11_n757()
- fun_l12_n414
-end
-
-def fun_l11_n758()
- fun_l12_n61
-end
-
-def fun_l11_n759()
- fun_l12_n471
-end
-
-def fun_l11_n760()
- fun_l12_n436
-end
-
-def fun_l11_n761()
- fun_l12_n183
-end
-
-def fun_l11_n762()
- fun_l12_n173
-end
-
-def fun_l11_n763()
- fun_l12_n362
-end
-
-def fun_l11_n764()
- fun_l12_n174
-end
-
-def fun_l11_n765()
- fun_l12_n710
-end
-
-def fun_l11_n766()
- fun_l12_n212
-end
-
-def fun_l11_n767()
- fun_l12_n649
-end
-
-def fun_l11_n768()
- fun_l12_n409
-end
-
-def fun_l11_n769()
- fun_l12_n375
-end
-
-def fun_l11_n770()
- fun_l12_n608
-end
-
-def fun_l11_n771()
- fun_l12_n447
-end
-
-def fun_l11_n772()
- fun_l12_n530
-end
-
-def fun_l11_n773()
- fun_l12_n359
-end
-
-def fun_l11_n774()
- fun_l12_n317
-end
-
-def fun_l11_n775()
- fun_l12_n105
-end
-
-def fun_l11_n776()
- fun_l12_n65
-end
-
-def fun_l11_n777()
- fun_l12_n243
-end
-
-def fun_l11_n778()
- fun_l12_n274
-end
-
-def fun_l11_n779()
- fun_l12_n560
-end
-
-def fun_l11_n780()
- fun_l12_n155
-end
-
-def fun_l11_n781()
- fun_l12_n277
-end
-
-def fun_l11_n782()
- fun_l12_n255
-end
-
-def fun_l11_n783()
- fun_l12_n184
-end
-
-def fun_l11_n784()
- fun_l12_n495
-end
-
-def fun_l11_n785()
- fun_l12_n910
-end
-
-def fun_l11_n786()
- fun_l12_n245
-end
-
-def fun_l11_n787()
- fun_l12_n761
-end
-
-def fun_l11_n788()
- fun_l12_n501
-end
-
-def fun_l11_n789()
- fun_l12_n11
-end
-
-def fun_l11_n790()
- fun_l12_n87
-end
-
-def fun_l11_n791()
- fun_l12_n233
-end
-
-def fun_l11_n792()
- fun_l12_n201
-end
-
-def fun_l11_n793()
- fun_l12_n471
-end
-
-def fun_l11_n794()
- fun_l12_n6
-end
-
-def fun_l11_n795()
- fun_l12_n257
-end
-
-def fun_l11_n796()
- fun_l12_n104
-end
-
-def fun_l11_n797()
- fun_l12_n712
-end
-
-def fun_l11_n798()
- fun_l12_n408
-end
-
-def fun_l11_n799()
- fun_l12_n713
-end
-
-def fun_l11_n800()
- fun_l12_n622
-end
-
-def fun_l11_n801()
- fun_l12_n498
-end
-
-def fun_l11_n802()
- fun_l12_n904
-end
-
-def fun_l11_n803()
- fun_l12_n413
-end
-
-def fun_l11_n804()
- fun_l12_n424
-end
-
-def fun_l11_n805()
- fun_l12_n209
-end
-
-def fun_l11_n806()
- fun_l12_n171
-end
-
-def fun_l11_n807()
- fun_l12_n835
-end
-
-def fun_l11_n808()
- fun_l12_n872
-end
-
-def fun_l11_n809()
- fun_l12_n456
-end
-
-def fun_l11_n810()
- fun_l12_n586
-end
-
-def fun_l11_n811()
- fun_l12_n422
-end
-
-def fun_l11_n812()
- fun_l12_n125
-end
-
-def fun_l11_n813()
- fun_l12_n482
-end
-
-def fun_l11_n814()
- fun_l12_n17
-end
-
-def fun_l11_n815()
- fun_l12_n966
-end
-
-def fun_l11_n816()
- fun_l12_n408
-end
-
-def fun_l11_n817()
- fun_l12_n874
-end
-
-def fun_l11_n818()
- fun_l12_n454
-end
-
-def fun_l11_n819()
- fun_l12_n818
-end
-
-def fun_l11_n820()
- fun_l12_n469
-end
-
-def fun_l11_n821()
- fun_l12_n104
-end
-
-def fun_l11_n822()
- fun_l12_n765
-end
-
-def fun_l11_n823()
- fun_l12_n472
-end
-
-def fun_l11_n824()
- fun_l12_n794
-end
-
-def fun_l11_n825()
- fun_l12_n609
-end
-
-def fun_l11_n826()
- fun_l12_n609
-end
-
-def fun_l11_n827()
- fun_l12_n99
-end
-
-def fun_l11_n828()
- fun_l12_n844
-end
-
-def fun_l11_n829()
- fun_l12_n423
-end
-
-def fun_l11_n830()
- fun_l12_n560
-end
-
-def fun_l11_n831()
- fun_l12_n60
-end
-
-def fun_l11_n832()
- fun_l12_n670
-end
-
-def fun_l11_n833()
- fun_l12_n591
-end
-
-def fun_l11_n834()
- fun_l12_n572
-end
-
-def fun_l11_n835()
- fun_l12_n96
-end
-
-def fun_l11_n836()
- fun_l12_n567
-end
-
-def fun_l11_n837()
- fun_l12_n239
-end
-
-def fun_l11_n838()
- fun_l12_n937
-end
-
-def fun_l11_n839()
- fun_l12_n853
-end
-
-def fun_l11_n840()
- fun_l12_n440
-end
-
-def fun_l11_n841()
- fun_l12_n930
-end
-
-def fun_l11_n842()
- fun_l12_n448
-end
-
-def fun_l11_n843()
- fun_l12_n185
-end
-
-def fun_l11_n844()
- fun_l12_n904
-end
-
-def fun_l11_n845()
- fun_l12_n399
-end
-
-def fun_l11_n846()
- fun_l12_n184
-end
-
-def fun_l11_n847()
- fun_l12_n985
-end
-
-def fun_l11_n848()
- fun_l12_n966
-end
-
-def fun_l11_n849()
- fun_l12_n183
-end
-
-def fun_l11_n850()
- fun_l12_n418
-end
-
-def fun_l11_n851()
- fun_l12_n546
-end
-
-def fun_l11_n852()
- fun_l12_n96
-end
-
-def fun_l11_n853()
- fun_l12_n172
-end
-
-def fun_l11_n854()
- fun_l12_n546
-end
-
-def fun_l11_n855()
- fun_l12_n86
-end
-
-def fun_l11_n856()
- fun_l12_n815
-end
-
-def fun_l11_n857()
- fun_l12_n552
-end
-
-def fun_l11_n858()
- fun_l12_n657
-end
-
-def fun_l11_n859()
- fun_l12_n567
-end
-
-def fun_l11_n860()
- fun_l12_n561
-end
-
-def fun_l11_n861()
- fun_l12_n590
-end
-
-def fun_l11_n862()
- fun_l12_n28
-end
-
-def fun_l11_n863()
- fun_l12_n935
-end
-
-def fun_l11_n864()
- fun_l12_n950
-end
-
-def fun_l11_n865()
- fun_l12_n946
-end
-
-def fun_l11_n866()
- fun_l12_n77
-end
-
-def fun_l11_n867()
- fun_l12_n454
-end
-
-def fun_l11_n868()
- fun_l12_n813
-end
-
-def fun_l11_n869()
- fun_l12_n562
-end
-
-def fun_l11_n870()
- fun_l12_n598
-end
-
-def fun_l11_n871()
- fun_l12_n331
-end
-
-def fun_l11_n872()
- fun_l12_n156
-end
-
-def fun_l11_n873()
- fun_l12_n807
-end
-
-def fun_l11_n874()
- fun_l12_n442
-end
-
-def fun_l11_n875()
- fun_l12_n322
-end
-
-def fun_l11_n876()
- fun_l12_n472
-end
-
-def fun_l11_n877()
- fun_l12_n581
-end
-
-def fun_l11_n878()
- fun_l12_n94
-end
-
-def fun_l11_n879()
- fun_l12_n270
-end
-
-def fun_l11_n880()
- fun_l12_n63
-end
-
-def fun_l11_n881()
- fun_l12_n290
-end
-
-def fun_l11_n882()
- fun_l12_n148
-end
-
-def fun_l11_n883()
- fun_l12_n862
-end
-
-def fun_l11_n884()
- fun_l12_n527
-end
-
-def fun_l11_n885()
- fun_l12_n166
-end
-
-def fun_l11_n886()
- fun_l12_n422
-end
-
-def fun_l11_n887()
- fun_l12_n195
-end
-
-def fun_l11_n888()
- fun_l12_n592
-end
-
-def fun_l11_n889()
- fun_l12_n116
-end
-
-def fun_l11_n890()
- fun_l12_n923
-end
-
-def fun_l11_n891()
- fun_l12_n422
-end
-
-def fun_l11_n892()
- fun_l12_n945
-end
-
-def fun_l11_n893()
- fun_l12_n850
-end
-
-def fun_l11_n894()
- fun_l12_n598
-end
-
-def fun_l11_n895()
- fun_l12_n448
-end
-
-def fun_l11_n896()
- fun_l12_n955
-end
-
-def fun_l11_n897()
- fun_l12_n259
-end
-
-def fun_l11_n898()
- fun_l12_n145
-end
-
-def fun_l11_n899()
- fun_l12_n321
-end
-
-def fun_l11_n900()
- fun_l12_n680
-end
-
-def fun_l11_n901()
- fun_l12_n856
-end
-
-def fun_l11_n902()
- fun_l12_n776
-end
-
-def fun_l11_n903()
- fun_l12_n108
-end
-
-def fun_l11_n904()
- fun_l12_n340
-end
-
-def fun_l11_n905()
- fun_l12_n78
-end
-
-def fun_l11_n906()
- fun_l12_n218
-end
-
-def fun_l11_n907()
- fun_l12_n288
-end
-
-def fun_l11_n908()
- fun_l12_n197
-end
-
-def fun_l11_n909()
- fun_l12_n890
-end
-
-def fun_l11_n910()
- fun_l12_n850
-end
-
-def fun_l11_n911()
- fun_l12_n964
-end
-
-def fun_l11_n912()
- fun_l12_n47
-end
-
-def fun_l11_n913()
- fun_l12_n462
-end
-
-def fun_l11_n914()
- fun_l12_n461
-end
-
-def fun_l11_n915()
- fun_l12_n57
-end
-
-def fun_l11_n916()
- fun_l12_n938
-end
-
-def fun_l11_n917()
- fun_l12_n841
-end
-
-def fun_l11_n918()
- fun_l12_n462
-end
-
-def fun_l11_n919()
- fun_l12_n425
-end
-
-def fun_l11_n920()
- fun_l12_n775
-end
-
-def fun_l11_n921()
- fun_l12_n302
-end
-
-def fun_l11_n922()
- fun_l12_n921
-end
-
-def fun_l11_n923()
- fun_l12_n322
-end
-
-def fun_l11_n924()
- fun_l12_n414
-end
-
-def fun_l11_n925()
- fun_l12_n461
-end
-
-def fun_l11_n926()
- fun_l12_n476
-end
-
-def fun_l11_n927()
- fun_l12_n537
-end
-
-def fun_l11_n928()
- fun_l12_n359
-end
-
-def fun_l11_n929()
- fun_l12_n297
-end
-
-def fun_l11_n930()
- fun_l12_n134
-end
-
-def fun_l11_n931()
- fun_l12_n875
-end
-
-def fun_l11_n932()
- fun_l12_n763
-end
-
-def fun_l11_n933()
- fun_l12_n180
-end
-
-def fun_l11_n934()
- fun_l12_n522
-end
-
-def fun_l11_n935()
- fun_l12_n701
-end
-
-def fun_l11_n936()
- fun_l12_n793
-end
-
-def fun_l11_n937()
- fun_l12_n853
-end
-
-def fun_l11_n938()
- fun_l12_n208
-end
-
-def fun_l11_n939()
- fun_l12_n307
-end
-
-def fun_l11_n940()
- fun_l12_n695
-end
-
-def fun_l11_n941()
- fun_l12_n171
-end
-
-def fun_l11_n942()
- fun_l12_n181
-end
-
-def fun_l11_n943()
- fun_l12_n58
-end
-
-def fun_l11_n944()
- fun_l12_n733
-end
-
-def fun_l11_n945()
- fun_l12_n7
-end
-
-def fun_l11_n946()
- fun_l12_n332
-end
-
-def fun_l11_n947()
- fun_l12_n323
-end
-
-def fun_l11_n948()
- fun_l12_n240
-end
-
-def fun_l11_n949()
- fun_l12_n21
-end
-
-def fun_l11_n950()
- fun_l12_n814
-end
-
-def fun_l11_n951()
- fun_l12_n943
-end
-
-def fun_l11_n952()
- fun_l12_n4
-end
-
-def fun_l11_n953()
- fun_l12_n747
-end
-
-def fun_l11_n954()
- fun_l12_n500
-end
-
-def fun_l11_n955()
- fun_l12_n361
-end
-
-def fun_l11_n956()
- fun_l12_n898
-end
-
-def fun_l11_n957()
- fun_l12_n216
-end
-
-def fun_l11_n958()
- fun_l12_n58
-end
-
-def fun_l11_n959()
- fun_l12_n327
-end
-
-def fun_l11_n960()
- fun_l12_n405
-end
-
-def fun_l11_n961()
- fun_l12_n665
-end
-
-def fun_l11_n962()
- fun_l12_n456
-end
-
-def fun_l11_n963()
- fun_l12_n399
-end
-
-def fun_l11_n964()
- fun_l12_n836
-end
-
-def fun_l11_n965()
- fun_l12_n18
-end
-
-def fun_l11_n966()
- fun_l12_n236
-end
-
-def fun_l11_n967()
- fun_l12_n594
-end
-
-def fun_l11_n968()
- fun_l12_n147
-end
-
-def fun_l11_n969()
- fun_l12_n758
-end
-
-def fun_l11_n970()
- fun_l12_n271
-end
-
-def fun_l11_n971()
- fun_l12_n551
-end
-
-def fun_l11_n972()
- fun_l12_n332
-end
-
-def fun_l11_n973()
- fun_l12_n348
-end
-
-def fun_l11_n974()
- fun_l12_n158
-end
-
-def fun_l11_n975()
- fun_l12_n990
-end
-
-def fun_l11_n976()
- fun_l12_n330
-end
-
-def fun_l11_n977()
- fun_l12_n764
-end
-
-def fun_l11_n978()
- fun_l12_n844
-end
-
-def fun_l11_n979()
- fun_l12_n452
-end
-
-def fun_l11_n980()
- fun_l12_n593
-end
-
-def fun_l11_n981()
- fun_l12_n762
-end
-
-def fun_l11_n982()
- fun_l12_n736
-end
-
-def fun_l11_n983()
- fun_l12_n957
-end
-
-def fun_l11_n984()
- fun_l12_n174
-end
-
-def fun_l11_n985()
- fun_l12_n454
-end
-
-def fun_l11_n986()
- fun_l12_n492
-end
-
-def fun_l11_n987()
- fun_l12_n986
-end
-
-def fun_l11_n988()
- fun_l12_n868
-end
-
-def fun_l11_n989()
- fun_l12_n445
-end
-
-def fun_l11_n990()
- fun_l12_n422
-end
-
-def fun_l11_n991()
- fun_l12_n877
-end
-
-def fun_l11_n992()
- fun_l12_n150
-end
-
-def fun_l11_n993()
- fun_l12_n163
-end
-
-def fun_l11_n994()
- fun_l12_n183
-end
-
-def fun_l11_n995()
- fun_l12_n100
-end
-
-def fun_l11_n996()
- fun_l12_n297
-end
-
-def fun_l11_n997()
- fun_l12_n43
-end
-
-def fun_l11_n998()
- fun_l12_n324
-end
-
-def fun_l11_n999()
- fun_l12_n732
-end
-
-def fun_l12_n0()
- fun_l13_n595
-end
-
-def fun_l12_n1()
- fun_l13_n185
-end
-
-def fun_l12_n2()
- fun_l13_n257
-end
-
-def fun_l12_n3()
- fun_l13_n865
-end
-
-def fun_l12_n4()
- fun_l13_n857
-end
-
-def fun_l12_n5()
- fun_l13_n9
-end
-
-def fun_l12_n6()
- fun_l13_n41
-end
-
-def fun_l12_n7()
- fun_l13_n430
-end
-
-def fun_l12_n8()
- fun_l13_n394
-end
-
-def fun_l12_n9()
- fun_l13_n20
-end
-
-def fun_l12_n10()
- fun_l13_n527
-end
-
-def fun_l12_n11()
- fun_l13_n158
-end
-
-def fun_l12_n12()
- fun_l13_n229
-end
-
-def fun_l12_n13()
- fun_l13_n205
-end
-
-def fun_l12_n14()
- fun_l13_n88
-end
-
-def fun_l12_n15()
- fun_l13_n359
-end
-
-def fun_l12_n16()
- fun_l13_n204
-end
-
-def fun_l12_n17()
- fun_l13_n297
-end
-
-def fun_l12_n18()
- fun_l13_n531
-end
-
-def fun_l12_n19()
- fun_l13_n244
-end
-
-def fun_l12_n20()
- fun_l13_n587
-end
-
-def fun_l12_n21()
- fun_l13_n731
-end
-
-def fun_l12_n22()
- fun_l13_n839
-end
-
-def fun_l12_n23()
- fun_l13_n560
-end
-
-def fun_l12_n24()
- fun_l13_n22
-end
-
-def fun_l12_n25()
- fun_l13_n383
-end
-
-def fun_l12_n26()
- fun_l13_n321
-end
-
-def fun_l12_n27()
- fun_l13_n286
-end
-
-def fun_l12_n28()
- fun_l13_n951
-end
-
-def fun_l12_n29()
- fun_l13_n172
-end
-
-def fun_l12_n30()
- fun_l13_n804
-end
-
-def fun_l12_n31()
- fun_l13_n619
-end
-
-def fun_l12_n32()
- fun_l13_n464
-end
-
-def fun_l12_n33()
- fun_l13_n87
-end
-
-def fun_l12_n34()
- fun_l13_n544
-end
-
-def fun_l12_n35()
- fun_l13_n37
-end
-
-def fun_l12_n36()
- fun_l13_n614
-end
-
-def fun_l12_n37()
- fun_l13_n426
-end
-
-def fun_l12_n38()
- fun_l13_n335
-end
-
-def fun_l12_n39()
- fun_l13_n689
-end
-
-def fun_l12_n40()
- fun_l13_n220
-end
-
-def fun_l12_n41()
- fun_l13_n77
-end
-
-def fun_l12_n42()
- fun_l13_n791
-end
-
-def fun_l12_n43()
- fun_l13_n514
-end
-
-def fun_l12_n44()
- fun_l13_n802
-end
-
-def fun_l12_n45()
- fun_l13_n860
-end
-
-def fun_l12_n46()
- fun_l13_n562
-end
-
-def fun_l12_n47()
- fun_l13_n208
-end
-
-def fun_l12_n48()
- fun_l13_n167
-end
-
-def fun_l12_n49()
- fun_l13_n772
-end
-
-def fun_l12_n50()
- fun_l13_n303
-end
-
-def fun_l12_n51()
- fun_l13_n757
-end
-
-def fun_l12_n52()
- fun_l13_n558
-end
-
-def fun_l12_n53()
- fun_l13_n45
-end
-
-def fun_l12_n54()
- fun_l13_n292
-end
-
-def fun_l12_n55()
- fun_l13_n558
-end
-
-def fun_l12_n56()
- fun_l13_n361
-end
-
-def fun_l12_n57()
- fun_l13_n605
-end
-
-def fun_l12_n58()
- fun_l13_n16
-end
-
-def fun_l12_n59()
- fun_l13_n73
-end
-
-def fun_l12_n60()
- fun_l13_n292
-end
-
-def fun_l12_n61()
- fun_l13_n747
-end
-
-def fun_l12_n62()
- fun_l13_n798
-end
-
-def fun_l12_n63()
- fun_l13_n130
-end
-
-def fun_l12_n64()
- fun_l13_n261
-end
-
-def fun_l12_n65()
- fun_l13_n122
-end
-
-def fun_l12_n66()
- fun_l13_n346
-end
-
-def fun_l12_n67()
- fun_l13_n308
-end
-
-def fun_l12_n68()
- fun_l13_n27
-end
-
-def fun_l12_n69()
- fun_l13_n433
-end
-
-def fun_l12_n70()
- fun_l13_n509
-end
-
-def fun_l12_n71()
- fun_l13_n643
-end
-
-def fun_l12_n72()
- fun_l13_n462
-end
-
-def fun_l12_n73()
- fun_l13_n976
-end
-
-def fun_l12_n74()
- fun_l13_n157
-end
-
-def fun_l12_n75()
- fun_l13_n733
-end
-
-def fun_l12_n76()
- fun_l13_n976
-end
-
-def fun_l12_n77()
- fun_l13_n369
-end
-
-def fun_l12_n78()
- fun_l13_n308
-end
-
-def fun_l12_n79()
- fun_l13_n958
-end
-
-def fun_l12_n80()
- fun_l13_n95
-end
-
-def fun_l12_n81()
- fun_l13_n653
-end
-
-def fun_l12_n82()
- fun_l13_n624
-end
-
-def fun_l12_n83()
- fun_l13_n712
-end
-
-def fun_l12_n84()
- fun_l13_n950
-end
-
-def fun_l12_n85()
- fun_l13_n836
-end
-
-def fun_l12_n86()
- fun_l13_n496
-end
-
-def fun_l12_n87()
- fun_l13_n727
-end
-
-def fun_l12_n88()
- fun_l13_n368
-end
-
-def fun_l12_n89()
- fun_l13_n727
-end
-
-def fun_l12_n90()
- fun_l13_n682
-end
-
-def fun_l12_n91()
- fun_l13_n758
-end
-
-def fun_l12_n92()
- fun_l13_n910
-end
-
-def fun_l12_n93()
- fun_l13_n490
-end
-
-def fun_l12_n94()
- fun_l13_n405
-end
-
-def fun_l12_n95()
- fun_l13_n171
-end
-
-def fun_l12_n96()
- fun_l13_n69
-end
-
-def fun_l12_n97()
- fun_l13_n519
-end
-
-def fun_l12_n98()
- fun_l13_n476
-end
-
-def fun_l12_n99()
- fun_l13_n399
-end
-
-def fun_l12_n100()
- fun_l13_n93
-end
-
-def fun_l12_n101()
- fun_l13_n220
-end
-
-def fun_l12_n102()
- fun_l13_n483
-end
-
-def fun_l12_n103()
- fun_l13_n176
-end
-
-def fun_l12_n104()
- fun_l13_n210
-end
-
-def fun_l12_n105()
- fun_l13_n111
-end
-
-def fun_l12_n106()
- fun_l13_n436
-end
-
-def fun_l12_n107()
- fun_l13_n887
-end
-
-def fun_l12_n108()
- fun_l13_n118
-end
-
-def fun_l12_n109()
- fun_l13_n630
-end
-
-def fun_l12_n110()
- fun_l13_n262
-end
-
-def fun_l12_n111()
- fun_l13_n975
-end
-
-def fun_l12_n112()
- fun_l13_n280
-end
-
-def fun_l12_n113()
- fun_l13_n341
-end
-
-def fun_l12_n114()
- fun_l13_n452
-end
-
-def fun_l12_n115()
- fun_l13_n762
-end
-
-def fun_l12_n116()
- fun_l13_n230
-end
-
-def fun_l12_n117()
- fun_l13_n470
-end
-
-def fun_l12_n118()
- fun_l13_n257
-end
-
-def fun_l12_n119()
- fun_l13_n920
-end
-
-def fun_l12_n120()
- fun_l13_n600
-end
-
-def fun_l12_n121()
- fun_l13_n947
-end
-
-def fun_l12_n122()
- fun_l13_n643
-end
-
-def fun_l12_n123()
- fun_l13_n18
-end
-
-def fun_l12_n124()
- fun_l13_n680
-end
-
-def fun_l12_n125()
- fun_l13_n926
-end
-
-def fun_l12_n126()
- fun_l13_n841
-end
-
-def fun_l12_n127()
- fun_l13_n391
-end
-
-def fun_l12_n128()
- fun_l13_n617
-end
-
-def fun_l12_n129()
- fun_l13_n484
-end
-
-def fun_l12_n130()
- fun_l13_n211
-end
-
-def fun_l12_n131()
- fun_l13_n206
-end
-
-def fun_l12_n132()
- fun_l13_n789
-end
-
-def fun_l12_n133()
- fun_l13_n660
-end
-
-def fun_l12_n134()
- fun_l13_n386
-end
-
-def fun_l12_n135()
- fun_l13_n414
-end
-
-def fun_l12_n136()
- fun_l13_n271
-end
-
-def fun_l12_n137()
- fun_l13_n444
-end
-
-def fun_l12_n138()
- fun_l13_n661
-end
-
-def fun_l12_n139()
- fun_l13_n784
-end
-
-def fun_l12_n140()
- fun_l13_n919
-end
-
-def fun_l12_n141()
- fun_l13_n29
-end
-
-def fun_l12_n142()
- fun_l13_n92
-end
-
-def fun_l12_n143()
- fun_l13_n380
-end
-
-def fun_l12_n144()
- fun_l13_n826
-end
-
-def fun_l12_n145()
- fun_l13_n222
-end
-
-def fun_l12_n146()
- fun_l13_n891
-end
-
-def fun_l12_n147()
- fun_l13_n162
-end
-
-def fun_l12_n148()
- fun_l13_n737
-end
-
-def fun_l12_n149()
- fun_l13_n342
-end
-
-def fun_l12_n150()
- fun_l13_n371
-end
-
-def fun_l12_n151()
- fun_l13_n903
-end
-
-def fun_l12_n152()
- fun_l13_n556
-end
-
-def fun_l12_n153()
- fun_l13_n333
-end
-
-def fun_l12_n154()
- fun_l13_n193
-end
-
-def fun_l12_n155()
- fun_l13_n518
-end
-
-def fun_l12_n156()
- fun_l13_n411
-end
-
-def fun_l12_n157()
- fun_l13_n249
-end
-
-def fun_l12_n158()
- fun_l13_n53
-end
-
-def fun_l12_n159()
- fun_l13_n467
-end
-
-def fun_l12_n160()
- fun_l13_n433
-end
-
-def fun_l12_n161()
- fun_l13_n773
-end
-
-def fun_l12_n162()
- fun_l13_n178
-end
-
-def fun_l12_n163()
- fun_l13_n641
-end
-
-def fun_l12_n164()
- fun_l13_n308
-end
-
-def fun_l12_n165()
- fun_l13_n787
-end
-
-def fun_l12_n166()
- fun_l13_n829
-end
-
-def fun_l12_n167()
- fun_l13_n929
-end
-
-def fun_l12_n168()
- fun_l13_n788
-end
-
-def fun_l12_n169()
- fun_l13_n948
-end
-
-def fun_l12_n170()
- fun_l13_n444
-end
-
-def fun_l12_n171()
- fun_l13_n946
-end
-
-def fun_l12_n172()
- fun_l13_n303
-end
-
-def fun_l12_n173()
- fun_l13_n196
-end
-
-def fun_l12_n174()
- fun_l13_n521
-end
-
-def fun_l12_n175()
- fun_l13_n372
-end
-
-def fun_l12_n176()
- fun_l13_n411
-end
-
-def fun_l12_n177()
- fun_l13_n434
-end
-
-def fun_l12_n178()
- fun_l13_n599
-end
-
-def fun_l12_n179()
- fun_l13_n507
-end
-
-def fun_l12_n180()
- fun_l13_n781
-end
-
-def fun_l12_n181()
- fun_l13_n186
-end
-
-def fun_l12_n182()
- fun_l13_n737
-end
-
-def fun_l12_n183()
- fun_l13_n993
-end
-
-def fun_l12_n184()
- fun_l13_n806
-end
-
-def fun_l12_n185()
- fun_l13_n45
-end
-
-def fun_l12_n186()
- fun_l13_n30
-end
-
-def fun_l12_n187()
- fun_l13_n774
-end
-
-def fun_l12_n188()
- fun_l13_n715
-end
-
-def fun_l12_n189()
- fun_l13_n351
-end
-
-def fun_l12_n190()
- fun_l13_n173
-end
-
-def fun_l12_n191()
- fun_l13_n574
-end
-
-def fun_l12_n192()
- fun_l13_n768
-end
-
-def fun_l12_n193()
- fun_l13_n514
-end
-
-def fun_l12_n194()
- fun_l13_n505
-end
-
-def fun_l12_n195()
- fun_l13_n460
-end
-
-def fun_l12_n196()
- fun_l13_n377
-end
-
-def fun_l12_n197()
- fun_l13_n275
-end
-
-def fun_l12_n198()
- fun_l13_n642
-end
-
-def fun_l12_n199()
- fun_l13_n746
-end
-
-def fun_l12_n200()
- fun_l13_n507
-end
-
-def fun_l12_n201()
- fun_l13_n576
-end
-
-def fun_l12_n202()
- fun_l13_n899
-end
-
-def fun_l12_n203()
- fun_l13_n88
-end
-
-def fun_l12_n204()
- fun_l13_n735
-end
-
-def fun_l12_n205()
- fun_l13_n270
-end
-
-def fun_l12_n206()
- fun_l13_n398
-end
-
-def fun_l12_n207()
- fun_l13_n98
-end
-
-def fun_l12_n208()
- fun_l13_n272
-end
-
-def fun_l12_n209()
- fun_l13_n493
-end
-
-def fun_l12_n210()
- fun_l13_n893
-end
-
-def fun_l12_n211()
- fun_l13_n550
-end
-
-def fun_l12_n212()
- fun_l13_n428
-end
-
-def fun_l12_n213()
- fun_l13_n20
-end
-
-def fun_l12_n214()
- fun_l13_n437
-end
-
-def fun_l12_n215()
- fun_l13_n964
-end
-
-def fun_l12_n216()
- fun_l13_n880
-end
-
-def fun_l12_n217()
- fun_l13_n119
-end
-
-def fun_l12_n218()
- fun_l13_n125
-end
-
-def fun_l12_n219()
- fun_l13_n48
-end
-
-def fun_l12_n220()
- fun_l13_n749
-end
-
-def fun_l12_n221()
- fun_l13_n65
-end
-
-def fun_l12_n222()
- fun_l13_n535
-end
-
-def fun_l12_n223()
- fun_l13_n770
-end
-
-def fun_l12_n224()
- fun_l13_n118
-end
-
-def fun_l12_n225()
- fun_l13_n859
-end
-
-def fun_l12_n226()
- fun_l13_n768
-end
-
-def fun_l12_n227()
- fun_l13_n981
-end
-
-def fun_l12_n228()
- fun_l13_n518
-end
-
-def fun_l12_n229()
- fun_l13_n361
-end
-
-def fun_l12_n230()
- fun_l13_n255
-end
-
-def fun_l12_n231()
- fun_l13_n922
-end
-
-def fun_l12_n232()
- fun_l13_n375
-end
-
-def fun_l12_n233()
- fun_l13_n265
-end
-
-def fun_l12_n234()
- fun_l13_n832
-end
-
-def fun_l12_n235()
- fun_l13_n147
-end
-
-def fun_l12_n236()
- fun_l13_n162
-end
-
-def fun_l12_n237()
- fun_l13_n832
-end
-
-def fun_l12_n238()
- fun_l13_n930
-end
-
-def fun_l12_n239()
- fun_l13_n429
-end
-
-def fun_l12_n240()
- fun_l13_n429
-end
-
-def fun_l12_n241()
- fun_l13_n152
-end
-
-def fun_l12_n242()
- fun_l13_n287
-end
-
-def fun_l12_n243()
- fun_l13_n140
-end
-
-def fun_l12_n244()
- fun_l13_n994
-end
-
-def fun_l12_n245()
- fun_l13_n815
-end
-
-def fun_l12_n246()
- fun_l13_n865
-end
-
-def fun_l12_n247()
- fun_l13_n613
-end
-
-def fun_l12_n248()
- fun_l13_n347
-end
-
-def fun_l12_n249()
- fun_l13_n959
-end
-
-def fun_l12_n250()
- fun_l13_n870
-end
-
-def fun_l12_n251()
- fun_l13_n167
-end
-
-def fun_l12_n252()
- fun_l13_n860
-end
-
-def fun_l12_n253()
- fun_l13_n897
-end
-
-def fun_l12_n254()
- fun_l13_n605
-end
-
-def fun_l12_n255()
- fun_l13_n136
-end
-
-def fun_l12_n256()
- fun_l13_n636
-end
-
-def fun_l12_n257()
- fun_l13_n60
-end
-
-def fun_l12_n258()
- fun_l13_n925
-end
-
-def fun_l12_n259()
- fun_l13_n472
-end
-
-def fun_l12_n260()
- fun_l13_n423
-end
-
-def fun_l12_n261()
- fun_l13_n798
-end
-
-def fun_l12_n262()
- fun_l13_n381
-end
-
-def fun_l12_n263()
- fun_l13_n922
-end
-
-def fun_l12_n264()
- fun_l13_n923
-end
-
-def fun_l12_n265()
- fun_l13_n644
-end
-
-def fun_l12_n266()
- fun_l13_n334
-end
-
-def fun_l12_n267()
- fun_l13_n201
-end
-
-def fun_l12_n268()
- fun_l13_n690
-end
-
-def fun_l12_n269()
- fun_l13_n699
-end
-
-def fun_l12_n270()
- fun_l13_n269
-end
-
-def fun_l12_n271()
- fun_l13_n582
-end
-
-def fun_l12_n272()
- fun_l13_n513
-end
-
-def fun_l12_n273()
- fun_l13_n723
-end
-
-def fun_l12_n274()
- fun_l13_n757
-end
-
-def fun_l12_n275()
- fun_l13_n390
-end
-
-def fun_l12_n276()
- fun_l13_n459
-end
-
-def fun_l12_n277()
- fun_l13_n973
-end
-
-def fun_l12_n278()
- fun_l13_n762
-end
-
-def fun_l12_n279()
- fun_l13_n829
-end
-
-def fun_l12_n280()
- fun_l13_n706
-end
-
-def fun_l12_n281()
- fun_l13_n769
-end
-
-def fun_l12_n282()
- fun_l13_n736
-end
-
-def fun_l12_n283()
- fun_l13_n931
-end
-
-def fun_l12_n284()
- fun_l13_n226
-end
-
-def fun_l12_n285()
- fun_l13_n688
-end
-
-def fun_l12_n286()
- fun_l13_n74
-end
-
-def fun_l12_n287()
- fun_l13_n470
-end
-
-def fun_l12_n288()
- fun_l13_n932
-end
-
-def fun_l12_n289()
- fun_l13_n923
-end
-
-def fun_l12_n290()
- fun_l13_n53
-end
-
-def fun_l12_n291()
- fun_l13_n113
-end
-
-def fun_l12_n292()
- fun_l13_n115
-end
-
-def fun_l12_n293()
- fun_l13_n864
-end
-
-def fun_l12_n294()
- fun_l13_n503
-end
-
-def fun_l12_n295()
- fun_l13_n998
-end
-
-def fun_l12_n296()
- fun_l13_n637
-end
-
-def fun_l12_n297()
- fun_l13_n655
-end
-
-def fun_l12_n298()
- fun_l13_n50
-end
-
-def fun_l12_n299()
- fun_l13_n564
-end
-
-def fun_l12_n300()
- fun_l13_n39
-end
-
-def fun_l12_n301()
- fun_l13_n836
-end
-
-def fun_l12_n302()
- fun_l13_n85
-end
-
-def fun_l12_n303()
- fun_l13_n992
-end
-
-def fun_l12_n304()
- fun_l13_n956
-end
-
-def fun_l12_n305()
- fun_l13_n746
-end
-
-def fun_l12_n306()
- fun_l13_n281
-end
-
-def fun_l12_n307()
- fun_l13_n790
-end
-
-def fun_l12_n308()
- fun_l13_n69
-end
-
-def fun_l12_n309()
- fun_l13_n296
-end
-
-def fun_l12_n310()
- fun_l13_n239
-end
-
-def fun_l12_n311()
- fun_l13_n451
-end
-
-def fun_l12_n312()
- fun_l13_n756
-end
-
-def fun_l12_n313()
- fun_l13_n339
-end
-
-def fun_l12_n314()
- fun_l13_n438
-end
-
-def fun_l12_n315()
- fun_l13_n840
-end
-
-def fun_l12_n316()
- fun_l13_n903
-end
-
-def fun_l12_n317()
- fun_l13_n506
-end
-
-def fun_l12_n318()
- fun_l13_n529
-end
-
-def fun_l12_n319()
- fun_l13_n242
-end
-
-def fun_l12_n320()
- fun_l13_n658
-end
-
-def fun_l12_n321()
- fun_l13_n34
-end
-
-def fun_l12_n322()
- fun_l13_n89
-end
-
-def fun_l12_n323()
- fun_l13_n29
-end
-
-def fun_l12_n324()
- fun_l13_n981
-end
-
-def fun_l12_n325()
- fun_l13_n463
-end
-
-def fun_l12_n326()
- fun_l13_n889
-end
-
-def fun_l12_n327()
- fun_l13_n583
-end
-
-def fun_l12_n328()
- fun_l13_n291
-end
-
-def fun_l12_n329()
- fun_l13_n618
-end
-
-def fun_l12_n330()
- fun_l13_n660
-end
-
-def fun_l12_n331()
- fun_l13_n545
-end
-
-def fun_l12_n332()
- fun_l13_n817
-end
-
-def fun_l12_n333()
- fun_l13_n399
-end
-
-def fun_l12_n334()
- fun_l13_n579
-end
-
-def fun_l12_n335()
- fun_l13_n508
-end
-
-def fun_l12_n336()
- fun_l13_n979
-end
-
-def fun_l12_n337()
- fun_l13_n826
-end
-
-def fun_l12_n338()
- fun_l13_n18
-end
-
-def fun_l12_n339()
- fun_l13_n218
-end
-
-def fun_l12_n340()
- fun_l13_n344
-end
-
-def fun_l12_n341()
- fun_l13_n280
-end
-
-def fun_l12_n342()
- fun_l13_n244
-end
-
-def fun_l12_n343()
- fun_l13_n857
-end
-
-def fun_l12_n344()
- fun_l13_n301
-end
-
-def fun_l12_n345()
- fun_l13_n428
-end
-
-def fun_l12_n346()
- fun_l13_n192
-end
-
-def fun_l12_n347()
- fun_l13_n155
-end
-
-def fun_l12_n348()
- fun_l13_n414
-end
-
-def fun_l12_n349()
- fun_l13_n196
-end
-
-def fun_l12_n350()
- fun_l13_n824
-end
-
-def fun_l12_n351()
- fun_l13_n901
-end
-
-def fun_l12_n352()
- fun_l13_n705
-end
-
-def fun_l12_n353()
- fun_l13_n872
-end
-
-def fun_l12_n354()
- fun_l13_n82
-end
-
-def fun_l12_n355()
- fun_l13_n664
-end
-
-def fun_l12_n356()
- fun_l13_n948
-end
-
-def fun_l12_n357()
- fun_l13_n430
-end
-
-def fun_l12_n358()
- fun_l13_n716
-end
-
-def fun_l12_n359()
- fun_l13_n319
-end
-
-def fun_l12_n360()
- fun_l13_n680
-end
-
-def fun_l12_n361()
- fun_l13_n961
-end
-
-def fun_l12_n362()
- fun_l13_n347
-end
-
-def fun_l12_n363()
- fun_l13_n164
-end
-
-def fun_l12_n364()
- fun_l13_n849
-end
-
-def fun_l12_n365()
- fun_l13_n448
-end
-
-def fun_l12_n366()
- fun_l13_n622
-end
-
-def fun_l12_n367()
- fun_l13_n191
-end
-
-def fun_l12_n368()
- fun_l13_n818
-end
-
-def fun_l12_n369()
- fun_l13_n525
-end
-
-def fun_l12_n370()
- fun_l13_n343
-end
-
-def fun_l12_n371()
- fun_l13_n789
-end
-
-def fun_l12_n372()
- fun_l13_n811
-end
-
-def fun_l12_n373()
- fun_l13_n503
-end
-
-def fun_l12_n374()
- fun_l13_n529
-end
-
-def fun_l12_n375()
- fun_l13_n471
-end
-
-def fun_l12_n376()
- fun_l13_n654
-end
-
-def fun_l12_n377()
- fun_l13_n155
-end
-
-def fun_l12_n378()
- fun_l13_n79
-end
-
-def fun_l12_n379()
- fun_l13_n545
-end
-
-def fun_l12_n380()
- fun_l13_n315
-end
-
-def fun_l12_n381()
- fun_l13_n655
-end
-
-def fun_l12_n382()
- fun_l13_n450
-end
-
-def fun_l12_n383()
- fun_l13_n353
-end
-
-def fun_l12_n384()
- fun_l13_n700
-end
-
-def fun_l12_n385()
- fun_l13_n524
-end
-
-def fun_l12_n386()
- fun_l13_n158
-end
-
-def fun_l12_n387()
- fun_l13_n880
-end
-
-def fun_l12_n388()
- fun_l13_n366
-end
-
-def fun_l12_n389()
- fun_l13_n848
-end
-
-def fun_l12_n390()
- fun_l13_n45
-end
-
-def fun_l12_n391()
- fun_l13_n318
-end
-
-def fun_l12_n392()
- fun_l13_n331
-end
-
-def fun_l12_n393()
- fun_l13_n528
-end
-
-def fun_l12_n394()
- fun_l13_n789
-end
-
-def fun_l12_n395()
- fun_l13_n71
-end
-
-def fun_l12_n396()
- fun_l13_n317
-end
-
-def fun_l12_n397()
- fun_l13_n671
-end
-
-def fun_l12_n398()
- fun_l13_n788
-end
-
-def fun_l12_n399()
- fun_l13_n276
-end
-
-def fun_l12_n400()
- fun_l13_n34
-end
-
-def fun_l12_n401()
- fun_l13_n321
-end
-
-def fun_l12_n402()
- fun_l13_n737
-end
-
-def fun_l12_n403()
- fun_l13_n900
-end
-
-def fun_l12_n404()
- fun_l13_n491
-end
-
-def fun_l12_n405()
- fun_l13_n826
-end
-
-def fun_l12_n406()
- fun_l13_n124
-end
-
-def fun_l12_n407()
- fun_l13_n658
-end
-
-def fun_l12_n408()
- fun_l13_n159
-end
-
-def fun_l12_n409()
- fun_l13_n481
-end
-
-def fun_l12_n410()
- fun_l13_n900
-end
-
-def fun_l12_n411()
- fun_l13_n481
-end
-
-def fun_l12_n412()
- fun_l13_n252
-end
-
-def fun_l12_n413()
- fun_l13_n732
-end
-
-def fun_l12_n414()
- fun_l13_n94
-end
-
-def fun_l12_n415()
- fun_l13_n699
-end
-
-def fun_l12_n416()
- fun_l13_n638
-end
-
-def fun_l12_n417()
- fun_l13_n108
-end
-
-def fun_l12_n418()
- fun_l13_n731
-end
-
-def fun_l12_n419()
- fun_l13_n965
-end
-
-def fun_l12_n420()
- fun_l13_n704
-end
-
-def fun_l12_n421()
- fun_l13_n710
-end
-
-def fun_l12_n422()
- fun_l13_n888
-end
-
-def fun_l12_n423()
- fun_l13_n331
-end
-
-def fun_l12_n424()
- fun_l13_n586
-end
-
-def fun_l12_n425()
- fun_l13_n302
-end
-
-def fun_l12_n426()
- fun_l13_n514
-end
-
-def fun_l12_n427()
- fun_l13_n533
-end
-
-def fun_l12_n428()
- fun_l13_n759
-end
-
-def fun_l12_n429()
- fun_l13_n652
-end
-
-def fun_l12_n430()
- fun_l13_n600
-end
-
-def fun_l12_n431()
- fun_l13_n808
-end
-
-def fun_l12_n432()
- fun_l13_n345
-end
-
-def fun_l12_n433()
- fun_l13_n257
-end
-
-def fun_l12_n434()
- fun_l13_n91
-end
-
-def fun_l12_n435()
- fun_l13_n627
-end
-
-def fun_l12_n436()
- fun_l13_n293
-end
-
-def fun_l12_n437()
- fun_l13_n618
-end
-
-def fun_l12_n438()
- fun_l13_n462
-end
-
-def fun_l12_n439()
- fun_l13_n0
-end
-
-def fun_l12_n440()
- fun_l13_n32
-end
-
-def fun_l12_n441()
- fun_l13_n4
-end
-
-def fun_l12_n442()
- fun_l13_n257
-end
-
-def fun_l12_n443()
- fun_l13_n548
-end
-
-def fun_l12_n444()
- fun_l13_n300
-end
-
-def fun_l12_n445()
- fun_l13_n253
-end
-
-def fun_l12_n446()
- fun_l13_n603
-end
-
-def fun_l12_n447()
- fun_l13_n295
-end
-
-def fun_l12_n448()
- fun_l13_n921
-end
-
-def fun_l12_n449()
- fun_l13_n119
-end
-
-def fun_l12_n450()
- fun_l13_n51
-end
-
-def fun_l12_n451()
- fun_l13_n544
-end
-
-def fun_l12_n452()
- fun_l13_n735
-end
-
-def fun_l12_n453()
- fun_l13_n20
-end
-
-def fun_l12_n454()
- fun_l13_n285
-end
-
-def fun_l12_n455()
- fun_l13_n370
-end
-
-def fun_l12_n456()
- fun_l13_n245
-end
-
-def fun_l12_n457()
- fun_l13_n909
-end
-
-def fun_l12_n458()
- fun_l13_n536
-end
-
-def fun_l12_n459()
- fun_l13_n665
-end
-
-def fun_l12_n460()
- fun_l13_n95
-end
-
-def fun_l12_n461()
- fun_l13_n499
-end
-
-def fun_l12_n462()
- fun_l13_n105
-end
-
-def fun_l12_n463()
- fun_l13_n300
-end
-
-def fun_l12_n464()
- fun_l13_n49
-end
-
-def fun_l12_n465()
- fun_l13_n567
-end
-
-def fun_l12_n466()
- fun_l13_n197
-end
-
-def fun_l12_n467()
- fun_l13_n918
-end
-
-def fun_l12_n468()
- fun_l13_n735
-end
-
-def fun_l12_n469()
- fun_l13_n415
-end
-
-def fun_l12_n470()
- fun_l13_n580
-end
-
-def fun_l12_n471()
- fun_l13_n119
-end
-
-def fun_l12_n472()
- fun_l13_n699
-end
-
-def fun_l12_n473()
- fun_l13_n128
-end
-
-def fun_l12_n474()
- fun_l13_n251
-end
-
-def fun_l12_n475()
- fun_l13_n986
-end
-
-def fun_l12_n476()
- fun_l13_n55
-end
-
-def fun_l12_n477()
- fun_l13_n394
-end
-
-def fun_l12_n478()
- fun_l13_n564
-end
-
-def fun_l12_n479()
- fun_l13_n927
-end
-
-def fun_l12_n480()
- fun_l13_n614
-end
-
-def fun_l12_n481()
- fun_l13_n425
-end
-
-def fun_l12_n482()
- fun_l13_n55
-end
-
-def fun_l12_n483()
- fun_l13_n212
-end
-
-def fun_l12_n484()
- fun_l13_n712
-end
-
-def fun_l12_n485()
- fun_l13_n393
-end
-
-def fun_l12_n486()
- fun_l13_n891
-end
-
-def fun_l12_n487()
- fun_l13_n54
-end
-
-def fun_l12_n488()
- fun_l13_n508
-end
-
-def fun_l12_n489()
- fun_l13_n266
-end
-
-def fun_l12_n490()
- fun_l13_n637
-end
-
-def fun_l12_n491()
- fun_l13_n683
-end
-
-def fun_l12_n492()
- fun_l13_n499
-end
-
-def fun_l12_n493()
- fun_l13_n770
-end
-
-def fun_l12_n494()
- fun_l13_n254
-end
-
-def fun_l12_n495()
- fun_l13_n801
-end
-
-def fun_l12_n496()
- fun_l13_n75
-end
-
-def fun_l12_n497()
- fun_l13_n652
-end
-
-def fun_l12_n498()
- fun_l13_n638
-end
-
-def fun_l12_n499()
- fun_l13_n515
-end
-
-def fun_l12_n500()
- fun_l13_n580
-end
-
-def fun_l12_n501()
- fun_l13_n198
-end
-
-def fun_l12_n502()
- fun_l13_n723
-end
-
-def fun_l12_n503()
- fun_l13_n855
-end
-
-def fun_l12_n504()
- fun_l13_n969
-end
-
-def fun_l12_n505()
- fun_l13_n16
-end
-
-def fun_l12_n506()
- fun_l13_n477
-end
-
-def fun_l12_n507()
- fun_l13_n873
-end
-
-def fun_l12_n508()
- fun_l13_n456
-end
-
-def fun_l12_n509()
- fun_l13_n711
-end
-
-def fun_l12_n510()
- fun_l13_n979
-end
-
-def fun_l12_n511()
- fun_l13_n830
-end
-
-def fun_l12_n512()
- fun_l13_n336
-end
-
-def fun_l12_n513()
- fun_l13_n579
-end
-
-def fun_l12_n514()
- fun_l13_n128
-end
-
-def fun_l12_n515()
- fun_l13_n977
-end
-
-def fun_l12_n516()
- fun_l13_n870
-end
-
-def fun_l12_n517()
- fun_l13_n133
-end
-
-def fun_l12_n518()
- fun_l13_n315
-end
-
-def fun_l12_n519()
- fun_l13_n324
-end
-
-def fun_l12_n520()
- fun_l13_n721
-end
-
-def fun_l12_n521()
- fun_l13_n392
-end
-
-def fun_l12_n522()
- fun_l13_n945
-end
-
-def fun_l12_n523()
- fun_l13_n497
-end
-
-def fun_l12_n524()
- fun_l13_n999
-end
-
-def fun_l12_n525()
- fun_l13_n152
-end
-
-def fun_l12_n526()
- fun_l13_n535
-end
-
-def fun_l12_n527()
- fun_l13_n938
-end
-
-def fun_l12_n528()
- fun_l13_n813
-end
-
-def fun_l12_n529()
- fun_l13_n497
-end
-
-def fun_l12_n530()
- fun_l13_n700
-end
-
-def fun_l12_n531()
- fun_l13_n493
-end
-
-def fun_l12_n532()
- fun_l13_n549
-end
-
-def fun_l12_n533()
- fun_l13_n406
-end
-
-def fun_l12_n534()
- fun_l13_n918
-end
-
-def fun_l12_n535()
- fun_l13_n891
-end
-
-def fun_l12_n536()
- fun_l13_n924
-end
-
-def fun_l12_n537()
- fun_l13_n753
-end
-
-def fun_l12_n538()
- fun_l13_n582
-end
-
-def fun_l12_n539()
- fun_l13_n769
-end
-
-def fun_l12_n540()
- fun_l13_n297
-end
-
-def fun_l12_n541()
- fun_l13_n261
-end
-
-def fun_l12_n542()
- fun_l13_n581
-end
-
-def fun_l12_n543()
- fun_l13_n667
-end
-
-def fun_l12_n544()
- fun_l13_n955
-end
-
-def fun_l12_n545()
- fun_l13_n296
-end
-
-def fun_l12_n546()
- fun_l13_n762
-end
-
-def fun_l12_n547()
- fun_l13_n755
-end
-
-def fun_l12_n548()
- fun_l13_n369
-end
-
-def fun_l12_n549()
- fun_l13_n685
-end
-
-def fun_l12_n550()
- fun_l13_n675
-end
-
-def fun_l12_n551()
- fun_l13_n430
-end
-
-def fun_l12_n552()
- fun_l13_n530
-end
-
-def fun_l12_n553()
- fun_l13_n17
-end
-
-def fun_l12_n554()
- fun_l13_n406
-end
-
-def fun_l12_n555()
- fun_l13_n687
-end
-
-def fun_l12_n556()
- fun_l13_n972
-end
-
-def fun_l12_n557()
- fun_l13_n561
-end
-
-def fun_l12_n558()
- fun_l13_n202
-end
-
-def fun_l12_n559()
- fun_l13_n788
-end
-
-def fun_l12_n560()
- fun_l13_n705
-end
-
-def fun_l12_n561()
- fun_l13_n434
-end
-
-def fun_l12_n562()
- fun_l13_n965
-end
-
-def fun_l12_n563()
- fun_l13_n525
-end
-
-def fun_l12_n564()
- fun_l13_n938
-end
-
-def fun_l12_n565()
- fun_l13_n346
-end
-
-def fun_l12_n566()
- fun_l13_n95
-end
-
-def fun_l12_n567()
- fun_l13_n458
-end
-
-def fun_l12_n568()
- fun_l13_n769
-end
-
-def fun_l12_n569()
- fun_l13_n858
-end
-
-def fun_l12_n570()
- fun_l13_n230
-end
-
-def fun_l12_n571()
- fun_l13_n977
-end
-
-def fun_l12_n572()
- fun_l13_n304
-end
-
-def fun_l12_n573()
- fun_l13_n271
-end
-
-def fun_l12_n574()
- fun_l13_n106
-end
-
-def fun_l12_n575()
- fun_l13_n733
-end
-
-def fun_l12_n576()
- fun_l13_n197
-end
-
-def fun_l12_n577()
- fun_l13_n624
-end
-
-def fun_l12_n578()
- fun_l13_n844
-end
-
-def fun_l12_n579()
- fun_l13_n268
-end
-
-def fun_l12_n580()
- fun_l13_n394
-end
-
-def fun_l12_n581()
- fun_l13_n573
-end
-
-def fun_l12_n582()
- fun_l13_n950
-end
-
-def fun_l12_n583()
- fun_l13_n163
-end
-
-def fun_l12_n584()
- fun_l13_n458
-end
-
-def fun_l12_n585()
- fun_l13_n569
-end
-
-def fun_l12_n586()
- fun_l13_n808
-end
-
-def fun_l12_n587()
- fun_l13_n830
-end
-
-def fun_l12_n588()
- fun_l13_n328
-end
-
-def fun_l12_n589()
- fun_l13_n235
-end
-
-def fun_l12_n590()
- fun_l13_n695
-end
-
-def fun_l12_n591()
- fun_l13_n543
-end
-
-def fun_l12_n592()
- fun_l13_n635
-end
-
-def fun_l12_n593()
- fun_l13_n783
-end
-
-def fun_l12_n594()
- fun_l13_n349
-end
-
-def fun_l12_n595()
- fun_l13_n108
-end
-
-def fun_l12_n596()
- fun_l13_n856
-end
-
-def fun_l12_n597()
- fun_l13_n743
-end
-
-def fun_l12_n598()
- fun_l13_n640
-end
-
-def fun_l12_n599()
- fun_l13_n768
-end
-
-def fun_l12_n600()
- fun_l13_n798
-end
-
-def fun_l12_n601()
- fun_l13_n941
-end
-
-def fun_l12_n602()
- fun_l13_n389
-end
-
-def fun_l12_n603()
- fun_l13_n624
-end
-
-def fun_l12_n604()
- fun_l13_n209
-end
-
-def fun_l12_n605()
- fun_l13_n636
-end
-
-def fun_l12_n606()
- fun_l13_n741
-end
-
-def fun_l12_n607()
- fun_l13_n461
-end
-
-def fun_l12_n608()
- fun_l13_n570
-end
-
-def fun_l12_n609()
- fun_l13_n358
-end
-
-def fun_l12_n610()
- fun_l13_n408
-end
-
-def fun_l12_n611()
- fun_l13_n693
-end
-
-def fun_l12_n612()
- fun_l13_n760
-end
-
-def fun_l12_n613()
- fun_l13_n402
-end
-
-def fun_l12_n614()
- fun_l13_n20
-end
-
-def fun_l12_n615()
- fun_l13_n15
-end
-
-def fun_l12_n616()
- fun_l13_n931
-end
-
-def fun_l12_n617()
- fun_l13_n58
-end
-
-def fun_l12_n618()
- fun_l13_n627
-end
-
-def fun_l12_n619()
- fun_l13_n149
-end
-
-def fun_l12_n620()
- fun_l13_n200
-end
-
-def fun_l12_n621()
- fun_l13_n832
-end
-
-def fun_l12_n622()
- fun_l13_n605
-end
-
-def fun_l12_n623()
- fun_l13_n868
-end
-
-def fun_l12_n624()
- fun_l13_n480
-end
-
-def fun_l12_n625()
- fun_l13_n991
-end
-
-def fun_l12_n626()
- fun_l13_n493
-end
-
-def fun_l12_n627()
- fun_l13_n2
-end
-
-def fun_l12_n628()
- fun_l13_n851
-end
-
-def fun_l12_n629()
- fun_l13_n864
-end
-
-def fun_l12_n630()
- fun_l13_n293
-end
-
-def fun_l12_n631()
- fun_l13_n909
-end
-
-def fun_l12_n632()
- fun_l13_n955
-end
-
-def fun_l12_n633()
- fun_l13_n276
-end
-
-def fun_l12_n634()
- fun_l13_n345
-end
-
-def fun_l12_n635()
- fun_l13_n606
-end
-
-def fun_l12_n636()
- fun_l13_n685
-end
-
-def fun_l12_n637()
- fun_l13_n989
-end
-
-def fun_l12_n638()
- fun_l13_n920
-end
-
-def fun_l12_n639()
- fun_l13_n702
-end
-
-def fun_l12_n640()
- fun_l13_n6
-end
-
-def fun_l12_n641()
- fun_l13_n216
-end
-
-def fun_l12_n642()
- fun_l13_n501
-end
-
-def fun_l12_n643()
- fun_l13_n500
-end
-
-def fun_l12_n644()
- fun_l13_n845
-end
-
-def fun_l12_n645()
- fun_l13_n758
-end
-
-def fun_l12_n646()
- fun_l13_n999
-end
-
-def fun_l12_n647()
- fun_l13_n30
-end
-
-def fun_l12_n648()
- fun_l13_n670
-end
-
-def fun_l12_n649()
- fun_l13_n551
-end
-
-def fun_l12_n650()
- fun_l13_n668
-end
-
-def fun_l12_n651()
- fun_l13_n51
-end
-
-def fun_l12_n652()
- fun_l13_n35
-end
-
-def fun_l12_n653()
- fun_l13_n523
-end
-
-def fun_l12_n654()
- fun_l13_n118
-end
-
-def fun_l12_n655()
- fun_l13_n49
-end
-
-def fun_l12_n656()
- fun_l13_n457
-end
-
-def fun_l12_n657()
- fun_l13_n669
-end
-
-def fun_l12_n658()
- fun_l13_n93
-end
-
-def fun_l12_n659()
- fun_l13_n809
-end
-
-def fun_l12_n660()
- fun_l13_n759
-end
-
-def fun_l12_n661()
- fun_l13_n224
-end
-
-def fun_l12_n662()
- fun_l13_n876
-end
-
-def fun_l12_n663()
- fun_l13_n784
-end
-
-def fun_l12_n664()
- fun_l13_n39
-end
-
-def fun_l12_n665()
- fun_l13_n930
-end
-
-def fun_l12_n666()
- fun_l13_n250
-end
-
-def fun_l12_n667()
- fun_l13_n247
-end
-
-def fun_l12_n668()
- fun_l13_n907
-end
-
-def fun_l12_n669()
- fun_l13_n333
-end
-
-def fun_l12_n670()
- fun_l13_n97
-end
-
-def fun_l12_n671()
- fun_l13_n475
-end
-
-def fun_l12_n672()
- fun_l13_n480
-end
-
-def fun_l12_n673()
- fun_l13_n943
-end
-
-def fun_l12_n674()
- fun_l13_n263
-end
-
-def fun_l12_n675()
- fun_l13_n879
-end
-
-def fun_l12_n676()
- fun_l13_n537
-end
-
-def fun_l12_n677()
- fun_l13_n475
-end
-
-def fun_l12_n678()
- fun_l13_n626
-end
-
-def fun_l12_n679()
- fun_l13_n397
-end
-
-def fun_l12_n680()
- fun_l13_n194
-end
-
-def fun_l12_n681()
- fun_l13_n468
-end
-
-def fun_l12_n682()
- fun_l13_n566
-end
-
-def fun_l12_n683()
- fun_l13_n573
-end
-
-def fun_l12_n684()
- fun_l13_n354
-end
-
-def fun_l12_n685()
- fun_l13_n251
-end
-
-def fun_l12_n686()
- fun_l13_n626
-end
-
-def fun_l12_n687()
- fun_l13_n954
-end
-
-def fun_l12_n688()
- fun_l13_n732
-end
-
-def fun_l12_n689()
- fun_l13_n543
-end
-
-def fun_l12_n690()
- fun_l13_n878
-end
-
-def fun_l12_n691()
- fun_l13_n520
-end
-
-def fun_l12_n692()
- fun_l13_n262
-end
-
-def fun_l12_n693()
- fun_l13_n179
-end
-
-def fun_l12_n694()
- fun_l13_n851
-end
-
-def fun_l12_n695()
- fun_l13_n821
-end
-
-def fun_l12_n696()
- fun_l13_n951
-end
-
-def fun_l12_n697()
- fun_l13_n707
-end
-
-def fun_l12_n698()
- fun_l13_n388
-end
-
-def fun_l12_n699()
- fun_l13_n660
-end
-
-def fun_l12_n700()
- fun_l13_n658
-end
-
-def fun_l12_n701()
- fun_l13_n463
-end
-
-def fun_l12_n702()
- fun_l13_n547
-end
-
-def fun_l12_n703()
- fun_l13_n319
-end
-
-def fun_l12_n704()
- fun_l13_n405
-end
-
-def fun_l12_n705()
- fun_l13_n645
-end
-
-def fun_l12_n706()
- fun_l13_n147
-end
-
-def fun_l12_n707()
- fun_l13_n582
-end
-
-def fun_l12_n708()
- fun_l13_n618
-end
-
-def fun_l12_n709()
- fun_l13_n156
-end
-
-def fun_l12_n710()
- fun_l13_n606
-end
-
-def fun_l12_n711()
- fun_l13_n525
-end
-
-def fun_l12_n712()
- fun_l13_n513
-end
-
-def fun_l12_n713()
- fun_l13_n827
-end
-
-def fun_l12_n714()
- fun_l13_n438
-end
-
-def fun_l12_n715()
- fun_l13_n72
-end
-
-def fun_l12_n716()
- fun_l13_n364
-end
-
-def fun_l12_n717()
- fun_l13_n380
-end
-
-def fun_l12_n718()
- fun_l13_n898
-end
-
-def fun_l12_n719()
- fun_l13_n998
-end
-
-def fun_l12_n720()
- fun_l13_n679
-end
-
-def fun_l12_n721()
- fun_l13_n738
-end
-
-def fun_l12_n722()
- fun_l13_n887
-end
-
-def fun_l12_n723()
- fun_l13_n73
-end
-
-def fun_l12_n724()
- fun_l13_n309
-end
-
-def fun_l12_n725()
- fun_l13_n791
-end
-
-def fun_l12_n726()
- fun_l13_n939
-end
-
-def fun_l12_n727()
- fun_l13_n27
-end
-
-def fun_l12_n728()
- fun_l13_n269
-end
-
-def fun_l12_n729()
- fun_l13_n418
-end
-
-def fun_l12_n730()
- fun_l13_n659
-end
-
-def fun_l12_n731()
- fun_l13_n257
-end
-
-def fun_l12_n732()
- fun_l13_n519
-end
-
-def fun_l12_n733()
- fun_l13_n305
-end
-
-def fun_l12_n734()
- fun_l13_n994
-end
-
-def fun_l12_n735()
- fun_l13_n159
-end
-
-def fun_l12_n736()
- fun_l13_n704
-end
-
-def fun_l12_n737()
- fun_l13_n826
-end
-
-def fun_l12_n738()
- fun_l13_n204
-end
-
-def fun_l12_n739()
- fun_l13_n886
-end
-
-def fun_l12_n740()
- fun_l13_n403
-end
-
-def fun_l12_n741()
- fun_l13_n567
-end
-
-def fun_l12_n742()
- fun_l13_n425
-end
-
-def fun_l12_n743()
- fun_l13_n174
-end
-
-def fun_l12_n744()
- fun_l13_n530
-end
-
-def fun_l12_n745()
- fun_l13_n143
-end
-
-def fun_l12_n746()
- fun_l13_n950
-end
-
-def fun_l12_n747()
- fun_l13_n982
-end
-
-def fun_l12_n748()
- fun_l13_n340
-end
-
-def fun_l12_n749()
- fun_l13_n964
-end
-
-def fun_l12_n750()
- fun_l13_n747
-end
-
-def fun_l12_n751()
- fun_l13_n886
-end
-
-def fun_l12_n752()
- fun_l13_n148
-end
-
-def fun_l12_n753()
- fun_l13_n675
-end
-
-def fun_l12_n754()
- fun_l13_n69
-end
-
-def fun_l12_n755()
- fun_l13_n992
-end
-
-def fun_l12_n756()
- fun_l13_n126
-end
-
-def fun_l12_n757()
- fun_l13_n919
-end
-
-def fun_l12_n758()
- fun_l13_n286
-end
-
-def fun_l12_n759()
- fun_l13_n472
-end
-
-def fun_l12_n760()
- fun_l13_n35
-end
-
-def fun_l12_n761()
- fun_l13_n130
-end
-
-def fun_l12_n762()
- fun_l13_n394
-end
-
-def fun_l12_n763()
- fun_l13_n372
-end
-
-def fun_l12_n764()
- fun_l13_n630
-end
-
-def fun_l12_n765()
- fun_l13_n439
-end
-
-def fun_l12_n766()
- fun_l13_n973
-end
-
-def fun_l12_n767()
- fun_l13_n859
-end
-
-def fun_l12_n768()
- fun_l13_n903
-end
-
-def fun_l12_n769()
- fun_l13_n441
-end
-
-def fun_l12_n770()
- fun_l13_n530
-end
-
-def fun_l12_n771()
- fun_l13_n584
-end
-
-def fun_l12_n772()
- fun_l13_n676
-end
-
-def fun_l12_n773()
- fun_l13_n595
-end
-
-def fun_l12_n774()
- fun_l13_n523
-end
-
-def fun_l12_n775()
- fun_l13_n619
-end
-
-def fun_l12_n776()
- fun_l13_n727
-end
-
-def fun_l12_n777()
- fun_l13_n793
-end
-
-def fun_l12_n778()
- fun_l13_n55
-end
-
-def fun_l12_n779()
- fun_l13_n675
-end
-
-def fun_l12_n780()
- fun_l13_n779
-end
-
-def fun_l12_n781()
- fun_l13_n413
-end
-
-def fun_l12_n782()
- fun_l13_n148
-end
-
-def fun_l12_n783()
- fun_l13_n149
-end
-
-def fun_l12_n784()
- fun_l13_n242
-end
-
-def fun_l12_n785()
- fun_l13_n619
-end
-
-def fun_l12_n786()
- fun_l13_n171
-end
-
-def fun_l12_n787()
- fun_l13_n646
-end
-
-def fun_l12_n788()
- fun_l13_n470
-end
-
-def fun_l12_n789()
- fun_l13_n812
-end
-
-def fun_l12_n790()
- fun_l13_n891
-end
-
-def fun_l12_n791()
- fun_l13_n958
-end
-
-def fun_l12_n792()
- fun_l13_n451
-end
-
-def fun_l12_n793()
- fun_l13_n651
-end
-
-def fun_l12_n794()
- fun_l13_n904
-end
-
-def fun_l12_n795()
- fun_l13_n400
-end
-
-def fun_l12_n796()
- fun_l13_n286
-end
-
-def fun_l12_n797()
- fun_l13_n17
-end
-
-def fun_l12_n798()
- fun_l13_n280
-end
-
-def fun_l12_n799()
- fun_l13_n19
-end
-
-def fun_l12_n800()
- fun_l13_n909
-end
-
-def fun_l12_n801()
- fun_l13_n434
-end
-
-def fun_l12_n802()
- fun_l13_n920
-end
-
-def fun_l12_n803()
- fun_l13_n196
-end
-
-def fun_l12_n804()
- fun_l13_n374
-end
-
-def fun_l12_n805()
- fun_l13_n393
-end
-
-def fun_l12_n806()
- fun_l13_n623
-end
-
-def fun_l12_n807()
- fun_l13_n846
-end
-
-def fun_l12_n808()
- fun_l13_n354
-end
-
-def fun_l12_n809()
- fun_l13_n16
-end
-
-def fun_l12_n810()
- fun_l13_n371
-end
-
-def fun_l12_n811()
- fun_l13_n139
-end
-
-def fun_l12_n812()
- fun_l13_n156
-end
-
-def fun_l12_n813()
- fun_l13_n799
-end
-
-def fun_l12_n814()
- fun_l13_n817
-end
-
-def fun_l12_n815()
- fun_l13_n475
-end
-
-def fun_l12_n816()
- fun_l13_n799
-end
-
-def fun_l12_n817()
- fun_l13_n838
-end
-
-def fun_l12_n818()
- fun_l13_n297
-end
-
-def fun_l12_n819()
- fun_l13_n834
-end
-
-def fun_l12_n820()
- fun_l13_n788
-end
-
-def fun_l12_n821()
- fun_l13_n649
-end
-
-def fun_l12_n822()
- fun_l13_n908
-end
-
-def fun_l12_n823()
- fun_l13_n264
-end
-
-def fun_l12_n824()
- fun_l13_n66
-end
-
-def fun_l12_n825()
- fun_l13_n367
-end
-
-def fun_l12_n826()
- fun_l13_n569
-end
-
-def fun_l12_n827()
- fun_l13_n735
-end
-
-def fun_l12_n828()
- fun_l13_n704
-end
-
-def fun_l12_n829()
- fun_l13_n440
-end
-
-def fun_l12_n830()
- fun_l13_n126
-end
-
-def fun_l12_n831()
- fun_l13_n590
-end
-
-def fun_l12_n832()
- fun_l13_n485
-end
-
-def fun_l12_n833()
- fun_l13_n869
-end
-
-def fun_l12_n834()
- fun_l13_n691
-end
-
-def fun_l12_n835()
- fun_l13_n912
-end
-
-def fun_l12_n836()
- fun_l13_n618
-end
-
-def fun_l12_n837()
- fun_l13_n64
-end
-
-def fun_l12_n838()
- fun_l13_n927
-end
-
-def fun_l12_n839()
- fun_l13_n500
-end
-
-def fun_l12_n840()
- fun_l13_n280
-end
-
-def fun_l12_n841()
- fun_l13_n272
-end
-
-def fun_l12_n842()
- fun_l13_n66
-end
-
-def fun_l12_n843()
- fun_l13_n169
-end
-
-def fun_l12_n844()
- fun_l13_n568
-end
-
-def fun_l12_n845()
- fun_l13_n678
-end
-
-def fun_l12_n846()
- fun_l13_n269
-end
-
-def fun_l12_n847()
- fun_l13_n936
-end
-
-def fun_l12_n848()
- fun_l13_n34
-end
-
-def fun_l12_n849()
- fun_l13_n475
-end
-
-def fun_l12_n850()
- fun_l13_n558
-end
-
-def fun_l12_n851()
- fun_l13_n779
-end
-
-def fun_l12_n852()
- fun_l13_n421
-end
-
-def fun_l12_n853()
- fun_l13_n339
-end
-
-def fun_l12_n854()
- fun_l13_n266
-end
-
-def fun_l12_n855()
- fun_l13_n346
-end
-
-def fun_l12_n856()
- fun_l13_n247
-end
-
-def fun_l12_n857()
- fun_l13_n608
-end
-
-def fun_l12_n858()
- fun_l13_n878
-end
-
-def fun_l12_n859()
- fun_l13_n89
-end
-
-def fun_l12_n860()
- fun_l13_n380
-end
-
-def fun_l12_n861()
- fun_l13_n859
-end
-
-def fun_l12_n862()
- fun_l13_n955
-end
-
-def fun_l12_n863()
- fun_l13_n392
-end
-
-def fun_l12_n864()
- fun_l13_n43
-end
-
-def fun_l12_n865()
- fun_l13_n506
-end
-
-def fun_l12_n866()
- fun_l13_n45
-end
-
-def fun_l12_n867()
- fun_l13_n898
-end
-
-def fun_l12_n868()
- fun_l13_n1
-end
-
-def fun_l12_n869()
- fun_l13_n159
-end
-
-def fun_l12_n870()
- fun_l13_n265
-end
-
-def fun_l12_n871()
- fun_l13_n540
-end
-
-def fun_l12_n872()
- fun_l13_n563
-end
-
-def fun_l12_n873()
- fun_l13_n845
-end
-
-def fun_l12_n874()
- fun_l13_n753
-end
-
-def fun_l12_n875()
- fun_l13_n815
-end
-
-def fun_l12_n876()
- fun_l13_n483
-end
-
-def fun_l12_n877()
- fun_l13_n868
-end
-
-def fun_l12_n878()
- fun_l13_n961
-end
-
-def fun_l12_n879()
- fun_l13_n688
-end
-
-def fun_l12_n880()
- fun_l13_n357
-end
-
-def fun_l12_n881()
- fun_l13_n543
-end
-
-def fun_l12_n882()
- fun_l13_n965
-end
-
-def fun_l12_n883()
- fun_l13_n977
-end
-
-def fun_l12_n884()
- fun_l13_n185
-end
-
-def fun_l12_n885()
- fun_l13_n734
-end
-
-def fun_l12_n886()
- fun_l13_n343
-end
-
-def fun_l12_n887()
- fun_l13_n43
-end
-
-def fun_l12_n888()
- fun_l13_n248
-end
-
-def fun_l12_n889()
- fun_l13_n943
-end
-
-def fun_l12_n890()
- fun_l13_n504
-end
-
-def fun_l12_n891()
- fun_l13_n330
-end
-
-def fun_l12_n892()
- fun_l13_n898
-end
-
-def fun_l12_n893()
- fun_l13_n495
-end
-
-def fun_l12_n894()
- fun_l13_n180
-end
-
-def fun_l12_n895()
- fun_l13_n134
-end
-
-def fun_l12_n896()
- fun_l13_n883
-end
-
-def fun_l12_n897()
- fun_l13_n881
-end
-
-def fun_l12_n898()
- fun_l13_n376
-end
-
-def fun_l12_n899()
- fun_l13_n840
-end
-
-def fun_l12_n900()
- fun_l13_n784
-end
-
-def fun_l12_n901()
- fun_l13_n694
-end
-
-def fun_l12_n902()
- fun_l13_n431
-end
-
-def fun_l12_n903()
- fun_l13_n16
-end
-
-def fun_l12_n904()
- fun_l13_n192
-end
-
-def fun_l12_n905()
- fun_l13_n932
-end
-
-def fun_l12_n906()
- fun_l13_n160
-end
-
-def fun_l12_n907()
- fun_l13_n426
-end
-
-def fun_l12_n908()
- fun_l13_n283
-end
-
-def fun_l12_n909()
- fun_l13_n569
-end
-
-def fun_l12_n910()
- fun_l13_n206
-end
-
-def fun_l12_n911()
- fun_l13_n741
-end
-
-def fun_l12_n912()
- fun_l13_n173
-end
-
-def fun_l12_n913()
- fun_l13_n272
-end
-
-def fun_l12_n914()
- fun_l13_n172
-end
-
-def fun_l12_n915()
- fun_l13_n63
-end
-
-def fun_l12_n916()
- fun_l13_n749
-end
-
-def fun_l12_n917()
- fun_l13_n450
-end
-
-def fun_l12_n918()
- fun_l13_n53
-end
-
-def fun_l12_n919()
- fun_l13_n331
-end
-
-def fun_l12_n920()
- fun_l13_n186
-end
-
-def fun_l12_n921()
- fun_l13_n454
-end
-
-def fun_l12_n922()
- fun_l13_n763
-end
-
-def fun_l12_n923()
- fun_l13_n124
-end
-
-def fun_l12_n924()
- fun_l13_n134
-end
-
-def fun_l12_n925()
- fun_l13_n38
-end
-
-def fun_l12_n926()
- fun_l13_n645
-end
-
-def fun_l12_n927()
- fun_l13_n683
-end
-
-def fun_l12_n928()
- fun_l13_n859
-end
-
-def fun_l12_n929()
- fun_l13_n406
-end
-
-def fun_l12_n930()
- fun_l13_n534
-end
-
-def fun_l12_n931()
- fun_l13_n72
-end
-
-def fun_l12_n932()
- fun_l13_n288
-end
-
-def fun_l12_n933()
- fun_l13_n3
-end
-
-def fun_l12_n934()
- fun_l13_n852
-end
-
-def fun_l12_n935()
- fun_l13_n290
-end
-
-def fun_l12_n936()
- fun_l13_n237
-end
-
-def fun_l12_n937()
- fun_l13_n674
-end
-
-def fun_l12_n938()
- fun_l13_n278
-end
-
-def fun_l12_n939()
- fun_l13_n579
-end
-
-def fun_l12_n940()
- fun_l13_n736
-end
-
-def fun_l12_n941()
- fun_l13_n684
-end
-
-def fun_l12_n942()
- fun_l13_n744
-end
-
-def fun_l12_n943()
- fun_l13_n726
-end
-
-def fun_l12_n944()
- fun_l13_n767
-end
-
-def fun_l12_n945()
- fun_l13_n466
-end
-
-def fun_l12_n946()
- fun_l13_n679
-end
-
-def fun_l12_n947()
- fun_l13_n774
-end
-
-def fun_l12_n948()
- fun_l13_n104
-end
-
-def fun_l12_n949()
- fun_l13_n744
-end
-
-def fun_l12_n950()
- fun_l13_n339
-end
-
-def fun_l12_n951()
- fun_l13_n848
-end
-
-def fun_l12_n952()
- fun_l13_n194
-end
-
-def fun_l12_n953()
- fun_l13_n733
-end
-
-def fun_l12_n954()
- fun_l13_n430
-end
-
-def fun_l12_n955()
- fun_l13_n95
-end
-
-def fun_l12_n956()
- fun_l13_n68
-end
-
-def fun_l12_n957()
- fun_l13_n951
-end
-
-def fun_l12_n958()
- fun_l13_n671
-end
-
-def fun_l12_n959()
- fun_l13_n464
-end
-
-def fun_l12_n960()
- fun_l13_n700
-end
-
-def fun_l12_n961()
- fun_l13_n662
-end
-
-def fun_l12_n962()
- fun_l13_n765
-end
-
-def fun_l12_n963()
- fun_l13_n662
-end
-
-def fun_l12_n964()
- fun_l13_n750
-end
-
-def fun_l12_n965()
- fun_l13_n935
-end
-
-def fun_l12_n966()
- fun_l13_n585
-end
-
-def fun_l12_n967()
- fun_l13_n430
-end
-
-def fun_l12_n968()
- fun_l13_n219
-end
-
-def fun_l12_n969()
- fun_l13_n895
-end
-
-def fun_l12_n970()
- fun_l13_n47
-end
-
-def fun_l12_n971()
- fun_l13_n755
-end
-
-def fun_l12_n972()
- fun_l13_n56
-end
-
-def fun_l12_n973()
- fun_l13_n341
-end
-
-def fun_l12_n974()
- fun_l13_n192
-end
-
-def fun_l12_n975()
- fun_l13_n434
-end
-
-def fun_l12_n976()
- fun_l13_n215
-end
-
-def fun_l12_n977()
- fun_l13_n747
-end
-
-def fun_l12_n978()
- fun_l13_n463
-end
-
-def fun_l12_n979()
- fun_l13_n408
-end
-
-def fun_l12_n980()
- fun_l13_n993
-end
-
-def fun_l12_n981()
- fun_l13_n583
-end
-
-def fun_l12_n982()
- fun_l13_n752
-end
-
-def fun_l12_n983()
- fun_l13_n583
-end
-
-def fun_l12_n984()
- fun_l13_n601
-end
-
-def fun_l12_n985()
- fun_l13_n490
-end
-
-def fun_l12_n986()
- fun_l13_n61
-end
-
-def fun_l12_n987()
- fun_l13_n89
-end
-
-def fun_l12_n988()
- fun_l13_n533
-end
-
-def fun_l12_n989()
- fun_l13_n628
-end
-
-def fun_l12_n990()
- fun_l13_n301
-end
-
-def fun_l12_n991()
- fun_l13_n553
-end
-
-def fun_l12_n992()
- fun_l13_n105
-end
-
-def fun_l12_n993()
- fun_l13_n595
-end
-
-def fun_l12_n994()
- fun_l13_n384
-end
-
-def fun_l12_n995()
- fun_l13_n704
-end
-
-def fun_l12_n996()
- fun_l13_n657
-end
-
-def fun_l12_n997()
- fun_l13_n468
-end
-
-def fun_l12_n998()
- fun_l13_n582
-end
-
-def fun_l12_n999()
- fun_l13_n335
-end
-
-def fun_l13_n0()
- fun_l14_n123
-end
-
-def fun_l13_n1()
- fun_l14_n796
-end
-
-def fun_l13_n2()
- fun_l14_n217
-end
-
-def fun_l13_n3()
- fun_l14_n810
-end
-
-def fun_l13_n4()
- fun_l14_n297
-end
-
-def fun_l13_n5()
- fun_l14_n682
-end
-
-def fun_l13_n6()
- fun_l14_n397
-end
-
-def fun_l13_n7()
- fun_l14_n372
-end
-
-def fun_l13_n8()
- fun_l14_n688
-end
-
-def fun_l13_n9()
- fun_l14_n250
-end
-
-def fun_l13_n10()
- fun_l14_n248
-end
-
-def fun_l13_n11()
- fun_l14_n335
-end
-
-def fun_l13_n12()
- fun_l14_n404
-end
-
-def fun_l13_n13()
- fun_l14_n223
-end
-
-def fun_l13_n14()
- fun_l14_n894
-end
-
-def fun_l13_n15()
- fun_l14_n537
-end
-
-def fun_l13_n16()
- fun_l14_n641
-end
-
-def fun_l13_n17()
- fun_l14_n509
-end
-
-def fun_l13_n18()
- fun_l14_n624
-end
-
-def fun_l13_n19()
- fun_l14_n224
-end
-
-def fun_l13_n20()
- fun_l14_n283
-end
-
-def fun_l13_n21()
- fun_l14_n624
-end
-
-def fun_l13_n22()
- fun_l14_n972
-end
-
-def fun_l13_n23()
- fun_l14_n698
-end
-
-def fun_l13_n24()
- fun_l14_n313
-end
-
-def fun_l13_n25()
- fun_l14_n344
-end
-
-def fun_l13_n26()
- fun_l14_n823
-end
-
-def fun_l13_n27()
- fun_l14_n699
-end
-
-def fun_l13_n28()
- fun_l14_n943
-end
-
-def fun_l13_n29()
- fun_l14_n69
-end
-
-def fun_l13_n30()
- fun_l14_n839
-end
-
-def fun_l13_n31()
- fun_l14_n834
-end
-
-def fun_l13_n32()
- fun_l14_n143
-end
-
-def fun_l13_n33()
- fun_l14_n500
-end
-
-def fun_l13_n34()
- fun_l14_n266
-end
-
-def fun_l13_n35()
- fun_l14_n576
-end
-
-def fun_l13_n36()
- fun_l14_n247
-end
-
-def fun_l13_n37()
- fun_l14_n847
-end
-
-def fun_l13_n38()
- fun_l14_n474
-end
-
-def fun_l13_n39()
- fun_l14_n293
-end
-
-def fun_l13_n40()
- fun_l14_n475
-end
-
-def fun_l13_n41()
- fun_l14_n641
-end
-
-def fun_l13_n42()
- fun_l14_n583
-end
-
-def fun_l13_n43()
- fun_l14_n857
-end
-
-def fun_l13_n44()
- fun_l14_n97
-end
-
-def fun_l13_n45()
- fun_l14_n196
-end
-
-def fun_l13_n46()
- fun_l14_n201
-end
-
-def fun_l13_n47()
- fun_l14_n877
-end
-
-def fun_l13_n48()
- fun_l14_n464
-end
-
-def fun_l13_n49()
- fun_l14_n706
-end
-
-def fun_l13_n50()
- fun_l14_n274
-end
-
-def fun_l13_n51()
- fun_l14_n844
-end
-
-def fun_l13_n52()
- fun_l14_n883
-end
-
-def fun_l13_n53()
- fun_l14_n77
-end
-
-def fun_l13_n54()
- fun_l14_n981
-end
-
-def fun_l13_n55()
- fun_l14_n189
-end
-
-def fun_l13_n56()
- fun_l14_n597
-end
-
-def fun_l13_n57()
- fun_l14_n333
-end
-
-def fun_l13_n58()
- fun_l14_n566
-end
-
-def fun_l13_n59()
- fun_l14_n231
-end
-
-def fun_l13_n60()
- fun_l14_n207
-end
-
-def fun_l13_n61()
- fun_l14_n555
-end
-
-def fun_l13_n62()
- fun_l14_n46
-end
-
-def fun_l13_n63()
- fun_l14_n879
-end
-
-def fun_l13_n64()
- fun_l14_n672
-end
-
-def fun_l13_n65()
- fun_l14_n266
-end
-
-def fun_l13_n66()
- fun_l14_n898
-end
-
-def fun_l13_n67()
- fun_l14_n966
-end
-
-def fun_l13_n68()
- fun_l14_n63
-end
-
-def fun_l13_n69()
- fun_l14_n531
-end
-
-def fun_l13_n70()
- fun_l14_n80
-end
-
-def fun_l13_n71()
- fun_l14_n206
-end
-
-def fun_l13_n72()
- fun_l14_n594
-end
-
-def fun_l13_n73()
- fun_l14_n852
-end
-
-def fun_l13_n74()
- fun_l14_n443
-end
-
-def fun_l13_n75()
- fun_l14_n987
-end
-
-def fun_l13_n76()
- fun_l14_n119
-end
-
-def fun_l13_n77()
- fun_l14_n113
-end
-
-def fun_l13_n78()
- fun_l14_n904
-end
-
-def fun_l13_n79()
- fun_l14_n88
-end
-
-def fun_l13_n80()
- fun_l14_n209
-end
-
-def fun_l13_n81()
- fun_l14_n190
-end
-
-def fun_l13_n82()
- fun_l14_n594
-end
-
-def fun_l13_n83()
- fun_l14_n87
-end
-
-def fun_l13_n84()
- fun_l14_n206
-end
-
-def fun_l13_n85()
- fun_l14_n974
-end
-
-def fun_l13_n86()
- fun_l14_n646
-end
-
-def fun_l13_n87()
- fun_l14_n450
-end
-
-def fun_l13_n88()
- fun_l14_n981
-end
-
-def fun_l13_n89()
- fun_l14_n277
-end
-
-def fun_l13_n90()
- fun_l14_n309
-end
-
-def fun_l13_n91()
- fun_l14_n648
-end
-
-def fun_l13_n92()
- fun_l14_n353
-end
-
-def fun_l13_n93()
- fun_l14_n43
-end
-
-def fun_l13_n94()
- fun_l14_n217
-end
-
-def fun_l13_n95()
- fun_l14_n945
-end
-
-def fun_l13_n96()
- fun_l14_n172
-end
-
-def fun_l13_n97()
- fun_l14_n604
-end
-
-def fun_l13_n98()
- fun_l14_n252
-end
-
-def fun_l13_n99()
- fun_l14_n478
-end
-
-def fun_l13_n100()
- fun_l14_n564
-end
-
-def fun_l13_n101()
- fun_l14_n937
-end
-
-def fun_l13_n102()
- fun_l14_n940
-end
-
-def fun_l13_n103()
- fun_l14_n110
-end
-
-def fun_l13_n104()
- fun_l14_n175
-end
-
-def fun_l13_n105()
- fun_l14_n708
-end
-
-def fun_l13_n106()
- fun_l14_n161
-end
-
-def fun_l13_n107()
- fun_l14_n129
-end
-
-def fun_l13_n108()
- fun_l14_n186
-end
-
-def fun_l13_n109()
- fun_l14_n449
-end
-
-def fun_l13_n110()
- fun_l14_n358
-end
-
-def fun_l13_n111()
- fun_l14_n278
-end
-
-def fun_l13_n112()
- fun_l14_n598
-end
-
-def fun_l13_n113()
- fun_l14_n896
-end
-
-def fun_l13_n114()
- fun_l14_n964
-end
-
-def fun_l13_n115()
- fun_l14_n986
-end
-
-def fun_l13_n116()
- fun_l14_n268
-end
-
-def fun_l13_n117()
- fun_l14_n521
-end
-
-def fun_l13_n118()
- fun_l14_n968
-end
-
-def fun_l13_n119()
- fun_l14_n380
-end
-
-def fun_l13_n120()
- fun_l14_n549
-end
-
-def fun_l13_n121()
- fun_l14_n300
-end
-
-def fun_l13_n122()
- fun_l14_n246
-end
-
-def fun_l13_n123()
- fun_l14_n329
-end
-
-def fun_l13_n124()
- fun_l14_n134
-end
-
-def fun_l13_n125()
- fun_l14_n740
-end
-
-def fun_l13_n126()
- fun_l14_n965
-end
-
-def fun_l13_n127()
- fun_l14_n284
-end
-
-def fun_l13_n128()
- fun_l14_n409
-end
-
-def fun_l13_n129()
- fun_l14_n597
-end
-
-def fun_l13_n130()
- fun_l14_n285
-end
-
-def fun_l13_n131()
- fun_l14_n270
-end
-
-def fun_l13_n132()
- fun_l14_n66
-end
-
-def fun_l13_n133()
- fun_l14_n588
-end
-
-def fun_l13_n134()
- fun_l14_n534
-end
-
-def fun_l13_n135()
- fun_l14_n673
-end
-
-def fun_l13_n136()
- fun_l14_n867
-end
-
-def fun_l13_n137()
- fun_l14_n157
-end
-
-def fun_l13_n138()
- fun_l14_n755
-end
-
-def fun_l13_n139()
- fun_l14_n68
-end
-
-def fun_l13_n140()
- fun_l14_n859
-end
-
-def fun_l13_n141()
- fun_l14_n804
-end
-
-def fun_l13_n142()
- fun_l14_n300
-end
-
-def fun_l13_n143()
- fun_l14_n157
-end
-
-def fun_l13_n144()
- fun_l14_n376
-end
-
-def fun_l13_n145()
- fun_l14_n62
-end
-
-def fun_l13_n146()
- fun_l14_n755
-end
-
-def fun_l13_n147()
- fun_l14_n547
-end
-
-def fun_l13_n148()
- fun_l14_n223
-end
-
-def fun_l13_n149()
- fun_l14_n277
-end
-
-def fun_l13_n150()
- fun_l14_n57
-end
-
-def fun_l13_n151()
- fun_l14_n552
-end
-
-def fun_l13_n152()
- fun_l14_n390
-end
-
-def fun_l13_n153()
- fun_l14_n691
-end
-
-def fun_l13_n154()
- fun_l14_n871
-end
-
-def fun_l13_n155()
- fun_l14_n14
-end
-
-def fun_l13_n156()
- fun_l14_n68
-end
-
-def fun_l13_n157()
- fun_l14_n589
-end
-
-def fun_l13_n158()
- fun_l14_n504
-end
-
-def fun_l13_n159()
- fun_l14_n966
-end
-
-def fun_l13_n160()
- fun_l14_n62
-end
-
-def fun_l13_n161()
- fun_l14_n880
-end
-
-def fun_l13_n162()
- fun_l14_n897
-end
-
-def fun_l13_n163()
- fun_l14_n630
-end
-
-def fun_l13_n164()
- fun_l14_n129
-end
-
-def fun_l13_n165()
- fun_l14_n461
-end
-
-def fun_l13_n166()
- fun_l14_n193
-end
-
-def fun_l13_n167()
- fun_l14_n588
-end
-
-def fun_l13_n168()
- fun_l14_n49
-end
-
-def fun_l13_n169()
- fun_l14_n872
-end
-
-def fun_l13_n170()
- fun_l14_n199
-end
-
-def fun_l13_n171()
- fun_l14_n887
-end
-
-def fun_l13_n172()
- fun_l14_n932
-end
-
-def fun_l13_n173()
- fun_l14_n616
-end
-
-def fun_l13_n174()
- fun_l14_n62
-end
-
-def fun_l13_n175()
- fun_l14_n162
-end
-
-def fun_l13_n176()
- fun_l14_n979
-end
-
-def fun_l13_n177()
- fun_l14_n813
-end
-
-def fun_l13_n178()
- fun_l14_n529
-end
-
-def fun_l13_n179()
- fun_l14_n202
-end
-
-def fun_l13_n180()
- fun_l14_n916
-end
-
-def fun_l13_n181()
- fun_l14_n719
-end
-
-def fun_l13_n182()
- fun_l14_n256
-end
-
-def fun_l13_n183()
- fun_l14_n137
-end
-
-def fun_l13_n184()
- fun_l14_n562
-end
-
-def fun_l13_n185()
- fun_l14_n614
-end
-
-def fun_l13_n186()
- fun_l14_n918
-end
-
-def fun_l13_n187()
- fun_l14_n435
-end
-
-def fun_l13_n188()
- fun_l14_n429
-end
-
-def fun_l13_n189()
- fun_l14_n561
-end
-
-def fun_l13_n190()
- fun_l14_n422
-end
-
-def fun_l13_n191()
- fun_l14_n396
-end
-
-def fun_l13_n192()
- fun_l14_n971
-end
-
-def fun_l13_n193()
- fun_l14_n419
-end
-
-def fun_l13_n194()
- fun_l14_n319
-end
-
-def fun_l13_n195()
- fun_l14_n8
-end
-
-def fun_l13_n196()
- fun_l14_n378
-end
-
-def fun_l13_n197()
- fun_l14_n709
-end
-
-def fun_l13_n198()
- fun_l14_n308
-end
-
-def fun_l13_n199()
- fun_l14_n916
-end
-
-def fun_l13_n200()
- fun_l14_n822
-end
-
-def fun_l13_n201()
- fun_l14_n736
-end
-
-def fun_l13_n202()
- fun_l14_n259
-end
-
-def fun_l13_n203()
- fun_l14_n965
-end
-
-def fun_l13_n204()
- fun_l14_n52
-end
-
-def fun_l13_n205()
- fun_l14_n237
-end
-
-def fun_l13_n206()
- fun_l14_n850
-end
-
-def fun_l13_n207()
- fun_l14_n961
-end
-
-def fun_l13_n208()
- fun_l14_n289
-end
-
-def fun_l13_n209()
- fun_l14_n465
-end
-
-def fun_l13_n210()
- fun_l14_n635
-end
-
-def fun_l13_n211()
- fun_l14_n222
-end
-
-def fun_l13_n212()
- fun_l14_n796
-end
-
-def fun_l13_n213()
- fun_l14_n20
-end
-
-def fun_l13_n214()
- fun_l14_n576
-end
-
-def fun_l13_n215()
- fun_l14_n947
-end
-
-def fun_l13_n216()
- fun_l14_n482
-end
-
-def fun_l13_n217()
- fun_l14_n236
-end
-
-def fun_l13_n218()
- fun_l14_n405
-end
-
-def fun_l13_n219()
- fun_l14_n874
-end
-
-def fun_l13_n220()
- fun_l14_n827
-end
-
-def fun_l13_n221()
- fun_l14_n975
-end
-
-def fun_l13_n222()
- fun_l14_n741
-end
-
-def fun_l13_n223()
- fun_l14_n60
-end
-
-def fun_l13_n224()
- fun_l14_n587
-end
-
-def fun_l13_n225()
- fun_l14_n557
-end
-
-def fun_l13_n226()
- fun_l14_n621
-end
-
-def fun_l13_n227()
- fun_l14_n426
-end
-
-def fun_l13_n228()
- fun_l14_n848
-end
-
-def fun_l13_n229()
- fun_l14_n164
-end
-
-def fun_l13_n230()
- fun_l14_n427
-end
-
-def fun_l13_n231()
- fun_l14_n815
-end
-
-def fun_l13_n232()
- fun_l14_n465
-end
-
-def fun_l13_n233()
- fun_l14_n474
-end
-
-def fun_l13_n234()
- fun_l14_n577
-end
-
-def fun_l13_n235()
- fun_l14_n427
-end
-
-def fun_l13_n236()
- fun_l14_n580
-end
-
-def fun_l13_n237()
- fun_l14_n275
-end
-
-def fun_l13_n238()
- fun_l14_n559
-end
-
-def fun_l13_n239()
- fun_l14_n834
-end
-
-def fun_l13_n240()
- fun_l14_n656
-end
-
-def fun_l13_n241()
- fun_l14_n411
-end
-
-def fun_l13_n242()
- fun_l14_n54
-end
-
-def fun_l13_n243()
- fun_l14_n223
-end
-
-def fun_l13_n244()
- fun_l14_n623
-end
-
-def fun_l13_n245()
- fun_l14_n251
-end
-
-def fun_l13_n246()
- fun_l14_n948
-end
-
-def fun_l13_n247()
- fun_l14_n857
-end
-
-def fun_l13_n248()
- fun_l14_n528
-end
-
-def fun_l13_n249()
- fun_l14_n396
-end
-
-def fun_l13_n250()
- fun_l14_n832
-end
-
-def fun_l13_n251()
- fun_l14_n191
-end
-
-def fun_l13_n252()
- fun_l14_n729
-end
-
-def fun_l13_n253()
- fun_l14_n22
-end
-
-def fun_l13_n254()
- fun_l14_n10
-end
-
-def fun_l13_n255()
- fun_l14_n871
-end
-
-def fun_l13_n256()
- fun_l14_n664
-end
-
-def fun_l13_n257()
- fun_l14_n877
-end
-
-def fun_l13_n258()
- fun_l14_n477
-end
-
-def fun_l13_n259()
- fun_l14_n861
-end
-
-def fun_l13_n260()
- fun_l14_n160
-end
-
-def fun_l13_n261()
- fun_l14_n127
-end
-
-def fun_l13_n262()
- fun_l14_n744
-end
-
-def fun_l13_n263()
- fun_l14_n305
-end
-
-def fun_l13_n264()
- fun_l14_n473
-end
-
-def fun_l13_n265()
- fun_l14_n445
-end
-
-def fun_l13_n266()
- fun_l14_n31
-end
-
-def fun_l13_n267()
- fun_l14_n58
-end
-
-def fun_l13_n268()
- fun_l14_n739
-end
-
-def fun_l13_n269()
- fun_l14_n840
-end
-
-def fun_l13_n270()
- fun_l14_n275
-end
-
-def fun_l13_n271()
- fun_l14_n264
-end
-
-def fun_l13_n272()
- fun_l14_n503
-end
-
-def fun_l13_n273()
- fun_l14_n559
-end
-
-def fun_l13_n274()
- fun_l14_n693
-end
-
-def fun_l13_n275()
- fun_l14_n723
-end
-
-def fun_l13_n276()
- fun_l14_n716
-end
-
-def fun_l13_n277()
- fun_l14_n181
-end
-
-def fun_l13_n278()
- fun_l14_n904
-end
-
-def fun_l13_n279()
- fun_l14_n75
-end
-
-def fun_l13_n280()
- fun_l14_n992
-end
-
-def fun_l13_n281()
- fun_l14_n904
-end
-
-def fun_l13_n282()
- fun_l14_n856
-end
-
-def fun_l13_n283()
- fun_l14_n218
-end
-
-def fun_l13_n284()
- fun_l14_n896
-end
-
-def fun_l13_n285()
- fun_l14_n456
-end
-
-def fun_l13_n286()
- fun_l14_n591
-end
-
-def fun_l13_n287()
- fun_l14_n960
-end
-
-def fun_l13_n288()
- fun_l14_n949
-end
-
-def fun_l13_n289()
- fun_l14_n92
-end
-
-def fun_l13_n290()
- fun_l14_n945
-end
-
-def fun_l13_n291()
- fun_l14_n684
-end
-
-def fun_l13_n292()
- fun_l14_n8
-end
-
-def fun_l13_n293()
- fun_l14_n147
-end
-
-def fun_l13_n294()
- fun_l14_n129
-end
-
-def fun_l13_n295()
- fun_l14_n308
-end
-
-def fun_l13_n296()
- fun_l14_n112
-end
-
-def fun_l13_n297()
- fun_l14_n657
-end
-
-def fun_l13_n298()
- fun_l14_n910
-end
-
-def fun_l13_n299()
- fun_l14_n804
-end
-
-def fun_l13_n300()
- fun_l14_n580
-end
-
-def fun_l13_n301()
- fun_l14_n373
-end
-
-def fun_l13_n302()
- fun_l14_n749
-end
-
-def fun_l13_n303()
- fun_l14_n353
-end
-
-def fun_l13_n304()
- fun_l14_n58
-end
-
-def fun_l13_n305()
- fun_l14_n207
-end
-
-def fun_l13_n306()
- fun_l14_n977
-end
-
-def fun_l13_n307()
- fun_l14_n95
-end
-
-def fun_l13_n308()
- fun_l14_n836
-end
-
-def fun_l13_n309()
- fun_l14_n244
-end
-
-def fun_l13_n310()
- fun_l14_n676
-end
-
-def fun_l13_n311()
- fun_l14_n617
-end
-
-def fun_l13_n312()
- fun_l14_n633
-end
-
-def fun_l13_n313()
- fun_l14_n550
-end
-
-def fun_l13_n314()
- fun_l14_n564
-end
-
-def fun_l13_n315()
- fun_l14_n261
-end
-
-def fun_l13_n316()
- fun_l14_n968
-end
-
-def fun_l13_n317()
- fun_l14_n16
-end
-
-def fun_l13_n318()
- fun_l14_n894
-end
-
-def fun_l13_n319()
- fun_l14_n717
-end
-
-def fun_l13_n320()
- fun_l14_n802
-end
-
-def fun_l13_n321()
- fun_l14_n628
-end
-
-def fun_l13_n322()
- fun_l14_n306
-end
-
-def fun_l13_n323()
- fun_l14_n121
-end
-
-def fun_l13_n324()
- fun_l14_n468
-end
-
-def fun_l13_n325()
- fun_l14_n863
-end
-
-def fun_l13_n326()
- fun_l14_n970
-end
-
-def fun_l13_n327()
- fun_l14_n637
-end
-
-def fun_l13_n328()
- fun_l14_n12
-end
-
-def fun_l13_n329()
- fun_l14_n244
-end
-
-def fun_l13_n330()
- fun_l14_n847
-end
-
-def fun_l13_n331()
- fun_l14_n122
-end
-
-def fun_l13_n332()
- fun_l14_n546
-end
-
-def fun_l13_n333()
- fun_l14_n640
-end
-
-def fun_l13_n334()
- fun_l14_n224
-end
-
-def fun_l13_n335()
- fun_l14_n73
-end
-
-def fun_l13_n336()
- fun_l14_n25
-end
-
-def fun_l13_n337()
- fun_l14_n226
-end
-
-def fun_l13_n338()
- fun_l14_n63
-end
-
-def fun_l13_n339()
- fun_l14_n591
-end
-
-def fun_l13_n340()
- fun_l14_n32
-end
-
-def fun_l13_n341()
- fun_l14_n646
-end
-
-def fun_l13_n342()
- fun_l14_n954
-end
-
-def fun_l13_n343()
- fun_l14_n915
-end
-
-def fun_l13_n344()
- fun_l14_n359
-end
-
-def fun_l13_n345()
- fun_l14_n967
-end
-
-def fun_l13_n346()
- fun_l14_n980
-end
-
-def fun_l13_n347()
- fun_l14_n324
-end
-
-def fun_l13_n348()
- fun_l14_n263
-end
-
-def fun_l13_n349()
- fun_l14_n644
-end
-
-def fun_l13_n350()
- fun_l14_n575
-end
-
-def fun_l13_n351()
- fun_l14_n820
-end
-
-def fun_l13_n352()
- fun_l14_n767
-end
-
-def fun_l13_n353()
- fun_l14_n175
-end
-
-def fun_l13_n354()
- fun_l14_n990
-end
-
-def fun_l13_n355()
- fun_l14_n631
-end
-
-def fun_l13_n356()
- fun_l14_n503
-end
-
-def fun_l13_n357()
- fun_l14_n785
-end
-
-def fun_l13_n358()
- fun_l14_n239
-end
-
-def fun_l13_n359()
- fun_l14_n678
-end
-
-def fun_l13_n360()
- fun_l14_n11
-end
-
-def fun_l13_n361()
- fun_l14_n829
-end
-
-def fun_l13_n362()
- fun_l14_n205
-end
-
-def fun_l13_n363()
- fun_l14_n146
-end
-
-def fun_l13_n364()
- fun_l14_n972
-end
-
-def fun_l13_n365()
- fun_l14_n68
-end
-
-def fun_l13_n366()
- fun_l14_n830
-end
-
-def fun_l13_n367()
- fun_l14_n60
-end
-
-def fun_l13_n368()
- fun_l14_n521
-end
-
-def fun_l13_n369()
- fun_l14_n287
-end
-
-def fun_l13_n370()
- fun_l14_n932
-end
-
-def fun_l13_n371()
- fun_l14_n268
-end
-
-def fun_l13_n372()
- fun_l14_n285
-end
-
-def fun_l13_n373()
- fun_l14_n101
-end
-
-def fun_l13_n374()
- fun_l14_n811
-end
-
-def fun_l13_n375()
- fun_l14_n966
-end
-
-def fun_l13_n376()
- fun_l14_n201
-end
-
-def fun_l13_n377()
- fun_l14_n176
-end
-
-def fun_l13_n378()
- fun_l14_n850
-end
-
-def fun_l13_n379()
- fun_l14_n436
-end
-
-def fun_l13_n380()
- fun_l14_n83
-end
-
-def fun_l13_n381()
- fun_l14_n393
-end
-
-def fun_l13_n382()
- fun_l14_n812
-end
-
-def fun_l13_n383()
- fun_l14_n276
-end
-
-def fun_l13_n384()
- fun_l14_n997
-end
-
-def fun_l13_n385()
- fun_l14_n942
-end
-
-def fun_l13_n386()
- fun_l14_n851
-end
-
-def fun_l13_n387()
- fun_l14_n747
-end
-
-def fun_l13_n388()
- fun_l14_n573
-end
-
-def fun_l13_n389()
- fun_l14_n949
-end
-
-def fun_l13_n390()
- fun_l14_n857
-end
-
-def fun_l13_n391()
- fun_l14_n495
-end
-
-def fun_l13_n392()
- fun_l14_n399
-end
-
-def fun_l13_n393()
- fun_l14_n603
-end
-
-def fun_l13_n394()
- fun_l14_n208
-end
-
-def fun_l13_n395()
- fun_l14_n736
-end
-
-def fun_l13_n396()
- fun_l14_n339
-end
-
-def fun_l13_n397()
- fun_l14_n759
-end
-
-def fun_l13_n398()
- fun_l14_n912
-end
-
-def fun_l13_n399()
- fun_l14_n899
-end
-
-def fun_l13_n400()
- fun_l14_n954
-end
-
-def fun_l13_n401()
- fun_l14_n143
-end
-
-def fun_l13_n402()
- fun_l14_n866
-end
-
-def fun_l13_n403()
- fun_l14_n657
-end
-
-def fun_l13_n404()
- fun_l14_n854
-end
-
-def fun_l13_n405()
- fun_l14_n365
-end
-
-def fun_l13_n406()
- fun_l14_n79
-end
-
-def fun_l13_n407()
- fun_l14_n724
-end
-
-def fun_l13_n408()
- fun_l14_n544
-end
-
-def fun_l13_n409()
- fun_l14_n562
-end
-
-def fun_l13_n410()
- fun_l14_n946
-end
-
-def fun_l13_n411()
- fun_l14_n761
-end
-
-def fun_l13_n412()
- fun_l14_n251
-end
-
-def fun_l13_n413()
- fun_l14_n689
-end
-
-def fun_l13_n414()
- fun_l14_n94
-end
-
-def fun_l13_n415()
- fun_l14_n466
-end
-
-def fun_l13_n416()
- fun_l14_n186
-end
-
-def fun_l13_n417()
- fun_l14_n367
-end
-
-def fun_l13_n418()
- fun_l14_n477
-end
-
-def fun_l13_n419()
- fun_l14_n356
-end
-
-def fun_l13_n420()
- fun_l14_n279
-end
-
-def fun_l13_n421()
- fun_l14_n76
-end
-
-def fun_l13_n422()
- fun_l14_n677
-end
-
-def fun_l13_n423()
- fun_l14_n334
-end
-
-def fun_l13_n424()
- fun_l14_n777
-end
-
-def fun_l13_n425()
- fun_l14_n632
-end
-
-def fun_l13_n426()
- fun_l14_n380
-end
-
-def fun_l13_n427()
- fun_l14_n833
-end
-
-def fun_l13_n428()
- fun_l14_n395
-end
-
-def fun_l13_n429()
- fun_l14_n324
-end
-
-def fun_l13_n430()
- fun_l14_n608
-end
-
-def fun_l13_n431()
- fun_l14_n916
-end
-
-def fun_l13_n432()
- fun_l14_n89
-end
-
-def fun_l13_n433()
- fun_l14_n239
-end
-
-def fun_l13_n434()
- fun_l14_n712
-end
-
-def fun_l13_n435()
- fun_l14_n911
-end
-
-def fun_l13_n436()
- fun_l14_n810
-end
-
-def fun_l13_n437()
- fun_l14_n670
-end
-
-def fun_l13_n438()
- fun_l14_n125
-end
-
-def fun_l13_n439()
- fun_l14_n903
-end
-
-def fun_l13_n440()
- fun_l14_n277
-end
-
-def fun_l13_n441()
- fun_l14_n581
-end
-
-def fun_l13_n442()
- fun_l14_n726
-end
-
-def fun_l13_n443()
- fun_l14_n360
-end
-
-def fun_l13_n444()
- fun_l14_n439
-end
-
-def fun_l13_n445()
- fun_l14_n441
-end
-
-def fun_l13_n446()
- fun_l14_n464
-end
-
-def fun_l13_n447()
- fun_l14_n550
-end
-
-def fun_l13_n448()
- fun_l14_n94
-end
-
-def fun_l13_n449()
- fun_l14_n844
-end
-
-def fun_l13_n450()
- fun_l14_n571
-end
-
-def fun_l13_n451()
- fun_l14_n161
-end
-
-def fun_l13_n452()
- fun_l14_n863
-end
-
-def fun_l13_n453()
- fun_l14_n173
-end
-
-def fun_l13_n454()
- fun_l14_n330
-end
-
-def fun_l13_n455()
- fun_l14_n175
-end
-
-def fun_l13_n456()
- fun_l14_n40
-end
-
-def fun_l13_n457()
- fun_l14_n335
-end
-
-def fun_l13_n458()
- fun_l14_n46
-end
-
-def fun_l13_n459()
- fun_l14_n57
-end
-
-def fun_l13_n460()
- fun_l14_n428
-end
-
-def fun_l13_n461()
- fun_l14_n773
-end
-
-def fun_l13_n462()
- fun_l14_n712
-end
-
-def fun_l13_n463()
- fun_l14_n624
-end
-
-def fun_l13_n464()
- fun_l14_n103
-end
-
-def fun_l13_n465()
- fun_l14_n962
-end
-
-def fun_l13_n466()
- fun_l14_n424
-end
-
-def fun_l13_n467()
- fun_l14_n780
-end
-
-def fun_l13_n468()
- fun_l14_n852
-end
-
-def fun_l13_n469()
- fun_l14_n175
-end
-
-def fun_l13_n470()
- fun_l14_n900
-end
-
-def fun_l13_n471()
- fun_l14_n866
-end
-
-def fun_l13_n472()
- fun_l14_n541
-end
-
-def fun_l13_n473()
- fun_l14_n966
-end
-
-def fun_l13_n474()
- fun_l14_n107
-end
-
-def fun_l13_n475()
- fun_l14_n917
-end
-
-def fun_l13_n476()
- fun_l14_n683
-end
-
-def fun_l13_n477()
- fun_l14_n625
-end
-
-def fun_l13_n478()
- fun_l14_n439
-end
-
-def fun_l13_n479()
- fun_l14_n69
-end
-
-def fun_l13_n480()
- fun_l14_n252
-end
-
-def fun_l13_n481()
- fun_l14_n753
-end
-
-def fun_l13_n482()
- fun_l14_n50
-end
-
-def fun_l13_n483()
- fun_l14_n634
-end
-
-def fun_l13_n484()
- fun_l14_n908
-end
-
-def fun_l13_n485()
- fun_l14_n733
-end
-
-def fun_l13_n486()
- fun_l14_n450
-end
-
-def fun_l13_n487()
- fun_l14_n373
-end
-
-def fun_l13_n488()
- fun_l14_n226
-end
-
-def fun_l13_n489()
- fun_l14_n320
-end
-
-def fun_l13_n490()
- fun_l14_n498
-end
-
-def fun_l13_n491()
- fun_l14_n49
-end
-
-def fun_l13_n492()
- fun_l14_n46
-end
-
-def fun_l13_n493()
- fun_l14_n993
-end
-
-def fun_l13_n494()
- fun_l14_n123
-end
-
-def fun_l13_n495()
- fun_l14_n393
-end
-
-def fun_l13_n496()
- fun_l14_n500
-end
-
-def fun_l13_n497()
- fun_l14_n328
-end
-
-def fun_l13_n498()
- fun_l14_n711
-end
-
-def fun_l13_n499()
- fun_l14_n734
-end
-
-def fun_l13_n500()
- fun_l14_n354
-end
-
-def fun_l13_n501()
- fun_l14_n565
-end
-
-def fun_l13_n502()
- fun_l14_n699
-end
-
-def fun_l13_n503()
- fun_l14_n157
-end
-
-def fun_l13_n504()
- fun_l14_n634
-end
-
-def fun_l13_n505()
- fun_l14_n282
-end
-
-def fun_l13_n506()
- fun_l14_n484
-end
-
-def fun_l13_n507()
- fun_l14_n972
-end
-
-def fun_l13_n508()
- fun_l14_n763
-end
-
-def fun_l13_n509()
- fun_l14_n530
-end
-
-def fun_l13_n510()
- fun_l14_n88
-end
-
-def fun_l13_n511()
- fun_l14_n718
-end
-
-def fun_l13_n512()
- fun_l14_n988
-end
-
-def fun_l13_n513()
- fun_l14_n266
-end
-
-def fun_l13_n514()
- fun_l14_n489
-end
-
-def fun_l13_n515()
- fun_l14_n662
-end
-
-def fun_l13_n516()
- fun_l14_n821
-end
-
-def fun_l13_n517()
- fun_l14_n697
-end
-
-def fun_l13_n518()
- fun_l14_n984
-end
-
-def fun_l13_n519()
- fun_l14_n847
-end
-
-def fun_l13_n520()
- fun_l14_n916
-end
-
-def fun_l13_n521()
- fun_l14_n304
-end
-
-def fun_l13_n522()
- fun_l14_n778
-end
-
-def fun_l13_n523()
- fun_l14_n105
-end
-
-def fun_l13_n524()
- fun_l14_n272
-end
-
-def fun_l13_n525()
- fun_l14_n814
-end
-
-def fun_l13_n526()
- fun_l14_n689
-end
-
-def fun_l13_n527()
- fun_l14_n314
-end
-
-def fun_l13_n528()
- fun_l14_n483
-end
-
-def fun_l13_n529()
- fun_l14_n571
-end
-
-def fun_l13_n530()
- fun_l14_n162
-end
-
-def fun_l13_n531()
- fun_l14_n737
-end
-
-def fun_l13_n532()
- fun_l14_n886
-end
-
-def fun_l13_n533()
- fun_l14_n638
-end
-
-def fun_l13_n534()
- fun_l14_n765
-end
-
-def fun_l13_n535()
- fun_l14_n452
-end
-
-def fun_l13_n536()
- fun_l14_n367
-end
-
-def fun_l13_n537()
- fun_l14_n245
-end
-
-def fun_l13_n538()
- fun_l14_n590
-end
-
-def fun_l13_n539()
- fun_l14_n383
-end
-
-def fun_l13_n540()
- fun_l14_n210
-end
-
-def fun_l13_n541()
- fun_l14_n25
-end
-
-def fun_l13_n542()
- fun_l14_n612
-end
-
-def fun_l13_n543()
- fun_l14_n639
-end
-
-def fun_l13_n544()
- fun_l14_n540
-end
-
-def fun_l13_n545()
- fun_l14_n538
-end
-
-def fun_l13_n546()
- fun_l14_n323
-end
-
-def fun_l13_n547()
- fun_l14_n556
-end
-
-def fun_l13_n548()
- fun_l14_n219
-end
-
-def fun_l13_n549()
- fun_l14_n583
-end
-
-def fun_l13_n550()
- fun_l14_n818
-end
-
-def fun_l13_n551()
- fun_l14_n167
-end
-
-def fun_l13_n552()
- fun_l14_n310
-end
-
-def fun_l13_n553()
- fun_l14_n528
-end
-
-def fun_l13_n554()
- fun_l14_n604
-end
-
-def fun_l13_n555()
- fun_l14_n426
-end
-
-def fun_l13_n556()
- fun_l14_n398
-end
-
-def fun_l13_n557()
- fun_l14_n885
-end
-
-def fun_l13_n558()
- fun_l14_n905
-end
-
-def fun_l13_n559()
- fun_l14_n882
-end
-
-def fun_l13_n560()
- fun_l14_n536
-end
-
-def fun_l13_n561()
- fun_l14_n392
-end
-
-def fun_l13_n562()
- fun_l14_n948
-end
-
-def fun_l13_n563()
- fun_l14_n522
-end
-
-def fun_l13_n564()
- fun_l14_n704
-end
-
-def fun_l13_n565()
- fun_l14_n365
-end
-
-def fun_l13_n566()
- fun_l14_n925
-end
-
-def fun_l13_n567()
- fun_l14_n353
-end
-
-def fun_l13_n568()
- fun_l14_n215
-end
-
-def fun_l13_n569()
- fun_l14_n932
-end
-
-def fun_l13_n570()
- fun_l14_n458
-end
-
-def fun_l13_n571()
- fun_l14_n793
-end
-
-def fun_l13_n572()
- fun_l14_n650
-end
-
-def fun_l13_n573()
- fun_l14_n888
-end
-
-def fun_l13_n574()
- fun_l14_n986
-end
-
-def fun_l13_n575()
- fun_l14_n834
-end
-
-def fun_l13_n576()
- fun_l14_n253
-end
-
-def fun_l13_n577()
- fun_l14_n382
-end
-
-def fun_l13_n578()
- fun_l14_n300
-end
-
-def fun_l13_n579()
- fun_l14_n457
-end
-
-def fun_l13_n580()
- fun_l14_n398
-end
-
-def fun_l13_n581()
- fun_l14_n93
-end
-
-def fun_l13_n582()
- fun_l14_n226
-end
-
-def fun_l13_n583()
- fun_l14_n665
-end
-
-def fun_l13_n584()
- fun_l14_n354
-end
-
-def fun_l13_n585()
- fun_l14_n460
-end
-
-def fun_l13_n586()
- fun_l14_n185
-end
-
-def fun_l13_n587()
- fun_l14_n577
-end
-
-def fun_l13_n588()
- fun_l14_n180
-end
-
-def fun_l13_n589()
- fun_l14_n769
-end
-
-def fun_l13_n590()
- fun_l14_n78
-end
-
-def fun_l13_n591()
- fun_l14_n455
-end
-
-def fun_l13_n592()
- fun_l14_n862
-end
-
-def fun_l13_n593()
- fun_l14_n471
-end
-
-def fun_l13_n594()
- fun_l14_n931
-end
-
-def fun_l13_n595()
- fun_l14_n255
-end
-
-def fun_l13_n596()
- fun_l14_n261
-end
-
-def fun_l13_n597()
- fun_l14_n586
-end
-
-def fun_l13_n598()
- fun_l14_n45
-end
-
-def fun_l13_n599()
- fun_l14_n892
-end
-
-def fun_l13_n600()
- fun_l14_n615
-end
-
-def fun_l13_n601()
- fun_l14_n910
-end
-
-def fun_l13_n602()
- fun_l14_n888
-end
-
-def fun_l13_n603()
- fun_l14_n827
-end
-
-def fun_l13_n604()
- fun_l14_n765
-end
-
-def fun_l13_n605()
- fun_l14_n118
-end
-
-def fun_l13_n606()
- fun_l14_n895
-end
-
-def fun_l13_n607()
- fun_l14_n183
-end
-
-def fun_l13_n608()
- fun_l14_n200
-end
-
-def fun_l13_n609()
- fun_l14_n873
-end
-
-def fun_l13_n610()
- fun_l14_n402
-end
-
-def fun_l13_n611()
- fun_l14_n414
-end
-
-def fun_l13_n612()
- fun_l14_n492
-end
-
-def fun_l13_n613()
- fun_l14_n811
-end
-
-def fun_l13_n614()
- fun_l14_n814
-end
-
-def fun_l13_n615()
- fun_l14_n95
-end
-
-def fun_l13_n616()
- fun_l14_n782
-end
-
-def fun_l13_n617()
- fun_l14_n329
-end
-
-def fun_l13_n618()
- fun_l14_n180
-end
-
-def fun_l13_n619()
- fun_l14_n104
-end
-
-def fun_l13_n620()
- fun_l14_n341
-end
-
-def fun_l13_n621()
- fun_l14_n132
-end
-
-def fun_l13_n622()
- fun_l14_n815
-end
-
-def fun_l13_n623()
- fun_l14_n785
-end
-
-def fun_l13_n624()
- fun_l14_n934
-end
-
-def fun_l13_n625()
- fun_l14_n760
-end
-
-def fun_l13_n626()
- fun_l14_n307
-end
-
-def fun_l13_n627()
- fun_l14_n433
-end
-
-def fun_l13_n628()
- fun_l14_n156
-end
-
-def fun_l13_n629()
- fun_l14_n95
-end
-
-def fun_l13_n630()
- fun_l14_n44
-end
-
-def fun_l13_n631()
- fun_l14_n643
-end
-
-def fun_l13_n632()
- fun_l14_n876
-end
-
-def fun_l13_n633()
- fun_l14_n477
-end
-
-def fun_l13_n634()
- fun_l14_n549
-end
-
-def fun_l13_n635()
- fun_l14_n795
-end
-
-def fun_l13_n636()
- fun_l14_n814
-end
-
-def fun_l13_n637()
- fun_l14_n52
-end
-
-def fun_l13_n638()
- fun_l14_n542
-end
-
-def fun_l13_n639()
- fun_l14_n204
-end
-
-def fun_l13_n640()
- fun_l14_n256
-end
-
-def fun_l13_n641()
- fun_l14_n198
-end
-
-def fun_l13_n642()
- fun_l14_n221
-end
-
-def fun_l13_n643()
- fun_l14_n855
-end
-
-def fun_l13_n644()
- fun_l14_n978
-end
-
-def fun_l13_n645()
- fun_l14_n954
-end
-
-def fun_l13_n646()
- fun_l14_n148
-end
-
-def fun_l13_n647()
- fun_l14_n528
-end
-
-def fun_l13_n648()
- fun_l14_n807
-end
-
-def fun_l13_n649()
- fun_l14_n735
-end
-
-def fun_l13_n650()
- fun_l14_n518
-end
-
-def fun_l13_n651()
- fun_l14_n255
-end
-
-def fun_l13_n652()
- fun_l14_n251
-end
-
-def fun_l13_n653()
- fun_l14_n311
-end
-
-def fun_l13_n654()
- fun_l14_n134
-end
-
-def fun_l13_n655()
- fun_l14_n474
-end
-
-def fun_l13_n656()
- fun_l14_n857
-end
-
-def fun_l13_n657()
- fun_l14_n758
-end
-
-def fun_l13_n658()
- fun_l14_n310
-end
-
-def fun_l13_n659()
- fun_l14_n846
-end
-
-def fun_l13_n660()
- fun_l14_n220
-end
-
-def fun_l13_n661()
- fun_l14_n81
-end
-
-def fun_l13_n662()
- fun_l14_n958
-end
-
-def fun_l13_n663()
- fun_l14_n221
-end
-
-def fun_l13_n664()
- fun_l14_n107
-end
-
-def fun_l13_n665()
- fun_l14_n131
-end
-
-def fun_l13_n666()
- fun_l14_n750
-end
-
-def fun_l13_n667()
- fun_l14_n455
-end
-
-def fun_l13_n668()
- fun_l14_n354
-end
-
-def fun_l13_n669()
- fun_l14_n76
-end
-
-def fun_l13_n670()
- fun_l14_n111
-end
-
-def fun_l13_n671()
- fun_l14_n411
-end
-
-def fun_l13_n672()
- fun_l14_n400
-end
-
-def fun_l13_n673()
- fun_l14_n407
-end
-
-def fun_l13_n674()
- fun_l14_n851
-end
-
-def fun_l13_n675()
- fun_l14_n521
-end
-
-def fun_l13_n676()
- fun_l14_n448
-end
-
-def fun_l13_n677()
- fun_l14_n615
-end
-
-def fun_l13_n678()
- fun_l14_n574
-end
-
-def fun_l13_n679()
- fun_l14_n300
-end
-
-def fun_l13_n680()
- fun_l14_n783
-end
-
-def fun_l13_n681()
- fun_l14_n172
-end
-
-def fun_l13_n682()
- fun_l14_n725
-end
-
-def fun_l13_n683()
- fun_l14_n657
-end
-
-def fun_l13_n684()
- fun_l14_n550
-end
-
-def fun_l13_n685()
- fun_l14_n976
-end
-
-def fun_l13_n686()
- fun_l14_n77
-end
-
-def fun_l13_n687()
- fun_l14_n472
-end
-
-def fun_l13_n688()
- fun_l14_n300
-end
-
-def fun_l13_n689()
- fun_l14_n139
-end
-
-def fun_l13_n690()
- fun_l14_n623
-end
-
-def fun_l13_n691()
- fun_l14_n336
-end
-
-def fun_l13_n692()
- fun_l14_n502
-end
-
-def fun_l13_n693()
- fun_l14_n184
-end
-
-def fun_l13_n694()
- fun_l14_n745
-end
-
-def fun_l13_n695()
- fun_l14_n27
-end
-
-def fun_l13_n696()
- fun_l14_n299
-end
-
-def fun_l13_n697()
- fun_l14_n7
-end
-
-def fun_l13_n698()
- fun_l14_n842
-end
-
-def fun_l13_n699()
- fun_l14_n592
-end
-
-def fun_l13_n700()
- fun_l14_n993
-end
-
-def fun_l13_n701()
- fun_l14_n113
-end
-
-def fun_l13_n702()
- fun_l14_n997
-end
-
-def fun_l13_n703()
- fun_l14_n740
-end
-
-def fun_l13_n704()
- fun_l14_n261
-end
-
-def fun_l13_n705()
- fun_l14_n737
-end
-
-def fun_l13_n706()
- fun_l14_n216
-end
-
-def fun_l13_n707()
- fun_l14_n607
-end
-
-def fun_l13_n708()
- fun_l14_n520
-end
-
-def fun_l13_n709()
- fun_l14_n133
-end
-
-def fun_l13_n710()
- fun_l14_n615
-end
-
-def fun_l13_n711()
- fun_l14_n476
-end
-
-def fun_l13_n712()
- fun_l14_n154
-end
-
-def fun_l13_n713()
- fun_l14_n947
-end
-
-def fun_l13_n714()
- fun_l14_n893
-end
-
-def fun_l13_n715()
- fun_l14_n296
-end
-
-def fun_l13_n716()
- fun_l14_n275
-end
-
-def fun_l13_n717()
- fun_l14_n622
-end
-
-def fun_l13_n718()
- fun_l14_n561
-end
-
-def fun_l13_n719()
- fun_l14_n216
-end
-
-def fun_l13_n720()
- fun_l14_n459
-end
-
-def fun_l13_n721()
- fun_l14_n329
-end
-
-def fun_l13_n722()
- fun_l14_n901
-end
-
-def fun_l13_n723()
- fun_l14_n824
-end
-
-def fun_l13_n724()
- fun_l14_n359
-end
-
-def fun_l13_n725()
- fun_l14_n399
-end
-
-def fun_l13_n726()
- fun_l14_n998
-end
-
-def fun_l13_n727()
- fun_l14_n327
-end
-
-def fun_l13_n728()
- fun_l14_n659
-end
-
-def fun_l13_n729()
- fun_l14_n564
-end
-
-def fun_l13_n730()
- fun_l14_n718
-end
-
-def fun_l13_n731()
- fun_l14_n751
-end
-
-def fun_l13_n732()
- fun_l14_n172
-end
-
-def fun_l13_n733()
- fun_l14_n289
-end
-
-def fun_l13_n734()
- fun_l14_n956
-end
-
-def fun_l13_n735()
- fun_l14_n375
-end
-
-def fun_l13_n736()
- fun_l14_n459
-end
-
-def fun_l13_n737()
- fun_l14_n471
-end
-
-def fun_l13_n738()
- fun_l14_n957
-end
-
-def fun_l13_n739()
- fun_l14_n670
-end
-
-def fun_l13_n740()
- fun_l14_n396
-end
-
-def fun_l13_n741()
- fun_l14_n909
-end
-
-def fun_l13_n742()
- fun_l14_n226
-end
-
-def fun_l13_n743()
- fun_l14_n458
-end
-
-def fun_l13_n744()
- fun_l14_n923
-end
-
-def fun_l13_n745()
- fun_l14_n255
-end
-
-def fun_l13_n746()
- fun_l14_n2
-end
-
-def fun_l13_n747()
- fun_l14_n805
-end
-
-def fun_l13_n748()
- fun_l14_n157
-end
-
-def fun_l13_n749()
- fun_l14_n952
-end
-
-def fun_l13_n750()
- fun_l14_n902
-end
-
-def fun_l13_n751()
- fun_l14_n723
-end
-
-def fun_l13_n752()
- fun_l14_n204
-end
-
-def fun_l13_n753()
- fun_l14_n53
-end
-
-def fun_l13_n754()
- fun_l14_n240
-end
-
-def fun_l13_n755()
- fun_l14_n161
-end
-
-def fun_l13_n756()
- fun_l14_n735
-end
-
-def fun_l13_n757()
- fun_l14_n298
-end
-
-def fun_l13_n758()
- fun_l14_n743
-end
-
-def fun_l13_n759()
- fun_l14_n886
-end
-
-def fun_l13_n760()
- fun_l14_n559
-end
-
-def fun_l13_n761()
- fun_l14_n42
-end
-
-def fun_l13_n762()
- fun_l14_n86
-end
-
-def fun_l13_n763()
- fun_l14_n138
-end
-
-def fun_l13_n764()
- fun_l14_n477
-end
-
-def fun_l13_n765()
- fun_l14_n763
-end
-
-def fun_l13_n766()
- fun_l14_n360
-end
-
-def fun_l13_n767()
- fun_l14_n486
-end
-
-def fun_l13_n768()
- fun_l14_n734
-end
-
-def fun_l13_n769()
- fun_l14_n442
-end
-
-def fun_l13_n770()
- fun_l14_n512
-end
-
-def fun_l13_n771()
- fun_l14_n399
-end
-
-def fun_l13_n772()
- fun_l14_n88
-end
-
-def fun_l13_n773()
- fun_l14_n55
-end
-
-def fun_l13_n774()
- fun_l14_n138
-end
-
-def fun_l13_n775()
- fun_l14_n104
-end
-
-def fun_l13_n776()
- fun_l14_n901
-end
-
-def fun_l13_n777()
- fun_l14_n7
-end
-
-def fun_l13_n778()
- fun_l14_n72
-end
-
-def fun_l13_n779()
- fun_l14_n588
-end
-
-def fun_l13_n780()
- fun_l14_n266
-end
-
-def fun_l13_n781()
- fun_l14_n428
-end
-
-def fun_l13_n782()
- fun_l14_n802
-end
-
-def fun_l13_n783()
- fun_l14_n59
-end
-
-def fun_l13_n784()
- fun_l14_n734
-end
-
-def fun_l13_n785()
- fun_l14_n674
-end
-
-def fun_l13_n786()
- fun_l14_n126
-end
-
-def fun_l13_n787()
- fun_l14_n199
-end
-
-def fun_l13_n788()
- fun_l14_n695
-end
-
-def fun_l13_n789()
- fun_l14_n332
-end
-
-def fun_l13_n790()
- fun_l14_n734
-end
-
-def fun_l13_n791()
- fun_l14_n856
-end
-
-def fun_l13_n792()
- fun_l14_n447
-end
-
-def fun_l13_n793()
- fun_l14_n931
-end
-
-def fun_l13_n794()
- fun_l14_n608
-end
-
-def fun_l13_n795()
- fun_l14_n131
-end
-
-def fun_l13_n796()
- fun_l14_n961
-end
-
-def fun_l13_n797()
- fun_l14_n109
-end
-
-def fun_l13_n798()
- fun_l14_n766
-end
-
-def fun_l13_n799()
- fun_l14_n149
-end
-
-def fun_l13_n800()
- fun_l14_n44
-end
-
-def fun_l13_n801()
- fun_l14_n893
-end
-
-def fun_l13_n802()
- fun_l14_n826
-end
-
-def fun_l13_n803()
- fun_l14_n372
-end
-
-def fun_l13_n804()
- fun_l14_n7
-end
-
-def fun_l13_n805()
- fun_l14_n655
-end
-
-def fun_l13_n806()
- fun_l14_n418
-end
-
-def fun_l13_n807()
- fun_l14_n746
-end
-
-def fun_l13_n808()
- fun_l14_n810
-end
-
-def fun_l13_n809()
- fun_l14_n838
-end
-
-def fun_l13_n810()
- fun_l14_n522
-end
-
-def fun_l13_n811()
- fun_l14_n723
-end
-
-def fun_l13_n812()
- fun_l14_n476
-end
-
-def fun_l13_n813()
- fun_l14_n760
-end
-
-def fun_l13_n814()
- fun_l14_n728
-end
-
-def fun_l13_n815()
- fun_l14_n926
-end
-
-def fun_l13_n816()
- fun_l14_n16
-end
-
-def fun_l13_n817()
- fun_l14_n888
-end
-
-def fun_l13_n818()
- fun_l14_n812
-end
-
-def fun_l13_n819()
- fun_l14_n430
-end
-
-def fun_l13_n820()
- fun_l14_n211
-end
-
-def fun_l13_n821()
- fun_l14_n204
-end
-
-def fun_l13_n822()
- fun_l14_n868
-end
-
-def fun_l13_n823()
- fun_l14_n460
-end
-
-def fun_l13_n824()
- fun_l14_n597
-end
-
-def fun_l13_n825()
- fun_l14_n217
-end
-
-def fun_l13_n826()
- fun_l14_n425
-end
-
-def fun_l13_n827()
- fun_l14_n216
-end
-
-def fun_l13_n828()
- fun_l14_n931
-end
-
-def fun_l13_n829()
- fun_l14_n3
-end
-
-def fun_l13_n830()
- fun_l14_n55
-end
-
-def fun_l13_n831()
- fun_l14_n362
-end
-
-def fun_l13_n832()
- fun_l14_n591
-end
-
-def fun_l13_n833()
- fun_l14_n339
-end
-
-def fun_l13_n834()
- fun_l14_n641
-end
-
-def fun_l13_n835()
- fun_l14_n389
-end
-
-def fun_l13_n836()
- fun_l14_n668
-end
-
-def fun_l13_n837()
- fun_l14_n845
-end
-
-def fun_l13_n838()
- fun_l14_n202
-end
-
-def fun_l13_n839()
- fun_l14_n575
-end
-
-def fun_l13_n840()
- fun_l14_n357
-end
-
-def fun_l13_n841()
- fun_l14_n271
-end
-
-def fun_l13_n842()
- fun_l14_n876
-end
-
-def fun_l13_n843()
- fun_l14_n983
-end
-
-def fun_l13_n844()
- fun_l14_n512
-end
-
-def fun_l13_n845()
- fun_l14_n205
-end
-
-def fun_l13_n846()
- fun_l14_n463
-end
-
-def fun_l13_n847()
- fun_l14_n422
-end
-
-def fun_l13_n848()
- fun_l14_n54
-end
-
-def fun_l13_n849()
- fun_l14_n575
-end
-
-def fun_l13_n850()
- fun_l14_n187
-end
-
-def fun_l13_n851()
- fun_l14_n151
-end
-
-def fun_l13_n852()
- fun_l14_n176
-end
-
-def fun_l13_n853()
- fun_l14_n501
-end
-
-def fun_l13_n854()
- fun_l14_n390
-end
-
-def fun_l13_n855()
- fun_l14_n902
-end
-
-def fun_l13_n856()
- fun_l14_n354
-end
-
-def fun_l13_n857()
- fun_l14_n245
-end
-
-def fun_l13_n858()
- fun_l14_n299
-end
-
-def fun_l13_n859()
- fun_l14_n532
-end
-
-def fun_l13_n860()
- fun_l14_n263
-end
-
-def fun_l13_n861()
- fun_l14_n811
-end
-
-def fun_l13_n862()
- fun_l14_n298
-end
-
-def fun_l13_n863()
- fun_l14_n635
-end
-
-def fun_l13_n864()
- fun_l14_n913
-end
-
-def fun_l13_n865()
- fun_l14_n901
-end
-
-def fun_l13_n866()
- fun_l14_n380
-end
-
-def fun_l13_n867()
- fun_l14_n9
-end
-
-def fun_l13_n868()
- fun_l14_n982
-end
-
-def fun_l13_n869()
- fun_l14_n703
-end
-
-def fun_l13_n870()
- fun_l14_n272
-end
-
-def fun_l13_n871()
- fun_l14_n209
-end
-
-def fun_l13_n872()
- fun_l14_n429
-end
-
-def fun_l13_n873()
- fun_l14_n108
-end
-
-def fun_l13_n874()
- fun_l14_n116
-end
-
-def fun_l13_n875()
- fun_l14_n169
-end
-
-def fun_l13_n876()
- fun_l14_n642
-end
-
-def fun_l13_n877()
- fun_l14_n265
-end
-
-def fun_l13_n878()
- fun_l14_n227
-end
-
-def fun_l13_n879()
- fun_l14_n202
-end
-
-def fun_l13_n880()
- fun_l14_n336
-end
-
-def fun_l13_n881()
- fun_l14_n856
-end
-
-def fun_l13_n882()
- fun_l14_n821
-end
-
-def fun_l13_n883()
- fun_l14_n275
-end
-
-def fun_l13_n884()
- fun_l14_n903
-end
-
-def fun_l13_n885()
- fun_l14_n407
-end
-
-def fun_l13_n886()
- fun_l14_n129
-end
-
-def fun_l13_n887()
- fun_l14_n68
-end
-
-def fun_l13_n888()
- fun_l14_n124
-end
-
-def fun_l13_n889()
- fun_l14_n936
-end
-
-def fun_l13_n890()
- fun_l14_n401
-end
-
-def fun_l13_n891()
- fun_l14_n574
-end
-
-def fun_l13_n892()
- fun_l14_n593
-end
-
-def fun_l13_n893()
- fun_l14_n262
-end
-
-def fun_l13_n894()
- fun_l14_n215
-end
-
-def fun_l13_n895()
- fun_l14_n49
-end
-
-def fun_l13_n896()
- fun_l14_n767
-end
-
-def fun_l13_n897()
- fun_l14_n280
-end
-
-def fun_l13_n898()
- fun_l14_n112
-end
-
-def fun_l13_n899()
- fun_l14_n202
-end
-
-def fun_l13_n900()
- fun_l14_n73
-end
-
-def fun_l13_n901()
- fun_l14_n798
-end
-
-def fun_l13_n902()
- fun_l14_n827
-end
-
-def fun_l13_n903()
- fun_l14_n824
-end
-
-def fun_l13_n904()
- fun_l14_n414
-end
-
-def fun_l13_n905()
- fun_l14_n502
-end
-
-def fun_l13_n906()
- fun_l14_n323
-end
-
-def fun_l13_n907()
- fun_l14_n216
-end
-
-def fun_l13_n908()
- fun_l14_n173
-end
-
-def fun_l13_n909()
- fun_l14_n26
-end
-
-def fun_l13_n910()
- fun_l14_n40
-end
-
-def fun_l13_n911()
- fun_l14_n883
-end
-
-def fun_l13_n912()
- fun_l14_n523
-end
-
-def fun_l13_n913()
- fun_l14_n979
-end
-
-def fun_l13_n914()
- fun_l14_n921
-end
-
-def fun_l13_n915()
- fun_l14_n842
-end
-
-def fun_l13_n916()
- fun_l14_n943
-end
-
-def fun_l13_n917()
- fun_l14_n97
-end
-
-def fun_l13_n918()
- fun_l14_n515
-end
-
-def fun_l13_n919()
- fun_l14_n145
-end
-
-def fun_l13_n920()
- fun_l14_n497
-end
-
-def fun_l13_n921()
- fun_l14_n264
-end
-
-def fun_l13_n922()
- fun_l14_n901
-end
-
-def fun_l13_n923()
- fun_l14_n436
-end
-
-def fun_l13_n924()
- fun_l14_n315
-end
-
-def fun_l13_n925()
- fun_l14_n512
-end
-
-def fun_l13_n926()
- fun_l14_n611
-end
-
-def fun_l13_n927()
- fun_l14_n103
-end
-
-def fun_l13_n928()
- fun_l14_n149
-end
-
-def fun_l13_n929()
- fun_l14_n407
-end
-
-def fun_l13_n930()
- fun_l14_n380
-end
-
-def fun_l13_n931()
- fun_l14_n429
-end
-
-def fun_l13_n932()
- fun_l14_n870
-end
-
-def fun_l13_n933()
- fun_l14_n274
-end
-
-def fun_l13_n934()
- fun_l14_n57
-end
-
-def fun_l13_n935()
- fun_l14_n718
-end
-
-def fun_l13_n936()
- fun_l14_n571
-end
-
-def fun_l13_n937()
- fun_l14_n447
-end
-
-def fun_l13_n938()
- fun_l14_n742
-end
-
-def fun_l13_n939()
- fun_l14_n811
-end
-
-def fun_l13_n940()
- fun_l14_n148
-end
-
-def fun_l13_n941()
- fun_l14_n795
-end
-
-def fun_l13_n942()
- fun_l14_n807
-end
-
-def fun_l13_n943()
- fun_l14_n279
-end
-
-def fun_l13_n944()
- fun_l14_n939
-end
-
-def fun_l13_n945()
- fun_l14_n435
-end
-
-def fun_l13_n946()
- fun_l14_n937
-end
-
-def fun_l13_n947()
- fun_l14_n543
-end
-
-def fun_l13_n948()
- fun_l14_n374
-end
-
-def fun_l13_n949()
- fun_l14_n707
-end
-
-def fun_l13_n950()
- fun_l14_n866
-end
-
-def fun_l13_n951()
- fun_l14_n67
-end
-
-def fun_l13_n952()
- fun_l14_n752
-end
-
-def fun_l13_n953()
- fun_l14_n113
-end
-
-def fun_l13_n954()
- fun_l14_n358
-end
-
-def fun_l13_n955()
- fun_l14_n432
-end
-
-def fun_l13_n956()
- fun_l14_n132
-end
-
-def fun_l13_n957()
- fun_l14_n807
-end
-
-def fun_l13_n958()
- fun_l14_n293
-end
-
-def fun_l13_n959()
- fun_l14_n681
-end
-
-def fun_l13_n960()
- fun_l14_n335
-end
-
-def fun_l13_n961()
- fun_l14_n285
-end
-
-def fun_l13_n962()
- fun_l14_n366
-end
-
-def fun_l13_n963()
- fun_l14_n674
-end
-
-def fun_l13_n964()
- fun_l14_n914
-end
-
-def fun_l13_n965()
- fun_l14_n776
-end
-
-def fun_l13_n966()
- fun_l14_n297
-end
-
-def fun_l13_n967()
- fun_l14_n623
-end
-
-def fun_l13_n968()
- fun_l14_n357
-end
-
-def fun_l13_n969()
- fun_l14_n430
-end
-
-def fun_l13_n970()
- fun_l14_n201
-end
-
-def fun_l13_n971()
- fun_l14_n482
-end
-
-def fun_l13_n972()
- fun_l14_n363
-end
-
-def fun_l13_n973()
- fun_l14_n530
-end
-
-def fun_l13_n974()
- fun_l14_n892
-end
-
-def fun_l13_n975()
- fun_l14_n548
-end
-
-def fun_l13_n976()
- fun_l14_n257
-end
-
-def fun_l13_n977()
- fun_l14_n449
-end
-
-def fun_l13_n978()
- fun_l14_n346
-end
-
-def fun_l13_n979()
- fun_l14_n448
-end
-
-def fun_l13_n980()
- fun_l14_n912
-end
-
-def fun_l13_n981()
- fun_l14_n358
-end
-
-def fun_l13_n982()
- fun_l14_n55
-end
-
-def fun_l13_n983()
- fun_l14_n712
-end
-
-def fun_l13_n984()
- fun_l14_n179
-end
-
-def fun_l13_n985()
- fun_l14_n749
-end
-
-def fun_l13_n986()
- fun_l14_n469
-end
-
-def fun_l13_n987()
- fun_l14_n557
-end
-
-def fun_l13_n988()
- fun_l14_n383
-end
-
-def fun_l13_n989()
- fun_l14_n929
-end
-
-def fun_l13_n990()
- fun_l14_n659
-end
-
-def fun_l13_n991()
- fun_l14_n285
-end
-
-def fun_l13_n992()
- fun_l14_n779
-end
-
-def fun_l13_n993()
- fun_l14_n235
-end
-
-def fun_l13_n994()
- fun_l14_n756
-end
-
-def fun_l13_n995()
- fun_l14_n249
-end
-
-def fun_l13_n996()
- fun_l14_n8
-end
-
-def fun_l13_n997()
- fun_l14_n785
-end
-
-def fun_l13_n998()
- fun_l14_n945
-end
-
-def fun_l13_n999()
- fun_l14_n410
-end
-
-def fun_l14_n0()
- fun_l15_n85
-end
-
-def fun_l14_n1()
- fun_l15_n932
-end
-
-def fun_l14_n2()
- fun_l15_n422
-end
-
-def fun_l14_n3()
- fun_l15_n439
-end
-
-def fun_l14_n4()
- fun_l15_n186
-end
-
-def fun_l14_n5()
- fun_l15_n914
-end
-
-def fun_l14_n6()
- fun_l15_n830
-end
-
-def fun_l14_n7()
- fun_l15_n384
-end
-
-def fun_l14_n8()
- fun_l15_n200
-end
-
-def fun_l14_n9()
- fun_l15_n72
-end
-
-def fun_l14_n10()
- fun_l15_n498
-end
-
-def fun_l14_n11()
- fun_l15_n247
-end
-
-def fun_l14_n12()
- fun_l15_n432
-end
-
-def fun_l14_n13()
- fun_l15_n718
-end
-
-def fun_l14_n14()
- fun_l15_n568
-end
-
-def fun_l14_n15()
- fun_l15_n971
-end
-
-def fun_l14_n16()
- fun_l15_n545
-end
-
-def fun_l14_n17()
- fun_l15_n441
-end
-
-def fun_l14_n18()
- fun_l15_n532
-end
-
-def fun_l14_n19()
- fun_l15_n484
-end
-
-def fun_l14_n20()
- fun_l15_n659
-end
-
-def fun_l14_n21()
- fun_l15_n494
-end
-
-def fun_l14_n22()
- fun_l15_n379
-end
-
-def fun_l14_n23()
- fun_l15_n180
-end
-
-def fun_l14_n24()
- fun_l15_n955
-end
-
-def fun_l14_n25()
- fun_l15_n536
-end
-
-def fun_l14_n26()
- fun_l15_n940
-end
-
-def fun_l14_n27()
- fun_l15_n3
-end
-
-def fun_l14_n28()
- fun_l15_n520
-end
-
-def fun_l14_n29()
- fun_l15_n478
-end
-
-def fun_l14_n30()
- fun_l15_n865
-end
-
-def fun_l14_n31()
- fun_l15_n330
-end
-
-def fun_l14_n32()
- fun_l15_n217
-end
-
-def fun_l14_n33()
- fun_l15_n381
-end
-
-def fun_l14_n34()
- fun_l15_n88
-end
-
-def fun_l14_n35()
- fun_l15_n111
-end
-
-def fun_l14_n36()
- fun_l15_n181
-end
-
-def fun_l14_n37()
- fun_l15_n978
-end
-
-def fun_l14_n38()
- fun_l15_n596
-end
-
-def fun_l14_n39()
- fun_l15_n764
-end
-
-def fun_l14_n40()
- fun_l15_n779
-end
-
-def fun_l14_n41()
- fun_l15_n994
-end
-
-def fun_l14_n42()
- fun_l15_n90
-end
-
-def fun_l14_n43()
- fun_l15_n329
-end
-
-def fun_l14_n44()
- fun_l15_n684
-end
-
-def fun_l14_n45()
- fun_l15_n191
-end
-
-def fun_l14_n46()
- fun_l15_n282
-end
-
-def fun_l14_n47()
- fun_l15_n915
-end
-
-def fun_l14_n48()
- fun_l15_n330
-end
-
-def fun_l14_n49()
- fun_l15_n136
-end
-
-def fun_l14_n50()
- fun_l15_n167
-end
-
-def fun_l14_n51()
- fun_l15_n418
-end
-
-def fun_l14_n52()
- fun_l15_n822
-end
-
-def fun_l14_n53()
- fun_l15_n557
-end
-
-def fun_l14_n54()
- fun_l15_n155
-end
-
-def fun_l14_n55()
- fun_l15_n629
-end
-
-def fun_l14_n56()
- fun_l15_n694
-end
-
-def fun_l14_n57()
- fun_l15_n577
-end
-
-def fun_l14_n58()
- fun_l15_n412
-end
-
-def fun_l14_n59()
- fun_l15_n618
-end
-
-def fun_l14_n60()
- fun_l15_n873
-end
-
-def fun_l14_n61()
- fun_l15_n758
-end
-
-def fun_l14_n62()
- fun_l15_n820
-end
-
-def fun_l14_n63()
- fun_l15_n89
-end
-
-def fun_l14_n64()
- fun_l15_n788
-end
-
-def fun_l14_n65()
- fun_l15_n390
-end
-
-def fun_l14_n66()
- fun_l15_n177
-end
-
-def fun_l14_n67()
- fun_l15_n972
-end
-
-def fun_l14_n68()
- fun_l15_n124
-end
-
-def fun_l14_n69()
- fun_l15_n426
-end
-
-def fun_l14_n70()
- fun_l15_n490
-end
-
-def fun_l14_n71()
- fun_l15_n963
-end
-
-def fun_l14_n72()
- fun_l15_n960
-end
-
-def fun_l14_n73()
- fun_l15_n111
-end
-
-def fun_l14_n74()
- fun_l15_n535
-end
-
-def fun_l14_n75()
- fun_l15_n936
-end
-
-def fun_l14_n76()
- fun_l15_n17
-end
-
-def fun_l14_n77()
- fun_l15_n732
-end
-
-def fun_l14_n78()
- fun_l15_n905
-end
-
-def fun_l14_n79()
- fun_l15_n658
-end
-
-def fun_l14_n80()
- fun_l15_n869
-end
-
-def fun_l14_n81()
- fun_l15_n966
-end
-
-def fun_l14_n82()
- fun_l15_n413
-end
-
-def fun_l14_n83()
- fun_l15_n360
-end
-
-def fun_l14_n84()
- fun_l15_n955
-end
-
-def fun_l14_n85()
- fun_l15_n612
-end
-
-def fun_l14_n86()
- fun_l15_n665
-end
-
-def fun_l14_n87()
- fun_l15_n570
-end
-
-def fun_l14_n88()
- fun_l15_n381
-end
-
-def fun_l14_n89()
- fun_l15_n169
-end
-
-def fun_l14_n90()
- fun_l15_n33
-end
-
-def fun_l14_n91()
- fun_l15_n574
-end
-
-def fun_l14_n92()
- fun_l15_n826
-end
-
-def fun_l14_n93()
- fun_l15_n183
-end
-
-def fun_l14_n94()
- fun_l15_n878
-end
-
-def fun_l14_n95()
- fun_l15_n898
-end
-
-def fun_l14_n96()
- fun_l15_n296
-end
-
-def fun_l14_n97()
- fun_l15_n769
-end
-
-def fun_l14_n98()
- fun_l15_n41
-end
-
-def fun_l14_n99()
- fun_l15_n644
-end
-
-def fun_l14_n100()
- fun_l15_n218
-end
-
-def fun_l14_n101()
- fun_l15_n267
-end
-
-def fun_l14_n102()
- fun_l15_n846
-end
-
-def fun_l14_n103()
- fun_l15_n409
-end
-
-def fun_l14_n104()
- fun_l15_n776
-end
-
-def fun_l14_n105()
- fun_l15_n224
-end
-
-def fun_l14_n106()
- fun_l15_n401
-end
-
-def fun_l14_n107()
- fun_l15_n726
-end
-
-def fun_l14_n108()
- fun_l15_n624
-end
-
-def fun_l14_n109()
- fun_l15_n319
-end
-
-def fun_l14_n110()
- fun_l15_n180
-end
-
-def fun_l14_n111()
- fun_l15_n370
-end
-
-def fun_l14_n112()
- fun_l15_n834
-end
-
-def fun_l14_n113()
- fun_l15_n397
-end
-
-def fun_l14_n114()
- fun_l15_n685
-end
-
-def fun_l14_n115()
- fun_l15_n286
-end
-
-def fun_l14_n116()
- fun_l15_n740
-end
-
-def fun_l14_n117()
- fun_l15_n122
-end
-
-def fun_l14_n118()
- fun_l15_n112
-end
-
-def fun_l14_n119()
- fun_l15_n658
-end
-
-def fun_l14_n120()
- fun_l15_n844
-end
-
-def fun_l14_n121()
- fun_l15_n715
-end
-
-def fun_l14_n122()
- fun_l15_n14
-end
-
-def fun_l14_n123()
- fun_l15_n677
-end
-
-def fun_l14_n124()
- fun_l15_n742
-end
-
-def fun_l14_n125()
- fun_l15_n311
-end
-
-def fun_l14_n126()
- fun_l15_n234
-end
-
-def fun_l14_n127()
- fun_l15_n746
-end
-
-def fun_l14_n128()
- fun_l15_n616
-end
-
-def fun_l14_n129()
- fun_l15_n529
-end
-
-def fun_l14_n130()
- fun_l15_n330
-end
-
-def fun_l14_n131()
- fun_l15_n182
-end
-
-def fun_l14_n132()
- fun_l15_n588
-end
-
-def fun_l14_n133()
- fun_l15_n477
-end
-
-def fun_l14_n134()
- fun_l15_n267
-end
-
-def fun_l14_n135()
- fun_l15_n667
-end
-
-def fun_l14_n136()
- fun_l15_n233
-end
-
-def fun_l14_n137()
- fun_l15_n630
-end
-
-def fun_l14_n138()
- fun_l15_n993
-end
-
-def fun_l14_n139()
- fun_l15_n79
-end
-
-def fun_l14_n140()
- fun_l15_n2
-end
-
-def fun_l14_n141()
- fun_l15_n774
-end
-
-def fun_l14_n142()
- fun_l15_n762
-end
-
-def fun_l14_n143()
- fun_l15_n832
-end
-
-def fun_l14_n144()
- fun_l15_n359
-end
-
-def fun_l14_n145()
- fun_l15_n344
-end
-
-def fun_l14_n146()
- fun_l15_n521
-end
-
-def fun_l14_n147()
- fun_l15_n867
-end
-
-def fun_l14_n148()
- fun_l15_n132
-end
-
-def fun_l14_n149()
- fun_l15_n19
-end
-
-def fun_l14_n150()
- fun_l15_n513
-end
-
-def fun_l14_n151()
- fun_l15_n732
-end
-
-def fun_l14_n152()
- fun_l15_n709
-end
-
-def fun_l14_n153()
- fun_l15_n876
-end
-
-def fun_l14_n154()
- fun_l15_n400
-end
-
-def fun_l14_n155()
- fun_l15_n539
-end
-
-def fun_l14_n156()
- fun_l15_n895
-end
-
-def fun_l14_n157()
- fun_l15_n208
-end
-
-def fun_l14_n158()
- fun_l15_n268
-end
-
-def fun_l14_n159()
- fun_l15_n286
-end
-
-def fun_l14_n160()
- fun_l15_n457
-end
-
-def fun_l14_n161()
- fun_l15_n985
-end
-
-def fun_l14_n162()
- fun_l15_n48
-end
-
-def fun_l14_n163()
- fun_l15_n495
-end
-
-def fun_l14_n164()
- fun_l15_n10
-end
-
-def fun_l14_n165()
- fun_l15_n368
-end
-
-def fun_l14_n166()
- fun_l15_n266
-end
-
-def fun_l14_n167()
- fun_l15_n587
-end
-
-def fun_l14_n168()
- fun_l15_n210
-end
-
-def fun_l14_n169()
- fun_l15_n5
-end
-
-def fun_l14_n170()
- fun_l15_n635
-end
-
-def fun_l14_n171()
- fun_l15_n47
-end
-
-def fun_l14_n172()
- fun_l15_n88
-end
-
-def fun_l14_n173()
- fun_l15_n79
-end
-
-def fun_l14_n174()
- fun_l15_n791
-end
-
-def fun_l14_n175()
- fun_l15_n812
-end
-
-def fun_l14_n176()
- fun_l15_n112
-end
-
-def fun_l14_n177()
- fun_l15_n590
-end
-
-def fun_l14_n178()
- fun_l15_n59
-end
-
-def fun_l14_n179()
- fun_l15_n275
-end
-
-def fun_l14_n180()
- fun_l15_n206
-end
-
-def fun_l14_n181()
- fun_l15_n385
-end
-
-def fun_l14_n182()
- fun_l15_n809
-end
-
-def fun_l14_n183()
- fun_l15_n704
-end
-
-def fun_l14_n184()
- fun_l15_n331
-end
-
-def fun_l14_n185()
- fun_l15_n819
-end
-
-def fun_l14_n186()
- fun_l15_n165
-end
-
-def fun_l14_n187()
- fun_l15_n623
-end
-
-def fun_l14_n188()
- fun_l15_n528
-end
-
-def fun_l14_n189()
- fun_l15_n393
-end
-
-def fun_l14_n190()
- fun_l15_n712
-end
-
-def fun_l14_n191()
- fun_l15_n951
-end
-
-def fun_l14_n192()
- fun_l15_n584
-end
-
-def fun_l14_n193()
- fun_l15_n984
-end
-
-def fun_l14_n194()
- fun_l15_n283
-end
-
-def fun_l14_n195()
- fun_l15_n821
-end
-
-def fun_l14_n196()
- fun_l15_n105
-end
-
-def fun_l14_n197()
- fun_l15_n49
-end
-
-def fun_l14_n198()
- fun_l15_n191
-end
-
-def fun_l14_n199()
- fun_l15_n751
-end
-
-def fun_l14_n200()
- fun_l15_n108
-end
-
-def fun_l14_n201()
- fun_l15_n121
-end
-
-def fun_l14_n202()
- fun_l15_n751
-end
-
-def fun_l14_n203()
- fun_l15_n837
-end
-
-def fun_l14_n204()
- fun_l15_n747
-end
-
-def fun_l14_n205()
- fun_l15_n682
-end
-
-def fun_l14_n206()
- fun_l15_n689
-end
-
-def fun_l14_n207()
- fun_l15_n562
-end
-
-def fun_l14_n208()
- fun_l15_n580
-end
-
-def fun_l14_n209()
- fun_l15_n556
-end
-
-def fun_l14_n210()
- fun_l15_n155
-end
-
-def fun_l14_n211()
- fun_l15_n661
-end
-
-def fun_l14_n212()
- fun_l15_n571
-end
-
-def fun_l14_n213()
- fun_l15_n341
-end
-
-def fun_l14_n214()
- fun_l15_n200
-end
-
-def fun_l14_n215()
- fun_l15_n78
-end
-
-def fun_l14_n216()
- fun_l15_n922
-end
-
-def fun_l14_n217()
- fun_l15_n437
-end
-
-def fun_l14_n218()
- fun_l15_n263
-end
-
-def fun_l14_n219()
- fun_l15_n971
-end
-
-def fun_l14_n220()
- fun_l15_n65
-end
-
-def fun_l14_n221()
- fun_l15_n951
-end
-
-def fun_l14_n222()
- fun_l15_n163
-end
-
-def fun_l14_n223()
- fun_l15_n732
-end
-
-def fun_l14_n224()
- fun_l15_n424
-end
-
-def fun_l14_n225()
- fun_l15_n91
-end
-
-def fun_l14_n226()
- fun_l15_n711
-end
-
-def fun_l14_n227()
- fun_l15_n224
-end
-
-def fun_l14_n228()
- fun_l15_n885
-end
-
-def fun_l14_n229()
- fun_l15_n489
-end
-
-def fun_l14_n230()
- fun_l15_n733
-end
-
-def fun_l14_n231()
- fun_l15_n355
-end
-
-def fun_l14_n232()
- fun_l15_n819
-end
-
-def fun_l14_n233()
- fun_l15_n934
-end
-
-def fun_l14_n234()
- fun_l15_n643
-end
-
-def fun_l14_n235()
- fun_l15_n555
-end
-
-def fun_l14_n236()
- fun_l15_n508
-end
-
-def fun_l14_n237()
- fun_l15_n181
-end
-
-def fun_l14_n238()
- fun_l15_n171
-end
-
-def fun_l14_n239()
- fun_l15_n834
-end
-
-def fun_l14_n240()
- fun_l15_n599
-end
-
-def fun_l14_n241()
- fun_l15_n492
-end
-
-def fun_l14_n242()
- fun_l15_n131
-end
-
-def fun_l14_n243()
- fun_l15_n838
-end
-
-def fun_l14_n244()
- fun_l15_n745
-end
-
-def fun_l14_n245()
- fun_l15_n653
-end
-
-def fun_l14_n246()
- fun_l15_n905
-end
-
-def fun_l14_n247()
- fun_l15_n962
-end
-
-def fun_l14_n248()
- fun_l15_n269
-end
-
-def fun_l14_n249()
- fun_l15_n920
-end
-
-def fun_l14_n250()
- fun_l15_n428
-end
-
-def fun_l14_n251()
- fun_l15_n305
-end
-
-def fun_l14_n252()
- fun_l15_n630
-end
-
-def fun_l14_n253()
- fun_l15_n458
-end
-
-def fun_l14_n254()
- fun_l15_n933
-end
-
-def fun_l14_n255()
- fun_l15_n852
-end
-
-def fun_l14_n256()
- fun_l15_n855
-end
-
-def fun_l14_n257()
- fun_l15_n207
-end
-
-def fun_l14_n258()
- fun_l15_n865
-end
-
-def fun_l14_n259()
- fun_l15_n958
-end
-
-def fun_l14_n260()
- fun_l15_n230
-end
-
-def fun_l14_n261()
- fun_l15_n872
-end
-
-def fun_l14_n262()
- fun_l15_n963
-end
-
-def fun_l14_n263()
- fun_l15_n945
-end
-
-def fun_l14_n264()
- fun_l15_n410
-end
-
-def fun_l14_n265()
- fun_l15_n735
-end
-
-def fun_l14_n266()
- fun_l15_n496
-end
-
-def fun_l14_n267()
- fun_l15_n110
-end
-
-def fun_l14_n268()
- fun_l15_n267
-end
-
-def fun_l14_n269()
- fun_l15_n699
-end
-
-def fun_l14_n270()
- fun_l15_n812
-end
-
-def fun_l14_n271()
- fun_l15_n273
-end
-
-def fun_l14_n272()
- fun_l15_n499
-end
-
-def fun_l14_n273()
- fun_l15_n341
-end
-
-def fun_l14_n274()
- fun_l15_n512
-end
-
-def fun_l14_n275()
- fun_l15_n110
-end
-
-def fun_l14_n276()
- fun_l15_n62
-end
-
-def fun_l14_n277()
- fun_l15_n541
-end
-
-def fun_l14_n278()
- fun_l15_n622
-end
-
-def fun_l14_n279()
- fun_l15_n456
-end
-
-def fun_l14_n280()
- fun_l15_n527
-end
-
-def fun_l14_n281()
- fun_l15_n141
-end
-
-def fun_l14_n282()
- fun_l15_n266
-end
-
-def fun_l14_n283()
- fun_l15_n817
-end
-
-def fun_l14_n284()
- fun_l15_n448
-end
-
-def fun_l14_n285()
- fun_l15_n208
-end
-
-def fun_l14_n286()
- fun_l15_n368
-end
-
-def fun_l14_n287()
- fun_l15_n947
-end
-
-def fun_l14_n288()
- fun_l15_n192
-end
-
-def fun_l14_n289()
- fun_l15_n68
-end
-
-def fun_l14_n290()
- fun_l15_n704
-end
-
-def fun_l14_n291()
- fun_l15_n278
-end
-
-def fun_l14_n292()
- fun_l15_n352
-end
-
-def fun_l14_n293()
- fun_l15_n629
-end
-
-def fun_l14_n294()
- fun_l15_n404
-end
-
-def fun_l14_n295()
- fun_l15_n89
-end
-
-def fun_l14_n296()
- fun_l15_n920
-end
-
-def fun_l14_n297()
- fun_l15_n984
-end
-
-def fun_l14_n298()
- fun_l15_n198
-end
-
-def fun_l14_n299()
- fun_l15_n524
-end
-
-def fun_l14_n300()
- fun_l15_n891
-end
-
-def fun_l14_n301()
- fun_l15_n921
-end
-
-def fun_l14_n302()
- fun_l15_n785
-end
-
-def fun_l14_n303()
- fun_l15_n618
-end
-
-def fun_l14_n304()
- fun_l15_n387
-end
-
-def fun_l14_n305()
- fun_l15_n361
-end
-
-def fun_l14_n306()
- fun_l15_n535
-end
-
-def fun_l14_n307()
- fun_l15_n137
-end
-
-def fun_l14_n308()
- fun_l15_n77
-end
-
-def fun_l14_n309()
- fun_l15_n877
-end
-
-def fun_l14_n310()
- fun_l15_n178
-end
-
-def fun_l14_n311()
- fun_l15_n67
-end
-
-def fun_l14_n312()
- fun_l15_n539
-end
-
-def fun_l14_n313()
- fun_l15_n971
-end
-
-def fun_l14_n314()
- fun_l15_n743
-end
-
-def fun_l14_n315()
- fun_l15_n787
-end
-
-def fun_l14_n316()
- fun_l15_n451
-end
-
-def fun_l14_n317()
- fun_l15_n12
-end
-
-def fun_l14_n318()
- fun_l15_n303
-end
-
-def fun_l14_n319()
- fun_l15_n210
-end
-
-def fun_l14_n320()
- fun_l15_n853
-end
-
-def fun_l14_n321()
- fun_l15_n154
-end
-
-def fun_l14_n322()
- fun_l15_n71
-end
-
-def fun_l14_n323()
- fun_l15_n448
-end
-
-def fun_l14_n324()
- fun_l15_n178
-end
-
-def fun_l14_n325()
- fun_l15_n312
-end
-
-def fun_l14_n326()
- fun_l15_n671
-end
-
-def fun_l14_n327()
- fun_l15_n282
-end
-
-def fun_l14_n328()
- fun_l15_n315
-end
-
-def fun_l14_n329()
- fun_l15_n449
-end
-
-def fun_l14_n330()
- fun_l15_n338
-end
-
-def fun_l14_n331()
- fun_l15_n260
-end
-
-def fun_l14_n332()
- fun_l15_n664
-end
-
-def fun_l14_n333()
- fun_l15_n312
-end
-
-def fun_l14_n334()
- fun_l15_n202
-end
-
-def fun_l14_n335()
- fun_l15_n969
-end
-
-def fun_l14_n336()
- fun_l15_n698
-end
-
-def fun_l14_n337()
- fun_l15_n802
-end
-
-def fun_l14_n338()
- fun_l15_n175
-end
-
-def fun_l14_n339()
- fun_l15_n646
-end
-
-def fun_l14_n340()
- fun_l15_n145
-end
-
-def fun_l14_n341()
- fun_l15_n19
-end
-
-def fun_l14_n342()
- fun_l15_n764
-end
-
-def fun_l14_n343()
- fun_l15_n970
-end
-
-def fun_l14_n344()
- fun_l15_n519
-end
-
-def fun_l14_n345()
- fun_l15_n121
-end
-
-def fun_l14_n346()
- fun_l15_n299
-end
-
-def fun_l14_n347()
- fun_l15_n553
-end
-
-def fun_l14_n348()
- fun_l15_n618
-end
-
-def fun_l14_n349()
- fun_l15_n725
-end
-
-def fun_l14_n350()
- fun_l15_n635
-end
-
-def fun_l14_n351()
- fun_l15_n382
-end
-
-def fun_l14_n352()
- fun_l15_n529
-end
-
-def fun_l14_n353()
- fun_l15_n168
-end
-
-def fun_l14_n354()
- fun_l15_n948
-end
-
-def fun_l14_n355()
- fun_l15_n192
-end
-
-def fun_l14_n356()
- fun_l15_n27
-end
-
-def fun_l14_n357()
- fun_l15_n254
-end
-
-def fun_l14_n358()
- fun_l15_n384
-end
-
-def fun_l14_n359()
- fun_l15_n559
-end
-
-def fun_l14_n360()
- fun_l15_n560
-end
-
-def fun_l14_n361()
- fun_l15_n781
-end
-
-def fun_l14_n362()
- fun_l15_n494
-end
-
-def fun_l14_n363()
- fun_l15_n997
-end
-
-def fun_l14_n364()
- fun_l15_n203
-end
-
-def fun_l14_n365()
- fun_l15_n61
-end
-
-def fun_l14_n366()
- fun_l15_n190
-end
-
-def fun_l14_n367()
- fun_l15_n755
-end
-
-def fun_l14_n368()
- fun_l15_n876
-end
-
-def fun_l14_n369()
- fun_l15_n761
-end
-
-def fun_l14_n370()
- fun_l15_n641
-end
-
-def fun_l14_n371()
- fun_l15_n307
-end
-
-def fun_l14_n372()
- fun_l15_n351
-end
-
-def fun_l14_n373()
- fun_l15_n929
-end
-
-def fun_l14_n374()
- fun_l15_n455
-end
-
-def fun_l14_n375()
- fun_l15_n740
-end
-
-def fun_l14_n376()
- fun_l15_n803
-end
-
-def fun_l14_n377()
- fun_l15_n544
-end
-
-def fun_l14_n378()
- fun_l15_n666
-end
-
-def fun_l14_n379()
- fun_l15_n274
-end
-
-def fun_l14_n380()
- fun_l15_n374
-end
-
-def fun_l14_n381()
- fun_l15_n108
-end
-
-def fun_l14_n382()
- fun_l15_n632
-end
-
-def fun_l14_n383()
- fun_l15_n782
-end
-
-def fun_l14_n384()
- fun_l15_n16
-end
-
-def fun_l14_n385()
- fun_l15_n323
-end
-
-def fun_l14_n386()
- fun_l15_n923
-end
-
-def fun_l14_n387()
- fun_l15_n929
-end
-
-def fun_l14_n388()
- fun_l15_n318
-end
-
-def fun_l14_n389()
- fun_l15_n929
-end
-
-def fun_l14_n390()
- fun_l15_n633
-end
-
-def fun_l14_n391()
- fun_l15_n159
-end
-
-def fun_l14_n392()
- fun_l15_n18
-end
-
-def fun_l14_n393()
- fun_l15_n997
-end
-
-def fun_l14_n394()
- fun_l15_n585
-end
-
-def fun_l14_n395()
- fun_l15_n216
-end
-
-def fun_l14_n396()
- fun_l15_n665
-end
-
-def fun_l14_n397()
- fun_l15_n51
-end
-
-def fun_l14_n398()
- fun_l15_n681
-end
-
-def fun_l14_n399()
- fun_l15_n921
-end
-
-def fun_l14_n400()
- fun_l15_n937
-end
-
-def fun_l14_n401()
- fun_l15_n251
-end
-
-def fun_l14_n402()
- fun_l15_n359
-end
-
-def fun_l14_n403()
- fun_l15_n262
-end
-
-def fun_l14_n404()
- fun_l15_n631
-end
-
-def fun_l14_n405()
- fun_l15_n218
-end
-
-def fun_l14_n406()
- fun_l15_n138
-end
-
-def fun_l14_n407()
- fun_l15_n695
-end
-
-def fun_l14_n408()
- fun_l15_n95
-end
-
-def fun_l14_n409()
- fun_l15_n166
-end
-
-def fun_l14_n410()
- fun_l15_n566
-end
-
-def fun_l14_n411()
- fun_l15_n322
-end
-
-def fun_l14_n412()
- fun_l15_n278
-end
-
-def fun_l14_n413()
- fun_l15_n144
-end
-
-def fun_l14_n414()
- fun_l15_n949
-end
-
-def fun_l14_n415()
- fun_l15_n351
-end
-
-def fun_l14_n416()
- fun_l15_n887
-end
-
-def fun_l14_n417()
- fun_l15_n501
-end
-
-def fun_l14_n418()
- fun_l15_n997
-end
-
-def fun_l14_n419()
- fun_l15_n212
-end
-
-def fun_l14_n420()
- fun_l15_n725
-end
-
-def fun_l14_n421()
- fun_l15_n728
-end
-
-def fun_l14_n422()
- fun_l15_n923
-end
-
-def fun_l14_n423()
- fun_l15_n694
-end
-
-def fun_l14_n424()
- fun_l15_n472
-end
-
-def fun_l14_n425()
- fun_l15_n967
-end
-
-def fun_l14_n426()
- fun_l15_n908
-end
-
-def fun_l14_n427()
- fun_l15_n199
-end
-
-def fun_l14_n428()
- fun_l15_n384
-end
-
-def fun_l14_n429()
- fun_l15_n485
-end
-
-def fun_l14_n430()
- fun_l15_n767
-end
-
-def fun_l14_n431()
- fun_l15_n337
-end
-
-def fun_l14_n432()
- fun_l15_n664
-end
-
-def fun_l14_n433()
- fun_l15_n735
-end
-
-def fun_l14_n434()
- fun_l15_n76
-end
-
-def fun_l14_n435()
- fun_l15_n879
-end
-
-def fun_l14_n436()
- fun_l15_n815
-end
-
-def fun_l14_n437()
- fun_l15_n290
-end
-
-def fun_l14_n438()
- fun_l15_n836
-end
-
-def fun_l14_n439()
- fun_l15_n56
-end
-
-def fun_l14_n440()
- fun_l15_n671
-end
-
-def fun_l14_n441()
- fun_l15_n90
-end
-
-def fun_l14_n442()
- fun_l15_n930
-end
-
-def fun_l14_n443()
- fun_l15_n754
-end
-
-def fun_l14_n444()
- fun_l15_n241
-end
-
-def fun_l14_n445()
- fun_l15_n362
-end
-
-def fun_l14_n446()
- fun_l15_n260
-end
-
-def fun_l14_n447()
- fun_l15_n846
-end
-
-def fun_l14_n448()
- fun_l15_n754
-end
-
-def fun_l14_n449()
- fun_l15_n571
-end
-
-def fun_l14_n450()
- fun_l15_n602
-end
-
-def fun_l14_n451()
- fun_l15_n243
-end
-
-def fun_l14_n452()
- fun_l15_n59
-end
-
-def fun_l14_n453()
- fun_l15_n660
-end
-
-def fun_l14_n454()
- fun_l15_n338
-end
-
-def fun_l14_n455()
- fun_l15_n461
-end
-
-def fun_l14_n456()
- fun_l15_n702
-end
-
-def fun_l14_n457()
- fun_l15_n878
-end
-
-def fun_l14_n458()
- fun_l15_n625
-end
-
-def fun_l14_n459()
- fun_l15_n762
-end
-
-def fun_l14_n460()
- fun_l15_n36
-end
-
-def fun_l14_n461()
- fun_l15_n432
-end
-
-def fun_l14_n462()
- fun_l15_n685
-end
-
-def fun_l14_n463()
- fun_l15_n398
-end
-
-def fun_l14_n464()
- fun_l15_n828
-end
-
-def fun_l14_n465()
- fun_l15_n306
-end
-
-def fun_l14_n466()
- fun_l15_n717
-end
-
-def fun_l14_n467()
- fun_l15_n271
-end
-
-def fun_l14_n468()
- fun_l15_n444
-end
-
-def fun_l14_n469()
- fun_l15_n82
-end
-
-def fun_l14_n470()
- fun_l15_n363
-end
-
-def fun_l14_n471()
- fun_l15_n648
-end
-
-def fun_l14_n472()
- fun_l15_n33
-end
-
-def fun_l14_n473()
- fun_l15_n968
-end
-
-def fun_l14_n474()
- fun_l15_n331
-end
-
-def fun_l14_n475()
- fun_l15_n228
-end
-
-def fun_l14_n476()
- fun_l15_n944
-end
-
-def fun_l14_n477()
- fun_l15_n771
-end
-
-def fun_l14_n478()
- fun_l15_n228
-end
-
-def fun_l14_n479()
- fun_l15_n442
-end
-
-def fun_l14_n480()
- fun_l15_n75
-end
-
-def fun_l14_n481()
- fun_l15_n911
-end
-
-def fun_l14_n482()
- fun_l15_n591
-end
-
-def fun_l14_n483()
- fun_l15_n929
-end
-
-def fun_l14_n484()
- fun_l15_n504
-end
-
-def fun_l14_n485()
- fun_l15_n48
-end
-
-def fun_l14_n486()
- fun_l15_n592
-end
-
-def fun_l14_n487()
- fun_l15_n399
-end
-
-def fun_l14_n488()
- fun_l15_n467
-end
-
-def fun_l14_n489()
- fun_l15_n192
-end
-
-def fun_l14_n490()
- fun_l15_n347
-end
-
-def fun_l14_n491()
- fun_l15_n517
-end
-
-def fun_l14_n492()
- fun_l15_n436
-end
-
-def fun_l14_n493()
- fun_l15_n50
-end
-
-def fun_l14_n494()
- fun_l15_n237
-end
-
-def fun_l14_n495()
- fun_l15_n878
-end
-
-def fun_l14_n496()
- fun_l15_n46
-end
-
-def fun_l14_n497()
- fun_l15_n499
-end
-
-def fun_l14_n498()
- fun_l15_n779
-end
-
-def fun_l14_n499()
- fun_l15_n763
-end
-
-def fun_l14_n500()
- fun_l15_n195
-end
-
-def fun_l14_n501()
- fun_l15_n868
-end
-
-def fun_l14_n502()
- fun_l15_n83
-end
-
-def fun_l14_n503()
- fun_l15_n386
-end
-
-def fun_l14_n504()
- fun_l15_n907
-end
-
-def fun_l14_n505()
- fun_l15_n889
-end
-
-def fun_l14_n506()
- fun_l15_n314
-end
-
-def fun_l14_n507()
- fun_l15_n24
-end
-
-def fun_l14_n508()
- fun_l15_n122
-end
-
-def fun_l14_n509()
- fun_l15_n772
-end
-
-def fun_l14_n510()
- fun_l15_n204
-end
-
-def fun_l14_n511()
- fun_l15_n646
-end
-
-def fun_l14_n512()
- fun_l15_n105
-end
-
-def fun_l14_n513()
- fun_l15_n393
-end
-
-def fun_l14_n514()
- fun_l15_n533
-end
-
-def fun_l14_n515()
- fun_l15_n572
-end
-
-def fun_l14_n516()
- fun_l15_n360
-end
-
-def fun_l14_n517()
- fun_l15_n241
-end
-
-def fun_l14_n518()
- fun_l15_n962
-end
-
-def fun_l14_n519()
- fun_l15_n771
-end
-
-def fun_l14_n520()
- fun_l15_n379
-end
-
-def fun_l14_n521()
- fun_l15_n749
-end
-
-def fun_l14_n522()
- fun_l15_n601
-end
-
-def fun_l14_n523()
- fun_l15_n0
-end
-
-def fun_l14_n524()
- fun_l15_n345
-end
-
-def fun_l14_n525()
- fun_l15_n896
-end
-
-def fun_l14_n526()
- fun_l15_n612
-end
-
-def fun_l14_n527()
- fun_l15_n897
-end
-
-def fun_l14_n528()
- fun_l15_n760
-end
-
-def fun_l14_n529()
- fun_l15_n283
-end
-
-def fun_l14_n530()
- fun_l15_n269
-end
-
-def fun_l14_n531()
- fun_l15_n967
-end
-
-def fun_l14_n532()
- fun_l15_n399
-end
-
-def fun_l14_n533()
- fun_l15_n343
-end
-
-def fun_l14_n534()
- fun_l15_n590
-end
-
-def fun_l14_n535()
- fun_l15_n37
-end
-
-def fun_l14_n536()
- fun_l15_n882
-end
-
-def fun_l14_n537()
- fun_l15_n275
-end
-
-def fun_l14_n538()
- fun_l15_n169
-end
-
-def fun_l14_n539()
- fun_l15_n474
-end
-
-def fun_l14_n540()
- fun_l15_n993
-end
-
-def fun_l14_n541()
- fun_l15_n872
-end
-
-def fun_l14_n542()
- fun_l15_n650
-end
-
-def fun_l14_n543()
- fun_l15_n238
-end
-
-def fun_l14_n544()
- fun_l15_n80
-end
-
-def fun_l14_n545()
- fun_l15_n585
-end
-
-def fun_l14_n546()
- fun_l15_n961
-end
-
-def fun_l14_n547()
- fun_l15_n574
-end
-
-def fun_l14_n548()
- fun_l15_n447
-end
-
-def fun_l14_n549()
- fun_l15_n405
-end
-
-def fun_l14_n550()
- fun_l15_n347
-end
-
-def fun_l14_n551()
- fun_l15_n326
-end
-
-def fun_l14_n552()
- fun_l15_n679
-end
-
-def fun_l14_n553()
- fun_l15_n848
-end
-
-def fun_l14_n554()
- fun_l15_n391
-end
-
-def fun_l14_n555()
- fun_l15_n293
-end
-
-def fun_l14_n556()
- fun_l15_n997
-end
-
-def fun_l14_n557()
- fun_l15_n247
-end
-
-def fun_l14_n558()
- fun_l15_n138
-end
-
-def fun_l14_n559()
- fun_l15_n737
-end
-
-def fun_l14_n560()
- fun_l15_n764
-end
-
-def fun_l14_n561()
- fun_l15_n541
-end
-
-def fun_l14_n562()
- fun_l15_n373
-end
-
-def fun_l14_n563()
- fun_l15_n562
-end
-
-def fun_l14_n564()
- fun_l15_n626
-end
-
-def fun_l14_n565()
- fun_l15_n601
-end
-
-def fun_l14_n566()
- fun_l15_n547
-end
-
-def fun_l14_n567()
- fun_l15_n226
-end
-
-def fun_l14_n568()
- fun_l15_n182
-end
-
-def fun_l14_n569()
- fun_l15_n647
-end
-
-def fun_l14_n570()
- fun_l15_n912
-end
-
-def fun_l14_n571()
- fun_l15_n33
-end
-
-def fun_l14_n572()
- fun_l15_n397
-end
-
-def fun_l14_n573()
- fun_l15_n413
-end
-
-def fun_l14_n574()
- fun_l15_n714
-end
-
-def fun_l14_n575()
- fun_l15_n930
-end
-
-def fun_l14_n576()
- fun_l15_n35
-end
-
-def fun_l14_n577()
- fun_l15_n868
-end
-
-def fun_l14_n578()
- fun_l15_n606
-end
-
-def fun_l14_n579()
- fun_l15_n516
-end
-
-def fun_l14_n580()
- fun_l15_n127
-end
-
-def fun_l14_n581()
- fun_l15_n689
-end
-
-def fun_l14_n582()
- fun_l15_n346
-end
-
-def fun_l14_n583()
- fun_l15_n352
-end
-
-def fun_l14_n584()
- fun_l15_n810
-end
-
-def fun_l14_n585()
- fun_l15_n38
-end
-
-def fun_l14_n586()
- fun_l15_n751
-end
-
-def fun_l14_n587()
- fun_l15_n888
-end
-
-def fun_l14_n588()
- fun_l15_n938
-end
-
-def fun_l14_n589()
- fun_l15_n941
-end
-
-def fun_l14_n590()
- fun_l15_n768
-end
-
-def fun_l14_n591()
- fun_l15_n544
-end
-
-def fun_l14_n592()
- fun_l15_n393
-end
-
-def fun_l14_n593()
- fun_l15_n74
-end
-
-def fun_l14_n594()
- fun_l15_n812
-end
-
-def fun_l14_n595()
- fun_l15_n94
-end
-
-def fun_l14_n596()
- fun_l15_n122
-end
-
-def fun_l14_n597()
- fun_l15_n552
-end
-
-def fun_l14_n598()
- fun_l15_n586
-end
-
-def fun_l14_n599()
- fun_l15_n100
-end
-
-def fun_l14_n600()
- fun_l15_n338
-end
-
-def fun_l14_n601()
- fun_l15_n627
-end
-
-def fun_l14_n602()
- fun_l15_n445
-end
-
-def fun_l14_n603()
- fun_l15_n734
-end
-
-def fun_l14_n604()
- fun_l15_n852
-end
-
-def fun_l14_n605()
- fun_l15_n908
-end
-
-def fun_l14_n606()
- fun_l15_n736
-end
-
-def fun_l14_n607()
- fun_l15_n590
-end
-
-def fun_l14_n608()
- fun_l15_n988
-end
-
-def fun_l14_n609()
- fun_l15_n241
-end
-
-def fun_l14_n610()
- fun_l15_n375
-end
-
-def fun_l14_n611()
- fun_l15_n25
-end
-
-def fun_l14_n612()
- fun_l15_n176
-end
-
-def fun_l14_n613()
- fun_l15_n375
-end
-
-def fun_l14_n614()
- fun_l15_n248
-end
-
-def fun_l14_n615()
- fun_l15_n393
-end
-
-def fun_l14_n616()
- fun_l15_n2
-end
-
-def fun_l14_n617()
- fun_l15_n964
-end
-
-def fun_l14_n618()
- fun_l15_n581
-end
-
-def fun_l14_n619()
- fun_l15_n190
-end
-
-def fun_l14_n620()
- fun_l15_n847
-end
-
-def fun_l14_n621()
- fun_l15_n748
-end
-
-def fun_l14_n622()
- fun_l15_n27
-end
-
-def fun_l14_n623()
- fun_l15_n984
-end
-
-def fun_l14_n624()
- fun_l15_n728
-end
-
-def fun_l14_n625()
- fun_l15_n740
-end
-
-def fun_l14_n626()
- fun_l15_n480
-end
-
-def fun_l14_n627()
- fun_l15_n175
-end
-
-def fun_l14_n628()
- fun_l15_n152
-end
-
-def fun_l14_n629()
- fun_l15_n880
-end
-
-def fun_l14_n630()
- fun_l15_n337
-end
-
-def fun_l14_n631()
- fun_l15_n862
-end
-
-def fun_l14_n632()
- fun_l15_n367
-end
-
-def fun_l14_n633()
- fun_l15_n768
-end
-
-def fun_l14_n634()
- fun_l15_n178
-end
-
-def fun_l14_n635()
- fun_l15_n693
-end
-
-def fun_l14_n636()
- fun_l15_n176
-end
-
-def fun_l14_n637()
- fun_l15_n348
-end
-
-def fun_l14_n638()
- fun_l15_n31
-end
-
-def fun_l14_n639()
- fun_l15_n601
-end
-
-def fun_l14_n640()
- fun_l15_n824
-end
-
-def fun_l14_n641()
- fun_l15_n920
-end
-
-def fun_l14_n642()
- fun_l15_n464
-end
-
-def fun_l14_n643()
- fun_l15_n747
-end
-
-def fun_l14_n644()
- fun_l15_n378
-end
-
-def fun_l14_n645()
- fun_l15_n88
-end
-
-def fun_l14_n646()
- fun_l15_n267
-end
-
-def fun_l14_n647()
- fun_l15_n805
-end
-
-def fun_l14_n648()
- fun_l15_n793
-end
-
-def fun_l14_n649()
- fun_l15_n135
-end
-
-def fun_l14_n650()
- fun_l15_n51
-end
-
-def fun_l14_n651()
- fun_l15_n500
-end
-
-def fun_l14_n652()
- fun_l15_n726
-end
-
-def fun_l14_n653()
- fun_l15_n736
-end
-
-def fun_l14_n654()
- fun_l15_n691
-end
-
-def fun_l14_n655()
- fun_l15_n718
-end
-
-def fun_l14_n656()
- fun_l15_n456
-end
-
-def fun_l14_n657()
- fun_l15_n868
-end
-
-def fun_l14_n658()
- fun_l15_n818
-end
-
-def fun_l14_n659()
- fun_l15_n693
-end
-
-def fun_l14_n660()
- fun_l15_n117
-end
-
-def fun_l14_n661()
- fun_l15_n872
-end
-
-def fun_l14_n662()
- fun_l15_n312
-end
-
-def fun_l14_n663()
- fun_l15_n538
-end
-
-def fun_l14_n664()
- fun_l15_n449
-end
-
-def fun_l14_n665()
- fun_l15_n954
-end
-
-def fun_l14_n666()
- fun_l15_n163
-end
-
-def fun_l14_n667()
- fun_l15_n291
-end
-
-def fun_l14_n668()
- fun_l15_n17
-end
-
-def fun_l14_n669()
- fun_l15_n189
-end
-
-def fun_l14_n670()
- fun_l15_n25
-end
-
-def fun_l14_n671()
- fun_l15_n381
-end
-
-def fun_l14_n672()
- fun_l15_n66
-end
-
-def fun_l14_n673()
- fun_l15_n28
-end
-
-def fun_l14_n674()
- fun_l15_n79
-end
-
-def fun_l14_n675()
- fun_l15_n237
-end
-
-def fun_l14_n676()
- fun_l15_n301
-end
-
-def fun_l14_n677()
- fun_l15_n876
-end
-
-def fun_l14_n678()
- fun_l15_n573
-end
-
-def fun_l14_n679()
- fun_l15_n758
-end
-
-def fun_l14_n680()
- fun_l15_n152
-end
-
-def fun_l14_n681()
- fun_l15_n597
-end
-
-def fun_l14_n682()
- fun_l15_n872
-end
-
-def fun_l14_n683()
- fun_l15_n329
-end
-
-def fun_l14_n684()
- fun_l15_n537
-end
-
-def fun_l14_n685()
- fun_l15_n379
-end
-
-def fun_l14_n686()
- fun_l15_n748
-end
-
-def fun_l14_n687()
- fun_l15_n407
-end
-
-def fun_l14_n688()
- fun_l15_n762
-end
-
-def fun_l14_n689()
- fun_l15_n792
-end
-
-def fun_l14_n690()
- fun_l15_n179
-end
-
-def fun_l14_n691()
- fun_l15_n855
-end
-
-def fun_l14_n692()
- fun_l15_n635
-end
-
-def fun_l14_n693()
- fun_l15_n807
-end
-
-def fun_l14_n694()
- fun_l15_n957
-end
-
-def fun_l14_n695()
- fun_l15_n130
-end
-
-def fun_l14_n696()
- fun_l15_n183
-end
-
-def fun_l14_n697()
- fun_l15_n881
-end
-
-def fun_l14_n698()
- fun_l15_n744
-end
-
-def fun_l14_n699()
- fun_l15_n360
-end
-
-def fun_l14_n700()
- fun_l15_n661
-end
-
-def fun_l14_n701()
- fun_l15_n136
-end
-
-def fun_l14_n702()
- fun_l15_n868
-end
-
-def fun_l14_n703()
- fun_l15_n718
-end
-
-def fun_l14_n704()
- fun_l15_n253
-end
-
-def fun_l14_n705()
- fun_l15_n272
-end
-
-def fun_l14_n706()
- fun_l15_n474
-end
-
-def fun_l14_n707()
- fun_l15_n457
-end
-
-def fun_l14_n708()
- fun_l15_n836
-end
-
-def fun_l14_n709()
- fun_l15_n141
-end
-
-def fun_l14_n710()
- fun_l15_n80
-end
-
-def fun_l14_n711()
- fun_l15_n538
-end
-
-def fun_l14_n712()
- fun_l15_n68
-end
-
-def fun_l14_n713()
- fun_l15_n603
-end
-
-def fun_l14_n714()
- fun_l15_n604
-end
-
-def fun_l14_n715()
- fun_l15_n415
-end
-
-def fun_l14_n716()
- fun_l15_n269
-end
-
-def fun_l14_n717()
- fun_l15_n836
-end
-
-def fun_l14_n718()
- fun_l15_n599
-end
-
-def fun_l14_n719()
- fun_l15_n373
-end
-
-def fun_l14_n720()
- fun_l15_n256
-end
-
-def fun_l14_n721()
- fun_l15_n18
-end
-
-def fun_l14_n722()
- fun_l15_n719
-end
-
-def fun_l14_n723()
- fun_l15_n994
-end
-
-def fun_l14_n724()
- fun_l15_n361
-end
-
-def fun_l14_n725()
- fun_l15_n789
-end
-
-def fun_l14_n726()
- fun_l15_n453
-end
-
-def fun_l14_n727()
- fun_l15_n950
-end
-
-def fun_l14_n728()
- fun_l15_n410
-end
-
-def fun_l14_n729()
- fun_l15_n678
-end
-
-def fun_l14_n730()
- fun_l15_n948
-end
-
-def fun_l14_n731()
- fun_l15_n964
-end
-
-def fun_l14_n732()
- fun_l15_n199
-end
-
-def fun_l14_n733()
- fun_l15_n812
-end
-
-def fun_l14_n734()
- fun_l15_n983
-end
-
-def fun_l14_n735()
- fun_l15_n550
-end
-
-def fun_l14_n736()
- fun_l15_n776
-end
-
-def fun_l14_n737()
- fun_l15_n510
-end
-
-def fun_l14_n738()
- fun_l15_n959
-end
-
-def fun_l14_n739()
- fun_l15_n537
-end
-
-def fun_l14_n740()
- fun_l15_n717
-end
-
-def fun_l14_n741()
- fun_l15_n437
-end
-
-def fun_l14_n742()
- fun_l15_n364
-end
-
-def fun_l14_n743()
- fun_l15_n785
-end
-
-def fun_l14_n744()
- fun_l15_n658
-end
-
-def fun_l14_n745()
- fun_l15_n462
-end
-
-def fun_l14_n746()
- fun_l15_n263
-end
-
-def fun_l14_n747()
- fun_l15_n657
-end
-
-def fun_l14_n748()
- fun_l15_n395
-end
-
-def fun_l14_n749()
- fun_l15_n852
-end
-
-def fun_l14_n750()
- fun_l15_n809
-end
-
-def fun_l14_n751()
- fun_l15_n959
-end
-
-def fun_l14_n752()
- fun_l15_n547
-end
-
-def fun_l14_n753()
- fun_l15_n719
-end
-
-def fun_l14_n754()
- fun_l15_n118
-end
-
-def fun_l14_n755()
- fun_l15_n503
-end
-
-def fun_l14_n756()
- fun_l15_n112
-end
-
-def fun_l14_n757()
- fun_l15_n39
-end
-
-def fun_l14_n758()
- fun_l15_n12
-end
-
-def fun_l14_n759()
- fun_l15_n692
-end
-
-def fun_l14_n760()
- fun_l15_n276
-end
-
-def fun_l14_n761()
- fun_l15_n771
-end
-
-def fun_l14_n762()
- fun_l15_n643
-end
-
-def fun_l14_n763()
- fun_l15_n820
-end
-
-def fun_l14_n764()
- fun_l15_n956
-end
-
-def fun_l14_n765()
- fun_l15_n169
-end
-
-def fun_l14_n766()
- fun_l15_n558
-end
-
-def fun_l14_n767()
- fun_l15_n106
-end
-
-def fun_l14_n768()
- fun_l15_n813
-end
-
-def fun_l14_n769()
- fun_l15_n65
-end
-
-def fun_l14_n770()
- fun_l15_n214
-end
-
-def fun_l14_n771()
- fun_l15_n264
-end
-
-def fun_l14_n772()
- fun_l15_n687
-end
-
-def fun_l14_n773()
- fun_l15_n8
-end
-
-def fun_l14_n774()
- fun_l15_n703
-end
-
-def fun_l14_n775()
- fun_l15_n971
-end
-
-def fun_l14_n776()
- fun_l15_n144
-end
-
-def fun_l14_n777()
- fun_l15_n542
-end
-
-def fun_l14_n778()
- fun_l15_n57
-end
-
-def fun_l14_n779()
- fun_l15_n772
-end
-
-def fun_l14_n780()
- fun_l15_n347
-end
-
-def fun_l14_n781()
- fun_l15_n895
-end
-
-def fun_l14_n782()
- fun_l15_n547
-end
-
-def fun_l14_n783()
- fun_l15_n254
-end
-
-def fun_l14_n784()
- fun_l15_n358
-end
-
-def fun_l14_n785()
- fun_l15_n861
-end
-
-def fun_l14_n786()
- fun_l15_n169
-end
-
-def fun_l14_n787()
- fun_l15_n607
-end
-
-def fun_l14_n788()
- fun_l15_n909
-end
-
-def fun_l14_n789()
- fun_l15_n796
-end
-
-def fun_l14_n790()
- fun_l15_n414
-end
-
-def fun_l14_n791()
- fun_l15_n575
-end
-
-def fun_l14_n792()
- fun_l15_n115
-end
-
-def fun_l14_n793()
- fun_l15_n289
-end
-
-def fun_l14_n794()
- fun_l15_n285
-end
-
-def fun_l14_n795()
- fun_l15_n563
-end
-
-def fun_l14_n796()
- fun_l15_n78
-end
-
-def fun_l14_n797()
- fun_l15_n913
-end
-
-def fun_l14_n798()
- fun_l15_n852
-end
-
-def fun_l14_n799()
- fun_l15_n779
-end
-
-def fun_l14_n800()
- fun_l15_n301
-end
-
-def fun_l14_n801()
- fun_l15_n180
-end
-
-def fun_l14_n802()
- fun_l15_n618
-end
-
-def fun_l14_n803()
- fun_l15_n48
-end
-
-def fun_l14_n804()
- fun_l15_n839
-end
-
-def fun_l14_n805()
- fun_l15_n608
-end
-
-def fun_l14_n806()
- fun_l15_n408
-end
-
-def fun_l14_n807()
- fun_l15_n23
-end
-
-def fun_l14_n808()
- fun_l15_n723
-end
-
-def fun_l14_n809()
- fun_l15_n849
-end
-
-def fun_l14_n810()
- fun_l15_n112
-end
-
-def fun_l14_n811()
- fun_l15_n801
-end
-
-def fun_l14_n812()
- fun_l15_n905
-end
-
-def fun_l14_n813()
- fun_l15_n40
-end
-
-def fun_l14_n814()
- fun_l15_n628
-end
-
-def fun_l14_n815()
- fun_l15_n761
-end
-
-def fun_l14_n816()
- fun_l15_n631
-end
-
-def fun_l14_n817()
- fun_l15_n565
-end
-
-def fun_l14_n818()
- fun_l15_n985
-end
-
-def fun_l14_n819()
- fun_l15_n408
-end
-
-def fun_l14_n820()
- fun_l15_n173
-end
-
-def fun_l14_n821()
- fun_l15_n508
-end
-
-def fun_l14_n822()
- fun_l15_n641
-end
-
-def fun_l14_n823()
- fun_l15_n348
-end
-
-def fun_l14_n824()
- fun_l15_n988
-end
-
-def fun_l14_n825()
- fun_l15_n790
-end
-
-def fun_l14_n826()
- fun_l15_n915
-end
-
-def fun_l14_n827()
- fun_l15_n727
-end
-
-def fun_l14_n828()
- fun_l15_n613
-end
-
-def fun_l14_n829()
- fun_l15_n21
-end
-
-def fun_l14_n830()
- fun_l15_n533
-end
-
-def fun_l14_n831()
- fun_l15_n904
-end
-
-def fun_l14_n832()
- fun_l15_n586
-end
-
-def fun_l14_n833()
- fun_l15_n794
-end
-
-def fun_l14_n834()
- fun_l15_n475
-end
-
-def fun_l14_n835()
- fun_l15_n14
-end
-
-def fun_l14_n836()
- fun_l15_n69
-end
-
-def fun_l14_n837()
- fun_l15_n850
-end
-
-def fun_l14_n838()
- fun_l15_n426
-end
-
-def fun_l14_n839()
- fun_l15_n552
-end
-
-def fun_l14_n840()
- fun_l15_n968
-end
-
-def fun_l14_n841()
- fun_l15_n305
-end
-
-def fun_l14_n842()
- fun_l15_n865
-end
-
-def fun_l14_n843()
- fun_l15_n190
-end
-
-def fun_l14_n844()
- fun_l15_n610
-end
-
-def fun_l14_n845()
- fun_l15_n478
-end
-
-def fun_l14_n846()
- fun_l15_n640
-end
-
-def fun_l14_n847()
- fun_l15_n294
-end
-
-def fun_l14_n848()
- fun_l15_n493
-end
-
-def fun_l14_n849()
- fun_l15_n580
-end
-
-def fun_l14_n850()
- fun_l15_n173
-end
-
-def fun_l14_n851()
- fun_l15_n134
-end
-
-def fun_l14_n852()
- fun_l15_n352
-end
-
-def fun_l14_n853()
- fun_l15_n738
-end
-
-def fun_l14_n854()
- fun_l15_n289
-end
-
-def fun_l14_n855()
- fun_l15_n44
-end
-
-def fun_l14_n856()
- fun_l15_n200
-end
-
-def fun_l14_n857()
- fun_l15_n584
-end
-
-def fun_l14_n858()
- fun_l15_n787
-end
-
-def fun_l14_n859()
- fun_l15_n901
-end
-
-def fun_l14_n860()
- fun_l15_n103
-end
-
-def fun_l14_n861()
- fun_l15_n628
-end
-
-def fun_l14_n862()
- fun_l15_n521
-end
-
-def fun_l14_n863()
- fun_l15_n465
-end
-
-def fun_l14_n864()
- fun_l15_n649
-end
-
-def fun_l14_n865()
- fun_l15_n60
-end
-
-def fun_l14_n866()
- fun_l15_n567
-end
-
-def fun_l14_n867()
- fun_l15_n775
-end
-
-def fun_l14_n868()
- fun_l15_n333
-end
-
-def fun_l14_n869()
- fun_l15_n791
-end
-
-def fun_l14_n870()
- fun_l15_n401
-end
-
-def fun_l14_n871()
- fun_l15_n289
-end
-
-def fun_l14_n872()
- fun_l15_n376
-end
-
-def fun_l14_n873()
- fun_l15_n825
-end
-
-def fun_l14_n874()
- fun_l15_n233
-end
-
-def fun_l14_n875()
- fun_l15_n742
-end
-
-def fun_l14_n876()
- fun_l15_n308
-end
-
-def fun_l14_n877()
- fun_l15_n793
-end
-
-def fun_l14_n878()
- fun_l15_n937
-end
-
-def fun_l14_n879()
- fun_l15_n469
-end
-
-def fun_l14_n880()
- fun_l15_n129
-end
-
-def fun_l14_n881()
- fun_l15_n221
-end
-
-def fun_l14_n882()
- fun_l15_n900
-end
-
-def fun_l14_n883()
- fun_l15_n548
-end
-
-def fun_l14_n884()
- fun_l15_n782
-end
-
-def fun_l14_n885()
- fun_l15_n99
-end
-
-def fun_l14_n886()
- fun_l15_n33
-end
-
-def fun_l14_n887()
- fun_l15_n139
-end
-
-def fun_l14_n888()
- fun_l15_n832
-end
-
-def fun_l14_n889()
- fun_l15_n24
-end
-
-def fun_l14_n890()
- fun_l15_n342
-end
-
-def fun_l14_n891()
- fun_l15_n329
-end
-
-def fun_l14_n892()
- fun_l15_n706
-end
-
-def fun_l14_n893()
- fun_l15_n873
-end
-
-def fun_l14_n894()
- fun_l15_n776
-end
-
-def fun_l14_n895()
- fun_l15_n799
-end
-
-def fun_l14_n896()
- fun_l15_n560
-end
-
-def fun_l14_n897()
- fun_l15_n372
-end
-
-def fun_l14_n898()
- fun_l15_n370
-end
-
-def fun_l14_n899()
- fun_l15_n385
-end
-
-def fun_l14_n900()
- fun_l15_n648
-end
-
-def fun_l14_n901()
- fun_l15_n376
-end
-
-def fun_l14_n902()
- fun_l15_n527
-end
-
-def fun_l14_n903()
- fun_l15_n190
-end
-
-def fun_l14_n904()
- fun_l15_n633
-end
-
-def fun_l14_n905()
- fun_l15_n684
-end
-
-def fun_l14_n906()
- fun_l15_n8
-end
-
-def fun_l14_n907()
- fun_l15_n814
-end
-
-def fun_l14_n908()
- fun_l15_n50
-end
-
-def fun_l14_n909()
- fun_l15_n646
-end
-
-def fun_l14_n910()
- fun_l15_n442
-end
-
-def fun_l14_n911()
- fun_l15_n514
-end
-
-def fun_l14_n912()
- fun_l15_n137
-end
-
-def fun_l14_n913()
- fun_l15_n126
-end
-
-def fun_l14_n914()
- fun_l15_n266
-end
-
-def fun_l14_n915()
- fun_l15_n479
-end
-
-def fun_l14_n916()
- fun_l15_n985
-end
-
-def fun_l14_n917()
- fun_l15_n88
-end
-
-def fun_l14_n918()
- fun_l15_n438
-end
-
-def fun_l14_n919()
- fun_l15_n347
-end
-
-def fun_l14_n920()
- fun_l15_n215
-end
-
-def fun_l14_n921()
- fun_l15_n220
-end
-
-def fun_l14_n922()
- fun_l15_n507
-end
-
-def fun_l14_n923()
- fun_l15_n501
-end
-
-def fun_l14_n924()
- fun_l15_n955
-end
-
-def fun_l14_n925()
- fun_l15_n59
-end
-
-def fun_l14_n926()
- fun_l15_n850
-end
-
-def fun_l14_n927()
- fun_l15_n447
-end
-
-def fun_l14_n928()
- fun_l15_n298
-end
-
-def fun_l14_n929()
- fun_l15_n173
-end
-
-def fun_l14_n930()
- fun_l15_n216
-end
-
-def fun_l14_n931()
- fun_l15_n594
-end
-
-def fun_l14_n932()
- fun_l15_n662
-end
-
-def fun_l14_n933()
- fun_l15_n818
-end
-
-def fun_l14_n934()
- fun_l15_n783
-end
-
-def fun_l14_n935()
- fun_l15_n776
-end
-
-def fun_l14_n936()
- fun_l15_n570
-end
-
-def fun_l14_n937()
- fun_l15_n495
-end
-
-def fun_l14_n938()
- fun_l15_n139
-end
-
-def fun_l14_n939()
- fun_l15_n657
-end
-
-def fun_l14_n940()
- fun_l15_n773
-end
-
-def fun_l14_n941()
- fun_l15_n228
-end
-
-def fun_l14_n942()
- fun_l15_n912
-end
-
-def fun_l14_n943()
- fun_l15_n837
-end
-
-def fun_l14_n944()
- fun_l15_n925
-end
-
-def fun_l14_n945()
- fun_l15_n247
-end
-
-def fun_l14_n946()
- fun_l15_n890
-end
-
-def fun_l14_n947()
- fun_l15_n12
-end
-
-def fun_l14_n948()
- fun_l15_n196
-end
-
-def fun_l14_n949()
- fun_l15_n887
-end
-
-def fun_l14_n950()
- fun_l15_n0
-end
-
-def fun_l14_n951()
- fun_l15_n475
-end
-
-def fun_l14_n952()
- fun_l15_n548
-end
-
-def fun_l14_n953()
- fun_l15_n184
-end
-
-def fun_l14_n954()
- fun_l15_n89
-end
-
-def fun_l14_n955()
- fun_l15_n604
-end
-
-def fun_l14_n956()
- fun_l15_n375
-end
-
-def fun_l14_n957()
- fun_l15_n222
-end
-
-def fun_l14_n958()
- fun_l15_n629
-end
-
-def fun_l14_n959()
- fun_l15_n371
-end
-
-def fun_l14_n960()
- fun_l15_n233
-end
-
-def fun_l14_n961()
- fun_l15_n268
-end
-
-def fun_l14_n962()
- fun_l15_n43
-end
-
-def fun_l14_n963()
- fun_l15_n824
-end
-
-def fun_l14_n964()
- fun_l15_n574
-end
-
-def fun_l14_n965()
- fun_l15_n617
-end
-
-def fun_l14_n966()
- fun_l15_n959
-end
-
-def fun_l14_n967()
- fun_l15_n757
-end
-
-def fun_l14_n968()
- fun_l15_n76
-end
-
-def fun_l14_n969()
- fun_l15_n312
-end
-
-def fun_l14_n970()
- fun_l15_n895
-end
-
-def fun_l14_n971()
- fun_l15_n356
-end
-
-def fun_l14_n972()
- fun_l15_n938
-end
-
-def fun_l14_n973()
- fun_l15_n233
-end
-
-def fun_l14_n974()
- fun_l15_n723
-end
-
-def fun_l14_n975()
- fun_l15_n102
-end
-
-def fun_l14_n976()
- fun_l15_n8
-end
-
-def fun_l14_n977()
- fun_l15_n840
-end
-
-def fun_l14_n978()
- fun_l15_n539
-end
-
-def fun_l14_n979()
- fun_l15_n936
-end
-
-def fun_l14_n980()
- fun_l15_n7
-end
-
-def fun_l14_n981()
- fun_l15_n259
-end
-
-def fun_l14_n982()
- fun_l15_n680
-end
-
-def fun_l14_n983()
- fun_l15_n16
-end
-
-def fun_l14_n984()
- fun_l15_n278
-end
-
-def fun_l14_n985()
- fun_l15_n951
-end
-
-def fun_l14_n986()
- fun_l15_n940
-end
-
-def fun_l14_n987()
- fun_l15_n463
-end
-
-def fun_l14_n988()
- fun_l15_n54
-end
-
-def fun_l14_n989()
- fun_l15_n117
-end
-
-def fun_l14_n990()
- fun_l15_n342
-end
-
-def fun_l14_n991()
- fun_l15_n345
-end
-
-def fun_l14_n992()
- fun_l15_n135
-end
-
-def fun_l14_n993()
- fun_l15_n397
-end
-
-def fun_l14_n994()
- fun_l15_n406
-end
-
-def fun_l14_n995()
- fun_l15_n687
-end
-
-def fun_l14_n996()
- fun_l15_n506
-end
-
-def fun_l14_n997()
- fun_l15_n406
-end
-
-def fun_l14_n998()
- fun_l15_n305
-end
-
-def fun_l14_n999()
- fun_l15_n619
-end
-
-def fun_l15_n0()
- fun_l16_n214
-end
-
-def fun_l15_n1()
- fun_l16_n640
-end
-
-def fun_l15_n2()
- fun_l16_n129
-end
-
-def fun_l15_n3()
- fun_l16_n883
-end
-
-def fun_l15_n4()
- fun_l16_n253
-end
-
-def fun_l15_n5()
- fun_l16_n426
-end
-
-def fun_l15_n6()
- fun_l16_n969
-end
-
-def fun_l15_n7()
- fun_l16_n728
-end
-
-def fun_l15_n8()
- fun_l16_n30
-end
-
-def fun_l15_n9()
- fun_l16_n337
-end
-
-def fun_l15_n10()
- fun_l16_n601
-end
-
-def fun_l15_n11()
- fun_l16_n736
-end
-
-def fun_l15_n12()
- fun_l16_n905
-end
-
-def fun_l15_n13()
- fun_l16_n303
-end
-
-def fun_l15_n14()
- fun_l16_n778
-end
-
-def fun_l15_n15()
- fun_l16_n92
-end
-
-def fun_l15_n16()
- fun_l16_n184
-end
-
-def fun_l15_n17()
- fun_l16_n196
-end
-
-def fun_l15_n18()
- fun_l16_n68
-end
-
-def fun_l15_n19()
- fun_l16_n941
-end
-
-def fun_l15_n20()
- fun_l16_n374
-end
-
-def fun_l15_n21()
- fun_l16_n680
-end
-
-def fun_l15_n22()
- fun_l16_n424
-end
-
-def fun_l15_n23()
- fun_l16_n701
-end
-
-def fun_l15_n24()
- fun_l16_n211
-end
-
-def fun_l15_n25()
- fun_l16_n944
-end
-
-def fun_l15_n26()
- fun_l16_n112
-end
-
-def fun_l15_n27()
- fun_l16_n219
-end
-
-def fun_l15_n28()
- fun_l16_n917
-end
-
-def fun_l15_n29()
- fun_l16_n1
-end
-
-def fun_l15_n30()
- fun_l16_n178
-end
-
-def fun_l15_n31()
- fun_l16_n978
-end
-
-def fun_l15_n32()
- fun_l16_n852
-end
-
-def fun_l15_n33()
- fun_l16_n633
-end
-
-def fun_l15_n34()
- fun_l16_n373
-end
-
-def fun_l15_n35()
- fun_l16_n766
-end
-
-def fun_l15_n36()
- fun_l16_n324
-end
-
-def fun_l15_n37()
- fun_l16_n600
-end
-
-def fun_l15_n38()
- fun_l16_n835
-end
-
-def fun_l15_n39()
- fun_l16_n518
-end
-
-def fun_l15_n40()
- fun_l16_n916
-end
-
-def fun_l15_n41()
- fun_l16_n557
-end
-
-def fun_l15_n42()
- fun_l16_n401
-end
-
-def fun_l15_n43()
- fun_l16_n162
-end
-
-def fun_l15_n44()
- fun_l16_n593
-end
-
-def fun_l15_n45()
- fun_l16_n615
-end
-
-def fun_l15_n46()
- fun_l16_n174
-end
-
-def fun_l15_n47()
- fun_l16_n651
-end
-
-def fun_l15_n48()
- fun_l16_n168
-end
-
-def fun_l15_n49()
- fun_l16_n139
-end
-
-def fun_l15_n50()
- fun_l16_n791
-end
-
-def fun_l15_n51()
- fun_l16_n1
-end
-
-def fun_l15_n52()
- fun_l16_n220
-end
-
-def fun_l15_n53()
- fun_l16_n375
-end
-
-def fun_l15_n54()
- fun_l16_n530
-end
-
-def fun_l15_n55()
- fun_l16_n27
-end
-
-def fun_l15_n56()
- fun_l16_n400
-end
-
-def fun_l15_n57()
- fun_l16_n489
-end
-
-def fun_l15_n58()
- fun_l16_n716
-end
-
-def fun_l15_n59()
- fun_l16_n956
-end
-
-def fun_l15_n60()
- fun_l16_n147
-end
-
-def fun_l15_n61()
- fun_l16_n901
-end
-
-def fun_l15_n62()
- fun_l16_n430
-end
-
-def fun_l15_n63()
- fun_l16_n161
-end
-
-def fun_l15_n64()
- fun_l16_n823
-end
-
-def fun_l15_n65()
- fun_l16_n20
-end
-
-def fun_l15_n66()
- fun_l16_n767
-end
-
-def fun_l15_n67()
- fun_l16_n643
-end
-
-def fun_l15_n68()
- fun_l16_n152
-end
-
-def fun_l15_n69()
- fun_l16_n54
-end
-
-def fun_l15_n70()
- fun_l16_n691
-end
-
-def fun_l15_n71()
- fun_l16_n349
-end
-
-def fun_l15_n72()
- fun_l16_n9
-end
-
-def fun_l15_n73()
- fun_l16_n410
-end
-
-def fun_l15_n74()
- fun_l16_n173
-end
-
-def fun_l15_n75()
- fun_l16_n187
-end
-
-def fun_l15_n76()
- fun_l16_n224
-end
-
-def fun_l15_n77()
- fun_l16_n482
-end
-
-def fun_l15_n78()
- fun_l16_n230
-end
-
-def fun_l15_n79()
- fun_l16_n599
-end
-
-def fun_l15_n80()
- fun_l16_n76
-end
-
-def fun_l15_n81()
- fun_l16_n343
-end
-
-def fun_l15_n82()
- fun_l16_n734
-end
-
-def fun_l15_n83()
- fun_l16_n41
-end
-
-def fun_l15_n84()
- fun_l16_n338
-end
-
-def fun_l15_n85()
- fun_l16_n593
-end
-
-def fun_l15_n86()
- fun_l16_n596
-end
-
-def fun_l15_n87()
- fun_l16_n610
-end
-
-def fun_l15_n88()
- fun_l16_n760
-end
-
-def fun_l15_n89()
- fun_l16_n766
-end
-
-def fun_l15_n90()
- fun_l16_n946
-end
-
-def fun_l15_n91()
- fun_l16_n205
-end
-
-def fun_l15_n92()
- fun_l16_n434
-end
-
-def fun_l15_n93()
- fun_l16_n507
-end
-
-def fun_l15_n94()
- fun_l16_n995
-end
-
-def fun_l15_n95()
- fun_l16_n744
-end
-
-def fun_l15_n96()
- fun_l16_n706
-end
-
-def fun_l15_n97()
- fun_l16_n270
-end
-
-def fun_l15_n98()
- fun_l16_n874
-end
-
-def fun_l15_n99()
- fun_l16_n18
-end
-
-def fun_l15_n100()
- fun_l16_n685
-end
-
-def fun_l15_n101()
- fun_l16_n344
-end
-
-def fun_l15_n102()
- fun_l16_n265
-end
-
-def fun_l15_n103()
- fun_l16_n44
-end
-
-def fun_l15_n104()
- fun_l16_n730
-end
-
-def fun_l15_n105()
- fun_l16_n314
-end
-
-def fun_l15_n106()
- fun_l16_n878
-end
-
-def fun_l15_n107()
- fun_l16_n877
-end
-
-def fun_l15_n108()
- fun_l16_n237
-end
-
-def fun_l15_n109()
- fun_l16_n666
-end
-
-def fun_l15_n110()
- fun_l16_n469
-end
-
-def fun_l15_n111()
- fun_l16_n925
-end
-
-def fun_l15_n112()
- fun_l16_n630
-end
-
-def fun_l15_n113()
- fun_l16_n517
-end
-
-def fun_l15_n114()
- fun_l16_n550
-end
-
-def fun_l15_n115()
- fun_l16_n384
-end
-
-def fun_l15_n116()
- fun_l16_n976
-end
-
-def fun_l15_n117()
- fun_l16_n702
-end
-
-def fun_l15_n118()
- fun_l16_n677
-end
-
-def fun_l15_n119()
- fun_l16_n737
-end
-
-def fun_l15_n120()
- fun_l16_n380
-end
-
-def fun_l15_n121()
- fun_l16_n635
-end
-
-def fun_l15_n122()
- fun_l16_n112
-end
-
-def fun_l15_n123()
- fun_l16_n779
-end
-
-def fun_l15_n124()
- fun_l16_n853
-end
-
-def fun_l15_n125()
- fun_l16_n697
-end
-
-def fun_l15_n126()
- fun_l16_n289
-end
-
-def fun_l15_n127()
- fun_l16_n701
-end
-
-def fun_l15_n128()
- fun_l16_n867
-end
-
-def fun_l15_n129()
- fun_l16_n537
-end
-
-def fun_l15_n130()
- fun_l16_n735
-end
-
-def fun_l15_n131()
- fun_l16_n285
-end
-
-def fun_l15_n132()
- fun_l16_n196
-end
-
-def fun_l15_n133()
- fun_l16_n137
-end
-
-def fun_l15_n134()
- fun_l16_n937
-end
-
-def fun_l15_n135()
- fun_l16_n285
-end
-
-def fun_l15_n136()
- fun_l16_n566
-end
-
-def fun_l15_n137()
- fun_l16_n163
-end
-
-def fun_l15_n138()
- fun_l16_n223
-end
-
-def fun_l15_n139()
- fun_l16_n373
-end
-
-def fun_l15_n140()
- fun_l16_n16
-end
-
-def fun_l15_n141()
- fun_l16_n539
-end
-
-def fun_l15_n142()
- fun_l16_n696
-end
-
-def fun_l15_n143()
- fun_l16_n735
-end
-
-def fun_l15_n144()
- fun_l16_n81
-end
-
-def fun_l15_n145()
- fun_l16_n102
-end
-
-def fun_l15_n146()
- fun_l16_n658
-end
-
-def fun_l15_n147()
- fun_l16_n858
-end
-
-def fun_l15_n148()
- fun_l16_n398
-end
-
-def fun_l15_n149()
- fun_l16_n122
-end
-
-def fun_l15_n150()
- fun_l16_n712
-end
-
-def fun_l15_n151()
- fun_l16_n888
-end
-
-def fun_l15_n152()
- fun_l16_n537
-end
-
-def fun_l15_n153()
- fun_l16_n190
-end
-
-def fun_l15_n154()
- fun_l16_n164
-end
-
-def fun_l15_n155()
- fun_l16_n351
-end
-
-def fun_l15_n156()
- fun_l16_n641
-end
-
-def fun_l15_n157()
- fun_l16_n300
-end
-
-def fun_l15_n158()
- fun_l16_n177
-end
-
-def fun_l15_n159()
- fun_l16_n634
-end
-
-def fun_l15_n160()
- fun_l16_n475
-end
-
-def fun_l15_n161()
- fun_l16_n843
-end
-
-def fun_l15_n162()
- fun_l16_n262
-end
-
-def fun_l15_n163()
- fun_l16_n471
-end
-
-def fun_l15_n164()
- fun_l16_n229
-end
-
-def fun_l15_n165()
- fun_l16_n374
-end
-
-def fun_l15_n166()
- fun_l16_n920
-end
-
-def fun_l15_n167()
- fun_l16_n194
-end
-
-def fun_l15_n168()
- fun_l16_n369
-end
-
-def fun_l15_n169()
- fun_l16_n41
-end
-
-def fun_l15_n170()
- fun_l16_n339
-end
-
-def fun_l15_n171()
- fun_l16_n152
-end
-
-def fun_l15_n172()
- fun_l16_n337
-end
-
-def fun_l15_n173()
- fun_l16_n906
-end
-
-def fun_l15_n174()
- fun_l16_n13
-end
-
-def fun_l15_n175()
- fun_l16_n343
-end
-
-def fun_l15_n176()
- fun_l16_n116
-end
-
-def fun_l15_n177()
- fun_l16_n722
-end
-
-def fun_l15_n178()
- fun_l16_n62
-end
-
-def fun_l15_n179()
- fun_l16_n12
-end
-
-def fun_l15_n180()
- fun_l16_n177
-end
-
-def fun_l15_n181()
- fun_l16_n632
-end
-
-def fun_l15_n182()
- fun_l16_n990
-end
-
-def fun_l15_n183()
- fun_l16_n749
-end
-
-def fun_l15_n184()
- fun_l16_n368
-end
-
-def fun_l15_n185()
- fun_l16_n881
-end
-
-def fun_l15_n186()
- fun_l16_n760
-end
-
-def fun_l15_n187()
- fun_l16_n740
-end
-
-def fun_l15_n188()
- fun_l16_n379
-end
-
-def fun_l15_n189()
- fun_l16_n194
-end
-
-def fun_l15_n190()
- fun_l16_n282
-end
-
-def fun_l15_n191()
- fun_l16_n520
-end
-
-def fun_l15_n192()
- fun_l16_n113
-end
-
-def fun_l15_n193()
- fun_l16_n470
-end
-
-def fun_l15_n194()
- fun_l16_n303
-end
-
-def fun_l15_n195()
- fun_l16_n712
-end
-
-def fun_l15_n196()
- fun_l16_n215
-end
-
-def fun_l15_n197()
- fun_l16_n121
-end
-
-def fun_l15_n198()
- fun_l16_n281
-end
-
-def fun_l15_n199()
- fun_l16_n702
-end
-
-def fun_l15_n200()
- fun_l16_n727
-end
-
-def fun_l15_n201()
- fun_l16_n856
-end
-
-def fun_l15_n202()
- fun_l16_n368
-end
-
-def fun_l15_n203()
- fun_l16_n252
-end
-
-def fun_l15_n204()
- fun_l16_n86
-end
-
-def fun_l15_n205()
- fun_l16_n323
-end
-
-def fun_l15_n206()
- fun_l16_n749
-end
-
-def fun_l15_n207()
- fun_l16_n728
-end
-
-def fun_l15_n208()
- fun_l16_n195
-end
-
-def fun_l15_n209()
- fun_l16_n141
-end
-
-def fun_l15_n210()
- fun_l16_n685
-end
-
-def fun_l15_n211()
- fun_l16_n855
-end
-
-def fun_l15_n212()
- fun_l16_n401
-end
-
-def fun_l15_n213()
- fun_l16_n415
-end
-
-def fun_l15_n214()
- fun_l16_n349
-end
-
-def fun_l15_n215()
- fun_l16_n45
-end
-
-def fun_l15_n216()
- fun_l16_n534
-end
-
-def fun_l15_n217()
- fun_l16_n705
-end
-
-def fun_l15_n218()
- fun_l16_n97
-end
-
-def fun_l15_n219()
- fun_l16_n828
-end
-
-def fun_l15_n220()
- fun_l16_n698
-end
-
-def fun_l15_n221()
- fun_l16_n505
-end
-
-def fun_l15_n222()
- fun_l16_n100
-end
-
-def fun_l15_n223()
- fun_l16_n710
-end
-
-def fun_l15_n224()
- fun_l16_n883
-end
-
-def fun_l15_n225()
- fun_l16_n503
-end
-
-def fun_l15_n226()
- fun_l16_n583
-end
-
-def fun_l15_n227()
- fun_l16_n269
-end
-
-def fun_l15_n228()
- fun_l16_n570
-end
-
-def fun_l15_n229()
- fun_l16_n877
-end
-
-def fun_l15_n230()
- fun_l16_n906
-end
-
-def fun_l15_n231()
- fun_l16_n123
-end
-
-def fun_l15_n232()
- fun_l16_n626
-end
-
-def fun_l15_n233()
- fun_l16_n911
-end
-
-def fun_l15_n234()
- fun_l16_n741
-end
-
-def fun_l15_n235()
- fun_l16_n255
-end
-
-def fun_l15_n236()
- fun_l16_n499
-end
-
-def fun_l15_n237()
- fun_l16_n998
-end
-
-def fun_l15_n238()
- fun_l16_n156
-end
-
-def fun_l15_n239()
- fun_l16_n677
-end
-
-def fun_l15_n240()
- fun_l16_n551
-end
-
-def fun_l15_n241()
- fun_l16_n906
-end
-
-def fun_l15_n242()
- fun_l16_n146
-end
-
-def fun_l15_n243()
- fun_l16_n372
-end
-
-def fun_l15_n244()
- fun_l16_n867
-end
-
-def fun_l15_n245()
- fun_l16_n232
-end
-
-def fun_l15_n246()
- fun_l16_n952
-end
-
-def fun_l15_n247()
- fun_l16_n256
-end
-
-def fun_l15_n248()
- fun_l16_n263
-end
-
-def fun_l15_n249()
- fun_l16_n642
-end
-
-def fun_l15_n250()
- fun_l16_n165
-end
-
-def fun_l15_n251()
- fun_l16_n147
-end
-
-def fun_l15_n252()
- fun_l16_n182
-end
-
-def fun_l15_n253()
- fun_l16_n346
-end
-
-def fun_l15_n254()
- fun_l16_n263
-end
-
-def fun_l15_n255()
- fun_l16_n512
-end
-
-def fun_l15_n256()
- fun_l16_n504
-end
-
-def fun_l15_n257()
- fun_l16_n671
-end
-
-def fun_l15_n258()
- fun_l16_n219
-end
-
-def fun_l15_n259()
- fun_l16_n878
-end
-
-def fun_l15_n260()
- fun_l16_n754
-end
-
-def fun_l15_n261()
- fun_l16_n976
-end
-
-def fun_l15_n262()
- fun_l16_n756
-end
-
-def fun_l15_n263()
- fun_l16_n840
-end
-
-def fun_l15_n264()
- fun_l16_n320
-end
-
-def fun_l15_n265()
- fun_l16_n447
-end
-
-def fun_l15_n266()
- fun_l16_n179
-end
-
-def fun_l15_n267()
- fun_l16_n669
-end
-
-def fun_l15_n268()
- fun_l16_n279
-end
-
-def fun_l15_n269()
- fun_l16_n919
-end
-
-def fun_l15_n270()
- fun_l16_n55
-end
-
-def fun_l15_n271()
- fun_l16_n713
-end
-
-def fun_l15_n272()
- fun_l16_n140
-end
-
-def fun_l15_n273()
- fun_l16_n738
-end
-
-def fun_l15_n274()
- fun_l16_n534
-end
-
-def fun_l15_n275()
- fun_l16_n739
-end
-
-def fun_l15_n276()
- fun_l16_n733
-end
-
-def fun_l15_n277()
- fun_l16_n792
-end
-
-def fun_l15_n278()
- fun_l16_n719
-end
-
-def fun_l15_n279()
- fun_l16_n946
-end
-
-def fun_l15_n280()
- fun_l16_n942
-end
-
-def fun_l15_n281()
- fun_l16_n547
-end
-
-def fun_l15_n282()
- fun_l16_n961
-end
-
-def fun_l15_n283()
- fun_l16_n382
-end
-
-def fun_l15_n284()
- fun_l16_n642
-end
-
-def fun_l15_n285()
- fun_l16_n761
-end
-
-def fun_l15_n286()
- fun_l16_n999
-end
-
-def fun_l15_n287()
- fun_l16_n827
-end
-
-def fun_l15_n288()
- fun_l16_n364
-end
-
-def fun_l15_n289()
- fun_l16_n588
-end
-
-def fun_l15_n290()
- fun_l16_n3
-end
-
-def fun_l15_n291()
- fun_l16_n741
-end
-
-def fun_l15_n292()
- fun_l16_n839
-end
-
-def fun_l15_n293()
- fun_l16_n889
-end
-
-def fun_l15_n294()
- fun_l16_n106
-end
-
-def fun_l15_n295()
- fun_l16_n616
-end
-
-def fun_l15_n296()
- fun_l16_n124
-end
-
-def fun_l15_n297()
- fun_l16_n691
-end
-
-def fun_l15_n298()
- fun_l16_n135
-end
-
-def fun_l15_n299()
- fun_l16_n654
-end
-
-def fun_l15_n300()
- fun_l16_n706
-end
-
-def fun_l15_n301()
- fun_l16_n957
-end
-
-def fun_l15_n302()
- fun_l16_n213
-end
-
-def fun_l15_n303()
- fun_l16_n340
-end
-
-def fun_l15_n304()
- fun_l16_n126
-end
-
-def fun_l15_n305()
- fun_l16_n807
-end
-
-def fun_l15_n306()
- fun_l16_n901
-end
-
-def fun_l15_n307()
- fun_l16_n371
-end
-
-def fun_l15_n308()
- fun_l16_n904
-end
-
-def fun_l15_n309()
- fun_l16_n475
-end
-
-def fun_l15_n310()
- fun_l16_n863
-end
-
-def fun_l15_n311()
- fun_l16_n37
-end
-
-def fun_l15_n312()
- fun_l16_n315
-end
-
-def fun_l15_n313()
- fun_l16_n527
-end
-
-def fun_l15_n314()
- fun_l16_n549
-end
-
-def fun_l15_n315()
- fun_l16_n351
-end
-
-def fun_l15_n316()
- fun_l16_n193
-end
-
-def fun_l15_n317()
- fun_l16_n395
-end
-
-def fun_l15_n318()
- fun_l16_n373
-end
-
-def fun_l15_n319()
- fun_l16_n142
-end
-
-def fun_l15_n320()
- fun_l16_n250
-end
-
-def fun_l15_n321()
- fun_l16_n544
-end
-
-def fun_l15_n322()
- fun_l16_n446
-end
-
-def fun_l15_n323()
- fun_l16_n375
-end
-
-def fun_l15_n324()
- fun_l16_n832
-end
-
-def fun_l15_n325()
- fun_l16_n987
-end
-
-def fun_l15_n326()
- fun_l16_n539
-end
-
-def fun_l15_n327()
- fun_l16_n293
-end
-
-def fun_l15_n328()
- fun_l16_n128
-end
-
-def fun_l15_n329()
- fun_l16_n228
-end
-
-def fun_l15_n330()
- fun_l16_n952
-end
-
-def fun_l15_n331()
- fun_l16_n116
-end
-
-def fun_l15_n332()
- fun_l16_n823
-end
-
-def fun_l15_n333()
- fun_l16_n933
-end
-
-def fun_l15_n334()
- fun_l16_n252
-end
-
-def fun_l15_n335()
- fun_l16_n140
-end
-
-def fun_l15_n336()
- fun_l16_n245
-end
-
-def fun_l15_n337()
- fun_l16_n822
-end
-
-def fun_l15_n338()
- fun_l16_n389
-end
-
-def fun_l15_n339()
- fun_l16_n824
-end
-
-def fun_l15_n340()
- fun_l16_n507
-end
-
-def fun_l15_n341()
- fun_l16_n153
-end
-
-def fun_l15_n342()
- fun_l16_n661
-end
-
-def fun_l15_n343()
- fun_l16_n633
-end
-
-def fun_l15_n344()
- fun_l16_n478
-end
-
-def fun_l15_n345()
- fun_l16_n423
-end
-
-def fun_l15_n346()
- fun_l16_n425
-end
-
-def fun_l15_n347()
- fun_l16_n168
-end
-
-def fun_l15_n348()
- fun_l16_n426
-end
-
-def fun_l15_n349()
- fun_l16_n85
-end
-
-def fun_l15_n350()
- fun_l16_n35
-end
-
-def fun_l15_n351()
- fun_l16_n796
-end
-
-def fun_l15_n352()
- fun_l16_n295
-end
-
-def fun_l15_n353()
- fun_l16_n564
-end
-
-def fun_l15_n354()
- fun_l16_n273
-end
-
-def fun_l15_n355()
- fun_l16_n821
-end
-
-def fun_l15_n356()
- fun_l16_n504
-end
-
-def fun_l15_n357()
- fun_l16_n911
-end
-
-def fun_l15_n358()
- fun_l16_n277
-end
-
-def fun_l15_n359()
- fun_l16_n749
-end
-
-def fun_l15_n360()
- fun_l16_n886
-end
-
-def fun_l15_n361()
- fun_l16_n165
-end
-
-def fun_l15_n362()
- fun_l16_n353
-end
-
-def fun_l15_n363()
- fun_l16_n309
-end
-
-def fun_l15_n364()
- fun_l16_n853
-end
-
-def fun_l15_n365()
- fun_l16_n981
-end
-
-def fun_l15_n366()
- fun_l16_n429
-end
-
-def fun_l15_n367()
- fun_l16_n114
-end
-
-def fun_l15_n368()
- fun_l16_n649
-end
-
-def fun_l15_n369()
- fun_l16_n966
-end
-
-def fun_l15_n370()
- fun_l16_n356
-end
-
-def fun_l15_n371()
- fun_l16_n364
-end
-
-def fun_l15_n372()
- fun_l16_n12
-end
-
-def fun_l15_n373()
- fun_l16_n969
-end
-
-def fun_l15_n374()
- fun_l16_n705
-end
-
-def fun_l15_n375()
- fun_l16_n194
-end
-
-def fun_l15_n376()
- fun_l16_n487
-end
-
-def fun_l15_n377()
- fun_l16_n148
-end
-
-def fun_l15_n378()
- fun_l16_n419
-end
-
-def fun_l15_n379()
- fun_l16_n686
-end
-
-def fun_l15_n380()
- fun_l16_n552
-end
-
-def fun_l15_n381()
- fun_l16_n630
-end
-
-def fun_l15_n382()
- fun_l16_n509
-end
-
-def fun_l15_n383()
- fun_l16_n251
-end
-
-def fun_l15_n384()
- fun_l16_n506
-end
-
-def fun_l15_n385()
- fun_l16_n317
-end
-
-def fun_l15_n386()
- fun_l16_n881
-end
-
-def fun_l15_n387()
- fun_l16_n12
-end
-
-def fun_l15_n388()
- fun_l16_n686
-end
-
-def fun_l15_n389()
- fun_l16_n277
-end
-
-def fun_l15_n390()
- fun_l16_n174
-end
-
-def fun_l15_n391()
- fun_l16_n799
-end
-
-def fun_l15_n392()
- fun_l16_n682
-end
-
-def fun_l15_n393()
- fun_l16_n102
-end
-
-def fun_l15_n394()
- fun_l16_n127
-end
-
-def fun_l15_n395()
- fun_l16_n110
-end
-
-def fun_l15_n396()
- fun_l16_n331
-end
-
-def fun_l15_n397()
- fun_l16_n165
-end
-
-def fun_l15_n398()
- fun_l16_n360
-end
-
-def fun_l15_n399()
- fun_l16_n622
-end
-
-def fun_l15_n400()
- fun_l16_n928
-end
-
-def fun_l15_n401()
- fun_l16_n324
-end
-
-def fun_l15_n402()
- fun_l16_n712
-end
-
-def fun_l15_n403()
- fun_l16_n250
-end
-
-def fun_l15_n404()
- fun_l16_n289
-end
-
-def fun_l15_n405()
- fun_l16_n520
-end
-
-def fun_l15_n406()
- fun_l16_n445
-end
-
-def fun_l15_n407()
- fun_l16_n328
-end
-
-def fun_l15_n408()
- fun_l16_n496
-end
-
-def fun_l15_n409()
- fun_l16_n614
-end
-
-def fun_l15_n410()
- fun_l16_n428
-end
-
-def fun_l15_n411()
- fun_l16_n226
-end
-
-def fun_l15_n412()
- fun_l16_n450
-end
-
-def fun_l15_n413()
- fun_l16_n410
-end
-
-def fun_l15_n414()
- fun_l16_n926
-end
-
-def fun_l15_n415()
- fun_l16_n353
-end
-
-def fun_l15_n416()
- fun_l16_n822
-end
-
-def fun_l15_n417()
- fun_l16_n800
-end
-
-def fun_l15_n418()
- fun_l16_n577
-end
-
-def fun_l15_n419()
- fun_l16_n483
-end
-
-def fun_l15_n420()
- fun_l16_n744
-end
-
-def fun_l15_n421()
- fun_l16_n314
-end
-
-def fun_l15_n422()
- fun_l16_n206
-end
-
-def fun_l15_n423()
- fun_l16_n359
-end
-
-def fun_l15_n424()
- fun_l16_n371
-end
-
-def fun_l15_n425()
- fun_l16_n817
-end
-
-def fun_l15_n426()
- fun_l16_n471
-end
-
-def fun_l15_n427()
- fun_l16_n681
-end
-
-def fun_l15_n428()
- fun_l16_n598
-end
-
-def fun_l15_n429()
- fun_l16_n532
-end
-
-def fun_l15_n430()
- fun_l16_n173
-end
-
-def fun_l15_n431()
- fun_l16_n670
-end
-
-def fun_l15_n432()
- fun_l16_n310
-end
-
-def fun_l15_n433()
- fun_l16_n376
-end
-
-def fun_l15_n434()
- fun_l16_n142
-end
-
-def fun_l15_n435()
- fun_l16_n591
-end
-
-def fun_l15_n436()
- fun_l16_n313
-end
-
-def fun_l15_n437()
- fun_l16_n724
-end
-
-def fun_l15_n438()
- fun_l16_n313
-end
-
-def fun_l15_n439()
- fun_l16_n238
-end
-
-def fun_l15_n440()
- fun_l16_n840
-end
-
-def fun_l15_n441()
- fun_l16_n235
-end
-
-def fun_l15_n442()
- fun_l16_n720
-end
-
-def fun_l15_n443()
- fun_l16_n427
-end
-
-def fun_l15_n444()
- fun_l16_n269
-end
-
-def fun_l15_n445()
- fun_l16_n557
-end
-
-def fun_l15_n446()
- fun_l16_n97
-end
-
-def fun_l15_n447()
- fun_l16_n655
-end
-
-def fun_l15_n448()
- fun_l16_n723
-end
-
-def fun_l15_n449()
- fun_l16_n634
-end
-
-def fun_l15_n450()
- fun_l16_n208
-end
-
-def fun_l15_n451()
- fun_l16_n130
-end
-
-def fun_l15_n452()
- fun_l16_n472
-end
-
-def fun_l15_n453()
- fun_l16_n172
-end
-
-def fun_l15_n454()
- fun_l16_n323
-end
-
-def fun_l15_n455()
- fun_l16_n643
-end
-
-def fun_l15_n456()
- fun_l16_n20
-end
-
-def fun_l15_n457()
- fun_l16_n721
-end
-
-def fun_l15_n458()
- fun_l16_n928
-end
-
-def fun_l15_n459()
- fun_l16_n312
-end
-
-def fun_l15_n460()
- fun_l16_n767
-end
-
-def fun_l15_n461()
- fun_l16_n191
-end
-
-def fun_l15_n462()
- fun_l16_n88
-end
-
-def fun_l15_n463()
- fun_l16_n782
-end
-
-def fun_l15_n464()
- fun_l16_n448
-end
-
-def fun_l15_n465()
- fun_l16_n595
-end
-
-def fun_l15_n466()
- fun_l16_n545
-end
-
-def fun_l15_n467()
- fun_l16_n98
-end
-
-def fun_l15_n468()
- fun_l16_n523
-end
-
-def fun_l15_n469()
- fun_l16_n548
-end
-
-def fun_l15_n470()
- fun_l16_n799
-end
-
-def fun_l15_n471()
- fun_l16_n727
-end
-
-def fun_l15_n472()
- fun_l16_n342
-end
-
-def fun_l15_n473()
- fun_l16_n30
-end
-
-def fun_l15_n474()
- fun_l16_n461
-end
-
-def fun_l15_n475()
- fun_l16_n249
-end
-
-def fun_l15_n476()
- fun_l16_n466
-end
-
-def fun_l15_n477()
- fun_l16_n28
-end
-
-def fun_l15_n478()
- fun_l16_n845
-end
-
-def fun_l15_n479()
- fun_l16_n53
-end
-
-def fun_l15_n480()
- fun_l16_n122
-end
-
-def fun_l15_n481()
- fun_l16_n264
-end
-
-def fun_l15_n482()
- fun_l16_n802
-end
-
-def fun_l15_n483()
- fun_l16_n688
-end
-
-def fun_l15_n484()
- fun_l16_n656
-end
-
-def fun_l15_n485()
- fun_l16_n17
-end
-
-def fun_l15_n486()
- fun_l16_n956
-end
-
-def fun_l15_n487()
- fun_l16_n649
-end
-
-def fun_l15_n488()
- fun_l16_n948
-end
-
-def fun_l15_n489()
- fun_l16_n85
-end
-
-def fun_l15_n490()
- fun_l16_n411
-end
-
-def fun_l15_n491()
- fun_l16_n572
-end
-
-def fun_l15_n492()
- fun_l16_n698
-end
-
-def fun_l15_n493()
- fun_l16_n767
-end
-
-def fun_l15_n494()
- fun_l16_n513
-end
-
-def fun_l15_n495()
- fun_l16_n983
-end
-
-def fun_l15_n496()
- fun_l16_n763
-end
-
-def fun_l15_n497()
- fun_l16_n207
-end
-
-def fun_l15_n498()
- fun_l16_n154
-end
-
-def fun_l15_n499()
- fun_l16_n152
-end
-
-def fun_l15_n500()
- fun_l16_n929
-end
-
-def fun_l15_n501()
- fun_l16_n573
-end
-
-def fun_l15_n502()
- fun_l16_n97
-end
-
-def fun_l15_n503()
- fun_l16_n696
-end
-
-def fun_l15_n504()
- fun_l16_n877
-end
-
-def fun_l15_n505()
- fun_l16_n401
-end
-
-def fun_l15_n506()
- fun_l16_n509
-end
-
-def fun_l15_n507()
- fun_l16_n933
-end
-
-def fun_l15_n508()
- fun_l16_n946
-end
-
-def fun_l15_n509()
- fun_l16_n290
-end
-
-def fun_l15_n510()
- fun_l16_n630
-end
-
-def fun_l15_n511()
- fun_l16_n279
-end
-
-def fun_l15_n512()
- fun_l16_n833
-end
-
-def fun_l15_n513()
- fun_l16_n984
-end
-
-def fun_l15_n514()
- fun_l16_n82
-end
-
-def fun_l15_n515()
- fun_l16_n372
-end
-
-def fun_l15_n516()
- fun_l16_n407
-end
-
-def fun_l15_n517()
- fun_l16_n801
-end
-
-def fun_l15_n518()
- fun_l16_n530
-end
-
-def fun_l15_n519()
- fun_l16_n349
-end
-
-def fun_l15_n520()
- fun_l16_n633
-end
-
-def fun_l15_n521()
- fun_l16_n189
-end
-
-def fun_l15_n522()
- fun_l16_n613
-end
-
-def fun_l15_n523()
- fun_l16_n335
-end
-
-def fun_l15_n524()
- fun_l16_n163
-end
-
-def fun_l15_n525()
- fun_l16_n542
-end
-
-def fun_l15_n526()
- fun_l16_n454
-end
-
-def fun_l15_n527()
- fun_l16_n428
-end
-
-def fun_l15_n528()
- fun_l16_n985
-end
-
-def fun_l15_n529()
- fun_l16_n414
-end
-
-def fun_l15_n530()
- fun_l16_n294
-end
-
-def fun_l15_n531()
- fun_l16_n493
-end
-
-def fun_l15_n532()
- fun_l16_n467
-end
-
-def fun_l15_n533()
- fun_l16_n398
-end
-
-def fun_l15_n534()
- fun_l16_n861
-end
-
-def fun_l15_n535()
- fun_l16_n219
-end
-
-def fun_l15_n536()
- fun_l16_n178
-end
-
-def fun_l15_n537()
- fun_l16_n436
-end
-
-def fun_l15_n538()
- fun_l16_n821
-end
-
-def fun_l15_n539()
- fun_l16_n732
-end
-
-def fun_l15_n540()
- fun_l16_n432
-end
-
-def fun_l15_n541()
- fun_l16_n32
-end
-
-def fun_l15_n542()
- fun_l16_n128
-end
-
-def fun_l15_n543()
- fun_l16_n2
-end
-
-def fun_l15_n544()
- fun_l16_n117
-end
-
-def fun_l15_n545()
- fun_l16_n861
-end
-
-def fun_l15_n546()
- fun_l16_n817
-end
-
-def fun_l15_n547()
- fun_l16_n833
-end
-
-def fun_l15_n548()
- fun_l16_n180
-end
-
-def fun_l15_n549()
- fun_l16_n176
-end
-
-def fun_l15_n550()
- fun_l16_n772
-end
-
-def fun_l15_n551()
- fun_l16_n469
-end
-
-def fun_l15_n552()
- fun_l16_n209
-end
-
-def fun_l15_n553()
- fun_l16_n200
-end
-
-def fun_l15_n554()
- fun_l16_n434
-end
-
-def fun_l15_n555()
- fun_l16_n529
-end
-
-def fun_l15_n556()
- fun_l16_n847
-end
-
-def fun_l15_n557()
- fun_l16_n134
-end
-
-def fun_l15_n558()
- fun_l16_n748
-end
-
-def fun_l15_n559()
- fun_l16_n153
-end
-
-def fun_l15_n560()
- fun_l16_n903
-end
-
-def fun_l15_n561()
- fun_l16_n449
-end
-
-def fun_l15_n562()
- fun_l16_n267
-end
-
-def fun_l15_n563()
- fun_l16_n47
-end
-
-def fun_l15_n564()
- fun_l16_n762
-end
-
-def fun_l15_n565()
- fun_l16_n932
-end
-
-def fun_l15_n566()
- fun_l16_n782
-end
-
-def fun_l15_n567()
- fun_l16_n580
-end
-
-def fun_l15_n568()
- fun_l16_n172
-end
-
-def fun_l15_n569()
- fun_l16_n379
-end
-
-def fun_l15_n570()
- fun_l16_n890
-end
-
-def fun_l15_n571()
- fun_l16_n257
-end
-
-def fun_l15_n572()
- fun_l16_n964
-end
-
-def fun_l15_n573()
- fun_l16_n164
-end
-
-def fun_l15_n574()
- fun_l16_n606
-end
-
-def fun_l15_n575()
- fun_l16_n475
-end
-
-def fun_l15_n576()
- fun_l16_n500
-end
-
-def fun_l15_n577()
- fun_l16_n65
-end
-
-def fun_l15_n578()
- fun_l16_n81
-end
-
-def fun_l15_n579()
- fun_l16_n952
-end
-
-def fun_l15_n580()
- fun_l16_n524
-end
-
-def fun_l15_n581()
- fun_l16_n573
-end
-
-def fun_l15_n582()
- fun_l16_n812
-end
-
-def fun_l15_n583()
- fun_l16_n498
-end
-
-def fun_l15_n584()
- fun_l16_n106
-end
-
-def fun_l15_n585()
- fun_l16_n807
-end
-
-def fun_l15_n586()
- fun_l16_n70
-end
-
-def fun_l15_n587()
- fun_l16_n41
-end
-
-def fun_l15_n588()
- fun_l16_n78
-end
-
-def fun_l15_n589()
- fun_l16_n235
-end
-
-def fun_l15_n590()
- fun_l16_n974
-end
-
-def fun_l15_n591()
- fun_l16_n450
-end
-
-def fun_l15_n592()
- fun_l16_n191
-end
-
-def fun_l15_n593()
- fun_l16_n988
-end
-
-def fun_l15_n594()
- fun_l16_n516
-end
-
-def fun_l15_n595()
- fun_l16_n7
-end
-
-def fun_l15_n596()
- fun_l16_n186
-end
-
-def fun_l15_n597()
- fun_l16_n249
-end
-
-def fun_l15_n598()
- fun_l16_n832
-end
-
-def fun_l15_n599()
- fun_l16_n502
-end
-
-def fun_l15_n600()
- fun_l16_n967
-end
-
-def fun_l15_n601()
- fun_l16_n930
-end
-
-def fun_l15_n602()
- fun_l16_n497
-end
-
-def fun_l15_n603()
- fun_l16_n467
-end
-
-def fun_l15_n604()
- fun_l16_n742
-end
-
-def fun_l15_n605()
- fun_l16_n52
-end
-
-def fun_l15_n606()
- fun_l16_n494
-end
-
-def fun_l15_n607()
- fun_l16_n604
-end
-
-def fun_l15_n608()
- fun_l16_n372
-end
-
-def fun_l15_n609()
- fun_l16_n503
-end
-
-def fun_l15_n610()
- fun_l16_n853
-end
-
-def fun_l15_n611()
- fun_l16_n146
-end
-
-def fun_l15_n612()
- fun_l16_n812
-end
-
-def fun_l15_n613()
- fun_l16_n235
-end
-
-def fun_l15_n614()
- fun_l16_n924
-end
-
-def fun_l15_n615()
- fun_l16_n212
-end
-
-def fun_l15_n616()
- fun_l16_n332
-end
-
-def fun_l15_n617()
- fun_l16_n179
-end
-
-def fun_l15_n618()
- fun_l16_n767
-end
-
-def fun_l15_n619()
- fun_l16_n46
-end
-
-def fun_l15_n620()
- fun_l16_n275
-end
-
-def fun_l15_n621()
- fun_l16_n348
-end
-
-def fun_l15_n622()
- fun_l16_n136
-end
-
-def fun_l15_n623()
- fun_l16_n814
-end
-
-def fun_l15_n624()
- fun_l16_n782
-end
-
-def fun_l15_n625()
- fun_l16_n692
-end
-
-def fun_l15_n626()
- fun_l16_n331
-end
-
-def fun_l15_n627()
- fun_l16_n228
-end
-
-def fun_l15_n628()
- fun_l16_n249
-end
-
-def fun_l15_n629()
- fun_l16_n387
-end
-
-def fun_l15_n630()
- fun_l16_n994
-end
-
-def fun_l15_n631()
- fun_l16_n219
-end
-
-def fun_l15_n632()
- fun_l16_n743
-end
-
-def fun_l15_n633()
- fun_l16_n674
-end
-
-def fun_l15_n634()
- fun_l16_n411
-end
-
-def fun_l15_n635()
- fun_l16_n757
-end
-
-def fun_l15_n636()
- fun_l16_n568
-end
-
-def fun_l15_n637()
- fun_l16_n323
-end
-
-def fun_l15_n638()
- fun_l16_n910
-end
-
-def fun_l15_n639()
- fun_l16_n823
-end
-
-def fun_l15_n640()
- fun_l16_n942
-end
-
-def fun_l15_n641()
- fun_l16_n796
-end
-
-def fun_l15_n642()
- fun_l16_n507
-end
-
-def fun_l15_n643()
- fun_l16_n72
-end
-
-def fun_l15_n644()
- fun_l16_n285
-end
-
-def fun_l15_n645()
- fun_l16_n654
-end
-
-def fun_l15_n646()
- fun_l16_n361
-end
-
-def fun_l15_n647()
- fun_l16_n766
-end
-
-def fun_l15_n648()
- fun_l16_n587
-end
-
-def fun_l15_n649()
- fun_l16_n99
-end
-
-def fun_l15_n650()
- fun_l16_n558
-end
-
-def fun_l15_n651()
- fun_l16_n623
-end
-
-def fun_l15_n652()
- fun_l16_n428
-end
-
-def fun_l15_n653()
- fun_l16_n695
-end
-
-def fun_l15_n654()
- fun_l16_n514
-end
-
-def fun_l15_n655()
- fun_l16_n159
-end
-
-def fun_l15_n656()
- fun_l16_n41
-end
-
-def fun_l15_n657()
- fun_l16_n510
-end
-
-def fun_l15_n658()
- fun_l16_n26
-end
-
-def fun_l15_n659()
- fun_l16_n947
-end
-
-def fun_l15_n660()
- fun_l16_n766
-end
-
-def fun_l15_n661()
- fun_l16_n470
-end
-
-def fun_l15_n662()
- fun_l16_n46
-end
-
-def fun_l15_n663()
- fun_l16_n499
-end
-
-def fun_l15_n664()
- fun_l16_n593
-end
-
-def fun_l15_n665()
- fun_l16_n803
-end
-
-def fun_l15_n666()
- fun_l16_n321
-end
-
-def fun_l15_n667()
- fun_l16_n165
-end
-
-def fun_l15_n668()
- fun_l16_n762
-end
-
-def fun_l15_n669()
- fun_l16_n800
-end
-
-def fun_l15_n670()
- fun_l16_n530
-end
-
-def fun_l15_n671()
- fun_l16_n198
-end
-
-def fun_l15_n672()
- fun_l16_n365
-end
-
-def fun_l15_n673()
- fun_l16_n204
-end
-
-def fun_l15_n674()
- fun_l16_n782
-end
-
-def fun_l15_n675()
- fun_l16_n465
-end
-
-def fun_l15_n676()
- fun_l16_n733
-end
-
-def fun_l15_n677()
- fun_l16_n101
-end
-
-def fun_l15_n678()
- fun_l16_n38
-end
-
-def fun_l15_n679()
- fun_l16_n800
-end
-
-def fun_l15_n680()
- fun_l16_n45
-end
-
-def fun_l15_n681()
- fun_l16_n996
-end
-
-def fun_l15_n682()
- fun_l16_n156
-end
-
-def fun_l15_n683()
- fun_l16_n868
-end
-
-def fun_l15_n684()
- fun_l16_n537
-end
-
-def fun_l15_n685()
- fun_l16_n450
-end
-
-def fun_l15_n686()
- fun_l16_n932
-end
-
-def fun_l15_n687()
- fun_l16_n733
-end
-
-def fun_l15_n688()
- fun_l16_n150
-end
-
-def fun_l15_n689()
- fun_l16_n770
-end
-
-def fun_l15_n690()
- fun_l16_n522
-end
-
-def fun_l15_n691()
- fun_l16_n867
-end
-
-def fun_l15_n692()
- fun_l16_n318
-end
-
-def fun_l15_n693()
- fun_l16_n23
-end
-
-def fun_l15_n694()
- fun_l16_n402
-end
-
-def fun_l15_n695()
- fun_l16_n261
-end
-
-def fun_l15_n696()
- fun_l16_n726
-end
-
-def fun_l15_n697()
- fun_l16_n406
-end
-
-def fun_l15_n698()
- fun_l16_n308
-end
-
-def fun_l15_n699()
- fun_l16_n428
-end
-
-def fun_l15_n700()
- fun_l16_n141
-end
-
-def fun_l15_n701()
- fun_l16_n987
-end
-
-def fun_l15_n702()
- fun_l16_n371
-end
-
-def fun_l15_n703()
- fun_l16_n578
-end
-
-def fun_l15_n704()
- fun_l16_n780
-end
-
-def fun_l15_n705()
- fun_l16_n914
-end
-
-def fun_l15_n706()
- fun_l16_n976
-end
-
-def fun_l15_n707()
- fun_l16_n268
-end
-
-def fun_l15_n708()
- fun_l16_n431
-end
-
-def fun_l15_n709()
- fun_l16_n188
-end
-
-def fun_l15_n710()
- fun_l16_n190
-end
-
-def fun_l15_n711()
- fun_l16_n742
-end
-
-def fun_l15_n712()
- fun_l16_n223
-end
-
-def fun_l15_n713()
- fun_l16_n993
-end
-
-def fun_l15_n714()
- fun_l16_n482
-end
-
-def fun_l15_n715()
- fun_l16_n890
-end
-
-def fun_l15_n716()
- fun_l16_n929
-end
-
-def fun_l15_n717()
- fun_l16_n644
-end
-
-def fun_l15_n718()
- fun_l16_n646
-end
-
-def fun_l15_n719()
- fun_l16_n121
-end
-
-def fun_l15_n720()
- fun_l16_n417
-end
-
-def fun_l15_n721()
- fun_l16_n203
-end
-
-def fun_l15_n722()
- fun_l16_n145
-end
-
-def fun_l15_n723()
- fun_l16_n401
-end
-
-def fun_l15_n724()
- fun_l16_n823
-end
-
-def fun_l15_n725()
- fun_l16_n554
-end
-
-def fun_l15_n726()
- fun_l16_n641
-end
-
-def fun_l15_n727()
- fun_l16_n232
-end
-
-def fun_l15_n728()
- fun_l16_n313
-end
-
-def fun_l15_n729()
- fun_l16_n943
-end
-
-def fun_l15_n730()
- fun_l16_n964
-end
-
-def fun_l15_n731()
- fun_l16_n409
-end
-
-def fun_l15_n732()
- fun_l16_n375
-end
-
-def fun_l15_n733()
- fun_l16_n147
-end
-
-def fun_l15_n734()
- fun_l16_n779
-end
-
-def fun_l15_n735()
- fun_l16_n690
-end
-
-def fun_l15_n736()
- fun_l16_n91
-end
-
-def fun_l15_n737()
- fun_l16_n819
-end
-
-def fun_l15_n738()
- fun_l16_n68
-end
-
-def fun_l15_n739()
- fun_l16_n810
-end
-
-def fun_l15_n740()
- fun_l16_n787
-end
-
-def fun_l15_n741()
- fun_l16_n90
-end
-
-def fun_l15_n742()
- fun_l16_n800
-end
-
-def fun_l15_n743()
- fun_l16_n491
-end
-
-def fun_l15_n744()
- fun_l16_n729
-end
-
-def fun_l15_n745()
- fun_l16_n917
-end
-
-def fun_l15_n746()
- fun_l16_n360
-end
-
-def fun_l15_n747()
- fun_l16_n489
-end
-
-def fun_l15_n748()
- fun_l16_n755
-end
-
-def fun_l15_n749()
- fun_l16_n999
-end
-
-def fun_l15_n750()
- fun_l16_n268
-end
-
-def fun_l15_n751()
- fun_l16_n213
-end
-
-def fun_l15_n752()
- fun_l16_n923
-end
-
-def fun_l15_n753()
- fun_l16_n456
-end
-
-def fun_l15_n754()
- fun_l16_n653
-end
-
-def fun_l15_n755()
- fun_l16_n855
-end
-
-def fun_l15_n756()
- fun_l16_n833
-end
-
-def fun_l15_n757()
- fun_l16_n269
-end
-
-def fun_l15_n758()
- fun_l16_n152
-end
-
-def fun_l15_n759()
- fun_l16_n391
-end
-
-def fun_l15_n760()
- fun_l16_n850
-end
-
-def fun_l15_n761()
- fun_l16_n70
-end
-
-def fun_l15_n762()
- fun_l16_n774
-end
-
-def fun_l15_n763()
- fun_l16_n379
-end
-
-def fun_l15_n764()
- fun_l16_n271
-end
-
-def fun_l15_n765()
- fun_l16_n667
-end
-
-def fun_l15_n766()
- fun_l16_n149
-end
-
-def fun_l15_n767()
- fun_l16_n715
-end
-
-def fun_l15_n768()
- fun_l16_n645
-end
-
-def fun_l15_n769()
- fun_l16_n741
-end
-
-def fun_l15_n770()
- fun_l16_n147
-end
-
-def fun_l15_n771()
- fun_l16_n23
-end
-
-def fun_l15_n772()
- fun_l16_n653
-end
-
-def fun_l15_n773()
- fun_l16_n109
-end
-
-def fun_l15_n774()
- fun_l16_n402
-end
-
-def fun_l15_n775()
- fun_l16_n995
-end
-
-def fun_l15_n776()
- fun_l16_n112
-end
-
-def fun_l15_n777()
- fun_l16_n416
-end
-
-def fun_l15_n778()
- fun_l16_n641
-end
-
-def fun_l15_n779()
- fun_l16_n412
-end
-
-def fun_l15_n780()
- fun_l16_n548
-end
-
-def fun_l15_n781()
- fun_l16_n329
-end
-
-def fun_l15_n782()
- fun_l16_n804
-end
-
-def fun_l15_n783()
- fun_l16_n377
-end
-
-def fun_l15_n784()
- fun_l16_n107
-end
-
-def fun_l15_n785()
- fun_l16_n364
-end
-
-def fun_l15_n786()
- fun_l16_n950
-end
-
-def fun_l15_n787()
- fun_l16_n769
-end
-
-def fun_l15_n788()
- fun_l16_n322
-end
-
-def fun_l15_n789()
- fun_l16_n604
-end
-
-def fun_l15_n790()
- fun_l16_n425
-end
-
-def fun_l15_n791()
- fun_l16_n318
-end
-
-def fun_l15_n792()
- fun_l16_n236
-end
-
-def fun_l15_n793()
- fun_l16_n794
-end
-
-def fun_l15_n794()
- fun_l16_n948
-end
-
-def fun_l15_n795()
- fun_l16_n421
-end
-
-def fun_l15_n796()
- fun_l16_n565
-end
-
-def fun_l15_n797()
- fun_l16_n363
-end
-
-def fun_l15_n798()
- fun_l16_n274
-end
-
-def fun_l15_n799()
- fun_l16_n391
-end
-
-def fun_l15_n800()
- fun_l16_n303
-end
-
-def fun_l15_n801()
- fun_l16_n31
-end
-
-def fun_l15_n802()
- fun_l16_n585
-end
-
-def fun_l15_n803()
- fun_l16_n769
-end
-
-def fun_l15_n804()
- fun_l16_n749
-end
-
-def fun_l15_n805()
- fun_l16_n405
-end
-
-def fun_l15_n806()
- fun_l16_n53
-end
-
-def fun_l15_n807()
- fun_l16_n951
-end
-
-def fun_l15_n808()
- fun_l16_n817
-end
-
-def fun_l15_n809()
- fun_l16_n217
-end
-
-def fun_l15_n810()
- fun_l16_n210
-end
-
-def fun_l15_n811()
- fun_l16_n830
-end
-
-def fun_l15_n812()
- fun_l16_n743
-end
-
-def fun_l15_n813()
- fun_l16_n908
-end
-
-def fun_l15_n814()
- fun_l16_n343
-end
-
-def fun_l15_n815()
- fun_l16_n135
-end
-
-def fun_l15_n816()
- fun_l16_n346
-end
-
-def fun_l15_n817()
- fun_l16_n947
-end
-
-def fun_l15_n818()
- fun_l16_n969
-end
-
-def fun_l15_n819()
- fun_l16_n313
-end
-
-def fun_l15_n820()
- fun_l16_n668
-end
-
-def fun_l15_n821()
- fun_l16_n923
-end
-
-def fun_l15_n822()
- fun_l16_n650
-end
-
-def fun_l15_n823()
- fun_l16_n601
-end
-
-def fun_l15_n824()
- fun_l16_n775
-end
-
-def fun_l15_n825()
- fun_l16_n748
-end
-
-def fun_l15_n826()
- fun_l16_n353
-end
-
-def fun_l15_n827()
- fun_l16_n164
-end
-
-def fun_l15_n828()
- fun_l16_n458
-end
-
-def fun_l15_n829()
- fun_l16_n257
-end
-
-def fun_l15_n830()
- fun_l16_n968
-end
-
-def fun_l15_n831()
- fun_l16_n932
-end
-
-def fun_l15_n832()
- fun_l16_n749
-end
-
-def fun_l15_n833()
- fun_l16_n873
-end
-
-def fun_l15_n834()
- fun_l16_n940
-end
-
-def fun_l15_n835()
- fun_l16_n404
-end
-
-def fun_l15_n836()
- fun_l16_n235
-end
-
-def fun_l15_n837()
- fun_l16_n584
-end
-
-def fun_l15_n838()
- fun_l16_n12
-end
-
-def fun_l15_n839()
- fun_l16_n378
-end
-
-def fun_l15_n840()
- fun_l16_n463
-end
-
-def fun_l15_n841()
- fun_l16_n310
-end
-
-def fun_l15_n842()
- fun_l16_n832
-end
-
-def fun_l15_n843()
- fun_l16_n641
-end
-
-def fun_l15_n844()
- fun_l16_n484
-end
-
-def fun_l15_n845()
- fun_l16_n589
-end
-
-def fun_l15_n846()
- fun_l16_n315
-end
-
-def fun_l15_n847()
- fun_l16_n977
-end
-
-def fun_l15_n848()
- fun_l16_n946
-end
-
-def fun_l15_n849()
- fun_l16_n848
-end
-
-def fun_l15_n850()
- fun_l16_n956
-end
-
-def fun_l15_n851()
- fun_l16_n608
-end
-
-def fun_l15_n852()
- fun_l16_n787
-end
-
-def fun_l15_n853()
- fun_l16_n527
-end
-
-def fun_l15_n854()
- fun_l16_n426
-end
-
-def fun_l15_n855()
- fun_l16_n330
-end
-
-def fun_l15_n856()
- fun_l16_n687
-end
-
-def fun_l15_n857()
- fun_l16_n672
-end
-
-def fun_l15_n858()
- fun_l16_n133
-end
-
-def fun_l15_n859()
- fun_l16_n515
-end
-
-def fun_l15_n860()
- fun_l16_n20
-end
-
-def fun_l15_n861()
- fun_l16_n419
-end
-
-def fun_l15_n862()
- fun_l16_n239
-end
-
-def fun_l15_n863()
- fun_l16_n379
-end
-
-def fun_l15_n864()
- fun_l16_n241
-end
-
-def fun_l15_n865()
- fun_l16_n713
-end
-
-def fun_l15_n866()
- fun_l16_n705
-end
-
-def fun_l15_n867()
- fun_l16_n487
-end
-
-def fun_l15_n868()
- fun_l16_n959
-end
-
-def fun_l15_n869()
- fun_l16_n914
-end
-
-def fun_l15_n870()
- fun_l16_n325
-end
-
-def fun_l15_n871()
- fun_l16_n983
-end
-
-def fun_l15_n872()
- fun_l16_n363
-end
-
-def fun_l15_n873()
- fun_l16_n617
-end
-
-def fun_l15_n874()
- fun_l16_n420
-end
-
-def fun_l15_n875()
- fun_l16_n732
-end
-
-def fun_l15_n876()
- fun_l16_n560
-end
-
-def fun_l15_n877()
- fun_l16_n318
-end
-
-def fun_l15_n878()
- fun_l16_n97
-end
-
-def fun_l15_n879()
- fun_l16_n242
-end
-
-def fun_l15_n880()
- fun_l16_n801
-end
-
-def fun_l15_n881()
- fun_l16_n56
-end
-
-def fun_l15_n882()
- fun_l16_n68
-end
-
-def fun_l15_n883()
- fun_l16_n625
-end
-
-def fun_l15_n884()
- fun_l16_n400
-end
-
-def fun_l15_n885()
- fun_l16_n405
-end
-
-def fun_l15_n886()
- fun_l16_n778
-end
-
-def fun_l15_n887()
- fun_l16_n865
-end
-
-def fun_l15_n888()
- fun_l16_n737
-end
-
-def fun_l15_n889()
- fun_l16_n233
-end
-
-def fun_l15_n890()
- fun_l16_n594
-end
-
-def fun_l15_n891()
- fun_l16_n240
-end
-
-def fun_l15_n892()
- fun_l16_n511
-end
-
-def fun_l15_n893()
- fun_l16_n711
-end
-
-def fun_l15_n894()
- fun_l16_n238
-end
-
-def fun_l15_n895()
- fun_l16_n903
-end
-
-def fun_l15_n896()
- fun_l16_n506
-end
-
-def fun_l15_n897()
- fun_l16_n794
-end
-
-def fun_l15_n898()
- fun_l16_n812
-end
-
-def fun_l15_n899()
- fun_l16_n829
-end
-
-def fun_l15_n900()
- fun_l16_n686
-end
-
-def fun_l15_n901()
- fun_l16_n302
-end
-
-def fun_l15_n902()
- fun_l16_n947
-end
-
-def fun_l15_n903()
- fun_l16_n107
-end
-
-def fun_l15_n904()
- fun_l16_n79
-end
-
-def fun_l15_n905()
- fun_l16_n570
-end
-
-def fun_l15_n906()
- fun_l16_n567
-end
-
-def fun_l15_n907()
- fun_l16_n853
-end
-
-def fun_l15_n908()
- fun_l16_n49
-end
-
-def fun_l15_n909()
- fun_l16_n721
-end
-
-def fun_l15_n910()
- fun_l16_n376
-end
-
-def fun_l15_n911()
- fun_l16_n513
-end
-
-def fun_l15_n912()
- fun_l16_n863
-end
-
-def fun_l15_n913()
- fun_l16_n692
-end
-
-def fun_l15_n914()
- fun_l16_n391
-end
-
-def fun_l15_n915()
- fun_l16_n263
-end
-
-def fun_l15_n916()
- fun_l16_n159
-end
-
-def fun_l15_n917()
- fun_l16_n291
-end
-
-def fun_l15_n918()
- fun_l16_n290
-end
-
-def fun_l15_n919()
- fun_l16_n328
-end
-
-def fun_l15_n920()
- fun_l16_n838
-end
-
-def fun_l15_n921()
- fun_l16_n66
-end
-
-def fun_l15_n922()
- fun_l16_n821
-end
-
-def fun_l15_n923()
- fun_l16_n549
-end
-
-def fun_l15_n924()
- fun_l16_n235
-end
-
-def fun_l15_n925()
- fun_l16_n800
-end
-
-def fun_l15_n926()
- fun_l16_n486
-end
-
-def fun_l15_n927()
- fun_l16_n824
-end
-
-def fun_l15_n928()
- fun_l16_n881
-end
-
-def fun_l15_n929()
- fun_l16_n772
-end
-
-def fun_l15_n930()
- fun_l16_n563
-end
-
-def fun_l15_n931()
- fun_l16_n99
-end
-
-def fun_l15_n932()
- fun_l16_n691
-end
-
-def fun_l15_n933()
- fun_l16_n983
-end
-
-def fun_l15_n934()
- fun_l16_n593
-end
-
-def fun_l15_n935()
- fun_l16_n611
-end
-
-def fun_l15_n936()
- fun_l16_n600
-end
-
-def fun_l15_n937()
- fun_l16_n892
-end
-
-def fun_l15_n938()
- fun_l16_n653
-end
-
-def fun_l15_n939()
- fun_l16_n78
-end
-
-def fun_l15_n940()
- fun_l16_n139
-end
-
-def fun_l15_n941()
- fun_l16_n995
-end
-
-def fun_l15_n942()
- fun_l16_n63
-end
-
-def fun_l15_n943()
- fun_l16_n466
-end
-
-def fun_l15_n944()
- fun_l16_n740
-end
-
-def fun_l15_n945()
- fun_l16_n870
-end
-
-def fun_l15_n946()
- fun_l16_n373
-end
-
-def fun_l15_n947()
- fun_l16_n375
-end
-
-def fun_l15_n948()
- fun_l16_n360
-end
-
-def fun_l15_n949()
- fun_l16_n526
-end
-
-def fun_l15_n950()
- fun_l16_n100
-end
-
-def fun_l15_n951()
- fun_l16_n644
-end
-
-def fun_l15_n952()
- fun_l16_n773
-end
-
-def fun_l15_n953()
- fun_l16_n311
-end
-
-def fun_l15_n954()
- fun_l16_n152
-end
-
-def fun_l15_n955()
- fun_l16_n754
-end
-
-def fun_l15_n956()
- fun_l16_n31
-end
-
-def fun_l15_n957()
- fun_l16_n501
-end
-
-def fun_l15_n958()
- fun_l16_n333
-end
-
-def fun_l15_n959()
- fun_l16_n952
-end
-
-def fun_l15_n960()
- fun_l16_n753
-end
-
-def fun_l15_n961()
- fun_l16_n694
-end
-
-def fun_l15_n962()
- fun_l16_n82
-end
-
-def fun_l15_n963()
- fun_l16_n204
-end
-
-def fun_l15_n964()
- fun_l16_n910
-end
-
-def fun_l15_n965()
- fun_l16_n127
-end
-
-def fun_l15_n966()
- fun_l16_n203
-end
-
-def fun_l15_n967()
- fun_l16_n760
-end
-
-def fun_l15_n968()
- fun_l16_n718
-end
-
-def fun_l15_n969()
- fun_l16_n446
-end
-
-def fun_l15_n970()
- fun_l16_n595
-end
-
-def fun_l15_n971()
- fun_l16_n165
-end
-
-def fun_l15_n972()
- fun_l16_n393
-end
-
-def fun_l15_n973()
- fun_l16_n766
-end
-
-def fun_l15_n974()
- fun_l16_n276
-end
-
-def fun_l15_n975()
- fun_l16_n97
-end
-
-def fun_l15_n976()
- fun_l16_n319
-end
-
-def fun_l15_n977()
- fun_l16_n333
-end
-
-def fun_l15_n978()
- fun_l16_n635
-end
-
-def fun_l15_n979()
- fun_l16_n466
-end
-
-def fun_l15_n980()
- fun_l16_n841
-end
-
-def fun_l15_n981()
- fun_l16_n415
-end
-
-def fun_l15_n982()
- fun_l16_n630
-end
-
-def fun_l15_n983()
- fun_l16_n19
-end
-
-def fun_l15_n984()
- fun_l16_n901
-end
-
-def fun_l15_n985()
- fun_l16_n933
-end
-
-def fun_l15_n986()
- fun_l16_n558
-end
-
-def fun_l15_n987()
- fun_l16_n357
-end
-
-def fun_l15_n988()
- fun_l16_n929
-end
-
-def fun_l15_n989()
- fun_l16_n871
-end
-
-def fun_l15_n990()
- fun_l16_n967
-end
-
-def fun_l15_n991()
- fun_l16_n803
-end
-
-def fun_l15_n992()
- fun_l16_n484
-end
-
-def fun_l15_n993()
- fun_l16_n270
-end
-
-def fun_l15_n994()
- fun_l16_n670
-end
-
-def fun_l15_n995()
- fun_l16_n77
-end
-
-def fun_l15_n996()
- fun_l16_n480
-end
-
-def fun_l15_n997()
- fun_l16_n279
-end
-
-def fun_l15_n998()
- fun_l16_n109
-end
-
-def fun_l15_n999()
- fun_l16_n333
-end
-
-def fun_l16_n0()
- fun_l17_n358
-end
-
-def fun_l16_n1()
- fun_l17_n388
-end
-
-def fun_l16_n2()
- fun_l17_n450
-end
-
-def fun_l16_n3()
- fun_l17_n274
-end
-
-def fun_l16_n4()
- fun_l17_n83
-end
-
-def fun_l16_n5()
- fun_l17_n148
-end
-
-def fun_l16_n6()
- fun_l17_n370
-end
-
-def fun_l16_n7()
- fun_l17_n956
-end
-
-def fun_l16_n8()
- fun_l17_n137
-end
-
-def fun_l16_n9()
- fun_l17_n702
-end
-
-def fun_l16_n10()
- fun_l17_n296
-end
-
-def fun_l16_n11()
- fun_l17_n44
-end
-
-def fun_l16_n12()
- fun_l17_n937
-end
-
-def fun_l16_n13()
- fun_l17_n100
-end
-
-def fun_l16_n14()
- fun_l17_n599
-end
-
-def fun_l16_n15()
- fun_l17_n757
-end
-
-def fun_l16_n16()
- fun_l17_n831
-end
-
-def fun_l16_n17()
- fun_l17_n753
-end
-
-def fun_l16_n18()
- fun_l17_n726
-end
-
-def fun_l16_n19()
- fun_l17_n126
-end
-
-def fun_l16_n20()
- fun_l17_n106
-end
-
-def fun_l16_n21()
- fun_l17_n46
-end
-
-def fun_l16_n22()
- fun_l17_n56
-end
-
-def fun_l16_n23()
- fun_l17_n16
-end
-
-def fun_l16_n24()
- fun_l17_n298
-end
-
-def fun_l16_n25()
- fun_l17_n173
-end
-
-def fun_l16_n26()
- fun_l17_n479
-end
-
-def fun_l16_n27()
- fun_l17_n304
-end
-
-def fun_l16_n28()
- fun_l17_n426
-end
-
-def fun_l16_n29()
- fun_l17_n214
-end
-
-def fun_l16_n30()
- fun_l17_n818
-end
-
-def fun_l16_n31()
- fun_l17_n362
-end
-
-def fun_l16_n32()
- fun_l17_n392
-end
-
-def fun_l16_n33()
- fun_l17_n751
-end
-
-def fun_l16_n34()
- fun_l17_n719
-end
-
-def fun_l16_n35()
- fun_l17_n258
-end
-
-def fun_l16_n36()
- fun_l17_n128
-end
-
-def fun_l16_n37()
- fun_l17_n95
-end
-
-def fun_l16_n38()
- fun_l17_n30
-end
-
-def fun_l16_n39()
- fun_l17_n539
-end
-
-def fun_l16_n40()
- fun_l17_n139
-end
-
-def fun_l16_n41()
- fun_l17_n309
-end
-
-def fun_l16_n42()
- fun_l17_n943
-end
-
-def fun_l16_n43()
- fun_l17_n242
-end
-
-def fun_l16_n44()
- fun_l17_n402
-end
-
-def fun_l16_n45()
- fun_l17_n173
-end
-
-def fun_l16_n46()
- fun_l17_n328
-end
-
-def fun_l16_n47()
- fun_l17_n883
-end
-
-def fun_l16_n48()
- fun_l17_n992
-end
-
-def fun_l16_n49()
- fun_l17_n921
-end
-
-def fun_l16_n50()
- fun_l17_n130
-end
-
-def fun_l16_n51()
- fun_l17_n374
-end
-
-def fun_l16_n52()
- fun_l17_n555
-end
-
-def fun_l16_n53()
- fun_l17_n965
-end
-
-def fun_l16_n54()
- fun_l17_n353
-end
-
-def fun_l16_n55()
- fun_l17_n525
-end
-
-def fun_l16_n56()
- fun_l17_n569
-end
-
-def fun_l16_n57()
- fun_l17_n156
-end
-
-def fun_l16_n58()
- fun_l17_n695
-end
-
-def fun_l16_n59()
- fun_l17_n864
-end
-
-def fun_l16_n60()
- fun_l17_n415
-end
-
-def fun_l16_n61()
- fun_l17_n605
-end
-
-def fun_l16_n62()
- fun_l17_n995
-end
-
-def fun_l16_n63()
- fun_l17_n794
-end
-
-def fun_l16_n64()
- fun_l17_n813
-end
-
-def fun_l16_n65()
- fun_l17_n839
-end
-
-def fun_l16_n66()
- fun_l17_n273
-end
-
-def fun_l16_n67()
- fun_l17_n223
-end
-
-def fun_l16_n68()
- fun_l17_n168
-end
-
-def fun_l16_n69()
- fun_l17_n798
-end
-
-def fun_l16_n70()
- fun_l17_n892
-end
-
-def fun_l16_n71()
- fun_l17_n966
-end
-
-def fun_l16_n72()
- fun_l17_n102
-end
-
-def fun_l16_n73()
- fun_l17_n209
-end
-
-def fun_l16_n74()
- fun_l17_n618
-end
-
-def fun_l16_n75()
- fun_l17_n432
-end
-
-def fun_l16_n76()
- fun_l17_n254
-end
-
-def fun_l16_n77()
- fun_l17_n413
-end
-
-def fun_l16_n78()
- fun_l17_n908
-end
-
-def fun_l16_n79()
- fun_l17_n519
-end
-
-def fun_l16_n80()
- fun_l17_n67
-end
-
-def fun_l16_n81()
- fun_l17_n914
-end
-
-def fun_l16_n82()
- fun_l17_n356
-end
-
-def fun_l16_n83()
- fun_l17_n138
-end
-
-def fun_l16_n84()
- fun_l17_n714
-end
-
-def fun_l16_n85()
- fun_l17_n803
-end
-
-def fun_l16_n86()
- fun_l17_n770
-end
-
-def fun_l16_n87()
- fun_l17_n813
-end
-
-def fun_l16_n88()
- fun_l17_n752
-end
-
-def fun_l16_n89()
- fun_l17_n580
-end
-
-def fun_l16_n90()
- fun_l17_n368
-end
-
-def fun_l16_n91()
- fun_l17_n169
-end
-
-def fun_l16_n92()
- fun_l17_n565
-end
-
-def fun_l16_n93()
- fun_l17_n111
-end
-
-def fun_l16_n94()
- fun_l17_n911
-end
-
-def fun_l16_n95()
- fun_l17_n448
-end
-
-def fun_l16_n96()
- fun_l17_n455
-end
-
-def fun_l16_n97()
- fun_l17_n76
-end
-
-def fun_l16_n98()
- fun_l17_n27
-end
-
-def fun_l16_n99()
- fun_l17_n884
-end
-
-def fun_l16_n100()
- fun_l17_n144
-end
-
-def fun_l16_n101()
- fun_l17_n344
-end
-
-def fun_l16_n102()
- fun_l17_n293
-end
-
-def fun_l16_n103()
- fun_l17_n91
-end
-
-def fun_l16_n104()
- fun_l17_n398
-end
-
-def fun_l16_n105()
- fun_l17_n398
-end
-
-def fun_l16_n106()
- fun_l17_n216
-end
-
-def fun_l16_n107()
- fun_l17_n22
-end
-
-def fun_l16_n108()
- fun_l17_n901
-end
-
-def fun_l16_n109()
- fun_l17_n817
-end
-
-def fun_l16_n110()
- fun_l17_n574
-end
-
-def fun_l16_n111()
- fun_l17_n546
-end
-
-def fun_l16_n112()
- fun_l17_n704
-end
-
-def fun_l16_n113()
- fun_l17_n184
-end
-
-def fun_l16_n114()
- fun_l17_n993
-end
-
-def fun_l16_n115()
- fun_l17_n582
-end
-
-def fun_l16_n116()
- fun_l17_n943
-end
-
-def fun_l16_n117()
- fun_l17_n692
-end
-
-def fun_l16_n118()
- fun_l17_n203
-end
-
-def fun_l16_n119()
- fun_l17_n283
-end
-
-def fun_l16_n120()
- fun_l17_n600
-end
-
-def fun_l16_n121()
- fun_l17_n953
-end
-
-def fun_l16_n122()
- fun_l17_n810
-end
-
-def fun_l16_n123()
- fun_l17_n861
-end
-
-def fun_l16_n124()
- fun_l17_n680
-end
-
-def fun_l16_n125()
- fun_l17_n401
-end
-
-def fun_l16_n126()
- fun_l17_n905
-end
-
-def fun_l16_n127()
- fun_l17_n376
-end
-
-def fun_l16_n128()
- fun_l17_n231
-end
-
-def fun_l16_n129()
- fun_l17_n693
-end
-
-def fun_l16_n130()
- fun_l17_n219
-end
-
-def fun_l16_n131()
- fun_l17_n560
-end
-
-def fun_l16_n132()
- fun_l17_n17
-end
-
-def fun_l16_n133()
- fun_l17_n706
-end
-
-def fun_l16_n134()
- fun_l17_n355
-end
-
-def fun_l16_n135()
- fun_l17_n309
-end
-
-def fun_l16_n136()
- fun_l17_n514
-end
-
-def fun_l16_n137()
- fun_l17_n428
-end
-
-def fun_l16_n138()
- fun_l17_n80
-end
-
-def fun_l16_n139()
- fun_l17_n548
-end
-
-def fun_l16_n140()
- fun_l17_n514
-end
-
-def fun_l16_n141()
- fun_l17_n316
-end
-
-def fun_l16_n142()
- fun_l17_n791
-end
-
-def fun_l16_n143()
- fun_l17_n70
-end
-
-def fun_l16_n144()
- fun_l17_n953
-end
-
-def fun_l16_n145()
- fun_l17_n416
-end
-
-def fun_l16_n146()
- fun_l17_n989
-end
-
-def fun_l16_n147()
- fun_l17_n604
-end
-
-def fun_l16_n148()
- fun_l17_n845
-end
-
-def fun_l16_n149()
- fun_l17_n576
-end
-
-def fun_l16_n150()
- fun_l17_n831
-end
-
-def fun_l16_n151()
- fun_l17_n727
-end
-
-def fun_l16_n152()
- fun_l17_n231
-end
-
-def fun_l16_n153()
- fun_l17_n405
-end
-
-def fun_l16_n154()
- fun_l17_n643
-end
-
-def fun_l16_n155()
- fun_l17_n117
-end
-
-def fun_l16_n156()
- fun_l17_n842
-end
-
-def fun_l16_n157()
- fun_l17_n522
-end
-
-def fun_l16_n158()
- fun_l17_n415
-end
-
-def fun_l16_n159()
- fun_l17_n239
-end
-
-def fun_l16_n160()
- fun_l17_n512
-end
-
-def fun_l16_n161()
- fun_l17_n247
-end
-
-def fun_l16_n162()
- fun_l17_n798
-end
-
-def fun_l16_n163()
- fun_l17_n771
-end
-
-def fun_l16_n164()
- fun_l17_n47
-end
-
-def fun_l16_n165()
- fun_l17_n803
-end
-
-def fun_l16_n166()
- fun_l17_n500
-end
-
-def fun_l16_n167()
- fun_l17_n797
-end
-
-def fun_l16_n168()
- fun_l17_n467
-end
-
-def fun_l16_n169()
- fun_l17_n893
-end
-
-def fun_l16_n170()
- fun_l17_n900
-end
-
-def fun_l16_n171()
- fun_l17_n539
-end
-
-def fun_l16_n172()
- fun_l17_n631
-end
-
-def fun_l16_n173()
- fun_l17_n113
-end
-
-def fun_l16_n174()
- fun_l17_n674
-end
-
-def fun_l16_n175()
- fun_l17_n827
-end
-
-def fun_l16_n176()
- fun_l17_n751
-end
-
-def fun_l16_n177()
- fun_l17_n600
-end
-
-def fun_l16_n178()
- fun_l17_n290
-end
-
-def fun_l16_n179()
- fun_l17_n947
-end
-
-def fun_l16_n180()
- fun_l17_n718
-end
-
-def fun_l16_n181()
- fun_l17_n531
-end
-
-def fun_l16_n182()
- fun_l17_n849
-end
-
-def fun_l16_n183()
- fun_l17_n310
-end
-
-def fun_l16_n184()
- fun_l17_n795
-end
-
-def fun_l16_n185()
- fun_l17_n65
-end
-
-def fun_l16_n186()
- fun_l17_n242
-end
-
-def fun_l16_n187()
- fun_l17_n832
-end
-
-def fun_l16_n188()
- fun_l17_n749
-end
-
-def fun_l16_n189()
- fun_l17_n826
-end
-
-def fun_l16_n190()
- fun_l17_n244
-end
-
-def fun_l16_n191()
- fun_l17_n279
-end
-
-def fun_l16_n192()
- fun_l17_n746
-end
-
-def fun_l16_n193()
- fun_l17_n199
-end
-
-def fun_l16_n194()
- fun_l17_n458
-end
-
-def fun_l16_n195()
- fun_l17_n161
-end
-
-def fun_l16_n196()
- fun_l17_n584
-end
-
-def fun_l16_n197()
- fun_l17_n400
-end
-
-def fun_l16_n198()
- fun_l17_n598
-end
-
-def fun_l16_n199()
- fun_l17_n685
-end
-
-def fun_l16_n200()
- fun_l17_n939
-end
-
-def fun_l16_n201()
- fun_l17_n374
-end
-
-def fun_l16_n202()
- fun_l17_n463
-end
-
-def fun_l16_n203()
- fun_l17_n677
-end
-
-def fun_l16_n204()
- fun_l17_n857
-end
-
-def fun_l16_n205()
- fun_l17_n39
-end
-
-def fun_l16_n206()
- fun_l17_n899
-end
-
-def fun_l16_n207()
- fun_l17_n733
-end
-
-def fun_l16_n208()
- fun_l17_n137
-end
-
-def fun_l16_n209()
- fun_l17_n988
-end
-
-def fun_l16_n210()
- fun_l17_n792
-end
-
-def fun_l16_n211()
- fun_l17_n861
-end
-
-def fun_l16_n212()
- fun_l17_n889
-end
-
-def fun_l16_n213()
- fun_l17_n933
-end
-
-def fun_l16_n214()
- fun_l17_n898
-end
-
-def fun_l16_n215()
- fun_l17_n723
-end
-
-def fun_l16_n216()
- fun_l17_n116
-end
-
-def fun_l16_n217()
- fun_l17_n251
-end
-
-def fun_l16_n218()
- fun_l17_n586
-end
-
-def fun_l16_n219()
- fun_l17_n428
-end
-
-def fun_l16_n220()
- fun_l17_n53
-end
-
-def fun_l16_n221()
- fun_l17_n611
-end
-
-def fun_l16_n222()
- fun_l17_n480
-end
-
-def fun_l16_n223()
- fun_l17_n2
-end
-
-def fun_l16_n224()
- fun_l17_n623
-end
-
-def fun_l16_n225()
- fun_l17_n178
-end
-
-def fun_l16_n226()
- fun_l17_n938
-end
-
-def fun_l16_n227()
- fun_l17_n284
-end
-
-def fun_l16_n228()
- fun_l17_n925
-end
-
-def fun_l16_n229()
- fun_l17_n899
-end
-
-def fun_l16_n230()
- fun_l17_n314
-end
-
-def fun_l16_n231()
- fun_l17_n931
-end
-
-def fun_l16_n232()
- fun_l17_n103
-end
-
-def fun_l16_n233()
- fun_l17_n201
-end
-
-def fun_l16_n234()
- fun_l17_n139
-end
-
-def fun_l16_n235()
- fun_l17_n509
-end
-
-def fun_l16_n236()
- fun_l17_n168
-end
-
-def fun_l16_n237()
- fun_l17_n667
-end
-
-def fun_l16_n238()
- fun_l17_n998
-end
-
-def fun_l16_n239()
- fun_l17_n931
-end
-
-def fun_l16_n240()
- fun_l17_n159
-end
-
-def fun_l16_n241()
- fun_l17_n402
-end
-
-def fun_l16_n242()
- fun_l17_n488
-end
-
-def fun_l16_n243()
- fun_l17_n319
-end
-
-def fun_l16_n244()
- fun_l17_n209
-end
-
-def fun_l16_n245()
- fun_l17_n409
-end
-
-def fun_l16_n246()
- fun_l17_n712
-end
-
-def fun_l16_n247()
- fun_l17_n680
-end
-
-def fun_l16_n248()
- fun_l17_n57
-end
-
-def fun_l16_n249()
- fun_l17_n68
-end
-
-def fun_l16_n250()
- fun_l17_n676
-end
-
-def fun_l16_n251()
- fun_l17_n870
-end
-
-def fun_l16_n252()
- fun_l17_n718
-end
-
-def fun_l16_n253()
- fun_l17_n753
-end
-
-def fun_l16_n254()
- fun_l17_n317
-end
-
-def fun_l16_n255()
- fun_l17_n905
-end
-
-def fun_l16_n256()
- fun_l17_n524
-end
-
-def fun_l16_n257()
- fun_l17_n496
-end
-
-def fun_l16_n258()
- fun_l17_n253
-end
-
-def fun_l16_n259()
- fun_l17_n32
-end
-
-def fun_l16_n260()
- fun_l17_n299
-end
-
-def fun_l16_n261()
- fun_l17_n291
-end
-
-def fun_l16_n262()
- fun_l17_n516
-end
-
-def fun_l16_n263()
- fun_l17_n542
-end
-
-def fun_l16_n264()
- fun_l17_n550
-end
-
-def fun_l16_n265()
- fun_l17_n886
-end
-
-def fun_l16_n266()
- fun_l17_n428
-end
-
-def fun_l16_n267()
- fun_l17_n741
-end
-
-def fun_l16_n268()
- fun_l17_n711
-end
-
-def fun_l16_n269()
- fun_l17_n709
-end
-
-def fun_l16_n270()
- fun_l17_n71
-end
-
-def fun_l16_n271()
- fun_l17_n256
-end
-
-def fun_l16_n272()
- fun_l17_n585
-end
-
-def fun_l16_n273()
- fun_l17_n478
-end
-
-def fun_l16_n274()
- fun_l17_n314
-end
-
-def fun_l16_n275()
- fun_l17_n223
-end
-
-def fun_l16_n276()
- fun_l17_n691
-end
-
-def fun_l16_n277()
- fun_l17_n637
-end
-
-def fun_l16_n278()
- fun_l17_n218
-end
-
-def fun_l16_n279()
- fun_l17_n675
-end
-
-def fun_l16_n280()
- fun_l17_n705
-end
-
-def fun_l16_n281()
- fun_l17_n492
-end
-
-def fun_l16_n282()
- fun_l17_n426
-end
-
-def fun_l16_n283()
- fun_l17_n366
-end
-
-def fun_l16_n284()
- fun_l17_n533
-end
-
-def fun_l16_n285()
- fun_l17_n980
-end
-
-def fun_l16_n286()
- fun_l17_n660
-end
-
-def fun_l16_n287()
- fun_l17_n550
-end
-
-def fun_l16_n288()
- fun_l17_n37
-end
-
-def fun_l16_n289()
- fun_l17_n453
-end
-
-def fun_l16_n290()
- fun_l17_n687
-end
-
-def fun_l16_n291()
- fun_l17_n82
-end
-
-def fun_l16_n292()
- fun_l17_n327
-end
-
-def fun_l16_n293()
- fun_l17_n842
-end
-
-def fun_l16_n294()
- fun_l17_n201
-end
-
-def fun_l16_n295()
- fun_l17_n26
-end
-
-def fun_l16_n296()
- fun_l17_n153
-end
-
-def fun_l16_n297()
- fun_l17_n684
-end
-
-def fun_l16_n298()
- fun_l17_n752
-end
-
-def fun_l16_n299()
- fun_l17_n763
-end
-
-def fun_l16_n300()
- fun_l17_n651
-end
-
-def fun_l16_n301()
- fun_l17_n605
-end
-
-def fun_l16_n302()
- fun_l17_n48
-end
-
-def fun_l16_n303()
- fun_l17_n71
-end
-
-def fun_l16_n304()
- fun_l17_n57
-end
-
-def fun_l16_n305()
- fun_l17_n72
-end
-
-def fun_l16_n306()
- fun_l17_n561
-end
-
-def fun_l16_n307()
- fun_l17_n10
-end
-
-def fun_l16_n308()
- fun_l17_n543
-end
-
-def fun_l16_n309()
- fun_l17_n17
-end
-
-def fun_l16_n310()
- fun_l17_n340
-end
-
-def fun_l16_n311()
- fun_l17_n184
-end
-
-def fun_l16_n312()
- fun_l17_n208
-end
-
-def fun_l16_n313()
- fun_l17_n46
-end
-
-def fun_l16_n314()
- fun_l17_n386
-end
-
-def fun_l16_n315()
- fun_l17_n258
-end
-
-def fun_l16_n316()
- fun_l17_n594
-end
-
-def fun_l16_n317()
- fun_l17_n968
-end
-
-def fun_l16_n318()
- fun_l17_n403
-end
-
-def fun_l16_n319()
- fun_l17_n256
-end
-
-def fun_l16_n320()
- fun_l17_n212
-end
-
-def fun_l16_n321()
- fun_l17_n567
-end
-
-def fun_l16_n322()
- fun_l17_n61
-end
-
-def fun_l16_n323()
- fun_l17_n925
-end
-
-def fun_l16_n324()
- fun_l17_n679
-end
-
-def fun_l16_n325()
- fun_l17_n136
-end
-
-def fun_l16_n326()
- fun_l17_n403
-end
-
-def fun_l16_n327()
- fun_l17_n35
-end
-
-def fun_l16_n328()
- fun_l17_n833
-end
-
-def fun_l16_n329()
- fun_l17_n925
-end
-
-def fun_l16_n330()
- fun_l17_n193
-end
-
-def fun_l16_n331()
- fun_l17_n474
-end
-
-def fun_l16_n332()
- fun_l17_n271
-end
-
-def fun_l16_n333()
- fun_l17_n604
-end
-
-def fun_l16_n334()
- fun_l17_n570
-end
-
-def fun_l16_n335()
- fun_l17_n110
-end
-
-def fun_l16_n336()
- fun_l17_n920
-end
-
-def fun_l16_n337()
- fun_l17_n388
-end
-
-def fun_l16_n338()
- fun_l17_n207
-end
-
-def fun_l16_n339()
- fun_l17_n899
-end
-
-def fun_l16_n340()
- fun_l17_n337
-end
-
-def fun_l16_n341()
- fun_l17_n611
-end
-
-def fun_l16_n342()
- fun_l17_n474
-end
-
-def fun_l16_n343()
- fun_l17_n71
-end
-
-def fun_l16_n344()
- fun_l17_n347
-end
-
-def fun_l16_n345()
- fun_l17_n911
-end
-
-def fun_l16_n346()
- fun_l17_n625
-end
-
-def fun_l16_n347()
- fun_l17_n683
-end
-
-def fun_l16_n348()
- fun_l17_n628
-end
-
-def fun_l16_n349()
- fun_l17_n73
-end
-
-def fun_l16_n350()
- fun_l17_n710
-end
-
-def fun_l16_n351()
- fun_l17_n550
-end
-
-def fun_l16_n352()
- fun_l17_n96
-end
-
-def fun_l16_n353()
- fun_l17_n815
-end
-
-def fun_l16_n354()
- fun_l17_n494
-end
-
-def fun_l16_n355()
- fun_l17_n831
-end
-
-def fun_l16_n356()
- fun_l17_n174
-end
-
-def fun_l16_n357()
- fun_l17_n196
-end
-
-def fun_l16_n358()
- fun_l17_n191
-end
-
-def fun_l16_n359()
- fun_l17_n278
-end
-
-def fun_l16_n360()
- fun_l17_n433
-end
-
-def fun_l16_n361()
- fun_l17_n673
-end
-
-def fun_l16_n362()
- fun_l17_n313
-end
-
-def fun_l16_n363()
- fun_l17_n517
-end
-
-def fun_l16_n364()
- fun_l17_n392
-end
-
-def fun_l16_n365()
- fun_l17_n574
-end
-
-def fun_l16_n366()
- fun_l17_n531
-end
-
-def fun_l16_n367()
- fun_l17_n222
-end
-
-def fun_l16_n368()
- fun_l17_n226
-end
-
-def fun_l16_n369()
- fun_l17_n309
-end
-
-def fun_l16_n370()
- fun_l17_n125
-end
-
-def fun_l16_n371()
- fun_l17_n523
-end
-
-def fun_l16_n372()
- fun_l17_n261
-end
-
-def fun_l16_n373()
- fun_l17_n830
-end
-
-def fun_l16_n374()
- fun_l17_n851
-end
-
-def fun_l16_n375()
- fun_l17_n845
-end
-
-def fun_l16_n376()
- fun_l17_n76
-end
-
-def fun_l16_n377()
- fun_l17_n405
-end
-
-def fun_l16_n378()
- fun_l17_n972
-end
-
-def fun_l16_n379()
- fun_l17_n769
-end
-
-def fun_l16_n380()
- fun_l17_n246
-end
-
-def fun_l16_n381()
- fun_l17_n95
-end
-
-def fun_l16_n382()
- fun_l17_n768
-end
-
-def fun_l16_n383()
- fun_l17_n12
-end
-
-def fun_l16_n384()
- fun_l17_n164
-end
-
-def fun_l16_n385()
- fun_l17_n579
-end
-
-def fun_l16_n386()
- fun_l17_n241
-end
-
-def fun_l16_n387()
- fun_l17_n913
-end
-
-def fun_l16_n388()
- fun_l17_n518
-end
-
-def fun_l16_n389()
- fun_l17_n376
-end
-
-def fun_l16_n390()
- fun_l17_n256
-end
-
-def fun_l16_n391()
- fun_l17_n25
-end
-
-def fun_l16_n392()
- fun_l17_n699
-end
-
-def fun_l16_n393()
- fun_l17_n808
-end
-
-def fun_l16_n394()
- fun_l17_n234
-end
-
-def fun_l16_n395()
- fun_l17_n517
-end
-
-def fun_l16_n396()
- fun_l17_n172
-end
-
-def fun_l16_n397()
- fun_l17_n811
-end
-
-def fun_l16_n398()
- fun_l17_n513
-end
-
-def fun_l16_n399()
- fun_l17_n144
-end
-
-def fun_l16_n400()
- fun_l17_n92
-end
-
-def fun_l16_n401()
- fun_l17_n599
-end
-
-def fun_l16_n402()
- fun_l17_n394
-end
-
-def fun_l16_n403()
- fun_l17_n17
-end
-
-def fun_l16_n404()
- fun_l17_n450
-end
-
-def fun_l16_n405()
- fun_l17_n46
-end
-
-def fun_l16_n406()
- fun_l17_n819
-end
-
-def fun_l16_n407()
- fun_l17_n955
-end
-
-def fun_l16_n408()
- fun_l17_n261
-end
-
-def fun_l16_n409()
- fun_l17_n695
-end
-
-def fun_l16_n410()
- fun_l17_n90
-end
-
-def fun_l16_n411()
- fun_l17_n93
-end
-
-def fun_l16_n412()
- fun_l17_n529
-end
-
-def fun_l16_n413()
- fun_l17_n831
-end
-
-def fun_l16_n414()
- fun_l17_n107
-end
-
-def fun_l16_n415()
- fun_l17_n977
-end
-
-def fun_l16_n416()
- fun_l17_n891
-end
-
-def fun_l16_n417()
- fun_l17_n256
-end
-
-def fun_l16_n418()
- fun_l17_n45
-end
-
-def fun_l16_n419()
- fun_l17_n862
-end
-
-def fun_l16_n420()
- fun_l17_n294
-end
-
-def fun_l16_n421()
- fun_l17_n421
-end
-
-def fun_l16_n422()
- fun_l17_n749
-end
-
-def fun_l16_n423()
- fun_l17_n689
-end
-
-def fun_l16_n424()
- fun_l17_n524
-end
-
-def fun_l16_n425()
- fun_l17_n946
-end
-
-def fun_l16_n426()
- fun_l17_n222
-end
-
-def fun_l16_n427()
- fun_l17_n146
-end
-
-def fun_l16_n428()
- fun_l17_n219
-end
-
-def fun_l16_n429()
- fun_l17_n380
-end
-
-def fun_l16_n430()
- fun_l17_n371
-end
-
-def fun_l16_n431()
- fun_l17_n813
-end
-
-def fun_l16_n432()
- fun_l17_n546
-end
-
-def fun_l16_n433()
- fun_l17_n429
-end
-
-def fun_l16_n434()
- fun_l17_n672
-end
-
-def fun_l16_n435()
- fun_l17_n374
-end
-
-def fun_l16_n436()
- fun_l17_n695
-end
-
-def fun_l16_n437()
- fun_l17_n682
-end
-
-def fun_l16_n438()
- fun_l17_n894
-end
-
-def fun_l16_n439()
- fun_l17_n268
-end
-
-def fun_l16_n440()
- fun_l17_n393
-end
-
-def fun_l16_n441()
- fun_l17_n852
-end
-
-def fun_l16_n442()
- fun_l17_n481
-end
-
-def fun_l16_n443()
- fun_l17_n598
-end
-
-def fun_l16_n444()
- fun_l17_n851
-end
-
-def fun_l16_n445()
- fun_l17_n132
-end
-
-def fun_l16_n446()
- fun_l17_n357
-end
-
-def fun_l16_n447()
- fun_l17_n132
-end
-
-def fun_l16_n448()
- fun_l17_n829
-end
-
-def fun_l16_n449()
- fun_l17_n591
-end
-
-def fun_l16_n450()
- fun_l17_n437
-end
-
-def fun_l16_n451()
- fun_l17_n108
-end
-
-def fun_l16_n452()
- fun_l17_n898
-end
-
-def fun_l16_n453()
- fun_l17_n263
-end
-
-def fun_l16_n454()
- fun_l17_n942
-end
-
-def fun_l16_n455()
- fun_l17_n470
-end
-
-def fun_l16_n456()
- fun_l17_n427
-end
-
-def fun_l16_n457()
- fun_l17_n884
-end
-
-def fun_l16_n458()
- fun_l17_n413
-end
-
-def fun_l16_n459()
- fun_l17_n105
-end
-
-def fun_l16_n460()
- fun_l17_n75
-end
-
-def fun_l16_n461()
- fun_l17_n149
-end
-
-def fun_l16_n462()
- fun_l17_n133
-end
-
-def fun_l16_n463()
- fun_l17_n173
-end
-
-def fun_l16_n464()
- fun_l17_n232
-end
-
-def fun_l16_n465()
- fun_l17_n909
-end
-
-def fun_l16_n466()
- fun_l17_n400
-end
-
-def fun_l16_n467()
- fun_l17_n500
-end
-
-def fun_l16_n468()
- fun_l17_n446
-end
-
-def fun_l16_n469()
- fun_l17_n288
-end
-
-def fun_l16_n470()
- fun_l17_n228
-end
-
-def fun_l16_n471()
- fun_l17_n169
-end
-
-def fun_l16_n472()
- fun_l17_n10
-end
-
-def fun_l16_n473()
- fun_l17_n538
-end
-
-def fun_l16_n474()
- fun_l17_n722
-end
-
-def fun_l16_n475()
- fun_l17_n430
-end
-
-def fun_l16_n476()
- fun_l17_n687
-end
-
-def fun_l16_n477()
- fun_l17_n932
-end
-
-def fun_l16_n478()
- fun_l17_n658
-end
-
-def fun_l16_n479()
- fun_l17_n104
-end
-
-def fun_l16_n480()
- fun_l17_n723
-end
-
-def fun_l16_n481()
- fun_l17_n121
-end
-
-def fun_l16_n482()
- fun_l17_n836
-end
-
-def fun_l16_n483()
- fun_l17_n860
-end
-
-def fun_l16_n484()
- fun_l17_n583
-end
-
-def fun_l16_n485()
- fun_l17_n582
-end
-
-def fun_l16_n486()
- fun_l17_n470
-end
-
-def fun_l16_n487()
- fun_l17_n103
-end
-
-def fun_l16_n488()
- fun_l17_n69
-end
-
-def fun_l16_n489()
- fun_l17_n164
-end
-
-def fun_l16_n490()
- fun_l17_n218
-end
-
-def fun_l16_n491()
- fun_l17_n458
-end
-
-def fun_l16_n492()
- fun_l17_n653
-end
-
-def fun_l16_n493()
- fun_l17_n367
-end
-
-def fun_l16_n494()
- fun_l17_n40
-end
-
-def fun_l16_n495()
- fun_l17_n533
-end
-
-def fun_l16_n496()
- fun_l17_n614
-end
-
-def fun_l16_n497()
- fun_l17_n228
-end
-
-def fun_l16_n498()
- fun_l17_n172
-end
-
-def fun_l16_n499()
- fun_l17_n101
-end
-
-def fun_l16_n500()
- fun_l17_n843
-end
-
-def fun_l16_n501()
- fun_l17_n710
-end
-
-def fun_l16_n502()
- fun_l17_n109
-end
-
-def fun_l16_n503()
- fun_l17_n858
-end
-
-def fun_l16_n504()
- fun_l17_n81
-end
-
-def fun_l16_n505()
- fun_l17_n951
-end
-
-def fun_l16_n506()
- fun_l17_n303
-end
-
-def fun_l16_n507()
- fun_l17_n591
-end
-
-def fun_l16_n508()
- fun_l17_n956
-end
-
-def fun_l16_n509()
- fun_l17_n207
-end
-
-def fun_l16_n510()
- fun_l17_n113
-end
-
-def fun_l16_n511()
- fun_l17_n875
-end
-
-def fun_l16_n512()
- fun_l17_n514
-end
-
-def fun_l16_n513()
- fun_l17_n990
-end
-
-def fun_l16_n514()
- fun_l17_n418
-end
-
-def fun_l16_n515()
- fun_l17_n849
-end
-
-def fun_l16_n516()
- fun_l17_n491
-end
-
-def fun_l16_n517()
- fun_l17_n740
-end
-
-def fun_l16_n518()
- fun_l17_n46
-end
-
-def fun_l16_n519()
- fun_l17_n923
-end
-
-def fun_l16_n520()
- fun_l17_n632
-end
-
-def fun_l16_n521()
- fun_l17_n198
-end
-
-def fun_l16_n522()
- fun_l17_n441
-end
-
-def fun_l16_n523()
- fun_l17_n291
-end
-
-def fun_l16_n524()
- fun_l17_n32
-end
-
-def fun_l16_n525()
- fun_l17_n600
-end
-
-def fun_l16_n526()
- fun_l17_n536
-end
-
-def fun_l16_n527()
- fun_l17_n702
-end
-
-def fun_l16_n528()
- fun_l17_n193
-end
-
-def fun_l16_n529()
- fun_l17_n155
-end
-
-def fun_l16_n530()
- fun_l17_n957
-end
-
-def fun_l16_n531()
- fun_l17_n543
-end
-
-def fun_l16_n532()
- fun_l17_n932
-end
-
-def fun_l16_n533()
- fun_l17_n685
-end
-
-def fun_l16_n534()
- fun_l17_n56
-end
-
-def fun_l16_n535()
- fun_l17_n488
-end
-
-def fun_l16_n536()
- fun_l17_n894
-end
-
-def fun_l16_n537()
- fun_l17_n753
-end
-
-def fun_l16_n538()
- fun_l17_n577
-end
-
-def fun_l16_n539()
- fun_l17_n827
-end
-
-def fun_l16_n540()
- fun_l17_n619
-end
-
-def fun_l16_n541()
- fun_l17_n144
-end
-
-def fun_l16_n542()
- fun_l17_n756
-end
-
-def fun_l16_n543()
- fun_l17_n32
-end
-
-def fun_l16_n544()
- fun_l17_n774
-end
-
-def fun_l16_n545()
- fun_l17_n143
-end
-
-def fun_l16_n546()
- fun_l17_n605
-end
-
-def fun_l16_n547()
- fun_l17_n573
-end
-
-def fun_l16_n548()
- fun_l17_n242
-end
-
-def fun_l16_n549()
- fun_l17_n522
-end
-
-def fun_l16_n550()
- fun_l17_n208
-end
-
-def fun_l16_n551()
- fun_l17_n740
-end
-
-def fun_l16_n552()
- fun_l17_n972
-end
-
-def fun_l16_n553()
- fun_l17_n390
-end
-
-def fun_l16_n554()
- fun_l17_n889
-end
-
-def fun_l16_n555()
- fun_l17_n60
-end
-
-def fun_l16_n556()
- fun_l17_n682
-end
-
-def fun_l16_n557()
- fun_l17_n592
-end
-
-def fun_l16_n558()
- fun_l17_n480
-end
-
-def fun_l16_n559()
- fun_l17_n963
-end
-
-def fun_l16_n560()
- fun_l17_n128
-end
-
-def fun_l16_n561()
- fun_l17_n167
-end
-
-def fun_l16_n562()
- fun_l17_n415
-end
-
-def fun_l16_n563()
- fun_l17_n199
-end
-
-def fun_l16_n564()
- fun_l17_n926
-end
-
-def fun_l16_n565()
- fun_l17_n165
-end
-
-def fun_l16_n566()
- fun_l17_n226
-end
-
-def fun_l16_n567()
- fun_l17_n346
-end
-
-def fun_l16_n568()
- fun_l17_n351
-end
-
-def fun_l16_n569()
- fun_l17_n934
-end
-
-def fun_l16_n570()
- fun_l17_n658
-end
-
-def fun_l16_n571()
- fun_l17_n941
-end
-
-def fun_l16_n572()
- fun_l17_n20
-end
-
-def fun_l16_n573()
- fun_l17_n769
-end
-
-def fun_l16_n574()
- fun_l17_n419
-end
-
-def fun_l16_n575()
- fun_l17_n51
-end
-
-def fun_l16_n576()
- fun_l17_n809
-end
-
-def fun_l16_n577()
- fun_l17_n315
-end
-
-def fun_l16_n578()
- fun_l17_n479
-end
-
-def fun_l16_n579()
- fun_l17_n99
-end
-
-def fun_l16_n580()
- fun_l17_n675
-end
-
-def fun_l16_n581()
- fun_l17_n381
-end
-
-def fun_l16_n582()
- fun_l17_n340
-end
-
-def fun_l16_n583()
- fun_l17_n569
-end
-
-def fun_l16_n584()
- fun_l17_n697
-end
-
-def fun_l16_n585()
- fun_l17_n376
-end
-
-def fun_l16_n586()
- fun_l17_n179
-end
-
-def fun_l16_n587()
- fun_l17_n266
-end
-
-def fun_l16_n588()
- fun_l17_n638
-end
-
-def fun_l16_n589()
- fun_l17_n236
-end
-
-def fun_l16_n590()
- fun_l17_n293
-end
-
-def fun_l16_n591()
- fun_l17_n310
-end
-
-def fun_l16_n592()
- fun_l17_n213
-end
-
-def fun_l16_n593()
- fun_l17_n716
-end
-
-def fun_l16_n594()
- fun_l17_n563
-end
-
-def fun_l16_n595()
- fun_l17_n781
-end
-
-def fun_l16_n596()
- fun_l17_n961
-end
-
-def fun_l16_n597()
- fun_l17_n445
-end
-
-def fun_l16_n598()
- fun_l17_n68
-end
-
-def fun_l16_n599()
- fun_l17_n946
-end
-
-def fun_l16_n600()
- fun_l17_n246
-end
-
-def fun_l16_n601()
- fun_l17_n842
-end
-
-def fun_l16_n602()
- fun_l17_n43
-end
-
-def fun_l16_n603()
- fun_l17_n274
-end
-
-def fun_l16_n604()
- fun_l17_n10
-end
-
-def fun_l16_n605()
- fun_l17_n319
-end
-
-def fun_l16_n606()
- fun_l17_n834
-end
-
-def fun_l16_n607()
- fun_l17_n483
-end
-
-def fun_l16_n608()
- fun_l17_n846
-end
-
-def fun_l16_n609()
- fun_l17_n779
-end
-
-def fun_l16_n610()
- fun_l17_n539
-end
-
-def fun_l16_n611()
- fun_l17_n579
-end
-
-def fun_l16_n612()
- fun_l17_n841
-end
-
-def fun_l16_n613()
- fun_l17_n27
-end
-
-def fun_l16_n614()
- fun_l17_n283
-end
-
-def fun_l16_n615()
- fun_l17_n782
-end
-
-def fun_l16_n616()
- fun_l17_n815
-end
-
-def fun_l16_n617()
- fun_l17_n961
-end
-
-def fun_l16_n618()
- fun_l17_n626
-end
-
-def fun_l16_n619()
- fun_l17_n79
-end
-
-def fun_l16_n620()
- fun_l17_n814
-end
-
-def fun_l16_n621()
- fun_l17_n674
-end
-
-def fun_l16_n622()
- fun_l17_n788
-end
-
-def fun_l16_n623()
- fun_l17_n714
-end
-
-def fun_l16_n624()
- fun_l17_n257
-end
-
-def fun_l16_n625()
- fun_l17_n424
-end
-
-def fun_l16_n626()
- fun_l17_n393
-end
-
-def fun_l16_n627()
- fun_l17_n187
-end
-
-def fun_l16_n628()
- fun_l17_n778
-end
-
-def fun_l16_n629()
- fun_l17_n466
-end
-
-def fun_l16_n630()
- fun_l17_n63
-end
-
-def fun_l16_n631()
- fun_l17_n375
-end
-
-def fun_l16_n632()
- fun_l17_n584
-end
-
-def fun_l16_n633()
- fun_l17_n148
-end
-
-def fun_l16_n634()
- fun_l17_n466
-end
-
-def fun_l16_n635()
- fun_l17_n889
-end
-
-def fun_l16_n636()
- fun_l17_n360
-end
-
-def fun_l16_n637()
- fun_l17_n578
-end
-
-def fun_l16_n638()
- fun_l17_n345
-end
-
-def fun_l16_n639()
- fun_l17_n224
-end
-
-def fun_l16_n640()
- fun_l17_n574
-end
-
-def fun_l16_n641()
- fun_l17_n175
-end
-
-def fun_l16_n642()
- fun_l17_n141
-end
-
-def fun_l16_n643()
- fun_l17_n405
-end
-
-def fun_l16_n644()
- fun_l17_n992
-end
-
-def fun_l16_n645()
- fun_l17_n503
-end
-
-def fun_l16_n646()
- fun_l17_n553
-end
-
-def fun_l16_n647()
- fun_l17_n615
-end
-
-def fun_l16_n648()
- fun_l17_n925
-end
-
-def fun_l16_n649()
- fun_l17_n174
-end
-
-def fun_l16_n650()
- fun_l17_n552
-end
-
-def fun_l16_n651()
- fun_l17_n243
-end
-
-def fun_l16_n652()
- fun_l17_n364
-end
-
-def fun_l16_n653()
- fun_l17_n76
-end
-
-def fun_l16_n654()
- fun_l17_n68
-end
-
-def fun_l16_n655()
- fun_l17_n623
-end
-
-def fun_l16_n656()
- fun_l17_n539
-end
-
-def fun_l16_n657()
- fun_l17_n875
-end
-
-def fun_l16_n658()
- fun_l17_n593
-end
-
-def fun_l16_n659()
- fun_l17_n740
-end
-
-def fun_l16_n660()
- fun_l17_n241
-end
-
-def fun_l16_n661()
- fun_l17_n338
-end
-
-def fun_l16_n662()
- fun_l17_n430
-end
-
-def fun_l16_n663()
- fun_l17_n49
-end
-
-def fun_l16_n664()
- fun_l17_n42
-end
-
-def fun_l16_n665()
- fun_l17_n254
-end
-
-def fun_l16_n666()
- fun_l17_n538
-end
-
-def fun_l16_n667()
- fun_l17_n192
-end
-
-def fun_l16_n668()
- fun_l17_n803
-end
-
-def fun_l16_n669()
- fun_l17_n898
-end
-
-def fun_l16_n670()
- fun_l17_n825
-end
-
-def fun_l16_n671()
- fun_l17_n968
-end
-
-def fun_l16_n672()
- fun_l17_n417
-end
-
-def fun_l16_n673()
- fun_l17_n255
-end
-
-def fun_l16_n674()
- fun_l17_n311
-end
-
-def fun_l16_n675()
- fun_l17_n296
-end
-
-def fun_l16_n676()
- fun_l17_n209
-end
-
-def fun_l16_n677()
- fun_l17_n560
-end
-
-def fun_l16_n678()
- fun_l17_n909
-end
-
-def fun_l16_n679()
- fun_l17_n927
-end
-
-def fun_l16_n680()
- fun_l17_n844
-end
-
-def fun_l16_n681()
- fun_l17_n411
-end
-
-def fun_l16_n682()
- fun_l17_n757
-end
-
-def fun_l16_n683()
- fun_l17_n723
-end
-
-def fun_l16_n684()
- fun_l17_n119
-end
-
-def fun_l16_n685()
- fun_l17_n906
-end
-
-def fun_l16_n686()
- fun_l17_n674
-end
-
-def fun_l16_n687()
- fun_l17_n42
-end
-
-def fun_l16_n688()
- fun_l17_n350
-end
-
-def fun_l16_n689()
- fun_l17_n574
-end
-
-def fun_l16_n690()
- fun_l17_n363
-end
-
-def fun_l16_n691()
- fun_l17_n342
-end
-
-def fun_l16_n692()
- fun_l17_n79
-end
-
-def fun_l16_n693()
- fun_l17_n253
-end
-
-def fun_l16_n694()
- fun_l17_n66
-end
-
-def fun_l16_n695()
- fun_l17_n503
-end
-
-def fun_l16_n696()
- fun_l17_n846
-end
-
-def fun_l16_n697()
- fun_l17_n100
-end
-
-def fun_l16_n698()
- fun_l17_n844
-end
-
-def fun_l16_n699()
- fun_l17_n317
-end
-
-def fun_l16_n700()
- fun_l17_n690
-end
-
-def fun_l16_n701()
- fun_l17_n484
-end
-
-def fun_l16_n702()
- fun_l17_n451
-end
-
-def fun_l16_n703()
- fun_l17_n101
-end
-
-def fun_l16_n704()
- fun_l17_n962
-end
-
-def fun_l16_n705()
- fun_l17_n459
-end
-
-def fun_l16_n706()
- fun_l17_n842
-end
-
-def fun_l16_n707()
- fun_l17_n705
-end
-
-def fun_l16_n708()
- fun_l17_n827
-end
-
-def fun_l16_n709()
- fun_l17_n250
-end
-
-def fun_l16_n710()
- fun_l17_n561
-end
-
-def fun_l16_n711()
- fun_l17_n568
-end
-
-def fun_l16_n712()
- fun_l17_n216
-end
-
-def fun_l16_n713()
- fun_l17_n292
-end
-
-def fun_l16_n714()
- fun_l17_n221
-end
-
-def fun_l16_n715()
- fun_l17_n952
-end
-
-def fun_l16_n716()
- fun_l17_n486
-end
-
-def fun_l16_n717()
- fun_l17_n266
-end
-
-def fun_l16_n718()
- fun_l17_n858
-end
-
-def fun_l16_n719()
- fun_l17_n464
-end
-
-def fun_l16_n720()
- fun_l17_n555
-end
-
-def fun_l16_n721()
- fun_l17_n732
-end
-
-def fun_l16_n722()
- fun_l17_n281
-end
-
-def fun_l16_n723()
- fun_l17_n210
-end
-
-def fun_l16_n724()
- fun_l17_n211
-end
-
-def fun_l16_n725()
- fun_l17_n971
-end
-
-def fun_l16_n726()
- fun_l17_n94
-end
-
-def fun_l16_n727()
- fun_l17_n103
-end
-
-def fun_l16_n728()
- fun_l17_n655
-end
-
-def fun_l16_n729()
- fun_l17_n272
-end
-
-def fun_l16_n730()
- fun_l17_n908
-end
-
-def fun_l16_n731()
- fun_l17_n126
-end
-
-def fun_l16_n732()
- fun_l17_n417
-end
-
-def fun_l16_n733()
- fun_l17_n573
-end
-
-def fun_l16_n734()
- fun_l17_n733
-end
-
-def fun_l16_n735()
- fun_l17_n483
-end
-
-def fun_l16_n736()
- fun_l17_n330
-end
-
-def fun_l16_n737()
- fun_l17_n159
-end
-
-def fun_l16_n738()
- fun_l17_n548
-end
-
-def fun_l16_n739()
- fun_l17_n770
-end
-
-def fun_l16_n740()
- fun_l17_n320
-end
-
-def fun_l16_n741()
- fun_l17_n706
-end
-
-def fun_l16_n742()
- fun_l17_n383
-end
-
-def fun_l16_n743()
- fun_l17_n737
-end
-
-def fun_l16_n744()
- fun_l17_n470
-end
-
-def fun_l16_n745()
- fun_l17_n956
-end
-
-def fun_l16_n746()
- fun_l17_n582
-end
-
-def fun_l16_n747()
- fun_l17_n0
-end
-
-def fun_l16_n748()
- fun_l17_n744
-end
-
-def fun_l16_n749()
- fun_l17_n810
-end
-
-def fun_l16_n750()
- fun_l17_n130
-end
-
-def fun_l16_n751()
- fun_l17_n17
-end
-
-def fun_l16_n752()
- fun_l17_n191
-end
-
-def fun_l16_n753()
- fun_l17_n557
-end
-
-def fun_l16_n754()
- fun_l17_n675
-end
-
-def fun_l16_n755()
- fun_l17_n43
-end
-
-def fun_l16_n756()
- fun_l17_n907
-end
-
-def fun_l16_n757()
- fun_l17_n203
-end
-
-def fun_l16_n758()
- fun_l17_n388
-end
-
-def fun_l16_n759()
- fun_l17_n101
-end
-
-def fun_l16_n760()
- fun_l17_n110
-end
-
-def fun_l16_n761()
- fun_l17_n765
-end
-
-def fun_l16_n762()
- fun_l17_n406
-end
-
-def fun_l16_n763()
- fun_l17_n120
-end
-
-def fun_l16_n764()
- fun_l17_n266
-end
-
-def fun_l16_n765()
- fun_l17_n35
-end
-
-def fun_l16_n766()
- fun_l17_n478
-end
-
-def fun_l16_n767()
- fun_l17_n135
-end
-
-def fun_l16_n768()
- fun_l17_n934
-end
-
-def fun_l16_n769()
- fun_l17_n442
-end
-
-def fun_l16_n770()
- fun_l17_n233
-end
-
-def fun_l16_n771()
- fun_l17_n336
-end
-
-def fun_l16_n772()
- fun_l17_n832
-end
-
-def fun_l16_n773()
- fun_l17_n207
-end
-
-def fun_l16_n774()
- fun_l17_n752
-end
-
-def fun_l16_n775()
- fun_l17_n928
-end
-
-def fun_l16_n776()
- fun_l17_n217
-end
-
-def fun_l16_n777()
- fun_l17_n925
-end
-
-def fun_l16_n778()
- fun_l17_n833
-end
-
-def fun_l16_n779()
- fun_l17_n421
-end
-
-def fun_l16_n780()
- fun_l17_n878
-end
-
-def fun_l16_n781()
- fun_l17_n117
-end
-
-def fun_l16_n782()
- fun_l17_n55
-end
-
-def fun_l16_n783()
- fun_l17_n46
-end
-
-def fun_l16_n784()
- fun_l17_n260
-end
-
-def fun_l16_n785()
- fun_l17_n270
-end
-
-def fun_l16_n786()
- fun_l17_n68
-end
-
-def fun_l16_n787()
- fun_l17_n768
-end
-
-def fun_l16_n788()
- fun_l17_n671
-end
-
-def fun_l16_n789()
- fun_l17_n338
-end
-
-def fun_l16_n790()
- fun_l17_n442
-end
-
-def fun_l16_n791()
- fun_l17_n677
-end
-
-def fun_l16_n792()
- fun_l17_n141
-end
-
-def fun_l16_n793()
- fun_l17_n427
-end
-
-def fun_l16_n794()
- fun_l17_n493
-end
-
-def fun_l16_n795()
- fun_l17_n461
-end
-
-def fun_l16_n796()
- fun_l17_n615
-end
-
-def fun_l16_n797()
- fun_l17_n895
-end
-
-def fun_l16_n798()
- fun_l17_n883
-end
-
-def fun_l16_n799()
- fun_l17_n992
-end
-
-def fun_l16_n800()
- fun_l17_n754
-end
-
-def fun_l16_n801()
- fun_l17_n668
-end
-
-def fun_l16_n802()
- fun_l17_n362
-end
-
-def fun_l16_n803()
- fun_l17_n179
-end
-
-def fun_l16_n804()
- fun_l17_n35
-end
-
-def fun_l16_n805()
- fun_l17_n999
-end
-
-def fun_l16_n806()
- fun_l17_n211
-end
-
-def fun_l16_n807()
- fun_l17_n859
-end
-
-def fun_l16_n808()
- fun_l17_n126
-end
-
-def fun_l16_n809()
- fun_l17_n935
-end
-
-def fun_l16_n810()
- fun_l17_n682
-end
-
-def fun_l16_n811()
- fun_l17_n788
-end
-
-def fun_l16_n812()
- fun_l17_n939
-end
-
-def fun_l16_n813()
- fun_l17_n687
-end
-
-def fun_l16_n814()
- fun_l17_n274
-end
-
-def fun_l16_n815()
- fun_l17_n699
-end
-
-def fun_l16_n816()
- fun_l17_n129
-end
-
-def fun_l16_n817()
- fun_l17_n201
-end
-
-def fun_l16_n818()
- fun_l17_n448
-end
-
-def fun_l16_n819()
- fun_l17_n482
-end
-
-def fun_l16_n820()
- fun_l17_n199
-end
-
-def fun_l16_n821()
- fun_l17_n283
-end
-
-def fun_l16_n822()
- fun_l17_n413
-end
-
-def fun_l16_n823()
- fun_l17_n373
-end
-
-def fun_l16_n824()
- fun_l17_n368
-end
-
-def fun_l16_n825()
- fun_l17_n892
-end
-
-def fun_l16_n826()
- fun_l17_n40
-end
-
-def fun_l16_n827()
- fun_l17_n258
-end
-
-def fun_l16_n828()
- fun_l17_n218
-end
-
-def fun_l16_n829()
- fun_l17_n647
-end
-
-def fun_l16_n830()
- fun_l17_n429
-end
-
-def fun_l16_n831()
- fun_l17_n524
-end
-
-def fun_l16_n832()
- fun_l17_n424
-end
-
-def fun_l16_n833()
- fun_l17_n755
-end
-
-def fun_l16_n834()
- fun_l17_n82
-end
-
-def fun_l16_n835()
- fun_l17_n109
-end
-
-def fun_l16_n836()
- fun_l17_n399
-end
-
-def fun_l16_n837()
- fun_l17_n829
-end
-
-def fun_l16_n838()
- fun_l17_n26
-end
-
-def fun_l16_n839()
- fun_l17_n537
-end
-
-def fun_l16_n840()
- fun_l17_n969
-end
-
-def fun_l16_n841()
- fun_l17_n248
-end
-
-def fun_l16_n842()
- fun_l17_n178
-end
-
-def fun_l16_n843()
- fun_l17_n816
-end
-
-def fun_l16_n844()
- fun_l17_n925
-end
-
-def fun_l16_n845()
- fun_l17_n388
-end
-
-def fun_l16_n846()
- fun_l17_n923
-end
-
-def fun_l16_n847()
- fun_l17_n386
-end
-
-def fun_l16_n848()
- fun_l17_n940
-end
-
-def fun_l16_n849()
- fun_l17_n831
-end
-
-def fun_l16_n850()
- fun_l17_n771
-end
-
-def fun_l16_n851()
- fun_l17_n45
-end
-
-def fun_l16_n852()
- fun_l17_n18
-end
-
-def fun_l16_n853()
- fun_l17_n435
-end
-
-def fun_l16_n854()
- fun_l17_n397
-end
-
-def fun_l16_n855()
- fun_l17_n656
-end
-
-def fun_l16_n856()
- fun_l17_n72
-end
-
-def fun_l16_n857()
- fun_l17_n531
-end
-
-def fun_l16_n858()
- fun_l17_n790
-end
-
-def fun_l16_n859()
- fun_l17_n25
-end
-
-def fun_l16_n860()
- fun_l17_n926
-end
-
-def fun_l16_n861()
- fun_l17_n474
-end
-
-def fun_l16_n862()
- fun_l17_n888
-end
-
-def fun_l16_n863()
- fun_l17_n110
-end
-
-def fun_l16_n864()
- fun_l17_n561
-end
-
-def fun_l16_n865()
- fun_l17_n59
-end
-
-def fun_l16_n866()
- fun_l17_n611
-end
-
-def fun_l16_n867()
- fun_l17_n436
-end
-
-def fun_l16_n868()
- fun_l17_n851
-end
-
-def fun_l16_n869()
- fun_l17_n714
-end
-
-def fun_l16_n870()
- fun_l17_n423
-end
-
-def fun_l16_n871()
- fun_l17_n884
-end
-
-def fun_l16_n872()
- fun_l17_n230
-end
-
-def fun_l16_n873()
- fun_l17_n988
-end
-
-def fun_l16_n874()
- fun_l17_n763
-end
-
-def fun_l16_n875()
- fun_l17_n929
-end
-
-def fun_l16_n876()
- fun_l17_n521
-end
-
-def fun_l16_n877()
- fun_l17_n262
-end
-
-def fun_l16_n878()
- fun_l17_n774
-end
-
-def fun_l16_n879()
- fun_l17_n358
-end
-
-def fun_l16_n880()
- fun_l17_n861
-end
-
-def fun_l16_n881()
- fun_l17_n984
-end
-
-def fun_l16_n882()
- fun_l17_n272
-end
-
-def fun_l16_n883()
- fun_l17_n293
-end
-
-def fun_l16_n884()
- fun_l17_n525
-end
-
-def fun_l16_n885()
- fun_l17_n226
-end
-
-def fun_l16_n886()
- fun_l17_n941
-end
-
-def fun_l16_n887()
- fun_l17_n671
-end
-
-def fun_l16_n888()
- fun_l17_n960
-end
-
-def fun_l16_n889()
- fun_l17_n218
-end
-
-def fun_l16_n890()
- fun_l17_n475
-end
-
-def fun_l16_n891()
- fun_l17_n300
-end
-
-def fun_l16_n892()
- fun_l17_n908
-end
-
-def fun_l16_n893()
- fun_l17_n739
-end
-
-def fun_l16_n894()
- fun_l17_n878
-end
-
-def fun_l16_n895()
- fun_l17_n906
-end
-
-def fun_l16_n896()
- fun_l17_n944
-end
-
-def fun_l16_n897()
- fun_l17_n302
-end
-
-def fun_l16_n898()
- fun_l17_n486
-end
-
-def fun_l16_n899()
- fun_l17_n135
-end
-
-def fun_l16_n900()
- fun_l17_n470
-end
-
-def fun_l16_n901()
- fun_l17_n895
-end
-
-def fun_l16_n902()
- fun_l17_n333
-end
-
-def fun_l16_n903()
- fun_l17_n310
-end
-
-def fun_l16_n904()
- fun_l17_n229
-end
-
-def fun_l16_n905()
- fun_l17_n315
-end
-
-def fun_l16_n906()
- fun_l17_n333
-end
-
-def fun_l16_n907()
- fun_l17_n563
-end
-
-def fun_l16_n908()
- fun_l17_n558
-end
-
-def fun_l16_n909()
- fun_l17_n580
-end
-
-def fun_l16_n910()
- fun_l17_n916
-end
-
-def fun_l16_n911()
- fun_l17_n378
-end
-
-def fun_l16_n912()
- fun_l17_n882
-end
-
-def fun_l16_n913()
- fun_l17_n28
-end
-
-def fun_l16_n914()
- fun_l17_n767
-end
-
-def fun_l16_n915()
- fun_l17_n105
-end
-
-def fun_l16_n916()
- fun_l17_n463
-end
-
-def fun_l16_n917()
- fun_l17_n92
-end
-
-def fun_l16_n918()
- fun_l17_n722
-end
-
-def fun_l16_n919()
- fun_l17_n403
-end
-
-def fun_l16_n920()
- fun_l17_n771
-end
-
-def fun_l16_n921()
- fun_l17_n818
-end
-
-def fun_l16_n922()
- fun_l17_n214
-end
-
-def fun_l16_n923()
- fun_l17_n167
-end
-
-def fun_l16_n924()
- fun_l17_n189
-end
-
-def fun_l16_n925()
- fun_l17_n401
-end
-
-def fun_l16_n926()
- fun_l17_n377
-end
-
-def fun_l16_n927()
- fun_l17_n980
-end
-
-def fun_l16_n928()
- fun_l17_n476
-end
-
-def fun_l16_n929()
- fun_l17_n321
-end
-
-def fun_l16_n930()
- fun_l17_n485
-end
-
-def fun_l16_n931()
- fun_l17_n902
-end
-
-def fun_l16_n932()
- fun_l17_n269
-end
-
-def fun_l16_n933()
- fun_l17_n806
-end
-
-def fun_l16_n934()
- fun_l17_n952
-end
-
-def fun_l16_n935()
- fun_l17_n401
-end
-
-def fun_l16_n936()
- fun_l17_n416
-end
-
-def fun_l16_n937()
- fun_l17_n739
-end
-
-def fun_l16_n938()
- fun_l17_n47
-end
-
-def fun_l16_n939()
- fun_l17_n556
-end
-
-def fun_l16_n940()
- fun_l17_n426
-end
-
-def fun_l16_n941()
- fun_l17_n474
-end
-
-def fun_l16_n942()
- fun_l17_n393
-end
-
-def fun_l16_n943()
- fun_l17_n492
-end
-
-def fun_l16_n944()
- fun_l17_n528
-end
-
-def fun_l16_n945()
- fun_l17_n66
-end
-
-def fun_l16_n946()
- fun_l17_n587
-end
-
-def fun_l16_n947()
- fun_l17_n116
-end
-
-def fun_l16_n948()
- fun_l17_n205
-end
-
-def fun_l16_n949()
- fun_l17_n958
-end
-
-def fun_l16_n950()
- fun_l17_n264
-end
-
-def fun_l16_n951()
- fun_l17_n78
-end
-
-def fun_l16_n952()
- fun_l17_n990
-end
-
-def fun_l16_n953()
- fun_l17_n154
-end
-
-def fun_l16_n954()
- fun_l17_n213
-end
-
-def fun_l16_n955()
- fun_l17_n979
-end
-
-def fun_l16_n956()
- fun_l17_n632
-end
-
-def fun_l16_n957()
- fun_l17_n292
-end
-
-def fun_l16_n958()
- fun_l17_n719
-end
-
-def fun_l16_n959()
- fun_l17_n320
-end
-
-def fun_l16_n960()
- fun_l17_n448
-end
-
-def fun_l16_n961()
- fun_l17_n532
-end
-
-def fun_l16_n962()
- fun_l17_n662
-end
-
-def fun_l16_n963()
- fun_l17_n423
-end
-
-def fun_l16_n964()
- fun_l17_n193
-end
-
-def fun_l16_n965()
- fun_l17_n475
-end
-
-def fun_l16_n966()
- fun_l17_n168
-end
-
-def fun_l16_n967()
- fun_l17_n92
-end
-
-def fun_l16_n968()
- fun_l17_n925
-end
-
-def fun_l16_n969()
- fun_l17_n138
-end
-
-def fun_l16_n970()
- fun_l17_n673
-end
-
-def fun_l16_n971()
- fun_l17_n697
-end
-
-def fun_l16_n972()
- fun_l17_n438
-end
-
-def fun_l16_n973()
- fun_l17_n114
-end
-
-def fun_l16_n974()
- fun_l17_n40
-end
-
-def fun_l16_n975()
- fun_l17_n344
-end
-
-def fun_l16_n976()
- fun_l17_n568
-end
-
-def fun_l16_n977()
- fun_l17_n350
-end
-
-def fun_l16_n978()
- fun_l17_n873
-end
-
-def fun_l16_n979()
- fun_l17_n719
-end
-
-def fun_l16_n980()
- fun_l17_n631
-end
-
-def fun_l16_n981()
- fun_l17_n848
-end
-
-def fun_l16_n982()
- fun_l17_n912
-end
-
-def fun_l16_n983()
- fun_l17_n872
-end
-
-def fun_l16_n984()
- fun_l17_n290
-end
-
-def fun_l16_n985()
- fun_l17_n416
-end
-
-def fun_l16_n986()
- fun_l17_n552
-end
-
-def fun_l16_n987()
- fun_l17_n458
-end
-
-def fun_l16_n988()
- fun_l17_n808
-end
-
-def fun_l16_n989()
- fun_l17_n953
-end
-
-def fun_l16_n990()
- fun_l17_n136
-end
-
-def fun_l16_n991()
- fun_l17_n798
-end
-
-def fun_l16_n992()
- fun_l17_n419
-end
-
-def fun_l16_n993()
- fun_l17_n293
-end
-
-def fun_l16_n994()
- fun_l17_n663
-end
-
-def fun_l16_n995()
- fun_l17_n533
-end
-
-def fun_l16_n996()
- fun_l17_n625
-end
-
-def fun_l16_n997()
- fun_l17_n215
-end
-
-def fun_l16_n998()
- fun_l17_n954
-end
-
-def fun_l16_n999()
- fun_l17_n797
-end
-
-def fun_l17_n0()
- fun_l18_n287
-end
-
-def fun_l17_n1()
- fun_l18_n242
-end
-
-def fun_l17_n2()
- fun_l18_n595
-end
-
-def fun_l17_n3()
- fun_l18_n801
-end
-
-def fun_l17_n4()
- fun_l18_n367
-end
-
-def fun_l17_n5()
- fun_l18_n21
-end
-
-def fun_l17_n6()
- fun_l18_n439
-end
-
-def fun_l17_n7()
- fun_l18_n96
-end
-
-def fun_l17_n8()
- fun_l18_n500
-end
-
-def fun_l17_n9()
- fun_l18_n332
-end
-
-def fun_l17_n10()
- fun_l18_n374
-end
-
-def fun_l17_n11()
- fun_l18_n338
-end
-
-def fun_l17_n12()
- fun_l18_n737
-end
-
-def fun_l17_n13()
- fun_l18_n437
-end
-
-def fun_l17_n14()
- fun_l18_n442
-end
-
-def fun_l17_n15()
- fun_l18_n309
-end
-
-def fun_l17_n16()
- fun_l18_n173
-end
-
-def fun_l17_n17()
- fun_l18_n615
-end
-
-def fun_l17_n18()
- fun_l18_n881
-end
-
-def fun_l17_n19()
- fun_l18_n629
-end
-
-def fun_l17_n20()
- fun_l18_n304
-end
-
-def fun_l17_n21()
- fun_l18_n788
-end
-
-def fun_l17_n22()
- fun_l18_n425
-end
-
-def fun_l17_n23()
- fun_l18_n376
-end
-
-def fun_l17_n24()
- fun_l18_n353
-end
-
-def fun_l17_n25()
- fun_l18_n273
-end
-
-def fun_l17_n26()
- fun_l18_n337
-end
-
-def fun_l17_n27()
- fun_l18_n588
-end
-
-def fun_l17_n28()
- fun_l18_n64
-end
-
-def fun_l17_n29()
- fun_l18_n651
-end
-
-def fun_l17_n30()
- fun_l18_n91
-end
-
-def fun_l17_n31()
- fun_l18_n392
-end
-
-def fun_l17_n32()
- fun_l18_n65
-end
-
-def fun_l17_n33()
- fun_l18_n166
-end
-
-def fun_l17_n34()
- fun_l18_n917
-end
-
-def fun_l17_n35()
- fun_l18_n217
-end
-
-def fun_l17_n36()
- fun_l18_n416
-end
-
-def fun_l17_n37()
- fun_l18_n977
-end
-
-def fun_l17_n38()
- fun_l18_n76
-end
-
-def fun_l17_n39()
- fun_l18_n322
-end
-
-def fun_l17_n40()
- fun_l18_n253
-end
-
-def fun_l17_n41()
- fun_l18_n192
-end
-
-def fun_l17_n42()
- fun_l18_n883
-end
-
-def fun_l17_n43()
- fun_l18_n132
-end
-
-def fun_l17_n44()
- fun_l18_n480
-end
-
-def fun_l17_n45()
- fun_l18_n36
-end
-
-def fun_l17_n46()
- fun_l18_n142
-end
-
-def fun_l17_n47()
- fun_l18_n172
-end
-
-def fun_l17_n48()
- fun_l18_n339
-end
-
-def fun_l17_n49()
- fun_l18_n664
-end
-
-def fun_l17_n50()
- fun_l18_n482
-end
-
-def fun_l17_n51()
- fun_l18_n809
-end
-
-def fun_l17_n52()
- fun_l18_n525
-end
-
-def fun_l17_n53()
- fun_l18_n50
-end
-
-def fun_l17_n54()
- fun_l18_n977
-end
-
-def fun_l17_n55()
- fun_l18_n730
-end
-
-def fun_l17_n56()
- fun_l18_n565
-end
-
-def fun_l17_n57()
- fun_l18_n997
-end
-
-def fun_l17_n58()
- fun_l18_n811
-end
-
-def fun_l17_n59()
- fun_l18_n898
-end
-
-def fun_l17_n60()
- fun_l18_n627
-end
-
-def fun_l17_n61()
- fun_l18_n539
-end
-
-def fun_l17_n62()
- fun_l18_n877
-end
-
-def fun_l17_n63()
- fun_l18_n428
-end
-
-def fun_l17_n64()
- fun_l18_n779
-end
-
-def fun_l17_n65()
- fun_l18_n14
-end
-
-def fun_l17_n66()
- fun_l18_n202
-end
-
-def fun_l17_n67()
- fun_l18_n23
-end
-
-def fun_l17_n68()
- fun_l18_n861
-end
-
-def fun_l17_n69()
- fun_l18_n356
-end
-
-def fun_l17_n70()
- fun_l18_n997
-end
-
-def fun_l17_n71()
- fun_l18_n130
-end
-
-def fun_l17_n72()
- fun_l18_n462
-end
-
-def fun_l17_n73()
- fun_l18_n590
-end
-
-def fun_l17_n74()
- fun_l18_n544
-end
-
-def fun_l17_n75()
- fun_l18_n571
-end
-
-def fun_l17_n76()
- fun_l18_n336
-end
-
-def fun_l17_n77()
- fun_l18_n154
-end
-
-def fun_l17_n78()
- fun_l18_n18
-end
-
-def fun_l17_n79()
- fun_l18_n911
-end
-
-def fun_l17_n80()
- fun_l18_n980
-end
-
-def fun_l17_n81()
- fun_l18_n156
-end
-
-def fun_l17_n82()
- fun_l18_n487
-end
-
-def fun_l17_n83()
- fun_l18_n292
-end
-
-def fun_l17_n84()
- fun_l18_n709
-end
-
-def fun_l17_n85()
- fun_l18_n557
-end
-
-def fun_l17_n86()
- fun_l18_n910
-end
-
-def fun_l17_n87()
- fun_l18_n121
-end
-
-def fun_l17_n88()
- fun_l18_n706
-end
-
-def fun_l17_n89()
- fun_l18_n949
-end
-
-def fun_l17_n90()
- fun_l18_n529
-end
-
-def fun_l17_n91()
- fun_l18_n778
-end
-
-def fun_l17_n92()
- fun_l18_n682
-end
-
-def fun_l17_n93()
- fun_l18_n743
-end
-
-def fun_l17_n94()
- fun_l18_n714
-end
-
-def fun_l17_n95()
- fun_l18_n749
-end
-
-def fun_l17_n96()
- fun_l18_n453
-end
-
-def fun_l17_n97()
- fun_l18_n248
-end
-
-def fun_l17_n98()
- fun_l18_n315
-end
-
-def fun_l17_n99()
- fun_l18_n534
-end
-
-def fun_l17_n100()
- fun_l18_n391
-end
-
-def fun_l17_n101()
- fun_l18_n515
-end
-
-def fun_l17_n102()
- fun_l18_n495
-end
-
-def fun_l17_n103()
- fun_l18_n776
-end
-
-def fun_l17_n104()
- fun_l18_n957
-end
-
-def fun_l17_n105()
- fun_l18_n982
-end
-
-def fun_l17_n106()
- fun_l18_n401
-end
-
-def fun_l17_n107()
- fun_l18_n230
-end
-
-def fun_l17_n108()
- fun_l18_n13
-end
-
-def fun_l17_n109()
- fun_l18_n318
-end
-
-def fun_l17_n110()
- fun_l18_n275
-end
-
-def fun_l17_n111()
- fun_l18_n155
-end
-
-def fun_l17_n112()
- fun_l18_n86
-end
-
-def fun_l17_n113()
- fun_l18_n573
-end
-
-def fun_l17_n114()
- fun_l18_n124
-end
-
-def fun_l17_n115()
- fun_l18_n694
-end
-
-def fun_l17_n116()
- fun_l18_n929
-end
-
-def fun_l17_n117()
- fun_l18_n177
-end
-
-def fun_l17_n118()
- fun_l18_n510
-end
-
-def fun_l17_n119()
- fun_l18_n143
-end
-
-def fun_l17_n120()
- fun_l18_n358
-end
-
-def fun_l17_n121()
- fun_l18_n739
-end
-
-def fun_l17_n122()
- fun_l18_n463
-end
-
-def fun_l17_n123()
- fun_l18_n343
-end
-
-def fun_l17_n124()
- fun_l18_n714
-end
-
-def fun_l17_n125()
- fun_l18_n53
-end
-
-def fun_l17_n126()
- fun_l18_n375
-end
-
-def fun_l17_n127()
- fun_l18_n870
-end
-
-def fun_l17_n128()
- fun_l18_n555
-end
-
-def fun_l17_n129()
- fun_l18_n773
-end
-
-def fun_l17_n130()
- fun_l18_n309
-end
-
-def fun_l17_n131()
- fun_l18_n50
-end
-
-def fun_l17_n132()
- fun_l18_n408
-end
-
-def fun_l17_n133()
- fun_l18_n339
-end
-
-def fun_l17_n134()
- fun_l18_n952
-end
-
-def fun_l17_n135()
- fun_l18_n599
-end
-
-def fun_l17_n136()
- fun_l18_n280
-end
-
-def fun_l17_n137()
- fun_l18_n922
-end
-
-def fun_l17_n138()
- fun_l18_n132
-end
-
-def fun_l17_n139()
- fun_l18_n224
-end
-
-def fun_l17_n140()
- fun_l18_n841
-end
-
-def fun_l17_n141()
- fun_l18_n84
-end
-
-def fun_l17_n142()
- fun_l18_n697
-end
-
-def fun_l17_n143()
- fun_l18_n60
-end
-
-def fun_l17_n144()
- fun_l18_n479
-end
-
-def fun_l17_n145()
- fun_l18_n671
-end
-
-def fun_l17_n146()
- fun_l18_n422
-end
-
-def fun_l17_n147()
- fun_l18_n255
-end
-
-def fun_l17_n148()
- fun_l18_n615
-end
-
-def fun_l17_n149()
- fun_l18_n878
-end
-
-def fun_l17_n150()
- fun_l18_n402
-end
-
-def fun_l17_n151()
- fun_l18_n134
-end
-
-def fun_l17_n152()
- fun_l18_n493
-end
-
-def fun_l17_n153()
- fun_l18_n347
-end
-
-def fun_l17_n154()
- fun_l18_n679
-end
-
-def fun_l17_n155()
- fun_l18_n477
-end
-
-def fun_l17_n156()
- fun_l18_n56
-end
-
-def fun_l17_n157()
- fun_l18_n43
-end
-
-def fun_l17_n158()
- fun_l18_n928
-end
-
-def fun_l17_n159()
- fun_l18_n190
-end
-
-def fun_l17_n160()
- fun_l18_n402
-end
-
-def fun_l17_n161()
- fun_l18_n894
-end
-
-def fun_l17_n162()
- fun_l18_n869
-end
-
-def fun_l17_n163()
- fun_l18_n36
-end
-
-def fun_l17_n164()
- fun_l18_n635
-end
-
-def fun_l17_n165()
- fun_l18_n414
-end
-
-def fun_l17_n166()
- fun_l18_n744
-end
-
-def fun_l17_n167()
- fun_l18_n87
-end
-
-def fun_l17_n168()
- fun_l18_n531
-end
-
-def fun_l17_n169()
- fun_l18_n923
-end
-
-def fun_l17_n170()
- fun_l18_n815
-end
-
-def fun_l17_n171()
- fun_l18_n27
-end
-
-def fun_l17_n172()
- fun_l18_n194
-end
-
-def fun_l17_n173()
- fun_l18_n456
-end
-
-def fun_l17_n174()
- fun_l18_n275
-end
-
-def fun_l17_n175()
- fun_l18_n48
-end
-
-def fun_l17_n176()
- fun_l18_n230
-end
-
-def fun_l17_n177()
- fun_l18_n806
-end
-
-def fun_l17_n178()
- fun_l18_n851
-end
-
-def fun_l17_n179()
- fun_l18_n76
-end
-
-def fun_l17_n180()
- fun_l18_n925
-end
-
-def fun_l17_n181()
- fun_l18_n680
-end
-
-def fun_l17_n182()
- fun_l18_n547
-end
-
-def fun_l17_n183()
- fun_l18_n439
-end
-
-def fun_l17_n184()
- fun_l18_n642
-end
-
-def fun_l17_n185()
- fun_l18_n249
-end
-
-def fun_l17_n186()
- fun_l18_n92
-end
-
-def fun_l17_n187()
- fun_l18_n727
-end
-
-def fun_l17_n188()
- fun_l18_n358
-end
-
-def fun_l17_n189()
- fun_l18_n874
-end
-
-def fun_l17_n190()
- fun_l18_n357
-end
-
-def fun_l17_n191()
- fun_l18_n773
-end
-
-def fun_l17_n192()
- fun_l18_n487
-end
-
-def fun_l17_n193()
- fun_l18_n985
-end
-
-def fun_l17_n194()
- fun_l18_n771
-end
-
-def fun_l17_n195()
- fun_l18_n918
-end
-
-def fun_l17_n196()
- fun_l18_n768
-end
-
-def fun_l17_n197()
- fun_l18_n275
-end
-
-def fun_l17_n198()
- fun_l18_n72
-end
-
-def fun_l17_n199()
- fun_l18_n288
-end
-
-def fun_l17_n200()
- fun_l18_n187
-end
-
-def fun_l17_n201()
- fun_l18_n905
-end
-
-def fun_l17_n202()
- fun_l18_n61
-end
-
-def fun_l17_n203()
- fun_l18_n845
-end
-
-def fun_l17_n204()
- fun_l18_n390
-end
-
-def fun_l17_n205()
- fun_l18_n501
-end
-
-def fun_l17_n206()
- fun_l18_n820
-end
-
-def fun_l17_n207()
- fun_l18_n889
-end
-
-def fun_l17_n208()
- fun_l18_n746
-end
-
-def fun_l17_n209()
- fun_l18_n640
-end
-
-def fun_l17_n210()
- fun_l18_n974
-end
-
-def fun_l17_n211()
- fun_l18_n128
-end
-
-def fun_l17_n212()
- fun_l18_n227
-end
-
-def fun_l17_n213()
- fun_l18_n646
-end
-
-def fun_l17_n214()
- fun_l18_n55
-end
-
-def fun_l17_n215()
- fun_l18_n989
-end
-
-def fun_l17_n216()
- fun_l18_n417
-end
-
-def fun_l17_n217()
- fun_l18_n85
-end
-
-def fun_l17_n218()
- fun_l18_n477
-end
-
-def fun_l17_n219()
- fun_l18_n442
-end
-
-def fun_l17_n220()
- fun_l18_n804
-end
-
-def fun_l17_n221()
- fun_l18_n135
-end
-
-def fun_l17_n222()
- fun_l18_n347
-end
-
-def fun_l17_n223()
- fun_l18_n34
-end
-
-def fun_l17_n224()
- fun_l18_n534
-end
-
-def fun_l17_n225()
- fun_l18_n789
-end
-
-def fun_l17_n226()
- fun_l18_n938
-end
-
-def fun_l17_n227()
- fun_l18_n777
-end
-
-def fun_l17_n228()
- fun_l18_n247
-end
-
-def fun_l17_n229()
- fun_l18_n935
-end
-
-def fun_l17_n230()
- fun_l18_n406
-end
-
-def fun_l17_n231()
- fun_l18_n0
-end
-
-def fun_l17_n232()
- fun_l18_n530
-end
-
-def fun_l17_n233()
- fun_l18_n994
-end
-
-def fun_l17_n234()
- fun_l18_n818
-end
-
-def fun_l17_n235()
- fun_l18_n941
-end
-
-def fun_l17_n236()
- fun_l18_n687
-end
-
-def fun_l17_n237()
- fun_l18_n372
-end
-
-def fun_l17_n238()
- fun_l18_n344
-end
-
-def fun_l17_n239()
- fun_l18_n336
-end
-
-def fun_l17_n240()
- fun_l18_n870
-end
-
-def fun_l17_n241()
- fun_l18_n694
-end
-
-def fun_l17_n242()
- fun_l18_n233
-end
-
-def fun_l17_n243()
- fun_l18_n301
-end
-
-def fun_l17_n244()
- fun_l18_n425
-end
-
-def fun_l17_n245()
- fun_l18_n334
-end
-
-def fun_l17_n246()
- fun_l18_n848
-end
-
-def fun_l17_n247()
- fun_l18_n27
-end
-
-def fun_l17_n248()
- fun_l18_n964
-end
-
-def fun_l17_n249()
- fun_l18_n953
-end
-
-def fun_l17_n250()
- fun_l18_n4
-end
-
-def fun_l17_n251()
- fun_l18_n504
-end
-
-def fun_l17_n252()
- fun_l18_n165
-end
-
-def fun_l17_n253()
- fun_l18_n401
-end
-
-def fun_l17_n254()
- fun_l18_n267
-end
-
-def fun_l17_n255()
- fun_l18_n966
-end
-
-def fun_l17_n256()
- fun_l18_n854
-end
-
-def fun_l17_n257()
- fun_l18_n927
-end
-
-def fun_l17_n258()
- fun_l18_n476
-end
-
-def fun_l17_n259()
- fun_l18_n274
-end
-
-def fun_l17_n260()
- fun_l18_n711
-end
-
-def fun_l17_n261()
- fun_l18_n96
-end
-
-def fun_l17_n262()
- fun_l18_n901
-end
-
-def fun_l17_n263()
- fun_l18_n601
-end
-
-def fun_l17_n264()
- fun_l18_n495
-end
-
-def fun_l17_n265()
- fun_l18_n672
-end
-
-def fun_l17_n266()
- fun_l18_n946
-end
-
-def fun_l17_n267()
- fun_l18_n91
-end
-
-def fun_l17_n268()
- fun_l18_n547
-end
-
-def fun_l17_n269()
- fun_l18_n977
-end
-
-def fun_l17_n270()
- fun_l18_n113
-end
-
-def fun_l17_n271()
- fun_l18_n818
-end
-
-def fun_l17_n272()
- fun_l18_n370
-end
-
-def fun_l17_n273()
- fun_l18_n940
-end
-
-def fun_l17_n274()
- fun_l18_n892
-end
-
-def fun_l17_n275()
- fun_l18_n501
-end
-
-def fun_l17_n276()
- fun_l18_n252
-end
-
-def fun_l17_n277()
- fun_l18_n720
-end
-
-def fun_l17_n278()
- fun_l18_n12
-end
-
-def fun_l17_n279()
- fun_l18_n318
-end
-
-def fun_l17_n280()
- fun_l18_n536
-end
-
-def fun_l17_n281()
- fun_l18_n344
-end
-
-def fun_l17_n282()
- fun_l18_n613
-end
-
-def fun_l17_n283()
- fun_l18_n198
-end
-
-def fun_l17_n284()
- fun_l18_n153
-end
-
-def fun_l17_n285()
- fun_l18_n118
-end
-
-def fun_l17_n286()
- fun_l18_n694
-end
-
-def fun_l17_n287()
- fun_l18_n402
-end
-
-def fun_l17_n288()
- fun_l18_n609
-end
-
-def fun_l17_n289()
- fun_l18_n334
-end
-
-def fun_l17_n290()
- fun_l18_n266
-end
-
-def fun_l17_n291()
- fun_l18_n235
-end
-
-def fun_l17_n292()
- fun_l18_n942
-end
-
-def fun_l17_n293()
- fun_l18_n165
-end
-
-def fun_l17_n294()
- fun_l18_n443
-end
-
-def fun_l17_n295()
- fun_l18_n837
-end
-
-def fun_l17_n296()
- fun_l18_n329
-end
-
-def fun_l17_n297()
- fun_l18_n64
-end
-
-def fun_l17_n298()
- fun_l18_n469
-end
-
-def fun_l17_n299()
- fun_l18_n557
-end
-
-def fun_l17_n300()
- fun_l18_n158
-end
-
-def fun_l17_n301()
- fun_l18_n250
-end
-
-def fun_l17_n302()
- fun_l18_n733
-end
-
-def fun_l17_n303()
- fun_l18_n491
-end
-
-def fun_l17_n304()
- fun_l18_n966
-end
-
-def fun_l17_n305()
- fun_l18_n210
-end
-
-def fun_l17_n306()
- fun_l18_n118
-end
-
-def fun_l17_n307()
- fun_l18_n394
-end
-
-def fun_l17_n308()
- fun_l18_n421
-end
-
-def fun_l17_n309()
- fun_l18_n559
-end
-
-def fun_l17_n310()
- fun_l18_n386
-end
-
-def fun_l17_n311()
- fun_l18_n350
-end
-
-def fun_l17_n312()
- fun_l18_n527
-end
-
-def fun_l17_n313()
- fun_l18_n539
-end
-
-def fun_l17_n314()
- fun_l18_n468
-end
-
-def fun_l17_n315()
- fun_l18_n533
-end
-
-def fun_l17_n316()
- fun_l18_n607
-end
-
-def fun_l17_n317()
- fun_l18_n410
-end
-
-def fun_l17_n318()
- fun_l18_n391
-end
-
-def fun_l17_n319()
- fun_l18_n709
-end
-
-def fun_l17_n320()
- fun_l18_n131
-end
-
-def fun_l17_n321()
- fun_l18_n401
-end
-
-def fun_l17_n322()
- fun_l18_n249
-end
-
-def fun_l17_n323()
- fun_l18_n459
-end
-
-def fun_l17_n324()
- fun_l18_n111
-end
-
-def fun_l17_n325()
- fun_l18_n539
-end
-
-def fun_l17_n326()
- fun_l18_n493
-end
-
-def fun_l17_n327()
- fun_l18_n415
-end
-
-def fun_l17_n328()
- fun_l18_n334
-end
-
-def fun_l17_n329()
- fun_l18_n784
-end
-
-def fun_l17_n330()
- fun_l18_n45
-end
-
-def fun_l17_n331()
- fun_l18_n820
-end
-
-def fun_l17_n332()
- fun_l18_n892
-end
-
-def fun_l17_n333()
- fun_l18_n598
-end
-
-def fun_l17_n334()
- fun_l18_n800
-end
-
-def fun_l17_n335()
- fun_l18_n384
-end
-
-def fun_l17_n336()
- fun_l18_n364
-end
-
-def fun_l17_n337()
- fun_l18_n857
-end
-
-def fun_l17_n338()
- fun_l18_n617
-end
-
-def fun_l17_n339()
- fun_l18_n669
-end
-
-def fun_l17_n340()
- fun_l18_n332
-end
-
-def fun_l17_n341()
- fun_l18_n104
-end
-
-def fun_l17_n342()
- fun_l18_n716
-end
-
-def fun_l17_n343()
- fun_l18_n836
-end
-
-def fun_l17_n344()
- fun_l18_n31
-end
-
-def fun_l17_n345()
- fun_l18_n345
-end
-
-def fun_l17_n346()
- fun_l18_n988
-end
-
-def fun_l17_n347()
- fun_l18_n63
-end
-
-def fun_l17_n348()
- fun_l18_n637
-end
-
-def fun_l17_n349()
- fun_l18_n767
-end
-
-def fun_l17_n350()
- fun_l18_n45
-end
-
-def fun_l17_n351()
- fun_l18_n332
-end
-
-def fun_l17_n352()
- fun_l18_n622
-end
-
-def fun_l17_n353()
- fun_l18_n879
-end
-
-def fun_l17_n354()
- fun_l18_n499
-end
-
-def fun_l17_n355()
- fun_l18_n446
-end
-
-def fun_l17_n356()
- fun_l18_n355
-end
-
-def fun_l17_n357()
- fun_l18_n40
-end
-
-def fun_l17_n358()
- fun_l18_n602
-end
-
-def fun_l17_n359()
- fun_l18_n162
-end
-
-def fun_l17_n360()
- fun_l18_n415
-end
-
-def fun_l17_n361()
- fun_l18_n966
-end
-
-def fun_l17_n362()
- fun_l18_n801
-end
-
-def fun_l17_n363()
- fun_l18_n242
-end
-
-def fun_l17_n364()
- fun_l18_n563
-end
-
-def fun_l17_n365()
- fun_l18_n150
-end
-
-def fun_l17_n366()
- fun_l18_n667
-end
-
-def fun_l17_n367()
- fun_l18_n997
-end
-
-def fun_l17_n368()
- fun_l18_n550
-end
-
-def fun_l17_n369()
- fun_l18_n313
-end
-
-def fun_l17_n370()
- fun_l18_n434
-end
-
-def fun_l17_n371()
- fun_l18_n254
-end
-
-def fun_l17_n372()
- fun_l18_n138
-end
-
-def fun_l17_n373()
- fun_l18_n371
-end
-
-def fun_l17_n374()
- fun_l18_n135
-end
-
-def fun_l17_n375()
- fun_l18_n405
-end
-
-def fun_l17_n376()
- fun_l18_n501
-end
-
-def fun_l17_n377()
- fun_l18_n565
-end
-
-def fun_l17_n378()
- fun_l18_n769
-end
-
-def fun_l17_n379()
- fun_l18_n20
-end
-
-def fun_l17_n380()
- fun_l18_n917
-end
-
-def fun_l17_n381()
- fun_l18_n983
-end
-
-def fun_l17_n382()
- fun_l18_n783
-end
-
-def fun_l17_n383()
- fun_l18_n849
-end
-
-def fun_l17_n384()
- fun_l18_n21
-end
-
-def fun_l17_n385()
- fun_l18_n806
-end
-
-def fun_l17_n386()
- fun_l18_n440
-end
-
-def fun_l17_n387()
- fun_l18_n810
-end
-
-def fun_l17_n388()
- fun_l18_n744
-end
-
-def fun_l17_n389()
- fun_l18_n184
-end
-
-def fun_l17_n390()
- fun_l18_n775
-end
-
-def fun_l17_n391()
- fun_l18_n704
-end
-
-def fun_l17_n392()
- fun_l18_n413
-end
-
-def fun_l17_n393()
- fun_l18_n329
-end
-
-def fun_l17_n394()
- fun_l18_n874
-end
-
-def fun_l17_n395()
- fun_l18_n756
-end
-
-def fun_l17_n396()
- fun_l18_n502
-end
-
-def fun_l17_n397()
- fun_l18_n675
-end
-
-def fun_l17_n398()
- fun_l18_n504
-end
-
-def fun_l17_n399()
- fun_l18_n117
-end
-
-def fun_l17_n400()
- fun_l18_n203
-end
-
-def fun_l17_n401()
- fun_l18_n672
-end
-
-def fun_l17_n402()
- fun_l18_n971
-end
-
-def fun_l17_n403()
- fun_l18_n742
-end
-
-def fun_l17_n404()
- fun_l18_n817
-end
-
-def fun_l17_n405()
- fun_l18_n981
-end
-
-def fun_l17_n406()
- fun_l18_n791
-end
-
-def fun_l17_n407()
- fun_l18_n660
-end
-
-def fun_l17_n408()
- fun_l18_n988
-end
-
-def fun_l17_n409()
- fun_l18_n875
-end
-
-def fun_l17_n410()
- fun_l18_n469
-end
-
-def fun_l17_n411()
- fun_l18_n890
-end
-
-def fun_l17_n412()
- fun_l18_n739
-end
-
-def fun_l17_n413()
- fun_l18_n880
-end
-
-def fun_l17_n414()
- fun_l18_n47
-end
-
-def fun_l17_n415()
- fun_l18_n474
-end
-
-def fun_l17_n416()
- fun_l18_n923
-end
-
-def fun_l17_n417()
- fun_l18_n959
-end
-
-def fun_l17_n418()
- fun_l18_n748
-end
-
-def fun_l17_n419()
- fun_l18_n555
-end
-
-def fun_l17_n420()
- fun_l18_n785
-end
-
-def fun_l17_n421()
- fun_l18_n49
-end
-
-def fun_l17_n422()
- fun_l18_n509
-end
-
-def fun_l17_n423()
- fun_l18_n0
-end
-
-def fun_l17_n424()
- fun_l18_n388
-end
-
-def fun_l17_n425()
- fun_l18_n394
-end
-
-def fun_l17_n426()
- fun_l18_n199
-end
-
-def fun_l17_n427()
- fun_l18_n554
-end
-
-def fun_l17_n428()
- fun_l18_n963
-end
-
-def fun_l17_n429()
- fun_l18_n464
-end
-
-def fun_l17_n430()
- fun_l18_n941
-end
-
-def fun_l17_n431()
- fun_l18_n116
-end
-
-def fun_l17_n432()
- fun_l18_n370
-end
-
-def fun_l17_n433()
- fun_l18_n848
-end
-
-def fun_l17_n434()
- fun_l18_n123
-end
-
-def fun_l17_n435()
- fun_l18_n32
-end
-
-def fun_l17_n436()
- fun_l18_n285
-end
-
-def fun_l17_n437()
- fun_l18_n823
-end
-
-def fun_l17_n438()
- fun_l18_n517
-end
-
-def fun_l17_n439()
- fun_l18_n292
-end
-
-def fun_l17_n440()
- fun_l18_n29
-end
-
-def fun_l17_n441()
- fun_l18_n166
-end
-
-def fun_l17_n442()
- fun_l18_n282
-end
-
-def fun_l17_n443()
- fun_l18_n300
-end
-
-def fun_l17_n444()
- fun_l18_n8
-end
-
-def fun_l17_n445()
- fun_l18_n458
-end
-
-def fun_l17_n446()
- fun_l18_n797
-end
-
-def fun_l17_n447()
- fun_l18_n835
-end
-
-def fun_l17_n448()
- fun_l18_n535
-end
-
-def fun_l17_n449()
- fun_l18_n909
-end
-
-def fun_l17_n450()
- fun_l18_n890
-end
-
-def fun_l17_n451()
- fun_l18_n706
-end
-
-def fun_l17_n452()
- fun_l18_n636
-end
-
-def fun_l17_n453()
- fun_l18_n541
-end
-
-def fun_l17_n454()
- fun_l18_n332
-end
-
-def fun_l17_n455()
- fun_l18_n241
-end
-
-def fun_l17_n456()
- fun_l18_n334
-end
-
-def fun_l17_n457()
- fun_l18_n212
-end
-
-def fun_l17_n458()
- fun_l18_n414
-end
-
-def fun_l17_n459()
- fun_l18_n600
-end
-
-def fun_l17_n460()
- fun_l18_n237
-end
-
-def fun_l17_n461()
- fun_l18_n881
-end
-
-def fun_l17_n462()
- fun_l18_n539
-end
-
-def fun_l17_n463()
- fun_l18_n262
-end
-
-def fun_l17_n464()
- fun_l18_n437
-end
-
-def fun_l17_n465()
- fun_l18_n874
-end
-
-def fun_l17_n466()
- fun_l18_n418
-end
-
-def fun_l17_n467()
- fun_l18_n963
-end
-
-def fun_l17_n468()
- fun_l18_n340
-end
-
-def fun_l17_n469()
- fun_l18_n708
-end
-
-def fun_l17_n470()
- fun_l18_n725
-end
-
-def fun_l17_n471()
- fun_l18_n59
-end
-
-def fun_l17_n472()
- fun_l18_n309
-end
-
-def fun_l17_n473()
- fun_l18_n490
-end
-
-def fun_l17_n474()
- fun_l18_n588
-end
-
-def fun_l17_n475()
- fun_l18_n623
-end
-
-def fun_l17_n476()
- fun_l18_n127
-end
-
-def fun_l17_n477()
- fun_l18_n385
-end
-
-def fun_l17_n478()
- fun_l18_n381
-end
-
-def fun_l17_n479()
- fun_l18_n603
-end
-
-def fun_l17_n480()
- fun_l18_n524
-end
-
-def fun_l17_n481()
- fun_l18_n829
-end
-
-def fun_l17_n482()
- fun_l18_n675
-end
-
-def fun_l17_n483()
- fun_l18_n792
-end
-
-def fun_l17_n484()
- fun_l18_n438
-end
-
-def fun_l17_n485()
- fun_l18_n101
-end
-
-def fun_l17_n486()
- fun_l18_n513
-end
-
-def fun_l17_n487()
- fun_l18_n44
-end
-
-def fun_l17_n488()
- fun_l18_n975
-end
-
-def fun_l17_n489()
- fun_l18_n891
-end
-
-def fun_l17_n490()
- fun_l18_n650
-end
-
-def fun_l17_n491()
- fun_l18_n840
-end
-
-def fun_l17_n492()
- fun_l18_n954
-end
-
-def fun_l17_n493()
- fun_l18_n326
-end
-
-def fun_l17_n494()
- fun_l18_n93
-end
-
-def fun_l17_n495()
- fun_l18_n537
-end
-
-def fun_l17_n496()
- fun_l18_n871
-end
-
-def fun_l17_n497()
- fun_l18_n786
-end
-
-def fun_l17_n498()
- fun_l18_n311
-end
-
-def fun_l17_n499()
- fun_l18_n494
-end
-
-def fun_l17_n500()
- fun_l18_n787
-end
-
-def fun_l17_n501()
- fun_l18_n511
-end
-
-def fun_l17_n502()
- fun_l18_n342
-end
-
-def fun_l17_n503()
- fun_l18_n218
-end
-
-def fun_l17_n504()
- fun_l18_n432
-end
-
-def fun_l17_n505()
- fun_l18_n637
-end
-
-def fun_l17_n506()
- fun_l18_n877
-end
-
-def fun_l17_n507()
- fun_l18_n767
-end
-
-def fun_l17_n508()
- fun_l18_n854
-end
-
-def fun_l17_n509()
- fun_l18_n614
-end
-
-def fun_l17_n510()
- fun_l18_n720
-end
-
-def fun_l17_n511()
- fun_l18_n556
-end
-
-def fun_l17_n512()
- fun_l18_n950
-end
-
-def fun_l17_n513()
- fun_l18_n502
-end
-
-def fun_l17_n514()
- fun_l18_n841
-end
-
-def fun_l17_n515()
- fun_l18_n24
-end
-
-def fun_l17_n516()
- fun_l18_n392
-end
-
-def fun_l17_n517()
- fun_l18_n99
-end
-
-def fun_l17_n518()
- fun_l18_n370
-end
-
-def fun_l17_n519()
- fun_l18_n798
-end
-
-def fun_l17_n520()
- fun_l18_n405
-end
-
-def fun_l17_n521()
- fun_l18_n736
-end
-
-def fun_l17_n522()
- fun_l18_n616
-end
-
-def fun_l17_n523()
- fun_l18_n701
-end
-
-def fun_l17_n524()
- fun_l18_n914
-end
-
-def fun_l17_n525()
- fun_l18_n832
-end
-
-def fun_l17_n526()
- fun_l18_n234
-end
-
-def fun_l17_n527()
- fun_l18_n65
-end
-
-def fun_l17_n528()
- fun_l18_n61
-end
-
-def fun_l17_n529()
- fun_l18_n639
-end
-
-def fun_l17_n530()
- fun_l18_n162
-end
-
-def fun_l17_n531()
- fun_l18_n250
-end
-
-def fun_l17_n532()
- fun_l18_n567
-end
-
-def fun_l17_n533()
- fun_l18_n183
-end
-
-def fun_l17_n534()
- fun_l18_n170
-end
-
-def fun_l17_n535()
- fun_l18_n663
-end
-
-def fun_l17_n536()
- fun_l18_n654
-end
-
-def fun_l17_n537()
- fun_l18_n616
-end
-
-def fun_l17_n538()
- fun_l18_n836
-end
-
-def fun_l17_n539()
- fun_l18_n679
-end
-
-def fun_l17_n540()
- fun_l18_n286
-end
-
-def fun_l17_n541()
- fun_l18_n35
-end
-
-def fun_l17_n542()
- fun_l18_n622
-end
-
-def fun_l17_n543()
- fun_l18_n305
-end
-
-def fun_l17_n544()
- fun_l18_n665
-end
-
-def fun_l17_n545()
- fun_l18_n376
-end
-
-def fun_l17_n546()
- fun_l18_n831
-end
-
-def fun_l17_n547()
- fun_l18_n917
-end
-
-def fun_l17_n548()
- fun_l18_n72
-end
-
-def fun_l17_n549()
- fun_l18_n934
-end
-
-def fun_l17_n550()
- fun_l18_n450
-end
-
-def fun_l17_n551()
- fun_l18_n683
-end
-
-def fun_l17_n552()
- fun_l18_n775
-end
-
-def fun_l17_n553()
- fun_l18_n418
-end
-
-def fun_l17_n554()
- fun_l18_n95
-end
-
-def fun_l17_n555()
- fun_l18_n395
-end
-
-def fun_l17_n556()
- fun_l18_n398
-end
-
-def fun_l17_n557()
- fun_l18_n192
-end
-
-def fun_l17_n558()
- fun_l18_n773
-end
-
-def fun_l17_n559()
- fun_l18_n924
-end
-
-def fun_l17_n560()
- fun_l18_n338
-end
-
-def fun_l17_n561()
- fun_l18_n926
-end
-
-def fun_l17_n562()
- fun_l18_n153
-end
-
-def fun_l17_n563()
- fun_l18_n76
-end
-
-def fun_l17_n564()
- fun_l18_n192
-end
-
-def fun_l17_n565()
- fun_l18_n605
-end
-
-def fun_l17_n566()
- fun_l18_n219
-end
-
-def fun_l17_n567()
- fun_l18_n58
-end
-
-def fun_l17_n568()
- fun_l18_n245
-end
-
-def fun_l17_n569()
- fun_l18_n810
-end
-
-def fun_l17_n570()
- fun_l18_n541
-end
-
-def fun_l17_n571()
- fun_l18_n37
-end
-
-def fun_l17_n572()
- fun_l18_n329
-end
-
-def fun_l17_n573()
- fun_l18_n159
-end
-
-def fun_l17_n574()
- fun_l18_n926
-end
-
-def fun_l17_n575()
- fun_l18_n940
-end
-
-def fun_l17_n576()
- fun_l18_n547
-end
-
-def fun_l17_n577()
- fun_l18_n694
-end
-
-def fun_l17_n578()
- fun_l18_n513
-end
-
-def fun_l17_n579()
- fun_l18_n197
-end
-
-def fun_l17_n580()
- fun_l18_n97
-end
-
-def fun_l17_n581()
- fun_l18_n504
-end
-
-def fun_l17_n582()
- fun_l18_n30
-end
-
-def fun_l17_n583()
- fun_l18_n972
-end
-
-def fun_l17_n584()
- fun_l18_n684
-end
-
-def fun_l17_n585()
- fun_l18_n720
-end
-
-def fun_l17_n586()
- fun_l18_n999
-end
-
-def fun_l17_n587()
- fun_l18_n241
-end
-
-def fun_l17_n588()
- fun_l18_n289
-end
-
-def fun_l17_n589()
- fun_l18_n168
-end
-
-def fun_l17_n590()
- fun_l18_n890
-end
-
-def fun_l17_n591()
- fun_l18_n566
-end
-
-def fun_l17_n592()
- fun_l18_n722
-end
-
-def fun_l17_n593()
- fun_l18_n65
-end
-
-def fun_l17_n594()
- fun_l18_n975
-end
-
-def fun_l17_n595()
- fun_l18_n68
-end
-
-def fun_l17_n596()
- fun_l18_n930
-end
-
-def fun_l17_n597()
- fun_l18_n386
-end
-
-def fun_l17_n598()
- fun_l18_n755
-end
-
-def fun_l17_n599()
- fun_l18_n571
-end
-
-def fun_l17_n600()
- fun_l18_n633
-end
-
-def fun_l17_n601()
- fun_l18_n823
-end
-
-def fun_l17_n602()
- fun_l18_n618
-end
-
-def fun_l17_n603()
- fun_l18_n587
-end
-
-def fun_l17_n604()
- fun_l18_n730
-end
-
-def fun_l17_n605()
- fun_l18_n829
-end
-
-def fun_l17_n606()
- fun_l18_n591
-end
-
-def fun_l17_n607()
- fun_l18_n971
-end
-
-def fun_l17_n608()
- fun_l18_n79
-end
-
-def fun_l17_n609()
- fun_l18_n971
-end
-
-def fun_l17_n610()
- fun_l18_n571
-end
-
-def fun_l17_n611()
- fun_l18_n768
-end
-
-def fun_l17_n612()
- fun_l18_n894
-end
-
-def fun_l17_n613()
- fun_l18_n424
-end
-
-def fun_l17_n614()
- fun_l18_n452
-end
-
-def fun_l17_n615()
- fun_l18_n928
-end
-
-def fun_l17_n616()
- fun_l18_n273
-end
-
-def fun_l17_n617()
- fun_l18_n344
-end
-
-def fun_l17_n618()
- fun_l18_n673
-end
-
-def fun_l17_n619()
- fun_l18_n849
-end
-
-def fun_l17_n620()
- fun_l18_n462
-end
-
-def fun_l17_n621()
- fun_l18_n691
-end
-
-def fun_l17_n622()
- fun_l18_n111
-end
-
-def fun_l17_n623()
- fun_l18_n140
-end
-
-def fun_l17_n624()
- fun_l18_n949
-end
-
-def fun_l17_n625()
- fun_l18_n743
-end
-
-def fun_l17_n626()
- fun_l18_n985
-end
-
-def fun_l17_n627()
- fun_l18_n123
-end
-
-def fun_l17_n628()
- fun_l18_n59
-end
-
-def fun_l17_n629()
- fun_l18_n355
-end
-
-def fun_l17_n630()
- fun_l18_n828
-end
-
-def fun_l17_n631()
- fun_l18_n602
-end
-
-def fun_l17_n632()
- fun_l18_n597
-end
-
-def fun_l17_n633()
- fun_l18_n156
-end
-
-def fun_l17_n634()
- fun_l18_n249
-end
-
-def fun_l17_n635()
- fun_l18_n166
-end
-
-def fun_l17_n636()
- fun_l18_n913
-end
-
-def fun_l17_n637()
- fun_l18_n667
-end
-
-def fun_l17_n638()
- fun_l18_n641
-end
-
-def fun_l17_n639()
- fun_l18_n31
-end
-
-def fun_l17_n640()
- fun_l18_n481
-end
-
-def fun_l17_n641()
- fun_l18_n670
-end
-
-def fun_l17_n642()
- fun_l18_n104
-end
-
-def fun_l17_n643()
- fun_l18_n490
-end
-
-def fun_l17_n644()
- fun_l18_n653
-end
-
-def fun_l17_n645()
- fun_l18_n582
-end
-
-def fun_l17_n646()
- fun_l18_n805
-end
-
-def fun_l17_n647()
- fun_l18_n89
-end
-
-def fun_l17_n648()
- fun_l18_n226
-end
-
-def fun_l17_n649()
- fun_l18_n657
-end
-
-def fun_l17_n650()
- fun_l18_n711
-end
-
-def fun_l17_n651()
- fun_l18_n991
-end
-
-def fun_l17_n652()
- fun_l18_n955
-end
-
-def fun_l17_n653()
- fun_l18_n357
-end
-
-def fun_l17_n654()
- fun_l18_n816
-end
-
-def fun_l17_n655()
- fun_l18_n3
-end
-
-def fun_l17_n656()
- fun_l18_n796
-end
-
-def fun_l17_n657()
- fun_l18_n864
-end
-
-def fun_l17_n658()
- fun_l18_n484
-end
-
-def fun_l17_n659()
- fun_l18_n59
-end
-
-def fun_l17_n660()
- fun_l18_n465
-end
-
-def fun_l17_n661()
- fun_l18_n175
-end
-
-def fun_l17_n662()
- fun_l18_n721
-end
-
-def fun_l17_n663()
- fun_l18_n203
-end
-
-def fun_l17_n664()
- fun_l18_n77
-end
-
-def fun_l17_n665()
- fun_l18_n428
-end
-
-def fun_l17_n666()
- fun_l18_n651
-end
-
-def fun_l17_n667()
- fun_l18_n652
-end
-
-def fun_l17_n668()
- fun_l18_n199
-end
-
-def fun_l17_n669()
- fun_l18_n851
-end
-
-def fun_l17_n670()
- fun_l18_n27
-end
-
-def fun_l17_n671()
- fun_l18_n399
-end
-
-def fun_l17_n672()
- fun_l18_n233
-end
-
-def fun_l17_n673()
- fun_l18_n213
-end
-
-def fun_l17_n674()
- fun_l18_n112
-end
-
-def fun_l17_n675()
- fun_l18_n56
-end
-
-def fun_l17_n676()
- fun_l18_n813
-end
-
-def fun_l17_n677()
- fun_l18_n344
-end
-
-def fun_l17_n678()
- fun_l18_n705
-end
-
-def fun_l17_n679()
- fun_l18_n117
-end
-
-def fun_l17_n680()
- fun_l18_n644
-end
-
-def fun_l17_n681()
- fun_l18_n544
-end
-
-def fun_l17_n682()
- fun_l18_n910
-end
-
-def fun_l17_n683()
- fun_l18_n604
-end
-
-def fun_l17_n684()
- fun_l18_n916
-end
-
-def fun_l17_n685()
- fun_l18_n795
-end
-
-def fun_l17_n686()
- fun_l18_n983
-end
-
-def fun_l17_n687()
- fun_l18_n200
-end
-
-def fun_l17_n688()
- fun_l18_n699
-end
-
-def fun_l17_n689()
- fun_l18_n736
-end
-
-def fun_l17_n690()
- fun_l18_n465
-end
-
-def fun_l17_n691()
- fun_l18_n496
-end
-
-def fun_l17_n692()
- fun_l18_n505
-end
-
-def fun_l17_n693()
- fun_l18_n753
-end
-
-def fun_l17_n694()
- fun_l18_n473
-end
-
-def fun_l17_n695()
- fun_l18_n320
-end
-
-def fun_l17_n696()
- fun_l18_n319
-end
-
-def fun_l17_n697()
- fun_l18_n789
-end
-
-def fun_l17_n698()
- fun_l18_n474
-end
-
-def fun_l17_n699()
- fun_l18_n561
-end
-
-def fun_l17_n700()
- fun_l18_n455
-end
-
-def fun_l17_n701()
- fun_l18_n863
-end
-
-def fun_l17_n702()
- fun_l18_n22
-end
-
-def fun_l17_n703()
- fun_l18_n850
-end
-
-def fun_l17_n704()
- fun_l18_n200
-end
-
-def fun_l17_n705()
- fun_l18_n411
-end
-
-def fun_l17_n706()
- fun_l18_n655
-end
-
-def fun_l17_n707()
- fun_l18_n101
-end
-
-def fun_l17_n708()
- fun_l18_n911
-end
-
-def fun_l17_n709()
- fun_l18_n974
-end
-
-def fun_l17_n710()
- fun_l18_n354
-end
-
-def fun_l17_n711()
- fun_l18_n265
-end
-
-def fun_l17_n712()
- fun_l18_n995
-end
-
-def fun_l17_n713()
- fun_l18_n21
-end
-
-def fun_l17_n714()
- fun_l18_n783
-end
-
-def fun_l17_n715()
- fun_l18_n974
-end
-
-def fun_l17_n716()
- fun_l18_n814
-end
-
-def fun_l17_n717()
- fun_l18_n833
-end
-
-def fun_l17_n718()
- fun_l18_n919
-end
-
-def fun_l17_n719()
- fun_l18_n379
-end
-
-def fun_l17_n720()
- fun_l18_n995
-end
-
-def fun_l17_n721()
- fun_l18_n473
-end
-
-def fun_l17_n722()
- fun_l18_n345
-end
-
-def fun_l17_n723()
- fun_l18_n982
-end
-
-def fun_l17_n724()
- fun_l18_n857
-end
-
-def fun_l17_n725()
- fun_l18_n238
-end
-
-def fun_l17_n726()
- fun_l18_n428
-end
-
-def fun_l17_n727()
- fun_l18_n387
-end
-
-def fun_l17_n728()
- fun_l18_n690
-end
-
-def fun_l17_n729()
- fun_l18_n581
-end
-
-def fun_l17_n730()
- fun_l18_n110
-end
-
-def fun_l17_n731()
- fun_l18_n788
-end
-
-def fun_l17_n732()
- fun_l18_n190
-end
-
-def fun_l17_n733()
- fun_l18_n856
-end
-
-def fun_l17_n734()
- fun_l18_n724
-end
-
-def fun_l17_n735()
- fun_l18_n174
-end
-
-def fun_l17_n736()
- fun_l18_n527
-end
-
-def fun_l17_n737()
- fun_l18_n816
-end
-
-def fun_l17_n738()
- fun_l18_n425
-end
-
-def fun_l17_n739()
- fun_l18_n476
-end
-
-def fun_l17_n740()
- fun_l18_n685
-end
-
-def fun_l17_n741()
- fun_l18_n211
-end
-
-def fun_l17_n742()
- fun_l18_n354
-end
-
-def fun_l17_n743()
- fun_l18_n849
-end
-
-def fun_l17_n744()
- fun_l18_n673
-end
-
-def fun_l17_n745()
- fun_l18_n274
-end
-
-def fun_l17_n746()
- fun_l18_n147
-end
-
-def fun_l17_n747()
- fun_l18_n103
-end
-
-def fun_l17_n748()
- fun_l18_n185
-end
-
-def fun_l17_n749()
- fun_l18_n781
-end
-
-def fun_l17_n750()
- fun_l18_n980
-end
-
-def fun_l17_n751()
- fun_l18_n961
-end
-
-def fun_l17_n752()
- fun_l18_n447
-end
-
-def fun_l17_n753()
- fun_l18_n124
-end
-
-def fun_l17_n754()
- fun_l18_n605
-end
-
-def fun_l17_n755()
- fun_l18_n7
-end
-
-def fun_l17_n756()
- fun_l18_n731
-end
-
-def fun_l17_n757()
- fun_l18_n479
-end
-
-def fun_l17_n758()
- fun_l18_n931
-end
-
-def fun_l17_n759()
- fun_l18_n535
-end
-
-def fun_l17_n760()
- fun_l18_n772
-end
-
-def fun_l17_n761()
- fun_l18_n827
-end
-
-def fun_l17_n762()
- fun_l18_n265
-end
-
-def fun_l17_n763()
- fun_l18_n81
-end
-
-def fun_l17_n764()
- fun_l18_n377
-end
-
-def fun_l17_n765()
- fun_l18_n565
-end
-
-def fun_l17_n766()
- fun_l18_n520
-end
-
-def fun_l17_n767()
- fun_l18_n556
-end
-
-def fun_l17_n768()
- fun_l18_n711
-end
-
-def fun_l17_n769()
- fun_l18_n460
-end
-
-def fun_l17_n770()
- fun_l18_n902
-end
-
-def fun_l17_n771()
- fun_l18_n874
-end
-
-def fun_l17_n772()
- fun_l18_n742
-end
-
-def fun_l17_n773()
- fun_l18_n578
-end
-
-def fun_l17_n774()
- fun_l18_n198
-end
-
-def fun_l17_n775()
- fun_l18_n965
-end
-
-def fun_l17_n776()
- fun_l18_n342
-end
-
-def fun_l17_n777()
- fun_l18_n50
-end
-
-def fun_l17_n778()
- fun_l18_n299
-end
-
-def fun_l17_n779()
- fun_l18_n289
-end
-
-def fun_l17_n780()
- fun_l18_n830
-end
-
-def fun_l17_n781()
- fun_l18_n157
-end
-
-def fun_l17_n782()
- fun_l18_n628
-end
-
-def fun_l17_n783()
- fun_l18_n875
-end
-
-def fun_l17_n784()
- fun_l18_n810
-end
-
-def fun_l17_n785()
- fun_l18_n642
-end
-
-def fun_l17_n786()
- fun_l18_n422
-end
-
-def fun_l17_n787()
- fun_l18_n816
-end
-
-def fun_l17_n788()
- fun_l18_n184
-end
-
-def fun_l17_n789()
- fun_l18_n391
-end
-
-def fun_l17_n790()
- fun_l18_n804
-end
-
-def fun_l17_n791()
- fun_l18_n534
-end
-
-def fun_l17_n792()
- fun_l18_n353
-end
-
-def fun_l17_n793()
- fun_l18_n329
-end
-
-def fun_l17_n794()
- fun_l18_n75
-end
-
-def fun_l17_n795()
- fun_l18_n854
-end
-
-def fun_l17_n796()
- fun_l18_n478
-end
-
-def fun_l17_n797()
- fun_l18_n403
-end
-
-def fun_l17_n798()
- fun_l18_n842
-end
-
-def fun_l17_n799()
- fun_l18_n569
-end
-
-def fun_l17_n800()
- fun_l18_n596
-end
-
-def fun_l17_n801()
- fun_l18_n548
-end
-
-def fun_l17_n802()
- fun_l18_n393
-end
-
-def fun_l17_n803()
- fun_l18_n253
-end
-
-def fun_l17_n804()
- fun_l18_n987
-end
-
-def fun_l17_n805()
- fun_l18_n560
-end
-
-def fun_l17_n806()
- fun_l18_n582
-end
-
-def fun_l17_n807()
- fun_l18_n356
-end
-
-def fun_l17_n808()
- fun_l18_n458
-end
-
-def fun_l17_n809()
- fun_l18_n215
-end
-
-def fun_l17_n810()
- fun_l18_n16
-end
-
-def fun_l17_n811()
- fun_l18_n586
-end
-
-def fun_l17_n812()
- fun_l18_n312
-end
-
-def fun_l17_n813()
- fun_l18_n861
-end
-
-def fun_l17_n814()
- fun_l18_n455
-end
-
-def fun_l17_n815()
- fun_l18_n530
-end
-
-def fun_l17_n816()
- fun_l18_n583
-end
-
-def fun_l17_n817()
- fun_l18_n511
-end
-
-def fun_l17_n818()
- fun_l18_n568
-end
-
-def fun_l17_n819()
- fun_l18_n411
-end
-
-def fun_l17_n820()
- fun_l18_n404
-end
-
-def fun_l17_n821()
- fun_l18_n199
-end
-
-def fun_l17_n822()
- fun_l18_n393
-end
-
-def fun_l17_n823()
- fun_l18_n856
-end
-
-def fun_l17_n824()
- fun_l18_n638
-end
-
-def fun_l17_n825()
- fun_l18_n853
-end
-
-def fun_l17_n826()
- fun_l18_n896
-end
-
-def fun_l17_n827()
- fun_l18_n267
-end
-
-def fun_l17_n828()
- fun_l18_n419
-end
-
-def fun_l17_n829()
- fun_l18_n47
-end
-
-def fun_l17_n830()
- fun_l18_n436
-end
-
-def fun_l17_n831()
- fun_l18_n714
-end
-
-def fun_l17_n832()
- fun_l18_n156
-end
-
-def fun_l17_n833()
- fun_l18_n32
-end
-
-def fun_l17_n834()
- fun_l18_n467
-end
-
-def fun_l17_n835()
- fun_l18_n905
-end
-
-def fun_l17_n836()
- fun_l18_n824
-end
-
-def fun_l17_n837()
- fun_l18_n503
-end
-
-def fun_l17_n838()
- fun_l18_n454
-end
-
-def fun_l17_n839()
- fun_l18_n295
-end
-
-def fun_l17_n840()
- fun_l18_n669
-end
-
-def fun_l17_n841()
- fun_l18_n618
-end
-
-def fun_l17_n842()
- fun_l18_n984
-end
-
-def fun_l17_n843()
- fun_l18_n485
-end
-
-def fun_l17_n844()
- fun_l18_n952
-end
-
-def fun_l17_n845()
- fun_l18_n374
-end
-
-def fun_l17_n846()
- fun_l18_n933
-end
-
-def fun_l17_n847()
- fun_l18_n246
-end
-
-def fun_l17_n848()
- fun_l18_n672
-end
-
-def fun_l17_n849()
- fun_l18_n23
-end
-
-def fun_l17_n850()
- fun_l18_n641
-end
-
-def fun_l17_n851()
- fun_l18_n439
-end
-
-def fun_l17_n852()
- fun_l18_n423
-end
-
-def fun_l17_n853()
- fun_l18_n565
-end
-
-def fun_l17_n854()
- fun_l18_n189
-end
-
-def fun_l17_n855()
- fun_l18_n265
-end
-
-def fun_l17_n856()
- fun_l18_n101
-end
-
-def fun_l17_n857()
- fun_l18_n799
-end
-
-def fun_l17_n858()
- fun_l18_n831
-end
-
-def fun_l17_n859()
- fun_l18_n222
-end
-
-def fun_l17_n860()
- fun_l18_n398
-end
-
-def fun_l17_n861()
- fun_l18_n946
-end
-
-def fun_l17_n862()
- fun_l18_n693
-end
-
-def fun_l17_n863()
- fun_l18_n947
-end
-
-def fun_l17_n864()
- fun_l18_n22
-end
-
-def fun_l17_n865()
- fun_l18_n386
-end
-
-def fun_l17_n866()
- fun_l18_n771
-end
-
-def fun_l17_n867()
- fun_l18_n38
-end
-
-def fun_l17_n868()
- fun_l18_n290
-end
-
-def fun_l17_n869()
- fun_l18_n204
-end
-
-def fun_l17_n870()
- fun_l18_n780
-end
-
-def fun_l17_n871()
- fun_l18_n275
-end
-
-def fun_l17_n872()
- fun_l18_n810
-end
-
-def fun_l17_n873()
- fun_l18_n104
-end
-
-def fun_l17_n874()
- fun_l18_n433
-end
-
-def fun_l17_n875()
- fun_l18_n55
-end
-
-def fun_l17_n876()
- fun_l18_n508
-end
-
-def fun_l17_n877()
- fun_l18_n997
-end
-
-def fun_l17_n878()
- fun_l18_n115
-end
-
-def fun_l17_n879()
- fun_l18_n568
-end
-
-def fun_l17_n880()
- fun_l18_n385
-end
-
-def fun_l17_n881()
- fun_l18_n912
-end
-
-def fun_l17_n882()
- fun_l18_n234
-end
-
-def fun_l17_n883()
- fun_l18_n85
-end
-
-def fun_l17_n884()
- fun_l18_n935
-end
-
-def fun_l17_n885()
- fun_l18_n389
-end
-
-def fun_l17_n886()
- fun_l18_n925
-end
-
-def fun_l17_n887()
- fun_l18_n629
-end
-
-def fun_l17_n888()
- fun_l18_n310
-end
-
-def fun_l17_n889()
- fun_l18_n538
-end
-
-def fun_l17_n890()
- fun_l18_n172
-end
-
-def fun_l17_n891()
- fun_l18_n161
-end
-
-def fun_l17_n892()
- fun_l18_n11
-end
-
-def fun_l17_n893()
- fun_l18_n216
-end
-
-def fun_l17_n894()
- fun_l18_n802
-end
-
-def fun_l17_n895()
- fun_l18_n982
-end
-
-def fun_l17_n896()
- fun_l18_n220
-end
-
-def fun_l17_n897()
- fun_l18_n169
-end
-
-def fun_l17_n898()
- fun_l18_n64
-end
-
-def fun_l17_n899()
- fun_l18_n282
-end
-
-def fun_l17_n900()
- fun_l18_n134
-end
-
-def fun_l17_n901()
- fun_l18_n424
-end
-
-def fun_l17_n902()
- fun_l18_n766
-end
-
-def fun_l17_n903()
- fun_l18_n808
-end
-
-def fun_l17_n904()
- fun_l18_n766
-end
-
-def fun_l17_n905()
- fun_l18_n836
-end
-
-def fun_l17_n906()
- fun_l18_n5
-end
-
-def fun_l17_n907()
- fun_l18_n47
-end
-
-def fun_l17_n908()
- fun_l18_n414
-end
-
-def fun_l17_n909()
- fun_l18_n11
-end
-
-def fun_l17_n910()
- fun_l18_n446
-end
-
-def fun_l17_n911()
- fun_l18_n161
-end
-
-def fun_l17_n912()
- fun_l18_n291
-end
-
-def fun_l17_n913()
- fun_l18_n728
-end
-
-def fun_l17_n914()
- fun_l18_n806
-end
-
-def fun_l17_n915()
- fun_l18_n355
-end
-
-def fun_l17_n916()
- fun_l18_n157
-end
-
-def fun_l17_n917()
- fun_l18_n912
-end
-
-def fun_l17_n918()
- fun_l18_n354
-end
-
-def fun_l17_n919()
- fun_l18_n84
-end
-
-def fun_l17_n920()
- fun_l18_n291
-end
-
-def fun_l17_n921()
- fun_l18_n258
-end
-
-def fun_l17_n922()
- fun_l18_n935
-end
-
-def fun_l17_n923()
- fun_l18_n622
-end
-
-def fun_l17_n924()
- fun_l18_n760
-end
-
-def fun_l17_n925()
- fun_l18_n153
-end
-
-def fun_l17_n926()
- fun_l18_n673
-end
-
-def fun_l17_n927()
- fun_l18_n105
-end
-
-def fun_l17_n928()
- fun_l18_n432
-end
-
-def fun_l17_n929()
- fun_l18_n403
-end
-
-def fun_l17_n930()
- fun_l18_n312
-end
-
-def fun_l17_n931()
- fun_l18_n874
-end
-
-def fun_l17_n932()
- fun_l18_n642
-end
-
-def fun_l17_n933()
- fun_l18_n694
-end
-
-def fun_l17_n934()
- fun_l18_n247
-end
-
-def fun_l17_n935()
- fun_l18_n483
-end
-
-def fun_l17_n936()
- fun_l18_n849
-end
-
-def fun_l17_n937()
- fun_l18_n784
-end
-
-def fun_l17_n938()
- fun_l18_n948
-end
-
-def fun_l17_n939()
- fun_l18_n26
-end
-
-def fun_l17_n940()
- fun_l18_n36
-end
-
-def fun_l17_n941()
- fun_l18_n933
-end
-
-def fun_l17_n942()
- fun_l18_n734
-end
-
-def fun_l17_n943()
- fun_l18_n33
-end
-
-def fun_l17_n944()
- fun_l18_n78
-end
-
-def fun_l17_n945()
- fun_l18_n592
-end
-
-def fun_l17_n946()
- fun_l18_n504
-end
-
-def fun_l17_n947()
- fun_l18_n255
-end
-
-def fun_l17_n948()
- fun_l18_n389
-end
-
-def fun_l17_n949()
- fun_l18_n71
-end
-
-def fun_l17_n950()
- fun_l18_n938
-end
-
-def fun_l17_n951()
- fun_l18_n125
-end
-
-def fun_l17_n952()
- fun_l18_n310
-end
-
-def fun_l17_n953()
- fun_l18_n422
-end
-
-def fun_l17_n954()
- fun_l18_n268
-end
-
-def fun_l17_n955()
- fun_l18_n655
-end
-
-def fun_l17_n956()
- fun_l18_n106
-end
-
-def fun_l17_n957()
- fun_l18_n226
-end
-
-def fun_l17_n958()
- fun_l18_n247
-end
-
-def fun_l17_n959()
- fun_l18_n282
-end
-
-def fun_l17_n960()
- fun_l18_n495
-end
-
-def fun_l17_n961()
- fun_l18_n333
-end
-
-def fun_l17_n962()
- fun_l18_n796
-end
-
-def fun_l17_n963()
- fun_l18_n939
-end
-
-def fun_l17_n964()
- fun_l18_n529
-end
-
-def fun_l17_n965()
- fun_l18_n835
-end
-
-def fun_l17_n966()
- fun_l18_n947
-end
-
-def fun_l17_n967()
- fun_l18_n925
-end
-
-def fun_l17_n968()
- fun_l18_n445
-end
-
-def fun_l17_n969()
- fun_l18_n815
-end
-
-def fun_l17_n970()
- fun_l18_n476
-end
-
-def fun_l17_n971()
- fun_l18_n39
-end
-
-def fun_l17_n972()
- fun_l18_n374
-end
-
-def fun_l17_n973()
- fun_l18_n332
-end
-
-def fun_l17_n974()
- fun_l18_n231
-end
-
-def fun_l17_n975()
- fun_l18_n155
-end
-
-def fun_l17_n976()
- fun_l18_n892
-end
-
-def fun_l17_n977()
- fun_l18_n890
-end
-
-def fun_l17_n978()
- fun_l18_n304
-end
-
-def fun_l17_n979()
- fun_l18_n67
-end
-
-def fun_l17_n980()
- fun_l18_n793
-end
-
-def fun_l17_n981()
- fun_l18_n902
-end
-
-def fun_l17_n982()
- fun_l18_n990
-end
-
-def fun_l17_n983()
- fun_l18_n506
-end
-
-def fun_l17_n984()
- fun_l18_n411
-end
-
-def fun_l17_n985()
- fun_l18_n360
-end
-
-def fun_l17_n986()
- fun_l18_n958
-end
-
-def fun_l17_n987()
- fun_l18_n941
-end
-
-def fun_l17_n988()
- fun_l18_n896
-end
-
-def fun_l17_n989()
- fun_l18_n17
-end
-
-def fun_l17_n990()
- fun_l18_n971
-end
-
-def fun_l17_n991()
- fun_l18_n71
-end
-
-def fun_l17_n992()
- fun_l18_n880
-end
-
-def fun_l17_n993()
- fun_l18_n473
-end
-
-def fun_l17_n994()
- fun_l18_n602
-end
-
-def fun_l17_n995()
- fun_l18_n112
-end
-
-def fun_l17_n996()
- fun_l18_n748
-end
-
-def fun_l17_n997()
- fun_l18_n156
-end
-
-def fun_l17_n998()
- fun_l18_n979
-end
-
-def fun_l17_n999()
- fun_l18_n950
-end
-
-def fun_l18_n0()
- fun_l19_n673
-end
-
-def fun_l18_n1()
- fun_l19_n72
-end
-
-def fun_l18_n2()
- fun_l19_n941
-end
-
-def fun_l18_n3()
- fun_l19_n32
-end
-
-def fun_l18_n4()
- fun_l19_n386
-end
-
-def fun_l18_n5()
- fun_l19_n834
-end
-
-def fun_l18_n6()
- fun_l19_n337
-end
-
-def fun_l18_n7()
- fun_l19_n669
-end
-
-def fun_l18_n8()
- fun_l19_n953
-end
-
-def fun_l18_n9()
- fun_l19_n823
-end
-
-def fun_l18_n10()
- fun_l19_n709
-end
-
-def fun_l18_n11()
- fun_l19_n70
-end
-
-def fun_l18_n12()
- fun_l19_n54
-end
-
-def fun_l18_n13()
- fun_l19_n601
-end
-
-def fun_l18_n14()
- fun_l19_n638
-end
-
-def fun_l18_n15()
- fun_l19_n497
-end
-
-def fun_l18_n16()
- fun_l19_n7
-end
-
-def fun_l18_n17()
- fun_l19_n955
-end
-
-def fun_l18_n18()
- fun_l19_n229
-end
-
-def fun_l18_n19()
- fun_l19_n158
-end
-
-def fun_l18_n20()
- fun_l19_n905
-end
-
-def fun_l18_n21()
- fun_l19_n34
-end
-
-def fun_l18_n22()
- fun_l19_n462
-end
-
-def fun_l18_n23()
- fun_l19_n496
-end
-
-def fun_l18_n24()
- fun_l19_n560
-end
-
-def fun_l18_n25()
- fun_l19_n877
-end
-
-def fun_l18_n26()
- fun_l19_n555
-end
-
-def fun_l18_n27()
- fun_l19_n973
-end
-
-def fun_l18_n28()
- fun_l19_n680
-end
-
-def fun_l18_n29()
- fun_l19_n525
-end
-
-def fun_l18_n30()
- fun_l19_n26
-end
-
-def fun_l18_n31()
- fun_l19_n51
-end
-
-def fun_l18_n32()
- fun_l19_n859
-end
-
-def fun_l18_n33()
- fun_l19_n345
-end
-
-def fun_l18_n34()
- fun_l19_n376
-end
-
-def fun_l18_n35()
- fun_l19_n411
-end
-
-def fun_l18_n36()
- fun_l19_n717
-end
-
-def fun_l18_n37()
- fun_l19_n750
-end
-
-def fun_l18_n38()
- fun_l19_n927
-end
-
-def fun_l18_n39()
- fun_l19_n129
-end
-
-def fun_l18_n40()
- fun_l19_n121
-end
-
-def fun_l18_n41()
- fun_l19_n670
-end
-
-def fun_l18_n42()
- fun_l19_n926
-end
-
-def fun_l18_n43()
- fun_l19_n80
-end
-
-def fun_l18_n44()
- fun_l19_n355
-end
-
-def fun_l18_n45()
- fun_l19_n107
-end
-
-def fun_l18_n46()
- fun_l19_n437
-end
-
-def fun_l18_n47()
- fun_l19_n821
-end
-
-def fun_l18_n48()
- fun_l19_n215
-end
-
-def fun_l18_n49()
- fun_l19_n783
-end
-
-def fun_l18_n50()
- fun_l19_n941
-end
-
-def fun_l18_n51()
- fun_l19_n156
-end
-
-def fun_l18_n52()
- fun_l19_n797
-end
-
-def fun_l18_n53()
- fun_l19_n522
-end
-
-def fun_l18_n54()
- fun_l19_n294
-end
-
-def fun_l18_n55()
- fun_l19_n985
-end
-
-def fun_l18_n56()
- fun_l19_n709
-end
-
-def fun_l18_n57()
- fun_l19_n492
-end
-
-def fun_l18_n58()
- fun_l19_n460
-end
-
-def fun_l18_n59()
- fun_l19_n186
-end
-
-def fun_l18_n60()
- fun_l19_n764
-end
-
-def fun_l18_n61()
- fun_l19_n439
-end
-
-def fun_l18_n62()
- fun_l19_n568
-end
-
-def fun_l18_n63()
- fun_l19_n797
-end
-
-def fun_l18_n64()
- fun_l19_n542
-end
-
-def fun_l18_n65()
- fun_l19_n985
-end
-
-def fun_l18_n66()
- fun_l19_n787
-end
-
-def fun_l18_n67()
- fun_l19_n447
-end
-
-def fun_l18_n68()
- fun_l19_n567
-end
-
-def fun_l18_n69()
- fun_l19_n406
-end
-
-def fun_l18_n70()
- fun_l19_n984
-end
-
-def fun_l18_n71()
- fun_l19_n58
-end
-
-def fun_l18_n72()
- fun_l19_n820
-end
-
-def fun_l18_n73()
- fun_l19_n831
-end
-
-def fun_l18_n74()
- fun_l19_n533
-end
-
-def fun_l18_n75()
- fun_l19_n277
-end
-
-def fun_l18_n76()
- fun_l19_n92
-end
-
-def fun_l18_n77()
- fun_l19_n965
-end
-
-def fun_l18_n78()
- fun_l19_n127
-end
-
-def fun_l18_n79()
- fun_l19_n728
-end
-
-def fun_l18_n80()
- fun_l19_n672
-end
-
-def fun_l18_n81()
- fun_l19_n748
-end
-
-def fun_l18_n82()
- fun_l19_n485
-end
-
-def fun_l18_n83()
- fun_l19_n815
-end
-
-def fun_l18_n84()
- fun_l19_n957
-end
-
-def fun_l18_n85()
- fun_l19_n884
-end
-
-def fun_l18_n86()
- fun_l19_n107
-end
-
-def fun_l18_n87()
- fun_l19_n255
-end
-
-def fun_l18_n88()
- fun_l19_n498
-end
-
-def fun_l18_n89()
- fun_l19_n589
-end
-
-def fun_l18_n90()
- fun_l19_n726
-end
-
-def fun_l18_n91()
- fun_l19_n755
-end
-
-def fun_l18_n92()
- fun_l19_n855
-end
-
-def fun_l18_n93()
- fun_l19_n490
-end
-
-def fun_l18_n94()
- fun_l19_n463
-end
-
-def fun_l18_n95()
- fun_l19_n213
-end
-
-def fun_l18_n96()
- fun_l19_n946
-end
-
-def fun_l18_n97()
- fun_l19_n319
-end
-
-def fun_l18_n98()
- fun_l19_n565
-end
-
-def fun_l18_n99()
- fun_l19_n805
-end
-
-def fun_l18_n100()
- fun_l19_n21
-end
-
-def fun_l18_n101()
- fun_l19_n168
-end
-
-def fun_l18_n102()
- fun_l19_n462
-end
-
-def fun_l18_n103()
- fun_l19_n15
-end
-
-def fun_l18_n104()
- fun_l19_n408
-end
-
-def fun_l18_n105()
- fun_l19_n736
-end
-
-def fun_l18_n106()
- fun_l19_n313
-end
-
-def fun_l18_n107()
- fun_l19_n736
-end
-
-def fun_l18_n108()
- fun_l19_n703
-end
-
-def fun_l18_n109()
- fun_l19_n456
-end
-
-def fun_l18_n110()
- fun_l19_n467
-end
-
-def fun_l18_n111()
- fun_l19_n287
-end
-
-def fun_l18_n112()
- fun_l19_n630
-end
-
-def fun_l18_n113()
- fun_l19_n499
-end
-
-def fun_l18_n114()
- fun_l19_n308
-end
-
-def fun_l18_n115()
- fun_l19_n902
-end
-
-def fun_l18_n116()
- fun_l19_n894
-end
-
-def fun_l18_n117()
- fun_l19_n545
-end
-
-def fun_l18_n118()
- fun_l19_n467
-end
-
-def fun_l18_n119()
- fun_l19_n791
-end
-
-def fun_l18_n120()
- fun_l19_n845
-end
-
-def fun_l18_n121()
- fun_l19_n376
-end
-
-def fun_l18_n122()
- fun_l19_n898
-end
-
-def fun_l18_n123()
- fun_l19_n200
-end
-
-def fun_l18_n124()
- fun_l19_n415
-end
-
-def fun_l18_n125()
- fun_l19_n80
-end
-
-def fun_l18_n126()
- fun_l19_n6
-end
-
-def fun_l18_n127()
- fun_l19_n150
-end
-
-def fun_l18_n128()
- fun_l19_n223
-end
-
-def fun_l18_n129()
- fun_l19_n179
-end
-
-def fun_l18_n130()
- fun_l19_n687
-end
-
-def fun_l18_n131()
- fun_l19_n625
-end
-
-def fun_l18_n132()
- fun_l19_n332
-end
-
-def fun_l18_n133()
- fun_l19_n87
-end
-
-def fun_l18_n134()
- fun_l19_n469
-end
-
-def fun_l18_n135()
- fun_l19_n4
-end
-
-def fun_l18_n136()
- fun_l19_n142
-end
-
-def fun_l18_n137()
- fun_l19_n506
-end
-
-def fun_l18_n138()
- fun_l19_n227
-end
-
-def fun_l18_n139()
- fun_l19_n332
-end
-
-def fun_l18_n140()
- fun_l19_n18
-end
-
-def fun_l18_n141()
- fun_l19_n773
-end
-
-def fun_l18_n142()
- fun_l19_n306
-end
-
-def fun_l18_n143()
- fun_l19_n376
-end
-
-def fun_l18_n144()
- fun_l19_n524
-end
-
-def fun_l18_n145()
- fun_l19_n61
-end
-
-def fun_l18_n146()
- fun_l19_n635
-end
-
-def fun_l18_n147()
- fun_l19_n816
-end
-
-def fun_l18_n148()
- fun_l19_n398
-end
-
-def fun_l18_n149()
- fun_l19_n408
-end
-
-def fun_l18_n150()
- fun_l19_n889
-end
-
-def fun_l18_n151()
- fun_l19_n167
-end
-
-def fun_l18_n152()
- fun_l19_n436
-end
-
-def fun_l18_n153()
- fun_l19_n738
-end
-
-def fun_l18_n154()
- fun_l19_n382
-end
-
-def fun_l18_n155()
- fun_l19_n260
-end
-
-def fun_l18_n156()
- fun_l19_n227
-end
-
-def fun_l18_n157()
- fun_l19_n191
-end
-
-def fun_l18_n158()
- fun_l19_n269
-end
-
-def fun_l18_n159()
- fun_l19_n599
-end
-
-def fun_l18_n160()
- fun_l19_n992
-end
-
-def fun_l18_n161()
- fun_l19_n754
-end
-
-def fun_l18_n162()
- fun_l19_n578
-end
-
-def fun_l18_n163()
- fun_l19_n162
-end
-
-def fun_l18_n164()
- fun_l19_n88
-end
-
-def fun_l18_n165()
- fun_l19_n592
-end
-
-def fun_l18_n166()
- fun_l19_n621
-end
-
-def fun_l18_n167()
- fun_l19_n398
-end
-
-def fun_l18_n168()
- fun_l19_n585
-end
-
-def fun_l18_n169()
- fun_l19_n51
-end
-
-def fun_l18_n170()
- fun_l19_n715
-end
-
-def fun_l18_n171()
- fun_l19_n841
-end
-
-def fun_l18_n172()
- fun_l19_n882
-end
-
-def fun_l18_n173()
- fun_l19_n676
-end
-
-def fun_l18_n174()
- fun_l19_n93
-end
-
-def fun_l18_n175()
- fun_l19_n41
-end
-
-def fun_l18_n176()
- fun_l19_n565
-end
-
-def fun_l18_n177()
- fun_l19_n895
-end
-
-def fun_l18_n178()
- fun_l19_n743
-end
-
-def fun_l18_n179()
- fun_l19_n679
-end
-
-def fun_l18_n180()
- fun_l19_n77
-end
-
-def fun_l18_n181()
- fun_l19_n539
-end
-
-def fun_l18_n182()
- fun_l19_n439
-end
-
-def fun_l18_n183()
- fun_l19_n758
-end
-
-def fun_l18_n184()
- fun_l19_n327
-end
-
-def fun_l18_n185()
- fun_l19_n257
-end
-
-def fun_l18_n186()
- fun_l19_n544
-end
-
-def fun_l18_n187()
- fun_l19_n632
-end
-
-def fun_l18_n188()
- fun_l19_n83
-end
-
-def fun_l18_n189()
- fun_l19_n88
-end
-
-def fun_l18_n190()
- fun_l19_n244
-end
-
-def fun_l18_n191()
- fun_l19_n403
-end
-
-def fun_l18_n192()
- fun_l19_n644
-end
-
-def fun_l18_n193()
- fun_l19_n953
-end
-
-def fun_l18_n194()
- fun_l19_n690
-end
-
-def fun_l18_n195()
- fun_l19_n534
-end
-
-def fun_l18_n196()
- fun_l19_n352
-end
-
-def fun_l18_n197()
- fun_l19_n502
-end
-
-def fun_l18_n198()
- fun_l19_n924
-end
-
-def fun_l18_n199()
- fun_l19_n815
-end
-
-def fun_l18_n200()
- fun_l19_n910
-end
-
-def fun_l18_n201()
- fun_l19_n391
-end
-
-def fun_l18_n202()
- fun_l19_n144
-end
-
-def fun_l18_n203()
- fun_l19_n823
-end
-
-def fun_l18_n204()
- fun_l19_n732
-end
-
-def fun_l18_n205()
- fun_l19_n109
-end
-
-def fun_l18_n206()
- fun_l19_n677
-end
-
-def fun_l18_n207()
- fun_l19_n736
-end
-
-def fun_l18_n208()
- fun_l19_n141
-end
-
-def fun_l18_n209()
- fun_l19_n45
-end
-
-def fun_l18_n210()
- fun_l19_n11
-end
-
-def fun_l18_n211()
- fun_l19_n924
-end
-
-def fun_l18_n212()
- fun_l19_n940
-end
-
-def fun_l18_n213()
- fun_l19_n683
-end
-
-def fun_l18_n214()
- fun_l19_n383
-end
-
-def fun_l18_n215()
- fun_l19_n798
-end
-
-def fun_l18_n216()
- fun_l19_n99
-end
-
-def fun_l18_n217()
- fun_l19_n814
-end
-
-def fun_l18_n218()
- fun_l19_n827
-end
-
-def fun_l18_n219()
- fun_l19_n629
-end
-
-def fun_l18_n220()
- fun_l19_n814
-end
-
-def fun_l18_n221()
- fun_l19_n452
-end
-
-def fun_l18_n222()
- fun_l19_n388
-end
-
-def fun_l18_n223()
- fun_l19_n324
-end
-
-def fun_l18_n224()
- fun_l19_n233
-end
-
-def fun_l18_n225()
- fun_l19_n596
-end
-
-def fun_l18_n226()
- fun_l19_n396
-end
-
-def fun_l18_n227()
- fun_l19_n529
-end
-
-def fun_l18_n228()
- fun_l19_n603
-end
-
-def fun_l18_n229()
- fun_l19_n76
-end
-
-def fun_l18_n230()
- fun_l19_n799
-end
-
-def fun_l18_n231()
- fun_l19_n576
-end
-
-def fun_l18_n232()
- fun_l19_n35
-end
-
-def fun_l18_n233()
- fun_l19_n883
-end
-
-def fun_l18_n234()
- fun_l19_n776
-end
-
-def fun_l18_n235()
- fun_l19_n478
-end
-
-def fun_l18_n236()
- fun_l19_n922
-end
-
-def fun_l18_n237()
- fun_l19_n636
-end
-
-def fun_l18_n238()
- fun_l19_n680
-end
-
-def fun_l18_n239()
- fun_l19_n735
-end
-
-def fun_l18_n240()
- fun_l19_n893
-end
-
-def fun_l18_n241()
- fun_l19_n785
-end
-
-def fun_l18_n242()
- fun_l19_n325
-end
-
-def fun_l18_n243()
- fun_l19_n25
-end
-
-def fun_l18_n244()
- fun_l19_n930
-end
-
-def fun_l18_n245()
- fun_l19_n747
-end
-
-def fun_l18_n246()
- fun_l19_n808
-end
-
-def fun_l18_n247()
- fun_l19_n356
-end
-
-def fun_l18_n248()
- fun_l19_n16
-end
-
-def fun_l18_n249()
- fun_l19_n191
-end
-
-def fun_l18_n250()
- fun_l19_n772
-end
-
-def fun_l18_n251()
- fun_l19_n247
-end
-
-def fun_l18_n252()
- fun_l19_n112
-end
-
-def fun_l18_n253()
- fun_l19_n22
-end
-
-def fun_l18_n254()
- fun_l19_n15
-end
-
-def fun_l18_n255()
- fun_l19_n444
-end
-
-def fun_l18_n256()
- fun_l19_n498
-end
-
-def fun_l18_n257()
- fun_l19_n403
-end
-
-def fun_l18_n258()
- fun_l19_n572
-end
-
-def fun_l18_n259()
- fun_l19_n451
-end
-
-def fun_l18_n260()
- fun_l19_n224
-end
-
-def fun_l18_n261()
- fun_l19_n197
-end
-
-def fun_l18_n262()
- fun_l19_n891
-end
-
-def fun_l18_n263()
- fun_l19_n612
-end
-
-def fun_l18_n264()
- fun_l19_n107
-end
-
-def fun_l18_n265()
- fun_l19_n267
-end
-
-def fun_l18_n266()
- fun_l19_n746
-end
-
-def fun_l18_n267()
- fun_l19_n547
-end
-
-def fun_l18_n268()
- fun_l19_n608
-end
-
-def fun_l18_n269()
- fun_l19_n474
-end
-
-def fun_l18_n270()
- fun_l19_n285
-end
-
-def fun_l18_n271()
- fun_l19_n970
-end
-
-def fun_l18_n272()
- fun_l19_n227
-end
-
-def fun_l18_n273()
- fun_l19_n440
-end
-
-def fun_l18_n274()
- fun_l19_n816
-end
-
-def fun_l18_n275()
- fun_l19_n320
-end
-
-def fun_l18_n276()
- fun_l19_n237
-end
-
-def fun_l18_n277()
- fun_l19_n37
-end
-
-def fun_l18_n278()
- fun_l19_n408
-end
-
-def fun_l18_n279()
- fun_l19_n229
-end
-
-def fun_l18_n280()
- fun_l19_n576
-end
-
-def fun_l18_n281()
- fun_l19_n422
-end
-
-def fun_l18_n282()
- fun_l19_n725
-end
-
-def fun_l18_n283()
- fun_l19_n498
-end
-
-def fun_l18_n284()
- fun_l19_n28
-end
-
-def fun_l18_n285()
- fun_l19_n711
-end
-
-def fun_l18_n286()
- fun_l19_n222
-end
-
-def fun_l18_n287()
- fun_l19_n688
-end
-
-def fun_l18_n288()
- fun_l19_n885
-end
-
-def fun_l18_n289()
- fun_l19_n522
-end
-
-def fun_l18_n290()
- fun_l19_n776
-end
-
-def fun_l18_n291()
- fun_l19_n862
-end
-
-def fun_l18_n292()
- fun_l19_n415
-end
-
-def fun_l18_n293()
- fun_l19_n194
-end
-
-def fun_l18_n294()
- fun_l19_n652
-end
-
-def fun_l18_n295()
- fun_l19_n929
-end
-
-def fun_l18_n296()
- fun_l19_n923
-end
-
-def fun_l18_n297()
- fun_l19_n104
-end
-
-def fun_l18_n298()
- fun_l19_n191
-end
-
-def fun_l18_n299()
- fun_l19_n996
-end
-
-def fun_l18_n300()
- fun_l19_n426
-end
-
-def fun_l18_n301()
- fun_l19_n698
-end
-
-def fun_l18_n302()
- fun_l19_n397
-end
-
-def fun_l18_n303()
- fun_l19_n287
-end
-
-def fun_l18_n304()
- fun_l19_n731
-end
-
-def fun_l18_n305()
- fun_l19_n162
-end
-
-def fun_l18_n306()
- fun_l19_n794
-end
-
-def fun_l18_n307()
- fun_l19_n234
-end
-
-def fun_l18_n308()
- fun_l19_n184
-end
-
-def fun_l18_n309()
- fun_l19_n314
-end
-
-def fun_l18_n310()
- fun_l19_n259
-end
-
-def fun_l18_n311()
- fun_l19_n687
-end
-
-def fun_l18_n312()
- fun_l19_n653
-end
-
-def fun_l18_n313()
- fun_l19_n834
-end
-
-def fun_l18_n314()
- fun_l19_n519
-end
-
-def fun_l18_n315()
- fun_l19_n706
-end
-
-def fun_l18_n316()
- fun_l19_n860
-end
-
-def fun_l18_n317()
- fun_l19_n99
-end
-
-def fun_l18_n318()
- fun_l19_n757
-end
-
-def fun_l18_n319()
- fun_l19_n860
-end
-
-def fun_l18_n320()
- fun_l19_n266
-end
-
-def fun_l18_n321()
- fun_l19_n802
-end
-
-def fun_l18_n322()
- fun_l19_n349
-end
-
-def fun_l18_n323()
- fun_l19_n408
-end
-
-def fun_l18_n324()
- fun_l19_n539
-end
-
-def fun_l18_n325()
- fun_l19_n696
-end
-
-def fun_l18_n326()
- fun_l19_n233
-end
-
-def fun_l18_n327()
- fun_l19_n476
-end
-
-def fun_l18_n328()
- fun_l19_n101
-end
-
-def fun_l18_n329()
- fun_l19_n881
-end
-
-def fun_l18_n330()
- fun_l19_n699
-end
-
-def fun_l18_n331()
- fun_l19_n559
-end
-
-def fun_l18_n332()
- fun_l19_n990
-end
-
-def fun_l18_n333()
- fun_l19_n382
-end
-
-def fun_l18_n334()
- fun_l19_n941
-end
-
-def fun_l18_n335()
- fun_l19_n363
-end
-
-def fun_l18_n336()
- fun_l19_n870
-end
-
-def fun_l18_n337()
- fun_l19_n250
-end
-
-def fun_l18_n338()
- fun_l19_n209
-end
-
-def fun_l18_n339()
- fun_l19_n156
-end
-
-def fun_l18_n340()
- fun_l19_n320
-end
-
-def fun_l18_n341()
- fun_l19_n320
-end
-
-def fun_l18_n342()
- fun_l19_n68
-end
-
-def fun_l18_n343()
- fun_l19_n823
-end
-
-def fun_l18_n344()
- fun_l19_n713
-end
-
-def fun_l18_n345()
- fun_l19_n893
-end
-
-def fun_l18_n346()
- fun_l19_n628
-end
-
-def fun_l18_n347()
- fun_l19_n429
-end
-
-def fun_l18_n348()
- fun_l19_n766
-end
-
-def fun_l18_n349()
- fun_l19_n937
-end
-
-def fun_l18_n350()
- fun_l19_n983
-end
-
-def fun_l18_n351()
- fun_l19_n131
-end
-
-def fun_l18_n352()
- fun_l19_n76
-end
-
-def fun_l18_n353()
- fun_l19_n225
-end
-
-def fun_l18_n354()
- fun_l19_n979
-end
-
-def fun_l18_n355()
- fun_l19_n279
-end
-
-def fun_l18_n356()
- fun_l19_n434
-end
-
-def fun_l18_n357()
- fun_l19_n723
-end
-
-def fun_l18_n358()
- fun_l19_n44
-end
-
-def fun_l18_n359()
- fun_l19_n895
-end
-
-def fun_l18_n360()
- fun_l19_n602
-end
-
-def fun_l18_n361()
- fun_l19_n420
-end
-
-def fun_l18_n362()
- fun_l19_n318
-end
-
-def fun_l18_n363()
- fun_l19_n990
-end
-
-def fun_l18_n364()
- fun_l19_n318
-end
-
-def fun_l18_n365()
- fun_l19_n640
-end
-
-def fun_l18_n366()
- fun_l19_n679
-end
-
-def fun_l18_n367()
- fun_l19_n572
-end
-
-def fun_l18_n368()
- fun_l19_n411
-end
-
-def fun_l18_n369()
- fun_l19_n703
-end
-
-def fun_l18_n370()
- fun_l19_n39
-end
-
-def fun_l18_n371()
- fun_l19_n656
-end
-
-def fun_l18_n372()
- fun_l19_n960
-end
-
-def fun_l18_n373()
- fun_l19_n491
-end
-
-def fun_l18_n374()
- fun_l19_n916
-end
-
-def fun_l18_n375()
- fun_l19_n413
-end
-
-def fun_l18_n376()
- fun_l19_n90
-end
-
-def fun_l18_n377()
- fun_l19_n790
-end
-
-def fun_l18_n378()
- fun_l19_n424
-end
-
-def fun_l18_n379()
- fun_l19_n578
-end
-
-def fun_l18_n380()
- fun_l19_n555
-end
-
-def fun_l18_n381()
- fun_l19_n405
-end
-
-def fun_l18_n382()
- fun_l19_n378
-end
-
-def fun_l18_n383()
- fun_l19_n594
-end
-
-def fun_l18_n384()
- fun_l19_n593
-end
-
-def fun_l18_n385()
- fun_l19_n115
-end
-
-def fun_l18_n386()
- fun_l19_n67
-end
-
-def fun_l18_n387()
- fun_l19_n531
-end
-
-def fun_l18_n388()
- fun_l19_n7
-end
-
-def fun_l18_n389()
- fun_l19_n535
-end
-
-def fun_l18_n390()
- fun_l19_n35
-end
-
-def fun_l18_n391()
- fun_l19_n410
-end
-
-def fun_l18_n392()
- fun_l19_n811
-end
-
-def fun_l18_n393()
- fun_l19_n719
-end
-
-def fun_l18_n394()
- fun_l19_n859
-end
-
-def fun_l18_n395()
- fun_l19_n491
-end
-
-def fun_l18_n396()
- fun_l19_n131
-end
-
-def fun_l18_n397()
- fun_l19_n501
-end
-
-def fun_l18_n398()
- fun_l19_n917
-end
-
-def fun_l18_n399()
- fun_l19_n467
-end
-
-def fun_l18_n400()
- fun_l19_n189
-end
-
-def fun_l18_n401()
- fun_l19_n135
-end
-
-def fun_l18_n402()
- fun_l19_n105
-end
-
-def fun_l18_n403()
- fun_l19_n120
-end
-
-def fun_l18_n404()
- fun_l19_n611
-end
-
-def fun_l18_n405()
- fun_l19_n386
-end
-
-def fun_l18_n406()
- fun_l19_n239
-end
-
-def fun_l18_n407()
- fun_l19_n717
-end
-
-def fun_l18_n408()
- fun_l19_n425
-end
-
-def fun_l18_n409()
- fun_l19_n500
-end
-
-def fun_l18_n410()
- fun_l19_n424
-end
-
-def fun_l18_n411()
- fun_l19_n654
-end
-
-def fun_l18_n412()
- fun_l19_n243
-end
-
-def fun_l18_n413()
- fun_l19_n920
-end
-
-def fun_l18_n414()
- fun_l19_n556
-end
-
-def fun_l18_n415()
- fun_l19_n693
-end
-
-def fun_l18_n416()
- fun_l19_n656
-end
-
-def fun_l18_n417()
- fun_l19_n596
-end
-
-def fun_l18_n418()
- fun_l19_n573
-end
-
-def fun_l18_n419()
- fun_l19_n504
-end
-
-def fun_l18_n420()
- fun_l19_n5
-end
-
-def fun_l18_n421()
- fun_l19_n554
-end
-
-def fun_l18_n422()
- fun_l19_n852
-end
-
-def fun_l18_n423()
- fun_l19_n725
-end
-
-def fun_l18_n424()
- fun_l19_n121
-end
-
-def fun_l18_n425()
- fun_l19_n184
-end
-
-def fun_l18_n426()
- fun_l19_n752
-end
-
-def fun_l18_n427()
- fun_l19_n636
-end
-
-def fun_l18_n428()
- fun_l19_n858
-end
-
-def fun_l18_n429()
- fun_l19_n249
-end
-
-def fun_l18_n430()
- fun_l19_n696
-end
-
-def fun_l18_n431()
- fun_l19_n560
-end
-
-def fun_l18_n432()
- fun_l19_n978
-end
-
-def fun_l18_n433()
- fun_l19_n776
-end
-
-def fun_l18_n434()
- fun_l19_n954
-end
-
-def fun_l18_n435()
- fun_l19_n552
-end
-
-def fun_l18_n436()
- fun_l19_n238
-end
-
-def fun_l18_n437()
- fun_l19_n496
-end
-
-def fun_l18_n438()
- fun_l19_n444
-end
-
-def fun_l18_n439()
- fun_l19_n632
-end
-
-def fun_l18_n440()
- fun_l19_n243
-end
-
-def fun_l18_n441()
- fun_l19_n41
-end
-
-def fun_l18_n442()
- fun_l19_n267
-end
-
-def fun_l18_n443()
- fun_l19_n449
-end
-
-def fun_l18_n444()
- fun_l19_n718
-end
-
-def fun_l18_n445()
- fun_l19_n458
-end
-
-def fun_l18_n446()
- fun_l19_n23
-end
-
-def fun_l18_n447()
- fun_l19_n642
-end
-
-def fun_l18_n448()
- fun_l19_n46
-end
-
-def fun_l18_n449()
- fun_l19_n812
-end
-
-def fun_l18_n450()
- fun_l19_n659
-end
-
-def fun_l18_n451()
- fun_l19_n499
-end
-
-def fun_l18_n452()
- fun_l19_n691
-end
-
-def fun_l18_n453()
- fun_l19_n453
-end
-
-def fun_l18_n454()
- fun_l19_n348
-end
-
-def fun_l18_n455()
- fun_l19_n115
-end
-
-def fun_l18_n456()
- fun_l19_n429
-end
-
-def fun_l18_n457()
- fun_l19_n751
-end
-
-def fun_l18_n458()
- fun_l19_n669
-end
-
-def fun_l18_n459()
- fun_l19_n692
-end
-
-def fun_l18_n460()
- fun_l19_n510
-end
-
-def fun_l18_n461()
- fun_l19_n276
-end
-
-def fun_l18_n462()
- fun_l19_n967
-end
-
-def fun_l18_n463()
- fun_l19_n464
-end
-
-def fun_l18_n464()
- fun_l19_n742
-end
-
-def fun_l18_n465()
- fun_l19_n512
-end
-
-def fun_l18_n466()
- fun_l19_n864
-end
-
-def fun_l18_n467()
- fun_l19_n956
-end
-
-def fun_l18_n468()
- fun_l19_n547
-end
-
-def fun_l18_n469()
- fun_l19_n875
-end
-
-def fun_l18_n470()
- fun_l19_n840
-end
-
-def fun_l18_n471()
- fun_l19_n37
-end
-
-def fun_l18_n472()
- fun_l19_n499
-end
-
-def fun_l18_n473()
- fun_l19_n112
-end
-
-def fun_l18_n474()
- fun_l19_n293
-end
-
-def fun_l18_n475()
- fun_l19_n320
-end
-
-def fun_l18_n476()
- fun_l19_n502
-end
-
-def fun_l18_n477()
- fun_l19_n224
-end
-
-def fun_l18_n478()
- fun_l19_n145
-end
-
-def fun_l18_n479()
- fun_l19_n71
-end
-
-def fun_l18_n480()
- fun_l19_n349
-end
-
-def fun_l18_n481()
- fun_l19_n302
-end
-
-def fun_l18_n482()
- fun_l19_n205
-end
-
-def fun_l18_n483()
- fun_l19_n951
-end
-
-def fun_l18_n484()
- fun_l19_n630
-end
-
-def fun_l18_n485()
- fun_l19_n288
-end
-
-def fun_l18_n486()
- fun_l19_n542
-end
-
-def fun_l18_n487()
- fun_l19_n146
-end
-
-def fun_l18_n488()
- fun_l19_n530
-end
-
-def fun_l18_n489()
- fun_l19_n762
-end
-
-def fun_l18_n490()
- fun_l19_n207
-end
-
-def fun_l18_n491()
- fun_l19_n915
-end
-
-def fun_l18_n492()
- fun_l19_n424
-end
-
-def fun_l18_n493()
- fun_l19_n959
-end
-
-def fun_l18_n494()
- fun_l19_n4
-end
-
-def fun_l18_n495()
- fun_l19_n349
-end
-
-def fun_l18_n496()
- fun_l19_n533
-end
-
-def fun_l18_n497()
- fun_l19_n727
-end
-
-def fun_l18_n498()
- fun_l19_n42
-end
-
-def fun_l18_n499()
- fun_l19_n321
-end
-
-def fun_l18_n500()
- fun_l19_n440
-end
-
-def fun_l18_n501()
- fun_l19_n401
-end
-
-def fun_l18_n502()
- fun_l19_n857
-end
-
-def fun_l18_n503()
- fun_l19_n750
-end
-
-def fun_l18_n504()
- fun_l19_n494
-end
-
-def fun_l18_n505()
- fun_l19_n848
-end
-
-def fun_l18_n506()
- fun_l19_n676
-end
-
-def fun_l18_n507()
- fun_l19_n390
-end
-
-def fun_l18_n508()
- fun_l19_n135
-end
-
-def fun_l18_n509()
- fun_l19_n241
-end
-
-def fun_l18_n510()
- fun_l19_n290
-end
-
-def fun_l18_n511()
- fun_l19_n912
-end
-
-def fun_l18_n512()
- fun_l19_n410
-end
-
-def fun_l18_n513()
- fun_l19_n911
-end
-
-def fun_l18_n514()
- fun_l19_n173
-end
-
-def fun_l18_n515()
- fun_l19_n383
-end
-
-def fun_l18_n516()
- fun_l19_n540
-end
-
-def fun_l18_n517()
- fun_l19_n434
-end
-
-def fun_l18_n518()
- fun_l19_n997
-end
-
-def fun_l18_n519()
- fun_l19_n355
-end
-
-def fun_l18_n520()
- fun_l19_n825
-end
-
-def fun_l18_n521()
- fun_l19_n711
-end
-
-def fun_l18_n522()
- fun_l19_n937
-end
-
-def fun_l18_n523()
- fun_l19_n191
-end
-
-def fun_l18_n524()
- fun_l19_n284
-end
-
-def fun_l18_n525()
- fun_l19_n483
-end
-
-def fun_l18_n526()
- fun_l19_n163
-end
-
-def fun_l18_n527()
- fun_l19_n514
-end
-
-def fun_l18_n528()
- fun_l19_n111
-end
-
-def fun_l18_n529()
- fun_l19_n339
-end
-
-def fun_l18_n530()
- fun_l19_n322
-end
-
-def fun_l18_n531()
- fun_l19_n208
-end
-
-def fun_l18_n532()
- fun_l19_n34
-end
-
-def fun_l18_n533()
- fun_l19_n106
-end
-
-def fun_l18_n534()
- fun_l19_n532
-end
-
-def fun_l18_n535()
- fun_l19_n277
-end
-
-def fun_l18_n536()
- fun_l19_n936
-end
-
-def fun_l18_n537()
- fun_l19_n955
-end
-
-def fun_l18_n538()
- fun_l19_n75
-end
-
-def fun_l18_n539()
- fun_l19_n349
-end
-
-def fun_l18_n540()
- fun_l19_n430
-end
-
-def fun_l18_n541()
- fun_l19_n598
-end
-
-def fun_l18_n542()
- fun_l19_n336
-end
-
-def fun_l18_n543()
- fun_l19_n763
-end
-
-def fun_l18_n544()
- fun_l19_n150
-end
-
-def fun_l18_n545()
- fun_l19_n301
-end
-
-def fun_l18_n546()
- fun_l19_n600
-end
-
-def fun_l18_n547()
- fun_l19_n576
-end
-
-def fun_l18_n548()
- fun_l19_n119
-end
-
-def fun_l18_n549()
- fun_l19_n681
-end
-
-def fun_l18_n550()
- fun_l19_n303
-end
-
-def fun_l18_n551()
- fun_l19_n498
-end
-
-def fun_l18_n552()
- fun_l19_n75
-end
-
-def fun_l18_n553()
- fun_l19_n690
-end
-
-def fun_l18_n554()
- fun_l19_n496
-end
-
-def fun_l18_n555()
- fun_l19_n542
-end
-
-def fun_l18_n556()
- fun_l19_n684
-end
-
-def fun_l18_n557()
- fun_l19_n315
-end
-
-def fun_l18_n558()
- fun_l19_n470
-end
-
-def fun_l18_n559()
- fun_l19_n357
-end
-
-def fun_l18_n560()
- fun_l19_n805
-end
-
-def fun_l18_n561()
- fun_l19_n306
-end
-
-def fun_l18_n562()
- fun_l19_n460
-end
-
-def fun_l18_n563()
- fun_l19_n173
-end
-
-def fun_l18_n564()
- fun_l19_n327
-end
-
-def fun_l18_n565()
- fun_l19_n871
-end
-
-def fun_l18_n566()
- fun_l19_n792
-end
-
-def fun_l18_n567()
- fun_l19_n251
-end
-
-def fun_l18_n568()
- fun_l19_n113
-end
-
-def fun_l18_n569()
- fun_l19_n877
-end
-
-def fun_l18_n570()
- fun_l19_n921
-end
-
-def fun_l18_n571()
- fun_l19_n610
-end
-
-def fun_l18_n572()
- fun_l19_n895
-end
-
-def fun_l18_n573()
- fun_l19_n215
-end
-
-def fun_l18_n574()
- fun_l19_n751
-end
-
-def fun_l18_n575()
- fun_l19_n2
-end
-
-def fun_l18_n576()
- fun_l19_n32
-end
-
-def fun_l18_n577()
- fun_l19_n447
-end
-
-def fun_l18_n578()
- fun_l19_n652
-end
-
-def fun_l18_n579()
- fun_l19_n74
-end
-
-def fun_l18_n580()
- fun_l19_n487
-end
-
-def fun_l18_n581()
- fun_l19_n522
-end
-
-def fun_l18_n582()
- fun_l19_n422
-end
-
-def fun_l18_n583()
- fun_l19_n951
-end
-
-def fun_l18_n584()
- fun_l19_n216
-end
-
-def fun_l18_n585()
- fun_l19_n897
-end
-
-def fun_l18_n586()
- fun_l19_n469
-end
-
-def fun_l18_n587()
- fun_l19_n315
-end
-
-def fun_l18_n588()
- fun_l19_n937
-end
-
-def fun_l18_n589()
- fun_l19_n685
-end
-
-def fun_l18_n590()
- fun_l19_n322
-end
-
-def fun_l18_n591()
- fun_l19_n234
-end
-
-def fun_l18_n592()
- fun_l19_n693
-end
-
-def fun_l18_n593()
- fun_l19_n941
-end
-
-def fun_l18_n594()
- fun_l19_n626
-end
-
-def fun_l18_n595()
- fun_l19_n729
-end
-
-def fun_l18_n596()
- fun_l19_n65
-end
-
-def fun_l18_n597()
- fun_l19_n359
-end
-
-def fun_l18_n598()
- fun_l19_n826
-end
-
-def fun_l18_n599()
- fun_l19_n631
-end
-
-def fun_l18_n600()
- fun_l19_n156
-end
-
-def fun_l18_n601()
- fun_l19_n132
-end
-
-def fun_l18_n602()
- fun_l19_n23
-end
-
-def fun_l18_n603()
- fun_l19_n867
-end
-
-def fun_l18_n604()
- fun_l19_n327
-end
-
-def fun_l18_n605()
- fun_l19_n9
-end
-
-def fun_l18_n606()
- fun_l19_n99
-end
-
-def fun_l18_n607()
- fun_l19_n597
-end
-
-def fun_l18_n608()
- fun_l19_n969
-end
-
-def fun_l18_n609()
- fun_l19_n106
-end
-
-def fun_l18_n610()
- fun_l19_n183
-end
-
-def fun_l18_n611()
- fun_l19_n956
-end
-
-def fun_l18_n612()
- fun_l19_n661
-end
-
-def fun_l18_n613()
- fun_l19_n562
-end
-
-def fun_l18_n614()
- fun_l19_n49
-end
-
-def fun_l18_n615()
- fun_l19_n769
-end
-
-def fun_l18_n616()
- fun_l19_n215
-end
-
-def fun_l18_n617()
- fun_l19_n89
-end
-
-def fun_l18_n618()
- fun_l19_n928
-end
-
-def fun_l18_n619()
- fun_l19_n213
-end
-
-def fun_l18_n620()
- fun_l19_n215
-end
-
-def fun_l18_n621()
- fun_l19_n472
-end
-
-def fun_l18_n622()
- fun_l19_n363
-end
-
-def fun_l18_n623()
- fun_l19_n251
-end
-
-def fun_l18_n624()
- fun_l19_n780
-end
-
-def fun_l18_n625()
- fun_l19_n414
-end
-
-def fun_l18_n626()
- fun_l19_n348
-end
-
-def fun_l18_n627()
- fun_l19_n268
-end
-
-def fun_l18_n628()
- fun_l19_n772
-end
-
-def fun_l18_n629()
- fun_l19_n232
-end
-
-def fun_l18_n630()
- fun_l19_n775
-end
-
-def fun_l18_n631()
- fun_l19_n181
-end
-
-def fun_l18_n632()
- fun_l19_n953
-end
-
-def fun_l18_n633()
- fun_l19_n927
-end
-
-def fun_l18_n634()
- fun_l19_n241
-end
-
-def fun_l18_n635()
- fun_l19_n426
-end
-
-def fun_l18_n636()
- fun_l19_n337
-end
-
-def fun_l18_n637()
- fun_l19_n948
-end
-
-def fun_l18_n638()
- fun_l19_n703
-end
-
-def fun_l18_n639()
- fun_l19_n938
-end
-
-def fun_l18_n640()
- fun_l19_n432
-end
-
-def fun_l18_n641()
- fun_l19_n117
-end
-
-def fun_l18_n642()
- fun_l19_n362
-end
-
-def fun_l18_n643()
- fun_l19_n956
-end
-
-def fun_l18_n644()
- fun_l19_n947
-end
-
-def fun_l18_n645()
- fun_l19_n954
-end
-
-def fun_l18_n646()
- fun_l19_n159
-end
-
-def fun_l18_n647()
- fun_l19_n838
-end
-
-def fun_l18_n648()
- fun_l19_n614
-end
-
-def fun_l18_n649()
- fun_l19_n589
-end
-
-def fun_l18_n650()
- fun_l19_n16
-end
-
-def fun_l18_n651()
- fun_l19_n721
-end
-
-def fun_l18_n652()
- fun_l19_n608
-end
-
-def fun_l18_n653()
- fun_l19_n462
-end
-
-def fun_l18_n654()
- fun_l19_n66
-end
-
-def fun_l18_n655()
- fun_l19_n219
-end
-
-def fun_l18_n656()
- fun_l19_n660
-end
-
-def fun_l18_n657()
- fun_l19_n466
-end
-
-def fun_l18_n658()
- fun_l19_n441
-end
-
-def fun_l18_n659()
- fun_l19_n140
-end
-
-def fun_l18_n660()
- fun_l19_n538
-end
-
-def fun_l18_n661()
- fun_l19_n602
-end
-
-def fun_l18_n662()
- fun_l19_n94
-end
-
-def fun_l18_n663()
- fun_l19_n435
-end
-
-def fun_l18_n664()
- fun_l19_n632
-end
-
-def fun_l18_n665()
- fun_l19_n404
-end
-
-def fun_l18_n666()
- fun_l19_n894
-end
-
-def fun_l18_n667()
- fun_l19_n668
-end
-
-def fun_l18_n668()
- fun_l19_n802
-end
-
-def fun_l18_n669()
- fun_l19_n785
-end
-
-def fun_l18_n670()
- fun_l19_n16
-end
-
-def fun_l18_n671()
- fun_l19_n124
-end
-
-def fun_l18_n672()
- fun_l19_n587
-end
-
-def fun_l18_n673()
- fun_l19_n605
-end
-
-def fun_l18_n674()
- fun_l19_n903
-end
-
-def fun_l18_n675()
- fun_l19_n980
-end
-
-def fun_l18_n676()
- fun_l19_n463
-end
-
-def fun_l18_n677()
- fun_l19_n716
-end
-
-def fun_l18_n678()
- fun_l19_n815
-end
-
-def fun_l18_n679()
- fun_l19_n909
-end
-
-def fun_l18_n680()
- fun_l19_n924
-end
-
-def fun_l18_n681()
- fun_l19_n383
-end
-
-def fun_l18_n682()
- fun_l19_n761
-end
-
-def fun_l18_n683()
- fun_l19_n663
-end
-
-def fun_l18_n684()
- fun_l19_n176
-end
-
-def fun_l18_n685()
- fun_l19_n87
-end
-
-def fun_l18_n686()
- fun_l19_n1
-end
-
-def fun_l18_n687()
- fun_l19_n953
-end
-
-def fun_l18_n688()
- fun_l19_n737
-end
-
-def fun_l18_n689()
- fun_l19_n792
-end
-
-def fun_l18_n690()
- fun_l19_n165
-end
-
-def fun_l18_n691()
- fun_l19_n266
-end
-
-def fun_l18_n692()
- fun_l19_n357
-end
-
-def fun_l18_n693()
- fun_l19_n780
-end
-
-def fun_l18_n694()
- fun_l19_n893
-end
-
-def fun_l18_n695()
- fun_l19_n280
-end
-
-def fun_l18_n696()
- fun_l19_n117
-end
-
-def fun_l18_n697()
- fun_l19_n985
-end
-
-def fun_l18_n698()
- fun_l19_n306
-end
-
-def fun_l18_n699()
- fun_l19_n421
-end
-
-def fun_l18_n700()
- fun_l19_n62
-end
-
-def fun_l18_n701()
- fun_l19_n384
-end
-
-def fun_l18_n702()
- fun_l19_n394
-end
-
-def fun_l18_n703()
- fun_l19_n707
-end
-
-def fun_l18_n704()
- fun_l19_n599
-end
-
-def fun_l18_n705()
- fun_l19_n590
-end
-
-def fun_l18_n706()
- fun_l19_n49
-end
-
-def fun_l18_n707()
- fun_l19_n529
-end
-
-def fun_l18_n708()
- fun_l19_n824
-end
-
-def fun_l18_n709()
- fun_l19_n481
-end
-
-def fun_l18_n710()
- fun_l19_n221
-end
-
-def fun_l18_n711()
- fun_l19_n305
-end
-
-def fun_l18_n712()
- fun_l19_n612
-end
-
-def fun_l18_n713()
- fun_l19_n809
-end
-
-def fun_l18_n714()
- fun_l19_n41
-end
-
-def fun_l18_n715()
- fun_l19_n477
-end
-
-def fun_l18_n716()
- fun_l19_n717
-end
-
-def fun_l18_n717()
- fun_l19_n447
-end
-
-def fun_l18_n718()
- fun_l19_n501
-end
-
-def fun_l18_n719()
- fun_l19_n86
-end
-
-def fun_l18_n720()
- fun_l19_n250
-end
-
-def fun_l18_n721()
- fun_l19_n504
-end
-
-def fun_l18_n722()
- fun_l19_n274
-end
-
-def fun_l18_n723()
- fun_l19_n167
-end
-
-def fun_l18_n724()
- fun_l19_n824
-end
-
-def fun_l18_n725()
- fun_l19_n188
-end
-
-def fun_l18_n726()
- fun_l19_n953
-end
-
-def fun_l18_n727()
- fun_l19_n61
-end
-
-def fun_l18_n728()
- fun_l19_n242
-end
-
-def fun_l18_n729()
- fun_l19_n167
-end
-
-def fun_l18_n730()
- fun_l19_n936
-end
-
-def fun_l18_n731()
- fun_l19_n293
-end
-
-def fun_l18_n732()
- fun_l19_n951
-end
-
-def fun_l18_n733()
- fun_l19_n235
-end
-
-def fun_l18_n734()
- fun_l19_n718
-end
-
-def fun_l18_n735()
- fun_l19_n930
-end
-
-def fun_l18_n736()
- fun_l19_n842
-end
-
-def fun_l18_n737()
- fun_l19_n697
-end
-
-def fun_l18_n738()
- fun_l19_n503
-end
-
-def fun_l18_n739()
- fun_l19_n789
-end
-
-def fun_l18_n740()
- fun_l19_n87
-end
-
-def fun_l18_n741()
- fun_l19_n919
-end
-
-def fun_l18_n742()
- fun_l19_n26
-end
-
-def fun_l18_n743()
- fun_l19_n873
-end
-
-def fun_l18_n744()
- fun_l19_n334
-end
-
-def fun_l18_n745()
- fun_l19_n112
-end
-
-def fun_l18_n746()
- fun_l19_n648
-end
-
-def fun_l18_n747()
- fun_l19_n261
-end
-
-def fun_l18_n748()
- fun_l19_n617
-end
-
-def fun_l18_n749()
- fun_l19_n922
-end
-
-def fun_l18_n750()
- fun_l19_n434
-end
-
-def fun_l18_n751()
- fun_l19_n842
-end
-
-def fun_l18_n752()
- fun_l19_n498
-end
-
-def fun_l18_n753()
- fun_l19_n367
-end
-
-def fun_l18_n754()
- fun_l19_n799
-end
-
-def fun_l18_n755()
- fun_l19_n780
-end
-
-def fun_l18_n756()
- fun_l19_n119
-end
-
-def fun_l18_n757()
- fun_l19_n871
-end
-
-def fun_l18_n758()
- fun_l19_n293
-end
-
-def fun_l18_n759()
- fun_l19_n645
-end
-
-def fun_l18_n760()
- fun_l19_n226
-end
-
-def fun_l18_n761()
- fun_l19_n518
-end
-
-def fun_l18_n762()
- fun_l19_n223
-end
-
-def fun_l18_n763()
- fun_l19_n859
-end
-
-def fun_l18_n764()
- fun_l19_n545
-end
-
-def fun_l18_n765()
- fun_l19_n452
-end
-
-def fun_l18_n766()
- fun_l19_n538
-end
-
-def fun_l18_n767()
- fun_l19_n574
-end
-
-def fun_l18_n768()
- fun_l19_n605
-end
-
-def fun_l18_n769()
- fun_l19_n794
-end
-
-def fun_l18_n770()
- fun_l19_n35
-end
-
-def fun_l18_n771()
- fun_l19_n990
-end
-
-def fun_l18_n772()
- fun_l19_n276
-end
-
-def fun_l18_n773()
- fun_l19_n806
-end
-
-def fun_l18_n774()
- fun_l19_n321
-end
-
-def fun_l18_n775()
- fun_l19_n874
-end
-
-def fun_l18_n776()
- fun_l19_n349
-end
-
-def fun_l18_n777()
- fun_l19_n595
-end
-
-def fun_l18_n778()
- fun_l19_n944
-end
-
-def fun_l18_n779()
- fun_l19_n617
-end
-
-def fun_l18_n780()
- fun_l19_n982
-end
-
-def fun_l18_n781()
- fun_l19_n395
-end
-
-def fun_l18_n782()
- fun_l19_n362
-end
-
-def fun_l18_n783()
- fun_l19_n533
-end
-
-def fun_l18_n784()
- fun_l19_n646
-end
-
-def fun_l18_n785()
- fun_l19_n160
-end
-
-def fun_l18_n786()
- fun_l19_n288
-end
-
-def fun_l18_n787()
- fun_l19_n381
-end
-
-def fun_l18_n788()
- fun_l19_n299
-end
-
-def fun_l18_n789()
- fun_l19_n546
-end
-
-def fun_l18_n790()
- fun_l19_n906
-end
-
-def fun_l18_n791()
- fun_l19_n788
-end
-
-def fun_l18_n792()
- fun_l19_n389
-end
-
-def fun_l18_n793()
- fun_l19_n593
-end
-
-def fun_l18_n794()
- fun_l19_n224
-end
-
-def fun_l18_n795()
- fun_l19_n815
-end
-
-def fun_l18_n796()
- fun_l19_n533
-end
-
-def fun_l18_n797()
- fun_l19_n47
-end
-
-def fun_l18_n798()
- fun_l19_n457
-end
-
-def fun_l18_n799()
- fun_l19_n951
-end
-
-def fun_l18_n800()
- fun_l19_n680
-end
-
-def fun_l18_n801()
- fun_l19_n362
-end
-
-def fun_l18_n802()
- fun_l19_n667
-end
-
-def fun_l18_n803()
- fun_l19_n906
-end
-
-def fun_l18_n804()
- fun_l19_n444
-end
-
-def fun_l18_n805()
- fun_l19_n562
-end
-
-def fun_l18_n806()
- fun_l19_n472
-end
-
-def fun_l18_n807()
- fun_l19_n706
-end
-
-def fun_l18_n808()
- fun_l19_n611
-end
-
-def fun_l18_n809()
- fun_l19_n514
-end
-
-def fun_l18_n810()
- fun_l19_n742
-end
-
-def fun_l18_n811()
- fun_l19_n144
-end
-
-def fun_l18_n812()
- fun_l19_n938
-end
-
-def fun_l18_n813()
- fun_l19_n835
-end
-
-def fun_l18_n814()
- fun_l19_n127
-end
-
-def fun_l18_n815()
- fun_l19_n188
-end
-
-def fun_l18_n816()
- fun_l19_n511
-end
-
-def fun_l18_n817()
- fun_l19_n919
-end
-
-def fun_l18_n818()
- fun_l19_n46
-end
-
-def fun_l18_n819()
- fun_l19_n927
-end
-
-def fun_l18_n820()
- fun_l19_n655
-end
-
-def fun_l18_n821()
- fun_l19_n713
-end
-
-def fun_l18_n822()
- fun_l19_n803
-end
-
-def fun_l18_n823()
- fun_l19_n116
-end
-
-def fun_l18_n824()
- fun_l19_n139
-end
-
-def fun_l18_n825()
- fun_l19_n263
-end
-
-def fun_l18_n826()
- fun_l19_n728
-end
-
-def fun_l18_n827()
- fun_l19_n77
-end
-
-def fun_l18_n828()
- fun_l19_n958
-end
-
-def fun_l18_n829()
- fun_l19_n827
-end
-
-def fun_l18_n830()
- fun_l19_n738
-end
-
-def fun_l18_n831()
- fun_l19_n430
-end
-
-def fun_l18_n832()
- fun_l19_n16
-end
-
-def fun_l18_n833()
- fun_l19_n335
-end
-
-def fun_l18_n834()
- fun_l19_n674
-end
-
-def fun_l18_n835()
- fun_l19_n938
-end
-
-def fun_l18_n836()
- fun_l19_n460
-end
-
-def fun_l18_n837()
- fun_l19_n268
-end
-
-def fun_l18_n838()
- fun_l19_n250
-end
-
-def fun_l18_n839()
- fun_l19_n460
-end
-
-def fun_l18_n840()
- fun_l19_n966
-end
-
-def fun_l18_n841()
- fun_l19_n228
-end
-
-def fun_l18_n842()
- fun_l19_n90
-end
-
-def fun_l18_n843()
- fun_l19_n227
-end
-
-def fun_l18_n844()
- fun_l19_n494
-end
-
-def fun_l18_n845()
- fun_l19_n85
-end
-
-def fun_l18_n846()
- fun_l19_n497
-end
-
-def fun_l18_n847()
- fun_l19_n395
-end
-
-def fun_l18_n848()
- fun_l19_n874
-end
-
-def fun_l18_n849()
- fun_l19_n826
-end
-
-def fun_l18_n850()
- fun_l19_n467
-end
-
-def fun_l18_n851()
- fun_l19_n330
-end
-
-def fun_l18_n852()
- fun_l19_n229
-end
-
-def fun_l18_n853()
- fun_l19_n172
-end
-
-def fun_l18_n854()
- fun_l19_n604
-end
-
-def fun_l18_n855()
- fun_l19_n314
-end
-
-def fun_l18_n856()
- fun_l19_n553
-end
-
-def fun_l18_n857()
- fun_l19_n946
-end
-
-def fun_l18_n858()
- fun_l19_n347
-end
-
-def fun_l18_n859()
- fun_l19_n566
-end
-
-def fun_l18_n860()
- fun_l19_n144
-end
-
-def fun_l18_n861()
- fun_l19_n812
-end
-
-def fun_l18_n862()
- fun_l19_n615
-end
-
-def fun_l18_n863()
- fun_l19_n411
-end
-
-def fun_l18_n864()
- fun_l19_n67
-end
-
-def fun_l18_n865()
- fun_l19_n830
-end
-
-def fun_l18_n866()
- fun_l19_n849
-end
-
-def fun_l18_n867()
- fun_l19_n933
-end
-
-def fun_l18_n868()
- fun_l19_n892
-end
-
-def fun_l18_n869()
- fun_l19_n644
-end
-
-def fun_l18_n870()
- fun_l19_n567
-end
-
-def fun_l18_n871()
- fun_l19_n558
-end
-
-def fun_l18_n872()
- fun_l19_n766
-end
-
-def fun_l18_n873()
- fun_l19_n715
-end
-
-def fun_l18_n874()
- fun_l19_n641
-end
-
-def fun_l18_n875()
- fun_l19_n81
-end
-
-def fun_l18_n876()
- fun_l19_n472
-end
-
-def fun_l18_n877()
- fun_l19_n907
-end
-
-def fun_l18_n878()
- fun_l19_n426
-end
-
-def fun_l18_n879()
- fun_l19_n329
-end
-
-def fun_l18_n880()
- fun_l19_n935
-end
-
-def fun_l18_n881()
- fun_l19_n100
-end
-
-def fun_l18_n882()
- fun_l19_n540
-end
-
-def fun_l18_n883()
- fun_l19_n905
-end
-
-def fun_l18_n884()
- fun_l19_n991
-end
-
-def fun_l18_n885()
- fun_l19_n700
-end
-
-def fun_l18_n886()
- fun_l19_n698
-end
-
-def fun_l18_n887()
- fun_l19_n805
-end
-
-def fun_l18_n888()
- fun_l19_n736
-end
-
-def fun_l18_n889()
- fun_l19_n386
-end
-
-def fun_l18_n890()
- fun_l19_n895
-end
-
-def fun_l18_n891()
- fun_l19_n542
-end
-
-def fun_l18_n892()
- fun_l19_n261
-end
-
-def fun_l18_n893()
- fun_l19_n600
-end
-
-def fun_l18_n894()
- fun_l19_n153
-end
-
-def fun_l18_n895()
- fun_l19_n767
-end
-
-def fun_l18_n896()
- fun_l19_n201
-end
-
-def fun_l18_n897()
- fun_l19_n98
-end
-
-def fun_l18_n898()
- fun_l19_n423
-end
-
-def fun_l18_n899()
- fun_l19_n247
-end
-
-def fun_l18_n900()
- fun_l19_n720
-end
-
-def fun_l18_n901()
- fun_l19_n1
-end
-
-def fun_l18_n902()
- fun_l19_n21
-end
-
-def fun_l18_n903()
- fun_l19_n591
-end
-
-def fun_l18_n904()
- fun_l19_n36
-end
-
-def fun_l18_n905()
- fun_l19_n654
-end
-
-def fun_l18_n906()
- fun_l19_n378
-end
-
-def fun_l18_n907()
- fun_l19_n841
-end
-
-def fun_l18_n908()
- fun_l19_n685
-end
-
-def fun_l18_n909()
- fun_l19_n933
-end
-
-def fun_l18_n910()
- fun_l19_n71
-end
-
-def fun_l18_n911()
- fun_l19_n963
-end
-
-def fun_l18_n912()
- fun_l19_n590
-end
-
-def fun_l18_n913()
- fun_l19_n24
-end
-
-def fun_l18_n914()
- fun_l19_n213
-end
-
-def fun_l18_n915()
- fun_l19_n862
-end
-
-def fun_l18_n916()
- fun_l19_n2
-end
-
-def fun_l18_n917()
- fun_l19_n728
-end
-
-def fun_l18_n918()
- fun_l19_n23
-end
-
-def fun_l18_n919()
- fun_l19_n345
-end
-
-def fun_l18_n920()
- fun_l19_n515
-end
-
-def fun_l18_n921()
- fun_l19_n803
-end
-
-def fun_l18_n922()
- fun_l19_n378
-end
-
-def fun_l18_n923()
- fun_l19_n260
-end
-
-def fun_l18_n924()
- fun_l19_n824
-end
-
-def fun_l18_n925()
- fun_l19_n698
-end
-
-def fun_l18_n926()
- fun_l19_n719
-end
-
-def fun_l18_n927()
- fun_l19_n126
-end
-
-def fun_l18_n928()
- fun_l19_n647
-end
-
-def fun_l18_n929()
- fun_l19_n412
-end
-
-def fun_l18_n930()
- fun_l19_n617
-end
-
-def fun_l18_n931()
- fun_l19_n295
-end
-
-def fun_l18_n932()
- fun_l19_n231
-end
-
-def fun_l18_n933()
- fun_l19_n301
-end
-
-def fun_l18_n934()
- fun_l19_n25
-end
-
-def fun_l18_n935()
- fun_l19_n341
-end
-
-def fun_l18_n936()
- fun_l19_n845
-end
-
-def fun_l18_n937()
- fun_l19_n97
-end
-
-def fun_l18_n938()
- fun_l19_n787
-end
-
-def fun_l18_n939()
- fun_l19_n828
-end
-
-def fun_l18_n940()
- fun_l19_n298
-end
-
-def fun_l18_n941()
- fun_l19_n234
-end
-
-def fun_l18_n942()
- fun_l19_n74
-end
-
-def fun_l18_n943()
- fun_l19_n928
-end
-
-def fun_l18_n944()
- fun_l19_n276
-end
-
-def fun_l18_n945()
- fun_l19_n699
-end
-
-def fun_l18_n946()
- fun_l19_n507
-end
-
-def fun_l18_n947()
- fun_l19_n385
-end
-
-def fun_l18_n948()
- fun_l19_n651
-end
-
-def fun_l18_n949()
- fun_l19_n315
-end
-
-def fun_l18_n950()
- fun_l19_n289
-end
-
-def fun_l18_n951()
- fun_l19_n879
-end
-
-def fun_l18_n952()
- fun_l19_n549
-end
-
-def fun_l18_n953()
- fun_l19_n205
-end
-
-def fun_l18_n954()
- fun_l19_n468
-end
-
-def fun_l18_n955()
- fun_l19_n11
-end
-
-def fun_l18_n956()
- fun_l19_n644
-end
-
-def fun_l18_n957()
- fun_l19_n492
-end
-
-def fun_l18_n958()
- fun_l19_n94
-end
-
-def fun_l18_n959()
- fun_l19_n331
-end
-
-def fun_l18_n960()
- fun_l19_n708
-end
-
-def fun_l18_n961()
- fun_l19_n646
-end
-
-def fun_l18_n962()
- fun_l19_n206
-end
-
-def fun_l18_n963()
- fun_l19_n793
-end
-
-def fun_l18_n964()
- fun_l19_n426
-end
-
-def fun_l18_n965()
- fun_l19_n181
-end
-
-def fun_l18_n966()
- fun_l19_n773
-end
-
-def fun_l18_n967()
- fun_l19_n324
-end
-
-def fun_l18_n968()
- fun_l19_n451
-end
-
-def fun_l18_n969()
- fun_l19_n155
-end
-
-def fun_l18_n970()
- fun_l19_n812
-end
-
-def fun_l18_n971()
- fun_l19_n906
-end
-
-def fun_l18_n972()
- fun_l19_n367
-end
-
-def fun_l18_n973()
- fun_l19_n260
-end
-
-def fun_l18_n974()
- fun_l19_n226
-end
-
-def fun_l18_n975()
- fun_l19_n189
-end
-
-def fun_l18_n976()
- fun_l19_n32
-end
-
-def fun_l18_n977()
- fun_l19_n43
-end
-
-def fun_l18_n978()
- fun_l19_n285
-end
-
-def fun_l18_n979()
- fun_l19_n511
-end
-
-def fun_l18_n980()
- fun_l19_n714
-end
-
-def fun_l18_n981()
- fun_l19_n587
-end
-
-def fun_l18_n982()
- fun_l19_n247
-end
-
-def fun_l18_n983()
- fun_l19_n258
-end
-
-def fun_l18_n984()
- fun_l19_n115
-end
-
-def fun_l18_n985()
- fun_l19_n873
-end
-
-def fun_l18_n986()
- fun_l19_n452
-end
-
-def fun_l18_n987()
- fun_l19_n994
-end
-
-def fun_l18_n988()
- fun_l19_n912
-end
-
-def fun_l18_n989()
- fun_l19_n534
-end
-
-def fun_l18_n990()
- fun_l19_n186
-end
-
-def fun_l18_n991()
- fun_l19_n49
-end
-
-def fun_l18_n992()
- fun_l19_n676
-end
-
-def fun_l18_n993()
- fun_l19_n466
-end
-
-def fun_l18_n994()
- fun_l19_n571
-end
-
-def fun_l18_n995()
- fun_l19_n573
-end
-
-def fun_l18_n996()
- fun_l19_n47
-end
-
-def fun_l18_n997()
- fun_l19_n657
-end
-
-def fun_l18_n998()
- fun_l19_n11
-end
-
-def fun_l18_n999()
- fun_l19_n342
-end
-
-def fun_l19_n0()
- fun_l20_n278
-end
-
-def fun_l19_n1()
- fun_l20_n159
-end
-
-def fun_l19_n2()
- fun_l20_n289
-end
-
-def fun_l19_n3()
- fun_l20_n766
-end
-
-def fun_l19_n4()
- fun_l20_n45
-end
-
-def fun_l19_n5()
- fun_l20_n453
-end
-
-def fun_l19_n6()
- fun_l20_n581
-end
-
-def fun_l19_n7()
- fun_l20_n607
-end
-
-def fun_l19_n8()
- fun_l20_n427
-end
-
-def fun_l19_n9()
- fun_l20_n287
-end
-
-def fun_l19_n10()
- fun_l20_n28
-end
-
-def fun_l19_n11()
- fun_l20_n456
-end
-
-def fun_l19_n12()
- fun_l20_n283
-end
-
-def fun_l19_n13()
- fun_l20_n451
-end
-
-def fun_l19_n14()
- fun_l20_n220
-end
-
-def fun_l19_n15()
- fun_l20_n497
-end
-
-def fun_l19_n16()
- fun_l20_n295
-end
-
-def fun_l19_n17()
- fun_l20_n66
-end
-
-def fun_l19_n18()
- fun_l20_n863
-end
-
-def fun_l19_n19()
- fun_l20_n919
-end
-
-def fun_l19_n20()
- fun_l20_n712
-end
-
-def fun_l19_n21()
- fun_l20_n323
-end
-
-def fun_l19_n22()
- fun_l20_n666
-end
-
-def fun_l19_n23()
- fun_l20_n947
-end
-
-def fun_l19_n24()
- fun_l20_n422
-end
-
-def fun_l19_n25()
- fun_l20_n728
-end
-
-def fun_l19_n26()
- fun_l20_n886
-end
-
-def fun_l19_n27()
- fun_l20_n585
-end
-
-def fun_l19_n28()
- fun_l20_n835
-end
-
-def fun_l19_n29()
- fun_l20_n812
-end
-
-def fun_l19_n30()
- fun_l20_n425
-end
-
-def fun_l19_n31()
- fun_l20_n378
-end
-
-def fun_l19_n32()
- fun_l20_n128
-end
-
-def fun_l19_n33()
- fun_l20_n714
-end
-
-def fun_l19_n34()
- fun_l20_n502
-end
-
-def fun_l19_n35()
- fun_l20_n447
-end
-
-def fun_l19_n36()
- fun_l20_n512
-end
-
-def fun_l19_n37()
- fun_l20_n642
-end
-
-def fun_l19_n38()
- fun_l20_n839
-end
-
-def fun_l19_n39()
- fun_l20_n539
-end
-
-def fun_l19_n40()
- fun_l20_n204
-end
-
-def fun_l19_n41()
- fun_l20_n294
-end
-
-def fun_l19_n42()
- fun_l20_n360
-end
-
-def fun_l19_n43()
- fun_l20_n132
-end
-
-def fun_l19_n44()
- fun_l20_n529
-end
-
-def fun_l19_n45()
- fun_l20_n783
-end
-
-def fun_l19_n46()
- fun_l20_n694
-end
-
-def fun_l19_n47()
- fun_l20_n939
-end
-
-def fun_l19_n48()
- fun_l20_n972
-end
-
-def fun_l19_n49()
- fun_l20_n187
-end
-
-def fun_l19_n50()
- fun_l20_n236
-end
-
-def fun_l19_n51()
- fun_l20_n218
-end
-
-def fun_l19_n52()
- fun_l20_n278
-end
-
-def fun_l19_n53()
- fun_l20_n895
-end
-
-def fun_l19_n54()
- fun_l20_n967
-end
-
-def fun_l19_n55()
- fun_l20_n110
-end
-
-def fun_l19_n56()
- fun_l20_n918
-end
-
-def fun_l19_n57()
- fun_l20_n458
-end
-
-def fun_l19_n58()
- fun_l20_n262
-end
-
-def fun_l19_n59()
- fun_l20_n978
-end
-
-def fun_l19_n60()
- fun_l20_n434
-end
-
-def fun_l19_n61()
- fun_l20_n86
-end
-
-def fun_l19_n62()
- fun_l20_n364
-end
-
-def fun_l19_n63()
- fun_l20_n92
-end
-
-def fun_l19_n64()
- fun_l20_n173
-end
-
-def fun_l19_n65()
- fun_l20_n530
-end
-
-def fun_l19_n66()
- fun_l20_n291
-end
-
-def fun_l19_n67()
- fun_l20_n758
-end
-
-def fun_l19_n68()
- fun_l20_n311
-end
-
-def fun_l19_n69()
- fun_l20_n984
-end
-
-def fun_l19_n70()
- fun_l20_n976
-end
-
-def fun_l19_n71()
- fun_l20_n622
-end
-
-def fun_l19_n72()
- fun_l20_n467
-end
-
-def fun_l19_n73()
- fun_l20_n369
-end
-
-def fun_l19_n74()
- fun_l20_n81
-end
-
-def fun_l19_n75()
- fun_l20_n6
-end
-
-def fun_l19_n76()
- fun_l20_n23
-end
-
-def fun_l19_n77()
- fun_l20_n631
-end
-
-def fun_l19_n78()
- fun_l20_n535
-end
-
-def fun_l19_n79()
- fun_l20_n572
-end
-
-def fun_l19_n80()
- fun_l20_n905
-end
-
-def fun_l19_n81()
- fun_l20_n709
-end
-
-def fun_l19_n82()
- fun_l20_n362
-end
-
-def fun_l19_n83()
- fun_l20_n505
-end
-
-def fun_l19_n84()
- fun_l20_n247
-end
-
-def fun_l19_n85()
- fun_l20_n88
-end
-
-def fun_l19_n86()
- fun_l20_n214
-end
-
-def fun_l19_n87()
- fun_l20_n607
-end
-
-def fun_l19_n88()
- fun_l20_n161
-end
-
-def fun_l19_n89()
- fun_l20_n419
-end
-
-def fun_l19_n90()
- fun_l20_n514
-end
-
-def fun_l19_n91()
- fun_l20_n879
-end
-
-def fun_l19_n92()
- fun_l20_n11
-end
-
-def fun_l19_n93()
- fun_l20_n269
-end
-
-def fun_l19_n94()
- fun_l20_n685
-end
-
-def fun_l19_n95()
- fun_l20_n435
-end
-
-def fun_l19_n96()
- fun_l20_n183
-end
-
-def fun_l19_n97()
- fun_l20_n548
-end
-
-def fun_l19_n98()
- fun_l20_n460
-end
-
-def fun_l19_n99()
- fun_l20_n636
-end
-
-def fun_l19_n100()
- fun_l20_n829
-end
-
-def fun_l19_n101()
- fun_l20_n224
-end
-
-def fun_l19_n102()
- fun_l20_n291
-end
-
-def fun_l19_n103()
- fun_l20_n498
-end
-
-def fun_l19_n104()
- fun_l20_n403
-end
-
-def fun_l19_n105()
- fun_l20_n699
-end
-
-def fun_l19_n106()
- fun_l20_n851
-end
-
-def fun_l19_n107()
- fun_l20_n400
-end
-
-def fun_l19_n108()
- fun_l20_n834
-end
-
-def fun_l19_n109()
- fun_l20_n635
-end
-
-def fun_l19_n110()
- fun_l20_n651
-end
-
-def fun_l19_n111()
- fun_l20_n930
-end
-
-def fun_l19_n112()
- fun_l20_n547
-end
-
-def fun_l19_n113()
- fun_l20_n237
-end
-
-def fun_l19_n114()
- fun_l20_n298
-end
-
-def fun_l19_n115()
- fun_l20_n979
-end
-
-def fun_l19_n116()
- fun_l20_n409
-end
-
-def fun_l19_n117()
- fun_l20_n942
-end
-
-def fun_l19_n118()
- fun_l20_n224
-end
-
-def fun_l19_n119()
- fun_l20_n288
-end
-
-def fun_l19_n120()
- fun_l20_n42
-end
-
-def fun_l19_n121()
- fun_l20_n718
-end
-
-def fun_l19_n122()
- fun_l20_n392
-end
-
-def fun_l19_n123()
- fun_l20_n375
-end
-
-def fun_l19_n124()
- fun_l20_n499
-end
-
-def fun_l19_n125()
- fun_l20_n499
-end
-
-def fun_l19_n126()
- fun_l20_n998
-end
-
-def fun_l19_n127()
- fun_l20_n659
-end
-
-def fun_l19_n128()
- fun_l20_n782
-end
-
-def fun_l19_n129()
- fun_l20_n607
-end
-
-def fun_l19_n130()
- fun_l20_n802
-end
-
-def fun_l19_n131()
- fun_l20_n773
-end
-
-def fun_l19_n132()
- fun_l20_n861
-end
-
-def fun_l19_n133()
- fun_l20_n38
-end
-
-def fun_l19_n134()
- fun_l20_n614
-end
-
-def fun_l19_n135()
- fun_l20_n546
-end
-
-def fun_l19_n136()
- fun_l20_n890
-end
-
-def fun_l19_n137()
- fun_l20_n987
-end
-
-def fun_l19_n138()
- fun_l20_n518
-end
-
-def fun_l19_n139()
- fun_l20_n708
-end
-
-def fun_l19_n140()
- fun_l20_n838
-end
-
-def fun_l19_n141()
- fun_l20_n642
-end
-
-def fun_l19_n142()
- fun_l20_n275
-end
-
-def fun_l19_n143()
- fun_l20_n274
-end
-
-def fun_l19_n144()
- fun_l20_n479
-end
-
-def fun_l19_n145()
- fun_l20_n215
-end
-
-def fun_l19_n146()
- fun_l20_n794
-end
-
-def fun_l19_n147()
- fun_l20_n329
-end
-
-def fun_l19_n148()
- fun_l20_n146
-end
-
-def fun_l19_n149()
- fun_l20_n561
-end
-
-def fun_l19_n150()
- fun_l20_n782
-end
-
-def fun_l19_n151()
- fun_l20_n903
-end
-
-def fun_l19_n152()
- fun_l20_n97
-end
-
-def fun_l19_n153()
- fun_l20_n962
-end
-
-def fun_l19_n154()
- fun_l20_n758
-end
-
-def fun_l19_n155()
- fun_l20_n58
-end
-
-def fun_l19_n156()
- fun_l20_n683
-end
-
-def fun_l19_n157()
- fun_l20_n48
-end
-
-def fun_l19_n158()
- fun_l20_n476
-end
-
-def fun_l19_n159()
- fun_l20_n19
-end
-
-def fun_l19_n160()
- fun_l20_n938
-end
-
-def fun_l19_n161()
- fun_l20_n40
-end
-
-def fun_l19_n162()
- fun_l20_n817
-end
-
-def fun_l19_n163()
- fun_l20_n745
-end
-
-def fun_l19_n164()
- fun_l20_n10
-end
-
-def fun_l19_n165()
- fun_l20_n486
-end
-
-def fun_l19_n166()
- fun_l20_n321
-end
-
-def fun_l19_n167()
- fun_l20_n255
-end
-
-def fun_l19_n168()
- fun_l20_n286
-end
-
-def fun_l19_n169()
- fun_l20_n777
-end
-
-def fun_l19_n170()
- fun_l20_n985
-end
-
-def fun_l19_n171()
- fun_l20_n827
-end
-
-def fun_l19_n172()
- fun_l20_n422
-end
-
-def fun_l19_n173()
- fun_l20_n194
-end
-
-def fun_l19_n174()
- fun_l20_n399
-end
-
-def fun_l19_n175()
- fun_l20_n562
-end
-
-def fun_l19_n176()
- fun_l20_n808
-end
-
-def fun_l19_n177()
- fun_l20_n646
-end
-
-def fun_l19_n178()
- fun_l20_n806
-end
-
-def fun_l19_n179()
- fun_l20_n203
-end
-
-def fun_l19_n180()
- fun_l20_n426
-end
-
-def fun_l19_n181()
- fun_l20_n361
-end
-
-def fun_l19_n182()
- fun_l20_n738
-end
-
-def fun_l19_n183()
- fun_l20_n446
-end
-
-def fun_l19_n184()
- fun_l20_n781
-end
-
-def fun_l19_n185()
- fun_l20_n521
-end
-
-def fun_l19_n186()
- fun_l20_n599
-end
-
-def fun_l19_n187()
- fun_l20_n178
-end
-
-def fun_l19_n188()
- fun_l20_n15
-end
-
-def fun_l19_n189()
- fun_l20_n846
-end
-
-def fun_l19_n190()
- fun_l20_n888
-end
-
-def fun_l19_n191()
- fun_l20_n53
-end
-
-def fun_l19_n192()
- fun_l20_n943
-end
-
-def fun_l19_n193()
- fun_l20_n73
-end
-
-def fun_l19_n194()
- fun_l20_n918
-end
-
-def fun_l19_n195()
- fun_l20_n924
-end
-
-def fun_l19_n196()
- fun_l20_n37
-end
-
-def fun_l19_n197()
- fun_l20_n674
-end
-
-def fun_l19_n198()
- fun_l20_n167
-end
-
-def fun_l19_n199()
- fun_l20_n167
-end
-
-def fun_l19_n200()
- fun_l20_n201
-end
-
-def fun_l19_n201()
- fun_l20_n785
-end
-
-def fun_l19_n202()
- fun_l20_n980
-end
-
-def fun_l19_n203()
- fun_l20_n295
-end
-
-def fun_l19_n204()
- fun_l20_n586
-end
-
-def fun_l19_n205()
- fun_l20_n541
-end
-
-def fun_l19_n206()
- fun_l20_n220
-end
-
-def fun_l19_n207()
- fun_l20_n956
-end
-
-def fun_l19_n208()
- fun_l20_n195
-end
-
-def fun_l19_n209()
- fun_l20_n232
-end
-
-def fun_l19_n210()
- fun_l20_n91
-end
-
-def fun_l19_n211()
- fun_l20_n525
-end
-
-def fun_l19_n212()
- fun_l20_n50
-end
-
-def fun_l19_n213()
- fun_l20_n635
-end
-
-def fun_l19_n214()
- fun_l20_n24
-end
-
-def fun_l19_n215()
- fun_l20_n795
-end
-
-def fun_l19_n216()
- fun_l20_n743
-end
-
-def fun_l19_n217()
- fun_l20_n418
-end
-
-def fun_l19_n218()
- fun_l20_n63
-end
-
-def fun_l19_n219()
- fun_l20_n866
-end
-
-def fun_l19_n220()
- fun_l20_n195
-end
-
-def fun_l19_n221()
- fun_l20_n178
-end
-
-def fun_l19_n222()
- fun_l20_n147
-end
-
-def fun_l19_n223()
- fun_l20_n891
-end
-
-def fun_l19_n224()
- fun_l20_n804
-end
-
-def fun_l19_n225()
- fun_l20_n379
-end
-
-def fun_l19_n226()
- fun_l20_n894
-end
-
-def fun_l19_n227()
- fun_l20_n767
-end
-
-def fun_l19_n228()
- fun_l20_n532
-end
-
-def fun_l19_n229()
- fun_l20_n69
-end
-
-def fun_l19_n230()
- fun_l20_n602
-end
-
-def fun_l19_n231()
- fun_l20_n933
-end
-
-def fun_l19_n232()
- fun_l20_n940
-end
-
-def fun_l19_n233()
- fun_l20_n935
-end
-
-def fun_l19_n234()
- fun_l20_n234
-end
-
-def fun_l19_n235()
- fun_l20_n984
-end
-
-def fun_l19_n236()
- fun_l20_n962
-end
-
-def fun_l19_n237()
- fun_l20_n334
-end
-
-def fun_l19_n238()
- fun_l20_n945
-end
-
-def fun_l19_n239()
- fun_l20_n778
-end
-
-def fun_l19_n240()
- fun_l20_n946
-end
-
-def fun_l19_n241()
- fun_l20_n27
-end
-
-def fun_l19_n242()
- fun_l20_n535
-end
-
-def fun_l19_n243()
- fun_l20_n940
-end
-
-def fun_l19_n244()
- fun_l20_n991
-end
-
-def fun_l19_n245()
- fun_l20_n926
-end
-
-def fun_l19_n246()
- fun_l20_n945
-end
-
-def fun_l19_n247()
- fun_l20_n56
-end
-
-def fun_l19_n248()
- fun_l20_n529
-end
-
-def fun_l19_n249()
- fun_l20_n497
-end
-
-def fun_l19_n250()
- fun_l20_n823
-end
-
-def fun_l19_n251()
- fun_l20_n296
-end
-
-def fun_l19_n252()
- fun_l20_n342
-end
-
-def fun_l19_n253()
- fun_l20_n843
-end
-
-def fun_l19_n254()
- fun_l20_n95
-end
-
-def fun_l19_n255()
- fun_l20_n0
-end
-
-def fun_l19_n256()
- fun_l20_n289
-end
-
-def fun_l19_n257()
- fun_l20_n816
-end
-
-def fun_l19_n258()
- fun_l20_n318
-end
-
-def fun_l19_n259()
- fun_l20_n401
-end
-
-def fun_l19_n260()
- fun_l20_n495
-end
-
-def fun_l19_n261()
- fun_l20_n331
-end
-
-def fun_l19_n262()
- fun_l20_n457
-end
-
-def fun_l19_n263()
- fun_l20_n169
-end
-
-def fun_l19_n264()
- fun_l20_n736
-end
-
-def fun_l19_n265()
- fun_l20_n12
-end
-
-def fun_l19_n266()
- fun_l20_n552
-end
-
-def fun_l19_n267()
- fun_l20_n350
-end
-
-def fun_l19_n268()
- fun_l20_n417
-end
-
-def fun_l19_n269()
- fun_l20_n960
-end
-
-def fun_l19_n270()
- fun_l20_n251
-end
-
-def fun_l19_n271()
- fun_l20_n218
-end
-
-def fun_l19_n272()
- fun_l20_n496
-end
-
-def fun_l19_n273()
- fun_l20_n262
-end
-
-def fun_l19_n274()
- fun_l20_n617
-end
-
-def fun_l19_n275()
- fun_l20_n225
-end
-
-def fun_l19_n276()
- fun_l20_n878
-end
-
-def fun_l19_n277()
- fun_l20_n538
-end
-
-def fun_l19_n278()
- fun_l20_n99
-end
-
-def fun_l19_n279()
- fun_l20_n654
-end
-
-def fun_l19_n280()
- fun_l20_n460
-end
-
-def fun_l19_n281()
- fun_l20_n108
-end
-
-def fun_l19_n282()
- fun_l20_n62
-end
-
-def fun_l19_n283()
- fun_l20_n855
-end
-
-def fun_l19_n284()
- fun_l20_n790
-end
-
-def fun_l19_n285()
- fun_l20_n838
-end
-
-def fun_l19_n286()
- fun_l20_n570
-end
-
-def fun_l19_n287()
- fun_l20_n376
-end
-
-def fun_l19_n288()
- fun_l20_n219
-end
-
-def fun_l19_n289()
- fun_l20_n793
-end
-
-def fun_l19_n290()
- fun_l20_n17
-end
-
-def fun_l19_n291()
- fun_l20_n408
-end
-
-def fun_l19_n292()
- fun_l20_n224
-end
-
-def fun_l19_n293()
- fun_l20_n953
-end
-
-def fun_l19_n294()
- fun_l20_n0
-end
-
-def fun_l19_n295()
- fun_l20_n15
-end
-
-def fun_l19_n296()
- fun_l20_n304
-end
-
-def fun_l19_n297()
- fun_l20_n917
-end
-
-def fun_l19_n298()
- fun_l20_n903
-end
-
-def fun_l19_n299()
- fun_l20_n151
-end
-
-def fun_l19_n300()
- fun_l20_n704
-end
-
-def fun_l19_n301()
- fun_l20_n559
-end
-
-def fun_l19_n302()
- fun_l20_n957
-end
-
-def fun_l19_n303()
- fun_l20_n607
-end
-
-def fun_l19_n304()
- fun_l20_n776
-end
-
-def fun_l19_n305()
- fun_l20_n661
-end
-
-def fun_l19_n306()
- fun_l20_n545
-end
-
-def fun_l19_n307()
- fun_l20_n735
-end
-
-def fun_l19_n308()
- fun_l20_n427
-end
-
-def fun_l19_n309()
- fun_l20_n427
-end
-
-def fun_l19_n310()
- fun_l20_n11
-end
-
-def fun_l19_n311()
- fun_l20_n109
-end
-
-def fun_l19_n312()
- fun_l20_n84
-end
-
-def fun_l19_n313()
- fun_l20_n106
-end
-
-def fun_l19_n314()
- fun_l20_n758
-end
-
-def fun_l19_n315()
- fun_l20_n343
-end
-
-def fun_l19_n316()
- fun_l20_n998
-end
-
-def fun_l19_n317()
- fun_l20_n174
-end
-
-def fun_l19_n318()
- fun_l20_n12
-end
-
-def fun_l19_n319()
- fun_l20_n116
-end
-
-def fun_l19_n320()
- fun_l20_n517
-end
-
-def fun_l19_n321()
- fun_l20_n15
-end
-
-def fun_l19_n322()
- fun_l20_n441
-end
-
-def fun_l19_n323()
- fun_l20_n25
-end
-
-def fun_l19_n324()
- fun_l20_n101
-end
-
-def fun_l19_n325()
- fun_l20_n160
-end
-
-def fun_l19_n326()
- fun_l20_n784
-end
-
-def fun_l19_n327()
- fun_l20_n940
-end
-
-def fun_l19_n328()
- fun_l20_n969
-end
-
-def fun_l19_n329()
- fun_l20_n306
-end
-
-def fun_l19_n330()
- fun_l20_n337
-end
-
-def fun_l19_n331()
- fun_l20_n199
-end
-
-def fun_l19_n332()
- fun_l20_n341
-end
-
-def fun_l19_n333()
- fun_l20_n2
-end
-
-def fun_l19_n334()
- fun_l20_n954
-end
-
-def fun_l19_n335()
- fun_l20_n463
-end
-
-def fun_l19_n336()
- fun_l20_n16
-end
-
-def fun_l19_n337()
- fun_l20_n566
-end
-
-def fun_l19_n338()
- fun_l20_n807
-end
-
-def fun_l19_n339()
- fun_l20_n785
-end
-
-def fun_l19_n340()
- fun_l20_n577
-end
-
-def fun_l19_n341()
- fun_l20_n744
-end
-
-def fun_l19_n342()
- fun_l20_n769
-end
-
-def fun_l19_n343()
- fun_l20_n120
-end
-
-def fun_l19_n344()
- fun_l20_n846
-end
-
-def fun_l19_n345()
- fun_l20_n7
-end
-
-def fun_l19_n346()
- fun_l20_n517
-end
-
-def fun_l19_n347()
- fun_l20_n138
-end
-
-def fun_l19_n348()
- fun_l20_n551
-end
-
-def fun_l19_n349()
- fun_l20_n667
-end
-
-def fun_l19_n350()
- fun_l20_n983
-end
-
-def fun_l19_n351()
- fun_l20_n941
-end
-
-def fun_l19_n352()
- fun_l20_n278
-end
-
-def fun_l19_n353()
- fun_l20_n360
-end
-
-def fun_l19_n354()
- fun_l20_n327
-end
-
-def fun_l19_n355()
- fun_l20_n414
-end
-
-def fun_l19_n356()
- fun_l20_n200
-end
-
-def fun_l19_n357()
- fun_l20_n298
-end
-
-def fun_l19_n358()
- fun_l20_n337
-end
-
-def fun_l19_n359()
- fun_l20_n602
-end
-
-def fun_l19_n360()
- fun_l20_n631
-end
-
-def fun_l19_n361()
- fun_l20_n100
-end
-
-def fun_l19_n362()
- fun_l20_n179
-end
-
-def fun_l19_n363()
- fun_l20_n710
-end
-
-def fun_l19_n364()
- fun_l20_n1
-end
-
-def fun_l19_n365()
- fun_l20_n88
-end
-
-def fun_l19_n366()
- fun_l20_n98
-end
-
-def fun_l19_n367()
- fun_l20_n499
-end
-
-def fun_l19_n368()
- fun_l20_n610
-end
-
-def fun_l19_n369()
- fun_l20_n243
-end
-
-def fun_l19_n370()
- fun_l20_n954
-end
-
-def fun_l19_n371()
- fun_l20_n204
-end
-
-def fun_l19_n372()
- fun_l20_n618
-end
-
-def fun_l19_n373()
- fun_l20_n513
-end
-
-def fun_l19_n374()
- fun_l20_n341
-end
-
-def fun_l19_n375()
- fun_l20_n31
-end
-
-def fun_l19_n376()
- fun_l20_n627
-end
-
-def fun_l19_n377()
- fun_l20_n817
-end
-
-def fun_l19_n378()
- fun_l20_n545
-end
-
-def fun_l19_n379()
- fun_l20_n236
-end
-
-def fun_l19_n380()
- fun_l20_n926
-end
-
-def fun_l19_n381()
- fun_l20_n167
-end
-
-def fun_l19_n382()
- fun_l20_n287
-end
-
-def fun_l19_n383()
- fun_l20_n264
-end
-
-def fun_l19_n384()
- fun_l20_n16
-end
-
-def fun_l19_n385()
- fun_l20_n197
-end
-
-def fun_l19_n386()
- fun_l20_n791
-end
-
-def fun_l19_n387()
- fun_l20_n124
-end
-
-def fun_l19_n388()
- fun_l20_n351
-end
-
-def fun_l19_n389()
- fun_l20_n893
-end
-
-def fun_l19_n390()
- fun_l20_n191
-end
-
-def fun_l19_n391()
- fun_l20_n441
-end
-
-def fun_l19_n392()
- fun_l20_n781
-end
-
-def fun_l19_n393()
- fun_l20_n614
-end
-
-def fun_l19_n394()
- fun_l20_n301
-end
-
-def fun_l19_n395()
- fun_l20_n749
-end
-
-def fun_l19_n396()
- fun_l20_n815
-end
-
-def fun_l19_n397()
- fun_l20_n380
-end
-
-def fun_l19_n398()
- fun_l20_n594
-end
-
-def fun_l19_n399()
- fun_l20_n279
-end
-
-def fun_l19_n400()
- fun_l20_n313
-end
-
-def fun_l19_n401()
- fun_l20_n151
-end
-
-def fun_l19_n402()
- fun_l20_n101
-end
-
-def fun_l19_n403()
- fun_l20_n573
-end
-
-def fun_l19_n404()
- fun_l20_n386
-end
-
-def fun_l19_n405()
- fun_l20_n40
-end
-
-def fun_l19_n406()
- fun_l20_n383
-end
-
-def fun_l19_n407()
- fun_l20_n612
-end
-
-def fun_l19_n408()
- fun_l20_n555
-end
-
-def fun_l19_n409()
- fun_l20_n507
-end
-
-def fun_l19_n410()
- fun_l20_n519
-end
-
-def fun_l19_n411()
- fun_l20_n842
-end
-
-def fun_l19_n412()
- fun_l20_n867
-end
-
-def fun_l19_n413()
- fun_l20_n84
-end
-
-def fun_l19_n414()
- fun_l20_n84
-end
-
-def fun_l19_n415()
- fun_l20_n304
-end
-
-def fun_l19_n416()
- fun_l20_n776
-end
-
-def fun_l19_n417()
- fun_l20_n712
-end
-
-def fun_l19_n418()
- fun_l20_n447
-end
-
-def fun_l19_n419()
- fun_l20_n428
-end
-
-def fun_l19_n420()
- fun_l20_n350
-end
-
-def fun_l19_n421()
- fun_l20_n989
-end
-
-def fun_l19_n422()
- fun_l20_n444
-end
-
-def fun_l19_n423()
- fun_l20_n771
-end
-
-def fun_l19_n424()
- fun_l20_n228
-end
-
-def fun_l19_n425()
- fun_l20_n870
-end
-
-def fun_l19_n426()
- fun_l20_n553
-end
-
-def fun_l19_n427()
- fun_l20_n529
-end
-
-def fun_l19_n428()
- fun_l20_n118
-end
-
-def fun_l19_n429()
- fun_l20_n886
-end
-
-def fun_l19_n430()
- fun_l20_n731
-end
-
-def fun_l19_n431()
- fun_l20_n585
-end
-
-def fun_l19_n432()
- fun_l20_n997
-end
-
-def fun_l19_n433()
- fun_l20_n927
-end
-
-def fun_l19_n434()
- fun_l20_n739
-end
-
-def fun_l19_n435()
- fun_l20_n691
-end
-
-def fun_l19_n436()
- fun_l20_n446
-end
-
-def fun_l19_n437()
- fun_l20_n932
-end
-
-def fun_l19_n438()
- fun_l20_n297
-end
-
-def fun_l19_n439()
- fun_l20_n118
-end
-
-def fun_l19_n440()
- fun_l20_n464
-end
-
-def fun_l19_n441()
- fun_l20_n367
-end
-
-def fun_l19_n442()
- fun_l20_n450
-end
-
-def fun_l19_n443()
- fun_l20_n690
-end
-
-def fun_l19_n444()
- fun_l20_n996
-end
-
-def fun_l19_n445()
- fun_l20_n328
-end
-
-def fun_l19_n446()
- fun_l20_n873
-end
-
-def fun_l19_n447()
- fun_l20_n843
-end
-
-def fun_l19_n448()
- fun_l20_n89
-end
-
-def fun_l19_n449()
- fun_l20_n485
-end
-
-def fun_l19_n450()
- fun_l20_n343
-end
-
-def fun_l19_n451()
- fun_l20_n852
-end
-
-def fun_l19_n452()
- fun_l20_n545
-end
-
-def fun_l19_n453()
- fun_l20_n41
-end
-
-def fun_l19_n454()
- fun_l20_n376
-end
-
-def fun_l19_n455()
- fun_l20_n625
-end
-
-def fun_l19_n456()
- fun_l20_n495
-end
-
-def fun_l19_n457()
- fun_l20_n82
-end
-
-def fun_l19_n458()
- fun_l20_n238
-end
-
-def fun_l19_n459()
- fun_l20_n355
-end
-
-def fun_l19_n460()
- fun_l20_n530
-end
-
-def fun_l19_n461()
- fun_l20_n926
-end
-
-def fun_l19_n462()
- fun_l20_n721
-end
-
-def fun_l19_n463()
- fun_l20_n724
-end
-
-def fun_l19_n464()
- fun_l20_n280
-end
-
-def fun_l19_n465()
- fun_l20_n656
-end
-
-def fun_l19_n466()
- fun_l20_n78
-end
-
-def fun_l19_n467()
- fun_l20_n353
-end
-
-def fun_l19_n468()
- fun_l20_n712
-end
-
-def fun_l19_n469()
- fun_l20_n849
-end
-
-def fun_l19_n470()
- fun_l20_n682
-end
-
-def fun_l19_n471()
- fun_l20_n964
-end
-
-def fun_l19_n472()
- fun_l20_n483
-end
-
-def fun_l19_n473()
- fun_l20_n6
-end
-
-def fun_l19_n474()
- fun_l20_n19
-end
-
-def fun_l19_n475()
- fun_l20_n206
-end
-
-def fun_l19_n476()
- fun_l20_n165
-end
-
-def fun_l19_n477()
- fun_l20_n514
-end
-
-def fun_l19_n478()
- fun_l20_n380
-end
-
-def fun_l19_n479()
- fun_l20_n381
-end
-
-def fun_l19_n480()
- fun_l20_n210
-end
-
-def fun_l19_n481()
- fun_l20_n972
-end
-
-def fun_l19_n482()
- fun_l20_n211
-end
-
-def fun_l19_n483()
- fun_l20_n795
-end
-
-def fun_l19_n484()
- fun_l20_n441
-end
-
-def fun_l19_n485()
- fun_l20_n539
-end
-
-def fun_l19_n486()
- fun_l20_n217
-end
-
-def fun_l19_n487()
- fun_l20_n644
-end
-
-def fun_l19_n488()
- fun_l20_n641
-end
-
-def fun_l19_n489()
- fun_l20_n179
-end
-
-def fun_l19_n490()
- fun_l20_n643
-end
-
-def fun_l19_n491()
- fun_l20_n797
-end
-
-def fun_l19_n492()
- fun_l20_n863
-end
-
-def fun_l19_n493()
- fun_l20_n915
-end
-
-def fun_l19_n494()
- fun_l20_n13
-end
-
-def fun_l19_n495()
- fun_l20_n427
-end
-
-def fun_l19_n496()
- fun_l20_n40
-end
-
-def fun_l19_n497()
- fun_l20_n724
-end
-
-def fun_l19_n498()
- fun_l20_n666
-end
-
-def fun_l19_n499()
- fun_l20_n876
-end
-
-def fun_l19_n500()
- fun_l20_n980
-end
-
-def fun_l19_n501()
- fun_l20_n817
-end
-
-def fun_l19_n502()
- fun_l20_n158
-end
-
-def fun_l19_n503()
- fun_l20_n738
-end
-
-def fun_l19_n504()
- fun_l20_n347
-end
-
-def fun_l19_n505()
- fun_l20_n941
-end
-
-def fun_l19_n506()
- fun_l20_n330
-end
-
-def fun_l19_n507()
- fun_l20_n196
-end
-
-def fun_l19_n508()
- fun_l20_n961
-end
-
-def fun_l19_n509()
- fun_l20_n909
-end
-
-def fun_l19_n510()
- fun_l20_n489
-end
-
-def fun_l19_n511()
- fun_l20_n341
-end
-
-def fun_l19_n512()
- fun_l20_n437
-end
-
-def fun_l19_n513()
- fun_l20_n293
-end
-
-def fun_l19_n514()
- fun_l20_n388
-end
-
-def fun_l19_n515()
- fun_l20_n85
-end
-
-def fun_l19_n516()
- fun_l20_n769
-end
-
-def fun_l19_n517()
- fun_l20_n875
-end
-
-def fun_l19_n518()
- fun_l20_n247
-end
-
-def fun_l19_n519()
- fun_l20_n607
-end
-
-def fun_l19_n520()
- fun_l20_n119
-end
-
-def fun_l19_n521()
- fun_l20_n44
-end
-
-def fun_l19_n522()
- fun_l20_n870
-end
-
-def fun_l19_n523()
- fun_l20_n815
-end
-
-def fun_l19_n524()
- fun_l20_n393
-end
-
-def fun_l19_n525()
- fun_l20_n158
-end
-
-def fun_l19_n526()
- fun_l20_n139
-end
-
-def fun_l19_n527()
- fun_l20_n808
-end
-
-def fun_l19_n528()
- fun_l20_n549
-end
-
-def fun_l19_n529()
- fun_l20_n725
-end
-
-def fun_l19_n530()
- fun_l20_n758
-end
-
-def fun_l19_n531()
- fun_l20_n650
-end
-
-def fun_l19_n532()
- fun_l20_n739
-end
-
-def fun_l19_n533()
- fun_l20_n912
-end
-
-def fun_l19_n534()
- fun_l20_n632
-end
-
-def fun_l19_n535()
- fun_l20_n889
-end
-
-def fun_l19_n536()
- fun_l20_n609
-end
-
-def fun_l19_n537()
- fun_l20_n997
-end
-
-def fun_l19_n538()
- fun_l20_n773
-end
-
-def fun_l19_n539()
- fun_l20_n48
-end
-
-def fun_l19_n540()
- fun_l20_n102
-end
-
-def fun_l19_n541()
- fun_l20_n392
-end
-
-def fun_l19_n542()
- fun_l20_n570
-end
-
-def fun_l19_n543()
- fun_l20_n36
-end
-
-def fun_l19_n544()
- fun_l20_n400
-end
-
-def fun_l19_n545()
- fun_l20_n545
-end
-
-def fun_l19_n546()
- fun_l20_n27
-end
-
-def fun_l19_n547()
- fun_l20_n746
-end
-
-def fun_l19_n548()
- fun_l20_n796
-end
-
-def fun_l19_n549()
- fun_l20_n651
-end
-
-def fun_l19_n550()
- fun_l20_n719
-end
-
-def fun_l19_n551()
- fun_l20_n941
-end
-
-def fun_l19_n552()
- fun_l20_n799
-end
-
-def fun_l19_n553()
- fun_l20_n900
-end
-
-def fun_l19_n554()
- fun_l20_n288
-end
-
-def fun_l19_n555()
- fun_l20_n52
-end
-
-def fun_l19_n556()
- fun_l20_n497
-end
-
-def fun_l19_n557()
- fun_l20_n781
-end
-
-def fun_l19_n558()
- fun_l20_n209
-end
-
-def fun_l19_n559()
- fun_l20_n157
-end
-
-def fun_l19_n560()
- fun_l20_n102
-end
-
-def fun_l19_n561()
- fun_l20_n248
-end
-
-def fun_l19_n562()
- fun_l20_n760
-end
-
-def fun_l19_n563()
- fun_l20_n640
-end
-
-def fun_l19_n564()
- fun_l20_n30
-end
-
-def fun_l19_n565()
- fun_l20_n375
-end
-
-def fun_l19_n566()
- fun_l20_n472
-end
-
-def fun_l19_n567()
- fun_l20_n223
-end
-
-def fun_l19_n568()
- fun_l20_n834
-end
-
-def fun_l19_n569()
- fun_l20_n804
-end
-
-def fun_l19_n570()
- fun_l20_n620
-end
-
-def fun_l19_n571()
- fun_l20_n942
-end
-
-def fun_l19_n572()
- fun_l20_n58
-end
-
-def fun_l19_n573()
- fun_l20_n113
-end
-
-def fun_l19_n574()
- fun_l20_n884
-end
-
-def fun_l19_n575()
- fun_l20_n965
-end
-
-def fun_l19_n576()
- fun_l20_n975
-end
-
-def fun_l19_n577()
- fun_l20_n840
-end
-
-def fun_l19_n578()
- fun_l20_n422
-end
-
-def fun_l19_n579()
- fun_l20_n213
-end
-
-def fun_l19_n580()
- fun_l20_n338
-end
-
-def fun_l19_n581()
- fun_l20_n823
-end
-
-def fun_l19_n582()
- fun_l20_n284
-end
-
-def fun_l19_n583()
- fun_l20_n706
-end
-
-def fun_l19_n584()
- fun_l20_n148
-end
-
-def fun_l19_n585()
- fun_l20_n750
-end
-
-def fun_l19_n586()
- fun_l20_n556
-end
-
-def fun_l19_n587()
- fun_l20_n939
-end
-
-def fun_l19_n588()
- fun_l20_n885
-end
-
-def fun_l19_n589()
- fun_l20_n36
-end
-
-def fun_l19_n590()
- fun_l20_n771
-end
-
-def fun_l19_n591()
- fun_l20_n958
-end
-
-def fun_l19_n592()
- fun_l20_n829
-end
-
-def fun_l19_n593()
- fun_l20_n334
-end
-
-def fun_l19_n594()
- fun_l20_n546
-end
-
-def fun_l19_n595()
- fun_l20_n269
-end
-
-def fun_l19_n596()
- fun_l20_n528
-end
-
-def fun_l19_n597()
- fun_l20_n63
-end
-
-def fun_l19_n598()
- fun_l20_n10
-end
-
-def fun_l19_n599()
- fun_l20_n160
-end
-
-def fun_l19_n600()
- fun_l20_n750
-end
-
-def fun_l19_n601()
- fun_l20_n307
-end
-
-def fun_l19_n602()
- fun_l20_n700
-end
-
-def fun_l19_n603()
- fun_l20_n720
-end
-
-def fun_l19_n604()
- fun_l20_n60
-end
-
-def fun_l19_n605()
- fun_l20_n179
-end
-
-def fun_l19_n606()
- fun_l20_n425
-end
-
-def fun_l19_n607()
- fun_l20_n489
-end
-
-def fun_l19_n608()
- fun_l20_n804
-end
-
-def fun_l19_n609()
- fun_l20_n276
-end
-
-def fun_l19_n610()
- fun_l20_n888
-end
-
-def fun_l19_n611()
- fun_l20_n412
-end
-
-def fun_l19_n612()
- fun_l20_n715
-end
-
-def fun_l19_n613()
- fun_l20_n737
-end
-
-def fun_l19_n614()
- fun_l20_n332
-end
-
-def fun_l19_n615()
- fun_l20_n4
-end
-
-def fun_l19_n616()
- fun_l20_n114
-end
-
-def fun_l19_n617()
- fun_l20_n502
-end
-
-def fun_l19_n618()
- fun_l20_n825
-end
-
-def fun_l19_n619()
- fun_l20_n606
-end
-
-def fun_l19_n620()
- fun_l20_n396
-end
-
-def fun_l19_n621()
- fun_l20_n810
-end
-
-def fun_l19_n622()
- fun_l20_n158
-end
-
-def fun_l19_n623()
- fun_l20_n246
-end
-
-def fun_l19_n624()
- fun_l20_n973
-end
-
-def fun_l19_n625()
- fun_l20_n603
-end
-
-def fun_l19_n626()
- fun_l20_n192
-end
-
-def fun_l19_n627()
- fun_l20_n744
-end
-
-def fun_l19_n628()
- fun_l20_n82
-end
-
-def fun_l19_n629()
- fun_l20_n491
-end
-
-def fun_l19_n630()
- fun_l20_n576
-end
-
-def fun_l19_n631()
- fun_l20_n824
-end
-
-def fun_l19_n632()
- fun_l20_n711
-end
-
-def fun_l19_n633()
- fun_l20_n989
-end
-
-def fun_l19_n634()
- fun_l20_n392
-end
-
-def fun_l19_n635()
- fun_l20_n39
-end
-
-def fun_l19_n636()
- fun_l20_n755
-end
-
-def fun_l19_n637()
- fun_l20_n181
-end
-
-def fun_l19_n638()
- fun_l20_n538
-end
-
-def fun_l19_n639()
- fun_l20_n801
-end
-
-def fun_l19_n640()
- fun_l20_n837
-end
-
-def fun_l19_n641()
- fun_l20_n587
-end
-
-def fun_l19_n642()
- fun_l20_n680
-end
-
-def fun_l19_n643()
- fun_l20_n157
-end
-
-def fun_l19_n644()
- fun_l20_n885
-end
-
-def fun_l19_n645()
- fun_l20_n421
-end
-
-def fun_l19_n646()
- fun_l20_n928
-end
-
-def fun_l19_n647()
- fun_l20_n819
-end
-
-def fun_l19_n648()
- fun_l20_n206
-end
-
-def fun_l19_n649()
- fun_l20_n496
-end
-
-def fun_l19_n650()
- fun_l20_n706
-end
-
-def fun_l19_n651()
- fun_l20_n976
-end
-
-def fun_l19_n652()
- fun_l20_n54
-end
-
-def fun_l19_n653()
- fun_l20_n530
-end
-
-def fun_l19_n654()
- fun_l20_n893
-end
-
-def fun_l19_n655()
- fun_l20_n148
-end
-
-def fun_l19_n656()
- fun_l20_n461
-end
-
-def fun_l19_n657()
- fun_l20_n286
-end
-
-def fun_l19_n658()
- fun_l20_n214
-end
-
-def fun_l19_n659()
- fun_l20_n818
-end
-
-def fun_l19_n660()
- fun_l20_n685
-end
-
-def fun_l19_n661()
- fun_l20_n497
-end
-
-def fun_l19_n662()
- fun_l20_n251
-end
-
-def fun_l19_n663()
- fun_l20_n385
-end
-
-def fun_l19_n664()
- fun_l20_n93
-end
-
-def fun_l19_n665()
- fun_l20_n853
-end
-
-def fun_l19_n666()
- fun_l20_n298
-end
-
-def fun_l19_n667()
- fun_l20_n300
-end
-
-def fun_l19_n668()
- fun_l20_n702
-end
-
-def fun_l19_n669()
- fun_l20_n430
-end
-
-def fun_l19_n670()
- fun_l20_n688
-end
-
-def fun_l19_n671()
- fun_l20_n272
-end
-
-def fun_l19_n672()
- fun_l20_n351
-end
-
-def fun_l19_n673()
- fun_l20_n290
-end
-
-def fun_l19_n674()
- fun_l20_n45
-end
-
-def fun_l19_n675()
- fun_l20_n530
-end
-
-def fun_l19_n676()
- fun_l20_n477
-end
-
-def fun_l19_n677()
- fun_l20_n770
-end
-
-def fun_l19_n678()
- fun_l20_n49
-end
-
-def fun_l19_n679()
- fun_l20_n404
-end
-
-def fun_l19_n680()
- fun_l20_n344
-end
-
-def fun_l19_n681()
- fun_l20_n707
-end
-
-def fun_l19_n682()
- fun_l20_n18
-end
-
-def fun_l19_n683()
- fun_l20_n590
-end
-
-def fun_l19_n684()
- fun_l20_n281
-end
-
-def fun_l19_n685()
- fun_l20_n913
-end
-
-def fun_l19_n686()
- fun_l20_n884
-end
-
-def fun_l19_n687()
- fun_l20_n696
-end
-
-def fun_l19_n688()
- fun_l20_n727
-end
-
-def fun_l19_n689()
- fun_l20_n168
-end
-
-def fun_l19_n690()
- fun_l20_n178
-end
-
-def fun_l19_n691()
- fun_l20_n414
-end
-
-def fun_l19_n692()
- fun_l20_n331
-end
-
-def fun_l19_n693()
- fun_l20_n701
-end
-
-def fun_l19_n694()
- fun_l20_n795
-end
-
-def fun_l19_n695()
- fun_l20_n413
-end
-
-def fun_l19_n696()
- fun_l20_n613
-end
-
-def fun_l19_n697()
- fun_l20_n129
-end
-
-def fun_l19_n698()
- fun_l20_n162
-end
-
-def fun_l19_n699()
- fun_l20_n24
-end
-
-def fun_l19_n700()
- fun_l20_n497
-end
-
-def fun_l19_n701()
- fun_l20_n850
-end
-
-def fun_l19_n702()
- fun_l20_n28
-end
-
-def fun_l19_n703()
- fun_l20_n571
-end
-
-def fun_l19_n704()
- fun_l20_n77
-end
-
-def fun_l19_n705()
- fun_l20_n705
-end
-
-def fun_l19_n706()
- fun_l20_n473
-end
-
-def fun_l19_n707()
- fun_l20_n993
-end
-
-def fun_l19_n708()
- fun_l20_n51
-end
-
-def fun_l19_n709()
- fun_l20_n921
-end
-
-def fun_l19_n710()
- fun_l20_n773
-end
-
-def fun_l19_n711()
- fun_l20_n137
-end
-
-def fun_l19_n712()
- fun_l20_n127
-end
-
-def fun_l19_n713()
- fun_l20_n714
-end
-
-def fun_l19_n714()
- fun_l20_n76
-end
-
-def fun_l19_n715()
- fun_l20_n909
-end
-
-def fun_l19_n716()
- fun_l20_n206
-end
-
-def fun_l19_n717()
- fun_l20_n37
-end
-
-def fun_l19_n718()
- fun_l20_n121
-end
-
-def fun_l19_n719()
- fun_l20_n438
-end
-
-def fun_l19_n720()
- fun_l20_n42
-end
-
-def fun_l19_n721()
- fun_l20_n743
-end
-
-def fun_l19_n722()
- fun_l20_n730
-end
-
-def fun_l19_n723()
- fun_l20_n190
-end
-
-def fun_l19_n724()
- fun_l20_n817
-end
-
-def fun_l19_n725()
- fun_l20_n119
-end
-
-def fun_l19_n726()
- fun_l20_n201
-end
-
-def fun_l19_n727()
- fun_l20_n9
-end
-
-def fun_l19_n728()
- fun_l20_n666
-end
-
-def fun_l19_n729()
- fun_l20_n595
-end
-
-def fun_l19_n730()
- fun_l20_n285
-end
-
-def fun_l19_n731()
- fun_l20_n586
-end
-
-def fun_l19_n732()
- fun_l20_n228
-end
-
-def fun_l19_n733()
- fun_l20_n663
-end
-
-def fun_l19_n734()
- fun_l20_n810
-end
-
-def fun_l19_n735()
- fun_l20_n348
-end
-
-def fun_l19_n736()
- fun_l20_n316
-end
-
-def fun_l19_n737()
- fun_l20_n140
-end
-
-def fun_l19_n738()
- fun_l20_n668
-end
-
-def fun_l19_n739()
- fun_l20_n956
-end
-
-def fun_l19_n740()
- fun_l20_n252
-end
-
-def fun_l19_n741()
- fun_l20_n490
-end
-
-def fun_l19_n742()
- fun_l20_n6
-end
-
-def fun_l19_n743()
- fun_l20_n389
-end
-
-def fun_l19_n744()
- fun_l20_n939
-end
-
-def fun_l19_n745()
- fun_l20_n152
-end
-
-def fun_l19_n746()
- fun_l20_n895
-end
-
-def fun_l19_n747()
- fun_l20_n769
-end
-
-def fun_l19_n748()
- fun_l20_n100
-end
-
-def fun_l19_n749()
- fun_l20_n492
-end
-
-def fun_l19_n750()
- fun_l20_n410
-end
-
-def fun_l19_n751()
- fun_l20_n514
-end
-
-def fun_l19_n752()
- fun_l20_n801
-end
-
-def fun_l19_n753()
- fun_l20_n148
-end
-
-def fun_l19_n754()
- fun_l20_n179
-end
-
-def fun_l19_n755()
- fun_l20_n35
-end
-
-def fun_l19_n756()
- fun_l20_n60
-end
-
-def fun_l19_n757()
- fun_l20_n247
-end
-
-def fun_l19_n758()
- fun_l20_n783
-end
-
-def fun_l19_n759()
- fun_l20_n357
-end
-
-def fun_l19_n760()
- fun_l20_n245
-end
-
-def fun_l19_n761()
- fun_l20_n26
-end
-
-def fun_l19_n762()
- fun_l20_n77
-end
-
-def fun_l19_n763()
- fun_l20_n886
-end
-
-def fun_l19_n764()
- fun_l20_n375
-end
-
-def fun_l19_n765()
- fun_l20_n238
-end
-
-def fun_l19_n766()
- fun_l20_n444
-end
-
-def fun_l19_n767()
- fun_l20_n665
-end
-
-def fun_l19_n768()
- fun_l20_n328
-end
-
-def fun_l19_n769()
- fun_l20_n598
-end
-
-def fun_l19_n770()
- fun_l20_n988
-end
-
-def fun_l19_n771()
- fun_l20_n350
-end
-
-def fun_l19_n772()
- fun_l20_n474
-end
-
-def fun_l19_n773()
- fun_l20_n460
-end
-
-def fun_l19_n774()
- fun_l20_n535
-end
-
-def fun_l19_n775()
- fun_l20_n451
-end
-
-def fun_l19_n776()
- fun_l20_n945
-end
-
-def fun_l19_n777()
- fun_l20_n902
-end
-
-def fun_l19_n778()
- fun_l20_n714
-end
-
-def fun_l19_n779()
- fun_l20_n5
-end
-
-def fun_l19_n780()
- fun_l20_n32
-end
-
-def fun_l19_n781()
- fun_l20_n99
-end
-
-def fun_l19_n782()
- fun_l20_n931
-end
-
-def fun_l19_n783()
- fun_l20_n664
-end
-
-def fun_l19_n784()
- fun_l20_n676
-end
-
-def fun_l19_n785()
- fun_l20_n671
-end
-
-def fun_l19_n786()
- fun_l20_n982
-end
-
-def fun_l19_n787()
- fun_l20_n754
-end
-
-def fun_l19_n788()
- fun_l20_n945
-end
-
-def fun_l19_n789()
- fun_l20_n130
-end
-
-def fun_l19_n790()
- fun_l20_n390
-end
-
-def fun_l19_n791()
- fun_l20_n999
-end
-
-def fun_l19_n792()
- fun_l20_n138
-end
-
-def fun_l19_n793()
- fun_l20_n180
-end
-
-def fun_l19_n794()
- fun_l20_n897
-end
-
-def fun_l19_n795()
- fun_l20_n85
-end
-
-def fun_l19_n796()
- fun_l20_n295
-end
-
-def fun_l19_n797()
- fun_l20_n577
-end
-
-def fun_l19_n798()
- fun_l20_n131
-end
-
-def fun_l19_n799()
- fun_l20_n847
-end
-
-def fun_l19_n800()
- fun_l20_n703
-end
-
-def fun_l19_n801()
- fun_l20_n82
-end
-
-def fun_l19_n802()
- fun_l20_n758
-end
-
-def fun_l19_n803()
- fun_l20_n789
-end
-
-def fun_l19_n804()
- fun_l20_n353
-end
-
-def fun_l19_n805()
- fun_l20_n957
-end
-
-def fun_l19_n806()
- fun_l20_n135
-end
-
-def fun_l19_n807()
- fun_l20_n87
-end
-
-def fun_l19_n808()
- fun_l20_n428
-end
-
-def fun_l19_n809()
- fun_l20_n660
-end
-
-def fun_l19_n810()
- fun_l20_n844
-end
-
-def fun_l19_n811()
- fun_l20_n816
-end
-
-def fun_l19_n812()
- fun_l20_n478
-end
-
-def fun_l19_n813()
- fun_l20_n823
-end
-
-def fun_l19_n814()
- fun_l20_n28
-end
-
-def fun_l19_n815()
- fun_l20_n965
-end
-
-def fun_l19_n816()
- fun_l20_n469
-end
-
-def fun_l19_n817()
- fun_l20_n31
-end
-
-def fun_l19_n818()
- fun_l20_n639
-end
-
-def fun_l19_n819()
- fun_l20_n831
-end
-
-def fun_l19_n820()
- fun_l20_n337
-end
-
-def fun_l19_n821()
- fun_l20_n330
-end
-
-def fun_l19_n822()
- fun_l20_n366
-end
-
-def fun_l19_n823()
- fun_l20_n992
-end
-
-def fun_l19_n824()
- fun_l20_n349
-end
-
-def fun_l19_n825()
- fun_l20_n291
-end
-
-def fun_l19_n826()
- fun_l20_n110
-end
-
-def fun_l19_n827()
- fun_l20_n204
-end
-
-def fun_l19_n828()
- fun_l20_n122
-end
-
-def fun_l19_n829()
- fun_l20_n683
-end
-
-def fun_l19_n830()
- fun_l20_n759
-end
-
-def fun_l19_n831()
- fun_l20_n619
-end
-
-def fun_l19_n832()
- fun_l20_n102
-end
-
-def fun_l19_n833()
- fun_l20_n532
-end
-
-def fun_l19_n834()
- fun_l20_n620
-end
-
-def fun_l19_n835()
- fun_l20_n511
-end
-
-def fun_l19_n836()
- fun_l20_n80
-end
-
-def fun_l19_n837()
- fun_l20_n731
-end
-
-def fun_l19_n838()
- fun_l20_n975
-end
-
-def fun_l19_n839()
- fun_l20_n947
-end
-
-def fun_l19_n840()
- fun_l20_n243
-end
-
-def fun_l19_n841()
- fun_l20_n168
-end
-
-def fun_l19_n842()
- fun_l20_n31
-end
-
-def fun_l19_n843()
- fun_l20_n979
-end
-
-def fun_l19_n844()
- fun_l20_n232
-end
-
-def fun_l19_n845()
- fun_l20_n596
-end
-
-def fun_l19_n846()
- fun_l20_n415
-end
-
-def fun_l19_n847()
- fun_l20_n380
-end
-
-def fun_l19_n848()
- fun_l20_n904
-end
-
-def fun_l19_n849()
- fun_l20_n858
-end
-
-def fun_l19_n850()
- fun_l20_n70
-end
-
-def fun_l19_n851()
- fun_l20_n204
-end
-
-def fun_l19_n852()
- fun_l20_n501
-end
-
-def fun_l19_n853()
- fun_l20_n901
-end
-
-def fun_l19_n854()
- fun_l20_n107
-end
-
-def fun_l19_n855()
- fun_l20_n391
-end
-
-def fun_l19_n856()
- fun_l20_n225
-end
-
-def fun_l19_n857()
- fun_l20_n173
-end
-
-def fun_l19_n858()
- fun_l20_n143
-end
-
-def fun_l19_n859()
- fun_l20_n482
-end
-
-def fun_l19_n860()
- fun_l20_n614
-end
-
-def fun_l19_n861()
- fun_l20_n819
-end
-
-def fun_l19_n862()
- fun_l20_n536
-end
-
-def fun_l19_n863()
- fun_l20_n370
-end
-
-def fun_l19_n864()
- fun_l20_n139
-end
-
-def fun_l19_n865()
- fun_l20_n434
-end
-
-def fun_l19_n866()
- fun_l20_n529
-end
-
-def fun_l19_n867()
- fun_l20_n770
-end
-
-def fun_l19_n868()
- fun_l20_n507
-end
-
-def fun_l19_n869()
- fun_l20_n453
-end
-
-def fun_l19_n870()
- fun_l20_n417
-end
-
-def fun_l19_n871()
- fun_l20_n305
-end
-
-def fun_l19_n872()
- fun_l20_n537
-end
-
-def fun_l19_n873()
- fun_l20_n613
-end
-
-def fun_l19_n874()
- fun_l20_n920
-end
-
-def fun_l19_n875()
- fun_l20_n623
-end
-
-def fun_l19_n876()
- fun_l20_n212
-end
-
-def fun_l19_n877()
- fun_l20_n980
-end
-
-def fun_l19_n878()
- fun_l20_n580
-end
-
-def fun_l19_n879()
- fun_l20_n112
-end
-
-def fun_l19_n880()
- fun_l20_n460
-end
-
-def fun_l19_n881()
- fun_l20_n364
-end
-
-def fun_l19_n882()
- fun_l20_n685
-end
-
-def fun_l19_n883()
- fun_l20_n429
-end
-
-def fun_l19_n884()
- fun_l20_n90
-end
-
-def fun_l19_n885()
- fun_l20_n448
-end
-
-def fun_l19_n886()
- fun_l20_n898
-end
-
-def fun_l19_n887()
- fun_l20_n10
-end
-
-def fun_l19_n888()
- fun_l20_n618
-end
-
-def fun_l19_n889()
- fun_l20_n447
-end
-
-def fun_l19_n890()
- fun_l20_n414
-end
-
-def fun_l19_n891()
- fun_l20_n570
-end
-
-def fun_l19_n892()
- fun_l20_n828
-end
-
-def fun_l19_n893()
- fun_l20_n367
-end
-
-def fun_l19_n894()
- fun_l20_n897
-end
-
-def fun_l19_n895()
- fun_l20_n978
-end
-
-def fun_l19_n896()
- fun_l20_n57
-end
-
-def fun_l19_n897()
- fun_l20_n61
-end
-
-def fun_l19_n898()
- fun_l20_n483
-end
-
-def fun_l19_n899()
- fun_l20_n407
-end
-
-def fun_l19_n900()
- fun_l20_n369
-end
-
-def fun_l19_n901()
- fun_l20_n635
-end
-
-def fun_l19_n902()
- fun_l20_n800
-end
-
-def fun_l19_n903()
- fun_l20_n748
-end
-
-def fun_l19_n904()
- fun_l20_n436
-end
-
-def fun_l19_n905()
- fun_l20_n990
-end
-
-def fun_l19_n906()
- fun_l20_n484
-end
-
-def fun_l19_n907()
- fun_l20_n530
-end
-
-def fun_l19_n908()
- fun_l20_n692
-end
-
-def fun_l19_n909()
- fun_l20_n356
-end
-
-def fun_l19_n910()
- fun_l20_n786
-end
-
-def fun_l19_n911()
- fun_l20_n894
-end
-
-def fun_l19_n912()
- fun_l20_n217
-end
-
-def fun_l19_n913()
- fun_l20_n495
-end
-
-def fun_l19_n914()
- fun_l20_n878
-end
-
-def fun_l19_n915()
- fun_l20_n166
-end
-
-def fun_l19_n916()
- fun_l20_n558
-end
-
-def fun_l19_n917()
- fun_l20_n704
-end
-
-def fun_l19_n918()
- fun_l20_n996
-end
-
-def fun_l19_n919()
- fun_l20_n302
-end
-
-def fun_l19_n920()
- fun_l20_n44
-end
-
-def fun_l19_n921()
- fun_l20_n694
-end
-
-def fun_l19_n922()
- fun_l20_n221
-end
-
-def fun_l19_n923()
- fun_l20_n419
-end
-
-def fun_l19_n924()
- fun_l20_n400
-end
-
-def fun_l19_n925()
- fun_l20_n306
-end
-
-def fun_l19_n926()
- fun_l20_n785
-end
-
-def fun_l19_n927()
- fun_l20_n851
-end
-
-def fun_l19_n928()
- fun_l20_n769
-end
-
-def fun_l19_n929()
- fun_l20_n547
-end
-
-def fun_l19_n930()
- fun_l20_n887
-end
-
-def fun_l19_n931()
- fun_l20_n413
-end
-
-def fun_l19_n932()
- fun_l20_n253
-end
-
-def fun_l19_n933()
- fun_l20_n37
-end
-
-def fun_l19_n934()
- fun_l20_n405
-end
-
-def fun_l19_n935()
- fun_l20_n926
-end
-
-def fun_l19_n936()
- fun_l20_n864
-end
-
-def fun_l19_n937()
- fun_l20_n231
-end
-
-def fun_l19_n938()
- fun_l20_n688
-end
-
-def fun_l19_n939()
- fun_l20_n144
-end
-
-def fun_l19_n940()
- fun_l20_n606
-end
-
-def fun_l19_n941()
- fun_l20_n180
-end
-
-def fun_l19_n942()
- fun_l20_n103
-end
-
-def fun_l19_n943()
- fun_l20_n314
-end
-
-def fun_l19_n944()
- fun_l20_n966
-end
-
-def fun_l19_n945()
- fun_l20_n15
-end
-
-def fun_l19_n946()
- fun_l20_n343
-end
-
-def fun_l19_n947()
- fun_l20_n388
-end
-
-def fun_l19_n948()
- fun_l20_n868
-end
-
-def fun_l19_n949()
- fun_l20_n939
-end
-
-def fun_l19_n950()
- fun_l20_n364
-end
-
-def fun_l19_n951()
- fun_l20_n739
-end
-
-def fun_l19_n952()
- fun_l20_n725
-end
-
-def fun_l19_n953()
- fun_l20_n463
-end
-
-def fun_l19_n954()
- fun_l20_n737
-end
-
-def fun_l19_n955()
- fun_l20_n83
-end
-
-def fun_l19_n956()
- fun_l20_n807
-end
-
-def fun_l19_n957()
- fun_l20_n710
-end
-
-def fun_l19_n958()
- fun_l20_n48
-end
-
-def fun_l19_n959()
- fun_l20_n82
-end
-
-def fun_l19_n960()
- fun_l20_n330
-end
-
-def fun_l19_n961()
- fun_l20_n378
-end
-
-def fun_l19_n962()
- fun_l20_n35
-end
-
-def fun_l19_n963()
- fun_l20_n191
-end
-
-def fun_l19_n964()
- fun_l20_n282
-end
-
-def fun_l19_n965()
- fun_l20_n222
-end
-
-def fun_l19_n966()
- fun_l20_n416
-end
-
-def fun_l19_n967()
- fun_l20_n304
-end
-
-def fun_l19_n968()
- fun_l20_n325
-end
-
-def fun_l19_n969()
- fun_l20_n374
-end
-
-def fun_l19_n970()
- fun_l20_n25
-end
-
-def fun_l19_n971()
- fun_l20_n815
-end
-
-def fun_l19_n972()
- fun_l20_n272
-end
-
-def fun_l19_n973()
- fun_l20_n57
-end
-
-def fun_l19_n974()
- fun_l20_n567
-end
-
-def fun_l19_n975()
- fun_l20_n995
-end
-
-def fun_l19_n976()
- fun_l20_n390
-end
-
-def fun_l19_n977()
- fun_l20_n706
-end
-
-def fun_l19_n978()
- fun_l20_n496
-end
-
-def fun_l19_n979()
- fun_l20_n685
-end
-
-def fun_l19_n980()
- fun_l20_n277
-end
-
-def fun_l19_n981()
- fun_l20_n933
-end
-
-def fun_l19_n982()
- fun_l20_n958
-end
-
-def fun_l19_n983()
- fun_l20_n9
-end
-
-def fun_l19_n984()
- fun_l20_n455
-end
-
-def fun_l19_n985()
- fun_l20_n824
-end
-
-def fun_l19_n986()
- fun_l20_n855
-end
-
-def fun_l19_n987()
- fun_l20_n561
-end
-
-def fun_l19_n988()
- fun_l20_n66
-end
-
-def fun_l19_n989()
- fun_l20_n836
-end
-
-def fun_l19_n990()
- fun_l20_n466
-end
-
-def fun_l19_n991()
- fun_l20_n902
-end
-
-def fun_l19_n992()
- fun_l20_n196
-end
-
-def fun_l19_n993()
- fun_l20_n488
-end
-
-def fun_l19_n994()
- fun_l20_n490
-end
-
-def fun_l19_n995()
- fun_l20_n463
-end
-
-def fun_l19_n996()
- fun_l20_n222
-end
-
-def fun_l19_n997()
- fun_l20_n935
-end
-
-def fun_l19_n998()
- fun_l20_n664
-end
-
-def fun_l19_n999()
- fun_l20_n44
-end
-
-def fun_l20_n0()
- fun_l21_n583
-end
-
-def fun_l20_n1()
- fun_l21_n600
-end
-
-def fun_l20_n2()
- fun_l21_n308
-end
-
-def fun_l20_n3()
- fun_l21_n395
-end
-
-def fun_l20_n4()
- fun_l21_n468
-end
-
-def fun_l20_n5()
- fun_l21_n340
-end
-
-def fun_l20_n6()
- fun_l21_n647
-end
-
-def fun_l20_n7()
- fun_l21_n53
-end
-
-def fun_l20_n8()
- fun_l21_n231
-end
-
-def fun_l20_n9()
- fun_l21_n965
-end
-
-def fun_l20_n10()
- fun_l21_n82
-end
-
-def fun_l20_n11()
- fun_l21_n464
-end
-
-def fun_l20_n12()
- fun_l21_n694
-end
-
-def fun_l20_n13()
- fun_l21_n398
-end
-
-def fun_l20_n14()
- fun_l21_n197
-end
-
-def fun_l20_n15()
- fun_l21_n447
-end
-
-def fun_l20_n16()
- fun_l21_n976
-end
-
-def fun_l20_n17()
- fun_l21_n421
-end
-
-def fun_l20_n18()
- fun_l21_n163
-end
-
-def fun_l20_n19()
- fun_l21_n467
-end
-
-def fun_l20_n20()
- fun_l21_n210
-end
-
-def fun_l20_n21()
- fun_l21_n837
-end
-
-def fun_l20_n22()
- fun_l21_n257
-end
-
-def fun_l20_n23()
- fun_l21_n818
-end
-
-def fun_l20_n24()
- fun_l21_n585
-end
-
-def fun_l20_n25()
- fun_l21_n125
-end
-
-def fun_l20_n26()
- fun_l21_n740
-end
-
-def fun_l20_n27()
- fun_l21_n771
-end
-
-def fun_l20_n28()
- fun_l21_n559
-end
-
-def fun_l20_n29()
- fun_l21_n591
-end
-
-def fun_l20_n30()
- fun_l21_n37
-end
-
-def fun_l20_n31()
- fun_l21_n796
-end
-
-def fun_l20_n32()
- fun_l21_n762
-end
-
-def fun_l20_n33()
- fun_l21_n26
-end
-
-def fun_l20_n34()
- fun_l21_n70
-end
-
-def fun_l20_n35()
- fun_l21_n789
-end
-
-def fun_l20_n36()
- fun_l21_n389
-end
-
-def fun_l20_n37()
- fun_l21_n769
-end
-
-def fun_l20_n38()
- fun_l21_n296
-end
-
-def fun_l20_n39()
- fun_l21_n131
-end
-
-def fun_l20_n40()
- fun_l21_n405
-end
-
-def fun_l20_n41()
- fun_l21_n546
-end
-
-def fun_l20_n42()
- fun_l21_n232
-end
-
-def fun_l20_n43()
- fun_l21_n538
-end
-
-def fun_l20_n44()
- fun_l21_n55
-end
-
-def fun_l20_n45()
- fun_l21_n962
-end
-
-def fun_l20_n46()
- fun_l21_n664
-end
-
-def fun_l20_n47()
- fun_l21_n443
-end
-
-def fun_l20_n48()
- fun_l21_n854
-end
-
-def fun_l20_n49()
- fun_l21_n392
-end
-
-def fun_l20_n50()
- fun_l21_n699
-end
-
-def fun_l20_n51()
- fun_l21_n748
-end
-
-def fun_l20_n52()
- fun_l21_n891
-end
-
-def fun_l20_n53()
- fun_l21_n411
-end
-
-def fun_l20_n54()
- fun_l21_n798
-end
-
-def fun_l20_n55()
- fun_l21_n99
-end
-
-def fun_l20_n56()
- fun_l21_n538
-end
-
-def fun_l20_n57()
- fun_l21_n473
-end
-
-def fun_l20_n58()
- fun_l21_n498
-end
-
-def fun_l20_n59()
- fun_l21_n769
-end
-
-def fun_l20_n60()
- fun_l21_n117
-end
-
-def fun_l20_n61()
- fun_l21_n487
-end
-
-def fun_l20_n62()
- fun_l21_n538
-end
-
-def fun_l20_n63()
- fun_l21_n312
-end
-
-def fun_l20_n64()
- fun_l21_n642
-end
-
-def fun_l20_n65()
- fun_l21_n877
-end
-
-def fun_l20_n66()
- fun_l21_n481
-end
-
-def fun_l20_n67()
- fun_l21_n252
-end
-
-def fun_l20_n68()
- fun_l21_n367
-end
-
-def fun_l20_n69()
- fun_l21_n438
-end
-
-def fun_l20_n70()
- fun_l21_n811
-end
-
-def fun_l20_n71()
- fun_l21_n807
-end
-
-def fun_l20_n72()
- fun_l21_n410
-end
-
-def fun_l20_n73()
- fun_l21_n590
-end
-
-def fun_l20_n74()
- fun_l21_n963
-end
-
-def fun_l20_n75()
- fun_l21_n103
-end
-
-def fun_l20_n76()
- fun_l21_n786
-end
-
-def fun_l20_n77()
- fun_l21_n256
-end
-
-def fun_l20_n78()
- fun_l21_n306
-end
-
-def fun_l20_n79()
- fun_l21_n248
-end
-
-def fun_l20_n80()
- fun_l21_n931
-end
-
-def fun_l20_n81()
- fun_l21_n926
-end
-
-def fun_l20_n82()
- fun_l21_n702
-end
-
-def fun_l20_n83()
- fun_l21_n611
-end
-
-def fun_l20_n84()
- fun_l21_n279
-end
-
-def fun_l20_n85()
- fun_l21_n977
-end
-
-def fun_l20_n86()
- fun_l21_n239
-end
-
-def fun_l20_n87()
- fun_l21_n370
-end
-
-def fun_l20_n88()
- fun_l21_n652
-end
-
-def fun_l20_n89()
- fun_l21_n956
-end
-
-def fun_l20_n90()
- fun_l21_n998
-end
-
-def fun_l20_n91()
- fun_l21_n523
-end
-
-def fun_l20_n92()
- fun_l21_n376
-end
-
-def fun_l20_n93()
- fun_l21_n604
-end
-
-def fun_l20_n94()
- fun_l21_n908
-end
-
-def fun_l20_n95()
- fun_l21_n716
-end
-
-def fun_l20_n96()
- fun_l21_n9
-end
-
-def fun_l20_n97()
- fun_l21_n571
-end
-
-def fun_l20_n98()
- fun_l21_n787
-end
-
-def fun_l20_n99()
- fun_l21_n453
-end
-
-def fun_l20_n100()
- fun_l21_n899
-end
-
-def fun_l20_n101()
- fun_l21_n491
-end
-
-def fun_l20_n102()
- fun_l21_n47
-end
-
-def fun_l20_n103()
- fun_l21_n892
-end
-
-def fun_l20_n104()
- fun_l21_n974
-end
-
-def fun_l20_n105()
- fun_l21_n993
-end
-
-def fun_l20_n106()
- fun_l21_n625
-end
-
-def fun_l20_n107()
- fun_l21_n743
-end
-
-def fun_l20_n108()
- fun_l21_n266
-end
-
-def fun_l20_n109()
- fun_l21_n650
-end
-
-def fun_l20_n110()
- fun_l21_n642
-end
-
-def fun_l20_n111()
- fun_l21_n905
-end
-
-def fun_l20_n112()
- fun_l21_n225
-end
-
-def fun_l20_n113()
- fun_l21_n857
-end
-
-def fun_l20_n114()
- fun_l21_n82
-end
-
-def fun_l20_n115()
- fun_l21_n166
-end
-
-def fun_l20_n116()
- fun_l21_n844
-end
-
-def fun_l20_n117()
- fun_l21_n619
-end
-
-def fun_l20_n118()
- fun_l21_n743
-end
-
-def fun_l20_n119()
- fun_l21_n69
-end
-
-def fun_l20_n120()
- fun_l21_n410
-end
-
-def fun_l20_n121()
- fun_l21_n364
-end
-
-def fun_l20_n122()
- fun_l21_n186
-end
-
-def fun_l20_n123()
- fun_l21_n750
-end
-
-def fun_l20_n124()
- fun_l21_n683
-end
-
-def fun_l20_n125()
- fun_l21_n576
-end
-
-def fun_l20_n126()
- fun_l21_n287
-end
-
-def fun_l20_n127()
- fun_l21_n483
-end
-
-def fun_l20_n128()
- fun_l21_n738
-end
-
-def fun_l20_n129()
- fun_l21_n779
-end
-
-def fun_l20_n130()
- fun_l21_n209
-end
-
-def fun_l20_n131()
- fun_l21_n652
-end
-
-def fun_l20_n132()
- fun_l21_n583
-end
-
-def fun_l20_n133()
- fun_l21_n389
-end
-
-def fun_l20_n134()
- fun_l21_n289
-end
-
-def fun_l20_n135()
- fun_l21_n993
-end
-
-def fun_l20_n136()
- fun_l21_n216
-end
-
-def fun_l20_n137()
- fun_l21_n118
-end
-
-def fun_l20_n138()
- fun_l21_n484
-end
-
-def fun_l20_n139()
- fun_l21_n602
-end
-
-def fun_l20_n140()
- fun_l21_n714
-end
-
-def fun_l20_n141()
- fun_l21_n247
-end
-
-def fun_l20_n142()
- fun_l21_n27
-end
-
-def fun_l20_n143()
- fun_l21_n939
-end
-
-def fun_l20_n144()
- fun_l21_n565
-end
-
-def fun_l20_n145()
- fun_l21_n869
-end
-
-def fun_l20_n146()
- fun_l21_n569
-end
-
-def fun_l20_n147()
- fun_l21_n876
-end
-
-def fun_l20_n148()
- fun_l21_n796
-end
-
-def fun_l20_n149()
- fun_l21_n754
-end
-
-def fun_l20_n150()
- fun_l21_n664
-end
-
-def fun_l20_n151()
- fun_l21_n836
-end
-
-def fun_l20_n152()
- fun_l21_n389
-end
-
-def fun_l20_n153()
- fun_l21_n111
-end
-
-def fun_l20_n154()
- fun_l21_n361
-end
-
-def fun_l20_n155()
- fun_l21_n733
-end
-
-def fun_l20_n156()
- fun_l21_n215
-end
-
-def fun_l20_n157()
- fun_l21_n509
-end
-
-def fun_l20_n158()
- fun_l21_n12
-end
-
-def fun_l20_n159()
- fun_l21_n351
-end
-
-def fun_l20_n160()
- fun_l21_n872
-end
-
-def fun_l20_n161()
- fun_l21_n888
-end
-
-def fun_l20_n162()
- fun_l21_n126
-end
-
-def fun_l20_n163()
- fun_l21_n681
-end
-
-def fun_l20_n164()
- fun_l21_n160
-end
-
-def fun_l20_n165()
- fun_l21_n917
-end
-
-def fun_l20_n166()
- fun_l21_n255
-end
-
-def fun_l20_n167()
- fun_l21_n37
-end
-
-def fun_l20_n168()
- fun_l21_n949
-end
-
-def fun_l20_n169()
- fun_l21_n925
-end
-
-def fun_l20_n170()
- fun_l21_n921
-end
-
-def fun_l20_n171()
- fun_l21_n123
-end
-
-def fun_l20_n172()
- fun_l21_n783
-end
-
-def fun_l20_n173()
- fun_l21_n45
-end
-
-def fun_l20_n174()
- fun_l21_n994
-end
-
-def fun_l20_n175()
- fun_l21_n745
-end
-
-def fun_l20_n176()
- fun_l21_n122
-end
-
-def fun_l20_n177()
- fun_l21_n25
-end
-
-def fun_l20_n178()
- fun_l21_n594
-end
-
-def fun_l20_n179()
- fun_l21_n115
-end
-
-def fun_l20_n180()
- fun_l21_n274
-end
-
-def fun_l20_n181()
- fun_l21_n423
-end
-
-def fun_l20_n182()
- fun_l21_n68
-end
-
-def fun_l20_n183()
- fun_l21_n598
-end
-
-def fun_l20_n184()
- fun_l21_n640
-end
-
-def fun_l20_n185()
- fun_l21_n810
-end
-
-def fun_l20_n186()
- fun_l21_n150
-end
-
-def fun_l20_n187()
- fun_l21_n4
-end
-
-def fun_l20_n188()
- fun_l21_n487
-end
-
-def fun_l20_n189()
- fun_l21_n327
-end
-
-def fun_l20_n190()
- fun_l21_n652
-end
-
-def fun_l20_n191()
- fun_l21_n913
-end
-
-def fun_l20_n192()
- fun_l21_n323
-end
-
-def fun_l20_n193()
- fun_l21_n193
-end
-
-def fun_l20_n194()
- fun_l21_n527
-end
-
-def fun_l20_n195()
- fun_l21_n123
-end
-
-def fun_l20_n196()
- fun_l21_n568
-end
-
-def fun_l20_n197()
- fun_l21_n629
-end
-
-def fun_l20_n198()
- fun_l21_n727
-end
-
-def fun_l20_n199()
- fun_l21_n470
-end
-
-def fun_l20_n200()
- fun_l21_n608
-end
-
-def fun_l20_n201()
- fun_l21_n941
-end
-
-def fun_l20_n202()
- fun_l21_n256
-end
-
-def fun_l20_n203()
- fun_l21_n624
-end
-
-def fun_l20_n204()
- fun_l21_n714
-end
-
-def fun_l20_n205()
- fun_l21_n754
-end
-
-def fun_l20_n206()
- fun_l21_n513
-end
-
-def fun_l20_n207()
- fun_l21_n730
-end
-
-def fun_l20_n208()
- fun_l21_n132
-end
-
-def fun_l20_n209()
- fun_l21_n205
-end
-
-def fun_l20_n210()
- fun_l21_n549
-end
-
-def fun_l20_n211()
- fun_l21_n713
-end
-
-def fun_l20_n212()
- fun_l21_n51
-end
-
-def fun_l20_n213()
- fun_l21_n712
-end
-
-def fun_l20_n214()
- fun_l21_n439
-end
-
-def fun_l20_n215()
- fun_l21_n969
-end
-
-def fun_l20_n216()
- fun_l21_n338
-end
-
-def fun_l20_n217()
- fun_l21_n852
-end
-
-def fun_l20_n218()
- fun_l21_n935
-end
-
-def fun_l20_n219()
- fun_l21_n935
-end
-
-def fun_l20_n220()
- fun_l21_n967
-end
-
-def fun_l20_n221()
- fun_l21_n195
-end
-
-def fun_l20_n222()
- fun_l21_n556
-end
-
-def fun_l20_n223()
- fun_l21_n669
-end
-
-def fun_l20_n224()
- fun_l21_n874
-end
-
-def fun_l20_n225()
- fun_l21_n985
-end
-
-def fun_l20_n226()
- fun_l21_n769
-end
-
-def fun_l20_n227()
- fun_l21_n482
-end
-
-def fun_l20_n228()
- fun_l21_n268
-end
-
-def fun_l20_n229()
- fun_l21_n161
-end
-
-def fun_l20_n230()
- fun_l21_n383
-end
-
-def fun_l20_n231()
- fun_l21_n100
-end
-
-def fun_l20_n232()
- fun_l21_n285
-end
-
-def fun_l20_n233()
- fun_l21_n255
-end
-
-def fun_l20_n234()
- fun_l21_n214
-end
-
-def fun_l20_n235()
- fun_l21_n206
-end
-
-def fun_l20_n236()
- fun_l21_n990
-end
-
-def fun_l20_n237()
- fun_l21_n24
-end
-
-def fun_l20_n238()
- fun_l21_n531
-end
-
-def fun_l20_n239()
- fun_l21_n171
-end
-
-def fun_l20_n240()
- fun_l21_n859
-end
-
-def fun_l20_n241()
- fun_l21_n342
-end
-
-def fun_l20_n242()
- fun_l21_n724
-end
-
-def fun_l20_n243()
- fun_l21_n55
-end
-
-def fun_l20_n244()
- fun_l21_n404
-end
-
-def fun_l20_n245()
- fun_l21_n615
-end
-
-def fun_l20_n246()
- fun_l21_n692
-end
-
-def fun_l20_n247()
- fun_l21_n851
-end
-
-def fun_l20_n248()
- fun_l21_n715
-end
-
-def fun_l20_n249()
- fun_l21_n723
-end
-
-def fun_l20_n250()
- fun_l21_n929
-end
-
-def fun_l20_n251()
- fun_l21_n26
-end
-
-def fun_l20_n252()
- fun_l21_n314
-end
-
-def fun_l20_n253()
- fun_l21_n182
-end
-
-def fun_l20_n254()
- fun_l21_n889
-end
-
-def fun_l20_n255()
- fun_l21_n725
-end
-
-def fun_l20_n256()
- fun_l21_n538
-end
-
-def fun_l20_n257()
- fun_l21_n303
-end
-
-def fun_l20_n258()
- fun_l21_n843
-end
-
-def fun_l20_n259()
- fun_l21_n977
-end
-
-def fun_l20_n260()
- fun_l21_n438
-end
-
-def fun_l20_n261()
- fun_l21_n772
-end
-
-def fun_l20_n262()
- fun_l21_n432
-end
-
-def fun_l20_n263()
- fun_l21_n204
-end
-
-def fun_l20_n264()
- fun_l21_n853
-end
-
-def fun_l20_n265()
- fun_l21_n7
-end
-
-def fun_l20_n266()
- fun_l21_n171
-end
-
-def fun_l20_n267()
- fun_l21_n907
-end
-
-def fun_l20_n268()
- fun_l21_n450
-end
-
-def fun_l20_n269()
- fun_l21_n836
-end
-
-def fun_l20_n270()
- fun_l21_n118
-end
-
-def fun_l20_n271()
- fun_l21_n782
-end
-
-def fun_l20_n272()
- fun_l21_n160
-end
-
-def fun_l20_n273()
- fun_l21_n73
-end
-
-def fun_l20_n274()
- fun_l21_n339
-end
-
-def fun_l20_n275()
- fun_l21_n257
-end
-
-def fun_l20_n276()
- fun_l21_n860
-end
-
-def fun_l20_n277()
- fun_l21_n837
-end
-
-def fun_l20_n278()
- fun_l21_n936
-end
-
-def fun_l20_n279()
- fun_l21_n627
-end
-
-def fun_l20_n280()
- fun_l21_n45
-end
-
-def fun_l20_n281()
- fun_l21_n934
-end
-
-def fun_l20_n282()
- fun_l21_n213
-end
-
-def fun_l20_n283()
- fun_l21_n629
-end
-
-def fun_l20_n284()
- fun_l21_n944
-end
-
-def fun_l20_n285()
- fun_l21_n44
-end
-
-def fun_l20_n286()
- fun_l21_n306
-end
-
-def fun_l20_n287()
- fun_l21_n259
-end
-
-def fun_l20_n288()
- fun_l21_n805
-end
-
-def fun_l20_n289()
- fun_l21_n118
-end
-
-def fun_l20_n290()
- fun_l21_n456
-end
-
-def fun_l20_n291()
- fun_l21_n11
-end
-
-def fun_l20_n292()
- fun_l21_n138
-end
-
-def fun_l20_n293()
- fun_l21_n110
-end
-
-def fun_l20_n294()
- fun_l21_n165
-end
-
-def fun_l20_n295()
- fun_l21_n129
-end
-
-def fun_l20_n296()
- fun_l21_n731
-end
-
-def fun_l20_n297()
- fun_l21_n219
-end
-
-def fun_l20_n298()
- fun_l21_n175
-end
-
-def fun_l20_n299()
- fun_l21_n497
-end
-
-def fun_l20_n300()
- fun_l21_n154
-end
-
-def fun_l20_n301()
- fun_l21_n446
-end
-
-def fun_l20_n302()
- fun_l21_n890
-end
-
-def fun_l20_n303()
- fun_l21_n325
-end
-
-def fun_l20_n304()
- fun_l21_n616
-end
-
-def fun_l20_n305()
- fun_l21_n743
-end
-
-def fun_l20_n306()
- fun_l21_n327
-end
-
-def fun_l20_n307()
- fun_l21_n890
-end
-
-def fun_l20_n308()
- fun_l21_n289
-end
-
-def fun_l20_n309()
- fun_l21_n150
-end
-
-def fun_l20_n310()
- fun_l21_n22
-end
-
-def fun_l20_n311()
- fun_l21_n290
-end
-
-def fun_l20_n312()
- fun_l21_n780
-end
-
-def fun_l20_n313()
- fun_l21_n204
-end
-
-def fun_l20_n314()
- fun_l21_n204
-end
-
-def fun_l20_n315()
- fun_l21_n841
-end
-
-def fun_l20_n316()
- fun_l21_n990
-end
-
-def fun_l20_n317()
- fun_l21_n574
-end
-
-def fun_l20_n318()
- fun_l21_n543
-end
-
-def fun_l20_n319()
- fun_l21_n388
-end
-
-def fun_l20_n320()
- fun_l21_n44
-end
-
-def fun_l20_n321()
- fun_l21_n65
-end
-
-def fun_l20_n322()
- fun_l21_n952
-end
-
-def fun_l20_n323()
- fun_l21_n633
-end
-
-def fun_l20_n324()
- fun_l21_n729
-end
-
-def fun_l20_n325()
- fun_l21_n356
-end
-
-def fun_l20_n326()
- fun_l21_n968
-end
-
-def fun_l20_n327()
- fun_l21_n92
-end
-
-def fun_l20_n328()
- fun_l21_n285
-end
-
-def fun_l20_n329()
- fun_l21_n341
-end
-
-def fun_l20_n330()
- fun_l21_n818
-end
-
-def fun_l20_n331()
- fun_l21_n373
-end
-
-def fun_l20_n332()
- fun_l21_n166
-end
-
-def fun_l20_n333()
- fun_l21_n618
-end
-
-def fun_l20_n334()
- fun_l21_n160
-end
-
-def fun_l20_n335()
- fun_l21_n965
-end
-
-def fun_l20_n336()
- fun_l21_n436
-end
-
-def fun_l20_n337()
- fun_l21_n244
-end
-
-def fun_l20_n338()
- fun_l21_n425
-end
-
-def fun_l20_n339()
- fun_l21_n576
-end
-
-def fun_l20_n340()
- fun_l21_n789
-end
-
-def fun_l20_n341()
- fun_l21_n559
-end
-
-def fun_l20_n342()
- fun_l21_n766
-end
-
-def fun_l20_n343()
- fun_l21_n131
-end
-
-def fun_l20_n344()
- fun_l21_n806
-end
-
-def fun_l20_n345()
- fun_l21_n624
-end
-
-def fun_l20_n346()
- fun_l21_n342
-end
-
-def fun_l20_n347()
- fun_l21_n567
-end
-
-def fun_l20_n348()
- fun_l21_n569
-end
-
-def fun_l20_n349()
- fun_l21_n623
-end
-
-def fun_l20_n350()
- fun_l21_n984
-end
-
-def fun_l20_n351()
- fun_l21_n931
-end
-
-def fun_l20_n352()
- fun_l21_n48
-end
-
-def fun_l20_n353()
- fun_l21_n962
-end
-
-def fun_l20_n354()
- fun_l21_n757
-end
-
-def fun_l20_n355()
- fun_l21_n844
-end
-
-def fun_l20_n356()
- fun_l21_n217
-end
-
-def fun_l20_n357()
- fun_l21_n933
-end
-
-def fun_l20_n358()
- fun_l21_n579
-end
-
-def fun_l20_n359()
- fun_l21_n342
-end
-
-def fun_l20_n360()
- fun_l21_n975
-end
-
-def fun_l20_n361()
- fun_l21_n177
-end
-
-def fun_l20_n362()
- fun_l21_n491
-end
-
-def fun_l20_n363()
- fun_l21_n637
-end
-
-def fun_l20_n364()
- fun_l21_n505
-end
-
-def fun_l20_n365()
- fun_l21_n784
-end
-
-def fun_l20_n366()
- fun_l21_n62
-end
-
-def fun_l20_n367()
- fun_l21_n478
-end
-
-def fun_l20_n368()
- fun_l21_n369
-end
-
-def fun_l20_n369()
- fun_l21_n105
-end
-
-def fun_l20_n370()
- fun_l21_n352
-end
-
-def fun_l20_n371()
- fun_l21_n537
-end
-
-def fun_l20_n372()
- fun_l21_n180
-end
-
-def fun_l20_n373()
- fun_l21_n216
-end
-
-def fun_l20_n374()
- fun_l21_n938
-end
-
-def fun_l20_n375()
- fun_l21_n441
-end
-
-def fun_l20_n376()
- fun_l21_n308
-end
-
-def fun_l20_n377()
- fun_l21_n544
-end
-
-def fun_l20_n378()
- fun_l21_n505
-end
-
-def fun_l20_n379()
- fun_l21_n681
-end
-
-def fun_l20_n380()
- fun_l21_n844
-end
-
-def fun_l20_n381()
- fun_l21_n269
-end
-
-def fun_l20_n382()
- fun_l21_n195
-end
-
-def fun_l20_n383()
- fun_l21_n214
-end
-
-def fun_l20_n384()
- fun_l21_n206
-end
-
-def fun_l20_n385()
- fun_l21_n807
-end
-
-def fun_l20_n386()
- fun_l21_n932
-end
-
-def fun_l20_n387()
- fun_l21_n245
-end
-
-def fun_l20_n388()
- fun_l21_n942
-end
-
-def fun_l20_n389()
- fun_l21_n618
-end
-
-def fun_l20_n390()
- fun_l21_n684
-end
-
-def fun_l20_n391()
- fun_l21_n536
-end
-
-def fun_l20_n392()
- fun_l21_n899
-end
-
-def fun_l20_n393()
- fun_l21_n775
-end
-
-def fun_l20_n394()
- fun_l21_n634
-end
-
-def fun_l20_n395()
- fun_l21_n870
-end
-
-def fun_l20_n396()
- fun_l21_n882
-end
-
-def fun_l20_n397()
- fun_l21_n317
-end
-
-def fun_l20_n398()
- fun_l21_n162
-end
-
-def fun_l20_n399()
- fun_l21_n446
-end
-
-def fun_l20_n400()
- fun_l21_n716
-end
-
-def fun_l20_n401()
- fun_l21_n869
-end
-
-def fun_l20_n402()
- fun_l21_n965
-end
-
-def fun_l20_n403()
- fun_l21_n616
-end
-
-def fun_l20_n404()
- fun_l21_n385
-end
-
-def fun_l20_n405()
- fun_l21_n964
-end
-
-def fun_l20_n406()
- fun_l21_n360
-end
-
-def fun_l20_n407()
- fun_l21_n432
-end
-
-def fun_l20_n408()
- fun_l21_n40
-end
-
-def fun_l20_n409()
- fun_l21_n734
-end
-
-def fun_l20_n410()
- fun_l21_n978
-end
-
-def fun_l20_n411()
- fun_l21_n721
-end
-
-def fun_l20_n412()
- fun_l21_n941
-end
-
-def fun_l20_n413()
- fun_l21_n315
-end
-
-def fun_l20_n414()
- fun_l21_n242
-end
-
-def fun_l20_n415()
- fun_l21_n153
-end
-
-def fun_l20_n416()
- fun_l21_n999
-end
-
-def fun_l20_n417()
- fun_l21_n219
-end
-
-def fun_l20_n418()
- fun_l21_n809
-end
-
-def fun_l20_n419()
- fun_l21_n139
-end
-
-def fun_l20_n420()
- fun_l21_n311
-end
-
-def fun_l20_n421()
- fun_l21_n460
-end
-
-def fun_l20_n422()
- fun_l21_n0
-end
-
-def fun_l20_n423()
- fun_l21_n863
-end
-
-def fun_l20_n424()
- fun_l21_n216
-end
-
-def fun_l20_n425()
- fun_l21_n1
-end
-
-def fun_l20_n426()
- fun_l21_n829
-end
-
-def fun_l20_n427()
- fun_l21_n844
-end
-
-def fun_l20_n428()
- fun_l21_n941
-end
-
-def fun_l20_n429()
- fun_l21_n344
-end
-
-def fun_l20_n430()
- fun_l21_n443
-end
-
-def fun_l20_n431()
- fun_l21_n549
-end
-
-def fun_l20_n432()
- fun_l21_n654
-end
-
-def fun_l20_n433()
- fun_l21_n167
-end
-
-def fun_l20_n434()
- fun_l21_n392
-end
-
-def fun_l20_n435()
- fun_l21_n570
-end
-
-def fun_l20_n436()
- fun_l21_n370
-end
-
-def fun_l20_n437()
- fun_l21_n65
-end
-
-def fun_l20_n438()
- fun_l21_n78
-end
-
-def fun_l20_n439()
- fun_l21_n271
-end
-
-def fun_l20_n440()
- fun_l21_n606
-end
-
-def fun_l20_n441()
- fun_l21_n25
-end
-
-def fun_l20_n442()
- fun_l21_n629
-end
-
-def fun_l20_n443()
- fun_l21_n294
-end
-
-def fun_l20_n444()
- fun_l21_n928
-end
-
-def fun_l20_n445()
- fun_l21_n596
-end
-
-def fun_l20_n446()
- fun_l21_n630
-end
-
-def fun_l20_n447()
- fun_l21_n849
-end
-
-def fun_l20_n448()
- fun_l21_n239
-end
-
-def fun_l20_n449()
- fun_l21_n641
-end
-
-def fun_l20_n450()
- fun_l21_n333
-end
-
-def fun_l20_n451()
- fun_l21_n86
-end
-
-def fun_l20_n452()
- fun_l21_n68
-end
-
-def fun_l20_n453()
- fun_l21_n28
-end
-
-def fun_l20_n454()
- fun_l21_n644
-end
-
-def fun_l20_n455()
- fun_l21_n282
-end
-
-def fun_l20_n456()
- fun_l21_n3
-end
-
-def fun_l20_n457()
- fun_l21_n594
-end
-
-def fun_l20_n458()
- fun_l21_n173
-end
-
-def fun_l20_n459()
- fun_l21_n986
-end
-
-def fun_l20_n460()
- fun_l21_n597
-end
-
-def fun_l20_n461()
- fun_l21_n488
-end
-
-def fun_l20_n462()
- fun_l21_n288
-end
-
-def fun_l20_n463()
- fun_l21_n729
-end
-
-def fun_l20_n464()
- fun_l21_n985
-end
-
-def fun_l20_n465()
- fun_l21_n794
-end
-
-def fun_l20_n466()
- fun_l21_n405
-end
-
-def fun_l20_n467()
- fun_l21_n985
-end
-
-def fun_l20_n468()
- fun_l21_n596
-end
-
-def fun_l20_n469()
- fun_l21_n331
-end
-
-def fun_l20_n470()
- fun_l21_n480
-end
-
-def fun_l20_n471()
- fun_l21_n160
-end
-
-def fun_l20_n472()
- fun_l21_n529
-end
-
-def fun_l20_n473()
- fun_l21_n185
-end
-
-def fun_l20_n474()
- fun_l21_n300
-end
-
-def fun_l20_n475()
- fun_l21_n131
-end
-
-def fun_l20_n476()
- fun_l21_n561
-end
-
-def fun_l20_n477()
- fun_l21_n634
-end
-
-def fun_l20_n478()
- fun_l21_n92
-end
-
-def fun_l20_n479()
- fun_l21_n105
-end
-
-def fun_l20_n480()
- fun_l21_n887
-end
-
-def fun_l20_n481()
- fun_l21_n841
-end
-
-def fun_l20_n482()
- fun_l21_n404
-end
-
-def fun_l20_n483()
- fun_l21_n813
-end
-
-def fun_l20_n484()
- fun_l21_n90
-end
-
-def fun_l20_n485()
- fun_l21_n978
-end
-
-def fun_l20_n486()
- fun_l21_n342
-end
-
-def fun_l20_n487()
- fun_l21_n263
-end
-
-def fun_l20_n488()
- fun_l21_n587
-end
-
-def fun_l20_n489()
- fun_l21_n950
-end
-
-def fun_l20_n490()
- fun_l21_n121
-end
-
-def fun_l20_n491()
- fun_l21_n85
-end
-
-def fun_l20_n492()
- fun_l21_n53
-end
-
-def fun_l20_n493()
- fun_l21_n706
-end
-
-def fun_l20_n494()
- fun_l21_n612
-end
-
-def fun_l20_n495()
- fun_l21_n322
-end
-
-def fun_l20_n496()
- fun_l21_n610
-end
-
-def fun_l20_n497()
- fun_l21_n465
-end
-
-def fun_l20_n498()
- fun_l21_n998
-end
-
-def fun_l20_n499()
- fun_l21_n79
-end
-
-def fun_l20_n500()
- fun_l21_n203
-end
-
-def fun_l20_n501()
- fun_l21_n99
-end
-
-def fun_l20_n502()
- fun_l21_n958
-end
-
-def fun_l20_n503()
- fun_l21_n528
-end
-
-def fun_l20_n504()
- fun_l21_n210
-end
-
-def fun_l20_n505()
- fun_l21_n546
-end
-
-def fun_l20_n506()
- fun_l21_n343
-end
-
-def fun_l20_n507()
- fun_l21_n9
-end
-
-def fun_l20_n508()
- fun_l21_n486
-end
-
-def fun_l20_n509()
- fun_l21_n252
-end
-
-def fun_l20_n510()
- fun_l21_n489
-end
-
-def fun_l20_n511()
- fun_l21_n851
-end
-
-def fun_l20_n512()
- fun_l21_n150
-end
-
-def fun_l20_n513()
- fun_l21_n691
-end
-
-def fun_l20_n514()
- fun_l21_n718
-end
-
-def fun_l20_n515()
- fun_l21_n681
-end
-
-def fun_l20_n516()
- fun_l21_n636
-end
-
-def fun_l20_n517()
- fun_l21_n828
-end
-
-def fun_l20_n518()
- fun_l21_n15
-end
-
-def fun_l20_n519()
- fun_l21_n186
-end
-
-def fun_l20_n520()
- fun_l21_n260
-end
-
-def fun_l20_n521()
- fun_l21_n646
-end
-
-def fun_l20_n522()
- fun_l21_n768
-end
-
-def fun_l20_n523()
- fun_l21_n387
-end
-
-def fun_l20_n524()
- fun_l21_n597
-end
-
-def fun_l20_n525()
- fun_l21_n980
-end
-
-def fun_l20_n526()
- fun_l21_n996
-end
-
-def fun_l20_n527()
- fun_l21_n945
-end
-
-def fun_l20_n528()
- fun_l21_n234
-end
-
-def fun_l20_n529()
- fun_l21_n673
-end
-
-def fun_l20_n530()
- fun_l21_n766
-end
-
-def fun_l20_n531()
- fun_l21_n498
-end
-
-def fun_l20_n532()
- fun_l21_n210
-end
-
-def fun_l20_n533()
- fun_l21_n537
-end
-
-def fun_l20_n534()
- fun_l21_n376
-end
-
-def fun_l20_n535()
- fun_l21_n13
-end
-
-def fun_l20_n536()
- fun_l21_n994
-end
-
-def fun_l20_n537()
- fun_l21_n954
-end
-
-def fun_l20_n538()
- fun_l21_n171
-end
-
-def fun_l20_n539()
- fun_l21_n778
-end
-
-def fun_l20_n540()
- fun_l21_n940
-end
-
-def fun_l20_n541()
- fun_l21_n114
-end
-
-def fun_l20_n542()
- fun_l21_n987
-end
-
-def fun_l20_n543()
- fun_l21_n553
-end
-
-def fun_l20_n544()
- fun_l21_n473
-end
-
-def fun_l20_n545()
- fun_l21_n503
-end
-
-def fun_l20_n546()
- fun_l21_n436
-end
-
-def fun_l20_n547()
- fun_l21_n901
-end
-
-def fun_l20_n548()
- fun_l21_n98
-end
-
-def fun_l20_n549()
- fun_l21_n389
-end
-
-def fun_l20_n550()
- fun_l21_n852
-end
-
-def fun_l20_n551()
- fun_l21_n193
-end
-
-def fun_l20_n552()
- fun_l21_n783
-end
-
-def fun_l20_n553()
- fun_l21_n46
-end
-
-def fun_l20_n554()
- fun_l21_n38
-end
-
-def fun_l20_n555()
- fun_l21_n300
-end
-
-def fun_l20_n556()
- fun_l21_n221
-end
-
-def fun_l20_n557()
- fun_l21_n816
-end
-
-def fun_l20_n558()
- fun_l21_n534
-end
-
-def fun_l20_n559()
- fun_l21_n932
-end
-
-def fun_l20_n560()
- fun_l21_n880
-end
-
-def fun_l20_n561()
- fun_l21_n796
-end
-
-def fun_l20_n562()
- fun_l21_n927
-end
-
-def fun_l20_n563()
- fun_l21_n10
-end
-
-def fun_l20_n564()
- fun_l21_n843
-end
-
-def fun_l20_n565()
- fun_l21_n625
-end
-
-def fun_l20_n566()
- fun_l21_n429
-end
-
-def fun_l20_n567()
- fun_l21_n475
-end
-
-def fun_l20_n568()
- fun_l21_n931
-end
-
-def fun_l20_n569()
- fun_l21_n460
-end
-
-def fun_l20_n570()
- fun_l21_n857
-end
-
-def fun_l20_n571()
- fun_l21_n607
-end
-
-def fun_l20_n572()
- fun_l21_n727
-end
-
-def fun_l20_n573()
- fun_l21_n922
-end
-
-def fun_l20_n574()
- fun_l21_n393
-end
-
-def fun_l20_n575()
- fun_l21_n232
-end
-
-def fun_l20_n576()
- fun_l21_n665
-end
-
-def fun_l20_n577()
- fun_l21_n796
-end
-
-def fun_l20_n578()
- fun_l21_n80
-end
-
-def fun_l20_n579()
- fun_l21_n769
-end
-
-def fun_l20_n580()
- fun_l21_n558
-end
-
-def fun_l20_n581()
- fun_l21_n630
-end
-
-def fun_l20_n582()
- fun_l21_n911
-end
-
-def fun_l20_n583()
- fun_l21_n457
-end
-
-def fun_l20_n584()
- fun_l21_n61
-end
-
-def fun_l20_n585()
- fun_l21_n671
-end
-
-def fun_l20_n586()
- fun_l21_n493
-end
-
-def fun_l20_n587()
- fun_l21_n780
-end
-
-def fun_l20_n588()
- fun_l21_n373
-end
-
-def fun_l20_n589()
- fun_l21_n138
-end
-
-def fun_l20_n590()
- fun_l21_n377
-end
-
-def fun_l20_n591()
- fun_l21_n793
-end
-
-def fun_l20_n592()
- fun_l21_n995
-end
-
-def fun_l20_n593()
- fun_l21_n46
-end
-
-def fun_l20_n594()
- fun_l21_n171
-end
-
-def fun_l20_n595()
- fun_l21_n907
-end
-
-def fun_l20_n596()
- fun_l21_n182
-end
-
-def fun_l20_n597()
- fun_l21_n203
-end
-
-def fun_l20_n598()
- fun_l21_n475
-end
-
-def fun_l20_n599()
- fun_l21_n198
-end
-
-def fun_l20_n600()
- fun_l21_n654
-end
-
-def fun_l20_n601()
- fun_l21_n236
-end
-
-def fun_l20_n602()
- fun_l21_n854
-end
-
-def fun_l20_n603()
- fun_l21_n344
-end
-
-def fun_l20_n604()
- fun_l21_n575
-end
-
-def fun_l20_n605()
- fun_l21_n214
-end
-
-def fun_l20_n606()
- fun_l21_n105
-end
-
-def fun_l20_n607()
- fun_l21_n624
-end
-
-def fun_l20_n608()
- fun_l21_n505
-end
-
-def fun_l20_n609()
- fun_l21_n468
-end
-
-def fun_l20_n610()
- fun_l21_n946
-end
-
-def fun_l20_n611()
- fun_l21_n197
-end
-
-def fun_l20_n612()
- fun_l21_n749
-end
-
-def fun_l20_n613()
- fun_l21_n280
-end
-
-def fun_l20_n614()
- fun_l21_n587
-end
-
-def fun_l20_n615()
- fun_l21_n463
-end
-
-def fun_l20_n616()
- fun_l21_n47
-end
-
-def fun_l20_n617()
- fun_l21_n467
-end
-
-def fun_l20_n618()
- fun_l21_n934
-end
-
-def fun_l20_n619()
- fun_l21_n648
-end
-
-def fun_l20_n620()
- fun_l21_n572
-end
-
-def fun_l20_n621()
- fun_l21_n524
-end
-
-def fun_l20_n622()
- fun_l21_n623
-end
-
-def fun_l20_n623()
- fun_l21_n142
-end
-
-def fun_l20_n624()
- fun_l21_n370
-end
-
-def fun_l20_n625()
- fun_l21_n427
-end
-
-def fun_l20_n626()
- fun_l21_n23
-end
-
-def fun_l20_n627()
- fun_l21_n710
-end
-
-def fun_l20_n628()
- fun_l21_n714
-end
-
-def fun_l20_n629()
- fun_l21_n929
-end
-
-def fun_l20_n630()
- fun_l21_n882
-end
-
-def fun_l20_n631()
- fun_l21_n971
-end
-
-def fun_l20_n632()
- fun_l21_n484
-end
-
-def fun_l20_n633()
- fun_l21_n757
-end
-
-def fun_l20_n634()
- fun_l21_n543
-end
-
-def fun_l20_n635()
- fun_l21_n96
-end
-
-def fun_l20_n636()
- fun_l21_n780
-end
-
-def fun_l20_n637()
- fun_l21_n912
-end
-
-def fun_l20_n638()
- fun_l21_n288
-end
-
-def fun_l20_n639()
- fun_l21_n580
-end
-
-def fun_l20_n640()
- fun_l21_n831
-end
-
-def fun_l20_n641()
- fun_l21_n660
-end
-
-def fun_l20_n642()
- fun_l21_n216
-end
-
-def fun_l20_n643()
- fun_l21_n341
-end
-
-def fun_l20_n644()
- fun_l21_n747
-end
-
-def fun_l20_n645()
- fun_l21_n633
-end
-
-def fun_l20_n646()
- fun_l21_n422
-end
-
-def fun_l20_n647()
- fun_l21_n122
-end
-
-def fun_l20_n648()
- fun_l21_n721
-end
-
-def fun_l20_n649()
- fun_l21_n439
-end
-
-def fun_l20_n650()
- fun_l21_n663
-end
-
-def fun_l20_n651()
- fun_l21_n409
-end
-
-def fun_l20_n652()
- fun_l21_n475
-end
-
-def fun_l20_n653()
- fun_l21_n812
-end
-
-def fun_l20_n654()
- fun_l21_n849
-end
-
-def fun_l20_n655()
- fun_l21_n500
-end
-
-def fun_l20_n656()
- fun_l21_n120
-end
-
-def fun_l20_n657()
- fun_l21_n971
-end
-
-def fun_l20_n658()
- fun_l21_n935
-end
-
-def fun_l20_n659()
- fun_l21_n952
-end
-
-def fun_l20_n660()
- fun_l21_n84
-end
-
-def fun_l20_n661()
- fun_l21_n393
-end
-
-def fun_l20_n662()
- fun_l21_n454
-end
-
-def fun_l20_n663()
- fun_l21_n440
-end
-
-def fun_l20_n664()
- fun_l21_n5
-end
-
-def fun_l20_n665()
- fun_l21_n475
-end
-
-def fun_l20_n666()
- fun_l21_n929
-end
-
-def fun_l20_n667()
- fun_l21_n164
-end
-
-def fun_l20_n668()
- fun_l21_n23
-end
-
-def fun_l20_n669()
- fun_l21_n66
-end
-
-def fun_l20_n670()
- fun_l21_n463
-end
-
-def fun_l20_n671()
- fun_l21_n425
-end
-
-def fun_l20_n672()
- fun_l21_n414
-end
-
-def fun_l20_n673()
- fun_l21_n990
-end
-
-def fun_l20_n674()
- fun_l21_n504
-end
-
-def fun_l20_n675()
- fun_l21_n974
-end
-
-def fun_l20_n676()
- fun_l21_n620
-end
-
-def fun_l20_n677()
- fun_l21_n798
-end
-
-def fun_l20_n678()
- fun_l21_n432
-end
-
-def fun_l20_n679()
- fun_l21_n487
-end
-
-def fun_l20_n680()
- fun_l21_n570
-end
-
-def fun_l20_n681()
- fun_l21_n746
-end
-
-def fun_l20_n682()
- fun_l21_n358
-end
-
-def fun_l20_n683()
- fun_l21_n207
-end
-
-def fun_l20_n684()
- fun_l21_n408
-end
-
-def fun_l20_n685()
- fun_l21_n679
-end
-
-def fun_l20_n686()
- fun_l21_n38
-end
-
-def fun_l20_n687()
- fun_l21_n58
-end
-
-def fun_l20_n688()
- fun_l21_n460
-end
-
-def fun_l20_n689()
- fun_l21_n855
-end
-
-def fun_l20_n690()
- fun_l21_n641
-end
-
-def fun_l20_n691()
- fun_l21_n146
-end
-
-def fun_l20_n692()
- fun_l21_n709
-end
-
-def fun_l20_n693()
- fun_l21_n801
-end
-
-def fun_l20_n694()
- fun_l21_n375
-end
-
-def fun_l20_n695()
- fun_l21_n778
-end
-
-def fun_l20_n696()
- fun_l21_n620
-end
-
-def fun_l20_n697()
- fun_l21_n630
-end
-
-def fun_l20_n698()
- fun_l21_n582
-end
-
-def fun_l20_n699()
- fun_l21_n198
-end
-
-def fun_l20_n700()
- fun_l21_n830
-end
-
-def fun_l20_n701()
- fun_l21_n101
-end
-
-def fun_l20_n702()
- fun_l21_n824
-end
-
-def fun_l20_n703()
- fun_l21_n97
-end
-
-def fun_l20_n704()
- fun_l21_n628
-end
-
-def fun_l20_n705()
- fun_l21_n688
-end
-
-def fun_l20_n706()
- fun_l21_n120
-end
-
-def fun_l20_n707()
- fun_l21_n343
-end
-
-def fun_l20_n708()
- fun_l21_n175
-end
-
-def fun_l20_n709()
- fun_l21_n122
-end
-
-def fun_l20_n710()
- fun_l21_n272
-end
-
-def fun_l20_n711()
- fun_l21_n343
-end
-
-def fun_l20_n712()
- fun_l21_n317
-end
-
-def fun_l20_n713()
- fun_l21_n982
-end
-
-def fun_l20_n714()
- fun_l21_n458
-end
-
-def fun_l20_n715()
- fun_l21_n906
-end
-
-def fun_l20_n716()
- fun_l21_n565
-end
-
-def fun_l20_n717()
- fun_l21_n174
-end
-
-def fun_l20_n718()
- fun_l21_n34
-end
-
-def fun_l20_n719()
- fun_l21_n832
-end
-
-def fun_l20_n720()
- fun_l21_n111
-end
-
-def fun_l20_n721()
- fun_l21_n701
-end
-
-def fun_l20_n722()
- fun_l21_n201
-end
-
-def fun_l20_n723()
- fun_l21_n285
-end
-
-def fun_l20_n724()
- fun_l21_n269
-end
-
-def fun_l20_n725()
- fun_l21_n144
-end
-
-def fun_l20_n726()
- fun_l21_n246
-end
-
-def fun_l20_n727()
- fun_l21_n221
-end
-
-def fun_l20_n728()
- fun_l21_n599
-end
-
-def fun_l20_n729()
- fun_l21_n909
-end
-
-def fun_l20_n730()
- fun_l21_n693
-end
-
-def fun_l20_n731()
- fun_l21_n879
-end
-
-def fun_l20_n732()
- fun_l21_n452
-end
-
-def fun_l20_n733()
- fun_l21_n772
-end
-
-def fun_l20_n734()
- fun_l21_n116
-end
-
-def fun_l20_n735()
- fun_l21_n895
-end
-
-def fun_l20_n736()
- fun_l21_n937
-end
-
-def fun_l20_n737()
- fun_l21_n50
-end
-
-def fun_l20_n738()
- fun_l21_n947
-end
-
-def fun_l20_n739()
- fun_l21_n500
-end
-
-def fun_l20_n740()
- fun_l21_n753
-end
-
-def fun_l20_n741()
- fun_l21_n497
-end
-
-def fun_l20_n742()
- fun_l21_n524
-end
-
-def fun_l20_n743()
- fun_l21_n389
-end
-
-def fun_l20_n744()
- fun_l21_n539
-end
-
-def fun_l20_n745()
- fun_l21_n70
-end
-
-def fun_l20_n746()
- fun_l21_n736
-end
-
-def fun_l20_n747()
- fun_l21_n94
-end
-
-def fun_l20_n748()
- fun_l21_n686
-end
-
-def fun_l20_n749()
- fun_l21_n269
-end
-
-def fun_l20_n750()
- fun_l21_n809
-end
-
-def fun_l20_n751()
- fun_l21_n570
-end
-
-def fun_l20_n752()
- fun_l21_n522
-end
-
-def fun_l20_n753()
- fun_l21_n167
-end
-
-def fun_l20_n754()
- fun_l21_n610
-end
-
-def fun_l20_n755()
- fun_l21_n72
-end
-
-def fun_l20_n756()
- fun_l21_n146
-end
-
-def fun_l20_n757()
- fun_l21_n916
-end
-
-def fun_l20_n758()
- fun_l21_n163
-end
-
-def fun_l20_n759()
- fun_l21_n279
-end
-
-def fun_l20_n760()
- fun_l21_n677
-end
-
-def fun_l20_n761()
- fun_l21_n876
-end
-
-def fun_l20_n762()
- fun_l21_n333
-end
-
-def fun_l20_n763()
- fun_l21_n36
-end
-
-def fun_l20_n764()
- fun_l21_n166
-end
-
-def fun_l20_n765()
- fun_l21_n824
-end
-
-def fun_l20_n766()
- fun_l21_n416
-end
-
-def fun_l20_n767()
- fun_l21_n655
-end
-
-def fun_l20_n768()
- fun_l21_n267
-end
-
-def fun_l20_n769()
- fun_l21_n257
-end
-
-def fun_l20_n770()
- fun_l21_n839
-end
-
-def fun_l20_n771()
- fun_l21_n504
-end
-
-def fun_l20_n772()
- fun_l21_n717
-end
-
-def fun_l20_n773()
- fun_l21_n332
-end
-
-def fun_l20_n774()
- fun_l21_n949
-end
-
-def fun_l20_n775()
- fun_l21_n226
-end
-
-def fun_l20_n776()
- fun_l21_n145
-end
-
-def fun_l20_n777()
- fun_l21_n548
-end
-
-def fun_l20_n778()
- fun_l21_n912
-end
-
-def fun_l20_n779()
- fun_l21_n984
-end
-
-def fun_l20_n780()
- fun_l21_n907
-end
-
-def fun_l20_n781()
- fun_l21_n433
-end
-
-def fun_l20_n782()
- fun_l21_n542
-end
-
-def fun_l20_n783()
- fun_l21_n88
-end
-
-def fun_l20_n784()
- fun_l21_n104
-end
-
-def fun_l20_n785()
- fun_l21_n383
-end
-
-def fun_l20_n786()
- fun_l21_n998
-end
-
-def fun_l20_n787()
- fun_l21_n525
-end
-
-def fun_l20_n788()
- fun_l21_n276
-end
-
-def fun_l20_n789()
- fun_l21_n162
-end
-
-def fun_l20_n790()
- fun_l21_n420
-end
-
-def fun_l20_n791()
- fun_l21_n793
-end
-
-def fun_l20_n792()
- fun_l21_n121
-end
-
-def fun_l20_n793()
- fun_l21_n164
-end
-
-def fun_l20_n794()
- fun_l21_n110
-end
-
-def fun_l20_n795()
- fun_l21_n68
-end
-
-def fun_l20_n796()
- fun_l21_n417
-end
-
-def fun_l20_n797()
- fun_l21_n878
-end
-
-def fun_l20_n798()
- fun_l21_n987
-end
-
-def fun_l20_n799()
- fun_l21_n197
-end
-
-def fun_l20_n800()
- fun_l21_n729
-end
-
-def fun_l20_n801()
- fun_l21_n956
-end
-
-def fun_l20_n802()
- fun_l21_n33
-end
-
-def fun_l20_n803()
- fun_l21_n73
-end
-
-def fun_l20_n804()
- fun_l21_n759
-end
-
-def fun_l20_n805()
- fun_l21_n784
-end
-
-def fun_l20_n806()
- fun_l21_n102
-end
-
-def fun_l20_n807()
- fun_l21_n624
-end
-
-def fun_l20_n808()
- fun_l21_n580
-end
-
-def fun_l20_n809()
- fun_l21_n347
-end
-
-def fun_l20_n810()
- fun_l21_n163
-end
-
-def fun_l20_n811()
- fun_l21_n220
-end
-
-def fun_l20_n812()
- fun_l21_n324
-end
-
-def fun_l20_n813()
- fun_l21_n299
-end
-
-def fun_l20_n814()
- fun_l21_n958
-end
-
-def fun_l20_n815()
- fun_l21_n252
-end
-
-def fun_l20_n816()
- fun_l21_n479
-end
-
-def fun_l20_n817()
- fun_l21_n536
-end
-
-def fun_l20_n818()
- fun_l21_n624
-end
-
-def fun_l20_n819()
- fun_l21_n347
-end
-
-def fun_l20_n820()
- fun_l21_n308
-end
-
-def fun_l20_n821()
- fun_l21_n4
-end
-
-def fun_l20_n822()
- fun_l21_n88
-end
-
-def fun_l20_n823()
- fun_l21_n787
-end
-
-def fun_l20_n824()
- fun_l21_n450
-end
-
-def fun_l20_n825()
- fun_l21_n384
-end
-
-def fun_l20_n826()
- fun_l21_n416
-end
-
-def fun_l20_n827()
- fun_l21_n73
-end
-
-def fun_l20_n828()
- fun_l21_n884
-end
-
-def fun_l20_n829()
- fun_l21_n51
-end
-
-def fun_l20_n830()
- fun_l21_n37
-end
-
-def fun_l20_n831()
- fun_l21_n326
-end
-
-def fun_l20_n832()
- fun_l21_n120
-end
-
-def fun_l20_n833()
- fun_l21_n957
-end
-
-def fun_l20_n834()
- fun_l21_n973
-end
-
-def fun_l20_n835()
- fun_l21_n966
-end
-
-def fun_l20_n836()
- fun_l21_n110
-end
-
-def fun_l20_n837()
- fun_l21_n57
-end
-
-def fun_l20_n838()
- fun_l21_n836
-end
-
-def fun_l20_n839()
- fun_l21_n701
-end
-
-def fun_l20_n840()
- fun_l21_n607
-end
-
-def fun_l20_n841()
- fun_l21_n92
-end
-
-def fun_l20_n842()
- fun_l21_n304
-end
-
-def fun_l20_n843()
- fun_l21_n443
-end
-
-def fun_l20_n844()
- fun_l21_n282
-end
-
-def fun_l20_n845()
- fun_l21_n301
-end
-
-def fun_l20_n846()
- fun_l21_n360
-end
-
-def fun_l20_n847()
- fun_l21_n848
-end
-
-def fun_l20_n848()
- fun_l21_n796
-end
-
-def fun_l20_n849()
- fun_l21_n81
-end
-
-def fun_l20_n850()
- fun_l21_n126
-end
-
-def fun_l20_n851()
- fun_l21_n951
-end
-
-def fun_l20_n852()
- fun_l21_n187
-end
-
-def fun_l20_n853()
- fun_l21_n498
-end
-
-def fun_l20_n854()
- fun_l21_n885
-end
-
-def fun_l20_n855()
- fun_l21_n391
-end
-
-def fun_l20_n856()
- fun_l21_n823
-end
-
-def fun_l20_n857()
- fun_l21_n516
-end
-
-def fun_l20_n858()
- fun_l21_n266
-end
-
-def fun_l20_n859()
- fun_l21_n617
-end
-
-def fun_l20_n860()
- fun_l21_n440
-end
-
-def fun_l20_n861()
- fun_l21_n694
-end
-
-def fun_l20_n862()
- fun_l21_n128
-end
-
-def fun_l20_n863()
- fun_l21_n340
-end
-
-def fun_l20_n864()
- fun_l21_n234
-end
-
-def fun_l20_n865()
- fun_l21_n324
-end
-
-def fun_l20_n866()
- fun_l21_n233
-end
-
-def fun_l20_n867()
- fun_l21_n26
-end
-
-def fun_l20_n868()
- fun_l21_n548
-end
-
-def fun_l20_n869()
- fun_l21_n563
-end
-
-def fun_l20_n870()
- fun_l21_n452
-end
-
-def fun_l20_n871()
- fun_l21_n223
-end
-
-def fun_l20_n872()
- fun_l21_n147
-end
-
-def fun_l20_n873()
- fun_l21_n147
-end
-
-def fun_l20_n874()
- fun_l21_n266
-end
-
-def fun_l20_n875()
- fun_l21_n335
-end
-
-def fun_l20_n876()
- fun_l21_n253
-end
-
-def fun_l20_n877()
- fun_l21_n479
-end
-
-def fun_l20_n878()
- fun_l21_n34
-end
-
-def fun_l20_n879()
- fun_l21_n798
-end
-
-def fun_l20_n880()
- fun_l21_n223
-end
-
-def fun_l20_n881()
- fun_l21_n343
-end
-
-def fun_l20_n882()
- fun_l21_n728
-end
-
-def fun_l20_n883()
- fun_l21_n351
-end
-
-def fun_l20_n884()
- fun_l21_n997
-end
-
-def fun_l20_n885()
- fun_l21_n49
-end
-
-def fun_l20_n886()
- fun_l21_n773
-end
-
-def fun_l20_n887()
- fun_l21_n93
-end
-
-def fun_l20_n888()
- fun_l21_n124
-end
-
-def fun_l20_n889()
- fun_l21_n897
-end
-
-def fun_l20_n890()
- fun_l21_n692
-end
-
-def fun_l20_n891()
- fun_l21_n158
-end
-
-def fun_l20_n892()
- fun_l21_n456
-end
-
-def fun_l20_n893()
- fun_l21_n49
-end
-
-def fun_l20_n894()
- fun_l21_n751
-end
-
-def fun_l20_n895()
- fun_l21_n672
-end
-
-def fun_l20_n896()
- fun_l21_n726
-end
-
-def fun_l20_n897()
- fun_l21_n95
-end
-
-def fun_l20_n898()
- fun_l21_n420
-end
-
-def fun_l20_n899()
- fun_l21_n77
-end
-
-def fun_l20_n900()
- fun_l21_n770
-end
-
-def fun_l20_n901()
- fun_l21_n127
-end
-
-def fun_l20_n902()
- fun_l21_n566
-end
-
-def fun_l20_n903()
- fun_l21_n398
-end
-
-def fun_l20_n904()
- fun_l21_n720
-end
-
-def fun_l20_n905()
- fun_l21_n350
-end
-
-def fun_l20_n906()
- fun_l21_n935
-end
-
-def fun_l20_n907()
- fun_l21_n172
-end
-
-def fun_l20_n908()
- fun_l21_n988
-end
-
-def fun_l20_n909()
- fun_l21_n627
-end
-
-def fun_l20_n910()
- fun_l21_n776
-end
-
-def fun_l20_n911()
- fun_l21_n34
-end
-
-def fun_l20_n912()
- fun_l21_n361
-end
-
-def fun_l20_n913()
- fun_l21_n408
-end
-
-def fun_l20_n914()
- fun_l21_n941
-end
-
-def fun_l20_n915()
- fun_l21_n275
-end
-
-def fun_l20_n916()
- fun_l21_n864
-end
-
-def fun_l20_n917()
- fun_l21_n839
-end
-
-def fun_l20_n918()
- fun_l21_n837
-end
-
-def fun_l20_n919()
- fun_l21_n837
-end
-
-def fun_l20_n920()
- fun_l21_n627
-end
-
-def fun_l20_n921()
- fun_l21_n321
-end
-
-def fun_l20_n922()
- fun_l21_n308
-end
-
-def fun_l20_n923()
- fun_l21_n475
-end
-
-def fun_l20_n924()
- fun_l21_n115
-end
-
-def fun_l20_n925()
- fun_l21_n794
-end
-
-def fun_l20_n926()
- fun_l21_n376
-end
-
-def fun_l20_n927()
- fun_l21_n951
-end
-
-def fun_l20_n928()
- fun_l21_n744
-end
-
-def fun_l20_n929()
- fun_l21_n621
-end
-
-def fun_l20_n930()
- fun_l21_n630
-end
-
-def fun_l20_n931()
- fun_l21_n459
-end
-
-def fun_l20_n932()
- fun_l21_n41
-end
-
-def fun_l20_n933()
- fun_l21_n313
-end
-
-def fun_l20_n934()
- fun_l21_n130
-end
-
-def fun_l20_n935()
- fun_l21_n605
-end
-
-def fun_l20_n936()
- fun_l21_n261
-end
-
-def fun_l20_n937()
- fun_l21_n54
-end
-
-def fun_l20_n938()
- fun_l21_n319
-end
-
-def fun_l20_n939()
- fun_l21_n541
-end
-
-def fun_l20_n940()
- fun_l21_n104
-end
-
-def fun_l20_n941()
- fun_l21_n339
-end
-
-def fun_l20_n942()
- fun_l21_n220
-end
-
-def fun_l20_n943()
- fun_l21_n560
-end
-
-def fun_l20_n944()
- fun_l21_n931
-end
-
-def fun_l20_n945()
- fun_l21_n642
-end
-
-def fun_l20_n946()
- fun_l21_n584
-end
-
-def fun_l20_n947()
- fun_l21_n324
-end
-
-def fun_l20_n948()
- fun_l21_n10
-end
-
-def fun_l20_n949()
- fun_l21_n976
-end
-
-def fun_l20_n950()
- fun_l21_n65
-end
-
-def fun_l20_n951()
- fun_l21_n392
-end
-
-def fun_l20_n952()
- fun_l21_n263
-end
-
-def fun_l20_n953()
- fun_l21_n228
-end
-
-def fun_l20_n954()
- fun_l21_n177
-end
-
-def fun_l20_n955()
- fun_l21_n81
-end
-
-def fun_l20_n956()
- fun_l21_n141
-end
-
-def fun_l20_n957()
- fun_l21_n540
-end
-
-def fun_l20_n958()
- fun_l21_n802
-end
-
-def fun_l20_n959()
- fun_l21_n28
-end
-
-def fun_l20_n960()
- fun_l21_n438
-end
-
-def fun_l20_n961()
- fun_l21_n722
-end
-
-def fun_l20_n962()
- fun_l21_n707
-end
-
-def fun_l20_n963()
- fun_l21_n598
-end
-
-def fun_l20_n964()
- fun_l21_n687
-end
-
-def fun_l20_n965()
- fun_l21_n258
-end
-
-def fun_l20_n966()
- fun_l21_n786
-end
-
-def fun_l20_n967()
- fun_l21_n362
-end
-
-def fun_l20_n968()
- fun_l21_n41
-end
-
-def fun_l20_n969()
- fun_l21_n933
-end
-
-def fun_l20_n970()
- fun_l21_n250
-end
-
-def fun_l20_n971()
- fun_l21_n760
-end
-
-def fun_l20_n972()
- fun_l21_n993
-end
-
-def fun_l20_n973()
- fun_l21_n278
-end
-
-def fun_l20_n974()
- fun_l21_n477
-end
-
-def fun_l20_n975()
- fun_l21_n901
-end
-
-def fun_l20_n976()
- fun_l21_n820
-end
-
-def fun_l20_n977()
- fun_l21_n739
-end
-
-def fun_l20_n978()
- fun_l21_n722
-end
-
-def fun_l20_n979()
- fun_l21_n418
-end
-
-def fun_l20_n980()
- fun_l21_n207
-end
-
-def fun_l20_n981()
- fun_l21_n213
-end
-
-def fun_l20_n982()
- fun_l21_n30
-end
-
-def fun_l20_n983()
- fun_l21_n667
-end
-
-def fun_l20_n984()
- fun_l21_n582
-end
-
-def fun_l20_n985()
- fun_l21_n398
-end
-
-def fun_l20_n986()
- fun_l21_n376
-end
-
-def fun_l20_n987()
- fun_l21_n84
-end
-
-def fun_l20_n988()
- fun_l21_n701
-end
-
-def fun_l20_n989()
- fun_l21_n100
-end
-
-def fun_l20_n990()
- fun_l21_n247
-end
-
-def fun_l20_n991()
- fun_l21_n992
-end
-
-def fun_l20_n992()
- fun_l21_n635
-end
-
-def fun_l20_n993()
- fun_l21_n493
-end
-
-def fun_l20_n994()
- fun_l21_n184
-end
-
-def fun_l20_n995()
- fun_l21_n31
-end
-
-def fun_l20_n996()
- fun_l21_n555
-end
-
-def fun_l20_n997()
- fun_l21_n258
-end
-
-def fun_l20_n998()
- fun_l21_n32
-end
-
-def fun_l20_n999()
- fun_l21_n6
-end
-
-def fun_l21_n0()
- fun_l22_n98
-end
-
-def fun_l21_n1()
- fun_l22_n194
-end
-
-def fun_l21_n2()
- fun_l22_n510
-end
-
-def fun_l21_n3()
- fun_l22_n707
-end
-
-def fun_l21_n4()
- fun_l22_n878
-end
-
-def fun_l21_n5()
- fun_l22_n615
-end
-
-def fun_l21_n6()
- fun_l22_n891
-end
-
-def fun_l21_n7()
- fun_l22_n458
-end
-
-def fun_l21_n8()
- fun_l22_n478
-end
-
-def fun_l21_n9()
- fun_l22_n30
-end
-
-def fun_l21_n10()
- fun_l22_n345
-end
-
-def fun_l21_n11()
- fun_l22_n202
-end
-
-def fun_l21_n12()
- fun_l22_n354
-end
-
-def fun_l21_n13()
- fun_l22_n673
-end
-
-def fun_l21_n14()
- fun_l22_n662
-end
-
-def fun_l21_n15()
- fun_l22_n593
-end
-
-def fun_l21_n16()
- fun_l22_n127
-end
-
-def fun_l21_n17()
- fun_l22_n876
-end
-
-def fun_l21_n18()
- fun_l22_n862
-end
-
-def fun_l21_n19()
- fun_l22_n337
-end
-
-def fun_l21_n20()
- fun_l22_n365
-end
-
-def fun_l21_n21()
- fun_l22_n323
-end
-
-def fun_l21_n22()
- fun_l22_n767
-end
-
-def fun_l21_n23()
- fun_l22_n364
-end
-
-def fun_l21_n24()
- fun_l22_n562
-end
-
-def fun_l21_n25()
- fun_l22_n420
-end
-
-def fun_l21_n26()
- fun_l22_n754
-end
-
-def fun_l21_n27()
- fun_l22_n381
-end
-
-def fun_l21_n28()
- fun_l22_n393
-end
-
-def fun_l21_n29()
- fun_l22_n25
-end
-
-def fun_l21_n30()
- fun_l22_n951
-end
-
-def fun_l21_n31()
- fun_l22_n271
-end
-
-def fun_l21_n32()
- fun_l22_n127
-end
-
-def fun_l21_n33()
- fun_l22_n962
-end
-
-def fun_l21_n34()
- fun_l22_n611
-end
-
-def fun_l21_n35()
- fun_l22_n936
-end
-
-def fun_l21_n36()
- fun_l22_n340
-end
-
-def fun_l21_n37()
- fun_l22_n349
-end
-
-def fun_l21_n38()
- fun_l22_n692
-end
-
-def fun_l21_n39()
- fun_l22_n184
-end
-
-def fun_l21_n40()
- fun_l22_n490
-end
-
-def fun_l21_n41()
- fun_l22_n316
-end
-
-def fun_l21_n42()
- fun_l22_n545
-end
-
-def fun_l21_n43()
- fun_l22_n344
-end
-
-def fun_l21_n44()
- fun_l22_n938
-end
-
-def fun_l21_n45()
- fun_l22_n820
-end
-
-def fun_l21_n46()
- fun_l22_n60
-end
-
-def fun_l21_n47()
- fun_l22_n649
-end
-
-def fun_l21_n48()
- fun_l22_n41
-end
-
-def fun_l21_n49()
- fun_l22_n305
-end
-
-def fun_l21_n50()
- fun_l22_n677
-end
-
-def fun_l21_n51()
- fun_l22_n880
-end
-
-def fun_l21_n52()
- fun_l22_n535
-end
-
-def fun_l21_n53()
- fun_l22_n686
-end
-
-def fun_l21_n54()
- fun_l22_n194
-end
-
-def fun_l21_n55()
- fun_l22_n313
-end
-
-def fun_l21_n56()
- fun_l22_n639
-end
-
-def fun_l21_n57()
- fun_l22_n182
-end
-
-def fun_l21_n58()
- fun_l22_n588
-end
-
-def fun_l21_n59()
- fun_l22_n979
-end
-
-def fun_l21_n60()
- fun_l22_n230
-end
-
-def fun_l21_n61()
- fun_l22_n139
-end
-
-def fun_l21_n62()
- fun_l22_n899
-end
-
-def fun_l21_n63()
- fun_l22_n532
-end
-
-def fun_l21_n64()
- fun_l22_n479
-end
-
-def fun_l21_n65()
- fun_l22_n735
-end
-
-def fun_l21_n66()
- fun_l22_n425
-end
-
-def fun_l21_n67()
- fun_l22_n878
-end
-
-def fun_l21_n68()
- fun_l22_n706
-end
-
-def fun_l21_n69()
- fun_l22_n826
-end
-
-def fun_l21_n70()
- fun_l22_n44
-end
-
-def fun_l21_n71()
- fun_l22_n107
-end
-
-def fun_l21_n72()
- fun_l22_n737
-end
-
-def fun_l21_n73()
- fun_l22_n659
-end
-
-def fun_l21_n74()
- fun_l22_n707
-end
-
-def fun_l21_n75()
- fun_l22_n658
-end
-
-def fun_l21_n76()
- fun_l22_n937
-end
-
-def fun_l21_n77()
- fun_l22_n86
-end
-
-def fun_l21_n78()
- fun_l22_n606
-end
-
-def fun_l21_n79()
- fun_l22_n61
-end
-
-def fun_l21_n80()
- fun_l22_n780
-end
-
-def fun_l21_n81()
- fun_l22_n560
-end
-
-def fun_l21_n82()
- fun_l22_n949
-end
-
-def fun_l21_n83()
- fun_l22_n790
-end
-
-def fun_l21_n84()
- fun_l22_n851
-end
-
-def fun_l21_n85()
- fun_l22_n148
-end
-
-def fun_l21_n86()
- fun_l22_n406
-end
-
-def fun_l21_n87()
- fun_l22_n38
-end
-
-def fun_l21_n88()
- fun_l22_n468
-end
-
-def fun_l21_n89()
- fun_l22_n783
-end
-
-def fun_l21_n90()
- fun_l22_n853
-end
-
-def fun_l21_n91()
- fun_l22_n758
-end
-
-def fun_l21_n92()
- fun_l22_n34
-end
-
-def fun_l21_n93()
- fun_l22_n387
-end
-
-def fun_l21_n94()
- fun_l22_n181
-end
-
-def fun_l21_n95()
- fun_l22_n514
-end
-
-def fun_l21_n96()
- fun_l22_n139
-end
-
-def fun_l21_n97()
- fun_l22_n543
-end
-
-def fun_l21_n98()
- fun_l22_n462
-end
-
-def fun_l21_n99()
- fun_l22_n570
-end
-
-def fun_l21_n100()
- fun_l22_n634
-end
-
-def fun_l21_n101()
- fun_l22_n69
-end
-
-def fun_l21_n102()
- fun_l22_n142
-end
-
-def fun_l21_n103()
- fun_l22_n964
-end
-
-def fun_l21_n104()
- fun_l22_n851
-end
-
-def fun_l21_n105()
- fun_l22_n410
-end
-
-def fun_l21_n106()
- fun_l22_n563
-end
-
-def fun_l21_n107()
- fun_l22_n914
-end
-
-def fun_l21_n108()
- fun_l22_n163
-end
-
-def fun_l21_n109()
- fun_l22_n248
-end
-
-def fun_l21_n110()
- fun_l22_n309
-end
-
-def fun_l21_n111()
- fun_l22_n894
-end
-
-def fun_l21_n112()
- fun_l22_n916
-end
-
-def fun_l21_n113()
- fun_l22_n818
-end
-
-def fun_l21_n114()
- fun_l22_n824
-end
-
-def fun_l21_n115()
- fun_l22_n34
-end
-
-def fun_l21_n116()
- fun_l22_n538
-end
-
-def fun_l21_n117()
- fun_l22_n841
-end
-
-def fun_l21_n118()
- fun_l22_n934
-end
-
-def fun_l21_n119()
- fun_l22_n217
-end
-
-def fun_l21_n120()
- fun_l22_n479
-end
-
-def fun_l21_n121()
- fun_l22_n693
-end
-
-def fun_l21_n122()
- fun_l22_n182
-end
-
-def fun_l21_n123()
- fun_l22_n269
-end
-
-def fun_l21_n124()
- fun_l22_n324
-end
-
-def fun_l21_n125()
- fun_l22_n688
-end
-
-def fun_l21_n126()
- fun_l22_n725
-end
-
-def fun_l21_n127()
- fun_l22_n48
-end
-
-def fun_l21_n128()
- fun_l22_n884
-end
-
-def fun_l21_n129()
- fun_l22_n295
-end
-
-def fun_l21_n130()
- fun_l22_n192
-end
-
-def fun_l21_n131()
- fun_l22_n777
-end
-
-def fun_l21_n132()
- fun_l22_n87
-end
-
-def fun_l21_n133()
- fun_l22_n724
-end
-
-def fun_l21_n134()
- fun_l22_n235
-end
-
-def fun_l21_n135()
- fun_l22_n239
-end
-
-def fun_l21_n136()
- fun_l22_n820
-end
-
-def fun_l21_n137()
- fun_l22_n552
-end
-
-def fun_l21_n138()
- fun_l22_n227
-end
-
-def fun_l21_n139()
- fun_l22_n806
-end
-
-def fun_l21_n140()
- fun_l22_n350
-end
-
-def fun_l21_n141()
- fun_l22_n226
-end
-
-def fun_l21_n142()
- fun_l22_n166
-end
-
-def fun_l21_n143()
- fun_l22_n480
-end
-
-def fun_l21_n144()
- fun_l22_n28
-end
-
-def fun_l21_n145()
- fun_l22_n661
-end
-
-def fun_l21_n146()
- fun_l22_n464
-end
-
-def fun_l21_n147()
- fun_l22_n573
-end
-
-def fun_l21_n148()
- fun_l22_n589
-end
-
-def fun_l21_n149()
- fun_l22_n856
-end
-
-def fun_l21_n150()
- fun_l22_n181
-end
-
-def fun_l21_n151()
- fun_l22_n252
-end
-
-def fun_l21_n152()
- fun_l22_n80
-end
-
-def fun_l21_n153()
- fun_l22_n417
-end
-
-def fun_l21_n154()
- fun_l22_n442
-end
-
-def fun_l21_n155()
- fun_l22_n928
-end
-
-def fun_l21_n156()
- fun_l22_n38
-end
-
-def fun_l21_n157()
- fun_l22_n515
-end
-
-def fun_l21_n158()
- fun_l22_n986
-end
-
-def fun_l21_n159()
- fun_l22_n173
-end
-
-def fun_l21_n160()
- fun_l22_n592
-end
-
-def fun_l21_n161()
- fun_l22_n50
-end
-
-def fun_l21_n162()
- fun_l22_n625
-end
-
-def fun_l21_n163()
- fun_l22_n651
-end
-
-def fun_l21_n164()
- fun_l22_n183
-end
-
-def fun_l21_n165()
- fun_l22_n976
-end
-
-def fun_l21_n166()
- fun_l22_n533
-end
-
-def fun_l21_n167()
- fun_l22_n313
-end
-
-def fun_l21_n168()
- fun_l22_n948
-end
-
-def fun_l21_n169()
- fun_l22_n860
-end
-
-def fun_l21_n170()
- fun_l22_n393
-end
-
-def fun_l21_n171()
- fun_l22_n986
-end
-
-def fun_l21_n172()
- fun_l22_n206
-end
-
-def fun_l21_n173()
- fun_l22_n189
-end
-
-def fun_l21_n174()
- fun_l22_n209
-end
-
-def fun_l21_n175()
- fun_l22_n822
-end
-
-def fun_l21_n176()
- fun_l22_n960
-end
-
-def fun_l21_n177()
- fun_l22_n646
-end
-
-def fun_l21_n178()
- fun_l22_n523
-end
-
-def fun_l21_n179()
- fun_l22_n520
-end
-
-def fun_l21_n180()
- fun_l22_n146
-end
-
-def fun_l21_n181()
- fun_l22_n336
-end
-
-def fun_l21_n182()
- fun_l22_n129
-end
-
-def fun_l21_n183()
- fun_l22_n382
-end
-
-def fun_l21_n184()
- fun_l22_n833
-end
-
-def fun_l21_n185()
- fun_l22_n398
-end
-
-def fun_l21_n186()
- fun_l22_n919
-end
-
-def fun_l21_n187()
- fun_l22_n463
-end
-
-def fun_l21_n188()
- fun_l22_n442
-end
-
-def fun_l21_n189()
- fun_l22_n395
-end
-
-def fun_l21_n190()
- fun_l22_n934
-end
-
-def fun_l21_n191()
- fun_l22_n117
-end
-
-def fun_l21_n192()
- fun_l22_n436
-end
-
-def fun_l21_n193()
- fun_l22_n316
-end
-
-def fun_l21_n194()
- fun_l22_n512
-end
-
-def fun_l21_n195()
- fun_l22_n565
-end
-
-def fun_l21_n196()
- fun_l22_n494
-end
-
-def fun_l21_n197()
- fun_l22_n586
-end
-
-def fun_l21_n198()
- fun_l22_n456
-end
-
-def fun_l21_n199()
- fun_l22_n465
-end
-
-def fun_l21_n200()
- fun_l22_n622
-end
-
-def fun_l21_n201()
- fun_l22_n747
-end
-
-def fun_l21_n202()
- fun_l22_n216
-end
-
-def fun_l21_n203()
- fun_l22_n568
-end
-
-def fun_l21_n204()
- fun_l22_n94
-end
-
-def fun_l21_n205()
- fun_l22_n839
-end
-
-def fun_l21_n206()
- fun_l22_n357
-end
-
-def fun_l21_n207()
- fun_l22_n485
-end
-
-def fun_l21_n208()
- fun_l22_n818
-end
-
-def fun_l21_n209()
- fun_l22_n852
-end
-
-def fun_l21_n210()
- fun_l22_n264
-end
-
-def fun_l21_n211()
- fun_l22_n519
-end
-
-def fun_l21_n212()
- fun_l22_n362
-end
-
-def fun_l21_n213()
- fun_l22_n955
-end
-
-def fun_l21_n214()
- fun_l22_n756
-end
-
-def fun_l21_n215()
- fun_l22_n271
-end
-
-def fun_l21_n216()
- fun_l22_n169
-end
-
-def fun_l21_n217()
- fun_l22_n456
-end
-
-def fun_l21_n218()
- fun_l22_n227
-end
-
-def fun_l21_n219()
- fun_l22_n75
-end
-
-def fun_l21_n220()
- fun_l22_n21
-end
-
-def fun_l21_n221()
- fun_l22_n35
-end
-
-def fun_l21_n222()
- fun_l22_n386
-end
-
-def fun_l21_n223()
- fun_l22_n678
-end
-
-def fun_l21_n224()
- fun_l22_n463
-end
-
-def fun_l21_n225()
- fun_l22_n200
-end
-
-def fun_l21_n226()
- fun_l22_n502
-end
-
-def fun_l21_n227()
- fun_l22_n690
-end
-
-def fun_l21_n228()
- fun_l22_n153
-end
-
-def fun_l21_n229()
- fun_l22_n218
-end
-
-def fun_l21_n230()
- fun_l22_n20
-end
-
-def fun_l21_n231()
- fun_l22_n48
-end
-
-def fun_l21_n232()
- fun_l22_n549
-end
-
-def fun_l21_n233()
- fun_l22_n994
-end
-
-def fun_l21_n234()
- fun_l22_n242
-end
-
-def fun_l21_n235()
- fun_l22_n153
-end
-
-def fun_l21_n236()
- fun_l22_n830
-end
-
-def fun_l21_n237()
- fun_l22_n663
-end
-
-def fun_l21_n238()
- fun_l22_n387
-end
-
-def fun_l21_n239()
- fun_l22_n87
-end
-
-def fun_l21_n240()
- fun_l22_n341
-end
-
-def fun_l21_n241()
- fun_l22_n499
-end
-
-def fun_l21_n242()
- fun_l22_n231
-end
-
-def fun_l21_n243()
- fun_l22_n644
-end
-
-def fun_l21_n244()
- fun_l22_n212
-end
-
-def fun_l21_n245()
- fun_l22_n197
-end
-
-def fun_l21_n246()
- fun_l22_n831
-end
-
-def fun_l21_n247()
- fun_l22_n62
-end
-
-def fun_l21_n248()
- fun_l22_n689
-end
-
-def fun_l21_n249()
- fun_l22_n884
-end
-
-def fun_l21_n250()
- fun_l22_n767
-end
-
-def fun_l21_n251()
- fun_l22_n278
-end
-
-def fun_l21_n252()
- fun_l22_n881
-end
-
-def fun_l21_n253()
- fun_l22_n585
-end
-
-def fun_l21_n254()
- fun_l22_n967
-end
-
-def fun_l21_n255()
- fun_l22_n381
-end
-
-def fun_l21_n256()
- fun_l22_n579
-end
-
-def fun_l21_n257()
- fun_l22_n447
-end
-
-def fun_l21_n258()
- fun_l22_n156
-end
-
-def fun_l21_n259()
- fun_l22_n722
-end
-
-def fun_l21_n260()
- fun_l22_n431
-end
-
-def fun_l21_n261()
- fun_l22_n83
-end
-
-def fun_l21_n262()
- fun_l22_n41
-end
-
-def fun_l21_n263()
- fun_l22_n18
-end
-
-def fun_l21_n264()
- fun_l22_n686
-end
-
-def fun_l21_n265()
- fun_l22_n668
-end
-
-def fun_l21_n266()
- fun_l22_n652
-end
-
-def fun_l21_n267()
- fun_l22_n121
-end
-
-def fun_l21_n268()
- fun_l22_n279
-end
-
-def fun_l21_n269()
- fun_l22_n540
-end
-
-def fun_l21_n270()
- fun_l22_n360
-end
-
-def fun_l21_n271()
- fun_l22_n106
-end
-
-def fun_l21_n272()
- fun_l22_n454
-end
-
-def fun_l21_n273()
- fun_l22_n882
-end
-
-def fun_l21_n274()
- fun_l22_n523
-end
-
-def fun_l21_n275()
- fun_l22_n938
-end
-
-def fun_l21_n276()
- fun_l22_n932
-end
-
-def fun_l21_n277()
- fun_l22_n923
-end
-
-def fun_l21_n278()
- fun_l22_n728
-end
-
-def fun_l21_n279()
- fun_l22_n587
-end
-
-def fun_l21_n280()
- fun_l22_n608
-end
-
-def fun_l21_n281()
- fun_l22_n366
-end
-
-def fun_l21_n282()
- fun_l22_n486
-end
-
-def fun_l21_n283()
- fun_l22_n864
-end
-
-def fun_l21_n284()
- fun_l22_n34
-end
-
-def fun_l21_n285()
- fun_l22_n658
-end
-
-def fun_l21_n286()
- fun_l22_n488
-end
-
-def fun_l21_n287()
- fun_l22_n266
-end
-
-def fun_l21_n288()
- fun_l22_n810
-end
-
-def fun_l21_n289()
- fun_l22_n965
-end
-
-def fun_l21_n290()
- fun_l22_n513
-end
-
-def fun_l21_n291()
- fun_l22_n608
-end
-
-def fun_l21_n292()
- fun_l22_n499
-end
-
-def fun_l21_n293()
- fun_l22_n360
-end
-
-def fun_l21_n294()
- fun_l22_n511
-end
-
-def fun_l21_n295()
- fun_l22_n940
-end
-
-def fun_l21_n296()
- fun_l22_n99
-end
-
-def fun_l21_n297()
- fun_l22_n496
-end
-
-def fun_l21_n298()
- fun_l22_n273
-end
-
-def fun_l21_n299()
- fun_l22_n232
-end
-
-def fun_l21_n300()
- fun_l22_n165
-end
-
-def fun_l21_n301()
- fun_l22_n531
-end
-
-def fun_l21_n302()
- fun_l22_n773
-end
-
-def fun_l21_n303()
- fun_l22_n610
-end
-
-def fun_l21_n304()
- fun_l22_n564
-end
-
-def fun_l21_n305()
- fun_l22_n16
-end
-
-def fun_l21_n306()
- fun_l22_n176
-end
-
-def fun_l21_n307()
- fun_l22_n846
-end
-
-def fun_l21_n308()
- fun_l22_n680
-end
-
-def fun_l21_n309()
- fun_l22_n858
-end
-
-def fun_l21_n310()
- fun_l22_n220
-end
-
-def fun_l21_n311()
- fun_l22_n125
-end
-
-def fun_l21_n312()
- fun_l22_n441
-end
-
-def fun_l21_n313()
- fun_l22_n751
-end
-
-def fun_l21_n314()
- fun_l22_n863
-end
-
-def fun_l21_n315()
- fun_l22_n284
-end
-
-def fun_l21_n316()
- fun_l22_n648
-end
-
-def fun_l21_n317()
- fun_l22_n363
-end
-
-def fun_l21_n318()
- fun_l22_n427
-end
-
-def fun_l21_n319()
- fun_l22_n557
-end
-
-def fun_l21_n320()
- fun_l22_n531
-end
-
-def fun_l21_n321()
- fun_l22_n252
-end
-
-def fun_l21_n322()
- fun_l22_n393
-end
-
-def fun_l21_n323()
- fun_l22_n108
-end
-
-def fun_l21_n324()
- fun_l22_n138
-end
-
-def fun_l21_n325()
- fun_l22_n68
-end
-
-def fun_l21_n326()
- fun_l22_n909
-end
-
-def fun_l21_n327()
- fun_l22_n672
-end
-
-def fun_l21_n328()
- fun_l22_n746
-end
-
-def fun_l21_n329()
- fun_l22_n479
-end
-
-def fun_l21_n330()
- fun_l22_n892
-end
-
-def fun_l21_n331()
- fun_l22_n30
-end
-
-def fun_l21_n332()
- fun_l22_n184
-end
-
-def fun_l21_n333()
- fun_l22_n956
-end
-
-def fun_l21_n334()
- fun_l22_n712
-end
-
-def fun_l21_n335()
- fun_l22_n929
-end
-
-def fun_l21_n336()
- fun_l22_n914
-end
-
-def fun_l21_n337()
- fun_l22_n14
-end
-
-def fun_l21_n338()
- fun_l22_n471
-end
-
-def fun_l21_n339()
- fun_l22_n488
-end
-
-def fun_l21_n340()
- fun_l22_n40
-end
-
-def fun_l21_n341()
- fun_l22_n406
-end
-
-def fun_l21_n342()
- fun_l22_n11
-end
-
-def fun_l21_n343()
- fun_l22_n779
-end
-
-def fun_l21_n344()
- fun_l22_n999
-end
-
-def fun_l21_n345()
- fun_l22_n833
-end
-
-def fun_l21_n346()
- fun_l22_n897
-end
-
-def fun_l21_n347()
- fun_l22_n365
-end
-
-def fun_l21_n348()
- fun_l22_n583
-end
-
-def fun_l21_n349()
- fun_l22_n326
-end
-
-def fun_l21_n350()
- fun_l22_n556
-end
-
-def fun_l21_n351()
- fun_l22_n249
-end
-
-def fun_l21_n352()
- fun_l22_n146
-end
-
-def fun_l21_n353()
- fun_l22_n865
-end
-
-def fun_l21_n354()
- fun_l22_n303
-end
-
-def fun_l21_n355()
- fun_l22_n64
-end
-
-def fun_l21_n356()
- fun_l22_n785
-end
-
-def fun_l21_n357()
- fun_l22_n176
-end
-
-def fun_l21_n358()
- fun_l22_n891
-end
-
-def fun_l21_n359()
- fun_l22_n129
-end
-
-def fun_l21_n360()
- fun_l22_n19
-end
-
-def fun_l21_n361()
- fun_l22_n372
-end
-
-def fun_l21_n362()
- fun_l22_n999
-end
-
-def fun_l21_n363()
- fun_l22_n450
-end
-
-def fun_l21_n364()
- fun_l22_n455
-end
-
-def fun_l21_n365()
- fun_l22_n174
-end
-
-def fun_l21_n366()
- fun_l22_n719
-end
-
-def fun_l21_n367()
- fun_l22_n997
-end
-
-def fun_l21_n368()
- fun_l22_n256
-end
-
-def fun_l21_n369()
- fun_l22_n206
-end
-
-def fun_l21_n370()
- fun_l22_n988
-end
-
-def fun_l21_n371()
- fun_l22_n147
-end
-
-def fun_l21_n372()
- fun_l22_n750
-end
-
-def fun_l21_n373()
- fun_l22_n585
-end
-
-def fun_l21_n374()
- fun_l22_n213
-end
-
-def fun_l21_n375()
- fun_l22_n583
-end
-
-def fun_l21_n376()
- fun_l22_n564
-end
-
-def fun_l21_n377()
- fun_l22_n689
-end
-
-def fun_l21_n378()
- fun_l22_n955
-end
-
-def fun_l21_n379()
- fun_l22_n560
-end
-
-def fun_l21_n380()
- fun_l22_n237
-end
-
-def fun_l21_n381()
- fun_l22_n272
-end
-
-def fun_l21_n382()
- fun_l22_n455
-end
-
-def fun_l21_n383()
- fun_l22_n233
-end
-
-def fun_l21_n384()
- fun_l22_n658
-end
-
-def fun_l21_n385()
- fun_l22_n319
-end
-
-def fun_l21_n386()
- fun_l22_n852
-end
-
-def fun_l21_n387()
- fun_l22_n343
-end
-
-def fun_l21_n388()
- fun_l22_n645
-end
-
-def fun_l21_n389()
- fun_l22_n433
-end
-
-def fun_l21_n390()
- fun_l22_n430
-end
-
-def fun_l21_n391()
- fun_l22_n636
-end
-
-def fun_l21_n392()
- fun_l22_n682
-end
-
-def fun_l21_n393()
- fun_l22_n859
-end
-
-def fun_l21_n394()
- fun_l22_n315
-end
-
-def fun_l21_n395()
- fun_l22_n91
-end
-
-def fun_l21_n396()
- fun_l22_n817
-end
-
-def fun_l21_n397()
- fun_l22_n268
-end
-
-def fun_l21_n398()
- fun_l22_n476
-end
-
-def fun_l21_n399()
- fun_l22_n612
-end
-
-def fun_l21_n400()
- fun_l22_n392
-end
-
-def fun_l21_n401()
- fun_l22_n728
-end
-
-def fun_l21_n402()
- fun_l22_n652
-end
-
-def fun_l21_n403()
- fun_l22_n547
-end
-
-def fun_l21_n404()
- fun_l22_n101
-end
-
-def fun_l21_n405()
- fun_l22_n666
-end
-
-def fun_l21_n406()
- fun_l22_n521
-end
-
-def fun_l21_n407()
- fun_l22_n860
-end
-
-def fun_l21_n408()
- fun_l22_n577
-end
-
-def fun_l21_n409()
- fun_l22_n258
-end
-
-def fun_l21_n410()
- fun_l22_n260
-end
-
-def fun_l21_n411()
- fun_l22_n927
-end
-
-def fun_l21_n412()
- fun_l22_n13
-end
-
-def fun_l21_n413()
- fun_l22_n308
-end
-
-def fun_l21_n414()
- fun_l22_n189
-end
-
-def fun_l21_n415()
- fun_l22_n183
-end
-
-def fun_l21_n416()
- fun_l22_n370
-end
-
-def fun_l21_n417()
- fun_l22_n407
-end
-
-def fun_l21_n418()
- fun_l22_n959
-end
-
-def fun_l21_n419()
- fun_l22_n908
-end
-
-def fun_l21_n420()
- fun_l22_n84
-end
-
-def fun_l21_n421()
- fun_l22_n951
-end
-
-def fun_l21_n422()
- fun_l22_n286
-end
-
-def fun_l21_n423()
- fun_l22_n54
-end
-
-def fun_l21_n424()
- fun_l22_n410
-end
-
-def fun_l21_n425()
- fun_l22_n387
-end
-
-def fun_l21_n426()
- fun_l22_n751
-end
-
-def fun_l21_n427()
- fun_l22_n971
-end
-
-def fun_l21_n428()
- fun_l22_n162
-end
-
-def fun_l21_n429()
- fun_l22_n15
-end
-
-def fun_l21_n430()
- fun_l22_n35
-end
-
-def fun_l21_n431()
- fun_l22_n354
-end
-
-def fun_l21_n432()
- fun_l22_n979
-end
-
-def fun_l21_n433()
- fun_l22_n999
-end
-
-def fun_l21_n434()
- fun_l22_n622
-end
-
-def fun_l21_n435()
- fun_l22_n970
-end
-
-def fun_l21_n436()
- fun_l22_n758
-end
-
-def fun_l21_n437()
- fun_l22_n950
-end
-
-def fun_l21_n438()
- fun_l22_n865
-end
-
-def fun_l21_n439()
- fun_l22_n31
-end
-
-def fun_l21_n440()
- fun_l22_n620
-end
-
-def fun_l21_n441()
- fun_l22_n170
-end
-
-def fun_l21_n442()
- fun_l22_n816
-end
-
-def fun_l21_n443()
- fun_l22_n364
-end
-
-def fun_l21_n444()
- fun_l22_n289
-end
-
-def fun_l21_n445()
- fun_l22_n949
-end
-
-def fun_l21_n446()
- fun_l22_n876
-end
-
-def fun_l21_n447()
- fun_l22_n971
-end
-
-def fun_l21_n448()
- fun_l22_n343
-end
-
-def fun_l21_n449()
- fun_l22_n14
-end
-
-def fun_l21_n450()
- fun_l22_n925
-end
-
-def fun_l21_n451()
- fun_l22_n234
-end
-
-def fun_l21_n452()
- fun_l22_n242
-end
-
-def fun_l21_n453()
- fun_l22_n184
-end
-
-def fun_l21_n454()
- fun_l22_n158
-end
-
-def fun_l21_n455()
- fun_l22_n645
-end
-
-def fun_l21_n456()
- fun_l22_n173
-end
-
-def fun_l21_n457()
- fun_l22_n363
-end
-
-def fun_l21_n458()
- fun_l22_n787
-end
-
-def fun_l21_n459()
- fun_l22_n102
-end
-
-def fun_l21_n460()
- fun_l22_n886
-end
-
-def fun_l21_n461()
- fun_l22_n279
-end
-
-def fun_l21_n462()
- fun_l22_n909
-end
-
-def fun_l21_n463()
- fun_l22_n767
-end
-
-def fun_l21_n464()
- fun_l22_n82
-end
-
-def fun_l21_n465()
- fun_l22_n249
-end
-
-def fun_l21_n466()
- fun_l22_n670
-end
-
-def fun_l21_n467()
- fun_l22_n944
-end
-
-def fun_l21_n468()
- fun_l22_n191
-end
-
-def fun_l21_n469()
- fun_l22_n897
-end
-
-def fun_l21_n470()
- fun_l22_n591
-end
-
-def fun_l21_n471()
- fun_l22_n164
-end
-
-def fun_l21_n472()
- fun_l22_n984
-end
-
-def fun_l21_n473()
- fun_l22_n26
-end
-
-def fun_l21_n474()
- fun_l22_n398
-end
-
-def fun_l21_n475()
- fun_l22_n668
-end
-
-def fun_l21_n476()
- fun_l22_n190
-end
-
-def fun_l21_n477()
- fun_l22_n249
-end
-
-def fun_l21_n478()
- fun_l22_n736
-end
-
-def fun_l21_n479()
- fun_l22_n714
-end
-
-def fun_l21_n480()
- fun_l22_n929
-end
-
-def fun_l21_n481()
- fun_l22_n448
-end
-
-def fun_l21_n482()
- fun_l22_n922
-end
-
-def fun_l21_n483()
- fun_l22_n992
-end
-
-def fun_l21_n484()
- fun_l22_n306
-end
-
-def fun_l21_n485()
- fun_l22_n420
-end
-
-def fun_l21_n486()
- fun_l22_n630
-end
-
-def fun_l21_n487()
- fun_l22_n263
-end
-
-def fun_l21_n488()
- fun_l22_n754
-end
-
-def fun_l21_n489()
- fun_l22_n96
-end
-
-def fun_l21_n490()
- fun_l22_n338
-end
-
-def fun_l21_n491()
- fun_l22_n615
-end
-
-def fun_l21_n492()
- fun_l22_n704
-end
-
-def fun_l21_n493()
- fun_l22_n581
-end
-
-def fun_l21_n494()
- fun_l22_n801
-end
-
-def fun_l21_n495()
- fun_l22_n204
-end
-
-def fun_l21_n496()
- fun_l22_n835
-end
-
-def fun_l21_n497()
- fun_l22_n479
-end
-
-def fun_l21_n498()
- fun_l22_n379
-end
-
-def fun_l21_n499()
- fun_l22_n937
-end
-
-def fun_l21_n500()
- fun_l22_n830
-end
-
-def fun_l21_n501()
- fun_l22_n458
-end
-
-def fun_l21_n502()
- fun_l22_n806
-end
-
-def fun_l21_n503()
- fun_l22_n158
-end
-
-def fun_l21_n504()
- fun_l22_n151
-end
-
-def fun_l21_n505()
- fun_l22_n685
-end
-
-def fun_l21_n506()
- fun_l22_n806
-end
-
-def fun_l21_n507()
- fun_l22_n584
-end
-
-def fun_l21_n508()
- fun_l22_n644
-end
-
-def fun_l21_n509()
- fun_l22_n237
-end
-
-def fun_l21_n510()
- fun_l22_n542
-end
-
-def fun_l21_n511()
- fun_l22_n450
-end
-
-def fun_l21_n512()
- fun_l22_n385
-end
-
-def fun_l21_n513()
- fun_l22_n321
-end
-
-def fun_l21_n514()
- fun_l22_n548
-end
-
-def fun_l21_n515()
- fun_l22_n519
-end
-
-def fun_l21_n516()
- fun_l22_n309
-end
-
-def fun_l21_n517()
- fun_l22_n4
-end
-
-def fun_l21_n518()
- fun_l22_n930
-end
-
-def fun_l21_n519()
- fun_l22_n245
-end
-
-def fun_l21_n520()
- fun_l22_n568
-end
-
-def fun_l21_n521()
- fun_l22_n527
-end
-
-def fun_l21_n522()
- fun_l22_n650
-end
-
-def fun_l21_n523()
- fun_l22_n391
-end
-
-def fun_l21_n524()
- fun_l22_n749
-end
-
-def fun_l21_n525()
- fun_l22_n810
-end
-
-def fun_l21_n526()
- fun_l22_n615
-end
-
-def fun_l21_n527()
- fun_l22_n702
-end
-
-def fun_l21_n528()
- fun_l22_n62
-end
-
-def fun_l21_n529()
- fun_l22_n316
-end
-
-def fun_l21_n530()
- fun_l22_n201
-end
-
-def fun_l21_n531()
- fun_l22_n447
-end
-
-def fun_l21_n532()
- fun_l22_n506
-end
-
-def fun_l21_n533()
- fun_l22_n900
-end
-
-def fun_l21_n534()
- fun_l22_n652
-end
-
-def fun_l21_n535()
- fun_l22_n493
-end
-
-def fun_l21_n536()
- fun_l22_n803
-end
-
-def fun_l21_n537()
- fun_l22_n263
-end
-
-def fun_l21_n538()
- fun_l22_n303
-end
-
-def fun_l21_n539()
- fun_l22_n17
-end
-
-def fun_l21_n540()
- fun_l22_n900
-end
-
-def fun_l21_n541()
- fun_l22_n917
-end
-
-def fun_l21_n542()
- fun_l22_n789
-end
-
-def fun_l21_n543()
- fun_l22_n668
-end
-
-def fun_l21_n544()
- fun_l22_n335
-end
-
-def fun_l21_n545()
- fun_l22_n560
-end
-
-def fun_l21_n546()
- fun_l22_n705
-end
-
-def fun_l21_n547()
- fun_l22_n159
-end
-
-def fun_l21_n548()
- fun_l22_n874
-end
-
-def fun_l21_n549()
- fun_l22_n809
-end
-
-def fun_l21_n550()
- fun_l22_n726
-end
-
-def fun_l21_n551()
- fun_l22_n27
-end
-
-def fun_l21_n552()
- fun_l22_n63
-end
-
-def fun_l21_n553()
- fun_l22_n642
-end
-
-def fun_l21_n554()
- fun_l22_n694
-end
-
-def fun_l21_n555()
- fun_l22_n432
-end
-
-def fun_l21_n556()
- fun_l22_n439
-end
-
-def fun_l21_n557()
- fun_l22_n876
-end
-
-def fun_l21_n558()
- fun_l22_n998
-end
-
-def fun_l21_n559()
- fun_l22_n703
-end
-
-def fun_l21_n560()
- fun_l22_n785
-end
-
-def fun_l21_n561()
- fun_l22_n543
-end
-
-def fun_l21_n562()
- fun_l22_n286
-end
-
-def fun_l21_n563()
- fun_l22_n771
-end
-
-def fun_l21_n564()
- fun_l22_n447
-end
-
-def fun_l21_n565()
- fun_l22_n955
-end
-
-def fun_l21_n566()
- fun_l22_n603
-end
-
-def fun_l21_n567()
- fun_l22_n258
-end
-
-def fun_l21_n568()
- fun_l22_n936
-end
-
-def fun_l21_n569()
- fun_l22_n524
-end
-
-def fun_l21_n570()
- fun_l22_n205
-end
-
-def fun_l21_n571()
- fun_l22_n41
-end
-
-def fun_l21_n572()
- fun_l22_n589
-end
-
-def fun_l21_n573()
- fun_l22_n519
-end
-
-def fun_l21_n574()
- fun_l22_n500
-end
-
-def fun_l21_n575()
- fun_l22_n307
-end
-
-def fun_l21_n576()
- fun_l22_n598
-end
-
-def fun_l21_n577()
- fun_l22_n698
-end
-
-def fun_l21_n578()
- fun_l22_n200
-end
-
-def fun_l21_n579()
- fun_l22_n657
-end
-
-def fun_l21_n580()
- fun_l22_n353
-end
-
-def fun_l21_n581()
- fun_l22_n553
-end
-
-def fun_l21_n582()
- fun_l22_n490
-end
-
-def fun_l21_n583()
- fun_l22_n112
-end
-
-def fun_l21_n584()
- fun_l22_n626
-end
-
-def fun_l21_n585()
- fun_l22_n815
-end
-
-def fun_l21_n586()
- fun_l22_n792
-end
-
-def fun_l21_n587()
- fun_l22_n295
-end
-
-def fun_l21_n588()
- fun_l22_n201
-end
-
-def fun_l21_n589()
- fun_l22_n248
-end
-
-def fun_l21_n590()
- fun_l22_n295
-end
-
-def fun_l21_n591()
- fun_l22_n708
-end
-
-def fun_l21_n592()
- fun_l22_n507
-end
-
-def fun_l21_n593()
- fun_l22_n177
-end
-
-def fun_l21_n594()
- fun_l22_n467
-end
-
-def fun_l21_n595()
- fun_l22_n113
-end
-
-def fun_l21_n596()
- fun_l22_n390
-end
-
-def fun_l21_n597()
- fun_l22_n348
-end
-
-def fun_l21_n598()
- fun_l22_n545
-end
-
-def fun_l21_n599()
- fun_l22_n695
-end
-
-def fun_l21_n600()
- fun_l22_n170
-end
-
-def fun_l21_n601()
- fun_l22_n978
-end
-
-def fun_l21_n602()
- fun_l22_n70
-end
-
-def fun_l21_n603()
- fun_l22_n161
-end
-
-def fun_l21_n604()
- fun_l22_n33
-end
-
-def fun_l21_n605()
- fun_l22_n275
-end
-
-def fun_l21_n606()
- fun_l22_n738
-end
-
-def fun_l21_n607()
- fun_l22_n152
-end
-
-def fun_l21_n608()
- fun_l22_n380
-end
-
-def fun_l21_n609()
- fun_l22_n903
-end
-
-def fun_l21_n610()
- fun_l22_n274
-end
-
-def fun_l21_n611()
- fun_l22_n100
-end
-
-def fun_l21_n612()
- fun_l22_n206
-end
-
-def fun_l21_n613()
- fun_l22_n225
-end
-
-def fun_l21_n614()
- fun_l22_n627
-end
-
-def fun_l21_n615()
- fun_l22_n332
-end
-
-def fun_l21_n616()
- fun_l22_n312
-end
-
-def fun_l21_n617()
- fun_l22_n379
-end
-
-def fun_l21_n618()
- fun_l22_n889
-end
-
-def fun_l21_n619()
- fun_l22_n399
-end
-
-def fun_l21_n620()
- fun_l22_n212
-end
-
-def fun_l21_n621()
- fun_l22_n289
-end
-
-def fun_l21_n622()
- fun_l22_n161
-end
-
-def fun_l21_n623()
- fun_l22_n764
-end
-
-def fun_l21_n624()
- fun_l22_n165
-end
-
-def fun_l21_n625()
- fun_l22_n768
-end
-
-def fun_l21_n626()
- fun_l22_n596
-end
-
-def fun_l21_n627()
- fun_l22_n506
-end
-
-def fun_l21_n628()
- fun_l22_n523
-end
-
-def fun_l21_n629()
- fun_l22_n261
-end
-
-def fun_l21_n630()
- fun_l22_n683
-end
-
-def fun_l21_n631()
- fun_l22_n518
-end
-
-def fun_l21_n632()
- fun_l22_n813
-end
-
-def fun_l21_n633()
- fun_l22_n949
-end
-
-def fun_l21_n634()
- fun_l22_n856
-end
-
-def fun_l21_n635()
- fun_l22_n250
-end
-
-def fun_l21_n636()
- fun_l22_n840
-end
-
-def fun_l21_n637()
- fun_l22_n763
-end
-
-def fun_l21_n638()
- fun_l22_n40
-end
-
-def fun_l21_n639()
- fun_l22_n13
-end
-
-def fun_l21_n640()
- fun_l22_n789
-end
-
-def fun_l21_n641()
- fun_l22_n517
-end
-
-def fun_l21_n642()
- fun_l22_n366
-end
-
-def fun_l21_n643()
- fun_l22_n155
-end
-
-def fun_l21_n644()
- fun_l22_n370
-end
-
-def fun_l21_n645()
- fun_l22_n633
-end
-
-def fun_l21_n646()
- fun_l22_n996
-end
-
-def fun_l21_n647()
- fun_l22_n943
-end
-
-def fun_l21_n648()
- fun_l22_n81
-end
-
-def fun_l21_n649()
- fun_l22_n161
-end
-
-def fun_l21_n650()
- fun_l22_n346
-end
-
-def fun_l21_n651()
- fun_l22_n338
-end
-
-def fun_l21_n652()
- fun_l22_n989
-end
-
-def fun_l21_n653()
- fun_l22_n727
-end
-
-def fun_l21_n654()
- fun_l22_n261
-end
-
-def fun_l21_n655()
- fun_l22_n975
-end
-
-def fun_l21_n656()
- fun_l22_n635
-end
-
-def fun_l21_n657()
- fun_l22_n622
-end
-
-def fun_l21_n658()
- fun_l22_n519
-end
-
-def fun_l21_n659()
- fun_l22_n619
-end
-
-def fun_l21_n660()
- fun_l22_n489
-end
-
-def fun_l21_n661()
- fun_l22_n876
-end
-
-def fun_l21_n662()
- fun_l22_n261
-end
-
-def fun_l21_n663()
- fun_l22_n96
-end
-
-def fun_l21_n664()
- fun_l22_n984
-end
-
-def fun_l21_n665()
- fun_l22_n367
-end
-
-def fun_l21_n666()
- fun_l22_n100
-end
-
-def fun_l21_n667()
- fun_l22_n555
-end
-
-def fun_l21_n668()
- fun_l22_n438
-end
-
-def fun_l21_n669()
- fun_l22_n141
-end
-
-def fun_l21_n670()
- fun_l22_n240
-end
-
-def fun_l21_n671()
- fun_l22_n185
-end
-
-def fun_l21_n672()
- fun_l22_n199
-end
-
-def fun_l21_n673()
- fun_l22_n166
-end
-
-def fun_l21_n674()
- fun_l22_n322
-end
-
-def fun_l21_n675()
- fun_l22_n811
-end
-
-def fun_l21_n676()
- fun_l22_n18
-end
-
-def fun_l21_n677()
- fun_l22_n800
-end
-
-def fun_l21_n678()
- fun_l22_n729
-end
-
-def fun_l21_n679()
- fun_l22_n862
-end
-
-def fun_l21_n680()
- fun_l22_n911
-end
-
-def fun_l21_n681()
- fun_l22_n342
-end
-
-def fun_l21_n682()
- fun_l22_n635
-end
-
-def fun_l21_n683()
- fun_l22_n814
-end
-
-def fun_l21_n684()
- fun_l22_n786
-end
-
-def fun_l21_n685()
- fun_l22_n598
-end
-
-def fun_l21_n686()
- fun_l22_n622
-end
-
-def fun_l21_n687()
- fun_l22_n847
-end
-
-def fun_l21_n688()
- fun_l22_n94
-end
-
-def fun_l21_n689()
- fun_l22_n683
-end
-
-def fun_l21_n690()
- fun_l22_n260
-end
-
-def fun_l21_n691()
- fun_l22_n684
-end
-
-def fun_l21_n692()
- fun_l22_n923
-end
-
-def fun_l21_n693()
- fun_l22_n124
-end
-
-def fun_l21_n694()
- fun_l22_n641
-end
-
-def fun_l21_n695()
- fun_l22_n62
-end
-
-def fun_l21_n696()
- fun_l22_n394
-end
-
-def fun_l21_n697()
- fun_l22_n336
-end
-
-def fun_l21_n698()
- fun_l22_n896
-end
-
-def fun_l21_n699()
- fun_l22_n451
-end
-
-def fun_l21_n700()
- fun_l22_n519
-end
-
-def fun_l21_n701()
- fun_l22_n207
-end
-
-def fun_l21_n702()
- fun_l22_n690
-end
-
-def fun_l21_n703()
- fun_l22_n901
-end
-
-def fun_l21_n704()
- fun_l22_n722
-end
-
-def fun_l21_n705()
- fun_l22_n446
-end
-
-def fun_l21_n706()
- fun_l22_n292
-end
-
-def fun_l21_n707()
- fun_l22_n678
-end
-
-def fun_l21_n708()
- fun_l22_n77
-end
-
-def fun_l21_n709()
- fun_l22_n564
-end
-
-def fun_l21_n710()
- fun_l22_n253
-end
-
-def fun_l21_n711()
- fun_l22_n342
-end
-
-def fun_l21_n712()
- fun_l22_n841
-end
-
-def fun_l21_n713()
- fun_l22_n981
-end
-
-def fun_l21_n714()
- fun_l22_n130
-end
-
-def fun_l21_n715()
- fun_l22_n11
-end
-
-def fun_l21_n716()
- fun_l22_n320
-end
-
-def fun_l21_n717()
- fun_l22_n653
-end
-
-def fun_l21_n718()
- fun_l22_n46
-end
-
-def fun_l21_n719()
- fun_l22_n500
-end
-
-def fun_l21_n720()
- fun_l22_n694
-end
-
-def fun_l21_n721()
- fun_l22_n422
-end
-
-def fun_l21_n722()
- fun_l22_n354
-end
-
-def fun_l21_n723()
- fun_l22_n951
-end
-
-def fun_l21_n724()
- fun_l22_n835
-end
-
-def fun_l21_n725()
- fun_l22_n138
-end
-
-def fun_l21_n726()
- fun_l22_n416
-end
-
-def fun_l21_n727()
- fun_l22_n798
-end
-
-def fun_l21_n728()
- fun_l22_n941
-end
-
-def fun_l21_n729()
- fun_l22_n522
-end
-
-def fun_l21_n730()
- fun_l22_n183
-end
-
-def fun_l21_n731()
- fun_l22_n538
-end
-
-def fun_l21_n732()
- fun_l22_n422
-end
-
-def fun_l21_n733()
- fun_l22_n692
-end
-
-def fun_l21_n734()
- fun_l22_n272
-end
-
-def fun_l21_n735()
- fun_l22_n434
-end
-
-def fun_l21_n736()
- fun_l22_n876
-end
-
-def fun_l21_n737()
- fun_l22_n685
-end
-
-def fun_l21_n738()
- fun_l22_n338
-end
-
-def fun_l21_n739()
- fun_l22_n835
-end
-
-def fun_l21_n740()
- fun_l22_n307
-end
-
-def fun_l21_n741()
- fun_l22_n270
-end
-
-def fun_l21_n742()
- fun_l22_n626
-end
-
-def fun_l21_n743()
- fun_l22_n92
-end
-
-def fun_l21_n744()
- fun_l22_n532
-end
-
-def fun_l21_n745()
- fun_l22_n508
-end
-
-def fun_l21_n746()
- fun_l22_n866
-end
-
-def fun_l21_n747()
- fun_l22_n474
-end
-
-def fun_l21_n748()
- fun_l22_n697
-end
-
-def fun_l21_n749()
- fun_l22_n952
-end
-
-def fun_l21_n750()
- fun_l22_n835
-end
-
-def fun_l21_n751()
- fun_l22_n21
-end
-
-def fun_l21_n752()
- fun_l22_n386
-end
-
-def fun_l21_n753()
- fun_l22_n55
-end
-
-def fun_l21_n754()
- fun_l22_n727
-end
-
-def fun_l21_n755()
- fun_l22_n944
-end
-
-def fun_l21_n756()
- fun_l22_n850
-end
-
-def fun_l21_n757()
- fun_l22_n305
-end
-
-def fun_l21_n758()
- fun_l22_n502
-end
-
-def fun_l21_n759()
- fun_l22_n544
-end
-
-def fun_l21_n760()
- fun_l22_n308
-end
-
-def fun_l21_n761()
- fun_l22_n3
-end
-
-def fun_l21_n762()
- fun_l22_n724
-end
-
-def fun_l21_n763()
- fun_l22_n87
-end
-
-def fun_l21_n764()
- fun_l22_n683
-end
-
-def fun_l21_n765()
- fun_l22_n597
-end
-
-def fun_l21_n766()
- fun_l22_n641
-end
-
-def fun_l21_n767()
- fun_l22_n614
-end
-
-def fun_l21_n768()
- fun_l22_n668
-end
-
-def fun_l21_n769()
- fun_l22_n320
-end
-
-def fun_l21_n770()
- fun_l22_n923
-end
-
-def fun_l21_n771()
- fun_l22_n762
-end
-
-def fun_l21_n772()
- fun_l22_n545
-end
-
-def fun_l21_n773()
- fun_l22_n692
-end
-
-def fun_l21_n774()
- fun_l22_n237
-end
-
-def fun_l21_n775()
- fun_l22_n373
-end
-
-def fun_l21_n776()
- fun_l22_n44
-end
-
-def fun_l21_n777()
- fun_l22_n78
-end
-
-def fun_l21_n778()
- fun_l22_n42
-end
-
-def fun_l21_n779()
- fun_l22_n133
-end
-
-def fun_l21_n780()
- fun_l22_n428
-end
-
-def fun_l21_n781()
- fun_l22_n689
-end
-
-def fun_l21_n782()
- fun_l22_n903
-end
-
-def fun_l21_n783()
- fun_l22_n758
-end
-
-def fun_l21_n784()
- fun_l22_n762
-end
-
-def fun_l21_n785()
- fun_l22_n516
-end
-
-def fun_l21_n786()
- fun_l22_n466
-end
-
-def fun_l21_n787()
- fun_l22_n373
-end
-
-def fun_l21_n788()
- fun_l22_n390
-end
-
-def fun_l21_n789()
- fun_l22_n109
-end
-
-def fun_l21_n790()
- fun_l22_n865
-end
-
-def fun_l21_n791()
- fun_l22_n112
-end
-
-def fun_l21_n792()
- fun_l22_n865
-end
-
-def fun_l21_n793()
- fun_l22_n645
-end
-
-def fun_l21_n794()
- fun_l22_n621
-end
-
-def fun_l21_n795()
- fun_l22_n758
-end
-
-def fun_l21_n796()
- fun_l22_n519
-end
-
-def fun_l21_n797()
- fun_l22_n104
-end
-
-def fun_l21_n798()
- fun_l22_n79
-end
-
-def fun_l21_n799()
- fun_l22_n840
-end
-
-def fun_l21_n800()
- fun_l22_n613
-end
-
-def fun_l21_n801()
- fun_l22_n982
-end
-
-def fun_l21_n802()
- fun_l22_n484
-end
-
-def fun_l21_n803()
- fun_l22_n321
-end
-
-def fun_l21_n804()
- fun_l22_n445
-end
-
-def fun_l21_n805()
- fun_l22_n857
-end
-
-def fun_l21_n806()
- fun_l22_n811
-end
-
-def fun_l21_n807()
- fun_l22_n763
-end
-
-def fun_l21_n808()
- fun_l22_n40
-end
-
-def fun_l21_n809()
- fun_l22_n376
-end
-
-def fun_l21_n810()
- fun_l22_n111
-end
-
-def fun_l21_n811()
- fun_l22_n318
-end
-
-def fun_l21_n812()
- fun_l22_n455
-end
-
-def fun_l21_n813()
- fun_l22_n860
-end
-
-def fun_l21_n814()
- fun_l22_n185
-end
-
-def fun_l21_n815()
- fun_l22_n932
-end
-
-def fun_l21_n816()
- fun_l22_n673
-end
-
-def fun_l21_n817()
- fun_l22_n413
-end
-
-def fun_l21_n818()
- fun_l22_n927
-end
-
-def fun_l21_n819()
- fun_l22_n827
-end
-
-def fun_l21_n820()
- fun_l22_n572
-end
-
-def fun_l21_n821()
- fun_l22_n682
-end
-
-def fun_l21_n822()
- fun_l22_n810
-end
-
-def fun_l21_n823()
- fun_l22_n492
-end
-
-def fun_l21_n824()
- fun_l22_n677
-end
-
-def fun_l21_n825()
- fun_l22_n658
-end
-
-def fun_l21_n826()
- fun_l22_n584
-end
-
-def fun_l21_n827()
- fun_l22_n360
-end
-
-def fun_l21_n828()
- fun_l22_n677
-end
-
-def fun_l21_n829()
- fun_l22_n669
-end
-
-def fun_l21_n830()
- fun_l22_n209
-end
-
-def fun_l21_n831()
- fun_l22_n526
-end
-
-def fun_l21_n832()
- fun_l22_n820
-end
-
-def fun_l21_n833()
- fun_l22_n81
-end
-
-def fun_l21_n834()
- fun_l22_n140
-end
-
-def fun_l21_n835()
- fun_l22_n407
-end
-
-def fun_l21_n836()
- fun_l22_n705
-end
-
-def fun_l21_n837()
- fun_l22_n785
-end
-
-def fun_l21_n838()
- fun_l22_n13
-end
-
-def fun_l21_n839()
- fun_l22_n490
-end
-
-def fun_l21_n840()
- fun_l22_n835
-end
-
-def fun_l21_n841()
- fun_l22_n410
-end
-
-def fun_l21_n842()
- fun_l22_n411
-end
-
-def fun_l21_n843()
- fun_l22_n315
-end
-
-def fun_l21_n844()
- fun_l22_n830
-end
-
-def fun_l21_n845()
- fun_l22_n417
-end
-
-def fun_l21_n846()
- fun_l22_n66
-end
-
-def fun_l21_n847()
- fun_l22_n484
-end
-
-def fun_l21_n848()
- fun_l22_n398
-end
-
-def fun_l21_n849()
- fun_l22_n191
-end
-
-def fun_l21_n850()
- fun_l22_n939
-end
-
-def fun_l21_n851()
- fun_l22_n233
-end
-
-def fun_l21_n852()
- fun_l22_n554
-end
-
-def fun_l21_n853()
- fun_l22_n205
-end
-
-def fun_l21_n854()
- fun_l22_n86
-end
-
-def fun_l21_n855()
- fun_l22_n396
-end
-
-def fun_l21_n856()
- fun_l22_n815
-end
-
-def fun_l21_n857()
- fun_l22_n286
-end
-
-def fun_l21_n858()
- fun_l22_n874
-end
-
-def fun_l21_n859()
- fun_l22_n274
-end
-
-def fun_l21_n860()
- fun_l22_n517
-end
-
-def fun_l21_n861()
- fun_l22_n295
-end
-
-def fun_l21_n862()
- fun_l22_n576
-end
-
-def fun_l21_n863()
- fun_l22_n745
-end
-
-def fun_l21_n864()
- fun_l22_n842
-end
-
-def fun_l21_n865()
- fun_l22_n180
-end
-
-def fun_l21_n866()
- fun_l22_n817
-end
-
-def fun_l21_n867()
- fun_l22_n663
-end
-
-def fun_l21_n868()
- fun_l22_n298
-end
-
-def fun_l21_n869()
- fun_l22_n328
-end
-
-def fun_l21_n870()
- fun_l22_n863
-end
-
-def fun_l21_n871()
- fun_l22_n669
-end
-
-def fun_l21_n872()
- fun_l22_n494
-end
-
-def fun_l21_n873()
- fun_l22_n483
-end
-
-def fun_l21_n874()
- fun_l22_n977
-end
-
-def fun_l21_n875()
- fun_l22_n797
-end
-
-def fun_l21_n876()
- fun_l22_n258
-end
-
-def fun_l21_n877()
- fun_l22_n701
-end
-
-def fun_l21_n878()
- fun_l22_n791
-end
-
-def fun_l21_n879()
- fun_l22_n201
-end
-
-def fun_l21_n880()
- fun_l22_n994
-end
-
-def fun_l21_n881()
- fun_l22_n678
-end
-
-def fun_l21_n882()
- fun_l22_n653
-end
-
-def fun_l21_n883()
- fun_l22_n339
-end
-
-def fun_l21_n884()
- fun_l22_n701
-end
-
-def fun_l21_n885()
- fun_l22_n188
-end
-
-def fun_l21_n886()
- fun_l22_n607
-end
-
-def fun_l21_n887()
- fun_l22_n108
-end
-
-def fun_l21_n888()
- fun_l22_n190
-end
-
-def fun_l21_n889()
- fun_l22_n581
-end
-
-def fun_l21_n890()
- fun_l22_n283
-end
-
-def fun_l21_n891()
- fun_l22_n743
-end
-
-def fun_l21_n892()
- fun_l22_n861
-end
-
-def fun_l21_n893()
- fun_l22_n998
-end
-
-def fun_l21_n894()
- fun_l22_n752
-end
-
-def fun_l21_n895()
- fun_l22_n762
-end
-
-def fun_l21_n896()
- fun_l22_n41
-end
-
-def fun_l21_n897()
- fun_l22_n820
-end
-
-def fun_l21_n898()
- fun_l22_n510
-end
-
-def fun_l21_n899()
- fun_l22_n974
-end
-
-def fun_l21_n900()
- fun_l22_n524
-end
-
-def fun_l21_n901()
- fun_l22_n771
-end
-
-def fun_l21_n902()
- fun_l22_n376
-end
-
-def fun_l21_n903()
- fun_l22_n684
-end
-
-def fun_l21_n904()
- fun_l22_n595
-end
-
-def fun_l21_n905()
- fun_l22_n934
-end
-
-def fun_l21_n906()
- fun_l22_n228
-end
-
-def fun_l21_n907()
- fun_l22_n685
-end
-
-def fun_l21_n908()
- fun_l22_n549
-end
-
-def fun_l21_n909()
- fun_l22_n374
-end
-
-def fun_l21_n910()
- fun_l22_n934
-end
-
-def fun_l21_n911()
- fun_l22_n660
-end
-
-def fun_l21_n912()
- fun_l22_n756
-end
-
-def fun_l21_n913()
- fun_l22_n32
-end
-
-def fun_l21_n914()
- fun_l22_n660
-end
-
-def fun_l21_n915()
- fun_l22_n52
-end
-
-def fun_l21_n916()
- fun_l22_n750
-end
-
-def fun_l21_n917()
- fun_l22_n239
-end
-
-def fun_l21_n918()
- fun_l22_n290
-end
-
-def fun_l21_n919()
- fun_l22_n914
-end
-
-def fun_l21_n920()
- fun_l22_n257
-end
-
-def fun_l21_n921()
- fun_l22_n307
-end
-
-def fun_l21_n922()
- fun_l22_n949
-end
-
-def fun_l21_n923()
- fun_l22_n344
-end
-
-def fun_l21_n924()
- fun_l22_n479
-end
-
-def fun_l21_n925()
- fun_l22_n306
-end
-
-def fun_l21_n926()
- fun_l22_n361
-end
-
-def fun_l21_n927()
- fun_l22_n429
-end
-
-def fun_l21_n928()
- fun_l22_n145
-end
-
-def fun_l21_n929()
- fun_l22_n874
-end
-
-def fun_l21_n930()
- fun_l22_n127
-end
-
-def fun_l21_n931()
- fun_l22_n909
-end
-
-def fun_l21_n932()
- fun_l22_n784
-end
-
-def fun_l21_n933()
- fun_l22_n966
-end
-
-def fun_l21_n934()
- fun_l22_n789
-end
-
-def fun_l21_n935()
- fun_l22_n787
-end
-
-def fun_l21_n936()
- fun_l22_n325
-end
-
-def fun_l21_n937()
- fun_l22_n666
-end
-
-def fun_l21_n938()
- fun_l22_n630
-end
-
-def fun_l21_n939()
- fun_l22_n321
-end
-
-def fun_l21_n940()
- fun_l22_n634
-end
-
-def fun_l21_n941()
- fun_l22_n991
-end
-
-def fun_l21_n942()
- fun_l22_n978
-end
-
-def fun_l21_n943()
- fun_l22_n583
-end
-
-def fun_l21_n944()
- fun_l22_n835
-end
-
-def fun_l21_n945()
- fun_l22_n968
-end
-
-def fun_l21_n946()
- fun_l22_n88
-end
-
-def fun_l21_n947()
- fun_l22_n484
-end
-
-def fun_l21_n948()
- fun_l22_n82
-end
-
-def fun_l21_n949()
- fun_l22_n343
-end
-
-def fun_l21_n950()
- fun_l22_n369
-end
-
-def fun_l21_n951()
- fun_l22_n565
-end
-
-def fun_l21_n952()
- fun_l22_n307
-end
-
-def fun_l21_n953()
- fun_l22_n573
-end
-
-def fun_l21_n954()
- fun_l22_n363
-end
-
-def fun_l21_n955()
- fun_l22_n853
-end
-
-def fun_l21_n956()
- fun_l22_n132
-end
-
-def fun_l21_n957()
- fun_l22_n13
-end
-
-def fun_l21_n958()
- fun_l22_n819
-end
-
-def fun_l21_n959()
- fun_l22_n124
-end
-
-def fun_l21_n960()
- fun_l22_n898
-end
-
-def fun_l21_n961()
- fun_l22_n942
-end
-
-def fun_l21_n962()
- fun_l22_n917
-end
-
-def fun_l21_n963()
- fun_l22_n199
-end
-
-def fun_l21_n964()
- fun_l22_n651
-end
-
-def fun_l21_n965()
- fun_l22_n80
-end
-
-def fun_l21_n966()
- fun_l22_n415
-end
-
-def fun_l21_n967()
- fun_l22_n230
-end
-
-def fun_l21_n968()
- fun_l22_n929
-end
-
-def fun_l21_n969()
- fun_l22_n889
-end
-
-def fun_l21_n970()
- fun_l22_n620
-end
-
-def fun_l21_n971()
- fun_l22_n588
-end
-
-def fun_l21_n972()
- fun_l22_n284
-end
-
-def fun_l21_n973()
- fun_l22_n767
-end
-
-def fun_l21_n974()
- fun_l22_n568
-end
-
-def fun_l21_n975()
- fun_l22_n687
-end
-
-def fun_l21_n976()
- fun_l22_n640
-end
-
-def fun_l21_n977()
- fun_l22_n739
-end
-
-def fun_l21_n978()
- fun_l22_n81
-end
-
-def fun_l21_n979()
- fun_l22_n216
-end
-
-def fun_l21_n980()
- fun_l22_n347
-end
-
-def fun_l21_n981()
- fun_l22_n228
-end
-
-def fun_l21_n982()
- fun_l22_n947
-end
-
-def fun_l21_n983()
- fun_l22_n563
-end
-
-def fun_l21_n984()
- fun_l22_n839
-end
-
-def fun_l21_n985()
- fun_l22_n759
-end
-
-def fun_l21_n986()
- fun_l22_n138
-end
-
-def fun_l21_n987()
- fun_l22_n269
-end
-
-def fun_l21_n988()
- fun_l22_n239
-end
-
-def fun_l21_n989()
- fun_l22_n254
-end
-
-def fun_l21_n990()
- fun_l22_n802
-end
-
-def fun_l21_n991()
- fun_l22_n368
-end
-
-def fun_l21_n992()
- fun_l22_n854
-end
-
-def fun_l21_n993()
- fun_l22_n463
-end
-
-def fun_l21_n994()
- fun_l22_n722
-end
-
-def fun_l21_n995()
- fun_l22_n770
-end
-
-def fun_l21_n996()
- fun_l22_n635
-end
-
-def fun_l21_n997()
- fun_l22_n207
-end
-
-def fun_l21_n998()
- fun_l22_n271
-end
-
-def fun_l21_n999()
- fun_l22_n815
-end
-
-def fun_l22_n0()
- fun_l23_n781
-end
-
-def fun_l22_n1()
- fun_l23_n330
-end
-
-def fun_l22_n2()
- fun_l23_n493
-end
-
-def fun_l22_n3()
- fun_l23_n513
-end
-
-def fun_l22_n4()
- fun_l23_n515
-end
-
-def fun_l22_n5()
- fun_l23_n746
-end
-
-def fun_l22_n6()
- fun_l23_n739
-end
-
-def fun_l22_n7()
- fun_l23_n270
-end
-
-def fun_l22_n8()
- fun_l23_n918
-end
-
-def fun_l22_n9()
- fun_l23_n425
-end
-
-def fun_l22_n10()
- fun_l23_n361
-end
-
-def fun_l22_n11()
- fun_l23_n696
-end
-
-def fun_l22_n12()
- fun_l23_n344
-end
-
-def fun_l22_n13()
- fun_l23_n446
-end
-
-def fun_l22_n14()
- fun_l23_n487
-end
-
-def fun_l22_n15()
- fun_l23_n94
-end
-
-def fun_l22_n16()
- fun_l23_n206
-end
-
-def fun_l22_n17()
- fun_l23_n10
-end
-
-def fun_l22_n18()
- fun_l23_n221
-end
-
-def fun_l22_n19()
- fun_l23_n185
-end
-
-def fun_l22_n20()
- fun_l23_n869
-end
-
-def fun_l22_n21()
- fun_l23_n788
-end
-
-def fun_l22_n22()
- fun_l23_n173
-end
-
-def fun_l22_n23()
- fun_l23_n73
-end
-
-def fun_l22_n24()
- fun_l23_n486
-end
-
-def fun_l22_n25()
- fun_l23_n631
-end
-
-def fun_l22_n26()
- fun_l23_n849
-end
-
-def fun_l22_n27()
- fun_l23_n429
-end
-
-def fun_l22_n28()
- fun_l23_n365
-end
-
-def fun_l22_n29()
- fun_l23_n429
-end
-
-def fun_l22_n30()
- fun_l23_n411
-end
-
-def fun_l22_n31()
- fun_l23_n229
-end
-
-def fun_l22_n32()
- fun_l23_n921
-end
-
-def fun_l22_n33()
- fun_l23_n705
-end
-
-def fun_l22_n34()
- fun_l23_n660
-end
-
-def fun_l22_n35()
- fun_l23_n264
-end
-
-def fun_l22_n36()
- fun_l23_n395
-end
-
-def fun_l22_n37()
- fun_l23_n722
-end
-
-def fun_l22_n38()
- fun_l23_n402
-end
-
-def fun_l22_n39()
- fun_l23_n686
-end
-
-def fun_l22_n40()
- fun_l23_n833
-end
-
-def fun_l22_n41()
- fun_l23_n573
-end
-
-def fun_l22_n42()
- fun_l23_n299
-end
-
-def fun_l22_n43()
- fun_l23_n397
-end
-
-def fun_l22_n44()
- fun_l23_n387
-end
-
-def fun_l22_n45()
- fun_l23_n385
-end
-
-def fun_l22_n46()
- fun_l23_n341
-end
-
-def fun_l22_n47()
- fun_l23_n862
-end
-
-def fun_l22_n48()
- fun_l23_n109
-end
-
-def fun_l22_n49()
- fun_l23_n583
-end
-
-def fun_l22_n50()
- fun_l23_n126
-end
-
-def fun_l22_n51()
- fun_l23_n563
-end
-
-def fun_l22_n52()
- fun_l23_n947
-end
-
-def fun_l22_n53()
- fun_l23_n329
-end
-
-def fun_l22_n54()
- fun_l23_n903
-end
-
-def fun_l22_n55()
- fun_l23_n11
-end
-
-def fun_l22_n56()
- fun_l23_n520
-end
-
-def fun_l22_n57()
- fun_l23_n815
-end
-
-def fun_l22_n58()
- fun_l23_n224
-end
-
-def fun_l22_n59()
- fun_l23_n144
-end
-
-def fun_l22_n60()
- fun_l23_n513
-end
-
-def fun_l22_n61()
- fun_l23_n572
-end
-
-def fun_l22_n62()
- fun_l23_n33
-end
-
-def fun_l22_n63()
- fun_l23_n39
-end
-
-def fun_l22_n64()
- fun_l23_n360
-end
-
-def fun_l22_n65()
- fun_l23_n6
-end
-
-def fun_l22_n66()
- fun_l23_n244
-end
-
-def fun_l22_n67()
- fun_l23_n425
-end
-
-def fun_l22_n68()
- fun_l23_n472
-end
-
-def fun_l22_n69()
- fun_l23_n88
-end
-
-def fun_l22_n70()
- fun_l23_n888
-end
-
-def fun_l22_n71()
- fun_l23_n215
-end
-
-def fun_l22_n72()
- fun_l23_n408
-end
-
-def fun_l22_n73()
- fun_l23_n753
-end
-
-def fun_l22_n74()
- fun_l23_n4
-end
-
-def fun_l22_n75()
- fun_l23_n623
-end
-
-def fun_l22_n76()
- fun_l23_n602
-end
-
-def fun_l22_n77()
- fun_l23_n430
-end
-
-def fun_l22_n78()
- fun_l23_n223
-end
-
-def fun_l22_n79()
- fun_l23_n631
-end
-
-def fun_l22_n80()
- fun_l23_n931
-end
-
-def fun_l22_n81()
- fun_l23_n84
-end
-
-def fun_l22_n82()
- fun_l23_n541
-end
-
-def fun_l22_n83()
- fun_l23_n329
-end
-
-def fun_l22_n84()
- fun_l23_n174
-end
-
-def fun_l22_n85()
- fun_l23_n649
-end
-
-def fun_l22_n86()
- fun_l23_n503
-end
-
-def fun_l22_n87()
- fun_l23_n336
-end
-
-def fun_l22_n88()
- fun_l23_n126
-end
-
-def fun_l22_n89()
- fun_l23_n556
-end
-
-def fun_l22_n90()
- fun_l23_n793
-end
-
-def fun_l22_n91()
- fun_l23_n276
-end
-
-def fun_l22_n92()
- fun_l23_n374
-end
-
-def fun_l22_n93()
- fun_l23_n638
-end
-
-def fun_l22_n94()
- fun_l23_n614
-end
-
-def fun_l22_n95()
- fun_l23_n851
-end
-
-def fun_l22_n96()
- fun_l23_n422
-end
-
-def fun_l22_n97()
- fun_l23_n716
-end
-
-def fun_l22_n98()
- fun_l23_n521
-end
-
-def fun_l22_n99()
- fun_l23_n484
-end
-
-def fun_l22_n100()
- fun_l23_n155
-end
-
-def fun_l22_n101()
- fun_l23_n863
-end
-
-def fun_l22_n102()
- fun_l23_n5
-end
-
-def fun_l22_n103()
- fun_l23_n667
-end
-
-def fun_l22_n104()
- fun_l23_n633
-end
-
-def fun_l22_n105()
- fun_l23_n392
-end
-
-def fun_l22_n106()
- fun_l23_n859
-end
-
-def fun_l22_n107()
- fun_l23_n930
-end
-
-def fun_l22_n108()
- fun_l23_n858
-end
-
-def fun_l22_n109()
- fun_l23_n266
-end
-
-def fun_l22_n110()
- fun_l23_n567
-end
-
-def fun_l22_n111()
- fun_l23_n116
-end
-
-def fun_l22_n112()
- fun_l23_n221
-end
-
-def fun_l22_n113()
- fun_l23_n650
-end
-
-def fun_l22_n114()
- fun_l23_n309
-end
-
-def fun_l22_n115()
- fun_l23_n290
-end
-
-def fun_l22_n116()
- fun_l23_n305
-end
-
-def fun_l22_n117()
- fun_l23_n655
-end
-
-def fun_l22_n118()
- fun_l23_n390
-end
-
-def fun_l22_n119()
- fun_l23_n561
-end
-
-def fun_l22_n120()
- fun_l23_n977
-end
-
-def fun_l22_n121()
- fun_l23_n920
-end
-
-def fun_l22_n122()
- fun_l23_n662
-end
-
-def fun_l22_n123()
- fun_l23_n453
-end
-
-def fun_l22_n124()
- fun_l23_n331
-end
-
-def fun_l22_n125()
- fun_l23_n135
-end
-
-def fun_l22_n126()
- fun_l23_n822
-end
-
-def fun_l22_n127()
- fun_l23_n726
-end
-
-def fun_l22_n128()
- fun_l23_n93
-end
-
-def fun_l22_n129()
- fun_l23_n309
-end
-
-def fun_l22_n130()
- fun_l23_n303
-end
-
-def fun_l22_n131()
- fun_l23_n907
-end
-
-def fun_l22_n132()
- fun_l23_n616
-end
-
-def fun_l22_n133()
- fun_l23_n266
-end
-
-def fun_l22_n134()
- fun_l23_n920
-end
-
-def fun_l22_n135()
- fun_l23_n972
-end
-
-def fun_l22_n136()
- fun_l23_n510
-end
-
-def fun_l22_n137()
- fun_l23_n40
-end
-
-def fun_l22_n138()
- fun_l23_n598
-end
-
-def fun_l22_n139()
- fun_l23_n491
-end
-
-def fun_l22_n140()
- fun_l23_n590
-end
-
-def fun_l22_n141()
- fun_l23_n400
-end
-
-def fun_l22_n142()
- fun_l23_n47
-end
-
-def fun_l22_n143()
- fun_l23_n669
-end
-
-def fun_l22_n144()
- fun_l23_n471
-end
-
-def fun_l22_n145()
- fun_l23_n749
-end
-
-def fun_l22_n146()
- fun_l23_n5
-end
-
-def fun_l22_n147()
- fun_l23_n895
-end
-
-def fun_l22_n148()
- fun_l23_n92
-end
-
-def fun_l22_n149()
- fun_l23_n940
-end
-
-def fun_l22_n150()
- fun_l23_n254
-end
-
-def fun_l22_n151()
- fun_l23_n521
-end
-
-def fun_l22_n152()
- fun_l23_n482
-end
-
-def fun_l22_n153()
- fun_l23_n576
-end
-
-def fun_l22_n154()
- fun_l23_n657
-end
-
-def fun_l22_n155()
- fun_l23_n897
-end
-
-def fun_l22_n156()
- fun_l23_n679
-end
-
-def fun_l22_n157()
- fun_l23_n894
-end
-
-def fun_l22_n158()
- fun_l23_n496
-end
-
-def fun_l22_n159()
- fun_l23_n575
-end
-
-def fun_l22_n160()
- fun_l23_n751
-end
-
-def fun_l22_n161()
- fun_l23_n357
-end
-
-def fun_l22_n162()
- fun_l23_n665
-end
-
-def fun_l22_n163()
- fun_l23_n653
-end
-
-def fun_l22_n164()
- fun_l23_n904
-end
-
-def fun_l22_n165()
- fun_l23_n127
-end
-
-def fun_l22_n166()
- fun_l23_n737
-end
-
-def fun_l22_n167()
- fun_l23_n710
-end
-
-def fun_l22_n168()
- fun_l23_n285
-end
-
-def fun_l22_n169()
- fun_l23_n804
-end
-
-def fun_l22_n170()
- fun_l23_n766
-end
-
-def fun_l22_n171()
- fun_l23_n442
-end
-
-def fun_l22_n172()
- fun_l23_n392
-end
-
-def fun_l22_n173()
- fun_l23_n512
-end
-
-def fun_l22_n174()
- fun_l23_n752
-end
-
-def fun_l22_n175()
- fun_l23_n856
-end
-
-def fun_l22_n176()
- fun_l23_n840
-end
-
-def fun_l22_n177()
- fun_l23_n445
-end
-
-def fun_l22_n178()
- fun_l23_n483
-end
-
-def fun_l22_n179()
- fun_l23_n676
-end
-
-def fun_l22_n180()
- fun_l23_n619
-end
-
-def fun_l22_n181()
- fun_l23_n132
-end
-
-def fun_l22_n182()
- fun_l23_n600
-end
-
-def fun_l22_n183()
- fun_l23_n399
-end
-
-def fun_l22_n184()
- fun_l23_n199
-end
-
-def fun_l22_n185()
- fun_l23_n152
-end
-
-def fun_l22_n186()
- fun_l23_n848
-end
-
-def fun_l22_n187()
- fun_l23_n50
-end
-
-def fun_l22_n188()
- fun_l23_n524
-end
-
-def fun_l22_n189()
- fun_l23_n472
-end
-
-def fun_l22_n190()
- fun_l23_n146
-end
-
-def fun_l22_n191()
- fun_l23_n115
-end
-
-def fun_l22_n192()
- fun_l23_n701
-end
-
-def fun_l22_n193()
- fun_l23_n916
-end
-
-def fun_l22_n194()
- fun_l23_n362
-end
-
-def fun_l22_n195()
- fun_l23_n546
-end
-
-def fun_l22_n196()
- fun_l23_n983
-end
-
-def fun_l22_n197()
- fun_l23_n898
-end
-
-def fun_l22_n198()
- fun_l23_n93
-end
-
-def fun_l22_n199()
- fun_l23_n587
-end
-
-def fun_l22_n200()
- fun_l23_n84
-end
-
-def fun_l22_n201()
- fun_l23_n919
-end
-
-def fun_l22_n202()
- fun_l23_n813
-end
-
-def fun_l22_n203()
- fun_l23_n481
-end
-
-def fun_l22_n204()
- fun_l23_n806
-end
-
-def fun_l22_n205()
- fun_l23_n329
-end
-
-def fun_l22_n206()
- fun_l23_n873
-end
-
-def fun_l22_n207()
- fun_l23_n922
-end
-
-def fun_l22_n208()
- fun_l23_n125
-end
-
-def fun_l22_n209()
- fun_l23_n861
-end
-
-def fun_l22_n210()
- fun_l23_n50
-end
-
-def fun_l22_n211()
- fun_l23_n737
-end
-
-def fun_l22_n212()
- fun_l23_n55
-end
-
-def fun_l22_n213()
- fun_l23_n594
-end
-
-def fun_l22_n214()
- fun_l23_n786
-end
-
-def fun_l22_n215()
- fun_l23_n33
-end
-
-def fun_l22_n216()
- fun_l23_n332
-end
-
-def fun_l22_n217()
- fun_l23_n72
-end
-
-def fun_l22_n218()
- fun_l23_n619
-end
-
-def fun_l22_n219()
- fun_l23_n994
-end
-
-def fun_l22_n220()
- fun_l23_n94
-end
-
-def fun_l22_n221()
- fun_l23_n562
-end
-
-def fun_l22_n222()
- fun_l23_n742
-end
-
-def fun_l22_n223()
- fun_l23_n397
-end
-
-def fun_l22_n224()
- fun_l23_n641
-end
-
-def fun_l22_n225()
- fun_l23_n233
-end
-
-def fun_l22_n226()
- fun_l23_n876
-end
-
-def fun_l22_n227()
- fun_l23_n13
-end
-
-def fun_l22_n228()
- fun_l23_n524
-end
-
-def fun_l22_n229()
- fun_l23_n738
-end
-
-def fun_l22_n230()
- fun_l23_n34
-end
-
-def fun_l22_n231()
- fun_l23_n391
-end
-
-def fun_l22_n232()
- fun_l23_n930
-end
-
-def fun_l22_n233()
- fun_l23_n714
-end
-
-def fun_l22_n234()
- fun_l23_n755
-end
-
-def fun_l22_n235()
- fun_l23_n826
-end
-
-def fun_l22_n236()
- fun_l23_n797
-end
-
-def fun_l22_n237()
- fun_l23_n890
-end
-
-def fun_l22_n238()
- fun_l23_n586
-end
-
-def fun_l22_n239()
- fun_l23_n924
-end
-
-def fun_l22_n240()
- fun_l23_n704
-end
-
-def fun_l22_n241()
- fun_l23_n547
-end
-
-def fun_l22_n242()
- fun_l23_n581
-end
-
-def fun_l22_n243()
- fun_l23_n402
-end
-
-def fun_l22_n244()
- fun_l23_n719
-end
-
-def fun_l22_n245()
- fun_l23_n471
-end
-
-def fun_l22_n246()
- fun_l23_n750
-end
-
-def fun_l22_n247()
- fun_l23_n33
-end
-
-def fun_l22_n248()
- fun_l23_n304
-end
-
-def fun_l22_n249()
- fun_l23_n847
-end
-
-def fun_l22_n250()
- fun_l23_n814
-end
-
-def fun_l22_n251()
- fun_l23_n724
-end
-
-def fun_l22_n252()
- fun_l23_n105
-end
-
-def fun_l22_n253()
- fun_l23_n863
-end
-
-def fun_l22_n254()
- fun_l23_n282
-end
-
-def fun_l22_n255()
- fun_l23_n586
-end
-
-def fun_l22_n256()
- fun_l23_n524
-end
-
-def fun_l22_n257()
- fun_l23_n772
-end
-
-def fun_l22_n258()
- fun_l23_n641
-end
-
-def fun_l22_n259()
- fun_l23_n962
-end
-
-def fun_l22_n260()
- fun_l23_n737
-end
-
-def fun_l22_n261()
- fun_l23_n941
-end
-
-def fun_l22_n262()
- fun_l23_n432
-end
-
-def fun_l22_n263()
- fun_l23_n400
-end
-
-def fun_l22_n264()
- fun_l23_n19
-end
-
-def fun_l22_n265()
- fun_l23_n485
-end
-
-def fun_l22_n266()
- fun_l23_n210
-end
-
-def fun_l22_n267()
- fun_l23_n961
-end
-
-def fun_l22_n268()
- fun_l23_n953
-end
-
-def fun_l22_n269()
- fun_l23_n987
-end
-
-def fun_l22_n270()
- fun_l23_n855
-end
-
-def fun_l22_n271()
- fun_l23_n789
-end
-
-def fun_l22_n272()
- fun_l23_n708
-end
-
-def fun_l22_n273()
- fun_l23_n645
-end
-
-def fun_l22_n274()
- fun_l23_n924
-end
-
-def fun_l22_n275()
- fun_l23_n496
-end
-
-def fun_l22_n276()
- fun_l23_n763
-end
-
-def fun_l22_n277()
- fun_l23_n937
-end
-
-def fun_l22_n278()
- fun_l23_n679
-end
-
-def fun_l22_n279()
- fun_l23_n678
-end
-
-def fun_l22_n280()
- fun_l23_n756
-end
-
-def fun_l22_n281()
- fun_l23_n198
-end
-
-def fun_l22_n282()
- fun_l23_n377
-end
-
-def fun_l22_n283()
- fun_l23_n352
-end
-
-def fun_l22_n284()
- fun_l23_n211
-end
-
-def fun_l22_n285()
- fun_l23_n137
-end
-
-def fun_l22_n286()
- fun_l23_n257
-end
-
-def fun_l22_n287()
- fun_l23_n878
-end
-
-def fun_l22_n288()
- fun_l23_n182
-end
-
-def fun_l22_n289()
- fun_l23_n969
-end
-
-def fun_l22_n290()
- fun_l23_n622
-end
-
-def fun_l22_n291()
- fun_l23_n473
-end
-
-def fun_l22_n292()
- fun_l23_n767
-end
-
-def fun_l22_n293()
- fun_l23_n496
-end
-
-def fun_l22_n294()
- fun_l23_n463
-end
-
-def fun_l22_n295()
- fun_l23_n600
-end
-
-def fun_l22_n296()
- fun_l23_n262
-end
-
-def fun_l22_n297()
- fun_l23_n353
-end
-
-def fun_l22_n298()
- fun_l23_n235
-end
-
-def fun_l22_n299()
- fun_l23_n680
-end
-
-def fun_l22_n300()
- fun_l23_n169
-end
-
-def fun_l22_n301()
- fun_l23_n764
-end
-
-def fun_l22_n302()
- fun_l23_n105
-end
-
-def fun_l22_n303()
- fun_l23_n616
-end
-
-def fun_l22_n304()
- fun_l23_n143
-end
-
-def fun_l22_n305()
- fun_l23_n612
-end
-
-def fun_l22_n306()
- fun_l23_n30
-end
-
-def fun_l22_n307()
- fun_l23_n946
-end
-
-def fun_l22_n308()
- fun_l23_n590
-end
-
-def fun_l22_n309()
- fun_l23_n374
-end
-
-def fun_l22_n310()
- fun_l23_n640
-end
-
-def fun_l22_n311()
- fun_l23_n156
-end
-
-def fun_l22_n312()
- fun_l23_n689
-end
-
-def fun_l22_n313()
- fun_l23_n684
-end
-
-def fun_l22_n314()
- fun_l23_n915
-end
-
-def fun_l22_n315()
- fun_l23_n536
-end
-
-def fun_l22_n316()
- fun_l23_n408
-end
-
-def fun_l22_n317()
- fun_l23_n644
-end
-
-def fun_l22_n318()
- fun_l23_n401
-end
-
-def fun_l22_n319()
- fun_l23_n312
-end
-
-def fun_l22_n320()
- fun_l23_n280
-end
-
-def fun_l22_n321()
- fun_l23_n901
-end
-
-def fun_l22_n322()
- fun_l23_n411
-end
-
-def fun_l22_n323()
- fun_l23_n709
-end
-
-def fun_l22_n324()
- fun_l23_n829
-end
-
-def fun_l22_n325()
- fun_l23_n353
-end
-
-def fun_l22_n326()
- fun_l23_n408
-end
-
-def fun_l22_n327()
- fun_l23_n786
-end
-
-def fun_l22_n328()
- fun_l23_n980
-end
-
-def fun_l22_n329()
- fun_l23_n60
-end
-
-def fun_l22_n330()
- fun_l23_n367
-end
-
-def fun_l22_n331()
- fun_l23_n617
-end
-
-def fun_l22_n332()
- fun_l23_n155
-end
-
-def fun_l22_n333()
- fun_l23_n537
-end
-
-def fun_l22_n334()
- fun_l23_n759
-end
-
-def fun_l22_n335()
- fun_l23_n998
-end
-
-def fun_l22_n336()
- fun_l23_n361
-end
-
-def fun_l22_n337()
- fun_l23_n64
-end
-
-def fun_l22_n338()
- fun_l23_n992
-end
-
-def fun_l22_n339()
- fun_l23_n312
-end
-
-def fun_l22_n340()
- fun_l23_n91
-end
-
-def fun_l22_n341()
- fun_l23_n73
-end
-
-def fun_l22_n342()
- fun_l23_n443
-end
-
-def fun_l22_n343()
- fun_l23_n453
-end
-
-def fun_l22_n344()
- fun_l23_n723
-end
-
-def fun_l22_n345()
- fun_l23_n429
-end
-
-def fun_l22_n346()
- fun_l23_n437
-end
-
-def fun_l22_n347()
- fun_l23_n406
-end
-
-def fun_l22_n348()
- fun_l23_n110
-end
-
-def fun_l22_n349()
- fun_l23_n862
-end
-
-def fun_l22_n350()
- fun_l23_n247
-end
-
-def fun_l22_n351()
- fun_l23_n367
-end
-
-def fun_l22_n352()
- fun_l23_n401
-end
-
-def fun_l22_n353()
- fun_l23_n245
-end
-
-def fun_l22_n354()
- fun_l23_n777
-end
-
-def fun_l22_n355()
- fun_l23_n362
-end
-
-def fun_l22_n356()
- fun_l23_n703
-end
-
-def fun_l22_n357()
- fun_l23_n627
-end
-
-def fun_l22_n358()
- fun_l23_n542
-end
-
-def fun_l22_n359()
- fun_l23_n830
-end
-
-def fun_l22_n360()
- fun_l23_n508
-end
-
-def fun_l22_n361()
- fun_l23_n814
-end
-
-def fun_l22_n362()
- fun_l23_n147
-end
-
-def fun_l22_n363()
- fun_l23_n581
-end
-
-def fun_l22_n364()
- fun_l23_n394
-end
-
-def fun_l22_n365()
- fun_l23_n366
-end
-
-def fun_l22_n366()
- fun_l23_n723
-end
-
-def fun_l22_n367()
- fun_l23_n544
-end
-
-def fun_l22_n368()
- fun_l23_n231
-end
-
-def fun_l22_n369()
- fun_l23_n727
-end
-
-def fun_l22_n370()
- fun_l23_n459
-end
-
-def fun_l22_n371()
- fun_l23_n290
-end
-
-def fun_l22_n372()
- fun_l23_n901
-end
-
-def fun_l22_n373()
- fun_l23_n738
-end
-
-def fun_l22_n374()
- fun_l23_n733
-end
-
-def fun_l22_n375()
- fun_l23_n85
-end
-
-def fun_l22_n376()
- fun_l23_n469
-end
-
-def fun_l22_n377()
- fun_l23_n599
-end
-
-def fun_l22_n378()
- fun_l23_n78
-end
-
-def fun_l22_n379()
- fun_l23_n499
-end
-
-def fun_l22_n380()
- fun_l23_n527
-end
-
-def fun_l22_n381()
- fun_l23_n185
-end
-
-def fun_l22_n382()
- fun_l23_n93
-end
-
-def fun_l22_n383()
- fun_l23_n233
-end
-
-def fun_l22_n384()
- fun_l23_n292
-end
-
-def fun_l22_n385()
- fun_l23_n716
-end
-
-def fun_l22_n386()
- fun_l23_n81
-end
-
-def fun_l22_n387()
- fun_l23_n740
-end
-
-def fun_l22_n388()
- fun_l23_n351
-end
-
-def fun_l22_n389()
- fun_l23_n488
-end
-
-def fun_l22_n390()
- fun_l23_n631
-end
-
-def fun_l22_n391()
- fun_l23_n477
-end
-
-def fun_l22_n392()
- fun_l23_n541
-end
-
-def fun_l22_n393()
- fun_l23_n816
-end
-
-def fun_l22_n394()
- fun_l23_n737
-end
-
-def fun_l22_n395()
- fun_l23_n839
-end
-
-def fun_l22_n396()
- fun_l23_n249
-end
-
-def fun_l22_n397()
- fun_l23_n472
-end
-
-def fun_l22_n398()
- fun_l23_n150
-end
-
-def fun_l22_n399()
- fun_l23_n13
-end
-
-def fun_l22_n400()
- fun_l23_n476
-end
-
-def fun_l22_n401()
- fun_l23_n373
-end
-
-def fun_l22_n402()
- fun_l23_n879
-end
-
-def fun_l22_n403()
- fun_l23_n140
-end
-
-def fun_l22_n404()
- fun_l23_n662
-end
-
-def fun_l22_n405()
- fun_l23_n935
-end
-
-def fun_l22_n406()
- fun_l23_n113
-end
-
-def fun_l22_n407()
- fun_l23_n731
-end
-
-def fun_l22_n408()
- fun_l23_n488
-end
-
-def fun_l22_n409()
- fun_l23_n35
-end
-
-def fun_l22_n410()
- fun_l23_n872
-end
-
-def fun_l22_n411()
- fun_l23_n651
-end
-
-def fun_l22_n412()
- fun_l23_n53
-end
-
-def fun_l22_n413()
- fun_l23_n329
-end
-
-def fun_l22_n414()
- fun_l23_n215
-end
-
-def fun_l22_n415()
- fun_l23_n125
-end
-
-def fun_l22_n416()
- fun_l23_n722
-end
-
-def fun_l22_n417()
- fun_l23_n102
-end
-
-def fun_l22_n418()
- fun_l23_n648
-end
-
-def fun_l22_n419()
- fun_l23_n122
-end
-
-def fun_l22_n420()
- fun_l23_n998
-end
-
-def fun_l22_n421()
- fun_l23_n730
-end
-
-def fun_l22_n422()
- fun_l23_n148
-end
-
-def fun_l22_n423()
- fun_l23_n773
-end
-
-def fun_l22_n424()
- fun_l23_n737
-end
-
-def fun_l22_n425()
- fun_l23_n383
-end
-
-def fun_l22_n426()
- fun_l23_n423
-end
-
-def fun_l22_n427()
- fun_l23_n655
-end
-
-def fun_l22_n428()
- fun_l23_n573
-end
-
-def fun_l22_n429()
- fun_l23_n717
-end
-
-def fun_l22_n430()
- fun_l23_n617
-end
-
-def fun_l22_n431()
- fun_l23_n575
-end
-
-def fun_l22_n432()
- fun_l23_n62
-end
-
-def fun_l22_n433()
- fun_l23_n31
-end
-
-def fun_l22_n434()
- fun_l23_n812
-end
-
-def fun_l22_n435()
- fun_l23_n332
-end
-
-def fun_l22_n436()
- fun_l23_n380
-end
-
-def fun_l22_n437()
- fun_l23_n5
-end
-
-def fun_l22_n438()
- fun_l23_n668
-end
-
-def fun_l22_n439()
- fun_l23_n439
-end
-
-def fun_l22_n440()
- fun_l23_n878
-end
-
-def fun_l22_n441()
- fun_l23_n974
-end
-
-def fun_l22_n442()
- fun_l23_n919
-end
-
-def fun_l22_n443()
- fun_l23_n597
-end
-
-def fun_l22_n444()
- fun_l23_n894
-end
-
-def fun_l22_n445()
- fun_l23_n791
-end
-
-def fun_l22_n446()
- fun_l23_n999
-end
-
-def fun_l22_n447()
- fun_l23_n427
-end
-
-def fun_l22_n448()
- fun_l23_n109
-end
-
-def fun_l22_n449()
- fun_l23_n151
-end
-
-def fun_l22_n450()
- fun_l23_n870
-end
-
-def fun_l22_n451()
- fun_l23_n624
-end
-
-def fun_l22_n452()
- fun_l23_n336
-end
-
-def fun_l22_n453()
- fun_l23_n891
-end
-
-def fun_l22_n454()
- fun_l23_n433
-end
-
-def fun_l22_n455()
- fun_l23_n392
-end
-
-def fun_l22_n456()
- fun_l23_n593
-end
-
-def fun_l22_n457()
- fun_l23_n852
-end
-
-def fun_l22_n458()
- fun_l23_n675
-end
-
-def fun_l22_n459()
- fun_l23_n589
-end
-
-def fun_l22_n460()
- fun_l23_n348
-end
-
-def fun_l22_n461()
- fun_l23_n137
-end
-
-def fun_l22_n462()
- fun_l23_n551
-end
-
-def fun_l22_n463()
- fun_l23_n236
-end
-
-def fun_l22_n464()
- fun_l23_n266
-end
-
-def fun_l22_n465()
- fun_l23_n622
-end
-
-def fun_l22_n466()
- fun_l23_n174
-end
-
-def fun_l22_n467()
- fun_l23_n79
-end
-
-def fun_l22_n468()
- fun_l23_n189
-end
-
-def fun_l22_n469()
- fun_l23_n746
-end
-
-def fun_l22_n470()
- fun_l23_n917
-end
-
-def fun_l22_n471()
- fun_l23_n344
-end
-
-def fun_l22_n472()
- fun_l23_n410
-end
-
-def fun_l22_n473()
- fun_l23_n844
-end
-
-def fun_l22_n474()
- fun_l23_n998
-end
-
-def fun_l22_n475()
- fun_l23_n969
-end
-
-def fun_l22_n476()
- fun_l23_n853
-end
-
-def fun_l22_n477()
- fun_l23_n691
-end
-
-def fun_l22_n478()
- fun_l23_n147
-end
-
-def fun_l22_n479()
- fun_l23_n983
-end
-
-def fun_l22_n480()
- fun_l23_n384
-end
-
-def fun_l22_n481()
- fun_l23_n624
-end
-
-def fun_l22_n482()
- fun_l23_n852
-end
-
-def fun_l22_n483()
- fun_l23_n403
-end
-
-def fun_l22_n484()
- fun_l23_n878
-end
-
-def fun_l22_n485()
- fun_l23_n998
-end
-
-def fun_l22_n486()
- fun_l23_n435
-end
-
-def fun_l22_n487()
- fun_l23_n637
-end
-
-def fun_l22_n488()
- fun_l23_n283
-end
-
-def fun_l22_n489()
- fun_l23_n444
-end
-
-def fun_l22_n490()
- fun_l23_n121
-end
-
-def fun_l22_n491()
- fun_l23_n478
-end
-
-def fun_l22_n492()
- fun_l23_n856
-end
-
-def fun_l22_n493()
- fun_l23_n209
-end
-
-def fun_l22_n494()
- fun_l23_n752
-end
-
-def fun_l22_n495()
- fun_l23_n146
-end
-
-def fun_l22_n496()
- fun_l23_n986
-end
-
-def fun_l22_n497()
- fun_l23_n912
-end
-
-def fun_l22_n498()
- fun_l23_n302
-end
-
-def fun_l22_n499()
- fun_l23_n813
-end
-
-def fun_l22_n500()
- fun_l23_n140
-end
-
-def fun_l22_n501()
- fun_l23_n968
-end
-
-def fun_l22_n502()
- fun_l23_n125
-end
-
-def fun_l22_n503()
- fun_l23_n595
-end
-
-def fun_l22_n504()
- fun_l23_n95
-end
-
-def fun_l22_n505()
- fun_l23_n571
-end
-
-def fun_l22_n506()
- fun_l23_n639
-end
-
-def fun_l22_n507()
- fun_l23_n481
-end
-
-def fun_l22_n508()
- fun_l23_n538
-end
-
-def fun_l22_n509()
- fun_l23_n469
-end
-
-def fun_l22_n510()
- fun_l23_n563
-end
-
-def fun_l22_n511()
- fun_l23_n839
-end
-
-def fun_l22_n512()
- fun_l23_n764
-end
-
-def fun_l22_n513()
- fun_l23_n960
-end
-
-def fun_l22_n514()
- fun_l23_n125
-end
-
-def fun_l22_n515()
- fun_l23_n776
-end
-
-def fun_l22_n516()
- fun_l23_n78
-end
-
-def fun_l22_n517()
- fun_l23_n681
-end
-
-def fun_l22_n518()
- fun_l23_n959
-end
-
-def fun_l22_n519()
- fun_l23_n565
-end
-
-def fun_l22_n520()
- fun_l23_n889
-end
-
-def fun_l22_n521()
- fun_l23_n377
-end
-
-def fun_l22_n522()
- fun_l23_n744
-end
-
-def fun_l22_n523()
- fun_l23_n848
-end
-
-def fun_l22_n524()
- fun_l23_n223
-end
-
-def fun_l22_n525()
- fun_l23_n81
-end
-
-def fun_l22_n526()
- fun_l23_n764
-end
-
-def fun_l22_n527()
- fun_l23_n667
-end
-
-def fun_l22_n528()
- fun_l23_n657
-end
-
-def fun_l22_n529()
- fun_l23_n343
-end
-
-def fun_l22_n530()
- fun_l23_n526
-end
-
-def fun_l22_n531()
- fun_l23_n570
-end
-
-def fun_l22_n532()
- fun_l23_n3
-end
-
-def fun_l22_n533()
- fun_l23_n501
-end
-
-def fun_l22_n534()
- fun_l23_n571
-end
-
-def fun_l22_n535()
- fun_l23_n245
-end
-
-def fun_l22_n536()
- fun_l23_n834
-end
-
-def fun_l22_n537()
- fun_l23_n454
-end
-
-def fun_l22_n538()
- fun_l23_n163
-end
-
-def fun_l22_n539()
- fun_l23_n598
-end
-
-def fun_l22_n540()
- fun_l23_n277
-end
-
-def fun_l22_n541()
- fun_l23_n482
-end
-
-def fun_l22_n542()
- fun_l23_n202
-end
-
-def fun_l22_n543()
- fun_l23_n525
-end
-
-def fun_l22_n544()
- fun_l23_n971
-end
-
-def fun_l22_n545()
- fun_l23_n258
-end
-
-def fun_l22_n546()
- fun_l23_n220
-end
-
-def fun_l22_n547()
- fun_l23_n762
-end
-
-def fun_l22_n548()
- fun_l23_n431
-end
-
-def fun_l22_n549()
- fun_l23_n171
-end
-
-def fun_l22_n550()
- fun_l23_n633
-end
-
-def fun_l22_n551()
- fun_l23_n275
-end
-
-def fun_l22_n552()
- fun_l23_n665
-end
-
-def fun_l22_n553()
- fun_l23_n266
-end
-
-def fun_l22_n554()
- fun_l23_n440
-end
-
-def fun_l22_n555()
- fun_l23_n463
-end
-
-def fun_l22_n556()
- fun_l23_n2
-end
-
-def fun_l22_n557()
- fun_l23_n536
-end
-
-def fun_l22_n558()
- fun_l23_n323
-end
-
-def fun_l22_n559()
- fun_l23_n838
-end
-
-def fun_l22_n560()
- fun_l23_n431
-end
-
-def fun_l22_n561()
- fun_l23_n920
-end
-
-def fun_l22_n562()
- fun_l23_n250
-end
-
-def fun_l22_n563()
- fun_l23_n871
-end
-
-def fun_l22_n564()
- fun_l23_n324
-end
-
-def fun_l22_n565()
- fun_l23_n454
-end
-
-def fun_l22_n566()
- fun_l23_n308
-end
-
-def fun_l22_n567()
- fun_l23_n629
-end
-
-def fun_l22_n568()
- fun_l23_n791
-end
-
-def fun_l22_n569()
- fun_l23_n55
-end
-
-def fun_l22_n570()
- fun_l23_n791
-end
-
-def fun_l22_n571()
- fun_l23_n674
-end
-
-def fun_l22_n572()
- fun_l23_n749
-end
-
-def fun_l22_n573()
- fun_l23_n106
-end
-
-def fun_l22_n574()
- fun_l23_n931
-end
-
-def fun_l22_n575()
- fun_l23_n165
-end
-
-def fun_l22_n576()
- fun_l23_n649
-end
-
-def fun_l22_n577()
- fun_l23_n99
-end
-
-def fun_l22_n578()
- fun_l23_n609
-end
-
-def fun_l22_n579()
- fun_l23_n165
-end
-
-def fun_l22_n580()
- fun_l23_n530
-end
-
-def fun_l22_n581()
- fun_l23_n545
-end
-
-def fun_l22_n582()
- fun_l23_n453
-end
-
-def fun_l22_n583()
- fun_l23_n128
-end
-
-def fun_l22_n584()
- fun_l23_n200
-end
-
-def fun_l22_n585()
- fun_l23_n712
-end
-
-def fun_l22_n586()
- fun_l23_n668
-end
-
-def fun_l22_n587()
- fun_l23_n903
-end
-
-def fun_l22_n588()
- fun_l23_n704
-end
-
-def fun_l22_n589()
- fun_l23_n864
-end
-
-def fun_l22_n590()
- fun_l23_n98
-end
-
-def fun_l22_n591()
- fun_l23_n674
-end
-
-def fun_l22_n592()
- fun_l23_n577
-end
-
-def fun_l22_n593()
- fun_l23_n969
-end
-
-def fun_l22_n594()
- fun_l23_n634
-end
-
-def fun_l22_n595()
- fun_l23_n111
-end
-
-def fun_l22_n596()
- fun_l23_n866
-end
-
-def fun_l22_n597()
- fun_l23_n353
-end
-
-def fun_l22_n598()
- fun_l23_n223
-end
-
-def fun_l22_n599()
- fun_l23_n229
-end
-
-def fun_l22_n600()
- fun_l23_n958
-end
-
-def fun_l22_n601()
- fun_l23_n802
-end
-
-def fun_l22_n602()
- fun_l23_n124
-end
-
-def fun_l22_n603()
- fun_l23_n945
-end
-
-def fun_l22_n604()
- fun_l23_n911
-end
-
-def fun_l22_n605()
- fun_l23_n410
-end
-
-def fun_l22_n606()
- fun_l23_n754
-end
-
-def fun_l22_n607()
- fun_l23_n429
-end
-
-def fun_l22_n608()
- fun_l23_n529
-end
-
-def fun_l22_n609()
- fun_l23_n15
-end
-
-def fun_l22_n610()
- fun_l23_n634
-end
-
-def fun_l22_n611()
- fun_l23_n608
-end
-
-def fun_l22_n612()
- fun_l23_n509
-end
-
-def fun_l22_n613()
- fun_l23_n352
-end
-
-def fun_l22_n614()
- fun_l23_n706
-end
-
-def fun_l22_n615()
- fun_l23_n172
-end
-
-def fun_l22_n616()
- fun_l23_n268
-end
-
-def fun_l22_n617()
- fun_l23_n275
-end
-
-def fun_l22_n618()
- fun_l23_n265
-end
-
-def fun_l22_n619()
- fun_l23_n101
-end
-
-def fun_l22_n620()
- fun_l23_n402
-end
-
-def fun_l22_n621()
- fun_l23_n953
-end
-
-def fun_l22_n622()
- fun_l23_n682
-end
-
-def fun_l22_n623()
- fun_l23_n745
-end
-
-def fun_l22_n624()
- fun_l23_n343
-end
-
-def fun_l22_n625()
- fun_l23_n147
-end
-
-def fun_l22_n626()
- fun_l23_n39
-end
-
-def fun_l22_n627()
- fun_l23_n483
-end
-
-def fun_l22_n628()
- fun_l23_n787
-end
-
-def fun_l22_n629()
- fun_l23_n643
-end
-
-def fun_l22_n630()
- fun_l23_n40
-end
-
-def fun_l22_n631()
- fun_l23_n834
-end
-
-def fun_l22_n632()
- fun_l23_n220
-end
-
-def fun_l22_n633()
- fun_l23_n293
-end
-
-def fun_l22_n634()
- fun_l23_n144
-end
-
-def fun_l22_n635()
- fun_l23_n602
-end
-
-def fun_l22_n636()
- fun_l23_n248
-end
-
-def fun_l22_n637()
- fun_l23_n524
-end
-
-def fun_l22_n638()
- fun_l23_n639
-end
-
-def fun_l22_n639()
- fun_l23_n217
-end
-
-def fun_l22_n640()
- fun_l23_n193
-end
-
-def fun_l22_n641()
- fun_l23_n158
-end
-
-def fun_l22_n642()
- fun_l23_n894
-end
-
-def fun_l22_n643()
- fun_l23_n189
-end
-
-def fun_l22_n644()
- fun_l23_n877
-end
-
-def fun_l22_n645()
- fun_l23_n299
-end
-
-def fun_l22_n646()
- fun_l23_n71
-end
-
-def fun_l22_n647()
- fun_l23_n290
-end
-
-def fun_l22_n648()
- fun_l23_n557
-end
-
-def fun_l22_n649()
- fun_l23_n151
-end
-
-def fun_l22_n650()
- fun_l23_n297
-end
-
-def fun_l22_n651()
- fun_l23_n991
-end
-
-def fun_l22_n652()
- fun_l23_n11
-end
-
-def fun_l22_n653()
- fun_l23_n465
-end
-
-def fun_l22_n654()
- fun_l23_n802
-end
-
-def fun_l22_n655()
- fun_l23_n778
-end
-
-def fun_l22_n656()
- fun_l23_n877
-end
-
-def fun_l22_n657()
- fun_l23_n773
-end
-
-def fun_l22_n658()
- fun_l23_n385
-end
-
-def fun_l22_n659()
- fun_l23_n151
-end
-
-def fun_l22_n660()
- fun_l23_n553
-end
-
-def fun_l22_n661()
- fun_l23_n626
-end
-
-def fun_l22_n662()
- fun_l23_n715
-end
-
-def fun_l22_n663()
- fun_l23_n675
-end
-
-def fun_l22_n664()
- fun_l23_n884
-end
-
-def fun_l22_n665()
- fun_l23_n875
-end
-
-def fun_l22_n666()
- fun_l23_n510
-end
-
-def fun_l22_n667()
- fun_l23_n727
-end
-
-def fun_l22_n668()
- fun_l23_n530
-end
-
-def fun_l22_n669()
- fun_l23_n869
-end
-
-def fun_l22_n670()
- fun_l23_n385
-end
-
-def fun_l22_n671()
- fun_l23_n66
-end
-
-def fun_l22_n672()
- fun_l23_n335
-end
-
-def fun_l22_n673()
- fun_l23_n287
-end
-
-def fun_l22_n674()
- fun_l23_n426
-end
-
-def fun_l22_n675()
- fun_l23_n657
-end
-
-def fun_l22_n676()
- fun_l23_n411
-end
-
-def fun_l22_n677()
- fun_l23_n982
-end
-
-def fun_l22_n678()
- fun_l23_n747
-end
-
-def fun_l22_n679()
- fun_l23_n305
-end
-
-def fun_l22_n680()
- fun_l23_n767
-end
-
-def fun_l22_n681()
- fun_l23_n177
-end
-
-def fun_l22_n682()
- fun_l23_n115
-end
-
-def fun_l22_n683()
- fun_l23_n625
-end
-
-def fun_l22_n684()
- fun_l23_n154
-end
-
-def fun_l22_n685()
- fun_l23_n871
-end
-
-def fun_l22_n686()
- fun_l23_n921
-end
-
-def fun_l22_n687()
- fun_l23_n194
-end
-
-def fun_l22_n688()
- fun_l23_n12
-end
-
-def fun_l22_n689()
- fun_l23_n464
-end
-
-def fun_l22_n690()
- fun_l23_n44
-end
-
-def fun_l22_n691()
- fun_l23_n265
-end
-
-def fun_l22_n692()
- fun_l23_n256
-end
-
-def fun_l22_n693()
- fun_l23_n937
-end
-
-def fun_l22_n694()
- fun_l23_n656
-end
-
-def fun_l22_n695()
- fun_l23_n986
-end
-
-def fun_l22_n696()
- fun_l23_n774
-end
-
-def fun_l22_n697()
- fun_l23_n907
-end
-
-def fun_l22_n698()
- fun_l23_n763
-end
-
-def fun_l22_n699()
- fun_l23_n290
-end
-
-def fun_l22_n700()
- fun_l23_n121
-end
-
-def fun_l22_n701()
- fun_l23_n605
-end
-
-def fun_l22_n702()
- fun_l23_n415
-end
-
-def fun_l22_n703()
- fun_l23_n431
-end
-
-def fun_l22_n704()
- fun_l23_n65
-end
-
-def fun_l22_n705()
- fun_l23_n997
-end
-
-def fun_l22_n706()
- fun_l23_n859
-end
-
-def fun_l22_n707()
- fun_l23_n768
-end
-
-def fun_l22_n708()
- fun_l23_n570
-end
-
-def fun_l22_n709()
- fun_l23_n458
-end
-
-def fun_l22_n710()
- fun_l23_n964
-end
-
-def fun_l22_n711()
- fun_l23_n484
-end
-
-def fun_l22_n712()
- fun_l23_n440
-end
-
-def fun_l22_n713()
- fun_l23_n133
-end
-
-def fun_l22_n714()
- fun_l23_n789
-end
-
-def fun_l22_n715()
- fun_l23_n176
-end
-
-def fun_l22_n716()
- fun_l23_n380
-end
-
-def fun_l22_n717()
- fun_l23_n115
-end
-
-def fun_l22_n718()
- fun_l23_n652
-end
-
-def fun_l22_n719()
- fun_l23_n210
-end
-
-def fun_l22_n720()
- fun_l23_n347
-end
-
-def fun_l22_n721()
- fun_l23_n72
-end
-
-def fun_l22_n722()
- fun_l23_n426
-end
-
-def fun_l22_n723()
- fun_l23_n123
-end
-
-def fun_l22_n724()
- fun_l23_n321
-end
-
-def fun_l22_n725()
- fun_l23_n582
-end
-
-def fun_l22_n726()
- fun_l23_n434
-end
-
-def fun_l22_n727()
- fun_l23_n543
-end
-
-def fun_l22_n728()
- fun_l23_n794
-end
-
-def fun_l22_n729()
- fun_l23_n474
-end
-
-def fun_l22_n730()
- fun_l23_n412
-end
-
-def fun_l22_n731()
- fun_l23_n898
-end
-
-def fun_l22_n732()
- fun_l23_n833
-end
-
-def fun_l22_n733()
- fun_l23_n77
-end
-
-def fun_l22_n734()
- fun_l23_n728
-end
-
-def fun_l22_n735()
- fun_l23_n397
-end
-
-def fun_l22_n736()
- fun_l23_n40
-end
-
-def fun_l22_n737()
- fun_l23_n501
-end
-
-def fun_l22_n738()
- fun_l23_n817
-end
-
-def fun_l22_n739()
- fun_l23_n792
-end
-
-def fun_l22_n740()
- fun_l23_n435
-end
-
-def fun_l22_n741()
- fun_l23_n264
-end
-
-def fun_l22_n742()
- fun_l23_n285
-end
-
-def fun_l22_n743()
- fun_l23_n756
-end
-
-def fun_l22_n744()
- fun_l23_n836
-end
-
-def fun_l22_n745()
- fun_l23_n179
-end
-
-def fun_l22_n746()
- fun_l23_n375
-end
-
-def fun_l22_n747()
- fun_l23_n631
-end
-
-def fun_l22_n748()
- fun_l23_n232
-end
-
-def fun_l22_n749()
- fun_l23_n215
-end
-
-def fun_l22_n750()
- fun_l23_n118
-end
-
-def fun_l22_n751()
- fun_l23_n721
-end
-
-def fun_l22_n752()
- fun_l23_n378
-end
-
-def fun_l22_n753()
- fun_l23_n613
-end
-
-def fun_l22_n754()
- fun_l23_n368
-end
-
-def fun_l22_n755()
- fun_l23_n748
-end
-
-def fun_l22_n756()
- fun_l23_n0
-end
-
-def fun_l22_n757()
- fun_l23_n90
-end
-
-def fun_l22_n758()
- fun_l23_n895
-end
-
-def fun_l22_n759()
- fun_l23_n0
-end
-
-def fun_l22_n760()
- fun_l23_n486
-end
-
-def fun_l22_n761()
- fun_l23_n568
-end
-
-def fun_l22_n762()
- fun_l23_n525
-end
-
-def fun_l22_n763()
- fun_l23_n106
-end
-
-def fun_l22_n764()
- fun_l23_n607
-end
-
-def fun_l22_n765()
- fun_l23_n729
-end
-
-def fun_l22_n766()
- fun_l23_n781
-end
-
-def fun_l22_n767()
- fun_l23_n79
-end
-
-def fun_l22_n768()
- fun_l23_n313
-end
-
-def fun_l22_n769()
- fun_l23_n764
-end
-
-def fun_l22_n770()
- fun_l23_n348
-end
-
-def fun_l22_n771()
- fun_l23_n809
-end
-
-def fun_l22_n772()
- fun_l23_n891
-end
-
-def fun_l22_n773()
- fun_l23_n806
-end
-
-def fun_l22_n774()
- fun_l23_n173
-end
-
-def fun_l22_n775()
- fun_l23_n960
-end
-
-def fun_l22_n776()
- fun_l23_n186
-end
-
-def fun_l22_n777()
- fun_l23_n863
-end
-
-def fun_l22_n778()
- fun_l23_n860
-end
-
-def fun_l22_n779()
- fun_l23_n122
-end
-
-def fun_l22_n780()
- fun_l23_n114
-end
-
-def fun_l22_n781()
- fun_l23_n910
-end
-
-def fun_l22_n782()
- fun_l23_n20
-end
-
-def fun_l22_n783()
- fun_l23_n384
-end
-
-def fun_l22_n784()
- fun_l23_n56
-end
-
-def fun_l22_n785()
- fun_l23_n833
-end
-
-def fun_l22_n786()
- fun_l23_n31
-end
-
-def fun_l22_n787()
- fun_l23_n679
-end
-
-def fun_l22_n788()
- fun_l23_n8
-end
-
-def fun_l22_n789()
- fun_l23_n425
-end
-
-def fun_l22_n790()
- fun_l23_n615
-end
-
-def fun_l22_n791()
- fun_l23_n220
-end
-
-def fun_l22_n792()
- fun_l23_n977
-end
-
-def fun_l22_n793()
- fun_l23_n913
-end
-
-def fun_l22_n794()
- fun_l23_n714
-end
-
-def fun_l22_n795()
- fun_l23_n885
-end
-
-def fun_l22_n796()
- fun_l23_n289
-end
-
-def fun_l22_n797()
- fun_l23_n205
-end
-
-def fun_l22_n798()
- fun_l23_n826
-end
-
-def fun_l22_n799()
- fun_l23_n335
-end
-
-def fun_l22_n800()
- fun_l23_n754
-end
-
-def fun_l22_n801()
- fun_l23_n588
-end
-
-def fun_l22_n802()
- fun_l23_n689
-end
-
-def fun_l22_n803()
- fun_l23_n731
-end
-
-def fun_l22_n804()
- fun_l23_n962
-end
-
-def fun_l22_n805()
- fun_l23_n283
-end
-
-def fun_l22_n806()
- fun_l23_n692
-end
-
-def fun_l22_n807()
- fun_l23_n554
-end
-
-def fun_l22_n808()
- fun_l23_n365
-end
-
-def fun_l22_n809()
- fun_l23_n684
-end
-
-def fun_l22_n810()
- fun_l23_n848
-end
-
-def fun_l22_n811()
- fun_l23_n283
-end
-
-def fun_l22_n812()
- fun_l23_n378
-end
-
-def fun_l22_n813()
- fun_l23_n83
-end
-
-def fun_l22_n814()
- fun_l23_n260
-end
-
-def fun_l22_n815()
- fun_l23_n382
-end
-
-def fun_l22_n816()
- fun_l23_n701
-end
-
-def fun_l22_n817()
- fun_l23_n177
-end
-
-def fun_l22_n818()
- fun_l23_n703
-end
-
-def fun_l22_n819()
- fun_l23_n105
-end
-
-def fun_l22_n820()
- fun_l23_n874
-end
-
-def fun_l22_n821()
- fun_l23_n952
-end
-
-def fun_l22_n822()
- fun_l23_n37
-end
-
-def fun_l22_n823()
- fun_l23_n478
-end
-
-def fun_l22_n824()
- fun_l23_n164
-end
-
-def fun_l22_n825()
- fun_l23_n505
-end
-
-def fun_l22_n826()
- fun_l23_n353
-end
-
-def fun_l22_n827()
- fun_l23_n799
-end
-
-def fun_l22_n828()
- fun_l23_n330
-end
-
-def fun_l22_n829()
- fun_l23_n979
-end
-
-def fun_l22_n830()
- fun_l23_n842
-end
-
-def fun_l22_n831()
- fun_l23_n912
-end
-
-def fun_l22_n832()
- fun_l23_n579
-end
-
-def fun_l22_n833()
- fun_l23_n123
-end
-
-def fun_l22_n834()
- fun_l23_n864
-end
-
-def fun_l22_n835()
- fun_l23_n369
-end
-
-def fun_l22_n836()
- fun_l23_n145
-end
-
-def fun_l22_n837()
- fun_l23_n414
-end
-
-def fun_l22_n838()
- fun_l23_n261
-end
-
-def fun_l22_n839()
- fun_l23_n88
-end
-
-def fun_l22_n840()
- fun_l23_n427
-end
-
-def fun_l22_n841()
- fun_l23_n847
-end
-
-def fun_l22_n842()
- fun_l23_n734
-end
-
-def fun_l22_n843()
- fun_l23_n895
-end
-
-def fun_l22_n844()
- fun_l23_n765
-end
-
-def fun_l22_n845()
- fun_l23_n647
-end
-
-def fun_l22_n846()
- fun_l23_n862
-end
-
-def fun_l22_n847()
- fun_l23_n360
-end
-
-def fun_l22_n848()
- fun_l23_n922
-end
-
-def fun_l22_n849()
- fun_l23_n914
-end
-
-def fun_l22_n850()
- fun_l23_n408
-end
-
-def fun_l22_n851()
- fun_l23_n248
-end
-
-def fun_l22_n852()
- fun_l23_n812
-end
-
-def fun_l22_n853()
- fun_l23_n288
-end
-
-def fun_l22_n854()
- fun_l23_n885
-end
-
-def fun_l22_n855()
- fun_l23_n164
-end
-
-def fun_l22_n856()
- fun_l23_n231
-end
-
-def fun_l22_n857()
- fun_l23_n428
-end
-
-def fun_l22_n858()
- fun_l23_n527
-end
-
-def fun_l22_n859()
- fun_l23_n419
-end
-
-def fun_l22_n860()
- fun_l23_n348
-end
-
-def fun_l22_n861()
- fun_l23_n580
-end
-
-def fun_l22_n862()
- fun_l23_n437
-end
-
-def fun_l22_n863()
- fun_l23_n486
-end
-
-def fun_l22_n864()
- fun_l23_n2
-end
-
-def fun_l22_n865()
- fun_l23_n733
-end
-
-def fun_l22_n866()
- fun_l23_n50
-end
-
-def fun_l22_n867()
- fun_l23_n391
-end
-
-def fun_l22_n868()
- fun_l23_n451
-end
-
-def fun_l22_n869()
- fun_l23_n86
-end
-
-def fun_l22_n870()
- fun_l23_n426
-end
-
-def fun_l22_n871()
- fun_l23_n279
-end
-
-def fun_l22_n872()
- fun_l23_n41
-end
-
-def fun_l22_n873()
- fun_l23_n241
-end
-
-def fun_l22_n874()
- fun_l23_n601
-end
-
-def fun_l22_n875()
- fun_l23_n187
-end
-
-def fun_l22_n876()
- fun_l23_n98
-end
-
-def fun_l22_n877()
- fun_l23_n145
-end
-
-def fun_l22_n878()
- fun_l23_n327
-end
-
-def fun_l22_n879()
- fun_l23_n928
-end
-
-def fun_l22_n880()
- fun_l23_n666
-end
-
-def fun_l22_n881()
- fun_l23_n152
-end
-
-def fun_l22_n882()
- fun_l23_n930
-end
-
-def fun_l22_n883()
- fun_l23_n842
-end
-
-def fun_l22_n884()
- fun_l23_n865
-end
-
-def fun_l22_n885()
- fun_l23_n16
-end
-
-def fun_l22_n886()
- fun_l23_n402
-end
-
-def fun_l22_n887()
- fun_l23_n711
-end
-
-def fun_l22_n888()
- fun_l23_n206
-end
-
-def fun_l22_n889()
- fun_l23_n991
-end
-
-def fun_l22_n890()
- fun_l23_n852
-end
-
-def fun_l22_n891()
- fun_l23_n602
-end
-
-def fun_l22_n892()
- fun_l23_n998
-end
-
-def fun_l22_n893()
- fun_l23_n740
-end
-
-def fun_l22_n894()
- fun_l23_n643
-end
-
-def fun_l22_n895()
- fun_l23_n872
-end
-
-def fun_l22_n896()
- fun_l23_n689
-end
-
-def fun_l22_n897()
- fun_l23_n119
-end
-
-def fun_l22_n898()
- fun_l23_n230
-end
-
-def fun_l22_n899()
- fun_l23_n345
-end
-
-def fun_l22_n900()
- fun_l23_n805
-end
-
-def fun_l22_n901()
- fun_l23_n850
-end
-
-def fun_l22_n902()
- fun_l23_n930
-end
-
-def fun_l22_n903()
- fun_l23_n652
-end
-
-def fun_l22_n904()
- fun_l23_n772
-end
-
-def fun_l22_n905()
- fun_l23_n219
-end
-
-def fun_l22_n906()
- fun_l23_n592
-end
-
-def fun_l22_n907()
- fun_l23_n177
-end
-
-def fun_l22_n908()
- fun_l23_n552
-end
-
-def fun_l22_n909()
- fun_l23_n334
-end
-
-def fun_l22_n910()
- fun_l23_n764
-end
-
-def fun_l22_n911()
- fun_l23_n482
-end
-
-def fun_l22_n912()
- fun_l23_n73
-end
-
-def fun_l22_n913()
- fun_l23_n854
-end
-
-def fun_l22_n914()
- fun_l23_n215
-end
-
-def fun_l22_n915()
- fun_l23_n736
-end
-
-def fun_l22_n916()
- fun_l23_n91
-end
-
-def fun_l22_n917()
- fun_l23_n506
-end
-
-def fun_l22_n918()
- fun_l23_n775
-end
-
-def fun_l22_n919()
- fun_l23_n171
-end
-
-def fun_l22_n920()
- fun_l23_n414
-end
-
-def fun_l22_n921()
- fun_l23_n185
-end
-
-def fun_l22_n922()
- fun_l23_n190
-end
-
-def fun_l22_n923()
- fun_l23_n696
-end
-
-def fun_l22_n924()
- fun_l23_n175
-end
-
-def fun_l22_n925()
- fun_l23_n29
-end
-
-def fun_l22_n926()
- fun_l23_n729
-end
-
-def fun_l22_n927()
- fun_l23_n279
-end
-
-def fun_l22_n928()
- fun_l23_n2
-end
-
-def fun_l22_n929()
- fun_l23_n44
-end
-
-def fun_l22_n930()
- fun_l23_n399
-end
-
-def fun_l22_n931()
- fun_l23_n957
-end
-
-def fun_l22_n932()
- fun_l23_n513
-end
-
-def fun_l22_n933()
- fun_l23_n607
-end
-
-def fun_l22_n934()
- fun_l23_n488
-end
-
-def fun_l22_n935()
- fun_l23_n308
-end
-
-def fun_l22_n936()
- fun_l23_n959
-end
-
-def fun_l22_n937()
- fun_l23_n373
-end
-
-def fun_l22_n938()
- fun_l23_n759
-end
-
-def fun_l22_n939()
- fun_l23_n985
-end
-
-def fun_l22_n940()
- fun_l23_n971
-end
-
-def fun_l22_n941()
- fun_l23_n493
-end
-
-def fun_l22_n942()
- fun_l23_n884
-end
-
-def fun_l22_n943()
- fun_l23_n636
-end
-
-def fun_l22_n944()
- fun_l23_n423
-end
-
-def fun_l22_n945()
- fun_l23_n406
-end
-
-def fun_l22_n946()
- fun_l23_n92
-end
-
-def fun_l22_n947()
- fun_l23_n11
-end
-
-def fun_l22_n948()
- fun_l23_n112
-end
-
-def fun_l22_n949()
- fun_l23_n489
-end
-
-def fun_l22_n950()
- fun_l23_n829
-end
-
-def fun_l22_n951()
- fun_l23_n438
-end
-
-def fun_l22_n952()
- fun_l23_n622
-end
-
-def fun_l22_n953()
- fun_l23_n133
-end
-
-def fun_l22_n954()
- fun_l23_n734
-end
-
-def fun_l22_n955()
- fun_l23_n745
-end
-
-def fun_l22_n956()
- fun_l23_n743
-end
-
-def fun_l22_n957()
- fun_l23_n299
-end
-
-def fun_l22_n958()
- fun_l23_n952
-end
-
-def fun_l22_n959()
- fun_l23_n841
-end
-
-def fun_l22_n960()
- fun_l23_n317
-end
-
-def fun_l22_n961()
- fun_l23_n506
-end
-
-def fun_l22_n962()
- fun_l23_n823
-end
-
-def fun_l22_n963()
- fun_l23_n330
-end
-
-def fun_l22_n964()
- fun_l23_n899
-end
-
-def fun_l22_n965()
- fun_l23_n994
-end
-
-def fun_l22_n966()
- fun_l23_n625
-end
-
-def fun_l22_n967()
- fun_l23_n74
-end
-
-def fun_l22_n968()
- fun_l23_n911
-end
-
-def fun_l22_n969()
- fun_l23_n215
-end
-
-def fun_l22_n970()
- fun_l23_n845
-end
-
-def fun_l22_n971()
- fun_l23_n813
-end
-
-def fun_l22_n972()
- fun_l23_n784
-end
-
-def fun_l22_n973()
- fun_l23_n727
-end
-
-def fun_l22_n974()
- fun_l23_n62
-end
-
-def fun_l22_n975()
- fun_l23_n790
-end
-
-def fun_l22_n976()
- fun_l23_n918
-end
-
-def fun_l22_n977()
- fun_l23_n658
-end
-
-def fun_l22_n978()
- fun_l23_n621
-end
-
-def fun_l22_n979()
- fun_l23_n731
-end
-
-def fun_l22_n980()
- fun_l23_n728
-end
-
-def fun_l22_n981()
- fun_l23_n558
-end
-
-def fun_l22_n982()
- fun_l23_n501
-end
-
-def fun_l22_n983()
- fun_l23_n794
-end
-
-def fun_l22_n984()
- fun_l23_n162
-end
-
-def fun_l22_n985()
- fun_l23_n700
-end
-
-def fun_l22_n986()
- fun_l23_n875
-end
-
-def fun_l22_n987()
- fun_l23_n58
-end
-
-def fun_l22_n988()
- fun_l23_n55
-end
-
-def fun_l22_n989()
- fun_l23_n491
-end
-
-def fun_l22_n990()
- fun_l23_n613
-end
-
-def fun_l22_n991()
- fun_l23_n587
-end
-
-def fun_l22_n992()
- fun_l23_n311
-end
-
-def fun_l22_n993()
- fun_l23_n305
-end
-
-def fun_l22_n994()
- fun_l23_n348
-end
-
-def fun_l22_n995()
- fun_l23_n679
-end
-
-def fun_l22_n996()
- fun_l23_n245
-end
-
-def fun_l22_n997()
- fun_l23_n419
-end
-
-def fun_l22_n998()
- fun_l23_n456
-end
-
-def fun_l22_n999()
- fun_l23_n146
-end
-
-def fun_l23_n0()
- fun_l24_n409
-end
-
-def fun_l23_n1()
- fun_l24_n825
-end
-
-def fun_l23_n2()
- fun_l24_n349
-end
-
-def fun_l23_n3()
- fun_l24_n560
-end
-
-def fun_l23_n4()
- fun_l24_n949
-end
-
-def fun_l23_n5()
- fun_l24_n108
-end
-
-def fun_l23_n6()
- fun_l24_n149
-end
-
-def fun_l23_n7()
- fun_l24_n224
-end
-
-def fun_l23_n8()
- fun_l24_n418
-end
-
-def fun_l23_n9()
- fun_l24_n819
-end
-
-def fun_l23_n10()
- fun_l24_n269
-end
-
-def fun_l23_n11()
- fun_l24_n158
-end
-
-def fun_l23_n12()
- fun_l24_n487
-end
-
-def fun_l23_n13()
- fun_l24_n561
-end
-
-def fun_l23_n14()
- fun_l24_n292
-end
-
-def fun_l23_n15()
- fun_l24_n996
-end
-
-def fun_l23_n16()
- fun_l24_n399
-end
-
-def fun_l23_n17()
- fun_l24_n585
-end
-
-def fun_l23_n18()
- fun_l24_n691
-end
-
-def fun_l23_n19()
- fun_l24_n884
-end
-
-def fun_l23_n20()
- fun_l24_n933
-end
-
-def fun_l23_n21()
- fun_l24_n139
-end
-
-def fun_l23_n22()
- fun_l24_n770
-end
-
-def fun_l23_n23()
- fun_l24_n894
-end
-
-def fun_l23_n24()
- fun_l24_n418
-end
-
-def fun_l23_n25()
- fun_l24_n695
-end
-
-def fun_l23_n26()
- fun_l24_n800
-end
-
-def fun_l23_n27()
- fun_l24_n580
-end
-
-def fun_l23_n28()
- fun_l24_n1
-end
-
-def fun_l23_n29()
- fun_l24_n121
-end
-
-def fun_l23_n30()
- fun_l24_n757
-end
-
-def fun_l23_n31()
- fun_l24_n461
-end
-
-def fun_l23_n32()
- fun_l24_n534
-end
-
-def fun_l23_n33()
- fun_l24_n795
-end
-
-def fun_l23_n34()
- fun_l24_n286
-end
-
-def fun_l23_n35()
- fun_l24_n200
-end
-
-def fun_l23_n36()
- fun_l24_n513
-end
-
-def fun_l23_n37()
- fun_l24_n340
-end
-
-def fun_l23_n38()
- fun_l24_n385
-end
-
-def fun_l23_n39()
- fun_l24_n432
-end
-
-def fun_l23_n40()
- fun_l24_n990
-end
-
-def fun_l23_n41()
- fun_l24_n966
-end
-
-def fun_l23_n42()
- fun_l24_n237
-end
-
-def fun_l23_n43()
- fun_l24_n249
-end
-
-def fun_l23_n44()
- fun_l24_n182
-end
-
-def fun_l23_n45()
- fun_l24_n718
-end
-
-def fun_l23_n46()
- fun_l24_n902
-end
-
-def fun_l23_n47()
- fun_l24_n963
-end
-
-def fun_l23_n48()
- fun_l24_n337
-end
-
-def fun_l23_n49()
- fun_l24_n615
-end
-
-def fun_l23_n50()
- fun_l24_n729
-end
-
-def fun_l23_n51()
- fun_l24_n240
-end
-
-def fun_l23_n52()
- fun_l24_n309
-end
-
-def fun_l23_n53()
- fun_l24_n697
-end
-
-def fun_l23_n54()
- fun_l24_n260
-end
-
-def fun_l23_n55()
- fun_l24_n11
-end
-
-def fun_l23_n56()
- fun_l24_n630
-end
-
-def fun_l23_n57()
- fun_l24_n983
-end
-
-def fun_l23_n58()
- fun_l24_n678
-end
-
-def fun_l23_n59()
- fun_l24_n95
-end
-
-def fun_l23_n60()
- fun_l24_n63
-end
-
-def fun_l23_n61()
- fun_l24_n43
-end
-
-def fun_l23_n62()
- fun_l24_n679
-end
-
-def fun_l23_n63()
- fun_l24_n671
-end
-
-def fun_l23_n64()
- fun_l24_n377
-end
-
-def fun_l23_n65()
- fun_l24_n939
-end
-
-def fun_l23_n66()
- fun_l24_n3
-end
-
-def fun_l23_n67()
- fun_l24_n230
-end
-
-def fun_l23_n68()
- fun_l24_n622
-end
-
-def fun_l23_n69()
- fun_l24_n339
-end
-
-def fun_l23_n70()
- fun_l24_n736
-end
-
-def fun_l23_n71()
- fun_l24_n116
-end
-
-def fun_l23_n72()
- fun_l24_n373
-end
-
-def fun_l23_n73()
- fun_l24_n891
-end
-
-def fun_l23_n74()
- fun_l24_n954
-end
-
-def fun_l23_n75()
- fun_l24_n967
-end
-
-def fun_l23_n76()
- fun_l24_n205
-end
-
-def fun_l23_n77()
- fun_l24_n802
-end
-
-def fun_l23_n78()
- fun_l24_n480
-end
-
-def fun_l23_n79()
- fun_l24_n935
-end
-
-def fun_l23_n80()
- fun_l24_n84
-end
-
-def fun_l23_n81()
- fun_l24_n40
-end
-
-def fun_l23_n82()
- fun_l24_n559
-end
-
-def fun_l23_n83()
- fun_l24_n16
-end
-
-def fun_l23_n84()
- fun_l24_n494
-end
-
-def fun_l23_n85()
- fun_l24_n580
-end
-
-def fun_l23_n86()
- fun_l24_n72
-end
-
-def fun_l23_n87()
- fun_l24_n33
-end
-
-def fun_l23_n88()
- fun_l24_n742
-end
-
-def fun_l23_n89()
- fun_l24_n10
-end
-
-def fun_l23_n90()
- fun_l24_n33
-end
-
-def fun_l23_n91()
- fun_l24_n306
-end
-
-def fun_l23_n92()
- fun_l24_n960
-end
-
-def fun_l23_n93()
- fun_l24_n573
-end
-
-def fun_l23_n94()
- fun_l24_n145
-end
-
-def fun_l23_n95()
- fun_l24_n730
-end
-
-def fun_l23_n96()
- fun_l24_n703
-end
-
-def fun_l23_n97()
- fun_l24_n772
-end
-
-def fun_l23_n98()
- fun_l24_n664
-end
-
-def fun_l23_n99()
- fun_l24_n582
-end
-
-def fun_l23_n100()
- fun_l24_n144
-end
-
-def fun_l23_n101()
- fun_l24_n950
-end
-
-def fun_l23_n102()
- fun_l24_n449
-end
-
-def fun_l23_n103()
- fun_l24_n416
-end
-
-def fun_l23_n104()
- fun_l24_n453
-end
-
-def fun_l23_n105()
- fun_l24_n159
-end
-
-def fun_l23_n106()
- fun_l24_n483
-end
-
-def fun_l23_n107()
- fun_l24_n69
-end
-
-def fun_l23_n108()
- fun_l24_n142
-end
-
-def fun_l23_n109()
- fun_l24_n968
-end
-
-def fun_l23_n110()
- fun_l24_n760
-end
-
-def fun_l23_n111()
- fun_l24_n600
-end
-
-def fun_l23_n112()
- fun_l24_n821
-end
-
-def fun_l23_n113()
- fun_l24_n527
-end
-
-def fun_l23_n114()
- fun_l24_n661
-end
-
-def fun_l23_n115()
- fun_l24_n15
-end
-
-def fun_l23_n116()
- fun_l24_n807
-end
-
-def fun_l23_n117()
- fun_l24_n143
-end
-
-def fun_l23_n118()
- fun_l24_n962
-end
-
-def fun_l23_n119()
- fun_l24_n83
-end
-
-def fun_l23_n120()
- fun_l24_n755
-end
-
-def fun_l23_n121()
- fun_l24_n645
-end
-
-def fun_l23_n122()
- fun_l24_n479
-end
-
-def fun_l23_n123()
- fun_l24_n639
-end
-
-def fun_l23_n124()
- fun_l24_n528
-end
-
-def fun_l23_n125()
- fun_l24_n782
-end
-
-def fun_l23_n126()
- fun_l24_n200
-end
-
-def fun_l23_n127()
- fun_l24_n60
-end
-
-def fun_l23_n128()
- fun_l24_n396
-end
-
-def fun_l23_n129()
- fun_l24_n600
-end
-
-def fun_l23_n130()
- fun_l24_n397
-end
-
-def fun_l23_n131()
- fun_l24_n921
-end
-
-def fun_l23_n132()
- fun_l24_n979
-end
-
-def fun_l23_n133()
- fun_l24_n849
-end
-
-def fun_l23_n134()
- fun_l24_n302
-end
-
-def fun_l23_n135()
- fun_l24_n77
-end
-
-def fun_l23_n136()
- fun_l24_n249
-end
-
-def fun_l23_n137()
- fun_l24_n912
-end
-
-def fun_l23_n138()
- fun_l24_n661
-end
-
-def fun_l23_n139()
- fun_l24_n500
-end
-
-def fun_l23_n140()
- fun_l24_n590
-end
-
-def fun_l23_n141()
- fun_l24_n942
-end
-
-def fun_l23_n142()
- fun_l24_n299
-end
-
-def fun_l23_n143()
- fun_l24_n272
-end
-
-def fun_l23_n144()
- fun_l24_n747
-end
-
-def fun_l23_n145()
- fun_l24_n88
-end
-
-def fun_l23_n146()
- fun_l24_n524
-end
-
-def fun_l23_n147()
- fun_l24_n931
-end
-
-def fun_l23_n148()
- fun_l24_n712
-end
-
-def fun_l23_n149()
- fun_l24_n661
-end
-
-def fun_l23_n150()
- fun_l24_n426
-end
-
-def fun_l23_n151()
- fun_l24_n693
-end
-
-def fun_l23_n152()
- fun_l24_n585
-end
-
-def fun_l23_n153()
- fun_l24_n451
-end
-
-def fun_l23_n154()
- fun_l24_n333
-end
-
-def fun_l23_n155()
- fun_l24_n792
-end
-
-def fun_l23_n156()
- fun_l24_n840
-end
-
-def fun_l23_n157()
- fun_l24_n643
-end
-
-def fun_l23_n158()
- fun_l24_n120
-end
-
-def fun_l23_n159()
- fun_l24_n86
-end
-
-def fun_l23_n160()
- fun_l24_n352
-end
-
-def fun_l23_n161()
- fun_l24_n761
-end
-
-def fun_l23_n162()
- fun_l24_n412
-end
-
-def fun_l23_n163()
- fun_l24_n156
-end
-
-def fun_l23_n164()
- fun_l24_n909
-end
-
-def fun_l23_n165()
- fun_l24_n394
-end
-
-def fun_l23_n166()
- fun_l24_n973
-end
-
-def fun_l23_n167()
- fun_l24_n31
-end
-
-def fun_l23_n168()
- fun_l24_n545
-end
-
-def fun_l23_n169()
- fun_l24_n180
-end
-
-def fun_l23_n170()
- fun_l24_n446
-end
-
-def fun_l23_n171()
- fun_l24_n965
-end
-
-def fun_l23_n172()
- fun_l24_n102
-end
-
-def fun_l23_n173()
- fun_l24_n161
-end
-
-def fun_l23_n174()
- fun_l24_n571
-end
-
-def fun_l23_n175()
- fun_l24_n451
-end
-
-def fun_l23_n176()
- fun_l24_n947
-end
-
-def fun_l23_n177()
- fun_l24_n906
-end
-
-def fun_l23_n178()
- fun_l24_n356
-end
-
-def fun_l23_n179()
- fun_l24_n84
-end
-
-def fun_l23_n180()
- fun_l24_n798
-end
-
-def fun_l23_n181()
- fun_l24_n500
-end
-
-def fun_l23_n182()
- fun_l24_n419
-end
-
-def fun_l23_n183()
- fun_l24_n797
-end
-
-def fun_l23_n184()
- fun_l24_n459
-end
-
-def fun_l23_n185()
- fun_l24_n795
-end
-
-def fun_l23_n186()
- fun_l24_n478
-end
-
-def fun_l23_n187()
- fun_l24_n742
-end
-
-def fun_l23_n188()
- fun_l24_n262
-end
-
-def fun_l23_n189()
- fun_l24_n37
-end
-
-def fun_l23_n190()
- fun_l24_n340
-end
-
-def fun_l23_n191()
- fun_l24_n314
-end
-
-def fun_l23_n192()
- fun_l24_n595
-end
-
-def fun_l23_n193()
- fun_l24_n769
-end
-
-def fun_l23_n194()
- fun_l24_n637
-end
-
-def fun_l23_n195()
- fun_l24_n377
-end
-
-def fun_l23_n196()
- fun_l24_n77
-end
-
-def fun_l23_n197()
- fun_l24_n486
-end
-
-def fun_l23_n198()
- fun_l24_n992
-end
-
-def fun_l23_n199()
- fun_l24_n546
-end
-
-def fun_l23_n200()
- fun_l24_n386
-end
-
-def fun_l23_n201()
- fun_l24_n301
-end
-
-def fun_l23_n202()
- fun_l24_n867
-end
-
-def fun_l23_n203()
- fun_l24_n948
-end
-
-def fun_l23_n204()
- fun_l24_n163
-end
-
-def fun_l23_n205()
- fun_l24_n618
-end
-
-def fun_l23_n206()
- fun_l24_n560
-end
-
-def fun_l23_n207()
- fun_l24_n147
-end
-
-def fun_l23_n208()
- fun_l24_n474
-end
-
-def fun_l23_n209()
- fun_l24_n99
-end
-
-def fun_l23_n210()
- fun_l24_n994
-end
-
-def fun_l23_n211()
- fun_l24_n594
-end
-
-def fun_l23_n212()
- fun_l24_n101
-end
-
-def fun_l23_n213()
- fun_l24_n510
-end
-
-def fun_l23_n214()
- fun_l24_n965
-end
-
-def fun_l23_n215()
- fun_l24_n460
-end
-
-def fun_l23_n216()
- fun_l24_n455
-end
-
-def fun_l23_n217()
- fun_l24_n783
-end
-
-def fun_l23_n218()
- fun_l24_n466
-end
-
-def fun_l23_n219()
- fun_l24_n60
-end
-
-def fun_l23_n220()
- fun_l24_n486
-end
-
-def fun_l23_n221()
- fun_l24_n819
-end
-
-def fun_l23_n222()
- fun_l24_n909
-end
-
-def fun_l23_n223()
- fun_l24_n446
-end
-
-def fun_l23_n224()
- fun_l24_n80
-end
-
-def fun_l23_n225()
- fun_l24_n276
-end
-
-def fun_l23_n226()
- fun_l24_n638
-end
-
-def fun_l23_n227()
- fun_l24_n200
-end
-
-def fun_l23_n228()
- fun_l24_n665
-end
-
-def fun_l23_n229()
- fun_l24_n814
-end
-
-def fun_l23_n230()
- fun_l24_n214
-end
-
-def fun_l23_n231()
- fun_l24_n719
-end
-
-def fun_l23_n232()
- fun_l24_n62
-end
-
-def fun_l23_n233()
- fun_l24_n523
-end
-
-def fun_l23_n234()
- fun_l24_n470
-end
-
-def fun_l23_n235()
- fun_l24_n338
-end
-
-def fun_l23_n236()
- fun_l24_n929
-end
-
-def fun_l23_n237()
- fun_l24_n982
-end
-
-def fun_l23_n238()
- fun_l24_n391
-end
-
-def fun_l23_n239()
- fun_l24_n631
-end
-
-def fun_l23_n240()
- fun_l24_n473
-end
-
-def fun_l23_n241()
- fun_l24_n25
-end
-
-def fun_l23_n242()
- fun_l24_n720
-end
-
-def fun_l23_n243()
- fun_l24_n139
-end
-
-def fun_l23_n244()
- fun_l24_n859
-end
-
-def fun_l23_n245()
- fun_l24_n154
-end
-
-def fun_l23_n246()
- fun_l24_n272
-end
-
-def fun_l23_n247()
- fun_l24_n248
-end
-
-def fun_l23_n248()
- fun_l24_n719
-end
-
-def fun_l23_n249()
- fun_l24_n436
-end
-
-def fun_l23_n250()
- fun_l24_n935
-end
-
-def fun_l23_n251()
- fun_l24_n513
-end
-
-def fun_l23_n252()
- fun_l24_n0
-end
-
-def fun_l23_n253()
- fun_l24_n104
-end
-
-def fun_l23_n254()
- fun_l24_n551
-end
-
-def fun_l23_n255()
- fun_l24_n317
-end
-
-def fun_l23_n256()
- fun_l24_n225
-end
-
-def fun_l23_n257()
- fun_l24_n685
-end
-
-def fun_l23_n258()
- fun_l24_n647
-end
-
-def fun_l23_n259()
- fun_l24_n489
-end
-
-def fun_l23_n260()
- fun_l24_n252
-end
-
-def fun_l23_n261()
- fun_l24_n333
-end
-
-def fun_l23_n262()
- fun_l24_n179
-end
-
-def fun_l23_n263()
- fun_l24_n68
-end
-
-def fun_l23_n264()
- fun_l24_n119
-end
-
-def fun_l23_n265()
- fun_l24_n840
-end
-
-def fun_l23_n266()
- fun_l24_n683
-end
-
-def fun_l23_n267()
- fun_l24_n897
-end
-
-def fun_l23_n268()
- fun_l24_n323
-end
-
-def fun_l23_n269()
- fun_l24_n667
-end
-
-def fun_l23_n270()
- fun_l24_n538
-end
-
-def fun_l23_n271()
- fun_l24_n597
-end
-
-def fun_l23_n272()
- fun_l24_n582
-end
-
-def fun_l23_n273()
- fun_l24_n19
-end
-
-def fun_l23_n274()
- fun_l24_n331
-end
-
-def fun_l23_n275()
- fun_l24_n528
-end
-
-def fun_l23_n276()
- fun_l24_n766
-end
-
-def fun_l23_n277()
- fun_l24_n742
-end
-
-def fun_l23_n278()
- fun_l24_n318
-end
-
-def fun_l23_n279()
- fun_l24_n143
-end
-
-def fun_l23_n280()
- fun_l24_n910
-end
-
-def fun_l23_n281()
- fun_l24_n953
-end
-
-def fun_l23_n282()
- fun_l24_n655
-end
-
-def fun_l23_n283()
- fun_l24_n804
-end
-
-def fun_l23_n284()
- fun_l24_n539
-end
-
-def fun_l23_n285()
- fun_l24_n697
-end
-
-def fun_l23_n286()
- fun_l24_n258
-end
-
-def fun_l23_n287()
- fun_l24_n194
-end
-
-def fun_l23_n288()
- fun_l24_n420
-end
-
-def fun_l23_n289()
- fun_l24_n253
-end
-
-def fun_l23_n290()
- fun_l24_n858
-end
-
-def fun_l23_n291()
- fun_l24_n831
-end
-
-def fun_l23_n292()
- fun_l24_n798
-end
-
-def fun_l23_n293()
- fun_l24_n662
-end
-
-def fun_l23_n294()
- fun_l24_n900
-end
-
-def fun_l23_n295()
- fun_l24_n408
-end
-
-def fun_l23_n296()
- fun_l24_n151
-end
-
-def fun_l23_n297()
- fun_l24_n660
-end
-
-def fun_l23_n298()
- fun_l24_n233
-end
-
-def fun_l23_n299()
- fun_l24_n412
-end
-
-def fun_l23_n300()
- fun_l24_n347
-end
-
-def fun_l23_n301()
- fun_l24_n360
-end
-
-def fun_l23_n302()
- fun_l24_n150
-end
-
-def fun_l23_n303()
- fun_l24_n995
-end
-
-def fun_l23_n304()
- fun_l24_n623
-end
-
-def fun_l23_n305()
- fun_l24_n404
-end
-
-def fun_l23_n306()
- fun_l24_n898
-end
-
-def fun_l23_n307()
- fun_l24_n736
-end
-
-def fun_l23_n308()
- fun_l24_n301
-end
-
-def fun_l23_n309()
- fun_l24_n929
-end
-
-def fun_l23_n310()
- fun_l24_n795
-end
-
-def fun_l23_n311()
- fun_l24_n434
-end
-
-def fun_l23_n312()
- fun_l24_n796
-end
-
-def fun_l23_n313()
- fun_l24_n71
-end
-
-def fun_l23_n314()
- fun_l24_n294
-end
-
-def fun_l23_n315()
- fun_l24_n540
-end
-
-def fun_l23_n316()
- fun_l24_n137
-end
-
-def fun_l23_n317()
- fun_l24_n523
-end
-
-def fun_l23_n318()
- fun_l24_n472
-end
-
-def fun_l23_n319()
- fun_l24_n141
-end
-
-def fun_l23_n320()
- fun_l24_n552
-end
-
-def fun_l23_n321()
- fun_l24_n587
-end
-
-def fun_l23_n322()
- fun_l24_n308
-end
-
-def fun_l23_n323()
- fun_l24_n929
-end
-
-def fun_l23_n324()
- fun_l24_n944
-end
-
-def fun_l23_n325()
- fun_l24_n472
-end
-
-def fun_l23_n326()
- fun_l24_n450
-end
-
-def fun_l23_n327()
- fun_l24_n376
-end
-
-def fun_l23_n328()
- fun_l24_n70
-end
-
-def fun_l23_n329()
- fun_l24_n486
-end
-
-def fun_l23_n330()
- fun_l24_n391
-end
-
-def fun_l23_n331()
- fun_l24_n133
-end
-
-def fun_l23_n332()
- fun_l24_n31
-end
-
-def fun_l23_n333()
- fun_l24_n462
-end
-
-def fun_l23_n334()
- fun_l24_n521
-end
-
-def fun_l23_n335()
- fun_l24_n706
-end
-
-def fun_l23_n336()
- fun_l24_n511
-end
-
-def fun_l23_n337()
- fun_l24_n932
-end
-
-def fun_l23_n338()
- fun_l24_n133
-end
-
-def fun_l23_n339()
- fun_l24_n296
-end
-
-def fun_l23_n340()
- fun_l24_n591
-end
-
-def fun_l23_n341()
- fun_l24_n581
-end
-
-def fun_l23_n342()
- fun_l24_n41
-end
-
-def fun_l23_n343()
- fun_l24_n256
-end
-
-def fun_l23_n344()
- fun_l24_n772
-end
-
-def fun_l23_n345()
- fun_l24_n642
-end
-
-def fun_l23_n346()
- fun_l24_n110
-end
-
-def fun_l23_n347()
- fun_l24_n987
-end
-
-def fun_l23_n348()
- fun_l24_n33
-end
-
-def fun_l23_n349()
- fun_l24_n913
-end
-
-def fun_l23_n350()
- fun_l24_n581
-end
-
-def fun_l23_n351()
- fun_l24_n594
-end
-
-def fun_l23_n352()
- fun_l24_n484
-end
-
-def fun_l23_n353()
- fun_l24_n969
-end
-
-def fun_l23_n354()
- fun_l24_n966
-end
-
-def fun_l23_n355()
- fun_l24_n122
-end
-
-def fun_l23_n356()
- fun_l24_n907
-end
-
-def fun_l23_n357()
- fun_l24_n980
-end
-
-def fun_l23_n358()
- fun_l24_n557
-end
-
-def fun_l23_n359()
- fun_l24_n216
-end
-
-def fun_l23_n360()
- fun_l24_n936
-end
-
-def fun_l23_n361()
- fun_l24_n476
-end
-
-def fun_l23_n362()
- fun_l24_n154
-end
-
-def fun_l23_n363()
- fun_l24_n785
-end
-
-def fun_l23_n364()
- fun_l24_n967
-end
-
-def fun_l23_n365()
- fun_l24_n697
-end
-
-def fun_l23_n366()
- fun_l24_n610
-end
-
-def fun_l23_n367()
- fun_l24_n415
-end
-
-def fun_l23_n368()
- fun_l24_n432
-end
-
-def fun_l23_n369()
- fun_l24_n505
-end
-
-def fun_l23_n370()
- fun_l24_n581
-end
-
-def fun_l23_n371()
- fun_l24_n350
-end
-
-def fun_l23_n372()
- fun_l24_n202
-end
-
-def fun_l23_n373()
- fun_l24_n757
-end
-
-def fun_l23_n374()
- fun_l24_n336
-end
-
-def fun_l23_n375()
- fun_l24_n323
-end
-
-def fun_l23_n376()
- fun_l24_n670
-end
-
-def fun_l23_n377()
- fun_l24_n535
-end
-
-def fun_l23_n378()
- fun_l24_n901
-end
-
-def fun_l23_n379()
- fun_l24_n218
-end
-
-def fun_l23_n380()
- fun_l24_n733
-end
-
-def fun_l23_n381()
- fun_l24_n820
-end
-
-def fun_l23_n382()
- fun_l24_n229
-end
-
-def fun_l23_n383()
- fun_l24_n49
-end
-
-def fun_l23_n384()
- fun_l24_n469
-end
-
-def fun_l23_n385()
- fun_l24_n904
-end
-
-def fun_l23_n386()
- fun_l24_n652
-end
-
-def fun_l23_n387()
- fun_l24_n863
-end
-
-def fun_l23_n388()
- fun_l24_n356
-end
-
-def fun_l23_n389()
- fun_l24_n558
-end
-
-def fun_l23_n390()
- fun_l24_n263
-end
-
-def fun_l23_n391()
- fun_l24_n593
-end
-
-def fun_l23_n392()
- fun_l24_n882
-end
-
-def fun_l23_n393()
- fun_l24_n128
-end
-
-def fun_l23_n394()
- fun_l24_n855
-end
-
-def fun_l23_n395()
- fun_l24_n269
-end
-
-def fun_l23_n396()
- fun_l24_n858
-end
-
-def fun_l23_n397()
- fun_l24_n34
-end
-
-def fun_l23_n398()
- fun_l24_n447
-end
-
-def fun_l23_n399()
- fun_l24_n323
-end
-
-def fun_l23_n400()
- fun_l24_n624
-end
-
-def fun_l23_n401()
- fun_l24_n397
-end
-
-def fun_l23_n402()
- fun_l24_n755
-end
-
-def fun_l23_n403()
- fun_l24_n477
-end
-
-def fun_l23_n404()
- fun_l24_n396
-end
-
-def fun_l23_n405()
- fun_l24_n177
-end
-
-def fun_l23_n406()
- fun_l24_n964
-end
-
-def fun_l23_n407()
- fun_l24_n640
-end
-
-def fun_l23_n408()
- fun_l24_n82
-end
-
-def fun_l23_n409()
- fun_l24_n224
-end
-
-def fun_l23_n410()
- fun_l24_n750
-end
-
-def fun_l23_n411()
- fun_l24_n301
-end
-
-def fun_l23_n412()
- fun_l24_n32
-end
-
-def fun_l23_n413()
- fun_l24_n839
-end
-
-def fun_l23_n414()
- fun_l24_n724
-end
-
-def fun_l23_n415()
- fun_l24_n663
-end
-
-def fun_l23_n416()
- fun_l24_n682
-end
-
-def fun_l23_n417()
- fun_l24_n409
-end
-
-def fun_l23_n418()
- fun_l24_n769
-end
-
-def fun_l23_n419()
- fun_l24_n538
-end
-
-def fun_l23_n420()
- fun_l24_n558
-end
-
-def fun_l23_n421()
- fun_l24_n524
-end
-
-def fun_l23_n422()
- fun_l24_n464
-end
-
-def fun_l23_n423()
- fun_l24_n889
-end
-
-def fun_l23_n424()
- fun_l24_n656
-end
-
-def fun_l23_n425()
- fun_l24_n805
-end
-
-def fun_l23_n426()
- fun_l24_n428
-end
-
-def fun_l23_n427()
- fun_l24_n793
-end
-
-def fun_l23_n428()
- fun_l24_n192
-end
-
-def fun_l23_n429()
- fun_l24_n443
-end
-
-def fun_l23_n430()
- fun_l24_n481
-end
-
-def fun_l23_n431()
- fun_l24_n203
-end
-
-def fun_l23_n432()
- fun_l24_n607
-end
-
-def fun_l23_n433()
- fun_l24_n871
-end
-
-def fun_l23_n434()
- fun_l24_n436
-end
-
-def fun_l23_n435()
- fun_l24_n376
-end
-
-def fun_l23_n436()
- fun_l24_n936
-end
-
-def fun_l23_n437()
- fun_l24_n153
-end
-
-def fun_l23_n438()
- fun_l24_n994
-end
-
-def fun_l23_n439()
- fun_l24_n777
-end
-
-def fun_l23_n440()
- fun_l24_n341
-end
-
-def fun_l23_n441()
- fun_l24_n50
-end
-
-def fun_l23_n442()
- fun_l24_n1
-end
-
-def fun_l23_n443()
- fun_l24_n320
-end
-
-def fun_l23_n444()
- fun_l24_n116
-end
-
-def fun_l23_n445()
- fun_l24_n202
-end
-
-def fun_l23_n446()
- fun_l24_n433
-end
-
-def fun_l23_n447()
- fun_l24_n151
-end
-
-def fun_l23_n448()
- fun_l24_n581
-end
-
-def fun_l23_n449()
- fun_l24_n498
-end
-
-def fun_l23_n450()
- fun_l24_n575
-end
-
-def fun_l23_n451()
- fun_l24_n161
-end
-
-def fun_l23_n452()
- fun_l24_n78
-end
-
-def fun_l23_n453()
- fun_l24_n863
-end
-
-def fun_l23_n454()
- fun_l24_n269
-end
-
-def fun_l23_n455()
- fun_l24_n956
-end
-
-def fun_l23_n456()
- fun_l24_n485
-end
-
-def fun_l23_n457()
- fun_l24_n106
-end
-
-def fun_l23_n458()
- fun_l24_n641
-end
-
-def fun_l23_n459()
- fun_l24_n434
-end
-
-def fun_l23_n460()
- fun_l24_n308
-end
-
-def fun_l23_n461()
- fun_l24_n192
-end
-
-def fun_l23_n462()
- fun_l24_n401
-end
-
-def fun_l23_n463()
- fun_l24_n62
-end
-
-def fun_l23_n464()
- fun_l24_n38
-end
-
-def fun_l23_n465()
- fun_l24_n732
-end
-
-def fun_l23_n466()
- fun_l24_n143
-end
-
-def fun_l23_n467()
- fun_l24_n799
-end
-
-def fun_l23_n468()
- fun_l24_n486
-end
-
-def fun_l23_n469()
- fun_l24_n161
-end
-
-def fun_l23_n470()
- fun_l24_n838
-end
-
-def fun_l23_n471()
- fun_l24_n526
-end
-
-def fun_l23_n472()
- fun_l24_n421
-end
-
-def fun_l23_n473()
- fun_l24_n967
-end
-
-def fun_l23_n474()
- fun_l24_n822
-end
-
-def fun_l23_n475()
- fun_l24_n939
-end
-
-def fun_l23_n476()
- fun_l24_n36
-end
-
-def fun_l23_n477()
- fun_l24_n539
-end
-
-def fun_l23_n478()
- fun_l24_n759
-end
-
-def fun_l23_n479()
- fun_l24_n979
-end
-
-def fun_l23_n480()
- fun_l24_n685
-end
-
-def fun_l23_n481()
- fun_l24_n548
-end
-
-def fun_l23_n482()
- fun_l24_n348
-end
-
-def fun_l23_n483()
- fun_l24_n922
-end
-
-def fun_l23_n484()
- fun_l24_n185
-end
-
-def fun_l23_n485()
- fun_l24_n138
-end
-
-def fun_l23_n486()
- fun_l24_n678
-end
-
-def fun_l23_n487()
- fun_l24_n44
-end
-
-def fun_l23_n488()
- fun_l24_n820
-end
-
-def fun_l23_n489()
- fun_l24_n447
-end
-
-def fun_l23_n490()
- fun_l24_n455
-end
-
-def fun_l23_n491()
- fun_l24_n145
-end
-
-def fun_l23_n492()
- fun_l24_n441
-end
-
-def fun_l23_n493()
- fun_l24_n354
-end
-
-def fun_l23_n494()
- fun_l24_n324
-end
-
-def fun_l23_n495()
- fun_l24_n231
-end
-
-def fun_l23_n496()
- fun_l24_n775
-end
-
-def fun_l23_n497()
- fun_l24_n815
-end
-
-def fun_l23_n498()
- fun_l24_n491
-end
-
-def fun_l23_n499()
- fun_l24_n437
-end
-
-def fun_l23_n500()
- fun_l24_n112
-end
-
-def fun_l23_n501()
- fun_l24_n174
-end
-
-def fun_l23_n502()
- fun_l24_n683
-end
-
-def fun_l23_n503()
- fun_l24_n243
-end
-
-def fun_l23_n504()
- fun_l24_n236
-end
-
-def fun_l23_n505()
- fun_l24_n106
-end
-
-def fun_l23_n506()
- fun_l24_n781
-end
-
-def fun_l23_n507()
- fun_l24_n427
-end
-
-def fun_l23_n508()
- fun_l24_n410
-end
-
-def fun_l23_n509()
- fun_l24_n903
-end
-
-def fun_l23_n510()
- fun_l24_n40
-end
-
-def fun_l23_n511()
- fun_l24_n559
-end
-
-def fun_l23_n512()
- fun_l24_n152
-end
-
-def fun_l23_n513()
- fun_l24_n175
-end
-
-def fun_l23_n514()
- fun_l24_n305
-end
-
-def fun_l23_n515()
- fun_l24_n814
-end
-
-def fun_l23_n516()
- fun_l24_n676
-end
-
-def fun_l23_n517()
- fun_l24_n448
-end
-
-def fun_l23_n518()
- fun_l24_n573
-end
-
-def fun_l23_n519()
- fun_l24_n66
-end
-
-def fun_l23_n520()
- fun_l24_n893
-end
-
-def fun_l23_n521()
- fun_l24_n460
-end
-
-def fun_l23_n522()
- fun_l24_n238
-end
-
-def fun_l23_n523()
- fun_l24_n200
-end
-
-def fun_l23_n524()
- fun_l24_n61
-end
-
-def fun_l23_n525()
- fun_l24_n365
-end
-
-def fun_l23_n526()
- fun_l24_n360
-end
-
-def fun_l23_n527()
- fun_l24_n17
-end
-
-def fun_l23_n528()
- fun_l24_n594
-end
-
-def fun_l23_n529()
- fun_l24_n494
-end
-
-def fun_l23_n530()
- fun_l24_n188
-end
-
-def fun_l23_n531()
- fun_l24_n288
-end
-
-def fun_l23_n532()
- fun_l24_n348
-end
-
-def fun_l23_n533()
- fun_l24_n254
-end
-
-def fun_l23_n534()
- fun_l24_n457
-end
-
-def fun_l23_n535()
- fun_l24_n742
-end
-
-def fun_l23_n536()
- fun_l24_n28
-end
-
-def fun_l23_n537()
- fun_l24_n856
-end
-
-def fun_l23_n538()
- fun_l24_n345
-end
-
-def fun_l23_n539()
- fun_l24_n455
-end
-
-def fun_l23_n540()
- fun_l24_n39
-end
-
-def fun_l23_n541()
- fun_l24_n667
-end
-
-def fun_l23_n542()
- fun_l24_n555
-end
-
-def fun_l23_n543()
- fun_l24_n983
-end
-
-def fun_l23_n544()
- fun_l24_n71
-end
-
-def fun_l23_n545()
- fun_l24_n733
-end
-
-def fun_l23_n546()
- fun_l24_n889
-end
-
-def fun_l23_n547()
- fun_l24_n152
-end
-
-def fun_l23_n548()
- fun_l24_n998
-end
-
-def fun_l23_n549()
- fun_l24_n519
-end
-
-def fun_l23_n550()
- fun_l24_n723
-end
-
-def fun_l23_n551()
- fun_l24_n931
-end
-
-def fun_l23_n552()
- fun_l24_n866
-end
-
-def fun_l23_n553()
- fun_l24_n598
-end
-
-def fun_l23_n554()
- fun_l24_n522
-end
-
-def fun_l23_n555()
- fun_l24_n317
-end
-
-def fun_l23_n556()
- fun_l24_n712
-end
-
-def fun_l23_n557()
- fun_l24_n381
-end
-
-def fun_l23_n558()
- fun_l24_n167
-end
-
-def fun_l23_n559()
- fun_l24_n136
-end
-
-def fun_l23_n560()
- fun_l24_n136
-end
-
-def fun_l23_n561()
- fun_l24_n422
-end
-
-def fun_l23_n562()
- fun_l24_n75
-end
-
-def fun_l23_n563()
- fun_l24_n609
-end
-
-def fun_l23_n564()
- fun_l24_n324
-end
-
-def fun_l23_n565()
- fun_l24_n49
-end
-
-def fun_l23_n566()
- fun_l24_n312
-end
-
-def fun_l23_n567()
- fun_l24_n514
-end
-
-def fun_l23_n568()
- fun_l24_n773
-end
-
-def fun_l23_n569()
- fun_l24_n386
-end
-
-def fun_l23_n570()
- fun_l24_n688
-end
-
-def fun_l23_n571()
- fun_l24_n857
-end
-
-def fun_l23_n572()
- fun_l24_n821
-end
-
-def fun_l23_n573()
- fun_l24_n986
-end
-
-def fun_l23_n574()
- fun_l24_n785
-end
-
-def fun_l23_n575()
- fun_l24_n226
-end
-
-def fun_l23_n576()
- fun_l24_n527
-end
-
-def fun_l23_n577()
- fun_l24_n703
-end
-
-def fun_l23_n578()
- fun_l24_n908
-end
-
-def fun_l23_n579()
- fun_l24_n794
-end
-
-def fun_l23_n580()
- fun_l24_n521
-end
-
-def fun_l23_n581()
- fun_l24_n519
-end
-
-def fun_l23_n582()
- fun_l24_n474
-end
-
-def fun_l23_n583()
- fun_l24_n980
-end
-
-def fun_l23_n584()
- fun_l24_n564
-end
-
-def fun_l23_n585()
- fun_l24_n599
-end
-
-def fun_l23_n586()
- fun_l24_n730
-end
-
-def fun_l23_n587()
- fun_l24_n132
-end
-
-def fun_l23_n588()
- fun_l24_n54
-end
-
-def fun_l23_n589()
- fun_l24_n725
-end
-
-def fun_l23_n590()
- fun_l24_n24
-end
-
-def fun_l23_n591()
- fun_l24_n879
-end
-
-def fun_l23_n592()
- fun_l24_n857
-end
-
-def fun_l23_n593()
- fun_l24_n468
-end
-
-def fun_l23_n594()
- fun_l24_n299
-end
-
-def fun_l23_n595()
- fun_l24_n62
-end
-
-def fun_l23_n596()
- fun_l24_n415
-end
-
-def fun_l23_n597()
- fun_l24_n440
-end
-
-def fun_l23_n598()
- fun_l24_n550
-end
-
-def fun_l23_n599()
- fun_l24_n636
-end
-
-def fun_l23_n600()
- fun_l24_n905
-end
-
-def fun_l23_n601()
- fun_l24_n147
-end
-
-def fun_l23_n602()
- fun_l24_n882
-end
-
-def fun_l23_n603()
- fun_l24_n410
-end
-
-def fun_l23_n604()
- fun_l24_n963
-end
-
-def fun_l23_n605()
- fun_l24_n749
-end
-
-def fun_l23_n606()
- fun_l24_n318
-end
-
-def fun_l23_n607()
- fun_l24_n177
-end
-
-def fun_l23_n608()
- fun_l24_n138
-end
-
-def fun_l23_n609()
- fun_l24_n142
-end
-
-def fun_l23_n610()
- fun_l24_n671
-end
-
-def fun_l23_n611()
- fun_l24_n702
-end
-
-def fun_l23_n612()
- fun_l24_n715
-end
-
-def fun_l23_n613()
- fun_l24_n356
-end
-
-def fun_l23_n614()
- fun_l24_n719
-end
-
-def fun_l23_n615()
- fun_l24_n496
-end
-
-def fun_l23_n616()
- fun_l24_n131
-end
-
-def fun_l23_n617()
- fun_l24_n614
-end
-
-def fun_l23_n618()
- fun_l24_n508
-end
-
-def fun_l23_n619()
- fun_l24_n848
-end
-
-def fun_l23_n620()
- fun_l24_n119
-end
-
-def fun_l23_n621()
- fun_l24_n372
-end
-
-def fun_l23_n622()
- fun_l24_n672
-end
-
-def fun_l23_n623()
- fun_l24_n248
-end
-
-def fun_l23_n624()
- fun_l24_n425
-end
-
-def fun_l23_n625()
- fun_l24_n875
-end
-
-def fun_l23_n626()
- fun_l24_n371
-end
-
-def fun_l23_n627()
- fun_l24_n362
-end
-
-def fun_l23_n628()
- fun_l24_n139
-end
-
-def fun_l23_n629()
- fun_l24_n540
-end
-
-def fun_l23_n630()
- fun_l24_n979
-end
-
-def fun_l23_n631()
- fun_l24_n243
-end
-
-def fun_l23_n632()
- fun_l24_n799
-end
-
-def fun_l23_n633()
- fun_l24_n711
-end
-
-def fun_l23_n634()
- fun_l24_n834
-end
-
-def fun_l23_n635()
- fun_l24_n173
-end
-
-def fun_l23_n636()
- fun_l24_n465
-end
-
-def fun_l23_n637()
- fun_l24_n986
-end
-
-def fun_l23_n638()
- fun_l24_n24
-end
-
-def fun_l23_n639()
- fun_l24_n925
-end
-
-def fun_l23_n640()
- fun_l24_n829
-end
-
-def fun_l23_n641()
- fun_l24_n361
-end
-
-def fun_l23_n642()
- fun_l24_n884
-end
-
-def fun_l23_n643()
- fun_l24_n132
-end
-
-def fun_l23_n644()
- fun_l24_n277
-end
-
-def fun_l23_n645()
- fun_l24_n616
-end
-
-def fun_l23_n646()
- fun_l24_n122
-end
-
-def fun_l23_n647()
- fun_l24_n194
-end
-
-def fun_l23_n648()
- fun_l24_n678
-end
-
-def fun_l23_n649()
- fun_l24_n119
-end
-
-def fun_l23_n650()
- fun_l24_n430
-end
-
-def fun_l23_n651()
- fun_l24_n46
-end
-
-def fun_l23_n652()
- fun_l24_n653
-end
-
-def fun_l23_n653()
- fun_l24_n279
-end
-
-def fun_l23_n654()
- fun_l24_n943
-end
-
-def fun_l23_n655()
- fun_l24_n480
-end
-
-def fun_l23_n656()
- fun_l24_n81
-end
-
-def fun_l23_n657()
- fun_l24_n782
-end
-
-def fun_l23_n658()
- fun_l24_n986
-end
-
-def fun_l23_n659()
- fun_l24_n951
-end
-
-def fun_l23_n660()
- fun_l24_n918
-end
-
-def fun_l23_n661()
- fun_l24_n524
-end
-
-def fun_l23_n662()
- fun_l24_n949
-end
-
-def fun_l23_n663()
- fun_l24_n688
-end
-
-def fun_l23_n664()
- fun_l24_n606
-end
-
-def fun_l23_n665()
- fun_l24_n358
-end
-
-def fun_l23_n666()
- fun_l24_n948
-end
-
-def fun_l23_n667()
- fun_l24_n254
-end
-
-def fun_l23_n668()
- fun_l24_n410
-end
-
-def fun_l23_n669()
- fun_l24_n612
-end
-
-def fun_l23_n670()
- fun_l24_n693
-end
-
-def fun_l23_n671()
- fun_l24_n454
-end
-
-def fun_l23_n672()
- fun_l24_n182
-end
-
-def fun_l23_n673()
- fun_l24_n556
-end
-
-def fun_l23_n674()
- fun_l24_n994
-end
-
-def fun_l23_n675()
- fun_l24_n927
-end
-
-def fun_l23_n676()
- fun_l24_n624
-end
-
-def fun_l23_n677()
- fun_l24_n149
-end
-
-def fun_l23_n678()
- fun_l24_n561
-end
-
-def fun_l23_n679()
- fun_l24_n250
-end
-
-def fun_l23_n680()
- fun_l24_n69
-end
-
-def fun_l23_n681()
- fun_l24_n599
-end
-
-def fun_l23_n682()
- fun_l24_n145
-end
-
-def fun_l23_n683()
- fun_l24_n785
-end
-
-def fun_l23_n684()
- fun_l24_n181
-end
-
-def fun_l23_n685()
- fun_l24_n646
-end
-
-def fun_l23_n686()
- fun_l24_n109
-end
-
-def fun_l23_n687()
- fun_l24_n316
-end
-
-def fun_l23_n688()
- fun_l24_n816
-end
-
-def fun_l23_n689()
- fun_l24_n302
-end
-
-def fun_l23_n690()
- fun_l24_n976
-end
-
-def fun_l23_n691()
- fun_l24_n508
-end
-
-def fun_l23_n692()
- fun_l24_n158
-end
-
-def fun_l23_n693()
- fun_l24_n110
-end
-
-def fun_l23_n694()
- fun_l24_n581
-end
-
-def fun_l23_n695()
- fun_l24_n375
-end
-
-def fun_l23_n696()
- fun_l24_n121
-end
-
-def fun_l23_n697()
- fun_l24_n920
-end
-
-def fun_l23_n698()
- fun_l24_n827
-end
-
-def fun_l23_n699()
- fun_l24_n757
-end
-
-def fun_l23_n700()
- fun_l24_n932
-end
-
-def fun_l23_n701()
- fun_l24_n249
-end
-
-def fun_l23_n702()
- fun_l24_n375
-end
-
-def fun_l23_n703()
- fun_l24_n976
-end
-
-def fun_l23_n704()
- fun_l24_n903
-end
-
-def fun_l23_n705()
- fun_l24_n326
-end
-
-def fun_l23_n706()
- fun_l24_n732
-end
-
-def fun_l23_n707()
- fun_l24_n150
-end
-
-def fun_l23_n708()
- fun_l24_n849
-end
-
-def fun_l23_n709()
- fun_l24_n341
-end
-
-def fun_l23_n710()
- fun_l24_n194
-end
-
-def fun_l23_n711()
- fun_l24_n773
-end
-
-def fun_l23_n712()
- fun_l24_n665
-end
-
-def fun_l23_n713()
- fun_l24_n467
-end
-
-def fun_l23_n714()
- fun_l24_n554
-end
-
-def fun_l23_n715()
- fun_l24_n160
-end
-
-def fun_l23_n716()
- fun_l24_n65
-end
-
-def fun_l23_n717()
- fun_l24_n155
-end
-
-def fun_l23_n718()
- fun_l24_n930
-end
-
-def fun_l23_n719()
- fun_l24_n13
-end
-
-def fun_l23_n720()
- fun_l24_n756
-end
-
-def fun_l23_n721()
- fun_l24_n174
-end
-
-def fun_l23_n722()
- fun_l24_n675
-end
-
-def fun_l23_n723()
- fun_l24_n847
-end
-
-def fun_l23_n724()
- fun_l24_n277
-end
-
-def fun_l23_n725()
- fun_l24_n580
-end
-
-def fun_l23_n726()
- fun_l24_n65
-end
-
-def fun_l23_n727()
- fun_l24_n507
-end
-
-def fun_l23_n728()
- fun_l24_n325
-end
-
-def fun_l23_n729()
- fun_l24_n642
-end
-
-def fun_l23_n730()
- fun_l24_n607
-end
-
-def fun_l23_n731()
- fun_l24_n683
-end
-
-def fun_l23_n732()
- fun_l24_n139
-end
-
-def fun_l23_n733()
- fun_l24_n719
-end
-
-def fun_l23_n734()
- fun_l24_n768
-end
-
-def fun_l23_n735()
- fun_l24_n927
-end
-
-def fun_l23_n736()
- fun_l24_n346
-end
-
-def fun_l23_n737()
- fun_l24_n457
-end
-
-def fun_l23_n738()
- fun_l24_n347
-end
-
-def fun_l23_n739()
- fun_l24_n26
-end
-
-def fun_l23_n740()
- fun_l24_n696
-end
-
-def fun_l23_n741()
- fun_l24_n177
-end
-
-def fun_l23_n742()
- fun_l24_n414
-end
-
-def fun_l23_n743()
- fun_l24_n937
-end
-
-def fun_l23_n744()
- fun_l24_n576
-end
-
-def fun_l23_n745()
- fun_l24_n560
-end
-
-def fun_l23_n746()
- fun_l24_n398
-end
-
-def fun_l23_n747()
- fun_l24_n476
-end
-
-def fun_l23_n748()
- fun_l24_n758
-end
-
-def fun_l23_n749()
- fun_l24_n955
-end
-
-def fun_l23_n750()
- fun_l24_n130
-end
-
-def fun_l23_n751()
- fun_l24_n673
-end
-
-def fun_l23_n752()
- fun_l24_n269
-end
-
-def fun_l23_n753()
- fun_l24_n917
-end
-
-def fun_l23_n754()
- fun_l24_n738
-end
-
-def fun_l23_n755()
- fun_l24_n238
-end
-
-def fun_l23_n756()
- fun_l24_n910
-end
-
-def fun_l23_n757()
- fun_l24_n912
-end
-
-def fun_l23_n758()
- fun_l24_n288
-end
-
-def fun_l23_n759()
- fun_l24_n206
-end
-
-def fun_l23_n760()
- fun_l24_n519
-end
-
-def fun_l23_n761()
- fun_l24_n365
-end
-
-def fun_l23_n762()
- fun_l24_n493
-end
-
-def fun_l23_n763()
- fun_l24_n222
-end
-
-def fun_l23_n764()
- fun_l24_n933
-end
-
-def fun_l23_n765()
- fun_l24_n164
-end
-
-def fun_l23_n766()
- fun_l24_n606
-end
-
-def fun_l23_n767()
- fun_l24_n494
-end
-
-def fun_l23_n768()
- fun_l24_n869
-end
-
-def fun_l23_n769()
- fun_l24_n339
-end
-
-def fun_l23_n770()
- fun_l24_n55
-end
-
-def fun_l23_n771()
- fun_l24_n149
-end
-
-def fun_l23_n772()
- fun_l24_n926
-end
-
-def fun_l23_n773()
- fun_l24_n884
-end
-
-def fun_l23_n774()
- fun_l24_n599
-end
-
-def fun_l23_n775()
- fun_l24_n74
-end
-
-def fun_l23_n776()
- fun_l24_n633
-end
-
-def fun_l23_n777()
- fun_l24_n859
-end
-
-def fun_l23_n778()
- fun_l24_n895
-end
-
-def fun_l23_n779()
- fun_l24_n559
-end
-
-def fun_l23_n780()
- fun_l24_n712
-end
-
-def fun_l23_n781()
- fun_l24_n275
-end
-
-def fun_l23_n782()
- fun_l24_n485
-end
-
-def fun_l23_n783()
- fun_l24_n958
-end
-
-def fun_l23_n784()
- fun_l24_n905
-end
-
-def fun_l23_n785()
- fun_l24_n761
-end
-
-def fun_l23_n786()
- fun_l24_n869
-end
-
-def fun_l23_n787()
- fun_l24_n542
-end
-
-def fun_l23_n788()
- fun_l24_n676
-end
-
-def fun_l23_n789()
- fun_l24_n708
-end
-
-def fun_l23_n790()
- fun_l24_n298
-end
-
-def fun_l23_n791()
- fun_l24_n362
-end
-
-def fun_l23_n792()
- fun_l24_n938
-end
-
-def fun_l23_n793()
- fun_l24_n414
-end
-
-def fun_l23_n794()
- fun_l24_n376
-end
-
-def fun_l23_n795()
- fun_l24_n530
-end
-
-def fun_l23_n796()
- fun_l24_n1
-end
-
-def fun_l23_n797()
- fun_l24_n333
-end
-
-def fun_l23_n798()
- fun_l24_n750
-end
-
-def fun_l23_n799()
- fun_l24_n254
-end
-
-def fun_l23_n800()
- fun_l24_n278
-end
-
-def fun_l23_n801()
- fun_l24_n314
-end
-
-def fun_l23_n802()
- fun_l24_n275
-end
-
-def fun_l23_n803()
- fun_l24_n848
-end
-
-def fun_l23_n804()
- fun_l24_n883
-end
-
-def fun_l23_n805()
- fun_l24_n483
-end
-
-def fun_l23_n806()
- fun_l24_n706
-end
-
-def fun_l23_n807()
- fun_l24_n622
-end
-
-def fun_l23_n808()
- fun_l24_n551
-end
-
-def fun_l23_n809()
- fun_l24_n680
-end
-
-def fun_l23_n810()
- fun_l24_n426
-end
-
-def fun_l23_n811()
- fun_l24_n418
-end
-
-def fun_l23_n812()
- fun_l24_n163
-end
-
-def fun_l23_n813()
- fun_l24_n309
-end
-
-def fun_l23_n814()
- fun_l24_n308
-end
-
-def fun_l23_n815()
- fun_l24_n992
-end
-
-def fun_l23_n816()
- fun_l24_n863
-end
-
-def fun_l23_n817()
- fun_l24_n58
-end
-
-def fun_l23_n818()
- fun_l24_n995
-end
-
-def fun_l23_n819()
- fun_l24_n158
-end
-
-def fun_l23_n820()
- fun_l24_n568
-end
-
-def fun_l23_n821()
- fun_l24_n595
-end
-
-def fun_l23_n822()
- fun_l24_n121
-end
-
-def fun_l23_n823()
- fun_l24_n395
-end
-
-def fun_l23_n824()
- fun_l24_n322
-end
-
-def fun_l23_n825()
- fun_l24_n178
-end
-
-def fun_l23_n826()
- fun_l24_n470
-end
-
-def fun_l23_n827()
- fun_l24_n243
-end
-
-def fun_l23_n828()
- fun_l24_n970
-end
-
-def fun_l23_n829()
- fun_l24_n41
-end
-
-def fun_l23_n830()
- fun_l24_n468
-end
-
-def fun_l23_n831()
- fun_l24_n457
-end
-
-def fun_l23_n832()
- fun_l24_n104
-end
-
-def fun_l23_n833()
- fun_l24_n735
-end
-
-def fun_l23_n834()
- fun_l24_n935
-end
-
-def fun_l23_n835()
- fun_l24_n693
-end
-
-def fun_l23_n836()
- fun_l24_n937
-end
-
-def fun_l23_n837()
- fun_l24_n720
-end
-
-def fun_l23_n838()
- fun_l24_n969
-end
-
-def fun_l23_n839()
- fun_l24_n251
-end
-
-def fun_l23_n840()
- fun_l24_n120
-end
-
-def fun_l23_n841()
- fun_l24_n24
-end
-
-def fun_l23_n842()
- fun_l24_n692
-end
-
-def fun_l23_n843()
- fun_l24_n663
-end
-
-def fun_l23_n844()
- fun_l24_n84
-end
-
-def fun_l23_n845()
- fun_l24_n612
-end
-
-def fun_l23_n846()
- fun_l24_n169
-end
-
-def fun_l23_n847()
- fun_l24_n708
-end
-
-def fun_l23_n848()
- fun_l24_n825
-end
-
-def fun_l23_n849()
- fun_l24_n821
-end
-
-def fun_l23_n850()
- fun_l24_n593
-end
-
-def fun_l23_n851()
- fun_l24_n788
-end
-
-def fun_l23_n852()
- fun_l24_n757
-end
-
-def fun_l23_n853()
- fun_l24_n104
-end
-
-def fun_l23_n854()
- fun_l24_n370
-end
-
-def fun_l23_n855()
- fun_l24_n925
-end
-
-def fun_l23_n856()
- fun_l24_n312
-end
-
-def fun_l23_n857()
- fun_l24_n262
-end
-
-def fun_l23_n858()
- fun_l24_n459
-end
-
-def fun_l23_n859()
- fun_l24_n296
-end
-
-def fun_l23_n860()
- fun_l24_n37
-end
-
-def fun_l23_n861()
- fun_l24_n865
-end
-
-def fun_l23_n862()
- fun_l24_n435
-end
-
-def fun_l23_n863()
- fun_l24_n6
-end
-
-def fun_l23_n864()
- fun_l24_n589
-end
-
-def fun_l23_n865()
- fun_l24_n247
-end
-
-def fun_l23_n866()
- fun_l24_n889
-end
-
-def fun_l23_n867()
- fun_l24_n461
-end
-
-def fun_l23_n868()
- fun_l24_n949
-end
-
-def fun_l23_n869()
- fun_l24_n951
-end
-
-def fun_l23_n870()
- fun_l24_n214
-end
-
-def fun_l23_n871()
- fun_l24_n44
-end
-
-def fun_l23_n872()
- fun_l24_n241
-end
-
-def fun_l23_n873()
- fun_l24_n643
-end
-
-def fun_l23_n874()
- fun_l24_n918
-end
-
-def fun_l23_n875()
- fun_l24_n940
-end
-
-def fun_l23_n876()
- fun_l24_n642
-end
-
-def fun_l23_n877()
- fun_l24_n859
-end
-
-def fun_l23_n878()
- fun_l24_n535
-end
-
-def fun_l23_n879()
- fun_l24_n956
-end
-
-def fun_l23_n880()
- fun_l24_n212
-end
-
-def fun_l23_n881()
- fun_l24_n691
-end
-
-def fun_l23_n882()
- fun_l24_n306
-end
-
-def fun_l23_n883()
- fun_l24_n769
-end
-
-def fun_l23_n884()
- fun_l24_n194
-end
-
-def fun_l23_n885()
- fun_l24_n46
-end
-
-def fun_l23_n886()
- fun_l24_n409
-end
-
-def fun_l23_n887()
- fun_l24_n799
-end
-
-def fun_l23_n888()
- fun_l24_n367
-end
-
-def fun_l23_n889()
- fun_l24_n454
-end
-
-def fun_l23_n890()
- fun_l24_n405
-end
-
-def fun_l23_n891()
- fun_l24_n547
-end
-
-def fun_l23_n892()
- fun_l24_n998
-end
-
-def fun_l23_n893()
- fun_l24_n942
-end
-
-def fun_l23_n894()
- fun_l24_n937
-end
-
-def fun_l23_n895()
- fun_l24_n33
-end
-
-def fun_l23_n896()
- fun_l24_n354
-end
-
-def fun_l23_n897()
- fun_l24_n1
-end
-
-def fun_l23_n898()
- fun_l24_n142
-end
-
-def fun_l23_n899()
- fun_l24_n514
-end
-
-def fun_l23_n900()
- fun_l24_n869
-end
-
-def fun_l23_n901()
- fun_l24_n126
-end
-
-def fun_l23_n902()
- fun_l24_n713
-end
-
-def fun_l23_n903()
- fun_l24_n568
-end
-
-def fun_l23_n904()
- fun_l24_n433
-end
-
-def fun_l23_n905()
- fun_l24_n864
-end
-
-def fun_l23_n906()
- fun_l24_n129
-end
-
-def fun_l23_n907()
- fun_l24_n255
-end
-
-def fun_l23_n908()
- fun_l24_n896
-end
-
-def fun_l23_n909()
- fun_l24_n997
-end
-
-def fun_l23_n910()
- fun_l24_n849
-end
-
-def fun_l23_n911()
- fun_l24_n120
-end
-
-def fun_l23_n912()
- fun_l24_n165
-end
-
-def fun_l23_n913()
- fun_l24_n637
-end
-
-def fun_l23_n914()
- fun_l24_n624
-end
-
-def fun_l23_n915()
- fun_l24_n120
-end
-
-def fun_l23_n916()
- fun_l24_n637
-end
-
-def fun_l23_n917()
- fun_l24_n863
-end
-
-def fun_l23_n918()
- fun_l24_n202
-end
-
-def fun_l23_n919()
- fun_l24_n844
-end
-
-def fun_l23_n920()
- fun_l24_n226
-end
-
-def fun_l23_n921()
- fun_l24_n726
-end
-
-def fun_l23_n922()
- fun_l24_n277
-end
-
-def fun_l23_n923()
- fun_l24_n375
-end
-
-def fun_l23_n924()
- fun_l24_n601
-end
-
-def fun_l23_n925()
- fun_l24_n118
-end
-
-def fun_l23_n926()
- fun_l24_n661
-end
-
-def fun_l23_n927()
- fun_l24_n360
-end
-
-def fun_l23_n928()
- fun_l24_n627
-end
-
-def fun_l23_n929()
- fun_l24_n238
-end
-
-def fun_l23_n930()
- fun_l24_n372
-end
-
-def fun_l23_n931()
- fun_l24_n768
-end
-
-def fun_l23_n932()
- fun_l24_n848
-end
-
-def fun_l23_n933()
- fun_l24_n540
-end
-
-def fun_l23_n934()
- fun_l24_n848
-end
-
-def fun_l23_n935()
- fun_l24_n688
-end
-
-def fun_l23_n936()
- fun_l24_n9
-end
-
-def fun_l23_n937()
- fun_l24_n362
-end
-
-def fun_l23_n938()
- fun_l24_n151
-end
-
-def fun_l23_n939()
- fun_l24_n79
-end
-
-def fun_l23_n940()
- fun_l24_n673
-end
-
-def fun_l23_n941()
- fun_l24_n575
-end
-
-def fun_l23_n942()
- fun_l24_n368
-end
-
-def fun_l23_n943()
- fun_l24_n264
-end
-
-def fun_l23_n944()
- fun_l24_n502
-end
-
-def fun_l23_n945()
- fun_l24_n483
-end
-
-def fun_l23_n946()
- fun_l24_n623
-end
-
-def fun_l23_n947()
- fun_l24_n445
-end
-
-def fun_l23_n948()
- fun_l24_n560
-end
-
-def fun_l23_n949()
- fun_l24_n152
-end
-
-def fun_l23_n950()
- fun_l24_n211
-end
-
-def fun_l23_n951()
- fun_l24_n777
-end
-
-def fun_l23_n952()
- fun_l24_n623
-end
-
-def fun_l23_n953()
- fun_l24_n410
-end
-
-def fun_l23_n954()
- fun_l24_n456
-end
-
-def fun_l23_n955()
- fun_l24_n35
-end
-
-def fun_l23_n956()
- fun_l24_n134
-end
-
-def fun_l23_n957()
- fun_l24_n768
-end
-
-def fun_l23_n958()
- fun_l24_n827
-end
-
-def fun_l23_n959()
- fun_l24_n8
-end
-
-def fun_l23_n960()
- fun_l24_n339
-end
-
-def fun_l23_n961()
- fun_l24_n580
-end
-
-def fun_l23_n962()
- fun_l24_n570
-end
-
-def fun_l23_n963()
- fun_l24_n308
-end
-
-def fun_l23_n964()
- fun_l24_n531
-end
-
-def fun_l23_n965()
- fun_l24_n378
-end
-
-def fun_l23_n966()
- fun_l24_n632
-end
-
-def fun_l23_n967()
- fun_l24_n465
-end
-
-def fun_l23_n968()
- fun_l24_n318
-end
-
-def fun_l23_n969()
- fun_l24_n36
-end
-
-def fun_l23_n970()
- fun_l24_n408
-end
-
-def fun_l23_n971()
- fun_l24_n225
-end
-
-def fun_l23_n972()
- fun_l24_n105
-end
-
-def fun_l23_n973()
- fun_l24_n736
-end
-
-def fun_l23_n974()
- fun_l24_n735
-end
-
-def fun_l23_n975()
- fun_l24_n811
-end
-
-def fun_l23_n976()
- fun_l24_n495
-end
-
-def fun_l23_n977()
- fun_l24_n563
-end
-
-def fun_l23_n978()
- fun_l24_n511
-end
-
-def fun_l23_n979()
- fun_l24_n158
-end
-
-def fun_l23_n980()
- fun_l24_n222
-end
-
-def fun_l23_n981()
- fun_l24_n568
-end
-
-def fun_l23_n982()
- fun_l24_n936
-end
-
-def fun_l23_n983()
- fun_l24_n932
-end
-
-def fun_l23_n984()
- fun_l24_n872
-end
-
-def fun_l23_n985()
- fun_l24_n70
-end
-
-def fun_l23_n986()
- fun_l24_n602
-end
-
-def fun_l23_n987()
- fun_l24_n364
-end
-
-def fun_l23_n988()
- fun_l24_n904
-end
-
-def fun_l23_n989()
- fun_l24_n98
-end
-
-def fun_l23_n990()
- fun_l24_n907
-end
-
-def fun_l23_n991()
- fun_l24_n435
-end
-
-def fun_l23_n992()
- fun_l24_n24
-end
-
-def fun_l23_n993()
- fun_l24_n790
-end
-
-def fun_l23_n994()
- fun_l24_n249
-end
-
-def fun_l23_n995()
- fun_l24_n12
-end
-
-def fun_l23_n996()
- fun_l24_n956
-end
-
-def fun_l23_n997()
- fun_l24_n539
-end
-
-def fun_l23_n998()
- fun_l24_n935
-end
-
-def fun_l23_n999()
- fun_l24_n964
-end
-
-def fun_l24_n0()
- fun_l25_n193
-end
-
-def fun_l24_n1()
- fun_l25_n802
-end
-
-def fun_l24_n2()
- fun_l25_n936
-end
-
-def fun_l24_n3()
- fun_l25_n672
-end
-
-def fun_l24_n4()
- fun_l25_n506
-end
-
-def fun_l24_n5()
- fun_l25_n598
-end
-
-def fun_l24_n6()
- fun_l25_n368
-end
-
-def fun_l24_n7()
- fun_l25_n4
-end
-
-def fun_l24_n8()
- fun_l25_n396
-end
-
-def fun_l24_n9()
- fun_l25_n772
-end
-
-def fun_l24_n10()
- fun_l25_n986
-end
-
-def fun_l24_n11()
- fun_l25_n182
-end
-
-def fun_l24_n12()
- fun_l25_n663
-end
-
-def fun_l24_n13()
- fun_l25_n460
-end
-
-def fun_l24_n14()
- fun_l25_n78
-end
-
-def fun_l24_n15()
- fun_l25_n590
-end
-
-def fun_l24_n16()
- fun_l25_n205
-end
-
-def fun_l24_n17()
- fun_l25_n848
-end
-
-def fun_l24_n18()
- fun_l25_n270
-end
-
-def fun_l24_n19()
- fun_l25_n491
-end
-
-def fun_l24_n20()
- fun_l25_n740
-end
-
-def fun_l24_n21()
- fun_l25_n800
-end
-
-def fun_l24_n22()
- fun_l25_n859
-end
-
-def fun_l24_n23()
- fun_l25_n300
-end
-
-def fun_l24_n24()
- fun_l25_n705
-end
-
-def fun_l24_n25()
- fun_l25_n917
-end
-
-def fun_l24_n26()
- fun_l25_n890
-end
-
-def fun_l24_n27()
- fun_l25_n700
-end
-
-def fun_l24_n28()
- fun_l25_n448
-end
-
-def fun_l24_n29()
- fun_l25_n774
-end
-
-def fun_l24_n30()
- fun_l25_n13
-end
-
-def fun_l24_n31()
- fun_l25_n427
-end
-
-def fun_l24_n32()
- fun_l25_n159
-end
-
-def fun_l24_n33()
- fun_l25_n180
-end
-
-def fun_l24_n34()
- fun_l25_n721
-end
-
-def fun_l24_n35()
- fun_l25_n539
-end
-
-def fun_l24_n36()
- fun_l25_n808
-end
-
-def fun_l24_n37()
- fun_l25_n123
-end
-
-def fun_l24_n38()
- fun_l25_n428
-end
-
-def fun_l24_n39()
- fun_l25_n678
-end
-
-def fun_l24_n40()
- fun_l25_n821
-end
-
-def fun_l24_n41()
- fun_l25_n170
-end
-
-def fun_l24_n42()
- fun_l25_n115
-end
-
-def fun_l24_n43()
- fun_l25_n72
-end
-
-def fun_l24_n44()
- fun_l25_n280
-end
-
-def fun_l24_n45()
- fun_l25_n950
-end
-
-def fun_l24_n46()
- fun_l25_n572
-end
-
-def fun_l24_n47()
- fun_l25_n125
-end
-
-def fun_l24_n48()
- fun_l25_n607
-end
-
-def fun_l24_n49()
- fun_l25_n704
-end
-
-def fun_l24_n50()
- fun_l25_n125
-end
-
-def fun_l24_n51()
- fun_l25_n179
-end
-
-def fun_l24_n52()
- fun_l25_n77
-end
-
-def fun_l24_n53()
- fun_l25_n247
-end
-
-def fun_l24_n54()
- fun_l25_n828
-end
-
-def fun_l24_n55()
- fun_l25_n461
-end
-
-def fun_l24_n56()
- fun_l25_n686
-end
-
-def fun_l24_n57()
- fun_l25_n222
-end
-
-def fun_l24_n58()
- fun_l25_n394
-end
-
-def fun_l24_n59()
- fun_l25_n535
-end
-
-def fun_l24_n60()
- fun_l25_n199
-end
-
-def fun_l24_n61()
- fun_l25_n543
-end
-
-def fun_l24_n62()
- fun_l25_n304
-end
-
-def fun_l24_n63()
- fun_l25_n520
-end
-
-def fun_l24_n64()
- fun_l25_n167
-end
-
-def fun_l24_n65()
- fun_l25_n604
-end
-
-def fun_l24_n66()
- fun_l25_n685
-end
-
-def fun_l24_n67()
- fun_l25_n134
-end
-
-def fun_l24_n68()
- fun_l25_n913
-end
-
-def fun_l24_n69()
- fun_l25_n899
-end
-
-def fun_l24_n70()
- fun_l25_n872
-end
-
-def fun_l24_n71()
- fun_l25_n466
-end
-
-def fun_l24_n72()
- fun_l25_n352
-end
-
-def fun_l24_n73()
- fun_l25_n624
-end
-
-def fun_l24_n74()
- fun_l25_n464
-end
-
-def fun_l24_n75()
- fun_l25_n513
-end
-
-def fun_l24_n76()
- fun_l25_n310
-end
-
-def fun_l24_n77()
- fun_l25_n129
-end
-
-def fun_l24_n78()
- fun_l25_n770
-end
-
-def fun_l24_n79()
- fun_l25_n96
-end
-
-def fun_l24_n80()
- fun_l25_n519
-end
-
-def fun_l24_n81()
- fun_l25_n495
-end
-
-def fun_l24_n82()
- fun_l25_n789
-end
-
-def fun_l24_n83()
- fun_l25_n676
-end
-
-def fun_l24_n84()
- fun_l25_n877
-end
-
-def fun_l24_n85()
- fun_l25_n17
-end
-
-def fun_l24_n86()
- fun_l25_n428
-end
-
-def fun_l24_n87()
- fun_l25_n282
-end
-
-def fun_l24_n88()
- fun_l25_n313
-end
-
-def fun_l24_n89()
- fun_l25_n638
-end
-
-def fun_l24_n90()
- fun_l25_n543
-end
-
-def fun_l24_n91()
- fun_l25_n63
-end
-
-def fun_l24_n92()
- fun_l25_n398
-end
-
-def fun_l24_n93()
- fun_l25_n726
-end
-
-def fun_l24_n94()
- fun_l25_n645
-end
-
-def fun_l24_n95()
- fun_l25_n163
-end
-
-def fun_l24_n96()
- fun_l25_n228
-end
-
-def fun_l24_n97()
- fun_l25_n346
-end
-
-def fun_l24_n98()
- fun_l25_n56
-end
-
-def fun_l24_n99()
- fun_l25_n258
-end
-
-def fun_l24_n100()
- fun_l25_n730
-end
-
-def fun_l24_n101()
- fun_l25_n216
-end
-
-def fun_l24_n102()
- fun_l25_n370
-end
-
-def fun_l24_n103()
- fun_l25_n17
-end
-
-def fun_l24_n104()
- fun_l25_n892
-end
-
-def fun_l24_n105()
- fun_l25_n977
-end
-
-def fun_l24_n106()
- fun_l25_n285
-end
-
-def fun_l24_n107()
- fun_l25_n922
-end
-
-def fun_l24_n108()
- fun_l25_n62
-end
-
-def fun_l24_n109()
- fun_l25_n103
-end
-
-def fun_l24_n110()
- fun_l25_n644
-end
-
-def fun_l24_n111()
- fun_l25_n467
-end
-
-def fun_l24_n112()
- fun_l25_n543
-end
-
-def fun_l24_n113()
- fun_l25_n180
-end
-
-def fun_l24_n114()
- fun_l25_n186
-end
-
-def fun_l24_n115()
- fun_l25_n685
-end
-
-def fun_l24_n116()
- fun_l25_n754
-end
-
-def fun_l24_n117()
- fun_l25_n842
-end
-
-def fun_l24_n118()
- fun_l25_n759
-end
-
-def fun_l24_n119()
- fun_l25_n372
-end
-
-def fun_l24_n120()
- fun_l25_n874
-end
-
-def fun_l24_n121()
- fun_l25_n332
-end
-
-def fun_l24_n122()
- fun_l25_n91
-end
-
-def fun_l24_n123()
- fun_l25_n229
-end
-
-def fun_l24_n124()
- fun_l25_n485
-end
-
-def fun_l24_n125()
- fun_l25_n322
-end
-
-def fun_l24_n126()
- fun_l25_n750
-end
-
-def fun_l24_n127()
- fun_l25_n466
-end
-
-def fun_l24_n128()
- fun_l25_n936
-end
-
-def fun_l24_n129()
- fun_l25_n172
-end
-
-def fun_l24_n130()
- fun_l25_n389
-end
-
-def fun_l24_n131()
- fun_l25_n789
-end
-
-def fun_l24_n132()
- fun_l25_n165
-end
-
-def fun_l24_n133()
- fun_l25_n756
-end
-
-def fun_l24_n134()
- fun_l25_n1
-end
-
-def fun_l24_n135()
- fun_l25_n362
-end
-
-def fun_l24_n136()
- fun_l25_n323
-end
-
-def fun_l24_n137()
- fun_l25_n656
-end
-
-def fun_l24_n138()
- fun_l25_n463
-end
-
-def fun_l24_n139()
- fun_l25_n392
-end
-
-def fun_l24_n140()
- fun_l25_n43
-end
-
-def fun_l24_n141()
- fun_l25_n788
-end
-
-def fun_l24_n142()
- fun_l25_n212
-end
-
-def fun_l24_n143()
- fun_l25_n597
-end
-
-def fun_l24_n144()
- fun_l25_n885
-end
-
-def fun_l24_n145()
- fun_l25_n470
-end
-
-def fun_l24_n146()
- fun_l25_n945
-end
-
-def fun_l24_n147()
- fun_l25_n884
-end
-
-def fun_l24_n148()
- fun_l25_n492
-end
-
-def fun_l24_n149()
- fun_l25_n466
-end
-
-def fun_l24_n150()
- fun_l25_n548
-end
-
-def fun_l24_n151()
- fun_l25_n574
-end
-
-def fun_l24_n152()
- fun_l25_n920
-end
-
-def fun_l24_n153()
- fun_l25_n530
-end
-
-def fun_l24_n154()
- fun_l25_n90
-end
-
-def fun_l24_n155()
- fun_l25_n531
-end
-
-def fun_l24_n156()
- fun_l25_n848
-end
-
-def fun_l24_n157()
- fun_l25_n116
-end
-
-def fun_l24_n158()
- fun_l25_n25
-end
-
-def fun_l24_n159()
- fun_l25_n432
-end
-
-def fun_l24_n160()
- fun_l25_n978
-end
-
-def fun_l24_n161()
- fun_l25_n383
-end
-
-def fun_l24_n162()
- fun_l25_n678
-end
-
-def fun_l24_n163()
- fun_l25_n785
-end
-
-def fun_l24_n164()
- fun_l25_n504
-end
-
-def fun_l24_n165()
- fun_l25_n682
-end
-
-def fun_l24_n166()
- fun_l25_n649
-end
-
-def fun_l24_n167()
- fun_l25_n498
-end
-
-def fun_l24_n168()
- fun_l25_n805
-end
-
-def fun_l24_n169()
- fun_l25_n215
-end
-
-def fun_l24_n170()
- fun_l25_n444
-end
-
-def fun_l24_n171()
- fun_l25_n585
-end
-
-def fun_l24_n172()
- fun_l25_n22
-end
-
-def fun_l24_n173()
- fun_l25_n214
-end
-
-def fun_l24_n174()
- fun_l25_n942
-end
-
-def fun_l24_n175()
- fun_l25_n763
-end
-
-def fun_l24_n176()
- fun_l25_n852
-end
-
-def fun_l24_n177()
- fun_l25_n591
-end
-
-def fun_l24_n178()
- fun_l25_n498
-end
-
-def fun_l24_n179()
- fun_l25_n111
-end
-
-def fun_l24_n180()
- fun_l25_n286
-end
-
-def fun_l24_n181()
- fun_l25_n808
-end
-
-def fun_l24_n182()
- fun_l25_n402
-end
-
-def fun_l24_n183()
- fun_l25_n222
-end
-
-def fun_l24_n184()
- fun_l25_n646
-end
-
-def fun_l24_n185()
- fun_l25_n550
-end
-
-def fun_l24_n186()
- fun_l25_n284
-end
-
-def fun_l24_n187()
- fun_l25_n832
-end
-
-def fun_l24_n188()
- fun_l25_n554
-end
-
-def fun_l24_n189()
- fun_l25_n982
-end
-
-def fun_l24_n190()
- fun_l25_n10
-end
-
-def fun_l24_n191()
- fun_l25_n843
-end
-
-def fun_l24_n192()
- fun_l25_n126
-end
-
-def fun_l24_n193()
- fun_l25_n332
-end
-
-def fun_l24_n194()
- fun_l25_n145
-end
-
-def fun_l24_n195()
- fun_l25_n657
-end
-
-def fun_l24_n196()
- fun_l25_n636
-end
-
-def fun_l24_n197()
- fun_l25_n875
-end
-
-def fun_l24_n198()
- fun_l25_n160
-end
-
-def fun_l24_n199()
- fun_l25_n682
-end
-
-def fun_l24_n200()
- fun_l25_n556
-end
-
-def fun_l24_n201()
- fun_l25_n154
-end
-
-def fun_l24_n202()
- fun_l25_n105
-end
-
-def fun_l24_n203()
- fun_l25_n958
-end
-
-def fun_l24_n204()
- fun_l25_n998
-end
-
-def fun_l24_n205()
- fun_l25_n356
-end
-
-def fun_l24_n206()
- fun_l25_n531
-end
-
-def fun_l24_n207()
- fun_l25_n62
-end
-
-def fun_l24_n208()
- fun_l25_n320
-end
-
-def fun_l24_n209()
- fun_l25_n725
-end
-
-def fun_l24_n210()
- fun_l25_n790
-end
-
-def fun_l24_n211()
- fun_l25_n740
-end
-
-def fun_l24_n212()
- fun_l25_n73
-end
-
-def fun_l24_n213()
- fun_l25_n949
-end
-
-def fun_l24_n214()
- fun_l25_n526
-end
-
-def fun_l24_n215()
- fun_l25_n881
-end
-
-def fun_l24_n216()
- fun_l25_n43
-end
-
-def fun_l24_n217()
- fun_l25_n284
-end
-
-def fun_l24_n218()
- fun_l25_n252
-end
-
-def fun_l24_n219()
- fun_l25_n973
-end
-
-def fun_l24_n220()
- fun_l25_n264
-end
-
-def fun_l24_n221()
- fun_l25_n55
-end
-
-def fun_l24_n222()
- fun_l25_n731
-end
-
-def fun_l24_n223()
- fun_l25_n274
-end
-
-def fun_l24_n224()
- fun_l25_n748
-end
-
-def fun_l24_n225()
- fun_l25_n990
-end
-
-def fun_l24_n226()
- fun_l25_n243
-end
-
-def fun_l24_n227()
- fun_l25_n607
-end
-
-def fun_l24_n228()
- fun_l25_n352
-end
-
-def fun_l24_n229()
- fun_l25_n238
-end
-
-def fun_l24_n230()
- fun_l25_n252
-end
-
-def fun_l24_n231()
- fun_l25_n534
-end
-
-def fun_l24_n232()
- fun_l25_n330
-end
-
-def fun_l24_n233()
- fun_l25_n915
-end
-
-def fun_l24_n234()
- fun_l25_n106
-end
-
-def fun_l24_n235()
- fun_l25_n59
-end
-
-def fun_l24_n236()
- fun_l25_n829
-end
-
-def fun_l24_n237()
- fun_l25_n563
-end
-
-def fun_l24_n238()
- fun_l25_n334
-end
-
-def fun_l24_n239()
- fun_l25_n828
-end
-
-def fun_l24_n240()
- fun_l25_n530
-end
-
-def fun_l24_n241()
- fun_l25_n831
-end
-
-def fun_l24_n242()
- fun_l25_n922
-end
-
-def fun_l24_n243()
- fun_l25_n822
-end
-
-def fun_l24_n244()
- fun_l25_n369
-end
-
-def fun_l24_n245()
- fun_l25_n977
-end
-
-def fun_l24_n246()
- fun_l25_n797
-end
-
-def fun_l24_n247()
- fun_l25_n883
-end
-
-def fun_l24_n248()
- fun_l25_n964
-end
-
-def fun_l24_n249()
- fun_l25_n490
-end
-
-def fun_l24_n250()
- fun_l25_n903
-end
-
-def fun_l24_n251()
- fun_l25_n154
-end
-
-def fun_l24_n252()
- fun_l25_n74
-end
-
-def fun_l24_n253()
- fun_l25_n955
-end
-
-def fun_l24_n254()
- fun_l25_n709
-end
-
-def fun_l24_n255()
- fun_l25_n154
-end
-
-def fun_l24_n256()
- fun_l25_n940
-end
-
-def fun_l24_n257()
- fun_l25_n33
-end
-
-def fun_l24_n258()
- fun_l25_n450
-end
-
-def fun_l24_n259()
- fun_l25_n592
-end
-
-def fun_l24_n260()
- fun_l25_n430
-end
-
-def fun_l24_n261()
- fun_l25_n650
-end
-
-def fun_l24_n262()
- fun_l25_n891
-end
-
-def fun_l24_n263()
- fun_l25_n803
-end
-
-def fun_l24_n264()
- fun_l25_n622
-end
-
-def fun_l24_n265()
- fun_l25_n401
-end
-
-def fun_l24_n266()
- fun_l25_n493
-end
-
-def fun_l24_n267()
- fun_l25_n240
-end
-
-def fun_l24_n268()
- fun_l25_n654
-end
-
-def fun_l24_n269()
- fun_l25_n839
-end
-
-def fun_l24_n270()
- fun_l25_n889
-end
-
-def fun_l24_n271()
- fun_l25_n770
-end
-
-def fun_l24_n272()
- fun_l25_n860
-end
-
-def fun_l24_n273()
- fun_l25_n634
-end
-
-def fun_l24_n274()
- fun_l25_n365
-end
-
-def fun_l24_n275()
- fun_l25_n321
-end
-
-def fun_l24_n276()
- fun_l25_n628
-end
-
-def fun_l24_n277()
- fun_l25_n669
-end
-
-def fun_l24_n278()
- fun_l25_n815
-end
-
-def fun_l24_n279()
- fun_l25_n647
-end
-
-def fun_l24_n280()
- fun_l25_n920
-end
-
-def fun_l24_n281()
- fun_l25_n620
-end
-
-def fun_l24_n282()
- fun_l25_n609
-end
-
-def fun_l24_n283()
- fun_l25_n45
-end
-
-def fun_l24_n284()
- fun_l25_n632
-end
-
-def fun_l24_n285()
- fun_l25_n961
-end
-
-def fun_l24_n286()
- fun_l25_n261
-end
-
-def fun_l24_n287()
- fun_l25_n348
-end
-
-def fun_l24_n288()
- fun_l25_n687
-end
-
-def fun_l24_n289()
- fun_l25_n359
-end
-
-def fun_l24_n290()
- fun_l25_n306
-end
-
-def fun_l24_n291()
- fun_l25_n487
-end
-
-def fun_l24_n292()
- fun_l25_n59
-end
-
-def fun_l24_n293()
- fun_l25_n353
-end
-
-def fun_l24_n294()
- fun_l25_n553
-end
-
-def fun_l24_n295()
- fun_l25_n704
-end
-
-def fun_l24_n296()
- fun_l25_n691
-end
-
-def fun_l24_n297()
- fun_l25_n332
-end
-
-def fun_l24_n298()
- fun_l25_n665
-end
-
-def fun_l24_n299()
- fun_l25_n407
-end
-
-def fun_l24_n300()
- fun_l25_n182
-end
-
-def fun_l24_n301()
- fun_l25_n716
-end
-
-def fun_l24_n302()
- fun_l25_n55
-end
-
-def fun_l24_n303()
- fun_l25_n946
-end
-
-def fun_l24_n304()
- fun_l25_n448
-end
-
-def fun_l24_n305()
- fun_l25_n959
-end
-
-def fun_l24_n306()
- fun_l25_n23
-end
-
-def fun_l24_n307()
- fun_l25_n327
-end
-
-def fun_l24_n308()
- fun_l25_n317
-end
-
-def fun_l24_n309()
- fun_l25_n2
-end
-
-def fun_l24_n310()
- fun_l25_n168
-end
-
-def fun_l24_n311()
- fun_l25_n171
-end
-
-def fun_l24_n312()
- fun_l25_n138
-end
-
-def fun_l24_n313()
- fun_l25_n974
-end
-
-def fun_l24_n314()
- fun_l25_n981
-end
-
-def fun_l24_n315()
- fun_l25_n382
-end
-
-def fun_l24_n316()
- fun_l25_n590
-end
-
-def fun_l24_n317()
- fun_l25_n613
-end
-
-def fun_l24_n318()
- fun_l25_n119
-end
-
-def fun_l24_n319()
- fun_l25_n431
-end
-
-def fun_l24_n320()
- fun_l25_n595
-end
-
-def fun_l24_n321()
- fun_l25_n406
-end
-
-def fun_l24_n322()
- fun_l25_n771
-end
-
-def fun_l24_n323()
- fun_l25_n693
-end
-
-def fun_l24_n324()
- fun_l25_n442
-end
-
-def fun_l24_n325()
- fun_l25_n164
-end
-
-def fun_l24_n326()
- fun_l25_n630
-end
-
-def fun_l24_n327()
- fun_l25_n31
-end
-
-def fun_l24_n328()
- fun_l25_n422
-end
-
-def fun_l24_n329()
- fun_l25_n204
-end
-
-def fun_l24_n330()
- fun_l25_n304
-end
-
-def fun_l24_n331()
- fun_l25_n398
-end
-
-def fun_l24_n332()
- fun_l25_n903
-end
-
-def fun_l24_n333()
- fun_l25_n841
-end
-
-def fun_l24_n334()
- fun_l25_n662
-end
-
-def fun_l24_n335()
- fun_l25_n247
-end
-
-def fun_l24_n336()
- fun_l25_n348
-end
-
-def fun_l24_n337()
- fun_l25_n378
-end
-
-def fun_l24_n338()
- fun_l25_n197
-end
-
-def fun_l24_n339()
- fun_l25_n897
-end
-
-def fun_l24_n340()
- fun_l25_n792
-end
-
-def fun_l24_n341()
- fun_l25_n655
-end
-
-def fun_l24_n342()
- fun_l25_n352
-end
-
-def fun_l24_n343()
- fun_l25_n853
-end
-
-def fun_l24_n344()
- fun_l25_n202
-end
-
-def fun_l24_n345()
- fun_l25_n420
-end
-
-def fun_l24_n346()
- fun_l25_n146
-end
-
-def fun_l24_n347()
- fun_l25_n766
-end
-
-def fun_l24_n348()
- fun_l25_n245
-end
-
-def fun_l24_n349()
- fun_l25_n772
-end
-
-def fun_l24_n350()
- fun_l25_n789
-end
-
-def fun_l24_n351()
- fun_l25_n180
-end
-
-def fun_l24_n352()
- fun_l25_n982
-end
-
-def fun_l24_n353()
- fun_l25_n837
-end
-
-def fun_l24_n354()
- fun_l25_n515
-end
-
-def fun_l24_n355()
- fun_l25_n688
-end
-
-def fun_l24_n356()
- fun_l25_n85
-end
-
-def fun_l24_n357()
- fun_l25_n918
-end
-
-def fun_l24_n358()
- fun_l25_n104
-end
-
-def fun_l24_n359()
- fun_l25_n797
-end
-
-def fun_l24_n360()
- fun_l25_n488
-end
-
-def fun_l24_n361()
- fun_l25_n970
-end
-
-def fun_l24_n362()
- fun_l25_n82
-end
-
-def fun_l24_n363()
- fun_l25_n815
-end
-
-def fun_l24_n364()
- fun_l25_n81
-end
-
-def fun_l24_n365()
- fun_l25_n70
-end
-
-def fun_l24_n366()
- fun_l25_n686
-end
-
-def fun_l24_n367()
- fun_l25_n8
-end
-
-def fun_l24_n368()
- fun_l25_n835
-end
-
-def fun_l24_n369()
- fun_l25_n473
-end
-
-def fun_l24_n370()
- fun_l25_n637
-end
-
-def fun_l24_n371()
- fun_l25_n314
-end
-
-def fun_l24_n372()
- fun_l25_n857
-end
-
-def fun_l24_n373()
- fun_l25_n496
-end
-
-def fun_l24_n374()
- fun_l25_n182
-end
-
-def fun_l24_n375()
- fun_l25_n730
-end
-
-def fun_l24_n376()
- fun_l25_n370
-end
-
-def fun_l24_n377()
- fun_l25_n289
-end
-
-def fun_l24_n378()
- fun_l25_n12
-end
-
-def fun_l24_n379()
- fun_l25_n73
-end
-
-def fun_l24_n380()
- fun_l25_n514
-end
-
-def fun_l24_n381()
- fun_l25_n947
-end
-
-def fun_l24_n382()
- fun_l25_n368
-end
-
-def fun_l24_n383()
- fun_l25_n997
-end
-
-def fun_l24_n384()
- fun_l25_n542
-end
-
-def fun_l24_n385()
- fun_l25_n564
-end
-
-def fun_l24_n386()
- fun_l25_n213
-end
-
-def fun_l24_n387()
- fun_l25_n748
-end
-
-def fun_l24_n388()
- fun_l25_n147
-end
-
-def fun_l24_n389()
- fun_l25_n437
-end
-
-def fun_l24_n390()
- fun_l25_n844
-end
-
-def fun_l24_n391()
- fun_l25_n747
-end
-
-def fun_l24_n392()
- fun_l25_n68
-end
-
-def fun_l24_n393()
- fun_l25_n746
-end
-
-def fun_l24_n394()
- fun_l25_n816
-end
-
-def fun_l24_n395()
- fun_l25_n865
-end
-
-def fun_l24_n396()
- fun_l25_n235
-end
-
-def fun_l24_n397()
- fun_l25_n961
-end
-
-def fun_l24_n398()
- fun_l25_n8
-end
-
-def fun_l24_n399()
- fun_l25_n741
-end
-
-def fun_l24_n400()
- fun_l25_n639
-end
-
-def fun_l24_n401()
- fun_l25_n419
-end
-
-def fun_l24_n402()
- fun_l25_n381
-end
-
-def fun_l24_n403()
- fun_l25_n674
-end
-
-def fun_l24_n404()
- fun_l25_n238
-end
-
-def fun_l24_n405()
- fun_l25_n75
-end
-
-def fun_l24_n406()
- fun_l25_n10
-end
-
-def fun_l24_n407()
- fun_l25_n672
-end
-
-def fun_l24_n408()
- fun_l25_n154
-end
-
-def fun_l24_n409()
- fun_l25_n844
-end
-
-def fun_l24_n410()
- fun_l25_n578
-end
-
-def fun_l24_n411()
- fun_l25_n535
-end
-
-def fun_l24_n412()
- fun_l25_n742
-end
-
-def fun_l24_n413()
- fun_l25_n587
-end
-
-def fun_l24_n414()
- fun_l25_n967
-end
-
-def fun_l24_n415()
- fun_l25_n290
-end
-
-def fun_l24_n416()
- fun_l25_n958
-end
-
-def fun_l24_n417()
- fun_l25_n19
-end
-
-def fun_l24_n418()
- fun_l25_n983
-end
-
-def fun_l24_n419()
- fun_l25_n206
-end
-
-def fun_l24_n420()
- fun_l25_n317
-end
-
-def fun_l24_n421()
- fun_l25_n847
-end
-
-def fun_l24_n422()
- fun_l25_n409
-end
-
-def fun_l24_n423()
- fun_l25_n584
-end
-
-def fun_l24_n424()
- fun_l25_n667
-end
-
-def fun_l24_n425()
- fun_l25_n559
-end
-
-def fun_l24_n426()
- fun_l25_n503
-end
-
-def fun_l24_n427()
- fun_l25_n775
-end
-
-def fun_l24_n428()
- fun_l25_n828
-end
-
-def fun_l24_n429()
- fun_l25_n375
-end
-
-def fun_l24_n430()
- fun_l25_n342
-end
-
-def fun_l24_n431()
- fun_l25_n382
-end
-
-def fun_l24_n432()
- fun_l25_n978
-end
-
-def fun_l24_n433()
- fun_l25_n290
-end
-
-def fun_l24_n434()
- fun_l25_n367
-end
-
-def fun_l24_n435()
- fun_l25_n485
-end
-
-def fun_l24_n436()
- fun_l25_n299
-end
-
-def fun_l24_n437()
- fun_l25_n343
-end
-
-def fun_l24_n438()
- fun_l25_n620
-end
-
-def fun_l24_n439()
- fun_l25_n627
-end
-
-def fun_l24_n440()
- fun_l25_n955
-end
-
-def fun_l24_n441()
- fun_l25_n330
-end
-
-def fun_l24_n442()
- fun_l25_n37
-end
-
-def fun_l24_n443()
- fun_l25_n437
-end
-
-def fun_l24_n444()
- fun_l25_n879
-end
-
-def fun_l24_n445()
- fun_l25_n532
-end
-
-def fun_l24_n446()
- fun_l25_n701
-end
-
-def fun_l24_n447()
- fun_l25_n936
-end
-
-def fun_l24_n448()
- fun_l25_n503
-end
-
-def fun_l24_n449()
- fun_l25_n275
-end
-
-def fun_l24_n450()
- fun_l25_n77
-end
-
-def fun_l24_n451()
- fun_l25_n265
-end
-
-def fun_l24_n452()
- fun_l25_n727
-end
-
-def fun_l24_n453()
- fun_l25_n547
-end
-
-def fun_l24_n454()
- fun_l25_n796
-end
-
-def fun_l24_n455()
- fun_l25_n18
-end
-
-def fun_l24_n456()
- fun_l25_n328
-end
-
-def fun_l24_n457()
- fun_l25_n672
-end
-
-def fun_l24_n458()
- fun_l25_n803
-end
-
-def fun_l24_n459()
- fun_l25_n590
-end
-
-def fun_l24_n460()
- fun_l25_n798
-end
-
-def fun_l24_n461()
- fun_l25_n823
-end
-
-def fun_l24_n462()
- fun_l25_n258
-end
-
-def fun_l24_n463()
- fun_l25_n569
-end
-
-def fun_l24_n464()
- fun_l25_n541
-end
-
-def fun_l24_n465()
- fun_l25_n313
-end
-
-def fun_l24_n466()
- fun_l25_n994
-end
-
-def fun_l24_n467()
- fun_l25_n925
-end
-
-def fun_l24_n468()
- fun_l25_n277
-end
-
-def fun_l24_n469()
- fun_l25_n862
-end
-
-def fun_l24_n470()
- fun_l25_n241
-end
-
-def fun_l24_n471()
- fun_l25_n203
-end
-
-def fun_l24_n472()
- fun_l25_n950
-end
-
-def fun_l24_n473()
- fun_l25_n774
-end
-
-def fun_l24_n474()
- fun_l25_n699
-end
-
-def fun_l24_n475()
- fun_l25_n415
-end
-
-def fun_l24_n476()
- fun_l25_n100
-end
-
-def fun_l24_n477()
- fun_l25_n97
-end
-
-def fun_l24_n478()
- fun_l25_n439
-end
-
-def fun_l24_n479()
- fun_l25_n276
-end
-
-def fun_l24_n480()
- fun_l25_n761
-end
-
-def fun_l24_n481()
- fun_l25_n980
-end
-
-def fun_l24_n482()
- fun_l25_n927
-end
-
-def fun_l24_n483()
- fun_l25_n276
-end
-
-def fun_l24_n484()
- fun_l25_n402
-end
-
-def fun_l24_n485()
- fun_l25_n169
-end
-
-def fun_l24_n486()
- fun_l25_n928
-end
-
-def fun_l24_n487()
- fun_l25_n931
-end
-
-def fun_l24_n488()
- fun_l25_n807
-end
-
-def fun_l24_n489()
- fun_l25_n258
-end
-
-def fun_l24_n490()
- fun_l25_n385
-end
-
-def fun_l24_n491()
- fun_l25_n846
-end
-
-def fun_l24_n492()
- fun_l25_n872
-end
-
-def fun_l24_n493()
- fun_l25_n169
-end
-
-def fun_l24_n494()
- fun_l25_n77
-end
-
-def fun_l24_n495()
- fun_l25_n775
-end
-
-def fun_l24_n496()
- fun_l25_n744
-end
-
-def fun_l24_n497()
- fun_l25_n666
-end
-
-def fun_l24_n498()
- fun_l25_n607
-end
-
-def fun_l24_n499()
- fun_l25_n603
-end
-
-def fun_l24_n500()
- fun_l25_n821
-end
-
-def fun_l24_n501()
- fun_l25_n83
-end
-
-def fun_l24_n502()
- fun_l25_n331
-end
-
-def fun_l24_n503()
- fun_l25_n20
-end
-
-def fun_l24_n504()
- fun_l25_n115
-end
-
-def fun_l24_n505()
- fun_l25_n437
-end
-
-def fun_l24_n506()
- fun_l25_n679
-end
-
-def fun_l24_n507()
- fun_l25_n424
-end
-
-def fun_l24_n508()
- fun_l25_n745
-end
-
-def fun_l24_n509()
- fun_l25_n389
-end
-
-def fun_l24_n510()
- fun_l25_n762
-end
-
-def fun_l24_n511()
- fun_l25_n289
-end
-
-def fun_l24_n512()
- fun_l25_n944
-end
-
-def fun_l24_n513()
- fun_l25_n601
-end
-
-def fun_l24_n514()
- fun_l25_n660
-end
-
-def fun_l24_n515()
- fun_l25_n975
-end
-
-def fun_l24_n516()
- fun_l25_n815
-end
-
-def fun_l24_n517()
- fun_l25_n208
-end
-
-def fun_l24_n518()
- fun_l25_n736
-end
-
-def fun_l24_n519()
- fun_l25_n189
-end
-
-def fun_l24_n520()
- fun_l25_n490
-end
-
-def fun_l24_n521()
- fun_l25_n452
-end
-
-def fun_l24_n522()
- fun_l25_n96
-end
-
-def fun_l24_n523()
- fun_l25_n772
-end
-
-def fun_l24_n524()
- fun_l25_n930
-end
-
-def fun_l24_n525()
- fun_l25_n322
-end
-
-def fun_l24_n526()
- fun_l25_n419
-end
-
-def fun_l24_n527()
- fun_l25_n997
-end
-
-def fun_l24_n528()
- fun_l25_n475
-end
-
-def fun_l24_n529()
- fun_l25_n511
-end
-
-def fun_l24_n530()
- fun_l25_n909
-end
-
-def fun_l24_n531()
- fun_l25_n33
-end
-
-def fun_l24_n532()
- fun_l25_n923
-end
-
-def fun_l24_n533()
- fun_l25_n201
-end
-
-def fun_l24_n534()
- fun_l25_n444
-end
-
-def fun_l24_n535()
- fun_l25_n327
-end
-
-def fun_l24_n536()
- fun_l25_n982
-end
-
-def fun_l24_n537()
- fun_l25_n969
-end
-
-def fun_l24_n538()
- fun_l25_n514
-end
-
-def fun_l24_n539()
- fun_l25_n707
-end
-
-def fun_l24_n540()
- fun_l25_n571
-end
-
-def fun_l24_n541()
- fun_l25_n407
-end
-
-def fun_l24_n542()
- fun_l25_n848
-end
-
-def fun_l24_n543()
- fun_l25_n457
-end
-
-def fun_l24_n544()
- fun_l25_n374
-end
-
-def fun_l24_n545()
- fun_l25_n875
-end
-
-def fun_l24_n546()
- fun_l25_n166
-end
-
-def fun_l24_n547()
- fun_l25_n951
-end
-
-def fun_l24_n548()
- fun_l25_n213
-end
-
-def fun_l24_n549()
- fun_l25_n148
-end
-
-def fun_l24_n550()
- fun_l25_n479
-end
-
-def fun_l24_n551()
- fun_l25_n130
-end
-
-def fun_l24_n552()
- fun_l25_n823
-end
-
-def fun_l24_n553()
- fun_l25_n507
-end
-
-def fun_l24_n554()
- fun_l25_n227
-end
-
-def fun_l24_n555()
- fun_l25_n811
-end
-
-def fun_l24_n556()
- fun_l25_n203
-end
-
-def fun_l24_n557()
- fun_l25_n626
-end
-
-def fun_l24_n558()
- fun_l25_n965
-end
-
-def fun_l24_n559()
- fun_l25_n871
-end
-
-def fun_l24_n560()
- fun_l25_n752
-end
-
-def fun_l24_n561()
- fun_l25_n89
-end
-
-def fun_l24_n562()
- fun_l25_n970
-end
-
-def fun_l24_n563()
- fun_l25_n956
-end
-
-def fun_l24_n564()
- fun_l25_n871
-end
-
-def fun_l24_n565()
- fun_l25_n610
-end
-
-def fun_l24_n566()
- fun_l25_n43
-end
-
-def fun_l24_n567()
- fun_l25_n176
-end
-
-def fun_l24_n568()
- fun_l25_n10
-end
-
-def fun_l24_n569()
- fun_l25_n798
-end
-
-def fun_l24_n570()
- fun_l25_n141
-end
-
-def fun_l24_n571()
- fun_l25_n205
-end
-
-def fun_l24_n572()
- fun_l25_n870
-end
-
-def fun_l24_n573()
- fun_l25_n324
-end
-
-def fun_l24_n574()
- fun_l25_n765
-end
-
-def fun_l24_n575()
- fun_l25_n775
-end
-
-def fun_l24_n576()
- fun_l25_n232
-end
-
-def fun_l24_n577()
- fun_l25_n36
-end
-
-def fun_l24_n578()
- fun_l25_n260
-end
-
-def fun_l24_n579()
- fun_l25_n84
-end
-
-def fun_l24_n580()
- fun_l25_n279
-end
-
-def fun_l24_n581()
- fun_l25_n292
-end
-
-def fun_l24_n582()
- fun_l25_n472
-end
-
-def fun_l24_n583()
- fun_l25_n630
-end
-
-def fun_l24_n584()
- fun_l25_n695
-end
-
-def fun_l24_n585()
- fun_l25_n974
-end
-
-def fun_l24_n586()
- fun_l25_n263
-end
-
-def fun_l24_n587()
- fun_l25_n959
-end
-
-def fun_l24_n588()
- fun_l25_n76
-end
-
-def fun_l24_n589()
- fun_l25_n897
-end
-
-def fun_l24_n590()
- fun_l25_n416
-end
-
-def fun_l24_n591()
- fun_l25_n225
-end
-
-def fun_l24_n592()
- fun_l25_n194
-end
-
-def fun_l24_n593()
- fun_l25_n338
-end
-
-def fun_l24_n594()
- fun_l25_n565
-end
-
-def fun_l24_n595()
- fun_l25_n301
-end
-
-def fun_l24_n596()
- fun_l25_n101
-end
-
-def fun_l24_n597()
- fun_l25_n876
-end
-
-def fun_l24_n598()
- fun_l25_n127
-end
-
-def fun_l24_n599()
- fun_l25_n608
-end
-
-def fun_l24_n600()
- fun_l25_n45
-end
-
-def fun_l24_n601()
- fun_l25_n833
-end
-
-def fun_l24_n602()
- fun_l25_n43
-end
-
-def fun_l24_n603()
- fun_l25_n136
-end
-
-def fun_l24_n604()
- fun_l25_n916
-end
-
-def fun_l24_n605()
- fun_l25_n686
-end
-
-def fun_l24_n606()
- fun_l25_n574
-end
-
-def fun_l24_n607()
- fun_l25_n164
-end
-
-def fun_l24_n608()
- fun_l25_n983
-end
-
-def fun_l24_n609()
- fun_l25_n883
-end
-
-def fun_l24_n610()
- fun_l25_n957
-end
-
-def fun_l24_n611()
- fun_l25_n592
-end
-
-def fun_l24_n612()
- fun_l25_n684
-end
-
-def fun_l24_n613()
- fun_l25_n333
-end
-
-def fun_l24_n614()
- fun_l25_n465
-end
-
-def fun_l24_n615()
- fun_l25_n297
-end
-
-def fun_l24_n616()
- fun_l25_n738
-end
-
-def fun_l24_n617()
- fun_l25_n953
-end
-
-def fun_l24_n618()
- fun_l25_n27
-end
-
-def fun_l24_n619()
- fun_l25_n577
-end
-
-def fun_l24_n620()
- fun_l25_n595
-end
-
-def fun_l24_n621()
- fun_l25_n408
-end
-
-def fun_l24_n622()
- fun_l25_n161
-end
-
-def fun_l24_n623()
- fun_l25_n263
-end
-
-def fun_l24_n624()
- fun_l25_n557
-end
-
-def fun_l24_n625()
- fun_l25_n708
-end
-
-def fun_l24_n626()
- fun_l25_n879
-end
-
-def fun_l24_n627()
- fun_l25_n235
-end
-
-def fun_l24_n628()
- fun_l25_n551
-end
-
-def fun_l24_n629()
- fun_l25_n46
-end
-
-def fun_l24_n630()
- fun_l25_n718
-end
-
-def fun_l24_n631()
- fun_l25_n419
-end
-
-def fun_l24_n632()
- fun_l25_n370
-end
-
-def fun_l24_n633()
- fun_l25_n322
-end
-
-def fun_l24_n634()
- fun_l25_n912
-end
-
-def fun_l24_n635()
- fun_l25_n445
-end
-
-def fun_l24_n636()
- fun_l25_n850
-end
-
-def fun_l24_n637()
- fun_l25_n233
-end
-
-def fun_l24_n638()
- fun_l25_n230
-end
-
-def fun_l24_n639()
- fun_l25_n188
-end
-
-def fun_l24_n640()
- fun_l25_n267
-end
-
-def fun_l24_n641()
- fun_l25_n840
-end
-
-def fun_l24_n642()
- fun_l25_n786
-end
-
-def fun_l24_n643()
- fun_l25_n737
-end
-
-def fun_l24_n644()
- fun_l25_n725
-end
-
-def fun_l24_n645()
- fun_l25_n200
-end
-
-def fun_l24_n646()
- fun_l25_n173
-end
-
-def fun_l24_n647()
- fun_l25_n50
-end
-
-def fun_l24_n648()
- fun_l25_n460
-end
-
-def fun_l24_n649()
- fun_l25_n959
-end
-
-def fun_l24_n650()
- fun_l25_n397
-end
-
-def fun_l24_n651()
- fun_l25_n108
-end
-
-def fun_l24_n652()
- fun_l25_n426
-end
-
-def fun_l24_n653()
- fun_l25_n208
-end
-
-def fun_l24_n654()
- fun_l25_n989
-end
-
-def fun_l24_n655()
- fun_l25_n73
-end
-
-def fun_l24_n656()
- fun_l25_n710
-end
-
-def fun_l24_n657()
- fun_l25_n707
-end
-
-def fun_l24_n658()
- fun_l25_n276
-end
-
-def fun_l24_n659()
- fun_l25_n920
-end
-
-def fun_l24_n660()
- fun_l25_n735
-end
-
-def fun_l24_n661()
- fun_l25_n937
-end
-
-def fun_l24_n662()
- fun_l25_n544
-end
-
-def fun_l24_n663()
- fun_l25_n663
-end
-
-def fun_l24_n664()
- fun_l25_n571
-end
-
-def fun_l24_n665()
- fun_l25_n682
-end
-
-def fun_l24_n666()
- fun_l25_n79
-end
-
-def fun_l24_n667()
- fun_l25_n759
-end
-
-def fun_l24_n668()
- fun_l25_n128
-end
-
-def fun_l24_n669()
- fun_l25_n895
-end
-
-def fun_l24_n670()
- fun_l25_n258
-end
-
-def fun_l24_n671()
- fun_l25_n12
-end
-
-def fun_l24_n672()
- fun_l25_n397
-end
-
-def fun_l24_n673()
- fun_l25_n967
-end
-
-def fun_l24_n674()
- fun_l25_n960
-end
-
-def fun_l24_n675()
- fun_l25_n867
-end
-
-def fun_l24_n676()
- fun_l25_n438
-end
-
-def fun_l24_n677()
- fun_l25_n692
-end
-
-def fun_l24_n678()
- fun_l25_n161
-end
-
-def fun_l24_n679()
- fun_l25_n122
-end
-
-def fun_l24_n680()
- fun_l25_n344
-end
-
-def fun_l24_n681()
- fun_l25_n285
-end
-
-def fun_l24_n682()
- fun_l25_n838
-end
-
-def fun_l24_n683()
- fun_l25_n80
-end
-
-def fun_l24_n684()
- fun_l25_n81
-end
-
-def fun_l24_n685()
- fun_l25_n811
-end
-
-def fun_l24_n686()
- fun_l25_n998
-end
-
-def fun_l24_n687()
- fun_l25_n739
-end
-
-def fun_l24_n688()
- fun_l25_n660
-end
-
-def fun_l24_n689()
- fun_l25_n965
-end
-
-def fun_l24_n690()
- fun_l25_n124
-end
-
-def fun_l24_n691()
- fun_l25_n879
-end
-
-def fun_l24_n692()
- fun_l25_n669
-end
-
-def fun_l24_n693()
- fun_l25_n428
-end
-
-def fun_l24_n694()
- fun_l25_n143
-end
-
-def fun_l24_n695()
- fun_l25_n103
-end
-
-def fun_l24_n696()
- fun_l25_n738
-end
-
-def fun_l24_n697()
- fun_l25_n188
-end
-
-def fun_l24_n698()
- fun_l25_n657
-end
-
-def fun_l24_n699()
- fun_l25_n258
-end
-
-def fun_l24_n700()
- fun_l25_n878
-end
-
-def fun_l24_n701()
- fun_l25_n927
-end
-
-def fun_l24_n702()
- fun_l25_n9
-end
-
-def fun_l24_n703()
- fun_l25_n41
-end
-
-def fun_l24_n704()
- fun_l25_n925
-end
-
-def fun_l24_n705()
- fun_l25_n473
-end
-
-def fun_l24_n706()
- fun_l25_n321
-end
-
-def fun_l24_n707()
- fun_l25_n778
-end
-
-def fun_l24_n708()
- fun_l25_n951
-end
-
-def fun_l24_n709()
- fun_l25_n91
-end
-
-def fun_l24_n710()
- fun_l25_n297
-end
-
-def fun_l24_n711()
- fun_l25_n185
-end
-
-def fun_l24_n712()
- fun_l25_n822
-end
-
-def fun_l24_n713()
- fun_l25_n817
-end
-
-def fun_l24_n714()
- fun_l25_n558
-end
-
-def fun_l24_n715()
- fun_l25_n15
-end
-
-def fun_l24_n716()
- fun_l25_n106
-end
-
-def fun_l24_n717()
- fun_l25_n173
-end
-
-def fun_l24_n718()
- fun_l25_n565
-end
-
-def fun_l24_n719()
- fun_l25_n832
-end
-
-def fun_l24_n720()
- fun_l25_n798
-end
-
-def fun_l24_n721()
- fun_l25_n333
-end
-
-def fun_l24_n722()
- fun_l25_n631
-end
-
-def fun_l24_n723()
- fun_l25_n135
-end
-
-def fun_l24_n724()
- fun_l25_n826
-end
-
-def fun_l24_n725()
- fun_l25_n878
-end
-
-def fun_l24_n726()
- fun_l25_n612
-end
-
-def fun_l24_n727()
- fun_l25_n302
-end
-
-def fun_l24_n728()
- fun_l25_n636
-end
-
-def fun_l24_n729()
- fun_l25_n308
-end
-
-def fun_l24_n730()
- fun_l25_n633
-end
-
-def fun_l24_n731()
- fun_l25_n596
-end
-
-def fun_l24_n732()
- fun_l25_n948
-end
-
-def fun_l24_n733()
- fun_l25_n93
-end
-
-def fun_l24_n734()
- fun_l25_n175
-end
-
-def fun_l24_n735()
- fun_l25_n590
-end
-
-def fun_l24_n736()
- fun_l25_n168
-end
-
-def fun_l24_n737()
- fun_l25_n861
-end
-
-def fun_l24_n738()
- fun_l25_n890
-end
-
-def fun_l24_n739()
- fun_l25_n355
-end
-
-def fun_l24_n740()
- fun_l25_n166
-end
-
-def fun_l24_n741()
- fun_l25_n397
-end
-
-def fun_l24_n742()
- fun_l25_n665
-end
-
-def fun_l24_n743()
- fun_l25_n436
-end
-
-def fun_l24_n744()
- fun_l25_n274
-end
-
-def fun_l24_n745()
- fun_l25_n44
-end
-
-def fun_l24_n746()
- fun_l25_n765
-end
-
-def fun_l24_n747()
- fun_l25_n916
-end
-
-def fun_l24_n748()
- fun_l25_n735
-end
-
-def fun_l24_n749()
- fun_l25_n745
-end
-
-def fun_l24_n750()
- fun_l25_n813
-end
-
-def fun_l24_n751()
- fun_l25_n26
-end
-
-def fun_l24_n752()
- fun_l25_n223
-end
-
-def fun_l24_n753()
- fun_l25_n256
-end
-
-def fun_l24_n754()
- fun_l25_n852
-end
-
-def fun_l24_n755()
- fun_l25_n400
-end
-
-def fun_l24_n756()
- fun_l25_n973
-end
-
-def fun_l24_n757()
- fun_l25_n900
-end
-
-def fun_l24_n758()
- fun_l25_n884
-end
-
-def fun_l24_n759()
- fun_l25_n171
-end
-
-def fun_l24_n760()
- fun_l25_n155
-end
-
-def fun_l24_n761()
- fun_l25_n310
-end
-
-def fun_l24_n762()
- fun_l25_n706
-end
-
-def fun_l24_n763()
- fun_l25_n324
-end
-
-def fun_l24_n764()
- fun_l25_n260
-end
-
-def fun_l24_n765()
- fun_l25_n247
-end
-
-def fun_l24_n766()
- fun_l25_n750
-end
-
-def fun_l24_n767()
- fun_l25_n236
-end
-
-def fun_l24_n768()
- fun_l25_n956
-end
-
-def fun_l24_n769()
- fun_l25_n736
-end
-
-def fun_l24_n770()
- fun_l25_n510
-end
-
-def fun_l24_n771()
- fun_l25_n101
-end
-
-def fun_l24_n772()
- fun_l25_n189
-end
-
-def fun_l24_n773()
- fun_l25_n391
-end
-
-def fun_l24_n774()
- fun_l25_n212
-end
-
-def fun_l24_n775()
- fun_l25_n500
-end
-
-def fun_l24_n776()
- fun_l25_n95
-end
-
-def fun_l24_n777()
- fun_l25_n30
-end
-
-def fun_l24_n778()
- fun_l25_n99
-end
-
-def fun_l24_n779()
- fun_l25_n427
-end
-
-def fun_l24_n780()
- fun_l25_n659
-end
-
-def fun_l24_n781()
- fun_l25_n665
-end
-
-def fun_l24_n782()
- fun_l25_n992
-end
-
-def fun_l24_n783()
- fun_l25_n180
-end
-
-def fun_l24_n784()
- fun_l25_n546
-end
-
-def fun_l24_n785()
- fun_l25_n618
-end
-
-def fun_l24_n786()
- fun_l25_n615
-end
-
-def fun_l24_n787()
- fun_l25_n126
-end
-
-def fun_l24_n788()
- fun_l25_n383
-end
-
-def fun_l24_n789()
- fun_l25_n429
-end
-
-def fun_l24_n790()
- fun_l25_n95
-end
-
-def fun_l24_n791()
- fun_l25_n47
-end
-
-def fun_l24_n792()
- fun_l25_n582
-end
-
-def fun_l24_n793()
- fun_l25_n209
-end
-
-def fun_l24_n794()
- fun_l25_n925
-end
-
-def fun_l24_n795()
- fun_l25_n746
-end
-
-def fun_l24_n796()
- fun_l25_n330
-end
-
-def fun_l24_n797()
- fun_l25_n964
-end
-
-def fun_l24_n798()
- fun_l25_n241
-end
-
-def fun_l24_n799()
- fun_l25_n136
-end
-
-def fun_l24_n800()
- fun_l25_n10
-end
-
-def fun_l24_n801()
- fun_l25_n255
-end
-
-def fun_l24_n802()
- fun_l25_n481
-end
-
-def fun_l24_n803()
- fun_l25_n697
-end
-
-def fun_l24_n804()
- fun_l25_n275
-end
-
-def fun_l24_n805()
- fun_l25_n389
-end
-
-def fun_l24_n806()
- fun_l25_n540
-end
-
-def fun_l24_n807()
- fun_l25_n182
-end
-
-def fun_l24_n808()
- fun_l25_n894
-end
-
-def fun_l24_n809()
- fun_l25_n339
-end
-
-def fun_l24_n810()
- fun_l25_n409
-end
-
-def fun_l24_n811()
- fun_l25_n106
-end
-
-def fun_l24_n812()
- fun_l25_n297
-end
-
-def fun_l24_n813()
- fun_l25_n477
-end
-
-def fun_l24_n814()
- fun_l25_n431
-end
-
-def fun_l24_n815()
- fun_l25_n507
-end
-
-def fun_l24_n816()
- fun_l25_n311
-end
-
-def fun_l24_n817()
- fun_l25_n350
-end
-
-def fun_l24_n818()
- fun_l25_n486
-end
-
-def fun_l24_n819()
- fun_l25_n872
-end
-
-def fun_l24_n820()
- fun_l25_n21
-end
-
-def fun_l24_n821()
- fun_l25_n108
-end
-
-def fun_l24_n822()
- fun_l25_n383
-end
-
-def fun_l24_n823()
- fun_l25_n389
-end
-
-def fun_l24_n824()
- fun_l25_n901
-end
-
-def fun_l24_n825()
- fun_l25_n94
-end
-
-def fun_l24_n826()
- fun_l25_n122
-end
-
-def fun_l24_n827()
- fun_l25_n399
-end
-
-def fun_l24_n828()
- fun_l25_n424
-end
-
-def fun_l24_n829()
- fun_l25_n59
-end
-
-def fun_l24_n830()
- fun_l25_n477
-end
-
-def fun_l24_n831()
- fun_l25_n766
-end
-
-def fun_l24_n832()
- fun_l25_n340
-end
-
-def fun_l24_n833()
- fun_l25_n925
-end
-
-def fun_l24_n834()
- fun_l25_n993
-end
-
-def fun_l24_n835()
- fun_l25_n444
-end
-
-def fun_l24_n836()
- fun_l25_n580
-end
-
-def fun_l24_n837()
- fun_l25_n997
-end
-
-def fun_l24_n838()
- fun_l25_n651
-end
-
-def fun_l24_n839()
- fun_l25_n991
-end
-
-def fun_l24_n840()
- fun_l25_n850
-end
-
-def fun_l24_n841()
- fun_l25_n563
-end
-
-def fun_l24_n842()
- fun_l25_n175
-end
-
-def fun_l24_n843()
- fun_l25_n77
-end
-
-def fun_l24_n844()
- fun_l25_n300
-end
-
-def fun_l24_n845()
- fun_l25_n510
-end
-
-def fun_l24_n846()
- fun_l25_n871
-end
-
-def fun_l24_n847()
- fun_l25_n437
-end
-
-def fun_l24_n848()
- fun_l25_n609
-end
-
-def fun_l24_n849()
- fun_l25_n505
-end
-
-def fun_l24_n850()
- fun_l25_n989
-end
-
-def fun_l24_n851()
- fun_l25_n595
-end
-
-def fun_l24_n852()
- fun_l25_n917
-end
-
-def fun_l24_n853()
- fun_l25_n39
-end
-
-def fun_l24_n854()
- fun_l25_n795
-end
-
-def fun_l24_n855()
- fun_l25_n242
-end
-
-def fun_l24_n856()
- fun_l25_n220
-end
-
-def fun_l24_n857()
- fun_l25_n537
-end
-
-def fun_l24_n858()
- fun_l25_n790
-end
-
-def fun_l24_n859()
- fun_l25_n160
-end
-
-def fun_l24_n860()
- fun_l25_n685
-end
-
-def fun_l24_n861()
- fun_l25_n665
-end
-
-def fun_l24_n862()
- fun_l25_n448
-end
-
-def fun_l24_n863()
- fun_l25_n75
-end
-
-def fun_l24_n864()
- fun_l25_n293
-end
-
-def fun_l24_n865()
- fun_l25_n721
-end
-
-def fun_l24_n866()
- fun_l25_n113
-end
-
-def fun_l24_n867()
- fun_l25_n565
-end
-
-def fun_l24_n868()
- fun_l25_n95
-end
-
-def fun_l24_n869()
- fun_l25_n373
-end
-
-def fun_l24_n870()
- fun_l25_n351
-end
-
-def fun_l24_n871()
- fun_l25_n151
-end
-
-def fun_l24_n872()
- fun_l25_n489
-end
-
-def fun_l24_n873()
- fun_l25_n882
-end
-
-def fun_l24_n874()
- fun_l25_n415
-end
-
-def fun_l24_n875()
- fun_l25_n237
-end
-
-def fun_l24_n876()
- fun_l25_n59
-end
-
-def fun_l24_n877()
- fun_l25_n747
-end
-
-def fun_l24_n878()
- fun_l25_n897
-end
-
-def fun_l24_n879()
- fun_l25_n746
-end
-
-def fun_l24_n880()
- fun_l25_n695
-end
-
-def fun_l24_n881()
- fun_l25_n924
-end
-
-def fun_l24_n882()
- fun_l25_n933
-end
-
-def fun_l24_n883()
- fun_l25_n702
-end
-
-def fun_l24_n884()
- fun_l25_n107
-end
-
-def fun_l24_n885()
- fun_l25_n333
-end
-
-def fun_l24_n886()
- fun_l25_n536
-end
-
-def fun_l24_n887()
- fun_l25_n908
-end
-
-def fun_l24_n888()
- fun_l25_n84
-end
-
-def fun_l24_n889()
- fun_l25_n622
-end
-
-def fun_l24_n890()
- fun_l25_n466
-end
-
-def fun_l24_n891()
- fun_l25_n344
-end
-
-def fun_l24_n892()
- fun_l25_n271
-end
-
-def fun_l24_n893()
- fun_l25_n461
-end
-
-def fun_l24_n894()
- fun_l25_n297
-end
-
-def fun_l24_n895()
- fun_l25_n415
-end
-
-def fun_l24_n896()
- fun_l25_n419
-end
-
-def fun_l24_n897()
- fun_l25_n374
-end
-
-def fun_l24_n898()
- fun_l25_n976
-end
-
-def fun_l24_n899()
- fun_l25_n888
-end
-
-def fun_l24_n900()
- fun_l25_n540
-end
-
-def fun_l24_n901()
- fun_l25_n491
-end
-
-def fun_l24_n902()
- fun_l25_n178
-end
-
-def fun_l24_n903()
- fun_l25_n197
-end
-
-def fun_l24_n904()
- fun_l25_n474
-end
-
-def fun_l24_n905()
- fun_l25_n371
-end
-
-def fun_l24_n906()
- fun_l25_n960
-end
-
-def fun_l24_n907()
- fun_l25_n808
-end
-
-def fun_l24_n908()
- fun_l25_n89
-end
-
-def fun_l24_n909()
- fun_l25_n892
-end
-
-def fun_l24_n910()
- fun_l25_n457
-end
-
-def fun_l24_n911()
- fun_l25_n105
-end
-
-def fun_l24_n912()
- fun_l25_n787
-end
-
-def fun_l24_n913()
- fun_l25_n554
-end
-
-def fun_l24_n914()
- fun_l25_n615
-end
-
-def fun_l24_n915()
- fun_l25_n61
-end
-
-def fun_l24_n916()
- fun_l25_n162
-end
-
-def fun_l24_n917()
- fun_l25_n354
-end
-
-def fun_l24_n918()
- fun_l25_n388
-end
-
-def fun_l24_n919()
- fun_l25_n660
-end
-
-def fun_l24_n920()
- fun_l25_n705
-end
-
-def fun_l24_n921()
- fun_l25_n990
-end
-
-def fun_l24_n922()
- fun_l25_n725
-end
-
-def fun_l24_n923()
- fun_l25_n800
-end
-
-def fun_l24_n924()
- fun_l25_n368
-end
-
-def fun_l24_n925()
- fun_l25_n986
-end
-
-def fun_l24_n926()
- fun_l25_n509
-end
-
-def fun_l24_n927()
- fun_l25_n706
-end
-
-def fun_l24_n928()
- fun_l25_n777
-end
-
-def fun_l24_n929()
- fun_l25_n223
-end
-
-def fun_l24_n930()
- fun_l25_n972
-end
-
-def fun_l24_n931()
- fun_l25_n868
-end
-
-def fun_l24_n932()
- fun_l25_n170
-end
-
-def fun_l24_n933()
- fun_l25_n176
-end
-
-def fun_l24_n934()
- fun_l25_n667
-end
-
-def fun_l24_n935()
- fun_l25_n312
-end
-
-def fun_l24_n936()
- fun_l25_n680
-end
-
-def fun_l24_n937()
- fun_l25_n183
-end
-
-def fun_l24_n938()
- fun_l25_n880
-end
-
-def fun_l24_n939()
- fun_l25_n634
-end
-
-def fun_l24_n940()
- fun_l25_n716
-end
-
-def fun_l24_n941()
- fun_l25_n16
-end
-
-def fun_l24_n942()
- fun_l25_n227
-end
-
-def fun_l24_n943()
- fun_l25_n423
-end
-
-def fun_l24_n944()
- fun_l25_n268
-end
-
-def fun_l24_n945()
- fun_l25_n947
-end
-
-def fun_l24_n946()
- fun_l25_n675
-end
-
-def fun_l24_n947()
- fun_l25_n575
-end
-
-def fun_l24_n948()
- fun_l25_n280
-end
-
-def fun_l24_n949()
- fun_l25_n698
-end
-
-def fun_l24_n950()
- fun_l25_n769
-end
-
-def fun_l24_n951()
- fun_l25_n225
-end
-
-def fun_l24_n952()
- fun_l25_n171
-end
-
-def fun_l24_n953()
- fun_l25_n464
-end
-
-def fun_l24_n954()
- fun_l25_n662
-end
-
-def fun_l24_n955()
- fun_l25_n621
-end
-
-def fun_l24_n956()
- fun_l25_n391
-end
-
-def fun_l24_n957()
- fun_l25_n340
-end
-
-def fun_l24_n958()
- fun_l25_n634
-end
-
-def fun_l24_n959()
- fun_l25_n31
-end
-
-def fun_l24_n960()
- fun_l25_n132
-end
-
-def fun_l24_n961()
- fun_l25_n867
-end
-
-def fun_l24_n962()
- fun_l25_n946
-end
-
-def fun_l24_n963()
- fun_l25_n339
-end
-
-def fun_l24_n964()
- fun_l25_n497
-end
-
-def fun_l24_n965()
- fun_l25_n289
-end
-
-def fun_l24_n966()
- fun_l25_n842
-end
-
-def fun_l24_n967()
- fun_l25_n583
-end
-
-def fun_l24_n968()
- fun_l25_n52
-end
-
-def fun_l24_n969()
- fun_l25_n177
-end
-
-def fun_l24_n970()
- fun_l25_n935
-end
-
-def fun_l24_n971()
- fun_l25_n963
-end
-
-def fun_l24_n972()
- fun_l25_n779
-end
-
-def fun_l24_n973()
- fun_l25_n457
-end
-
-def fun_l24_n974()
- fun_l25_n480
-end
-
-def fun_l24_n975()
- fun_l25_n333
-end
-
-def fun_l24_n976()
- fun_l25_n191
-end
-
-def fun_l24_n977()
- fun_l25_n670
-end
-
-def fun_l24_n978()
- fun_l25_n822
-end
-
-def fun_l24_n979()
- fun_l25_n302
-end
-
-def fun_l24_n980()
- fun_l25_n272
-end
-
-def fun_l24_n981()
- fun_l25_n467
-end
-
-def fun_l24_n982()
- fun_l25_n209
-end
-
-def fun_l24_n983()
- fun_l25_n603
-end
-
-def fun_l24_n984()
- fun_l25_n134
-end
-
-def fun_l24_n985()
- fun_l25_n639
-end
-
-def fun_l24_n986()
- fun_l25_n843
-end
-
-def fun_l24_n987()
- fun_l25_n576
-end
-
-def fun_l24_n988()
- fun_l25_n7
-end
-
-def fun_l24_n989()
- fun_l25_n93
-end
-
-def fun_l24_n990()
- fun_l25_n351
-end
-
-def fun_l24_n991()
- fun_l25_n932
-end
-
-def fun_l24_n992()
- fun_l25_n987
-end
-
-def fun_l24_n993()
- fun_l25_n796
-end
-
-def fun_l24_n994()
- fun_l25_n202
-end
-
-def fun_l24_n995()
- fun_l25_n125
-end
-
-def fun_l24_n996()
- fun_l25_n404
-end
-
-def fun_l24_n997()
- fun_l25_n750
-end
-
-def fun_l24_n998()
- fun_l25_n50
-end
-
-def fun_l24_n999()
- fun_l25_n71
-end
-
-def fun_l25_n0()
- fun_l26_n73
-end
-
-def fun_l25_n1()
- fun_l26_n572
-end
-
-def fun_l25_n2()
- fun_l26_n639
-end
-
-def fun_l25_n3()
- fun_l26_n292
-end
-
-def fun_l25_n4()
- fun_l26_n865
-end
-
-def fun_l25_n5()
- fun_l26_n618
-end
-
-def fun_l25_n6()
- fun_l26_n84
-end
-
-def fun_l25_n7()
- fun_l26_n351
-end
-
-def fun_l25_n8()
- fun_l26_n534
-end
-
-def fun_l25_n9()
- fun_l26_n483
-end
-
-def fun_l25_n10()
- fun_l26_n589
-end
-
-def fun_l25_n11()
- fun_l26_n450
-end
-
-def fun_l25_n12()
- fun_l26_n948
-end
-
-def fun_l25_n13()
- fun_l26_n819
-end
-
-def fun_l25_n14()
- fun_l26_n845
-end
-
-def fun_l25_n15()
- fun_l26_n544
-end
-
-def fun_l25_n16()
- fun_l26_n254
-end
-
-def fun_l25_n17()
- fun_l26_n71
-end
-
-def fun_l25_n18()
- fun_l26_n640
-end
-
-def fun_l25_n19()
- fun_l26_n885
-end
-
-def fun_l25_n20()
- fun_l26_n725
-end
-
-def fun_l25_n21()
- fun_l26_n798
-end
-
-def fun_l25_n22()
- fun_l26_n838
-end
-
-def fun_l25_n23()
- fun_l26_n835
-end
-
-def fun_l25_n24()
- fun_l26_n170
-end
-
-def fun_l25_n25()
- fun_l26_n3
-end
-
-def fun_l25_n26()
- fun_l26_n910
-end
-
-def fun_l25_n27()
- fun_l26_n575
-end
-
-def fun_l25_n28()
- fun_l26_n834
-end
-
-def fun_l25_n29()
- fun_l26_n767
-end
-
-def fun_l25_n30()
- fun_l26_n375
-end
-
-def fun_l25_n31()
- fun_l26_n781
-end
-
-def fun_l25_n32()
- fun_l26_n173
-end
-
-def fun_l25_n33()
- fun_l26_n382
-end
-
-def fun_l25_n34()
- fun_l26_n974
-end
-
-def fun_l25_n35()
- fun_l26_n14
-end
-
-def fun_l25_n36()
- fun_l26_n730
-end
-
-def fun_l25_n37()
- fun_l26_n253
-end
-
-def fun_l25_n38()
- fun_l26_n405
-end
-
-def fun_l25_n39()
- fun_l26_n903
-end
-
-def fun_l25_n40()
- fun_l26_n621
-end
-
-def fun_l25_n41()
- fun_l26_n309
-end
-
-def fun_l25_n42()
- fun_l26_n572
-end
-
-def fun_l25_n43()
- fun_l26_n857
-end
-
-def fun_l25_n44()
- fun_l26_n769
-end
-
-def fun_l25_n45()
- fun_l26_n371
-end
-
-def fun_l25_n46()
- fun_l26_n866
-end
-
-def fun_l25_n47()
- fun_l26_n279
-end
-
-def fun_l25_n48()
- fun_l26_n360
-end
-
-def fun_l25_n49()
- fun_l26_n80
-end
-
-def fun_l25_n50()
- fun_l26_n101
-end
-
-def fun_l25_n51()
- fun_l26_n32
-end
-
-def fun_l25_n52()
- fun_l26_n815
-end
-
-def fun_l25_n53()
- fun_l26_n599
-end
-
-def fun_l25_n54()
- fun_l26_n999
-end
-
-def fun_l25_n55()
- fun_l26_n264
-end
-
-def fun_l25_n56()
- fun_l26_n941
-end
-
-def fun_l25_n57()
- fun_l26_n735
-end
-
-def fun_l25_n58()
- fun_l26_n563
-end
-
-def fun_l25_n59()
- fun_l26_n439
-end
-
-def fun_l25_n60()
- fun_l26_n326
-end
-
-def fun_l25_n61()
- fun_l26_n577
-end
-
-def fun_l25_n62()
- fun_l26_n174
-end
-
-def fun_l25_n63()
- fun_l26_n839
-end
-
-def fun_l25_n64()
- fun_l26_n238
-end
-
-def fun_l25_n65()
- fun_l26_n953
-end
-
-def fun_l25_n66()
- fun_l26_n940
-end
-
-def fun_l25_n67()
- fun_l26_n349
-end
-
-def fun_l25_n68()
- fun_l26_n675
-end
-
-def fun_l25_n69()
- fun_l26_n376
-end
-
-def fun_l25_n70()
- fun_l26_n653
-end
-
-def fun_l25_n71()
- fun_l26_n377
-end
-
-def fun_l25_n72()
- fun_l26_n977
-end
-
-def fun_l25_n73()
- fun_l26_n487
-end
-
-def fun_l25_n74()
- fun_l26_n722
-end
-
-def fun_l25_n75()
- fun_l26_n18
-end
-
-def fun_l25_n76()
- fun_l26_n539
-end
-
-def fun_l25_n77()
- fun_l26_n825
-end
-
-def fun_l25_n78()
- fun_l26_n990
-end
-
-def fun_l25_n79()
- fun_l26_n554
-end
-
-def fun_l25_n80()
- fun_l26_n715
-end
-
-def fun_l25_n81()
- fun_l26_n67
-end
-
-def fun_l25_n82()
- fun_l26_n143
-end
-
-def fun_l25_n83()
- fun_l26_n99
-end
-
-def fun_l25_n84()
- fun_l26_n703
-end
-
-def fun_l25_n85()
- fun_l26_n277
-end
-
-def fun_l25_n86()
- fun_l26_n283
-end
-
-def fun_l25_n87()
- fun_l26_n74
-end
-
-def fun_l25_n88()
- fun_l26_n680
-end
-
-def fun_l25_n89()
- fun_l26_n269
-end
-
-def fun_l25_n90()
- fun_l26_n255
-end
-
-def fun_l25_n91()
- fun_l26_n974
-end
-
-def fun_l25_n92()
- fun_l26_n109
-end
-
-def fun_l25_n93()
- fun_l26_n672
-end
-
-def fun_l25_n94()
- fun_l26_n418
-end
-
-def fun_l25_n95()
- fun_l26_n75
-end
-
-def fun_l25_n96()
- fun_l26_n500
-end
-
-def fun_l25_n97()
- fun_l26_n286
-end
-
-def fun_l25_n98()
- fun_l26_n890
-end
-
-def fun_l25_n99()
- fun_l26_n161
-end
-
-def fun_l25_n100()
- fun_l26_n16
-end
-
-def fun_l25_n101()
- fun_l26_n742
-end
-
-def fun_l25_n102()
- fun_l26_n592
-end
-
-def fun_l25_n103()
- fun_l26_n600
-end
-
-def fun_l25_n104()
- fun_l26_n665
-end
-
-def fun_l25_n105()
- fun_l26_n721
-end
-
-def fun_l25_n106()
- fun_l26_n461
-end
-
-def fun_l25_n107()
- fun_l26_n818
-end
-
-def fun_l25_n108()
- fun_l26_n132
-end
-
-def fun_l25_n109()
- fun_l26_n245
-end
-
-def fun_l25_n110()
- fun_l26_n511
-end
-
-def fun_l25_n111()
- fun_l26_n386
-end
-
-def fun_l25_n112()
- fun_l26_n77
-end
-
-def fun_l25_n113()
- fun_l26_n329
-end
-
-def fun_l25_n114()
- fun_l26_n157
-end
-
-def fun_l25_n115()
- fun_l26_n220
-end
-
-def fun_l25_n116()
- fun_l26_n880
-end
-
-def fun_l25_n117()
- fun_l26_n799
-end
-
-def fun_l25_n118()
- fun_l26_n879
-end
-
-def fun_l25_n119()
- fun_l26_n639
-end
-
-def fun_l25_n120()
- fun_l26_n257
-end
-
-def fun_l25_n121()
- fun_l26_n921
-end
-
-def fun_l25_n122()
- fun_l26_n115
-end
-
-def fun_l25_n123()
- fun_l26_n569
-end
-
-def fun_l25_n124()
- fun_l26_n504
-end
-
-def fun_l25_n125()
- fun_l26_n962
-end
-
-def fun_l25_n126()
- fun_l26_n854
-end
-
-def fun_l25_n127()
- fun_l26_n619
-end
-
-def fun_l25_n128()
- fun_l26_n657
-end
-
-def fun_l25_n129()
- fun_l26_n389
-end
-
-def fun_l25_n130()
- fun_l26_n515
-end
-
-def fun_l25_n131()
- fun_l26_n253
-end
-
-def fun_l25_n132()
- fun_l26_n311
-end
-
-def fun_l25_n133()
- fun_l26_n587
-end
-
-def fun_l25_n134()
- fun_l26_n802
-end
-
-def fun_l25_n135()
- fun_l26_n29
-end
-
-def fun_l25_n136()
- fun_l26_n324
-end
-
-def fun_l25_n137()
- fun_l26_n892
-end
-
-def fun_l25_n138()
- fun_l26_n871
-end
-
-def fun_l25_n139()
- fun_l26_n748
-end
-
-def fun_l25_n140()
- fun_l26_n7
-end
-
-def fun_l25_n141()
- fun_l26_n77
-end
-
-def fun_l25_n142()
- fun_l26_n948
-end
-
-def fun_l25_n143()
- fun_l26_n624
-end
-
-def fun_l25_n144()
- fun_l26_n908
-end
-
-def fun_l25_n145()
- fun_l26_n362
-end
-
-def fun_l25_n146()
- fun_l26_n653
-end
-
-def fun_l25_n147()
- fun_l26_n806
-end
-
-def fun_l25_n148()
- fun_l26_n959
-end
-
-def fun_l25_n149()
- fun_l26_n677
-end
-
-def fun_l25_n150()
- fun_l26_n697
-end
-
-def fun_l25_n151()
- fun_l26_n12
-end
-
-def fun_l25_n152()
- fun_l26_n67
-end
-
-def fun_l25_n153()
- fun_l26_n451
-end
-
-def fun_l25_n154()
- fun_l26_n887
-end
-
-def fun_l25_n155()
- fun_l26_n908
-end
-
-def fun_l25_n156()
- fun_l26_n382
-end
-
-def fun_l25_n157()
- fun_l26_n977
-end
-
-def fun_l25_n158()
- fun_l26_n62
-end
-
-def fun_l25_n159()
- fun_l26_n307
-end
-
-def fun_l25_n160()
- fun_l26_n583
-end
-
-def fun_l25_n161()
- fun_l26_n291
-end
-
-def fun_l25_n162()
- fun_l26_n736
-end
-
-def fun_l25_n163()
- fun_l26_n954
-end
-
-def fun_l25_n164()
- fun_l26_n414
-end
-
-def fun_l25_n165()
- fun_l26_n945
-end
-
-def fun_l25_n166()
- fun_l26_n947
-end
-
-def fun_l25_n167()
- fun_l26_n639
-end
-
-def fun_l25_n168()
- fun_l26_n875
-end
-
-def fun_l25_n169()
- fun_l26_n994
-end
-
-def fun_l25_n170()
- fun_l26_n855
-end
-
-def fun_l25_n171()
- fun_l26_n539
-end
-
-def fun_l25_n172()
- fun_l26_n108
-end
-
-def fun_l25_n173()
- fun_l26_n806
-end
-
-def fun_l25_n174()
- fun_l26_n838
-end
-
-def fun_l25_n175()
- fun_l26_n688
-end
-
-def fun_l25_n176()
- fun_l26_n696
-end
-
-def fun_l25_n177()
- fun_l26_n979
-end
-
-def fun_l25_n178()
- fun_l26_n261
-end
-
-def fun_l25_n179()
- fun_l26_n266
-end
-
-def fun_l25_n180()
- fun_l26_n907
-end
-
-def fun_l25_n181()
- fun_l26_n622
-end
-
-def fun_l25_n182()
- fun_l26_n42
-end
-
-def fun_l25_n183()
- fun_l26_n840
-end
-
-def fun_l25_n184()
- fun_l26_n125
-end
-
-def fun_l25_n185()
- fun_l26_n402
-end
-
-def fun_l25_n186()
- fun_l26_n401
-end
-
-def fun_l25_n187()
- fun_l26_n410
-end
-
-def fun_l25_n188()
- fun_l26_n552
-end
-
-def fun_l25_n189()
- fun_l26_n528
-end
-
-def fun_l25_n190()
- fun_l26_n171
-end
-
-def fun_l25_n191()
- fun_l26_n787
-end
-
-def fun_l25_n192()
- fun_l26_n453
-end
-
-def fun_l25_n193()
- fun_l26_n107
-end
-
-def fun_l25_n194()
- fun_l26_n171
-end
-
-def fun_l25_n195()
- fun_l26_n159
-end
-
-def fun_l25_n196()
- fun_l26_n801
-end
-
-def fun_l25_n197()
- fun_l26_n569
-end
-
-def fun_l25_n198()
- fun_l26_n899
-end
-
-def fun_l25_n199()
- fun_l26_n434
-end
-
-def fun_l25_n200()
- fun_l26_n943
-end
-
-def fun_l25_n201()
- fun_l26_n455
-end
-
-def fun_l25_n202()
- fun_l26_n239
-end
-
-def fun_l25_n203()
- fun_l26_n892
-end
-
-def fun_l25_n204()
- fun_l26_n332
-end
-
-def fun_l25_n205()
- fun_l26_n95
-end
-
-def fun_l25_n206()
- fun_l26_n735
-end
-
-def fun_l25_n207()
- fun_l26_n517
-end
-
-def fun_l25_n208()
- fun_l26_n41
-end
-
-def fun_l25_n209()
- fun_l26_n827
-end
-
-def fun_l25_n210()
- fun_l26_n557
-end
-
-def fun_l25_n211()
- fun_l26_n184
-end
-
-def fun_l25_n212()
- fun_l26_n123
-end
-
-def fun_l25_n213()
- fun_l26_n476
-end
-
-def fun_l25_n214()
- fun_l26_n346
-end
-
-def fun_l25_n215()
- fun_l26_n720
-end
-
-def fun_l25_n216()
- fun_l26_n905
-end
-
-def fun_l25_n217()
- fun_l26_n911
-end
-
-def fun_l25_n218()
- fun_l26_n317
-end
-
-def fun_l25_n219()
- fun_l26_n930
-end
-
-def fun_l25_n220()
- fun_l26_n539
-end
-
-def fun_l25_n221()
- fun_l26_n173
-end
-
-def fun_l25_n222()
- fun_l26_n441
-end
-
-def fun_l25_n223()
- fun_l26_n345
-end
-
-def fun_l25_n224()
- fun_l26_n463
-end
-
-def fun_l25_n225()
- fun_l26_n568
-end
-
-def fun_l25_n226()
- fun_l26_n783
-end
-
-def fun_l25_n227()
- fun_l26_n359
-end
-
-def fun_l25_n228()
- fun_l26_n523
-end
-
-def fun_l25_n229()
- fun_l26_n895
-end
-
-def fun_l25_n230()
- fun_l26_n159
-end
-
-def fun_l25_n231()
- fun_l26_n259
-end
-
-def fun_l25_n232()
- fun_l26_n373
-end
-
-def fun_l25_n233()
- fun_l26_n471
-end
-
-def fun_l25_n234()
- fun_l26_n448
-end
-
-def fun_l25_n235()
- fun_l26_n139
-end
-
-def fun_l25_n236()
- fun_l26_n795
-end
-
-def fun_l25_n237()
- fun_l26_n492
-end
-
-def fun_l25_n238()
- fun_l26_n292
-end
-
-def fun_l25_n239()
- fun_l26_n253
-end
-
-def fun_l25_n240()
- fun_l26_n870
-end
-
-def fun_l25_n241()
- fun_l26_n504
-end
-
-def fun_l25_n242()
- fun_l26_n315
-end
-
-def fun_l25_n243()
- fun_l26_n542
-end
-
-def fun_l25_n244()
- fun_l26_n368
-end
-
-def fun_l25_n245()
- fun_l26_n954
-end
-
-def fun_l25_n246()
- fun_l26_n589
-end
-
-def fun_l25_n247()
- fun_l26_n102
-end
-
-def fun_l25_n248()
- fun_l26_n839
-end
-
-def fun_l25_n249()
- fun_l26_n493
-end
-
-def fun_l25_n250()
- fun_l26_n90
-end
-
-def fun_l25_n251()
- fun_l26_n974
-end
-
-def fun_l25_n252()
- fun_l26_n878
-end
-
-def fun_l25_n253()
- fun_l26_n205
-end
-
-def fun_l25_n254()
- fun_l26_n485
-end
-
-def fun_l25_n255()
- fun_l26_n976
-end
-
-def fun_l25_n256()
- fun_l26_n397
-end
-
-def fun_l25_n257()
- fun_l26_n593
-end
-
-def fun_l25_n258()
- fun_l26_n925
-end
-
-def fun_l25_n259()
- fun_l26_n223
-end
-
-def fun_l25_n260()
- fun_l26_n491
-end
-
-def fun_l25_n261()
- fun_l26_n441
-end
-
-def fun_l25_n262()
- fun_l26_n472
-end
-
-def fun_l25_n263()
- fun_l26_n357
-end
-
-def fun_l25_n264()
- fun_l26_n90
-end
-
-def fun_l25_n265()
- fun_l26_n124
-end
-
-def fun_l25_n266()
- fun_l26_n607
-end
-
-def fun_l25_n267()
- fun_l26_n484
-end
-
-def fun_l25_n268()
- fun_l26_n448
-end
-
-def fun_l25_n269()
- fun_l26_n456
-end
-
-def fun_l25_n270()
- fun_l26_n108
-end
-
-def fun_l25_n271()
- fun_l26_n268
-end
-
-def fun_l25_n272()
- fun_l26_n250
-end
-
-def fun_l25_n273()
- fun_l26_n354
-end
-
-def fun_l25_n274()
- fun_l26_n234
-end
-
-def fun_l25_n275()
- fun_l26_n833
-end
-
-def fun_l25_n276()
- fun_l26_n404
-end
-
-def fun_l25_n277()
- fun_l26_n296
-end
-
-def fun_l25_n278()
- fun_l26_n640
-end
-
-def fun_l25_n279()
- fun_l26_n633
-end
-
-def fun_l25_n280()
- fun_l26_n119
-end
-
-def fun_l25_n281()
- fun_l26_n272
-end
-
-def fun_l25_n282()
- fun_l26_n4
-end
-
-def fun_l25_n283()
- fun_l26_n217
-end
-
-def fun_l25_n284()
- fun_l26_n923
-end
-
-def fun_l25_n285()
- fun_l26_n911
-end
-
-def fun_l25_n286()
- fun_l26_n332
-end
-
-def fun_l25_n287()
- fun_l26_n83
-end
-
-def fun_l25_n288()
- fun_l26_n396
-end
-
-def fun_l25_n289()
- fun_l26_n423
-end
-
-def fun_l25_n290()
- fun_l26_n182
-end
-
-def fun_l25_n291()
- fun_l26_n69
-end
-
-def fun_l25_n292()
- fun_l26_n348
-end
-
-def fun_l25_n293()
- fun_l26_n85
-end
-
-def fun_l25_n294()
- fun_l26_n727
-end
-
-def fun_l25_n295()
- fun_l26_n488
-end
-
-def fun_l25_n296()
- fun_l26_n629
-end
-
-def fun_l25_n297()
- fun_l26_n92
-end
-
-def fun_l25_n298()
- fun_l26_n737
-end
-
-def fun_l25_n299()
- fun_l26_n68
-end
-
-def fun_l25_n300()
- fun_l26_n148
-end
-
-def fun_l25_n301()
- fun_l26_n292
-end
-
-def fun_l25_n302()
- fun_l26_n836
-end
-
-def fun_l25_n303()
- fun_l26_n992
-end
-
-def fun_l25_n304()
- fun_l26_n894
-end
-
-def fun_l25_n305()
- fun_l26_n850
-end
-
-def fun_l25_n306()
- fun_l26_n63
-end
-
-def fun_l25_n307()
- fun_l26_n321
-end
-
-def fun_l25_n308()
- fun_l26_n497
-end
-
-def fun_l25_n309()
- fun_l26_n757
-end
-
-def fun_l25_n310()
- fun_l26_n331
-end
-
-def fun_l25_n311()
- fun_l26_n522
-end
-
-def fun_l25_n312()
- fun_l26_n815
-end
-
-def fun_l25_n313()
- fun_l26_n545
-end
-
-def fun_l25_n314()
- fun_l26_n78
-end
-
-def fun_l25_n315()
- fun_l26_n474
-end
-
-def fun_l25_n316()
- fun_l26_n329
-end
-
-def fun_l25_n317()
- fun_l26_n19
-end
-
-def fun_l25_n318()
- fun_l26_n85
-end
-
-def fun_l25_n319()
- fun_l26_n548
-end
-
-def fun_l25_n320()
- fun_l26_n435
-end
-
-def fun_l25_n321()
- fun_l26_n607
-end
-
-def fun_l25_n322()
- fun_l26_n610
-end
-
-def fun_l25_n323()
- fun_l26_n218
-end
-
-def fun_l25_n324()
- fun_l26_n664
-end
-
-def fun_l25_n325()
- fun_l26_n869
-end
-
-def fun_l25_n326()
- fun_l26_n110
-end
-
-def fun_l25_n327()
- fun_l26_n811
-end
-
-def fun_l25_n328()
- fun_l26_n70
-end
-
-def fun_l25_n329()
- fun_l26_n852
-end
-
-def fun_l25_n330()
- fun_l26_n772
-end
-
-def fun_l25_n331()
- fun_l26_n367
-end
-
-def fun_l25_n332()
- fun_l26_n34
-end
-
-def fun_l25_n333()
- fun_l26_n470
-end
-
-def fun_l25_n334()
- fun_l26_n962
-end
-
-def fun_l25_n335()
- fun_l26_n957
-end
-
-def fun_l25_n336()
- fun_l26_n608
-end
-
-def fun_l25_n337()
- fun_l26_n632
-end
-
-def fun_l25_n338()
- fun_l26_n960
-end
-
-def fun_l25_n339()
- fun_l26_n584
-end
-
-def fun_l25_n340()
- fun_l26_n500
-end
-
-def fun_l25_n341()
- fun_l26_n317
-end
-
-def fun_l25_n342()
- fun_l26_n772
-end
-
-def fun_l25_n343()
- fun_l26_n741
-end
-
-def fun_l25_n344()
- fun_l26_n584
-end
-
-def fun_l25_n345()
- fun_l26_n221
-end
-
-def fun_l25_n346()
- fun_l26_n809
-end
-
-def fun_l25_n347()
- fun_l26_n28
-end
-
-def fun_l25_n348()
- fun_l26_n111
-end
-
-def fun_l25_n349()
- fun_l26_n499
-end
-
-def fun_l25_n350()
- fun_l26_n35
-end
-
-def fun_l25_n351()
- fun_l26_n885
-end
-
-def fun_l25_n352()
- fun_l26_n516
-end
-
-def fun_l25_n353()
- fun_l26_n394
-end
-
-def fun_l25_n354()
- fun_l26_n792
-end
-
-def fun_l25_n355()
- fun_l26_n741
-end
-
-def fun_l25_n356()
- fun_l26_n851
-end
-
-def fun_l25_n357()
- fun_l26_n483
-end
-
-def fun_l25_n358()
- fun_l26_n464
-end
-
-def fun_l25_n359()
- fun_l26_n886
-end
-
-def fun_l25_n360()
- fun_l26_n479
-end
-
-def fun_l25_n361()
- fun_l26_n31
-end
-
-def fun_l25_n362()
- fun_l26_n154
-end
-
-def fun_l25_n363()
- fun_l26_n178
-end
-
-def fun_l25_n364()
- fun_l26_n390
-end
-
-def fun_l25_n365()
- fun_l26_n597
-end
-
-def fun_l25_n366()
- fun_l26_n85
-end
-
-def fun_l25_n367()
- fun_l26_n614
-end
-
-def fun_l25_n368()
- fun_l26_n796
-end
-
-def fun_l25_n369()
- fun_l26_n627
-end
-
-def fun_l25_n370()
- fun_l26_n581
-end
-
-def fun_l25_n371()
- fun_l26_n63
-end
-
-def fun_l25_n372()
- fun_l26_n708
-end
-
-def fun_l25_n373()
- fun_l26_n858
-end
-
-def fun_l25_n374()
- fun_l26_n143
-end
-
-def fun_l25_n375()
- fun_l26_n742
-end
-
-def fun_l25_n376()
- fun_l26_n54
-end
-
-def fun_l25_n377()
- fun_l26_n299
-end
-
-def fun_l25_n378()
- fun_l26_n465
-end
-
-def fun_l25_n379()
- fun_l26_n207
-end
-
-def fun_l25_n380()
- fun_l26_n3
-end
-
-def fun_l25_n381()
- fun_l26_n648
-end
-
-def fun_l25_n382()
- fun_l26_n7
-end
-
-def fun_l25_n383()
- fun_l26_n586
-end
-
-def fun_l25_n384()
- fun_l26_n884
-end
-
-def fun_l25_n385()
- fun_l26_n731
-end
-
-def fun_l25_n386()
- fun_l26_n60
-end
-
-def fun_l25_n387()
- fun_l26_n600
-end
-
-def fun_l25_n388()
- fun_l26_n162
-end
-
-def fun_l25_n389()
- fun_l26_n229
-end
-
-def fun_l25_n390()
- fun_l26_n60
-end
-
-def fun_l25_n391()
- fun_l26_n617
-end
-
-def fun_l25_n392()
- fun_l26_n823
-end
-
-def fun_l25_n393()
- fun_l26_n546
-end
-
-def fun_l25_n394()
- fun_l26_n783
-end
-
-def fun_l25_n395()
- fun_l26_n616
-end
-
-def fun_l25_n396()
- fun_l26_n131
-end
-
-def fun_l25_n397()
- fun_l26_n744
-end
-
-def fun_l25_n398()
- fun_l26_n344
-end
-
-def fun_l25_n399()
- fun_l26_n529
-end
-
-def fun_l25_n400()
- fun_l26_n314
-end
-
-def fun_l25_n401()
- fun_l26_n571
-end
-
-def fun_l25_n402()
- fun_l26_n329
-end
-
-def fun_l25_n403()
- fun_l26_n334
-end
-
-def fun_l25_n404()
- fun_l26_n232
-end
-
-def fun_l25_n405()
- fun_l26_n864
-end
-
-def fun_l25_n406()
- fun_l26_n882
-end
-
-def fun_l25_n407()
- fun_l26_n153
-end
-
-def fun_l25_n408()
- fun_l26_n770
-end
-
-def fun_l25_n409()
- fun_l26_n199
-end
-
-def fun_l25_n410()
- fun_l26_n799
-end
-
-def fun_l25_n411()
- fun_l26_n306
-end
-
-def fun_l25_n412()
- fun_l26_n957
-end
-
-def fun_l25_n413()
- fun_l26_n519
-end
-
-def fun_l25_n414()
- fun_l26_n445
-end
-
-def fun_l25_n415()
- fun_l26_n272
-end
-
-def fun_l25_n416()
- fun_l26_n119
-end
-
-def fun_l25_n417()
- fun_l26_n143
-end
-
-def fun_l25_n418()
- fun_l26_n964
-end
-
-def fun_l25_n419()
- fun_l26_n574
-end
-
-def fun_l25_n420()
- fun_l26_n215
-end
-
-def fun_l25_n421()
- fun_l26_n144
-end
-
-def fun_l25_n422()
- fun_l26_n345
-end
-
-def fun_l25_n423()
- fun_l26_n121
-end
-
-def fun_l25_n424()
- fun_l26_n77
-end
-
-def fun_l25_n425()
- fun_l26_n112
-end
-
-def fun_l25_n426()
- fun_l26_n992
-end
-
-def fun_l25_n427()
- fun_l26_n320
-end
-
-def fun_l25_n428()
- fun_l26_n980
-end
-
-def fun_l25_n429()
- fun_l26_n442
-end
-
-def fun_l25_n430()
- fun_l26_n422
-end
-
-def fun_l25_n431()
- fun_l26_n164
-end
-
-def fun_l25_n432()
- fun_l26_n778
-end
-
-def fun_l25_n433()
- fun_l26_n330
-end
-
-def fun_l25_n434()
- fun_l26_n535
-end
-
-def fun_l25_n435()
- fun_l26_n149
-end
-
-def fun_l25_n436()
- fun_l26_n411
-end
-
-def fun_l25_n437()
- fun_l26_n465
-end
-
-def fun_l25_n438()
- fun_l26_n231
-end
-
-def fun_l25_n439()
- fun_l26_n542
-end
-
-def fun_l25_n440()
- fun_l26_n720
-end
-
-def fun_l25_n441()
- fun_l26_n883
-end
-
-def fun_l25_n442()
- fun_l26_n258
-end
-
-def fun_l25_n443()
- fun_l26_n633
-end
-
-def fun_l25_n444()
- fun_l26_n715
-end
-
-def fun_l25_n445()
- fun_l26_n844
-end
-
-def fun_l25_n446()
- fun_l26_n837
-end
-
-def fun_l25_n447()
- fun_l26_n161
-end
-
-def fun_l25_n448()
- fun_l26_n389
-end
-
-def fun_l25_n449()
- fun_l26_n246
-end
-
-def fun_l25_n450()
- fun_l26_n570
-end
-
-def fun_l25_n451()
- fun_l26_n678
-end
-
-def fun_l25_n452()
- fun_l26_n243
-end
-
-def fun_l25_n453()
- fun_l26_n430
-end
-
-def fun_l25_n454()
- fun_l26_n193
-end
-
-def fun_l25_n455()
- fun_l26_n666
-end
-
-def fun_l25_n456()
- fun_l26_n881
-end
-
-def fun_l25_n457()
- fun_l26_n989
-end
-
-def fun_l25_n458()
- fun_l26_n450
-end
-
-def fun_l25_n459()
- fun_l26_n675
-end
-
-def fun_l25_n460()
- fun_l26_n315
-end
-
-def fun_l25_n461()
- fun_l26_n40
-end
-
-def fun_l25_n462()
- fun_l26_n639
-end
-
-def fun_l25_n463()
- fun_l26_n380
-end
-
-def fun_l25_n464()
- fun_l26_n680
-end
-
-def fun_l25_n465()
- fun_l26_n54
-end
-
-def fun_l25_n466()
- fun_l26_n37
-end
-
-def fun_l25_n467()
- fun_l26_n910
-end
-
-def fun_l25_n468()
- fun_l26_n50
-end
-
-def fun_l25_n469()
- fun_l26_n925
-end
-
-def fun_l25_n470()
- fun_l26_n385
-end
-
-def fun_l25_n471()
- fun_l26_n860
-end
-
-def fun_l25_n472()
- fun_l26_n547
-end
-
-def fun_l25_n473()
- fun_l26_n31
-end
-
-def fun_l25_n474()
- fun_l26_n338
-end
-
-def fun_l25_n475()
- fun_l26_n706
-end
-
-def fun_l25_n476()
- fun_l26_n81
-end
-
-def fun_l25_n477()
- fun_l26_n532
-end
-
-def fun_l25_n478()
- fun_l26_n781
-end
-
-def fun_l25_n479()
- fun_l26_n588
-end
-
-def fun_l25_n480()
- fun_l26_n658
-end
-
-def fun_l25_n481()
- fun_l26_n344
-end
-
-def fun_l25_n482()
- fun_l26_n914
-end
-
-def fun_l25_n483()
- fun_l26_n319
-end
-
-def fun_l25_n484()
- fun_l26_n138
-end
-
-def fun_l25_n485()
- fun_l26_n927
-end
-
-def fun_l25_n486()
- fun_l26_n409
-end
-
-def fun_l25_n487()
- fun_l26_n721
-end
-
-def fun_l25_n488()
- fun_l26_n197
-end
-
-def fun_l25_n489()
- fun_l26_n654
-end
-
-def fun_l25_n490()
- fun_l26_n298
-end
-
-def fun_l25_n491()
- fun_l26_n763
-end
-
-def fun_l25_n492()
- fun_l26_n729
-end
-
-def fun_l25_n493()
- fun_l26_n532
-end
-
-def fun_l25_n494()
- fun_l26_n508
-end
-
-def fun_l25_n495()
- fun_l26_n725
-end
-
-def fun_l25_n496()
- fun_l26_n665
-end
-
-def fun_l25_n497()
- fun_l26_n21
-end
-
-def fun_l25_n498()
- fun_l26_n314
-end
-
-def fun_l25_n499()
- fun_l26_n823
-end
-
-def fun_l25_n500()
- fun_l26_n983
-end
-
-def fun_l25_n501()
- fun_l26_n477
-end
-
-def fun_l25_n502()
- fun_l26_n502
-end
-
-def fun_l25_n503()
- fun_l26_n731
-end
-
-def fun_l25_n504()
- fun_l26_n427
-end
-
-def fun_l25_n505()
- fun_l26_n949
-end
-
-def fun_l25_n506()
- fun_l26_n566
-end
-
-def fun_l25_n507()
- fun_l26_n407
-end
-
-def fun_l25_n508()
- fun_l26_n427
-end
-
-def fun_l25_n509()
- fun_l26_n423
-end
-
-def fun_l25_n510()
- fun_l26_n394
-end
-
-def fun_l25_n511()
- fun_l26_n584
-end
-
-def fun_l25_n512()
- fun_l26_n35
-end
-
-def fun_l25_n513()
- fun_l26_n89
-end
-
-def fun_l25_n514()
- fun_l26_n369
-end
-
-def fun_l25_n515()
- fun_l26_n483
-end
-
-def fun_l25_n516()
- fun_l26_n897
-end
-
-def fun_l25_n517()
- fun_l26_n39
-end
-
-def fun_l25_n518()
- fun_l26_n904
-end
-
-def fun_l25_n519()
- fun_l26_n264
-end
-
-def fun_l25_n520()
- fun_l26_n806
-end
-
-def fun_l25_n521()
- fun_l26_n206
-end
-
-def fun_l25_n522()
- fun_l26_n417
-end
-
-def fun_l25_n523()
- fun_l26_n235
-end
-
-def fun_l25_n524()
- fun_l26_n192
-end
-
-def fun_l25_n525()
- fun_l26_n62
-end
-
-def fun_l25_n526()
- fun_l26_n295
-end
-
-def fun_l25_n527()
- fun_l26_n998
-end
-
-def fun_l25_n528()
- fun_l26_n898
-end
-
-def fun_l25_n529()
- fun_l26_n705
-end
-
-def fun_l25_n530()
- fun_l26_n571
-end
-
-def fun_l25_n531()
- fun_l26_n883
-end
-
-def fun_l25_n532()
- fun_l26_n198
-end
-
-def fun_l25_n533()
- fun_l26_n893
-end
-
-def fun_l25_n534()
- fun_l26_n849
-end
-
-def fun_l25_n535()
- fun_l26_n540
-end
-
-def fun_l25_n536()
- fun_l26_n509
-end
-
-def fun_l25_n537()
- fun_l26_n889
-end
-
-def fun_l25_n538()
- fun_l26_n981
-end
-
-def fun_l25_n539()
- fun_l26_n477
-end
-
-def fun_l25_n540()
- fun_l26_n908
-end
-
-def fun_l25_n541()
- fun_l26_n455
-end
-
-def fun_l25_n542()
- fun_l26_n547
-end
-
-def fun_l25_n543()
- fun_l26_n487
-end
-
-def fun_l25_n544()
- fun_l26_n365
-end
-
-def fun_l25_n545()
- fun_l26_n853
-end
-
-def fun_l25_n546()
- fun_l26_n591
-end
-
-def fun_l25_n547()
- fun_l26_n298
-end
-
-def fun_l25_n548()
- fun_l26_n529
-end
-
-def fun_l25_n549()
- fun_l26_n191
-end
-
-def fun_l25_n550()
- fun_l26_n118
-end
-
-def fun_l25_n551()
- fun_l26_n82
-end
-
-def fun_l25_n552()
- fun_l26_n874
-end
-
-def fun_l25_n553()
- fun_l26_n924
-end
-
-def fun_l25_n554()
- fun_l26_n683
-end
-
-def fun_l25_n555()
- fun_l26_n163
-end
-
-def fun_l25_n556()
- fun_l26_n935
-end
-
-def fun_l25_n557()
- fun_l26_n657
-end
-
-def fun_l25_n558()
- fun_l26_n17
-end
-
-def fun_l25_n559()
- fun_l26_n578
-end
-
-def fun_l25_n560()
- fun_l26_n105
-end
-
-def fun_l25_n561()
- fun_l26_n280
-end
-
-def fun_l25_n562()
- fun_l26_n130
-end
-
-def fun_l25_n563()
- fun_l26_n824
-end
-
-def fun_l25_n564()
- fun_l26_n376
-end
-
-def fun_l25_n565()
- fun_l26_n942
-end
-
-def fun_l25_n566()
- fun_l26_n771
-end
-
-def fun_l25_n567()
- fun_l26_n245
-end
-
-def fun_l25_n568()
- fun_l26_n361
-end
-
-def fun_l25_n569()
- fun_l26_n328
-end
-
-def fun_l25_n570()
- fun_l26_n718
-end
-
-def fun_l25_n571()
- fun_l26_n918
-end
-
-def fun_l25_n572()
- fun_l26_n592
-end
-
-def fun_l25_n573()
- fun_l26_n690
-end
-
-def fun_l25_n574()
- fun_l26_n689
-end
-
-def fun_l25_n575()
- fun_l26_n571
-end
-
-def fun_l25_n576()
- fun_l26_n106
-end
-
-def fun_l25_n577()
- fun_l26_n917
-end
-
-def fun_l25_n578()
- fun_l26_n954
-end
-
-def fun_l25_n579()
- fun_l26_n842
-end
-
-def fun_l25_n580()
- fun_l26_n277
-end
-
-def fun_l25_n581()
- fun_l26_n511
-end
-
-def fun_l25_n582()
- fun_l26_n834
-end
-
-def fun_l25_n583()
- fun_l26_n992
-end
-
-def fun_l25_n584()
- fun_l26_n711
-end
-
-def fun_l25_n585()
- fun_l26_n366
-end
-
-def fun_l25_n586()
- fun_l26_n960
-end
-
-def fun_l25_n587()
- fun_l26_n229
-end
-
-def fun_l25_n588()
- fun_l26_n208
-end
-
-def fun_l25_n589()
- fun_l26_n758
-end
-
-def fun_l25_n590()
- fun_l26_n98
-end
-
-def fun_l25_n591()
- fun_l26_n452
-end
-
-def fun_l25_n592()
- fun_l26_n526
-end
-
-def fun_l25_n593()
- fun_l26_n92
-end
-
-def fun_l25_n594()
- fun_l26_n108
-end
-
-def fun_l25_n595()
- fun_l26_n250
-end
-
-def fun_l25_n596()
- fun_l26_n186
-end
-
-def fun_l25_n597()
- fun_l26_n603
-end
-
-def fun_l25_n598()
- fun_l26_n828
-end
-
-def fun_l25_n599()
- fun_l26_n610
-end
-
-def fun_l25_n600()
- fun_l26_n280
-end
-
-def fun_l25_n601()
- fun_l26_n158
-end
-
-def fun_l25_n602()
- fun_l26_n386
-end
-
-def fun_l25_n603()
- fun_l26_n869
-end
-
-def fun_l25_n604()
- fun_l26_n483
-end
-
-def fun_l25_n605()
- fun_l26_n682
-end
-
-def fun_l25_n606()
- fun_l26_n175
-end
-
-def fun_l25_n607()
- fun_l26_n991
-end
-
-def fun_l25_n608()
- fun_l26_n165
-end
-
-def fun_l25_n609()
- fun_l26_n303
-end
-
-def fun_l25_n610()
- fun_l26_n812
-end
-
-def fun_l25_n611()
- fun_l26_n563
-end
-
-def fun_l25_n612()
- fun_l26_n635
-end
-
-def fun_l25_n613()
- fun_l26_n256
-end
-
-def fun_l25_n614()
- fun_l26_n96
-end
-
-def fun_l25_n615()
- fun_l26_n8
-end
-
-def fun_l25_n616()
- fun_l26_n963
-end
-
-def fun_l25_n617()
- fun_l26_n860
-end
-
-def fun_l25_n618()
- fun_l26_n316
-end
-
-def fun_l25_n619()
- fun_l26_n388
-end
-
-def fun_l25_n620()
- fun_l26_n427
-end
-
-def fun_l25_n621()
- fun_l26_n519
-end
-
-def fun_l25_n622()
- fun_l26_n780
-end
-
-def fun_l25_n623()
- fun_l26_n142
-end
-
-def fun_l25_n624()
- fun_l26_n271
-end
-
-def fun_l25_n625()
- fun_l26_n617
-end
-
-def fun_l25_n626()
- fun_l26_n968
-end
-
-def fun_l25_n627()
- fun_l26_n880
-end
-
-def fun_l25_n628()
- fun_l26_n831
-end
-
-def fun_l25_n629()
- fun_l26_n616
-end
-
-def fun_l25_n630()
- fun_l26_n213
-end
-
-def fun_l25_n631()
- fun_l26_n91
-end
-
-def fun_l25_n632()
- fun_l26_n295
-end
-
-def fun_l25_n633()
- fun_l26_n314
-end
-
-def fun_l25_n634()
- fun_l26_n174
-end
-
-def fun_l25_n635()
- fun_l26_n668
-end
-
-def fun_l25_n636()
- fun_l26_n962
-end
-
-def fun_l25_n637()
- fun_l26_n1
-end
-
-def fun_l25_n638()
- fun_l26_n361
-end
-
-def fun_l25_n639()
- fun_l26_n947
-end
-
-def fun_l25_n640()
- fun_l26_n381
-end
-
-def fun_l25_n641()
- fun_l26_n388
-end
-
-def fun_l25_n642()
- fun_l26_n5
-end
-
-def fun_l25_n643()
- fun_l26_n759
-end
-
-def fun_l25_n644()
- fun_l26_n454
-end
-
-def fun_l25_n645()
- fun_l26_n596
-end
-
-def fun_l25_n646()
- fun_l26_n639
-end
-
-def fun_l25_n647()
- fun_l26_n156
-end
-
-def fun_l25_n648()
- fun_l26_n395
-end
-
-def fun_l25_n649()
- fun_l26_n424
-end
-
-def fun_l25_n650()
- fun_l26_n21
-end
-
-def fun_l25_n651()
- fun_l26_n285
-end
-
-def fun_l25_n652()
- fun_l26_n72
-end
-
-def fun_l25_n653()
- fun_l26_n25
-end
-
-def fun_l25_n654()
- fun_l26_n381
-end
-
-def fun_l25_n655()
- fun_l26_n166
-end
-
-def fun_l25_n656()
- fun_l26_n850
-end
-
-def fun_l25_n657()
- fun_l26_n794
-end
-
-def fun_l25_n658()
- fun_l26_n674
-end
-
-def fun_l25_n659()
- fun_l26_n934
-end
-
-def fun_l25_n660()
- fun_l26_n164
-end
-
-def fun_l25_n661()
- fun_l26_n325
-end
-
-def fun_l25_n662()
- fun_l26_n514
-end
-
-def fun_l25_n663()
- fun_l26_n489
-end
-
-def fun_l25_n664()
- fun_l26_n268
-end
-
-def fun_l25_n665()
- fun_l26_n4
-end
-
-def fun_l25_n666()
- fun_l26_n330
-end
-
-def fun_l25_n667()
- fun_l26_n749
-end
-
-def fun_l25_n668()
- fun_l26_n324
-end
-
-def fun_l25_n669()
- fun_l26_n228
-end
-
-def fun_l25_n670()
- fun_l26_n740
-end
-
-def fun_l25_n671()
- fun_l26_n240
-end
-
-def fun_l25_n672()
- fun_l26_n145
-end
-
-def fun_l25_n673()
- fun_l26_n170
-end
-
-def fun_l25_n674()
- fun_l26_n222
-end
-
-def fun_l25_n675()
- fun_l26_n680
-end
-
-def fun_l25_n676()
- fun_l26_n115
-end
-
-def fun_l25_n677()
- fun_l26_n359
-end
-
-def fun_l25_n678()
- fun_l26_n482
-end
-
-def fun_l25_n679()
- fun_l26_n251
-end
-
-def fun_l25_n680()
- fun_l26_n95
-end
-
-def fun_l25_n681()
- fun_l26_n587
-end
-
-def fun_l25_n682()
- fun_l26_n689
-end
-
-def fun_l25_n683()
- fun_l26_n317
-end
-
-def fun_l25_n684()
- fun_l26_n913
-end
-
-def fun_l25_n685()
- fun_l26_n943
-end
-
-def fun_l25_n686()
- fun_l26_n770
-end
-
-def fun_l25_n687()
- fun_l26_n204
-end
-
-def fun_l25_n688()
- fun_l26_n690
-end
-
-def fun_l25_n689()
- fun_l26_n745
-end
-
-def fun_l25_n690()
- fun_l26_n640
-end
-
-def fun_l25_n691()
- fun_l26_n34
-end
-
-def fun_l25_n692()
- fun_l26_n296
-end
-
-def fun_l25_n693()
- fun_l26_n900
-end
-
-def fun_l25_n694()
- fun_l26_n619
-end
-
-def fun_l25_n695()
- fun_l26_n81
-end
-
-def fun_l25_n696()
- fun_l26_n748
-end
-
-def fun_l25_n697()
- fun_l26_n395
-end
-
-def fun_l25_n698()
- fun_l26_n518
-end
-
-def fun_l25_n699()
- fun_l26_n338
-end
-
-def fun_l25_n700()
- fun_l26_n238
-end
-
-def fun_l25_n701()
- fun_l26_n445
-end
-
-def fun_l25_n702()
- fun_l26_n732
-end
-
-def fun_l25_n703()
- fun_l26_n378
-end
-
-def fun_l25_n704()
- fun_l26_n858
-end
-
-def fun_l25_n705()
- fun_l26_n944
-end
-
-def fun_l25_n706()
- fun_l26_n543
-end
-
-def fun_l25_n707()
- fun_l26_n750
-end
-
-def fun_l25_n708()
- fun_l26_n191
-end
-
-def fun_l25_n709()
- fun_l26_n483
-end
-
-def fun_l25_n710()
- fun_l26_n614
-end
-
-def fun_l25_n711()
- fun_l26_n944
-end
-
-def fun_l25_n712()
- fun_l26_n375
-end
-
-def fun_l25_n713()
- fun_l26_n464
-end
-
-def fun_l25_n714()
- fun_l26_n429
-end
-
-def fun_l25_n715()
- fun_l26_n251
-end
-
-def fun_l25_n716()
- fun_l26_n401
-end
-
-def fun_l25_n717()
- fun_l26_n230
-end
-
-def fun_l25_n718()
- fun_l26_n855
-end
-
-def fun_l25_n719()
- fun_l26_n63
-end
-
-def fun_l25_n720()
- fun_l26_n453
-end
-
-def fun_l25_n721()
- fun_l26_n698
-end
-
-def fun_l25_n722()
- fun_l26_n691
-end
-
-def fun_l25_n723()
- fun_l26_n949
-end
-
-def fun_l25_n724()
- fun_l26_n838
-end
-
-def fun_l25_n725()
- fun_l26_n962
-end
-
-def fun_l25_n726()
- fun_l26_n159
-end
-
-def fun_l25_n727()
- fun_l26_n958
-end
-
-def fun_l25_n728()
- fun_l26_n915
-end
-
-def fun_l25_n729()
- fun_l26_n925
-end
-
-def fun_l25_n730()
- fun_l26_n841
-end
-
-def fun_l25_n731()
- fun_l26_n710
-end
-
-def fun_l25_n732()
- fun_l26_n606
-end
-
-def fun_l25_n733()
- fun_l26_n502
-end
-
-def fun_l25_n734()
- fun_l26_n275
-end
-
-def fun_l25_n735()
- fun_l26_n2
-end
-
-def fun_l25_n736()
- fun_l26_n912
-end
-
-def fun_l25_n737()
- fun_l26_n908
-end
-
-def fun_l25_n738()
- fun_l26_n599
-end
-
-def fun_l25_n739()
- fun_l26_n586
-end
-
-def fun_l25_n740()
- fun_l26_n675
-end
-
-def fun_l25_n741()
- fun_l26_n33
-end
-
-def fun_l25_n742()
- fun_l26_n94
-end
-
-def fun_l25_n743()
- fun_l26_n512
-end
-
-def fun_l25_n744()
- fun_l26_n38
-end
-
-def fun_l25_n745()
- fun_l26_n479
-end
-
-def fun_l25_n746()
- fun_l26_n191
-end
-
-def fun_l25_n747()
- fun_l26_n520
-end
-
-def fun_l25_n748()
- fun_l26_n800
-end
-
-def fun_l25_n749()
- fun_l26_n401
-end
-
-def fun_l25_n750()
- fun_l26_n355
-end
-
-def fun_l25_n751()
- fun_l26_n622
-end
-
-def fun_l25_n752()
- fun_l26_n48
-end
-
-def fun_l25_n753()
- fun_l26_n620
-end
-
-def fun_l25_n754()
- fun_l26_n932
-end
-
-def fun_l25_n755()
- fun_l26_n204
-end
-
-def fun_l25_n756()
- fun_l26_n875
-end
-
-def fun_l25_n757()
- fun_l26_n458
-end
-
-def fun_l25_n758()
- fun_l26_n364
-end
-
-def fun_l25_n759()
- fun_l26_n621
-end
-
-def fun_l25_n760()
- fun_l26_n800
-end
-
-def fun_l25_n761()
- fun_l26_n297
-end
-
-def fun_l25_n762()
- fun_l26_n262
-end
-
-def fun_l25_n763()
- fun_l26_n810
-end
-
-def fun_l25_n764()
- fun_l26_n518
-end
-
-def fun_l25_n765()
- fun_l26_n192
-end
-
-def fun_l25_n766()
- fun_l26_n733
-end
-
-def fun_l25_n767()
- fun_l26_n410
-end
-
-def fun_l25_n768()
- fun_l26_n161
-end
-
-def fun_l25_n769()
- fun_l26_n546
-end
-
-def fun_l25_n770()
- fun_l26_n863
-end
-
-def fun_l25_n771()
- fun_l26_n442
-end
-
-def fun_l25_n772()
- fun_l26_n733
-end
-
-def fun_l25_n773()
- fun_l26_n340
-end
-
-def fun_l25_n774()
- fun_l26_n371
-end
-
-def fun_l25_n775()
- fun_l26_n253
-end
-
-def fun_l25_n776()
- fun_l26_n607
-end
-
-def fun_l25_n777()
- fun_l26_n859
-end
-
-def fun_l25_n778()
- fun_l26_n142
-end
-
-def fun_l25_n779()
- fun_l26_n504
-end
-
-def fun_l25_n780()
- fun_l26_n145
-end
-
-def fun_l25_n781()
- fun_l26_n561
-end
-
-def fun_l25_n782()
- fun_l26_n442
-end
-
-def fun_l25_n783()
- fun_l26_n70
-end
-
-def fun_l25_n784()
- fun_l26_n233
-end
-
-def fun_l25_n785()
- fun_l26_n680
-end
-
-def fun_l25_n786()
- fun_l26_n195
-end
-
-def fun_l25_n787()
- fun_l26_n760
-end
-
-def fun_l25_n788()
- fun_l26_n951
-end
-
-def fun_l25_n789()
- fun_l26_n247
-end
-
-def fun_l25_n790()
- fun_l26_n58
-end
-
-def fun_l25_n791()
- fun_l26_n926
-end
-
-def fun_l25_n792()
- fun_l26_n424
-end
-
-def fun_l25_n793()
- fun_l26_n404
-end
-
-def fun_l25_n794()
- fun_l26_n98
-end
-
-def fun_l25_n795()
- fun_l26_n568
-end
-
-def fun_l25_n796()
- fun_l26_n665
-end
-
-def fun_l25_n797()
- fun_l26_n138
-end
-
-def fun_l25_n798()
- fun_l26_n362
-end
-
-def fun_l25_n799()
- fun_l26_n366
-end
-
-def fun_l25_n800()
- fun_l26_n667
-end
-
-def fun_l25_n801()
- fun_l26_n171
-end
-
-def fun_l25_n802()
- fun_l26_n620
-end
-
-def fun_l25_n803()
- fun_l26_n88
-end
-
-def fun_l25_n804()
- fun_l26_n60
-end
-
-def fun_l25_n805()
- fun_l26_n411
-end
-
-def fun_l25_n806()
- fun_l26_n994
-end
-
-def fun_l25_n807()
- fun_l26_n341
-end
-
-def fun_l25_n808()
- fun_l26_n364
-end
-
-def fun_l25_n809()
- fun_l26_n253
-end
-
-def fun_l25_n810()
- fun_l26_n689
-end
-
-def fun_l25_n811()
- fun_l26_n325
-end
-
-def fun_l25_n812()
- fun_l26_n573
-end
-
-def fun_l25_n813()
- fun_l26_n122
-end
-
-def fun_l25_n814()
- fun_l26_n487
-end
-
-def fun_l25_n815()
- fun_l26_n461
-end
-
-def fun_l25_n816()
- fun_l26_n851
-end
-
-def fun_l25_n817()
- fun_l26_n322
-end
-
-def fun_l25_n818()
- fun_l26_n472
-end
-
-def fun_l25_n819()
- fun_l26_n773
-end
-
-def fun_l25_n820()
- fun_l26_n801
-end
-
-def fun_l25_n821()
- fun_l26_n454
-end
-
-def fun_l25_n822()
- fun_l26_n179
-end
-
-def fun_l25_n823()
- fun_l26_n207
-end
-
-def fun_l25_n824()
- fun_l26_n464
-end
-
-def fun_l25_n825()
- fun_l26_n188
-end
-
-def fun_l25_n826()
- fun_l26_n831
-end
-
-def fun_l25_n827()
- fun_l26_n918
-end
-
-def fun_l25_n828()
- fun_l26_n336
-end
-
-def fun_l25_n829()
- fun_l26_n960
-end
-
-def fun_l25_n830()
- fun_l26_n767
-end
-
-def fun_l25_n831()
- fun_l26_n149
-end
-
-def fun_l25_n832()
- fun_l26_n454
-end
-
-def fun_l25_n833()
- fun_l26_n756
-end
-
-def fun_l25_n834()
- fun_l26_n937
-end
-
-def fun_l25_n835()
- fun_l26_n841
-end
-
-def fun_l25_n836()
- fun_l26_n210
-end
-
-def fun_l25_n837()
- fun_l26_n633
-end
-
-def fun_l25_n838()
- fun_l26_n665
-end
-
-def fun_l25_n839()
- fun_l26_n502
-end
-
-def fun_l25_n840()
- fun_l26_n38
-end
-
-def fun_l25_n841()
- fun_l26_n487
-end
-
-def fun_l25_n842()
- fun_l26_n101
-end
-
-def fun_l25_n843()
- fun_l26_n522
-end
-
-def fun_l25_n844()
- fun_l26_n501
-end
-
-def fun_l25_n845()
- fun_l26_n759
-end
-
-def fun_l25_n846()
- fun_l26_n161
-end
-
-def fun_l25_n847()
- fun_l26_n823
-end
-
-def fun_l25_n848()
- fun_l26_n687
-end
-
-def fun_l25_n849()
- fun_l26_n41
-end
-
-def fun_l25_n850()
- fun_l26_n580
-end
-
-def fun_l25_n851()
- fun_l26_n728
-end
-
-def fun_l25_n852()
- fun_l26_n464
-end
-
-def fun_l25_n853()
- fun_l26_n846
-end
-
-def fun_l25_n854()
- fun_l26_n708
-end
-
-def fun_l25_n855()
- fun_l26_n847
-end
-
-def fun_l25_n856()
- fun_l26_n295
-end
-
-def fun_l25_n857()
- fun_l26_n569
-end
-
-def fun_l25_n858()
- fun_l26_n367
-end
-
-def fun_l25_n859()
- fun_l26_n937
-end
-
-def fun_l25_n860()
- fun_l26_n116
-end
-
-def fun_l25_n861()
- fun_l26_n889
-end
-
-def fun_l25_n862()
- fun_l26_n392
-end
-
-def fun_l25_n863()
- fun_l26_n70
-end
-
-def fun_l25_n864()
- fun_l26_n82
-end
-
-def fun_l25_n865()
- fun_l26_n4
-end
-
-def fun_l25_n866()
- fun_l26_n286
-end
-
-def fun_l25_n867()
- fun_l26_n594
-end
-
-def fun_l25_n868()
- fun_l26_n917
-end
-
-def fun_l25_n869()
- fun_l26_n385
-end
-
-def fun_l25_n870()
- fun_l26_n149
-end
-
-def fun_l25_n871()
- fun_l26_n893
-end
-
-def fun_l25_n872()
- fun_l26_n832
-end
-
-def fun_l25_n873()
- fun_l26_n962
-end
-
-def fun_l25_n874()
- fun_l26_n196
-end
-
-def fun_l25_n875()
- fun_l26_n841
-end
-
-def fun_l25_n876()
- fun_l26_n334
-end
-
-def fun_l25_n877()
- fun_l26_n680
-end
-
-def fun_l25_n878()
- fun_l26_n858
-end
-
-def fun_l25_n879()
- fun_l26_n530
-end
-
-def fun_l25_n880()
- fun_l26_n331
-end
-
-def fun_l25_n881()
- fun_l26_n287
-end
-
-def fun_l25_n882()
- fun_l26_n995
-end
-
-def fun_l25_n883()
- fun_l26_n663
-end
-
-def fun_l25_n884()
- fun_l26_n352
-end
-
-def fun_l25_n885()
- fun_l26_n787
-end
-
-def fun_l25_n886()
- fun_l26_n176
-end
-
-def fun_l25_n887()
- fun_l26_n303
-end
-
-def fun_l25_n888()
- fun_l26_n610
-end
-
-def fun_l25_n889()
- fun_l26_n860
-end
-
-def fun_l25_n890()
- fun_l26_n35
-end
-
-def fun_l25_n891()
- fun_l26_n599
-end
-
-def fun_l25_n892()
- fun_l26_n334
-end
-
-def fun_l25_n893()
- fun_l26_n904
-end
-
-def fun_l25_n894()
- fun_l26_n999
-end
-
-def fun_l25_n895()
- fun_l26_n394
-end
-
-def fun_l25_n896()
- fun_l26_n901
-end
-
-def fun_l25_n897()
- fun_l26_n348
-end
-
-def fun_l25_n898()
- fun_l26_n59
-end
-
-def fun_l25_n899()
- fun_l26_n67
-end
-
-def fun_l25_n900()
- fun_l26_n887
-end
-
-def fun_l25_n901()
- fun_l26_n27
-end
-
-def fun_l25_n902()
- fun_l26_n635
-end
-
-def fun_l25_n903()
- fun_l26_n627
-end
-
-def fun_l25_n904()
- fun_l26_n47
-end
-
-def fun_l25_n905()
- fun_l26_n256
-end
-
-def fun_l25_n906()
- fun_l26_n498
-end
-
-def fun_l25_n907()
- fun_l26_n831
-end
-
-def fun_l25_n908()
- fun_l26_n723
-end
-
-def fun_l25_n909()
- fun_l26_n29
-end
-
-def fun_l25_n910()
- fun_l26_n842
-end
-
-def fun_l25_n911()
- fun_l26_n762
-end
-
-def fun_l25_n912()
- fun_l26_n706
-end
-
-def fun_l25_n913()
- fun_l26_n472
-end
-
-def fun_l25_n914()
- fun_l26_n825
-end
-
-def fun_l25_n915()
- fun_l26_n210
-end
-
-def fun_l25_n916()
- fun_l26_n682
-end
-
-def fun_l25_n917()
- fun_l26_n793
-end
-
-def fun_l25_n918()
- fun_l26_n768
-end
-
-def fun_l25_n919()
- fun_l26_n631
-end
-
-def fun_l25_n920()
- fun_l26_n188
-end
-
-def fun_l25_n921()
- fun_l26_n115
-end
-
-def fun_l25_n922()
- fun_l26_n587
-end
-
-def fun_l25_n923()
- fun_l26_n998
-end
-
-def fun_l25_n924()
- fun_l26_n439
-end
-
-def fun_l25_n925()
- fun_l26_n306
-end
-
-def fun_l25_n926()
- fun_l26_n810
-end
-
-def fun_l25_n927()
- fun_l26_n183
-end
-
-def fun_l25_n928()
- fun_l26_n868
-end
-
-def fun_l25_n929()
- fun_l26_n733
-end
-
-def fun_l25_n930()
- fun_l26_n931
-end
-
-def fun_l25_n931()
- fun_l26_n747
-end
-
-def fun_l25_n932()
- fun_l26_n126
-end
-
-def fun_l25_n933()
- fun_l26_n299
-end
-
-def fun_l25_n934()
- fun_l26_n994
-end
-
-def fun_l25_n935()
- fun_l26_n76
-end
-
-def fun_l25_n936()
- fun_l26_n606
-end
-
-def fun_l25_n937()
- fun_l26_n874
-end
-
-def fun_l25_n938()
- fun_l26_n333
-end
-
-def fun_l25_n939()
- fun_l26_n601
-end
-
-def fun_l25_n940()
- fun_l26_n503
-end
-
-def fun_l25_n941()
- fun_l26_n819
-end
-
-def fun_l25_n942()
- fun_l26_n414
-end
-
-def fun_l25_n943()
- fun_l26_n839
-end
-
-def fun_l25_n944()
- fun_l26_n655
-end
-
-def fun_l25_n945()
- fun_l26_n61
-end
-
-def fun_l25_n946()
- fun_l26_n368
-end
-
-def fun_l25_n947()
- fun_l26_n481
-end
-
-def fun_l25_n948()
- fun_l26_n674
-end
-
-def fun_l25_n949()
- fun_l26_n755
-end
-
-def fun_l25_n950()
- fun_l26_n940
-end
-
-def fun_l25_n951()
- fun_l26_n918
-end
-
-def fun_l25_n952()
- fun_l26_n833
-end
-
-def fun_l25_n953()
- fun_l26_n81
-end
-
-def fun_l25_n954()
- fun_l26_n12
-end
-
-def fun_l25_n955()
- fun_l26_n598
-end
-
-def fun_l25_n956()
- fun_l26_n10
-end
-
-def fun_l25_n957()
- fun_l26_n552
-end
-
-def fun_l25_n958()
- fun_l26_n536
-end
-
-def fun_l25_n959()
- fun_l26_n291
-end
-
-def fun_l25_n960()
- fun_l26_n535
-end
-
-def fun_l25_n961()
- fun_l26_n593
-end
-
-def fun_l25_n962()
- fun_l26_n834
-end
-
-def fun_l25_n963()
- fun_l26_n527
-end
-
-def fun_l25_n964()
- fun_l26_n403
-end
-
-def fun_l25_n965()
- fun_l26_n246
-end
-
-def fun_l25_n966()
- fun_l26_n278
-end
-
-def fun_l25_n967()
- fun_l26_n948
-end
-
-def fun_l25_n968()
- fun_l26_n989
-end
-
-def fun_l25_n969()
- fun_l26_n312
-end
-
-def fun_l25_n970()
- fun_l26_n674
-end
-
-def fun_l25_n971()
- fun_l26_n592
-end
-
-def fun_l25_n972()
- fun_l26_n413
-end
-
-def fun_l25_n973()
- fun_l26_n774
-end
-
-def fun_l25_n974()
- fun_l26_n148
-end
-
-def fun_l25_n975()
- fun_l26_n437
-end
-
-def fun_l25_n976()
- fun_l26_n749
-end
-
-def fun_l25_n977()
- fun_l26_n938
-end
-
-def fun_l25_n978()
- fun_l26_n662
-end
-
-def fun_l25_n979()
- fun_l26_n327
-end
-
-def fun_l25_n980()
- fun_l26_n665
-end
-
-def fun_l25_n981()
- fun_l26_n516
-end
-
-def fun_l25_n982()
- fun_l26_n27
-end
-
-def fun_l25_n983()
- fun_l26_n624
-end
-
-def fun_l25_n984()
- fun_l26_n451
-end
-
-def fun_l25_n985()
- fun_l26_n120
-end
-
-def fun_l25_n986()
- fun_l26_n220
-end
-
-def fun_l25_n987()
- fun_l26_n201
-end
-
-def fun_l25_n988()
- fun_l26_n67
-end
-
-def fun_l25_n989()
- fun_l26_n484
-end
-
-def fun_l25_n990()
- fun_l26_n98
-end
-
-def fun_l25_n991()
- fun_l26_n133
-end
-
-def fun_l25_n992()
- fun_l26_n642
-end
-
-def fun_l25_n993()
- fun_l26_n933
-end
-
-def fun_l25_n994()
- fun_l26_n410
-end
-
-def fun_l25_n995()
- fun_l26_n415
-end
-
-def fun_l25_n996()
- fun_l26_n513
-end
-
-def fun_l25_n997()
- fun_l26_n41
-end
-
-def fun_l25_n998()
- fun_l26_n517
-end
-
-def fun_l25_n999()
- fun_l26_n485
-end
-
-def fun_l26_n0()
- fun_l27_n229
-end
-
-def fun_l26_n1()
- fun_l27_n178
-end
-
-def fun_l26_n2()
- fun_l27_n76
-end
-
-def fun_l26_n3()
- fun_l27_n247
-end
-
-def fun_l26_n4()
- fun_l27_n564
-end
-
-def fun_l26_n5()
- fun_l27_n204
-end
-
-def fun_l26_n6()
- fun_l27_n196
-end
-
-def fun_l26_n7()
- fun_l27_n57
-end
-
-def fun_l26_n8()
- fun_l27_n836
-end
-
-def fun_l26_n9()
- fun_l27_n195
-end
-
-def fun_l26_n10()
- fun_l27_n149
-end
-
-def fun_l26_n11()
- fun_l27_n784
-end
-
-def fun_l26_n12()
- fun_l27_n242
-end
-
-def fun_l26_n13()
- fun_l27_n771
-end
-
-def fun_l26_n14()
- fun_l27_n263
-end
-
-def fun_l26_n15()
- fun_l27_n486
-end
-
-def fun_l26_n16()
- fun_l27_n351
-end
-
-def fun_l26_n17()
- fun_l27_n612
-end
-
-def fun_l26_n18()
- fun_l27_n61
-end
-
-def fun_l26_n19()
- fun_l27_n119
-end
-
-def fun_l26_n20()
- fun_l27_n419
-end
-
-def fun_l26_n21()
- fun_l27_n265
-end
-
-def fun_l26_n22()
- fun_l27_n70
-end
-
-def fun_l26_n23()
- fun_l27_n868
-end
-
-def fun_l26_n24()
- fun_l27_n969
-end
-
-def fun_l26_n25()
- fun_l27_n355
-end
-
-def fun_l26_n26()
- fun_l27_n558
-end
-
-def fun_l26_n27()
- fun_l27_n522
-end
-
-def fun_l26_n28()
- fun_l27_n704
-end
-
-def fun_l26_n29()
- fun_l27_n196
-end
-
-def fun_l26_n30()
- fun_l27_n834
-end
-
-def fun_l26_n31()
- fun_l27_n187
-end
-
-def fun_l26_n32()
- fun_l27_n324
-end
-
-def fun_l26_n33()
- fun_l27_n233
-end
-
-def fun_l26_n34()
- fun_l27_n559
-end
-
-def fun_l26_n35()
- fun_l27_n331
-end
-
-def fun_l26_n36()
- fun_l27_n71
-end
-
-def fun_l26_n37()
- fun_l27_n572
-end
-
-def fun_l26_n38()
- fun_l27_n918
-end
-
-def fun_l26_n39()
- fun_l27_n866
-end
-
-def fun_l26_n40()
- fun_l27_n909
-end
-
-def fun_l26_n41()
- fun_l27_n861
-end
-
-def fun_l26_n42()
- fun_l27_n440
-end
-
-def fun_l26_n43()
- fun_l27_n213
-end
-
-def fun_l26_n44()
- fun_l27_n675
-end
-
-def fun_l26_n45()
- fun_l27_n490
-end
-
-def fun_l26_n46()
- fun_l27_n579
-end
-
-def fun_l26_n47()
- fun_l27_n25
-end
-
-def fun_l26_n48()
- fun_l27_n180
-end
-
-def fun_l26_n49()
- fun_l27_n346
-end
-
-def fun_l26_n50()
- fun_l27_n761
-end
-
-def fun_l26_n51()
- fun_l27_n336
-end
-
-def fun_l26_n52()
- fun_l27_n124
-end
-
-def fun_l26_n53()
- fun_l27_n485
-end
-
-def fun_l26_n54()
- fun_l27_n24
-end
-
-def fun_l26_n55()
- fun_l27_n666
-end
-
-def fun_l26_n56()
- fun_l27_n957
-end
-
-def fun_l26_n57()
- fun_l27_n790
-end
-
-def fun_l26_n58()
- fun_l27_n475
-end
-
-def fun_l26_n59()
- fun_l27_n915
-end
-
-def fun_l26_n60()
- fun_l27_n313
-end
-
-def fun_l26_n61()
- fun_l27_n148
-end
-
-def fun_l26_n62()
- fun_l27_n185
-end
-
-def fun_l26_n63()
- fun_l27_n468
-end
-
-def fun_l26_n64()
- fun_l27_n549
-end
-
-def fun_l26_n65()
- fun_l27_n29
-end
-
-def fun_l26_n66()
- fun_l27_n601
-end
-
-def fun_l26_n67()
- fun_l27_n3
-end
-
-def fun_l26_n68()
- fun_l27_n363
-end
-
-def fun_l26_n69()
- fun_l27_n721
-end
-
-def fun_l26_n70()
- fun_l27_n76
-end
-
-def fun_l26_n71()
- fun_l27_n265
-end
-
-def fun_l26_n72()
- fun_l27_n771
-end
-
-def fun_l26_n73()
- fun_l27_n660
-end
-
-def fun_l26_n74()
- fun_l27_n714
-end
-
-def fun_l26_n75()
- fun_l27_n495
-end
-
-def fun_l26_n76()
- fun_l27_n133
-end
-
-def fun_l26_n77()
- fun_l27_n753
-end
-
-def fun_l26_n78()
- fun_l27_n999
-end
-
-def fun_l26_n79()
- fun_l27_n527
-end
-
-def fun_l26_n80()
- fun_l27_n767
-end
-
-def fun_l26_n81()
- fun_l27_n444
-end
-
-def fun_l26_n82()
- fun_l27_n160
-end
-
-def fun_l26_n83()
- fun_l27_n799
-end
-
-def fun_l26_n84()
- fun_l27_n631
-end
-
-def fun_l26_n85()
- fun_l27_n480
-end
-
-def fun_l26_n86()
- fun_l27_n800
-end
-
-def fun_l26_n87()
- fun_l27_n168
-end
-
-def fun_l26_n88()
- fun_l27_n191
-end
-
-def fun_l26_n89()
- fun_l27_n832
-end
-
-def fun_l26_n90()
- fun_l27_n522
-end
-
-def fun_l26_n91()
- fun_l27_n747
-end
-
-def fun_l26_n92()
- fun_l27_n50
-end
-
-def fun_l26_n93()
- fun_l27_n472
-end
-
-def fun_l26_n94()
- fun_l27_n778
-end
-
-def fun_l26_n95()
- fun_l27_n130
-end
-
-def fun_l26_n96()
- fun_l27_n735
-end
-
-def fun_l26_n97()
- fun_l27_n130
-end
-
-def fun_l26_n98()
- fun_l27_n95
-end
-
-def fun_l26_n99()
- fun_l27_n171
-end
-
-def fun_l26_n100()
- fun_l27_n121
-end
-
-def fun_l26_n101()
- fun_l27_n789
-end
-
-def fun_l26_n102()
- fun_l27_n124
-end
-
-def fun_l26_n103()
- fun_l27_n836
-end
-
-def fun_l26_n104()
- fun_l27_n785
-end
-
-def fun_l26_n105()
- fun_l27_n586
-end
-
-def fun_l26_n106()
- fun_l27_n220
-end
-
-def fun_l26_n107()
- fun_l27_n783
-end
-
-def fun_l26_n108()
- fun_l27_n239
-end
-
-def fun_l26_n109()
- fun_l27_n838
-end
-
-def fun_l26_n110()
- fun_l27_n563
-end
-
-def fun_l26_n111()
- fun_l27_n955
-end
-
-def fun_l26_n112()
- fun_l27_n889
-end
-
-def fun_l26_n113()
- fun_l27_n967
-end
-
-def fun_l26_n114()
- fun_l27_n19
-end
-
-def fun_l26_n115()
- fun_l27_n637
-end
-
-def fun_l26_n116()
- fun_l27_n914
-end
-
-def fun_l26_n117()
- fun_l27_n684
-end
-
-def fun_l26_n118()
- fun_l27_n352
-end
-
-def fun_l26_n119()
- fun_l27_n698
-end
-
-def fun_l26_n120()
- fun_l27_n669
-end
-
-def fun_l26_n121()
- fun_l27_n52
-end
-
-def fun_l26_n122()
- fun_l27_n485
-end
-
-def fun_l26_n123()
- fun_l27_n468
-end
-
-def fun_l26_n124()
- fun_l27_n340
-end
-
-def fun_l26_n125()
- fun_l27_n414
-end
-
-def fun_l26_n126()
- fun_l27_n994
-end
-
-def fun_l26_n127()
- fun_l27_n601
-end
-
-def fun_l26_n128()
- fun_l27_n679
-end
-
-def fun_l26_n129()
- fun_l27_n720
-end
-
-def fun_l26_n130()
- fun_l27_n66
-end
-
-def fun_l26_n131()
- fun_l27_n921
-end
-
-def fun_l26_n132()
- fun_l27_n385
-end
-
-def fun_l26_n133()
- fun_l27_n88
-end
-
-def fun_l26_n134()
- fun_l27_n164
-end
-
-def fun_l26_n135()
- fun_l27_n269
-end
-
-def fun_l26_n136()
- fun_l27_n371
-end
-
-def fun_l26_n137()
- fun_l27_n786
-end
-
-def fun_l26_n138()
- fun_l27_n464
-end
-
-def fun_l26_n139()
- fun_l27_n96
-end
-
-def fun_l26_n140()
- fun_l27_n494
-end
-
-def fun_l26_n141()
- fun_l27_n341
-end
-
-def fun_l26_n142()
- fun_l27_n646
-end
-
-def fun_l26_n143()
- fun_l27_n959
-end
-
-def fun_l26_n144()
- fun_l27_n645
-end
-
-def fun_l26_n145()
- fun_l27_n825
-end
-
-def fun_l26_n146()
- fun_l27_n416
-end
-
-def fun_l26_n147()
- fun_l27_n994
-end
-
-def fun_l26_n148()
- fun_l27_n875
-end
-
-def fun_l26_n149()
- fun_l27_n406
-end
-
-def fun_l26_n150()
- fun_l27_n857
-end
-
-def fun_l26_n151()
- fun_l27_n348
-end
-
-def fun_l26_n152()
- fun_l27_n611
-end
-
-def fun_l26_n153()
- fun_l27_n831
-end
-
-def fun_l26_n154()
- fun_l27_n412
-end
-
-def fun_l26_n155()
- fun_l27_n530
-end
-
-def fun_l26_n156()
- fun_l27_n892
-end
-
-def fun_l26_n157()
- fun_l27_n70
-end
-
-def fun_l26_n158()
- fun_l27_n756
-end
-
-def fun_l26_n159()
- fun_l27_n587
-end
-
-def fun_l26_n160()
- fun_l27_n796
-end
-
-def fun_l26_n161()
- fun_l27_n470
-end
-
-def fun_l26_n162()
- fun_l27_n290
-end
-
-def fun_l26_n163()
- fun_l27_n723
-end
-
-def fun_l26_n164()
- fun_l27_n660
-end
-
-def fun_l26_n165()
- fun_l27_n0
-end
-
-def fun_l26_n166()
- fun_l27_n223
-end
-
-def fun_l26_n167()
- fun_l27_n341
-end
-
-def fun_l26_n168()
- fun_l27_n128
-end
-
-def fun_l26_n169()
- fun_l27_n367
-end
-
-def fun_l26_n170()
- fun_l27_n487
-end
-
-def fun_l26_n171()
- fun_l27_n574
-end
-
-def fun_l26_n172()
- fun_l27_n437
-end
-
-def fun_l26_n173()
- fun_l27_n182
-end
-
-def fun_l26_n174()
- fun_l27_n607
-end
-
-def fun_l26_n175()
- fun_l27_n252
-end
-
-def fun_l26_n176()
- fun_l27_n996
-end
-
-def fun_l26_n177()
- fun_l27_n904
-end
-
-def fun_l26_n178()
- fun_l27_n505
-end
-
-def fun_l26_n179()
- fun_l27_n425
-end
-
-def fun_l26_n180()
- fun_l27_n610
-end
-
-def fun_l26_n181()
- fun_l27_n734
-end
-
-def fun_l26_n182()
- fun_l27_n427
-end
-
-def fun_l26_n183()
- fun_l27_n918
-end
-
-def fun_l26_n184()
- fun_l27_n376
-end
-
-def fun_l26_n185()
- fun_l27_n445
-end
-
-def fun_l26_n186()
- fun_l27_n227
-end
-
-def fun_l26_n187()
- fun_l27_n129
-end
-
-def fun_l26_n188()
- fun_l27_n139
-end
-
-def fun_l26_n189()
- fun_l27_n142
-end
-
-def fun_l26_n190()
- fun_l27_n388
-end
-
-def fun_l26_n191()
- fun_l27_n24
-end
-
-def fun_l26_n192()
- fun_l27_n369
-end
-
-def fun_l26_n193()
- fun_l27_n984
-end
-
-def fun_l26_n194()
- fun_l27_n342
-end
-
-def fun_l26_n195()
- fun_l27_n722
-end
-
-def fun_l26_n196()
- fun_l27_n846
-end
-
-def fun_l26_n197()
- fun_l27_n59
-end
-
-def fun_l26_n198()
- fun_l27_n471
-end
-
-def fun_l26_n199()
- fun_l27_n626
-end
-
-def fun_l26_n200()
- fun_l27_n973
-end
-
-def fun_l26_n201()
- fun_l27_n525
-end
-
-def fun_l26_n202()
- fun_l27_n412
-end
-
-def fun_l26_n203()
- fun_l27_n284
-end
-
-def fun_l26_n204()
- fun_l27_n383
-end
-
-def fun_l26_n205()
- fun_l27_n414
-end
-
-def fun_l26_n206()
- fun_l27_n448
-end
-
-def fun_l26_n207()
- fun_l27_n795
-end
-
-def fun_l26_n208()
- fun_l27_n708
-end
-
-def fun_l26_n209()
- fun_l27_n318
-end
-
-def fun_l26_n210()
- fun_l27_n284
-end
-
-def fun_l26_n211()
- fun_l27_n100
-end
-
-def fun_l26_n212()
- fun_l27_n702
-end
-
-def fun_l26_n213()
- fun_l27_n611
-end
-
-def fun_l26_n214()
- fun_l27_n106
-end
-
-def fun_l26_n215()
- fun_l27_n667
-end
-
-def fun_l26_n216()
- fun_l27_n822
-end
-
-def fun_l26_n217()
- fun_l27_n502
-end
-
-def fun_l26_n218()
- fun_l27_n284
-end
-
-def fun_l26_n219()
- fun_l27_n472
-end
-
-def fun_l26_n220()
- fun_l27_n907
-end
-
-def fun_l26_n221()
- fun_l27_n115
-end
-
-def fun_l26_n222()
- fun_l27_n6
-end
-
-def fun_l26_n223()
- fun_l27_n872
-end
-
-def fun_l26_n224()
- fun_l27_n145
-end
-
-def fun_l26_n225()
- fun_l27_n63
-end
-
-def fun_l26_n226()
- fun_l27_n295
-end
-
-def fun_l26_n227()
- fun_l27_n160
-end
-
-def fun_l26_n228()
- fun_l27_n72
-end
-
-def fun_l26_n229()
- fun_l27_n750
-end
-
-def fun_l26_n230()
- fun_l27_n386
-end
-
-def fun_l26_n231()
- fun_l27_n110
-end
-
-def fun_l26_n232()
- fun_l27_n497
-end
-
-def fun_l26_n233()
- fun_l27_n586
-end
-
-def fun_l26_n234()
- fun_l27_n435
-end
-
-def fun_l26_n235()
- fun_l27_n849
-end
-
-def fun_l26_n236()
- fun_l27_n47
-end
-
-def fun_l26_n237()
- fun_l27_n673
-end
-
-def fun_l26_n238()
- fun_l27_n435
-end
-
-def fun_l26_n239()
- fun_l27_n295
-end
-
-def fun_l26_n240()
- fun_l27_n466
-end
-
-def fun_l26_n241()
- fun_l27_n76
-end
-
-def fun_l26_n242()
- fun_l27_n679
-end
-
-def fun_l26_n243()
- fun_l27_n772
-end
-
-def fun_l26_n244()
- fun_l27_n137
-end
-
-def fun_l26_n245()
- fun_l27_n582
-end
-
-def fun_l26_n246()
- fun_l27_n344
-end
-
-def fun_l26_n247()
- fun_l27_n944
-end
-
-def fun_l26_n248()
- fun_l27_n657
-end
-
-def fun_l26_n249()
- fun_l27_n354
-end
-
-def fun_l26_n250()
- fun_l27_n467
-end
-
-def fun_l26_n251()
- fun_l27_n436
-end
-
-def fun_l26_n252()
- fun_l27_n923
-end
-
-def fun_l26_n253()
- fun_l27_n252
-end
-
-def fun_l26_n254()
- fun_l27_n404
-end
-
-def fun_l26_n255()
- fun_l27_n421
-end
-
-def fun_l26_n256()
- fun_l27_n422
-end
-
-def fun_l26_n257()
- fun_l27_n787
-end
-
-def fun_l26_n258()
- fun_l27_n173
-end
-
-def fun_l26_n259()
- fun_l27_n930
-end
-
-def fun_l26_n260()
- fun_l27_n625
-end
-
-def fun_l26_n261()
- fun_l27_n18
-end
-
-def fun_l26_n262()
- fun_l27_n763
-end
-
-def fun_l26_n263()
- fun_l27_n641
-end
-
-def fun_l26_n264()
- fun_l27_n114
-end
-
-def fun_l26_n265()
- fun_l27_n556
-end
-
-def fun_l26_n266()
- fun_l27_n127
-end
-
-def fun_l26_n267()
- fun_l27_n229
-end
-
-def fun_l26_n268()
- fun_l27_n901
-end
-
-def fun_l26_n269()
- fun_l27_n234
-end
-
-def fun_l26_n270()
- fun_l27_n444
-end
-
-def fun_l26_n271()
- fun_l27_n156
-end
-
-def fun_l26_n272()
- fun_l27_n35
-end
-
-def fun_l26_n273()
- fun_l27_n725
-end
-
-def fun_l26_n274()
- fun_l27_n983
-end
-
-def fun_l26_n275()
- fun_l27_n845
-end
-
-def fun_l26_n276()
- fun_l27_n324
-end
-
-def fun_l26_n277()
- fun_l27_n813
-end
-
-def fun_l26_n278()
- fun_l27_n331
-end
-
-def fun_l26_n279()
- fun_l27_n66
-end
-
-def fun_l26_n280()
- fun_l27_n471
-end
-
-def fun_l26_n281()
- fun_l27_n635
-end
-
-def fun_l26_n282()
- fun_l27_n180
-end
-
-def fun_l26_n283()
- fun_l27_n563
-end
-
-def fun_l26_n284()
- fun_l27_n199
-end
-
-def fun_l26_n285()
- fun_l27_n238
-end
-
-def fun_l26_n286()
- fun_l27_n789
-end
-
-def fun_l26_n287()
- fun_l27_n413
-end
-
-def fun_l26_n288()
- fun_l27_n358
-end
-
-def fun_l26_n289()
- fun_l27_n923
-end
-
-def fun_l26_n290()
- fun_l27_n443
-end
-
-def fun_l26_n291()
- fun_l27_n706
-end
-
-def fun_l26_n292()
- fun_l27_n752
-end
-
-def fun_l26_n293()
- fun_l27_n231
-end
-
-def fun_l26_n294()
- fun_l27_n185
-end
-
-def fun_l26_n295()
- fun_l27_n604
-end
-
-def fun_l26_n296()
- fun_l27_n10
-end
-
-def fun_l26_n297()
- fun_l27_n758
-end
-
-def fun_l26_n298()
- fun_l27_n417
-end
-
-def fun_l26_n299()
- fun_l27_n303
-end
-
-def fun_l26_n300()
- fun_l27_n524
-end
-
-def fun_l26_n301()
- fun_l27_n198
-end
-
-def fun_l26_n302()
- fun_l27_n127
-end
-
-def fun_l26_n303()
- fun_l27_n971
-end
-
-def fun_l26_n304()
- fun_l27_n4
-end
-
-def fun_l26_n305()
- fun_l27_n333
-end
-
-def fun_l26_n306()
- fun_l27_n782
-end
-
-def fun_l26_n307()
- fun_l27_n158
-end
-
-def fun_l26_n308()
- fun_l27_n414
-end
-
-def fun_l26_n309()
- fun_l27_n730
-end
-
-def fun_l26_n310()
- fun_l27_n912
-end
-
-def fun_l26_n311()
- fun_l27_n343
-end
-
-def fun_l26_n312()
- fun_l27_n885
-end
-
-def fun_l26_n313()
- fun_l27_n682
-end
-
-def fun_l26_n314()
- fun_l27_n126
-end
-
-def fun_l26_n315()
- fun_l27_n680
-end
-
-def fun_l26_n316()
- fun_l27_n884
-end
-
-def fun_l26_n317()
- fun_l27_n483
-end
-
-def fun_l26_n318()
- fun_l27_n601
-end
-
-def fun_l26_n319()
- fun_l27_n265
-end
-
-def fun_l26_n320()
- fun_l27_n109
-end
-
-def fun_l26_n321()
- fun_l27_n436
-end
-
-def fun_l26_n322()
- fun_l27_n209
-end
-
-def fun_l26_n323()
- fun_l27_n669
-end
-
-def fun_l26_n324()
- fun_l27_n680
-end
-
-def fun_l26_n325()
- fun_l27_n844
-end
-
-def fun_l26_n326()
- fun_l27_n729
-end
-
-def fun_l26_n327()
- fun_l27_n882
-end
-
-def fun_l26_n328()
- fun_l27_n99
-end
-
-def fun_l26_n329()
- fun_l27_n586
-end
-
-def fun_l26_n330()
- fun_l27_n328
-end
-
-def fun_l26_n331()
- fun_l27_n694
-end
-
-def fun_l26_n332()
- fun_l27_n259
-end
-
-def fun_l26_n333()
- fun_l27_n364
-end
-
-def fun_l26_n334()
- fun_l27_n944
-end
-
-def fun_l26_n335()
- fun_l27_n483
-end
-
-def fun_l26_n336()
- fun_l27_n570
-end
-
-def fun_l26_n337()
- fun_l27_n348
-end
-
-def fun_l26_n338()
- fun_l27_n565
-end
-
-def fun_l26_n339()
- fun_l27_n402
-end
-
-def fun_l26_n340()
- fun_l27_n890
-end
-
-def fun_l26_n341()
- fun_l27_n486
-end
-
-def fun_l26_n342()
- fun_l27_n387
-end
-
-def fun_l26_n343()
- fun_l27_n239
-end
-
-def fun_l26_n344()
- fun_l27_n433
-end
-
-def fun_l26_n345()
- fun_l27_n918
-end
-
-def fun_l26_n346()
- fun_l27_n524
-end
-
-def fun_l26_n347()
- fun_l27_n475
-end
-
-def fun_l26_n348()
- fun_l27_n749
-end
-
-def fun_l26_n349()
- fun_l27_n61
-end
-
-def fun_l26_n350()
- fun_l27_n735
-end
-
-def fun_l26_n351()
- fun_l27_n582
-end
-
-def fun_l26_n352()
- fun_l27_n519
-end
-
-def fun_l26_n353()
- fun_l27_n234
-end
-
-def fun_l26_n354()
- fun_l27_n868
-end
-
-def fun_l26_n355()
- fun_l27_n109
-end
-
-def fun_l26_n356()
- fun_l27_n898
-end
-
-def fun_l26_n357()
- fun_l27_n541
-end
-
-def fun_l26_n358()
- fun_l27_n328
-end
-
-def fun_l26_n359()
- fun_l27_n954
-end
-
-def fun_l26_n360()
- fun_l27_n219
-end
-
-def fun_l26_n361()
- fun_l27_n776
-end
-
-def fun_l26_n362()
- fun_l27_n402
-end
-
-def fun_l26_n363()
- fun_l27_n169
-end
-
-def fun_l26_n364()
- fun_l27_n395
-end
-
-def fun_l26_n365()
- fun_l27_n852
-end
-
-def fun_l26_n366()
- fun_l27_n668
-end
-
-def fun_l26_n367()
- fun_l27_n0
-end
-
-def fun_l26_n368()
- fun_l27_n660
-end
-
-def fun_l26_n369()
- fun_l27_n703
-end
-
-def fun_l26_n370()
- fun_l27_n946
-end
-
-def fun_l26_n371()
- fun_l27_n522
-end
-
-def fun_l26_n372()
- fun_l27_n57
-end
-
-def fun_l26_n373()
- fun_l27_n228
-end
-
-def fun_l26_n374()
- fun_l27_n25
-end
-
-def fun_l26_n375()
- fun_l27_n433
-end
-
-def fun_l26_n376()
- fun_l27_n557
-end
-
-def fun_l26_n377()
- fun_l27_n542
-end
-
-def fun_l26_n378()
- fun_l27_n341
-end
-
-def fun_l26_n379()
- fun_l27_n28
-end
-
-def fun_l26_n380()
- fun_l27_n591
-end
-
-def fun_l26_n381()
- fun_l27_n139
-end
-
-def fun_l26_n382()
- fun_l27_n303
-end
-
-def fun_l26_n383()
- fun_l27_n369
-end
-
-def fun_l26_n384()
- fun_l27_n124
-end
-
-def fun_l26_n385()
- fun_l27_n459
-end
-
-def fun_l26_n386()
- fun_l27_n338
-end
-
-def fun_l26_n387()
- fun_l27_n246
-end
-
-def fun_l26_n388()
- fun_l27_n248
-end
-
-def fun_l26_n389()
- fun_l27_n182
-end
-
-def fun_l26_n390()
- fun_l27_n176
-end
-
-def fun_l26_n391()
- fun_l27_n307
-end
-
-def fun_l26_n392()
- fun_l27_n782
-end
-
-def fun_l26_n393()
- fun_l27_n576
-end
-
-def fun_l26_n394()
- fun_l27_n777
-end
-
-def fun_l26_n395()
- fun_l27_n962
-end
-
-def fun_l26_n396()
- fun_l27_n993
-end
-
-def fun_l26_n397()
- fun_l27_n592
-end
-
-def fun_l26_n398()
- fun_l27_n710
-end
-
-def fun_l26_n399()
- fun_l27_n644
-end
-
-def fun_l26_n400()
- fun_l27_n11
-end
-
-def fun_l26_n401()
- fun_l27_n774
-end
-
-def fun_l26_n402()
- fun_l27_n190
-end
-
-def fun_l26_n403()
- fun_l27_n15
-end
-
-def fun_l26_n404()
- fun_l27_n47
-end
-
-def fun_l26_n405()
- fun_l27_n802
-end
-
-def fun_l26_n406()
- fun_l27_n659
-end
-
-def fun_l26_n407()
- fun_l27_n295
-end
-
-def fun_l26_n408()
- fun_l27_n120
-end
-
-def fun_l26_n409()
- fun_l27_n438
-end
-
-def fun_l26_n410()
- fun_l27_n443
-end
-
-def fun_l26_n411()
- fun_l27_n860
-end
-
-def fun_l26_n412()
- fun_l27_n285
-end
-
-def fun_l26_n413()
- fun_l27_n457
-end
-
-def fun_l26_n414()
- fun_l27_n942
-end
-
-def fun_l26_n415()
- fun_l27_n425
-end
-
-def fun_l26_n416()
- fun_l27_n54
-end
-
-def fun_l26_n417()
- fun_l27_n675
-end
-
-def fun_l26_n418()
- fun_l27_n739
-end
-
-def fun_l26_n419()
- fun_l27_n709
-end
-
-def fun_l26_n420()
- fun_l27_n643
-end
-
-def fun_l26_n421()
- fun_l27_n473
-end
-
-def fun_l26_n422()
- fun_l27_n452
-end
-
-def fun_l26_n423()
- fun_l27_n942
-end
-
-def fun_l26_n424()
- fun_l27_n270
-end
-
-def fun_l26_n425()
- fun_l27_n711
-end
-
-def fun_l26_n426()
- fun_l27_n27
-end
-
-def fun_l26_n427()
- fun_l27_n120
-end
-
-def fun_l26_n428()
- fun_l27_n565
-end
-
-def fun_l26_n429()
- fun_l27_n182
-end
-
-def fun_l26_n430()
- fun_l27_n641
-end
-
-def fun_l26_n431()
- fun_l27_n227
-end
-
-def fun_l26_n432()
- fun_l27_n59
-end
-
-def fun_l26_n433()
- fun_l27_n599
-end
-
-def fun_l26_n434()
- fun_l27_n448
-end
-
-def fun_l26_n435()
- fun_l27_n562
-end
-
-def fun_l26_n436()
- fun_l27_n201
-end
-
-def fun_l26_n437()
- fun_l27_n929
-end
-
-def fun_l26_n438()
- fun_l27_n275
-end
-
-def fun_l26_n439()
- fun_l27_n339
-end
-
-def fun_l26_n440()
- fun_l27_n519
-end
-
-def fun_l26_n441()
- fun_l27_n98
-end
-
-def fun_l26_n442()
- fun_l27_n581
-end
-
-def fun_l26_n443()
- fun_l27_n840
-end
-
-def fun_l26_n444()
- fun_l27_n904
-end
-
-def fun_l26_n445()
- fun_l27_n468
-end
-
-def fun_l26_n446()
- fun_l27_n6
-end
-
-def fun_l26_n447()
- fun_l27_n877
-end
-
-def fun_l26_n448()
- fun_l27_n609
-end
-
-def fun_l26_n449()
- fun_l27_n218
-end
-
-def fun_l26_n450()
- fun_l27_n869
-end
-
-def fun_l26_n451()
- fun_l27_n184
-end
-
-def fun_l26_n452()
- fun_l27_n7
-end
-
-def fun_l26_n453()
- fun_l27_n647
-end
-
-def fun_l26_n454()
- fun_l27_n470
-end
-
-def fun_l26_n455()
- fun_l27_n547
-end
-
-def fun_l26_n456()
- fun_l27_n277
-end
-
-def fun_l26_n457()
- fun_l27_n302
-end
-
-def fun_l26_n458()
- fun_l27_n355
-end
-
-def fun_l26_n459()
- fun_l27_n805
-end
-
-def fun_l26_n460()
- fun_l27_n201
-end
-
-def fun_l26_n461()
- fun_l27_n16
-end
-
-def fun_l26_n462()
- fun_l27_n156
-end
-
-def fun_l26_n463()
- fun_l27_n219
-end
-
-def fun_l26_n464()
- fun_l27_n507
-end
-
-def fun_l26_n465()
- fun_l27_n527
-end
-
-def fun_l26_n466()
- fun_l27_n307
-end
-
-def fun_l26_n467()
- fun_l27_n654
-end
-
-def fun_l26_n468()
- fun_l27_n699
-end
-
-def fun_l26_n469()
- fun_l27_n772
-end
-
-def fun_l26_n470()
- fun_l27_n761
-end
-
-def fun_l26_n471()
- fun_l27_n736
-end
-
-def fun_l26_n472()
- fun_l27_n104
-end
-
-def fun_l26_n473()
- fun_l27_n720
-end
-
-def fun_l26_n474()
- fun_l27_n418
-end
-
-def fun_l26_n475()
- fun_l27_n403
-end
-
-def fun_l26_n476()
- fun_l27_n625
-end
-
-def fun_l26_n477()
- fun_l27_n541
-end
-
-def fun_l26_n478()
- fun_l27_n441
-end
-
-def fun_l26_n479()
- fun_l27_n287
-end
-
-def fun_l26_n480()
- fun_l27_n746
-end
-
-def fun_l26_n481()
- fun_l27_n205
-end
-
-def fun_l26_n482()
- fun_l27_n771
-end
-
-def fun_l26_n483()
- fun_l27_n778
-end
-
-def fun_l26_n484()
- fun_l27_n284
-end
-
-def fun_l26_n485()
- fun_l27_n475
-end
-
-def fun_l26_n486()
- fun_l27_n449
-end
-
-def fun_l26_n487()
- fun_l27_n485
-end
-
-def fun_l26_n488()
- fun_l27_n124
-end
-
-def fun_l26_n489()
- fun_l27_n4
-end
-
-def fun_l26_n490()
- fun_l27_n270
-end
-
-def fun_l26_n491()
- fun_l27_n596
-end
-
-def fun_l26_n492()
- fun_l27_n279
-end
-
-def fun_l26_n493()
- fun_l27_n226
-end
-
-def fun_l26_n494()
- fun_l27_n718
-end
-
-def fun_l26_n495()
- fun_l27_n324
-end
-
-def fun_l26_n496()
- fun_l27_n430
-end
-
-def fun_l26_n497()
- fun_l27_n196
-end
-
-def fun_l26_n498()
- fun_l27_n509
-end
-
-def fun_l26_n499()
- fun_l27_n282
-end
-
-def fun_l26_n500()
- fun_l27_n61
-end
-
-def fun_l26_n501()
- fun_l27_n995
-end
-
-def fun_l26_n502()
- fun_l27_n75
-end
-
-def fun_l26_n503()
- fun_l27_n158
-end
-
-def fun_l26_n504()
- fun_l27_n551
-end
-
-def fun_l26_n505()
- fun_l27_n936
-end
-
-def fun_l26_n506()
- fun_l27_n23
-end
-
-def fun_l26_n507()
- fun_l27_n799
-end
-
-def fun_l26_n508()
- fun_l27_n25
-end
-
-def fun_l26_n509()
- fun_l27_n533
-end
-
-def fun_l26_n510()
- fun_l27_n325
-end
-
-def fun_l26_n511()
- fun_l27_n375
-end
-
-def fun_l26_n512()
- fun_l27_n18
-end
-
-def fun_l26_n513()
- fun_l27_n497
-end
-
-def fun_l26_n514()
- fun_l27_n51
-end
-
-def fun_l26_n515()
- fun_l27_n680
-end
-
-def fun_l26_n516()
- fun_l27_n152
-end
-
-def fun_l26_n517()
- fun_l27_n495
-end
-
-def fun_l26_n518()
- fun_l27_n956
-end
-
-def fun_l26_n519()
- fun_l27_n187
-end
-
-def fun_l26_n520()
- fun_l27_n292
-end
-
-def fun_l26_n521()
- fun_l27_n663
-end
-
-def fun_l26_n522()
- fun_l27_n178
-end
-
-def fun_l26_n523()
- fun_l27_n323
-end
-
-def fun_l26_n524()
- fun_l27_n222
-end
-
-def fun_l26_n525()
- fun_l27_n652
-end
-
-def fun_l26_n526()
- fun_l27_n519
-end
-
-def fun_l26_n527()
- fun_l27_n102
-end
-
-def fun_l26_n528()
- fun_l27_n361
-end
-
-def fun_l26_n529()
- fun_l27_n201
-end
-
-def fun_l26_n530()
- fun_l27_n129
-end
-
-def fun_l26_n531()
- fun_l27_n438
-end
-
-def fun_l26_n532()
- fun_l27_n387
-end
-
-def fun_l26_n533()
- fun_l27_n641
-end
-
-def fun_l26_n534()
- fun_l27_n111
-end
-
-def fun_l26_n535()
- fun_l27_n548
-end
-
-def fun_l26_n536()
- fun_l27_n446
-end
-
-def fun_l26_n537()
- fun_l27_n302
-end
-
-def fun_l26_n538()
- fun_l27_n438
-end
-
-def fun_l26_n539()
- fun_l27_n816
-end
-
-def fun_l26_n540()
- fun_l27_n759
-end
-
-def fun_l26_n541()
- fun_l27_n318
-end
-
-def fun_l26_n542()
- fun_l27_n895
-end
-
-def fun_l26_n543()
- fun_l27_n309
-end
-
-def fun_l26_n544()
- fun_l27_n35
-end
-
-def fun_l26_n545()
- fun_l27_n785
-end
-
-def fun_l26_n546()
- fun_l27_n846
-end
-
-def fun_l26_n547()
- fun_l27_n191
-end
-
-def fun_l26_n548()
- fun_l27_n414
-end
-
-def fun_l26_n549()
- fun_l27_n251
-end
-
-def fun_l26_n550()
- fun_l27_n982
-end
-
-def fun_l26_n551()
- fun_l27_n516
-end
-
-def fun_l26_n552()
- fun_l27_n724
-end
-
-def fun_l26_n553()
- fun_l27_n473
-end
-
-def fun_l26_n554()
- fun_l27_n808
-end
-
-def fun_l26_n555()
- fun_l27_n617
-end
-
-def fun_l26_n556()
- fun_l27_n306
-end
-
-def fun_l26_n557()
- fun_l27_n701
-end
-
-def fun_l26_n558()
- fun_l27_n941
-end
-
-def fun_l26_n559()
- fun_l27_n60
-end
-
-def fun_l26_n560()
- fun_l27_n132
-end
-
-def fun_l26_n561()
- fun_l27_n685
-end
-
-def fun_l26_n562()
- fun_l27_n619
-end
-
-def fun_l26_n563()
- fun_l27_n407
-end
-
-def fun_l26_n564()
- fun_l27_n29
-end
-
-def fun_l26_n565()
- fun_l27_n53
-end
-
-def fun_l26_n566()
- fun_l27_n267
-end
-
-def fun_l26_n567()
- fun_l27_n79
-end
-
-def fun_l26_n568()
- fun_l27_n170
-end
-
-def fun_l26_n569()
- fun_l27_n469
-end
-
-def fun_l26_n570()
- fun_l27_n67
-end
-
-def fun_l26_n571()
- fun_l27_n794
-end
-
-def fun_l26_n572()
- fun_l27_n641
-end
-
-def fun_l26_n573()
- fun_l27_n224
-end
-
-def fun_l26_n574()
- fun_l27_n415
-end
-
-def fun_l26_n575()
- fun_l27_n235
-end
-
-def fun_l26_n576()
- fun_l27_n425
-end
-
-def fun_l26_n577()
- fun_l27_n335
-end
-
-def fun_l26_n578()
- fun_l27_n251
-end
-
-def fun_l26_n579()
- fun_l27_n421
-end
-
-def fun_l26_n580()
- fun_l27_n20
-end
-
-def fun_l26_n581()
- fun_l27_n795
-end
-
-def fun_l26_n582()
- fun_l27_n831
-end
-
-def fun_l26_n583()
- fun_l27_n666
-end
-
-def fun_l26_n584()
- fun_l27_n664
-end
-
-def fun_l26_n585()
- fun_l27_n383
-end
-
-def fun_l26_n586()
- fun_l27_n587
-end
-
-def fun_l26_n587()
- fun_l27_n515
-end
-
-def fun_l26_n588()
- fun_l27_n410
-end
-
-def fun_l26_n589()
- fun_l27_n379
-end
-
-def fun_l26_n590()
- fun_l27_n467
-end
-
-def fun_l26_n591()
- fun_l27_n557
-end
-
-def fun_l26_n592()
- fun_l27_n444
-end
-
-def fun_l26_n593()
- fun_l27_n629
-end
-
-def fun_l26_n594()
- fun_l27_n55
-end
-
-def fun_l26_n595()
- fun_l27_n581
-end
-
-def fun_l26_n596()
- fun_l27_n106
-end
-
-def fun_l26_n597()
- fun_l27_n896
-end
-
-def fun_l26_n598()
- fun_l27_n180
-end
-
-def fun_l26_n599()
- fun_l27_n471
-end
-
-def fun_l26_n600()
- fun_l27_n28
-end
-
-def fun_l26_n601()
- fun_l27_n195
-end
-
-def fun_l26_n602()
- fun_l27_n562
-end
-
-def fun_l26_n603()
- fun_l27_n367
-end
-
-def fun_l26_n604()
- fun_l27_n609
-end
-
-def fun_l26_n605()
- fun_l27_n699
-end
-
-def fun_l26_n606()
- fun_l27_n300
-end
-
-def fun_l26_n607()
- fun_l27_n28
-end
-
-def fun_l26_n608()
- fun_l27_n362
-end
-
-def fun_l26_n609()
- fun_l27_n188
-end
-
-def fun_l26_n610()
- fun_l27_n320
-end
-
-def fun_l26_n611()
- fun_l27_n974
-end
-
-def fun_l26_n612()
- fun_l27_n226
-end
-
-def fun_l26_n613()
- fun_l27_n723
-end
-
-def fun_l26_n614()
- fun_l27_n406
-end
-
-def fun_l26_n615()
- fun_l27_n60
-end
-
-def fun_l26_n616()
- fun_l27_n921
-end
-
-def fun_l26_n617()
- fun_l27_n141
-end
-
-def fun_l26_n618()
- fun_l27_n781
-end
-
-def fun_l26_n619()
- fun_l27_n279
-end
-
-def fun_l26_n620()
- fun_l27_n159
-end
-
-def fun_l26_n621()
- fun_l27_n396
-end
-
-def fun_l26_n622()
- fun_l27_n365
-end
-
-def fun_l26_n623()
- fun_l27_n128
-end
-
-def fun_l26_n624()
- fun_l27_n143
-end
-
-def fun_l26_n625()
- fun_l27_n553
-end
-
-def fun_l26_n626()
- fun_l27_n695
-end
-
-def fun_l26_n627()
- fun_l27_n526
-end
-
-def fun_l26_n628()
- fun_l27_n623
-end
-
-def fun_l26_n629()
- fun_l27_n589
-end
-
-def fun_l26_n630()
- fun_l27_n328
-end
-
-def fun_l26_n631()
- fun_l27_n959
-end
-
-def fun_l26_n632()
- fun_l27_n586
-end
-
-def fun_l26_n633()
- fun_l27_n163
-end
-
-def fun_l26_n634()
- fun_l27_n821
-end
-
-def fun_l26_n635()
- fun_l27_n981
-end
-
-def fun_l26_n636()
- fun_l27_n221
-end
-
-def fun_l26_n637()
- fun_l27_n752
-end
-
-def fun_l26_n638()
- fun_l27_n252
-end
-
-def fun_l26_n639()
- fun_l27_n74
-end
-
-def fun_l26_n640()
- fun_l27_n694
-end
-
-def fun_l26_n641()
- fun_l27_n761
-end
-
-def fun_l26_n642()
- fun_l27_n877
-end
-
-def fun_l26_n643()
- fun_l27_n480
-end
-
-def fun_l26_n644()
- fun_l27_n627
-end
-
-def fun_l26_n645()
- fun_l27_n586
-end
-
-def fun_l26_n646()
- fun_l27_n820
-end
-
-def fun_l26_n647()
- fun_l27_n485
-end
-
-def fun_l26_n648()
- fun_l27_n230
-end
-
-def fun_l26_n649()
- fun_l27_n698
-end
-
-def fun_l26_n650()
- fun_l27_n700
-end
-
-def fun_l26_n651()
- fun_l27_n536
-end
-
-def fun_l26_n652()
- fun_l27_n343
-end
-
-def fun_l26_n653()
- fun_l27_n453
-end
-
-def fun_l26_n654()
- fun_l27_n780
-end
-
-def fun_l26_n655()
- fun_l27_n402
-end
-
-def fun_l26_n656()
- fun_l27_n749
-end
-
-def fun_l26_n657()
- fun_l27_n248
-end
-
-def fun_l26_n658()
- fun_l27_n326
-end
-
-def fun_l26_n659()
- fun_l27_n819
-end
-
-def fun_l26_n660()
- fun_l27_n968
-end
-
-def fun_l26_n661()
- fun_l27_n123
-end
-
-def fun_l26_n662()
- fun_l27_n467
-end
-
-def fun_l26_n663()
- fun_l27_n855
-end
-
-def fun_l26_n664()
- fun_l27_n861
-end
-
-def fun_l26_n665()
- fun_l27_n335
-end
-
-def fun_l26_n666()
- fun_l27_n805
-end
-
-def fun_l26_n667()
- fun_l27_n284
-end
-
-def fun_l26_n668()
- fun_l27_n283
-end
-
-def fun_l26_n669()
- fun_l27_n471
-end
-
-def fun_l26_n670()
- fun_l27_n479
-end
-
-def fun_l26_n671()
- fun_l27_n938
-end
-
-def fun_l26_n672()
- fun_l27_n288
-end
-
-def fun_l26_n673()
- fun_l27_n0
-end
-
-def fun_l26_n674()
- fun_l27_n856
-end
-
-def fun_l26_n675()
- fun_l27_n490
-end
-
-def fun_l26_n676()
- fun_l27_n88
-end
-
-def fun_l26_n677()
- fun_l27_n584
-end
-
-def fun_l26_n678()
- fun_l27_n138
-end
-
-def fun_l26_n679()
- fun_l27_n998
-end
-
-def fun_l26_n680()
- fun_l27_n259
-end
-
-def fun_l26_n681()
- fun_l27_n913
-end
-
-def fun_l26_n682()
- fun_l27_n697
-end
-
-def fun_l26_n683()
- fun_l27_n102
-end
-
-def fun_l26_n684()
- fun_l27_n726
-end
-
-def fun_l26_n685()
- fun_l27_n655
-end
-
-def fun_l26_n686()
- fun_l27_n264
-end
-
-def fun_l26_n687()
- fun_l27_n603
-end
-
-def fun_l26_n688()
- fun_l27_n331
-end
-
-def fun_l26_n689()
- fun_l27_n760
-end
-
-def fun_l26_n690()
- fun_l27_n105
-end
-
-def fun_l26_n691()
- fun_l27_n554
-end
-
-def fun_l26_n692()
- fun_l27_n287
-end
-
-def fun_l26_n693()
- fun_l27_n592
-end
-
-def fun_l26_n694()
- fun_l27_n22
-end
-
-def fun_l26_n695()
- fun_l27_n794
-end
-
-def fun_l26_n696()
- fun_l27_n196
-end
-
-def fun_l26_n697()
- fun_l27_n848
-end
-
-def fun_l26_n698()
- fun_l27_n589
-end
-
-def fun_l26_n699()
- fun_l27_n267
-end
-
-def fun_l26_n700()
- fun_l27_n562
-end
-
-def fun_l26_n701()
- fun_l27_n563
-end
-
-def fun_l26_n702()
- fun_l27_n909
-end
-
-def fun_l26_n703()
- fun_l27_n92
-end
-
-def fun_l26_n704()
- fun_l27_n140
-end
-
-def fun_l26_n705()
- fun_l27_n330
-end
-
-def fun_l26_n706()
- fun_l27_n734
-end
-
-def fun_l26_n707()
- fun_l27_n994
-end
-
-def fun_l26_n708()
- fun_l27_n414
-end
-
-def fun_l26_n709()
- fun_l27_n931
-end
-
-def fun_l26_n710()
- fun_l27_n82
-end
-
-def fun_l26_n711()
- fun_l27_n341
-end
-
-def fun_l26_n712()
- fun_l27_n9
-end
-
-def fun_l26_n713()
- fun_l27_n868
-end
-
-def fun_l26_n714()
- fun_l27_n249
-end
-
-def fun_l26_n715()
- fun_l27_n393
-end
-
-def fun_l26_n716()
- fun_l27_n835
-end
-
-def fun_l26_n717()
- fun_l27_n975
-end
-
-def fun_l26_n718()
- fun_l27_n110
-end
-
-def fun_l26_n719()
- fun_l27_n700
-end
-
-def fun_l26_n720()
- fun_l27_n396
-end
-
-def fun_l26_n721()
- fun_l27_n973
-end
-
-def fun_l26_n722()
- fun_l27_n898
-end
-
-def fun_l26_n723()
- fun_l27_n418
-end
-
-def fun_l26_n724()
- fun_l27_n342
-end
-
-def fun_l26_n725()
- fun_l27_n783
-end
-
-def fun_l26_n726()
- fun_l27_n86
-end
-
-def fun_l26_n727()
- fun_l27_n556
-end
-
-def fun_l26_n728()
- fun_l27_n777
-end
-
-def fun_l26_n729()
- fun_l27_n729
-end
-
-def fun_l26_n730()
- fun_l27_n156
-end
-
-def fun_l26_n731()
- fun_l27_n458
-end
-
-def fun_l26_n732()
- fun_l27_n580
-end
-
-def fun_l26_n733()
- fun_l27_n764
-end
-
-def fun_l26_n734()
- fun_l27_n295
-end
-
-def fun_l26_n735()
- fun_l27_n850
-end
-
-def fun_l26_n736()
- fun_l27_n881
-end
-
-def fun_l26_n737()
- fun_l27_n416
-end
-
-def fun_l26_n738()
- fun_l27_n996
-end
-
-def fun_l26_n739()
- fun_l27_n347
-end
-
-def fun_l26_n740()
- fun_l27_n607
-end
-
-def fun_l26_n741()
- fun_l27_n749
-end
-
-def fun_l26_n742()
- fun_l27_n564
-end
-
-def fun_l26_n743()
- fun_l27_n217
-end
-
-def fun_l26_n744()
- fun_l27_n375
-end
-
-def fun_l26_n745()
- fun_l27_n487
-end
-
-def fun_l26_n746()
- fun_l27_n86
-end
-
-def fun_l26_n747()
- fun_l27_n765
-end
-
-def fun_l26_n748()
- fun_l27_n569
-end
-
-def fun_l26_n749()
- fun_l27_n461
-end
-
-def fun_l26_n750()
- fun_l27_n633
-end
-
-def fun_l26_n751()
- fun_l27_n89
-end
-
-def fun_l26_n752()
- fun_l27_n841
-end
-
-def fun_l26_n753()
- fun_l27_n499
-end
-
-def fun_l26_n754()
- fun_l27_n947
-end
-
-def fun_l26_n755()
- fun_l27_n690
-end
-
-def fun_l26_n756()
- fun_l27_n531
-end
-
-def fun_l26_n757()
- fun_l27_n766
-end
-
-def fun_l26_n758()
- fun_l27_n853
-end
-
-def fun_l26_n759()
- fun_l27_n65
-end
-
-def fun_l26_n760()
- fun_l27_n884
-end
-
-def fun_l26_n761()
- fun_l27_n235
-end
-
-def fun_l26_n762()
- fun_l27_n39
-end
-
-def fun_l26_n763()
- fun_l27_n868
-end
-
-def fun_l26_n764()
- fun_l27_n202
-end
-
-def fun_l26_n765()
- fun_l27_n360
-end
-
-def fun_l26_n766()
- fun_l27_n450
-end
-
-def fun_l26_n767()
- fun_l27_n590
-end
-
-def fun_l26_n768()
- fun_l27_n635
-end
-
-def fun_l26_n769()
- fun_l27_n314
-end
-
-def fun_l26_n770()
- fun_l27_n68
-end
-
-def fun_l26_n771()
- fun_l27_n858
-end
-
-def fun_l26_n772()
- fun_l27_n51
-end
-
-def fun_l26_n773()
- fun_l27_n524
-end
-
-def fun_l26_n774()
- fun_l27_n13
-end
-
-def fun_l26_n775()
- fun_l27_n451
-end
-
-def fun_l26_n776()
- fun_l27_n682
-end
-
-def fun_l26_n777()
- fun_l27_n736
-end
-
-def fun_l26_n778()
- fun_l27_n250
-end
-
-def fun_l26_n779()
- fun_l27_n810
-end
-
-def fun_l26_n780()
- fun_l27_n979
-end
-
-def fun_l26_n781()
- fun_l27_n102
-end
-
-def fun_l26_n782()
- fun_l27_n955
-end
-
-def fun_l26_n783()
- fun_l27_n610
-end
-
-def fun_l26_n784()
- fun_l27_n301
-end
-
-def fun_l26_n785()
- fun_l27_n389
-end
-
-def fun_l26_n786()
- fun_l27_n754
-end
-
-def fun_l26_n787()
- fun_l27_n717
-end
-
-def fun_l26_n788()
- fun_l27_n77
-end
-
-def fun_l26_n789()
- fun_l27_n401
-end
-
-def fun_l26_n790()
- fun_l27_n430
-end
-
-def fun_l26_n791()
- fun_l27_n310
-end
-
-def fun_l26_n792()
- fun_l27_n839
-end
-
-def fun_l26_n793()
- fun_l27_n682
-end
-
-def fun_l26_n794()
- fun_l27_n648
-end
-
-def fun_l26_n795()
- fun_l27_n281
-end
-
-def fun_l26_n796()
- fun_l27_n749
-end
-
-def fun_l26_n797()
- fun_l27_n502
-end
-
-def fun_l26_n798()
- fun_l27_n201
-end
-
-def fun_l26_n799()
- fun_l27_n851
-end
-
-def fun_l26_n800()
- fun_l27_n249
-end
-
-def fun_l26_n801()
- fun_l27_n119
-end
-
-def fun_l26_n802()
- fun_l27_n519
-end
-
-def fun_l26_n803()
- fun_l27_n157
-end
-
-def fun_l26_n804()
- fun_l27_n53
-end
-
-def fun_l26_n805()
- fun_l27_n765
-end
-
-def fun_l26_n806()
- fun_l27_n48
-end
-
-def fun_l26_n807()
- fun_l27_n127
-end
-
-def fun_l26_n808()
- fun_l27_n418
-end
-
-def fun_l26_n809()
- fun_l27_n650
-end
-
-def fun_l26_n810()
- fun_l27_n918
-end
-
-def fun_l26_n811()
- fun_l27_n878
-end
-
-def fun_l26_n812()
- fun_l27_n244
-end
-
-def fun_l26_n813()
- fun_l27_n611
-end
-
-def fun_l26_n814()
- fun_l27_n82
-end
-
-def fun_l26_n815()
- fun_l27_n6
-end
-
-def fun_l26_n816()
- fun_l27_n486
-end
-
-def fun_l26_n817()
- fun_l27_n711
-end
-
-def fun_l26_n818()
- fun_l27_n792
-end
-
-def fun_l26_n819()
- fun_l27_n974
-end
-
-def fun_l26_n820()
- fun_l27_n480
-end
-
-def fun_l26_n821()
- fun_l27_n460
-end
-
-def fun_l26_n822()
- fun_l27_n520
-end
-
-def fun_l26_n823()
- fun_l27_n803
-end
-
-def fun_l26_n824()
- fun_l27_n734
-end
-
-def fun_l26_n825()
- fun_l27_n336
-end
-
-def fun_l26_n826()
- fun_l27_n657
-end
-
-def fun_l26_n827()
- fun_l27_n20
-end
-
-def fun_l26_n828()
- fun_l27_n83
-end
-
-def fun_l26_n829()
- fun_l27_n452
-end
-
-def fun_l26_n830()
- fun_l27_n973
-end
-
-def fun_l26_n831()
- fun_l27_n79
-end
-
-def fun_l26_n832()
- fun_l27_n327
-end
-
-def fun_l26_n833()
- fun_l27_n36
-end
-
-def fun_l26_n834()
- fun_l27_n186
-end
-
-def fun_l26_n835()
- fun_l27_n946
-end
-
-def fun_l26_n836()
- fun_l27_n776
-end
-
-def fun_l26_n837()
- fun_l27_n33
-end
-
-def fun_l26_n838()
- fun_l27_n966
-end
-
-def fun_l26_n839()
- fun_l27_n961
-end
-
-def fun_l26_n840()
- fun_l27_n181
-end
-
-def fun_l26_n841()
- fun_l27_n103
-end
-
-def fun_l26_n842()
- fun_l27_n500
-end
-
-def fun_l26_n843()
- fun_l27_n359
-end
-
-def fun_l26_n844()
- fun_l27_n316
-end
-
-def fun_l26_n845()
- fun_l27_n921
-end
-
-def fun_l26_n846()
- fun_l27_n745
-end
-
-def fun_l26_n847()
- fun_l27_n555
-end
-
-def fun_l26_n848()
- fun_l27_n306
-end
-
-def fun_l26_n849()
- fun_l27_n462
-end
-
-def fun_l26_n850()
- fun_l27_n369
-end
-
-def fun_l26_n851()
- fun_l27_n489
-end
-
-def fun_l26_n852()
- fun_l27_n276
-end
-
-def fun_l26_n853()
- fun_l27_n509
-end
-
-def fun_l26_n854()
- fun_l27_n524
-end
-
-def fun_l26_n855()
- fun_l27_n421
-end
-
-def fun_l26_n856()
- fun_l27_n845
-end
-
-def fun_l26_n857()
- fun_l27_n600
-end
-
-def fun_l26_n858()
- fun_l27_n961
-end
-
-def fun_l26_n859()
- fun_l27_n506
-end
-
-def fun_l26_n860()
- fun_l27_n106
-end
-
-def fun_l26_n861()
- fun_l27_n525
-end
-
-def fun_l26_n862()
- fun_l27_n515
-end
-
-def fun_l26_n863()
- fun_l27_n506
-end
-
-def fun_l26_n864()
- fun_l27_n283
-end
-
-def fun_l26_n865()
- fun_l27_n189
-end
-
-def fun_l26_n866()
- fun_l27_n181
-end
-
-def fun_l26_n867()
- fun_l27_n338
-end
-
-def fun_l26_n868()
- fun_l27_n965
-end
-
-def fun_l26_n869()
- fun_l27_n219
-end
-
-def fun_l26_n870()
- fun_l27_n604
-end
-
-def fun_l26_n871()
- fun_l27_n211
-end
-
-def fun_l26_n872()
- fun_l27_n225
-end
-
-def fun_l26_n873()
- fun_l27_n776
-end
-
-def fun_l26_n874()
- fun_l27_n723
-end
-
-def fun_l26_n875()
- fun_l27_n653
-end
-
-def fun_l26_n876()
- fun_l27_n157
-end
-
-def fun_l26_n877()
- fun_l27_n321
-end
-
-def fun_l26_n878()
- fun_l27_n684
-end
-
-def fun_l26_n879()
- fun_l27_n270
-end
-
-def fun_l26_n880()
- fun_l27_n575
-end
-
-def fun_l26_n881()
- fun_l27_n201
-end
-
-def fun_l26_n882()
- fun_l27_n772
-end
-
-def fun_l26_n883()
- fun_l27_n610
-end
-
-def fun_l26_n884()
- fun_l27_n117
-end
-
-def fun_l26_n885()
- fun_l27_n706
-end
-
-def fun_l26_n886()
- fun_l27_n245
-end
-
-def fun_l26_n887()
- fun_l27_n173
-end
-
-def fun_l26_n888()
- fun_l27_n679
-end
-
-def fun_l26_n889()
- fun_l27_n725
-end
-
-def fun_l26_n890()
- fun_l27_n481
-end
-
-def fun_l26_n891()
- fun_l27_n632
-end
-
-def fun_l26_n892()
- fun_l27_n20
-end
-
-def fun_l26_n893()
- fun_l27_n649
-end
-
-def fun_l26_n894()
- fun_l27_n560
-end
-
-def fun_l26_n895()
- fun_l27_n861
-end
-
-def fun_l26_n896()
- fun_l27_n565
-end
-
-def fun_l26_n897()
- fun_l27_n864
-end
-
-def fun_l26_n898()
- fun_l27_n590
-end
-
-def fun_l26_n899()
- fun_l27_n413
-end
-
-def fun_l26_n900()
- fun_l27_n833
-end
-
-def fun_l26_n901()
- fun_l27_n948
-end
-
-def fun_l26_n902()
- fun_l27_n946
-end
-
-def fun_l26_n903()
- fun_l27_n211
-end
-
-def fun_l26_n904()
- fun_l27_n367
-end
-
-def fun_l26_n905()
- fun_l27_n893
-end
-
-def fun_l26_n906()
- fun_l27_n710
-end
-
-def fun_l26_n907()
- fun_l27_n655
-end
-
-def fun_l26_n908()
- fun_l27_n830
-end
-
-def fun_l26_n909()
- fun_l27_n649
-end
-
-def fun_l26_n910()
- fun_l27_n195
-end
-
-def fun_l26_n911()
- fun_l27_n474
-end
-
-def fun_l26_n912()
- fun_l27_n362
-end
-
-def fun_l26_n913()
- fun_l27_n199
-end
-
-def fun_l26_n914()
- fun_l27_n426
-end
-
-def fun_l26_n915()
- fun_l27_n123
-end
-
-def fun_l26_n916()
- fun_l27_n734
-end
-
-def fun_l26_n917()
- fun_l27_n646
-end
-
-def fun_l26_n918()
- fun_l27_n603
-end
-
-def fun_l26_n919()
- fun_l27_n907
-end
-
-def fun_l26_n920()
- fun_l27_n500
-end
-
-def fun_l26_n921()
- fun_l27_n30
-end
-
-def fun_l26_n922()
- fun_l27_n393
-end
-
-def fun_l26_n923()
- fun_l27_n981
-end
-
-def fun_l26_n924()
- fun_l27_n318
-end
-
-def fun_l26_n925()
- fun_l27_n979
-end
-
-def fun_l26_n926()
- fun_l27_n439
-end
-
-def fun_l26_n927()
- fun_l27_n398
-end
-
-def fun_l26_n928()
- fun_l27_n301
-end
-
-def fun_l26_n929()
- fun_l27_n778
-end
-
-def fun_l26_n930()
- fun_l27_n318
-end
-
-def fun_l26_n931()
- fun_l27_n835
-end
-
-def fun_l26_n932()
- fun_l27_n90
-end
-
-def fun_l26_n933()
- fun_l27_n321
-end
-
-def fun_l26_n934()
- fun_l27_n600
-end
-
-def fun_l26_n935()
- fun_l27_n731
-end
-
-def fun_l26_n936()
- fun_l27_n318
-end
-
-def fun_l26_n937()
- fun_l27_n229
-end
-
-def fun_l26_n938()
- fun_l27_n997
-end
-
-def fun_l26_n939()
- fun_l27_n105
-end
-
-def fun_l26_n940()
- fun_l27_n122
-end
-
-def fun_l26_n941()
- fun_l27_n680
-end
-
-def fun_l26_n942()
- fun_l27_n814
-end
-
-def fun_l26_n943()
- fun_l27_n350
-end
-
-def fun_l26_n944()
- fun_l27_n363
-end
-
-def fun_l26_n945()
- fun_l27_n82
-end
-
-def fun_l26_n946()
- fun_l27_n82
-end
-
-def fun_l26_n947()
- fun_l27_n638
-end
-
-def fun_l26_n948()
- fun_l27_n677
-end
-
-def fun_l26_n949()
- fun_l27_n931
-end
-
-def fun_l26_n950()
- fun_l27_n151
-end
-
-def fun_l26_n951()
- fun_l27_n862
-end
-
-def fun_l26_n952()
- fun_l27_n984
-end
-
-def fun_l26_n953()
- fun_l27_n471
-end
-
-def fun_l26_n954()
- fun_l27_n859
-end
-
-def fun_l26_n955()
- fun_l27_n127
-end
-
-def fun_l26_n956()
- fun_l27_n963
-end
-
-def fun_l26_n957()
- fun_l27_n859
-end
-
-def fun_l26_n958()
- fun_l27_n900
-end
-
-def fun_l26_n959()
- fun_l27_n957
-end
-
-def fun_l26_n960()
- fun_l27_n443
-end
-
-def fun_l26_n961()
- fun_l27_n826
-end
-
-def fun_l26_n962()
- fun_l27_n303
-end
-
-def fun_l26_n963()
- fun_l27_n766
-end
-
-def fun_l26_n964()
- fun_l27_n420
-end
-
-def fun_l26_n965()
- fun_l27_n873
-end
-
-def fun_l26_n966()
- fun_l27_n285
-end
-
-def fun_l26_n967()
- fun_l27_n490
-end
-
-def fun_l26_n968()
- fun_l27_n46
-end
-
-def fun_l26_n969()
- fun_l27_n451
-end
-
-def fun_l26_n970()
- fun_l27_n157
-end
-
-def fun_l26_n971()
- fun_l27_n981
-end
-
-def fun_l26_n972()
- fun_l27_n969
-end
-
-def fun_l26_n973()
- fun_l27_n644
-end
-
-def fun_l26_n974()
- fun_l27_n753
-end
-
-def fun_l26_n975()
- fun_l27_n306
-end
-
-def fun_l26_n976()
- fun_l27_n617
-end
-
-def fun_l26_n977()
- fun_l27_n258
-end
-
-def fun_l26_n978()
- fun_l27_n511
-end
-
-def fun_l26_n979()
- fun_l27_n267
-end
-
-def fun_l26_n980()
- fun_l27_n42
-end
-
-def fun_l26_n981()
- fun_l27_n153
-end
-
-def fun_l26_n982()
- fun_l27_n77
-end
-
-def fun_l26_n983()
- fun_l27_n658
-end
-
-def fun_l26_n984()
- fun_l27_n605
-end
-
-def fun_l26_n985()
- fun_l27_n40
-end
-
-def fun_l26_n986()
- fun_l27_n375
-end
-
-def fun_l26_n987()
- fun_l27_n273
-end
-
-def fun_l26_n988()
- fun_l27_n290
-end
-
-def fun_l26_n989()
- fun_l27_n507
-end
-
-def fun_l26_n990()
- fun_l27_n537
-end
-
-def fun_l26_n991()
- fun_l27_n373
-end
-
-def fun_l26_n992()
- fun_l27_n39
-end
-
-def fun_l26_n993()
- fun_l27_n356
-end
-
-def fun_l26_n994()
- fun_l27_n875
-end
-
-def fun_l26_n995()
- fun_l27_n112
-end
-
-def fun_l26_n996()
- fun_l27_n209
-end
-
-def fun_l26_n997()
- fun_l27_n690
-end
-
-def fun_l26_n998()
- fun_l27_n19
-end
-
-def fun_l26_n999()
- fun_l27_n962
-end
-
-def fun_l27_n0()
- fun_l28_n602
-end
-
-def fun_l27_n1()
- fun_l28_n911
-end
-
-def fun_l27_n2()
- fun_l28_n797
-end
-
-def fun_l27_n3()
- fun_l28_n261
-end
-
-def fun_l27_n4()
- fun_l28_n172
-end
-
-def fun_l27_n5()
- fun_l28_n430
-end
-
-def fun_l27_n6()
- fun_l28_n397
-end
-
-def fun_l27_n7()
- fun_l28_n388
-end
-
-def fun_l27_n8()
- fun_l28_n218
-end
-
-def fun_l27_n9()
- fun_l28_n71
-end
-
-def fun_l27_n10()
- fun_l28_n424
-end
-
-def fun_l27_n11()
- fun_l28_n454
-end
-
-def fun_l27_n12()
- fun_l28_n388
-end
-
-def fun_l27_n13()
- fun_l28_n909
-end
-
-def fun_l27_n14()
- fun_l28_n655
-end
-
-def fun_l27_n15()
- fun_l28_n355
-end
-
-def fun_l27_n16()
- fun_l28_n319
-end
-
-def fun_l27_n17()
- fun_l28_n137
-end
-
-def fun_l27_n18()
- fun_l28_n929
-end
-
-def fun_l27_n19()
- fun_l28_n887
-end
-
-def fun_l27_n20()
- fun_l28_n571
-end
-
-def fun_l27_n21()
- fun_l28_n480
-end
-
-def fun_l27_n22()
- fun_l28_n431
-end
-
-def fun_l27_n23()
- fun_l28_n918
-end
-
-def fun_l27_n24()
- fun_l28_n673
-end
-
-def fun_l27_n25()
- fun_l28_n550
-end
-
-def fun_l27_n26()
- fun_l28_n256
-end
-
-def fun_l27_n27()
- fun_l28_n624
-end
-
-def fun_l27_n28()
- fun_l28_n245
-end
-
-def fun_l27_n29()
- fun_l28_n303
-end
-
-def fun_l27_n30()
- fun_l28_n260
-end
-
-def fun_l27_n31()
- fun_l28_n174
-end
-
-def fun_l27_n32()
- fun_l28_n147
-end
-
-def fun_l27_n33()
- fun_l28_n590
-end
-
-def fun_l27_n34()
- fun_l28_n691
-end
-
-def fun_l27_n35()
- fun_l28_n739
-end
-
-def fun_l27_n36()
- fun_l28_n530
-end
-
-def fun_l27_n37()
- fun_l28_n20
-end
-
-def fun_l27_n38()
- fun_l28_n147
-end
-
-def fun_l27_n39()
- fun_l28_n362
-end
-
-def fun_l27_n40()
- fun_l28_n250
-end
-
-def fun_l27_n41()
- fun_l28_n579
-end
-
-def fun_l27_n42()
- fun_l28_n557
-end
-
-def fun_l27_n43()
- fun_l28_n639
-end
-
-def fun_l27_n44()
- fun_l28_n309
-end
-
-def fun_l27_n45()
- fun_l28_n213
-end
-
-def fun_l27_n46()
- fun_l28_n178
-end
-
-def fun_l27_n47()
- fun_l28_n974
-end
-
-def fun_l27_n48()
- fun_l28_n500
-end
-
-def fun_l27_n49()
- fun_l28_n814
-end
-
-def fun_l27_n50()
- fun_l28_n930
-end
-
-def fun_l27_n51()
- fun_l28_n329
-end
-
-def fun_l27_n52()
- fun_l28_n385
-end
-
-def fun_l27_n53()
- fun_l28_n214
-end
-
-def fun_l27_n54()
- fun_l28_n934
-end
-
-def fun_l27_n55()
- fun_l28_n645
-end
-
-def fun_l27_n56()
- fun_l28_n311
-end
-
-def fun_l27_n57()
- fun_l28_n15
-end
-
-def fun_l27_n58()
- fun_l28_n499
-end
-
-def fun_l27_n59()
- fun_l28_n919
-end
-
-def fun_l27_n60()
- fun_l28_n659
-end
-
-def fun_l27_n61()
- fun_l28_n921
-end
-
-def fun_l27_n62()
- fun_l28_n306
-end
-
-def fun_l27_n63()
- fun_l28_n128
-end
-
-def fun_l27_n64()
- fun_l28_n871
-end
-
-def fun_l27_n65()
- fun_l28_n434
-end
-
-def fun_l27_n66()
- fun_l28_n775
-end
-
-def fun_l27_n67()
- fun_l28_n311
-end
-
-def fun_l27_n68()
- fun_l28_n959
-end
-
-def fun_l27_n69()
- fun_l28_n648
-end
-
-def fun_l27_n70()
- fun_l28_n893
-end
-
-def fun_l27_n71()
- fun_l28_n669
-end
-
-def fun_l27_n72()
- fun_l28_n121
-end
-
-def fun_l27_n73()
- fun_l28_n102
-end
-
-def fun_l27_n74()
- fun_l28_n887
-end
-
-def fun_l27_n75()
- fun_l28_n326
-end
-
-def fun_l27_n76()
- fun_l28_n48
-end
-
-def fun_l27_n77()
- fun_l28_n636
-end
-
-def fun_l27_n78()
- fun_l28_n804
-end
-
-def fun_l27_n79()
- fun_l28_n838
-end
-
-def fun_l27_n80()
- fun_l28_n859
-end
-
-def fun_l27_n81()
- fun_l28_n683
-end
-
-def fun_l27_n82()
- fun_l28_n752
-end
-
-def fun_l27_n83()
- fun_l28_n244
-end
-
-def fun_l27_n84()
- fun_l28_n727
-end
-
-def fun_l27_n85()
- fun_l28_n818
-end
-
-def fun_l27_n86()
- fun_l28_n451
-end
-
-def fun_l27_n87()
- fun_l28_n9
-end
-
-def fun_l27_n88()
- fun_l28_n738
-end
-
-def fun_l27_n89()
- fun_l28_n589
-end
-
-def fun_l27_n90()
- fun_l28_n140
-end
-
-def fun_l27_n91()
- fun_l28_n615
-end
-
-def fun_l27_n92()
- fun_l28_n973
-end
-
-def fun_l27_n93()
- fun_l28_n668
-end
-
-def fun_l27_n94()
- fun_l28_n299
-end
-
-def fun_l27_n95()
- fun_l28_n358
-end
-
-def fun_l27_n96()
- fun_l28_n319
-end
-
-def fun_l27_n97()
- fun_l28_n165
-end
-
-def fun_l27_n98()
- fun_l28_n67
-end
-
-def fun_l27_n99()
- fun_l28_n494
-end
-
-def fun_l27_n100()
- fun_l28_n107
-end
-
-def fun_l27_n101()
- fun_l28_n985
-end
-
-def fun_l27_n102()
- fun_l28_n239
-end
-
-def fun_l27_n103()
- fun_l28_n64
-end
-
-def fun_l27_n104()
- fun_l28_n676
-end
-
-def fun_l27_n105()
- fun_l28_n852
-end
-
-def fun_l27_n106()
- fun_l28_n668
-end
-
-def fun_l27_n107()
- fun_l28_n523
-end
-
-def fun_l27_n108()
- fun_l28_n15
-end
-
-def fun_l27_n109()
- fun_l28_n619
-end
-
-def fun_l27_n110()
- fun_l28_n440
-end
-
-def fun_l27_n111()
- fun_l28_n792
-end
-
-def fun_l27_n112()
- fun_l28_n771
-end
-
-def fun_l27_n113()
- fun_l28_n263
-end
-
-def fun_l27_n114()
- fun_l28_n180
-end
-
-def fun_l27_n115()
- fun_l28_n615
-end
-
-def fun_l27_n116()
- fun_l28_n319
-end
-
-def fun_l27_n117()
- fun_l28_n970
-end
-
-def fun_l27_n118()
- fun_l28_n946
-end
-
-def fun_l27_n119()
- fun_l28_n121
-end
-
-def fun_l27_n120()
- fun_l28_n655
-end
-
-def fun_l27_n121()
- fun_l28_n68
-end
-
-def fun_l27_n122()
- fun_l28_n406
-end
-
-def fun_l27_n123()
- fun_l28_n535
-end
-
-def fun_l27_n124()
- fun_l28_n951
-end
-
-def fun_l27_n125()
- fun_l28_n366
-end
-
-def fun_l27_n126()
- fun_l28_n192
-end
-
-def fun_l27_n127()
- fun_l28_n106
-end
-
-def fun_l27_n128()
- fun_l28_n21
-end
-
-def fun_l27_n129()
- fun_l28_n339
-end
-
-def fun_l27_n130()
- fun_l28_n824
-end
-
-def fun_l27_n131()
- fun_l28_n921
-end
-
-def fun_l27_n132()
- fun_l28_n678
-end
-
-def fun_l27_n133()
- fun_l28_n925
-end
-
-def fun_l27_n134()
- fun_l28_n55
-end
-
-def fun_l27_n135()
- fun_l28_n726
-end
-
-def fun_l27_n136()
- fun_l28_n110
-end
-
-def fun_l27_n137()
- fun_l28_n559
-end
-
-def fun_l27_n138()
- fun_l28_n879
-end
-
-def fun_l27_n139()
- fun_l28_n332
-end
-
-def fun_l27_n140()
- fun_l28_n167
-end
-
-def fun_l27_n141()
- fun_l28_n123
-end
-
-def fun_l27_n142()
- fun_l28_n707
-end
-
-def fun_l27_n143()
- fun_l28_n423
-end
-
-def fun_l27_n144()
- fun_l28_n659
-end
-
-def fun_l27_n145()
- fun_l28_n322
-end
-
-def fun_l27_n146()
- fun_l28_n227
-end
-
-def fun_l27_n147()
- fun_l28_n679
-end
-
-def fun_l27_n148()
- fun_l28_n376
-end
-
-def fun_l27_n149()
- fun_l28_n327
-end
-
-def fun_l27_n150()
- fun_l28_n328
-end
-
-def fun_l27_n151()
- fun_l28_n408
-end
-
-def fun_l27_n152()
- fun_l28_n141
-end
-
-def fun_l27_n153()
- fun_l28_n728
-end
-
-def fun_l27_n154()
- fun_l28_n207
-end
-
-def fun_l27_n155()
- fun_l28_n836
-end
-
-def fun_l27_n156()
- fun_l28_n71
-end
-
-def fun_l27_n157()
- fun_l28_n390
-end
-
-def fun_l27_n158()
- fun_l28_n277
-end
-
-def fun_l27_n159()
- fun_l28_n960
-end
-
-def fun_l27_n160()
- fun_l28_n705
-end
-
-def fun_l27_n161()
- fun_l28_n445
-end
-
-def fun_l27_n162()
- fun_l28_n570
-end
-
-def fun_l27_n163()
- fun_l28_n878
-end
-
-def fun_l27_n164()
- fun_l28_n714
-end
-
-def fun_l27_n165()
- fun_l28_n933
-end
-
-def fun_l27_n166()
- fun_l28_n480
-end
-
-def fun_l27_n167()
- fun_l28_n308
-end
-
-def fun_l27_n168()
- fun_l28_n604
-end
-
-def fun_l27_n169()
- fun_l28_n892
-end
-
-def fun_l27_n170()
- fun_l28_n901
-end
-
-def fun_l27_n171()
- fun_l28_n524
-end
-
-def fun_l27_n172()
- fun_l28_n533
-end
-
-def fun_l27_n173()
- fun_l28_n761
-end
-
-def fun_l27_n174()
- fun_l28_n97
-end
-
-def fun_l27_n175()
- fun_l28_n944
-end
-
-def fun_l27_n176()
- fun_l28_n627
-end
-
-def fun_l27_n177()
- fun_l28_n720
-end
-
-def fun_l27_n178()
- fun_l28_n366
-end
-
-def fun_l27_n179()
- fun_l28_n353
-end
-
-def fun_l27_n180()
- fun_l28_n441
-end
-
-def fun_l27_n181()
- fun_l28_n682
-end
-
-def fun_l27_n182()
- fun_l28_n581
-end
-
-def fun_l27_n183()
- fun_l28_n974
-end
-
-def fun_l27_n184()
- fun_l28_n522
-end
-
-def fun_l27_n185()
- fun_l28_n702
-end
-
-def fun_l27_n186()
- fun_l28_n941
-end
-
-def fun_l27_n187()
- fun_l28_n665
-end
-
-def fun_l27_n188()
- fun_l28_n148
-end
-
-def fun_l27_n189()
- fun_l28_n91
-end
-
-def fun_l27_n190()
- fun_l28_n679
-end
-
-def fun_l27_n191()
- fun_l28_n929
-end
-
-def fun_l27_n192()
- fun_l28_n828
-end
-
-def fun_l27_n193()
- fun_l28_n872
-end
-
-def fun_l27_n194()
- fun_l28_n152
-end
-
-def fun_l27_n195()
- fun_l28_n593
-end
-
-def fun_l27_n196()
- fun_l28_n438
-end
-
-def fun_l27_n197()
- fun_l28_n390
-end
-
-def fun_l27_n198()
- fun_l28_n354
-end
-
-def fun_l27_n199()
- fun_l28_n547
-end
-
-def fun_l27_n200()
- fun_l28_n249
-end
-
-def fun_l27_n201()
- fun_l28_n562
-end
-
-def fun_l27_n202()
- fun_l28_n571
-end
-
-def fun_l27_n203()
- fun_l28_n763
-end
-
-def fun_l27_n204()
- fun_l28_n961
-end
-
-def fun_l27_n205()
- fun_l28_n368
-end
-
-def fun_l27_n206()
- fun_l28_n219
-end
-
-def fun_l27_n207()
- fun_l28_n414
-end
-
-def fun_l27_n208()
- fun_l28_n130
-end
-
-def fun_l27_n209()
- fun_l28_n911
-end
-
-def fun_l27_n210()
- fun_l28_n94
-end
-
-def fun_l27_n211()
- fun_l28_n966
-end
-
-def fun_l27_n212()
- fun_l28_n271
-end
-
-def fun_l27_n213()
- fun_l28_n372
-end
-
-def fun_l27_n214()
- fun_l28_n845
-end
-
-def fun_l27_n215()
- fun_l28_n924
-end
-
-def fun_l27_n216()
- fun_l28_n220
-end
-
-def fun_l27_n217()
- fun_l28_n653
-end
-
-def fun_l27_n218()
- fun_l28_n960
-end
-
-def fun_l27_n219()
- fun_l28_n343
-end
-
-def fun_l27_n220()
- fun_l28_n255
-end
-
-def fun_l27_n221()
- fun_l28_n206
-end
-
-def fun_l27_n222()
- fun_l28_n190
-end
-
-def fun_l27_n223()
- fun_l28_n753
-end
-
-def fun_l27_n224()
- fun_l28_n530
-end
-
-def fun_l27_n225()
- fun_l28_n198
-end
-
-def fun_l27_n226()
- fun_l28_n604
-end
-
-def fun_l27_n227()
- fun_l28_n685
-end
-
-def fun_l27_n228()
- fun_l28_n268
-end
-
-def fun_l27_n229()
- fun_l28_n344
-end
-
-def fun_l27_n230()
- fun_l28_n850
-end
-
-def fun_l27_n231()
- fun_l28_n612
-end
-
-def fun_l27_n232()
- fun_l28_n598
-end
-
-def fun_l27_n233()
- fun_l28_n766
-end
-
-def fun_l27_n234()
- fun_l28_n994
-end
-
-def fun_l27_n235()
- fun_l28_n566
-end
-
-def fun_l27_n236()
- fun_l28_n306
-end
-
-def fun_l27_n237()
- fun_l28_n592
-end
-
-def fun_l27_n238()
- fun_l28_n814
-end
-
-def fun_l27_n239()
- fun_l28_n319
-end
-
-def fun_l27_n240()
- fun_l28_n619
-end
-
-def fun_l27_n241()
- fun_l28_n631
-end
-
-def fun_l27_n242()
- fun_l28_n240
-end
-
-def fun_l27_n243()
- fun_l28_n714
-end
-
-def fun_l27_n244()
- fun_l28_n651
-end
-
-def fun_l27_n245()
- fun_l28_n760
-end
-
-def fun_l27_n246()
- fun_l28_n925
-end
-
-def fun_l27_n247()
- fun_l28_n537
-end
-
-def fun_l27_n248()
- fun_l28_n541
-end
-
-def fun_l27_n249()
- fun_l28_n963
-end
-
-def fun_l27_n250()
- fun_l28_n630
-end
-
-def fun_l27_n251()
- fun_l28_n124
-end
-
-def fun_l27_n252()
- fun_l28_n894
-end
-
-def fun_l27_n253()
- fun_l28_n307
-end
-
-def fun_l27_n254()
- fun_l28_n485
-end
-
-def fun_l27_n255()
- fun_l28_n272
-end
-
-def fun_l27_n256()
- fun_l28_n994
-end
-
-def fun_l27_n257()
- fun_l28_n48
-end
-
-def fun_l27_n258()
- fun_l28_n374
-end
-
-def fun_l27_n259()
- fun_l28_n508
-end
-
-def fun_l27_n260()
- fun_l28_n936
-end
-
-def fun_l27_n261()
- fun_l28_n43
-end
-
-def fun_l27_n262()
- fun_l28_n297
-end
-
-def fun_l27_n263()
- fun_l28_n205
-end
-
-def fun_l27_n264()
- fun_l28_n234
-end
-
-def fun_l27_n265()
- fun_l28_n560
-end
-
-def fun_l27_n266()
- fun_l28_n124
-end
-
-def fun_l27_n267()
- fun_l28_n912
-end
-
-def fun_l27_n268()
- fun_l28_n545
-end
-
-def fun_l27_n269()
- fun_l28_n266
-end
-
-def fun_l27_n270()
- fun_l28_n917
-end
-
-def fun_l27_n271()
- fun_l28_n971
-end
-
-def fun_l27_n272()
- fun_l28_n305
-end
-
-def fun_l27_n273()
- fun_l28_n158
-end
-
-def fun_l27_n274()
- fun_l28_n241
-end
-
-def fun_l27_n275()
- fun_l28_n667
-end
-
-def fun_l27_n276()
- fun_l28_n857
-end
-
-def fun_l27_n277()
- fun_l28_n207
-end
-
-def fun_l27_n278()
- fun_l28_n258
-end
-
-def fun_l27_n279()
- fun_l28_n410
-end
-
-def fun_l27_n280()
- fun_l28_n868
-end
-
-def fun_l27_n281()
- fun_l28_n976
-end
-
-def fun_l27_n282()
- fun_l28_n519
-end
-
-def fun_l27_n283()
- fun_l28_n165
-end
-
-def fun_l27_n284()
- fun_l28_n790
-end
-
-def fun_l27_n285()
- fun_l28_n825
-end
-
-def fun_l27_n286()
- fun_l28_n844
-end
-
-def fun_l27_n287()
- fun_l28_n450
-end
-
-def fun_l27_n288()
- fun_l28_n913
-end
-
-def fun_l27_n289()
- fun_l28_n418
-end
-
-def fun_l27_n290()
- fun_l28_n63
-end
-
-def fun_l27_n291()
- fun_l28_n306
-end
-
-def fun_l27_n292()
- fun_l28_n233
-end
-
-def fun_l27_n293()
- fun_l28_n274
-end
-
-def fun_l27_n294()
- fun_l28_n292
-end
-
-def fun_l27_n295()
- fun_l28_n504
-end
-
-def fun_l27_n296()
- fun_l28_n769
-end
-
-def fun_l27_n297()
- fun_l28_n404
-end
-
-def fun_l27_n298()
- fun_l28_n782
-end
-
-def fun_l27_n299()
- fun_l28_n788
-end
-
-def fun_l27_n300()
- fun_l28_n727
-end
-
-def fun_l27_n301()
- fun_l28_n187
-end
-
-def fun_l27_n302()
- fun_l28_n568
-end
-
-def fun_l27_n303()
- fun_l28_n195
-end
-
-def fun_l27_n304()
- fun_l28_n696
-end
-
-def fun_l27_n305()
- fun_l28_n293
-end
-
-def fun_l27_n306()
- fun_l28_n722
-end
-
-def fun_l27_n307()
- fun_l28_n911
-end
-
-def fun_l27_n308()
- fun_l28_n827
-end
-
-def fun_l27_n309()
- fun_l28_n767
-end
-
-def fun_l27_n310()
- fun_l28_n423
-end
-
-def fun_l27_n311()
- fun_l28_n60
-end
-
-def fun_l27_n312()
- fun_l28_n466
-end
-
-def fun_l27_n313()
- fun_l28_n270
-end
-
-def fun_l27_n314()
- fun_l28_n993
-end
-
-def fun_l27_n315()
- fun_l28_n231
-end
-
-def fun_l27_n316()
- fun_l28_n514
-end
-
-def fun_l27_n317()
- fun_l28_n57
-end
-
-def fun_l27_n318()
- fun_l28_n646
-end
-
-def fun_l27_n319()
- fun_l28_n17
-end
-
-def fun_l27_n320()
- fun_l28_n964
-end
-
-def fun_l27_n321()
- fun_l28_n1
-end
-
-def fun_l27_n322()
- fun_l28_n956
-end
-
-def fun_l27_n323()
- fun_l28_n273
-end
-
-def fun_l27_n324()
- fun_l28_n370
-end
-
-def fun_l27_n325()
- fun_l28_n81
-end
-
-def fun_l27_n326()
- fun_l28_n765
-end
-
-def fun_l27_n327()
- fun_l28_n506
-end
-
-def fun_l27_n328()
- fun_l28_n327
-end
-
-def fun_l27_n329()
- fun_l28_n362
-end
-
-def fun_l27_n330()
- fun_l28_n852
-end
-
-def fun_l27_n331()
- fun_l28_n876
-end
-
-def fun_l27_n332()
- fun_l28_n531
-end
-
-def fun_l27_n333()
- fun_l28_n426
-end
-
-def fun_l27_n334()
- fun_l28_n295
-end
-
-def fun_l27_n335()
- fun_l28_n929
-end
-
-def fun_l27_n336()
- fun_l28_n693
-end
-
-def fun_l27_n337()
- fun_l28_n724
-end
-
-def fun_l27_n338()
- fun_l28_n784
-end
-
-def fun_l27_n339()
- fun_l28_n752
-end
-
-def fun_l27_n340()
- fun_l28_n809
-end
-
-def fun_l27_n341()
- fun_l28_n269
-end
-
-def fun_l27_n342()
- fun_l28_n33
-end
-
-def fun_l27_n343()
- fun_l28_n778
-end
-
-def fun_l27_n344()
- fun_l28_n974
-end
-
-def fun_l27_n345()
- fun_l28_n843
-end
-
-def fun_l27_n346()
- fun_l28_n86
-end
-
-def fun_l27_n347()
- fun_l28_n594
-end
-
-def fun_l27_n348()
- fun_l28_n111
-end
-
-def fun_l27_n349()
- fun_l28_n317
-end
-
-def fun_l27_n350()
- fun_l28_n238
-end
-
-def fun_l27_n351()
- fun_l28_n447
-end
-
-def fun_l27_n352()
- fun_l28_n954
-end
-
-def fun_l27_n353()
- fun_l28_n846
-end
-
-def fun_l27_n354()
- fun_l28_n124
-end
-
-def fun_l27_n355()
- fun_l28_n445
-end
-
-def fun_l27_n356()
- fun_l28_n957
-end
-
-def fun_l27_n357()
- fun_l28_n365
-end
-
-def fun_l27_n358()
- fun_l28_n136
-end
-
-def fun_l27_n359()
- fun_l28_n372
-end
-
-def fun_l27_n360()
- fun_l28_n487
-end
-
-def fun_l27_n361()
- fun_l28_n493
-end
-
-def fun_l27_n362()
- fun_l28_n905
-end
-
-def fun_l27_n363()
- fun_l28_n146
-end
-
-def fun_l27_n364()
- fun_l28_n523
-end
-
-def fun_l27_n365()
- fun_l28_n876
-end
-
-def fun_l27_n366()
- fun_l28_n67
-end
-
-def fun_l27_n367()
- fun_l28_n746
-end
-
-def fun_l27_n368()
- fun_l28_n264
-end
-
-def fun_l27_n369()
- fun_l28_n470
-end
-
-def fun_l27_n370()
- fun_l28_n240
-end
-
-def fun_l27_n371()
- fun_l28_n928
-end
-
-def fun_l27_n372()
- fun_l28_n574
-end
-
-def fun_l27_n373()
- fun_l28_n756
-end
-
-def fun_l27_n374()
- fun_l28_n244
-end
-
-def fun_l27_n375()
- fun_l28_n46
-end
-
-def fun_l27_n376()
- fun_l28_n940
-end
-
-def fun_l27_n377()
- fun_l28_n430
-end
-
-def fun_l27_n378()
- fun_l28_n879
-end
-
-def fun_l27_n379()
- fun_l28_n560
-end
-
-def fun_l27_n380()
- fun_l28_n231
-end
-
-def fun_l27_n381()
- fun_l28_n283
-end
-
-def fun_l27_n382()
- fun_l28_n438
-end
-
-def fun_l27_n383()
- fun_l28_n207
-end
-
-def fun_l27_n384()
- fun_l28_n185
-end
-
-def fun_l27_n385()
- fun_l28_n40
-end
-
-def fun_l27_n386()
- fun_l28_n572
-end
-
-def fun_l27_n387()
- fun_l28_n975
-end
-
-def fun_l27_n388()
- fun_l28_n117
-end
-
-def fun_l27_n389()
- fun_l28_n329
-end
-
-def fun_l27_n390()
- fun_l28_n311
-end
-
-def fun_l27_n391()
- fun_l28_n653
-end
-
-def fun_l27_n392()
- fun_l28_n522
-end
-
-def fun_l27_n393()
- fun_l28_n452
-end
-
-def fun_l27_n394()
- fun_l28_n137
-end
-
-def fun_l27_n395()
- fun_l28_n606
-end
-
-def fun_l27_n396()
- fun_l28_n901
-end
-
-def fun_l27_n397()
- fun_l28_n434
-end
-
-def fun_l27_n398()
- fun_l28_n863
-end
-
-def fun_l27_n399()
- fun_l28_n117
-end
-
-def fun_l27_n400()
- fun_l28_n473
-end
-
-def fun_l27_n401()
- fun_l28_n638
-end
-
-def fun_l27_n402()
- fun_l28_n71
-end
-
-def fun_l27_n403()
- fun_l28_n423
-end
-
-def fun_l27_n404()
- fun_l28_n362
-end
-
-def fun_l27_n405()
- fun_l28_n537
-end
-
-def fun_l27_n406()
- fun_l28_n975
-end
-
-def fun_l27_n407()
- fun_l28_n424
-end
-
-def fun_l27_n408()
- fun_l28_n613
-end
-
-def fun_l27_n409()
- fun_l28_n606
-end
-
-def fun_l27_n410()
- fun_l28_n782
-end
-
-def fun_l27_n411()
- fun_l28_n445
-end
-
-def fun_l27_n412()
- fun_l28_n362
-end
-
-def fun_l27_n413()
- fun_l28_n837
-end
-
-def fun_l27_n414()
- fun_l28_n335
-end
-
-def fun_l27_n415()
- fun_l28_n258
-end
-
-def fun_l27_n416()
- fun_l28_n832
-end
-
-def fun_l27_n417()
- fun_l28_n102
-end
-
-def fun_l27_n418()
- fun_l28_n202
-end
-
-def fun_l27_n419()
- fun_l28_n624
-end
-
-def fun_l27_n420()
- fun_l28_n118
-end
-
-def fun_l27_n421()
- fun_l28_n247
-end
-
-def fun_l27_n422()
- fun_l28_n768
-end
-
-def fun_l27_n423()
- fun_l28_n879
-end
-
-def fun_l27_n424()
- fun_l28_n650
-end
-
-def fun_l27_n425()
- fun_l28_n545
-end
-
-def fun_l27_n426()
- fun_l28_n854
-end
-
-def fun_l27_n427()
- fun_l28_n722
-end
-
-def fun_l27_n428()
- fun_l28_n637
-end
-
-def fun_l27_n429()
- fun_l28_n295
-end
-
-def fun_l27_n430()
- fun_l28_n504
-end
-
-def fun_l27_n431()
- fun_l28_n939
-end
-
-def fun_l27_n432()
- fun_l28_n52
-end
-
-def fun_l27_n433()
- fun_l28_n613
-end
-
-def fun_l27_n434()
- fun_l28_n165
-end
-
-def fun_l27_n435()
- fun_l28_n948
-end
-
-def fun_l27_n436()
- fun_l28_n995
-end
-
-def fun_l27_n437()
- fun_l28_n572
-end
-
-def fun_l27_n438()
- fun_l28_n919
-end
-
-def fun_l27_n439()
- fun_l28_n843
-end
-
-def fun_l27_n440()
- fun_l28_n826
-end
-
-def fun_l27_n441()
- fun_l28_n328
-end
-
-def fun_l27_n442()
- fun_l28_n330
-end
-
-def fun_l27_n443()
- fun_l28_n819
-end
-
-def fun_l27_n444()
- fun_l28_n949
-end
-
-def fun_l27_n445()
- fun_l28_n505
-end
-
-def fun_l27_n446()
- fun_l28_n306
-end
-
-def fun_l27_n447()
- fun_l28_n731
-end
-
-def fun_l27_n448()
- fun_l28_n232
-end
-
-def fun_l27_n449()
- fun_l28_n251
-end
-
-def fun_l27_n450()
- fun_l28_n807
-end
-
-def fun_l27_n451()
- fun_l28_n808
-end
-
-def fun_l27_n452()
- fun_l28_n672
-end
-
-def fun_l27_n453()
- fun_l28_n0
-end
-
-def fun_l27_n454()
- fun_l28_n659
-end
-
-def fun_l27_n455()
- fun_l28_n955
-end
-
-def fun_l27_n456()
- fun_l28_n314
-end
-
-def fun_l27_n457()
- fun_l28_n539
-end
-
-def fun_l27_n458()
- fun_l28_n394
-end
-
-def fun_l27_n459()
- fun_l28_n48
-end
-
-def fun_l27_n460()
- fun_l28_n434
-end
-
-def fun_l27_n461()
- fun_l28_n54
-end
-
-def fun_l27_n462()
- fun_l28_n108
-end
-
-def fun_l27_n463()
- fun_l28_n80
-end
-
-def fun_l27_n464()
- fun_l28_n255
-end
-
-def fun_l27_n465()
- fun_l28_n273
-end
-
-def fun_l27_n466()
- fun_l28_n227
-end
-
-def fun_l27_n467()
- fun_l28_n764
-end
-
-def fun_l27_n468()
- fun_l28_n210
-end
-
-def fun_l27_n469()
- fun_l28_n68
-end
-
-def fun_l27_n470()
- fun_l28_n178
-end
-
-def fun_l27_n471()
- fun_l28_n500
-end
-
-def fun_l27_n472()
- fun_l28_n374
-end
-
-def fun_l27_n473()
- fun_l28_n98
-end
-
-def fun_l27_n474()
- fun_l28_n232
-end
-
-def fun_l27_n475()
- fun_l28_n35
-end
-
-def fun_l27_n476()
- fun_l28_n483
-end
-
-def fun_l27_n477()
- fun_l28_n282
-end
-
-def fun_l27_n478()
- fun_l28_n512
-end
-
-def fun_l27_n479()
- fun_l28_n755
-end
-
-def fun_l27_n480()
- fun_l28_n299
-end
-
-def fun_l27_n481()
- fun_l28_n899
-end
-
-def fun_l27_n482()
- fun_l28_n872
-end
-
-def fun_l27_n483()
- fun_l28_n558
-end
-
-def fun_l27_n484()
- fun_l28_n700
-end
-
-def fun_l27_n485()
- fun_l28_n949
-end
-
-def fun_l27_n486()
- fun_l28_n272
-end
-
-def fun_l27_n487()
- fun_l28_n808
-end
-
-def fun_l27_n488()
- fun_l28_n36
-end
-
-def fun_l27_n489()
- fun_l28_n698
-end
-
-def fun_l27_n490()
- fun_l28_n386
-end
-
-def fun_l27_n491()
- fun_l28_n745
-end
-
-def fun_l27_n492()
- fun_l28_n26
-end
-
-def fun_l27_n493()
- fun_l28_n148
-end
-
-def fun_l27_n494()
- fun_l28_n300
-end
-
-def fun_l27_n495()
- fun_l28_n292
-end
-
-def fun_l27_n496()
- fun_l28_n892
-end
-
-def fun_l27_n497()
- fun_l28_n824
-end
-
-def fun_l27_n498()
- fun_l28_n89
-end
-
-def fun_l27_n499()
- fun_l28_n248
-end
-
-def fun_l27_n500()
- fun_l28_n19
-end
-
-def fun_l27_n501()
- fun_l28_n600
-end
-
-def fun_l27_n502()
- fun_l28_n210
-end
-
-def fun_l27_n503()
- fun_l28_n27
-end
-
-def fun_l27_n504()
- fun_l28_n866
-end
-
-def fun_l27_n505()
- fun_l28_n231
-end
-
-def fun_l27_n506()
- fun_l28_n622
-end
-
-def fun_l27_n507()
- fun_l28_n381
-end
-
-def fun_l27_n508()
- fun_l28_n997
-end
-
-def fun_l27_n509()
- fun_l28_n799
-end
-
-def fun_l27_n510()
- fun_l28_n18
-end
-
-def fun_l27_n511()
- fun_l28_n60
-end
-
-def fun_l27_n512()
- fun_l28_n287
-end
-
-def fun_l27_n513()
- fun_l28_n478
-end
-
-def fun_l27_n514()
- fun_l28_n562
-end
-
-def fun_l27_n515()
- fun_l28_n779
-end
-
-def fun_l27_n516()
- fun_l28_n585
-end
-
-def fun_l27_n517()
- fun_l28_n464
-end
-
-def fun_l27_n518()
- fun_l28_n304
-end
-
-def fun_l27_n519()
- fun_l28_n189
-end
-
-def fun_l27_n520()
- fun_l28_n959
-end
-
-def fun_l27_n521()
- fun_l28_n5
-end
-
-def fun_l27_n522()
- fun_l28_n866
-end
-
-def fun_l27_n523()
- fun_l28_n14
-end
-
-def fun_l27_n524()
- fun_l28_n644
-end
-
-def fun_l27_n525()
- fun_l28_n725
-end
-
-def fun_l27_n526()
- fun_l28_n18
-end
-
-def fun_l27_n527()
- fun_l28_n9
-end
-
-def fun_l27_n528()
- fun_l28_n0
-end
-
-def fun_l27_n529()
- fun_l28_n154
-end
-
-def fun_l27_n530()
- fun_l28_n313
-end
-
-def fun_l27_n531()
- fun_l28_n478
-end
-
-def fun_l27_n532()
- fun_l28_n139
-end
-
-def fun_l27_n533()
- fun_l28_n913
-end
-
-def fun_l27_n534()
- fun_l28_n113
-end
-
-def fun_l27_n535()
- fun_l28_n685
-end
-
-def fun_l27_n536()
- fun_l28_n275
-end
-
-def fun_l27_n537()
- fun_l28_n556
-end
-
-def fun_l27_n538()
- fun_l28_n276
-end
-
-def fun_l27_n539()
- fun_l28_n283
-end
-
-def fun_l27_n540()
- fun_l28_n694
-end
-
-def fun_l27_n541()
- fun_l28_n396
-end
-
-def fun_l27_n542()
- fun_l28_n181
-end
-
-def fun_l27_n543()
- fun_l28_n231
-end
-
-def fun_l27_n544()
- fun_l28_n228
-end
-
-def fun_l27_n545()
- fun_l28_n958
-end
-
-def fun_l27_n546()
- fun_l28_n91
-end
-
-def fun_l27_n547()
- fun_l28_n878
-end
-
-def fun_l27_n548()
- fun_l28_n180
-end
-
-def fun_l27_n549()
- fun_l28_n13
-end
-
-def fun_l27_n550()
- fun_l28_n161
-end
-
-def fun_l27_n551()
- fun_l28_n603
-end
-
-def fun_l27_n552()
- fun_l28_n101
-end
-
-def fun_l27_n553()
- fun_l28_n825
-end
-
-def fun_l27_n554()
- fun_l28_n370
-end
-
-def fun_l27_n555()
- fun_l28_n983
-end
-
-def fun_l27_n556()
- fun_l28_n888
-end
-
-def fun_l27_n557()
- fun_l28_n610
-end
-
-def fun_l27_n558()
- fun_l28_n630
-end
-
-def fun_l27_n559()
- fun_l28_n345
-end
-
-def fun_l27_n560()
- fun_l28_n376
-end
-
-def fun_l27_n561()
- fun_l28_n409
-end
-
-def fun_l27_n562()
- fun_l28_n717
-end
-
-def fun_l27_n563()
- fun_l28_n66
-end
-
-def fun_l27_n564()
- fun_l28_n228
-end
-
-def fun_l27_n565()
- fun_l28_n485
-end
-
-def fun_l27_n566()
- fun_l28_n252
-end
-
-def fun_l27_n567()
- fun_l28_n444
-end
-
-def fun_l27_n568()
- fun_l28_n253
-end
-
-def fun_l27_n569()
- fun_l28_n839
-end
-
-def fun_l27_n570()
- fun_l28_n216
-end
-
-def fun_l27_n571()
- fun_l28_n797
-end
-
-def fun_l27_n572()
- fun_l28_n127
-end
-
-def fun_l27_n573()
- fun_l28_n335
-end
-
-def fun_l27_n574()
- fun_l28_n141
-end
-
-def fun_l27_n575()
- fun_l28_n536
-end
-
-def fun_l27_n576()
- fun_l28_n463
-end
-
-def fun_l27_n577()
- fun_l28_n925
-end
-
-def fun_l27_n578()
- fun_l28_n707
-end
-
-def fun_l27_n579()
- fun_l28_n530
-end
-
-def fun_l27_n580()
- fun_l28_n678
-end
-
-def fun_l27_n581()
- fun_l28_n234
-end
-
-def fun_l27_n582()
- fun_l28_n803
-end
-
-def fun_l27_n583()
- fun_l28_n530
-end
-
-def fun_l27_n584()
- fun_l28_n131
-end
-
-def fun_l27_n585()
- fun_l28_n512
-end
-
-def fun_l27_n586()
- fun_l28_n550
-end
-
-def fun_l27_n587()
- fun_l28_n528
-end
-
-def fun_l27_n588()
- fun_l28_n214
-end
-
-def fun_l27_n589()
- fun_l28_n801
-end
-
-def fun_l27_n590()
- fun_l28_n69
-end
-
-def fun_l27_n591()
- fun_l28_n519
-end
-
-def fun_l27_n592()
- fun_l28_n909
-end
-
-def fun_l27_n593()
- fun_l28_n981
-end
-
-def fun_l27_n594()
- fun_l28_n108
-end
-
-def fun_l27_n595()
- fun_l28_n762
-end
-
-def fun_l27_n596()
- fun_l28_n838
-end
-
-def fun_l27_n597()
- fun_l28_n311
-end
-
-def fun_l27_n598()
- fun_l28_n428
-end
-
-def fun_l27_n599()
- fun_l28_n111
-end
-
-def fun_l27_n600()
- fun_l28_n600
-end
-
-def fun_l27_n601()
- fun_l28_n996
-end
-
-def fun_l27_n602()
- fun_l28_n439
-end
-
-def fun_l27_n603()
- fun_l28_n379
-end
-
-def fun_l27_n604()
- fun_l28_n959
-end
-
-def fun_l27_n605()
- fun_l28_n287
-end
-
-def fun_l27_n606()
- fun_l28_n893
-end
-
-def fun_l27_n607()
- fun_l28_n384
-end
-
-def fun_l27_n608()
- fun_l28_n815
-end
-
-def fun_l27_n609()
- fun_l28_n733
-end
-
-def fun_l27_n610()
- fun_l28_n875
-end
-
-def fun_l27_n611()
- fun_l28_n343
-end
-
-def fun_l27_n612()
- fun_l28_n605
-end
-
-def fun_l27_n613()
- fun_l28_n968
-end
-
-def fun_l27_n614()
- fun_l28_n703
-end
-
-def fun_l27_n615()
- fun_l28_n50
-end
-
-def fun_l27_n616()
- fun_l28_n807
-end
-
-def fun_l27_n617()
- fun_l28_n261
-end
-
-def fun_l27_n618()
- fun_l28_n887
-end
-
-def fun_l27_n619()
- fun_l28_n165
-end
-
-def fun_l27_n620()
- fun_l28_n62
-end
-
-def fun_l27_n621()
- fun_l28_n437
-end
-
-def fun_l27_n622()
- fun_l28_n267
-end
-
-def fun_l27_n623()
- fun_l28_n739
-end
-
-def fun_l27_n624()
- fun_l28_n624
-end
-
-def fun_l27_n625()
- fun_l28_n845
-end
-
-def fun_l27_n626()
- fun_l28_n844
-end
-
-def fun_l27_n627()
- fun_l28_n541
-end
-
-def fun_l27_n628()
- fun_l28_n175
-end
-
-def fun_l27_n629()
- fun_l28_n295
-end
-
-def fun_l27_n630()
- fun_l28_n600
-end
-
-def fun_l27_n631()
- fun_l28_n250
-end
-
-def fun_l27_n632()
- fun_l28_n167
-end
-
-def fun_l27_n633()
- fun_l28_n7
-end
-
-def fun_l27_n634()
- fun_l28_n75
-end
-
-def fun_l27_n635()
- fun_l28_n208
-end
-
-def fun_l27_n636()
- fun_l28_n53
-end
-
-def fun_l27_n637()
- fun_l28_n132
-end
-
-def fun_l27_n638()
- fun_l28_n859
-end
-
-def fun_l27_n639()
- fun_l28_n925
-end
-
-def fun_l27_n640()
- fun_l28_n34
-end
-
-def fun_l27_n641()
- fun_l28_n226
-end
-
-def fun_l27_n642()
- fun_l28_n916
-end
-
-def fun_l27_n643()
- fun_l28_n893
-end
-
-def fun_l27_n644()
- fun_l28_n100
-end
-
-def fun_l27_n645()
- fun_l28_n526
-end
-
-def fun_l27_n646()
- fun_l28_n113
-end
-
-def fun_l27_n647()
- fun_l28_n786
-end
-
-def fun_l27_n648()
- fun_l28_n995
-end
-
-def fun_l27_n649()
- fun_l28_n968
-end
-
-def fun_l27_n650()
- fun_l28_n705
-end
-
-def fun_l27_n651()
- fun_l28_n581
-end
-
-def fun_l27_n652()
- fun_l28_n112
-end
-
-def fun_l27_n653()
- fun_l28_n475
-end
-
-def fun_l27_n654()
- fun_l28_n264
-end
-
-def fun_l27_n655()
- fun_l28_n44
-end
-
-def fun_l27_n656()
- fun_l28_n302
-end
-
-def fun_l27_n657()
- fun_l28_n830
-end
-
-def fun_l27_n658()
- fun_l28_n551
-end
-
-def fun_l27_n659()
- fun_l28_n811
-end
-
-def fun_l27_n660()
- fun_l28_n476
-end
-
-def fun_l27_n661()
- fun_l28_n547
-end
-
-def fun_l27_n662()
- fun_l28_n709
-end
-
-def fun_l27_n663()
- fun_l28_n435
-end
-
-def fun_l27_n664()
- fun_l28_n727
-end
-
-def fun_l27_n665()
- fun_l28_n630
-end
-
-def fun_l27_n666()
- fun_l28_n514
-end
-
-def fun_l27_n667()
- fun_l28_n939
-end
-
-def fun_l27_n668()
- fun_l28_n198
-end
-
-def fun_l27_n669()
- fun_l28_n165
-end
-
-def fun_l27_n670()
- fun_l28_n415
-end
-
-def fun_l27_n671()
- fun_l28_n316
-end
-
-def fun_l27_n672()
- fun_l28_n602
-end
-
-def fun_l27_n673()
- fun_l28_n776
-end
-
-def fun_l27_n674()
- fun_l28_n681
-end
-
-def fun_l27_n675()
- fun_l28_n131
-end
-
-def fun_l27_n676()
- fun_l28_n812
-end
-
-def fun_l27_n677()
- fun_l28_n666
-end
-
-def fun_l27_n678()
- fun_l28_n209
-end
-
-def fun_l27_n679()
- fun_l28_n953
-end
-
-def fun_l27_n680()
- fun_l28_n797
-end
-
-def fun_l27_n681()
- fun_l28_n317
-end
-
-def fun_l27_n682()
- fun_l28_n43
-end
-
-def fun_l27_n683()
- fun_l28_n673
-end
-
-def fun_l27_n684()
- fun_l28_n701
-end
-
-def fun_l27_n685()
- fun_l28_n961
-end
-
-def fun_l27_n686()
- fun_l28_n684
-end
-
-def fun_l27_n687()
- fun_l28_n677
-end
-
-def fun_l27_n688()
- fun_l28_n213
-end
-
-def fun_l27_n689()
- fun_l28_n22
-end
-
-def fun_l27_n690()
- fun_l28_n296
-end
-
-def fun_l27_n691()
- fun_l28_n235
-end
-
-def fun_l27_n692()
- fun_l28_n148
-end
-
-def fun_l27_n693()
- fun_l28_n756
-end
-
-def fun_l27_n694()
- fun_l28_n989
-end
-
-def fun_l27_n695()
- fun_l28_n993
-end
-
-def fun_l27_n696()
- fun_l28_n646
-end
-
-def fun_l27_n697()
- fun_l28_n860
-end
-
-def fun_l27_n698()
- fun_l28_n872
-end
-
-def fun_l27_n699()
- fun_l28_n122
-end
-
-def fun_l27_n700()
- fun_l28_n678
-end
-
-def fun_l27_n701()
- fun_l28_n480
-end
-
-def fun_l27_n702()
- fun_l28_n888
-end
-
-def fun_l27_n703()
- fun_l28_n60
-end
-
-def fun_l27_n704()
- fun_l28_n15
-end
-
-def fun_l27_n705()
- fun_l28_n529
-end
-
-def fun_l27_n706()
- fun_l28_n137
-end
-
-def fun_l27_n707()
- fun_l28_n643
-end
-
-def fun_l27_n708()
- fun_l28_n432
-end
-
-def fun_l27_n709()
- fun_l28_n446
-end
-
-def fun_l27_n710()
- fun_l28_n170
-end
-
-def fun_l27_n711()
- fun_l28_n507
-end
-
-def fun_l27_n712()
- fun_l28_n650
-end
-
-def fun_l27_n713()
- fun_l28_n952
-end
-
-def fun_l27_n714()
- fun_l28_n629
-end
-
-def fun_l27_n715()
- fun_l28_n578
-end
-
-def fun_l27_n716()
- fun_l28_n754
-end
-
-def fun_l27_n717()
- fun_l28_n431
-end
-
-def fun_l27_n718()
- fun_l28_n340
-end
-
-def fun_l27_n719()
- fun_l28_n580
-end
-
-def fun_l27_n720()
- fun_l28_n976
-end
-
-def fun_l27_n721()
- fun_l28_n830
-end
-
-def fun_l27_n722()
- fun_l28_n746
-end
-
-def fun_l27_n723()
- fun_l28_n139
-end
-
-def fun_l27_n724()
- fun_l28_n152
-end
-
-def fun_l27_n725()
- fun_l28_n956
-end
-
-def fun_l27_n726()
- fun_l28_n152
-end
-
-def fun_l27_n727()
- fun_l28_n252
-end
-
-def fun_l27_n728()
- fun_l28_n856
-end
-
-def fun_l27_n729()
- fun_l28_n862
-end
-
-def fun_l27_n730()
- fun_l28_n261
-end
-
-def fun_l27_n731()
- fun_l28_n28
-end
-
-def fun_l27_n732()
- fun_l28_n873
-end
-
-def fun_l27_n733()
- fun_l28_n989
-end
-
-def fun_l27_n734()
- fun_l28_n657
-end
-
-def fun_l27_n735()
- fun_l28_n259
-end
-
-def fun_l27_n736()
- fun_l28_n1
-end
-
-def fun_l27_n737()
- fun_l28_n964
-end
-
-def fun_l27_n738()
- fun_l28_n215
-end
-
-def fun_l27_n739()
- fun_l28_n939
-end
-
-def fun_l27_n740()
- fun_l28_n644
-end
-
-def fun_l27_n741()
- fun_l28_n335
-end
-
-def fun_l27_n742()
- fun_l28_n844
-end
-
-def fun_l27_n743()
- fun_l28_n493
-end
-
-def fun_l27_n744()
- fun_l28_n25
-end
-
-def fun_l27_n745()
- fun_l28_n690
-end
-
-def fun_l27_n746()
- fun_l28_n561
-end
-
-def fun_l27_n747()
- fun_l28_n682
-end
-
-def fun_l27_n748()
- fun_l28_n476
-end
-
-def fun_l27_n749()
- fun_l28_n626
-end
-
-def fun_l27_n750()
- fun_l28_n607
-end
-
-def fun_l27_n751()
- fun_l28_n655
-end
-
-def fun_l27_n752()
- fun_l28_n481
-end
-
-def fun_l27_n753()
- fun_l28_n634
-end
-
-def fun_l27_n754()
- fun_l28_n971
-end
-
-def fun_l27_n755()
- fun_l28_n372
-end
-
-def fun_l27_n756()
- fun_l28_n701
-end
-
-def fun_l27_n757()
- fun_l28_n383
-end
-
-def fun_l27_n758()
- fun_l28_n295
-end
-
-def fun_l27_n759()
- fun_l28_n58
-end
-
-def fun_l27_n760()
- fun_l28_n870
-end
-
-def fun_l27_n761()
- fun_l28_n902
-end
-
-def fun_l27_n762()
- fun_l28_n352
-end
-
-def fun_l27_n763()
- fun_l28_n421
-end
-
-def fun_l27_n764()
- fun_l28_n870
-end
-
-def fun_l27_n765()
- fun_l28_n604
-end
-
-def fun_l27_n766()
- fun_l28_n615
-end
-
-def fun_l27_n767()
- fun_l28_n644
-end
-
-def fun_l27_n768()
- fun_l28_n304
-end
-
-def fun_l27_n769()
- fun_l28_n87
-end
-
-def fun_l27_n770()
- fun_l28_n40
-end
-
-def fun_l27_n771()
- fun_l28_n80
-end
-
-def fun_l27_n772()
- fun_l28_n62
-end
-
-def fun_l27_n773()
- fun_l28_n912
-end
-
-def fun_l27_n774()
- fun_l28_n808
-end
-
-def fun_l27_n775()
- fun_l28_n978
-end
-
-def fun_l27_n776()
- fun_l28_n499
-end
-
-def fun_l27_n777()
- fun_l28_n299
-end
-
-def fun_l27_n778()
- fun_l28_n852
-end
-
-def fun_l27_n779()
- fun_l28_n126
-end
-
-def fun_l27_n780()
- fun_l28_n578
-end
-
-def fun_l27_n781()
- fun_l28_n177
-end
-
-def fun_l27_n782()
- fun_l28_n621
-end
-
-def fun_l27_n783()
- fun_l28_n833
-end
-
-def fun_l27_n784()
- fun_l28_n991
-end
-
-def fun_l27_n785()
- fun_l28_n419
-end
-
-def fun_l27_n786()
- fun_l28_n723
-end
-
-def fun_l27_n787()
- fun_l28_n915
-end
-
-def fun_l27_n788()
- fun_l28_n73
-end
-
-def fun_l27_n789()
- fun_l28_n725
-end
-
-def fun_l27_n790()
- fun_l28_n883
-end
-
-def fun_l27_n791()
- fun_l28_n469
-end
-
-def fun_l27_n792()
- fun_l28_n524
-end
-
-def fun_l27_n793()
- fun_l28_n813
-end
-
-def fun_l27_n794()
- fun_l28_n8
-end
-
-def fun_l27_n795()
- fun_l28_n776
-end
-
-def fun_l27_n796()
- fun_l28_n328
-end
-
-def fun_l27_n797()
- fun_l28_n324
-end
-
-def fun_l27_n798()
- fun_l28_n428
-end
-
-def fun_l27_n799()
- fun_l28_n806
-end
-
-def fun_l27_n800()
- fun_l28_n397
-end
-
-def fun_l27_n801()
- fun_l28_n680
-end
-
-def fun_l27_n802()
- fun_l28_n18
-end
-
-def fun_l27_n803()
- fun_l28_n955
-end
-
-def fun_l27_n804()
- fun_l28_n566
-end
-
-def fun_l27_n805()
- fun_l28_n824
-end
-
-def fun_l27_n806()
- fun_l28_n860
-end
-
-def fun_l27_n807()
- fun_l28_n411
-end
-
-def fun_l27_n808()
- fun_l28_n925
-end
-
-def fun_l27_n809()
- fun_l28_n394
-end
-
-def fun_l27_n810()
- fun_l28_n70
-end
-
-def fun_l27_n811()
- fun_l28_n672
-end
-
-def fun_l27_n812()
- fun_l28_n53
-end
-
-def fun_l27_n813()
- fun_l28_n574
-end
-
-def fun_l27_n814()
- fun_l28_n407
-end
-
-def fun_l27_n815()
- fun_l28_n86
-end
-
-def fun_l27_n816()
- fun_l28_n611
-end
-
-def fun_l27_n817()
- fun_l28_n950
-end
-
-def fun_l27_n818()
- fun_l28_n595
-end
-
-def fun_l27_n819()
- fun_l28_n411
-end
-
-def fun_l27_n820()
- fun_l28_n286
-end
-
-def fun_l27_n821()
- fun_l28_n683
-end
-
-def fun_l27_n822()
- fun_l28_n706
-end
-
-def fun_l27_n823()
- fun_l28_n587
-end
-
-def fun_l27_n824()
- fun_l28_n908
-end
-
-def fun_l27_n825()
- fun_l28_n641
-end
-
-def fun_l27_n826()
- fun_l28_n792
-end
-
-def fun_l27_n827()
- fun_l28_n714
-end
-
-def fun_l27_n828()
- fun_l28_n594
-end
-
-def fun_l27_n829()
- fun_l28_n154
-end
-
-def fun_l27_n830()
- fun_l28_n102
-end
-
-def fun_l27_n831()
- fun_l28_n819
-end
-
-def fun_l27_n832()
- fun_l28_n285
-end
-
-def fun_l27_n833()
- fun_l28_n665
-end
-
-def fun_l27_n834()
- fun_l28_n896
-end
-
-def fun_l27_n835()
- fun_l28_n495
-end
-
-def fun_l27_n836()
- fun_l28_n284
-end
-
-def fun_l27_n837()
- fun_l28_n747
-end
-
-def fun_l27_n838()
- fun_l28_n388
-end
-
-def fun_l27_n839()
- fun_l28_n274
-end
-
-def fun_l27_n840()
- fun_l28_n236
-end
-
-def fun_l27_n841()
- fun_l28_n336
-end
-
-def fun_l27_n842()
- fun_l28_n805
-end
-
-def fun_l27_n843()
- fun_l28_n196
-end
-
-def fun_l27_n844()
- fun_l28_n772
-end
-
-def fun_l27_n845()
- fun_l28_n679
-end
-
-def fun_l27_n846()
- fun_l28_n703
-end
-
-def fun_l27_n847()
- fun_l28_n743
-end
-
-def fun_l27_n848()
- fun_l28_n941
-end
-
-def fun_l27_n849()
- fun_l28_n903
-end
-
-def fun_l27_n850()
- fun_l28_n149
-end
-
-def fun_l27_n851()
- fun_l28_n924
-end
-
-def fun_l27_n852()
- fun_l28_n638
-end
-
-def fun_l27_n853()
- fun_l28_n480
-end
-
-def fun_l27_n854()
- fun_l28_n580
-end
-
-def fun_l27_n855()
- fun_l28_n184
-end
-
-def fun_l27_n856()
- fun_l28_n757
-end
-
-def fun_l27_n857()
- fun_l28_n233
-end
-
-def fun_l27_n858()
- fun_l28_n315
-end
-
-def fun_l27_n859()
- fun_l28_n182
-end
-
-def fun_l27_n860()
- fun_l28_n696
-end
-
-def fun_l27_n861()
- fun_l28_n155
-end
-
-def fun_l27_n862()
- fun_l28_n648
-end
-
-def fun_l27_n863()
- fun_l28_n148
-end
-
-def fun_l27_n864()
- fun_l28_n40
-end
-
-def fun_l27_n865()
- fun_l28_n665
-end
-
-def fun_l27_n866()
- fun_l28_n646
-end
-
-def fun_l27_n867()
- fun_l28_n158
-end
-
-def fun_l27_n868()
- fun_l28_n159
-end
-
-def fun_l27_n869()
- fun_l28_n617
-end
-
-def fun_l27_n870()
- fun_l28_n637
-end
-
-def fun_l27_n871()
- fun_l28_n234
-end
-
-def fun_l27_n872()
- fun_l28_n591
-end
-
-def fun_l27_n873()
- fun_l28_n207
-end
-
-def fun_l27_n874()
- fun_l28_n136
-end
-
-def fun_l27_n875()
- fun_l28_n565
-end
-
-def fun_l27_n876()
- fun_l28_n152
-end
-
-def fun_l27_n877()
- fun_l28_n309
-end
-
-def fun_l27_n878()
- fun_l28_n275
-end
-
-def fun_l27_n879()
- fun_l28_n355
-end
-
-def fun_l27_n880()
- fun_l28_n441
-end
-
-def fun_l27_n881()
- fun_l28_n427
-end
-
-def fun_l27_n882()
- fun_l28_n249
-end
-
-def fun_l27_n883()
- fun_l28_n764
-end
-
-def fun_l27_n884()
- fun_l28_n183
-end
-
-def fun_l27_n885()
- fun_l28_n302
-end
-
-def fun_l27_n886()
- fun_l28_n857
-end
-
-def fun_l27_n887()
- fun_l28_n73
-end
-
-def fun_l27_n888()
- fun_l28_n702
-end
-
-def fun_l27_n889()
- fun_l28_n430
-end
-
-def fun_l27_n890()
- fun_l28_n57
-end
-
-def fun_l27_n891()
- fun_l28_n994
-end
-
-def fun_l27_n892()
- fun_l28_n951
-end
-
-def fun_l27_n893()
- fun_l28_n268
-end
-
-def fun_l27_n894()
- fun_l28_n629
-end
-
-def fun_l27_n895()
- fun_l28_n505
-end
-
-def fun_l27_n896()
- fun_l28_n790
-end
-
-def fun_l27_n897()
- fun_l28_n213
-end
-
-def fun_l27_n898()
- fun_l28_n133
-end
-
-def fun_l27_n899()
- fun_l28_n472
-end
-
-def fun_l27_n900()
- fun_l28_n212
-end
-
-def fun_l27_n901()
- fun_l28_n386
-end
-
-def fun_l27_n902()
- fun_l28_n405
-end
-
-def fun_l27_n903()
- fun_l28_n807
-end
-
-def fun_l27_n904()
- fun_l28_n76
-end
-
-def fun_l27_n905()
- fun_l28_n295
-end
-
-def fun_l27_n906()
- fun_l28_n860
-end
-
-def fun_l27_n907()
- fun_l28_n185
-end
-
-def fun_l27_n908()
- fun_l28_n762
-end
-
-def fun_l27_n909()
- fun_l28_n493
-end
-
-def fun_l27_n910()
- fun_l28_n309
-end
-
-def fun_l27_n911()
- fun_l28_n920
-end
-
-def fun_l27_n912()
- fun_l28_n284
-end
-
-def fun_l27_n913()
- fun_l28_n355
-end
-
-def fun_l27_n914()
- fun_l28_n177
-end
-
-def fun_l27_n915()
- fun_l28_n901
-end
-
-def fun_l27_n916()
- fun_l28_n858
-end
-
-def fun_l27_n917()
- fun_l28_n337
-end
-
-def fun_l27_n918()
- fun_l28_n872
-end
-
-def fun_l27_n919()
- fun_l28_n550
-end
-
-def fun_l27_n920()
- fun_l28_n458
-end
-
-def fun_l27_n921()
- fun_l28_n739
-end
-
-def fun_l27_n922()
- fun_l28_n394
-end
-
-def fun_l27_n923()
- fun_l28_n695
-end
-
-def fun_l27_n924()
- fun_l28_n455
-end
-
-def fun_l27_n925()
- fun_l28_n958
-end
-
-def fun_l27_n926()
- fun_l28_n395
-end
-
-def fun_l27_n927()
- fun_l28_n645
-end
-
-def fun_l27_n928()
- fun_l28_n668
-end
-
-def fun_l27_n929()
- fun_l28_n880
-end
-
-def fun_l27_n930()
- fun_l28_n743
-end
-
-def fun_l27_n931()
- fun_l28_n411
-end
-
-def fun_l27_n932()
- fun_l28_n457
-end
-
-def fun_l27_n933()
- fun_l28_n852
-end
-
-def fun_l27_n934()
- fun_l28_n3
-end
-
-def fun_l27_n935()
- fun_l28_n637
-end
-
-def fun_l27_n936()
- fun_l28_n35
-end
-
-def fun_l27_n937()
- fun_l28_n671
-end
-
-def fun_l27_n938()
- fun_l28_n996
-end
-
-def fun_l27_n939()
- fun_l28_n545
-end
-
-def fun_l27_n940()
- fun_l28_n714
-end
-
-def fun_l27_n941()
- fun_l28_n527
-end
-
-def fun_l27_n942()
- fun_l28_n272
-end
-
-def fun_l27_n943()
- fun_l28_n62
-end
-
-def fun_l27_n944()
- fun_l28_n206
-end
-
-def fun_l27_n945()
- fun_l28_n115
-end
-
-def fun_l27_n946()
- fun_l28_n654
-end
-
-def fun_l27_n947()
- fun_l28_n218
-end
-
-def fun_l27_n948()
- fun_l28_n315
-end
-
-def fun_l27_n949()
- fun_l28_n656
-end
-
-def fun_l27_n950()
- fun_l28_n901
-end
-
-def fun_l27_n951()
- fun_l28_n60
-end
-
-def fun_l27_n952()
- fun_l28_n886
-end
-
-def fun_l27_n953()
- fun_l28_n888
-end
-
-def fun_l27_n954()
- fun_l28_n640
-end
-
-def fun_l27_n955()
- fun_l28_n766
-end
-
-def fun_l27_n956()
- fun_l28_n506
-end
-
-def fun_l27_n957()
- fun_l28_n757
-end
-
-def fun_l27_n958()
- fun_l28_n204
-end
-
-def fun_l27_n959()
- fun_l28_n531
-end
-
-def fun_l27_n960()
- fun_l28_n982
-end
-
-def fun_l27_n961()
- fun_l28_n762
-end
-
-def fun_l27_n962()
- fun_l28_n701
-end
-
-def fun_l27_n963()
- fun_l28_n866
-end
-
-def fun_l27_n964()
- fun_l28_n488
-end
-
-def fun_l27_n965()
- fun_l28_n793
-end
-
-def fun_l27_n966()
- fun_l28_n969
-end
-
-def fun_l27_n967()
- fun_l28_n35
-end
-
-def fun_l27_n968()
- fun_l28_n54
-end
-
-def fun_l27_n969()
- fun_l28_n746
-end
-
-def fun_l27_n970()
- fun_l28_n437
-end
-
-def fun_l27_n971()
- fun_l28_n601
-end
-
-def fun_l27_n972()
- fun_l28_n477
-end
-
-def fun_l27_n973()
- fun_l28_n854
-end
-
-def fun_l27_n974()
- fun_l28_n76
-end
-
-def fun_l27_n975()
- fun_l28_n145
-end
-
-def fun_l27_n976()
- fun_l28_n156
-end
-
-def fun_l27_n977()
- fun_l28_n719
-end
-
-def fun_l27_n978()
- fun_l28_n389
-end
-
-def fun_l27_n979()
- fun_l28_n482
-end
-
-def fun_l27_n980()
- fun_l28_n369
-end
-
-def fun_l27_n981()
- fun_l28_n42
-end
-
-def fun_l27_n982()
- fun_l28_n975
-end
-
-def fun_l27_n983()
- fun_l28_n995
-end
-
-def fun_l27_n984()
- fun_l28_n880
-end
-
-def fun_l27_n985()
- fun_l28_n688
-end
-
-def fun_l27_n986()
- fun_l28_n796
-end
-
-def fun_l27_n987()
- fun_l28_n291
-end
-
-def fun_l27_n988()
- fun_l28_n158
-end
-
-def fun_l27_n989()
- fun_l28_n389
-end
-
-def fun_l27_n990()
- fun_l28_n582
-end
-
-def fun_l27_n991()
- fun_l28_n108
-end
-
-def fun_l27_n992()
- fun_l28_n280
-end
-
-def fun_l27_n993()
- fun_l28_n842
-end
-
-def fun_l27_n994()
- fun_l28_n637
-end
-
-def fun_l27_n995()
- fun_l28_n934
-end
-
-def fun_l27_n996()
- fun_l28_n451
-end
-
-def fun_l27_n997()
- fun_l28_n22
-end
-
-def fun_l27_n998()
- fun_l28_n733
-end
-
-def fun_l27_n999()
- fun_l28_n984
-end
-
-def fun_l28_n0()
- fun_l29_n189
-end
-
-def fun_l28_n1()
- fun_l29_n12
-end
-
-def fun_l28_n2()
- fun_l29_n850
-end
-
-def fun_l28_n3()
- fun_l29_n360
-end
-
-def fun_l28_n4()
- fun_l29_n510
-end
-
-def fun_l28_n5()
- fun_l29_n541
-end
-
-def fun_l28_n6()
- fun_l29_n913
-end
-
-def fun_l28_n7()
- fun_l29_n652
-end
-
-def fun_l28_n8()
- fun_l29_n378
-end
-
-def fun_l28_n9()
- fun_l29_n476
-end
-
-def fun_l28_n10()
- fun_l29_n644
-end
-
-def fun_l28_n11()
- fun_l29_n484
-end
-
-def fun_l28_n12()
- fun_l29_n52
-end
-
-def fun_l28_n13()
- fun_l29_n294
-end
-
-def fun_l28_n14()
- fun_l29_n387
-end
-
-def fun_l28_n15()
- fun_l29_n331
-end
-
-def fun_l28_n16()
- fun_l29_n578
-end
-
-def fun_l28_n17()
- fun_l29_n783
-end
-
-def fun_l28_n18()
- fun_l29_n838
-end
-
-def fun_l28_n19()
- fun_l29_n5
-end
-
-def fun_l28_n20()
- fun_l29_n909
-end
-
-def fun_l28_n21()
- fun_l29_n671
-end
-
-def fun_l28_n22()
- fun_l29_n626
-end
-
-def fun_l28_n23()
- fun_l29_n685
-end
-
-def fun_l28_n24()
- fun_l29_n22
-end
-
-def fun_l28_n25()
- fun_l29_n925
-end
-
-def fun_l28_n26()
- fun_l29_n816
-end
-
-def fun_l28_n27()
- fun_l29_n714
-end
-
-def fun_l28_n28()
- fun_l29_n863
-end
-
-def fun_l28_n29()
- fun_l29_n475
-end
-
-def fun_l28_n30()
- fun_l29_n83
-end
-
-def fun_l28_n31()
- fun_l29_n854
-end
-
-def fun_l28_n32()
- fun_l29_n616
-end
-
-def fun_l28_n33()
- fun_l29_n574
-end
-
-def fun_l28_n34()
- fun_l29_n745
-end
-
-def fun_l28_n35()
- fun_l29_n921
-end
-
-def fun_l28_n36()
- fun_l29_n639
-end
-
-def fun_l28_n37()
- fun_l29_n695
-end
-
-def fun_l28_n38()
- fun_l29_n527
-end
-
-def fun_l28_n39()
- fun_l29_n691
-end
-
-def fun_l28_n40()
- fun_l29_n409
-end
-
-def fun_l28_n41()
- fun_l29_n788
-end
-
-def fun_l28_n42()
- fun_l29_n671
-end
-
-def fun_l28_n43()
- fun_l29_n855
-end
-
-def fun_l28_n44()
- fun_l29_n364
-end
-
-def fun_l28_n45()
- fun_l29_n231
-end
-
-def fun_l28_n46()
- fun_l29_n852
-end
-
-def fun_l28_n47()
- fun_l29_n596
-end
-
-def fun_l28_n48()
- fun_l29_n804
-end
-
-def fun_l28_n49()
- fun_l29_n513
-end
-
-def fun_l28_n50()
- fun_l29_n498
-end
-
-def fun_l28_n51()
- fun_l29_n548
-end
-
-def fun_l28_n52()
- fun_l29_n641
-end
-
-def fun_l28_n53()
- fun_l29_n784
-end
-
-def fun_l28_n54()
- fun_l29_n803
-end
-
-def fun_l28_n55()
- fun_l29_n384
-end
-
-def fun_l28_n56()
- fun_l29_n304
-end
-
-def fun_l28_n57()
- fun_l29_n894
-end
-
-def fun_l28_n58()
- fun_l29_n233
-end
-
-def fun_l28_n59()
- fun_l29_n344
-end
-
-def fun_l28_n60()
- fun_l29_n652
-end
-
-def fun_l28_n61()
- fun_l29_n912
-end
-
-def fun_l28_n62()
- fun_l29_n266
-end
-
-def fun_l28_n63()
- fun_l29_n228
-end
-
-def fun_l28_n64()
- fun_l29_n31
-end
-
-def fun_l28_n65()
- fun_l29_n679
-end
-
-def fun_l28_n66()
- fun_l29_n902
-end
-
-def fun_l28_n67()
- fun_l29_n907
-end
-
-def fun_l28_n68()
- fun_l29_n830
-end
-
-def fun_l28_n69()
- fun_l29_n849
-end
-
-def fun_l28_n70()
- fun_l29_n551
-end
-
-def fun_l28_n71()
- fun_l29_n586
-end
-
-def fun_l28_n72()
- fun_l29_n126
-end
-
-def fun_l28_n73()
- fun_l29_n75
-end
-
-def fun_l28_n74()
- fun_l29_n706
-end
-
-def fun_l28_n75()
- fun_l29_n82
-end
-
-def fun_l28_n76()
- fun_l29_n194
-end
-
-def fun_l28_n77()
- fun_l29_n761
-end
-
-def fun_l28_n78()
- fun_l29_n439
-end
-
-def fun_l28_n79()
- fun_l29_n53
-end
-
-def fun_l28_n80()
- fun_l29_n889
-end
-
-def fun_l28_n81()
- fun_l29_n743
-end
-
-def fun_l28_n82()
- fun_l29_n545
-end
-
-def fun_l28_n83()
- fun_l29_n88
-end
-
-def fun_l28_n84()
- fun_l29_n697
-end
-
-def fun_l28_n85()
- fun_l29_n160
-end
-
-def fun_l28_n86()
- fun_l29_n895
-end
-
-def fun_l28_n87()
- fun_l29_n475
-end
-
-def fun_l28_n88()
- fun_l29_n330
-end
-
-def fun_l28_n89()
- fun_l29_n464
-end
-
-def fun_l28_n90()
- fun_l29_n772
-end
-
-def fun_l28_n91()
- fun_l29_n241
-end
-
-def fun_l28_n92()
- fun_l29_n838
-end
-
-def fun_l28_n93()
- fun_l29_n322
-end
-
-def fun_l28_n94()
- fun_l29_n328
-end
-
-def fun_l28_n95()
- fun_l29_n475
-end
-
-def fun_l28_n96()
- fun_l29_n523
-end
-
-def fun_l28_n97()
- fun_l29_n621
-end
-
-def fun_l28_n98()
- fun_l29_n646
-end
-
-def fun_l28_n99()
- fun_l29_n803
-end
-
-def fun_l28_n100()
- fun_l29_n121
-end
-
-def fun_l28_n101()
- fun_l29_n432
-end
-
-def fun_l28_n102()
- fun_l29_n14
-end
-
-def fun_l28_n103()
- fun_l29_n358
-end
-
-def fun_l28_n104()
- fun_l29_n257
-end
-
-def fun_l28_n105()
- fun_l29_n985
-end
-
-def fun_l28_n106()
- fun_l29_n392
-end
-
-def fun_l28_n107()
- fun_l29_n11
-end
-
-def fun_l28_n108()
- fun_l29_n254
-end
-
-def fun_l28_n109()
- fun_l29_n17
-end
-
-def fun_l28_n110()
- fun_l29_n146
-end
-
-def fun_l28_n111()
- fun_l29_n20
-end
-
-def fun_l28_n112()
- fun_l29_n189
-end
-
-def fun_l28_n113()
- fun_l29_n838
-end
-
-def fun_l28_n114()
- fun_l29_n251
-end
-
-def fun_l28_n115()
- fun_l29_n331
-end
-
-def fun_l28_n116()
- fun_l29_n816
-end
-
-def fun_l28_n117()
- fun_l29_n338
-end
-
-def fun_l28_n118()
- fun_l29_n745
-end
-
-def fun_l28_n119()
- fun_l29_n301
-end
-
-def fun_l28_n120()
- fun_l29_n647
-end
-
-def fun_l28_n121()
- fun_l29_n71
-end
-
-def fun_l28_n122()
- fun_l29_n371
-end
-
-def fun_l28_n123()
- fun_l29_n586
-end
-
-def fun_l28_n124()
- fun_l29_n868
-end
-
-def fun_l28_n125()
- fun_l29_n519
-end
-
-def fun_l28_n126()
- fun_l29_n877
-end
-
-def fun_l28_n127()
- fun_l29_n716
-end
-
-def fun_l28_n128()
- fun_l29_n184
-end
-
-def fun_l28_n129()
- fun_l29_n797
-end
-
-def fun_l28_n130()
- fun_l29_n801
-end
-
-def fun_l28_n131()
- fun_l29_n278
-end
-
-def fun_l28_n132()
- fun_l29_n562
-end
-
-def fun_l28_n133()
- fun_l29_n999
-end
-
-def fun_l28_n134()
- fun_l29_n128
-end
-
-def fun_l28_n135()
- fun_l29_n134
-end
-
-def fun_l28_n136()
- fun_l29_n62
-end
-
-def fun_l28_n137()
- fun_l29_n923
-end
-
-def fun_l28_n138()
- fun_l29_n870
-end
-
-def fun_l28_n139()
- fun_l29_n279
-end
-
-def fun_l28_n140()
- fun_l29_n971
-end
-
-def fun_l28_n141()
- fun_l29_n843
-end
-
-def fun_l28_n142()
- fun_l29_n537
-end
-
-def fun_l28_n143()
- fun_l29_n584
-end
-
-def fun_l28_n144()
- fun_l29_n961
-end
-
-def fun_l28_n145()
- fun_l29_n383
-end
-
-def fun_l28_n146()
- fun_l29_n44
-end
-
-def fun_l28_n147()
- fun_l29_n291
-end
-
-def fun_l28_n148()
- fun_l29_n639
-end
-
-def fun_l28_n149()
- fun_l29_n751
-end
-
-def fun_l28_n150()
- fun_l29_n504
-end
-
-def fun_l28_n151()
- fun_l29_n884
-end
-
-def fun_l28_n152()
- fun_l29_n505
-end
-
-def fun_l28_n153()
- fun_l29_n932
-end
-
-def fun_l28_n154()
- fun_l29_n414
-end
-
-def fun_l28_n155()
- fun_l29_n121
-end
-
-def fun_l28_n156()
- fun_l29_n313
-end
-
-def fun_l28_n157()
- fun_l29_n620
-end
-
-def fun_l28_n158()
- fun_l29_n412
-end
-
-def fun_l28_n159()
- fun_l29_n119
-end
-
-def fun_l28_n160()
- fun_l29_n431
-end
-
-def fun_l28_n161()
- fun_l29_n943
-end
-
-def fun_l28_n162()
- fun_l29_n499
-end
-
-def fun_l28_n163()
- fun_l29_n494
-end
-
-def fun_l28_n164()
- fun_l29_n716
-end
-
-def fun_l28_n165()
- fun_l29_n558
-end
-
-def fun_l28_n166()
- fun_l29_n864
-end
-
-def fun_l28_n167()
- fun_l29_n13
-end
-
-def fun_l28_n168()
- fun_l29_n165
-end
-
-def fun_l28_n169()
- fun_l29_n129
-end
-
-def fun_l28_n170()
- fun_l29_n478
-end
-
-def fun_l28_n171()
- fun_l29_n124
-end
-
-def fun_l28_n172()
- fun_l29_n945
-end
-
-def fun_l28_n173()
- fun_l29_n574
-end
-
-def fun_l28_n174()
- fun_l29_n916
-end
-
-def fun_l28_n175()
- fun_l29_n213
-end
-
-def fun_l28_n176()
- fun_l29_n68
-end
-
-def fun_l28_n177()
- fun_l29_n66
-end
-
-def fun_l28_n178()
- fun_l29_n979
-end
-
-def fun_l28_n179()
- fun_l29_n909
-end
-
-def fun_l28_n180()
- fun_l29_n509
-end
-
-def fun_l28_n181()
- fun_l29_n663
-end
-
-def fun_l28_n182()
- fun_l29_n407
-end
-
-def fun_l28_n183()
- fun_l29_n692
-end
-
-def fun_l28_n184()
- fun_l29_n569
-end
-
-def fun_l28_n185()
- fun_l29_n950
-end
-
-def fun_l28_n186()
- fun_l29_n266
-end
-
-def fun_l28_n187()
- fun_l29_n48
-end
-
-def fun_l28_n188()
- fun_l29_n244
-end
-
-def fun_l28_n189()
- fun_l29_n428
-end
-
-def fun_l28_n190()
- fun_l29_n893
-end
-
-def fun_l28_n191()
- fun_l29_n581
-end
-
-def fun_l28_n192()
- fun_l29_n210
-end
-
-def fun_l28_n193()
- fun_l29_n81
-end
-
-def fun_l28_n194()
- fun_l29_n295
-end
-
-def fun_l28_n195()
- fun_l29_n471
-end
-
-def fun_l28_n196()
- fun_l29_n967
-end
-
-def fun_l28_n197()
- fun_l29_n318
-end
-
-def fun_l28_n198()
- fun_l29_n15
-end
-
-def fun_l28_n199()
- fun_l29_n696
-end
-
-def fun_l28_n200()
- fun_l29_n702
-end
-
-def fun_l28_n201()
- fun_l29_n737
-end
-
-def fun_l28_n202()
- fun_l29_n776
-end
-
-def fun_l28_n203()
- fun_l29_n623
-end
-
-def fun_l28_n204()
- fun_l29_n537
-end
-
-def fun_l28_n205()
- fun_l29_n353
-end
-
-def fun_l28_n206()
- fun_l29_n156
-end
-
-def fun_l28_n207()
- fun_l29_n690
-end
-
-def fun_l28_n208()
- fun_l29_n408
-end
-
-def fun_l28_n209()
- fun_l29_n388
-end
-
-def fun_l28_n210()
- fun_l29_n721
-end
-
-def fun_l28_n211()
- fun_l29_n46
-end
-
-def fun_l28_n212()
- fun_l29_n238
-end
-
-def fun_l28_n213()
- fun_l29_n722
-end
-
-def fun_l28_n214()
- fun_l29_n827
-end
-
-def fun_l28_n215()
- fun_l29_n496
-end
-
-def fun_l28_n216()
- fun_l29_n10
-end
-
-def fun_l28_n217()
- fun_l29_n689
-end
-
-def fun_l28_n218()
- fun_l29_n962
-end
-
-def fun_l28_n219()
- fun_l29_n364
-end
-
-def fun_l28_n220()
- fun_l29_n92
-end
-
-def fun_l28_n221()
- fun_l29_n246
-end
-
-def fun_l28_n222()
- fun_l29_n624
-end
-
-def fun_l28_n223()
- fun_l29_n482
-end
-
-def fun_l28_n224()
- fun_l29_n992
-end
-
-def fun_l28_n225()
- fun_l29_n746
-end
-
-def fun_l28_n226()
- fun_l29_n44
-end
-
-def fun_l28_n227()
- fun_l29_n389
-end
-
-def fun_l28_n228()
- fun_l29_n278
-end
-
-def fun_l28_n229()
- fun_l29_n336
-end
-
-def fun_l28_n230()
- fun_l29_n415
-end
-
-def fun_l28_n231()
- fun_l29_n670
-end
-
-def fun_l28_n232()
- fun_l29_n132
-end
-
-def fun_l28_n233()
- fun_l29_n669
-end
-
-def fun_l28_n234()
- fun_l29_n815
-end
-
-def fun_l28_n235()
- fun_l29_n642
-end
-
-def fun_l28_n236()
- fun_l29_n59
-end
-
-def fun_l28_n237()
- fun_l29_n175
-end
-
-def fun_l28_n238()
- fun_l29_n862
-end
-
-def fun_l28_n239()
- fun_l29_n570
-end
-
-def fun_l28_n240()
- fun_l29_n65
-end
-
-def fun_l28_n241()
- fun_l29_n286
-end
-
-def fun_l28_n242()
- fun_l29_n467
-end
-
-def fun_l28_n243()
- fun_l29_n580
-end
-
-def fun_l28_n244()
- fun_l29_n195
-end
-
-def fun_l28_n245()
- fun_l29_n571
-end
-
-def fun_l28_n246()
- fun_l29_n987
-end
-
-def fun_l28_n247()
- fun_l29_n87
-end
-
-def fun_l28_n248()
- fun_l29_n331
-end
-
-def fun_l28_n249()
- fun_l29_n405
-end
-
-def fun_l28_n250()
- fun_l29_n142
-end
-
-def fun_l28_n251()
- fun_l29_n652
-end
-
-def fun_l28_n252()
- fun_l29_n788
-end
-
-def fun_l28_n253()
- fun_l29_n591
-end
-
-def fun_l28_n254()
- fun_l29_n613
-end
-
-def fun_l28_n255()
- fun_l29_n171
-end
-
-def fun_l28_n256()
- fun_l29_n836
-end
-
-def fun_l28_n257()
- fun_l29_n420
-end
-
-def fun_l28_n258()
- fun_l29_n326
-end
-
-def fun_l28_n259()
- fun_l29_n790
-end
-
-def fun_l28_n260()
- fun_l29_n515
-end
-
-def fun_l28_n261()
- fun_l29_n650
-end
-
-def fun_l28_n262()
- fun_l29_n388
-end
-
-def fun_l28_n263()
- fun_l29_n56
-end
-
-def fun_l28_n264()
- fun_l29_n288
-end
-
-def fun_l28_n265()
- fun_l29_n187
-end
-
-def fun_l28_n266()
- fun_l29_n461
-end
-
-def fun_l28_n267()
- fun_l29_n194
-end
-
-def fun_l28_n268()
- fun_l29_n870
-end
-
-def fun_l28_n269()
- fun_l29_n425
-end
-
-def fun_l28_n270()
- fun_l29_n731
-end
-
-def fun_l28_n271()
- fun_l29_n763
-end
-
-def fun_l28_n272()
- fun_l29_n128
-end
-
-def fun_l28_n273()
- fun_l29_n693
-end
-
-def fun_l28_n274()
- fun_l29_n775
-end
-
-def fun_l28_n275()
- fun_l29_n769
-end
-
-def fun_l28_n276()
- fun_l29_n491
-end
-
-def fun_l28_n277()
- fun_l29_n799
-end
-
-def fun_l28_n278()
- fun_l29_n506
-end
-
-def fun_l28_n279()
- fun_l29_n607
-end
-
-def fun_l28_n280()
- fun_l29_n988
-end
-
-def fun_l28_n281()
- fun_l29_n290
-end
-
-def fun_l28_n282()
- fun_l29_n389
-end
-
-def fun_l28_n283()
- fun_l29_n133
-end
-
-def fun_l28_n284()
- fun_l29_n631
-end
-
-def fun_l28_n285()
- fun_l29_n285
-end
-
-def fun_l28_n286()
- fun_l29_n537
-end
-
-def fun_l28_n287()
- fun_l29_n911
-end
-
-def fun_l28_n288()
- fun_l29_n297
-end
-
-def fun_l28_n289()
- fun_l29_n585
-end
-
-def fun_l28_n290()
- fun_l29_n535
-end
-
-def fun_l28_n291()
- fun_l29_n570
-end
-
-def fun_l28_n292()
- fun_l29_n19
-end
-
-def fun_l28_n293()
- fun_l29_n444
-end
-
-def fun_l28_n294()
- fun_l29_n44
-end
-
-def fun_l28_n295()
- fun_l29_n252
-end
-
-def fun_l28_n296()
- fun_l29_n623
-end
-
-def fun_l28_n297()
- fun_l29_n398
-end
-
-def fun_l28_n298()
- fun_l29_n716
-end
-
-def fun_l28_n299()
- fun_l29_n607
-end
-
-def fun_l28_n300()
- fun_l29_n105
-end
-
-def fun_l28_n301()
- fun_l29_n438
-end
-
-def fun_l28_n302()
- fun_l29_n308
-end
-
-def fun_l28_n303()
- fun_l29_n301
-end
-
-def fun_l28_n304()
- fun_l29_n577
-end
-
-def fun_l28_n305()
- fun_l29_n537
-end
-
-def fun_l28_n306()
- fun_l29_n375
-end
-
-def fun_l28_n307()
- fun_l29_n211
-end
-
-def fun_l28_n308()
- fun_l29_n227
-end
-
-def fun_l28_n309()
- fun_l29_n275
-end
-
-def fun_l28_n310()
- fun_l29_n122
-end
-
-def fun_l28_n311()
- fun_l29_n983
-end
-
-def fun_l28_n312()
- fun_l29_n844
-end
-
-def fun_l28_n313()
- fun_l29_n865
-end
-
-def fun_l28_n314()
- fun_l29_n27
-end
-
-def fun_l28_n315()
- fun_l29_n933
-end
-
-def fun_l28_n316()
- fun_l29_n89
-end
-
-def fun_l28_n317()
- fun_l29_n11
-end
-
-def fun_l28_n318()
- fun_l29_n107
-end
-
-def fun_l28_n319()
- fun_l29_n604
-end
-
-def fun_l28_n320()
- fun_l29_n768
-end
-
-def fun_l28_n321()
- fun_l29_n638
-end
-
-def fun_l28_n322()
- fun_l29_n513
-end
-
-def fun_l28_n323()
- fun_l29_n61
-end
-
-def fun_l28_n324()
- fun_l29_n776
-end
-
-def fun_l28_n325()
- fun_l29_n377
-end
-
-def fun_l28_n326()
- fun_l29_n768
-end
-
-def fun_l28_n327()
- fun_l29_n573
-end
-
-def fun_l28_n328()
- fun_l29_n719
-end
-
-def fun_l28_n329()
- fun_l29_n878
-end
-
-def fun_l28_n330()
- fun_l29_n995
-end
-
-def fun_l28_n331()
- fun_l29_n32
-end
-
-def fun_l28_n332()
- fun_l29_n647
-end
-
-def fun_l28_n333()
- fun_l29_n570
-end
-
-def fun_l28_n334()
- fun_l29_n194
-end
-
-def fun_l28_n335()
- fun_l29_n182
-end
-
-def fun_l28_n336()
- fun_l29_n463
-end
-
-def fun_l28_n337()
- fun_l29_n677
-end
-
-def fun_l28_n338()
- fun_l29_n524
-end
-
-def fun_l28_n339()
- fun_l29_n221
-end
-
-def fun_l28_n340()
- fun_l29_n120
-end
-
-def fun_l28_n341()
- fun_l29_n633
-end
-
-def fun_l28_n342()
- fun_l29_n428
-end
-
-def fun_l28_n343()
- fun_l29_n510
-end
-
-def fun_l28_n344()
- fun_l29_n576
-end
-
-def fun_l28_n345()
- fun_l29_n423
-end
-
-def fun_l28_n346()
- fun_l29_n412
-end
-
-def fun_l28_n347()
- fun_l29_n315
-end
-
-def fun_l28_n348()
- fun_l29_n809
-end
-
-def fun_l28_n349()
- fun_l29_n195
-end
-
-def fun_l28_n350()
- fun_l29_n724
-end
-
-def fun_l28_n351()
- fun_l29_n438
-end
-
-def fun_l28_n352()
- fun_l29_n229
-end
-
-def fun_l28_n353()
- fun_l29_n113
-end
-
-def fun_l28_n354()
- fun_l29_n58
-end
-
-def fun_l28_n355()
- fun_l29_n105
-end
-
-def fun_l28_n356()
- fun_l29_n371
-end
-
-def fun_l28_n357()
- fun_l29_n397
-end
-
-def fun_l28_n358()
- fun_l29_n441
-end
-
-def fun_l28_n359()
- fun_l29_n765
-end
-
-def fun_l28_n360()
- fun_l29_n752
-end
-
-def fun_l28_n361()
- fun_l29_n255
-end
-
-def fun_l28_n362()
- fun_l29_n981
-end
-
-def fun_l28_n363()
- fun_l29_n612
-end
-
-def fun_l28_n364()
- fun_l29_n268
-end
-
-def fun_l28_n365()
- fun_l29_n573
-end
-
-def fun_l28_n366()
- fun_l29_n202
-end
-
-def fun_l28_n367()
- fun_l29_n477
-end
-
-def fun_l28_n368()
- fun_l29_n353
-end
-
-def fun_l28_n369()
- fun_l29_n244
-end
-
-def fun_l28_n370()
- fun_l29_n348
-end
-
-def fun_l28_n371()
- fun_l29_n96
-end
-
-def fun_l28_n372()
- fun_l29_n421
-end
-
-def fun_l28_n373()
- fun_l29_n685
-end
-
-def fun_l28_n374()
- fun_l29_n408
-end
-
-def fun_l28_n375()
- fun_l29_n971
-end
-
-def fun_l28_n376()
- fun_l29_n372
-end
-
-def fun_l28_n377()
- fun_l29_n852
-end
-
-def fun_l28_n378()
- fun_l29_n872
-end
-
-def fun_l28_n379()
- fun_l29_n981
-end
-
-def fun_l28_n380()
- fun_l29_n939
-end
-
-def fun_l28_n381()
- fun_l29_n13
-end
-
-def fun_l28_n382()
- fun_l29_n381
-end
-
-def fun_l28_n383()
- fun_l29_n291
-end
-
-def fun_l28_n384()
- fun_l29_n465
-end
-
-def fun_l28_n385()
- fun_l29_n309
-end
-
-def fun_l28_n386()
- fun_l29_n53
-end
-
-def fun_l28_n387()
- fun_l29_n525
-end
-
-def fun_l28_n388()
- fun_l29_n756
-end
-
-def fun_l28_n389()
- fun_l29_n347
-end
-
-def fun_l28_n390()
- fun_l29_n517
-end
-
-def fun_l28_n391()
- fun_l29_n275
-end
-
-def fun_l28_n392()
- fun_l29_n973
-end
-
-def fun_l28_n393()
- fun_l29_n538
-end
-
-def fun_l28_n394()
- fun_l29_n429
-end
-
-def fun_l28_n395()
- fun_l29_n219
-end
-
-def fun_l28_n396()
- fun_l29_n823
-end
-
-def fun_l28_n397()
- fun_l29_n676
-end
-
-def fun_l28_n398()
- fun_l29_n319
-end
-
-def fun_l28_n399()
- fun_l29_n784
-end
-
-def fun_l28_n400()
- fun_l29_n741
-end
-
-def fun_l28_n401()
- fun_l29_n876
-end
-
-def fun_l28_n402()
- fun_l29_n648
-end
-
-def fun_l28_n403()
- fun_l29_n231
-end
-
-def fun_l28_n404()
- fun_l29_n459
-end
-
-def fun_l28_n405()
- fun_l29_n350
-end
-
-def fun_l28_n406()
- fun_l29_n398
-end
-
-def fun_l28_n407()
- fun_l29_n692
-end
-
-def fun_l28_n408()
- fun_l29_n91
-end
-
-def fun_l28_n409()
- fun_l29_n120
-end
-
-def fun_l28_n410()
- fun_l29_n337
-end
-
-def fun_l28_n411()
- fun_l29_n963
-end
-
-def fun_l28_n412()
- fun_l29_n16
-end
-
-def fun_l28_n413()
- fun_l29_n956
-end
-
-def fun_l28_n414()
- fun_l29_n255
-end
-
-def fun_l28_n415()
- fun_l29_n309
-end
-
-def fun_l28_n416()
- fun_l29_n430
-end
-
-def fun_l28_n417()
- fun_l29_n374
-end
-
-def fun_l28_n418()
- fun_l29_n559
-end
-
-def fun_l28_n419()
- fun_l29_n393
-end
-
-def fun_l28_n420()
- fun_l29_n547
-end
-
-def fun_l28_n421()
- fun_l29_n500
-end
-
-def fun_l28_n422()
- fun_l29_n771
-end
-
-def fun_l28_n423()
- fun_l29_n429
-end
-
-def fun_l28_n424()
- fun_l29_n839
-end
-
-def fun_l28_n425()
- fun_l29_n871
-end
-
-def fun_l28_n426()
- fun_l29_n333
-end
-
-def fun_l28_n427()
- fun_l29_n652
-end
-
-def fun_l28_n428()
- fun_l29_n87
-end
-
-def fun_l28_n429()
- fun_l29_n472
-end
-
-def fun_l28_n430()
- fun_l29_n911
-end
-
-def fun_l28_n431()
- fun_l29_n305
-end
-
-def fun_l28_n432()
- fun_l29_n569
-end
-
-def fun_l28_n433()
- fun_l29_n869
-end
-
-def fun_l28_n434()
- fun_l29_n203
-end
-
-def fun_l28_n435()
- fun_l29_n804
-end
-
-def fun_l28_n436()
- fun_l29_n878
-end
-
-def fun_l28_n437()
- fun_l29_n984
-end
-
-def fun_l28_n438()
- fun_l29_n990
-end
-
-def fun_l28_n439()
- fun_l29_n860
-end
-
-def fun_l28_n440()
- fun_l29_n866
-end
-
-def fun_l28_n441()
- fun_l29_n625
-end
-
-def fun_l28_n442()
- fun_l29_n534
-end
-
-def fun_l28_n443()
- fun_l29_n232
-end
-
-def fun_l28_n444()
- fun_l29_n447
-end
-
-def fun_l28_n445()
- fun_l29_n958
-end
-
-def fun_l28_n446()
- fun_l29_n343
-end
-
-def fun_l28_n447()
- fun_l29_n128
-end
-
-def fun_l28_n448()
- fun_l29_n760
-end
-
-def fun_l28_n449()
- fun_l29_n204
-end
-
-def fun_l28_n450()
- fun_l29_n912
-end
-
-def fun_l28_n451()
- fun_l29_n395
-end
-
-def fun_l28_n452()
- fun_l29_n721
-end
-
-def fun_l28_n453()
- fun_l29_n699
-end
-
-def fun_l28_n454()
- fun_l29_n950
-end
-
-def fun_l28_n455()
- fun_l29_n436
-end
-
-def fun_l28_n456()
- fun_l29_n431
-end
-
-def fun_l28_n457()
- fun_l29_n644
-end
-
-def fun_l28_n458()
- fun_l29_n638
-end
-
-def fun_l28_n459()
- fun_l29_n967
-end
-
-def fun_l28_n460()
- fun_l29_n83
-end
-
-def fun_l28_n461()
- fun_l29_n141
-end
-
-def fun_l28_n462()
- fun_l29_n37
-end
-
-def fun_l28_n463()
- fun_l29_n485
-end
-
-def fun_l28_n464()
- fun_l29_n826
-end
-
-def fun_l28_n465()
- fun_l29_n774
-end
-
-def fun_l28_n466()
- fun_l29_n561
-end
-
-def fun_l28_n467()
- fun_l29_n809
-end
-
-def fun_l28_n468()
- fun_l29_n298
-end
-
-def fun_l28_n469()
- fun_l29_n367
-end
-
-def fun_l28_n470()
- fun_l29_n517
-end
-
-def fun_l28_n471()
- fun_l29_n30
-end
-
-def fun_l28_n472()
- fun_l29_n970
-end
-
-def fun_l28_n473()
- fun_l29_n686
-end
-
-def fun_l28_n474()
- fun_l29_n183
-end
-
-def fun_l28_n475()
- fun_l29_n176
-end
-
-def fun_l28_n476()
- fun_l29_n87
-end
-
-def fun_l28_n477()
- fun_l29_n81
-end
-
-def fun_l28_n478()
- fun_l29_n836
-end
-
-def fun_l28_n479()
- fun_l29_n898
-end
-
-def fun_l28_n480()
- fun_l29_n49
-end
-
-def fun_l28_n481()
- fun_l29_n468
-end
-
-def fun_l28_n482()
- fun_l29_n314
-end
-
-def fun_l28_n483()
- fun_l29_n242
-end
-
-def fun_l28_n484()
- fun_l29_n647
-end
-
-def fun_l28_n485()
- fun_l29_n167
-end
-
-def fun_l28_n486()
- fun_l29_n245
-end
-
-def fun_l28_n487()
- fun_l29_n723
-end
-
-def fun_l28_n488()
- fun_l29_n576
-end
-
-def fun_l28_n489()
- fun_l29_n481
-end
-
-def fun_l28_n490()
- fun_l29_n154
-end
-
-def fun_l28_n491()
- fun_l29_n271
-end
-
-def fun_l28_n492()
- fun_l29_n671
-end
-
-def fun_l28_n493()
- fun_l29_n70
-end
-
-def fun_l28_n494()
- fun_l29_n14
-end
-
-def fun_l28_n495()
- fun_l29_n108
-end
-
-def fun_l28_n496()
- fun_l29_n464
-end
-
-def fun_l28_n497()
- fun_l29_n7
-end
-
-def fun_l28_n498()
- fun_l29_n372
-end
-
-def fun_l28_n499()
- fun_l29_n202
-end
-
-def fun_l28_n500()
- fun_l29_n208
-end
-
-def fun_l28_n501()
- fun_l29_n640
-end
-
-def fun_l28_n502()
- fun_l29_n977
-end
-
-def fun_l28_n503()
- fun_l29_n287
-end
-
-def fun_l28_n504()
- fun_l29_n905
-end
-
-def fun_l28_n505()
- fun_l29_n847
-end
-
-def fun_l28_n506()
- fun_l29_n18
-end
-
-def fun_l28_n507()
- fun_l29_n889
-end
-
-def fun_l28_n508()
- fun_l29_n527
-end
-
-def fun_l28_n509()
- fun_l29_n137
-end
-
-def fun_l28_n510()
- fun_l29_n256
-end
-
-def fun_l28_n511()
- fun_l29_n449
-end
-
-def fun_l28_n512()
- fun_l29_n252
-end
-
-def fun_l28_n513()
- fun_l29_n42
-end
-
-def fun_l28_n514()
- fun_l29_n398
-end
-
-def fun_l28_n515()
- fun_l29_n655
-end
-
-def fun_l28_n516()
- fun_l29_n208
-end
-
-def fun_l28_n517()
- fun_l29_n883
-end
-
-def fun_l28_n518()
- fun_l29_n401
-end
-
-def fun_l28_n519()
- fun_l29_n825
-end
-
-def fun_l28_n520()
- fun_l29_n380
-end
-
-def fun_l28_n521()
- fun_l29_n277
-end
-
-def fun_l28_n522()
- fun_l29_n165
-end
-
-def fun_l28_n523()
- fun_l29_n373
-end
-
-def fun_l28_n524()
- fun_l29_n378
-end
-
-def fun_l28_n525()
- fun_l29_n70
-end
-
-def fun_l28_n526()
- fun_l29_n975
-end
-
-def fun_l28_n527()
- fun_l29_n34
-end
-
-def fun_l28_n528()
- fun_l29_n346
-end
-
-def fun_l28_n529()
- fun_l29_n322
-end
-
-def fun_l28_n530()
- fun_l29_n429
-end
-
-def fun_l28_n531()
- fun_l29_n20
-end
-
-def fun_l28_n532()
- fun_l29_n155
-end
-
-def fun_l28_n533()
- fun_l29_n896
-end
-
-def fun_l28_n534()
- fun_l29_n860
-end
-
-def fun_l28_n535()
- fun_l29_n602
-end
-
-def fun_l28_n536()
- fun_l29_n573
-end
-
-def fun_l28_n537()
- fun_l29_n448
-end
-
-def fun_l28_n538()
- fun_l29_n637
-end
-
-def fun_l28_n539()
- fun_l29_n890
-end
-
-def fun_l28_n540()
- fun_l29_n200
-end
-
-def fun_l28_n541()
- fun_l29_n405
-end
-
-def fun_l28_n542()
- fun_l29_n656
-end
-
-def fun_l28_n543()
- fun_l29_n974
-end
-
-def fun_l28_n544()
- fun_l29_n711
-end
-
-def fun_l28_n545()
- fun_l29_n206
-end
-
-def fun_l28_n546()
- fun_l29_n677
-end
-
-def fun_l28_n547()
- fun_l29_n125
-end
-
-def fun_l28_n548()
- fun_l29_n576
-end
-
-def fun_l28_n549()
- fun_l29_n923
-end
-
-def fun_l28_n550()
- fun_l29_n86
-end
-
-def fun_l28_n551()
- fun_l29_n827
-end
-
-def fun_l28_n552()
- fun_l29_n76
-end
-
-def fun_l28_n553()
- fun_l29_n143
-end
-
-def fun_l28_n554()
- fun_l29_n435
-end
-
-def fun_l28_n555()
- fun_l29_n75
-end
-
-def fun_l28_n556()
- fun_l29_n23
-end
-
-def fun_l28_n557()
- fun_l29_n658
-end
-
-def fun_l28_n558()
- fun_l29_n814
-end
-
-def fun_l28_n559()
- fun_l29_n833
-end
-
-def fun_l28_n560()
- fun_l29_n101
-end
-
-def fun_l28_n561()
- fun_l29_n513
-end
-
-def fun_l28_n562()
- fun_l29_n43
-end
-
-def fun_l28_n563()
- fun_l29_n576
-end
-
-def fun_l28_n564()
- fun_l29_n131
-end
-
-def fun_l28_n565()
- fun_l29_n920
-end
-
-def fun_l28_n566()
- fun_l29_n299
-end
-
-def fun_l28_n567()
- fun_l29_n216
-end
-
-def fun_l28_n568()
- fun_l29_n547
-end
-
-def fun_l28_n569()
- fun_l29_n728
-end
-
-def fun_l28_n570()
- fun_l29_n349
-end
-
-def fun_l28_n571()
- fun_l29_n927
-end
-
-def fun_l28_n572()
- fun_l29_n328
-end
-
-def fun_l28_n573()
- fun_l29_n790
-end
-
-def fun_l28_n574()
- fun_l29_n397
-end
-
-def fun_l28_n575()
- fun_l29_n423
-end
-
-def fun_l28_n576()
- fun_l29_n867
-end
-
-def fun_l28_n577()
- fun_l29_n529
-end
-
-def fun_l28_n578()
- fun_l29_n825
-end
-
-def fun_l28_n579()
- fun_l29_n51
-end
-
-def fun_l28_n580()
- fun_l29_n482
-end
-
-def fun_l28_n581()
- fun_l29_n395
-end
-
-def fun_l28_n582()
- fun_l29_n771
-end
-
-def fun_l28_n583()
- fun_l29_n118
-end
-
-def fun_l28_n584()
- fun_l29_n348
-end
-
-def fun_l28_n585()
- fun_l29_n895
-end
-
-def fun_l28_n586()
- fun_l29_n956
-end
-
-def fun_l28_n587()
- fun_l29_n251
-end
-
-def fun_l28_n588()
- fun_l29_n216
-end
-
-def fun_l28_n589()
- fun_l29_n837
-end
-
-def fun_l28_n590()
- fun_l29_n956
-end
-
-def fun_l28_n591()
- fun_l29_n309
-end
-
-def fun_l28_n592()
- fun_l29_n706
-end
-
-def fun_l28_n593()
- fun_l29_n58
-end
-
-def fun_l28_n594()
- fun_l29_n244
-end
-
-def fun_l28_n595()
- fun_l29_n281
-end
-
-def fun_l28_n596()
- fun_l29_n748
-end
-
-def fun_l28_n597()
- fun_l29_n109
-end
-
-def fun_l28_n598()
- fun_l29_n730
-end
-
-def fun_l28_n599()
- fun_l29_n590
-end
-
-def fun_l28_n600()
- fun_l29_n331
-end
-
-def fun_l28_n601()
- fun_l29_n700
-end
-
-def fun_l28_n602()
- fun_l29_n606
-end
-
-def fun_l28_n603()
- fun_l29_n331
-end
-
-def fun_l28_n604()
- fun_l29_n695
-end
-
-def fun_l28_n605()
- fun_l29_n355
-end
-
-def fun_l28_n606()
- fun_l29_n449
-end
-
-def fun_l28_n607()
- fun_l29_n728
-end
-
-def fun_l28_n608()
- fun_l29_n248
-end
-
-def fun_l28_n609()
- fun_l29_n949
-end
-
-def fun_l28_n610()
- fun_l29_n473
-end
-
-def fun_l28_n611()
- fun_l29_n244
-end
-
-def fun_l28_n612()
- fun_l29_n790
-end
-
-def fun_l28_n613()
- fun_l29_n983
-end
-
-def fun_l28_n614()
- fun_l29_n76
-end
-
-def fun_l28_n615()
- fun_l29_n792
-end
-
-def fun_l28_n616()
- fun_l29_n195
-end
-
-def fun_l28_n617()
- fun_l29_n559
-end
-
-def fun_l28_n618()
- fun_l29_n269
-end
-
-def fun_l28_n619()
- fun_l29_n152
-end
-
-def fun_l28_n620()
- fun_l29_n507
-end
-
-def fun_l28_n621()
- fun_l29_n165
-end
-
-def fun_l28_n622()
- fun_l29_n779
-end
-
-def fun_l28_n623()
- fun_l29_n182
-end
-
-def fun_l28_n624()
- fun_l29_n76
-end
-
-def fun_l28_n625()
- fun_l29_n585
-end
-
-def fun_l28_n626()
- fun_l29_n943
-end
-
-def fun_l28_n627()
- fun_l29_n25
-end
-
-def fun_l28_n628()
- fun_l29_n200
-end
-
-def fun_l28_n629()
- fun_l29_n590
-end
-
-def fun_l28_n630()
- fun_l29_n631
-end
-
-def fun_l28_n631()
- fun_l29_n610
-end
-
-def fun_l28_n632()
- fun_l29_n197
-end
-
-def fun_l28_n633()
- fun_l29_n608
-end
-
-def fun_l28_n634()
- fun_l29_n585
-end
-
-def fun_l28_n635()
- fun_l29_n987
-end
-
-def fun_l28_n636()
- fun_l29_n440
-end
-
-def fun_l28_n637()
- fun_l29_n808
-end
-
-def fun_l28_n638()
- fun_l29_n208
-end
-
-def fun_l28_n639()
- fun_l29_n382
-end
-
-def fun_l28_n640()
- fun_l29_n631
-end
-
-def fun_l28_n641()
- fun_l29_n107
-end
-
-def fun_l28_n642()
- fun_l29_n682
-end
-
-def fun_l28_n643()
- fun_l29_n57
-end
-
-def fun_l28_n644()
- fun_l29_n375
-end
-
-def fun_l28_n645()
- fun_l29_n855
-end
-
-def fun_l28_n646()
- fun_l29_n200
-end
-
-def fun_l28_n647()
- fun_l29_n820
-end
-
-def fun_l28_n648()
- fun_l29_n363
-end
-
-def fun_l28_n649()
- fun_l29_n991
-end
-
-def fun_l28_n650()
- fun_l29_n342
-end
-
-def fun_l28_n651()
- fun_l29_n740
-end
-
-def fun_l28_n652()
- fun_l29_n646
-end
-
-def fun_l28_n653()
- fun_l29_n743
-end
-
-def fun_l28_n654()
- fun_l29_n438
-end
-
-def fun_l28_n655()
- fun_l29_n198
-end
-
-def fun_l28_n656()
- fun_l29_n45
-end
-
-def fun_l28_n657()
- fun_l29_n54
-end
-
-def fun_l28_n658()
- fun_l29_n5
-end
-
-def fun_l28_n659()
- fun_l29_n30
-end
-
-def fun_l28_n660()
- fun_l29_n77
-end
-
-def fun_l28_n661()
- fun_l29_n231
-end
-
-def fun_l28_n662()
- fun_l29_n515
-end
-
-def fun_l28_n663()
- fun_l29_n327
-end
-
-def fun_l28_n664()
- fun_l29_n188
-end
-
-def fun_l28_n665()
- fun_l29_n976
-end
-
-def fun_l28_n666()
- fun_l29_n482
-end
-
-def fun_l28_n667()
- fun_l29_n106
-end
-
-def fun_l28_n668()
- fun_l29_n339
-end
-
-def fun_l28_n669()
- fun_l29_n445
-end
-
-def fun_l28_n670()
- fun_l29_n708
-end
-
-def fun_l28_n671()
- fun_l29_n846
-end
-
-def fun_l28_n672()
- fun_l29_n142
-end
-
-def fun_l28_n673()
- fun_l29_n567
-end
-
-def fun_l28_n674()
- fun_l29_n875
-end
-
-def fun_l28_n675()
- fun_l29_n107
-end
-
-def fun_l28_n676()
- fun_l29_n243
-end
-
-def fun_l28_n677()
- fun_l29_n580
-end
-
-def fun_l28_n678()
- fun_l29_n75
-end
-
-def fun_l28_n679()
- fun_l29_n230
-end
-
-def fun_l28_n680()
- fun_l29_n72
-end
-
-def fun_l28_n681()
- fun_l29_n429
-end
-
-def fun_l28_n682()
- fun_l29_n816
-end
-
-def fun_l28_n683()
- fun_l29_n896
-end
-
-def fun_l28_n684()
- fun_l29_n933
-end
-
-def fun_l28_n685()
- fun_l29_n432
-end
-
-def fun_l28_n686()
- fun_l29_n547
-end
-
-def fun_l28_n687()
- fun_l29_n670
-end
-
-def fun_l28_n688()
- fun_l29_n952
-end
-
-def fun_l28_n689()
- fun_l29_n137
-end
-
-def fun_l28_n690()
- fun_l29_n532
-end
-
-def fun_l28_n691()
- fun_l29_n608
-end
-
-def fun_l28_n692()
- fun_l29_n264
-end
-
-def fun_l28_n693()
- fun_l29_n220
-end
-
-def fun_l28_n694()
- fun_l29_n499
-end
-
-def fun_l28_n695()
- fun_l29_n244
-end
-
-def fun_l28_n696()
- fun_l29_n952
-end
-
-def fun_l28_n697()
- fun_l29_n700
-end
-
-def fun_l28_n698()
- fun_l29_n415
-end
-
-def fun_l28_n699()
- fun_l29_n712
-end
-
-def fun_l28_n700()
- fun_l29_n209
-end
-
-def fun_l28_n701()
- fun_l29_n759
-end
-
-def fun_l28_n702()
- fun_l29_n786
-end
-
-def fun_l28_n703()
- fun_l29_n858
-end
-
-def fun_l28_n704()
- fun_l29_n328
-end
-
-def fun_l28_n705()
- fun_l29_n201
-end
-
-def fun_l28_n706()
- fun_l29_n317
-end
-
-def fun_l28_n707()
- fun_l29_n335
-end
-
-def fun_l28_n708()
- fun_l29_n483
-end
-
-def fun_l28_n709()
- fun_l29_n1
-end
-
-def fun_l28_n710()
- fun_l29_n962
-end
-
-def fun_l28_n711()
- fun_l29_n158
-end
-
-def fun_l28_n712()
- fun_l29_n591
-end
-
-def fun_l28_n713()
- fun_l29_n849
-end
-
-def fun_l28_n714()
- fun_l29_n149
-end
-
-def fun_l28_n715()
- fun_l29_n653
-end
-
-def fun_l28_n716()
- fun_l29_n173
-end
-
-def fun_l28_n717()
- fun_l29_n21
-end
-
-def fun_l28_n718()
- fun_l29_n384
-end
-
-def fun_l28_n719()
- fun_l29_n601
-end
-
-def fun_l28_n720()
- fun_l29_n388
-end
-
-def fun_l28_n721()
- fun_l29_n866
-end
-
-def fun_l28_n722()
- fun_l29_n261
-end
-
-def fun_l28_n723()
- fun_l29_n412
-end
-
-def fun_l28_n724()
- fun_l29_n77
-end
-
-def fun_l28_n725()
- fun_l29_n395
-end
-
-def fun_l28_n726()
- fun_l29_n863
-end
-
-def fun_l28_n727()
- fun_l29_n780
-end
-
-def fun_l28_n728()
- fun_l29_n400
-end
-
-def fun_l28_n729()
- fun_l29_n495
-end
-
-def fun_l28_n730()
- fun_l29_n813
-end
-
-def fun_l28_n731()
- fun_l29_n330
-end
-
-def fun_l28_n732()
- fun_l29_n479
-end
-
-def fun_l28_n733()
- fun_l29_n446
-end
-
-def fun_l28_n734()
- fun_l29_n354
-end
-
-def fun_l28_n735()
- fun_l29_n88
-end
-
-def fun_l28_n736()
- fun_l29_n296
-end
-
-def fun_l28_n737()
- fun_l29_n457
-end
-
-def fun_l28_n738()
- fun_l29_n611
-end
-
-def fun_l28_n739()
- fun_l29_n412
-end
-
-def fun_l28_n740()
- fun_l29_n290
-end
-
-def fun_l28_n741()
- fun_l29_n935
-end
-
-def fun_l28_n742()
- fun_l29_n833
-end
-
-def fun_l28_n743()
- fun_l29_n296
-end
-
-def fun_l28_n744()
- fun_l29_n249
-end
-
-def fun_l28_n745()
- fun_l29_n567
-end
-
-def fun_l28_n746()
- fun_l29_n707
-end
-
-def fun_l28_n747()
- fun_l29_n633
-end
-
-def fun_l28_n748()
- fun_l29_n303
-end
-
-def fun_l28_n749()
- fun_l29_n971
-end
-
-def fun_l28_n750()
- fun_l29_n784
-end
-
-def fun_l28_n751()
- fun_l29_n88
-end
-
-def fun_l28_n752()
- fun_l29_n782
-end
-
-def fun_l28_n753()
- fun_l29_n322
-end
-
-def fun_l28_n754()
- fun_l29_n362
-end
-
-def fun_l28_n755()
- fun_l29_n894
-end
-
-def fun_l28_n756()
- fun_l29_n848
-end
-
-def fun_l28_n757()
- fun_l29_n617
-end
-
-def fun_l28_n758()
- fun_l29_n103
-end
-
-def fun_l28_n759()
- fun_l29_n625
-end
-
-def fun_l28_n760()
- fun_l29_n592
-end
-
-def fun_l28_n761()
- fun_l29_n597
-end
-
-def fun_l28_n762()
- fun_l29_n118
-end
-
-def fun_l28_n763()
- fun_l29_n366
-end
-
-def fun_l28_n764()
- fun_l29_n609
-end
-
-def fun_l28_n765()
- fun_l29_n710
-end
-
-def fun_l28_n766()
- fun_l29_n563
-end
-
-def fun_l28_n767()
- fun_l29_n324
-end
-
-def fun_l28_n768()
- fun_l29_n783
-end
-
-def fun_l28_n769()
- fun_l29_n512
-end
-
-def fun_l28_n770()
- fun_l29_n0
-end
-
-def fun_l28_n771()
- fun_l29_n60
-end
-
-def fun_l28_n772()
- fun_l29_n18
-end
-
-def fun_l28_n773()
- fun_l29_n741
-end
-
-def fun_l28_n774()
- fun_l29_n862
-end
-
-def fun_l28_n775()
- fun_l29_n183
-end
-
-def fun_l28_n776()
- fun_l29_n148
-end
-
-def fun_l28_n777()
- fun_l29_n703
-end
-
-def fun_l28_n778()
- fun_l29_n251
-end
-
-def fun_l28_n779()
- fun_l29_n84
-end
-
-def fun_l28_n780()
- fun_l29_n85
-end
-
-def fun_l28_n781()
- fun_l29_n632
-end
-
-def fun_l28_n782()
- fun_l29_n28
-end
-
-def fun_l28_n783()
- fun_l29_n123
-end
-
-def fun_l28_n784()
- fun_l29_n66
-end
-
-def fun_l28_n785()
- fun_l29_n266
-end
-
-def fun_l28_n786()
- fun_l29_n860
-end
-
-def fun_l28_n787()
- fun_l29_n769
-end
-
-def fun_l28_n788()
- fun_l29_n921
-end
-
-def fun_l28_n789()
- fun_l29_n513
-end
-
-def fun_l28_n790()
- fun_l29_n455
-end
-
-def fun_l28_n791()
- fun_l29_n589
-end
-
-def fun_l28_n792()
- fun_l29_n557
-end
-
-def fun_l28_n793()
- fun_l29_n827
-end
-
-def fun_l28_n794()
- fun_l29_n561
-end
-
-def fun_l28_n795()
- fun_l29_n891
-end
-
-def fun_l28_n796()
- fun_l29_n938
-end
-
-def fun_l28_n797()
- fun_l29_n157
-end
-
-def fun_l28_n798()
- fun_l29_n691
-end
-
-def fun_l28_n799()
- fun_l29_n20
-end
-
-def fun_l28_n800()
- fun_l29_n737
-end
-
-def fun_l28_n801()
- fun_l29_n675
-end
-
-def fun_l28_n802()
- fun_l29_n385
-end
-
-def fun_l28_n803()
- fun_l29_n206
-end
-
-def fun_l28_n804()
- fun_l29_n366
-end
-
-def fun_l28_n805()
- fun_l29_n107
-end
-
-def fun_l28_n806()
- fun_l29_n425
-end
-
-def fun_l28_n807()
- fun_l29_n371
-end
-
-def fun_l28_n808()
- fun_l29_n241
-end
-
-def fun_l28_n809()
- fun_l29_n168
-end
-
-def fun_l28_n810()
- fun_l29_n201
-end
-
-def fun_l28_n811()
- fun_l29_n600
-end
-
-def fun_l28_n812()
- fun_l29_n251
-end
-
-def fun_l28_n813()
- fun_l29_n10
-end
-
-def fun_l28_n814()
- fun_l29_n428
-end
-
-def fun_l28_n815()
- fun_l29_n850
-end
-
-def fun_l28_n816()
- fun_l29_n276
-end
-
-def fun_l28_n817()
- fun_l29_n196
-end
-
-def fun_l28_n818()
- fun_l29_n623
-end
-
-def fun_l28_n819()
- fun_l29_n441
-end
-
-def fun_l28_n820()
- fun_l29_n724
-end
-
-def fun_l28_n821()
- fun_l29_n958
-end
-
-def fun_l28_n822()
- fun_l29_n449
-end
-
-def fun_l28_n823()
- fun_l29_n408
-end
-
-def fun_l28_n824()
- fun_l29_n74
-end
-
-def fun_l28_n825()
- fun_l29_n124
-end
-
-def fun_l28_n826()
- fun_l29_n991
-end
-
-def fun_l28_n827()
- fun_l29_n576
-end
-
-def fun_l28_n828()
- fun_l29_n743
-end
-
-def fun_l28_n829()
- fun_l29_n343
-end
-
-def fun_l28_n830()
- fun_l29_n376
-end
-
-def fun_l28_n831()
- fun_l29_n216
-end
-
-def fun_l28_n832()
- fun_l29_n358
-end
-
-def fun_l28_n833()
- fun_l29_n567
-end
-
-def fun_l28_n834()
- fun_l29_n415
-end
-
-def fun_l28_n835()
- fun_l29_n984
-end
-
-def fun_l28_n836()
- fun_l29_n367
-end
-
-def fun_l28_n837()
- fun_l29_n299
-end
-
-def fun_l28_n838()
- fun_l29_n718
-end
-
-def fun_l28_n839()
- fun_l29_n241
-end
-
-def fun_l28_n840()
- fun_l29_n736
-end
-
-def fun_l28_n841()
- fun_l29_n582
-end
-
-def fun_l28_n842()
- fun_l29_n994
-end
-
-def fun_l28_n843()
- fun_l29_n301
-end
-
-def fun_l28_n844()
- fun_l29_n597
-end
-
-def fun_l28_n845()
- fun_l29_n141
-end
-
-def fun_l28_n846()
- fun_l29_n37
-end
-
-def fun_l28_n847()
- fun_l29_n216
-end
-
-def fun_l28_n848()
- fun_l29_n286
-end
-
-def fun_l28_n849()
- fun_l29_n607
-end
-
-def fun_l28_n850()
- fun_l29_n503
-end
-
-def fun_l28_n851()
- fun_l29_n321
-end
-
-def fun_l28_n852()
- fun_l29_n179
-end
-
-def fun_l28_n853()
- fun_l29_n802
-end
-
-def fun_l28_n854()
- fun_l29_n742
-end
-
-def fun_l28_n855()
- fun_l29_n300
-end
-
-def fun_l28_n856()
- fun_l29_n453
-end
-
-def fun_l28_n857()
- fun_l29_n520
-end
-
-def fun_l28_n858()
- fun_l29_n911
-end
-
-def fun_l28_n859()
- fun_l29_n209
-end
-
-def fun_l28_n860()
- fun_l29_n921
-end
-
-def fun_l28_n861()
- fun_l29_n653
-end
-
-def fun_l28_n862()
- fun_l29_n347
-end
-
-def fun_l28_n863()
- fun_l29_n733
-end
-
-def fun_l28_n864()
- fun_l29_n824
-end
-
-def fun_l28_n865()
- fun_l29_n497
-end
-
-def fun_l28_n866()
- fun_l29_n256
-end
-
-def fun_l28_n867()
- fun_l29_n884
-end
-
-def fun_l28_n868()
- fun_l29_n937
-end
-
-def fun_l28_n869()
- fun_l29_n894
-end
-
-def fun_l28_n870()
- fun_l29_n258
-end
-
-def fun_l28_n871()
- fun_l29_n45
-end
-
-def fun_l28_n872()
- fun_l29_n640
-end
-
-def fun_l28_n873()
- fun_l29_n909
-end
-
-def fun_l28_n874()
- fun_l29_n586
-end
-
-def fun_l28_n875()
- fun_l29_n600
-end
-
-def fun_l28_n876()
- fun_l29_n636
-end
-
-def fun_l28_n877()
- fun_l29_n972
-end
-
-def fun_l28_n878()
- fun_l29_n627
-end
-
-def fun_l28_n879()
- fun_l29_n381
-end
-
-def fun_l28_n880()
- fun_l29_n664
-end
-
-def fun_l28_n881()
- fun_l29_n350
-end
-
-def fun_l28_n882()
- fun_l29_n611
-end
-
-def fun_l28_n883()
- fun_l29_n355
-end
-
-def fun_l28_n884()
- fun_l29_n945
-end
-
-def fun_l28_n885()
- fun_l29_n462
-end
-
-def fun_l28_n886()
- fun_l29_n723
-end
-
-def fun_l28_n887()
- fun_l29_n500
-end
-
-def fun_l28_n888()
- fun_l29_n166
-end
-
-def fun_l28_n889()
- fun_l29_n779
-end
-
-def fun_l28_n890()
- fun_l29_n151
-end
-
-def fun_l28_n891()
- fun_l29_n757
-end
-
-def fun_l28_n892()
- fun_l29_n782
-end
-
-def fun_l28_n893()
- fun_l29_n108
-end
-
-def fun_l28_n894()
- fun_l29_n122
-end
-
-def fun_l28_n895()
- fun_l29_n815
-end
-
-def fun_l28_n896()
- fun_l29_n742
-end
-
-def fun_l28_n897()
- fun_l29_n861
-end
-
-def fun_l28_n898()
- fun_l29_n738
-end
-
-def fun_l28_n899()
- fun_l29_n765
-end
-
-def fun_l28_n900()
- fun_l29_n648
-end
-
-def fun_l28_n901()
- fun_l29_n923
-end
-
-def fun_l28_n902()
- fun_l29_n269
-end
-
-def fun_l28_n903()
- fun_l29_n626
-end
-
-def fun_l28_n904()
- fun_l29_n100
-end
-
-def fun_l28_n905()
- fun_l29_n587
-end
-
-def fun_l28_n906()
- fun_l29_n841
-end
-
-def fun_l28_n907()
- fun_l29_n239
-end
-
-def fun_l28_n908()
- fun_l29_n87
-end
-
-def fun_l28_n909()
- fun_l29_n765
-end
-
-def fun_l28_n910()
- fun_l29_n216
-end
-
-def fun_l28_n911()
- fun_l29_n110
-end
-
-def fun_l28_n912()
- fun_l29_n96
-end
-
-def fun_l28_n913()
- fun_l29_n946
-end
-
-def fun_l28_n914()
- fun_l29_n762
-end
-
-def fun_l28_n915()
- fun_l29_n697
-end
-
-def fun_l28_n916()
- fun_l29_n44
-end
-
-def fun_l28_n917()
- fun_l29_n257
-end
-
-def fun_l28_n918()
- fun_l29_n195
-end
-
-def fun_l28_n919()
- fun_l29_n886
-end
-
-def fun_l28_n920()
- fun_l29_n432
-end
-
-def fun_l28_n921()
- fun_l29_n746
-end
-
-def fun_l28_n922()
- fun_l29_n756
-end
-
-def fun_l28_n923()
- fun_l29_n33
-end
-
-def fun_l28_n924()
- fun_l29_n720
-end
-
-def fun_l28_n925()
- fun_l29_n629
-end
-
-def fun_l28_n926()
- fun_l29_n144
-end
-
-def fun_l28_n927()
- fun_l29_n225
-end
-
-def fun_l28_n928()
- fun_l29_n556
-end
-
-def fun_l28_n929()
- fun_l29_n436
-end
-
-def fun_l28_n930()
- fun_l29_n380
-end
-
-def fun_l28_n931()
- fun_l29_n478
-end
-
-def fun_l28_n932()
- fun_l29_n949
-end
-
-def fun_l28_n933()
- fun_l29_n811
-end
-
-def fun_l28_n934()
- fun_l29_n589
-end
-
-def fun_l28_n935()
- fun_l29_n961
-end
-
-def fun_l28_n936()
- fun_l29_n413
-end
-
-def fun_l28_n937()
- fun_l29_n941
-end
-
-def fun_l28_n938()
- fun_l29_n507
-end
-
-def fun_l28_n939()
- fun_l29_n364
-end
-
-def fun_l28_n940()
- fun_l29_n100
-end
-
-def fun_l28_n941()
- fun_l29_n254
-end
-
-def fun_l28_n942()
- fun_l29_n272
-end
-
-def fun_l28_n943()
- fun_l29_n420
-end
-
-def fun_l28_n944()
- fun_l29_n132
-end
-
-def fun_l28_n945()
- fun_l29_n907
-end
-
-def fun_l28_n946()
- fun_l29_n784
-end
-
-def fun_l28_n947()
- fun_l29_n938
-end
-
-def fun_l28_n948()
- fun_l29_n780
-end
-
-def fun_l28_n949()
- fun_l29_n584
-end
-
-def fun_l28_n950()
- fun_l29_n258
-end
-
-def fun_l28_n951()
- fun_l29_n754
-end
-
-def fun_l28_n952()
- fun_l29_n582
-end
-
-def fun_l28_n953()
- fun_l29_n278
-end
-
-def fun_l28_n954()
- fun_l29_n870
-end
-
-def fun_l28_n955()
- fun_l29_n664
-end
-
-def fun_l28_n956()
- fun_l29_n375
-end
-
-def fun_l28_n957()
- fun_l29_n613
-end
-
-def fun_l28_n958()
- fun_l29_n530
-end
-
-def fun_l28_n959()
- fun_l29_n933
-end
-
-def fun_l28_n960()
- fun_l29_n298
-end
-
-def fun_l28_n961()
- fun_l29_n507
-end
-
-def fun_l28_n962()
- fun_l29_n526
-end
-
-def fun_l28_n963()
- fun_l29_n508
-end
-
-def fun_l28_n964()
- fun_l29_n227
-end
-
-def fun_l28_n965()
- fun_l29_n999
-end
-
-def fun_l28_n966()
- fun_l29_n489
-end
-
-def fun_l28_n967()
- fun_l29_n789
-end
-
-def fun_l28_n968()
- fun_l29_n304
-end
-
-def fun_l28_n969()
- fun_l29_n343
-end
-
-def fun_l28_n970()
- fun_l29_n560
-end
-
-def fun_l28_n971()
- fun_l29_n610
-end
-
-def fun_l28_n972()
- fun_l29_n606
-end
-
-def fun_l28_n973()
- fun_l29_n592
-end
-
-def fun_l28_n974()
- fun_l29_n135
-end
-
-def fun_l28_n975()
- fun_l29_n513
-end
-
-def fun_l28_n976()
- fun_l29_n522
-end
-
-def fun_l28_n977()
- fun_l29_n323
-end
-
-def fun_l28_n978()
- fun_l29_n26
-end
-
-def fun_l28_n979()
- fun_l29_n737
-end
-
-def fun_l28_n980()
- fun_l29_n705
-end
-
-def fun_l28_n981()
- fun_l29_n405
-end
-
-def fun_l28_n982()
- fun_l29_n891
-end
-
-def fun_l28_n983()
- fun_l29_n155
-end
-
-def fun_l28_n984()
- fun_l29_n814
-end
-
-def fun_l28_n985()
- fun_l29_n70
-end
-
-def fun_l28_n986()
- fun_l29_n940
-end
-
-def fun_l28_n987()
- fun_l29_n427
-end
-
-def fun_l28_n988()
- fun_l29_n478
-end
-
-def fun_l28_n989()
- fun_l29_n432
-end
-
-def fun_l28_n990()
- fun_l29_n320
-end
-
-def fun_l28_n991()
- fun_l29_n422
-end
-
-def fun_l28_n992()
- fun_l29_n917
-end
-
-def fun_l28_n993()
- fun_l29_n391
-end
-
-def fun_l28_n994()
- fun_l29_n950
-end
-
-def fun_l28_n995()
- fun_l29_n635
-end
-
-def fun_l28_n996()
- fun_l29_n392
-end
-
-def fun_l28_n997()
- fun_l29_n311
-end
-
-def fun_l28_n998()
- fun_l29_n320
-end
-
-def fun_l28_n999()
- fun_l29_n916
-end
-
-def fun_l29_n0()
- inc
-end
-
-def fun_l29_n1()
- inc
-end
-
-def fun_l29_n2()
- inc
-end
-
-def fun_l29_n3()
- inc
-end
-
-def fun_l29_n4()
- inc
-end
-
-def fun_l29_n5()
- inc
-end
-
-def fun_l29_n6()
- inc
-end
-
-def fun_l29_n7()
- inc
-end
-
-def fun_l29_n8()
- inc
-end
-
-def fun_l29_n9()
- inc
-end
-
-def fun_l29_n10()
- inc
-end
-
-def fun_l29_n11()
- inc
-end
-
-def fun_l29_n12()
- inc
-end
-
-def fun_l29_n13()
- inc
-end
-
-def fun_l29_n14()
- inc
-end
-
-def fun_l29_n15()
- inc
-end
-
-def fun_l29_n16()
- inc
-end
-
-def fun_l29_n17()
- inc
-end
-
-def fun_l29_n18()
- inc
-end
-
-def fun_l29_n19()
- inc
-end
-
-def fun_l29_n20()
- inc
-end
-
-def fun_l29_n21()
- inc
-end
-
-def fun_l29_n22()
- inc
-end
-
-def fun_l29_n23()
- inc
-end
-
-def fun_l29_n24()
- inc
-end
-
-def fun_l29_n25()
- inc
-end
-
-def fun_l29_n26()
- inc
-end
-
-def fun_l29_n27()
- inc
-end
-
-def fun_l29_n28()
- inc
-end
-
-def fun_l29_n29()
- inc
-end
-
-def fun_l29_n30()
- inc
-end
-
-def fun_l29_n31()
- inc
-end
-
-def fun_l29_n32()
- inc
-end
-
-def fun_l29_n33()
- inc
-end
-
-def fun_l29_n34()
- inc
-end
-
-def fun_l29_n35()
- inc
-end
-
-def fun_l29_n36()
- inc
-end
-
-def fun_l29_n37()
- inc
-end
-
-def fun_l29_n38()
- inc
-end
-
-def fun_l29_n39()
- inc
-end
-
-def fun_l29_n40()
- inc
-end
-
-def fun_l29_n41()
- inc
-end
-
-def fun_l29_n42()
- inc
-end
-
-def fun_l29_n43()
- inc
-end
-
-def fun_l29_n44()
- inc
-end
-
-def fun_l29_n45()
- inc
-end
-
-def fun_l29_n46()
- inc
-end
-
-def fun_l29_n47()
- inc
-end
-
-def fun_l29_n48()
- inc
-end
-
-def fun_l29_n49()
- inc
-end
-
-def fun_l29_n50()
- inc
-end
-
-def fun_l29_n51()
- inc
-end
-
-def fun_l29_n52()
- inc
-end
-
-def fun_l29_n53()
- inc
-end
-
-def fun_l29_n54()
- inc
-end
-
-def fun_l29_n55()
- inc
-end
-
-def fun_l29_n56()
- inc
-end
-
-def fun_l29_n57()
- inc
-end
-
-def fun_l29_n58()
- inc
-end
-
-def fun_l29_n59()
- inc
-end
-
-def fun_l29_n60()
- inc
-end
-
-def fun_l29_n61()
- inc
-end
-
-def fun_l29_n62()
- inc
-end
-
-def fun_l29_n63()
- inc
-end
-
-def fun_l29_n64()
- inc
-end
-
-def fun_l29_n65()
- inc
-end
-
-def fun_l29_n66()
- inc
-end
-
-def fun_l29_n67()
- inc
-end
-
-def fun_l29_n68()
- inc
-end
-
-def fun_l29_n69()
- inc
-end
-
-def fun_l29_n70()
- inc
-end
-
-def fun_l29_n71()
- inc
-end
-
-def fun_l29_n72()
- inc
-end
-
-def fun_l29_n73()
- inc
-end
-
-def fun_l29_n74()
- inc
-end
-
-def fun_l29_n75()
- inc
-end
-
-def fun_l29_n76()
- inc
-end
-
-def fun_l29_n77()
- inc
-end
-
-def fun_l29_n78()
- inc
-end
-
-def fun_l29_n79()
- inc
-end
-
-def fun_l29_n80()
- inc
-end
-
-def fun_l29_n81()
- inc
-end
-
-def fun_l29_n82()
- inc
-end
-
-def fun_l29_n83()
- inc
-end
-
-def fun_l29_n84()
- inc
-end
-
-def fun_l29_n85()
- inc
-end
-
-def fun_l29_n86()
- inc
-end
-
-def fun_l29_n87()
- inc
-end
-
-def fun_l29_n88()
- inc
-end
-
-def fun_l29_n89()
- inc
-end
-
-def fun_l29_n90()
- inc
-end
-
-def fun_l29_n91()
- inc
-end
-
-def fun_l29_n92()
- inc
-end
-
-def fun_l29_n93()
- inc
-end
-
-def fun_l29_n94()
- inc
-end
-
-def fun_l29_n95()
- inc
-end
-
-def fun_l29_n96()
- inc
-end
-
-def fun_l29_n97()
- inc
-end
-
-def fun_l29_n98()
- inc
-end
-
-def fun_l29_n99()
- inc
-end
-
-def fun_l29_n100()
- inc
-end
-
-def fun_l29_n101()
- inc
-end
-
-def fun_l29_n102()
- inc
-end
-
-def fun_l29_n103()
- inc
-end
-
-def fun_l29_n104()
- inc
-end
-
-def fun_l29_n105()
- inc
-end
-
-def fun_l29_n106()
- inc
-end
-
-def fun_l29_n107()
- inc
-end
-
-def fun_l29_n108()
- inc
-end
-
-def fun_l29_n109()
- inc
-end
-
-def fun_l29_n110()
- inc
-end
-
-def fun_l29_n111()
- inc
-end
-
-def fun_l29_n112()
- inc
-end
-
-def fun_l29_n113()
- inc
-end
-
-def fun_l29_n114()
- inc
-end
-
-def fun_l29_n115()
- inc
-end
-
-def fun_l29_n116()
- inc
-end
-
-def fun_l29_n117()
- inc
-end
-
-def fun_l29_n118()
- inc
-end
-
-def fun_l29_n119()
- inc
-end
-
-def fun_l29_n120()
- inc
-end
-
-def fun_l29_n121()
- inc
-end
-
-def fun_l29_n122()
- inc
-end
-
-def fun_l29_n123()
- inc
-end
-
-def fun_l29_n124()
- inc
-end
-
-def fun_l29_n125()
- inc
-end
-
-def fun_l29_n126()
- inc
-end
-
-def fun_l29_n127()
- inc
-end
-
-def fun_l29_n128()
- inc
-end
-
-def fun_l29_n129()
- inc
-end
-
-def fun_l29_n130()
- inc
-end
-
-def fun_l29_n131()
- inc
-end
-
-def fun_l29_n132()
- inc
-end
-
-def fun_l29_n133()
- inc
-end
-
-def fun_l29_n134()
- inc
-end
-
-def fun_l29_n135()
- inc
-end
-
-def fun_l29_n136()
- inc
-end
-
-def fun_l29_n137()
- inc
-end
-
-def fun_l29_n138()
- inc
-end
-
-def fun_l29_n139()
- inc
-end
-
-def fun_l29_n140()
- inc
-end
-
-def fun_l29_n141()
- inc
-end
-
-def fun_l29_n142()
- inc
-end
-
-def fun_l29_n143()
- inc
-end
-
-def fun_l29_n144()
- inc
-end
-
-def fun_l29_n145()
- inc
-end
-
-def fun_l29_n146()
- inc
-end
-
-def fun_l29_n147()
- inc
-end
-
-def fun_l29_n148()
- inc
-end
-
-def fun_l29_n149()
- inc
-end
-
-def fun_l29_n150()
- inc
-end
-
-def fun_l29_n151()
- inc
-end
-
-def fun_l29_n152()
- inc
-end
-
-def fun_l29_n153()
- inc
-end
-
-def fun_l29_n154()
- inc
-end
-
-def fun_l29_n155()
- inc
-end
-
-def fun_l29_n156()
- inc
-end
-
-def fun_l29_n157()
- inc
-end
-
-def fun_l29_n158()
- inc
-end
-
-def fun_l29_n159()
- inc
-end
-
-def fun_l29_n160()
- inc
-end
-
-def fun_l29_n161()
- inc
-end
-
-def fun_l29_n162()
- inc
-end
-
-def fun_l29_n163()
- inc
-end
-
-def fun_l29_n164()
- inc
-end
-
-def fun_l29_n165()
- inc
-end
-
-def fun_l29_n166()
- inc
-end
-
-def fun_l29_n167()
- inc
-end
-
-def fun_l29_n168()
- inc
-end
-
-def fun_l29_n169()
- inc
-end
-
-def fun_l29_n170()
- inc
-end
-
-def fun_l29_n171()
- inc
-end
-
-def fun_l29_n172()
- inc
-end
-
-def fun_l29_n173()
- inc
-end
-
-def fun_l29_n174()
- inc
-end
-
-def fun_l29_n175()
- inc
-end
-
-def fun_l29_n176()
- inc
-end
-
-def fun_l29_n177()
- inc
-end
-
-def fun_l29_n178()
- inc
-end
-
-def fun_l29_n179()
- inc
-end
-
-def fun_l29_n180()
- inc
-end
-
-def fun_l29_n181()
- inc
-end
-
-def fun_l29_n182()
- inc
-end
-
-def fun_l29_n183()
- inc
-end
-
-def fun_l29_n184()
- inc
-end
-
-def fun_l29_n185()
- inc
-end
-
-def fun_l29_n186()
- inc
-end
-
-def fun_l29_n187()
- inc
-end
-
-def fun_l29_n188()
- inc
-end
-
-def fun_l29_n189()
- inc
-end
-
-def fun_l29_n190()
- inc
-end
-
-def fun_l29_n191()
- inc
-end
-
-def fun_l29_n192()
- inc
-end
-
-def fun_l29_n193()
- inc
-end
-
-def fun_l29_n194()
- inc
-end
-
-def fun_l29_n195()
- inc
-end
-
-def fun_l29_n196()
- inc
-end
-
-def fun_l29_n197()
- inc
-end
-
-def fun_l29_n198()
- inc
-end
-
-def fun_l29_n199()
- inc
-end
-
-def fun_l29_n200()
- inc
-end
-
-def fun_l29_n201()
- inc
-end
-
-def fun_l29_n202()
- inc
-end
-
-def fun_l29_n203()
- inc
-end
-
-def fun_l29_n204()
- inc
-end
-
-def fun_l29_n205()
- inc
-end
-
-def fun_l29_n206()
- inc
-end
-
-def fun_l29_n207()
- inc
-end
-
-def fun_l29_n208()
- inc
-end
-
-def fun_l29_n209()
- inc
-end
-
-def fun_l29_n210()
- inc
-end
-
-def fun_l29_n211()
- inc
-end
-
-def fun_l29_n212()
- inc
-end
-
-def fun_l29_n213()
- inc
-end
-
-def fun_l29_n214()
- inc
-end
-
-def fun_l29_n215()
- inc
-end
-
-def fun_l29_n216()
- inc
-end
-
-def fun_l29_n217()
- inc
-end
-
-def fun_l29_n218()
- inc
-end
-
-def fun_l29_n219()
- inc
-end
-
-def fun_l29_n220()
- inc
-end
-
-def fun_l29_n221()
- inc
-end
-
-def fun_l29_n222()
- inc
-end
-
-def fun_l29_n223()
- inc
-end
-
-def fun_l29_n224()
- inc
-end
-
-def fun_l29_n225()
- inc
-end
-
-def fun_l29_n226()
- inc
-end
-
-def fun_l29_n227()
- inc
-end
-
-def fun_l29_n228()
- inc
-end
-
-def fun_l29_n229()
- inc
-end
-
-def fun_l29_n230()
- inc
-end
-
-def fun_l29_n231()
- inc
-end
-
-def fun_l29_n232()
- inc
-end
-
-def fun_l29_n233()
- inc
-end
-
-def fun_l29_n234()
- inc
-end
-
-def fun_l29_n235()
- inc
-end
-
-def fun_l29_n236()
- inc
-end
-
-def fun_l29_n237()
- inc
-end
-
-def fun_l29_n238()
- inc
-end
-
-def fun_l29_n239()
- inc
-end
-
-def fun_l29_n240()
- inc
-end
-
-def fun_l29_n241()
- inc
-end
-
-def fun_l29_n242()
- inc
-end
-
-def fun_l29_n243()
- inc
-end
-
-def fun_l29_n244()
- inc
-end
-
-def fun_l29_n245()
- inc
-end
-
-def fun_l29_n246()
- inc
-end
-
-def fun_l29_n247()
- inc
-end
-
-def fun_l29_n248()
- inc
-end
-
-def fun_l29_n249()
- inc
-end
-
-def fun_l29_n250()
- inc
-end
-
-def fun_l29_n251()
- inc
-end
-
-def fun_l29_n252()
- inc
-end
-
-def fun_l29_n253()
- inc
-end
-
-def fun_l29_n254()
- inc
-end
-
-def fun_l29_n255()
- inc
-end
-
-def fun_l29_n256()
- inc
-end
-
-def fun_l29_n257()
- inc
-end
-
-def fun_l29_n258()
- inc
-end
-
-def fun_l29_n259()
- inc
-end
-
-def fun_l29_n260()
- inc
-end
-
-def fun_l29_n261()
- inc
-end
-
-def fun_l29_n262()
- inc
-end
-
-def fun_l29_n263()
- inc
-end
-
-def fun_l29_n264()
- inc
-end
-
-def fun_l29_n265()
- inc
-end
-
-def fun_l29_n266()
- inc
-end
-
-def fun_l29_n267()
- inc
-end
-
-def fun_l29_n268()
- inc
-end
-
-def fun_l29_n269()
- inc
-end
-
-def fun_l29_n270()
- inc
-end
-
-def fun_l29_n271()
- inc
-end
-
-def fun_l29_n272()
- inc
-end
-
-def fun_l29_n273()
- inc
-end
-
-def fun_l29_n274()
- inc
-end
-
-def fun_l29_n275()
- inc
-end
-
-def fun_l29_n276()
- inc
-end
-
-def fun_l29_n277()
- inc
-end
-
-def fun_l29_n278()
- inc
-end
-
-def fun_l29_n279()
- inc
-end
-
-def fun_l29_n280()
- inc
-end
-
-def fun_l29_n281()
- inc
-end
-
-def fun_l29_n282()
- inc
-end
-
-def fun_l29_n283()
- inc
-end
-
-def fun_l29_n284()
- inc
-end
-
-def fun_l29_n285()
- inc
-end
-
-def fun_l29_n286()
- inc
-end
-
-def fun_l29_n287()
- inc
-end
-
-def fun_l29_n288()
- inc
-end
-
-def fun_l29_n289()
- inc
-end
-
-def fun_l29_n290()
- inc
-end
-
-def fun_l29_n291()
- inc
-end
-
-def fun_l29_n292()
- inc
-end
-
-def fun_l29_n293()
- inc
-end
-
-def fun_l29_n294()
- inc
-end
-
-def fun_l29_n295()
- inc
-end
-
-def fun_l29_n296()
- inc
-end
-
-def fun_l29_n297()
- inc
-end
-
-def fun_l29_n298()
- inc
-end
-
-def fun_l29_n299()
- inc
-end
-
-def fun_l29_n300()
- inc
-end
-
-def fun_l29_n301()
- inc
-end
-
-def fun_l29_n302()
- inc
-end
-
-def fun_l29_n303()
- inc
-end
-
-def fun_l29_n304()
- inc
-end
-
-def fun_l29_n305()
- inc
-end
-
-def fun_l29_n306()
- inc
-end
-
-def fun_l29_n307()
- inc
-end
-
-def fun_l29_n308()
- inc
-end
-
-def fun_l29_n309()
- inc
-end
-
-def fun_l29_n310()
- inc
-end
-
-def fun_l29_n311()
- inc
-end
-
-def fun_l29_n312()
- inc
-end
-
-def fun_l29_n313()
- inc
-end
-
-def fun_l29_n314()
- inc
-end
-
-def fun_l29_n315()
- inc
-end
-
-def fun_l29_n316()
- inc
-end
-
-def fun_l29_n317()
- inc
-end
-
-def fun_l29_n318()
- inc
-end
-
-def fun_l29_n319()
- inc
-end
-
-def fun_l29_n320()
- inc
-end
-
-def fun_l29_n321()
- inc
-end
-
-def fun_l29_n322()
- inc
-end
-
-def fun_l29_n323()
- inc
-end
-
-def fun_l29_n324()
- inc
-end
-
-def fun_l29_n325()
- inc
-end
-
-def fun_l29_n326()
- inc
-end
-
-def fun_l29_n327()
- inc
-end
-
-def fun_l29_n328()
- inc
-end
-
-def fun_l29_n329()
- inc
-end
-
-def fun_l29_n330()
- inc
-end
-
-def fun_l29_n331()
- inc
-end
-
-def fun_l29_n332()
- inc
-end
-
-def fun_l29_n333()
- inc
-end
-
-def fun_l29_n334()
- inc
-end
-
-def fun_l29_n335()
- inc
-end
-
-def fun_l29_n336()
- inc
-end
-
-def fun_l29_n337()
- inc
-end
-
-def fun_l29_n338()
- inc
-end
-
-def fun_l29_n339()
- inc
-end
-
-def fun_l29_n340()
- inc
-end
-
-def fun_l29_n341()
- inc
-end
-
-def fun_l29_n342()
- inc
-end
-
-def fun_l29_n343()
- inc
-end
-
-def fun_l29_n344()
- inc
-end
-
-def fun_l29_n345()
- inc
-end
-
-def fun_l29_n346()
- inc
-end
-
-def fun_l29_n347()
- inc
-end
-
-def fun_l29_n348()
- inc
-end
-
-def fun_l29_n349()
- inc
-end
-
-def fun_l29_n350()
- inc
-end
-
-def fun_l29_n351()
- inc
-end
-
-def fun_l29_n352()
- inc
-end
-
-def fun_l29_n353()
- inc
-end
-
-def fun_l29_n354()
- inc
-end
-
-def fun_l29_n355()
- inc
-end
-
-def fun_l29_n356()
- inc
-end
-
-def fun_l29_n357()
- inc
-end
-
-def fun_l29_n358()
- inc
-end
-
-def fun_l29_n359()
- inc
-end
-
-def fun_l29_n360()
- inc
-end
-
-def fun_l29_n361()
- inc
-end
-
-def fun_l29_n362()
- inc
-end
-
-def fun_l29_n363()
- inc
-end
-
-def fun_l29_n364()
- inc
-end
-
-def fun_l29_n365()
- inc
-end
-
-def fun_l29_n366()
- inc
-end
-
-def fun_l29_n367()
- inc
-end
-
-def fun_l29_n368()
- inc
-end
-
-def fun_l29_n369()
- inc
-end
-
-def fun_l29_n370()
- inc
-end
-
-def fun_l29_n371()
- inc
-end
-
-def fun_l29_n372()
- inc
-end
-
-def fun_l29_n373()
- inc
-end
-
-def fun_l29_n374()
- inc
-end
-
-def fun_l29_n375()
- inc
-end
-
-def fun_l29_n376()
- inc
-end
-
-def fun_l29_n377()
- inc
-end
-
-def fun_l29_n378()
- inc
-end
-
-def fun_l29_n379()
- inc
-end
-
-def fun_l29_n380()
- inc
-end
-
-def fun_l29_n381()
- inc
-end
-
-def fun_l29_n382()
- inc
-end
-
-def fun_l29_n383()
- inc
-end
-
-def fun_l29_n384()
- inc
-end
-
-def fun_l29_n385()
- inc
-end
-
-def fun_l29_n386()
- inc
-end
-
-def fun_l29_n387()
- inc
-end
-
-def fun_l29_n388()
- inc
-end
-
-def fun_l29_n389()
- inc
-end
-
-def fun_l29_n390()
- inc
-end
-
-def fun_l29_n391()
- inc
-end
-
-def fun_l29_n392()
- inc
-end
-
-def fun_l29_n393()
- inc
-end
-
-def fun_l29_n394()
- inc
-end
-
-def fun_l29_n395()
- inc
-end
-
-def fun_l29_n396()
- inc
-end
-
-def fun_l29_n397()
- inc
-end
-
-def fun_l29_n398()
- inc
-end
-
-def fun_l29_n399()
- inc
-end
-
-def fun_l29_n400()
- inc
-end
-
-def fun_l29_n401()
- inc
-end
-
-def fun_l29_n402()
- inc
-end
-
-def fun_l29_n403()
- inc
-end
-
-def fun_l29_n404()
- inc
-end
-
-def fun_l29_n405()
- inc
-end
-
-def fun_l29_n406()
- inc
-end
-
-def fun_l29_n407()
- inc
-end
-
-def fun_l29_n408()
- inc
-end
-
-def fun_l29_n409()
- inc
-end
-
-def fun_l29_n410()
- inc
-end
-
-def fun_l29_n411()
- inc
-end
-
-def fun_l29_n412()
- inc
-end
-
-def fun_l29_n413()
- inc
-end
-
-def fun_l29_n414()
- inc
-end
-
-def fun_l29_n415()
- inc
-end
-
-def fun_l29_n416()
- inc
-end
-
-def fun_l29_n417()
- inc
-end
-
-def fun_l29_n418()
- inc
-end
-
-def fun_l29_n419()
- inc
-end
-
-def fun_l29_n420()
- inc
-end
-
-def fun_l29_n421()
- inc
-end
-
-def fun_l29_n422()
- inc
-end
-
-def fun_l29_n423()
- inc
-end
-
-def fun_l29_n424()
- inc
-end
-
-def fun_l29_n425()
- inc
-end
-
-def fun_l29_n426()
- inc
-end
-
-def fun_l29_n427()
- inc
-end
-
-def fun_l29_n428()
- inc
-end
-
-def fun_l29_n429()
- inc
-end
-
-def fun_l29_n430()
- inc
-end
-
-def fun_l29_n431()
- inc
-end
-
-def fun_l29_n432()
- inc
-end
-
-def fun_l29_n433()
- inc
-end
-
-def fun_l29_n434()
- inc
-end
-
-def fun_l29_n435()
- inc
-end
-
-def fun_l29_n436()
- inc
-end
-
-def fun_l29_n437()
- inc
-end
-
-def fun_l29_n438()
- inc
-end
-
-def fun_l29_n439()
- inc
-end
-
-def fun_l29_n440()
- inc
-end
-
-def fun_l29_n441()
- inc
-end
-
-def fun_l29_n442()
- inc
-end
-
-def fun_l29_n443()
- inc
-end
-
-def fun_l29_n444()
- inc
-end
-
-def fun_l29_n445()
- inc
-end
-
-def fun_l29_n446()
- inc
-end
-
-def fun_l29_n447()
- inc
-end
-
-def fun_l29_n448()
- inc
-end
-
-def fun_l29_n449()
- inc
-end
-
-def fun_l29_n450()
- inc
-end
-
-def fun_l29_n451()
- inc
-end
-
-def fun_l29_n452()
- inc
-end
-
-def fun_l29_n453()
- inc
-end
-
-def fun_l29_n454()
- inc
-end
-
-def fun_l29_n455()
- inc
-end
-
-def fun_l29_n456()
- inc
-end
-
-def fun_l29_n457()
- inc
-end
-
-def fun_l29_n458()
- inc
-end
-
-def fun_l29_n459()
- inc
-end
-
-def fun_l29_n460()
- inc
-end
-
-def fun_l29_n461()
- inc
-end
-
-def fun_l29_n462()
- inc
-end
-
-def fun_l29_n463()
- inc
-end
-
-def fun_l29_n464()
- inc
-end
-
-def fun_l29_n465()
- inc
-end
-
-def fun_l29_n466()
- inc
-end
-
-def fun_l29_n467()
- inc
-end
-
-def fun_l29_n468()
- inc
-end
-
-def fun_l29_n469()
- inc
-end
-
-def fun_l29_n470()
- inc
-end
-
-def fun_l29_n471()
- inc
-end
-
-def fun_l29_n472()
- inc
-end
-
-def fun_l29_n473()
- inc
-end
-
-def fun_l29_n474()
- inc
-end
-
-def fun_l29_n475()
- inc
-end
-
-def fun_l29_n476()
- inc
-end
-
-def fun_l29_n477()
- inc
-end
-
-def fun_l29_n478()
- inc
-end
-
-def fun_l29_n479()
- inc
-end
-
-def fun_l29_n480()
- inc
-end
-
-def fun_l29_n481()
- inc
-end
-
-def fun_l29_n482()
- inc
-end
-
-def fun_l29_n483()
- inc
-end
-
-def fun_l29_n484()
- inc
-end
-
-def fun_l29_n485()
- inc
-end
-
-def fun_l29_n486()
- inc
-end
-
-def fun_l29_n487()
- inc
-end
-
-def fun_l29_n488()
- inc
-end
-
-def fun_l29_n489()
- inc
-end
-
-def fun_l29_n490()
- inc
-end
-
-def fun_l29_n491()
- inc
-end
-
-def fun_l29_n492()
- inc
-end
-
-def fun_l29_n493()
- inc
-end
-
-def fun_l29_n494()
- inc
-end
-
-def fun_l29_n495()
- inc
-end
-
-def fun_l29_n496()
- inc
-end
-
-def fun_l29_n497()
- inc
-end
-
-def fun_l29_n498()
- inc
-end
-
-def fun_l29_n499()
- inc
-end
-
-def fun_l29_n500()
- inc
-end
-
-def fun_l29_n501()
- inc
-end
-
-def fun_l29_n502()
- inc
-end
-
-def fun_l29_n503()
- inc
-end
-
-def fun_l29_n504()
- inc
-end
-
-def fun_l29_n505()
- inc
-end
-
-def fun_l29_n506()
- inc
-end
-
-def fun_l29_n507()
- inc
-end
-
-def fun_l29_n508()
- inc
-end
-
-def fun_l29_n509()
- inc
-end
-
-def fun_l29_n510()
- inc
-end
-
-def fun_l29_n511()
- inc
-end
-
-def fun_l29_n512()
- inc
-end
-
-def fun_l29_n513()
- inc
-end
-
-def fun_l29_n514()
- inc
-end
-
-def fun_l29_n515()
- inc
-end
-
-def fun_l29_n516()
- inc
-end
-
-def fun_l29_n517()
- inc
-end
-
-def fun_l29_n518()
- inc
-end
-
-def fun_l29_n519()
- inc
-end
-
-def fun_l29_n520()
- inc
-end
-
-def fun_l29_n521()
- inc
-end
-
-def fun_l29_n522()
- inc
-end
-
-def fun_l29_n523()
- inc
-end
-
-def fun_l29_n524()
- inc
-end
-
-def fun_l29_n525()
- inc
-end
-
-def fun_l29_n526()
- inc
-end
-
-def fun_l29_n527()
- inc
-end
-
-def fun_l29_n528()
- inc
-end
-
-def fun_l29_n529()
- inc
-end
-
-def fun_l29_n530()
- inc
-end
-
-def fun_l29_n531()
- inc
-end
-
-def fun_l29_n532()
- inc
-end
-
-def fun_l29_n533()
- inc
-end
-
-def fun_l29_n534()
- inc
-end
-
-def fun_l29_n535()
- inc
-end
-
-def fun_l29_n536()
- inc
-end
-
-def fun_l29_n537()
- inc
-end
-
-def fun_l29_n538()
- inc
-end
-
-def fun_l29_n539()
- inc
-end
-
-def fun_l29_n540()
- inc
-end
-
-def fun_l29_n541()
- inc
-end
-
-def fun_l29_n542()
- inc
-end
-
-def fun_l29_n543()
- inc
-end
-
-def fun_l29_n544()
- inc
-end
-
-def fun_l29_n545()
- inc
-end
-
-def fun_l29_n546()
- inc
-end
-
-def fun_l29_n547()
- inc
-end
-
-def fun_l29_n548()
- inc
-end
-
-def fun_l29_n549()
- inc
-end
-
-def fun_l29_n550()
- inc
-end
-
-def fun_l29_n551()
- inc
-end
-
-def fun_l29_n552()
- inc
-end
-
-def fun_l29_n553()
- inc
-end
-
-def fun_l29_n554()
- inc
-end
-
-def fun_l29_n555()
- inc
-end
-
-def fun_l29_n556()
- inc
-end
-
-def fun_l29_n557()
- inc
-end
-
-def fun_l29_n558()
- inc
-end
-
-def fun_l29_n559()
- inc
-end
-
-def fun_l29_n560()
- inc
-end
-
-def fun_l29_n561()
- inc
-end
-
-def fun_l29_n562()
- inc
-end
-
-def fun_l29_n563()
- inc
-end
-
-def fun_l29_n564()
- inc
-end
-
-def fun_l29_n565()
- inc
-end
-
-def fun_l29_n566()
- inc
-end
-
-def fun_l29_n567()
- inc
-end
-
-def fun_l29_n568()
- inc
-end
-
-def fun_l29_n569()
- inc
-end
-
-def fun_l29_n570()
- inc
-end
-
-def fun_l29_n571()
- inc
-end
-
-def fun_l29_n572()
- inc
-end
-
-def fun_l29_n573()
- inc
-end
-
-def fun_l29_n574()
- inc
-end
-
-def fun_l29_n575()
- inc
-end
-
-def fun_l29_n576()
- inc
-end
-
-def fun_l29_n577()
- inc
-end
-
-def fun_l29_n578()
- inc
-end
-
-def fun_l29_n579()
- inc
-end
-
-def fun_l29_n580()
- inc
-end
-
-def fun_l29_n581()
- inc
-end
-
-def fun_l29_n582()
- inc
-end
-
-def fun_l29_n583()
- inc
-end
-
-def fun_l29_n584()
- inc
-end
-
-def fun_l29_n585()
- inc
-end
-
-def fun_l29_n586()
- inc
-end
-
-def fun_l29_n587()
- inc
-end
-
-def fun_l29_n588()
- inc
-end
-
-def fun_l29_n589()
- inc
-end
-
-def fun_l29_n590()
- inc
-end
-
-def fun_l29_n591()
- inc
-end
-
-def fun_l29_n592()
- inc
-end
-
-def fun_l29_n593()
- inc
-end
-
-def fun_l29_n594()
- inc
-end
-
-def fun_l29_n595()
- inc
-end
-
-def fun_l29_n596()
- inc
-end
-
-def fun_l29_n597()
- inc
-end
-
-def fun_l29_n598()
- inc
-end
-
-def fun_l29_n599()
- inc
-end
-
-def fun_l29_n600()
- inc
-end
-
-def fun_l29_n601()
- inc
-end
-
-def fun_l29_n602()
- inc
-end
-
-def fun_l29_n603()
- inc
-end
-
-def fun_l29_n604()
- inc
-end
-
-def fun_l29_n605()
- inc
-end
-
-def fun_l29_n606()
- inc
-end
-
-def fun_l29_n607()
- inc
-end
-
-def fun_l29_n608()
- inc
-end
-
-def fun_l29_n609()
- inc
-end
-
-def fun_l29_n610()
- inc
-end
-
-def fun_l29_n611()
- inc
-end
-
-def fun_l29_n612()
- inc
-end
-
-def fun_l29_n613()
- inc
-end
-
-def fun_l29_n614()
- inc
-end
-
-def fun_l29_n615()
- inc
-end
-
-def fun_l29_n616()
- inc
-end
-
-def fun_l29_n617()
- inc
-end
-
-def fun_l29_n618()
- inc
-end
-
-def fun_l29_n619()
- inc
-end
-
-def fun_l29_n620()
- inc
-end
-
-def fun_l29_n621()
- inc
-end
-
-def fun_l29_n622()
- inc
-end
-
-def fun_l29_n623()
- inc
-end
-
-def fun_l29_n624()
- inc
-end
-
-def fun_l29_n625()
- inc
-end
-
-def fun_l29_n626()
- inc
-end
-
-def fun_l29_n627()
- inc
-end
-
-def fun_l29_n628()
- inc
-end
-
-def fun_l29_n629()
- inc
-end
-
-def fun_l29_n630()
- inc
-end
-
-def fun_l29_n631()
- inc
-end
-
-def fun_l29_n632()
- inc
-end
-
-def fun_l29_n633()
- inc
-end
-
-def fun_l29_n634()
- inc
-end
-
-def fun_l29_n635()
- inc
-end
-
-def fun_l29_n636()
- inc
-end
-
-def fun_l29_n637()
- inc
-end
-
-def fun_l29_n638()
- inc
-end
-
-def fun_l29_n639()
- inc
-end
-
-def fun_l29_n640()
- inc
-end
-
-def fun_l29_n641()
- inc
-end
-
-def fun_l29_n642()
- inc
-end
-
-def fun_l29_n643()
- inc
-end
-
-def fun_l29_n644()
- inc
-end
-
-def fun_l29_n645()
- inc
-end
-
-def fun_l29_n646()
- inc
-end
-
-def fun_l29_n647()
- inc
-end
-
-def fun_l29_n648()
- inc
-end
-
-def fun_l29_n649()
- inc
-end
-
-def fun_l29_n650()
- inc
-end
-
-def fun_l29_n651()
- inc
-end
-
-def fun_l29_n652()
- inc
-end
-
-def fun_l29_n653()
- inc
-end
-
-def fun_l29_n654()
- inc
-end
-
-def fun_l29_n655()
- inc
-end
-
-def fun_l29_n656()
- inc
-end
-
-def fun_l29_n657()
- inc
-end
-
-def fun_l29_n658()
- inc
-end
-
-def fun_l29_n659()
- inc
-end
-
-def fun_l29_n660()
- inc
-end
-
-def fun_l29_n661()
- inc
-end
-
-def fun_l29_n662()
- inc
-end
-
-def fun_l29_n663()
- inc
-end
-
-def fun_l29_n664()
- inc
-end
-
-def fun_l29_n665()
- inc
-end
-
-def fun_l29_n666()
- inc
-end
-
-def fun_l29_n667()
- inc
-end
-
-def fun_l29_n668()
- inc
-end
-
-def fun_l29_n669()
- inc
-end
-
-def fun_l29_n670()
- inc
-end
-
-def fun_l29_n671()
- inc
-end
-
-def fun_l29_n672()
- inc
-end
-
-def fun_l29_n673()
- inc
-end
-
-def fun_l29_n674()
- inc
-end
-
-def fun_l29_n675()
- inc
-end
-
-def fun_l29_n676()
- inc
-end
-
-def fun_l29_n677()
- inc
-end
-
-def fun_l29_n678()
- inc
-end
-
-def fun_l29_n679()
- inc
-end
-
-def fun_l29_n680()
- inc
-end
-
-def fun_l29_n681()
- inc
-end
-
-def fun_l29_n682()
- inc
-end
-
-def fun_l29_n683()
- inc
-end
-
-def fun_l29_n684()
- inc
-end
-
-def fun_l29_n685()
- inc
-end
-
-def fun_l29_n686()
- inc
-end
-
-def fun_l29_n687()
- inc
-end
-
-def fun_l29_n688()
- inc
-end
-
-def fun_l29_n689()
- inc
-end
-
-def fun_l29_n690()
- inc
-end
-
-def fun_l29_n691()
- inc
-end
-
-def fun_l29_n692()
- inc
-end
-
-def fun_l29_n693()
- inc
-end
-
-def fun_l29_n694()
- inc
-end
-
-def fun_l29_n695()
- inc
-end
-
-def fun_l29_n696()
- inc
-end
-
-def fun_l29_n697()
- inc
-end
-
-def fun_l29_n698()
- inc
-end
-
-def fun_l29_n699()
- inc
-end
-
-def fun_l29_n700()
- inc
-end
-
-def fun_l29_n701()
- inc
-end
-
-def fun_l29_n702()
- inc
-end
-
-def fun_l29_n703()
- inc
-end
-
-def fun_l29_n704()
- inc
-end
-
-def fun_l29_n705()
- inc
-end
-
-def fun_l29_n706()
- inc
-end
-
-def fun_l29_n707()
- inc
-end
-
-def fun_l29_n708()
- inc
-end
-
-def fun_l29_n709()
- inc
-end
-
-def fun_l29_n710()
- inc
-end
-
-def fun_l29_n711()
- inc
-end
-
-def fun_l29_n712()
- inc
-end
-
-def fun_l29_n713()
- inc
-end
-
-def fun_l29_n714()
- inc
-end
-
-def fun_l29_n715()
- inc
-end
-
-def fun_l29_n716()
- inc
-end
-
-def fun_l29_n717()
- inc
-end
-
-def fun_l29_n718()
- inc
-end
-
-def fun_l29_n719()
- inc
-end
-
-def fun_l29_n720()
- inc
-end
-
-def fun_l29_n721()
- inc
-end
-
-def fun_l29_n722()
- inc
-end
-
-def fun_l29_n723()
- inc
-end
-
-def fun_l29_n724()
- inc
-end
-
-def fun_l29_n725()
- inc
-end
-
-def fun_l29_n726()
- inc
-end
-
-def fun_l29_n727()
- inc
-end
-
-def fun_l29_n728()
- inc
-end
-
-def fun_l29_n729()
- inc
-end
-
-def fun_l29_n730()
- inc
-end
-
-def fun_l29_n731()
- inc
-end
-
-def fun_l29_n732()
- inc
-end
-
-def fun_l29_n733()
- inc
-end
-
-def fun_l29_n734()
- inc
-end
-
-def fun_l29_n735()
- inc
-end
-
-def fun_l29_n736()
- inc
-end
-
-def fun_l29_n737()
- inc
-end
-
-def fun_l29_n738()
- inc
-end
-
-def fun_l29_n739()
- inc
-end
-
-def fun_l29_n740()
- inc
-end
-
-def fun_l29_n741()
- inc
-end
-
-def fun_l29_n742()
- inc
-end
-
-def fun_l29_n743()
- inc
-end
-
-def fun_l29_n744()
- inc
-end
-
-def fun_l29_n745()
- inc
-end
-
-def fun_l29_n746()
- inc
-end
-
-def fun_l29_n747()
- inc
-end
-
-def fun_l29_n748()
- inc
-end
-
-def fun_l29_n749()
- inc
-end
-
-def fun_l29_n750()
- inc
-end
-
-def fun_l29_n751()
- inc
-end
-
-def fun_l29_n752()
- inc
-end
-
-def fun_l29_n753()
- inc
-end
-
-def fun_l29_n754()
- inc
-end
-
-def fun_l29_n755()
- inc
-end
-
-def fun_l29_n756()
- inc
-end
-
-def fun_l29_n757()
- inc
-end
-
-def fun_l29_n758()
- inc
-end
-
-def fun_l29_n759()
- inc
-end
-
-def fun_l29_n760()
- inc
-end
-
-def fun_l29_n761()
- inc
-end
-
-def fun_l29_n762()
- inc
-end
-
-def fun_l29_n763()
- inc
-end
-
-def fun_l29_n764()
- inc
-end
-
-def fun_l29_n765()
- inc
-end
-
-def fun_l29_n766()
- inc
-end
-
-def fun_l29_n767()
- inc
-end
-
-def fun_l29_n768()
- inc
-end
-
-def fun_l29_n769()
- inc
-end
-
-def fun_l29_n770()
- inc
-end
-
-def fun_l29_n771()
- inc
-end
-
-def fun_l29_n772()
- inc
-end
-
-def fun_l29_n773()
- inc
-end
-
-def fun_l29_n774()
- inc
-end
-
-def fun_l29_n775()
- inc
-end
-
-def fun_l29_n776()
- inc
-end
-
-def fun_l29_n777()
- inc
-end
-
-def fun_l29_n778()
- inc
-end
-
-def fun_l29_n779()
- inc
-end
-
-def fun_l29_n780()
- inc
-end
-
-def fun_l29_n781()
- inc
-end
-
-def fun_l29_n782()
- inc
-end
-
-def fun_l29_n783()
- inc
-end
-
-def fun_l29_n784()
- inc
-end
-
-def fun_l29_n785()
- inc
-end
-
-def fun_l29_n786()
- inc
-end
-
-def fun_l29_n787()
- inc
-end
-
-def fun_l29_n788()
- inc
-end
-
-def fun_l29_n789()
- inc
-end
-
-def fun_l29_n790()
- inc
-end
-
-def fun_l29_n791()
- inc
-end
-
-def fun_l29_n792()
- inc
-end
-
-def fun_l29_n793()
- inc
-end
-
-def fun_l29_n794()
- inc
-end
-
-def fun_l29_n795()
- inc
-end
-
-def fun_l29_n796()
- inc
-end
-
-def fun_l29_n797()
- inc
-end
-
-def fun_l29_n798()
- inc
-end
-
-def fun_l29_n799()
- inc
-end
-
-def fun_l29_n800()
- inc
-end
-
-def fun_l29_n801()
- inc
-end
-
-def fun_l29_n802()
- inc
-end
-
-def fun_l29_n803()
- inc
-end
-
-def fun_l29_n804()
- inc
-end
-
-def fun_l29_n805()
- inc
-end
-
-def fun_l29_n806()
- inc
-end
-
-def fun_l29_n807()
- inc
-end
-
-def fun_l29_n808()
- inc
-end
-
-def fun_l29_n809()
- inc
-end
-
-def fun_l29_n810()
- inc
-end
-
-def fun_l29_n811()
- inc
-end
-
-def fun_l29_n812()
- inc
-end
-
-def fun_l29_n813()
- inc
-end
-
-def fun_l29_n814()
- inc
-end
-
-def fun_l29_n815()
- inc
-end
-
-def fun_l29_n816()
- inc
-end
-
-def fun_l29_n817()
- inc
-end
-
-def fun_l29_n818()
- inc
-end
-
-def fun_l29_n819()
- inc
-end
-
-def fun_l29_n820()
- inc
-end
-
-def fun_l29_n821()
- inc
-end
-
-def fun_l29_n822()
- inc
-end
-
-def fun_l29_n823()
- inc
-end
-
-def fun_l29_n824()
- inc
-end
-
-def fun_l29_n825()
- inc
-end
-
-def fun_l29_n826()
- inc
-end
-
-def fun_l29_n827()
- inc
-end
-
-def fun_l29_n828()
- inc
-end
-
-def fun_l29_n829()
- inc
-end
-
-def fun_l29_n830()
- inc
-end
-
-def fun_l29_n831()
- inc
-end
-
-def fun_l29_n832()
- inc
-end
-
-def fun_l29_n833()
- inc
-end
-
-def fun_l29_n834()
- inc
-end
-
-def fun_l29_n835()
- inc
-end
-
-def fun_l29_n836()
- inc
-end
-
-def fun_l29_n837()
- inc
-end
-
-def fun_l29_n838()
- inc
-end
-
-def fun_l29_n839()
- inc
-end
-
-def fun_l29_n840()
- inc
-end
-
-def fun_l29_n841()
- inc
-end
-
-def fun_l29_n842()
- inc
-end
-
-def fun_l29_n843()
- inc
-end
-
-def fun_l29_n844()
- inc
-end
-
-def fun_l29_n845()
- inc
-end
-
-def fun_l29_n846()
- inc
-end
-
-def fun_l29_n847()
- inc
-end
-
-def fun_l29_n848()
- inc
-end
-
-def fun_l29_n849()
- inc
-end
-
-def fun_l29_n850()
- inc
-end
-
-def fun_l29_n851()
- inc
-end
-
-def fun_l29_n852()
- inc
-end
-
-def fun_l29_n853()
- inc
-end
-
-def fun_l29_n854()
- inc
-end
-
-def fun_l29_n855()
- inc
-end
-
-def fun_l29_n856()
- inc
-end
-
-def fun_l29_n857()
- inc
-end
-
-def fun_l29_n858()
- inc
-end
-
-def fun_l29_n859()
- inc
-end
-
-def fun_l29_n860()
- inc
-end
-
-def fun_l29_n861()
- inc
-end
-
-def fun_l29_n862()
- inc
-end
-
-def fun_l29_n863()
- inc
-end
-
-def fun_l29_n864()
- inc
-end
-
-def fun_l29_n865()
- inc
-end
-
-def fun_l29_n866()
- inc
-end
-
-def fun_l29_n867()
- inc
-end
-
-def fun_l29_n868()
- inc
-end
-
-def fun_l29_n869()
- inc
-end
-
-def fun_l29_n870()
- inc
-end
-
-def fun_l29_n871()
- inc
-end
-
-def fun_l29_n872()
- inc
-end
-
-def fun_l29_n873()
- inc
-end
-
-def fun_l29_n874()
- inc
-end
-
-def fun_l29_n875()
- inc
-end
-
-def fun_l29_n876()
- inc
-end
-
-def fun_l29_n877()
- inc
-end
-
-def fun_l29_n878()
- inc
-end
-
-def fun_l29_n879()
- inc
-end
-
-def fun_l29_n880()
- inc
-end
-
-def fun_l29_n881()
- inc
-end
-
-def fun_l29_n882()
- inc
-end
-
-def fun_l29_n883()
- inc
-end
-
-def fun_l29_n884()
- inc
-end
-
-def fun_l29_n885()
- inc
-end
-
-def fun_l29_n886()
- inc
-end
-
-def fun_l29_n887()
- inc
-end
-
-def fun_l29_n888()
- inc
-end
-
-def fun_l29_n889()
- inc
-end
-
-def fun_l29_n890()
- inc
-end
-
-def fun_l29_n891()
- inc
-end
-
-def fun_l29_n892()
- inc
-end
-
-def fun_l29_n893()
- inc
-end
-
-def fun_l29_n894()
- inc
-end
-
-def fun_l29_n895()
- inc
-end
-
-def fun_l29_n896()
- inc
-end
-
-def fun_l29_n897()
- inc
-end
-
-def fun_l29_n898()
- inc
-end
-
-def fun_l29_n899()
- inc
-end
-
-def fun_l29_n900()
- inc
-end
-
-def fun_l29_n901()
- inc
-end
-
-def fun_l29_n902()
- inc
-end
-
-def fun_l29_n903()
- inc
-end
-
-def fun_l29_n904()
- inc
-end
-
-def fun_l29_n905()
- inc
-end
-
-def fun_l29_n906()
- inc
-end
-
-def fun_l29_n907()
- inc
-end
-
-def fun_l29_n908()
- inc
-end
-
-def fun_l29_n909()
- inc
-end
-
-def fun_l29_n910()
- inc
-end
-
-def fun_l29_n911()
- inc
-end
-
-def fun_l29_n912()
- inc
-end
-
-def fun_l29_n913()
- inc
-end
-
-def fun_l29_n914()
- inc
-end
-
-def fun_l29_n915()
- inc
-end
-
-def fun_l29_n916()
- inc
-end
-
-def fun_l29_n917()
- inc
-end
-
-def fun_l29_n918()
- inc
-end
-
-def fun_l29_n919()
- inc
-end
-
-def fun_l29_n920()
- inc
-end
-
-def fun_l29_n921()
- inc
-end
-
-def fun_l29_n922()
- inc
-end
-
-def fun_l29_n923()
- inc
-end
-
-def fun_l29_n924()
- inc
-end
-
-def fun_l29_n925()
- inc
-end
-
-def fun_l29_n926()
- inc
-end
-
-def fun_l29_n927()
- inc
-end
-
-def fun_l29_n928()
- inc
-end
-
-def fun_l29_n929()
- inc
-end
-
-def fun_l29_n930()
- inc
-end
-
-def fun_l29_n931()
- inc
-end
-
-def fun_l29_n932()
- inc
-end
-
-def fun_l29_n933()
- inc
-end
-
-def fun_l29_n934()
- inc
-end
-
-def fun_l29_n935()
- inc
-end
-
-def fun_l29_n936()
- inc
-end
-
-def fun_l29_n937()
- inc
-end
-
-def fun_l29_n938()
- inc
-end
-
-def fun_l29_n939()
- inc
-end
-
-def fun_l29_n940()
- inc
-end
-
-def fun_l29_n941()
- inc
-end
-
-def fun_l29_n942()
- inc
-end
-
-def fun_l29_n943()
- inc
-end
-
-def fun_l29_n944()
- inc
-end
-
-def fun_l29_n945()
- inc
-end
-
-def fun_l29_n946()
- inc
-end
-
-def fun_l29_n947()
- inc
-end
-
-def fun_l29_n948()
- inc
-end
-
-def fun_l29_n949()
- inc
-end
-
-def fun_l29_n950()
- inc
-end
-
-def fun_l29_n951()
- inc
-end
-
-def fun_l29_n952()
- inc
-end
-
-def fun_l29_n953()
- inc
-end
-
-def fun_l29_n954()
- inc
-end
-
-def fun_l29_n955()
- inc
-end
-
-def fun_l29_n956()
- inc
-end
-
-def fun_l29_n957()
- inc
-end
-
-def fun_l29_n958()
- inc
-end
-
-def fun_l29_n959()
- inc
-end
-
-def fun_l29_n960()
- inc
-end
-
-def fun_l29_n961()
- inc
-end
-
-def fun_l29_n962()
- inc
-end
-
-def fun_l29_n963()
- inc
-end
-
-def fun_l29_n964()
- inc
-end
-
-def fun_l29_n965()
- inc
-end
-
-def fun_l29_n966()
- inc
-end
-
-def fun_l29_n967()
- inc
-end
-
-def fun_l29_n968()
- inc
-end
-
-def fun_l29_n969()
- inc
-end
-
-def fun_l29_n970()
- inc
-end
-
-def fun_l29_n971()
- inc
-end
-
-def fun_l29_n972()
- inc
-end
-
-def fun_l29_n973()
- inc
-end
-
-def fun_l29_n974()
- inc
-end
-
-def fun_l29_n975()
- inc
-end
-
-def fun_l29_n976()
- inc
-end
-
-def fun_l29_n977()
- inc
-end
-
-def fun_l29_n978()
- inc
-end
-
-def fun_l29_n979()
- inc
-end
-
-def fun_l29_n980()
- inc
-end
-
-def fun_l29_n981()
- inc
-end
-
-def fun_l29_n982()
- inc
-end
-
-def fun_l29_n983()
- inc
-end
-
-def fun_l29_n984()
- inc
-end
-
-def fun_l29_n985()
- inc
-end
-
-def fun_l29_n986()
- inc
-end
-
-def fun_l29_n987()
- inc
-end
-
-def fun_l29_n988()
- inc
-end
-
-def fun_l29_n989()
- inc
-end
-
-def fun_l29_n990()
- inc
-end
-
-def fun_l29_n991()
- inc
-end
-
-def fun_l29_n992()
- inc
-end
-
-def fun_l29_n993()
- inc
-end
-
-def fun_l29_n994()
- inc
-end
-
-def fun_l29_n995()
- inc
-end
-
-def fun_l29_n996()
- inc
-end
-
-def fun_l29_n997()
- inc
-end
-
-def fun_l29_n998()
- inc
-end
-
-def fun_l29_n999()
- inc
-end
-
-@a = 0
-@b = 0
-@c = 0
-@d = 0
-@count = 0
-def inc()
- @count += 1
-end
-1000.times do
- fun_l0_n0
- fun_l0_n1
- fun_l0_n2
- fun_l0_n3
- fun_l0_n4
- fun_l0_n5
- fun_l0_n6
- fun_l0_n7
- fun_l0_n8
- fun_l0_n9
- fun_l0_n10
- fun_l0_n11
- fun_l0_n12
- fun_l0_n13
- fun_l0_n14
- fun_l0_n15
- fun_l0_n16
- fun_l0_n17
- fun_l0_n18
- fun_l0_n19
- fun_l0_n20
- fun_l0_n21
- fun_l0_n22
- fun_l0_n23
- fun_l0_n24
- fun_l0_n25
- fun_l0_n26
- fun_l0_n27
- fun_l0_n28
- fun_l0_n29
- fun_l0_n30
- fun_l0_n31
- fun_l0_n32
- fun_l0_n33
- fun_l0_n34
- fun_l0_n35
- fun_l0_n36
- fun_l0_n37
- fun_l0_n38
- fun_l0_n39
- fun_l0_n40
- fun_l0_n41
- fun_l0_n42
- fun_l0_n43
- fun_l0_n44
- fun_l0_n45
- fun_l0_n46
- fun_l0_n47
- fun_l0_n48
- fun_l0_n49
- fun_l0_n50
- fun_l0_n51
- fun_l0_n52
- fun_l0_n53
- fun_l0_n54
- fun_l0_n55
- fun_l0_n56
- fun_l0_n57
- fun_l0_n58
- fun_l0_n59
- fun_l0_n60
- fun_l0_n61
- fun_l0_n62
- fun_l0_n63
- fun_l0_n64
- fun_l0_n65
- fun_l0_n66
- fun_l0_n67
- fun_l0_n68
- fun_l0_n69
- fun_l0_n70
- fun_l0_n71
- fun_l0_n72
- fun_l0_n73
- fun_l0_n74
- fun_l0_n75
- fun_l0_n76
- fun_l0_n77
- fun_l0_n78
- fun_l0_n79
- fun_l0_n80
- fun_l0_n81
- fun_l0_n82
- fun_l0_n83
- fun_l0_n84
- fun_l0_n85
- fun_l0_n86
- fun_l0_n87
- fun_l0_n88
- fun_l0_n89
- fun_l0_n90
- fun_l0_n91
- fun_l0_n92
- fun_l0_n93
- fun_l0_n94
- fun_l0_n95
- fun_l0_n96
- fun_l0_n97
- fun_l0_n98
- fun_l0_n99
- fun_l0_n100
- fun_l0_n101
- fun_l0_n102
- fun_l0_n103
- fun_l0_n104
- fun_l0_n105
- fun_l0_n106
- fun_l0_n107
- fun_l0_n108
- fun_l0_n109
- fun_l0_n110
- fun_l0_n111
- fun_l0_n112
- fun_l0_n113
- fun_l0_n114
- fun_l0_n115
- fun_l0_n116
- fun_l0_n117
- fun_l0_n118
- fun_l0_n119
- fun_l0_n120
- fun_l0_n121
- fun_l0_n122
- fun_l0_n123
- fun_l0_n124
- fun_l0_n125
- fun_l0_n126
- fun_l0_n127
- fun_l0_n128
- fun_l0_n129
- fun_l0_n130
- fun_l0_n131
- fun_l0_n132
- fun_l0_n133
- fun_l0_n134
- fun_l0_n135
- fun_l0_n136
- fun_l0_n137
- fun_l0_n138
- fun_l0_n139
- fun_l0_n140
- fun_l0_n141
- fun_l0_n142
- fun_l0_n143
- fun_l0_n144
- fun_l0_n145
- fun_l0_n146
- fun_l0_n147
- fun_l0_n148
- fun_l0_n149
- fun_l0_n150
- fun_l0_n151
- fun_l0_n152
- fun_l0_n153
- fun_l0_n154
- fun_l0_n155
- fun_l0_n156
- fun_l0_n157
- fun_l0_n158
- fun_l0_n159
- fun_l0_n160
- fun_l0_n161
- fun_l0_n162
- fun_l0_n163
- fun_l0_n164
- fun_l0_n165
- fun_l0_n166
- fun_l0_n167
- fun_l0_n168
- fun_l0_n169
- fun_l0_n170
- fun_l0_n171
- fun_l0_n172
- fun_l0_n173
- fun_l0_n174
- fun_l0_n175
- fun_l0_n176
- fun_l0_n177
- fun_l0_n178
- fun_l0_n179
- fun_l0_n180
- fun_l0_n181
- fun_l0_n182
- fun_l0_n183
- fun_l0_n184
- fun_l0_n185
- fun_l0_n186
- fun_l0_n187
- fun_l0_n188
- fun_l0_n189
- fun_l0_n190
- fun_l0_n191
- fun_l0_n192
- fun_l0_n193
- fun_l0_n194
- fun_l0_n195
- fun_l0_n196
- fun_l0_n197
- fun_l0_n198
- fun_l0_n199
- fun_l0_n200
- fun_l0_n201
- fun_l0_n202
- fun_l0_n203
- fun_l0_n204
- fun_l0_n205
- fun_l0_n206
- fun_l0_n207
- fun_l0_n208
- fun_l0_n209
- fun_l0_n210
- fun_l0_n211
- fun_l0_n212
- fun_l0_n213
- fun_l0_n214
- fun_l0_n215
- fun_l0_n216
- fun_l0_n217
- fun_l0_n218
- fun_l0_n219
- fun_l0_n220
- fun_l0_n221
- fun_l0_n222
- fun_l0_n223
- fun_l0_n224
- fun_l0_n225
- fun_l0_n226
- fun_l0_n227
- fun_l0_n228
- fun_l0_n229
- fun_l0_n230
- fun_l0_n231
- fun_l0_n232
- fun_l0_n233
- fun_l0_n234
- fun_l0_n235
- fun_l0_n236
- fun_l0_n237
- fun_l0_n238
- fun_l0_n239
- fun_l0_n240
- fun_l0_n241
- fun_l0_n242
- fun_l0_n243
- fun_l0_n244
- fun_l0_n245
- fun_l0_n246
- fun_l0_n247
- fun_l0_n248
- fun_l0_n249
- fun_l0_n250
- fun_l0_n251
- fun_l0_n252
- fun_l0_n253
- fun_l0_n254
- fun_l0_n255
- fun_l0_n256
- fun_l0_n257
- fun_l0_n258
- fun_l0_n259
- fun_l0_n260
- fun_l0_n261
- fun_l0_n262
- fun_l0_n263
- fun_l0_n264
- fun_l0_n265
- fun_l0_n266
- fun_l0_n267
- fun_l0_n268
- fun_l0_n269
- fun_l0_n270
- fun_l0_n271
- fun_l0_n272
- fun_l0_n273
- fun_l0_n274
- fun_l0_n275
- fun_l0_n276
- fun_l0_n277
- fun_l0_n278
- fun_l0_n279
- fun_l0_n280
- fun_l0_n281
- fun_l0_n282
- fun_l0_n283
- fun_l0_n284
- fun_l0_n285
- fun_l0_n286
- fun_l0_n287
- fun_l0_n288
- fun_l0_n289
- fun_l0_n290
- fun_l0_n291
- fun_l0_n292
- fun_l0_n293
- fun_l0_n294
- fun_l0_n295
- fun_l0_n296
- fun_l0_n297
- fun_l0_n298
- fun_l0_n299
- fun_l0_n300
- fun_l0_n301
- fun_l0_n302
- fun_l0_n303
- fun_l0_n304
- fun_l0_n305
- fun_l0_n306
- fun_l0_n307
- fun_l0_n308
- fun_l0_n309
- fun_l0_n310
- fun_l0_n311
- fun_l0_n312
- fun_l0_n313
- fun_l0_n314
- fun_l0_n315
- fun_l0_n316
- fun_l0_n317
- fun_l0_n318
- fun_l0_n319
- fun_l0_n320
- fun_l0_n321
- fun_l0_n322
- fun_l0_n323
- fun_l0_n324
- fun_l0_n325
- fun_l0_n326
- fun_l0_n327
- fun_l0_n328
- fun_l0_n329
- fun_l0_n330
- fun_l0_n331
- fun_l0_n332
- fun_l0_n333
- fun_l0_n334
- fun_l0_n335
- fun_l0_n336
- fun_l0_n337
- fun_l0_n338
- fun_l0_n339
- fun_l0_n340
- fun_l0_n341
- fun_l0_n342
- fun_l0_n343
- fun_l0_n344
- fun_l0_n345
- fun_l0_n346
- fun_l0_n347
- fun_l0_n348
- fun_l0_n349
- fun_l0_n350
- fun_l0_n351
- fun_l0_n352
- fun_l0_n353
- fun_l0_n354
- fun_l0_n355
- fun_l0_n356
- fun_l0_n357
- fun_l0_n358
- fun_l0_n359
- fun_l0_n360
- fun_l0_n361
- fun_l0_n362
- fun_l0_n363
- fun_l0_n364
- fun_l0_n365
- fun_l0_n366
- fun_l0_n367
- fun_l0_n368
- fun_l0_n369
- fun_l0_n370
- fun_l0_n371
- fun_l0_n372
- fun_l0_n373
- fun_l0_n374
- fun_l0_n375
- fun_l0_n376
- fun_l0_n377
- fun_l0_n378
- fun_l0_n379
- fun_l0_n380
- fun_l0_n381
- fun_l0_n382
- fun_l0_n383
- fun_l0_n384
- fun_l0_n385
- fun_l0_n386
- fun_l0_n387
- fun_l0_n388
- fun_l0_n389
- fun_l0_n390
- fun_l0_n391
- fun_l0_n392
- fun_l0_n393
- fun_l0_n394
- fun_l0_n395
- fun_l0_n396
- fun_l0_n397
- fun_l0_n398
- fun_l0_n399
- fun_l0_n400
- fun_l0_n401
- fun_l0_n402
- fun_l0_n403
- fun_l0_n404
- fun_l0_n405
- fun_l0_n406
- fun_l0_n407
- fun_l0_n408
- fun_l0_n409
- fun_l0_n410
- fun_l0_n411
- fun_l0_n412
- fun_l0_n413
- fun_l0_n414
- fun_l0_n415
- fun_l0_n416
- fun_l0_n417
- fun_l0_n418
- fun_l0_n419
- fun_l0_n420
- fun_l0_n421
- fun_l0_n422
- fun_l0_n423
- fun_l0_n424
- fun_l0_n425
- fun_l0_n426
- fun_l0_n427
- fun_l0_n428
- fun_l0_n429
- fun_l0_n430
- fun_l0_n431
- fun_l0_n432
- fun_l0_n433
- fun_l0_n434
- fun_l0_n435
- fun_l0_n436
- fun_l0_n437
- fun_l0_n438
- fun_l0_n439
- fun_l0_n440
- fun_l0_n441
- fun_l0_n442
- fun_l0_n443
- fun_l0_n444
- fun_l0_n445
- fun_l0_n446
- fun_l0_n447
- fun_l0_n448
- fun_l0_n449
- fun_l0_n450
- fun_l0_n451
- fun_l0_n452
- fun_l0_n453
- fun_l0_n454
- fun_l0_n455
- fun_l0_n456
- fun_l0_n457
- fun_l0_n458
- fun_l0_n459
- fun_l0_n460
- fun_l0_n461
- fun_l0_n462
- fun_l0_n463
- fun_l0_n464
- fun_l0_n465
- fun_l0_n466
- fun_l0_n467
- fun_l0_n468
- fun_l0_n469
- fun_l0_n470
- fun_l0_n471
- fun_l0_n472
- fun_l0_n473
- fun_l0_n474
- fun_l0_n475
- fun_l0_n476
- fun_l0_n477
- fun_l0_n478
- fun_l0_n479
- fun_l0_n480
- fun_l0_n481
- fun_l0_n482
- fun_l0_n483
- fun_l0_n484
- fun_l0_n485
- fun_l0_n486
- fun_l0_n487
- fun_l0_n488
- fun_l0_n489
- fun_l0_n490
- fun_l0_n491
- fun_l0_n492
- fun_l0_n493
- fun_l0_n494
- fun_l0_n495
- fun_l0_n496
- fun_l0_n497
- fun_l0_n498
- fun_l0_n499
- fun_l0_n500
- fun_l0_n501
- fun_l0_n502
- fun_l0_n503
- fun_l0_n504
- fun_l0_n505
- fun_l0_n506
- fun_l0_n507
- fun_l0_n508
- fun_l0_n509
- fun_l0_n510
- fun_l0_n511
- fun_l0_n512
- fun_l0_n513
- fun_l0_n514
- fun_l0_n515
- fun_l0_n516
- fun_l0_n517
- fun_l0_n518
- fun_l0_n519
- fun_l0_n520
- fun_l0_n521
- fun_l0_n522
- fun_l0_n523
- fun_l0_n524
- fun_l0_n525
- fun_l0_n526
- fun_l0_n527
- fun_l0_n528
- fun_l0_n529
- fun_l0_n530
- fun_l0_n531
- fun_l0_n532
- fun_l0_n533
- fun_l0_n534
- fun_l0_n535
- fun_l0_n536
- fun_l0_n537
- fun_l0_n538
- fun_l0_n539
- fun_l0_n540
- fun_l0_n541
- fun_l0_n542
- fun_l0_n543
- fun_l0_n544
- fun_l0_n545
- fun_l0_n546
- fun_l0_n547
- fun_l0_n548
- fun_l0_n549
- fun_l0_n550
- fun_l0_n551
- fun_l0_n552
- fun_l0_n553
- fun_l0_n554
- fun_l0_n555
- fun_l0_n556
- fun_l0_n557
- fun_l0_n558
- fun_l0_n559
- fun_l0_n560
- fun_l0_n561
- fun_l0_n562
- fun_l0_n563
- fun_l0_n564
- fun_l0_n565
- fun_l0_n566
- fun_l0_n567
- fun_l0_n568
- fun_l0_n569
- fun_l0_n570
- fun_l0_n571
- fun_l0_n572
- fun_l0_n573
- fun_l0_n574
- fun_l0_n575
- fun_l0_n576
- fun_l0_n577
- fun_l0_n578
- fun_l0_n579
- fun_l0_n580
- fun_l0_n581
- fun_l0_n582
- fun_l0_n583
- fun_l0_n584
- fun_l0_n585
- fun_l0_n586
- fun_l0_n587
- fun_l0_n588
- fun_l0_n589
- fun_l0_n590
- fun_l0_n591
- fun_l0_n592
- fun_l0_n593
- fun_l0_n594
- fun_l0_n595
- fun_l0_n596
- fun_l0_n597
- fun_l0_n598
- fun_l0_n599
- fun_l0_n600
- fun_l0_n601
- fun_l0_n602
- fun_l0_n603
- fun_l0_n604
- fun_l0_n605
- fun_l0_n606
- fun_l0_n607
- fun_l0_n608
- fun_l0_n609
- fun_l0_n610
- fun_l0_n611
- fun_l0_n612
- fun_l0_n613
- fun_l0_n614
- fun_l0_n615
- fun_l0_n616
- fun_l0_n617
- fun_l0_n618
- fun_l0_n619
- fun_l0_n620
- fun_l0_n621
- fun_l0_n622
- fun_l0_n623
- fun_l0_n624
- fun_l0_n625
- fun_l0_n626
- fun_l0_n627
- fun_l0_n628
- fun_l0_n629
- fun_l0_n630
- fun_l0_n631
- fun_l0_n632
- fun_l0_n633
- fun_l0_n634
- fun_l0_n635
- fun_l0_n636
- fun_l0_n637
- fun_l0_n638
- fun_l0_n639
- fun_l0_n640
- fun_l0_n641
- fun_l0_n642
- fun_l0_n643
- fun_l0_n644
- fun_l0_n645
- fun_l0_n646
- fun_l0_n647
- fun_l0_n648
- fun_l0_n649
- fun_l0_n650
- fun_l0_n651
- fun_l0_n652
- fun_l0_n653
- fun_l0_n654
- fun_l0_n655
- fun_l0_n656
- fun_l0_n657
- fun_l0_n658
- fun_l0_n659
- fun_l0_n660
- fun_l0_n661
- fun_l0_n662
- fun_l0_n663
- fun_l0_n664
- fun_l0_n665
- fun_l0_n666
- fun_l0_n667
- fun_l0_n668
- fun_l0_n669
- fun_l0_n670
- fun_l0_n671
- fun_l0_n672
- fun_l0_n673
- fun_l0_n674
- fun_l0_n675
- fun_l0_n676
- fun_l0_n677
- fun_l0_n678
- fun_l0_n679
- fun_l0_n680
- fun_l0_n681
- fun_l0_n682
- fun_l0_n683
- fun_l0_n684
- fun_l0_n685
- fun_l0_n686
- fun_l0_n687
- fun_l0_n688
- fun_l0_n689
- fun_l0_n690
- fun_l0_n691
- fun_l0_n692
- fun_l0_n693
- fun_l0_n694
- fun_l0_n695
- fun_l0_n696
- fun_l0_n697
- fun_l0_n698
- fun_l0_n699
- fun_l0_n700
- fun_l0_n701
- fun_l0_n702
- fun_l0_n703
- fun_l0_n704
- fun_l0_n705
- fun_l0_n706
- fun_l0_n707
- fun_l0_n708
- fun_l0_n709
- fun_l0_n710
- fun_l0_n711
- fun_l0_n712
- fun_l0_n713
- fun_l0_n714
- fun_l0_n715
- fun_l0_n716
- fun_l0_n717
- fun_l0_n718
- fun_l0_n719
- fun_l0_n720
- fun_l0_n721
- fun_l0_n722
- fun_l0_n723
- fun_l0_n724
- fun_l0_n725
- fun_l0_n726
- fun_l0_n727
- fun_l0_n728
- fun_l0_n729
- fun_l0_n730
- fun_l0_n731
- fun_l0_n732
- fun_l0_n733
- fun_l0_n734
- fun_l0_n735
- fun_l0_n736
- fun_l0_n737
- fun_l0_n738
- fun_l0_n739
- fun_l0_n740
- fun_l0_n741
- fun_l0_n742
- fun_l0_n743
- fun_l0_n744
- fun_l0_n745
- fun_l0_n746
- fun_l0_n747
- fun_l0_n748
- fun_l0_n749
- fun_l0_n750
- fun_l0_n751
- fun_l0_n752
- fun_l0_n753
- fun_l0_n754
- fun_l0_n755
- fun_l0_n756
- fun_l0_n757
- fun_l0_n758
- fun_l0_n759
- fun_l0_n760
- fun_l0_n761
- fun_l0_n762
- fun_l0_n763
- fun_l0_n764
- fun_l0_n765
- fun_l0_n766
- fun_l0_n767
- fun_l0_n768
- fun_l0_n769
- fun_l0_n770
- fun_l0_n771
- fun_l0_n772
- fun_l0_n773
- fun_l0_n774
- fun_l0_n775
- fun_l0_n776
- fun_l0_n777
- fun_l0_n778
- fun_l0_n779
- fun_l0_n780
- fun_l0_n781
- fun_l0_n782
- fun_l0_n783
- fun_l0_n784
- fun_l0_n785
- fun_l0_n786
- fun_l0_n787
- fun_l0_n788
- fun_l0_n789
- fun_l0_n790
- fun_l0_n791
- fun_l0_n792
- fun_l0_n793
- fun_l0_n794
- fun_l0_n795
- fun_l0_n796
- fun_l0_n797
- fun_l0_n798
- fun_l0_n799
- fun_l0_n800
- fun_l0_n801
- fun_l0_n802
- fun_l0_n803
- fun_l0_n804
- fun_l0_n805
- fun_l0_n806
- fun_l0_n807
- fun_l0_n808
- fun_l0_n809
- fun_l0_n810
- fun_l0_n811
- fun_l0_n812
- fun_l0_n813
- fun_l0_n814
- fun_l0_n815
- fun_l0_n816
- fun_l0_n817
- fun_l0_n818
- fun_l0_n819
- fun_l0_n820
- fun_l0_n821
- fun_l0_n822
- fun_l0_n823
- fun_l0_n824
- fun_l0_n825
- fun_l0_n826
- fun_l0_n827
- fun_l0_n828
- fun_l0_n829
- fun_l0_n830
- fun_l0_n831
- fun_l0_n832
- fun_l0_n833
- fun_l0_n834
- fun_l0_n835
- fun_l0_n836
- fun_l0_n837
- fun_l0_n838
- fun_l0_n839
- fun_l0_n840
- fun_l0_n841
- fun_l0_n842
- fun_l0_n843
- fun_l0_n844
- fun_l0_n845
- fun_l0_n846
- fun_l0_n847
- fun_l0_n848
- fun_l0_n849
- fun_l0_n850
- fun_l0_n851
- fun_l0_n852
- fun_l0_n853
- fun_l0_n854
- fun_l0_n855
- fun_l0_n856
- fun_l0_n857
- fun_l0_n858
- fun_l0_n859
- fun_l0_n860
- fun_l0_n861
- fun_l0_n862
- fun_l0_n863
- fun_l0_n864
- fun_l0_n865
- fun_l0_n866
- fun_l0_n867
- fun_l0_n868
- fun_l0_n869
- fun_l0_n870
- fun_l0_n871
- fun_l0_n872
- fun_l0_n873
- fun_l0_n874
- fun_l0_n875
- fun_l0_n876
- fun_l0_n877
- fun_l0_n878
- fun_l0_n879
- fun_l0_n880
- fun_l0_n881
- fun_l0_n882
- fun_l0_n883
- fun_l0_n884
- fun_l0_n885
- fun_l0_n886
- fun_l0_n887
- fun_l0_n888
- fun_l0_n889
- fun_l0_n890
- fun_l0_n891
- fun_l0_n892
- fun_l0_n893
- fun_l0_n894
- fun_l0_n895
- fun_l0_n896
- fun_l0_n897
- fun_l0_n898
- fun_l0_n899
- fun_l0_n900
- fun_l0_n901
- fun_l0_n902
- fun_l0_n903
- fun_l0_n904
- fun_l0_n905
- fun_l0_n906
- fun_l0_n907
- fun_l0_n908
- fun_l0_n909
- fun_l0_n910
- fun_l0_n911
- fun_l0_n912
- fun_l0_n913
- fun_l0_n914
- fun_l0_n915
- fun_l0_n916
- fun_l0_n917
- fun_l0_n918
- fun_l0_n919
- fun_l0_n920
- fun_l0_n921
- fun_l0_n922
- fun_l0_n923
- fun_l0_n924
- fun_l0_n925
- fun_l0_n926
- fun_l0_n927
- fun_l0_n928
- fun_l0_n929
- fun_l0_n930
- fun_l0_n931
- fun_l0_n932
- fun_l0_n933
- fun_l0_n934
- fun_l0_n935
- fun_l0_n936
- fun_l0_n937
- fun_l0_n938
- fun_l0_n939
- fun_l0_n940
- fun_l0_n941
- fun_l0_n942
- fun_l0_n943
- fun_l0_n944
- fun_l0_n945
- fun_l0_n946
- fun_l0_n947
- fun_l0_n948
- fun_l0_n949
- fun_l0_n950
- fun_l0_n951
- fun_l0_n952
- fun_l0_n953
- fun_l0_n954
- fun_l0_n955
- fun_l0_n956
- fun_l0_n957
- fun_l0_n958
- fun_l0_n959
- fun_l0_n960
- fun_l0_n961
- fun_l0_n962
- fun_l0_n963
- fun_l0_n964
- fun_l0_n965
- fun_l0_n966
- fun_l0_n967
- fun_l0_n968
- fun_l0_n969
- fun_l0_n970
- fun_l0_n971
- fun_l0_n972
- fun_l0_n973
- fun_l0_n974
- fun_l0_n975
- fun_l0_n976
- fun_l0_n977
- fun_l0_n978
- fun_l0_n979
- fun_l0_n980
- fun_l0_n981
- fun_l0_n982
- fun_l0_n983
- fun_l0_n984
- fun_l0_n985
- fun_l0_n986
- fun_l0_n987
- fun_l0_n988
- fun_l0_n989
- fun_l0_n990
- fun_l0_n991
- fun_l0_n992
- fun_l0_n993
- fun_l0_n994
- fun_l0_n995
- fun_l0_n996
- fun_l0_n997
- fun_l0_n998
- fun_l0_n999
-end
-
-@count
-
-}
diff --git a/bootstraptest/test_yjit_rust_port.rb b/bootstraptest/test_yjit_rust_port.rb
deleted file mode 100644
index e399e0e49e..0000000000
--- a/bootstraptest/test_yjit_rust_port.rb
+++ /dev/null
@@ -1,422 +0,0 @@
-# Simple tests that we know we can pass
-# To keep track of what we got working during the Rust port
-# And avoid breaking/losing functionality
-#
-# Say "Thread" here to dodge WASM CI check. We use ractors here
-# which WASM doesn't support and it only greps for "Thread".
-
-# Test for opt_mod
-assert_equal '2', %q{
- def mod(a, b)
- a % b
- end
-
- mod(7, 5)
- mod(7, 5)
-}
-
-# Test for opt_mult
-assert_equal '12', %q{
- def mult(a, b)
- a * b
- end
-
- mult(6, 2)
- mult(6, 2)
-}
-
-# Test for opt_div
-assert_equal '3', %q{
- def div(a, b)
- a / b
- end
-
- div(6, 2)
- div(6, 2)
-}
-
-assert_equal '5', %q{
- def plus(a, b)
- a + b
- end
-
- plus(3, 2)
-}
-
-assert_equal '1', %q{
- def foo(a, b)
- a - b
- end
-
- foo(3, 2)
-}
-
-assert_equal 'true', %q{
- def foo(a, b)
- a < b
- end
-
- foo(2, 3)
-}
-
-# Bitwise left shift
-assert_equal '4', %q{
- def foo(a, b)
- 1 << 2
- end
-
- foo(1, 2)
-}
-
-assert_equal '-7', %q{
- def foo(a, b)
- -7
- end
-
- foo(1, 2)
-}
-
-# Putstring
-assert_equal 'foo', %q{
- def foo(a, b)
- "foo"
- end
-
- foo(1, 2)
-}
-
-assert_equal '-6', %q{
- def foo(a, b)
- a + -7
- end
-
- foo(1, 2)
-}
-
-assert_equal 'true', %q{
- def foo(a, b)
- a == b
- end
-
- foo(3, 3)
-}
-
-assert_equal 'true', %q{
- def foo(a, b)
- a < b
- end
-
- foo(3, 5)
-}
-
-assert_equal '777', %q{
- def foo(a)
- if a
- 777
- else
- 333
- end
- end
-
- foo(true)
-}
-
-assert_equal '5', %q{
- def foo(a, b)
- while a < b
- a += 1
- end
- a
- end
-
- foo(1, 5)
-}
-
-# opt_aref
-assert_equal '2', %q{
- def foo(a, b)
- a[b]
- end
-
- foo([0, 1, 2], 2)
-}
-
-# Simple function calls with 0, 1, 2 arguments
-assert_equal '-2', %q{
- def bar()
- -2
- end
-
- def foo(a, b)
- bar()
- end
-
- foo(3, 2)
-}
-assert_equal '2', %q{
- def bar(a)
- a
- end
-
- def foo(a, b)
- bar(b)
- end
-
- foo(3, 2)
-}
-assert_equal '1', %q{
- def bar(a, b)
- a - b
- end
-
- def foo(a, b)
- bar(a, b)
- end
-
- foo(3, 2)
-}
-
-# Regression test for assembler bug
-assert_equal '1', %q{
- def check_index(index)
- if 0x40000000 < index
- return -1
- end
- 1
- end
-
- check_index 2
-}
-
-# Setivar test
-assert_equal '2', %q{
- class Klass
- attr_accessor :a
-
- def set()
- @a = 2
- end
-
- def get()
- @a
- end
- end
-
- o = Klass.new
- o.set()
- o.a
-}
-
-# Regression for putobject bug
-assert_equal '1.5', %q{
- def foo(x)
- x
- end
-
- def bar
- foo(1.5)
- end
-
- bar()
-}
-
-# Getivar with an extended ivar table
-assert_equal '3', %q{
- class Foo
- def initialize
- @x1 = 1
- @x2 = 1
- @x3 = 1
- @x4 = 3
- end
-
- def bar
- @x4
- end
- end
-
- f = Foo.new
- f.bar
-}
-
-assert_equal 'true', %q{
- x = [[false, true]]
- for i, j in x
- ;
- end
- j
-}
-
-# Regression for getivar
-assert_equal '[nil]', %q{
- [TrueClass].each do |klass|
- klass.class_eval("def foo = @foo")
- end
-
- [true].map do |instance|
- instance.foo
- end
-}
-
-# Regression for send
-assert_equal 'ok', %q{
- def bar(baz: 2)
- baz
- end
-
- def foo
- bar(1, baz: 123)
- end
-
- begin
- foo
- foo
- rescue ArgumentError => e
- print "ok"
- end
-}
-
-# Array access regression test
-assert_equal '[0, 1, 2, 3, 4, 5]', %q{
- def expandarray_useless_splat
- arr = [0, 1, 2, 3, 4, 5]
- a, * = arr
- end
-
- expandarray_useless_splat
-}
-
-# Make sure we're correctly reading RStruct's as.ary union for embedded RStructs
-assert_equal '3,12', %q{
- pt_struct = Struct.new(:x, :y)
- p = pt_struct.new(3, 12)
- def pt_inspect(pt)
- "#{pt.x},#{pt.y}"
- end
-
- # Make sure pt_inspect is JITted
- 10.times { pt_inspect(p) }
-
- # Make sure it's returning '3,12' instead of e.g. '3,false'
- pt_inspect(p)
-}
-
-assert_equal '2', %q{
- def foo(s)
- s.foo
- end
-
- S = Struct.new(:foo)
- foo(S.new(1))
- foo(S.new(2))
-}
-
-# Try to compile new method while OOM
-assert_equal 'ok', %q{
- def foo
- :ok
- end
-
- RubyVM::YJIT.simulate_oom! if defined?(RubyVM::YJIT)
-
- foo
-}
-
-# test hitting a branch stub when out of memory
-assert_equal 'ok', %q{
- def nimai(jita)
- if jita
- :ng
- else
- :ok
- end
- end
-
- nimai(true)
- nimai(true)
-
- RubyVM::YJIT.simulate_oom! if defined?(RubyVM::YJIT)
-
- nimai(false)
-}
-
-# Ractor.current returns a current ractor
-assert_equal 'Ractor', %q{
- Ractor.current.class
-}
-
-# Ractor.new returns new Ractor
-assert_equal 'Ractor', %q{
- Ractor.new{}.class
-}
-
-# Ractor.allocate is not supported
-assert_equal "[:ok, :ok]", %q{
- rs = []
- begin
- Ractor.allocate
- rescue => e
- rs << :ok if e.message == 'allocator undefined for Ractor'
- end
-
- begin
- Ractor.new{}.dup
- rescue
- rs << :ok if e.message == 'allocator undefined for Ractor'
- end
-
- rs
-}
-
-# A return value of a Ractor block will be a message from the Ractor.
-assert_equal 'ok', %q{
- # join
- r = Ractor.new do
- 'ok'
- end
- r.take
-}
-
-# Passed arguments to Ractor.new will be a block parameter
-# The values are passed with Ractor-communication pass.
-assert_equal 'ok', %q{
- # ping-pong with arg
- r = Ractor.new 'ok' do |msg|
- msg
- end
- r.take
-}
-
-# Pass multiple arguments to Ractor.new
-assert_equal 'ok', %q{
- # ping-pong with two args
- r = Ractor.new 'ping', 'pong' do |msg, msg2|
- [msg, msg2]
- end
- 'ok' if r.take == ['ping', 'pong']
-}
-
-# Ractor#send passes an object with copy to a Ractor
-# and Ractor.receive in the Ractor block can receive the passed value.
-assert_equal 'ok', %q{
- r = Ractor.new do
- msg = Ractor.receive
- end
- r.send 'ok'
- r.take
-}
-
-assert_equal '[1, 2, 3]', %q{
- def foo(arr)
- arr << 1
- arr << 2
- arr << 3
- arr
- end
-
- def bar()
- foo([])
- end
-
- bar()
-}
diff --git a/builtin.c b/builtin.c
deleted file mode 100644
index 1709922fec..0000000000
--- a/builtin.c
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "internal.h"
-#include "vm_core.h"
-#include "iseq.h"
-#include "builtin.h"
-
-#ifdef CROSS_COMPILING
-
-#define INCLUDED_BY_BUILTIN_C 1
-#include "mini_builtin.c"
-
-#else
-
-#include "builtin_binary.inc"
-
-static const unsigned char *
-bin4feature(const struct builtin_binary *bb, const char *feature, size_t *psize)
-{
- *psize = bb->bin_size;
- return strcmp(bb->feature, feature) ? NULL : bb->bin;
-}
-
-static const unsigned char*
-builtin_lookup(const char *feature, size_t *psize)
-{
- static int index = 0;
- const unsigned char *bin = bin4feature(&builtin_binary[index++], feature, psize);
-
- // usually, `builtin_binary` order is loading order at miniruby.
- for (const struct builtin_binary *bb = &builtin_binary[0]; bb->feature &&! bin; bb++) {
- bin = bin4feature(bb++, feature, psize);
- }
- return bin;
-}
-
-void
-rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table)
-{
- // search binary
- size_t size;
- const unsigned char *bin = builtin_lookup(feature_name, &size);
- if (! bin) {
- rb_bug("builtin_lookup: can not find %s\n", feature_name);
- }
-
- // load binary
- rb_vm_t *vm = GET_VM();
- if (vm->builtin_function_table != NULL) rb_bug("vm->builtin_function_table should be NULL.");
- vm->builtin_function_table = table;
- vm->builtin_inline_index = 0;
- const rb_iseq_t *iseq = rb_iseq_ibf_load_bytes((const char *)bin, size);
- ASSUME(iseq); // otherwise an exception should have raised
- vm->builtin_function_table = NULL;
-
- // exec
- rb_iseq_eval(rb_iseq_check(iseq));
-}
-
-#endif
-
-void
-Init_builtin(void)
-{
- // nothing
-}
-
-void
-Init_builtin_features(void)
-{
- rb_load_with_builtin_functions("gem_prelude", NULL);
-}
diff --git a/builtin.h b/builtin.h
deleted file mode 100644
index 85fd1a009a..0000000000
--- a/builtin.h
+++ /dev/null
@@ -1,117 +0,0 @@
-#ifndef BUILTIN_H_INCLUDED
-#define BUILTIN_H_INCLUDED
-
-// invoke
-
-struct rb_builtin_function {
- // for invocation
- const void * const func_ptr;
- const int argc;
-
- // for load
- const int index;
- const char * const name;
-};
-
-#define RB_BUILTIN_FUNCTION(_i, _name, _fname, _arity) {\
- .name = _i < 0 ? NULL : #_name, \
- .func_ptr = (void *)_fname, \
- .argc = _arity, \
- .index = _i, \
-}
-
-void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table);
-
-#ifndef rb_execution_context_t
-typedef struct rb_execution_context_struct rb_execution_context_t;
-#define rb_execution_context_t rb_execution_context_t
-#endif
-
-/* The following code is generated by the following Ruby script:
-
-typedef = proc {|i, args|
- "typedef VALUE (*rb_builtin_arity#{i}_function_type)(rb_execution_context_t *ec, VALUE self#{args});"
-}
-puts typedef[0, ""]
-(1..15).each {|i|
- puts typedef[i, ",\n " + (0...i).map{"VALUE"}.join(", ")]
-}
-16.times{|i|
- puts "static inline void rb_builtin_function_check_arity#{i}(rb_builtin_arity#{i}_function_type f){}"
-}
-*/
-
-typedef VALUE (*rb_builtin_arity0_function_type)(rb_execution_context_t *ec, VALUE self);
-typedef VALUE (*rb_builtin_arity1_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE);
-typedef VALUE (*rb_builtin_arity2_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity3_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity4_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity5_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity6_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity7_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity8_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity9_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity10_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity11_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity12_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity13_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity14_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-typedef VALUE (*rb_builtin_arity15_function_type)(rb_execution_context_t *ec, VALUE self,
- VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
-static inline void rb_builtin_function_check_arity0(rb_builtin_arity0_function_type f){}
-static inline void rb_builtin_function_check_arity1(rb_builtin_arity1_function_type f){}
-static inline void rb_builtin_function_check_arity2(rb_builtin_arity2_function_type f){}
-static inline void rb_builtin_function_check_arity3(rb_builtin_arity3_function_type f){}
-static inline void rb_builtin_function_check_arity4(rb_builtin_arity4_function_type f){}
-static inline void rb_builtin_function_check_arity5(rb_builtin_arity5_function_type f){}
-static inline void rb_builtin_function_check_arity6(rb_builtin_arity6_function_type f){}
-static inline void rb_builtin_function_check_arity7(rb_builtin_arity7_function_type f){}
-static inline void rb_builtin_function_check_arity8(rb_builtin_arity8_function_type f){}
-static inline void rb_builtin_function_check_arity9(rb_builtin_arity9_function_type f){}
-static inline void rb_builtin_function_check_arity10(rb_builtin_arity10_function_type f){}
-static inline void rb_builtin_function_check_arity11(rb_builtin_arity11_function_type f){}
-static inline void rb_builtin_function_check_arity12(rb_builtin_arity12_function_type f){}
-static inline void rb_builtin_function_check_arity13(rb_builtin_arity13_function_type f){}
-static inline void rb_builtin_function_check_arity14(rb_builtin_arity14_function_type f){}
-static inline void rb_builtin_function_check_arity15(rb_builtin_arity15_function_type f){}
-
-PUREFUNC(VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index));
-VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index);
-
-// __builtin_inline!
-
-PUREFUNC(static inline VALUE rb_vm_lvar(rb_execution_context_t *ec, int index));
-
-static inline VALUE
-rb_vm_lvar(rb_execution_context_t *ec, int index)
-{
-#if defined(VM_CORE_H_EC_DEFINED) && VM_CORE_H_EC_DEFINED
- return ec->cfp->ep[index];
-#else
- return rb_vm_lvar_exposed(ec, index);
-#endif
-}
-
-// dump/load
-
-struct builtin_binary {
- const char *feature; // feature name
- const unsigned char *bin; // binary by ISeq#to_binary
- size_t bin_size;
-};
-
-#endif // BUILTIN_H_INCLUDED
diff --git a/ccan/build_assert/build_assert.h b/ccan/build_assert/build_assert.h
index b846849241..a04d1d4709 100644
--- a/ccan/build_assert/build_assert.h
+++ b/ccan/build_assert/build_assert.h
@@ -3,7 +3,7 @@
#define CCAN_BUILD_ASSERT_H
/**
- * CCAN_BUILD_ASSERT - assert a build-time dependency.
+ * BUILD_ASSERT - assert a build-time dependency.
* @cond: the compile-time condition which must be true.
*
* Your compile will fail if the condition isn't true, or can't be evaluated
@@ -15,15 +15,15 @@
* static char *foo_to_char(struct foo *foo)
* {
* // This code needs string to be at start of foo.
- * CCAN_BUILD_ASSERT(offsetof(struct foo, string) == 0);
+ * BUILD_ASSERT(offsetof(struct foo, string) == 0);
* return (char *)foo;
* }
*/
-#define CCAN_BUILD_ASSERT(cond) \
+#define BUILD_ASSERT(cond) \
do { (void) sizeof(char [1 - 2*!(cond)]); } while(0)
/**
- * CCAN_BUILD_ASSERT_OR_ZERO - assert a build-time dependency, as an expression.
+ * BUILD_ASSERT_OR_ZERO - assert a build-time dependency, as an expression.
* @cond: the compile-time condition which must be true.
*
* Your compile will fail if the condition isn't true, or can't be evaluated
@@ -32,9 +32,9 @@
* Example:
* #define foo_to_char(foo) \
* ((char *)(foo) \
- * + CCAN_BUILD_ASSERT_OR_ZERO(offsetof(struct foo, string) == 0))
+ * + BUILD_ASSERT_OR_ZERO(offsetof(struct foo, string) == 0))
*/
-#define CCAN_BUILD_ASSERT_OR_ZERO(cond) \
+#define BUILD_ASSERT_OR_ZERO(cond) \
(sizeof(char [1 - 2*!(cond)]) - 1)
#endif /* CCAN_BUILD_ASSERT_H */
diff --git a/ccan/check_type/check_type.h b/ccan/check_type/check_type.h
index 659e1a5a83..1f77a535e4 100644
--- a/ccan/check_type/check_type.h
+++ b/ccan/check_type/check_type.h
@@ -3,7 +3,7 @@
#define CCAN_CHECK_TYPE_H
/**
- * ccan_check_type - issue a warning or build failure if type is not correct.
+ * check_type - issue a warning or build failure if type is not correct.
* @expr: the expression whose type we should check (not evaluated).
* @type: the exact type we expect the expression to be.
*
@@ -11,7 +11,7 @@
* argument is of the expected type. No type promotion of the expression is
* done: an unsigned int is not the same as an int!
*
- * ccan_check_type() always evaluates to 0.
+ * check_type() always evaluates to 0.
*
* If your compiler does not support typeof, then the best we can do is fail
* to compile if the sizes of the types are unequal (a less complete check).
@@ -19,11 +19,11 @@
* Example:
* // They should always pass a 64-bit value to _set_some_value!
* #define set_some_value(expr) \
- * _set_some_value((ccan_check_type((expr), uint64_t), (expr)))
+ * _set_some_value((check_type((expr), uint64_t), (expr)))
*/
/**
- * ccan_check_types_match - issue a warning or build failure if types are not same.
+ * check_types_match - issue a warning or build failure if types are not same.
* @expr1: the first expression (not evaluated).
* @expr2: the second expression (not evaluated).
*
@@ -31,7 +31,7 @@
* arguments are of identical types. No type promotion of the expressions is
* done: an unsigned int is not the same as an int!
*
- * ccan_check_types_match() always evaluates to 0.
+ * check_types_match() always evaluates to 0.
*
* If your compiler does not support typeof, then the best we can do is fail
* to compile if the sizes of the types are unequal (a less complete check).
@@ -39,25 +39,25 @@
* Example:
* // Do subtraction to get to enclosing type, but make sure that
* // pointer is of correct type for that member.
- * #define ccan_container_of(mbr_ptr, encl_type, mbr) \
- * (ccan_check_types_match((mbr_ptr), &((encl_type *)0)->mbr), \
+ * #define container_of(mbr_ptr, encl_type, mbr) \
+ * (check_types_match((mbr_ptr), &((encl_type *)0)->mbr), \
* ((encl_type *) \
* ((char *)(mbr_ptr) - offsetof(enclosing_type, mbr))))
*/
-#if defined(HAVE_TYPEOF) && HAVE_TYPEOF
-#define ccan_check_type(expr, type) \
+#if HAVE_TYPEOF
+#define check_type(expr, type) \
((typeof(expr) *)0 != (type *)0)
-#define ccan_check_types_match(expr1, expr2) \
+#define check_types_match(expr1, expr2) \
((typeof(expr1) *)0 != (typeof(expr2) *)0)
#else
#include "ccan/build_assert/build_assert.h"
/* Without typeof, we can only test the sizes. */
-#define ccan_check_type(expr, type) \
- CCAN_BUILD_ASSERT_OR_ZERO(sizeof(expr) == sizeof(type))
+#define check_type(expr, type) \
+ BUILD_ASSERT_OR_ZERO(sizeof(expr) == sizeof(type))
-#define ccan_check_types_match(expr1, expr2) \
- CCAN_BUILD_ASSERT_OR_ZERO(sizeof(expr1) == sizeof(expr2))
+#define check_types_match(expr1, expr2) \
+ BUILD_ASSERT_OR_ZERO(sizeof(expr1) == sizeof(expr2))
#endif /* HAVE_TYPEOF */
#endif /* CCAN_CHECK_TYPE_H */
diff --git a/ccan/container_of/container_of.h b/ccan/container_of/container_of.h
index 872bb6ea6e..ae3e1fc81f 100644
--- a/ccan/container_of/container_of.h
+++ b/ccan/container_of/container_of.h
@@ -4,7 +4,7 @@
#include "ccan/check_type/check_type.h"
/**
- * ccan_container_of - get pointer to enclosing structure
+ * container_of - get pointer to enclosing structure
* @member_ptr: pointer to the structure member
* @containing_type: the type this member is within
* @member: the name of this member within the structure.
@@ -24,18 +24,18 @@
*
* static struct info *foo_to_info(struct foo *foo)
* {
- * return ccan_container_of(foo, struct info, my_foo);
+ * return container_of(foo, struct info, my_foo);
* }
*/
-#define ccan_container_of(member_ptr, containing_type, member) \
+#define container_of(member_ptr, containing_type, member) \
((containing_type *) \
((char *)(member_ptr) \
- - ccan_container_off(containing_type, member)) \
- + ccan_check_types_match(*(member_ptr), ((containing_type *)0)->member))
+ - container_off(containing_type, member)) \
+ + check_types_match(*(member_ptr), ((containing_type *)0)->member))
/**
- * ccan_container_of_or_null - get pointer to enclosing structure, or NULL
+ * container_of_or_null - get pointer to enclosing structure, or NULL
* @member_ptr: pointer to the structure member
* @containing_type: the type this member is within
* @member: the name of this member within the structure.
@@ -56,21 +56,21 @@
*
* static struct info *foo_to_info_allowing_null(struct foo *foo)
* {
- * return ccan_container_of_or_null(foo, struct info, my_foo);
+ * return container_of_or_null(foo, struct info, my_foo);
* }
*/
static inline char *container_of_or_null_(void *member_ptr, size_t offset)
{
return member_ptr ? (char *)member_ptr - offset : NULL;
}
-#define ccan_container_of_or_null(member_ptr, containing_type, member) \
+#define container_of_or_null(member_ptr, containing_type, member) \
((containing_type *) \
- ccan_container_of_or_null_(member_ptr, \
- ccan_container_off(containing_type, member)) \
- + ccan_check_types_match(*(member_ptr), ((containing_type *)0)->member))
+ container_of_or_null_(member_ptr, \
+ container_off(containing_type, member)) \
+ + check_types_match(*(member_ptr), ((containing_type *)0)->member))
/**
- * ccan_container_off - get offset to enclosing structure
+ * container_off - get offset to enclosing structure
* @containing_type: the type this member is within
* @member: the name of this member within the structure.
*
@@ -89,15 +89,15 @@ static inline char *container_of_or_null_(void *member_ptr, size_t offset)
*
* static struct info *foo_to_info(struct foo *foo)
* {
- * size_t off = ccan_container_off(struct info, my_foo);
+ * size_t off = container_off(struct info, my_foo);
* return (void *)((char *)foo - off);
* }
*/
-#define ccan_container_off(containing_type, member) \
+#define container_off(containing_type, member) \
offsetof(containing_type, member)
/**
- * ccan_container_of_var - get pointer to enclosing structure using a variable
+ * container_of_var - get pointer to enclosing structure using a variable
* @member_ptr: pointer to the structure member
* @container_var: a pointer of same type as this member's container
* @member: the name of this member within the structure.
@@ -108,21 +108,21 @@ static inline char *container_of_or_null_(void *member_ptr, size_t offset)
* Example:
* static struct info *foo_to_i(struct foo *foo)
* {
- * struct info *i = ccan_container_of_var(foo, i, my_foo);
+ * struct info *i = container_of_var(foo, i, my_foo);
* return i;
* }
*/
-#if defined(HAVE_TYPEOF) && HAVE_TYPEOF
-#define ccan_container_of_var(member_ptr, container_var, member) \
- ccan_container_of(member_ptr, typeof(*container_var), member)
+#if HAVE_TYPEOF
+#define container_of_var(member_ptr, container_var, member) \
+ container_of(member_ptr, typeof(*container_var), member)
#else
-#define ccan_container_of_var(member_ptr, container_var, member) \
+#define container_of_var(member_ptr, container_var, member) \
((void *)((char *)(member_ptr) - \
- ccan_container_off_var(container_var, member)))
+ container_off_var(container_var, member)))
#endif
/**
- * ccan_container_off_var - get offset of a field in enclosing structure
+ * container_off_var - get offset of a field in enclosing structure
* @container_var: a pointer to a container structure
* @member: the name of a member within the structure.
*
@@ -131,11 +131,11 @@ static inline char *container_of_or_null_(void *member_ptr, size_t offset)
* structure memory layout.
*
*/
-#if defined(HAVE_TYPEOF) && HAVE_TYPEOF
-#define ccan_container_off_var(var, member) \
- ccan_container_off(typeof(*var), member)
+#if HAVE_TYPEOF
+#define container_off_var(var, member) \
+ container_off(typeof(*var), member)
#else
-#define ccan_container_off_var(var, member) \
+#define container_off_var(var, member) \
((const char *)&(var)->member - (const char *)(var))
#endif
diff --git a/ccan/list/list.h b/ccan/list/list.h
index 30b2af04e9..ca9f9f1f7f 100644
--- a/ccan/list/list.h
+++ b/ccan/list/list.h
@@ -7,7 +7,7 @@
#include "ccan/check_type/check_type.h"
/**
- * struct ccan_list_node - an entry in a doubly-linked list
+ * struct list_node - an entry in a doubly-linked list
* @next: next entry (self if empty)
* @prev: previous entry (self if empty)
*
@@ -16,209 +16,209 @@
* struct child {
* const char *name;
* // Linked list of all us children.
- * struct ccan_list_node list;
+ * struct list_node list;
* };
*/
-struct ccan_list_node
+struct list_node
{
- struct ccan_list_node *next, *prev;
+ struct list_node *next, *prev;
};
/**
- * struct ccan_list_head - the head of a doubly-linked list
- * @h: the ccan_list_head (containing next and prev pointers)
+ * struct list_head - the head of a doubly-linked list
+ * @h: the list_head (containing next and prev pointers)
*
* This is used as the head of a linked list.
* Example:
* struct parent {
* const char *name;
- * struct ccan_list_head children;
+ * struct list_head children;
* unsigned int num_children;
* };
*/
-struct ccan_list_head
+struct list_head
{
- struct ccan_list_node n;
+ struct list_node n;
};
-#define CCAN_LIST_LOC __FILE__ ":" ccan_stringify(__LINE__)
-#define ccan_list_debug(h, loc) ((void)loc, h)
-#define ccan_list_debug_node(n, loc) ((void)loc, n)
+#define LIST_LOC __FILE__ ":" stringify(__LINE__)
+#define list_debug(h, loc) ((void)loc, h)
+#define list_debug_node(n, loc) ((void)loc, n)
/**
- * CCAN_LIST_HEAD_INIT - initializer for an empty ccan_list_head
+ * LIST_HEAD_INIT - initializer for an empty list_head
* @name: the name of the list.
*
* Explicit initializer for an empty list.
*
* See also:
- * CCAN_LIST_HEAD, ccan_list_head_init()
+ * LIST_HEAD, list_head_init()
*
* Example:
- * static struct ccan_list_head my_list = CCAN_LIST_HEAD_INIT(my_list);
+ * static struct list_head my_list = LIST_HEAD_INIT(my_list);
*/
-#define CCAN_LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
+#define LIST_HEAD_INIT(name) { { &name.n, &name.n } }
/**
- * CCAN_LIST_HEAD - define and initialize an empty ccan_list_head
+ * LIST_HEAD - define and initialize an empty list_head
* @name: the name of the list.
*
- * The CCAN_LIST_HEAD macro defines a ccan_list_head and initializes it to an empty
- * list. It can be prepended by "static" to define a static ccan_list_head.
+ * The LIST_HEAD macro defines a list_head and initializes it to an empty
+ * list. It can be prepended by "static" to define a static list_head.
*
* See also:
- * CCAN_LIST_HEAD_INIT, ccan_list_head_init()
+ * LIST_HEAD_INIT, list_head_init()
*
* Example:
- * static CCAN_LIST_HEAD(my_global_list);
+ * static LIST_HEAD(my_global_list);
*/
-#define CCAN_LIST_HEAD(name) \
- struct ccan_list_head name = CCAN_LIST_HEAD_INIT(name)
+#define LIST_HEAD(name) \
+ struct list_head name = LIST_HEAD_INIT(name)
/**
- * ccan_list_head_init - initialize a ccan_list_head
- * @h: the ccan_list_head to set to the empty list
+ * list_head_init - initialize a list_head
+ * @h: the list_head to set to the empty list
*
* Example:
* ...
* struct parent *parent = malloc(sizeof(*parent));
*
- * ccan_list_head_init(&parent->children);
+ * list_head_init(&parent->children);
* parent->num_children = 0;
*/
-static inline void ccan_list_head_init(struct ccan_list_head *h)
+static inline void list_head_init(struct list_head *h)
{
h->n.next = h->n.prev = &h->n;
}
/**
- * ccan_list_node_init - initialize a ccan_list_node
- * @n: the ccan_list_node to link to itself.
+ * list_node_init - initialize a list_node
+ * @n: the list_node to link to itself.
*
- * You don't need to use this normally! But it lets you ccan_list_del(@n)
+ * You don't need to use this normally! But it lets you list_del(@n)
* safely.
*/
-static inline void ccan_list_node_init(struct ccan_list_node *n)
+static inline void list_node_init(struct list_node *n)
{
n->next = n->prev = n;
}
/**
- * ccan_list_add_after - add an entry after an existing node in a linked list
- * @h: the ccan_list_head to add the node to (for debugging)
- * @p: the existing ccan_list_node to add the node after
- * @n: the new ccan_list_node to add to the list.
+ * list_add_after - add an entry after an existing node in a linked list
+ * @h: the list_head to add the node to (for debugging)
+ * @p: the existing list_node to add the node after
+ * @n: the new list_node to add to the list.
*
- * The existing ccan_list_node must already be a member of the list.
- * The new ccan_list_node does not need to be initialized; it will be overwritten.
+ * The existing list_node must already be a member of the list.
+ * The new list_node does not need to be initialized; it will be overwritten.
*
* Example:
* struct child c1, c2, c3;
- * CCAN_LIST_HEAD(h);
+ * LIST_HEAD(h);
*
- * ccan_list_add_tail(&h, &c1.list);
- * ccan_list_add_tail(&h, &c3.list);
- * ccan_list_add_after(&h, &c1.list, &c2.list);
+ * list_add_tail(&h, &c1.list);
+ * list_add_tail(&h, &c3.list);
+ * list_add_after(&h, &c1.list, &c2.list);
*/
-#define ccan_list_add_after(h, p, n) ccan_list_add_after_(h, p, n, CCAN_LIST_LOC)
-static inline void ccan_list_add_after_(struct ccan_list_head *h,
- struct ccan_list_node *p,
- struct ccan_list_node *n,
+#define list_add_after(h, p, n) list_add_after_(h, p, n, LIST_LOC)
+static inline void list_add_after_(struct list_head *h,
+ struct list_node *p,
+ struct list_node *n,
const char *abortstr)
{
n->next = p->next;
n->prev = p;
p->next->prev = n;
p->next = n;
- (void)ccan_list_debug(h, abortstr);
+ (void)list_debug(h, abortstr);
}
/**
- * ccan_list_add - add an entry at the start of a linked list.
- * @h: the ccan_list_head to add the node to
- * @n: the ccan_list_node to add to the list.
+ * list_add - add an entry at the start of a linked list.
+ * @h: the list_head to add the node to
+ * @n: the list_node to add to the list.
*
- * The ccan_list_node does not need to be initialized; it will be overwritten.
+ * The list_node does not need to be initialized; it will be overwritten.
* Example:
* struct child *child = malloc(sizeof(*child));
*
* child->name = "marvin";
- * ccan_list_add(&parent->children, &child->list);
+ * list_add(&parent->children, &child->list);
* parent->num_children++;
*/
-#define ccan_list_add(h, n) ccan_list_add_(h, n, CCAN_LIST_LOC)
-static inline void ccan_list_add_(struct ccan_list_head *h,
- struct ccan_list_node *n,
+#define list_add(h, n) list_add_(h, n, LIST_LOC)
+static inline void list_add_(struct list_head *h,
+ struct list_node *n,
const char *abortstr)
{
- ccan_list_add_after_(h, &h->n, n, abortstr);
+ list_add_after_(h, &h->n, n, abortstr);
}
/**
- * ccan_list_add_before - add an entry before an existing node in a linked list
- * @h: the ccan_list_head to add the node to (for debugging)
- * @p: the existing ccan_list_node to add the node before
- * @n: the new ccan_list_node to add to the list.
+ * list_add_before - add an entry before an existing node in a linked list
+ * @h: the list_head to add the node to (for debugging)
+ * @p: the existing list_node to add the node before
+ * @n: the new list_node to add to the list.
*
- * The existing ccan_list_node must already be a member of the list.
- * The new ccan_list_node does not need to be initialized; it will be overwritten.
+ * The existing list_node must already be a member of the list.
+ * The new list_node does not need to be initialized; it will be overwritten.
*
* Example:
- * ccan_list_head_init(&h);
- * ccan_list_add_tail(&h, &c1.list);
- * ccan_list_add_tail(&h, &c3.list);
- * ccan_list_add_before(&h, &c3.list, &c2.list);
- */
-#define ccan_list_add_before(h, p, n) ccan_list_add_before_(h, p, n, CCAN_LIST_LOC)
-static inline void ccan_list_add_before_(struct ccan_list_head *h,
- struct ccan_list_node *p,
- struct ccan_list_node *n,
+ * list_head_init(&h);
+ * list_add_tail(&h, &c1.list);
+ * list_add_tail(&h, &c3.list);
+ * list_add_before(&h, &c3.list, &c2.list);
+ */
+#define list_add_before(h, p, n) list_add_before_(h, p, n, LIST_LOC)
+static inline void list_add_before_(struct list_head *h,
+ struct list_node *p,
+ struct list_node *n,
const char *abortstr)
{
n->next = p;
n->prev = p->prev;
p->prev->next = n;
p->prev = n;
- (void)ccan_list_debug(h, abortstr);
+ (void)list_debug(h, abortstr);
}
/**
- * ccan_list_add_tail - add an entry at the end of a linked list.
- * @h: the ccan_list_head to add the node to
- * @n: the ccan_list_node to add to the list.
+ * list_add_tail - add an entry at the end of a linked list.
+ * @h: the list_head to add the node to
+ * @n: the list_node to add to the list.
*
- * The ccan_list_node does not need to be initialized; it will be overwritten.
+ * The list_node does not need to be initialized; it will be overwritten.
* Example:
- * ccan_list_add_tail(&parent->children, &child->list);
+ * list_add_tail(&parent->children, &child->list);
* parent->num_children++;
*/
-#define ccan_list_add_tail(h, n) ccan_list_add_tail_(h, n, CCAN_LIST_LOC)
-static inline void ccan_list_add_tail_(struct ccan_list_head *h,
- struct ccan_list_node *n,
+#define list_add_tail(h, n) list_add_tail_(h, n, LIST_LOC)
+static inline void list_add_tail_(struct list_head *h,
+ struct list_node *n,
const char *abortstr)
{
- ccan_list_add_before_(h, &h->n, n, abortstr);
+ list_add_before_(h, &h->n, n, abortstr);
}
/**
- * ccan_list_empty - is a list empty?
- * @h: the ccan_list_head
+ * list_empty - is a list empty?
+ * @h: the list_head
*
* If the list is empty, returns true.
*
* Example:
- * assert(ccan_list_empty(&parent->children) == (parent->num_children == 0));
+ * assert(list_empty(&parent->children) == (parent->num_children == 0));
*/
-#define ccan_list_empty(h) ccan_list_empty_(h, CCAN_LIST_LOC)
-static inline int ccan_list_empty_(const struct ccan_list_head *h, const char* abortstr)
+#define list_empty(h) list_empty_(h, LIST_LOC)
+static inline int list_empty_(const struct list_head *h, const char* abortstr)
{
- (void)ccan_list_debug(h, abortstr);
+ (void)list_debug(h, abortstr);
return h->n.next == &h->n;
}
/**
- * ccan_list_empty_nodebug - is a list empty (and don't perform debug checks)?
- * @h: the ccan_list_head
+ * list_empty_nodebug - is a list empty (and don't perform debug checks)?
+ * @h: the list_head
*
* If the list is empty, returns true.
* This differs from list_empty() in that if CCAN_LIST_DEBUG is set it
@@ -226,50 +226,35 @@ static inline int ccan_list_empty_(const struct ccan_list_head *h, const char* a
* know what you're doing.
*
* Example:
- * assert(ccan_list_empty_nodebug(&parent->children) == (parent->num_children == 0));
+ * assert(list_empty_nodebug(&parent->children) == (parent->num_children == 0));
*/
#ifndef CCAN_LIST_DEBUG
-#define ccan_list_empty_nodebug(h) ccan_list_empty(h)
+#define list_empty_nodebug(h) list_empty(h)
#else
-static inline int ccan_list_empty_nodebug(const struct ccan_list_head *h)
+static inline int list_empty_nodebug(const struct list_head *h)
{
return h->n.next == &h->n;
}
#endif
/**
- * ccan_list_empty_nocheck - is a list empty?
- * @h: the ccan_list_head
- *
- * If the list is empty, returns true. This doesn't perform any
- * debug check for list consistency, so it can be called without
- * locks, racing with the list being modified. This is ok for
- * checks where an incorrect result is not an issue (optimized
- * bail out path for example).
- */
-static inline bool ccan_list_empty_nocheck(const struct ccan_list_head *h)
-{
- return h->n.next == &h->n;
-}
-
-/**
- * ccan_list_del - delete an entry from an (unknown) linked list.
- * @n: the ccan_list_node to delete from the list.
+ * list_del - delete an entry from an (unknown) linked list.
+ * @n: the list_node to delete from the list.
*
* Note that this leaves @n in an undefined state; it can be added to
* another list, but not deleted again.
*
* See also:
- * ccan_list_del_from(), ccan_list_del_init()
+ * list_del_from(), list_del_init()
*
* Example:
- * ccan_list_del(&child->list);
+ * list_del(&child->list);
* parent->num_children--;
*/
-#define ccan_list_del(n) ccan_list_del_(n, CCAN_LIST_LOC)
-static inline void ccan_list_del_(struct ccan_list_node *n, const char* abortstr)
+#define list_del(n) list_del_(n, LIST_LOC)
+static inline void list_del_(struct list_node *n, const char* abortstr)
{
- (void)ccan_list_debug_node(n, abortstr);
+ (void)list_debug_node(n, abortstr);
n->next->prev = n->prev;
n->prev->next = n->next;
#ifdef CCAN_LIST_DEBUG
@@ -279,80 +264,80 @@ static inline void ccan_list_del_(struct ccan_list_node *n, const char* abortstr
}
/**
- * ccan_list_del_init - delete a node, and reset it so it can be deleted again.
- * @n: the ccan_list_node to be deleted.
+ * list_del_init - delete a node, and reset it so it can be deleted again.
+ * @n: the list_node to be deleted.
*
- * ccan_list_del(@n) or ccan_list_del_init() again after this will be safe,
+ * list_del(@n) or list_del_init() again after this will be safe,
* which can be useful in some cases.
*
* See also:
- * ccan_list_del_from(), ccan_list_del()
+ * list_del_from(), list_del()
*
* Example:
- * ccan_list_del_init(&child->list);
+ * list_del_init(&child->list);
* parent->num_children--;
*/
-#define ccan_list_del_init(n) ccan_list_del_init_(n, CCAN_LIST_LOC)
-static inline void ccan_list_del_init_(struct ccan_list_node *n, const char *abortstr)
+#define list_del_init(n) list_del_init_(n, LIST_LOC)
+static inline void list_del_init_(struct list_node *n, const char *abortstr)
{
- ccan_list_del_(n, abortstr);
- ccan_list_node_init(n);
+ list_del_(n, abortstr);
+ list_node_init(n);
}
/**
- * ccan_list_del_from - delete an entry from a known linked list.
- * @h: the ccan_list_head the node is in.
- * @n: the ccan_list_node to delete from the list.
+ * list_del_from - delete an entry from a known linked list.
+ * @h: the list_head the node is in.
+ * @n: the list_node to delete from the list.
*
* This explicitly indicates which list a node is expected to be in,
* which is better documentation and can catch more bugs.
*
- * See also: ccan_list_del()
+ * See also: list_del()
*
* Example:
- * ccan_list_del_from(&parent->children, &child->list);
+ * list_del_from(&parent->children, &child->list);
* parent->num_children--;
*/
-static inline void ccan_list_del_from(struct ccan_list_head *h, struct ccan_list_node *n)
+static inline void list_del_from(struct list_head *h, struct list_node *n)
{
#ifdef CCAN_LIST_DEBUG
{
/* Thorough check: make sure it was in list! */
- struct ccan_list_node *i;
+ struct list_node *i;
for (i = h->n.next; i != n; i = i->next)
assert(i != &h->n);
}
#endif /* CCAN_LIST_DEBUG */
/* Quick test that catches a surprising number of bugs. */
- assert(!ccan_list_empty(h));
- ccan_list_del(n);
+ assert(!list_empty(h));
+ list_del(n);
}
/**
- * ccan_list_swap - swap out an entry from an (unknown) linked list for a new one.
- * @o: the ccan_list_node to replace from the list.
- * @n: the ccan_list_node to insert in place of the old one.
+ * list_swap - swap out an entry from an (unknown) linked list for a new one.
+ * @o: the list_node to replace from the list.
+ * @n: the list_node to insert in place of the old one.
*
* Note that this leaves @o in an undefined state; it can be added to
* another list, but not deleted/swapped again.
*
* See also:
- * ccan_list_del()
+ * list_del()
*
* Example:
* struct child x1, x2;
- * CCAN_LIST_HEAD(xh);
+ * LIST_HEAD(xh);
*
- * ccan_list_add(&xh, &x1.list);
- * ccan_list_swap(&x1.list, &x2.list);
+ * list_add(&xh, &x1.list);
+ * list_swap(&x1.list, &x2.list);
*/
-#define ccan_list_swap(o, n) ccan_list_swap_(o, n, CCAN_LIST_LOC)
-static inline void ccan_list_swap_(struct ccan_list_node *o,
- struct ccan_list_node *n,
+#define list_swap(o, n) list_swap_(o, n, LIST_LOC)
+static inline void list_swap_(struct list_node *o,
+ struct list_node *n,
const char* abortstr)
{
- (void)ccan_list_debug_node(o, abortstr);
+ (void)list_debug_node(o, abortstr);
*n = *o;
n->next->prev = n;
n->prev->next = n;
@@ -363,135 +348,135 @@ static inline void ccan_list_swap_(struct ccan_list_node *o,
}
/**
- * ccan_list_entry - convert a ccan_list_node back into the structure containing it.
- * @n: the ccan_list_node
+ * list_entry - convert a list_node back into the structure containing it.
+ * @n: the list_node
* @type: the type of the entry
- * @member: the ccan_list_node member of the type
+ * @member: the list_node member of the type
*
* Example:
* // First list entry is children.next; convert back to child.
- * child = ccan_list_entry(parent->children.n.next, struct child, list);
+ * child = list_entry(parent->children.n.next, struct child, list);
*
* See Also:
- * ccan_list_top(), ccan_list_for_each()
+ * list_top(), list_for_each()
*/
-#define ccan_list_entry(n, type, member) ccan_container_of(n, type, member)
+#define list_entry(n, type, member) container_of(n, type, member)
/**
- * ccan_list_top - get the first entry in a list
- * @h: the ccan_list_head
+ * list_top - get the first entry in a list
+ * @h: the list_head
* @type: the type of the entry
- * @member: the ccan_list_node member of the type
+ * @member: the list_node member of the type
*
* If the list is empty, returns NULL.
*
* Example:
* struct child *first;
- * first = ccan_list_top(&parent->children, struct child, list);
+ * first = list_top(&parent->children, struct child, list);
* if (!first)
* printf("Empty list!\n");
*/
-#define ccan_list_top(h, type, member) \
- ((type *)ccan_list_top_((h), ccan_list_off_(type, member)))
+#define list_top(h, type, member) \
+ ((type *)list_top_((h), list_off_(type, member)))
-static inline const void *ccan_list_top_(const struct ccan_list_head *h, size_t off)
+static inline const void *list_top_(const struct list_head *h, size_t off)
{
- if (ccan_list_empty(h))
+ if (list_empty(h))
return NULL;
return (const char *)h->n.next - off;
}
/**
- * ccan_list_pop - remove the first entry in a list
- * @h: the ccan_list_head
+ * list_pop - remove the first entry in a list
+ * @h: the list_head
* @type: the type of the entry
- * @member: the ccan_list_node member of the type
+ * @member: the list_node member of the type
*
* If the list is empty, returns NULL.
*
* Example:
* struct child *one;
- * one = ccan_list_pop(&parent->children, struct child, list);
+ * one = list_pop(&parent->children, struct child, list);
* if (!one)
* printf("Empty list!\n");
*/
-#define ccan_list_pop(h, type, member) \
- ((type *)ccan_list_pop_((h), ccan_list_off_(type, member)))
+#define list_pop(h, type, member) \
+ ((type *)list_pop_((h), list_off_(type, member)))
-static inline const void *ccan_list_pop_(const struct ccan_list_head *h, size_t off)
+static inline const void *list_pop_(const struct list_head *h, size_t off)
{
- struct ccan_list_node *n;
+ struct list_node *n;
- if (ccan_list_empty(h))
+ if (list_empty(h))
return NULL;
n = h->n.next;
- ccan_list_del(n);
+ list_del(n);
return (const char *)n - off;
}
/**
- * ccan_list_tail - get the last entry in a list
- * @h: the ccan_list_head
+ * list_tail - get the last entry in a list
+ * @h: the list_head
* @type: the type of the entry
- * @member: the ccan_list_node member of the type
+ * @member: the list_node member of the type
*
* If the list is empty, returns NULL.
*
* Example:
* struct child *last;
- * last = ccan_list_tail(&parent->children, struct child, list);
+ * last = list_tail(&parent->children, struct child, list);
* if (!last)
* printf("Empty list!\n");
*/
-#define ccan_list_tail(h, type, member) \
- ((type *)ccan_list_tail_((h), ccan_list_off_(type, member)))
+#define list_tail(h, type, member) \
+ ((type *)list_tail_((h), list_off_(type, member)))
-static inline const void *ccan_list_tail_(const struct ccan_list_head *h, size_t off)
+static inline const void *list_tail_(const struct list_head *h, size_t off)
{
- if (ccan_list_empty(h))
+ if (list_empty(h))
return NULL;
return (const char *)h->n.prev - off;
}
/**
- * ccan_list_for_each - iterate through a list.
- * @h: the ccan_list_head (warning: evaluated multiple times!)
- * @i: the structure containing the ccan_list_node
- * @member: the ccan_list_node member of the structure
+ * list_for_each - iterate through a list.
+ * @h: the list_head (warning: evaluated multiple times!)
+ * @i: the structure containing the list_node
+ * @member: the list_node member of the structure
*
* This is a convenient wrapper to iterate @i over the entire list. It's
* a for loop, so you can break and continue as normal.
*
* Example:
- * ccan_list_for_each(&parent->children, child, list)
+ * list_for_each(&parent->children, child, list)
* printf("Name: %s\n", child->name);
*/
-#define ccan_list_for_each(h, i, member) \
- ccan_list_for_each_off(h, i, ccan_list_off_var_(i, member))
+#define list_for_each(h, i, member) \
+ list_for_each_off(h, i, list_off_var_(i, member))
/**
- * ccan_list_for_each_rev - iterate through a list backwards.
- * @h: the ccan_list_head
- * @i: the structure containing the ccan_list_node
- * @member: the ccan_list_node member of the structure
+ * list_for_each_rev - iterate through a list backwards.
+ * @h: the list_head
+ * @i: the structure containing the list_node
+ * @member: the list_node member of the structure
*
* This is a convenient wrapper to iterate @i over the entire list. It's
* a for loop, so you can break and continue as normal.
*
* Example:
- * ccan_list_for_each_rev(&parent->children, child, list)
+ * list_for_each_rev(&parent->children, child, list)
* printf("Name: %s\n", child->name);
*/
-#define ccan_list_for_each_rev(h, i, member) \
- ccan_list_for_each_rev_off(h, i, ccan_list_off_var_(i, member))
+#define list_for_each_rev(h, i, member) \
+ list_for_each_rev_off(h, i, list_off_var_(i, member))
/**
- * ccan_list_for_each_rev_safe - iterate through a list backwards,
+ * list_for_each_rev_safe - iterate through a list backwards,
* maybe during deletion
- * @h: the ccan_list_head
- * @i: the structure containing the ccan_list_node
- * @nxt: the structure containing the ccan_list_node
- * @member: the ccan_list_node member of the structure
+ * @h: the list_head
+ * @i: the structure containing the list_node
+ * @nxt: the structure containing the list_node
+ * @member: the list_node member of the structure
*
* This is a convenient wrapper to iterate @i over the entire list backwards.
* It's a for loop, so you can break and continue as normal. The extra
@@ -500,74 +485,74 @@ static inline const void *ccan_list_tail_(const struct ccan_list_head *h, size_t
*
* Example:
* struct child *next;
- * ccan_list_for_each_rev_safe(&parent->children, child, next, list) {
+ * list_for_each_rev_safe(&parent->children, child, next, list) {
* printf("Name: %s\n", child->name);
* }
*/
-#define ccan_list_for_each_rev_safe(h, i, nxt, member) \
- ccan_list_for_each_rev_safe_off(h, i, nxt, ccan_list_off_var_(i, member))
+#define list_for_each_rev_safe(h, i, nxt, member) \
+ list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member))
/**
- * ccan_list_for_each_safe - iterate through a list, maybe during deletion
- * @h: the ccan_list_head
- * @i: the structure containing the ccan_list_node
- * @nxt: the structure containing the ccan_list_node
- * @member: the ccan_list_node member of the structure
+ * list_for_each_safe - iterate through a list, maybe during deletion
+ * @h: the list_head
+ * @i: the structure containing the list_node
+ * @nxt: the structure containing the list_node
+ * @member: the list_node member of the structure
*
* This is a convenient wrapper to iterate @i over the entire list. It's
* a for loop, so you can break and continue as normal. The extra variable
* @nxt is used to hold the next element, so you can delete @i from the list.
*
* Example:
- * ccan_list_for_each_safe(&parent->children, child, next, list) {
- * ccan_list_del(&child->list);
+ * list_for_each_safe(&parent->children, child, next, list) {
+ * list_del(&child->list);
* parent->num_children--;
* }
*/
-#define ccan_list_for_each_safe(h, i, nxt, member) \
- ccan_list_for_each_safe_off(h, i, nxt, ccan_list_off_var_(i, member))
+#define list_for_each_safe(h, i, nxt, member) \
+ list_for_each_safe_off(h, i, nxt, list_off_var_(i, member))
/**
- * ccan_list_next - get the next entry in a list
- * @h: the ccan_list_head
+ * list_next - get the next entry in a list
+ * @h: the list_head
* @i: a pointer to an entry in the list.
- * @member: the ccan_list_node member of the structure
+ * @member: the list_node member of the structure
*
* If @i was the last entry in the list, returns NULL.
*
* Example:
* struct child *second;
- * second = ccan_list_next(&parent->children, first, list);
+ * second = list_next(&parent->children, first, list);
* if (!second)
* printf("No second child!\n");
*/
-#define ccan_list_next(h, i, member) \
- ((ccan_list_typeof(i))ccan_list_entry_or_null(ccan_list_debug(h, \
- __FILE__ ":" ccan_stringify(__LINE__)), \
+#define list_next(h, i, member) \
+ ((list_typeof(i))list_entry_or_null(list_debug(h, \
+ __FILE__ ":" stringify(__LINE__)), \
(i)->member.next, \
- ccan_list_off_var_((i), member)))
+ list_off_var_((i), member)))
/**
- * ccan_list_prev - get the previous entry in a list
- * @h: the ccan_list_head
+ * list_prev - get the previous entry in a list
+ * @h: the list_head
* @i: a pointer to an entry in the list.
- * @member: the ccan_list_node member of the structure
+ * @member: the list_node member of the structure
*
* If @i was the first entry in the list, returns NULL.
*
* Example:
- * first = ccan_list_prev(&parent->children, second, list);
+ * first = list_prev(&parent->children, second, list);
* if (!first)
* printf("Can't go back to first child?!\n");
*/
-#define ccan_list_prev(h, i, member) \
- ((ccan_list_typeof(i))ccan_list_entry_or_null(ccan_list_debug(h, \
- __FILE__ ":" ccan_stringify(__LINE__)), \
+#define list_prev(h, i, member) \
+ ((list_typeof(i))list_entry_or_null(list_debug(h, \
+ __FILE__ ":" stringify(__LINE__)), \
(i)->member.prev, \
- ccan_list_off_var_((i), member)))
+ list_off_var_((i), member)))
/**
- * ccan_list_append_list - empty one list onto the end of another.
+ * list_append_list - empty one list onto the end of another.
* @to: the list to append into
* @from: the list to empty.
*
@@ -575,20 +560,20 @@ static inline const void *ccan_list_tail_(const struct ccan_list_head *h, size_t
* @to. After this @from will be empty.
*
* Example:
- * struct ccan_list_head adopter;
+ * struct list_head adopter;
*
- * ccan_list_append_list(&adopter, &parent->children);
- * assert(ccan_list_empty(&parent->children));
+ * list_append_list(&adopter, &parent->children);
+ * assert(list_empty(&parent->children));
* parent->num_children = 0;
*/
-#define ccan_list_append_list(t, f) ccan_list_append_list_(t, f, \
- __FILE__ ":" ccan_stringify(__LINE__))
-static inline void ccan_list_append_list_(struct ccan_list_head *to,
- struct ccan_list_head *from,
+#define list_append_list(t, f) list_append_list_(t, f, \
+ __FILE__ ":" stringify(__LINE__))
+static inline void list_append_list_(struct list_head *to,
+ struct list_head *from,
const char *abortstr)
{
- struct ccan_list_node *from_tail = ccan_list_debug(from, abortstr)->n.prev;
- struct ccan_list_node *to_tail = ccan_list_debug(to, abortstr)->n.prev;
+ struct list_node *from_tail = list_debug(from, abortstr)->n.prev;
+ struct list_node *to_tail = list_debug(to, abortstr)->n.prev;
/* Sew in head and entire list. */
to->n.prev = from_tail;
@@ -597,12 +582,12 @@ static inline void ccan_list_append_list_(struct ccan_list_head *to,
from->n.prev = to_tail;
/* Now remove head. */
- ccan_list_del(&from->n);
- ccan_list_head_init(from);
+ list_del(&from->n);
+ list_head_init(from);
}
/**
- * ccan_list_prepend_list - empty one list into the start of another.
+ * list_prepend_list - empty one list into the start of another.
* @to: the list to prepend into
* @from: the list to empty.
*
@@ -610,17 +595,17 @@ static inline void ccan_list_append_list_(struct ccan_list_head *to,
* of @to. After this @from will be empty.
*
* Example:
- * ccan_list_prepend_list(&adopter, &parent->children);
- * assert(ccan_list_empty(&parent->children));
+ * list_prepend_list(&adopter, &parent->children);
+ * assert(list_empty(&parent->children));
* parent->num_children = 0;
*/
-#define ccan_list_prepend_list(t, f) ccan_list_prepend_list_(t, f, CCAN_LIST_LOC)
-static inline void ccan_list_prepend_list_(struct ccan_list_head *to,
- struct ccan_list_head *from,
+#define list_prepend_list(t, f) list_prepend_list_(t, f, LIST_LOC)
+static inline void list_prepend_list_(struct list_head *to,
+ struct list_head *from,
const char *abortstr)
{
- struct ccan_list_node *from_tail = ccan_list_debug(from, abortstr)->n.prev;
- struct ccan_list_node *to_head = ccan_list_debug(to, abortstr)->n.next;
+ struct list_node *from_tail = list_debug(from, abortstr)->n.prev;
+ struct list_node *to_head = list_debug(to, abortstr)->n.next;
/* Sew in head and entire list. */
to->n.next = &from->n;
@@ -629,161 +614,160 @@ static inline void ccan_list_prepend_list_(struct ccan_list_head *to,
from_tail->next = to_head;
/* Now remove head. */
- ccan_list_del(&from->n);
- ccan_list_head_init(from);
+ list_del(&from->n);
+ list_head_init(from);
}
/* internal macros, do not use directly */
-#define ccan_list_for_each_off_dir_(h, i, off, dir) \
- for (i = ccan_list_node_to_off_(ccan_list_debug(h, CCAN_LIST_LOC)->n.dir, \
+#define list_for_each_off_dir_(h, i, off, dir) \
+ for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, \
(off)); \
- ccan_list_node_from_off_((void *)i, (off)) != &(h)->n; \
- i = ccan_list_node_to_off_(ccan_list_node_from_off_((void *)i, (off))->dir, \
+ list_node_from_off_((void *)i, (off)) != &(h)->n; \
+ i = list_node_to_off_(list_node_from_off_((void *)i, (off))->dir, \
(off)))
-#define ccan_list_for_each_safe_off_dir_(h, i, nxt, off, dir) \
- for (i = ccan_list_node_to_off_(ccan_list_debug(h, CCAN_LIST_LOC)->n.dir, \
+#define list_for_each_safe_off_dir_(h, i, nxt, off, dir) \
+ for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, \
(off)), \
- nxt = ccan_list_node_to_off_(ccan_list_node_from_off_(i, (off))->dir, \
+ nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, \
(off)); \
- ccan_list_node_from_off_(i, (off)) != &(h)->n; \
+ list_node_from_off_(i, (off)) != &(h)->n; \
i = nxt, \
- nxt = ccan_list_node_to_off_(ccan_list_node_from_off_(i, (off))->dir, \
+ nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, \
(off)))
/**
- * ccan_list_for_each_off - iterate through a list of memory regions.
- * @h: the ccan_list_head
- * @i: the pointer to a memory region which contains list node data.
+ * list_for_each_off - iterate through a list of memory regions.
+ * @h: the list_head
+ * @i: the pointer to a memory region wich contains list node data.
* @off: offset(relative to @i) at which list node data resides.
*
* This is a low-level wrapper to iterate @i over the entire list, used to
- * implement all other, more high-level, for-each constructs. It's a for loop,
+ * implement all oher, more high-level, for-each constructs. It's a for loop,
* so you can break and continue as normal.
*
* WARNING! Being the low-level macro that it is, this wrapper doesn't know
- * nor care about the type of @i. The only assumption made is that @i points
+ * nor care about the type of @i. The only assumtion made is that @i points
* to a chunk of memory that at some @offset, relative to @i, contains a
- * properly filled `struct ccan_list_node' which in turn contains pointers to
- * memory chunks and it's turtles all the way down. With all that in mind
+ * properly filled `struct node_list' which in turn contains pointers to
+ * memory chunks and it's turtles all the way down. Whith all that in mind
* remember that given the wrong pointer/offset couple this macro will
- * happily churn all you memory until SEGFAULT stops it, in other words
+ * happilly churn all you memory untill SEGFAULT stops it, in other words
* caveat emptor.
*
* It is worth mentioning that one of legitimate use-cases for that wrapper
- * is operation on opaque types with known offset for `struct ccan_list_node'
+ * is operation on opaque types with known offset for `struct list_node'
* member(preferably 0), because it allows you not to disclose the type of
* @i.
*
* Example:
- * ccan_list_for_each_off(&parent->children, child,
+ * list_for_each_off(&parent->children, child,
* offsetof(struct child, list))
* printf("Name: %s\n", child->name);
*/
-#define ccan_list_for_each_off(h, i, off) \
- ccan_list_for_each_off_dir_((h),(i),(off),next)
+#define list_for_each_off(h, i, off) \
+ list_for_each_off_dir_((h),(i),(off),next)
/**
- * ccan_list_for_each_rev_off - iterate through a list of memory regions backwards
- * @h: the ccan_list_head
- * @i: the pointer to a memory region which contains list node data.
+ * list_for_each_rev_off - iterate through a list of memory regions backwards
+ * @h: the list_head
+ * @i: the pointer to a memory region wich contains list node data.
* @off: offset(relative to @i) at which list node data resides.
*
- * See ccan_list_for_each_off for details
+ * See list_for_each_off for details
*/
-#define ccan_list_for_each_rev_off(h, i, off) \
- ccan_list_for_each_off_dir_((h),(i),(off),prev)
+#define list_for_each_rev_off(h, i, off) \
+ list_for_each_off_dir_((h),(i),(off),prev)
/**
- * ccan_list_for_each_safe_off - iterate through a list of memory regions, maybe
+ * list_for_each_safe_off - iterate through a list of memory regions, maybe
* during deletion
- * @h: the ccan_list_head
- * @i: the pointer to a memory region which contains list node data.
- * @nxt: the structure containing the ccan_list_node
+ * @h: the list_head
+ * @i: the pointer to a memory region wich contains list node data.
+ * @nxt: the structure containing the list_node
* @off: offset(relative to @i) at which list node data resides.
*
- * For details see `ccan_list_for_each_off' and `ccan_list_for_each_safe'
+ * For details see `list_for_each_off' and `list_for_each_safe'
* descriptions.
*
* Example:
- * ccan_list_for_each_safe_off(&parent->children, child,
+ * list_for_each_safe_off(&parent->children, child,
* next, offsetof(struct child, list))
* printf("Name: %s\n", child->name);
*/
-#define ccan_list_for_each_safe_off(h, i, nxt, off) \
- ccan_list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
+#define list_for_each_safe_off(h, i, nxt, off) \
+ list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
/**
- * ccan_list_for_each_rev_safe_off - iterate backwards through a list of
+ * list_for_each_rev_safe_off - iterate backwards through a list of
* memory regions, maybe during deletion
- * @h: the ccan_list_head
- * @i: the pointer to a memory region which contains list node data.
- * @nxt: the structure containing the ccan_list_node
+ * @h: the list_head
+ * @i: the pointer to a memory region wich contains list node data.
+ * @nxt: the structure containing the list_node
* @off: offset(relative to @i) at which list node data resides.
*
- * For details see `ccan_list_for_each_rev_off' and `ccan_list_for_each_rev_safe'
+ * For details see `list_for_each_rev_off' and `list_for_each_rev_safe'
* descriptions.
*
* Example:
- * ccan_list_for_each_rev_safe_off(&parent->children, child,
+ * list_for_each_rev_safe_off(&parent->children, child,
* next, offsetof(struct child, list))
* printf("Name: %s\n", child->name);
*/
-#define ccan_list_for_each_rev_safe_off(h, i, nxt, off) \
- ccan_list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
+#define list_for_each_rev_safe_off(h, i, nxt, off) \
+ list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
/* Other -off variants. */
-#define ccan_list_entry_off(n, type, off) \
- ((type *)ccan_list_node_from_off_((n), (off)))
+#define list_entry_off(n, type, off) \
+ ((type *)list_node_from_off_((n), (off)))
-#define ccan_list_head_off(h, type, off) \
- ((type *)ccan_list_head_off((h), (off)))
+#define list_head_off(h, type, off) \
+ ((type *)list_head_off((h), (off)))
-#define ccan_list_tail_off(h, type, off) \
- ((type *)ccan_list_tail_((h), (off)))
+#define list_tail_off(h, type, off) \
+ ((type *)list_tail_((h), (off)))
-#define ccan_list_add_off(h, n, off) \
- ccan_list_add((h), ccan_list_node_from_off_((n), (off)))
+#define list_add_off(h, n, off) \
+ list_add((h), list_node_from_off_((n), (off)))
-#define ccan_list_del_off(n, off) \
- ccan_list_del(ccan_list_node_from_off_((n), (off)))
+#define list_del_off(n, off) \
+ list_del(list_node_from_off_((n), (off)))
-#define ccan_list_del_from_off(h, n, off) \
- ccan_list_del_from(h, ccan_list_node_from_off_((n), (off)))
+#define list_del_from_off(h, n, off) \
+ list_del_from(h, list_node_from_off_((n), (off)))
/* Offset helper functions so we only single-evaluate. */
-static inline void *ccan_list_node_to_off_(struct ccan_list_node *node, size_t off)
+static inline void *list_node_to_off_(struct list_node *node, size_t off)
{
return (void *)((char *)node - off);
}
-static inline struct ccan_list_node *ccan_list_node_from_off_(void *ptr, size_t off)
+static inline struct list_node *list_node_from_off_(void *ptr, size_t off)
{
- return (struct ccan_list_node *)((char *)ptr + off);
+ return (struct list_node *)((char *)ptr + off);
}
-/* Get the offset of the member, but make sure it's a ccan_list_node. */
-#define ccan_list_off_(type, member) \
- (ccan_container_off(type, member) + \
- ccan_check_type(((type *)0)->member, struct ccan_list_node))
+/* Get the offset of the member, but make sure it's a list_node. */
+#define list_off_(type, member) \
+ (container_off(type, member) + \
+ check_type(((type *)0)->member, struct list_node))
-#define ccan_list_off_var_(var, member) \
- (ccan_container_off_var(var, member) + \
- ccan_check_type(var->member, struct ccan_list_node))
+#define list_off_var_(var, member) \
+ (container_off_var(var, member) + \
+ check_type(var->member, struct list_node))
-#if defined(HAVE_TYPEOF) && HAVE_TYPEOF
-#define ccan_list_typeof(var) typeof(var)
+#if HAVE_TYPEOF
+#define list_typeof(var) typeof(var)
#else
-#define ccan_list_typeof(var) void *
+#define list_typeof(var) void *
#endif
/* Returns member, or NULL if at end of list. */
-static inline void *ccan_list_entry_or_null(const struct ccan_list_head *h,
- const struct ccan_list_node *n,
+static inline void *list_entry_or_null(const struct list_head *h,
+ const struct list_node *n,
size_t off)
{
if (n == &h->n)
return NULL;
return (char *)n - off;
}
-
#endif /* CCAN_LIST_H */
diff --git a/ccan/str/str.h b/ccan/str/str.h
index 6d4cf62423..9a9da9cd3f 100644
--- a/ccan/str/str.h
+++ b/ccan/str/str.h
@@ -2,16 +2,15 @@
#ifndef CCAN_STR_H
#define CCAN_STR_H
/**
- * ccan_stringify - Turn expression into a string literal
+ * stringify - Turn expression into a string literal
* @expr: any C expression
*
* Example:
* #define PRINT_COND_IF_FALSE(cond) \
- * ((cond) || printf("%s is false!", ccan_stringify(cond)))
+ * ((cond) || printf("%s is false!", stringify(cond)))
*/
-#define stringify(expr) ccan_stringify_1(expr)
-#define ccan_stringify(expr) ccan_stringify_1(expr)
+#define stringify(expr) stringify_1(expr)
/* Double-indirection required to stringify expansions */
-#define ccan_stringify_1(expr) #expr
+#define stringify_1(expr) #expr
#endif /* CCAN_STR_H */
diff --git a/class.c b/class.c
index 114df2bbd7..364f258333 100644
--- a/class.c
+++ b/class.c
@@ -10,183 +10,116 @@
**********************************************************************/
/*!
- * \addtogroup class
+ * \defgroup class Classes and their hierarchy.
+ * \par Terminology
+ * - class: same as in Ruby.
+ * - singleton class: class for a particular object
+ * - eigenclass: = singleton class
+ * - metaclass: class of a class. metaclass is a kind of singleton class.
+ * - metametaclass: class of a metaclass.
+ * - meta^(n)-class: class of a meta^(n-1)-class.
+ * - attached object: A singleton class knows its unique instance.
+ * The instance is called the attached object for the singleton class.
* \{
*/
-#include "ruby/internal/config.h"
-#include <ctype.h>
-
-#include "constant.h"
-#include "debug_counter.h"
-#include "id_table.h"
#include "internal.h"
-#include "internal/class.h"
-#include "internal/eval.h"
-#include "internal/hash.h"
-#include "internal/object.h"
-#include "internal/string.h"
-#include "internal/variable.h"
#include "ruby/st.h"
+#include "constant.h"
#include "vm_core.h"
+#include "id_table.h"
+#include <ctype.h>
-/* Flags of T_CLASS
- *
- * 2: RCLASS_SUPERCLASSES_INCLUDE_SELF
- * The RCLASS_SUPERCLASSES contains the class as the last element.
- * This means that this class owns the RCLASS_SUPERCLASSES list.
- * if !SHAPE_IN_BASIC_FLAGS
- * 4-19: SHAPE_FLAG_MASK
- * Shape ID for the class.
- * endif
- */
-
-/* Flags of T_ICLASS
- *
- * 0: RICLASS_IS_ORIGIN
- * 3: RICLASS_ORIGIN_SHARED_MTBL
- * The T_ICLASS does not own the method table.
- * if !SHAPE_IN_BASIC_FLAGS
- * 4-19: SHAPE_FLAG_MASK
- * Shape ID. This is set but not used.
- * endif
- */
-
-/* Flags of T_MODULE
- *
- * 1: RMODULE_ALLOCATED_BUT_NOT_INITIALIZED
- * Module has not been initialized.
- * 2: RCLASS_SUPERCLASSES_INCLUDE_SELF
- * See RCLASS_SUPERCLASSES_INCLUDE_SELF in T_CLASS.
- * 3: RMODULE_IS_REFINEMENT
- * Module is used for refinements.
- * if !SHAPE_IN_BASIC_FLAGS
- * 4-19: SHAPE_FLAG_MASK
- * Shape ID for the module.
- * endif
- */
-
-#define METACLASS_OF(k) RBASIC(k)->klass
-#define SET_METACLASS_OF(k, cls) RBASIC_SET_CLASS(k, cls)
-
-RUBY_EXTERN rb_serial_t ruby_vm_global_cvar_state;
+#define id_attached id__attached__
-static rb_subclass_entry_t *
-push_subclass_entry_to_list(VALUE super, VALUE klass)
+void
+rb_class_subclass_add(VALUE super, VALUE klass)
{
rb_subclass_entry_t *entry, *head;
- entry = ZALLOC(rb_subclass_entry_t);
- entry->klass = klass;
+ if (super && super != Qundef) {
+ entry = ALLOC(rb_subclass_entry_t);
+ entry->klass = klass;
+ entry->next = NULL;
- head = RCLASS_SUBCLASSES(super);
- if (!head) {
- head = ZALLOC(rb_subclass_entry_t);
- RCLASS_SUBCLASSES(super) = head;
- }
- entry->next = head->next;
- entry->prev = head;
+ head = RCLASS_EXT(super)->subclasses;
+ if (head) {
+ entry->next = head;
+ RCLASS_EXT(head->klass)->parent_subclasses = &entry->next;
+ }
- if (head->next) {
- head->next->prev = entry;
- }
- head->next = entry;
-
- return entry;
-}
-
-void
-rb_class_subclass_add(VALUE super, VALUE klass)
-{
- if (super && !UNDEF_P(super)) {
- rb_subclass_entry_t *entry = push_subclass_entry_to_list(super, klass);
- RCLASS_SUBCLASS_ENTRY(klass) = entry;
+ RCLASS_EXT(super)->subclasses = entry;
+ RCLASS_EXT(klass)->parent_subclasses = &RCLASS_EXT(super)->subclasses;
}
}
static void
rb_module_add_to_subclasses_list(VALUE module, VALUE iclass)
{
- rb_subclass_entry_t *entry = push_subclass_entry_to_list(module, iclass);
- RCLASS_MODULE_SUBCLASS_ENTRY(iclass) = entry;
-}
+ rb_subclass_entry_t *entry, *head;
-void
-rb_class_remove_subclass_head(VALUE klass)
-{
- rb_subclass_entry_t *head = RCLASS_SUBCLASSES(klass);
+ entry = ALLOC(rb_subclass_entry_t);
+ entry->klass = iclass;
+ entry->next = NULL;
+ head = RCLASS_EXT(module)->subclasses;
if (head) {
- if (head->next) {
- head->next->prev = NULL;
- }
- RCLASS_SUBCLASSES(klass) = NULL;
- xfree(head);
+ entry->next = head;
+ RCLASS_EXT(head->klass)->module_subclasses = &entry->next;
}
+
+ RCLASS_EXT(module)->subclasses = entry;
+ RCLASS_EXT(iclass)->module_subclasses = &RCLASS_EXT(module)->subclasses;
}
void
rb_class_remove_from_super_subclasses(VALUE klass)
{
- rb_subclass_entry_t *entry = RCLASS_SUBCLASS_ENTRY(klass);
-
- if (entry) {
- rb_subclass_entry_t *prev = entry->prev, *next = entry->next;
+ rb_subclass_entry_t *entry;
- if (prev) {
- prev->next = next;
- }
- if (next) {
- next->prev = prev;
- }
+ if (RCLASS_EXT(klass)->parent_subclasses) {
+ entry = *RCLASS_EXT(klass)->parent_subclasses;
- xfree(entry);
+ *RCLASS_EXT(klass)->parent_subclasses = entry->next;
+ if (entry->next) {
+ RCLASS_EXT(entry->next->klass)->parent_subclasses = RCLASS_EXT(klass)->parent_subclasses;
+ }
+ xfree(entry);
}
- RCLASS_SUBCLASS_ENTRY(klass) = NULL;
+ RCLASS_EXT(klass)->parent_subclasses = NULL;
}
void
rb_class_remove_from_module_subclasses(VALUE klass)
{
- rb_subclass_entry_t *entry = RCLASS_MODULE_SUBCLASS_ENTRY(klass);
+ rb_subclass_entry_t *entry;
- if (entry) {
- rb_subclass_entry_t *prev = entry->prev, *next = entry->next;
+ if (RCLASS_EXT(klass)->module_subclasses) {
+ entry = *RCLASS_EXT(klass)->module_subclasses;
+ *RCLASS_EXT(klass)->module_subclasses = entry->next;
- if (prev) {
- prev->next = next;
- }
- if (next) {
- next->prev = prev;
- }
+ if (entry->next) {
+ RCLASS_EXT(entry->next->klass)->module_subclasses = RCLASS_EXT(klass)->module_subclasses;
+ }
- xfree(entry);
+ xfree(entry);
}
- RCLASS_MODULE_SUBCLASS_ENTRY(klass) = NULL;
+ RCLASS_EXT(klass)->module_subclasses = NULL;
}
void
rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE arg)
{
- // RCLASS_SUBCLASSES should always point to our head element which has NULL klass
- rb_subclass_entry_t *cur = RCLASS_SUBCLASSES(klass);
- // if we have a subclasses list, then the head is a placeholder with no valid
- // class. So ignore it and use the next element in the list (if one exists)
- if (cur) {
- RUBY_ASSERT(!cur->klass);
- cur = cur->next;
- }
+ rb_subclass_entry_t *cur = RCLASS_EXT(klass)->subclasses;
/* do not be tempted to simplify this loop into a for loop, the order of
operations is important here if `f` modifies the linked list */
while (cur) {
- VALUE curklass = cur->klass;
- cur = cur->next;
- // do not trigger GC during f, otherwise the cur will become
- // a dangling pointer if the subclass is collected
- f(curklass, arg);
+ VALUE curklass = cur->klass;
+ cur = cur->next;
+ f(curklass, arg);
}
}
@@ -229,27 +162,22 @@ rb_class_detach_module_subclasses(VALUE klass)
static VALUE
class_alloc(VALUE flags, VALUE klass)
{
- size_t alloc_size = sizeof(struct RClass) + sizeof(rb_classext_t);
-
- flags &= T_MASK;
- flags |= FL_PROMOTED1 /* start from age == 2 */;
- if (RGENGC_WB_PROTECTED_CLASS) flags |= FL_WB_PROTECTED;
- NEWOBJ_OF(obj, struct RClass, klass, flags, alloc_size, 0);
-
- memset(RCLASS_EXT(obj), 0, sizeof(rb_classext_t));
-
+ NEWOBJ_OF(obj, struct RClass, klass, (flags & T_MASK) | FL_PROMOTED1 /* start from age == 2 */ | (RGENGC_WB_PROTECTED_CLASS ? FL_WB_PROTECTED : 0));
+ obj->ptr = ZALLOC(rb_classext_t);
/* ZALLOC
+ RCLASS_IV_TBL(obj) = 0;
RCLASS_CONST_TBL(obj) = 0;
RCLASS_M_TBL(obj) = 0;
RCLASS_IV_INDEX_TBL(obj) = 0;
RCLASS_SET_SUPER((VALUE)obj, 0);
- RCLASS_SUBCLASSES(obj) = NULL;
- RCLASS_PARENT_SUBCLASSES(obj) = NULL;
- RCLASS_MODULE_SUBCLASSES(obj) = NULL;
+ RCLASS_EXT(obj)->subclasses = NULL;
+ RCLASS_EXT(obj)->parent_subclasses = NULL;
+ RCLASS_EXT(obj)->module_subclasses = NULL;
*/
RCLASS_SET_ORIGIN((VALUE)obj, (VALUE)obj);
- RB_OBJ_WRITE(obj, &RCLASS_REFINED_CLASS(obj), Qnil);
- RCLASS_SET_ALLOCATOR((VALUE)obj, NULL);
+ RCLASS_SERIAL(obj) = rb_next_class_serial();
+ RCLASS_REFINED_CLASS(obj) = Qnil;
+ RCLASS_EXT(obj)->allocator = 0;
return (VALUE)obj;
}
@@ -277,106 +205,57 @@ rb_class_boot(VALUE super)
RCLASS_SET_SUPER(klass, super);
RCLASS_M_TBL_INIT(klass);
+ OBJ_INFECT(klass, super);
return (VALUE)klass;
}
-static VALUE *
-class_superclasses_including_self(VALUE klass)
-{
- if (FL_TEST_RAW(klass, RCLASS_SUPERCLASSES_INCLUDE_SELF))
- return RCLASS_SUPERCLASSES(klass);
-
- size_t depth = RCLASS_SUPERCLASS_DEPTH(klass);
- VALUE *superclasses = xmalloc(sizeof(VALUE) * (depth + 1));
- if (depth > 0)
- memcpy(superclasses, RCLASS_SUPERCLASSES(klass), sizeof(VALUE) * depth);
- superclasses[depth] = klass;
-
- RCLASS_SUPERCLASSES(klass) = superclasses;
- FL_SET_RAW(klass, RCLASS_SUPERCLASSES_INCLUDE_SELF);
- return superclasses;
-}
-
-void
-rb_class_update_superclasses(VALUE klass)
-{
- VALUE super = RCLASS_SUPER(klass);
-
- if (!RB_TYPE_P(klass, T_CLASS)) return;
- if (UNDEF_P(super)) return;
-
- // If the superclass array is already built
- if (RCLASS_SUPERCLASSES(klass))
- return;
-
- // find the proper superclass
- while (super != Qfalse && !RB_TYPE_P(super, T_CLASS)) {
- super = RCLASS_SUPER(super);
- }
-
- // For BasicObject and uninitialized classes, depth=0 and ary=NULL
- if (super == Qfalse)
- return;
-
- // Sometimes superclasses are set before the full ancestry tree is built
- // This happens during metaclass construction
- if (super != rb_cBasicObject && !RCLASS_SUPERCLASS_DEPTH(super)) {
- rb_class_update_superclasses(super);
-
- // If it is still unset we need to try later
- if (!RCLASS_SUPERCLASS_DEPTH(super))
- return;
- }
-
- RCLASS_SUPERCLASSES(klass) = class_superclasses_including_self(super);
- RCLASS_SUPERCLASS_DEPTH(klass) = RCLASS_SUPERCLASS_DEPTH(super) + 1;
-}
+/*!
+ * Ensures a class can be derived from super.
+ *
+ * \param super a reference to an object.
+ * \exception TypeError if \a super is not a Class or \a super is a singleton class.
+ */
void
rb_check_inheritable(VALUE super)
{
if (!RB_TYPE_P(super, T_CLASS)) {
- rb_raise(rb_eTypeError, "superclass must be an instance of Class (given an instance of %"PRIsVALUE")",
- rb_obj_class(super));
+ rb_raise(rb_eTypeError, "superclass must be a Class (%"PRIsVALUE" given)",
+ rb_obj_class(super));
}
if (RBASIC(super)->flags & FL_SINGLETON) {
- rb_raise(rb_eTypeError, "can't make subclass of singleton class");
+ rb_raise(rb_eTypeError, "can't make subclass of singleton class");
}
if (super == rb_cClass) {
- rb_raise(rb_eTypeError, "can't make subclass of Class");
+ rb_raise(rb_eTypeError, "can't make subclass of Class");
}
}
+
+/*!
+ * Creates a new class.
+ * \param super a class from which the new class derives.
+ * \exception TypeError \a super is not inheritable.
+ * \exception TypeError \a super is the Class class.
+ */
VALUE
rb_class_new(VALUE super)
{
Check_Type(super, T_CLASS);
rb_check_inheritable(super);
- VALUE klass = rb_class_boot(super);
-
- if (super != rb_cObject && super != rb_cBasicObject) {
- RCLASS_EXT(klass)->max_iv_count = RCLASS_EXT(super)->max_iv_count;
- }
-
- return klass;
-}
-
-VALUE
-rb_class_s_alloc(VALUE klass)
-{
- return rb_class_boot(0);
+ return rb_class_boot(super);
}
static void
clone_method(VALUE old_klass, VALUE new_klass, ID mid, const rb_method_entry_t *me)
{
if (me->def->type == VM_METHOD_TYPE_ISEQ) {
- rb_cref_t *new_cref;
- rb_vm_rewrite_cref(me->def->body.iseq.cref, old_klass, new_klass, &new_cref);
- rb_add_method_iseq(new_klass, mid, me->def->body.iseq.iseqptr, new_cref, METHOD_ENTRY_VISI(me));
+ rb_cref_t *new_cref;
+ rb_vm_rewrite_cref(me->def->body.iseq.cref, old_klass, new_klass, &new_cref);
+ rb_add_method_iseq(new_klass, mid, me->def->body.iseq.iseqptr, new_cref, METHOD_ENTRY_VISI(me));
}
else {
- rb_method_entry_set(new_klass, mid, me, METHOD_ENTRY_VISI(me));
+ rb_method_entry_set(new_klass, mid, me, METHOD_ENTRY_VISI(me));
}
}
@@ -420,99 +299,13 @@ static void
class_init_copy_check(VALUE clone, VALUE orig)
{
if (orig == rb_cBasicObject) {
- rb_raise(rb_eTypeError, "can't copy the root class");
+ rb_raise(rb_eTypeError, "can't copy the root class");
}
if (RCLASS_SUPER(clone) != 0 || clone == rb_cBasicObject) {
- rb_raise(rb_eTypeError, "already initialized class");
+ rb_raise(rb_eTypeError, "already initialized class");
}
if (FL_TEST(orig, FL_SINGLETON)) {
- rb_raise(rb_eTypeError, "can't copy singleton class");
- }
-}
-
-struct cvc_table_copy_ctx {
- VALUE clone;
- struct rb_id_table * new_table;
-};
-
-static enum rb_id_table_iterator_result
-cvc_table_copy(ID id, VALUE val, void *data)
-{
- struct cvc_table_copy_ctx *ctx = (struct cvc_table_copy_ctx *)data;
- struct rb_cvar_class_tbl_entry * orig_entry;
- orig_entry = (struct rb_cvar_class_tbl_entry *)val;
-
- struct rb_cvar_class_tbl_entry *ent;
-
- ent = ALLOC(struct rb_cvar_class_tbl_entry);
- ent->class_value = ctx->clone;
- ent->global_cvar_state = orig_entry->global_cvar_state;
- rb_id_table_insert(ctx->new_table, id, (VALUE)ent);
-
- return ID_TABLE_CONTINUE;
-}
-
-static void
-copy_tables(VALUE clone, VALUE orig)
-{
- if (RCLASS_CONST_TBL(clone)) {
- rb_free_const_table(RCLASS_CONST_TBL(clone));
- RCLASS_CONST_TBL(clone) = 0;
- }
- if (RCLASS_CVC_TBL(orig)) {
- struct rb_id_table *rb_cvc_tbl = RCLASS_CVC_TBL(orig);
- struct rb_id_table *rb_cvc_tbl_dup = rb_id_table_create(rb_id_table_size(rb_cvc_tbl));
-
- struct cvc_table_copy_ctx ctx;
- ctx.clone = clone;
- ctx.new_table = rb_cvc_tbl_dup;
- rb_id_table_foreach(rb_cvc_tbl, cvc_table_copy, &ctx);
- RCLASS_CVC_TBL(clone) = rb_cvc_tbl_dup;
- }
- RCLASS_M_TBL(clone) = 0;
- if (!RB_TYPE_P(clone, T_ICLASS)) {
- st_data_t id;
-
- rb_iv_tbl_copy(clone, orig);
- CONST_ID(id, "__tmp_classpath__");
- rb_attr_delete(clone, id);
- CONST_ID(id, "__classpath__");
- rb_attr_delete(clone, id);
- }
- if (RCLASS_CONST_TBL(orig)) {
- struct clone_const_arg arg;
-
- arg.tbl = RCLASS_CONST_TBL(clone) = rb_id_table_create(0);
- arg.klass = clone;
- rb_id_table_foreach(RCLASS_CONST_TBL(orig), clone_const_i, &arg);
- }
-}
-
-static bool ensure_origin(VALUE klass);
-
-/**
- * If this flag is set, that module is allocated but not initialized yet.
- */
-enum {RMODULE_ALLOCATED_BUT_NOT_INITIALIZED = RUBY_FL_USER1};
-
-static inline bool
-RMODULE_UNINITIALIZED(VALUE module)
-{
- return FL_TEST_RAW(module, RMODULE_ALLOCATED_BUT_NOT_INITIALIZED);
-}
-
-void
-rb_module_set_initialized(VALUE mod)
-{
- FL_UNSET_RAW(mod, RMODULE_ALLOCATED_BUT_NOT_INITIALIZED);
- /* no more re-initialization */
-}
-
-void
-rb_module_check_initializable(VALUE mod)
-{
- if (!RMODULE_UNINITIALIZED(mod)) {
- rb_raise(rb_eTypeError, "already initialized module");
+ rb_raise(rb_eTypeError, "can't copy singleton class");
}
}
@@ -520,107 +313,49 @@ rb_module_check_initializable(VALUE mod)
VALUE
rb_mod_init_copy(VALUE clone, VALUE orig)
{
- switch (BUILTIN_TYPE(clone)) {
- case T_CLASS:
- case T_ICLASS:
- class_init_copy_check(clone, orig);
- break;
- case T_MODULE:
- rb_module_check_initializable(clone);
- break;
- default:
- break;
+ if (RB_TYPE_P(clone, T_CLASS)) {
+ class_init_copy_check(clone, orig);
}
if (!OBJ_INIT_COPY(clone, orig)) return clone;
-
- /* cloned flag is refer at constant inline cache
- * see vm_get_const_key_cref() in vm_insnhelper.c
- */
- RCLASS_EXT(clone)->cloned = true;
- RCLASS_EXT(orig)->cloned = true;
-
if (!FL_TEST(CLASS_OF(clone), FL_SINGLETON)) {
- RBASIC_SET_CLASS(clone, rb_singleton_class_clone(orig));
- rb_singleton_class_attached(METACLASS_OF(clone), (VALUE)clone);
+ RBASIC_SET_CLASS(clone, rb_singleton_class_clone(orig));
+ rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);
}
- RCLASS_SET_ALLOCATOR(clone, RCLASS_ALLOCATOR(orig));
- copy_tables(clone, orig);
- if (RCLASS_M_TBL(orig)) {
- struct clone_method_arg arg;
- arg.old_klass = orig;
- arg.new_klass = clone;
- RCLASS_M_TBL_INIT(clone);
- rb_id_table_foreach(RCLASS_M_TBL(orig), clone_method_i, &arg);
+ RCLASS_SET_SUPER(clone, RCLASS_SUPER(orig));
+ RCLASS_EXT(clone)->allocator = RCLASS_EXT(orig)->allocator;
+ if (RCLASS_IV_TBL(clone)) {
+ st_free_table(RCLASS_IV_TBL(clone));
+ RCLASS_IV_TBL(clone) = 0;
+ }
+ if (RCLASS_CONST_TBL(clone)) {
+ rb_free_const_table(RCLASS_CONST_TBL(clone));
+ RCLASS_CONST_TBL(clone) = 0;
}
+ RCLASS_M_TBL(clone) = 0;
+ if (RCLASS_IV_TBL(orig)) {
+ st_data_t id;
- if (RCLASS_ORIGIN(orig) == orig) {
- RCLASS_SET_SUPER(clone, RCLASS_SUPER(orig));
+ RCLASS_IV_TBL(clone) = rb_st_copy(clone, RCLASS_IV_TBL(orig));
+ CONST_ID(id, "__tmp_classpath__");
+ st_delete(RCLASS_IV_TBL(clone), &id, 0);
+ CONST_ID(id, "__classpath__");
+ st_delete(RCLASS_IV_TBL(clone), &id, 0);
+ CONST_ID(id, "__classid__");
+ st_delete(RCLASS_IV_TBL(clone), &id, 0);
}
- else {
- VALUE p = RCLASS_SUPER(orig);
- VALUE orig_origin = RCLASS_ORIGIN(orig);
- VALUE prev_clone_p = clone;
- VALUE origin_stack = rb_ary_hidden_new(2);
- VALUE origin[2];
- VALUE clone_p = 0;
- long origin_len;
- int add_subclass;
- VALUE clone_origin;
-
- ensure_origin(clone);
- clone_origin = RCLASS_ORIGIN(clone);
-
- while (p && p != orig_origin) {
- if (BUILTIN_TYPE(p) != T_ICLASS) {
- rb_bug("non iclass between module/class and origin");
- }
- clone_p = class_alloc(RBASIC(p)->flags, METACLASS_OF(p));
- RCLASS_SET_SUPER(prev_clone_p, clone_p);
- prev_clone_p = clone_p;
- RCLASS_M_TBL(clone_p) = RCLASS_M_TBL(p);
- RCLASS_CONST_TBL(clone_p) = RCLASS_CONST_TBL(p);
- RCLASS_SET_ALLOCATOR(clone_p, RCLASS_ALLOCATOR(p));
- if (RB_TYPE_P(clone, T_CLASS)) {
- RCLASS_SET_INCLUDER(clone_p, clone);
- }
- add_subclass = TRUE;
- if (p != RCLASS_ORIGIN(p)) {
- origin[0] = clone_p;
- origin[1] = RCLASS_ORIGIN(p);
- rb_ary_cat(origin_stack, origin, 2);
- }
- else if ((origin_len = RARRAY_LEN(origin_stack)) > 1 &&
- RARRAY_AREF(origin_stack, origin_len - 1) == p) {
- RCLASS_SET_ORIGIN(RARRAY_AREF(origin_stack, (origin_len -= 2)), clone_p);
- RICLASS_SET_ORIGIN_SHARED_MTBL(clone_p);
- rb_ary_resize(origin_stack, origin_len);
- add_subclass = FALSE;
- }
- if (add_subclass) {
- rb_module_add_to_subclasses_list(METACLASS_OF(p), clone_p);
- }
- p = RCLASS_SUPER(p);
- }
-
- if (p == orig_origin) {
- if (clone_p) {
- RCLASS_SET_SUPER(clone_p, clone_origin);
- RCLASS_SET_SUPER(clone_origin, RCLASS_SUPER(orig_origin));
- }
- copy_tables(clone_origin, orig_origin);
- if (RCLASS_M_TBL(orig_origin)) {
- struct clone_method_arg arg;
- arg.old_klass = orig;
- arg.new_klass = clone;
- RCLASS_M_TBL_INIT(clone_origin);
- rb_id_table_foreach(RCLASS_M_TBL(orig_origin), clone_method_i, &arg);
- }
- }
- else {
- rb_bug("no origin for class that has origin");
- }
-
- rb_class_update_superclasses(clone);
+ if (RCLASS_CONST_TBL(orig)) {
+ struct clone_const_arg arg;
+
+ arg.tbl = RCLASS_CONST_TBL(clone) = rb_id_table_create(0);
+ arg.klass = clone;
+ rb_id_table_foreach(RCLASS_CONST_TBL(orig), clone_const_i, &arg);
+ }
+ if (RCLASS_M_TBL(orig)) {
+ struct clone_method_arg arg;
+ arg.old_klass = orig;
+ arg.new_klass = clone;
+ RCLASS_M_TBL_INIT(clone);
+ rb_id_table_foreach(RCLASS_M_TBL(orig), clone_method_i, &arg);
}
return clone;
@@ -632,72 +367,72 @@ rb_singleton_class_clone(VALUE obj)
return rb_singleton_class_clone_and_attach(obj, Qundef);
}
-// Clone and return the singleton class of `obj` if it has been created and is attached to `obj`.
VALUE
rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)
{
- const VALUE klass = METACLASS_OF(obj);
+ const VALUE klass = RBASIC(obj)->klass;
- // Note that `rb_singleton_class()` can create situations where `klass` is
- // attached to an object other than `obj`. In which case `obj` does not have
- // a material singleton class attached yet and there is no singleton class
- // to clone.
- if (!(FL_TEST(klass, FL_SINGLETON) && RCLASS_ATTACHED_OBJECT(klass) == obj)) {
- // nothing to clone
- return klass;
- }
+ if (!FL_TEST(klass, FL_SINGLETON))
+ return klass;
else {
- /* copy singleton(unnamed) class */
- bool klass_of_clone_is_new;
- VALUE clone = class_alloc(RBASIC(klass)->flags, 0);
-
- if (BUILTIN_TYPE(obj) == T_CLASS) {
- klass_of_clone_is_new = true;
- RBASIC_SET_CLASS(clone, clone);
- }
- else {
- VALUE klass_metaclass_clone = rb_singleton_class_clone(klass);
- // When `METACLASS_OF(klass) == klass_metaclass_clone`, it means the
- // recursive call did not clone `METACLASS_OF(klass)`.
- klass_of_clone_is_new = (METACLASS_OF(klass) != klass_metaclass_clone);
- RBASIC_SET_CLASS(clone, klass_metaclass_clone);
- }
-
- RCLASS_SET_SUPER(clone, RCLASS_SUPER(klass));
- rb_iv_tbl_copy(clone, klass);
- if (RCLASS_CONST_TBL(klass)) {
- struct clone_const_arg arg;
- arg.tbl = RCLASS_CONST_TBL(clone) = rb_id_table_create(0);
- arg.klass = clone;
- rb_id_table_foreach(RCLASS_CONST_TBL(klass), clone_const_i, &arg);
- }
- if (!UNDEF_P(attach)) {
- rb_singleton_class_attached(clone, attach);
- }
- RCLASS_M_TBL_INIT(clone);
- {
- struct clone_method_arg arg;
- arg.old_klass = klass;
- arg.new_klass = clone;
- rb_id_table_foreach(RCLASS_M_TBL(klass), clone_method_i, &arg);
- }
- if (klass_of_clone_is_new) {
- rb_singleton_class_attached(METACLASS_OF(clone), clone);
- }
- FL_SET(clone, FL_SINGLETON);
-
- return clone;
+ /* copy singleton(unnamed) class */
+ VALUE clone = class_alloc(RBASIC(klass)->flags, 0);
+
+ if (BUILTIN_TYPE(obj) == T_CLASS) {
+ RBASIC_SET_CLASS(clone, clone);
+ }
+ else {
+ RBASIC_SET_CLASS(clone, rb_singleton_class_clone(klass));
+ }
+
+ RCLASS_SET_SUPER(clone, RCLASS_SUPER(klass));
+ RCLASS_EXT(clone)->allocator = RCLASS_EXT(klass)->allocator;
+ if (RCLASS_IV_TBL(klass)) {
+ RCLASS_IV_TBL(clone) = rb_st_copy(clone, RCLASS_IV_TBL(klass));
+ }
+ if (RCLASS_CONST_TBL(klass)) {
+ struct clone_const_arg arg;
+ arg.tbl = RCLASS_CONST_TBL(clone) = rb_id_table_create(0);
+ arg.klass = clone;
+ rb_id_table_foreach(RCLASS_CONST_TBL(klass), clone_const_i, &arg);
+ }
+ if (attach != Qundef) {
+ rb_singleton_class_attached(clone, attach);
+ }
+ RCLASS_M_TBL_INIT(clone);
+ {
+ struct clone_method_arg arg;
+ arg.old_klass = klass;
+ arg.new_klass = clone;
+ rb_id_table_foreach(RCLASS_M_TBL(klass), clone_method_i, &arg);
+ }
+ rb_singleton_class_attached(RBASIC(clone)->klass, clone);
+ FL_SET(clone, FL_SINGLETON);
+
+ return clone;
}
}
+/*!
+ * Attach a object to a singleton class.
+ * @pre \a klass is the singleton class of \a obj.
+ */
void
rb_singleton_class_attached(VALUE klass, VALUE obj)
{
if (FL_TEST(klass, FL_SINGLETON)) {
- RCLASS_SET_ATTACHED_OBJECT(klass, obj);
+ if (!RCLASS_IV_TBL(klass)) {
+ RCLASS_IV_TBL(klass) = st_init_numtable();
+ }
+ rb_class_ivar_set(klass, id_attached, obj);
}
}
+
+
+#define METACLASS_OF(k) RBASIC(k)->klass
+#define SET_METACLASS_OF(k, cls) RBASIC_SET_CLASS(k, cls)
+
/*!
* whether k is a meta^(n)-class of Class class
* @retval 1 if \a k is a meta^(n)-class of Class class (n >= 0)
@@ -708,14 +443,14 @@ rb_singleton_class_attached(VALUE klass, VALUE obj)
static int
rb_singleton_class_has_metaclass_p(VALUE sklass)
{
- return RCLASS_ATTACHED_OBJECT(METACLASS_OF(sklass)) == sklass;
+ return rb_attr_get(METACLASS_OF(sklass), id_attached) == sklass;
}
int
rb_singleton_class_internal_p(VALUE sklass)
{
- return (RB_TYPE_P(RCLASS_ATTACHED_OBJECT(sklass), T_CLASS) &&
- !rb_singleton_class_has_metaclass_p(sklass));
+ return (RB_TYPE_P(rb_attr_get(sklass, id_attached), T_CLASS) &&
+ !rb_singleton_class_has_metaclass_p(sklass));
}
/*!
@@ -757,21 +492,20 @@ make_metaclass(VALUE klass)
rb_singleton_class_attached(metaclass, klass);
if (META_CLASS_OF_CLASS_CLASS_P(klass)) {
- SET_METACLASS_OF(klass, metaclass);
- SET_METACLASS_OF(metaclass, metaclass);
+ SET_METACLASS_OF(klass, metaclass);
+ SET_METACLASS_OF(metaclass, metaclass);
}
else {
- VALUE tmp = METACLASS_OF(klass); /* for a meta^(n)-class klass, tmp is meta^(n)-class of Class class */
- SET_METACLASS_OF(klass, metaclass);
- SET_METACLASS_OF(metaclass, ENSURE_EIGENCLASS(tmp));
+ VALUE tmp = METACLASS_OF(klass); /* for a meta^(n)-class klass, tmp is meta^(n)-class of Class class */
+ SET_METACLASS_OF(klass, metaclass);
+ SET_METACLASS_OF(metaclass, ENSURE_EIGENCLASS(tmp));
}
super = RCLASS_SUPER(klass);
while (RB_TYPE_P(super, T_ICLASS)) super = RCLASS_SUPER(super);
RCLASS_SET_SUPER(metaclass, super ? ENSURE_EIGENCLASS(super) : rb_cClass);
- // Full class ancestry may not have been filled until we reach here.
- rb_class_update_superclasses(METACLASS_OF(metaclass));
+ OBJ_INFECT(metaclass, RCLASS_SUPER(metaclass));
return metaclass;
}
@@ -785,7 +519,7 @@ make_metaclass(VALUE klass)
static inline VALUE
make_singleton_class(VALUE obj)
{
- VALUE orig_class = METACLASS_OF(obj);
+ VALUE orig_class = RBASIC(obj)->klass;
VALUE klass = rb_class_boot(orig_class);
FL_SET(klass, FL_SINGLETON);
@@ -803,84 +537,11 @@ boot_defclass(const char *name, VALUE super)
VALUE obj = rb_class_boot(super);
ID id = rb_intern(name);
+ rb_name_class(obj, id);
rb_const_set((rb_cObject ? rb_cObject : obj), id, obj);
- rb_vm_add_root_module(obj);
return obj;
}
-/***********************************************************************
- *
- * Document-class: Refinement
- *
- * Refinement is a class of the +self+ (current context) inside +refine+
- * statement. It allows to import methods from other modules, see #import_methods.
- */
-
-#if 0 /* for RDoc */
-/*
- * Document-method: Refinement#import_methods
- *
- * call-seq:
- * import_methods(module, ...) -> self
- *
- * Imports methods from modules. Unlike Module#include,
- * Refinement#import_methods copies methods and adds them into the refinement,
- * so the refinement is activated in the imported methods.
- *
- * Note that due to method copying, only methods defined in Ruby code can be imported.
- *
- * module StrUtils
- * def indent(level)
- * ' ' * level + self
- * end
- * end
- *
- * module M
- * refine String do
- * import_methods StrUtils
- * end
- * end
- *
- * using M
- * "foo".indent(3)
- * #=> " foo"
- *
- * module M
- * refine String do
- * import_methods Enumerable
- * # Can't import method which is not defined with Ruby code: Enumerable#drop
- * end
- * end
- *
- */
-
-static VALUE
-refinement_import_methods(int argc, VALUE *argv, VALUE refinement)
-{
-}
-# endif
-
-/*!
- *--
- * \private
- * Initializes the world of objects and classes.
- *
- * At first, the function bootstraps the class hierarchy.
- * It initializes the most fundamental classes and their metaclasses.
- * - \c BasicObject
- * - \c Object
- * - \c Module
- * - \c Class
- * After the bootstrap step, the class hierarchy becomes as the following
- * diagram.
- *
- * \image html boottime-classes.png
- *
- * Then, the function defines classes, modules and methods as usual.
- * \ingroup class
- *++
- */
-
void
Init_class_hierarchy(void)
{
@@ -889,25 +550,16 @@ Init_class_hierarchy(void)
rb_gc_register_mark_object(rb_cObject);
/* resolve class name ASAP for order-independence */
- rb_set_class_path_string(rb_cObject, rb_cObject, rb_fstring_lit("Object"));
+ rb_class_name(rb_cObject);
rb_cModule = boot_defclass("Module", rb_cObject);
rb_cClass = boot_defclass("Class", rb_cModule);
- rb_cRefinement = boot_defclass("Refinement", rb_cModule);
-
-#if 0 /* for RDoc */
- // we pretend it to be public, otherwise RDoc will ignore it
- rb_define_method(rb_cRefinement, "import_methods", refinement_import_methods, -1);
-#endif
rb_const_set(rb_cObject, rb_intern_const("BasicObject"), rb_cBasicObject);
RBASIC_SET_CLASS(rb_cClass, rb_cClass);
RBASIC_SET_CLASS(rb_cModule, rb_cClass);
RBASIC_SET_CLASS(rb_cObject, rb_cClass);
- RBASIC_SET_CLASS(rb_cRefinement, rb_cClass);
RBASIC_SET_CLASS(rb_cBasicObject, rb_cClass);
-
- ENSURE_EIGENCLASS(rb_cRefinement);
}
@@ -925,13 +577,24 @@ VALUE
rb_make_metaclass(VALUE obj, VALUE unused)
{
if (BUILTIN_TYPE(obj) == T_CLASS) {
- return make_metaclass(obj);
+ return make_metaclass(obj);
}
else {
- return make_singleton_class(obj);
+ return make_singleton_class(obj);
}
}
+
+/*!
+ * Defines a new class.
+ * \param id ignored
+ * \param super A class from which the new class will derive. NULL means \c Object class.
+ * \return the created class
+ * \throw TypeError if super is not a \c Class object.
+ *
+ * \note the returned class will not be associated with \a id.
+ * You must explicitly set a class name if necessary.
+ */
VALUE
rb_define_class_id(ID id, VALUE super)
{
@@ -939,7 +602,7 @@ rb_define_class_id(ID id, VALUE super)
if (!super) super = rb_cObject;
klass = rb_class_new(super);
- rb_make_metaclass(klass, METACLASS_OF(super));
+ rb_make_metaclass(klass, RBASIC(super)->klass);
return klass;
}
@@ -962,6 +625,23 @@ rb_class_inherited(VALUE super, VALUE klass)
return rb_funcall(super, inherited, 1, klass);
}
+
+
+/*!
+ * Defines a top-level class.
+ * \param name name of the class
+ * \param super a class from which the new class will derive.
+ * \return the created class
+ * \throw TypeError if the constant name \a name is already taken but
+ * the constant is not a \c Class.
+ * \throw TypeError if the class is already defined but the class can not
+ * be reopened because its superclass is not \a super.
+ * \throw ArgumentError if the \a super is NULL.
+ * \post top-level constant named \a name refers the returned class.
+ *
+ * \note if a class named \a name is already defined and its superclass is
+ * \a super, the function just returns the defined class.
+ */
VALUE
rb_define_class(const char *name, VALUE super)
{
@@ -970,106 +650,118 @@ rb_define_class(const char *name, VALUE super)
id = rb_intern(name);
if (rb_const_defined(rb_cObject, id)) {
- klass = rb_const_get(rb_cObject, id);
- if (!RB_TYPE_P(klass, T_CLASS)) {
- rb_raise(rb_eTypeError, "%s is not a class (%"PRIsVALUE")",
- name, rb_obj_class(klass));
- }
- if (rb_class_real(RCLASS_SUPER(klass)) != super) {
- rb_raise(rb_eTypeError, "superclass mismatch for class %s", name);
- }
-
- /* Class may have been defined in Ruby and not pin-rooted */
- rb_vm_add_root_module(klass);
- return klass;
+ klass = rb_const_get(rb_cObject, id);
+ if (!RB_TYPE_P(klass, T_CLASS)) {
+ rb_raise(rb_eTypeError, "%s is not a class (%"PRIsVALUE")",
+ name, rb_obj_class(klass));
+ }
+ if (rb_class_real(RCLASS_SUPER(klass)) != super) {
+ rb_raise(rb_eTypeError, "superclass mismatch for class %s", name);
+ }
+ return klass;
}
if (!super) {
- rb_raise(rb_eArgError, "no super class for `%s'", name);
+ rb_raise(rb_eArgError, "no super class for `%s'", name);
}
klass = rb_define_class_id(id, super);
- rb_vm_add_root_module(klass);
+ rb_vm_add_root_module(id, klass);
+ rb_name_class(klass, id);
rb_const_set(rb_cObject, id, klass);
rb_class_inherited(super, klass);
return klass;
}
+
+/*!
+ * Defines a class under the namespace of \a outer.
+ * \param outer a class which contains the new class.
+ * \param name name of the new class
+ * \param super a class from which the new class will derive.
+ * NULL means \c Object class.
+ * \return the created class
+ * \throw TypeError if the constant name \a name is already taken but
+ * the constant is not a \c Class.
+ * \throw TypeError if the class is already defined but the class can not
+ * be reopened because its superclass is not \a super.
+ * \post top-level constant named \a name refers the returned class.
+ *
+ * \note if a class named \a name is already defined and its superclass is
+ * \a super, the function just returns the defined class.
+ */
VALUE
rb_define_class_under(VALUE outer, const char *name, VALUE super)
{
return rb_define_class_id_under(outer, rb_intern(name), super);
}
+
+/*!
+ * Defines a class under the namespace of \a outer.
+ * \param outer a class which contains the new class.
+ * \param id name of the new class
+ * \param super a class from which the new class will derive.
+ * NULL means \c Object class.
+ * \return the created class
+ * \throw TypeError if the constant name \a name is already taken but
+ * the constant is not a \c Class.
+ * \throw TypeError if the class is already defined but the class can not
+ * be reopened because its superclass is not \a super.
+ * \post top-level constant named \a name refers the returned class.
+ *
+ * \note if a class named \a name is already defined and its superclass is
+ * \a super, the function just returns the defined class.
+ */
VALUE
rb_define_class_id_under(VALUE outer, ID id, VALUE super)
{
VALUE klass;
if (rb_const_defined_at(outer, id)) {
- klass = rb_const_get_at(outer, id);
- if (!RB_TYPE_P(klass, T_CLASS)) {
- rb_raise(rb_eTypeError, "%"PRIsVALUE"::%"PRIsVALUE" is not a class"
- " (%"PRIsVALUE")",
- outer, rb_id2str(id), rb_obj_class(klass));
- }
- if (rb_class_real(RCLASS_SUPER(klass)) != super) {
- rb_raise(rb_eTypeError, "superclass mismatch for class "
- "%"PRIsVALUE"::%"PRIsVALUE""
- " (%"PRIsVALUE" is given but was %"PRIsVALUE")",
- outer, rb_id2str(id), RCLASS_SUPER(klass), super);
- }
- /* Class may have been defined in Ruby and not pin-rooted */
- rb_vm_add_root_module(klass);
-
- return klass;
+ klass = rb_const_get_at(outer, id);
+ if (!RB_TYPE_P(klass, T_CLASS)) {
+ rb_raise(rb_eTypeError, "%"PRIsVALUE"::%"PRIsVALUE" is not a class"
+ " (%"PRIsVALUE")",
+ outer, rb_id2str(id), rb_obj_class(klass));
+ }
+ if (rb_class_real(RCLASS_SUPER(klass)) != super) {
+ rb_raise(rb_eTypeError, "superclass mismatch for class "
+ "%"PRIsVALUE"::%"PRIsVALUE""
+ " (%"PRIsVALUE" is given but was %"PRIsVALUE")",
+ outer, rb_id2str(id), RCLASS_SUPER(klass), super);
+ }
+ return klass;
}
if (!super) {
- rb_raise(rb_eArgError, "no super class for `%"PRIsVALUE"::%"PRIsVALUE"'",
- rb_class_path(outer), rb_id2str(id));
+ rb_raise(rb_eArgError, "no super class for `%"PRIsVALUE"::%"PRIsVALUE"'",
+ rb_class_path(outer), rb_id2str(id));
}
klass = rb_define_class_id(id, super);
rb_set_class_path_string(klass, outer, rb_id2str(id));
rb_const_set(outer, id, klass);
rb_class_inherited(super, klass);
- rb_vm_add_root_module(klass);
+ rb_gc_register_mark_object(klass);
return klass;
}
VALUE
-rb_module_s_alloc(VALUE klass)
-{
- VALUE mod = class_alloc(T_MODULE, klass);
- RCLASS_M_TBL_INIT(mod);
- FL_SET(mod, RMODULE_ALLOCATED_BUT_NOT_INITIALIZED);
- return mod;
-}
-
-static inline VALUE
-module_new(VALUE klass)
+rb_module_new(void)
{
- VALUE mdl = class_alloc(T_MODULE, klass);
+ VALUE mdl = class_alloc(T_MODULE, rb_cModule);
RCLASS_M_TBL_INIT(mdl);
return (VALUE)mdl;
}
VALUE
-rb_module_new(void)
+rb_define_module_id(ID id)
{
- return module_new(rb_cModule);
-}
+ VALUE mdl;
-VALUE
-rb_refinement_new(void)
-{
- return module_new(rb_cRefinement);
-}
+ mdl = rb_module_new();
+ rb_name_class(mdl, id);
-// Kept for compatibility. Use rb_module_new() instead.
-VALUE
-rb_define_module_id(ID id)
-{
- return rb_module_new();
+ return mdl;
}
VALUE
@@ -1080,17 +772,15 @@ rb_define_module(const char *name)
id = rb_intern(name);
if (rb_const_defined(rb_cObject, id)) {
- module = rb_const_get(rb_cObject, id);
- if (!RB_TYPE_P(module, T_MODULE)) {
- rb_raise(rb_eTypeError, "%s is not a module (%"PRIsVALUE")",
- name, rb_obj_class(module));
- }
- /* Module may have been defined in Ruby and not pin-rooted */
- rb_vm_add_root_module(module);
- return module;
- }
- module = rb_module_new();
- rb_vm_add_root_module(module);
+ module = rb_const_get(rb_cObject, id);
+ if (!RB_TYPE_P(module, T_MODULE)) {
+ rb_raise(rb_eTypeError, "%s is not a module (%"PRIsVALUE")",
+ name, rb_obj_class(module));
+ }
+ return module;
+ }
+ module = rb_define_module_id(id);
+ rb_vm_add_root_module(id, module);
rb_const_set(rb_cObject, id, module);
return module;
@@ -1108,17 +798,15 @@ rb_define_module_id_under(VALUE outer, ID id)
VALUE module;
if (rb_const_defined_at(outer, id)) {
- module = rb_const_get_at(outer, id);
- if (!RB_TYPE_P(module, T_MODULE)) {
- rb_raise(rb_eTypeError, "%"PRIsVALUE"::%"PRIsVALUE" is not a module"
- " (%"PRIsVALUE")",
- outer, rb_id2str(id), rb_obj_class(module));
- }
- /* Module may have been defined in Ruby and not pin-rooted */
- rb_gc_register_mark_object(module);
- return module;
- }
- module = rb_module_new();
+ module = rb_const_get_at(outer, id);
+ if (!RB_TYPE_P(module, T_MODULE)) {
+ rb_raise(rb_eTypeError, "%"PRIsVALUE"::%"PRIsVALUE" is not a module"
+ " (%"PRIsVALUE")",
+ outer, rb_id2str(id), rb_obj_class(module));
+ }
+ return module;
+ }
+ module = rb_define_module_id(id);
rb_const_set(outer, id, module);
rb_set_class_path_string(module, outer, rb_id2str(id));
rb_gc_register_mark_object(module);
@@ -1131,22 +819,30 @@ rb_include_class_new(VALUE module, VALUE super)
{
VALUE klass = class_alloc(T_ICLASS, rb_cClass);
- RCLASS_M_TBL(klass) = RCLASS_M_TBL(module);
-
- RCLASS_SET_ORIGIN(klass, klass);
if (BUILTIN_TYPE(module) == T_ICLASS) {
- module = METACLASS_OF(module);
+ module = RBASIC(module)->klass;
+ }
+ if (!RCLASS_IV_TBL(module)) {
+ RCLASS_IV_TBL(module) = st_init_numtable();
}
- RUBY_ASSERT(!RB_TYPE_P(module, T_ICLASS));
if (!RCLASS_CONST_TBL(module)) {
- RCLASS_CONST_TBL(module) = rb_id_table_create(0);
+ RCLASS_CONST_TBL(module) = rb_id_table_create(0);
}
-
- RCLASS_CVC_TBL(klass) = RCLASS_CVC_TBL(module);
+ RCLASS_IV_TBL(klass) = RCLASS_IV_TBL(module);
RCLASS_CONST_TBL(klass) = RCLASS_CONST_TBL(module);
+ RCLASS_M_TBL(OBJ_WB_UNPROTECT(klass)) =
+ RCLASS_M_TBL(OBJ_WB_UNPROTECT(RCLASS_ORIGIN(module))); /* TODO: unprotected? */
+
RCLASS_SET_SUPER(klass, super);
- RBASIC_SET_CLASS(klass, module);
+ if (RB_TYPE_P(module, T_ICLASS)) {
+ RBASIC_SET_CLASS(klass, RBASIC(module)->klass);
+ }
+ else {
+ RBASIC_SET_CLASS(klass, module);
+ }
+ OBJ_INFECT(klass, module);
+ OBJ_INFECT(klass, super);
return (VALUE)klass;
}
@@ -1156,12 +852,12 @@ static int include_modules_at(const VALUE klass, VALUE c, VALUE module, int sear
static void
ensure_includable(VALUE klass, VALUE module)
{
- rb_class_modify_check(klass);
+ rb_frozen_class_p(klass);
Check_Type(module, T_MODULE);
- rb_module_set_initialized(module);
if (!NIL_P(rb_refinement_module_get_refined_class(module))) {
- rb_raise(rb_eArgError, "refinement module is not allowed");
+ rb_raise(rb_eArgError, "refinement module is not allowed");
}
+ OBJ_INFECT(klass, module);
}
void
@@ -1173,40 +869,7 @@ rb_include_module(VALUE klass, VALUE module)
changed = include_modules_at(klass, RCLASS_ORIGIN(klass), module, TRUE);
if (changed < 0)
- rb_raise(rb_eArgError, "cyclic include detected");
-
- if (RB_TYPE_P(klass, T_MODULE)) {
- rb_subclass_entry_t *iclass = RCLASS_SUBCLASSES(klass);
- // skip the placeholder subclass entry at the head of the list
- if (iclass) {
- RUBY_ASSERT(!iclass->klass);
- iclass = iclass->next;
- }
-
- int do_include = 1;
- while (iclass) {
- VALUE check_class = iclass->klass;
- /* During lazy sweeping, iclass->klass could be a dead object that
- * has not yet been swept. */
- if (!rb_objspace_garbage_object_p(check_class)) {
- while (check_class) {
- RUBY_ASSERT(!rb_objspace_garbage_object_p(check_class));
-
- if (RB_TYPE_P(check_class, T_ICLASS) &&
- (METACLASS_OF(check_class) == module)) {
- do_include = 0;
- }
- check_class = RCLASS_SUPER(check_class);
- }
-
- if (do_include) {
- include_modules_at(iclass->klass, RCLASS_ORIGIN(iclass->klass), module, TRUE);
- }
- }
-
- iclass = iclass->next;
- }
- }
+ rb_raise(rb_eArgError, "cyclic include detected");
}
static enum rb_id_table_iterator_result
@@ -1216,256 +879,120 @@ add_refined_method_entry_i(ID key, VALUE value, void *data)
return ID_TABLE_CONTINUE;
}
-static enum rb_id_table_iterator_result
-clear_module_cache_i(ID id, VALUE val, void *data)
-{
- VALUE klass = (VALUE)data;
- rb_clear_method_cache(klass, id);
- return ID_TABLE_CONTINUE;
-}
-
-static bool
-module_in_super_chain(const VALUE klass, VALUE module)
-{
- struct rb_id_table *const klass_m_tbl = RCLASS_M_TBL(RCLASS_ORIGIN(klass));
- if (klass_m_tbl) {
- while (module) {
- if (klass_m_tbl == RCLASS_M_TBL(module))
- return true;
- module = RCLASS_SUPER(module);
- }
- }
- return false;
-}
-
-// For each ID key in the class constant table, we're going to clear the VM's
-// inline constant caches associated with it.
-static enum rb_id_table_iterator_result
-clear_constant_cache_i(ID id, VALUE value, void *data)
-{
- rb_clear_constant_cache_for_id(id);
- return ID_TABLE_CONTINUE;
-}
-
static int
-do_include_modules_at(const VALUE klass, VALUE c, VALUE module, int search_super, bool check_cyclic)
+include_modules_at(const VALUE klass, VALUE c, VALUE module, int search_super)
{
- VALUE p, iclass, origin_stack = 0;
- int method_changed = 0, add_subclass;
- long origin_len;
- VALUE klass_origin = RCLASS_ORIGIN(klass);
- VALUE original_klass = klass;
-
- if (check_cyclic && module_in_super_chain(klass, module))
- return -1;
+ VALUE p, iclass;
+ int method_changed = 0, constant_changed = 0;
+ struct rb_id_table *const klass_m_tbl = RCLASS_M_TBL(RCLASS_ORIGIN(klass));
while (module) {
- int c_seen = FALSE;
- int superclass_seen = FALSE;
- struct rb_id_table *tbl;
-
- if (klass == c) {
- c_seen = TRUE;
- }
- if (klass_origin != c || search_super) {
- /* ignore if the module included already in superclasses for include,
- * ignore if the module included before origin class for prepend
- */
- for (p = RCLASS_SUPER(klass); p; p = RCLASS_SUPER(p)) {
- int type = BUILTIN_TYPE(p);
- if (klass_origin == p && !search_super)
- break;
- if (c == p)
- c_seen = TRUE;
- if (type == T_ICLASS) {
- if (RCLASS_M_TBL(p) == RCLASS_M_TBL(module)) {
- if (!superclass_seen && c_seen) {
- c = p; /* move insertion point */
- }
- goto skip;
- }
- }
- else if (type == T_CLASS) {
- superclass_seen = TRUE;
- }
- }
- }
-
- VALUE super_class = RCLASS_SUPER(c);
-
- // invalidate inline method cache
- RB_DEBUG_COUNTER_INC(cvar_include_invalidate);
- ruby_vm_global_cvar_state++;
- tbl = RCLASS_M_TBL(module);
- if (tbl && rb_id_table_size(tbl)) {
- if (search_super) { // include
- if (super_class && !RB_TYPE_P(super_class, T_MODULE)) {
- rb_id_table_foreach(tbl, clear_module_cache_i, (void *)super_class);
- }
- }
- else { // prepend
- if (!RB_TYPE_P(original_klass, T_MODULE)) {
- rb_id_table_foreach(tbl, clear_module_cache_i, (void *)original_klass);
- }
- }
- method_changed = 1;
- }
-
- // setup T_ICLASS for the include/prepend module
- iclass = rb_include_class_new(module, super_class);
- c = RCLASS_SET_SUPER(c, iclass);
- RCLASS_SET_INCLUDER(iclass, klass);
- add_subclass = TRUE;
- if (module != RCLASS_ORIGIN(module)) {
- if (!origin_stack) origin_stack = rb_ary_hidden_new(2);
- VALUE origin[2] = {iclass, RCLASS_ORIGIN(module)};
- rb_ary_cat(origin_stack, origin, 2);
- }
- else if (origin_stack && (origin_len = RARRAY_LEN(origin_stack)) > 1 &&
- RARRAY_AREF(origin_stack, origin_len - 1) == module) {
- RCLASS_SET_ORIGIN(RARRAY_AREF(origin_stack, (origin_len -= 2)), iclass);
- RICLASS_SET_ORIGIN_SHARED_MTBL(iclass);
- rb_ary_resize(origin_stack, origin_len);
- add_subclass = FALSE;
- }
-
- if (add_subclass) {
- VALUE m = module;
- if (BUILTIN_TYPE(m) == T_ICLASS) m = METACLASS_OF(m);
- rb_module_add_to_subclasses_list(m, iclass);
- }
-
- if (BUILTIN_TYPE(klass) == T_MODULE && FL_TEST(klass, RMODULE_IS_REFINEMENT)) {
- VALUE refined_class =
- rb_refinement_module_get_refined_class(klass);
-
- rb_id_table_foreach(RCLASS_M_TBL(module), add_refined_method_entry_i, (void *)refined_class);
- RUBY_ASSERT(BUILTIN_TYPE(c) == T_MODULE);
- }
-
- tbl = RCLASS_CONST_TBL(module);
- if (tbl && rb_id_table_size(tbl))
- rb_id_table_foreach(tbl, clear_constant_cache_i, NULL);
+ int superclass_seen = FALSE;
+ struct rb_id_table *tbl;
+
+ if (RCLASS_ORIGIN(module) != module)
+ goto skip;
+ if (klass_m_tbl && klass_m_tbl == RCLASS_M_TBL(module))
+ return -1;
+ /* ignore if the module included already in superclasses */
+ for (p = RCLASS_SUPER(klass); p; p = RCLASS_SUPER(p)) {
+ int type = BUILTIN_TYPE(p);
+ if (type == T_ICLASS) {
+ if (RCLASS_M_TBL(p) == RCLASS_M_TBL(module)) {
+ if (!superclass_seen) {
+ c = p; /* move insertion point */
+ }
+ goto skip;
+ }
+ }
+ else if (type == T_CLASS) {
+ if (!search_super) break;
+ superclass_seen = TRUE;
+ }
+ }
+ iclass = rb_include_class_new(module, RCLASS_SUPER(c));
+ c = RCLASS_SET_SUPER(c, iclass);
+
+ {
+ VALUE m = module;
+ if (BUILTIN_TYPE(m) == T_ICLASS) m = RBASIC(m)->klass;
+ rb_module_add_to_subclasses_list(m, iclass);
+ }
+
+ if (FL_TEST(klass, RMODULE_IS_REFINEMENT)) {
+ VALUE refined_class =
+ rb_refinement_module_get_refined_class(klass);
+
+ rb_id_table_foreach(RMODULE_M_TBL(module), add_refined_method_entry_i, (void *)refined_class);
+ FL_SET(c, RMODULE_INCLUDED_INTO_REFINEMENT);
+ }
+
+ tbl = RMODULE_M_TBL(module);
+ if (tbl && rb_id_table_size(tbl)) method_changed = 1;
+
+ tbl = RMODULE_CONST_TBL(module);
+ if (tbl && rb_id_table_size(tbl)) constant_changed = 1;
skip:
- module = RCLASS_SUPER(module);
+ module = RCLASS_SUPER(module);
}
- return method_changed;
-}
+ if (method_changed) rb_clear_method_cache_by_class(klass);
+ if (constant_changed) rb_clear_constant_cache();
-static int
-include_modules_at(const VALUE klass, VALUE c, VALUE module, int search_super)
-{
- return do_include_modules_at(klass, c, module, search_super, true);
+ return method_changed;
}
static enum rb_id_table_iterator_result
move_refined_method(ID key, VALUE value, void *data)
{
- rb_method_entry_t *me = (rb_method_entry_t *)value;
+ rb_method_entry_t *me = (rb_method_entry_t *) value;
+ VALUE klass = (VALUE)data;
+ struct rb_id_table *tbl = RCLASS_M_TBL(klass);
if (me->def->type == VM_METHOD_TYPE_REFINED) {
- VALUE klass = (VALUE)data;
- struct rb_id_table *tbl = RCLASS_M_TBL(klass);
-
- if (me->def->body.refined.orig_me) {
- const rb_method_entry_t *orig_me = me->def->body.refined.orig_me, *new_me;
- RB_OBJ_WRITE(me, &me->def->body.refined.orig_me, NULL);
- new_me = rb_method_entry_clone(me);
- rb_method_table_insert(klass, tbl, key, new_me);
- rb_method_entry_copy(me, orig_me);
- return ID_TABLE_CONTINUE;
- }
- else {
- rb_method_table_insert(klass, tbl, key, me);
- return ID_TABLE_DELETE;
- }
+ if (me->def->body.refined.orig_me) {
+ const rb_method_entry_t *orig_me = me->def->body.refined.orig_me, *new_me;
+ RB_OBJ_WRITE(me, &me->def->body.refined.orig_me, NULL);
+ new_me = rb_method_entry_clone(me);
+ rb_id_table_insert(tbl, key, (VALUE)new_me);
+ RB_OBJ_WRITTEN(klass, Qundef, new_me);
+ rb_method_entry_copy(me, orig_me);
+ return ID_TABLE_CONTINUE;
+ }
+ else {
+ rb_id_table_insert(tbl, key, (VALUE)me);
+ return ID_TABLE_DELETE;
+ }
}
else {
- return ID_TABLE_CONTINUE;
+ return ID_TABLE_CONTINUE;
}
}
-static enum rb_id_table_iterator_result
-cache_clear_refined_method(ID key, VALUE value, void *data)
-{
- rb_method_entry_t *me = (rb_method_entry_t *) value;
-
- if (me->def->type == VM_METHOD_TYPE_REFINED && me->def->body.refined.orig_me) {
- VALUE klass = (VALUE)data;
- rb_clear_method_cache(klass, me->called_id);
- }
- // Refined method entries without an orig_me is going to stay in the method
- // table of klass, like before the move, so no need to clear the cache.
-
- return ID_TABLE_CONTINUE;
-}
-
-static bool
-ensure_origin(VALUE klass)
-{
- VALUE origin = RCLASS_ORIGIN(klass);
- if (origin == klass) {
- origin = class_alloc(T_ICLASS, klass);
- RCLASS_SET_SUPER(origin, RCLASS_SUPER(klass));
- RCLASS_SET_SUPER(klass, origin);
- RCLASS_SET_ORIGIN(klass, origin);
- RCLASS_M_TBL(origin) = RCLASS_M_TBL(klass);
- RCLASS_M_TBL_INIT(klass);
- rb_id_table_foreach(RCLASS_M_TBL(origin), cache_clear_refined_method, (void *)klass);
- rb_id_table_foreach(RCLASS_M_TBL(origin), move_refined_method, (void *)klass);
- return true;
- }
- return false;
-}
-
void
rb_prepend_module(VALUE klass, VALUE module)
{
- int changed;
- bool klass_had_no_origin;
+ VALUE origin;
+ int changed = 0;
ensure_includable(klass, module);
- if (module_in_super_chain(klass, module))
- rb_raise(rb_eArgError, "cyclic prepend detected");
- klass_had_no_origin = ensure_origin(klass);
- changed = do_include_modules_at(klass, klass, module, FALSE, false);
- RUBY_ASSERT(changed >= 0); // already checked for cyclic prepend above
+ origin = RCLASS_ORIGIN(klass);
+ if (origin == klass) {
+ origin = class_alloc(T_ICLASS, klass);
+ OBJ_WB_UNPROTECT(origin); /* TODO: conservative shading. Need more survey. */
+ RCLASS_SET_SUPER(origin, RCLASS_SUPER(klass));
+ RCLASS_SET_SUPER(klass, origin);
+ RCLASS_SET_ORIGIN(klass, origin);
+ RCLASS_M_TBL(origin) = RCLASS_M_TBL(klass);
+ RCLASS_M_TBL_INIT(klass);
+ rb_id_table_foreach(RCLASS_M_TBL(origin), move_refined_method, (void *)klass);
+ }
+ changed = include_modules_at(klass, klass, module, FALSE);
+ if (changed < 0)
+ rb_raise(rb_eArgError, "cyclic prepend detected");
if (changed) {
- rb_vm_check_redefinition_by_prepend(klass);
- }
- if (RB_TYPE_P(klass, T_MODULE)) {
- rb_subclass_entry_t *iclass = RCLASS_SUBCLASSES(klass);
- // skip the placeholder subclass entry at the head of the list if it exists
- if (iclass) {
- RUBY_ASSERT(!iclass->klass);
- iclass = iclass->next;
- }
-
- VALUE klass_origin = RCLASS_ORIGIN(klass);
- struct rb_id_table *klass_m_tbl = RCLASS_M_TBL(klass);
- struct rb_id_table *klass_origin_m_tbl = RCLASS_M_TBL(klass_origin);
- while (iclass) {
- /* During lazy sweeping, iclass->klass could be a dead object that
- * has not yet been swept. */
- if (!rb_objspace_garbage_object_p(iclass->klass)) {
- const VALUE subclass = iclass->klass;
- if (klass_had_no_origin && klass_origin_m_tbl == RCLASS_M_TBL(subclass)) {
- // backfill an origin iclass to handle refinements and future prepends
- rb_id_table_foreach(RCLASS_M_TBL(subclass), clear_module_cache_i, (void *)subclass);
- RCLASS_M_TBL(subclass) = klass_m_tbl;
- VALUE origin = rb_include_class_new(klass_origin, RCLASS_SUPER(subclass));
- RCLASS_SET_SUPER(subclass, origin);
- RCLASS_SET_INCLUDER(origin, RCLASS_INCLUDER(subclass));
- RCLASS_SET_ORIGIN(subclass, origin);
- RICLASS_SET_ORIGIN_SHARED_MTBL(origin);
- }
- include_modules_at(subclass, subclass, module, FALSE);
- }
-
- iclass = iclass->next;
- }
+ rb_vm_check_redefinition_by_prepend(klass);
}
}
@@ -1473,22 +1000,17 @@ rb_prepend_module(VALUE klass, VALUE module)
* call-seq:
* mod.included_modules -> array
*
- * Returns the list of modules included or prepended in <i>mod</i>
- * or one of <i>mod</i>'s ancestors.
- *
- * module Sub
- * end
+ * Returns the list of modules included in <i>mod</i>.
*
* module Mixin
- * prepend Sub
* end
*
* module Outer
* include Mixin
* end
*
- * Mixin.included_modules #=> [Sub]
- * Outer.included_modules #=> [Sub, Mixin]
+ * Mixin.included_modules #=> []
+ * Outer.included_modules #=> [Mixin]
*/
VALUE
@@ -1499,11 +1021,11 @@ rb_mod_included_modules(VALUE mod)
VALUE origin = RCLASS_ORIGIN(mod);
for (p = RCLASS_SUPER(mod); p; p = RCLASS_SUPER(p)) {
- if (p != origin && RCLASS_ORIGIN(p) == p && BUILTIN_TYPE(p) == T_ICLASS) {
- VALUE m = METACLASS_OF(p);
- if (RB_TYPE_P(m, T_MODULE))
- rb_ary_push(ary, m);
- }
+ if (p != origin && BUILTIN_TYPE(p) == T_ICLASS) {
+ VALUE m = RBASIC(p)->klass;
+ if (RB_TYPE_P(m, T_MODULE))
+ rb_ary_push(ary, m);
+ }
}
return ary;
}
@@ -1512,8 +1034,8 @@ rb_mod_included_modules(VALUE mod)
* call-seq:
* mod.include?(module) -> true or false
*
- * Returns <code>true</code> if <i>module</i> is included
- * or prepended in <i>mod</i> or one of <i>mod</i>'s ancestors.
+ * Returns <code>true</code> if <i>module</i> is included in
+ * <i>mod</i> or one of <i>mod</i>'s ancestors.
*
* module A
* end
@@ -1534,9 +1056,9 @@ rb_mod_include_p(VALUE mod, VALUE mod2)
Check_Type(mod2, T_MODULE);
for (p = RCLASS_SUPER(mod); p; p = RCLASS_SUPER(p)) {
- if (BUILTIN_TYPE(p) == T_ICLASS && !FL_TEST(p, RICLASS_IS_ORIGIN)) {
- if (METACLASS_OF(p) == mod2) return Qtrue;
- }
+ if (BUILTIN_TYPE(p) == T_ICLASS) {
+ if (RBASIC(p)->klass == mod2) return Qtrue;
+ }
}
return Qfalse;
}
@@ -1563,149 +1085,18 @@ VALUE
rb_mod_ancestors(VALUE mod)
{
VALUE p, ary = rb_ary_new();
- VALUE refined_class = Qnil;
- if (BUILTIN_TYPE(mod) == T_MODULE && FL_TEST(mod, RMODULE_IS_REFINEMENT)) {
- refined_class = rb_refinement_module_get_refined_class(mod);
- }
for (p = mod; p; p = RCLASS_SUPER(p)) {
- if (p == refined_class) break;
- if (p != RCLASS_ORIGIN(p)) continue;
- if (BUILTIN_TYPE(p) == T_ICLASS) {
- rb_ary_push(ary, METACLASS_OF(p));
- }
- else {
- rb_ary_push(ary, p);
- }
+ if (BUILTIN_TYPE(p) == T_ICLASS) {
+ rb_ary_push(ary, RBASIC(p)->klass);
+ }
+ else if (p == RCLASS_ORIGIN(p)) {
+ rb_ary_push(ary, p);
+ }
}
return ary;
}
-struct subclass_traverse_data
-{
- VALUE buffer;
- long count;
- long maxcount;
- bool immediate_only;
-};
-
-static void
-class_descendants_recursive(VALUE klass, VALUE v)
-{
- struct subclass_traverse_data *data = (struct subclass_traverse_data *) v;
-
- if (BUILTIN_TYPE(klass) == T_CLASS && !FL_TEST(klass, FL_SINGLETON)) {
- if (data->buffer && data->count < data->maxcount && !rb_objspace_garbage_object_p(klass)) {
- // assumes that this does not cause GC as long as the length does not exceed the capacity
- rb_ary_push(data->buffer, klass);
- }
- data->count++;
- if (!data->immediate_only) {
- rb_class_foreach_subclass(klass, class_descendants_recursive, v);
- }
- }
- else {
- rb_class_foreach_subclass(klass, class_descendants_recursive, v);
- }
-}
-
-static VALUE
-class_descendants(VALUE klass, bool immediate_only)
-{
- struct subclass_traverse_data data = { Qfalse, 0, -1, immediate_only };
-
- // estimate the count of subclasses
- rb_class_foreach_subclass(klass, class_descendants_recursive, (VALUE) &data);
-
- // the following allocation may cause GC which may change the number of subclasses
- data.buffer = rb_ary_new_capa(data.count);
- data.maxcount = data.count;
- data.count = 0;
-
- size_t gc_count = rb_gc_count();
-
- // enumerate subclasses
- rb_class_foreach_subclass(klass, class_descendants_recursive, (VALUE) &data);
-
- if (gc_count != rb_gc_count()) {
- rb_bug("GC must not occur during the subclass iteration of Class#descendants");
- }
-
- return data.buffer;
-}
-
-/*
- * call-seq:
- * subclasses -> array
- *
- * Returns an array of classes where the receiver is the
- * direct superclass of the class, excluding singleton classes.
- * The order of the returned array is not defined.
- *
- * class A; end
- * class B < A; end
- * class C < B; end
- * class D < A; end
- *
- * A.subclasses #=> [D, B]
- * B.subclasses #=> [C]
- * C.subclasses #=> []
- *
- * Anonymous subclasses (not associated with a constant) are
- * returned, too:
- *
- * c = Class.new(A)
- * A.subclasses # => [#<Class:0x00007f003c77bd78>, D, B]
- *
- * Note that the parent does not hold references to subclasses
- * and doesn't prevent them from being garbage collected. This
- * means that the subclass might disappear when all references
- * to it are dropped:
- *
- * # drop the reference to subclass, it can be garbage-collected now
- * c = nil
- *
- * A.subclasses
- * # It can be
- * # => [#<Class:0x00007f003c77bd78>, D, B]
- * # ...or just
- * # => [D, B]
- * # ...depending on whether garbage collector was run
- */
-
-VALUE
-rb_class_subclasses(VALUE klass)
-{
- return class_descendants(klass, true);
-}
-
-/*
- * call-seq:
- * attached_object -> object
- *
- * Returns the object for which the receiver is the singleton class.
- *
- * Raises an TypeError if the class is not a singleton class.
- *
- * class Foo; end
- *
- * Foo.singleton_class.attached_object #=> Foo
- * Foo.attached_object #=> TypeError: `Foo' is not a singleton class
- * Foo.new.singleton_class.attached_object #=> #<Foo:0x000000010491a370>
- * TrueClass.attached_object #=> TypeError: `TrueClass' is not a singleton class
- * NilClass.attached_object #=> TypeError: `NilClass' is not a singleton class
- */
-
-VALUE
-rb_class_attached_object(VALUE klass)
-{
- if (!FL_TEST(klass, FL_SINGLETON)) {
- rb_raise(rb_eTypeError, "`%"PRIsVALUE"' is not a singleton class", klass);
- }
-
- return RCLASS_ATTACHED_OBJECT(klass);
-}
-
static void
ins_methods_push(st_data_t name, st_data_t ary)
{
@@ -1718,45 +1109,39 @@ ins_methods_i(st_data_t name, st_data_t type, st_data_t ary)
switch ((rb_method_visibility_t)type) {
case METHOD_VISI_UNDEF:
case METHOD_VISI_PRIVATE:
- break;
+ break;
default: /* everything but private */
- ins_methods_push(name, ary);
- break;
+ ins_methods_push(name, ary);
+ break;
}
return ST_CONTINUE;
}
static int
-ins_methods_type_i(st_data_t name, st_data_t type, st_data_t ary, rb_method_visibility_t visi)
+ins_methods_prot_i(st_data_t name, st_data_t type, st_data_t ary)
{
- if ((rb_method_visibility_t)type == visi) {
- ins_methods_push(name, ary);
+ if ((rb_method_visibility_t)type == METHOD_VISI_PROTECTED) {
+ ins_methods_push(name, ary);
}
return ST_CONTINUE;
}
static int
-ins_methods_prot_i(st_data_t name, st_data_t type, st_data_t ary)
-{
- return ins_methods_type_i(name, type, ary, METHOD_VISI_PROTECTED);
-}
-
-static int
ins_methods_priv_i(st_data_t name, st_data_t type, st_data_t ary)
{
- return ins_methods_type_i(name, type, ary, METHOD_VISI_PRIVATE);
+ if ((rb_method_visibility_t)type == METHOD_VISI_PRIVATE) {
+ ins_methods_push(name, ary);
+ }
+ return ST_CONTINUE;
}
static int
ins_methods_pub_i(st_data_t name, st_data_t type, st_data_t ary)
{
- return ins_methods_type_i(name, type, ary, METHOD_VISI_PUBLIC);
-}
-
-static int
-ins_methods_undef_i(st_data_t name, st_data_t type, st_data_t ary)
-{
- return ins_methods_type_i(name, type, ary, METHOD_VISI_UNDEF);
+ if ((rb_method_visibility_t)type == METHOD_VISI_PUBLIC) {
+ ins_methods_push(name, ary);
+ }
+ return ST_CONTINUE;
}
struct method_entry_arg {
@@ -1772,70 +1157,53 @@ method_entry_i(ID key, VALUE value, void *data)
rb_method_visibility_t type;
if (me->def->type == VM_METHOD_TYPE_REFINED) {
- VALUE owner = me->owner;
- me = rb_resolve_refined_method(Qnil, me);
- if (!me) return ID_TABLE_CONTINUE;
- if (!arg->recur && me->owner != owner) return ID_TABLE_CONTINUE;
- }
- if (!st_is_member(arg->list, key)) {
- if (UNDEFINED_METHOD_ENTRY_P(me)) {
- type = METHOD_VISI_UNDEF; /* none */
- }
- else {
- type = METHOD_ENTRY_VISI(me);
- RUBY_ASSERT(type != METHOD_VISI_UNDEF);
- }
- st_add_direct(arg->list, key, (st_data_t)type);
+ VALUE owner = me->owner;
+ me = rb_resolve_refined_method(Qnil, me);
+ if (!me) return ID_TABLE_CONTINUE;
+ if (!arg->recur && me->owner != owner) return ID_TABLE_CONTINUE;
+ }
+ if (!st_lookup(arg->list, key, 0)) {
+ if (UNDEFINED_METHOD_ENTRY_P(me)) {
+ type = METHOD_VISI_UNDEF; /* none */
+ }
+ else {
+ type = METHOD_ENTRY_VISI(me);
+ }
+ st_add_direct(arg->list, key, (st_data_t)type);
}
return ID_TABLE_CONTINUE;
}
-static void
-add_instance_method_list(VALUE mod, struct method_entry_arg *me_arg)
-{
- struct rb_id_table *m_tbl = RCLASS_M_TBL(mod);
- if (!m_tbl) return;
- rb_id_table_foreach(m_tbl, method_entry_i, me_arg);
-}
-
-static bool
-particular_class_p(VALUE mod)
-{
- if (!mod) return false;
- if (FL_TEST(mod, FL_SINGLETON)) return true;
- if (BUILTIN_TYPE(mod) == T_ICLASS) return true;
- return false;
-}
-
static VALUE
class_instance_method_list(int argc, const VALUE *argv, VALUE mod, int obj, int (*func) (st_data_t, st_data_t, st_data_t))
{
VALUE ary;
- int recur = TRUE, prepended = 0;
+ int recur, prepended = 0;
struct method_entry_arg me_arg;
- if (rb_check_arity(argc, 0, 1)) recur = RTEST(argv[0]);
-
- me_arg.list = st_init_numtable();
- me_arg.recur = recur;
-
- if (obj) {
- for (; particular_class_p(mod); mod = RCLASS_SUPER(mod)) {
- add_instance_method_list(mod, &me_arg);
- }
+ if (argc == 0) {
+ recur = TRUE;
+ }
+ else {
+ VALUE r;
+ rb_scan_args(argc, argv, "01", &r);
+ recur = RTEST(r);
}
if (!recur && RCLASS_ORIGIN(mod) != mod) {
- mod = RCLASS_ORIGIN(mod);
- prepended = 1;
+ mod = RCLASS_ORIGIN(mod);
+ prepended = 1;
}
+ me_arg.list = st_init_numtable();
+ me_arg.recur = recur;
for (; mod; mod = RCLASS_SUPER(mod)) {
- add_instance_method_list(mod, &me_arg);
- if (BUILTIN_TYPE(mod) == T_ICLASS && !prepended) continue;
- if (!recur) break;
+ if (RCLASS_M_TBL(mod)) rb_id_table_foreach(RCLASS_M_TBL(mod), method_entry_i, &me_arg);
+ if (BUILTIN_TYPE(mod) == T_ICLASS && !prepended) continue;
+ if (obj && FL_TEST(mod, FL_SINGLETON)) continue;
+ if (!recur) break;
}
- ary = rb_ary_new2(me_arg.list->num_entries);
+ ary = rb_ary_new();
st_foreach(me_arg.list, func, ary);
st_free_table(me_arg.list);
@@ -1867,15 +1235,6 @@ class_instance_method_list(int argc, const VALUE *argv, VALUE mod, int obj, int
* B.instance_methods(true).include?(:method1) #=> true
* C.instance_methods(false) #=> [:method3]
* C.instance_methods.include?(:method2) #=> true
- *
- * Note that method visibility changes in the current class, as well as aliases,
- * are considered as methods of the current class by this method:
- *
- * class C < B
- * alias method4 method2
- * protected :method2
- * end
- * C.instance_methods(false).sort #=> [:method2, :method3, :method4]
*/
VALUE
@@ -1939,28 +1298,13 @@ rb_class_public_instance_methods(int argc, const VALUE *argv, VALUE mod)
/*
* call-seq:
- * mod.undefined_instance_methods -> array
- *
- * Returns a list of the undefined instance methods defined in <i>mod</i>.
- * The undefined methods of any ancestors are not included.
- */
-
-VALUE
-rb_class_undefined_instance_methods(VALUE mod)
-{
- VALUE include_super = Qfalse;
- return class_instance_method_list(1, &include_super, mod, 0, ins_methods_undef_i);
-}
-
-/*
- * call-seq:
* obj.methods(regular=true) -> array
*
* Returns a list of the names of public and protected methods of
* <i>obj</i>. This will include all the methods accessible in
* <i>obj</i>'s ancestors.
* If the optional parameter is <code>false</code>, it
- * returns an array of <i>obj</i>'s public and protected singleton methods,
+ * returns an array of <i>obj<i>'s public and protected singleton methods,
* the array will not include methods in modules included in <i>obj</i>.
*
* class Klass
@@ -1987,7 +1331,7 @@ rb_obj_methods(int argc, const VALUE *argv, VALUE obj)
{
rb_check_arity(argc, 0, 1);
if (argc > 0 && !RTEST(argv[0])) {
- return rb_obj_singleton_methods(argc, argv, obj);
+ return rb_obj_singleton_methods(argc, argv, obj);
}
return class_instance_method_list(argc, argv, CLASS_OF(obj), 1, ins_methods_i);
}
@@ -2073,30 +1417,31 @@ rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj)
VALUE
rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj)
{
- VALUE ary, klass, origin;
+ VALUE recur, ary, klass, origin;
struct method_entry_arg me_arg;
struct rb_id_table *mtbl;
- int recur = TRUE;
- if (rb_check_arity(argc, 0, 1)) recur = RTEST(argv[0]);
- if (RB_TYPE_P(obj, T_CLASS) && FL_TEST(obj, FL_SINGLETON)) {
- rb_singleton_class(obj);
+ if (argc == 0) {
+ recur = Qtrue;
+ }
+ else {
+ rb_scan_args(argc, argv, "01", &recur);
}
klass = CLASS_OF(obj);
origin = RCLASS_ORIGIN(klass);
me_arg.list = st_init_numtable();
- me_arg.recur = recur;
+ me_arg.recur = RTEST(recur);
if (klass && FL_TEST(klass, FL_SINGLETON)) {
- if ((mtbl = RCLASS_M_TBL(origin)) != 0) rb_id_table_foreach(mtbl, method_entry_i, &me_arg);
- klass = RCLASS_SUPER(klass);
+ if ((mtbl = RCLASS_M_TBL(origin)) != 0) rb_id_table_foreach(mtbl, method_entry_i, &me_arg);
+ klass = RCLASS_SUPER(klass);
}
- if (recur) {
- while (klass && (FL_TEST(klass, FL_SINGLETON) || RB_TYPE_P(klass, T_ICLASS))) {
- if (klass != origin && (mtbl = RCLASS_M_TBL(klass)) != 0) rb_id_table_foreach(mtbl, method_entry_i, &me_arg);
- klass = RCLASS_SUPER(klass);
- }
+ if (RTEST(recur)) {
+ while (klass && (FL_TEST(klass, FL_SINGLETON) || RB_TYPE_P(klass, T_ICLASS))) {
+ if (klass != origin && (mtbl = RCLASS_M_TBL(klass)) != 0) rb_id_table_foreach(mtbl, method_entry_i, &me_arg);
+ klass = RCLASS_SUPER(klass);
+ }
}
- ary = rb_ary_new2(me_arg.list->num_entries);
+ ary = rb_ary_new();
st_foreach(me_arg.list, ins_methods_i, ary);
st_free_table(me_arg.list);
@@ -2107,40 +1452,77 @@ rb_obj_singleton_methods(int argc, const VALUE *argv, VALUE obj)
* \}
*/
/*!
- * \addtogroup defmethod
+ * \defgroup defmethod Defining methods
+ * There are some APIs to define a method from C.
+ * These API takes a C function as a method body.
+ *
+ * \par Method body functions
+ * Method body functions must return a VALUE and
+ * can be one of the following form:
+ * <dl>
+ * <dt>Fixed number of parameters</dt>
+ * <dd>
+ * This form is a normal C function, excepting it takes
+ * a receiver object as the first argument.
+ *
+ * \code
+ * static VALUE my_method(VALUE self, VALUE x, VALUE y);
+ * \endcode
+ * </dd>
+ * <dt>argc and argv style</dt>
+ * <dd>
+ * This form takes three parameters: \a argc, \a argv and \a self.
+ * \a self is the receiver. \a argc is the number of arguments.
+ * \a argv is a pointer to an array of the arguments.
+ *
+ * \code
+ * static VALUE my_method(int argc, VALUE *argv, VALUE self);
+ * \endcode
+ * </dd>
+ * <dt>Ruby array style</dt>
+ * <dd>
+ * This form takes two parameters: self and args.
+ * \a self is the receiver. \a args is an Array object which
+ * contains the arguments.
+ *
+ * \code
+ * static VALUE my_method(VALUE self, VALUE args);
+ * \endcode
+ * </dd>
+ *
+ * \par Number of parameters
+ * Method defining APIs takes the number of parameters which the
+ * method will takes. This number is called \a argc.
+ * \a argc can be:
+ * <dl>
+ * <dt>zero or positive number</dt>
+ * <dd>This means the method body function takes a fixed number of parameters</dd>
+ * <dt>-1</dt>
+ * <dd>This means the method body function is "argc and argv" style.</dd>
+ * <dt>-2</dt>
+ * <dd>This means the method body function is "self and args" style.</dd>
+ * </dl>
* \{
*/
-#ifdef rb_define_method_id
-#undef rb_define_method_id
-#endif
void
rb_define_method_id(VALUE klass, ID mid, VALUE (*func)(ANYARGS), int argc)
{
rb_add_method_cfunc(klass, mid, func, argc, METHOD_VISI_PUBLIC);
}
-#ifdef rb_define_method
-#undef rb_define_method
-#endif
void
rb_define_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
{
rb_add_method_cfunc(klass, rb_intern(name), func, argc, METHOD_VISI_PUBLIC);
}
-#ifdef rb_define_protected_method
-#undef rb_define_protected_method
-#endif
void
rb_define_protected_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
{
rb_add_method_cfunc(klass, rb_intern(name), func, argc, METHOD_VISI_PROTECTED);
}
-#ifdef rb_define_private_method
-#undef rb_define_private_method
-#endif
void
rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
{
@@ -2166,7 +1548,7 @@ rb_undef_methods_from(VALUE klass, VALUE super)
{
struct rb_id_table *mtbl = RCLASS_M_TBL(super);
if (mtbl) {
- rb_id_table_foreach(mtbl, undef_method_i, (void *)klass);
+ rb_id_table_foreach(mtbl, undef_method_i, (void *)klass);
}
}
@@ -2178,15 +1560,19 @@ rb_undef_methods_from(VALUE klass, VALUE super)
* \{
*/
+#define SPECIAL_SINGLETON(x,c) do {\
+ if (obj == (x)) {\
+ return (c);\
+ }\
+} while (0)
+
static inline VALUE
special_singleton_class_of(VALUE obj)
{
- switch (obj) {
- case Qnil: return rb_cNilClass;
- case Qfalse: return rb_cFalseClass;
- case Qtrue: return rb_cTrueClass;
- default: return Qnil;
- }
+ SPECIAL_SINGLETON(Qnil, rb_cNilClass);
+ SPECIAL_SINGLETON(Qfalse, rb_cFalseClass);
+ SPECIAL_SINGLETON(Qtrue, rb_cTrueClass);
+ return Qnil;
}
VALUE
@@ -2209,33 +1595,40 @@ singleton_class_of(VALUE obj)
{
VALUE klass;
- switch (TYPE(obj)) {
- case T_FIXNUM:
- case T_BIGNUM:
- case T_FLOAT:
- case T_SYMBOL:
- rb_raise(rb_eTypeError, "can't define singleton");
-
- case T_FALSE:
- case T_TRUE:
- case T_NIL:
- klass = special_singleton_class_of(obj);
- if (NIL_P(klass))
- rb_bug("unknown immediate %p", (void *)obj);
- return klass;
-
- case T_STRING:
- if (FL_TEST_RAW(obj, RSTRING_FSTR)) {
- rb_raise(rb_eTypeError, "can't define singleton");
- }
+ if (FIXNUM_P(obj) || FLONUM_P(obj) || STATIC_SYM_P(obj)) {
+ no_singleton:
+ rb_raise(rb_eTypeError, "can't define singleton");
+ }
+ if (SPECIAL_CONST_P(obj)) {
+ klass = special_singleton_class_of(obj);
+ if (NIL_P(klass))
+ rb_bug("unknown immediate %p", (void *)obj);
+ return klass;
+ }
+ else {
+ switch (BUILTIN_TYPE(obj)) {
+ case T_FLOAT: case T_BIGNUM: case T_SYMBOL:
+ goto no_singleton;
+ case T_STRING:
+ if (FL_TEST_RAW(obj, RSTRING_FSTR)) goto no_singleton;
+ break;
+ }
}
- klass = METACLASS_OF(obj);
+ klass = RBASIC(obj)->klass;
if (!(FL_TEST(klass, FL_SINGLETON) &&
- RCLASS_ATTACHED_OBJECT(klass) == obj)) {
- klass = rb_make_metaclass(obj, klass);
+ rb_ivar_get(klass, id_attached) == obj)) {
+ rb_serial_t serial = RCLASS_SERIAL(klass);
+ klass = rb_make_metaclass(obj, klass);
+ RCLASS_SERIAL(klass) = serial;
}
+ if (OBJ_TAINTED(obj)) {
+ OBJ_TAINT(klass);
+ }
+ else {
+ FL_UNSET(klass, FL_TAINT);
+ }
RB_FL_SET_RAW(klass, RB_OBJ_FROZEN_RAW(obj));
return klass;
@@ -2246,11 +1639,11 @@ rb_freeze_singleton_class(VALUE x)
{
/* should not propagate to meta-meta-class, and so on */
if (!(RBASIC(x)->flags & FL_SINGLETON)) {
- VALUE klass = RBASIC_CLASS(x);
- if (klass && // no class when hidden from ObjectSpace
- FL_TEST(klass, (FL_SINGLETON|FL_FREEZE)) == FL_SINGLETON) {
- OBJ_FREEZE_RAW(klass);
- }
+ VALUE klass = RBASIC_CLASS(x);
+ if (klass && (klass = RCLASS_ORIGIN(klass)) != 0 &&
+ FL_TEST(klass, (FL_SINGLETON|FL_FREEZE)) == FL_SINGLETON) {
+ OBJ_FREEZE_RAW(klass);
+ }
}
}
@@ -2267,14 +1660,31 @@ rb_singleton_class_get(VALUE obj)
VALUE klass;
if (SPECIAL_CONST_P(obj)) {
- return rb_special_singleton_class(obj);
+ return rb_special_singleton_class(obj);
}
- klass = METACLASS_OF(obj);
+ klass = RBASIC(obj)->klass;
if (!FL_TEST(klass, FL_SINGLETON)) return Qnil;
- if (RCLASS_ATTACHED_OBJECT(klass) != obj) return Qnil;
+ if (rb_ivar_get(klass, id_attached) != obj) return Qnil;
return klass;
}
+/*!
+ * Returns the singleton class of \a obj. Creates it if necessary.
+ *
+ * \param obj an arbitrary object.
+ * \throw TypeError if \a obj is a Integer or a Symbol.
+ * \return the singleton class.
+ *
+ * \post \a obj has its own singleton class.
+ * \post if \a obj is a class,
+ * the returned singleton class also has its own
+ * singleton class in order to keep consistency of the
+ * inheritance structure of metaclasses.
+ * \note a new singleton class will be created
+ * if \a obj does not have it.
+ * \note the singleton classes for nil, true and false are:
+ * NilClass, TrueClass and FalseClass.
+ */
VALUE
rb_singleton_class(VALUE obj)
{
@@ -2295,18 +1705,28 @@ rb_singleton_class(VALUE obj)
* \{
*/
-#ifdef rb_define_singleton_method
-#undef rb_define_singleton_method
-#endif
+/*!
+ * Defines a singleton method for \a obj.
+ * \param obj an arbitrary object
+ * \param name name of the singleton method
+ * \param func the method body
+ * \param argc the number of parameters, or -1 or -2. see \ref defmethod.
+ */
void
rb_define_singleton_method(VALUE obj, const char *name, VALUE (*func)(ANYARGS), int argc)
{
rb_define_method(singleton_class_of(obj), name, func, argc);
}
-#ifdef rb_define_module_function
-#undef rb_define_module_function
-#endif
+
+
+/*!
+ * Defines a module function for \a module.
+ * \param module an module or a class.
+ * \param name name of the function
+ * \param func the method body
+ * \param argc the number of parameters, or -1 or -2. see \ref defmethod.
+ */
void
rb_define_module_function(VALUE module, const char *name, VALUE (*func)(ANYARGS), int argc)
{
@@ -2314,21 +1734,39 @@ rb_define_module_function(VALUE module, const char *name, VALUE (*func)(ANYARGS)
rb_define_singleton_method(module, name, func, argc);
}
-#ifdef rb_define_global_function
-#undef rb_define_global_function
-#endif
+
+/*!
+ * Defines a global function
+ * \param name name of the function
+ * \param func the method body
+ * \param argc the number of parameters, or -1 or -2. see \ref defmethod.
+ */
void
rb_define_global_function(const char *name, VALUE (*func)(ANYARGS), int argc)
{
rb_define_module_function(rb_mKernel, name, func, argc);
}
+
+/*!
+ * Defines an alias of a method.
+ * \param klass the class which the original method belongs to
+ * \param name1 a new name for the method
+ * \param name2 the original name of the method
+ */
void
rb_define_alias(VALUE klass, const char *name1, const char *name2)
{
rb_alias(klass, rb_intern(name1), rb_intern(name2));
}
+/*!
+ * Defines (a) public accessor method(s) for an attribute.
+ * \param klass the class which the attribute will belongs to
+ * \param name name of the attribute
+ * \param read a getter method for the attribute will be defined if \a read is non-zero.
+ * \param write a setter method for the attribute will be defined if \a write is non-zero.
+ */
void
rb_define_attr(VALUE klass, const char *name, int read, int write)
{
@@ -2338,17 +1776,19 @@ rb_define_attr(VALUE klass, const char *name, int read, int write)
VALUE
rb_keyword_error_new(const char *error, VALUE keys)
{
+ const VALUE *ptr = RARRAY_CONST_PTR(keys);
long i = 0, len = RARRAY_LEN(keys);
VALUE error_message = rb_sprintf("%s keyword%.*s", error, len > 1, "s");
if (len > 0) {
- rb_str_cat_cstr(error_message, ": ");
- while (1) {
- const VALUE k = RARRAY_AREF(keys, i);
- rb_str_append(error_message, rb_inspect(k));
- if (++i >= len) break;
- rb_str_cat_cstr(error_message, ", ");
- }
+ rb_str_cat_cstr(error_message, ": ");
+ while (1) {
+ const VALUE k = ptr[i];
+ Check_Type(k, T_SYMBOL); /* wrong hash is given to rb_get_kwargs */
+ rb_str_append(error_message, rb_sym2str(k));
+ if (++i >= len) break;
+ rb_str_cat_cstr(error_message, ", ");
+ }
}
return rb_exc_new_str(rb_eArgError, error_message);
@@ -2365,19 +1805,20 @@ NORETURN(static void unknown_keyword_error(VALUE hash, const ID *table, int keyw
static void
unknown_keyword_error(VALUE hash, const ID *table, int keywords)
{
+ st_table *tbl = rb_hash_tbl_raw(hash);
int i;
for (i = 0; i < keywords; i++) {
- st_data_t key = ID2SYM(table[i]);
- rb_hash_stlike_delete(hash, &key, NULL);
+ st_data_t key = ID2SYM(table[i]);
+ st_delete(tbl, &key, NULL);
}
rb_keyword_error("unknown", rb_hash_keys(hash));
}
-
static int
separate_symbol(st_data_t key, st_data_t value, st_data_t arg)
{
VALUE *kwdhash = (VALUE *)arg;
+
if (!SYMBOL_P(key)) kwdhash++;
if (!*kwdhash) *kwdhash = rb_hash_new();
rb_hash_aset(*kwdhash, (VALUE)key, (VALUE)value);
@@ -2391,13 +1832,13 @@ rb_extract_keywords(VALUE *orighash)
VALUE hash = *orighash;
if (RHASH_EMPTY_P(hash)) {
- *orighash = 0;
- return hash;
+ *orighash = 0;
+ return hash;
}
- rb_hash_foreach(hash, separate_symbol, (st_data_t)&parthash);
+ st_foreach(rb_hash_tbl_raw(hash), separate_symbol, (st_data_t)&parthash);
*orighash = parthash[1];
if (parthash[1] && RBASIC_CLASS(hash) != rb_cHash) {
- RBASIC_SET_CLASS(parthash[1], RBASIC_CLASS(hash));
+ RBASIC_SET_CLASS(parthash[1], RBASIC_CLASS(hash));
}
return parthash[0];
}
@@ -2412,230 +1853,193 @@ rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, V
#define extract_kwarg(keyword, val) \
(key = (st_data_t)(keyword), values ? \
- (rb_hash_stlike_delete(keyword_hash, &key, &(val)) || ((val) = Qundef, 0)) : \
- rb_hash_stlike_lookup(keyword_hash, key, NULL))
+ st_delete(rb_hash_tbl_raw(keyword_hash), &key, (val)) : \
+ st_lookup(rb_hash_tbl_raw(keyword_hash), key, (val)))
if (NIL_P(keyword_hash)) keyword_hash = 0;
if (optional < 0) {
- rest = 1;
- optional = -1-optional;
+ rest = 1;
+ optional = -1-optional;
+ }
+ if (values) {
+ for (j = 0; j < required + optional; j++) {
+ values[j] = Qundef;
+ }
}
if (required) {
- for (; i < required; i++) {
- VALUE keyword = ID2SYM(table[i]);
- if (keyword_hash) {
- if (extract_kwarg(keyword, values[i])) {
- continue;
- }
- }
- if (NIL_P(missing)) missing = rb_ary_hidden_new(1);
- rb_ary_push(missing, keyword);
- }
- if (!NIL_P(missing)) {
- rb_keyword_error("missing", missing);
- }
+ for (; i < required; i++) {
+ VALUE keyword = ID2SYM(table[i]);
+ if (keyword_hash) {
+ st_data_t val;
+ if (extract_kwarg(keyword, &val)) {
+ if (values) values[i] = (VALUE)val;
+ continue;
+ }
+ }
+ if (NIL_P(missing)) missing = rb_ary_tmp_new(1);
+ rb_ary_push(missing, keyword);
+ }
+ if (!NIL_P(missing)) {
+ rb_keyword_error("missing", missing);
+ }
}
j = i;
if (optional && keyword_hash) {
- for (i = 0; i < optional; i++) {
- if (extract_kwarg(ID2SYM(table[required+i]), values[required+i])) {
- j++;
- }
- }
+ for (i = 0; i < optional; i++) {
+ st_data_t val;
+ if (extract_kwarg(ID2SYM(table[required+i]), &val)) {
+ if (values) values[required+i] = (VALUE)val;
+ j++;
+ }
+ }
}
if (!rest && keyword_hash) {
- if (RHASH_SIZE(keyword_hash) > (unsigned int)(values ? 0 : j)) {
- unknown_keyword_error(keyword_hash, table, required+optional);
- }
- }
- if (values && !keyword_hash) {
- for (i = 0; i < required + optional; i++) {
- values[i] = Qundef;
- }
+ if (RHASH_SIZE(keyword_hash) > (unsigned int)(values ? 0 : j)) {
+ unknown_keyword_error(keyword_hash, table, required+optional);
+ }
}
return j;
#undef extract_kwarg
}
-struct rb_scan_args_t {
- int kw_flag;
- int n_lead;
- int n_opt;
- int n_trail;
- bool f_var;
- bool f_hash;
- bool f_block;
-};
-
-static void
-rb_scan_args_parse(int kw_flag, const char *fmt, struct rb_scan_args_t *arg)
+#undef rb_scan_args
+int
+rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)
{
+ int i;
const char *p = fmt;
-
- memset(arg, 0, sizeof(*arg));
- arg->kw_flag = kw_flag;
+ VALUE *var;
+ va_list vargs;
+ int f_var = 0, f_hash = 0, f_block = 0;
+ int n_lead = 0, n_opt = 0, n_trail = 0, n_mand;
+ int argi = 0, last_idx = -1;
+ VALUE hash = Qnil, last_hash = 0;
if (ISDIGIT(*p)) {
- arg->n_lead = *p - '0';
- p++;
- if (ISDIGIT(*p)) {
- arg->n_opt = *p - '0';
- p++;
- }
+ n_lead = *p - '0';
+ p++;
+ if (ISDIGIT(*p)) {
+ n_opt = *p - '0';
+ p++;
+ }
}
if (*p == '*') {
- arg->f_var = 1;
- p++;
+ f_var = 1;
+ p++;
}
if (ISDIGIT(*p)) {
- arg->n_trail = *p - '0';
- p++;
+ n_trail = *p - '0';
+ p++;
}
if (*p == ':') {
- arg->f_hash = 1;
- p++;
+ f_hash = 1;
+ p++;
}
if (*p == '&') {
- arg->f_block = 1;
- p++;
+ f_block = 1;
+ p++;
}
if (*p != '\0') {
- rb_fatal("bad scan arg format: %s", fmt);
- }
-}
-
-static int
-rb_scan_args_assign(const struct rb_scan_args_t *arg, int argc, const VALUE *const argv, va_list vargs)
-{
- int i, argi = 0;
- VALUE *var, hash = Qnil;
-#define rb_scan_args_next_param() va_arg(vargs, VALUE *)
- const int kw_flag = arg->kw_flag;
- const int n_lead = arg->n_lead;
- const int n_opt = arg->n_opt;
- const int n_trail = arg->n_trail;
- const int n_mand = n_lead + n_trail;
- const bool f_var = arg->f_var;
- const bool f_hash = arg->f_hash;
- const bool f_block = arg->f_block;
-
- /* capture an option hash - phase 1: pop from the argv */
- if (f_hash && argc > 0) {
- VALUE last = argv[argc - 1];
- if (rb_scan_args_keyword_p(kw_flag, last)) {
- hash = rb_hash_dup(last);
- argc--;
- }
+ rb_fatal("bad scan arg format: %s", fmt);
+ }
+ n_mand = n_lead + n_trail;
+
+ if (argc < n_mand)
+ goto argc_error;
+
+ va_start(vargs, fmt);
+
+ /* capture an option hash - phase 1: pop */
+ if (f_hash && n_mand < argc) {
+ VALUE last = argv[argc - 1];
+
+ if (NIL_P(last)) {
+ /* nil is taken as an empty option hash only if it is not
+ ambiguous; i.e. '*' is not specified and arguments are
+ given more than sufficient */
+ if (!f_var && n_mand + n_opt < argc)
+ argc--;
+ }
+ else {
+ hash = rb_check_hash_type(last);
+ if (!NIL_P(hash)) {
+ VALUE opts = rb_extract_keywords(&hash);
+ if (!(last_hash = hash)) argc--;
+ else last_idx = argc - 1;
+ hash = opts ? opts : Qnil;
+ }
+ }
}
-
- if (argc < n_mand) {
- goto argc_error;
- }
-
/* capture leading mandatory arguments */
- for (i = 0; i < n_lead; i++) {
- var = rb_scan_args_next_param();
- if (var) *var = argv[argi];
- argi++;
+ for (i = n_lead; i-- > 0; ) {
+ var = va_arg(vargs, VALUE *);
+ if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
+ argi++;
}
/* capture optional arguments */
- for (i = 0; i < n_opt; i++) {
- var = rb_scan_args_next_param();
- if (argi < argc - n_trail) {
- if (var) *var = argv[argi];
- argi++;
- }
- else {
- if (var) *var = Qnil;
- }
+ for (i = n_opt; i-- > 0; ) {
+ var = va_arg(vargs, VALUE *);
+ if (argi < argc - n_trail) {
+ if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
+ argi++;
+ }
+ else {
+ if (var) *var = Qnil;
+ }
}
/* capture variable length arguments */
if (f_var) {
- int n_var = argc - argi - n_trail;
-
- var = rb_scan_args_next_param();
- if (0 < n_var) {
- if (var) *var = rb_ary_new_from_values(n_var, &argv[argi]);
- argi += n_var;
- }
- else {
- if (var) *var = rb_ary_new();
- }
+ int n_var = argc - argi - n_trail;
+
+ var = va_arg(vargs, VALUE *);
+ if (0 < n_var) {
+ if (var) {
+ int f_last = (last_idx + 1 == argc - n_trail);
+ *var = rb_ary_new4(n_var-f_last, &argv[argi]);
+ if (f_last) rb_ary_push(*var, last_hash);
+ }
+ argi += n_var;
+ }
+ else {
+ if (var) *var = rb_ary_new();
+ }
}
/* capture trailing mandatory arguments */
- for (i = 0; i < n_trail; i++) {
- var = rb_scan_args_next_param();
- if (var) *var = argv[argi];
- argi++;
+ for (i = n_trail; i-- > 0; ) {
+ var = va_arg(vargs, VALUE *);
+ if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
+ argi++;
}
/* capture an option hash - phase 2: assignment */
if (f_hash) {
- var = rb_scan_args_next_param();
- if (var) *var = hash;
+ var = va_arg(vargs, VALUE *);
+ if (var) *var = hash;
}
/* capture iterator block */
if (f_block) {
- var = rb_scan_args_next_param();
- if (rb_block_given_p()) {
- *var = rb_block_proc();
- }
- else {
- *var = Qnil;
- }
- }
-
- if (argi == argc) {
- return argc;
+ var = va_arg(vargs, VALUE *);
+ if (rb_block_given_p()) {
+ *var = rb_block_proc();
+ }
+ else {
+ *var = Qnil;
+ }
}
+ va_end(vargs);
- argc_error:
- return -(argc + 1);
-#undef rb_scan_args_next_param
-}
-
-static int
-rb_scan_args_result(const struct rb_scan_args_t *const arg, int argc)
-{
- const int n_lead = arg->n_lead;
- const int n_opt = arg->n_opt;
- const int n_trail = arg->n_trail;
- const int n_mand = n_lead + n_trail;
- const bool f_var = arg->f_var;
-
- if (argc >= 0) {
- return argc;
+ if (argi < argc) {
+ argc_error:
+ rb_error_arity(argc, n_mand, f_var ? UNLIMITED_ARGUMENTS : n_mand + n_opt);
}
- argc = -argc - 1;
- rb_error_arity(argc, n_mand, f_var ? UNLIMITED_ARGUMENTS : n_mand + n_opt);
- UNREACHABLE_RETURN(-1);
+ return argc;
}
-#undef rb_scan_args
int
-rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)
+rb_class_has_methods(VALUE c)
{
- va_list vargs;
- struct rb_scan_args_t arg;
- rb_scan_args_parse(RB_SCAN_ARGS_PASS_CALLED_KEYWORDS, fmt, &arg);
- va_start(vargs,fmt);
- argc = rb_scan_args_assign(&arg, argc, argv, vargs);
- va_end(vargs);
- return rb_scan_args_result(&arg, argc);
-}
-
-#undef rb_scan_args_kw
-int
-rb_scan_args_kw(int kw_flag, int argc, const VALUE *argv, const char *fmt, ...)
-{
- va_list vargs;
- struct rb_scan_args_t arg;
- rb_scan_args_parse(kw_flag, fmt, &arg);
- va_start(vargs,fmt);
- argc = rb_scan_args_assign(&arg, argc, argv, vargs);
- va_end(vargs);
- return rb_scan_args_result(&arg, argc);
+ return rb_id_table_size(RCLASS_M_TBL(c)) == 0 ? FALSE : TRUE;
}
/*!
diff --git a/common.mk b/common.mk
index 0c9f923633..2175f67eba 100644
--- a/common.mk
+++ b/common.mk
@@ -1,16 +1,11 @@
-# -*- mode: makefile-gmake; indent-tabs-mode: t -*-
-# This fragment can be used with nmake.exe and with bsdmake.
-# Avoid features specific to GNU Make.
-
bin: $(PROGRAM) $(WPROGRAM)
lib: $(LIBRUBY)
dll: $(LIBRUBY_SO)
-.SUFFIXES: .rbinc .rb .inc .h .c .y .i .$(ASMEXT) .$(DTRACE_EXT)
+.SUFFIXES: .inc .h .c .y .i .$(DTRACE_EXT)
# V=0 quiet, V=1 verbose. other values don't work.
V = 0
-V0 = $(V:0=)
Q1 = $(V:1=)
Q = $(Q1:0=@)
ECHO0 = $(ECHO1:0=echo)
@@ -20,11 +15,8 @@ mflags = $(MFLAGS)
gnumake_recursive =
enable_shared = $(ENABLE_SHARED:no=)
-UNICODE_VERSION = 15.0.0
-UNICODE_EMOJI_VERSION_0 = $(UNICODE_VERSION)///
-UNICODE_EMOJI_VERSION_1 = $(UNICODE_EMOJI_VERSION_0:.0///=)
-UNICODE_EMOJI_VERSION = $(UNICODE_EMOJI_VERSION_1:///=)
-UNICODE_BETA = NO
+UNICODE_VERSION = 10.0.0
+UNICODE_EMOJI_VERSION = 5.0
### set the following environment variable or uncomment the line if
### the Unicode data files should be updated completely on every update ('make up',...).
@@ -43,47 +35,42 @@ RUBYLIB = $(PATH_SEPARATOR)
RUBYOPT = -
RUN_OPTS = --disable-gems
-# GITPULLOPTIONS = --no-tags
-
INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir) -I$(UNICODE_HDR_DIR)
GEM_HOME =
GEM_PATH =
GEM_VENDOR =
-BENCHMARK_DRIVER_GIT_URL = https://github.com/benchmark-driver/benchmark-driver
-BENCHMARK_DRIVER_GIT_REF = v0.16.3
+SIMPLECOV_GIT_URL = git://github.com/colszowka/simplecov.git
+SIMPLECOV_GIT_REF = v0.15.0
+SIMPLECOV_HTML_GIT_URL = git://github.com/colszowka/simplecov-html.git
+SIMPLECOV_HTML_GIT_REF = v0.10.2
+DOCLIE_GIT_URL = git://github.com/ms-ati/docile.git
+DOCLIE_GIT_REF = v1.1.5
STATIC_RUBY = static-ruby
TIMESTAMPDIR = $(EXTOUT)/.timestamp
-RUBYCOMMONDIR = $(EXTOUT)/common
EXTCONF = extconf.rb
LIBRUBY_EXTS = ./.libruby-with-ext.time
REVISION_H = ./.revision.time
PLATFORM_D = $(TIMESTAMPDIR)/.$(PLATFORM_DIR).time
ENC_TRANS_D = $(TIMESTAMPDIR)/.enc-trans.time
-RDOC = $(XRUBY) "$(srcdir)/libexec/rdoc" --root "$(srcdir)" --encoding=UTF-8 --all
RDOCOUT = $(EXTOUT)/rdoc
HTMLOUT = $(EXTOUT)/html
CAPIOUT = doc/capi
-INSTALL_DOC_OPTS = --rdoc-output="$(RDOCOUT)" --html-output="$(HTMLOUT)"
-RDOC_GEN_OPTS = --page-dir "$(srcdir)/doc" --no-force-update \
- --title "Documentation for Ruby $(RUBY_API_VERSION)" \
- --main README.md
INITOBJS = dmyext.$(OBJEXT) dmyenc.$(OBJEXT)
NORMALMAINOBJ = main.$(OBJEXT)
MAINOBJ = $(NORMALMAINOBJ)
DLDOBJS = $(INITOBJS)
EXTSOLIBS =
-MINIOBJS = $(ARCHMINIOBJS) miniinit.$(OBJEXT) dmyext.$(OBJEXT)
+MINIOBJS = $(ARCHMINIOBJS) miniinit.$(OBJEXT) dmyext.$(OBJEXT) miniprelude.$(OBJEXT)
ENC_MK = enc.mk
MAKE_ENC = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \
- RUBY="$(BOOTSTRAPRUBY)" MINIRUBY="$(BOOTSTRAPRUBY)" $(mflags)
+ RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(mflags)
COMMONOBJS = array.$(OBJEXT) \
- ast.$(OBJEXT) \
bignum.$(OBJEXT) \
class.$(OBJEXT) \
compar.$(OBJEXT) \
@@ -104,14 +91,10 @@ COMMONOBJS = array.$(OBJEXT) \
hash.$(OBJEXT) \
inits.$(OBJEXT) \
io.$(OBJEXT) \
- io_buffer.$(OBJEXT) \
iseq.$(OBJEXT) \
load.$(OBJEXT) \
marshal.$(OBJEXT) \
math.$(OBJEXT) \
- memory_view.$(OBJEXT) \
- rjit.$(OBJEXT) \
- rjit_c.$(OBJEXT) \
node.$(OBJEXT) \
numeric.$(OBJEXT) \
object.$(OBJEXT) \
@@ -119,7 +102,6 @@ COMMONOBJS = array.$(OBJEXT) \
parse.$(OBJEXT) \
proc.$(OBJEXT) \
process.$(OBJEXT) \
- ractor.$(OBJEXT) \
random.$(OBJEXT) \
range.$(OBJEXT) \
rational.$(OBJEXT) \
@@ -131,8 +113,7 @@ COMMONOBJS = array.$(OBJEXT) \
regparse.$(OBJEXT) \
regsyntax.$(OBJEXT) \
ruby.$(OBJEXT) \
- scheduler.$(OBJEXT) \
- shape.$(OBJEXT) \
+ safe.$(OBJEXT) \
signal.$(OBJEXT) \
sprintf.$(OBJEXT) \
st.$(OBJEXT) \
@@ -143,19 +124,13 @@ COMMONOBJS = array.$(OBJEXT) \
thread.$(OBJEXT) \
time.$(OBJEXT) \
transcode.$(OBJEXT) \
- transient_heap.$(OBJEXT) \
util.$(OBJEXT) \
variable.$(OBJEXT) \
version.$(OBJEXT) \
vm.$(OBJEXT) \
vm_backtrace.$(OBJEXT) \
vm_dump.$(OBJEXT) \
- vm_sync.$(OBJEXT) \
vm_trace.$(OBJEXT) \
- weakmap.$(OBJEXT) \
- $(YJIT_OBJ) \
- $(YJIT_LIBOBJ) \
- $(COROUTINE_OBJ) \
$(DTRACE_OBJ) \
$(BUILTIN_ENCOBJS) \
$(BUILTIN_TRANSOBJS) \
@@ -166,89 +141,58 @@ EXPORTOBJS = $(DLNOBJ) \
loadpath.$(OBJEXT) \
$(COMMONOBJS)
-OBJS = $(EXPORTOBJS) builtin.$(OBJEXT)
+OBJS = $(EXPORTOBJS) prelude.$(OBJEXT)
ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(INITOBJS)
-GOLFOBJS = goruby.$(OBJEXT)
+GOLFOBJS = goruby.$(OBJEXT) golf_prelude.$(OBJEXT)
DEFAULT_PRELUDES = $(GEM_PRELUDE)
-PRELUDE_SCRIPTS = $(DEFAULT_PRELUDES)
-GEM_PRELUDE =
-PRELUDES = {$(srcdir)}miniprelude.c
+PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(DEFAULT_PRELUDES)
+GEM_PRELUDE = $(srcdir)/gem_prelude.rb
+PRELUDES = {$(srcdir)}prelude.c {$(srcdir)}miniprelude.c
GOLFPRELUDES = {$(srcdir)}golf_prelude.c
SCRIPT_ARGS = --dest-dir="$(DESTDIR)" \
--extout="$(EXTOUT)" \
- --ext-build-dir="./ext" \
--mflags="$(MFLAGS)" \
--make-flags="$(MAKEFLAGS)"
EXTMK_ARGS = $(SCRIPT_ARGS) --extension $(EXTS) --extstatic $(EXTSTATIC) \
--make-flags="V=$(V) MINIRUBY='$(MINIRUBY)'" \
--gnumake=$(gnumake) --extflags="$(EXTLDFLAGS)" \
--
-INSTRUBY = $(SUDO) $(INSTRUBY_ENV) $(RUNRUBY) -r./$(arch)-fake $(tooldir)/rbinstall.rb
+INSTRUBY = $(SUDO) $(RUNRUBY) -r./$(arch)-fake $(srcdir)/tool/rbinstall.rb
INSTRUBY_ARGS = $(SCRIPT_ARGS) \
--data-mode=$(INSTALL_DATA_MODE) \
--prog-mode=$(INSTALL_PROG_MODE) \
--installed-list $(INSTALLED_LIST) \
- --mantype="$(MANTYPE)" \
- $(INSTRUBY_OPTS)
+ --mantype="$(MANTYPE)"
INSTALL_PROG_MODE = 0755
INSTALL_DATA_MODE = 0644
-BOOTSTRAPRUBY_COMMAND = $(BOOTSTRAPRUBY) $(BOOTSTRAPRUBY_OPT)
+PRE_LIBRUBY_UPDATE = $(MINIRUBY) -e 'ARGV[1] or File.unlink(ARGV[0]) rescue nil' -- \
+ $(LIBRUBY_EXTS) $(LIBRUBY_SO_UPDATE)
+
TESTSDIR = $(srcdir)/test
-TOOL_TESTSDIR = $(tooldir)/test
TEST_EXCLUDES = --excludes-dir=$(TESTSDIR)/excludes --name=!/memory_leak/
+EXCLUDE_TESTFRAMEWORK = --exclude=/testunit/ --exclude=/minitest/
TESTWORKDIR = testwork
TESTOPTS = $(RUBY_TESTOPTS)
TESTRUN_SCRIPT = $(srcdir)/test.rb
-COMPILE_PRELUDE = $(tooldir)/generic_erb.rb $(srcdir)/template/prelude.c.tmpl \
- $(tooldir)/ruby_vm/helpers/c_escape.rb
-
-SHOWFLAGS = $(no_silence:no=showflags)
-
-MAKE_LINK = $(MINIRUBY) -rfileutils -e "include FileUtils::Verbose" \
- -e "src, dest = ARGV" \
- -e "exit if File.identical?(src, dest) or cmp(src, dest) rescue nil" \
- -e "def noraise; yield; rescue; rescue NotImplementedError; end" \
- -e "noraise {ln_sf('../'*dest.count('/')+src, dest)} or" \
- -e "noraise {ln(src, dest)} or" \
- -e "cp(src, dest)"
-
-# For release builds
-YJIT_RUSTC_ARGS = --crate-name=yjit \
- --crate-type=staticlib \
- --edition=2021 \
- -g \
- -C lto=thin \
- -C opt-level=3 \
- -C overflow-checks=on \
- '--out-dir=$(CARGO_TARGET_DIR)/release/' \
- $(top_srcdir)/yjit/src/lib.rs
+COMPILE_PRELUDE = $(srcdir)/tool/generic_erb.rb $(srcdir)/template/prelude.c.tmpl
+
+SHOWFLAGS = showflags
all: $(SHOWFLAGS) main docs
main: $(SHOWFLAGS) exts $(ENCSTATIC:static=lib)encs
@$(NULLCMD)
-main: $(srcdir)/lib/ruby_vm/rjit/instruction.rb
-srcs: $(srcdir)/lib/ruby_vm/rjit/instruction.rb
-$(srcdir)/lib/ruby_vm/rjit/instruction.rb: $(tooldir)/insns2vm.rb $(tooldir)/ruby_vm/views/lib/ruby_vm/rjit/instruction.rb.erb $(srcdir)/insns.def
- $(ECHO) generating $@
- $(Q) $(BASERUBY) -Ku $(tooldir)/insns2vm.rb --basedir="$(srcdir)" $(INSNS2VMOPT) $@
-
-.PHONY: rjit-bindgen
-rjit-bindgen:
- $(Q) $(BASERUBY) -rrubygems -C $(srcdir)/tool/rjit bindgen.rb $(CURDIR)
-
.PHONY: showflags
exts enc trans: $(SHOWFLAGS)
showflags:
$(MESSAGE_BEGIN) \
- " BASERUBY = $(BASERUBY)" \
" CC = $(CC)" \
" LD = $(LD)" \
" LDSHARED = $(LDSHARED)" \
@@ -260,9 +204,6 @@ showflags:
" LANG = $(LANG)" \
" LC_ALL = $(LC_ALL)" \
" LC_CTYPE = $(LC_CTYPE)" \
- " MFLAGS = $(MFLAGS)" \
- " RUSTC = $(RUSTC)" \
- " YJIT_RUSTC_ARGS = $(YJIT_RUSTC_ARGS)" \
$(MESSAGE_END)
-@$(CC_VERSION)
@@ -277,20 +218,19 @@ EXTS_NOTE = -f $(EXTS_MK) $(mflags) RUBY="$(MINIRUBY)" top_srcdir="$(srcdir)" no
exts: build-ext
EXTS_MK = exts.mk
-$(EXTS_MK): ext/configure-ext.mk $(srcdir)/template/exts.mk.tmpl \
- $(TIMESTAMPDIR)/$(arch)/.time $(TIMESTAMPDIR)/.RUBYCOMMONDIR.time
+$(EXTS_MK): ext/configure-ext.mk $(TIMESTAMPDIR)/$(arch)/.time $(srcdir)/template/exts.mk.tmpl
$(Q)$(MAKE) -f ext/configure-ext.mk $(mflags) V=$(V) EXTSTATIC=$(EXTSTATIC) \
gnumake=$(gnumake) MINIRUBY="$(MINIRUBY)" \
EXTLDFLAGS="$(EXTLDFLAGS)" srcdir="$(srcdir)"
$(ECHO) generating makefile $@
- $(Q)$(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ -c \
- $(srcdir)/template/exts.mk.tmpl --gnumake=$(gnumake) --configure-exts=ext/configure-ext.mk
+ $(Q)$(MINIRUBY) $(srcdir)/tool/generic_erb.rb -o $@ -c \
+ $(srcdir)/template/exts.mk.tmpl --gnumake=$(gnumake)
ext/configure-ext.mk: $(PREP) all-incs $(MKFILES) $(RBCONFIG) $(LIBRUBY) \
$(srcdir)/template/configure-ext.mk.tmpl
$(ECHO) generating makefiles $@
$(Q)$(MAKEDIRS) $(@D)
- $(Q)$(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ -c \
+ $(Q)$(MINIRUBY) $(srcdir)/tool/generic_erb.rb -o $@ -c \
$(srcdir)/template/$(@F).tmpl --srcdir="$(srcdir)" \
--miniruby="$(MINIRUBY)" --script-args='$(SCRIPT_ARGS)'
@@ -298,19 +238,18 @@ configure-ext: $(EXTS_MK)
build-ext: $(EXTS_MK)
$(Q)$(MAKE) -f $(EXTS_MK) $(mflags) libdir="$(libdir)" LIBRUBY_EXTS=$(LIBRUBY_EXTS) \
- EXTENCS="$(ENCOBJS)" MINIRUBY="$(MINIRUBY)" UPDATE_LIBRARIES=no $(EXTSTATIC)
+ EXTENCS="$(ENCOBJS)" UPDATE_LIBRARIES=no $(EXTSTATIC)
$(Q)$(MAKE) $(EXTS_NOTE)
exts-note: $(EXTS_MK)
$(Q)$(MAKE) $(EXTS_NOTE)
-ext/extinit.c: $(srcdir)/template/extinit.c.tmpl $(PREP)
- $(MAKEDIRS) $(@D)
- $(Q)$(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ -c \
+ext/extinit.c: $(srcdir)/template/extinit.c.tmpl
+ $(Q)$(MINIRUBY) $(srcdir)/tool/generic_erb.rb -o $@ -c \
$(srcdir)/template/extinit.c.tmpl $(EXTINITS)
prog: program wprogram
-programs: $(PROGRAM) $(WPROGRAM) $(arch)-fake.rb
+programs: $(PROGRAM) $(WPROGRAM)
$(PREP): $(MKFILES)
@@ -319,14 +258,11 @@ miniruby$(EXEEXT): config.status $(ALLOBJS) $(ARCHFILE)
objs: $(ALLOBJS)
GORUBY = go$(RUBY_INSTALL_NAME)
-GOLF = $(GORUBY)
-golf: $(GOLF)
-$(GOLF): $(LIBRUBY) $(GOLFOBJS) PHONY
+golf: $(LIBRUBY) $(GOLFOBJS) PHONY
$(Q) $(MAKE) $(mflags) \
- GOLF=_dummy_golf_target_to_avoid_conflict_just_in_case_ \
MAINOBJ=goruby.$(OBJEXT) \
+ EXTOBJS="golf_prelude.$(OBJEXT) $(EXTOBJS)" \
PROGRAM=$(GORUBY)$(EXEEXT) \
- V=$(V) \
program
capi: $(CAPIOUT)/.timestamp PHONY
@@ -336,9 +272,9 @@ $(CAPIOUT)/.timestamp: Doxyfile $(PREP)
-$(Q) $(DOXYGEN) -b
$(Q) $(MINIRUBY) -e 'File.open(ARGV[0], "w"){'"|f|"' f.puts(Time.now)}' "$@"
-Doxyfile: $(srcdir)/template/Doxyfile.tmpl $(PREP) $(tooldir)/generic_erb.rb $(RBCONFIG)
+Doxyfile: $(srcdir)/template/Doxyfile.tmpl $(PREP) $(srcdir)/tool/generic_erb.rb $(RBCONFIG)
$(ECHO) generating $@
- $(Q) $(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ $(srcdir)/template/Doxyfile.tmpl \
+ $(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -o $@ $(srcdir)/template/Doxyfile.tmpl \
--srcdir="$(srcdir)" --miniruby="$(MINIRUBY)"
program: $(SHOWFLAGS) $(PROGRAM)
@@ -349,22 +285,18 @@ $(PROGRAM) $(WPROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP
$(LIBRUBY_A): $(LIBRUBY_A_OBJS) $(MAINOBJ) $(INITOBJS) $(ARCHFILE)
-$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP) $(BUILTIN_ENCOBJS)
+$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP) $(LIBRUBY_SO_UPDATE) $(BUILTIN_ENCOBJS)
$(LIBRUBY_EXTS):
- @$(NULLCMD) > $@
+ @exit > $@
$(STATIC_RUBY)$(EXEEXT): $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A)
$(Q)$(RM) $@
- $(PURIFY) $(CC) $(MAINOBJ) $(DLDOBJS) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(XLDFLAGS)
+ $(PURIFY) $(CC) $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(XLDFLAGS)
ruby.imp: $(COMMONOBJS)
- $(Q){ \
- $(NM) -Pgp $(COMMONOBJS) | \
- awk 'BEGIN{print "#!"}; $$2~/^[A-TV-Z]$$/&&$$1!~/^$(SYMBOL_PREFIX)(Init_|InitVM_|ruby_static_id_|.*_threadptr_|rb_ec_)|^\./{print $$1}'; \
- ($(CHDIR) $(srcdir) && \
- exec sed -n '/^RJIT_FUNC_EXPORTED/!d;N;s/.*\n\(rb_[a-zA-Z_0-9]*\).*/$(SYMBOL_PREFIX)\1/p' cont.c gc.c thread*c vm*.c) \
- } | \
+ $(Q)$(NM) -Pgp $(COMMONOBJS) | \
+ awk 'BEGIN{print "#!"}; $$2~/^[BDT]$$/&&$$1!~/^(Init_|ruby_static_id_|.*_threadptr_|rb_ec_\.)/{print $$1}' | \
sort -u -o $@
install: install-$(INSTALLDOC)
@@ -373,17 +305,17 @@ pkgconfig-data: $(ruby_pc)
$(ruby_pc): $(srcdir)/template/ruby.pc.in config.status
install-all: docs pre-install-all do-install-all post-install-all
-pre-install-all:: all pre-install-local pre-install-ext pre-install-gem pre-install-doc
+pre-install-all:: all pre-install-local pre-install-ext pre-install-doc
do-install-all: pre-install-all
- $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all $(INSTALL_DOC_OPTS)
-post-install-all:: post-install-local post-install-ext post-install-gem post-install-doc
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all --rdoc-output="$(RDOCOUT)"
+post-install-all:: post-install-local post-install-ext post-install-doc
@$(NULLCMD)
install-nodoc: pre-install-nodoc do-install-nodoc post-install-nodoc
-pre-install-nodoc:: pre-install-local pre-install-ext pre-install-gem
+pre-install-nodoc:: pre-install-local pre-install-ext
do-install-nodoc: main pre-install-nodoc
- $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all --exclude=doc
-post-install-nodoc:: post-install-local post-install-ext post-install-gem
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS)
+post-install-nodoc:: post-install-local post-install-ext
install-local: pre-install-local do-install-local post-install-local
pre-install-local:: pre-install-bin pre-install-lib pre-install-man
@@ -457,12 +389,12 @@ what-where-all: no-install-all
no-install-all: pre-no-install-all dont-install-all post-no-install-all
pre-no-install-all:: pre-no-install-local pre-no-install-ext pre-no-install-doc
dont-install-all: $(PROGRAM)
- $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all $(INSTALL_DOC_OPTS)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all --rdoc-output="$(RDOCOUT)"
post-no-install-all:: post-no-install-local post-no-install-ext post-no-install-doc
@$(NULLCMD)
uninstall: $(INSTALLED_LIST) sudo-precheck
- $(Q)$(SUDO) $(MINIRUBY) $(tooldir)/rbuninstall.rb --destdir=$(DESTDIR) $(INSTALLED_LIST)
+ $(Q)$(SUDO) $(MINIRUBY) $(srcdir)/tool/rbuninstall.rb --destdir=$(DESTDIR) $(INSTALLED_LIST)
reinstall: all uninstall install
@@ -470,7 +402,7 @@ what-where-nodoc: no-install-nodoc
no-install-nodoc: pre-no-install-nodoc dont-install-nodoc post-no-install-nodoc
pre-no-install-nodoc:: pre-no-install-local pre-no-install-ext
dont-install-nodoc: $(PREP)
- $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --exclude=doc
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS)
post-no-install-nodoc:: post-no-install-local post-no-install-ext
what-where-local: no-install-local
@@ -544,35 +476,28 @@ post-no-install-man::
install-doc: rdoc pre-install-doc do-install-doc post-install-doc
pre-install-doc:: install-prereq
do-install-doc: $(PROGRAM) pre-install-doc
- $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=rdoc $(INSTALL_DOC_OPTS)
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=rdoc --rdoc-output="$(RDOCOUT)"
post-install-doc::
@$(NULLCMD)
install-gem: pre-install-gem do-install-gem post-install-gem
-pre-install-gem:: prepare-gems pre-install-bin pre-install-lib pre-install-man
+pre-install-gem:: pre-install-bin pre-install-lib pre-install-man
do-install-gem: $(PROGRAM) pre-install-gem
$(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=gem
post-install-gem::
@$(NULLCMD)
-install-dbg: pre-install-dbg do-install-dbg post-install-dbg
-pre-install-dbg::
-do-install-dbg: $(PROGRAM) pre-install-dbg
- $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=dbg
-post-install-dbg::
- @$(NULLCMD)
-
rdoc: PHONY main
@echo Generating RDoc documentation
- $(Q) $(RDOC) --ri --op "$(RDOCOUT)" $(RDOC_GEN_OPTS) $(RDOCFLAGS) "$(srcdir)"
+ $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --root "$(srcdir)" --page-dir "$(srcdir)/doc" --encoding=UTF-8 --no-force-update --all --ri --op "$(RDOCOUT)" $(RDOCFLAGS) "$(srcdir)"
html: PHONY main
@echo Generating RDoc HTML files
- $(Q) $(RDOC) --op "$(HTMLOUT)" $(RDOC_GEN_OPTS) $(RDOCFLAGS) "$(srcdir)"
+ $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --root "$(srcdir)" --page-dir "$(srcdir)/doc" --encoding=UTF-8 --no-force-update --all --op "$(HTMLOUT)" $(RDOCFLAGS) "$(srcdir)"
rdoc-coverage: PHONY main
@echo Generating RDoc coverage report
- $(Q) $(RDOC) --quiet -C $(RDOCFLAGS) "$(srcdir)"
+ $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --root "$(srcdir)" --encoding=UTF-8 --all --quiet -C $(RDOCFLAGS) "$(srcdir)"
RDOCBENCHOUT=/tmp/rdocbench
@@ -590,7 +515,7 @@ what-where-doc: no-install-doc
no-install-doc: pre-no-install-doc dont-install-doc post-no-install-doc
pre-no-install-doc:: install-prereq
dont-install-doc:: $(PREP)
- $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=rdoc $(INSTALL_DOC_OPTS)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=rdoc --rdoc-output="$(RDOCOUT)"
post-no-install-doc::
@$(NULLCMD)
@@ -603,20 +528,15 @@ clear-installed-list: PHONY
clean: clean-ext clean-enc clean-golf clean-docs clean-extout clean-local clean-platform clean-spec
clean-local:: clean-runnable
- $(Q)$(RM) $(OBJS) $(MINIOBJS) $(INITOBJS) $(MAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES)
+ $(Q)$(RM) $(OBJS) $(MINIOBJS) $(MAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES)
$(Q)$(RM) $(PROGRAM) $(WPROGRAM) miniruby$(EXEEXT) dmyext.$(OBJEXT) dmyenc.$(OBJEXT) $(ARCHFILE) .*.time
- $(Q)$(RM) y.tab.c y.output encdb.h transdb.h config.log rbconfig.rb $(ruby_pc) $(COROUTINE_H:/Context.h=/.time)
- $(Q)$(RM) probes.h probes.$(OBJEXT) probes.stamp ruby-glommed.$(OBJEXT) ruby.imp ChangeLog $(STATIC_RUBY)$(EXEEXT)
- $(Q)$(RM) GNUmakefile.old Makefile.old $(arch)-fake.rb bisect.sh $(ENC_TRANS_D) builtin_binary.inc
- -$(Q)$(RMALL) yjit/target
- -$(Q) $(RMDIR) enc/jis enc/trans enc $(COROUTINE_H:/Context.h=) coroutine yjit 2> $(NULL) || $(NULLCMD)
-
-bin/clean-runnable:: PHONY
- $(Q)$(CHDIR) bin 2>$(NULL) && $(RM) $(PROGRAM) $(WPROGRAM) $(GORUBY)$(EXEEXT) bin/*.$(DLEXT) 2>$(NULL) || $(NULLCMD)
-lib/clean-runnable:: PHONY
- $(Q)$(CHDIR) lib 2>$(NULL) && $(RM) $(LIBRUBY_A) $(LIBRUBY) $(LIBRUBY_ALIASES) $(RUBY_BASE_NAME)/$(RUBY_PROGRAM_VERSION) $(RUBY_BASE_NAME)/vendor_ruby 2>$(NULL) || $(NULLCMD)
-clean-runnable:: bin/clean-runnable lib/clean-runnable PHONY
- $(Q)$(RMDIR) lib/$(RUBY_BASE_NAME) lib bin 2>$(NULL) || $(NULLCMD)
+ $(Q)$(RM) y.tab.c y.output encdb.h transdb.h config.log rbconfig.rb $(ruby_pc) probes.h probes.$(OBJEXT) probes.stamp ruby-glommed.$(OBJEXT)
+ $(Q)$(RM) GNUmakefile.old Makefile.old $(arch)-fake.rb bisect.sh $(ENC_TRANS_D)
+ -$(Q) $(RMDIR) enc/jis enc/trans enc 2> $(NULL) || exit 0
+clean-runnable:: PHONY
+ $(Q)$(CHDIR) bin 2>$(NULL) && $(RM) $(PROGRAM) $(WPROGRAM) $(GORUBY)$(EXEEXT) bin/*.$(DLEXT) 2>$(NULL) || exit 0
+ $(Q)$(CHDIR) lib 2>$(NULL) && $(RM) $(LIBRUBY_A) $(LIBRUBY) $(LIBRUBY_ALIASES) $(RUBY_BASE_NAME)/$(RUBY_PROGRAM_VERSION) $(RUBY_BASE_NAME)/vendor_ruby 2>$(NULL) || exit 0
+ $(Q)$(RMDIR) lib/$(RUBY_BASE_NAME) lib bin 2>$(NULL) || exit 0
clean-ext:: PHONY
clean-golf: PHONY
$(Q)$(RM) $(GORUBY)$(EXEEXT) $(GOLFOBJS)
@@ -625,14 +545,14 @@ clean-html: PHONY
clean-capi: PHONY
clean-platform: PHONY
clean-extout: PHONY
- -$(Q)$(RMDIR) $(EXTOUT)/$(arch) $(RUBYCOMMONDIR) $(EXTOUT) 2> $(NULL) || $(NULLCMD)
+ -$(Q)$(RMDIR) $(EXTOUT)/$(arch) $(EXTOUT) 2> $(NULL) || exit 0
clean-docs: clean-rdoc clean-html clean-capi
clean-spec: PHONY
clean-rubyspec: clean-spec
distclean: distclean-ext distclean-enc distclean-golf distclean-docs distclean-extout distclean-local distclean-platform distclean-spec
distclean-local:: clean-local
- $(Q)$(RM) $(MKFILES) yasmdata.rb *.inc $(PRELUDES) *.rbinc
+ $(Q)$(RM) $(MKFILES) yasmdata.rb *.inc $(PRELUDES)
$(Q)$(RM) config.cache config.status config.status.lineno
$(Q)$(RM) *~ *.bak *.stackdump core *.core gmon.out $(PREP)
-$(Q)$(RMALL) $(srcdir)/autom4te.cache
@@ -648,25 +568,12 @@ distclean-spec: clean-spec
distclean-rubyspec: distclean-spec
realclean:: realclean-ext realclean-local realclean-enc realclean-golf realclean-extout
-realclean-local:: distclean-local realclean-srcs-local
-
-clean-srcs:: clean-srcs-local clean-srcs-ext
-realclean-srcs:: realclean-srcs-local realclean-srcs-ext
-
-clean-srcs-local::
+realclean-local:: distclean-local
$(Q)$(RM) parse.c parse.h lex.c enc/trans/newline.c revision.h
- $(Q)$(RM) id.c id.h probes.dmyh probes.h
- $(Q)$(RM) encdb.h transdb.h verconf.h ruby-runner.h
-
-realclean-srcs-local:: clean-srcs-local
- $(Q)$(CHDIR) $(srcdir) && $(RM) \
- parse.c parse.h lex.c enc/trans/newline.c $(PRELUDES) revision.h \
- id.c id.h probes.dmyh configure aclocal.m4 tool/config.guess tool/config.sub gems/*.gem \
- || $(NULLCMD)
-
-clean-srcs-ext::
-realclean-srcs-ext:: clean-srcs-ext
-
+ $(Q)$(RM) id.c id.h probes.dmyh
+ $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) parse.c parse.h lex.c enc/trans/newline.c $(PRELUDES) revision.h
+ $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) id.c id.h probes.dmyh
+ $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) configure aclocal.m4 tool/config.guess tool/config.sub gems/*.gem
realclean-ext:: PHONY
realclean-golf: distclean-golf
$(Q)$(RM) $(GOLFPRELUDES)
@@ -679,29 +586,29 @@ realclean-platform: distclean-platform
realclean-spec: distclean-spec
realclean-rubyspec: realclean-spec
-clean-ext:: ext/clean .bundle/clean timestamp/clean
-distclean-ext:: ext/distclean .bundle/distclean timestamp/distclean
-realclean-ext:: ext/realclean .bundle/realclean timestamp/realclean
+clean-ext:: ext/clean gems/clean timestamp/clean
+distclean-ext:: ext/distclean gems/distclean timestamp/distclean
+realclean-ext:: ext/realclean gems/realclean timestamp/realclean
ext/clean.mk ext/distclean.mk ext/realclean.mk::
-ext/clean:: ext/clean.mk
-ext/distclean:: ext/distclean.mk
-ext/realclean:: ext/realclean.mk
+ext/clean gems/clean:: ext/clean.mk
+ext/distclean gems/distclean:: ext/distclean.mk
+ext/realclean gems/realclean:: ext/realclean.mk
-timestamp/clean:: ext/clean .bundle/clean
-timestamp/distclean:: ext/distclean .bundle/distclean
-timestamp/realclean:: ext/realclean .bundle/realclean
+timestamp/clean:: ext/clean gems/clean
+timestamp/distclean:: ext/distclean gems/distclean
+timestamp/realclean:: ext/realclean gems/realclean
timestamp/clean timestamp/distclean timestamp/realclean::
$(Q)$(RM) $(TIMESTAMPDIR)/.*.time $(TIMESTAMPDIR)/$(arch)/.time
- $(Q)$(RMDIRS) $(TIMESTAMPDIR)/$(arch) $(TIMESTAMPDIR) 2> $(NULL) || $(NULLCMD)
+ $(Q)$(RMDIRS) $(TIMESTAMPDIR)/$(arch) 2> $(NULL) || exit 0
clean-ext::
-$(Q)$(RM) ext/extinit.$(OBJEXT)
distclean-ext realclean-ext::
-$(Q)$(RM) $(EXTS_MK) ext/extinit.* ext/configure-ext.mk
- -$(Q)$(RMDIR) ext 2> $(NULL) || $(NULLCMD)
+ -$(Q)$(RMDIR) ext 2> $(NULL) || exit 0
clean-enc distclean-enc realclean-enc: PHONY
@@ -709,7 +616,7 @@ clean-enc: clean-enc.d
clean-enc.d: PHONY
$(Q)$(RM) $(ENC_TRANS_D)
- -$(Q) $(RMDIR) enc/jis enc/trans enc 2> $(NULL) || $(NULLCMD)
+ -$(Q) $(RMDIR) enc/jis enc/trans enc 2> $(NULL) || exit 0
clean-rdoc distclean-rdoc realclean-rdoc:
@echo $(@:-rdoc=ing) rdoc
@@ -723,166 +630,111 @@ clean-capi distclean-capi realclean-capi:
@echo $(@:-capi=ing) capi
$(Q)$(RMALL) $(CAPIOUT)
-clean-platform distclean-platform realclean-platform:
+clean-platform:
$(Q) $(RM) $(PLATFORM_D)
- -$(Q) $(RMDIR) $(PLATFORM_DIR) 2> $(NULL) || $(NULLCMD)
+ -$(Q) $(RMDIR) $(PLATFORM_DIR) 2> $(NULL) || exit 0
RUBYSPEC_CAPIEXT = spec/ruby/optional/capi/ext
clean-spec: PHONY
-$(Q) $(RM) $(RUBYSPEC_CAPIEXT)/*.$(OBJEXT) $(RUBYSPEC_CAPIEXT)/*.$(DLEXT)
- -$(Q) $(RMDIRS) $(RUBYSPEC_CAPIEXT) 2> $(NULL) || $(NULLCMD)
- -$(Q) $(RMALL) rubyspec_temp
+ -$(Q) $(RMDIRS) $(RUBYSPEC_CAPIEXT) 2> $(NULL) || exit 0
-check: main $(DOT_WAIT) test $(DOT_WAIT) test-tool $(DOT_WAIT) test-all
+check: main test test-testframework test-almost
$(ECHO) check succeeded
- -$(Q) : : "run only on sh"; \
- if [ x"$(GIT)" != x ] && $(CHDIR) "$(srcdir)" && \
- b=`$(GIT) symbolic-ref --short HEAD 2>&1` && \
- u=`$(GIT) branch --list --format='%(upstream:short)' $$b`; then \
- set -x; $(GIT) --no-pager log --format=oneline -G '^ *# *include *("|<ruby)' $$u..HEAD --; \
- fi
check-ruby: test test-ruby
fake: $(CROSS_COMPILING)-fake
yes-fake: $(arch)-fake.rb $(RBCONFIG) PHONY
no-fake -fake: PHONY
-$(HAVE_BASERUBY:no=)$(arch)-fake.rb: miniruby$(EXEEXT)
-
-# actually depending on other headers more.
-$(arch:noarch=ignore)-fake.rb: $(top_srcdir)/revision.h $(top_srcdir)/version.h $(srcdir)/version.c
-$(arch:noarch=ignore)-fake.rb: {$(VPATH)}id.h {$(VPATH)}vm_opts.h $(REVISION_H)
-
-$(arch:noarch=ignore)-fake.rb: $(srcdir)/template/fake.rb.in $(tooldir)/generic_erb.rb
+# really doesn't depend on .o, just ensure newer than headers which
+# version.o depends on.
+$(arch)-fake.rb: $(srcdir)/template/fake.rb.in $(srcdir)/tool/generic_erb.rb version.$(OBJEXT) miniruby$(EXEEXT)
$(ECHO) generating $@
- $(Q) $(CPP) -DRUBY_EXPORT $(INCFLAGS) $(CPPFLAGS) "$(srcdir)/version.c" | \
- $(BOOTSTRAPRUBY) "$(tooldir)/generic_erb.rb" -o $@ "$(srcdir)/template/fake.rb.in" \
+ $(Q) $(CPP) $(warnflags) $(XCFLAGS) $(CPPFLAGS) "$(srcdir)/version.c" | \
+ $(BOOTSTRAPRUBY) "$(srcdir)/tool/generic_erb.rb" -o $@ "$(srcdir)/template/fake.rb.in" \
i=- srcdir="$(srcdir)" BASERUBY="$(BASERUBY)"
-noarch-fake.rb: # prerequisite of yes-fake
- $(Q) exit > $@
-
-# runner: BASERUBY, target: miniruby
btest: $(TEST_RUNNABLE)-btest
no-btest: PHONY
-yes-btest: yes-fake miniruby$(EXEEXT) PHONY
- $(ACTIONS_GROUP)
- $(Q)$(gnumake_recursive)$(exec) $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY) $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(BTESTS)
- $(ACTIONS_ENDGROUP)
+yes-btest: fake miniruby$(EXEEXT) PHONY
+ $(Q)$(exec) $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY) $(RUN_OPTS)" $(OPTS) $(TESTOPTS)
-# runner: ruby, target: ruby
btest-ruby: $(TEST_RUNNABLE)-btest-ruby
no-btest-ruby: PHONY
yes-btest-ruby: prog PHONY
- $(ACTIONS_GROUP)
- $(Q)$(gnumake_recursive)$(exec) $(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(BTESTS)
- $(ACTIONS_ENDGROUP)
-
-# runner: BASERUBY, target: ruby
-btest-bruby: prog PHONY
- $(ACTIONS_GROUP)
- $(Q)$(gnumake_recursive)$(exec) $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(BTESTS)
- $(ACTIONS_ENDGROUP)
-
-rtest: yes-fake miniruby$(EXEEXT) PHONY
- $(ACTIONS_GROUP)
- $(Q)$(exec) $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY) $(RUN_OPTS)" --sets=ractor -v
- $(ACTIONS_ENDGROUP)
+ $(Q)$(exec) $(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib $(RUN_OPTS)" -q $(OPTS) $(TESTOPTS)
test-basic: $(TEST_RUNNABLE)-test-basic
no-test-basic: PHONY
yes-test-basic: prog PHONY
- $(ACTIONS_GROUP)
$(Q)$(exec) $(RUNRUBY) "$(srcdir)/basictest/runner.rb" --run-opt=$(RUN_OPTS) $(OPTS) $(TESTOPTS)
- $(ACTIONS_ENDGROUP)
test-knownbugs: test-knownbug
test-knownbug: $(TEST_RUNNABLE)-test-knownbug
no-test-knownbug: PHONY
yes-test-knownbug: prog PHONY
- $(ACTIONS_GROUP)
-$(exec) $(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(srcdir)/KNOWNBUGS.rb
- $(ACTIONS_ENDGROUP)
test-testframework: $(TEST_RUNNABLE)-test-testframework
yes-test-testframework: prog PHONY
- $(ACTIONS_GROUP)
- $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(TOOL_TESTSDIR)/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS) testunit
- $(ACTIONS_ENDGROUP)
+ $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS) testunit minitest
no-test-testframework: PHONY
-test-tool: $(TEST_RUNNABLE)-test-tool
-yes-test-tool: prog PHONY
- $(ACTIONS_GROUP)
- $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(TOOL_TESTSDIR)/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS)
- $(ACTIONS_ENDGROUP)
-no-test-tool: PHONY
-
test-sample: test-basic # backward compatibility for mswin-build
-test-short: btest-ruby $(DOT_WAIT) test-knownbug $(DOT_WAIT) test-basic
-test: test-short
+test: btest-ruby test-knownbug test-basic
# $ make test-all TESTOPTS="--help" displays more detail
# for example, make test-all TESTOPTS="-j2 -v -n test-name -- test-file-name"
test-all: $(TEST_RUNNABLE)-test-all
yes-test-all: programs PHONY
- $(ACTIONS_GROUP)
- $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(TESTSDIR)/runner.rb" --ruby="$(RUNRUBY)" $(TEST_EXCLUDES) $(TESTOPTS) $(TESTS)
- $(ACTIONS_ENDGROUP)
+ $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TEST_EXCLUDES) $(TESTOPTS) $(TESTS)
TESTS_BUILD = mkmf
no-test-all: PHONY
- $(gnumake_recursive)$(MINIRUBY) -I"$(srcdir)/lib" "$(TESTSDIR)/runner.rb" $(TESTOPTS) $(TESTS_BUILD)
+ $(gnumake_recursive)$(MINIRUBY) -I"$(srcdir)/lib" "$(srcdir)/test/runner.rb" $(TESTOPTS) $(TESTS_BUILD)
-test-almost: test-all
-yes-test-almost: yes-test-all
-no-test-almost: no-test-all
+test-almost: $(TEST_RUNNABLE)-test-almost
+yes-test-almost: prog PHONY
+ $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TEST_EXCLUDES) $(TESTOPTS) $(EXCLUDE_TESTFRAMEWORK) $(TESTS)
+no-test-almost: PHONY
test-ruby: $(TEST_RUNNABLE)-test-ruby
no-test-ruby: PHONY
yes-test-ruby: prog encs PHONY
- $(gnumake_recursive)$(RUNRUBY) "$(TESTSDIR)/runner.rb" $(TEST_EXCLUDES) $(TESTOPTS) -- ruby -ext-
+ $(gnumake_recursive)$(RUNRUBY) "$(srcdir)/test/runner.rb" $(TEST_EXCLUDES) $(TESTOPTS) -- ruby -ext-
extconf: $(PREP)
$(Q) $(MAKEDIRS) "$(EXTCONFDIR)"
$(RUNRUBY) -C "$(EXTCONFDIR)" $(EXTCONF) $(EXTCONFARGS)
-rbconfig.rb: $(RBCONFIG)
-
-$(HAVE_BASERUBY:no=)$(RBCONFIG)$(HAVE_BASERUBY:no=): $(PREP)
-$(RBCONFIG): $(tooldir)/mkconfig.rb config.status $(srcdir)/version.h $(srcdir)/common.mk
+$(RBCONFIG): $(srcdir)/tool/mkconfig.rb config.status $(srcdir)/version.h
$(Q)$(BOOTSTRAPRUBY) -n \
-e 'BEGIN{version=ARGV.shift;mis=ARGV.dup}' \
-e 'END{abort "UNICODE version mismatch: #{mis}" unless mis.empty?}' \
-e '(mis.delete(ARGF.path); ARGF.close) if /ONIG_UNICODE_VERSION_STRING +"#{Regexp.quote(version)}"/o' \
$(UNICODE_VERSION) $(UNICODE_DATA_HEADERS)
- $(Q)$(BOOTSTRAPRUBY) $(tooldir)/mkconfig.rb \
+ $(Q)$(BOOTSTRAPRUBY) $(srcdir)/tool/mkconfig.rb \
-arch=$(arch) -version=$(RUBY_PROGRAM_VERSION) \
-install_name=$(RUBY_INSTALL_NAME) \
-so_name=$(RUBY_SO_NAME) \
-unicode_version=$(UNICODE_VERSION) \
- -unicode_emoji_version=$(UNICODE_EMOJI_VERSION) \
> rbconfig.tmp
$(IFCHANGE) "--timestamp=$@" rbconfig.rb rbconfig.tmp
test-rubyspec: test-spec
yes-test-rubyspec: yes-test-spec
-test-spec-precheck: programs yes-fake
+test-spec-precheck: $(arch)-fake.rb programs
test-spec: $(TEST_RUNNABLE)-test-spec
yes-test-spec: test-spec-precheck
- $(ACTIONS_GROUP)
$(gnumake_recursive)$(Q) \
- $(RUNRUBY) -r./$(arch)-fake -r$(tooldir)/rubyspec_temp \
- $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT) $(SPECOPTS)
- $(ACTIONS_ENDGROUP)
+ $(RUNRUBY) -r./$(arch)-fake $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT) $(SPECOPTS)
no-test-spec:
-check: $(DOT_WAIT) test-spec
-
RUNNABLE = $(LIBRUBY_RELATIVE:no=un)-runnable
-runnable: $(RUNNABLE) prog $(tooldir)/mkrunnable.rb PHONY
- $(Q) $(MINIRUBY) $(tooldir)/mkrunnable.rb -v $(EXTOUT)
+runnable: $(RUNNABLE) prog $(srcdir)/tool/mkrunnable.rb PHONY
+ $(Q) $(MINIRUBY) $(srcdir)/tool/mkrunnable.rb -v $(EXTOUT)
yes-runnable: PHONY
encs: enc trans
@@ -895,13 +747,11 @@ encs enc trans libencs libenc libtrans: $(SHOWFLAGS) $(ENC_MK) $(LIBRUBY) $(PREP
libenc enc: {$(VPATH)}encdb.h
libtrans trans: {$(VPATH)}transdb.h
-ENC_HEADERS = $(srcdir)/enc/jis/props.h
# Use MINIRUBY which loads fake.rb for cross compiling
$(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc/depend \
- $(srcdir)/enc/encinit.c.erb $(ENC_HEADERS) $(srcdir)/lib/mkmf.rb $(RBCONFIG) $(HAVE_BASERUBY)-fake
+ $(srcdir)/enc/encinit.c.erb $(srcdir)/lib/mkmf.rb $(RBCONFIG) fake
$(ECHO) generating $@
- $(Q) $(BOOTSTRAPRUBY_COMMAND) $(srcdir)/enc/make_encmake.rb \
- --builtin-encs="$(BUILTIN_ENCOBJS)" --builtin-transes="$(BUILTIN_TRANSOBJS)" --module$(ENCSTATIC) $(ENCS) $@
+ $(Q) $(MINIRUBY) $(srcdir)/enc/make_encmake.rb --builtin-encs="$(BUILTIN_ENCOBJS)" --builtin-transes="$(BUILTIN_TRANSOBJS)" --module$(ENCSTATIC) $(ENCS) $@
.PRECIOUS: $(MKFILES)
@@ -911,107 +761,91 @@ $(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc
.PHONY: clean clean-ext clean-local clean-enc clean-golf clean-rdoc clean-html clean-extout
.PHONY: distclean distclean-ext distclean-local distclean-enc distclean-golf distclean-extout
.PHONY: realclean realclean-ext realclean-local realclean-enc realclean-golf realclean-extout
-.PHONY: exam check test test-short test-all btest btest-ruby test-basic test-knownbug
-.PHONY: run runruby parse benchmark gdb gdb-ruby
+.PHONY: check test test-all btest btest-ruby test-basic test-knownbug
+.PHONY: run runruby parse benchmark benchmark-each tbench gdb gdb-ruby
.PHONY: update-mspec update-rubyspec test-rubyspec test-spec
.PHONY: touch-unicode-files
PHONY:
-{$(VPATH)}parse.c: {$(VPATH)}parse.y $(tooldir)/ytab.sed {$(VPATH)}id.h
+{$(VPATH)}parse.c: {$(VPATH)}parse.y $(srcdir)/tool/ytab.sed {$(VPATH)}id.h
{$(VPATH)}parse.h: {$(VPATH)}parse.c
{$(srcdir)}.y.c:
$(ECHO) generating $@
- $(Q)$(BASERUBY) $(tooldir)/id2token.rb $(SRC_FILE) > parse.tmp.y
+ $(Q)$(BASERUBY) $(srcdir)/tool/id2token.rb --path-separator=.$(PATH_SEPARATOR)./ --vpath=$(VPATH) id.h $(SRC_FILE) > parse.tmp.y
$(Q)$(YACC) -d $(YFLAGS) -o y.tab.c parse.tmp.y
$(Q)$(RM) parse.tmp.y
- $(Q)sed -f $(tooldir)/ytab.sed -e "/^#/s|parse\.tmp\.[iy]|$(SRC_FILE)|" -e "/^#/s!y\.tab\.c!$@!" y.tab.c > $@.new
+ $(Q)sed -f $(srcdir)/tool/ytab.sed -e "/^#/s|parse\.tmp\.[iy]|$(SRC_FILE)|" -e "/^#/s!y\.tab\.c!$@!" y.tab.c > $@.new
$(Q)$(MV) $@.new $@
$(Q)sed -e "/^#line.*y\.tab\.h/d;/^#line.*parse.*\.y/d" y.tab.h > $(@:.c=.h)
$(Q)$(RM) y.tab.c y.tab.h
$(PLATFORM_D):
$(Q) $(MAKEDIRS) $(PLATFORM_DIR) $(@D)
- @$(NULLCMD) > $@
-
-exe/$(PROGRAM): ruby-runner.c ruby-runner.h exe/.time $(PREP) {$(VPATH)}config.h
- $(Q) $(CC) $(CFLAGS) $(INCFLAGS) $(CPPFLAGS) -DRUBY_INSTALL_NAME=$(@F) $(COUTFLAG)ruby-runner.$(OBJEXT) -c $(CSRCFLAG)$(srcdir)/ruby-runner.c
- $(Q) $(PURIFY) $(CC) $(CFLAGS) $(LDFLAGS) $(OUTFLAG)$@ ruby-runner.$(OBJEXT) $(LIBS)
- $(Q) $(POSTLINK)
- $(Q) $(BOOTSTRAPRUBY) \
- -e 'prog, dest, inst = ARGV; dest += "/ruby"' \
- -e 'exit unless prog==inst' \
+ @exit > $@
+
+exe/$(PROGRAM): ruby-runner.c ruby-runner.h exe/.time miniruby$(EXEEXT)
+ $(Q) $(PURIFY) $(CC) $(CFLAGS) $(CPPFLAGS) -DRUBY_INSTALL_NAME=$(@F) $(LDFLAGS) $(LIBS) $(OUTFLAG)$@ $<
+ $(Q) ./miniruby$(EXEEXT) \
+ -e 'prog, dest = ARGV; dest += "/ruby"' \
-e 'unless prog=="ruby"' \
-e ' begin File.unlink(dest); rescue Errno::ENOENT; end' \
-e ' File.symlink(prog, dest)' \
-e 'end' \
- $(@F) $(@D) $(RUBY_INSTALL_NAME)$(EXEEXT)
+ $(@F) $(@D)
exe/.time:
- $(Q) $(MAKEDIRS) $(@D)
- @$(NULLCMD) > $@
+ $(Q) $(MAKEDIRS) exe $(@D)
+ @exit > $@
$(BUILTIN_ENCOBJS) $(BUILTIN_TRANSOBJS): $(ENC_TRANS_D)
$(ENC_TRANS_D):
$(Q) $(MAKEDIRS) enc/trans $(@D)
- @$(NULLCMD) > $@
+ @exit > $@
$(TIMESTAMPDIR)/$(arch)/.time:
$(Q)$(MAKEDIRS) $(@D) $(EXTOUT)/$(arch)
- @$(NULLCMD) > $@
-
-$(TIMESTAMPDIR)/.RUBYCOMMONDIR.time:
- $(Q)$(MAKEDIRS) $(@D) $(RUBYCOMMONDIR)
- @$(NULLCMD) > $@
+ @exit > $@
###
CCAN_DIR = {$(VPATH)}ccan
RUBY_H_INCLUDES = {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h \
{$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h \
- {$(VPATH)}assert.h {$(VPATH)}subst.h
+ {$(VPATH)}subst.h
###
acosh.$(OBJEXT): {$(VPATH)}acosh.c
alloca.$(OBJEXT): {$(VPATH)}alloca.c {$(VPATH)}config.h
-cbrt.$(OBJEXT): {$(VPATH)}cbrt.c
-close.$(OBJEXT): {$(VPATH)}close.c
crypt.$(OBJEXT): {$(VPATH)}crypt.c {$(VPATH)}crypt.h {$(VPATH)}missing/des_tables.c
+dup2.$(OBJEXT): {$(VPATH)}dup2.c
erf.$(OBJEXT): {$(VPATH)}erf.c
explicit_bzero.$(OBJEXT): {$(VPATH)}explicit_bzero.c
-ffs.$(OBJEXT): {$(VPATH)}ffs.c
+finite.$(OBJEXT): {$(VPATH)}finite.c
flock.$(OBJEXT): {$(VPATH)}flock.c
-hypot.$(OBJEXT): {$(VPATH)}hypot.c
-langinfo.$(OBJEXT): {$(VPATH)}langinfo.c
-lgamma_r.$(OBJEXT): {$(VPATH)}lgamma_r.c
memcmp.$(OBJEXT): {$(VPATH)}memcmp.c
memmove.$(OBJEXT): {$(VPATH)}memmove.c
-nan.$(OBJEXT): {$(VPATH)}nan.c
-nextafter.$(OBJEXT): {$(VPATH)}nextafter.c
-procstat_vm.$(OBJEXT): {$(VPATH)}procstat_vm.c
+mkdir.$(OBJEXT): {$(VPATH)}mkdir.c
setproctitle.$(OBJEXT): {$(VPATH)}setproctitle.c
strchr.$(OBJEXT): {$(VPATH)}strchr.c
+strdup.$(OBJEXT): {$(VPATH)}strdup.c
strerror.$(OBJEXT): {$(VPATH)}strerror.c
strlcat.$(OBJEXT): {$(VPATH)}strlcat.c
strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c
strstr.$(OBJEXT): {$(VPATH)}strstr.c
-tgamma.$(OBJEXT): {$(VPATH)}tgamma.c
-
-.coroutine_obj $(COROUTINE_OBJ): \
- {$(VPATH)}$(COROUTINE_SRC) \
- $(COROUTINE_H:/Context.h=/.time)
-$(COROUTINE_H:/Context.h=/.time):
- $(Q) $(MAKEDIRS) $(@D)
- @$(NULLCMD) > $@
+nt.$(OBJEXT): {$(VPATH)}nt.c
+ia64.$(OBJEXT): {$(VPATH)}ia64.s
+ $(CC) $(CFLAGS) -c $<
###
# dependencies for generated C sources.
parse.$(OBJEXT): {$(VPATH)}parse.c
miniprelude.$(OBJEXT): {$(VPATH)}miniprelude.c
+prelude.$(OBJEXT): {$(VPATH)}prelude.c
# dependencies for optional sources.
compile.$(OBJEXT): {$(VPATH)}opt_sc.inc {$(VPATH)}optunifs.inc
@@ -1023,14 +857,14 @@ win32/win32.$(OBJEXT): {$(VPATH)}win32/win32.c {$(VPATH)}win32/file.h \
win32/file.$(OBJEXT): {$(VPATH)}win32/file.c {$(VPATH)}win32/file.h \
$(RUBY_H_INCLUDES) $(PLATFORM_D)
-$(NEWLINE_C): $(srcdir)/enc/trans/newline.trans $(tooldir)/transcode-tblgen.rb
+$(NEWLINE_C): $(srcdir)/enc/trans/newline.trans $(srcdir)/tool/transcode-tblgen.rb
$(Q) $(MAKEDIRS) $(@D)
- $(Q) $(BASERUBY) "$(tooldir)/transcode-tblgen.rb" -vo $@ $(srcdir)/enc/trans/newline.trans
+ $(Q) $(BASERUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo $@ $(srcdir)/enc/trans/newline.trans
enc/trans/newline.$(OBJEXT): $(NEWLINE_C)
-verconf.h: $(srcdir)/template/verconf.h.tmpl $(tooldir)/generic_erb.rb $(RBCONFIG)
+verconf.h: $(srcdir)/template/verconf.h.tmpl $(srcdir)/tool/generic_erb.rb
$(ECHO) creating $@
- $(Q) $(BOOTSTRAPRUBY) "$(tooldir)/generic_erb.rb" -o $@ $(srcdir)/template/verconf.h.tmpl
+ $(Q) $(BOOTSTRAPRUBY) "$(srcdir)/tool/generic_erb.rb" -o $@ $(srcdir)/template/verconf.h.tmpl
ruby-glommed.$(OBJEXT): $(OBJS)
@@ -1038,50 +872,24 @@ $(OBJS): {$(VPATH)}config.h {$(VPATH)}missing.h
INSNS2VMOPT = --srcdir="$(srcdir)"
-srcs_vpath = {$(VPATH)}
-
-inc_common_headers = $(tooldir)/ruby_vm/views/_copyright.erb $(tooldir)/ruby_vm/views/_notice.erb
-$(srcs_vpath)opt_sc.inc: $(tooldir)/ruby_vm/views/opt_sc.inc.erb $(inc_common_headers)
-$(srcs_vpath)optinsn.inc: $(tooldir)/ruby_vm/views/optinsn.inc.erb $(inc_common_headers)
-$(srcs_vpath)optunifs.inc: $(tooldir)/ruby_vm/views/optunifs.inc.erb $(inc_common_headers)
-$(srcs_vpath)insns.inc: $(tooldir)/ruby_vm/views/insns.inc.erb $(inc_common_headers)
-$(srcs_vpath)insns_info.inc: $(tooldir)/ruby_vm/views/insns_info.inc.erb $(inc_common_headers) \
- $(tooldir)/ruby_vm/views/_insn_type_chars.erb $(tooldir)/ruby_vm/views/_insn_name_info.erb \
- $(tooldir)/ruby_vm/views/_insn_len_info.erb $(tooldir)/ruby_vm/views/_insn_operand_info.erb \
- $(tooldir)/ruby_vm/views/_attributes.erb $(tooldir)/ruby_vm/views/_comptime_insn_stack_increase.erb \
- $(tooldir)/ruby_vm/views/_insn_sp_pc_dependency.erb
-$(srcs_vpath)vmtc.inc: $(tooldir)/ruby_vm/views/vmtc.inc.erb $(inc_common_headers)
-$(srcs_vpath)vm.inc: $(tooldir)/ruby_vm/views/vm.inc.erb $(inc_common_headers) \
- $(tooldir)/ruby_vm/views/_insn_entry.erb $(tooldir)/ruby_vm/views/_trace_instruction.erb
-
-BUILTIN_RB_SRCS = \
- $(srcdir)/ast.rb \
- $(srcdir)/dir.rb \
- $(srcdir)/gc.rb \
- $(srcdir)/numeric.rb \
- $(srcdir)/io.rb \
- $(srcdir)/marshal.rb \
- $(srcdir)/rjit.rb \
- $(srcdir)/rjit_c.rb \
- $(srcdir)/pack.rb \
- $(srcdir)/trace_point.rb \
- $(srcdir)/warning.rb \
- $(srcdir)/array.rb \
- $(srcdir)/kernel.rb \
- $(srcdir)/ractor.rb \
- $(srcdir)/symbol.rb \
- $(srcdir)/timev.rb \
- $(srcdir)/thread_sync.rb \
- $(srcdir)/nilclass.rb \
- $(srcdir)/prelude.rb \
- $(srcdir)/gem_prelude.rb \
- $(srcdir)/yjit.rb \
- $(empty)
-BUILTIN_RB_INCS = $(BUILTIN_RB_SRCS:.rb=.rbinc)
+{$(VPATH)}minsns.inc: $(srcdir)/template/minsns.inc.tmpl
+
+{$(VPATH)}opt_sc.inc: $(srcdir)/template/opt_sc.inc.tmpl
+
+{$(VPATH)}optinsn.inc: $(srcdir)/template/optinsn.inc.tmpl
+
+{$(VPATH)}optunifs.inc: $(srcdir)/template/optunifs.inc.tmpl
+
+{$(VPATH)}insns.inc: $(srcdir)/template/insns.inc.tmpl
+
+{$(VPATH)}insns_info.inc: $(srcdir)/template/insns_info.inc.tmpl
+
+{$(VPATH)}vmtc.inc: $(srcdir)/template/vmtc.inc.tmpl
-common-srcs: $(srcs_vpath)parse.c $(srcs_vpath)lex.c $(srcs_vpath)enc/trans/newline.c $(srcs_vpath)id.c \
- $(BUILTIN_RB_INCS) \
- srcs-lib srcs-ext incs preludes
+{$(VPATH)}vm.inc: $(srcdir)/template/vm.inc.tmpl
+
+common-srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}enc/trans/newline.c {$(VPATH)}id.c \
+ srcs-lib srcs-ext incs
missing-srcs: $(srcdir)/missing/des_tables.c
@@ -1091,20 +899,13 @@ EXT_SRCS = $(srcdir)/ext/ripper/ripper.c \
$(srcdir)/ext/rbconfig/sizeof/sizes.c \
$(srcdir)/ext/rbconfig/sizeof/limits.c \
$(srcdir)/ext/socket/constdefs.c \
- $(srcdir)/ext/etc/constdefs.h \
# EXT_SRCS
srcs-ext: $(EXT_SRCS)
-realclean-srcs-ext::
- $(Q)$(RM) $(EXT_SRCS)
-
-EXTRA_SRCS = $(srcdir)/ext/json/parser/parser.c \
- $(srcdir)/ext/date/zonetab.h \
- $(empty)
-srcs-extra: $(EXTRA_SRCS)
-realclean-srcs-extra::
- $(Q)$(RM) $(EXTRA_SRCS)
+srcs-extra: $(srcdir)/ext/json/parser/parser.c \
+ $(srcdir)/ext/date/zonetab.h \
+ $(empty)
LIB_SRCS = $(srcdir)/lib/unicode_normalize/tables.rb
@@ -1118,51 +919,57 @@ all-incs: incs {$(VPATH)}encdb.h {$(VPATH)}transdb.h
incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}known_errors.inc \
{$(VPATH)}vm_call_iseq_optimized.inc $(srcdir)/revision.h \
$(REVISION_H) \
- $(UNICODE_DATA_HEADERS) $(ENC_HEADERS) \
+ $(UNICODE_DATA_HEADERS) $(srcdir)/enc/jis/props.h \
{$(VPATH)}id.h {$(VPATH)}probes.dmyh
insns: $(INSNS)
-id.h: $(tooldir)/generic_erb.rb $(srcdir)/template/id.h.tmpl $(srcdir)/defs/id.def
+id.h: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.h.tmpl $(srcdir)/defs/id.def
$(ECHO) generating $@
- $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb --output=$@ \
+ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
$(srcdir)/template/id.h.tmpl
-id.c: $(tooldir)/generic_erb.rb $(srcdir)/template/id.c.tmpl $(srcdir)/defs/id.def
+id.c: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.c.tmpl $(srcdir)/defs/id.def
$(ECHO) generating $@
- $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb --output=$@ \
+ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
$(srcdir)/template/id.c.tmpl
-node_name.inc: $(tooldir)/node_name.rb $(srcdir)/node.h
+node_name.inc: {$(VPATH)}node.h
$(ECHO) generating $@
- $(Q) $(BASERUBY) -n $(tooldir)/node_name.rb < $(srcdir)/node.h > $@
+ $(Q) $(BASERUBY) -n $(srcdir)/tool/node_name.rb < $? > $@
-encdb.h: $(RBCONFIG) $(tooldir)/generic_erb.rb $(srcdir)/template/encdb.h.tmpl
+encdb.h: $(PREP) $(srcdir)/tool/generic_erb.rb $(srcdir)/template/encdb.h.tmpl
$(ECHO) generating $@
- $(Q) $(BOOTSTRAPRUBY) $(tooldir)/generic_erb.rb -c -o $@ $(srcdir)/template/encdb.h.tmpl $(srcdir)/enc enc
+ $(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/encdb.h.tmpl $(srcdir)/enc enc
-transdb.h: $(RBCONFIG) srcs-enc $(tooldir)/generic_erb.rb $(srcdir)/template/transdb.h.tmpl
+transdb.h: $(PREP) srcs-enc $(srcdir)/tool/generic_erb.rb $(srcdir)/template/transdb.h.tmpl
$(ECHO) generating $@
- $(Q) $(BOOTSTRAPRUBY) $(tooldir)/generic_erb.rb -c -o $@ $(srcdir)/template/transdb.h.tmpl $(srcdir)/enc/trans enc/trans
+ $(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/transdb.h.tmpl $(srcdir)/enc/trans enc/trans
enc/encinit.c: $(ENC_MK) $(srcdir)/enc/encinit.c.erb
known_errors.inc: $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
$(ECHO) generating $@
- $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb -c -o $@ $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
+ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
+
+vm_call_iseq_optimized.inc: $(srcdir)/tool/mk_call_iseq_optimized.rb
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) $(srcdir)/tool/mk_call_iseq_optimized.rb > $@
-vm_call_iseq_optimized.inc: $(srcdir)/template/call_iseq_optimized.inc.tmpl
+$(MINIPRELUDE_C): $(COMPILE_PRELUDE)
$(ECHO) generating $@
- $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb -c -o $@ $(srcdir)/template/call_iseq_optimized.inc.tmpl
+ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -o $@ \
+ $(srcdir)/template/prelude.c.tmpl
-$(MINIPRELUDE_C): $(COMPILE_PRELUDE) $(BUILTIN_RB_SRCS)
+$(PRELUDE_C): $(COMPILE_PRELUDE) \
+ $(PRELUDE_SCRIPTS)
$(ECHO) generating $@
- $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb -I$(srcdir) -o $@ \
- $(srcdir)/template/prelude.c.tmpl $(BUILTIN_RB_SRCS)
+ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \
+ $(srcdir)/template/prelude.c.tmpl $(PRELUDE_SCRIPTS)
-$(GOLF_PRELUDE_C): $(COMPILE_PRELUDE) {$(srcdir)}golf_prelude.rb
+{$(VPATH)}golf_prelude.c: $(COMPILE_PRELUDE) {$(srcdir)}golf_prelude.rb
$(ECHO) generating $@
- $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb -I$(srcdir) -c -o $@ \
+ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \
$(srcdir)/template/prelude.c.tmpl golf_prelude.rb
MAINCPPFLAGS = $(ENABLE_DEBUG_ENV:yes=-DRUBY_DEBUG_ENV=1)
@@ -1171,122 +978,109 @@ $(MAINOBJ): $(srcdir)/$(MAINSRC)
$(ECHO) compiling $(srcdir)/$(MAINSRC)
$(Q) $(CC) $(MAINCPPFLAGS) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$(srcdir)/$(MAINSRC)
-{$(VPATH)}probes.dmyh: {$(srcdir)}probes.d $(tooldir)/gen_dummy_probes.rb
+{$(VPATH)}probes.dmyh: {$(srcdir)}probes.d $(srcdir)/tool/gen_dummy_probes.rb
probes.dmyh:
- $(BASERUBY) $(tooldir)/gen_dummy_probes.rb $(srcdir)/probes.d > $@
+ $(BASERUBY) $(srcdir)/tool/gen_dummy_probes.rb $(srcdir)/probes.d > $@
probes.h: {$(VPATH)}probes.$(DTRACE_EXT)
prereq: incs srcs preludes PHONY
+preludes: {$(VPATH)}prelude.c
preludes: {$(VPATH)}miniprelude.c
preludes: {$(srcdir)}golf_prelude.c
-{$(srcdir)}.rb.rbinc:
- $(ECHO) making $@
- $(Q) $(BASERUBY) $(tooldir)/mk_builtin_loader.rb $<
-
-builtin_binary.inc: $(PREP) $(BUILTIN_RB_SRCS) $(srcdir)/template/builtin_binary.inc.tmpl
- $(Q) $(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ \
- $(srcdir)/template/builtin_binary.inc.tmpl -- --cross=$(CROSS_COMPILING)
+$(srcdir)/revision.h:
+ @exit > $@
-$(BUILTIN_RB_INCS): $(top_srcdir)/tool/mk_builtin_loader.rb
+$(REVISION_H): $(srcdir)/version.h $(srcdir)/tool/file2lastrev.rb $(REVISION_FORCE)
+ -$(Q) $(BASERUBY) $(srcdir)/tool/file2lastrev.rb -q --revision.h "$(srcdir)" > revision.tmp
+ $(Q)$(IFCHANGE) "--timestamp=$@" "$(srcdir)/revision.h" revision.tmp
-$(srcdir)/revision.h$(no_baseruby:no=~disabled~): $(REVISION_H)
-
-$(REVISION_H)$(no_baseruby:no=~disabled~):
- $(Q) $(BASERUBY) $(tooldir)/file2lastrev.rb -q --revision.h --srcdir="$(srcdir)" --output=revision.h --timestamp=$@
-$(REVISION_H)$(yes_baseruby:yes=~disabled~):
- $(Q) exit > $@
-
-# uncommon.mk: $(REVISION_H)
-# $(MKFILES): $(REVISION_H)
-
-$(srcdir)/ext/ripper/ripper.c: $(srcdir)/ext/ripper/tools/preproc.rb $(srcdir)/parse.y $(srcdir)/defs/id.def $(srcdir)/ext/ripper/depend
+$(srcdir)/ext/ripper/ripper.c: $(srcdir)/parse.y id.h
$(ECHO) generating $@
- $(Q) $(CHDIR) $(@D) && \
- $(CAT_DEPEND) depend | \
+ $(Q) VPATH=$${PWD-`pwd`} && $(CHDIR) $(@D) && \
+ sed /AUTOGENERATED/q depend | \
$(exec) $(MAKE) -f - $(mflags) \
- Q=$(Q) ECHO=$(ECHO) RM="$(RM1)" BISON="$(YACC)" top_srcdir=../.. srcdir=. VPATH=../.. \
- RUBY="$(BASERUBY)" PATH_SEPARATOR="$(PATH_SEPARATOR)" LANG=C
+ Q=$(Q) ECHO=$(ECHO) RM="$(RM)" top_srcdir=../.. srcdir=. VPATH="$${VPATH}" \
+ RUBY="$(BASERUBY)" PATH_SEPARATOR="$(PATH_SEPARATOR)"
-$(srcdir)/ext/json/parser/parser.c: $(srcdir)/ext/json/parser/parser.rl $(srcdir)/ext/json/parser/prereq.mk
+$(srcdir)/ext/json/parser/parser.c: $(srcdir)/ext/json/parser/parser.rl
$(ECHO) generating $@
$(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f prereq.mk $(mflags) \
Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. BASERUBY="$(BASERUBY)"
-$(srcdir)/ext/date/zonetab.h: $(srcdir)/ext/date/zonetab.list $(srcdir)/ext/date/prereq.mk
+$(srcdir)/ext/date/zonetab.h: $(srcdir)/ext/date/zonetab.list
$(ECHO) generating $@
$(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f prereq.mk $(mflags) \
Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. BASERUBY="$(BASERUBY)"
$(srcdir)/ext/rbconfig/sizeof/sizes.c: $(srcdir)/ext/rbconfig/sizeof/depend \
- $(tooldir)/generic_erb.rb $(srcdir)/template/sizes.c.tmpl $(srcdir)/configure.ac
+ $(srcdir)/tool/generic_erb.rb $(srcdir)/template/sizes.c.tmpl $(srcdir)/configure.ac
$(ECHO) generating $@
$(Q) $(CHDIR) $(@D) && \
- $(CAT_DEPEND) depend | \
+ sed '/AUTOGENERATED/q' depend | \
$(exec) $(MAKE) -f - $(mflags) \
Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. RUBY="$(BASERUBY)" $(@F)
$(srcdir)/ext/rbconfig/sizeof/limits.c: $(srcdir)/ext/rbconfig/sizeof/depend \
- $(tooldir)/generic_erb.rb $(srcdir)/template/limits.c.tmpl
+ $(srcdir)/tool/generic_erb.rb $(srcdir)/template/limits.c.tmpl
$(ECHO) generating $@
$(Q) $(CHDIR) $(@D) && \
- $(CAT_DEPEND) depend | \
+ sed '/AUTOGENERATED/q' depend | \
$(exec) $(MAKE) -f - $(mflags) \
Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. RUBY="$(BASERUBY)" $(@F)
$(srcdir)/ext/socket/constdefs.c: $(srcdir)/ext/socket/depend
$(Q) $(CHDIR) $(@D) && \
- $(CAT_DEPEND) depend | \
- $(exec) $(MAKE) -f - $(mflags) \
- Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. RUBY="$(BASERUBY)"
-
-$(srcdir)/ext/etc/constdefs.h: $(srcdir)/ext/etc/depend
- $(Q) $(CHDIR) $(@D) && \
- $(CAT_DEPEND) depend | \
+ sed '/AUTOGENERATED/q' depend | \
$(exec) $(MAKE) -f - $(mflags) \
Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. RUBY="$(BASERUBY)"
##
-run: yes-fake miniruby$(EXEEXT) PHONY
- $(BTESTRUBY) $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+run: fake miniruby$(EXEEXT) PHONY
+ $(BTESTRUBY) $(TESTRUN_SCRIPT) $(RUNOPT)
runruby: $(PROGRAM) PHONY
- RUBY_ON_BUG='gdb -x $(srcdir)/.gdbinit -p' $(RUNRUBY) $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+ $(RUNRUBY) $(TESTRUN_SCRIPT)
-runirb: $(PROGRAM) PHONY
- RUBY_ON_BUG='gdb -x $(srcdir)/.gdbinit -p' $(RUNRUBY) $(RUNOPT0) -r irb -e 'IRB.start("make runirb")' $(RUNOPT)
-
-parse: yes-fake miniruby$(EXEEXT) PHONY
+parse: fake miniruby$(EXEEXT) PHONY
$(BTESTRUBY) --dump=parsetree_with_comment,insns $(TESTRUN_SCRIPT)
bisect: PHONY
- $(tooldir)/bisect.sh miniruby $(srcdir)
+ $(srcdir)/tool/bisect.sh miniruby $(srcdir)
bisect-ruby: PHONY
- $(tooldir)/bisect.sh ruby $(srcdir)
+ $(srcdir)/tool/bisect.sh ruby $(srcdir)
COMPARE_RUBY = $(BASERUBY)
-BENCH_RUBY = $(RUNRUBY)
-BENCH_OPTS = --output=markdown --output-compare -v
ITEM =
-ARGS = $$(find $(srcdir)/benchmark -maxdepth 1 -name '$(ITEM)' -o -name '*$(ITEM)*.yml' -o -name '*$(ITEM)*.rb' | sort)
OPTS =
-# See benchmark/README.md for details.
-benchmark: miniruby$(EXEEXT) update-benchmark-driver PHONY
- $(BASERUBY) -rrubygems -I$(srcdir)/benchmark/lib $(srcdir)/benchmark/benchmark-driver/exe/benchmark-driver \
- --executables="compare-ruby::$(COMPARE_RUBY) -I$(EXTOUT)/common --disable-gem" \
- --executables="built-ruby::$(BENCH_RUBY) --disable-gem" \
- $(BENCH_OPTS) $(ARGS) $(OPTS)
+# You can pass several options through OPTS environment variable.
+# $ make benchmark OPTS="--help" displays more detail.
+# for example,
+# $ make benchmark COMPARE_RUBY="ruby-trunk" OPTS="-e ruby-2.2.2"
+# This command compares trunk and built-ruby and 2.2.2
+benchmark: miniruby$(EXEEXT) PHONY
+ $(BASERUBY) $(srcdir)/benchmark/driver.rb -v \
+ --executables="$(COMPARE_RUBY) -I$(srcdir)/lib -I. -I$(EXTOUT)/common --disable-gem; built-ruby::$(MINIRUBY) --disable-gem" \
+ --pattern='bm_' --directory=$(srcdir)/benchmark $(OPTS)
+
+benchmark-each: miniruby$(EXEEXT) PHONY
+ $(BASERUBY) $(srcdir)/benchmark/driver.rb -v \
+ --executables="$(COMPARE_RUBY) -I$(srcdir)/lib -I. -I$(EXTOUT)/common --disable-gem; built-ruby::$(MINIRUBY) --disable-gem" \
+ --pattern=$(ITEM) --directory=$(srcdir)/benchmark $(OPTS)
+
+tbench: miniruby$(EXEEXT) PHONY
+ $(BASERUBY) $(srcdir)/benchmark/driver.rb -v \
+ --executables="$(COMPARE_RUBY) -I$(srcdir)/lib -I. -I$(EXTOUT)/common --disable-gem; built-ruby::$(MINIRUBY) --disable-gem" \
+ --pattern='bmx_' --directory=$(srcdir)/benchmark $(OPTS)
run.gdb:
echo set breakpoint pending on > run.gdb
- echo b rb_assert_failure >> run.gdb
- echo b rb_bug >> run.gdb
echo b ruby_debug_breakpoint >> run.gdb
echo '# handle SIGINT nostop' >> run.gdb
echo '# handle SIGPIPE nostop' >> run.gdb
@@ -1299,73 +1093,53 @@ run.gdb:
echo ' quit' >> run.gdb
echo end >> run.gdb
-GDB = gdb
gdb: miniruby$(EXEEXT) run.gdb PHONY
- $(GDB) -x run.gdb --quiet --args $(MINIRUBY) $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+ gdb -x run.gdb --quiet --args $(MINIRUBY) $(TESTRUN_SCRIPT)
gdb-ruby: $(PROGRAM) run.gdb PHONY
- $(Q) $(RUNRUBY_COMMAND) $(RUNRUBY_DEBUGGER) -- $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+ $(Q) $(RUNRUBY_COMMAND) $(RUNRUBY_DEBUGGER) -- $(TESTRUN_SCRIPT)
LLDB_INIT = command script import -r $(srcdir)/misc/lldb_cruby.py
lldb: miniruby$(EXEEXT) PHONY
- lldb -o '$(LLDB_INIT)' miniruby$(EXEEXT) -- $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+ lldb -o '$(LLDB_INIT)' miniruby$(EXEEXT) -- $(TESTRUN_SCRIPT)
lldb-ruby: $(PROGRAM) PHONY
- lldb $(enable_shared:yes=-o 'target modules add ${LIBRUBY_SO}') -o '$(LLDB_INIT)' $(PROGRAM) -- $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT)
+ lldb $(enable_shared:yes=-o 'target modules add ${LIBRUBY_SO}') -o '$(LLDB_INIT)' $(PROGRAM) -- $(TESTRUN_SCRIPT)
DISTPKGS = gzip,zip,all
-PKGSDIR = tmp
dist:
- $(BASERUBY) $(V0:1=-v) $(tooldir)/make-snapshot \
+ $(BASERUBY) $(srcdir)/tool/make-snapshot \
-srcdir=$(srcdir) -packages=$(DISTPKGS) \
-unicode-version=$(UNICODE_VERSION) \
- $(DISTOPTS) $(PKGSDIR) $(RELNAME)
+ tmp $(RELNAME)
up:: update-remote
-up$(DOT_WAIT)::
- -$(Q)$(MAKE) $(mflags) Q=$(Q) REVISION_FORCE=PHONY ALWAYS_UPDATE_UNICODE= after-update
+up::
+ -$(Q)$(MAKE) $(mflags) Q=$(Q) REVISION_FORCE=PHONY "$(REVISION_H)"
-yes::
-no::
+up::
+ -$(Q)$(MAKE) $(mflags) Q=$(Q) after-update
-after-update:: common-srcs
-after-update:: $(REVISION_H)
after-update:: extract-extlibs
-after-update:: extract-gems
-
-update-src::
- $(Q) $(RM) $(REVISION_H) revision.h "$(srcdir)/$(REVISION_H)" "$(srcdir)/revision.h"
- $(Q) exit > "$(srcdir)/revision.h"
update-remote:: update-src update-download
-update-download:: $(ALWAYS_UPDATE_UNICODE:yes=update-unicode)
-update-download:: update-gems
-update-download:: download-extlibs
+update-download:: update-unicode update-gems download-extlibs
update-mspec:
update-rubyspec:
update-config_files: PHONY
- $(Q) $(BASERUBY) -C "$(srcdir)" tool/downloader.rb -d tool --cache-dir=$(CACHE_DIR) -e gnu \
+ $(Q) $(BASERUBY) -C "$(srcdir)" tool/downloader.rb -d tool -e gnu \
config.guess config.sub
-update-coverage: main PHONY
- $(XRUBY) -C "$(srcdir)" bin/gem install --no-document \
- --install-dir .bundle --conservative "simplecov"
-
-refresh-gems: update-bundled_gems prepare-gems
-prepare-gems: $(HAVE_BASERUBY:yes=update-gems) $(HAVE_BASERUBY:yes=extract-gems)
-extract-gems: $(HAVE_BASERUBY:yes=update-gems)
-
-update-gems$(gnumake:yes=-sequential): PHONY
+update-gems: PHONY
$(ECHO) Downloading bundled gem files...
$(Q) $(BASERUBY) -C "$(srcdir)" \
-I./tool -rdownloader -answ \
-e 'gem, ver = *$$F' \
- -e 'next if !ver or /^#/=~gem' \
-e 'old = Dir.glob("gems/#{gem}-*.gem")' \
-e 'gem = "#{gem}-#{ver}.gem"' \
-e 'Downloader::RubyGems.download(gem, "gems", nil) and' \
@@ -1374,156 +1148,39 @@ update-gems$(gnumake:yes=-sequential): PHONY
-e 'FileUtils.rm_rf(old.map{'"|n|"'n.chomp(".gem")})' \
gems/bundled_gems
-extract-gems$(gnumake:yes=-sequential): PHONY
+extract-gems: PHONY
$(ECHO) Extracting bundled gem files...
- $(Q) $(BASERUBY) -C "$(srcdir)" \
- -Itool/lib -rfileutils -rbundled_gem -answ \
- -e 'BEGIN {d = ".bundle/gems"}' \
- -e 'gem, ver, _, rev = *$$F' \
- -e 'next if !ver or /^#/=~gem' \
- -e 'g = "#{gem}-#{ver}"' \
- -e 'unless File.directory?("#{d}/#{g}")' \
- -e 'if rev and File.exist?(gs = "gems/src/#{gem}/#{gem}.gemspec")' \
- -e 'BundledGem.build(gs, ver, "gems")' \
- -e 'end' \
- -e 'BundledGem.unpack("gems/#{g}.gem", ".bundle")' \
- -e 'end' \
- gems/bundled_gems
-
-extract-gems$(gnumake:yes=-sequential): $(HAVE_GIT:yes=clone-bundled-gems-src)
-
-clone-bundled-gems-src: PHONY
- $(Q) $(BASERUBY) -C "$(srcdir)" \
- -Itool/lib -rbundled_gem -answ \
- -e 'BEGIN {git = $$git}' \
- -e 'gem, _, repo, rev = *$$F' \
- -e 'next if !rev or /^#/=~gem' \
- -e 'gemdir = "gems/src/#{gem}"' \
- -e 'BundledGem.checkout(gemdir, repo, rev, git: git)' \
- -e 'BundledGem.dummy_gemspec("#{gemdir}/#{gem}.gemspec")' \
- -- -git="$(GIT)" \
- gems/bundled_gems
-
-outdate-bundled-gems: PHONY
- $(Q) $(BASERUBY) $(tooldir)/$@.rb --make="$(MAKE)" --mflags="$(MFLAGS)" "$(srcdir)"
+ $(Q) $(RUNRUBY) -C "$(srcdir)/gems" \
+ -I../tool -rgem-unpack -answ \
+ -e 'gem, ver = *$$F' \
+ -e 'Gem.unpack("#{gem}-#{ver}.gem")' \
+ bundled_gems
update-bundled_gems: PHONY
$(Q) $(RUNRUBY) -rrubygems \
- $(tooldir)/update-bundled_gems.rb \
+ -pla \
+ -e '$$_=Gem::SpecFetcher.fetcher.detect(:latest) {'"|s|" \
+ -e 'if s.platform=="ruby"&&s.name==$$F[0]' \
+ -e 'break [s.name, s.version, *$$F[2..-1]].join(" ")' \
+ -e 'end' \
+ -e '}' \
"$(srcdir)/gems/bundled_gems" | \
- $(IFCHANGE) "$(srcdir)/gems/bundled_gems" -
- $(GIT) -C "$(srcdir)" diff --no-ext-diff --ignore-submodules --exit-code || \
- $(GIT) -C "$(srcdir)" commit -m "Update bundled_gems" gems/bundled_gems
-
-PRECHECK_BUNDLED_GEMS = test-bundled-gems-precheck
-test-bundled-gems-precheck: $(TEST_RUNNABLE)-test-bundled-gems-precheck
-yes-test-bundled-gems-precheck: main
-no-test-bundled-gems-precheck:
-
-test-bundled-gems-fetch: yes-test-bundled-gems-fetch
-yes-test-bundled-gems-fetch:
- $(ACTIONS_GROUP)
+ "$(IFCHANGE)" "$(srcdir)/gems/bundled_gems" -
+
+test-bundled-gems-precheck: $(arch)-fake.rb programs
+
+test-bundled-gems-fetch: $(PREP)
$(Q) $(BASERUBY) -C $(srcdir)/gems ../tool/fetch-bundled_gems.rb src bundled_gems
- $(ACTIONS_ENDGROUP)
-no-test-bundled-gems-fetch:
-
-test-bundled-gems-prepare: $(PRECHECK_BUNDLED_GEMS) test-bundled-gems-fetch
-test-bundled-gems-prepare: $(TEST_RUNNABLE)-test-bundled-gems-prepare
-no-test-bundled-gems-prepare: no-test-bundled-gems-precheck
-yes-test-bundled-gems-prepare: yes-test-bundled-gems-precheck
- $(ACTIONS_GROUP)
- $(XRUBY) -C "$(srcdir)" bin/gem install --no-document \
- --install-dir .bundle --conservative "bundler" "minitest:~> 5" "test-unit" "rake" "hoe" "yard" "pry" "packnga" "rexml" "json-schema" "test-unit-rr"
- $(ACTIONS_ENDGROUP)
+
+test-bundled-gems-prepare: test-bundled-gems-precheck test-bundled-gems-fetch
+ $(XRUBY) -C "$(srcdir)" bin/gem install --no-ri --no-rdoc \
+ --install-dir .bundle --conservative "bundler" "minitest:~> 5" 'test-unit' 'rake' 'hoe' 'yard' 'pry' 'packnga'
PREPARE_BUNDLED_GEMS = test-bundled-gems-prepare
test-bundled-gems: $(TEST_RUNNABLE)-test-bundled-gems
yes-test-bundled-gems: test-bundled-gems-run
no-test-bundled-gems:
-
-# Override this to allow failure of specific gems on CI
-# TEST_BUNDLED_GEMS_ALLOW_FAILURES =
-
-BUNDLED_GEMS =
test-bundled-gems-run: $(PREPARE_BUNDLED_GEMS)
- $(gnumake_recursive)$(Q) $(XRUBY) $(tooldir)/test-bundled-gems.rb $(BUNDLED_GEMS)
-
-test-syntax-suggest-precheck: $(TEST_RUNNABLE)-test-syntax-suggest-precheck
-no-test-syntax-suggest-precheck:
-yes-test-syntax-suggest-precheck: main
-
-test-syntax-suggest-prepare: $(TEST_RUNNABLE)-test-syntax-suggest-prepare
-no-test-syntax-suggest-prepare: no-test-syntax-suggest-precheck
-yes-test-syntax-suggest-prepare: yes-test-syntax-suggest-precheck
- $(ACTIONS_GROUP)
- $(XRUBY) -C "$(srcdir)" bin/gem install --no-document \
- --install-dir .bundle --conservative "bundler" "rake" "rspec:~> 3"
- $(ACTIONS_ENDGROUP)
-
-RSPECOPTS =
-SYNTAX_SUGGEST_SPECS =
-PREPARE_SYNTAX_SUGGEST = test-syntax-suggest-prepare
-test-syntax-suggest: $(TEST_RUNNABLE)-test-syntax-suggest
-yes-test-syntax-suggest: yes-$(PREPARE_SYNTAX_SUGGEST)
- $(XRUBY) -C $(srcdir) -Ispec/syntax_suggest:spec/lib .bundle/bin/rspec \
- --require spec_helper --require formatter_overrides --require spec_coverage \
- $(RSPECOPTS) spec/syntax_suggest/$(SYNTAX_SUGGEST_SPECS)
-no-test-syntax-suggest:
-
-check: $(DOT_WAIT) $(TEST_RUNNABLE)-$(PREPARE_SYNTAX_SUGGEST) test-syntax-suggest
-
-test-bundler-precheck: $(TEST_RUNNABLE)-test-bundler-precheck
-no-test-bundler-precheck:
-yes-test-bundler-precheck: main $(arch)-fake.rb
-
-no-test-bundler-prepare: no-test-bundler-precheck
-yes-test-bundler-prepare: yes-test-bundler-precheck
- $(ACTIONS_GROUP)
- $(XRUBY) -C $(srcdir) -Ilib \
- -e 'ENV["GEM_HOME"] = File.expand_path(".bundle")' \
- -e 'ENV["BUNDLE_APP_CONFIG"] = File.expand_path(".bundle")' \
- -e 'ENV["BUNDLE_PATH__SYSTEM"] = "true"' \
- -e 'ENV["BUNDLE_WITHOUT"] = "lint doc"' \
- -e 'load "spec/bundler/support/bundle.rb"' -- install --quiet --gemfile=tool/bundler/dev_gems.rb
- $(ACTIONS_ENDGROUP)
-
-RSPECOPTS =
-BUNDLER_SPECS =
-PREPARE_BUNDLER = yes-test-bundler-prepare
-test-bundler: $(TEST_RUNNABLE)-test-bundler
-yes-test-bundler: $(PREPARE_BUNDLER)
- $(gnumake_recursive)$(XRUBY) \
- -r./$(arch)-fake \
- -e "exec(*ARGV)" -- \
- $(XRUBY) -C $(srcdir) -Ispec/bundler:spec/lib .bundle/bin/rspec \
- --require spec_helper --require formatter_overrides $(RSPECOPTS) spec/bundler/$(BUNDLER_SPECS)
-no-test-bundler:
-
-PARALLELRSPECOPTS = --runtime-log $(srcdir)/tmp/parallel_runtime_rspec.log
-test-bundler-parallel: $(TEST_RUNNABLE)-test-bundler-parallel
-yes-test-bundler-parallel: $(PREPARE_BUNDLER)
- $(gnumake_recursive)$(XRUBY) \
- -r./$(arch)-fake \
- -e "ARGV[-1] = File.expand_path(ARGV[-1])" \
- -e "exec(*ARGV)" -- \
- $(XRUBY) -I$(srcdir)/spec/bundler \
- -e "ENV['PARALLEL_TESTS_EXECUTABLE'] = ARGV.shift" \
- -e "load ARGV.shift" \
- "$(XRUBY) -C $(srcdir) -Ispec/bundler:spec/lib .bundle/bin/rspec" \
- $(srcdir)/.bundle/bin/parallel_rspec \
- -o "--require spec_helper --require formatter_overrides" \
- $(PARALLELRSPECOPTS) $(srcdir)/spec/bundler/$(BUNDLER_SPECS)
-no-test-bundler-parallel:
-
-# The annocheck supports ELF format binaries compiled for any OS and for any
-# architecture. It is designed to be independent of the host OS and the
-# architecture. The test-annocheck.sh requires docker or podman.
-test-annocheck: $(PROGRAM)
- $(tooldir)/test-annocheck.sh $(PROGRAM)
-
-GEM = up
-sync-default-gems:
- $(Q) $(XRUBY) -C "$(srcdir)" tool/sync_default_gems.rb $(GEM)
UNICODE_FILES = $(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \
$(UNICODE_SRC_DATA_DIR)/CompositionExclusions.txt \
@@ -1540,141 +1197,92 @@ UNICODE_PROPERTY_FILES = \
$(UNICODE_SRC_DATA_DIR)/PropertyAliases.txt \
$(UNICODE_SRC_DATA_DIR)/PropertyValueAliases.txt \
$(UNICODE_SRC_DATA_DIR)/Scripts.txt \
- $(empty)
-
-UNICODE_AUXILIARY_FILES = \
$(UNICODE_SRC_DATA_DIR)/auxiliary/GraphemeBreakProperty.txt \
- $(UNICODE_SRC_DATA_DIR)/auxiliary/GraphemeBreakTest.txt \
- $(empty)
-
-UNICODE_UCD_EMOJI_FILES = \
- $(UNICODE_SRC_DATA_DIR)/emoji/emoji-data.txt \
- $(UNICODE_SRC_DATA_DIR)/emoji/emoji-variation-sequences.txt \
$(empty)
UNICODE_EMOJI_FILES = \
- $(UNICODE_SRC_EMOJI_DATA_DIR)/emoji-sequences.txt \
- $(UNICODE_SRC_EMOJI_DATA_DIR)/emoji-test.txt \
- $(UNICODE_SRC_EMOJI_DATA_DIR)/emoji-zwj-sequences.txt \
+ $(UNICODE_SRC_EMOJI_DATA_DIR)/emoji-data.txt \
$(empty)
-update-unicode: $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES) \
- $(UNICODE_AUXILIARY_FILES) $(UNICODE_UCD_EMOJI_FILES) $(UNICODE_EMOJI_FILES)
+update-unicode: $(UNICODE_FILES)
CACHE_DIR = $(srcdir)/.downloaded-cache
-UNICODE_DOWNLOADER_ALWAYS_UPDATE = $(ALWAYS_UPDATE_UNICODE:yes=--always)
-UNICODE_DOWNLOADER = \
- $(BASERUBY) $(tooldir)/downloader.rb \
- --cache-dir=$(CACHE_DIR) \
- --exist $(UNICODE_DOWNLOADER_ALWAYS_UPDATE:no=) \
- unicode --unicode-beta=$(UNICODE_BETA)
UNICODE_DOWNLOAD = \
- $(UNICODE_DOWNLOADER) \
+ $(BASERUBY) $(srcdir)/tool/downloader.rb \
+ --cache-dir=$(CACHE_DIR) \
-d $(UNICODE_SRC_DATA_DIR) \
- -p $(UNICODE_VERSION)/ucd
-UNICODE_AUXILIARY_DOWNLOAD = \
- $(UNICODE_DOWNLOADER) \
- -d $(UNICODE_SRC_DATA_DIR)/auxiliary \
- -p $(UNICODE_VERSION)/ucd/auxiliary
-UNICODE_UCD_EMOJI_DOWNLOAD = \
- $(UNICODE_DOWNLOADER) \
- -d $(UNICODE_SRC_DATA_DIR)/emoji \
- -p $(UNICODE_VERSION)/ucd/emoji
+ -p $(UNICODE_VERSION)/ucd \
+ -e $(ALWAYS_UPDATE_UNICODE:yes=-a) unicode
UNICODE_EMOJI_DOWNLOAD = \
- $(UNICODE_DOWNLOADER) \
+ $(BASERUBY) $(srcdir)/tool/downloader.rb \
+ --cache-dir=$(CACHE_DIR) \
-d $(UNICODE_SRC_EMOJI_DATA_DIR) \
- -p emoji/$(UNICODE_EMOJI_VERSION)
-
-update-unicode-files: $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES)
-$(UNICODE_FILES) $(UNICODE_PROPERTY_FILES):
- $(ECHO) Downloading Unicode $(UNICODE_VERSION) data and property files...
- $(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)"
- $(Q) $(UNICODE_DOWNLOAD) $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES)
+ -p emoji/$(UNICODE_EMOJI_VERSION) \
+ -e $(ALWAYS_UPDATE_UNICODE:yes=-a) unicode
-update-unicode-auxiliary-files: $(UNICODE_AUXILIARY_FILES)
-$(UNICODE_AUXILIARY_FILES):
- $(ECHO) Downloading Unicode $(UNICODE_VERSION) auxiliary files...
+$(UNICODE_PROPERTY_FILES): update-unicode-property-files
+update-unicode-property-files:
+ $(ECHO) Downloading Unicode $(UNICODE_VERSION) property files...
$(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)/auxiliary"
- $(Q) $(UNICODE_AUXILIARY_DOWNLOAD) $(UNICODE_AUXILIARY_FILES)
-
-update-unicode-ucd-emoji-files: $(UNICODE_UCD_EMOJI_FILES)
-$(UNICODE_UCD_EMOJI_FILES):
- $(ECHO) Downloading Unicode UCD emoji $(UNICODE_EMOJI_VERSION) files...
- $(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)/emoji"
- $(Q) $(UNICODE_UCD_EMOJI_DOWNLOAD) $(UNICODE_UCD_EMOJI_FILES)
-
-update-unicode-emoji-files: $(UNICODE_EMOJI_FILES)
-$(UNICODE_EMOJI_FILES):
+ $(Q) $(UNICODE_DOWNLOAD) $(UNICODE_PROPERTY_FILES)
$(ECHO) Downloading Unicode emoji $(UNICODE_EMOJI_VERSION) files...
$(Q) $(MAKEDIRS) "$(UNICODE_SRC_EMOJI_DATA_DIR)"
$(Q) $(UNICODE_EMOJI_DOWNLOAD) $(UNICODE_EMOJI_FILES)
-$(srcdir)/lib/unicode_normalize/tables.rb: \
- $(UNICODE_SRC_DATA_DIR)/$(HAVE_BASERUBY:yes=.unicode-tables.time)
+$(UNICODE_FILES): update-unicode-files
+update-unicode-files:
+ $(ECHO) Downloading Unicode $(UNICODE_VERSION) data files...
+ $(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)"
+ $(Q) $(UNICODE_DOWNLOAD) $(UNICODE_FILES)
+
+$(srcdir)/$(HAVE_BASERUBY:yes=lib/unicode_normalize/tables.rb): \
+ $(UNICODE_SRC_DATA_DIR)/.unicode-tables.time
$(UNICODE_SRC_DATA_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=.unicode-tables.time): \
- $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES) \
- $(UNICODE_AUXILIARY_FILES) $(UNICODE_UCD_EMOJI_FILES) $(UNICODE_EMOJI_FILES)
+ $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES)
touch-unicode-files:
$(MAKEDIRS) $(UNICODE_SRC_DATA_DIR)
- $(Q) $(TOUCH) $(UNICODE_SRC_DATA_DIR)/.unicode-tables.time $(UNICODE_DATA_HEADERS)
-
-UNICODE_TABLES_DATA_FILES = \
- $(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \
- $(UNICODE_SRC_DATA_DIR)/CompositionExclusions.txt \
- $(empty)
+ touch $(UNICODE_SRC_DATA_DIR)/.unicode-tables.time $(UNICODE_DATA_HEADERS)
-UNICODE_TABLES_DEPENDENTS_1 = none$(ALWAYS_UPDATE_UNICODE)
-UNICODE_TABLES_DEPENDENTS = $(UNICODE_TABLES_DEPENDENTS_1:noneyes=force)
-UNICODE_TABLES_TIMESTAMP = yes
-$(UNICODE_SRC_DATA_DIR)/.unicode-tables.$(UNICODE_TABLES_DEPENDENTS:none=time):
- $(Q) $(MAKEDIRS) $(@D)
- $(Q) exit > $(@) || $(NULLCMD)
-$(UNICODE_SRC_DATA_DIR)/.unicode-tables.$(UNICODE_TABLES_DEPENDENTS:force=time): \
- $(tooldir)/generic_erb.rb \
+$(UNICODE_SRC_DATA_DIR)/.unicode-tables.time: $(srcdir)/tool/generic_erb.rb \
$(srcdir)/template/unicode_norm_gen.tmpl \
- $(UNICODE_TABLES_DATA_FILES) \
- $(order_only) \
- $(UNICODE_SRC_DATA_DIR)
- $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb \
- -c $(UNICODE_TABLES_TIMESTAMP:yes=-t$@) \
- -o $(srcdir)/lib/unicode_normalize/tables.rb \
+ $(ALWAYS_UPDATE_UNICODE:yes=update-unicode)
+ $(Q) $(MAKE) $(@D)
+ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb \
+ -c -t$@ -o $(srcdir)/lib/unicode_normalize/tables.rb \
-I $(srcdir) \
$(srcdir)/template/unicode_norm_gen.tmpl \
$(UNICODE_DATA_DIR) lib/unicode_normalize
$(UNICODE_SRC_DATA_DIR):
- $(gnumake_recursive)$(Q) $(MAKEDIRS) $@
+ $(Q) $(exec) $(MAKEDIRS) $@ || exit && echo $(MAKE)
$(UNICODE_HDR_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=name2ctype.h): \
- $(tooldir)/enc-unicode.rb \
+ $(srcdir)/tool/enc-unicode.rb \
$(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \
- $(UNICODE_AUXILIARY_FILES) \
- $(UNICODE_PROPERTY_FILES) \
- $(UNICODE_UCD_EMOJI_FILES) \
- $(UNICODE_EMOJI_FILES)
+ $(UNICODE_PROPERTY_FILES)
$(UNICODE_HDR_DIR)/name2ctype.h:
$(MAKEDIRS) $(@D)
- $(BOOTSTRAPRUBY) $(tooldir)/enc-unicode.rb --header \
+ $(BOOTSTRAPRUBY) $(srcdir)/tool/enc-unicode.rb --header \
$(UNICODE_SRC_DATA_DIR) $(UNICODE_SRC_EMOJI_DATA_DIR) > $@.new
$(MV) $@.new $@
# the next non-comment line was:
-# $(UNICODE_HDR_DIR)/casefold.h: $(tooldir)/enc-case-folding.rb \
+# $(UNICODE_HDR_DIR)/casefold.h: $(srcdir)/enc/unicode/case-folding.rb \
# but was changed to make sure CI works on systems that don't have gperf
unicode-up: $(UNICODE_DATA_HEADERS)
$(UNICODE_HDR_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=casefold.h): \
- $(tooldir)/enc-case-folding.rb \
+ $(srcdir)/enc/unicode/case-folding.rb \
$(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \
$(UNICODE_SRC_DATA_DIR)/SpecialCasing.txt \
$(UNICODE_SRC_DATA_DIR)/CaseFolding.txt
$(UNICODE_HDR_DIR)/casefold.h:
$(MAKEDIRS) $(@D)
- $(Q) $(BASERUBY) $(tooldir)/enc-case-folding.rb \
+ $(Q) $(BASERUBY) $(srcdir)/enc/unicode/case-folding.rb \
--output-file=$@ \
--mapping-data-directory=$(UNICODE_SRC_DATA_DIR)
@@ -1702,9 +1310,10 @@ info-libruby_so: PHONY
info-arch: PHONY
@echo arch=$(arch)
-exam: check
-exam: $(DOT_WAIT) test-bundler-parallel
-exam: $(DOT_WAIT) test-bundled-gems
+change: PHONY
+ $(BASERUBY) -C "$(srcdir)" ./tool/change_maker.rb $(CHANGES) > change.log
+
+exam: check test-spec
love: sudo-precheck up all test exam install
@echo love is all you need
@@ -1717,1114 +1326,109 @@ sudo-precheck: PHONY
@$(SUDO) echo > $(NULL)
update-man-date: PHONY
- -$(Q) $(BASERUBY) -I"$(tooldir)/lib" -rvcs -i -p \
+ -$(Q) $(BASERUBY) -I"$(srcdir)/tool" -rvcs -i -p \
-e 'BEGIN{@vcs=VCS.detect(ARGV.shift)}' \
-e '$$_.sub!(/^(\.Dd ).*/){$$1+@vcs.modified(ARGF.path).strftime("%B %d, %Y")}' \
"$(srcdir)" "$(srcdir)"/man/*.1
-.PHONY: ChangeLog
-ChangeLog:
- $(ECHO) Generating $@
- -$(Q) $(BASERUBY) -I"$(tooldir)/lib" -rvcs \
- -e 'VCS.detect(ARGV[0]).export_changelog("@", nil, nil, ARGV[1])' \
- "$(srcdir)" $@
-
-HELP_EXTRA_TASKS = ""
-
help: PHONY
$(MESSAGE_BEGIN) \
" Makefile of Ruby" \
"" \
"targets:" \
- " all (default): builds all of below" \
- " miniruby: builds only miniruby" \
- " encs: builds encodings" \
- " exts: builds extensions" \
- " main: builds encodings, extensions and ruby" \
- " docs: builds documents" \
- " install-capi: builds C API documents" \
- " run: runs test.rb by miniruby" \
- " runruby: runs test.rb by ruby you just built" \
- " gdb: runs test.rb by miniruby under gdb" \
- " gdb-ruby: runs test.rb by ruby under gdb" \
- " runirb: starts irb on built ruby (not installed ruby)" \
- " exam: equals make check test-bundler-parallel test-bundled-gems" \
- " check: equals make test test-tool test-all test-spec test-syntax-suggest" \
- " test: ruby core tests [BTESTS=<bootstraptest files>]" \
- " test-all: all ruby tests [TESTOPTS=-j4 TESTS=<test files>]" \
- " test-spec: run the Ruby spec suite [SPECOPTS=<specs, opts>]" \
- " test-bundler: run the Bundler spec" \
- " test-bundler-parallel: run the Bundler spec with parallel" \
- " test-syntax-suggest: run the SyntaxSuggest spec" \
- " test-bundled-gems: run the test suite of bundled gems [BUNDLED_GEMS=<gems>]" \
- " test-tool: tests under the tool/test" \
- " update-gems: download files of the bundled gems" \
- " update-bundled_gems: update the latest version of bundled gems" \
- " sync-default-gems: sync default gems from upstream [GEM=<gem_name git_ref>]" \
- " up: update local copy and autogenerated files" \
- " benchmark: benchmark this ruby and COMPARE_RUBY." \
- " gcbench: gc benchmark [GCBENCH_ITEM=<item_name>]" \
- " install: install all ruby distributions" \
- " install-nodoc: install without rdoc" \
- " install-cross: install cross compiling stuff" \
- " clean: clean up to the state before build" \
- " distclean: clean up to the state before configure" \
- " golf: build goruby for golfers" \
- $(HELP_EXTRA_TASKS) \
+ " all (default): builds all of below" \
+ " miniruby: builds only miniruby" \
+ " encs: builds encodings" \
+ " exts: builds extensions" \
+ " main: builds encodings, extensions and ruby" \
+ " docs: builds documents" \
+ " install-capi: builds C API documents" \
+ " run: runs test.rb by miniruby" \
+ " runruby: runs test.rb by ruby you just built" \
+ " gdb: runs test.rb by miniruby under gdb" \
+ " gdb-ruby: runs test.rb by ruby under gdb" \
+ " check: equals make test test-all" \
+ " exam: equals make check test-spec" \
+ " test: ruby core tests" \
+ " test-all: all ruby tests [TESTOPTS=-j4 TESTS=<test files>]" \
+ " test-spec: run the Ruby spec suite" \
+ " test-rubyspec: same as test-spec" \
+ " test-bundled-gems: run the test suite of bundled gems" \
+ " up: update local copy and autogenerated files" \
+ " benchmark: benchmark this ruby and COMPARE_RUBY." \
+ " gcbench: gc benchmark [GCBENCH_ITEM=<item_name>]" \
+ " gcbench-rdoc: gc benchmark with GCBENCH_ITEM=rdoc" \
+ " install: install all ruby distributions" \
+ " install-nodoc: install without rdoc" \
+ " install-cross: install cross compiling stuff" \
+ " clean: clean for tarball" \
+ " distclean: clean for repository" \
+ " change: make change log template" \
+ " golf: for golfers" \
+ "" \
"see DeveloperHowto for more detail: " \
" https://bugs.ruby-lang.org/projects/ruby/wiki/DeveloperHowto" \
$(MESSAGE_END)
-$(CROSS_COMPILING:yes=)builtin.$(OBJEXT): {$(VPATH)}mini_builtin.c
-$(CROSS_COMPILING:yes=)builtin.$(OBJEXT): {$(VPATH)}miniprelude.c
-
# AUTOGENERATED DEPENDENCIES START
addr2line.$(OBJEXT): {$(VPATH)}addr2line.c
addr2line.$(OBJEXT): {$(VPATH)}addr2line.h
-addr2line.$(OBJEXT): {$(VPATH)}assert.h
-addr2line.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-addr2line.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-addr2line.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-addr2line.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-addr2line.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-addr2line.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
addr2line.$(OBJEXT): {$(VPATH)}config.h
-addr2line.$(OBJEXT): {$(VPATH)}defines.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/assume.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/cast.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/config.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/dosish.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-addr2line.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
addr2line.$(OBJEXT): {$(VPATH)}missing.h
-array.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-array.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-array.$(OBJEXT): $(CCAN_DIR)/list/list.h
-array.$(OBJEXT): $(CCAN_DIR)/str/str.h
array.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-array.$(OBJEXT): $(top_srcdir)/internal/array.h
-array.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-array.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-array.$(OBJEXT): $(top_srcdir)/internal/bits.h
-array.$(OBJEXT): $(top_srcdir)/internal/class.h
-array.$(OBJEXT): $(top_srcdir)/internal/compar.h
-array.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-array.$(OBJEXT): $(top_srcdir)/internal/enum.h
-array.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-array.$(OBJEXT): $(top_srcdir)/internal/gc.h
-array.$(OBJEXT): $(top_srcdir)/internal/hash.h
-array.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-array.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-array.$(OBJEXT): $(top_srcdir)/internal/object.h
-array.$(OBJEXT): $(top_srcdir)/internal/proc.h
-array.$(OBJEXT): $(top_srcdir)/internal/rational.h
-array.$(OBJEXT): $(top_srcdir)/internal/serial.h
-array.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-array.$(OBJEXT): $(top_srcdir)/internal/variable.h
-array.$(OBJEXT): $(top_srcdir)/internal/vm.h
-array.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+array.$(OBJEXT): $(top_srcdir)/include/ruby.h
array.$(OBJEXT): {$(VPATH)}array.c
-array.$(OBJEXT): {$(VPATH)}array.rbinc
-array.$(OBJEXT): {$(VPATH)}assert.h
-array.$(OBJEXT): {$(VPATH)}atomic.h
-array.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-array.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-array.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-array.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-array.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-array.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-array.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-array.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-array.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-array.$(OBJEXT): {$(VPATH)}builtin.h
array.$(OBJEXT): {$(VPATH)}config.h
-array.$(OBJEXT): {$(VPATH)}constant.h
array.$(OBJEXT): {$(VPATH)}debug_counter.h
array.$(OBJEXT): {$(VPATH)}defines.h
array.$(OBJEXT): {$(VPATH)}encoding.h
array.$(OBJEXT): {$(VPATH)}id.h
-array.$(OBJEXT): {$(VPATH)}id_table.h
array.$(OBJEXT): {$(VPATH)}intern.h
array.$(OBJEXT): {$(VPATH)}internal.h
-array.$(OBJEXT): {$(VPATH)}internal/abi.h
-array.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-array.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-array.$(OBJEXT): {$(VPATH)}internal/assume.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-array.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-array.$(OBJEXT): {$(VPATH)}internal/cast.h
-array.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-array.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-array.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-array.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-array.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-array.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-array.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-array.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-array.$(OBJEXT): {$(VPATH)}internal/config.h
-array.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-array.$(OBJEXT): {$(VPATH)}internal/core.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-array.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-array.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-array.$(OBJEXT): {$(VPATH)}internal/ctype.h
-array.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-array.$(OBJEXT): {$(VPATH)}internal/dosish.h
-array.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-array.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-array.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-array.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-array.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-array.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-array.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-array.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-array.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-array.$(OBJEXT): {$(VPATH)}internal/error.h
-array.$(OBJEXT): {$(VPATH)}internal/eval.h
-array.$(OBJEXT): {$(VPATH)}internal/event.h
-array.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-array.$(OBJEXT): {$(VPATH)}internal/gc.h
-array.$(OBJEXT): {$(VPATH)}internal/glob.h
-array.$(OBJEXT): {$(VPATH)}internal/globals.h
-array.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-array.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-array.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-array.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-array.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-array.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-array.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-array.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-array.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-array.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-array.$(OBJEXT): {$(VPATH)}internal/iterator.h
-array.$(OBJEXT): {$(VPATH)}internal/memory.h
-array.$(OBJEXT): {$(VPATH)}internal/method.h
-array.$(OBJEXT): {$(VPATH)}internal/module.h
-array.$(OBJEXT): {$(VPATH)}internal/newobj.h
-array.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-array.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-array.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-array.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-array.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-array.$(OBJEXT): {$(VPATH)}internal/symbol.h
-array.$(OBJEXT): {$(VPATH)}internal/value.h
-array.$(OBJEXT): {$(VPATH)}internal/value_type.h
-array.$(OBJEXT): {$(VPATH)}internal/variable.h
-array.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-array.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-array.$(OBJEXT): {$(VPATH)}method.h
+array.$(OBJEXT): {$(VPATH)}io.h
array.$(OBJEXT): {$(VPATH)}missing.h
-array.$(OBJEXT): {$(VPATH)}node.h
array.$(OBJEXT): {$(VPATH)}onigmo.h
array.$(OBJEXT): {$(VPATH)}oniguruma.h
array.$(OBJEXT): {$(VPATH)}probes.dmyh
array.$(OBJEXT): {$(VPATH)}probes.h
array.$(OBJEXT): {$(VPATH)}ruby_assert.h
-array.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-array.$(OBJEXT): {$(VPATH)}shape.h
array.$(OBJEXT): {$(VPATH)}st.h
array.$(OBJEXT): {$(VPATH)}subst.h
-array.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-array.$(OBJEXT): {$(VPATH)}thread_native.h
-array.$(OBJEXT): {$(VPATH)}transient_heap.h
array.$(OBJEXT): {$(VPATH)}util.h
-array.$(OBJEXT): {$(VPATH)}vm_core.h
-array.$(OBJEXT): {$(VPATH)}vm_opts.h
-ast.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-ast.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-ast.$(OBJEXT): $(CCAN_DIR)/list/list.h
-ast.$(OBJEXT): $(CCAN_DIR)/str/str.h
-ast.$(OBJEXT): $(hdrdir)/ruby.h
-ast.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-ast.$(OBJEXT): $(top_srcdir)/internal/array.h
-ast.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-ast.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-ast.$(OBJEXT): $(top_srcdir)/internal/gc.h
-ast.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-ast.$(OBJEXT): $(top_srcdir)/internal/parse.h
-ast.$(OBJEXT): $(top_srcdir)/internal/serial.h
-ast.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-ast.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-ast.$(OBJEXT): $(top_srcdir)/internal/variable.h
-ast.$(OBJEXT): $(top_srcdir)/internal/vm.h
-ast.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-ast.$(OBJEXT): {$(VPATH)}assert.h
-ast.$(OBJEXT): {$(VPATH)}ast.c
-ast.$(OBJEXT): {$(VPATH)}ast.rbinc
-ast.$(OBJEXT): {$(VPATH)}atomic.h
-ast.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-ast.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-ast.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-ast.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-ast.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-ast.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-ast.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-ast.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-ast.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-ast.$(OBJEXT): {$(VPATH)}builtin.h
-ast.$(OBJEXT): {$(VPATH)}config.h
-ast.$(OBJEXT): {$(VPATH)}constant.h
-ast.$(OBJEXT): {$(VPATH)}defines.h
-ast.$(OBJEXT): {$(VPATH)}encoding.h
-ast.$(OBJEXT): {$(VPATH)}id.h
-ast.$(OBJEXT): {$(VPATH)}id_table.h
-ast.$(OBJEXT): {$(VPATH)}intern.h
-ast.$(OBJEXT): {$(VPATH)}internal.h
-ast.$(OBJEXT): {$(VPATH)}internal/abi.h
-ast.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-ast.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-ast.$(OBJEXT): {$(VPATH)}internal/assume.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-ast.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-ast.$(OBJEXT): {$(VPATH)}internal/cast.h
-ast.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-ast.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-ast.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-ast.$(OBJEXT): {$(VPATH)}internal/config.h
-ast.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-ast.$(OBJEXT): {$(VPATH)}internal/core.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-ast.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-ast.$(OBJEXT): {$(VPATH)}internal/ctype.h
-ast.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-ast.$(OBJEXT): {$(VPATH)}internal/dosish.h
-ast.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-ast.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-ast.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-ast.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-ast.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-ast.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-ast.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-ast.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-ast.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-ast.$(OBJEXT): {$(VPATH)}internal/error.h
-ast.$(OBJEXT): {$(VPATH)}internal/eval.h
-ast.$(OBJEXT): {$(VPATH)}internal/event.h
-ast.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-ast.$(OBJEXT): {$(VPATH)}internal/gc.h
-ast.$(OBJEXT): {$(VPATH)}internal/glob.h
-ast.$(OBJEXT): {$(VPATH)}internal/globals.h
-ast.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-ast.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-ast.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-ast.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-ast.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-ast.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-ast.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-ast.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-ast.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-ast.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-ast.$(OBJEXT): {$(VPATH)}internal/iterator.h
-ast.$(OBJEXT): {$(VPATH)}internal/memory.h
-ast.$(OBJEXT): {$(VPATH)}internal/method.h
-ast.$(OBJEXT): {$(VPATH)}internal/module.h
-ast.$(OBJEXT): {$(VPATH)}internal/newobj.h
-ast.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-ast.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-ast.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-ast.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-ast.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-ast.$(OBJEXT): {$(VPATH)}internal/symbol.h
-ast.$(OBJEXT): {$(VPATH)}internal/value.h
-ast.$(OBJEXT): {$(VPATH)}internal/value_type.h
-ast.$(OBJEXT): {$(VPATH)}internal/variable.h
-ast.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-ast.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-ast.$(OBJEXT): {$(VPATH)}iseq.h
-ast.$(OBJEXT): {$(VPATH)}method.h
-ast.$(OBJEXT): {$(VPATH)}missing.h
-ast.$(OBJEXT): {$(VPATH)}node.h
-ast.$(OBJEXT): {$(VPATH)}onigmo.h
-ast.$(OBJEXT): {$(VPATH)}oniguruma.h
-ast.$(OBJEXT): {$(VPATH)}ruby_assert.h
-ast.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-ast.$(OBJEXT): {$(VPATH)}shape.h
-ast.$(OBJEXT): {$(VPATH)}st.h
-ast.$(OBJEXT): {$(VPATH)}subst.h
-ast.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-ast.$(OBJEXT): {$(VPATH)}thread_native.h
-ast.$(OBJEXT): {$(VPATH)}util.h
-ast.$(OBJEXT): {$(VPATH)}vm_core.h
-ast.$(OBJEXT): {$(VPATH)}vm_opts.h
-bignum.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-bignum.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-bignum.$(OBJEXT): $(CCAN_DIR)/list/list.h
-bignum.$(OBJEXT): $(CCAN_DIR)/str/str.h
bignum.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/array.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/bits.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/class.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/complex.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/gc.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/object.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/serial.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/variable.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/vm.h
-bignum.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-bignum.$(OBJEXT): {$(VPATH)}assert.h
-bignum.$(OBJEXT): {$(VPATH)}atomic.h
-bignum.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-bignum.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-bignum.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-bignum.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-bignum.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-bignum.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-bignum.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-bignum.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-bignum.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+bignum.$(OBJEXT): $(top_srcdir)/include/ruby.h
bignum.$(OBJEXT): {$(VPATH)}bignum.c
bignum.$(OBJEXT): {$(VPATH)}config.h
-bignum.$(OBJEXT): {$(VPATH)}constant.h
bignum.$(OBJEXT): {$(VPATH)}defines.h
+bignum.$(OBJEXT): {$(VPATH)}encoding.h
bignum.$(OBJEXT): {$(VPATH)}id.h
-bignum.$(OBJEXT): {$(VPATH)}id_table.h
bignum.$(OBJEXT): {$(VPATH)}intern.h
bignum.$(OBJEXT): {$(VPATH)}internal.h
-bignum.$(OBJEXT): {$(VPATH)}internal/abi.h
-bignum.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-bignum.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-bignum.$(OBJEXT): {$(VPATH)}internal/assume.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-bignum.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-bignum.$(OBJEXT): {$(VPATH)}internal/cast.h
-bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-bignum.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-bignum.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-bignum.$(OBJEXT): {$(VPATH)}internal/config.h
-bignum.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-bignum.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-bignum.$(OBJEXT): {$(VPATH)}internal/ctype.h
-bignum.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-bignum.$(OBJEXT): {$(VPATH)}internal/dosish.h
-bignum.$(OBJEXT): {$(VPATH)}internal/error.h
-bignum.$(OBJEXT): {$(VPATH)}internal/eval.h
-bignum.$(OBJEXT): {$(VPATH)}internal/event.h
-bignum.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-bignum.$(OBJEXT): {$(VPATH)}internal/gc.h
-bignum.$(OBJEXT): {$(VPATH)}internal/glob.h
-bignum.$(OBJEXT): {$(VPATH)}internal/globals.h
-bignum.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-bignum.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-bignum.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-bignum.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-bignum.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-bignum.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-bignum.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-bignum.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-bignum.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-bignum.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-bignum.$(OBJEXT): {$(VPATH)}internal/iterator.h
-bignum.$(OBJEXT): {$(VPATH)}internal/memory.h
-bignum.$(OBJEXT): {$(VPATH)}internal/method.h
-bignum.$(OBJEXT): {$(VPATH)}internal/module.h
-bignum.$(OBJEXT): {$(VPATH)}internal/newobj.h
-bignum.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-bignum.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-bignum.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-bignum.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-bignum.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-bignum.$(OBJEXT): {$(VPATH)}internal/symbol.h
-bignum.$(OBJEXT): {$(VPATH)}internal/value.h
-bignum.$(OBJEXT): {$(VPATH)}internal/value_type.h
-bignum.$(OBJEXT): {$(VPATH)}internal/variable.h
-bignum.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-bignum.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-bignum.$(OBJEXT): {$(VPATH)}method.h
+bignum.$(OBJEXT): {$(VPATH)}io.h
bignum.$(OBJEXT): {$(VPATH)}missing.h
-bignum.$(OBJEXT): {$(VPATH)}node.h
+bignum.$(OBJEXT): {$(VPATH)}onigmo.h
+bignum.$(OBJEXT): {$(VPATH)}oniguruma.h
bignum.$(OBJEXT): {$(VPATH)}ruby_assert.h
-bignum.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-bignum.$(OBJEXT): {$(VPATH)}shape.h
bignum.$(OBJEXT): {$(VPATH)}st.h
bignum.$(OBJEXT): {$(VPATH)}subst.h
bignum.$(OBJEXT): {$(VPATH)}thread.h
-bignum.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-bignum.$(OBJEXT): {$(VPATH)}thread_native.h
bignum.$(OBJEXT): {$(VPATH)}util.h
-bignum.$(OBJEXT): {$(VPATH)}vm_core.h
-bignum.$(OBJEXT): {$(VPATH)}vm_opts.h
-builtin.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-builtin.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-builtin.$(OBJEXT): $(CCAN_DIR)/list/list.h
-builtin.$(OBJEXT): $(CCAN_DIR)/str/str.h
-builtin.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-builtin.$(OBJEXT): $(top_srcdir)/internal/array.h
-builtin.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-builtin.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-builtin.$(OBJEXT): $(top_srcdir)/internal/gc.h
-builtin.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-builtin.$(OBJEXT): $(top_srcdir)/internal/serial.h
-builtin.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-builtin.$(OBJEXT): $(top_srcdir)/internal/variable.h
-builtin.$(OBJEXT): $(top_srcdir)/internal/vm.h
-builtin.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-builtin.$(OBJEXT): {$(VPATH)}assert.h
-builtin.$(OBJEXT): {$(VPATH)}atomic.h
-builtin.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-builtin.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-builtin.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-builtin.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-builtin.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-builtin.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-builtin.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-builtin.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-builtin.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-builtin.$(OBJEXT): {$(VPATH)}builtin.c
-builtin.$(OBJEXT): {$(VPATH)}builtin.h
-builtin.$(OBJEXT): {$(VPATH)}builtin_binary.inc
-builtin.$(OBJEXT): {$(VPATH)}config.h
-builtin.$(OBJEXT): {$(VPATH)}constant.h
-builtin.$(OBJEXT): {$(VPATH)}defines.h
-builtin.$(OBJEXT): {$(VPATH)}id.h
-builtin.$(OBJEXT): {$(VPATH)}id_table.h
-builtin.$(OBJEXT): {$(VPATH)}intern.h
-builtin.$(OBJEXT): {$(VPATH)}internal.h
-builtin.$(OBJEXT): {$(VPATH)}internal/abi.h
-builtin.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-builtin.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-builtin.$(OBJEXT): {$(VPATH)}internal/assume.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-builtin.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-builtin.$(OBJEXT): {$(VPATH)}internal/cast.h
-builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-builtin.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-builtin.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-builtin.$(OBJEXT): {$(VPATH)}internal/config.h
-builtin.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-builtin.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-builtin.$(OBJEXT): {$(VPATH)}internal/ctype.h
-builtin.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-builtin.$(OBJEXT): {$(VPATH)}internal/dosish.h
-builtin.$(OBJEXT): {$(VPATH)}internal/error.h
-builtin.$(OBJEXT): {$(VPATH)}internal/eval.h
-builtin.$(OBJEXT): {$(VPATH)}internal/event.h
-builtin.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-builtin.$(OBJEXT): {$(VPATH)}internal/gc.h
-builtin.$(OBJEXT): {$(VPATH)}internal/glob.h
-builtin.$(OBJEXT): {$(VPATH)}internal/globals.h
-builtin.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-builtin.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-builtin.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-builtin.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-builtin.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-builtin.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-builtin.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-builtin.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-builtin.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-builtin.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-builtin.$(OBJEXT): {$(VPATH)}internal/iterator.h
-builtin.$(OBJEXT): {$(VPATH)}internal/memory.h
-builtin.$(OBJEXT): {$(VPATH)}internal/method.h
-builtin.$(OBJEXT): {$(VPATH)}internal/module.h
-builtin.$(OBJEXT): {$(VPATH)}internal/newobj.h
-builtin.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-builtin.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-builtin.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-builtin.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-builtin.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-builtin.$(OBJEXT): {$(VPATH)}internal/symbol.h
-builtin.$(OBJEXT): {$(VPATH)}internal/value.h
-builtin.$(OBJEXT): {$(VPATH)}internal/value_type.h
-builtin.$(OBJEXT): {$(VPATH)}internal/variable.h
-builtin.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-builtin.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-builtin.$(OBJEXT): {$(VPATH)}iseq.h
-builtin.$(OBJEXT): {$(VPATH)}method.h
-builtin.$(OBJEXT): {$(VPATH)}missing.h
-builtin.$(OBJEXT): {$(VPATH)}node.h
-builtin.$(OBJEXT): {$(VPATH)}ruby_assert.h
-builtin.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-builtin.$(OBJEXT): {$(VPATH)}shape.h
-builtin.$(OBJEXT): {$(VPATH)}st.h
-builtin.$(OBJEXT): {$(VPATH)}subst.h
-builtin.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-builtin.$(OBJEXT): {$(VPATH)}thread_native.h
-builtin.$(OBJEXT): {$(VPATH)}vm_core.h
-builtin.$(OBJEXT): {$(VPATH)}vm_opts.h
class.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
class.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
class.$(OBJEXT): $(CCAN_DIR)/list/list.h
class.$(OBJEXT): $(CCAN_DIR)/str/str.h
class.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-class.$(OBJEXT): $(top_srcdir)/internal/array.h
-class.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-class.$(OBJEXT): $(top_srcdir)/internal/class.h
-class.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-class.$(OBJEXT): $(top_srcdir)/internal/eval.h
-class.$(OBJEXT): $(top_srcdir)/internal/gc.h
-class.$(OBJEXT): $(top_srcdir)/internal/hash.h
-class.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-class.$(OBJEXT): $(top_srcdir)/internal/object.h
-class.$(OBJEXT): $(top_srcdir)/internal/serial.h
-class.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-class.$(OBJEXT): $(top_srcdir)/internal/string.h
-class.$(OBJEXT): $(top_srcdir)/internal/variable.h
-class.$(OBJEXT): $(top_srcdir)/internal/vm.h
-class.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-class.$(OBJEXT): {$(VPATH)}assert.h
-class.$(OBJEXT): {$(VPATH)}atomic.h
-class.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-class.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-class.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-class.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-class.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-class.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-class.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-class.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-class.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+class.$(OBJEXT): $(top_srcdir)/include/ruby.h
class.$(OBJEXT): {$(VPATH)}class.c
class.$(OBJEXT): {$(VPATH)}config.h
class.$(OBJEXT): {$(VPATH)}constant.h
-class.$(OBJEXT): {$(VPATH)}debug_counter.h
class.$(OBJEXT): {$(VPATH)}defines.h
class.$(OBJEXT): {$(VPATH)}encoding.h
class.$(OBJEXT): {$(VPATH)}id.h
class.$(OBJEXT): {$(VPATH)}id_table.h
class.$(OBJEXT): {$(VPATH)}intern.h
class.$(OBJEXT): {$(VPATH)}internal.h
-class.$(OBJEXT): {$(VPATH)}internal/abi.h
-class.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-class.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-class.$(OBJEXT): {$(VPATH)}internal/assume.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-class.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-class.$(OBJEXT): {$(VPATH)}internal/cast.h
-class.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-class.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-class.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-class.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-class.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-class.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-class.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-class.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-class.$(OBJEXT): {$(VPATH)}internal/config.h
-class.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-class.$(OBJEXT): {$(VPATH)}internal/core.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-class.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-class.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-class.$(OBJEXT): {$(VPATH)}internal/ctype.h
-class.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-class.$(OBJEXT): {$(VPATH)}internal/dosish.h
-class.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-class.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-class.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-class.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-class.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-class.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-class.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-class.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-class.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-class.$(OBJEXT): {$(VPATH)}internal/error.h
-class.$(OBJEXT): {$(VPATH)}internal/eval.h
-class.$(OBJEXT): {$(VPATH)}internal/event.h
-class.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-class.$(OBJEXT): {$(VPATH)}internal/gc.h
-class.$(OBJEXT): {$(VPATH)}internal/glob.h
-class.$(OBJEXT): {$(VPATH)}internal/globals.h
-class.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-class.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-class.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-class.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-class.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-class.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-class.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-class.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-class.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-class.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-class.$(OBJEXT): {$(VPATH)}internal/iterator.h
-class.$(OBJEXT): {$(VPATH)}internal/memory.h
-class.$(OBJEXT): {$(VPATH)}internal/method.h
-class.$(OBJEXT): {$(VPATH)}internal/module.h
-class.$(OBJEXT): {$(VPATH)}internal/newobj.h
-class.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-class.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-class.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-class.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-class.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-class.$(OBJEXT): {$(VPATH)}internal/symbol.h
-class.$(OBJEXT): {$(VPATH)}internal/value.h
-class.$(OBJEXT): {$(VPATH)}internal/value_type.h
-class.$(OBJEXT): {$(VPATH)}internal/variable.h
-class.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-class.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+class.$(OBJEXT): {$(VPATH)}io.h
class.$(OBJEXT): {$(VPATH)}method.h
class.$(OBJEXT): {$(VPATH)}missing.h
class.$(OBJEXT): {$(VPATH)}node.h
@@ -2832,190 +1436,20 @@ class.$(OBJEXT): {$(VPATH)}onigmo.h
class.$(OBJEXT): {$(VPATH)}oniguruma.h
class.$(OBJEXT): {$(VPATH)}ruby_assert.h
class.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-class.$(OBJEXT): {$(VPATH)}shape.h
class.$(OBJEXT): {$(VPATH)}st.h
class.$(OBJEXT): {$(VPATH)}subst.h
class.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
class.$(OBJEXT): {$(VPATH)}thread_native.h
class.$(OBJEXT): {$(VPATH)}vm_core.h
+class.$(OBJEXT): {$(VPATH)}vm_debug.h
class.$(OBJEXT): {$(VPATH)}vm_opts.h
compar.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-compar.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-compar.$(OBJEXT): $(top_srcdir)/internal/compar.h
-compar.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-compar.$(OBJEXT): $(top_srcdir)/internal/error.h
-compar.$(OBJEXT): $(top_srcdir)/internal/serial.h
-compar.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-compar.$(OBJEXT): $(top_srcdir)/internal/string.h
-compar.$(OBJEXT): $(top_srcdir)/internal/vm.h
-compar.$(OBJEXT): {$(VPATH)}assert.h
-compar.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-compar.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-compar.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-compar.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-compar.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-compar.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-compar.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-compar.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-compar.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
compar.$(OBJEXT): {$(VPATH)}compar.c
compar.$(OBJEXT): {$(VPATH)}config.h
compar.$(OBJEXT): {$(VPATH)}defines.h
-compar.$(OBJEXT): {$(VPATH)}encoding.h
compar.$(OBJEXT): {$(VPATH)}id.h
compar.$(OBJEXT): {$(VPATH)}intern.h
-compar.$(OBJEXT): {$(VPATH)}internal.h
-compar.$(OBJEXT): {$(VPATH)}internal/abi.h
-compar.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-compar.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-compar.$(OBJEXT): {$(VPATH)}internal/assume.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-compar.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-compar.$(OBJEXT): {$(VPATH)}internal/cast.h
-compar.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-compar.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-compar.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-compar.$(OBJEXT): {$(VPATH)}internal/config.h
-compar.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-compar.$(OBJEXT): {$(VPATH)}internal/core.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-compar.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-compar.$(OBJEXT): {$(VPATH)}internal/ctype.h
-compar.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-compar.$(OBJEXT): {$(VPATH)}internal/dosish.h
-compar.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-compar.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-compar.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-compar.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-compar.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-compar.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-compar.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-compar.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-compar.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-compar.$(OBJEXT): {$(VPATH)}internal/error.h
-compar.$(OBJEXT): {$(VPATH)}internal/eval.h
-compar.$(OBJEXT): {$(VPATH)}internal/event.h
-compar.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-compar.$(OBJEXT): {$(VPATH)}internal/gc.h
-compar.$(OBJEXT): {$(VPATH)}internal/glob.h
-compar.$(OBJEXT): {$(VPATH)}internal/globals.h
-compar.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-compar.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-compar.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-compar.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-compar.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-compar.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-compar.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-compar.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-compar.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-compar.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-compar.$(OBJEXT): {$(VPATH)}internal/iterator.h
-compar.$(OBJEXT): {$(VPATH)}internal/memory.h
-compar.$(OBJEXT): {$(VPATH)}internal/method.h
-compar.$(OBJEXT): {$(VPATH)}internal/module.h
-compar.$(OBJEXT): {$(VPATH)}internal/newobj.h
-compar.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-compar.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-compar.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-compar.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-compar.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-compar.$(OBJEXT): {$(VPATH)}internal/symbol.h
-compar.$(OBJEXT): {$(VPATH)}internal/value.h
-compar.$(OBJEXT): {$(VPATH)}internal/value_type.h
-compar.$(OBJEXT): {$(VPATH)}internal/variable.h
-compar.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-compar.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
compar.$(OBJEXT): {$(VPATH)}missing.h
-compar.$(OBJEXT): {$(VPATH)}onigmo.h
-compar.$(OBJEXT): {$(VPATH)}oniguruma.h
compar.$(OBJEXT): {$(VPATH)}st.h
compar.$(OBJEXT): {$(VPATH)}subst.h
compile.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
@@ -3023,627 +1457,79 @@ compile.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
compile.$(OBJEXT): $(CCAN_DIR)/list/list.h
compile.$(OBJEXT): $(CCAN_DIR)/str/str.h
compile.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-compile.$(OBJEXT): $(top_srcdir)/internal/array.h
-compile.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-compile.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-compile.$(OBJEXT): $(top_srcdir)/internal/bits.h
-compile.$(OBJEXT): $(top_srcdir)/internal/class.h
-compile.$(OBJEXT): $(top_srcdir)/internal/compile.h
-compile.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-compile.$(OBJEXT): $(top_srcdir)/internal/complex.h
-compile.$(OBJEXT): $(top_srcdir)/internal/encoding.h
-compile.$(OBJEXT): $(top_srcdir)/internal/error.h
-compile.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-compile.$(OBJEXT): $(top_srcdir)/internal/gc.h
-compile.$(OBJEXT): $(top_srcdir)/internal/hash.h
-compile.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-compile.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-compile.$(OBJEXT): $(top_srcdir)/internal/object.h
-compile.$(OBJEXT): $(top_srcdir)/internal/rational.h
-compile.$(OBJEXT): $(top_srcdir)/internal/re.h
-compile.$(OBJEXT): $(top_srcdir)/internal/serial.h
-compile.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-compile.$(OBJEXT): $(top_srcdir)/internal/string.h
-compile.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-compile.$(OBJEXT): $(top_srcdir)/internal/thread.h
-compile.$(OBJEXT): $(top_srcdir)/internal/variable.h
-compile.$(OBJEXT): $(top_srcdir)/internal/vm.h
-compile.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-compile.$(OBJEXT): {$(VPATH)}assert.h
-compile.$(OBJEXT): {$(VPATH)}atomic.h
-compile.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-compile.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-compile.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-compile.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-compile.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-compile.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-compile.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-compile.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-compile.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-compile.$(OBJEXT): {$(VPATH)}builtin.h
+compile.$(OBJEXT): $(hdrdir)/ruby/version.h
+compile.$(OBJEXT): $(top_srcdir)/include/ruby.h
compile.$(OBJEXT): {$(VPATH)}compile.c
compile.$(OBJEXT): {$(VPATH)}config.h
-compile.$(OBJEXT): {$(VPATH)}constant.h
-compile.$(OBJEXT): {$(VPATH)}debug_counter.h
compile.$(OBJEXT): {$(VPATH)}defines.h
compile.$(OBJEXT): {$(VPATH)}encindex.h
compile.$(OBJEXT): {$(VPATH)}encoding.h
+compile.$(OBJEXT): {$(VPATH)}gc.h
compile.$(OBJEXT): {$(VPATH)}id.h
compile.$(OBJEXT): {$(VPATH)}id_table.h
-compile.$(OBJEXT): {$(VPATH)}insns.def
compile.$(OBJEXT): {$(VPATH)}insns.inc
compile.$(OBJEXT): {$(VPATH)}insns_info.inc
compile.$(OBJEXT): {$(VPATH)}intern.h
compile.$(OBJEXT): {$(VPATH)}internal.h
-compile.$(OBJEXT): {$(VPATH)}internal/abi.h
-compile.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-compile.$(OBJEXT): {$(VPATH)}internal/assume.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-compile.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-compile.$(OBJEXT): {$(VPATH)}internal/cast.h
-compile.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-compile.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-compile.$(OBJEXT): {$(VPATH)}internal/config.h
-compile.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-compile.$(OBJEXT): {$(VPATH)}internal/core.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-compile.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-compile.$(OBJEXT): {$(VPATH)}internal/ctype.h
-compile.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-compile.$(OBJEXT): {$(VPATH)}internal/dosish.h
-compile.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-compile.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-compile.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-compile.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-compile.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-compile.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-compile.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-compile.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-compile.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-compile.$(OBJEXT): {$(VPATH)}internal/error.h
-compile.$(OBJEXT): {$(VPATH)}internal/eval.h
-compile.$(OBJEXT): {$(VPATH)}internal/event.h
-compile.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-compile.$(OBJEXT): {$(VPATH)}internal/gc.h
-compile.$(OBJEXT): {$(VPATH)}internal/glob.h
-compile.$(OBJEXT): {$(VPATH)}internal/globals.h
-compile.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-compile.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-compile.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-compile.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-compile.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-compile.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-compile.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-compile.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-compile.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-compile.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-compile.$(OBJEXT): {$(VPATH)}internal/iterator.h
-compile.$(OBJEXT): {$(VPATH)}internal/memory.h
-compile.$(OBJEXT): {$(VPATH)}internal/method.h
-compile.$(OBJEXT): {$(VPATH)}internal/module.h
-compile.$(OBJEXT): {$(VPATH)}internal/newobj.h
-compile.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-compile.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-compile.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-compile.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-compile.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-compile.$(OBJEXT): {$(VPATH)}internal/symbol.h
-compile.$(OBJEXT): {$(VPATH)}internal/value.h
-compile.$(OBJEXT): {$(VPATH)}internal/value_type.h
-compile.$(OBJEXT): {$(VPATH)}internal/variable.h
-compile.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-compile.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+compile.$(OBJEXT): {$(VPATH)}io.h
compile.$(OBJEXT): {$(VPATH)}iseq.h
compile.$(OBJEXT): {$(VPATH)}method.h
compile.$(OBJEXT): {$(VPATH)}missing.h
compile.$(OBJEXT): {$(VPATH)}node.h
compile.$(OBJEXT): {$(VPATH)}onigmo.h
compile.$(OBJEXT): {$(VPATH)}oniguruma.h
+compile.$(OBJEXT): {$(VPATH)}opt_sc.inc
compile.$(OBJEXT): {$(VPATH)}optinsn.inc
+compile.$(OBJEXT): {$(VPATH)}optunifs.inc
compile.$(OBJEXT): {$(VPATH)}re.h
compile.$(OBJEXT): {$(VPATH)}regex.h
compile.$(OBJEXT): {$(VPATH)}ruby_assert.h
compile.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-compile.$(OBJEXT): {$(VPATH)}shape.h
compile.$(OBJEXT): {$(VPATH)}st.h
compile.$(OBJEXT): {$(VPATH)}subst.h
compile.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
compile.$(OBJEXT): {$(VPATH)}thread_native.h
-compile.$(OBJEXT): {$(VPATH)}util.h
-compile.$(OBJEXT): {$(VPATH)}vm_callinfo.h
compile.$(OBJEXT): {$(VPATH)}vm_core.h
compile.$(OBJEXT): {$(VPATH)}vm_debug.h
compile.$(OBJEXT): {$(VPATH)}vm_opts.h
-complex.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-complex.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-complex.$(OBJEXT): $(CCAN_DIR)/list/list.h
-complex.$(OBJEXT): $(CCAN_DIR)/str/str.h
complex.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-complex.$(OBJEXT): $(top_srcdir)/internal/array.h
-complex.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-complex.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-complex.$(OBJEXT): $(top_srcdir)/internal/bits.h
-complex.$(OBJEXT): $(top_srcdir)/internal/class.h
-complex.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-complex.$(OBJEXT): $(top_srcdir)/internal/complex.h
-complex.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-complex.$(OBJEXT): $(top_srcdir)/internal/gc.h
-complex.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-complex.$(OBJEXT): $(top_srcdir)/internal/math.h
-complex.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-complex.$(OBJEXT): $(top_srcdir)/internal/object.h
-complex.$(OBJEXT): $(top_srcdir)/internal/rational.h
-complex.$(OBJEXT): $(top_srcdir)/internal/serial.h
-complex.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-complex.$(OBJEXT): $(top_srcdir)/internal/variable.h
-complex.$(OBJEXT): $(top_srcdir)/internal/vm.h
-complex.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-complex.$(OBJEXT): {$(VPATH)}assert.h
-complex.$(OBJEXT): {$(VPATH)}atomic.h
-complex.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-complex.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-complex.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-complex.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-complex.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-complex.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-complex.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-complex.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-complex.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+complex.$(OBJEXT): $(top_srcdir)/include/ruby.h
complex.$(OBJEXT): {$(VPATH)}complex.c
complex.$(OBJEXT): {$(VPATH)}config.h
-complex.$(OBJEXT): {$(VPATH)}constant.h
complex.$(OBJEXT): {$(VPATH)}defines.h
-complex.$(OBJEXT): {$(VPATH)}id.h
-complex.$(OBJEXT): {$(VPATH)}id_table.h
+complex.$(OBJEXT): {$(VPATH)}encoding.h
complex.$(OBJEXT): {$(VPATH)}intern.h
complex.$(OBJEXT): {$(VPATH)}internal.h
-complex.$(OBJEXT): {$(VPATH)}internal/abi.h
-complex.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-complex.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-complex.$(OBJEXT): {$(VPATH)}internal/assume.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-complex.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-complex.$(OBJEXT): {$(VPATH)}internal/cast.h
-complex.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-complex.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-complex.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-complex.$(OBJEXT): {$(VPATH)}internal/config.h
-complex.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-complex.$(OBJEXT): {$(VPATH)}internal/core.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-complex.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-complex.$(OBJEXT): {$(VPATH)}internal/ctype.h
-complex.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-complex.$(OBJEXT): {$(VPATH)}internal/dosish.h
-complex.$(OBJEXT): {$(VPATH)}internal/error.h
-complex.$(OBJEXT): {$(VPATH)}internal/eval.h
-complex.$(OBJEXT): {$(VPATH)}internal/event.h
-complex.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-complex.$(OBJEXT): {$(VPATH)}internal/gc.h
-complex.$(OBJEXT): {$(VPATH)}internal/glob.h
-complex.$(OBJEXT): {$(VPATH)}internal/globals.h
-complex.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-complex.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-complex.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-complex.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-complex.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-complex.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-complex.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-complex.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-complex.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-complex.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-complex.$(OBJEXT): {$(VPATH)}internal/iterator.h
-complex.$(OBJEXT): {$(VPATH)}internal/memory.h
-complex.$(OBJEXT): {$(VPATH)}internal/method.h
-complex.$(OBJEXT): {$(VPATH)}internal/module.h
-complex.$(OBJEXT): {$(VPATH)}internal/newobj.h
-complex.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-complex.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-complex.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-complex.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-complex.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-complex.$(OBJEXT): {$(VPATH)}internal/symbol.h
-complex.$(OBJEXT): {$(VPATH)}internal/value.h
-complex.$(OBJEXT): {$(VPATH)}internal/value_type.h
-complex.$(OBJEXT): {$(VPATH)}internal/variable.h
-complex.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-complex.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-complex.$(OBJEXT): {$(VPATH)}method.h
+complex.$(OBJEXT): {$(VPATH)}io.h
complex.$(OBJEXT): {$(VPATH)}missing.h
-complex.$(OBJEXT): {$(VPATH)}node.h
+complex.$(OBJEXT): {$(VPATH)}onigmo.h
+complex.$(OBJEXT): {$(VPATH)}oniguruma.h
complex.$(OBJEXT): {$(VPATH)}ruby_assert.h
-complex.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-complex.$(OBJEXT): {$(VPATH)}shape.h
complex.$(OBJEXT): {$(VPATH)}st.h
complex.$(OBJEXT): {$(VPATH)}subst.h
-complex.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-complex.$(OBJEXT): {$(VPATH)}thread_native.h
-complex.$(OBJEXT): {$(VPATH)}vm_core.h
-complex.$(OBJEXT): {$(VPATH)}vm_opts.h
cont.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
cont.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
cont.$(OBJEXT): $(CCAN_DIR)/list/list.h
cont.$(OBJEXT): $(CCAN_DIR)/str/str.h
-cont.$(OBJEXT): $(hdrdir)/ruby.h
cont.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-cont.$(OBJEXT): $(top_srcdir)/internal/array.h
-cont.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-cont.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-cont.$(OBJEXT): $(top_srcdir)/internal/cont.h
-cont.$(OBJEXT): $(top_srcdir)/internal/error.h
-cont.$(OBJEXT): $(top_srcdir)/internal/gc.h
-cont.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-cont.$(OBJEXT): $(top_srcdir)/internal/proc.h
-cont.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-cont.$(OBJEXT): $(top_srcdir)/internal/serial.h
-cont.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-cont.$(OBJEXT): $(top_srcdir)/internal/string.h
-cont.$(OBJEXT): $(top_srcdir)/internal/variable.h
-cont.$(OBJEXT): $(top_srcdir)/internal/vm.h
-cont.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-cont.$(OBJEXT): {$(VPATH)}$(COROUTINE_H)
-cont.$(OBJEXT): {$(VPATH)}assert.h
-cont.$(OBJEXT): {$(VPATH)}atomic.h
-cont.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-cont.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-cont.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-cont.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-cont.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-cont.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-cont.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-cont.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-cont.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+cont.$(OBJEXT): $(top_srcdir)/include/ruby.h
cont.$(OBJEXT): {$(VPATH)}config.h
-cont.$(OBJEXT): {$(VPATH)}constant.h
cont.$(OBJEXT): {$(VPATH)}cont.c
-cont.$(OBJEXT): {$(VPATH)}debug_counter.h
cont.$(OBJEXT): {$(VPATH)}defines.h
cont.$(OBJEXT): {$(VPATH)}encoding.h
cont.$(OBJEXT): {$(VPATH)}eval_intern.h
-cont.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
+cont.$(OBJEXT): {$(VPATH)}gc.h
cont.$(OBJEXT): {$(VPATH)}id.h
-cont.$(OBJEXT): {$(VPATH)}id_table.h
cont.$(OBJEXT): {$(VPATH)}intern.h
cont.$(OBJEXT): {$(VPATH)}internal.h
-cont.$(OBJEXT): {$(VPATH)}internal/abi.h
-cont.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-cont.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-cont.$(OBJEXT): {$(VPATH)}internal/assume.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-cont.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-cont.$(OBJEXT): {$(VPATH)}internal/cast.h
-cont.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-cont.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-cont.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-cont.$(OBJEXT): {$(VPATH)}internal/config.h
-cont.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-cont.$(OBJEXT): {$(VPATH)}internal/core.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-cont.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-cont.$(OBJEXT): {$(VPATH)}internal/ctype.h
-cont.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-cont.$(OBJEXT): {$(VPATH)}internal/dosish.h
-cont.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-cont.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-cont.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-cont.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-cont.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-cont.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-cont.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-cont.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-cont.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-cont.$(OBJEXT): {$(VPATH)}internal/error.h
-cont.$(OBJEXT): {$(VPATH)}internal/eval.h
-cont.$(OBJEXT): {$(VPATH)}internal/event.h
-cont.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-cont.$(OBJEXT): {$(VPATH)}internal/gc.h
-cont.$(OBJEXT): {$(VPATH)}internal/glob.h
-cont.$(OBJEXT): {$(VPATH)}internal/globals.h
-cont.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-cont.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-cont.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-cont.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-cont.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-cont.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-cont.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-cont.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-cont.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-cont.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-cont.$(OBJEXT): {$(VPATH)}internal/iterator.h
-cont.$(OBJEXT): {$(VPATH)}internal/memory.h
-cont.$(OBJEXT): {$(VPATH)}internal/method.h
-cont.$(OBJEXT): {$(VPATH)}internal/module.h
-cont.$(OBJEXT): {$(VPATH)}internal/newobj.h
-cont.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-cont.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-cont.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-cont.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-cont.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-cont.$(OBJEXT): {$(VPATH)}internal/symbol.h
-cont.$(OBJEXT): {$(VPATH)}internal/value.h
-cont.$(OBJEXT): {$(VPATH)}internal/value_type.h
-cont.$(OBJEXT): {$(VPATH)}internal/variable.h
-cont.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-cont.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-cont.$(OBJEXT): {$(VPATH)}iseq.h
+cont.$(OBJEXT): {$(VPATH)}io.h
cont.$(OBJEXT): {$(VPATH)}method.h
cont.$(OBJEXT): {$(VPATH)}missing.h
cont.$(OBJEXT): {$(VPATH)}node.h
cont.$(OBJEXT): {$(VPATH)}onigmo.h
cont.$(OBJEXT): {$(VPATH)}oniguruma.h
-cont.$(OBJEXT): {$(VPATH)}ractor.h
-cont.$(OBJEXT): {$(VPATH)}ractor_core.h
-cont.$(OBJEXT): {$(VPATH)}rjit.h
cont.$(OBJEXT): {$(VPATH)}ruby_assert.h
cont.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-cont.$(OBJEXT): {$(VPATH)}shape.h
cont.$(OBJEXT): {$(VPATH)}st.h
cont.$(OBJEXT): {$(VPATH)}subst.h
cont.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
@@ -3651,1382 +1537,109 @@ cont.$(OBJEXT): {$(VPATH)}thread_native.h
cont.$(OBJEXT): {$(VPATH)}vm_core.h
cont.$(OBJEXT): {$(VPATH)}vm_debug.h
cont.$(OBJEXT): {$(VPATH)}vm_opts.h
-cont.$(OBJEXT): {$(VPATH)}vm_sync.h
-cont.$(OBJEXT): {$(VPATH)}yjit.h
debug.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
debug.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
debug.$(OBJEXT): $(CCAN_DIR)/list/list.h
debug.$(OBJEXT): $(CCAN_DIR)/str/str.h
debug.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-debug.$(OBJEXT): $(top_srcdir)/internal/array.h
-debug.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-debug.$(OBJEXT): $(top_srcdir)/internal/class.h
-debug.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-debug.$(OBJEXT): $(top_srcdir)/internal/gc.h
-debug.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-debug.$(OBJEXT): $(top_srcdir)/internal/serial.h
-debug.$(OBJEXT): $(top_srcdir)/internal/signal.h
-debug.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-debug.$(OBJEXT): $(top_srcdir)/internal/variable.h
-debug.$(OBJEXT): $(top_srcdir)/internal/vm.h
-debug.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-debug.$(OBJEXT): {$(VPATH)}assert.h
-debug.$(OBJEXT): {$(VPATH)}atomic.h
-debug.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-debug.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-debug.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-debug.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-debug.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-debug.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-debug.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-debug.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-debug.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+debug.$(OBJEXT): $(top_srcdir)/include/ruby.h
debug.$(OBJEXT): {$(VPATH)}config.h
-debug.$(OBJEXT): {$(VPATH)}constant.h
debug.$(OBJEXT): {$(VPATH)}debug.c
-debug.$(OBJEXT): {$(VPATH)}debug_counter.h
debug.$(OBJEXT): {$(VPATH)}defines.h
-debug.$(OBJEXT): {$(VPATH)}encindex.h
debug.$(OBJEXT): {$(VPATH)}encoding.h
debug.$(OBJEXT): {$(VPATH)}eval_intern.h
+debug.$(OBJEXT): {$(VPATH)}gc.h
debug.$(OBJEXT): {$(VPATH)}id.h
-debug.$(OBJEXT): {$(VPATH)}id_table.h
debug.$(OBJEXT): {$(VPATH)}intern.h
debug.$(OBJEXT): {$(VPATH)}internal.h
-debug.$(OBJEXT): {$(VPATH)}internal/abi.h
-debug.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-debug.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-debug.$(OBJEXT): {$(VPATH)}internal/assume.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-debug.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-debug.$(OBJEXT): {$(VPATH)}internal/cast.h
-debug.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-debug.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-debug.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-debug.$(OBJEXT): {$(VPATH)}internal/config.h
-debug.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-debug.$(OBJEXT): {$(VPATH)}internal/core.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-debug.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-debug.$(OBJEXT): {$(VPATH)}internal/ctype.h
-debug.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-debug.$(OBJEXT): {$(VPATH)}internal/dosish.h
-debug.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-debug.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-debug.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-debug.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-debug.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-debug.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-debug.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-debug.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-debug.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-debug.$(OBJEXT): {$(VPATH)}internal/error.h
-debug.$(OBJEXT): {$(VPATH)}internal/eval.h
-debug.$(OBJEXT): {$(VPATH)}internal/event.h
-debug.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-debug.$(OBJEXT): {$(VPATH)}internal/gc.h
-debug.$(OBJEXT): {$(VPATH)}internal/glob.h
-debug.$(OBJEXT): {$(VPATH)}internal/globals.h
-debug.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-debug.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-debug.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-debug.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-debug.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-debug.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-debug.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-debug.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-debug.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-debug.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-debug.$(OBJEXT): {$(VPATH)}internal/iterator.h
-debug.$(OBJEXT): {$(VPATH)}internal/memory.h
-debug.$(OBJEXT): {$(VPATH)}internal/method.h
-debug.$(OBJEXT): {$(VPATH)}internal/module.h
-debug.$(OBJEXT): {$(VPATH)}internal/newobj.h
-debug.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-debug.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-debug.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-debug.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-debug.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-debug.$(OBJEXT): {$(VPATH)}internal/symbol.h
-debug.$(OBJEXT): {$(VPATH)}internal/value.h
-debug.$(OBJEXT): {$(VPATH)}internal/value_type.h
-debug.$(OBJEXT): {$(VPATH)}internal/variable.h
-debug.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-debug.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
debug.$(OBJEXT): {$(VPATH)}io.h
debug.$(OBJEXT): {$(VPATH)}method.h
debug.$(OBJEXT): {$(VPATH)}missing.h
debug.$(OBJEXT): {$(VPATH)}node.h
debug.$(OBJEXT): {$(VPATH)}onigmo.h
debug.$(OBJEXT): {$(VPATH)}oniguruma.h
-debug.$(OBJEXT): {$(VPATH)}ractor.h
-debug.$(OBJEXT): {$(VPATH)}ractor_core.h
debug.$(OBJEXT): {$(VPATH)}ruby_assert.h
debug.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-debug.$(OBJEXT): {$(VPATH)}shape.h
debug.$(OBJEXT): {$(VPATH)}st.h
debug.$(OBJEXT): {$(VPATH)}subst.h
debug.$(OBJEXT): {$(VPATH)}symbol.h
debug.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
debug.$(OBJEXT): {$(VPATH)}thread_native.h
debug.$(OBJEXT): {$(VPATH)}util.h
-debug.$(OBJEXT): {$(VPATH)}vm_callinfo.h
debug.$(OBJEXT): {$(VPATH)}vm_core.h
debug.$(OBJEXT): {$(VPATH)}vm_debug.h
debug.$(OBJEXT): {$(VPATH)}vm_opts.h
debug_counter.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-debug_counter.$(OBJEXT): {$(VPATH)}assert.h
-debug_counter.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-debug_counter.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-debug_counter.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-debug_counter.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-debug_counter.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-debug_counter.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-debug_counter.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-debug_counter.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+debug_counter.$(OBJEXT): $(top_srcdir)/include/ruby.h
debug_counter.$(OBJEXT): {$(VPATH)}config.h
debug_counter.$(OBJEXT): {$(VPATH)}debug_counter.c
debug_counter.$(OBJEXT): {$(VPATH)}debug_counter.h
debug_counter.$(OBJEXT): {$(VPATH)}defines.h
+debug_counter.$(OBJEXT): {$(VPATH)}encoding.h
debug_counter.$(OBJEXT): {$(VPATH)}intern.h
debug_counter.$(OBJEXT): {$(VPATH)}internal.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/abi.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/assume.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/cast.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/config.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/ctype.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/dosish.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/error.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/eval.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/event.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/gc.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/glob.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/globals.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/iterator.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/memory.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/method.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/module.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/newobj.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/symbol.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/value.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/value_type.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/variable.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-debug_counter.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+debug_counter.$(OBJEXT): {$(VPATH)}io.h
debug_counter.$(OBJEXT): {$(VPATH)}missing.h
+debug_counter.$(OBJEXT): {$(VPATH)}onigmo.h
+debug_counter.$(OBJEXT): {$(VPATH)}oniguruma.h
debug_counter.$(OBJEXT): {$(VPATH)}st.h
debug_counter.$(OBJEXT): {$(VPATH)}subst.h
-debug_counter.$(OBJEXT): {$(VPATH)}thread_native.h
-dir.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-dir.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-dir.$(OBJEXT): $(CCAN_DIR)/list/list.h
-dir.$(OBJEXT): $(CCAN_DIR)/str/str.h
dir.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-dir.$(OBJEXT): $(top_srcdir)/internal/array.h
-dir.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-dir.$(OBJEXT): $(top_srcdir)/internal/class.h
-dir.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-dir.$(OBJEXT): $(top_srcdir)/internal/dir.h
-dir.$(OBJEXT): $(top_srcdir)/internal/encoding.h
-dir.$(OBJEXT): $(top_srcdir)/internal/error.h
-dir.$(OBJEXT): $(top_srcdir)/internal/file.h
-dir.$(OBJEXT): $(top_srcdir)/internal/gc.h
-dir.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-dir.$(OBJEXT): $(top_srcdir)/internal/io.h
-dir.$(OBJEXT): $(top_srcdir)/internal/object.h
-dir.$(OBJEXT): $(top_srcdir)/internal/serial.h
-dir.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-dir.$(OBJEXT): $(top_srcdir)/internal/string.h
-dir.$(OBJEXT): $(top_srcdir)/internal/variable.h
-dir.$(OBJEXT): $(top_srcdir)/internal/vm.h
-dir.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-dir.$(OBJEXT): {$(VPATH)}assert.h
-dir.$(OBJEXT): {$(VPATH)}atomic.h
-dir.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-dir.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-dir.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-dir.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-dir.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-dir.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-dir.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-dir.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-dir.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-dir.$(OBJEXT): {$(VPATH)}builtin.h
+dir.$(OBJEXT): $(top_srcdir)/include/ruby.h
dir.$(OBJEXT): {$(VPATH)}config.h
-dir.$(OBJEXT): {$(VPATH)}constant.h
dir.$(OBJEXT): {$(VPATH)}defines.h
dir.$(OBJEXT): {$(VPATH)}dir.c
-dir.$(OBJEXT): {$(VPATH)}dir.rbinc
dir.$(OBJEXT): {$(VPATH)}encindex.h
dir.$(OBJEXT): {$(VPATH)}encoding.h
-dir.$(OBJEXT): {$(VPATH)}id.h
-dir.$(OBJEXT): {$(VPATH)}id_table.h
dir.$(OBJEXT): {$(VPATH)}intern.h
dir.$(OBJEXT): {$(VPATH)}internal.h
-dir.$(OBJEXT): {$(VPATH)}internal/abi.h
-dir.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-dir.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-dir.$(OBJEXT): {$(VPATH)}internal/assume.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-dir.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-dir.$(OBJEXT): {$(VPATH)}internal/cast.h
-dir.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-dir.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-dir.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-dir.$(OBJEXT): {$(VPATH)}internal/config.h
-dir.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-dir.$(OBJEXT): {$(VPATH)}internal/core.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-dir.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-dir.$(OBJEXT): {$(VPATH)}internal/ctype.h
-dir.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-dir.$(OBJEXT): {$(VPATH)}internal/dosish.h
-dir.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-dir.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-dir.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-dir.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-dir.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-dir.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-dir.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-dir.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-dir.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-dir.$(OBJEXT): {$(VPATH)}internal/error.h
-dir.$(OBJEXT): {$(VPATH)}internal/eval.h
-dir.$(OBJEXT): {$(VPATH)}internal/event.h
-dir.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-dir.$(OBJEXT): {$(VPATH)}internal/gc.h
-dir.$(OBJEXT): {$(VPATH)}internal/glob.h
-dir.$(OBJEXT): {$(VPATH)}internal/globals.h
-dir.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-dir.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-dir.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-dir.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-dir.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-dir.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-dir.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-dir.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-dir.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-dir.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-dir.$(OBJEXT): {$(VPATH)}internal/iterator.h
-dir.$(OBJEXT): {$(VPATH)}internal/memory.h
-dir.$(OBJEXT): {$(VPATH)}internal/method.h
-dir.$(OBJEXT): {$(VPATH)}internal/module.h
-dir.$(OBJEXT): {$(VPATH)}internal/newobj.h
-dir.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-dir.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-dir.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-dir.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-dir.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-dir.$(OBJEXT): {$(VPATH)}internal/symbol.h
-dir.$(OBJEXT): {$(VPATH)}internal/value.h
-dir.$(OBJEXT): {$(VPATH)}internal/value_type.h
-dir.$(OBJEXT): {$(VPATH)}internal/variable.h
-dir.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-dir.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
dir.$(OBJEXT): {$(VPATH)}io.h
-dir.$(OBJEXT): {$(VPATH)}method.h
dir.$(OBJEXT): {$(VPATH)}missing.h
-dir.$(OBJEXT): {$(VPATH)}node.h
dir.$(OBJEXT): {$(VPATH)}onigmo.h
dir.$(OBJEXT): {$(VPATH)}oniguruma.h
-dir.$(OBJEXT): {$(VPATH)}ruby_assert.h
-dir.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-dir.$(OBJEXT): {$(VPATH)}shape.h
dir.$(OBJEXT): {$(VPATH)}st.h
dir.$(OBJEXT): {$(VPATH)}subst.h
-dir.$(OBJEXT): {$(VPATH)}thread.h
-dir.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-dir.$(OBJEXT): {$(VPATH)}thread_native.h
dir.$(OBJEXT): {$(VPATH)}util.h
-dir.$(OBJEXT): {$(VPATH)}vm_core.h
-dir.$(OBJEXT): {$(VPATH)}vm_opts.h
dln.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-dln.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-dln.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-dln.$(OBJEXT): {$(VPATH)}assert.h
-dln.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-dln.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-dln.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-dln.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-dln.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-dln.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-dln.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-dln.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-dln.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
dln.$(OBJEXT): {$(VPATH)}config.h
dln.$(OBJEXT): {$(VPATH)}defines.h
dln.$(OBJEXT): {$(VPATH)}dln.c
dln.$(OBJEXT): {$(VPATH)}dln.h
dln.$(OBJEXT): {$(VPATH)}intern.h
-dln.$(OBJEXT): {$(VPATH)}internal.h
-dln.$(OBJEXT): {$(VPATH)}internal/abi.h
-dln.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-dln.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-dln.$(OBJEXT): {$(VPATH)}internal/assume.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-dln.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-dln.$(OBJEXT): {$(VPATH)}internal/cast.h
-dln.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-dln.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-dln.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-dln.$(OBJEXT): {$(VPATH)}internal/config.h
-dln.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-dln.$(OBJEXT): {$(VPATH)}internal/core.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-dln.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-dln.$(OBJEXT): {$(VPATH)}internal/ctype.h
-dln.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-dln.$(OBJEXT): {$(VPATH)}internal/dosish.h
-dln.$(OBJEXT): {$(VPATH)}internal/error.h
-dln.$(OBJEXT): {$(VPATH)}internal/eval.h
-dln.$(OBJEXT): {$(VPATH)}internal/event.h
-dln.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-dln.$(OBJEXT): {$(VPATH)}internal/gc.h
-dln.$(OBJEXT): {$(VPATH)}internal/glob.h
-dln.$(OBJEXT): {$(VPATH)}internal/globals.h
-dln.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-dln.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-dln.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-dln.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-dln.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-dln.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-dln.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-dln.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-dln.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-dln.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-dln.$(OBJEXT): {$(VPATH)}internal/iterator.h
-dln.$(OBJEXT): {$(VPATH)}internal/memory.h
-dln.$(OBJEXT): {$(VPATH)}internal/method.h
-dln.$(OBJEXT): {$(VPATH)}internal/module.h
-dln.$(OBJEXT): {$(VPATH)}internal/newobj.h
-dln.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-dln.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-dln.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-dln.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-dln.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-dln.$(OBJEXT): {$(VPATH)}internal/symbol.h
-dln.$(OBJEXT): {$(VPATH)}internal/value.h
-dln.$(OBJEXT): {$(VPATH)}internal/value_type.h
-dln.$(OBJEXT): {$(VPATH)}internal/variable.h
-dln.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-dln.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
dln.$(OBJEXT): {$(VPATH)}missing.h
dln.$(OBJEXT): {$(VPATH)}st.h
dln.$(OBJEXT): {$(VPATH)}subst.h
dln_find.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-dln_find.$(OBJEXT): {$(VPATH)}assert.h
-dln_find.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-dln_find.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-dln_find.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-dln_find.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-dln_find.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-dln_find.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-dln_find.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-dln_find.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
dln_find.$(OBJEXT): {$(VPATH)}config.h
dln_find.$(OBJEXT): {$(VPATH)}defines.h
dln_find.$(OBJEXT): {$(VPATH)}dln.h
dln_find.$(OBJEXT): {$(VPATH)}dln_find.c
dln_find.$(OBJEXT): {$(VPATH)}intern.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/abi.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/assume.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/cast.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/config.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/ctype.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/dosish.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/error.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/eval.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/event.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/gc.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/glob.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/globals.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/iterator.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/memory.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/method.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/module.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/newobj.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/symbol.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/value.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/value_type.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/variable.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-dln_find.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
dln_find.$(OBJEXT): {$(VPATH)}missing.h
dln_find.$(OBJEXT): {$(VPATH)}st.h
dln_find.$(OBJEXT): {$(VPATH)}subst.h
dmydln.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-dmydln.$(OBJEXT): {$(VPATH)}assert.h
-dmydln.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-dmydln.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-dmydln.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-dmydln.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-dmydln.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-dmydln.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-dmydln.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-dmydln.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
dmydln.$(OBJEXT): {$(VPATH)}config.h
dmydln.$(OBJEXT): {$(VPATH)}defines.h
dmydln.$(OBJEXT): {$(VPATH)}dmydln.c
dmydln.$(OBJEXT): {$(VPATH)}intern.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/abi.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/assume.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/cast.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/config.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/ctype.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/dosish.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/error.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/eval.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/event.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/gc.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/glob.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/globals.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/iterator.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/memory.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/method.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/module.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/newobj.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/symbol.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/value.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/value_type.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/variable.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-dmydln.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
dmydln.$(OBJEXT): {$(VPATH)}missing.h
dmydln.$(OBJEXT): {$(VPATH)}st.h
dmydln.$(OBJEXT): {$(VPATH)}subst.h
dmyenc.$(OBJEXT): {$(VPATH)}dmyenc.c
dmyext.$(OBJEXT): {$(VPATH)}dmyext.c
-enc/ascii.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-enc/ascii.$(OBJEXT): {$(VPATH)}assert.h
-enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-enc/ascii.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
enc/ascii.$(OBJEXT): {$(VPATH)}config.h
enc/ascii.$(OBJEXT): {$(VPATH)}defines.h
enc/ascii.$(OBJEXT): {$(VPATH)}enc/ascii.c
enc/ascii.$(OBJEXT): {$(VPATH)}encindex.h
-enc/ascii.$(OBJEXT): {$(VPATH)}encoding.h
-enc/ascii.$(OBJEXT): {$(VPATH)}intern.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/assume.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/cast.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/config.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/ctype.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/dosish.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/error.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/eval.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/event.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/gc.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/glob.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/globals.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/iterator.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/memory.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/method.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/module.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/newobj.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/symbol.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/value.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/value_type.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/variable.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-enc/ascii.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
enc/ascii.$(OBJEXT): {$(VPATH)}missing.h
-enc/ascii.$(OBJEXT): {$(VPATH)}onigmo.h
enc/ascii.$(OBJEXT): {$(VPATH)}oniguruma.h
enc/ascii.$(OBJEXT): {$(VPATH)}regenc.h
-enc/ascii.$(OBJEXT): {$(VPATH)}st.h
-enc/ascii.$(OBJEXT): {$(VPATH)}subst.h
enc/trans/newline.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}assert.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
enc/trans/newline.$(OBJEXT): {$(VPATH)}config.h
enc/trans/newline.$(OBJEXT): {$(VPATH)}defines.h
enc/trans/newline.$(OBJEXT): {$(VPATH)}enc/trans/newline.c
enc/trans/newline.$(OBJEXT): {$(VPATH)}intern.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/assume.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/cast.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/config.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/ctype.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/dosish.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/error.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/eval.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/event.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/gc.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/glob.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/globals.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/iterator.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/memory.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/method.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/module.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/newobj.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/symbol.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/value.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/value_type.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/variable.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-enc/trans/newline.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
enc/trans/newline.$(OBJEXT): {$(VPATH)}missing.h
enc/trans/newline.$(OBJEXT): {$(VPATH)}st.h
enc/trans/newline.$(OBJEXT): {$(VPATH)}subst.h
@@ -5034,1296 +1647,92 @@ enc/trans/newline.$(OBJEXT): {$(VPATH)}transcode_data.h
enc/unicode.$(OBJEXT): $(UNICODE_HDR_DIR)/casefold.h
enc/unicode.$(OBJEXT): $(UNICODE_HDR_DIR)/name2ctype.h
enc/unicode.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-enc/unicode.$(OBJEXT): {$(VPATH)}assert.h
-enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-enc/unicode.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
enc/unicode.$(OBJEXT): {$(VPATH)}config.h
enc/unicode.$(OBJEXT): {$(VPATH)}defines.h
enc/unicode.$(OBJEXT): {$(VPATH)}enc/unicode.c
enc/unicode.$(OBJEXT): {$(VPATH)}intern.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/assume.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/cast.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/config.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/ctype.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/dosish.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/error.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/eval.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/event.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/gc.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/glob.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/globals.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/iterator.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/memory.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/method.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/module.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/newobj.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/symbol.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/value.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/value_type.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/variable.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-enc/unicode.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
enc/unicode.$(OBJEXT): {$(VPATH)}missing.h
-enc/unicode.$(OBJEXT): {$(VPATH)}onigmo.h
+enc/unicode.$(OBJEXT): {$(VPATH)}oniguruma.h
enc/unicode.$(OBJEXT): {$(VPATH)}regenc.h
enc/unicode.$(OBJEXT): {$(VPATH)}regint.h
enc/unicode.$(OBJEXT): {$(VPATH)}st.h
enc/unicode.$(OBJEXT): {$(VPATH)}subst.h
-enc/us_ascii.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}assert.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
enc/us_ascii.$(OBJEXT): {$(VPATH)}config.h
enc/us_ascii.$(OBJEXT): {$(VPATH)}defines.h
enc/us_ascii.$(OBJEXT): {$(VPATH)}enc/us_ascii.c
enc/us_ascii.$(OBJEXT): {$(VPATH)}encindex.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}encoding.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}intern.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/assume.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/cast.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/config.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/ctype.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/dosish.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/error.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/eval.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/event.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/gc.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/glob.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/globals.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/iterator.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/memory.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/method.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/module.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/newobj.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/symbol.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/value.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/value_type.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/variable.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
enc/us_ascii.$(OBJEXT): {$(VPATH)}missing.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}onigmo.h
enc/us_ascii.$(OBJEXT): {$(VPATH)}oniguruma.h
enc/us_ascii.$(OBJEXT): {$(VPATH)}regenc.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}st.h
-enc/us_ascii.$(OBJEXT): {$(VPATH)}subst.h
-enc/utf_8.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}assert.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
enc/utf_8.$(OBJEXT): {$(VPATH)}config.h
enc/utf_8.$(OBJEXT): {$(VPATH)}defines.h
enc/utf_8.$(OBJEXT): {$(VPATH)}enc/utf_8.c
enc/utf_8.$(OBJEXT): {$(VPATH)}encindex.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}encoding.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}intern.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/assume.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/cast.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/config.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/ctype.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/dosish.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/error.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/eval.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/event.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/gc.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/glob.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/globals.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/iterator.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/memory.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/method.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/module.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/newobj.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/symbol.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/value.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/value_type.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/variable.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
enc/utf_8.$(OBJEXT): {$(VPATH)}missing.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}onigmo.h
enc/utf_8.$(OBJEXT): {$(VPATH)}oniguruma.h
enc/utf_8.$(OBJEXT): {$(VPATH)}regenc.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}st.h
-enc/utf_8.$(OBJEXT): {$(VPATH)}subst.h
-encoding.$(OBJEXT): $(hdrdir)/ruby.h
encoding.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/class.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/enc.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/encoding.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/error.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/gc.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/inits.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/load.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/object.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/serial.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/string.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/variable.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/vm.h
-encoding.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-encoding.$(OBJEXT): {$(VPATH)}assert.h
-encoding.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-encoding.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-encoding.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-encoding.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-encoding.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-encoding.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-encoding.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-encoding.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-encoding.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+encoding.$(OBJEXT): $(top_srcdir)/include/ruby.h
encoding.$(OBJEXT): {$(VPATH)}config.h
-encoding.$(OBJEXT): {$(VPATH)}constant.h
-encoding.$(OBJEXT): {$(VPATH)}debug_counter.h
encoding.$(OBJEXT): {$(VPATH)}defines.h
encoding.$(OBJEXT): {$(VPATH)}encindex.h
encoding.$(OBJEXT): {$(VPATH)}encoding.c
encoding.$(OBJEXT): {$(VPATH)}encoding.h
-encoding.$(OBJEXT): {$(VPATH)}id_table.h
encoding.$(OBJEXT): {$(VPATH)}intern.h
encoding.$(OBJEXT): {$(VPATH)}internal.h
-encoding.$(OBJEXT): {$(VPATH)}internal/abi.h
-encoding.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-encoding.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-encoding.$(OBJEXT): {$(VPATH)}internal/assume.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-encoding.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-encoding.$(OBJEXT): {$(VPATH)}internal/cast.h
-encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-encoding.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-encoding.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-encoding.$(OBJEXT): {$(VPATH)}internal/config.h
-encoding.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-encoding.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-encoding.$(OBJEXT): {$(VPATH)}internal/ctype.h
-encoding.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-encoding.$(OBJEXT): {$(VPATH)}internal/dosish.h
-encoding.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-encoding.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-encoding.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-encoding.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-encoding.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-encoding.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-encoding.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-encoding.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-encoding.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-encoding.$(OBJEXT): {$(VPATH)}internal/error.h
-encoding.$(OBJEXT): {$(VPATH)}internal/eval.h
-encoding.$(OBJEXT): {$(VPATH)}internal/event.h
-encoding.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-encoding.$(OBJEXT): {$(VPATH)}internal/gc.h
-encoding.$(OBJEXT): {$(VPATH)}internal/glob.h
-encoding.$(OBJEXT): {$(VPATH)}internal/globals.h
-encoding.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-encoding.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-encoding.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-encoding.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-encoding.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-encoding.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-encoding.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-encoding.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-encoding.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-encoding.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-encoding.$(OBJEXT): {$(VPATH)}internal/iterator.h
-encoding.$(OBJEXT): {$(VPATH)}internal/memory.h
-encoding.$(OBJEXT): {$(VPATH)}internal/method.h
-encoding.$(OBJEXT): {$(VPATH)}internal/module.h
-encoding.$(OBJEXT): {$(VPATH)}internal/newobj.h
-encoding.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-encoding.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-encoding.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-encoding.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-encoding.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-encoding.$(OBJEXT): {$(VPATH)}internal/symbol.h
-encoding.$(OBJEXT): {$(VPATH)}internal/value.h
-encoding.$(OBJEXT): {$(VPATH)}internal/value_type.h
-encoding.$(OBJEXT): {$(VPATH)}internal/variable.h
-encoding.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-encoding.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+encoding.$(OBJEXT): {$(VPATH)}io.h
encoding.$(OBJEXT): {$(VPATH)}missing.h
encoding.$(OBJEXT): {$(VPATH)}onigmo.h
encoding.$(OBJEXT): {$(VPATH)}oniguruma.h
encoding.$(OBJEXT): {$(VPATH)}regenc.h
encoding.$(OBJEXT): {$(VPATH)}ruby_assert.h
-encoding.$(OBJEXT): {$(VPATH)}shape.h
encoding.$(OBJEXT): {$(VPATH)}st.h
encoding.$(OBJEXT): {$(VPATH)}subst.h
encoding.$(OBJEXT): {$(VPATH)}util.h
-encoding.$(OBJEXT): {$(VPATH)}vm_debug.h
-encoding.$(OBJEXT): {$(VPATH)}vm_sync.h
enum.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-enum.$(OBJEXT): $(top_srcdir)/internal/array.h
-enum.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-enum.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-enum.$(OBJEXT): $(top_srcdir)/internal/bits.h
-enum.$(OBJEXT): $(top_srcdir)/internal/class.h
-enum.$(OBJEXT): $(top_srcdir)/internal/compar.h
-enum.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-enum.$(OBJEXT): $(top_srcdir)/internal/enum.h
-enum.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-enum.$(OBJEXT): $(top_srcdir)/internal/gc.h
-enum.$(OBJEXT): $(top_srcdir)/internal/hash.h
-enum.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-enum.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-enum.$(OBJEXT): $(top_srcdir)/internal/object.h
-enum.$(OBJEXT): $(top_srcdir)/internal/proc.h
-enum.$(OBJEXT): $(top_srcdir)/internal/rational.h
-enum.$(OBJEXT): $(top_srcdir)/internal/re.h
-enum.$(OBJEXT): $(top_srcdir)/internal/serial.h
-enum.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-enum.$(OBJEXT): $(top_srcdir)/internal/variable.h
-enum.$(OBJEXT): $(top_srcdir)/internal/vm.h
-enum.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-enum.$(OBJEXT): {$(VPATH)}assert.h
-enum.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-enum.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-enum.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-enum.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-enum.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-enum.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-enum.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-enum.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-enum.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+enum.$(OBJEXT): $(top_srcdir)/include/ruby.h
enum.$(OBJEXT): {$(VPATH)}config.h
-enum.$(OBJEXT): {$(VPATH)}constant.h
enum.$(OBJEXT): {$(VPATH)}defines.h
enum.$(OBJEXT): {$(VPATH)}encoding.h
enum.$(OBJEXT): {$(VPATH)}enum.c
enum.$(OBJEXT): {$(VPATH)}id.h
-enum.$(OBJEXT): {$(VPATH)}id_table.h
enum.$(OBJEXT): {$(VPATH)}intern.h
enum.$(OBJEXT): {$(VPATH)}internal.h
-enum.$(OBJEXT): {$(VPATH)}internal/abi.h
-enum.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-enum.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-enum.$(OBJEXT): {$(VPATH)}internal/assume.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-enum.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-enum.$(OBJEXT): {$(VPATH)}internal/cast.h
-enum.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-enum.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-enum.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-enum.$(OBJEXT): {$(VPATH)}internal/config.h
-enum.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-enum.$(OBJEXT): {$(VPATH)}internal/core.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-enum.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-enum.$(OBJEXT): {$(VPATH)}internal/ctype.h
-enum.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-enum.$(OBJEXT): {$(VPATH)}internal/dosish.h
-enum.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-enum.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-enum.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-enum.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-enum.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-enum.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-enum.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-enum.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-enum.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-enum.$(OBJEXT): {$(VPATH)}internal/error.h
-enum.$(OBJEXT): {$(VPATH)}internal/eval.h
-enum.$(OBJEXT): {$(VPATH)}internal/event.h
-enum.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-enum.$(OBJEXT): {$(VPATH)}internal/gc.h
-enum.$(OBJEXT): {$(VPATH)}internal/glob.h
-enum.$(OBJEXT): {$(VPATH)}internal/globals.h
-enum.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-enum.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-enum.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-enum.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-enum.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-enum.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-enum.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-enum.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-enum.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-enum.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-enum.$(OBJEXT): {$(VPATH)}internal/iterator.h
-enum.$(OBJEXT): {$(VPATH)}internal/memory.h
-enum.$(OBJEXT): {$(VPATH)}internal/method.h
-enum.$(OBJEXT): {$(VPATH)}internal/module.h
-enum.$(OBJEXT): {$(VPATH)}internal/newobj.h
-enum.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-enum.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-enum.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-enum.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-enum.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-enum.$(OBJEXT): {$(VPATH)}internal/symbol.h
-enum.$(OBJEXT): {$(VPATH)}internal/value.h
-enum.$(OBJEXT): {$(VPATH)}internal/value_type.h
-enum.$(OBJEXT): {$(VPATH)}internal/variable.h
-enum.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-enum.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+enum.$(OBJEXT): {$(VPATH)}io.h
enum.$(OBJEXT): {$(VPATH)}missing.h
enum.$(OBJEXT): {$(VPATH)}onigmo.h
enum.$(OBJEXT): {$(VPATH)}oniguruma.h
-enum.$(OBJEXT): {$(VPATH)}ruby_assert.h
-enum.$(OBJEXT): {$(VPATH)}shape.h
enum.$(OBJEXT): {$(VPATH)}st.h
enum.$(OBJEXT): {$(VPATH)}subst.h
enum.$(OBJEXT): {$(VPATH)}symbol.h
enum.$(OBJEXT): {$(VPATH)}util.h
-enumerator.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-enumerator.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-enumerator.$(OBJEXT): $(CCAN_DIR)/list/list.h
-enumerator.$(OBJEXT): $(CCAN_DIR)/str/str.h
enumerator.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/array.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/bits.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/class.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/enumerator.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/error.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/gc.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/hash.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/range.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/rational.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/serial.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/string.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/struct.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/variable.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/vm.h
-enumerator.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-enumerator.$(OBJEXT): {$(VPATH)}assert.h
-enumerator.$(OBJEXT): {$(VPATH)}atomic.h
-enumerator.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-enumerator.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-enumerator.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-enumerator.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-enumerator.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-enumerator.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-enumerator.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-enumerator.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-enumerator.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+enumerator.$(OBJEXT): $(top_srcdir)/include/ruby.h
enumerator.$(OBJEXT): {$(VPATH)}config.h
-enumerator.$(OBJEXT): {$(VPATH)}constant.h
enumerator.$(OBJEXT): {$(VPATH)}defines.h
enumerator.$(OBJEXT): {$(VPATH)}encoding.h
enumerator.$(OBJEXT): {$(VPATH)}enumerator.c
-enumerator.$(OBJEXT): {$(VPATH)}id.h
-enumerator.$(OBJEXT): {$(VPATH)}id_table.h
enumerator.$(OBJEXT): {$(VPATH)}intern.h
enumerator.$(OBJEXT): {$(VPATH)}internal.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/abi.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/assume.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/cast.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/config.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/ctype.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/dosish.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/error.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/eval.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/event.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/gc.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/glob.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/globals.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/iterator.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/memory.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/method.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/module.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/newobj.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/symbol.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/value.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/value_type.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/variable.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-enumerator.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-enumerator.$(OBJEXT): {$(VPATH)}method.h
+enumerator.$(OBJEXT): {$(VPATH)}io.h
enumerator.$(OBJEXT): {$(VPATH)}missing.h
-enumerator.$(OBJEXT): {$(VPATH)}node.h
enumerator.$(OBJEXT): {$(VPATH)}onigmo.h
enumerator.$(OBJEXT): {$(VPATH)}oniguruma.h
-enumerator.$(OBJEXT): {$(VPATH)}ruby_assert.h
-enumerator.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-enumerator.$(OBJEXT): {$(VPATH)}shape.h
enumerator.$(OBJEXT): {$(VPATH)}st.h
enumerator.$(OBJEXT): {$(VPATH)}subst.h
-enumerator.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-enumerator.$(OBJEXT): {$(VPATH)}thread_native.h
-enumerator.$(OBJEXT): {$(VPATH)}vm_core.h
-enumerator.$(OBJEXT): {$(VPATH)}vm_opts.h
error.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
error.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
error.$(OBJEXT): $(CCAN_DIR)/list/list.h
error.$(OBJEXT): $(CCAN_DIR)/str/str.h
error.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-error.$(OBJEXT): $(top_srcdir)/internal/array.h
-error.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-error.$(OBJEXT): $(top_srcdir)/internal/class.h
-error.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-error.$(OBJEXT): $(top_srcdir)/internal/error.h
-error.$(OBJEXT): $(top_srcdir)/internal/eval.h
-error.$(OBJEXT): $(top_srcdir)/internal/gc.h
-error.$(OBJEXT): $(top_srcdir)/internal/hash.h
-error.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-error.$(OBJEXT): $(top_srcdir)/internal/io.h
-error.$(OBJEXT): $(top_srcdir)/internal/load.h
-error.$(OBJEXT): $(top_srcdir)/internal/object.h
-error.$(OBJEXT): $(top_srcdir)/internal/serial.h
-error.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-error.$(OBJEXT): $(top_srcdir)/internal/string.h
-error.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-error.$(OBJEXT): $(top_srcdir)/internal/thread.h
-error.$(OBJEXT): $(top_srcdir)/internal/variable.h
-error.$(OBJEXT): $(top_srcdir)/internal/vm.h
-error.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-error.$(OBJEXT): {$(VPATH)}assert.h
-error.$(OBJEXT): {$(VPATH)}atomic.h
-error.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-error.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-error.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-error.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-error.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-error.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-error.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-error.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-error.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-error.$(OBJEXT): {$(VPATH)}builtin.h
+error.$(OBJEXT): $(top_srcdir)/include/ruby.h
error.$(OBJEXT): {$(VPATH)}config.h
-error.$(OBJEXT): {$(VPATH)}constant.h
error.$(OBJEXT): {$(VPATH)}defines.h
error.$(OBJEXT): {$(VPATH)}encoding.h
error.$(OBJEXT): {$(VPATH)}error.c
error.$(OBJEXT): {$(VPATH)}id.h
-error.$(OBJEXT): {$(VPATH)}id_table.h
error.$(OBJEXT): {$(VPATH)}intern.h
error.$(OBJEXT): {$(VPATH)}internal.h
-error.$(OBJEXT): {$(VPATH)}internal/abi.h
-error.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-error.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-error.$(OBJEXT): {$(VPATH)}internal/assume.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-error.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-error.$(OBJEXT): {$(VPATH)}internal/cast.h
-error.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-error.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-error.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-error.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-error.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-error.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-error.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-error.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-error.$(OBJEXT): {$(VPATH)}internal/config.h
-error.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-error.$(OBJEXT): {$(VPATH)}internal/core.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-error.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-error.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-error.$(OBJEXT): {$(VPATH)}internal/ctype.h
-error.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-error.$(OBJEXT): {$(VPATH)}internal/dosish.h
-error.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-error.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-error.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-error.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-error.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-error.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-error.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-error.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-error.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-error.$(OBJEXT): {$(VPATH)}internal/error.h
-error.$(OBJEXT): {$(VPATH)}internal/eval.h
-error.$(OBJEXT): {$(VPATH)}internal/event.h
-error.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-error.$(OBJEXT): {$(VPATH)}internal/gc.h
-error.$(OBJEXT): {$(VPATH)}internal/glob.h
-error.$(OBJEXT): {$(VPATH)}internal/globals.h
-error.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-error.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-error.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-error.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-error.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-error.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-error.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-error.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-error.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-error.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-error.$(OBJEXT): {$(VPATH)}internal/iterator.h
-error.$(OBJEXT): {$(VPATH)}internal/memory.h
-error.$(OBJEXT): {$(VPATH)}internal/method.h
-error.$(OBJEXT): {$(VPATH)}internal/module.h
-error.$(OBJEXT): {$(VPATH)}internal/newobj.h
-error.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-error.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-error.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-error.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-error.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-error.$(OBJEXT): {$(VPATH)}internal/symbol.h
-error.$(OBJEXT): {$(VPATH)}internal/value.h
-error.$(OBJEXT): {$(VPATH)}internal/value_type.h
-error.$(OBJEXT): {$(VPATH)}internal/variable.h
-error.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-error.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
error.$(OBJEXT): {$(VPATH)}io.h
error.$(OBJEXT): {$(VPATH)}known_errors.inc
error.$(OBJEXT): {$(VPATH)}method.h
@@ -6333,213 +1742,31 @@ error.$(OBJEXT): {$(VPATH)}onigmo.h
error.$(OBJEXT): {$(VPATH)}oniguruma.h
error.$(OBJEXT): {$(VPATH)}ruby_assert.h
error.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-error.$(OBJEXT): {$(VPATH)}shape.h
error.$(OBJEXT): {$(VPATH)}st.h
error.$(OBJEXT): {$(VPATH)}subst.h
error.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
error.$(OBJEXT): {$(VPATH)}thread_native.h
error.$(OBJEXT): {$(VPATH)}vm_core.h
+error.$(OBJEXT): {$(VPATH)}vm_debug.h
error.$(OBJEXT): {$(VPATH)}vm_opts.h
-error.$(OBJEXT): {$(VPATH)}warning.rbinc
eval.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
eval.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
eval.$(OBJEXT): $(CCAN_DIR)/list/list.h
eval.$(OBJEXT): $(CCAN_DIR)/str/str.h
-eval.$(OBJEXT): $(hdrdir)/ruby.h
eval.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-eval.$(OBJEXT): $(top_srcdir)/internal/array.h
-eval.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-eval.$(OBJEXT): $(top_srcdir)/internal/class.h
-eval.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-eval.$(OBJEXT): $(top_srcdir)/internal/cont.h
-eval.$(OBJEXT): $(top_srcdir)/internal/error.h
-eval.$(OBJEXT): $(top_srcdir)/internal/eval.h
-eval.$(OBJEXT): $(top_srcdir)/internal/gc.h
-eval.$(OBJEXT): $(top_srcdir)/internal/hash.h
-eval.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-eval.$(OBJEXT): $(top_srcdir)/internal/inits.h
-eval.$(OBJEXT): $(top_srcdir)/internal/io.h
-eval.$(OBJEXT): $(top_srcdir)/internal/object.h
-eval.$(OBJEXT): $(top_srcdir)/internal/serial.h
-eval.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-eval.$(OBJEXT): $(top_srcdir)/internal/string.h
-eval.$(OBJEXT): $(top_srcdir)/internal/thread.h
-eval.$(OBJEXT): $(top_srcdir)/internal/variable.h
-eval.$(OBJEXT): $(top_srcdir)/internal/vm.h
-eval.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-eval.$(OBJEXT): {$(VPATH)}assert.h
-eval.$(OBJEXT): {$(VPATH)}atomic.h
-eval.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-eval.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-eval.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-eval.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-eval.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-eval.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-eval.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-eval.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-eval.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+eval.$(OBJEXT): $(hdrdir)/ruby/version.h
+eval.$(OBJEXT): $(top_srcdir)/include/ruby.h
eval.$(OBJEXT): {$(VPATH)}config.h
-eval.$(OBJEXT): {$(VPATH)}constant.h
-eval.$(OBJEXT): {$(VPATH)}debug_counter.h
eval.$(OBJEXT): {$(VPATH)}defines.h
eval.$(OBJEXT): {$(VPATH)}encoding.h
eval.$(OBJEXT): {$(VPATH)}eval.c
eval.$(OBJEXT): {$(VPATH)}eval_error.c
eval.$(OBJEXT): {$(VPATH)}eval_intern.h
eval.$(OBJEXT): {$(VPATH)}eval_jump.c
-eval.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
+eval.$(OBJEXT): {$(VPATH)}gc.h
eval.$(OBJEXT): {$(VPATH)}id.h
-eval.$(OBJEXT): {$(VPATH)}id_table.h
eval.$(OBJEXT): {$(VPATH)}intern.h
eval.$(OBJEXT): {$(VPATH)}internal.h
-eval.$(OBJEXT): {$(VPATH)}internal/abi.h
-eval.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-eval.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-eval.$(OBJEXT): {$(VPATH)}internal/assume.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-eval.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-eval.$(OBJEXT): {$(VPATH)}internal/cast.h
-eval.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-eval.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-eval.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-eval.$(OBJEXT): {$(VPATH)}internal/config.h
-eval.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-eval.$(OBJEXT): {$(VPATH)}internal/core.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-eval.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-eval.$(OBJEXT): {$(VPATH)}internal/ctype.h
-eval.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-eval.$(OBJEXT): {$(VPATH)}internal/dosish.h
-eval.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-eval.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-eval.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-eval.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-eval.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-eval.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-eval.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-eval.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-eval.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-eval.$(OBJEXT): {$(VPATH)}internal/error.h
-eval.$(OBJEXT): {$(VPATH)}internal/eval.h
-eval.$(OBJEXT): {$(VPATH)}internal/event.h
-eval.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-eval.$(OBJEXT): {$(VPATH)}internal/gc.h
-eval.$(OBJEXT): {$(VPATH)}internal/glob.h
-eval.$(OBJEXT): {$(VPATH)}internal/globals.h
-eval.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-eval.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-eval.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-eval.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-eval.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-eval.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-eval.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-eval.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-eval.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-eval.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-eval.$(OBJEXT): {$(VPATH)}internal/iterator.h
-eval.$(OBJEXT): {$(VPATH)}internal/memory.h
-eval.$(OBJEXT): {$(VPATH)}internal/method.h
-eval.$(OBJEXT): {$(VPATH)}internal/module.h
-eval.$(OBJEXT): {$(VPATH)}internal/newobj.h
-eval.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-eval.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-eval.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-eval.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-eval.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-eval.$(OBJEXT): {$(VPATH)}internal/symbol.h
-eval.$(OBJEXT): {$(VPATH)}internal/value.h
-eval.$(OBJEXT): {$(VPATH)}internal/value_type.h
-eval.$(OBJEXT): {$(VPATH)}internal/variable.h
-eval.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-eval.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
eval.$(OBJEXT): {$(VPATH)}io.h
eval.$(OBJEXT): {$(VPATH)}iseq.h
eval.$(OBJEXT): {$(VPATH)}method.h
@@ -6550,12 +1777,8 @@ eval.$(OBJEXT): {$(VPATH)}oniguruma.h
eval.$(OBJEXT): {$(VPATH)}probes.dmyh
eval.$(OBJEXT): {$(VPATH)}probes.h
eval.$(OBJEXT): {$(VPATH)}probes_helper.h
-eval.$(OBJEXT): {$(VPATH)}ractor.h
-eval.$(OBJEXT): {$(VPATH)}ractor_core.h
-eval.$(OBJEXT): {$(VPATH)}rjit.h
eval.$(OBJEXT): {$(VPATH)}ruby_assert.h
eval.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-eval.$(OBJEXT): {$(VPATH)}shape.h
eval.$(OBJEXT): {$(VPATH)}st.h
eval.$(OBJEXT): {$(VPATH)}subst.h
eval.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
@@ -6566,213 +1789,22 @@ eval.$(OBJEXT): {$(VPATH)}vm_debug.h
eval.$(OBJEXT): {$(VPATH)}vm_opts.h
explicit_bzero.$(OBJEXT): {$(VPATH)}config.h
explicit_bzero.$(OBJEXT): {$(VPATH)}explicit_bzero.c
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/config.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-explicit_bzero.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
explicit_bzero.$(OBJEXT): {$(VPATH)}missing.h
file.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-file.$(OBJEXT): $(top_srcdir)/internal/array.h
-file.$(OBJEXT): $(top_srcdir)/internal/class.h
-file.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-file.$(OBJEXT): $(top_srcdir)/internal/dir.h
-file.$(OBJEXT): $(top_srcdir)/internal/error.h
-file.$(OBJEXT): $(top_srcdir)/internal/file.h
-file.$(OBJEXT): $(top_srcdir)/internal/gc.h
-file.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-file.$(OBJEXT): $(top_srcdir)/internal/io.h
-file.$(OBJEXT): $(top_srcdir)/internal/load.h
-file.$(OBJEXT): $(top_srcdir)/internal/object.h
-file.$(OBJEXT): $(top_srcdir)/internal/process.h
-file.$(OBJEXT): $(top_srcdir)/internal/serial.h
-file.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-file.$(OBJEXT): $(top_srcdir)/internal/string.h
-file.$(OBJEXT): $(top_srcdir)/internal/thread.h
-file.$(OBJEXT): $(top_srcdir)/internal/variable.h
-file.$(OBJEXT): $(top_srcdir)/internal/vm.h
-file.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-file.$(OBJEXT): {$(VPATH)}assert.h
-file.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-file.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-file.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-file.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-file.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-file.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-file.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-file.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-file.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+file.$(OBJEXT): $(top_srcdir)/include/ruby.h
file.$(OBJEXT): {$(VPATH)}config.h
-file.$(OBJEXT): {$(VPATH)}constant.h
file.$(OBJEXT): {$(VPATH)}defines.h
file.$(OBJEXT): {$(VPATH)}dln.h
file.$(OBJEXT): {$(VPATH)}encindex.h
file.$(OBJEXT): {$(VPATH)}encoding.h
file.$(OBJEXT): {$(VPATH)}file.c
file.$(OBJEXT): {$(VPATH)}id.h
-file.$(OBJEXT): {$(VPATH)}id_table.h
file.$(OBJEXT): {$(VPATH)}intern.h
file.$(OBJEXT): {$(VPATH)}internal.h
-file.$(OBJEXT): {$(VPATH)}internal/abi.h
-file.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-file.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-file.$(OBJEXT): {$(VPATH)}internal/assume.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-file.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-file.$(OBJEXT): {$(VPATH)}internal/cast.h
-file.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-file.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-file.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-file.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-file.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-file.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-file.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-file.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-file.$(OBJEXT): {$(VPATH)}internal/config.h
-file.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-file.$(OBJEXT): {$(VPATH)}internal/core.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-file.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-file.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-file.$(OBJEXT): {$(VPATH)}internal/ctype.h
-file.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-file.$(OBJEXT): {$(VPATH)}internal/dosish.h
-file.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-file.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-file.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-file.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-file.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-file.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-file.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-file.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-file.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-file.$(OBJEXT): {$(VPATH)}internal/error.h
-file.$(OBJEXT): {$(VPATH)}internal/eval.h
-file.$(OBJEXT): {$(VPATH)}internal/event.h
-file.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-file.$(OBJEXT): {$(VPATH)}internal/gc.h
-file.$(OBJEXT): {$(VPATH)}internal/glob.h
-file.$(OBJEXT): {$(VPATH)}internal/globals.h
-file.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-file.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-file.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-file.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-file.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-file.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-file.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-file.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-file.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-file.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-file.$(OBJEXT): {$(VPATH)}internal/iterator.h
-file.$(OBJEXT): {$(VPATH)}internal/memory.h
-file.$(OBJEXT): {$(VPATH)}internal/method.h
-file.$(OBJEXT): {$(VPATH)}internal/module.h
-file.$(OBJEXT): {$(VPATH)}internal/newobj.h
-file.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-file.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-file.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-file.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-file.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-file.$(OBJEXT): {$(VPATH)}internal/symbol.h
-file.$(OBJEXT): {$(VPATH)}internal/value.h
-file.$(OBJEXT): {$(VPATH)}internal/value_type.h
-file.$(OBJEXT): {$(VPATH)}internal/variable.h
-file.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-file.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
file.$(OBJEXT): {$(VPATH)}io.h
file.$(OBJEXT): {$(VPATH)}missing.h
file.$(OBJEXT): {$(VPATH)}onigmo.h
file.$(OBJEXT): {$(VPATH)}oniguruma.h
-file.$(OBJEXT): {$(VPATH)}shape.h
file.$(OBJEXT): {$(VPATH)}st.h
file.$(OBJEXT): {$(VPATH)}subst.h
file.$(OBJEXT): {$(VPATH)}thread.h
@@ -6781,50 +1813,8 @@ gc.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
gc.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
gc.$(OBJEXT): $(CCAN_DIR)/list/list.h
gc.$(OBJEXT): $(CCAN_DIR)/str/str.h
-gc.$(OBJEXT): $(hdrdir)/ruby.h
gc.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-gc.$(OBJEXT): $(top_srcdir)/internal/array.h
-gc.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-gc.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-gc.$(OBJEXT): $(top_srcdir)/internal/bits.h
-gc.$(OBJEXT): $(top_srcdir)/internal/class.h
-gc.$(OBJEXT): $(top_srcdir)/internal/compile.h
-gc.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-gc.$(OBJEXT): $(top_srcdir)/internal/complex.h
-gc.$(OBJEXT): $(top_srcdir)/internal/cont.h
-gc.$(OBJEXT): $(top_srcdir)/internal/error.h
-gc.$(OBJEXT): $(top_srcdir)/internal/eval.h
-gc.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-gc.$(OBJEXT): $(top_srcdir)/internal/gc.h
-gc.$(OBJEXT): $(top_srcdir)/internal/hash.h
-gc.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-gc.$(OBJEXT): $(top_srcdir)/internal/io.h
-gc.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-gc.$(OBJEXT): $(top_srcdir)/internal/object.h
-gc.$(OBJEXT): $(top_srcdir)/internal/proc.h
-gc.$(OBJEXT): $(top_srcdir)/internal/rational.h
-gc.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-gc.$(OBJEXT): $(top_srcdir)/internal/serial.h
-gc.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-gc.$(OBJEXT): $(top_srcdir)/internal/string.h
-gc.$(OBJEXT): $(top_srcdir)/internal/struct.h
-gc.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-gc.$(OBJEXT): $(top_srcdir)/internal/thread.h
-gc.$(OBJEXT): $(top_srcdir)/internal/variable.h
-gc.$(OBJEXT): $(top_srcdir)/internal/vm.h
-gc.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-gc.$(OBJEXT): {$(VPATH)}assert.h
-gc.$(OBJEXT): {$(VPATH)}atomic.h
-gc.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-gc.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-gc.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-gc.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-gc.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-gc.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-gc.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-gc.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-gc.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-gc.$(OBJEXT): {$(VPATH)}builtin.h
+gc.$(OBJEXT): $(top_srcdir)/include/ruby.h
gc.$(OBJEXT): {$(VPATH)}config.h
gc.$(OBJEXT): {$(VPATH)}constant.h
gc.$(OBJEXT): {$(VPATH)}debug.h
@@ -6833,162 +1823,12 @@ gc.$(OBJEXT): {$(VPATH)}defines.h
gc.$(OBJEXT): {$(VPATH)}encoding.h
gc.$(OBJEXT): {$(VPATH)}eval_intern.h
gc.$(OBJEXT): {$(VPATH)}gc.c
-gc.$(OBJEXT): {$(VPATH)}gc.rbinc
+gc.$(OBJEXT): {$(VPATH)}gc.h
gc.$(OBJEXT): {$(VPATH)}id.h
gc.$(OBJEXT): {$(VPATH)}id_table.h
gc.$(OBJEXT): {$(VPATH)}intern.h
gc.$(OBJEXT): {$(VPATH)}internal.h
-gc.$(OBJEXT): {$(VPATH)}internal/abi.h
-gc.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-gc.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-gc.$(OBJEXT): {$(VPATH)}internal/assume.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-gc.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-gc.$(OBJEXT): {$(VPATH)}internal/cast.h
-gc.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-gc.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-gc.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-gc.$(OBJEXT): {$(VPATH)}internal/config.h
-gc.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-gc.$(OBJEXT): {$(VPATH)}internal/core.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-gc.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-gc.$(OBJEXT): {$(VPATH)}internal/ctype.h
-gc.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-gc.$(OBJEXT): {$(VPATH)}internal/dosish.h
-gc.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-gc.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-gc.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-gc.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-gc.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-gc.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-gc.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-gc.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-gc.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-gc.$(OBJEXT): {$(VPATH)}internal/error.h
-gc.$(OBJEXT): {$(VPATH)}internal/eval.h
-gc.$(OBJEXT): {$(VPATH)}internal/event.h
-gc.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-gc.$(OBJEXT): {$(VPATH)}internal/gc.h
-gc.$(OBJEXT): {$(VPATH)}internal/glob.h
-gc.$(OBJEXT): {$(VPATH)}internal/globals.h
-gc.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-gc.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-gc.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-gc.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-gc.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-gc.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-gc.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-gc.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-gc.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-gc.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-gc.$(OBJEXT): {$(VPATH)}internal/iterator.h
-gc.$(OBJEXT): {$(VPATH)}internal/memory.h
-gc.$(OBJEXT): {$(VPATH)}internal/method.h
-gc.$(OBJEXT): {$(VPATH)}internal/module.h
-gc.$(OBJEXT): {$(VPATH)}internal/newobj.h
-gc.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-gc.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-gc.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-gc.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-gc.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-gc.$(OBJEXT): {$(VPATH)}internal/symbol.h
-gc.$(OBJEXT): {$(VPATH)}internal/value.h
-gc.$(OBJEXT): {$(VPATH)}internal/value_type.h
-gc.$(OBJEXT): {$(VPATH)}internal/variable.h
-gc.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-gc.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
gc.$(OBJEXT): {$(VPATH)}io.h
-gc.$(OBJEXT): {$(VPATH)}iseq.h
gc.$(OBJEXT): {$(VPATH)}method.h
gc.$(OBJEXT): {$(VPATH)}missing.h
gc.$(OBJEXT): {$(VPATH)}node.h
@@ -6996,1208 +1836,136 @@ gc.$(OBJEXT): {$(VPATH)}onigmo.h
gc.$(OBJEXT): {$(VPATH)}oniguruma.h
gc.$(OBJEXT): {$(VPATH)}probes.dmyh
gc.$(OBJEXT): {$(VPATH)}probes.h
-gc.$(OBJEXT): {$(VPATH)}ractor.h
-gc.$(OBJEXT): {$(VPATH)}ractor_core.h
gc.$(OBJEXT): {$(VPATH)}re.h
gc.$(OBJEXT): {$(VPATH)}regenc.h
gc.$(OBJEXT): {$(VPATH)}regex.h
gc.$(OBJEXT): {$(VPATH)}regint.h
-gc.$(OBJEXT): {$(VPATH)}rjit.h
gc.$(OBJEXT): {$(VPATH)}ruby_assert.h
gc.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-gc.$(OBJEXT): {$(VPATH)}shape.h
gc.$(OBJEXT): {$(VPATH)}st.h
gc.$(OBJEXT): {$(VPATH)}subst.h
-gc.$(OBJEXT): {$(VPATH)}symbol.h
gc.$(OBJEXT): {$(VPATH)}thread.h
gc.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
gc.$(OBJEXT): {$(VPATH)}thread_native.h
-gc.$(OBJEXT): {$(VPATH)}transient_heap.h
gc.$(OBJEXT): {$(VPATH)}util.h
-gc.$(OBJEXT): {$(VPATH)}vm_callinfo.h
gc.$(OBJEXT): {$(VPATH)}vm_core.h
gc.$(OBJEXT): {$(VPATH)}vm_debug.h
gc.$(OBJEXT): {$(VPATH)}vm_opts.h
-gc.$(OBJEXT): {$(VPATH)}vm_sync.h
-goruby.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-goruby.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-goruby.$(OBJEXT): $(CCAN_DIR)/list/list.h
-goruby.$(OBJEXT): $(CCAN_DIR)/str/str.h
-goruby.$(OBJEXT): $(hdrdir)/ruby.h
+golf_prelude.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+golf_prelude.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+golf_prelude.$(OBJEXT): $(CCAN_DIR)/list/list.h
+golf_prelude.$(OBJEXT): $(CCAN_DIR)/str/str.h
+golf_prelude.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+golf_prelude.$(OBJEXT): $(hdrdir)/ruby/version.h
+golf_prelude.$(OBJEXT): $(top_srcdir)/include/ruby.h
+golf_prelude.$(OBJEXT): {$(VPATH)}config.h
+golf_prelude.$(OBJEXT): {$(VPATH)}defines.h
+golf_prelude.$(OBJEXT): {$(VPATH)}encoding.h
+golf_prelude.$(OBJEXT): {$(VPATH)}golf_prelude.c
+golf_prelude.$(OBJEXT): {$(VPATH)}id.h
+golf_prelude.$(OBJEXT): {$(VPATH)}intern.h
+golf_prelude.$(OBJEXT): {$(VPATH)}internal.h
+golf_prelude.$(OBJEXT): {$(VPATH)}io.h
+golf_prelude.$(OBJEXT): {$(VPATH)}iseq.h
+golf_prelude.$(OBJEXT): {$(VPATH)}method.h
+golf_prelude.$(OBJEXT): {$(VPATH)}missing.h
+golf_prelude.$(OBJEXT): {$(VPATH)}node.h
+golf_prelude.$(OBJEXT): {$(VPATH)}onigmo.h
+golf_prelude.$(OBJEXT): {$(VPATH)}oniguruma.h
+golf_prelude.$(OBJEXT): {$(VPATH)}ruby_assert.h
+golf_prelude.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+golf_prelude.$(OBJEXT): {$(VPATH)}st.h
+golf_prelude.$(OBJEXT): {$(VPATH)}subst.h
+golf_prelude.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+golf_prelude.$(OBJEXT): {$(VPATH)}thread_native.h
+golf_prelude.$(OBJEXT): {$(VPATH)}vm_core.h
+golf_prelude.$(OBJEXT): {$(VPATH)}vm_debug.h
+golf_prelude.$(OBJEXT): {$(VPATH)}vm_opts.h
goruby.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-goruby.$(OBJEXT): $(top_srcdir)/internal/array.h
-goruby.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-goruby.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-goruby.$(OBJEXT): $(top_srcdir)/internal/gc.h
-goruby.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-goruby.$(OBJEXT): $(top_srcdir)/internal/serial.h
-goruby.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-goruby.$(OBJEXT): $(top_srcdir)/internal/variable.h
-goruby.$(OBJEXT): $(top_srcdir)/internal/vm.h
-goruby.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-goruby.$(OBJEXT): {$(VPATH)}assert.h
-goruby.$(OBJEXT): {$(VPATH)}atomic.h
+goruby.$(OBJEXT): $(top_srcdir)/include/ruby.h
goruby.$(OBJEXT): {$(VPATH)}backward.h
-goruby.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-goruby.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-goruby.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-goruby.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-goruby.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-goruby.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-goruby.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-goruby.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-goruby.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
goruby.$(OBJEXT): {$(VPATH)}config.h
-goruby.$(OBJEXT): {$(VPATH)}constant.h
goruby.$(OBJEXT): {$(VPATH)}defines.h
-goruby.$(OBJEXT): {$(VPATH)}golf_prelude.c
goruby.$(OBJEXT): {$(VPATH)}goruby.c
-goruby.$(OBJEXT): {$(VPATH)}id.h
-goruby.$(OBJEXT): {$(VPATH)}id_table.h
goruby.$(OBJEXT): {$(VPATH)}intern.h
-goruby.$(OBJEXT): {$(VPATH)}internal.h
-goruby.$(OBJEXT): {$(VPATH)}internal/abi.h
-goruby.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-goruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-goruby.$(OBJEXT): {$(VPATH)}internal/assume.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-goruby.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-goruby.$(OBJEXT): {$(VPATH)}internal/cast.h
-goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-goruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-goruby.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-goruby.$(OBJEXT): {$(VPATH)}internal/config.h
-goruby.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-goruby.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-goruby.$(OBJEXT): {$(VPATH)}internal/ctype.h
-goruby.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-goruby.$(OBJEXT): {$(VPATH)}internal/dosish.h
-goruby.$(OBJEXT): {$(VPATH)}internal/error.h
-goruby.$(OBJEXT): {$(VPATH)}internal/eval.h
-goruby.$(OBJEXT): {$(VPATH)}internal/event.h
-goruby.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-goruby.$(OBJEXT): {$(VPATH)}internal/gc.h
-goruby.$(OBJEXT): {$(VPATH)}internal/glob.h
-goruby.$(OBJEXT): {$(VPATH)}internal/globals.h
-goruby.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-goruby.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-goruby.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-goruby.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-goruby.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-goruby.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-goruby.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-goruby.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-goruby.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-goruby.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-goruby.$(OBJEXT): {$(VPATH)}internal/iterator.h
-goruby.$(OBJEXT): {$(VPATH)}internal/memory.h
-goruby.$(OBJEXT): {$(VPATH)}internal/method.h
-goruby.$(OBJEXT): {$(VPATH)}internal/module.h
-goruby.$(OBJEXT): {$(VPATH)}internal/newobj.h
-goruby.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-goruby.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-goruby.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-goruby.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-goruby.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-goruby.$(OBJEXT): {$(VPATH)}internal/symbol.h
-goruby.$(OBJEXT): {$(VPATH)}internal/value.h
-goruby.$(OBJEXT): {$(VPATH)}internal/value_type.h
-goruby.$(OBJEXT): {$(VPATH)}internal/variable.h
-goruby.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-goruby.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-goruby.$(OBJEXT): {$(VPATH)}iseq.h
goruby.$(OBJEXT): {$(VPATH)}main.c
-goruby.$(OBJEXT): {$(VPATH)}method.h
goruby.$(OBJEXT): {$(VPATH)}missing.h
goruby.$(OBJEXT): {$(VPATH)}node.h
-goruby.$(OBJEXT): {$(VPATH)}ruby_assert.h
-goruby.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-goruby.$(OBJEXT): {$(VPATH)}shape.h
goruby.$(OBJEXT): {$(VPATH)}st.h
goruby.$(OBJEXT): {$(VPATH)}subst.h
-goruby.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-goruby.$(OBJEXT): {$(VPATH)}thread_native.h
-goruby.$(OBJEXT): {$(VPATH)}vm_core.h
goruby.$(OBJEXT): {$(VPATH)}vm_debug.h
-goruby.$(OBJEXT): {$(VPATH)}vm_opts.h
-hash.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-hash.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-hash.$(OBJEXT): $(CCAN_DIR)/list/list.h
-hash.$(OBJEXT): $(CCAN_DIR)/str/str.h
hash.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-hash.$(OBJEXT): $(top_srcdir)/internal/array.h
-hash.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-hash.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-hash.$(OBJEXT): $(top_srcdir)/internal/bits.h
-hash.$(OBJEXT): $(top_srcdir)/internal/class.h
-hash.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-hash.$(OBJEXT): $(top_srcdir)/internal/cont.h
-hash.$(OBJEXT): $(top_srcdir)/internal/error.h
-hash.$(OBJEXT): $(top_srcdir)/internal/gc.h
-hash.$(OBJEXT): $(top_srcdir)/internal/hash.h
-hash.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-hash.$(OBJEXT): $(top_srcdir)/internal/object.h
-hash.$(OBJEXT): $(top_srcdir)/internal/proc.h
-hash.$(OBJEXT): $(top_srcdir)/internal/serial.h
-hash.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-hash.$(OBJEXT): $(top_srcdir)/internal/string.h
-hash.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-hash.$(OBJEXT): $(top_srcdir)/internal/thread.h
-hash.$(OBJEXT): $(top_srcdir)/internal/time.h
-hash.$(OBJEXT): $(top_srcdir)/internal/variable.h
-hash.$(OBJEXT): $(top_srcdir)/internal/vm.h
-hash.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-hash.$(OBJEXT): {$(VPATH)}assert.h
-hash.$(OBJEXT): {$(VPATH)}atomic.h
-hash.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-hash.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-hash.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-hash.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-hash.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-hash.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-hash.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-hash.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-hash.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+hash.$(OBJEXT): $(top_srcdir)/include/ruby.h
hash.$(OBJEXT): {$(VPATH)}config.h
-hash.$(OBJEXT): {$(VPATH)}constant.h
-hash.$(OBJEXT): {$(VPATH)}debug_counter.h
hash.$(OBJEXT): {$(VPATH)}defines.h
hash.$(OBJEXT): {$(VPATH)}encoding.h
hash.$(OBJEXT): {$(VPATH)}hash.c
hash.$(OBJEXT): {$(VPATH)}id.h
-hash.$(OBJEXT): {$(VPATH)}id_table.h
hash.$(OBJEXT): {$(VPATH)}intern.h
hash.$(OBJEXT): {$(VPATH)}internal.h
-hash.$(OBJEXT): {$(VPATH)}internal/abi.h
-hash.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-hash.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-hash.$(OBJEXT): {$(VPATH)}internal/assume.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-hash.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-hash.$(OBJEXT): {$(VPATH)}internal/cast.h
-hash.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-hash.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-hash.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-hash.$(OBJEXT): {$(VPATH)}internal/config.h
-hash.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-hash.$(OBJEXT): {$(VPATH)}internal/core.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-hash.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-hash.$(OBJEXT): {$(VPATH)}internal/ctype.h
-hash.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-hash.$(OBJEXT): {$(VPATH)}internal/dosish.h
-hash.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-hash.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-hash.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-hash.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-hash.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-hash.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-hash.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-hash.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-hash.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-hash.$(OBJEXT): {$(VPATH)}internal/error.h
-hash.$(OBJEXT): {$(VPATH)}internal/eval.h
-hash.$(OBJEXT): {$(VPATH)}internal/event.h
-hash.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-hash.$(OBJEXT): {$(VPATH)}internal/gc.h
-hash.$(OBJEXT): {$(VPATH)}internal/glob.h
-hash.$(OBJEXT): {$(VPATH)}internal/globals.h
-hash.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-hash.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-hash.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-hash.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-hash.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-hash.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-hash.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-hash.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-hash.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-hash.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-hash.$(OBJEXT): {$(VPATH)}internal/iterator.h
-hash.$(OBJEXT): {$(VPATH)}internal/memory.h
-hash.$(OBJEXT): {$(VPATH)}internal/method.h
-hash.$(OBJEXT): {$(VPATH)}internal/module.h
-hash.$(OBJEXT): {$(VPATH)}internal/newobj.h
-hash.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-hash.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-hash.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-hash.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-hash.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-hash.$(OBJEXT): {$(VPATH)}internal/symbol.h
-hash.$(OBJEXT): {$(VPATH)}internal/value.h
-hash.$(OBJEXT): {$(VPATH)}internal/value_type.h
-hash.$(OBJEXT): {$(VPATH)}internal/variable.h
-hash.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-hash.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-hash.$(OBJEXT): {$(VPATH)}iseq.h
-hash.$(OBJEXT): {$(VPATH)}method.h
+hash.$(OBJEXT): {$(VPATH)}io.h
hash.$(OBJEXT): {$(VPATH)}missing.h
-hash.$(OBJEXT): {$(VPATH)}node.h
hash.$(OBJEXT): {$(VPATH)}onigmo.h
hash.$(OBJEXT): {$(VPATH)}oniguruma.h
hash.$(OBJEXT): {$(VPATH)}probes.dmyh
hash.$(OBJEXT): {$(VPATH)}probes.h
-hash.$(OBJEXT): {$(VPATH)}ractor.h
-hash.$(OBJEXT): {$(VPATH)}ruby_assert.h
-hash.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-hash.$(OBJEXT): {$(VPATH)}shape.h
hash.$(OBJEXT): {$(VPATH)}st.h
hash.$(OBJEXT): {$(VPATH)}subst.h
hash.$(OBJEXT): {$(VPATH)}symbol.h
-hash.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-hash.$(OBJEXT): {$(VPATH)}thread_native.h
-hash.$(OBJEXT): {$(VPATH)}transient_heap.h
hash.$(OBJEXT): {$(VPATH)}util.h
-hash.$(OBJEXT): {$(VPATH)}vm_core.h
-hash.$(OBJEXT): {$(VPATH)}vm_debug.h
-hash.$(OBJEXT): {$(VPATH)}vm_opts.h
-hash.$(OBJEXT): {$(VPATH)}vm_sync.h
-inits.$(OBJEXT): $(hdrdir)/ruby.h
inits.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-inits.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-inits.$(OBJEXT): $(top_srcdir)/internal/inits.h
-inits.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-inits.$(OBJEXT): {$(VPATH)}assert.h
-inits.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-inits.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-inits.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-inits.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-inits.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-inits.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-inits.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-inits.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-inits.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-inits.$(OBJEXT): {$(VPATH)}builtin.h
+inits.$(OBJEXT): $(top_srcdir)/include/ruby.h
inits.$(OBJEXT): {$(VPATH)}config.h
inits.$(OBJEXT): {$(VPATH)}defines.h
+inits.$(OBJEXT): {$(VPATH)}encoding.h
inits.$(OBJEXT): {$(VPATH)}inits.c
inits.$(OBJEXT): {$(VPATH)}intern.h
-inits.$(OBJEXT): {$(VPATH)}internal/abi.h
-inits.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-inits.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-inits.$(OBJEXT): {$(VPATH)}internal/assume.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-inits.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-inits.$(OBJEXT): {$(VPATH)}internal/cast.h
-inits.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-inits.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-inits.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-inits.$(OBJEXT): {$(VPATH)}internal/config.h
-inits.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-inits.$(OBJEXT): {$(VPATH)}internal/core.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-inits.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-inits.$(OBJEXT): {$(VPATH)}internal/ctype.h
-inits.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-inits.$(OBJEXT): {$(VPATH)}internal/dosish.h
-inits.$(OBJEXT): {$(VPATH)}internal/error.h
-inits.$(OBJEXT): {$(VPATH)}internal/eval.h
-inits.$(OBJEXT): {$(VPATH)}internal/event.h
-inits.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-inits.$(OBJEXT): {$(VPATH)}internal/gc.h
-inits.$(OBJEXT): {$(VPATH)}internal/glob.h
-inits.$(OBJEXT): {$(VPATH)}internal/globals.h
-inits.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-inits.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-inits.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-inits.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-inits.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-inits.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-inits.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-inits.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-inits.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-inits.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-inits.$(OBJEXT): {$(VPATH)}internal/iterator.h
-inits.$(OBJEXT): {$(VPATH)}internal/memory.h
-inits.$(OBJEXT): {$(VPATH)}internal/method.h
-inits.$(OBJEXT): {$(VPATH)}internal/module.h
-inits.$(OBJEXT): {$(VPATH)}internal/newobj.h
-inits.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-inits.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-inits.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-inits.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-inits.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-inits.$(OBJEXT): {$(VPATH)}internal/symbol.h
-inits.$(OBJEXT): {$(VPATH)}internal/value.h
-inits.$(OBJEXT): {$(VPATH)}internal/value_type.h
-inits.$(OBJEXT): {$(VPATH)}internal/variable.h
-inits.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-inits.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+inits.$(OBJEXT): {$(VPATH)}internal.h
+inits.$(OBJEXT): {$(VPATH)}io.h
inits.$(OBJEXT): {$(VPATH)}missing.h
-inits.$(OBJEXT): {$(VPATH)}prelude.rbinc
+inits.$(OBJEXT): {$(VPATH)}onigmo.h
+inits.$(OBJEXT): {$(VPATH)}oniguruma.h
inits.$(OBJEXT): {$(VPATH)}st.h
inits.$(OBJEXT): {$(VPATH)}subst.h
-io.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-io.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-io.$(OBJEXT): $(CCAN_DIR)/list/list.h
-io.$(OBJEXT): $(CCAN_DIR)/str/str.h
io.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-io.$(OBJEXT): $(top_srcdir)/internal/array.h
-io.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-io.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-io.$(OBJEXT): $(top_srcdir)/internal/bits.h
-io.$(OBJEXT): $(top_srcdir)/internal/class.h
-io.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-io.$(OBJEXT): $(top_srcdir)/internal/encoding.h
-io.$(OBJEXT): $(top_srcdir)/internal/error.h
-io.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-io.$(OBJEXT): $(top_srcdir)/internal/gc.h
-io.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-io.$(OBJEXT): $(top_srcdir)/internal/inits.h
-io.$(OBJEXT): $(top_srcdir)/internal/io.h
-io.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-io.$(OBJEXT): $(top_srcdir)/internal/object.h
-io.$(OBJEXT): $(top_srcdir)/internal/process.h
-io.$(OBJEXT): $(top_srcdir)/internal/serial.h
-io.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-io.$(OBJEXT): $(top_srcdir)/internal/string.h
-io.$(OBJEXT): $(top_srcdir)/internal/thread.h
-io.$(OBJEXT): $(top_srcdir)/internal/transcode.h
-io.$(OBJEXT): $(top_srcdir)/internal/variable.h
-io.$(OBJEXT): $(top_srcdir)/internal/vm.h
-io.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-io.$(OBJEXT): {$(VPATH)}assert.h
-io.$(OBJEXT): {$(VPATH)}atomic.h
-io.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-io.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-io.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-io.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-io.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-io.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-io.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-io.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-io.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-io.$(OBJEXT): {$(VPATH)}builtin.h
+io.$(OBJEXT): $(top_srcdir)/include/ruby.h
io.$(OBJEXT): {$(VPATH)}config.h
-io.$(OBJEXT): {$(VPATH)}constant.h
io.$(OBJEXT): {$(VPATH)}defines.h
io.$(OBJEXT): {$(VPATH)}dln.h
io.$(OBJEXT): {$(VPATH)}encindex.h
io.$(OBJEXT): {$(VPATH)}encoding.h
-io.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
io.$(OBJEXT): {$(VPATH)}id.h
-io.$(OBJEXT): {$(VPATH)}id_table.h
io.$(OBJEXT): {$(VPATH)}intern.h
io.$(OBJEXT): {$(VPATH)}internal.h
-io.$(OBJEXT): {$(VPATH)}internal/abi.h
-io.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-io.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-io.$(OBJEXT): {$(VPATH)}internal/assume.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-io.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-io.$(OBJEXT): {$(VPATH)}internal/cast.h
-io.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-io.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-io.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-io.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-io.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-io.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-io.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-io.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-io.$(OBJEXT): {$(VPATH)}internal/config.h
-io.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-io.$(OBJEXT): {$(VPATH)}internal/core.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-io.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-io.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-io.$(OBJEXT): {$(VPATH)}internal/ctype.h
-io.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-io.$(OBJEXT): {$(VPATH)}internal/dosish.h
-io.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-io.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-io.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-io.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-io.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-io.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-io.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-io.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-io.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-io.$(OBJEXT): {$(VPATH)}internal/error.h
-io.$(OBJEXT): {$(VPATH)}internal/eval.h
-io.$(OBJEXT): {$(VPATH)}internal/event.h
-io.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-io.$(OBJEXT): {$(VPATH)}internal/gc.h
-io.$(OBJEXT): {$(VPATH)}internal/glob.h
-io.$(OBJEXT): {$(VPATH)}internal/globals.h
-io.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-io.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-io.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-io.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-io.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-io.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-io.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-io.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-io.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-io.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-io.$(OBJEXT): {$(VPATH)}internal/iterator.h
-io.$(OBJEXT): {$(VPATH)}internal/memory.h
-io.$(OBJEXT): {$(VPATH)}internal/method.h
-io.$(OBJEXT): {$(VPATH)}internal/module.h
-io.$(OBJEXT): {$(VPATH)}internal/newobj.h
-io.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-io.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-io.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-io.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-io.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-io.$(OBJEXT): {$(VPATH)}internal/symbol.h
-io.$(OBJEXT): {$(VPATH)}internal/value.h
-io.$(OBJEXT): {$(VPATH)}internal/value_type.h
-io.$(OBJEXT): {$(VPATH)}internal/variable.h
-io.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-io.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
io.$(OBJEXT): {$(VPATH)}io.c
io.$(OBJEXT): {$(VPATH)}io.h
-io.$(OBJEXT): {$(VPATH)}io.rbinc
-io.$(OBJEXT): {$(VPATH)}io/buffer.h
-io.$(OBJEXT): {$(VPATH)}method.h
io.$(OBJEXT): {$(VPATH)}missing.h
-io.$(OBJEXT): {$(VPATH)}node.h
io.$(OBJEXT): {$(VPATH)}onigmo.h
io.$(OBJEXT): {$(VPATH)}oniguruma.h
-io.$(OBJEXT): {$(VPATH)}ractor.h
-io.$(OBJEXT): {$(VPATH)}ruby_assert.h
io.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-io.$(OBJEXT): {$(VPATH)}shape.h
io.$(OBJEXT): {$(VPATH)}st.h
io.$(OBJEXT): {$(VPATH)}subst.h
io.$(OBJEXT): {$(VPATH)}thread.h
-io.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-io.$(OBJEXT): {$(VPATH)}thread_native.h
io.$(OBJEXT): {$(VPATH)}util.h
-io.$(OBJEXT): {$(VPATH)}vm_core.h
-io.$(OBJEXT): {$(VPATH)}vm_opts.h
-io_buffer.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/array.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/bits.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/error.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/serial.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/string.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/thread.h
-io_buffer.$(OBJEXT): $(top_srcdir)/internal/vm.h
-io_buffer.$(OBJEXT): {$(VPATH)}assert.h
-io_buffer.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-io_buffer.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-io_buffer.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-io_buffer.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-io_buffer.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-io_buffer.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-io_buffer.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-io_buffer.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-io_buffer.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-io_buffer.$(OBJEXT): {$(VPATH)}config.h
-io_buffer.$(OBJEXT): {$(VPATH)}defines.h
-io_buffer.$(OBJEXT): {$(VPATH)}encoding.h
-io_buffer.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
-io_buffer.$(OBJEXT): {$(VPATH)}intern.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/abi.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/assume.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/cast.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/config.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/ctype.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/dosish.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/error.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/eval.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/event.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/gc.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/glob.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/globals.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/iterator.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/memory.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/method.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/module.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/newobj.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/symbol.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/value.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/value_type.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/variable.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-io_buffer.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-io_buffer.$(OBJEXT): {$(VPATH)}io.h
-io_buffer.$(OBJEXT): {$(VPATH)}io/buffer.h
-io_buffer.$(OBJEXT): {$(VPATH)}io_buffer.c
-io_buffer.$(OBJEXT): {$(VPATH)}missing.h
-io_buffer.$(OBJEXT): {$(VPATH)}onigmo.h
-io_buffer.$(OBJEXT): {$(VPATH)}oniguruma.h
-io_buffer.$(OBJEXT): {$(VPATH)}st.h
-io_buffer.$(OBJEXT): {$(VPATH)}subst.h
iseq.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
iseq.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
iseq.$(OBJEXT): $(CCAN_DIR)/list/list.h
iseq.$(OBJEXT): $(CCAN_DIR)/str/str.h
-iseq.$(OBJEXT): $(hdrdir)/ruby.h
iseq.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/array.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/bits.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/class.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/compile.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/error.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/file.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/gc.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/hash.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/parse.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/serial.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/string.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/thread.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/variable.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/vm.h
-iseq.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-iseq.$(OBJEXT): {$(VPATH)}assert.h
-iseq.$(OBJEXT): {$(VPATH)}atomic.h
-iseq.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-iseq.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-iseq.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-iseq.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-iseq.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-iseq.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-iseq.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-iseq.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-iseq.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-iseq.$(OBJEXT): {$(VPATH)}builtin.h
+iseq.$(OBJEXT): $(hdrdir)/ruby/version.h
+iseq.$(OBJEXT): $(top_srcdir)/include/ruby.h
iseq.$(OBJEXT): {$(VPATH)}config.h
-iseq.$(OBJEXT): {$(VPATH)}constant.h
-iseq.$(OBJEXT): {$(VPATH)}debug_counter.h
iseq.$(OBJEXT): {$(VPATH)}defines.h
iseq.$(OBJEXT): {$(VPATH)}encoding.h
iseq.$(OBJEXT): {$(VPATH)}eval_intern.h
+iseq.$(OBJEXT): {$(VPATH)}gc.h
iseq.$(OBJEXT): {$(VPATH)}id.h
iseq.$(OBJEXT): {$(VPATH)}id_table.h
-iseq.$(OBJEXT): {$(VPATH)}insns.def
iseq.$(OBJEXT): {$(VPATH)}insns.inc
iseq.$(OBJEXT): {$(VPATH)}insns_info.inc
iseq.$(OBJEXT): {$(VPATH)}intern.h
iseq.$(OBJEXT): {$(VPATH)}internal.h
-iseq.$(OBJEXT): {$(VPATH)}internal/abi.h
-iseq.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-iseq.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-iseq.$(OBJEXT): {$(VPATH)}internal/assume.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-iseq.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-iseq.$(OBJEXT): {$(VPATH)}internal/cast.h
-iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-iseq.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-iseq.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-iseq.$(OBJEXT): {$(VPATH)}internal/config.h
-iseq.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-iseq.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-iseq.$(OBJEXT): {$(VPATH)}internal/ctype.h
-iseq.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-iseq.$(OBJEXT): {$(VPATH)}internal/dosish.h
-iseq.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-iseq.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-iseq.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-iseq.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-iseq.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-iseq.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-iseq.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-iseq.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-iseq.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-iseq.$(OBJEXT): {$(VPATH)}internal/error.h
-iseq.$(OBJEXT): {$(VPATH)}internal/eval.h
-iseq.$(OBJEXT): {$(VPATH)}internal/event.h
-iseq.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-iseq.$(OBJEXT): {$(VPATH)}internal/gc.h
-iseq.$(OBJEXT): {$(VPATH)}internal/glob.h
-iseq.$(OBJEXT): {$(VPATH)}internal/globals.h
-iseq.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-iseq.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-iseq.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-iseq.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-iseq.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-iseq.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-iseq.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-iseq.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-iseq.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-iseq.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-iseq.$(OBJEXT): {$(VPATH)}internal/iterator.h
-iseq.$(OBJEXT): {$(VPATH)}internal/memory.h
-iseq.$(OBJEXT): {$(VPATH)}internal/method.h
-iseq.$(OBJEXT): {$(VPATH)}internal/module.h
-iseq.$(OBJEXT): {$(VPATH)}internal/newobj.h
-iseq.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-iseq.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-iseq.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-iseq.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-iseq.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-iseq.$(OBJEXT): {$(VPATH)}internal/symbol.h
-iseq.$(OBJEXT): {$(VPATH)}internal/value.h
-iseq.$(OBJEXT): {$(VPATH)}internal/value_type.h
-iseq.$(OBJEXT): {$(VPATH)}internal/variable.h
-iseq.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-iseq.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+iseq.$(OBJEXT): {$(VPATH)}io.h
iseq.$(OBJEXT): {$(VPATH)}iseq.c
iseq.$(OBJEXT): {$(VPATH)}iseq.h
iseq.$(OBJEXT): {$(VPATH)}method.h
@@ -8206,213 +1974,31 @@ iseq.$(OBJEXT): {$(VPATH)}node.h
iseq.$(OBJEXT): {$(VPATH)}node_name.inc
iseq.$(OBJEXT): {$(VPATH)}onigmo.h
iseq.$(OBJEXT): {$(VPATH)}oniguruma.h
-iseq.$(OBJEXT): {$(VPATH)}ractor.h
-iseq.$(OBJEXT): {$(VPATH)}rjit.h
iseq.$(OBJEXT): {$(VPATH)}ruby_assert.h
iseq.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-iseq.$(OBJEXT): {$(VPATH)}shape.h
iseq.$(OBJEXT): {$(VPATH)}st.h
iseq.$(OBJEXT): {$(VPATH)}subst.h
iseq.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
iseq.$(OBJEXT): {$(VPATH)}thread_native.h
iseq.$(OBJEXT): {$(VPATH)}util.h
-iseq.$(OBJEXT): {$(VPATH)}vm_callinfo.h
iseq.$(OBJEXT): {$(VPATH)}vm_core.h
+iseq.$(OBJEXT): {$(VPATH)}vm_debug.h
iseq.$(OBJEXT): {$(VPATH)}vm_opts.h
-iseq.$(OBJEXT): {$(VPATH)}yjit.h
load.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
load.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
load.$(OBJEXT): $(CCAN_DIR)/list/list.h
load.$(OBJEXT): $(CCAN_DIR)/str/str.h
load.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-load.$(OBJEXT): $(top_srcdir)/internal/array.h
-load.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-load.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-load.$(OBJEXT): $(top_srcdir)/internal/dir.h
-load.$(OBJEXT): $(top_srcdir)/internal/error.h
-load.$(OBJEXT): $(top_srcdir)/internal/file.h
-load.$(OBJEXT): $(top_srcdir)/internal/gc.h
-load.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-load.$(OBJEXT): $(top_srcdir)/internal/load.h
-load.$(OBJEXT): $(top_srcdir)/internal/parse.h
-load.$(OBJEXT): $(top_srcdir)/internal/serial.h
-load.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-load.$(OBJEXT): $(top_srcdir)/internal/string.h
-load.$(OBJEXT): $(top_srcdir)/internal/thread.h
-load.$(OBJEXT): $(top_srcdir)/internal/variable.h
-load.$(OBJEXT): $(top_srcdir)/internal/vm.h
-load.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-load.$(OBJEXT): {$(VPATH)}assert.h
-load.$(OBJEXT): {$(VPATH)}atomic.h
-load.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-load.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-load.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-load.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-load.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-load.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-load.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-load.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-load.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+load.$(OBJEXT): $(top_srcdir)/include/ruby.h
load.$(OBJEXT): {$(VPATH)}config.h
-load.$(OBJEXT): {$(VPATH)}constant.h
-load.$(OBJEXT): {$(VPATH)}darray.h
load.$(OBJEXT): {$(VPATH)}defines.h
load.$(OBJEXT): {$(VPATH)}dln.h
load.$(OBJEXT): {$(VPATH)}encoding.h
load.$(OBJEXT): {$(VPATH)}eval_intern.h
load.$(OBJEXT): {$(VPATH)}id.h
-load.$(OBJEXT): {$(VPATH)}id_table.h
load.$(OBJEXT): {$(VPATH)}intern.h
load.$(OBJEXT): {$(VPATH)}internal.h
-load.$(OBJEXT): {$(VPATH)}internal/abi.h
-load.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-load.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-load.$(OBJEXT): {$(VPATH)}internal/assume.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-load.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-load.$(OBJEXT): {$(VPATH)}internal/cast.h
-load.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-load.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-load.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-load.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-load.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-load.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-load.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-load.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-load.$(OBJEXT): {$(VPATH)}internal/config.h
-load.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-load.$(OBJEXT): {$(VPATH)}internal/core.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-load.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-load.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-load.$(OBJEXT): {$(VPATH)}internal/ctype.h
-load.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-load.$(OBJEXT): {$(VPATH)}internal/dosish.h
-load.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-load.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-load.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-load.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-load.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-load.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-load.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-load.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-load.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-load.$(OBJEXT): {$(VPATH)}internal/error.h
-load.$(OBJEXT): {$(VPATH)}internal/eval.h
-load.$(OBJEXT): {$(VPATH)}internal/event.h
-load.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-load.$(OBJEXT): {$(VPATH)}internal/gc.h
-load.$(OBJEXT): {$(VPATH)}internal/glob.h
-load.$(OBJEXT): {$(VPATH)}internal/globals.h
-load.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-load.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-load.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-load.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-load.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-load.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-load.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-load.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-load.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-load.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-load.$(OBJEXT): {$(VPATH)}internal/iterator.h
-load.$(OBJEXT): {$(VPATH)}internal/memory.h
-load.$(OBJEXT): {$(VPATH)}internal/method.h
-load.$(OBJEXT): {$(VPATH)}internal/module.h
-load.$(OBJEXT): {$(VPATH)}internal/newobj.h
-load.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-load.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-load.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-load.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-load.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-load.$(OBJEXT): {$(VPATH)}internal/symbol.h
-load.$(OBJEXT): {$(VPATH)}internal/value.h
-load.$(OBJEXT): {$(VPATH)}internal/value_type.h
-load.$(OBJEXT): {$(VPATH)}internal/variable.h
-load.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-load.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-load.$(OBJEXT): {$(VPATH)}iseq.h
+load.$(OBJEXT): {$(VPATH)}io.h
load.$(OBJEXT): {$(VPATH)}load.c
load.$(OBJEXT): {$(VPATH)}method.h
load.$(OBJEXT): {$(VPATH)}missing.h
@@ -8423,2324 +2009,185 @@ load.$(OBJEXT): {$(VPATH)}probes.dmyh
load.$(OBJEXT): {$(VPATH)}probes.h
load.$(OBJEXT): {$(VPATH)}ruby_assert.h
load.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-load.$(OBJEXT): {$(VPATH)}shape.h
load.$(OBJEXT): {$(VPATH)}st.h
load.$(OBJEXT): {$(VPATH)}subst.h
load.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
load.$(OBJEXT): {$(VPATH)}thread_native.h
load.$(OBJEXT): {$(VPATH)}util.h
load.$(OBJEXT): {$(VPATH)}vm_core.h
+load.$(OBJEXT): {$(VPATH)}vm_debug.h
load.$(OBJEXT): {$(VPATH)}vm_opts.h
loadpath.$(OBJEXT): $(hdrdir)/ruby/ruby.h
loadpath.$(OBJEXT): $(hdrdir)/ruby/version.h
loadpath.$(OBJEXT): $(top_srcdir)/version.h
-loadpath.$(OBJEXT): {$(VPATH)}assert.h
-loadpath.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-loadpath.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-loadpath.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-loadpath.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-loadpath.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-loadpath.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-loadpath.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-loadpath.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
loadpath.$(OBJEXT): {$(VPATH)}config.h
loadpath.$(OBJEXT): {$(VPATH)}defines.h
loadpath.$(OBJEXT): {$(VPATH)}intern.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/abi.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/assume.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/cast.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/config.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/ctype.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/dosish.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/error.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/eval.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/event.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/gc.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/glob.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/globals.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/iterator.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/memory.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/method.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/module.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/newobj.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/symbol.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/value.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/value_type.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/variable.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-loadpath.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
loadpath.$(OBJEXT): {$(VPATH)}loadpath.c
loadpath.$(OBJEXT): {$(VPATH)}missing.h
loadpath.$(OBJEXT): {$(VPATH)}st.h
loadpath.$(OBJEXT): {$(VPATH)}subst.h
loadpath.$(OBJEXT): {$(VPATH)}verconf.h
localeinit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-localeinit.$(OBJEXT): {$(VPATH)}assert.h
-localeinit.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-localeinit.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-localeinit.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-localeinit.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-localeinit.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-localeinit.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-localeinit.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-localeinit.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+localeinit.$(OBJEXT): $(top_srcdir)/include/ruby.h
localeinit.$(OBJEXT): {$(VPATH)}config.h
localeinit.$(OBJEXT): {$(VPATH)}defines.h
localeinit.$(OBJEXT): {$(VPATH)}encindex.h
localeinit.$(OBJEXT): {$(VPATH)}encoding.h
localeinit.$(OBJEXT): {$(VPATH)}intern.h
localeinit.$(OBJEXT): {$(VPATH)}internal.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/abi.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/assume.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/cast.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/config.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/ctype.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/dosish.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/error.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/eval.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/event.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/gc.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/glob.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/globals.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/iterator.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/memory.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/method.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/module.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/newobj.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/symbol.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/value.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/value_type.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/variable.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-localeinit.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+localeinit.$(OBJEXT): {$(VPATH)}io.h
localeinit.$(OBJEXT): {$(VPATH)}localeinit.c
localeinit.$(OBJEXT): {$(VPATH)}missing.h
localeinit.$(OBJEXT): {$(VPATH)}onigmo.h
localeinit.$(OBJEXT): {$(VPATH)}oniguruma.h
localeinit.$(OBJEXT): {$(VPATH)}st.h
localeinit.$(OBJEXT): {$(VPATH)}subst.h
-main.$(OBJEXT): $(hdrdir)/ruby.h
main.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-main.$(OBJEXT): {$(VPATH)}assert.h
+main.$(OBJEXT): $(top_srcdir)/include/ruby.h
main.$(OBJEXT): {$(VPATH)}backward.h
-main.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-main.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-main.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-main.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-main.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-main.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-main.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-main.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
main.$(OBJEXT): {$(VPATH)}config.h
main.$(OBJEXT): {$(VPATH)}defines.h
main.$(OBJEXT): {$(VPATH)}intern.h
-main.$(OBJEXT): {$(VPATH)}internal/abi.h
-main.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-main.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-main.$(OBJEXT): {$(VPATH)}internal/assume.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-main.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-main.$(OBJEXT): {$(VPATH)}internal/cast.h
-main.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-main.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-main.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-main.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-main.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-main.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-main.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-main.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-main.$(OBJEXT): {$(VPATH)}internal/config.h
-main.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-main.$(OBJEXT): {$(VPATH)}internal/core.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-main.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-main.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-main.$(OBJEXT): {$(VPATH)}internal/ctype.h
-main.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-main.$(OBJEXT): {$(VPATH)}internal/dosish.h
-main.$(OBJEXT): {$(VPATH)}internal/error.h
-main.$(OBJEXT): {$(VPATH)}internal/eval.h
-main.$(OBJEXT): {$(VPATH)}internal/event.h
-main.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-main.$(OBJEXT): {$(VPATH)}internal/gc.h
-main.$(OBJEXT): {$(VPATH)}internal/glob.h
-main.$(OBJEXT): {$(VPATH)}internal/globals.h
-main.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-main.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-main.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-main.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-main.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-main.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-main.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-main.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-main.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-main.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-main.$(OBJEXT): {$(VPATH)}internal/iterator.h
-main.$(OBJEXT): {$(VPATH)}internal/memory.h
-main.$(OBJEXT): {$(VPATH)}internal/method.h
-main.$(OBJEXT): {$(VPATH)}internal/module.h
-main.$(OBJEXT): {$(VPATH)}internal/newobj.h
-main.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-main.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-main.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-main.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-main.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-main.$(OBJEXT): {$(VPATH)}internal/symbol.h
-main.$(OBJEXT): {$(VPATH)}internal/value.h
-main.$(OBJEXT): {$(VPATH)}internal/value_type.h
-main.$(OBJEXT): {$(VPATH)}internal/variable.h
-main.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-main.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
main.$(OBJEXT): {$(VPATH)}main.c
main.$(OBJEXT): {$(VPATH)}missing.h
+main.$(OBJEXT): {$(VPATH)}node.h
main.$(OBJEXT): {$(VPATH)}st.h
main.$(OBJEXT): {$(VPATH)}subst.h
main.$(OBJEXT): {$(VPATH)}vm_debug.h
-marshal.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-marshal.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-marshal.$(OBJEXT): $(CCAN_DIR)/list/list.h
-marshal.$(OBJEXT): $(CCAN_DIR)/str/str.h
marshal.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/array.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/bits.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/class.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/encoding.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/error.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/gc.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/hash.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/object.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/serial.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/string.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/struct.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/util.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/variable.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/vm.h
-marshal.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-marshal.$(OBJEXT): {$(VPATH)}assert.h
-marshal.$(OBJEXT): {$(VPATH)}atomic.h
-marshal.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-marshal.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-marshal.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-marshal.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-marshal.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-marshal.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-marshal.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-marshal.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-marshal.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-marshal.$(OBJEXT): {$(VPATH)}builtin.h
+marshal.$(OBJEXT): $(top_srcdir)/include/ruby.h
marshal.$(OBJEXT): {$(VPATH)}config.h
-marshal.$(OBJEXT): {$(VPATH)}constant.h
marshal.$(OBJEXT): {$(VPATH)}defines.h
marshal.$(OBJEXT): {$(VPATH)}encindex.h
marshal.$(OBJEXT): {$(VPATH)}encoding.h
-marshal.$(OBJEXT): {$(VPATH)}id.h
marshal.$(OBJEXT): {$(VPATH)}id_table.h
marshal.$(OBJEXT): {$(VPATH)}intern.h
marshal.$(OBJEXT): {$(VPATH)}internal.h
-marshal.$(OBJEXT): {$(VPATH)}internal/abi.h
-marshal.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-marshal.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-marshal.$(OBJEXT): {$(VPATH)}internal/assume.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-marshal.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-marshal.$(OBJEXT): {$(VPATH)}internal/cast.h
-marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-marshal.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-marshal.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-marshal.$(OBJEXT): {$(VPATH)}internal/config.h
-marshal.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-marshal.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-marshal.$(OBJEXT): {$(VPATH)}internal/ctype.h
-marshal.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-marshal.$(OBJEXT): {$(VPATH)}internal/dosish.h
-marshal.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-marshal.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-marshal.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-marshal.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-marshal.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-marshal.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-marshal.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-marshal.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-marshal.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-marshal.$(OBJEXT): {$(VPATH)}internal/error.h
-marshal.$(OBJEXT): {$(VPATH)}internal/eval.h
-marshal.$(OBJEXT): {$(VPATH)}internal/event.h
-marshal.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-marshal.$(OBJEXT): {$(VPATH)}internal/gc.h
-marshal.$(OBJEXT): {$(VPATH)}internal/glob.h
-marshal.$(OBJEXT): {$(VPATH)}internal/globals.h
-marshal.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-marshal.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-marshal.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-marshal.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-marshal.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-marshal.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-marshal.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-marshal.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-marshal.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-marshal.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-marshal.$(OBJEXT): {$(VPATH)}internal/iterator.h
-marshal.$(OBJEXT): {$(VPATH)}internal/memory.h
-marshal.$(OBJEXT): {$(VPATH)}internal/method.h
-marshal.$(OBJEXT): {$(VPATH)}internal/module.h
-marshal.$(OBJEXT): {$(VPATH)}internal/newobj.h
-marshal.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-marshal.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-marshal.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-marshal.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-marshal.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-marshal.$(OBJEXT): {$(VPATH)}internal/symbol.h
-marshal.$(OBJEXT): {$(VPATH)}internal/value.h
-marshal.$(OBJEXT): {$(VPATH)}internal/value_type.h
-marshal.$(OBJEXT): {$(VPATH)}internal/variable.h
-marshal.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-marshal.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
marshal.$(OBJEXT): {$(VPATH)}io.h
marshal.$(OBJEXT): {$(VPATH)}marshal.c
-marshal.$(OBJEXT): {$(VPATH)}marshal.rbinc
-marshal.$(OBJEXT): {$(VPATH)}method.h
marshal.$(OBJEXT): {$(VPATH)}missing.h
-marshal.$(OBJEXT): {$(VPATH)}node.h
marshal.$(OBJEXT): {$(VPATH)}onigmo.h
marshal.$(OBJEXT): {$(VPATH)}oniguruma.h
-marshal.$(OBJEXT): {$(VPATH)}ruby_assert.h
-marshal.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-marshal.$(OBJEXT): {$(VPATH)}shape.h
marshal.$(OBJEXT): {$(VPATH)}st.h
marshal.$(OBJEXT): {$(VPATH)}subst.h
-marshal.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-marshal.$(OBJEXT): {$(VPATH)}thread_native.h
marshal.$(OBJEXT): {$(VPATH)}util.h
-marshal.$(OBJEXT): {$(VPATH)}vm_core.h
-marshal.$(OBJEXT): {$(VPATH)}vm_opts.h
math.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-math.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-math.$(OBJEXT): $(top_srcdir)/internal/class.h
-math.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-math.$(OBJEXT): $(top_srcdir)/internal/complex.h
-math.$(OBJEXT): $(top_srcdir)/internal/gc.h
-math.$(OBJEXT): $(top_srcdir)/internal/math.h
-math.$(OBJEXT): $(top_srcdir)/internal/object.h
-math.$(OBJEXT): $(top_srcdir)/internal/serial.h
-math.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-math.$(OBJEXT): $(top_srcdir)/internal/variable.h
-math.$(OBJEXT): $(top_srcdir)/internal/vm.h
-math.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-math.$(OBJEXT): {$(VPATH)}assert.h
-math.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-math.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-math.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-math.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-math.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-math.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-math.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-math.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-math.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+math.$(OBJEXT): $(top_srcdir)/include/ruby.h
math.$(OBJEXT): {$(VPATH)}config.h
-math.$(OBJEXT): {$(VPATH)}constant.h
math.$(OBJEXT): {$(VPATH)}defines.h
-math.$(OBJEXT): {$(VPATH)}id_table.h
+math.$(OBJEXT): {$(VPATH)}encoding.h
math.$(OBJEXT): {$(VPATH)}intern.h
math.$(OBJEXT): {$(VPATH)}internal.h
-math.$(OBJEXT): {$(VPATH)}internal/abi.h
-math.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-math.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-math.$(OBJEXT): {$(VPATH)}internal/assume.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-math.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-math.$(OBJEXT): {$(VPATH)}internal/cast.h
-math.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-math.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-math.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-math.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-math.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-math.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-math.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-math.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-math.$(OBJEXT): {$(VPATH)}internal/config.h
-math.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-math.$(OBJEXT): {$(VPATH)}internal/core.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-math.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-math.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-math.$(OBJEXT): {$(VPATH)}internal/ctype.h
-math.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-math.$(OBJEXT): {$(VPATH)}internal/dosish.h
-math.$(OBJEXT): {$(VPATH)}internal/error.h
-math.$(OBJEXT): {$(VPATH)}internal/eval.h
-math.$(OBJEXT): {$(VPATH)}internal/event.h
-math.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-math.$(OBJEXT): {$(VPATH)}internal/gc.h
-math.$(OBJEXT): {$(VPATH)}internal/glob.h
-math.$(OBJEXT): {$(VPATH)}internal/globals.h
-math.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-math.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-math.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-math.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-math.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-math.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-math.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-math.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-math.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-math.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-math.$(OBJEXT): {$(VPATH)}internal/iterator.h
-math.$(OBJEXT): {$(VPATH)}internal/memory.h
-math.$(OBJEXT): {$(VPATH)}internal/method.h
-math.$(OBJEXT): {$(VPATH)}internal/module.h
-math.$(OBJEXT): {$(VPATH)}internal/newobj.h
-math.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-math.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-math.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-math.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-math.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-math.$(OBJEXT): {$(VPATH)}internal/symbol.h
-math.$(OBJEXT): {$(VPATH)}internal/value.h
-math.$(OBJEXT): {$(VPATH)}internal/value_type.h
-math.$(OBJEXT): {$(VPATH)}internal/variable.h
-math.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-math.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+math.$(OBJEXT): {$(VPATH)}io.h
math.$(OBJEXT): {$(VPATH)}math.c
math.$(OBJEXT): {$(VPATH)}missing.h
-math.$(OBJEXT): {$(VPATH)}shape.h
+math.$(OBJEXT): {$(VPATH)}onigmo.h
+math.$(OBJEXT): {$(VPATH)}oniguruma.h
math.$(OBJEXT): {$(VPATH)}st.h
math.$(OBJEXT): {$(VPATH)}subst.h
-memory_view.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-memory_view.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-memory_view.$(OBJEXT): $(CCAN_DIR)/list/list.h
-memory_view.$(OBJEXT): $(CCAN_DIR)/str/str.h
-memory_view.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/array.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/gc.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/hash.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/serial.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/variable.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/vm.h
-memory_view.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-memory_view.$(OBJEXT): {$(VPATH)}assert.h
-memory_view.$(OBJEXT): {$(VPATH)}atomic.h
-memory_view.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-memory_view.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-memory_view.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-memory_view.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-memory_view.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-memory_view.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-memory_view.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-memory_view.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-memory_view.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-memory_view.$(OBJEXT): {$(VPATH)}config.h
-memory_view.$(OBJEXT): {$(VPATH)}constant.h
-memory_view.$(OBJEXT): {$(VPATH)}debug_counter.h
-memory_view.$(OBJEXT): {$(VPATH)}defines.h
-memory_view.$(OBJEXT): {$(VPATH)}id.h
-memory_view.$(OBJEXT): {$(VPATH)}id_table.h
-memory_view.$(OBJEXT): {$(VPATH)}intern.h
-memory_view.$(OBJEXT): {$(VPATH)}internal.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/abi.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/assume.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/cast.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/config.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/ctype.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/dosish.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/error.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/eval.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/event.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/gc.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/glob.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/globals.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/iterator.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/memory.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/method.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/module.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/newobj.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/symbol.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/value.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/value_type.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/variable.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-memory_view.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-memory_view.$(OBJEXT): {$(VPATH)}memory_view.c
-memory_view.$(OBJEXT): {$(VPATH)}memory_view.h
-memory_view.$(OBJEXT): {$(VPATH)}method.h
-memory_view.$(OBJEXT): {$(VPATH)}missing.h
-memory_view.$(OBJEXT): {$(VPATH)}node.h
-memory_view.$(OBJEXT): {$(VPATH)}ruby_assert.h
-memory_view.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-memory_view.$(OBJEXT): {$(VPATH)}shape.h
-memory_view.$(OBJEXT): {$(VPATH)}st.h
-memory_view.$(OBJEXT): {$(VPATH)}subst.h
-memory_view.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-memory_view.$(OBJEXT): {$(VPATH)}thread_native.h
-memory_view.$(OBJEXT): {$(VPATH)}util.h
-memory_view.$(OBJEXT): {$(VPATH)}vm_core.h
-memory_view.$(OBJEXT): {$(VPATH)}vm_debug.h
-memory_view.$(OBJEXT): {$(VPATH)}vm_opts.h
-memory_view.$(OBJEXT): {$(VPATH)}vm_sync.h
-miniinit.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-miniinit.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-miniinit.$(OBJEXT): $(CCAN_DIR)/list/list.h
-miniinit.$(OBJEXT): $(CCAN_DIR)/str/str.h
miniinit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-miniinit.$(OBJEXT): $(srcdir)/rjit_c.rb
-miniinit.$(OBJEXT): $(top_srcdir)/internal/array.h
-miniinit.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-miniinit.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-miniinit.$(OBJEXT): $(top_srcdir)/internal/gc.h
-miniinit.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-miniinit.$(OBJEXT): $(top_srcdir)/internal/serial.h
-miniinit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-miniinit.$(OBJEXT): $(top_srcdir)/internal/variable.h
-miniinit.$(OBJEXT): $(top_srcdir)/internal/vm.h
-miniinit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-miniinit.$(OBJEXT): {$(VPATH)}array.rb
-miniinit.$(OBJEXT): {$(VPATH)}assert.h
-miniinit.$(OBJEXT): {$(VPATH)}ast.rb
-miniinit.$(OBJEXT): {$(VPATH)}atomic.h
-miniinit.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-miniinit.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-miniinit.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-miniinit.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-miniinit.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-miniinit.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-miniinit.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-miniinit.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-miniinit.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-miniinit.$(OBJEXT): {$(VPATH)}builtin.h
miniinit.$(OBJEXT): {$(VPATH)}config.h
-miniinit.$(OBJEXT): {$(VPATH)}constant.h
miniinit.$(OBJEXT): {$(VPATH)}defines.h
-miniinit.$(OBJEXT): {$(VPATH)}dir.rb
miniinit.$(OBJEXT): {$(VPATH)}encoding.h
-miniinit.$(OBJEXT): {$(VPATH)}gc.rb
-miniinit.$(OBJEXT): {$(VPATH)}gem_prelude.rb
-miniinit.$(OBJEXT): {$(VPATH)}id.h
-miniinit.$(OBJEXT): {$(VPATH)}id_table.h
miniinit.$(OBJEXT): {$(VPATH)}intern.h
-miniinit.$(OBJEXT): {$(VPATH)}internal.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/abi.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/assume.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/cast.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/config.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/ctype.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/dosish.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/error.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/eval.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/event.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/gc.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/glob.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/globals.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/iterator.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/memory.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/method.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/module.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/newobj.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/symbol.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/value.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/value_type.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/variable.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-miniinit.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-miniinit.$(OBJEXT): {$(VPATH)}io.rb
-miniinit.$(OBJEXT): {$(VPATH)}iseq.h
-miniinit.$(OBJEXT): {$(VPATH)}kernel.rb
-miniinit.$(OBJEXT): {$(VPATH)}marshal.rb
-miniinit.$(OBJEXT): {$(VPATH)}method.h
-miniinit.$(OBJEXT): {$(VPATH)}mini_builtin.c
miniinit.$(OBJEXT): {$(VPATH)}miniinit.c
-miniinit.$(OBJEXT): {$(VPATH)}miniprelude.c
miniinit.$(OBJEXT): {$(VPATH)}missing.h
-miniinit.$(OBJEXT): {$(VPATH)}nilclass.rb
-miniinit.$(OBJEXT): {$(VPATH)}node.h
-miniinit.$(OBJEXT): {$(VPATH)}numeric.rb
miniinit.$(OBJEXT): {$(VPATH)}onigmo.h
miniinit.$(OBJEXT): {$(VPATH)}oniguruma.h
-miniinit.$(OBJEXT): {$(VPATH)}pack.rb
-miniinit.$(OBJEXT): {$(VPATH)}prelude.rb
-miniinit.$(OBJEXT): {$(VPATH)}ractor.rb
-miniinit.$(OBJEXT): {$(VPATH)}rjit.rb
-miniinit.$(OBJEXT): {$(VPATH)}rjit_c.rb
-miniinit.$(OBJEXT): {$(VPATH)}ruby_assert.h
-miniinit.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-miniinit.$(OBJEXT): {$(VPATH)}shape.h
miniinit.$(OBJEXT): {$(VPATH)}st.h
miniinit.$(OBJEXT): {$(VPATH)}subst.h
-miniinit.$(OBJEXT): {$(VPATH)}symbol.rb
-miniinit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-miniinit.$(OBJEXT): {$(VPATH)}thread_native.h
-miniinit.$(OBJEXT): {$(VPATH)}thread_sync.rb
-miniinit.$(OBJEXT): {$(VPATH)}timev.rb
-miniinit.$(OBJEXT): {$(VPATH)}trace_point.rb
-miniinit.$(OBJEXT): {$(VPATH)}vm_core.h
-miniinit.$(OBJEXT): {$(VPATH)}vm_opts.h
-miniinit.$(OBJEXT): {$(VPATH)}warning.rb
-miniinit.$(OBJEXT): {$(VPATH)}yjit.rb
+miniprelude.$(OBJEXT): $(hdrdir)/ruby/version.h
+miniprelude.$(OBJEXT): {$(VPATH)}iseq.h
+miniprelude.$(OBJEXT): {$(VPATH)}miniprelude.c
node.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
node.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
node.$(OBJEXT): $(CCAN_DIR)/list/list.h
node.$(OBJEXT): $(CCAN_DIR)/str/str.h
node.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-node.$(OBJEXT): $(top_srcdir)/internal/array.h
-node.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-node.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-node.$(OBJEXT): $(top_srcdir)/internal/gc.h
-node.$(OBJEXT): $(top_srcdir)/internal/hash.h
-node.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-node.$(OBJEXT): $(top_srcdir)/internal/serial.h
-node.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-node.$(OBJEXT): $(top_srcdir)/internal/variable.h
-node.$(OBJEXT): $(top_srcdir)/internal/vm.h
-node.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-node.$(OBJEXT): {$(VPATH)}assert.h
-node.$(OBJEXT): {$(VPATH)}atomic.h
-node.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-node.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-node.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-node.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-node.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-node.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-node.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-node.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-node.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+node.$(OBJEXT): $(top_srcdir)/include/ruby.h
node.$(OBJEXT): {$(VPATH)}config.h
-node.$(OBJEXT): {$(VPATH)}constant.h
node.$(OBJEXT): {$(VPATH)}defines.h
+node.$(OBJEXT): {$(VPATH)}encoding.h
node.$(OBJEXT): {$(VPATH)}id.h
-node.$(OBJEXT): {$(VPATH)}id_table.h
node.$(OBJEXT): {$(VPATH)}intern.h
node.$(OBJEXT): {$(VPATH)}internal.h
-node.$(OBJEXT): {$(VPATH)}internal/abi.h
-node.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-node.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-node.$(OBJEXT): {$(VPATH)}internal/assume.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-node.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-node.$(OBJEXT): {$(VPATH)}internal/cast.h
-node.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-node.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-node.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-node.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-node.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-node.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-node.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-node.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-node.$(OBJEXT): {$(VPATH)}internal/config.h
-node.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-node.$(OBJEXT): {$(VPATH)}internal/core.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-node.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-node.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-node.$(OBJEXT): {$(VPATH)}internal/ctype.h
-node.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-node.$(OBJEXT): {$(VPATH)}internal/dosish.h
-node.$(OBJEXT): {$(VPATH)}internal/error.h
-node.$(OBJEXT): {$(VPATH)}internal/eval.h
-node.$(OBJEXT): {$(VPATH)}internal/event.h
-node.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-node.$(OBJEXT): {$(VPATH)}internal/gc.h
-node.$(OBJEXT): {$(VPATH)}internal/glob.h
-node.$(OBJEXT): {$(VPATH)}internal/globals.h
-node.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-node.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-node.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-node.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-node.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-node.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-node.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-node.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-node.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-node.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-node.$(OBJEXT): {$(VPATH)}internal/iterator.h
-node.$(OBJEXT): {$(VPATH)}internal/memory.h
-node.$(OBJEXT): {$(VPATH)}internal/method.h
-node.$(OBJEXT): {$(VPATH)}internal/module.h
-node.$(OBJEXT): {$(VPATH)}internal/newobj.h
-node.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-node.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-node.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-node.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-node.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-node.$(OBJEXT): {$(VPATH)}internal/symbol.h
-node.$(OBJEXT): {$(VPATH)}internal/value.h
-node.$(OBJEXT): {$(VPATH)}internal/value_type.h
-node.$(OBJEXT): {$(VPATH)}internal/variable.h
-node.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-node.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+node.$(OBJEXT): {$(VPATH)}io.h
node.$(OBJEXT): {$(VPATH)}method.h
node.$(OBJEXT): {$(VPATH)}missing.h
node.$(OBJEXT): {$(VPATH)}node.c
node.$(OBJEXT): {$(VPATH)}node.h
+node.$(OBJEXT): {$(VPATH)}onigmo.h
+node.$(OBJEXT): {$(VPATH)}oniguruma.h
node.$(OBJEXT): {$(VPATH)}ruby_assert.h
node.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-node.$(OBJEXT): {$(VPATH)}shape.h
node.$(OBJEXT): {$(VPATH)}st.h
node.$(OBJEXT): {$(VPATH)}subst.h
node.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
node.$(OBJEXT): {$(VPATH)}thread_native.h
node.$(OBJEXT): {$(VPATH)}vm_core.h
+node.$(OBJEXT): {$(VPATH)}vm_debug.h
node.$(OBJEXT): {$(VPATH)}vm_opts.h
-numeric.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-numeric.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-numeric.$(OBJEXT): $(CCAN_DIR)/list/list.h
-numeric.$(OBJEXT): $(CCAN_DIR)/str/str.h
numeric.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/array.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/bits.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/class.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/complex.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/enumerator.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/gc.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/hash.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/object.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/rational.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/serial.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/string.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/util.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/variable.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/vm.h
-numeric.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-numeric.$(OBJEXT): {$(VPATH)}assert.h
-numeric.$(OBJEXT): {$(VPATH)}atomic.h
-numeric.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-numeric.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-numeric.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-numeric.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-numeric.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-numeric.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-numeric.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-numeric.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-numeric.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-numeric.$(OBJEXT): {$(VPATH)}builtin.h
+numeric.$(OBJEXT): $(top_srcdir)/include/ruby.h
numeric.$(OBJEXT): {$(VPATH)}config.h
-numeric.$(OBJEXT): {$(VPATH)}constant.h
numeric.$(OBJEXT): {$(VPATH)}defines.h
numeric.$(OBJEXT): {$(VPATH)}encoding.h
numeric.$(OBJEXT): {$(VPATH)}id.h
-numeric.$(OBJEXT): {$(VPATH)}id_table.h
numeric.$(OBJEXT): {$(VPATH)}intern.h
numeric.$(OBJEXT): {$(VPATH)}internal.h
-numeric.$(OBJEXT): {$(VPATH)}internal/abi.h
-numeric.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-numeric.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-numeric.$(OBJEXT): {$(VPATH)}internal/assume.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-numeric.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-numeric.$(OBJEXT): {$(VPATH)}internal/cast.h
-numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-numeric.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-numeric.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-numeric.$(OBJEXT): {$(VPATH)}internal/config.h
-numeric.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-numeric.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-numeric.$(OBJEXT): {$(VPATH)}internal/ctype.h
-numeric.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-numeric.$(OBJEXT): {$(VPATH)}internal/dosish.h
-numeric.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-numeric.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-numeric.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-numeric.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-numeric.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-numeric.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-numeric.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-numeric.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-numeric.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-numeric.$(OBJEXT): {$(VPATH)}internal/error.h
-numeric.$(OBJEXT): {$(VPATH)}internal/eval.h
-numeric.$(OBJEXT): {$(VPATH)}internal/event.h
-numeric.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-numeric.$(OBJEXT): {$(VPATH)}internal/gc.h
-numeric.$(OBJEXT): {$(VPATH)}internal/glob.h
-numeric.$(OBJEXT): {$(VPATH)}internal/globals.h
-numeric.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-numeric.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-numeric.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-numeric.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-numeric.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-numeric.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-numeric.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-numeric.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-numeric.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-numeric.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-numeric.$(OBJEXT): {$(VPATH)}internal/iterator.h
-numeric.$(OBJEXT): {$(VPATH)}internal/memory.h
-numeric.$(OBJEXT): {$(VPATH)}internal/method.h
-numeric.$(OBJEXT): {$(VPATH)}internal/module.h
-numeric.$(OBJEXT): {$(VPATH)}internal/newobj.h
-numeric.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-numeric.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-numeric.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-numeric.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-numeric.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-numeric.$(OBJEXT): {$(VPATH)}internal/symbol.h
-numeric.$(OBJEXT): {$(VPATH)}internal/value.h
-numeric.$(OBJEXT): {$(VPATH)}internal/value_type.h
-numeric.$(OBJEXT): {$(VPATH)}internal/variable.h
-numeric.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-numeric.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-numeric.$(OBJEXT): {$(VPATH)}method.h
+numeric.$(OBJEXT): {$(VPATH)}io.h
numeric.$(OBJEXT): {$(VPATH)}missing.h
-numeric.$(OBJEXT): {$(VPATH)}node.h
numeric.$(OBJEXT): {$(VPATH)}numeric.c
-numeric.$(OBJEXT): {$(VPATH)}numeric.rbinc
numeric.$(OBJEXT): {$(VPATH)}onigmo.h
numeric.$(OBJEXT): {$(VPATH)}oniguruma.h
-numeric.$(OBJEXT): {$(VPATH)}ruby_assert.h
-numeric.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-numeric.$(OBJEXT): {$(VPATH)}shape.h
numeric.$(OBJEXT): {$(VPATH)}st.h
numeric.$(OBJEXT): {$(VPATH)}subst.h
-numeric.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-numeric.$(OBJEXT): {$(VPATH)}thread_native.h
numeric.$(OBJEXT): {$(VPATH)}util.h
-numeric.$(OBJEXT): {$(VPATH)}vm_core.h
-numeric.$(OBJEXT): {$(VPATH)}vm_opts.h
-object.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-object.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-object.$(OBJEXT): $(CCAN_DIR)/list/list.h
-object.$(OBJEXT): $(CCAN_DIR)/str/str.h
object.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-object.$(OBJEXT): $(top_srcdir)/internal/array.h
-object.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-object.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-object.$(OBJEXT): $(top_srcdir)/internal/bits.h
-object.$(OBJEXT): $(top_srcdir)/internal/class.h
-object.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-object.$(OBJEXT): $(top_srcdir)/internal/error.h
-object.$(OBJEXT): $(top_srcdir)/internal/eval.h
-object.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-object.$(OBJEXT): $(top_srcdir)/internal/gc.h
-object.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-object.$(OBJEXT): $(top_srcdir)/internal/inits.h
-object.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-object.$(OBJEXT): $(top_srcdir)/internal/object.h
-object.$(OBJEXT): $(top_srcdir)/internal/serial.h
-object.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-object.$(OBJEXT): $(top_srcdir)/internal/string.h
-object.$(OBJEXT): $(top_srcdir)/internal/struct.h
-object.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-object.$(OBJEXT): $(top_srcdir)/internal/variable.h
-object.$(OBJEXT): $(top_srcdir)/internal/vm.h
-object.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-object.$(OBJEXT): {$(VPATH)}assert.h
-object.$(OBJEXT): {$(VPATH)}atomic.h
-object.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-object.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-object.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-object.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-object.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-object.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-object.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-object.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-object.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-object.$(OBJEXT): {$(VPATH)}builtin.h
+object.$(OBJEXT): $(top_srcdir)/include/ruby.h
object.$(OBJEXT): {$(VPATH)}config.h
object.$(OBJEXT): {$(VPATH)}constant.h
object.$(OBJEXT): {$(VPATH)}defines.h
object.$(OBJEXT): {$(VPATH)}encoding.h
object.$(OBJEXT): {$(VPATH)}id.h
-object.$(OBJEXT): {$(VPATH)}id_table.h
object.$(OBJEXT): {$(VPATH)}intern.h
object.$(OBJEXT): {$(VPATH)}internal.h
-object.$(OBJEXT): {$(VPATH)}internal/abi.h
-object.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-object.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-object.$(OBJEXT): {$(VPATH)}internal/assume.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-object.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-object.$(OBJEXT): {$(VPATH)}internal/cast.h
-object.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-object.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-object.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-object.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-object.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-object.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-object.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-object.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-object.$(OBJEXT): {$(VPATH)}internal/config.h
-object.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-object.$(OBJEXT): {$(VPATH)}internal/core.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-object.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-object.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-object.$(OBJEXT): {$(VPATH)}internal/ctype.h
-object.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-object.$(OBJEXT): {$(VPATH)}internal/dosish.h
-object.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-object.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-object.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-object.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-object.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-object.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-object.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-object.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-object.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-object.$(OBJEXT): {$(VPATH)}internal/error.h
-object.$(OBJEXT): {$(VPATH)}internal/eval.h
-object.$(OBJEXT): {$(VPATH)}internal/event.h
-object.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-object.$(OBJEXT): {$(VPATH)}internal/gc.h
-object.$(OBJEXT): {$(VPATH)}internal/glob.h
-object.$(OBJEXT): {$(VPATH)}internal/globals.h
-object.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-object.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-object.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-object.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-object.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-object.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-object.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-object.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-object.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-object.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-object.$(OBJEXT): {$(VPATH)}internal/iterator.h
-object.$(OBJEXT): {$(VPATH)}internal/memory.h
-object.$(OBJEXT): {$(VPATH)}internal/method.h
-object.$(OBJEXT): {$(VPATH)}internal/module.h
-object.$(OBJEXT): {$(VPATH)}internal/newobj.h
-object.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-object.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-object.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-object.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-object.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-object.$(OBJEXT): {$(VPATH)}internal/symbol.h
-object.$(OBJEXT): {$(VPATH)}internal/value.h
-object.$(OBJEXT): {$(VPATH)}internal/value_type.h
-object.$(OBJEXT): {$(VPATH)}internal/variable.h
-object.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-object.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-object.$(OBJEXT): {$(VPATH)}kernel.rbinc
-object.$(OBJEXT): {$(VPATH)}method.h
+object.$(OBJEXT): {$(VPATH)}io.h
object.$(OBJEXT): {$(VPATH)}missing.h
-object.$(OBJEXT): {$(VPATH)}nilclass.rbinc
-object.$(OBJEXT): {$(VPATH)}node.h
object.$(OBJEXT): {$(VPATH)}object.c
object.$(OBJEXT): {$(VPATH)}onigmo.h
object.$(OBJEXT): {$(VPATH)}oniguruma.h
object.$(OBJEXT): {$(VPATH)}probes.dmyh
object.$(OBJEXT): {$(VPATH)}probes.h
-object.$(OBJEXT): {$(VPATH)}ruby_assert.h
-object.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-object.$(OBJEXT): {$(VPATH)}shape.h
object.$(OBJEXT): {$(VPATH)}st.h
object.$(OBJEXT): {$(VPATH)}subst.h
-object.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-object.$(OBJEXT): {$(VPATH)}thread_native.h
object.$(OBJEXT): {$(VPATH)}util.h
-object.$(OBJEXT): {$(VPATH)}variable.h
-object.$(OBJEXT): {$(VPATH)}vm_core.h
-object.$(OBJEXT): {$(VPATH)}vm_opts.h
-pack.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-pack.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-pack.$(OBJEXT): $(CCAN_DIR)/list/list.h
-pack.$(OBJEXT): $(CCAN_DIR)/str/str.h
pack.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-pack.$(OBJEXT): $(top_srcdir)/internal/array.h
-pack.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-pack.$(OBJEXT): $(top_srcdir)/internal/bits.h
-pack.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-pack.$(OBJEXT): $(top_srcdir)/internal/gc.h
-pack.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-pack.$(OBJEXT): $(top_srcdir)/internal/serial.h
-pack.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-pack.$(OBJEXT): $(top_srcdir)/internal/string.h
-pack.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-pack.$(OBJEXT): $(top_srcdir)/internal/variable.h
-pack.$(OBJEXT): $(top_srcdir)/internal/vm.h
-pack.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-pack.$(OBJEXT): {$(VPATH)}assert.h
-pack.$(OBJEXT): {$(VPATH)}atomic.h
-pack.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-pack.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-pack.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-pack.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-pack.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-pack.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-pack.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-pack.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-pack.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-pack.$(OBJEXT): {$(VPATH)}builtin.h
+pack.$(OBJEXT): $(top_srcdir)/include/ruby.h
pack.$(OBJEXT): {$(VPATH)}config.h
-pack.$(OBJEXT): {$(VPATH)}constant.h
pack.$(OBJEXT): {$(VPATH)}defines.h
pack.$(OBJEXT): {$(VPATH)}encoding.h
-pack.$(OBJEXT): {$(VPATH)}id.h
-pack.$(OBJEXT): {$(VPATH)}id_table.h
pack.$(OBJEXT): {$(VPATH)}intern.h
pack.$(OBJEXT): {$(VPATH)}internal.h
-pack.$(OBJEXT): {$(VPATH)}internal/abi.h
-pack.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-pack.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-pack.$(OBJEXT): {$(VPATH)}internal/assume.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-pack.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-pack.$(OBJEXT): {$(VPATH)}internal/cast.h
-pack.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-pack.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-pack.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-pack.$(OBJEXT): {$(VPATH)}internal/config.h
-pack.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-pack.$(OBJEXT): {$(VPATH)}internal/core.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-pack.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-pack.$(OBJEXT): {$(VPATH)}internal/ctype.h
-pack.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-pack.$(OBJEXT): {$(VPATH)}internal/dosish.h
-pack.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-pack.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-pack.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-pack.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-pack.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-pack.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-pack.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-pack.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-pack.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-pack.$(OBJEXT): {$(VPATH)}internal/error.h
-pack.$(OBJEXT): {$(VPATH)}internal/eval.h
-pack.$(OBJEXT): {$(VPATH)}internal/event.h
-pack.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-pack.$(OBJEXT): {$(VPATH)}internal/gc.h
-pack.$(OBJEXT): {$(VPATH)}internal/glob.h
-pack.$(OBJEXT): {$(VPATH)}internal/globals.h
-pack.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-pack.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-pack.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-pack.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-pack.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-pack.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-pack.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-pack.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-pack.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-pack.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-pack.$(OBJEXT): {$(VPATH)}internal/iterator.h
-pack.$(OBJEXT): {$(VPATH)}internal/memory.h
-pack.$(OBJEXT): {$(VPATH)}internal/method.h
-pack.$(OBJEXT): {$(VPATH)}internal/module.h
-pack.$(OBJEXT): {$(VPATH)}internal/newobj.h
-pack.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-pack.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-pack.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-pack.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-pack.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-pack.$(OBJEXT): {$(VPATH)}internal/symbol.h
-pack.$(OBJEXT): {$(VPATH)}internal/value.h
-pack.$(OBJEXT): {$(VPATH)}internal/value_type.h
-pack.$(OBJEXT): {$(VPATH)}internal/variable.h
-pack.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-pack.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-pack.$(OBJEXT): {$(VPATH)}method.h
+pack.$(OBJEXT): {$(VPATH)}io.h
pack.$(OBJEXT): {$(VPATH)}missing.h
-pack.$(OBJEXT): {$(VPATH)}node.h
pack.$(OBJEXT): {$(VPATH)}onigmo.h
pack.$(OBJEXT): {$(VPATH)}oniguruma.h
pack.$(OBJEXT): {$(VPATH)}pack.c
-pack.$(OBJEXT): {$(VPATH)}pack.rbinc
-pack.$(OBJEXT): {$(VPATH)}ruby_assert.h
-pack.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-pack.$(OBJEXT): {$(VPATH)}shape.h
pack.$(OBJEXT): {$(VPATH)}st.h
pack.$(OBJEXT): {$(VPATH)}subst.h
-pack.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-pack.$(OBJEXT): {$(VPATH)}thread_native.h
-pack.$(OBJEXT): {$(VPATH)}util.h
-pack.$(OBJEXT): {$(VPATH)}vm_core.h
-pack.$(OBJEXT): {$(VPATH)}vm_opts.h
-parse.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-parse.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-parse.$(OBJEXT): $(CCAN_DIR)/list/list.h
-parse.$(OBJEXT): $(CCAN_DIR)/str/str.h
-parse.$(OBJEXT): $(hdrdir)/ruby.h
parse.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-parse.$(OBJEXT): $(top_srcdir)/internal/array.h
-parse.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-parse.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-parse.$(OBJEXT): $(top_srcdir)/internal/bits.h
-parse.$(OBJEXT): $(top_srcdir)/internal/compile.h
-parse.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-parse.$(OBJEXT): $(top_srcdir)/internal/complex.h
-parse.$(OBJEXT): $(top_srcdir)/internal/encoding.h
-parse.$(OBJEXT): $(top_srcdir)/internal/error.h
-parse.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-parse.$(OBJEXT): $(top_srcdir)/internal/gc.h
-parse.$(OBJEXT): $(top_srcdir)/internal/hash.h
-parse.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-parse.$(OBJEXT): $(top_srcdir)/internal/io.h
-parse.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-parse.$(OBJEXT): $(top_srcdir)/internal/parse.h
-parse.$(OBJEXT): $(top_srcdir)/internal/rational.h
-parse.$(OBJEXT): $(top_srcdir)/internal/re.h
-parse.$(OBJEXT): $(top_srcdir)/internal/serial.h
-parse.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-parse.$(OBJEXT): $(top_srcdir)/internal/string.h
-parse.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-parse.$(OBJEXT): $(top_srcdir)/internal/thread.h
-parse.$(OBJEXT): $(top_srcdir)/internal/variable.h
-parse.$(OBJEXT): $(top_srcdir)/internal/vm.h
-parse.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-parse.$(OBJEXT): {$(VPATH)}assert.h
-parse.$(OBJEXT): {$(VPATH)}atomic.h
-parse.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-parse.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-parse.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-parse.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-parse.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-parse.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-parse.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-parse.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-parse.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+parse.$(OBJEXT): $(top_srcdir)/include/ruby.h
parse.$(OBJEXT): {$(VPATH)}config.h
-parse.$(OBJEXT): {$(VPATH)}constant.h
parse.$(OBJEXT): {$(VPATH)}defines.h
parse.$(OBJEXT): {$(VPATH)}defs/keywords
parse.$(OBJEXT): {$(VPATH)}encoding.h
parse.$(OBJEXT): {$(VPATH)}id.h
-parse.$(OBJEXT): {$(VPATH)}id_table.h
parse.$(OBJEXT): {$(VPATH)}intern.h
parse.$(OBJEXT): {$(VPATH)}internal.h
-parse.$(OBJEXT): {$(VPATH)}internal/abi.h
-parse.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-parse.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-parse.$(OBJEXT): {$(VPATH)}internal/assume.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-parse.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-parse.$(OBJEXT): {$(VPATH)}internal/cast.h
-parse.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-parse.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-parse.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-parse.$(OBJEXT): {$(VPATH)}internal/config.h
-parse.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-parse.$(OBJEXT): {$(VPATH)}internal/core.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-parse.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-parse.$(OBJEXT): {$(VPATH)}internal/ctype.h
-parse.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-parse.$(OBJEXT): {$(VPATH)}internal/dosish.h
-parse.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-parse.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-parse.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-parse.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-parse.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-parse.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-parse.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-parse.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-parse.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-parse.$(OBJEXT): {$(VPATH)}internal/error.h
-parse.$(OBJEXT): {$(VPATH)}internal/eval.h
-parse.$(OBJEXT): {$(VPATH)}internal/event.h
-parse.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-parse.$(OBJEXT): {$(VPATH)}internal/gc.h
-parse.$(OBJEXT): {$(VPATH)}internal/glob.h
-parse.$(OBJEXT): {$(VPATH)}internal/globals.h
-parse.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-parse.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-parse.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-parse.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-parse.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-parse.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-parse.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-parse.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-parse.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-parse.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-parse.$(OBJEXT): {$(VPATH)}internal/iterator.h
-parse.$(OBJEXT): {$(VPATH)}internal/memory.h
-parse.$(OBJEXT): {$(VPATH)}internal/method.h
-parse.$(OBJEXT): {$(VPATH)}internal/module.h
-parse.$(OBJEXT): {$(VPATH)}internal/newobj.h
-parse.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-parse.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-parse.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-parse.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-parse.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-parse.$(OBJEXT): {$(VPATH)}internal/symbol.h
-parse.$(OBJEXT): {$(VPATH)}internal/value.h
-parse.$(OBJEXT): {$(VPATH)}internal/value_type.h
-parse.$(OBJEXT): {$(VPATH)}internal/variable.h
-parse.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-parse.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
parse.$(OBJEXT): {$(VPATH)}io.h
parse.$(OBJEXT): {$(VPATH)}lex.c
-parse.$(OBJEXT): {$(VPATH)}method.h
parse.$(OBJEXT): {$(VPATH)}missing.h
parse.$(OBJEXT): {$(VPATH)}node.h
parse.$(OBJEXT): {$(VPATH)}onigmo.h
@@ -10750,210 +2197,58 @@ parse.$(OBJEXT): {$(VPATH)}parse.h
parse.$(OBJEXT): {$(VPATH)}parse.y
parse.$(OBJEXT): {$(VPATH)}probes.dmyh
parse.$(OBJEXT): {$(VPATH)}probes.h
-parse.$(OBJEXT): {$(VPATH)}ractor.h
parse.$(OBJEXT): {$(VPATH)}regenc.h
parse.$(OBJEXT): {$(VPATH)}regex.h
-parse.$(OBJEXT): {$(VPATH)}ruby_assert.h
-parse.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-parse.$(OBJEXT): {$(VPATH)}shape.h
parse.$(OBJEXT): {$(VPATH)}st.h
parse.$(OBJEXT): {$(VPATH)}subst.h
parse.$(OBJEXT): {$(VPATH)}symbol.h
-parse.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-parse.$(OBJEXT): {$(VPATH)}thread_native.h
parse.$(OBJEXT): {$(VPATH)}util.h
-parse.$(OBJEXT): {$(VPATH)}vm_core.h
-parse.$(OBJEXT): {$(VPATH)}vm_opts.h
+prelude.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+prelude.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+prelude.$(OBJEXT): $(CCAN_DIR)/list/list.h
+prelude.$(OBJEXT): $(CCAN_DIR)/str/str.h
+prelude.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+prelude.$(OBJEXT): $(hdrdir)/ruby/version.h
+prelude.$(OBJEXT): $(top_srcdir)/include/ruby.h
+prelude.$(OBJEXT): {$(VPATH)}config.h
+prelude.$(OBJEXT): {$(VPATH)}defines.h
+prelude.$(OBJEXT): {$(VPATH)}encoding.h
+prelude.$(OBJEXT): {$(VPATH)}id.h
+prelude.$(OBJEXT): {$(VPATH)}intern.h
+prelude.$(OBJEXT): {$(VPATH)}internal.h
+prelude.$(OBJEXT): {$(VPATH)}io.h
+prelude.$(OBJEXT): {$(VPATH)}iseq.h
+prelude.$(OBJEXT): {$(VPATH)}method.h
+prelude.$(OBJEXT): {$(VPATH)}missing.h
+prelude.$(OBJEXT): {$(VPATH)}node.h
+prelude.$(OBJEXT): {$(VPATH)}onigmo.h
+prelude.$(OBJEXT): {$(VPATH)}oniguruma.h
+prelude.$(OBJEXT): {$(VPATH)}prelude.c
+prelude.$(OBJEXT): {$(VPATH)}ruby_assert.h
+prelude.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+prelude.$(OBJEXT): {$(VPATH)}st.h
+prelude.$(OBJEXT): {$(VPATH)}subst.h
+prelude.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+prelude.$(OBJEXT): {$(VPATH)}thread_native.h
+prelude.$(OBJEXT): {$(VPATH)}vm_core.h
+prelude.$(OBJEXT): {$(VPATH)}vm_debug.h
+prelude.$(OBJEXT): {$(VPATH)}vm_opts.h
proc.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
proc.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
proc.$(OBJEXT): $(CCAN_DIR)/list/list.h
proc.$(OBJEXT): $(CCAN_DIR)/str/str.h
proc.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-proc.$(OBJEXT): $(top_srcdir)/internal/array.h
-proc.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-proc.$(OBJEXT): $(top_srcdir)/internal/class.h
-proc.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-proc.$(OBJEXT): $(top_srcdir)/internal/error.h
-proc.$(OBJEXT): $(top_srcdir)/internal/eval.h
-proc.$(OBJEXT): $(top_srcdir)/internal/gc.h
-proc.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-proc.$(OBJEXT): $(top_srcdir)/internal/object.h
-proc.$(OBJEXT): $(top_srcdir)/internal/proc.h
-proc.$(OBJEXT): $(top_srcdir)/internal/serial.h
-proc.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-proc.$(OBJEXT): $(top_srcdir)/internal/string.h
-proc.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-proc.$(OBJEXT): $(top_srcdir)/internal/variable.h
-proc.$(OBJEXT): $(top_srcdir)/internal/vm.h
-proc.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-proc.$(OBJEXT): {$(VPATH)}assert.h
-proc.$(OBJEXT): {$(VPATH)}atomic.h
-proc.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-proc.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-proc.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-proc.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-proc.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-proc.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-proc.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-proc.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-proc.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+proc.$(OBJEXT): $(hdrdir)/ruby/version.h
+proc.$(OBJEXT): $(top_srcdir)/include/ruby.h
proc.$(OBJEXT): {$(VPATH)}config.h
-proc.$(OBJEXT): {$(VPATH)}constant.h
proc.$(OBJEXT): {$(VPATH)}defines.h
proc.$(OBJEXT): {$(VPATH)}encoding.h
proc.$(OBJEXT): {$(VPATH)}eval_intern.h
+proc.$(OBJEXT): {$(VPATH)}gc.h
proc.$(OBJEXT): {$(VPATH)}id.h
-proc.$(OBJEXT): {$(VPATH)}id_table.h
proc.$(OBJEXT): {$(VPATH)}intern.h
proc.$(OBJEXT): {$(VPATH)}internal.h
-proc.$(OBJEXT): {$(VPATH)}internal/abi.h
-proc.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-proc.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-proc.$(OBJEXT): {$(VPATH)}internal/assume.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-proc.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-proc.$(OBJEXT): {$(VPATH)}internal/cast.h
-proc.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-proc.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-proc.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-proc.$(OBJEXT): {$(VPATH)}internal/config.h
-proc.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-proc.$(OBJEXT): {$(VPATH)}internal/core.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-proc.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-proc.$(OBJEXT): {$(VPATH)}internal/ctype.h
-proc.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-proc.$(OBJEXT): {$(VPATH)}internal/dosish.h
-proc.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-proc.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-proc.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-proc.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-proc.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-proc.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-proc.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-proc.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-proc.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-proc.$(OBJEXT): {$(VPATH)}internal/error.h
-proc.$(OBJEXT): {$(VPATH)}internal/eval.h
-proc.$(OBJEXT): {$(VPATH)}internal/event.h
-proc.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-proc.$(OBJEXT): {$(VPATH)}internal/gc.h
-proc.$(OBJEXT): {$(VPATH)}internal/glob.h
-proc.$(OBJEXT): {$(VPATH)}internal/globals.h
-proc.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-proc.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-proc.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-proc.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-proc.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-proc.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-proc.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-proc.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-proc.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-proc.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-proc.$(OBJEXT): {$(VPATH)}internal/iterator.h
-proc.$(OBJEXT): {$(VPATH)}internal/memory.h
-proc.$(OBJEXT): {$(VPATH)}internal/method.h
-proc.$(OBJEXT): {$(VPATH)}internal/module.h
-proc.$(OBJEXT): {$(VPATH)}internal/newobj.h
-proc.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-proc.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-proc.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-proc.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-proc.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-proc.$(OBJEXT): {$(VPATH)}internal/symbol.h
-proc.$(OBJEXT): {$(VPATH)}internal/value.h
-proc.$(OBJEXT): {$(VPATH)}internal/value_type.h
-proc.$(OBJEXT): {$(VPATH)}internal/variable.h
-proc.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-proc.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+proc.$(OBJEXT): {$(VPATH)}io.h
proc.$(OBJEXT): {$(VPATH)}iseq.h
proc.$(OBJEXT): {$(VPATH)}method.h
proc.$(OBJEXT): {$(VPATH)}missing.h
@@ -10963,215 +2258,26 @@ proc.$(OBJEXT): {$(VPATH)}oniguruma.h
proc.$(OBJEXT): {$(VPATH)}proc.c
proc.$(OBJEXT): {$(VPATH)}ruby_assert.h
proc.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-proc.$(OBJEXT): {$(VPATH)}shape.h
proc.$(OBJEXT): {$(VPATH)}st.h
proc.$(OBJEXT): {$(VPATH)}subst.h
proc.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
proc.$(OBJEXT): {$(VPATH)}thread_native.h
proc.$(OBJEXT): {$(VPATH)}vm_core.h
+proc.$(OBJEXT): {$(VPATH)}vm_debug.h
proc.$(OBJEXT): {$(VPATH)}vm_opts.h
-proc.$(OBJEXT): {$(VPATH)}yjit.h
process.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
process.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
process.$(OBJEXT): $(CCAN_DIR)/list/list.h
process.$(OBJEXT): $(CCAN_DIR)/str/str.h
-process.$(OBJEXT): $(hdrdir)/ruby.h
process.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-process.$(OBJEXT): $(top_srcdir)/internal/array.h
-process.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-process.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-process.$(OBJEXT): $(top_srcdir)/internal/bits.h
-process.$(OBJEXT): $(top_srcdir)/internal/class.h
-process.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-process.$(OBJEXT): $(top_srcdir)/internal/dir.h
-process.$(OBJEXT): $(top_srcdir)/internal/error.h
-process.$(OBJEXT): $(top_srcdir)/internal/eval.h
-process.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-process.$(OBJEXT): $(top_srcdir)/internal/gc.h
-process.$(OBJEXT): $(top_srcdir)/internal/hash.h
-process.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-process.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-process.$(OBJEXT): $(top_srcdir)/internal/object.h
-process.$(OBJEXT): $(top_srcdir)/internal/process.h
-process.$(OBJEXT): $(top_srcdir)/internal/serial.h
-process.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-process.$(OBJEXT): $(top_srcdir)/internal/string.h
-process.$(OBJEXT): $(top_srcdir)/internal/thread.h
-process.$(OBJEXT): $(top_srcdir)/internal/time.h
-process.$(OBJEXT): $(top_srcdir)/internal/variable.h
-process.$(OBJEXT): $(top_srcdir)/internal/vm.h
-process.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-process.$(OBJEXT): {$(VPATH)}assert.h
-process.$(OBJEXT): {$(VPATH)}atomic.h
-process.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-process.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-process.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-process.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-process.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-process.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-process.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-process.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-process.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+process.$(OBJEXT): $(top_srcdir)/include/ruby.h
process.$(OBJEXT): {$(VPATH)}config.h
-process.$(OBJEXT): {$(VPATH)}constant.h
-process.$(OBJEXT): {$(VPATH)}debug_counter.h
process.$(OBJEXT): {$(VPATH)}defines.h
process.$(OBJEXT): {$(VPATH)}dln.h
process.$(OBJEXT): {$(VPATH)}encoding.h
-process.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
-process.$(OBJEXT): {$(VPATH)}hrtime.h
process.$(OBJEXT): {$(VPATH)}id.h
-process.$(OBJEXT): {$(VPATH)}id_table.h
process.$(OBJEXT): {$(VPATH)}intern.h
process.$(OBJEXT): {$(VPATH)}internal.h
-process.$(OBJEXT): {$(VPATH)}internal/abi.h
-process.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-process.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-process.$(OBJEXT): {$(VPATH)}internal/assume.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-process.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-process.$(OBJEXT): {$(VPATH)}internal/cast.h
-process.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-process.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-process.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-process.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-process.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-process.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-process.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-process.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-process.$(OBJEXT): {$(VPATH)}internal/config.h
-process.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-process.$(OBJEXT): {$(VPATH)}internal/core.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-process.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-process.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-process.$(OBJEXT): {$(VPATH)}internal/ctype.h
-process.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-process.$(OBJEXT): {$(VPATH)}internal/dosish.h
-process.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-process.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-process.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-process.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-process.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-process.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-process.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-process.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-process.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-process.$(OBJEXT): {$(VPATH)}internal/error.h
-process.$(OBJEXT): {$(VPATH)}internal/eval.h
-process.$(OBJEXT): {$(VPATH)}internal/event.h
-process.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-process.$(OBJEXT): {$(VPATH)}internal/gc.h
-process.$(OBJEXT): {$(VPATH)}internal/glob.h
-process.$(OBJEXT): {$(VPATH)}internal/globals.h
-process.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-process.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-process.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-process.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-process.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-process.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-process.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-process.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-process.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-process.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-process.$(OBJEXT): {$(VPATH)}internal/iterator.h
-process.$(OBJEXT): {$(VPATH)}internal/memory.h
-process.$(OBJEXT): {$(VPATH)}internal/method.h
-process.$(OBJEXT): {$(VPATH)}internal/module.h
-process.$(OBJEXT): {$(VPATH)}internal/newobj.h
-process.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-process.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-process.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-process.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-process.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-process.$(OBJEXT): {$(VPATH)}internal/symbol.h
-process.$(OBJEXT): {$(VPATH)}internal/value.h
-process.$(OBJEXT): {$(VPATH)}internal/value_type.h
-process.$(OBJEXT): {$(VPATH)}internal/variable.h
-process.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-process.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
process.$(OBJEXT): {$(VPATH)}io.h
process.$(OBJEXT): {$(VPATH)}method.h
process.$(OBJEXT): {$(VPATH)}missing.h
@@ -11179,11 +2285,8 @@ process.$(OBJEXT): {$(VPATH)}node.h
process.$(OBJEXT): {$(VPATH)}onigmo.h
process.$(OBJEXT): {$(VPATH)}oniguruma.h
process.$(OBJEXT): {$(VPATH)}process.c
-process.$(OBJEXT): {$(VPATH)}ractor.h
-process.$(OBJEXT): {$(VPATH)}rjit.h
process.$(OBJEXT): {$(VPATH)}ruby_assert.h
process.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-process.$(OBJEXT): {$(VPATH)}shape.h
process.$(OBJEXT): {$(VPATH)}st.h
process.$(OBJEXT): {$(VPATH)}subst.h
process.$(OBJEXT): {$(VPATH)}thread.h
@@ -11191,1007 +2294,66 @@ process.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
process.$(OBJEXT): {$(VPATH)}thread_native.h
process.$(OBJEXT): {$(VPATH)}util.h
process.$(OBJEXT): {$(VPATH)}vm_core.h
+process.$(OBJEXT): {$(VPATH)}vm_debug.h
process.$(OBJEXT): {$(VPATH)}vm_opts.h
-ractor.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-ractor.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-ractor.$(OBJEXT): $(CCAN_DIR)/list/list.h
-ractor.$(OBJEXT): $(CCAN_DIR)/str/str.h
-ractor.$(OBJEXT): $(hdrdir)/ruby.h
-ractor.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/array.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/bits.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/complex.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/error.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/gc.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/hash.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/rational.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/serial.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/string.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/struct.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/thread.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/variable.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/vm.h
-ractor.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-ractor.$(OBJEXT): {$(VPATH)}assert.h
-ractor.$(OBJEXT): {$(VPATH)}atomic.h
-ractor.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-ractor.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-ractor.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-ractor.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-ractor.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-ractor.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-ractor.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-ractor.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-ractor.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-ractor.$(OBJEXT): {$(VPATH)}builtin.h
-ractor.$(OBJEXT): {$(VPATH)}config.h
-ractor.$(OBJEXT): {$(VPATH)}constant.h
-ractor.$(OBJEXT): {$(VPATH)}debug_counter.h
-ractor.$(OBJEXT): {$(VPATH)}defines.h
-ractor.$(OBJEXT): {$(VPATH)}encoding.h
-ractor.$(OBJEXT): {$(VPATH)}eval_intern.h
-ractor.$(OBJEXT): {$(VPATH)}id.h
-ractor.$(OBJEXT): {$(VPATH)}id_table.h
-ractor.$(OBJEXT): {$(VPATH)}intern.h
-ractor.$(OBJEXT): {$(VPATH)}internal.h
-ractor.$(OBJEXT): {$(VPATH)}internal/abi.h
-ractor.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-ractor.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-ractor.$(OBJEXT): {$(VPATH)}internal/assume.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-ractor.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-ractor.$(OBJEXT): {$(VPATH)}internal/cast.h
-ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-ractor.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-ractor.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-ractor.$(OBJEXT): {$(VPATH)}internal/config.h
-ractor.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-ractor.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-ractor.$(OBJEXT): {$(VPATH)}internal/ctype.h
-ractor.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-ractor.$(OBJEXT): {$(VPATH)}internal/dosish.h
-ractor.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-ractor.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-ractor.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-ractor.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-ractor.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-ractor.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-ractor.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-ractor.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-ractor.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-ractor.$(OBJEXT): {$(VPATH)}internal/error.h
-ractor.$(OBJEXT): {$(VPATH)}internal/eval.h
-ractor.$(OBJEXT): {$(VPATH)}internal/event.h
-ractor.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-ractor.$(OBJEXT): {$(VPATH)}internal/gc.h
-ractor.$(OBJEXT): {$(VPATH)}internal/glob.h
-ractor.$(OBJEXT): {$(VPATH)}internal/globals.h
-ractor.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-ractor.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-ractor.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-ractor.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-ractor.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-ractor.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-ractor.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-ractor.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-ractor.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-ractor.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-ractor.$(OBJEXT): {$(VPATH)}internal/iterator.h
-ractor.$(OBJEXT): {$(VPATH)}internal/memory.h
-ractor.$(OBJEXT): {$(VPATH)}internal/method.h
-ractor.$(OBJEXT): {$(VPATH)}internal/module.h
-ractor.$(OBJEXT): {$(VPATH)}internal/newobj.h
-ractor.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-ractor.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-ractor.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-ractor.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-ractor.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-ractor.$(OBJEXT): {$(VPATH)}internal/symbol.h
-ractor.$(OBJEXT): {$(VPATH)}internal/value.h
-ractor.$(OBJEXT): {$(VPATH)}internal/value_type.h
-ractor.$(OBJEXT): {$(VPATH)}internal/variable.h
-ractor.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-ractor.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-ractor.$(OBJEXT): {$(VPATH)}method.h
-ractor.$(OBJEXT): {$(VPATH)}missing.h
-ractor.$(OBJEXT): {$(VPATH)}node.h
-ractor.$(OBJEXT): {$(VPATH)}onigmo.h
-ractor.$(OBJEXT): {$(VPATH)}oniguruma.h
-ractor.$(OBJEXT): {$(VPATH)}ractor.c
-ractor.$(OBJEXT): {$(VPATH)}ractor.h
-ractor.$(OBJEXT): {$(VPATH)}ractor.rbinc
-ractor.$(OBJEXT): {$(VPATH)}ractor_core.h
-ractor.$(OBJEXT): {$(VPATH)}rjit.h
-ractor.$(OBJEXT): {$(VPATH)}ruby_assert.h
-ractor.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-ractor.$(OBJEXT): {$(VPATH)}shape.h
-ractor.$(OBJEXT): {$(VPATH)}st.h
-ractor.$(OBJEXT): {$(VPATH)}subst.h
-ractor.$(OBJEXT): {$(VPATH)}thread.h
-ractor.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-ractor.$(OBJEXT): {$(VPATH)}thread_native.h
-ractor.$(OBJEXT): {$(VPATH)}transient_heap.h
-ractor.$(OBJEXT): {$(VPATH)}variable.h
-ractor.$(OBJEXT): {$(VPATH)}vm_core.h
-ractor.$(OBJEXT): {$(VPATH)}vm_debug.h
-ractor.$(OBJEXT): {$(VPATH)}vm_opts.h
-ractor.$(OBJEXT): {$(VPATH)}vm_sync.h
-ractor.$(OBJEXT): {$(VPATH)}yjit.h
-random.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-random.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-random.$(OBJEXT): $(CCAN_DIR)/list/list.h
-random.$(OBJEXT): $(CCAN_DIR)/str/str.h
random.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-random.$(OBJEXT): $(top_srcdir)/internal/array.h
-random.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-random.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-random.$(OBJEXT): $(top_srcdir)/internal/bits.h
-random.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-random.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-random.$(OBJEXT): $(top_srcdir)/internal/gc.h
-random.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-random.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-random.$(OBJEXT): $(top_srcdir)/internal/random.h
-random.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-random.$(OBJEXT): $(top_srcdir)/internal/serial.h
-random.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-random.$(OBJEXT): $(top_srcdir)/internal/variable.h
-random.$(OBJEXT): $(top_srcdir)/internal/vm.h
-random.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-random.$(OBJEXT): {$(VPATH)}assert.h
-random.$(OBJEXT): {$(VPATH)}atomic.h
-random.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-random.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-random.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-random.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-random.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-random.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-random.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-random.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-random.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+random.$(OBJEXT): $(top_srcdir)/include/ruby.h
random.$(OBJEXT): {$(VPATH)}config.h
-random.$(OBJEXT): {$(VPATH)}constant.h
random.$(OBJEXT): {$(VPATH)}defines.h
-random.$(OBJEXT): {$(VPATH)}id.h
-random.$(OBJEXT): {$(VPATH)}id_table.h
+random.$(OBJEXT): {$(VPATH)}encoding.h
random.$(OBJEXT): {$(VPATH)}intern.h
random.$(OBJEXT): {$(VPATH)}internal.h
-random.$(OBJEXT): {$(VPATH)}internal/abi.h
-random.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-random.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-random.$(OBJEXT): {$(VPATH)}internal/assume.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-random.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-random.$(OBJEXT): {$(VPATH)}internal/cast.h
-random.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-random.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-random.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-random.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-random.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-random.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-random.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-random.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-random.$(OBJEXT): {$(VPATH)}internal/config.h
-random.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-random.$(OBJEXT): {$(VPATH)}internal/core.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-random.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-random.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-random.$(OBJEXT): {$(VPATH)}internal/ctype.h
-random.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-random.$(OBJEXT): {$(VPATH)}internal/dosish.h
-random.$(OBJEXT): {$(VPATH)}internal/error.h
-random.$(OBJEXT): {$(VPATH)}internal/eval.h
-random.$(OBJEXT): {$(VPATH)}internal/event.h
-random.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-random.$(OBJEXT): {$(VPATH)}internal/gc.h
-random.$(OBJEXT): {$(VPATH)}internal/glob.h
-random.$(OBJEXT): {$(VPATH)}internal/globals.h
-random.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-random.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-random.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-random.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-random.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-random.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-random.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-random.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-random.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-random.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-random.$(OBJEXT): {$(VPATH)}internal/iterator.h
-random.$(OBJEXT): {$(VPATH)}internal/memory.h
-random.$(OBJEXT): {$(VPATH)}internal/method.h
-random.$(OBJEXT): {$(VPATH)}internal/module.h
-random.$(OBJEXT): {$(VPATH)}internal/newobj.h
-random.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-random.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-random.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-random.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-random.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-random.$(OBJEXT): {$(VPATH)}internal/symbol.h
-random.$(OBJEXT): {$(VPATH)}internal/value.h
-random.$(OBJEXT): {$(VPATH)}internal/value_type.h
-random.$(OBJEXT): {$(VPATH)}internal/variable.h
-random.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-random.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-random.$(OBJEXT): {$(VPATH)}method.h
+random.$(OBJEXT): {$(VPATH)}io.h
random.$(OBJEXT): {$(VPATH)}missing.h
-random.$(OBJEXT): {$(VPATH)}mt19937.c
-random.$(OBJEXT): {$(VPATH)}node.h
-random.$(OBJEXT): {$(VPATH)}ractor.h
+random.$(OBJEXT): {$(VPATH)}onigmo.h
+random.$(OBJEXT): {$(VPATH)}oniguruma.h
random.$(OBJEXT): {$(VPATH)}random.c
-random.$(OBJEXT): {$(VPATH)}random.h
-random.$(OBJEXT): {$(VPATH)}ruby_assert.h
random.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-random.$(OBJEXT): {$(VPATH)}shape.h
random.$(OBJEXT): {$(VPATH)}siphash.c
random.$(OBJEXT): {$(VPATH)}siphash.h
random.$(OBJEXT): {$(VPATH)}st.h
random.$(OBJEXT): {$(VPATH)}subst.h
-random.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-random.$(OBJEXT): {$(VPATH)}thread_native.h
-random.$(OBJEXT): {$(VPATH)}vm_core.h
-random.$(OBJEXT): {$(VPATH)}vm_opts.h
range.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-range.$(OBJEXT): $(top_srcdir)/internal/array.h
-range.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-range.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-range.$(OBJEXT): $(top_srcdir)/internal/bits.h
-range.$(OBJEXT): $(top_srcdir)/internal/compar.h
-range.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-range.$(OBJEXT): $(top_srcdir)/internal/enum.h
-range.$(OBJEXT): $(top_srcdir)/internal/enumerator.h
-range.$(OBJEXT): $(top_srcdir)/internal/error.h
-range.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-range.$(OBJEXT): $(top_srcdir)/internal/gc.h
-range.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-range.$(OBJEXT): $(top_srcdir)/internal/range.h
-range.$(OBJEXT): $(top_srcdir)/internal/serial.h
-range.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-range.$(OBJEXT): $(top_srcdir)/internal/string.h
-range.$(OBJEXT): $(top_srcdir)/internal/struct.h
-range.$(OBJEXT): $(top_srcdir)/internal/vm.h
-range.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-range.$(OBJEXT): {$(VPATH)}assert.h
-range.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-range.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-range.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-range.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-range.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-range.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-range.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-range.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-range.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+range.$(OBJEXT): $(top_srcdir)/include/ruby.h
range.$(OBJEXT): {$(VPATH)}config.h
range.$(OBJEXT): {$(VPATH)}defines.h
range.$(OBJEXT): {$(VPATH)}encoding.h
range.$(OBJEXT): {$(VPATH)}id.h
range.$(OBJEXT): {$(VPATH)}intern.h
range.$(OBJEXT): {$(VPATH)}internal.h
-range.$(OBJEXT): {$(VPATH)}internal/abi.h
-range.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-range.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-range.$(OBJEXT): {$(VPATH)}internal/assume.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-range.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-range.$(OBJEXT): {$(VPATH)}internal/cast.h
-range.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-range.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-range.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-range.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-range.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-range.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-range.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-range.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-range.$(OBJEXT): {$(VPATH)}internal/config.h
-range.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-range.$(OBJEXT): {$(VPATH)}internal/core.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-range.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-range.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-range.$(OBJEXT): {$(VPATH)}internal/ctype.h
-range.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-range.$(OBJEXT): {$(VPATH)}internal/dosish.h
-range.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-range.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-range.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-range.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-range.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-range.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-range.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-range.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-range.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-range.$(OBJEXT): {$(VPATH)}internal/error.h
-range.$(OBJEXT): {$(VPATH)}internal/eval.h
-range.$(OBJEXT): {$(VPATH)}internal/event.h
-range.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-range.$(OBJEXT): {$(VPATH)}internal/gc.h
-range.$(OBJEXT): {$(VPATH)}internal/glob.h
-range.$(OBJEXT): {$(VPATH)}internal/globals.h
-range.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-range.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-range.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-range.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-range.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-range.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-range.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-range.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-range.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-range.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-range.$(OBJEXT): {$(VPATH)}internal/iterator.h
-range.$(OBJEXT): {$(VPATH)}internal/memory.h
-range.$(OBJEXT): {$(VPATH)}internal/method.h
-range.$(OBJEXT): {$(VPATH)}internal/module.h
-range.$(OBJEXT): {$(VPATH)}internal/newobj.h
-range.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-range.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-range.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-range.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-range.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-range.$(OBJEXT): {$(VPATH)}internal/symbol.h
-range.$(OBJEXT): {$(VPATH)}internal/value.h
-range.$(OBJEXT): {$(VPATH)}internal/value_type.h
-range.$(OBJEXT): {$(VPATH)}internal/variable.h
-range.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-range.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+range.$(OBJEXT): {$(VPATH)}io.h
range.$(OBJEXT): {$(VPATH)}missing.h
range.$(OBJEXT): {$(VPATH)}onigmo.h
range.$(OBJEXT): {$(VPATH)}oniguruma.h
range.$(OBJEXT): {$(VPATH)}range.c
-range.$(OBJEXT): {$(VPATH)}shape.h
range.$(OBJEXT): {$(VPATH)}st.h
range.$(OBJEXT): {$(VPATH)}subst.h
-rational.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-rational.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-rational.$(OBJEXT): $(CCAN_DIR)/list/list.h
-rational.$(OBJEXT): $(CCAN_DIR)/str/str.h
rational.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-rational.$(OBJEXT): $(top_srcdir)/internal/array.h
-rational.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-rational.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-rational.$(OBJEXT): $(top_srcdir)/internal/bits.h
-rational.$(OBJEXT): $(top_srcdir)/internal/class.h
-rational.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-rational.$(OBJEXT): $(top_srcdir)/internal/complex.h
-rational.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-rational.$(OBJEXT): $(top_srcdir)/internal/gc.h
-rational.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-rational.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-rational.$(OBJEXT): $(top_srcdir)/internal/object.h
-rational.$(OBJEXT): $(top_srcdir)/internal/rational.h
-rational.$(OBJEXT): $(top_srcdir)/internal/serial.h
-rational.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-rational.$(OBJEXT): $(top_srcdir)/internal/variable.h
-rational.$(OBJEXT): $(top_srcdir)/internal/vm.h
-rational.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-rational.$(OBJEXT): {$(VPATH)}assert.h
-rational.$(OBJEXT): {$(VPATH)}atomic.h
-rational.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-rational.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-rational.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-rational.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-rational.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-rational.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-rational.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-rational.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-rational.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+rational.$(OBJEXT): $(top_srcdir)/include/ruby.h
rational.$(OBJEXT): {$(VPATH)}config.h
-rational.$(OBJEXT): {$(VPATH)}constant.h
rational.$(OBJEXT): {$(VPATH)}defines.h
+rational.$(OBJEXT): {$(VPATH)}encoding.h
rational.$(OBJEXT): {$(VPATH)}id.h
-rational.$(OBJEXT): {$(VPATH)}id_table.h
rational.$(OBJEXT): {$(VPATH)}intern.h
rational.$(OBJEXT): {$(VPATH)}internal.h
-rational.$(OBJEXT): {$(VPATH)}internal/abi.h
-rational.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-rational.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-rational.$(OBJEXT): {$(VPATH)}internal/assume.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-rational.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-rational.$(OBJEXT): {$(VPATH)}internal/cast.h
-rational.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-rational.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-rational.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-rational.$(OBJEXT): {$(VPATH)}internal/config.h
-rational.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-rational.$(OBJEXT): {$(VPATH)}internal/core.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-rational.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-rational.$(OBJEXT): {$(VPATH)}internal/ctype.h
-rational.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-rational.$(OBJEXT): {$(VPATH)}internal/dosish.h
-rational.$(OBJEXT): {$(VPATH)}internal/error.h
-rational.$(OBJEXT): {$(VPATH)}internal/eval.h
-rational.$(OBJEXT): {$(VPATH)}internal/event.h
-rational.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-rational.$(OBJEXT): {$(VPATH)}internal/gc.h
-rational.$(OBJEXT): {$(VPATH)}internal/glob.h
-rational.$(OBJEXT): {$(VPATH)}internal/globals.h
-rational.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-rational.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-rational.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-rational.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-rational.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-rational.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-rational.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-rational.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-rational.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-rational.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-rational.$(OBJEXT): {$(VPATH)}internal/iterator.h
-rational.$(OBJEXT): {$(VPATH)}internal/memory.h
-rational.$(OBJEXT): {$(VPATH)}internal/method.h
-rational.$(OBJEXT): {$(VPATH)}internal/module.h
-rational.$(OBJEXT): {$(VPATH)}internal/newobj.h
-rational.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-rational.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-rational.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-rational.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-rational.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-rational.$(OBJEXT): {$(VPATH)}internal/symbol.h
-rational.$(OBJEXT): {$(VPATH)}internal/value.h
-rational.$(OBJEXT): {$(VPATH)}internal/value_type.h
-rational.$(OBJEXT): {$(VPATH)}internal/variable.h
-rational.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-rational.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-rational.$(OBJEXT): {$(VPATH)}method.h
+rational.$(OBJEXT): {$(VPATH)}io.h
rational.$(OBJEXT): {$(VPATH)}missing.h
-rational.$(OBJEXT): {$(VPATH)}node.h
+rational.$(OBJEXT): {$(VPATH)}onigmo.h
+rational.$(OBJEXT): {$(VPATH)}oniguruma.h
rational.$(OBJEXT): {$(VPATH)}rational.c
rational.$(OBJEXT): {$(VPATH)}ruby_assert.h
-rational.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-rational.$(OBJEXT): {$(VPATH)}shape.h
rational.$(OBJEXT): {$(VPATH)}st.h
rational.$(OBJEXT): {$(VPATH)}subst.h
-rational.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-rational.$(OBJEXT): {$(VPATH)}thread_native.h
-rational.$(OBJEXT): {$(VPATH)}vm_core.h
-rational.$(OBJEXT): {$(VPATH)}vm_opts.h
-re.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-re.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-re.$(OBJEXT): $(CCAN_DIR)/list/list.h
-re.$(OBJEXT): $(CCAN_DIR)/str/str.h
-re.$(OBJEXT): $(hdrdir)/ruby.h
re.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-re.$(OBJEXT): $(top_srcdir)/internal/array.h
-re.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-re.$(OBJEXT): $(top_srcdir)/internal/bits.h
-re.$(OBJEXT): $(top_srcdir)/internal/class.h
-re.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-re.$(OBJEXT): $(top_srcdir)/internal/encoding.h
-re.$(OBJEXT): $(top_srcdir)/internal/gc.h
-re.$(OBJEXT): $(top_srcdir)/internal/hash.h
-re.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-re.$(OBJEXT): $(top_srcdir)/internal/object.h
-re.$(OBJEXT): $(top_srcdir)/internal/ractor.h
-re.$(OBJEXT): $(top_srcdir)/internal/re.h
-re.$(OBJEXT): $(top_srcdir)/internal/serial.h
-re.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-re.$(OBJEXT): $(top_srcdir)/internal/string.h
-re.$(OBJEXT): $(top_srcdir)/internal/time.h
-re.$(OBJEXT): $(top_srcdir)/internal/variable.h
-re.$(OBJEXT): $(top_srcdir)/internal/vm.h
-re.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-re.$(OBJEXT): {$(VPATH)}assert.h
-re.$(OBJEXT): {$(VPATH)}atomic.h
-re.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-re.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-re.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-re.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-re.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-re.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-re.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-re.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-re.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+re.$(OBJEXT): $(top_srcdir)/include/ruby.h
re.$(OBJEXT): {$(VPATH)}config.h
-re.$(OBJEXT): {$(VPATH)}constant.h
re.$(OBJEXT): {$(VPATH)}defines.h
re.$(OBJEXT): {$(VPATH)}encindex.h
re.$(OBJEXT): {$(VPATH)}encoding.h
-re.$(OBJEXT): {$(VPATH)}hrtime.h
-re.$(OBJEXT): {$(VPATH)}id.h
-re.$(OBJEXT): {$(VPATH)}id_table.h
re.$(OBJEXT): {$(VPATH)}intern.h
re.$(OBJEXT): {$(VPATH)}internal.h
-re.$(OBJEXT): {$(VPATH)}internal/abi.h
-re.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-re.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-re.$(OBJEXT): {$(VPATH)}internal/assume.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-re.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-re.$(OBJEXT): {$(VPATH)}internal/cast.h
-re.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-re.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-re.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-re.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-re.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-re.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-re.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-re.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-re.$(OBJEXT): {$(VPATH)}internal/config.h
-re.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-re.$(OBJEXT): {$(VPATH)}internal/core.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h
-re.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-re.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-re.$(OBJEXT): {$(VPATH)}internal/ctype.h
-re.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-re.$(OBJEXT): {$(VPATH)}internal/dosish.h
-re.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-re.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-re.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-re.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-re.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-re.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-re.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-re.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-re.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-re.$(OBJEXT): {$(VPATH)}internal/error.h
-re.$(OBJEXT): {$(VPATH)}internal/eval.h
-re.$(OBJEXT): {$(VPATH)}internal/event.h
-re.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-re.$(OBJEXT): {$(VPATH)}internal/gc.h
-re.$(OBJEXT): {$(VPATH)}internal/glob.h
-re.$(OBJEXT): {$(VPATH)}internal/globals.h
-re.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-re.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-re.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-re.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-re.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-re.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-re.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-re.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-re.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-re.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-re.$(OBJEXT): {$(VPATH)}internal/iterator.h
-re.$(OBJEXT): {$(VPATH)}internal/memory.h
-re.$(OBJEXT): {$(VPATH)}internal/method.h
-re.$(OBJEXT): {$(VPATH)}internal/module.h
-re.$(OBJEXT): {$(VPATH)}internal/newobj.h
-re.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-re.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-re.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-re.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-re.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-re.$(OBJEXT): {$(VPATH)}internal/symbol.h
-re.$(OBJEXT): {$(VPATH)}internal/value.h
-re.$(OBJEXT): {$(VPATH)}internal/value_type.h
-re.$(OBJEXT): {$(VPATH)}internal/variable.h
-re.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-re.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-re.$(OBJEXT): {$(VPATH)}method.h
+re.$(OBJEXT): {$(VPATH)}io.h
re.$(OBJEXT): {$(VPATH)}missing.h
-re.$(OBJEXT): {$(VPATH)}node.h
re.$(OBJEXT): {$(VPATH)}onigmo.h
re.$(OBJEXT): {$(VPATH)}oniguruma.h
re.$(OBJEXT): {$(VPATH)}re.c
@@ -12199,1660 +2361,108 @@ re.$(OBJEXT): {$(VPATH)}re.h
re.$(OBJEXT): {$(VPATH)}regenc.h
re.$(OBJEXT): {$(VPATH)}regex.h
re.$(OBJEXT): {$(VPATH)}regint.h
-re.$(OBJEXT): {$(VPATH)}ruby_assert.h
-re.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-re.$(OBJEXT): {$(VPATH)}shape.h
re.$(OBJEXT): {$(VPATH)}st.h
re.$(OBJEXT): {$(VPATH)}subst.h
-re.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-re.$(OBJEXT): {$(VPATH)}thread_native.h
re.$(OBJEXT): {$(VPATH)}util.h
-re.$(OBJEXT): {$(VPATH)}vm_core.h
-re.$(OBJEXT): {$(VPATH)}vm_opts.h
-regcomp.$(OBJEXT): $(hdrdir)/ruby.h
regcomp.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-regcomp.$(OBJEXT): {$(VPATH)}assert.h
-regcomp.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-regcomp.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-regcomp.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-regcomp.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-regcomp.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-regcomp.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-regcomp.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-regcomp.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
regcomp.$(OBJEXT): {$(VPATH)}config.h
regcomp.$(OBJEXT): {$(VPATH)}defines.h
regcomp.$(OBJEXT): {$(VPATH)}intern.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/abi.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/assume.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/cast.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/config.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/ctype.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/dosish.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/error.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/eval.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/event.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/gc.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/glob.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/globals.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/iterator.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/memory.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/method.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/module.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/newobj.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/symbol.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/value.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/value_type.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/variable.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-regcomp.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
regcomp.$(OBJEXT): {$(VPATH)}missing.h
regcomp.$(OBJEXT): {$(VPATH)}onigmo.h
+regcomp.$(OBJEXT): {$(VPATH)}oniguruma.h
regcomp.$(OBJEXT): {$(VPATH)}regcomp.c
regcomp.$(OBJEXT): {$(VPATH)}regenc.h
regcomp.$(OBJEXT): {$(VPATH)}regint.h
regcomp.$(OBJEXT): {$(VPATH)}regparse.h
regcomp.$(OBJEXT): {$(VPATH)}st.h
regcomp.$(OBJEXT): {$(VPATH)}subst.h
-regenc.$(OBJEXT): $(hdrdir)/ruby.h
regenc.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-regenc.$(OBJEXT): {$(VPATH)}assert.h
-regenc.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-regenc.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-regenc.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-regenc.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-regenc.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-regenc.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-regenc.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-regenc.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
regenc.$(OBJEXT): {$(VPATH)}config.h
regenc.$(OBJEXT): {$(VPATH)}defines.h
regenc.$(OBJEXT): {$(VPATH)}intern.h
-regenc.$(OBJEXT): {$(VPATH)}internal/abi.h
-regenc.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-regenc.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-regenc.$(OBJEXT): {$(VPATH)}internal/assume.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-regenc.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-regenc.$(OBJEXT): {$(VPATH)}internal/cast.h
-regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-regenc.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-regenc.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-regenc.$(OBJEXT): {$(VPATH)}internal/config.h
-regenc.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-regenc.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-regenc.$(OBJEXT): {$(VPATH)}internal/ctype.h
-regenc.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-regenc.$(OBJEXT): {$(VPATH)}internal/dosish.h
-regenc.$(OBJEXT): {$(VPATH)}internal/error.h
-regenc.$(OBJEXT): {$(VPATH)}internal/eval.h
-regenc.$(OBJEXT): {$(VPATH)}internal/event.h
-regenc.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-regenc.$(OBJEXT): {$(VPATH)}internal/gc.h
-regenc.$(OBJEXT): {$(VPATH)}internal/glob.h
-regenc.$(OBJEXT): {$(VPATH)}internal/globals.h
-regenc.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-regenc.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-regenc.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-regenc.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-regenc.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-regenc.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-regenc.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-regenc.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-regenc.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-regenc.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-regenc.$(OBJEXT): {$(VPATH)}internal/iterator.h
-regenc.$(OBJEXT): {$(VPATH)}internal/memory.h
-regenc.$(OBJEXT): {$(VPATH)}internal/method.h
-regenc.$(OBJEXT): {$(VPATH)}internal/module.h
-regenc.$(OBJEXT): {$(VPATH)}internal/newobj.h
-regenc.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-regenc.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-regenc.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-regenc.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-regenc.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-regenc.$(OBJEXT): {$(VPATH)}internal/symbol.h
-regenc.$(OBJEXT): {$(VPATH)}internal/value.h
-regenc.$(OBJEXT): {$(VPATH)}internal/value_type.h
-regenc.$(OBJEXT): {$(VPATH)}internal/variable.h
-regenc.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-regenc.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
regenc.$(OBJEXT): {$(VPATH)}missing.h
regenc.$(OBJEXT): {$(VPATH)}onigmo.h
+regenc.$(OBJEXT): {$(VPATH)}oniguruma.h
regenc.$(OBJEXT): {$(VPATH)}regenc.c
regenc.$(OBJEXT): {$(VPATH)}regenc.h
regenc.$(OBJEXT): {$(VPATH)}regint.h
regenc.$(OBJEXT): {$(VPATH)}st.h
regenc.$(OBJEXT): {$(VPATH)}subst.h
-regerror.$(OBJEXT): $(hdrdir)/ruby.h
regerror.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-regerror.$(OBJEXT): {$(VPATH)}assert.h
-regerror.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-regerror.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-regerror.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-regerror.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-regerror.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-regerror.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-regerror.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-regerror.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
regerror.$(OBJEXT): {$(VPATH)}config.h
regerror.$(OBJEXT): {$(VPATH)}defines.h
regerror.$(OBJEXT): {$(VPATH)}intern.h
-regerror.$(OBJEXT): {$(VPATH)}internal/abi.h
-regerror.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-regerror.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-regerror.$(OBJEXT): {$(VPATH)}internal/assume.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-regerror.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-regerror.$(OBJEXT): {$(VPATH)}internal/cast.h
-regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-regerror.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-regerror.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-regerror.$(OBJEXT): {$(VPATH)}internal/config.h
-regerror.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-regerror.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-regerror.$(OBJEXT): {$(VPATH)}internal/ctype.h
-regerror.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-regerror.$(OBJEXT): {$(VPATH)}internal/dosish.h
-regerror.$(OBJEXT): {$(VPATH)}internal/error.h
-regerror.$(OBJEXT): {$(VPATH)}internal/eval.h
-regerror.$(OBJEXT): {$(VPATH)}internal/event.h
-regerror.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-regerror.$(OBJEXT): {$(VPATH)}internal/gc.h
-regerror.$(OBJEXT): {$(VPATH)}internal/glob.h
-regerror.$(OBJEXT): {$(VPATH)}internal/globals.h
-regerror.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-regerror.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-regerror.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-regerror.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-regerror.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-regerror.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-regerror.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-regerror.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-regerror.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-regerror.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-regerror.$(OBJEXT): {$(VPATH)}internal/iterator.h
-regerror.$(OBJEXT): {$(VPATH)}internal/memory.h
-regerror.$(OBJEXT): {$(VPATH)}internal/method.h
-regerror.$(OBJEXT): {$(VPATH)}internal/module.h
-regerror.$(OBJEXT): {$(VPATH)}internal/newobj.h
-regerror.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-regerror.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-regerror.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-regerror.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-regerror.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-regerror.$(OBJEXT): {$(VPATH)}internal/symbol.h
-regerror.$(OBJEXT): {$(VPATH)}internal/value.h
-regerror.$(OBJEXT): {$(VPATH)}internal/value_type.h
-regerror.$(OBJEXT): {$(VPATH)}internal/variable.h
-regerror.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-regerror.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
regerror.$(OBJEXT): {$(VPATH)}missing.h
regerror.$(OBJEXT): {$(VPATH)}onigmo.h
+regerror.$(OBJEXT): {$(VPATH)}oniguruma.h
regerror.$(OBJEXT): {$(VPATH)}regenc.h
regerror.$(OBJEXT): {$(VPATH)}regerror.c
regerror.$(OBJEXT): {$(VPATH)}regint.h
regerror.$(OBJEXT): {$(VPATH)}st.h
regerror.$(OBJEXT): {$(VPATH)}subst.h
-regexec.$(OBJEXT): $(hdrdir)/ruby.h
regexec.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-regexec.$(OBJEXT): {$(VPATH)}assert.h
-regexec.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-regexec.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-regexec.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-regexec.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-regexec.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-regexec.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-regexec.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-regexec.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
regexec.$(OBJEXT): {$(VPATH)}config.h
regexec.$(OBJEXT): {$(VPATH)}defines.h
regexec.$(OBJEXT): {$(VPATH)}intern.h
-regexec.$(OBJEXT): {$(VPATH)}internal/abi.h
-regexec.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-regexec.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-regexec.$(OBJEXT): {$(VPATH)}internal/assume.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-regexec.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-regexec.$(OBJEXT): {$(VPATH)}internal/cast.h
-regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-regexec.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-regexec.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-regexec.$(OBJEXT): {$(VPATH)}internal/config.h
-regexec.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-regexec.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-regexec.$(OBJEXT): {$(VPATH)}internal/ctype.h
-regexec.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-regexec.$(OBJEXT): {$(VPATH)}internal/dosish.h
-regexec.$(OBJEXT): {$(VPATH)}internal/error.h
-regexec.$(OBJEXT): {$(VPATH)}internal/eval.h
-regexec.$(OBJEXT): {$(VPATH)}internal/event.h
-regexec.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-regexec.$(OBJEXT): {$(VPATH)}internal/gc.h
-regexec.$(OBJEXT): {$(VPATH)}internal/glob.h
-regexec.$(OBJEXT): {$(VPATH)}internal/globals.h
-regexec.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-regexec.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-regexec.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-regexec.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-regexec.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-regexec.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-regexec.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-regexec.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-regexec.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-regexec.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-regexec.$(OBJEXT): {$(VPATH)}internal/iterator.h
-regexec.$(OBJEXT): {$(VPATH)}internal/memory.h
-regexec.$(OBJEXT): {$(VPATH)}internal/method.h
-regexec.$(OBJEXT): {$(VPATH)}internal/module.h
-regexec.$(OBJEXT): {$(VPATH)}internal/newobj.h
-regexec.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-regexec.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-regexec.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-regexec.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-regexec.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-regexec.$(OBJEXT): {$(VPATH)}internal/symbol.h
-regexec.$(OBJEXT): {$(VPATH)}internal/value.h
-regexec.$(OBJEXT): {$(VPATH)}internal/value_type.h
-regexec.$(OBJEXT): {$(VPATH)}internal/variable.h
-regexec.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-regexec.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
regexec.$(OBJEXT): {$(VPATH)}missing.h
regexec.$(OBJEXT): {$(VPATH)}onigmo.h
+regexec.$(OBJEXT): {$(VPATH)}oniguruma.h
regexec.$(OBJEXT): {$(VPATH)}regenc.h
regexec.$(OBJEXT): {$(VPATH)}regexec.c
regexec.$(OBJEXT): {$(VPATH)}regint.h
regexec.$(OBJEXT): {$(VPATH)}st.h
regexec.$(OBJEXT): {$(VPATH)}subst.h
-regparse.$(OBJEXT): $(hdrdir)/ruby.h
regparse.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-regparse.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-regparse.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-regparse.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-regparse.$(OBJEXT): {$(VPATH)}assert.h
-regparse.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-regparse.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-regparse.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-regparse.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-regparse.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-regparse.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-regparse.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-regparse.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-regparse.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
regparse.$(OBJEXT): {$(VPATH)}config.h
regparse.$(OBJEXT): {$(VPATH)}defines.h
regparse.$(OBJEXT): {$(VPATH)}intern.h
-regparse.$(OBJEXT): {$(VPATH)}internal/abi.h
-regparse.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-regparse.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-regparse.$(OBJEXT): {$(VPATH)}internal/assume.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-regparse.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-regparse.$(OBJEXT): {$(VPATH)}internal/cast.h
-regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-regparse.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-regparse.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-regparse.$(OBJEXT): {$(VPATH)}internal/config.h
-regparse.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-regparse.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-regparse.$(OBJEXT): {$(VPATH)}internal/ctype.h
-regparse.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-regparse.$(OBJEXT): {$(VPATH)}internal/dosish.h
-regparse.$(OBJEXT): {$(VPATH)}internal/error.h
-regparse.$(OBJEXT): {$(VPATH)}internal/eval.h
-regparse.$(OBJEXT): {$(VPATH)}internal/event.h
-regparse.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-regparse.$(OBJEXT): {$(VPATH)}internal/gc.h
-regparse.$(OBJEXT): {$(VPATH)}internal/glob.h
-regparse.$(OBJEXT): {$(VPATH)}internal/globals.h
-regparse.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-regparse.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-regparse.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-regparse.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-regparse.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-regparse.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-regparse.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-regparse.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-regparse.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-regparse.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-regparse.$(OBJEXT): {$(VPATH)}internal/iterator.h
-regparse.$(OBJEXT): {$(VPATH)}internal/memory.h
-regparse.$(OBJEXT): {$(VPATH)}internal/method.h
-regparse.$(OBJEXT): {$(VPATH)}internal/module.h
-regparse.$(OBJEXT): {$(VPATH)}internal/newobj.h
-regparse.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-regparse.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-regparse.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-regparse.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-regparse.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-regparse.$(OBJEXT): {$(VPATH)}internal/symbol.h
-regparse.$(OBJEXT): {$(VPATH)}internal/value.h
-regparse.$(OBJEXT): {$(VPATH)}internal/value_type.h
-regparse.$(OBJEXT): {$(VPATH)}internal/variable.h
-regparse.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-regparse.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
regparse.$(OBJEXT): {$(VPATH)}missing.h
regparse.$(OBJEXT): {$(VPATH)}onigmo.h
+regparse.$(OBJEXT): {$(VPATH)}oniguruma.h
regparse.$(OBJEXT): {$(VPATH)}regenc.h
regparse.$(OBJEXT): {$(VPATH)}regint.h
regparse.$(OBJEXT): {$(VPATH)}regparse.c
regparse.$(OBJEXT): {$(VPATH)}regparse.h
regparse.$(OBJEXT): {$(VPATH)}st.h
regparse.$(OBJEXT): {$(VPATH)}subst.h
-regsyntax.$(OBJEXT): $(hdrdir)/ruby.h
regsyntax.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-regsyntax.$(OBJEXT): {$(VPATH)}assert.h
-regsyntax.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-regsyntax.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-regsyntax.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-regsyntax.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-regsyntax.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-regsyntax.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-regsyntax.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-regsyntax.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
regsyntax.$(OBJEXT): {$(VPATH)}config.h
regsyntax.$(OBJEXT): {$(VPATH)}defines.h
regsyntax.$(OBJEXT): {$(VPATH)}intern.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/abi.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/assume.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/cast.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/config.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/ctype.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/dosish.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/error.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/eval.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/event.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/gc.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/glob.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/globals.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/iterator.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/memory.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/method.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/module.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/newobj.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/symbol.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/value.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/value_type.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/variable.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-regsyntax.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
regsyntax.$(OBJEXT): {$(VPATH)}missing.h
regsyntax.$(OBJEXT): {$(VPATH)}onigmo.h
+regsyntax.$(OBJEXT): {$(VPATH)}oniguruma.h
regsyntax.$(OBJEXT): {$(VPATH)}regenc.h
regsyntax.$(OBJEXT): {$(VPATH)}regint.h
regsyntax.$(OBJEXT): {$(VPATH)}regsyntax.c
regsyntax.$(OBJEXT): {$(VPATH)}st.h
regsyntax.$(OBJEXT): {$(VPATH)}subst.h
-rjit.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-rjit.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-rjit.$(OBJEXT): $(CCAN_DIR)/list/list.h
-rjit.$(OBJEXT): $(CCAN_DIR)/str/str.h
-rjit.$(OBJEXT): $(hdrdir)/ruby.h
-rjit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-rjit.$(OBJEXT): $(hdrdir)/ruby/version.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/array.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/class.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/cmdlineopt.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/compile.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/cont.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/file.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/gc.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/hash.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/process.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/serial.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/string.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/struct.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/variable.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/vm.h
-rjit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-rjit.$(OBJEXT): {$(VPATH)}assert.h
-rjit.$(OBJEXT): {$(VPATH)}atomic.h
-rjit.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-rjit.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-rjit.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-rjit.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-rjit.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-rjit.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-rjit.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-rjit.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-rjit.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-rjit.$(OBJEXT): {$(VPATH)}builtin.h
-rjit.$(OBJEXT): {$(VPATH)}config.h
-rjit.$(OBJEXT): {$(VPATH)}constant.h
-rjit.$(OBJEXT): {$(VPATH)}debug.h
-rjit.$(OBJEXT): {$(VPATH)}debug_counter.h
-rjit.$(OBJEXT): {$(VPATH)}defines.h
-rjit.$(OBJEXT): {$(VPATH)}dln.h
-rjit.$(OBJEXT): {$(VPATH)}encoding.h
-rjit.$(OBJEXT): {$(VPATH)}id.h
-rjit.$(OBJEXT): {$(VPATH)}id_table.h
-rjit.$(OBJEXT): {$(VPATH)}insns.def
-rjit.$(OBJEXT): {$(VPATH)}insns.inc
-rjit.$(OBJEXT): {$(VPATH)}insns_info.inc
-rjit.$(OBJEXT): {$(VPATH)}intern.h
-rjit.$(OBJEXT): {$(VPATH)}internal.h
-rjit.$(OBJEXT): {$(VPATH)}internal/abi.h
-rjit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-rjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-rjit.$(OBJEXT): {$(VPATH)}internal/assume.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-rjit.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-rjit.$(OBJEXT): {$(VPATH)}internal/cast.h
-rjit.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-rjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-rjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-rjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-rjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-rjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-rjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-rjit.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-rjit.$(OBJEXT): {$(VPATH)}internal/config.h
-rjit.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-rjit.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-rjit.$(OBJEXT): {$(VPATH)}internal/ctype.h
-rjit.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-rjit.$(OBJEXT): {$(VPATH)}internal/dosish.h
-rjit.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-rjit.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-rjit.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-rjit.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-rjit.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-rjit.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-rjit.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-rjit.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-rjit.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-rjit.$(OBJEXT): {$(VPATH)}internal/error.h
-rjit.$(OBJEXT): {$(VPATH)}internal/eval.h
-rjit.$(OBJEXT): {$(VPATH)}internal/event.h
-rjit.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-rjit.$(OBJEXT): {$(VPATH)}internal/gc.h
-rjit.$(OBJEXT): {$(VPATH)}internal/glob.h
-rjit.$(OBJEXT): {$(VPATH)}internal/globals.h
-rjit.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-rjit.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-rjit.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-rjit.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-rjit.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-rjit.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-rjit.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-rjit.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-rjit.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-rjit.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-rjit.$(OBJEXT): {$(VPATH)}internal/iterator.h
-rjit.$(OBJEXT): {$(VPATH)}internal/memory.h
-rjit.$(OBJEXT): {$(VPATH)}internal/method.h
-rjit.$(OBJEXT): {$(VPATH)}internal/module.h
-rjit.$(OBJEXT): {$(VPATH)}internal/newobj.h
-rjit.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-rjit.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-rjit.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-rjit.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-rjit.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-rjit.$(OBJEXT): {$(VPATH)}internal/symbol.h
-rjit.$(OBJEXT): {$(VPATH)}internal/value.h
-rjit.$(OBJEXT): {$(VPATH)}internal/value_type.h
-rjit.$(OBJEXT): {$(VPATH)}internal/variable.h
-rjit.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-rjit.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-rjit.$(OBJEXT): {$(VPATH)}iseq.h
-rjit.$(OBJEXT): {$(VPATH)}method.h
-rjit.$(OBJEXT): {$(VPATH)}missing.h
-rjit.$(OBJEXT): {$(VPATH)}node.h
-rjit.$(OBJEXT): {$(VPATH)}onigmo.h
-rjit.$(OBJEXT): {$(VPATH)}oniguruma.h
-rjit.$(OBJEXT): {$(VPATH)}ractor.h
-rjit.$(OBJEXT): {$(VPATH)}ractor_core.h
-rjit.$(OBJEXT): {$(VPATH)}rjit.c
-rjit.$(OBJEXT): {$(VPATH)}rjit.h
-rjit.$(OBJEXT): {$(VPATH)}rjit.rbinc
-rjit.$(OBJEXT): {$(VPATH)}rjit_c.h
-rjit.$(OBJEXT): {$(VPATH)}ruby_assert.h
-rjit.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-rjit.$(OBJEXT): {$(VPATH)}shape.h
-rjit.$(OBJEXT): {$(VPATH)}st.h
-rjit.$(OBJEXT): {$(VPATH)}subst.h
-rjit.$(OBJEXT): {$(VPATH)}thread.h
-rjit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-rjit.$(OBJEXT): {$(VPATH)}thread_native.h
-rjit.$(OBJEXT): {$(VPATH)}util.h
-rjit.$(OBJEXT): {$(VPATH)}vm_callinfo.h
-rjit.$(OBJEXT): {$(VPATH)}vm_core.h
-rjit.$(OBJEXT): {$(VPATH)}vm_debug.h
-rjit.$(OBJEXT): {$(VPATH)}vm_opts.h
-rjit.$(OBJEXT): {$(VPATH)}vm_sync.h
-rjit.$(OBJEXT): {$(VPATH)}yjit.h
-rjit_c.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-rjit_c.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-rjit_c.$(OBJEXT): $(CCAN_DIR)/list/list.h
-rjit_c.$(OBJEXT): $(CCAN_DIR)/str/str.h
-rjit_c.$(OBJEXT): $(hdrdir)/ruby.h
-rjit_c.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-rjit_c.$(OBJEXT): $(srcdir)/rjit_c.rb
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/array.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/class.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/compile.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/gc.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/hash.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/object.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/proc.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/serial.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/string.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/struct.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/variable.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/vm.h
-rjit_c.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-rjit_c.$(OBJEXT): {$(VPATH)}assert.h
-rjit_c.$(OBJEXT): {$(VPATH)}atomic.h
-rjit_c.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-rjit_c.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-rjit_c.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-rjit_c.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-rjit_c.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-rjit_c.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-rjit_c.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-rjit_c.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-rjit_c.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-rjit_c.$(OBJEXT): {$(VPATH)}builtin.h
-rjit_c.$(OBJEXT): {$(VPATH)}config.h
-rjit_c.$(OBJEXT): {$(VPATH)}constant.h
-rjit_c.$(OBJEXT): {$(VPATH)}debug.h
-rjit_c.$(OBJEXT): {$(VPATH)}debug_counter.h
-rjit_c.$(OBJEXT): {$(VPATH)}defines.h
-rjit_c.$(OBJEXT): {$(VPATH)}encoding.h
-rjit_c.$(OBJEXT): {$(VPATH)}id.h
-rjit_c.$(OBJEXT): {$(VPATH)}id_table.h
-rjit_c.$(OBJEXT): {$(VPATH)}insns.def
-rjit_c.$(OBJEXT): {$(VPATH)}insns.inc
-rjit_c.$(OBJEXT): {$(VPATH)}insns_info.inc
-rjit_c.$(OBJEXT): {$(VPATH)}intern.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/abi.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/assume.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/cast.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/config.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/ctype.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/dosish.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/error.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/eval.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/event.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/gc.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/glob.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/globals.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/iterator.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/memory.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/method.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/module.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/newobj.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/symbol.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/value.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/value_type.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/variable.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-rjit_c.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-rjit_c.$(OBJEXT): {$(VPATH)}iseq.h
-rjit_c.$(OBJEXT): {$(VPATH)}method.h
-rjit_c.$(OBJEXT): {$(VPATH)}missing.h
-rjit_c.$(OBJEXT): {$(VPATH)}node.h
-rjit_c.$(OBJEXT): {$(VPATH)}onigmo.h
-rjit_c.$(OBJEXT): {$(VPATH)}oniguruma.h
-rjit_c.$(OBJEXT): {$(VPATH)}probes.dmyh
-rjit_c.$(OBJEXT): {$(VPATH)}probes.h
-rjit_c.$(OBJEXT): {$(VPATH)}probes_helper.h
-rjit_c.$(OBJEXT): {$(VPATH)}rjit.h
-rjit_c.$(OBJEXT): {$(VPATH)}rjit_c.c
-rjit_c.$(OBJEXT): {$(VPATH)}rjit_c.h
-rjit_c.$(OBJEXT): {$(VPATH)}rjit_c.rb
-rjit_c.$(OBJEXT): {$(VPATH)}rjit_c.rbinc
-rjit_c.$(OBJEXT): {$(VPATH)}ruby_assert.h
-rjit_c.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-rjit_c.$(OBJEXT): {$(VPATH)}shape.h
-rjit_c.$(OBJEXT): {$(VPATH)}st.h
-rjit_c.$(OBJEXT): {$(VPATH)}subst.h
-rjit_c.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-rjit_c.$(OBJEXT): {$(VPATH)}thread_native.h
-rjit_c.$(OBJEXT): {$(VPATH)}vm_callinfo.h
-rjit_c.$(OBJEXT): {$(VPATH)}vm_core.h
-rjit_c.$(OBJEXT): {$(VPATH)}vm_exec.h
-rjit_c.$(OBJEXT): {$(VPATH)}vm_insnhelper.h
-rjit_c.$(OBJEXT): {$(VPATH)}vm_opts.h
-rjit_c.$(OBJEXT): {$(VPATH)}yjit.h
-ruby-runner.$(OBJEXT): {$(VPATH)}config.h
-ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-ruby-runner.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-ruby-runner.$(OBJEXT): {$(VPATH)}internal/config.h
ruby-runner.$(OBJEXT): {$(VPATH)}ruby-runner.c
ruby-runner.$(OBJEXT): {$(VPATH)}ruby-runner.h
ruby.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
ruby.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
ruby.$(OBJEXT): $(CCAN_DIR)/list/list.h
ruby.$(OBJEXT): $(CCAN_DIR)/str/str.h
-ruby.$(OBJEXT): $(hdrdir)/ruby.h
ruby.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-ruby.$(OBJEXT): $(hdrdir)/ruby/version.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/array.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/class.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/cmdlineopt.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/cont.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/error.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/file.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/gc.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/inits.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/io.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/load.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/loadpath.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/missing.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/object.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/parse.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/process.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/serial.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/string.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/variable.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/vm.h
-ruby.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-ruby.$(OBJEXT): {$(VPATH)}assert.h
-ruby.$(OBJEXT): {$(VPATH)}atomic.h
-ruby.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-ruby.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-ruby.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-ruby.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-ruby.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-ruby.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-ruby.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-ruby.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-ruby.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+ruby.$(OBJEXT): $(top_srcdir)/include/ruby.h
ruby.$(OBJEXT): {$(VPATH)}config.h
-ruby.$(OBJEXT): {$(VPATH)}constant.h
-ruby.$(OBJEXT): {$(VPATH)}debug_counter.h
ruby.$(OBJEXT): {$(VPATH)}defines.h
ruby.$(OBJEXT): {$(VPATH)}dln.h
ruby.$(OBJEXT): {$(VPATH)}encoding.h
ruby.$(OBJEXT): {$(VPATH)}eval_intern.h
ruby.$(OBJEXT): {$(VPATH)}id.h
-ruby.$(OBJEXT): {$(VPATH)}id_table.h
ruby.$(OBJEXT): {$(VPATH)}intern.h
ruby.$(OBJEXT): {$(VPATH)}internal.h
-ruby.$(OBJEXT): {$(VPATH)}internal/abi.h
-ruby.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-ruby.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-ruby.$(OBJEXT): {$(VPATH)}internal/assume.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-ruby.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-ruby.$(OBJEXT): {$(VPATH)}internal/cast.h
-ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-ruby.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-ruby.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-ruby.$(OBJEXT): {$(VPATH)}internal/config.h
-ruby.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-ruby.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-ruby.$(OBJEXT): {$(VPATH)}internal/ctype.h
-ruby.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-ruby.$(OBJEXT): {$(VPATH)}internal/dosish.h
-ruby.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-ruby.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-ruby.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-ruby.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-ruby.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-ruby.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-ruby.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-ruby.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-ruby.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-ruby.$(OBJEXT): {$(VPATH)}internal/error.h
-ruby.$(OBJEXT): {$(VPATH)}internal/eval.h
-ruby.$(OBJEXT): {$(VPATH)}internal/event.h
-ruby.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-ruby.$(OBJEXT): {$(VPATH)}internal/gc.h
-ruby.$(OBJEXT): {$(VPATH)}internal/glob.h
-ruby.$(OBJEXT): {$(VPATH)}internal/globals.h
-ruby.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-ruby.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-ruby.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-ruby.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-ruby.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-ruby.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-ruby.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-ruby.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-ruby.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-ruby.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-ruby.$(OBJEXT): {$(VPATH)}internal/iterator.h
-ruby.$(OBJEXT): {$(VPATH)}internal/memory.h
-ruby.$(OBJEXT): {$(VPATH)}internal/method.h
-ruby.$(OBJEXT): {$(VPATH)}internal/module.h
-ruby.$(OBJEXT): {$(VPATH)}internal/newobj.h
-ruby.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-ruby.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-ruby.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-ruby.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-ruby.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-ruby.$(OBJEXT): {$(VPATH)}internal/symbol.h
-ruby.$(OBJEXT): {$(VPATH)}internal/value.h
-ruby.$(OBJEXT): {$(VPATH)}internal/value_type.h
-ruby.$(OBJEXT): {$(VPATH)}internal/variable.h
-ruby.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-ruby.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
ruby.$(OBJEXT): {$(VPATH)}io.h
-ruby.$(OBJEXT): {$(VPATH)}iseq.h
ruby.$(OBJEXT): {$(VPATH)}method.h
ruby.$(OBJEXT): {$(VPATH)}missing.h
ruby.$(OBJEXT): {$(VPATH)}node.h
ruby.$(OBJEXT): {$(VPATH)}onigmo.h
ruby.$(OBJEXT): {$(VPATH)}oniguruma.h
-ruby.$(OBJEXT): {$(VPATH)}rjit.h
ruby.$(OBJEXT): {$(VPATH)}ruby.c
ruby.$(OBJEXT): {$(VPATH)}ruby_assert.h
ruby.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-ruby.$(OBJEXT): {$(VPATH)}shape.h
ruby.$(OBJEXT): {$(VPATH)}st.h
ruby.$(OBJEXT): {$(VPATH)}subst.h
ruby.$(OBJEXT): {$(VPATH)}thread.h
@@ -13860,772 +2470,67 @@ ruby.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
ruby.$(OBJEXT): {$(VPATH)}thread_native.h
ruby.$(OBJEXT): {$(VPATH)}util.h
ruby.$(OBJEXT): {$(VPATH)}vm_core.h
+ruby.$(OBJEXT): {$(VPATH)}vm_debug.h
ruby.$(OBJEXT): {$(VPATH)}vm_opts.h
-ruby.$(OBJEXT): {$(VPATH)}yjit.h
-scheduler.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-scheduler.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-scheduler.$(OBJEXT): $(CCAN_DIR)/list/list.h
-scheduler.$(OBJEXT): $(CCAN_DIR)/str/str.h
-scheduler.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/array.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/gc.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/serial.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/thread.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/variable.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/vm.h
-scheduler.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-scheduler.$(OBJEXT): {$(VPATH)}assert.h
-scheduler.$(OBJEXT): {$(VPATH)}atomic.h
-scheduler.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-scheduler.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-scheduler.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-scheduler.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-scheduler.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-scheduler.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-scheduler.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-scheduler.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-scheduler.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-scheduler.$(OBJEXT): {$(VPATH)}config.h
-scheduler.$(OBJEXT): {$(VPATH)}constant.h
-scheduler.$(OBJEXT): {$(VPATH)}defines.h
-scheduler.$(OBJEXT): {$(VPATH)}encoding.h
-scheduler.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
-scheduler.$(OBJEXT): {$(VPATH)}id.h
-scheduler.$(OBJEXT): {$(VPATH)}id_table.h
-scheduler.$(OBJEXT): {$(VPATH)}intern.h
-scheduler.$(OBJEXT): {$(VPATH)}internal.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/abi.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/assume.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/cast.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/config.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/ctype.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/dosish.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/error.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/eval.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/event.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/gc.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/glob.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/globals.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/iterator.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/memory.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/method.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/module.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/newobj.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/symbol.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/value.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/value_type.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/variable.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-scheduler.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-scheduler.$(OBJEXT): {$(VPATH)}io.h
-scheduler.$(OBJEXT): {$(VPATH)}io/buffer.h
-scheduler.$(OBJEXT): {$(VPATH)}method.h
-scheduler.$(OBJEXT): {$(VPATH)}missing.h
-scheduler.$(OBJEXT): {$(VPATH)}node.h
-scheduler.$(OBJEXT): {$(VPATH)}onigmo.h
-scheduler.$(OBJEXT): {$(VPATH)}oniguruma.h
-scheduler.$(OBJEXT): {$(VPATH)}ruby_assert.h
-scheduler.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-scheduler.$(OBJEXT): {$(VPATH)}scheduler.c
-scheduler.$(OBJEXT): {$(VPATH)}shape.h
-scheduler.$(OBJEXT): {$(VPATH)}st.h
-scheduler.$(OBJEXT): {$(VPATH)}subst.h
-scheduler.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-scheduler.$(OBJEXT): {$(VPATH)}thread_native.h
-scheduler.$(OBJEXT): {$(VPATH)}vm_core.h
-scheduler.$(OBJEXT): {$(VPATH)}vm_opts.h
-setproctitle.$(OBJEXT): $(hdrdir)/ruby.h
+safe.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+safe.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+safe.$(OBJEXT): $(CCAN_DIR)/list/list.h
+safe.$(OBJEXT): $(CCAN_DIR)/str/str.h
+safe.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+safe.$(OBJEXT): $(top_srcdir)/include/ruby.h
+safe.$(OBJEXT): {$(VPATH)}config.h
+safe.$(OBJEXT): {$(VPATH)}defines.h
+safe.$(OBJEXT): {$(VPATH)}encoding.h
+safe.$(OBJEXT): {$(VPATH)}id.h
+safe.$(OBJEXT): {$(VPATH)}intern.h
+safe.$(OBJEXT): {$(VPATH)}internal.h
+safe.$(OBJEXT): {$(VPATH)}io.h
+safe.$(OBJEXT): {$(VPATH)}method.h
+safe.$(OBJEXT): {$(VPATH)}missing.h
+safe.$(OBJEXT): {$(VPATH)}node.h
+safe.$(OBJEXT): {$(VPATH)}onigmo.h
+safe.$(OBJEXT): {$(VPATH)}oniguruma.h
+safe.$(OBJEXT): {$(VPATH)}ruby_assert.h
+safe.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+safe.$(OBJEXT): {$(VPATH)}safe.c
+safe.$(OBJEXT): {$(VPATH)}st.h
+safe.$(OBJEXT): {$(VPATH)}subst.h
+safe.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+safe.$(OBJEXT): {$(VPATH)}thread_native.h
+safe.$(OBJEXT): {$(VPATH)}vm_core.h
+safe.$(OBJEXT): {$(VPATH)}vm_debug.h
+safe.$(OBJEXT): {$(VPATH)}vm_opts.h
setproctitle.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-setproctitle.$(OBJEXT): {$(VPATH)}assert.h
-setproctitle.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-setproctitle.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-setproctitle.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-setproctitle.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-setproctitle.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-setproctitle.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-setproctitle.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-setproctitle.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+setproctitle.$(OBJEXT): $(top_srcdir)/include/ruby.h
setproctitle.$(OBJEXT): {$(VPATH)}config.h
setproctitle.$(OBJEXT): {$(VPATH)}defines.h
setproctitle.$(OBJEXT): {$(VPATH)}intern.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/abi.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/assume.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/cast.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/config.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/ctype.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/dosish.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/error.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/eval.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/event.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/gc.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/glob.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/globals.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/iterator.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/memory.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/method.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/module.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/newobj.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/symbol.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/value.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/value_type.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/variable.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-setproctitle.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
setproctitle.$(OBJEXT): {$(VPATH)}missing.h
setproctitle.$(OBJEXT): {$(VPATH)}setproctitle.c
setproctitle.$(OBJEXT): {$(VPATH)}st.h
setproctitle.$(OBJEXT): {$(VPATH)}subst.h
setproctitle.$(OBJEXT): {$(VPATH)}util.h
-shape.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-shape.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-shape.$(OBJEXT): $(CCAN_DIR)/list/list.h
-shape.$(OBJEXT): $(CCAN_DIR)/str/str.h
-shape.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-shape.$(OBJEXT): $(top_srcdir)/internal/array.h
-shape.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-shape.$(OBJEXT): $(top_srcdir)/internal/class.h
-shape.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-shape.$(OBJEXT): $(top_srcdir)/internal/error.h
-shape.$(OBJEXT): $(top_srcdir)/internal/gc.h
-shape.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-shape.$(OBJEXT): $(top_srcdir)/internal/serial.h
-shape.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-shape.$(OBJEXT): $(top_srcdir)/internal/string.h
-shape.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-shape.$(OBJEXT): $(top_srcdir)/internal/variable.h
-shape.$(OBJEXT): $(top_srcdir)/internal/vm.h
-shape.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-shape.$(OBJEXT): {$(VPATH)}assert.h
-shape.$(OBJEXT): {$(VPATH)}atomic.h
-shape.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-shape.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-shape.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-shape.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-shape.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-shape.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-shape.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-shape.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-shape.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-shape.$(OBJEXT): {$(VPATH)}config.h
-shape.$(OBJEXT): {$(VPATH)}constant.h
-shape.$(OBJEXT): {$(VPATH)}debug_counter.h
-shape.$(OBJEXT): {$(VPATH)}defines.h
-shape.$(OBJEXT): {$(VPATH)}encoding.h
-shape.$(OBJEXT): {$(VPATH)}id.h
-shape.$(OBJEXT): {$(VPATH)}id_table.h
-shape.$(OBJEXT): {$(VPATH)}intern.h
-shape.$(OBJEXT): {$(VPATH)}internal.h
-shape.$(OBJEXT): {$(VPATH)}internal/abi.h
-shape.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-shape.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-shape.$(OBJEXT): {$(VPATH)}internal/assume.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-shape.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-shape.$(OBJEXT): {$(VPATH)}internal/cast.h
-shape.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-shape.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-shape.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-shape.$(OBJEXT): {$(VPATH)}internal/config.h
-shape.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-shape.$(OBJEXT): {$(VPATH)}internal/core.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-shape.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-shape.$(OBJEXT): {$(VPATH)}internal/ctype.h
-shape.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-shape.$(OBJEXT): {$(VPATH)}internal/dosish.h
-shape.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-shape.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-shape.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-shape.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-shape.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-shape.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-shape.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-shape.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-shape.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-shape.$(OBJEXT): {$(VPATH)}internal/error.h
-shape.$(OBJEXT): {$(VPATH)}internal/eval.h
-shape.$(OBJEXT): {$(VPATH)}internal/event.h
-shape.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-shape.$(OBJEXT): {$(VPATH)}internal/gc.h
-shape.$(OBJEXT): {$(VPATH)}internal/glob.h
-shape.$(OBJEXT): {$(VPATH)}internal/globals.h
-shape.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-shape.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-shape.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-shape.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-shape.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-shape.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-shape.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-shape.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-shape.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-shape.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-shape.$(OBJEXT): {$(VPATH)}internal/iterator.h
-shape.$(OBJEXT): {$(VPATH)}internal/memory.h
-shape.$(OBJEXT): {$(VPATH)}internal/method.h
-shape.$(OBJEXT): {$(VPATH)}internal/module.h
-shape.$(OBJEXT): {$(VPATH)}internal/newobj.h
-shape.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-shape.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-shape.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-shape.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-shape.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-shape.$(OBJEXT): {$(VPATH)}internal/symbol.h
-shape.$(OBJEXT): {$(VPATH)}internal/value.h
-shape.$(OBJEXT): {$(VPATH)}internal/value_type.h
-shape.$(OBJEXT): {$(VPATH)}internal/variable.h
-shape.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-shape.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-shape.$(OBJEXT): {$(VPATH)}method.h
-shape.$(OBJEXT): {$(VPATH)}missing.h
-shape.$(OBJEXT): {$(VPATH)}node.h
-shape.$(OBJEXT): {$(VPATH)}onigmo.h
-shape.$(OBJEXT): {$(VPATH)}oniguruma.h
-shape.$(OBJEXT): {$(VPATH)}ruby_assert.h
-shape.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-shape.$(OBJEXT): {$(VPATH)}shape.c
-shape.$(OBJEXT): {$(VPATH)}shape.h
-shape.$(OBJEXT): {$(VPATH)}st.h
-shape.$(OBJEXT): {$(VPATH)}subst.h
-shape.$(OBJEXT): {$(VPATH)}symbol.h
-shape.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-shape.$(OBJEXT): {$(VPATH)}thread_native.h
-shape.$(OBJEXT): {$(VPATH)}variable.h
-shape.$(OBJEXT): {$(VPATH)}vm_core.h
-shape.$(OBJEXT): {$(VPATH)}vm_debug.h
-shape.$(OBJEXT): {$(VPATH)}vm_opts.h
-shape.$(OBJEXT): {$(VPATH)}vm_sync.h
signal.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
signal.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
signal.$(OBJEXT): $(CCAN_DIR)/list/list.h
signal.$(OBJEXT): $(CCAN_DIR)/str/str.h
signal.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-signal.$(OBJEXT): $(top_srcdir)/internal/array.h
-signal.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-signal.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-signal.$(OBJEXT): $(top_srcdir)/internal/eval.h
-signal.$(OBJEXT): $(top_srcdir)/internal/gc.h
-signal.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-signal.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-signal.$(OBJEXT): $(top_srcdir)/internal/serial.h
-signal.$(OBJEXT): $(top_srcdir)/internal/signal.h
-signal.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-signal.$(OBJEXT): $(top_srcdir)/internal/string.h
-signal.$(OBJEXT): $(top_srcdir)/internal/thread.h
-signal.$(OBJEXT): $(top_srcdir)/internal/variable.h
-signal.$(OBJEXT): $(top_srcdir)/internal/vm.h
-signal.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-signal.$(OBJEXT): {$(VPATH)}assert.h
-signal.$(OBJEXT): {$(VPATH)}atomic.h
-signal.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-signal.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-signal.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-signal.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-signal.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-signal.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-signal.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-signal.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-signal.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+signal.$(OBJEXT): $(top_srcdir)/include/ruby.h
signal.$(OBJEXT): {$(VPATH)}config.h
-signal.$(OBJEXT): {$(VPATH)}constant.h
-signal.$(OBJEXT): {$(VPATH)}debug_counter.h
signal.$(OBJEXT): {$(VPATH)}defines.h
signal.$(OBJEXT): {$(VPATH)}encoding.h
signal.$(OBJEXT): {$(VPATH)}eval_intern.h
signal.$(OBJEXT): {$(VPATH)}id.h
-signal.$(OBJEXT): {$(VPATH)}id_table.h
signal.$(OBJEXT): {$(VPATH)}intern.h
signal.$(OBJEXT): {$(VPATH)}internal.h
-signal.$(OBJEXT): {$(VPATH)}internal/abi.h
-signal.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-signal.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-signal.$(OBJEXT): {$(VPATH)}internal/assume.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-signal.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-signal.$(OBJEXT): {$(VPATH)}internal/cast.h
-signal.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-signal.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-signal.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-signal.$(OBJEXT): {$(VPATH)}internal/config.h
-signal.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-signal.$(OBJEXT): {$(VPATH)}internal/core.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-signal.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-signal.$(OBJEXT): {$(VPATH)}internal/ctype.h
-signal.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-signal.$(OBJEXT): {$(VPATH)}internal/dosish.h
-signal.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-signal.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-signal.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-signal.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-signal.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-signal.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-signal.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-signal.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-signal.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-signal.$(OBJEXT): {$(VPATH)}internal/error.h
-signal.$(OBJEXT): {$(VPATH)}internal/eval.h
-signal.$(OBJEXT): {$(VPATH)}internal/event.h
-signal.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-signal.$(OBJEXT): {$(VPATH)}internal/gc.h
-signal.$(OBJEXT): {$(VPATH)}internal/glob.h
-signal.$(OBJEXT): {$(VPATH)}internal/globals.h
-signal.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-signal.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-signal.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-signal.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-signal.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-signal.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-signal.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-signal.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-signal.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-signal.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-signal.$(OBJEXT): {$(VPATH)}internal/iterator.h
-signal.$(OBJEXT): {$(VPATH)}internal/memory.h
-signal.$(OBJEXT): {$(VPATH)}internal/method.h
-signal.$(OBJEXT): {$(VPATH)}internal/module.h
-signal.$(OBJEXT): {$(VPATH)}internal/newobj.h
-signal.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-signal.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-signal.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-signal.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-signal.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-signal.$(OBJEXT): {$(VPATH)}internal/symbol.h
-signal.$(OBJEXT): {$(VPATH)}internal/value.h
-signal.$(OBJEXT): {$(VPATH)}internal/value_type.h
-signal.$(OBJEXT): {$(VPATH)}internal/variable.h
-signal.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-signal.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+signal.$(OBJEXT): {$(VPATH)}io.h
signal.$(OBJEXT): {$(VPATH)}method.h
signal.$(OBJEXT): {$(VPATH)}missing.h
signal.$(OBJEXT): {$(VPATH)}node.h
signal.$(OBJEXT): {$(VPATH)}onigmo.h
signal.$(OBJEXT): {$(VPATH)}oniguruma.h
-signal.$(OBJEXT): {$(VPATH)}ractor.h
-signal.$(OBJEXT): {$(VPATH)}ractor_core.h
signal.$(OBJEXT): {$(VPATH)}ruby_assert.h
signal.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-signal.$(OBJEXT): {$(VPATH)}shape.h
signal.$(OBJEXT): {$(VPATH)}signal.c
signal.$(OBJEXT): {$(VPATH)}st.h
signal.$(OBJEXT): {$(VPATH)}subst.h
@@ -14635,536 +2540,49 @@ signal.$(OBJEXT): {$(VPATH)}vm_core.h
signal.$(OBJEXT): {$(VPATH)}vm_debug.h
signal.$(OBJEXT): {$(VPATH)}vm_opts.h
sprintf.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/bits.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/class.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/error.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/gc.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/hash.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/object.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/serial.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/string.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/variable.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/vm.h
-sprintf.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-sprintf.$(OBJEXT): {$(VPATH)}assert.h
-sprintf.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-sprintf.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-sprintf.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-sprintf.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-sprintf.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-sprintf.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-sprintf.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-sprintf.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-sprintf.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+sprintf.$(OBJEXT): $(top_srcdir)/include/ruby.h
sprintf.$(OBJEXT): {$(VPATH)}config.h
-sprintf.$(OBJEXT): {$(VPATH)}constant.h
sprintf.$(OBJEXT): {$(VPATH)}defines.h
sprintf.$(OBJEXT): {$(VPATH)}encoding.h
sprintf.$(OBJEXT): {$(VPATH)}id.h
-sprintf.$(OBJEXT): {$(VPATH)}id_table.h
sprintf.$(OBJEXT): {$(VPATH)}intern.h
sprintf.$(OBJEXT): {$(VPATH)}internal.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/abi.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/assume.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/cast.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/config.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/ctype.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/dosish.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/error.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/eval.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/event.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/gc.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/glob.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/globals.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/iterator.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/memory.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/method.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/module.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/newobj.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/symbol.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/value.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/value_type.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/variable.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-sprintf.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+sprintf.$(OBJEXT): {$(VPATH)}io.h
sprintf.$(OBJEXT): {$(VPATH)}missing.h
sprintf.$(OBJEXT): {$(VPATH)}onigmo.h
sprintf.$(OBJEXT): {$(VPATH)}oniguruma.h
sprintf.$(OBJEXT): {$(VPATH)}re.h
sprintf.$(OBJEXT): {$(VPATH)}regex.h
-sprintf.$(OBJEXT): {$(VPATH)}shape.h
sprintf.$(OBJEXT): {$(VPATH)}sprintf.c
sprintf.$(OBJEXT): {$(VPATH)}st.h
sprintf.$(OBJEXT): {$(VPATH)}subst.h
-sprintf.$(OBJEXT): {$(VPATH)}util.h
sprintf.$(OBJEXT): {$(VPATH)}vsnprintf.c
+st.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+st.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+st.$(OBJEXT): $(CCAN_DIR)/list/list.h
+st.$(OBJEXT): $(CCAN_DIR)/str/str.h
st.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-st.$(OBJEXT): $(top_srcdir)/internal/bits.h
-st.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-st.$(OBJEXT): $(top_srcdir)/internal/hash.h
-st.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-st.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-st.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-st.$(OBJEXT): {$(VPATH)}assert.h
-st.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-st.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-st.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-st.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-st.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-st.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-st.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-st.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-st.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+st.$(OBJEXT): $(top_srcdir)/include/ruby.h
st.$(OBJEXT): {$(VPATH)}config.h
st.$(OBJEXT): {$(VPATH)}defines.h
+st.$(OBJEXT): {$(VPATH)}encoding.h
st.$(OBJEXT): {$(VPATH)}intern.h
st.$(OBJEXT): {$(VPATH)}internal.h
-st.$(OBJEXT): {$(VPATH)}internal/abi.h
-st.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-st.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-st.$(OBJEXT): {$(VPATH)}internal/assume.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-st.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-st.$(OBJEXT): {$(VPATH)}internal/cast.h
-st.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-st.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-st.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-st.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-st.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-st.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-st.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-st.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-st.$(OBJEXT): {$(VPATH)}internal/config.h
-st.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-st.$(OBJEXT): {$(VPATH)}internal/core.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-st.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-st.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-st.$(OBJEXT): {$(VPATH)}internal/ctype.h
-st.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-st.$(OBJEXT): {$(VPATH)}internal/dosish.h
-st.$(OBJEXT): {$(VPATH)}internal/error.h
-st.$(OBJEXT): {$(VPATH)}internal/eval.h
-st.$(OBJEXT): {$(VPATH)}internal/event.h
-st.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-st.$(OBJEXT): {$(VPATH)}internal/gc.h
-st.$(OBJEXT): {$(VPATH)}internal/glob.h
-st.$(OBJEXT): {$(VPATH)}internal/globals.h
-st.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-st.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-st.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-st.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-st.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-st.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-st.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-st.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-st.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-st.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-st.$(OBJEXT): {$(VPATH)}internal/iterator.h
-st.$(OBJEXT): {$(VPATH)}internal/memory.h
-st.$(OBJEXT): {$(VPATH)}internal/method.h
-st.$(OBJEXT): {$(VPATH)}internal/module.h
-st.$(OBJEXT): {$(VPATH)}internal/newobj.h
-st.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-st.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-st.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-st.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-st.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-st.$(OBJEXT): {$(VPATH)}internal/symbol.h
-st.$(OBJEXT): {$(VPATH)}internal/value.h
-st.$(OBJEXT): {$(VPATH)}internal/value_type.h
-st.$(OBJEXT): {$(VPATH)}internal/variable.h
-st.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-st.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+st.$(OBJEXT): {$(VPATH)}io.h
st.$(OBJEXT): {$(VPATH)}missing.h
+st.$(OBJEXT): {$(VPATH)}onigmo.h
+st.$(OBJEXT): {$(VPATH)}oniguruma.h
st.$(OBJEXT): {$(VPATH)}st.c
st.$(OBJEXT): {$(VPATH)}st.h
st.$(OBJEXT): {$(VPATH)}subst.h
strftime.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-strftime.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-strftime.$(OBJEXT): $(top_srcdir)/internal/encoding.h
-strftime.$(OBJEXT): $(top_srcdir)/internal/serial.h
-strftime.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-strftime.$(OBJEXT): $(top_srcdir)/internal/string.h
-strftime.$(OBJEXT): $(top_srcdir)/internal/vm.h
-strftime.$(OBJEXT): {$(VPATH)}assert.h
-strftime.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-strftime.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-strftime.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-strftime.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-strftime.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-strftime.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-strftime.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-strftime.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-strftime.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+strftime.$(OBJEXT): $(top_srcdir)/include/ruby.h
strftime.$(OBJEXT): {$(VPATH)}config.h
strftime.$(OBJEXT): {$(VPATH)}defines.h
strftime.$(OBJEXT): {$(VPATH)}encoding.h
strftime.$(OBJEXT): {$(VPATH)}intern.h
strftime.$(OBJEXT): {$(VPATH)}internal.h
-strftime.$(OBJEXT): {$(VPATH)}internal/abi.h
-strftime.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-strftime.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-strftime.$(OBJEXT): {$(VPATH)}internal/assume.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-strftime.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-strftime.$(OBJEXT): {$(VPATH)}internal/cast.h
-strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-strftime.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-strftime.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-strftime.$(OBJEXT): {$(VPATH)}internal/config.h
-strftime.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-strftime.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-strftime.$(OBJEXT): {$(VPATH)}internal/ctype.h
-strftime.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-strftime.$(OBJEXT): {$(VPATH)}internal/dosish.h
-strftime.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-strftime.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-strftime.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-strftime.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-strftime.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-strftime.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-strftime.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-strftime.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-strftime.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-strftime.$(OBJEXT): {$(VPATH)}internal/error.h
-strftime.$(OBJEXT): {$(VPATH)}internal/eval.h
-strftime.$(OBJEXT): {$(VPATH)}internal/event.h
-strftime.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-strftime.$(OBJEXT): {$(VPATH)}internal/gc.h
-strftime.$(OBJEXT): {$(VPATH)}internal/glob.h
-strftime.$(OBJEXT): {$(VPATH)}internal/globals.h
-strftime.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-strftime.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-strftime.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-strftime.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-strftime.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-strftime.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-strftime.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-strftime.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-strftime.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-strftime.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-strftime.$(OBJEXT): {$(VPATH)}internal/iterator.h
-strftime.$(OBJEXT): {$(VPATH)}internal/memory.h
-strftime.$(OBJEXT): {$(VPATH)}internal/method.h
-strftime.$(OBJEXT): {$(VPATH)}internal/module.h
-strftime.$(OBJEXT): {$(VPATH)}internal/newobj.h
-strftime.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-strftime.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-strftime.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-strftime.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-strftime.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-strftime.$(OBJEXT): {$(VPATH)}internal/symbol.h
-strftime.$(OBJEXT): {$(VPATH)}internal/value.h
-strftime.$(OBJEXT): {$(VPATH)}internal/value_type.h
-strftime.$(OBJEXT): {$(VPATH)}internal/variable.h
-strftime.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-strftime.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+strftime.$(OBJEXT): {$(VPATH)}io.h
strftime.$(OBJEXT): {$(VPATH)}missing.h
strftime.$(OBJEXT): {$(VPATH)}onigmo.h
strftime.$(OBJEXT): {$(VPATH)}oniguruma.h
@@ -15172,209 +2590,20 @@ strftime.$(OBJEXT): {$(VPATH)}st.h
strftime.$(OBJEXT): {$(VPATH)}strftime.c
strftime.$(OBJEXT): {$(VPATH)}subst.h
strftime.$(OBJEXT): {$(VPATH)}timev.h
-strftime.$(OBJEXT): {$(VPATH)}util.h
-string.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-string.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-string.$(OBJEXT): $(CCAN_DIR)/list/list.h
-string.$(OBJEXT): $(CCAN_DIR)/str/str.h
string.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-string.$(OBJEXT): $(top_srcdir)/internal/array.h
-string.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-string.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-string.$(OBJEXT): $(top_srcdir)/internal/bits.h
-string.$(OBJEXT): $(top_srcdir)/internal/class.h
-string.$(OBJEXT): $(top_srcdir)/internal/compar.h
-string.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-string.$(OBJEXT): $(top_srcdir)/internal/encoding.h
-string.$(OBJEXT): $(top_srcdir)/internal/error.h
-string.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-string.$(OBJEXT): $(top_srcdir)/internal/gc.h
-string.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-string.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-string.$(OBJEXT): $(top_srcdir)/internal/object.h
-string.$(OBJEXT): $(top_srcdir)/internal/proc.h
-string.$(OBJEXT): $(top_srcdir)/internal/re.h
-string.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-string.$(OBJEXT): $(top_srcdir)/internal/serial.h
-string.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-string.$(OBJEXT): $(top_srcdir)/internal/string.h
-string.$(OBJEXT): $(top_srcdir)/internal/transcode.h
-string.$(OBJEXT): $(top_srcdir)/internal/variable.h
-string.$(OBJEXT): $(top_srcdir)/internal/vm.h
-string.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-string.$(OBJEXT): {$(VPATH)}assert.h
-string.$(OBJEXT): {$(VPATH)}atomic.h
-string.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-string.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-string.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-string.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-string.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-string.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-string.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-string.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-string.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+string.$(OBJEXT): $(top_srcdir)/include/ruby.h
string.$(OBJEXT): {$(VPATH)}config.h
-string.$(OBJEXT): {$(VPATH)}constant.h
+string.$(OBJEXT): {$(VPATH)}crypt.h
string.$(OBJEXT): {$(VPATH)}debug_counter.h
string.$(OBJEXT): {$(VPATH)}defines.h
string.$(OBJEXT): {$(VPATH)}encindex.h
string.$(OBJEXT): {$(VPATH)}encoding.h
+string.$(OBJEXT): {$(VPATH)}gc.h
string.$(OBJEXT): {$(VPATH)}id.h
-string.$(OBJEXT): {$(VPATH)}id_table.h
string.$(OBJEXT): {$(VPATH)}intern.h
string.$(OBJEXT): {$(VPATH)}internal.h
-string.$(OBJEXT): {$(VPATH)}internal/abi.h
-string.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-string.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-string.$(OBJEXT): {$(VPATH)}internal/assume.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-string.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-string.$(OBJEXT): {$(VPATH)}internal/cast.h
-string.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-string.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-string.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-string.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-string.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-string.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-string.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-string.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-string.$(OBJEXT): {$(VPATH)}internal/config.h
-string.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-string.$(OBJEXT): {$(VPATH)}internal/core.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rmatch.h
-string.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-string.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-string.$(OBJEXT): {$(VPATH)}internal/ctype.h
-string.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-string.$(OBJEXT): {$(VPATH)}internal/dosish.h
-string.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-string.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-string.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-string.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-string.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-string.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-string.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-string.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-string.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-string.$(OBJEXT): {$(VPATH)}internal/error.h
-string.$(OBJEXT): {$(VPATH)}internal/eval.h
-string.$(OBJEXT): {$(VPATH)}internal/event.h
-string.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-string.$(OBJEXT): {$(VPATH)}internal/gc.h
-string.$(OBJEXT): {$(VPATH)}internal/glob.h
-string.$(OBJEXT): {$(VPATH)}internal/globals.h
-string.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-string.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-string.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-string.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-string.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-string.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-string.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-string.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-string.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-string.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-string.$(OBJEXT): {$(VPATH)}internal/iterator.h
-string.$(OBJEXT): {$(VPATH)}internal/memory.h
-string.$(OBJEXT): {$(VPATH)}internal/method.h
-string.$(OBJEXT): {$(VPATH)}internal/module.h
-string.$(OBJEXT): {$(VPATH)}internal/newobj.h
-string.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-string.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-string.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-string.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-string.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-string.$(OBJEXT): {$(VPATH)}internal/symbol.h
-string.$(OBJEXT): {$(VPATH)}internal/value.h
-string.$(OBJEXT): {$(VPATH)}internal/value_type.h
-string.$(OBJEXT): {$(VPATH)}internal/variable.h
-string.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-string.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-string.$(OBJEXT): {$(VPATH)}method.h
+string.$(OBJEXT): {$(VPATH)}io.h
string.$(OBJEXT): {$(VPATH)}missing.h
-string.$(OBJEXT): {$(VPATH)}node.h
string.$(OBJEXT): {$(VPATH)}onigmo.h
string.$(OBJEXT): {$(VPATH)}oniguruma.h
string.$(OBJEXT): {$(VPATH)}probes.dmyh
@@ -15382,46 +2611,13 @@ string.$(OBJEXT): {$(VPATH)}probes.h
string.$(OBJEXT): {$(VPATH)}re.h
string.$(OBJEXT): {$(VPATH)}regex.h
string.$(OBJEXT): {$(VPATH)}ruby_assert.h
-string.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-string.$(OBJEXT): {$(VPATH)}shape.h
string.$(OBJEXT): {$(VPATH)}st.h
string.$(OBJEXT): {$(VPATH)}string.c
string.$(OBJEXT): {$(VPATH)}subst.h
-string.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-string.$(OBJEXT): {$(VPATH)}thread_native.h
-string.$(OBJEXT): {$(VPATH)}util.h
-string.$(OBJEXT): {$(VPATH)}vm_core.h
-string.$(OBJEXT): {$(VPATH)}vm_debug.h
-string.$(OBJEXT): {$(VPATH)}vm_opts.h
-string.$(OBJEXT): {$(VPATH)}vm_sync.h
strlcat.$(OBJEXT): {$(VPATH)}config.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/config.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-strlcat.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
strlcat.$(OBJEXT): {$(VPATH)}missing.h
strlcat.$(OBJEXT): {$(VPATH)}strlcat.c
strlcpy.$(OBJEXT): {$(VPATH)}config.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/config.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-strlcpy.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
strlcpy.$(OBJEXT): {$(VPATH)}missing.h
strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c
struct.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
@@ -15429,192 +2625,14 @@ struct.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
struct.$(OBJEXT): $(CCAN_DIR)/list/list.h
struct.$(OBJEXT): $(CCAN_DIR)/str/str.h
struct.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-struct.$(OBJEXT): $(top_srcdir)/internal/array.h
-struct.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-struct.$(OBJEXT): $(top_srcdir)/internal/class.h
-struct.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-struct.$(OBJEXT): $(top_srcdir)/internal/error.h
-struct.$(OBJEXT): $(top_srcdir)/internal/gc.h
-struct.$(OBJEXT): $(top_srcdir)/internal/hash.h
-struct.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-struct.$(OBJEXT): $(top_srcdir)/internal/object.h
-struct.$(OBJEXT): $(top_srcdir)/internal/proc.h
-struct.$(OBJEXT): $(top_srcdir)/internal/serial.h
-struct.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-struct.$(OBJEXT): $(top_srcdir)/internal/string.h
-struct.$(OBJEXT): $(top_srcdir)/internal/struct.h
-struct.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-struct.$(OBJEXT): $(top_srcdir)/internal/variable.h
-struct.$(OBJEXT): $(top_srcdir)/internal/vm.h
-struct.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-struct.$(OBJEXT): {$(VPATH)}assert.h
-struct.$(OBJEXT): {$(VPATH)}atomic.h
-struct.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-struct.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-struct.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-struct.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-struct.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-struct.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-struct.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-struct.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-struct.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-struct.$(OBJEXT): {$(VPATH)}builtin.h
+struct.$(OBJEXT): $(top_srcdir)/include/ruby.h
struct.$(OBJEXT): {$(VPATH)}config.h
-struct.$(OBJEXT): {$(VPATH)}constant.h
struct.$(OBJEXT): {$(VPATH)}defines.h
struct.$(OBJEXT): {$(VPATH)}encoding.h
struct.$(OBJEXT): {$(VPATH)}id.h
-struct.$(OBJEXT): {$(VPATH)}id_table.h
struct.$(OBJEXT): {$(VPATH)}intern.h
struct.$(OBJEXT): {$(VPATH)}internal.h
-struct.$(OBJEXT): {$(VPATH)}internal/abi.h
-struct.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-struct.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-struct.$(OBJEXT): {$(VPATH)}internal/assume.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-struct.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-struct.$(OBJEXT): {$(VPATH)}internal/cast.h
-struct.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-struct.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-struct.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-struct.$(OBJEXT): {$(VPATH)}internal/config.h
-struct.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-struct.$(OBJEXT): {$(VPATH)}internal/core.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-struct.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-struct.$(OBJEXT): {$(VPATH)}internal/ctype.h
-struct.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-struct.$(OBJEXT): {$(VPATH)}internal/dosish.h
-struct.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-struct.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-struct.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-struct.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-struct.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-struct.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-struct.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-struct.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-struct.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-struct.$(OBJEXT): {$(VPATH)}internal/error.h
-struct.$(OBJEXT): {$(VPATH)}internal/eval.h
-struct.$(OBJEXT): {$(VPATH)}internal/event.h
-struct.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-struct.$(OBJEXT): {$(VPATH)}internal/gc.h
-struct.$(OBJEXT): {$(VPATH)}internal/glob.h
-struct.$(OBJEXT): {$(VPATH)}internal/globals.h
-struct.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-struct.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-struct.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-struct.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-struct.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-struct.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-struct.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-struct.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-struct.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-struct.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-struct.$(OBJEXT): {$(VPATH)}internal/iterator.h
-struct.$(OBJEXT): {$(VPATH)}internal/memory.h
-struct.$(OBJEXT): {$(VPATH)}internal/method.h
-struct.$(OBJEXT): {$(VPATH)}internal/module.h
-struct.$(OBJEXT): {$(VPATH)}internal/newobj.h
-struct.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-struct.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-struct.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-struct.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-struct.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-struct.$(OBJEXT): {$(VPATH)}internal/symbol.h
-struct.$(OBJEXT): {$(VPATH)}internal/value.h
-struct.$(OBJEXT): {$(VPATH)}internal/value_type.h
-struct.$(OBJEXT): {$(VPATH)}internal/variable.h
-struct.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-struct.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+struct.$(OBJEXT): {$(VPATH)}io.h
struct.$(OBJEXT): {$(VPATH)}method.h
struct.$(OBJEXT): {$(VPATH)}missing.h
struct.$(OBJEXT): {$(VPATH)}node.h
@@ -15622,443 +2640,59 @@ struct.$(OBJEXT): {$(VPATH)}onigmo.h
struct.$(OBJEXT): {$(VPATH)}oniguruma.h
struct.$(OBJEXT): {$(VPATH)}ruby_assert.h
struct.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-struct.$(OBJEXT): {$(VPATH)}shape.h
struct.$(OBJEXT): {$(VPATH)}st.h
struct.$(OBJEXT): {$(VPATH)}struct.c
struct.$(OBJEXT): {$(VPATH)}subst.h
struct.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
struct.$(OBJEXT): {$(VPATH)}thread_native.h
-struct.$(OBJEXT): {$(VPATH)}transient_heap.h
struct.$(OBJEXT): {$(VPATH)}vm_core.h
+struct.$(OBJEXT): {$(VPATH)}vm_debug.h
struct.$(OBJEXT): {$(VPATH)}vm_opts.h
-symbol.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-symbol.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-symbol.$(OBJEXT): $(CCAN_DIR)/list/list.h
-symbol.$(OBJEXT): $(CCAN_DIR)/str/str.h
symbol.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/array.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/class.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/error.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/gc.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/hash.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/object.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/serial.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/string.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/variable.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/vm.h
-symbol.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-symbol.$(OBJEXT): {$(VPATH)}assert.h
-symbol.$(OBJEXT): {$(VPATH)}atomic.h
-symbol.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-symbol.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-symbol.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-symbol.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-symbol.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-symbol.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-symbol.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-symbol.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-symbol.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-symbol.$(OBJEXT): {$(VPATH)}builtin.h
+symbol.$(OBJEXT): $(top_srcdir)/include/ruby.h
symbol.$(OBJEXT): {$(VPATH)}config.h
-symbol.$(OBJEXT): {$(VPATH)}constant.h
-symbol.$(OBJEXT): {$(VPATH)}debug_counter.h
symbol.$(OBJEXT): {$(VPATH)}defines.h
symbol.$(OBJEXT): {$(VPATH)}encoding.h
+symbol.$(OBJEXT): {$(VPATH)}gc.h
symbol.$(OBJEXT): {$(VPATH)}id.c
symbol.$(OBJEXT): {$(VPATH)}id.h
symbol.$(OBJEXT): {$(VPATH)}id_table.c
symbol.$(OBJEXT): {$(VPATH)}id_table.h
symbol.$(OBJEXT): {$(VPATH)}intern.h
symbol.$(OBJEXT): {$(VPATH)}internal.h
-symbol.$(OBJEXT): {$(VPATH)}internal/abi.h
-symbol.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-symbol.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-symbol.$(OBJEXT): {$(VPATH)}internal/assume.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-symbol.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-symbol.$(OBJEXT): {$(VPATH)}internal/cast.h
-symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-symbol.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-symbol.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-symbol.$(OBJEXT): {$(VPATH)}internal/config.h
-symbol.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-symbol.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-symbol.$(OBJEXT): {$(VPATH)}internal/ctype.h
-symbol.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-symbol.$(OBJEXT): {$(VPATH)}internal/dosish.h
-symbol.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-symbol.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-symbol.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-symbol.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-symbol.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-symbol.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-symbol.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-symbol.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-symbol.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-symbol.$(OBJEXT): {$(VPATH)}internal/error.h
-symbol.$(OBJEXT): {$(VPATH)}internal/eval.h
-symbol.$(OBJEXT): {$(VPATH)}internal/event.h
-symbol.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-symbol.$(OBJEXT): {$(VPATH)}internal/gc.h
-symbol.$(OBJEXT): {$(VPATH)}internal/glob.h
-symbol.$(OBJEXT): {$(VPATH)}internal/globals.h
-symbol.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-symbol.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-symbol.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-symbol.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-symbol.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-symbol.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-symbol.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-symbol.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-symbol.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-symbol.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-symbol.$(OBJEXT): {$(VPATH)}internal/iterator.h
-symbol.$(OBJEXT): {$(VPATH)}internal/memory.h
-symbol.$(OBJEXT): {$(VPATH)}internal/method.h
-symbol.$(OBJEXT): {$(VPATH)}internal/module.h
-symbol.$(OBJEXT): {$(VPATH)}internal/newobj.h
-symbol.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-symbol.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-symbol.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-symbol.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-symbol.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-symbol.$(OBJEXT): {$(VPATH)}internal/symbol.h
-symbol.$(OBJEXT): {$(VPATH)}internal/value.h
-symbol.$(OBJEXT): {$(VPATH)}internal/value_type.h
-symbol.$(OBJEXT): {$(VPATH)}internal/variable.h
-symbol.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-symbol.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-symbol.$(OBJEXT): {$(VPATH)}method.h
+symbol.$(OBJEXT): {$(VPATH)}io.h
symbol.$(OBJEXT): {$(VPATH)}missing.h
-symbol.$(OBJEXT): {$(VPATH)}node.h
symbol.$(OBJEXT): {$(VPATH)}onigmo.h
symbol.$(OBJEXT): {$(VPATH)}oniguruma.h
symbol.$(OBJEXT): {$(VPATH)}probes.dmyh
symbol.$(OBJEXT): {$(VPATH)}probes.h
symbol.$(OBJEXT): {$(VPATH)}ruby_assert.h
-symbol.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-symbol.$(OBJEXT): {$(VPATH)}shape.h
symbol.$(OBJEXT): {$(VPATH)}st.h
symbol.$(OBJEXT): {$(VPATH)}subst.h
symbol.$(OBJEXT): {$(VPATH)}symbol.c
symbol.$(OBJEXT): {$(VPATH)}symbol.h
-symbol.$(OBJEXT): {$(VPATH)}symbol.rb
-symbol.$(OBJEXT): {$(VPATH)}symbol.rbinc
-symbol.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-symbol.$(OBJEXT): {$(VPATH)}thread_native.h
-symbol.$(OBJEXT): {$(VPATH)}vm_core.h
-symbol.$(OBJEXT): {$(VPATH)}vm_debug.h
-symbol.$(OBJEXT): {$(VPATH)}vm_opts.h
-symbol.$(OBJEXT): {$(VPATH)}vm_sync.h
thread.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
thread.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
thread.$(OBJEXT): $(CCAN_DIR)/list/list.h
thread.$(OBJEXT): $(CCAN_DIR)/str/str.h
-thread.$(OBJEXT): $(hdrdir)/ruby.h
thread.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-thread.$(OBJEXT): $(top_srcdir)/internal/array.h
-thread.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-thread.$(OBJEXT): $(top_srcdir)/internal/bits.h
-thread.$(OBJEXT): $(top_srcdir)/internal/class.h
-thread.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-thread.$(OBJEXT): $(top_srcdir)/internal/cont.h
-thread.$(OBJEXT): $(top_srcdir)/internal/error.h
-thread.$(OBJEXT): $(top_srcdir)/internal/gc.h
-thread.$(OBJEXT): $(top_srcdir)/internal/hash.h
-thread.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-thread.$(OBJEXT): $(top_srcdir)/internal/io.h
-thread.$(OBJEXT): $(top_srcdir)/internal/object.h
-thread.$(OBJEXT): $(top_srcdir)/internal/proc.h
-thread.$(OBJEXT): $(top_srcdir)/internal/serial.h
-thread.$(OBJEXT): $(top_srcdir)/internal/signal.h
-thread.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-thread.$(OBJEXT): $(top_srcdir)/internal/string.h
-thread.$(OBJEXT): $(top_srcdir)/internal/thread.h
-thread.$(OBJEXT): $(top_srcdir)/internal/time.h
-thread.$(OBJEXT): $(top_srcdir)/internal/variable.h
-thread.$(OBJEXT): $(top_srcdir)/internal/vm.h
-thread.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-thread.$(OBJEXT): {$(VPATH)}assert.h
-thread.$(OBJEXT): {$(VPATH)}atomic.h
-thread.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-thread.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-thread.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-thread.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-thread.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-thread.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-thread.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-thread.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-thread.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-thread.$(OBJEXT): {$(VPATH)}builtin.h
+thread.$(OBJEXT): $(top_srcdir)/include/ruby.h
thread.$(OBJEXT): {$(VPATH)}config.h
-thread.$(OBJEXT): {$(VPATH)}constant.h
-thread.$(OBJEXT): {$(VPATH)}debug.h
-thread.$(OBJEXT): {$(VPATH)}debug_counter.h
thread.$(OBJEXT): {$(VPATH)}defines.h
thread.$(OBJEXT): {$(VPATH)}encoding.h
thread.$(OBJEXT): {$(VPATH)}eval_intern.h
-thread.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
-thread.$(OBJEXT): {$(VPATH)}hrtime.h
+thread.$(OBJEXT): {$(VPATH)}gc.h
thread.$(OBJEXT): {$(VPATH)}id.h
-thread.$(OBJEXT): {$(VPATH)}id_table.h
thread.$(OBJEXT): {$(VPATH)}intern.h
thread.$(OBJEXT): {$(VPATH)}internal.h
-thread.$(OBJEXT): {$(VPATH)}internal/abi.h
-thread.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-thread.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-thread.$(OBJEXT): {$(VPATH)}internal/assume.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-thread.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-thread.$(OBJEXT): {$(VPATH)}internal/cast.h
-thread.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-thread.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-thread.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-thread.$(OBJEXT): {$(VPATH)}internal/config.h
-thread.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-thread.$(OBJEXT): {$(VPATH)}internal/core.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-thread.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-thread.$(OBJEXT): {$(VPATH)}internal/ctype.h
-thread.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-thread.$(OBJEXT): {$(VPATH)}internal/dosish.h
-thread.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-thread.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-thread.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-thread.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-thread.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-thread.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-thread.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-thread.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-thread.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-thread.$(OBJEXT): {$(VPATH)}internal/error.h
-thread.$(OBJEXT): {$(VPATH)}internal/eval.h
-thread.$(OBJEXT): {$(VPATH)}internal/event.h
-thread.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-thread.$(OBJEXT): {$(VPATH)}internal/gc.h
-thread.$(OBJEXT): {$(VPATH)}internal/glob.h
-thread.$(OBJEXT): {$(VPATH)}internal/globals.h
-thread.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-thread.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-thread.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-thread.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-thread.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-thread.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-thread.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-thread.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-thread.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-thread.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-thread.$(OBJEXT): {$(VPATH)}internal/iterator.h
-thread.$(OBJEXT): {$(VPATH)}internal/memory.h
-thread.$(OBJEXT): {$(VPATH)}internal/method.h
-thread.$(OBJEXT): {$(VPATH)}internal/module.h
-thread.$(OBJEXT): {$(VPATH)}internal/newobj.h
-thread.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-thread.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-thread.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-thread.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-thread.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-thread.$(OBJEXT): {$(VPATH)}internal/symbol.h
-thread.$(OBJEXT): {$(VPATH)}internal/value.h
-thread.$(OBJEXT): {$(VPATH)}internal/value_type.h
-thread.$(OBJEXT): {$(VPATH)}internal/variable.h
-thread.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-thread.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
thread.$(OBJEXT): {$(VPATH)}io.h
-thread.$(OBJEXT): {$(VPATH)}iseq.h
thread.$(OBJEXT): {$(VPATH)}method.h
thread.$(OBJEXT): {$(VPATH)}missing.h
thread.$(OBJEXT): {$(VPATH)}node.h
thread.$(OBJEXT): {$(VPATH)}onigmo.h
thread.$(OBJEXT): {$(VPATH)}oniguruma.h
-thread.$(OBJEXT): {$(VPATH)}ractor.h
-thread.$(OBJEXT): {$(VPATH)}ractor_core.h
-thread.$(OBJEXT): {$(VPATH)}rjit.h
thread.$(OBJEXT): {$(VPATH)}ruby_assert.h
thread.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-thread.$(OBJEXT): {$(VPATH)}shape.h
thread.$(OBJEXT): {$(VPATH)}st.h
thread.$(OBJEXT): {$(VPATH)}subst.h
thread.$(OBJEXT): {$(VPATH)}thread.c
@@ -16067,763 +2701,52 @@ thread.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).c
thread.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
thread.$(OBJEXT): {$(VPATH)}thread_native.h
thread.$(OBJEXT): {$(VPATH)}thread_sync.c
-thread.$(OBJEXT): {$(VPATH)}thread_sync.rbinc
thread.$(OBJEXT): {$(VPATH)}timev.h
thread.$(OBJEXT): {$(VPATH)}vm_core.h
thread.$(OBJEXT): {$(VPATH)}vm_debug.h
thread.$(OBJEXT): {$(VPATH)}vm_opts.h
-thread.$(OBJEXT): {$(VPATH)}vm_sync.h
-time.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-time.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-time.$(OBJEXT): $(CCAN_DIR)/list/list.h
-time.$(OBJEXT): $(CCAN_DIR)/str/str.h
time.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-time.$(OBJEXT): $(top_srcdir)/internal/array.h
-time.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-time.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-time.$(OBJEXT): $(top_srcdir)/internal/bits.h
-time.$(OBJEXT): $(top_srcdir)/internal/compar.h
-time.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-time.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-time.$(OBJEXT): $(top_srcdir)/internal/gc.h
-time.$(OBJEXT): $(top_srcdir)/internal/hash.h
-time.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-time.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-time.$(OBJEXT): $(top_srcdir)/internal/rational.h
-time.$(OBJEXT): $(top_srcdir)/internal/serial.h
-time.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-time.$(OBJEXT): $(top_srcdir)/internal/string.h
-time.$(OBJEXT): $(top_srcdir)/internal/time.h
-time.$(OBJEXT): $(top_srcdir)/internal/variable.h
-time.$(OBJEXT): $(top_srcdir)/internal/vm.h
-time.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-time.$(OBJEXT): {$(VPATH)}assert.h
-time.$(OBJEXT): {$(VPATH)}atomic.h
-time.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-time.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-time.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-time.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-time.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-time.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-time.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-time.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-time.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-time.$(OBJEXT): {$(VPATH)}builtin.h
+time.$(OBJEXT): $(top_srcdir)/include/ruby.h
time.$(OBJEXT): {$(VPATH)}config.h
-time.$(OBJEXT): {$(VPATH)}constant.h
time.$(OBJEXT): {$(VPATH)}defines.h
time.$(OBJEXT): {$(VPATH)}encoding.h
time.$(OBJEXT): {$(VPATH)}id.h
-time.$(OBJEXT): {$(VPATH)}id_table.h
time.$(OBJEXT): {$(VPATH)}intern.h
time.$(OBJEXT): {$(VPATH)}internal.h
-time.$(OBJEXT): {$(VPATH)}internal/abi.h
-time.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-time.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-time.$(OBJEXT): {$(VPATH)}internal/assume.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-time.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-time.$(OBJEXT): {$(VPATH)}internal/cast.h
-time.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-time.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-time.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-time.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-time.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-time.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-time.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-time.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-time.$(OBJEXT): {$(VPATH)}internal/config.h
-time.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-time.$(OBJEXT): {$(VPATH)}internal/core.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-time.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-time.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-time.$(OBJEXT): {$(VPATH)}internal/ctype.h
-time.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-time.$(OBJEXT): {$(VPATH)}internal/dosish.h
-time.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-time.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-time.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-time.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-time.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-time.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-time.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-time.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-time.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-time.$(OBJEXT): {$(VPATH)}internal/error.h
-time.$(OBJEXT): {$(VPATH)}internal/eval.h
-time.$(OBJEXT): {$(VPATH)}internal/event.h
-time.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-time.$(OBJEXT): {$(VPATH)}internal/gc.h
-time.$(OBJEXT): {$(VPATH)}internal/glob.h
-time.$(OBJEXT): {$(VPATH)}internal/globals.h
-time.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-time.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-time.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-time.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-time.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-time.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-time.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-time.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-time.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-time.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-time.$(OBJEXT): {$(VPATH)}internal/iterator.h
-time.$(OBJEXT): {$(VPATH)}internal/memory.h
-time.$(OBJEXT): {$(VPATH)}internal/method.h
-time.$(OBJEXT): {$(VPATH)}internal/module.h
-time.$(OBJEXT): {$(VPATH)}internal/newobj.h
-time.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-time.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-time.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-time.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-time.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-time.$(OBJEXT): {$(VPATH)}internal/symbol.h
-time.$(OBJEXT): {$(VPATH)}internal/value.h
-time.$(OBJEXT): {$(VPATH)}internal/value_type.h
-time.$(OBJEXT): {$(VPATH)}internal/variable.h
-time.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-time.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-time.$(OBJEXT): {$(VPATH)}method.h
+time.$(OBJEXT): {$(VPATH)}io.h
time.$(OBJEXT): {$(VPATH)}missing.h
-time.$(OBJEXT): {$(VPATH)}node.h
time.$(OBJEXT): {$(VPATH)}onigmo.h
time.$(OBJEXT): {$(VPATH)}oniguruma.h
-time.$(OBJEXT): {$(VPATH)}ruby_assert.h
-time.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-time.$(OBJEXT): {$(VPATH)}shape.h
time.$(OBJEXT): {$(VPATH)}st.h
time.$(OBJEXT): {$(VPATH)}subst.h
-time.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-time.$(OBJEXT): {$(VPATH)}thread_native.h
time.$(OBJEXT): {$(VPATH)}time.c
time.$(OBJEXT): {$(VPATH)}timev.h
-time.$(OBJEXT): {$(VPATH)}timev.rbinc
-time.$(OBJEXT): {$(VPATH)}vm_core.h
-time.$(OBJEXT): {$(VPATH)}vm_opts.h
transcode.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/array.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/class.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/gc.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/inits.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/object.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/serial.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/string.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/transcode.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/variable.h
-transcode.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-transcode.$(OBJEXT): {$(VPATH)}assert.h
-transcode.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-transcode.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-transcode.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-transcode.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-transcode.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-transcode.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-transcode.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-transcode.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-transcode.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+transcode.$(OBJEXT): $(top_srcdir)/include/ruby.h
transcode.$(OBJEXT): {$(VPATH)}config.h
-transcode.$(OBJEXT): {$(VPATH)}constant.h
transcode.$(OBJEXT): {$(VPATH)}defines.h
transcode.$(OBJEXT): {$(VPATH)}encoding.h
-transcode.$(OBJEXT): {$(VPATH)}id.h
-transcode.$(OBJEXT): {$(VPATH)}id_table.h
transcode.$(OBJEXT): {$(VPATH)}intern.h
transcode.$(OBJEXT): {$(VPATH)}internal.h
-transcode.$(OBJEXT): {$(VPATH)}internal/abi.h
-transcode.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-transcode.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-transcode.$(OBJEXT): {$(VPATH)}internal/assume.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-transcode.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-transcode.$(OBJEXT): {$(VPATH)}internal/cast.h
-transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-transcode.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-transcode.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-transcode.$(OBJEXT): {$(VPATH)}internal/config.h
-transcode.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-transcode.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-transcode.$(OBJEXT): {$(VPATH)}internal/ctype.h
-transcode.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-transcode.$(OBJEXT): {$(VPATH)}internal/dosish.h
-transcode.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-transcode.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-transcode.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-transcode.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-transcode.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-transcode.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-transcode.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-transcode.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-transcode.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-transcode.$(OBJEXT): {$(VPATH)}internal/error.h
-transcode.$(OBJEXT): {$(VPATH)}internal/eval.h
-transcode.$(OBJEXT): {$(VPATH)}internal/event.h
-transcode.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-transcode.$(OBJEXT): {$(VPATH)}internal/gc.h
-transcode.$(OBJEXT): {$(VPATH)}internal/glob.h
-transcode.$(OBJEXT): {$(VPATH)}internal/globals.h
-transcode.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-transcode.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-transcode.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-transcode.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-transcode.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-transcode.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-transcode.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-transcode.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-transcode.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-transcode.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-transcode.$(OBJEXT): {$(VPATH)}internal/iterator.h
-transcode.$(OBJEXT): {$(VPATH)}internal/memory.h
-transcode.$(OBJEXT): {$(VPATH)}internal/method.h
-transcode.$(OBJEXT): {$(VPATH)}internal/module.h
-transcode.$(OBJEXT): {$(VPATH)}internal/newobj.h
-transcode.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-transcode.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-transcode.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-transcode.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-transcode.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-transcode.$(OBJEXT): {$(VPATH)}internal/symbol.h
-transcode.$(OBJEXT): {$(VPATH)}internal/value.h
-transcode.$(OBJEXT): {$(VPATH)}internal/value_type.h
-transcode.$(OBJEXT): {$(VPATH)}internal/variable.h
-transcode.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-transcode.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+transcode.$(OBJEXT): {$(VPATH)}io.h
transcode.$(OBJEXT): {$(VPATH)}missing.h
transcode.$(OBJEXT): {$(VPATH)}onigmo.h
transcode.$(OBJEXT): {$(VPATH)}oniguruma.h
-transcode.$(OBJEXT): {$(VPATH)}shape.h
transcode.$(OBJEXT): {$(VPATH)}st.h
transcode.$(OBJEXT): {$(VPATH)}subst.h
transcode.$(OBJEXT): {$(VPATH)}transcode.c
transcode.$(OBJEXT): {$(VPATH)}transcode_data.h
-transient_heap.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-transient_heap.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-transient_heap.$(OBJEXT): $(CCAN_DIR)/list/list.h
-transient_heap.$(OBJEXT): $(CCAN_DIR)/str/str.h
-transient_heap.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/array.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/gc.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/hash.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/serial.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/struct.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/variable.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/vm.h
-transient_heap.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-transient_heap.$(OBJEXT): {$(VPATH)}assert.h
-transient_heap.$(OBJEXT): {$(VPATH)}atomic.h
-transient_heap.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-transient_heap.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-transient_heap.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-transient_heap.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-transient_heap.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-transient_heap.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-transient_heap.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-transient_heap.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-transient_heap.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-transient_heap.$(OBJEXT): {$(VPATH)}config.h
-transient_heap.$(OBJEXT): {$(VPATH)}constant.h
-transient_heap.$(OBJEXT): {$(VPATH)}debug.h
-transient_heap.$(OBJEXT): {$(VPATH)}debug_counter.h
-transient_heap.$(OBJEXT): {$(VPATH)}defines.h
-transient_heap.$(OBJEXT): {$(VPATH)}id.h
-transient_heap.$(OBJEXT): {$(VPATH)}id_table.h
-transient_heap.$(OBJEXT): {$(VPATH)}intern.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/abi.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/assume.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/cast.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/config.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/ctype.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/dosish.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/error.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/eval.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/event.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/gc.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/glob.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/globals.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/iterator.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/memory.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/method.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/module.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/newobj.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/symbol.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/value.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/value_type.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/variable.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-transient_heap.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-transient_heap.$(OBJEXT): {$(VPATH)}method.h
-transient_heap.$(OBJEXT): {$(VPATH)}missing.h
-transient_heap.$(OBJEXT): {$(VPATH)}node.h
-transient_heap.$(OBJEXT): {$(VPATH)}ruby_assert.h
-transient_heap.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-transient_heap.$(OBJEXT): {$(VPATH)}shape.h
-transient_heap.$(OBJEXT): {$(VPATH)}st.h
-transient_heap.$(OBJEXT): {$(VPATH)}subst.h
-transient_heap.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-transient_heap.$(OBJEXT): {$(VPATH)}thread_native.h
-transient_heap.$(OBJEXT): {$(VPATH)}transient_heap.c
-transient_heap.$(OBJEXT): {$(VPATH)}transient_heap.h
-transient_heap.$(OBJEXT): {$(VPATH)}vm_core.h
-transient_heap.$(OBJEXT): {$(VPATH)}vm_debug.h
-transient_heap.$(OBJEXT): {$(VPATH)}vm_opts.h
-transient_heap.$(OBJEXT): {$(VPATH)}vm_sync.h
util.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-util.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-util.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-util.$(OBJEXT): $(top_srcdir)/internal/util.h
-util.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-util.$(OBJEXT): {$(VPATH)}assert.h
-util.$(OBJEXT): {$(VPATH)}atomic.h
-util.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-util.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-util.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-util.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-util.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-util.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-util.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-util.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-util.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+util.$(OBJEXT): $(top_srcdir)/include/ruby.h
util.$(OBJEXT): {$(VPATH)}config.h
util.$(OBJEXT): {$(VPATH)}defines.h
-util.$(OBJEXT): {$(VPATH)}dtoa.c
+util.$(OBJEXT): {$(VPATH)}encoding.h
util.$(OBJEXT): {$(VPATH)}intern.h
util.$(OBJEXT): {$(VPATH)}internal.h
-util.$(OBJEXT): {$(VPATH)}internal/abi.h
-util.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-util.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-util.$(OBJEXT): {$(VPATH)}internal/assume.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-util.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-util.$(OBJEXT): {$(VPATH)}internal/cast.h
-util.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-util.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-util.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-util.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-util.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-util.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-util.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-util.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-util.$(OBJEXT): {$(VPATH)}internal/config.h
-util.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-util.$(OBJEXT): {$(VPATH)}internal/core.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-util.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-util.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-util.$(OBJEXT): {$(VPATH)}internal/ctype.h
-util.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-util.$(OBJEXT): {$(VPATH)}internal/dosish.h
-util.$(OBJEXT): {$(VPATH)}internal/error.h
-util.$(OBJEXT): {$(VPATH)}internal/eval.h
-util.$(OBJEXT): {$(VPATH)}internal/event.h
-util.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-util.$(OBJEXT): {$(VPATH)}internal/gc.h
-util.$(OBJEXT): {$(VPATH)}internal/glob.h
-util.$(OBJEXT): {$(VPATH)}internal/globals.h
-util.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-util.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-util.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-util.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-util.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-util.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-util.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-util.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-util.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-util.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-util.$(OBJEXT): {$(VPATH)}internal/iterator.h
-util.$(OBJEXT): {$(VPATH)}internal/memory.h
-util.$(OBJEXT): {$(VPATH)}internal/method.h
-util.$(OBJEXT): {$(VPATH)}internal/module.h
-util.$(OBJEXT): {$(VPATH)}internal/newobj.h
-util.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-util.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-util.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-util.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-util.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-util.$(OBJEXT): {$(VPATH)}internal/symbol.h
-util.$(OBJEXT): {$(VPATH)}internal/value.h
-util.$(OBJEXT): {$(VPATH)}internal/value_type.h
-util.$(OBJEXT): {$(VPATH)}internal/variable.h
-util.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-util.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+util.$(OBJEXT): {$(VPATH)}io.h
util.$(OBJEXT): {$(VPATH)}missing.h
-util.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+util.$(OBJEXT): {$(VPATH)}onigmo.h
+util.$(OBJEXT): {$(VPATH)}oniguruma.h
util.$(OBJEXT): {$(VPATH)}st.h
util.$(OBJEXT): {$(VPATH)}subst.h
util.$(OBJEXT): {$(VPATH)}util.c
@@ -16833,36 +2756,7 @@ variable.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
variable.$(OBJEXT): $(CCAN_DIR)/list/list.h
variable.$(OBJEXT): $(CCAN_DIR)/str/str.h
variable.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-variable.$(OBJEXT): $(top_srcdir)/internal/array.h
-variable.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-variable.$(OBJEXT): $(top_srcdir)/internal/class.h
-variable.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-variable.$(OBJEXT): $(top_srcdir)/internal/error.h
-variable.$(OBJEXT): $(top_srcdir)/internal/eval.h
-variable.$(OBJEXT): $(top_srcdir)/internal/gc.h
-variable.$(OBJEXT): $(top_srcdir)/internal/hash.h
-variable.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-variable.$(OBJEXT): $(top_srcdir)/internal/object.h
-variable.$(OBJEXT): $(top_srcdir)/internal/re.h
-variable.$(OBJEXT): $(top_srcdir)/internal/serial.h
-variable.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-variable.$(OBJEXT): $(top_srcdir)/internal/string.h
-variable.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-variable.$(OBJEXT): $(top_srcdir)/internal/thread.h
-variable.$(OBJEXT): $(top_srcdir)/internal/variable.h
-variable.$(OBJEXT): $(top_srcdir)/internal/vm.h
-variable.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-variable.$(OBJEXT): {$(VPATH)}assert.h
-variable.$(OBJEXT): {$(VPATH)}atomic.h
-variable.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-variable.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-variable.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-variable.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-variable.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-variable.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-variable.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-variable.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-variable.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+variable.$(OBJEXT): $(top_srcdir)/include/ruby.h
variable.$(OBJEXT): {$(VPATH)}config.h
variable.$(OBJEXT): {$(VPATH)}constant.h
variable.$(OBJEXT): {$(VPATH)}debug_counter.h
@@ -16872,581 +2766,46 @@ variable.$(OBJEXT): {$(VPATH)}id.h
variable.$(OBJEXT): {$(VPATH)}id_table.h
variable.$(OBJEXT): {$(VPATH)}intern.h
variable.$(OBJEXT): {$(VPATH)}internal.h
-variable.$(OBJEXT): {$(VPATH)}internal/abi.h
-variable.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-variable.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-variable.$(OBJEXT): {$(VPATH)}internal/assume.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-variable.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-variable.$(OBJEXT): {$(VPATH)}internal/cast.h
-variable.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-variable.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-variable.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-variable.$(OBJEXT): {$(VPATH)}internal/config.h
-variable.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-variable.$(OBJEXT): {$(VPATH)}internal/core.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-variable.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-variable.$(OBJEXT): {$(VPATH)}internal/ctype.h
-variable.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-variable.$(OBJEXT): {$(VPATH)}internal/dosish.h
-variable.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-variable.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-variable.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-variable.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-variable.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-variable.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-variable.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-variable.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-variable.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-variable.$(OBJEXT): {$(VPATH)}internal/error.h
-variable.$(OBJEXT): {$(VPATH)}internal/eval.h
-variable.$(OBJEXT): {$(VPATH)}internal/event.h
-variable.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-variable.$(OBJEXT): {$(VPATH)}internal/gc.h
-variable.$(OBJEXT): {$(VPATH)}internal/glob.h
-variable.$(OBJEXT): {$(VPATH)}internal/globals.h
-variable.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-variable.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-variable.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-variable.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-variable.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-variable.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-variable.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-variable.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-variable.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-variable.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-variable.$(OBJEXT): {$(VPATH)}internal/iterator.h
-variable.$(OBJEXT): {$(VPATH)}internal/memory.h
-variable.$(OBJEXT): {$(VPATH)}internal/method.h
-variable.$(OBJEXT): {$(VPATH)}internal/module.h
-variable.$(OBJEXT): {$(VPATH)}internal/newobj.h
-variable.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-variable.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-variable.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-variable.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-variable.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-variable.$(OBJEXT): {$(VPATH)}internal/symbol.h
-variable.$(OBJEXT): {$(VPATH)}internal/value.h
-variable.$(OBJEXT): {$(VPATH)}internal/value_type.h
-variable.$(OBJEXT): {$(VPATH)}internal/variable.h
-variable.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-variable.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-variable.$(OBJEXT): {$(VPATH)}method.h
+variable.$(OBJEXT): {$(VPATH)}io.h
variable.$(OBJEXT): {$(VPATH)}missing.h
-variable.$(OBJEXT): {$(VPATH)}node.h
variable.$(OBJEXT): {$(VPATH)}onigmo.h
variable.$(OBJEXT): {$(VPATH)}oniguruma.h
-variable.$(OBJEXT): {$(VPATH)}ractor.h
-variable.$(OBJEXT): {$(VPATH)}ractor_core.h
-variable.$(OBJEXT): {$(VPATH)}ruby_assert.h
-variable.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-variable.$(OBJEXT): {$(VPATH)}shape.h
variable.$(OBJEXT): {$(VPATH)}st.h
variable.$(OBJEXT): {$(VPATH)}subst.h
-variable.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-variable.$(OBJEXT): {$(VPATH)}thread_native.h
-variable.$(OBJEXT): {$(VPATH)}transient_heap.h
variable.$(OBJEXT): {$(VPATH)}util.h
variable.$(OBJEXT): {$(VPATH)}variable.c
-variable.$(OBJEXT): {$(VPATH)}variable.h
-variable.$(OBJEXT): {$(VPATH)}vm_core.h
-variable.$(OBJEXT): {$(VPATH)}vm_debug.h
-variable.$(OBJEXT): {$(VPATH)}vm_opts.h
-variable.$(OBJEXT): {$(VPATH)}vm_sync.h
-version.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-version.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-version.$(OBJEXT): $(CCAN_DIR)/list/list.h
-version.$(OBJEXT): $(CCAN_DIR)/str/str.h
-version.$(OBJEXT): $(hdrdir)/ruby.h
version.$(OBJEXT): $(hdrdir)/ruby/ruby.h
version.$(OBJEXT): $(hdrdir)/ruby/version.h
-version.$(OBJEXT): $(top_srcdir)/internal/array.h
-version.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-version.$(OBJEXT): $(top_srcdir)/internal/cmdlineopt.h
-version.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-version.$(OBJEXT): $(top_srcdir)/internal/gc.h
-version.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-version.$(OBJEXT): $(top_srcdir)/internal/serial.h
-version.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-version.$(OBJEXT): $(top_srcdir)/internal/variable.h
-version.$(OBJEXT): $(top_srcdir)/internal/vm.h
-version.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+version.$(OBJEXT): $(top_srcdir)/revision.h
version.$(OBJEXT): $(top_srcdir)/version.h
-version.$(OBJEXT): {$(VPATH)}assert.h
-version.$(OBJEXT): {$(VPATH)}atomic.h
-version.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-version.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-version.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-version.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-version.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-version.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-version.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-version.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-version.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
version.$(OBJEXT): {$(VPATH)}config.h
-version.$(OBJEXT): {$(VPATH)}constant.h
-version.$(OBJEXT): {$(VPATH)}debug_counter.h
version.$(OBJEXT): {$(VPATH)}defines.h
-version.$(OBJEXT): {$(VPATH)}id.h
-version.$(OBJEXT): {$(VPATH)}id_table.h
version.$(OBJEXT): {$(VPATH)}intern.h
-version.$(OBJEXT): {$(VPATH)}internal.h
-version.$(OBJEXT): {$(VPATH)}internal/abi.h
-version.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-version.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-version.$(OBJEXT): {$(VPATH)}internal/assume.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-version.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-version.$(OBJEXT): {$(VPATH)}internal/cast.h
-version.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-version.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-version.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-version.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-version.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-version.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-version.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-version.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-version.$(OBJEXT): {$(VPATH)}internal/config.h
-version.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-version.$(OBJEXT): {$(VPATH)}internal/core.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-version.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-version.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-version.$(OBJEXT): {$(VPATH)}internal/ctype.h
-version.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-version.$(OBJEXT): {$(VPATH)}internal/dosish.h
-version.$(OBJEXT): {$(VPATH)}internal/error.h
-version.$(OBJEXT): {$(VPATH)}internal/eval.h
-version.$(OBJEXT): {$(VPATH)}internal/event.h
-version.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-version.$(OBJEXT): {$(VPATH)}internal/gc.h
-version.$(OBJEXT): {$(VPATH)}internal/glob.h
-version.$(OBJEXT): {$(VPATH)}internal/globals.h
-version.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-version.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-version.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-version.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-version.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-version.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-version.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-version.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-version.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-version.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-version.$(OBJEXT): {$(VPATH)}internal/iterator.h
-version.$(OBJEXT): {$(VPATH)}internal/memory.h
-version.$(OBJEXT): {$(VPATH)}internal/method.h
-version.$(OBJEXT): {$(VPATH)}internal/module.h
-version.$(OBJEXT): {$(VPATH)}internal/newobj.h
-version.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-version.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-version.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-version.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-version.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-version.$(OBJEXT): {$(VPATH)}internal/symbol.h
-version.$(OBJEXT): {$(VPATH)}internal/value.h
-version.$(OBJEXT): {$(VPATH)}internal/value_type.h
-version.$(OBJEXT): {$(VPATH)}internal/variable.h
-version.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-version.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-version.$(OBJEXT): {$(VPATH)}method.h
version.$(OBJEXT): {$(VPATH)}missing.h
-version.$(OBJEXT): {$(VPATH)}node.h
-version.$(OBJEXT): {$(VPATH)}revision.h
-version.$(OBJEXT): {$(VPATH)}rjit.h
-version.$(OBJEXT): {$(VPATH)}ruby_assert.h
-version.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-version.$(OBJEXT): {$(VPATH)}shape.h
version.$(OBJEXT): {$(VPATH)}st.h
version.$(OBJEXT): {$(VPATH)}subst.h
-version.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-version.$(OBJEXT): {$(VPATH)}thread_native.h
version.$(OBJEXT): {$(VPATH)}version.c
-version.$(OBJEXT): {$(VPATH)}vm_core.h
-version.$(OBJEXT): {$(VPATH)}vm_opts.h
-version.$(OBJEXT): {$(VPATH)}yjit.h
vm.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
vm.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
vm.$(OBJEXT): $(CCAN_DIR)/list/list.h
vm.$(OBJEXT): $(CCAN_DIR)/str/str.h
-vm.$(OBJEXT): $(hdrdir)/ruby.h
vm.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-vm.$(OBJEXT): $(top_srcdir)/internal/array.h
-vm.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-vm.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-vm.$(OBJEXT): $(top_srcdir)/internal/bits.h
-vm.$(OBJEXT): $(top_srcdir)/internal/class.h
-vm.$(OBJEXT): $(top_srcdir)/internal/compar.h
-vm.$(OBJEXT): $(top_srcdir)/internal/compile.h
-vm.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-vm.$(OBJEXT): $(top_srcdir)/internal/cont.h
-vm.$(OBJEXT): $(top_srcdir)/internal/error.h
-vm.$(OBJEXT): $(top_srcdir)/internal/eval.h
-vm.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-vm.$(OBJEXT): $(top_srcdir)/internal/gc.h
-vm.$(OBJEXT): $(top_srcdir)/internal/hash.h
-vm.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-vm.$(OBJEXT): $(top_srcdir)/internal/inits.h
-vm.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-vm.$(OBJEXT): $(top_srcdir)/internal/object.h
-vm.$(OBJEXT): $(top_srcdir)/internal/parse.h
-vm.$(OBJEXT): $(top_srcdir)/internal/proc.h
-vm.$(OBJEXT): $(top_srcdir)/internal/random.h
-vm.$(OBJEXT): $(top_srcdir)/internal/re.h
-vm.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-vm.$(OBJEXT): $(top_srcdir)/internal/serial.h
-vm.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-vm.$(OBJEXT): $(top_srcdir)/internal/string.h
-vm.$(OBJEXT): $(top_srcdir)/internal/struct.h
-vm.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-vm.$(OBJEXT): $(top_srcdir)/internal/thread.h
-vm.$(OBJEXT): $(top_srcdir)/internal/variable.h
-vm.$(OBJEXT): $(top_srcdir)/internal/vm.h
-vm.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-vm.$(OBJEXT): {$(VPATH)}assert.h
-vm.$(OBJEXT): {$(VPATH)}atomic.h
-vm.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-vm.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-vm.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-vm.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-vm.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-vm.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-vm.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-vm.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-vm.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-vm.$(OBJEXT): {$(VPATH)}builtin.h
+vm.$(OBJEXT): $(hdrdir)/ruby/version.h
+vm.$(OBJEXT): $(top_srcdir)/include/ruby.h
vm.$(OBJEXT): {$(VPATH)}config.h
vm.$(OBJEXT): {$(VPATH)}constant.h
vm.$(OBJEXT): {$(VPATH)}debug_counter.h
vm.$(OBJEXT): {$(VPATH)}defines.h
-vm.$(OBJEXT): {$(VPATH)}defs/opt_operand.def
vm.$(OBJEXT): {$(VPATH)}encoding.h
vm.$(OBJEXT): {$(VPATH)}eval_intern.h
+vm.$(OBJEXT): {$(VPATH)}gc.h
vm.$(OBJEXT): {$(VPATH)}id.h
vm.$(OBJEXT): {$(VPATH)}id_table.h
vm.$(OBJEXT): {$(VPATH)}insns.def
vm.$(OBJEXT): {$(VPATH)}insns.inc
-vm.$(OBJEXT): {$(VPATH)}insns_info.inc
vm.$(OBJEXT): {$(VPATH)}intern.h
vm.$(OBJEXT): {$(VPATH)}internal.h
-vm.$(OBJEXT): {$(VPATH)}internal/abi.h
-vm.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-vm.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-vm.$(OBJEXT): {$(VPATH)}internal/assume.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-vm.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-vm.$(OBJEXT): {$(VPATH)}internal/cast.h
-vm.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-vm.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-vm.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-vm.$(OBJEXT): {$(VPATH)}internal/config.h
-vm.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-vm.$(OBJEXT): {$(VPATH)}internal/core.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-vm.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-vm.$(OBJEXT): {$(VPATH)}internal/ctype.h
-vm.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-vm.$(OBJEXT): {$(VPATH)}internal/dosish.h
-vm.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-vm.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-vm.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-vm.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-vm.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-vm.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-vm.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-vm.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-vm.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-vm.$(OBJEXT): {$(VPATH)}internal/error.h
-vm.$(OBJEXT): {$(VPATH)}internal/eval.h
-vm.$(OBJEXT): {$(VPATH)}internal/event.h
-vm.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-vm.$(OBJEXT): {$(VPATH)}internal/gc.h
-vm.$(OBJEXT): {$(VPATH)}internal/glob.h
-vm.$(OBJEXT): {$(VPATH)}internal/globals.h
-vm.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-vm.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-vm.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-vm.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-vm.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-vm.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-vm.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-vm.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-vm.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-vm.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-vm.$(OBJEXT): {$(VPATH)}internal/iterator.h
-vm.$(OBJEXT): {$(VPATH)}internal/memory.h
-vm.$(OBJEXT): {$(VPATH)}internal/method.h
-vm.$(OBJEXT): {$(VPATH)}internal/module.h
-vm.$(OBJEXT): {$(VPATH)}internal/newobj.h
-vm.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-vm.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-vm.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-vm.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-vm.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-vm.$(OBJEXT): {$(VPATH)}internal/symbol.h
-vm.$(OBJEXT): {$(VPATH)}internal/value.h
-vm.$(OBJEXT): {$(VPATH)}internal/value_type.h
-vm.$(OBJEXT): {$(VPATH)}internal/variable.h
-vm.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-vm.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+vm.$(OBJEXT): {$(VPATH)}io.h
vm.$(OBJEXT): {$(VPATH)}iseq.h
vm.$(OBJEXT): {$(VPATH)}method.h
vm.$(OBJEXT): {$(VPATH)}missing.h
@@ -17456,23 +2815,17 @@ vm.$(OBJEXT): {$(VPATH)}oniguruma.h
vm.$(OBJEXT): {$(VPATH)}probes.dmyh
vm.$(OBJEXT): {$(VPATH)}probes.h
vm.$(OBJEXT): {$(VPATH)}probes_helper.h
-vm.$(OBJEXT): {$(VPATH)}ractor.h
-vm.$(OBJEXT): {$(VPATH)}ractor_core.h
-vm.$(OBJEXT): {$(VPATH)}rjit.h
vm.$(OBJEXT): {$(VPATH)}ruby_assert.h
vm.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-vm.$(OBJEXT): {$(VPATH)}shape.h
vm.$(OBJEXT): {$(VPATH)}st.h
vm.$(OBJEXT): {$(VPATH)}subst.h
vm.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
vm.$(OBJEXT): {$(VPATH)}thread_native.h
-vm.$(OBJEXT): {$(VPATH)}variable.h
vm.$(OBJEXT): {$(VPATH)}vm.c
vm.$(OBJEXT): {$(VPATH)}vm.h
vm.$(OBJEXT): {$(VPATH)}vm.inc
vm.$(OBJEXT): {$(VPATH)}vm_args.c
vm.$(OBJEXT): {$(VPATH)}vm_call_iseq_optimized.inc
-vm.$(OBJEXT): {$(VPATH)}vm_callinfo.h
vm.$(OBJEXT): {$(VPATH)}vm_core.h
vm.$(OBJEXT): {$(VPATH)}vm_debug.h
vm.$(OBJEXT): {$(VPATH)}vm_eval.c
@@ -17482,196 +2835,23 @@ vm.$(OBJEXT): {$(VPATH)}vm_insnhelper.c
vm.$(OBJEXT): {$(VPATH)}vm_insnhelper.h
vm.$(OBJEXT): {$(VPATH)}vm_method.c
vm.$(OBJEXT): {$(VPATH)}vm_opts.h
-vm.$(OBJEXT): {$(VPATH)}vm_sync.h
vm.$(OBJEXT): {$(VPATH)}vmtc.inc
-vm.$(OBJEXT): {$(VPATH)}yjit.h
vm_backtrace.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
vm_backtrace.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
vm_backtrace.$(OBJEXT): $(CCAN_DIR)/list/list.h
vm_backtrace.$(OBJEXT): $(CCAN_DIR)/str/str.h
vm_backtrace.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/array.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/class.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/error.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/gc.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/serial.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/string.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/variable.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/vm.h
-vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}assert.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}atomic.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+vm_backtrace.$(OBJEXT): $(hdrdir)/ruby/version.h
+vm_backtrace.$(OBJEXT): $(top_srcdir)/include/ruby.h
vm_backtrace.$(OBJEXT): {$(VPATH)}config.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}constant.h
vm_backtrace.$(OBJEXT): {$(VPATH)}debug.h
vm_backtrace.$(OBJEXT): {$(VPATH)}defines.h
vm_backtrace.$(OBJEXT): {$(VPATH)}encoding.h
vm_backtrace.$(OBJEXT): {$(VPATH)}eval_intern.h
vm_backtrace.$(OBJEXT): {$(VPATH)}id.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}id_table.h
vm_backtrace.$(OBJEXT): {$(VPATH)}intern.h
vm_backtrace.$(OBJEXT): {$(VPATH)}internal.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/abi.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/assume.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/cast.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/config.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/ctype.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/dosish.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/error.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/eval.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/event.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/gc.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/glob.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/globals.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/iterator.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/memory.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/method.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/module.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/newobj.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/symbol.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/value.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/value_type.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/variable.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}io.h
vm_backtrace.$(OBJEXT): {$(VPATH)}iseq.h
vm_backtrace.$(OBJEXT): {$(VPATH)}method.h
vm_backtrace.$(OBJEXT): {$(VPATH)}missing.h
@@ -17680,197 +2860,37 @@ vm_backtrace.$(OBJEXT): {$(VPATH)}onigmo.h
vm_backtrace.$(OBJEXT): {$(VPATH)}oniguruma.h
vm_backtrace.$(OBJEXT): {$(VPATH)}ruby_assert.h
vm_backtrace.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}shape.h
vm_backtrace.$(OBJEXT): {$(VPATH)}st.h
vm_backtrace.$(OBJEXT): {$(VPATH)}subst.h
vm_backtrace.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
vm_backtrace.$(OBJEXT): {$(VPATH)}thread_native.h
vm_backtrace.$(OBJEXT): {$(VPATH)}vm_backtrace.c
vm_backtrace.$(OBJEXT): {$(VPATH)}vm_core.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}vm_debug.h
vm_backtrace.$(OBJEXT): {$(VPATH)}vm_opts.h
vm_dump.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
vm_dump.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
vm_dump.$(OBJEXT): $(CCAN_DIR)/list/list.h
vm_dump.$(OBJEXT): $(CCAN_DIR)/str/str.h
vm_dump.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-vm_dump.$(OBJEXT): $(top_srcdir)/internal/array.h
-vm_dump.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-vm_dump.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-vm_dump.$(OBJEXT): $(top_srcdir)/internal/gc.h
-vm_dump.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-vm_dump.$(OBJEXT): $(top_srcdir)/internal/serial.h
-vm_dump.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-vm_dump.$(OBJEXT): $(top_srcdir)/internal/variable.h
-vm_dump.$(OBJEXT): $(top_srcdir)/internal/vm.h
-vm_dump.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+vm_dump.$(OBJEXT): $(hdrdir)/ruby/version.h
+vm_dump.$(OBJEXT): $(top_srcdir)/include/ruby.h
vm_dump.$(OBJEXT): {$(VPATH)}addr2line.h
-vm_dump.$(OBJEXT): {$(VPATH)}assert.h
-vm_dump.$(OBJEXT): {$(VPATH)}atomic.h
-vm_dump.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-vm_dump.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-vm_dump.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-vm_dump.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-vm_dump.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-vm_dump.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-vm_dump.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-vm_dump.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-vm_dump.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
vm_dump.$(OBJEXT): {$(VPATH)}config.h
-vm_dump.$(OBJEXT): {$(VPATH)}constant.h
vm_dump.$(OBJEXT): {$(VPATH)}defines.h
+vm_dump.$(OBJEXT): {$(VPATH)}encoding.h
vm_dump.$(OBJEXT): {$(VPATH)}id.h
-vm_dump.$(OBJEXT): {$(VPATH)}id_table.h
vm_dump.$(OBJEXT): {$(VPATH)}intern.h
vm_dump.$(OBJEXT): {$(VPATH)}internal.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/abi.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/assume.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/cast.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/config.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/ctype.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/dosish.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/error.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/eval.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/event.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/gc.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/glob.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/globals.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/iterator.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/memory.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/method.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/module.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/newobj.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/symbol.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/value.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/value_type.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/variable.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-vm_dump.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+vm_dump.$(OBJEXT): {$(VPATH)}io.h
vm_dump.$(OBJEXT): {$(VPATH)}iseq.h
vm_dump.$(OBJEXT): {$(VPATH)}method.h
vm_dump.$(OBJEXT): {$(VPATH)}missing.h
vm_dump.$(OBJEXT): {$(VPATH)}node.h
-vm_dump.$(OBJEXT): {$(VPATH)}procstat_vm.c
-vm_dump.$(OBJEXT): {$(VPATH)}ractor.h
-vm_dump.$(OBJEXT): {$(VPATH)}ractor_core.h
+vm_dump.$(OBJEXT): {$(VPATH)}onigmo.h
+vm_dump.$(OBJEXT): {$(VPATH)}oniguruma.h
vm_dump.$(OBJEXT): {$(VPATH)}ruby_assert.h
vm_dump.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-vm_dump.$(OBJEXT): {$(VPATH)}shape.h
vm_dump.$(OBJEXT): {$(VPATH)}st.h
vm_dump.$(OBJEXT): {$(VPATH)}subst.h
vm_dump.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
@@ -17879,813 +2899,35 @@ vm_dump.$(OBJEXT): {$(VPATH)}vm_core.h
vm_dump.$(OBJEXT): {$(VPATH)}vm_debug.h
vm_dump.$(OBJEXT): {$(VPATH)}vm_dump.c
vm_dump.$(OBJEXT): {$(VPATH)}vm_opts.h
-vm_sync.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-vm_sync.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-vm_sync.$(OBJEXT): $(CCAN_DIR)/list/list.h
-vm_sync.$(OBJEXT): $(CCAN_DIR)/str/str.h
-vm_sync.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/array.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/gc.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/serial.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/thread.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/variable.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/vm.h
-vm_sync.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-vm_sync.$(OBJEXT): {$(VPATH)}assert.h
-vm_sync.$(OBJEXT): {$(VPATH)}atomic.h
-vm_sync.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-vm_sync.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-vm_sync.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-vm_sync.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-vm_sync.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-vm_sync.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-vm_sync.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-vm_sync.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-vm_sync.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-vm_sync.$(OBJEXT): {$(VPATH)}config.h
-vm_sync.$(OBJEXT): {$(VPATH)}constant.h
-vm_sync.$(OBJEXT): {$(VPATH)}debug_counter.h
-vm_sync.$(OBJEXT): {$(VPATH)}defines.h
-vm_sync.$(OBJEXT): {$(VPATH)}id.h
-vm_sync.$(OBJEXT): {$(VPATH)}id_table.h
-vm_sync.$(OBJEXT): {$(VPATH)}intern.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/abi.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/assume.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/cast.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/config.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/ctype.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/dosish.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/error.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/eval.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/event.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/gc.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/glob.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/globals.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/iterator.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/memory.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/method.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/module.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/newobj.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/symbol.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/value.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/value_type.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/variable.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-vm_sync.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-vm_sync.$(OBJEXT): {$(VPATH)}method.h
-vm_sync.$(OBJEXT): {$(VPATH)}missing.h
-vm_sync.$(OBJEXT): {$(VPATH)}node.h
-vm_sync.$(OBJEXT): {$(VPATH)}ractor.h
-vm_sync.$(OBJEXT): {$(VPATH)}ractor_core.h
-vm_sync.$(OBJEXT): {$(VPATH)}ruby_assert.h
-vm_sync.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-vm_sync.$(OBJEXT): {$(VPATH)}shape.h
-vm_sync.$(OBJEXT): {$(VPATH)}st.h
-vm_sync.$(OBJEXT): {$(VPATH)}subst.h
-vm_sync.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-vm_sync.$(OBJEXT): {$(VPATH)}thread_native.h
-vm_sync.$(OBJEXT): {$(VPATH)}vm_core.h
-vm_sync.$(OBJEXT): {$(VPATH)}vm_debug.h
-vm_sync.$(OBJEXT): {$(VPATH)}vm_opts.h
-vm_sync.$(OBJEXT): {$(VPATH)}vm_sync.c
-vm_sync.$(OBJEXT): {$(VPATH)}vm_sync.h
vm_trace.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
vm_trace.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
vm_trace.$(OBJEXT): $(CCAN_DIR)/list/list.h
vm_trace.$(OBJEXT): $(CCAN_DIR)/str/str.h
-vm_trace.$(OBJEXT): $(hdrdir)/ruby.h
vm_trace.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/array.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/class.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/gc.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/hash.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/serial.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/symbol.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/variable.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/vm.h
-vm_trace.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-vm_trace.$(OBJEXT): {$(VPATH)}assert.h
-vm_trace.$(OBJEXT): {$(VPATH)}atomic.h
-vm_trace.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-vm_trace.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-vm_trace.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-vm_trace.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-vm_trace.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-vm_trace.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-vm_trace.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-vm_trace.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-vm_trace.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-vm_trace.$(OBJEXT): {$(VPATH)}builtin.h
+vm_trace.$(OBJEXT): $(top_srcdir)/include/ruby.h
vm_trace.$(OBJEXT): {$(VPATH)}config.h
-vm_trace.$(OBJEXT): {$(VPATH)}constant.h
vm_trace.$(OBJEXT): {$(VPATH)}debug.h
-vm_trace.$(OBJEXT): {$(VPATH)}debug_counter.h
vm_trace.$(OBJEXT): {$(VPATH)}defines.h
vm_trace.$(OBJEXT): {$(VPATH)}encoding.h
vm_trace.$(OBJEXT): {$(VPATH)}eval_intern.h
vm_trace.$(OBJEXT): {$(VPATH)}id.h
-vm_trace.$(OBJEXT): {$(VPATH)}id_table.h
vm_trace.$(OBJEXT): {$(VPATH)}intern.h
vm_trace.$(OBJEXT): {$(VPATH)}internal.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/abi.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/assume.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/cast.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/config.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/ctype.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/dosish.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/error.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/eval.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/event.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/gc.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/glob.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/globals.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/iterator.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/memory.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/method.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/module.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/newobj.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/symbol.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/value.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/value_type.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/variable.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-vm_trace.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+vm_trace.$(OBJEXT): {$(VPATH)}io.h
vm_trace.$(OBJEXT): {$(VPATH)}iseq.h
vm_trace.$(OBJEXT): {$(VPATH)}method.h
vm_trace.$(OBJEXT): {$(VPATH)}missing.h
vm_trace.$(OBJEXT): {$(VPATH)}node.h
vm_trace.$(OBJEXT): {$(VPATH)}onigmo.h
vm_trace.$(OBJEXT): {$(VPATH)}oniguruma.h
-vm_trace.$(OBJEXT): {$(VPATH)}ractor.h
-vm_trace.$(OBJEXT): {$(VPATH)}rjit.h
vm_trace.$(OBJEXT): {$(VPATH)}ruby_assert.h
vm_trace.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-vm_trace.$(OBJEXT): {$(VPATH)}shape.h
vm_trace.$(OBJEXT): {$(VPATH)}st.h
vm_trace.$(OBJEXT): {$(VPATH)}subst.h
vm_trace.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
vm_trace.$(OBJEXT): {$(VPATH)}thread_native.h
-vm_trace.$(OBJEXT): {$(VPATH)}trace_point.rbinc
vm_trace.$(OBJEXT): {$(VPATH)}vm_core.h
+vm_trace.$(OBJEXT): {$(VPATH)}vm_debug.h
vm_trace.$(OBJEXT): {$(VPATH)}vm_opts.h
vm_trace.$(OBJEXT): {$(VPATH)}vm_trace.c
-vm_trace.$(OBJEXT): {$(VPATH)}yjit.h
-weakmap.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-weakmap.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-weakmap.$(OBJEXT): $(CCAN_DIR)/list/list.h
-weakmap.$(OBJEXT): $(CCAN_DIR)/str/str.h
-weakmap.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/array.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/gc.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/hash.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/proc.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/serial.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/vm.h
-weakmap.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-weakmap.$(OBJEXT): {$(VPATH)}assert.h
-weakmap.$(OBJEXT): {$(VPATH)}atomic.h
-weakmap.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-weakmap.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-weakmap.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-weakmap.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-weakmap.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-weakmap.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-weakmap.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-weakmap.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-weakmap.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-weakmap.$(OBJEXT): {$(VPATH)}config.h
-weakmap.$(OBJEXT): {$(VPATH)}defines.h
-weakmap.$(OBJEXT): {$(VPATH)}id.h
-weakmap.$(OBJEXT): {$(VPATH)}intern.h
-weakmap.$(OBJEXT): {$(VPATH)}internal.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/abi.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/assume.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/cast.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/config.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/ctype.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/dosish.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/error.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/eval.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/event.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/gc.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/glob.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/globals.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/iterator.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/memory.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/method.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/module.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/newobj.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/symbol.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/value.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/value_type.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/variable.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-weakmap.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-weakmap.$(OBJEXT): {$(VPATH)}method.h
-weakmap.$(OBJEXT): {$(VPATH)}missing.h
-weakmap.$(OBJEXT): {$(VPATH)}node.h
-weakmap.$(OBJEXT): {$(VPATH)}ruby_assert.h
-weakmap.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-weakmap.$(OBJEXT): {$(VPATH)}st.h
-weakmap.$(OBJEXT): {$(VPATH)}subst.h
-weakmap.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-weakmap.$(OBJEXT): {$(VPATH)}thread_native.h
-weakmap.$(OBJEXT): {$(VPATH)}vm_core.h
-weakmap.$(OBJEXT): {$(VPATH)}vm_opts.h
-weakmap.$(OBJEXT): {$(VPATH)}weakmap.c
-yjit.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-yjit.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-yjit.$(OBJEXT): $(CCAN_DIR)/list/list.h
-yjit.$(OBJEXT): $(CCAN_DIR)/str/str.h
-yjit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/array.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/bignum.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/bits.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/class.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/compile.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/cont.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/fixnum.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/gc.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/hash.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/numeric.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/serial.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/string.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/variable.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/vm.h
-yjit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-yjit.$(OBJEXT): {$(VPATH)}assert.h
-yjit.$(OBJEXT): {$(VPATH)}atomic.h
-yjit.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-yjit.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-yjit.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-yjit.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-yjit.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-yjit.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-yjit.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-yjit.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-yjit.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-yjit.$(OBJEXT): {$(VPATH)}builtin.h
-yjit.$(OBJEXT): {$(VPATH)}config.h
-yjit.$(OBJEXT): {$(VPATH)}constant.h
-yjit.$(OBJEXT): {$(VPATH)}debug.h
-yjit.$(OBJEXT): {$(VPATH)}debug_counter.h
-yjit.$(OBJEXT): {$(VPATH)}defines.h
-yjit.$(OBJEXT): {$(VPATH)}encoding.h
-yjit.$(OBJEXT): {$(VPATH)}id.h
-yjit.$(OBJEXT): {$(VPATH)}id_table.h
-yjit.$(OBJEXT): {$(VPATH)}insns.def
-yjit.$(OBJEXT): {$(VPATH)}insns.inc
-yjit.$(OBJEXT): {$(VPATH)}insns_info.inc
-yjit.$(OBJEXT): {$(VPATH)}intern.h
-yjit.$(OBJEXT): {$(VPATH)}internal.h
-yjit.$(OBJEXT): {$(VPATH)}internal/abi.h
-yjit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-yjit.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-yjit.$(OBJEXT): {$(VPATH)}internal/assume.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-yjit.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-yjit.$(OBJEXT): {$(VPATH)}internal/cast.h
-yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-yjit.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-yjit.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-yjit.$(OBJEXT): {$(VPATH)}internal/config.h
-yjit.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-yjit.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-yjit.$(OBJEXT): {$(VPATH)}internal/ctype.h
-yjit.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-yjit.$(OBJEXT): {$(VPATH)}internal/dosish.h
-yjit.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-yjit.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-yjit.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-yjit.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-yjit.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-yjit.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-yjit.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-yjit.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-yjit.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-yjit.$(OBJEXT): {$(VPATH)}internal/error.h
-yjit.$(OBJEXT): {$(VPATH)}internal/eval.h
-yjit.$(OBJEXT): {$(VPATH)}internal/event.h
-yjit.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-yjit.$(OBJEXT): {$(VPATH)}internal/gc.h
-yjit.$(OBJEXT): {$(VPATH)}internal/glob.h
-yjit.$(OBJEXT): {$(VPATH)}internal/globals.h
-yjit.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-yjit.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-yjit.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-yjit.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-yjit.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-yjit.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-yjit.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-yjit.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-yjit.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-yjit.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-yjit.$(OBJEXT): {$(VPATH)}internal/iterator.h
-yjit.$(OBJEXT): {$(VPATH)}internal/memory.h
-yjit.$(OBJEXT): {$(VPATH)}internal/method.h
-yjit.$(OBJEXT): {$(VPATH)}internal/module.h
-yjit.$(OBJEXT): {$(VPATH)}internal/newobj.h
-yjit.$(OBJEXT): {$(VPATH)}internal/numeric.h
-yjit.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-yjit.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-yjit.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-yjit.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-yjit.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-yjit.$(OBJEXT): {$(VPATH)}internal/symbol.h
-yjit.$(OBJEXT): {$(VPATH)}internal/value.h
-yjit.$(OBJEXT): {$(VPATH)}internal/value_type.h
-yjit.$(OBJEXT): {$(VPATH)}internal/variable.h
-yjit.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-yjit.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-yjit.$(OBJEXT): {$(VPATH)}iseq.h
-yjit.$(OBJEXT): {$(VPATH)}method.h
-yjit.$(OBJEXT): {$(VPATH)}missing.h
-yjit.$(OBJEXT): {$(VPATH)}node.h
-yjit.$(OBJEXT): {$(VPATH)}onigmo.h
-yjit.$(OBJEXT): {$(VPATH)}oniguruma.h
-yjit.$(OBJEXT): {$(VPATH)}probes.dmyh
-yjit.$(OBJEXT): {$(VPATH)}probes.h
-yjit.$(OBJEXT): {$(VPATH)}probes_helper.h
-yjit.$(OBJEXT): {$(VPATH)}ruby_assert.h
-yjit.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-yjit.$(OBJEXT): {$(VPATH)}shape.h
-yjit.$(OBJEXT): {$(VPATH)}st.h
-yjit.$(OBJEXT): {$(VPATH)}subst.h
-yjit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-yjit.$(OBJEXT): {$(VPATH)}thread_native.h
-yjit.$(OBJEXT): {$(VPATH)}vm_callinfo.h
-yjit.$(OBJEXT): {$(VPATH)}vm_core.h
-yjit.$(OBJEXT): {$(VPATH)}vm_debug.h
-yjit.$(OBJEXT): {$(VPATH)}vm_insnhelper.h
-yjit.$(OBJEXT): {$(VPATH)}vm_opts.h
-yjit.$(OBJEXT): {$(VPATH)}vm_sync.h
-yjit.$(OBJEXT): {$(VPATH)}yjit.c
-yjit.$(OBJEXT): {$(VPATH)}yjit.h
-yjit.$(OBJEXT): {$(VPATH)}yjit.rbinc
# AUTOGENERATED DEPENDENCIES END
diff --git a/compar.c b/compar.c
index 2b34ebb062..02529c9960 100644
--- a/compar.c
+++ b/compar.c
@@ -9,12 +9,8 @@
**********************************************************************/
-#include "id.h"
-#include "internal.h"
-#include "internal/compar.h"
-#include "internal/error.h"
-#include "internal/vm.h"
#include "ruby/ruby.h"
+#include "id.h"
VALUE rb_mComparable;
@@ -30,13 +26,13 @@ rb_cmperr(VALUE x, VALUE y)
VALUE classname;
if (SPECIAL_CONST_P(y) || BUILTIN_TYPE(y) == T_FLOAT) {
- classname = rb_inspect(y);
+ classname = rb_inspect(y);
}
else {
- classname = rb_obj_class(y);
+ classname = rb_obj_class(y);
}
rb_raise(rb_eArgError, "comparison of %"PRIsVALUE" with %"PRIsVALUE" failed",
- rb_obj_class(x), classname);
+ rb_obj_class(x), classname);
}
static VALUE
@@ -50,12 +46,12 @@ VALUE
rb_invcmp(VALUE x, VALUE y)
{
VALUE invcmp = rb_exec_recursive(invcmp_recursive, x, y);
- if (NIL_OR_UNDEF_P(invcmp)) {
- return Qnil;
+ if (invcmp == Qundef || NIL_P(invcmp)) {
+ return Qnil;
}
else {
- int result = -rb_cmpint(invcmp, x, y);
- return INT2FIX(result);
+ int result = -rb_cmpint(invcmp, x, y);
+ return INT2FIX(result);
}
}
@@ -84,7 +80,8 @@ cmp_equal(VALUE x, VALUE y)
c = rb_exec_recursive_paired_outer(cmp_eq_recursive, x, y, y);
if (NIL_P(c)) return Qfalse;
- return RBOOL(rb_cmpint(c, x, y) == 0);
+ if (rb_cmpint(c, x, y) == 0) return Qtrue;
+ return Qfalse;
}
static int
@@ -98,13 +95,14 @@ cmpint(VALUE x, VALUE y)
* obj > other -> true or false
*
* Compares two objects based on the receiver's <code><=></code>
- * method, returning true if it returns a value greater than 0.
+ * method, returning true if it returns 1.
*/
static VALUE
cmp_gt(VALUE x, VALUE y)
{
- return RBOOL(cmpint(x, y) > 0);
+ if (cmpint(x, y) > 0) return Qtrue;
+ return Qfalse;
}
/*
@@ -112,13 +110,14 @@ cmp_gt(VALUE x, VALUE y)
* obj >= other -> true or false
*
* Compares two objects based on the receiver's <code><=></code>
- * method, returning true if it returns a value greater than or equal to 0.
+ * method, returning true if it returns 0 or 1.
*/
static VALUE
cmp_ge(VALUE x, VALUE y)
{
- return RBOOL(cmpint(x, y) >= 0);
+ if (cmpint(x, y) >= 0) return Qtrue;
+ return Qfalse;
}
/*
@@ -126,13 +125,14 @@ cmp_ge(VALUE x, VALUE y)
* obj < other -> true or false
*
* Compares two objects based on the receiver's <code><=></code>
- * method, returning true if it returns a value less than 0.
+ * method, returning true if it returns -1.
*/
static VALUE
cmp_lt(VALUE x, VALUE y)
{
- return RBOOL(cmpint(x, y) < 0);
+ if (cmpint(x, y) < 0) return Qtrue;
+ return Qfalse;
}
/*
@@ -140,22 +140,23 @@ cmp_lt(VALUE x, VALUE y)
* obj <= other -> true or false
*
* Compares two objects based on the receiver's <code><=></code>
- * method, returning true if it returns a value less than or equal to 0.
+ * method, returning true if it returns -1 or 0.
*/
static VALUE
cmp_le(VALUE x, VALUE y)
{
- return RBOOL(cmpint(x, y) <= 0);
+ if (cmpint(x, y) <= 0) return Qtrue;
+ return Qfalse;
}
/*
* call-seq:
* obj.between?(min, max) -> true or false
*
- * Returns <code>false</code> if _obj_ <code><=></code> _min_ is less
- * than zero or if _obj_ <code><=></code> _max_ is greater than zero,
- * <code>true</code> otherwise.
+ * Returns <code>false</code> if <i>obj</i> <code><=></code>
+ * <i>min</i> is less than zero or if <i>anObject</i> <code><=></code>
+ * <i>max</i> is greater than zero, <code>true</code> otherwise.
*
* 3.between?(1, 5) #=> true
* 6.between?(1, 5) #=> false
@@ -167,18 +168,18 @@ cmp_le(VALUE x, VALUE y)
static VALUE
cmp_between(VALUE x, VALUE min, VALUE max)
{
- return RBOOL((cmpint(x, min) >= 0 && cmpint(x, max) <= 0));
+ if (cmpint(x, min) < 0) return Qfalse;
+ if (cmpint(x, max) > 0) return Qfalse;
+ return Qtrue;
}
/*
* call-seq:
* obj.clamp(min, max) -> obj
- * obj.clamp(range) -> obj
*
- * In <code>(min, max)</code> form, returns _min_ if _obj_
- * <code><=></code> _min_ is less than zero, _max_ if _obj_
- * <code><=></code> _max_ is greater than zero, and _obj_
- * otherwise.
+ * Returns <i>min</i> if <i>obj</i> <code><=></code> <i>min</i> is less
+ * than zero, <i>max</i> if <i>obj</i> <code><=></code> <i>max</i> is
+ * greater than zero and <i>obj</i> otherwise.
*
* 12.clamp(0, 100) #=> 12
* 523.clamp(0, 100) #=> 100
@@ -186,76 +187,36 @@ cmp_between(VALUE x, VALUE min, VALUE max)
*
* 'd'.clamp('a', 'f') #=> 'd'
* 'z'.clamp('a', 'f') #=> 'f'
- *
- * In <code>(range)</code> form, returns _range.begin_ if _obj_
- * <code><=></code> _range.begin_ is less than zero, _range.end_
- * if _obj_ <code><=></code> _range.end_ is greater than zero, and
- * _obj_ otherwise.
- *
- * 12.clamp(0..100) #=> 12
- * 523.clamp(0..100) #=> 100
- * -3.123.clamp(0..100) #=> 0
- *
- * 'd'.clamp('a'..'f') #=> 'd'
- * 'z'.clamp('a'..'f') #=> 'f'
- *
- * If _range.begin_ is +nil+, it is considered smaller than _obj_,
- * and if _range.end_ is +nil+, it is considered greater than
- * _obj_.
- *
- * -20.clamp(0..) #=> 0
- * 523.clamp(..100) #=> 100
- *
- * When _range.end_ is excluded and not +nil+, an exception is
- * raised.
- *
- * 100.clamp(0...100) # ArgumentError
*/
static VALUE
-cmp_clamp(int argc, VALUE *argv, VALUE x)
+cmp_clamp(VALUE x, VALUE min, VALUE max)
{
- VALUE min, max;
- int c, excl = 0;
-
- if (rb_scan_args(argc, argv, "11", &min, &max) == 1) {
- VALUE range = min;
- if (!rb_range_values(range, &min, &max, &excl)) {
- rb_raise(rb_eTypeError, "wrong argument type %s (expected Range)",
- rb_builtin_class_name(range));
- }
- if (!NIL_P(max)) {
- if (excl) rb_raise(rb_eArgError, "cannot clamp with an exclusive range");
- }
- }
- if (!NIL_P(min) && !NIL_P(max) && cmpint(min, max) > 0) {
- rb_raise(rb_eArgError, "min argument must be less than or equal to max argument");
- }
+ int c;
- if (!NIL_P(min)) {
- c = cmpint(x, min);
- if (c == 0) return x;
- if (c < 0) return min;
- }
- if (!NIL_P(max)) {
- c = cmpint(x, max);
- if (c > 0) return max;
+ if (cmpint(min, max) > 0) {
+ rb_raise(rb_eArgError, "min argument must be smaller than max argument");
}
+
+ c = cmpint(x, min);
+ if (c == 0) return x;
+ if (c < 0) return min;
+ c = cmpint(x, max);
+ if (c > 0) return max;
return x;
}
/*
- * The Comparable mixin is used by classes whose objects may be
- * ordered. The class must define the <code><=></code> operator,
- * which compares the receiver against another object, returning a
- * value less than 0, returning 0, or returning a value greater than 0,
- * depending on whether the receiver is less than, equal to,
- * or greater than the other object. If the other object is not
- * comparable then the <code><=></code> operator should return +nil+.
- * Comparable uses <code><=></code> to implement the conventional
- * comparison operators (<code><</code>, <code><=</code>,
- * <code>==</code>, <code>>=</code>, and <code>></code>) and the
- * method <code>between?</code>.
+ * The <code>Comparable</code> mixin is used by classes whose objects
+ * may be ordered. The class must define the <code><=></code> operator,
+ * which compares the receiver against another object, returning -1, 0,
+ * or +1 depending on whether the receiver is less than, equal to, or
+ * greater than the other object. If the other object is not comparable
+ * then the <code><=></code> operator should return nil.
+ * <code>Comparable</code> uses
+ * <code><=></code> to implement the conventional comparison operators
+ * (<code><</code>, <code><=</code>, <code>==</code>, <code>>=</code>,
+ * and <code>></code>) and the method <code>between?</code>.
*
* class SizeMatters
* include Comparable
@@ -282,27 +243,14 @@ cmp_clamp(int argc, VALUE *argv, VALUE x)
* s4.between?(s3, s5) #=> true
* [ s3, s2, s5, s4, s1 ].sort #=> [Z, YY, XXX, WWWW, VVVVV]
*
- * == What's Here
- *
- * \Module \Comparable provides these methods, all of which use method <tt><=></tt>:
- *
- * - #<: Returns whether +self+ is less than the given object.
- * - #<=: Returns whether +self+ is less than or equal to the given object.
- * - #==: Returns whether +self+ is equal to the given object.
- * - #>: Returns whether +self+ is greater than the given object.
- * - #>=: Returns whether +self+ is greater than or equal to the given object.
- * - #between?: Returns +true+ if +self+ is between two given objects.
- * - #clamp: For given objects +min+ and +max+, or range <tt>(min..max)</tt>, returns:
- *
- * - +min+ if <tt>(self <=> min) < 0</tt>.
- * - +max+ if <tt>(self <=> max) > 0</tt>.
- * - +self+ otherwise.
- *
*/
void
Init_Comparable(void)
{
+#undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
+
rb_mComparable = rb_define_module("Comparable");
rb_define_method(rb_mComparable, "==", cmp_equal, 1);
rb_define_method(rb_mComparable, ">", cmp_gt, 1);
@@ -310,5 +258,5 @@ Init_Comparable(void)
rb_define_method(rb_mComparable, "<", cmp_lt, 1);
rb_define_method(rb_mComparable, "<=", cmp_le, 1);
rb_define_method(rb_mComparable, "between?", cmp_between, 2);
- rb_define_method(rb_mComparable, "clamp", cmp_clamp, -1);
+ rb_define_method(rb_mComparable, "clamp", cmp_clamp, 2);
}
diff --git a/compile.c b/compile.c
index 7ceb936f06..2c10d151f5 100644
--- a/compile.c
+++ b/compile.c
@@ -9,54 +9,37 @@
**********************************************************************/
-#include "ruby/internal/config.h"
-#include <math.h>
-
-#ifdef HAVE_DLADDR
-# include <dlfcn.h>
-#endif
-
-#include "encindex.h"
-#include "id_table.h"
#include "internal.h"
-#include "internal/array.h"
-#include "internal/compile.h"
-#include "internal/complex.h"
-#include "internal/encoding.h"
-#include "internal/error.h"
-#include "internal/gc.h"
-#include "internal/hash.h"
-#include "internal/numeric.h"
-#include "internal/object.h"
-#include "internal/rational.h"
-#include "internal/re.h"
-#include "internal/symbol.h"
-#include "internal/thread.h"
-#include "internal/variable.h"
-#include "iseq.h"
#include "ruby/re.h"
-#include "ruby/util.h"
-#include "vm_core.h"
-#include "vm_callinfo.h"
-#include "vm_debug.h"
+#include "encindex.h"
+#include <math.h>
-#include "builtin.h"
+#define USE_INSN_STACK_INCREASE 1
+#include "vm_core.h"
+#include "iseq.h"
#include "insns.inc"
#include "insns_info.inc"
+#include "id_table.h"
+#include "gc.h"
+
+#ifdef HAVE_DLADDR
+# include <dlfcn.h>
+#endif
#undef RUBY_UNTYPED_DATA_WARNING
#define RUBY_UNTYPED_DATA_WARNING 0
+#define ISEQ_TYPE_ONCE_GUARD ISEQ_TYPE_DEFINED_GUARD
+
#define FIXNUM_INC(n, i) ((n)+(INT2FIX(i)&~FIXNUM_FLAG))
#define FIXNUM_OR(n, i) ((n)|INT2FIX(i))
typedef struct iseq_link_element {
enum {
- ISEQ_ELEMENT_ANCHOR,
- ISEQ_ELEMENT_LABEL,
- ISEQ_ELEMENT_INSN,
- ISEQ_ELEMENT_ADJUST,
- ISEQ_ELEMENT_TRACE,
+ ISEQ_ELEMENT_LABEL,
+ ISEQ_ELEMENT_INSN,
+ ISEQ_ELEMENT_ADJUST,
+ ISEQ_ELEMENT_TRACE
} type;
struct iseq_link_element *next;
struct iseq_link_element *prev;
@@ -93,9 +76,8 @@ typedef struct iseq_insn_data {
int sc_state;
VALUE *operands;
struct {
- int line_no;
- int node_id;
- rb_event_flag_t events;
+ int line_no;
+ rb_event_flag_t events;
} insn_info;
} INSN;
@@ -108,7 +90,6 @@ typedef struct iseq_adjust_data {
typedef struct iseq_trace_data {
LINK_ELEMENT link;
rb_event_flag_t event;
- long data;
} TRACE;
struct ensure_range {
@@ -123,8 +104,6 @@ struct iseq_compile_data_ensure_node_stack {
struct ensure_range *erange;
};
-const ID rb_iseq_shared_exc_local_tbl[] = {idERROR_INFO};
-
/**
* debug function(macro) interface depend on CPDEBUG
* if it is less than 0, runtime option is in effect.
@@ -192,7 +171,6 @@ const ID rb_iseq_shared_exc_local_tbl[] = {idERROR_INFO};
#endif
#if CPDEBUG > 1 || CPDEBUG < 0
-#undef printf
#define printf ruby_debug_printf
#define debugs if (compile_debug_print_indent(1)) ruby_debug_printf
#define debug_compile(msg, v) ((void)(compile_debug_print_indent(1) && fputs((msg), stderr)), (v))
@@ -218,77 +196,109 @@ const ID rb_iseq_shared_exc_local_tbl[] = {idERROR_INFO};
APPEND_LIST((seq1), (seq2))
/* add an instruction */
-#define ADD_INSN(seq, line_node, insn) \
- ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_body(iseq, (line_node), BIN(insn), 0))
-
-/* insert an instruction before next */
-#define INSERT_BEFORE_INSN(next, line_node, insn) \
- ELEM_INSERT_PREV(&(next)->link, (LINK_ELEMENT *) new_insn_body(iseq, (line_node), BIN(insn), 0))
+#define ADD_INSN(seq, line, insn) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0))
-/* insert an instruction after prev */
-#define INSERT_AFTER_INSN(prev, line_node, insn) \
- ELEM_INSERT_NEXT(&(prev)->link, (LINK_ELEMENT *) new_insn_body(iseq, (line_node), BIN(insn), 0))
+/* insert an instruction before prev */
+#define INSERT_BEFORE_INSN(prev, line, insn) \
+ ELEM_INSERT_PREV(&(prev)->link, (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0))
/* add an instruction with some operands (1, 2, 3, 5) */
-#define ADD_INSN1(seq, line_node, insn, op1) \
+#define ADD_INSN1(seq, line, insn, op1) \
ADD_ELEM((seq), (LINK_ELEMENT *) \
- new_insn_body(iseq, (line_node), BIN(insn), 1, (VALUE)(op1)))
+ new_insn_body(iseq, (line), BIN(insn), 1, (VALUE)(op1)))
-/* insert an instruction with some operands (1, 2, 3, 5) before next */
-#define INSERT_BEFORE_INSN1(next, line_node, insn, op1) \
- ELEM_INSERT_PREV(&(next)->link, (LINK_ELEMENT *) \
- new_insn_body(iseq, (line_node), BIN(insn), 1, (VALUE)(op1)))
-
-/* insert an instruction with some operands (1, 2, 3, 5) after prev */
-#define INSERT_AFTER_INSN1(prev, line_node, insn, op1) \
- ELEM_INSERT_NEXT(&(prev)->link, (LINK_ELEMENT *) \
- new_insn_body(iseq, (line_node), BIN(insn), 1, (VALUE)(op1)))
+/* insert an instruction with some operands (1, 2, 3, 5) before prev */
+#define INSERT_BEFORE_INSN1(prev, line, insn, op1) \
+ ELEM_INSERT_PREV(&(prev)->link, (LINK_ELEMENT *) \
+ new_insn_body(iseq, (line), BIN(insn), 1, (VALUE)(op1)))
#define LABEL_REF(label) ((label)->refcnt++)
/* add an instruction with label operand (alias of ADD_INSN1) */
-#define ADD_INSNL(seq, line_node, insn, label) (ADD_INSN1(seq, line_node, insn, label), LABEL_REF(label))
+#define ADD_INSNL(seq, line, insn, label) (ADD_INSN1(seq, line, insn, label), LABEL_REF(label))
-#define ADD_INSN2(seq, line_node, insn, op1, op2) \
+#define ADD_INSN2(seq, line, insn, op1, op2) \
ADD_ELEM((seq), (LINK_ELEMENT *) \
- new_insn_body(iseq, (line_node), BIN(insn), 2, (VALUE)(op1), (VALUE)(op2)))
+ new_insn_body(iseq, (line), BIN(insn), 2, (VALUE)(op1), (VALUE)(op2)))
-#define ADD_INSN3(seq, line_node, insn, op1, op2, op3) \
+#define ADD_INSN3(seq, line, insn, op1, op2, op3) \
ADD_ELEM((seq), (LINK_ELEMENT *) \
- new_insn_body(iseq, (line_node), BIN(insn), 3, (VALUE)(op1), (VALUE)(op2), (VALUE)(op3)))
+ new_insn_body(iseq, (line), BIN(insn), 3, (VALUE)(op1), (VALUE)(op2), (VALUE)(op3)))
/* Specific Insn factory */
-#define ADD_SEND(seq, line_node, id, argc) \
- ADD_SEND_R((seq), (line_node), (id), (argc), NULL, (VALUE)INT2FIX(0), NULL)
+#define ADD_SEND(seq, line, id, argc) \
+ ADD_SEND_R((seq), (line), (id), (argc), NULL, (VALUE)INT2FIX(0), NULL)
-#define ADD_SEND_WITH_FLAG(seq, line_node, id, argc, flag) \
- ADD_SEND_R((seq), (line_node), (id), (argc), NULL, (VALUE)(flag), NULL)
+#define ADD_SEND_WITH_FLAG(seq, line, id, argc, flag) \
+ ADD_SEND_R((seq), (line), (id), (argc), NULL, (VALUE)(flag), NULL)
-#define ADD_SEND_WITH_BLOCK(seq, line_node, id, argc, block) \
- ADD_SEND_R((seq), (line_node), (id), (argc), (block), (VALUE)INT2FIX(0), NULL)
+#define ADD_SEND_WITH_BLOCK(seq, line, id, argc, block) \
+ ADD_SEND_R((seq), (line), (id), (argc), (block), (VALUE)INT2FIX(0), NULL)
-#define ADD_CALL_RECEIVER(seq, line_node) \
- ADD_INSN((seq), (line_node), putself)
+#define ADD_CALL_RECEIVER(seq, line) \
+ ADD_INSN((seq), (line), putself)
-#define ADD_CALL(seq, line_node, id, argc) \
- ADD_SEND_R((seq), (line_node), (id), (argc), NULL, (VALUE)INT2FIX(VM_CALL_FCALL), NULL)
+#define ADD_CALL(seq, line, id, argc) \
+ ADD_SEND_R((seq), (line), (id), (argc), NULL, (VALUE)INT2FIX(VM_CALL_FCALL), NULL)
-#define ADD_CALL_WITH_BLOCK(seq, line_node, id, argc, block) \
- ADD_SEND_R((seq), (line_node), (id), (argc), (block), (VALUE)INT2FIX(VM_CALL_FCALL), NULL)
+#define ADD_CALL_WITH_BLOCK(seq, line, id, argc, block) \
+ ADD_SEND_R((seq), (line), (id), (argc), (block), (VALUE)INT2FIX(VM_CALL_FCALL), NULL)
-#define ADD_SEND_R(seq, line_node, id, argc, block, flag, keywords) \
- ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_send(iseq, (line_node), (id), (VALUE)(argc), (block), (VALUE)(flag), (keywords)))
+#define ADD_SEND_R(seq, line, id, argc, block, flag, keywords) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_send(iseq, (line), (id), (VALUE)(argc), (block), (VALUE)(flag), (keywords)))
#define ADD_TRACE(seq, event) \
- ADD_ELEM((seq), (LINK_ELEMENT *)new_trace_body(iseq, (event), 0))
-#define ADD_TRACE_WITH_DATA(seq, event, data) \
- ADD_ELEM((seq), (LINK_ELEMENT *)new_trace_body(iseq, (event), (data)))
-
-static void iseq_add_getlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *const line_node, int idx, int level);
-static void iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *const line_node, int idx, int level);
-
-#define ADD_GETLOCAL(seq, line_node, idx, level) iseq_add_getlocal(iseq, (seq), (line_node), (idx), (level))
-#define ADD_SETLOCAL(seq, line_node, idx, level) iseq_add_setlocal(iseq, (seq), (line_node), (idx), (level))
+ ADD_ELEM((seq), (LINK_ELEMENT *)new_trace_body(iseq, (event)))
+#define ADD_TRACE_LINE_COVERAGE(seq, line) \
+ do { \
+ if (ISEQ_COVERAGE(iseq) && \
+ ISEQ_LINE_COVERAGE(iseq) && \
+ (line) > 0) { \
+ RARRAY_ASET(ISEQ_LINE_COVERAGE(iseq), (line) - 1, INT2FIX(0)); \
+ ADD_INSN2((seq), (line), tracecoverage, INT2FIX(RUBY_EVENT_COVERAGE_LINE), INT2FIX(line)); \
+ } \
+ } while (0)
+
+
+#define DECL_BRANCH_BASE(branches, first_line, first_column, last_line, last_column, type) \
+ do { \
+ if (ISEQ_COVERAGE(iseq) && \
+ ISEQ_BRANCH_COVERAGE(iseq) && \
+ (first_line) > 0) { \
+ VALUE structure = RARRAY_AREF(ISEQ_BRANCH_COVERAGE(iseq), 0); \
+ branches = rb_ary_tmp_new(0); \
+ rb_ary_push(structure, branches); \
+ rb_ary_push(branches, ID2SYM(rb_intern(type))); \
+ rb_ary_push(branches, INT2FIX(first_line)); \
+ rb_ary_push(branches, INT2FIX(first_column)); \
+ rb_ary_push(branches, INT2FIX(last_line)); \
+ rb_ary_push(branches, INT2FIX(last_column)); \
+ } \
+ } while (0)
+#define ADD_TRACE_BRANCH_COVERAGE(seq, first_line, first_column, last_line, last_column, type, branches) \
+ do { \
+ if (ISEQ_COVERAGE(iseq) && \
+ ISEQ_BRANCH_COVERAGE(iseq) && \
+ (first_line) > 0) { \
+ VALUE counters = RARRAY_AREF(ISEQ_BRANCH_COVERAGE(iseq), 1); \
+ long counter_idx = RARRAY_LEN(counters); \
+ rb_ary_push(counters, INT2FIX(0)); \
+ rb_ary_push(branches, ID2SYM(rb_intern(type))); \
+ rb_ary_push(branches, INT2FIX(first_line)); \
+ rb_ary_push(branches, INT2FIX(first_column)); \
+ rb_ary_push(branches, INT2FIX(last_line)); \
+ rb_ary_push(branches, INT2FIX(last_column)); \
+ rb_ary_push(branches, INT2FIX(counter_idx)); \
+ ADD_INSN2((seq), (first_line), tracecoverage, INT2FIX(RUBY_EVENT_COVERAGE_BRANCH), INT2FIX(counter_idx)); \
+ } \
+ } while (0)
+
+static void iseq_add_getlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, int line, int idx, int level);
+static void iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, int line, int idx, int level);
+
+#define ADD_GETLOCAL(seq, line, idx, level) iseq_add_getlocal(iseq, (seq), (line), (idx), (level))
+#define ADD_SETLOCAL(seq, line, idx, level) iseq_add_setlocal(iseq, (seq), (line), (idx), (level))
/* add label */
#define ADD_LABEL(seq, label) \
@@ -297,8 +307,8 @@ static void iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NOD
#define APPEND_LABEL(seq, before, label) \
APPEND_ELEM((seq), (before), (LINK_ELEMENT *) (label))
-#define ADD_ADJUST(seq, line_node, label) \
- ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), nd_line(line_node)))
+#define ADD_ADJUST(seq, line, label) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), (line)))
#define ADD_ADJUST_RESTORE(seq, label) \
ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), -1))
@@ -307,13 +317,11 @@ static void iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NOD
((label) ? (LABEL_REF(label), (label)->unremovable=1) : 0)
#define ADD_CATCH_ENTRY(type, ls, le, iseqv, lc) do { \
VALUE _e = rb_ary_new3(5, (type), \
- (VALUE)(ls) | 1, (VALUE)(le) | 1, \
- (VALUE)(iseqv), (VALUE)(lc) | 1); \
+ (VALUE)(ls) | 1, (VALUE)(le) | 1, \
+ (VALUE)(iseqv), (VALUE)(lc) | 1); \
LABEL_UNREMOVABLE(ls); \
LABEL_REF(le); \
LABEL_REF(lc); \
- if (NIL_P(ISEQ_COMPILE_DATA(iseq)->catch_table_ary)) \
- RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->catch_table_ary, rb_ary_hidden_new(3)); \
rb_ary_push(ISEQ_COMPILE_DATA(iseq)->catch_table_ary, freeze_hide_obj(_e)); \
} while (0)
@@ -334,8 +342,8 @@ static void iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NOD
#define COMPILE_RECV(anchor, desc, node) \
(private_recv_p(node) ? \
- (ADD_INSN(anchor, node, putself), VM_CALL_FCALL) : \
- COMPILE(anchor, desc, node->nd_recv) ? 0 : -1)
+ (ADD_INSN(anchor, nd_line(node), putself), VM_CALL_FCALL) : \
+ (COMPILE(anchor, desc, node->nd_recv), 0))
#define OPERAND_AT(insn, idx) \
(((INSN*)(insn))->operands[(idx)])
@@ -353,11 +361,11 @@ static void iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NOD
/* error */
#if CPDEBUG > 0
-RBIMPL_ATTR_NORETURN()
+NORETURN(static void append_compile_error(rb_iseq_t *iseq, int line, const char *fmt, ...));
#endif
-RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 4)
+
static void
-append_compile_error(const rb_iseq_t *iseq, int line, const char *fmt, ...)
+append_compile_error(rb_iseq_t *iseq, int line, const char *fmt, ...)
{
VALUE err_info = ISEQ_COMPILE_DATA(iseq)->err_info;
VALUE file = rb_iseq_path(iseq);
@@ -368,16 +376,13 @@ append_compile_error(const rb_iseq_t *iseq, int line, const char *fmt, ...)
err = rb_syntax_error_append(err, file, line, -1, NULL, fmt, args);
va_end(args);
if (NIL_P(err_info)) {
- RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->err_info, err);
- rb_set_errinfo(err);
+ RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->err_info, err);
+ rb_set_errinfo(err);
}
else if (!err_info) {
- RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->err_info, Qtrue);
- }
- if (compile_debug) {
- if (SPECIAL_CONST_P(err)) err = rb_eSyntaxError;
- rb_exc_fatal(err);
+ RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->err_info, Qtrue);
}
+ if (compile_debug) rb_exc_fatal(err);
}
#if 0
@@ -402,17 +407,17 @@ do { \
const NODE *error_node = (node); \
enum node_type error_type = nd_type(error_node); \
if (error_type != (ndtype)) { \
- COMPILE_ERROR(ERROR_ARGS_AT(error_node) \
- prefix ": " #ndtype " is expected, but %s", \
- ruby_node_name(error_type)); \
- return errval; \
+ COMPILE_ERROR(ERROR_ARGS_AT(error_node) \
+ prefix ": " #ndtype " is expected, but %s", \
+ ruby_node_name(error_type)); \
+ return errval; \
} \
} while (0)
#define EXPECT_NODE_NONULL(prefix, parent, ndtype, errval) \
do { \
COMPILE_ERROR(ERROR_ARGS_AT(parent) \
- prefix ": must be " #ndtype ", but 0"); \
+ prefix ": must be " #ndtype ", but 0"); \
return errval; \
} while (0)
@@ -420,7 +425,7 @@ do { \
do { \
const NODE *error_node = (node); \
COMPILE_ERROR(ERROR_ARGS_AT(error_node) prefix ": unknown node (%s)", \
- ruby_node_name(nd_type(error_node))); \
+ ruby_node_name(nd_type(error_node))); \
return errval; \
} while (0)
@@ -428,13 +433,12 @@ do { \
#define COMPILE_NG 0
#define CHECK(sub) if (!(sub)) {BEFORE_RETURN;return COMPILE_NG;}
-#define NO_CHECK(sub) (void)(sub)
#define BEFORE_RETURN
/* leave name uninitialized so that compiler warn if INIT_ANCHOR is
* missing */
#define DECL_ANCHOR(name) \
- LINK_ANCHOR name[1] = {{{ISEQ_ELEMENT_ANCHOR,},}}
+ LINK_ANCHOR name[1] = {{{0,},}}
#define INIT_ANCHOR(name) \
(name->last = &name->anchor)
@@ -470,10 +474,10 @@ static void dump_disasm_list(const LINK_ELEMENT *elem);
static int insn_data_length(INSN *iobj);
static int calc_sp_depth(int depth, INSN *iobj);
-static INSN *new_insn_body(rb_iseq_t *iseq, const NODE *const line_node, enum ruby_vminsn_type insn_id, int argc, ...);
+static INSN *new_insn_body(rb_iseq_t *iseq, int line_no, enum ruby_vminsn_type insn_id, int argc, ...);
static LABEL *new_label_body(rb_iseq_t *iseq, long line);
static ADJUST *new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line);
-static TRACE *new_trace_body(rb_iseq_t *iseq, rb_event_flag_t event, long data);
+static TRACE *new_trace_body(rb_iseq_t *iseq, rb_event_flag_t event);
static int iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *anchor, const NODE *n, int);
@@ -482,7 +486,7 @@ static int iseq_setup_insn(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
static int iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
static int iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
-static int iseq_set_local_table(rb_iseq_t *iseq, const rb_ast_id_table_t *tbl);
+static int iseq_set_local_table(rb_iseq_t *iseq, const ID *tbl);
static int iseq_set_exception_local_table(rb_iseq_t *iseq);
static int iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *const anchor, const NODE *const node);
@@ -492,7 +496,6 @@ static int iseq_set_exception_table(rb_iseq_t *iseq);
static int iseq_set_optargs_table(rb_iseq_t *iseq);
static int compile_defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE needstr);
-static int compile_hash(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, int method_call_keywords, int popped);
/*
* To make Array to LinkedList, use link_anchor
@@ -510,19 +513,19 @@ verify_list(ISEQ_ARG_DECLARE const char *info, LINK_ANCHOR *const anchor)
list = anchor->anchor.next;
plist = &anchor->anchor;
while (list) {
- if (plist != list->prev) {
- flag += 1;
- }
- plist = list;
- list = list->next;
+ if (plist != list->prev) {
+ flag += 1;
+ }
+ plist = list;
+ list = list->next;
}
if (anchor->last != plist && anchor->last != 0) {
- flag |= 0x70000;
+ flag |= 0x70000;
}
if (flag != 0) {
- rb_bug("list verify error: %08x (%s)", flag, info);
+ rb_bug("list verify error: %08x (%s)", flag, info);
}
#endif
}
@@ -530,42 +533,6 @@ verify_list(ISEQ_ARG_DECLARE const char *info, LINK_ANCHOR *const anchor)
#define verify_list(info, anchor) verify_list(iseq, (info), (anchor))
#endif
-static void
-verify_call_cache(rb_iseq_t *iseq)
-{
-#if CPDEBUG
- VALUE *original = rb_iseq_original_iseq(iseq);
- size_t i = 0;
- while (i < ISEQ_BODY(iseq)->iseq_size) {
- VALUE insn = original[i];
- const char *types = insn_op_types(insn);
-
- for (int j=0; types[j]; j++) {
- if (types[j] == TS_CALLDATA) {
- struct rb_call_data *cd = (struct rb_call_data *)original[i+j+1];
- const struct rb_callinfo *ci = cd->ci;
- const struct rb_callcache *cc = cd->cc;
- if (cc != vm_cc_empty()) {
- vm_ci_dump(ci);
- rb_bug("call cache is not initialized by vm_cc_empty()");
- }
- }
- }
- i += insn_len(insn);
- }
-
- for (unsigned int i=0; i<ISEQ_BODY(iseq)->ci_size; i++) {
- struct rb_call_data *cd = &ISEQ_BODY(iseq)->call_data[i];
- const struct rb_callinfo *ci = cd->ci;
- const struct rb_callcache *cc = cd->cc;
- if (cc != NULL && cc != vm_cc_empty()) {
- vm_ci_dump(ci);
- rb_bug("call cache is not initialized by vm_cc_empty()");
- }
- }
-#endif
-}
-
/*
* elem1, elem2 => elem1, elem2, elem
*/
@@ -597,119 +564,42 @@ APPEND_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor, LINK_ELEMENT *before, LI
#endif
static int
-branch_coverage_valid_p(rb_iseq_t *iseq, int first_line)
-{
- if (!ISEQ_COVERAGE(iseq)) return 0;
- if (!ISEQ_BRANCH_COVERAGE(iseq)) return 0;
- if (first_line <= 0) return 0;
- return 1;
-}
-
-static VALUE
-decl_branch_base(rb_iseq_t *iseq, const NODE *node, const char *type)
+iseq_add_mark_object(const rb_iseq_t *iseq, VALUE v)
{
- const int first_lineno = nd_first_lineno(node), first_column = nd_first_column(node);
- const int last_lineno = nd_last_lineno(node), last_column = nd_last_column(node);
-
- if (!branch_coverage_valid_p(iseq, first_lineno)) return Qundef;
-
- /*
- * if !structure[node]
- * structure[node] = [type, first_lineno, first_column, last_lineno, last_column, branches = {}]
- * else
- * branches = structure[node][5]
- * end
- */
-
- VALUE structure = RARRAY_AREF(ISEQ_BRANCH_COVERAGE(iseq), 0);
- VALUE key = (VALUE)node | 1; // FIXNUM for hash key
- VALUE branch_base = rb_hash_aref(structure, key);
- VALUE branches;
-
- if (NIL_P(branch_base)) {
- branch_base = rb_ary_hidden_new(6);
- rb_hash_aset(structure, key, branch_base);
- rb_ary_push(branch_base, ID2SYM(rb_intern(type)));
- rb_ary_push(branch_base, INT2FIX(first_lineno));
- rb_ary_push(branch_base, INT2FIX(first_column));
- rb_ary_push(branch_base, INT2FIX(last_lineno));
- rb_ary_push(branch_base, INT2FIX(last_column));
- branches = rb_hash_new();
- rb_obj_hide(branches);
- rb_ary_push(branch_base, branches);
+ if (!SPECIAL_CONST_P(v)) {
+ rb_iseq_add_mark_object(iseq, v);
}
- else {
- branches = RARRAY_AREF(branch_base, 5);
- }
-
- return branches;
+ return COMPILE_OK;
}
-static NODE
-generate_dummy_line_node(int lineno, int node_id)
+static int
+iseq_add_mark_object_compile_time(const rb_iseq_t *iseq, VALUE v)
{
- NODE dummy = { 0 };
- nd_set_line(&dummy, lineno);
- nd_set_node_id(&dummy, node_id);
- return dummy;
+ if (!SPECIAL_CONST_P(v)) {
+ rb_ary_push(ISEQ_COMPILE_DATA(iseq)->mark_ary, v);
+ }
+ return COMPILE_OK;
}
-static void
-add_trace_branch_coverage(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *node, int branch_id, const char *type, VALUE branches)
+static inline VALUE
+freeze_literal(rb_iseq_t *iseq, VALUE lit)
{
- const int first_lineno = nd_first_lineno(node), first_column = nd_first_column(node);
- const int last_lineno = nd_last_lineno(node), last_column = nd_last_column(node);
-
- if (!branch_coverage_valid_p(iseq, first_lineno)) return;
-
- /*
- * if !branches[branch_id]
- * branches[branch_id] = [type, first_lineno, first_column, last_lineno, last_column, counter_idx]
- * else
- * counter_idx= branches[branch_id][5]
- * end
- */
-
- VALUE key = INT2FIX(branch_id);
- VALUE branch = rb_hash_aref(branches, key);
- long counter_idx;
-
- if (NIL_P(branch)) {
- branch = rb_ary_hidden_new(6);
- rb_hash_aset(branches, key, branch);
- rb_ary_push(branch, ID2SYM(rb_intern(type)));
- rb_ary_push(branch, INT2FIX(first_lineno));
- rb_ary_push(branch, INT2FIX(first_column));
- rb_ary_push(branch, INT2FIX(last_lineno));
- rb_ary_push(branch, INT2FIX(last_column));
- VALUE counters = RARRAY_AREF(ISEQ_BRANCH_COVERAGE(iseq), 1);
- counter_idx = RARRAY_LEN(counters);
- rb_ary_push(branch, LONG2FIX(counter_idx));
- rb_ary_push(counters, INT2FIX(0));
- }
- else {
- counter_idx = FIX2LONG(RARRAY_AREF(branch, 5));
- }
-
- ADD_TRACE_WITH_DATA(seq, RUBY_EVENT_COVERAGE_BRANCH, counter_idx);
-
- NODE dummy_line_node = generate_dummy_line_node(last_lineno, nd_node_id(node));
- ADD_INSN(seq, &dummy_line_node, nop);
+ lit = rb_fstring(lit);
+ rb_ary_push(ISEQ_COMPILE_DATA(iseq)->mark_ary, lit);
+ return lit;
}
-#define ISEQ_LAST_LINE(iseq) (ISEQ_COMPILE_DATA(iseq)->last_line)
-
static int
validate_label(st_data_t name, st_data_t label, st_data_t arg)
{
rb_iseq_t *iseq = (rb_iseq_t *)arg;
LABEL *lobj = (LABEL *)label;
if (!lobj->link.next) {
- do {
- COMPILE_ERROR(iseq, lobj->position,
- "%"PRIsVALUE": undefined label",
- rb_sym2str((VALUE)name));
- } while (0);
+ do {
+ COMPILE_ERROR(iseq, lobj->position,
+ "%"PRIsVALUE": undefined label",
+ rb_sym2str((VALUE)name));
+ } while (0);
}
return ST_CONTINUE;
}
@@ -722,15 +612,14 @@ validate_labels(rb_iseq_t *iseq, st_table *labels_table)
}
VALUE
-rb_iseq_compile_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func * ifunc)
+rb_iseq_compile_ifunc(rb_iseq_t *iseq, const struct vm_ifunc *ifunc)
{
DECL_ANCHOR(ret);
INIT_ANCHOR(ret);
(*ifunc->func)(iseq, ret, ifunc->data);
- NODE dummy_line_node = generate_dummy_line_node(ISEQ_COMPILE_DATA(iseq)->last_line, -1);
- ADD_INSN(ret, &dummy_line_node, leave);
+ ADD_INSN(ret, ISEQ_COMPILE_DATA(iseq)->last_line, leave);
CHECK(iseq_setup_insn(iseq, ret));
return iseq_setup(iseq, ret);
@@ -742,159 +631,171 @@ rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node)
DECL_ANCHOR(ret);
INIT_ANCHOR(ret);
- if (IMEMO_TYPE_P(node, imemo_ifunc)) {
- rb_raise(rb_eArgError, "unexpected imemo_ifunc");
- }
-
if (node == 0) {
- NO_CHECK(COMPILE(ret, "nil", node));
- iseq_set_local_table(iseq, 0);
+ COMPILE(ret, "nil", node);
+ iseq_set_local_table(iseq, 0);
+ }
+ else if (imemo_type_p((VALUE)node, imemo_ifunc)) {
+ const struct vm_ifunc *ifunc = (struct vm_ifunc *)node;
+ /* user callback */
+ (*ifunc->func)(iseq, ret, ifunc->data);
}
/* assume node is T_NODE */
- else if (nd_type_p(node, NODE_SCOPE)) {
- /* iseq type of top, method, class, block */
- iseq_set_local_table(iseq, node->nd_tbl);
- iseq_set_arguments(iseq, ret, node->nd_args);
-
- switch (ISEQ_BODY(iseq)->type) {
- case ISEQ_TYPE_BLOCK:
- {
- LABEL *start = ISEQ_COMPILE_DATA(iseq)->start_label = NEW_LABEL(0);
- LABEL *end = ISEQ_COMPILE_DATA(iseq)->end_label = NEW_LABEL(0);
-
- start->rescued = LABEL_RESCUE_BEG;
- end->rescued = LABEL_RESCUE_END;
-
- ADD_TRACE(ret, RUBY_EVENT_B_CALL);
- NODE dummy_line_node = generate_dummy_line_node(ISEQ_BODY(iseq)->location.first_lineno, -1);
- ADD_INSN (ret, &dummy_line_node, nop);
- ADD_LABEL(ret, start);
- CHECK(COMPILE(ret, "block body", node->nd_body));
- ADD_LABEL(ret, end);
- ADD_TRACE(ret, RUBY_EVENT_B_RETURN);
- ISEQ_COMPILE_DATA(iseq)->last_line = ISEQ_BODY(iseq)->location.code_location.end_pos.lineno;
-
- /* wide range catch handler must put at last */
- ADD_CATCH_ENTRY(CATCH_TYPE_REDO, start, end, NULL, start);
- ADD_CATCH_ENTRY(CATCH_TYPE_NEXT, start, end, NULL, end);
- break;
- }
- case ISEQ_TYPE_CLASS:
- {
- ADD_TRACE(ret, RUBY_EVENT_CLASS);
- CHECK(COMPILE(ret, "scoped node", node->nd_body));
- ADD_TRACE(ret, RUBY_EVENT_END);
- ISEQ_COMPILE_DATA(iseq)->last_line = nd_line(node);
- break;
- }
- case ISEQ_TYPE_METHOD:
- {
- ISEQ_COMPILE_DATA(iseq)->root_node = node->nd_body;
- ADD_TRACE(ret, RUBY_EVENT_CALL);
- CHECK(COMPILE(ret, "scoped node", node->nd_body));
- ISEQ_COMPILE_DATA(iseq)->root_node = node->nd_body;
- ADD_TRACE(ret, RUBY_EVENT_RETURN);
- ISEQ_COMPILE_DATA(iseq)->last_line = nd_line(node);
- break;
- }
- default: {
- CHECK(COMPILE(ret, "scoped node", node->nd_body));
- break;
- }
- }
+ else if (nd_type(node) == NODE_SCOPE) {
+ /* iseq type of top, method, class, block */
+ iseq_set_local_table(iseq, node->nd_tbl);
+ iseq_set_arguments(iseq, ret, node->nd_args);
+
+ switch (iseq->body->type) {
+ case ISEQ_TYPE_BLOCK:
+ {
+ LABEL *start = ISEQ_COMPILE_DATA(iseq)->start_label = NEW_LABEL(0);
+ LABEL *end = ISEQ_COMPILE_DATA(iseq)->end_label = NEW_LABEL(0);
+
+ start->rescued = LABEL_RESCUE_BEG;
+ end->rescued = LABEL_RESCUE_END;
+
+ ADD_TRACE(ret, RUBY_EVENT_B_CALL);
+ ADD_INSN (ret, FIX2INT(iseq->body->location.first_lineno), nop);
+ ADD_LABEL(ret, start);
+ CHECK(COMPILE(ret, "block body", node->nd_body));
+ ADD_LABEL(ret, end);
+ ADD_TRACE(ret, RUBY_EVENT_B_RETURN);
+ ISEQ_COMPILE_DATA(iseq)->last_line = iseq->body->location.code_range.last_loc.lineno;
+
+ /* wide range catch handler must put at last */
+ ADD_CATCH_ENTRY(CATCH_TYPE_REDO, start, end, NULL, start);
+ ADD_CATCH_ENTRY(CATCH_TYPE_NEXT, start, end, NULL, end);
+ break;
+ }
+ case ISEQ_TYPE_CLASS:
+ {
+ ADD_TRACE(ret, RUBY_EVENT_CLASS);
+ CHECK(COMPILE(ret, "scoped node", node->nd_body));
+ ADD_TRACE(ret, RUBY_EVENT_END);
+ ISEQ_COMPILE_DATA(iseq)->last_line = nd_line(node);
+ break;
+ }
+ case ISEQ_TYPE_METHOD:
+ {
+ ADD_TRACE(ret, RUBY_EVENT_CALL);
+ CHECK(COMPILE(ret, "scoped node", node->nd_body));
+ ADD_TRACE(ret, RUBY_EVENT_RETURN);
+ ISEQ_COMPILE_DATA(iseq)->last_line = nd_line(node);
+ break;
+ }
+ default: {
+ CHECK(COMPILE(ret, "scoped node", node->nd_body));
+ break;
+ }
+ }
}
else {
- const char *m;
+ const char *m;
#define INVALID_ISEQ_TYPE(type) \
- ISEQ_TYPE_##type: m = #type; goto invalid_iseq_type
- switch (ISEQ_BODY(iseq)->type) {
- case INVALID_ISEQ_TYPE(METHOD);
- case INVALID_ISEQ_TYPE(CLASS);
- case INVALID_ISEQ_TYPE(BLOCK);
- case INVALID_ISEQ_TYPE(EVAL);
- case INVALID_ISEQ_TYPE(MAIN);
- case INVALID_ISEQ_TYPE(TOP);
+ ISEQ_TYPE_##type: m = #type; goto invalid_iseq_type
+ switch (iseq->body->type) {
+ case INVALID_ISEQ_TYPE(METHOD);
+ case INVALID_ISEQ_TYPE(CLASS);
+ case INVALID_ISEQ_TYPE(BLOCK);
+ case INVALID_ISEQ_TYPE(EVAL);
+ case INVALID_ISEQ_TYPE(MAIN);
+ case INVALID_ISEQ_TYPE(TOP);
#undef INVALID_ISEQ_TYPE /* invalid iseq types end */
- case ISEQ_TYPE_RESCUE:
- iseq_set_exception_local_table(iseq);
- CHECK(COMPILE(ret, "rescue", node));
- break;
- case ISEQ_TYPE_ENSURE:
- iseq_set_exception_local_table(iseq);
- CHECK(COMPILE_POPPED(ret, "ensure", node));
- break;
- case ISEQ_TYPE_PLAIN:
- CHECK(COMPILE(ret, "ensure", node));
- break;
- default:
- COMPILE_ERROR(ERROR_ARGS "unknown scope: %d", ISEQ_BODY(iseq)->type);
- return COMPILE_NG;
- invalid_iseq_type:
- COMPILE_ERROR(ERROR_ARGS "compile/ISEQ_TYPE_%s should not be reached", m);
- return COMPILE_NG;
- }
- }
-
- if (ISEQ_BODY(iseq)->type == ISEQ_TYPE_RESCUE || ISEQ_BODY(iseq)->type == ISEQ_TYPE_ENSURE) {
- NODE dummy_line_node = generate_dummy_line_node(0, -1);
- ADD_GETLOCAL(ret, &dummy_line_node, LVAR_ERRINFO, 0);
- ADD_INSN1(ret, &dummy_line_node, throw, INT2FIX(0) /* continue throw */ );
+ case ISEQ_TYPE_RESCUE:
+ iseq_set_exception_local_table(iseq);
+ CHECK(COMPILE(ret, "rescue", node));
+ break;
+ case ISEQ_TYPE_ENSURE:
+ iseq_set_exception_local_table(iseq);
+ CHECK(COMPILE_POPPED(ret, "ensure", node));
+ break;
+ case ISEQ_TYPE_DEFINED_GUARD:
+ iseq_set_exception_local_table(iseq);
+ CHECK(COMPILE(ret, "defined guard", node));
+ break;
+ default:
+ COMPILE_ERROR(ERROR_ARGS "unknown scope: %d", iseq->body->type);
+ return COMPILE_NG;
+ invalid_iseq_type:
+ COMPILE_ERROR(ERROR_ARGS "compile/ISEQ_TYPE_%s should not be reached", m);
+ return COMPILE_NG;
+ }
+ }
+
+ if (iseq->body->type == ISEQ_TYPE_RESCUE || iseq->body->type == ISEQ_TYPE_ENSURE) {
+ ADD_GETLOCAL(ret, 0, LVAR_ERRINFO, 0);
+ ADD_INSN1(ret, 0, throw, INT2FIX(0) /* continue throw */ );
}
else {
- NODE dummy_line_node = generate_dummy_line_node(ISEQ_COMPILE_DATA(iseq)->last_line, -1);
- ADD_INSN(ret, &dummy_line_node, leave);
+ ADD_INSN(ret, ISEQ_COMPILE_DATA(iseq)->last_line, leave);
}
-#if OPT_SUPPORT_JOKE
+#if SUPPORT_JOKE
if (ISEQ_COMPILE_DATA(iseq)->labels_table) {
- st_table *labels_table = ISEQ_COMPILE_DATA(iseq)->labels_table;
- ISEQ_COMPILE_DATA(iseq)->labels_table = 0;
- validate_labels(iseq, labels_table);
+ st_table *labels_table = ISEQ_COMPILE_DATA(iseq)->labels_table;
+ ISEQ_COMPILE_DATA(iseq)->labels_table = 0;
+ validate_labels(iseq, labels_table);
}
#endif
CHECK(iseq_setup_insn(iseq, ret));
return iseq_setup(iseq, ret);
}
-static int
+int
rb_iseq_translate_threaded_code(rb_iseq_t *iseq)
{
#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
const void * const *table = rb_vm_get_insns_address_table();
unsigned int i;
- VALUE *encoded = (VALUE *)ISEQ_BODY(iseq)->iseq_encoded;
+ VALUE *encoded = (VALUE *)iseq->body->iseq_encoded;
- for (i = 0; i < ISEQ_BODY(iseq)->iseq_size; /* */ ) {
- int insn = (int)ISEQ_BODY(iseq)->iseq_encoded[i];
- int len = insn_len(insn);
- encoded[i] = (VALUE)table[insn];
- i += len;
+ for (i = 0; i < iseq->body->iseq_size; /* */ ) {
+ int insn = (int)iseq->body->iseq_encoded[i];
+ int len = insn_len(insn);
+ encoded[i] = (VALUE)table[insn];
+ i += len;
}
- FL_SET((VALUE)iseq, ISEQ_TRANSLATED);
#endif
return COMPILE_OK;
}
+#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
+static int
+rb_vm_insn_addr2insn(const void *addr) /* cold path */
+{
+ int insn;
+ const void * const *table = rb_vm_get_insns_address_table();
+
+ for (insn = 0; insn < VM_INSTRUCTION_SIZE; insn++) {
+ if (table[insn] == addr) {
+ return insn;
+ }
+ }
+ rb_bug("rb_vm_insn_addr2insn: invalid insn address: %p", addr);
+}
+#endif
+
VALUE *
rb_iseq_original_iseq(const rb_iseq_t *iseq) /* cold path */
{
VALUE *original_code;
if (ISEQ_ORIGINAL_ISEQ(iseq)) return ISEQ_ORIGINAL_ISEQ(iseq);
- original_code = ISEQ_ORIGINAL_ISEQ_ALLOC(iseq, ISEQ_BODY(iseq)->iseq_size);
- MEMCPY(original_code, ISEQ_BODY(iseq)->iseq_encoded, VALUE, ISEQ_BODY(iseq)->iseq_size);
+ original_code = ISEQ_ORIGINAL_ISEQ_ALLOC(iseq, iseq->body->iseq_size);
+ MEMCPY(original_code, iseq->body->iseq_encoded, VALUE, iseq->body->iseq_size);
#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
{
- unsigned int i;
+ unsigned int i;
- for (i = 0; i < ISEQ_BODY(iseq)->iseq_size; /* */ ) {
- const void *addr = (const void *)original_code[i];
- const int insn = rb_vm_insn_addr2insn(addr);
+ for (i = 0; i < iseq->body->iseq_size; /* */ ) {
+ const void *addr = (const void *)original_code[i];
+ const int insn = rb_vm_insn_addr2insn(addr);
- original_code[i] = insn;
- i += insn_len(insn);
- }
+ original_code[i] = insn;
+ i += insn_len(insn);
+ }
}
#endif
return original_code;
@@ -914,16 +815,6 @@ rb_iseq_original_iseq(const rb_iseq_t *iseq) /* cold path */
#define STRICT_ALIGNMENT
#endif
-/*
- * Some OpenBSD platforms (including sparc64) require strict alignment.
- */
-#if defined(__OpenBSD__)
- #include <sys/endian.h>
- #ifdef __STRICT_ALIGNMENT
- #define STRICT_ALIGNMENT
- #endif
-#endif
-
#ifdef STRICT_ALIGNMENT
#if defined(HAVE_TRUE_LONG_LONG) && SIZEOF_LONG_LONG > SIZEOF_VALUE
#define ALIGNMENT_SIZE SIZEOF_LONG_LONG
@@ -964,10 +855,11 @@ calc_padding(void *ptr, size_t size)
#endif /* STRICT_ALIGNMENT */
static void *
-compile_data_alloc_with_arena(struct iseq_compile_data_storage **arena, size_t size)
+compile_data_alloc(rb_iseq_t *iseq, size_t size)
{
void *ptr = 0;
- struct iseq_compile_data_storage *storage = *arena;
+ struct iseq_compile_data_storage *storage =
+ ISEQ_COMPILE_DATA(iseq)->storage_current;
#ifdef STRICT_ALIGNMENT
size_t padding = calc_padding((void *)&storage->buff[storage->pos], size);
#else
@@ -976,18 +868,18 @@ compile_data_alloc_with_arena(struct iseq_compile_data_storage **arena, size_t s
if (size >= INT_MAX - padding) rb_memerror();
if (storage->pos + size + padding > storage->size) {
- unsigned int alloc_size = storage->size;
-
- while (alloc_size < size + PADDING_SIZE_MAX) {
- if (alloc_size >= INT_MAX / 2) rb_memerror();
- alloc_size *= 2;
- }
- storage->next = (void *)ALLOC_N(char, alloc_size +
- offsetof(struct iseq_compile_data_storage, buff));
- storage = *arena = storage->next;
- storage->next = 0;
- storage->pos = 0;
- storage->size = alloc_size;
+ unsigned int alloc_size = storage->size;
+
+ while (alloc_size < size + PADDING_SIZE_MAX) {
+ if (alloc_size >= INT_MAX / 2) rb_memerror();
+ alloc_size *= 2;
+ }
+ storage->next = (void *)ALLOC_N(char, alloc_size +
+ SIZEOF_ISEQ_COMPILE_DATA_STORAGE);
+ storage = ISEQ_COMPILE_DATA(iseq)->storage_current = storage->next;
+ storage->next = 0;
+ storage->pos = 0;
+ storage->size = alloc_size;
#ifdef STRICT_ALIGNMENT
padding = calc_padding((void *)&storage->buff[storage->pos], size);
#endif /* STRICT_ALIGNMENT */
@@ -1002,34 +894,10 @@ compile_data_alloc_with_arena(struct iseq_compile_data_storage **arena, size_t s
return ptr;
}
-static void *
-compile_data_alloc(rb_iseq_t *iseq, size_t size)
-{
- struct iseq_compile_data_storage ** arena = &ISEQ_COMPILE_DATA(iseq)->node.storage_current;
- return compile_data_alloc_with_arena(arena, size);
-}
-
-static inline void *
-compile_data_alloc2(rb_iseq_t *iseq, size_t x, size_t y)
-{
- size_t size = rb_size_mul_or_raise(x, y, rb_eRuntimeError);
- return compile_data_alloc(iseq, size);
-}
-
-static inline void *
-compile_data_calloc2(rb_iseq_t *iseq, size_t x, size_t y)
-{
- size_t size = rb_size_mul_or_raise(x, y, rb_eRuntimeError);
- void *p = compile_data_alloc(iseq, size);
- memset(p, 0, size);
- return p;
-}
-
static INSN *
compile_data_alloc_insn(rb_iseq_t *iseq)
{
- struct iseq_compile_data_storage ** arena = &ISEQ_COMPILE_DATA(iseq)->insn.storage_current;
- return (INSN *)compile_data_alloc_with_arena(arena, sizeof(INSN));
+ return (INSN *)compile_data_alloc(iseq, sizeof(INSN));
}
static LABEL *
@@ -1060,7 +928,7 @@ ELEM_INSERT_NEXT(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)
elem2->prev = elem1;
elem1->next = elem2;
if (elem2->next) {
- elem2->next->prev = elem2;
+ elem2->next->prev = elem2;
}
}
@@ -1074,7 +942,7 @@ ELEM_INSERT_PREV(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)
elem2->next = elem1;
elem1->prev = elem2;
if (elem2->prev) {
- elem2->prev->next = elem2;
+ elem2->prev->next = elem2;
}
}
@@ -1087,10 +955,10 @@ ELEM_REPLACE(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)
elem2->prev = elem1->prev;
elem2->next = elem1->next;
if (elem1->prev) {
- elem1->prev->next = elem2;
+ elem1->prev->next = elem2;
}
if (elem1->next) {
- elem1->next->prev = elem2;
+ elem1->next->prev = elem2;
}
}
@@ -1099,7 +967,7 @@ ELEM_REMOVE(LINK_ELEMENT *elem)
{
elem->prev->next = elem->next;
if (elem->next) {
- elem->next->prev = elem->prev;
+ elem->next->prev = elem->prev;
}
}
@@ -1116,16 +984,29 @@ LAST_ELEMENT(LINK_ANCHOR *const anchor)
}
static LINK_ELEMENT *
+POP_ELEMENT(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor)
+{
+ LINK_ELEMENT *elem = anchor->last;
+ anchor->last = anchor->last->prev;
+ anchor->last->next = 0;
+ verify_list("pop", anchor);
+ return elem;
+}
+#if CPDEBUG < 0
+#define POP_ELEMENT(anchor) POP_ELEMENT(iseq, (anchor))
+#endif
+
+static LINK_ELEMENT *
ELEM_FIRST_INSN(LINK_ELEMENT *elem)
{
while (elem) {
- switch (elem->type) {
- case ISEQ_ELEMENT_INSN:
- case ISEQ_ELEMENT_ADJUST:
- return elem;
- default:
- elem = elem->next;
- }
+ switch (elem->type) {
+ case ISEQ_ELEMENT_INSN:
+ case ISEQ_ELEMENT_ADJUST:
+ return elem;
+ default:
+ elem = elem->next;
+ }
}
return NULL;
}
@@ -1135,11 +1016,11 @@ LIST_INSN_SIZE_ONE(const LINK_ANCHOR *const anchor)
{
LINK_ELEMENT *first_insn = ELEM_FIRST_INSN(FIRST_ELEMENT(anchor));
if (first_insn != NULL &&
- ELEM_FIRST_INSN(first_insn->next) == NULL) {
- return TRUE;
+ ELEM_FIRST_INSN(first_insn->next) == NULL) {
+ return TRUE;
}
else {
- return FALSE;
+ return FALSE;
}
}
@@ -1147,10 +1028,10 @@ static int
LIST_INSN_SIZE_ZERO(const LINK_ANCHOR *const anchor)
{
if (ELEM_FIRST_INSN(FIRST_ELEMENT(anchor)) == NULL) {
- return TRUE;
+ return TRUE;
}
else {
- return FALSE;
+ return FALSE;
}
}
@@ -1165,9 +1046,9 @@ static void
APPEND_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *const anc1, LINK_ANCHOR *const anc2)
{
if (anc2->anchor.next) {
- anc1->last->next = anc2->anchor.next;
- anc2->anchor.next->prev = anc1->last;
- anc1->last = anc2->last;
+ anc1->last->next = anc2->anchor.next;
+ anc2->anchor.next->prev = anc1->last;
+ anc1->last = anc2->last;
}
verify_list("append", anc1);
}
@@ -1175,40 +1056,68 @@ APPEND_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *const anc1, LINK_ANCHOR *const anc2)
#define APPEND_LIST(anc1, anc2) APPEND_LIST(iseq, (anc1), (anc2))
#endif
+/*
+ * anc1: e1, e2, e3
+ * anc2: e4, e5
+ *#=>
+ * anc1: e4, e5, e1, e2, e3
+ * anc2: e4, e5 (broken)
+ */
+static void
+INSERT_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *const anc1, LINK_ANCHOR *const anc2)
+{
+ if (anc2->anchor.next) {
+ LINK_ELEMENT *first = anc1->anchor.next;
+ anc1->anchor.next = anc2->anchor.next;
+ anc1->anchor.next->prev = &anc1->anchor;
+ anc2->last->next = first;
+ if (first) {
+ first->prev = anc2->last;
+ }
+ else {
+ anc1->last = anc2->last;
+ }
+ }
+
+ verify_list("append", anc1);
+}
+#if CPDEBUG < 0
+#define INSERT_LIST(anc1, anc2) INSERT_LIST(iseq, (anc1), (anc2))
+#endif
+
#if CPDEBUG && 0
static void
-debug_list(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor, LINK_ELEMENT *cur)
+debug_list(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor)
{
LINK_ELEMENT *list = FIRST_ELEMENT(anchor);
printf("----\n");
- printf("anch: %p, frst: %p, last: %p\n", (void *)&anchor->anchor,
- (void *)anchor->anchor.next, (void *)anchor->last);
+ printf("anch: %p, frst: %p, last: %p\n", &anchor->anchor,
+ anchor->anchor.next, anchor->last);
while (list) {
- printf("curr: %p, next: %p, prev: %p, type: %d\n", (void *)list, (void *)list->next,
- (void *)list->prev, (int)list->type);
- list = list->next;
+ printf("curr: %p, next: %p, prev: %p, type: %d\n", list, list->next,
+ list->prev, FIX2INT(list->type));
+ list = list->next;
}
printf("----\n");
- dump_disasm_list_with_cursor(anchor->anchor.next, cur, 0);
+ dump_disasm_list(anchor->anchor.next);
verify_list("debug list", anchor);
}
#if CPDEBUG < 0
-#define debug_list(anc, cur) debug_list(iseq, (anc), (cur))
+#define debug_list(anc) debug_list(iseq, (anc))
#endif
#else
-#define debug_list(anc, cur) ((void)0)
+#define debug_list(anc) ((void)0)
#endif
static TRACE *
-new_trace_body(rb_iseq_t *iseq, rb_event_flag_t event, long data)
+new_trace_body(rb_iseq_t *iseq, rb_event_flag_t event)
{
TRACE *trace = compile_data_alloc_trace(iseq);
trace->link.type = ISEQ_ELEMENT_TRACE;
trace->link.next = NULL;
trace->event = event;
- trace->data = data;
return trace;
}
@@ -1244,18 +1153,17 @@ new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line)
}
static INSN *
-new_insn_core(rb_iseq_t *iseq, const NODE *line_node,
- int insn_id, int argc, VALUE *argv)
+new_insn_core(rb_iseq_t *iseq, int line_no,
+ int insn_id, int argc, VALUE *argv)
{
INSN *iobj = compile_data_alloc_insn(iseq);
- /* printf("insn_id: %d, line: %d\n", insn_id, nd_line(line_node)); */
+ /* printf("insn_id: %d, line: %d\n", insn_id, line_no); */
iobj->link.type = ISEQ_ELEMENT_INSN;
iobj->link.next = 0;
iobj->insn_id = insn_id;
- iobj->insn_info.line_no = nd_line(line_node);
- iobj->insn_info.node_id = nd_node_id(line_node);
+ iobj->insn_info.line_no = line_no;
iobj->insn_info.events = 0;
iobj->operands = argv;
iobj->operand_size = argc;
@@ -1264,177 +1172,92 @@ new_insn_core(rb_iseq_t *iseq, const NODE *line_node,
}
static INSN *
-new_insn_body(rb_iseq_t *iseq, const NODE *const line_node, enum ruby_vminsn_type insn_id, int argc, ...)
+new_insn_body(rb_iseq_t *iseq, int line_no, enum ruby_vminsn_type insn_id, int argc, ...)
{
VALUE *operands = 0;
va_list argv;
if (argc > 0) {
- int i;
- va_start(argv, argc);
- operands = compile_data_alloc2(iseq, sizeof(VALUE), argc);
- for (i = 0; i < argc; i++) {
- VALUE v = va_arg(argv, VALUE);
- operands[i] = v;
- }
- va_end(argv);
+ int i;
+ va_init_list(argv, argc);
+ operands = (VALUE *)compile_data_alloc(iseq, sizeof(VALUE) * argc);
+ for (i = 0; i < argc; i++) {
+ VALUE v = va_arg(argv, VALUE);
+ operands[i] = v;
+ }
+ va_end(argv);
}
- return new_insn_core(iseq, line_node, insn_id, argc, operands);
+ return new_insn_core(iseq, line_no, insn_id, argc, operands);
}
-static const struct rb_callinfo *
-new_callinfo(rb_iseq_t *iseq, ID mid, int argc, unsigned int flag, struct rb_callinfo_kwarg *kw_arg, int has_blockiseq)
+static struct rb_call_info *
+new_callinfo(rb_iseq_t *iseq, ID mid, int argc, unsigned int flag, struct rb_call_info_kw_arg *kw_arg, int has_blockiseq)
{
- VM_ASSERT(argc >= 0);
+ size_t size = kw_arg != NULL ? sizeof(struct rb_call_info_with_kwarg) : sizeof(struct rb_call_info);
+ struct rb_call_info *ci = (struct rb_call_info *)compile_data_alloc(iseq, size);
+ struct rb_call_info_with_kwarg *ci_kw = (struct rb_call_info_with_kwarg *)ci;
- if (!(flag & (VM_CALL_ARGS_SPLAT | VM_CALL_ARGS_BLOCKARG | VM_CALL_KW_SPLAT)) &&
- kw_arg == NULL && !has_blockiseq) {
- flag |= VM_CALL_ARGS_SIMPLE;
- }
+ ci->mid = mid;
+ ci->flag = flag;
+ ci->orig_argc = argc;
if (kw_arg) {
- flag |= VM_CALL_KWARG;
- argc += kw_arg->keyword_len;
+ ci->flag |= VM_CALL_KWARG;
+ ci_kw->kw_arg = kw_arg;
+ ci->orig_argc += kw_arg->keyword_len;
+ iseq->body->ci_kw_size++;
+ }
+ else {
+ iseq->body->ci_size++;
}
- ISEQ_BODY(iseq)->ci_size++;
- const struct rb_callinfo *ci = vm_ci_new(mid, flag, argc, kw_arg);
- RB_OBJ_WRITTEN(iseq, Qundef, ci);
+ if (!(ci->flag & (VM_CALL_ARGS_SPLAT | VM_CALL_ARGS_BLOCKARG | VM_CALL_KW_SPLAT)) &&
+ kw_arg == NULL && !has_blockiseq) {
+ ci->flag |= VM_CALL_ARGS_SIMPLE;
+ }
return ci;
}
static INSN *
-new_insn_send(rb_iseq_t *iseq, const NODE *const line_node, ID id, VALUE argc, const rb_iseq_t *blockiseq, VALUE flag, struct rb_callinfo_kwarg *keywords)
+new_insn_send(rb_iseq_t *iseq, int line_no, ID id, VALUE argc, const rb_iseq_t *blockiseq, VALUE flag, struct rb_call_info_kw_arg *keywords)
{
- VALUE *operands = compile_data_calloc2(iseq, sizeof(VALUE), 2);
- VALUE ci = (VALUE)new_callinfo(iseq, id, FIX2INT(argc), FIX2INT(flag), keywords, blockiseq != NULL);
- operands[0] = ci;
- operands[1] = (VALUE)blockiseq;
- if (blockiseq) {
- RB_OBJ_WRITTEN(iseq, Qundef, blockiseq);
- }
- INSN *insn = new_insn_core(iseq, line_node, BIN(send), 2, operands);
- RB_OBJ_WRITTEN(iseq, Qundef, ci);
- RB_GC_GUARD(ci);
- return insn;
+ VALUE *operands = (VALUE *)compile_data_alloc(iseq, sizeof(VALUE) * 3);
+ operands[0] = (VALUE)new_callinfo(iseq, id, FIX2INT(argc), FIX2INT(flag), keywords, blockiseq != NULL);
+ operands[1] = Qfalse; /* cache */
+ operands[2] = (VALUE)blockiseq;
+ return new_insn_core(iseq, line_no, BIN(send), 3, operands);
}
static rb_iseq_t *
new_child_iseq(rb_iseq_t *iseq, const NODE *const node,
- VALUE name, const rb_iseq_t *parent, enum rb_iseq_type type, int line_no)
+ VALUE name, const rb_iseq_t *parent, enum iseq_type type, int line_no)
{
rb_iseq_t *ret_iseq;
- rb_ast_body_t ast;
-
- ast.root = node;
- ast.compile_option = 0;
- ast.script_lines = ISEQ_BODY(iseq)->variable.script_lines;
debugs("[new_child_iseq]> ---------------------------------------\n");
- int isolated_depth = ISEQ_COMPILE_DATA(iseq)->isolated_depth;
- ret_iseq = rb_iseq_new_with_opt(&ast, name,
- rb_iseq_path(iseq), rb_iseq_realpath(iseq),
- line_no, parent,
- isolated_depth ? isolated_depth + 1 : 0,
- type, ISEQ_COMPILE_DATA(iseq)->option);
+ ret_iseq = rb_iseq_new_with_opt(node, name,
+ rb_iseq_path(iseq), rb_iseq_realpath(iseq),
+ INT2FIX(line_no), parent, type, ISEQ_COMPILE_DATA(iseq)->option);
debugs("[new_child_iseq]< ---------------------------------------\n");
+ iseq_add_mark_object(iseq, (VALUE)ret_iseq);
return ret_iseq;
}
-static rb_iseq_t *
-new_child_iseq_with_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func *ifunc,
- VALUE name, const rb_iseq_t *parent, enum rb_iseq_type type, int line_no)
-{
- rb_iseq_t *ret_iseq;
-
- debugs("[new_child_iseq_with_callback]> ---------------------------------------\n");
- ret_iseq = rb_iseq_new_with_callback(ifunc, name,
- rb_iseq_path(iseq), rb_iseq_realpath(iseq),
- line_no, parent, type, ISEQ_COMPILE_DATA(iseq)->option);
- debugs("[new_child_iseq_with_callback]< ---------------------------------------\n");
- return ret_iseq;
-}
-
-static void
-set_catch_except_p(rb_iseq_t *iseq)
-{
- RUBY_ASSERT(ISEQ_COMPILE_DATA(iseq));
- ISEQ_COMPILE_DATA(iseq)->catch_except_p = true;
- if (ISEQ_BODY(iseq)->parent_iseq != NULL) {
- if (ISEQ_COMPILE_DATA(ISEQ_BODY(iseq)->parent_iseq)) {
- set_catch_except_p((rb_iseq_t *) ISEQ_BODY(iseq)->parent_iseq);
- }
- }
-}
-
-/* Set body->catch_except_p to true if the ISeq may catch an exception. If it is false,
- JIT-ed code may be optimized. If we are extremely conservative, we should set true
- if catch table exists. But we want to optimize while loop, which always has catch
- table entries for break/next/redo.
-
- So this function sets true for limited ISeqs with break/next/redo catch table entries
- whose child ISeq would really raise an exception. */
-static void
-update_catch_except_flags(rb_iseq_t *iseq, struct rb_iseq_constant_body *body)
-{
- unsigned int pos;
- size_t i;
- int insn;
- const struct iseq_catch_table *ct = body->catch_table;
-
- /* This assumes that a block has parent_iseq which may catch an exception from the block, and that
- BREAK/NEXT/REDO catch table entries are used only when `throw` insn is used in the block. */
- pos = 0;
- while (pos < body->iseq_size) {
- insn = rb_vm_insn_decode(body->iseq_encoded[pos]);
- if (insn == BIN(throw)) {
- set_catch_except_p(iseq);
- break;
- }
- pos += insn_len(insn);
- }
-
- if (ct == NULL)
- return;
-
- for (i = 0; i < ct->size; i++) {
- const struct iseq_catch_table_entry *entry =
- UNALIGNED_MEMBER_PTR(ct, entries[i]);
- if (entry->type != CATCH_TYPE_BREAK
- && entry->type != CATCH_TYPE_NEXT
- && entry->type != CATCH_TYPE_REDO) {
- RUBY_ASSERT(ISEQ_COMPILE_DATA(iseq));
- ISEQ_COMPILE_DATA(iseq)->catch_except_p = true;
- break;
- }
- }
-}
-
static void
iseq_insert_nop_between_end_and_cont(rb_iseq_t *iseq)
{
VALUE catch_table_ary = ISEQ_COMPILE_DATA(iseq)->catch_table_ary;
- if (NIL_P(catch_table_ary)) return;
unsigned int i, tlen = (unsigned int)RARRAY_LEN(catch_table_ary);
- const VALUE *tptr = RARRAY_CONST_PTR_TRANSIENT(catch_table_ary);
+ const VALUE *tptr = RARRAY_CONST_PTR(catch_table_ary);
for (i = 0; i < tlen; i++) {
- const VALUE *ptr = RARRAY_CONST_PTR_TRANSIENT(tptr[i]);
+ const VALUE *ptr = RARRAY_CONST_PTR(tptr[i]);
LINK_ELEMENT *end = (LINK_ELEMENT *)(ptr[2] & ~1);
LINK_ELEMENT *cont = (LINK_ELEMENT *)(ptr[4] & ~1);
LINK_ELEMENT *e;
-
- enum rb_catch_type ct = (enum rb_catch_type)(ptr[0] & 0xffff);
-
- if (ct != CATCH_TYPE_BREAK
- && ct != CATCH_TYPE_NEXT
- && ct != CATCH_TYPE_REDO) {
-
- for (e = end; e && (IS_LABEL(e) || IS_TRACE(e)); e = e->next) {
- if (e == cont) {
- NODE dummy_line_node = generate_dummy_line_node(0, -1);
- INSN *nop = new_insn_core(iseq, &dummy_line_node, BIN(nop), 0, 0);
- ELEM_INSERT_NEXT(end, &nop->link);
- break;
- }
+ for (e = end; e && (IS_LABEL(e) || IS_TRACE(e)); e = e->next) {
+ if (e == cont) {
+ INSN *nop = new_insn_core(iseq, 0, BIN(nop), 0, 0);
+ ELEM_INSERT_NEXT(end, &nop->link);
+ break;
}
}
}
@@ -1444,37 +1267,35 @@ static int
iseq_setup_insn(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
{
if (RTEST(ISEQ_COMPILE_DATA(iseq)->err_info))
- return COMPILE_NG;
+ return COMPILE_NG;
/* debugs("[compile step 2] (iseq_array_to_linkedlist)\n"); */
if (compile_debug > 5)
- dump_disasm_list(FIRST_ELEMENT(anchor));
+ dump_disasm_list(FIRST_ELEMENT(anchor));
debugs("[compile step 3.1 (iseq_optimize)]\n");
iseq_optimize(iseq, anchor);
if (compile_debug > 5)
- dump_disasm_list(FIRST_ELEMENT(anchor));
+ dump_disasm_list(FIRST_ELEMENT(anchor));
if (ISEQ_COMPILE_DATA(iseq)->option->instructions_unification) {
- debugs("[compile step 3.2 (iseq_insns_unification)]\n");
- iseq_insns_unification(iseq, anchor);
- if (compile_debug > 5)
- dump_disasm_list(FIRST_ELEMENT(anchor));
+ debugs("[compile step 3.2 (iseq_insns_unification)]\n");
+ iseq_insns_unification(iseq, anchor);
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
}
if (ISEQ_COMPILE_DATA(iseq)->option->stack_caching) {
- debugs("[compile step 3.3 (iseq_set_sequence_stackcaching)]\n");
- iseq_set_sequence_stackcaching(iseq, anchor);
- if (compile_debug > 5)
- dump_disasm_list(FIRST_ELEMENT(anchor));
+ debugs("[compile step 3.3 (iseq_set_sequence_stackcaching)]\n");
+ iseq_set_sequence_stackcaching(iseq, anchor);
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
}
debugs("[compile step 3.4 (iseq_insert_nop_between_end_and_cont)]\n");
iseq_insert_nop_between_end_and_cont(iseq);
- if (compile_debug > 5)
- dump_disasm_list(FIRST_ELEMENT(anchor));
return COMPILE_OK;
}
@@ -1483,12 +1304,12 @@ static int
iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
{
if (RTEST(ISEQ_COMPILE_DATA(iseq)->err_info))
- return COMPILE_NG;
+ return COMPILE_NG;
debugs("[compile step 4.1 (iseq_set_sequence)]\n");
if (!iseq_set_sequence(iseq, anchor)) return COMPILE_NG;
if (compile_debug > 5)
- dump_disasm_list(FIRST_ELEMENT(anchor));
+ dump_disasm_list(FIRST_ELEMENT(anchor));
debugs("[compile step 4.2 (iseq_set_exception_table)]\n");
if (!iseq_set_exception_table(iseq)) return COMPILE_NG;
@@ -1499,29 +1320,10 @@ iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
debugs("[compile step 5 (iseq_translate_threaded_code)] \n");
if (!rb_iseq_translate_threaded_code(iseq)) return COMPILE_NG;
- debugs("[compile step 6 (update_catch_except_flags)] \n");
- RUBY_ASSERT(ISEQ_COMPILE_DATA(iseq));
- update_catch_except_flags(iseq, ISEQ_BODY(iseq));
-
- debugs("[compile step 6.1 (remove unused catch tables)] \n");
- RUBY_ASSERT(ISEQ_COMPILE_DATA(iseq));
- if (!ISEQ_COMPILE_DATA(iseq)->catch_except_p && ISEQ_BODY(iseq)->catch_table) {
- xfree(ISEQ_BODY(iseq)->catch_table);
- ISEQ_BODY(iseq)->catch_table = NULL;
- }
-
-#if VM_INSN_INFO_TABLE_IMPL == 2
- if (ISEQ_BODY(iseq)->insns_info.succ_index_table == NULL) {
- debugs("[compile step 7 (rb_iseq_insns_info_encode_positions)] \n");
- rb_iseq_insns_info_encode_positions(iseq);
- }
-#endif
-
if (compile_debug > 1) {
- VALUE str = rb_iseq_disasm(iseq);
- printf("%s\n", StringValueCStr(str));
+ VALUE str = rb_iseq_disasm(iseq);
+ printf("%s\n", StringValueCStr(str));
}
- verify_call_cache(iseq);
debugs("[compile step: finish]\n");
return COMPILE_OK;
@@ -1530,8 +1332,16 @@ iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
static int
iseq_set_exception_local_table(rb_iseq_t *iseq)
{
- ISEQ_BODY(iseq)->local_table_size = numberof(rb_iseq_shared_exc_local_tbl);
- ISEQ_BODY(iseq)->local_table = rb_iseq_shared_exc_local_tbl;
+ /* TODO: every id table is same -> share it.
+ * Current problem is iseq_free().
+ */
+ ID id_dollar_bang;
+ ID *ids = (ID *)ALLOC_N(ID, 1);
+
+ CONST_ID(id_dollar_bang, "#$!");
+ iseq->body->local_table_size = 1;
+ ids[0] = id_dollar_bang;
+ iseq->body->local_table = ids;
return COMPILE_OK;
}
@@ -1539,9 +1349,9 @@ static int
get_lvar_level(const rb_iseq_t *iseq)
{
int lev = 0;
- while (iseq != ISEQ_BODY(iseq)->local_iseq) {
- lev++;
- iseq = ISEQ_BODY(iseq)->parent_iseq;
+ while (iseq != iseq->body->local_iseq) {
+ lev++;
+ iseq = iseq->body->parent_iseq;
}
return lev;
}
@@ -1551,10 +1361,10 @@ get_dyna_var_idx_at_raw(const rb_iseq_t *iseq, ID id)
{
unsigned int i;
- for (i = 0; i < ISEQ_BODY(iseq)->local_table_size; i++) {
- if (ISEQ_BODY(iseq)->local_table[i] == id) {
- return (int)i;
- }
+ for (i = 0; i < iseq->body->local_table_size; i++) {
+ if (iseq->body->local_table[i] == id) {
+ return (int)i;
+ }
}
return -1;
}
@@ -1562,11 +1372,10 @@ get_dyna_var_idx_at_raw(const rb_iseq_t *iseq, ID id)
static int
get_local_var_idx(const rb_iseq_t *iseq, ID id)
{
- int idx = get_dyna_var_idx_at_raw(ISEQ_BODY(iseq)->local_iseq, id);
+ int idx = get_dyna_var_idx_at_raw(iseq->body->local_iseq, id);
if (idx < 0) {
- COMPILE_ERROR(iseq, ISEQ_LAST_LINE(iseq),
- "get_local_var_idx: %d", idx);
+ rb_bug("get_local_var_idx: %d", idx);
}
return idx;
@@ -1576,130 +1385,62 @@ static int
get_dyna_var_idx(const rb_iseq_t *iseq, ID id, int *level, int *ls)
{
int lv = 0, idx = -1;
- const rb_iseq_t *const topmost_iseq = iseq;
while (iseq) {
- idx = get_dyna_var_idx_at_raw(iseq, id);
- if (idx >= 0) {
- break;
- }
- iseq = ISEQ_BODY(iseq)->parent_iseq;
- lv++;
+ idx = get_dyna_var_idx_at_raw(iseq, id);
+ if (idx >= 0) {
+ break;
+ }
+ iseq = iseq->body->parent_iseq;
+ lv++;
}
if (idx < 0) {
- COMPILE_ERROR(topmost_iseq, ISEQ_LAST_LINE(topmost_iseq),
- "get_dyna_var_idx: -1");
+ rb_bug("get_dyna_var_idx: -1");
}
*level = lv;
- *ls = ISEQ_BODY(iseq)->local_table_size;
+ *ls = iseq->body->local_table_size;
return idx;
}
static int
iseq_local_block_param_p(const rb_iseq_t *iseq, unsigned int idx, unsigned int level)
{
- const struct rb_iseq_constant_body *body;
while (level > 0) {
- iseq = ISEQ_BODY(iseq)->parent_iseq;
- level--;
- }
- body = ISEQ_BODY(iseq);
- if (body->local_iseq == iseq && /* local variables */
- body->param.flags.has_block &&
- body->local_table_size - body->param.block_start == idx) {
- return TRUE;
+ iseq = iseq->body->parent_iseq;
+ level--;
}
- else {
- return FALSE;
- }
-}
-
-static int
-iseq_block_param_id_p(const rb_iseq_t *iseq, ID id, int *pidx, int *plevel)
-{
- int level, ls;
- int idx = get_dyna_var_idx(iseq, id, &level, &ls);
- if (iseq_local_block_param_p(iseq, ls - idx, level)) {
- *pidx = ls - idx;
- *plevel = level;
- return TRUE;
+ if (iseq->body->local_iseq == iseq && /* local variables */
+ iseq->body->param.flags.has_block &&
+ iseq->body->local_table_size - iseq->body->param.block_start == idx) {
+ return TRUE;
}
else {
- return FALSE;
+ return FALSE;
}
}
static void
-access_outer_variables(const rb_iseq_t *iseq, int level, ID id, bool write)
-{
- int isolated_depth = ISEQ_COMPILE_DATA(iseq)->isolated_depth;
-
- if (isolated_depth && level >= isolated_depth) {
- if (id == rb_intern("yield")) {
- COMPILE_ERROR(iseq, ISEQ_LAST_LINE(iseq), "can not yield from isolated Proc");
- }
- else {
- COMPILE_ERROR(iseq, ISEQ_LAST_LINE(iseq), "can not access variable `%s' from isolated Proc", rb_id2name(id));
- }
- }
-
- for (int i=0; i<level; i++) {
- VALUE val;
- struct rb_id_table *ovs = ISEQ_BODY(iseq)->outer_variables;
-
- if (!ovs) {
- ovs = ISEQ_BODY(iseq)->outer_variables = rb_id_table_create(8);
- }
-
- if (rb_id_table_lookup(ISEQ_BODY(iseq)->outer_variables, id, &val)) {
- if (write && !val) {
- rb_id_table_insert(ISEQ_BODY(iseq)->outer_variables, id, Qtrue);
- }
- }
- else {
- rb_id_table_insert(ISEQ_BODY(iseq)->outer_variables, id, RBOOL(write));
- }
-
- iseq = ISEQ_BODY(iseq)->parent_iseq;
- }
-}
-
-static ID
-iseq_lvar_id(const rb_iseq_t *iseq, int idx, int level)
-{
- for (int i=0; i<level; i++) {
- iseq = ISEQ_BODY(iseq)->parent_iseq;
- }
-
- ID id = ISEQ_BODY(iseq)->local_table[ISEQ_BODY(iseq)->local_table_size - idx];
- // fprintf(stderr, "idx:%d level:%d ID:%s\n", idx, level, rb_id2name(id));
- return id;
-}
-
-static void
-iseq_add_getlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *const line_node, int idx, int level)
+iseq_add_getlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, int line, int idx, int level)
{
if (iseq_local_block_param_p(iseq, idx, level)) {
- ADD_INSN2(seq, line_node, getblockparam, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
+ ADD_INSN2(seq, line, getblockparam, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
}
else {
- ADD_INSN2(seq, line_node, getlocal, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
+ ADD_INSN2(seq, line, getlocal, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
}
- if (level > 0) access_outer_variables(iseq, level, iseq_lvar_id(iseq, idx, level), Qfalse);
}
static void
-iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *const line_node, int idx, int level)
+iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, int line, int idx, int level)
{
if (iseq_local_block_param_p(iseq, idx, level)) {
- ADD_INSN2(seq, line_node, setblockparam, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
+ ADD_INSN2(seq, line, setblockparam, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
}
else {
- ADD_INSN2(seq, line_node, setlocal, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
+ ADD_INSN2(seq, line, setlocal, INT2FIX((idx) + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
}
- if (level > 0) access_outer_variables(iseq, level, iseq_lvar_id(iseq, idx, level), Qtrue);
}
@@ -1707,120 +1448,109 @@ iseq_add_setlocal(rb_iseq_t *iseq, LINK_ANCHOR *const seq, const NODE *const lin
static void
iseq_calc_param_size(rb_iseq_t *iseq)
{
- struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
- if (body->param.flags.has_opt ||
- body->param.flags.has_post ||
- body->param.flags.has_rest ||
- body->param.flags.has_block ||
- body->param.flags.has_kw ||
- body->param.flags.has_kwrest) {
-
- if (body->param.flags.has_block) {
- body->param.size = body->param.block_start + 1;
- }
- else if (body->param.flags.has_kwrest) {
- body->param.size = body->param.keyword->rest_start + 1;
- }
- else if (body->param.flags.has_kw) {
- body->param.size = body->param.keyword->bits_start + 1;
- }
- else if (body->param.flags.has_post) {
- body->param.size = body->param.post_start + body->param.post_num;
- }
- else if (body->param.flags.has_rest) {
- body->param.size = body->param.rest_start + 1;
- }
- else if (body->param.flags.has_opt) {
- body->param.size = body->param.lead_num + body->param.opt_num;
- }
- else {
- UNREACHABLE;
- }
+ if (iseq->body->param.flags.has_opt ||
+ iseq->body->param.flags.has_post ||
+ iseq->body->param.flags.has_rest ||
+ iseq->body->param.flags.has_block ||
+ iseq->body->param.flags.has_kw ||
+ iseq->body->param.flags.has_kwrest) {
+
+ if (iseq->body->param.flags.has_block) {
+ iseq->body->param.size = iseq->body->param.block_start + 1;
+ }
+ else if (iseq->body->param.flags.has_kwrest) {
+ iseq->body->param.size = iseq->body->param.keyword->rest_start + 1;
+ }
+ else if (iseq->body->param.flags.has_kw) {
+ iseq->body->param.size = iseq->body->param.keyword->bits_start + 1;
+ }
+ else if (iseq->body->param.flags.has_post) {
+ iseq->body->param.size = iseq->body->param.post_start + iseq->body->param.post_num;
+ }
+ else if (iseq->body->param.flags.has_rest) {
+ iseq->body->param.size = iseq->body->param.rest_start + 1;
+ }
+ else if (iseq->body->param.flags.has_opt) {
+ iseq->body->param.size = iseq->body->param.lead_num + iseq->body->param.opt_num;
+ }
+ else {
+ rb_bug("unreachable");
+ }
}
else {
- body->param.size = body->param.lead_num;
+ iseq->body->param.size = iseq->body->param.lead_num;
}
}
-static int
+static void
iseq_set_arguments_keywords(rb_iseq_t *iseq, LINK_ANCHOR *const optargs,
- const struct rb_args_info *args, int arg_size)
+ const struct rb_args_info *args)
{
const NODE *node = args->kw_args;
- struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
struct rb_iseq_param_keyword *keyword;
- const VALUE default_values = rb_ary_hidden_new(1);
+ const VALUE default_values = rb_ary_tmp_new(1);
const VALUE complex_mark = rb_str_tmp_new(0);
int kw = 0, rkw = 0, di = 0, i;
- body->param.flags.has_kw = TRUE;
- body->param.keyword = keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);
+ iseq->body->param.flags.has_kw = TRUE;
+ iseq->body->param.keyword = keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);
+ keyword->bits_start = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_cflag);
while (node) {
- kw++;
- node = node->nd_next;
- }
- arg_size += kw;
- keyword->bits_start = arg_size++;
-
- node = args->kw_args;
- while (node) {
- const NODE *val_node = node->nd_body->nd_value;
- VALUE dv;
-
- if (val_node == NODE_SPECIAL_REQUIRED_KEYWORD) {
- ++rkw;
- }
- else {
- switch (nd_type(val_node)) {
- case NODE_LIT:
- dv = val_node->nd_lit;
- break;
- case NODE_NIL:
- dv = Qnil;
- break;
- case NODE_TRUE:
- dv = Qtrue;
- break;
- case NODE_FALSE:
- dv = Qfalse;
- break;
- default:
- NO_CHECK(COMPILE_POPPED(optargs, "kwarg", node)); /* nd_type_p(node, NODE_KW_ARG) */
- dv = complex_mark;
- }
-
- keyword->num = ++di;
- rb_ary_push(default_values, dv);
- }
-
- node = node->nd_next;
+ const NODE *val_node = node->nd_body->nd_value;
+ VALUE dv;
+
+ if (val_node == (const NODE *)-1) {
+ ++rkw;
+ }
+ else {
+ switch (nd_type(val_node)) {
+ case NODE_LIT:
+ dv = val_node->nd_lit;
+ iseq_add_mark_object(iseq, dv);
+ break;
+ case NODE_NIL:
+ dv = Qnil;
+ break;
+ case NODE_TRUE:
+ dv = Qtrue;
+ break;
+ case NODE_FALSE:
+ dv = Qfalse;
+ break;
+ default:
+ COMPILE_POPPED(optargs, "kwarg", node); /* nd_type(node) == NODE_KW_ARG */
+ dv = complex_mark;
+ }
+
+ keyword->num = ++di;
+ rb_ary_push(default_values, dv);
+ }
+
+ kw++;
+ node = node->nd_next;
}
keyword->num = kw;
if (args->kw_rest_arg->nd_vid != 0) {
- keyword->rest_start = arg_size++;
- body->param.flags.has_kwrest = TRUE;
+ keyword->rest_start = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_vid);
+ iseq->body->param.flags.has_kwrest = TRUE;
}
keyword->required_num = rkw;
- keyword->table = &body->local_table[keyword->bits_start - keyword->num];
+ keyword->table = &iseq->body->local_table[keyword->bits_start - keyword->num];
{
- VALUE *dvs = ALLOC_N(VALUE, RARRAY_LEN(default_values));
+ VALUE *dvs = ALLOC_N(VALUE, RARRAY_LEN(default_values));
- for (i = 0; i < RARRAY_LEN(default_values); i++) {
- VALUE dv = RARRAY_AREF(default_values, i);
- if (dv == complex_mark) dv = Qundef;
- if (!SPECIAL_CONST_P(dv)) {
- RB_OBJ_WRITTEN(iseq, Qundef, dv);
- }
- dvs[i] = dv;
- }
+ for (i = 0; i < RARRAY_LEN(default_values); i++) {
+ VALUE dv = RARRAY_AREF(default_values, i);
+ if (dv == complex_mark) dv = Qundef;
+ dvs[i] = dv;
+ }
- keyword->default_values = dvs;
+ keyword->default_values = dvs;
}
- return arg_size;
}
static int
@@ -1829,220 +1559,170 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *const optargs, const NODE *cons
debugs("iseq_set_arguments: %s\n", node_args ? "" : "0");
if (node_args) {
- struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
- struct rb_args_info *args = node_args->nd_ainfo;
- ID rest_id = 0;
- int last_comma = 0;
- ID block_id = 0;
- int arg_size;
-
- EXPECT_NODE("iseq_set_arguments", node_args, NODE_ARGS, COMPILE_NG);
-
- body->param.flags.ruby2_keywords = args->ruby2_keywords;
- body->param.lead_num = arg_size = (int)args->pre_args_num;
- if (body->param.lead_num > 0) body->param.flags.has_lead = TRUE;
- debugs(" - argc: %d\n", body->param.lead_num);
-
- rest_id = args->rest_arg;
- if (rest_id == NODE_SPECIAL_EXCESSIVE_COMMA) {
- last_comma = 1;
- rest_id = 0;
- }
- block_id = args->block_arg;
-
- if (args->opt_args) {
- const NODE *node = args->opt_args;
- LABEL *label;
- VALUE labels = rb_ary_hidden_new(1);
- VALUE *opt_table;
- int i = 0, j;
-
- while (node) {
- label = NEW_LABEL(nd_line(node));
- rb_ary_push(labels, (VALUE)label | 1);
- ADD_LABEL(optargs, label);
- NO_CHECK(COMPILE_POPPED(optargs, "optarg", node->nd_body));
- node = node->nd_next;
- i += 1;
- }
-
- /* last label */
- label = NEW_LABEL(nd_line(node_args));
- rb_ary_push(labels, (VALUE)label | 1);
- ADD_LABEL(optargs, label);
-
- opt_table = ALLOC_N(VALUE, i+1);
-
- MEMCPY(opt_table, RARRAY_CONST_PTR_TRANSIENT(labels), VALUE, i+1);
- for (j = 0; j < i+1; j++) {
- opt_table[j] &= ~1;
- }
- rb_ary_clear(labels);
-
- body->param.flags.has_opt = TRUE;
- body->param.opt_num = i;
- body->param.opt_table = opt_table;
- arg_size += i;
- }
-
- if (rest_id) {
- body->param.rest_start = arg_size++;
- body->param.flags.has_rest = TRUE;
- assert(body->param.rest_start != -1);
- }
-
- if (args->first_post_arg) {
- body->param.post_start = arg_size;
- body->param.post_num = args->post_args_num;
- body->param.flags.has_post = TRUE;
- arg_size += args->post_args_num;
-
- if (body->param.flags.has_rest) { /* TODO: why that? */
- body->param.post_start = body->param.rest_start + 1;
- }
- }
-
- if (args->kw_args) {
- arg_size = iseq_set_arguments_keywords(iseq, optargs, args, arg_size);
- }
- else if (args->kw_rest_arg) {
- struct rb_iseq_param_keyword *keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);
- keyword->rest_start = arg_size++;
- body->param.keyword = keyword;
- body->param.flags.has_kwrest = TRUE;
- }
- else if (args->no_kwarg) {
- body->param.flags.accepts_no_kwarg = TRUE;
- }
-
- if (block_id) {
- body->param.block_start = arg_size++;
- body->param.flags.has_block = TRUE;
- }
-
- iseq_calc_param_size(iseq);
- body->param.size = arg_size;
-
- if (args->pre_init) { /* m_init */
- NO_CHECK(COMPILE_POPPED(optargs, "init arguments (m)", args->pre_init));
- }
- if (args->post_init) { /* p_init */
- NO_CHECK(COMPILE_POPPED(optargs, "init arguments (p)", args->post_init));
- }
-
- if (body->type == ISEQ_TYPE_BLOCK) {
- if (body->param.flags.has_opt == FALSE &&
- body->param.flags.has_post == FALSE &&
- body->param.flags.has_rest == FALSE &&
- body->param.flags.has_kw == FALSE &&
- body->param.flags.has_kwrest == FALSE) {
-
- if (body->param.lead_num == 1 && last_comma == 0) {
- /* {|a|} */
- body->param.flags.ambiguous_param0 = TRUE;
- }
- }
- }
+ struct rb_args_info *args = node_args->nd_ainfo;
+ ID rest_id = 0;
+ int last_comma = 0;
+ ID block_id = 0;
+
+ EXPECT_NODE("iseq_set_arguments", node_args, NODE_ARGS, COMPILE_NG);
+
+ iseq->body->param.lead_num = (int)args->pre_args_num;
+ if (iseq->body->param.lead_num > 0) iseq->body->param.flags.has_lead = TRUE;
+ debugs(" - argc: %d\n", iseq->body->param.lead_num);
+
+ rest_id = args->rest_arg;
+ if (rest_id == 1) {
+ last_comma = 1;
+ rest_id = 0;
+ }
+ block_id = args->block_arg;
+
+ if (args->first_post_arg) {
+ iseq->body->param.post_start = get_dyna_var_idx_at_raw(iseq, args->first_post_arg);
+ iseq->body->param.post_num = args->post_args_num;
+ iseq->body->param.flags.has_post = TRUE;
+ }
+
+ if (args->opt_args) {
+ const NODE *node = args->opt_args;
+ LABEL *label;
+ VALUE labels = rb_ary_tmp_new(1);
+ VALUE *opt_table;
+ int i = 0, j;
+
+ while (node) {
+ label = NEW_LABEL(nd_line(node));
+ rb_ary_push(labels, (VALUE)label | 1);
+ ADD_LABEL(optargs, label);
+ COMPILE_POPPED(optargs, "optarg", node->nd_body);
+ node = node->nd_next;
+ i += 1;
+ }
+
+ /* last label */
+ label = NEW_LABEL(nd_line(node_args));
+ rb_ary_push(labels, (VALUE)label | 1);
+ ADD_LABEL(optargs, label);
+
+ opt_table = ALLOC_N(VALUE, i+1);
+
+ MEMCPY(opt_table, RARRAY_CONST_PTR(labels), VALUE, i+1);
+ for (j = 0; j < i+1; j++) {
+ opt_table[j] &= ~1;
+ }
+ rb_ary_clear(labels);
+
+ iseq->body->param.flags.has_opt = TRUE;
+ iseq->body->param.opt_num = i;
+ iseq->body->param.opt_table = opt_table;
+ }
+
+ if (args->kw_args) {
+ iseq_set_arguments_keywords(iseq, optargs, args);
+ }
+ else if (args->kw_rest_arg) {
+ struct rb_iseq_param_keyword *keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);
+ keyword->rest_start = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_vid);
+ iseq->body->param.keyword = keyword;
+ iseq->body->param.flags.has_kwrest = TRUE;
+ }
+
+ if (args->pre_init) { /* m_init */
+ COMPILE_POPPED(optargs, "init arguments (m)", args->pre_init);
+ }
+ if (args->post_init) { /* p_init */
+ COMPILE_POPPED(optargs, "init arguments (p)", args->post_init);
+ }
+
+ if (rest_id) {
+ iseq->body->param.rest_start = get_dyna_var_idx_at_raw(iseq, rest_id);
+ iseq->body->param.flags.has_rest = TRUE;
+ assert(iseq->body->param.rest_start != -1);
+
+ if (iseq->body->param.post_start == 0) { /* TODO: why that? */
+ iseq->body->param.post_start = iseq->body->param.rest_start + 1;
+ }
+ }
+
+ if (block_id) {
+ iseq->body->param.block_start = get_dyna_var_idx_at_raw(iseq, block_id);
+ iseq->body->param.flags.has_block = TRUE;
+ }
+
+ iseq_calc_param_size(iseq);
+
+ if (iseq->body->type == ISEQ_TYPE_BLOCK) {
+ if (iseq->body->param.flags.has_opt == FALSE &&
+ iseq->body->param.flags.has_post == FALSE &&
+ iseq->body->param.flags.has_rest == FALSE &&
+ iseq->body->param.flags.has_kw == FALSE &&
+ iseq->body->param.flags.has_kwrest == FALSE) {
+
+ if (iseq->body->param.lead_num == 1 && last_comma == 0) {
+ /* {|a|} */
+ iseq->body->param.flags.ambiguous_param0 = TRUE;
+ }
+ }
+ }
}
return COMPILE_OK;
}
static int
-iseq_set_local_table(rb_iseq_t *iseq, const rb_ast_id_table_t *tbl)
+iseq_set_local_table(rb_iseq_t *iseq, const ID *tbl)
{
- unsigned int size = tbl ? tbl->size : 0;
+ unsigned int size;
+
+ if (tbl) {
+ size = (unsigned int)*tbl;
+ tbl++;
+ }
+ else {
+ size = 0;
+ }
if (size > 0) {
- ID *ids = (ID *)ALLOC_N(ID, size);
- MEMCPY(ids, tbl->ids, ID, size);
- ISEQ_BODY(iseq)->local_table = ids;
+ ID *ids = (ID *)ALLOC_N(ID, size);
+ MEMCPY(ids, tbl, ID, size);
+ iseq->body->local_table = ids;
}
- ISEQ_BODY(iseq)->local_table_size = size;
+ iseq->body->local_table_size = size;
- debugs("iseq_set_local_table: %u\n", ISEQ_BODY(iseq)->local_table_size);
+ debugs("iseq_set_local_table: %u\n", iseq->body->local_table_size);
return COMPILE_OK;
}
-int
-rb_iseq_cdhash_cmp(VALUE val, VALUE lit)
+static int
+cdhash_cmp(VALUE val, VALUE lit)
{
- int tval, tlit;
-
- if (val == lit) {
- return 0;
- }
- else if ((tlit = OBJ_BUILTIN_TYPE(lit)) == -1) {
- return val != lit;
- }
- else if ((tval = OBJ_BUILTIN_TYPE(val)) == -1) {
- return -1;
+ if (val == lit) return 0;
+ if (SPECIAL_CONST_P(lit)) {
+ return val != lit;
}
- else if (tlit != tval) {
- return -1;
+ if (SPECIAL_CONST_P(val) || BUILTIN_TYPE(val) != BUILTIN_TYPE(lit)) {
+ return -1;
}
- else if (tlit == T_SYMBOL) {
- return val != lit;
+ if (BUILTIN_TYPE(lit) == T_STRING) {
+ return rb_str_hash_cmp(lit, val);
}
- else if (tlit == T_STRING) {
- return rb_str_hash_cmp(lit, val);
- }
- else if (tlit == T_BIGNUM) {
- long x = FIX2LONG(rb_big_cmp(lit, val));
+ return !rb_eql(lit, val);
+}
- /* Given lit and val are both Bignum, x must be -1, 0, 1.
- * There is no need to call rb_fix2int here. */
- RUBY_ASSERT((x == 1) || (x == 0) || (x == -1));
- return (int)x;
- }
- else if (tlit == T_FLOAT) {
- return rb_float_cmp(lit, val);
- }
- else if (tlit == T_RATIONAL) {
- const struct RRational *rat1 = RRATIONAL(val);
- const struct RRational *rat2 = RRATIONAL(lit);
- return rb_iseq_cdhash_cmp(rat1->num, rat2->num) || rb_iseq_cdhash_cmp(rat1->den, rat2->den);
- }
- else if (tlit == T_COMPLEX) {
- const struct RComplex *comp1 = RCOMPLEX(val);
- const struct RComplex *comp2 = RCOMPLEX(lit);
- return rb_iseq_cdhash_cmp(comp1->real, comp2->real) || rb_iseq_cdhash_cmp(comp1->imag, comp2->imag);
- }
- else if (tlit == T_REGEXP) {
- return rb_reg_equal(val, lit) ? 0 : -1;
- }
- else {
- UNREACHABLE_RETURN(-1);
- }
-}
-
-st_index_t
-rb_iseq_cdhash_hash(VALUE a)
-{
- switch (OBJ_BUILTIN_TYPE(a)) {
- case -1:
- case T_SYMBOL:
- return (st_index_t)a;
- case T_STRING:
- return rb_str_hash(a);
- case T_BIGNUM:
- return FIX2LONG(rb_big_hash(a));
- case T_FLOAT:
- return rb_dbl_long_hash(RFLOAT_VALUE(a));
- case T_RATIONAL:
- return rb_rational_hash(a);
- case T_COMPLEX:
- return rb_complex_hash(a);
- case T_REGEXP:
- return NUM2LONG(rb_reg_hash(a));
- default:
- UNREACHABLE_RETURN(0);
+static st_index_t
+cdhash_hash(VALUE a)
+{
+ if (SPECIAL_CONST_P(a)) return (st_index_t)a;
+ if (RB_TYPE_P(a, T_STRING)) return rb_str_hash(a);
+ {
+ VALUE hval = rb_hash(a);
+ return (st_index_t)FIX2LONG(hval);
}
}
static const struct st_hash_type cdhash_type = {
- rb_iseq_cdhash_cmp,
- rb_iseq_cdhash_hash,
+ cdhash_cmp,
+ cdhash_hash,
};
struct cdhash_set_label_struct {
@@ -2052,7 +1732,7 @@ struct cdhash_set_label_struct {
};
static int
-cdhash_set_label_i(VALUE key, VALUE val, VALUE ptr)
+cdhash_set_label_i(VALUE key, VALUE val, void *ptr)
{
struct cdhash_set_label_struct *data = (struct cdhash_set_label_struct *)ptr;
LABEL *lobj = (LABEL *)(val & ~1);
@@ -2064,30 +1744,24 @@ cdhash_set_label_i(VALUE key, VALUE val, VALUE ptr)
static inline VALUE
get_ivar_ic_value(rb_iseq_t *iseq,ID id)
{
- return INT2FIX(ISEQ_BODY(iseq)->ivc_size++);
-}
-
-static inline VALUE
-get_cvar_ic_value(rb_iseq_t *iseq,ID id)
-{
VALUE val;
struct rb_id_table *tbl = ISEQ_COMPILE_DATA(iseq)->ivar_cache_table;
if (tbl) {
- if (rb_id_table_lookup(tbl,id,&val)) {
- return val;
- }
+ if (rb_id_table_lookup(tbl,id,&val)) {
+ return val;
+ }
}
else {
- tbl = rb_id_table_create(1);
- ISEQ_COMPILE_DATA(iseq)->ivar_cache_table = tbl;
+ tbl = rb_id_table_create(1);
+ ISEQ_COMPILE_DATA(iseq)->ivar_cache_table = tbl;
}
- val = INT2FIX(ISEQ_BODY(iseq)->icvarc_size++);
+ val = INT2FIX(iseq->body->is_size++);
rb_id_table_insert(tbl,id,val);
return val;
}
#define BADINSN_DUMP(anchor, list, dest) \
- dump_disasm_list_with_cursor(FIRST_ELEMENT(anchor), list, dest)
+ dump_disasm_list_with_cursor(&anchor->anchor, list, dest)
#define BADINSN_ERROR \
(xfree(generated_iseq), \
@@ -2102,170 +1776,140 @@ fix_sp_depth(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
LINK_ELEMENT *list;
for (list = FIRST_ELEMENT(anchor); list; list = list->next) {
- if (IS_LABEL(list)) {
- LABEL *lobj = (LABEL *)list;
- lobj->set = TRUE;
- }
+ if (list->type == ISEQ_ELEMENT_LABEL) {
+ LABEL *lobj = (LABEL *)list;
+ lobj->set = TRUE;
+ }
}
for (list = FIRST_ELEMENT(anchor); list; list = list->next) {
- switch (list->type) {
- case ISEQ_ELEMENT_INSN:
- {
- int j, len, insn;
- const char *types;
- VALUE *operands;
- INSN *iobj = (INSN *)list;
-
- /* update sp */
- sp = calc_sp_depth(sp, iobj);
- if (sp < 0) {
- BADINSN_DUMP(anchor, list, NULL);
- COMPILE_ERROR(iseq, iobj->insn_info.line_no,
- "argument stack underflow (%d)", sp);
- return -1;
- }
- if (sp > stack_max) {
- stack_max = sp;
- }
-
- line = iobj->insn_info.line_no;
- /* fprintf(stderr, "insn: %-16s, sp: %d\n", insn_name(iobj->insn_id), sp); */
- operands = iobj->operands;
- insn = iobj->insn_id;
- types = insn_op_types(insn);
- len = insn_len(insn);
-
- /* operand check */
- if (iobj->operand_size != len - 1) {
- /* printf("operand size miss! (%d, %d)\n", iobj->operand_size, len); */
- BADINSN_DUMP(anchor, list, NULL);
- COMPILE_ERROR(iseq, iobj->insn_info.line_no,
- "operand size miss! (%d for %d)",
- iobj->operand_size, len - 1);
- return -1;
- }
-
- for (j = 0; types[j]; j++) {
- if (types[j] == TS_OFFSET) {
- /* label(destination position) */
- LABEL *lobj = (LABEL *)operands[j];
- if (!lobj->set) {
- BADINSN_DUMP(anchor, list, NULL);
- COMPILE_ERROR(iseq, iobj->insn_info.line_no,
- "unknown label: "LABEL_FORMAT, lobj->label_no);
- return -1;
- }
- if (lobj->sp == -1) {
- lobj->sp = sp;
- }
- else if (lobj->sp != sp) {
- debugs("%s:%d: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
- RSTRING_PTR(rb_iseq_path(iseq)), line,
- lobj->label_no, lobj->sp, sp);
- }
- }
- }
- break;
- }
- case ISEQ_ELEMENT_LABEL:
- {
- LABEL *lobj = (LABEL *)list;
- if (lobj->sp == -1) {
- lobj->sp = sp;
- }
- else {
- if (lobj->sp != sp) {
- debugs("%s:%d: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
- RSTRING_PTR(rb_iseq_path(iseq)), line,
- lobj->label_no, lobj->sp, sp);
- }
- sp = lobj->sp;
- }
- break;
- }
- case ISEQ_ELEMENT_TRACE:
- {
- /* ignore */
- break;
- }
- case ISEQ_ELEMENT_ADJUST:
- {
- ADJUST *adjust = (ADJUST *)list;
- int orig_sp = sp;
-
- sp = adjust->label ? adjust->label->sp : 0;
- if (adjust->line_no != -1 && orig_sp - sp < 0) {
- BADINSN_DUMP(anchor, list, NULL);
- COMPILE_ERROR(iseq, adjust->line_no,
- "iseq_set_sequence: adjust bug %d < %d",
- orig_sp, sp);
- return -1;
- }
- break;
- }
- default:
- BADINSN_DUMP(anchor, list, NULL);
- COMPILE_ERROR(iseq, line, "unknown list type: %d", list->type);
- return -1;
- }
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ int j, len, insn;
+ const char *types;
+ VALUE *operands;
+ INSN *iobj = (INSN *)list;
+
+ /* update sp */
+ sp = calc_sp_depth(sp, iobj);
+ if (sp < 0) {
+ BADINSN_DUMP(anchor, list, NULL);
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "argument stack underflow (%d)", sp);
+ return -1;
+ }
+ if (sp > stack_max) {
+ stack_max = sp;
+ }
+
+ line = iobj->insn_info.line_no;
+ /* fprintf(stderr, "insn: %-16s, sp: %d\n", insn_name(iobj->insn_id), sp); */
+ operands = iobj->operands;
+ insn = iobj->insn_id;
+ types = insn_op_types(insn);
+ len = insn_len(insn);
+
+ /* operand check */
+ if (iobj->operand_size != len - 1) {
+ /* printf("operand size miss! (%d, %d)\n", iobj->operand_size, len); */
+ BADINSN_DUMP(anchor, list, NULL);
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "operand size miss! (%d for %d)",
+ iobj->operand_size, len - 1);
+ return -1;
+ }
+
+ for (j = 0; types[j]; j++) {
+ if (types[j] == TS_OFFSET) {
+ /* label(destination position) */
+ LABEL *lobj = (LABEL *)operands[j];
+ if (!lobj->set) {
+ BADINSN_DUMP(anchor, list, NULL);
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "unknown label: "LABEL_FORMAT, lobj->label_no);
+ return -1;
+ }
+ if (lobj->sp == -1) {
+ lobj->sp = sp;
+ }
+ }
+ }
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ LABEL *lobj = (LABEL *)list;
+ if (lobj->sp == -1) {
+ lobj->sp = sp;
+ }
+ else {
+ sp = lobj->sp;
+ }
+ break;
+ }
+ case ISEQ_ELEMENT_TRACE:
+ {
+ /* ignore */
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)list;
+ int orig_sp = sp;
+
+ sp = adjust->label ? adjust->label->sp : 0;
+ if (adjust->line_no != -1 && orig_sp - sp < 0) {
+ BADINSN_DUMP(anchor, list, NULL);
+ COMPILE_ERROR(iseq, adjust->line_no,
+ "iseq_set_sequence: adjust bug %d < %d",
+ orig_sp, sp);
+ return -1;
+ }
+ break;
+ }
+ default:
+ BADINSN_DUMP(anchor, list, NULL);
+ COMPILE_ERROR(iseq, line, "unknown list type: %d", list->type);
+ return -1;
+ }
}
return stack_max;
}
static int
-add_insn_info(struct iseq_insn_info_entry *insns_info, unsigned int *positions,
- int insns_info_index, int code_index, const INSN *iobj)
-{
- if (insns_info_index == 0 ||
- insns_info[insns_info_index-1].line_no != iobj->insn_info.line_no ||
-#ifdef USE_ISEQ_NODE_ID
- insns_info[insns_info_index-1].node_id != iobj->insn_info.node_id ||
-#endif
- insns_info[insns_info_index-1].events != iobj->insn_info.events) {
- insns_info[insns_info_index].line_no = iobj->insn_info.line_no;
-#ifdef USE_ISEQ_NODE_ID
- insns_info[insns_info_index].node_id = iobj->insn_info.node_id;
-#endif
- insns_info[insns_info_index].events = iobj->insn_info.events;
- positions[insns_info_index] = code_index;
- return TRUE;
+add_insn_info(struct iseq_insn_info_entry *insns_info, int insns_info_index, int code_index, LINK_ELEMENT *list)
+{
+ if (list->type == ISEQ_ELEMENT_INSN) {
+ INSN *iobj = (INSN *)list;
+ if (insns_info_index == 0 ||
+ insns_info[insns_info_index-1].line_no != iobj->insn_info.line_no ||
+ insns_info[insns_info_index-1].events != iobj->insn_info.events) {
+ insns_info[insns_info_index].position = code_index;
+ insns_info[insns_info_index].line_no = iobj->insn_info.line_no;
+ insns_info[insns_info_index].events = iobj->insn_info.events;
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else if (list->type == ISEQ_ELEMENT_ADJUST) {
+ ADJUST *adjust = (ADJUST *)list;
+ if (insns_info_index > 0 ||
+ insns_info[insns_info_index-1].line_no != adjust->line_no) {
+ insns_info[insns_info_index].position = code_index;
+ insns_info[insns_info_index].line_no = adjust->line_no;
+ insns_info[insns_info_index].events = 0;
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
}
- return FALSE;
-}
-
-static int
-add_adjust_info(struct iseq_insn_info_entry *insns_info, unsigned int *positions,
- int insns_info_index, int code_index, const ADJUST *adjust)
-{
- insns_info[insns_info_index].line_no = adjust->line_no;
- insns_info[insns_info_index].events = 0;
- positions[insns_info_index] = code_index;
- return TRUE;
-}
-
-static ID *
-array_to_idlist(VALUE arr)
-{
- RUBY_ASSERT(RB_TYPE_P(arr, T_ARRAY));
- long size = RARRAY_LEN(arr);
- ID *ids = (ID *)ALLOC_N(ID, size + 1);
- for (int i = 0; i < size; i++) {
- VALUE sym = RARRAY_AREF(arr, i);
- ids[i] = SYM2ID(sym);
- }
- ids[size] = 0;
- return ids;
-}
-
-static VALUE
-idlist_to_array(const ID *ids)
-{
- VALUE arr = rb_ary_new();
- while (*ids) {
- rb_ary_push(arr, ID2SYM(*ids++));
+ else {
+ VM_UNREACHABLE(add_insn_info);
}
- return arr;
}
/**
@@ -2275,12 +1919,9 @@ static int
iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
{
struct iseq_insn_info_entry *insns_info;
- struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
- unsigned int *positions;
LINK_ELEMENT *list;
VALUE *generated_iseq;
rb_event_flag_t events = 0;
- long data = 0;
int insn_num, code_index, insns_info_index, sp = 0;
int stack_max = fix_sp_depth(iseq, anchor);
@@ -2288,331 +1929,247 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
if (stack_max < 0) return COMPILE_NG;
/* fix label position */
+ list = FIRST_ELEMENT(anchor);
insn_num = code_index = 0;
- for (list = FIRST_ELEMENT(anchor); list; list = list->next) {
- switch (list->type) {
- case ISEQ_ELEMENT_INSN:
- {
- INSN *iobj = (INSN *)list;
- /* update sp */
- sp = calc_sp_depth(sp, iobj);
- insn_num++;
- events = iobj->insn_info.events |= events;
- if (ISEQ_COVERAGE(iseq)) {
- if (ISEQ_LINE_COVERAGE(iseq) && (events & RUBY_EVENT_COVERAGE_LINE) &&
- !(rb_get_coverage_mode() & COVERAGE_TARGET_ONESHOT_LINES)) {
- int line = iobj->insn_info.line_no - 1;
- if (line >= 0 && line < RARRAY_LEN(ISEQ_LINE_COVERAGE(iseq))) {
- RARRAY_ASET(ISEQ_LINE_COVERAGE(iseq), line, INT2FIX(0));
- }
- }
- if (ISEQ_BRANCH_COVERAGE(iseq) && (events & RUBY_EVENT_COVERAGE_BRANCH)) {
- while (RARRAY_LEN(ISEQ_PC2BRANCHINDEX(iseq)) <= code_index) {
- rb_ary_push(ISEQ_PC2BRANCHINDEX(iseq), Qnil);
- }
- RARRAY_ASET(ISEQ_PC2BRANCHINDEX(iseq), code_index, INT2FIX(data));
- }
- }
- code_index += insn_data_length(iobj);
- events = 0;
- data = 0;
- break;
- }
- case ISEQ_ELEMENT_LABEL:
- {
- LABEL *lobj = (LABEL *)list;
- lobj->position = code_index;
- if (lobj->sp != sp) {
- debugs("%s: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
- RSTRING_PTR(rb_iseq_path(iseq)),
- lobj->label_no, lobj->sp, sp);
- }
- sp = lobj->sp;
- break;
- }
- case ISEQ_ELEMENT_TRACE:
- {
- TRACE *trace = (TRACE *)list;
- events |= trace->event;
- if (trace->event & RUBY_EVENT_COVERAGE_BRANCH) data = trace->data;
- break;
- }
- case ISEQ_ELEMENT_ADJUST:
- {
- ADJUST *adjust = (ADJUST *)list;
- if (adjust->line_no != -1) {
- int orig_sp = sp;
- sp = adjust->label ? adjust->label->sp : 0;
- if (orig_sp - sp > 0) {
- if (orig_sp - sp > 1) code_index++; /* 1 operand */
- code_index++; /* insn */
- insn_num++;
- }
- }
- break;
- }
- default: break;
- }
+ while (list) {
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ INSN *iobj = (INSN *)list;
+ /* update sp */
+ sp = calc_sp_depth(sp, iobj);
+ code_index += insn_data_length(iobj);
+ insn_num++;
+ iobj->insn_info.events |= events;
+ events = 0;
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ LABEL *lobj = (LABEL *)list;
+ lobj->position = code_index;
+ sp = lobj->sp;
+ break;
+ }
+ case ISEQ_ELEMENT_TRACE:
+ {
+ TRACE *trace = (TRACE *)list;
+ events |= trace->event;
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)list;
+ if (adjust->line_no != -1) {
+ int orig_sp = sp;
+ sp = adjust->label ? adjust->label->sp : 0;
+ if (orig_sp - sp > 0) {
+ if (orig_sp - sp > 1) code_index++; /* 1 operand */
+ code_index++; /* insn */
+ insn_num++;
+ }
+ }
+ break;
+ }
+ }
+ list = list->next;
}
/* make instruction sequence */
generated_iseq = ALLOC_N(VALUE, code_index);
insns_info = ALLOC_N(struct iseq_insn_info_entry, insn_num);
- positions = ALLOC_N(unsigned int, insn_num);
- body->is_entries = ZALLOC_N(union iseq_inline_storage_entry, ISEQ_IS_SIZE(body));
- body->call_data = ZALLOC_N(struct rb_call_data, body->ci_size);
- ISEQ_COMPILE_DATA(iseq)->ci_index = 0;
-
- // Calculate the bitmask buffer size.
- // Round the generated_iseq size up to the nearest multiple
- // of the number of bits in an unsigned long.
-
- // Allocate enough room for the bitmask list
- iseq_bits_t * mark_offset_bits;
- int code_size = code_index;
-
- iseq_bits_t tmp[1] = {0};
- bool needs_bitmap = false;
+ iseq->body->is_entries = ZALLOC_N(union iseq_inline_storage_entry, iseq->body->is_size);
+ iseq->body->ci_entries = (struct rb_call_info *)ruby_xmalloc(sizeof(struct rb_call_info) * iseq->body->ci_size +
+ sizeof(struct rb_call_info_with_kwarg) * iseq->body->ci_kw_size);
+ MEMZERO(iseq->body->ci_entries + iseq->body->ci_size, struct rb_call_info_with_kwarg, iseq->body->ci_kw_size); /* need to clear ci_kw entries */
+ iseq->body->cc_entries = ZALLOC_N(struct rb_call_cache, iseq->body->ci_size + iseq->body->ci_kw_size);
- if (ISEQ_MBITS_BUFLEN(code_index) == 1) {
- mark_offset_bits = tmp;
- }
- else {
- mark_offset_bits = ZALLOC_N(iseq_bits_t, ISEQ_MBITS_BUFLEN(code_index));
- }
+ ISEQ_COMPILE_DATA(iseq)->ci_index = ISEQ_COMPILE_DATA(iseq)->ci_kw_index = 0;
list = FIRST_ELEMENT(anchor);
insns_info_index = code_index = sp = 0;
while (list) {
- switch (list->type) {
- case ISEQ_ELEMENT_INSN:
- {
- int j, len, insn;
- const char *types;
- VALUE *operands;
- INSN *iobj = (INSN *)list;
-
- /* update sp */
- sp = calc_sp_depth(sp, iobj);
- /* fprintf(stderr, "insn: %-16s, sp: %d\n", insn_name(iobj->insn_id), sp); */
- operands = iobj->operands;
- insn = iobj->insn_id;
- generated_iseq[code_index] = insn;
- types = insn_op_types(insn);
- len = insn_len(insn);
-
- for (j = 0; types[j]; j++) {
- char type = types[j];
-
- /* printf("--> [%c - (%d-%d)]\n", type, k, j); */
- switch (type) {
- case TS_OFFSET:
- {
- /* label(destination position) */
- LABEL *lobj = (LABEL *)operands[j];
- generated_iseq[code_index + 1 + j] = lobj->position - (code_index + len);
- break;
- }
- case TS_CDHASH:
- {
- VALUE map = operands[j];
- struct cdhash_set_label_struct data;
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ int j, len, insn;
+ const char *types;
+ VALUE *operands;
+ INSN *iobj = (INSN *)list;
+
+ /* update sp */
+ sp = calc_sp_depth(sp, iobj);
+ /* fprintf(stderr, "insn: %-16s, sp: %d\n", insn_name(iobj->insn_id), sp); */
+ operands = iobj->operands;
+ insn = iobj->insn_id;
+ generated_iseq[code_index] = insn;
+ types = insn_op_types(insn);
+ len = insn_len(insn);
+
+ for (j = 0; types[j]; j++) {
+ char type = types[j];
+ /* printf("--> [%c - (%d-%d)]\n", type, k, j); */
+ switch (type) {
+ case TS_OFFSET:
+ {
+ /* label(destination position) */
+ LABEL *lobj = (LABEL *)operands[j];
+ generated_iseq[code_index + 1 + j] = lobj->position - (code_index + len);
+ break;
+ }
+ case TS_CDHASH:
+ {
+ VALUE map = operands[j];
+ struct cdhash_set_label_struct data;
data.hash = map;
data.pos = code_index;
data.len = len;
- rb_hash_foreach(map, cdhash_set_label_i, (VALUE)&data);
-
- rb_hash_rehash(map);
- freeze_hide_obj(map);
- generated_iseq[code_index + 1 + j] = map;
- ISEQ_MBITS_SET(mark_offset_bits, code_index + 1 + j);
- RB_OBJ_WRITTEN(iseq, Qundef, map);
- needs_bitmap = true;
- break;
- }
- case TS_LINDEX:
- case TS_NUM: /* ulong */
- generated_iseq[code_index + 1 + j] = FIX2INT(operands[j]);
- break;
- case TS_ISEQ: /* iseq */
- case TS_VALUE: /* VALUE */
- {
- VALUE v = operands[j];
- generated_iseq[code_index + 1 + j] = v;
- /* to mark ruby object */
- if (!SPECIAL_CONST_P(v)) {
- RB_OBJ_WRITTEN(iseq, Qundef, v);
- ISEQ_MBITS_SET(mark_offset_bits, code_index + 1 + j);
- needs_bitmap = true;
- }
- break;
- }
- /* [ TS_IVC | TS_ICVARC | TS_ISE | TS_IC ] */
- case TS_IC: /* inline cache: constants */
- {
- unsigned int ic_index = ISEQ_COMPILE_DATA(iseq)->ic_index++;
- IC ic = &ISEQ_IS_ENTRY_START(body, type)[ic_index].ic_cache;
- if (UNLIKELY(ic_index >= body->ic_size)) {
- BADINSN_DUMP(anchor, &iobj->link, 0);
- COMPILE_ERROR(iseq, iobj->insn_info.line_no,
- "iseq_set_sequence: ic_index overflow: index: %d, size: %d",
- ic_index, ISEQ_IS_SIZE(body));
- }
-
- ic->segments = array_to_idlist(operands[j]);
-
- generated_iseq[code_index + 1 + j] = (VALUE)ic;
- }
- break;
- case TS_IVC: /* inline ivar cache */
- {
- unsigned int ic_index = FIX2UINT(operands[j]);
-
- IVC cache = ((IVC)&body->is_entries[ic_index]);
-
- if (insn == BIN(setinstancevariable)) {
- cache->iv_set_name = SYM2ID(operands[j - 1]);
- }
- else {
- cache->iv_set_name = 0;
- }
-
- vm_ic_attr_index_initialize(cache, INVALID_SHAPE_ID);
- }
- case TS_ISE: /* inline storage entry: `once` insn */
- case TS_ICVARC: /* inline cvar cache */
- {
- unsigned int ic_index = FIX2UINT(operands[j]);
- IC ic = &ISEQ_IS_ENTRY_START(body, type)[ic_index].ic_cache;
- if (UNLIKELY(ic_index >= ISEQ_IS_SIZE(body))) {
- BADINSN_DUMP(anchor, &iobj->link, 0);
- COMPILE_ERROR(iseq, iobj->insn_info.line_no,
- "iseq_set_sequence: ic_index overflow: index: %d, size: %d",
- ic_index, ISEQ_IS_SIZE(body));
- }
- generated_iseq[code_index + 1 + j] = (VALUE)ic;
-
- break;
- }
- case TS_CALLDATA:
- {
- const struct rb_callinfo *source_ci = (const struct rb_callinfo *)operands[j];
- struct rb_call_data *cd = &body->call_data[ISEQ_COMPILE_DATA(iseq)->ci_index++];
- assert(ISEQ_COMPILE_DATA(iseq)->ci_index <= body->ci_size);
- cd->ci = source_ci;
- cd->cc = vm_cc_empty();
- generated_iseq[code_index + 1 + j] = (VALUE)cd;
- break;
- }
- case TS_ID: /* ID */
- generated_iseq[code_index + 1 + j] = SYM2ID(operands[j]);
- break;
- case TS_FUNCPTR:
- generated_iseq[code_index + 1 + j] = operands[j];
- break;
- case TS_BUILTIN:
- generated_iseq[code_index + 1 + j] = operands[j];
- break;
- default:
- BADINSN_ERROR(iseq, iobj->insn_info.line_no,
- "unknown operand type: %c", type);
- return COMPILE_NG;
- }
- }
- if (add_insn_info(insns_info, positions, insns_info_index, code_index, iobj)) insns_info_index++;
- code_index += len;
- break;
- }
- case ISEQ_ELEMENT_LABEL:
- {
- LABEL *lobj = (LABEL *)list;
- if (lobj->sp != sp) {
- debugs("%s: sp inconsistency found but ignored (" LABEL_FORMAT " sp: %d, calculated sp: %d)\n",
- RSTRING_PTR(rb_iseq_path(iseq)),
- lobj->label_no, lobj->sp, sp);
- }
- sp = lobj->sp;
- break;
- }
- case ISEQ_ELEMENT_ADJUST:
- {
- ADJUST *adjust = (ADJUST *)list;
- int orig_sp = sp;
-
- if (adjust->label) {
- sp = adjust->label->sp;
- }
- else {
- sp = 0;
- }
-
- if (adjust->line_no != -1) {
- const int diff = orig_sp - sp;
- if (diff > 0) {
- if (insns_info_index == 0) {
- COMPILE_ERROR(iseq, adjust->line_no,
- "iseq_set_sequence: adjust bug (ISEQ_ELEMENT_ADJUST must not be the first in iseq)");
- }
- if (add_adjust_info(insns_info, positions, insns_info_index, code_index, adjust)) insns_info_index++;
- }
- if (diff > 1) {
- generated_iseq[code_index++] = BIN(adjuststack);
- generated_iseq[code_index++] = orig_sp - sp;
- }
- else if (diff == 1) {
- generated_iseq[code_index++] = BIN(pop);
- }
- else if (diff < 0) {
- int label_no = adjust->label ? adjust->label->label_no : -1;
- xfree(generated_iseq);
- xfree(insns_info);
- xfree(positions);
- if (ISEQ_MBITS_BUFLEN(code_size) > 1) {
- xfree(mark_offset_bits);
- }
- debug_list(anchor, list);
- COMPILE_ERROR(iseq, adjust->line_no,
- "iseq_set_sequence: adjust bug to %d %d < %d",
- label_no, orig_sp, sp);
- return COMPILE_NG;
- }
- }
- break;
- }
- default:
- /* ignore */
- break;
- }
- list = list->next;
- }
-
- body->iseq_encoded = (void *)generated_iseq;
- body->iseq_size = code_index;
- body->stack_max = stack_max;
-
- if (ISEQ_MBITS_BUFLEN(body->iseq_size) == 1) {
- body->mark_bits.single = mark_offset_bits[0];
- }
- else {
- if (needs_bitmap) {
- body->mark_bits.list = mark_offset_bits;
- }
- else {
- body->mark_bits.list = 0;
- ruby_xfree(mark_offset_bits);
- }
- }
+ rb_hash_foreach(map, cdhash_set_label_i, (VALUE)&data);
+
+ rb_hash_rehash(map);
+ freeze_hide_obj(map);
+ generated_iseq[code_index + 1 + j] = map;
+ break;
+ }
+ case TS_LINDEX:
+ case TS_NUM: /* ulong */
+ generated_iseq[code_index + 1 + j] = FIX2INT(operands[j]);
+ break;
+ case TS_ISEQ: /* iseq */
+ {
+ VALUE v = operands[j];
+ generated_iseq[code_index + 1 + j] = v;
+ break;
+ }
+ case TS_VALUE: /* VALUE */
+ {
+ VALUE v = operands[j];
+ generated_iseq[code_index + 1 + j] = v;
+ /* to mark ruby object */
+ iseq_add_mark_object(iseq, v);
+ break;
+ }
+ case TS_IC: /* inline cache */
+ {
+ unsigned int ic_index = FIX2UINT(operands[j]);
+ IC ic = (IC)&iseq->body->is_entries[ic_index];
+ if (UNLIKELY(ic_index >= iseq->body->is_size)) {
+ rb_bug("iseq_set_sequence: ic_index overflow: index: %d, size: %d", ic_index, iseq->body->is_size);
+ }
+ generated_iseq[code_index + 1 + j] = (VALUE)ic;
+ break;
+ }
+ case TS_CALLINFO: /* call info */
+ {
+ struct rb_call_info *base_ci = (struct rb_call_info *)operands[j];
+ struct rb_call_info *ci;
+
+ if (base_ci->flag & VM_CALL_KWARG) {
+ struct rb_call_info_with_kwarg *ci_kw_entries = (struct rb_call_info_with_kwarg *)&iseq->body->ci_entries[iseq->body->ci_size];
+ struct rb_call_info_with_kwarg *ci_kw = &ci_kw_entries[ISEQ_COMPILE_DATA(iseq)->ci_kw_index++];
+ *ci_kw = *((struct rb_call_info_with_kwarg *)base_ci);
+ ci = (struct rb_call_info *)ci_kw;
+ assert(ISEQ_COMPILE_DATA(iseq)->ci_kw_index <= iseq->body->ci_kw_size);
+ }
+ else {
+ ci = &iseq->body->ci_entries[ISEQ_COMPILE_DATA(iseq)->ci_index++];
+ *ci = *base_ci;
+ assert(ISEQ_COMPILE_DATA(iseq)->ci_index <= iseq->body->ci_size);
+ }
+
+ generated_iseq[code_index + 1 + j] = (VALUE)ci;
+ break;
+ }
+ case TS_CALLCACHE:
+ {
+ struct rb_call_cache *cc = &iseq->body->cc_entries[ISEQ_COMPILE_DATA(iseq)->ci_index + ISEQ_COMPILE_DATA(iseq)->ci_kw_index - 1];
+ generated_iseq[code_index + 1 + j] = (VALUE)cc;
+ break;
+ }
+ case TS_ID: /* ID */
+ generated_iseq[code_index + 1 + j] = SYM2ID(operands[j]);
+ break;
+ case TS_GENTRY:
+ {
+ struct rb_global_entry *entry =
+ (struct rb_global_entry *)(operands[j] & (~1));
+ generated_iseq[code_index + 1 + j] = (VALUE)entry;
+ }
+ break;
+ case TS_FUNCPTR:
+ generated_iseq[code_index + 1 + j] = operands[j];
+ break;
+ default:
+ BADINSN_ERROR(iseq, iobj->insn_info.line_no,
+ "unknown operand type: %c", type);
+ return COMPILE_NG;
+ }
+ }
+ if (add_insn_info(insns_info, insns_info_index, code_index, (LINK_ELEMENT *)iobj)) insns_info_index++;
+ code_index += len;
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ LABEL *lobj = (LABEL *)list;
+ sp = lobj->sp;
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)list;
+ int orig_sp = sp;
+
+ if (adjust->label) {
+ sp = adjust->label->sp;
+ }
+ else {
+ sp = 0;
+ }
+
+ if (adjust->line_no != -1) {
+ const int diff = orig_sp - sp;
+ if (diff > 0) {
+ if (add_insn_info(insns_info, insns_info_index, code_index, (LINK_ELEMENT *)adjust)) insns_info_index++;
+ }
+ if (diff > 1) {
+ generated_iseq[code_index++] = BIN(adjuststack);
+ generated_iseq[code_index++] = orig_sp - sp;
+ }
+ else if (diff == 1) {
+ generated_iseq[code_index++] = BIN(pop);
+ }
+ else if (diff < 0) {
+ int label_no = adjust->label ? adjust->label->label_no : -1;
+ xfree(generated_iseq);
+ xfree(insns_info);
+ debug_list(anchor);
+ COMPILE_ERROR(iseq, adjust->line_no,
+ "iseq_set_sequence: adjust bug to %d %d < %d",
+ label_no, orig_sp, sp);
+ return COMPILE_NG;
+ }
+ }
+ break;
+ }
+ default:
+ /* ignore */
+ break;
+ }
+ list = list->next;
+ }
+
+ iseq->body->iseq_encoded = (void *)generated_iseq;
+ iseq->body->iseq_size = code_index;
+ iseq->body->stack_max = stack_max;
/* get rid of memory leak when REALLOC failed */
- body->insns_info.body = insns_info;
- body->insns_info.positions = positions;
+ iseq->body->insns_info = insns_info;
REALLOC_N(insns_info, struct iseq_insn_info_entry, insns_info_index);
- body->insns_info.body = insns_info;
- REALLOC_N(positions, unsigned int, insns_info_index);
- body->insns_info.positions = positions;
- body->insns_info.size = insns_info_index;
+ iseq->body->insns_info = insns_info;
+ iseq->body->insns_info_size = insns_info_index;
return COMPILE_OK;
}
@@ -2636,43 +2193,48 @@ iseq_set_exception_table(rb_iseq_t *iseq)
unsigned int tlen, i;
struct iseq_catch_table_entry *entry;
- ISEQ_BODY(iseq)->catch_table = NULL;
- if (NIL_P(ISEQ_COMPILE_DATA(iseq)->catch_table_ary)) return COMPILE_OK;
tlen = (int)RARRAY_LEN(ISEQ_COMPILE_DATA(iseq)->catch_table_ary);
- tptr = RARRAY_CONST_PTR_TRANSIENT(ISEQ_COMPILE_DATA(iseq)->catch_table_ary);
+ tptr = RARRAY_CONST_PTR(ISEQ_COMPILE_DATA(iseq)->catch_table_ary);
if (tlen > 0) {
- struct iseq_catch_table *table = xmalloc(iseq_catch_table_bytes(tlen));
- table->size = tlen;
-
- for (i = 0; i < table->size; i++) {
- ptr = RARRAY_CONST_PTR_TRANSIENT(tptr[i]);
- entry = UNALIGNED_MEMBER_PTR(table, entries[i]);
- entry->type = (enum rb_catch_type)(ptr[0] & 0xffff);
- entry->start = label_get_position((LABEL *)(ptr[1] & ~1));
- entry->end = label_get_position((LABEL *)(ptr[2] & ~1));
- entry->iseq = (rb_iseq_t *)ptr[3];
- RB_OBJ_WRITTEN(iseq, Qundef, entry->iseq);
-
- /* stack depth */
- if (ptr[4]) {
- LABEL *lobj = (LABEL *)(ptr[4] & ~1);
- entry->cont = label_get_position(lobj);
- entry->sp = label_get_sp(lobj);
-
- /* TODO: Dirty Hack! Fix me */
- if (entry->type == CATCH_TYPE_RESCUE ||
- entry->type == CATCH_TYPE_BREAK ||
- entry->type == CATCH_TYPE_NEXT) {
- entry->sp--;
- }
- }
- else {
- entry->cont = 0;
- }
- }
- ISEQ_BODY(iseq)->catch_table = table;
- RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->catch_table_ary, 0); /* free */
+ struct iseq_catch_table *table = xmalloc(iseq_catch_table_bytes(tlen));
+ table->size = tlen;
+
+ for (i = 0; i < table->size; i++) {
+ ptr = RARRAY_CONST_PTR(tptr[i]);
+ entry = &table->entries[i];
+ entry->type = (enum catch_type)(ptr[0] & 0xffff);
+ entry->start = label_get_position((LABEL *)(ptr[1] & ~1));
+ entry->end = label_get_position((LABEL *)(ptr[2] & ~1));
+ entry->iseq = (rb_iseq_t *)ptr[3];
+
+ /* register iseq as mark object */
+ if (entry->iseq != 0) {
+ iseq_add_mark_object(iseq, (VALUE)entry->iseq);
+ }
+
+ /* stack depth */
+ if (ptr[4]) {
+ LABEL *lobj = (LABEL *)(ptr[4] & ~1);
+ entry->cont = label_get_position(lobj);
+ entry->sp = label_get_sp(lobj);
+
+ /* TODO: Dirty Hack! Fix me */
+ if (entry->type == CATCH_TYPE_RESCUE ||
+ entry->type == CATCH_TYPE_BREAK ||
+ entry->type == CATCH_TYPE_NEXT) {
+ entry->sp--;
+ }
+ }
+ else {
+ entry->cont = 0;
+ }
+ }
+ iseq->body->catch_table = table;
+ RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->catch_table_ary, 0); /* free */
+ }
+ else {
+ iseq->body->catch_table = NULL;
}
return COMPILE_OK;
@@ -2691,12 +2253,12 @@ static int
iseq_set_optargs_table(rb_iseq_t *iseq)
{
int i;
- VALUE *opt_table = (VALUE *)ISEQ_BODY(iseq)->param.opt_table;
+ VALUE *opt_table = (VALUE *)iseq->body->param.opt_table;
- if (ISEQ_BODY(iseq)->param.flags.has_opt) {
- for (i = 0; i < ISEQ_BODY(iseq)->param.opt_num + 1; i++) {
- opt_table[i] = label_get_position((LABEL *)opt_table[i]);
- }
+ if (iseq->body->param.flags.has_opt) {
+ for (i = 0; i < iseq->body->param.opt_num + 1; i++) {
+ opt_table[i] = label_get_position((LABEL *)opt_table[i]);
+ }
}
return COMPILE_OK;
}
@@ -2710,27 +2272,26 @@ get_destination_insn(INSN *iobj)
list = lobj->link.next;
while (list) {
- switch (list->type) {
- case ISEQ_ELEMENT_INSN:
- case ISEQ_ELEMENT_ADJUST:
- goto found;
- case ISEQ_ELEMENT_LABEL:
- /* ignore */
- break;
- case ISEQ_ELEMENT_TRACE:
- {
- TRACE *trace = (TRACE *)list;
- events |= trace->event;
- }
- break;
- default: break;
- }
- list = list->next;
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ case ISEQ_ELEMENT_ADJUST:
+ goto found;
+ case ISEQ_ELEMENT_LABEL:
+ /* ignore */
+ break;
+ case ISEQ_ELEMENT_TRACE:
+ {
+ TRACE *trace = (TRACE *)list;
+ events |= trace->event;
+ }
+ break;
+ }
+ list = list->next;
}
found:
if (list && IS_INSN(list)) {
- INSN *iobj = (INSN *)list;
- iobj->insn_info.events |= events;
+ INSN *iobj = (INSN *)list;
+ iobj->insn_info.events |= events;
}
return list;
}
@@ -2741,10 +2302,10 @@ get_next_insn(INSN *iobj)
LINK_ELEMENT *list = iobj->link.next;
while (list) {
- if (IS_INSN(list) || IS_ADJUST(list)) {
- return list;
- }
- list = list->next;
+ if (IS_INSN(list) || IS_ADJUST(list)) {
+ return list;
+ }
+ list = list->next;
}
return 0;
}
@@ -2755,10 +2316,10 @@ get_prev_insn(INSN *iobj)
LINK_ELEMENT *list = iobj->link.prev;
while (list) {
- if (IS_INSN(list) || IS_ADJUST(list)) {
- return list;
- }
- list = list->prev;
+ if (IS_INSN(list) || IS_ADJUST(list)) {
+ return list;
+ }
+ list = list->prev;
}
return 0;
}
@@ -2788,9 +2349,9 @@ find_destination(INSN *i)
{
int pos, len = insn_len(i->insn_id);
for (pos = 0; pos < len; ++pos) {
- if (insn_op_types(i->insn_id)[pos] == TS_OFFSET) {
- return (LABEL *)OPERAND_AT(i, pos);
- }
+ if (insn_op_types(i->insn_id)[pos] == TS_OFFSET) {
+ return (LABEL *)OPERAND_AT(i, pos);
+ }
}
return 0;
}
@@ -2806,53 +2367,56 @@ remove_unreachable_chunk(rb_iseq_t *iseq, LINK_ELEMENT *i)
MEMZERO(unref_counts, int, nlabels);
end = i;
do {
- LABEL *lab;
- if (IS_INSN(i)) {
- if (IS_INSN_ID(i, leave)) {
- end = i;
- break;
- }
- else if ((lab = find_destination((INSN *)i)) != 0) {
- if (lab->unremovable) break;
- unref_counts[lab->label_no]++;
- }
- }
- else if (IS_LABEL(i)) {
- lab = (LABEL *)i;
- if (lab->unremovable) return 0;
- if (lab->refcnt > unref_counts[lab->label_no]) {
- if (i == first) return 0;
- break;
- }
- continue;
- }
- else if (IS_TRACE(i)) {
- /* do nothing */
- }
- else if (IS_ADJUST(i)) {
- LABEL *dest = ((ADJUST *)i)->label;
- if (dest && dest->unremovable) return 0;
- }
- end = i;
+ LABEL *lab;
+ if (IS_INSN(i)) {
+ if (IS_INSN_ID(i, leave)) {
+ end = i;
+ break;
+ }
+ else if ((lab = find_destination((INSN *)i)) != 0) {
+ if (lab->unremovable) break;
+ unref_counts[lab->label_no]++;
+ }
+ }
+ else if (IS_LABEL(i)) {
+ lab = (LABEL *)i;
+ if (lab->unremovable) return 0;
+ if (lab->refcnt > unref_counts[lab->label_no]) {
+ if (i == first) return 0;
+ break;
+ }
+ continue;
+ }
+ else if (IS_TRACE(i)) {
+ /* do nothing */
+ }
+ else if (IS_ADJUST(i)) {
+ LABEL *dest = ((ADJUST *)i)->label;
+ if (dest && dest->unremovable) return 0;
+ }
+ end = i;
} while ((i = i->next) != 0);
i = first;
do {
- if (IS_INSN(i)) {
- struct rb_iseq_constant_body *body = ISEQ_BODY(iseq);
- VALUE insn = INSN_OF(i);
- int pos, len = insn_len(insn);
- for (pos = 0; pos < len; ++pos) {
- switch (insn_op_types(insn)[pos]) {
- case TS_OFFSET:
- unref_destination((INSN *)i, pos);
- break;
- case TS_CALLDATA:
- --(body->ci_size);
- break;
- }
- }
- }
- ELEM_REMOVE(i);
+ if (IS_INSN(i)) {
+ struct rb_iseq_constant_body *body = iseq->body;
+ VALUE insn = INSN_OF(i);
+ int pos, len = insn_len(insn);
+ for (pos = 0; pos < len; ++pos) {
+ switch (insn_op_types(insn)[pos]) {
+ case TS_OFFSET:
+ unref_destination((INSN *)i, pos);
+ break;
+ case TS_CALLINFO:
+ if (((struct rb_call_info *)OPERAND_AT(i, pos))->flag & VM_CALL_KWARG)
+ --(body->ci_kw_size);
+ else
+ --(body->ci_size);
+ break;
+ }
+ }
+ }
+ ELEM_REMOVE(i);
} while ((i != end) && (i = i->next) != 0);
return 1;
}
@@ -2862,256 +2426,148 @@ iseq_pop_newarray(rb_iseq_t *iseq, INSN *iobj)
{
switch (OPERAND_AT(iobj, 0)) {
case INT2FIX(0): /* empty array */
- ELEM_REMOVE(&iobj->link);
- return TRUE;
+ ELEM_REMOVE(&iobj->link);
+ return TRUE;
case INT2FIX(1): /* single element array */
- ELEM_REMOVE(&iobj->link);
- return FALSE;
+ ELEM_REMOVE(&iobj->link);
+ return FALSE;
default:
- iobj->insn_id = BIN(adjuststack);
- return TRUE;
+ iobj->insn_id = BIN(adjuststack);
+ return TRUE;
}
}
static int
-is_frozen_putstring(INSN *insn, VALUE *op)
-{
- if (IS_INSN_ID(insn, putstring)) {
- *op = OPERAND_AT(insn, 0);
- return 1;
- }
- else if (IS_INSN_ID(insn, putobject)) { /* frozen_string_literal */
- *op = OPERAND_AT(insn, 0);
- return RB_TYPE_P(*op, T_STRING);
- }
- return 0;
-}
-
-static int
-optimize_checktype(rb_iseq_t *iseq, INSN *iobj)
-{
- /*
- * putobject obj
- * dup
- * checktype T_XXX
- * branchif l1
- * l2:
- * ...
- * l1:
- *
- * => obj is a T_XXX
- *
- * putobject obj (T_XXX)
- * jump L1
- * L1:
- *
- * => obj is not a T_XXX
- *
- * putobject obj (T_XXX)
- * jump L2
- * L2:
- */
- int line, node_id;
- INSN *niobj, *ciobj, *dup = 0;
- LABEL *dest = 0;
- VALUE type;
-
- switch (INSN_OF(iobj)) {
- case BIN(putstring):
- type = INT2FIX(T_STRING);
- break;
- case BIN(putnil):
- type = INT2FIX(T_NIL);
- break;
- case BIN(putobject):
- type = INT2FIX(TYPE(OPERAND_AT(iobj, 0)));
- break;
- default: return FALSE;
- }
-
- ciobj = (INSN *)get_next_insn(iobj);
- if (IS_INSN_ID(ciobj, jump)) {
- ciobj = (INSN *)get_next_insn((INSN*)OPERAND_AT(ciobj, 0));
- }
- if (IS_INSN_ID(ciobj, dup)) {
- ciobj = (INSN *)get_next_insn(dup = ciobj);
- }
- if (!ciobj || !IS_INSN_ID(ciobj, checktype)) return FALSE;
- niobj = (INSN *)get_next_insn(ciobj);
- if (!niobj) {
- /* TODO: putobject true/false */
- return FALSE;
- }
- switch (INSN_OF(niobj)) {
- case BIN(branchif):
- if (OPERAND_AT(ciobj, 0) == type) {
- dest = (LABEL *)OPERAND_AT(niobj, 0);
- }
- break;
- case BIN(branchunless):
- if (OPERAND_AT(ciobj, 0) != type) {
- dest = (LABEL *)OPERAND_AT(niobj, 0);
- }
- break;
- default:
- return FALSE;
- }
- line = ciobj->insn_info.line_no;
- node_id = ciobj->insn_info.node_id;
- NODE dummy_line_node = generate_dummy_line_node(line, node_id);
- if (!dest) {
- if (niobj->link.next && IS_LABEL(niobj->link.next)) {
- dest = (LABEL *)niobj->link.next; /* reuse label */
- }
- else {
- dest = NEW_LABEL(line);
- ELEM_INSERT_NEXT(&niobj->link, &dest->link);
- }
- }
- INSERT_AFTER_INSN1(iobj, &dummy_line_node, jump, dest);
- LABEL_REF(dest);
- if (!dup) INSERT_AFTER_INSN(iobj, &dummy_line_node, pop);
+same_debug_pos_p(LINK_ELEMENT *iobj1, LINK_ELEMENT *iobj2)
+{
+ VALUE debug1 = OPERAND_AT(iobj1, 0);
+ VALUE debug2 = OPERAND_AT(iobj2, 0);
+ if (debug1 == debug2) return TRUE;
+ if (!RB_TYPE_P(debug1, T_ARRAY)) return FALSE;
+ if (!RB_TYPE_P(debug2, T_ARRAY)) return FALSE;
+ if (RARRAY_LEN(debug1) != 2) return FALSE;
+ if (RARRAY_LEN(debug2) != 2) return FALSE;
+ if (RARRAY_AREF(debug1, 0) != RARRAY_AREF(debug2, 0)) return FALSE;
+ if (RARRAY_AREF(debug1, 1) != RARRAY_AREF(debug2, 1)) return FALSE;
return TRUE;
}
-static const struct rb_callinfo *
-ci_flag_set(const rb_iseq_t *iseq, const struct rb_callinfo *ci, unsigned int add)
-{
- const struct rb_callinfo *nci = vm_ci_new(vm_ci_mid(ci),
- vm_ci_flag(ci) | add,
- vm_ci_argc(ci),
- vm_ci_kwarg(ci));
- RB_OBJ_WRITTEN(iseq, ci, nci);
- return nci;
-}
-
-static const struct rb_callinfo *
-ci_argc_set(const rb_iseq_t *iseq, const struct rb_callinfo *ci, int argc)
-{
- const struct rb_callinfo *nci = vm_ci_new(vm_ci_mid(ci),
- vm_ci_flag(ci),
- argc,
- vm_ci_kwarg(ci));
- RB_OBJ_WRITTEN(iseq, ci, nci);
- return nci;
-}
-
static int
iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcallopt)
{
INSN *const iobj = (INSN *)list;
-
again:
- optimize_checktype(iseq, iobj);
-
if (IS_INSN_ID(iobj, jump)) {
- INSN *niobj, *diobj, *piobj;
- diobj = (INSN *)get_destination_insn(iobj);
- niobj = (INSN *)get_next_insn(iobj);
-
- if (diobj == niobj) {
- /*
- * jump LABEL
- * LABEL:
- * =>
- * LABEL:
- */
- unref_destination(iobj, 0);
- ELEM_REMOVE(&iobj->link);
- return COMPILE_OK;
- }
- else if (iobj != diobj && IS_INSN(&diobj->link) &&
- IS_INSN_ID(diobj, jump) &&
- OPERAND_AT(iobj, 0) != OPERAND_AT(diobj, 0) &&
- diobj->insn_info.events == 0) {
- /*
- * useless jump elimination:
- * jump LABEL1
- * ...
- * LABEL1:
- * jump LABEL2
- *
- * => in this case, first jump instruction should jump to
- * LABEL2 directly
- */
- replace_destination(iobj, diobj);
- remove_unreachable_chunk(iseq, iobj->link.next);
- goto again;
- }
- else if (IS_INSN_ID(diobj, leave)) {
- /*
- * jump LABEL
- * ...
- * LABEL:
- * leave
- * =>
- * leave
- * ...
- * LABEL:
- * leave
- */
- /* replace */
- unref_destination(iobj, 0);
- iobj->insn_id = BIN(leave);
- iobj->operand_size = 0;
- iobj->insn_info = diobj->insn_info;
- goto again;
- }
+ INSN *niobj, *diobj, *piobj;
+ diobj = (INSN *)get_destination_insn(iobj);
+ niobj = (INSN *)get_next_insn(iobj);
+
+ if (diobj == niobj) {
+ /*
+ * jump LABEL
+ * LABEL:
+ * =>
+ * LABEL:
+ */
+ unref_destination(iobj, 0);
+ ELEM_REMOVE(&iobj->link);
+ return COMPILE_OK;
+ }
+ else if (iobj != diobj && IS_INSN_ID(diobj, jump) &&
+ OPERAND_AT(iobj, 0) != OPERAND_AT(diobj, 0)) {
+ /*
+ * useless jump elimination:
+ * jump LABEL1
+ * ...
+ * LABEL1:
+ * jump LABEL2
+ *
+ * => in this case, first jump instruction should jump to
+ * LABEL2 directly
+ */
+ replace_destination(iobj, diobj);
+ remove_unreachable_chunk(iseq, iobj->link.next);
+ goto again;
+ }
+ else if (IS_INSN_ID(diobj, leave)) {
+ INSN *pop;
+ /*
+ * jump LABEL
+ * ...
+ * LABEL:
+ * leave
+ * =>
+ * leave
+ * pop
+ * ...
+ * LABEL:
+ * leave
+ */
+ /* replace */
+ unref_destination(iobj, 0);
+ iobj->insn_id = BIN(leave);
+ iobj->operand_size = 0;
+ iobj->insn_info = diobj->insn_info;
+ /* adjust stack depth */
+ pop = new_insn_body(iseq, diobj->insn_info.line_no, BIN(pop), 0);
+ ELEM_INSERT_NEXT(&iobj->link, &pop->link);
+ goto again;
+ }
else if (IS_INSN(iobj->link.prev) &&
(piobj = (INSN *)iobj->link.prev) &&
- (IS_INSN_ID(piobj, branchif) ||
- IS_INSN_ID(piobj, branchunless))) {
- INSN *pdiobj = (INSN *)get_destination_insn(piobj);
- if (niobj == pdiobj) {
- int refcnt = IS_LABEL(piobj->link.next) ?
- ((LABEL *)piobj->link.next)->refcnt : 0;
- /*
- * useless jump elimination (if/unless destination):
- * if L1
- * jump L2
- * L1:
- * ...
- * L2:
- *
- * ==>
- * unless L2
- * L1:
- * ...
- * L2:
- */
- piobj->insn_id = (IS_INSN_ID(piobj, branchif))
- ? BIN(branchunless) : BIN(branchif);
- replace_destination(piobj, iobj);
- if (refcnt <= 1) {
- ELEM_REMOVE(&iobj->link);
- }
- else {
- /* TODO: replace other branch destinations too */
- }
- return COMPILE_OK;
- }
- else if (diobj == pdiobj) {
- /*
- * useless jump elimination (if/unless before jump):
- * L1:
- * ...
- * if L1
- * jump L1
- *
- * ==>
- * L1:
- * ...
- * pop
- * jump L1
- */
- NODE dummy_line_node = generate_dummy_line_node(iobj->insn_info.line_no, iobj->insn_info.node_id);
- INSN *popiobj = new_insn_core(iseq, &dummy_line_node, BIN(pop), 0, 0);
- ELEM_REPLACE(&piobj->link, &popiobj->link);
- }
- }
- if (remove_unreachable_chunk(iseq, iobj->link.next)) {
- goto again;
- }
+ (IS_INSN_ID(piobj, branchif) ||
+ IS_INSN_ID(piobj, branchunless))) {
+ INSN *pdiobj = (INSN *)get_destination_insn(piobj);
+ if (niobj == pdiobj) {
+ int refcnt = IS_LABEL(piobj->link.next) ?
+ ((LABEL *)piobj->link.next)->refcnt : 0;
+ /*
+ * useless jump elimination (if/unless destination):
+ * if L1
+ * jump L2
+ * L1:
+ * ...
+ * L2:
+ *
+ * ==>
+ * unless L2
+ * L1:
+ * ...
+ * L2:
+ */
+ piobj->insn_id = (IS_INSN_ID(piobj, branchif))
+ ? BIN(branchunless) : BIN(branchif);
+ replace_destination(piobj, iobj);
+ if (refcnt <= 1) {
+ ELEM_REMOVE(&iobj->link);
+ }
+ else {
+ /* TODO: replace other branch destinations too */
+ }
+ return COMPILE_OK;
+ }
+ else if (diobj == pdiobj) {
+ /*
+ * useless jump elimination (if/unless before jump):
+ * L1:
+ * ...
+ * if L1
+ * jump L1
+ *
+ * ==>
+ * L1:
+ * ...
+ * pop
+ * jump L1
+ */
+ INSN *popiobj = new_insn_core(iseq, iobj->insn_info.line_no,
+ BIN(pop), 0, 0);
+ ELEM_REPLACE(&piobj->link, &popiobj->link);
+ }
+ }
+ if (remove_unreachable_chunk(iseq, iobj->link.next)) {
+ goto again;
+ }
}
/*
@@ -3123,554 +2579,358 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal
*
* putobject "beg".."end"
*/
- if (IS_INSN_ID(iobj, newrange)) {
- INSN *const range = iobj;
- INSN *beg, *end;
- VALUE str_beg, str_end;
-
- if ((end = (INSN *)get_prev_insn(range)) != 0 &&
- is_frozen_putstring(end, &str_end) &&
- (beg = (INSN *)get_prev_insn(end)) != 0 &&
- is_frozen_putstring(beg, &str_beg)) {
- int excl = FIX2INT(OPERAND_AT(range, 0));
- VALUE lit_range = rb_range_new(str_beg, str_end, excl);
-
- ELEM_REMOVE(&beg->link);
- ELEM_REMOVE(&end->link);
- range->insn_id = BIN(putobject);
- OPERAND_AT(range, 0) = lit_range;
- RB_OBJ_WRITTEN(iseq, Qundef, lit_range);
- }
+ if (IS_INSN_ID(iobj, checkmatch)) {
+ INSN *range = (INSN *)get_prev_insn(iobj);
+ INSN *beg, *end;
+
+ if (range && IS_INSN_ID(range, newrange) &&
+ (end = (INSN *)get_prev_insn(range)) != 0 &&
+ IS_INSN_ID(end, putstring) &&
+ (beg = (INSN *)get_prev_insn(end)) != 0 &&
+ IS_INSN_ID(beg, putstring)) {
+ VALUE str_beg = OPERAND_AT(beg, 0);
+ VALUE str_end = OPERAND_AT(end, 0);
+ int excl = FIX2INT(OPERAND_AT(range, 0));
+ VALUE lit_range = rb_range_new(str_beg, str_end, excl);
+
+ iseq_add_mark_object_compile_time(iseq, lit_range);
+ ELEM_REMOVE(&beg->link);
+ ELEM_REMOVE(&end->link);
+ range->insn_id = BIN(putobject);
+ OPERAND_AT(range, 0) = lit_range;
+ }
}
if (IS_INSN_ID(iobj, leave)) {
- remove_unreachable_chunk(iseq, iobj->link.next);
- }
-
- /*
- * ...
- * duparray [...]
- * concatarray
- * =>
- * ...
- * putobject [...]
- * concatarray
- */
- if (IS_INSN_ID(iobj, duparray)) {
- LINK_ELEMENT *next = iobj->link.next;
- if (IS_INSN(next) && IS_INSN_ID(next, concatarray)) {
- iobj->insn_id = BIN(putobject);
- }
+ remove_unreachable_chunk(iseq, iobj->link.next);
}
if (IS_INSN_ID(iobj, branchif) ||
- IS_INSN_ID(iobj, branchnil) ||
- IS_INSN_ID(iobj, branchunless)) {
- /*
- * if L1
- * ...
- * L1:
- * jump L2
- * =>
- * if L2
- */
- INSN *nobj = (INSN *)get_destination_insn(iobj);
-
- /* This is super nasty hack!!!
- *
- * This jump-jump optimization may ignore event flags of the jump
- * instruction being skipped. Actually, Line 2 TracePoint event
- * is never fired in the following code:
- *
- * 1: raise if 1 == 2
- * 2: while true
- * 3: break
- * 4: end
- *
- * This is critical for coverage measurement. [Bug #15980]
- *
- * This is a stopgap measure: stop the jump-jump optimization if
- * coverage measurement is enabled and if the skipped instruction
- * has any event flag.
- *
- * Note that, still, TracePoint Line event does not occur on Line 2.
- * This should be fixed in future.
- */
- int stop_optimization =
- ISEQ_COVERAGE(iseq) && ISEQ_LINE_COVERAGE(iseq) &&
- nobj->link.type == ISEQ_ELEMENT_INSN &&
- nobj->insn_info.events;
- if (!stop_optimization) {
- INSN *pobj = (INSN *)iobj->link.prev;
- int prev_dup = 0;
- if (pobj) {
- if (!IS_INSN(&pobj->link))
- pobj = 0;
- else if (IS_INSN_ID(pobj, dup))
- prev_dup = 1;
- }
-
- for (;;) {
- if (IS_INSN(&nobj->link) && IS_INSN_ID(nobj, jump)) {
- replace_destination(iobj, nobj);
- }
- else if (prev_dup && IS_INSN_ID(nobj, dup) &&
- !!(nobj = (INSN *)nobj->link.next) &&
- /* basic blocks, with no labels in the middle */
- nobj->insn_id == iobj->insn_id) {
- /*
- * dup
- * if L1
- * ...
- * L1:
- * dup
- * if L2
- * =>
- * dup
- * if L2
- * ...
- * L1:
- * dup
- * if L2
- */
- replace_destination(iobj, nobj);
- }
- else if (pobj) {
- /*
- * putnil
- * if L1
- * =>
- * # nothing
- *
- * putobject true
- * if L1
- * =>
- * jump L1
- *
- * putstring ".."
- * if L1
- * =>
- * jump L1
- *
- * putstring ".."
- * dup
- * if L1
- * =>
- * putstring ".."
- * jump L1
- *
- */
- int cond;
- if (prev_dup && IS_INSN(pobj->link.prev)) {
- pobj = (INSN *)pobj->link.prev;
- }
- if (IS_INSN_ID(pobj, putobject)) {
- cond = (IS_INSN_ID(iobj, branchif) ?
- OPERAND_AT(pobj, 0) != Qfalse :
- IS_INSN_ID(iobj, branchunless) ?
- OPERAND_AT(pobj, 0) == Qfalse :
- FALSE);
- }
- else if (IS_INSN_ID(pobj, putstring) ||
- IS_INSN_ID(pobj, duparray) ||
- IS_INSN_ID(pobj, newarray)) {
- cond = IS_INSN_ID(iobj, branchif);
- }
- else if (IS_INSN_ID(pobj, putnil)) {
- cond = !IS_INSN_ID(iobj, branchif);
- }
- else break;
- if (prev_dup || !IS_INSN_ID(pobj, newarray)) {
- ELEM_REMOVE(iobj->link.prev);
- }
- else if (!iseq_pop_newarray(iseq, pobj)) {
- NODE dummy_line_node = generate_dummy_line_node(pobj->insn_info.line_no, pobj->insn_info.node_id);
- pobj = new_insn_core(iseq, &dummy_line_node, BIN(pop), 0, NULL);
- ELEM_INSERT_PREV(&iobj->link, &pobj->link);
- }
- if (cond) {
- if (prev_dup) {
- NODE dummy_line_node = generate_dummy_line_node(pobj->insn_info.line_no, pobj->insn_info.node_id);
- pobj = new_insn_core(iseq, &dummy_line_node, BIN(putnil), 0, NULL);
- ELEM_INSERT_NEXT(&iobj->link, &pobj->link);
- }
- iobj->insn_id = BIN(jump);
- goto again;
- }
- else {
- unref_destination(iobj, 0);
- ELEM_REMOVE(&iobj->link);
- }
- break;
- }
- else break;
- nobj = (INSN *)get_destination_insn(nobj);
- }
- }
+ IS_INSN_ID(iobj, branchnil) ||
+ IS_INSN_ID(iobj, branchunless)) {
+ /*
+ * if L1
+ * ...
+ * L1:
+ * jump L2
+ * =>
+ * if L2
+ */
+ INSN *nobj = (INSN *)get_destination_insn(iobj);
+ INSN *pobj = (INSN *)iobj->link.prev;
+ int prev_dup = 0;
+ if (pobj) {
+ if (!IS_INSN(&pobj->link))
+ pobj = 0;
+ else if (IS_INSN_ID(pobj, dup))
+ prev_dup = 1;
+ }
+
+ for (;;) {
+ if (IS_INSN_ID(nobj, jump)) {
+ replace_destination(iobj, nobj);
+ }
+ else if (prev_dup && IS_INSN_ID(nobj, dup) &&
+ !!(nobj = (INSN *)nobj->link.next) &&
+ /* basic blocks, with no labels in the middle */
+ nobj->insn_id == iobj->insn_id) {
+ /*
+ * dup
+ * if L1
+ * ...
+ * L1:
+ * dup
+ * if L2
+ * =>
+ * dup
+ * if L2
+ * ...
+ * L1:
+ * dup
+ * if L2
+ */
+ replace_destination(iobj, nobj);
+ }
+ else if (pobj) {
+ /*
+ * putnil
+ * if L1
+ * =>
+ * # nothing
+ *
+ * putobject true
+ * if L1
+ * =>
+ * jump L1
+ *
+ * putstring ".."
+ * if L1
+ * =>
+ * jump L1
+ *
+ * putstring ".."
+ * dup
+ * if L1
+ * =>
+ * putstring ".."
+ * jump L1
+ *
+ */
+ int cond;
+ if (prev_dup && IS_INSN(pobj->link.prev)) {
+ pobj = (INSN *)pobj->link.prev;
+ }
+ if (IS_INSN_ID(pobj, putobject)) {
+ cond = (IS_INSN_ID(iobj, branchif) ?
+ OPERAND_AT(pobj, 0) != Qfalse :
+ IS_INSN_ID(iobj, branchunless) ?
+ OPERAND_AT(pobj, 0) == Qfalse :
+ FALSE);
+ }
+ else if (IS_INSN_ID(pobj, putstring) ||
+ IS_INSN_ID(pobj, duparray) ||
+ IS_INSN_ID(pobj, newarray)) {
+ cond = IS_INSN_ID(iobj, branchif);
+ }
+ else if (IS_INSN_ID(pobj, putnil)) {
+ cond = !IS_INSN_ID(iobj, branchif);
+ }
+ else break;
+ if (prev_dup || !IS_INSN_ID(pobj, newarray)) {
+ ELEM_REMOVE(iobj->link.prev);
+ }
+ else if (!iseq_pop_newarray(iseq, pobj)) {
+ pobj = new_insn_core(iseq, pobj->insn_info.line_no, BIN(pop), 0, NULL);
+ ELEM_INSERT_PREV(&iobj->link, &pobj->link);
+ }
+ if (cond) {
+ if (prev_dup) {
+ pobj = new_insn_core(iseq, pobj->insn_info.line_no, BIN(putnil), 0, NULL);
+ ELEM_INSERT_NEXT(&iobj->link, &pobj->link);
+ }
+ iobj->insn_id = BIN(jump);
+ goto again;
+ }
+ else {
+ unref_destination(iobj, 0);
+ ELEM_REMOVE(&iobj->link);
+ }
+ break;
+ }
+ else break;
+ nobj = (INSN *)get_destination_insn(nobj);
+ }
}
if (IS_INSN_ID(iobj, pop)) {
- /*
- * putself / putnil / putobject obj / putstring "..."
- * pop
- * =>
- * # do nothing
- */
- LINK_ELEMENT *prev = iobj->link.prev;
- if (IS_INSN(prev)) {
- enum ruby_vminsn_type previ = ((INSN *)prev)->insn_id;
- if (previ == BIN(putobject) || previ == BIN(putnil) ||
- previ == BIN(putself) || previ == BIN(putstring) ||
- previ == BIN(dup) ||
- previ == BIN(getlocal) ||
- previ == BIN(getblockparam) ||
- previ == BIN(getblockparamproxy) ||
- previ == BIN(getinstancevariable) ||
- previ == BIN(duparray)) {
- /* just push operand or static value and pop soon, no
- * side effects */
- ELEM_REMOVE(prev);
- ELEM_REMOVE(&iobj->link);
- }
- else if (previ == BIN(newarray) && iseq_pop_newarray(iseq, (INSN*)prev)) {
- ELEM_REMOVE(&iobj->link);
- }
- else if (previ == BIN(concatarray)) {
- INSN *piobj = (INSN *)prev;
- NODE dummy_line_node = generate_dummy_line_node(piobj->insn_info.line_no, piobj->insn_info.node_id);
- INSERT_BEFORE_INSN1(piobj, &dummy_line_node, splatarray, Qfalse);
- INSN_OF(piobj) = BIN(pop);
- }
- else if (previ == BIN(concatstrings)) {
- if (OPERAND_AT(prev, 0) == INT2FIX(1)) {
- ELEM_REMOVE(prev);
- }
- else {
- ELEM_REMOVE(&iobj->link);
- INSN_OF(prev) = BIN(adjuststack);
- }
- }
- }
+ /*
+ * putself / putnil / putobject obj / putstring "..."
+ * pop
+ * =>
+ * # do nothing
+ */
+ LINK_ELEMENT *prev = iobj->link.prev;
+ if (IS_INSN(prev)) {
+ enum ruby_vminsn_type previ = ((INSN *)prev)->insn_id;
+ if (previ == BIN(putobject) || previ == BIN(putnil) ||
+ previ == BIN(putself) || previ == BIN(putstring) ||
+ previ == BIN(duparray)) {
+ /* just push operand or static value and pop soon, no
+ * side effects */
+ ELEM_REMOVE(prev);
+ ELEM_REMOVE(&iobj->link);
+ }
+ else if (previ == BIN(newarray) && iseq_pop_newarray(iseq, (INSN*)prev)) {
+ ELEM_REMOVE(&iobj->link);
+ }
+ }
}
if (IS_INSN_ID(iobj, newarray) ||
- IS_INSN_ID(iobj, duparray) ||
- IS_INSN_ID(iobj, expandarray) ||
- IS_INSN_ID(iobj, concatarray) ||
- IS_INSN_ID(iobj, splatarray) ||
- 0) {
- /*
- * newarray N
- * splatarray
- * =>
- * newarray N
- * newarray always puts an array
- */
- LINK_ELEMENT *next = iobj->link.next;
- if (IS_INSN(next) && IS_INSN_ID(next, splatarray)) {
- /* remove splatarray following always-array insn */
- ELEM_REMOVE(next);
- }
- }
-
- if (IS_INSN_ID(iobj, newarray)) {
- LINK_ELEMENT *next = iobj->link.next;
- if (IS_INSN(next) && IS_INSN_ID(next, expandarray) &&
- OPERAND_AT(next, 1) == INT2FIX(0)) {
- VALUE op1, op2;
- op1 = OPERAND_AT(iobj, 0);
- op2 = OPERAND_AT(next, 0);
- ELEM_REMOVE(next);
-
- if (op1 == op2) {
- /*
- * newarray 2
- * expandarray 2, 0
- * =>
- * swap
- */
- if (op1 == INT2FIX(2)) {
- INSN_OF(iobj) = BIN(swap);
- iobj->operand_size = 0;
- }
- /*
- * newarray X
- * expandarray X, 0
- * =>
- * opt_reverse X
- */
- else {
- INSN_OF(iobj) = BIN(opt_reverse);
- }
- }
- else {
- NODE dummy_line_node = generate_dummy_line_node(iobj->insn_info.line_no, iobj->insn_info.node_id);
- long diff = FIX2LONG(op1) - FIX2LONG(op2);
- INSN_OF(iobj) = BIN(opt_reverse);
- OPERAND_AT(iobj, 0) = OPERAND_AT(next, 0);
-
- if (op1 > op2) {
- /* X > Y
- * newarray X
- * expandarray Y, 0
- * =>
- * pop * (Y-X)
- * opt_reverse Y
- */
- for (; diff > 0; diff--) {
- INSERT_BEFORE_INSN(iobj, &dummy_line_node, pop);
- }
- }
- else { /* (op1 < op2) */
- /* X < Y
- * newarray X
- * expandarray Y, 0
- * =>
- * putnil * (Y-X)
- * opt_reverse Y
- */
- for (; diff < 0; diff++) {
- INSERT_BEFORE_INSN(iobj, &dummy_line_node, putnil);
- }
- }
- }
- }
- }
-
- if (IS_INSN_ID(iobj, duparray)) {
- LINK_ELEMENT *next = iobj->link.next;
- /*
- * duparray obj
- * expandarray X, 0
- * =>
- * putobject obj
- * expandarray X, 0
- */
- if (IS_INSN(next) && IS_INSN_ID(next, expandarray)) {
- INSN_OF(iobj) = BIN(putobject);
- }
- }
-
- if (IS_INSN_ID(iobj, anytostring)) {
- LINK_ELEMENT *next = iobj->link.next;
- /*
- * anytostring
- * concatstrings 1
- * =>
- * anytostring
- */
- if (IS_INSN(next) && IS_INSN_ID(next, concatstrings) &&
- OPERAND_AT(next, 0) == INT2FIX(1)) {
- ELEM_REMOVE(next);
- }
+ IS_INSN_ID(iobj, duparray) ||
+ IS_INSN_ID(iobj, expandarray) ||
+ IS_INSN_ID(iobj, concatarray) ||
+ IS_INSN_ID(iobj, splatarray) ||
+ 0) {
+ /*
+ * newarray N
+ * splatarray
+ * =>
+ * newarray N
+ * newarray always puts an array
+ */
+ LINK_ELEMENT *next = iobj->link.next;
+ if (IS_INSN(next) && IS_INSN_ID(next, splatarray)) {
+ /* remove splatarray following always-array insn */
+ ELEM_REMOVE(next);
+ }
+ }
+
+ if (IS_INSN_ID(iobj, tostring)) {
+ LINK_ELEMENT *next = iobj->link.next;
+ /*
+ * tostring
+ * concatstrings 1
+ * =>
+ * tostring
+ */
+ if (IS_INSN(next) && IS_INSN_ID(next, concatstrings) &&
+ OPERAND_AT(next, 0) == INT2FIX(1)) {
+ ELEM_REMOVE(next);
+ }
}
if (IS_INSN_ID(iobj, putstring) ||
- (IS_INSN_ID(iobj, putobject) && RB_TYPE_P(OPERAND_AT(iobj, 0), T_STRING))) {
- /*
- * putstring ""
- * concatstrings N
- * =>
- * concatstrings N-1
- */
- if (IS_NEXT_INSN_ID(&iobj->link, concatstrings) &&
- RSTRING_LEN(OPERAND_AT(iobj, 0)) == 0) {
- INSN *next = (INSN *)iobj->link.next;
- if ((OPERAND_AT(next, 0) = FIXNUM_INC(OPERAND_AT(next, 0), -1)) == INT2FIX(1)) {
- ELEM_REMOVE(&next->link);
- }
- ELEM_REMOVE(&iobj->link);
- }
+ (IS_INSN_ID(iobj, putobject) && RB_TYPE_P(OPERAND_AT(iobj, 0), T_STRING))) {
+ /*
+ * putstring ""
+ * concatstrings N
+ * =>
+ * concatstrings N-1
+ */
+ if (IS_NEXT_INSN_ID(&iobj->link, concatstrings) &&
+ RSTRING_LEN(OPERAND_AT(iobj, 0)) == 0) {
+ INSN *next = (INSN *)iobj->link.next;
+ if ((OPERAND_AT(next, 0) = FIXNUM_INC(OPERAND_AT(next, 0), -1)) == INT2FIX(1)) {
+ ELEM_REMOVE(&next->link);
+ }
+ ELEM_REMOVE(&iobj->link);
+ }
}
if (IS_INSN_ID(iobj, concatstrings)) {
- /*
- * concatstrings N
- * concatstrings M
- * =>
- * concatstrings N+M-1
- */
- LINK_ELEMENT *next = iobj->link.next;
- INSN *jump = 0;
- if (IS_INSN(next) && IS_INSN_ID(next, jump))
- next = get_destination_insn(jump = (INSN *)next);
- if (IS_INSN(next) && IS_INSN_ID(next, concatstrings)) {
- int n = FIX2INT(OPERAND_AT(iobj, 0)) + FIX2INT(OPERAND_AT(next, 0)) - 1;
- OPERAND_AT(iobj, 0) = INT2FIX(n);
- if (jump) {
- LABEL *label = ((LABEL *)OPERAND_AT(jump, 0));
- if (!--label->refcnt) {
- ELEM_REMOVE(&label->link);
- }
- else {
- label = NEW_LABEL(0);
- OPERAND_AT(jump, 0) = (VALUE)label;
- }
- label->refcnt++;
- ELEM_INSERT_NEXT(next, &label->link);
- CHECK(iseq_peephole_optimize(iseq, get_next_insn(jump), do_tailcallopt));
- }
- else {
- ELEM_REMOVE(next);
- }
- }
+ /*
+ * concatstrings N
+ * concatstrings M
+ * =>
+ * concatstrings N+M-1
+ */
+ LINK_ELEMENT *next = iobj->link.next, *freeze = 0;
+ INSN *jump = 0;
+ if (IS_INSN(next) && IS_INSN_ID(next, freezestring))
+ next = (freeze = next)->next;
+ if (IS_INSN(next) && IS_INSN_ID(next, jump))
+ next = get_destination_insn(jump = (INSN *)next);
+ if (IS_INSN(next) && IS_INSN_ID(next, concatstrings)) {
+ int n = FIX2INT(OPERAND_AT(iobj, 0)) + FIX2INT(OPERAND_AT(next, 0)) - 1;
+ OPERAND_AT(iobj, 0) = INT2FIX(n);
+ if (jump) {
+ LABEL *label = ((LABEL *)OPERAND_AT(jump, 0));
+ if (!--label->refcnt) {
+ ELEM_REMOVE(&label->link);
+ }
+ else {
+ label = NEW_LABEL(0);
+ OPERAND_AT(jump, 0) = (VALUE)label;
+ }
+ label->refcnt++;
+ if (freeze && IS_NEXT_INSN_ID(next, freezestring)) {
+ if (same_debug_pos_p(freeze, next->next)) {
+ ELEM_REMOVE(freeze);
+ }
+ else {
+ next = next->next;
+ }
+ }
+ ELEM_INSERT_NEXT(next, &label->link);
+ CHECK(iseq_peephole_optimize(iseq, get_next_insn(jump), do_tailcallopt));
+ }
+ else {
+ if (freeze) ELEM_REMOVE(freeze);
+ ELEM_REMOVE(next);
+ }
+ }
}
if (do_tailcallopt &&
- (IS_INSN_ID(iobj, send) ||
- IS_INSN_ID(iobj, opt_aref_with) ||
- IS_INSN_ID(iobj, opt_aset_with) ||
- IS_INSN_ID(iobj, invokesuper))) {
- /*
- * send ...
- * leave
- * =>
- * send ..., ... | VM_CALL_TAILCALL, ...
- * leave # unreachable
- */
- INSN *piobj = NULL;
- if (iobj->link.next) {
- LINK_ELEMENT *next = iobj->link.next;
- do {
- if (!IS_INSN(next)) {
- next = next->next;
- continue;
- }
- switch (INSN_OF(next)) {
- case BIN(nop):
- next = next->next;
- break;
- case BIN(jump):
- /* if cond
- * return tailcall
- * end
- */
- next = get_destination_insn((INSN *)next);
- break;
- case BIN(leave):
- piobj = iobj;
- /* fall through */
- default:
- next = NULL;
- break;
- }
- } while (next);
- }
-
- if (piobj) {
- const struct rb_callinfo *ci = (struct rb_callinfo *)OPERAND_AT(piobj, 0);
- if (IS_INSN_ID(piobj, send) ||
- IS_INSN_ID(piobj, invokesuper)) {
- if (OPERAND_AT(piobj, 1) == 0) { /* no blockiseq */
- ci = ci_flag_set(iseq, ci, VM_CALL_TAILCALL);
- OPERAND_AT(piobj, 0) = (VALUE)ci;
- RB_OBJ_WRITTEN(iseq, Qundef, ci);
- }
- }
- else {
- ci = ci_flag_set(iseq, ci, VM_CALL_TAILCALL);
- OPERAND_AT(piobj, 0) = (VALUE)ci;
- RB_OBJ_WRITTEN(iseq, Qundef, ci);
- }
- }
+ (IS_INSN_ID(iobj, send) ||
+ IS_INSN_ID(iobj, opt_aref_with) ||
+ IS_INSN_ID(iobj, opt_aset_with) ||
+ IS_INSN_ID(iobj, invokesuper))) {
+ /*
+ * send ...
+ * leave
+ * =>
+ * send ..., ... | VM_CALL_TAILCALL, ...
+ * leave # unreachable
+ */
+ INSN *piobj = NULL;
+ if (iobj->link.next) {
+ LINK_ELEMENT *next = iobj->link.next;
+ do {
+ if (!IS_INSN(next)) {
+ next = next->next;
+ continue;
+ }
+ switch (INSN_OF(next)) {
+ case BIN(nop):
+ next = next->next;
+ break;
+ case BIN(jump):
+ /* if cond
+ * return tailcall
+ * end
+ */
+ next = get_destination_insn((INSN *)next);
+ break;
+ case BIN(leave):
+ piobj = iobj;
+ default:
+ next = NULL;
+ break;
+ }
+ } while (next);
+ }
+
+ if (piobj) {
+ struct rb_call_info *ci = (struct rb_call_info *)piobj->operands[0];
+ if (IS_INSN_ID(piobj, send) || IS_INSN_ID(piobj, invokesuper)) {
+ if (piobj->operands[2] == 0) { /* no blockiseq */
+ ci->flag |= VM_CALL_TAILCALL;
+ }
+ }
+ else {
+ ci->flag |= VM_CALL_TAILCALL;
+ }
+ }
}
if (IS_INSN_ID(iobj, dup)) {
- if (IS_NEXT_INSN_ID(&iobj->link, setlocal)) {
- LINK_ELEMENT *set1 = iobj->link.next, *set2 = NULL;
-
- /*
- * dup
- * setlocal x, y
- * setlocal x, y
- * =>
- * dup
- * setlocal x, y
- */
- if (IS_NEXT_INSN_ID(set1, setlocal)) {
- set2 = set1->next;
- if (OPERAND_AT(set1, 0) == OPERAND_AT(set2, 0) &&
- OPERAND_AT(set1, 1) == OPERAND_AT(set2, 1)) {
- ELEM_REMOVE(set1);
- ELEM_REMOVE(&iobj->link);
- }
- }
-
- /*
- * dup
- * setlocal x, y
- * dup
- * setlocal x, y
- * =>
- * dup
- * setlocal x, y
- */
- else if (IS_NEXT_INSN_ID(set1, dup) &&
- IS_NEXT_INSN_ID(set1->next, setlocal)) {
- set2 = set1->next->next;
- if (OPERAND_AT(set1, 0) == OPERAND_AT(set2, 0) &&
- OPERAND_AT(set1, 1) == OPERAND_AT(set2, 1)) {
- ELEM_REMOVE(set1->next);
- ELEM_REMOVE(set2);
- }
- }
- }
+ if (IS_NEXT_INSN_ID(&iobj->link, setlocal)) {
+ LINK_ELEMENT *set1 = iobj->link.next, *set2 = NULL;
+ if (IS_NEXT_INSN_ID(set1, setlocal)) {
+ set2 = set1->next;
+ if (OPERAND_AT(set1, 0) == OPERAND_AT(set2, 0) &&
+ OPERAND_AT(set1, 1) == OPERAND_AT(set2, 1)) {
+ ELEM_REMOVE(set1);
+ ELEM_REMOVE(&iobj->link);
+ }
+ }
+ else if (IS_NEXT_INSN_ID(set1, dup) &&
+ IS_NEXT_INSN_ID(set1->next, setlocal)) {
+ set2 = set1->next->next;
+ if (OPERAND_AT(set1, 0) == OPERAND_AT(set2, 0) &&
+ OPERAND_AT(set1, 1) == OPERAND_AT(set2, 1)) {
+ ELEM_REMOVE(set1->next);
+ ELEM_REMOVE(set2);
+ }
+ }
+ }
}
- /*
- * getlocal x, y
- * dup
- * setlocal x, y
- * =>
- * dup
- */
if (IS_INSN_ID(iobj, getlocal)) {
- LINK_ELEMENT *niobj = &iobj->link;
- if (IS_NEXT_INSN_ID(niobj, dup)) {
- niobj = niobj->next;
- }
- if (IS_NEXT_INSN_ID(niobj, setlocal)) {
- LINK_ELEMENT *set1 = niobj->next;
- if (OPERAND_AT(iobj, 0) == OPERAND_AT(set1, 0) &&
- OPERAND_AT(iobj, 1) == OPERAND_AT(set1, 1)) {
- ELEM_REMOVE(set1);
- ELEM_REMOVE(niobj);
- }
- }
- }
-
- /*
- * opt_invokebuiltin_delegate
- * trace
- * leave
- * =>
- * opt_invokebuiltin_delegate_leave
- * trace
- * leave
- */
- if (IS_INSN_ID(iobj, opt_invokebuiltin_delegate)) {
- if (IS_TRACE(iobj->link.next)) {
- if (IS_NEXT_INSN_ID(iobj->link.next, leave)) {
- iobj->insn_id = BIN(opt_invokebuiltin_delegate_leave);
- const struct rb_builtin_function *bf = (const struct rb_builtin_function *)iobj->operands[0];
- if (iobj == (INSN *)list && bf->argc == 0 && (iseq->body->builtin_attrs & BUILTIN_ATTR_LEAF)) {
- iseq->body->builtin_attrs |= BUILTIN_ATTR_SINGLE_NOARG_INLINE;
- }
- }
- }
- }
-
- /*
- * getblockparam
- * branchif / branchunless
- * =>
- * getblockparamproxy
- * branchif / branchunless
- */
- if (IS_INSN_ID(iobj, getblockparam)) {
- if (IS_NEXT_INSN_ID(&iobj->link, branchif) || IS_NEXT_INSN_ID(&iobj->link, branchunless)) {
- iobj->insn_id = BIN(getblockparamproxy);
- }
+ LINK_ELEMENT *niobj = &iobj->link;
+ if (IS_NEXT_INSN_ID(niobj, dup)) {
+ niobj = niobj->next;
+ }
+ if (IS_NEXT_INSN_ID(niobj, setlocal)) {
+ LINK_ELEMENT *set1 = niobj->next;
+ if (OPERAND_AT(iobj, 0) == OPERAND_AT(set1, 0) &&
+ OPERAND_AT(iobj, 1) == OPERAND_AT(set1, 1)) {
+ ELEM_REMOVE(set1);
+ ELEM_REMOVE(niobj);
+ }
+ }
}
return COMPILE_OK;
@@ -3681,14 +2941,15 @@ insn_set_specialized_instruction(rb_iseq_t *iseq, INSN *iobj, int insn_id)
{
iobj->insn_id = insn_id;
iobj->operand_size = insn_len(insn_id) - 1;
- iobj->insn_info.events |= RUBY_EVENT_C_CALL | RUBY_EVENT_C_RETURN;
if (insn_id == BIN(opt_neq)) {
- VALUE original_ci = iobj->operands[0];
- iobj->operand_size = 2;
- iobj->operands = compile_data_calloc2(iseq, iobj->operand_size, sizeof(VALUE));
- iobj->operands[0] = (VALUE)new_callinfo(iseq, idEq, 1, 0, NULL, FALSE);
- iobj->operands[1] = original_ci;
+ VALUE *old_operands = iobj->operands;
+ iobj->operand_size = 4;
+ iobj->operands = (VALUE *)compile_data_alloc(iseq, iobj->operand_size * sizeof(VALUE));
+ iobj->operands[0] = old_operands[0];
+ iobj->operands[1] = Qfalse; /* CALL_CACHE */
+ iobj->operands[2] = (VALUE)new_callinfo(iseq, idEq, 1, 0, NULL, FALSE);
+ iobj->operands[3] = Qfalse; /* CALL_CACHE */
}
return COMPILE_OK;
@@ -3698,82 +2959,73 @@ static int
iseq_specialized_instruction(rb_iseq_t *iseq, INSN *iobj)
{
if (IS_INSN_ID(iobj, newarray) && iobj->link.next &&
- IS_INSN(iobj->link.next)) {
- /*
- * [a, b, ...].max/min -> a, b, c, opt_newarray_max/min
- */
- INSN *niobj = (INSN *)iobj->link.next;
- if (IS_INSN_ID(niobj, send)) {
- const struct rb_callinfo *ci = (struct rb_callinfo *)OPERAND_AT(niobj, 0);
- if ((vm_ci_flag(ci) & VM_CALL_ARGS_SIMPLE) && vm_ci_argc(ci) == 0) {
- switch (vm_ci_mid(ci)) {
- case idMax:
- case idMin:
- case idHash:
- {
- rb_num_t num = (rb_num_t)iobj->operands[0];
- iobj->insn_id = BIN(opt_newarray_send);
- iobj->operands = compile_data_calloc2(iseq, insn_len(iobj->insn_id) - 1, sizeof(VALUE));
- iobj->operands[0] = (VALUE)num;
- iobj->operands[1] = (VALUE)rb_id2sym(vm_ci_mid(ci));
- iobj->operand_size = insn_len(iobj->insn_id) - 1;
- ELEM_REMOVE(&niobj->link);
- return COMPILE_OK;
- }
- }
- }
- }
+ IS_INSN(iobj->link.next)) {
+ /*
+ * [a, b, ...].max/min -> a, b, c, opt_newarray_max/min
+ */
+ INSN *niobj = (INSN *)iobj->link.next;
+ if (IS_INSN_ID(niobj, send)) {
+ struct rb_call_info *ci = (struct rb_call_info *)OPERAND_AT(niobj, 0);
+ if ((ci->flag & VM_CALL_ARGS_SIMPLE) && ci->orig_argc == 0) {
+ switch (ci->mid) {
+ case idMax:
+ iobj->insn_id = BIN(opt_newarray_max);
+ ELEM_REMOVE(&niobj->link);
+ return COMPILE_OK;
+ case idMin:
+ iobj->insn_id = BIN(opt_newarray_min);
+ ELEM_REMOVE(&niobj->link);
+ return COMPILE_OK;
+ }
+ }
+ }
}
if (IS_INSN_ID(iobj, send)) {
- const struct rb_callinfo *ci = (struct rb_callinfo *)OPERAND_AT(iobj, 0);
- const rb_iseq_t *blockiseq = (rb_iseq_t *)OPERAND_AT(iobj, 1);
+ struct rb_call_info *ci = (struct rb_call_info *)OPERAND_AT(iobj, 0);
+ const rb_iseq_t *blockiseq = (rb_iseq_t *)OPERAND_AT(iobj, 2);
#define SP_INSN(opt) insn_set_specialized_instruction(iseq, iobj, BIN(opt_##opt))
- if (vm_ci_flag(ci) & VM_CALL_ARGS_SIMPLE) {
- switch (vm_ci_argc(ci)) {
- case 0:
- switch (vm_ci_mid(ci)) {
- case idLength: SP_INSN(length); return COMPILE_OK;
- case idSize: SP_INSN(size); return COMPILE_OK;
- case idEmptyP: SP_INSN(empty_p);return COMPILE_OK;
- case idNilP: SP_INSN(nil_p); return COMPILE_OK;
- case idSucc: SP_INSN(succ); return COMPILE_OK;
- case idNot: SP_INSN(not); return COMPILE_OK;
- }
- break;
- case 1:
- switch (vm_ci_mid(ci)) {
- case idPLUS: SP_INSN(plus); return COMPILE_OK;
- case idMINUS: SP_INSN(minus); return COMPILE_OK;
- case idMULT: SP_INSN(mult); return COMPILE_OK;
- case idDIV: SP_INSN(div); return COMPILE_OK;
- case idMOD: SP_INSN(mod); return COMPILE_OK;
- case idEq: SP_INSN(eq); return COMPILE_OK;
- case idNeq: SP_INSN(neq); return COMPILE_OK;
- case idEqTilde:SP_INSN(regexpmatch2);return COMPILE_OK;
- case idLT: SP_INSN(lt); return COMPILE_OK;
- case idLE: SP_INSN(le); return COMPILE_OK;
- case idGT: SP_INSN(gt); return COMPILE_OK;
- case idGE: SP_INSN(ge); return COMPILE_OK;
- case idLTLT: SP_INSN(ltlt); return COMPILE_OK;
- case idAREF: SP_INSN(aref); return COMPILE_OK;
- case idAnd: SP_INSN(and); return COMPILE_OK;
- case idOr: SP_INSN(or); return COMPILE_OK;
- }
- break;
- case 2:
- switch (vm_ci_mid(ci)) {
- case idASET: SP_INSN(aset); return COMPILE_OK;
- }
- break;
- }
- }
-
- if ((vm_ci_flag(ci) & VM_CALL_ARGS_BLOCKARG) == 0 && blockiseq == NULL) {
- iobj->insn_id = BIN(opt_send_without_block);
- iobj->operand_size = insn_len(iobj->insn_id) - 1;
- }
+ if (ci->flag & VM_CALL_ARGS_SIMPLE) {
+ switch (ci->orig_argc) {
+ case 0:
+ switch (ci->mid) {
+ case idLength: SP_INSN(length); return COMPILE_OK;
+ case idSize: SP_INSN(size); return COMPILE_OK;
+ case idEmptyP: SP_INSN(empty_p);return COMPILE_OK;
+ case idSucc: SP_INSN(succ); return COMPILE_OK;
+ case idNot: SP_INSN(not); return COMPILE_OK;
+ }
+ break;
+ case 1:
+ switch (ci->mid) {
+ case idPLUS: SP_INSN(plus); return COMPILE_OK;
+ case idMINUS: SP_INSN(minus); return COMPILE_OK;
+ case idMULT: SP_INSN(mult); return COMPILE_OK;
+ case idDIV: SP_INSN(div); return COMPILE_OK;
+ case idMOD: SP_INSN(mod); return COMPILE_OK;
+ case idEq: SP_INSN(eq); return COMPILE_OK;
+ case idNeq: SP_INSN(neq); return COMPILE_OK;
+ case idLT: SP_INSN(lt); return COMPILE_OK;
+ case idLE: SP_INSN(le); return COMPILE_OK;
+ case idGT: SP_INSN(gt); return COMPILE_OK;
+ case idGE: SP_INSN(ge); return COMPILE_OK;
+ case idLTLT: SP_INSN(ltlt); return COMPILE_OK;
+ case idAREF: SP_INSN(aref); return COMPILE_OK;
+ }
+ break;
+ case 2:
+ switch (ci->mid) {
+ case idASET: SP_INSN(aset); return COMPILE_OK;
+ }
+ break;
+ }
+ }
+
+ if ((ci->flag & VM_CALL_ARGS_BLOCKARG) == 0 && blockiseq == NULL) {
+ iobj->insn_id = BIN(opt_send_without_block);
+ iobj->operand_size = insn_len(iobj->insn_id) - 1;
+ }
}
#undef SP_INSN
@@ -3783,17 +3035,17 @@ iseq_specialized_instruction(rb_iseq_t *iseq, INSN *iobj)
static inline int
tailcallable_p(rb_iseq_t *iseq)
{
- switch (ISEQ_BODY(iseq)->type) {
+ switch (iseq->body->type) {
case ISEQ_TYPE_TOP:
case ISEQ_TYPE_EVAL:
case ISEQ_TYPE_MAIN:
- /* not tail callable because cfp will be over popped */
+ /* not tail callable because cfp will be over popped */
case ISEQ_TYPE_RESCUE:
case ISEQ_TYPE_ENSURE:
- /* rescue block can't tail call because of errinfo */
- return FALSE;
+ /* rescue block can't tail call because of errinfo */
+ return FALSE;
default:
- return TRUE;
+ return TRUE;
}
}
@@ -3803,7 +3055,7 @@ iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
LINK_ELEMENT *list;
const int do_peepholeopt = ISEQ_COMPILE_DATA(iseq)->option->peephole_optimization;
const int do_tailcallopt = tailcallable_p(iseq) &&
- ISEQ_COMPILE_DATA(iseq)->option->tailcall_optimization;
+ ISEQ_COMPILE_DATA(iseq)->option->tailcall_optimization;
const int do_si = ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction;
const int do_ou = ISEQ_COMPILE_DATA(iseq)->option->operands_unification;
int rescue_level = 0;
@@ -3811,50 +3063,30 @@ iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
list = FIRST_ELEMENT(anchor);
- int do_block_optimization = 0;
-
- if (ISEQ_BODY(iseq)->type == ISEQ_TYPE_BLOCK && !ISEQ_COMPILE_DATA(iseq)->catch_except_p) {
- do_block_optimization = 1;
- }
-
while (list) {
- if (IS_INSN(list)) {
- if (do_peepholeopt) {
- iseq_peephole_optimize(iseq, list, tailcallopt);
- }
- if (do_si) {
- iseq_specialized_instruction(iseq, (INSN *)list);
- }
- if (do_ou) {
- insn_operands_unification((INSN *)list);
- }
-
- if (do_block_optimization) {
- INSN * item = (INSN *)list;
- if (IS_INSN_ID(item, jump)) {
- do_block_optimization = 0;
- }
- }
- }
- if (IS_LABEL(list)) {
- switch (((LABEL *)list)->rescued) {
- case LABEL_RESCUE_BEG:
- rescue_level++;
- tailcallopt = FALSE;
- break;
- case LABEL_RESCUE_END:
- if (!--rescue_level) tailcallopt = do_tailcallopt;
- break;
- }
- }
- list = list->next;
- }
-
- if (do_block_optimization) {
- LINK_ELEMENT * le = FIRST_ELEMENT(anchor)->next;
- if (IS_INSN(le) && IS_INSN_ID((INSN *)le, nop)) {
- ELEM_REMOVE(le);
- }
+ if (IS_INSN(list)) {
+ if (do_peepholeopt) {
+ iseq_peephole_optimize(iseq, list, tailcallopt);
+ }
+ if (do_si) {
+ iseq_specialized_instruction(iseq, (INSN *)list);
+ }
+ if (do_ou) {
+ insn_operands_unification((INSN *)list);
+ }
+ }
+ if (IS_LABEL(list)) {
+ switch (((LABEL *)list)->rescued) {
+ case LABEL_RESCUE_BEG:
+ rescue_level++;
+ tailcallopt = FALSE;
+ break;
+ case LABEL_RESCUE_END:
+ if (!--rescue_level) tailcallopt = do_tailcallopt;
+ break;
+ }
+ }
+ list = list->next;
}
return COMPILE_OK;
}
@@ -3862,7 +3094,7 @@ iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
#if OPT_INSTRUCTIONS_UNIFICATION
static INSN *
new_unified_insn(rb_iseq_t *iseq,
- int insn_id, int size, LINK_ELEMENT *seq_list)
+ int insn_id, int size, LINK_ELEMENT *seq_list)
{
INSN *iobj = 0;
LINK_ELEMENT *list = seq_list;
@@ -3872,26 +3104,26 @@ new_unified_insn(rb_iseq_t *iseq,
/* count argc */
for (i = 0; i < size; i++) {
- iobj = (INSN *)list;
- argc += iobj->operand_size;
- list = list->next;
+ iobj = (INSN *)list;
+ argc += iobj->operand_size;
+ list = list->next;
}
if (argc > 0) {
- ptr = operands = compile_data_alloc2(iseq, sizeof(VALUE), argc);
+ ptr = operands =
+ (VALUE *)compile_data_alloc(iseq, sizeof(VALUE) * argc);
}
/* copy operands */
list = seq_list;
for (i = 0; i < size; i++) {
- iobj = (INSN *)list;
- MEMCPY(ptr, iobj->operands, VALUE, iobj->operand_size);
- ptr += iobj->operand_size;
- list = list->next;
+ iobj = (INSN *)list;
+ MEMCPY(ptr, iobj->operands, VALUE, iobj->operand_size);
+ ptr += iobj->operand_size;
+ list = list->next;
}
- NODE dummy_line_node = generate_dummy_line_node(iobj->insn_info.line_no, iobj->insn_info.node_id);
- return new_insn_core(iseq, &dummy_line_node, insn_id, argc, operands);
+ return new_insn_core(iseq, iobj->insn_info.line_no, insn_id, argc, operands);
}
#endif
@@ -3911,41 +3143,41 @@ iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
list = FIRST_ELEMENT(anchor);
while (list) {
- if (IS_INSN(list)) {
- iobj = (INSN *)list;
- id = iobj->insn_id;
- if (unified_insns_data[id] != 0) {
- const int *const *entry = unified_insns_data[id];
- for (j = 1; j < (intptr_t)entry[0]; j++) {
- const int *unified = entry[j];
- LINK_ELEMENT *li = list->next;
- for (k = 2; k < unified[1]; k++) {
- if (!IS_INSN(li) ||
- ((INSN *)li)->insn_id != unified[k]) {
- goto miss;
- }
- li = li->next;
- }
- /* matched */
- niobj =
- new_unified_insn(iseq, unified[0], unified[1] - 1,
- list);
-
- /* insert to list */
- niobj->link.prev = (LINK_ELEMENT *)iobj->link.prev;
- niobj->link.next = li;
- if (li) {
- li->prev = (LINK_ELEMENT *)niobj;
- }
-
- list->prev->next = (LINK_ELEMENT *)niobj;
- list = (LINK_ELEMENT *)niobj;
- break;
- miss:;
- }
- }
- }
- list = list->next;
+ if (IS_INSN(list)) {
+ iobj = (INSN *)list;
+ id = iobj->insn_id;
+ if (unified_insns_data[id] != 0) {
+ const int *const *entry = unified_insns_data[id];
+ for (j = 1; j < (intptr_t)entry[0]; j++) {
+ const int *unified = entry[j];
+ LINK_ELEMENT *li = list->next;
+ for (k = 2; k < unified[1]; k++) {
+ if (!IS_INSN(li) ||
+ ((INSN *)li)->insn_id != unified[k]) {
+ goto miss;
+ }
+ li = li->next;
+ }
+ /* matched */
+ niobj =
+ new_unified_insn(iseq, unified[0], unified[1] - 1,
+ list);
+
+ /* insert to list */
+ niobj->link.prev = (LINK_ELEMENT *)iobj->link.prev;
+ niobj->link.next = li;
+ if (li) {
+ li->prev = (LINK_ELEMENT *)niobj;
+ }
+
+ list->prev->next = (LINK_ELEMENT *)niobj;
+ list = (LINK_ELEMENT *)niobj;
+ break;
+ miss:;
+ }
+ }
+ }
+ list = list->next;
}
#endif
return COMPILE_OK;
@@ -3969,28 +3201,28 @@ insn_set_sc_state(rb_iseq_t *iseq, const LINK_ELEMENT *anchor, INSN *iobj, int s
nstate = SC_NEXT(iobj->insn_id);
if (insn_id == BIN(jump) ||
- insn_id == BIN(branchif) || insn_id == BIN(branchunless)) {
- LABEL *lobj = (LABEL *)OPERAND_AT(iobj, 0);
-
- if (lobj->sc_state != 0) {
- if (lobj->sc_state != nstate) {
- BADINSN_DUMP(anchor, iobj, lobj);
- COMPILE_ERROR(iseq, iobj->insn_info.line_no,
- "insn_set_sc_state error: %d at "LABEL_FORMAT
- ", %d expected\n",
- lobj->sc_state, lobj->label_no, nstate);
- return COMPILE_NG;
- }
- }
- else {
- lobj->sc_state = nstate;
- }
- if (insn_id == BIN(jump)) {
- nstate = SCS_XX;
- }
+ insn_id == BIN(branchif) || insn_id == BIN(branchunless)) {
+ LABEL *lobj = (LABEL *)OPERAND_AT(iobj, 0);
+
+ if (lobj->sc_state != 0) {
+ if (lobj->sc_state != nstate) {
+ BADINSN_DUMP(anchor, iobj, lobj);
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "insn_set_sc_state error: %d at "LABEL_FORMAT
+ ", %d expected\n",
+ lobj->sc_state, lobj->label_no, nstate);
+ return COMPILE_NG;
+ }
+ }
+ else {
+ lobj->sc_state = nstate;
+ }
+ if (insn_id == BIN(jump)) {
+ nstate = SCS_XX;
+ }
}
else if (insn_id == BIN(leave)) {
- nstate = SCS_XX;
+ nstate = SCS_XX;
}
return nstate;
@@ -4000,12 +3232,12 @@ static int
label_set_sc_state(LABEL *lobj, int state)
{
if (lobj->sc_state != 0) {
- if (lobj->sc_state != state) {
- state = lobj->sc_state;
- }
+ if (lobj->sc_state != state) {
+ state = lobj->sc_state;
+ }
}
else {
- lobj->sc_state = state;
+ lobj->sc_state = state;
}
return state;
@@ -4029,84 +3261,83 @@ iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
/* for each list element */
while (list) {
redo_point:
- switch (list->type) {
- case ISEQ_ELEMENT_INSN:
- {
- INSN *iobj = (INSN *)list;
- insn_id = iobj->insn_id;
-
- /* dump_disasm_list(list); */
-
- switch (insn_id) {
- case BIN(nop):
- {
- /* exception merge point */
- if (state != SCS_AX) {
- NODE dummy_line_node = generate_dummy_line_node(0, -1);
- INSN *rpobj =
- new_insn_body(iseq, &dummy_line_node, BIN(reput), 0);
-
- /* replace this insn */
- ELEM_REPLACE(list, (LINK_ELEMENT *)rpobj);
- list = (LINK_ELEMENT *)rpobj;
- goto redo_point;
- }
- break;
- }
- case BIN(swap):
- {
- if (state == SCS_AB || state == SCS_BA) {
- state = (state == SCS_AB ? SCS_BA : SCS_AB);
-
- ELEM_REMOVE(list);
- list = list->next;
- goto redo_point;
- }
- break;
- }
- case BIN(pop):
- {
- switch (state) {
- case SCS_AX:
- case SCS_BX:
- state = SCS_XX;
- break;
- case SCS_AB:
- state = SCS_AX;
- break;
- case SCS_BA:
- state = SCS_BX;
- break;
- case SCS_XX:
- goto normal_insn;
- default:
- COMPILE_ERROR(iseq, iobj->insn_info.line_no,
- "unreachable");
- return COMPILE_NG;
- }
- /* remove useless pop */
- ELEM_REMOVE(list);
- list = list->next;
- goto redo_point;
- }
- default:;
- /* none */
- } /* end of switch */
- normal_insn:
- state = insn_set_sc_state(iseq, anchor, iobj, state);
- break;
- }
- case ISEQ_ELEMENT_LABEL:
- {
- LABEL *lobj;
- lobj = (LABEL *)list;
-
- state = label_set_sc_state(lobj, state);
- }
- default:
- break;
- }
- list = list->next;
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ INSN *iobj = (INSN *)list;
+ insn_id = iobj->insn_id;
+
+ /* dump_disasm_list(list); */
+
+ switch (insn_id) {
+ case BIN(nop):
+ {
+ /* exception merge point */
+ if (state != SCS_AX) {
+ INSN *rpobj =
+ new_insn_body(iseq, 0, BIN(reput), 0);
+
+ /* replace this insn */
+ ELEM_REPLACE(list, (LINK_ELEMENT *)rpobj);
+ list = (LINK_ELEMENT *)rpobj;
+ goto redo_point;
+ }
+ break;
+ }
+ case BIN(swap):
+ {
+ if (state == SCS_AB || state == SCS_BA) {
+ state = (state == SCS_AB ? SCS_BA : SCS_AB);
+
+ ELEM_REMOVE(list);
+ list = list->next;
+ goto redo_point;
+ }
+ break;
+ }
+ case BIN(pop):
+ {
+ switch (state) {
+ case SCS_AX:
+ case SCS_BX:
+ state = SCS_XX;
+ break;
+ case SCS_AB:
+ state = SCS_AX;
+ break;
+ case SCS_BA:
+ state = SCS_BX;
+ break;
+ case SCS_XX:
+ goto normal_insn;
+ default:
+ COMPILE_ERROR(iseq, iobj->insn_info.line_no,
+ "unreachable");
+ return COMPILE_NG;
+ }
+ /* remove useless pop */
+ ELEM_REMOVE(list);
+ list = list->next;
+ goto redo_point;
+ }
+ default:;
+ /* none */
+ } /* end of switch */
+ normal_insn:
+ state = insn_set_sc_state(iseq, anchor, iobj, state);
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ LABEL *lobj;
+ lobj = (LABEL *)list;
+
+ state = label_set_sc_state(lobj, state);
+ }
+ default:
+ break;
+ }
+ list = list->next;
}
#endif
return COMPILE_OK;
@@ -4118,20 +3349,20 @@ all_string_result_p(const NODE *node)
if (!node) return FALSE;
switch (nd_type(node)) {
case NODE_STR: case NODE_DSTR:
- return TRUE;
+ return TRUE;
case NODE_IF: case NODE_UNLESS:
- if (!node->nd_body || !node->nd_else) return FALSE;
- if (all_string_result_p(node->nd_body))
- return all_string_result_p(node->nd_else);
- return FALSE;
+ if (!node->nd_body || !node->nd_else) return FALSE;
+ if (all_string_result_p(node->nd_body))
+ return all_string_result_p(node->nd_else);
+ return FALSE;
case NODE_AND: case NODE_OR:
- if (!node->nd_2nd)
- return all_string_result_p(node->nd_1st);
- if (!all_string_result_p(node->nd_1st))
- return FALSE;
- return all_string_result_p(node->nd_2nd);
+ if (!node->nd_2nd)
+ return all_string_result_p(node->nd_1st);
+ if (!all_string_result_p(node->nd_1st))
+ return FALSE;
+ return all_string_result_p(node->nd_2nd);
default:
- return FALSE;
+ return FALSE;
}
}
@@ -4145,35 +3376,33 @@ compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *cons
debugp_param("nd_lit", lit);
if (!NIL_P(lit)) {
- cnt++;
- if (!RB_TYPE_P(lit, T_STRING)) {
- COMPILE_ERROR(ERROR_ARGS "dstr: must be string: %s",
- rb_builtin_type_name(TYPE(lit)));
- return COMPILE_NG;
- }
- lit = rb_fstring(lit);
- ADD_INSN1(ret, node, putobject, lit);
- RB_OBJ_WRITTEN(iseq, Qundef, lit);
- if (RSTRING_LEN(lit) == 0) first_lit = LAST_ELEMENT(ret);
+ cnt++;
+ if (!RB_TYPE_P(lit, T_STRING)) {
+ COMPILE_ERROR(ERROR_ARGS "dstr: must be string: %s",
+ rb_builtin_type_name(TYPE(lit)));
+ return COMPILE_NG;
+ }
+ lit = freeze_literal(iseq, lit);
+ ADD_INSN1(ret, nd_line(node), putobject, lit);
+ if (RSTRING_LEN(lit) == 0) first_lit = LAST_ELEMENT(ret);
}
while (list) {
- const NODE *const head = list->nd_head;
- if (nd_type_p(head, NODE_STR)) {
- lit = rb_fstring(head->nd_lit);
- ADD_INSN1(ret, head, putobject, lit);
- RB_OBJ_WRITTEN(iseq, Qundef, lit);
- lit = Qnil;
- }
- else {
- CHECK(COMPILE(ret, "each string", head));
- }
- cnt++;
- list = list->nd_next;
+ const NODE *const head = list->nd_head;
+ if (nd_type(head) == NODE_STR) {
+ lit = freeze_literal(iseq, head->nd_lit);
+ ADD_INSN1(ret, nd_line(head), putobject, lit);
+ lit = Qnil;
+ }
+ else {
+ CHECK(COMPILE(ret, "each string", head));
+ }
+ cnt++;
+ list = list->nd_next;
}
if (NIL_P(lit) && first_lit) {
- ELEM_REMOVE(first_lit);
- --cnt;
+ ELEM_REMOVE(first_lit);
+ --cnt;
}
*cntp = cnt;
@@ -4181,32 +3410,11 @@ compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *cons
}
static int
-compile_block(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, int popped)
-{
- while (node && nd_type_p(node, NODE_BLOCK)) {
- CHECK(COMPILE_(ret, "BLOCK body", node->nd_head,
- (node->nd_next ? 1 : popped)));
- node = node->nd_next;
- }
- if (node) {
- CHECK(COMPILE_(ret, "BLOCK next", node->nd_next, popped));
- }
- return COMPILE_OK;
-}
-
-static int
compile_dstr(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node)
{
int cnt;
- if (!node->nd_next) {
- VALUE lit = rb_fstring(node->nd_lit);
- ADD_INSN1(ret, node, putstring, lit);
- RB_OBJ_WRITTEN(iseq, Qundef, lit);
- }
- else {
- CHECK(compile_dstr_fragments(iseq, ret, node, &cnt));
- ADD_INSN1(ret, node, concatstrings, INT2FIX(cnt));
- }
+ CHECK(compile_dstr_fragments(iseq, ret, node, &cnt));
+ ADD_INSN1(ret, nd_line(node), concatstrings, INT2FIX(cnt));
return COMPILE_OK;
}
@@ -4215,966 +3423,479 @@ compile_dregx(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node)
{
int cnt;
CHECK(compile_dstr_fragments(iseq, ret, node, &cnt));
- ADD_INSN2(ret, node, toregexp, INT2FIX(node->nd_cflag), INT2FIX(cnt));
+ ADD_INSN2(ret, nd_line(node), toregexp, INT2FIX(node->nd_cflag), INT2FIX(cnt));
return COMPILE_OK;
}
static int
compile_flip_flop(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int again,
- LABEL *then_label, LABEL *else_label)
+ LABEL *then_label, LABEL *else_label)
{
const int line = nd_line(node);
LABEL *lend = NEW_LABEL(line);
- rb_num_t cnt = ISEQ_FLIP_CNT_INCREMENT(ISEQ_BODY(iseq)->local_iseq)
- + VM_SVAR_FLIPFLOP_START;
+ rb_num_t cnt = ISEQ_FLIP_CNT_INCREMENT(iseq->body->local_iseq)
+ + VM_SVAR_FLIPFLOP_START;
VALUE key = INT2FIX(cnt);
- ADD_INSN2(ret, node, getspecial, key, INT2FIX(0));
- ADD_INSNL(ret, node, branchif, lend);
+ ADD_INSN2(ret, line, getspecial, key, INT2FIX(0));
+ ADD_INSNL(ret, line, branchif, lend);
/* *flip == 0 */
CHECK(COMPILE(ret, "flip2 beg", node->nd_beg));
- ADD_INSNL(ret, node, branchunless, else_label);
- ADD_INSN1(ret, node, putobject, Qtrue);
- ADD_INSN1(ret, node, setspecial, key);
+ ADD_INSNL(ret, line, branchunless, else_label);
+ ADD_INSN1(ret, line, putobject, Qtrue);
+ ADD_INSN1(ret, line, setspecial, key);
if (!again) {
- ADD_INSNL(ret, node, jump, then_label);
+ ADD_INSNL(ret, line, jump, then_label);
}
/* *flip == 1 */
ADD_LABEL(ret, lend);
CHECK(COMPILE(ret, "flip2 end", node->nd_end));
- ADD_INSNL(ret, node, branchunless, then_label);
- ADD_INSN1(ret, node, putobject, Qfalse);
- ADD_INSN1(ret, node, setspecial, key);
- ADD_INSNL(ret, node, jump, then_label);
+ ADD_INSNL(ret, line, branchunless, then_label);
+ ADD_INSN1(ret, line, putobject, Qfalse);
+ ADD_INSN1(ret, line, setspecial, key);
+ ADD_INSNL(ret, line, jump, then_label);
return COMPILE_OK;
}
static int
compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *cond,
- LABEL *then_label, LABEL *else_label);
-
-static int
-compile_logical(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *cond,
- LABEL *then_label, LABEL *else_label)
-{
- DECL_ANCHOR(seq);
- INIT_ANCHOR(seq);
- LABEL *label = NEW_LABEL(nd_line(cond));
- if (!then_label) then_label = label;
- else if (!else_label) else_label = label;
-
- CHECK(compile_branch_condition(iseq, seq, cond, then_label, else_label));
-
- if (LIST_INSN_SIZE_ONE(seq)) {
- INSN *insn = (INSN *)ELEM_FIRST_INSN(FIRST_ELEMENT(seq));
- if (insn->insn_id == BIN(jump) && (LABEL *)(insn->operands[0]) == label)
- return COMPILE_OK;
- }
- if (!label->refcnt) {
- ADD_INSN(seq, cond, putnil);
- }
- else {
- ADD_LABEL(seq, label);
- }
- ADD_SEQ(ret, seq);
- return COMPILE_OK;
-}
-
-static int
-compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *cond,
- LABEL *then_label, LABEL *else_label)
+ LABEL *then_label, LABEL *else_label)
{
again:
switch (nd_type(cond)) {
case NODE_AND:
- CHECK(compile_logical(iseq, ret, cond->nd_1st, NULL, else_label));
- cond = cond->nd_2nd;
- goto again;
+ {
+ LABEL *label = NEW_LABEL(nd_line(cond));
+ CHECK(compile_branch_condition(iseq, ret, cond->nd_1st, label,
+ else_label));
+ if (!label->refcnt) break;
+ ADD_LABEL(ret, label);
+ cond = cond->nd_2nd;
+ goto again;
+ }
case NODE_OR:
- CHECK(compile_logical(iseq, ret, cond->nd_1st, then_label, NULL));
- cond = cond->nd_2nd;
- goto again;
+ {
+ LABEL *label = NEW_LABEL(nd_line(cond));
+ CHECK(compile_branch_condition(iseq, ret, cond->nd_1st, then_label,
+ label));
+ if (!label->refcnt) break;
+ ADD_LABEL(ret, label);
+ cond = cond->nd_2nd;
+ goto again;
+ }
case NODE_LIT: /* NODE_LIT is always true */
case NODE_TRUE:
case NODE_STR:
- case NODE_ZLIST:
+ case NODE_ZARRAY:
case NODE_LAMBDA:
- /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */
- ADD_INSNL(ret, cond, jump, then_label);
- return COMPILE_OK;
+ /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */
+ ADD_INSNL(ret, nd_line(cond), jump, then_label);
+ break;
case NODE_FALSE:
case NODE_NIL:
- /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */
- ADD_INSNL(ret, cond, jump, else_label);
- return COMPILE_OK;
- case NODE_LIST:
- case NODE_ARGSCAT:
- case NODE_DREGX:
- case NODE_DSTR:
- CHECK(COMPILE_POPPED(ret, "branch condition", cond));
- ADD_INSNL(ret, cond, jump, then_label);
- return COMPILE_OK;
+ /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */
+ ADD_INSNL(ret, nd_line(cond), jump, else_label);
+ break;
case NODE_FLIP2:
- CHECK(compile_flip_flop(iseq, ret, cond, TRUE, then_label, else_label));
- return COMPILE_OK;
+ CHECK(compile_flip_flop(iseq, ret, cond, TRUE, then_label, else_label));
+ break;
case NODE_FLIP3:
- CHECK(compile_flip_flop(iseq, ret, cond, FALSE, then_label, else_label));
- return COMPILE_OK;
+ CHECK(compile_flip_flop(iseq, ret, cond, FALSE, then_label, else_label));
+ break;
case NODE_DEFINED:
- CHECK(compile_defined_expr(iseq, ret, cond, Qfalse));
- break;
+ CHECK(compile_defined_expr(iseq, ret, cond, Qfalse));
+ goto branch;
default:
- {
- DECL_ANCHOR(cond_seq);
- INIT_ANCHOR(cond_seq);
-
- CHECK(COMPILE(cond_seq, "branch condition", cond));
-
- if (LIST_INSN_SIZE_ONE(cond_seq)) {
- INSN *insn = (INSN *)ELEM_FIRST_INSN(FIRST_ELEMENT(cond_seq));
- if (insn->insn_id == BIN(putobject)) {
- if (RTEST(insn->operands[0])) {
- ADD_INSNL(ret, cond, jump, then_label);
- // maybe unreachable
- return COMPILE_OK;
- }
- else {
- ADD_INSNL(ret, cond, jump, else_label);
- return COMPILE_OK;
- }
- }
- }
- ADD_SEQ(ret, cond_seq);
- }
- break;
+ CHECK(COMPILE(ret, "branch condition", cond));
+ branch:
+ ADD_INSNL(ret, nd_line(cond), branchunless, else_label);
+ ADD_INSNL(ret, nd_line(cond), jump, then_label);
+ break;
}
-
- ADD_INSNL(ret, cond, branchunless, else_label);
- ADD_INSNL(ret, cond, jump, then_label);
return COMPILE_OK;
}
-#define HASH_BRACE 1
-
static int
-keyword_node_p(const NODE *const node)
-{
- return nd_type_p(node, NODE_HASH) && (node->nd_brace & HASH_BRACE) != HASH_BRACE;
-}
-
-static int
-compile_keyword_arg(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
- const NODE *const root_node,
- struct rb_callinfo_kwarg **const kw_arg_ptr,
- unsigned int *flag)
-{
- RUBY_ASSERT(nd_type_p(root_node, NODE_HASH));
- RUBY_ASSERT(kw_arg_ptr != NULL);
- RUBY_ASSERT(flag != NULL);
-
- if (root_node->nd_head && nd_type_p(root_node->nd_head, NODE_LIST)) {
- const NODE *node = root_node->nd_head;
- int seen_nodes = 0;
-
- while (node) {
- const NODE *key_node = node->nd_head;
- seen_nodes++;
-
- assert(nd_type_p(node, NODE_LIST));
- if (key_node && nd_type_p(key_node, NODE_LIT) && SYMBOL_P(key_node->nd_lit)) {
- /* can be keywords */
- }
- else {
- if (flag) {
- *flag |= VM_CALL_KW_SPLAT;
- if (seen_nodes > 1 || node->nd_next->nd_next) {
- /* A new hash will be created for the keyword arguments
- * in this case, so mark the method as passing mutable
- * keyword splat.
- */
- *flag |= VM_CALL_KW_SPLAT_MUT;
- }
- }
- return FALSE;
- }
- node = node->nd_next; /* skip value node */
- node = node->nd_next;
- }
-
- /* may be keywords */
- node = root_node->nd_head;
- {
- int len = (int)node->nd_alen / 2;
- struct rb_callinfo_kwarg *kw_arg =
- rb_xmalloc_mul_add(len, sizeof(VALUE), sizeof(struct rb_callinfo_kwarg));
- VALUE *keywords = kw_arg->keywords;
- int i = 0;
- kw_arg->keyword_len = len;
-
- *kw_arg_ptr = kw_arg;
-
- for (i=0; node != NULL; i++, node = node->nd_next->nd_next) {
- const NODE *key_node = node->nd_head;
- const NODE *val_node = node->nd_next->nd_head;
- keywords[i] = key_node->nd_lit;
- NO_CHECK(COMPILE(ret, "keyword values", val_node));
- }
- assert(i == len);
- return TRUE;
- }
+compile_array_keyword_arg(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
+ const NODE *const root_node,
+ struct rb_call_info_kw_arg **const kw_arg_ptr,
+ unsigned int *flag)
+{
+ if (kw_arg_ptr == NULL) return FALSE;
+
+ if (nd_type(root_node) == NODE_HASH && root_node->nd_head && nd_type(root_node->nd_head) == NODE_ARRAY) {
+ const NODE *node = root_node->nd_head;
+
+ while (node) {
+ const NODE *key_node = node->nd_head;
+
+ assert(nd_type(node) == NODE_ARRAY);
+ if (!key_node) {
+ if (flag && !root_node->nd_alen) *flag |= VM_CALL_KW_SPLAT;
+ return FALSE;
+ }
+ else if (nd_type(key_node) == NODE_LIT && RB_TYPE_P(key_node->nd_lit, T_SYMBOL)) {
+ /* can be keywords */
+ }
+ else {
+ return FALSE;
+ }
+ node = node->nd_next; /* skip value node */
+ node = node->nd_next;
+ }
+
+ /* may be keywords */
+ node = root_node->nd_head;
+ {
+ int len = (int)node->nd_alen / 2;
+ struct rb_call_info_kw_arg *kw_arg = (struct rb_call_info_kw_arg *)ruby_xmalloc(sizeof(struct rb_call_info_kw_arg) + sizeof(VALUE) * (len - 1));
+ VALUE *keywords = kw_arg->keywords;
+ int i = 0;
+ kw_arg->keyword_len = len;
+
+ *kw_arg_ptr = kw_arg;
+
+ for (i=0; node != NULL; i++, node = node->nd_next->nd_next) {
+ const NODE *key_node = node->nd_head;
+ const NODE *val_node = node->nd_next->nd_head;
+ keywords[i] = key_node->nd_lit;
+ COMPILE(ret, "keyword values", val_node);
+ }
+ assert(i == len);
+ return TRUE;
+ }
}
return FALSE;
}
-static int
-compile_args(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, NODE **kwnode_ptr)
-{
- int len = 0;
-
- for (; node; len++, node = node->nd_next) {
- if (CPDEBUG > 0) {
- EXPECT_NODE("compile_args", node, NODE_LIST, -1);
- }
-
- if (node->nd_next == NULL && keyword_node_p(node->nd_head)) { /* last node is kwnode */
- *kwnode_ptr = node->nd_head;
- }
- else {
- RUBY_ASSERT(!keyword_node_p(node->nd_head));
- NO_CHECK(COMPILE_(ret, "array element", node->nd_head, FALSE));
- }
- }
-
- return len;
-}
+enum compile_array_type_t {
+ COMPILE_ARRAY_TYPE_ARRAY,
+ COMPILE_ARRAY_TYPE_HASH,
+ COMPILE_ARRAY_TYPE_ARGS
+};
static inline int
-static_literal_node_p(const NODE *node, const rb_iseq_t *iseq)
+static_literal_node_p(const NODE *node)
{
+ node = node->nd_head;
switch (nd_type(node)) {
case NODE_LIT:
case NODE_NIL:
case NODE_TRUE:
case NODE_FALSE:
- return TRUE;
- case NODE_STR:
- return ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal;
+ return TRUE;
default:
- return FALSE;
+ return FALSE;
}
}
static inline VALUE
-static_literal_value(const NODE *node, rb_iseq_t *iseq)
+static_literal_value(const NODE *node)
{
+ node = node->nd_head;
switch (nd_type(node)) {
case NODE_NIL:
- return Qnil;
+ return Qnil;
case NODE_TRUE:
- return Qtrue;
+ return Qtrue;
case NODE_FALSE:
- return Qfalse;
- case NODE_STR:
- if (ISEQ_COMPILE_DATA(iseq)->option->debug_frozen_string_literal || RTEST(ruby_debug)) {
- VALUE lit;
- VALUE debug_info = rb_ary_new_from_args(2, rb_iseq_path(iseq), INT2FIX((int)nd_line(node)));
- lit = rb_str_dup(node->nd_lit);
- rb_ivar_set(lit, id_debug_created_info, rb_obj_freeze(debug_info));
- return rb_str_freeze(lit);
- }
- else {
- return rb_fstring(node->nd_lit);
- }
+ return Qfalse;
default:
- return node->nd_lit;
+ return node->nd_lit;
}
}
static int
-compile_array(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, int popped)
+compile_array(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node_root,
+ enum compile_array_type_t type, struct rb_call_info_kw_arg **keywords_ptr,
+ unsigned int *flag, int popped)
{
- const NODE *line_node = node;
-
- if (nd_type_p(node, NODE_ZLIST)) {
- if (!popped) {
- ADD_INSN1(ret, line_node, newarray, INT2FIX(0));
- }
- return 0;
- }
-
- EXPECT_NODE("compile_array", node, NODE_LIST, -1);
-
- if (popped) {
- for (; node; node = node->nd_next) {
- NO_CHECK(COMPILE_(ret, "array element", node->nd_head, popped));
- }
- return 1;
- }
-
- /* Compilation of an array literal.
- * The following code is essentially the same as:
- *
- * for (int count = 0; node; count++; node->nd_next) {
- * compile(node->nd_head);
- * }
- * ADD_INSN(newarray, count);
- *
- * However, there are three points.
- *
- * - The code above causes stack overflow for a big string literal.
- * The following limits the stack length up to max_stack_len.
- *
- * [x1,x2,...,x10000] =>
- * push x1 ; push x2 ; ...; push x256; newarray 256;
- * push x257; push x258; ...; push x512; newarray 256; concatarray;
- * push x513; push x514; ...; push x768; newarray 256; concatarray;
- * ...
- *
- * - Long subarray can be optimized by pre-allocating a hidden array.
- *
- * [1,2,3,...,100] =>
- * duparray [1,2,3,...,100]
- *
- * [x, 1,2,3,...,100, z] =>
- * push x; newarray 1;
- * putobject [1,2,3,...,100] (<- hidden array); concatarray;
- * push z; newarray 1; concatarray
- *
- * - If the last element is a keyword, newarraykwsplat should be emitted
- * to check and remove empty keyword arguments hash from array.
- * (Note: a keyword is NODE_HASH which is not static_literal_node_p.)
- *
- * [1,2,3,**kw] =>
- * putobject 1; putobject 2; putobject 3; push kw; newarraykwsplat
- */
-
- const int max_stack_len = 0x100;
- const int min_tmp_ary_len = 0x40;
- int stack_len = 0;
- int first_chunk = 1;
-
- /* Convert pushed elements to an array, and concatarray if needed */
-#define FLUSH_CHUNK(newarrayinsn) \
- if (stack_len) { \
- ADD_INSN1(ret, line_node, newarrayinsn, INT2FIX(stack_len)); \
- if (!first_chunk) ADD_INSN(ret, line_node, concatarray); \
- first_chunk = stack_len = 0; \
- }
-
- while (node) {
- int count = 1;
-
- /* pre-allocation check (this branch can be omittable) */
- if (static_literal_node_p(node->nd_head, iseq)) {
- /* count the elements that are optimizable */
- const NODE *node_tmp = node->nd_next;
- for (; node_tmp && static_literal_node_p(node_tmp->nd_head, iseq); node_tmp = node_tmp->nd_next)
- count++;
-
- if ((first_chunk && stack_len == 0 && !node_tmp) || count >= min_tmp_ary_len) {
- /* The literal contains only optimizable elements, or the subarray is long enough */
- VALUE ary = rb_ary_hidden_new(count);
-
- /* Create a hidden array */
- for (; count; count--, node = node->nd_next)
- rb_ary_push(ary, static_literal_value(node->nd_head, iseq));
- OBJ_FREEZE(ary);
-
- /* Emit optimized code */
- FLUSH_CHUNK(newarray);
- if (first_chunk) {
- ADD_INSN1(ret, line_node, duparray, ary);
- first_chunk = 0;
- }
- else {
- ADD_INSN1(ret, line_node, putobject, ary);
- ADD_INSN(ret, line_node, concatarray);
- }
- RB_OBJ_WRITTEN(iseq, Qundef, ary);
- }
- }
-
- /* Base case: Compile "count" elements */
- for (; count; count--, node = node->nd_next) {
- if (CPDEBUG > 0) {
- EXPECT_NODE("compile_array", node, NODE_LIST, -1);
- }
-
- NO_CHECK(COMPILE_(ret, "array element", node->nd_head, 0));
- stack_len++;
-
- if (!node->nd_next && keyword_node_p(node->nd_head)) {
- /* Reached the end, and the last element is a keyword */
- FLUSH_CHUNK(newarraykwsplat);
- return 1;
- }
-
- /* If there are many pushed elements, flush them to avoid stack overflow */
- if (stack_len >= max_stack_len) FLUSH_CHUNK(newarray);
- }
- }
-
- FLUSH_CHUNK(newarray);
-#undef FLUSH_CHUNK
- return 1;
-}
-
-/* Compile an array containing the single element represented by node */
-static int
-compile_array_1(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node)
-{
- if (static_literal_node_p(node, iseq)) {
- VALUE ary = rb_ary_hidden_new(1);
- rb_ary_push(ary, static_literal_value(node, iseq));
- OBJ_FREEZE(ary);
+ const NODE *node = node_root;
+ int line = (int)nd_line(node);
+ int len = 0;
- ADD_INSN1(ret, node, duparray, ary);
+ if (nd_type(node) == NODE_ZARRAY) {
+ if (!popped) {
+ switch (type) {
+ case COMPILE_ARRAY_TYPE_ARRAY: ADD_INSN1(ret, line, newarray, INT2FIX(0)); break;
+ case COMPILE_ARRAY_TYPE_HASH: ADD_INSN1(ret, line, newhash, INT2FIX(0)); break;
+ case COMPILE_ARRAY_TYPE_ARGS: /* do nothing */ break;
+ }
+ }
}
else {
- CHECK(COMPILE_(ret, "array element", node, FALSE));
- ADD_INSN1(ret, node, newarray, INT2FIX(1));
- }
-
- return 1;
-}
-
-static inline int
-static_literal_node_pair_p(const NODE *node, const rb_iseq_t *iseq)
-{
- return node->nd_head && static_literal_node_p(node->nd_head, iseq) && static_literal_node_p(node->nd_next->nd_head, iseq);
-}
-
-static int
-compile_hash(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, int method_call_keywords, int popped)
-{
- const NODE *line_node = node;
-
- node = node->nd_head;
-
- if (!node || nd_type_p(node, NODE_ZLIST)) {
- if (!popped) {
- ADD_INSN1(ret, line_node, newhash, INT2FIX(0));
- }
- return 0;
- }
-
- EXPECT_NODE("compile_hash", node, NODE_LIST, -1);
-
- if (popped) {
- for (; node; node = node->nd_next) {
- NO_CHECK(COMPILE_(ret, "hash element", node->nd_head, popped));
- }
- return 1;
- }
-
- /* Compilation of a hash literal (or keyword arguments).
- * This is very similar to compile_array, but there are some differences:
- *
- * - It contains key-value pairs. So we need to take every two elements.
- * We can assume that the length is always even.
- *
- * - Merging is done by a method call (id_core_hash_merge_ptr).
- * Sometimes we need to insert the receiver, so "anchor" is needed.
- * In addition, a method call is much slower than concatarray.
- * So it pays only when the subsequence is really long.
- * (min_tmp_hash_len must be much larger than min_tmp_ary_len.)
- *
- * - We need to handle keyword splat: **kw.
- * For **kw, the key part (node->nd_head) is NULL, and the value part
- * (node->nd_next->nd_head) is "kw".
- * The code is a bit difficult to avoid hash allocation for **{}.
- */
-
- const int max_stack_len = 0x100;
- const int min_tmp_hash_len = 0x800;
- int stack_len = 0;
- int first_chunk = 1;
- DECL_ANCHOR(anchor);
- INIT_ANCHOR(anchor);
-
- /* Convert pushed elements to a hash, and merge if needed */
-#define FLUSH_CHUNK() \
- if (stack_len) { \
- if (first_chunk) { \
- APPEND_LIST(ret, anchor); \
- ADD_INSN1(ret, line_node, newhash, INT2FIX(stack_len)); \
- } \
- else { \
- ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE)); \
- ADD_INSN(ret, line_node, swap); \
- APPEND_LIST(ret, anchor); \
- ADD_SEND(ret, line_node, id_core_hash_merge_ptr, INT2FIX(stack_len + 1)); \
- } \
- INIT_ANCHOR(anchor); \
- first_chunk = stack_len = 0; \
- }
-
- while (node) {
- int count = 1;
-
- /* pre-allocation check (this branch can be omittable) */
- if (static_literal_node_pair_p(node, iseq)) {
- /* count the elements that are optimizable */
- const NODE *node_tmp = node->nd_next->nd_next;
- for (; node_tmp && static_literal_node_pair_p(node_tmp, iseq); node_tmp = node_tmp->nd_next->nd_next)
- count++;
-
- if ((first_chunk && stack_len == 0 && !node_tmp) || count >= min_tmp_hash_len) {
- /* The literal contains only optimizable elements, or the subsequence is long enough */
- VALUE ary = rb_ary_hidden_new(count);
-
- /* Create a hidden hash */
- for (; count; count--, node = node->nd_next->nd_next) {
- VALUE elem[2];
- elem[0] = static_literal_value(node->nd_head, iseq);
- elem[1] = static_literal_value(node->nd_next->nd_head, iseq);
- rb_ary_cat(ary, elem, 2);
- }
- VALUE hash = rb_hash_new_with_size(RARRAY_LEN(ary) / 2);
- rb_hash_bulk_insert(RARRAY_LEN(ary), RARRAY_CONST_PTR_TRANSIENT(ary), hash);
- hash = rb_obj_hide(hash);
- OBJ_FREEZE(hash);
-
- /* Emit optimized code */
- FLUSH_CHUNK();
- if (first_chunk) {
- ADD_INSN1(ret, line_node, duphash, hash);
- first_chunk = 0;
- }
- else {
- ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN(ret, line_node, swap);
-
- ADD_INSN1(ret, line_node, putobject, hash);
-
- ADD_SEND(ret, line_node, id_core_hash_merge_kwd, INT2FIX(2));
- }
- RB_OBJ_WRITTEN(iseq, Qundef, hash);
- }
- }
-
- /* Base case: Compile "count" elements */
- for (; count; count--, node = node->nd_next->nd_next) {
-
- if (CPDEBUG > 0) {
- EXPECT_NODE("compile_hash", node, NODE_LIST, -1);
- }
-
- if (node->nd_head) {
- /* Normal key-value pair */
- NO_CHECK(COMPILE_(anchor, "hash key element", node->nd_head, 0));
- NO_CHECK(COMPILE_(anchor, "hash value element", node->nd_next->nd_head, 0));
- stack_len += 2;
-
- /* If there are many pushed elements, flush them to avoid stack overflow */
- if (stack_len >= max_stack_len) FLUSH_CHUNK();
- }
- else {
- /* kwsplat case: foo(..., **kw, ...) */
- FLUSH_CHUNK();
-
- const NODE *kw = node->nd_next->nd_head;
- int empty_kw = nd_type_p(kw, NODE_LIT) && RB_TYPE_P(kw->nd_lit, T_HASH); /* foo( ..., **{}, ...) */
- int first_kw = first_chunk && stack_len == 0; /* foo(1,2,3, **kw, ...) */
- int last_kw = !node->nd_next->nd_next; /* foo( ..., **kw) */
- int only_kw = last_kw && first_kw; /* foo(1,2,3, **kw) */
-
- if (empty_kw) {
- if (only_kw && method_call_keywords) {
- /* **{} appears at the only keyword argument in method call,
- * so it won't be modified.
- * kw is a special NODE_LIT that contains a special empty hash,
- * so this emits: putobject {}.
- * This is only done for method calls and not for literal hashes,
- * because literal hashes should always result in a new hash.
- */
- NO_CHECK(COMPILE(ret, "keyword splat", kw));
- }
- else if (first_kw) {
- /* **{} appears as the first keyword argument, so it may be modified.
- * We need to create a fresh hash object.
- */
- ADD_INSN1(ret, line_node, newhash, INT2FIX(0));
- }
- /* Any empty keyword splats that are not the first can be ignored.
- * since merging an empty hash into the existing hash is the same
- * as not merging it. */
- }
- else {
- if (only_kw && method_call_keywords) {
- /* **kw is only keyword argument in method call.
- * Use directly. This will be not be flagged as mutable.
- * This is only done for method calls and not for literal hashes,
- * because literal hashes should always result in a new hash.
- */
- NO_CHECK(COMPILE(ret, "keyword splat", kw));
- }
- else {
- /* There is more than one keyword argument, or this is not a method
- * call. In that case, we need to add an empty hash (if first keyword),
- * or merge the hash to the accumulated hash (if not the first keyword).
- */
- ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- if (first_kw) ADD_INSN1(ret, line_node, newhash, INT2FIX(0));
- else ADD_INSN(ret, line_node, swap);
-
- NO_CHECK(COMPILE(ret, "keyword splat", kw));
-
- ADD_SEND(ret, line_node, id_core_hash_merge_kwd, INT2FIX(2));
- }
- }
-
- first_chunk = 0;
- }
- }
+ int opt_p = 1;
+ int first = 1, i;
+
+ while (node) {
+ const NODE *start_node = node, *end_node;
+ const NODE *kw = 0;
+ const int max = 0x100;
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+
+ for (i=0; i<max && node; i++, len++, node = node->nd_next) {
+ if (CPDEBUG > 0) {
+ EXPECT_NODE("compile_array", node, NODE_ARRAY, -1);
+ }
+
+ if (type != COMPILE_ARRAY_TYPE_ARRAY && !node->nd_head) {
+ kw = node->nd_next;
+ node = 0;
+ if (kw) {
+ opt_p = 0;
+ node = kw->nd_next;
+ kw = kw->nd_head;
+ }
+ break;
+ }
+ if (opt_p && !static_literal_node_p(node)) {
+ opt_p = 0;
+ }
+
+ if (type == COMPILE_ARRAY_TYPE_ARGS &&
+ node->nd_next == NULL /* last node */ &&
+ compile_array_keyword_arg(iseq, anchor, node->nd_head, keywords_ptr, flag)) {
+ len--;
+ }
+ else {
+ COMPILE_(anchor, "array element", node->nd_head, popped);
+ }
+ }
+
+ if (opt_p && type != COMPILE_ARRAY_TYPE_ARGS) {
+ if (!popped) {
+ VALUE ary = rb_ary_tmp_new(i);
+
+ end_node = node;
+ node = start_node;
+
+ while (node != end_node) {
+ rb_ary_push(ary, static_literal_value(node));
+ node = node->nd_next;
+ }
+ while (node && node->nd_next &&
+ static_literal_node_p(node) &&
+ static_literal_node_p(node->nd_next)) {
+ VALUE elem[2];
+ elem[0] = static_literal_value(node);
+ elem[1] = static_literal_value(node->nd_next);
+ rb_ary_cat(ary, elem, 2);
+ node = node->nd_next->nd_next;
+ len++;
+ }
+
+ OBJ_FREEZE(ary);
+
+ iseq_add_mark_object_compile_time(iseq, ary);
+
+ if (first) {
+ first = 0;
+ if (type == COMPILE_ARRAY_TYPE_ARRAY) {
+ ADD_INSN1(ret, line, duparray, ary);
+ }
+ else { /* COMPILE_ARRAY_TYPE_HASH */
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putobject, ary);
+ ADD_SEND(ret, line, id_core_hash_from_ary, INT2FIX(1));
+ }
+ }
+ else {
+ if (type == COMPILE_ARRAY_TYPE_ARRAY) {
+ ADD_INSN1(ret, line, putobject, ary);
+ ADD_INSN(ret, line, concatarray);
+ }
+ else {
+#if 0
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putobject, ary);
+ ADD_SEND(ret, line, id_core_hash_merge_ary, INT2FIX(1));
+ /* wrong number of arguments -----------------------^ */
+#else
+ COMPILE_ERROR(ERROR_ARGS "core#hash_merge_ary");
+ return -1;
+#endif
+ }
+ }
+ }
+ }
+ else {
+ if (!popped || kw) {
+ switch (type) {
+ case COMPILE_ARRAY_TYPE_ARRAY:
+ ADD_INSN1(anchor, line, newarray, INT2FIX(i));
+
+ if (first) {
+ first = 0;
+ }
+ else {
+ ADD_INSN(anchor, line, concatarray);
+ }
+
+ APPEND_LIST(ret, anchor);
+ break;
+ case COMPILE_ARRAY_TYPE_HASH:
+ if (i > 0) {
+ if (first) {
+ if (!popped) {
+ ADD_INSN1(anchor, line, newhash, INT2FIX(i));
+ }
+ APPEND_LIST(ret, anchor);
+ }
+ else {
+ if (!popped) {
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN(ret, line, swap);
+ }
+ APPEND_LIST(ret, anchor);
+ if (!popped) {
+ ADD_SEND(ret, line, id_core_hash_merge_ptr, INT2FIX(i + 1));
+ }
+ }
+ }
+ if (kw) {
+ VALUE nhash = (i > 0 || !first) ? INT2FIX(2) : INT2FIX(1);
+ if (!popped) {
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ if (i > 0 || !first) ADD_INSN(ret, line, swap);
+ }
+ COMPILE(ret, "keyword splat", kw);
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ else {
+ ADD_SEND(ret, line, id_core_hash_merge_kwd, nhash);
+ if (nhash == INT2FIX(1)) ADD_SEND(ret, line, rb_intern("dup"), INT2FIX(0));
+ }
+ }
+ first = 0;
+ break;
+ case COMPILE_ARRAY_TYPE_ARGS:
+ APPEND_LIST(ret, anchor);
+ break;
+ }
+ }
+ else {
+ /* popped */
+ APPEND_LIST(ret, anchor);
+ }
+ }
+ }
}
-
- FLUSH_CHUNK();
-#undef FLUSH_CHUNK
- return 1;
+ return len;
}
-VALUE
-rb_node_case_when_optimizable_literal(const NODE *const node)
+static VALUE
+case_when_optimizable_literal(const NODE *const node)
{
switch (nd_type(node)) {
case NODE_LIT: {
- VALUE v = node->nd_lit;
- double ival;
- if (RB_FLOAT_TYPE_P(v) &&
- modf(RFLOAT_VALUE(v), &ival) == 0.0) {
- return FIXABLE(ival) ? LONG2FIX((long)ival) : rb_dbl2big(ival);
- }
- if (RB_TYPE_P(v, T_RATIONAL) || RB_TYPE_P(v, T_COMPLEX)) {
- return Qundef;
- }
- if (SYMBOL_P(v) || rb_obj_is_kind_of(v, rb_cNumeric)) {
- return v;
- }
- break;
+ VALUE v = node->nd_lit;
+ double ival;
+ if (RB_TYPE_P(v, T_FLOAT) &&
+ modf(RFLOAT_VALUE(v), &ival) == 0.0) {
+ return FIXABLE(ival) ? LONG2FIX((long)ival) : rb_dbl2big(ival);
+ }
+ if (SYMBOL_P(v) || rb_obj_is_kind_of(v, rb_cNumeric)) {
+ return v;
+ }
+ break;
}
case NODE_NIL:
- return Qnil;
+ return Qnil;
case NODE_TRUE:
- return Qtrue;
+ return Qtrue;
case NODE_FALSE:
- return Qfalse;
+ return Qfalse;
case NODE_STR:
- return rb_fstring(node->nd_lit);
+ return rb_fstring(node->nd_lit);
}
return Qundef;
}
static int
when_vals(rb_iseq_t *iseq, LINK_ANCHOR *const cond_seq, const NODE *vals,
- LABEL *l1, int only_special_literals, VALUE literals)
+ LABEL *l1, int only_special_literals, VALUE literals)
{
while (vals) {
- const NODE *val = vals->nd_head;
- VALUE lit = rb_node_case_when_optimizable_literal(val);
-
- if (UNDEF_P(lit)) {
- only_special_literals = 0;
- }
- else if (NIL_P(rb_hash_lookup(literals, lit))) {
- rb_hash_aset(literals, lit, (VALUE)(l1) | 1);
- }
-
- if (nd_type_p(val, NODE_STR)) {
- debugp_param("nd_lit", val->nd_lit);
- lit = rb_fstring(val->nd_lit);
- ADD_INSN1(cond_seq, val, putobject, lit);
- RB_OBJ_WRITTEN(iseq, Qundef, lit);
- }
- else {
- if (!COMPILE(cond_seq, "when cond", val)) return -1;
- }
-
- // Emit pattern === target
- ADD_INSN1(cond_seq, vals, topn, INT2FIX(1));
- ADD_CALL(cond_seq, vals, idEqq, INT2FIX(1));
- ADD_INSNL(cond_seq, val, branchif, l1);
- vals = vals->nd_next;
+ const NODE *val = vals->nd_head;
+ VALUE lit = case_when_optimizable_literal(val);
+
+ if (lit == Qundef) {
+ only_special_literals = 0;
+ }
+ else {
+ if (rb_hash_lookup(literals, lit) != Qnil) {
+ VALUE file = rb_iseq_path(iseq);
+ rb_compile_warning(RSTRING_PTR(file), nd_line(val),
+ "duplicated when clause is ignored");
+ }
+ else {
+ rb_hash_aset(literals, lit, (VALUE)(l1) | 1);
+ }
+ }
+
+ ADD_INSN(cond_seq, nd_line(val), dup); /* dup target */
+
+ if (nd_type(val) == NODE_STR) {
+ debugp_param("nd_lit", val->nd_lit);
+ lit = freeze_literal(iseq, val->nd_lit);
+ ADD_INSN1(cond_seq, nd_line(val), putobject, lit);
+ }
+ else {
+ COMPILE(cond_seq, "when cond", val);
+ }
+
+ ADD_INSN1(cond_seq, nd_line(vals), checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE));
+ ADD_INSNL(cond_seq, nd_line(val), branchif, l1);
+ vals = vals->nd_next;
}
return only_special_literals;
}
static int
-when_splat_vals(rb_iseq_t *iseq, LINK_ANCHOR *const cond_seq, const NODE *vals,
- LABEL *l1, int only_special_literals, VALUE literals)
-{
- const NODE *line_node = vals;
-
- switch (nd_type(vals)) {
- case NODE_LIST:
- if (when_vals(iseq, cond_seq, vals, l1, only_special_literals, literals) < 0)
- return COMPILE_NG;
- break;
- case NODE_SPLAT:
- ADD_INSN (cond_seq, line_node, dup);
- CHECK(COMPILE(cond_seq, "when splat", vals->nd_head));
- ADD_INSN1(cond_seq, line_node, splatarray, Qfalse);
- ADD_INSN1(cond_seq, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE | VM_CHECKMATCH_ARRAY));
- ADD_INSNL(cond_seq, line_node, branchif, l1);
- break;
- case NODE_ARGSCAT:
- CHECK(when_splat_vals(iseq, cond_seq, vals->nd_head, l1, only_special_literals, literals));
- CHECK(when_splat_vals(iseq, cond_seq, vals->nd_body, l1, only_special_literals, literals));
- break;
- case NODE_ARGSPUSH:
- CHECK(when_splat_vals(iseq, cond_seq, vals->nd_head, l1, only_special_literals, literals));
- ADD_INSN (cond_seq, line_node, dup);
- CHECK(COMPILE(cond_seq, "when argspush body", vals->nd_body));
- ADD_INSN1(cond_seq, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE));
- ADD_INSNL(cond_seq, line_node, branchif, l1);
- break;
- default:
- ADD_INSN (cond_seq, line_node, dup);
- CHECK(COMPILE(cond_seq, "when val", vals));
- ADD_INSN1(cond_seq, line_node, splatarray, Qfalse);
- ADD_INSN1(cond_seq, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE | VM_CHECKMATCH_ARRAY));
- ADD_INSNL(cond_seq, line_node, branchif, l1);
- break;
- }
- return COMPILE_OK;
-}
-
-/* Multiple Assignment Handling
- *
- * In order to handle evaluation of multiple assignment such that the left hand side
- * is evaluated before the right hand side, we need to process the left hand side
- * and see if there are any attributes that need to be assigned, or constants set
- * on explicit objects. If so, we add instructions to evaluate the receiver of
- * any assigned attributes or constants before we process the right hand side.
- *
- * For a multiple assignment such as:
- *
- * l1.m1, l2[0] = r3, r4
- *
- * We start off evaluating l1 and l2, then we evaluate r3 and r4, then we
- * assign the result of r3 to l1.m1, and then the result of r4 to l2.m2.
- * On the VM stack, this looks like:
- *
- * self # putself
- * l1 # send
- * l1, self # putself
- * l1, l2 # send
- * l1, l2, 0 # putobject 0
- * l1, l2, 0, [r3, r4] # after evaluation of RHS
- * l1, l2, 0, [r3, r4], r4, r3 # expandarray
- * l1, l2, 0, [r3, r4], r4, r3, l1 # topn 5
- * l1, l2, 0, [r3, r4], r4, l1, r3 # swap
- * l1, l2, 0, [r3, r4], r4, m1= # send
- * l1, l2, 0, [r3, r4], r4 # pop
- * l1, l2, 0, [r3, r4], r4, l2 # topn 3
- * l1, l2, 0, [r3, r4], r4, l2, 0 # topn 3
- * l1, l2, 0, [r3, r4], r4, l2, 0, r4 # topn 2
- * l1, l2, 0, [r3, r4], r4, []= # send
- * l1, l2, 0, [r3, r4], r4 # pop
- * l1, l2, 0, [r3, r4] # pop
- * [r3, r4], l2, 0, [r3, r4] # setn 3
- * [r3, r4], l2, 0 # pop
- * [r3, r4], l2 # pop
- * [r3, r4] # pop
- *
- * This is made more complex when you have to handle splats, post args,
- * and arbitrary levels of nesting. You need to keep track of the total
- * number of attributes to set, and for each attribute, how many entries
- * are on the stack before the final attribute, in order to correctly
- * calculate the topn value to use to get the receiver of the attribute
- * setter method.
- *
- * A brief description of the VM stack for simple multiple assignment
- * with no splat (rhs_array will not be present if the return value of
- * the multiple assignment is not needed):
- *
- * lhs_attr1, lhs_attr2, ..., rhs_array, ..., rhs_arg2, rhs_arg1
- *
- * For multiple assignment with splats, while processing the part before
- * the splat (splat+post here is an array of the splat and the post arguments):
- *
- * lhs_attr1, lhs_attr2, ..., rhs_array, splat+post, ..., rhs_arg2, rhs_arg1
- *
- * When processing the splat and post arguments:
- *
- * lhs_attr1, lhs_attr2, ..., rhs_array, ..., post_arg2, post_arg1, splat
- *
- * When processing nested multiple assignment, existing values on the stack
- * are kept. So for:
- *
- * (l1.m1, l2.m2), l3.m3, l4* = [r1, r2], r3, r4
- *
- * The stack layout would be the following before processing the nested
- * multiple assignment:
- *
- * l1, l2, [[r1, r2], r3, r4], [r4], r3, [r1, r2]
- *
- * In order to handle this correctly, we need to keep track of the nesting
- * level for each attribute assignment, as well as the attribute number
- * (left hand side attributes are processed left to right) and number of
- * arguments to pass to the setter method. struct masgn_lhs_node tracks
- * this information.
- *
- * We also need to track information for the entire multiple assignment, such
- * as the total number of arguments, and the current nesting level, to
- * handle both nested multiple assignment as well as cases where the
- * rhs is not needed. We also need to keep track of all attribute
- * assignments in this, which we do using a linked listed. struct masgn_state
- * tracks this information.
- */
-
-struct masgn_lhs_node {
- INSN *before_insn;
- struct masgn_lhs_node *next;
- const NODE *line_node;
- int argn;
- int num_args;
- int lhs_pos;
-};
-
-struct masgn_state {
- struct masgn_lhs_node *first_memo;
- struct masgn_lhs_node *last_memo;
- int lhs_level;
- int num_args;
- bool nested;
-};
-
-static int
-add_masgn_lhs_node(struct masgn_state *state, int lhs_pos, const NODE *line_node, int argc, INSN *before_insn)
-{
- if (!state) {
- rb_bug("no masgn_state");
- }
-
- struct masgn_lhs_node *memo;
- memo = malloc(sizeof(struct masgn_lhs_node));
- if (!memo) {
- return COMPILE_NG;
- }
-
- memo->before_insn = before_insn;
- memo->line_node = line_node;
- memo->argn = state->num_args + 1;
- memo->num_args = argc;
- state->num_args += argc;
- memo->lhs_pos = lhs_pos;
- memo->next = NULL;
- if (!state->first_memo) {
- state->first_memo = memo;
- }
- else {
- state->last_memo->next = memo;
- }
- state->last_memo = memo;
-
- return COMPILE_OK;
-}
-
-static int compile_massign0(rb_iseq_t *iseq, LINK_ANCHOR *const pre, LINK_ANCHOR *const rhs, LINK_ANCHOR *const lhs, LINK_ANCHOR *const post, const NODE *const node, struct masgn_state *state, int popped);
-
-static int
-compile_massign_lhs(rb_iseq_t *iseq, LINK_ANCHOR *const pre, LINK_ANCHOR *const rhs, LINK_ANCHOR *const lhs, LINK_ANCHOR *const post, const NODE *const node, struct masgn_state *state, int lhs_pos)
+compile_massign_lhs(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node)
{
switch (nd_type(node)) {
case NODE_ATTRASGN: {
- INSN *iobj;
- const NODE *line_node = node;
-
- CHECK(COMPILE_POPPED(pre, "masgn lhs (NODE_ATTRASGN)", node));
-
- LINK_ELEMENT *insn_element = LAST_ELEMENT(pre);
- iobj = (INSN *)get_prev_insn((INSN *)insn_element); /* send insn */
- ASSUME(iobj);
- ELEM_REMOVE(LAST_ELEMENT(pre));
- ELEM_REMOVE((LINK_ELEMENT *)iobj);
- pre->last = iobj->link.prev;
-
- const struct rb_callinfo *ci = (struct rb_callinfo *)OPERAND_AT(iobj, 0);
- int argc = vm_ci_argc(ci) + 1;
- ci = ci_argc_set(iseq, ci, argc);
- OPERAND_AT(iobj, 0) = (VALUE)ci;
- RB_OBJ_WRITTEN(iseq, Qundef, ci);
-
- if (argc == 1) {
- ADD_INSN(lhs, line_node, swap);
- }
- else {
- ADD_INSN1(lhs, line_node, topn, INT2FIX(argc));
- }
-
- if (!add_masgn_lhs_node(state, lhs_pos, line_node, argc, (INSN *)LAST_ELEMENT(lhs))) {
- return COMPILE_NG;
- }
-
- ADD_ELEM(lhs, (LINK_ELEMENT *)iobj);
- if (vm_ci_flag(ci) & VM_CALL_ARGS_SPLAT) {
- int argc = vm_ci_argc(ci);
- ci = ci_argc_set(iseq, ci, argc - 1);
- OPERAND_AT(iobj, 0) = (VALUE)ci;
- RB_OBJ_WRITTEN(iseq, Qundef, iobj);
- INSERT_BEFORE_INSN1(iobj, line_node, newarray, INT2FIX(1));
- INSERT_BEFORE_INSN(iobj, line_node, concatarray);
- }
- ADD_INSN(lhs, line_node, pop);
- if (argc != 1) {
- ADD_INSN(lhs, line_node, pop);
- }
- for (int i=0; i < argc; i++) {
- ADD_INSN(post, line_node, pop);
- }
- break;
+ INSN *iobj;
+ struct rb_call_info *ci;
+ VALUE dupidx;
+ int line = nd_line(node);
+
+ CHECK(COMPILE_POPPED(ret, "masgn lhs (NODE_ATTRASGN)", node));
+
+ iobj = (INSN *)get_prev_insn((INSN *)LAST_ELEMENT(ret)); /* send insn */
+ ci = (struct rb_call_info *)iobj->operands[0];
+ ci->orig_argc += 1;
+ dupidx = INT2FIX(ci->orig_argc);
+
+ INSERT_BEFORE_INSN1(iobj, line, topn, dupidx);
+ if (ci->flag & VM_CALL_ARGS_SPLAT) {
+ --ci->orig_argc;
+ INSERT_BEFORE_INSN1(iobj, line, newarray, INT2FIX(1));
+ INSERT_BEFORE_INSN(iobj, line, concatarray);
+ }
+ ADD_INSN(ret, line, pop); /* result */
+ break;
}
case NODE_MASGN: {
- DECL_ANCHOR(nest_rhs);
- INIT_ANCHOR(nest_rhs);
- DECL_ANCHOR(nest_lhs);
- INIT_ANCHOR(nest_lhs);
-
- int prev_level = state->lhs_level;
- bool prev_nested = state->nested;
- state->nested = 1;
- state->lhs_level = lhs_pos - 1;
- CHECK(compile_massign0(iseq, pre, nest_rhs, nest_lhs, post, node, state, 1));
- state->lhs_level = prev_level;
- state->nested = prev_nested;
-
- ADD_SEQ(lhs, nest_rhs);
- ADD_SEQ(lhs, nest_lhs);
- break;
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+ CHECK(COMPILE_POPPED(anchor, "nest masgn lhs", node));
+ ELEM_REMOVE(FIRST_ELEMENT(anchor));
+ ADD_SEQ(ret, anchor);
+ break;
}
- case NODE_CDECL:
- if (!node->nd_vid) {
- /* Special handling only needed for expr::C, not for C */
- INSN *iobj;
-
- CHECK(COMPILE_POPPED(pre, "masgn lhs (NODE_CDECL)", node));
-
- LINK_ELEMENT *insn_element = LAST_ELEMENT(pre);
- iobj = (INSN *)insn_element; /* setconstant insn */
- ELEM_REMOVE((LINK_ELEMENT *)get_prev_insn((INSN *)get_prev_insn(iobj)));
- ELEM_REMOVE((LINK_ELEMENT *)get_prev_insn(iobj));
- ELEM_REMOVE(insn_element);
- pre->last = iobj->link.prev;
- ADD_ELEM(lhs, (LINK_ELEMENT *)iobj);
-
- if (!add_masgn_lhs_node(state, lhs_pos, node, 1, (INSN *)LAST_ELEMENT(lhs))) {
- return COMPILE_NG;
- }
-
- ADD_INSN(post, node, pop);
- break;
- }
- /* Fallthrough */
default: {
- DECL_ANCHOR(anchor);
- INIT_ANCHOR(anchor);
- CHECK(COMPILE_POPPED(anchor, "masgn lhs", node));
- ELEM_REMOVE(FIRST_ELEMENT(anchor));
- ADD_SEQ(lhs, anchor);
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+ CHECK(COMPILE_POPPED(anchor, "masgn lhs", node));
+ ELEM_REMOVE(FIRST_ELEMENT(anchor));
+ ADD_SEQ(ret, anchor);
}
}
@@ -5185,15 +3906,15 @@ static int
compile_massign_opt_lhs(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *lhsn)
{
if (lhsn) {
- CHECK(compile_massign_opt_lhs(iseq, ret, lhsn->nd_next));
- CHECK(compile_massign_lhs(iseq, ret, ret, ret, ret, lhsn->nd_head, NULL, 0));
+ CHECK(compile_massign_opt_lhs(iseq, ret, lhsn->nd_next));
+ CHECK(compile_massign_lhs(iseq, ret, lhsn->nd_head));
}
return COMPILE_OK;
}
static int
compile_massign_opt(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
- const NODE *rhsn, const NODE *orig_lhsn)
+ const NODE *rhsn, const NODE *orig_lhsn)
{
VALUE mem[64];
const int memsize = numberof(mem);
@@ -5206,211 +3927,174 @@ compile_massign_opt(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
int i; \
if (memindex == memsize) return 0; \
for (i=0; i<memindex; i++) { \
- if (mem[i] == (v)) return 0; \
+ if (mem[i] == (v)) return 0; \
} \
mem[memindex++] = (v); \
}
- if (rhsn == 0 || !nd_type_p(rhsn, NODE_LIST)) {
- return 0;
+ if (rhsn == 0 || nd_type(rhsn) != NODE_ARRAY) {
+ return 0;
}
while (lhsn) {
- const NODE *ln = lhsn->nd_head;
- switch (nd_type(ln)) {
- case NODE_LASGN:
- MEMORY(ln->nd_vid);
- break;
- case NODE_DASGN:
- case NODE_IASGN:
- case NODE_CVASGN:
- MEMORY(ln->nd_vid);
- break;
- default:
- return 0;
- }
- lhsn = lhsn->nd_next;
- llen++;
+ const NODE *ln = lhsn->nd_head;
+ switch (nd_type(ln)) {
+ case NODE_LASGN:
+ MEMORY(ln->nd_vid);
+ break;
+ case NODE_DASGN:
+ case NODE_DASGN_CURR:
+ case NODE_IASGN:
+ case NODE_CVASGN:
+ MEMORY(ln->nd_vid);
+ break;
+ default:
+ return 0;
+ }
+ lhsn = lhsn->nd_next;
+ llen++;
}
while (rhsn) {
- if (llen <= rlen) {
- NO_CHECK(COMPILE_POPPED(ret, "masgn val (popped)", rhsn->nd_head));
- }
- else {
- NO_CHECK(COMPILE(ret, "masgn val", rhsn->nd_head));
- }
- rhsn = rhsn->nd_next;
- rlen++;
+ if (llen <= rlen) {
+ COMPILE_POPPED(ret, "masgn val (popped)", rhsn->nd_head);
+ }
+ else {
+ COMPILE(ret, "masgn val", rhsn->nd_head);
+ }
+ rhsn = rhsn->nd_next;
+ rlen++;
}
if (llen > rlen) {
- for (i=0; i<llen-rlen; i++) {
- ADD_INSN(ret, orig_lhsn, putnil);
- }
+ for (i=0; i<llen-rlen; i++) {
+ ADD_INSN(ret, nd_line(orig_lhsn), putnil);
+ }
}
compile_massign_opt_lhs(iseq, ret, orig_lhsn);
return 1;
}
-static int
-compile_massign0(rb_iseq_t *iseq, LINK_ANCHOR *const pre, LINK_ANCHOR *const rhs, LINK_ANCHOR *const lhs, LINK_ANCHOR *const post, const NODE *const node, struct masgn_state *state, int popped)
+static void
+adjust_stack(rb_iseq_t *iseq, LINK_ANCHOR *const ret, int line, int rlen, int llen)
{
- const NODE *rhsn = node->nd_value;
- const NODE *splatn = node->nd_args;
- const NODE *lhsn = node->nd_head;
- const NODE *lhsn_count = lhsn;
- int lhs_splat = (splatn && NODE_NAMED_REST_P(splatn)) ? 1 : 0;
-
- int llen = 0;
- int lpos = 0;
- int expand = 1;
-
- while (lhsn_count) {
- llen++;
- lhsn_count = lhsn_count->nd_next;
- }
- while (lhsn) {
- CHECK(compile_massign_lhs(iseq, pre, rhs, lhs, post, lhsn->nd_head, state, (llen - lpos) + lhs_splat + state->lhs_level));
- lpos++;
- lhsn = lhsn->nd_next;
- }
-
- if (lhs_splat) {
- if (nd_type_p(splatn, NODE_POSTARG)) {
- /*a, b, *r, p1, p2 */
- const NODE *postn = splatn->nd_2nd;
- const NODE *restn = splatn->nd_1st;
- int plen = (int)postn->nd_alen;
- int ppos = 0;
- int flag = 0x02 | (NODE_NAMED_REST_P(restn) ? 0x01 : 0x00);
-
- ADD_INSN2(lhs, splatn, expandarray, INT2FIX(plen), INT2FIX(flag));
-
- if (NODE_NAMED_REST_P(restn)) {
- CHECK(compile_massign_lhs(iseq, pre, rhs, lhs, post, restn, state, 1 + plen + state->lhs_level));
- }
- while (postn) {
- CHECK(compile_massign_lhs(iseq, pre, rhs, lhs, post, postn->nd_head, state, (plen - ppos) + state->lhs_level));
- ppos++;
- postn = postn->nd_next;
- }
- }
- else {
- /* a, b, *r */
- CHECK(compile_massign_lhs(iseq, pre, rhs, lhs, post, splatn, state, 1 + state->lhs_level));
- }
+ if (rlen < llen) {
+ do {ADD_INSN(ret, line, putnil);} while (++rlen < llen);
}
-
-
- if (!state->nested) {
- NO_CHECK(COMPILE(rhs, "normal masgn rhs", rhsn));
+ else if (rlen > llen) {
+ do {ADD_INSN(ret, line, pop);} while (--rlen > llen);
}
-
- if (!popped) {
- ADD_INSN(rhs, node, dup);
- }
- if (expand) {
- ADD_INSN2(rhs, node, expandarray, INT2FIX(llen), INT2FIX(lhs_splat));
- }
- return COMPILE_OK;
}
static int
compile_massign(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
- if (!popped || node->nd_args || !compile_massign_opt(iseq, ret, node->nd_value, node->nd_head)) {
- struct masgn_state state;
- state.lhs_level = popped ? 0 : 1;
- state.nested = 0;
- state.num_args = 0;
- state.first_memo = NULL;
- state.last_memo = NULL;
-
- DECL_ANCHOR(pre);
- INIT_ANCHOR(pre);
- DECL_ANCHOR(rhs);
- INIT_ANCHOR(rhs);
- DECL_ANCHOR(lhs);
- INIT_ANCHOR(lhs);
- DECL_ANCHOR(post);
- INIT_ANCHOR(post);
- int ok = compile_massign0(iseq, pre, rhs, lhs, post, node, &state, popped);
-
- struct masgn_lhs_node *memo = state.first_memo, *tmp_memo;
- while (memo) {
- VALUE topn_arg = INT2FIX((state.num_args - memo->argn) + memo->lhs_pos);
- for (int i = 0; i < memo->num_args; i++) {
- INSERT_BEFORE_INSN1(memo->before_insn, memo->line_node, topn, topn_arg);
- }
- tmp_memo = memo->next;
- free(memo);
- memo = tmp_memo;
- }
- CHECK(ok);
-
- ADD_SEQ(ret, pre);
- ADD_SEQ(ret, rhs);
- ADD_SEQ(ret, lhs);
- if (!popped && state.num_args >= 1) {
- /* make sure rhs array is returned before popping */
- ADD_INSN1(ret, node, setn, INT2FIX(state.num_args));
- }
- ADD_SEQ(ret, post);
+ const NODE *rhsn = node->nd_value;
+ const NODE *splatn = node->nd_args;
+ const NODE *lhsn = node->nd_head;
+ int lhs_splat = (splatn && splatn != NODE_SPECIAL_NO_NAME_REST) ? 1 : 0;
+
+ if (!popped || splatn || !compile_massign_opt(iseq, ret, rhsn, lhsn)) {
+ int llen = 0;
+ int expand = 1;
+ DECL_ANCHOR(lhsseq);
+
+ INIT_ANCHOR(lhsseq);
+
+ while (lhsn) {
+ CHECK(compile_massign_lhs(iseq, lhsseq, lhsn->nd_head));
+ llen += 1;
+ lhsn = lhsn->nd_next;
+ }
+
+ COMPILE(ret, "normal masgn rhs", rhsn);
+
+ if (!popped) {
+ ADD_INSN(ret, nd_line(node), dup);
+ }
+ else if (!lhs_splat) {
+ INSN *last = (INSN*)ret->last;
+ if (IS_INSN(&last->link) &&
+ IS_INSN_ID(last, newarray) &&
+ last->operand_size == 1) {
+ int rlen = FIX2INT(OPERAND_AT(last, 0));
+ /* special case: assign to aset or attrset */
+ if (llen == 2) {
+ POP_ELEMENT(ret);
+ adjust_stack(iseq, ret, nd_line(node), rlen, llen);
+ ADD_INSN(ret, nd_line(node), swap);
+ expand = 0;
+ }
+ else if (llen > 2 && llen != rlen) {
+ POP_ELEMENT(ret);
+ adjust_stack(iseq, ret, nd_line(node), rlen, llen);
+ ADD_INSN1(ret, nd_line(node), reverse, INT2FIX(llen));
+ expand = 0;
+ }
+ else if (llen > 2) {
+ last->insn_id = BIN(reverse);
+ expand = 0;
+ }
+ }
+ }
+ if (expand) {
+ ADD_INSN2(ret, nd_line(node), expandarray,
+ INT2FIX(llen), INT2FIX(lhs_splat));
+ }
+ ADD_SEQ(ret, lhsseq);
+
+ if (lhs_splat) {
+ if (nd_type(splatn) == NODE_POSTARG) {
+ /*a, b, *r, p1, p2 */
+ const NODE *postn = splatn->nd_2nd;
+ const NODE *restn = splatn->nd_1st;
+ int num = (int)postn->nd_alen;
+ int flag = 0x02 | ((restn == NODE_SPECIAL_NO_NAME_REST) ? 0x00 : 0x01);
+
+ ADD_INSN2(ret, nd_line(splatn), expandarray,
+ INT2FIX(num), INT2FIX(flag));
+
+ if (restn != NODE_SPECIAL_NO_NAME_REST) {
+ CHECK(compile_massign_lhs(iseq, ret, restn));
+ }
+ while (postn) {
+ CHECK(compile_massign_lhs(iseq, ret, postn->nd_head));
+ postn = postn->nd_next;
+ }
+ }
+ else {
+ /* a, b, *r */
+ CHECK(compile_massign_lhs(iseq, ret, splatn));
+ }
+ }
}
return COMPILE_OK;
}
-static VALUE
-collect_const_segments(rb_iseq_t *iseq, const NODE *node)
-{
- VALUE arr = rb_ary_new();
- for (;;) {
- switch (nd_type(node)) {
- case NODE_CONST:
- rb_ary_unshift(arr, ID2SYM(node->nd_vid));
- return arr;
- case NODE_COLON3:
- rb_ary_unshift(arr, ID2SYM(node->nd_mid));
- rb_ary_unshift(arr, ID2SYM(idNULL));
- return arr;
- case NODE_COLON2:
- rb_ary_unshift(arr, ID2SYM(node->nd_mid));
- node = node->nd_head;
- break;
- default:
- return Qfalse;
- }
- }
-}
-
static int
compile_const_prefix(rb_iseq_t *iseq, const NODE *const node,
- LINK_ANCHOR *const pref, LINK_ANCHOR *const body)
+ LINK_ANCHOR *const pref, LINK_ANCHOR *const body)
{
switch (nd_type(node)) {
case NODE_CONST:
- debugi("compile_const_prefix - colon", node->nd_vid);
- ADD_INSN1(body, node, putobject, Qtrue);
- ADD_INSN1(body, node, getconstant, ID2SYM(node->nd_vid));
- break;
+ debugi("compile_const_prefix - colon", node->nd_vid);
+ ADD_INSN1(body, nd_line(node), getconstant, ID2SYM(node->nd_vid));
+ break;
case NODE_COLON3:
- debugi("compile_const_prefix - colon3", node->nd_mid);
- ADD_INSN(body, node, pop);
- ADD_INSN1(body, node, putobject, rb_cObject);
- ADD_INSN1(body, node, putobject, Qtrue);
- ADD_INSN1(body, node, getconstant, ID2SYM(node->nd_mid));
- break;
+ debugi("compile_const_prefix - colon3", node->nd_mid);
+ ADD_INSN(body, nd_line(node), pop);
+ ADD_INSN1(body, nd_line(node), putobject, rb_cObject);
+ ADD_INSN1(body, nd_line(node), getconstant, ID2SYM(node->nd_mid));
+ break;
case NODE_COLON2:
- CHECK(compile_const_prefix(iseq, node->nd_head, pref, body));
- debugi("compile_const_prefix - colon2", node->nd_mid);
- ADD_INSN1(body, node, putobject, Qfalse);
- ADD_INSN1(body, node, getconstant, ID2SYM(node->nd_mid));
- break;
+ CHECK(compile_const_prefix(iseq, node->nd_head, pref, body));
+ debugi("compile_const_prefix - colon2", node->nd_mid);
+ ADD_INSN1(body, nd_line(node), getconstant, ID2SYM(node->nd_mid));
+ break;
default:
- CHECK(COMPILE(pref, "const colon2 prefix", node));
- break;
+ CHECK(COMPILE(pref, "const colon2 prefix", node));
+ break;
}
return COMPILE_OK;
}
@@ -5418,218 +4102,174 @@ compile_const_prefix(rb_iseq_t *iseq, const NODE *const node,
static int
compile_cpath(LINK_ANCHOR *const ret, rb_iseq_t *iseq, const NODE *cpath)
{
- if (nd_type_p(cpath, NODE_COLON3)) {
- /* toplevel class ::Foo */
- ADD_INSN1(ret, cpath, putobject, rb_cObject);
- return VM_DEFINECLASS_FLAG_SCOPED;
+ if (nd_type(cpath) == NODE_COLON3) {
+ /* toplevel class ::Foo */
+ ADD_INSN1(ret, nd_line(cpath), putobject, rb_cObject);
+ return VM_DEFINECLASS_FLAG_SCOPED;
}
else if (cpath->nd_head) {
- /* Bar::Foo */
- NO_CHECK(COMPILE(ret, "nd_else->nd_head", cpath->nd_head));
- return VM_DEFINECLASS_FLAG_SCOPED;
+ /* Bar::Foo */
+ COMPILE(ret, "nd_else->nd_head", cpath->nd_head);
+ return VM_DEFINECLASS_FLAG_SCOPED;
}
else {
- /* class at cbase Foo */
- ADD_INSN1(ret, cpath, putspecialobject,
- INT2FIX(VM_SPECIAL_OBJECT_CONST_BASE));
- return 0;
- }
-}
-
-static inline int
-private_recv_p(const NODE *node)
-{
- if (nd_type_p(node->nd_recv, NODE_SELF)) {
- NODE *self = node->nd_recv;
- return self->nd_state != 0;
+ /* class at cbase Foo */
+ ADD_INSN1(ret, nd_line(cpath), putspecialobject,
+ INT2FIX(VM_SPECIAL_OBJECT_CONST_BASE));
+ return 0;
}
- return 0;
}
-static void
+#define private_recv_p(node) (nd_type((node)->nd_recv) == NODE_SELF)
+static int
defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
- const NODE *const node, LABEL **lfinish, VALUE needstr);
+ const NODE *const node, LABEL **lfinish, VALUE needstr);
static int
-compile_call(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, const enum node_type type, const NODE *const line_node, int popped, bool assume_receiver);
-
-static void
defined_expr0(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
- const NODE *const node, LABEL **lfinish, VALUE needstr,
- bool keep_result)
+ const NODE *const node, LABEL **lfinish, VALUE needstr)
{
- enum defined_type expr_type = DEFINED_NOT_DEFINED;
+ enum defined_type expr_type = 0;
enum node_type type;
- const int line = nd_line(node);
- const NODE *line_node = node;
switch (type = nd_type(node)) {
- /* easy literals */
+ /* easy literals */
case NODE_NIL:
- expr_type = DEFINED_NIL;
- break;
+ expr_type = DEFINED_NIL;
+ break;
case NODE_SELF:
- expr_type = DEFINED_SELF;
- break;
+ expr_type = DEFINED_SELF;
+ break;
case NODE_TRUE:
- expr_type = DEFINED_TRUE;
- break;
+ expr_type = DEFINED_TRUE;
+ break;
case NODE_FALSE:
- expr_type = DEFINED_FALSE;
- break;
+ expr_type = DEFINED_FALSE;
+ break;
- case NODE_LIST:{
- const NODE *vals = node;
+ case NODE_ARRAY:{
+ const NODE *vals = node;
- do {
- defined_expr0(iseq, ret, vals->nd_head, lfinish, Qfalse, false);
+ do {
+ defined_expr0(iseq, ret, vals->nd_head, lfinish, Qfalse);
- if (!lfinish[1]) {
- lfinish[1] = NEW_LABEL(line);
- }
- ADD_INSNL(ret, line_node, branchunless, lfinish[1]);
- } while ((vals = vals->nd_next) != NULL);
+ if (!lfinish[1]) {
+ lfinish[1] = NEW_LABEL(nd_line(node));
+ }
+ ADD_INSNL(ret, nd_line(node), branchunless, lfinish[1]);
+ } while ((vals = vals->nd_next) != NULL);
}
- /* fall through */
case NODE_STR:
case NODE_LIT:
- case NODE_ZLIST:
+ case NODE_ZARRAY:
case NODE_AND:
case NODE_OR:
default:
- expr_type = DEFINED_EXPR;
- break;
+ expr_type = DEFINED_EXPR;
+ break;
- /* variables */
+ /* variables */
case NODE_LVAR:
case NODE_DVAR:
- expr_type = DEFINED_LVAR;
- break;
+ expr_type = DEFINED_LVAR;
+ break;
-#define PUSH_VAL(type) (needstr == Qfalse ? Qtrue : rb_iseq_defined_string(type))
case NODE_IVAR:
- ADD_INSN3(ret, line_node, definedivar,
- ID2SYM(node->nd_vid), get_ivar_ic_value(iseq,node->nd_vid), PUSH_VAL(DEFINED_IVAR));
- return;
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_IVAR),
+ ID2SYM(node->nd_vid), needstr);
+ return 1;
case NODE_GVAR:
- ADD_INSN(ret, line_node, putnil);
- ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_GVAR),
- ID2SYM(node->nd_entry), PUSH_VAL(DEFINED_GVAR));
- return;
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_GVAR),
+ ID2SYM(node->nd_entry->id), needstr);
+ return 1;
case NODE_CVAR:
- ADD_INSN(ret, line_node, putnil);
- ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_CVAR),
- ID2SYM(node->nd_vid), PUSH_VAL(DEFINED_CVAR));
- return;
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_CVAR),
+ ID2SYM(node->nd_vid), needstr);
+ return 1;
case NODE_CONST:
- ADD_INSN(ret, line_node, putnil);
- ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_CONST),
- ID2SYM(node->nd_vid), PUSH_VAL(DEFINED_CONST));
- return;
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_CONST),
+ ID2SYM(node->nd_vid), needstr);
+ return 1;
case NODE_COLON2:
- if (!lfinish[1]) {
- lfinish[1] = NEW_LABEL(line);
- }
- defined_expr0(iseq, ret, node->nd_head, lfinish, Qfalse, false);
- ADD_INSNL(ret, line_node, branchunless, lfinish[1]);
- NO_CHECK(COMPILE(ret, "defined/colon2#nd_head", node->nd_head));
-
- if (rb_is_const_id(node->nd_mid)) {
- ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_CONST_FROM),
- ID2SYM(node->nd_mid), PUSH_VAL(DEFINED_CONST));
- }
- else {
- ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_METHOD),
- ID2SYM(node->nd_mid), PUSH_VAL(DEFINED_METHOD));
- }
- return;
+ if (!lfinish[1]) {
+ lfinish[1] = NEW_LABEL(nd_line(node));
+ }
+ defined_expr0(iseq, ret, node->nd_head, lfinish, Qfalse);
+ ADD_INSNL(ret, nd_line(node), branchunless, lfinish[1]);
+ COMPILE(ret, "defined/colon2#nd_head", node->nd_head);
+
+ ADD_INSN3(ret, nd_line(node), defined,
+ (rb_is_const_id(node->nd_mid) ?
+ INT2FIX(DEFINED_CONST) : INT2FIX(DEFINED_METHOD)),
+ ID2SYM(node->nd_mid), needstr);
+ return 1;
case NODE_COLON3:
- ADD_INSN1(ret, line_node, putobject, rb_cObject);
- ADD_INSN3(ret, line_node, defined,
- INT2FIX(DEFINED_CONST_FROM), ID2SYM(node->nd_mid), PUSH_VAL(DEFINED_CONST));
- return;
+ ADD_INSN1(ret, nd_line(node), putobject, rb_cObject);
+ ADD_INSN3(ret, nd_line(node), defined,
+ INT2FIX(DEFINED_CONST), ID2SYM(node->nd_mid), needstr);
+ return 1;
- /* method dispatch */
+ /* method dispatch */
case NODE_CALL:
case NODE_OPCALL:
case NODE_VCALL:
case NODE_FCALL:
case NODE_ATTRASGN:{
- const int explicit_receiver =
- (type == NODE_CALL || type == NODE_OPCALL ||
- (type == NODE_ATTRASGN && !private_recv_p(node)));
-
- if (node->nd_args || explicit_receiver) {
- if (!lfinish[1]) {
- lfinish[1] = NEW_LABEL(line);
- }
- if (!lfinish[2]) {
- lfinish[2] = NEW_LABEL(line);
- }
- }
- if (node->nd_args) {
- defined_expr0(iseq, ret, node->nd_args, lfinish, Qfalse, false);
- ADD_INSNL(ret, line_node, branchunless, lfinish[1]);
- }
- if (explicit_receiver) {
- defined_expr0(iseq, ret, node->nd_recv, lfinish, Qfalse, true);
- switch (nd_type(node->nd_recv)) {
- case NODE_CALL:
- case NODE_OPCALL:
- case NODE_VCALL:
- case NODE_FCALL:
- case NODE_ATTRASGN:
- ADD_INSNL(ret, line_node, branchunless, lfinish[2]);
- compile_call(iseq, ret, node->nd_recv, nd_type(node->nd_recv), line_node, 0, true);
- break;
- default:
- ADD_INSNL(ret, line_node, branchunless, lfinish[1]);
- NO_CHECK(COMPILE(ret, "defined/recv", node->nd_recv));
- break;
- }
- if (keep_result) {
- ADD_INSN(ret, line_node, dup);
- }
- ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_METHOD),
- ID2SYM(node->nd_mid), PUSH_VAL(DEFINED_METHOD));
- }
- else {
- ADD_INSN(ret, line_node, putself);
- if (keep_result) {
- ADD_INSN(ret, line_node, dup);
- }
- ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_FUNC),
- ID2SYM(node->nd_mid), PUSH_VAL(DEFINED_METHOD));
- }
- return;
+ const int explicit_receiver =
+ (type == NODE_CALL || type == NODE_OPCALL ||
+ (type == NODE_ATTRASGN && !private_recv_p(node)));
+
+ if (!lfinish[1] && (node->nd_args || explicit_receiver)) {
+ lfinish[1] = NEW_LABEL(nd_line(node));
+ }
+ if (node->nd_args) {
+ defined_expr0(iseq, ret, node->nd_args, lfinish, Qfalse);
+ ADD_INSNL(ret, nd_line(node), branchunless, lfinish[1]);
+ }
+ if (explicit_receiver) {
+ defined_expr0(iseq, ret, node->nd_recv, lfinish, Qfalse);
+ ADD_INSNL(ret, nd_line(node), branchunless, lfinish[1]);
+ COMPILE(ret, "defined/recv", node->nd_recv);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_METHOD),
+ ID2SYM(node->nd_mid), needstr);
+ }
+ else {
+ ADD_INSN(ret, nd_line(node), putself);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_FUNC),
+ ID2SYM(node->nd_mid), needstr);
+ }
+ return 1;
}
case NODE_YIELD:
- ADD_INSN(ret, line_node, putnil);
- ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_YIELD), 0,
- PUSH_VAL(DEFINED_YIELD));
- return;
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_YIELD), 0,
+ needstr);
+ return 1;
case NODE_BACK_REF:
case NODE_NTH_REF:
- ADD_INSN(ret, line_node, putnil);
- ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_REF),
- INT2FIX((node->nd_nth << 1) | (type == NODE_BACK_REF)),
- PUSH_VAL(DEFINED_GVAR));
- return;
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_REF),
+ INT2FIX((node->nd_nth << 1) | (type == NODE_BACK_REF)),
+ needstr);
+ return 1;
case NODE_SUPER:
case NODE_ZSUPER:
- ADD_INSN(ret, line_node, putnil);
- ADD_INSN3(ret, line_node, defined, INT2FIX(DEFINED_ZSUPER), 0,
- PUSH_VAL(DEFINED_ZSUPER));
- return;
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_ZSUPER), 0,
+ needstr);
+ return 1;
-#undef PUSH_VAL
case NODE_OP_ASGN1:
case NODE_OP_ASGN2:
case NODE_OP_ASGN_OR:
@@ -5637,84 +4277,76 @@ defined_expr0(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
case NODE_MASGN:
case NODE_LASGN:
case NODE_DASGN:
+ case NODE_DASGN_CURR:
case NODE_GASGN:
case NODE_IASGN:
case NODE_CDECL:
case NODE_CVASGN:
- expr_type = DEFINED_ASGN;
- break;
+ expr_type = DEFINED_ASGN;
+ break;
}
- assert(expr_type != DEFINED_NOT_DEFINED);
-
- if (needstr != Qfalse) {
- VALUE str = rb_iseq_defined_string(expr_type);
- ADD_INSN1(ret, line_node, putobject, str);
- }
- else {
- ADD_INSN1(ret, line_node, putobject, Qtrue);
+ if (expr_type) {
+ if (needstr != Qfalse) {
+ VALUE str = rb_iseq_defined_string(expr_type);
+ ADD_INSN1(ret, nd_line(node), putobject, str);
+ }
+ else {
+ ADD_INSN1(ret, nd_line(node), putobject, Qtrue);
+ }
+ return 1;
}
+ return 0;
}
-static void
-build_defined_rescue_iseq(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const void *unused)
-{
- NODE dummy_line_node = generate_dummy_line_node(0, -1);
- ADD_INSN(ret, &dummy_line_node, putnil);
- iseq_set_exception_local_table(iseq);
-}
-
-static void
+static int
defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
- const NODE *const node, LABEL **lfinish, VALUE needstr)
+ const NODE *const node, LABEL **lfinish, VALUE needstr)
{
LINK_ELEMENT *lcur = ret->last;
- defined_expr0(iseq, ret, node, lfinish, needstr, false);
+ int done = defined_expr0(iseq, ret, node, lfinish, needstr);
if (lfinish[1]) {
- int line = nd_line(node);
- LABEL *lstart = NEW_LABEL(line);
- LABEL *lend = NEW_LABEL(line);
- const rb_iseq_t *rescue;
- struct rb_iseq_new_with_callback_callback_func *ifunc =
- rb_iseq_new_with_callback_new_callback(build_defined_rescue_iseq, NULL);
- rescue = new_child_iseq_with_callback(iseq, ifunc,
- rb_str_concat(rb_str_new2("defined guard in "),
- ISEQ_BODY(iseq)->location.label),
- iseq, ISEQ_TYPE_RESCUE, 0);
- lstart->rescued = LABEL_RESCUE_BEG;
- lend->rescued = LABEL_RESCUE_END;
- APPEND_LABEL(ret, lcur, lstart);
- ADD_LABEL(ret, lend);
- ADD_CATCH_ENTRY(CATCH_TYPE_RESCUE, lstart, lend, rescue, lfinish[1]);
- }
+ int line = nd_line(node);
+ LABEL *lstart = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(line);
+ const rb_iseq_t *rescue;
+ NODE tmp_node, *node = &tmp_node;
+ rb_node_init(node, NODE_NIL, 0, 0, 0);
+ rescue = NEW_CHILD_ISEQ(node,
+ rb_str_concat(rb_str_new2
+ ("defined guard in "),
+ iseq->body->location.label),
+ ISEQ_TYPE_DEFINED_GUARD, 0);
+ lstart->rescued = LABEL_RESCUE_BEG;
+ lend->rescued = LABEL_RESCUE_END;
+ APPEND_LABEL(ret, lcur, lstart);
+ ADD_LABEL(ret, lend);
+ ADD_CATCH_ENTRY(CATCH_TYPE_RESCUE, lstart, lend, rescue, lfinish[1]);
+ }
+ return done;
}
static int
compile_defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE needstr)
{
const int line = nd_line(node);
- const NODE *line_node = node;
if (!node->nd_head) {
- VALUE str = rb_iseq_defined_string(DEFINED_NIL);
- ADD_INSN1(ret, line_node, putobject, str);
+ VALUE str = rb_iseq_defined_string(DEFINED_NIL);
+ ADD_INSN1(ret, line, putobject, str);
}
else {
- LABEL *lfinish[3];
- LINK_ELEMENT *last = ret->last;
- lfinish[0] = NEW_LABEL(line);
- lfinish[1] = 0;
- lfinish[2] = 0;
- defined_expr(iseq, ret, node->nd_head, lfinish, needstr);
- if (lfinish[1]) {
- ELEM_INSERT_NEXT(last, &new_insn_body(iseq, line_node, BIN(putnil), 0)->link);
- ADD_INSN(ret, line_node, swap);
- if (lfinish[2]) {
- ADD_LABEL(ret, lfinish[2]);
- }
- ADD_INSN(ret, line_node, pop);
- ADD_LABEL(ret, lfinish[1]);
- }
- ADD_LABEL(ret, lfinish[0]);
+ LABEL *lfinish[2];
+ LINK_ELEMENT *last = ret->last;
+ lfinish[0] = NEW_LABEL(line);
+ lfinish[1] = 0;
+ defined_expr(iseq, ret, node->nd_head, lfinish, needstr);
+ if (lfinish[1]) {
+ ELEM_INSERT_NEXT(last, &new_insn_body(iseq, line, BIN(putnil), 0)->link);
+ ADD_INSN(ret, line, swap);
+ ADD_INSN(ret, line, pop);
+ ADD_LABEL(ret, lfinish[1]);
+ }
+ ADD_LABEL(ret, lfinish[0]);
}
return COMPILE_OK;
}
@@ -5725,27 +4357,27 @@ make_name_for_block(const rb_iseq_t *orig_iseq)
int level = 1;
const rb_iseq_t *iseq = orig_iseq;
- if (ISEQ_BODY(orig_iseq)->parent_iseq != 0) {
- while (ISEQ_BODY(orig_iseq)->local_iseq != iseq) {
- if (ISEQ_BODY(iseq)->type == ISEQ_TYPE_BLOCK) {
- level++;
- }
- iseq = ISEQ_BODY(iseq)->parent_iseq;
- }
+ if (orig_iseq->body->parent_iseq != 0) {
+ while (orig_iseq->body->local_iseq != iseq) {
+ if (iseq->body->type == ISEQ_TYPE_BLOCK) {
+ level++;
+ }
+ iseq = iseq->body->parent_iseq;
+ }
}
if (level == 1) {
- return rb_sprintf("block in %"PRIsVALUE, ISEQ_BODY(iseq)->location.label);
+ return rb_sprintf("block in %"PRIsVALUE, iseq->body->location.label);
}
else {
- return rb_sprintf("block (%d levels) in %"PRIsVALUE, level, ISEQ_BODY(iseq)->location.label);
+ return rb_sprintf("block (%d levels) in %"PRIsVALUE, level, iseq->body->location.label);
}
}
static void
push_ensure_entry(rb_iseq_t *iseq,
- struct iseq_compile_data_ensure_node_stack *enl,
- struct ensure_range *er, const NODE *const node)
+ struct iseq_compile_data_ensure_node_stack *enl,
+ struct ensure_range *er, const NODE *const node)
{
enl->ensure_node = node;
enl->prev = ISEQ_COMPILE_DATA(iseq)->ensure_node_stack; /* prev */
@@ -5755,13 +4387,13 @@ push_ensure_entry(rb_iseq_t *iseq,
static void
add_ensure_range(rb_iseq_t *iseq, struct ensure_range *erange,
- LABEL *lstart, LABEL *lend)
+ LABEL *lstart, LABEL *lend)
{
struct ensure_range *ne =
- compile_data_alloc(iseq, sizeof(struct ensure_range));
+ compile_data_alloc(iseq, sizeof(struct ensure_range));
while (erange->next != 0) {
- erange = erange->next;
+ erange = erange->next;
}
ne->next = 0;
ne->begin = lend;
@@ -5771,234 +4403,150 @@ add_ensure_range(rb_iseq_t *iseq, struct ensure_range *erange,
erange->next = ne;
}
-static bool
-can_add_ensure_iseq(const rb_iseq_t *iseq)
-{
- struct iseq_compile_data_ensure_node_stack *e;
- if (ISEQ_COMPILE_DATA(iseq)->in_rescue && (e = ISEQ_COMPILE_DATA(iseq)->ensure_node_stack) != NULL) {
- while (e) {
- if (e->ensure_node) return false;
- e = e->prev;
- }
- }
- return true;
-}
-
static void
add_ensure_iseq(LINK_ANCHOR *const ret, rb_iseq_t *iseq, int is_return)
{
- assert(can_add_ensure_iseq(iseq));
-
struct iseq_compile_data_ensure_node_stack *enlp =
- ISEQ_COMPILE_DATA(iseq)->ensure_node_stack;
+ ISEQ_COMPILE_DATA(iseq)->ensure_node_stack;
struct iseq_compile_data_ensure_node_stack *prev_enlp = enlp;
DECL_ANCHOR(ensure);
INIT_ANCHOR(ensure);
while (enlp) {
- if (enlp->erange != NULL) {
- DECL_ANCHOR(ensure_part);
- LABEL *lstart = NEW_LABEL(0);
- LABEL *lend = NEW_LABEL(0);
- INIT_ANCHOR(ensure_part);
-
- add_ensure_range(iseq, enlp->erange, lstart, lend);
-
- ISEQ_COMPILE_DATA(iseq)->ensure_node_stack = enlp->prev;
- ADD_LABEL(ensure_part, lstart);
- NO_CHECK(COMPILE_POPPED(ensure_part, "ensure part", enlp->ensure_node));
- ADD_LABEL(ensure_part, lend);
- ADD_SEQ(ensure, ensure_part);
- }
- else {
- if (!is_return) {
- break;
- }
- }
- enlp = enlp->prev;
+ if (enlp->erange != NULL) {
+ DECL_ANCHOR(ensure_part);
+ LABEL *lstart = NEW_LABEL(0);
+ LABEL *lend = NEW_LABEL(0);
+ INIT_ANCHOR(ensure_part);
+
+ add_ensure_range(iseq, enlp->erange, lstart, lend);
+
+ ISEQ_COMPILE_DATA(iseq)->ensure_node_stack = enlp->prev;
+ ADD_LABEL(ensure_part, lstart);
+ COMPILE_POPPED(ensure_part, "ensure part", enlp->ensure_node);
+ ADD_LABEL(ensure_part, lend);
+ ADD_SEQ(ensure, ensure_part);
+ }
+ else {
+ if (!is_return) {
+ break;
+ }
+ }
+ enlp = enlp->prev;
}
ISEQ_COMPILE_DATA(iseq)->ensure_node_stack = prev_enlp;
ADD_SEQ(ret, ensure);
}
-#if RUBY_DEBUG
-static int
-check_keyword(const NODE *node)
-{
- /* This check is essentially a code clone of compile_keyword_arg. */
-
- if (nd_type_p(node, NODE_LIST)) {
- while (node->nd_next) {
- node = node->nd_next;
- }
- node = node->nd_head;
- }
-
- return keyword_node_p(node);
-}
-#endif
-
-static bool
-keyword_node_single_splat_p(NODE *kwnode)
-{
- RUBY_ASSERT(keyword_node_p(kwnode));
-
- NODE *node = kwnode->nd_head;
- return node->nd_head == NULL &&
- node->nd_next->nd_next == NULL;
-}
-
-static int
-setup_args_core(rb_iseq_t *iseq, LINK_ANCHOR *const args, const NODE *argn,
- int dup_rest, unsigned int *flag_ptr, struct rb_callinfo_kwarg **kwarg_ptr)
-{
- if (!argn) return 0;
-
- NODE *kwnode = NULL;
-
- switch (nd_type(argn)) {
- case NODE_LIST: {
- // f(x, y, z)
- int len = compile_args(iseq, args, argn, &kwnode);
- RUBY_ASSERT(flag_ptr == NULL || (*flag_ptr & VM_CALL_ARGS_SPLAT) == 0);
-
- if (kwnode) {
- if (compile_keyword_arg(iseq, args, kwnode, kwarg_ptr, flag_ptr)) {
- len -= 1;
- }
- else {
- compile_hash(iseq, args, kwnode, TRUE, FALSE);
- }
- }
-
- return len;
- }
- case NODE_SPLAT: {
- // f(*a)
- NO_CHECK(COMPILE(args, "args (splat)", argn->nd_head));
- ADD_INSN1(args, argn, splatarray, RBOOL(dup_rest));
- if (flag_ptr) *flag_ptr |= VM_CALL_ARGS_SPLAT;
- RUBY_ASSERT(flag_ptr == NULL || (*flag_ptr & VM_CALL_KW_SPLAT) == 0);
- return 1;
- }
- case NODE_ARGSCAT: {
- if (flag_ptr) *flag_ptr |= VM_CALL_ARGS_SPLAT;
- int argc = setup_args_core(iseq, args, argn->nd_head, 1, NULL, NULL);
-
- if (nd_type_p(argn->nd_body, NODE_LIST)) {
- int rest_len = compile_args(iseq, args, argn->nd_body, &kwnode);
- if (kwnode) rest_len--;
- ADD_INSN1(args, argn, newarray, INT2FIX(rest_len));
- }
- else {
- RUBY_ASSERT(!check_keyword(argn->nd_body));
- NO_CHECK(COMPILE(args, "args (cat: splat)", argn->nd_body));
- }
-
- if (nd_type_p(argn->nd_head, NODE_LIST)) {
- ADD_INSN1(args, argn, splatarray, Qtrue);
- argc += 1;
- }
- else {
- ADD_INSN1(args, argn, splatarray, Qfalse);
- ADD_INSN(args, argn, concatarray);
- }
-
- // f(..., *a, ..., k1:1, ...) #=> f(..., *[*a, ...], **{k1:1, ...})
- if (kwnode) {
- // kwsplat
- *flag_ptr |= VM_CALL_KW_SPLAT;
- *flag_ptr |= VM_CALL_KW_SPLAT_MUT;
- compile_hash(iseq, args, kwnode, TRUE, FALSE);
- argc += 1;
- }
-
- return argc;
- }
- case NODE_ARGSPUSH: {
- if (flag_ptr) *flag_ptr |= VM_CALL_ARGS_SPLAT;
- int argc = setup_args_core(iseq, args, argn->nd_head, 1, NULL, NULL);
-
- if (nd_type_p(argn->nd_body, NODE_LIST)) {
- int rest_len = compile_args(iseq, args, argn->nd_body, &kwnode);
- if (kwnode) rest_len--;
- ADD_INSN1(args, argn, newarray, INT2FIX(rest_len));
- ADD_INSN1(args, argn, newarray, INT2FIX(1));
- ADD_INSN(args, argn, concatarray);
- }
- else {
- if (keyword_node_p(argn->nd_body)) {
- kwnode = argn->nd_body;
- }
- else {
- NO_CHECK(COMPILE(args, "args (cat: splat)", argn->nd_body));
- ADD_INSN1(args, argn, newarray, INT2FIX(1));
- ADD_INSN(args, argn, concatarray);
- }
- }
-
- if (kwnode) {
- // f(*a, k:1)
- *flag_ptr |= VM_CALL_KW_SPLAT;
- if (!keyword_node_single_splat_p(kwnode)) {
- *flag_ptr |= VM_CALL_KW_SPLAT_MUT;
- }
- compile_hash(iseq, args, kwnode, TRUE, FALSE);
- argc += 1;
- }
-
- return argc;
- }
- default: {
- UNKNOWN_NODE("setup_arg", argn, Qnil);
- }
- }
-}
-
static VALUE
setup_args(rb_iseq_t *iseq, LINK_ANCHOR *const args, const NODE *argn,
- unsigned int *flag, struct rb_callinfo_kwarg **keywords)
-{
- VALUE ret;
- if (argn && nd_type_p(argn, NODE_BLOCK_PASS)) {
- unsigned int dup_rest = 1;
- DECL_ANCHOR(arg_block);
- INIT_ANCHOR(arg_block);
- NO_CHECK(COMPILE(arg_block, "block", argn->nd_body));
-
- *flag |= VM_CALL_ARGS_BLOCKARG;
-
- if (LIST_INSN_SIZE_ONE(arg_block)) {
- LINK_ELEMENT *elem = FIRST_ELEMENT(arg_block);
- if (IS_INSN(elem)) {
- INSN *iobj = (INSN *)elem;
- if (iobj->insn_id == BIN(getblockparam)) {
- iobj->insn_id = BIN(getblockparamproxy);
- }
- dup_rest = 0;
- }
- }
- ret = INT2FIX(setup_args_core(iseq, args, argn->nd_head, dup_rest, flag, keywords));
- ADD_SEQ(args, arg_block);
- }
- else {
- ret = INT2FIX(setup_args_core(iseq, args, argn, 0, flag, keywords));
- }
- return ret;
+ unsigned int *flag, struct rb_call_info_kw_arg **keywords)
+{
+ VALUE argc = INT2FIX(0);
+ int nsplat = 0;
+ DECL_ANCHOR(arg_block);
+ DECL_ANCHOR(args_splat);
+
+ INIT_ANCHOR(arg_block);
+ INIT_ANCHOR(args_splat);
+ if (argn && nd_type(argn) == NODE_BLOCK_PASS) {
+ COMPILE(arg_block, "block", argn->nd_body);
+ *flag |= VM_CALL_ARGS_BLOCKARG;
+ argn = argn->nd_head;
+ }
+
+ setup_argn:
+ if (argn) {
+ switch (nd_type(argn)) {
+ case NODE_SPLAT: {
+ COMPILE(args, "args (splat)", argn->nd_head);
+ ADD_INSN1(args, nd_line(argn), splatarray, nsplat ? Qtrue : Qfalse);
+ argc = INT2FIX(1);
+ nsplat++;
+ *flag |= VM_CALL_ARGS_SPLAT;
+ break;
+ }
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH: {
+ int next_is_array = (nd_type(argn->nd_head) == NODE_ARRAY);
+ DECL_ANCHOR(tmp);
+
+ INIT_ANCHOR(tmp);
+ COMPILE(tmp, "args (cat: splat)", argn->nd_body);
+ if (nd_type(argn) == NODE_ARGSCAT) {
+ ADD_INSN1(tmp, nd_line(argn), splatarray, nsplat ? Qtrue : Qfalse);
+ }
+ else {
+ ADD_INSN1(tmp, nd_line(argn), newarray, INT2FIX(1));
+ }
+ INSERT_LIST(args_splat, tmp);
+ nsplat++;
+ *flag |= VM_CALL_ARGS_SPLAT;
+ if (nd_type(argn->nd_body) == NODE_HASH)
+ *flag |= VM_CALL_KW_SPLAT;
+
+ if (next_is_array) {
+ int len = compile_array(iseq, args, argn->nd_head, COMPILE_ARRAY_TYPE_ARGS, NULL, flag, FALSE);
+ if (len < 0) return Qnil;
+ argc = INT2FIX(len + 1);
+ }
+ else {
+ argn = argn->nd_head;
+ goto setup_argn;
+ }
+ break;
+ }
+ case NODE_ARRAY:
+ {
+ int len = compile_array(iseq, args, argn, COMPILE_ARRAY_TYPE_ARGS, keywords, flag, FALSE);
+ if (len < 0) return Qnil;
+ argc = INT2FIX(len);
+ break;
+ }
+ default: {
+ UNKNOWN_NODE("setup_arg", argn, Qnil);
+ }
+ }
+ }
+
+ if (nsplat > 1) {
+ int i;
+ for (i=1; i<nsplat; i++) {
+ ADD_INSN(args_splat, nd_line(argn), concatarray);
+ }
+ }
+
+ if (!LIST_INSN_SIZE_ZERO(args_splat)) {
+ ADD_SEQ(args, args_splat);
+ }
+
+ if (*flag & VM_CALL_ARGS_BLOCKARG) {
+ if (LIST_INSN_SIZE_ONE(arg_block)) {
+ LINK_ELEMENT *elem = FIRST_ELEMENT(arg_block);
+ if (elem->type == ISEQ_ELEMENT_INSN) {
+ INSN *iobj = (INSN *)elem;
+ if (iobj->insn_id == BIN(getblockparam)) {
+ iobj->insn_id = BIN(getlocal);
+ *flag |= VM_CALL_ARGS_BLOCKARG_BLOCKPARAM;
+ }
+ }
+ }
+ ADD_SEQ(args, arg_block);
+ }
+ return argc;
}
-static void
-build_postexe_iseq(rb_iseq_t *iseq, LINK_ANCHOR *ret, const void *ptr)
+static VALUE
+build_postexe_iseq(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *body)
{
- const NODE *body = ptr;
int line = nd_line(body);
VALUE argc = INT2FIX(0);
- const rb_iseq_t *block = NEW_CHILD_ISEQ(body, make_name_for_block(ISEQ_BODY(iseq)->parent_iseq), ISEQ_TYPE_BLOCK, line);
+ const rb_iseq_t *block = NEW_CHILD_ISEQ(body, make_name_for_block(iseq->body->parent_iseq), ISEQ_TYPE_BLOCK, line);
- ADD_INSN1(ret, body, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_CALL_WITH_BLOCK(ret, body, id_core_set_postexe, argc, block);
- RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)block);
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_CALL_WITH_BLOCK(ret, line, id_core_set_postexe, argc, block);
iseq_set_local_table(iseq, 0);
+ return Qnil;
}
static void
@@ -6007,72 +4555,63 @@ compile_named_capture_assign(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE
const NODE *vars;
LINK_ELEMENT *last;
int line = nd_line(node);
- const NODE *line_node = node;
LABEL *fail_label = NEW_LABEL(line), *end_label = NEW_LABEL(line);
#if !(defined(NAMED_CAPTURE_BY_SVAR) && NAMED_CAPTURE_BY_SVAR-0)
- ADD_INSN1(ret, line_node, getglobal, ID2SYM(idBACKREF));
+ ADD_INSN1(ret, line, getglobal, ((VALUE)rb_global_entry(idBACKREF) | 1));
#else
- ADD_INSN2(ret, line_node, getspecial, INT2FIX(1) /* '~' */, INT2FIX(0));
+ ADD_INSN2(ret, line, getspecial, INT2FIX(1) /* '~' */, INT2FIX(0));
#endif
- ADD_INSN(ret, line_node, dup);
- ADD_INSNL(ret, line_node, branchunless, fail_label);
+ ADD_INSN(ret, line, dup);
+ ADD_INSNL(ret, line, branchunless, fail_label);
for (vars = node; vars; vars = vars->nd_next) {
- INSN *cap;
- if (vars->nd_next) {
- ADD_INSN(ret, line_node, dup);
- }
- last = ret->last;
- NO_CHECK(COMPILE_POPPED(ret, "capture", vars->nd_head));
- last = last->next; /* putobject :var */
- cap = new_insn_send(iseq, line_node, idAREF, INT2FIX(1),
- NULL, INT2FIX(0), NULL);
- ELEM_INSERT_PREV(last->next, (LINK_ELEMENT *)cap);
+ INSN *cap;
+ if (vars->nd_next) {
+ ADD_INSN(ret, line, dup);
+ }
+ last = ret->last;
+ COMPILE_POPPED(ret, "capture", vars->nd_head);
+ last = last->next; /* putobject :var */
+ cap = new_insn_send(iseq, line, idAREF, INT2FIX(1),
+ NULL, INT2FIX(0), NULL);
+ ELEM_INSERT_PREV(last->next, (LINK_ELEMENT *)cap);
#if !defined(NAMED_CAPTURE_SINGLE_OPT) || NAMED_CAPTURE_SINGLE_OPT-0
- if (!vars->nd_next && vars == node) {
- /* only one name */
- DECL_ANCHOR(nom);
+ if (!vars->nd_next && vars == node) {
+ /* only one name */
+ DECL_ANCHOR(nom);
- INIT_ANCHOR(nom);
- ADD_INSNL(nom, line_node, jump, end_label);
- ADD_LABEL(nom, fail_label);
+ INIT_ANCHOR(nom);
+ ADD_INSNL(nom, line, jump, end_label);
+ ADD_LABEL(nom, fail_label);
# if 0 /* $~ must be MatchData or nil */
- ADD_INSN(nom, line_node, pop);
- ADD_INSN(nom, line_node, putnil);
+ ADD_INSN(nom, line, pop);
+ ADD_INSN(nom, line, putnil);
# endif
- ADD_LABEL(nom, end_label);
- (nom->last->next = cap->link.next)->prev = nom->last;
- (cap->link.next = nom->anchor.next)->prev = &cap->link;
- return;
- }
+ ADD_LABEL(nom, end_label);
+ (nom->last->next = cap->link.next)->prev = nom->last;
+ (cap->link.next = nom->anchor.next)->prev = &cap->link;
+ return;
+ }
#endif
}
- ADD_INSNL(ret, line_node, jump, end_label);
+ ADD_INSNL(ret, line, jump, end_label);
ADD_LABEL(ret, fail_label);
- ADD_INSN(ret, line_node, pop);
+ ADD_INSN(ret, line, pop);
for (vars = node; vars; vars = vars->nd_next) {
- last = ret->last;
- NO_CHECK(COMPILE_POPPED(ret, "capture", vars->nd_head));
- last = last->next; /* putobject :var */
- ((INSN*)last)->insn_id = BIN(putnil);
- ((INSN*)last)->operand_size = 0;
+ last = ret->last;
+ COMPILE_POPPED(ret, "capture", vars->nd_head);
+ last = last->next; /* putobject :var */
+ ((INSN*)last)->insn_id = BIN(putnil);
+ ((INSN*)last)->operand_size = 0;
}
ADD_LABEL(ret, end_label);
}
static int
-optimizable_range_item_p(const NODE *n)
+number_literal_p(const NODE *n)
{
- if (!n) return FALSE;
- switch (nd_type(n)) {
- case NODE_LIT:
- return RB_INTEGER_TYPE_P(n->nd_lit);
- case NODE_NIL:
- return TRUE;
- default:
- return FALSE;
- }
+ return (n && nd_type(n) == NODE_LIT && RB_INTEGER_TYPE_P(n->nd_lit));
}
static int
@@ -6082,68 +4621,83 @@ compile_if(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int
const NODE *const node_else = type == NODE_IF ? node->nd_else : node->nd_body;
const int line = nd_line(node);
- const NODE *line_node = node;
+ const int lineno = nd_first_lineno(node);
+ const int column = nd_first_column(node);
+ const int last_lineno = nd_last_lineno(node);
+ const int last_column = nd_last_column(node);
DECL_ANCHOR(cond_seq);
+ DECL_ANCHOR(then_seq);
+ DECL_ANCHOR(else_seq);
LABEL *then_label, *else_label, *end_label;
- VALUE branches = Qfalse;
+ VALUE branches = 0;
+ int ci_size, ci_kw_size;
INIT_ANCHOR(cond_seq);
+ INIT_ANCHOR(then_seq);
+ INIT_ANCHOR(else_seq);
then_label = NEW_LABEL(line);
else_label = NEW_LABEL(line);
end_label = 0;
- compile_branch_condition(iseq, cond_seq, node->nd_cond, then_label, else_label);
+ compile_branch_condition(iseq, cond_seq, node->nd_cond,
+ then_label, else_label);
+
+ ci_size = iseq->body->ci_size;
+ ci_kw_size = iseq->body->ci_kw_size;
+ CHECK(COMPILE_(then_seq, "then", node_body, popped));
+ if (!then_label->refcnt) {
+ iseq->body->ci_size = ci_size;
+ iseq->body->ci_kw_size = ci_kw_size;
+ }
+
+ ci_size = iseq->body->ci_size;
+ ci_kw_size = iseq->body->ci_kw_size;
+ CHECK(COMPILE_(else_seq, "else", node_else, popped));
+ if (!else_label->refcnt) {
+ iseq->body->ci_size = ci_size;
+ iseq->body->ci_kw_size = ci_kw_size;
+ }
+
ADD_SEQ(ret, cond_seq);
if (then_label->refcnt && else_label->refcnt) {
- branches = decl_branch_base(iseq, node, type == NODE_IF ? "if" : "unless");
+ DECL_BRANCH_BASE(branches, lineno, column, last_lineno, last_column, type == NODE_IF ? "if" : "unless");
}
if (then_label->refcnt) {
- ADD_LABEL(ret, then_label);
-
- DECL_ANCHOR(then_seq);
- INIT_ANCHOR(then_seq);
- CHECK(COMPILE_(then_seq, "then", node_body, popped));
-
- if (else_label->refcnt) {
- add_trace_branch_coverage(
- iseq,
- ret,
- node_body ? node_body : node,
- 0,
- type == NODE_IF ? "then" : "else",
- branches);
- end_label = NEW_LABEL(line);
- ADD_INSNL(then_seq, line_node, jump, end_label);
- if (!popped) {
- ADD_INSN(then_seq, line_node, pop);
- }
- }
- ADD_SEQ(ret, then_seq);
+ ADD_LABEL(ret, then_label);
+ if (else_label->refcnt) {
+ ADD_TRACE_BRANCH_COVERAGE(
+ ret,
+ node_body ? nd_first_lineno(node_body) : lineno,
+ node_body ? nd_first_column(node_body) : column,
+ node_body ? nd_last_lineno(node_body) : last_lineno,
+ node_body ? nd_last_column(node_body) : last_column,
+ type == NODE_IF ? "then" : "else",
+ branches);
+ }
+ ADD_SEQ(ret, then_seq);
+ end_label = NEW_LABEL(line);
+ ADD_INSNL(ret, line, jump, end_label);
}
if (else_label->refcnt) {
- ADD_LABEL(ret, else_label);
-
- DECL_ANCHOR(else_seq);
- INIT_ANCHOR(else_seq);
- CHECK(COMPILE_(else_seq, "else", node_else, popped));
-
- if (then_label->refcnt) {
- add_trace_branch_coverage(
- iseq,
- ret,
- node_else ? node_else : node,
- 1,
- type == NODE_IF ? "else" : "then",
- branches);
- }
- ADD_SEQ(ret, else_seq);
+ ADD_LABEL(ret, else_label);
+ if (then_label->refcnt) {
+ ADD_TRACE_BRANCH_COVERAGE(
+ ret,
+ node_else ? nd_first_lineno(node_else) : lineno,
+ node_else ? nd_first_column(node_else) : column,
+ node_else ? nd_last_lineno(node_else) : last_lineno,
+ node_else ? nd_last_column(node_else) : last_column,
+ type == NODE_IF ? "else" : "then",
+ branches);
+ }
+ ADD_SEQ(ret, else_seq);
}
if (end_label) {
- ADD_LABEL(ret, end_label);
+ ADD_LABEL(ret, end_label);
}
return COMPILE_OK;
@@ -6160,27 +4714,32 @@ compile_case(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_nod
DECL_ANCHOR(cond_seq);
int only_special_literals = 1;
VALUE literals = rb_hash_new();
- int line;
+ int line, lineno, column, last_lineno, last_column;
enum node_type type;
- const NODE *line_node;
- VALUE branches = Qfalse;
- int branch_id = 0;
+ VALUE branches = 0;
INIT_ANCHOR(head);
INIT_ANCHOR(body_seq);
INIT_ANCHOR(cond_seq);
- RHASH_TBL_RAW(literals)->type = &cdhash_type;
+ rb_hash_tbl_raw(literals)->type = &cdhash_type;
CHECK(COMPILE(head, "case base", node->nd_head));
- branches = decl_branch_base(iseq, node, "case");
+ DECL_BRANCH_BASE(branches, nd_first_lineno(node), nd_first_column(node), nd_last_lineno(node), nd_last_column(node), "case");
node = node->nd_body;
- EXPECT_NODE("NODE_CASE", node, NODE_WHEN, COMPILE_NG);
type = nd_type(node);
line = nd_line(node);
- line_node = node;
+ lineno = nd_first_lineno(node);
+ column = nd_first_column(node);
+ last_lineno = nd_last_lineno(node);
+ last_column = nd_last_column(node);
+
+ if (type != NODE_WHEN) {
+ COMPILE_ERROR(ERROR_ARGS "NODE_CASE: unexpected node. must be NODE_WHEN, but %s", ruby_node_name(type));
+ return COMPILE_NG;
+ }
endlabel = NEW_LABEL(line);
elselabel = NEW_LABEL(line);
@@ -6188,74 +4747,81 @@ compile_case(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_nod
ADD_SEQ(ret, head); /* case VAL */
while (type == NODE_WHEN) {
- LABEL *l1;
-
- l1 = NEW_LABEL(line);
- ADD_LABEL(body_seq, l1);
- ADD_INSN(body_seq, line_node, pop);
- add_trace_branch_coverage(
- iseq,
- body_seq,
- node->nd_body ? node->nd_body : node,
- branch_id++,
- "when",
- branches);
- CHECK(COMPILE_(body_seq, "when body", node->nd_body, popped));
- ADD_INSNL(body_seq, line_node, jump, endlabel);
-
- vals = node->nd_head;
- if (vals) {
- switch (nd_type(vals)) {
- case NODE_LIST:
- only_special_literals = when_vals(iseq, cond_seq, vals, l1, only_special_literals, literals);
- if (only_special_literals < 0) return COMPILE_NG;
- break;
- case NODE_SPLAT:
- case NODE_ARGSCAT:
- case NODE_ARGSPUSH:
- only_special_literals = 0;
- CHECK(when_splat_vals(iseq, cond_seq, vals, l1, only_special_literals, literals));
- break;
- default:
- UNKNOWN_NODE("NODE_CASE", vals, COMPILE_NG);
- }
- }
- else {
- EXPECT_NODE_NONULL("NODE_CASE", node, NODE_LIST, COMPILE_NG);
- }
-
- node = node->nd_next;
- if (!node) {
- break;
- }
- type = nd_type(node);
- line = nd_line(node);
- line_node = node;
+ LABEL *l1;
+
+ l1 = NEW_LABEL(line);
+ ADD_LABEL(body_seq, l1);
+ ADD_INSN(body_seq, line, pop);
+ ADD_TRACE_BRANCH_COVERAGE(
+ body_seq,
+ node->nd_body ? nd_first_lineno(node->nd_body) : lineno,
+ node->nd_body ? nd_first_column(node->nd_body) : column,
+ node->nd_body ? nd_last_lineno(node->nd_body) : last_lineno,
+ node->nd_body ? nd_last_column(node->nd_body) : last_column,
+ "when",
+ branches);
+ CHECK(COMPILE_(body_seq, "when body", node->nd_body, popped));
+ ADD_INSNL(body_seq, line, jump, endlabel);
+
+ vals = node->nd_head;
+ if (vals) {
+ switch (nd_type(vals)) {
+ case NODE_ARRAY:
+ only_special_literals = when_vals(iseq, cond_seq, vals, l1, only_special_literals, literals);
+ break;
+ case NODE_SPLAT:
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH:
+ only_special_literals = 0;
+ ADD_INSN (cond_seq, nd_line(vals), dup);
+ CHECK(COMPILE(cond_seq, "when/cond splat", vals));
+ ADD_INSN1(cond_seq, nd_line(vals), checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE | VM_CHECKMATCH_ARRAY));
+ ADD_INSNL(cond_seq, nd_line(vals), branchif, l1);
+ break;
+ default:
+ UNKNOWN_NODE("NODE_CASE", vals, COMPILE_NG);
+ }
+ }
+ else {
+ EXPECT_NODE_NONULL("NODE_CASE", node, NODE_ARRAY, COMPILE_NG);
+ }
+
+ node = node->nd_next;
+ if (!node) {
+ break;
+ }
+ type = nd_type(node);
+ line = nd_line(node);
+ lineno = nd_first_lineno(node);
+ column = nd_first_column(node);
+ last_lineno = nd_last_lineno(node);
+ last_column = nd_last_column(node);
}
/* else */
if (node) {
- ADD_LABEL(cond_seq, elselabel);
- ADD_INSN(cond_seq, line_node, pop);
- add_trace_branch_coverage(iseq, cond_seq, node, branch_id, "else", branches);
- CHECK(COMPILE_(cond_seq, "else", node, popped));
- ADD_INSNL(cond_seq, line_node, jump, endlabel);
+ ADD_LABEL(cond_seq, elselabel);
+ ADD_INSN(cond_seq, line, pop);
+ ADD_TRACE_BRANCH_COVERAGE(cond_seq, nd_first_lineno(node), nd_first_column(node), nd_last_lineno(node), nd_last_column(node), "else", branches);
+ CHECK(COMPILE_(cond_seq, "else", node, popped));
+ ADD_INSNL(cond_seq, line, jump, endlabel);
}
else {
- debugs("== else (implicit)\n");
- ADD_LABEL(cond_seq, elselabel);
- ADD_INSN(cond_seq, orig_node, pop);
- add_trace_branch_coverage(iseq, cond_seq, orig_node, branch_id, "else", branches);
- if (!popped) {
- ADD_INSN(cond_seq, orig_node, putnil);
- }
- ADD_INSNL(cond_seq, orig_node, jump, endlabel);
+ debugs("== else (implicit)\n");
+ ADD_LABEL(cond_seq, elselabel);
+ ADD_INSN(cond_seq, nd_line(orig_node), pop);
+ ADD_TRACE_BRANCH_COVERAGE(cond_seq, nd_first_lineno(orig_node), nd_first_column(orig_node), nd_last_lineno(orig_node), nd_last_column(orig_node), "else", branches);
+ if (!popped) {
+ ADD_INSN(cond_seq, nd_line(orig_node), putnil);
+ }
+ ADD_INSNL(cond_seq, nd_line(orig_node), jump, endlabel);
}
- if (only_special_literals && ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction) {
- ADD_INSN(ret, orig_node, dup);
- ADD_INSN2(ret, orig_node, opt_case_dispatch, literals, elselabel);
- RB_OBJ_WRITTEN(iseq, Qundef, literals);
- LABEL_REF(elselabel);
+ if (only_special_literals) {
+ iseq_add_mark_object(iseq, literals);
+
+ ADD_INSN(ret, nd_line(orig_node), dup);
+ ADD_INSN2(ret, nd_line(orig_node), opt_case_dispatch, literals, elselabel);
+ LABEL_REF(elselabel);
}
ADD_SEQ(ret, cond_seq);
@@ -6272,1166 +4838,89 @@ compile_case2(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_no
const NODE *node = orig_node->nd_body;
LABEL *endlabel;
DECL_ANCHOR(body_seq);
- VALUE branches = Qfalse;
- int branch_id = 0;
+ VALUE branches = 0;
- branches = decl_branch_base(iseq, orig_node, "case");
+ DECL_BRANCH_BASE(branches, nd_first_lineno(orig_node), nd_first_column(orig_node), nd_last_lineno(orig_node), nd_last_column(orig_node), "case");
INIT_ANCHOR(body_seq);
endlabel = NEW_LABEL(nd_line(node));
- while (node && nd_type_p(node, NODE_WHEN)) {
- const int line = nd_line(node);
- LABEL *l1 = NEW_LABEL(line);
- ADD_LABEL(body_seq, l1);
- add_trace_branch_coverage(
- iseq,
- body_seq,
- node->nd_body ? node->nd_body : node,
- branch_id++,
- "when",
- branches);
- CHECK(COMPILE_(body_seq, "when", node->nd_body, popped));
- ADD_INSNL(body_seq, node, jump, endlabel);
-
- vals = node->nd_head;
- if (!vals) {
- EXPECT_NODE_NONULL("NODE_WHEN", node, NODE_LIST, COMPILE_NG);
- }
- switch (nd_type(vals)) {
- case NODE_LIST:
- while (vals) {
- LABEL *lnext;
- val = vals->nd_head;
- lnext = NEW_LABEL(nd_line(val));
- debug_compile("== when2\n", (void)0);
- CHECK(compile_branch_condition(iseq, ret, val, l1, lnext));
- ADD_LABEL(ret, lnext);
- vals = vals->nd_next;
- }
- break;
- case NODE_SPLAT:
- case NODE_ARGSCAT:
- case NODE_ARGSPUSH:
- ADD_INSN(ret, vals, putnil);
- CHECK(COMPILE(ret, "when2/cond splat", vals));
- ADD_INSN1(ret, vals, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_WHEN | VM_CHECKMATCH_ARRAY));
- ADD_INSNL(ret, vals, branchif, l1);
- break;
- default:
- UNKNOWN_NODE("NODE_WHEN", vals, COMPILE_NG);
- }
- node = node->nd_next;
+ while (node && nd_type(node) == NODE_WHEN) {
+ const int line = nd_line(node);
+ const int lineno = nd_first_lineno(node);
+ const int column = nd_first_column(node);
+ const int last_lineno = nd_last_lineno(node);
+ const int last_column = nd_last_column(node);
+ LABEL *l1 = NEW_LABEL(line);
+ ADD_LABEL(body_seq, l1);
+ ADD_TRACE_BRANCH_COVERAGE(
+ body_seq,
+ node->nd_body ? nd_first_lineno(node->nd_body) : lineno,
+ node->nd_body ? nd_first_column(node->nd_body) : column,
+ node->nd_body ? nd_last_lineno(node->nd_body) : last_lineno,
+ node->nd_body ? nd_last_column(node->nd_body) : last_column,
+ "when",
+ branches);
+ CHECK(COMPILE_(body_seq, "when", node->nd_body, popped));
+ ADD_INSNL(body_seq, line, jump, endlabel);
+
+ vals = node->nd_head;
+ if (!vals) {
+ COMPILE_ERROR(ERROR_ARGS "NODE_WHEN: must be NODE_ARRAY, but 0");
+ return COMPILE_NG;
+ }
+ switch (nd_type(vals)) {
+ case NODE_ARRAY:
+ while (vals) {
+ val = vals->nd_head;
+ CHECK(COMPILE(ret, "when2", val));
+ ADD_INSNL(ret, nd_line(val), branchif, l1);
+ vals = vals->nd_next;
+ }
+ break;
+ case NODE_SPLAT:
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH:
+ ADD_INSN(ret, nd_line(vals), putnil);
+ CHECK(COMPILE(ret, "when2/cond splat", vals));
+ ADD_INSN1(ret, nd_line(vals), checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_WHEN | VM_CHECKMATCH_ARRAY));
+ ADD_INSNL(ret, nd_line(vals), branchif, l1);
+ break;
+ default:
+ UNKNOWN_NODE("NODE_WHEN", vals, COMPILE_NG);
+ }
+ node = node->nd_next;
}
/* else */
- add_trace_branch_coverage(
- iseq,
- ret,
- node ? node : orig_node,
- branch_id,
- "else",
- branches);
+ ADD_TRACE_BRANCH_COVERAGE(
+ ret,
+ node ? nd_first_lineno(node) : nd_first_lineno(orig_node),
+ node ? nd_first_column(node) : nd_first_column(orig_node),
+ node ? nd_last_lineno(node) : nd_last_lineno(orig_node),
+ node ? nd_last_column(node) : nd_last_column(orig_node),
+ "else",
+ branches);
CHECK(COMPILE_(ret, "else", node, popped));
- ADD_INSNL(ret, orig_node, jump, endlabel);
-
- ADD_SEQ(ret, body_seq);
- ADD_LABEL(ret, endlabel);
- return COMPILE_OK;
-}
-
-static int iseq_compile_pattern_match(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *unmatched, bool in_single_pattern, bool in_alt_pattern, int base_index, bool use_deconstructed_cache);
-
-static int iseq_compile_pattern_constant(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *match_failed, bool in_single_pattern, int base_index);
-static int iseq_compile_array_deconstruct(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *deconstruct, LABEL *deconstructed, LABEL *match_failed, LABEL *type_error, bool in_single_pattern, int base_index, bool use_deconstructed_cache);
-static int iseq_compile_pattern_set_general_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE errmsg, int base_index);
-static int iseq_compile_pattern_set_length_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE errmsg, VALUE pattern_length, int base_index);
-static int iseq_compile_pattern_set_eqq_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int base_index);
-
-#define CASE3_BI_OFFSET_DECONSTRUCTED_CACHE 0
-#define CASE3_BI_OFFSET_ERROR_STRING 1
-#define CASE3_BI_OFFSET_KEY_ERROR_P 2
-#define CASE3_BI_OFFSET_KEY_ERROR_MATCHEE 3
-#define CASE3_BI_OFFSET_KEY_ERROR_KEY 4
-
-static int
-iseq_compile_pattern_each(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *matched, LABEL *unmatched, bool in_single_pattern, bool in_alt_pattern, int base_index, bool use_deconstructed_cache)
-{
- const int line = nd_line(node);
- const NODE *line_node = node;
-
- switch (nd_type(node)) {
- case NODE_ARYPTN: {
- /*
- * if pattern.use_rest_num?
- * rest_num = 0
- * end
- * if pattern.has_constant_node?
- * unless pattern.constant === obj
- * goto match_failed
- * end
- * end
- * unless obj.respond_to?(:deconstruct)
- * goto match_failed
- * end
- * d = obj.deconstruct
- * unless Array === d
- * goto type_error
- * end
- * min_argc = pattern.pre_args_num + pattern.post_args_num
- * if pattern.has_rest_arg?
- * unless d.length >= min_argc
- * goto match_failed
- * end
- * else
- * unless d.length == min_argc
- * goto match_failed
- * end
- * end
- * pattern.pre_args_num.each do |i|
- * unless pattern.pre_args[i].match?(d[i])
- * goto match_failed
- * end
- * end
- * if pattern.use_rest_num?
- * rest_num = d.length - min_argc
- * if pattern.has_rest_arg? && pattern.has_rest_arg_id # not `*`, but `*rest`
- * unless pattern.rest_arg.match?(d[pattern.pre_args_num, rest_num])
- * goto match_failed
- * end
- * end
- * end
- * pattern.post_args_num.each do |i|
- * j = pattern.pre_args_num + i
- * j += rest_num
- * unless pattern.post_args[i].match?(d[j])
- * goto match_failed
- * end
- * end
- * goto matched
- * type_error:
- * FrozenCore.raise TypeError
- * match_failed:
- * goto unmatched
- */
- struct rb_ary_pattern_info *apinfo = node->nd_apinfo;
- const NODE *args = apinfo->pre_args;
- const int pre_args_num = apinfo->pre_args ? rb_long2int(apinfo->pre_args->nd_alen) : 0;
- const int post_args_num = apinfo->post_args ? rb_long2int(apinfo->post_args->nd_alen) : 0;
-
- const int min_argc = pre_args_num + post_args_num;
- const int use_rest_num = apinfo->rest_arg && (NODE_NAMED_REST_P(apinfo->rest_arg) ||
- (!NODE_NAMED_REST_P(apinfo->rest_arg) && post_args_num > 0));
-
- LABEL *match_failed, *type_error, *deconstruct, *deconstructed;
- int i;
- match_failed = NEW_LABEL(line);
- type_error = NEW_LABEL(line);
- deconstruct = NEW_LABEL(line);
- deconstructed = NEW_LABEL(line);
-
- if (use_rest_num) {
- ADD_INSN1(ret, line_node, putobject, INT2FIX(0)); /* allocate stack for rest_num */
- ADD_INSN(ret, line_node, swap);
- if (base_index) {
- base_index++;
- }
- }
-
- CHECK(iseq_compile_pattern_constant(iseq, ret, node, match_failed, in_single_pattern, base_index));
-
- CHECK(iseq_compile_array_deconstruct(iseq, ret, node, deconstruct, deconstructed, match_failed, type_error, in_single_pattern, base_index, use_deconstructed_cache));
-
- ADD_INSN(ret, line_node, dup);
- ADD_SEND(ret, line_node, idLength, INT2FIX(0));
- ADD_INSN1(ret, line_node, putobject, INT2FIX(min_argc));
- ADD_SEND(ret, line_node, apinfo->rest_arg ? idGE : idEq, INT2FIX(1)); // (1)
- if (in_single_pattern) {
- CHECK(iseq_compile_pattern_set_length_errmsg(iseq, ret, node,
- apinfo->rest_arg ? rb_fstring_lit("%p length mismatch (given %p, expected %p+)") :
- rb_fstring_lit("%p length mismatch (given %p, expected %p)"),
- INT2FIX(min_argc), base_index + 1 /* (1) */));
- }
- ADD_INSNL(ret, line_node, branchunless, match_failed);
-
- for (i = 0; i < pre_args_num; i++) {
- ADD_INSN(ret, line_node, dup);
- ADD_INSN1(ret, line_node, putobject, INT2FIX(i));
- ADD_SEND(ret, line_node, idAREF, INT2FIX(1)); // (2)
- CHECK(iseq_compile_pattern_match(iseq, ret, args->nd_head, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (2) */, false));
- args = args->nd_next;
- }
-
- if (apinfo->rest_arg) {
- if (NODE_NAMED_REST_P(apinfo->rest_arg)) {
- ADD_INSN(ret, line_node, dup);
- ADD_INSN1(ret, line_node, putobject, INT2FIX(pre_args_num));
- ADD_INSN1(ret, line_node, topn, INT2FIX(1));
- ADD_SEND(ret, line_node, idLength, INT2FIX(0));
- ADD_INSN1(ret, line_node, putobject, INT2FIX(min_argc));
- ADD_SEND(ret, line_node, idMINUS, INT2FIX(1));
- ADD_INSN1(ret, line_node, setn, INT2FIX(4));
- ADD_SEND(ret, line_node, idAREF, INT2FIX(2)); // (3)
-
- CHECK(iseq_compile_pattern_match(iseq, ret, apinfo->rest_arg, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (3) */, false));
- }
- else {
- if (post_args_num > 0) {
- ADD_INSN(ret, line_node, dup);
- ADD_SEND(ret, line_node, idLength, INT2FIX(0));
- ADD_INSN1(ret, line_node, putobject, INT2FIX(min_argc));
- ADD_SEND(ret, line_node, idMINUS, INT2FIX(1));
- ADD_INSN1(ret, line_node, setn, INT2FIX(2));
- ADD_INSN(ret, line_node, pop);
- }
- }
- }
-
- args = apinfo->post_args;
- for (i = 0; i < post_args_num; i++) {
- ADD_INSN(ret, line_node, dup);
-
- ADD_INSN1(ret, line_node, putobject, INT2FIX(pre_args_num + i));
- ADD_INSN1(ret, line_node, topn, INT2FIX(3));
- ADD_SEND(ret, line_node, idPLUS, INT2FIX(1));
-
- ADD_SEND(ret, line_node, idAREF, INT2FIX(1)); // (4)
- CHECK(iseq_compile_pattern_match(iseq, ret, args->nd_head, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (4) */, false));
- args = args->nd_next;
- }
-
- ADD_INSN(ret, line_node, pop);
- if (use_rest_num) {
- ADD_INSN(ret, line_node, pop);
- }
- ADD_INSNL(ret, line_node, jump, matched);
- ADD_INSN(ret, line_node, putnil);
- if (use_rest_num) {
- ADD_INSN(ret, line_node, putnil);
- }
-
- ADD_LABEL(ret, type_error);
- ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line_node, putobject, rb_eTypeError);
- ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("deconstruct must return Array"));
- ADD_SEND(ret, line_node, id_core_raise, INT2FIX(2));
- ADD_INSN(ret, line_node, pop);
-
- ADD_LABEL(ret, match_failed);
- ADD_INSN(ret, line_node, pop);
- if (use_rest_num) {
- ADD_INSN(ret, line_node, pop);
- }
- ADD_INSNL(ret, line_node, jump, unmatched);
-
- break;
- }
- case NODE_FNDPTN: {
- /*
- * if pattern.has_constant_node?
- * unless pattern.constant === obj
- * goto match_failed
- * end
- * end
- * unless obj.respond_to?(:deconstruct)
- * goto match_failed
- * end
- * d = obj.deconstruct
- * unless Array === d
- * goto type_error
- * end
- * unless d.length >= pattern.args_num
- * goto match_failed
- * end
- *
- * begin
- * len = d.length
- * limit = d.length - pattern.args_num
- * i = 0
- * while i <= limit
- * if pattern.args_num.times.all? {|j| pattern.args[j].match?(d[i+j]) }
- * if pattern.has_pre_rest_arg_id
- * unless pattern.pre_rest_arg.match?(d[0, i])
- * goto find_failed
- * end
- * end
- * if pattern.has_post_rest_arg_id
- * unless pattern.post_rest_arg.match?(d[i+pattern.args_num, len])
- * goto find_failed
- * end
- * end
- * goto find_succeeded
- * end
- * i+=1
- * end
- * find_failed:
- * goto match_failed
- * find_succeeded:
- * end
- *
- * goto matched
- * type_error:
- * FrozenCore.raise TypeError
- * match_failed:
- * goto unmatched
- */
- struct rb_fnd_pattern_info *fpinfo = node->nd_fpinfo;
- const NODE *args = fpinfo->args;
- const int args_num = fpinfo->args ? rb_long2int(fpinfo->args->nd_alen) : 0;
-
- LABEL *match_failed, *type_error, *deconstruct, *deconstructed;
- match_failed = NEW_LABEL(line);
- type_error = NEW_LABEL(line);
- deconstruct = NEW_LABEL(line);
- deconstructed = NEW_LABEL(line);
-
- CHECK(iseq_compile_pattern_constant(iseq, ret, node, match_failed, in_single_pattern, base_index));
-
- CHECK(iseq_compile_array_deconstruct(iseq, ret, node, deconstruct, deconstructed, match_failed, type_error, in_single_pattern, base_index, use_deconstructed_cache));
-
- ADD_INSN(ret, line_node, dup);
- ADD_SEND(ret, line_node, idLength, INT2FIX(0));
- ADD_INSN1(ret, line_node, putobject, INT2FIX(args_num));
- ADD_SEND(ret, line_node, idGE, INT2FIX(1)); // (1)
- if (in_single_pattern) {
- CHECK(iseq_compile_pattern_set_length_errmsg(iseq, ret, node, rb_fstring_lit("%p length mismatch (given %p, expected %p+)"), INT2FIX(args_num), base_index + 1 /* (1) */));
- }
- ADD_INSNL(ret, line_node, branchunless, match_failed);
-
- {
- LABEL *while_begin = NEW_LABEL(nd_line(node));
- LABEL *next_loop = NEW_LABEL(nd_line(node));
- LABEL *find_succeeded = NEW_LABEL(line);
- LABEL *find_failed = NEW_LABEL(nd_line(node));
- int j;
-
- ADD_INSN(ret, line_node, dup); /* allocate stack for len */
- ADD_SEND(ret, line_node, idLength, INT2FIX(0)); // (2)
-
- ADD_INSN(ret, line_node, dup); /* allocate stack for limit */
- ADD_INSN1(ret, line_node, putobject, INT2FIX(args_num));
- ADD_SEND(ret, line_node, idMINUS, INT2FIX(1)); // (3)
-
- ADD_INSN1(ret, line_node, putobject, INT2FIX(0)); /* allocate stack for i */ // (4)
-
- ADD_LABEL(ret, while_begin);
-
- ADD_INSN(ret, line_node, dup);
- ADD_INSN1(ret, line_node, topn, INT2FIX(2));
- ADD_SEND(ret, line_node, idLE, INT2FIX(1));
- ADD_INSNL(ret, line_node, branchunless, find_failed);
-
- for (j = 0; j < args_num; j++) {
- ADD_INSN1(ret, line_node, topn, INT2FIX(3));
- ADD_INSN1(ret, line_node, topn, INT2FIX(1));
- if (j != 0) {
- ADD_INSN1(ret, line_node, putobject, INT2FIX(j));
- ADD_SEND(ret, line_node, idPLUS, INT2FIX(1));
- }
- ADD_SEND(ret, line_node, idAREF, INT2FIX(1)); // (5)
-
- CHECK(iseq_compile_pattern_match(iseq, ret, args->nd_head, next_loop, in_single_pattern, in_alt_pattern, base_index + 4 /* (2), (3), (4), (5) */, false));
- args = args->nd_next;
- }
-
- if (NODE_NAMED_REST_P(fpinfo->pre_rest_arg)) {
- ADD_INSN1(ret, line_node, topn, INT2FIX(3));
- ADD_INSN1(ret, line_node, putobject, INT2FIX(0));
- ADD_INSN1(ret, line_node, topn, INT2FIX(2));
- ADD_SEND(ret, line_node, idAREF, INT2FIX(2)); // (6)
- CHECK(iseq_compile_pattern_match(iseq, ret, fpinfo->pre_rest_arg, find_failed, in_single_pattern, in_alt_pattern, base_index + 4 /* (2), (3), (4), (6) */, false));
- }
- if (NODE_NAMED_REST_P(fpinfo->post_rest_arg)) {
- ADD_INSN1(ret, line_node, topn, INT2FIX(3));
- ADD_INSN1(ret, line_node, topn, INT2FIX(1));
- ADD_INSN1(ret, line_node, putobject, INT2FIX(args_num));
- ADD_SEND(ret, line_node, idPLUS, INT2FIX(1));
- ADD_INSN1(ret, line_node, topn, INT2FIX(3));
- ADD_SEND(ret, line_node, idAREF, INT2FIX(2)); // (7)
- CHECK(iseq_compile_pattern_match(iseq, ret, fpinfo->post_rest_arg, find_failed, in_single_pattern, in_alt_pattern, base_index + 4 /* (2), (3),(4), (7) */, false));
- }
- ADD_INSNL(ret, line_node, jump, find_succeeded);
-
- ADD_LABEL(ret, next_loop);
- ADD_INSN1(ret, line_node, putobject, INT2FIX(1));
- ADD_SEND(ret, line_node, idPLUS, INT2FIX(1));
- ADD_INSNL(ret, line_node, jump, while_begin);
-
- ADD_LABEL(ret, find_failed);
- ADD_INSN1(ret, line_node, adjuststack, INT2FIX(3));
- if (in_single_pattern) {
- ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("%p does not match to find pattern"));
- ADD_INSN1(ret, line_node, topn, INT2FIX(2));
- ADD_SEND(ret, line_node, id_core_sprintf, INT2FIX(2)); // (8)
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 1 /* (8) */)); // (9)
-
- ADD_INSN1(ret, line_node, putobject, Qfalse);
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 2 /* (8), (9) */));
-
- ADD_INSN(ret, line_node, pop);
- ADD_INSN(ret, line_node, pop);
- }
- ADD_INSNL(ret, line_node, jump, match_failed);
- ADD_INSN1(ret, line_node, dupn, INT2FIX(3));
-
- ADD_LABEL(ret, find_succeeded);
- ADD_INSN1(ret, line_node, adjuststack, INT2FIX(3));
- }
-
- ADD_INSN(ret, line_node, pop);
- ADD_INSNL(ret, line_node, jump, matched);
- ADD_INSN(ret, line_node, putnil);
-
- ADD_LABEL(ret, type_error);
- ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line_node, putobject, rb_eTypeError);
- ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("deconstruct must return Array"));
- ADD_SEND(ret, line_node, id_core_raise, INT2FIX(2));
- ADD_INSN(ret, line_node, pop);
-
- ADD_LABEL(ret, match_failed);
- ADD_INSN(ret, line_node, pop);
- ADD_INSNL(ret, line_node, jump, unmatched);
-
- break;
- }
- case NODE_HSHPTN: {
- /*
- * keys = nil
- * if pattern.has_kw_args_node? && !pattern.has_kw_rest_arg_node?
- * keys = pattern.kw_args_node.keys
- * end
- * if pattern.has_constant_node?
- * unless pattern.constant === obj
- * goto match_failed
- * end
- * end
- * unless obj.respond_to?(:deconstruct_keys)
- * goto match_failed
- * end
- * d = obj.deconstruct_keys(keys)
- * unless Hash === d
- * goto type_error
- * end
- * if pattern.has_kw_rest_arg_node?
- * d = d.dup
- * end
- * if pattern.has_kw_args_node?
- * pattern.kw_args_node.each |k,|
- * unless d.key?(k)
- * goto match_failed
- * end
- * end
- * pattern.kw_args_node.each |k, pat|
- * if pattern.has_kw_rest_arg_node?
- * unless pat.match?(d.delete(k))
- * goto match_failed
- * end
- * else
- * unless pat.match?(d[k])
- * goto match_failed
- * end
- * end
- * end
- * else
- * unless d.empty?
- * goto match_failed
- * end
- * end
- * if pattern.has_kw_rest_arg_node?
- * if pattern.no_rest_keyword?
- * unless d.empty?
- * goto match_failed
- * end
- * else
- * unless pattern.kw_rest_arg_node.match?(d)
- * goto match_failed
- * end
- * end
- * end
- * goto matched
- * type_error:
- * FrozenCore.raise TypeError
- * match_failed:
- * goto unmatched
- */
- LABEL *match_failed, *type_error;
- VALUE keys = Qnil;
-
- match_failed = NEW_LABEL(line);
- type_error = NEW_LABEL(line);
-
- if (node->nd_pkwargs && !node->nd_pkwrestarg) {
- const NODE *kw_args = node->nd_pkwargs->nd_head;
- keys = rb_ary_new_capa(kw_args ? kw_args->nd_alen/2 : 0);
- while (kw_args) {
- rb_ary_push(keys, kw_args->nd_head->nd_lit);
- kw_args = kw_args->nd_next->nd_next;
- }
- }
-
- CHECK(iseq_compile_pattern_constant(iseq, ret, node, match_failed, in_single_pattern, base_index));
-
- ADD_INSN(ret, line_node, dup);
- ADD_INSN1(ret, line_node, putobject, ID2SYM(rb_intern("deconstruct_keys")));
- ADD_SEND(ret, line_node, idRespond_to, INT2FIX(1)); // (1)
- if (in_single_pattern) {
- CHECK(iseq_compile_pattern_set_general_errmsg(iseq, ret, node, rb_fstring_lit("%p does not respond to #deconstruct_keys"), base_index + 1 /* (1) */));
- }
- ADD_INSNL(ret, line_node, branchunless, match_failed);
-
- if (NIL_P(keys)) {
- ADD_INSN(ret, line_node, putnil);
- }
- else {
- ADD_INSN1(ret, line_node, duparray, keys);
- RB_OBJ_WRITTEN(iseq, Qundef, rb_obj_hide(keys));
- }
- ADD_SEND(ret, line_node, rb_intern("deconstruct_keys"), INT2FIX(1)); // (2)
-
- ADD_INSN(ret, line_node, dup);
- ADD_INSN1(ret, line_node, checktype, INT2FIX(T_HASH));
- ADD_INSNL(ret, line_node, branchunless, type_error);
-
- if (node->nd_pkwrestarg) {
- ADD_SEND(ret, line_node, rb_intern("dup"), INT2FIX(0));
- }
-
- if (node->nd_pkwargs) {
- int i;
- int keys_num;
- const NODE *args;
- args = node->nd_pkwargs->nd_head;
- if (args) {
- DECL_ANCHOR(match_values);
- INIT_ANCHOR(match_values);
- keys_num = rb_long2int(args->nd_alen) / 2;
- for (i = 0; i < keys_num; i++) {
- NODE *key_node = args->nd_head;
- NODE *value_node = args->nd_next->nd_head;
- VALUE key;
-
- if (!nd_type_p(key_node, NODE_LIT)) {
- UNKNOWN_NODE("NODE_IN", key_node, COMPILE_NG);
- }
- key = key_node->nd_lit;
-
- ADD_INSN(ret, line_node, dup);
- ADD_INSN1(ret, line_node, putobject, key);
- ADD_SEND(ret, line_node, rb_intern("key?"), INT2FIX(1)); // (3)
- if (in_single_pattern) {
- LABEL *match_succeeded;
- match_succeeded = NEW_LABEL(line);
-
- ADD_INSN(ret, line_node, dup);
- ADD_INSNL(ret, line_node, branchif, match_succeeded);
-
- ADD_INSN1(ret, line_node, putobject, rb_str_freeze(rb_sprintf("key not found: %+"PRIsVALUE, key))); // (4)
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 2 /* (3), (4) */));
- ADD_INSN1(ret, line_node, putobject, Qtrue); // (5)
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 3 /* (3), (4), (5) */));
- ADD_INSN1(ret, line_node, topn, INT2FIX(3)); // (6)
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_MATCHEE + 4 /* (3), (4), (5), (6) */));
- ADD_INSN1(ret, line_node, putobject, key); // (7)
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_KEY + 5 /* (3), (4), (5), (6), (7) */));
-
- ADD_INSN1(ret, line_node, adjuststack, INT2FIX(4));
-
- ADD_LABEL(ret, match_succeeded);
- }
- ADD_INSNL(ret, line_node, branchunless, match_failed);
-
- ADD_INSN(match_values, line_node, dup);
- ADD_INSN1(match_values, line_node, putobject, key);
- ADD_SEND(match_values, line_node, node->nd_pkwrestarg ? rb_intern("delete") : idAREF, INT2FIX(1)); // (8)
- CHECK(iseq_compile_pattern_match(iseq, match_values, value_node, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (8) */, false));
- args = args->nd_next->nd_next;
- }
- ADD_SEQ(ret, match_values);
- }
- }
- else {
- ADD_INSN(ret, line_node, dup);
- ADD_SEND(ret, line_node, idEmptyP, INT2FIX(0)); // (9)
- if (in_single_pattern) {
- CHECK(iseq_compile_pattern_set_general_errmsg(iseq, ret, node, rb_fstring_lit("%p is not empty"), base_index + 1 /* (9) */));
- }
- ADD_INSNL(ret, line_node, branchunless, match_failed);
- }
-
- if (node->nd_pkwrestarg) {
- if (node->nd_pkwrestarg == NODE_SPECIAL_NO_REST_KEYWORD) {
- ADD_INSN(ret, line_node, dup);
- ADD_SEND(ret, line_node, idEmptyP, INT2FIX(0)); // (10)
- if (in_single_pattern) {
- CHECK(iseq_compile_pattern_set_general_errmsg(iseq, ret, node, rb_fstring_lit("rest of %p is not empty"), base_index + 1 /* (10) */));
- }
- ADD_INSNL(ret, line_node, branchunless, match_failed);
- }
- else {
- ADD_INSN(ret, line_node, dup); // (11)
- CHECK(iseq_compile_pattern_match(iseq, ret, node->nd_pkwrestarg, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (11) */, false));
- }
- }
-
- ADD_INSN(ret, line_node, pop);
- ADD_INSNL(ret, line_node, jump, matched);
- ADD_INSN(ret, line_node, putnil);
-
- ADD_LABEL(ret, type_error);
- ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line_node, putobject, rb_eTypeError);
- ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("deconstruct_keys must return Hash"));
- ADD_SEND(ret, line_node, id_core_raise, INT2FIX(2));
- ADD_INSN(ret, line_node, pop);
-
- ADD_LABEL(ret, match_failed);
- ADD_INSN(ret, line_node, pop);
- ADD_INSNL(ret, line_node, jump, unmatched);
- break;
- }
- case NODE_LIT:
- case NODE_STR:
- case NODE_XSTR:
- case NODE_DSTR:
- case NODE_DSYM:
- case NODE_DREGX:
- case NODE_LIST:
- case NODE_ZLIST:
- case NODE_LAMBDA:
- case NODE_DOT2:
- case NODE_DOT3:
- case NODE_CONST:
- case NODE_LVAR:
- case NODE_DVAR:
- case NODE_IVAR:
- case NODE_CVAR:
- case NODE_GVAR:
- case NODE_TRUE:
- case NODE_FALSE:
- case NODE_SELF:
- case NODE_NIL:
- case NODE_COLON2:
- case NODE_COLON3:
- case NODE_BEGIN:
- CHECK(COMPILE(ret, "case in literal", node)); // (1)
- if (in_single_pattern) {
- ADD_INSN1(ret, line_node, dupn, INT2FIX(2));
- }
- ADD_INSN1(ret, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE)); // (2)
- if (in_single_pattern) {
- CHECK(iseq_compile_pattern_set_eqq_errmsg(iseq, ret, node, base_index + 2 /* (1), (2) */));
- }
- ADD_INSNL(ret, line_node, branchif, matched);
- ADD_INSNL(ret, line_node, jump, unmatched);
- break;
- case NODE_LASGN: {
- struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
- ID id = node->nd_vid;
- int idx = ISEQ_BODY(body->local_iseq)->local_table_size - get_local_var_idx(iseq, id);
-
- if (in_alt_pattern) {
- const char *name = rb_id2name(id);
- if (name && strlen(name) > 0 && name[0] != '_') {
- COMPILE_ERROR(ERROR_ARGS "illegal variable in alternative pattern (%"PRIsVALUE")",
- rb_id2str(id));
- return COMPILE_NG;
- }
- }
-
- ADD_SETLOCAL(ret, line_node, idx, get_lvar_level(iseq));
- ADD_INSNL(ret, line_node, jump, matched);
- break;
- }
- case NODE_DASGN: {
- int idx, lv, ls;
- ID id = node->nd_vid;
-
- idx = get_dyna_var_idx(iseq, id, &lv, &ls);
-
- if (in_alt_pattern) {
- const char *name = rb_id2name(id);
- if (name && strlen(name) > 0 && name[0] != '_') {
- COMPILE_ERROR(ERROR_ARGS "illegal variable in alternative pattern (%"PRIsVALUE")",
- rb_id2str(id));
- return COMPILE_NG;
- }
- }
-
- if (idx < 0) {
- COMPILE_ERROR(ERROR_ARGS "NODE_DASGN: unknown id (%"PRIsVALUE")",
- rb_id2str(id));
- return COMPILE_NG;
- }
- ADD_SETLOCAL(ret, line_node, ls - idx, lv);
- ADD_INSNL(ret, line_node, jump, matched);
- break;
- }
- case NODE_IF:
- case NODE_UNLESS: {
- LABEL *match_failed;
- match_failed = unmatched;
- CHECK(iseq_compile_pattern_match(iseq, ret, node->nd_body, unmatched, in_single_pattern, in_alt_pattern, base_index, use_deconstructed_cache));
- CHECK(COMPILE(ret, "case in if", node->nd_cond));
- if (in_single_pattern) {
- LABEL *match_succeeded;
- match_succeeded = NEW_LABEL(line);
-
- ADD_INSN(ret, line_node, dup);
- if (nd_type_p(node, NODE_IF)) {
- ADD_INSNL(ret, line_node, branchif, match_succeeded);
- }
- else {
- ADD_INSNL(ret, line_node, branchunless, match_succeeded);
- }
-
- ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("guard clause does not return true")); // (1)
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 1 /* (1) */)); // (2)
- ADD_INSN1(ret, line_node, putobject, Qfalse);
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 2 /* (1), (2) */));
-
- ADD_INSN(ret, line_node, pop);
- ADD_INSN(ret, line_node, pop);
-
- ADD_LABEL(ret, match_succeeded);
- }
- if (nd_type_p(node, NODE_IF)) {
- ADD_INSNL(ret, line_node, branchunless, match_failed);
- }
- else {
- ADD_INSNL(ret, line_node, branchif, match_failed);
- }
- ADD_INSNL(ret, line_node, jump, matched);
- break;
- }
- case NODE_HASH: {
- NODE *n;
- LABEL *match_failed;
- match_failed = NEW_LABEL(line);
-
- n = node->nd_head;
- if (! (nd_type_p(n, NODE_LIST) && n->nd_alen == 2)) {
- COMPILE_ERROR(ERROR_ARGS "unexpected node");
- return COMPILE_NG;
- }
-
- ADD_INSN(ret, line_node, dup); // (1)
- CHECK(iseq_compile_pattern_match(iseq, ret, n->nd_head, match_failed, in_single_pattern, in_alt_pattern, base_index + 1 /* (1) */, use_deconstructed_cache));
- CHECK(iseq_compile_pattern_each(iseq, ret, n->nd_next->nd_head, matched, match_failed, in_single_pattern, in_alt_pattern, base_index, false));
- ADD_INSN(ret, line_node, putnil);
-
- ADD_LABEL(ret, match_failed);
- ADD_INSN(ret, line_node, pop);
- ADD_INSNL(ret, line_node, jump, unmatched);
- break;
- }
- case NODE_OR: {
- LABEL *match_succeeded, *fin;
- match_succeeded = NEW_LABEL(line);
- fin = NEW_LABEL(line);
-
- ADD_INSN(ret, line_node, dup); // (1)
- CHECK(iseq_compile_pattern_each(iseq, ret, node->nd_1st, match_succeeded, fin, in_single_pattern, true, base_index + 1 /* (1) */, use_deconstructed_cache));
- ADD_LABEL(ret, match_succeeded);
- ADD_INSN(ret, line_node, pop);
- ADD_INSNL(ret, line_node, jump, matched);
- ADD_INSN(ret, line_node, putnil);
- ADD_LABEL(ret, fin);
- CHECK(iseq_compile_pattern_each(iseq, ret, node->nd_2nd, matched, unmatched, in_single_pattern, true, base_index, use_deconstructed_cache));
- break;
- }
- default:
- UNKNOWN_NODE("NODE_IN", node, COMPILE_NG);
- }
- return COMPILE_OK;
-}
-
-static int
-iseq_compile_pattern_match(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *unmatched, bool in_single_pattern, bool in_alt_pattern, int base_index, bool use_deconstructed_cache)
-{
- LABEL *fin = NEW_LABEL(nd_line(node));
- CHECK(iseq_compile_pattern_each(iseq, ret, node, fin, unmatched, in_single_pattern, in_alt_pattern, base_index, use_deconstructed_cache));
- ADD_LABEL(ret, fin);
- return COMPILE_OK;
-}
-
-static int
-iseq_compile_pattern_constant(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *match_failed, bool in_single_pattern, int base_index)
-{
- const NODE *line_node = node;
-
- if (node->nd_pconst) {
- ADD_INSN(ret, line_node, dup); // (1)
- CHECK(COMPILE(ret, "constant", node->nd_pconst)); // (2)
- if (in_single_pattern) {
- ADD_INSN1(ret, line_node, dupn, INT2FIX(2));
- }
- ADD_INSN1(ret, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE)); // (3)
- if (in_single_pattern) {
- CHECK(iseq_compile_pattern_set_eqq_errmsg(iseq, ret, node, base_index + 3 /* (1), (2), (3) */));
- }
- ADD_INSNL(ret, line_node, branchunless, match_failed);
- }
- return COMPILE_OK;
-}
-
-
-static int
-iseq_compile_array_deconstruct(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, LABEL *deconstruct, LABEL *deconstructed, LABEL *match_failed, LABEL *type_error, bool in_single_pattern, int base_index, bool use_deconstructed_cache)
-{
- const NODE *line_node = node;
-
- // NOTE: this optimization allows us to re-use the #deconstruct value
- // (or its absence).
- if (use_deconstructed_cache) {
- // If value is nil then we haven't tried to deconstruct
- ADD_INSN1(ret, line_node, topn, INT2FIX(base_index + CASE3_BI_OFFSET_DECONSTRUCTED_CACHE));
- ADD_INSNL(ret, line_node, branchnil, deconstruct);
-
- // If false then the value is not deconstructable
- ADD_INSN1(ret, line_node, topn, INT2FIX(base_index + CASE3_BI_OFFSET_DECONSTRUCTED_CACHE));
- ADD_INSNL(ret, line_node, branchunless, match_failed);
-
- // Drop value, add deconstructed to the stack and jump
- ADD_INSN(ret, line_node, pop); // (1)
- ADD_INSN1(ret, line_node, topn, INT2FIX(base_index + CASE3_BI_OFFSET_DECONSTRUCTED_CACHE - 1 /* (1) */));
- ADD_INSNL(ret, line_node, jump, deconstructed);
- }
- else {
- ADD_INSNL(ret, line_node, jump, deconstruct);
- }
-
- ADD_LABEL(ret, deconstruct);
- ADD_INSN(ret, line_node, dup);
- ADD_INSN1(ret, line_node, putobject, ID2SYM(rb_intern("deconstruct")));
- ADD_SEND(ret, line_node, idRespond_to, INT2FIX(1)); // (2)
-
- // Cache the result of respond_to? (in case it's false is stays there, if true - it's overwritten after #deconstruct)
- if (use_deconstructed_cache) {
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_DECONSTRUCTED_CACHE + 1 /* (2) */));
- }
-
- if (in_single_pattern) {
- CHECK(iseq_compile_pattern_set_general_errmsg(iseq, ret, node, rb_fstring_lit("%p does not respond to #deconstruct"), base_index + 1 /* (2) */));
- }
-
- ADD_INSNL(ret, line_node, branchunless, match_failed);
-
- ADD_SEND(ret, line_node, rb_intern("deconstruct"), INT2FIX(0));
-
- // Cache the result (if it's cacheable - currently, only top-level array patterns)
- if (use_deconstructed_cache) {
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_DECONSTRUCTED_CACHE));
- }
-
- ADD_INSN(ret, line_node, dup);
- ADD_INSN1(ret, line_node, checktype, INT2FIX(T_ARRAY));
- ADD_INSNL(ret, line_node, branchunless, type_error);
-
- ADD_LABEL(ret, deconstructed);
-
- return COMPILE_OK;
-}
-
-static int
-iseq_compile_pattern_set_general_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE errmsg, int base_index)
-{
- /*
- * if match_succeeded?
- * goto match_succeeded
- * end
- * error_string = FrozenCore.sprintf(errmsg, matchee)
- * key_error_p = false
- * match_succeeded:
- */
- const int line = nd_line(node);
- const NODE *line_node = node;
- LABEL *match_succeeded = NEW_LABEL(line);
-
- ADD_INSN(ret, line_node, dup);
- ADD_INSNL(ret, line_node, branchif, match_succeeded);
-
- ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line_node, putobject, errmsg);
- ADD_INSN1(ret, line_node, topn, INT2FIX(3));
- ADD_SEND(ret, line_node, id_core_sprintf, INT2FIX(2)); // (1)
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 1 /* (1) */)); // (2)
-
- ADD_INSN1(ret, line_node, putobject, Qfalse);
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 2 /* (1), (2) */));
-
- ADD_INSN(ret, line_node, pop);
- ADD_INSN(ret, line_node, pop);
- ADD_LABEL(ret, match_succeeded);
-
- return COMPILE_OK;
-}
-
-static int
-iseq_compile_pattern_set_length_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, VALUE errmsg, VALUE pattern_length, int base_index)
-{
- /*
- * if match_succeeded?
- * goto match_succeeded
- * end
- * error_string = FrozenCore.sprintf(errmsg, matchee, matchee.length, pat.length)
- * key_error_p = false
- * match_succeeded:
- */
- const int line = nd_line(node);
- const NODE *line_node = node;
- LABEL *match_succeeded = NEW_LABEL(line);
-
- ADD_INSN(ret, line_node, dup);
- ADD_INSNL(ret, line_node, branchif, match_succeeded);
-
- ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line_node, putobject, errmsg);
- ADD_INSN1(ret, line_node, topn, INT2FIX(3));
- ADD_INSN(ret, line_node, dup);
- ADD_SEND(ret, line_node, idLength, INT2FIX(0));
- ADD_INSN1(ret, line_node, putobject, pattern_length);
- ADD_SEND(ret, line_node, id_core_sprintf, INT2FIX(4)); // (1)
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 1 /* (1) */)); // (2)
-
- ADD_INSN1(ret, line_node, putobject, Qfalse);
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 2/* (1), (2) */));
-
- ADD_INSN(ret, line_node, pop);
- ADD_INSN(ret, line_node, pop);
- ADD_LABEL(ret, match_succeeded);
-
- return COMPILE_OK;
-}
-
-static int
-iseq_compile_pattern_set_eqq_errmsg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int base_index)
-{
- /*
- * if match_succeeded?
- * goto match_succeeded
- * end
- * error_string = FrozenCore.sprintf("%p === %p does not return true", pat, matchee)
- * key_error_p = false
- * match_succeeded:
- */
- const int line = nd_line(node);
- const NODE *line_node = node;
- LABEL *match_succeeded = NEW_LABEL(line);
-
- ADD_INSN(ret, line_node, dup);
- ADD_INSNL(ret, line_node, branchif, match_succeeded);
-
- ADD_INSN1(ret, line_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line_node, putobject, rb_fstring_lit("%p === %p does not return true"));
- ADD_INSN1(ret, line_node, topn, INT2FIX(3));
- ADD_INSN1(ret, line_node, topn, INT2FIX(5));
- ADD_SEND(ret, line_node, id_core_sprintf, INT2FIX(3)); // (1)
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_ERROR_STRING + 1 /* (1) */)); // (2)
-
- ADD_INSN1(ret, line_node, putobject, Qfalse);
- ADD_INSN1(ret, line_node, setn, INT2FIX(base_index + CASE3_BI_OFFSET_KEY_ERROR_P + 2 /* (1), (2) */));
-
- ADD_INSN(ret, line_node, pop);
- ADD_INSN(ret, line_node, pop);
-
- ADD_LABEL(ret, match_succeeded);
- ADD_INSN1(ret, line_node, setn, INT2FIX(2));
- ADD_INSN(ret, line_node, pop);
- ADD_INSN(ret, line_node, pop);
-
- return COMPILE_OK;
-}
-
-static int
-compile_case3(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_node, int popped)
-{
- const NODE *pattern;
- const NODE *node = orig_node;
- LABEL *endlabel, *elselabel;
- DECL_ANCHOR(head);
- DECL_ANCHOR(body_seq);
- DECL_ANCHOR(cond_seq);
- int line;
- enum node_type type;
- const NODE *line_node;
- VALUE branches = 0;
- int branch_id = 0;
- bool single_pattern;
-
- INIT_ANCHOR(head);
- INIT_ANCHOR(body_seq);
- INIT_ANCHOR(cond_seq);
-
- branches = decl_branch_base(iseq, node, "case");
-
- node = node->nd_body;
- EXPECT_NODE("NODE_CASE3", node, NODE_IN, COMPILE_NG);
- type = nd_type(node);
- line = nd_line(node);
- line_node = node;
- single_pattern = !node->nd_next;
-
- endlabel = NEW_LABEL(line);
- elselabel = NEW_LABEL(line);
-
- if (single_pattern) {
- /* allocate stack for ... */
- ADD_INSN(head, line_node, putnil); /* key_error_key */
- ADD_INSN(head, line_node, putnil); /* key_error_matchee */
- ADD_INSN1(head, line_node, putobject, Qfalse); /* key_error_p */
- ADD_INSN(head, line_node, putnil); /* error_string */
- }
- ADD_INSN(head, line_node, putnil); /* allocate stack for cached #deconstruct value */
-
- CHECK(COMPILE(head, "case base", orig_node->nd_head));
-
- ADD_SEQ(ret, head); /* case VAL */
+ ADD_INSNL(ret, nd_line(orig_node), jump, endlabel);
- while (type == NODE_IN) {
- LABEL *l1;
-
- if (branch_id) {
- ADD_INSN(body_seq, line_node, putnil);
- }
- l1 = NEW_LABEL(line);
- ADD_LABEL(body_seq, l1);
- ADD_INSN1(body_seq, line_node, adjuststack, INT2FIX(single_pattern ? 6 : 2));
- add_trace_branch_coverage(
- iseq,
- body_seq,
- node->nd_body ? node->nd_body : node,
- branch_id++,
- "in",
- branches);
- CHECK(COMPILE_(body_seq, "in body", node->nd_body, popped));
- ADD_INSNL(body_seq, line_node, jump, endlabel);
-
- pattern = node->nd_head;
- if (pattern) {
- int pat_line = nd_line(pattern);
- LABEL *next_pat = NEW_LABEL(pat_line);
- ADD_INSN (cond_seq, pattern, dup); /* dup case VAL */
- // NOTE: set base_index (it's "under" the matchee value, so it's position is 2)
- CHECK(iseq_compile_pattern_each(iseq, cond_seq, pattern, l1, next_pat, single_pattern, false, 2, true));
- ADD_LABEL(cond_seq, next_pat);
- LABEL_UNREMOVABLE(next_pat);
- }
- else {
- COMPILE_ERROR(ERROR_ARGS "unexpected node");
- return COMPILE_NG;
- }
-
- node = node->nd_next;
- if (!node) {
- break;
- }
- type = nd_type(node);
- line = nd_line(node);
- line_node = node;
- }
- /* else */
- if (node) {
- ADD_LABEL(cond_seq, elselabel);
- ADD_INSN(cond_seq, line_node, pop);
- ADD_INSN(cond_seq, line_node, pop); /* discard cached #deconstruct value */
- add_trace_branch_coverage(iseq, cond_seq, node, branch_id, "else", branches);
- CHECK(COMPILE_(cond_seq, "else", node, popped));
- ADD_INSNL(cond_seq, line_node, jump, endlabel);
- ADD_INSN(cond_seq, line_node, putnil);
- if (popped) {
- ADD_INSN(cond_seq, line_node, putnil);
- }
- }
- else {
- debugs("== else (implicit)\n");
- ADD_LABEL(cond_seq, elselabel);
- add_trace_branch_coverage(iseq, cond_seq, orig_node, branch_id, "else", branches);
- ADD_INSN1(cond_seq, orig_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
-
- if (single_pattern) {
- /*
- * if key_error_p
- * FrozenCore.raise NoMatchingPatternKeyError.new(FrozenCore.sprintf("%p: %s", case_val, error_string), matchee: key_error_matchee, key: key_error_key)
- * else
- * FrozenCore.raise NoMatchingPatternError, FrozenCore.sprintf("%p: %s", case_val, error_string)
- * end
- */
- LABEL *key_error, *fin;
- struct rb_callinfo_kwarg *kw_arg;
-
- key_error = NEW_LABEL(line);
- fin = NEW_LABEL(line);
-
- kw_arg = rb_xmalloc_mul_add(2, sizeof(VALUE), sizeof(struct rb_callinfo_kwarg));
- kw_arg->keyword_len = 2;
- kw_arg->keywords[0] = ID2SYM(rb_intern("matchee"));
- kw_arg->keywords[1] = ID2SYM(rb_intern("key"));
-
- ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(CASE3_BI_OFFSET_KEY_ERROR_P + 2));
- ADD_INSNL(cond_seq, orig_node, branchif, key_error);
- ADD_INSN1(cond_seq, orig_node, putobject, rb_eNoMatchingPatternError);
- ADD_INSN1(cond_seq, orig_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(cond_seq, orig_node, putobject, rb_fstring_lit("%p: %s"));
- ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(4)); /* case VAL */
- ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(CASE3_BI_OFFSET_ERROR_STRING + 6));
- ADD_SEND(cond_seq, orig_node, id_core_sprintf, INT2FIX(3));
- ADD_SEND(cond_seq, orig_node, id_core_raise, INT2FIX(2));
- ADD_INSNL(cond_seq, orig_node, jump, fin);
-
- ADD_LABEL(cond_seq, key_error);
- ADD_INSN1(cond_seq, orig_node, putobject, rb_eNoMatchingPatternKeyError);
- ADD_INSN1(cond_seq, orig_node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(cond_seq, orig_node, putobject, rb_fstring_lit("%p: %s"));
- ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(4)); /* case VAL */
- ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(CASE3_BI_OFFSET_ERROR_STRING + 6));
- ADD_SEND(cond_seq, orig_node, id_core_sprintf, INT2FIX(3));
- ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(CASE3_BI_OFFSET_KEY_ERROR_MATCHEE + 4));
- ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(CASE3_BI_OFFSET_KEY_ERROR_KEY + 5));
- ADD_SEND_R(cond_seq, orig_node, rb_intern("new"), INT2FIX(1), NULL, INT2FIX(VM_CALL_KWARG), kw_arg);
- ADD_SEND(cond_seq, orig_node, id_core_raise, INT2FIX(1));
-
- ADD_LABEL(cond_seq, fin);
- }
- else {
- ADD_INSN1(cond_seq, orig_node, putobject, rb_eNoMatchingPatternError);
- ADD_INSN1(cond_seq, orig_node, topn, INT2FIX(2));
- ADD_SEND(cond_seq, orig_node, id_core_raise, INT2FIX(2));
- }
- ADD_INSN1(cond_seq, orig_node, adjuststack, INT2FIX(single_pattern ? 7 : 3));
- if (!popped) {
- ADD_INSN(cond_seq, orig_node, putnil);
- }
- ADD_INSNL(cond_seq, orig_node, jump, endlabel);
- ADD_INSN1(cond_seq, orig_node, dupn, INT2FIX(single_pattern ? 5 : 1));
- if (popped) {
- ADD_INSN(cond_seq, line_node, putnil);
- }
- }
-
- ADD_SEQ(ret, cond_seq);
ADD_SEQ(ret, body_seq);
ADD_LABEL(ret, endlabel);
return COMPILE_OK;
}
-#undef CASE3_BI_OFFSET_DECONSTRUCTED_CACHE
-#undef CASE3_BI_OFFSET_ERROR_STRING
-#undef CASE3_BI_OFFSET_KEY_ERROR_P
-#undef CASE3_BI_OFFSET_KEY_ERROR_MATCHEE
-#undef CASE3_BI_OFFSET_KEY_ERROR_KEY
-
static int
compile_loop(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const enum node_type type)
{
const int line = (int)nd_line(node);
- const NODE *line_node = node;
-
+ const int lineno = nd_first_lineno(node);
+ const int column = nd_first_column(node);
+ const int last_lineno = nd_last_lineno(node);
+ const int last_column = nd_last_column(node);
LABEL *prev_start_label = ISEQ_COMPILE_DATA(iseq)->start_label;
LABEL *prev_end_label = ISEQ_COMPILE_DATA(iseq)->end_label;
LABEL *prev_redo_label = ISEQ_COMPILE_DATA(iseq)->redo_label;
int prev_loopval_popped = ISEQ_COMPILE_DATA(iseq)->loopval_popped;
- VALUE branches = Qfalse;
+ VALUE branches = 0;
struct iseq_compile_data_ensure_node_stack enl;
@@ -7448,65 +4937,66 @@ compile_loop(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, in
push_ensure_entry(iseq, &enl, NULL, NULL);
if (node->nd_state == 1) {
- ADD_INSNL(ret, line_node, jump, next_label);
+ ADD_INSNL(ret, line, jump, next_label);
}
else {
- tmp_label = NEW_LABEL(line);
- ADD_INSNL(ret, line_node, jump, tmp_label);
+ tmp_label = NEW_LABEL(line);
+ ADD_INSNL(ret, line, jump, tmp_label);
}
ADD_LABEL(ret, adjust_label);
- ADD_INSN(ret, line_node, putnil);
+ ADD_INSN(ret, line, putnil);
ADD_LABEL(ret, next_catch_label);
- ADD_INSN(ret, line_node, pop);
- ADD_INSNL(ret, line_node, jump, next_label);
+ ADD_INSN(ret, line, pop);
+ ADD_INSNL(ret, line, jump, next_label);
if (tmp_label) ADD_LABEL(ret, tmp_label);
ADD_LABEL(ret, redo_label);
- branches = decl_branch_base(iseq, node, type == NODE_WHILE ? "while" : "until");
- add_trace_branch_coverage(
- iseq,
- ret,
- node->nd_body ? node->nd_body : node,
- 0,
- "body",
- branches);
+ DECL_BRANCH_BASE(branches, lineno, column, last_lineno, last_column, type == NODE_WHILE ? "while" : "until");
+ ADD_TRACE_BRANCH_COVERAGE(
+ ret,
+ node->nd_body ? nd_first_lineno(node->nd_body) : lineno,
+ node->nd_body ? nd_first_column(node->nd_body) : column,
+ node->nd_body ? nd_last_lineno(node->nd_body) : last_lineno,
+ node->nd_body ? nd_last_column(node->nd_body) : last_column,
+ "body",
+ branches);
CHECK(COMPILE_POPPED(ret, "while body", node->nd_body));
ADD_LABEL(ret, next_label); /* next */
if (type == NODE_WHILE) {
- compile_branch_condition(iseq, ret, node->nd_cond,
- redo_label, end_label);
+ compile_branch_condition(iseq, ret, node->nd_cond,
+ redo_label, end_label);
}
else {
- /* until */
- compile_branch_condition(iseq, ret, node->nd_cond,
- end_label, redo_label);
+ /* until */
+ compile_branch_condition(iseq, ret, node->nd_cond,
+ end_label, redo_label);
}
ADD_LABEL(ret, end_label);
ADD_ADJUST_RESTORE(ret, adjust_label);
- if (UNDEF_P(node->nd_state)) {
- /* ADD_INSN(ret, line_node, putundef); */
- COMPILE_ERROR(ERROR_ARGS "unsupported: putundef");
- return COMPILE_NG;
+ if (node->nd_state == Qundef) {
+ /* ADD_INSN(ret, line, putundef); */
+ COMPILE_ERROR(ERROR_ARGS "unsupported: putundef");
+ return COMPILE_NG;
}
else {
- ADD_INSN(ret, line_node, putnil);
+ ADD_INSN(ret, line, putnil);
}
ADD_LABEL(ret, break_label); /* break */
if (popped) {
- ADD_INSN(ret, line_node, pop);
+ ADD_INSN(ret, line, pop);
}
ADD_CATCH_ENTRY(CATCH_TYPE_BREAK, redo_label, break_label, NULL,
- break_label);
+ break_label);
ADD_CATCH_ENTRY(CATCH_TYPE_NEXT, redo_label, break_label, NULL,
- next_catch_label);
+ next_catch_label);
ADD_CATCH_ENTRY(CATCH_TYPE_REDO, redo_label, break_label, NULL,
- ISEQ_COMPILE_DATA(iseq)->redo_label);
+ ISEQ_COMPILE_DATA(iseq)->redo_label);
ISEQ_COMPILE_DATA(iseq)->start_label = prev_start_label;
ISEQ_COMPILE_DATA(iseq)->end_label = prev_end_label;
@@ -7520,54 +5010,30 @@ static int
compile_iter(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
const int line = nd_line(node);
- const NODE *line_node = node;
const rb_iseq_t *prevblock = ISEQ_COMPILE_DATA(iseq)->current_block;
LABEL *retry_label = NEW_LABEL(line);
LABEL *retry_end_l = NEW_LABEL(line);
const rb_iseq_t *child_iseq;
ADD_LABEL(ret, retry_label);
- if (nd_type_p(node, NODE_FOR)) {
- CHECK(COMPILE(ret, "iter caller (for)", node->nd_iter));
+ if (nd_type(node) == NODE_FOR) {
+ CHECK(COMPILE(ret, "iter caller (for)", node->nd_iter));
- ISEQ_COMPILE_DATA(iseq)->current_block = child_iseq =
- NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq),
- ISEQ_TYPE_BLOCK, line);
- ADD_SEND_WITH_BLOCK(ret, line_node, idEach, INT2FIX(0), child_iseq);
+ ISEQ_COMPILE_DATA(iseq)->current_block = child_iseq =
+ NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq),
+ ISEQ_TYPE_BLOCK, line);
+ ADD_SEND_WITH_BLOCK(ret, line, idEach, INT2FIX(0), child_iseq);
}
else {
- ISEQ_COMPILE_DATA(iseq)->current_block = child_iseq =
- NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq),
- ISEQ_TYPE_BLOCK, line);
- CHECK(COMPILE(ret, "iter caller", node->nd_iter));
- }
-
- {
- // We need to put the label "retry_end_l" immediately after the last "send" instruction.
- // This because vm_throw checks if the break cont is equal to the index of next insn of the "send".
- // (Otherwise, it is considered "break from proc-closure". See "TAG_BREAK" handling in "vm_throw_start".)
- //
- // Normally, "send" instruction is at the last.
- // However, qcall under branch coverage measurement adds some instructions after the "send".
- //
- // Note that "invokesuper" appears instead of "send".
- INSN *iobj;
- LINK_ELEMENT *last_elem = LAST_ELEMENT(ret);
- iobj = IS_INSN(last_elem) ? (INSN*) last_elem : (INSN*) get_prev_insn((INSN*) last_elem);
- while (INSN_OF(iobj) != BIN(send) && INSN_OF(iobj) != BIN(invokesuper)) {
- iobj = (INSN*) get_prev_insn(iobj);
- }
- ELEM_INSERT_NEXT(&iobj->link, (LINK_ELEMENT*) retry_end_l);
-
- // LINK_ANCHOR has a pointer to the last element, but ELEM_INSERT_NEXT does not update it
- // even if we add an insn to the last of LINK_ANCHOR. So this updates it manually.
- if (&iobj->link == LAST_ELEMENT(ret)) {
- ret->last = (LINK_ELEMENT*) retry_end_l;
- }
+ ISEQ_COMPILE_DATA(iseq)->current_block = child_iseq =
+ NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq),
+ ISEQ_TYPE_BLOCK, line);
+ CHECK(COMPILE(ret, "iter caller", node->nd_iter));
}
+ ADD_LABEL(ret, retry_end_l);
if (popped) {
- ADD_INSN(ret, line_node, pop);
+ ADD_INSN(ret, line, pop);
}
ISEQ_COMPILE_DATA(iseq)->current_block = prevblock;
@@ -7577,91 +5043,101 @@ compile_iter(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, in
}
static int
-compile_for_masgn(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+compile_for(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
- /* massign to var in "for"
- * (args.length == 1 && Array.try_convert(args[0])) || args
- */
- const NODE *line_node = node;
- const NODE *var = node->nd_var;
- LABEL *not_single = NEW_LABEL(nd_line(var));
- LABEL *not_ary = NEW_LABEL(nd_line(var));
- CHECK(COMPILE(ret, "for var", var));
- ADD_INSN(ret, line_node, dup);
- ADD_CALL(ret, line_node, idLength, INT2FIX(0));
- ADD_INSN1(ret, line_node, putobject, INT2FIX(1));
- ADD_CALL(ret, line_node, idEq, INT2FIX(1));
- ADD_INSNL(ret, line_node, branchunless, not_single);
- ADD_INSN(ret, line_node, dup);
- ADD_INSN1(ret, line_node, putobject, INT2FIX(0));
- ADD_CALL(ret, line_node, idAREF, INT2FIX(1));
- ADD_INSN1(ret, line_node, putobject, rb_cArray);
- ADD_INSN(ret, line_node, swap);
- ADD_CALL(ret, line_node, rb_intern("try_convert"), INT2FIX(1));
- ADD_INSN(ret, line_node, dup);
- ADD_INSNL(ret, line_node, branchunless, not_ary);
- ADD_INSN(ret, line_node, swap);
- ADD_LABEL(ret, not_ary);
- ADD_INSN(ret, line_node, pop);
- ADD_LABEL(ret, not_single);
- return COMPILE_OK;
+ const int line = nd_line(node);
+ if (node->nd_var) {
+ /* massign to var in "for"
+ * args.length == 1 && Array === (tmp = args[0]) ? tmp : args
+ */
+ const NODE *var = node->nd_var;
+ LABEL *not_single = NEW_LABEL(nd_line(var));
+ LABEL *not_ary = NEW_LABEL(nd_line(var));
+ CHECK(COMPILE(ret, "for var", var));
+ ADD_INSN(ret, line, dup);
+ ADD_CALL(ret, line, idLength, INT2FIX(0));
+ ADD_INSN1(ret, line, putobject, INT2FIX(1));
+ ADD_CALL(ret, line, idEq, INT2FIX(1));
+ ADD_INSNL(ret, line, branchunless, not_single);
+ ADD_INSN(ret, line, dup);
+ ADD_INSN1(ret, line, putobject, INT2FIX(0));
+ ADD_CALL(ret, line, idAREF, INT2FIX(1));
+ ADD_INSN1(ret, line, putobject, rb_cArray);
+ ADD_INSN1(ret, line, topn, INT2FIX(1));
+ ADD_CALL(ret, line, idEqq, INT2FIX(1));
+ ADD_INSNL(ret, line, branchunless, not_ary);
+ ADD_INSN(ret, line, swap);
+ ADD_LABEL(ret, not_ary);
+ ADD_INSN(ret, line, pop);
+ ADD_LABEL(ret, not_single);
+ return COMPILE_OK;
+ }
+ else {
+ return compile_iter(iseq, ret, node, popped);
+ }
}
static int
compile_break(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
- const NODE *line_node = node;
- unsigned long throw_flag = 0;
-
- if (ISEQ_COMPILE_DATA(iseq)->redo_label != 0 && can_add_ensure_iseq(iseq)) {
- /* while/until */
- LABEL *splabel = NEW_LABEL(0);
- ADD_LABEL(ret, splabel);
- ADD_ADJUST(ret, line_node, ISEQ_COMPILE_DATA(iseq)->redo_label);
- CHECK(COMPILE_(ret, "break val (while/until)", node->nd_stts,
- ISEQ_COMPILE_DATA(iseq)->loopval_popped));
- add_ensure_iseq(ret, iseq, 0);
- ADD_INSNL(ret, line_node, jump, ISEQ_COMPILE_DATA(iseq)->end_label);
- ADD_ADJUST_RESTORE(ret, splabel);
-
- if (!popped) {
- ADD_INSN(ret, line_node, putnil);
- }
+ const int line = nd_line(node);
+ unsigned long level = 0;
+
+ if (ISEQ_COMPILE_DATA(iseq)->redo_label != 0) {
+ /* while/until */
+ LABEL *splabel = NEW_LABEL(0);
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line, ISEQ_COMPILE_DATA(iseq)->redo_label);
+ CHECK(COMPILE_(ret, "break val (while/until)", node->nd_stts,
+ ISEQ_COMPILE_DATA(iseq)->loopval_popped));
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_INSNL(ret, line, jump, ISEQ_COMPILE_DATA(iseq)->end_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!popped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else if (iseq->body->type == ISEQ_TYPE_BLOCK) {
+ break_by_insn:
+ /* escape from block */
+ CHECK(COMPILE(ret, "break val (block)", node->nd_stts));
+ ADD_INSN1(ret, line, throw, INT2FIX(level | TAG_BREAK));
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ }
+ else if (iseq->body->type == ISEQ_TYPE_EVAL) {
+ break_in_eval:
+ COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with break");
+ return COMPILE_NG;
}
else {
- const rb_iseq_t *ip = iseq;
-
- while (ip) {
- if (!ISEQ_COMPILE_DATA(ip)) {
- ip = 0;
- break;
- }
-
- if (ISEQ_COMPILE_DATA(ip)->redo_label != 0) {
- throw_flag = VM_THROW_NO_ESCAPE_FLAG;
- }
- else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_BLOCK) {
- throw_flag = 0;
- }
- else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_EVAL) {
- COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with break");
- return COMPILE_NG;
- }
- else {
- ip = ISEQ_BODY(ip)->parent_iseq;
- continue;
- }
-
- /* escape from block */
- CHECK(COMPILE(ret, "break val (block)", node->nd_stts));
- ADD_INSN1(ret, line_node, throw, INT2FIX(throw_flag | TAG_BREAK));
- if (popped) {
- ADD_INSN(ret, line_node, pop);
- }
- return COMPILE_OK;
- }
- COMPILE_ERROR(ERROR_ARGS "Invalid break");
- return COMPILE_NG;
+ const rb_iseq_t *ip = iseq->body->parent_iseq;
+
+ while (ip) {
+ if (!ISEQ_COMPILE_DATA(ip)) {
+ ip = 0;
+ break;
+ }
+
+ level++;
+ if (ISEQ_COMPILE_DATA(ip)->redo_label != 0) {
+ level = VM_THROW_NO_ESCAPE_FLAG;
+ goto break_by_insn;
+ }
+ else if (ip->body->type == ISEQ_TYPE_BLOCK) {
+ level <<= VM_THROW_LEVEL_SHIFT;
+ goto break_by_insn;
+ }
+ else if (ip->body->type == ISEQ_TYPE_EVAL) {
+ goto break_in_eval;
+ }
+
+ ip = ip->body->parent_iseq;
+ }
+ COMPILE_ERROR(ERROR_ARGS "Invalid break");
+ return COMPILE_NG;
}
return COMPILE_OK;
}
@@ -7669,73 +5145,77 @@ compile_break(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, i
static int
compile_next(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
- const NODE *line_node = node;
- unsigned long throw_flag = 0;
-
- if (ISEQ_COMPILE_DATA(iseq)->redo_label != 0 && can_add_ensure_iseq(iseq)) {
- LABEL *splabel = NEW_LABEL(0);
- debugs("next in while loop\n");
- ADD_LABEL(ret, splabel);
- CHECK(COMPILE(ret, "next val/valid syntax?", node->nd_stts));
- add_ensure_iseq(ret, iseq, 0);
- ADD_ADJUST(ret, line_node, ISEQ_COMPILE_DATA(iseq)->redo_label);
- ADD_INSNL(ret, line_node, jump, ISEQ_COMPILE_DATA(iseq)->start_label);
- ADD_ADJUST_RESTORE(ret, splabel);
- if (!popped) {
- ADD_INSN(ret, line_node, putnil);
- }
- }
- else if (ISEQ_COMPILE_DATA(iseq)->end_label && can_add_ensure_iseq(iseq)) {
- LABEL *splabel = NEW_LABEL(0);
- debugs("next in block\n");
- ADD_LABEL(ret, splabel);
- ADD_ADJUST(ret, line_node, ISEQ_COMPILE_DATA(iseq)->start_label);
- CHECK(COMPILE(ret, "next val", node->nd_stts));
- add_ensure_iseq(ret, iseq, 0);
- ADD_INSNL(ret, line_node, jump, ISEQ_COMPILE_DATA(iseq)->end_label);
- ADD_ADJUST_RESTORE(ret, splabel);
- splabel->unremovable = FALSE;
-
- if (!popped) {
- ADD_INSN(ret, line_node, putnil);
- }
+ const int line = nd_line(node);
+ unsigned long level = 0;
+
+ if (ISEQ_COMPILE_DATA(iseq)->redo_label != 0) {
+ LABEL *splabel = NEW_LABEL(0);
+ debugs("next in while loop\n");
+ ADD_LABEL(ret, splabel);
+ CHECK(COMPILE(ret, "next val/valid syntax?", node->nd_stts));
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_ADJUST(ret, line, ISEQ_COMPILE_DATA(iseq)->redo_label);
+ ADD_INSNL(ret, line, jump, ISEQ_COMPILE_DATA(iseq)->start_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+ if (!popped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else if (ISEQ_COMPILE_DATA(iseq)->end_label) {
+ LABEL *splabel = NEW_LABEL(0);
+ debugs("next in block\n");
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line, ISEQ_COMPILE_DATA(iseq)->start_label);
+ CHECK(COMPILE(ret, "next val", node->nd_stts));
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_INSNL(ret, line, jump, ISEQ_COMPILE_DATA(iseq)->end_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+ splabel->unremovable = FALSE;
+
+ if (!popped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else if (iseq->body->type == ISEQ_TYPE_EVAL) {
+ next_in_eval:
+ COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with next");
+ return COMPILE_NG;
}
else {
- const rb_iseq_t *ip = iseq;
-
- while (ip) {
- if (!ISEQ_COMPILE_DATA(ip)) {
- ip = 0;
- break;
- }
-
- throw_flag = VM_THROW_NO_ESCAPE_FLAG;
- if (ISEQ_COMPILE_DATA(ip)->redo_label != 0) {
- /* while loop */
- break;
- }
- else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_BLOCK) {
- break;
- }
- else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_EVAL) {
- COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with next");
- return COMPILE_NG;
- }
-
- ip = ISEQ_BODY(ip)->parent_iseq;
- }
- if (ip != 0) {
- CHECK(COMPILE(ret, "next val", node->nd_stts));
- ADD_INSN1(ret, line_node, throw, INT2FIX(throw_flag | TAG_NEXT));
-
- if (popped) {
- ADD_INSN(ret, line_node, pop);
- }
- }
- else {
- COMPILE_ERROR(ERROR_ARGS "Invalid next");
- return COMPILE_NG;
- }
+ const rb_iseq_t *ip = iseq;
+
+ while (ip) {
+ if (!ISEQ_COMPILE_DATA(ip)) {
+ ip = 0;
+ break;
+ }
+
+ level = VM_THROW_NO_ESCAPE_FLAG;
+ if (ISEQ_COMPILE_DATA(ip)->redo_label != 0) {
+ /* while loop */
+ break;
+ }
+ else if (ip->body->type == ISEQ_TYPE_BLOCK) {
+ break;
+ }
+ else if (ip->body->type == ISEQ_TYPE_EVAL) {
+ goto next_in_eval;
+ }
+
+ ip = ip->body->parent_iseq;
+ }
+ if (ip != 0) {
+ CHECK(COMPILE(ret, "next val", node->nd_stts));
+ ADD_INSN1(ret, line, throw, INT2FIX(level | TAG_NEXT));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ }
+ else {
+ COMPILE_ERROR(ERROR_ARGS "Invalid next");
+ return COMPILE_NG;
+ }
}
return COMPILE_OK;
}
@@ -7743,68 +5223,73 @@ compile_next(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, in
static int
compile_redo(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
- const NODE *line_node = node;
-
- if (ISEQ_COMPILE_DATA(iseq)->redo_label && can_add_ensure_iseq(iseq)) {
- LABEL *splabel = NEW_LABEL(0);
- debugs("redo in while");
- ADD_LABEL(ret, splabel);
- ADD_ADJUST(ret, line_node, ISEQ_COMPILE_DATA(iseq)->redo_label);
- add_ensure_iseq(ret, iseq, 0);
- ADD_INSNL(ret, line_node, jump, ISEQ_COMPILE_DATA(iseq)->redo_label);
- ADD_ADJUST_RESTORE(ret, splabel);
- if (!popped) {
- ADD_INSN(ret, line_node, putnil);
- }
- }
- else if (ISEQ_BODY(iseq)->type != ISEQ_TYPE_EVAL && ISEQ_COMPILE_DATA(iseq)->start_label && can_add_ensure_iseq(iseq)) {
- LABEL *splabel = NEW_LABEL(0);
-
- debugs("redo in block");
- ADD_LABEL(ret, splabel);
- add_ensure_iseq(ret, iseq, 0);
- ADD_ADJUST(ret, line_node, ISEQ_COMPILE_DATA(iseq)->start_label);
- ADD_INSNL(ret, line_node, jump, ISEQ_COMPILE_DATA(iseq)->start_label);
- ADD_ADJUST_RESTORE(ret, splabel);
+ const int line = nd_line(node);
- if (!popped) {
- ADD_INSN(ret, line_node, putnil);
- }
+ if (ISEQ_COMPILE_DATA(iseq)->redo_label) {
+ LABEL *splabel = NEW_LABEL(0);
+ debugs("redo in while");
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line, ISEQ_COMPILE_DATA(iseq)->redo_label);
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_INSNL(ret, line, jump, ISEQ_COMPILE_DATA(iseq)->redo_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+ if (!popped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else if (iseq->body->type == ISEQ_TYPE_EVAL) {
+ redo_in_eval:
+ COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with redo");
+ return COMPILE_NG;
+ }
+ else if (ISEQ_COMPILE_DATA(iseq)->start_label) {
+ LABEL *splabel = NEW_LABEL(0);
+
+ debugs("redo in block");
+ ADD_LABEL(ret, splabel);
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_ADJUST(ret, line, ISEQ_COMPILE_DATA(iseq)->start_label);
+ ADD_INSNL(ret, line, jump, ISEQ_COMPILE_DATA(iseq)->start_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!popped) {
+ ADD_INSN(ret, line, putnil);
+ }
}
else {
- const rb_iseq_t *ip = iseq;
-
- while (ip) {
- if (!ISEQ_COMPILE_DATA(ip)) {
- ip = 0;
- break;
- }
-
- if (ISEQ_COMPILE_DATA(ip)->redo_label != 0) {
- break;
- }
- else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_BLOCK) {
- break;
- }
- else if (ISEQ_BODY(ip)->type == ISEQ_TYPE_EVAL) {
- COMPILE_ERROR(ERROR_ARGS "Can't escape from eval with redo");
- return COMPILE_NG;
- }
-
- ip = ISEQ_BODY(ip)->parent_iseq;
- }
- if (ip != 0) {
- ADD_INSN(ret, line_node, putnil);
- ADD_INSN1(ret, line_node, throw, INT2FIX(VM_THROW_NO_ESCAPE_FLAG | TAG_REDO));
-
- if (popped) {
- ADD_INSN(ret, line_node, pop);
- }
- }
- else {
- COMPILE_ERROR(ERROR_ARGS "Invalid redo");
- return COMPILE_NG;
- }
+ const rb_iseq_t *ip = iseq;
+ const unsigned long level = VM_THROW_NO_ESCAPE_FLAG;
+
+ while (ip) {
+ if (!ISEQ_COMPILE_DATA(ip)) {
+ ip = 0;
+ break;
+ }
+
+ if (ISEQ_COMPILE_DATA(ip)->redo_label != 0) {
+ break;
+ }
+ else if (ip->body->type == ISEQ_TYPE_BLOCK) {
+ break;
+ }
+ else if (ip->body->type == ISEQ_TYPE_EVAL) {
+ goto redo_in_eval;
+ }
+
+ ip = ip->body->parent_iseq;
+ }
+ if (ip != 0) {
+ ADD_INSN(ret, line, putnil);
+ ADD_INSN1(ret, line, throw, INT2FIX(level | TAG_REDO));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ }
+ else {
+ COMPILE_ERROR(ERROR_ARGS "Invalid redo");
+ return COMPILE_NG;
+ }
}
return COMPILE_OK;
}
@@ -7812,19 +5297,19 @@ compile_redo(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, in
static int
compile_retry(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
- const NODE *line_node = node;
+ const int line = nd_line(node);
- if (ISEQ_BODY(iseq)->type == ISEQ_TYPE_RESCUE) {
- ADD_INSN(ret, line_node, putnil);
- ADD_INSN1(ret, line_node, throw, INT2FIX(TAG_RETRY));
+ if (iseq->body->type == ISEQ_TYPE_RESCUE) {
+ ADD_INSN(ret, line, putnil);
+ ADD_INSN1(ret, line, throw, INT2FIX(TAG_RETRY));
- if (popped) {
- ADD_INSN(ret, line_node, pop);
- }
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
}
else {
- COMPILE_ERROR(ERROR_ARGS "Invalid retry");
- return COMPILE_NG;
+ COMPILE_ERROR(ERROR_ARGS "Invalid retry");
+ return COMPILE_NG;
}
return COMPILE_OK;
}
@@ -7833,36 +5318,27 @@ static int
compile_rescue(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
const int line = nd_line(node);
- const NODE *line_node = node;
LABEL *lstart = NEW_LABEL(line);
LABEL *lend = NEW_LABEL(line);
LABEL *lcont = NEW_LABEL(line);
const rb_iseq_t *rescue = NEW_CHILD_ISEQ(node->nd_resq,
- rb_str_concat(rb_str_new2("rescue in "),
- ISEQ_BODY(iseq)->location.label),
- ISEQ_TYPE_RESCUE, line);
+ rb_str_concat(rb_str_new2("rescue in "), iseq->body->location.label),
+ ISEQ_TYPE_RESCUE, line);
lstart->rescued = LABEL_RESCUE_BEG;
lend->rescued = LABEL_RESCUE_END;
ADD_LABEL(ret, lstart);
-
- bool prev_in_rescue = ISEQ_COMPILE_DATA(iseq)->in_rescue;
- ISEQ_COMPILE_DATA(iseq)->in_rescue = true;
- {
- CHECK(COMPILE(ret, "rescue head", node->nd_head));
- }
- ISEQ_COMPILE_DATA(iseq)->in_rescue = prev_in_rescue;
-
+ CHECK(COMPILE(ret, "rescue head", node->nd_head));
ADD_LABEL(ret, lend);
if (node->nd_else) {
- ADD_INSN(ret, line_node, pop);
- CHECK(COMPILE(ret, "rescue else", node->nd_else));
+ ADD_INSN(ret, line, pop);
+ CHECK(COMPILE(ret, "rescue else", node->nd_else));
}
- ADD_INSN(ret, line_node, nop);
+ ADD_INSN(ret, line, nop);
ADD_LABEL(ret, lcont);
if (popped) {
- ADD_INSN(ret, line_node, pop);
+ ADD_INSN(ret, line, pop);
}
/* register catch entry */
@@ -7875,54 +5351,53 @@ static int
compile_resbody(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
const int line = nd_line(node);
- const NODE *line_node = node;
const NODE *resq = node;
const NODE *narg;
LABEL *label_miss, *label_hit;
while (resq) {
- label_miss = NEW_LABEL(line);
- label_hit = NEW_LABEL(line);
-
- narg = resq->nd_args;
- if (narg) {
- switch (nd_type(narg)) {
- case NODE_LIST:
- while (narg) {
- ADD_GETLOCAL(ret, line_node, LVAR_ERRINFO, 0);
- CHECK(COMPILE(ret, "rescue arg", narg->nd_head));
- ADD_INSN1(ret, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));
- ADD_INSNL(ret, line_node, branchif, label_hit);
- narg = narg->nd_next;
- }
- break;
- case NODE_SPLAT:
- case NODE_ARGSCAT:
- case NODE_ARGSPUSH:
- ADD_GETLOCAL(ret, line_node, LVAR_ERRINFO, 0);
- CHECK(COMPILE(ret, "rescue/cond splat", narg));
- ADD_INSN1(ret, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE | VM_CHECKMATCH_ARRAY));
- ADD_INSNL(ret, line_node, branchif, label_hit);
- break;
- default:
- UNKNOWN_NODE("NODE_RESBODY", narg, COMPILE_NG);
- }
- }
- else {
- ADD_GETLOCAL(ret, line_node, LVAR_ERRINFO, 0);
- ADD_INSN1(ret, line_node, putobject, rb_eStandardError);
- ADD_INSN1(ret, line_node, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));
- ADD_INSNL(ret, line_node, branchif, label_hit);
- }
- ADD_INSNL(ret, line_node, jump, label_miss);
- ADD_LABEL(ret, label_hit);
- CHECK(COMPILE(ret, "resbody body", resq->nd_body));
- if (ISEQ_COMPILE_DATA(iseq)->option->tailcall_optimization) {
- ADD_INSN(ret, line_node, nop);
- }
- ADD_INSN(ret, line_node, leave);
- ADD_LABEL(ret, label_miss);
- resq = resq->nd_head;
+ label_miss = NEW_LABEL(line);
+ label_hit = NEW_LABEL(line);
+
+ narg = resq->nd_args;
+ if (narg) {
+ switch (nd_type(narg)) {
+ case NODE_ARRAY:
+ while (narg) {
+ ADD_GETLOCAL(ret, line, LVAR_ERRINFO, 0);
+ CHECK(COMPILE(ret, "rescue arg", narg->nd_head));
+ ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));
+ ADD_INSNL(ret, line, branchif, label_hit);
+ narg = narg->nd_next;
+ }
+ break;
+ case NODE_SPLAT:
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH:
+ ADD_GETLOCAL(ret, line, LVAR_ERRINFO, 0);
+ CHECK(COMPILE(ret, "rescue/cond splat", narg));
+ ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE | VM_CHECKMATCH_ARRAY));
+ ADD_INSNL(ret, line, branchif, label_hit);
+ break;
+ default:
+ UNKNOWN_NODE("NODE_RESBODY", narg, COMPILE_NG);
+ }
+ }
+ else {
+ ADD_GETLOCAL(ret, line, LVAR_ERRINFO, 0);
+ ADD_INSN1(ret, line, putobject, rb_eStandardError);
+ ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));
+ ADD_INSNL(ret, line, branchif, label_hit);
+ }
+ ADD_INSNL(ret, line, jump, label_miss);
+ ADD_LABEL(ret, label_hit);
+ CHECK(COMPILE(ret, "resbody body", resq->nd_body));
+ if (ISEQ_COMPILE_DATA(iseq)->option->tailcall_optimization) {
+ ADD_INSN(ret, line, nop);
+ }
+ ADD_INSN(ret, line, leave);
+ ADD_LABEL(ret, label_miss);
+ resq = resq->nd_head;
}
return COMPILE_OK;
}
@@ -7931,11 +5406,10 @@ static int
compile_ensure(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
const int line = nd_line(node);
- const NODE *line_node = node;
DECL_ANCHOR(ensr);
const rb_iseq_t *ensure = NEW_CHILD_ISEQ(node->nd_ensr,
- rb_str_concat(rb_str_new2 ("ensure in "), ISEQ_BODY(iseq)->location.label),
- ISEQ_TYPE_ENSURE, line);
+ rb_str_concat(rb_str_new2 ("ensure in "), iseq->body->location.label),
+ ISEQ_TYPE_ENSURE, line);
LABEL *lstart = NEW_LABEL(line);
LABEL *lend = NEW_LABEL(line);
LABEL *lcont = NEW_LABEL(line);
@@ -7959,17 +5433,17 @@ compile_ensure(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node,
CHECK(COMPILE_(ret, "ensure head", node->nd_head, (popped | last_leave)));
ADD_LABEL(ret, lend);
ADD_SEQ(ret, ensr);
- if (!popped && last_leave) ADD_INSN(ret, line_node, putnil);
+ if (!popped && last_leave) ADD_INSN(ret, line, putnil);
ADD_LABEL(ret, lcont);
- if (last_leave) ADD_INSN(ret, line_node, pop);
+ if (last_leave) ADD_INSN(ret, line, pop);
erange = ISEQ_COMPILE_DATA(iseq)->ensure_node_stack->erange;
if (lstart->link.next != &lend->link) {
- while (erange) {
- ADD_CATCH_ENTRY(CATCH_TYPE_ENSURE, erange->begin, erange->end,
- ensure, lcont);
- erange = erange->next;
- }
+ while (erange) {
+ ADD_CATCH_ENTRY(CATCH_TYPE_ENSURE, erange->begin, erange->end,
+ ensure, lcont);
+ erange = erange->next;
+ }
}
ISEQ_COMPILE_DATA(iseq)->ensure_node_stack = enl.prev;
@@ -7979,1487 +5453,60 @@ compile_ensure(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node,
static int
compile_return(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
{
- const NODE *line_node = node;
-
- if (iseq) {
- enum rb_iseq_type type = ISEQ_BODY(iseq)->type;
- const rb_iseq_t *is = iseq;
- enum rb_iseq_type t = type;
- const NODE *retval = node->nd_stts;
- LABEL *splabel = 0;
-
- while (t == ISEQ_TYPE_RESCUE || t == ISEQ_TYPE_ENSURE) {
- if (!(is = ISEQ_BODY(is)->parent_iseq)) break;
- t = ISEQ_BODY(is)->type;
- }
- switch (t) {
- case ISEQ_TYPE_TOP:
- case ISEQ_TYPE_MAIN:
- if (retval) {
- rb_warn("argument of top-level return is ignored");
- }
- if (is == iseq) {
- /* plain top-level, leave directly */
- type = ISEQ_TYPE_METHOD;
- }
- break;
- default:
- break;
- }
-
- if (type == ISEQ_TYPE_METHOD) {
- splabel = NEW_LABEL(0);
- ADD_LABEL(ret, splabel);
- ADD_ADJUST(ret, line_node, 0);
- }
-
- CHECK(COMPILE(ret, "return nd_stts (return val)", retval));
-
- if (type == ISEQ_TYPE_METHOD && can_add_ensure_iseq(iseq)) {
- add_ensure_iseq(ret, iseq, 1);
- ADD_TRACE(ret, RUBY_EVENT_RETURN);
- ADD_INSN(ret, line_node, leave);
- ADD_ADJUST_RESTORE(ret, splabel);
-
- if (!popped) {
- ADD_INSN(ret, line_node, putnil);
- }
- }
- else {
- ADD_INSN1(ret, line_node, throw, INT2FIX(TAG_RETURN));
- if (popped) {
- ADD_INSN(ret, line_node, pop);
- }
- }
- }
- return COMPILE_OK;
-}
-
-static int
-compile_evstr(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
-{
- CHECK(COMPILE_(ret, "nd_body", node, popped));
-
- if (!popped && !all_string_result_p(node)) {
- const NODE *line_node = node;
- const unsigned int flag = VM_CALL_FCALL;
-
- // Note, this dup could be removed if we are willing to change anytostring. It pops
- // two VALUEs off the stack when it could work by replacing the top most VALUE.
- ADD_INSN(ret, line_node, dup);
- ADD_INSN1(ret, line_node, objtostring, new_callinfo(iseq, idTo_s, 0, flag, NULL, FALSE));
- ADD_INSN(ret, line_node, anytostring);
- }
- return COMPILE_OK;
-}
-
-static void
-compile_lvar(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *line_node, ID id)
-{
- int idx = ISEQ_BODY(ISEQ_BODY(iseq)->local_iseq)->local_table_size - get_local_var_idx(iseq, id);
-
- debugs("id: %s idx: %d\n", rb_id2name(id), idx);
- ADD_GETLOCAL(ret, line_node, idx, get_lvar_level(iseq));
-}
-
-static LABEL *
-qcall_branch_start(rb_iseq_t *iseq, LINK_ANCHOR *const recv, VALUE *branches, const NODE *node, const NODE *line_node)
-{
- LABEL *else_label = NEW_LABEL(nd_line(line_node));
- VALUE br = 0;
-
- br = decl_branch_base(iseq, node, "&.");
- *branches = br;
- ADD_INSN(recv, line_node, dup);
- ADD_INSNL(recv, line_node, branchnil, else_label);
- add_trace_branch_coverage(iseq, recv, node, 0, "then", br);
- return else_label;
-}
-
-static void
-qcall_branch_end(rb_iseq_t *iseq, LINK_ANCHOR *const ret, LABEL *else_label, VALUE branches, const NODE *node, const NODE *line_node)
-{
- LABEL *end_label;
- if (!else_label) return;
- end_label = NEW_LABEL(nd_line(line_node));
- ADD_INSNL(ret, line_node, jump, end_label);
- ADD_LABEL(ret, else_label);
- add_trace_branch_coverage(iseq, ret, node, 1, "else", branches);
- ADD_LABEL(ret, end_label);
-}
-
-static int
-compile_call_precheck_freeze(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, const NODE *line_node, int popped)
-{
- /* optimization shortcut
- * "literal".freeze -> opt_str_freeze("literal")
- */
- if (node->nd_recv && nd_type_p(node->nd_recv, NODE_STR) &&
- (node->nd_mid == idFreeze || node->nd_mid == idUMinus) &&
- node->nd_args == NULL &&
- ISEQ_COMPILE_DATA(iseq)->current_block == NULL &&
- ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction) {
- VALUE str = rb_fstring(node->nd_recv->nd_lit);
- if (node->nd_mid == idUMinus) {
- ADD_INSN2(ret, line_node, opt_str_uminus, str,
- new_callinfo(iseq, idUMinus, 0, 0, NULL, FALSE));
- }
- else {
- ADD_INSN2(ret, line_node, opt_str_freeze, str,
- new_callinfo(iseq, idFreeze, 0, 0, NULL, FALSE));
- }
- RB_OBJ_WRITTEN(iseq, Qundef, str);
- if (popped) {
- ADD_INSN(ret, line_node, pop);
- }
- return TRUE;
- }
- /* optimization shortcut
- * obj["literal"] -> opt_aref_with(obj, "literal")
- */
- if (node->nd_mid == idAREF && !private_recv_p(node) && node->nd_args &&
- nd_type_p(node->nd_args, NODE_LIST) && node->nd_args->nd_alen == 1 &&
- nd_type_p(node->nd_args->nd_head, NODE_STR) &&
- ISEQ_COMPILE_DATA(iseq)->current_block == NULL &&
- !ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal &&
- ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction) {
- VALUE str = rb_fstring(node->nd_args->nd_head->nd_lit);
- CHECK(COMPILE(ret, "recv", node->nd_recv));
- ADD_INSN2(ret, line_node, opt_aref_with, str,
- new_callinfo(iseq, idAREF, 1, 0, NULL, FALSE));
- RB_OBJ_WRITTEN(iseq, Qundef, str);
- if (popped) {
- ADD_INSN(ret, line_node, pop);
- }
- return TRUE;
- }
- return FALSE;
-}
-
-static int
-iseq_has_builtin_function_table(const rb_iseq_t *iseq)
-{
- return ISEQ_COMPILE_DATA(iseq)->builtin_function_table != NULL;
-}
-
-static const struct rb_builtin_function *
-iseq_builtin_function_lookup(const rb_iseq_t *iseq, const char *name)
-{
- int i;
- const struct rb_builtin_function *table = ISEQ_COMPILE_DATA(iseq)->builtin_function_table;
- for (i=0; table[i].index != -1; i++) {
- if (strcmp(table[i].name, name) == 0) {
- return &table[i];
- }
- }
- return NULL;
-}
-
-static const char *
-iseq_builtin_function_name(const enum node_type type, const NODE *recv, ID mid)
-{
- const char *name = rb_id2name(mid);
- static const char prefix[] = "__builtin_";
- const size_t prefix_len = sizeof(prefix) - 1;
-
- switch (type) {
- case NODE_CALL:
- if (recv) {
- switch (nd_type(recv)) {
- case NODE_VCALL:
- if (recv->nd_mid == rb_intern("__builtin")) {
- return name;
- }
- break;
- case NODE_CONST:
- if (recv->nd_vid == rb_intern("Primitive")) {
- return name;
- }
- break;
- default: break;
- }
- }
- break;
- case NODE_VCALL:
- case NODE_FCALL:
- if (UNLIKELY(strncmp(prefix, name, prefix_len) == 0)) {
- return &name[prefix_len];
- }
- break;
- default: break;
- }
- return NULL;
-}
-
-static int
-delegate_call_p(const rb_iseq_t *iseq, unsigned int argc, const LINK_ANCHOR *args, unsigned int *pstart_index)
-{
-
- if (argc == 0) {
- *pstart_index = 0;
- return TRUE;
- }
- else if (argc <= ISEQ_BODY(iseq)->local_table_size) {
- unsigned int start=0;
-
- // local_table: [p1, p2, p3, l1, l2, l3]
- // arguments: [p3, l1, l2] -> 2
- for (start = 0;
- argc + start <= ISEQ_BODY(iseq)->local_table_size;
- start++) {
- const LINK_ELEMENT *elem = FIRST_ELEMENT(args);
-
- for (unsigned int i=start; i-start<argc; i++) {
- if (IS_INSN(elem) &&
- INSN_OF(elem) == BIN(getlocal)) {
- int local_index = FIX2INT(OPERAND_AT(elem, 0));
- int local_level = FIX2INT(OPERAND_AT(elem, 1));
-
- if (local_level == 0) {
- unsigned int index = ISEQ_BODY(iseq)->local_table_size - (local_index - VM_ENV_DATA_SIZE + 1);
- if (0) { // for debug
- fprintf(stderr, "lvar:%s (%d), id:%s (%d) local_index:%d, local_size:%d\n",
- rb_id2name(ISEQ_BODY(iseq)->local_table[i]), i,
- rb_id2name(ISEQ_BODY(iseq)->local_table[index]), index,
- local_index, (int)ISEQ_BODY(iseq)->local_table_size);
- }
- if (i == index) {
- elem = elem->next;
- continue; /* for */
- }
- else {
- goto next;
- }
- }
- else {
- goto fail; // level != 0 is unsupported
- }
- }
- else {
- goto fail; // insn is not a getlocal
- }
- }
- goto success;
- next:;
- }
- fail:
- return FALSE;
- success:
- *pstart_index = start;
- return TRUE;
- }
- else {
- return FALSE;
- }
-}
-
-// Compile Primitive.attr! :leaf, ...
-static int
-compile_builtin_attr(rb_iseq_t *iseq, const NODE *node)
-{
- VALUE symbol;
- VALUE string;
- if (!node) goto no_arg;
- while (node) {
- if (!nd_type_p(node, NODE_LIST)) goto bad_arg;
- const NODE *next = node->nd_next;
-
- node = node->nd_head;
- if (!node) goto no_arg;
- if (!nd_type_p(node, NODE_LIT)) goto bad_arg;
-
- symbol = node->nd_lit;
- if (!SYMBOL_P(symbol)) goto non_symbol_arg;
-
- string = rb_sym_to_s(symbol);
- if (strcmp(RSTRING_PTR(string), "leaf") == 0) {
- ISEQ_BODY(iseq)->builtin_attrs |= BUILTIN_ATTR_LEAF;
- }
- else if (strcmp(RSTRING_PTR(string), "no_gc") == 0) {
- ISEQ_BODY(iseq)->builtin_attrs |= BUILTIN_ATTR_NO_GC;
- }
- else {
- goto unknown_arg;
- }
- node = next;
- }
- return COMPILE_OK;
- no_arg:
- COMPILE_ERROR(ERROR_ARGS "attr!: no argument");
- return COMPILE_NG;
- non_symbol_arg:
- COMPILE_ERROR(ERROR_ARGS "non symbol argument to attr!: %s", rb_builtin_class_name(symbol));
- return COMPILE_NG;
- unknown_arg:
- COMPILE_ERROR(ERROR_ARGS "unknown argument to attr!: %s", RSTRING_PTR(string));
- return COMPILE_NG;
- bad_arg:
- UNKNOWN_NODE("attr!", node, COMPILE_NG);
-}
-
-static int
-compile_builtin_arg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, const NODE *line_node, int popped)
-{
- if (!node) goto no_arg;
- if (!nd_type_p(node, NODE_LIST)) goto bad_arg;
- if (node->nd_next) goto too_many_arg;
- node = node->nd_head;
- if (!node) goto no_arg;
- if (!nd_type_p(node, NODE_LIT)) goto bad_arg;
- VALUE name = node->nd_lit;
- if (!SYMBOL_P(name)) goto non_symbol_arg;
- if (!popped) {
- compile_lvar(iseq, ret, line_node, SYM2ID(name));
- }
- return COMPILE_OK;
- no_arg:
- COMPILE_ERROR(ERROR_ARGS "arg!: no argument");
- return COMPILE_NG;
- too_many_arg:
- COMPILE_ERROR(ERROR_ARGS "arg!: too many argument");
- return COMPILE_NG;
- non_symbol_arg:
- COMPILE_ERROR(ERROR_ARGS "non symbol argument to arg!: %s",
- rb_builtin_class_name(name));
- return COMPILE_NG;
- bad_arg:
- UNKNOWN_NODE("arg!", node, COMPILE_NG);
-}
-
-static NODE *
-mandatory_node(const rb_iseq_t *iseq, const NODE *cond_node)
-{
- const NODE *node = ISEQ_COMPILE_DATA(iseq)->root_node;
- if (nd_type(node) == NODE_IF && node->nd_cond == cond_node) {
- return node->nd_body;
- }
- else {
- rb_bug("mandatory_node: can't find mandatory node");
- }
-}
-
-static int
-compile_builtin_mandatory_only_method(rb_iseq_t *iseq, const NODE *node, const NODE *line_node)
-{
- // arguments
- struct rb_args_info args = {
- .pre_args_num = ISEQ_BODY(iseq)->param.lead_num,
- };
- NODE args_node;
- rb_node_init(&args_node, NODE_ARGS, 0, 0, (VALUE)&args);
-
- // local table without non-mandatory parameters
- const int skip_local_size = ISEQ_BODY(iseq)->param.size - ISEQ_BODY(iseq)->param.lead_num;
- const int table_size = ISEQ_BODY(iseq)->local_table_size - skip_local_size;
-
- VALUE idtmp = 0;
- rb_ast_id_table_t *tbl = ALLOCV(idtmp, sizeof(rb_ast_id_table_t) + table_size * sizeof(ID));
- tbl->size = table_size;
-
- int i;
-
- // lead parameters
- for (i=0; i<ISEQ_BODY(iseq)->param.lead_num; i++) {
- tbl->ids[i] = ISEQ_BODY(iseq)->local_table[i];
- }
- // local variables
- for (; i<table_size; i++) {
- tbl->ids[i] = ISEQ_BODY(iseq)->local_table[i + skip_local_size];
- }
-
- NODE scope_node;
- rb_node_init(&scope_node, NODE_SCOPE, (VALUE)tbl, (VALUE)mandatory_node(iseq, node), (VALUE)&args_node);
-
- rb_ast_body_t ast = {
- .root = &scope_node,
- .compile_option = 0,
- .script_lines = ISEQ_BODY(iseq)->variable.script_lines,
- };
-
- ISEQ_BODY(iseq)->mandatory_only_iseq =
- rb_iseq_new_with_opt(&ast, rb_iseq_base_label(iseq),
- rb_iseq_path(iseq), rb_iseq_realpath(iseq),
- nd_line(line_node), NULL, 0,
- ISEQ_TYPE_METHOD, ISEQ_COMPILE_DATA(iseq)->option);
-
- ALLOCV_END(idtmp);
- return COMPILE_OK;
-}
-
-static int
-compile_builtin_function_call(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, const NODE *line_node, int popped,
- const rb_iseq_t *parent_block, LINK_ANCHOR *args, const char *builtin_func)
-{
- NODE *args_node = node->nd_args;
-
- if (parent_block != NULL) {
- COMPILE_ERROR(ERROR_ARGS_AT(line_node) "should not call builtins here.");
- return COMPILE_NG;
- }
- else {
-# define BUILTIN_INLINE_PREFIX "_bi"
- char inline_func[sizeof(BUILTIN_INLINE_PREFIX) + DECIMAL_SIZE_OF(int)];
- bool cconst = false;
- retry:;
- const struct rb_builtin_function *bf = iseq_builtin_function_lookup(iseq, builtin_func);
-
- if (bf == NULL) {
- if (strcmp("cstmt!", builtin_func) == 0 ||
- strcmp("cexpr!", builtin_func) == 0) {
- // ok
- }
- else if (strcmp("cconst!", builtin_func) == 0) {
- cconst = true;
- }
- else if (strcmp("cinit!", builtin_func) == 0) {
- // ignore
- GET_VM()->builtin_inline_index++;
- return COMPILE_OK;
- }
- else if (strcmp("attr!", builtin_func) == 0) {
- return compile_builtin_attr(iseq, args_node);
- }
- else if (strcmp("arg!", builtin_func) == 0) {
- return compile_builtin_arg(iseq, ret, args_node, line_node, popped);
- }
- else if (strcmp("mandatory_only?", builtin_func) == 0) {
- if (popped) {
- rb_bug("mandatory_only? should be in if condition");
- }
- else if (!LIST_INSN_SIZE_ZERO(ret)) {
- rb_bug("mandatory_only? should be put on top");
- }
-
- ADD_INSN1(ret, line_node, putobject, Qfalse);
- return compile_builtin_mandatory_only_method(iseq, node, line_node);
- }
- else if (1) {
- rb_bug("can't find builtin function:%s", builtin_func);
- }
- else {
- COMPILE_ERROR(ERROR_ARGS "can't find builtin function:%s", builtin_func);
- return COMPILE_NG;
- }
-
- if (GET_VM()->builtin_inline_index == INT_MAX) {
- rb_bug("builtin inline function index overflow:%s", builtin_func);
- }
- int inline_index = GET_VM()->builtin_inline_index++;
- snprintf(inline_func, sizeof(inline_func), BUILTIN_INLINE_PREFIX "%d", inline_index);
- builtin_func = inline_func;
- args_node = NULL;
- goto retry;
- }
-
- if (cconst) {
- typedef VALUE(*builtin_func0)(void *, VALUE);
- VALUE const_val = (*(builtin_func0)bf->func_ptr)(NULL, Qnil);
- ADD_INSN1(ret, line_node, putobject, const_val);
- return COMPILE_OK;
- }
-
- // fprintf(stderr, "func_name:%s -> %p\n", builtin_func, bf->func_ptr);
-
- unsigned int flag = 0;
- struct rb_callinfo_kwarg *keywords = NULL;
- VALUE argc = setup_args(iseq, args, args_node, &flag, &keywords);
-
- if (FIX2INT(argc) != bf->argc) {
- COMPILE_ERROR(ERROR_ARGS "argc is not match for builtin function:%s (expect %d but %d)",
- builtin_func, bf->argc, FIX2INT(argc));
- return COMPILE_NG;
- }
-
- unsigned int start_index;
- if (delegate_call_p(iseq, FIX2INT(argc), args, &start_index)) {
- ADD_INSN2(ret, line_node, opt_invokebuiltin_delegate, bf, INT2FIX(start_index));
- }
- else {
- ADD_SEQ(ret, args);
- ADD_INSN1(ret, line_node, invokebuiltin, bf);
- }
-
- if (popped) ADD_INSN(ret, line_node, pop);
- return COMPILE_OK;
- }
-}
-
-static int
-compile_call(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, const enum node_type type, const NODE *const line_node, int popped, bool assume_receiver)
-{
- /* call: obj.method(...)
- * fcall: func(...)
- * vcall: func
- */
- DECL_ANCHOR(recv);
- DECL_ANCHOR(args);
- ID mid = node->nd_mid;
- VALUE argc;
- unsigned int flag = 0;
- struct rb_callinfo_kwarg *keywords = NULL;
- const rb_iseq_t *parent_block = ISEQ_COMPILE_DATA(iseq)->current_block;
- LABEL *else_label = NULL;
- VALUE branches = Qfalse;
-
- ISEQ_COMPILE_DATA(iseq)->current_block = NULL;
-
- INIT_ANCHOR(recv);
- INIT_ANCHOR(args);
-#if OPT_SUPPORT_JOKE
- if (nd_type_p(node, NODE_VCALL)) {
- ID id_bitblt;
- ID id_answer;
-
- CONST_ID(id_bitblt, "bitblt");
- CONST_ID(id_answer, "the_answer_to_life_the_universe_and_everything");
-
- if (mid == id_bitblt) {
- ADD_INSN(ret, line_node, bitblt);
- return COMPILE_OK;
- }
- else if (mid == id_answer) {
- ADD_INSN(ret, line_node, answer);
- return COMPILE_OK;
- }
- }
- /* only joke */
- {
- ID goto_id;
- ID label_id;
-
- CONST_ID(goto_id, "__goto__");
- CONST_ID(label_id, "__label__");
-
- if (nd_type_p(node, NODE_FCALL) &&
- (mid == goto_id || mid == label_id)) {
- LABEL *label;
- st_data_t data;
- st_table *labels_table = ISEQ_COMPILE_DATA(iseq)->labels_table;
- VALUE label_name;
-
- if (!labels_table) {
- labels_table = st_init_numtable();
- ISEQ_COMPILE_DATA(iseq)->labels_table = labels_table;
- }
- if (nd_type_p(node->nd_args->nd_head, NODE_LIT) &&
- SYMBOL_P(node->nd_args->nd_head->nd_lit)) {
-
- label_name = node->nd_args->nd_head->nd_lit;
- if (!st_lookup(labels_table, (st_data_t)label_name, &data)) {
- label = NEW_LABEL(nd_line(line_node));
- label->position = nd_line(line_node);
- st_insert(labels_table, (st_data_t)label_name, (st_data_t)label);
- }
- else {
- label = (LABEL *)data;
- }
- }
- else {
- COMPILE_ERROR(ERROR_ARGS "invalid goto/label format");
- return COMPILE_NG;
- }
-
- if (mid == goto_id) {
- ADD_INSNL(ret, line_node, jump, label);
- }
- else {
- ADD_LABEL(ret, label);
- }
- return COMPILE_OK;
- }
- }
-#endif
-
- const char *builtin_func;
- if (UNLIKELY(iseq_has_builtin_function_table(iseq)) &&
- (builtin_func = iseq_builtin_function_name(type, node->nd_recv, mid)) != NULL) {
- return compile_builtin_function_call(iseq, ret, node, line_node, popped, parent_block, args, builtin_func);
- }
-
- /* receiver */
- if (!assume_receiver) {
- if (type == NODE_CALL || type == NODE_OPCALL || type == NODE_QCALL) {
- int idx, level;
-
- if (mid == idCall &&
- nd_type_p(node->nd_recv, NODE_LVAR) &&
- iseq_block_param_id_p(iseq, node->nd_recv->nd_vid, &idx, &level)) {
- ADD_INSN2(recv, node->nd_recv, getblockparamproxy, INT2FIX(idx + VM_ENV_DATA_SIZE - 1), INT2FIX(level));
- }
- else if (private_recv_p(node)) {
- ADD_INSN(recv, node, putself);
- flag |= VM_CALL_FCALL;
- }
- else {
- CHECK(COMPILE(recv, "recv", node->nd_recv));
- }
-
- if (type == NODE_QCALL) {
- else_label = qcall_branch_start(iseq, recv, &branches, node, line_node);
- }
- }
- else if (type == NODE_FCALL || type == NODE_VCALL) {
- ADD_CALL_RECEIVER(recv, line_node);
- }
- }
-
- /* args */
- if (type != NODE_VCALL) {
- argc = setup_args(iseq, args, node->nd_args, &flag, &keywords);
- CHECK(!NIL_P(argc));
- }
- else {
- argc = INT2FIX(0);
- }
-
- ADD_SEQ(ret, recv);
- ADD_SEQ(ret, args);
-
- debugp_param("call args argc", argc);
- debugp_param("call method", ID2SYM(mid));
-
- switch ((int)type) {
- case NODE_VCALL:
- flag |= VM_CALL_VCALL;
- /* VCALL is funcall, so fall through */
- case NODE_FCALL:
- flag |= VM_CALL_FCALL;
- }
-
- ADD_SEND_R(ret, line_node, mid, argc, parent_block, INT2FIX(flag), keywords);
-
- qcall_branch_end(iseq, ret, else_label, branches, node, line_node);
- if (popped) {
- ADD_INSN(ret, line_node, pop);
- }
- return COMPILE_OK;
-}
-
-static int
-compile_op_asgn1(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
-{
- const int line = nd_line(node);
- VALUE argc;
- unsigned int flag = 0;
- int asgnflag = 0;
- ID id = node->nd_mid;
- int boff = 0;
-
- /*
- * a[x] (op)= y
- *
- * nil # nil
- * eval a # nil a
- * eval x # nil a x
- * dupn 2 # nil a x a x
- * send :[] # nil a x a[x]
- * eval y # nil a x a[x] y
- * send op # nil a x ret
- * setn 3 # ret a x ret
- * send []= # ret ?
- * pop # ret
- */
-
- /*
- * nd_recv[nd_args->nd_body] (nd_mid)= nd_args->nd_head;
- * NODE_OP_ASGN nd_recv
- * nd_args->nd_head
- * nd_args->nd_body
- * nd_mid
- */
-
- if (!popped) {
- ADD_INSN(ret, node, putnil);
- }
- asgnflag = COMPILE_RECV(ret, "NODE_OP_ASGN1 recv", node);
- CHECK(asgnflag != -1);
- switch (nd_type(node->nd_args->nd_head)) {
- case NODE_ZLIST:
- argc = INT2FIX(0);
- break;
- case NODE_BLOCK_PASS:
- boff = 1;
- /* fall through */
- default:
- argc = setup_args(iseq, ret, node->nd_args->nd_head, &flag, NULL);
- CHECK(!NIL_P(argc));
- }
- ADD_INSN1(ret, node, dupn, FIXNUM_INC(argc, 1 + boff));
- flag |= asgnflag;
- ADD_SEND_WITH_FLAG(ret, node, idAREF, argc, INT2FIX(flag));
-
- if (id == idOROP || id == idANDOP) {
- /* a[x] ||= y or a[x] &&= y
-
- unless/if a[x]
- a[x]= y
- else
- nil
- end
- */
- LABEL *label = NEW_LABEL(line);
- LABEL *lfin = NEW_LABEL(line);
-
- ADD_INSN(ret, node, dup);
- if (id == idOROP) {
- ADD_INSNL(ret, node, branchif, label);
- }
- else { /* idANDOP */
- ADD_INSNL(ret, node, branchunless, label);
- }
- ADD_INSN(ret, node, pop);
-
- CHECK(COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body));
- if (!popped) {
- ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 2+boff));
- }
- if (flag & VM_CALL_ARGS_SPLAT) {
- ADD_INSN1(ret, node, newarray, INT2FIX(1));
- if (boff > 0) {
- ADD_INSN1(ret, node, dupn, INT2FIX(3));
- ADD_INSN(ret, node, swap);
- ADD_INSN(ret, node, pop);
- }
- ADD_INSN(ret, node, concatarray);
- if (boff > 0) {
- ADD_INSN1(ret, node, setn, INT2FIX(3));
- ADD_INSN(ret, node, pop);
- ADD_INSN(ret, node, pop);
- }
- ADD_SEND_WITH_FLAG(ret, node, idASET, argc, INT2FIX(flag));
- }
- else {
- if (boff > 0)
- ADD_INSN(ret, node, swap);
- ADD_SEND_WITH_FLAG(ret, node, idASET, FIXNUM_INC(argc, 1), INT2FIX(flag));
- }
- ADD_INSN(ret, node, pop);
- ADD_INSNL(ret, node, jump, lfin);
- ADD_LABEL(ret, label);
- if (!popped) {
- ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 2+boff));
- }
- ADD_INSN1(ret, node, adjuststack, FIXNUM_INC(argc, 2+boff));
- ADD_LABEL(ret, lfin);
- }
- else {
- CHECK(COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body));
- ADD_SEND(ret, node, id, INT2FIX(1));
- if (!popped) {
- ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 2+boff));
- }
- if (flag & VM_CALL_ARGS_SPLAT) {
- ADD_INSN1(ret, node, newarray, INT2FIX(1));
- if (boff > 0) {
- ADD_INSN1(ret, node, dupn, INT2FIX(3));
- ADD_INSN(ret, node, swap);
- ADD_INSN(ret, node, pop);
- }
- ADD_INSN(ret, node, concatarray);
- if (boff > 0) {
- ADD_INSN1(ret, node, setn, INT2FIX(3));
- ADD_INSN(ret, node, pop);
- ADD_INSN(ret, node, pop);
- }
- ADD_SEND_WITH_FLAG(ret, node, idASET, argc, INT2FIX(flag));
- }
- else {
- if (boff > 0)
- ADD_INSN(ret, node, swap);
- ADD_SEND_WITH_FLAG(ret, node, idASET, FIXNUM_INC(argc, 1), INT2FIX(flag));
- }
- ADD_INSN(ret, node, pop);
- }
- return COMPILE_OK;
-}
-
-static int
-compile_op_asgn2(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
-{
const int line = nd_line(node);
- ID atype = node->nd_next->nd_mid;
- ID vid = node->nd_next->nd_vid, aid = rb_id_attrset(vid);
- int asgnflag;
- LABEL *lfin = NEW_LABEL(line);
- LABEL *lcfin = NEW_LABEL(line);
- LABEL *lskip = 0;
- /*
- class C; attr_accessor :c; end
- r = C.new
- r.a &&= v # asgn2
-
- eval r # r
- dup # r r
- eval r.a # r o
-
- # or
- dup # r o o
- if lcfin # r o
- pop # r
- eval v # r v
- swap # v r
- topn 1 # v r v
- send a= # v ?
- jump lfin # v ?
-
- lcfin: # r o
- swap # o r
-
- lfin: # o ?
- pop # o
-
- # or (popped)
- if lcfin # r
- eval v # r v
- send a= # ?
- jump lfin # ?
-
- lcfin: # r
-
- lfin: # ?
- pop #
-
- # and
- dup # r o o
- unless lcfin
- pop # r
- eval v # r v
- swap # v r
- topn 1 # v r v
- send a= # v ?
- jump lfin # v ?
-
- # others
- eval v # r o v
- send ?? # r w
- send a= # w
-
- */
-
- asgnflag = COMPILE_RECV(ret, "NODE_OP_ASGN2#recv", node);
- CHECK(asgnflag != -1);
- if (node->nd_next->nd_aid) {
- lskip = NEW_LABEL(line);
- ADD_INSN(ret, node, dup);
- ADD_INSNL(ret, node, branchnil, lskip);
- }
- ADD_INSN(ret, node, dup);
- ADD_SEND_WITH_FLAG(ret, node, vid, INT2FIX(0), INT2FIX(asgnflag));
-
- if (atype == idOROP || atype == idANDOP) {
- if (!popped) {
- ADD_INSN(ret, node, dup);
- }
- if (atype == idOROP) {
- ADD_INSNL(ret, node, branchif, lcfin);
- }
- else { /* idANDOP */
- ADD_INSNL(ret, node, branchunless, lcfin);
- }
- if (!popped) {
- ADD_INSN(ret, node, pop);
- }
- CHECK(COMPILE(ret, "NODE_OP_ASGN2 val", node->nd_value));
- if (!popped) {
- ADD_INSN(ret, node, swap);
- ADD_INSN1(ret, node, topn, INT2FIX(1));
- }
- ADD_SEND_WITH_FLAG(ret, node, aid, INT2FIX(1), INT2FIX(asgnflag));
- ADD_INSNL(ret, node, jump, lfin);
-
- ADD_LABEL(ret, lcfin);
- if (!popped) {
- ADD_INSN(ret, node, swap);
- }
-
- ADD_LABEL(ret, lfin);
- }
- else {
- CHECK(COMPILE(ret, "NODE_OP_ASGN2 val", node->nd_value));
- ADD_SEND(ret, node, atype, INT2FIX(1));
- if (!popped) {
- ADD_INSN(ret, node, swap);
- ADD_INSN1(ret, node, topn, INT2FIX(1));
- }
- ADD_SEND_WITH_FLAG(ret, node, aid, INT2FIX(1), INT2FIX(asgnflag));
- }
- if (lskip && popped) {
- ADD_LABEL(ret, lskip);
- }
- ADD_INSN(ret, node, pop);
- if (lskip && !popped) {
- ADD_LABEL(ret, lskip);
- }
- return COMPILE_OK;
-}
-static int
-compile_op_cdecl(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
-{
- const int line = nd_line(node);
- LABEL *lfin = 0;
- LABEL *lassign = 0;
- ID mid;
-
- switch (nd_type(node->nd_head)) {
- case NODE_COLON3:
- ADD_INSN1(ret, node, putobject, rb_cObject);
- break;
- case NODE_COLON2:
- CHECK(COMPILE(ret, "NODE_OP_CDECL/colon2#nd_head", node->nd_head->nd_head));
- break;
- default:
- COMPILE_ERROR(ERROR_ARGS "%s: invalid node in NODE_OP_CDECL",
- ruby_node_name(nd_type(node->nd_head)));
- return COMPILE_NG;
- }
- mid = node->nd_head->nd_mid;
- /* cref */
- if (node->nd_aid == idOROP) {
- lassign = NEW_LABEL(line);
- ADD_INSN(ret, node, dup); /* cref cref */
- ADD_INSN3(ret, node, defined, INT2FIX(DEFINED_CONST_FROM),
- ID2SYM(mid), Qtrue); /* cref bool */
- ADD_INSNL(ret, node, branchunless, lassign); /* cref */
- }
- ADD_INSN(ret, node, dup); /* cref cref */
- ADD_INSN1(ret, node, putobject, Qtrue);
- ADD_INSN1(ret, node, getconstant, ID2SYM(mid)); /* cref obj */
-
- if (node->nd_aid == idOROP || node->nd_aid == idANDOP) {
- lfin = NEW_LABEL(line);
- if (!popped) ADD_INSN(ret, node, dup); /* cref [obj] obj */
- if (node->nd_aid == idOROP)
- ADD_INSNL(ret, node, branchif, lfin);
- else /* idANDOP */
- ADD_INSNL(ret, node, branchunless, lfin);
- /* cref [obj] */
- if (!popped) ADD_INSN(ret, node, pop); /* cref */
- if (lassign) ADD_LABEL(ret, lassign);
- CHECK(COMPILE(ret, "NODE_OP_CDECL#nd_value", node->nd_value));
- /* cref value */
- if (popped)
- ADD_INSN1(ret, node, topn, INT2FIX(1)); /* cref value cref */
- else {
- ADD_INSN1(ret, node, dupn, INT2FIX(2)); /* cref value cref value */
- ADD_INSN(ret, node, swap); /* cref value value cref */
- }
- ADD_INSN1(ret, node, setconstant, ID2SYM(mid)); /* cref [value] */
- ADD_LABEL(ret, lfin); /* cref [value] */
- if (!popped) ADD_INSN(ret, node, swap); /* [value] cref */
- ADD_INSN(ret, node, pop); /* [value] */
- }
- else {
- CHECK(COMPILE(ret, "NODE_OP_CDECL#nd_value", node->nd_value));
- /* cref obj value */
- ADD_CALL(ret, node, node->nd_aid, INT2FIX(1));
- /* cref value */
- ADD_INSN(ret, node, swap); /* value cref */
- if (!popped) {
- ADD_INSN1(ret, node, topn, INT2FIX(1)); /* value cref value */
- ADD_INSN(ret, node, swap); /* value value cref */
- }
- ADD_INSN1(ret, node, setconstant, ID2SYM(mid));
- }
- return COMPILE_OK;
-}
-
-static int
-compile_op_log(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const enum node_type type)
-{
- const int line = nd_line(node);
- LABEL *lfin = NEW_LABEL(line);
- LABEL *lassign;
-
- if (type == NODE_OP_ASGN_OR && !nd_type_p(node->nd_head, NODE_IVAR)) {
- LABEL *lfinish[2];
- lfinish[0] = lfin;
- lfinish[1] = 0;
- defined_expr(iseq, ret, node->nd_head, lfinish, Qfalse);
- lassign = lfinish[1];
- if (!lassign) {
- lassign = NEW_LABEL(line);
- }
- ADD_INSNL(ret, node, branchunless, lassign);
- }
- else {
- lassign = NEW_LABEL(line);
- }
-
- CHECK(COMPILE(ret, "NODE_OP_ASGN_AND/OR#nd_head", node->nd_head));
-
- if (!popped) {
- ADD_INSN(ret, node, dup);
- }
-
- if (type == NODE_OP_ASGN_AND) {
- ADD_INSNL(ret, node, branchunless, lfin);
- }
- else {
- ADD_INSNL(ret, node, branchif, lfin);
- }
-
- if (!popped) {
- ADD_INSN(ret, node, pop);
- }
-
- ADD_LABEL(ret, lassign);
- CHECK(COMPILE_(ret, "NODE_OP_ASGN_AND/OR#nd_value", node->nd_value, popped));
- ADD_LABEL(ret, lfin);
- return COMPILE_OK;
-}
-
-static int
-compile_super(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const enum node_type type)
-{
- struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
- DECL_ANCHOR(args);
- int argc;
- unsigned int flag = 0;
- struct rb_callinfo_kwarg *keywords = NULL;
- const rb_iseq_t *parent_block = ISEQ_COMPILE_DATA(iseq)->current_block;
-
- INIT_ANCHOR(args);
- ISEQ_COMPILE_DATA(iseq)->current_block = NULL;
- if (type == NODE_SUPER) {
- VALUE vargc = setup_args(iseq, args, node->nd_args, &flag, &keywords);
- CHECK(!NIL_P(vargc));
- argc = FIX2INT(vargc);
- }
- else {
- /* NODE_ZSUPER */
- int i;
- const rb_iseq_t *liseq = body->local_iseq;
- const struct rb_iseq_constant_body *const local_body = ISEQ_BODY(liseq);
- const struct rb_iseq_param_keyword *const local_kwd = local_body->param.keyword;
- int lvar_level = get_lvar_level(iseq);
-
- argc = local_body->param.lead_num;
-
- /* normal arguments */
- for (i = 0; i < local_body->param.lead_num; i++) {
- int idx = local_body->local_table_size - i;
- ADD_GETLOCAL(args, node, idx, lvar_level);
- }
-
- if (local_body->param.flags.has_opt) {
- /* optional arguments */
- int j;
- for (j = 0; j < local_body->param.opt_num; j++) {
- int idx = local_body->local_table_size - (i + j);
- ADD_GETLOCAL(args, node, idx, lvar_level);
- }
- i += j;
- argc = i;
- }
- if (local_body->param.flags.has_rest) {
- /* rest argument */
- int idx = local_body->local_table_size - local_body->param.rest_start;
- ADD_GETLOCAL(args, node, idx, lvar_level);
- ADD_INSN1(args, node, splatarray, Qfalse);
-
- argc = local_body->param.rest_start + 1;
- flag |= VM_CALL_ARGS_SPLAT;
- }
- if (local_body->param.flags.has_post) {
- /* post arguments */
- int post_len = local_body->param.post_num;
- int post_start = local_body->param.post_start;
-
- if (local_body->param.flags.has_rest) {
- int j;
- for (j=0; j<post_len; j++) {
- int idx = local_body->local_table_size - (post_start + j);
- ADD_GETLOCAL(args, node, idx, lvar_level);
- }
- ADD_INSN1(args, node, newarray, INT2FIX(j));
- ADD_INSN (args, node, concatarray);
- /* argc is settled at above */
- }
- else {
- int j;
- for (j=0; j<post_len; j++) {
- int idx = local_body->local_table_size - (post_start + j);
- ADD_GETLOCAL(args, node, idx, lvar_level);
- }
- argc = post_len + post_start;
- }
- }
-
- if (local_body->param.flags.has_kw) { /* TODO: support keywords */
- int local_size = local_body->local_table_size;
- argc++;
-
- ADD_INSN1(args, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
-
- if (local_body->param.flags.has_kwrest) {
- int idx = local_body->local_table_size - local_kwd->rest_start;
- ADD_GETLOCAL(args, node, idx, lvar_level);
- if (local_kwd->num > 0) {
- ADD_SEND (args, node, rb_intern("dup"), INT2FIX(0));
- flag |= VM_CALL_KW_SPLAT_MUT;
- }
- }
- else {
- ADD_INSN1(args, node, newhash, INT2FIX(0));
- flag |= VM_CALL_KW_SPLAT_MUT;
- }
- for (i = 0; i < local_kwd->num; ++i) {
- ID id = local_kwd->table[i];
- int idx = local_size - get_local_var_idx(liseq, id);
- ADD_INSN1(args, node, putobject, ID2SYM(id));
- ADD_GETLOCAL(args, node, idx, lvar_level);
- }
- ADD_SEND(args, node, id_core_hash_merge_ptr, INT2FIX(i * 2 + 1));
- flag |= VM_CALL_KW_SPLAT;
- }
- else if (local_body->param.flags.has_kwrest) {
- int idx = local_body->local_table_size - local_kwd->rest_start;
- ADD_GETLOCAL(args, node, idx, lvar_level);
- argc++;
- flag |= VM_CALL_KW_SPLAT | VM_CALL_KW_SPLAT_MUT;
- }
- }
-
- flag |= VM_CALL_SUPER | VM_CALL_FCALL;
- if (type == NODE_ZSUPER) flag |= VM_CALL_ZSUPER;
- ADD_INSN(ret, node, putself);
- ADD_SEQ(ret, args);
- ADD_INSN2(ret, node, invokesuper,
- new_callinfo(iseq, 0, argc, flag, keywords, parent_block != NULL),
- parent_block);
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- return COMPILE_OK;
-}
-
-static int
-compile_yield(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
-{
- DECL_ANCHOR(args);
- VALUE argc;
- unsigned int flag = 0;
- struct rb_callinfo_kwarg *keywords = NULL;
-
- INIT_ANCHOR(args);
-
- switch (ISEQ_BODY(ISEQ_BODY(iseq)->local_iseq)->type) {
- case ISEQ_TYPE_TOP:
- case ISEQ_TYPE_MAIN:
- case ISEQ_TYPE_CLASS:
- COMPILE_ERROR(ERROR_ARGS "Invalid yield");
- return COMPILE_NG;
- default: /* valid */;
- }
-
- if (node->nd_head) {
- argc = setup_args(iseq, args, node->nd_head, &flag, &keywords);
- CHECK(!NIL_P(argc));
- }
- else {
- argc = INT2FIX(0);
- }
-
- ADD_SEQ(ret, args);
- ADD_INSN1(ret, node, invokeblock, new_callinfo(iseq, 0, FIX2INT(argc), flag, keywords, FALSE));
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
-
- int level = 0;
- const rb_iseq_t *tmp_iseq = iseq;
- for (; tmp_iseq != ISEQ_BODY(iseq)->local_iseq; level++ ) {
- tmp_iseq = ISEQ_BODY(tmp_iseq)->parent_iseq;
- }
- if (level > 0) access_outer_variables(iseq, level, rb_intern("yield"), true);
-
- return COMPILE_OK;
-}
-
-static int
-compile_match(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const enum node_type type)
-{
- DECL_ANCHOR(recv);
- DECL_ANCHOR(val);
-
- INIT_ANCHOR(recv);
- INIT_ANCHOR(val);
- switch ((int)type) {
- case NODE_MATCH:
- ADD_INSN1(recv, node, putobject, node->nd_lit);
- ADD_INSN2(val, node, getspecial, INT2FIX(0),
- INT2FIX(0));
- break;
- case NODE_MATCH2:
- CHECK(COMPILE(recv, "receiver", node->nd_recv));
- CHECK(COMPILE(val, "value", node->nd_value));
- break;
- case NODE_MATCH3:
- CHECK(COMPILE(recv, "receiver", node->nd_value));
- CHECK(COMPILE(val, "value", node->nd_recv));
- break;
- }
-
- ADD_SEQ(ret, recv);
- ADD_SEQ(ret, val);
- ADD_SEND(ret, node, idEqTilde, INT2FIX(1));
-
- if (node->nd_args) {
- compile_named_capture_assign(iseq, ret, node->nd_args);
- }
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- return COMPILE_OK;
-}
-
-static int
-compile_colon2(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
-{
- if (rb_is_const_id(node->nd_mid)) {
- /* constant */
- VALUE segments;
- if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache &&
- (segments = collect_const_segments(iseq, node))) {
- ISEQ_BODY(iseq)->ic_size++;
- ADD_INSN1(ret, node, opt_getconstant_path, segments);
- RB_OBJ_WRITTEN(iseq, Qundef, segments);
- }
- else {
- /* constant */
- DECL_ANCHOR(pref);
- DECL_ANCHOR(body);
-
- INIT_ANCHOR(pref);
- INIT_ANCHOR(body);
- CHECK(compile_const_prefix(iseq, node, pref, body));
- if (LIST_INSN_SIZE_ZERO(pref)) {
- ADD_INSN(ret, node, putnil);
- ADD_SEQ(ret, body);
- }
- else {
- ADD_SEQ(ret, pref);
- ADD_SEQ(ret, body);
- }
- }
- }
- else {
- /* function call */
- ADD_CALL_RECEIVER(ret, node);
- CHECK(COMPILE(ret, "colon2#nd_head", node->nd_head));
- ADD_CALL(ret, node, node->nd_mid, INT2FIX(1));
- }
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- return COMPILE_OK;
-}
-
-static int
-compile_colon3(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
-{
- debugi("colon3#nd_mid", node->nd_mid);
-
- /* add cache insn */
- if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache) {
- ISEQ_BODY(iseq)->ic_size++;
- VALUE segments = rb_ary_new_from_args(2, ID2SYM(idNULL), ID2SYM(node->nd_mid));
- ADD_INSN1(ret, node, opt_getconstant_path, segments);
- RB_OBJ_WRITTEN(iseq, Qundef, segments);
- }
- else {
- ADD_INSN1(ret, node, putobject, rb_cObject);
- ADD_INSN1(ret, node, putobject, Qtrue);
- ADD_INSN1(ret, node, getconstant, ID2SYM(node->nd_mid));
- }
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- return COMPILE_OK;
-}
-
-static int
-compile_dots(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped, const int excl)
-{
- VALUE flag = INT2FIX(excl);
- const NODE *b = node->nd_beg;
- const NODE *e = node->nd_end;
-
- if (optimizable_range_item_p(b) && optimizable_range_item_p(e)) {
- if (!popped) {
- VALUE bv = nd_type_p(b, NODE_LIT) ? b->nd_lit : Qnil;
- VALUE ev = nd_type_p(e, NODE_LIT) ? e->nd_lit : Qnil;
- VALUE val = rb_range_new(bv, ev, excl);
- ADD_INSN1(ret, node, putobject, val);
- RB_OBJ_WRITTEN(iseq, Qundef, val);
- }
- }
- else {
- CHECK(COMPILE_(ret, "min", b, popped));
- CHECK(COMPILE_(ret, "max", e, popped));
- if (!popped) {
- ADD_INSN1(ret, node, newrange, flag);
- }
- }
- return COMPILE_OK;
-}
-
-static int
-compile_errinfo(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
-{
- if (!popped) {
- if (ISEQ_BODY(iseq)->type == ISEQ_TYPE_RESCUE) {
- ADD_GETLOCAL(ret, node, LVAR_ERRINFO, 0);
- }
- else {
- const rb_iseq_t *ip = iseq;
- int level = 0;
- while (ip) {
- if (ISEQ_BODY(ip)->type == ISEQ_TYPE_RESCUE) {
- break;
- }
- ip = ISEQ_BODY(ip)->parent_iseq;
- level++;
- }
- if (ip) {
- ADD_GETLOCAL(ret, node, LVAR_ERRINFO, level);
- }
- else {
- ADD_INSN(ret, node, putnil);
- }
- }
- }
- return COMPILE_OK;
-}
-
-static int
-compile_kw_arg(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
-{
- struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
- LABEL *end_label = NEW_LABEL(nd_line(node));
- const NODE *default_value = node->nd_body->nd_value;
-
- if (default_value == NODE_SPECIAL_REQUIRED_KEYWORD) {
- /* required argument. do nothing */
- COMPILE_ERROR(ERROR_ARGS "unreachable");
- return COMPILE_NG;
- }
- else if (nd_type_p(default_value, NODE_LIT) ||
- nd_type_p(default_value, NODE_NIL) ||
- nd_type_p(default_value, NODE_TRUE) ||
- nd_type_p(default_value, NODE_FALSE)) {
- COMPILE_ERROR(ERROR_ARGS "unreachable");
- return COMPILE_NG;
- }
- else {
- /* if keywordcheck(_kw_bits, nth_keyword)
- * kw = default_value
- * end
- */
- int kw_bits_idx = body->local_table_size - body->param.keyword->bits_start;
- int keyword_idx = body->param.keyword->num;
-
- ADD_INSN2(ret, node, checkkeyword, INT2FIX(kw_bits_idx + VM_ENV_DATA_SIZE - 1), INT2FIX(keyword_idx));
- ADD_INSNL(ret, node, branchif, end_label);
- CHECK(COMPILE_POPPED(ret, "keyword default argument", node->nd_body));
- ADD_LABEL(ret, end_label);
- }
- return COMPILE_OK;
-}
-
-static int
-compile_attrasgn(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
-{
- DECL_ANCHOR(recv);
- DECL_ANCHOR(args);
- unsigned int flag = 0;
- ID mid = node->nd_mid;
- VALUE argc;
- LABEL *else_label = NULL;
- VALUE branches = Qfalse;
-
- /* optimization shortcut
- * obj["literal"] = value -> opt_aset_with(obj, "literal", value)
- */
- if (mid == idASET && !private_recv_p(node) && node->nd_args &&
- nd_type_p(node->nd_args, NODE_LIST) && node->nd_args->nd_alen == 2 &&
- nd_type_p(node->nd_args->nd_head, NODE_STR) &&
- ISEQ_COMPILE_DATA(iseq)->current_block == NULL &&
- !ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal &&
- ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction)
- {
- VALUE str = rb_fstring(node->nd_args->nd_head->nd_lit);
- CHECK(COMPILE(ret, "recv", node->nd_recv));
- CHECK(COMPILE(ret, "value", node->nd_args->nd_next->nd_head));
- if (!popped) {
- ADD_INSN(ret, node, swap);
- ADD_INSN1(ret, node, topn, INT2FIX(1));
- }
- ADD_INSN2(ret, node, opt_aset_with, str,
- new_callinfo(iseq, idASET, 2, 0, NULL, FALSE));
- RB_OBJ_WRITTEN(iseq, Qundef, str);
- ADD_INSN(ret, node, pop);
- return COMPILE_OK;
- }
-
- INIT_ANCHOR(recv);
- INIT_ANCHOR(args);
- argc = setup_args(iseq, args, node->nd_args, &flag, NULL);
- CHECK(!NIL_P(argc));
-
- int asgnflag = COMPILE_RECV(recv, "recv", node);
- CHECK(asgnflag != -1);
- flag |= (unsigned int)asgnflag;
-
- debugp_param("argc", argc);
- debugp_param("nd_mid", ID2SYM(mid));
-
- if (!rb_is_attrset_id(mid)) {
- /* safe nav attr */
- mid = rb_id_attrset(mid);
- else_label = qcall_branch_start(iseq, recv, &branches, node, node);
- }
- if (!popped) {
- ADD_INSN(ret, node, putnil);
- ADD_SEQ(ret, recv);
- ADD_SEQ(ret, args);
-
- if (flag & VM_CALL_ARGS_BLOCKARG) {
- ADD_INSN1(ret, node, topn, INT2FIX(1));
- if (flag & VM_CALL_ARGS_SPLAT) {
- ADD_INSN1(ret, node, putobject, INT2FIX(-1));
- ADD_SEND_WITH_FLAG(ret, node, idAREF, INT2FIX(1), INT2FIX(asgnflag));
- }
- ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 3));
- ADD_INSN (ret, node, pop);
- }
- else if (flag & VM_CALL_ARGS_SPLAT) {
- ADD_INSN(ret, node, dup);
- ADD_INSN1(ret, node, putobject, INT2FIX(-1));
- ADD_SEND_WITH_FLAG(ret, node, idAREF, INT2FIX(1), INT2FIX(asgnflag));
- ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 2));
- ADD_INSN (ret, node, pop);
- }
- else {
- ADD_INSN1(ret, node, setn, FIXNUM_INC(argc, 1));
- }
- }
- else {
- ADD_SEQ(ret, recv);
- ADD_SEQ(ret, args);
+ if (iseq) {
+ enum iseq_type type = iseq->body->type;
+ const rb_iseq_t *is = iseq;
+ enum iseq_type t = type;
+ const NODE *retval = node->nd_stts;
+ LABEL *splabel = 0;
+
+ while (t == ISEQ_TYPE_RESCUE || t == ISEQ_TYPE_ENSURE) {
+ if (!(is = is->body->parent_iseq)) break;
+ t = is->body->type;
+ }
+ switch (t) {
+ case ISEQ_TYPE_TOP:
+ case ISEQ_TYPE_MAIN:
+ if (is == iseq) {
+ /* plain top-level, leave directly */
+ type = ISEQ_TYPE_METHOD;
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (type == ISEQ_TYPE_METHOD) {
+ splabel = NEW_LABEL(0);
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line, 0);
+ }
+
+ CHECK(COMPILE(ret, "return nd_stts (return val)", retval));
+
+ if (type == ISEQ_TYPE_METHOD) {
+ add_ensure_iseq(ret, iseq, 1);
+ ADD_TRACE(ret, RUBY_EVENT_RETURN);
+ ADD_INSN(ret, line, leave);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!popped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else {
+ ADD_INSN1(ret, line, throw, INT2FIX(TAG_RETURN));
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ }
}
- ADD_SEND_WITH_FLAG(ret, node, mid, argc, INT2FIX(flag));
- qcall_branch_end(iseq, ret, else_label, branches, node, node);
- ADD_INSN(ret, node, pop);
return COMPILE_OK;
}
-static int iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped);
+static int iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, int popped);
/**
compile each node
@@ -9471,37 +5518,32 @@ static int
iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, const NODE *node, int popped)
{
if (node == 0) {
- if (!popped) {
- int lineno = ISEQ_COMPILE_DATA(iseq)->last_line;
- if (lineno == 0) lineno = FIX2INT(rb_iseq_first_lineno(iseq));
- debugs("node: NODE_NIL(implicit)\n");
- NODE dummy_line_node = generate_dummy_line_node(lineno, -1);
- ADD_INSN(ret, &dummy_line_node, putnil);
- }
- return COMPILE_OK;
+ if (!popped) {
+ int lineno = ISEQ_COMPILE_DATA(iseq)->last_line;
+ if (lineno == 0) lineno = FIX2INT(rb_iseq_first_lineno(iseq));
+ debugs("node: NODE_NIL(implicit)\n");
+ ADD_INSN(ret, lineno, putnil);
+ }
+ return COMPILE_OK;
}
return iseq_compile_each0(iseq, ret, node, popped);
}
static int
-iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int popped)
+iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, int popped)
{
const int line = (int)nd_line(node);
const enum node_type type = nd_type(node);
- struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
if (ISEQ_COMPILE_DATA(iseq)->last_line == line) {
- /* ignore */
+ /* ignore */
}
else {
- if (node->flags & NODE_FL_NEWLINE) {
- int event = RUBY_EVENT_LINE;
- ISEQ_COMPILE_DATA(iseq)->last_line = line;
- if (ISEQ_COVERAGE(iseq) && ISEQ_LINE_COVERAGE(iseq)) {
- event |= RUBY_EVENT_COVERAGE_LINE;
- }
- ADD_TRACE(ret, event);
- }
+ if (node->flags & NODE_FL_NEWLINE) {
+ ISEQ_COMPILE_DATA(iseq)->last_line = line;
+ ADD_TRACE_LINE_COVERAGE(ret, line);
+ ADD_TRACE(ret, RUBY_EVENT_LINE);
+ }
}
debug_node_start(node);
@@ -9509,676 +5551,1666 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const no
#define BEFORE_RETURN debug_node_end()
switch (type) {
- case NODE_BLOCK:
- CHECK(compile_block(iseq, ret, node, popped));
- break;
+ case NODE_BLOCK:{
+ while (node && nd_type(node) == NODE_BLOCK) {
+ CHECK(COMPILE_(ret, "BLOCK body", node->nd_head,
+ (node->nd_next ? 1 : popped)));
+ node = node->nd_next;
+ }
+ if (node) {
+ CHECK(COMPILE_(ret, "BLOCK next", node->nd_next, popped));
+ }
+ break;
+ }
case NODE_IF:
case NODE_UNLESS:
- CHECK(compile_if(iseq, ret, node, popped, type));
- break;
+ CHECK(compile_if(iseq, ret, node, popped, type));
+ break;
case NODE_CASE:
- CHECK(compile_case(iseq, ret, node, popped));
- break;
+ CHECK(compile_case(iseq, ret, node, popped));
+ break;
case NODE_CASE2:
- CHECK(compile_case2(iseq, ret, node, popped));
- break;
- case NODE_CASE3:
- CHECK(compile_case3(iseq, ret, node, popped));
- break;
+ CHECK(compile_case2(iseq, ret, node, popped));
+ break;
case NODE_WHILE:
case NODE_UNTIL:
- CHECK(compile_loop(iseq, ret, node, popped, type));
- break;
+ CHECK(compile_loop(iseq, ret, node, popped, type));
+ break;
case NODE_FOR:
+ CHECK(compile_for(iseq, ret, node, popped));
+ break;
case NODE_ITER:
- CHECK(compile_iter(iseq, ret, node, popped));
- break;
- case NODE_FOR_MASGN:
- CHECK(compile_for_masgn(iseq, ret, node, popped));
- break;
+ CHECK(compile_iter(iseq, ret, node, popped));
+ break;
case NODE_BREAK:
- CHECK(compile_break(iseq, ret, node, popped));
- break;
+ CHECK(compile_break(iseq, ret, node, popped));
+ break;
case NODE_NEXT:
- CHECK(compile_next(iseq, ret, node, popped));
- break;
+ CHECK(compile_next(iseq, ret, node, popped));
+ break;
case NODE_REDO:
- CHECK(compile_redo(iseq, ret, node, popped));
- break;
+ CHECK(compile_redo(iseq, ret, node, popped));
+ break;
case NODE_RETRY:
- CHECK(compile_retry(iseq, ret, node, popped));
- break;
+ CHECK(compile_retry(iseq, ret, node, popped));
+ break;
case NODE_BEGIN:{
- CHECK(COMPILE_(ret, "NODE_BEGIN", node->nd_body, popped));
- break;
+ CHECK(COMPILE_(ret, "NODE_BEGIN", node->nd_body, popped));
+ break;
}
case NODE_RESCUE:
- CHECK(compile_rescue(iseq, ret, node, popped));
- break;
+ CHECK(compile_rescue(iseq, ret, node, popped));
+ break;
case NODE_RESBODY:
- CHECK(compile_resbody(iseq, ret, node, popped));
- break;
+ CHECK(compile_resbody(iseq, ret, node, popped));
+ break;
case NODE_ENSURE:
- CHECK(compile_ensure(iseq, ret, node, popped));
- break;
+ CHECK(compile_ensure(iseq, ret, node, popped));
+ break;
case NODE_AND:
case NODE_OR:{
- LABEL *end_label = NEW_LABEL(line);
- CHECK(COMPILE(ret, "nd_1st", node->nd_1st));
- if (!popped) {
- ADD_INSN(ret, node, dup);
- }
- if (type == NODE_AND) {
- ADD_INSNL(ret, node, branchunless, end_label);
- }
- else {
- ADD_INSNL(ret, node, branchif, end_label);
- }
- if (!popped) {
- ADD_INSN(ret, node, pop);
- }
- CHECK(COMPILE_(ret, "nd_2nd", node->nd_2nd, popped));
- ADD_LABEL(ret, end_label);
- break;
+ LABEL *end_label = NEW_LABEL(line);
+ CHECK(COMPILE(ret, "nd_1st", node->nd_1st));
+ if (!popped) {
+ ADD_INSN(ret, line, dup);
+ }
+ if (type == NODE_AND) {
+ ADD_INSNL(ret, line, branchunless, end_label);
+ }
+ else {
+ ADD_INSNL(ret, line, branchif, end_label);
+ }
+ if (!popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ CHECK(COMPILE_(ret, "nd_2nd", node->nd_2nd, popped));
+ ADD_LABEL(ret, end_label);
+ break;
}
case NODE_MASGN:{
- compile_massign(iseq, ret, node, popped);
- break;
+ compile_massign(iseq, ret, node, popped);
+ break;
}
case NODE_LASGN:{
- ID id = node->nd_vid;
- int idx = ISEQ_BODY(body->local_iseq)->local_table_size - get_local_var_idx(iseq, id);
+ ID id = node->nd_vid;
+ int idx = iseq->body->local_iseq->body->local_table_size - get_local_var_idx(iseq, id);
- debugs("lvar: %s idx: %d\n", rb_id2name(id), idx);
- CHECK(COMPILE(ret, "rvalue", node->nd_value));
+ debugs("lvar: %s idx: %d\n", rb_id2name(id), idx);
+ CHECK(COMPILE(ret, "rvalue", node->nd_value));
- if (!popped) {
- ADD_INSN(ret, node, dup);
- }
- ADD_SETLOCAL(ret, node, idx, get_lvar_level(iseq));
- break;
+ if (!popped) {
+ ADD_INSN(ret, line, dup);
+ }
+ ADD_SETLOCAL(ret, line, idx, get_lvar_level(iseq));
+ break;
}
- case NODE_DASGN: {
- int idx, lv, ls;
- ID id = node->nd_vid;
- CHECK(COMPILE(ret, "dvalue", node->nd_value));
- debugi("dassn id", rb_id2str(id) ? id : '*');
-
- if (!popped) {
- ADD_INSN(ret, node, dup);
- }
-
- idx = get_dyna_var_idx(iseq, id, &lv, &ls);
-
- if (idx < 0) {
- COMPILE_ERROR(ERROR_ARGS "NODE_DASGN: unknown id (%"PRIsVALUE")",
- rb_id2str(id));
- goto ng;
- }
- ADD_SETLOCAL(ret, node, ls - idx, lv);
- break;
+ case NODE_DASGN:
+ case NODE_DASGN_CURR:{
+ int idx, lv, ls;
+ ID id = node->nd_vid;
+ CHECK(COMPILE(ret, "dvalue", node->nd_value));
+ debugi("dassn id", rb_id2str(id) ? id : '*');
+
+ if (!popped) {
+ ADD_INSN(ret, line, dup);
+ }
+
+ idx = get_dyna_var_idx(iseq, id, &lv, &ls);
+
+ if (idx < 0) {
+ COMPILE_ERROR(ERROR_ARGS "NODE_DASGN(_CURR): unknown id (%"PRIsVALUE")",
+ rb_id2str(id));
+ goto ng;
+ }
+ ADD_SETLOCAL(ret, line, ls - idx, lv);
+ break;
}
case NODE_GASGN:{
- CHECK(COMPILE(ret, "lvalue", node->nd_value));
-
- if (!popped) {
- ADD_INSN(ret, node, dup);
- }
- ADD_INSN1(ret, node, setglobal, ID2SYM(node->nd_entry));
- break;
+ CHECK(COMPILE(ret, "lvalue", node->nd_value));
+
+ if (!popped) {
+ ADD_INSN(ret, line, dup);
+ }
+ ADD_INSN1(ret, line, setglobal,
+ ((VALUE)node->nd_entry | 1));
+ break;
}
case NODE_IASGN:{
- CHECK(COMPILE(ret, "lvalue", node->nd_value));
- if (!popped) {
- ADD_INSN(ret, node, dup);
- }
- ADD_INSN2(ret, node, setinstancevariable,
- ID2SYM(node->nd_vid),
- get_ivar_ic_value(iseq,node->nd_vid));
- break;
+ CHECK(COMPILE(ret, "lvalue", node->nd_value));
+ if (!popped) {
+ ADD_INSN(ret, line, dup);
+ }
+ ADD_INSN2(ret, line, setinstancevariable,
+ ID2SYM(node->nd_vid),
+ get_ivar_ic_value(iseq,node->nd_vid));
+ break;
}
case NODE_CDECL:{
- if (node->nd_vid) {
- CHECK(COMPILE(ret, "lvalue", node->nd_value));
-
- if (!popped) {
- ADD_INSN(ret, node, dup);
- }
-
- ADD_INSN1(ret, node, putspecialobject,
- INT2FIX(VM_SPECIAL_OBJECT_CONST_BASE));
- ADD_INSN1(ret, node, setconstant, ID2SYM(node->nd_vid));
- }
- else {
- compile_cpath(ret, iseq, node->nd_else);
- CHECK(COMPILE(ret, "lvalue", node->nd_value));
- ADD_INSN(ret, node, swap);
-
- if (!popped) {
- ADD_INSN1(ret, node, topn, INT2FIX(1));
- ADD_INSN(ret, node, swap);
- }
-
- ADD_INSN1(ret, node, setconstant, ID2SYM(node->nd_else->nd_mid));
- }
- break;
+ CHECK(COMPILE(ret, "lvalue", node->nd_value));
+
+ if (!popped) {
+ ADD_INSN(ret, line, dup);
+ }
+
+ if (node->nd_vid) {
+ ADD_INSN1(ret, line, putspecialobject,
+ INT2FIX(VM_SPECIAL_OBJECT_CONST_BASE));
+ ADD_INSN1(ret, line, setconstant, ID2SYM(node->nd_vid));
+ }
+ else {
+ compile_cpath(ret, iseq, node->nd_else);
+ ADD_INSN1(ret, line, setconstant, ID2SYM(node->nd_else->nd_mid));
+ }
+ break;
}
case NODE_CVASGN:{
- CHECK(COMPILE(ret, "cvasgn val", node->nd_value));
- if (!popped) {
- ADD_INSN(ret, node, dup);
- }
- ADD_INSN2(ret, node, setclassvariable,
- ID2SYM(node->nd_vid),
- get_cvar_ic_value(iseq,node->nd_vid));
- break;
+ CHECK(COMPILE(ret, "cvasgn val", node->nd_value));
+ if (!popped) {
+ ADD_INSN(ret, line, dup);
+ }
+ ADD_INSN1(ret, line, setclassvariable,
+ ID2SYM(node->nd_vid));
+ break;
+ }
+ case NODE_OP_ASGN1: {
+ DECL_ANCHOR(args);
+ VALUE argc;
+ unsigned int flag = 0;
+ unsigned int asgnflag = 0;
+ ID id = node->nd_mid;
+ int boff = 0;
+
+ /*
+ * a[x] (op)= y
+ *
+ * nil # nil
+ * eval a # nil a
+ * eval x # nil a x
+ * dupn 2 # nil a x a x
+ * send :[] # nil a x a[x]
+ * eval y # nil a x a[x] y
+ * send op # nil a x ret
+ * setn 3 # ret a x ret
+ * send []= # ret ?
+ * pop # ret
+ */
+
+ /*
+ * nd_recv[nd_args->nd_body] (nd_mid)= nd_args->nd_head;
+ * NODE_OP_ASGN nd_recv
+ * nd_args->nd_head
+ * nd_args->nd_body
+ * nd_mid
+ */
+
+ if (!popped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ asgnflag = COMPILE_RECV(ret, "NODE_OP_ASGN1 recv", node);
+ switch (nd_type(node->nd_args->nd_head)) {
+ case NODE_ZARRAY:
+ argc = INT2FIX(0);
+ break;
+ case NODE_BLOCK_PASS:
+ boff = 1;
+ default:
+ INIT_ANCHOR(args);
+ argc = setup_args(iseq, args, node->nd_args->nd_head, &flag, NULL);
+ CHECK(!NIL_P(argc));
+ ADD_SEQ(ret, args);
+ }
+ ADD_INSN1(ret, line, dupn, FIXNUM_INC(argc, 1 + boff));
+ ADD_SEND_WITH_FLAG(ret, line, idAREF, argc, INT2FIX(flag));
+ flag |= asgnflag;
+
+ if (id == 0 || id == 1) {
+ /* 0: or, 1: and
+ a[x] ||= y
+
+ unless/if a[x]
+ a[x]= y
+ else
+ nil
+ end
+ */
+ LABEL *label = NEW_LABEL(line);
+ LABEL *lfin = NEW_LABEL(line);
+
+ ADD_INSN(ret, line, dup);
+ if (id == 0) {
+ /* or */
+ ADD_INSNL(ret, line, branchif, label);
+ }
+ else {
+ /* and */
+ ADD_INSNL(ret, line, branchunless, label);
+ }
+ ADD_INSN(ret, line, pop);
+
+ CHECK(COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body));
+ if (!popped) {
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2+boff));
+ }
+ if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN1(ret, line, newarray, INT2FIX(1));
+ if (boff > 0) {
+ ADD_INSN1(ret, line, dupn, INT2FIX(3));
+ ADD_INSN(ret, line, swap);
+ ADD_INSN(ret, line, pop);
+ }
+ ADD_INSN(ret, line, concatarray);
+ if (boff > 0) {
+ ADD_INSN1(ret, line, setn, INT2FIX(3));
+ ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, line, pop);
+ }
+ ADD_SEND_WITH_FLAG(ret, line, idASET, argc, INT2FIX(flag));
+ }
+ else {
+ if (boff > 0)
+ ADD_INSN(ret, line, swap);
+ ADD_SEND_WITH_FLAG(ret, line, idASET, FIXNUM_INC(argc, 1), INT2FIX(flag));
+ }
+ ADD_INSN(ret, line, pop);
+ ADD_INSNL(ret, line, jump, lfin);
+ ADD_LABEL(ret, label);
+ if (!popped) {
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2+boff));
+ }
+ ADD_INSN1(ret, line, adjuststack, FIXNUM_INC(argc, 2+boff));
+ ADD_LABEL(ret, lfin);
+ }
+ else {
+ CHECK(COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body));
+ ADD_SEND(ret, line, id, INT2FIX(1));
+ if (!popped) {
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2+boff));
+ }
+ if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN1(ret, line, newarray, INT2FIX(1));
+ if (boff > 0) {
+ ADD_INSN1(ret, line, dupn, INT2FIX(3));
+ ADD_INSN(ret, line, swap);
+ ADD_INSN(ret, line, pop);
+ }
+ ADD_INSN(ret, line, concatarray);
+ if (boff > 0) {
+ ADD_INSN1(ret, line, setn, INT2FIX(3));
+ ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, line, pop);
+ }
+ ADD_SEND_WITH_FLAG(ret, line, idASET, argc, INT2FIX(flag));
+ }
+ else {
+ if (boff > 0)
+ ADD_INSN(ret, line, swap);
+ ADD_SEND_WITH_FLAG(ret, line, idASET, FIXNUM_INC(argc, 1), INT2FIX(flag));
+ }
+ ADD_INSN(ret, line, pop);
+ }
+
+ break;
+ }
+ case NODE_OP_ASGN2:{
+ ID atype = node->nd_next->nd_mid;
+ ID vid = node->nd_next->nd_vid, aid = rb_id_attrset(vid);
+ VALUE asgnflag;
+ LABEL *lfin = NEW_LABEL(line);
+ LABEL *lcfin = NEW_LABEL(line);
+ LABEL *lskip = 0;
+ /*
+ class C; attr_accessor :c; end
+ r = C.new
+ r.a &&= v # asgn2
+
+ eval r # r
+ dup # r r
+ eval r.a # r o
+
+ # or
+ dup # r o o
+ if lcfin # r o
+ pop # r
+ eval v # r v
+ swap # v r
+ topn 1 # v r v
+ send a= # v ?
+ jump lfin # v ?
+
+ lcfin: # r o
+ swap # o r
+
+ lfin: # o ?
+ pop # o
+
+ # and
+ dup # r o o
+ unless lcfin
+ pop # r
+ eval v # r v
+ swap # v r
+ topn 1 # v r v
+ send a= # v ?
+ jump lfin # v ?
+
+ # others
+ eval v # r o v
+ send ?? # r w
+ send a= # w
+
+ */
+
+ asgnflag = COMPILE_RECV(ret, "NODE_OP_ASGN2#recv", node);
+ if (node->nd_next->nd_aid) {
+ lskip = NEW_LABEL(line);
+ ADD_INSN(ret, line, dup);
+ ADD_INSNL(ret, line, branchnil, lskip);
+ }
+ ADD_INSN(ret, line, dup);
+ ADD_SEND(ret, line, vid, INT2FIX(0));
+
+ if (atype == 0 || atype == 1) { /* 0: OR or 1: AND */
+ ADD_INSN(ret, line, dup);
+ if (atype == 0) {
+ ADD_INSNL(ret, line, branchif, lcfin);
+ }
+ else {
+ ADD_INSNL(ret, line, branchunless, lcfin);
+ }
+ ADD_INSN(ret, line, pop);
+ CHECK(COMPILE(ret, "NODE_OP_ASGN2 val", node->nd_value));
+ ADD_INSN(ret, line, swap);
+ ADD_INSN1(ret, line, topn, INT2FIX(1));
+ ADD_SEND_WITH_FLAG(ret, line, aid, INT2FIX(1), INT2FIX(asgnflag));
+ ADD_INSNL(ret, line, jump, lfin);
+
+ ADD_LABEL(ret, lcfin);
+ ADD_INSN(ret, line, swap);
+
+ ADD_LABEL(ret, lfin);
+ ADD_INSN(ret, line, pop);
+ if (lskip) {
+ ADD_LABEL(ret, lskip);
+ }
+ if (popped) {
+ /* we can apply more optimize */
+ ADD_INSN(ret, line, pop);
+ }
+ }
+ else {
+ CHECK(COMPILE(ret, "NODE_OP_ASGN2 val", node->nd_value));
+ ADD_SEND(ret, line, atype, INT2FIX(1));
+ if (!popped) {
+ ADD_INSN(ret, line, swap);
+ ADD_INSN1(ret, line, topn, INT2FIX(1));
+ }
+ ADD_SEND_WITH_FLAG(ret, line, aid, INT2FIX(1), INT2FIX(asgnflag));
+ if (lskip && popped) {
+ ADD_LABEL(ret, lskip);
+ }
+ ADD_INSN(ret, line, pop);
+ if (lskip && !popped) {
+ ADD_LABEL(ret, lskip);
+ }
+ }
+ break;
+ }
+ case NODE_OP_CDECL: {
+ LABEL *lfin = 0;
+ LABEL *lassign = 0;
+ ID mid;
+
+ switch (nd_type(node->nd_head)) {
+ case NODE_COLON3:
+ ADD_INSN1(ret, line, putobject, rb_cObject);
+ break;
+ case NODE_COLON2:
+ CHECK(COMPILE(ret, "NODE_OP_CDECL/colon2#nd_head", node->nd_head->nd_head));
+ break;
+ default:
+ COMPILE_ERROR(ERROR_ARGS "%s: invalid node in NODE_OP_CDECL",
+ ruby_node_name(nd_type(node->nd_head)));
+ goto ng;
+ }
+ mid = node->nd_head->nd_mid;
+ /* cref */
+ if (node->nd_aid == 0) {
+ lassign = NEW_LABEL(line);
+ ADD_INSN(ret, line, dup); /* cref cref */
+ ADD_INSN3(ret, line, defined, INT2FIX(DEFINED_CONST),
+ ID2SYM(mid), Qfalse); /* cref bool */
+ ADD_INSNL(ret, line, branchunless, lassign); /* cref */
+ }
+ ADD_INSN(ret, line, dup); /* cref cref */
+ ADD_INSN1(ret, line, getconstant, ID2SYM(mid)); /* cref obj */
+
+ if (node->nd_aid == 0 || node->nd_aid == 1) {
+ lfin = NEW_LABEL(line);
+ if (!popped) ADD_INSN(ret, line, dup); /* cref [obj] obj */
+ if (node->nd_aid == 0)
+ ADD_INSNL(ret, line, branchif, lfin);
+ else
+ ADD_INSNL(ret, line, branchunless, lfin);
+ /* cref [obj] */
+ if (!popped) ADD_INSN(ret, line, pop); /* cref */
+ if (lassign) ADD_LABEL(ret, lassign);
+ CHECK(COMPILE(ret, "NODE_OP_CDECL#nd_value", node->nd_value));
+ /* cref value */
+ if (popped)
+ ADD_INSN1(ret, line, topn, INT2FIX(1)); /* cref value cref */
+ else {
+ ADD_INSN1(ret, line, dupn, INT2FIX(2)); /* cref value cref value */
+ ADD_INSN(ret, line, swap); /* cref value value cref */
+ }
+ ADD_INSN1(ret, line, setconstant, ID2SYM(mid)); /* cref [value] */
+ ADD_LABEL(ret, lfin); /* cref [value] */
+ if (!popped) ADD_INSN(ret, line, swap); /* [value] cref */
+ ADD_INSN(ret, line, pop); /* [value] */
+ }
+ else {
+ CHECK(COMPILE(ret, "NODE_OP_CDECL#nd_value", node->nd_value));
+ /* cref obj value */
+ ADD_CALL(ret, line, node->nd_aid, INT2FIX(1));
+ /* cref value */
+ ADD_INSN(ret, line, swap); /* value cref */
+ if (!popped) {
+ ADD_INSN1(ret, line, topn, INT2FIX(1)); /* value cref value */
+ ADD_INSN(ret, line, swap); /* value value cref */
+ }
+ ADD_INSN1(ret, line, setconstant, ID2SYM(mid));
+ }
+ break;
}
- case NODE_OP_ASGN1:
- CHECK(compile_op_asgn1(iseq, ret, node, popped));
- break;
- case NODE_OP_ASGN2:
- CHECK(compile_op_asgn2(iseq, ret, node, popped));
- break;
- case NODE_OP_CDECL:
- CHECK(compile_op_cdecl(iseq, ret, node, popped));
- break;
case NODE_OP_ASGN_AND:
- case NODE_OP_ASGN_OR:
- CHECK(compile_op_log(iseq, ret, node, popped, type));
- break;
- case NODE_CALL: /* obj.foo */
- case NODE_OPCALL: /* foo[] */
- if (compile_call_precheck_freeze(iseq, ret, node, node, popped) == TRUE) {
- break;
- }
- case NODE_QCALL: /* obj&.foo */
- case NODE_FCALL: /* foo() */
- case NODE_VCALL: /* foo (variable or call) */
- if (compile_call(iseq, ret, node, type, node, popped, false) == COMPILE_NG) {
- goto ng;
- }
- break;
+ case NODE_OP_ASGN_OR:{
+ LABEL *lfin = NEW_LABEL(line);
+ LABEL *lassign;
+
+ if (nd_type(node) == NODE_OP_ASGN_OR) {
+ LABEL *lfinish[2];
+ lfinish[0] = lfin;
+ lfinish[1] = 0;
+ defined_expr(iseq, ret, node->nd_head, lfinish, Qfalse);
+ lassign = lfinish[1];
+ if (!lassign) {
+ lassign = NEW_LABEL(line);
+ }
+ ADD_INSNL(ret, line, branchunless, lassign);
+ }
+ else {
+ lassign = NEW_LABEL(line);
+ }
+
+ CHECK(COMPILE(ret, "NODE_OP_ASGN_AND/OR#nd_head", node->nd_head));
+ ADD_INSN(ret, line, dup);
+
+ if (nd_type(node) == NODE_OP_ASGN_AND) {
+ ADD_INSNL(ret, line, branchunless, lfin);
+ }
+ else {
+ ADD_INSNL(ret, line, branchif, lfin);
+ }
+
+ ADD_INSN(ret, line, pop);
+ ADD_LABEL(ret, lassign);
+ CHECK(COMPILE(ret, "NODE_OP_ASGN_AND/OR#nd_value", node->nd_value));
+ ADD_LABEL(ret, lfin);
+
+ if (popped) {
+ /* we can apply more optimize */
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_CALL:
+ case NODE_OPCALL:
+ /* optimization shortcut
+ * "literal".freeze -> opt_str_freeze("literal")
+ */
+ if (node->nd_recv && nd_type(node->nd_recv) == NODE_STR &&
+ (node->nd_mid == idFreeze || node->nd_mid == idUMinus) &&
+ node->nd_args == NULL &&
+ ISEQ_COMPILE_DATA(iseq)->current_block == NULL &&
+ ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction) {
+ VALUE str = freeze_literal(iseq, node->nd_recv->nd_lit);
+ if (node->nd_mid == idUMinus) {
+ ADD_INSN1(ret, line, opt_str_uminus, str);
+ }
+ else {
+ ADD_INSN1(ret, line, opt_str_freeze, str);
+ }
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ /* optimization shortcut
+ * obj["literal"] -> opt_aref_with(obj, "literal")
+ */
+ if (node->nd_mid == idAREF && !private_recv_p(node) && node->nd_args &&
+ nd_type(node->nd_args) == NODE_ARRAY && node->nd_args->nd_alen == 1 &&
+ nd_type(node->nd_args->nd_head) == NODE_STR &&
+ ISEQ_COMPILE_DATA(iseq)->current_block == NULL &&
+ !ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal &&
+ ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction) {
+ VALUE str = freeze_literal(iseq, node->nd_args->nd_head->nd_lit);
+ CHECK(COMPILE(ret, "recv", node->nd_recv));
+ ADD_INSN3(ret, line, opt_aref_with,
+ new_callinfo(iseq, idAREF, 1, 0, NULL, FALSE),
+ NULL/* CALL_CACHE */, str);
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_QCALL:
+ case NODE_FCALL:
+ case NODE_VCALL:{ /* VCALL: variable or call */
+ /*
+ call: obj.method(...)
+ fcall: func(...)
+ vcall: func
+ */
+ DECL_ANCHOR(recv);
+ DECL_ANCHOR(args);
+ LABEL *else_label = 0;
+ LABEL *end_label = 0;
+ VALUE branches = 0;
+ ID mid = node->nd_mid;
+ VALUE argc;
+ unsigned int flag = 0;
+ struct rb_call_info_kw_arg *keywords = NULL;
+ const rb_iseq_t *parent_block = ISEQ_COMPILE_DATA(iseq)->current_block;
+ ISEQ_COMPILE_DATA(iseq)->current_block = NULL;
+
+ INIT_ANCHOR(recv);
+ INIT_ANCHOR(args);
+#if SUPPORT_JOKE
+ if (nd_type(node) == NODE_VCALL) {
+ ID id_bitblt;
+ ID id_answer;
+
+ CONST_ID(id_bitblt, "bitblt");
+ CONST_ID(id_answer, "the_answer_to_life_the_universe_and_everything");
+
+ if (mid == id_bitblt) {
+ ADD_INSN(ret, line, bitblt);
+ break;
+ }
+ else if (mid == id_answer) {
+ ADD_INSN(ret, line, answer);
+ break;
+ }
+ }
+ /* only joke */
+ {
+ ID goto_id;
+ ID label_id;
+
+ CONST_ID(goto_id, "__goto__");
+ CONST_ID(label_id, "__label__");
+
+ if (nd_type(node) == NODE_FCALL &&
+ (mid == goto_id || mid == label_id)) {
+ LABEL *label;
+ st_data_t data;
+ st_table *labels_table = ISEQ_COMPILE_DATA(iseq)->labels_table;
+ VALUE label_name;
+
+ if (!labels_table) {
+ labels_table = st_init_numtable();
+ ISEQ_COMPILE_DATA(iseq)->labels_table = labels_table;
+ }
+ if (nd_type(node->nd_args->nd_head) == NODE_LIT &&
+ SYMBOL_P(node->nd_args->nd_head->nd_lit)) {
+
+ label_name = node->nd_args->nd_head->nd_lit;
+ if (!st_lookup(labels_table, (st_data_t)label_name, &data)) {
+ label = NEW_LABEL(line);
+ label->position = line;
+ st_insert(labels_table, (st_data_t)label_name, (st_data_t)label);
+ }
+ else {
+ label = (LABEL *)data;
+ }
+ }
+ else {
+ COMPILE_ERROR(ERROR_ARGS "invalid goto/label format");
+ goto ng;
+ }
+
+
+ if (mid == goto_id) {
+ ADD_INSNL(ret, line, jump, label);
+ }
+ else {
+ ADD_LABEL(ret, label);
+ }
+ break;
+ }
+ }
+#endif
+ /* receiver */
+ if (type == NODE_CALL || type == NODE_OPCALL || type == NODE_QCALL) {
+ CHECK(COMPILE(recv, "recv", node->nd_recv));
+ if (type == NODE_QCALL) {
+ else_label = NEW_LABEL(line);
+ end_label = NEW_LABEL(line);
+
+ DECL_BRANCH_BASE(branches, nd_first_lineno(node), nd_first_column(node), nd_last_lineno(node), nd_last_column(node), "&.");
+ ADD_INSN(recv, line, dup);
+ ADD_INSNL(recv, line, branchnil, else_label);
+ ADD_TRACE_BRANCH_COVERAGE(recv, nd_first_lineno(node), nd_first_column(node), nd_last_lineno(node), nd_last_column(node), "then", branches);
+ }
+ }
+ else if (type == NODE_FCALL || type == NODE_VCALL) {
+ ADD_CALL_RECEIVER(recv, line);
+ }
+
+ /* args */
+ if (type != NODE_VCALL) {
+ argc = setup_args(iseq, args, node->nd_args, &flag, &keywords);
+ CHECK(!NIL_P(argc));
+ }
+ else {
+ argc = INT2FIX(0);
+ }
+
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, args);
+
+ debugp_param("call args argc", argc);
+ debugp_param("call method", ID2SYM(mid));
+
+ switch ((int)type) {
+ case NODE_VCALL:
+ flag |= VM_CALL_VCALL;
+ /* VCALL is funcall, so fall through */
+ case NODE_FCALL:
+ flag |= VM_CALL_FCALL;
+ }
+
+ ADD_SEND_R(ret, line, mid, argc, parent_block, INT2FIX(flag), keywords);
+
+ if (else_label && end_label) {
+ ADD_INSNL(ret, line, jump, end_label);
+ ADD_LABEL(ret, else_label);
+ ADD_TRACE_BRANCH_COVERAGE(ret, nd_first_lineno(node), nd_first_column(node), nd_last_lineno(node), nd_last_column(node), "else", branches);
+ ADD_LABEL(ret, end_label);
+ }
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
case NODE_SUPER:
- case NODE_ZSUPER:
- CHECK(compile_super(iseq, ret, node, popped, type));
- break;
- case NODE_LIST:{
- CHECK(compile_array(iseq, ret, node, popped) >= 0);
- break;
+ case NODE_ZSUPER:{
+ DECL_ANCHOR(args);
+ int argc;
+ unsigned int flag = 0;
+ struct rb_call_info_kw_arg *keywords = NULL;
+ const rb_iseq_t *parent_block = ISEQ_COMPILE_DATA(iseq)->current_block;
+
+ INIT_ANCHOR(args);
+ ISEQ_COMPILE_DATA(iseq)->current_block = NULL;
+ if (type == NODE_SUPER) {
+ VALUE vargc = setup_args(iseq, args, node->nd_args, &flag, &keywords);
+ CHECK(!NIL_P(vargc));
+ argc = FIX2INT(vargc);
+ }
+ else {
+ /* NODE_ZSUPER */
+ int i;
+ const rb_iseq_t *liseq = iseq->body->local_iseq;
+ int lvar_level = get_lvar_level(iseq);
+
+ argc = liseq->body->param.lead_num;
+
+ /* normal arguments */
+ for (i = 0; i < liseq->body->param.lead_num; i++) {
+ int idx = liseq->body->local_table_size - i;
+ ADD_GETLOCAL(args, line, idx, lvar_level);
+ }
+
+ if (liseq->body->param.flags.has_opt) {
+ /* optional arguments */
+ int j;
+ for (j = 0; j < liseq->body->param.opt_num; j++) {
+ int idx = liseq->body->local_table_size - (i + j);
+ ADD_GETLOCAL(args, line, idx, lvar_level);
+ }
+ i += j;
+ argc = i;
+ }
+ if (liseq->body->param.flags.has_rest) {
+ /* rest argument */
+ int idx = liseq->body->local_table_size - liseq->body->param.rest_start;
+
+ ADD_GETLOCAL(args, line, idx, lvar_level);
+ ADD_INSN1(args, line, splatarray, Qfalse);
+
+ argc = liseq->body->param.rest_start + 1;
+ flag |= VM_CALL_ARGS_SPLAT;
+ }
+ if (liseq->body->param.flags.has_post) {
+ /* post arguments */
+ int post_len = liseq->body->param.post_num;
+ int post_start = liseq->body->param.post_start;
+
+ if (liseq->body->param.flags.has_rest) {
+ int j;
+ for (j=0; j<post_len; j++) {
+ int idx = liseq->body->local_table_size - (post_start + j);
+ ADD_GETLOCAL(args, line, idx, lvar_level);
+ }
+ ADD_INSN1(args, line, newarray, INT2FIX(j));
+ ADD_INSN (args, line, concatarray);
+ /* argc is settled at above */
+ }
+ else {
+ int j;
+ for (j=0; j<post_len; j++) {
+ int idx = liseq->body->local_table_size - (post_start + j);
+ ADD_GETLOCAL(args, line, idx, lvar_level);
+ }
+ argc = post_len + post_start;
+ }
+ }
+
+ if (liseq->body->param.flags.has_kw) { /* TODO: support keywords */
+ int local_size = liseq->body->local_table_size;
+ argc++;
+
+ ADD_INSN1(args, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+
+ if (liseq->body->param.flags.has_kwrest) {
+ int idx = liseq->body->local_table_size - liseq->body->param.keyword->rest_start;
+ ADD_GETLOCAL(args, line, idx, lvar_level);
+ ADD_SEND (args, line, rb_intern("dup"), INT2FIX(0));
+ }
+ else {
+ ADD_INSN1(args, line, newhash, INT2FIX(0));
+ }
+ for (i = 0; i < liseq->body->param.keyword->num; ++i) {
+ ID id = liseq->body->param.keyword->table[i];
+ int idx = local_size - get_local_var_idx(liseq, id);
+ ADD_INSN1(args, line, putobject, ID2SYM(id));
+ ADD_GETLOCAL(args, line, idx, lvar_level);
+ }
+ ADD_SEND(args, line, id_core_hash_merge_ptr, INT2FIX(i * 2 + 1));
+ if (liseq->body->param.flags.has_rest) {
+ ADD_INSN1(args, line, newarray, INT2FIX(1));
+ ADD_INSN (args, line, concatarray);
+ --argc;
+ }
+ }
+ else if (liseq->body->param.flags.has_kwrest) {
+ int idx = liseq->body->local_table_size - liseq->body->param.keyword->rest_start;
+ ADD_GETLOCAL(args, line, idx, lvar_level);
+
+ ADD_SEND (args, line, rb_intern("dup"), INT2FIX(0));
+ if (liseq->body->param.flags.has_rest) {
+ ADD_INSN1(args, line, newarray, INT2FIX(1));
+ ADD_INSN (args, line, concatarray);
+ }
+ else {
+ argc++;
+ }
+ }
+ }
+
+ /* dummy receiver */
+ ADD_INSN1(ret, line, putobject, type == NODE_ZSUPER ? Qfalse : Qtrue);
+ ADD_SEQ(ret, args);
+ ADD_INSN3(ret, line, invokesuper,
+ new_callinfo(iseq, 0, argc, flag | VM_CALL_SUPER | VM_CALL_FCALL, keywords, parent_block != NULL),
+ Qnil, /* CALL_CACHE */
+ parent_block);
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
- case NODE_ZLIST:{
- if (!popped) {
- ADD_INSN1(ret, node, newarray, INT2FIX(0));
- }
- break;
+ case NODE_ARRAY:{
+ CHECK(compile_array(iseq, ret, node, COMPILE_ARRAY_TYPE_ARRAY, NULL, NULL, popped) >= 0);
+ break;
+ }
+ case NODE_ZARRAY:{
+ if (!popped) {
+ ADD_INSN1(ret, line, newarray, INT2FIX(0));
+ }
+ break;
}
case NODE_VALUES:{
- const NODE *n = node;
- if (popped) {
- COMPILE_ERROR(ERROR_ARGS "NODE_VALUES: must not be popped");
- }
- while (n) {
- CHECK(COMPILE(ret, "values item", n->nd_head));
- n = n->nd_next;
- }
- ADD_INSN1(ret, node, newarray, INT2FIX(node->nd_alen));
- break;
+ const NODE *n = node;
+ if (popped) {
+ COMPILE_ERROR(ERROR_ARGS "NODE_VALUES: must not be popped");
+ }
+ while (n) {
+ CHECK(COMPILE(ret, "values item", n->nd_head));
+ n = n->nd_next;
+ }
+ ADD_INSN1(ret, line, newarray, INT2FIX(node->nd_alen));
+ break;
+ }
+ case NODE_HASH:{
+ DECL_ANCHOR(list);
+ enum node_type type = node->nd_head ? nd_type(node->nd_head) : NODE_ZARRAY;
+
+ INIT_ANCHOR(list);
+ switch (type) {
+ case NODE_ARRAY:
+ CHECK(compile_array(iseq, list, node->nd_head, COMPILE_ARRAY_TYPE_HASH, NULL, NULL, popped) >= 0);
+ ADD_SEQ(ret, list);
+ break;
+
+ case NODE_ZARRAY:
+ if (popped) break;
+ ADD_INSN1(ret, line, newhash, INT2FIX(0));
+ break;
+
+ default:
+ COMPILE_ERROR(ERROR_ARGS_AT(node->nd_head) "can't make hash with this node: %s",
+ ruby_node_name(type));
+ goto ng;
+ }
+ break;
}
- case NODE_HASH:
- CHECK(compile_hash(iseq, ret, node, FALSE, popped) >= 0);
- break;
case NODE_RETURN:
- CHECK(compile_return(iseq, ret, node, popped));
- break;
- case NODE_YIELD:
- CHECK(compile_yield(iseq, ret, node, popped));
- break;
+ CHECK(compile_return(iseq, ret, node, popped));
+ break;
+ case NODE_YIELD:{
+ DECL_ANCHOR(args);
+ VALUE argc;
+ unsigned int flag = 0;
+ struct rb_call_info_kw_arg *keywords = NULL;
+
+ INIT_ANCHOR(args);
+ if (iseq->body->type == ISEQ_TYPE_TOP ||
+ iseq->body->type == ISEQ_TYPE_MAIN) {
+ COMPILE_ERROR(ERROR_ARGS "Invalid yield");
+ goto ng;
+ }
+
+ if (node->nd_head) {
+ argc = setup_args(iseq, args, node->nd_head, &flag, &keywords);
+ CHECK(!NIL_P(argc));
+ }
+ else {
+ argc = INT2FIX(0);
+ }
+
+ ADD_SEQ(ret, args);
+ ADD_INSN1(ret, line, invokeblock, new_callinfo(iseq, 0, FIX2INT(argc), flag, keywords, FALSE));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
case NODE_LVAR:{
- if (!popped) {
- compile_lvar(iseq, ret, node, node->nd_vid);
- }
- break;
+ if (!popped) {
+ ID id = node->nd_vid;
+ int idx = iseq->body->local_iseq->body->local_table_size - get_local_var_idx(iseq, id);
+
+ debugs("id: %s idx: %d\n", rb_id2name(id), idx);
+ ADD_GETLOCAL(ret, line, idx, get_lvar_level(iseq));
+ }
+ break;
}
case NODE_DVAR:{
- int lv, idx, ls;
- debugi("nd_vid", node->nd_vid);
- if (!popped) {
- idx = get_dyna_var_idx(iseq, node->nd_vid, &lv, &ls);
- if (idx < 0) {
- COMPILE_ERROR(ERROR_ARGS "unknown dvar (%"PRIsVALUE")",
- rb_id2str(node->nd_vid));
- goto ng;
- }
- ADD_GETLOCAL(ret, node, ls - idx, lv);
- }
- break;
+ int lv, idx, ls;
+ debugi("nd_vid", node->nd_vid);
+ if (!popped) {
+ idx = get_dyna_var_idx(iseq, node->nd_vid, &lv, &ls);
+ if (idx < 0) {
+ COMPILE_ERROR(ERROR_ARGS "unknown dvar (%"PRIsVALUE")",
+ rb_id2str(node->nd_vid));
+ goto ng;
+ }
+ ADD_GETLOCAL(ret, line, ls - idx, lv);
+ }
+ break;
}
case NODE_GVAR:{
- ADD_INSN1(ret, node, getglobal, ID2SYM(node->nd_entry));
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ ADD_INSN1(ret, line, getglobal,
+ ((VALUE)node->nd_entry | 1));
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_IVAR:{
- debugi("nd_vid", node->nd_vid);
- if (!popped) {
- ADD_INSN2(ret, node, getinstancevariable,
- ID2SYM(node->nd_vid),
- get_ivar_ic_value(iseq,node->nd_vid));
- }
- break;
+ debugi("nd_vid", node->nd_vid);
+ if (!popped) {
+ ADD_INSN2(ret, line, getinstancevariable,
+ ID2SYM(node->nd_vid),
+ get_ivar_ic_value(iseq,node->nd_vid));
+ }
+ break;
}
case NODE_CONST:{
- debugi("nd_vid", node->nd_vid);
-
- if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache) {
- body->ic_size++;
- VALUE segments = rb_ary_new_from_args(1, ID2SYM(node->nd_vid));
- ADD_INSN1(ret, node, opt_getconstant_path, segments);
- RB_OBJ_WRITTEN(iseq, Qundef, segments);
- }
- else {
- ADD_INSN(ret, node, putnil);
- ADD_INSN1(ret, node, putobject, Qtrue);
- ADD_INSN1(ret, node, getconstant, ID2SYM(node->nd_vid));
- }
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ debugi("nd_vid", node->nd_vid);
+
+ if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache) {
+ LABEL *lend = NEW_LABEL(line);
+ int ic_index = iseq->body->is_size++;
+
+ ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));
+ ADD_INSN1(ret, line, getconstant, ID2SYM(node->nd_vid));
+ ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_LABEL(ret, lend);
+ }
+ else {
+ ADD_INSN(ret, line, putnil);
+ ADD_INSN1(ret, line, getconstant, ID2SYM(node->nd_vid));
+ }
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_CVAR:{
- if (!popped) {
- ADD_INSN2(ret, node, getclassvariable,
- ID2SYM(node->nd_vid),
- get_cvar_ic_value(iseq,node->nd_vid));
- }
- break;
+ if (!popped) {
+ ADD_INSN1(ret, line, getclassvariable,
+ ID2SYM(node->nd_vid));
+ }
+ break;
}
case NODE_NTH_REF:{
if (!popped) {
- if (!node->nd_nth) {
- ADD_INSN(ret, node, putnil);
- break;
- }
- ADD_INSN2(ret, node, getspecial, INT2FIX(1) /* '~' */,
- INT2FIX(node->nd_nth << 1));
- }
- break;
+ if (!node->nd_nth) {
+ ADD_INSN(ret, line, putnil);
+ break;
+ }
+ ADD_INSN2(ret, line, getspecial, INT2FIX(1) /* '~' */,
+ INT2FIX(node->nd_nth << 1));
+ }
+ break;
}
case NODE_BACK_REF:{
- if (!popped) {
- ADD_INSN2(ret, node, getspecial, INT2FIX(1) /* '~' */,
- INT2FIX(0x01 | (node->nd_nth << 1)));
- }
- break;
+ if (!popped) {
+ ADD_INSN2(ret, line, getspecial, INT2FIX(1) /* '~' */,
+ INT2FIX(0x01 | (node->nd_nth << 1)));
+ }
+ break;
}
case NODE_MATCH:
case NODE_MATCH2:
- case NODE_MATCH3:
- CHECK(compile_match(iseq, ret, node, popped, type));
- break;
+ case NODE_MATCH3:{
+ DECL_ANCHOR(recv);
+ DECL_ANCHOR(val);
+
+ INIT_ANCHOR(recv);
+ INIT_ANCHOR(val);
+ switch (nd_type(node)) {
+ case NODE_MATCH:
+ ADD_INSN1(recv, line, putobject, node->nd_lit);
+ ADD_INSN2(val, line, getspecial, INT2FIX(0),
+ INT2FIX(0));
+ break;
+ case NODE_MATCH2:
+ CHECK(COMPILE(recv, "receiver", node->nd_recv));
+ CHECK(COMPILE(val, "value", node->nd_value));
+ break;
+ case NODE_MATCH3:
+ CHECK(COMPILE(recv, "receiver", node->nd_value));
+ CHECK(COMPILE(val, "value", node->nd_recv));
+ break;
+ }
+
+ if (ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction) {
+ /* TODO: detect by node */
+ if (recv->last == recv->anchor.next &&
+ INSN_OF(recv->last) == BIN(putobject) &&
+ nd_type(node) == NODE_MATCH2) {
+ ADD_SEQ(ret, val);
+ ADD_INSN1(ret, line, opt_regexpmatch1,
+ OPERAND_AT(recv->last, 0));
+ }
+ else {
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, val);
+ ADD_INSN2(ret, line, opt_regexpmatch2, new_callinfo(iseq, idEqTilde, 1, 0, NULL, FALSE), Qnil);
+ }
+ }
+ else {
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, val);
+ ADD_SEND(ret, line, idEqTilde, INT2FIX(1));
+ }
+
+ if (node->nd_args) {
+ compile_named_capture_assign(iseq, ret, node->nd_args);
+ }
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
case NODE_LIT:{
- debugp_param("lit", node->nd_lit);
- if (!popped) {
- ADD_INSN1(ret, node, putobject, node->nd_lit);
- RB_OBJ_WRITTEN(iseq, Qundef, node->nd_lit);
- }
- break;
+ debugp_param("lit", node->nd_lit);
+ if (!popped) {
+ ADD_INSN1(ret, line, putobject, node->nd_lit);
+ }
+ break;
}
case NODE_STR:{
- debugp_param("nd_lit", node->nd_lit);
- if (!popped) {
- VALUE lit = node->nd_lit;
- if (!ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal) {
- lit = rb_fstring(lit);
- ADD_INSN1(ret, node, putstring, lit);
- RB_OBJ_WRITTEN(iseq, Qundef, lit);
- }
- else {
- if (ISEQ_COMPILE_DATA(iseq)->option->debug_frozen_string_literal || RTEST(ruby_debug)) {
- VALUE debug_info = rb_ary_new_from_args(2, rb_iseq_path(iseq), INT2FIX(line));
- lit = rb_str_dup(lit);
- rb_ivar_set(lit, id_debug_created_info, rb_obj_freeze(debug_info));
- lit = rb_str_freeze(lit);
- }
- else {
- lit = rb_fstring(lit);
- }
- ADD_INSN1(ret, node, putobject, lit);
- RB_OBJ_WRITTEN(iseq, Qundef, lit);
- }
- }
- break;
+ debugp_param("nd_lit", node->nd_lit);
+ if (!popped) {
+ VALUE lit = node->nd_lit;
+ if (!ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal) {
+ lit = freeze_literal(iseq, lit);
+ ADD_INSN1(ret, line, putstring, lit);
+ }
+ else {
+ if (ISEQ_COMPILE_DATA(iseq)->option->debug_frozen_string_literal || RTEST(ruby_debug)) {
+ VALUE debug_info = rb_ary_new_from_args(2, rb_iseq_path(iseq), INT2FIX(line));
+ lit = rb_str_dup(lit);
+ rb_ivar_set(lit, id_debug_created_info, rb_obj_freeze(debug_info));
+ lit = rb_str_freeze(lit);
+ }
+ else {
+ lit = rb_fstring(lit);
+ }
+ ADD_INSN1(ret, line, putobject, lit);
+ iseq_add_mark_object_compile_time(iseq, lit);
+ }
+ }
+ break;
}
case NODE_DSTR:{
- compile_dstr(iseq, ret, node);
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ compile_dstr(iseq, ret, node);
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ else {
+ if (ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal) {
+ VALUE debug_info = Qnil;
+ if (ISEQ_COMPILE_DATA(iseq)->option->debug_frozen_string_literal || RTEST(ruby_debug)) {
+ debug_info = rb_ary_new_from_args(2, rb_iseq_path(iseq), INT2FIX(line));
+ iseq_add_mark_object_compile_time(iseq, rb_obj_freeze(debug_info));
+ }
+ ADD_INSN1(ret, line, freezestring, debug_info);
+ }
+ }
+ break;
}
case NODE_XSTR:{
- ADD_CALL_RECEIVER(ret, node);
- VALUE str = rb_fstring(node->nd_lit);
- ADD_INSN1(ret, node, putobject, str);
- RB_OBJ_WRITTEN(iseq, Qundef, str);
- ADD_CALL(ret, node, idBackquote, INT2FIX(1));
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ ADD_CALL_RECEIVER(ret, line);
+ ADD_INSN1(ret, line, putobject, freeze_literal(iseq, node->nd_lit));
+ ADD_CALL(ret, line, idBackquote, INT2FIX(1));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_DXSTR:{
- ADD_CALL_RECEIVER(ret, node);
- compile_dstr(iseq, ret, node);
- ADD_CALL(ret, node, idBackquote, INT2FIX(1));
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ ADD_CALL_RECEIVER(ret, line);
+ compile_dstr(iseq, ret, node);
+ ADD_CALL(ret, line, idBackquote, INT2FIX(1));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_EVSTR:{
+ CHECK(COMPILE(ret, "nd_body", node->nd_body));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ else if (!all_string_result_p(node->nd_body)) {
+ const unsigned int flag = VM_CALL_FCALL;
+ LABEL *isstr = NEW_LABEL(line);
+ ADD_INSN(ret, line, dup);
+ ADD_INSN2(ret, line, branchiftype, INT2FIX(T_STRING), isstr);
+ LABEL_REF(isstr);
+ ADD_INSN(ret, line, dup);
+ ADD_SEND_R(ret, line, idTo_s, INT2FIX(0), NULL, INT2FIX(flag), NULL);
+ ADD_INSN(ret, line, tostring);
+ ADD_LABEL(ret, isstr);
+ }
+ break;
}
- case NODE_EVSTR:
- CHECK(compile_evstr(iseq, ret, node->nd_body, popped));
- break;
case NODE_DREGX:{
- compile_dregx(iseq, ret, node);
+ compile_dregx(iseq, ret, node);
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
- case NODE_ONCE:{
- int ic_index = body->ise_size++;
- const rb_iseq_t *block_iseq;
- block_iseq = NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq), ISEQ_TYPE_PLAIN, line);
+ case NODE_SCOPE:{
+ int ic_index = iseq->body->is_size++;
+ const rb_iseq_t *block_iseq = NEW_CHILD_ISEQ(node, make_name_for_block(iseq),
+ ISEQ_TYPE_ONCE_GUARD, line);
- ADD_INSN2(ret, node, once, block_iseq, INT2FIX(ic_index));
- RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)block_iseq);
+ ADD_INSN2(ret, line, once, block_iseq, INT2FIX(ic_index));
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_ARGSCAT:{
- if (popped) {
- CHECK(COMPILE(ret, "argscat head", node->nd_head));
- ADD_INSN1(ret, node, splatarray, Qfalse);
- ADD_INSN(ret, node, pop);
- CHECK(COMPILE(ret, "argscat body", node->nd_body));
- ADD_INSN1(ret, node, splatarray, Qfalse);
- ADD_INSN(ret, node, pop);
- }
- else {
- CHECK(COMPILE(ret, "argscat head", node->nd_head));
- CHECK(COMPILE(ret, "argscat body", node->nd_body));
- ADD_INSN(ret, node, concatarray);
- }
- break;
+ if (popped) {
+ CHECK(COMPILE(ret, "argscat head", node->nd_head));
+ ADD_INSN1(ret, line, splatarray, Qfalse);
+ ADD_INSN(ret, line, pop);
+ CHECK(COMPILE(ret, "argscat body", node->nd_body));
+ ADD_INSN1(ret, line, splatarray, Qfalse);
+ ADD_INSN(ret, line, pop);
+ }
+ else {
+ CHECK(COMPILE(ret, "argscat head", node->nd_head));
+ CHECK(COMPILE(ret, "argscat body", node->nd_body));
+ ADD_INSN(ret, line, concatarray);
+ }
+ break;
}
case NODE_ARGSPUSH:{
- if (popped) {
- CHECK(COMPILE(ret, "argspush head", node->nd_head));
- ADD_INSN1(ret, node, splatarray, Qfalse);
- ADD_INSN(ret, node, pop);
- CHECK(COMPILE_(ret, "argspush body", node->nd_body, popped));
- }
- else {
- CHECK(COMPILE(ret, "argspush head", node->nd_head));
- CHECK(compile_array_1(iseq, ret, node->nd_body));
- ADD_INSN(ret, node, concatarray);
- }
- break;
+ if (popped) {
+ CHECK(COMPILE(ret, "arsgpush head", node->nd_head));
+ ADD_INSN1(ret, line, splatarray, Qfalse);
+ ADD_INSN(ret, line, pop);
+ CHECK(COMPILE_(ret, "argspush body", node->nd_body, popped));
+ }
+ else {
+ CHECK(COMPILE(ret, "arsgpush head", node->nd_head));
+ CHECK(COMPILE_(ret, "argspush body", node->nd_body, popped));
+ ADD_INSN1(ret, line, newarray, INT2FIX(1));
+ ADD_INSN(ret, line, concatarray);
+ }
+ break;
}
case NODE_SPLAT:{
- CHECK(COMPILE(ret, "splat", node->nd_head));
- ADD_INSN1(ret, node, splatarray, Qtrue);
+ CHECK(COMPILE(ret, "splat", node->nd_head));
+ ADD_INSN1(ret, line, splatarray, Qtrue);
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_DEFN:{
- ID mid = node->nd_mid;
- const rb_iseq_t *method_iseq = NEW_ISEQ(node->nd_defn,
- rb_id2str(mid),
- ISEQ_TYPE_METHOD, line);
+ const rb_iseq_t *method_iseq = NEW_ISEQ(node->nd_defn,
+ rb_id2str(node->nd_mid),
+ ISEQ_TYPE_METHOD, line);
- debugp_param("defn/iseq", rb_iseqw_new(method_iseq));
- ADD_INSN2(ret, node, definemethod, ID2SYM(mid), method_iseq);
- RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)method_iseq);
+ debugp_param("defn/iseq", rb_iseqw_new(method_iseq));
- if (!popped) {
- ADD_INSN1(ret, node, putobject, ID2SYM(mid));
- }
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putobject, ID2SYM(node->nd_mid));
+ ADD_INSN1(ret, line, putiseq, method_iseq);
+ ADD_SEND (ret, line, id_core_define_method, INT2FIX(2));
- break;
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+
+ break;
}
case NODE_DEFS:{
- ID mid = node->nd_mid;
- const rb_iseq_t * singleton_method_iseq = NEW_ISEQ(node->nd_defn,
- rb_id2str(mid),
- ISEQ_TYPE_METHOD, line);
-
- debugp_param("defs/iseq", rb_iseqw_new(singleton_method_iseq));
- CHECK(COMPILE(ret, "defs: recv", node->nd_recv));
- ADD_INSN2(ret, node, definesmethod, ID2SYM(mid), singleton_method_iseq);
- RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)singleton_method_iseq);
-
- if (!popped) {
- ADD_INSN1(ret, node, putobject, ID2SYM(mid));
- }
- break;
+ const rb_iseq_t * singleton_method = NEW_ISEQ(node->nd_defn,
+ rb_id2str(node->nd_mid),
+ ISEQ_TYPE_METHOD, line);
+
+ debugp_param("defs/iseq", rb_iseqw_new(singleton_method));
+
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ CHECK(COMPILE(ret, "defs: recv", node->nd_recv));
+ ADD_INSN1(ret, line, putobject, ID2SYM(node->nd_mid));
+ ADD_INSN1(ret, line, putiseq, singleton_method);
+ ADD_SEND (ret, line, id_core_define_singleton_method, INT2FIX(3));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_ALIAS:{
- ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
- CHECK(COMPILE(ret, "alias arg1", node->nd_1st));
- CHECK(COMPILE(ret, "alias arg2", node->nd_2nd));
- ADD_SEND(ret, node, id_core_set_method_alias, INT2FIX(3));
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
+ CHECK(COMPILE(ret, "alias arg1", node->nd_1st));
+ CHECK(COMPILE(ret, "alias arg2", node->nd_2nd));
+ ADD_SEND(ret, line, id_core_set_method_alias, INT2FIX(3));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_VALIAS:{
- ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, node, putobject, ID2SYM(node->nd_alias));
- ADD_INSN1(ret, node, putobject, ID2SYM(node->nd_orig));
- ADD_SEND(ret, node, id_core_set_variable_alias, INT2FIX(2));
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putobject, ID2SYM(node->nd_alias));
+ ADD_INSN1(ret, line, putobject, ID2SYM(node->nd_orig));
+ ADD_SEND(ret, line, id_core_set_variable_alias, INT2FIX(2));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_UNDEF:{
- ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
- CHECK(COMPILE(ret, "undef arg", node->nd_undef));
- ADD_SEND(ret, node, id_core_undef_method, INT2FIX(2));
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
+ CHECK(COMPILE(ret, "undef arg", node->nd_undef));
+ ADD_SEND(ret, line, id_core_undef_method, INT2FIX(2));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_CLASS:{
- const rb_iseq_t *class_iseq = NEW_CHILD_ISEQ(node->nd_body,
- rb_str_freeze(rb_sprintf("<class:%"PRIsVALUE">", rb_id2str(node->nd_cpath->nd_mid))),
- ISEQ_TYPE_CLASS, line);
- const int flags = VM_DEFINECLASS_TYPE_CLASS |
- (node->nd_super ? VM_DEFINECLASS_FLAG_HAS_SUPERCLASS : 0) |
- compile_cpath(ret, iseq, node->nd_cpath);
-
- CHECK(COMPILE(ret, "super", node->nd_super));
- ADD_INSN3(ret, node, defineclass, ID2SYM(node->nd_cpath->nd_mid), class_iseq, INT2FIX(flags));
- RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)class_iseq);
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ const rb_iseq_t *class_iseq = NEW_CHILD_ISEQ(node->nd_body,
+ rb_sprintf("<class:%"PRIsVALUE">", rb_id2str(node->nd_cpath->nd_mid)),
+ ISEQ_TYPE_CLASS, line);
+ const int flags = VM_DEFINECLASS_TYPE_CLASS |
+ (node->nd_super ? VM_DEFINECLASS_FLAG_HAS_SUPERCLASS : 0) |
+ compile_cpath(ret, iseq, node->nd_cpath);
+
+ CHECK(COMPILE(ret, "super", node->nd_super));
+ ADD_INSN3(ret, line, defineclass, ID2SYM(node->nd_cpath->nd_mid), class_iseq, INT2FIX(flags));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_MODULE:{
const rb_iseq_t *module_iseq = NEW_CHILD_ISEQ(node->nd_body,
- rb_str_freeze(rb_sprintf("<module:%"PRIsVALUE">", rb_id2str(node->nd_cpath->nd_mid))),
- ISEQ_TYPE_CLASS, line);
- const int flags = VM_DEFINECLASS_TYPE_MODULE |
- compile_cpath(ret, iseq, node->nd_cpath);
-
- ADD_INSN (ret, node, putnil); /* dummy */
- ADD_INSN3(ret, node, defineclass, ID2SYM(node->nd_cpath->nd_mid), module_iseq, INT2FIX(flags));
- RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)module_iseq);
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ rb_sprintf("<module:%"PRIsVALUE">", rb_id2str(node->nd_cpath->nd_mid)),
+ ISEQ_TYPE_CLASS, line);
+ const int flags = VM_DEFINECLASS_TYPE_MODULE |
+ compile_cpath(ret, iseq, node->nd_cpath);
+
+ ADD_INSN (ret, line, putnil); /* dummy */
+ ADD_INSN3(ret, line, defineclass, ID2SYM(node->nd_cpath->nd_mid), module_iseq, INT2FIX(flags));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_SCLASS:{
- ID singletonclass;
- const rb_iseq_t *singleton_class = NEW_ISEQ(node->nd_body, rb_fstring_lit("singleton class"),
- ISEQ_TYPE_CLASS, line);
-
- CHECK(COMPILE(ret, "sclass#recv", node->nd_recv));
- ADD_INSN (ret, node, putnil);
- CONST_ID(singletonclass, "singletonclass");
- ADD_INSN3(ret, node, defineclass,
- ID2SYM(singletonclass), singleton_class,
- INT2FIX(VM_DEFINECLASS_TYPE_SINGLETON_CLASS));
- RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)singleton_class);
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ ID singletonclass;
+ const rb_iseq_t *singleton_class = NEW_ISEQ(node->nd_body, rb_fstring_cstr("singleton class"),
+ ISEQ_TYPE_CLASS, line);
+
+ CHECK(COMPILE(ret, "sclass#recv", node->nd_recv));
+ ADD_INSN (ret, line, putnil);
+ CONST_ID(singletonclass, "singletonclass");
+ ADD_INSN3(ret, line, defineclass,
+ ID2SYM(singletonclass), singleton_class,
+ INT2FIX(VM_DEFINECLASS_TYPE_SINGLETON_CLASS));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_COLON2:{
+ if (rb_is_const_id(node->nd_mid)) {
+ /* constant */
+ LABEL *lend = NEW_LABEL(line);
+ int ic_index = iseq->body->is_size++;
+
+ DECL_ANCHOR(pref);
+ DECL_ANCHOR(body);
+
+ INIT_ANCHOR(pref);
+ INIT_ANCHOR(body);
+ CHECK(compile_const_prefix(iseq, node, pref, body));
+ if (LIST_INSN_SIZE_ZERO(pref)) {
+ if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache) {
+ ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));
+ }
+ else {
+ ADD_INSN(ret, line, putnil);
+ }
+
+ ADD_SEQ(ret, body);
+
+ if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache) {
+ ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_LABEL(ret, lend);
+ }
+ }
+ else {
+ ADD_SEQ(ret, pref);
+ ADD_SEQ(ret, body);
+ }
+ }
+ else {
+ /* function call */
+ ADD_CALL_RECEIVER(ret, line);
+ CHECK(COMPILE(ret, "colon2#nd_head", node->nd_head));
+ ADD_CALL(ret, line, node->nd_mid, INT2FIX(1));
+ }
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_COLON3:{
+ LABEL *lend = NEW_LABEL(line);
+ int ic_index = iseq->body->is_size++;
+
+ debugi("colon3#nd_mid", node->nd_mid);
+
+ /* add cache insn */
+ if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache) {
+ ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));
+ ADD_INSN(ret, line, pop);
+ }
+
+ ADD_INSN1(ret, line, putobject, rb_cObject);
+ ADD_INSN1(ret, line, getconstant, ID2SYM(node->nd_mid));
+
+ if (ISEQ_COMPILE_DATA(iseq)->option->inline_const_cache) {
+ ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_LABEL(ret, lend);
+ }
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
- case NODE_COLON2:
- CHECK(compile_colon2(iseq, ret, node, popped));
- break;
- case NODE_COLON3:
- CHECK(compile_colon3(iseq, ret, node, popped));
- break;
case NODE_DOT2:
- CHECK(compile_dots(iseq, ret, node, popped, FALSE));
- break;
- case NODE_DOT3:
- CHECK(compile_dots(iseq, ret, node, popped, TRUE));
- break;
+ case NODE_DOT3:{
+ int excl = type == NODE_DOT3;
+ VALUE flag = INT2FIX(excl);
+ const NODE *b = node->nd_beg;
+ const NODE *e = node->nd_end;
+ if (number_literal_p(b) && number_literal_p(e)) {
+ if (!popped) {
+ VALUE val = rb_range_new(b->nd_lit, e->nd_lit, excl);
+ iseq_add_mark_object_compile_time(iseq, val);
+ ADD_INSN1(ret, line, putobject, val);
+ }
+ }
+ else {
+ CHECK(COMPILE_(ret, "min", b, popped));
+ CHECK(COMPILE_(ret, "max", e, popped));
+ if (!popped) {
+ ADD_INSN1(ret, line, newrange, flag);
+ }
+ }
+ break;
+ }
case NODE_FLIP2:
case NODE_FLIP3:{
- LABEL *lend = NEW_LABEL(line);
- LABEL *ltrue = NEW_LABEL(line);
- LABEL *lfalse = NEW_LABEL(line);
- CHECK(compile_flip_flop(iseq, ret, node, type == NODE_FLIP2,
- ltrue, lfalse));
- ADD_LABEL(ret, ltrue);
- ADD_INSN1(ret, node, putobject, Qtrue);
- ADD_INSNL(ret, node, jump, lend);
- ADD_LABEL(ret, lfalse);
- ADD_INSN1(ret, node, putobject, Qfalse);
- ADD_LABEL(ret, lend);
- break;
+ LABEL *lend = NEW_LABEL(line);
+ LABEL *ltrue = NEW_LABEL(line);
+ LABEL *lfalse = NEW_LABEL(line);
+ CHECK(compile_flip_flop(iseq, ret, node, type == NODE_FLIP2,
+ ltrue, lfalse));
+ ADD_LABEL(ret, ltrue);
+ ADD_INSN1(ret, line, putobject, Qtrue);
+ ADD_INSNL(ret, line, jump, lend);
+ ADD_LABEL(ret, lfalse);
+ ADD_INSN1(ret, line, putobject, Qfalse);
+ ADD_LABEL(ret, lend);
+ break;
}
case NODE_SELF:{
- if (!popped) {
- ADD_INSN(ret, node, putself);
- }
- break;
+ if (!popped) {
+ ADD_INSN(ret, line, putself);
+ }
+ break;
}
case NODE_NIL:{
- if (!popped) {
- ADD_INSN(ret, node, putnil);
- }
- break;
+ if (!popped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ break;
}
case NODE_TRUE:{
- if (!popped) {
- ADD_INSN1(ret, node, putobject, Qtrue);
- }
- break;
+ if (!popped) {
+ ADD_INSN1(ret, line, putobject, Qtrue);
+ }
+ break;
}
case NODE_FALSE:{
- if (!popped) {
- ADD_INSN1(ret, node, putobject, Qfalse);
- }
- break;
+ if (!popped) {
+ ADD_INSN1(ret, line, putobject, Qfalse);
+ }
+ break;
+ }
+ case NODE_ERRINFO:{
+ if (!popped) {
+ if (iseq->body->type == ISEQ_TYPE_RESCUE) {
+ ADD_GETLOCAL(ret, line, LVAR_ERRINFO, 0);
+ }
+ else {
+ const rb_iseq_t *ip = iseq;
+ int level = 0;
+ while (ip) {
+ if (ip->body->type == ISEQ_TYPE_RESCUE) {
+ break;
+ }
+ ip = ip->body->parent_iseq;
+ level++;
+ }
+ if (ip) {
+ ADD_GETLOCAL(ret, line, LVAR_ERRINFO, level);
+ }
+ else {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ }
+ break;
}
- case NODE_ERRINFO:
- CHECK(compile_errinfo(iseq, ret, node, popped));
- break;
case NODE_DEFINED:
- if (!popped) {
- CHECK(compile_defined_expr(iseq, ret, node, Qtrue));
- }
- break;
+ if (!popped) {
+ CHECK(compile_defined_expr(iseq, ret, node, Qtrue));
+ }
+ break;
case NODE_POSTEXE:{
- /* compiled to:
- * ONCE{ rb_mRubyVMFrozenCore::core#set_postexe{ ... } }
- */
- int is_index = body->ise_size++;
- struct rb_iseq_new_with_callback_callback_func *ifunc =
- rb_iseq_new_with_callback_new_callback(build_postexe_iseq, node->nd_body);
- const rb_iseq_t *once_iseq =
- new_child_iseq_with_callback(iseq, ifunc,
- rb_fstring(make_name_for_block(iseq)), iseq, ISEQ_TYPE_BLOCK, line);
-
- ADD_INSN2(ret, node, once, once_iseq, INT2FIX(is_index));
- RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)once_iseq);
-
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ /* compiled to:
+ * ONCE{ rb_mRubyVMFrozenCore::core#set_postexe{ ... } }
+ */
+ int is_index = iseq->body->is_size++;
+ const rb_iseq_t *once_iseq = NEW_CHILD_ISEQ((const NODE *)IFUNC_NEW(build_postexe_iseq, node->nd_body, 0),
+ make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);
+
+ ADD_INSN2(ret, line, once, once_iseq, INT2FIX(is_index));
+
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
case NODE_KW_ARG:
- CHECK(compile_kw_arg(iseq, ret, node, popped));
- break;
+ {
+ LABEL *end_label = NEW_LABEL(nd_line(node));
+ const NODE *default_value = node->nd_body->nd_value;
+
+ if (default_value == (const NODE *)-1) {
+ /* required argument. do nothing */
+ COMPILE_ERROR(ERROR_ARGS "unreachable");
+ goto ng;
+ }
+ else if (nd_type(default_value) == NODE_LIT ||
+ nd_type(default_value) == NODE_NIL ||
+ nd_type(default_value) == NODE_TRUE ||
+ nd_type(default_value) == NODE_FALSE) {
+ COMPILE_ERROR(ERROR_ARGS "unreachable");
+ goto ng;
+ }
+ else {
+ /* if keywordcheck(_kw_bits, nth_keyword)
+ * kw = default_value
+ * end
+ */
+ int kw_bits_idx = iseq->body->local_table_size - iseq->body->param.keyword->bits_start;
+ int keyword_idx = iseq->body->param.keyword->num;
+
+ ADD_INSN2(ret, line, checkkeyword, INT2FIX(kw_bits_idx + VM_ENV_DATA_SIZE - 1), INT2FIX(keyword_idx));
+ ADD_INSNL(ret, line, branchif, end_label);
+ CHECK(COMPILE_POPPED(ret, "keyword default argument", node->nd_body));
+ ADD_LABEL(ret, end_label);
+ }
+
+ break;
+ }
case NODE_DSYM:{
- compile_dstr(iseq, ret, node);
- if (!popped) {
- ADD_INSN(ret, node, intern);
- }
- else {
- ADD_INSN(ret, node, pop);
- }
- break;
+ compile_dstr(iseq, ret, node);
+ if (!popped) {
+ ADD_INSN(ret, line, intern);
+ }
+ else {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_ATTRASGN:{
+ DECL_ANCHOR(recv);
+ DECL_ANCHOR(args);
+ unsigned int flag = 0;
+ ID mid = node->nd_mid;
+ LABEL *lskip = 0;
+ VALUE argc;
+
+ /* optimization shortcut
+ * obj["literal"] = value -> opt_aset_with(obj, "literal", value)
+ */
+ if (mid == idASET && !private_recv_p(node) && node->nd_args &&
+ nd_type(node->nd_args) == NODE_ARRAY && node->nd_args->nd_alen == 2 &&
+ nd_type(node->nd_args->nd_head) == NODE_STR &&
+ ISEQ_COMPILE_DATA(iseq)->current_block == NULL &&
+ !ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal &&
+ ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction)
+ {
+ VALUE str = freeze_literal(iseq, node->nd_args->nd_head->nd_lit);
+ CHECK(COMPILE(ret, "recv", node->nd_recv));
+ CHECK(COMPILE(ret, "value", node->nd_args->nd_next->nd_head));
+ if (!popped) {
+ ADD_INSN(ret, line, swap);
+ ADD_INSN1(ret, line, topn, INT2FIX(1));
+ }
+ ADD_INSN3(ret, line, opt_aset_with,
+ new_callinfo(iseq, idASET, 2, 0, NULL, FALSE),
+ NULL/* CALL_CACHE */, str);
+ ADD_INSN(ret, line, pop);
+ break;
+ }
+
+ INIT_ANCHOR(recv);
+ INIT_ANCHOR(args);
+ argc = setup_args(iseq, args, node->nd_args, &flag, NULL);
+ CHECK(!NIL_P(argc));
+
+ flag |= COMPILE_RECV(recv, "recv", node);
+
+ debugp_param("argc", argc);
+ debugp_param("nd_mid", ID2SYM(mid));
+
+ if (!rb_is_attrset_id(mid)) {
+ /* safe nav attr */
+ mid = rb_id_attrset(mid);
+ ADD_INSN(recv, line, dup);
+ lskip = NEW_LABEL(line);
+ ADD_INSNL(recv, line, branchnil, lskip);
+ }
+ if (!popped) {
+ ADD_INSN(ret, line, putnil);
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, args);
+
+ if (flag & VM_CALL_ARGS_BLOCKARG) {
+ ADD_INSN1(ret, line, topn, INT2FIX(1));
+ if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN1(ret, line, putobject, INT2FIX(-1));
+ ADD_SEND(ret, line, idAREF, INT2FIX(1));
+ }
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 3));
+ ADD_INSN (ret, line, pop);
+ }
+ else if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN(ret, line, dup);
+ ADD_INSN1(ret, line, putobject, INT2FIX(-1));
+ ADD_SEND(ret, line, idAREF, INT2FIX(1));
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2));
+ ADD_INSN (ret, line, pop);
+ }
+ else {
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 1));
+ }
+ }
+ else {
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, args);
+ }
+ ADD_SEND_WITH_FLAG(ret, line, mid, argc, INT2FIX(flag));
+ if (lskip) ADD_LABEL(ret, lskip);
+ ADD_INSN(ret, line, pop);
+
+ break;
+ }
+ case NODE_PRELUDE:{
+ const rb_compile_option_t *orig_opt = ISEQ_COMPILE_DATA(iseq)->option;
+ rb_compile_option_t new_opt = *orig_opt;
+ if (node->nd_compile_option) {
+ rb_iseq_make_compile_option(&new_opt, node->nd_compile_option);
+ ISEQ_COMPILE_DATA(iseq)->option = &new_opt;
+ }
+ if (!new_opt.coverage_enabled) ISEQ_COVERAGE_SET(iseq, Qfalse);
+ CHECK(COMPILE_POPPED(ret, "prelude", node->nd_head));
+ CHECK(COMPILE_(ret, "body", node->nd_body, popped));
+ ISEQ_COMPILE_DATA(iseq)->option = orig_opt;
+ /* Do NOT restore ISEQ_COVERAGE!
+ * If ISEQ_COVERAGE is not false, finish_iseq_build function in iseq.c
+ * will initialize the counter array of line coverage.
+ * We keep ISEQ_COVERAGE as nil to disable this initialization.
+ * This is not harmful assuming that NODE_PRELUDE pragma does not occur
+ * in NODE tree except the root.
+ */
+ break;
}
- case NODE_ATTRASGN:
- CHECK(compile_attrasgn(iseq, ret, node, popped));
- break;
case NODE_LAMBDA:{
- /* compile same as lambda{...} */
- const rb_iseq_t *block = NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);
- VALUE argc = INT2FIX(0);
+ /* compile same as lambda{...} */
+ const rb_iseq_t *block = NEW_CHILD_ISEQ(node->nd_body, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);
+ VALUE argc = INT2FIX(0);
- ADD_INSN1(ret, node, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_CALL_WITH_BLOCK(ret, node, idLambda, argc, block);
- RB_OBJ_WRITTEN(iseq, Qundef, (VALUE)block);
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_CALL_WITH_BLOCK(ret, line, idLambda, argc, block);
- if (popped) {
- ADD_INSN(ret, node, pop);
- }
- break;
+ if (popped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
}
default:
- UNKNOWN_NODE("iseq_compile_each", node, COMPILE_NG);
+ UNKNOWN_NODE("iseq_compile_each", node, COMPILE_NG);
ng:
- debug_node_end();
- return COMPILE_NG;
+ debug_node_end();
+ return COMPILE_NG;
+ }
+
+ /* remove tracecoverage instruction if there is no relevant instruction */
+ if (IS_TRACE(ret->last) && ((TRACE*) ret->last)->event == RUBY_EVENT_LINE) {
+ LINK_ELEMENT *insn = ret->last->prev;
+ if (IS_INSN(insn) &&
+ IS_INSN_ID(insn, tracecoverage) &&
+ FIX2LONG(OPERAND_AT(insn, 0)) == RUBY_EVENT_COVERAGE_LINE
+ ) {
+ ELEM_REMOVE(insn); /* remove tracecovearge */
+ RARRAY_ASET(ISEQ_LINE_COVERAGE(iseq), line - 1, Qnil);
+ }
}
debug_node_end();
@@ -10198,23 +7230,22 @@ insn_data_length(INSN *iobj)
static int
calc_sp_depth(int depth, INSN *insn)
{
- return comptime_insn_stack_increase(depth, insn->insn_id, insn->operands);
+ return insn_stack_increase(depth, insn->insn_id, insn->operands);
}
static VALUE
opobj_inspect(VALUE obj)
{
- if (!SPECIAL_CONST_P(obj) && !RBASIC_CLASS(obj)) {
- switch (BUILTIN_TYPE(obj)) {
- case T_STRING:
- obj = rb_str_new_cstr(RSTRING_PTR(obj));
- break;
- case T_ARRAY:
- obj = rb_ary_dup(obj);
- break;
- default:
- break;
- }
+ struct RBasic *r = (struct RBasic *) obj;
+ if (!SPECIAL_CONST_P(r) && r->klass == 0) {
+ switch (BUILTIN_TYPE(r)) {
+ case T_STRING:
+ obj = rb_str_new_cstr(RSTRING_PTR(obj));
+ break;
+ case T_ARRAY:
+ obj = rb_ary_dup(obj);
+ break;
+ }
}
return rb_inspect(obj);
}
@@ -10227,92 +7258,88 @@ insn_data_to_s_detail(INSN *iobj)
VALUE str = rb_sprintf("%-20s ", insn_name(iobj->insn_id));
if (iobj->operands) {
- const char *types = insn_op_types(iobj->insn_id);
- int j;
-
- for (j = 0; types[j]; j++) {
- char type = types[j];
-
- switch (type) {
- case TS_OFFSET: /* label(destination position) */
- {
- LABEL *lobj = (LABEL *)OPERAND_AT(iobj, j);
- rb_str_catf(str, LABEL_FORMAT, lobj->label_no);
- break;
- }
- break;
- case TS_ISEQ: /* iseq */
- {
- rb_iseq_t *iseq = (rb_iseq_t *)OPERAND_AT(iobj, j);
- VALUE val = Qnil;
- if (0 && iseq) { /* TODO: invalidate now */
- val = (VALUE)iseq;
- }
- rb_str_concat(str, opobj_inspect(val));
- }
- break;
- case TS_LINDEX:
- case TS_NUM: /* ulong */
- case TS_VALUE: /* VALUE */
- {
- VALUE v = OPERAND_AT(iobj, j);
- if (!CLASS_OF(v))
- rb_str_cat2(str, "<hidden>");
- else {
- rb_str_concat(str, opobj_inspect(v));
- }
- break;
- }
- case TS_ID: /* ID */
- rb_str_concat(str, opobj_inspect(OPERAND_AT(iobj, j)));
- break;
- case TS_IC: /* inline cache */
- rb_str_concat(str, opobj_inspect(OPERAND_AT(iobj, j)));
- break;
- case TS_IVC: /* inline ivar cache */
- rb_str_catf(str, "<ivc:%d>", FIX2INT(OPERAND_AT(iobj, j)));
- break;
- case TS_ICVARC: /* inline cvar cache */
- rb_str_catf(str, "<icvarc:%d>", FIX2INT(OPERAND_AT(iobj, j)));
- break;
- case TS_ISE: /* inline storage entry */
- rb_str_catf(str, "<ise:%d>", FIX2INT(OPERAND_AT(iobj, j)));
- break;
- case TS_CALLDATA: /* we store these as call infos at compile time */
- {
- const struct rb_callinfo *ci = (struct rb_callinfo *)OPERAND_AT(iobj, j);
- rb_str_cat2(str, "<calldata:");
- if (vm_ci_mid(ci)) rb_str_catf(str, "%"PRIsVALUE, rb_id2str(vm_ci_mid(ci)));
- rb_str_catf(str, ", %d>", vm_ci_argc(ci));
- break;
- }
- case TS_CDHASH: /* case/when condition cache */
- rb_str_cat2(str, "<ch>");
- break;
- case TS_FUNCPTR:
- {
- void *func = (void *)OPERAND_AT(iobj, j);
+ const char *types = insn_op_types(iobj->insn_id);
+ int j;
+
+ for (j = 0; types[j]; j++) {
+ char type = types[j];
+
+ switch (type) {
+ case TS_OFFSET: /* label(destination position) */
+ {
+ LABEL *lobj = (LABEL *)OPERAND_AT(iobj, j);
+ rb_str_catf(str, LABEL_FORMAT, lobj->label_no);
+ break;
+ }
+ break;
+ case TS_ISEQ: /* iseq */
+ {
+ rb_iseq_t *iseq = (rb_iseq_t *)OPERAND_AT(iobj, j);
+ VALUE val = Qnil;
+ if (0 && iseq) { /* TODO: invalidate now */
+ val = (VALUE)iseq;
+ }
+ rb_str_concat(str, opobj_inspect(val));
+ }
+ break;
+ case TS_LINDEX:
+ case TS_NUM: /* ulong */
+ case TS_VALUE: /* VALUE */
+ {
+ VALUE v = OPERAND_AT(iobj, j);
+ rb_str_concat(str, opobj_inspect(v));
+ break;
+ }
+ case TS_ID: /* ID */
+ rb_str_concat(str, opobj_inspect(OPERAND_AT(iobj, j)));
+ break;
+ case TS_GENTRY:
+ {
+ struct rb_global_entry *entry = (struct rb_global_entry *)
+ (OPERAND_AT(iobj, j) & (~1));
+ rb_str_append(str, rb_id2str(entry->id));
+ break;
+ }
+ case TS_IC: /* inline cache */
+ rb_str_catf(str, "<ic:%d>", FIX2INT(OPERAND_AT(iobj, j)));
+ break;
+ case TS_CALLINFO: /* call info */
+ {
+ struct rb_call_info *ci = (struct rb_call_info *)OPERAND_AT(iobj, j);
+ rb_str_cat2(str, "<callinfo:");
+ if (ci->mid) rb_str_catf(str, "%"PRIsVALUE, rb_id2str(ci->mid));
+ rb_str_catf(str, ", %d>", ci->orig_argc);
+ break;
+ }
+ case TS_CALLCACHE: /* call cache */
+ {
+ rb_str_catf(str, "<call cache>");
+ break;
+ }
+ case TS_CDHASH: /* case/when condition cache */
+ rb_str_cat2(str, "<ch>");
+ break;
+ case TS_FUNCPTR:
+ {
+ rb_insn_func_t func = (rb_insn_func_t)OPERAND_AT(iobj, j);
#ifdef HAVE_DLADDR
- Dl_info info;
- if (dladdr(func, &info) && info.dli_sname) {
- rb_str_cat2(str, info.dli_sname);
- break;
- }
+ Dl_info info;
+ if (dladdr(func, &info) && info.dli_sname) {
+ rb_str_cat2(str, info.dli_sname);
+ break;
+ }
#endif
- rb_str_catf(str, "<%p>", func);
- }
- break;
- case TS_BUILTIN:
- rb_str_cat2(str, "<TS_BUILTIN>");
- break;
- default:{
- rb_raise(rb_eSyntaxError, "unknown operand type: %c", type);
- }
- }
- if (types[j + 1]) {
- rb_str_cat2(str, ", ");
- }
- }
+ rb_str_catf(str, "<%p>", func);
+ }
+ break;
+ default:{
+ rb_raise(rb_eSyntaxError, "unknown operand type: %c", type);
+ }
+ }
+ if (types[j + 1]) {
+ rb_str_cat2(str, ", ");
+ }
+ }
}
return str;
}
@@ -10334,70 +7361,57 @@ dump_disasm_list_with_cursor(const LINK_ELEMENT *link, const LINK_ELEMENT *curr,
printf("-- raw disasm--------\n");
while (link) {
- if (curr) printf(curr == link ? "*" : " ");
- switch (link->type) {
- case ISEQ_ELEMENT_INSN:
- {
- iobj = (INSN *)link;
- str = insn_data_to_s_detail(iobj);
- printf(" %04d %-65s(%4u)\n", pos, StringValueCStr(str), iobj->insn_info.line_no);
- pos += insn_data_length(iobj);
- break;
- }
- case ISEQ_ELEMENT_LABEL:
- {
- lobj = (LABEL *)link;
- printf(LABEL_FORMAT" [sp: %d]%s\n", lobj->label_no, lobj->sp,
- dest == lobj ? " <---" : "");
- break;
- }
- case ISEQ_ELEMENT_TRACE:
- {
- TRACE *trace = (TRACE *)link;
- printf(" trace: %0x\n", trace->event);
- break;
- }
- case ISEQ_ELEMENT_ADJUST:
- {
- ADJUST *adjust = (ADJUST *)link;
- printf(" adjust: [label: %d]\n", adjust->label ? adjust->label->label_no : -1);
- break;
- }
- default:
- /* ignore */
- rb_raise(rb_eSyntaxError, "dump_disasm_list error: %ld\n", FIX2LONG(link->type));
- }
- link = link->next;
+ if (curr) printf(curr == link ? "*" : " ");
+ switch (link->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ iobj = (INSN *)link;
+ str = insn_data_to_s_detail(iobj);
+ printf("%04d %-65s(%4u)\n", pos, StringValueCStr(str), iobj->insn_info.line_no);
+ pos += insn_data_length(iobj);
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ lobj = (LABEL *)link;
+ printf(LABEL_FORMAT"%s\n", lobj->label_no, dest == lobj ? " <---" : "");
+ break;
+ }
+ case ISEQ_ELEMENT_TRACE:
+ {
+ TRACE *trace = (TRACE *)link;
+ printf("trace: %0x\n", trace->event);
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)link;
+ printf("adjust: [label: %d]\n", adjust->label ? adjust->label->label_no : -1);
+ break;
+ }
+ default:
+ /* ignore */
+ rb_raise(rb_eSyntaxError, "dump_disasm_list error: %ld\n", FIX2LONG(link->type));
+ }
+ link = link->next;
}
printf("---------------------\n");
fflush(stdout);
}
-bool
-rb_insns_leaf_p(int i)
-{
- return insn_leaf_p(i);
-}
-
-int
-rb_insn_len(VALUE insn)
-{
- return insn_len(insn);
-}
-
const char *
rb_insns_name(int i)
{
- return insn_name(i);
+ return insn_name_info[i];
}
VALUE
rb_insns_name_array(void)
{
- VALUE ary = rb_ary_new_capa(VM_INSTRUCTION_SIZE);
+ VALUE ary = rb_ary_new();
int i;
for (i = 0; i < VM_INSTRUCTION_SIZE; i++) {
- rb_ary_push(ary, rb_fstring_cstr(insn_name(i)));
+ rb_ary_push(ary, rb_fstring_cstr(insn_name_info[i]));
}
return rb_obj_freeze(ary);
}
@@ -10410,11 +7424,11 @@ register_label(rb_iseq_t *iseq, struct st_table *labels_table, VALUE obj)
obj = rb_to_symbol_type(obj);
if (st_lookup(labels_table, obj, &tmp) == 0) {
- label = NEW_LABEL(0);
- st_insert(labels_table, obj, (st_data_t)label);
+ label = NEW_LABEL(0);
+ st_insert(labels_table, obj, (st_data_t)label);
}
else {
- label = (LABEL *)tmp;
+ label = (LABEL *)tmp;
}
LABEL_REF(label);
return label;
@@ -10423,16 +7437,18 @@ register_label(rb_iseq_t *iseq, struct st_table *labels_table, VALUE obj)
static VALUE
get_exception_sym2type(VALUE sym)
{
+#undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
static VALUE symRescue, symEnsure, symRetry;
static VALUE symBreak, symRedo, symNext;
if (symRescue == 0) {
- symRescue = ID2SYM(rb_intern_const("rescue"));
- symEnsure = ID2SYM(rb_intern_const("ensure"));
- symRetry = ID2SYM(rb_intern_const("retry"));
- symBreak = ID2SYM(rb_intern_const("break"));
- symRedo = ID2SYM(rb_intern_const("redo"));
- symNext = ID2SYM(rb_intern_const("next"));
+ symRescue = ID2SYM(rb_intern("rescue"));
+ symEnsure = ID2SYM(rb_intern("ensure"));
+ symRetry = ID2SYM(rb_intern("retry"));
+ symBreak = ID2SYM(rb_intern("break"));
+ symRedo = ID2SYM(rb_intern("redo"));
+ symNext = ID2SYM(rb_intern("next"));
}
if (sym == symRescue) return CATCH_TYPE_RESCUE;
@@ -10447,45 +7463,47 @@ get_exception_sym2type(VALUE sym)
static int
iseq_build_from_ary_exception(rb_iseq_t *iseq, struct st_table *labels_table,
- VALUE exception)
+ VALUE exception)
{
int i;
for (i=0; i<RARRAY_LEN(exception); i++) {
- const rb_iseq_t *eiseq;
- VALUE v, type;
- LABEL *lstart, *lend, *lcont;
- unsigned int sp;
-
- v = rb_to_array_type(RARRAY_AREF(exception, i));
- if (RARRAY_LEN(v) != 6) {
- rb_raise(rb_eSyntaxError, "wrong exception entry");
- }
- type = get_exception_sym2type(RARRAY_AREF(v, 0));
- if (NIL_P(RARRAY_AREF(v, 1))) {
- eiseq = NULL;
- }
- else {
- eiseq = rb_iseqw_to_iseq(rb_iseq_load(RARRAY_AREF(v, 1), (VALUE)iseq, Qnil));
- }
-
- lstart = register_label(iseq, labels_table, RARRAY_AREF(v, 2));
- lend = register_label(iseq, labels_table, RARRAY_AREF(v, 3));
- lcont = register_label(iseq, labels_table, RARRAY_AREF(v, 4));
- sp = NUM2UINT(RARRAY_AREF(v, 5));
-
- /* TODO: Dirty Hack! Fix me */
- if (type == CATCH_TYPE_RESCUE ||
- type == CATCH_TYPE_BREAK ||
- type == CATCH_TYPE_NEXT) {
- ++sp;
- }
-
- lcont->sp = sp;
-
- ADD_CATCH_ENTRY(type, lstart, lend, eiseq, lcont);
-
- RB_GC_GUARD(v);
+ const rb_iseq_t *eiseq;
+ VALUE v, type;
+ const VALUE *ptr;
+ LABEL *lstart, *lend, *lcont;
+ unsigned int sp;
+
+ v = rb_to_array_type(RARRAY_AREF(exception, i));
+ if (RARRAY_LEN(v) != 6) {
+ rb_raise(rb_eSyntaxError, "wrong exception entry");
+ }
+ ptr = RARRAY_CONST_PTR(v);
+ type = get_exception_sym2type(ptr[0]);
+ if (ptr[1] == Qnil) {
+ eiseq = NULL;
+ }
+ else {
+ eiseq = rb_iseqw_to_iseq(rb_iseq_load(ptr[1], (VALUE)iseq, Qnil));
+ }
+
+ lstart = register_label(iseq, labels_table, ptr[2]);
+ lend = register_label(iseq, labels_table, ptr[3]);
+ lcont = register_label(iseq, labels_table, ptr[4]);
+ sp = NUM2UINT(ptr[5]);
+
+ /* TODO: Dirty Hack! Fix me */
+ if (type == CATCH_TYPE_RESCUE ||
+ type == CATCH_TYPE_BREAK ||
+ type == CATCH_TYPE_NEXT) {
+ ++sp;
+ }
+
+ lcont->sp = sp;
+
+ ADD_CATCH_ENTRY(type, lstart, lend, eiseq, lcont);
+
+ RB_GC_GUARD(v);
}
return COMPILE_OK;
}
@@ -10495,10 +7513,10 @@ insn_make_insn_table(void)
{
struct st_table *table;
int i;
- table = st_init_numtable_with_size(VM_INSTRUCTION_SIZE);
+ table = st_init_numtable();
for (i=0; i<VM_INSTRUCTION_SIZE; i++) {
- st_insert(table, ID2SYM(rb_intern_const(insn_name(i))), i);
+ st_insert(table, ID2SYM(rb_intern(insn_name(i))), i);
}
return table;
@@ -10511,16 +7529,17 @@ iseq_build_load_iseq(const rb_iseq_t *iseq, VALUE op)
const rb_iseq_t *loaded_iseq;
if (RB_TYPE_P(op, T_ARRAY)) {
- iseqw = rb_iseq_load(op, (VALUE)iseq, Qnil);
+ iseqw = rb_iseq_load(op, (VALUE)iseq, Qnil);
}
else if (CLASS_OF(op) == rb_cISeq) {
- iseqw = op;
+ iseqw = op;
}
else {
- rb_raise(rb_eSyntaxError, "ISEQ is required");
+ rb_raise(rb_eSyntaxError, "ISEQ is required");
}
loaded_iseq = rb_iseqw_to_iseq(iseqw);
+ iseq_add_mark_object(iseq, (VALUE)loaded_iseq);
return loaded_iseq;
}
@@ -10530,62 +7549,61 @@ iseq_build_callinfo_from_hash(rb_iseq_t *iseq, VALUE op)
ID mid = 0;
int orig_argc = 0;
unsigned int flag = 0;
- struct rb_callinfo_kwarg *kw_arg = 0;
+ struct rb_call_info_kw_arg *kw_arg = 0;
if (!NIL_P(op)) {
- VALUE vmid = rb_hash_aref(op, ID2SYM(rb_intern_const("mid")));
- VALUE vflag = rb_hash_aref(op, ID2SYM(rb_intern_const("flag")));
- VALUE vorig_argc = rb_hash_aref(op, ID2SYM(rb_intern_const("orig_argc")));
- VALUE vkw_arg = rb_hash_aref(op, ID2SYM(rb_intern_const("kw_arg")));
-
- if (!NIL_P(vmid)) mid = SYM2ID(vmid);
- if (!NIL_P(vflag)) flag = NUM2UINT(vflag);
- if (!NIL_P(vorig_argc)) orig_argc = FIX2INT(vorig_argc);
-
- if (!NIL_P(vkw_arg)) {
- int i;
- int len = RARRAY_LENINT(vkw_arg);
- size_t n = rb_callinfo_kwarg_bytes(len);
-
- kw_arg = xmalloc(n);
- kw_arg->keyword_len = len;
- for (i = 0; i < len; i++) {
- VALUE kw = RARRAY_AREF(vkw_arg, i);
- SYM2ID(kw); /* make immortal */
- kw_arg->keywords[i] = kw;
- }
- }
+ VALUE vmid = rb_hash_aref(op, ID2SYM(rb_intern("mid")));
+ VALUE vflag = rb_hash_aref(op, ID2SYM(rb_intern("flag")));
+ VALUE vorig_argc = rb_hash_aref(op, ID2SYM(rb_intern("orig_argc")));
+ VALUE vkw_arg = rb_hash_aref(op, ID2SYM(rb_intern("kw_arg")));
+
+ if (!NIL_P(vmid)) mid = SYM2ID(vmid);
+ if (!NIL_P(vflag)) flag = NUM2UINT(vflag);
+ if (!NIL_P(vorig_argc)) orig_argc = FIX2INT(vorig_argc);
+
+ if (!NIL_P(vkw_arg)) {
+ int i;
+ int len = RARRAY_LENINT(vkw_arg);
+ size_t n = rb_call_info_kw_arg_bytes(len);
+
+ kw_arg = xmalloc(n);
+ kw_arg->keyword_len = len;
+ for (i = 0; i < len; i++) {
+ VALUE kw = RARRAY_AREF(vkw_arg, i);
+ SYM2ID(kw); /* make immortal */
+ kw_arg->keywords[i] = kw;
+ }
+ }
}
- const struct rb_callinfo *ci = new_callinfo(iseq, mid, orig_argc, flag, kw_arg, (flag & VM_CALL_ARGS_SIMPLE) == 0);
- RB_OBJ_WRITTEN(iseq, Qundef, ci);
- return (VALUE)ci;
+ return (VALUE)new_callinfo(iseq, mid, orig_argc, flag, kw_arg, (flag & VM_CALL_ARGS_SIMPLE) == 0);
}
static rb_event_flag_t
event_name_to_flag(VALUE sym)
{
-#define CHECK_EVENT(ev) if (sym == ID2SYM(rb_intern_const(#ev))) return ev;
- CHECK_EVENT(RUBY_EVENT_LINE);
- CHECK_EVENT(RUBY_EVENT_CLASS);
- CHECK_EVENT(RUBY_EVENT_END);
- CHECK_EVENT(RUBY_EVENT_CALL);
- CHECK_EVENT(RUBY_EVENT_RETURN);
- CHECK_EVENT(RUBY_EVENT_B_CALL);
- CHECK_EVENT(RUBY_EVENT_B_RETURN);
+#define CHECK_EVENT(ev) if (sym == ID2SYM(rb_intern(#ev))) return ev;
+ CHECK_EVENT(RUBY_EVENT_LINE);
+ CHECK_EVENT(RUBY_EVENT_CLASS);
+ CHECK_EVENT(RUBY_EVENT_END);
+ CHECK_EVENT(RUBY_EVENT_CALL);
+ CHECK_EVENT(RUBY_EVENT_RETURN);
+ CHECK_EVENT(RUBY_EVENT_B_CALL);
+ CHECK_EVENT(RUBY_EVENT_B_RETURN);
#undef CHECK_EVENT
return RUBY_EVENT_NONE;
}
static int
iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *const anchor,
- VALUE body, VALUE node_ids, VALUE labels_wrapper)
+ VALUE body, VALUE labels_wrapper)
{
/* TODO: body should be frozen */
+ const VALUE *ptr = RARRAY_CONST_PTR(body);
long i, len = RARRAY_LEN(body);
struct st_table *labels_table = DATA_PTR(labels_wrapper);
int j;
- int line_no = 0, node_id = -1, insn_idx = 0;
+ int line_no = 0;
int ret = COMPILE_OK;
/*
@@ -10594,174 +7612,136 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *const anchor,
static struct st_table *insn_table;
if (insn_table == 0) {
- insn_table = insn_make_insn_table();
+ insn_table = insn_make_insn_table();
}
for (i=0; i<len; i++) {
- VALUE obj = RARRAY_AREF(body, i);
-
- if (SYMBOL_P(obj)) {
- rb_event_flag_t event;
- if ((event = event_name_to_flag(obj)) != RUBY_EVENT_NONE) {
- ADD_TRACE(anchor, event);
- }
- else {
- LABEL *label = register_label(iseq, labels_table, obj);
- ADD_LABEL(anchor, label);
- }
- }
- else if (FIXNUM_P(obj)) {
- line_no = NUM2INT(obj);
- }
- else if (RB_TYPE_P(obj, T_ARRAY)) {
- VALUE *argv = 0;
- int argc = RARRAY_LENINT(obj) - 1;
- st_data_t insn_id;
- VALUE insn;
-
- if (node_ids) {
- node_id = NUM2INT(rb_ary_entry(node_ids, insn_idx++));
- }
-
- insn = (argc < 0) ? Qnil : RARRAY_AREF(obj, 0);
- if (st_lookup(insn_table, (st_data_t)insn, &insn_id) == 0) {
- /* TODO: exception */
- COMPILE_ERROR(iseq, line_no,
- "unknown instruction: %+"PRIsVALUE, insn);
- ret = COMPILE_NG;
- break;
- }
-
- if (argc != insn_len((VALUE)insn_id)-1) {
- COMPILE_ERROR(iseq, line_no,
- "operand size mismatch");
- ret = COMPILE_NG;
- break;
- }
-
- if (argc > 0) {
- argv = compile_data_calloc2(iseq, sizeof(VALUE), argc);
-
- // add element before operand setup to make GC root
- NODE dummy_line_node = generate_dummy_line_node(line_no, node_id);
- ADD_ELEM(anchor,
- (LINK_ELEMENT*)new_insn_core(iseq, &dummy_line_node,
- (enum ruby_vminsn_type)insn_id, argc, argv));
-
- for (j=0; j<argc; j++) {
- VALUE op = rb_ary_entry(obj, j+1);
- switch (insn_op_type((VALUE)insn_id, j)) {
- case TS_OFFSET: {
- LABEL *label = register_label(iseq, labels_table, op);
- argv[j] = (VALUE)label;
- break;
- }
- case TS_LINDEX:
- case TS_NUM:
- (void)NUM2INT(op);
- argv[j] = op;
- break;
- case TS_VALUE:
- argv[j] = op;
- RB_OBJ_WRITTEN(iseq, Qundef, op);
- break;
- case TS_ISEQ:
- {
- if (op != Qnil) {
- VALUE v = (VALUE)iseq_build_load_iseq(iseq, op);
- argv[j] = v;
- RB_OBJ_WRITTEN(iseq, Qundef, v);
- }
- else {
- argv[j] = 0;
- }
- }
- break;
- case TS_ISE:
- argv[j] = op;
- if (NUM2UINT(op) >= ISEQ_BODY(iseq)->ise_size) {
- ISEQ_BODY(iseq)->ise_size = NUM2INT(op) + 1;
- }
- break;
- case TS_IC:
- {
- VALUE segments = rb_ary_new();
- op = rb_to_array_type(op);
-
- for (int i = 0; i < RARRAY_LEN(op); i++) {
- VALUE sym = RARRAY_AREF(op, i);
- sym = rb_to_symbol_type(sym);
- rb_ary_push(segments, sym);
- }
-
- RB_GC_GUARD(op);
- argv[j] = segments;
- RB_OBJ_WRITTEN(iseq, Qundef, segments);
- ISEQ_BODY(iseq)->ic_size++;
- }
- break;
- case TS_IVC: /* inline ivar cache */
- argv[j] = op;
- if (NUM2UINT(op) >= ISEQ_BODY(iseq)->ivc_size) {
- ISEQ_BODY(iseq)->ivc_size = NUM2INT(op) + 1;
- }
- break;
- case TS_ICVARC: /* inline cvar cache */
- argv[j] = op;
- if (NUM2UINT(op) >= ISEQ_BODY(iseq)->icvarc_size) {
- ISEQ_BODY(iseq)->icvarc_size = NUM2INT(op) + 1;
- }
- break;
- case TS_CALLDATA:
- argv[j] = iseq_build_callinfo_from_hash(iseq, op);
- break;
- case TS_ID:
- argv[j] = rb_to_symbol_type(op);
- break;
- case TS_CDHASH:
- {
- int i;
- VALUE map = rb_hash_new_with_size(RARRAY_LEN(op)/2);
-
- RHASH_TBL_RAW(map)->type = &cdhash_type;
- op = rb_to_array_type(op);
- for (i=0; i<RARRAY_LEN(op); i+=2) {
- VALUE key = RARRAY_AREF(op, i);
- VALUE sym = RARRAY_AREF(op, i+1);
- LABEL *label =
- register_label(iseq, labels_table, sym);
- rb_hash_aset(map, key, (VALUE)label | 1);
- }
- RB_GC_GUARD(op);
- argv[j] = map;
- RB_OBJ_WRITTEN(iseq, Qundef, map);
- }
- break;
- case TS_FUNCPTR:
- {
+ VALUE obj = ptr[i];
+
+ if (SYMBOL_P(obj)) {
+ rb_event_flag_t event;
+ if ((event = event_name_to_flag(obj)) != RUBY_EVENT_NONE) {
+ ADD_TRACE(anchor, event);
+ }
+ else {
+ LABEL *label = register_label(iseq, labels_table, obj);
+ ADD_LABEL(anchor, label);
+ }
+ }
+ else if (FIXNUM_P(obj)) {
+ line_no = NUM2INT(obj);
+ }
+ else if (RB_TYPE_P(obj, T_ARRAY)) {
+ VALUE *argv = 0;
+ int argc = RARRAY_LENINT(obj) - 1;
+ st_data_t insn_id;
+ VALUE insn;
+
+ insn = (argc < 0) ? Qnil : RARRAY_AREF(obj, 0);
+ if (st_lookup(insn_table, (st_data_t)insn, &insn_id) == 0) {
+ /* TODO: exception */
+ COMPILE_ERROR(iseq, line_no,
+ "unknown instruction: %+"PRIsVALUE, insn);
+ ret = COMPILE_NG;
+ break;
+ }
+
+ if (argc != insn_len((VALUE)insn_id)-1) {
+ COMPILE_ERROR(iseq, line_no,
+ "operand size mismatch");
+ ret = COMPILE_NG;
+ break;
+ }
+
+ if (argc > 0) {
+ argv = compile_data_alloc(iseq, sizeof(VALUE) * argc);
+ for (j=0; j<argc; j++) {
+ VALUE op = rb_ary_entry(obj, j+1);
+ switch (insn_op_type((VALUE)insn_id, j)) {
+ case TS_OFFSET: {
+ LABEL *label = register_label(iseq, labels_table, op);
+ argv[j] = (VALUE)label;
+ break;
+ }
+ case TS_LINDEX:
+ case TS_NUM:
+ (void)NUM2INT(op);
+ argv[j] = op;
+ break;
+ case TS_VALUE:
+ argv[j] = op;
+ iseq_add_mark_object(iseq, op);
+ break;
+ case TS_ISEQ:
+ {
+ if (op != Qnil) {
+ argv[j] = (VALUE)iseq_build_load_iseq(iseq, op);
+ }
+ else {
+ argv[j] = 0;
+ }
+ }
+ break;
+ case TS_GENTRY:
+ op = rb_to_symbol_type(op);
+ argv[j] = (VALUE)rb_global_entry(SYM2ID(op));
+ break;
+ case TS_IC:
+ argv[j] = op;
+ if (NUM2UINT(op) >= iseq->body->is_size) {
+ iseq->body->is_size = NUM2INT(op) + 1;
+ }
+ break;
+ case TS_CALLINFO:
+ argv[j] = iseq_build_callinfo_from_hash(iseq, op);
+ break;
+ case TS_CALLCACHE:
+ argv[j] = Qfalse;
+ break;
+ case TS_ID:
+ argv[j] = rb_to_symbol_type(op);
+ break;
+ case TS_CDHASH:
+ {
+ int i;
+ VALUE map = rb_hash_new_with_size(RARRAY_LEN(op)/2);
+
+ rb_hash_tbl_raw(map)->type = &cdhash_type;
+ op = rb_to_array_type(op);
+ for (i=0; i<RARRAY_LEN(op); i+=2) {
+ VALUE key = RARRAY_AREF(op, i);
+ VALUE sym = RARRAY_AREF(op, i+1);
+ LABEL *label =
+ register_label(iseq, labels_table, sym);
+ rb_hash_aset(map, key, (VALUE)label | 1);
+ }
+ RB_GC_GUARD(op);
+ argv[j] = map;
+ rb_iseq_add_mark_object(iseq, map);
+ }
+ break;
+ case TS_FUNCPTR:
+ {
#if SIZEOF_VALUE <= SIZEOF_LONG
- long funcptr = NUM2LONG(op);
+ long funcptr = NUM2LONG(op);
#else
- LONG_LONG funcptr = NUM2LL(op);
+ LONG_LONG funcptr = NUM2LL(op);
#endif
- argv[j] = (VALUE)funcptr;
- }
- break;
- default:
- rb_raise(rb_eSyntaxError, "unknown operand: %c", insn_op_type((VALUE)insn_id, j));
- }
- }
- }
- else {
- NODE dummy_line_node = generate_dummy_line_node(line_no, node_id);
- ADD_ELEM(anchor,
- (LINK_ELEMENT*)new_insn_core(iseq, &dummy_line_node,
- (enum ruby_vminsn_type)insn_id, argc, NULL));
- }
- }
- else {
- rb_raise(rb_eTypeError, "unexpected object for instruction");
- }
+ argv[j] = (VALUE)funcptr;
+ }
+ break;
+ default:
+ rb_raise(rb_eSyntaxError, "unknown operand: %c", insn_op_type((VALUE)insn_id, j));
+ }
+ }
+ }
+ ADD_ELEM(anchor,
+ (LINK_ELEMENT*)new_insn_core(iseq, line_no,
+ (enum ruby_vminsn_type)insn_id, argc, argv));
+ }
+ else {
+ rb_raise(rb_eTypeError, "unexpected object for instruction");
+ }
}
DATA_PTR(labels_wrapper) = 0;
validate_labels(iseq, labels_table);
@@ -10777,12 +7757,12 @@ int_param(int *dst, VALUE param, VALUE sym)
{
VALUE val = rb_hash_aref(param, sym);
if (FIXNUM_P(val)) {
- *dst = FIX2INT(val);
- return TRUE;
+ *dst = FIX2INT(val);
+ return TRUE;
}
else if (!NIL_P(val)) {
- rb_raise(rb_eTypeError, "invalid %+"PRIsVALUE" Fixnum: %+"PRIsVALUE,
- sym, val);
+ rb_raise(rb_eTypeError, "invalid %+"PRIsVALUE" Fixnum: %+"PRIsVALUE,
+ sym, val);
}
return FALSE;
}
@@ -10798,56 +7778,53 @@ iseq_build_kw(rb_iseq_t *iseq, VALUE params, VALUE keywords)
ID *ids;
struct rb_iseq_param_keyword *keyword = ZALLOC(struct rb_iseq_param_keyword);
- ISEQ_BODY(iseq)->param.flags.has_kw = TRUE;
+ iseq->body->param.flags.has_kw = TRUE;
keyword->num = len;
-#define SYM(s) ID2SYM(rb_intern_const(#s))
+#define SYM(s) ID2SYM(rb_intern(#s))
(void)int_param(&keyword->bits_start, params, SYM(kwbits));
i = keyword->bits_start - keyword->num;
- ids = (ID *)&ISEQ_BODY(iseq)->local_table[i];
+ ids = (ID *)&iseq->body->local_table[i];
#undef SYM
/* required args */
for (i = 0; i < len; i++) {
- VALUE val = RARRAY_AREF(keywords, i);
+ VALUE val = RARRAY_AREF(keywords, i);
- if (!SYMBOL_P(val)) {
- goto default_values;
- }
- ids[i] = SYM2ID(val);
- keyword->required_num++;
+ if (!SYMBOL_P(val)) {
+ goto default_values;
+ }
+ ids[i] = SYM2ID(val);
+ keyword->required_num++;
}
default_values: /* note: we intentionally preserve `i' from previous loop */
default_len = len - i;
if (default_len == 0) {
- keyword->table = ids;
- return keyword;
- }
- else if (default_len < 0) {
- UNREACHABLE;
+ keyword->table = ids;
+ return keyword;
}
dvs = ALLOC_N(VALUE, (unsigned int)default_len);
for (j = 0; i < len; i++, j++) {
- key = RARRAY_AREF(keywords, i);
- CHECK_ARRAY(key);
-
- switch (RARRAY_LEN(key)) {
- case 1:
- sym = RARRAY_AREF(key, 0);
- default_val = Qundef;
- break;
- case 2:
- sym = RARRAY_AREF(key, 0);
- default_val = RARRAY_AREF(key, 1);
- break;
- default:
- rb_raise(rb_eTypeError, "keyword default has unsupported len %+"PRIsVALUE, key);
- }
- ids[i] = SYM2ID(sym);
- dvs[j] = default_val;
+ key = RARRAY_AREF(keywords, i);
+ CHECK_ARRAY(key);
+
+ switch (RARRAY_LEN(key)) {
+ case 1:
+ sym = RARRAY_AREF(key, 0);
+ default_val = Qundef;
+ break;
+ case 2:
+ sym = RARRAY_AREF(key, 0);
+ default_val = RARRAY_AREF(key, 1);
+ break;
+ default:
+ rb_raise(rb_eTypeError, "keyword default has unsupported len %+"PRIsVALUE, key);
+ }
+ ids[i] = SYM2ID(sym);
+ dvs[j] = default_val;
}
keyword->table = ids;
@@ -10857,152 +7834,95 @@ iseq_build_kw(rb_iseq_t *iseq, VALUE params, VALUE keywords)
}
void
-rb_iseq_mark_and_move_insn_storage(struct iseq_compile_data_storage *storage)
-{
- INSN *iobj = 0;
- size_t size = sizeof(INSN);
- unsigned int pos = 0;
-
- while (storage) {
-#ifdef STRICT_ALIGNMENT
- size_t padding = calc_padding((void *)&storage->buff[pos], size);
-#else
- const size_t padding = 0; /* expected to be optimized by compiler */
-#endif /* STRICT_ALIGNMENT */
- size_t offset = pos + size + padding;
- if (offset > storage->size || offset > storage->pos) {
- pos = 0;
- storage = storage->next;
- }
- else {
-#ifdef STRICT_ALIGNMENT
- pos += (int)padding;
-#endif /* STRICT_ALIGNMENT */
-
- iobj = (INSN *)&storage->buff[pos];
-
- if (iobj->operands) {
- int j;
- const char *types = insn_op_types(iobj->insn_id);
-
- for (j = 0; types[j]; j++) {
- char type = types[j];
- switch (type) {
- case TS_CDHASH:
- case TS_ISEQ:
- case TS_VALUE:
- case TS_IC: // constant path array
- case TS_CALLDATA: // ci is stored.
- rb_gc_mark_and_move(&OPERAND_AT(iobj, j));
- break;
- default:
- break;
- }
- }
- }
- pos += (int)size;
- }
- }
-}
-
-void
rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params,
- VALUE exception, VALUE body)
+ VALUE exception, VALUE body)
{
-#define SYM(s) ID2SYM(rb_intern_const(#s))
+#define SYM(s) ID2SYM(rb_intern(#s))
int i, len;
unsigned int arg_size, local_size, stack_max;
ID *tbl;
struct st_table *labels_table = st_init_numtable();
- VALUE labels_wrapper = Data_Wrap_Struct(0, rb_mark_set, st_free_table, labels_table);
+ VALUE labels_wrapper = Data_Wrap_Struct(0, 0, st_free_table, labels_table);
VALUE arg_opt_labels = rb_hash_aref(params, SYM(opt));
VALUE keywords = rb_hash_aref(params, SYM(keyword));
- VALUE sym_arg_rest = ID2SYM(rb_intern_const("#arg_rest"));
+ VALUE sym_arg_rest = ID2SYM(rb_intern("#arg_rest"));
DECL_ANCHOR(anchor);
INIT_ANCHOR(anchor);
len = RARRAY_LENINT(locals);
- ISEQ_BODY(iseq)->local_table_size = len;
- ISEQ_BODY(iseq)->local_table = tbl = len > 0 ? (ID *)ALLOC_N(ID, ISEQ_BODY(iseq)->local_table_size) : NULL;
+ iseq->body->local_table_size = len;
+ iseq->body->local_table = tbl = len > 0 ? (ID *)ALLOC_N(ID, iseq->body->local_table_size) : NULL;
for (i = 0; i < len; i++) {
- VALUE lv = RARRAY_AREF(locals, i);
+ VALUE lv = RARRAY_AREF(locals, i);
- if (sym_arg_rest == lv) {
- tbl[i] = 0;
- }
- else {
- tbl[i] = FIXNUM_P(lv) ? (ID)FIX2LONG(lv) : SYM2ID(CHECK_SYMBOL(lv));
- }
+ if (sym_arg_rest == lv) {
+ tbl[i] = 0;
+ }
+ else {
+ tbl[i] = FIXNUM_P(lv) ? (ID)FIX2LONG(lv) : SYM2ID(CHECK_SYMBOL(lv));
+ }
}
-#define INT_PARAM(F) int_param(&ISEQ_BODY(iseq)->param.F, params, SYM(F))
+#define INT_PARAM(F) int_param(&iseq->body->param.F, params, SYM(F))
if (INT_PARAM(lead_num)) {
- ISEQ_BODY(iseq)->param.flags.has_lead = TRUE;
+ iseq->body->param.flags.has_lead = TRUE;
}
- if (INT_PARAM(post_num)) ISEQ_BODY(iseq)->param.flags.has_post = TRUE;
- if (INT_PARAM(post_start)) ISEQ_BODY(iseq)->param.flags.has_post = TRUE;
- if (INT_PARAM(rest_start)) ISEQ_BODY(iseq)->param.flags.has_rest = TRUE;
- if (INT_PARAM(block_start)) ISEQ_BODY(iseq)->param.flags.has_block = TRUE;
+ if (INT_PARAM(post_num)) iseq->body->param.flags.has_post = TRUE;
+ if (INT_PARAM(post_start)) iseq->body->param.flags.has_post = TRUE;
+ if (INT_PARAM(rest_start)) iseq->body->param.flags.has_rest = TRUE;
+ if (INT_PARAM(block_start)) iseq->body->param.flags.has_block = TRUE;
#undef INT_PARAM
{
#define INT_PARAM(F) F = (int_param(&x, misc, SYM(F)) ? (unsigned int)x : 0)
- int x;
- INT_PARAM(arg_size);
- INT_PARAM(local_size);
- INT_PARAM(stack_max);
+ int x;
+ INT_PARAM(arg_size);
+ INT_PARAM(local_size);
+ INT_PARAM(stack_max);
#undef INT_PARAM
}
- VALUE node_ids = Qfalse;
-#ifdef USE_ISEQ_NODE_ID
- node_ids = rb_hash_aref(misc, ID2SYM(rb_intern("node_ids")));
- if (!RB_TYPE_P(node_ids, T_ARRAY)) {
- rb_raise(rb_eTypeError, "node_ids is not an array");
- }
-#endif
-
if (RB_TYPE_P(arg_opt_labels, T_ARRAY)) {
- len = RARRAY_LENINT(arg_opt_labels);
- ISEQ_BODY(iseq)->param.flags.has_opt = !!(len - 1 >= 0);
+ len = RARRAY_LENINT(arg_opt_labels);
+ iseq->body->param.flags.has_opt = !!(len - 1 >= 0);
- if (ISEQ_BODY(iseq)->param.flags.has_opt) {
- VALUE *opt_table = ALLOC_N(VALUE, len);
+ if (iseq->body->param.flags.has_opt) {
+ VALUE *opt_table = ALLOC_N(VALUE, len);
- for (i = 0; i < len; i++) {
- VALUE ent = RARRAY_AREF(arg_opt_labels, i);
- LABEL *label = register_label(iseq, labels_table, ent);
- opt_table[i] = (VALUE)label;
- }
+ for (i = 0; i < len; i++) {
+ VALUE ent = RARRAY_AREF(arg_opt_labels, i);
+ LABEL *label = register_label(iseq, labels_table, ent);
+ opt_table[i] = (VALUE)label;
+ }
- ISEQ_BODY(iseq)->param.opt_num = len - 1;
- ISEQ_BODY(iseq)->param.opt_table = opt_table;
- }
+ iseq->body->param.opt_num = len - 1;
+ iseq->body->param.opt_table = opt_table;
+ }
}
else if (!NIL_P(arg_opt_labels)) {
- rb_raise(rb_eTypeError, ":opt param is not an array: %+"PRIsVALUE,
- arg_opt_labels);
+ rb_raise(rb_eTypeError, ":opt param is not an array: %+"PRIsVALUE,
+ arg_opt_labels);
}
if (RB_TYPE_P(keywords, T_ARRAY)) {
- ISEQ_BODY(iseq)->param.keyword = iseq_build_kw(iseq, params, keywords);
+ iseq->body->param.keyword = iseq_build_kw(iseq, params, keywords);
}
else if (!NIL_P(keywords)) {
- rb_raise(rb_eTypeError, ":keywords param is not an array: %+"PRIsVALUE,
- keywords);
+ rb_raise(rb_eTypeError, ":keywords param is not an array: %+"PRIsVALUE,
+ keywords);
}
if (Qtrue == rb_hash_aref(params, SYM(ambiguous_param0))) {
- ISEQ_BODY(iseq)->param.flags.ambiguous_param0 = TRUE;
+ iseq->body->param.flags.ambiguous_param0 = TRUE;
}
if (int_param(&i, params, SYM(kwrest))) {
- struct rb_iseq_param_keyword *keyword = (struct rb_iseq_param_keyword *)ISEQ_BODY(iseq)->param.keyword;
- if (keyword == NULL) {
- ISEQ_BODY(iseq)->param.keyword = keyword = ZALLOC(struct rb_iseq_param_keyword);
- }
- keyword->rest_start = i;
- ISEQ_BODY(iseq)->param.flags.has_kwrest = TRUE;
+ struct rb_iseq_param_keyword *keyword = (struct rb_iseq_param_keyword *)iseq->body->param.keyword;
+ if (keyword == NULL) {
+ iseq->body->param.keyword = keyword = ZALLOC(struct rb_iseq_param_keyword);
+ }
+ keyword->rest_start = i;
+ iseq->body->param.flags.has_kwrest = TRUE;
}
#undef SYM
iseq_calc_param_size(iseq);
@@ -11011,77 +7931,155 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE params,
iseq_build_from_ary_exception(iseq, labels_table, exception);
/* body */
- iseq_build_from_ary_body(iseq, anchor, body, node_ids, labels_wrapper);
+ iseq_build_from_ary_body(iseq, anchor, body, labels_wrapper);
- ISEQ_BODY(iseq)->param.size = arg_size;
- ISEQ_BODY(iseq)->local_table_size = local_size;
- ISEQ_BODY(iseq)->stack_max = stack_max;
+ iseq->body->param.size = arg_size;
+ iseq->body->local_table_size = local_size;
+ iseq->body->stack_max = stack_max;
}
/* for parser */
int
-rb_dvar_defined(ID id, const rb_iseq_t *iseq)
-{
- if (iseq) {
- const struct rb_iseq_constant_body *body = ISEQ_BODY(iseq);
- while (body->type == ISEQ_TYPE_BLOCK ||
- body->type == ISEQ_TYPE_RESCUE ||
- body->type == ISEQ_TYPE_ENSURE ||
- body->type == ISEQ_TYPE_EVAL ||
- body->type == ISEQ_TYPE_MAIN
- ) {
- unsigned int i;
-
- for (i = 0; i < body->local_table_size; i++) {
- if (body->local_table[i] == id) {
- return 1;
- }
- }
- iseq = body->parent_iseq;
- body = ISEQ_BODY(iseq);
- }
+rb_dvar_defined(ID id, const struct rb_block *base_block)
+{
+ const rb_iseq_t *iseq;
+
+ if (base_block && (iseq = vm_block_iseq(base_block)) != NULL) {
+ while (iseq->body->type == ISEQ_TYPE_BLOCK ||
+ iseq->body->type == ISEQ_TYPE_RESCUE ||
+ iseq->body->type == ISEQ_TYPE_ENSURE ||
+ iseq->body->type == ISEQ_TYPE_EVAL ||
+ iseq->body->type == ISEQ_TYPE_MAIN
+ ) {
+ unsigned int i;
+
+ for (i = 0; i < iseq->body->local_table_size; i++) {
+ if (iseq->body->local_table[i] == id) {
+ return 1;
+ }
+ }
+ iseq = iseq->body->parent_iseq;
+ }
}
return 0;
}
int
-rb_local_defined(ID id, const rb_iseq_t *iseq)
+rb_local_defined(ID id, const struct rb_block *base_block)
{
- if (iseq) {
- unsigned int i;
- const struct rb_iseq_constant_body *const body = ISEQ_BODY(ISEQ_BODY(iseq)->local_iseq);
+ const rb_iseq_t *iseq;
- for (i=0; i<body->local_table_size; i++) {
- if (body->local_table[i] == id) {
- return 1;
- }
- }
+ if (base_block && (iseq = vm_block_iseq(base_block)) != NULL) {
+ unsigned int i;
+ iseq = iseq->body->local_iseq;
+
+ for (i=0; i<iseq->body->local_table_size; i++) {
+ if (iseq->body->local_table[i] == id) {
+ return 1;
+ }
+ }
}
return 0;
}
-/* ISeq binary format */
+static int
+caller_location(VALUE *path, VALUE *realpath)
+{
+ const rb_execution_context_t *ec = GET_EC();
+ const rb_control_frame_t *const cfp =
+ rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
-#ifndef IBF_ISEQ_DEBUG
-#define IBF_ISEQ_DEBUG 0
-#endif
+ if (cfp) {
+ int line = rb_vm_get_sourceline(cfp);
+ *path = rb_iseq_path(cfp->iseq);
+ *realpath = rb_iseq_realpath(cfp->iseq);
+ return line;
+ }
+ else {
+ *path = rb_fstring_cstr("<compiled>");
+ *realpath = *path;
+ return 1;
+ }
+}
-#ifndef IBF_ISEQ_ENABLE_LOCAL_BUFFER
-#define IBF_ISEQ_ENABLE_LOCAL_BUFFER 0
-#endif
+typedef struct {
+ VALUE arg;
+ rb_insn_func_t func;
+ int line;
+} accessor_args;
+
+static const rb_iseq_t *
+method_for_self(VALUE name, VALUE arg, rb_insn_func_t func,
+ VALUE (*build)(rb_iseq_t *, LINK_ANCHOR *const, VALUE))
+{
+ VALUE path, realpath;
+ accessor_args acc;
+
+ acc.arg = arg;
+ acc.func = func;
+ acc.line = caller_location(&path, &realpath);
+ return rb_iseq_new_with_opt((const NODE *)IFUNC_NEW(build, (VALUE)&acc, 0),
+ rb_sym2str(name), path, realpath,
+ INT2FIX(acc.line), 0, ISEQ_TYPE_METHOD, 0);
+}
+
+static VALUE
+for_self_aref(rb_iseq_t *iseq, LINK_ANCHOR *const ret, VALUE a)
+{
+ const accessor_args *const args = (void *)a;
+ const int line = args->line;
+
+ iseq_set_local_table(iseq, 0);
+ iseq->body->param.lead_num = 0;
+ iseq->body->param.size = 0;
+
+ ADD_INSN1(ret, line, putobject, args->arg);
+ ADD_INSN1(ret, line, opt_call_c_function, (VALUE)args->func);
+ return Qnil;
+}
+
+static VALUE
+for_self_aset(rb_iseq_t *iseq, LINK_ANCHOR *const ret, VALUE a)
+{
+ const accessor_args *const args = (void *)a;
+ const int line = args->line;
+ static const ID vars[] = {1, idUScore};
+
+ iseq_set_local_table(iseq, vars);
+ iseq->body->param.lead_num = 1;
+ iseq->body->param.size = 1;
+
+ ADD_GETLOCAL(ret, line, numberof(vars)-1, 0);
+ ADD_INSN1(ret, line, putobject, args->arg);
+ ADD_INSN1(ret, line, opt_call_c_function, (VALUE)args->func);
+ ADD_INSN(ret, line, pop);
+ return Qnil;
+}
+
+/*
+ * func (index) -> (value)
+ */
+const rb_iseq_t *
+rb_method_for_self_aref(VALUE name, VALUE arg, rb_insn_func_t func)
+{
+ return method_for_self(name, arg, func, for_self_aref);
+}
+
+/*
+ * func (index, value) -> (index, value)
+ */
+const rb_iseq_t *
+rb_method_for_self_aset(VALUE name, VALUE arg, rb_insn_func_t func)
+{
+ return method_for_self(name, arg, func, for_self_aset);
+}
+
+/* ISeq binary format */
typedef unsigned int ibf_offset_t;
#define IBF_OFFSET(ptr) ((ibf_offset_t)(VALUE)(ptr))
-#define IBF_MAJOR_VERSION ISEQ_MAJOR_VERSION
-#ifdef RUBY_DEVEL
-#define IBF_DEVEL_VERSION 4
-#define IBF_MINOR_VERSION (ISEQ_MINOR_VERSION * 10000 + IBF_DEVEL_VERSION)
-#else
-#define IBF_MINOR_VERSION ISEQ_MINOR_VERSION
-#endif
-
struct ibf_header {
char magic[4]; /* YARB */
unsigned int major_version;
@@ -11090,200 +8088,81 @@ struct ibf_header {
unsigned int extra_size;
unsigned int iseq_list_size;
- unsigned int global_object_list_size;
+ unsigned int id_list_size;
+ unsigned int object_list_size;
+
ibf_offset_t iseq_list_offset;
- ibf_offset_t global_object_list_offset;
+ ibf_offset_t id_list_offset;
+ ibf_offset_t object_list_offset;
};
-struct ibf_dump_buffer {
- VALUE str;
- st_table *obj_table; /* obj -> obj number */
+struct ibf_id_entry {
+ enum {
+ ibf_id_enc_ascii,
+ ibf_id_enc_utf8,
+ ibf_id_enc_other
+ } enc : 2;
+ char body[1];
};
struct ibf_dump {
+ VALUE str;
+ VALUE iseq_list; /* [iseq0 offset, ...] */
+ VALUE obj_list; /* [objs] */
st_table *iseq_table; /* iseq -> iseq number */
- struct ibf_dump_buffer global_buffer;
- struct ibf_dump_buffer *current_buffer;
+ st_table *id_table; /* id -> id number */
};
-struct ibf_load_buffer {
- const char *buff;
- ibf_offset_t size;
-
- VALUE obj_list; /* [obj0, ...] */
- unsigned int obj_list_size;
- ibf_offset_t obj_list_offset;
-};
+rb_iseq_t * iseq_alloc(void);
struct ibf_load {
+ const char *buff;
const struct ibf_header *header;
- VALUE iseq_list; /* [iseq0, ...] */
- struct ibf_load_buffer global_buffer;
+ ID *id_list; /* [id0, ...] */
+ VALUE iseq_list; /* [iseq0, ...] */
+ VALUE obj_list; /* [obj0, ...] */
VALUE loader_obj;
- rb_iseq_t *iseq;
VALUE str;
- struct ibf_load_buffer *current_buffer;
-};
-
-struct pinned_list {
- long size;
- VALUE * buffer;
-};
-
-static void
-pinned_list_mark(void *ptr)
-{
- long i;
- struct pinned_list *list = (struct pinned_list *)ptr;
- for (i = 0; i < list->size; i++) {
- if (list->buffer[i]) {
- rb_gc_mark(list->buffer[i]);
- }
- }
-}
-
-static void
-pinned_list_free(void *ptr)
-{
- struct pinned_list *list = (struct pinned_list *)ptr;
- xfree(list->buffer);
- xfree(ptr);
-}
-
-static size_t
-pinned_list_memsize(const void *ptr)
-{
- struct pinned_list *list = (struct pinned_list *)ptr;
- return sizeof(struct pinned_list) + (list->size * sizeof(VALUE *));
-}
-
-static const rb_data_type_t pinned_list_type = {
- "pinned_list",
- {pinned_list_mark, pinned_list_free, pinned_list_memsize,},
- 0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
+ rb_iseq_t *iseq;
};
-static VALUE
-pinned_list_fetch(VALUE list, long offset)
-{
- struct pinned_list * ptr;
-
- TypedData_Get_Struct(list, struct pinned_list, &pinned_list_type, ptr);
-
- if (offset >= ptr->size) {
- rb_raise(rb_eIndexError, "object index out of range: %ld", offset);
- }
-
- return ptr->buffer[offset];
-}
-
-static void
-pinned_list_store(VALUE list, long offset, VALUE object)
-{
- struct pinned_list * ptr;
-
- TypedData_Get_Struct(list, struct pinned_list, &pinned_list_type, ptr);
-
- if (offset >= ptr->size) {
- rb_raise(rb_eIndexError, "object index out of range: %ld", offset);
- }
-
- RB_OBJ_WRITE(list, &ptr->buffer[offset], object);
-}
-
-static VALUE
-pinned_list_new(long size)
-{
- struct pinned_list * ptr;
- VALUE obj_list =
- TypedData_Make_Struct(0, struct pinned_list, &pinned_list_type, ptr);
-
- ptr->buffer = xcalloc(size, sizeof(VALUE));
- ptr->size = size;
-
- return obj_list;
-}
-
static ibf_offset_t
ibf_dump_pos(struct ibf_dump *dump)
{
- long pos = RSTRING_LEN(dump->current_buffer->str);
-#if SIZEOF_LONG > SIZEOF_INT
- if (pos >= UINT_MAX) {
- rb_raise(rb_eRuntimeError, "dump size exceeds");
- }
-#endif
- return (unsigned int)pos;
-}
-
-static void
-ibf_dump_align(struct ibf_dump *dump, size_t align)
-{
- ibf_offset_t pos = ibf_dump_pos(dump);
- if (pos % align) {
- static const char padding[sizeof(VALUE)];
- size_t size = align - ((size_t)pos % align);
-#if SIZEOF_LONG > SIZEOF_INT
- if (pos + size >= UINT_MAX) {
- rb_raise(rb_eRuntimeError, "dump size exceeds");
- }
-#endif
- for (; size > sizeof(padding); size -= sizeof(padding)) {
- rb_str_cat(dump->current_buffer->str, padding, sizeof(padding));
- }
- rb_str_cat(dump->current_buffer->str, padding, size);
- }
+ return (unsigned int)rb_str_strlen(dump->str);
}
static ibf_offset_t
ibf_dump_write(struct ibf_dump *dump, const void *buff, unsigned long size)
{
ibf_offset_t pos = ibf_dump_pos(dump);
- rb_str_cat(dump->current_buffer->str, (const char *)buff, size);
+ rb_str_cat(dump->str, (const char *)buff, size);
/* TODO: overflow check */
return pos;
}
-static ibf_offset_t
-ibf_dump_write_byte(struct ibf_dump *dump, unsigned char byte)
-{
- return ibf_dump_write(dump, &byte, sizeof(unsigned char));
-}
-
static void
ibf_dump_overwrite(struct ibf_dump *dump, void *buff, unsigned int size, long offset)
{
- VALUE str = dump->current_buffer->str;
+ VALUE str = dump->str;
char *ptr = RSTRING_PTR(str);
if ((unsigned long)(size + offset) > (unsigned long)RSTRING_LEN(str))
- rb_bug("ibf_dump_overwrite: overflow");
+ rb_bug("ibf_dump_overwrite: overflow");
memcpy(ptr + offset, buff, size);
}
-static const void *
-ibf_load_ptr(const struct ibf_load *load, ibf_offset_t *offset, int size)
-{
- ibf_offset_t beg = *offset;
- *offset += size;
- return load->current_buffer->buff + beg;
-}
-
static void *
-ibf_load_alloc(const struct ibf_load *load, ibf_offset_t offset, size_t x, size_t y)
+ibf_load_alloc(const struct ibf_load *load, ibf_offset_t offset, int size)
{
- void *buff = ruby_xmalloc2(x, y);
- size_t size = x * y;
- memcpy(buff, load->current_buffer->buff + offset, size);
+ void *buff = ruby_xmalloc(size);
+ memcpy(buff, load->buff + offset, size);
return buff;
}
-#define IBF_W_ALIGN(type) (RUBY_ALIGNOF(type) > 1 ? ibf_dump_align(dump, RUBY_ALIGNOF(type)) : (void)0)
-
-#define IBF_W(b, type, n) (IBF_W_ALIGN(type), (type *)(VALUE)IBF_WP(b, type, n))
+#define IBF_W(b, type, n) (type *)(VALUE)ibf_dump_write(dump, (b), sizeof(type) * (n))
#define IBF_WV(variable) ibf_dump_write(dump, &(variable), sizeof(variable))
#define IBF_WP(b, type, n) ibf_dump_write(dump, (b), sizeof(type) * (n))
-#define IBF_R(val, type, n) (type *)ibf_load_alloc(load, IBF_OFFSET(val), sizeof(type), (n))
-#define IBF_ZERO(variable) memset(&(variable), 0, sizeof(variable))
+#define IBF_R(val, type, n) (type *)ibf_load_alloc(load, IBF_OFFSET(val), sizeof(type) * (n))
static int
ibf_table_lookup(struct st_table *table, st_data_t key)
@@ -11291,21 +8170,21 @@ ibf_table_lookup(struct st_table *table, st_data_t key)
st_data_t val;
if (st_lookup(table, key, &val)) {
- return (int)val;
+ return (int)val;
}
else {
- return -1;
+ return -1;
}
}
static int
-ibf_table_find_or_insert(struct st_table *table, st_data_t key)
+ibf_table_index(struct st_table *table, st_data_t key)
{
int index = ibf_table_lookup(table, key);
if (index < 0) { /* not found */
- index = (int)table->num_entries;
- st_insert(table, key, (st_data_t)index);
+ index = (int)table->num_entries;
+ st_insert(table, key, (st_data_t)index);
}
return index;
@@ -11313,916 +8192,465 @@ ibf_table_find_or_insert(struct st_table *table, st_data_t key)
/* dump/load generic */
-static void ibf_dump_object_list(struct ibf_dump *dump, ibf_offset_t *obj_list_offset, unsigned int *obj_list_size);
-
static VALUE ibf_load_object(const struct ibf_load *load, VALUE object_index);
static rb_iseq_t *ibf_load_iseq(const struct ibf_load *load, const rb_iseq_t *index_iseq);
-static st_table *
-ibf_dump_object_table_new(void)
-{
- st_table *obj_table = st_init_numtable(); /* need free */
- st_insert(obj_table, (st_data_t)Qnil, (st_data_t)0); /* 0th is nil */
-
- return obj_table;
-}
-
static VALUE
ibf_dump_object(struct ibf_dump *dump, VALUE obj)
{
- return ibf_table_find_or_insert(dump->current_buffer->obj_table, (st_data_t)obj);
+ long index = RARRAY_LEN(dump->obj_list);
+ long i;
+ for (i=0; i<index; i++) {
+ if (RARRAY_AREF(dump->obj_list, i) == obj) return (VALUE)i; /* dedup */
+ }
+ rb_ary_push(dump->obj_list, obj);
+ return (VALUE)index;
}
static VALUE
ibf_dump_id(struct ibf_dump *dump, ID id)
{
- if (id == 0 || rb_id2name(id) == NULL) {
- return 0;
- }
- return ibf_dump_object(dump, rb_id2sym(id));
+ return (VALUE)ibf_table_index(dump->id_table, (st_data_t)id);
}
static ID
ibf_load_id(const struct ibf_load *load, const ID id_index)
{
+ ID id;
+
if (id_index == 0) {
- return 0;
+ id = 0;
}
- VALUE sym = ibf_load_object(load, id_index);
- return rb_sym2id(sym);
+ else {
+ id = load->id_list[(long)id_index];
+
+ if (id == 0) {
+ long *indices = (long *)(load->buff + load->header->id_list_offset);
+ VALUE str = ibf_load_object(load, indices[id_index]);
+ id = NIL_P(str) ? 0 : rb_intern_str(str); /* str == nil -> internal junk id */
+ load->id_list[(long)id_index] = id;
+ }
+ }
+
+ return id;
}
/* dump/load: code */
+static VALUE
+ibf_dump_callinfo(struct ibf_dump *dump, const struct rb_call_info *ci)
+{
+ return (ci->flag & VM_CALL_KWARG) ? Qtrue : Qfalse;
+}
+
static ibf_offset_t ibf_dump_iseq_each(struct ibf_dump *dump, const rb_iseq_t *iseq);
-static int
+static rb_iseq_t *
ibf_dump_iseq(struct ibf_dump *dump, const rb_iseq_t *iseq)
{
if (iseq == NULL) {
- return -1;
+ return (rb_iseq_t *)-1;
}
else {
- return ibf_table_find_or_insert(dump->iseq_table, (st_data_t)iseq);
- }
-}
-
-static unsigned char
-ibf_load_byte(const struct ibf_load *load, ibf_offset_t *offset)
-{
- if (*offset >= load->current_buffer->size) { rb_raise(rb_eRuntimeError, "invalid bytecode"); }
- return (unsigned char)load->current_buffer->buff[(*offset)++];
-}
-
-/*
- * Small uint serialization
- * 0x00000000_00000000 - 0x00000000_0000007f: 1byte | XXXX XXX1 |
- * 0x00000000_00000080 - 0x00000000_00003fff: 2byte | XXXX XX10 | XXXX XXXX |
- * 0x00000000_00004000 - 0x00000000_001fffff: 3byte | XXXX X100 | XXXX XXXX | XXXX XXXX |
- * 0x00000000_00020000 - 0x00000000_0fffffff: 4byte | XXXX 1000 | XXXX XXXX | XXXX XXXX | XXXX XXXX |
- * ...
- * 0x00010000_00000000 - 0x00ffffff_ffffffff: 8byte | 1000 0000 | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX |
- * 0x01000000_00000000 - 0xffffffff_ffffffff: 9byte | 0000 0000 | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX | XXXX XXXX |
- */
-static void
-ibf_dump_write_small_value(struct ibf_dump *dump, VALUE x)
-{
- if (sizeof(VALUE) > 8 || CHAR_BIT != 8) {
- ibf_dump_write(dump, &x, sizeof(VALUE));
- return;
- }
-
- enum { max_byte_length = sizeof(VALUE) + 1 };
-
- unsigned char bytes[max_byte_length];
- ibf_offset_t n;
-
- for (n = 0; n < sizeof(VALUE) && (x >> (7 - n)); n++, x >>= 8) {
- bytes[max_byte_length - 1 - n] = (unsigned char)x;
+ int iseq_index = ibf_table_lookup(dump->iseq_table, (st_data_t)iseq);
+ if (iseq_index < 0) {
+ iseq_index = ibf_table_index(dump->iseq_table, (st_data_t)iseq);
+ rb_ary_store(dump->iseq_list, iseq_index, LONG2NUM(ibf_dump_iseq_each(dump, rb_iseq_check(iseq))));
+ }
+ return (rb_iseq_t *)(VALUE)iseq_index;
}
-
- x <<= 1;
- x |= 1;
- x <<= n;
- bytes[max_byte_length - 1 - n] = (unsigned char)x;
- n++;
-
- ibf_dump_write(dump, bytes + max_byte_length - n, n);
}
static VALUE
-ibf_load_small_value(const struct ibf_load *load, ibf_offset_t *offset)
+ibf_dump_gentry(struct ibf_dump *dump, const struct rb_global_entry *entry)
{
- if (sizeof(VALUE) > 8 || CHAR_BIT != 8) {
- union { char s[sizeof(VALUE)]; VALUE v; } x;
-
- memcpy(x.s, load->current_buffer->buff + *offset, sizeof(VALUE));
- *offset += sizeof(VALUE);
-
- return x.v;
- }
-
- enum { max_byte_length = sizeof(VALUE) + 1 };
-
- const unsigned char *buffer = (const unsigned char *)load->current_buffer->buff;
- const unsigned char c = buffer[*offset];
-
- ibf_offset_t n =
- c & 1 ? 1 :
- c == 0 ? 9 : ntz_int32(c) + 1;
- VALUE x = (VALUE)c >> n;
-
- if (*offset + n > load->current_buffer->size) {
- rb_raise(rb_eRuntimeError, "invalid byte sequence");
- }
-
- ibf_offset_t i;
- for (i = 1; i < n; i++) {
- x <<= 8;
- x |= (VALUE)buffer[*offset + i];
- }
-
- *offset += n;
- return x;
+ return (VALUE)ibf_dump_id(dump, entry->id);
}
-static void
-ibf_dump_builtin(struct ibf_dump *dump, const struct rb_builtin_function *bf)
-{
- // short: index
- // short: name.length
- // bytes: name
- // // omit argc (only verify with name)
- ibf_dump_write_small_value(dump, (VALUE)bf->index);
-
- size_t len = strlen(bf->name);
- ibf_dump_write_small_value(dump, (VALUE)len);
- ibf_dump_write(dump, bf->name, len);
-}
-
-static const struct rb_builtin_function *
-ibf_load_builtin(const struct ibf_load *load, ibf_offset_t *offset)
+static VALUE
+ibf_load_gentry(const struct ibf_load *load, const struct rb_global_entry *entry)
{
- int i = (int)ibf_load_small_value(load, offset);
- int len = (int)ibf_load_small_value(load, offset);
- const char *name = (char *)ibf_load_ptr(load, offset, len);
-
- if (0) {
- fprintf(stderr, "%.*s!!\n", len, name);
- }
-
- const struct rb_builtin_function *table = GET_VM()->builtin_function_table;
- if (table == NULL) rb_raise(rb_eArgError, "builtin function table is not provided");
- if (strncmp(table[i].name, name, len) != 0) {
- rb_raise(rb_eArgError, "builtin function index (%d) mismatch (expect %s but %s)", i, name, table[i].name);
- }
- // fprintf(stderr, "load-builtin: name:%s(%d)\n", table[i].name, table[i].argc);
-
- return &table[i];
+ ID gid = ibf_load_id(load, (ID)(VALUE)entry);
+ return (VALUE)rb_global_entry(gid);
}
-static ibf_offset_t
+static VALUE *
ibf_dump_code(struct ibf_dump *dump, const rb_iseq_t *iseq)
{
- const struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
- const int iseq_size = body->iseq_size;
+ const int iseq_size = iseq->body->iseq_size;
int code_index;
+ VALUE *code;
const VALUE *orig_code = rb_iseq_original_iseq(iseq);
- ibf_offset_t offset = ibf_dump_pos(dump);
+ code = ALLOCA_N(VALUE, iseq_size);
for (code_index=0; code_index<iseq_size;) {
- const VALUE insn = orig_code[code_index++];
- const char *types = insn_op_types(insn);
- int op_index;
-
- /* opcode */
- if (insn >= 0x100) { rb_raise(rb_eRuntimeError, "invalid instruction"); }
- ibf_dump_write_small_value(dump, insn);
-
- /* operands */
- for (op_index=0; types[op_index]; op_index++, code_index++) {
- VALUE op = orig_code[code_index];
- VALUE wv;
-
- switch (types[op_index]) {
- case TS_CDHASH:
- case TS_VALUE:
- wv = ibf_dump_object(dump, op);
- break;
- case TS_ISEQ:
- wv = (VALUE)ibf_dump_iseq(dump, (const rb_iseq_t *)op);
- break;
- case TS_IC:
- {
- IC ic = (IC)op;
- VALUE arr = idlist_to_array(ic->segments);
- wv = ibf_dump_object(dump, arr);
- }
- break;
- case TS_ISE:
- case TS_IVC:
- case TS_ICVARC:
- {
- union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)op;
- wv = is - ISEQ_IS_ENTRY_START(body, types[op_index]);
- }
- break;
- case TS_CALLDATA:
- {
- goto skip_wv;
- }
- case TS_ID:
- wv = ibf_dump_id(dump, (ID)op);
- break;
- case TS_FUNCPTR:
- rb_raise(rb_eRuntimeError, "TS_FUNCPTR is not supported");
- goto skip_wv;
- case TS_BUILTIN:
- ibf_dump_builtin(dump, (const struct rb_builtin_function *)op);
- goto skip_wv;
- default:
- wv = op;
- break;
- }
- ibf_dump_write_small_value(dump, wv);
- skip_wv:;
- }
- assert(insn_len(insn) == op_index+1);
- }
-
- return offset;
+ const VALUE insn = orig_code[code_index];
+ const char *types = insn_op_types(insn);
+ int op_index;
+
+ code[code_index++] = (VALUE)insn;
+
+ for (op_index=0; types[op_index]; op_index++, code_index++) {
+ VALUE op = orig_code[code_index];
+ switch (types[op_index]) {
+ case TS_CDHASH:
+ case TS_VALUE:
+ code[code_index] = ibf_dump_object(dump, op);
+ break;
+ case TS_ISEQ:
+ code[code_index] = (VALUE)ibf_dump_iseq(dump, (const rb_iseq_t *)op);
+ break;
+ case TS_IC:
+ {
+ unsigned int i;
+ for (i=0; i<iseq->body->is_size; i++) {
+ if (op == (VALUE)&iseq->body->is_entries[i]) {
+ break;
+ }
+ }
+ code[code_index] = i;
+ }
+ break;
+ case TS_CALLINFO:
+ code[code_index] = ibf_dump_callinfo(dump, (const struct rb_call_info *)op);
+ break;
+ case TS_CALLCACHE:
+ code[code_index] = 0;
+ break;
+ case TS_ID:
+ code[code_index] = ibf_dump_id(dump, (ID)op);
+ break;
+ case TS_GENTRY:
+ code[code_index] = ibf_dump_gentry(dump, (const struct rb_global_entry *)op);
+ break;
+ case TS_FUNCPTR:
+ rb_raise(rb_eRuntimeError, "TS_FUNCPTR is not supported");
+ break;
+ default:
+ code[code_index] = op;
+ break;
+ }
+ }
+ assert(insn_len(insn) == op_index+1);
+ }
+
+ return IBF_W(code, VALUE, iseq_size);
}
static VALUE *
-ibf_load_code(const struct ibf_load *load, rb_iseq_t *iseq, ibf_offset_t bytecode_offset, ibf_offset_t bytecode_size, unsigned int iseq_size)
+ibf_load_code(const struct ibf_load *load, const rb_iseq_t *iseq, const struct rb_iseq_constant_body *body)
{
- VALUE iseqv = (VALUE)iseq;
- unsigned int code_index;
- ibf_offset_t reading_pos = bytecode_offset;
- VALUE *code = ALLOC_N(VALUE, iseq_size);
-
- struct rb_iseq_constant_body *load_body = ISEQ_BODY(iseq);
- struct rb_call_data *cd_entries = load_body->call_data;
- int ic_index = 0;
-
- iseq_bits_t * mark_offset_bits;
+ const int iseq_size = body->iseq_size;
+ int code_index;
+ VALUE *code = IBF_R(body->iseq_encoded, VALUE, iseq_size);
- iseq_bits_t tmp[1] = {0};
-
- if (ISEQ_MBITS_BUFLEN(iseq_size) == 1) {
- mark_offset_bits = tmp;
- }
- else {
- mark_offset_bits = ZALLOC_N(iseq_bits_t, ISEQ_MBITS_BUFLEN(iseq_size));
- }
- bool needs_bitmap = false;
+ struct rb_call_info *ci_entries = iseq->body->ci_entries;
+ struct rb_call_info_with_kwarg *ci_kw_entries = (struct rb_call_info_with_kwarg *)&iseq->body->ci_entries[iseq->body->ci_size];
+ struct rb_call_cache *cc_entries = iseq->body->cc_entries;
+ union iseq_inline_storage_entry *is_entries = iseq->body->is_entries;
for (code_index=0; code_index<iseq_size;) {
- /* opcode */
- const VALUE insn = code[code_index] = ibf_load_small_value(load, &reading_pos);
- const char *types = insn_op_types(insn);
- int op_index;
-
- code_index++;
-
- /* operands */
- for (op_index=0; types[op_index]; op_index++, code_index++) {
- const char operand_type = types[op_index];
- switch (operand_type) {
- case TS_VALUE:
- {
- VALUE op = ibf_load_small_value(load, &reading_pos);
- VALUE v = ibf_load_object(load, op);
- code[code_index] = v;
- if (!SPECIAL_CONST_P(v)) {
- RB_OBJ_WRITTEN(iseqv, Qundef, v);
- ISEQ_MBITS_SET(mark_offset_bits, code_index);
- needs_bitmap = true;
- }
- break;
- }
- case TS_CDHASH:
- {
- VALUE op = ibf_load_small_value(load, &reading_pos);
- VALUE v = ibf_load_object(load, op);
- v = rb_hash_dup(v); // hash dumped as frozen
- RHASH_TBL_RAW(v)->type = &cdhash_type;
- rb_hash_rehash(v); // hash function changed
- freeze_hide_obj(v);
-
- // Overwrite the existing hash in the object list. This
- // is to keep the object alive during load time.
- // [Bug #17984] [ruby-core:104259]
- pinned_list_store(load->current_buffer->obj_list, (long)op, v);
-
- code[code_index] = v;
- ISEQ_MBITS_SET(mark_offset_bits, code_index);
- RB_OBJ_WRITTEN(iseqv, Qundef, v);
- needs_bitmap = true;
- break;
- }
- case TS_ISEQ:
- {
- VALUE op = (VALUE)ibf_load_small_value(load, &reading_pos);
- VALUE v = (VALUE)ibf_load_iseq(load, (const rb_iseq_t *)op);
- code[code_index] = v;
- if (!SPECIAL_CONST_P(v)) {
- RB_OBJ_WRITTEN(iseqv, Qundef, v);
- ISEQ_MBITS_SET(mark_offset_bits, code_index);
- needs_bitmap = true;
- }
- break;
- }
- case TS_IC:
- {
- VALUE op = ibf_load_small_value(load, &reading_pos);
- VALUE arr = ibf_load_object(load, op);
-
- IC ic = &ISEQ_IS_IC_ENTRY(load_body, ic_index++);
- ic->segments = array_to_idlist(arr);
-
- code[code_index] = (VALUE)ic;
- }
- break;
- case TS_ISE:
- case TS_ICVARC:
- case TS_IVC:
- {
- unsigned int op = (unsigned int)ibf_load_small_value(load, &reading_pos);
-
- ISE ic = ISEQ_IS_ENTRY_START(load_body, operand_type) + op;
- code[code_index] = (VALUE)ic;
-
- if (operand_type == TS_IVC) {
- IVC cache = (IVC)ic;
-
- if (insn == BIN(setinstancevariable)) {
- ID iv_name = (ID)code[code_index - 1];
- cache->iv_set_name = iv_name;
- }
- else {
- cache->iv_set_name = 0;
- }
-
- vm_ic_attr_index_initialize(cache, INVALID_SHAPE_ID);
- }
-
- }
- break;
- case TS_CALLDATA:
- {
- code[code_index] = (VALUE)cd_entries++;
- }
- break;
- case TS_ID:
- {
- VALUE op = ibf_load_small_value(load, &reading_pos);
- code[code_index] = ibf_load_id(load, (ID)(VALUE)op);
- }
- break;
- case TS_FUNCPTR:
- rb_raise(rb_eRuntimeError, "TS_FUNCPTR is not supported");
- break;
- case TS_BUILTIN:
- code[code_index] = (VALUE)ibf_load_builtin(load, &reading_pos);
- break;
- default:
- code[code_index] = ibf_load_small_value(load, &reading_pos);
- continue;
- }
- }
- if (insn_len(insn) != op_index+1) {
- rb_raise(rb_eRuntimeError, "operand size mismatch");
- }
+ const VALUE insn = code[code_index++];
+ const char *types = insn_op_types(insn);
+ int op_index;
+
+ for (op_index=0; types[op_index]; op_index++, code_index++) {
+ VALUE op = code[code_index];
+
+ switch (types[op_index]) {
+ case TS_CDHASH:
+ case TS_VALUE:
+ code[code_index] = ibf_load_object(load, op);
+ break;
+ case TS_ISEQ:
+ code[code_index] = (VALUE)ibf_load_iseq(load, (const rb_iseq_t *)op);
+ break;
+ case TS_IC:
+ code[code_index] = (VALUE)&is_entries[(int)op];
+ break;
+ case TS_CALLINFO:
+ code[code_index] = op ? (VALUE)ci_kw_entries++ : (VALUE)ci_entries++; /* op is Qtrue (kw) or Qfalse (!kw) */
+ break;
+ case TS_CALLCACHE:
+ code[code_index] = (VALUE)cc_entries++;
+ break;
+ case TS_ID:
+ code[code_index] = ibf_load_id(load, (ID)op);
+ break;
+ case TS_GENTRY:
+ code[code_index] = ibf_load_gentry(load, (const struct rb_global_entry *)op);
+ break;
+ case TS_FUNCPTR:
+ rb_raise(rb_eRuntimeError, "TS_FUNCPTR is not supported");
+ break;
+ default:
+ /* code[code_index] = op; */
+ break;
+ }
+ }
+ if (insn_len(insn) != op_index+1) {
+ rb_raise(rb_eRuntimeError, "operand size mismatch");
+ }
}
- load_body->iseq_encoded = code;
- load_body->iseq_size = code_index;
-
- if (ISEQ_MBITS_BUFLEN(load_body->iseq_size) == 1) {
- load_body->mark_bits.single = mark_offset_bits[0];
- }
- else {
- if (needs_bitmap) {
- load_body->mark_bits.list = mark_offset_bits;
- }
- else {
- load_body->mark_bits.list = 0;
- ruby_xfree(mark_offset_bits);
- }
- }
- assert(code_index == iseq_size);
- assert(reading_pos == bytecode_offset + bytecode_size);
return code;
}
-static ibf_offset_t
+static VALUE *
ibf_dump_param_opt_table(struct ibf_dump *dump, const rb_iseq_t *iseq)
{
- int opt_num = ISEQ_BODY(iseq)->param.opt_num;
+ int opt_num = iseq->body->param.opt_num;
if (opt_num > 0) {
- IBF_W_ALIGN(VALUE);
- return ibf_dump_write(dump, ISEQ_BODY(iseq)->param.opt_table, sizeof(VALUE) * (opt_num + 1));
+ return IBF_W(iseq->body->param.opt_table, VALUE, opt_num + 1);
}
else {
- return ibf_dump_pos(dump);
+ return NULL;
}
}
static VALUE *
-ibf_load_param_opt_table(const struct ibf_load *load, ibf_offset_t opt_table_offset, int opt_num)
+ibf_load_param_opt_table(const struct ibf_load *load, const struct rb_iseq_constant_body *body)
{
+ int opt_num = body->param.opt_num;
+
if (opt_num > 0) {
- VALUE *table = ALLOC_N(VALUE, opt_num+1);
- MEMCPY(table, load->current_buffer->buff + opt_table_offset, VALUE, opt_num+1);
- return table;
+ ibf_offset_t offset = IBF_OFFSET(body->param.opt_table);
+ VALUE *table = ALLOC_N(VALUE, opt_num+1);
+ MEMCPY(table, load->buff + offset, VALUE, opt_num+1);
+ return table;
}
else {
- return NULL;
+ return NULL;
}
}
-static ibf_offset_t
+static struct rb_iseq_param_keyword *
ibf_dump_param_keyword(struct ibf_dump *dump, const rb_iseq_t *iseq)
{
- const struct rb_iseq_param_keyword *kw = ISEQ_BODY(iseq)->param.keyword;
+ const struct rb_iseq_param_keyword *kw = iseq->body->param.keyword;
if (kw) {
- struct rb_iseq_param_keyword dump_kw = *kw;
- int dv_num = kw->num - kw->required_num;
- ID *ids = kw->num > 0 ? ALLOCA_N(ID, kw->num) : NULL;
- VALUE *dvs = dv_num > 0 ? ALLOCA_N(VALUE, dv_num) : NULL;
- int i;
+ struct rb_iseq_param_keyword dump_kw = *kw;
+ int dv_num = kw->num - kw->required_num;
+ ID *ids = kw->num > 0 ? ALLOCA_N(ID, kw->num) : NULL;
+ VALUE *dvs = dv_num > 0 ? ALLOCA_N(VALUE, dv_num) : NULL;
+ int i;
- for (i=0; i<kw->num; i++) ids[i] = (ID)ibf_dump_id(dump, kw->table[i]);
- for (i=0; i<dv_num; i++) dvs[i] = (VALUE)ibf_dump_object(dump, kw->default_values[i]);
+ for (i=0; i<kw->num; i++) ids[i] = (ID)ibf_dump_id(dump, kw->table[i]);
+ for (i=0; i<dv_num; i++) dvs[i] = (VALUE)ibf_dump_object(dump, kw->default_values[i]);
- dump_kw.table = IBF_W(ids, ID, kw->num);
- dump_kw.default_values = IBF_W(dvs, VALUE, dv_num);
- IBF_W_ALIGN(struct rb_iseq_param_keyword);
- return ibf_dump_write(dump, &dump_kw, sizeof(struct rb_iseq_param_keyword) * 1);
+ dump_kw.table = IBF_W(ids, ID, kw->num);
+ dump_kw.default_values = IBF_W(dvs, VALUE, dv_num);
+ return IBF_W(&dump_kw, struct rb_iseq_param_keyword, 1);
}
else {
- return 0;
+ return NULL;
}
}
static const struct rb_iseq_param_keyword *
-ibf_load_param_keyword(const struct ibf_load *load, ibf_offset_t param_keyword_offset)
-{
- if (param_keyword_offset) {
- struct rb_iseq_param_keyword *kw = IBF_R(param_keyword_offset, struct rb_iseq_param_keyword, 1);
- ID *ids = IBF_R(kw->table, ID, kw->num);
- int dv_num = kw->num - kw->required_num;
- VALUE *dvs = IBF_R(kw->default_values, VALUE, dv_num);
- int i;
-
- for (i=0; i<kw->num; i++) {
- ids[i] = ibf_load_id(load, ids[i]);
- }
- for (i=0; i<dv_num; i++) {
- dvs[i] = ibf_load_object(load, dvs[i]);
- }
-
- kw->table = ids;
- kw->default_values = dvs;
- return kw;
+ibf_load_param_keyword(const struct ibf_load *load, const struct rb_iseq_constant_body *body)
+{
+ if (body->param.keyword) {
+ struct rb_iseq_param_keyword *kw = IBF_R(body->param.keyword, struct rb_iseq_param_keyword, 1);
+ ID *ids = IBF_R(kw->table, ID, kw->num);
+ int dv_num = kw->num - kw->required_num;
+ VALUE *dvs = IBF_R(kw->default_values, VALUE, dv_num);
+ int i;
+
+ for (i=0; i<kw->num; i++) {
+ ids[i] = ibf_load_id(load, ids[i]);
+ }
+ for (i=0; i<dv_num; i++) {
+ dvs[i] = ibf_load_object(load, dvs[i]);
+ }
+
+ kw->table = ids;
+ kw->default_values = dvs;
+ return kw;
}
else {
- return NULL;
+ return NULL;
}
}
-static ibf_offset_t
-ibf_dump_insns_info_body(struct ibf_dump *dump, const rb_iseq_t *iseq)
-{
- ibf_offset_t offset = ibf_dump_pos(dump);
- const struct iseq_insn_info_entry *entries = ISEQ_BODY(iseq)->insns_info.body;
-
- unsigned int i;
- for (i = 0; i < ISEQ_BODY(iseq)->insns_info.size; i++) {
- ibf_dump_write_small_value(dump, entries[i].line_no);
-#ifdef USE_ISEQ_NODE_ID
- ibf_dump_write_small_value(dump, entries[i].node_id);
-#endif
- ibf_dump_write_small_value(dump, entries[i].events);
- }
-
- return offset;
-}
-
static struct iseq_insn_info_entry *
-ibf_load_insns_info_body(const struct ibf_load *load, ibf_offset_t body_offset, unsigned int size)
+ibf_dump_insns_info(struct ibf_dump *dump, const rb_iseq_t *iseq)
{
- ibf_offset_t reading_pos = body_offset;
- struct iseq_insn_info_entry *entries = ALLOC_N(struct iseq_insn_info_entry, size);
-
- unsigned int i;
- for (i = 0; i < size; i++) {
- entries[i].line_no = (int)ibf_load_small_value(load, &reading_pos);
-#ifdef USE_ISEQ_NODE_ID
- entries[i].node_id = (int)ibf_load_small_value(load, &reading_pos);
-#endif
- entries[i].events = (rb_event_flag_t)ibf_load_small_value(load, &reading_pos);
- }
-
- return entries;
+ return IBF_W(iseq->body->insns_info, struct iseq_insn_info_entry, iseq->body->insns_info_size);
}
-static ibf_offset_t
-ibf_dump_insns_info_positions(struct ibf_dump *dump, const unsigned int *positions, unsigned int size)
-{
- ibf_offset_t offset = ibf_dump_pos(dump);
-
- unsigned int last = 0;
- unsigned int i;
- for (i = 0; i < size; i++) {
- ibf_dump_write_small_value(dump, positions[i] - last);
- last = positions[i];
- }
-
- return offset;
-}
-
-static unsigned int *
-ibf_load_insns_info_positions(const struct ibf_load *load, ibf_offset_t positions_offset, unsigned int size)
+static struct iseq_insn_info_entry *
+ibf_load_insns_info(const struct ibf_load *load, const struct rb_iseq_constant_body *body)
{
- ibf_offset_t reading_pos = positions_offset;
- unsigned int *positions = ALLOC_N(unsigned int, size);
-
- unsigned int last = 0;
- unsigned int i;
- for (i = 0; i < size; i++) {
- positions[i] = last + (unsigned int)ibf_load_small_value(load, &reading_pos);
- last = positions[i];
- }
-
- return positions;
+ return IBF_R(body->insns_info, struct iseq_insn_info_entry, body->insns_info_size);
}
-static ibf_offset_t
+static ID *
ibf_dump_local_table(struct ibf_dump *dump, const rb_iseq_t *iseq)
{
- const struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
- const int size = body->local_table_size;
+ const int size = iseq->body->local_table_size;
ID *table = ALLOCA_N(ID, size);
int i;
for (i=0; i<size; i++) {
- table[i] = ibf_dump_id(dump, body->local_table[i]);
+ table[i] = ibf_dump_id(dump, iseq->body->local_table[i]);
}
- IBF_W_ALIGN(ID);
- return ibf_dump_write(dump, table, sizeof(ID) * size);
+ return IBF_W(table, ID, size);
}
static ID *
-ibf_load_local_table(const struct ibf_load *load, ibf_offset_t local_table_offset, int size)
+ibf_load_local_table(const struct ibf_load *load, const struct rb_iseq_constant_body *body)
{
+ const int size = body->local_table_size;
+
if (size > 0) {
- ID *table = IBF_R(local_table_offset, ID, size);
- int i;
+ ID *table = IBF_R(body->local_table, ID, size);
+ int i;
- for (i=0; i<size; i++) {
- table[i] = ibf_load_id(load, table[i]);
- }
- return table;
+ for (i=0; i<size; i++) {
+ table[i] = ibf_load_id(load, table[i]);
+ }
+ return table;
}
else {
- return NULL;
+ return NULL;
}
}
-static ibf_offset_t
+static struct iseq_catch_table *
ibf_dump_catch_table(struct ibf_dump *dump, const rb_iseq_t *iseq)
{
- const struct iseq_catch_table *table = ISEQ_BODY(iseq)->catch_table;
+ const struct iseq_catch_table *table = iseq->body->catch_table;
if (table) {
- int *iseq_indices = ALLOCA_N(int, table->size);
- unsigned int i;
-
- for (i=0; i<table->size; i++) {
- iseq_indices[i] = ibf_dump_iseq(dump, table->entries[i].iseq);
- }
-
- const ibf_offset_t offset = ibf_dump_pos(dump);
-
- for (i=0; i<table->size; i++) {
- ibf_dump_write_small_value(dump, iseq_indices[i]);
- ibf_dump_write_small_value(dump, table->entries[i].type);
- ibf_dump_write_small_value(dump, table->entries[i].start);
- ibf_dump_write_small_value(dump, table->entries[i].end);
- ibf_dump_write_small_value(dump, table->entries[i].cont);
- ibf_dump_write_small_value(dump, table->entries[i].sp);
- }
- return offset;
+ int byte_size = iseq_catch_table_bytes(iseq->body->catch_table->size);
+ struct iseq_catch_table *dump_table = (struct iseq_catch_table *)ALLOCA_N(char, byte_size);
+ unsigned int i;
+ dump_table->size = table->size;
+ for (i=0; i<table->size; i++) {
+ dump_table->entries[i] = table->entries[i];
+ dump_table->entries[i].iseq = ibf_dump_iseq(dump, table->entries[i].iseq);
+ }
+ return (struct iseq_catch_table *)(VALUE)ibf_dump_write(dump, dump_table, byte_size);
}
else {
- return ibf_dump_pos(dump);
+ return NULL;
}
}
static struct iseq_catch_table *
-ibf_load_catch_table(const struct ibf_load *load, ibf_offset_t catch_table_offset, unsigned int size)
-{
- if (size) {
- struct iseq_catch_table *table = ruby_xmalloc(iseq_catch_table_bytes(size));
- table->size = size;
-
- ibf_offset_t reading_pos = catch_table_offset;
-
- unsigned int i;
- for (i=0; i<table->size; i++) {
- int iseq_index = (int)ibf_load_small_value(load, &reading_pos);
- table->entries[i].type = (enum rb_catch_type)ibf_load_small_value(load, &reading_pos);
- table->entries[i].start = (unsigned int)ibf_load_small_value(load, &reading_pos);
- table->entries[i].end = (unsigned int)ibf_load_small_value(load, &reading_pos);
- table->entries[i].cont = (unsigned int)ibf_load_small_value(load, &reading_pos);
- table->entries[i].sp = (unsigned int)ibf_load_small_value(load, &reading_pos);
-
- table->entries[i].iseq = ibf_load_iseq(load, (const rb_iseq_t *)(VALUE)iseq_index);
- }
- return table;
+ibf_load_catch_table(const struct ibf_load *load, const struct rb_iseq_constant_body *body)
+{
+ if (body->catch_table) {
+ struct iseq_catch_table *table;
+ unsigned int i;
+ unsigned int size;
+ size = *(unsigned int *)(load->buff + IBF_OFFSET(body->catch_table));
+ table = ibf_load_alloc(load, IBF_OFFSET(body->catch_table), iseq_catch_table_bytes(size));
+ for (i=0; i<size; i++) {
+ table->entries[i].iseq = ibf_load_iseq(load, table->entries[i].iseq);
+ }
+ return table;
}
else {
- return NULL;
+ return NULL;
}
}
-static ibf_offset_t
+static struct rb_call_info *
ibf_dump_ci_entries(struct ibf_dump *dump, const rb_iseq_t *iseq)
{
- const struct rb_iseq_constant_body *const body = ISEQ_BODY(iseq);
- const unsigned int ci_size = body->ci_size;
- const struct rb_call_data *cds = body->call_data;
-
- ibf_offset_t offset = ibf_dump_pos(dump);
-
+ const unsigned int ci_size = iseq->body->ci_size;
+ const unsigned int ci_kw_size = iseq->body->ci_kw_size;
+ const struct rb_call_info *ci_entries = iseq->body->ci_entries;
+ struct rb_call_info *dump_ci_entries;
+ struct rb_call_info_with_kwarg *dump_ci_kw_entries;
+ int byte_size = ci_size * sizeof(struct rb_call_info) +
+ ci_kw_size * sizeof(struct rb_call_info_with_kwarg);
unsigned int i;
- for (i = 0; i < ci_size; i++) {
- const struct rb_callinfo *ci = cds[i].ci;
- if (ci != NULL) {
- ibf_dump_write_small_value(dump, ibf_dump_id(dump, vm_ci_mid(ci)));
- ibf_dump_write_small_value(dump, vm_ci_flag(ci));
- ibf_dump_write_small_value(dump, vm_ci_argc(ci));
-
- const struct rb_callinfo_kwarg *kwarg = vm_ci_kwarg(ci);
- if (kwarg) {
- int len = kwarg->keyword_len;
- ibf_dump_write_small_value(dump, len);
- for (int j=0; j<len; j++) {
- VALUE keyword = ibf_dump_object(dump, kwarg->keywords[j]);
- ibf_dump_write_small_value(dump, keyword);
- }
- }
- else {
- ibf_dump_write_small_value(dump, 0);
- }
- }
- else {
- // TODO: truncate NULL ci from call_data.
- ibf_dump_write_small_value(dump, (VALUE)-1);
- }
- }
-
- return offset;
-}
-
-static enum rb_id_table_iterator_result
-dump_outer_variable(ID id, VALUE val, void *dump)
-{
- ibf_dump_write_small_value(dump, ibf_dump_id(dump, id));
- ibf_dump_write_small_value(dump, val);
-
- return ID_TABLE_CONTINUE;
-}
-
-static ibf_offset_t
-ibf_dump_outer_variables(struct ibf_dump *dump, const rb_iseq_t *iseq)
-{
- struct rb_id_table * ovs = ISEQ_BODY(iseq)->outer_variables;
-
- ibf_offset_t offset = ibf_dump_pos(dump);
+ dump_ci_entries = (struct rb_call_info *)ALLOCA_N(char, byte_size);
+ dump_ci_kw_entries = (struct rb_call_info_with_kwarg *)&dump_ci_entries[ci_size];
+ memcpy(dump_ci_entries, ci_entries, byte_size);
- if (ovs) {
- ibf_dump_write_small_value(dump, (VALUE)rb_id_table_size(ovs));
- rb_id_table_foreach(ovs, dump_outer_variable, (void *)dump);
+ for (i=0; i<ci_size; i++) { /* conver ID for each ci */
+ dump_ci_entries[i].mid = ibf_dump_id(dump, dump_ci_entries[i].mid);
}
- else {
- ibf_dump_write_small_value(dump, (VALUE)0);
- }
-
- return offset;
-}
+ for (i=0; i<ci_kw_size; i++) {
+ const struct rb_call_info_kw_arg *kw_arg = dump_ci_kw_entries[i].kw_arg;
+ int j;
+ VALUE *keywords = ALLOCA_N(VALUE, kw_arg->keyword_len);
+ for (j=0; j<kw_arg->keyword_len; j++) {
+ keywords[j] = (VALUE)ibf_dump_object(dump, kw_arg->keywords[j]); /* kw_arg->keywords[n] is Symbol */
+ }
+ dump_ci_kw_entries[i].kw_arg = (struct rb_call_info_kw_arg *)(VALUE)ibf_dump_write(dump, &kw_arg->keyword_len, sizeof(int));
+ ibf_dump_write(dump, keywords, sizeof(VALUE) * kw_arg->keyword_len);
-/* note that we dump out rb_call_info but load back rb_call_data */
-static void
-ibf_load_ci_entries(const struct ibf_load *load,
- ibf_offset_t ci_entries_offset,
- unsigned int ci_size,
- struct rb_call_data **cd_ptr)
-{
- ibf_offset_t reading_pos = ci_entries_offset;
-
- unsigned int i;
-
- struct rb_call_data *cds = ZALLOC_N(struct rb_call_data, ci_size);
- *cd_ptr = cds;
-
- for (i = 0; i < ci_size; i++) {
- VALUE mid_index = ibf_load_small_value(load, &reading_pos);
- if (mid_index != (VALUE)-1) {
- ID mid = ibf_load_id(load, mid_index);
- unsigned int flag = (unsigned int)ibf_load_small_value(load, &reading_pos);
- unsigned int argc = (unsigned int)ibf_load_small_value(load, &reading_pos);
-
- struct rb_callinfo_kwarg *kwarg = NULL;
- int kwlen = (int)ibf_load_small_value(load, &reading_pos);
- if (kwlen > 0) {
- kwarg = rb_xmalloc_mul_add(kwlen, sizeof(VALUE), sizeof(struct rb_callinfo_kwarg));
- kwarg->keyword_len = kwlen;
- for (int j=0; j<kwlen; j++) {
- VALUE keyword = ibf_load_small_value(load, &reading_pos);
- kwarg->keywords[j] = ibf_load_object(load, keyword);
- }
- }
-
- cds[i].ci = vm_ci_new(mid, flag, argc, kwarg);
- RB_OBJ_WRITTEN(load->iseq, Qundef, cds[i].ci);
- cds[i].cc = vm_cc_empty();
- }
- else {
- // NULL ci
- cds[i].ci = NULL;
- cds[i].cc = NULL;
- }
+ dump_ci_kw_entries[i].ci.mid = ibf_dump_id(dump, dump_ci_kw_entries[i].ci.mid);
}
+ return (struct rb_call_info *)(VALUE)ibf_dump_write(dump, dump_ci_entries, byte_size);
}
-static struct rb_id_table *
-ibf_load_outer_variables(const struct ibf_load * load, ibf_offset_t outer_variables_offset)
+static struct rb_call_info *
+ibf_load_ci_entries(const struct ibf_load *load, const struct rb_iseq_constant_body *body)
{
- ibf_offset_t reading_pos = outer_variables_offset;
-
- struct rb_id_table *tbl = NULL;
-
- size_t table_size = (size_t)ibf_load_small_value(load, &reading_pos);
+ unsigned int i;
+ const unsigned int ci_size = body->ci_size;
+ const unsigned int ci_kw_size = body->ci_kw_size;
+ struct rb_call_info *ci_entries = ibf_load_alloc(load, IBF_OFFSET(body->ci_entries),
+ sizeof(struct rb_call_info) * body->ci_size +
+ sizeof(struct rb_call_info_with_kwarg) * body->ci_kw_size);
+ struct rb_call_info_with_kwarg *ci_kw_entries = (struct rb_call_info_with_kwarg *)&ci_entries[ci_size];
- if (table_size > 0) {
- tbl = rb_id_table_create(table_size);
+ for (i=0; i<ci_size; i++) {
+ ci_entries[i].mid = ibf_load_id(load, ci_entries[i].mid);
}
-
- for (size_t i = 0; i < table_size; i++) {
- ID key = ibf_load_id(load, (ID)ibf_load_small_value(load, &reading_pos));
- VALUE value = ibf_load_small_value(load, &reading_pos);
- if (!key) key = rb_make_temporary_id(i);
- rb_id_table_insert(tbl, key, value);
+ for (i=0; i<ci_kw_size; i++) {
+ int j;
+ ibf_offset_t kw_arg_offset = IBF_OFFSET(ci_kw_entries[i].kw_arg);
+ const int keyword_len = *(int *)(load->buff + kw_arg_offset);
+ const VALUE *keywords = (VALUE *)(load->buff + kw_arg_offset + sizeof(int));
+ struct rb_call_info_kw_arg *kw_arg = ruby_xmalloc(sizeof(struct rb_call_info_kw_arg) + sizeof(VALUE) * (keyword_len - 1));
+ kw_arg->keyword_len = keyword_len;
+ for (j=0; j<kw_arg->keyword_len; j++) {
+ kw_arg->keywords[j] = (VALUE)ibf_load_object(load, keywords[j]);
+ }
+ ci_kw_entries[i].kw_arg = kw_arg;
+ ci_kw_entries[i].ci.mid = ibf_load_id(load, ci_kw_entries[i].ci.mid);
}
- return tbl;
+ return ci_entries;
}
static ibf_offset_t
ibf_dump_iseq_each(struct ibf_dump *dump, const rb_iseq_t *iseq)
{
- assert(dump->current_buffer == &dump->global_buffer);
-
- unsigned int *positions;
+ struct rb_iseq_constant_body dump_body;
+ dump_body = *iseq->body;
- const struct rb_iseq_constant_body *body = ISEQ_BODY(iseq);
+ dump_body.location.pathobj = ibf_dump_object(dump, dump_body.location.pathobj); /* TODO: freeze */
+ dump_body.location.base_label = ibf_dump_object(dump, dump_body.location.base_label);
+ dump_body.location.label = ibf_dump_object(dump, dump_body.location.label);
- const VALUE location_pathobj_index = ibf_dump_object(dump, body->location.pathobj); /* TODO: freeze */
- const VALUE location_base_label_index = ibf_dump_object(dump, body->location.base_label);
- const VALUE location_label_index = ibf_dump_object(dump, body->location.label);
+ dump_body.iseq_encoded = ibf_dump_code(dump, iseq);
+ dump_body.param.opt_table = ibf_dump_param_opt_table(dump, iseq);
+ dump_body.param.keyword = ibf_dump_param_keyword(dump, iseq);
+ dump_body.insns_info = ibf_dump_insns_info(dump, iseq);
+ dump_body.local_table = ibf_dump_local_table(dump, iseq);
+ dump_body.catch_table = ibf_dump_catch_table(dump, iseq);
+ dump_body.parent_iseq = ibf_dump_iseq(dump, iseq->body->parent_iseq);
+ dump_body.local_iseq = ibf_dump_iseq(dump, iseq->body->local_iseq);
+ dump_body.is_entries = NULL;
+ dump_body.ci_entries = ibf_dump_ci_entries(dump, iseq);
+ dump_body.cc_entries = NULL;
+ dump_body.mark_ary = ISEQ_FLIP_CNT(iseq);
-#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
- ibf_offset_t iseq_start = ibf_dump_pos(dump);
-
- struct ibf_dump_buffer *saved_buffer = dump->current_buffer;
- struct ibf_dump_buffer buffer;
- buffer.str = rb_str_new(0, 0);
- buffer.obj_table = ibf_dump_object_table_new();
- dump->current_buffer = &buffer;
-#endif
-
- const ibf_offset_t bytecode_offset = ibf_dump_code(dump, iseq);
- const ibf_offset_t bytecode_size = ibf_dump_pos(dump) - bytecode_offset;
- const ibf_offset_t param_opt_table_offset = ibf_dump_param_opt_table(dump, iseq);
- const ibf_offset_t param_keyword_offset = ibf_dump_param_keyword(dump, iseq);
- const ibf_offset_t insns_info_body_offset = ibf_dump_insns_info_body(dump, iseq);
-
- positions = rb_iseq_insns_info_decode_positions(ISEQ_BODY(iseq));
- const ibf_offset_t insns_info_positions_offset = ibf_dump_insns_info_positions(dump, positions, body->insns_info.size);
- ruby_xfree(positions);
-
- const ibf_offset_t local_table_offset = ibf_dump_local_table(dump, iseq);
- const unsigned int catch_table_size = body->catch_table ? body->catch_table->size : 0;
- const ibf_offset_t catch_table_offset = ibf_dump_catch_table(dump, iseq);
- const int parent_iseq_index = ibf_dump_iseq(dump, ISEQ_BODY(iseq)->parent_iseq);
- const int local_iseq_index = ibf_dump_iseq(dump, ISEQ_BODY(iseq)->local_iseq);
- const int mandatory_only_iseq_index = ibf_dump_iseq(dump, ISEQ_BODY(iseq)->mandatory_only_iseq);
- const ibf_offset_t ci_entries_offset = ibf_dump_ci_entries(dump, iseq);
- const ibf_offset_t outer_variables_offset = ibf_dump_outer_variables(dump, iseq);
-
-#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
- ibf_offset_t local_obj_list_offset;
- unsigned int local_obj_list_size;
-
- ibf_dump_object_list(dump, &local_obj_list_offset, &local_obj_list_size);
-#endif
-
- ibf_offset_t body_offset = ibf_dump_pos(dump);
-
- /* dump the constant body */
- unsigned int param_flags =
- (body->param.flags.has_lead << 0) |
- (body->param.flags.has_opt << 1) |
- (body->param.flags.has_rest << 2) |
- (body->param.flags.has_post << 3) |
- (body->param.flags.has_kw << 4) |
- (body->param.flags.has_kwrest << 5) |
- (body->param.flags.has_block << 6) |
- (body->param.flags.ambiguous_param0 << 7) |
- (body->param.flags.accepts_no_kwarg << 8) |
- (body->param.flags.ruby2_keywords << 9);
-
-#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
-# define IBF_BODY_OFFSET(x) (x)
-#else
-# define IBF_BODY_OFFSET(x) (body_offset - (x))
-#endif
-
- ibf_dump_write_small_value(dump, body->type);
- ibf_dump_write_small_value(dump, body->iseq_size);
- ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(bytecode_offset));
- ibf_dump_write_small_value(dump, bytecode_size);
- ibf_dump_write_small_value(dump, param_flags);
- ibf_dump_write_small_value(dump, body->param.size);
- ibf_dump_write_small_value(dump, body->param.lead_num);
- ibf_dump_write_small_value(dump, body->param.opt_num);
- ibf_dump_write_small_value(dump, body->param.rest_start);
- ibf_dump_write_small_value(dump, body->param.post_start);
- ibf_dump_write_small_value(dump, body->param.post_num);
- ibf_dump_write_small_value(dump, body->param.block_start);
- ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(param_opt_table_offset));
- ibf_dump_write_small_value(dump, param_keyword_offset);
- ibf_dump_write_small_value(dump, location_pathobj_index);
- ibf_dump_write_small_value(dump, location_base_label_index);
- ibf_dump_write_small_value(dump, location_label_index);
- ibf_dump_write_small_value(dump, body->location.first_lineno);
- ibf_dump_write_small_value(dump, body->location.node_id);
- ibf_dump_write_small_value(dump, body->location.code_location.beg_pos.lineno);
- ibf_dump_write_small_value(dump, body->location.code_location.beg_pos.column);
- ibf_dump_write_small_value(dump, body->location.code_location.end_pos.lineno);
- ibf_dump_write_small_value(dump, body->location.code_location.end_pos.column);
- ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(insns_info_body_offset));
- ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(insns_info_positions_offset));
- ibf_dump_write_small_value(dump, body->insns_info.size);
- ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(local_table_offset));
- ibf_dump_write_small_value(dump, catch_table_size);
- ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(catch_table_offset));
- ibf_dump_write_small_value(dump, parent_iseq_index);
- ibf_dump_write_small_value(dump, local_iseq_index);
- ibf_dump_write_small_value(dump, mandatory_only_iseq_index);
- ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(ci_entries_offset));
- ibf_dump_write_small_value(dump, IBF_BODY_OFFSET(outer_variables_offset));
- ibf_dump_write_small_value(dump, body->variable.flip_count);
- ibf_dump_write_small_value(dump, body->local_table_size);
- ibf_dump_write_small_value(dump, body->ivc_size);
- ibf_dump_write_small_value(dump, body->icvarc_size);
- ibf_dump_write_small_value(dump, body->ise_size);
- ibf_dump_write_small_value(dump, body->ic_size);
- ibf_dump_write_small_value(dump, body->ci_size);
- ibf_dump_write_small_value(dump, body->stack_max);
- ibf_dump_write_small_value(dump, body->builtin_attrs);
-
-#undef IBF_BODY_OFFSET
-
-#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
- ibf_offset_t iseq_length_bytes = ibf_dump_pos(dump);
-
- dump->current_buffer = saved_buffer;
- ibf_dump_write(dump, RSTRING_PTR(buffer.str), iseq_length_bytes);
-
- ibf_offset_t offset = ibf_dump_pos(dump);
- ibf_dump_write_small_value(dump, iseq_start);
- ibf_dump_write_small_value(dump, iseq_length_bytes);
- ibf_dump_write_small_value(dump, body_offset);
-
- ibf_dump_write_small_value(dump, local_obj_list_offset);
- ibf_dump_write_small_value(dump, local_obj_list_size);
-
- st_free_table(buffer.obj_table); // TODO: this leaks in case of exception
-
- return offset;
-#else
- return body_offset;
-#endif
+ return ibf_dump_write(dump, &dump_body, sizeof(dump_body));
}
static VALUE
@@ -12230,242 +8658,132 @@ ibf_load_location_str(const struct ibf_load *load, VALUE str_index)
{
VALUE str = ibf_load_object(load, str_index);
if (str != Qnil) {
- str = rb_fstring(str);
+ str = rb_fstring(str);
}
return str;
}
static void
-ibf_load_iseq_each(struct ibf_load *load, rb_iseq_t *iseq, ibf_offset_t offset)
+ibf_load_iseq_each(const struct ibf_load *load, rb_iseq_t *iseq, ibf_offset_t offset)
{
- struct rb_iseq_constant_body *load_body = ISEQ_BODY(iseq) = rb_iseq_constant_body_alloc();
-
- ibf_offset_t reading_pos = offset;
-
-#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
- struct ibf_load_buffer *saved_buffer = load->current_buffer;
- load->current_buffer = &load->global_buffer;
-
- const ibf_offset_t iseq_start = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
- const ibf_offset_t iseq_length_bytes = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
- const ibf_offset_t body_offset = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
+ struct rb_iseq_constant_body *load_body = iseq->body = ZALLOC(struct rb_iseq_constant_body);
+ const struct rb_iseq_constant_body *body = (struct rb_iseq_constant_body *)(load->buff + offset);
- struct ibf_load_buffer buffer;
- buffer.buff = load->global_buffer.buff + iseq_start;
- buffer.size = iseq_length_bytes;
- buffer.obj_list_offset = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
- buffer.obj_list_size = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
- buffer.obj_list = pinned_list_new(buffer.obj_list_size);
+ /* memcpy(load_body, load->buff + offset, sizeof(*load_body)); */
+ load_body->type = body->type;
+ load_body->stack_max = body->stack_max;
+ load_body->iseq_size = body->iseq_size;
+ load_body->param = body->param;
+ load_body->local_table_size = body->local_table_size;
+ load_body->is_size = body->is_size;
+ load_body->ci_size = body->ci_size;
+ load_body->ci_kw_size = body->ci_kw_size;
+ load_body->insns_info_size = body->insns_info_size;
- load->current_buffer = &buffer;
- reading_pos = body_offset;
-#endif
+ RB_OBJ_WRITE(iseq, &load_body->mark_ary, iseq_mark_ary_create((int)body->mark_ary));
-#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
-# define IBF_BODY_OFFSET(x) (x)
-#else
-# define IBF_BODY_OFFSET(x) (offset - (x))
-#endif
-
- const unsigned int type = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const unsigned int iseq_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const ibf_offset_t bytecode_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
- const ibf_offset_t bytecode_size = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
- const unsigned int param_flags = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const unsigned int param_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const int param_lead_num = (int)ibf_load_small_value(load, &reading_pos);
- const int param_opt_num = (int)ibf_load_small_value(load, &reading_pos);
- const int param_rest_start = (int)ibf_load_small_value(load, &reading_pos);
- const int param_post_start = (int)ibf_load_small_value(load, &reading_pos);
- const int param_post_num = (int)ibf_load_small_value(load, &reading_pos);
- const int param_block_start = (int)ibf_load_small_value(load, &reading_pos);
- const ibf_offset_t param_opt_table_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
- const ibf_offset_t param_keyword_offset = (ibf_offset_t)ibf_load_small_value(load, &reading_pos);
- const VALUE location_pathobj_index = ibf_load_small_value(load, &reading_pos);
- const VALUE location_base_label_index = ibf_load_small_value(load, &reading_pos);
- const VALUE location_label_index = ibf_load_small_value(load, &reading_pos);
- const int location_first_lineno = (int)ibf_load_small_value(load, &reading_pos);
- const int location_node_id = (int)ibf_load_small_value(load, &reading_pos);
- const int location_code_location_beg_pos_lineno = (int)ibf_load_small_value(load, &reading_pos);
- const int location_code_location_beg_pos_column = (int)ibf_load_small_value(load, &reading_pos);
- const int location_code_location_end_pos_lineno = (int)ibf_load_small_value(load, &reading_pos);
- const int location_code_location_end_pos_column = (int)ibf_load_small_value(load, &reading_pos);
- const ibf_offset_t insns_info_body_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
- const ibf_offset_t insns_info_positions_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
- const unsigned int insns_info_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const ibf_offset_t local_table_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
- const unsigned int catch_table_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const ibf_offset_t catch_table_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
- const int parent_iseq_index = (int)ibf_load_small_value(load, &reading_pos);
- const int local_iseq_index = (int)ibf_load_small_value(load, &reading_pos);
- const int mandatory_only_iseq_index = (int)ibf_load_small_value(load, &reading_pos);
- const ibf_offset_t ci_entries_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
- const ibf_offset_t outer_variables_offset = (ibf_offset_t)IBF_BODY_OFFSET(ibf_load_small_value(load, &reading_pos));
- const rb_snum_t variable_flip_count = (rb_snum_t)ibf_load_small_value(load, &reading_pos);
- const unsigned int local_table_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
-
- const unsigned int ivc_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const unsigned int icvarc_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const unsigned int ise_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const unsigned int ic_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
-
- const unsigned int ci_size = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const unsigned int stack_max = (unsigned int)ibf_load_small_value(load, &reading_pos);
- const unsigned int builtin_attrs = (unsigned int)ibf_load_small_value(load, &reading_pos);
-
- // setup fname and dummy frame
- VALUE path = ibf_load_object(load, location_pathobj_index);
{
- VALUE realpath = Qnil;
-
- if (RB_TYPE_P(path, T_STRING)) {
- realpath = path = rb_fstring(path);
- }
- else if (RB_TYPE_P(path, T_ARRAY)) {
- VALUE pathobj = path;
- if (RARRAY_LEN(pathobj) != 2) {
- rb_raise(rb_eRuntimeError, "path object size mismatch");
- }
- path = rb_fstring(RARRAY_AREF(pathobj, 0));
- realpath = RARRAY_AREF(pathobj, 1);
- if (!NIL_P(realpath)) {
- if (!RB_TYPE_P(realpath, T_STRING)) {
- rb_raise(rb_eArgError, "unexpected realpath %"PRIxVALUE
- "(%x), path=%+"PRIsVALUE,
- realpath, TYPE(realpath), path);
- }
- realpath = rb_fstring(realpath);
- }
- }
- else {
- rb_raise(rb_eRuntimeError, "unexpected path object");
- }
- rb_iseq_pathobj_set(iseq, path, realpath);
- }
-
- // push dummy frame
- rb_execution_context_t *ec = GET_EC();
- VALUE dummy_frame = rb_vm_push_frame_fname(ec, path);
-
-#undef IBF_BODY_OFFSET
-
- load_body->type = type;
- load_body->stack_max = stack_max;
- load_body->param.flags.has_lead = (param_flags >> 0) & 1;
- load_body->param.flags.has_opt = (param_flags >> 1) & 1;
- load_body->param.flags.has_rest = (param_flags >> 2) & 1;
- load_body->param.flags.has_post = (param_flags >> 3) & 1;
- load_body->param.flags.has_kw = FALSE;
- load_body->param.flags.has_kwrest = (param_flags >> 5) & 1;
- load_body->param.flags.has_block = (param_flags >> 6) & 1;
- load_body->param.flags.ambiguous_param0 = (param_flags >> 7) & 1;
- load_body->param.flags.accepts_no_kwarg = (param_flags >> 8) & 1;
- load_body->param.flags.ruby2_keywords = (param_flags >> 9) & 1;
- load_body->param.size = param_size;
- load_body->param.lead_num = param_lead_num;
- load_body->param.opt_num = param_opt_num;
- load_body->param.rest_start = param_rest_start;
- load_body->param.post_start = param_post_start;
- load_body->param.post_num = param_post_num;
- load_body->param.block_start = param_block_start;
- load_body->local_table_size = local_table_size;
- load_body->ci_size = ci_size;
- load_body->insns_info.size = insns_info_size;
-
- ISEQ_COVERAGE_SET(iseq, Qnil);
- ISEQ_ORIGINAL_ISEQ_CLEAR(iseq);
- load_body->variable.flip_count = variable_flip_count;
- load_body->variable.script_lines = Qnil;
-
- load_body->location.first_lineno = location_first_lineno;
- load_body->location.node_id = location_node_id;
- load_body->location.code_location.beg_pos.lineno = location_code_location_beg_pos_lineno;
- load_body->location.code_location.beg_pos.column = location_code_location_beg_pos_column;
- load_body->location.code_location.end_pos.lineno = location_code_location_end_pos_lineno;
- load_body->location.code_location.end_pos.column = location_code_location_end_pos_column;
- load_body->builtin_attrs = builtin_attrs;
-
- load_body->ivc_size = ivc_size;
- load_body->icvarc_size = icvarc_size;
- load_body->ise_size = ise_size;
- load_body->ic_size = ic_size;
- load_body->is_entries = ZALLOC_N(union iseq_inline_storage_entry, ISEQ_IS_SIZE(load_body));
- ibf_load_ci_entries(load, ci_entries_offset, ci_size, &load_body->call_data);
- load_body->outer_variables = ibf_load_outer_variables(load, outer_variables_offset);
- load_body->param.opt_table = ibf_load_param_opt_table(load, param_opt_table_offset, param_opt_num);
- load_body->param.keyword = ibf_load_param_keyword(load, param_keyword_offset);
- load_body->param.flags.has_kw = (param_flags >> 4) & 1;
- load_body->insns_info.body = ibf_load_insns_info_body(load, insns_info_body_offset, insns_info_size);
- load_body->insns_info.positions = ibf_load_insns_info_positions(load, insns_info_positions_offset, insns_info_size);
- load_body->local_table = ibf_load_local_table(load, local_table_offset, local_table_size);
- load_body->catch_table = ibf_load_catch_table(load, catch_table_offset, catch_table_size);
- load_body->parent_iseq = ibf_load_iseq(load, (const rb_iseq_t *)(VALUE)parent_iseq_index);
- load_body->local_iseq = ibf_load_iseq(load, (const rb_iseq_t *)(VALUE)local_iseq_index);
- load_body->mandatory_only_iseq = ibf_load_iseq(load, (const rb_iseq_t *)(VALUE)mandatory_only_iseq_index);
-
- ibf_load_code(load, iseq, bytecode_offset, bytecode_size, iseq_size);
-#if VM_INSN_INFO_TABLE_IMPL == 2
- rb_iseq_insns_info_encode_positions(iseq);
-#endif
+ VALUE realpath = Qnil, path = ibf_load_object(load, body->location.pathobj);
+ if (RB_TYPE_P(path, T_STRING)) {
+ realpath = path = rb_fstring(path);
+ }
+ else if (RB_TYPE_P(path, T_ARRAY)) {
+ VALUE pathobj = path;
+ if (RARRAY_LEN(pathobj) != 2) {
+ rb_raise(rb_eRuntimeError, "path object size mismatch");
+ }
+ path = rb_fstring(RARRAY_AREF(pathobj, 0));
+ realpath = RARRAY_AREF(pathobj, 1);
+ if (!NIL_P(realpath)) {
+ if (!RB_TYPE_P(realpath, T_STRING)) {
+ rb_raise(rb_eArgError, "unexpected realpath %"PRIxVALUE
+ "(%x), path=%+"PRIsVALUE,
+ realpath, TYPE(realpath), path);
+ }
+ realpath = rb_fstring(realpath);
+ }
+ }
+ else {
+ rb_raise(rb_eRuntimeError, "unexpected path object");
+ }
+ rb_iseq_pathobj_set(iseq, path, realpath);
+ }
+
+ RB_OBJ_WRITE(iseq, &load_body->location.base_label, ibf_load_location_str(load, body->location.base_label));
+ RB_OBJ_WRITE(iseq, &load_body->location.label, ibf_load_location_str(load, body->location.label));
+ load_body->location.first_lineno = body->location.first_lineno;
+ load_body->location.code_range = body->location.code_range;
+
+ load_body->is_entries = ZALLOC_N(union iseq_inline_storage_entry, body->is_size);
+ load_body->ci_entries = ibf_load_ci_entries(load, body);
+ load_body->cc_entries = ZALLOC_N(struct rb_call_cache, body->ci_size + body->ci_kw_size);
+ load_body->param.opt_table = ibf_load_param_opt_table(load, body);
+ load_body->param.keyword = ibf_load_param_keyword(load, body);
+ load_body->insns_info = ibf_load_insns_info(load, body);
+ load_body->local_table = ibf_load_local_table(load, body);
+ load_body->catch_table = ibf_load_catch_table(load, body);
+ load_body->parent_iseq = ibf_load_iseq(load, body->parent_iseq);
+ load_body->local_iseq = ibf_load_iseq(load, body->local_iseq);
+
+ load_body->iseq_encoded = ibf_load_code(load, iseq, body);
rb_iseq_translate_threaded_code(iseq);
+}
-#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
- load->current_buffer = &load->global_buffer;
-#endif
- RB_OBJ_WRITE(iseq, &load_body->location.base_label, ibf_load_location_str(load, location_base_label_index));
- RB_OBJ_WRITE(iseq, &load_body->location.label, ibf_load_location_str(load, location_label_index));
+static void
+ibf_dump_iseq_list(struct ibf_dump *dump, struct ibf_header *header)
+{
+ const long size = RARRAY_LEN(dump->iseq_list);
+ ibf_offset_t *list = ALLOCA_N(ibf_offset_t, size);
+ long i;
-#if IBF_ISEQ_ENABLE_LOCAL_BUFFER
- load->current_buffer = saved_buffer;
-#endif
- verify_call_cache(iseq);
+ for (i=0; i<size; i++) {
+ list[i] = (ibf_offset_t)NUM2LONG(rb_ary_entry(dump->iseq_list, i));
+ }
- RB_GC_GUARD(dummy_frame);
- rb_vm_pop_frame_no_int(ec);
+ header->iseq_list_offset = ibf_dump_write(dump, list, sizeof(ibf_offset_t) * size);
+ header->iseq_list_size = (unsigned int)size;
}
-struct ibf_dump_iseq_list_arg
-{
+struct ibf_dump_id_list_i_arg {
struct ibf_dump *dump;
- VALUE offset_list;
+ long *list;
+ int current_i;
};
static int
-ibf_dump_iseq_list_i(st_data_t key, st_data_t val, st_data_t ptr)
+ibf_dump_id_list_i(st_data_t key, st_data_t val, st_data_t ptr)
{
- const rb_iseq_t *iseq = (const rb_iseq_t *)key;
- struct ibf_dump_iseq_list_arg *args = (struct ibf_dump_iseq_list_arg *)ptr;
+ struct ibf_dump_id_list_i_arg *arg = (struct ibf_dump_id_list_i_arg *)ptr;
+ int i = (int)val;
+ ID id = (ID)key;
+ assert(arg->current_i == i);
+ arg->current_i++;
- ibf_offset_t offset = ibf_dump_iseq_each(args->dump, iseq);
- rb_ary_push(args->offset_list, UINT2NUM(offset));
+ if (rb_id2name(id)) {
+ arg->list[i] = (long)ibf_dump_object(arg->dump, rb_id2str(id));
+ }
+ else {
+ arg->list[i] = 0;
+ }
return ST_CONTINUE;
}
static void
-ibf_dump_iseq_list(struct ibf_dump *dump, struct ibf_header *header)
+ibf_dump_id_list(struct ibf_dump *dump, struct ibf_header *header)
{
- VALUE offset_list = rb_ary_hidden_new(dump->iseq_table->num_entries);
-
- struct ibf_dump_iseq_list_arg args;
- args.dump = dump;
- args.offset_list = offset_list;
-
- st_foreach(dump->iseq_table, ibf_dump_iseq_list_i, (st_data_t)&args);
+ const long size = dump->id_table->num_entries;
+ struct ibf_dump_id_list_i_arg arg;
+ arg.list = ALLOCA_N(long, size);
+ arg.dump = dump;
+ arg.current_i = 0;
- st_index_t i;
- st_index_t size = dump->iseq_table->num_entries;
- ibf_offset_t *offsets = ALLOCA_N(ibf_offset_t, size);
+ st_foreach(dump->id_table, ibf_dump_id_list_i, (st_data_t)&arg);
- for (i = 0; i < size; i++) {
- offsets[i] = NUM2UINT(RARRAY_AREF(offset_list, i));
- }
-
- ibf_dump_align(dump, sizeof(ibf_offset_t));
- header->iseq_list_offset = ibf_dump_write(dump, offsets, sizeof(ibf_offset_t) * size);
- header->iseq_list_size = (unsigned int)size;
+ header->id_list_offset = ibf_dump_write(dump, arg.list, sizeof(long) * size);
+ header->id_list_size = (unsigned int)size;
}
#define IBF_OBJECT_INTERNAL FL_PROMOTED0
@@ -12486,10 +8804,13 @@ struct ibf_object_header {
enum ibf_object_class_index {
IBF_OBJECT_CLASS_OBJECT,
IBF_OBJECT_CLASS_ARRAY,
- IBF_OBJECT_CLASS_STANDARD_ERROR,
- IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_ERROR,
- IBF_OBJECT_CLASS_TYPE_ERROR,
- IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_KEY_ERROR,
+ IBF_OBJECT_CLASS_STANDARD_ERROR
+};
+
+struct ibf_object_string {
+ long encindex;
+ long len;
+ char ptr[1];
};
struct ibf_object_regexp {
@@ -12497,9 +8818,14 @@ struct ibf_object_regexp {
char option;
};
+struct ibf_object_array {
+ long len;
+ long ary[1];
+};
+
struct ibf_object_hash {
long len;
- long keyval[FLEX_ARY_LEN];
+ long keyval[1];
};
struct ibf_object_struct_range {
@@ -12512,11 +8838,11 @@ struct ibf_object_struct_range {
struct ibf_object_bignum {
ssize_t slen;
- BDIGIT digits[FLEX_ARY_LEN];
+ BDIGIT digits[1];
};
enum ibf_object_data_type {
- IBF_OBJECT_DATA_ENCODING,
+ IBF_OBJECT_DATA_ENCODING
};
struct ibf_object_complex_rational {
@@ -12527,37 +8853,21 @@ struct ibf_object_symbol {
long str;
};
-#define IBF_ALIGNED_OFFSET(align, offset) /* offset > 0 */ \
- ((((offset) - 1) / (align) + 1) * (align))
-#define IBF_OBJBODY(type, offset) (const type *)\
- ibf_load_check_offset(load, IBF_ALIGNED_OFFSET(RUBY_ALIGNOF(type), offset))
-
-static const void *
-ibf_load_check_offset(const struct ibf_load *load, size_t offset)
-{
- if (offset >= load->current_buffer->size) {
- rb_raise(rb_eIndexError, "object offset out of range: %"PRIdSIZE, offset);
- }
- return load->current_buffer->buff + offset;
-}
-
-NORETURN(static void ibf_dump_object_unsupported(struct ibf_dump *dump, VALUE obj));
+#define IBF_OBJHEADER(offset) (struct ibf_object_header *)(load->buff + (offset))
+#define IBF_OBJBODY(type, offset) (type *)(load->buff + sizeof(struct ibf_object_header) + (offset))
static void
ibf_dump_object_unsupported(struct ibf_dump *dump, VALUE obj)
{
- char buff[0x100];
- rb_raw_obj_info(buff, sizeof(buff), obj);
- rb_raise(rb_eNotImpError, "ibf_dump_object_unsupported: %s", buff);
+ rb_obj_info_dump(obj);
+ rb_bug("ibf_dump_object_unsupported: unsupported");
}
-NORETURN(static VALUE ibf_load_object_unsupported(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset));
-
static VALUE
ibf_load_object_unsupported(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
{
- rb_raise(rb_eArgError, "unsupported");
- UNREACHABLE_RETURN(Qnil);
+ rb_bug("unsupported");
+ return Qnil;
}
static void
@@ -12565,52 +8875,38 @@ ibf_dump_object_class(struct ibf_dump *dump, VALUE obj)
{
enum ibf_object_class_index cindex;
if (obj == rb_cObject) {
- cindex = IBF_OBJECT_CLASS_OBJECT;
+ cindex = IBF_OBJECT_CLASS_OBJECT;
}
else if (obj == rb_cArray) {
- cindex = IBF_OBJECT_CLASS_ARRAY;
+ cindex = IBF_OBJECT_CLASS_ARRAY;
}
else if (obj == rb_eStandardError) {
- cindex = IBF_OBJECT_CLASS_STANDARD_ERROR;
- }
- else if (obj == rb_eNoMatchingPatternError) {
- cindex = IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_ERROR;
- }
- else if (obj == rb_eTypeError) {
- cindex = IBF_OBJECT_CLASS_TYPE_ERROR;
- }
- else if (obj == rb_eNoMatchingPatternKeyError) {
- cindex = IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_KEY_ERROR;
+ cindex = IBF_OBJECT_CLASS_STANDARD_ERROR;
}
else {
- rb_obj_info_dump(obj);
- rb_p(obj);
- rb_bug("unsupported class");
+ rb_obj_info_dump(obj);
+ rb_p(obj);
+ rb_bug("unsupported class");
}
- ibf_dump_write_small_value(dump, (VALUE)cindex);
+ ibf_dump_write(dump, &cindex, sizeof(cindex));
}
static VALUE
ibf_load_object_class(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
{
- enum ibf_object_class_index cindex = (enum ibf_object_class_index)ibf_load_small_value(load, &offset);
+ enum ibf_object_class_index *cindexp = IBF_OBJBODY(enum ibf_object_class_index, offset);
+ enum ibf_object_class_index cindex = *cindexp;
switch (cindex) {
case IBF_OBJECT_CLASS_OBJECT:
- return rb_cObject;
+ return rb_cObject;
case IBF_OBJECT_CLASS_ARRAY:
- return rb_cArray;
+ return rb_cArray;
case IBF_OBJECT_CLASS_STANDARD_ERROR:
- return rb_eStandardError;
- case IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_ERROR:
- return rb_eNoMatchingPatternError;
- case IBF_OBJECT_CLASS_TYPE_ERROR:
- return rb_eTypeError;
- case IBF_OBJECT_CLASS_NO_MATCHING_PATTERN_KEY_ERROR:
- return rb_eNoMatchingPatternKeyError;
+ return rb_eStandardError;
}
- rb_raise(rb_eArgError, "ibf_load_object_class: unknown class (%d)", (int)cindex);
+ rb_bug("ibf_load_object_class: unknown class (%d)", (int)cindex);
}
@@ -12618,13 +8914,13 @@ static void
ibf_dump_object_float(struct ibf_dump *dump, VALUE obj)
{
double dbl = RFLOAT_VALUE(obj);
- (void)IBF_W(&dbl, double, 1);
+ ibf_dump_write(dump, &dbl, sizeof(dbl));
}
static VALUE
ibf_load_object_float(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
{
- const double *dblp = IBF_OBJBODY(double, offset);
+ double *dblp = IBF_OBJBODY(double, offset);
return DBL2NUM(*dblp);
}
@@ -12636,64 +8932,51 @@ ibf_dump_object_string(struct ibf_dump *dump, VALUE obj)
const char *ptr = RSTRING_PTR(obj);
if (encindex > RUBY_ENCINDEX_BUILTIN_MAX) {
- rb_encoding *enc = rb_enc_from_index((int)encindex);
- const char *enc_name = rb_enc_name(enc);
- encindex = RUBY_ENCINDEX_BUILTIN_MAX + ibf_dump_object(dump, rb_str_new2(enc_name));
+ rb_encoding *enc = rb_enc_from_index((int)encindex);
+ const char *enc_name = rb_enc_name(enc);
+ encindex = RUBY_ENCINDEX_BUILTIN_MAX + ibf_dump_object(dump, rb_str_new2(enc_name));
}
- ibf_dump_write_small_value(dump, encindex);
- ibf_dump_write_small_value(dump, len);
+ IBF_WV(encindex);
+ IBF_WV(len);
IBF_WP(ptr, char, len);
}
static VALUE
ibf_load_object_string(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
{
- ibf_offset_t reading_pos = offset;
-
- int encindex = (int)ibf_load_small_value(load, &reading_pos);
- const long len = (long)ibf_load_small_value(load, &reading_pos);
- const char *ptr = load->current_buffer->buff + reading_pos;
+ const struct ibf_object_string *string = IBF_OBJBODY(struct ibf_object_string, offset);
+ VALUE str = rb_str_new(string->ptr, string->len);
+ int encindex = (int)string->encindex;
if (encindex > RUBY_ENCINDEX_BUILTIN_MAX) {
- VALUE enc_name_str = ibf_load_object(load, encindex - RUBY_ENCINDEX_BUILTIN_MAX);
- encindex = rb_enc_find_index(RSTRING_PTR(enc_name_str));
+ VALUE enc_name_str = ibf_load_object(load, encindex - RUBY_ENCINDEX_BUILTIN_MAX);
+ encindex = rb_enc_find_index(RSTRING_PTR(enc_name_str));
}
+ rb_enc_associate_index(str, encindex);
- VALUE str;
- if (header->frozen && !header->internal) {
- str = rb_enc_interned_str(ptr, len, rb_enc_from_index(encindex));
- }
- else {
- str = rb_enc_str_new(ptr, len, rb_enc_from_index(encindex));
+ if (header->internal) rb_obj_hide(str);
+ if (header->frozen) str = rb_fstring(str);
- if (header->internal) rb_obj_hide(str);
- if (header->frozen) str = rb_fstring(str);
- }
return str;
}
static void
ibf_dump_object_regexp(struct ibf_dump *dump, VALUE obj)
{
- VALUE srcstr = RREGEXP_SRC(obj);
struct ibf_object_regexp regexp;
+ VALUE srcstr = RREGEXP_SRC(obj);
regexp.option = (char)rb_reg_options(obj);
regexp.srcstr = (long)ibf_dump_object(dump, srcstr);
-
- ibf_dump_write_byte(dump, (unsigned char)regexp.option);
- ibf_dump_write_small_value(dump, regexp.srcstr);
+ IBF_WV(regexp);
}
static VALUE
ibf_load_object_regexp(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
{
- struct ibf_object_regexp regexp;
- regexp.option = ibf_load_byte(load, &offset);
- regexp.srcstr = ibf_load_small_value(load, &offset);
-
- VALUE srcstr = ibf_load_object(load, regexp.srcstr);
- VALUE reg = rb_reg_compile(srcstr, (int)regexp.option, NULL, 0);
+ const struct ibf_object_regexp *regexp = IBF_OBJBODY(struct ibf_object_regexp, offset);
+ VALUE srcstr = ibf_load_object(load, regexp->srcstr);
+ VALUE reg = rb_reg_compile(srcstr, (int)regexp->option, NULL, 0);
if (header->internal) rb_obj_hide(reg);
if (header->frozen) rb_obj_freeze(reg);
@@ -12704,30 +8987,27 @@ ibf_load_object_regexp(const struct ibf_load *load, const struct ibf_object_head
static void
ibf_dump_object_array(struct ibf_dump *dump, VALUE obj)
{
- long i, len = RARRAY_LEN(obj);
- ibf_dump_write_small_value(dump, len);
+ long i, len = (int)RARRAY_LEN(obj);
+ IBF_WV(len);
for (i=0; i<len; i++) {
- long index = (long)ibf_dump_object(dump, RARRAY_AREF(obj, i));
- ibf_dump_write_small_value(dump, index);
+ long index = (long)ibf_dump_object(dump, RARRAY_AREF(obj, i));
+ IBF_WV(index);
}
}
static VALUE
ibf_load_object_array(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
{
- ibf_offset_t reading_pos = offset;
-
- const long len = (long)ibf_load_small_value(load, &reading_pos);
-
- VALUE ary = header->internal ? rb_ary_hidden_new(len) : rb_ary_new_capa(len);
+ const struct ibf_object_array *array = IBF_OBJBODY(struct ibf_object_array, offset);
+ VALUE ary = rb_ary_new_capa(array->len);
int i;
- for (i=0; i<len; i++) {
- const VALUE index = ibf_load_small_value(load, &reading_pos);
- rb_ary_push(ary, ibf_load_object(load, index));
+ for (i=0; i<array->len; i++) {
+ rb_ary_push(ary, ibf_load_object(load, array->ary[i]));
}
- if (header->frozen) rb_obj_freeze(ary);
+ if (header->internal) rb_obj_hide(ary);
+ if (header->frozen) rb_obj_freeze(ary);
return ary;
}
@@ -12736,12 +9016,10 @@ static int
ibf_dump_object_hash_i(st_data_t key, st_data_t val, st_data_t ptr)
{
struct ibf_dump *dump = (struct ibf_dump *)ptr;
-
- VALUE key_index = ibf_dump_object(dump, (VALUE)key);
- VALUE val_index = ibf_dump_object(dump, (VALUE)val);
-
- ibf_dump_write_small_value(dump, key_index);
- ibf_dump_write_small_value(dump, val_index);
+ long key_index = (long)ibf_dump_object(dump, (VALUE)key);
+ long val_index = (long)ibf_dump_object(dump, (VALUE)val);
+ IBF_WV(key_index);
+ IBF_WV(val_index);
return ST_CONTINUE;
}
@@ -12749,25 +9027,21 @@ static void
ibf_dump_object_hash(struct ibf_dump *dump, VALUE obj)
{
long len = RHASH_SIZE(obj);
- ibf_dump_write_small_value(dump, (VALUE)len);
-
- if (len > 0) rb_hash_foreach(obj, ibf_dump_object_hash_i, (VALUE)dump);
+ IBF_WV(len);
+ if (len > 0) st_foreach(RHASH(obj)->ntbl, ibf_dump_object_hash_i, (st_data_t)dump);
}
static VALUE
ibf_load_object_hash(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
{
- long len = (long)ibf_load_small_value(load, &offset);
- VALUE obj = rb_hash_new_with_size(len);
+ const struct ibf_object_hash *hash = IBF_OBJBODY(struct ibf_object_hash, offset);
+ VALUE obj = rb_hash_new_with_size(hash->len);
int i;
- for (i = 0; i < len; i++) {
- VALUE key_index = ibf_load_small_value(load, &offset);
- VALUE val_index = ibf_load_small_value(load, &offset);
-
- VALUE key = ibf_load_object(load, key_index);
- VALUE val = ibf_load_object(load, val_index);
- rb_hash_aset(obj, key, val);
+ for (i=0; i<hash->len; i++) {
+ VALUE key = ibf_load_object(load, hash->keyval[i*2 ]);
+ VALUE val = ibf_load_object(load, hash->keyval[i*2+1]);
+ rb_hash_aset(obj, key, val);
}
rb_hash_rehash(obj);
@@ -12781,22 +9055,19 @@ static void
ibf_dump_object_struct(struct ibf_dump *dump, VALUE obj)
{
if (rb_obj_is_kind_of(obj, rb_cRange)) {
- struct ibf_object_struct_range range;
- VALUE beg, end;
- IBF_ZERO(range);
- range.len = 3;
- range.class_index = 0;
+ struct ibf_object_struct_range range;
+ VALUE beg, end;
+ range.len = 3;
+ range.class_index = 0;
- rb_range_values(obj, &beg, &end, &range.excl);
- range.beg = (long)ibf_dump_object(dump, beg);
- range.end = (long)ibf_dump_object(dump, end);
+ rb_range_values(obj, &beg, &end, &range.excl);
+ range.beg = (long)ibf_dump_object(dump, beg);
+ range.end = (long)ibf_dump_object(dump, end);
- IBF_W_ALIGN(struct ibf_object_struct_range);
- IBF_WV(range);
+ IBF_WV(range);
}
else {
- rb_raise(rb_eNotImpError, "ibf_dump_object_struct: unsupported class %"PRIsVALUE,
- rb_class_name(CLASS_OF(obj)));
+ rb_bug("ibf_dump_object_struct: unsupported class");
}
}
@@ -12819,7 +9090,7 @@ ibf_dump_object_bignum(struct ibf_dump *dump, VALUE obj)
ssize_t slen = BIGNUM_SIGN(obj) > 0 ? len : len * -1;
BDIGIT *d = BIGNUM_DIGITS(obj);
- (void)IBF_W(&slen, ssize_t, 1);
+ IBF_WV(slen);
IBF_WP(d, BDIGIT, len);
}
@@ -12830,7 +9101,7 @@ ibf_load_object_bignum(const struct ibf_load *load, const struct ibf_object_head
int sign = bignum->slen > 0;
ssize_t len = sign > 0 ? bignum->slen : -1 * bignum->slen;
VALUE obj = rb_integer_unpack(bignum->digits, len * 2, 2, 0,
- INTEGER_PACK_LITTLE_ENDIAN | (sign == 0 ? INTEGER_PACK_NEGATIVE : 0));
+ INTEGER_PACK_LITTLE_ENDIAN | (sign == 0 ? INTEGER_PACK_NEGATIVE : 0));
if (header->internal) rb_obj_hide(obj);
if (header->frozen) rb_obj_freeze(obj);
return obj;
@@ -12840,34 +9111,32 @@ static void
ibf_dump_object_data(struct ibf_dump *dump, VALUE obj)
{
if (rb_data_is_encoding(obj)) {
- rb_encoding *enc = rb_to_encoding(obj);
- const char *name = rb_enc_name(enc);
- long len = strlen(name) + 1;
- long data[2];
- data[0] = IBF_OBJECT_DATA_ENCODING;
- data[1] = len;
- (void)IBF_W(data, long, 2);
- IBF_WP(name, char, len);
+ rb_encoding *enc = rb_to_encoding(obj);
+ const char *name = rb_enc_name(enc);
+ enum ibf_object_data_type type = IBF_OBJECT_DATA_ENCODING;
+ long len = strlen(name) + 1;
+ IBF_WV(type);
+ IBF_WV(len);
+ IBF_WP(name, char, strlen(name) + 1);
}
else {
- ibf_dump_object_unsupported(dump, obj);
+ ibf_dump_object_unsupported(dump, obj);
}
}
static VALUE
ibf_load_object_data(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
{
- const long *body = IBF_OBJBODY(long, offset);
- const enum ibf_object_data_type type = (enum ibf_object_data_type)body[0];
- /* const long len = body[1]; */
- const char *data = (const char *)&body[2];
+ const enum ibf_object_data_type *typep = IBF_OBJBODY(enum ibf_object_data_type, offset);
+ /* const long *lenp = IBF_OBJBODY(long, offset + sizeof(enum ibf_object_data_type)); */
+ const char *data = IBF_OBJBODY(char, offset + sizeof(enum ibf_object_data_type) + sizeof(long));
- switch (type) {
+ switch (*typep) {
case IBF_OBJECT_DATA_ENCODING:
- {
- VALUE encobj = rb_enc_from_encoding(rb_enc_find(data));
- return encobj;
- }
+ {
+ VALUE encobj = rb_enc_from_encoding(rb_enc_find(data));
+ return encobj;
+ }
}
return ibf_load_object_unsupported(load, header, offset);
@@ -12876,11 +9145,11 @@ ibf_load_object_data(const struct ibf_load *load, const struct ibf_object_header
static void
ibf_dump_object_complex_rational(struct ibf_dump *dump, VALUE obj)
{
- long data[2];
- data[0] = (long)ibf_dump_object(dump, RCOMPLEX(obj)->real);
- data[1] = (long)ibf_dump_object(dump, RCOMPLEX(obj)->imag);
+ long real = (long)ibf_dump_object(dump, RCOMPLEX(obj)->real);
+ long imag = (long)ibf_dump_object(dump, RCOMPLEX(obj)->imag);
- (void)IBF_W(data, long, 2);
+ IBF_WV(real);
+ IBF_WV(imag);
}
static VALUE
@@ -12900,29 +9169,23 @@ ibf_load_object_complex_rational(const struct ibf_load *load, const struct ibf_o
static void
ibf_dump_object_symbol(struct ibf_dump *dump, VALUE obj)
{
- ibf_dump_object_string(dump, rb_sym2str(obj));
+ VALUE str = rb_sym2str(obj);
+ long str_index = (long)ibf_dump_object(dump, str);
+ IBF_WV(str_index);
}
static VALUE
ibf_load_object_symbol(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset)
{
- ibf_offset_t reading_pos = offset;
-
- int encindex = (int)ibf_load_small_value(load, &reading_pos);
- const long len = (long)ibf_load_small_value(load, &reading_pos);
- const char *ptr = load->current_buffer->buff + reading_pos;
-
- if (encindex > RUBY_ENCINDEX_BUILTIN_MAX) {
- VALUE enc_name_str = ibf_load_object(load, encindex - RUBY_ENCINDEX_BUILTIN_MAX);
- encindex = rb_enc_find_index(RSTRING_PTR(enc_name_str));
- }
-
- ID id = rb_intern3(ptr, len, rb_enc_from_index(encindex));
+ /* const struct ibf_object_header *header = IBF_OBJHEADER(offset); */
+ const struct ibf_object_symbol *symbol = IBF_OBJBODY(struct ibf_object_symbol, offset);
+ VALUE str = ibf_load_object(load, symbol->str);
+ ID id = rb_intern_str(str);
return ID2SYM(id);
}
typedef void (*ibf_dump_object_function)(struct ibf_dump *dump, VALUE obj);
-static const ibf_dump_object_function dump_object_functions[RUBY_T_MASK+1] = {
+static ibf_dump_object_function dump_object_functions[RUBY_T_MASK+1] = {
ibf_dump_object_unsupported, /* T_NONE */
ibf_dump_object_unsupported, /* T_OBJECT */
ibf_dump_object_class, /* T_CLASS */
@@ -12954,68 +9217,42 @@ static const ibf_dump_object_function dump_object_functions[RUBY_T_MASK+1] = {
ibf_dump_object_unsupported, /* T_ICLASS 0x1c */
ibf_dump_object_unsupported, /* T_ZOMBIE 0x1d */
ibf_dump_object_unsupported, /* 0x1e */
- ibf_dump_object_unsupported, /* 0x1f */
+ ibf_dump_object_unsupported /* 0x1f */
};
-static void
-ibf_dump_object_object_header(struct ibf_dump *dump, const struct ibf_object_header header)
-{
- unsigned char byte =
- (header.type << 0) |
- (header.special_const << 5) |
- (header.frozen << 6) |
- (header.internal << 7);
-
- IBF_WV(byte);
-}
-
-static struct ibf_object_header
-ibf_load_object_object_header(const struct ibf_load *load, ibf_offset_t *offset)
-{
- unsigned char byte = ibf_load_byte(load, offset);
-
- struct ibf_object_header header;
- header.type = (byte >> 0) & 0x1f;
- header.special_const = (byte >> 5) & 0x01;
- header.frozen = (byte >> 6) & 0x01;
- header.internal = (byte >> 7) & 0x01;
-
- return header;
-}
-
static ibf_offset_t
-ibf_dump_object_object(struct ibf_dump *dump, VALUE obj)
+lbf_dump_object_object(struct ibf_dump *dump, VALUE obj)
{
struct ibf_object_header obj_header;
- ibf_offset_t current_offset;
- IBF_ZERO(obj_header);
+ ibf_offset_t current_offset = ibf_dump_pos(dump);
obj_header.type = TYPE(obj);
- IBF_W_ALIGN(ibf_offset_t);
- current_offset = ibf_dump_pos(dump);
-
- if (SPECIAL_CONST_P(obj) &&
- ! (SYMBOL_P(obj) ||
- RB_FLOAT_TYPE_P(obj))) {
- obj_header.special_const = TRUE;
- obj_header.frozen = TRUE;
- obj_header.internal = TRUE;
- ibf_dump_object_object_header(dump, obj_header);
- ibf_dump_write_small_value(dump, obj);
+ if (SPECIAL_CONST_P(obj)) {
+ if (RB_TYPE_P(obj, T_SYMBOL) ||
+ RB_TYPE_P(obj, T_FLOAT)) {
+ obj_header.internal = FALSE;
+ goto dump_object;
+ }
+ obj_header.special_const = TRUE;
+ obj_header.frozen = TRUE;
+ obj_header.internal = TRUE;
+ IBF_WV(obj_header);
+ IBF_WV(obj);
}
else {
- obj_header.internal = SPECIAL_CONST_P(obj) ? FALSE : (RBASIC_CLASS(obj) == 0) ? TRUE : FALSE;
- obj_header.special_const = FALSE;
- obj_header.frozen = FL_TEST(obj, FL_FREEZE) ? TRUE : FALSE;
- ibf_dump_object_object_header(dump, obj_header);
- (*dump_object_functions[obj_header.type])(dump, obj);
+ obj_header.internal = (RBASIC_CLASS(obj) == 0) ? TRUE : FALSE;
+ dump_object:
+ obj_header.special_const = FALSE;
+ obj_header.frozen = FL_TEST(obj, FL_FREEZE) ? TRUE : FALSE;
+ IBF_WV(obj_header);
+ (*dump_object_functions[obj_header.type])(dump, obj);
}
return current_offset;
}
-typedef VALUE (*ibf_load_object_function)(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset);
-static const ibf_load_object_function load_object_functions[RUBY_T_MASK+1] = {
+typedef VALUE (*ibf_load_object_function)(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t);
+static ibf_load_object_function load_object_functions[RUBY_T_MASK+1] = {
ibf_load_object_unsupported, /* T_NONE */
ibf_load_object_unsupported, /* T_OBJECT */
ibf_load_object_class, /* T_CLASS */
@@ -13047,116 +9284,82 @@ static const ibf_load_object_function load_object_functions[RUBY_T_MASK+1] = {
ibf_load_object_unsupported, /* T_ICLASS 0x1c */
ibf_load_object_unsupported, /* T_ZOMBIE 0x1d */
ibf_load_object_unsupported, /* 0x1e */
- ibf_load_object_unsupported, /* 0x1f */
+ ibf_load_object_unsupported /* 0x1f */
};
static VALUE
ibf_load_object(const struct ibf_load *load, VALUE object_index)
{
if (object_index == 0) {
- return Qnil;
+ return Qnil;
+ }
+ else if (object_index >= load->header->object_list_size) {
+ rb_raise(rb_eIndexError, "object index out of range: %"PRIdVALUE, object_index);
}
else {
- VALUE obj = pinned_list_fetch(load->current_buffer->obj_list, (long)object_index);
- if (!obj) {
- ibf_offset_t *offsets = (ibf_offset_t *)(load->current_buffer->obj_list_offset + load->current_buffer->buff);
- ibf_offset_t offset = offsets[object_index];
- const struct ibf_object_header header = ibf_load_object_object_header(load, &offset);
-
-#if IBF_ISEQ_DEBUG
- fprintf(stderr, "ibf_load_object: list=%#x offsets=%p offset=%#x\n",
- load->current_buffer->obj_list_offset, (void *)offsets, offset);
- fprintf(stderr, "ibf_load_object: type=%#x special=%d frozen=%d internal=%d\n",
- header.type, header.special_const, header.frozen, header.internal);
-#endif
- if (offset >= load->current_buffer->size) {
- rb_raise(rb_eIndexError, "object offset out of range: %u", offset);
- }
+ VALUE obj = rb_ary_entry(load->obj_list, (long)object_index);
+ if (obj == Qnil) { /* TODO: avoid multiple Qnil load */
+ ibf_offset_t *offsets = (ibf_offset_t *)(load->header->object_list_offset + load->buff);
+ ibf_offset_t offset = offsets[object_index];
+ const struct ibf_object_header *header = IBF_OBJHEADER(offset);
- if (header.special_const) {
- ibf_offset_t reading_pos = offset;
-
- obj = ibf_load_small_value(load, &reading_pos);
- }
- else {
- obj = (*load_object_functions[header.type])(load, &header, offset);
- }
+ if (header->special_const) {
+ VALUE *vp = IBF_OBJBODY(VALUE, offset);
+ obj = *vp;
+ }
+ else {
+ obj = (*load_object_functions[header->type])(load, header, offset);
+ }
- pinned_list_store(load->current_buffer->obj_list, (long)object_index, obj);
- }
-#if IBF_ISEQ_DEBUG
- fprintf(stderr, "ibf_load_object: index=%#"PRIxVALUE" obj=%#"PRIxVALUE"\n",
- object_index, obj);
-#endif
- return obj;
+ rb_ary_store(load->obj_list, (long)object_index, obj);
+ }
+ iseq_add_mark_object(load->iseq, obj);
+ return obj;
}
}
-struct ibf_dump_object_list_arg
-{
- struct ibf_dump *dump;
- VALUE offset_list;
-};
-
-static int
-ibf_dump_object_list_i(st_data_t key, st_data_t val, st_data_t ptr)
-{
- VALUE obj = (VALUE)key;
- struct ibf_dump_object_list_arg *args = (struct ibf_dump_object_list_arg *)ptr;
-
- ibf_offset_t offset = ibf_dump_object_object(args->dump, obj);
- rb_ary_push(args->offset_list, UINT2NUM(offset));
-
- return ST_CONTINUE;
-}
-
static void
-ibf_dump_object_list(struct ibf_dump *dump, ibf_offset_t *obj_list_offset, unsigned int *obj_list_size)
+ibf_dump_object_list(struct ibf_dump *dump, struct ibf_header *header)
{
- st_table *obj_table = dump->current_buffer->obj_table;
- VALUE offset_list = rb_ary_hidden_new(obj_table->num_entries);
+ VALUE list = rb_ary_tmp_new(RARRAY_LEN(dump->obj_list));
+ int i, size;
- struct ibf_dump_object_list_arg args;
- args.dump = dump;
- args.offset_list = offset_list;
-
- st_foreach(obj_table, ibf_dump_object_list_i, (st_data_t)&args);
-
- IBF_W_ALIGN(ibf_offset_t);
- *obj_list_offset = ibf_dump_pos(dump);
-
- st_index_t size = obj_table->num_entries;
- st_index_t i;
+ for (i=0; i<RARRAY_LEN(dump->obj_list); i++) {
+ VALUE obj = RARRAY_AREF(dump->obj_list, i);
+ ibf_offset_t offset = lbf_dump_object_object(dump, obj);
+ rb_ary_push(list, UINT2NUM(offset));
+ }
+ size = i;
+ header->object_list_offset = ibf_dump_pos(dump);
for (i=0; i<size; i++) {
- ibf_offset_t offset = NUM2UINT(RARRAY_AREF(offset_list, i));
- IBF_WV(offset);
+ ibf_offset_t offset = NUM2UINT(RARRAY_AREF(list, i));
+ IBF_WV(offset);
}
- *obj_list_size = (unsigned int)size;
+ header->object_list_size = size;
}
static void
ibf_dump_mark(void *ptr)
{
struct ibf_dump *dump = (struct ibf_dump *)ptr;
- rb_gc_mark(dump->global_buffer.str);
-
- rb_mark_set(dump->global_buffer.obj_table);
- rb_mark_set(dump->iseq_table);
+ rb_gc_mark(dump->str);
+ rb_gc_mark(dump->iseq_list);
+ rb_gc_mark(dump->obj_list);
}
static void
ibf_dump_free(void *ptr)
{
struct ibf_dump *dump = (struct ibf_dump *)ptr;
- if (dump->global_buffer.obj_table) {
- st_free_table(dump->global_buffer.obj_table);
- dump->global_buffer.obj_table = 0;
- }
if (dump->iseq_table) {
- st_free_table(dump->iseq_table);
- dump->iseq_table = 0;
+ st_free_table(dump->iseq_table);
+ dump->iseq_table = 0;
+ }
+ if (dump->id_table) {
+ st_free_table(dump->id_table);
+ dump->id_table = 0;
}
ruby_xfree(dump);
}
@@ -13167,27 +9370,27 @@ ibf_dump_memsize(const void *ptr)
struct ibf_dump *dump = (struct ibf_dump *)ptr;
size_t size = sizeof(*dump);
if (dump->iseq_table) size += st_memsize(dump->iseq_table);
- if (dump->global_buffer.obj_table) size += st_memsize(dump->global_buffer.obj_table);
+ if (dump->id_table) size += st_memsize(dump->id_table);
return size;
}
static const rb_data_type_t ibf_dump_type = {
"ibf_dump",
{ibf_dump_mark, ibf_dump_free, ibf_dump_memsize,},
- 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
+ 0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
};
static void
ibf_dump_setup(struct ibf_dump *dump, VALUE dumper_obj)
{
- dump->global_buffer.obj_table = NULL; // GC may run before a value is assigned
- dump->iseq_table = NULL;
-
- RB_OBJ_WRITE(dumper_obj, &dump->global_buffer.str, rb_str_new(0, 0));
- dump->global_buffer.obj_table = ibf_dump_object_table_new();
+ RB_OBJ_WRITE(dumper_obj, &dump->str, rb_str_new(0, 0));
+ RB_OBJ_WRITE(dumper_obj, &dump->iseq_list, rb_ary_tmp_new(0));
+ RB_OBJ_WRITE(dumper_obj, &dump->obj_list, rb_ary_tmp_new(1));
+ rb_ary_push(dump->obj_list, Qnil); /* 0th is nil */
dump->iseq_table = st_init_numtable(); /* need free */
+ dump->id_table = st_init_numtable(); /* need free */
- dump->current_buffer = &dump->global_buffer;
+ ibf_table_index(dump->id_table, 0); /* id_index:0 is 0 */
}
VALUE
@@ -13198,12 +9401,12 @@ rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt)
VALUE dump_obj;
VALUE str;
- if (ISEQ_BODY(iseq)->parent_iseq != NULL ||
- ISEQ_BODY(iseq)->local_iseq != iseq) {
- rb_raise(rb_eRuntimeError, "should be top of iseq");
+ if (iseq->body->parent_iseq != NULL ||
+ iseq->body->local_iseq != iseq) {
+ rb_raise(rb_eRuntimeError, "should be top of iseq");
}
if (RTEST(ISEQ_COVERAGE(iseq))) {
- rb_raise(rb_eRuntimeError, "should not compile with coverage");
+ rb_raise(rb_eRuntimeError, "should not compile with coverage");
}
dump_obj = TypedData_Make_Struct(0, struct ibf_dump, &ibf_dump_type, dump);
@@ -13217,25 +9420,26 @@ rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt)
header.magic[1] = 'A';
header.magic[2] = 'R';
header.magic[3] = 'B';
- header.major_version = IBF_MAJOR_VERSION;
- header.minor_version = IBF_MINOR_VERSION;
+ header.major_version = ISEQ_MAJOR_VERSION;
+ header.minor_version = ISEQ_MINOR_VERSION;
ibf_dump_iseq_list(dump, &header);
- ibf_dump_object_list(dump, &header.global_object_list_offset, &header.global_object_list_size);
+ ibf_dump_id_list(dump, &header);
+ ibf_dump_object_list(dump, &header);
header.size = ibf_dump_pos(dump);
if (RTEST(opt)) {
- VALUE opt_str = opt;
- const char *ptr = StringValuePtr(opt_str);
- header.extra_size = RSTRING_LENINT(opt_str);
- ibf_dump_write(dump, ptr, header.extra_size);
+ VALUE opt_str = opt;
+ const char *ptr = StringValuePtr(opt_str);
+ header.extra_size = RSTRING_LENINT(opt_str);
+ ibf_dump_write(dump, ptr, header.extra_size);
}
else {
- header.extra_size = 0;
+ header.extra_size = 0;
}
ibf_dump_overwrite(dump, &header, sizeof(header), 0);
- str = dump->global_buffer.str;
+ str = dump->str;
ibf_dump_free(dump);
DATA_PTR(dump_obj) = NULL;
RB_GC_GUARD(dump_obj);
@@ -13245,7 +9449,7 @@ rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt)
static const ibf_offset_t *
ibf_iseq_list(const struct ibf_load *load)
{
- return (const ibf_offset_t *)(load->global_buffer.buff + load->header->iseq_list_offset);
+ return (ibf_offset_t *)(load->buff + load->header->iseq_list_offset);
}
void
@@ -13253,17 +9457,10 @@ rb_ibf_load_iseq_complete(rb_iseq_t *iseq)
{
struct ibf_load *load = RTYPEDDATA_DATA(iseq->aux.loader.obj);
rb_iseq_t *prev_src_iseq = load->iseq;
- ibf_offset_t offset = ibf_iseq_list(load)[iseq->aux.loader.index];
load->iseq = iseq;
-#if IBF_ISEQ_DEBUG
- fprintf(stderr, "rb_ibf_load_iseq_complete: index=%#x offset=%#x size=%#x\n",
- iseq->aux.loader.index, offset,
- load->header->size);
-#endif
- ibf_load_iseq_each(load, iseq, offset);
+ ibf_load_iseq_each(load, iseq, ibf_iseq_list(load)[iseq->aux.loader.index]);
ISEQ_COMPILE_DATA_CLEAR(iseq);
- FL_UNSET((VALUE)iseq, ISEQ_NOT_LOADED_YET);
- rb_iseq_init_trace(iseq);
+ FL_UNSET(iseq, ISEQ_NOT_LOADED_YET);
load->iseq = prev_src_iseq;
}
@@ -13281,130 +9478,89 @@ ibf_load_iseq(const struct ibf_load *load, const rb_iseq_t *index_iseq)
{
int iseq_index = (int)(VALUE)index_iseq;
-#if IBF_ISEQ_DEBUG
- fprintf(stderr, "ibf_load_iseq: index_iseq=%p iseq_list=%p\n",
- (void *)index_iseq, (void *)load->iseq_list);
-#endif
if (iseq_index == -1) {
- return NULL;
+ return NULL;
}
else {
- VALUE iseqv = pinned_list_fetch(load->iseq_list, iseq_index);
-
-#if IBF_ISEQ_DEBUG
- fprintf(stderr, "ibf_load_iseq: iseqv=%p\n", (void *)iseqv);
-#endif
- if (iseqv) {
- return (rb_iseq_t *)iseqv;
- }
- else {
- rb_iseq_t *iseq = iseq_imemo_alloc();
-#if IBF_ISEQ_DEBUG
- fprintf(stderr, "ibf_load_iseq: new iseq=%p\n", (void *)iseq);
-#endif
- FL_SET((VALUE)iseq, ISEQ_NOT_LOADED_YET);
- iseq->aux.loader.obj = load->loader_obj;
- iseq->aux.loader.index = iseq_index;
-#if IBF_ISEQ_DEBUG
- fprintf(stderr, "ibf_load_iseq: iseq=%p loader_obj=%p index=%d\n",
- (void *)iseq, (void *)load->loader_obj, iseq_index);
-#endif
- pinned_list_store(load->iseq_list, iseq_index, (VALUE)iseq);
+ VALUE iseqv = rb_ary_entry(load->iseq_list, iseq_index);
+
+ if (iseqv != Qnil) {
+ return (rb_iseq_t *)iseqv;
+ }
+ else {
+ rb_iseq_t *iseq = iseq_imemo_alloc();
+ FL_SET(iseq, ISEQ_NOT_LOADED_YET);
+ iseq->aux.loader.obj = load->loader_obj;
+ iseq->aux.loader.index = iseq_index;
+ rb_ary_store(load->iseq_list, iseq_index, (VALUE)iseq);
#if !USE_LAZY_LOAD
-#if IBF_ISEQ_DEBUG
- fprintf(stderr, "ibf_load_iseq: loading iseq=%p\n", (void *)iseq);
-#endif
- rb_ibf_load_iseq_complete(iseq);
-#else
- if (GET_VM()->builtin_function_table) {
- rb_ibf_load_iseq_complete(iseq);
- }
+ rb_ibf_load_iseq_complete(iseq);
#endif /* !USE_LAZY_LOAD */
-#if IBF_ISEQ_DEBUG
- fprintf(stderr, "ibf_load_iseq: iseq=%p loaded %p\n",
- (void *)iseq, (void *)load->iseq);
-#endif
- return iseq;
- }
+ if (load->iseq) {
+ iseq_add_mark_object(load->iseq, (VALUE)iseq);
+ }
+ return iseq;
+ }
}
}
static void
-ibf_load_setup_bytes(struct ibf_load *load, VALUE loader_obj, const char *bytes, size_t size)
+ibf_load_setup(struct ibf_load *load, VALUE loader_obj, VALUE str)
{
+ rb_check_safe_obj(str);
+
+ if (RSTRING_LENINT(str) < (int)sizeof(struct ibf_header)) {
+ rb_raise(rb_eRuntimeError, "broken binary format");
+ }
+ RB_OBJ_WRITE(loader_obj, &load->str, str);
load->loader_obj = loader_obj;
- load->global_buffer.buff = bytes;
- load->header = (struct ibf_header *)load->global_buffer.buff;
- load->global_buffer.size = load->header->size;
- load->global_buffer.obj_list_offset = load->header->global_object_list_offset;
- load->global_buffer.obj_list_size = load->header->global_object_list_size;
- RB_OBJ_WRITE(loader_obj, &load->iseq_list, pinned_list_new(load->header->iseq_list_size));
- RB_OBJ_WRITE(loader_obj, &load->global_buffer.obj_list, pinned_list_new(load->global_buffer.obj_list_size));
+ load->buff = StringValuePtr(str);
+ load->header = (struct ibf_header *)load->buff;
+ RB_OBJ_WRITE(loader_obj, &load->iseq_list, rb_ary_tmp_new(0));
+ RB_OBJ_WRITE(loader_obj, &load->obj_list, rb_ary_tmp_new(0));
+ load->id_list = ZALLOC_N(ID, load->header->id_list_size);
load->iseq = NULL;
- load->current_buffer = &load->global_buffer;
-
- if (size < load->header->size) {
- rb_raise(rb_eRuntimeError, "broken binary format");
+ if (RSTRING_LENINT(str) < (int)load->header->size) {
+ rb_raise(rb_eRuntimeError, "broken binary format");
}
if (strncmp(load->header->magic, "YARB", 4) != 0) {
- rb_raise(rb_eRuntimeError, "unknown binary format");
+ rb_raise(rb_eRuntimeError, "unknown binary format");
}
- if (load->header->major_version != IBF_MAJOR_VERSION ||
- load->header->minor_version != IBF_MINOR_VERSION) {
- rb_raise(rb_eRuntimeError, "unmatched version file (%u.%u for %u.%u)",
- load->header->major_version, load->header->minor_version, IBF_MAJOR_VERSION, IBF_MINOR_VERSION);
+ if (load->header->major_version != ISEQ_MAJOR_VERSION ||
+ load->header->minor_version != ISEQ_MINOR_VERSION) {
+ rb_raise(rb_eRuntimeError, "unmatched version file (%u.%u for %u.%u)",
+ load->header->major_version, load->header->minor_version, ISEQ_MAJOR_VERSION, ISEQ_MINOR_VERSION);
}
- if (strcmp(load->global_buffer.buff + sizeof(struct ibf_header), RUBY_PLATFORM) != 0) {
- rb_raise(rb_eRuntimeError, "unmatched platform");
- }
- if (load->header->iseq_list_offset % RUBY_ALIGNOF(ibf_offset_t)) {
- rb_raise(rb_eArgError, "unaligned iseq list offset: %u",
- load->header->iseq_list_offset);
- }
- if (load->global_buffer.obj_list_offset % RUBY_ALIGNOF(ibf_offset_t)) {
- rb_raise(rb_eArgError, "unaligned object list offset: %u",
- load->global_buffer.obj_list_offset);
+ if (strcmp(load->buff + sizeof(struct ibf_header), RUBY_PLATFORM) != 0) {
+ rb_raise(rb_eRuntimeError, "unmatched platform");
}
}
static void
-ibf_load_setup(struct ibf_load *load, VALUE loader_obj, VALUE str)
-{
- if (RSTRING_LENINT(str) < (int)sizeof(struct ibf_header)) {
- rb_raise(rb_eRuntimeError, "broken binary format");
- }
-
-#if USE_LAZY_LOAD
- str = rb_str_new(RSTRING_PTR(str), RSTRING_LEN(str));
-#endif
-
- ibf_load_setup_bytes(load, loader_obj, StringValuePtr(str), RSTRING_LEN(str));
- RB_OBJ_WRITE(loader_obj, &load->str, str);
-}
-
-static void
ibf_loader_mark(void *ptr)
{
struct ibf_load *load = (struct ibf_load *)ptr;
rb_gc_mark(load->str);
rb_gc_mark(load->iseq_list);
- rb_gc_mark(load->global_buffer.obj_list);
+ rb_gc_mark(load->obj_list);
}
static void
ibf_loader_free(void *ptr)
{
struct ibf_load *load = (struct ibf_load *)ptr;
+ ruby_xfree(load->id_list);
ruby_xfree(load);
}
static size_t
ibf_loader_memsize(const void *ptr)
{
- return sizeof(struct ibf_load);
+ struct ibf_load *load = (struct ibf_load *)ptr;
+ return sizeof(struct ibf_load) + load->header->id_list_size * sizeof(ID);
}
static const rb_data_type_t ibf_load_type = {
@@ -13423,19 +9579,7 @@ rb_iseq_ibf_load(VALUE str)
ibf_load_setup(load, loader_obj, str);
iseq = ibf_load_iseq(load, 0);
- RB_GC_GUARD(loader_obj);
- return iseq;
-}
-
-const rb_iseq_t *
-rb_iseq_ibf_load_bytes(const char *bytes, size_t size)
-{
- struct ibf_load *load;
- rb_iseq_t *iseq;
- VALUE loader_obj = TypedData_Make_Struct(0, struct ibf_load, &ibf_load_type, load);
-
- ibf_load_setup_bytes(load, loader_obj, bytes, size);
- iseq = ibf_load_iseq(load, 0);
+ rb_iseq_init_trace(iseq);
RB_GC_GUARD(loader_obj);
return iseq;
@@ -13449,7 +9593,7 @@ rb_iseq_ibf_load_extra_data(VALUE str)
VALUE extra_str;
ibf_load_setup(load, loader_obj, str);
- extra_str = rb_str_new(load->global_buffer.buff + load->header->size, load->header->extra_size);
+ extra_str = rb_str_new(load->buff + load->header->size, load->header->extra_size);
RB_GC_GUARD(loader_obj);
return extra_str;
}
diff --git a/complex.c b/complex.c
index c9272778bb..e06faa813b 100644
--- a/complex.c
+++ b/complex.c
@@ -5,50 +5,47 @@
which is written in ruby.
*/
-#include "ruby/internal/config.h"
-
+#include "ruby/config.h"
#if defined _MSC_VER
/* Microsoft Visual C does not define M_PI and others by default */
# define _USE_MATH_DEFINES 1
#endif
-
-#include <ctype.h>
#include <math.h>
-
-#include "id.h"
#include "internal.h"
-#include "internal/array.h"
-#include "internal/class.h"
-#include "internal/complex.h"
-#include "internal/math.h"
-#include "internal/numeric.h"
-#include "internal/object.h"
-#include "internal/rational.h"
+
+#define NDEBUG
#include "ruby_assert.h"
#define ZERO INT2FIX(0)
#define ONE INT2FIX(1)
#define TWO INT2FIX(2)
-#if USE_FLONUM
#define RFLOAT_0 DBL2NUM(0)
-#else
-static VALUE RFLOAT_0;
+#if defined(HAVE_SIGNBIT) && defined(__GNUC__) && defined(__sun) && \
+ !defined(signbit)
+extern int signbit(double);
#endif
VALUE rb_cComplex;
+static VALUE nucomp_abs(VALUE self);
+static VALUE nucomp_arg(VALUE self);
+
static ID id_abs, id_arg,
- id_denominator, id_numerator,
- id_real_p, id_i_real, id_i_imag,
+ id_denominator, id_expt, id_fdiv,
+ id_negate, id_numerator, id_quo,
+ id_real_p, id_to_f, id_to_i, id_to_r,
+ id_i_real, id_i_imag,
id_finite_p, id_infinite_p, id_rationalize,
id_PI;
-#define id_to_i idTo_i
-#define id_to_r idTo_r
-#define id_negate idUMinus
-#define id_expt idPow
-#define id_to_f idTo_f
-#define id_quo idQuo
-#define id_fdiv idFdiv
+
+#define f_boolcast(x) ((x) ? Qtrue : Qfalse)
+
+#define binop(n,op) \
+inline static VALUE \
+f_##n(VALUE x, VALUE y)\
+{\
+ return rb_funcall(x, (op), 1, y);\
+}
#define fun1(n) \
inline static VALUE \
@@ -64,32 +61,31 @@ f_##n(VALUE x, VALUE y)\
return rb_funcall(x, id_##n, 1, y);\
}
+#define math1(n) \
+inline static VALUE \
+m_##n(VALUE x)\
+{\
+ return rb_funcall(rb_mMath, id_##n, 1, x);\
+}
+
+#define math2(n) \
+inline static VALUE \
+m_##n(VALUE x, VALUE y)\
+{\
+ return rb_funcall(rb_mMath, id_##n, 2, x, y);\
+}
+
#define PRESERVE_SIGNEDZERO
inline static VALUE
f_add(VALUE x, VALUE y)
{
- if (RB_INTEGER_TYPE_P(x) &&
- LIKELY(rb_method_basic_definition_p(rb_cInteger, idPLUS))) {
- if (FIXNUM_ZERO_P(x))
- return y;
- if (FIXNUM_ZERO_P(y))
- return x;
- return rb_int_plus(x, y);
- }
- else if (RB_FLOAT_TYPE_P(x) &&
- LIKELY(rb_method_basic_definition_p(rb_cFloat, idPLUS))) {
- if (FIXNUM_ZERO_P(y))
- return x;
- return rb_float_plus(x, y);
- }
- else if (RB_TYPE_P(x, T_RATIONAL) &&
- LIKELY(rb_method_basic_definition_p(rb_cRational, idPLUS))) {
- if (FIXNUM_ZERO_P(y))
- return x;
- return rb_rational_plus(x, y);
- }
-
+#ifndef PRESERVE_SIGNEDZERO
+ if (FIXNUM_P(y) && FIXNUM_ZERO_P(y))
+ return x;
+ else if (FIXNUM_P(x) && FIXNUM_ZERO_P(x))
+ return y;
+#endif
return rb_funcall(x, '+', 1, y);
}
@@ -97,7 +93,7 @@ inline static VALUE
f_div(VALUE x, VALUE y)
{
if (FIXNUM_P(y) && FIX2LONG(y) == 1)
- return x;
+ return x;
return rb_funcall(x, '/', 1, y);
}
@@ -121,104 +117,44 @@ f_gt_p(VALUE x, VALUE y)
inline static VALUE
f_mul(VALUE x, VALUE y)
{
- if (RB_INTEGER_TYPE_P(x) &&
- LIKELY(rb_method_basic_definition_p(rb_cInteger, idMULT))) {
- if (FIXNUM_ZERO_P(y))
- return ZERO;
- if (FIXNUM_ZERO_P(x) && RB_INTEGER_TYPE_P(y))
- return ZERO;
- if (x == ONE) return y;
- if (y == ONE) return x;
- return rb_int_mul(x, y);
- }
- else if (RB_FLOAT_TYPE_P(x) &&
- LIKELY(rb_method_basic_definition_p(rb_cFloat, idMULT))) {
- if (y == ONE) return x;
- return rb_float_mul(x, y);
- }
- else if (RB_TYPE_P(x, T_RATIONAL) &&
- LIKELY(rb_method_basic_definition_p(rb_cRational, idMULT))) {
- if (y == ONE) return x;
- return rb_rational_mul(x, y);
- }
- else if (LIKELY(rb_method_basic_definition_p(CLASS_OF(x), idMULT))) {
- if (y == ONE) return x;
+#ifndef PRESERVE_SIGNEDZERO
+ if (FIXNUM_P(y)) {
+ long iy = FIX2LONG(y);
+ if (iy == 0) {
+ if (RB_INTEGER_TYPE_P(x))
+ return ZERO;
+ }
+ else if (iy == 1)
+ return x;
+ }
+ else if (FIXNUM_P(x)) {
+ long ix = FIX2LONG(x);
+ if (ix == 0) {
+ if (RB_INTEGER_TYPE_P(y))
+ return ZERO;
+ }
+ else if (ix == 1)
+ return y;
}
+#endif
return rb_funcall(x, '*', 1, y);
}
inline static VALUE
f_sub(VALUE x, VALUE y)
{
- if (FIXNUM_ZERO_P(y) &&
- LIKELY(rb_method_basic_definition_p(CLASS_OF(x), idMINUS))) {
- return x;
- }
+#ifndef PRESERVE_SIGNEDZERO
+ if (FIXNUM_P(y) && FIXNUM_ZERO_P(y))
+ return x;
+#endif
return rb_funcall(x, '-', 1, y);
}
-inline static VALUE
-f_abs(VALUE x)
-{
- if (RB_INTEGER_TYPE_P(x)) {
- return rb_int_abs(x);
- }
- else if (RB_FLOAT_TYPE_P(x)) {
- return rb_float_abs(x);
- }
- else if (RB_TYPE_P(x, T_RATIONAL)) {
- return rb_rational_abs(x);
- }
- else if (RB_TYPE_P(x, T_COMPLEX)) {
- return rb_complex_abs(x);
- }
- return rb_funcall(x, id_abs, 0);
-}
-
-static VALUE numeric_arg(VALUE self);
-static VALUE float_arg(VALUE self);
+fun1(abs)
+fun1(arg)
+fun1(denominator)
-inline static VALUE
-f_arg(VALUE x)
-{
- if (RB_INTEGER_TYPE_P(x)) {
- return numeric_arg(x);
- }
- else if (RB_FLOAT_TYPE_P(x)) {
- return float_arg(x);
- }
- else if (RB_TYPE_P(x, T_RATIONAL)) {
- return numeric_arg(x);
- }
- else if (RB_TYPE_P(x, T_COMPLEX)) {
- return rb_complex_arg(x);
- }
- return rb_funcall(x, id_arg, 0);
-}
-
-inline static VALUE
-f_numerator(VALUE x)
-{
- if (RB_TYPE_P(x, T_RATIONAL)) {
- return RRATIONAL(x)->num;
- }
- if (RB_FLOAT_TYPE_P(x)) {
- return rb_float_numerator(x);
- }
- return x;
-}
-
-inline static VALUE
-f_denominator(VALUE x)
-{
- if (RB_TYPE_P(x, T_RATIONAL)) {
- return RRATIONAL(x)->den;
- }
- if (RB_FLOAT_TYPE_P(x)) {
- return rb_float_denominator(x);
- }
- return INT2FIX(1);
-}
+static VALUE nucomp_negate(VALUE self);
inline static VALUE
f_negate(VALUE x)
@@ -233,44 +169,26 @@ f_negate(VALUE x)
return rb_rational_uminus(x);
}
else if (RB_TYPE_P(x, T_COMPLEX)) {
- return rb_complex_uminus(x);
+ return nucomp_negate(x);
}
return rb_funcall(x, id_negate, 0);
}
-static bool nucomp_real_p(VALUE self);
-
-static inline bool
-f_real_p(VALUE x)
-{
- if (RB_INTEGER_TYPE_P(x)) {
- return true;
- }
- else if (RB_FLOAT_TYPE_P(x)) {
- return true;
- }
- else if (RB_TYPE_P(x, T_RATIONAL)) {
- return true;
- }
- else if (RB_TYPE_P(x, T_COMPLEX)) {
- return nucomp_real_p(x);
- }
- return rb_funcall(x, id_real_p, 0);
-}
+fun1(numerator)
+fun1(real_p)
inline static VALUE
f_to_i(VALUE x)
{
if (RB_TYPE_P(x, T_STRING))
- return rb_str_to_inum(x, 10, 0);
+ return rb_str_to_inum(x, 10, 0);
return rb_funcall(x, id_to_i, 0);
}
-
inline static VALUE
f_to_f(VALUE x)
{
if (RB_TYPE_P(x, T_STRING))
- return DBL2NUM(rb_str_to_dbl(x, 0));
+ return DBL2NUM(rb_str_to_dbl(x, 0));
return rb_funcall(x, id_to_f, 0);
}
@@ -280,27 +198,15 @@ inline static int
f_eqeq_p(VALUE x, VALUE y)
{
if (FIXNUM_P(x) && FIXNUM_P(y))
- return x == y;
+ return x == y;
else if (RB_FLOAT_TYPE_P(x) || RB_FLOAT_TYPE_P(y))
- return NUM2DBL(x) == NUM2DBL(y);
+ return NUM2DBL(x) == NUM2DBL(y);
return (int)rb_equal(x, y);
}
fun2(expt)
fun2(fdiv)
-
-static VALUE
-f_quo(VALUE x, VALUE y)
-{
- if (RB_INTEGER_TYPE_P(x))
- return rb_numeric_quo(x, y);
- if (RB_FLOAT_TYPE_P(x))
- return rb_float_div(x, y);
- if (RB_TYPE_P(x, T_RATIONAL))
- return rb_numeric_quo(x, y);
-
- return rb_funcallv(x, id_quo, 1, &y);
-}
+fun2(quo)
inline static int
f_negative_p(VALUE x)
@@ -316,54 +222,51 @@ f_negative_p(VALUE x)
#define f_positive_p(x) (!f_negative_p(x))
-inline static bool
+inline static int
f_zero_p(VALUE x)
{
- if (RB_FLOAT_TYPE_P(x)) {
- return FLOAT_ZERO_P(x);
- }
- else if (RB_INTEGER_TYPE_P(x)) {
+ if (RB_INTEGER_TYPE_P(x)) {
return FIXNUM_ZERO_P(x);
}
else if (RB_TYPE_P(x, T_RATIONAL)) {
const VALUE num = RRATIONAL(x)->num;
return FIXNUM_ZERO_P(num);
}
- return rb_equal(x, ZERO) != 0;
+ return (int)rb_equal(x, ZERO);
}
#define f_nonzero_p(x) (!f_zero_p(x))
-static inline bool
-always_finite_type_p(VALUE x)
-{
- if (FIXNUM_P(x)) return true;
- if (FLONUM_P(x)) return true; /* Infinity can't be a flonum */
- return (RB_INTEGER_TYPE_P(x) || RB_TYPE_P(x, T_RATIONAL));
-}
-
+VALUE rb_flo_is_finite_p(VALUE num);
inline static int
f_finite_p(VALUE x)
{
- if (always_finite_type_p(x)) {
+ if (RB_INTEGER_TYPE_P(x)) {
return TRUE;
}
else if (RB_FLOAT_TYPE_P(x)) {
- return isfinite(RFLOAT_VALUE(x));
+ return (int)rb_flo_is_finite_p(x);
+ }
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
+ return TRUE;
}
return RTEST(rb_funcallv(x, id_finite_p, 0, 0));
}
-inline static int
+VALUE rb_flo_is_infinite_p(VALUE num);
+inline static VALUE
f_infinite_p(VALUE x)
{
- if (always_finite_type_p(x)) {
- return FALSE;
+ if (RB_INTEGER_TYPE_P(x)) {
+ return Qnil;
}
else if (RB_FLOAT_TYPE_P(x)) {
- return isinf(RFLOAT_VALUE(x));
+ return rb_flo_is_infinite_p(x);
}
- return RTEST(rb_funcallv(x, id_infinite_p, 0, 0));
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
+ return Qnil;
+ }
+ return rb_funcallv(x, id_infinite_p, 0, 0);
}
inline static int
@@ -391,12 +294,11 @@ k_numeric_p(VALUE x)
inline static VALUE
nucomp_s_new_internal(VALUE klass, VALUE real, VALUE imag)
{
- NEWOBJ_OF(obj, struct RComplex, klass,
- T_COMPLEX | (RGENGC_WB_PROTECTED_COMPLEX ? FL_WB_PROTECTED : 0), sizeof(struct RComplex), 0);
+ NEWOBJ_OF(obj, struct RComplex, klass, T_COMPLEX | (RGENGC_WB_PROTECTED_COMPLEX ? FL_WB_PROTECTED : 0));
RCOMPLEX_SET_REAL(obj, real);
RCOMPLEX_SET_IMAG(obj, imag);
- OBJ_FREEZE_RAW((VALUE)obj);
+ OBJ_FREEZE_RAW(obj);
return (VALUE)obj;
}
@@ -407,6 +309,30 @@ nucomp_s_alloc(VALUE klass)
return nucomp_s_new_internal(klass, ZERO, ZERO);
}
+#if 0
+static VALUE
+nucomp_s_new_bang(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE real, imag;
+
+ switch (rb_scan_args(argc, argv, "11", &real, &imag)) {
+ case 1:
+ if (!k_numeric_p(real))
+ real = f_to_i(real);
+ imag = ZERO;
+ break;
+ default:
+ if (!k_numeric_p(real))
+ real = f_to_i(real);
+ if (!k_numeric_p(imag))
+ imag = f_to_i(imag);
+ break;
+ }
+
+ return nucomp_s_new_internal(klass, real, imag);
+}
+#endif
+
inline static VALUE
f_complex_new_bang1(VALUE klass, VALUE x)
{
@@ -422,53 +348,68 @@ f_complex_new_bang2(VALUE klass, VALUE x, VALUE y)
return nucomp_s_new_internal(klass, x, y);
}
-WARN_UNUSED_RESULT(inline static VALUE nucomp_real_check(VALUE num));
-inline static VALUE
+#ifdef CANONICALIZATION_FOR_MATHN
+#define CANON
+#endif
+
+#ifdef CANON
+static int canonicalization = 0;
+
+RUBY_FUNC_EXPORTED void
+nucomp_canonicalization(int f)
+{
+ canonicalization = f;
+}
+#else
+#define canonicalization 0
+#endif
+
+inline static void
nucomp_real_check(VALUE num)
{
if (!RB_INTEGER_TYPE_P(num) &&
- !RB_FLOAT_TYPE_P(num) &&
- !RB_TYPE_P(num, T_RATIONAL)) {
- if (RB_TYPE_P(num, T_COMPLEX) && nucomp_real_p(num)) {
- VALUE real = RCOMPLEX(num)->real;
- assert(!RB_TYPE_P(real, T_COMPLEX));
- return real;
- }
- if (!k_numeric_p(num) || !f_real_p(num))
- rb_raise(rb_eTypeError, "not a real");
+ !RB_FLOAT_TYPE_P(num) &&
+ !RB_TYPE_P(num, T_RATIONAL)) {
+ if (!k_numeric_p(num) || !f_real_p(num))
+ rb_raise(rb_eTypeError, "not a real");
}
- return num;
}
inline static VALUE
nucomp_s_canonicalize_internal(VALUE klass, VALUE real, VALUE imag)
{
- int complex_r, complex_i;
- complex_r = RB_TYPE_P(real, T_COMPLEX);
- complex_i = RB_TYPE_P(imag, T_COMPLEX);
- if (!complex_r && !complex_i) {
- return nucomp_s_new_internal(klass, real, imag);
- }
- else if (!complex_r) {
- get_dat1(imag);
+#ifdef CANON
+#define CL_CANON
+#ifdef CL_CANON
+ if (k_exact_zero_p(imag) && canonicalization)
+ return real;
+#else
+ if (f_zero_p(imag) && canonicalization)
+ return real;
+#endif
+#endif
+ if (f_real_p(real) && f_real_p(imag))
+ return nucomp_s_new_internal(klass, real, imag);
+ else if (f_real_p(real)) {
+ get_dat1(imag);
- return nucomp_s_new_internal(klass,
- f_sub(real, dat->imag),
- f_add(ZERO, dat->real));
+ return nucomp_s_new_internal(klass,
+ f_sub(real, dat->imag),
+ f_add(ZERO, dat->real));
}
- else if (!complex_i) {
- get_dat1(real);
+ else if (f_real_p(imag)) {
+ get_dat1(real);
- return nucomp_s_new_internal(klass,
- dat->real,
- f_add(dat->imag, imag));
+ return nucomp_s_new_internal(klass,
+ dat->real,
+ f_add(dat->imag, imag));
}
else {
- get_dat2(real, imag);
+ get_dat2(real, imag);
- return nucomp_s_new_internal(klass,
- f_sub(adat->real, bdat->imag),
- f_add(adat->imag, bdat->real));
+ return nucomp_s_new_internal(klass,
+ f_sub(adat->real, bdat->imag),
+ f_add(adat->imag, bdat->real));
}
}
@@ -488,35 +429,30 @@ nucomp_s_new(int argc, VALUE *argv, VALUE klass)
switch (rb_scan_args(argc, argv, "11", &real, &imag)) {
case 1:
- real = nucomp_real_check(real);
- imag = ZERO;
- break;
+ nucomp_real_check(real);
+ imag = ZERO;
+ break;
default:
- real = nucomp_real_check(real);
- imag = nucomp_real_check(imag);
- break;
+ nucomp_real_check(real);
+ nucomp_real_check(imag);
+ break;
}
- return nucomp_s_new_internal(klass, real, imag);
+ return nucomp_s_canonicalize_internal(klass, real, imag);
}
inline static VALUE
f_complex_new2(VALUE klass, VALUE x, VALUE y)
{
- if (RB_TYPE_P(x, T_COMPLEX)) {
- get_dat1(x);
- x = dat->real;
- y = f_add(dat->imag, y);
- }
+ assert(!RB_TYPE_P(x, T_COMPLEX));
return nucomp_s_canonicalize_internal(klass, x, y);
}
-static VALUE nucomp_convert(VALUE klass, VALUE a1, VALUE a2, int raise);
static VALUE nucomp_s_convert(int argc, VALUE *argv, VALUE klass);
/*
* call-seq:
- * Complex(x[, y], exception: true) -> numeric or nil
+ * Complex(x[, y]) -> numeric
*
* Returns x+i*y;
*
@@ -525,9 +461,6 @@ static VALUE nucomp_s_convert(int argc, VALUE *argv, VALUE klass);
* Complex(nil) #=> TypeError
* Complex(1, nil) #=> TypeError
*
- * Complex(1, nil, exception: false) #=> nil
- * Complex('1+2', exception: false) #=> nil
- *
* Syntax of string form:
*
* string form = extra spaces , complex , extra spaces ;
@@ -553,19 +486,7 @@ static VALUE nucomp_s_convert(int argc, VALUE *argv, VALUE klass);
static VALUE
nucomp_f_complex(int argc, VALUE *argv, VALUE klass)
{
- VALUE a1, a2, opts = Qnil;
- int raise = TRUE;
-
- if (rb_scan_args(argc, argv, "11:", &a1, &a2, &opts) == 1) {
- a2 = Qundef;
- }
- if (!NIL_P(opts)) {
- raise = rb_opts_exception_p(opts, raise);
- }
- if (argc > 0 && CLASS_OF(a1) == rb_cComplex && UNDEF_P(a2)) {
- return a1;
- }
- return nucomp_convert(rb_cComplex, a1, a2, raise);
+ return nucomp_s_convert(argc, argv, rb_cComplex);
}
#define imp1(n) \
@@ -591,109 +512,104 @@ imp1(sinh)
static VALUE
m_cos(VALUE x)
{
- if (!RB_TYPE_P(x, T_COMPLEX))
- return m_cos_bang(x);
+ if (f_real_p(x))
+ return m_cos_bang(x);
{
- get_dat1(x);
- return f_complex_new2(rb_cComplex,
- f_mul(m_cos_bang(dat->real),
- m_cosh_bang(dat->imag)),
- f_mul(f_negate(m_sin_bang(dat->real)),
- m_sinh_bang(dat->imag)));
+ get_dat1(x);
+ return f_complex_new2(rb_cComplex,
+ f_mul(m_cos_bang(dat->real),
+ m_cosh_bang(dat->imag)),
+ f_mul(f_negate(m_sin_bang(dat->real)),
+ m_sinh_bang(dat->imag)));
}
}
static VALUE
m_sin(VALUE x)
{
- if (!RB_TYPE_P(x, T_COMPLEX))
- return m_sin_bang(x);
+ if (f_real_p(x))
+ return m_sin_bang(x);
{
- get_dat1(x);
- return f_complex_new2(rb_cComplex,
- f_mul(m_sin_bang(dat->real),
- m_cosh_bang(dat->imag)),
- f_mul(m_cos_bang(dat->real),
- m_sinh_bang(dat->imag)));
+ get_dat1(x);
+ return f_complex_new2(rb_cComplex,
+ f_mul(m_sin_bang(dat->real),
+ m_cosh_bang(dat->imag)),
+ f_mul(m_cos_bang(dat->real),
+ m_sinh_bang(dat->imag)));
}
}
-static VALUE
-f_complex_polar_real(VALUE klass, VALUE x, VALUE y)
+#if 0
+imp1(sqrt)
+
+VALUE
+rb_complex_sqrt(VALUE x)
{
- if (f_zero_p(x) || f_zero_p(y)) {
- return nucomp_s_new_internal(klass, x, RFLOAT_0);
- }
- if (RB_FLOAT_TYPE_P(y)) {
- const double arg = RFLOAT_VALUE(y);
- if (arg == M_PI) {
- x = f_negate(x);
- y = RFLOAT_0;
- }
- else if (arg == M_PI_2) {
- y = x;
- x = RFLOAT_0;
- }
- else if (arg == M_PI_2+M_PI) {
- y = f_negate(x);
- x = RFLOAT_0;
- }
- else if (RB_FLOAT_TYPE_P(x)) {
- const double abs = RFLOAT_VALUE(x);
- const double real = abs * cos(arg), imag = abs * sin(arg);
- x = DBL2NUM(real);
- y = DBL2NUM(imag);
- }
- else {
- const double ax = sin(arg), ay = cos(arg);
- y = f_mul(x, DBL2NUM(ax));
- x = f_mul(x, DBL2NUM(ay));
- }
- return nucomp_s_new_internal(klass, x, y);
- }
- return nucomp_s_canonicalize_internal(klass,
- f_mul(x, m_cos(y)),
- f_mul(x, m_sin(y)));
+ int pos;
+ VALUE a, re, im;
+ get_dat1(x);
+
+ pos = f_positive_p(dat->imag);
+ a = f_abs(x);
+ re = m_sqrt_bang(f_div(f_add(a, dat->real), TWO));
+ im = m_sqrt_bang(f_div(f_sub(a, dat->real), TWO));
+ if (!pos) im = f_negate(im);
+ return f_complex_new2(rb_cComplex, re, im);
}
static VALUE
-f_complex_polar(VALUE klass, VALUE x, VALUE y)
+m_sqrt(VALUE x)
{
- x = nucomp_real_check(x);
- y = nucomp_real_check(y);
- return f_complex_polar_real(klass, x, y);
+ if (f_real_p(x)) {
+ if (f_positive_p(x))
+ return m_sqrt_bang(x);
+ return f_complex_new2(rb_cComplex, ZERO, m_sqrt_bang(f_negate(x)));
+ }
+ return rb_complex_sqrt(x);
}
-
-#ifdef HAVE___COSPI
-# define cospi(x) __cospi(x)
-#else
-# define cospi(x) cos((x) * M_PI)
#endif
-#ifdef HAVE___SINPI
-# define sinpi(x) __sinpi(x)
-#else
-# define sinpi(x) sin((x) * M_PI)
-#endif
-/* returns a Complex or Float of ang*PI-rotated abs */
-VALUE
-rb_dbl_complex_new_polar_pi(double abs, double ang)
-{
- double fi;
- const double fr = modf(ang, &fi);
- int pos = fr == +0.5;
- if (pos || fr == -0.5) {
- if ((modf(fi / 2.0, &fi) != fr) ^ pos) abs = -abs;
- return rb_complex_new(RFLOAT_0, DBL2NUM(abs));
- }
- else if (fr == 0.0) {
- if (modf(fi / 2.0, &fi) != 0.0) abs = -abs;
- return DBL2NUM(abs);
+static VALUE
+f_complex_polar(VALUE klass, VALUE x, VALUE y)
+{
+ assert(!RB_TYPE_P(x, T_COMPLEX));
+ assert(!RB_TYPE_P(y, T_COMPLEX));
+ if (f_zero_p(x) || f_zero_p(y)) {
+ if (canonicalization) return x;
+ return nucomp_s_new_internal(klass, x, RFLOAT_0);
}
- else {
- const double real = abs * cospi(ang), imag = abs * sinpi(ang);
- return rb_complex_new(DBL2NUM(real), DBL2NUM(imag));
+ if (RB_FLOAT_TYPE_P(y)) {
+ const double arg = RFLOAT_VALUE(y);
+ if (arg == M_PI) {
+ x = f_negate(x);
+ if (canonicalization) return x;
+ y = RFLOAT_0;
+ }
+ else if (arg == M_PI_2) {
+ y = x;
+ x = RFLOAT_0;
+ }
+ else if (arg == M_PI_2+M_PI) {
+ y = f_negate(x);
+ x = RFLOAT_0;
+ }
+ else if (RB_FLOAT_TYPE_P(x)) {
+ const double abs = RFLOAT_VALUE(x);
+ const double real = abs * cos(arg), imag = abs * sin(arg);
+ x = DBL2NUM(real);
+ if (canonicalization && imag == 0.0) return x;
+ y = DBL2NUM(imag);
+ }
+ else {
+ y = f_mul(x, DBL2NUM(sin(arg)));
+ x = f_mul(x, DBL2NUM(cos(arg)));
+ if (canonicalization && f_zero_p(y)) return x;
+ }
+ return nucomp_s_new_internal(klass, x, y);
}
+ return nucomp_s_canonicalize_internal(klass,
+ f_mul(x, m_cos(y)),
+ f_mul(x, m_sin(y)));
}
/*
@@ -712,15 +628,17 @@ nucomp_s_polar(int argc, VALUE *argv, VALUE klass)
{
VALUE abs, arg;
- argc = rb_scan_args(argc, argv, "11", &abs, &arg);
- abs = nucomp_real_check(abs);
- if (argc == 2) {
- arg = nucomp_real_check(arg);
- }
- else {
- arg = ZERO;
+ switch (rb_scan_args(argc, argv, "11", &abs, &arg)) {
+ case 1:
+ nucomp_real_check(abs);
+ if (canonicalization) return abs;
+ return nucomp_s_new_internal(klass, abs, ZERO);
+ default:
+ nucomp_real_check(abs);
+ nucomp_real_check(arg);
+ break;
}
- return f_complex_polar_real(klass, abs, arg);
+ return f_complex_polar(klass, abs, arg);
}
/*
@@ -732,8 +650,8 @@ nucomp_s_polar(int argc, VALUE *argv, VALUE klass)
* Complex(7).real #=> 7
* Complex(9, -4).real #=> 9
*/
-VALUE
-rb_complex_real(VALUE self)
+static VALUE
+nucomp_real(VALUE self)
{
get_dat1(self);
return dat->real;
@@ -749,8 +667,8 @@ rb_complex_real(VALUE self)
* Complex(7).imaginary #=> 0
* Complex(9, -4).imaginary #=> -4
*/
-VALUE
-rb_complex_imag(VALUE self)
+static VALUE
+nucomp_imag(VALUE self)
{
get_dat1(self);
return dat->imag;
@@ -764,12 +682,12 @@ rb_complex_imag(VALUE self)
*
* -Complex(1, 2) #=> (-1-2i)
*/
-VALUE
-rb_complex_uminus(VALUE self)
+static VALUE
+nucomp_negate(VALUE self)
{
- get_dat1(self);
- return f_complex_new2(CLASS_OF(self),
- f_negate(dat->real), f_negate(dat->imag));
+ get_dat1(self);
+ return f_complex_new2(CLASS_OF(self),
+ f_negate(dat->real), f_negate(dat->imag));
}
/*
@@ -788,20 +706,20 @@ VALUE
rb_complex_plus(VALUE self, VALUE other)
{
if (RB_TYPE_P(other, T_COMPLEX)) {
- VALUE real, imag;
+ VALUE real, imag;
- get_dat2(self, other);
+ get_dat2(self, other);
- real = f_add(adat->real, bdat->real);
- imag = f_add(adat->imag, bdat->imag);
+ real = f_add(adat->real, bdat->real);
+ imag = f_add(adat->imag, bdat->imag);
- return f_complex_new2(CLASS_OF(self), real, imag);
+ return f_complex_new2(CLASS_OF(self), real, imag);
}
if (k_numeric_p(other) && f_real_p(other)) {
- get_dat1(self);
+ get_dat1(self);
- return f_complex_new2(CLASS_OF(self),
- f_add(dat->real, other), dat->imag);
+ return f_complex_new2(CLASS_OF(self),
+ f_add(dat->real, other), dat->imag);
}
return rb_num_coerce_bin(self, other, '+');
}
@@ -818,54 +736,41 @@ rb_complex_plus(VALUE self, VALUE other)
* Complex(9, 8) - 4 #=> (5+8i)
* Complex(20, 9) - 9.8 #=> (10.2+9i)
*/
-VALUE
-rb_complex_minus(VALUE self, VALUE other)
+static VALUE
+nucomp_sub(VALUE self, VALUE other)
{
if (RB_TYPE_P(other, T_COMPLEX)) {
- VALUE real, imag;
+ VALUE real, imag;
- get_dat2(self, other);
+ get_dat2(self, other);
- real = f_sub(adat->real, bdat->real);
- imag = f_sub(adat->imag, bdat->imag);
+ real = f_sub(adat->real, bdat->real);
+ imag = f_sub(adat->imag, bdat->imag);
- return f_complex_new2(CLASS_OF(self), real, imag);
+ return f_complex_new2(CLASS_OF(self), real, imag);
}
if (k_numeric_p(other) && f_real_p(other)) {
- get_dat1(self);
+ get_dat1(self);
- return f_complex_new2(CLASS_OF(self),
- f_sub(dat->real, other), dat->imag);
+ return f_complex_new2(CLASS_OF(self),
+ f_sub(dat->real, other), dat->imag);
}
return rb_num_coerce_bin(self, other, '-');
}
static VALUE
-safe_mul(VALUE a, VALUE b, bool az, bool bz)
+safe_mul(VALUE a, VALUE b, int az, int bz)
{
double v;
if (!az && bz && RB_FLOAT_TYPE_P(a) && (v = RFLOAT_VALUE(a), !isnan(v))) {
- a = signbit(v) ? DBL2NUM(-1.0) : DBL2NUM(1.0);
+ a = signbit(v) ? DBL2NUM(-1.0) : DBL2NUM(1.0);
}
if (!bz && az && RB_FLOAT_TYPE_P(b) && (v = RFLOAT_VALUE(b), !isnan(v))) {
- b = signbit(v) ? DBL2NUM(-1.0) : DBL2NUM(1.0);
+ b = signbit(v) ? DBL2NUM(-1.0) : DBL2NUM(1.0);
}
return f_mul(a, b);
}
-static void
-comp_mul(VALUE areal, VALUE aimag, VALUE breal, VALUE bimag, VALUE *real, VALUE *imag)
-{
- bool arzero = f_zero_p(areal);
- bool aizero = f_zero_p(aimag);
- bool brzero = f_zero_p(breal);
- bool bizero = f_zero_p(bimag);
- *real = f_sub(safe_mul(areal, breal, arzero, brzero),
- safe_mul(aimag, bimag, aizero, bizero));
- *imag = f_add(safe_mul(areal, bimag, arzero, bizero),
- safe_mul(aimag, breal, aizero, brzero));
-}
-
/*
* call-seq:
* cmp * numeric -> complex
@@ -882,59 +787,82 @@ VALUE
rb_complex_mul(VALUE self, VALUE other)
{
if (RB_TYPE_P(other, T_COMPLEX)) {
- VALUE real, imag;
- get_dat2(self, other);
+ VALUE real, imag;
+ VALUE areal, aimag, breal, bimag;
+ int arzero, aizero, brzero, bizero;
+
+ get_dat2(self, other);
- comp_mul(adat->real, adat->imag, bdat->real, bdat->imag, &real, &imag);
+ arzero = f_zero_p(areal = adat->real);
+ aizero = f_zero_p(aimag = adat->imag);
+ brzero = f_zero_p(breal = bdat->real);
+ bizero = f_zero_p(bimag = bdat->imag);
+ real = f_sub(safe_mul(areal, breal, arzero, brzero),
+ safe_mul(aimag, bimag, aizero, bizero));
+ imag = f_add(safe_mul(areal, bimag, arzero, bizero),
+ safe_mul(aimag, breal, aizero, brzero));
- return f_complex_new2(CLASS_OF(self), real, imag);
+ return f_complex_new2(CLASS_OF(self), real, imag);
}
if (k_numeric_p(other) && f_real_p(other)) {
- get_dat1(self);
+ get_dat1(self);
- return f_complex_new2(CLASS_OF(self),
- f_mul(dat->real, other),
- f_mul(dat->imag, other));
+ return f_complex_new2(CLASS_OF(self),
+ f_mul(dat->real, other),
+ f_mul(dat->imag, other));
}
return rb_num_coerce_bin(self, other, '*');
}
+#define nucomp_mul rb_complex_mul
inline static VALUE
f_divide(VALUE self, VALUE other,
- VALUE (*func)(VALUE, VALUE), ID id)
+ VALUE (*func)(VALUE, VALUE), ID id)
{
if (RB_TYPE_P(other, T_COMPLEX)) {
- VALUE r, n, x, y;
- int flo;
- get_dat2(self, other);
-
- flo = (RB_FLOAT_TYPE_P(adat->real) || RB_FLOAT_TYPE_P(adat->imag) ||
- RB_FLOAT_TYPE_P(bdat->real) || RB_FLOAT_TYPE_P(bdat->imag));
-
- if (f_gt_p(f_abs(bdat->real), f_abs(bdat->imag))) {
- r = (*func)(bdat->imag, bdat->real);
- n = f_mul(bdat->real, f_add(ONE, f_mul(r, r)));
- x = (*func)(f_add(adat->real, f_mul(adat->imag, r)), n);
- y = (*func)(f_sub(adat->imag, f_mul(adat->real, r)), n);
- }
- else {
- r = (*func)(bdat->real, bdat->imag);
- n = f_mul(bdat->imag, f_add(ONE, f_mul(r, r)));
- x = (*func)(f_add(f_mul(adat->real, r), adat->imag), n);
- y = (*func)(f_sub(f_mul(adat->imag, r), adat->real), n);
- }
- if (!flo) {
- x = rb_rational_canonicalize(x);
- y = rb_rational_canonicalize(y);
- }
- return f_complex_new2(CLASS_OF(self), x, y);
+ int flo;
+ get_dat2(self, other);
+
+ flo = (RB_FLOAT_TYPE_P(adat->real) || RB_FLOAT_TYPE_P(adat->imag) ||
+ RB_FLOAT_TYPE_P(bdat->real) || RB_FLOAT_TYPE_P(bdat->imag));
+
+ if (f_gt_p(f_abs(bdat->real), f_abs(bdat->imag))) {
+ VALUE r, n;
+
+ r = (*func)(bdat->imag, bdat->real);
+ n = f_mul(bdat->real, f_add(ONE, f_mul(r, r)));
+ if (flo)
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(self, n),
+ (*func)(f_negate(f_mul(self, r)), n));
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(f_add(adat->real,
+ f_mul(adat->imag, r)), n),
+ (*func)(f_sub(adat->imag,
+ f_mul(adat->real, r)), n));
+ }
+ else {
+ VALUE r, n;
+
+ r = (*func)(bdat->real, bdat->imag);
+ n = f_mul(bdat->imag, f_add(ONE, f_mul(r, r)));
+ if (flo)
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(f_mul(self, r), n),
+ (*func)(f_negate(self), n));
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(f_add(f_mul(adat->real, r),
+ adat->imag), n),
+ (*func)(f_sub(f_mul(adat->imag, r),
+ adat->real), n));
+ }
}
if (k_numeric_p(other) && f_real_p(other)) {
- VALUE x, y;
- get_dat1(self);
- x = rb_rational_canonicalize((*func)(dat->real, other));
- y = rb_rational_canonicalize((*func)(dat->imag, other));
- return f_complex_new2(CLASS_OF(self), x, y);
+ get_dat1(self);
+
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(dat->real, other),
+ (*func)(dat->imag, other));
}
return rb_num_coerce_bin(self, other, id);
}
@@ -954,13 +882,13 @@ f_divide(VALUE self, VALUE other,
* Complex(9, 8) / 4 #=> ((9/4)+(2/1)*i)
* Complex(20, 9) / 9.8 #=> (2.0408163265306123+0.9183673469387754i)
*/
-VALUE
-rb_complex_div(VALUE self, VALUE other)
+static VALUE
+nucomp_div(VALUE self, VALUE other)
{
return f_divide(self, other, f_quo, id_quo);
}
-#define nucomp_quo rb_complex_div
+#define nucomp_quo nucomp_div
/*
* call-seq:
@@ -991,88 +919,81 @@ f_reciprocal(VALUE x)
* Complex('i') ** 2 #=> (-1+0i)
* Complex(-8) ** Rational(1, 3) #=> (1.0000000000000002+1.7320508075688772i)
*/
-VALUE
-rb_complex_pow(VALUE self, VALUE other)
+static VALUE
+nucomp_expt(VALUE self, VALUE other)
{
if (k_numeric_p(other) && k_exact_zero_p(other))
- return f_complex_new_bang1(CLASS_OF(self), ONE);
+ return f_complex_new_bang1(CLASS_OF(self), ONE);
if (RB_TYPE_P(other, T_RATIONAL) && RRATIONAL(other)->den == LONG2FIX(1))
- other = RRATIONAL(other)->num; /* c14n */
+ other = RRATIONAL(other)->num; /* c14n */
if (RB_TYPE_P(other, T_COMPLEX)) {
- get_dat1(other);
+ get_dat1(other);
- if (k_exact_zero_p(dat->imag))
- other = dat->real; /* c14n */
+ if (k_exact_zero_p(dat->imag))
+ other = dat->real; /* c14n */
}
if (RB_TYPE_P(other, T_COMPLEX)) {
- VALUE r, theta, nr, ntheta;
+ VALUE r, theta, nr, ntheta;
- get_dat1(other);
+ get_dat1(other);
- r = f_abs(self);
- theta = f_arg(self);
+ r = f_abs(self);
+ theta = f_arg(self);
- nr = m_exp_bang(f_sub(f_mul(dat->real, m_log_bang(r)),
- f_mul(dat->imag, theta)));
- ntheta = f_add(f_mul(theta, dat->real),
- f_mul(dat->imag, m_log_bang(r)));
- return f_complex_polar(CLASS_OF(self), nr, ntheta);
+ nr = m_exp_bang(f_sub(f_mul(dat->real, m_log_bang(r)),
+ f_mul(dat->imag, theta)));
+ ntheta = f_add(f_mul(theta, dat->real),
+ f_mul(dat->imag, m_log_bang(r)));
+ return f_complex_polar(CLASS_OF(self), nr, ntheta);
}
if (FIXNUM_P(other)) {
- long n = FIX2LONG(other);
- if (n == 0) {
- return nucomp_s_new_internal(CLASS_OF(self), ONE, ZERO);
- }
- if (n < 0) {
- self = f_reciprocal(self);
- other = rb_int_uminus(other);
- n = -n;
- }
- {
- get_dat1(self);
- VALUE xr = dat->real, xi = dat->imag, zr = xr, zi = xi;
-
- if (f_zero_p(xi)) {
- zr = rb_num_pow(zr, other);
- }
- else if (f_zero_p(xr)) {
- zi = rb_num_pow(zi, other);
- if (n & 2) zi = f_negate(zi);
- if (!(n & 1)) {
- VALUE tmp = zr;
- zr = zi;
- zi = tmp;
- }
- }
- else {
- while (--n) {
- long q, r;
-
- for (; q = n / 2, r = n % 2, r == 0; n = q) {
- VALUE tmp = f_sub(f_mul(xr, xr), f_mul(xi, xi));
- xi = f_mul(f_mul(TWO, xr), xi);
- xr = tmp;
- }
- comp_mul(zr, zi, xr, xi, &zr, &zi);
- }
- }
- return nucomp_s_new_internal(CLASS_OF(self), zr, zi);
- }
+ if (f_gt_p(other, ZERO)) {
+ VALUE x, z;
+ long n;
+
+ x = self;
+ z = x;
+ n = FIX2LONG(other) - 1;
+
+ while (n) {
+ long q, r;
+
+ while (1) {
+ get_dat1(x);
+
+ q = n / 2;
+ r = n % 2;
+
+ if (r)
+ break;
+
+ x = nucomp_s_new_internal(CLASS_OF(self),
+ f_sub(f_mul(dat->real, dat->real),
+ f_mul(dat->imag, dat->imag)),
+ f_mul(f_mul(TWO, dat->real), dat->imag));
+ n = q;
+ }
+ z = f_mul(z, x);
+ n--;
+ }
+ return z;
+ }
+ return f_expt(f_reciprocal(self), rb_int_uminus(other));
}
if (k_numeric_p(other) && f_real_p(other)) {
- VALUE r, theta;
+ VALUE r, theta;
- if (RB_BIGNUM_TYPE_P(other))
- rb_warn("in a**b, b may be too big");
+ if (RB_TYPE_P(other, T_BIGNUM))
+ rb_warn("in a**b, b may be too big");
- r = f_abs(self);
- theta = f_arg(self);
+ r = f_abs(self);
+ theta = f_arg(self);
- return f_complex_polar(CLASS_OF(self), f_expt(r, other),
- f_mul(theta, other));
+ return f_complex_polar(CLASS_OF(self), f_expt(r, other),
+ f_mul(theta, other));
}
return rb_num_coerce_bin(self, other, id_expt);
}
@@ -1093,78 +1014,30 @@ static VALUE
nucomp_eqeq_p(VALUE self, VALUE other)
{
if (RB_TYPE_P(other, T_COMPLEX)) {
- get_dat2(self, other);
+ get_dat2(self, other);
- return RBOOL(f_eqeq_p(adat->real, bdat->real) &&
- f_eqeq_p(adat->imag, bdat->imag));
+ return f_boolcast(f_eqeq_p(adat->real, bdat->real) &&
+ f_eqeq_p(adat->imag, bdat->imag));
}
if (k_numeric_p(other) && f_real_p(other)) {
- get_dat1(self);
-
- return RBOOL(f_eqeq_p(dat->real, other) && f_zero_p(dat->imag));
- }
- return RBOOL(f_eqeq_p(other, self));
-}
-
-static bool
-nucomp_real_p(VALUE self)
-{
- get_dat1(self);
- return f_zero_p(dat->imag);
-}
+ get_dat1(self);
-/*
- * call-seq:
- * cmp <=> object -> 0, 1, -1, or nil
- *
- * If +cmp+'s imaginary part is zero, and +object+ is also a
- * real number (or a Complex number where the imaginary part is zero),
- * compare the real part of +cmp+ to object. Otherwise, return nil.
- *
- * Complex(2, 3) <=> Complex(2, 3) #=> nil
- * Complex(2, 3) <=> 1 #=> nil
- * Complex(2) <=> 1 #=> 1
- * Complex(2) <=> 2 #=> 0
- * Complex(2) <=> 3 #=> -1
- */
-static VALUE
-nucomp_cmp(VALUE self, VALUE other)
-{
- if (!k_numeric_p(other)) {
- return rb_num_coerce_cmp(self, other, idCmp);
- }
- if (!nucomp_real_p(self)) {
- return Qnil;
- }
- if (RB_TYPE_P(other, T_COMPLEX)) {
- if (nucomp_real_p(other)) {
- get_dat2(self, other);
- return rb_funcall(adat->real, idCmp, 1, bdat->real);
- }
- }
- else {
- get_dat1(self);
- if (f_real_p(other)) {
- return rb_funcall(dat->real, idCmp, 1, other);
- }
- else {
- return rb_num_coerce_cmp(dat->real, other, idCmp);
- }
+ return f_boolcast(f_eqeq_p(dat->real, other) && f_zero_p(dat->imag));
}
- return Qnil;
+ return f_boolcast(f_eqeq_p(other, self));
}
/* :nodoc: */
static VALUE
nucomp_coerce(VALUE self, VALUE other)
{
- if (RB_TYPE_P(other, T_COMPLEX))
- return rb_assoc_new(other, self);
if (k_numeric_p(other) && f_real_p(other))
- return rb_assoc_new(f_complex_new_bang1(CLASS_OF(self), other), self);
+ return rb_assoc_new(f_complex_new_bang1(CLASS_OF(self), other), self);
+ if (RB_TYPE_P(other, T_COMPLEX))
+ return rb_assoc_new(other, self);
rb_raise(rb_eTypeError, "%"PRIsVALUE" can't be coerced into %"PRIsVALUE,
- rb_obj_class(other), rb_obj_class(self));
+ rb_obj_class(other), rb_obj_class(self));
return Qnil;
}
@@ -1178,22 +1051,22 @@ nucomp_coerce(VALUE self, VALUE other)
* Complex(-1).abs #=> 1
* Complex(3.0, -4.0).abs #=> 5.0
*/
-VALUE
-rb_complex_abs(VALUE self)
+static VALUE
+nucomp_abs(VALUE self)
{
get_dat1(self);
if (f_zero_p(dat->real)) {
- VALUE a = f_abs(dat->imag);
- if (RB_FLOAT_TYPE_P(dat->real) && !RB_FLOAT_TYPE_P(dat->imag))
- a = f_to_f(a);
- return a;
+ VALUE a = f_abs(dat->imag);
+ if (RB_FLOAT_TYPE_P(dat->real) && !RB_FLOAT_TYPE_P(dat->imag))
+ a = f_to_f(a);
+ return a;
}
if (f_zero_p(dat->imag)) {
- VALUE a = f_abs(dat->real);
- if (!RB_FLOAT_TYPE_P(dat->real) && RB_FLOAT_TYPE_P(dat->imag))
- a = f_to_f(a);
- return a;
+ VALUE a = f_abs(dat->real);
+ if (!RB_FLOAT_TYPE_P(dat->real) && RB_FLOAT_TYPE_P(dat->imag))
+ a = f_to_f(a);
+ return a;
}
return rb_math_hypot(dat->real, dat->imag);
}
@@ -1212,7 +1085,7 @@ nucomp_abs2(VALUE self)
{
get_dat1(self);
return f_add(f_mul(dat->real, dat->real),
- f_mul(dat->imag, dat->imag));
+ f_mul(dat->imag, dat->imag));
}
/*
@@ -1225,8 +1098,8 @@ nucomp_abs2(VALUE self)
*
* Complex.polar(3, Math::PI/2).arg #=> 1.5707963267948966
*/
-VALUE
-rb_complex_arg(VALUE self)
+static VALUE
+nucomp_arg(VALUE self)
{
get_dat1(self);
return rb_math_atan2(dat->imag, dat->real);
@@ -1271,26 +1144,51 @@ nucomp_polar(VALUE self)
*
* Complex(1, 2).conjugate #=> (1-2i)
*/
-VALUE
-rb_complex_conjugate(VALUE self)
+static VALUE
+nucomp_conj(VALUE self)
{
get_dat1(self);
return f_complex_new2(CLASS_OF(self), dat->real, f_negate(dat->imag));
}
+#if 0
+/* :nodoc: */
+static VALUE
+nucomp_true(VALUE self)
+{
+ return Qtrue;
+}
+#endif
+
/*
* call-seq:
- * Complex(1).real? -> false
- * Complex(1, 2).real? -> false
+ * cmp.real? -> false
*
- * Returns false, even if the complex number has no imaginary part.
+ * Returns false.
*/
static VALUE
-nucomp_real_p_m(VALUE self)
+nucomp_false(VALUE self)
{
return Qfalse;
}
+#if 0
+/* :nodoc: */
+static VALUE
+nucomp_exact_p(VALUE self)
+{
+ get_dat1(self);
+ return f_boolcast(k_exact_p(dat->real) && k_exact_p(dat->imag));
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_inexact_p(VALUE self)
+{
+ return f_boolcast(!nucomp_exact_p(self));
+}
+#endif
+
/*
* call-seq:
* cmp.denominator -> integer
@@ -1331,17 +1229,17 @@ nucomp_numerator(VALUE self)
get_dat1(self);
- cd = nucomp_denominator(self);
+ cd = f_denominator(self);
return f_complex_new2(CLASS_OF(self),
- f_mul(f_numerator(dat->real),
- f_div(cd, f_denominator(dat->real))),
- f_mul(f_numerator(dat->imag),
- f_div(cd, f_denominator(dat->imag))));
+ f_mul(f_numerator(dat->real),
+ f_div(cd, f_denominator(dat->real))),
+ f_mul(f_numerator(dat->imag),
+ f_div(cd, f_denominator(dat->imag))));
}
/* :nodoc: */
-st_index_t
-rb_complex_hash(VALUE self)
+static VALUE
+nucomp_hash(VALUE self)
{
st_index_t v, h[2];
VALUE n;
@@ -1352,13 +1250,7 @@ rb_complex_hash(VALUE self)
n = rb_hash(dat->imag);
h[1] = NUM2LONG(n);
v = rb_memhash(h, sizeof(h));
- return v;
-}
-
-static VALUE
-nucomp_hash(VALUE self)
-{
- return ST2FIX(rb_complex_hash(self));
+ return ST2FIX(v);
}
/* :nodoc: */
@@ -1366,11 +1258,11 @@ static VALUE
nucomp_eql_p(VALUE self, VALUE other)
{
if (RB_TYPE_P(other, T_COMPLEX)) {
- get_dat2(self, other);
+ get_dat2(self, other);
- return RBOOL((CLASS_OF(adat->real) == CLASS_OF(bdat->real)) &&
- (CLASS_OF(adat->imag) == CLASS_OF(bdat->imag)) &&
- f_eqeq_p(self, other));
+ return f_boolcast((CLASS_OF(adat->real) == CLASS_OF(bdat->real)) &&
+ (CLASS_OF(adat->imag) == CLASS_OF(bdat->imag)) &&
+ f_eqeq_p(self, other));
}
return Qfalse;
@@ -1380,8 +1272,8 @@ inline static int
f_signbit(VALUE x)
{
if (RB_FLOAT_TYPE_P(x)) {
- double f = RFLOAT_VALUE(x);
- return !isnan(f) && signbit(f);
+ double f = RFLOAT_VALUE(x);
+ return !isnan(f) && signbit(f);
}
return f_negative_p(x);
}
@@ -1407,7 +1299,7 @@ f_format(VALUE self, VALUE (*func)(VALUE))
rb_str_concat(s, (*func)(f_abs(dat->imag)));
if (!rb_isdigit(RSTRING_PTR(s)[RSTRING_LEN(s) - 1]))
- rb_str_cat2(s, "*");
+ rb_str_cat2(s, "*");
rb_str_cat2(s, "i");
return s;
@@ -1461,7 +1353,7 @@ nucomp_inspect(VALUE self)
* call-seq:
* cmp.finite? -> true or false
*
- * Returns +true+ if +cmp+'s real and imaginary parts are both finite numbers,
+ * Returns +true+ if +cmp+'s magnitude is a finite number,
* otherwise returns +false+.
*/
static VALUE
@@ -1469,15 +1361,20 @@ rb_complex_finite_p(VALUE self)
{
get_dat1(self);
- return RBOOL(f_finite_p(dat->real) && f_finite_p(dat->imag));
+ if (f_finite_p(dat->real) && f_finite_p(dat->imag)) {
+ return Qtrue;
+ }
+ return Qfalse;
}
/*
* call-seq:
* cmp.infinite? -> nil or 1
*
- * Returns +1+ if +cmp+'s real or imaginary part is an infinite number,
- * otherwise returns +nil+.
+ * Returns values corresponding to the value of +cmp+'s magnitude:
+ *
+ * +finite+:: +nil+
+ * ++Infinity+:: ++1+
*
* For example:
*
@@ -1489,8 +1386,8 @@ rb_complex_infinite_p(VALUE self)
{
get_dat1(self);
- if (!f_infinite_p(dat->real) && !f_infinite_p(dat->imag)) {
- return Qnil;
+ if (NIL_P(f_infinite_p(dat->real)) && NIL_P(f_infinite_p(dat->imag))) {
+ return Qnil;
}
return ONE;
}
@@ -1533,12 +1430,14 @@ nucomp_marshal_load(VALUE self, VALUE a)
{
Check_Type(a, T_ARRAY);
if (RARRAY_LEN(a) != 2)
- rb_raise(rb_eArgError, "marshaled complex must have an array whose length is 2 but %ld", RARRAY_LEN(a));
+ rb_raise(rb_eArgError, "marshaled complex must have an array whose length is 2 but %ld", RARRAY_LEN(a));
rb_ivar_set(self, id_i_real, RARRAY_AREF(a, 0));
rb_ivar_set(self, id_i_imag, RARRAY_AREF(a, 1));
return self;
}
+/* --- */
+
VALUE
rb_complex_raw(VALUE x, VALUE y)
{
@@ -1552,15 +1451,9 @@ rb_complex_new(VALUE x, VALUE y)
}
VALUE
-rb_complex_new_polar(VALUE x, VALUE y)
-{
- return f_complex_polar(rb_cComplex, x, y);
-}
-
-VALUE
rb_complex_polar(VALUE x, VALUE y)
{
- return rb_complex_new_polar(x, y);
+ return f_complex_polar(rb_cComplex, x, y);
}
VALUE
@@ -1573,9 +1466,9 @@ rb_Complex(VALUE x, VALUE y)
}
VALUE
-rb_dbl_complex_new(double real, double imag)
+rb_complex_abs(VALUE cmp)
{
- return rb_complex_raw(DBL2NUM(real), DBL2NUM(imag));
+ return nucomp_abs(cmp);
}
/*
@@ -1595,8 +1488,8 @@ nucomp_to_i(VALUE self)
get_dat1(self);
if (!k_exact_zero_p(dat->imag)) {
- rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Integer",
- self);
+ rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Integer",
+ self);
}
return f_to_i(dat->real);
}
@@ -1618,8 +1511,8 @@ nucomp_to_f(VALUE self)
get_dat1(self);
if (!k_exact_zero_p(dat->imag)) {
- rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Float",
- self);
+ rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Float",
+ self);
}
return f_to_f(dat->real);
}
@@ -1643,8 +1536,8 @@ nucomp_to_r(VALUE self)
get_dat1(self);
if (!k_exact_zero_p(dat->imag)) {
- rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Rational",
- self);
+ rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Rational",
+ self);
}
return f_to_r(dat->real);
}
@@ -1667,7 +1560,7 @@ nucomp_rationalize(int argc, VALUE *argv, VALUE self)
{
get_dat1(self);
- rb_check_arity(argc, 0, 1);
+ rb_scan_args(argc, argv, "01", NULL);
if (!k_exact_zero_p(dat->imag)) {
rb_raise(rb_eRangeError, "can't convert %"PRIsVALUE" into Rational",
@@ -1693,12 +1586,9 @@ nucomp_to_c(VALUE self)
/*
* call-seq:
- * to_c -> (0+0i)
- *
- * Returns zero as a Complex:
- *
- * nil.to_c # => (0+0i)
+ * nil.to_c -> (0+0i)
*
+ * Returns zero as a complex.
*/
static VALUE
nilclass_to_c(VALUE self)
@@ -1718,6 +1608,8 @@ numeric_to_c(VALUE self)
return rb_complex_new1(self);
}
+#include <ctype.h>
+
inline static int
issign(int c)
{
@@ -1726,14 +1618,14 @@ issign(int c)
static int
read_sign(const char **s,
- char **b)
+ char **b)
{
int sign = '?';
if (issign(**s)) {
- sign = **b = **s;
- (*s)++;
- (*b)++;
+ sign = **b = **s;
+ (*s)++;
+ (*b)++;
}
return sign;
}
@@ -1746,32 +1638,32 @@ isdecimal(int c)
static int
read_digits(const char **s, int strict,
- char **b)
+ char **b)
{
int us = 1;
if (!isdecimal(**s))
- return 0;
+ return 0;
while (isdecimal(**s) || **s == '_') {
- if (**s == '_') {
- if (us) {
- if (strict) return 0;
- break;
- }
- us = 1;
- }
- else {
- **b = **s;
- (*b)++;
- us = 0;
- }
- (*s)++;
+ if (**s == '_') {
+ if (strict) {
+ if (us)
+ return 0;
+ }
+ us = 1;
+ }
+ else {
+ **b = **s;
+ (*b)++;
+ us = 0;
+ }
+ (*s)++;
}
if (us)
- do {
- (*s)--;
- } while (**s == '_');
+ do {
+ (*s)--;
+ } while (**s == '_');
return 1;
}
@@ -1783,70 +1675,70 @@ islettere(int c)
static int
read_num(const char **s, int strict,
- char **b)
+ char **b)
{
if (**s != '.') {
- if (!read_digits(s, strict, b))
- return 0;
+ if (!read_digits(s, strict, b))
+ return 0;
}
if (**s == '.') {
- **b = **s;
- (*s)++;
- (*b)++;
- if (!read_digits(s, strict, b)) {
- (*b)--;
- return 0;
- }
+ **b = **s;
+ (*s)++;
+ (*b)++;
+ if (!read_digits(s, strict, b)) {
+ (*b)--;
+ return 0;
+ }
}
if (islettere(**s)) {
- **b = **s;
- (*s)++;
- (*b)++;
- read_sign(s, b);
- if (!read_digits(s, strict, b)) {
- (*b)--;
- return 0;
- }
+ **b = **s;
+ (*s)++;
+ (*b)++;
+ read_sign(s, b);
+ if (!read_digits(s, strict, b)) {
+ (*b)--;
+ return 0;
+ }
}
return 1;
}
inline static int
read_den(const char **s, int strict,
- char **b)
+ char **b)
{
if (!read_digits(s, strict, b))
- return 0;
+ return 0;
return 1;
}
static int
read_rat_nos(const char **s, int strict,
- char **b)
+ char **b)
{
if (!read_num(s, strict, b))
- return 0;
+ return 0;
if (**s == '/') {
- **b = **s;
- (*s)++;
- (*b)++;
- if (!read_den(s, strict, b)) {
- (*b)--;
- return 0;
- }
+ **b = **s;
+ (*s)++;
+ (*b)++;
+ if (!read_den(s, strict, b)) {
+ (*b)--;
+ return 0;
+ }
}
return 1;
}
static int
read_rat(const char **s, int strict,
- char **b)
+ char **b)
{
read_sign(s, b);
if (!read_rat_nos(s, strict, b))
- return 0;
+ return 0;
return 1;
}
@@ -1854,22 +1746,22 @@ inline static int
isimagunit(int c)
{
return (c == 'i' || c == 'I' ||
- c == 'j' || c == 'J');
+ c == 'j' || c == 'J');
}
static VALUE
str2num(char *s)
{
if (strchr(s, '/'))
- return rb_cstr_to_rat(s, 0);
+ return rb_cstr_to_rat(s, 0);
if (strpbrk(s, ".eE"))
- return DBL2NUM(rb_cstr_to_dbl(s, 0));
+ return DBL2NUM(rb_cstr_to_dbl(s, 0));
return rb_cstr_to_inum(s, 10, 0);
}
static int
read_comp(const char **s, int strict,
- VALUE *ret, char **b)
+ VALUE *ret, char **b)
{
char *bb;
int sign;
@@ -1880,72 +1772,72 @@ read_comp(const char **s, int strict,
sign = read_sign(s, b);
if (isimagunit(**s)) {
- (*s)++;
- num = INT2FIX((sign == '-') ? -1 : + 1);
- *ret = rb_complex_new2(ZERO, num);
- return 1; /* e.g. "i" */
+ (*s)++;
+ num = INT2FIX((sign == '-') ? -1 : + 1);
+ *ret = rb_complex_new2(ZERO, num);
+ return 1; /* e.g. "i" */
}
if (!read_rat_nos(s, strict, b)) {
- **b = '\0';
- num = str2num(bb);
- *ret = rb_complex_new2(num, ZERO);
- return 0; /* e.g. "-" */
+ **b = '\0';
+ num = str2num(bb);
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "-" */
}
**b = '\0';
num = str2num(bb);
if (isimagunit(**s)) {
- (*s)++;
- *ret = rb_complex_new2(ZERO, num);
- return 1; /* e.g. "3i" */
+ (*s)++;
+ *ret = rb_complex_new2(ZERO, num);
+ return 1; /* e.g. "3i" */
}
if (**s == '@') {
- int st;
-
- (*s)++;
- bb = *b;
- st = read_rat(s, strict, b);
- **b = '\0';
- if (strlen(bb) < 1 ||
- !isdecimal(*(bb + strlen(bb) - 1))) {
- *ret = rb_complex_new2(num, ZERO);
- return 0; /* e.g. "1@-" */
- }
- num2 = str2num(bb);
- *ret = rb_complex_new_polar(num, num2);
- if (!st)
- return 0; /* e.g. "1@2." */
- else
- return 1; /* e.g. "1@2" */
+ int st;
+
+ (*s)++;
+ bb = *b;
+ st = read_rat(s, strict, b);
+ **b = '\0';
+ if (strlen(bb) < 1 ||
+ !isdecimal(*(bb + strlen(bb) - 1))) {
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "1@-" */
+ }
+ num2 = str2num(bb);
+ *ret = rb_complex_polar(num, num2);
+ if (!st)
+ return 0; /* e.g. "1@2." */
+ else
+ return 1; /* e.g. "1@2" */
}
if (issign(**s)) {
- bb = *b;
- sign = read_sign(s, b);
- if (isimagunit(**s))
- num2 = INT2FIX((sign == '-') ? -1 : + 1);
- else {
- if (!read_rat_nos(s, strict, b)) {
- *ret = rb_complex_new2(num, ZERO);
- return 0; /* e.g. "1+xi" */
- }
- **b = '\0';
- num2 = str2num(bb);
- }
- if (!isimagunit(**s)) {
- *ret = rb_complex_new2(num, ZERO);
- return 0; /* e.g. "1+3x" */
- }
- (*s)++;
- *ret = rb_complex_new2(num, num2);
- return 1; /* e.g. "1+2i" */
+ bb = *b;
+ sign = read_sign(s, b);
+ if (isimagunit(**s))
+ num2 = INT2FIX((sign == '-') ? -1 : + 1);
+ else {
+ if (!read_rat_nos(s, strict, b)) {
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "1+xi" */
+ }
+ **b = '\0';
+ num2 = str2num(bb);
+ }
+ if (!isimagunit(**s)) {
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "1+3x" */
+ }
+ (*s)++;
+ *ret = rb_complex_new2(num, num2);
+ return 1; /* e.g. "1+2i" */
}
/* !(@, - or +) */
{
- *ret = rb_complex_new2(num, ZERO);
- return 1; /* e.g. "3" */
+ *ret = rb_complex_new2(num, ZERO);
+ return 1; /* e.g. "3" */
}
}
@@ -1953,11 +1845,12 @@ inline static void
skip_ws(const char **s)
{
while (isspace((unsigned char)**s))
- (*s)++;
+ (*s)++;
}
static int
-parse_comp(const char *s, int strict, VALUE *num)
+parse_comp(const char *s, int strict,
+ VALUE *num)
{
char *buf, *b;
VALUE tmp;
@@ -1968,14 +1861,14 @@ parse_comp(const char *s, int strict, VALUE *num)
skip_ws(&s);
if (!read_comp(&s, strict, num, &b)) {
- ret = 0;
+ ret = 0;
}
else {
- skip_ws(&s);
+ skip_ws(&s);
- if (strict)
- if (*s != '\0')
- ret = 0;
+ if (strict)
+ if (*s != '\0')
+ ret = 0;
}
ALLOCV_END(tmp);
@@ -1983,7 +1876,7 @@ parse_comp(const char *s, int strict, VALUE *num)
}
static VALUE
-string_to_c_strict(VALUE self, int raise)
+string_to_c_strict(VALUE self)
{
char *s;
VALUE num;
@@ -1992,24 +1885,21 @@ string_to_c_strict(VALUE self, int raise)
s = RSTRING_PTR(self);
- if (!s || memchr(s, '\0', RSTRING_LEN(self))) {
- if (!raise) return Qnil;
- rb_raise(rb_eArgError, "string contains null byte");
- }
+ if (!s || memchr(s, '\0', RSTRING_LEN(self)))
+ rb_raise(rb_eArgError, "string contains null byte");
if (s && s[RSTRING_LEN(self)]) {
- rb_str_modify(self);
- s = RSTRING_PTR(self);
- s[RSTRING_LEN(self)] = '\0';
+ rb_str_modify(self);
+ s = RSTRING_PTR(self);
+ s[RSTRING_LEN(self)] = '\0';
}
if (!s)
- s = (char *)"";
+ s = (char *)"";
if (!parse_comp(s, 1, &num)) {
- if (!raise) return Qnil;
- rb_raise(rb_eArgError, "invalid value for convert(): %+"PRIsVALUE,
- self);
+ rb_raise(rb_eArgError, "invalid value for convert(): %+"PRIsVALUE,
+ self);
}
return num;
@@ -2036,12 +1926,6 @@ string_to_c_strict(VALUE self, int raise)
* '1/2+3/4i'.to_c #=> ((1/2)+(3/4)*i)
* 'ruby'.to_c #=> (0+0i)
*
- * Polar form:
- * include Math
- * "1.0@0".to_c #=> (1+0.0i)
- * "1.0@#{PI/2}".to_c #=> (0.0+1i)
- * "1.0@#{PI}".to_c #=> (-1+0.0i)
- *
* See Kernel.Complex.
*/
static VALUE
@@ -2055,13 +1939,13 @@ string_to_c(VALUE self)
s = RSTRING_PTR(self);
if (s && s[RSTRING_LEN(self)]) {
- rb_str_modify(self);
- s = RSTRING_PTR(self);
- s[RSTRING_LEN(self)] = '\0';
+ rb_str_modify(self);
+ s = RSTRING_PTR(self);
+ s[RSTRING_LEN(self)] = '\0';
}
if (!s)
- s = (char *)"";
+ s = (char *)"";
(void)parse_comp(s, 0, &num);
@@ -2069,98 +1953,99 @@ string_to_c(VALUE self)
}
static VALUE
-to_complex(VALUE val)
+nucomp_s_convert(int argc, VALUE *argv, VALUE klass)
{
- return rb_convert_type(val, T_COMPLEX, "Complex", "to_c");
-}
+ VALUE a1, a2, backref;
-static VALUE
-nucomp_convert(VALUE klass, VALUE a1, VALUE a2, int raise)
-{
- if (NIL_P(a1) || NIL_P(a2)) {
- if (!raise) return Qnil;
- rb_raise(rb_eTypeError, "can't convert nil into Complex");
- }
+ rb_scan_args(argc, argv, "11", &a1, &a2);
+
+ if (NIL_P(a1) || (argc == 2 && NIL_P(a2)))
+ rb_raise(rb_eTypeError, "can't convert nil into Complex");
+
+ backref = rb_backref_get();
+ rb_match_busy(backref);
if (RB_TYPE_P(a1, T_STRING)) {
- a1 = string_to_c_strict(a1, raise);
- if (NIL_P(a1)) return Qnil;
+ a1 = string_to_c_strict(a1);
}
if (RB_TYPE_P(a2, T_STRING)) {
- a2 = string_to_c_strict(a2, raise);
- if (NIL_P(a2)) return Qnil;
+ a2 = string_to_c_strict(a2);
}
+ rb_backref_set(backref);
+
if (RB_TYPE_P(a1, T_COMPLEX)) {
- {
- get_dat1(a1);
+ {
+ get_dat1(a1);
- if (k_exact_zero_p(dat->imag))
- a1 = dat->real;
- }
+ if (k_exact_zero_p(dat->imag))
+ a1 = dat->real;
+ }
}
if (RB_TYPE_P(a2, T_COMPLEX)) {
- {
- get_dat1(a2);
+ {
+ get_dat1(a2);
- if (k_exact_zero_p(dat->imag))
- a2 = dat->real;
- }
+ if (k_exact_zero_p(dat->imag))
+ a2 = dat->real;
+ }
}
if (RB_TYPE_P(a1, T_COMPLEX)) {
- if (UNDEF_P(a2) || (k_exact_zero_p(a2)))
- return a1;
+ if (argc == 1 || (k_exact_zero_p(a2)))
+ return a1;
}
- if (UNDEF_P(a2)) {
- if (k_numeric_p(a1) && !f_real_p(a1))
- return a1;
- /* should raise exception for consistency */
- if (!k_numeric_p(a1)) {
- if (!raise)
- return rb_protect(to_complex, a1, NULL);
- return to_complex(a1);
- }
+ if (argc == 1) {
+ if (k_numeric_p(a1) && !f_real_p(a1))
+ return a1;
+ /* should raise exception for consistency */
+ if (!k_numeric_p(a1))
+ return rb_convert_type(a1, T_COMPLEX, "Complex", "to_c");
}
else {
- if ((k_numeric_p(a1) && k_numeric_p(a2)) &&
- (!f_real_p(a1) || !f_real_p(a2)))
- return f_add(a1,
- f_mul(a2,
- f_complex_new_bang2(rb_cComplex, ZERO, ONE)));
+ if ((k_numeric_p(a1) && k_numeric_p(a2)) &&
+ (!f_real_p(a1) || !f_real_p(a2)))
+ return f_add(a1,
+ f_mul(a2,
+ f_complex_new_bang2(rb_cComplex, ZERO, ONE)));
}
{
- int argc;
- VALUE argv2[2];
- argv2[0] = a1;
- if (UNDEF_P(a2)) {
- argv2[1] = Qnil;
- argc = 1;
- }
- else {
- if (!raise && !RB_INTEGER_TYPE_P(a2) && !RB_FLOAT_TYPE_P(a2) && !RB_TYPE_P(a2, T_RATIONAL))
- return Qnil;
- argv2[1] = a2;
- argc = 2;
- }
- return nucomp_s_new(argc, argv2, klass);
+ VALUE argv2[2];
+ argv2[0] = a1;
+ argv2[1] = a2;
+ return nucomp_s_new(argc, argv2, klass);
}
}
+/* --- */
+
+/*
+ * call-seq:
+ * num.real -> self
+ *
+ * Returns self.
+ */
static VALUE
-nucomp_s_convert(int argc, VALUE *argv, VALUE klass)
+numeric_real(VALUE self)
{
- VALUE a1, a2;
-
- if (rb_scan_args(argc, argv, "11", &a1, &a2) == 1) {
- a2 = Qundef;
- }
+ return self;
+}
- return nucomp_convert(klass, a1, a2, TRUE);
+/*
+ * call-seq:
+ * num.imag -> 0
+ * num.imaginary -> 0
+ *
+ * Returns zero.
+ */
+static VALUE
+numeric_imag(VALUE self)
+{
+ return INT2FIX(0);
}
/*
@@ -2204,6 +2089,8 @@ numeric_rect(VALUE self)
return rb_assoc_new(self, INT2FIX(0));
}
+static VALUE float_arg(VALUE self);
+
/*
* call-seq:
* num.polar -> array
@@ -2236,6 +2123,19 @@ numeric_polar(VALUE self)
/*
* call-seq:
+ * num.conj -> self
+ * num.conjugate -> self
+ *
+ * Returns self.
+ */
+static VALUE
+numeric_conj(VALUE self)
+{
+ return self;
+}
+
+/*
+ * call-seq:
* flo.arg -> 0 or float
* flo.angle -> 0 or float
* flo.phase -> 0 or float
@@ -2246,9 +2146,9 @@ static VALUE
float_arg(VALUE self)
{
if (isnan(RFLOAT_VALUE(self)))
- return self;
+ return self;
if (f_tpositive_p(self))
- return INT2FIX(0);
+ return INT2FIX(0);
return rb_const_get(rb_mMath, id_PI);
}
@@ -2258,14 +2158,6 @@ float_arg(VALUE self)
* and i is imaginary unit. Real a equals complex a+0i
* mathematically.
*
- * You can create a \Complex object explicitly with:
- *
- * - A {complex literal}[rdoc-ref:syntax/literals.rdoc@Complex+Literals].
- *
- * You can convert certain objects to \Complex objects with:
- *
- * - \Method #Complex.
- *
* Complex object can be created as literal, and also by using
* Kernel#Complex, Complex::rect, Complex::polar or to_c method.
*
@@ -2297,24 +2189,41 @@ void
Init_Complex(void)
{
VALUE compat;
- id_abs = rb_intern_const("abs");
- id_arg = rb_intern_const("arg");
- id_denominator = rb_intern_const("denominator");
- id_numerator = rb_intern_const("numerator");
- id_real_p = rb_intern_const("real?");
- id_i_real = rb_intern_const("@real");
- id_i_imag = rb_intern_const("@image"); /* @image, not @imag */
- id_finite_p = rb_intern_const("finite?");
- id_infinite_p = rb_intern_const("infinite?");
- id_rationalize = rb_intern_const("rationalize");
- id_PI = rb_intern_const("PI");
+#undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
+
+ assert(fprintf(stderr, "assert() is now active\n"));
+
+ id_abs = rb_intern("abs");
+ id_arg = rb_intern("arg");
+ id_denominator = rb_intern("denominator");
+ id_expt = rb_intern("**");
+ id_fdiv = rb_intern("fdiv");
+ id_negate = rb_intern("-@");
+ id_numerator = rb_intern("numerator");
+ id_quo = rb_intern("quo");
+ id_real_p = rb_intern("real?");
+ id_to_f = rb_intern("to_f");
+ id_to_i = rb_intern("to_i");
+ id_to_r = rb_intern("to_r");
+ id_i_real = rb_intern("@real");
+ id_i_imag = rb_intern("@image"); /* @image, not @imag */
+ id_finite_p = rb_intern("finite?");
+ id_infinite_p = rb_intern("infinite?");
+ id_rationalize = rb_intern("rationalize");
+ id_PI = rb_intern("PI");
rb_cComplex = rb_define_class("Complex", rb_cNumeric);
rb_define_alloc_func(rb_cComplex, nucomp_s_alloc);
rb_undef_method(CLASS_OF(rb_cComplex), "allocate");
+#if 0
+ rb_define_private_method(CLASS_OF(rb_cComplex), "new!", nucomp_s_new_bang, -1);
+ rb_define_private_method(CLASS_OF(rb_cComplex), "new", nucomp_s_new, -1);
+#else
rb_undef_method(CLASS_OF(rb_cComplex), "new");
+#endif
rb_define_singleton_method(rb_cComplex, "rectangular", nucomp_s_new, -1);
rb_define_singleton_method(rb_cComplex, "rect", nucomp_s_new, -1);
@@ -2322,8 +2231,9 @@ Init_Complex(void)
rb_define_global_function("Complex", nucomp_f_complex, -1);
- rb_undef_methods_from(rb_cComplex, RCLASS_ORIGIN(rb_mComparable));
+ rb_undef_methods_from(rb_cComplex, rb_mComparable);
rb_undef_method(rb_cComplex, "%");
+ rb_undef_method(rb_cComplex, "<=>");
rb_undef_method(rb_cComplex, "div");
rb_undef_method(rb_cComplex, "divmod");
rb_undef_method(rb_cComplex, "floor");
@@ -2335,36 +2245,43 @@ Init_Complex(void)
rb_undef_method(rb_cComplex, "truncate");
rb_undef_method(rb_cComplex, "i");
- rb_define_method(rb_cComplex, "real", rb_complex_real, 0);
- rb_define_method(rb_cComplex, "imaginary", rb_complex_imag, 0);
- rb_define_method(rb_cComplex, "imag", rb_complex_imag, 0);
+ rb_define_method(rb_cComplex, "real", nucomp_real, 0);
+ rb_define_method(rb_cComplex, "imaginary", nucomp_imag, 0);
+ rb_define_method(rb_cComplex, "imag", nucomp_imag, 0);
- rb_define_method(rb_cComplex, "-@", rb_complex_uminus, 0);
+ rb_define_method(rb_cComplex, "-@", nucomp_negate, 0);
rb_define_method(rb_cComplex, "+", rb_complex_plus, 1);
- rb_define_method(rb_cComplex, "-", rb_complex_minus, 1);
- rb_define_method(rb_cComplex, "*", rb_complex_mul, 1);
- rb_define_method(rb_cComplex, "/", rb_complex_div, 1);
+ rb_define_method(rb_cComplex, "-", nucomp_sub, 1);
+ rb_define_method(rb_cComplex, "*", nucomp_mul, 1);
+ rb_define_method(rb_cComplex, "/", nucomp_div, 1);
rb_define_method(rb_cComplex, "quo", nucomp_quo, 1);
rb_define_method(rb_cComplex, "fdiv", nucomp_fdiv, 1);
- rb_define_method(rb_cComplex, "**", rb_complex_pow, 1);
+ rb_define_method(rb_cComplex, "**", nucomp_expt, 1);
rb_define_method(rb_cComplex, "==", nucomp_eqeq_p, 1);
- rb_define_method(rb_cComplex, "<=>", nucomp_cmp, 1);
rb_define_method(rb_cComplex, "coerce", nucomp_coerce, 1);
- rb_define_method(rb_cComplex, "abs", rb_complex_abs, 0);
- rb_define_method(rb_cComplex, "magnitude", rb_complex_abs, 0);
+ rb_define_method(rb_cComplex, "abs", nucomp_abs, 0);
+ rb_define_method(rb_cComplex, "magnitude", nucomp_abs, 0);
rb_define_method(rb_cComplex, "abs2", nucomp_abs2, 0);
- rb_define_method(rb_cComplex, "arg", rb_complex_arg, 0);
- rb_define_method(rb_cComplex, "angle", rb_complex_arg, 0);
- rb_define_method(rb_cComplex, "phase", rb_complex_arg, 0);
+ rb_define_method(rb_cComplex, "arg", nucomp_arg, 0);
+ rb_define_method(rb_cComplex, "angle", nucomp_arg, 0);
+ rb_define_method(rb_cComplex, "phase", nucomp_arg, 0);
rb_define_method(rb_cComplex, "rectangular", nucomp_rect, 0);
rb_define_method(rb_cComplex, "rect", nucomp_rect, 0);
rb_define_method(rb_cComplex, "polar", nucomp_polar, 0);
- rb_define_method(rb_cComplex, "conjugate", rb_complex_conjugate, 0);
- rb_define_method(rb_cComplex, "conj", rb_complex_conjugate, 0);
+ rb_define_method(rb_cComplex, "conjugate", nucomp_conj, 0);
+ rb_define_method(rb_cComplex, "conj", nucomp_conj, 0);
+#if 0
+ rb_define_method(rb_cComplex, "~", nucomp_conj, 0); /* gcc */
+#endif
- rb_define_method(rb_cComplex, "real?", nucomp_real_p_m, 0);
+ rb_define_method(rb_cComplex, "real?", nucomp_false, 0);
+#if 0
+ rb_define_method(rb_cComplex, "complex?", nucomp_true, 0);
+ rb_define_method(rb_cComplex, "exact?", nucomp_exact_p, 0);
+ rb_define_method(rb_cComplex, "inexact?", nucomp_inexact_p, 0);
+#endif
rb_define_method(rb_cComplex, "numerator", nucomp_numerator, 0);
rb_define_method(rb_cComplex, "denominator", nucomp_denominator, 0);
@@ -2382,11 +2299,12 @@ Init_Complex(void)
rb_define_method(rb_cComplex, "infinite?", rb_complex_infinite_p, 0);
rb_define_private_method(rb_cComplex, "marshal_dump", nucomp_marshal_dump, 0);
- /* :nodoc: */
- compat = rb_define_class_under(rb_cComplex, "compatible", rb_cObject);
+ compat = rb_define_class_under(rb_cComplex, "compatible", rb_cObject); /* :nodoc: */
rb_define_private_method(compat, "marshal_load", nucomp_marshal_load, 1);
rb_marshal_define_compat(rb_cComplex, compat, nucomp_dumper, nucomp_loader);
+ /* --- */
+
rb_define_method(rb_cComplex, "to_i", nucomp_to_i, 0);
rb_define_method(rb_cComplex, "to_f", nucomp_to_f, 0);
rb_define_method(rb_cComplex, "to_r", nucomp_to_r, 0);
@@ -2399,6 +2317,11 @@ Init_Complex(void)
rb_define_private_method(CLASS_OF(rb_cComplex), "convert", nucomp_s_convert, -1);
+ /* --- */
+
+ rb_define_method(rb_cNumeric, "real", numeric_real, 0);
+ rb_define_method(rb_cNumeric, "imaginary", numeric_imag, 0);
+ rb_define_method(rb_cNumeric, "imag", numeric_imag, 0);
rb_define_method(rb_cNumeric, "abs2", numeric_abs2, 0);
rb_define_method(rb_cNumeric, "arg", numeric_arg, 0);
rb_define_method(rb_cNumeric, "angle", numeric_arg, 0);
@@ -2406,6 +2329,8 @@ Init_Complex(void)
rb_define_method(rb_cNumeric, "rectangular", numeric_rect, 0);
rb_define_method(rb_cNumeric, "rect", numeric_rect, 0);
rb_define_method(rb_cNumeric, "polar", numeric_polar, 0);
+ rb_define_method(rb_cNumeric, "conjugate", numeric_conj, 0);
+ rb_define_method(rb_cNumeric, "conj", numeric_conj, 0);
rb_define_method(rb_cFloat, "arg", float_arg, 0);
rb_define_method(rb_cFloat, "angle", float_arg, 0);
@@ -2415,11 +2340,13 @@ Init_Complex(void)
* The imaginary unit.
*/
rb_define_const(rb_cComplex, "I",
- f_complex_new_bang2(rb_cComplex, ZERO, ONE));
-
-#if !USE_FLONUM
- rb_gc_register_mark_object(RFLOAT_0 = DBL2NUM(0.0));
-#endif
+ f_complex_new_bang2(rb_cComplex, ZERO, ONE));
rb_provide("complex.so"); /* for backward compatibility */
}
+
+/*
+Local variables:
+c-file-style: "ruby"
+End:
+*/
diff --git a/configure.ac b/configure.ac
index 6da801a5c3..8a7cee55b8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,59 +1,37 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT
+AC_INIT()
{
AC_CONFIG_AUX_DIR(tool)
AC_PREREQ(2.67)
-tooldir="$srcdir/tool"
-
AC_DISABLE_OPTION_CHECKING
-m4_include([tool/m4/_colorize_result_prepare.m4])dnl
-m4_include([tool/m4/ac_msg_result.m4])dnl
-m4_include([tool/m4/colorize_result.m4])dnl
-m4_include([tool/m4/ruby_append_option.m4])dnl
-m4_include([tool/m4/ruby_append_options.m4])dnl
-m4_include([tool/m4/ruby_check_builtin_func.m4])dnl
-m4_include([tool/m4/ruby_check_builtin_setjmp.m4])dnl
-m4_include([tool/m4/ruby_check_printf_prefix.m4])dnl
-m4_include([tool/m4/ruby_check_setjmp.m4])dnl
-m4_include([tool/m4/ruby_check_signedness.m4])dnl
-m4_include([tool/m4/ruby_check_sizeof.m4])dnl
-m4_include([tool/m4/ruby_check_sysconf.m4])dnl
-m4_include([tool/m4/ruby_cppoutfile.m4])dnl
-m4_include([tool/m4/ruby_decl_attribute.m4])dnl
-m4_include([tool/m4/ruby_default_arch.m4])dnl
-m4_include([tool/m4/ruby_define_if.m4])dnl
-m4_include([tool/m4/ruby_defint.m4])dnl
-m4_include([tool/m4/ruby_dtrace_available.m4])dnl
-m4_include([tool/m4/ruby_dtrace_postprocess.m4])dnl
-m4_include([tool/m4/ruby_func_attribute.m4])dnl
-m4_include([tool/m4/ruby_mingw32.m4])dnl
-m4_include([tool/m4/ruby_prepend_option.m4])dnl
-m4_include([tool/m4/ruby_prog_gnu_ld.m4])dnl
-m4_include([tool/m4/ruby_prog_makedirs.m4])dnl
-m4_include([tool/m4/ruby_replace_funcs.m4])dnl
-m4_include([tool/m4/ruby_replace_type.m4])dnl
-m4_include([tool/m4/ruby_require_funcs.m4])dnl
-m4_include([tool/m4/ruby_rm_recursive.m4])dnl
-m4_include([tool/m4/ruby_setjmp_type.m4])dnl
-m4_include([tool/m4/ruby_stack_grow_direction.m4])dnl
-m4_include([tool/m4/ruby_thread.m4])dnl
-m4_include([tool/m4/ruby_try_cflags.m4])dnl
-m4_include([tool/m4/ruby_try_cxxflags.m4])dnl
-m4_include([tool/m4/ruby_try_ldflags.m4])dnl
-m4_include([tool/m4/ruby_universal_arch.m4])dnl
-m4_include([tool/m4/ruby_wasm_tools.m4])dnl
-m4_include([tool/m4/ruby_werror_flag.m4])dnl
-
-AC_ARG_VAR([cflags], [additional CFLAGS (ignored when CFLAGS is given)])dnl
-AC_ARG_VAR([cppflags], [additional CPPFLAGS (ignored when CPPFLAGS is given)])dnl
-AC_ARG_VAR([cxxflags], [additional CXXFLAGS (ignored when CXXFLAGS is given)])dnl
-
-: "environment section" && {
+AC_ARG_VAR([cflags], [additional CFLAGS])
+AC_ARG_VAR([cppflags], [additional CPPFLAGS])
+AC_ARG_VAR([cxxflags], [additional CXXFLAGS])
+
+AC_DEFUN([RUBY_RM_RECURSIVE], [
+m4_version_prereq([2.70], [-1], [
+# suppress error messages, rm: cannot remove 'conftest.dSYM', from
+# AC_EGREP_CPP with CFLAGS=-g on Darwin.
+AS_CASE([$build_os], [darwin*], [
+rm() {
+ rm_recursive=''
+ for arg do
+ AS_CASE("$arg",
+ [--*], [],
+ [-*r*], [break],
+ [conftest.*], [AS_IF([test -d "$arg"], [rm_recursive=-r; break])],
+ [])
+ done
+ command rm $rm_recursive "[$]@"
+}
+])])])
+
+{ # environment section
+
HAVE_BASERUBY=yes
-BASERUBY_VERSION=
AC_ARG_WITH(baseruby,
AS_HELP_STRING([--with-baseruby=RUBY], [use RUBY as baseruby; RUBY is the pathname of ruby]),
[AS_CASE(["$withval"],
@@ -64,21 +42,14 @@ AC_ARG_WITH(baseruby,
[
AC_PATH_PROG([BASERUBY], [ruby], [false])
])
-# BASERUBY must be >= 2.5.0. Note that `"2.5.0" > "2.5"` is true.
-AS_IF([test "$HAVE_BASERUBY" != no -a "`RUBYOPT=- $BASERUBY --disable=gems -e 'print 42 if RUBY_VERSION > "2.5"' 2>/dev/null`" = 42], [
- AS_CASE(["$build_os"], [mingw*], [
- # Can MSys shell run a command with a drive letter?
- RUBYOPT=- `cygpath -ma "$BASERUBY"` --disable=gems -e exit 2>/dev/null || HAVE_BASERUBY=no
+AS_IF([test "$HAVE_BASERUBY" = yes -a "`RUBYOPT=- $BASERUBY -e 'print 42' 2>/dev/null`" = 42], [
+ AS_IF([test "`RUBYOPT=- $BASERUBY --disable=gems -e 'print 42' 2>/dev/null`" = 42], [
+ BASERUBY="$BASERUBY --disable=gems"
])
- RUBY_APPEND_OPTION(BASERUBY, "--disable=gems")
- BASERUBY_VERSION=`$BASERUBY -v`
- $BASERUBY -C "$srcdir" tool/downloader.rb -d tool -e gnu config.guess config.sub >&AS_MESSAGE_FD
+ $BASERUBY -C "$srcdir" tool/downloader.rb -d tool -e gnu config.guess config.sub
], [
- HAVE_BASERUBY=no
-])
-AS_IF([test "$HAVE_BASERUBY" = no], [
- AS_IF([test "$cross_compiling" = yes], [AC_MSG_ERROR([executable host ruby is required for cross-compiling])])
BASERUBY="echo executable host ruby is required. use --with-baseruby option.; false"
+ HAVE_BASERUBY=no
])
AC_SUBST(BASERUBY)
AC_SUBST(HAVE_BASERUBY)
@@ -95,53 +66,79 @@ AS_IF([test x"$HAVE_GIT" = xyes], [command -v "$GIT" > /dev/null || HAVE_GIT=no]
AC_SUBST(GIT)
AC_SUBST(HAVE_GIT)
-eval `sed -n -e ['s/^@%:@define RUBY_[A-Z_]*VERSION_\([A-Z][A-Z][A-Z_0-9]*\) \([0-9][0-9]*\)$/\1=\2/p'] \
- -e ['s/^@%:@define \(RUBY_ABI_VERSION\) \([0-9][0-9]*\).*/\1=\2/p'] \
- -e ['s/^@%:@define \(RUBY_PATCHLEVEL\) \(.*\)/\1=\2/p'] \
- $srcdir/include/ruby/internal/abi.h \
- $srcdir/include/ruby/version.h $srcdir/version.h`
+AC_DEFUN([RUBY_MINGW32],
+[AS_CASE(["$host_os"],
+[cygwin*], [
+AC_CACHE_CHECK(for mingw32 environment, rb_cv_mingw32,
+[AC_TRY_CPP([
+#ifndef __MINGW32__
+# error
+#endif
+], rb_cv_mingw32=yes,rb_cv_mingw32=no)
+rm -f conftest*])
+AS_IF([test "$rb_cv_mingw32" = yes], [
+ target_os="mingw32"
+ : ${ac_tool_prefix:="`expr "$CC" : ['\(.*-\)g\?cc[^/]*$']`"}
+])
+])
+AS_CASE(["$target_os"], [mingw*msvc], [
+target_os="`echo ${target_os} | sed 's/msvc$//'`"
+])
+AS_CASE(["$target_cpu-$target_os"], [x86_64-mingw*], [
+target_cpu=x64
+])
+])
+
+AC_DEFUN([RUBY_CPPOUTFILE],
+[AC_CACHE_CHECK(whether ${CPP} accepts -o, rb_cv_cppoutfile,
+[save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS='-o conftest-1.i'
+rb_cv_cppoutfile=no
+AC_TRY_CPP([test-for-cppout],
+ [grep test-for-cppout conftest-1.i > /dev/null && rb_cv_cppoutfile=yes])
+CPPFLAGS="$save_CPPFLAGS"
+rm -f conftest*])
+AS_IF([test "$rb_cv_cppoutfile" = yes], [
+ CPPOUTFILE='-o conftest.i'
+], [test "$rb_cv_cppoutfile" = no], [
+ CPPOUTFILE='> conftest.i'
+], [test -n "$rb_cv_cppoutfile"], [
+ CPPOUTFILE="$rb_cv_cppoutfile"
+])
+AC_SUBST(CPPOUTFILE)])
+
+AC_DEFUN([RUBY_PROG_GNU_LD],
+[AC_CACHE_CHECK(whether the linker is GNU ld, rb_cv_prog_gnu_ld,
+[AS_IF([`$CC $CFLAGS $CPPFLAGS $LDFLAGS --print-prog-name=ld 2>&1` -v 2>&1 | grep "GNU ld" > /dev/null], [
+ rb_cv_prog_gnu_ld=yes
+], [
+ rb_cv_prog_gnu_ld=no
+])])
+GNU_LD=$rb_cv_prog_gnu_ld
+AC_SUBST(GNU_LD)])
+
+eval `sed -n ['s/^@%:@define RUBY_API_VERSION_\([A-Z][A-Z_0-9]*\) \([0-9][0-9]*\)/API_\1=\2/p'] $srcdir/include/ruby/version.h`
+RUBY_PROGRAM_VERSION=`sed -n 's/^@%:@define RUBY_VERSION "\(.*\)"/\1/p' $srcdir/version.h`
+MAJOR=`echo $RUBY_PROGRAM_VERSION | cut -d. -f1`
+MINOR=`echo $RUBY_PROGRAM_VERSION | cut -d. -f2`
+TEENY=`echo $RUBY_PROGRAM_VERSION | cut -d. -f3`
for v in MAJOR MINOR TEENY; do
AS_IF([eval "test \"\$$v\" = ''"], [
AC_MSG_ERROR(could not determine $v number from version.h)
])
done
+AS_IF([test "$MAJOR.$MINOR" != "$API_MAJOR.$API_MINOR"], [
+ AC_MSG_ERROR([API version $API_MAJOR.$API_MINOR differs from program version $MAJOR.$MINOR])
+])
AC_SUBST(MAJOR)
AC_SUBST(MINOR)
AC_SUBST(TEENY)
+AC_SUBST(RUBY_PROGRAM_VERSION)
AC_SUBST(RUBY_API_VERSION, '$(MAJOR).$(MINOR)')
-AC_SUBST(RUBY_PROGRAM_VERSION, '$(MAJOR).$(MINOR).$(TEENY)')
-AS_CASE([$RUBY_PATCHLEVEL], [-*], [
- AC_DEFINE_UNQUOTED(RUBY_ABI_VERSION, [${RUBY_ABI_VERSION}])
-], [RUBY_ABI_VERSION=])
-
-AS_IF([test "$program_prefix" = NONE], [
- program_prefix=
-])
-AS_IF([test "$prefix" -ef .], [
- AC_MSG_ERROR(--prefix cannot be the current working directory.)
-])
-RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
-RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
-AC_SUBST(RUBY_BASE_NAME)
-AC_SUBST(RUBYW_BASE_NAME)
-AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}')
-
+RUBY_PATCHLEVEL=`sed -n 's/^#define RUBY_PATCHLEVEL //p' $srcdir/version.h`
+AC_DEFINE(CANONICALIZATION_FOR_MATHN)
dnl checks for alternative programs
AC_CANONICAL_BUILD
-AC_CANONICAL_HOST
-AC_CANONICAL_TARGET
-AS_CASE(["$target_cpu-$target_os"],
- [aarch64-darwin*], [
- target_cpu=arm64
- AS_CASE(["$target_vendor"], [unknown], [
- target_vendor=apple
- target=${target%%-unknown-*}-apple-${target@%:@*-unknown-}
- ])
- target="arm64-${target@%:@aarch64-}"
- AS_IF([test -n "$target_alias"], [target_alias="arm64-${target_alias@%:@aarch64-}"])
- ])
-
-AC_ARG_PROGRAM
RUBY_RM_RECURSIVE
AC_ARG_WITH(gcc,
AS_HELP_STRING([--without-gcc], [never use gcc]),
@@ -155,129 +152,21 @@ AS_IF([test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"], [
AC_MSG_ERROR(cached CC is different -- throw away $cache_file
(it is also a good idea to do 'make clean' before compiling))
])
+test -z "$CC" || ac_cv_prog_CC="$CC"
-RUBY_WASM_TOOLS
-
-AS_CASE(["${build_os}"],
-[linux*|cygwin*|msys*], [
- # Naruse prefers GCC on Linux
- AC_CHECK_TOOLS([CC], [gcc clang cc])
-],
-[solaris*], [
- # Clang on Solaris is largely untested.
- # https://bugs.ruby-lang.org/issues/17949
- AC_CHECK_TOOLS([CC], [cc gcc])
-], [
- # OpenBSD wants to prefer cc over gcc.
- # See https://github.com/ruby/ruby/pull/2443
- AC_CHECK_TOOLS([CC], [cl.exe clang cc gcc c99 /usr/ucb/cc])
-])
-
-AC_ARG_VAR([AR], [Archiver command])
-AC_ARG_VAR([AS], [Assembler command])
-AC_ARG_VAR([CC], [C compiler command])
-AC_ARG_VAR([CXX], [C++ compiler command])
-AC_ARG_VAR([LD], [Linker command])
-AC_ARG_VAR([NM], [Symbol list command])
-AC_ARG_VAR([OBJCOPY], [Objcopy command])
-AC_ARG_VAR([OBJDUMP], [Objdump command])
-AC_ARG_VAR([RANLIB], [Ranlib command])
-AC_ARG_VAR([STRIP], [Strip command])
-
-# We don't want to bother things like `ccache gcc`, `clang -shared-libgcc`, ...
-set rb_dummy ${CC}
-rb_CC=$2
-AC_DEFUN([RUBY_CHECK_PROG_FOR_CC], [
- rb_prog=`echo "${rb_CC}" | sed "$2"`
- AC_CHECK_PROG([$1], [$rb_prog], [$rb_prog])
-])
-AS_CASE(["/${rb_CC} "],
-[*@<:@\ /@:>@"cc "*], [
- # Don't try g++/clang++ when CC=cc
- AC_CHECK_PROGS([CXX], [cl.exe CC c++])
-],
-[*icc*], [
- # Intel C++ has interprocedural optimizations. It tends to come with its
- # own linker etc.
- RUBY_CHECK_PROG_FOR_CC([AR], [s/icc/xiar/])
- RUBY_CHECK_PROG_FOR_CC([CXX], [s/icc/icpc/])
- RUBY_CHECK_PROG_FOR_CC([LD], [s/icc/xild/])
-],
-[*gcc*], [
- # Ditto for GCC.
- RUBY_CHECK_PROG_FOR_CC([LD], [s/gcc/ld/])
- RUBY_CHECK_PROG_FOR_CC([AR], [s/gcc/gcc-ar/])
- RUBY_CHECK_PROG_FOR_CC([CXX], [s/gcc/g++/])
- RUBY_CHECK_PROG_FOR_CC([NM], [s/gcc/gcc-nm/])
- RUBY_CHECK_PROG_FOR_CC([RANLIB], [s/gcc/gcc-ranlib/])
-],
-[*clang*], [
- # Ditto for LLVM. Note however that llvm-as is a LLVM-IR to LLVM bitcode
- # assembler that does not target your machine native binary.
- RUBY_CHECK_PROG_FOR_CC([LD], [s/clang/ld/]) # ... maybe try lld ?
- RUBY_CHECK_PROG_FOR_CC([AR], [s/clang/llvm-ar/])
-# RUBY_CHECK_PROG_FOR_CC([AS], [s/clang/llvm-as/])
- RUBY_CHECK_PROG_FOR_CC([CXX], [s/clang/clang++/])
- RUBY_CHECK_PROG_FOR_CC([NM], [s/clang/llvm-nm/])
- RUBY_CHECK_PROG_FOR_CC([OBJCOPY], [s/clang/llvm-objcopy/])
- RUBY_CHECK_PROG_FOR_CC([OBJDUMP], [s/clang/llvm-objdump/])
- RUBY_CHECK_PROG_FOR_CC([RANLIB], [s/clang/llvm-ranlib/])
- RUBY_CHECK_PROG_FOR_CC([STRIP], [s/clang/llvm-strip/])
-])
-AS_UNSET(rb_CC)
-AS_UNSET(rb_dummy)
-
-AS_CASE(["${build_os}"],
-[solaris*], [
- AC_PATH_TOOL([LD], [ld], [/usr/ccs/bin/ld], [/usr/ccs/bin:$PATH])
-],
-[aix*], [
- AC_PATH_TOOL([NM], [nm], [/usr/ccs/bin/nm], [/usr/ccs/bin:$PATH])
-],
-[darwin*], [
- # For Apple clang version 14.0.3 (clang-1403.0.22.14.1)
- ac_cv_prog_ac_ct_AR=`$CC -print-prog-name=ar`
- ac_cv_prog_ac_ct_LD=`$CC -print-prog-name=ld`
- ac_cv_prog_ac_ct_NM=`$CC -print-prog-name=nm`
-])
-AS_CASE(["${target_os}"],
-[cygwin*|msys*|mingw*|darwin*], [
- ac_cv_prog_ac_ct_OBJCOPY=":"
+AS_IF([test "$program_prefix" = NONE], [
+ program_prefix=
])
-
-rb_test_CFLAGS=${CFLAGS+yes}
-rb_test_CXXFLAGS=${CXXFLAGS+yes}
-
-# BSD's ports and MacPorts prefix GNU binutils with 'g'
-
-dnl Seems necessarily in order to add -std=gnu99 option for gcc 4.9.
-m4_version_prereq([2.70], [AC_PROG_CC], [AC_PROG_CC_C99])
-
-AC_PROG_CXX
-AC_PROG_CPP
-AC_PROG_RANLIB
-AC_CHECK_TOOLS([AR], [gar ar])
-AC_CHECK_TOOLS([AS], [gas as])
-AC_CHECK_TOOLS([LD], [gld ld]) # ... try gold ?
-AC_CHECK_TOOLS([NM], [gnm nm])
-AC_CHECK_TOOLS([OBJCOPY], [gobjcopy objcopy], [:])
-AC_CHECK_TOOLS([OBJDUMP], [gobjdump objdump])
-AC_CHECK_TOOLS([STRIP], [gstrip strip], [:])
-
-# nm errors with Rust's LLVM bitcode when Rust uses a newer LLVM version than nm.
-# In case we're working with llvm-nm, tell it to not worry about the bitcode.
-AS_IF([${NM} --help | grep -q 'llvm-bc'], [NM="$NM --no-llvm-bc"])
-
-AS_IF([test ! $rb_test_CFLAGS], [AS_UNSET(CFLAGS)]); AS_UNSET(rb_test_CFLAGS)
-AS_IF([test ! $rb_test_CXXFLAGS], [AS_UNSET(CXXFLAGS)]); AS_UNSET(rb_save_CXXFLAGS)
-
-AS_IF([test "${CXX}" = "g++" -a -z "${GXX}"], [
- # AC_PROG_CXX sets $CXX to "g++" when it purposefully finds that there is
- # _no_ g++. This brain-damaged design must be worked around. Thankfully,
- # similar thing doesn't happen for AC_PROG_CC.
- rb_there_is_in_fact_no_gplusplus_but_autoconf_is_cheating_us=true
+AS_IF([test "$prefix" -ef .], [
+ AC_MSG_ERROR(--prefix cannot be the current working directory.)
])
+RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
+RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
+AC_SUBST(RUBY_BASE_NAME)
+AC_SUBST(RUBYW_BASE_NAME)
+AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}')
+AC_CANONICAL_TARGET
test x"$target_alias" = x &&
target_os=`echo $target_os | sed 's/linux-gnu$/linux/;s/linux-gnu/linux-/'`
ac_install_sh='' # unusable for extension libraries.
@@ -304,7 +193,7 @@ AS_CASE("${os_version_style}",
[minor], [os_version_style_transform=['s/\([0-9]\.[0-9][0-9]*\)\.[0-9][.0-9]*$/\1/']],
[major+0], [os_version_style_transform=['s/\([0-9]\)\.[0-9][.0-9]*$/\1.0/']],
[major], [os_version_style_transform=['s/\([0-9]\)\.[0-9][.0-9]*$/\1/']],
- [none], [os_version_style_transform=['s/[0-9]*\.[0-9][.0-9]*$//']],
+ [none], [os_version_style_transform=['s/[0-9]\.[0-9][.0-9]*$//']],
[AC_MSG_ERROR(unknown --with-os-version-style: $withval)])
AS_IF([test -z "$target_alias" -a -n "$os_version_style_transform"],
[
@@ -312,6 +201,28 @@ AS_IF([test -z "$target_alias" -a -n "$os_version_style_transform"],
target_os=`echo ${target_os} | sed "$os_version_style_transform"`
])
+AC_DEFUN([RUBY_APPEND_OPTION],
+ [# RUBY_APPEND_OPTION($1)
+ AS_CASE([" [$]{$1-} "],
+ [*" $2 "*], [], [' '], [ $1="$2"], [ $1="[$]$1 $2"])])
+AC_DEFUN([RUBY_APPEND_OPTIONS],
+ [# RUBY_APPEND_OPTIONS($1)
+ for rb_opt in $2; do
+ AS_CASE([" [$]{$1-} "],
+ [*" [$]{rb_opt} "*], [], [' '], [ $1="[$]{rb_opt}"], [ $1="[$]$1 [$]{rb_opt}"])
+ done])
+AC_DEFUN([RUBY_PREPEND_OPTION],
+ [# RUBY_PREPEND_OPTION($1)
+ AS_CASE([" [$]{$1-} "],
+ [*" $2 "*], [], [' '], [ $1="$2"], [ $1="$2 [$]$1"])])
+AC_DEFUN([RUBY_PREPEND_OPTIONS],
+ [# RUBY_PREPEND_OPTIONS($1)
+ unset rb_opts; for rb_opt in $2; do
+ AS_CASE([" [$]{rb_opts} [$]{$1-} "],
+ [*" [$]{rb_opt} "*], [], [' '], [ $1="[$]{rb_opt}"], [ rb_opts="[$]{rb_opts}[$]{rb_opt} "])
+ done
+ $1="[$]{rb_opts}[$]$1"])
+
AC_ARG_WITH(arch,
AS_HELP_STRING([--with-arch=ARCHS],
[build an Apple/NeXT Multi Architecture Binary (MAB);
@@ -321,12 +232,111 @@ AC_ARG_WITH(arch,
target platform]),
[target_archs="$withval"], [unset target_archs])
+AC_DEFUN([RUBY_DEFAULT_ARCH], [
+AC_MSG_CHECKING([arch option])
+AS_CASE([$1],
+ [*64], [ARCH_FLAG=-m64],
+ [[i[3-6]86]], [ARCH_FLAG=-m32],
+ [AC_MSG_ERROR(unknown target architecture: $target_archs)]
+ )
+AC_MSG_RESULT([$ARCH_FLAG])
+])
+
+AC_DEFUN([RUBY_UNIVERSAL_ARCH], [
+# RUBY_UNIVERSAL_ARCH begin
+ARCH_FLAG=`expr " $CXXFLAGS " : ['.* \(-m[0-9][0-9]*\) ']`
+test ${CXXFLAGS+set} && CXXFLAGS=`echo "$CXXFLAGS" | sed [-e 's/ *-arch *[^ ]*//g' -e 's/ *-m32//g' -e 's/ *-m64//g']`
+ARCH_FLAG=`expr " $CFLAGS " : ['.* \(-m[0-9][0-9]*\) ']`
+test ${CFLAGS+set} && CFLAGS=`echo "$CFLAGS" | sed [-e 's/ *-arch *[^ ]*//g' -e 's/ *-m32//g' -e 's/ *-m64//g']`
+test ${LDFLAGS+set} && LDFLAGS=`echo "$LDFLAGS" | sed [-e 's/ *-arch *[^ ]*//g' -e 's/ *-m32//g' -e 's/ *-m64//g']`
+unset universal_binary universal_archnames
+AS_IF([test ${target_archs+set}], [
+ AC_MSG_CHECKING([target architectures])
+ target_archs=`echo $target_archs | tr , ' '`
+ # /usr/lib/arch_tool -archify_list $TARGET_ARCHS
+ for archs in $target_archs
+ do
+ AS_CASE([",$universal_binary,"],[*",$archs,"*], [],[
+ cpu=`$SHELL "$ac_aux_dir/config.sub" "${archs}-${target_os}" 2>&1` || {
+ AC_MSG_RESULT([failed])
+ AC_MSG_ERROR([$cpu])
+ }
+ cpu=`echo $cpu | sed 's/-.*-.*//'`
+ universal_binary="${universal_binary+$universal_binary,}$cpu"
+ universal_archnames="${universal_archnames} ${archs}=${cpu}"
+ ARCH_FLAG="${ARCH_FLAG+$ARCH_FLAG }-arch $archs"
+ ])
+ done
+ target_archs="$universal_binary"
+ unset universal_binary
+ AS_CASE(["$target_archs"],
+ [*,*], [universal_binary=yes],
+ [unset universal_archnames])
+ AC_MSG_RESULT([$target_archs])
+
+ target=`echo $target | sed "s/^$target_cpu-/-/"`
+ target_alias=`echo $target_alias | sed "s/^$target_cpu-/-/"`
+ AS_IF([test "${universal_binary-no}" = yes], [
+ AC_SUBST(try_header,try_compile)
+ target_cpu=universal
+ real_cross_compiling=$cross_compiling
+ ], [
+ AS_IF([test x"$target_cpu" != x"${target_archs}"], [
+ echo 'int main(){return 0;}' > conftest.c
+ AS_IF([$CC $CFLAGS $ARCH_FLAG -o conftest conftest.c > /dev/null 2>&1], [
+ rm -fr conftest.*
+ ], [
+ RUBY_DEFAULT_ARCH("$target_archs")
+ ])
+ ])
+ target_cpu=${target_archs}
+ ])
+ AS_CASE(["$target"], [-*], [ target="$target_cpu${target}"])
+ AS_CASE(["$target_alias"], [-*], [ target_alias="$target_cpu${target_alias}"])
+], [
+ AS_IF([test x"$target_alias" = x], [
+ AS_CASE(["$target_os"],
+ [darwin*], [
+ AC_MSG_CHECKING([for real target cpu])
+ target=`echo $target | sed "s/^$target_cpu-/-/"`
+ target_cpu=`$CC -E - 2>/dev/null <<EOF |
+#ifdef __x86_64__
+"processor-name=x86_64"
+#endif
+#ifdef __i386__
+"processor-name=i386"
+#endif
+#ifdef __ppc__
+"processor-name=powerpc"
+#endif
+#ifdef __ppc64__
+"processor-name=powerpc64"
+#endif
+EOF
+ sed -n 's/^"processor-name=\(.*\)"/\1/p'`
+ target="$target_cpu${target}"
+ AC_MSG_RESULT([$target_cpu])
+ ])
+ ])
+ target_archs="$target_cpu"
+])
+AS_IF([test "${target_archs}" != "${rb_cv_target_archs-${target_archs}}"], [
+ AC_MSG_ERROR([target arch(s) has changed from ${rb_cv_target_archs-nothing} to ${target_archs}])
+], [
+ rb_cv_target_archs=${target_archs}
+])
+AS_IF([test "x${ARCH_FLAG}" != x], [
+ CFLAGS="${CFLAGS:+$CFLAGS }${ARCH_FLAG}"
+ LDFLAGS="${LDFLAGS:+$LDFLAGS }${ARCH_FLAG}"
+])
+# RUBY_UNIVERSAL_ARCH end
+])
+
AC_ARG_ENABLE(load-relative,
AS_HELP_STRING([--enable-load-relative], [resolve load paths at run time]),
[load_relative=$enableval])
-# checks for UNIX variants that set C preprocessor variables
-AC_USE_SYSTEM_EXTENSIONS
+AC_ARG_PROGRAM
dnl Checks for programs.
@@ -335,51 +345,59 @@ test -z "$optflags" ||
cflagspat="$cflagspat;s|"`eval echo '"'"${optflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
test -z "$debugflags" ||
cflagspat="$cflagspat;s|"`eval echo '"'"${debugflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
-test -z "$warnflags" ||
+test -z "warnflags" ||
cflagspat="$cflagspat;s|"`eval echo '"'"${warnflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
AS_IF([test -z "${CFLAGS+set}"], [
cflags=`echo " $cflags " | sed "$cflagspat;s/^ *//;s/ *$//"`
orig_cflags="$cflags"
cflags="$cflags "'${optflags} ${debugflags} ${warnflags}'
])
-dnl AS_IF([test -z "${CXXFLAGS+set}"], [
-dnl cxxflags=`echo " $cxxflags " | sed "$cflagspat;s/^ *//;s/ *$//"`
-dnl orig_cxxflags="$cxxflags"
-dnl cxxflags="$cxxflags "'${optflags} ${debugflags} ${warnflags}'
-dnl ])
+AS_IF([test -z "${CXXFLAGS+set}"], [
+ cxxflags=`echo " $cxxflags " | sed "$cflagspat;s/^ *//;s/ *$//"`
+ orig_cxxflags="$cxxflags"
+ cxxflags="$cxxflags "'${optflags} ${debugflags} ${warnflags}'
+])
AS_CASE(["$host_os:$build_os"],
[darwin*:darwin*], [
+ AC_CHECK_TOOLS(CC, [clang gcc cc])
# Following Apple deployed clang are broken
# clang version 1.0 (http://llvm.org/svn/llvm-project/cfe/tags/Apple/clang-23 exported)
# Apple clang version 2.0 (tags/Apple/clang-137) (based on LLVM 2.9svn)
# Apple clang version 2.1 (tags/Apple/clang-163.7.1) (based on LLVM 3.0svn)
- AC_PREPROC_IFELSE(
- [AC_LANG_PROGRAM([
- @%:@if defined __APPLE_CC__ && defined __clang_major__ && __clang_major__ < 3
- @%:@error premature clang
- @%:@endif
- ])],
- [],
- [AC_MSG_ERROR([clang version 3.0 or later is required])])
-])
-
-AS_CASE(["$target_os"],
-[darwin*], [
- AC_MSG_CHECKING(if minimum required OS X version is supported)
- AC_PREPROC_IFELSE([AC_LANG_SOURCE([[@%:@include <AvailabilityMacros.h>
- @%:@if MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_5
- @%:@error pre OS X 10.5
- [!<===== pre OS X 10.5 =====>]
+ AS_IF([! $CC -E -xc - <<SRC >/dev/null], [
+ @%:@if defined __APPLE_CC__ && defined __clang_major__ && __clang_major__ < 3
+ @%:@error premature clang
@%:@endif
- ]])],
- [AC_MSG_RESULT(yes)],
- [AC_MSG_RESULT(no)
- AC_MSG_ERROR([Unsupported OS X version is required])])
+SRC
+ AC_MSG_ERROR([clang version 3.0 or later is required])
+ ])
+])
+AS_IF([test x"${build}" != x"${host}"], [
+ AC_CHECK_TOOL(CC, gcc)
])
+AC_PROG_CC
+
+dnl Select the appropriate C++ compiler in OS X
+AS_CASE(["$build_os"],
+ [darwin1*.*], [
+ AS_CASE(["x$CC"],
+ [xgcc-4.2|x/usr/bin/gcc-4.2], [: ${CXX=g++-4.2}],
+ [xgcc|x/usr/bin/gcc], [: ${CXX=g++}],
+ [xcc|x/usr/bin/cc], [: ${CXX=c++}],
+ [xicc], [: ${CXX=icpc}],
+ [xclang|x/usr/bin/clang], [: ${CXX=clang++}])
+ ])
+test -z "$CXX" || ac_cv_prog_CXX="$CXX"
+
+AC_PROG_CXX
RUBY_MINGW32
+AC_PROG_GCC_TRADITIONAL
AC_SUBST(GCC)
+AS_CASE(["$target_os"],
+[solaris*], [AC_PATH_TOOL([LD], [ld], [/usr/ccs/bin/ld], [/usr/ccs/bin:$PATH])],
+[AC_CHECK_TOOL([LD], [ld], [ld])])
AC_SUBST(LD)
AS_IF([test "$GCC" = yes], [
linker_flag=-Wl,
@@ -388,13 +406,11 @@ AS_IF([test "$GCC" = yes], [
gcc_minor=`echo =__GNUC_MINOR__ | $CC -E -xc - | sed '/^=/!d;s///'`
test -n "$gcc_major" || gcc_major=0
test -n "$gcc_minor" || gcc_minor=0
- icc_version=`echo =__ICC | $CC -E -xc - | sed '/^=/!d;s///;/^__ICC/d'`
+ AS_CASE(["x$CC"], [xicc], [
+ icc_version=`echo =__ICC | $CC -E -xc - | sed '/^=/!d;s///'`
+ ])
test -n "$icc_version" || icc_version=0
# RUBY_APPEND_OPTIONS(XCFLAGS, ["-include ruby/config.h" "-include ruby/missing.h"])
-
- AS_IF([test "$gcc_major" -lt 4], [
- AC_MSG_ERROR([too old GCC: $gcc_major.$gcc_minor])
- ])
], [
linker_flag=
])
@@ -409,44 +425,6 @@ AC_SUBST(OUTFLAG)
AC_SUBST(COUTFLAG)
AC_SUBST(CSRCFLAG)
-: ${RJIT_CC=$CC}
-AS_IF([test "x$cross_compiling" = xno], [
- AC_PATH_PROG([RJIT_CC], ${RJIT_CC})
-
- # if $CC is in /usr/lib/ccache/$CC, search original $CC (disable ccache)
- AS_IF([echo $RUBY_DEBUG | grep ci > /dev/null &&
- echo $RJIT_CC | grep ^/usr/lib/ccache > /dev/null], [
- PATH=`echo $PATH | sed "s/\/usr\/lib\/ccache://"` RJIT_CC=`which $CC`])
-
- AS_CASE([$target_os],
- [*mingw*], [command -v cygpath > /dev/null && RJIT_CC=`cygpath -ma $RJIT_CC`])
- shift 2
- RJIT_CC="$RJIT_CC${1+ }$*"
-])
-
-AS_CASE(["$build_os"],
- [darwin1*.*], [
- # Xcode linker warns for deprecated architecture and wrongly
- # installed TBD files.
- CC_WRAPPER=""
- echo 'int main(void) {return 0;}' > conftest.c
- AS_IF([$CC -framework Foundation -o conftest conftest.c 2>&1 |
- grep '^ld: warning: text-based stub file' >/dev/null], [
- CC_WRAPPER=`cd -P "${tooldir}" && pwd`/darwin-cc
- CC="$CC_WRAPPER $CC"
- ])
- rm -fr conftest*
- ])
-AS_CASE(["$target_os"],
- [wasi*], [
- # Clang linker automatically uses wasm-opt with -O if it found.
- # https://github.com/llvm/llvm-project/blob/812828984c10857a4cd260eb638c52a4411f9143/clang/lib/Driver/ToolChains/WebAssembly.cpp#L95-L118
- # However optimization before asyncify causes misoptimization,
- # so wrap clang to insert our fake wasm-opt, which does nothing, in PATH.
- CC_WRAPPER=`cd -P "${tooldir}" && pwd`/wasm-clangw
- CC="$CC_WRAPPER $CC"
- ])
-
cc_version=
for option in --version -v -V -qversion; do
cc_version_message=`$CC $option 2>&1`
@@ -459,27 +437,64 @@ done
AC_SUBST(CC_VERSION, $cc_version)
AC_SUBST(CC_VERSION_MESSAGE, $cc_version_message)
-: ${DLDFLAGS="$LDFLAGS"}
-
RUBY_UNIVERSAL_ARCH
-AS_IF([test "$target_cpu" != "$host_cpu" -a "$GCC" = yes -a "$cross_compiling" = no -a "${universal_binary:-no}" = no], [
+AS_IF([test "$target_cpu" != "$host_cpu" -a "$GCC" = yes -a "$cross_compiling" = no -a "$universal_binary" = no], [
RUBY_DEFAULT_ARCH("$target_cpu")
])
-host_os=$target_os
-host_vendor=$target_vendor
-host_cpu=$target_cpu
-host=$target
-host_alias=$target_alias
+AS_CASE(["$target_cpu-$target_os"], [[i[3-6]86*]], [
+ AC_CACHE_CHECK([for __sync_val_compare_and_swap], [rb_cv_gcc_compiler_cas], [
+ AC_TRY_LINK([unsigned long atomic_var;],
+ [
+ __sync_val_compare_and_swap(&atomic_var, 0, 1);
+ ],
+ [rb_cv_gcc_compiler_cas=yes],
+ [rb_cv_gcc_compiler_cas=no])])
+ AS_IF([test "$rb_cv_gcc_compiler_cas" = no], [
+ unset rb_cv_gcc_compiler_cas
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -march=i486"
+ AC_CACHE_CHECK([for __sync_val_compare_and_swap with -march=i486], [rb_cv_gcc_compiler_cas], [
+ AC_TRY_LINK([unsigned long atomic_var;],
+ [
+ __sync_val_compare_and_swap(&atomic_var, 0, 1);
+ ],
+ [rb_cv_gcc_compiler_cas=yes
+ ARCH_FLAG="-march=i486"],
+ [rb_cv_gcc_compiler_cas=no])])
+ CFLAGS="$save_CFLAGS"
+ ])])
+
+AS_CASE(["$target_os"], [darwin*], [
+if libtool 2>&1 | grep no_warning_for_no_symbols > /dev/null; then
+ ac_cv_prog_ac_ct_RANLIB=:
+ ac_cv_prog_ac_ct_AR='libtool -static'
+ rb_cv_arflags='-no_warning_for_no_symbols -o'
+fi
+])
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(AR, ar)
+AS_IF([test -z "$AR"], [
+ AC_CHECK_PROGS(AR, aal, ar)
+])
AC_CACHE_CHECK([for $AR flags], [rb_cv_arflags], [
AS_IF([$AR rcD conftest.a > /dev/null 2>&1 && rm conftest.a],
[rb_cv_arflags=rcD], [rb_cv_arflags=rcu])
])
AC_SUBST(ARFLAGS, ["$rb_cv_arflags "])
+
+AC_CHECK_TOOL(AS, as)
+ASFLAGS=$ASFLAGS
AC_SUBST(ASFLAGS)
+AS_CASE(["$target_os"],[cygwin*|mingw*], [ac_cv_prog_ac_ct_OBJCOPY=":"])
+
+# BSD's ports and MacPorts prefix GNU binutils with 'g'
+AC_CHECK_TOOLS(OBJDUMP, [objdump gobjdump])
+AC_CHECK_TOOLS(OBJCOPY, [objcopy gobjcopy])
+
AS_CASE(["$target_os"],
-[cygwin*|msys*|mingw*], [
+[cygwin*|mingw*], [
AC_CHECK_TOOL(WINDRES, windres)
AC_CHECK_TOOL(DLLWRAP, dllwrap)
target=`echo $target | sed "s/^$target_cpu-/-/"`
@@ -491,35 +506,88 @@ AS_CASE(["$target_os"],
[mingw*], [
test "$rb_cv_msvcrt" = "" && unset rb_cv_msvcrt
AC_CACHE_CHECK(for mingw32 runtime DLL, rb_cv_msvcrt, [
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdio.h>]],
- [[FILE* volatile f = stdin; return 0;]])],
+ AC_TRY_LINK([@%:@include <stdio.h>],
+ [FILE* volatile f = stdin; return 0;],
[rb_cv_msvcrt=`$OBJDUMP -p conftest$ac_exeext |
tr A-Z a-z |
- sed -n '/^[[ ]]*dll name: \(msvc.*\)\.dll$/{s//\1/p;q;};
- /^[[ ]]*dll name: \(ucrtbase\|api-ms-win-crt-.*\)\.dll$/{s//ucrt/p;q;}'`],
+ sed -n '/^[[ ]]*dll name: \(msvc.*\)\.dll$/{s//\1/p;q;}'`],
[rb_cv_msvcrt=msvcrt])
test "$rb_cv_msvcrt" = "" && rb_cv_msvcrt=msvcrt])
RT_VER=`echo "$rb_cv_msvcrt" | tr -cd [0-9]`
test "$RT_VER" = "" && RT_VER=60
- test "$rb_cv_msvcrt" = "ucrt" && RT_VER=140
AC_DEFINE_UNQUOTED(RUBY_MSVCRT_VERSION, $RT_VER)
sysconfdir=
])
- rb_cv_binary_elf=no
: ${enable_shared=yes}
],
+[aix*], [AC_CHECK_TOOL(NM, nm, /usr/ccs/bin/nm, /usr/ccs/bin:$PATH)],
[hiuxmpp*], [AC_DEFINE(__HIUX_MPP__)]) # by TOYODA Eizi <toyoda@npd.kishou.go.jp>
-
+AC_CHECK_TOOL(NM, nm)
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_INSTALL
+AC_PROG_MKDIR_P
+AS_IF([test "x$MKDIR_P" = "x -d"], [
+ AS_IF([test x"$as_mkdir_p" != xfalse], [
+ MKDIR_P='mkdir -p'
+ echo "use 'mkdir -p' as MKDIR_P"
+ ], [
+ AC_MSG_ERROR([mkdir -p is required])
+ ])
+])
+MAKEDIRS="$MKDIR_P"
+AC_SUBST(MAKEDIRS)
-AS_CASE(["$target_os"],[openbsd*],[
- ac_cv_path_mkdir="mkdir"
+AC_DEFUN([RUBY_DTRACE_AVAILABLE],
+[AC_CACHE_CHECK(whether dtrace USDT is available, rb_cv_dtrace_available,
+[
+ echo "provider conftest{ probe fire(); };" > conftest_provider.d
+ rb_cv_dtrace_available=no
+ AS_FOR(opt, rb_dtrace_opt, ["-xnolibs" ""], [dnl
+ AS_IF([$DTRACE opt -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null],
+ [], [continue])
+ AC_TRY_COMPILE([@%:@include "conftest_provider.h"], [CONFTEST_FIRE();],
+ [], [continue])
+ # DTrace is available on the system
+ rb_cv_dtrace_available=yes${rb_dtrace_opt:+"(opt)"}
+ break
+ ])
+ rm -f conftest.[co] conftest_provider.[dho]
+])
+AS_CASE(["$rb_cv_dtrace_available"], ["yes("*")"],
+ [DTRACE_OPT=`expr "$rb_cv_dtrace_available" : "yes(\(.*\))"`])
])
-RUBY_PROG_MAKEDIRS
+AC_DEFUN([RUBY_DTRACE_POSTPROCESS],
+[AC_CACHE_CHECK(whether $DTRACE needs post processing, rb_cv_prog_dtrace_g,
+[
+ rb_cv_prog_dtrace_g=no
+ AS_IF([{
+ cat >conftest_provider.d <<_PROBES &&
+ provider conftest {
+ probe fire();
+ };
+_PROBES
+ $DTRACE ${DTRACE_OPT} -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null &&
+ :
+ }], [
+ AC_TRY_COMPILE([@%:@include "conftest_provider.h"], [CONFTEST_FIRE();], [
+ AS_IF([{
+ cp -p conftest.${ac_objext} conftest.${ac_objext}.save &&
+ $DTRACE ${DTRACE_OPT} -G -s conftest_provider.d conftest.${ac_objext} 2>/dev/null &&
+ :
+ }], [
+ AS_IF([cmp -s conftest.o conftest.${ac_objext}.save], [
+ rb_cv_prog_dtrace_g=yes
+ ], [
+ rb_cv_prog_dtrace_g=rebuild
+ ])
+ ])])
+ ])
+ rm -f conftest.[co] conftest_provider.[dho]
+])
+])
AC_CHECK_PROG([DTRACE], [${ac_tool_prefix}dtrace], [${ac_tool_prefix}dtrace])
AS_IF([test "$cross_compiling:$ac_cv_prog_DTRACE" = no: -a -n "$ac_tool_prefix"], [
@@ -529,35 +597,11 @@ AS_IF([test "$cross_compiling:$ac_cv_prog_DTRACE" = no: -a -n "$ac_tool_prefix"]
AC_CHECK_PROGS(DOT, dot)
AC_CHECK_PROGS(DOXYGEN, doxygen)
-tool_warned=$ac_tool_warned ac_tool_warned=no
-AC_CHECK_TOOL(PKG_CONFIG, pkg-config)
-ac_tool_warned=$tool_warned
-AS_IF([test -z "$PKG_CONFIG"], [],
-["$PKG_CONFIG" --print-errors --version > /dev/null 2>&1], [],
-[
- unset ac_cv_prog_PKG_CONFIG
- PKG_CONFIG=
- AC_MSG_WARN([$PKG_CONFIG does not work; ignore])
-])
+AC_CHECK_PROG(PKG_CONFIG, pkg-config, [pkg-config], [], [],
+ [`"$as_dir/$ac_word$ac_exec_ext" --print-errors --version > /dev/null 2>&1 || echo "$as_dir/$ac_word$ac_exec_ext"`])
-AC_MSG_CHECKING([whether it is Android])
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- @%:@ifndef __ANDROID__
- @%:@error Not android
- @%:@endif
-]], [[]])],
-[
- AC_MSG_RESULT(yes)
- target_os=${target_os}-android
- AS_IF([test "x$cross_compiling" = xno], [
- AC_MSG_CHECKING([for Android API version])
- # hacky workaround: https://github.com/termux/termux-packages/issues/6176
- rb_android_api=`getprop ro.build.version.sdk`
- AC_MSG_RESULT($rb_android_api)
- RUBY_APPEND_OPTIONS(CPPFLAGS, -D__ANDROID_API__=$rb_android_api -Wno-macro-redefined)
- ])
-],
-[AC_MSG_RESULT(no)])
+# checks for UNIX variants that set C preprocessor variables
+AC_USE_SYSTEM_EXTENSIONS
AC_SUBST(RM, ['rm -f'])
AC_SUBST(CP, ['cp'])
@@ -589,19 +633,37 @@ AS_IF([test -f conf$$.dir/src/cdcmd], [
rm -fr conf$$.dir
AC_MSG_RESULT([$CHDIR])
AC_SUBST(CHDIR)
+
}
+{ # compiler section
+
+AC_DEFUN([RUBY_WERROR_FLAG], [dnl
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $rb_cv_warnflags"
+AS_IF([test "${ac_c_werror_flag+set}"], [
+ rb_c_werror_flag="$ac_c_werror_flag"
+], [
+ unset rb_c_werror_flag
+])
+ac_c_werror_flag=yes
+$1
+CFLAGS="$save_CFLAGS"
+save_CFLAGS=
+AS_IF([test "${rb_c_werror_flag+set}"], [
+ ac_c_werror_flag="$rb_c_werror_flag"
+], [
+ unset ac_c_werror_flag
+])])
-: "compiler section" && {
RUBY_WERROR_FLAG([
AC_MSG_CHECKING([whether CFLAGS is valid])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+ AC_TRY_COMPILE([], [],
[AC_MSG_RESULT(yes)],
[
AC_MSG_RESULT(no)
AC_MSG_ERROR([something wrong with CFLAGS="$CFLAGS"])
]
)
-
AC_MSG_CHECKING([whether LDFLAGS is valid])
{
mkdir tmp.$$.try_link &&
@@ -610,7 +672,7 @@ RUBY_WERROR_FLAG([
echo '<?xml?><plist><dict><key>CFBundleIdentifier</key><string></string></dict></plist>' > Info.plist &&
:
} || AC_MSG_ERROR([failed to make temporary directory])
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+ AC_TRY_LINK([], [],
[AC_MSG_RESULT(yes)],
[
cd .. && rm -fr tmp.$$.try_link
@@ -621,58 +683,55 @@ RUBY_WERROR_FLAG([
cd .. && rm -fr tmp.$$.try_link
])
-: "rpath" && {
- AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[
- AS_CASE(["`head -1 conftest$EXEEXT | tr -dc '\177ELF' | tr '\177' .`"],
- [.ELF*], [rb_cv_binary_elf=yes], [rb_cv_binary_elf=no])],
- [rb_cv_binary_elf=no])])
+AC_DEFUN([RUBY_TRY_CFLAGS], [
+ AC_MSG_CHECKING([whether ]$1[ is accepted as CFLAGS])
+ RUBY_WERROR_FLAG([
+ CFLAGS="[$]CFLAGS $1"
+ AC_TRY_COMPILE([$4], [$5],
+ [$2
+ AC_MSG_RESULT(yes)],
+ [$3
+ AC_MSG_RESULT(no)])
+ ])
+])
- rpathflag=''
- AS_IF([test x"${RPATHFLAG=}" = x], [
- AS_CASE(["$target_os"],
+AC_DEFUN([RUBY_TRY_LDFLAGS], [
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="[$]LDFLAGS $1"
+ AC_MSG_CHECKING([whether $1 is accepted as LDFLAGS])
+ RUBY_WERROR_FLAG([
+ AC_TRY_LINK([$4], [$5],
+ [$2
+ AC_MSG_RESULT(yes)],
+ [$3
+ AC_MSG_RESULT(no)])
+ ])
+ LDFLAGS="$save_LDFLAGS"
+ save_LDFLAGS=
+])
+
+: ${DLDFLAGS="$LDFLAGS"}
+: ${RPATHFLAG=''}
+rpathflag=''
+AS_IF([test x"${RPATHFLAG}" = x], [
+ AS_CASE(["$target_os"],
+ [hpux*], [AS_IF([test "$rb_cv_prog_gnu_ld" = no], [rpathflag='+b '])],
[aix*], [rpathflag='-blibpath:'],
- [for rpathflag in "-rpath " -R; do
+ [for rpathflag in -R "-rpath "; do
AS_CASE("$rpathflag",
[*" "], [AS_CASE(["${linker_flag}"],
[*,], [rpathflag=`echo "$rpathflag" | tr ' ' ,`])])
rpathflag="${linker_flag}${rpathflag}"
RUBY_TRY_LDFLAGS([${rpathflag}.], [], [rpathflag=])
- AS_IF([test "x${rpathflag}" != x], [break])
+ AS_IF([test "x${rpathflag}" != x], [])
done])
- ], [
- rpathflag=`echo "$RPATHFLAG" | sed 's/%.*//'`
- ])
-
- AC_ARG_ENABLE(rpath,
- AS_HELP_STRING([--enable-rpath], [embed run path into extension libraries.
- enabled by default on ELF platforms]),
- [enable_rpath=$enableval], [enable_rpath="$rb_cv_binary_elf"])
-
- AS_IF([test "$enable_rpath:${RPATHFLAG}" = yes:], [
- RPATHFLAG="${rpathflag:+ ${rpathflag}%1\$-s}"
- ])
- AS_CASE([${RPATHFLAG}],[*'%1$'*],[: ${LIBPATHFLAG=' -L%1$-s'}],[: ${LIBPATHFLAG=' -L%s'}])
-}
-
-RUBY_TRY_LDFLAGS(-fdeclspec, [fdeclspec=yes], [fdeclspec=no])
-AS_IF([test "$fdeclspec" = yes], [
- RUBY_APPEND_OPTIONS(CFLAGS, -fdeclspec)
- RUBY_APPEND_OPTIONS(cflags, -fdeclspec)
- RUBY_APPEND_OPTIONS(orig_cflags, -fdeclspec)
-])
-RUBY_TRY_CXXFLAGS(-fdeclspec, [fdeclspec=yes], [fdeclspec=no])
-AS_IF([test "$fdeclspec" = yes], [
- RUBY_APPEND_OPTIONS(CXXFLAGS, -fdeclspec)
+], [
+ rpathflag=`echo "$RPATHFLAG" | sed 's/%.*//'`
])
-AC_ARG_ENABLE(devel,
- AS_HELP_STRING([--enable-devel], [enable development build]),
- [RUBY_DEVEL=$enableval],
- [AS_IF([test "x${RUBY_DEVEL-no}" != xyes], [RUBY_DEVEL=])]
-)dnl
-AC_SUBST(RUBY_DEVEL)
-particular_werror_flags=${RUBY_DEVEL:-no}
+AS_CASE([$RUBY_PATCHLEVEL], [-*],
+ [RUBY_DEVEL=yes], [RUBY_DEVEL=no])
+particular_werror_flags=$RUBY_DEVEL
AC_ARG_ENABLE(werror,
AS_HELP_STRING([--disable-werror],
[don't make warnings into errors
@@ -681,45 +740,43 @@ AC_ARG_ENABLE(werror,
[particular_werror_flags=$enableval])
rb_cv_warnflags="$warnflags"
-AS_CASE(["$GCC:${warnflags+set}:${extra_warnflags:+set}:"],
-[yes::*|yes:*:set:], [# GCC && (!warnflags || extra_warnflags)
- AS_IF([test $gcc_major -le 6], [
- extra_warnflags="$extra_warnflags -Wno-maybe-uninitialized"
+AS_IF([test "$GCC:${warnflags+set}:no" = yes::no], [
+ AS_IF([test $gcc_major -ge 4], [
+ extra_warning=-Werror=extra-tokens
+ ], [
+ extra_warning=
+ ])
+ AS_IF([test $gcc_major -ge 5 -a $gcc_major -le 6], [
+ extra_warning="$extra_warning -Wno-maybe-uninitialized"
])
# ICC doesn't support -Werror=
AS_IF([test $icc_version -gt 0], [
particular_werror_flags=no
])
- for wflag in \
- -Werror=extra-tokens \
- -Werror=deprecated-declarations \
- -Werror=division-by-zero -Werror=div-by-zero \
- -Werror=duplicated-cond \
- -Werror=implicit-function-declaration \
+ for wflag in -Wno-unused-parameter -Wno-parentheses -Wno-long-long \
+ -diag-disable=175,188,2259 \
+ -Wno-missing-field-initializers \
+ -Wno-tautological-compare \
+ -Wno-parentheses-equality \
+ -Wno-constant-logical-operand \
+ -Wno-self-assign \
+ -Wunused-variable \
-Werror=implicit-int \
- -Werror=misleading-indentation \
-Werror=pointer-arith \
- -Werror=shorten-64-to-32 \
-Werror=write-strings \
- -Werror=old-style-definition \
- -Wimplicit-fallthrough=0 \
- -Wmissing-noreturn \
- -Wno-cast-function-type \
- -Wno-constant-logical-operand \
- -Wno-long-long \
- -Wno-missing-field-initializers \
- -Wno-overlength-strings \
+ -Werror=declaration-after-statement \
+ -Werror=shorten-64-to-32 \
+ -Werror=implicit-function-declaration \
+ -Werror=division-by-zero \
+ -Werror=deprecated-declarations \
+ -Werror=misleading-indentation \
-Wno-packed-bitfield-compat \
- -Wno-parentheses-equality \
- -Wno-self-assign \
- -Wno-tautological-compare \
- -Wno-unused-parameter \
- -Wno-unused-value \
- -Wsuggest-attribute=format \
-Wsuggest-attribute=noreturn \
- -Wunused-variable \
- -diag-disable=175,188,1684,2259,2312 \
- $extra_warnflags \
+ -Wsuggest-attribute=format \
+ -Wimplicit-fallthrough=0 \
+ -Werror=duplicated-cond \
+ -Werror=restrict \
+ $extra_warning \
; do
AS_IF([test "$particular_werror_flags" != yes], [
wflag=`echo x$wflag | sed 's/^x-Werror=/-W/;s/^x//'`
@@ -737,18 +794,6 @@ AS_CASE(["$GCC:${warnflags+set}:${extra_warnflags:+set}:"],
])
])
done
- AS_IF([test "$particular_werror_flags" = "yes"], [
- wflag=-Werror=undef
- ], [
- wflag=-Wundef
- ])
- RUBY_TRY_CFLAGS($wflag, [
- RUBY_APPEND_OPTIONS(warnflags, $wflag)
- ], [], [
- @%:@if !defined(RUBY_CONFIG_TEST_NEVER_DEFINED_SYMBOL)
- @%:@elif RUBY_CONFIG_TEST_NEVER_DEFINED_SYMBOL
- @%:@endif
- ])
AS_CASE([" $warnflags "],[*" -Wno-missing-field-initializers "*], [wflag="-Wall -Wextra"],
[wflag=-Wall])
RUBY_TRY_CFLAGS($wflag, [warnflags="$wflag${warnflags+ $warnflags}"])
@@ -757,22 +802,20 @@ AS_CASE(["$GCC:${warnflags+set}:${extra_warnflags:+set}:"],
warnflags=
])
RUBY_TRY_CFLAGS(-Qunused-arguments, [RUBY_APPEND_OPTIONS(rb_cv_wsuppress_flags, -Qunused-arguments)])
-AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([
-@%:@if !(defined(__SUNPRO_C)||defined(__SUNPRO_CC))
-@%:@error not sunpro
-@%:@endif],[])], [
- for e in \
- E_STATEMENT_NOT_REACHED \
- E_INIT_SIGN_EXTEND \
- E_INIT_DOES_NOT_FIT \
- E_INITIALIZATION_TYPE_MISMATCH
- do
- RUBY_TRY_CFLAGS([-erroff=${e}], [
- RUBY_APPEND_OPTIONS(rb_cv_warnflags, [-erroff=${e}])
- ])
- done
-])
+
+for n in infinity nan; do
+ m=AS_TR_CPP($n)
+ AC_CACHE_CHECK([whether $m is available without C99 option], rb_cv_$n,
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY(AC_INCLUDES_DEFAULT([@%:@include <math.h>
+@%:@ifndef $m
+@%:@error no $m
+@%:@endif
+]), [1])], [eval rb_cv_$n=yes], [eval rb_cv_$n=no])])
+ AS_IF([eval test '"$rb_cv_'$n'"' = yes], [
+ AC_DEFINE_UNQUOTED([HAVE_]$m)
+ ])
+done
AC_ARG_WITH(compress-debug-sections,
AS_HELP_STRING([--with-compress-debug-sections=type],
@@ -785,53 +828,23 @@ AS_IF([test "$GCC" = yes], [
# argument check. The performance drop is very little and Ubuntu enables
# _FORTIFY_SOURCE=2 by default. So, let's support it for protecting us from
# a mistake of silly C extensions.
-
- # TODO: check if link succeeds with _FORTIFY_SOURCE=2.
- AS_CASE(["$target_os"],
- [mingw*], [
- fortify_source=no
- ])
- AC_ARG_ENABLE(fortify_source,
- AS_HELP_STRING([--disable-fortify-source],
- [disable -D_FORTIFY_SOURCE=2 option, which causes link error on mingw]),
- [fortify_source=$enableval])
- AS_IF([test "x$fortify_source" != xno], [
- RUBY_TRY_CFLAGS([$optflags -D_FORTIFY_SOURCE=2],
- [RUBY_APPEND_OPTION(XCFLAGS, -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2)], [],
- [@%:@include <stdio.h>])
- ])
+ RUBY_TRY_CFLAGS(-D_FORTIFY_SOURCE=2, [RUBY_APPEND_OPTION(XCFLAGS, -D_FORTIFY_SOURCE=2)])
# -fstack-protector
AS_CASE(["$target_os"],
- [emscripten*|wasi*], [
+ [mingw*], [
stack_protector=no
])
AS_IF([test -z "${stack_protector+set}"], [
- AS_FOR(option, opt, [-fstack-protector-strong -fstack-protector], [
- RUBY_TRY_CFLAGS(option, [stack_protector=yes])
- AS_IF([test "x$stack_protector" = xyes], [
- RUBY_TRY_LDFLAGS(option, [], [stack_protector=])
- ])
- AS_IF([test "x$stack_protector" = xyes], [stack_protector=option; break])
+ RUBY_TRY_CFLAGS(-fstack-protector, [stack_protector=yes], [stack_protector=no])
+ AS_IF([test "x$stack_protector" = xyes], [
+ RUBY_TRY_LDFLAGS(-fstack-protector, [], [stack_protector=broken])
])
])
- AC_MSG_CHECKING([for -fstack-protector])
- AC_MSG_RESULT(["$stack_protector"])
- AS_CASE(["$stack_protector"], [-*], [
- RUBY_APPEND_OPTION(XCFLAGS, $stack_protector)
- RUBY_APPEND_OPTION(XLDFLAGS, $stack_protector)
- RUBY_APPEND_OPTION(LDFLAGS, $stack_protector)
- ])
-
- # aarch64 branch protection
- AS_CASE(["$target_cpu"], [aarch64], [
- AS_FOR(option, opt, [-mbranch-protection=pac-ret -msign-return-address=all], [
- RUBY_TRY_CFLAGS(option, [branch_protection=yes], [branch_protection=no])
- AS_IF([test "x$branch_protection" = xyes], [
- RUBY_APPEND_OPTION(XCFLAGS, option)
- break
- ])
- ])
+ AS_IF([test "x$stack_protector" = xyes], [
+ RUBY_APPEND_OPTION(XCFLAGS, -fstack-protector)
+ RUBY_APPEND_OPTION(XLDFLAGS, -fstack-protector)
+ RUBY_APPEND_OPTION(LDFLAGS, -fstack-protector)
])
AS_CASE("${compress_debug_sections:-zlib}",
@@ -851,7 +864,7 @@ AS_IF([test "$GCC" = yes], [
# comments. We bypass ANSI C mode for them. Otherwise
# extension libs cannot include those headers.
- # Since math.h in some mingw64 wrongly declares frexp and modf
+ # Since math.h in some mingw64 wrongly delcares frexp and modf
# to be pure, the variables pointed by the second arguments are
# considered uninitialized unexpectedly.
AC_CACHE_CHECK([whether frexp and modf are broken],
@@ -863,13 +876,13 @@ AS_IF([test "$GCC" = yes], [
], [
CFLAGS="$CFLAGS -Werror -Wuninitialized"
])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>
+ AC_TRY_COMPILE([@%:@include <math.h>
int foo(double x)
{
int exp;
frexp(x, &exp);
return exp;
- }]], [[if (foo(0.0)) return 1;]])],
+ }], [if (foo(0.0)) return 1;],
[rb_cv_mingw64_broken_frexp_modf=no],
[rb_cv_mingw64_broken_frexp_modf=yes])
CFLAGS="$save_CFLAGS"
@@ -878,8 +891,18 @@ AS_IF([test "$GCC" = yes], [
AC_DEFINE(RUBY_MINGW64_BROKEN_FREXP_MODF)
])
],
- [cygwin*|msys*|darwin*|netbsd*], [
- # need lgamma_r()
+ [cygwin*|darwin*|netbsd*], [
+ # need lgamma_r(), finite()
+ ],
+ [
+ # ANSI (no XCFLAGS because this is C only)
+ for ansi_options in -std=gnu99; do
+ RUBY_TRY_CFLAGS(${ansi_options}, [
+ RUBY_APPEND_OPTIONS(warnflags, ${ansi_options})
+ RUBY_APPEND_OPTIONS(strict_warnflags, ${ansi_options})
+ ], [ansi_options=])
+ test "x${ansi_options}" = x || break
+ done
])
# suppress annoying -Wstrict-overflow warnings
@@ -890,12 +913,15 @@ AS_IF([test "$GCC" = yes], [
test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-g3, [debugflags=-g3])}
])
test $ac_cv_prog_cc_g = yes && : ${debugflags=-g}
+AS_IF([test "x$RUBY_DEVEL" = xyes], [RUBY_APPEND_OPTION(XCFLAGS, -DRUBY_DEVEL=1)])
AS_IF([test "$GCC" = ""], [
AS_CASE(["$target_os"],[aix*],[warnflags="$warnflags -qinfo=por" rb_cv_warnflags="$rb_cv_warnflags -qinfo=por"])
])
AS_IF([test "$GCC" = yes], [
- RUBY_TRY_CFLAGS(-fvisibility=hidden, [visibility_option=yes], [visibility_option=no])
+ AS_IF([test "$gcc_major" -ge 4], [
+ RUBY_TRY_CFLAGS(-fvisibility=hidden, [visibility_option=yes], [visibility_option=no])
+ ])
AC_SUBST(WERRORFLAG, "-Werror")
AS_IF([test "$visibility_option" = yes], [
RUBY_APPEND_OPTION(XCFLAGS, -fvisibility=hidden)
@@ -904,6 +930,7 @@ AS_IF([test "$GCC" = yes], [
], [
RUBY_TRY_LDFLAGS([-Wl,-unexported_symbol,_Init_*], [visibility_option=ld], [visibility_option=no])
])
+ test "$visibility_option" = no || OBJCOPY=:
])
AS_IF([test "$GCC" = yes], [
@@ -919,130 +946,110 @@ AS_IF([test "$GCC" = yes], [
# disable fast-math
for oflag in -fno-fast-math; do
- RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(optflags, $oflag)])
+ RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(CFLAGS, $oflag)])
done
for oflag in -fexcess-precision=standard -fp-model\ precise; do
RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(XCFLAGS, $oflag)])
done
])
-AS_CASE(["$target_cpu"], [[i[3-6]86*]], [
- AC_CACHE_CHECK([for __sync_val_compare_and_swap], [rb_cv_gcc_compiler_cas], [
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned long atomic_var;]],
- [[__sync_val_compare_and_swap(&atomic_var, 0, 1);]])],
- [rb_cv_gcc_compiler_cas=yes],
- [
- save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -march=i486"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned long atomic_var;]],
- [[__sync_val_compare_and_swap(&atomic_var, 0, 1);]])],
- [rb_cv_gcc_compiler_cas=i486],
- [rb_cv_gcc_compiler_cas=no])
- CFLAGS="$save_CFLAGS"
- ])
- ])
- AS_IF([test "$rb_cv_gcc_compiler_cas" = i486], [ARCH_FLAG="-march=i486"])
-])
-
-OPT_DIR=
-AC_ARG_WITH([gmp-dir],
- AS_HELP_STRING([--with-gmp-dir=DIR],
- [specify the prefix directory where gmp is installed]),
- [OPT_DIR="${OPT_DIR:+$OPT_DIR$PATH_SEPARATOR}$withval"], [])
-AC_ARG_WITH([gmp],
- [AS_HELP_STRING([--without-gmp],
- [disable GNU GMP to accelerate Bignum operations])],
- [], [with_gmp=yes])
-
AC_ARG_WITH(opt-dir,
AS_HELP_STRING([--with-opt-dir=DIR-LIST],
[add optional headers and libraries directories separated by $PATH_SEPARATOR]),
- [OPT_DIR="${OPT_DIR:+$OPT_DIR$PATH_SEPARATOR}$withval"], [])
-
-AS_IF([test "x$OPT_DIR" != x], [
- val=`IFS="$PATH_SEPARATOR"
- for dir in $OPT_DIR; do
- test -z "$dir" && continue
- echo x ${LIBPATHFLAG} ${RPATHFLAG} |
- sed "s/^x *//;s${IFS}"'%1\\$-s'"${IFS}${dir}/lib${IFS}g;s${IFS}%s${IFS}${dir}/lib${IFS}g"
- done | tr '\012' ' ' | sed 's/ *$//'`
- LDFLAGS="${LDFLAGS:+$LDFLAGS }$val"
- DLDFLAGS="${DLDFLAGS:+$DLDFLAGS }$val"
- LDFLAGS_OPTDIR="$val"
- CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }"`echo "$OPT_DIR" | tr "${PATH_SEPARATOR}" '\012' |
- sed '/^$/d;s|^|-I|;s|$|/include|' | tr '\012' ' ' | sed 's/ *$//'`
-])
+ [
+ val=`echo "$PATH_SEPARATOR$withval" | sed "s|$PATH_SEPARATOR\([[^$PATH_SEPARATOR]*]\)| -I\1/include|g;s/^ //"`
+ CPPFLAGS="$CPPFLAGS $val"
+ val=`echo "$PATH_SEPARATOR$withval" | sed "s|$PATH_SEPARATOR\([[^$PATH_SEPARATOR]*]\)| -L\1/lib${rpathflag:+ $rpathflag\\\\1/lib}|g;s/^ //"`
+ LDFLAGS="$LDFLAGS $val"
+ LDFLAGS_OPTDIR="$val"
+ OPT_DIR="$withval"
+ ], [OPT_DIR=])
test -z "${ac_env_CFLAGS_set}" -a -n "${cflags+set}" && eval CFLAGS="\"$cflags $ARCH_FLAG\""
test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cxxflags $ARCH_FLAG\""
-}
-AC_CACHE_CHECK([whether compiler has statement and declarations in expressions],
- rb_cv_have_stmt_and_decl_in_expr,
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[ __extension__ ({ int a = 0; a; }); ]])],
- [rb_cv_have_stmt_and_decl_in_expr=yes],
- [rb_cv_have_stmt_and_decl_in_expr=no])])
-AS_IF([test "$rb_cv_have_stmt_and_decl_in_expr" = yes], [
- AC_DEFINE(HAVE_STMT_AND_DECL_IN_EXPR)
-])
+}
+{ # header and library section
-: "header and library section" && {
AC_ARG_WITH(winnt-ver,
- AS_HELP_STRING([--with-winnt-ver=0xXXXX], [target Windows NT version (default to 0x0600)]),
- [with_winnt_ver="$withval"], [with_winnt_ver="0x0600"])
+ AS_HELP_STRING([--with-winnt-ver=0xXXXX], [target Windows NT version (default to 0x0501)]),
+ [with_winnt_ver="$withval"], [with_winnt_ver="0x0501"])
AS_CASE(["$target_os"],
[mingw*], [
RUBY_APPEND_OPTION(CPPFLAGS, -D_WIN32_WINNT=$with_winnt_ver)
RUBY_APPEND_OPTION(CPPFLAGS, -D__MINGW_USE_VC2005_COMPAT)
])
-RUBY_THREAD
+AS_CASE(["$target_os"],
+[freebsd*], [
+ AC_CACHE_CHECK([whether pthread should be enabled by default],
+ rb_cv_enable_pthread_default,
+ [AC_TRY_CPP([
+#include <osreldate.h>
+#if __FreeBSD_version < 502102
+#error pthread should be disabled on this platform
+#endif
+ ],
+ rb_cv_enable_pthread_default=yes,
+ rb_cv_enable_pthread_default=no)])
+ enable_pthread=$rb_cv_enable_pthread_default
+ ],
+[mingw*], [
+ enable_pthread=no
+ ],
+[
+ enable_pthread=yes
+ ])
dnl Checks for libraries.
AS_CASE(["$target_os"],[*bsd*|dragonfly*],[],[ac_cv_func_daemon=no])
-AS_CASE(["$target_os"], [*android*], [
- AS_CASE(["$target_cpu"], [arm*], [
- ac_cv_func___builtin_setjmp=no
- ])
-])
-
-AS_UNSET(ORIG_LIBS)
POSTLINK=:
AC_SUBST(POSTLINK)
-cleanlibs=
-AC_SUBST(cleanlibs)
AS_CASE(["$target_os"],
[nextstep*], [ ],
[openstep*], [ ],
[rhapsody*], [ ],
-[darwin*], [
- ORIG_LIBS="$LIBS"
- RUBY_PREPEND_OPTION(LIBS, -lobjc)
+[darwin*], [ RUBY_PREPEND_OPTION(LIBS, -lobjc)
RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT)
- AC_CACHE_CHECK([whether syscall(2) is deprecated], rb_cv_syscall_deprecated,
- [RUBY_WERROR_FLAG([
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <unistd.h>]],
- [[if (syscall(0)) return 1;]])],
- [rb_cv_syscall_deprecated=no],
- [rb_cv_syscall_deprecated=yes])])])
- AS_IF([test $rb_cv_syscall_deprecated = yes], [
+ AC_MSG_CHECKING(whether Mac OS X 10.5 or later)
+ AC_TRY_CPP([#include <AvailabilityMacros.h>
+ #if MAC_OS_X_VERSION_MAX_ALLOWED <= 1040
+ #error pre OS X 10.4
+ [!<===== pre OS X 10.4 =====>]
+ #endif
+ ],
+ [macosx_10_5=yes], [macosx_10_5=no])
+ AC_MSG_RESULT($macosx_10_5)
+ AS_IF([test "${target_os@%:@darwin}" -ge 16], [
ac_cv_func___syscall=no
ac_cv_func_syscall=no
ac_cv_header_sys_syscall_h=no
ac_cv_header_syscall_h=no
])
- ac_cv_func_getcontext=no
- ac_cv_func_setcontext=no
+ AS_IF([test $macosx_10_5 = yes], [
+ ac_cv_func_getcontext=no
+ ac_cv_func_setcontext=no
+ ], [
+ AC_DEFINE(BROKEN_SETREUID, 1)
+ AC_DEFINE(BROKEN_SETREGID, 1)
+ ])
+ incs=`$CC -v -E -xc - < /dev/null 2>&1 | sed ['1,/^@%:@include </d;s/^ *//;s|[^./][^/]*/\.\./||g;/\/include$/!d;s||/lib|;/\/usr\/lib/d']`
+ for d in `$CC -print-search-dirs | sed -e '/^libraries: */!d;s///' | tr : '\012' | fgrep -v /../ | sed -n 's|^\(/.*/lib\)/$|\1|p'`; do
+ incs=`echo "$incs" | fgrep -v "$d"`
+ done
+ for d in $incs; do
+ test -d "$d" && RUBY_APPEND_OPTIONS(LDFLAGS, "-L$d")
+ done
ac_cv_type_getgroups=gid_t # getgroups() on Rosetta fills garbage
ac_cv_lib_crypt_crypt=no
ac_cv_func_fdatasync=no # Mac OS X wrongly reports it has fdatasync()
ac_cv_func_vfork=no
- AS_IF([test $gcc_major -eq 4 -a $gcc_minor -lt 3], [
+ AS_IF([test $gcc_major -lt 4 -o \( $gcc_major -eq 4 -a $gcc_minor -lt 3 \)], [
ac_cv_func___builtin_setjmp=no
])
- with_setjmp_type=sigsetjmp # to hijack SIGCHLD handler
AC_CACHE_CHECK(for broken crypt with 8bit chars, rb_cv_broken_crypt,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ [AC_TRY_RUN([
#include <stdio.h>
#include <unistd.h>
#include <string.h>
@@ -1079,7 +1086,7 @@ main()
}
return 0;
}
-]])],
+],
rb_cv_broken_crypt=no,
rb_cv_broken_crypt=yes,
rb_cv_broken_crypt=yes)])
@@ -1102,34 +1109,51 @@ main()
AC_CHECK_HEADERS(crt_externs.h, [], [], [
#include <crt_externs.h>
])
- cleanlibs='$(TARGET_SO).dSYM'
],
+[hpux*], [ LIBS="-lm $LIBS"
+ ac_cv_c_inline=no],
[solaris*], [ LIBS="-lm $LIBS"
ac_cv_func_vfork=no
AC_MSG_CHECKING(whether _XOPEN_SOURCE is already given)
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
- #ifndef _XOPEN_SOURCE
- #error _XOPEN_SOURCE is not defined
- #endif
- ]], [[]])],
- [given_xopen_source=yes], [given_xopen_source=no])
+ AC_TRY_COMPILE([#include <unistd.h>
+ #ifndef _XOPEN_SOURCE
+ #error _XOPEN_SOURCE is not defined
+ #endif
+ ], [],
+ [given_xopen_source=yes], [given_xopen_source=no])
AC_MSG_RESULT($given_xopen_source)
AS_IF([test $given_xopen_source = no], [
+ # On Solaris, with gcc, -std=iso9899:1999 in $ansi_options
+ # is often also needed in CPPFLAGS, because some feature
+ # definitions vary depending on such standards options.
+ AS_CASE(["${ansi_options}"],
+ [*-std=iso9899:1999*], [
+ RUBY_APPEND_OPTIONS(CPPFLAGS, ${ansi_options})
+ ])
AC_MSG_CHECKING(appropriate _XOPEN_SOURCE value to define)
define_xopen_source=""
for tmp_xpg in 7 6 5; do
AS_IF([test x"$define_xopen_source" != x], [
- break
+ break
])
- RUBY_WERROR_FLAG([AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ # Both AC_TRY_CPP and AC_TRY_COMPILE should pass
+ # because some options may not be set to CPPFLAGS.
+ AC_TRY_CPP([
#define _XOPEN_SOURCE ${tmp_xpg}00
#include <unistd.h>
#ifndef _XPG${tmp_xpg}
#error _XPG${tmp_xpg} should be defined by _XOPEN_SOURCE=${tmp_xpg}00
#endif
- ]], [[]])],
+ ], [
+ AC_TRY_COMPILE([
+ #define _XOPEN_SOURCE ${tmp_xpg}00
+ #include <unistd.h>
+ #ifndef _XPG${tmp_xpg}
+ #error _XPG${tmp_xpg} should be defined by _XOPEN_SOURCE=${tmp_xpg}00
+ #endif
+ ], [],
[define_xopen_source=${tmp_xpg}00], [])
- ])
+ ], [])
done
AS_IF([test x"$define_xopen_source" = x], [
define_xopen_source=no
@@ -1137,33 +1161,19 @@ main()
AC_MSG_RESULT($define_xopen_source)
AS_IF([test x"$define_xopen_source" != xno], [
RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE=$define_xopen_source)
- # _XOPEN_SOURCE should not be defined for C++ on Solaris.
- RUBY_APPEND_OPTIONS(CXXFLAGS, -U_XOPEN_SOURCE)
])
])
- AC_CHECK_TYPES([caddr_t],[],[],[@%:@include <sys/types.h>])
- AC_CACHE_CHECK([whether madvise declaration is needed], rb_cv_madvice_prototype_using_caddr_t,
- [RUBY_WERROR_FLAG([AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- @%:@include <sys/unistd.h>
- @%:@include <sys/mman.h>
- @%:@include <sys/types.h>
- extern int madvise(caddr_t, size_t, int);
- ]], [[]])],
- [rb_cv_madvice_prototype_using_caddr_t=yes], [rb_cv_madvice_prototype_using_caddr_t=no])
- ])
- ])
- AS_IF([test $rb_cv_madvice_prototype_using_caddr_t = yes], [AC_DEFINE(NEED_MADVICE_PROTOTYPE_USING_CADDR_T, 1)])
],
[haiku*], [
LIBS="$LIBS" # m lib is include in root
],
-[cygwin*|msys*], [
- ac_cv_header_langinfo_h=yes
+[cygwin*], [ ac_cv_header_langinfo_h=yes
RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_GNU_SOURCE)
AC_CHECK_FUNCS(cygwin_conv_path)
AC_LIBOBJ([langinfo])
],
-[mingw*], [ LIBS="-lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt $LIBS"
+[mingw*], [ LIBS="-lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi $LIBS"
+ ac_cv_header_a_out_h=no
ac_cv_header_pwd_h=no
ac_cv_header_utime_h=no
ac_cv_header_sys_ioctl_h=no
@@ -1173,23 +1183,25 @@ main()
ac_cv_header_sys_time_h=no
ac_cv_header_sys_times_h=no
ac_cv_header_sys_socket_h=no
- ac_cv_func_execv=yes
ac_cv_func_lstat=yes
ac_cv_func_times=yes
ac_cv_func_waitpid=yes
ac_cv_func_fsync=yes
ac_cv_func_seekdir=yes
ac_cv_func_telldir=yes
+ ac_cv_func_isinf=yes
+ ac_cv_func_isnan=yes
+ ac_cv_func_finite=yes
ac_cv_func_lchown=yes
ac_cv_func_link=yes
ac_cv_func_readlink=yes
- ac_cv_func_shutdown=yes
ac_cv_func_symlink=yes
ac_cv_lib_crypt_crypt=no
ac_cv_func_getpgrp_void=no
ac_cv_func_memcmp_working=yes
ac_cv_lib_dl_dlopen=no
- rb_cv_negative_time_t=yes
+ rb_cv_binary_elf=no
+ rb_cv_negative_time_t=no
ac_cv_func_fcntl=yes
ac_cv_func_flock=yes
ac_cv_func_gmtime_r=yes
@@ -1198,13 +1210,12 @@ main()
ac_cv_func_clock_gettime=yes
ac_cv_func_clock_getres=yes
ac_cv_func_malloc_usable_size=no
- ac_cv_type_off_t=yes
- ac_cv_sizeof_off_t=8
AS_IF([test "$target_cpu" = x64], [
- ac_cv_func___builtin_setjmp=yes
+ ac_cv_func___builtin_setjmp=no
ac_cv_func_round=no
])
ac_cv_func_tgamma=no
+ rb_cv_negative_time_t=yes
AC_CHECK_TYPE([NET_LUID], [], [],
[@%:@include <winsock2.h>
@%:@include <iphlpapi.h>])
@@ -1228,61 +1239,18 @@ main()
[netbsd*], [ LIBS="-lm $LIBS"
],
[dragonfly*], [ LIBS="-lm $LIBS"
+ # isinf() and isnan() are macros on DragonFly.
+ ac_cv_func_isinf=yes
+ ac_cv_func_isnan=yes
],
[aix*],[ LIBS="-lm $LIBS"
ac_cv_func_round=no
- ac_cv_func___builtin_setjmp=no
- ],
-[linux*],[ LIBS="-lm $LIBS"
- # __builtin_longjmp in ppc64* Linux does not restore
- # the TOC register (r2), which is problematic
- # when a global exit happens from JITted .so code.
- AS_CASE(["$target_cpu"], [powerpc64*], [
- ac_cv_func___builtin_setjmp=no
- ])
- # With gcc-8's -fcf-protection, RJIT's __builtin_longjmp fails.
- AS_CASE(["$CC $CFLAGS "], [*" -fcf-protection "*], [cf_protection=yes], [cf_protection=no])
- AS_IF([test "$cf_protection" = yes], [
- ac_cv_func___builtin_setjmp=no
- ])
- ],
-[emscripten*], [LIBS="-lm -lc $LIBS"
- RUBY_APPEND_OPTIONS(LDFLAGS, "-sALLOW_MEMORY_GROWTH=1")
- RUBY_APPEND_OPTIONS(LDFLAGS, "-sASYNCIFY")
- RUBY_APPEND_OPTIONS(LDFLAGS, "-sFORCE_FILESYSTEM=1")
- ac_cv_func_shutdown=no
- ],
-[wasi*],[ LIBS="-lm -lwasi-emulated-mman -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks $LIBS"
- RUBY_APPEND_OPTIONS(CFLAGS, -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_MMAN -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_PROCESS_CLOCKS)
- RUBY_APPEND_OPTIONS(CPPFLAGS, -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_MMAN -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_PROCESS_CLOCKS)
- POSTLINK="\$(WASMOPT) --asyncify \$(wasmoptflags) --pass-arg=asyncify-ignore-imports -o \$@ \$@${POSTLINK:+; $POSTLINK}"
- # wasi-libc's sys/socket.h is not compatible with -std=gnu99,
- # so re-declare shutdown in include/ruby/missing.h
- ac_cv_func_shutdown=no
],
[ LIBS="-lm $LIBS"])
-: ${ORIG_LIBS=$LIBS}
-
-AS_IF([test -n "${rb_there_is_in_fact_no_gplusplus_but_autoconf_is_cheating_us}"], [
- AC_MSG_NOTICE([Test skipped due to lack of a C++ compiler.])
-],
-[test -n "${CXX}"], [
- RUBY_WERROR_FLAG([
- AC_MSG_CHECKING([whether CXXFLAGS is valid])
- AC_LANG_PUSH(C++)
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <cstdio>]], [[]])],
- [AC_MSG_RESULT(yes)],[
- AC_MSG_RESULT(no)
- # The message mentions CXXFLAGS, but CPPFLAGS might also affects.
- AC_MSG_WARN([something wrong with CXXFLAGS="$CXXFLAGS"])
- CXX=false
- ])
- AC_LANG_POP(C++)
- ])
-])
AC_CHECK_LIB(crypt, crypt) # glibc (GNU/Linux, GNU/Hurd, GNU/kFreeBSD)
AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
+AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
AC_CHECK_LIB(socket, shutdown) # SunOS/Solaris
dnl Checks for header files.
@@ -1291,13 +1259,8 @@ dnl AC_HEADER_STDC has been checked in AC_USE_SYSTEM_EXTENSIONS
AC_HEADER_STDBOOL
AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS([afunix.h], [], [],
-[#ifdef _WIN32
-# include <winsock2.h>
-#endif
-])
+AC_CHECK_HEADERS(a.out.h)
AC_CHECK_HEADERS(atomic.h)
-AC_CHECK_HEADERS(copyfile.h)
AC_CHECK_HEADERS(direct.h)
AC_CHECK_HEADERS(grp.h)
AC_CHECK_HEADERS(fcntl.h)
@@ -1313,13 +1276,8 @@ AC_CHECK_HEADERS(malloc_np.h)
AC_CHECK_HEADERS(net/socket.h)
AC_CHECK_HEADERS(process.h)
AC_CHECK_HEADERS(pwd.h)
-AC_CHECK_HEADERS(sanitizer/asan_interface.h)
-AC_CHECK_HEADERS(sanitizer/msan_interface.h)
AC_CHECK_HEADERS(setjmpex.h)
-AC_CHECK_HEADERS(stdalign.h)
-AC_CHECK_HEADERS(stdio.h)
AC_CHECK_HEADERS(sys/attr.h)
-AC_CHECK_HEADERS(sys/eventfd.h)
AC_CHECK_HEADERS(sys/fcntl.h)
AC_CHECK_HEADERS(sys/file.h)
AC_CHECK_HEADERS(sys/id.h)
@@ -1327,7 +1285,6 @@ AC_CHECK_HEADERS(sys/ioctl.h)
AC_CHECK_HEADERS(sys/mkdev.h)
AC_CHECK_HEADERS(sys/param.h)
AC_CHECK_HEADERS(sys/prctl.h)
-AC_CHECK_HEADERS(sys/random.h)
AC_CHECK_HEADERS(sys/resource.h)
AC_CHECK_HEADERS(sys/select.h)
AC_CHECK_HEADERS(sys/sendfile.h)
@@ -1342,11 +1299,12 @@ AC_CHECK_HEADERS(syscall.h)
AC_CHECK_HEADERS(time.h)
AC_CHECK_HEADERS(ucontext.h)
AC_CHECK_HEADERS(utime.h)
-AS_CASE("$target_cpu", [x64|x86_64|i[3-6]86*], [
- AC_CHECK_HEADERS(x86intrin.h)
-])
-RUBY_UNIVERSAL_CHECK_HEADER([x86_64, i386], x86intrin.h)
+AC_ARG_WITH([gmp],
+ [AS_HELP_STRING([--without-gmp],
+ [disable GNU GMP to accelerate Bignum operations])],
+ [],
+ [with_gmp=yes])
AS_IF([test "x$with_gmp" != xno],
[AC_CHECK_HEADERS(gmp.h)
AS_IF([test "x$ac_cv_header_gmp_h" != xno],
@@ -1356,55 +1314,37 @@ AS_IF([test "x$with_gmp" != xno],
AC_ARG_WITH([jemalloc],
[AS_HELP_STRING([--with-jemalloc],[use jemalloc allocator])],
[with_jemalloc=$withval], [with_jemalloc=no])
-AS_IF([test "x$with_jemalloc" != xno],[
- # find jemalloc header first
- malloc_header=
- AC_CHECK_HEADER(jemalloc/jemalloc.h, [malloc_header=jemalloc/jemalloc.h], [
- AC_CHECK_HEADER(jemalloc.h, [malloc_header=jemalloc.h])
- ])
- AS_IF([test "$malloc_header" != ""], [
- AC_DEFINE_UNQUOTED(RUBY_ALTERNATIVE_MALLOC_HEADER, [<$malloc_header>])
- ])
- save_LIBS="$LIBS"
- AC_CACHE_CHECK([for jemalloc library], rb_cv_jemalloc_library, [
- rb_cv_jemalloc_library=no
- # try [with mangle, without mangle] x [no more additional
- # libraries, adding jemalloc] combination, using the jemalloc
- # header found above.
- for mangle in '' mangle; do
- for lib in '' -ljemalloc; do
- LIBS="${lib:+$lib }$LIBS"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([${mangle:+@%:@define JEMALLOC_MANGLE 1}
- @%:@include <stdio.h>
- @%:@ifdef RUBY_ALTERNATIVE_MALLOC_HEADER
- @%:@include RUBY_ALTERNATIVE_MALLOC_HEADER
- @%:@else
- extern const char *malloc_conf;
- @%:@endif],
- [/* access at runtime not to be optimized away */
- if (malloc_conf) printf("malloc_conf=%s\n", malloc_conf);])],
- [rb_cv_jemalloc_library="${lib:-none required}${mangle:+ with mangle}"])
- LIBS="$save_LIBS"
- test "${rb_cv_jemalloc_library}" = no || break 2
- done
- done
- ])
- with_jemalloc=${rb_cv_jemalloc_library}
- AS_CASE(["$with_jemalloc"],
- [no],
- [AC_MSG_ERROR([jemalloc requested but not found])],
- [-l*], [
- set dummy $with_jemalloc
- LIBS="$2 $LIBS"
- DLDLIBS="$2${DLDLIBS:+ $DLDLIBS}" # probably needed also in extension libraries
+AS_IF([test "x$with_jemalloc" = xyes],[
+ AC_SEARCH_LIBS([malloc_conf], [jemalloc],
+ [AC_DEFINE(HAVE_LIBJEMALLOC, 1)], [with_jemalloc=no])
+ AC_CHECK_HEADER(jemalloc/jemalloc.h, [
+ AC_DEFINE(RUBY_ALTERNATIVE_MALLOC_HEADER, [<jemalloc/jemalloc.h>])
+ ],
+ [test x$with_jemalloc = xyes && with_jemalloc=no])
+ AS_IF([test "x$with_jemalloc" = xno], [
+ AC_CACHE_CHECK([for jemalloc with JEMALLOC_MANGLE], rb_cv_jemalloc_demangle,
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([@%:@define JEMALLOC_MANGLE 1
+ @%:@ifdef RUBY_ALTERNATIVE_MALLOC_HEADER
+ @%:@include RUBY_ALTERNATIVE_MALLOC_HEADER
+ @%:@else
+ @%:@include <jemalloc.h>
+ @%:@endif], [return !&malloc_conf])],
+ [rb_cv_jemalloc_demangle=yes],
+ [rb_cv_jemalloc_demangle=no])
+ ])
])
- AS_CASE(["$with_jemalloc"],
- [*" with mangle"], [
+ AS_IF([test "x$rb_cv_jemalloc_demangle" = xyes], [
AC_DEFINE(JEMALLOC_MANGLE)
+ with_jemalloc=yes
])
- AC_DEFINE(HAVE_MALLOC_CONF)
- ac_cv_func_malloc_usable_size=yes
-]) # with_jemalloc
+ AS_IF([test "x$with_jemalloc" = xyes],
+ [
+ AC_DEFINE(HAVE_MALLOC_CONF)
+ ac_cv_func_malloc_usable_size=yes
+ ],
+ [AC_MSG_ERROR([jemalloc requested but not found])
+ ])
+])
dnl check for large file stuff
mv confdefs.h confdefs1.h
@@ -1433,6 +1373,7 @@ mv confdefs1.h confdefs.h
cat largefile.h >> confdefs.h
AS_CASE(["$target_os"],
+ [mingw*], [ac_cv_type_off_t=yes;ac_cv_sizeof_off_t=8],
[aix*], [
AS_CASE(["$target_cpu:$ac_cv_sys_large_files"],
[ppc64:*|powerpc64:*], [],
@@ -1444,13 +1385,12 @@ AS_CASE(["$target_os"],
])
])
-AC_C_BIGENDIAN([], [], [], [AC_DEFINE(AC_APPLE_UNIVERSAL_BUILD, 1)])
+AC_C_BIGENDIAN
AC_C_CONST
AC_C_CHAR_UNSIGNED
AC_C_INLINE
AC_C_VOLATILE
AC_C_TYPEOF
-AC_C_RESTRICT
AS_CASE(":$ac_cv_c_const:$ac_cv_c_volatile:",
[*:no:*], [AC_MSG_ERROR(ANSI C-conforming const and volatile are mandatory)])
@@ -1463,6 +1403,114 @@ AC_CACHE_CHECK([char bit], [rb_cv_char_bit],
[AC_INCLUDES_DEFAULT([@%:@include <limits.h>])], [rb_cv_char_bit=8])
test "$universal_binary" = yes && cross_compiling=$real_cross_compiling])
+dnl RUBY_CHECK_SIZEOF [typename], [maybe same size types], [macros], [include]
+AC_DEFUN([RUBY_CHECK_SIZEOF],
+[dnl
+AS_VAR_PUSHDEF([rbcv_var], [rbcv_sizeof_var])dnl
+AS_VAR_PUSHDEF([cond], [rbcv_sizeof_cond])dnl
+AS_VAR_PUSHDEF([t], [rbcv_sizeof_type])dnl
+AS_VAR_PUSHDEF([s], [rbcv_sizeof_size])dnl
+]
+[m4_bmatch([$1], [\.], [], [if test "$universal_binary" = yes; then])
+AC_CACHE_CHECK([size of $1], [AS_TR_SH([ac_cv_sizeof_$1])], [
+ unset AS_TR_SH(ac_cv_sizeof_$1)
+ rbcv_var="
+typedef m4_bpatsubst([$1], [\..*]) ac__type_sizeof_;
+static ac__type_sizeof_ *rbcv_ptr;
+@%:@define AS_TR_CPP(SIZEOF_$1) sizeof((*rbcv_ptr)[]m4_bmatch([$1], [\.], .m4_bpatsubst([$1], [^[^.]*\.])))
+"
+ m4_ifval([$2], [test -z "${AS_TR_SH(ac_cv_sizeof_$1)+set}" && {
+ for t in $2; do
+ AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY(AC_INCLUDES_DEFAULT([$4]
+ [$rbcv_var]),
+ [AS_TR_CPP(SIZEOF_$1) == sizeof($t)])], [
+ AS_TR_SH(ac_cv_sizeof_$1)=AS_TR_CPP([SIZEOF_]$t)
+ break])
+ done
+ }], [
+ AC_COMPUTE_INT([AS_TR_SH(ac_cv_sizeof_$1)], [AS_TR_CPP(SIZEOF_$1)],
+ [AC_INCLUDES_DEFAULT([$4])
+$rbcv_var],
+ [AS_TR_SH(ac_cv_sizeof_$1)=])
+ ])
+ unset cond
+ m4_ifval([$3], [test -z "${AS_TR_SH(ac_cv_sizeof_$1)+set}" && {
+ for s in 32 64 128; do
+ for t in $3; do
+ cond="${cond}
+@%:@${cond+el}if defined(__${t}${s}__) || defined(__${t}${s}) || defined(_${t}${s}) || defined(${t}${s})"
+ hdr="AC_INCLUDES_DEFAULT([$4
+@%:@if defined(__${t}${s}__) || defined(__${t}${s}) || defined(_${t}${s}) || defined(${t}${s})
+@%:@ define AS_TR_CPP(HAVE_$1) 1
+@%:@else
+@%:@ define AS_TR_CPP(HAVE_$1) 0
+@%:@endif])"
+ AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([$hdr], [!AS_TR_CPP(HAVE_$1)])], [continue])
+ AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([$hdr]
+ [$rbcv_var],
+ [AS_TR_CPP(HAVE_$1) == (AS_TR_CPP(SIZEOF_$1) == ($s / $rb_cv_char_bit))])],
+ [AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}${s}"; continue])
+ AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([$hdr]
+[
+@%:@if AS_TR_CPP(HAVE_$1)
+$rbcv_var
+@%:@else
+@%:@define AS_TR_CPP(SIZEOF_$1) 0
+@%:@endif
+],
+ [AS_TR_CPP(HAVE_$1) == (AS_TR_CPP(SIZEOF_$1) == (m4_bmatch([$2], [^[0-9][0-9]*$], [$2], [($s / $rb_cv_char_bit)])))])],
+ [AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}${s}m4_bmatch([$2], [^[0-9][0-9]*$], [:$2])"])
+ done
+ done
+ }])
+ test "${AS_TR_SH(ac_cv_sizeof_$1)@%:@@<:@1-9@:>@}" = "${AS_TR_SH(ac_cv_sizeof_$1)}" &&
+ m4_ifval([$2][$3],
+ [test "${AS_TR_SH(ac_cv_sizeof_$1)@%:@SIZEOF_}" = "${AS_TR_SH(ac_cv_sizeof_$1)}" && ]){
+ test "$universal_binary" = yes && cross_compiling=yes
+ AC_COMPUTE_INT([t], AS_TR_CPP(SIZEOF_$1), [AC_INCLUDES_DEFAULT([$4])]
+[${cond+$cond
+@%:@else}
+$rbcv_var
+${cond+@%:@endif}
+@%:@ifndef AS_TR_CPP(SIZEOF_$1)
+@%:@define AS_TR_CPP(SIZEOF_$1) 0
+@%:@endif], [t=0])
+ test "$universal_binary" = yes && cross_compiling=$real_cross_compiling
+ AS_IF([test ${t-0} != 0], [
+ AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}"
+ ])
+ }
+ : ${AS_TR_SH(ac_cv_sizeof_$1)=0}
+])
+{
+ unset cond
+ for t in ${AS_TR_SH(ac_cv_sizeof_$1)-}; do
+ AS_CASE(["$t"],
+ [[[0-9]*|SIZEOF_*]], [
+ ${cond+echo "@%:@else"}
+ echo "[@%:@define ]AS_TR_CPP(SIZEOF_$1) $t"
+ break
+ ],
+ [
+ s=`expr $t : ['.*[^0-9]\([0-9][0-9]*\)$']`
+ AS_CASE([$t], [*:*], [t="${t%:*}"], [s=`expr $s / $rb_cv_char_bit`])
+ echo "@%:@${cond+el}if defined(__${t}__) || defined(__${t}) || defined(_${t}) || defined($t)"
+ echo "@%:@define AS_TR_CPP(SIZEOF_$1) $s"
+ cond=1
+ ])
+ done
+ ${cond+echo "@%:@endif"}
+} >> confdefs.h
+m4_bmatch([$1], [\.], [], [else
+AC_CHECK_SIZEOF([$1], 0, [$4])
+fi])
+AS_VAR_POPDEF([rbcv_var])dnl
+AS_VAR_POPDEF([cond])dnl
+AS_VAR_POPDEF([t])dnl
+AS_VAR_POPDEF([s])dnl
+])
+
RUBY_CHECK_SIZEOF(int, [], [ILP])
RUBY_CHECK_SIZEOF(short)
RUBY_CHECK_SIZEOF(long, [int], [ILP LP])
@@ -1482,14 +1530,40 @@ AC_CACHE_CHECK(packed struct attribute, rb_cv_packed_struct,
"__pragma(pack(push, 1)) x __pragma(pack(pop))" \
"x __attribute__((packed))" \
; do
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@define PACKED_STRUCT(x) $mac
- PACKED_STRUCT(struct { int a; });]], [[]])],
+ AC_TRY_COMPILE([@%:@define PACKED_STRUCT(x) $mac
+ PACKED_STRUCT(struct { int a; });], [],
[rb_cv_packed_struct=$mac; break])
done])
AS_IF([test "$rb_cv_packed_struct" != no], [
- AC_DEFINE_UNQUOTED([RBIMPL_ATTR_PACKED_STRUCT_BEGIN()], [`echo " $rb_cv_packed_struct " | sed 's/ x .*//;s/^ *//'`])
- AC_DEFINE_UNQUOTED([RBIMPL_ATTR_PACKED_STRUCT_END()], [`echo " $rb_cv_packed_struct " | sed 's/.* x //;s/ *$//'`])
+ AC_DEFINE_UNQUOTED([PACKED_STRUCT(x)], [$rb_cv_packed_struct])
RUBY_TRY_CFLAGS(-Wno-address-of-packed-member, [AC_DEFINE(USE_UNALIGNED_MEMBER_ACCESS)])
+], [
+ AC_DEFINE_UNQUOTED([PACKED_STRUCT(x)], x)
+])
+
+AC_DEFUN([RUBY_CHECK_PRINTF_PREFIX], [
+AC_CACHE_CHECK([for printf prefix for $1], [rb_cv_pri_prefix_]AS_TR_SH($1),[
+ [rb_cv_pri_prefix_]AS_TR_SH($1)=[NONE]
+ RUBY_WERROR_FLAG(RUBY_APPEND_OPTIONS(CFLAGS, $rb_cv_wsuppress_flags)
+ for pri in $2; do
+ AC_TRY_COMPILE(
+ [@%:@include <stdio.h>
+ @%:@include <stddef.h>
+ @%:@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
+ PRINTF_ARGS(void test_sprintf(const char*, ...), 1, 2);],
+ [printf("%]${pri}[d", (]$1[)42);
+ test_sprintf("%]${pri}[d", (]$1[)42);],
+ [rb_cv_pri_prefix_]AS_TR_SH($1)[=[$pri]; break])
+ done)])
+AS_IF([test "[$rb_cv_pri_prefix_]AS_TR_SH($1)" != NONE], [
+ AC_DEFINE_UNQUOTED([PRI_]m4_ifval($3,$3,AS_TR_CPP(m4_bpatsubst([$1],[_t$])))[_PREFIX],
+ "[$rb_cv_pri_prefix_]AS_TR_SH($1)")
+])
])
AS_IF([test "x$ac_cv_type_long_long" = xyes], [
@@ -1498,12 +1572,71 @@ AS_IF([test "x$ac_cv_type_long_long" = xyes], [
RUBY_CHECK_PRINTF_PREFIX(__int64, ll I64, LL)
])
+dnl RUBY_CHECK_SIGNEDNESS [typename] [if-signed] [if-unsigned] [included]
+AC_DEFUN([RUBY_CHECK_SIGNEDNESS], [dnl
+ AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])], [($1)-1 > 0])],
+ [$3], [$2])])
+
+dnl RUBY_REPLACE_TYPE [typename] [default type] [macro type] [included]
+AC_DEFUN([RUBY_REPLACE_TYPE], [dnl
+ AC_CHECK_TYPE([$1],
+ [n="patsubst([$1],["],[\\"])"],
+ [n="patsubst([$2],["],[\\"])"],
+ [$4])
+ AC_CACHE_CHECK([for convertible type of [$1]], rb_cv_[$1]_convertible, [
+ u= t=
+ AS_CASE(["$n "],
+ [*" signed "*], [ ],
+ [*" unsigned "*], [
+ u=U],
+ [RUBY_CHECK_SIGNEDNESS($n, [], [u=U], [$4])])
+ AS_IF([test x"$t" = x], [
+ for t in "long long" long int short; do
+ test -n "$u" && t="unsigned $t"
+ AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])]
+ [typedef $n rbcv_conftest_target_type;
+ typedef $t rbcv_conftest_replace_type;
+ extern rbcv_conftest_target_type rbcv_conftest_var;
+ extern rbcv_conftest_replace_type rbcv_conftest_var;
+ extern rbcv_conftest_target_type rbcv_conftest_func(void);
+ extern rbcv_conftest_replace_type rbcv_conftest_func(void);
+ ], [sizeof(rbcv_conftest_target_type) == sizeof(rbcv_conftest_replace_type)])],
+ [n="$t"; break])
+ done
+ ])
+ AS_CASE([" $n "],
+ [*" long long "*], [
+ t=LL],
+ [*" long "*], [
+ t=LONG],
+ [
+ t=INT])
+ rb_cv_[$1]_convertible=${u}${t}])
+ AS_IF([test "${AS_TR_SH(ac_cv_type_[$1])}" = "yes"], [
+ n="$1"
+ ], [
+ AS_CASE(["${rb_cv_[$1]_convertible}"],
+ [*LL], [n="long long"],
+ [*LONG], [n="long"],
+ [n="int"])
+ AS_CASE(["${rb_cv_[$1]_convertible}"],
+ [U*], [n="unsigned $n"])
+ ])
+ AS_CASE("${rb_cv_[$1]_convertible}", [U*], [u=+1], [u=-1])
+ AC_DEFINE_UNQUOTED(rb_[$1], $n)
+ AC_DEFINE_UNQUOTED([SIGNEDNESS_OF_]AS_TR_CPP($1), $u)
+ AC_DEFINE_UNQUOTED([$3]2NUM[(v)], [${rb_cv_[$1]_convertible}2NUM(v)])
+ AC_DEFINE_UNQUOTED(NUM2[$3][(v)], [NUM2${rb_cv_[$1]_convertible}(v)])
+ AC_DEFINE_UNQUOTED(PRI_[$3]_PREFIX,
+ [PRI_`echo ${rb_cv_[$1]_convertible} | sed ['s/^U//']`_PREFIX])
+])
RUBY_REPLACE_TYPE(pid_t, int, PIDT)
RUBY_REPLACE_TYPE(uid_t, int, UIDT)
RUBY_REPLACE_TYPE(gid_t, int, GIDT)
RUBY_REPLACE_TYPE(time_t, [], TIMET, [@%:@include <time.h>])
RUBY_REPLACE_TYPE(dev_t, [int long "long long"], DEVT)
-RUBY_REPLACE_TYPE(mode_t, ["unsigned short" "unsigned int" long], MODET, [@%:@include <sys/stat.h>])
+RUBY_REPLACE_TYPE(mode_t, ["unsigned int" long], MODET, [@%:@include <sys/stat.h>])
RUBY_REPLACE_TYPE(rlim_t, [int long "long long"], RLIM, [
@%:@ifdef HAVE_SYS_TYPES_H
@%:@include <sys/types.h>
@@ -1514,65 +1647,160 @@ RUBY_REPLACE_TYPE(rlim_t, [int long "long long"], RLIM, [
@%:@include <sys/resource.h>
])
RUBY_REPLACE_TYPE(off_t, [], OFFT)
-RUBY_REPLACE_TYPE(clockid_t, [], CLOCKID, [@%:@ifdef HAVE_TIME_H
-@%:@ include <time.h>
-@%:@endif
-@%:@ifdef HAVE_SYS_TIME_H
-@%:@ include <sys/time.h>
-@%:@endif])
+RUBY_REPLACE_TYPE(clockid_t, [], CLOCKID)
+
+AC_CACHE_CHECK(for prototypes, rb_cv_have_prototypes,
+ [AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],
+ rb_cv_have_prototypes=yes,
+ rb_cv_have_prototypes=no)])
+AS_IF([test "$rb_cv_have_prototypes" = yes], [
+ AC_DEFINE(HAVE_PROTOTYPES)
+])
+
+AC_CACHE_CHECK(token paste string, rb_cv_tokenpaste,
+ [AC_TRY_COMPILE([@%:@define paste(a,b) a@%:@@%:@b],
+ [int xy = 1; return paste(x,y);],
+ rb_cv_tokenpaste=ansi,
+ rb_cv_tokenpaste=knr)])
+AS_IF([test "$rb_cv_tokenpaste" = ansi], [
+ AC_DEFINE(TOKEN_PASTE(x,y),[x@%:@@%:@y])
+], [
+ AC_DEFINE(TOKEN_PASTE(x,y),[x/**/y])
+])
+
+AC_CACHE_CHECK(stringization, rb_cv_stringization, [
+ rb_cv_stringization=no
+ for string in "#expr" '"expr"'; do
+ AC_COMPILE_IFELSE([
+ AC_LANG_BOOL_COMPILE_TRY([
+#define STRINGIZE0(expr) $string
+#define STRINGIZE(expr) STRINGIZE0(expr)
+#undef real_test_for_stringization
+#define test_for_stringization -.real_test_for_stringization.-
+const char stringized[[]] = STRINGIZE(test_for_stringization);
+], [sizeof(stringized) == 32])],
+ [rb_cv_stringization="$string"; break],
+ [rb_cv_stringization=no])
+ done]
+)
+AC_DEFINE(STRINGIZE(expr),STRINGIZE0(expr))
+AS_IF([test x"$rb_cv_stringization" != xno -a "$rb_cv_stringization" != "#expr"], [
+ AC_DEFINE_UNQUOTED(STRINGIZE0(expr),$rb_cv_stringization)
+ AC_DEFINE(OLD_FASHIONED_STRINGIZATION,1)
+])
+
+AC_CACHE_CHECK([string literal concatenation],
+ rb_cv_string_literal_concatenation, [
+ AC_COMPILE_IFELSE([
+ AC_LANG_BOOL_COMPILE_TRY([
+const char concatenated_literal[[]] = "literals" "to"
+ "be" "concatenated.";
+], [sizeof(concatenated_literal) == 26])],
+ [rb_cv_string_literal_concatenation=yes],
+ [rb_cv_string_literal_concatenation=no])]
+)
+AS_IF([test "$rb_cv_string_literal_concatenation" = no], [
+ AC_DEFINE(NO_STRING_LITERAL_CONCATENATION,1)
+])
+
+AC_CACHE_CHECK(for variable length prototypes and stdarg.h, rb_cv_stdarg,
+ [AC_TRY_COMPILE([
+#include <stdarg.h>
+int foo(int x, ...) {
+ va_list va;
+ va_start(va, x);
+ va_arg(va, int);
+ va_arg(va, char *);
+ va_arg(va, double);
+ return 0;
+}
+], [return foo(10, "", 3.14);],
+ rb_cv_stdarg=yes,
+ rb_cv_stdarg=no)])
+AS_IF([test "$rb_cv_stdarg" = yes], [
+ AC_DEFINE(HAVE_STDARG_PROTOTYPES)
+])
-# __VA_ARGS__ is also tested in AC_PROG_CC_C99 since autoconf 2.60a (around
-# 2006). The check below is redundant and should always success. Remain not
-# deleted for backward compat.
AC_CACHE_CHECK(for variable length macro, rb_cv_va_args_macro,
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-int foo(const char*);
-@%:@define FOO(...) foo(@%:@__VA_ARGS__)
-]], [[FOO(1);FOO(1,2);FOO(1,2,3);]])],
+ [AC_TRY_COMPILE([
+int foo(int x, ...);
+@%:@define FOO(a, ...) foo(a, @%:@@%:@__VA_ARGS__)
+], [FOO(1);FOO(1,2);FOO(1,2,3);],
rb_cv_va_args_macro=yes,
rb_cv_va_args_macro=no)])
AS_IF([test "$rb_cv_va_args_macro" = yes], [
AC_DEFINE(HAVE_VA_ARGS_MACRO)
])
-# We want C11's `_Alignof`. GCC (and alike) have `__alignof__`, which behave
-# slightly differently than the C11's. We cannot use `__alignof__` for our
-# purpose. The problem is, however, that old gcc and old clang had both
-# implemented `_Alignof` as a synonym of `__alignof__`. They are not what we
-# want. We have to check sanity.
-#
-# See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023
-# See also: https://bugs.llvm.org/show_bug.cgi?id=26547
-AC_CACHE_CHECK([if _Alignof() works], rb_cv_have__alignof,[
- rb_cv_have__alignof=no
- RUBY_WERROR_FLAG([
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- @%:@ifdef HAVE_STDALIGN_H
- @%:@include <stdalign.h>
- @%:@endif
- @%:@ifdef STDC_HEADERS
- @%:@include <stddef.h>
- @%:@endif
- @%:@ifndef __GNUC__
- @%:@define __extension__
- @%:@endif
- ]], [[
- typedef struct conftest_tag {
- char _;
- double d;
- } T;
- static int conftest_ary@<:@
- offsetof(T, d) == __extension__ _Alignof(double)
- ? 1 : -1
- @:>@;
- return conftest_ary@<:@0@:>@;
- ]])],[
- rb_cv_have__alignof=yes
- ],[])
- ])
+AC_DEFUN([RUBY_DEFINE_IF], [dnl
+ m4_ifval([$1], [AS_LITERAL_IF([$1], [], [test "X$1" = X || ])cat <<EOH >> confdefs.h
+@%:@if $1
+EOH
+])dnl
+AC_DEFINE_UNQUOTED($2, $3)dnl
+ m4_ifval([$1], [AS_LITERAL_IF([$1], [], [test "X$1" = X || ])cat <<EOH >> confdefs.h
+@%:@endif /* $1 */
+EOH
+])dnl
+])dnl
+
+dnl RUBY_DECL_ATTRIBUTE(attrib, macroname, cachevar, condition, type, code)
+AC_DEFUN([RUBY_DECL_ATTRIBUTE], [dnl
+m4_ifval([$2], dnl
+ [AS_VAR_PUSHDEF([attrib], m4_bpatsubst([$2], [(.*)], []))], dnl
+ [AS_VAR_PUSHDEF([attrib], m4_toupper(m4_format(%.4s, [$5]))[_]AS_TR_CPP($1))] dnl
+)dnl
+m4_ifval([$3], dnl
+ [AS_VAR_PUSHDEF([rbcv],[$3])], dnl
+ [AS_VAR_PUSHDEF([rbcv],[rb_cv_]m4_format(%.4s, [$5])[_][$1])]dnl
+)dnl
+m4_pushdef([attrib_code],[m4_bpatsubst([$1],["],[\\"])])dnl
+m4_pushdef([attrib_params],[m4_bpatsubst([$2(x)],[^[^()]*(\([^()]*\)).*],[\1])])dnl
+m4_ifval([$4], [rbcv_cond=["$4"]; test "$rbcv_cond" || unset rbcv_cond])
+AC_CACHE_CHECK(for m4_ifval([$2],[m4_bpatsubst([$2], [(.*)], [])],[$1]) [$5] attribute, rbcv, dnl
+[rbcv=x
+RUBY_WERROR_FLAG([
+for mac in \
+ "__attribute__ ((attrib_code)) x" \
+ "x __attribute__ ((attrib_code))" \
+ "__declspec(attrib_code) x" \
+ x; do
+ m4_ifval([$4],mac="$mac"${rbcv_cond+" /* only if $rbcv_cond */"})
+ AC_TRY_COMPILE(
+ m4_ifval([$4],${rbcv_cond+[@%:@if ]$rbcv_cond})
+[@%:@define ]attrib[](attrib_params)[ $mac]
+m4_ifval([$4],${rbcv_cond+[@%:@else]}
+${rbcv_cond+[@%:@define ]attrib[](attrib_params)[ x]}
+${rbcv_cond+[@%:@endif]})
+$6
+@%:@define mesg ("")
+ attrib[](attrib_params)[;], [],
+ [rbcv="$mac"; break])
+done
+])])
+AS_IF([test "$rbcv" != x], [
+ RUBY_DEFINE_IF(m4_ifval([$4],[${rbcv_cond}]), attrib[](attrib_params)[], $rbcv)
+])
+m4_ifval([$4], [unset rbcv_cond]) dnl
+m4_popdef([attrib_params])dnl
+m4_popdef([attrib_code])dnl
+AS_VAR_POPDEF([attrib])dnl
+AS_VAR_POPDEF([rbcv])dnl
+])
+
+dnl RUBY_FUNC_ATTRIBUTE(attrib, macroname, cachevar, condition)
+AC_DEFUN([RUBY_FUNC_ATTRIBUTE], [dnl
+ RUBY_DECL_ATTRIBUTE([$1], [$2], [$3], [$4],
+ [function], [@%:@define x int conftest_attribute_check(void)]
+ )
+])
+
+dnl RUBY_TYPE_ATTRIBUTE(attrib, macroname, cachevar, condition)
+AC_DEFUN([RUBY_TYPE_ATTRIBUTE], [dnl
+ RUBY_DECL_ATTRIBUTE([$1], [$2], [$3], [$4],
+ [type], [
+@%:@define x struct conftest_attribute_check {int i;}
])
-AS_IF([test "$rb_cv_have__alignof" != no], [
- AC_DEFINE(HAVE__ALIGNOF)
])
RUBY_FUNC_ATTRIBUTE(__const__, CONSTFUNC)
@@ -1580,11 +1808,9 @@ RUBY_FUNC_ATTRIBUTE(__pure__, PUREFUNC)
RUBY_FUNC_ATTRIBUTE(__noreturn__, NORETURN)
RUBY_FUNC_ATTRIBUTE(__deprecated__, DEPRECATED)
RUBY_FUNC_ATTRIBUTE(__deprecated__("by "@%:@n), DEPRECATED_BY(n,x), rb_cv_func_deprecated_by)
+RUBY_TYPE_ATTRIBUTE(__deprecated__ mesg, DEPRECATED_TYPE(mesg,x), rb_cv_type_deprecated)
RUBY_FUNC_ATTRIBUTE(__noinline__, NOINLINE)
RUBY_FUNC_ATTRIBUTE(__always_inline__, ALWAYS_INLINE)
-RUBY_FUNC_ATTRIBUTE(__no_sanitize__(san), NO_SANITIZE(san, x), rb_cv_func_no_sanitize)
-RUBY_FUNC_ATTRIBUTE(__no_sanitize_address__, NO_SANITIZE_ADDRESS)
-RUBY_FUNC_ATTRIBUTE(__no_address_safety_analysis__, NO_ADDRESS_SAFETY_ANALYSIS)
RUBY_FUNC_ATTRIBUTE(__warn_unused_result__, WARN_UNUSED_RESULT)
RUBY_FUNC_ATTRIBUTE(__unused__, MAYBE_UNUSED)
RUBY_FUNC_ATTRIBUTE(__error__ mesg, ERRORFUNC(mesg,x), rb_cv_func___error__)
@@ -1594,32 +1820,6 @@ AS_IF([test "$rb_cv_func_weak" != x], [
AC_DEFINE(HAVE_FUNC_WEAK)
])
-AC_CACHE_CHECK([for __attribute__((__depreacted__(msg))) in C++],
- rb_cv_CentOS6_CXX_workaround,
- RUBY_WERROR_FLAG([
- AC_LANG_PUSH([C++])
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [],
- [__attribute__((__deprecated__("message"))) int conftest(...);])],
- [rb_cv_CentOS6_CXX_workaround=yes],
- [rb_cv_CentOS6_CXX_workaround=no])
- AC_LANG_POP()]))
-AS_IF([test "$rb_cv_CentOS6_CXX_workaround" != no],[
- AC_DEFINE([RUBY_CXX_DEPRECATED(msg)],
- [__attribute__((__deprecated__(msg)))])])
-
-AC_CACHE_CHECK([for std::nullptr_t], rb_cv_CXX_nullptr, [
- AC_LANG_PUSH([C++])
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [@%:@include <cstddef>],
- [static std::nullptr_t const *const conftest = nullptr;])],
- [rb_cv_CXX_nullptr=yes],
- [rb_cv_CXX_nullptr=no])
- AC_LANG_POP()])
-AS_IF([test "$rb_cv_CXX_nullptr" != no],[AC_DEFINE(HAVE_NULLPTR)])
-
if_i386=${universal_binary+[defined __i386__]}
RUBY_FUNC_ATTRIBUTE(__stdcall__, FUNC_STDCALL, rb_cv_func_stdcall, ${if_i386})
RUBY_FUNC_ATTRIBUTE(__cdecl__, FUNC_CDECL, rb_cv_func_cdecl, ${if_i386})
@@ -1631,8 +1831,8 @@ AS_IF([test "$GCC" = yes], [
AC_CACHE_CHECK([for function alias], [rb_cv_gcc_function_alias],
[rb_cv_gcc_function_alias=no
for a in alias weak,alias; do
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[void foo(void) {}
- void bar(void) __attribute__(($a("foo")));]], [[bar()]])],
+ AC_TRY_LINK([void foo(void) {}
+ void bar(void) __attribute__(($a("foo")));], [bar()],
[rb_cv_gcc_function_alias=$a; break])
done])
AS_IF([test "$rb_cv_gcc_function_alias" != no], [
@@ -1642,18 +1842,16 @@ AS_IF([test "$GCC" = yes], [
AC_DEFINE_UNQUOTED([RUBY_ALIAS_FUNCTION_VOID(prot, name, args)],
[RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)])
])
-])
-{
AC_CACHE_CHECK([for __atomic builtins], [rb_cv_gcc_atomic_builtins], [
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned int atomic_var;]],
- [[
+ AC_TRY_LINK([unsigned char atomic_var;],
+ [
__atomic_exchange_n(&atomic_var, 0, __ATOMIC_SEQ_CST);
__atomic_exchange_n(&atomic_var, 1, __ATOMIC_SEQ_CST);
__atomic_fetch_add(&atomic_var, 1, __ATOMIC_SEQ_CST);
__atomic_fetch_sub(&atomic_var, 1, __ATOMIC_SEQ_CST);
__atomic_or_fetch(&atomic_var, 1, __ATOMIC_SEQ_CST);
- ]])],
+ ],
[rb_cv_gcc_atomic_builtins=yes],
[rb_cv_gcc_atomic_builtins=no])])
AS_IF([test "$rb_cv_gcc_atomic_builtins" = yes], [
@@ -1661,15 +1859,15 @@ AS_IF([test "$GCC" = yes], [
])
AC_CACHE_CHECK([for __sync builtins], [rb_cv_gcc_sync_builtins], [
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned int atomic_var;]],
- [[
+ AC_TRY_LINK([unsigned char atomic_var;],
+ [
__sync_lock_test_and_set(&atomic_var, 0);
__sync_lock_test_and_set(&atomic_var, 1);
__sync_fetch_and_add(&atomic_var, 1);
__sync_fetch_and_sub(&atomic_var, 1);
__sync_or_and_fetch(&atomic_var, 1);
__sync_val_compare_and_swap(&atomic_var, 0, 1);
- ]])],
+ ],
[rb_cv_gcc_sync_builtins=yes],
[rb_cv_gcc_sync_builtins=no])])
AS_IF([test "$rb_cv_gcc_sync_builtins" = yes], [
@@ -1678,67 +1876,43 @@ AS_IF([test "$GCC" = yes], [
AC_CACHE_CHECK(for __builtin_unreachable, rb_cv_func___builtin_unreachable,
[RUBY_WERROR_FLAG(
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[volatile int zero;]],
- [[if (zero) __builtin_unreachable();]])],
+ [AC_TRY_LINK([volatile int zero;],
+ [if (zero) __builtin_unreachable();],
[rb_cv_func___builtin_unreachable=yes],
[rb_cv_func___builtin_unreachable=no])
])
])
AS_IF([test "$rb_cv_func___builtin_unreachable" = yes], [
- AC_DEFINE(HAVE___BUILTIN_UNREACHABLE)
- ])
-
- AC_CACHE_CHECK(for __assume, rb_cv_func___assume,
- [RUBY_WERROR_FLAG([
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
- [[__assume(1);]])],
- [rb_cv_func___assume=yes],
- [rb_cv_func___assume=no])
+ AC_DEFINE_UNQUOTED(UNREACHABLE, [__builtin_unreachable()])
])
- ])
- AS_IF([test "$rb_cv_func___assume" = yes], [
- AC_DEFINE(HAVE___ASSUME)
- ])
-}
+])
AC_CACHE_CHECK(for exported function attribute, rb_cv_func_exported, [
rb_cv_func_exported=no
RUBY_WERROR_FLAG([
for mac in '__attribute__ ((__visibility__("default")))' '__declspec(dllexport)'; do
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@define RUBY_FUNC_EXPORTED $mac extern
- RUBY_FUNC_EXPORTED void conftest_attribute_check(void);]], [[]])],
+ AC_TRY_COMPILE([@%:@define RUBY_FUNC_EXPORTED $mac extern
+ RUBY_FUNC_EXPORTED void conftest_attribute_check(void);], [],
[rb_cv_func_exported="$mac"; break])
done
])])
AS_IF([test "$rb_cv_func_exported" != no], [
AC_DEFINE_UNQUOTED(RUBY_FUNC_EXPORTED, [$rb_cv_func_exported extern])
])
-RUBY_DECL_ATTRIBUTE([__nonnull__(n)], [RUBY_FUNC_NONNULL(n,x)], [rb_cv_func_nonnull],
- [], [function], [
-@%:@define x int conftest_attribute_check(void *p)
-@%:@define n 1
-])
RUBY_APPEND_OPTION(XCFLAGS, -DRUBY_EXPORT)
-AC_ARG_ENABLE(mathn,
- AS_HELP_STRING([--enable-mathn], [enable canonicalization for mathn]),
- [AC_MSG_ERROR([mathn support has been dropped])])
-
AC_CACHE_CHECK(for function name string predefined identifier,
rb_cv_function_name_string,
- [AS_CASE(["$target_os"],[openbsd*],[
- rb_cv_function_name_string=__func__
- ],[
- rb_cv_function_name_string=no
- RUBY_WERROR_FLAG([
- for func in __func__ __FUNCTION__; do
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdio.h>]],
- [[puts($func);]])],
- [rb_cv_function_name_string=$func
- break])
- done
- ])])]
+ [rb_cv_function_name_string=no
+ RUBY_WERROR_FLAG([
+ for func in __func__ __FUNCTION__; do
+ AC_TRY_LINK([@%:@include <stdio.h>],
+ [puts($func);],
+ [rb_cv_function_name_string=$func
+ break])
+ done
+ ])]
)
AS_IF([test "$rb_cv_function_name_string" != no], [
AC_DEFINE_UNQUOTED(RUBY_FUNCTION_NAME_STRING, [$rb_cv_function_name_string])
@@ -1798,21 +1972,16 @@ RUBY_CHECK_SIGNEDNESS(size_t, [AC_MSG_ERROR(size_t is signed)], [],
[@%:@include <sys/types.h>])
RUBY_CHECK_SIZEOF(size_t, [int long void*], [], [@%:@include <sys/types.h>])
RUBY_CHECK_SIZEOF(ptrdiff_t, size_t, [], [@%:@include <stddef.h>])
-RUBY_CHECK_SIZEOF(dev_t)
RUBY_CHECK_PRINTF_PREFIX(size_t, z)
RUBY_CHECK_PRINTF_PREFIX(ptrdiff_t, t)
-AC_CHECK_MEMBERS([struct stat.st_blksize])
-AC_CHECK_MEMBERS([struct stat.st_blocks])
-AC_CHECK_MEMBERS([struct stat.st_rdev])
+AC_STRUCT_ST_BLKSIZE
+AC_STRUCT_ST_BLOCKS
+AC_STRUCT_ST_RDEV
RUBY_CHECK_SIZEOF([struct stat.st_size], [off_t int long "long long"], [], [@%:@include <sys/stat.h>])
AS_IF([test "$ac_cv_member_struct_stat_st_blocks" = yes], [
RUBY_CHECK_SIZEOF([struct stat.st_blocks], [off_t int long "long long"], [], [@%:@include <sys/stat.h>])
])
RUBY_CHECK_SIZEOF([struct stat.st_ino], [long "long long"], [], [@%:@include <sys/stat.h>])
-RUBY_CHECK_SIZEOF([struct stat.st_dev], [dev_t int long "long long"], [], [@%:@include <sys/stat.h>])
-AS_IF([test "$ac_cv_member_struct_stat_st_rdev" = yes], [
- RUBY_CHECK_SIZEOF([struct stat.st_rdev], [dev_t int long "long long"], [], [@%:@include <sys/stat.h>])
-])
AC_CHECK_MEMBERS([struct stat.st_atim])
AC_CHECK_MEMBERS([struct stat.st_atimespec])
AC_CHECK_MEMBERS([struct stat.st_atimensec])
@@ -1823,8 +1992,6 @@ AC_CHECK_MEMBERS([struct stat.st_ctim])
AC_CHECK_MEMBERS([struct stat.st_ctimespec])
AC_CHECK_MEMBERS([struct stat.st_ctimensec])
AC_CHECK_MEMBERS([struct stat.st_birthtimespec])
-AS_IF([test "x$ac_cv_member_struct_stat_st_birthtimespec" != xyes],
- [AC_CHECK_MEMBERS([struct statx.stx_btime])])
AC_CHECK_TYPES([struct timeval], [], [], [@%:@ifdef HAVE_TIME_H
@%:@include <time.h>
@@ -1865,6 +2032,13 @@ AC_CHECK_TYPES([struct timezone], [], [], [@%:@ifdef HAVE_TIME_H
@%:@ include <sys/time.h>
@%:@endif])
+AC_CHECK_TYPES([clockid_t], [], [], [@%:@ifdef HAVE_TIME_H
+@%:@ include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@ include <sys/time.h>
+@%:@endif])
+
AC_CACHE_VAL([rb_cv_large_fd_select],
[AC_CHECK_TYPE(fd_mask, [rb_cv_large_fd_select=yes], [rb_cv_large_fd_select=no], [AC_INCLUDES_DEFAULT([])
@%:@ifdef HAVE_SYS_SELECT_H
@@ -1874,6 +2048,46 @@ AS_IF([test "$rb_cv_large_fd_select" = yes], [
AC_DEFINE(HAVE_RB_FD_INIT, 1)
])
+dnl RUBY_DEFINT TYPENAME, SIZE, [UNSIGNED], [INCLUDES = DEFAULT-INCLUDES]
+AC_DEFUN([RUBY_DEFINT], [dnl
+AS_VAR_PUSHDEF([cond], [rb_defint_cond])dnl
+AS_VAR_PUSHDEF([type], [rb_defint_type])dnl
+AC_CACHE_CHECK([for $1], [rb_cv_type_$1],
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$4])
+typedef $1 t; int s = sizeof(t) == 42;])],
+ [rb_cv_type_$1=yes],
+ [AS_CASE([m4_bmatch([$2], [^[1-9][0-9]*$], $2, [$ac_cv_sizeof_]AS_TR_SH($2))],
+ ["1"], [ rb_cv_type_$1="m4_if([$3], [], [signed ], [$3 ])char"],
+ ["$ac_cv_sizeof_short"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])short"],
+ ["$ac_cv_sizeof_int"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])int"],
+ ["$ac_cv_sizeof_long"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])long"],
+ ["$ac_cv_sizeof_long_long"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])long long"],
+ ["${ac_cv_sizeof___int64@%:@*:}"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])__int64"],
+ ["${ac_cv_sizeof___int128@%:@*:}"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])__int128"],
+ [ rb_cv_type_$1=no])])])
+AS_IF([test "${rb_cv_type_$1}" != no], [
+ type="${rb_cv_type_$1@%:@@%:@unsigned }"
+ AS_IF([test "$type" != yes && eval 'test -n "${ac_cv_sizeof_'$type'+set}"'], [
+ eval cond='"${ac_cv_sizeof_'$type'}"'
+ AS_CASE([$cond], [*:*], [
+ cond=AS_TR_CPP($type)
+ echo "@%:@if defined SIZEOF_"$cond" && SIZEOF_"$cond" > 0" >> confdefs.h
+ ], [cond=])
+ ], [cond=])
+ AC_DEFINE([HAVE_]AS_TR_CPP($1), 1)
+ AS_IF([test "${rb_cv_type_$1}" = yes], [
+ m4_bmatch([$2], [^[1-9][0-9]*$], [AC_CHECK_SIZEOF([$1], 0, [AC_INCLUDES_DEFAULT([$4])])],
+ [RUBY_CHECK_SIZEOF([$1], [$2], [], [AC_INCLUDES_DEFAULT([$4])])])
+ ], [
+ AC_DEFINE_UNQUOTED($1, [$rb_cv_type_$1])
+ AC_DEFINE_UNQUOTED([SIZEOF_]AS_TR_CPP($1), [SIZEOF_]AS_TR_CPP([$type]))
+ ])
+ test -n "$cond" && echo "@%:@endif /* $cond */" >> confdefs.h
+])
+AS_VAR_POPDEF([cond])dnl
+AS_VAR_POPDEF([type])dnl
+])
+
RUBY_DEFINT(int8_t, 1)
RUBY_DEFINT(uint8_t, 1, unsigned)
RUBY_DEFINT(int16_t, 2)
@@ -1886,29 +2100,52 @@ RUBY_DEFINT(int128_t, 16)
RUBY_DEFINT(uint128_t, 16, unsigned)
RUBY_DEFINT(intptr_t, void*)
RUBY_DEFINT(uintptr_t, void*, unsigned)
-AS_IF([test "x$rb_cv_type_intptr_t" != xno], [
- RUBY_CHECK_PRINTF_PREFIX(intptr_t, '' ll I64 l, PTR)
-])
RUBY_DEFINT(ssize_t, size_t, [], [@%:@include <sys/types.h>]) dnl may differ from int, so not use AC_TYPE_SSIZE_T.
-AS_IF([test "x$rb_cv_type_int64_t" != xno], [
- RUBY_CHECK_PRINTF_PREFIX(int64_t, ll I64 l, 64)
-])
AC_CACHE_CHECK(for stack end address, rb_cv_stack_end_address,
[rb_cv_stack_end_address=no
- AC_LINK_IFELSE([AC_LANG_PROGRAM(
- [[extern void *__libc_stack_end;]],
- [[if (!__libc_stack_end) return 1;]])],
+ AC_TRY_LINK(
+ [extern void *__libc_stack_end;],
+ [if (!__libc_stack_end) return 1;],
[rb_cv_stack_end_address="__libc_stack_end"])
])
AS_IF([test $rb_cv_stack_end_address != no], [
AC_DEFINE_UNQUOTED(STACK_END_ADDRESS, $rb_cv_stack_end_address)
])
+# posix_memalign(memptr, alignment, size) implemented for OpenBSD 4.8 doesn't work if alignment > MALLOC_PAGESIZE.
+# [ruby-core:42158] https://bugs.ruby-lang.org/issues/5901
+# OpenBSD 5.2 fixed the problem. (src/lib/libc/stdlib/malloc.c:1.142)
+# MirOS #10semel has the problem but fixed in the repository. (src/lib/libc/stdlib/malloc.c:1.9)
+AS_CASE(["$target_os"],
+[openbsd*|mirbsd*], [
+ AC_CACHE_CHECK(for heap align log on openbsd, rb_cv_page_size_log,
+ [rb_cv_page_size_log=no
+ for page_log in 12 13; do
+ AC_TRY_RUN([
+#include <math.h>
+#include <unistd.h>
+
+int
+main() {
+ if ((int)log2((double)sysconf(_SC_PAGESIZE)) != $page_log) return 1;
+ return 0;
+}
+ ],
+ rb_cv_page_size_log="$page_log"; break)
+ done])
+ AS_IF([test $rb_cv_page_size_log != no], [
+ AC_DEFINE_UNQUOTED(HEAP_ALIGN_LOG, $rb_cv_page_size_log)
+ ], [
+ AC_DEFINE_UNQUOTED(HEAP_ALIGN_LOG, 12)
+ ])
+])
+
dnl Checks for library functions.
AC_TYPE_GETGROUPS
+AC_TYPE_SIGNAL
AS_CASE(["${target_cpu}-${target_os}:${target_archs}"],
-[powerpc*-darwin*], [
+[powerpc-darwin*], [
AC_LIBSOURCES(alloca.c)
AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}])
AC_DEFINE(C_ALLOCA)
@@ -1917,8 +2154,8 @@ AS_CASE(["${target_cpu}-${target_os}:${target_archs}"],
[universal-darwin*:*ppc*], [
AC_LIBSOURCES(alloca.c)
AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}])
- RUBY_DEFINE_IF([defined __POWERPC__], C_ALLOCA, 1) # Darwin defines __POWERPC__ for ppc and ppc64 both
- RUBY_DEFINE_IF([defined __POWERPC__], alloca, alloca)
+ RUBY_DEFINE_IF([defined __powerpc__], C_ALLOCA, 1)
+ RUBY_DEFINE_IF([defined __powerpc__], alloca, alloca)
],
[
AC_FUNC_ALLOCA
@@ -1926,14 +2163,14 @@ AS_CASE(["${target_cpu}-${target_os}:${target_archs}"],
AS_IF([test "x$ALLOCA" = "x"], [
AC_CACHE_CHECK([for dynamic size alloca], rb_cv_dynamic_alloca, [
for chk in ok __chkstk; do
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ AC_TRY_LINK([
@%:@ifdef HAVE_ALLOCA_H
@%:@include <alloca.h>
@%:@endif
void $chk() {}
int dynamic_alloca_test;
- int dynamic_alloca_result;]],
- [[dynamic_alloca_result = alloca(dynamic_alloca_test) != 0;]])],
+ int dynamic_alloca_result;],
+ [dynamic_alloca_result = alloca(dynamic_alloca_test) != 0;],
[rb_cv_dynamic_alloca=$chk; break])
done])
AS_IF([test "x$rb_cv_dynamic_alloca" = "x__chkstk"], [
@@ -1946,30 +2183,43 @@ AS_IF([test "x$ALLOCA" = "x"], [
])
AC_FUNC_MEMCMP
+# http://sources.redhat.com/ml/libc-hacker/2005-08/msg00008.html
+# Debian GNU/Linux Etch's libc6.1 2.3.6.ds1-13etch5 has this problem.
+# Debian GNU/Linux Lenny's libc6.1 2.7-10 has no problem.
+AC_CACHE_CHECK(for broken erfc of glibc-2.3.6 on IA64, rb_cv_broken_glibc_ia64_erfc,
+ [AC_TRY_RUN([
+#include <math.h>
+int
+main()
+{
+ erfc(10000.0);
+ return 0;
+}
+],
+ rb_cv_broken_glibc_ia64_erfc=no,
+ rb_cv_broken_glibc_ia64_erfc=yes,
+ rb_cv_broken_glibc_ia64_erfc=no)])
+AS_CASE([$rb_cv_broken_glibc_ia64_erfc],[yes],[ac_cv_func_erf=no])
+
AS_CASE(["$target_os"],[freebsd*],[
AC_DEFINE(BROKEN_CLOSE)
AC_REPLACE_FUNCS(close)
])
-# dup and dup2 are always available except for WASI
-AS_CASE(["$target_os"],
- [wasi*], [],
- [
- RUBY_REQUIRE_FUNCS(dup dup2)
- ]
-)
-
AC_REPLACE_FUNCS(acosh)
AC_REPLACE_FUNCS(cbrt)
AC_REPLACE_FUNCS(crypt)
+AC_REPLACE_FUNCS(dup2)
AC_REPLACE_FUNCS(erf)
AC_REPLACE_FUNCS(explicit_bzero)
AC_REPLACE_FUNCS(ffs)
+AC_REPLACE_FUNCS(finite)
AC_REPLACE_FUNCS(flock)
AC_REPLACE_FUNCS(hypot)
+AC_REPLACE_FUNCS(isinf)
+AC_REPLACE_FUNCS(isnan)
AC_REPLACE_FUNCS(lgamma_r)
AC_REPLACE_FUNCS(memmove)
-AC_REPLACE_FUNCS(nan)
AC_REPLACE_FUNCS(nextafter)
AC_REPLACE_FUNCS(setproctitle)
AC_REPLACE_FUNCS(strchr)
@@ -1979,16 +2229,52 @@ AC_REPLACE_FUNCS(strlcpy)
AC_REPLACE_FUNCS(strstr)
AC_REPLACE_FUNCS(tgamma)
-AC_DEFINE(HAVE_ISFINITE) # C99; backward compatibility
-
# for missing/setproctitle.c
AS_CASE(["$target_os"],
[aix* | k*bsd*-gnu | kopensolaris*-gnu | linux* | darwin*], [AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)],
+[hpux*], [AC_DEFINE(SPT_TYPE,SPT_PSTAT) ],
[])
AC_CHECK_HEADERS(sys/pstat.h)
-AC_DEFINE(HAVE_SIGNBIT) # C99; backward compatibility
+AC_CACHE_CHECK(for signbit, rb_cv_have_signbit,
+ [AC_TRY_LINK([
+#include <math.h>
+], [int v = signbit(-0.0);],
+ rb_cv_have_signbit=yes,
+ rb_cv_have_signbit=no)])
+AS_IF([test "$rb_cv_have_signbit" = yes], [
+ AC_DEFINE(HAVE_SIGNBIT)
+], [
+ AC_LIBOBJ([signbit])
+])
+
+AC_CACHE_CHECK(for broken memmem, rb_cv_broken_memmem, [
+ AC_TRY_RUN([
+@%:@include <string.h>
+
+int
+main(int argc, char **argv)
+{
+ const char *str = "hogefugafoobar";
+ const char *rs = "foo";
+ const char *empty = "";
+ char *p;
+
+ p = memmem(str, strlen(str), rs, strlen(rs));
+ if (p == str+8) {
+ p = memmem(str, strlen(str), empty, strlen(empty));
+ if (p == str)
+ return 0;
+ }
+ return 1;
+}
+ ],
+ rb_cv_broken_memmem=no,
+ rb_cv_broken_memmem=yes,
+ rb_cv_broken_memmem=yes)
+])
+test x"$rb_cv_broken_memmem" = xyes && ac_cv_func_memmem=no
AC_FUNC_FORK
@@ -1998,12 +2284,9 @@ AC_CHECK_FUNCS(_longjmp) # used for AC_ARG_WITH(setjmp-type)
test x$ac_cv_func__longjmp = xno && ac_cv_func__setjmp=no
AC_CHECK_FUNCS(arc4random_buf)
AC_CHECK_FUNCS(atan2l atan2f)
-AC_CHECK_FUNCS(chmod)
-AC_CHECK_FUNCS(chown)
AC_CHECK_FUNCS(chroot)
AC_CHECK_FUNCS(chsize)
AC_CHECK_FUNCS(clock_gettime)
-AC_CHECK_FUNCS(copy_file_range)
AC_CHECK_FUNCS(cosh)
AC_CHECK_FUNCS(crypt_r)
AC_CHECK_FUNCS(daemon)
@@ -2011,17 +2294,10 @@ AC_CHECK_FUNCS(dirfd)
AC_CHECK_FUNCS(dl_iterate_phdr)
AC_CHECK_FUNCS(dlopen)
AC_CHECK_FUNCS(dladdr)
+AC_CHECK_FUNCS(dup)
AC_CHECK_FUNCS(dup3)
AC_CHECK_FUNCS(eaccess)
AC_CHECK_FUNCS(endgrent)
-AC_CHECK_FUNCS(eventfd)
-AC_CHECK_FUNCS(execl)
-AC_CHECK_FUNCS(execle)
-AC_CHECK_FUNCS(execv)
-AC_CHECK_FUNCS(execve)
-AC_CHECK_FUNCS(explicit_memset)
-AC_CHECK_FUNCS(fcopyfile)
-AC_CHECK_FUNCS(fchdir)
AC_CHECK_FUNCS(fchmod)
AC_CHECK_FUNCS(fchown)
AC_CHECK_FUNCS(fcntl)
@@ -2035,39 +2311,25 @@ AC_CHECK_FUNCS(ftruncate)
AC_CHECK_FUNCS(ftruncate64) # used for Win32 platform
AC_CHECK_FUNCS(getattrlist)
AC_CHECK_FUNCS(getcwd)
-AC_CHECK_FUNCS(getegid)
-AC_CHECK_FUNCS(getentropy)
-AC_CHECK_FUNCS(geteuid)
-AC_CHECK_FUNCS(getgid)
AC_CHECK_FUNCS(getgidx)
AC_CHECK_FUNCS(getgrnam)
AC_CHECK_FUNCS(getgrnam_r)
AC_CHECK_FUNCS(getgroups)
-AC_CHECK_FUNCS(getlogin)
-AC_CHECK_FUNCS(getlogin_r)
AC_CHECK_FUNCS(getpgid)
AC_CHECK_FUNCS(getpgrp)
-AC_CHECK_FUNCS(getppid)
AC_CHECK_FUNCS(getpriority)
-AC_CHECK_FUNCS(getpwnam)
AC_CHECK_FUNCS(getpwnam_r)
-AC_CHECK_FUNCS(getpwuid)
-AC_CHECK_FUNCS(getpwuid_r)
-AC_CHECK_FUNCS(getrandom)
AC_CHECK_FUNCS(getresgid)
AC_CHECK_FUNCS(getresuid)
AC_CHECK_FUNCS(getrlimit)
AC_CHECK_FUNCS(getsid)
AC_CHECK_FUNCS(gettimeofday) # for making ac_cv_func_gettimeofday
-AC_CHECK_FUNCS(getuid)
AC_CHECK_FUNCS(getuidx)
AC_CHECK_FUNCS(gmtime_r)
-AC_CHECK_FUNCS(grantpt)
AC_CHECK_FUNCS(initgroups)
AC_CHECK_FUNCS(ioctl)
AC_CHECK_FUNCS(isfinite)
AC_CHECK_FUNCS(issetugid)
-AC_CHECK_FUNCS(kill)
AC_CHECK_FUNCS(killpg)
AC_CHECK_FUNCS(lchmod)
AC_CHECK_FUNCS(lchown)
@@ -2088,16 +2350,10 @@ AC_CHECK_FUNCS(memmem)
AC_CHECK_FUNCS(mkfifo)
AC_CHECK_FUNCS(mknod)
AC_CHECK_FUNCS(mktime)
-AC_CHECK_FUNCS(mmap)
-AC_CHECK_FUNCS(mremap)
AC_CHECK_FUNCS(openat)
-AC_CHECK_FUNCS(pclose)
-AC_CHECK_FUNCS(pipe)
AC_CHECK_FUNCS(pipe2)
AC_CHECK_FUNCS(poll)
-AC_CHECK_FUNCS(popen)
AC_CHECK_FUNCS(posix_fadvise)
-AC_CHECK_FUNCS(posix_madvise)
AC_CHECK_FUNCS(posix_memalign)
AC_CHECK_FUNCS(ppoll)
AC_CHECK_FUNCS(pread)
@@ -2105,7 +2361,6 @@ AC_CHECK_FUNCS(pwrite)
AC_CHECK_FUNCS(qsort_r)
AC_CHECK_FUNCS(qsort_s)
AC_CHECK_FUNCS(readlink)
-AC_CHECK_FUNCS(realpath)
AC_CHECK_FUNCS(round)
AC_CHECK_FUNCS(sched_getaffinity)
AC_CHECK_FUNCS(seekdir)
@@ -2136,32 +2391,24 @@ AC_CHECK_FUNCS(spawnv)
AC_CHECK_FUNCS(symlink)
AC_CHECK_FUNCS(syscall)
AC_CHECK_FUNCS(sysconf)
-AC_CHECK_FUNCS(system)
AC_CHECK_FUNCS(tanh)
AC_CHECK_FUNCS(telldir)
AC_CHECK_FUNCS(timegm)
AC_CHECK_FUNCS(times)
AC_CHECK_FUNCS(truncate)
AC_CHECK_FUNCS(truncate64) # used for Win32
-AC_CHECK_FUNCS(tzset)
-AC_CHECK_FUNCS(umask)
AC_CHECK_FUNCS(unsetenv)
AC_CHECK_FUNCS(utimensat)
AC_CHECK_FUNCS(utimes)
AC_CHECK_FUNCS(wait4)
AC_CHECK_FUNCS(waitpid)
-AC_CHECK_FUNCS(__cospi)
-AC_CHECK_FUNCS(__sinpi)
-AS_IF([test "x$ac_cv_member_struct_statx_stx_btime" = xyes],
- [AC_CHECK_FUNCS(statx)])
-
-AS_CASE(["$ac_cv_func_memset_s:$ac_cv_func_qsort_s"], [*yes*],
+AS_IF([test "$ac_cv_func_memset_s" = yes],
[RUBY_DEFINE_IF([!defined __STDC_WANT_LIB_EXT1__], [__STDC_WANT_LIB_EXT1__], 1)])
AS_IF([test "$ac_cv_func_getcwd" = yes], [
AC_CACHE_CHECK(if getcwd allocates buffer if NULL is given, [rb_cv_getcwd_malloc],
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ [AC_TRY_RUN([
@%:@include <stddef.h>
@%:@include <stdio.h>
@%:@ifdef HAVE_UNISTD_H
@@ -2180,11 +2427,11 @@ main(int argc, char **argv)
if (!getcwd(NULL, 0)) return EXIT_FAILURE;
return EXIT_SUCCESS;
}
-]])],
+],
rb_cv_getcwd_malloc=yes,
rb_cv_getcwd_malloc=no,
AS_CASE($target_os,
- [linux*|darwin*|*bsd|cygwin*|msys*|mingw*|mswin*],
+ [linux*|darwin*|*bsd|cygwin*|mingw*|mswin*],
[rb_cv_getcwd_malloc=yes],
[rb_cv_getcwd_malloc=no]))])
AS_IF([test "$rb_cv_getcwd_malloc" = no], [AC_DEFINE(NO_GETCWD_MALLOC, 1)])
@@ -2196,8 +2443,15 @@ AS_IF([test "$ac_cv_func_crypt_r:$ac_cv_header_crypt_h" = yes:yes],
[AC_CHECK_MEMBERS([struct crypt_data.initialized], [], [],
[AC_INCLUDES_DEFAULT([@%:@include <crypt.h>])])])
-RUBY_CHECK_BUILTIN_FUNC(__builtin_alloca_with_align, [__builtin_alloca_with_align(1, 4096)])
-RUBY_CHECK_BUILTIN_FUNC(__builtin_assume_aligned, [__builtin_assume_aligned((void*)32, 32)])
+AC_DEFUN([RUBY_CHECK_BUILTIN_FUNC], [dnl
+AC_CACHE_CHECK([for $1], AS_TR_SH(rb_cv_builtin_$1),
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([int foo;], [$2;])],
+ [AS_TR_SH(rb_cv_builtin_$1)=yes],
+ [AS_TR_SH(rb_cv_builtin_$1)=no])])
+AS_IF([test "${AS_TR_SH(rb_cv_builtin_$1)}" != no], [
+ AC_DEFINE(AS_TR_CPP(HAVE_BUILTIN_$1))
+])])
RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap16, [__builtin_bswap16(0)])
RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap32, [__builtin_bswap32(0)])
RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap64, [__builtin_bswap64(0)])
@@ -2224,26 +2478,24 @@ AS_IF([test x$rb_cv_builtin___builtin_choose_expr = xyes], [
])
])
RUBY_CHECK_BUILTIN_FUNC(__builtin_types_compatible_p, [__builtin_types_compatible_p(int, int)])
-RUBY_CHECK_BUILTIN_FUNC(__builtin_trap, [__builtin_trap()])
-RUBY_CHECK_BUILTIN_FUNC(__builtin_expect, [__builtin_expect(0, 0)])
AS_IF([test "$ac_cv_func_qsort_r" != no], [
AC_CACHE_CHECK(whether qsort_r is GNU version, rb_cv_gnu_qsort_r,
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ [AC_TRY_COMPILE([
@%:@include <stdlib.h>
-void (qsort_r)(void *base, size_t nmemb, size_t size,
+void qsort_r(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *, void *),
void *arg);
-]], [[ ]])],
+],[ ],
[rb_cv_gnu_qsort_r=yes],
[rb_cv_gnu_qsort_r=no])
])
AC_CACHE_CHECK(whether qsort_r is BSD version, rb_cv_bsd_qsort_r,
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ [AC_TRY_COMPILE([
@%:@include <stdlib.h>
-void (qsort_r)(void *base, size_t nmemb, size_t size,
+void qsort_r(void *base, size_t nmemb, size_t size,
void *arg, int (*compar)(void *, const void *, const void *));
-]], [[ ]])],
+],[ ],
[rb_cv_bsd_qsort_r=yes],
[rb_cv_bsd_qsort_r=no])
])
@@ -2258,7 +2510,7 @@ void (qsort_r)(void *base, size_t nmemb, size_t size,
AC_CACHE_CHECK(whether atan2 handles Inf as C99, rb_cv_atan2_inf_c99, [
AS_IF([test $ac_cv_func_atan2f:$ac_cv_func_atan2l = yes:yes], [
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ AC_TRY_RUN([
@%:@include <math.h>
@%:@ifdef HAVE_UNISTD_H
@%:@include <unistd.h>
@@ -2276,7 +2528,7 @@ main(int argc, char **argv)
if (fabs(atan2(INFINITY, INFINITY) - M_PI_4) <= 0.01) return EXIT_SUCCESS;
return EXIT_FAILURE;
}
-]])],
+],
[rb_cv_atan2_inf_c99=yes],
[rb_cv_atan2_inf_c99=no],
[AS_CASE($target_os, [mingw*|mswin*], [rb_cv_atan2_inf_c99=no], [rb_cv_atan2_inf_c99=yes])]
@@ -2288,32 +2540,119 @@ AS_IF([test "x$rb_cv_atan2_inf_c99" = xyes], [AC_DEFINE(ATAN2_INF_C99)])
# Some platform need -lrt for clock_gettime, but the other don't.
AS_IF([test x"$ac_cv_func_clock_gettime" != xyes], [
# glibc 2.17 moves clock_* functions from librt to the main C library.
- # https://sourceware.org/legacy-ml/libc-announce/2012/msg00001.html
+ # http://sourceware.org/ml/libc-announce/2012/msg00001.html
AC_CHECK_LIB(rt, clock_gettime)
AS_IF([test x"$ac_cv_lib_rt_clock_gettime" = xyes], [
AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
])
])
AC_CHECK_FUNCS(clock_getres) # clock_getres should be tested after clock_gettime test including librt test.
-AC_CHECK_LIB([rt], [timer_create])
-AC_CHECK_LIB([rt], [timer_settime])
-AS_IF([test x"$ac_cv_lib_rt_timer_create" = xyes], [
- AC_DEFINE(HAVE_TIMER_CREATE, 1)
-])
-AS_IF([test x"$ac_cv_lib_rt_timer_settime" = xyes], [
- AC_DEFINE(HAVE_TIMER_SETTIME, 1)
-])
AC_CACHE_CHECK(for unsetenv returns a value, rb_cv_unsetenv_return_value,
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ [AC_TRY_COMPILE([
#include <stdlib.h>
-]], [[int v = unsetenv("foo");]])],
+], [int v = unsetenv("foo");],
rb_cv_unsetenv_return_value=yes,
rb_cv_unsetenv_return_value=no)])
AS_IF([test "$rb_cv_unsetenv_return_value" = no], [
AC_DEFINE(VOID_UNSETENV)
])
+# used for AC_ARG_WITH(setjmp-type)
+AC_DEFUN([RUBY_CHECK_SETJMP], [
+AC_CACHE_CHECK([for ]$1[ as a macro or function], ac_cv_func_$1,
+ [AC_TRY_COMPILE([
+@%:@include <setjmp.h>
+]AC_INCLUDES_DEFAULT([$3])[
+@%:@define JMPARGS_1 env
+@%:@define JMPARGS_2 env,1
+@%:@define JMPARGS JMPARGS_]m4_ifval($2,2,1)[
+],
+ m4_ifval($2,$2,jmp_buf)[ env; $1(JMPARGS);],
+ ac_cv_func_$1=yes,
+ ac_cv_func_$1=no)]
+)
+AS_IF([test "$ac_cv_func_]$1[" = yes], [AC_DEFINE([HAVE_]AS_TR_CPP($1), 1)])
+])
+
+AC_DEFUN([RUBY_CHECK_BUILTIN_SETJMP], [
+AS_IF([test x"${ac_cv_func___builtin_setjmp}" = xyes], [
+ unset ac_cv_func___builtin_setjmp
+])
+AC_CACHE_CHECK(for __builtin_setjmp, ac_cv_func___builtin_setjmp,
+ [
+ ac_cv_func___builtin_setjmp=no
+ for cast in "" "(void **)"; do
+ RUBY_WERROR_FLAG(
+ [AC_TRY_LINK([@%:@include <setjmp.h>
+ @%:@include <stdio.h>
+ jmp_buf jb;
+ @%:@ifdef NORETURN
+ NORETURN(void t(void));
+ @%:@endif
+ void t(void) {__builtin_longjmp($cast jb, 1);}
+ int jump(void) {(void)(__builtin_setjmp($cast jb) ? 1 : 0); return 0;}],
+ [
+ void (*volatile f)(void) = t;
+ if (!jump()) printf("%d\n", f != 0);
+ ],
+ [ac_cv_func___builtin_setjmp="yes with cast ($cast)"])
+ ])
+ test "$ac_cv_func___builtin_setjmp" = no || break
+ done])
+])
+
+AC_DEFUN([RUBY_SETJMP_TYPE], [
+RUBY_CHECK_BUILTIN_SETJMP
+RUBY_CHECK_SETJMP(_setjmpex, [], [@%:@include <setjmpex.h>])
+RUBY_CHECK_SETJMP(_setjmp)
+RUBY_CHECK_SETJMP(sigsetjmp, [sigjmp_buf])
+AC_MSG_CHECKING(for setjmp type)
+setjmp_suffix=
+unset setjmp_sigmask
+AC_ARG_WITH(setjmp-type,
+ AS_HELP_STRING([--with-setjmp-type], [select setjmp type]),
+ [
+ AS_CASE([$withval],
+ [__builtin_setjmp], [setjmp=__builtin_setjmp],
+ [_setjmp], [ setjmp_prefix=_],
+ [sigsetjmp,*], [ setjmp_prefix=sig setjmp_sigmask=`expr "$withval" : 'sigsetjmp\(,.*\)'`],
+ [sigsetjmp], [ setjmp_prefix=sig],
+ [setjmp], [ setjmp_prefix=],
+ [setjmpex], [ setjmp_prefix= setjmp_suffix=ex],
+ [''], [ unset setjmp_prefix],
+ [ AC_MSG_ERROR(invalid setjmp type: $withval)])], [unset setjmp_prefix])
+setjmp_cast=
+AS_IF([test ${setjmp_prefix+set}], [
+ AS_IF([test "${setjmp_prefix}" && eval test '$ac_cv_func_'${setjmp_prefix}setjmp${setjmp_suffix} = no], [
+ AC_MSG_ERROR(${setjmp_prefix}setjmp${setjmp_suffix} is not available)
+ ])
+], [{ AS_CASE("$ac_cv_func___builtin_setjmp", [yes*], [true], [false]) }], [
+ setjmp_cast=`expr "$ac_cv_func___builtin_setjmp" : "yes with cast (\(.*\))"`
+ setjmp_prefix=__builtin_
+ setjmp_suffix=
+], [test "$ac_cv_header_setjmpex_h:$ac_cv_func__setjmpex" = yes:yes], [
+ setjmp_prefix=
+ setjmp_suffix=ex
+], [test "$ac_cv_func__setjmp" = yes], [
+ setjmp_prefix=_
+ setjmp_suffix=
+], [test "$ac_cv_func_sigsetjmp" = yes], [
+ AS_CASE([$target_os],[solaris*|cygwin*],[setjmp_prefix=],[setjmp_prefix=sig])
+ setjmp_suffix=
+], [
+ setjmp_prefix=
+ setjmp_suffix=
+])
+AS_IF([test x$setjmp_prefix:$setjmp_sigmask = xsig:], [
+ setjmp_sigmask=,0
+])
+AC_MSG_RESULT(${setjmp_prefix}setjmp${setjmp_suffix}${setjmp_cast:+\($setjmp_cast\)}${setjmp_sigmask})
+AC_DEFINE_UNQUOTED([RUBY_SETJMP(env)], [${setjmp_prefix}setjmp${setjmp_suffix}($setjmp_cast(env)${setjmp_sigmask})])
+AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp($setjmp_cast(env),val)])
+AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf)
+AS_IF([test x$setjmp_suffix = xex], [AC_DEFINE_UNQUOTED(RUBY_USE_SETJMPEX, 1)])
+])
# End of setjmp check.
AC_ARG_ENABLE(setreuid,
@@ -2325,21 +2664,21 @@ AS_IF([test "$use_setreuid" = yes], [
])
AC_STRUCT_TIMEZONE
AC_CACHE_CHECK(for struct tm.tm_gmtoff, rb_cv_member_struct_tm_tm_gmtoff,
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ [AC_TRY_COMPILE([
@%:@define _BSD_SOURCE
@%:@define _DEFAULT_SOURCE
@%:@include <time.h>
- ]],
- [[struct tm t; t.tm_gmtoff = 3600;]])],
+ ],
+ [struct tm t; t.tm_gmtoff = 3600;],
[rb_cv_member_struct_tm_tm_gmtoff=yes],
[rb_cv_member_struct_tm_tm_gmtoff=no])])
AS_IF([test "$rb_cv_member_struct_tm_tm_gmtoff" = yes], [
AC_DEFINE(HAVE_STRUCT_TM_TM_GMTOFF)
])
AC_CACHE_CHECK(for external int daylight, rb_cv_have_daylight,
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>
- int i;]],
- [[i = daylight;]])],
+ [AC_TRY_LINK([#include <time.h>
+ int i;],
+ [i = daylight;],
rb_cv_have_daylight=yes,
rb_cv_have_daylight=no)])
AS_IF([test "$rb_cv_have_daylight" = yes], [
@@ -2347,7 +2686,7 @@ AS_IF([test "$rb_cv_have_daylight" = yes], [
])
AC_CACHE_CHECK(for negative time_t for gmtime(3), rb_cv_negative_time_t,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ [AC_TRY_RUN([
#include <stdlib.h>
#include <time.h>
@@ -2377,7 +2716,7 @@ main()
check(gmtime(&t), 1, 12, 13, 20, 52);
return 0;
}
-]])],
+],
rb_cv_negative_time_t=yes,
rb_cv_negative_time_t=no,
rb_cv_negative_time_t=yes)])
@@ -2386,9 +2725,9 @@ AS_IF([test "$rb_cv_negative_time_t" = yes], [
])
# [ruby-dev:40910] overflow of time on FreeBSD
-# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=145341
+# http://www.freebsd.org/cgi/query-pr.cgi?pr=145341
AC_CACHE_CHECK(for localtime(3) overflow correctly, rb_cv_localtime_overflow,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ [AC_TRY_RUN([
#include <stdlib.h>
#include <time.h>
@@ -2420,7 +2759,7 @@ main()
check(t);
return 0;
}
-]])],
+],
rb_cv_localtime_overflow=yes,
rb_cv_localtime_overflow=no,
rb_cv_localtime_overflow=no)])
@@ -2433,7 +2772,7 @@ AS_IF([test "$ac_cv_func_sigprocmask" = yes && test "$ac_cv_func_sigaction" = ye
], [
AC_CHECK_FUNCS(sigsetmask)
AC_CACHE_CHECK(for BSD signal semantics, rb_cv_bsd_signal,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ [AC_TRY_RUN([
#include <stdio.h>
#include <signal.h>
@@ -2451,7 +2790,7 @@ main()
kill(getpid(), SIGINT);
return 0;
}
-]])],
+],
rb_cv_bsd_signal=yes,
rb_cv_bsd_signal=no,
rb_cv_bsd_signal=$ac_cv_func_sigsetmask)])
@@ -2465,7 +2804,7 @@ AC_CHECK_TYPES([sig_t],[],[],[@%:@include <signal.h>])
AS_IF([test "$ac_cv_func_getpgid" = no], [
# AC_FUNC_GETPGRP fails when cross-compiling with old autoconf.
# autoconf is changed between 2.52d and 2.52f?
- # https://lists.gnu.org/archive/html/bug-gnu-utils/2001-09/msg00181.html
+ # http://lists.gnu.org/archive/html/bug-gnu-utils/2001-09/msg00181.html
# "autoconf cleanup for AC_FUNC_GETPGRP and GETPGRP_VOID"
AC_FUNC_GETPGRP
])
@@ -2484,6 +2823,21 @@ AS_IF([test x"$ac_cv_func_dirfd" = xno], [
])])
])
+AS_IF([test x"$target_cpu" = xia64], [
+ AC_LIBOBJ([ia64])
+ AC_CACHE_CHECK(for __libc_ia64_register_backing_store_base,
+ rb_cv___libc_ia64_register_backing_store_base,
+ [rb_cv___libc_ia64_register_backing_store_base=no
+ AC_TRY_LINK(
+ [extern unsigned long __libc_ia64_register_backing_store_base;],
+ [unsigned long p = __libc_ia64_register_backing_store_base;
+ printf("%ld\n", p);],
+ [rb_cv___libc_ia64_register_backing_store_base=yes])])
+ AS_IF([test $rb_cv___libc_ia64_register_backing_store_base = yes], [
+ AC_DEFINE(HAVE___LIBC_IA64_REGISTER_BACKING_STORE_BASE)
+ ])
+])
+
AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign,
[AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([], [(-1==(-1>>1))])],
rb_cv_rshift_sign=yes,
@@ -2494,55 +2848,55 @@ AS_IF([test "$rb_cv_rshift_sign" = yes], [
AC_DEFINE(RSHIFT(x,y), (((x)<0) ? ~((~(x))>>(int)(y)) : (x)>>(int)(y)))
])
-AS_IF([test "$ac_cv_func_copy_file_range" = no], [
- AC_CACHE_CHECK([for copy_file_range],
- rb_cv_use_copy_file_range,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/syscall.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#ifndef O_TMPFILE
- #define O_TMPFILE __O_TMPFILE
-#endif
-
-int
-main()
-{
-#ifdef __NR_copy_file_range
- int ret, fd_in, fd_out;
- fd_in = open("/tmp", O_TMPFILE|O_RDWR, S_IRUSR);
- fd_out = open("/tmp", O_TMPFILE|O_WRONLY, S_IWUSR);
- ret = syscall(__NR_copy_file_range, fd_in, NULL, fd_out, NULL, 0, 0);
- close(fd_in);
- close(fd_out);
- if (ret == -1) { return 1; }
- return 0;
-#else
- return 1;
-#endif
-}
- ]])],
- [rb_cv_use_copy_file_range=yes],
- [rb_cv_use_copy_file_range=no],
- [rb_cv_use_copy_file_range=no])])
-])
-AS_CASE(["$ac_cv_func_copy_file_range:$rb_cv_use_copy_file_range"], [*yes*], [
- AC_DEFINE(USE_COPY_FILE_RANGE)
-])
-
-AS_CASE(["$ac_cv_func_gettimeofday:$ac_cv_func_clock_gettime"],
-[*yes*], [],
-[
- AC_MSG_ERROR(clock_gettime() or gettimeofday() must exist)
+AS_IF([test x"$ac_cv_func_gettimeofday" != xyes], [
+ AC_MSG_ERROR(gettimeofday() must exist)
])
AS_IF([test "$ac_cv_func_sysconf" = yes], [
+ AC_DEFUN([RUBY_CHECK_SYSCONF], [dnl
+ AC_CACHE_CHECK([whether _SC_$1 is supported], rb_cv_have_sc_[]m4_tolower($1),
+ [AC_TRY_COMPILE([#include <unistd.h>
+ ],
+ [_SC_$1 >= 0],
+ rb_cv_have_sc_[]m4_tolower($1)=yes,
+ rb_cv_have_sc_[]m4_tolower($1)=no)
+ ])
+ AS_IF([test "$rb_cv_have_sc_[]m4_tolower($1)" = yes], [
+ AC_DEFINE(HAVE__SC_$1)
+ ])
+ ])
RUBY_CHECK_SYSCONF(CLK_TCK)
])
+AC_DEFUN([RUBY_STACK_GROW_DIRECTION], [
+ AS_VAR_PUSHDEF([stack_grow_dir], [rb_cv_stack_grow_dir_$1])
+ AC_CACHE_CHECK(stack growing direction on $1, stack_grow_dir, [
+AS_CASE(["$1"],
+[m68*|x86*|x64|i?86|ia64|ppc*|sparc*|alpha*], [ $2=-1],
+[hppa*], [ $2=+1],
+[
+ AC_TRY_RUN([
+/* recurse to get rid of inlining */
+static int
+stack_growup_p(addr, n)
+ volatile int *addr, n;
+{
+ volatile int end;
+ if (n > 0)
+ return *addr = stack_growup_p(addr, n - 1);
+ else
+ return (&end > addr);
+}
+int main()
+{
+ int x;
+ return stack_growup_p(&x, 10);
+}
+], $2=-1, $2=+1, $2=0)
+ ])
+eval stack_grow_dir=\$$2])
+eval $2=\$stack_grow_dir
+AS_VAR_POPDEF([stack_grow_dir])])
AS_IF([test "${universal_binary-no}" = yes ], [
archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
save_CFLAGS="$CFLAGS" new_cflags=`echo "$CFLAGS" | sed "s|$archflagpat"'||'`
@@ -2574,132 +2928,35 @@ AS_IF([test "${universal_binary-no}" = yes ], [
AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $dir)
])
-AC_ARG_WITH(coroutine,
- AS_HELP_STRING([--with-coroutine=IMPLEMENTATION], [specify the coroutine implementation to use]),
- [coroutine_type=$withval], [coroutine_type=])
-AS_CASE([$coroutine_type], [yes|''], [
- coroutine_type=
- AS_CASE(["$target_cpu-$target_os"],
- [universal-darwin*], [
- coroutine_type=universal
- ],
- [x*64-darwin*], [
- coroutine_type=amd64
- ],
- [arm64-darwin*], [
- coroutine_type=arm64
- ],
- # Correct target name is powerpc*-, but Ruby seems to prefer ppc*-.
- # Notice that Darwin PPC ABI differs from AIX and ELF.
- # Adding PPC targets for AIX, *BSD and *Linux will require separate implementations.
- [powerpc-darwin*|ppc-darwin*], [
- coroutine_type=ppc
- ],
- [powerpc64-darwin*|ppc64-darwin*], [
- coroutine_type=ppc64
- ],
- [x*64-linux*], [
- AS_CASE(["$ac_cv_sizeof_voidp"],
- [8], [ coroutine_type=amd64 ],
- [4], [ coroutine_type=x86 ],
- dnl unknown pointer size, bail out as no Context.h soon.
- )
- ],
- [*86-linux*], [
- coroutine_type=x86
- ],
- [x64-mingw*], [
- coroutine_type=win64
- ],
- [*86-mingw*], [
- coroutine_type=win32
- ],
- [arm*-linux*], [
- coroutine_type=arm32
- ],
- [aarch64-linux*], [
- coroutine_type=arm64
- ],
- [powerpc64le-linux*], [
- coroutine_type=ppc64le
- ],
- [riscv64-linux*], [
- coroutine_type=riscv64
- ],
- [loongarch64-linux*], [
- coroutine_type=loongarch64
- ],
- [x86_64-freebsd*], [
- coroutine_type=amd64
- ],
- [i386-freebsd*], [
- coroutine_type=x86
- ],
- [aarch64-freebsd*], [
- coroutine_type=arm64
- ],
- [x86_64-netbsd*], [
- coroutine_type=amd64
- ],
- [i386-netbsd*], [
- coroutine_type=x86
- ],
- [aarch64-netbsd*], [
- coroutine_type=arm64
- ],
- [x86_64-openbsd*], [
- coroutine_type=amd64
- ],
- [i386-openbsd*], [
- coroutine_type=x86
- ],
- [aarch64-openbsd*], [
- coroutine_type=arm64
- ],
- [*-openbsd*], [
- coroutine_type=pthread
- ],
- [x86_64-dragonfly*], [
- coroutine_type=amd64
- ],
- [*-haiku*], [
- coroutine_type=pthread
- ],
- [*-emscripten*], [
- coroutine_type=emscripten
- ],
- [*-wasi*], [
- coroutine_type=asyncify
- ],
- [
- AC_CHECK_FUNCS([getcontext swapcontext makecontext],
- [coroutine_type=ucontext],
- [coroutine_type=pthread; break]
- )
- ]
- )
- AC_MSG_CHECKING(native coroutine implementation for ${target_cpu}-${target_os})
- AC_MSG_RESULT(${coroutine_type})
-])
-COROUTINE_H=coroutine/$coroutine_type/Context.h
-AS_IF([test ! -f "$srcdir/$COROUTINE_H"],
- [AC_MSG_ERROR('$coroutine_type' is not supported as coroutine)])
-COROUTINE_SRC=coroutine/$coroutine_type/Context.c
-AS_IF([test ! -f "$srcdir/$COROUTINE_SRC"],
- [COROUTINE_SRC=coroutine/$coroutine_type/Context.'$(ASMEXT)'])
-AC_DEFINE_UNQUOTED(COROUTINE_H, ["$COROUTINE_H"])
-AC_SUBST(X_COROUTINE_H, [$COROUTINE_H])
-AC_SUBST(X_COROUTINE_SRC, [$COROUTINE_SRC])
-
-AS_IF([test "$THREAD_MODEL" = pthread], [
+AS_IF([test x"$enable_pthread" = xyes], [
+ for pthread_lib in thr pthread pthreads c c_r root; do
+ AC_CHECK_LIB($pthread_lib, pthread_kill,
+ rb_with_pthread=yes, rb_with_pthread=no)
+ AS_IF([test "$rb_with_pthread" = "yes"], [ break; fi
+ done
+ AS_IF([test x"$rb_with_pthread" = xyes], [
+ AC_DEFINE(_REENTRANT)
+ AC_DEFINE(_THREAD_SAFE)
+ AC_DEFINE(HAVE_LIBPTHREAD)
+ AC_CHECK_HEADERS(pthread_np.h, [], [], [@%:@include <pthread.h>])
+ AS_CASE([$pthread_lib],
+ [c], [],
+ [root], [],
+ [c_r], [MAINLIBS="-pthread $MAINLIBS"],
+ [AS_CASE(["$target_os"],
+ [openbsd*|mirbsd*], [LIBS="-pthread $LIBS"],
+ [LIBS="-l$pthread_lib $LIBS"])])
+ ], [
+ AC_MSG_WARN("Don't know how to find pthread library on your system -- thread support disabled")
+ ])
AC_CACHE_CHECK([whether pthread_t is scalar type], [rb_cv_scalar_pthread_t], [
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ AC_TRY_COMPILE([
@%:@include <pthread.h>
- ]], [[
+ ], [
pthread_t thread_id;
thread_id = 0;
if (!thread_id) return 0;
- ]])],[rb_cv_scalar_pthread_t=yes],[rb_cv_scalar_pthread_t=no])
+ ], [rb_cv_scalar_pthread_t=yes], [rb_cv_scalar_pthread_t=no])
])
AS_IF([test x"$rb_cv_scalar_pthread_t" = xyes], [
: # RUBY_CHECK_SIZEOF(pthread_t, [void* int long], [], [@%:@include <pthread.h>])
@@ -2707,33 +2964,32 @@ AS_IF([test "$THREAD_MODEL" = pthread], [
AC_DEFINE(NON_SCALAR_THREAD_ID)
])
AC_CHECK_FUNCS(sched_yield pthread_attr_setinheritsched \
- pthread_attr_get_np pthread_attr_getstack pthread_attr_getguardsize \
+ pthread_attr_get_np pthread_attr_getstack pthread_attr_init \
pthread_get_stackaddr_np pthread_get_stacksize_np \
thr_stksegment pthread_stackseg_np pthread_getthrds_np \
- pthread_condattr_setclock \
- pthread_setname_np pthread_set_name_np)
- AS_CASE(["$target_os"],[emscripten*],[ac_cv_func_pthread_sigmask=no],[AC_CHECK_FUNCS(pthread_sigmask)])
+ pthread_cond_init pthread_condattr_setclock pthread_condattr_init \
+ pthread_sigmask pthread_setname_np pthread_set_name_np)
AS_CASE(["$target_os"],[aix*],[ac_cv_func_pthread_getattr_np=no],[AC_CHECK_FUNCS(pthread_getattr_np)])
set_current_thread_name=
AS_IF([test "$ac_cv_func_pthread_setname_np" = yes], [
AC_CACHE_CHECK([arguments of pthread_setname_np], [rb_cv_func_pthread_setname_np_arguments],
[rb_cv_func_pthread_setname_np_arguments=
# Linux,AIX, (pthread_self(), name)
- # NetBSD (pthread_self(), \"%s\", name)
+ # NetBSD (pthread_self(), name, \"%s\")
# Darwin (name)
for mac in \
"(pthread_self(), name)" \
- "(pthread_self(), \"%s\", name)" \
+ "(pthread_self(), name, \"%s\")" \
"(name)" \
; do
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ AC_TRY_COMPILE([
@%:@include <pthread.h>
@%:@ifdef HAVE_PTHREAD_NP_H
@%:@include <pthread_np.h>
@%:@endif
@%:@define SET_THREAD_NAME(name) pthread_setname_np${mac}
- ]],
- [[if (SET_THREAD_NAME("conftest")) return 1;]])],
+ ],
+ [if (SET_THREAD_NAME("conftest")) return 1;],
[rb_cv_func_pthread_setname_np_arguments="${mac}"
break])
done
@@ -2753,28 +3009,12 @@ AS_IF([test "$THREAD_MODEL" = pthread], [
AC_DEFINE_UNQUOTED(SET_ANOTHER_THREAD_NAME(thid,name), $set_another_thread_name)
])
])
-
- AC_CACHE_CHECK([for thread-local storage sepcifier], [rb_cv_tls_specifier],
- rb_cv_tls_specifier=none
- RUBY_WERROR_FLAG([
- for attr in \
- _Thread_local \
- __thread \
- ; do
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[$attr int conftest;]])],
- [rb_cv_tls_specifier=$attr; break])
- done
- ])
- )
- AS_IF([test x"${rb_cv_tls_specifier}" != xnone],
- [AC_DEFINE_UNQUOTED(RB_THREAD_LOCAL_SPECIFIER, ${rb_cv_tls_specifier})]
- )
])
AS_IF([test x"$ac_cv_header_ucontext_h" = xno], [
AC_CACHE_CHECK([if signal.h defines ucontext_t], [rb_cv_ucontext_in_signal_h],
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <signal.h>]],
- [[size_t size = sizeof(ucontext_t);]])],
+ [AC_TRY_COMPILE([@%:@include <signal.h>],
+ [size_t size = sizeof(ucontext_t);],
[rb_cv_ucontext_in_signal_h=yes], [rb_cv_ucontext_in_signal_h=no])])
AS_IF([test x"$rb_cv_ucontext_in_signal_h" = xyes], [
AC_DEFINE_UNQUOTED(UCONTEXT_IN_SIGNAL_H, 1)
@@ -2782,28 +3022,28 @@ AS_IF([test x"$ac_cv_header_ucontext_h" = xno], [
])
AS_IF([test x"$ac_cv_header_ucontext_h" = xyes -o x"$rb_cv_ucontext_in_signal_h" = xyes], [
AC_CACHE_CHECK([if mcontext_t is a pointer], [rb_cv_mcontext_t_ptr],
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ [AC_TRY_COMPILE([
@%:@include <signal.h>
@%:@ifdef HAVE_UCONTEXT_H
@%:@include <ucontext.h>
@%:@endif
mcontext_t test(mcontext_t mc) {return mc+1;}
- ]],
- [[test(0);]])],
+ ],
+ [test(0);],
[rb_cv_mcontext_t_ptr=yes], [rb_cv_mcontext_t_ptr=no])])
AS_IF([test x"$rb_cv_mcontext_t_ptr" = xyes], [
AC_DEFINE_UNQUOTED(DEFINE_MCONTEXT_PTR(mc, uc), mcontext_t mc = (uc)->uc_mcontext)
], [
AC_DEFINE_UNQUOTED(DEFINE_MCONTEXT_PTR(mc, uc), mcontext_t *mc = &(uc)->uc_mcontext)
])
- AS_IF([test x"$THREAD_MODEL" = xpthread], [
+ AS_IF([test x"$rb_with_pthread" = xyes], [
AC_CHECK_FUNCS(getcontext setcontext)
])
])
-AS_IF([test "$ac_cv_func_fork_works" = "yes" -a x"$THREAD_MODEL" = xpthread], [
+AS_IF([test "$ac_cv_func_fork_works" = "yes" -a "$rb_with_pthread" = "yes"], [
AC_CACHE_CHECK([if fork works with pthread], rb_cv_fork_with_pthread,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ [AC_TRY_RUN([
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
@@ -2859,88 +3099,51 @@ main(int argc, char *argv[])
}
return EXIT_SUCCESS;
-}]])],
+}],
rb_cv_fork_with_pthread=yes,
rb_cv_fork_with_pthread=no,
rb_cv_fork_with_pthread=yes)])
test x$rb_cv_fork_with_pthread = xyes || AC_DEFINE(CANNOT_FORK_WITH_PTHREAD)
])
-AC_CHECK_HEADERS([sys/user.h])
-AS_IF([test "x$ac_cv_func_mmap" = xyes], [
- AC_CACHE_CHECK([whether PAGE_SIZE is compile-time const], rb_cv_const_page_size,
- [malloc_headers=`sed -n '/MALLOC_HEADERS_BEGIN/,/MALLOC_HEADERS_END/p' ${srcdir}/gc.c`
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$malloc_headers
- typedef char conftest_page[PAGE_SIZE];
- ]], [[]])],
- [rb_cv_const_page_size=yes],
- [rb_cv_const_page_size=no])])
-])
-AS_IF([test "x$rb_cv_const_page_size" = xyes],
- [AC_DEFINE(HAVE_CONST_PAGE_SIZE, 1)],
- [AC_DEFINE(HAVE_CONST_PAGE_SIZE, 0)]
-)
-
-AS_IF([test "x$ac_cv_func_ioctl" = xyes], [
- AC_CACHE_CHECK([ioctl request type], rb_cv_ioctl_request_type,
- [rb_cv_ioctl_request_type=no
- dnl corresponding NUM2IOCTLREQ needs to be defined
- for type in "unsigned long:ULONG_MAX" int:INT_MAX; do
- max=`echo $type | sed 's/.*://'`
- type=`echo $type | sed 's/:.*//'`
- RUBY_WERROR_FLAG([
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- @%:@include <limits.h>
- @%:@include <sys/types.h>
- @%:@if defined(HAVE_SYS_IOCTL_H) && !defined(_WIN32)
- @%:@include <sys/ioctl.h>
- @%:@endif
- ]], [[
- $type req = $max;
- if (ioctl(0, req)) {/* do nothing*/};
- ]])],
- [rb_cv_ioctl_request_type="$type"])
- ])
- test "x$rb_cv_ioctl_request_type" = xno || break
- done])
- AS_CASE(["$rb_cv_ioctl_request_type"], [no|int], [],
- ["unsigned long"], [
- AC_DEFINE_UNQUOTED(IOCTL_REQ_TYPE, [$rb_cv_ioctl_request_type])
- AC_DEFINE_UNQUOTED(NUM2IOCTLREQ(num), [NUM2ULONG(num)])
- ])
-])
}
+{ # runtime section
-: "runtime section" && {
dnl wheather use dln_a_out or not
AC_ARG_WITH(dln-a-out,
- AS_HELP_STRING([--with-dln-a-out], [dln_a_out is deprecated]),
+ AS_HELP_STRING([--with-dln-a-out], [use dln_a_out if possible]),
[
AS_CASE([$withval],
[yes], [
- AC_MSG_ERROR(dln_a_out no longer supported)
- ])
-])
+ AS_IF([test "$enable_shared" = yes], [
+ AC_MSG_ERROR(dln_a_out can not make shared library)
+ ])
+ with_dln_a_out=yes],
+ [
+ with_dln_a_out=no])], [with_dln_a_out=no])
+
+AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf,
+[AC_TRY_LINK([],[], [
+AS_CASE(["`head -1 conftest$EXEEXT | tr -dc '\177ELF' | tr '\177' .`"],
+[.ELF*], [rb_cv_binary_elf=yes], [rb_cv_binary_elf=no])],
+rb_cv_binary_elf=no)])
AS_IF([test "$rb_cv_binary_elf" = yes], [
AC_DEFINE(USE_ELF)
+ AS_IF([test "$with_dln_a_out" = yes], [
+ AC_MSG_ERROR(dln_a_out does not work with ELF)
+ ])
AC_CHECK_HEADERS([elf.h elf_abi.h])
AS_IF([test $ac_cv_header_elf_h = yes -o $ac_cv_header_elf_abi_h = yes], [
AC_LIBOBJ([addr2line])
- AC_CHECK_LIB([z], [uncompress])
])
])
-AC_CHECK_HEADERS([mach-o/loader.h])
-AS_IF([test "$ac_cv_header_mach_o_loader_h" = yes], [
- AC_LIBOBJ([addr2line])
-])
-
AS_CASE(["$target_os"],
[linux* | gnu* | k*bsd*-gnu | bsdi* | kopensolaris*-gnu], [
AS_IF([test "$rb_cv_binary_elf" = no], [
- AC_MSG_ERROR(Not ELF)
+ with_dln_a_out=yes
], [
LDFLAGS="$LDFLAGS -rdynamic"
])])
@@ -2948,26 +3151,19 @@ LIBEXT=a
AC_SUBST(DLDFLAGS)dnl
AC_SUBST(ARCH_FLAG)dnl
-AC_SUBST(RJIT_CC)dnl
-AS_CASE(["$GCC:$target_os"],
- [yes:aix*], [rjit_std_cflag="-std=gnu99"],
- [rjit_std_cflag=])
-AC_SUBST(RJIT_CFLAGS, [${RJIT_CFLAGS-"-w ${rjit_std_cflag} ${orig_cflags}"}])dnl
-AC_SUBST(RJIT_OPTFLAGS, [${RJIT_OPTFLAGS-'$(optflags)'}])dnl
-AC_SUBST(RJIT_DEBUGFLAGS, [${RJIT_DEBUGFLAGS-'$(debugflags)'}])dnl
-AC_SUBST(RJIT_LDSHARED)dnl
AC_SUBST(STATIC)dnl
AC_SUBST(CCDLFLAGS)dnl
AC_SUBST(LDSHARED)dnl
AC_SUBST(LDSHAREDXX)dnl
AC_SUBST(DLEXT)dnl
+AC_SUBST(DLEXT2)dnl
AC_SUBST(LIBEXT)dnl
AC_SUBST(ASMEXT, S)dnl
STATIC=
-: "dlopen" && {
+AS_IF([test "$with_dln_a_out" != yes], [
rb_cv_dlopen=unknown
AC_MSG_CHECKING(whether OS depend dynamic link works)
AS_IF([test "$GCC" = yes], [
@@ -2981,37 +3177,30 @@ STATIC=
# mkmf.rb's have_header() to fail if the desired resource happens to be
# installed in the /usr/local tree.
RUBY_APPEND_OPTION(CCDLFLAGS, -fno-common)],
- [bsdi*|cygwin*|msys*|mingw*|aix*|interix*], [ ],
+ [bsdi*|cygwin*|mingw*|aix*|interix*], [ ],
[
RUBY_APPEND_OPTION(CCDLFLAGS, -fPIC)])
], [
AS_CASE(["$target_os"],
+ [hpux*], [CCDLFLAGS="$CCDLFLAGS +Z"],
[solaris*|irix*], [CCDLFLAGS="$CCDLFLAGS -KPIC"],
[sunos*], [CCDLFLAGS="$CCDLFLAGS -PIC"],
[esix*|uxpds*], [CCDLFLAGS="$CCDLFLAGS -KPIC"],
[: ${CCDLFLAGS=""}])
])
-}
-EXTSTATIC=
-AC_SUBST(EXTSTATIC)dnl
-AC_ARG_WITH(static-linked-ext,
- AS_HELP_STRING([--with-static-linked-ext], [link external modules statically]),
- [AS_CASE([$withval],[yes],[STATIC=;EXTSTATIC=static],[no],[],[EXTSTATIC="$withval"])])
-AS_CASE([",$EXTSTATIC,"], [,static,|*,enc,*], [
- ENCOBJS='enc/encinit.$(OBJEXT) enc/libenc.$(LIBEXT) enc/libtrans.$(LIBEXT)'
- EXTOBJS='ext/extinit.$(OBJEXT)'
- AC_DEFINE_UNQUOTED(EXTSTATIC, 1)
- AC_SUBST(ENCSTATIC, static)
-], [
- ENCOBJS='dmyenc.$(OBJEXT)'
- EXTOBJS='dmyext.$(OBJEXT)'
-])
-AC_SUBST(ENCOBJS)
-AC_SUBST(EXTOBJS)
-: "rpath" && {
- AS_CASE(["$target_os"],
+ AC_ARG_ENABLE(rpath,
+ AS_HELP_STRING([--enable-rpath], [embed run path into extension libraries.
+ enabled by default on ELF platforms]),
+ [enable_rpath=$enableval], [enable_rpath="$rb_cv_binary_elf"])
+
+ AS_CASE(["$target_os"],
+ [hpux*], [ DLDFLAGS="$DLDFLAGS -E"
+ : ${LDSHARED='$(LD) -b'}
+ XLDFLAGS="$XLDFLAGS -Wl,-E"
+ : ${LIBPATHENV=SHLIB_PATH}
+ rb_cv_dlopen=yes],
[solaris*], [ AS_IF([test "$GCC" = yes], [
: ${LDSHARED='$(CC) -shared'}
AS_IF([test "$rb_cv_prog_gnu_ld" = yes], [
@@ -3051,6 +3240,7 @@ AC_SUBST(EXTOBJS)
rb_cv_dlopen=yes],
[interix*], [ : ${LDSHARED='$(CC) -shared'}
XLDFLAGS="$XLDFLAGS -Wl,-E"
+ LIBPATHFLAG=" -L%1\$-s"
rb_cv_dlopen=yes],
[freebsd*|dragonfly*], [
: ${LDSHARED='$(CC) -shared'}
@@ -3067,39 +3257,25 @@ AC_SUBST(EXTOBJS)
])
rb_cv_dlopen=yes],
[darwin*], [ : ${LDSHARED='$(CC) -dynamic -bundle'}
- : ${DLDSHARED='$(CC) -dynamiclib'}
: ${LDFLAGS=""}
- : ${LIBPATHENV=DYLD_FALLBACK_LIBRARY_PATH}
+ : ${LIBPATHENV=DYLD_LIBRARY_PATH}
: ${PRELOADENV=DYLD_INSERT_LIBRARIES}
- AS_IF([test x"$enable_shared" = xyes], [
- # Resolve symbols from libruby.dylib when --enable-shared
- EXTDLDFLAGS='$(LIBRUBYARG_SHARED)'
- ], [test "x$EXTSTATIC" = x], [
- # When building exts as bundles, a mach-o bundle needs to know its loader
- # program to bind symbols from the ruby executable
- EXTDLDFLAGS="-bundle_loader '\$(BUILTRUBY)'"
- ])
rb_cv_dlopen=yes],
[aix*], [ : ${LDSHARED='$(CC)'}
- AS_IF([test "$GCC" = yes], [
- LDSHARED="$LDSHARED ${linker_flag}-G -shared"
- ], [
- LDSHARED="$LDSHARED ${linker_flag}-G"
- ])
+ LDSHARED="$LDSHARED ${linker_flag}-G"
EXTDLDFLAGS='-e$(TARGET_ENTRY)'
XLDFLAGS="${linker_flag}"'-bE:$(ARCHFILE)'" ${linker_flag}-brtl"
XLDFLAGS="$XLDFLAGS ${linker_flag}-blibpath:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}"
: ${ARCHFILE="ruby.imp"}
- TRY_LINK='$(CC) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS)'
- TRY_LINK="$TRY_LINK"' $(CFLAGS) $(src) $(LIBPATH) $(LDFLAGS) $(LOCAL_LIBS) $(LIBS)'
+ TRY_LINK='$(CC) $(LDFLAGS) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS)'
+ TRY_LINK="$TRY_LINK"' $(CFLAGS) $(src) $(LIBPATH) $(LOCAL_LIBS) $(LIBS)'
: ${LIBPATHENV=LIBPATH}
- : ${PRELOADENV=LDR_PRELOAD}
rb_cv_dlopen=yes],
[nto-qnx*], [ DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
: ${LDSHARED='$(LD) -Bshareable -x'}
LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
rb_cv_dlopen=yes],
- [cygwin*|msys*|mingw*], [
+ [cygwin*|mingw*], [
: ${LDSHARED='$(CC) -shared'}
XLDFLAGS="$XLDFLAGS -Wl,--stack,0x00200000,--enable-auto-import"
DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-image-base,--enable-auto-import"
@@ -3110,36 +3286,30 @@ AC_SUBST(EXTOBJS)
[atheos*], [ : ${LDSHARED='$(CC) -shared'}
rb_cv_dlopen=yes],
[ : ${LDSHARED='$(LD)'}])
- AC_MSG_RESULT($rb_cv_dlopen)
-}
+ AC_MSG_RESULT($rb_cv_dlopen)
-AS_IF([test "$rb_cv_dlopen" = yes], [
+ AS_IF([test "$rb_cv_dlopen" = yes], [
AS_CASE(["$target_os"],
- [darwin*], [
- AC_SUBST(ADDITIONAL_DLDFLAGS, "")
+ [darwin*], [
for flag in \
- "-multiply_defined suppress" \
"-undefined dynamic_lookup" \
+ "-multiply_defined suppress" \
; do
- test "x${linker_flag}" = x || flag="${linker_flag}`echo ${flag} | tr ' ' ,`"
- RUBY_TRY_LDFLAGS([$flag], [], [flag=])
- AS_IF([test x"$flag" = x], [continue])
-
- AC_MSG_CHECKING([whether $flag is accepted for bundle])
- : > conftest.c
- AS_IF([${LDSHARED%%'$(CC)'*}$CC${LDSHARED@%:@*'$(CC)'} -o conftest.bundle $flag conftest.c >/dev/null 2>conftest.err &&
- test ! -s conftest.err], [
- AC_MSG_RESULT([yes])
- RUBY_APPEND_OPTIONS(DLDFLAGS, [$flag])
- ], [
- AC_MSG_RESULT([no])
- RUBY_APPEND_OPTIONS(ADDITIONAL_DLDFLAGS, [$flag])
- ])
- rm -fr conftest.*
+ test "x${linker_flag}" = x || flag="${linker_flag}`echo ${flag} | tr ' ' ,`"
+ RUBY_TRY_LDFLAGS([$flag], [], [flag=])
+ AS_IF([test "x$flag" != x], [
+ RUBY_APPEND_OPTIONS(DLDFLAGS, [$flag])
+ ])
done
- ])
-])
+ ])
+ ])
+ AS_IF([test "$enable_rpath:${RPATHFLAG}" = yes:], [
+ AS_IF([test "x$rpathflag" != x], [
+ RPATHFLAG=" ${rpathflag}%1\$-s"
+ ])
+ ])
+])
AS_IF([test "${LDSHAREDXX}" = ""], [
AS_CASE(["${LDSHARED}"],
[*'$(CC)'*], [
@@ -3154,6 +3324,7 @@ AS_IF([test "${LDSHAREDXX}" = ""], [
[ld" "*], [
])
])
+AS_CASE([${RPATHFLAG}],[*'%1$'*],[: ${LIBPATHFLAG=' -L%1$-s'}],[: ${LIBPATHFLAG=' -L%s'}])
AC_SUBST(LINK_SO)
AC_SUBST(LIBPATHFLAG)
@@ -3162,6 +3333,23 @@ AC_SUBST(LIBPATHENV, "${LIBPATHENV-LD_LIBRARY_PATH}")
AC_SUBST(PRELOADENV, "${PRELOADENV-LD_PRELOAD}")
AC_SUBST(TRY_LINK)
+AS_IF([test "x$OPT_DIR" != x], [
+ pat=`echo "${LDFLAGS_OPTDIR}" | sed ['s/[][\\.*|]/\\\\&/']`
+ LDFLAGS=`echo "${LDFLAGS}" | sed "s| ${pat}||"`
+ val=`IFS="$PATH_SEPARATOR"
+ for dir in $OPT_DIR; do
+ echo x ${LIBPATHFLAG} ${RPATHFLAG} |
+ sed "s/^x *//;s${IFS}"'%1\\$-s'"${IFS}${dir}/lib${IFS}g;s${IFS}%s${IFS}${dir}/lib${IFS}g"
+ done | tr '\012' ' ' | sed 's/ *$//'`
+ AS_IF([test x"$val" != x], [
+ test x"${LDFLAGS}" = x || LDFLAGS="$LDFLAGS "
+ LDFLAGS="$LDFLAGS$val"
+ test x"${DLDFLAGS}" = x || DLDFLAGS="$DLDFLAGS "
+ DLDFLAGS="$DLDFLAGS$val"
+ ])
+ LDFLAGS_OPTDIR="$val"
+])
+
AS_CASE(["$target_os"],
[freebsd*], [
AC_CHECK_LIB([procstat], [procstat_open_sysctl])
@@ -3171,20 +3359,10 @@ AS_CASE(["$target_os"],
])
AS_CASE(["$target_cpu-$target_os"],
[*-darwin*], [
- AC_CHECK_HEADERS([libproc.h])
AC_CHECK_HEADERS([execinfo.h])
AS_IF([test "x$ac_cv_header_execinfo_h" = xyes], [
AC_CHECK_LIB([execinfo], [backtrace])
AC_CHECK_HEADERS([libunwind.h])
-
- AC_CHECK_HEADERS([mach/task.h mach/mach_init.h mach/mach_port.h])
- AS_IF([ test \
- "x${ac_cv_header_mach_task_h}" = xyes -a \
- "x${ac_cv_header_mach_mach_init_h}" = xyes -a \
- "x${ac_cv_header_mach_mach_port_h}" = xyes \
- ], [
- AC_DEFINE([HAVE_MACH_TASK_EXCEPTION_PORTS], [1])
- ])
])],
[*-freebsd*|x86_64-netbsd*], [
AC_CHECK_HEADERS([execinfo.h])
@@ -3196,7 +3374,7 @@ AC_CHECK_FUNCS(backtrace)
AS_IF([test "x$ac_cv_func_backtrace" = xyes], [
AC_CACHE_CHECK(for broken backtrace, rb_cv_broken_backtrace,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ [AC_TRY_RUN([
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
@@ -3205,7 +3383,6 @@ AS_IF([test "x$ac_cv_func_backtrace" = xyes], [
#include <signal.h>
#include <execinfo.h>
-]`grep '^@%:@ *define *RUBY_SIGALTSTACK_SIZE' ${srcdir}/signal.c`[
#define TRACE_SIZE 256
void sigsegv(int signum, siginfo_t *info, void *ctx){
@@ -3223,19 +3400,18 @@ main(void)
{
volatile int *a = NULL;
stack_t ss;
- struct sigaction sa;
-
- ss.ss_sp = malloc(RUBY_SIGALTSTACK_SIZE);
+ ss.ss_sp = malloc(SIGSTKSZ);
if (ss.ss_sp == NULL) {
fprintf(stderr, "cannot allocate memory for sigaltstack\n");
return EXIT_FAILURE;
}
- ss.ss_size = RUBY_SIGALTSTACK_SIZE;
+ ss.ss_size = SIGSTKSZ;
ss.ss_flags = 0;
if (sigaltstack(&ss, NULL) == -1) {
fprintf(stderr, "sigaltstack failed\n");
return EXIT_FAILURE;
}
+ struct sigaction sa;
memset(&sa, 0, sizeof(struct sigaction));
sigemptyset(&sa.sa_mask);
sa.sa_sigaction = sigsegv;
@@ -3245,7 +3421,7 @@ main(void)
a[0] = 1;
return EXIT_SUCCESS;
}
-]])],
+],
rb_cv_broken_backtrace=no,
rb_cv_broken_backtrace=yes,
rb_cv_broken_backtrace=no)])
@@ -3260,21 +3436,49 @@ AC_ARG_WITH(valgrind,
AS_IF([test x$with_valgrind != xno],
[AC_CHECK_HEADERS(valgrind/memcheck.h)])
-: "dlext & soext" && {
+dln_a_out_works=no
+AS_IF([test "$ac_cv_header_a_out_h" = yes], [
+ AS_IF([test "$with_dln_a_out" = yes || test "$rb_cv_dlopen" = unknown], [
+ cat confdefs.h > config.h
+ AC_CACHE_CHECK(whether matz's dln works, rb_cv_dln_a_out,
+ [AC_TRY_COMPILE([
+#define USE_DLN_A_OUT
+#include "dln.c"
+],
+ [],
+ rb_cv_dln_a_out=yes,
+ rb_cv_dln_a_out=no)])
+ AS_IF([test "$rb_cv_dln_a_out" = yes], [
+ dln_a_out_works=yes
+ AC_DEFINE(USE_DLN_A_OUT)
+ ])
+ ])
+])
+
+AS_IF([test "$dln_a_out_works" = yes], [
+ AS_IF([test "$GCC" = yes], [
+ STATIC=-static
+ ], [
+ STATIC=-Bstatic
+ ])
+ DLEXT=so
+ CCDLFLAGS=
+], [
AS_CASE(["$target_os"],
+ [hpux*], [
+ DLEXT=sl],
[darwin*], [
SOEXT=dylib
DLEXT=bundle],
- [cygwin*|msys*|mingw*|*djgpp*], [
+ [cygwin*|mingw*|*djgpp*], [
LOAD_RELATIVE=1
SOEXT=dll
DLEXT=so],
[
DLEXT=so])
+])
: ${SOEXT="${DLEXT}"}
AC_SUBST(SOEXT)
-}
-
AS_IF([test "$rb_cv_dlopen:$load_relative" = yes:yes], [
AS_IF([test "$ac_cv_func_dladdr" = yes], [
LOAD_RELATIVE=1
@@ -3288,32 +3492,47 @@ AS_IF([test x"$LOAD_RELATIVE" = x1], [
len=2 # .rb
n=`expr "$DLEXT" : '.*'`; test "$n" -gt "$len" && len=$n
+n=`expr "$DLEXT2" : '.*'`; test "$n" -gt "$len" && len=$n
AC_DEFINE_UNQUOTED(DLEXT_MAXLEN, `expr $len + 1`)
test ".$DLEXT" = "." || AC_DEFINE_UNQUOTED(DLEXT, ".$DLEXT")
+test ".$DLEXT2" = "." || AC_DEFINE_UNQUOTED(DLEXT2, ".$DLEXT2")
AC_SUBST(DLEXT)
-: "strip" && {
- AC_MSG_CHECKING([for $STRIP flags])
- AC_LINK_IFELSE([AC_LANG_PROGRAM], [AS_IF(
- ["${STRIP}" -A -n conftest$ac_exeext 2>/dev/null], [
- AC_MSG_RESULT([-A -n])
- STRIP="${STRIP} -A -n"
- ],
- ["${STRIP}" -S -x conftest$ac_exeext 2>/dev/null], [
- AC_MSG_RESULT([-S -x])
- STRIP="${STRIP} -S -x"
- ], [
- AC_MSG_RESULT([none needed])
- ])
- ])
-}
+AS_IF([test "$with_dln_a_out" = yes], [
+ STRIP=true
+], [
+ AC_CHECK_TOOL(STRIP, strip, :)dnl
+])
+
+AS_CASE(["$target_os"],
+ [linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu], [
+ STRIP="$STRIP -S -x"],
+ [darwin*], [
+ STRIP="$STRIP -A -n"])
AC_ARG_WITH(ext,
- AS_HELP_STRING([--with-ext=EXTS],
+ AC_HELP_STRING([--with-ext=EXTS],
[pass to --with-ext option of extmk.rb]))
AC_ARG_WITH(out-ext,
- AS_HELP_STRING([--with-out-ext=EXTS],
+ AC_HELP_STRING([--with-out-ext=EXTS],
[pass to --without-ext option of extmk.rb]))
+EXTSTATIC=
+AC_SUBST(EXTSTATIC)dnl
+AC_ARG_WITH(static-linked-ext,
+ AS_HELP_STRING([--with-static-linked-ext], [link external modules statically]),
+ [AS_CASE([$withval],[yes],[STATIC=;EXTSTATIC=static],[no],[],[EXTSTATIC="$withval"])])
+AS_CASE([",$EXTSTATIC,"], [,static,|*,enc,*], [
+ ENCOBJS='enc/encinit.$(OBJEXT) enc/libenc.$(LIBEXT) enc/libtrans.$(LIBEXT)'
+ EXTOBJS='ext/extinit.$(OBJEXT)'
+ AC_DEFINE_UNQUOTED(EXTSTATIC, 1)
+ AC_SUBST(ENCSTATIC, static)
+], [
+ ENCOBJS='dmyenc.$(OBJEXT)'
+ EXTOBJS='dmyext.$(OBJEXT)'
+])
+AC_SUBST(ENCOBJS)
+AC_SUBST(EXTOBJS)
+
AC_ARG_WITH(setup,
AS_HELP_STRING([--with-setup=SETUP], [use extension libraries setup]),
[setup=$withval])
@@ -3356,7 +3575,7 @@ AS_IF([test x"${exec_prefix}" != xNONE], [
RUBY_EXEC_PREFIX=$ac_default_prefix
])
pat=`echo "${RUBY_EXEC_PREFIX}" | tr -c '\012' .`'\(.*\)'
-for var in bindir includedir libdir rubylibprefix; do
+for var in bindir libdir rubylibprefix; do
eval val='"$'$var'"'
AS_CASE(["$val"], ["${RUBY_EXEC_PREFIX}"*], [val='${exec_prefix}'"`expr \"$val\" : \"$pat\"`"])
eval $var='"$val"'
@@ -3372,23 +3591,20 @@ AS_IF([test x"$cross_compiling" = xyes], [
AC_SUBST(XRUBY_RUBYLIBDIR)
AC_SUBST(XRUBY_RUBYHDRDIR)
PREP='$(arch)-fake.rb'
- AS_CASE(["$enable_shared:$EXTSTATIC:$target_os"], [no::darwin*], [
- # darwin target requires miniruby for linking ext bundles
- PREP="$PREP"' miniruby$(EXEEXT)'
- ])
RUNRUBY_COMMAND='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'
RUNRUBY='$(RUNRUBY_COMMAND)'
XRUBY='$(MINIRUBY)'
+ BOOTSTRAPRUBY='$(BASERUBY)'
TEST_RUNNABLE=no
CROSS_COMPILING=yes
- AC_DEFINE(CROSS_COMPILING, 1)
], [
MINIRUBY='./miniruby$(EXEEXT) -I$(srcdir)/lib -I.'
MINIRUBY="$MINIRUBY"' -I$(EXTOUT)/common'
PREP='miniruby$(EXEEXT)'
- RUNRUBY_COMMAND='$(MINIRUBY) $(tooldir)/runruby.rb --extout=$(EXTOUT) $(RUNRUBYOPT)'
+ RUNRUBY_COMMAND='$(MINIRUBY) $(srcdir)/tool/runruby.rb --extout=$(EXTOUT) $(RUNRUBYOPT)'
RUNRUBY='$(RUNRUBY_COMMAND) --'
XRUBY='$(RUNRUBY)'
+ BOOTSTRAPRUBY='$(MINIRUBY)'
TEST_RUNNABLE=yes
CROSS_COMPILING=no
])
@@ -3400,21 +3616,22 @@ AC_SUBST(PREP)
AC_SUBST(RUNRUBY_COMMAND)
AC_SUBST(RUNRUBY)
AC_SUBST(XRUBY)
+AC_SUBST(BOOTSTRAPRUBY)
AC_SUBST(EXTOUT, [${EXTOUT=.ext}])
-FIRSTMAKEFILE=""
+])RSTMAKEFILE=""
LIBRUBY_A='lib$(RUBY_SO_NAME)-static.a'
LIBRUBY='$(LIBRUBY_A)'
LIBRUBYARG_STATIC='-l$(RUBY_SO_NAME)-static'
LIBRUBYARG='$(LIBRUBYARG_STATIC)'
-SOLIBS='$(MAINLIBS)'
+SOLIBS=
AS_CASE(["$target_os"],
- [cygwin*|msys*|mingw*|haiku*|darwin*], [
+ [cygwin*|mingw*|haiku*|darwin*], [
: ${DLDLIBS=""}
],
[
- DLDLIBS="${DLDLIBS:+$DLDLIBS }-lc"
+ DLDLIBS="$DLDLIBS -lc"
])
AC_ARG_ENABLE(multiarch,
@@ -3435,7 +3652,7 @@ AC_ARG_WITH(soname,
[
AS_CASE(["$target_os"],
[darwin*], [
- RUBY_SO_NAME='$(RUBY_BASE_NAME).$(RUBY_API_VERSION)'
+ RUBY_SO_NAME='$(RUBY_BASE_NAME).$(RUBY_PROGRAM_VERSION)'
],
[cygwin*], [
RUBY_SO_NAME='$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)0'
@@ -3449,7 +3666,7 @@ AC_ARG_WITH(soname,
[RUBY_SO_NAME='$(RUBY_BASE_NAME)'])
])
-LIBRUBY_LDSHARED=${DLDSHARED=${LDSHARED}}
+LIBRUBY_LDSHARED=$LDSHARED
LIBRUBY_DLDFLAGS=$DLDFLAGS
LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_PROGRAM_VERSION)'
LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_API_VERSION)'
@@ -3468,6 +3685,9 @@ AS_CASE("$enable_shared", [yes], [
LIBRUBY_RELATIVE=no
test -z "$CCDLFLAGS" || CFLAGS="$CFLAGS $CCDLFLAGS"
ENABLE_SHARED=yes
+ AS_IF([test "$rb_cv_binary_elf" = yes], [
+ SOLIBS='$(LIBS)'
+ ])
# libdir can be overridden in config.site file (on OpenSUSE at least).
libdir_basename=lib
@@ -3477,17 +3697,6 @@ AS_CASE("$enable_shared", [yes], [
AC_DEFINE_UNQUOTED(LIBDIR_BASENAME, ["${libdir_basename}"])
libdir_basename="${libdir_basename}"${multiarch+'/${arch}'}
- # Debian bullseye reportedly has its ld(1) patched, which breaks
- # --enable-shared --with-jemalloc combination. We might have to deal with
- # the ld(1) change sooner or later, but in the meantime let us force it
- # the old way.
- #
- # See https://github.com/ruby/ruby/pull/4627
- RUBY_TRY_LDFLAGS([${linker_flag}--no-as-needed], [no_as_needed=yes], [no_as_needed=no])
- AS_IF([test "$no_as_needed" = yes], [
- RUBY_APPEND_OPTIONS(LDFLAGS, [${linker_flag}--no-as-needed])
- ])
-
AS_CASE(["$target_os"],
[freebsd*|dragonfly*], [],
[
@@ -3513,18 +3722,16 @@ AS_CASE("$enable_shared", [yes], [
])
],
[freebsd*|dragonfly*], [
+ SOLIBS='$(LIBS)'
LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)'
LIBRUBY_SONAME='$(LIBRUBY_SO)'
AS_IF([test "$rb_cv_binary_elf" != "yes" ], [
LIBRUBY_SO="$LIBRUBY_SO.\$(TEENY)"
LIBRUBY_ALIASES=''
- ], [test "$load_relative" = yes], [
- libprefix="'\$\$ORIGIN/../${libdir_basename}'"
- LIBRUBY_RPATHFLAGS="-Wl,-rpath,${libprefix}"
- LIBRUBY_RELATIVE=yes
])
],
[netbsd*], [
+ SOLIBS='$(LIBS)'
LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)'
LIBRUBY_SO="${LIBRUBY_SONAME}"'.$(TEENY)'
RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ['-Wl,-soname,$(LIBRUBY_SONAME)' "$LDFLAGS_OPTDIR"])
@@ -3535,30 +3742,32 @@ AS_CASE("$enable_shared", [yes], [
])
],
[openbsd*|mirbsd*], [
+ SOLIBS='$(LIBS)'
LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR).'`expr ${MINOR} \* 10 + ${TEENY}`
],
[solaris*], [
+ SOLIBS='$(LIBS)'
LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)'
LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_PROGRAM_VERSION)'
LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
- RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ["${linker_flag}-h${linker_flag:+,}"'$(@F)'])
- AS_IF([test "$load_relative" = yes], [
- libprefix="'\$\$ORIGIN/../${libdir_basename}'"
- LIBRUBY_RPATHFLAGS="-R${libprefix}"
- LIBRUBY_RELATIVE=yes
+ AS_IF([test "$GCC" = yes], [
+ LIBRUBY_DLDFLAGS="$DLDFLAGS "'-Wl,-h,$(@F)'
], [
- LIBRUBY_RPATHFLAGS='-R${libdir}'
+ LIBRUBY_DLDFLAGS="$DLDFLAGS "'-h $(@F)'
])
+ XLDFLAGS="$XLDFLAGS "'-R${libdir}'
+ ],
+ [hpux*], [
+ XLDFLAGS="$XLDFLAGS "'-Wl,+s,+b,$(libdir)'
+ LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
],
[aix*], [
RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ["${linker_flag}-bnoentry" "$XLDFLAGS" "$LDFLAGS_OPTDIR"])
LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}'
- LIBS="$LIBS -lm -lc"
+ SOLIBS='-lm -lc'
],
[darwin*], [
- LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT)'
- LIBRUBY_SONAME='$(LIBRUBY_SO)'
- LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).$(SOEXT)'
+ LIBRUBY_LDSHARED='$(CC) -dynamiclib'
AS_IF([test "$load_relative" = yes], [
libprefix="@executable_path/../${libdir_basename}"
LIBRUBY_RELATIVE=yes
@@ -3572,11 +3781,15 @@ AS_CASE("$enable_shared", [yes], [
LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,*_threadptr_*'
])
LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "' $(XLDFLAGS)'
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT)'
+ LIBRUBY_SONAME='lib$(RUBY_BASE_NAME).$(RUBY_API_VERSION).$(SOEXT)'
+ LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_INSTALL_NAME).$(SOEXT)'
+ SOLIBS='$(LIBS)'
],
[interix*], [
LIBRUBYARG_SHARED='-L. -L${libdir} -l$(RUBY_SO_NAME)'
],
- [cygwin*|msys*|mingw*|mswin*], [
+ [mingw*|cygwin*|mswin*], [
LIBRUBY_RELATIVE=yes
])
], [
@@ -3635,7 +3848,7 @@ AS_CASE("$cross_compiling:${LIBPATHENV}", [yes:* | no:], [], [
AC_MSG_CHECKING(whether wrapper for $LIBPATHENV is needed)
AS_IF([env ${LIBPATHENV}=/lib /bin/sh -c ': ${'${LIBPATHENV}'?}' 2>/dev/null],
[AC_MSG_RESULT(no)],
- [AC_SUBST(XRUBY_LIBPATHENV_WRAPPER, 'exe/$(PROGRAM)')
+ [PREP="$PREP"' exe/$(PROGRAM)'
AC_MSG_RESULT(yes)]
)
])
@@ -3653,9 +3866,6 @@ AS_CASE(["${enable_dtrace}"],
], [
rb_cv_dtrace_available=no
])
-AS_CASE(["$target_os"],[freebsd*],[
- rb_cv_dtrace_available=no
- ])
AS_IF([test "${enable_dtrace}" = yes], [dnl
AS_IF([test -z "$DTRACE"], [dnl
AC_MSG_ERROR([dtrace(1) is missing])
@@ -3700,38 +3910,26 @@ AS_IF([test x"$gcov" = xyes], [
RUBY_SETJMP_TYPE
}
+{ # build section
-: "build section" && {
dnl build rdoc index if requested
RDOCTARGET=""
CAPITARGET=""
AC_ARG_ENABLE(install-doc,
AS_HELP_STRING([--disable-install-doc], [do not install either rdoc indexes or C API documents during install]),
[install_doc=$enableval], [install_doc=yes])
-AC_ARG_WITH(rdoc,
- AS_HELP_STRING([--with-rdoc=ri,html], [comma/space separated list of RDoc formats to install]),
- [install_rdoc=`echo ,$withval, | sed 'y/,/ /;s/ ri / rdoc /;s/^ *//;s/ *$//'`], [
AC_ARG_ENABLE(install-rdoc,
AS_HELP_STRING([--disable-install-rdoc], [do not install rdoc indexes during install]),
[install_rdoc=$enableval], [install_rdoc=yes])
-])
AC_ARG_ENABLE(install-capi,
AS_HELP_STRING([--disable-install-capi], [do not install C API documents during install]),
[install_capi=$enableval], [install_capi=no])
AS_IF([test "$install_doc" != no], [
- AS_CASE(["$install_rdoc"],
- [yes], [
+ AS_IF([test "$install_rdoc" != no], [
RDOCTARGET="rdoc"
- ],
- [all], [
- RDOCTARGET="rdoc html"
- ],
- [no|''], [
+ ], [
RDOCTARGET="nodoc"
- ],
- [
- RDOCTARGET="$install_rdoc"
])
AS_IF([test "$install_capi" != no -a -n "$DOXYGEN"], [
CAPITARGET="capi"
@@ -3749,181 +3947,19 @@ AC_SUBST(CAPITARGET)
AS_CASE(["$RDOCTARGET:$CAPITARGET"],[nodoc:nodoc],[INSTALLDOC=nodoc],[INSTALLDOC=all])
AC_SUBST(INSTALLDOC)
-AC_CHECK_PROG(RUSTC, [rustc], [rustc], [no]) dnl no ac_tool_prefix
-
-dnl check if rustc is recent enough to build YJIT (rustc >= 1.58.0)
-YJIT_RUSTC_OK=no
-AS_IF([test "$RUSTC" != "no"],
- AC_MSG_CHECKING([whether ${RUSTC} works for YJIT])
- YJIT_TARGET_ARCH=
- AS_CASE(["$target_cpu"],
- [arm64|aarch64], [YJIT_TARGET_ARCH=aarch64],
- [x86_64], [YJIT_TARGET_ARCH=x86_64],
- )
- dnl Fails in case rustc target doesn't match ruby target.
- dnl Can happen on Rosetta, for example.
- AS_IF([echo "#[cfg(target_arch = \"$YJIT_TARGET_ARCH\")] fn main() { let x = 1; format!(\"{x}\"); }" |
- $RUSTC - --emit asm=/dev/null 2>/dev/null],
- [YJIT_RUSTC_OK=yes]
- )
- AC_MSG_RESULT($YJIT_RUSTC_OK)
-)
-
-dnl check if we can build YJIT on this target platform
-dnl we can't easily cross-compile with rustc so we don't support that
-YJIT_TARGET_OK=no
-AS_IF([test "$cross_compiling" = no],
- AS_CASE(["$target_cpu-$target_os"],
- [*android*], [
- YJIT_TARGET_OK=no
- ],
- [arm64-darwin*|aarch64-darwin*|x86_64-darwin*], [
- YJIT_TARGET_OK=yes
- ],
- [arm64-*linux*|aarch64-*linux*|x86_64-*linux*], [
- YJIT_TARGET_OK=yes
- ],
- [arm64-*bsd*|aarch64-*bsd*|x86_64-*bsd*], [
- YJIT_TARGET_OK=yes
- ]
- )
-)
-
-dnl build YJIT in release mode if rustc >= 1.58.0 is present and we are on a supported platform
-AC_ARG_ENABLE(yjit,
- AS_HELP_STRING([--enable-yjit],
- [enable in-process JIT compiler that requires Rust build tools. enabled by default on supported platforms if rustc 1.58.0+ is available]),
- [YJIT_SUPPORT=$enableval],
- [AS_CASE(["$YJIT_TARGET_OK:$YJIT_RUSTC_OK"],
- [yes:yes], [
- YJIT_SUPPORT=yes
- ],
- [YJIT_SUPPORT=no]
- )]
-)
-
-CARGO=
-CARGO_BUILD_ARGS=
-YJIT_LIBS=
-AS_CASE(["${YJIT_SUPPORT}"],
-[yes|dev|stats|dev_nodebug], [
- AS_IF([test x"$RUSTC" = "xno"],
- AC_MSG_ERROR([rustc is required. Installation instructions available at https://www.rust-lang.org/tools/install])
- )
-
- AS_CASE(["${YJIT_SUPPORT}"],
- [yes], [
- rb_rust_target_subdir=release
- ],
- [dev], [
- rb_rust_target_subdir=debug
- CARGO_BUILD_ARGS='--features stats,disasm'
- AC_DEFINE(RUBY_DEBUG, 1)
- ],
- [dev_nodebug], [
- rb_rust_target_subdir=dev_nodebug
- CARGO_BUILD_ARGS='--profile dev_nodebug --features stats,disasm'
- AC_DEFINE(YJIT_STATS, 1)
- ],
- [stats], [
- rb_rust_target_subdir=stats
- CARGO_BUILD_ARGS='--profile stats --features stats'
- AC_DEFINE(YJIT_STATS, 1)
- ])
-
- AS_IF([test -n "${CARGO_BUILD_ARGS}"], [
- AC_CHECK_TOOL(CARGO, [cargo], [no])
- AS_IF([test x"$CARGO" = "xno"],
- AC_MSG_ERROR([cargo is required. Installation instructions available at https://www.rust-lang.org/tools/install])
- ]))
-
- YJIT_LIBS="yjit/target/${rb_rust_target_subdir}/libyjit.a"
- AS_CASE(["$target_os"],[openbsd*],[
- # Link libc++abi (which requires libpthread) for _Unwind_* functions needed by yjit
- LDFLAGS="$LDFLAGS -lpthread -lc++abi"
- ])
- YJIT_OBJ='yjit.$(OBJEXT)'
- AS_IF([test x"$YJIT_SUPPORT" != "xyes" ], [
- AC_DEFINE_UNQUOTED(YJIT_SUPPORT, [$YJIT_SUPPORT])
- ])
- AC_DEFINE(USE_YJIT, 1)
-], [
- AC_DEFINE(USE_YJIT, 0)
-])
-
-dnl These variables end up in ::RbConfig::CONFIG
-AC_SUBST(YJIT_SUPPORT)dnl what flavor of YJIT the Ruby build includes
-AC_SUBST(RUSTC)dnl Rust compiler command
-AC_SUBST(CARGO)dnl Cargo command for Rust builds
-AC_SUBST(CARGO_BUILD_ARGS)dnl for selecting Rust build profiles
-AC_SUBST(YJIT_LIBS)dnl for optionally building the Rust parts of YJIT
-AC_SUBST(YJIT_OBJ)dnl for optionally building the C parts of YJIT
-
-dnl Currently, RJIT only supports Unix x86_64 platforms.
-RJIT_TARGET_OK=no
-AS_IF([test "$cross_compiling" = no],
- AS_CASE(["$target_cpu-$target_os"],
- [*android*], [
- RJIT_TARGET_OK=no
- ],
- [x86_64-darwin*], [
- RJIT_TARGET_OK=yes
- ],
- [x86_64-*linux*], [
- RJIT_TARGET_OK=yes
- ],
- [x86_64-*bsd*], [
- RJIT_TARGET_OK=yes
- ]
- )
-)
-
-dnl Build RJIT on Unix x86_64 platforms or if --enable-rjit is specified.
-AC_ARG_ENABLE(rjit,
- AS_HELP_STRING([--enable-rjit],
- [enable pure-Ruby JIT compiler. enabled by default on Unix x86_64 platforms]),
- [RJIT_SUPPORT=$enableval],
- [AS_CASE(["$YJIT_TARGET_OK"],
- [yes], [RJIT_SUPPORT=yes],
- [RJIT_SUPPORT=no]
- )]
-)
-
-AS_CASE(["$RJIT_SUPPORT"],
-[yes|dev|disasm], [
- AS_CASE(["$RJIT_SUPPORT"],
- [dev], [
- # Link libcapstone for --rjit-dump-disasm
- AC_CHECK_LIB([capstone], [cs_disasm])
-
- # Enable extra stats (vm_insns_count, ratio_in_rjit)
- AC_DEFINE(RJIT_STATS, 1)
- ],
- [disasm], [
- # Link libcapstone for --rjit-dump-disasm
- AC_CHECK_LIB([capstone], [cs_disasm])
- ])
-
- AC_DEFINE(USE_RJIT, 1)
-], [
- AC_DEFINE(USE_RJIT, 0)
-])
-
-AC_SUBST(RJIT_SUPPORT)
-
AC_ARG_ENABLE(install-static-library,
AS_HELP_STRING([--disable-install-static-library], [do not install static ruby library]),
- [INSTALL_STATIC_LIBRARY=$enableval
- AS_IF([test x"$enable_shared" = xno -a x"$INSTALL_STATIC_LIBRARY" = xno],
- [AC_MSG_ERROR([must install either static or shared library])],
- [])],
+ [INSTALL_STATIC_LIBRARY=$enableval],
AS_IF([test x"$enable_shared" = xyes],
[INSTALL_STATIC_LIBRARY=no],
[INSTALL_STATIC_LIBRARY=yes]))
AC_SUBST(INSTALL_STATIC_LIBRARY)
+AS_IF([test "$rb_with_pthread" = "yes"], [
+ THREAD_MODEL=pthread
+])
AC_CACHE_CHECK([for prefix of external symbols], rb_cv_symbol_prefix, [
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[extern void conftest_external(void) {}]], [[]])],[
+ AC_TRY_COMPILE([extern void conftest_external(void) {}], [], [
rb_cv_symbol_prefix=`$NM conftest.$ac_objext |
sed -n ['/.*T[ ]\([^ ]*\)conftest_external.*/!d;s//\1/p;q']`
],
@@ -3934,7 +3970,7 @@ SYMBOL_PREFIX="$rb_cv_symbol_prefix"
test "x$SYMBOL_PREFIX" = xNONE && SYMBOL_PREFIX=''
DLNOBJ=dln.o
AC_ARG_ENABLE(dln,
- AS_HELP_STRING([--disable-dln], [disable dynamic link feature]),
+ AC_HELP_STRING([--disable-dln], [disable dynamic link feature]),
[test "$enableval" = yes || DLNOBJ=dmydln.o])
AC_SUBST(DLNOBJ)
MINIDLNOBJ=dmydln.o
@@ -3947,30 +3983,8 @@ AS_CASE(["$target_os"],
],
[darwin*], [
RUBY_APPEND_OPTION(CFLAGS, -pipe)
- AC_MSG_CHECKING([whether Security framework is needed])
- AC_COMPILE_IFELSE([
- AC_LANG_BOOL_COMPILE_TRY([
-@%:@include <AvailabilityMacros.h>
-enum {
- least = MAC_OS_X_VERSION_10_7, /* just fail if undefined */
- required = MAC_OS_X_VERSION_MIN_REQUIRED,
- upper /* bigger than MIN_REQUIRED, or */
-@%:@ifdef MAC_OS_X_VERSION_10_10
- = MAC_OS_X_VERSION_10_10
-@%:@endif
-};],
- [required >= least && required < upper])],
- [dnl
- AC_MSG_RESULT(yes)
- RUBY_APPEND_OPTION(XLDFLAGS, [-framework Security])
- RUBY_APPEND_OPTION(LIBRUBYARG_STATIC, [-framework Security])
- ],dnl
- [dnl
- AC_MSG_RESULT(no)
- ]dnl
- )
- RUBY_APPEND_OPTION(XLDFLAGS, [-framework CoreFoundation])
- RUBY_APPEND_OPTION(LIBRUBYARG_STATIC, [-framework CoreFoundation])
+ RUBY_APPEND_OPTION(XLDFLAGS, [-framework Foundation])
+ RUBY_APPEND_OPTION(LIBRUBYARG_STATIC, [-framework Foundation])
],
[osf*], [
AS_IF([test "$GCC" != "yes" ], [
@@ -3987,8 +4001,8 @@ enum {
CFLAGS="$CFLAGS -std"
])
],
- [cygwin*|msys*|mingw*], [
- LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)'
+ [cygwin*|mingw*], [
+ LIBRUBY_DLDFLAGS="${DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)'
AS_CASE(["$target_os"],
[cygwin*], [
AS_IF([test x"$enable_shared" = xyes], [
@@ -4002,16 +4016,18 @@ enum {
LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)'
])
EXPORT_PREFIX=' '
- EXTDLDFLAGS='$(DEFFILE)'
+ DLDFLAGS="${DLDFLAGS}"' $(DEFFILE)'
AC_LIBOBJ([win32/win32])
AC_LIBOBJ([win32/file])
COMMON_LIBS=m
# COMMON_MACROS="WIN32_LEAN_AND_MEAN="
COMMON_HEADERS="winsock2.h windows.h"
+ THREAD_MODEL=win32
PLATFORM_DIR=win32
])
LIBRUBY_ALIASES=''
FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in
+ SOLIBS='$(LIBS)'
AS_IF([test x"$enable_shared" = xyes], [
LIBRUBY='lib$(RUBY_SO_NAME).dll.a'
], [
@@ -4020,20 +4036,21 @@ enum {
LIBRUBYARG='-l$(RUBY_SO_NAME)'
])
],
- [wasi*], [
- FIRSTMAKEFILE=GNUmakefile:wasm/GNUmakefile.in
- AC_LIBOBJ([wasm/missing])
- AC_LIBOBJ([wasm/runtime])
- AC_LIBOBJ([wasm/fiber])
- AC_LIBOBJ([wasm/machine])
- AC_LIBOBJ([wasm/setjmp])
- AC_LIBOBJ([wasm/machine_core])
- AC_LIBOBJ([wasm/setjmp_core])
- PLATFORM_DIR=wasm
+ [hpux*], [
+ AS_CASE(["$YACC"],[*yacc*], [
+ XCFLAGS="$XCFLAGS -DYYMAXDEPTH=300"
+ YACC="$YACC -Nl40000 -Nm40000"
+ ])
])
MINIOBJS="$MINIDLNOBJ"
+AS_CASE(["$THREAD_MODEL"],
+[pthread], [AC_CHECK_HEADERS(pthread.h)],
+[win32], [],
+[""], [AC_MSG_ERROR(thread model is missing)],
+ [AC_MSG_ERROR(unknown thread model $THREAD_MODEL)])
+
AC_ARG_ENABLE(debug-env,
AS_HELP_STRING([--enable-debug-env], [enable RUBY_DEBUG environment variable]),
[AC_SUBST(ENABLE_DEBUG_ENV, yes)])
@@ -4078,12 +4095,13 @@ AS_IF([test "${universal_binary-no}" = yes ], [
AC_CACHE_CHECK([for architecture macros], rb_cv_architecture_macros, [
mv confdefs.h confdefs1.h
: > confdefs.h
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@if defined __`echo ${universal_archnames} |
+ AC_TRY_COMPILE([@%:@if defined __`echo ${universal_archnames} |
sed 's/=[^ ]*//g;s/ /__ || defined __/g'`__
@%:@else
@%:@error
>>>>>><<<<<<
-@%:@endif]], [[]])],[
+@%:@endif], [],
+[
rb_cv_architecture_macros=yes
mv -f confdefs1.h confdefs.h
], [
@@ -4096,29 +4114,19 @@ AS_IF([test "${universal_binary-no}" = yes ], [
CFLAGS="$new_cflags -arch $archs"
archs="__${archs}__"
AC_MSG_CHECKING([for macro ${archs} on ${cpu}])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@ifndef ${archs}
+ AC_TRY_COMPILE([@%:@ifndef ${archs}
@%:@error
-@%:@endif]], [[]])],
- [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+@%:@endif], [], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
done
mv -f confdefs1.h confdefs.h
AC_MSG_ERROR([failed])
])])
AC_CACHE_CHECK(whether __ARCHITECTURE__ is available, rb_cv_architecture_available,
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdio.h>
- const char arch[[]] = __ARCHITECTURE__;]], [[puts(arch);]])],
+ AC_TRY_COMPILE([@%:@include <stdio.h>
+ const char arch[[]] = __ARCHITECTURE__;], [puts(arch);],
[rb_cv_architecture_available=yes], [rb_cv_architecture_available=no]))
])
-: ${RJIT_LDSHARED=`echo "$LDSHARED" | sed ['s|\$(LD)|'"${LD}"'|g;s|\$(CC)|$(RJIT_CC)|g']`}
-
-MAINLIBS="$LIBS"
-LIBS=$ORIG_LIBS
-AS_IF([test -n "${LIBS}"], [
- libspat=`echo "${LIBS}" | sed 's/[[][|.*$^]]/\\&/g;s/^ */ /;s/^ *$/ /'`
- MAINFLAGS=`echo " $MAINLIBS " | sed "s|$libspat"'||;s/^ *//;s/ *$//'`
-])
-LIBRUBYARG_STATIC="${LIBRUBYARG_STATIC} \$(MAINLIBS)"
CPPFLAGS="$CPPFLAGS "'$(DEFS)'
test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}'
AS_IF([test -n "${cflags+set}"], [
@@ -4135,11 +4143,10 @@ AS_IF([test "${ARCH_FLAG}"], [
CXXFLAGS=`echo "$CXXFLAGS" | sed "s| *$archflagpat"'||'`
LDFLAGS=`echo "$LDFLAGS" | sed "s| *$archflagpat"'||'`
])
-rb_cv_warnflags=`echo "$rb_cv_warnflags" | sed 's/^ *//;s/ *$//'`
warnflags="$rb_cv_warnflags"
AC_SUBST(cppflags)dnl
AC_SUBST(cflags, ["${orig_cflags:+$orig_cflags }"'${optflags} ${debugflags} ${warnflags}'])dnl
-AC_SUBST(cxxflags)dnl
+AC_SUBST(cxxflags, ["${orig_cxxflags:+$orig_cxxflags }"'${optflags} ${debugflags} ${warnflags}'])dnl
AC_SUBST(optflags)dnl
AC_SUBST(debugflags)dnl
AC_SUBST(warnflags)dnl
@@ -4164,7 +4171,6 @@ AC_SUBST(LIBRUBYARG_STATIC)
AC_SUBST(LIBRUBYARG_SHARED)
AC_SUBST(SOLIBS)
AC_SUBST(DLDLIBS)
-AC_SUBST(DLDSHARED)
AC_SUBST(ENABLE_SHARED)
AC_SUBST(MAINLIBS)
AC_SUBST(COMMON_LIBS)
@@ -4174,7 +4180,6 @@ AC_SUBST(EXPORT_PREFIX)
AC_SUBST(SYMBOL_PREFIX)
AC_SUBST(MINIOBJS)
AC_SUBST(THREAD_MODEL)
-AC_SUBST(COROUTINE_TYPE, ${coroutine_type})
AC_SUBST(PLATFORM_DIR)
firstmf=`echo $FIRSTMAKEFILE | sed 's/:.*//'`
@@ -4193,7 +4198,7 @@ test "$program_suffix" != NONE &&
RUBY_INSTALL_NAME="${ri_prefix}"'$(RUBY_BASE_NAME)'"${ri_suffix}"
AS_CASE(["$target_os"],
- [cygwin*|msys*|mingw*], [
+ [cygwin*|mingw*], [
RUBYW_INSTALL_NAME="${ri_prefix}"'$(RUBYW_BASE_NAME)'"${ri_suffix}"
rubyw_install_name='$(RUBYW_INSTALL_NAME)'
])
@@ -4235,7 +4240,6 @@ AS_CASE(["$ruby_version"],
AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [
{
echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
- echo '@%:@include "confdefs.h"'
echo '#define STRINGIZE(x) x'
test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
echo '#include "version.h"'
@@ -4310,7 +4314,7 @@ AS_IF([test "${universal_binary-no}" = yes ], [
for archs in ${universal_archnames}; do
cpu=`echo $archs | sed 's/.*=//'`
archs=`echo $archs | sed 's/=.*//'`
- RUBY_DEFINE_IF([defined __${archs}__ &&! defined RUBY_PLATFORM_CPU], RUBY_PLATFORM_CPU, ["${cpu}"])
+ RUBY_DEFINE_IF([defined __${archs}__], RUBY_PLATFORM_CPU, ["${cpu}"])
done
])
ints='long int short'
@@ -4318,14 +4322,10 @@ AS_IF([test "${universal_binary-no}" = yes ], [
AC_SUBST(UNIVERSAL_ARCHNAMES, "${universal_archnames}")
AC_SUBST(UNIVERSAL_INTS, "${ints}")
AC_DEFINE_UNQUOTED(RUBY_PLATFORM_OS, "${target_os}")
- AC_DEFINE_UNQUOTED(RUBY_ARCH, "universal-" RUBY_PLATFORM_OS)
- AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "universal." RUBY_PLATFORM_CPU "-" RUBY_PLATFORM_OS)
+ AC_DEFINE_UNQUOTED(RUBY_ARCH, "universal-"RUBY_PLATFORM_OS)
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "universal."RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS)
], [
- AS_IF([test "${target_os}-${rb_cv_msvcrt}" = "mingw32-ucrt" ], [
- arch="${target_cpu}-mingw-ucrt"
- ], [
- arch="${target_cpu}-${target_os}"
- ])
+ arch="${target_cpu}-${target_os}"
AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "$arch")
])
@@ -4407,20 +4407,14 @@ AS_IF([test -z "$MANTYPE"], [
])
AC_SUBST(MANTYPE)
-MKMF_VERBOSE=0
-AC_ARG_ENABLE(mkmf-verbose,
- AS_HELP_STRING([--enable-mkmf-verbose], [enable verbose in mkmf]),
- [MKMF_VERBOSE=1],
- [MKMF_VERBOSE=0])
-AC_SUBST(MKMF_VERBOSE)
-
AC_ARG_ENABLE(rubygems,
AS_HELP_STRING([--disable-rubygems], [disable rubygems by default]),
[enable_rubygems="$enableval"], [enable_rubygems=yes])
AS_IF([test x"$enable_rubygems" = xno], [
- USE_RUBYGEMS=no
+ AC_DEFINE(DISABLE_RUBYGEMS, 1)
+ USE_RUBYGEMS=NO
], [
- USE_RUBYGEMS=yes
+ USE_RUBYGEMS=YES
])
AC_SUBST(USE_RUBYGEMS)
@@ -4436,8 +4430,8 @@ guard=INCLUDE_RUBY_CONFIG_H
} | tr -d '\015' |
(
AS_IF([test "x$CONFIGURE_TTY" = xyes], [color=--color], [color=])
- exec ${SHELL} ${tooldir}/ifchange $color "${config_h}" -
-) >&AS_MESSAGE_FD || AC_MSG_ERROR([failed to create ${config_h}])
+ exec ${srcdir}/tool/ifchange $color "${config_h}" -
+) || AC_MSG_ERROR([failed to create ${config_h}])
tr -d '\015' < largefile.h > confdefs.h
rm largefile.h
@@ -4464,58 +4458,43 @@ PACKAGE=$RUBY_BASE_NAME
AC_SUBST(PACKAGE)
AS_MESSAGE([$PACKAGE library version = $ruby_version])
-AS_IF([test x"$CC_WRAPPER" != x], [
- CC='$(CC_WRAPPER) '"${CC@%:@$CC_WRAPPER }"
- CPP='$(CC_WRAPPER) '"${CPP@%:@$CC_WRAPPER }"
- XCC_WRAPPER="$CC_WRAPPER"
-])
-AC_SUBST(CC_WRAPPER, '')
-AC_SUBST(XCC_WRAPPER)
-
AS_CASE([" $CPP "], [*" $CC "*], [CPP=`echo " $CPP " | sed "s| $CC |"' $(CC) |;s/^ *//;s/ *$//'`])
-AS_IF([test ! -f "$srcdir/revision.h"], [
- AS_IF([test "x$HAVE_BASERUBY" = xyes], [
- ${BASERUBY} -C "$srcdir" tool/file2lastrev.rb -q --revision.h > "$srcdir/revision.h"
- ], [
- touch "$srcdir/revision.h"
- ])
-])
-
AS_IF([test x"$firstmf" != x], [
AC_CONFIG_FILES($firstmf:$firsttmpl, [], [firstmf="$firstmf" firsttmpl="$firsttmpl"])
])
-AC_CONFIG_FILES(Makefile:template/Makefile.in, [
+AC_CONFIG_FILES(Makefile, [
tmpmk=confmk$$.tmp
{
AS_IF([test ${VCS+set}], [
:
+ ], [svn info "$srcdir" > /dev/null 2>&1], [
+ VCS='svn'
], [git_dir=`$GIT --work-tree="$srcdir" --git-dir="$srcdir/.git" rev-parse --git-dir 2>/dev/null`], [
- VCS='$(GIT)'
+ AS_IF([test -d "$git_dir/svn"], [
+ VCS='$(GIT) svn'
+ ], [
+ VCS='$(GIT)'
+ ])
], [
VCS='echo cannot'
])
AS_CASE("$VCS",
- ['$(GIT)'|git], [VCSUP='$(VCS) pull --rebase $(GITPULLOPTIONS)'],
+ [svn], [VCSUP='$(VCS) up $(SVNUPOPTIONS)'],
+ ['$(GIT) svn'], [VCSUP='$(VCS) rebase $(GITSVNREBASEOPTIONS)'],
+ ['$(GIT)'|git], [VCSUP='$(VCS) pull $(GITPULLOPTIONS)'],
[VCSUP='$(VCS)'])
- for f in "$srcdir/version.h" "$srcdir/revision.h"; do
- test -f "$f" || continue
- sed -n \
- -e '[/^@%:@define \(RUBY_RELEASE_[A-Z]*\) \([0-9][0-9]*\)/]{' \
- -e 's//\1 = \2/' \
- -e '[s/ \([0-9]\)$/ 0\1/]' \
- -e p \
- -e '}' "$f"
- done
+ sed -n \
+ -e '[/^@%:@define \(RUBY_RELEASE_[A-Z]*\) \([0-9][0-9]*\)/]{' \
+ -e 's//\1 = \2/' \
+ -e '[s/ \([0-9]\)$/ 0\1/]' \
+ -e p \
+ -e '}' "$srcdir/version.h"
sed '/^MISSING/s/\$U\././g;/^VCS *=/s#@VCS@#'"$VCS"'#;/^VCSUP *=/s#@VCSUP@#'"$VCSUP"'#' Makefile
echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
AS_IF([test "$gnumake" != yes], [
echo ['$(MKFILES): $(srcdir)/common.mk']
sed ['s/{\$([^(){}]*)[^{}]*}//g'] ${srcdir}/common.mk
- AS_IF([test "$YJIT_SUPPORT" = yes], [
- cat ${srcdir}/yjit/not_gmake.mk
- echo ['$(MKFILES): ${srcdir}/yjit/not_gmake.mk']
- ])
], [
echo 'distclean-local::; @$(RM) GNUmakefile uncommon.mk'
])
@@ -4533,10 +4512,10 @@ AC_CONFIG_FILES(Makefile:template/Makefile.in, [
echo 'ruby: $(PROGRAM);' >> $tmpmk
test "$tmpmk" = "$tmpgmk" || rm -f "$tmpgmk"
]) && mv -f $tmpmk Makefile],
-[EXEEXT='$EXEEXT' MAKE='${MAKE-make}' gnumake='$gnumake' GIT='$GIT' YJIT_SUPPORT='$YJIT_SUPPORT'])
+[EXEEXT='$EXEEXT' gnumake='$gnumake' GIT='$GIT'])
AC_ARG_WITH([ruby-pc],
- AS_HELP_STRING([--with-ruby-pc=FILENAME], [pc file basename]),
+ AC_HELP_STRING([--with-ruby-pc=FILENAME], [pc file basename]),
[ruby_pc="$withval"],
[ruby_pc="${RUBY_BASE_NAME}-${MAJOR}.${MINOR}.pc"])
AC_SUBST(ruby_pc)
@@ -4547,31 +4526,41 @@ AC_ARG_WITH(destdir,
[DESTDIR="$withval"])
AC_SUBST(DESTDIR)
+AC_CONFIG_FILES($ruby_pc:template/ruby.pc.in,
+ [
+ AS_IF([sed ['s/\$(\([A-Za-z_][A-Za-z0-9_]*\))/${\1}/g;s/@[A-Za-z_][A-Za-z0-9_]*@//'] $ruby_pc > ruby.tmp.pc &&
+ {
+ test -z "$PKG_CONFIG" ||
+ PKG_CONFIG_PATH=. $PKG_CONFIG --print-errors ruby.tmp
+ }],
+ [
+ mv -f ruby.tmp.pc $ruby_pc
+ ], [
+ exit 1
+ ])
+ ],
+ [ruby_pc='$ruby_pc' PKG_CONFIG='$PKG_CONFIG'])
+
AC_OUTPUT
}
}
-AS_IF([test "$silent" = yes], [], [
AS_IF([${FOLD+:} false], [], [
AS_IF([test "`echo abcdefg hijklmno | fold -s -w10 | sed 1d`" = hijklmno], [FOLD="fold"], [FOLD=])
])
-fold_width=`expr $COLUMNS - 30 2>/dev/null` || fold_width=50
AS_REQUIRE_SHELL_FN([config_summary],
[AS_FUNCTION_DESCRIBE([config_summary], [NAME, VAL], [configuration summary])],
[AS_IF([test -z "$2"], [], [
AS_ECHO_N([" * $1: "]) | dd bs=1 count=26 2>/dev/null
AS_IF([test "$FOLD"], [
- echo "$2" | fold -s -w$fold_width |
+ echo "$2" | fold -s -w50 |
sed '1!s/^/ /;$!s/$/\\/'
], [echo "$2"])
])]
)
-AS_IF([test $install_doc = yes],
- [DOCTARGETS=`echo " $RDOCTARGET $CAPITARGET " | sed 's/ nodoc //g;s/^ *//;s/ *$//'`],
- [DOCTARGETS=no])
echo "---"
-echo "Configuration summary for $RUBY_BASE_NAME version $MAJOR.$MINOR.$TEENY"
+echo "Configuration summary for $RUBY_BASE_NAME version $RUBY_PROGRAM_VERSION"
echo ""
config_summary "Installation prefix" "$prefix"
config_summary "exec prefix" "$exec_prefix"
@@ -4584,25 +4573,19 @@ config_summary "site libraries path" "$rubysitearchprefix"
config_summary "vendor path" "$vendordir"
config_summary "target OS" "$target_os"
config_summary "compiler" "$CC"
-config_summary "with thread" "$THREAD_MODEL"
-config_summary "with coroutine" "$coroutine_type"
+config_summary "with pthread" "$enable_pthread"
config_summary "enable shared libs" "$ENABLE_SHARED"
config_summary "dynamic library ext" "$DLEXT"
config_summary "CFLAGS" "$cflags"
config_summary "CPPFLAGS" "$cppflags"
config_summary "LDFLAGS" "$LDFLAGS"
-config_summary "DLDFLAGS" "$DLDFLAGS"
config_summary "optflags" "$optflags"
config_summary "debugflags" "$debugflags"
config_summary "warnflags" "$warnflags"
config_summary "strip command" "$STRIP"
-config_summary "install doc" "$DOCTARGETS"
-config_summary "YJIT support" "$YJIT_SUPPORT"
-config_summary "RJIT support" "$RJIT_SUPPORT"
+config_summary "install doc" "$install_doc"
config_summary "man page type" "$MANTYPE"
config_summary "search path" "$search_path"
config_summary "static-linked-ext" ${EXTSTATIC:+"yes"}
-config_summary "BASERUBY -v" "$BASERUBY_VERSION"
echo ""
echo "---"
-])
diff --git a/constant.h b/constant.h
index 90a68d447a..fcccf07384 100644
--- a/constant.h
+++ b/constant.h
@@ -1,5 +1,3 @@
-#ifndef CONSTANT_H
-#define CONSTANT_H
/**********************************************************************
constant.h -
@@ -10,8 +8,8 @@
Copyright (C) 2009 Yusuke Endoh
**********************************************************************/
-#include "ruby/ruby.h"
-#include "id_table.h"
+#ifndef CONSTANT_H
+#define CONSTANT_H
typedef enum {
CONST_DEPRECATED = 0x100,
@@ -33,21 +31,21 @@ typedef enum {
typedef struct rb_const_entry_struct {
rb_const_flag_t flag;
int line;
- VALUE value; /* should be mark */
- VALUE file; /* should be mark */
+ const VALUE value; /* should be mark */
+ const VALUE file; /* should be mark */
} rb_const_entry_t;
VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj);
VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj);
VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj);
void rb_free_const_table(struct rb_id_table *tbl);
-VALUE rb_const_source_location(VALUE, ID);
-
-int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
-rb_const_entry_t *rb_const_lookup(VALUE klass, ID id);
+VALUE rb_public_const_get(VALUE klass, ID id);
VALUE rb_public_const_get_at(VALUE klass, ID id);
VALUE rb_public_const_get_from(VALUE klass, ID id);
+int rb_public_const_defined(VALUE klass, ID id);
+int rb_public_const_defined_at(VALUE klass, ID id);
int rb_public_const_defined_from(VALUE klass, ID id);
-VALUE rb_const_source_location_at(VALUE, ID);
+rb_const_entry_t *rb_const_lookup(VALUE klass, ID id);
+int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
#endif /* CONSTANT_H */
diff --git a/cont.c b/cont.c
index 4173e5a6b9..539d1f48cc 100644
--- a/cont.c
+++ b/cont.c
@@ -9,72 +9,75 @@
**********************************************************************/
-#include "ruby/internal/config.h"
+#include "internal.h"
+#include "vm_core.h"
+#include "gc.h"
+#include "eval_intern.h"
+/* FIBER_USE_NATIVE enables Fiber performance improvement using system
+ * dependent method such as make/setcontext on POSIX system or
+ * CreateFiber() API on Windows.
+ * This hack make Fiber context switch faster (x2 or more).
+ * However, it decrease maximum number of Fiber. For example, on the
+ * 32bit POSIX OS, ten or twenty thousands Fiber can be created.
+ *
+ * Details is reported in the paper "A Fast Fiber Implementation for Ruby 1.9"
+ * in Proc. of 51th Programming Symposium, pp.21--28 (2010) (in Japanese).
+ */
+
+#if !defined(FIBER_USE_NATIVE)
+# if defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT)
+# if 0
+# elif defined(__NetBSD__)
+/* On our experience, NetBSD doesn't support using setcontext() and pthread
+ * simultaneously. This is because pthread_self(), TLS and other information
+ * are represented by stack pointer (higher bits of stack pointer).
+ * TODO: check such constraint on configure.
+ */
+# define FIBER_USE_NATIVE 0
+# elif defined(__sun)
+/* On Solaris because resuming any Fiber caused SEGV, for some reason.
+ */
+# define FIBER_USE_NATIVE 0
+# elif defined(__ia64)
+/* At least, Linux/ia64's getcontext(3) doesn't save register window.
+ */
+# define FIBER_USE_NATIVE 0
+# elif defined(__GNU__)
+/* GNU/Hurd doesn't fully support getcontext, setcontext, makecontext
+ * and swapcontext functions. Disabling their usage till support is
+ * implemented. More info at
+ * http://darnassus.sceen.net/~hurd-web/open_issues/glibc/#getcontext
+ */
+# define FIBER_USE_NATIVE 0
+# else
+# define FIBER_USE_NATIVE 1
+# endif
+# elif defined(_WIN32)
+# define FIBER_USE_NATIVE 1
+# endif
+#endif
+#if !defined(FIBER_USE_NATIVE)
+#define FIBER_USE_NATIVE 0
+#endif
+
+#if FIBER_USE_NATIVE
#ifndef _WIN32
#include <unistd.h>
#include <sys/mman.h>
+#include <ucontext.h>
#endif
-
-// On Solaris, madvise() is NOT declared for SUS (XPG4v2) or later,
-// but MADV_* macros are defined when __EXTENSIONS__ is defined.
-#ifdef NEED_MADVICE_PROTOTYPE_USING_CADDR_T
-#include <sys/types.h>
-extern int madvise(caddr_t, size_t, int);
-#endif
-
-#include COROUTINE_H
-
-#include "eval_intern.h"
-#include "internal.h"
-#include "internal/cont.h"
-#include "internal/error.h"
-#include "internal/gc.h"
-#include "internal/proc.h"
-#include "internal/sanitizers.h"
-#include "internal/warnings.h"
-#include "ruby/fiber/scheduler.h"
-#include "rjit.h"
-#include "yjit.h"
-#include "vm_core.h"
-#include "vm_sync.h"
-#include "id_table.h"
-#include "ractor_core.h"
-
-static const int DEBUG = 0;
-
#define RB_PAGE_SIZE (pagesize)
#define RB_PAGE_MASK (~(RB_PAGE_SIZE - 1))
static long pagesize;
-
-static const rb_data_type_t cont_data_type, fiber_data_type;
-static VALUE rb_cContinuation;
-static VALUE rb_cFiber;
-static VALUE rb_eFiberError;
-#ifdef RB_EXPERIMENTAL_FIBER_POOL
-static VALUE rb_cFiberPool;
-#endif
+#endif /*FIBER_USE_NATIVE*/
#define CAPTURE_JUST_VALID_VM_STACK 1
-// Defined in `coroutine/$arch/Context.h`:
-#ifdef COROUTINE_LIMITED_ADDRESS_SPACE
-#define FIBER_POOL_ALLOCATION_FREE
-#define FIBER_POOL_INITIAL_SIZE 8
-#define FIBER_POOL_ALLOCATION_MAXIMUM_SIZE 32
-#else
-#define FIBER_POOL_INITIAL_SIZE 32
-#define FIBER_POOL_ALLOCATION_MAXIMUM_SIZE 1024
-#endif
-#ifdef RB_EXPERIMENTAL_FIBER_POOL
-#define FIBER_POOL_ALLOCATION_FREE
-#endif
-
-#define jit_cont_enabled (rb_rjit_enabled || rb_yjit_enabled_p())
-
enum context_type {
CONTINUATION_CONTEXT = 0,
- FIBER_CONTEXT = 1
+ FIBER_CONTEXT = 1,
+ ROOT_FIBER_CONTEXT = 2
};
struct cont_saved_vm_stack {
@@ -85,148 +88,28 @@ struct cont_saved_vm_stack {
#endif
};
-struct fiber_pool;
-
-// Represents a single stack.
-struct fiber_pool_stack {
- // A pointer to the memory allocation (lowest address) for the stack.
- void * base;
-
- // The current stack pointer, taking into account the direction of the stack.
- void * current;
-
- // The size of the stack excluding any guard pages.
- size_t size;
-
- // The available stack capacity w.r.t. the current stack offset.
- size_t available;
-
- // The pool this stack should be allocated from.
- struct fiber_pool * pool;
-
- // If the stack is allocated, the allocation it came from.
- struct fiber_pool_allocation * allocation;
-};
-
-// A linked list of vacant (unused) stacks.
-// This structure is stored in the first page of a stack if it is not in use.
-// @sa fiber_pool_vacancy_pointer
-struct fiber_pool_vacancy {
- // Details about the vacant stack:
- struct fiber_pool_stack stack;
-
- // The vacancy linked list.
-#ifdef FIBER_POOL_ALLOCATION_FREE
- struct fiber_pool_vacancy * previous;
-#endif
- struct fiber_pool_vacancy * next;
-};
-
-// Manages singly linked list of mapped regions of memory which contains 1 more more stack:
-//
-// base = +-------------------------------+-----------------------+ +
-// |VM Stack |VM Stack | | |
-// | | | | |
-// | | | | |
-// +-------------------------------+ | |
-// |Machine Stack |Machine Stack | | |
-// | | | | |
-// | | | | |
-// | | | . . . . | | size
-// | | | | |
-// | | | | |
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------------------------------+ | |
-// |Guard Page |Guard Page | | |
-// +-------------------------------+-----------------------+ v
-//
-// +------------------------------------------------------->
-//
-// count
-//
-struct fiber_pool_allocation {
- // A pointer to the memory mapped region.
- void * base;
-
- // The size of the individual stacks.
- size_t size;
-
- // The stride of individual stacks (including any guard pages or other accounting details).
- size_t stride;
-
- // The number of stacks that were allocated.
- size_t count;
-
-#ifdef FIBER_POOL_ALLOCATION_FREE
- // The number of stacks used in this allocation.
- size_t used;
-#endif
-
- struct fiber_pool * pool;
-
- // The allocation linked list.
-#ifdef FIBER_POOL_ALLOCATION_FREE
- struct fiber_pool_allocation * previous;
-#endif
- struct fiber_pool_allocation * next;
-};
-
-// A fiber pool manages vacant stacks to reduce the overhead of creating fibers.
-struct fiber_pool {
- // A singly-linked list of allocations which contain 1 or more stacks each.
- struct fiber_pool_allocation * allocations;
-
- // Provides O(1) stack "allocation":
- struct fiber_pool_vacancy * vacancies;
-
- // The size of the stack allocations (excluding any guard page).
- size_t size;
-
- // The total number of stacks that have been allocated in this pool.
- size_t count;
-
- // The initial number of stacks to allocate.
- size_t initial_count;
-
- // Whether to madvise(free) the stack or not:
- int free_stacks;
-
- // The number of stacks that have been used in this pool.
- size_t used;
-
- // The amount to allocate for the vm_stack:
- size_t vm_stack_size;
-};
-
-// Continuation contexts used by JITs
-struct rb_jit_cont {
- rb_execution_context_t *ec; // continuation ec
- struct rb_jit_cont *prev, *next; // used to form lists
-};
-
-// Doubly linked list for enumerating all on-stack ISEQs.
-static struct rb_jit_cont *first_jit_cont;
-
typedef struct rb_context_struct {
enum context_type type;
int argc;
- int kw_splat;
VALUE self;
VALUE value;
struct cont_saved_vm_stack saved_vm_stack;
struct {
- VALUE *stack;
- VALUE *stack_src;
- size_t stack_size;
+ VALUE *stack;
+ VALUE *stack_src;
+ size_t stack_size;
+#ifdef __ia64
+ VALUE *register_stack;
+ VALUE *register_stack_src;
+ int register_stack_size;
+#endif
} machine;
rb_execution_context_t saved_ec;
rb_jmpbuf_t jmpbuf;
rb_ensure_entry_t *ensure_array;
- struct rb_jit_cont *jit_cont; // Continuation contexts for JITs
+ rb_ensure_list_t *ensure_list;
} rb_context_t;
@@ -249,635 +132,48 @@ enum fiber_status {
FIBER_TERMINATED
};
-#define FIBER_CREATED_P(fiber) ((fiber)->status == FIBER_CREATED)
-#define FIBER_RESUMED_P(fiber) ((fiber)->status == FIBER_RESUMED)
-#define FIBER_SUSPENDED_P(fiber) ((fiber)->status == FIBER_SUSPENDED)
-#define FIBER_TERMINATED_P(fiber) ((fiber)->status == FIBER_TERMINATED)
-#define FIBER_RUNNABLE_P(fiber) (FIBER_CREATED_P(fiber) || FIBER_SUSPENDED_P(fiber))
+#define FIBER_CREATED_P(fib) ((fib)->status == FIBER_CREATED)
+#define FIBER_RESUMED_P(fib) ((fib)->status == FIBER_RESUMED)
+#define FIBER_SUSPENDED_P(fib) ((fib)->status == FIBER_SUSPENDED)
+#define FIBER_TERMINATED_P(fib) ((fib)->status == FIBER_TERMINATED)
+#define FIBER_RUNNABLE_P(fib) (FIBER_CREATED_P(fib) || FIBER_SUSPENDED_P(fib))
+
+#if FIBER_USE_NATIVE && !defined(_WIN32)
+#define MAX_MACHINE_STACK_CACHE 10
+static int machine_stack_cache_index = 0;
+typedef struct machine_stack_cache_struct {
+ void *ptr;
+ size_t size;
+} machine_stack_cache_t;
+static machine_stack_cache_t machine_stack_cache[MAX_MACHINE_STACK_CACHE];
+static machine_stack_cache_t terminated_machine_stack;
+#endif
struct rb_fiber_struct {
rb_context_t cont;
VALUE first_proc;
struct rb_fiber_struct *prev;
- struct rb_fiber_struct *resuming_fiber;
-
- BITFIELD(enum fiber_status, status, 2);
- /* Whether the fiber is allowed to implicitly yield. */
- unsigned int yielding : 1;
- unsigned int blocking : 1;
-
- struct coroutine_context context;
- struct fiber_pool_stack stack;
-};
-
-static struct fiber_pool shared_fiber_pool = {NULL, NULL, 0, 0, 0, 0};
-
-static ID fiber_initialize_keywords[3] = {0};
-
-/*
- * FreeBSD require a first (i.e. addr) argument of mmap(2) is not NULL
- * if MAP_STACK is passed.
- * https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=158755
- */
-#if defined(MAP_STACK) && !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__)
-#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON | MAP_STACK)
-#else
-#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON)
-#endif
-
-#define ERRNOMSG strerror(errno)
-
-// Locates the stack vacancy details for the given stack.
-inline static struct fiber_pool_vacancy *
-fiber_pool_vacancy_pointer(void * base, size_t size)
-{
- STACK_GROW_DIR_DETECTION;
-
- return (struct fiber_pool_vacancy *)(
- (char*)base + STACK_DIR_UPPER(0, size - RB_PAGE_SIZE)
- );
-}
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
-// Compute the base pointer for a vacant stack, for the area which can be poisoned.
-inline static void *
-fiber_pool_stack_poison_base(struct fiber_pool_stack * stack)
-{
- STACK_GROW_DIR_DETECTION;
-
- return (char*)stack->base + STACK_DIR_UPPER(RB_PAGE_SIZE, 0);
-}
-
-// Compute the size of the vacant stack, for the area that can be poisoned.
-inline static size_t
-fiber_pool_stack_poison_size(struct fiber_pool_stack * stack)
-{
- return stack->size - RB_PAGE_SIZE;
-}
-#endif
-
-// Reset the current stack pointer and available size of the given stack.
-inline static void
-fiber_pool_stack_reset(struct fiber_pool_stack * stack)
-{
- STACK_GROW_DIR_DETECTION;
-
- stack->current = (char*)stack->base + STACK_DIR_UPPER(0, stack->size);
- stack->available = stack->size;
-}
-
-// A pointer to the base of the current unused portion of the stack.
-inline static void *
-fiber_pool_stack_base(struct fiber_pool_stack * stack)
-{
- STACK_GROW_DIR_DETECTION;
-
- VM_ASSERT(stack->current);
-
- return STACK_DIR_UPPER(stack->current, (char*)stack->current - stack->available);
-}
-
-// Allocate some memory from the stack. Used to allocate vm_stack inline with machine stack.
-// @sa fiber_initialize_coroutine
-inline static void *
-fiber_pool_stack_alloca(struct fiber_pool_stack * stack, size_t offset)
-{
- STACK_GROW_DIR_DETECTION;
-
- if (DEBUG) fprintf(stderr, "fiber_pool_stack_alloca(%p): %"PRIuSIZE"/%"PRIuSIZE"\n", (void*)stack, offset, stack->available);
- VM_ASSERT(stack->available >= offset);
-
- // The pointer to the memory being allocated:
- void * pointer = STACK_DIR_UPPER(stack->current, (char*)stack->current - offset);
-
- // Move the stack pointer:
- stack->current = STACK_DIR_UPPER((char*)stack->current + offset, (char*)stack->current - offset);
- stack->available -= offset;
-
- return pointer;
-}
-
-// Reset the current stack pointer and available size of the given stack.
-inline static void
-fiber_pool_vacancy_reset(struct fiber_pool_vacancy * vacancy)
-{
- fiber_pool_stack_reset(&vacancy->stack);
-
- // Consume one page of the stack because it's used for the vacancy list:
- fiber_pool_stack_alloca(&vacancy->stack, RB_PAGE_SIZE);
-}
-
-inline static struct fiber_pool_vacancy *
-fiber_pool_vacancy_push(struct fiber_pool_vacancy * vacancy, struct fiber_pool_vacancy * head)
-{
- vacancy->next = head;
-
-#ifdef FIBER_POOL_ALLOCATION_FREE
- if (head) {
- head->previous = vacancy;
- vacancy->previous = NULL;
- }
-#endif
-
- return vacancy;
-}
-
-#ifdef FIBER_POOL_ALLOCATION_FREE
-static void
-fiber_pool_vacancy_remove(struct fiber_pool_vacancy * vacancy)
-{
- if (vacancy->next) {
- vacancy->next->previous = vacancy->previous;
- }
-
- if (vacancy->previous) {
- vacancy->previous->next = vacancy->next;
- }
- else {
- // It's the head of the list:
- vacancy->stack.pool->vacancies = vacancy->next;
- }
-}
-
-inline static struct fiber_pool_vacancy *
-fiber_pool_vacancy_pop(struct fiber_pool * pool)
-{
- struct fiber_pool_vacancy * vacancy = pool->vacancies;
-
- if (vacancy) {
- fiber_pool_vacancy_remove(vacancy);
- }
-
- return vacancy;
-}
-#else
-inline static struct fiber_pool_vacancy *
-fiber_pool_vacancy_pop(struct fiber_pool * pool)
-{
- struct fiber_pool_vacancy * vacancy = pool->vacancies;
-
- if (vacancy) {
- pool->vacancies = vacancy->next;
- }
-
- return vacancy;
-}
-#endif
-
-// Initialize the vacant stack. The [base, size] allocation should not include the guard page.
-// @param base The pointer to the lowest address of the allocated memory.
-// @param size The size of the allocated memory.
-inline static struct fiber_pool_vacancy *
-fiber_pool_vacancy_initialize(struct fiber_pool * fiber_pool, struct fiber_pool_vacancy * vacancies, void * base, size_t size)
-{
- struct fiber_pool_vacancy * vacancy = fiber_pool_vacancy_pointer(base, size);
-
- vacancy->stack.base = base;
- vacancy->stack.size = size;
-
- fiber_pool_vacancy_reset(vacancy);
-
- vacancy->stack.pool = fiber_pool;
-
- return fiber_pool_vacancy_push(vacancy, vacancies);
-}
-
-// Allocate a maximum of count stacks, size given by stride.
-// @param count the number of stacks to allocate / were allocated.
-// @param stride the size of the individual stacks.
-// @return [void *] the allocated memory or NULL if allocation failed.
-inline static void *
-fiber_pool_allocate_memory(size_t * count, size_t stride)
-{
- // We use a divide-by-2 strategy to try and allocate memory. We are trying
- // to allocate `count` stacks. In normal situation, this won't fail. But
- // if we ran out of address space, or we are allocating more memory than
- // the system would allow (e.g. overcommit * physical memory + swap), we
- // divide count by two and try again. This condition should only be
- // encountered in edge cases, but we handle it here gracefully.
- while (*count > 1) {
-#if defined(_WIN32)
- void * base = VirtualAlloc(0, (*count)*stride, MEM_COMMIT, PAGE_READWRITE);
-
- if (!base) {
- *count = (*count) >> 1;
- }
- else {
- return base;
- }
-#else
- errno = 0;
- void * base = mmap(NULL, (*count)*stride, PROT_READ | PROT_WRITE, FIBER_STACK_FLAGS, -1, 0);
-
- if (base == MAP_FAILED) {
- // If the allocation fails, count = count / 2, and try again.
- *count = (*count) >> 1;
- }
- else {
-#if defined(MADV_FREE_REUSE)
- // On Mac MADV_FREE_REUSE is necessary for the task_info api
- // to keep the accounting accurate as possible when a page is marked as reusable
- // it can possibly not occurring at first call thus re-iterating if necessary.
- while (madvise(base, (*count)*stride, MADV_FREE_REUSE) == -1 && errno == EAGAIN);
-#endif
- return base;
- }
-#endif
- }
-
- return NULL;
-}
-
-// Given an existing fiber pool, expand it by the specified number of stacks.
-// @param count the maximum number of stacks to allocate.
-// @return the allocated fiber pool.
-// @sa fiber_pool_allocation_free
-static struct fiber_pool_allocation *
-fiber_pool_expand(struct fiber_pool * fiber_pool, size_t count)
-{
- STACK_GROW_DIR_DETECTION;
-
- size_t size = fiber_pool->size;
- size_t stride = size + RB_PAGE_SIZE;
-
- // Allocate the memory required for the stacks:
- void * base = fiber_pool_allocate_memory(&count, stride);
-
- if (base == NULL) {
- rb_raise(rb_eFiberError, "can't alloc machine stack to fiber (%"PRIuSIZE" x %"PRIuSIZE" bytes): %s", count, size, ERRNOMSG);
- }
-
- struct fiber_pool_vacancy * vacancies = fiber_pool->vacancies;
- struct fiber_pool_allocation * allocation = RB_ALLOC(struct fiber_pool_allocation);
-
- // Initialize fiber pool allocation:
- allocation->base = base;
- allocation->size = size;
- allocation->stride = stride;
- allocation->count = count;
-#ifdef FIBER_POOL_ALLOCATION_FREE
- allocation->used = 0;
-#endif
- allocation->pool = fiber_pool;
-
- if (DEBUG) {
- fprintf(stderr, "fiber_pool_expand(%"PRIuSIZE"): %p, %"PRIuSIZE"/%"PRIuSIZE" x [%"PRIuSIZE":%"PRIuSIZE"]\n",
- count, (void*)fiber_pool, fiber_pool->used, fiber_pool->count, size, fiber_pool->vm_stack_size);
- }
-
- // Iterate over all stacks, initializing the vacancy list:
- for (size_t i = 0; i < count; i += 1) {
- void * base = (char*)allocation->base + (stride * i);
- void * page = (char*)base + STACK_DIR_UPPER(size, 0);
-
-#if defined(_WIN32)
- DWORD old_protect;
-
- if (!VirtualProtect(page, RB_PAGE_SIZE, PAGE_READWRITE | PAGE_GUARD, &old_protect)) {
- VirtualFree(allocation->base, 0, MEM_RELEASE);
- rb_raise(rb_eFiberError, "can't set a guard page: %s", ERRNOMSG);
- }
-#else
- if (mprotect(page, RB_PAGE_SIZE, PROT_NONE) < 0) {
- munmap(allocation->base, count*stride);
- rb_raise(rb_eFiberError, "can't set a guard page: %s", ERRNOMSG);
- }
-#endif
-
- vacancies = fiber_pool_vacancy_initialize(
- fiber_pool, vacancies,
- (char*)base + STACK_DIR_UPPER(0, RB_PAGE_SIZE),
- size
- );
-
-#ifdef FIBER_POOL_ALLOCATION_FREE
- vacancies->stack.allocation = allocation;
-#endif
- }
-
- // Insert the allocation into the head of the pool:
- allocation->next = fiber_pool->allocations;
-
-#ifdef FIBER_POOL_ALLOCATION_FREE
- if (allocation->next) {
- allocation->next->previous = allocation;
- }
-
- allocation->previous = NULL;
-#endif
-
- fiber_pool->allocations = allocation;
- fiber_pool->vacancies = vacancies;
- fiber_pool->count += count;
-
- return allocation;
-}
-
-// Initialize the specified fiber pool with the given number of stacks.
-// @param vm_stack_size The size of the vm stack to allocate.
-static void
-fiber_pool_initialize(struct fiber_pool * fiber_pool, size_t size, size_t count, size_t vm_stack_size)
-{
- VM_ASSERT(vm_stack_size < size);
-
- fiber_pool->allocations = NULL;
- fiber_pool->vacancies = NULL;
- fiber_pool->size = ((size / RB_PAGE_SIZE) + 1) * RB_PAGE_SIZE;
- fiber_pool->count = 0;
- fiber_pool->initial_count = count;
- fiber_pool->free_stacks = 1;
- fiber_pool->used = 0;
-
- fiber_pool->vm_stack_size = vm_stack_size;
-
- fiber_pool_expand(fiber_pool, count);
-}
-
-#ifdef FIBER_POOL_ALLOCATION_FREE
-// Free the list of fiber pool allocations.
-static void
-fiber_pool_allocation_free(struct fiber_pool_allocation * allocation)
-{
- STACK_GROW_DIR_DETECTION;
-
- VM_ASSERT(allocation->used == 0);
-
- if (DEBUG) fprintf(stderr, "fiber_pool_allocation_free: %p base=%p count=%"PRIuSIZE"\n", (void*)allocation, allocation->base, allocation->count);
-
- size_t i;
- for (i = 0; i < allocation->count; i += 1) {
- void * base = (char*)allocation->base + (allocation->stride * i) + STACK_DIR_UPPER(0, RB_PAGE_SIZE);
-
- struct fiber_pool_vacancy * vacancy = fiber_pool_vacancy_pointer(base, allocation->size);
-
- // Pop the vacant stack off the free list:
- fiber_pool_vacancy_remove(vacancy);
- }
+ const enum fiber_status status;
+ /* If a fiber invokes "transfer",
+ * then this fiber can't "resume" any more after that.
+ * You shouldn't mix "transfer" and "resume".
+ */
+ int transferred;
+#if FIBER_USE_NATIVE
#ifdef _WIN32
- VirtualFree(allocation->base, 0, MEM_RELEASE);
+ void *fib_handle;
#else
- munmap(allocation->base, allocation->stride * allocation->count);
-#endif
-
- if (allocation->previous) {
- allocation->previous->next = allocation->next;
- }
- else {
- // We are the head of the list, so update the pool:
- allocation->pool->allocations = allocation->next;
- }
-
- if (allocation->next) {
- allocation->next->previous = allocation->previous;
- }
-
- allocation->pool->count -= allocation->count;
-
- ruby_xfree(allocation);
-}
-#endif
-
-// Acquire a stack from the given fiber pool. If none are available, allocate more.
-static struct fiber_pool_stack
-fiber_pool_stack_acquire(struct fiber_pool * fiber_pool)
-{
- struct fiber_pool_vacancy * vacancy = fiber_pool_vacancy_pop(fiber_pool);
-
- if (DEBUG) fprintf(stderr, "fiber_pool_stack_acquire: %p used=%"PRIuSIZE"\n", (void*)fiber_pool->vacancies, fiber_pool->used);
-
- if (!vacancy) {
- const size_t maximum = FIBER_POOL_ALLOCATION_MAXIMUM_SIZE;
- const size_t minimum = fiber_pool->initial_count;
-
- size_t count = fiber_pool->count;
- if (count > maximum) count = maximum;
- if (count < minimum) count = minimum;
-
- fiber_pool_expand(fiber_pool, count);
-
- // The free list should now contain some stacks:
- VM_ASSERT(fiber_pool->vacancies);
-
- vacancy = fiber_pool_vacancy_pop(fiber_pool);
- }
-
- VM_ASSERT(vacancy);
- VM_ASSERT(vacancy->stack.base);
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
- __asan_unpoison_memory_region(fiber_pool_stack_poison_base(&vacancy->stack), fiber_pool_stack_poison_size(&vacancy->stack));
-#endif
-
- // Take the top item from the free list:
- fiber_pool->used += 1;
-
-#ifdef FIBER_POOL_ALLOCATION_FREE
- vacancy->stack.allocation->used += 1;
-#endif
-
- fiber_pool_stack_reset(&vacancy->stack);
-
- return vacancy->stack;
-}
-
-// We advise the operating system that the stack memory pages are no longer being used.
-// This introduce some performance overhead but allows system to relaim memory when there is pressure.
-static inline void
-fiber_pool_stack_free(struct fiber_pool_stack * stack)
-{
- void * base = fiber_pool_stack_base(stack);
- size_t size = stack->available;
-
- // If this is not true, the vacancy information will almost certainly be destroyed:
- VM_ASSERT(size <= (stack->size - RB_PAGE_SIZE));
-
- if (DEBUG) fprintf(stderr, "fiber_pool_stack_free: %p+%"PRIuSIZE" [base=%p, size=%"PRIuSIZE"]\n", base, size, stack->base, stack->size);
-
- // The pages being used by the stack can be returned back to the system.
- // That doesn't change the page mapping, but it does allow the system to
- // reclaim the physical memory.
- // Since we no longer care about the data itself, we don't need to page
- // out to disk, since that is costly. Not all systems support that, so
- // we try our best to select the most efficient implementation.
- // In addition, it's actually slightly desirable to not do anything here,
- // but that results in higher memory usage.
-
-#ifdef __wasi__
- // WebAssembly doesn't support madvise, so we just don't do anything.
-#elif VM_CHECK_MODE > 0 && defined(MADV_DONTNEED)
- // This immediately discards the pages and the memory is reset to zero.
- madvise(base, size, MADV_DONTNEED);
-#elif defined(MADV_FREE_REUSABLE)
- // Darwin / macOS / iOS.
- // Acknowledge the kernel down to the task info api we make this
- // page reusable for future use.
- // As for MADV_FREE_REUSE below we ensure in the rare occasions the task was not
- // completed at the time of the call to re-iterate.
- while (madvise(base, size, MADV_FREE_REUSABLE) == -1 && errno == EAGAIN);
-#elif defined(MADV_FREE)
- // Recent Linux.
- madvise(base, size, MADV_FREE);
-#elif defined(MADV_DONTNEED)
- // Old Linux.
- madvise(base, size, MADV_DONTNEED);
-#elif defined(POSIX_MADV_DONTNEED)
- // Solaris?
- posix_madvise(base, size, POSIX_MADV_DONTNEED);
-#elif defined(_WIN32)
- VirtualAlloc(base, size, MEM_RESET, PAGE_READWRITE);
- // Not available in all versions of Windows.
- //DiscardVirtualMemory(base, size);
-#endif
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
- __asan_poison_memory_region(fiber_pool_stack_poison_base(stack), fiber_pool_stack_poison_size(stack));
-#endif
-}
-
-// Release and return a stack to the vacancy list.
-static void
-fiber_pool_stack_release(struct fiber_pool_stack * stack)
-{
- struct fiber_pool * pool = stack->pool;
- struct fiber_pool_vacancy * vacancy = fiber_pool_vacancy_pointer(stack->base, stack->size);
-
- if (DEBUG) fprintf(stderr, "fiber_pool_stack_release: %p used=%"PRIuSIZE"\n", stack->base, stack->pool->used);
-
- // Copy the stack details into the vacancy area:
- vacancy->stack = *stack;
- // After this point, be careful about updating/using state in stack, since it's copied to the vacancy area.
-
- // Reset the stack pointers and reserve space for the vacancy data:
- fiber_pool_vacancy_reset(vacancy);
-
- // Push the vacancy into the vancancies list:
- pool->vacancies = fiber_pool_vacancy_push(vacancy, pool->vacancies);
- pool->used -= 1;
-
-#ifdef FIBER_POOL_ALLOCATION_FREE
- struct fiber_pool_allocation * allocation = stack->allocation;
-
- allocation->used -= 1;
-
- // Release address space and/or dirty memory:
- if (allocation->used == 0) {
- fiber_pool_allocation_free(allocation);
- }
- else if (stack->pool->free_stacks) {
- fiber_pool_stack_free(&vacancy->stack);
- }
-#else
- // This is entirely optional, but clears the dirty flag from the stack
- // memory, so it won't get swapped to disk when there is memory pressure:
- if (stack->pool->free_stacks) {
- fiber_pool_stack_free(&vacancy->stack);
- }
-#endif
-}
-
-static inline void
-ec_switch(rb_thread_t *th, rb_fiber_t *fiber)
-{
- rb_execution_context_t *ec = &fiber->cont.saved_ec;
- rb_ractor_set_current_ec(th->ractor, th->ec = ec);
- // ruby_current_execution_context_ptr = th->ec = ec;
-
- /*
- * timer-thread may set trap interrupt on previous th->ec at any time;
- * ensure we do not delay (or lose) the trap interrupt handling.
+ ucontext_t context;
+ /* Because context.uc_stack.ss_sp and context.uc_stack.ss_size
+ * are not necessarily valid after makecontext() or swapcontext(),
+ * they are saved in these variables for later use.
*/
- if (th->vm->ractor.main_thread == th &&
- rb_signal_buff_size() > 0) {
- RUBY_VM_SET_TRAP_INTERRUPT(ec);
- }
-
- VM_ASSERT(ec->fiber_ptr->cont.self == 0 || ec->vm_stack != NULL);
-}
-
-static inline void
-fiber_restore_thread(rb_thread_t *th, rb_fiber_t *fiber)
-{
- ec_switch(th, fiber);
- VM_ASSERT(th->ec->fiber_ptr == fiber);
-}
-
-static COROUTINE
-fiber_entry(struct coroutine_context * from, struct coroutine_context * to)
-{
- rb_fiber_t *fiber = to->argument;
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
- // Address sanitizer will copy the previous stack base and stack size into
- // the "from" fiber. `coroutine_initialize_main` doesn't generally know the
- // stack bounds (base + size). Therefore, the main fiber `stack_base` and
- // `stack_size` will be NULL/0. It's specifically important in that case to
- // get the (base+size) of the previous fiber and save it, so that later when
- // we return to the main coroutine, we don't supply (NULL, 0) to
- // __sanitizer_start_switch_fiber which royally messes up the internal state
- // of ASAN and causes (sometimes) the following message:
- // "WARNING: ASan is ignoring requested __asan_handle_no_return"
- __sanitizer_finish_switch_fiber(to->fake_stack, (const void**)&from->stack_base, &from->stack_size);
+ void *ss_sp;
+ size_t ss_size;
#endif
-
- rb_thread_t *thread = fiber->cont.saved_ec.thread_ptr;
-
-#ifdef COROUTINE_PTHREAD_CONTEXT
- ruby_thread_set_native(thread);
#endif
-
- fiber_restore_thread(thread, fiber);
-
- rb_fiber_start(fiber);
-
-#ifndef COROUTINE_PTHREAD_CONTEXT
- VM_UNREACHABLE(fiber_entry);
-#endif
-}
-
-// Initialize a fiber's coroutine's machine stack and vm stack.
-static VALUE *
-fiber_initialize_coroutine(rb_fiber_t *fiber, size_t * vm_stack_size)
-{
- struct fiber_pool * fiber_pool = fiber->stack.pool;
- rb_execution_context_t *sec = &fiber->cont.saved_ec;
- void * vm_stack = NULL;
-
- VM_ASSERT(fiber_pool != NULL);
-
- fiber->stack = fiber_pool_stack_acquire(fiber_pool);
- vm_stack = fiber_pool_stack_alloca(&fiber->stack, fiber_pool->vm_stack_size);
- *vm_stack_size = fiber_pool->vm_stack_size;
-
- coroutine_initialize(&fiber->context, fiber_entry, fiber_pool_stack_base(&fiber->stack), fiber->stack.available);
-
- // The stack for this execution context is the one we allocated:
- sec->machine.stack_start = fiber->stack.current;
- sec->machine.stack_maxsize = fiber->stack.available;
-
- fiber->context.argument = (void*)fiber;
-
- return vm_stack;
-}
-
-// Release the stack from the fiber, it's execution context, and return it to
-// the fiber pool.
-static void
-fiber_stack_release(rb_fiber_t * fiber)
-{
- rb_execution_context_t *ec = &fiber->cont.saved_ec;
-
- if (DEBUG) fprintf(stderr, "fiber_stack_release: %p, stack.base=%p\n", (void*)fiber, fiber->stack.base);
-
- // Return the stack back to the fiber pool if it wasn't already:
- if (fiber->stack.base) {
- fiber_pool_stack_release(&fiber->stack);
- fiber->stack.base = NULL;
- }
-
- // The stack is no longer associated with this execution context:
- rb_ec_clear_vm_stack(ec);
-}
+};
static const char *
fiber_status_name(enum fiber_status s)
@@ -893,71 +189,90 @@ fiber_status_name(enum fiber_status s)
}
static void
-fiber_verify(const rb_fiber_t *fiber)
+fiber_verify(const rb_fiber_t *fib)
{
#if VM_CHECK_MODE > 0
- VM_ASSERT(fiber->cont.saved_ec.fiber_ptr == fiber);
+ VM_ASSERT(fib->cont.saved_ec.fiber_ptr == fib);
- switch (fiber->status) {
+ switch (fib->status) {
case FIBER_RESUMED:
- VM_ASSERT(fiber->cont.saved_ec.vm_stack != NULL);
- break;
+ VM_ASSERT(fib->cont.saved_ec.vm_stack != NULL);
+ break;
case FIBER_SUSPENDED:
- VM_ASSERT(fiber->cont.saved_ec.vm_stack != NULL);
- break;
+ VM_ASSERT(fib->cont.saved_ec.vm_stack != NULL);
+ break;
case FIBER_CREATED:
case FIBER_TERMINATED:
- /* TODO */
- break;
+ /* TODO */
+ break;
default:
- VM_UNREACHABLE(fiber_verify);
+ VM_UNREACHABLE(fiber_verify);
}
#endif
}
-inline static void
-fiber_status_set(rb_fiber_t *fiber, enum fiber_status s)
+#if VM_CHECK_MODE > 0
+void
+rb_ec_verify(const rb_execution_context_t *ec)
{
- // if (DEBUG) fprintf(stderr, "fiber: %p, status: %s -> %s\n", (void *)fiber, fiber_status_name(fiber->status), fiber_status_name(s));
- VM_ASSERT(!FIBER_TERMINATED_P(fiber));
- VM_ASSERT(fiber->status != s);
- fiber_verify(fiber);
- fiber->status = s;
+ /* TODO */
}
+#endif
-static rb_context_t *
-cont_ptr(VALUE obj)
+static void
+fiber_status_set(const rb_fiber_t *fib, enum fiber_status s)
{
- rb_context_t *cont;
-
- TypedData_Get_Struct(obj, rb_context_t, &cont_data_type, cont);
+ if (0) fprintf(stderr, "fib: %p, status: %s -> %s\n", fib, fiber_status_name(fib->status), fiber_status_name(s));
+ VM_ASSERT(!FIBER_TERMINATED_P(fib));
+ VM_ASSERT(fib->status != s);
+ fiber_verify(fib);
+ *((enum fiber_status *)&fib->status) = s;
+}
- return cont;
+void
+ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size)
+{
+ *(VALUE **)(&ec->vm_stack) = stack;
+ *(size_t *)(&ec->vm_stack_size) = size;
}
-static rb_fiber_t *
-fiber_ptr(VALUE obj)
+static inline void
+ec_switch(rb_thread_t *th, rb_fiber_t *fib)
{
- rb_fiber_t *fiber;
+ rb_execution_context_t *ec = &fib->cont.saved_ec;
- TypedData_Get_Struct(obj, rb_fiber_t, &fiber_data_type, fiber);
- if (!fiber) rb_raise(rb_eFiberError, "uninitialized fiber");
+ ruby_current_execution_context_ptr = th->ec = ec;
- return fiber;
+ /*
+ * timer-thread may set trap interrupt on previous th->ec at any time;
+ * ensure we do not delay (or lose) the trap interrupt handling.
+ */
+ if (th->vm->main_thread == th && rb_signal_buff_size() > 0) {
+ RUBY_VM_SET_TRAP_INTERRUPT(ec);
+ }
+
+ VM_ASSERT(ec->fiber_ptr->cont.self == 0 || ec->vm_stack != NULL);
}
+static const rb_data_type_t cont_data_type, fiber_data_type;
+static VALUE rb_cContinuation;
+static VALUE rb_cFiber;
+static VALUE rb_eFiberError;
+
+#define GetContPtr(obj, ptr) \
+ TypedData_Get_Struct((obj), rb_context_t, &cont_data_type, (ptr))
+
+#define GetFiberPtr(obj, ptr) do {\
+ TypedData_Get_Struct((obj), rb_fiber_t, &fiber_data_type, (ptr)); \
+ if (!(ptr)) rb_raise(rb_eFiberError, "uninitialized fiber"); \
+} while (0)
+
NOINLINE(static VALUE cont_capture(volatile int *volatile stat));
#define THREAD_MUST_BE_RUNNING(th) do { \
- if (!(th)->ec->tag) rb_raise(rb_eThreadError, "not running thread"); \
+ if (!(th)->ec->tag) rb_raise(rb_eThreadError, "not running thread"); \
} while (0)
-rb_thread_t*
-rb_fiber_threadptr(const rb_fiber_t *fiber)
-{
- return fiber->cont.saved_ec.thread_ptr;
-}
-
static VALUE
cont_thread_value(const rb_context_t *cont)
{
@@ -965,95 +280,99 @@ cont_thread_value(const rb_context_t *cont)
}
static void
-cont_compact(void *ptr)
-{
- rb_context_t *cont = ptr;
-
- if (cont->self) {
- cont->self = rb_gc_location(cont->self);
- }
- cont->value = rb_gc_location(cont->value);
- rb_execution_context_update(&cont->saved_ec);
-}
-
-static void
cont_mark(void *ptr)
{
rb_context_t *cont = ptr;
RUBY_MARK_ENTER("cont");
- if (cont->self) {
- rb_gc_mark_movable(cont->self);
- }
- rb_gc_mark_movable(cont->value);
+ rb_gc_mark(cont->value);
rb_execution_context_mark(&cont->saved_ec);
rb_gc_mark(cont_thread_value(cont));
if (cont->saved_vm_stack.ptr) {
#ifdef CAPTURE_JUST_VALID_VM_STACK
- rb_gc_mark_locations(cont->saved_vm_stack.ptr,
- cont->saved_vm_stack.ptr + cont->saved_vm_stack.slen + cont->saved_vm_stack.clen);
+ rb_gc_mark_locations(cont->saved_vm_stack.ptr,
+ cont->saved_vm_stack.ptr + cont->saved_vm_stack.slen + cont->saved_vm_stack.clen);
#else
- rb_gc_mark_locations(cont->saved_vm_stack.ptr,
- cont->saved_vm_stack.ptr, cont->saved_ec.stack_size);
+ rb_gc_mark_locations(cont->saved_vm_stack.ptr,
+ cont->saved_vm_stack.ptr, cont->saved_ec.stack_size);
#endif
}
if (cont->machine.stack) {
- if (cont->type == CONTINUATION_CONTEXT) {
- /* cont */
- rb_gc_mark_locations(cont->machine.stack,
- cont->machine.stack + cont->machine.stack_size);
- }
- else {
- /* fiber */
- const rb_fiber_t *fiber = (rb_fiber_t*)cont;
-
- if (!FIBER_TERMINATED_P(fiber)) {
- rb_gc_mark_locations(cont->machine.stack,
- cont->machine.stack + cont->machine.stack_size);
- }
- }
+ if (cont->type == CONTINUATION_CONTEXT) {
+ /* cont */
+ rb_gc_mark_locations(cont->machine.stack,
+ cont->machine.stack + cont->machine.stack_size);
+ }
+ else {
+ /* fiber */
+ const rb_fiber_t *fib = (rb_fiber_t*)cont;
+
+ if (!FIBER_TERMINATED_P(fib)) {
+ rb_gc_mark_locations(cont->machine.stack,
+ cont->machine.stack + cont->machine.stack_size);
+ }
+ }
+ }
+#ifdef __ia64
+ if (cont->machine.register_stack) {
+ rb_gc_mark_locations(cont->machine.register_stack,
+ cont->machine.register_stack + cont->machine.register_stack_size);
}
+#endif
RUBY_MARK_LEAVE("cont");
}
-#if 0
-static int
-fiber_is_root_p(const rb_fiber_t *fiber)
-{
- return fiber == fiber->cont.saved_ec.thread_ptr->root_fiber;
-}
-#endif
-
-static void jit_cont_free(struct rb_jit_cont *cont);
-
static void
cont_free(void *ptr)
{
rb_context_t *cont = ptr;
RUBY_FREE_ENTER("cont");
+ ruby_xfree(cont->saved_ec.vm_stack);
+#if FIBER_USE_NATIVE
if (cont->type == CONTINUATION_CONTEXT) {
- ruby_xfree(cont->saved_ec.vm_stack);
- ruby_xfree(cont->ensure_array);
- RUBY_FREE_UNLESS_NULL(cont->machine.stack);
+ /* cont */
+ ruby_xfree(cont->ensure_array);
+ RUBY_FREE_UNLESS_NULL(cont->machine.stack);
}
else {
- rb_fiber_t *fiber = (rb_fiber_t*)cont;
- coroutine_destroy(&fiber->context);
- fiber_stack_release(fiber);
+ /* fiber */
+ const rb_fiber_t *fib = (rb_fiber_t*)cont;
+#ifdef _WIN32
+ if (cont->type != ROOT_FIBER_CONTEXT) {
+ /* don't delete root fiber handle */
+ if (fib->fib_handle) {
+ DeleteFiber(fib->fib_handle);
+ }
+ }
+#else /* not WIN32 */
+ if (fib->ss_sp != NULL) {
+ if (cont->type == ROOT_FIBER_CONTEXT) {
+ rb_bug("Illegal root fiber parameter");
+ }
+ munmap((void*)fib->ss_sp, fib->ss_size);
+ }
+ else {
+ /* It may reached here when finalize */
+ /* TODO examine whether it is a bug */
+ /* rb_bug("cont_free: release self"); */
+ }
+#endif
}
-
+#else /* not FIBER_USE_NATIVE */
+ ruby_xfree(cont->ensure_array);
+ RUBY_FREE_UNLESS_NULL(cont->machine.stack);
+#endif
+#ifdef __ia64
+ RUBY_FREE_UNLESS_NULL(cont->machine.register_stack);
+#endif
RUBY_FREE_UNLESS_NULL(cont->saved_vm_stack.ptr);
- if (jit_cont_enabled) {
- VM_ASSERT(cont->jit_cont != NULL);
- jit_cont_free(cont->jit_cont);
- }
/* free rb_cont_t or rb_fiber_t */
ruby_xfree(ptr);
RUBY_FREE_LEAVE("cont");
@@ -1068,106 +387,95 @@ cont_memsize(const void *ptr)
size = sizeof(*cont);
if (cont->saved_vm_stack.ptr) {
#ifdef CAPTURE_JUST_VALID_VM_STACK
- size_t n = (cont->saved_vm_stack.slen + cont->saved_vm_stack.clen);
+ size_t n = (cont->saved_vm_stack.slen + cont->saved_vm_stack.clen);
#else
- size_t n = cont->saved_ec.vm_stack_size;
+ size_t n = cont->saved_ec.vm_stack_size;
#endif
- size += n * sizeof(*cont->saved_vm_stack.ptr);
+ size += n * sizeof(*cont->saved_vm_stack.ptr);
}
if (cont->machine.stack) {
- size += cont->machine.stack_size * sizeof(*cont->machine.stack);
+ size += cont->machine.stack_size * sizeof(*cont->machine.stack);
}
-
- return size;
-}
-
-void
-rb_fiber_update_self(rb_fiber_t *fiber)
-{
- if (fiber->cont.self) {
- fiber->cont.self = rb_gc_location(fiber->cont.self);
- }
- else {
- rb_execution_context_update(&fiber->cont.saved_ec);
+#ifdef __ia64
+ if (cont->machine.register_stack) {
+ size += cont->machine.register_stack_size * sizeof(*cont->machine.register_stack);
}
+#endif
+ return size;
}
void
-rb_fiber_mark_self(const rb_fiber_t *fiber)
+rb_fiber_mark_self(const rb_fiber_t *fib)
{
- if (fiber->cont.self) {
- rb_gc_mark_movable(fiber->cont.self);
+ if (fib->cont.self) {
+ rb_gc_mark(fib->cont.self);
}
else {
- rb_execution_context_mark(&fiber->cont.saved_ec);
+ rb_execution_context_mark(&fib->cont.saved_ec);
}
}
static void
-fiber_compact(void *ptr)
-{
- rb_fiber_t *fiber = ptr;
- fiber->first_proc = rb_gc_location(fiber->first_proc);
-
- if (fiber->prev) rb_fiber_update_self(fiber->prev);
-
- cont_compact(&fiber->cont);
- fiber_verify(fiber);
-}
-
-static void
fiber_mark(void *ptr)
{
- rb_fiber_t *fiber = ptr;
+ rb_fiber_t *fib = ptr;
RUBY_MARK_ENTER("cont");
- fiber_verify(fiber);
- rb_gc_mark_movable(fiber->first_proc);
- if (fiber->prev) rb_fiber_mark_self(fiber->prev);
- cont_mark(&fiber->cont);
+ fiber_verify(fib);
+ rb_gc_mark(fib->first_proc);
+ if (fib->prev) rb_fiber_mark_self(fib->prev);
+
+#if !FIBER_USE_NATIVE
+ if (fib->status == FIBER_TERMINATED) {
+ /* FIBER_TERMINATED fiber should not mark machine stack */
+ if (fib->cont.saved_ec.machine.stack_end != NULL) {
+ fib->cont.saved_ec.machine.stack_end = NULL;
+ }
+ }
+#endif
+
+ cont_mark(&fib->cont);
RUBY_MARK_LEAVE("cont");
}
static void
fiber_free(void *ptr)
{
- rb_fiber_t *fiber = ptr;
+ rb_fiber_t *fib = ptr;
RUBY_FREE_ENTER("fiber");
- if (DEBUG) fprintf(stderr, "fiber_free: %p[%p]\n", (void *)fiber, fiber->stack.base);
-
- if (fiber->cont.saved_ec.local_storage) {
- rb_id_table_free(fiber->cont.saved_ec.local_storage);
+ if (fib->cont.saved_ec.local_storage) {
+ st_free_table(fib->cont.saved_ec.local_storage);
}
- cont_free(&fiber->cont);
+ cont_free(&fib->cont);
RUBY_FREE_LEAVE("fiber");
}
static size_t
fiber_memsize(const void *ptr)
{
- const rb_fiber_t *fiber = ptr;
- size_t size = sizeof(*fiber);
- const rb_execution_context_t *saved_ec = &fiber->cont.saved_ec;
- const rb_thread_t *th = rb_ec_thread_ptr(saved_ec);
+ const rb_fiber_t *fib = ptr;
+ size_t size = 0;
- /*
- * vm.c::thread_memsize already counts th->ec->local_storage
- */
- if (saved_ec->local_storage && fiber != th->root_fiber) {
- size += rb_id_table_memsize(saved_ec->local_storage);
- size += rb_obj_memsize_of(saved_ec->storage);
+ size = sizeof(*fib);
+ if (fib->cont.type != ROOT_FIBER_CONTEXT &&
+ fib->cont.saved_ec.local_storage != NULL) {
+ size += st_memsize(fib->cont.saved_ec.local_storage);
}
-
- size += cont_memsize(&fiber->cont);
+ size += cont_memsize(&fib->cont);
return size;
}
VALUE
rb_obj_is_fiber(VALUE obj)
{
- return RBOOL(rb_typeddata_is_kind_of(obj, &fiber_data_type));
+ if (rb_typeddata_is_kind_of(obj, &fiber_data_type)) {
+ return Qtrue;
+ }
+ else {
+ return Qfalse;
+ }
}
static void
@@ -1176,31 +484,47 @@ cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont)
size_t size;
SET_MACHINE_STACK_END(&th->ec->machine.stack_end);
+#ifdef __ia64
+ th->machine.register_stack_end = rb_ia64_bsp();
+#endif
if (th->ec->machine.stack_start > th->ec->machine.stack_end) {
- size = cont->machine.stack_size = th->ec->machine.stack_start - th->ec->machine.stack_end;
- cont->machine.stack_src = th->ec->machine.stack_end;
+ size = cont->machine.stack_size = th->ec->machine.stack_start - th->ec->machine.stack_end;
+ cont->machine.stack_src = th->ec->machine.stack_end;
}
else {
- size = cont->machine.stack_size = th->ec->machine.stack_end - th->ec->machine.stack_start;
- cont->machine.stack_src = th->ec->machine.stack_start;
+ size = cont->machine.stack_size = th->ec->machine.stack_end - th->ec->machine.stack_start;
+ cont->machine.stack_src = th->ec->machine.stack_start;
}
if (cont->machine.stack) {
- REALLOC_N(cont->machine.stack, VALUE, size);
+ REALLOC_N(cont->machine.stack, VALUE, size);
}
else {
- cont->machine.stack = ALLOC_N(VALUE, size);
+ cont->machine.stack = ALLOC_N(VALUE, size);
}
FLUSH_REGISTER_WINDOWS;
- asan_unpoison_memory_region(cont->machine.stack_src, size, false);
MEMCPY(cont->machine.stack, cont->machine.stack_src, VALUE, size);
+
+#ifdef __ia64
+ rb_ia64_flushrs();
+ size = cont->machine.register_stack_size = th->machine.register_stack_end - th->machine.register_stack_start;
+ cont->machine.register_stack_src = th->machine.register_stack_start;
+ if (cont->machine.register_stack) {
+ REALLOC_N(cont->machine.register_stack, VALUE, size);
+ }
+ else {
+ cont->machine.register_stack = ALLOC_N(VALUE, size);
+ }
+
+ MEMCPY(cont->machine.register_stack, cont->machine.register_stack_src, VALUE, size);
+#endif
}
static const rb_data_type_t cont_data_type = {
"continuation",
- {cont_mark, cont_free, cont_memsize, cont_compact},
+ {cont_mark, cont_free, cont_memsize,},
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
};
@@ -1214,115 +538,14 @@ cont_save_thread(rb_context_t *cont, rb_thread_t *th)
/* save thread context */
*sec = *th->ec;
- /* saved_ec->machine.stack_end should be NULL */
+ /* saved_thread->machine.stack_end should be NULL */
/* because it may happen GC afterward */
sec->machine.stack_end = NULL;
-}
-
-static rb_nativethread_lock_t jit_cont_lock;
-
-// Register a new continuation with execution context `ec`. Return JIT info about
-// the continuation.
-static struct rb_jit_cont *
-jit_cont_new(rb_execution_context_t *ec)
-{
- struct rb_jit_cont *cont;
-
- // We need to use calloc instead of something like ZALLOC to avoid triggering GC here.
- // When this function is called from rb_thread_alloc through rb_threadptr_root_fiber_setup,
- // the thread is still being prepared and marking it causes SEGV.
- cont = calloc(1, sizeof(struct rb_jit_cont));
- if (cont == NULL)
- rb_memerror();
- cont->ec = ec;
-
- rb_native_mutex_lock(&jit_cont_lock);
- if (first_jit_cont == NULL) {
- cont->next = cont->prev = NULL;
- }
- else {
- cont->prev = NULL;
- cont->next = first_jit_cont;
- first_jit_cont->prev = cont;
- }
- first_jit_cont = cont;
- rb_native_mutex_unlock(&jit_cont_lock);
-
- return cont;
-}
-
-// Unregister continuation `cont`.
-static void
-jit_cont_free(struct rb_jit_cont *cont)
-{
- if (!cont) return;
-
- rb_native_mutex_lock(&jit_cont_lock);
- if (cont == first_jit_cont) {
- first_jit_cont = cont->next;
- if (first_jit_cont != NULL)
- first_jit_cont->prev = NULL;
- }
- else {
- cont->prev->next = cont->next;
- if (cont->next != NULL)
- cont->next->prev = cont->prev;
- }
- rb_native_mutex_unlock(&jit_cont_lock);
-
- free(cont);
-}
-
-// Call a given callback against all on-stack ISEQs.
-void
-rb_jit_cont_each_iseq(rb_iseq_callback callback, void *data)
-{
- struct rb_jit_cont *cont;
- for (cont = first_jit_cont; cont != NULL; cont = cont->next) {
- if (cont->ec->vm_stack == NULL)
- continue;
-
- const rb_control_frame_t *cfp;
- for (cfp = RUBY_VM_END_CONTROL_FRAME(cont->ec) - 1; ; cfp = RUBY_VM_NEXT_CONTROL_FRAME(cfp)) {
- const rb_iseq_t *iseq;
- if (cfp->pc && (iseq = cfp->iseq) != NULL && imemo_type((VALUE)iseq) == imemo_iseq) {
- callback(iseq, data);
- }
-
- if (cfp == cont->ec->cfp)
- break; // reached the most recent cfp
- }
- }
-}
-// Finish working with jit_cont.
-void
-rb_jit_cont_finish(void)
-{
- if (!jit_cont_enabled)
- return;
-
- struct rb_jit_cont *cont, *next;
- for (cont = first_jit_cont; cont != NULL; cont = next) {
- next = cont->next;
- free(cont); // Don't use xfree because it's allocated by calloc.
- }
- rb_native_mutex_destroy(&jit_cont_lock);
-}
-
-static void
-cont_init_jit_cont(rb_context_t *cont)
-{
- VM_ASSERT(cont->jit_cont == NULL);
- if (jit_cont_enabled) {
- cont->jit_cont = jit_cont_new(&(cont->saved_ec));
- }
-}
-
-struct rb_execution_context_struct *
-rb_fiberptr_get_ec(struct rb_fiber_struct *fiber)
-{
- return &fiber->cont.saved_ec;
+#ifdef __ia64
+ sec->machine.register_stack_start = NULL;
+ sec->machine.register_stack_end = NULL;
+#endif
}
static void
@@ -1334,7 +557,6 @@ cont_init(rb_context_t *cont, rb_thread_t *th)
cont->saved_ec.local_storage = NULL;
cont->saved_ec.local_storage_recursive_hash = Qnil;
cont->saved_ec.local_storage_recursive_hash_for_trace = Qnil;
- cont_init_jit_cont(cont);
}
static rb_context_t *
@@ -1351,57 +573,33 @@ cont_new(VALUE klass)
return cont;
}
-VALUE
-rb_fiberptr_self(struct rb_fiber_struct *fiber)
-{
- return fiber->cont.self;
-}
-
-unsigned int
-rb_fiberptr_blocking(struct rb_fiber_struct *fiber)
-{
- return fiber->blocking;
-}
-
-// Start working with jit_cont.
-void
-rb_jit_cont_init(void)
-{
- if (!jit_cont_enabled)
- return;
-
- rb_native_mutex_initialize(&jit_cont_lock);
- cont_init_jit_cont(&GET_EC()->fiber_ptr->cont);
-}
-
#if 0
void
show_vm_stack(const rb_execution_context_t *ec)
{
VALUE *p = ec->vm_stack;
while (p < ec->cfp->sp) {
- fprintf(stderr, "%3d ", (int)(p - ec->vm_stack));
- rb_obj_info_dump(*p);
- p++;
+ fprintf(stderr, "%3d ", (int)(p - ec->vm_stack));
+ rb_obj_info_dump(*p);
+ p++;
}
}
void
show_vm_pcs(const rb_control_frame_t *cfp,
- const rb_control_frame_t *end_of_cfp)
+ const rb_control_frame_t *end_of_cfp)
{
int i=0;
while (cfp != end_of_cfp) {
- int pc = 0;
- if (cfp->iseq) {
- pc = cfp->pc - ISEQ_BODY(cfp->iseq)->iseq_encoded;
- }
- fprintf(stderr, "%2d pc: %d\n", i++, pc);
- cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
+ int pc = 0;
+ if (cfp->iseq) {
+ pc = cfp->pc - cfp->iseq->body->iseq_encoded;
+ }
+ fprintf(stderr, "%2d pc: %d\n", i++, pc);
+ cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
}
}
#endif
-
static VALUE
cont_capture(volatile int *volatile stat)
{
@@ -1420,158 +618,274 @@ cont_capture(volatile int *volatile stat)
cont->saved_vm_stack.clen = ec->vm_stack + ec->vm_stack_size - (VALUE*)ec->cfp;
cont->saved_vm_stack.ptr = ALLOC_N(VALUE, cont->saved_vm_stack.slen + cont->saved_vm_stack.clen);
MEMCPY(cont->saved_vm_stack.ptr,
- ec->vm_stack,
- VALUE, cont->saved_vm_stack.slen);
+ ec->vm_stack,
+ VALUE, cont->saved_vm_stack.slen);
MEMCPY(cont->saved_vm_stack.ptr + cont->saved_vm_stack.slen,
- (VALUE*)ec->cfp,
- VALUE,
- cont->saved_vm_stack.clen);
+ (VALUE*)ec->cfp,
+ VALUE,
+ cont->saved_vm_stack.clen);
#else
cont->saved_vm_stack.ptr = ALLOC_N(VALUE, ec->vm_stack_size);
MEMCPY(cont->saved_vm_stack.ptr, ec->vm_stack, VALUE, ec->vm_stack_size);
#endif
- // At this point, `cfp` is valid but `vm_stack` should be cleared:
- rb_ec_set_vm_stack(&cont->saved_ec, NULL, 0);
- VM_ASSERT(cont->saved_ec.cfp != NULL);
+ ec_set_vm_stack(&cont->saved_ec, NULL, 0);
cont_save_machine_stack(th, cont);
/* backup ensure_list to array for search in another context */
{
- rb_ensure_list_t *p;
- int size = 0;
- rb_ensure_entry_t *entry;
- for (p=th->ec->ensure_list; p; p=p->next)
- size++;
- entry = cont->ensure_array = ALLOC_N(rb_ensure_entry_t,size+1);
- for (p=th->ec->ensure_list; p; p=p->next) {
- if (!p->entry.marker)
- p->entry.marker = rb_ary_hidden_new(0); /* dummy object */
- *entry++ = p->entry;
- }
- entry->marker = 0;
+ rb_ensure_list_t *p;
+ int size = 0;
+ rb_ensure_entry_t *entry;
+ for (p=th->ec->ensure_list; p; p=p->next)
+ size++;
+ entry = cont->ensure_array = ALLOC_N(rb_ensure_entry_t,size+1);
+ for (p=th->ec->ensure_list; p; p=p->next) {
+ if (!p->entry.marker)
+ p->entry.marker = rb_ary_tmp_new(0); /* dummy object */
+ *entry++ = p->entry;
+ }
+ entry->marker = 0;
}
if (ruby_setjmp(cont->jmpbuf)) {
- VALUE value;
+ VALUE value;
- VAR_INITIALIZED(cont);
- value = cont->value;
- if (cont->argc == -1) rb_exc_raise(value);
- cont->value = Qnil;
- *stat = 1;
- return value;
+ VAR_INITIALIZED(cont);
+ value = cont->value;
+ if (cont->argc == -1) rb_exc_raise(value);
+ cont->value = Qnil;
+ *stat = 1;
+ return value;
}
else {
- *stat = 0;
- return contval;
+ *stat = 0;
+ return contval;
}
}
static inline void
+fiber_restore_thread(rb_thread_t *th, rb_fiber_t *fib)
+{
+ ec_switch(th, fib);
+ VM_ASSERT(th->ec->fiber_ptr == fib);
+}
+
+static inline void
cont_restore_thread(rb_context_t *cont)
{
rb_thread_t *th = GET_THREAD();
/* restore thread context */
if (cont->type == CONTINUATION_CONTEXT) {
- /* continuation */
- rb_execution_context_t *sec = &cont->saved_ec;
- rb_fiber_t *fiber = NULL;
+ /* continuation */
+ rb_execution_context_t *sec = &cont->saved_ec;
+ rb_fiber_t *fib = NULL;
+
+ if (sec->fiber_ptr != NULL) {
+ fib = sec->fiber_ptr;
+ }
+ else if (th->root_fiber) {
+ fib = th->root_fiber;
+ }
+
+ if (fib && th->ec != &fib->cont.saved_ec) {
+ ec_switch(th, fib);
+ }
+
+ /* copy vm stack */
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ MEMCPY(th->ec->vm_stack,
+ cont->saved_vm_stack.ptr,
+ VALUE, cont->saved_vm_stack.slen);
+ MEMCPY(th->ec->vm_stack + th->ec->vm_stack_size - cont->saved_vm_stack.clen,
+ cont->saved_vm_stack.ptr + cont->saved_vm_stack.slen,
+ VALUE, cont->saved_vm_stack.clen);
+#else
+ MEMCPY(th->ec->vm_stack, cont->saved_vm_stack.ptr, VALUE, sec->vm_stack_size);
+#endif
+ /* other members of ec */
+
+ th->ec->cfp = sec->cfp;
+ th->ec->safe_level = sec->safe_level;
+ th->ec->raised_flag = sec->raised_flag;
+ th->ec->tag = sec->tag;
+ th->ec->protect_tag = sec->protect_tag;
+ th->ec->root_lep = sec->root_lep;
+ th->ec->root_svar = sec->root_svar;
+ th->ec->ensure_list = sec->ensure_list;
+ th->ec->errinfo = sec->errinfo;
+
+ /* trace on -> trace off */
+ if (th->ec->trace_arg != NULL && sec->trace_arg == NULL) {
+ GET_VM()->trace_running--;
+ }
+ /* trace off -> trace on */
+ else if (th->ec->trace_arg == NULL && sec->trace_arg != NULL) {
+ GET_VM()->trace_running++;
+ }
+ th->ec->trace_arg = sec->trace_arg;
+
+ VM_ASSERT(th->ec->vm_stack != NULL);
+ }
+ else {
+ /* fiber */
+ fiber_restore_thread(th, (rb_fiber_t*)cont);
+ }
+}
- if (sec->fiber_ptr != NULL) {
- fiber = sec->fiber_ptr;
- }
- else if (th->root_fiber) {
- fiber = th->root_fiber;
- }
+#if FIBER_USE_NATIVE
+#ifdef _WIN32
+static void
+fiber_set_stack_location(void)
+{
+ rb_thread_t *th = GET_THREAD();
+ VALUE *ptr;
- if (fiber && th->ec != &fiber->cont.saved_ec) {
- ec_switch(th, fiber);
- }
+ SET_MACHINE_STACK_END(&ptr);
+ th->ec->machine.stack_start = (void*)(((VALUE)ptr & RB_PAGE_MASK) + STACK_UPPER((void *)&ptr, 0, RB_PAGE_SIZE));
+}
- if (th->ec->trace_arg != sec->trace_arg) {
- rb_raise(rb_eRuntimeError, "can't call across trace_func");
- }
+static VOID CALLBACK
+fiber_entry(void *arg)
+{
+ fiber_set_stack_location();
+ rb_fiber_start();
+}
+#else /* _WIN32 */
- /* copy vm stack */
-#ifdef CAPTURE_JUST_VALID_VM_STACK
- MEMCPY(th->ec->vm_stack,
- cont->saved_vm_stack.ptr,
- VALUE, cont->saved_vm_stack.slen);
- MEMCPY(th->ec->vm_stack + th->ec->vm_stack_size - cont->saved_vm_stack.clen,
- cont->saved_vm_stack.ptr + cont->saved_vm_stack.slen,
- VALUE, cont->saved_vm_stack.clen);
+/*
+ * FreeBSD require a first (i.e. addr) argument of mmap(2) is not NULL
+ * if MAP_STACK is passed.
+ * http://www.FreeBSD.org/cgi/query-pr.cgi?pr=158755
+ */
+#if defined(MAP_STACK) && !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__)
+#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON | MAP_STACK)
#else
- MEMCPY(th->ec->vm_stack, cont->saved_vm_stack.ptr, VALUE, sec->vm_stack_size);
+#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON)
#endif
- /* other members of ec */
- th->ec->cfp = sec->cfp;
- th->ec->raised_flag = sec->raised_flag;
- th->ec->tag = sec->tag;
- th->ec->root_lep = sec->root_lep;
- th->ec->root_svar = sec->root_svar;
- th->ec->ensure_list = sec->ensure_list;
- th->ec->errinfo = sec->errinfo;
+static char*
+fiber_machine_stack_alloc(size_t size)
+{
+ char *ptr;
- VM_ASSERT(th->ec->vm_stack != NULL);
+ if (machine_stack_cache_index > 0) {
+ if (machine_stack_cache[machine_stack_cache_index - 1].size == (size / sizeof(VALUE))) {
+ ptr = machine_stack_cache[machine_stack_cache_index - 1].ptr;
+ machine_stack_cache_index--;
+ machine_stack_cache[machine_stack_cache_index].ptr = NULL;
+ machine_stack_cache[machine_stack_cache_index].size = 0;
+ }
+ else{
+ /* TODO handle multiple machine stack size */
+ rb_bug("machine_stack_cache size is not canonicalized");
+ }
}
else {
- /* fiber */
- fiber_restore_thread(th, (rb_fiber_t*)cont);
+ void *page;
+ STACK_GROW_DIR_DETECTION;
+
+ errno = 0;
+ ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, FIBER_STACK_FLAGS, -1, 0);
+ if (ptr == MAP_FAILED) {
+ rb_raise(rb_eFiberError, "can't alloc machine stack to fiber: %s", strerror(errno));
+ }
+
+ /* guard page setup */
+ page = ptr + STACK_DIR_UPPER(size - RB_PAGE_SIZE, 0);
+ if (mprotect(page, RB_PAGE_SIZE, PROT_NONE) < 0) {
+ rb_raise(rb_eFiberError, "mprotect failed");
+ }
}
+
+ return ptr;
+}
+#endif
+
+static void
+fiber_initialize_machine_stack_context(rb_fiber_t *fib, size_t size)
+{
+ rb_execution_context_t *sec = &fib->cont.saved_ec;
+
+#ifdef _WIN32
+# if defined(_MSC_VER) && _MSC_VER <= 1200
+# define CreateFiberEx(cs, stacksize, flags, entry, param) \
+ CreateFiber((stacksize), (entry), (param))
+# endif
+ fib->fib_handle = CreateFiberEx(size - 1, size, 0, fiber_entry, NULL);
+ if (!fib->fib_handle) {
+ /* try to release unnecessary fibers & retry to create */
+ rb_gc();
+ fib->fib_handle = CreateFiberEx(size - 1, size, 0, fiber_entry, NULL);
+ if (!fib->fib_handle) {
+ rb_raise(rb_eFiberError, "can't create fiber");
+ }
+ }
+ sec->machine.stack_maxsize = size;
+#else /* not WIN32 */
+ ucontext_t *context = &fib->context;
+ char *ptr;
+ STACK_GROW_DIR_DETECTION;
+
+ getcontext(context);
+ ptr = fiber_machine_stack_alloc(size);
+ context->uc_link = NULL;
+ context->uc_stack.ss_sp = ptr;
+ context->uc_stack.ss_size = size;
+ fib->ss_sp = ptr;
+ fib->ss_size = size;
+ makecontext(context, rb_fiber_start, 0);
+ sec->machine.stack_start = (VALUE*)(ptr + STACK_DIR_UPPER(0, size));
+ sec->machine.stack_maxsize = size - RB_PAGE_SIZE;
+#endif
+#ifdef __ia64
+ sth->machine.register_stack_maxsize = sth->machine.stack_maxsize;
+#endif
}
-NOINLINE(static void fiber_setcontext(rb_fiber_t *new_fiber, rb_fiber_t *old_fiber));
+NOINLINE(static void fiber_setcontext(rb_fiber_t *newfib, rb_fiber_t *oldfib));
static void
-fiber_setcontext(rb_fiber_t *new_fiber, rb_fiber_t *old_fiber)
+fiber_setcontext(rb_fiber_t *newfib, rb_fiber_t *oldfib)
{
rb_thread_t *th = GET_THREAD();
- /* save old_fiber's machine stack - to ensure efficient garbage collection */
- if (!FIBER_TERMINATED_P(old_fiber)) {
- STACK_GROW_DIR_DETECTION;
- SET_MACHINE_STACK_END(&th->ec->machine.stack_end);
- if (STACK_DIR_UPPER(0, 1)) {
- old_fiber->cont.machine.stack_size = th->ec->machine.stack_start - th->ec->machine.stack_end;
- old_fiber->cont.machine.stack = th->ec->machine.stack_end;
- }
- else {
- old_fiber->cont.machine.stack_size = th->ec->machine.stack_end - th->ec->machine.stack_start;
- old_fiber->cont.machine.stack = th->ec->machine.stack_start;
- }
+ /* save oldfib's machine stack / TODO: is it needed? */
+ if (!FIBER_TERMINATED_P(oldfib)) {
+ STACK_GROW_DIR_DETECTION;
+ SET_MACHINE_STACK_END(&th->ec->machine.stack_end);
+ if (STACK_DIR_UPPER(0, 1)) {
+ oldfib->cont.machine.stack_size = th->ec->machine.stack_start - th->ec->machine.stack_end;
+ oldfib->cont.machine.stack = th->ec->machine.stack_end;
+ }
+ else {
+ oldfib->cont.machine.stack_size = th->ec->machine.stack_end - th->ec->machine.stack_start;
+ oldfib->cont.machine.stack = th->ec->machine.stack_start;
+ }
}
- /* exchange machine_stack_start between old_fiber and new_fiber */
- old_fiber->cont.saved_ec.machine.stack_start = th->ec->machine.stack_start;
+ /* exchange machine_stack_start between oldfib and newfib */
+ oldfib->cont.saved_ec.machine.stack_start = th->ec->machine.stack_start;
- /* old_fiber->machine.stack_end should be NULL */
- old_fiber->cont.saved_ec.machine.stack_end = NULL;
+ /* oldfib->machine.stack_end should be NULL */
+ oldfib->cont.saved_ec.machine.stack_end = NULL;
- // if (DEBUG) fprintf(stderr, "fiber_setcontext: %p[%p] -> %p[%p]\n", (void*)old_fiber, old_fiber->stack.base, (void*)new_fiber, new_fiber->stack.base);
+ /* restore thread context */
+ fiber_restore_thread(th, newfib);
-#if defined(COROUTINE_SANITIZE_ADDRESS)
- __sanitizer_start_switch_fiber(FIBER_TERMINATED_P(old_fiber) ? NULL : &old_fiber->context.fake_stack, new_fiber->context.stack_base, new_fiber->context.stack_size);
+#ifndef _WIN32
+ if (!newfib->context.uc_stack.ss_sp && th->root_fiber != newfib) {
+ rb_bug("non_root_fiber->context.uc_stac.ss_sp should not be NULL");
+ }
#endif
-
/* swap machine context */
- struct coroutine_context * from = coroutine_transfer(&old_fiber->context, &new_fiber->context);
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
- __sanitizer_finish_switch_fiber(old_fiber->context.fake_stack, NULL, NULL);
+#ifdef _WIN32
+ SwitchToFiber(newfib->fib_handle);
+#else
+ swapcontext(&oldfib->context, &newfib->context);
#endif
-
- if (from == NULL) {
- rb_syserr_fail(errno, "coroutine_transfer");
- }
-
- /* restore thread context */
- fiber_restore_thread(th, old_fiber);
-
- // It's possible to get here, and new_fiber is already freed.
- // if (DEBUG) fprintf(stderr, "fiber_setcontext: %p[%p] <- %p[%p]\n", (void*)old_fiber, old_fiber->stack.base, (void*)new_fiber, new_fiber->stack.base);
}
+#endif
NOINLINE(NORETURN(static void cont_restore_1(rb_context_t *)));
@@ -1581,26 +895,68 @@ cont_restore_1(rb_context_t *cont)
cont_restore_thread(cont);
/* restore machine stack */
-#if defined(_M_AMD64) && !defined(__MINGW64__)
+#ifdef _M_AMD64
{
- /* workaround for x64 SEH */
- jmp_buf buf;
- setjmp(buf);
- _JUMP_BUFFER *bp = (void*)&cont->jmpbuf;
- bp->Frame = ((_JUMP_BUFFER*)((void*)&buf))->Frame;
+ /* workaround for x64 SEH */
+ jmp_buf buf;
+ setjmp(buf);
+ ((_JUMP_BUFFER*)(&cont->jmpbuf))->Frame =
+ ((_JUMP_BUFFER*)(&buf))->Frame;
}
#endif
if (cont->machine.stack_src) {
- FLUSH_REGISTER_WINDOWS;
- MEMCPY(cont->machine.stack_src, cont->machine.stack,
- VALUE, cont->machine.stack_size);
+ FLUSH_REGISTER_WINDOWS;
+ MEMCPY(cont->machine.stack_src, cont->machine.stack,
+ VALUE, cont->machine.stack_size);
}
+#ifdef __ia64
+ if (cont->machine.register_stack_src) {
+ MEMCPY(cont->machine.register_stack_src, cont->machine.register_stack,
+ VALUE, cont->machine.register_stack_size);
+ }
+#endif
+
ruby_longjmp(cont->jmpbuf, 1);
}
NORETURN(NOINLINE(static void cont_restore_0(rb_context_t *, VALUE *)));
+#ifdef __ia64
+#define C(a) rse_##a##0, rse_##a##1, rse_##a##2, rse_##a##3, rse_##a##4
+#define E(a) rse_##a##0= rse_##a##1= rse_##a##2= rse_##a##3= rse_##a##4
+static volatile int C(a), C(b), C(c), C(d), C(e);
+static volatile int C(f), C(g), C(h), C(i), C(j);
+static volatile int C(k), C(l), C(m), C(n), C(o);
+static volatile int C(p), C(q), C(r), C(s), C(t);
+#if 0
+{/* the above lines make cc-mode.el confused so much */}
+#endif
+int rb_dummy_false = 0;
+NORETURN(NOINLINE(static void register_stack_extend(rb_context_t *, VALUE *, VALUE *)));
+static void
+register_stack_extend(rb_context_t *cont, VALUE *vp, VALUE *curr_bsp)
+{
+ if (rb_dummy_false) {
+ /* use registers as much as possible */
+ E(a) = E(b) = E(c) = E(d) = E(e) =
+ E(f) = E(g) = E(h) = E(i) = E(j) =
+ E(k) = E(l) = E(m) = E(n) = E(o) =
+ E(p) = E(q) = E(r) = E(s) = E(t) = 0;
+ E(a) = E(b) = E(c) = E(d) = E(e) =
+ E(f) = E(g) = E(h) = E(i) = E(j) =
+ E(k) = E(l) = E(m) = E(n) = E(o) =
+ E(p) = E(q) = E(r) = E(s) = E(t) = 0;
+ }
+ if (curr_bsp < cont->machine.register_stack_src+cont->machine.register_stack_size) {
+ register_stack_extend(cont, vp, (VALUE*)rb_ia64_bsp());
+ }
+ cont_restore_0(cont, vp);
+}
+#undef C
+#undef E
+#endif
+
static void
cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
{
@@ -1610,49 +966,48 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
#else
#define STACK_PAD_SIZE 1024
#endif
- VALUE space[STACK_PAD_SIZE];
+ VALUE space[STACK_PAD_SIZE];
#if !STACK_GROW_DIRECTION
- if (addr_in_prev_frame > &space[0]) {
- /* Stack grows downward */
+ if (addr_in_prev_frame > &space[0]) {
+ /* Stack grows downward */
#endif
#if STACK_GROW_DIRECTION <= 0
- volatile VALUE *const end = cont->machine.stack_src;
- if (&space[0] > end) {
+ volatile VALUE *const end = cont->machine.stack_src;
+ if (&space[0] > end) {
# ifdef HAVE_ALLOCA
- volatile VALUE *sp = ALLOCA_N(VALUE, &space[0] - end);
- // We need to make sure that the stack pointer is moved,
- // but some compilers may remove the allocation by optimization.
- // We hope that the following read/write will prevent such an optimization.
- *sp = Qfalse;
- space[0] = *sp;
+ volatile VALUE *sp = ALLOCA_N(VALUE, &space[0] - end);
+ space[0] = *sp;
# else
- cont_restore_0(cont, &space[0]);
+ cont_restore_0(cont, &space[0]);
# endif
- }
+ }
#endif
#if !STACK_GROW_DIRECTION
- }
- else {
- /* Stack grows upward */
+ }
+ else {
+ /* Stack grows upward */
#endif
#if STACK_GROW_DIRECTION >= 0
- volatile VALUE *const end = cont->machine.stack_src + cont->machine.stack_size;
- if (&space[STACK_PAD_SIZE] < end) {
+ volatile VALUE *const end = cont->machine.stack_src + cont->machine.stack_size;
+ if (&space[STACK_PAD_SIZE] < end) {
# ifdef HAVE_ALLOCA
- volatile VALUE *sp = ALLOCA_N(VALUE, end - &space[STACK_PAD_SIZE]);
- space[0] = *sp;
+ volatile VALUE *sp = ALLOCA_N(VALUE, end - &space[STACK_PAD_SIZE]);
+ space[0] = *sp;
# else
- cont_restore_0(cont, &space[STACK_PAD_SIZE-1]);
+ cont_restore_0(cont, &space[STACK_PAD_SIZE-1]);
# endif
- }
+ }
#endif
#if !STACK_GROW_DIRECTION
- }
+ }
#endif
}
cont_restore_1(cont);
}
+#ifdef __ia64
+#define cont_restore_0(cont, vp) register_stack_extend((cont), (vp), (VALUE*)rb_ia64_bsp())
+#endif
/*
* Document-class: Continuation
@@ -1660,7 +1015,7 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
* Continuation objects are generated by Kernel#callcc,
* after having +require+d <i>continuation</i>. They hold
* a return address and execution context, allowing a nonlocal return
- * to the end of the #callcc block from anywhere within a
+ * to the end of the <code>callcc</code> block from anywhere within a
* program. Continuations are somewhat analogous to a structured
* version of C's <code>setjmp/longjmp</code> (although they contain
* more state, so you might consider them closer to threads).
@@ -1704,7 +1059,7 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
* require "continuation"
* callcc {|cont|
* for i in 0..4
- * print "#{i}: "
+ * print "\n#{i}: "
* for j in i*5...(i+1)*5
* cont.call() if j == 17
* printf "%3d", j
@@ -1744,10 +1099,10 @@ rb_callcc(VALUE self)
volatile VALUE val = cont_capture(&called);
if (called) {
- return val;
+ return val;
}
else {
- return rb_yield(val);
+ return rb_yield(val);
}
}
@@ -1755,39 +1110,35 @@ static VALUE
make_passing_arg(int argc, const VALUE *argv)
{
switch (argc) {
- case -1:
- return argv[0];
case 0:
- return Qnil;
+ return Qnil;
case 1:
- return argv[0];
+ return argv[0];
default:
- return rb_ary_new4(argc, argv);
+ return rb_ary_new4(argc, argv);
}
}
-typedef VALUE e_proc(VALUE);
-
/* CAUTION!! : Currently, error in rollback_func is not supported */
/* same as rb_protect if set rollback_func to NULL */
void
-ruby_register_rollback_func_for_ensure(e_proc *ensure_func, e_proc *rollback_func)
+ruby_register_rollback_func_for_ensure(VALUE (*ensure_func)(ANYARGS), VALUE (*rollback_func)(ANYARGS))
{
st_table **table_p = &GET_VM()->ensure_rollback_table;
if (UNLIKELY(*table_p == NULL)) {
- *table_p = st_init_numtable();
+ *table_p = st_init_numtable();
}
st_insert(*table_p, (st_data_t)ensure_func, (st_data_t)rollback_func);
}
-static inline e_proc *
-lookup_rollback_func(e_proc *ensure_func)
+static inline VALUE
+lookup_rollback_func(VALUE (*ensure_func)(ANYARGS))
{
st_table *table = GET_VM()->ensure_rollback_table;
st_data_t val;
if (table && st_lookup(table, (st_data_t)ensure_func, &val))
- return (e_proc *) val;
- return (e_proc *) Qundef;
+ return (VALUE) val;
+ return Qundef;
}
@@ -1796,63 +1147,62 @@ rollback_ensure_stack(VALUE self,rb_ensure_list_t *current,rb_ensure_entry_t *ta
{
rb_ensure_list_t *p;
rb_ensure_entry_t *entry;
- size_t i, j;
+ size_t i;
size_t cur_size;
size_t target_size;
size_t base_point;
- e_proc *func;
+ VALUE (*func)(ANYARGS);
cur_size = 0;
for (p=current; p; p=p->next)
- cur_size++;
+ cur_size++;
target_size = 0;
for (entry=target; entry->marker; entry++)
- target_size++;
+ target_size++;
/* search common stack point */
p = current;
base_point = cur_size;
while (base_point) {
- if (target_size >= base_point &&
- p->entry.marker == target[target_size - base_point].marker)
- break;
- base_point --;
- p = p->next;
+ if (target_size >= base_point &&
+ p->entry.marker == target[target_size - base_point].marker)
+ break;
+ base_point --;
+ p = p->next;
}
/* rollback function check */
for (i=0; i < target_size - base_point; i++) {
- if (!lookup_rollback_func(target[i].e_proc)) {
- rb_raise(rb_eRuntimeError, "continuation called from out of critical rb_ensure scope");
- }
+ if (!lookup_rollback_func(target[i].e_proc)) {
+ rb_raise(rb_eRuntimeError, "continuation called from out of critical rb_ensure scope");
+ }
}
/* pop ensure stack */
while (cur_size > base_point) {
- /* escape from ensure block */
- (*current->entry.e_proc)(current->entry.data2);
- current = current->next;
- cur_size--;
+ /* escape from ensure block */
+ (*current->entry.e_proc)(current->entry.data2);
+ current = current->next;
+ cur_size--;
}
/* push ensure stack */
- for (j = 0; j < i; j++) {
- func = lookup_rollback_func(target[i - j - 1].e_proc);
- if (!UNDEF_P((VALUE)func)) {
- (*func)(target[i - j - 1].data2);
- }
+ while (i--) {
+ func = (VALUE (*)(ANYARGS)) lookup_rollback_func(target[i].e_proc);
+ if ((VALUE)func != Qundef) {
+ (*func)(target[i].data2);
+ }
}
}
-NORETURN(static VALUE rb_cont_call(int argc, VALUE *argv, VALUE contval));
-
/*
* call-seq:
* cont.call(args, ...)
* cont[args, ...]
*
- * Invokes the continuation. The program continues from the end of
- * the #callcc block. If no arguments are given, the original #callcc
- * returns +nil+. If one argument is given, #callcc returns
- * it. Otherwise, an array containing <i>args</i> is returned.
+ * Invokes the continuation. The program continues from the end of the
+ * <code>callcc</code> block. If no arguments are given, the original
+ * <code>callcc</code> returns <code>nil</code>. If one argument is
+ * given, <code>callcc</code> returns it. Otherwise, an array
+ * containing <i>args</i> is returned.
*
* callcc {|cont| cont.call } #=> nil
* callcc {|cont| cont.call 1 } #=> 1
@@ -1862,16 +1212,20 @@ NORETURN(static VALUE rb_cont_call(int argc, VALUE *argv, VALUE contval));
static VALUE
rb_cont_call(int argc, VALUE *argv, VALUE contval)
{
- rb_context_t *cont = cont_ptr(contval);
+ rb_context_t *cont;
rb_thread_t *th = GET_THREAD();
+ GetContPtr(contval, cont);
if (cont_thread_value(cont) != th->self) {
- rb_raise(rb_eRuntimeError, "continuation called across threads");
+ rb_raise(rb_eRuntimeError, "continuation called across threads");
+ }
+ if (cont->saved_ec.protect_tag != th->ec->protect_tag) {
+ rb_raise(rb_eRuntimeError, "continuation called across stack rewinding barrier");
}
if (cont->saved_ec.fiber_ptr) {
- if (th->ec->fiber_ptr != cont->saved_ec.fiber_ptr) {
- rb_raise(rb_eRuntimeError, "continuation called across fiber");
- }
+ if (th->ec->fiber_ptr != cont->saved_ec.fiber_ptr) {
+ rb_raise(rb_eRuntimeError, "continuation called across fiber");
+ }
}
rollback_ensure_stack(contval, th->ec->ensure_list, cont->ensure_array);
@@ -1879,7 +1233,7 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval)
cont->value = make_passing_arg(argc, argv);
cont_restore_0(cont, &contval);
- UNREACHABLE_RETURN(Qnil);
+ return Qnil; /* unreachable */
}
/*********/
@@ -1901,10 +1255,10 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval)
* manpage to configure the size of the fiber stack(s).
*
* When a fiber is created it will not run automatically. Rather it must
- * be explicitly asked to run using the Fiber#resume method.
+ * be explicitly asked to run using the <code>Fiber#resume</code> method.
* The code running inside the fiber can give up control by calling
- * Fiber.yield in which case it yields control back to caller (the
- * caller of the Fiber#resume).
+ * <code>Fiber.yield</code> in which case it yields control back to caller
+ * (the caller of the <code>Fiber#resume</code>).
*
* Upon yielding or termination the Fiber returns the value of the last
* executed expression
@@ -1926,10 +1280,10 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval)
* 2
* FiberError: dead fiber called
*
- * The Fiber#resume method accepts an arbitrary number of parameters,
- * if it is the first call to #resume then they will be passed as
- * block arguments. Otherwise they will be the return value of the
- * call to Fiber.yield
+ * The <code>Fiber#resume</code> method accepts an arbitrary number of
+ * parameters, if it is the first call to <code>resume</code> then they
+ * will be passed as block arguments. Otherwise they will be the return
+ * value of the call to <code>Fiber.yield</code>
*
* Example:
*
@@ -1938,40 +1292,20 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval)
* end
*
* puts fiber.resume 10
- * puts fiber.resume 1_000_000
- * puts fiber.resume "The fiber will be dead before I can cause trouble"
+ * puts fiber.resume 14
+ * puts fiber.resume 18
*
* <em>produces</em>
*
* 12
- * 1000000
+ * 14
* FiberError: dead fiber called
*
- * == Non-blocking Fibers
- *
- * The concept of <em>non-blocking fiber</em> was introduced in Ruby 3.0.
- * A non-blocking fiber, when reaching a operation that would normally block
- * the fiber (like <code>sleep</code>, or wait for another process or I/O)
- * will yield control to other fibers and allow the <em>scheduler</em> to
- * handle blocking and waking up (resuming) this fiber when it can proceed.
- *
- * For a Fiber to behave as non-blocking, it need to be created in Fiber.new with
- * <tt>blocking: false</tt> (which is the default), and Fiber.scheduler
- * should be set with Fiber.set_scheduler. If Fiber.scheduler is not set in
- * the current thread, blocking and non-blocking fibers' behavior is identical.
- *
- * Ruby doesn't provide a scheduler class: it is expected to be implemented by
- * the user and correspond to Fiber::Scheduler.
- *
- * There is also Fiber.schedule method, which is expected to immediately perform
- * the given block in a non-blocking manner. Its actual implementation is up to
- * the scheduler.
- *
*/
static const rb_data_type_t fiber_data_type = {
"fiber",
- {fiber_mark, fiber_free, fiber_memsize, fiber_compact,},
+ {fiber_mark, fiber_free, fiber_memsize,},
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
};
@@ -1982,637 +1316,239 @@ fiber_alloc(VALUE klass)
}
static rb_fiber_t*
-fiber_t_alloc(VALUE fiber_value, unsigned int blocking)
+fiber_t_alloc(VALUE fibval)
{
- rb_fiber_t *fiber;
+ rb_fiber_t *fib;
rb_thread_t *th = GET_THREAD();
- if (DATA_PTR(fiber_value) != 0) {
- rb_raise(rb_eRuntimeError, "cannot initialize twice");
+ if (DATA_PTR(fibval) != 0) {
+ rb_raise(rb_eRuntimeError, "cannot initialize twice");
}
THREAD_MUST_BE_RUNNING(th);
- fiber = ZALLOC(rb_fiber_t);
- fiber->cont.self = fiber_value;
- fiber->cont.type = FIBER_CONTEXT;
- fiber->blocking = blocking;
- cont_init(&fiber->cont, th);
-
- fiber->cont.saved_ec.fiber_ptr = fiber;
- rb_ec_clear_vm_stack(&fiber->cont.saved_ec);
-
- fiber->prev = NULL;
-
- /* fiber->status == 0 == CREATED
- * So that we don't need to set status: fiber_status_set(fiber, FIBER_CREATED); */
- VM_ASSERT(FIBER_CREATED_P(fiber));
-
- DATA_PTR(fiber_value) = fiber;
-
- return fiber;
-}
-
-static rb_fiber_t *
-root_fiber_alloc(rb_thread_t *th)
-{
- VALUE fiber_value = fiber_alloc(rb_cFiber);
- rb_fiber_t *fiber = th->ec->fiber_ptr;
-
- VM_ASSERT(DATA_PTR(fiber_value) == NULL);
- VM_ASSERT(fiber->cont.type == FIBER_CONTEXT);
- VM_ASSERT(FIBER_RESUMED_P(fiber));
-
- th->root_fiber = fiber;
- DATA_PTR(fiber_value) = fiber;
- fiber->cont.self = fiber_value;
-
- coroutine_initialize_main(&fiber->context);
-
- return fiber;
-}
-
-static inline rb_fiber_t*
-fiber_current(void)
-{
- rb_execution_context_t *ec = GET_EC();
- if (ec->fiber_ptr->cont.self == 0) {
- root_fiber_alloc(rb_ec_thread_ptr(ec));
- }
- return ec->fiber_ptr;
-}
-
-static inline VALUE
-current_fiber_storage(void)
-{
- rb_execution_context_t *ec = GET_EC();
- return ec->storage;
-}
-
-static inline VALUE
-inherit_fiber_storage(void)
-{
- return rb_obj_dup(current_fiber_storage());
-}
-
-static inline void
-fiber_storage_set(struct rb_fiber_struct *fiber, VALUE storage)
-{
- fiber->cont.saved_ec.storage = storage;
-}
-
-static inline VALUE
-fiber_storage_get(rb_fiber_t *fiber, int allocate)
-{
- VALUE storage = fiber->cont.saved_ec.storage;
- if (storage == Qnil && allocate) {
- storage = rb_hash_new();
- fiber_storage_set(fiber, storage);
- }
- return storage;
-}
-
-static void
-storage_access_must_be_from_same_fiber(VALUE self)
-{
- rb_fiber_t *fiber = fiber_ptr(self);
- rb_fiber_t *current = fiber_current();
- if (fiber != current) {
- rb_raise(rb_eArgError, "Fiber storage can only be accessed from the Fiber it belongs to");
- }
-}
-
-/**
- * call-seq: fiber.storage -> hash (dup)
- *
- * Returns a copy of the storage hash for the fiber. The method can only be called on the
- * Fiber.current.
- */
-static VALUE
-rb_fiber_storage_get(VALUE self)
-{
- storage_access_must_be_from_same_fiber(self);
-
- VALUE storage = fiber_storage_get(fiber_ptr(self), FALSE);
-
- if (storage == Qnil) {
- return Qnil;
- }
- else {
- return rb_obj_dup(storage);
- }
-}
-
-static int
-fiber_storage_validate_each(VALUE key, VALUE value, VALUE _argument)
-{
- rb_check_id(&key);
-
- return ST_CONTINUE;
-}
-
-static void
-fiber_storage_validate(VALUE value)
-{
- // nil is an allowed value and will be lazily initialized.
- if (value == Qnil) return;
-
- if (!RB_TYPE_P(value, T_HASH)) {
- rb_raise(rb_eTypeError, "storage must be a hash");
- }
-
- if (RB_OBJ_FROZEN(value)) {
- rb_raise(rb_eFrozenError, "storage must not be frozen");
- }
-
- rb_hash_foreach(value, fiber_storage_validate_each, Qundef);
-}
-
-/**
- * call-seq: fiber.storage = hash
- *
- * Sets the storage hash for the fiber. This feature is experimental
- * and may change in the future. The method can only be called on the
- * Fiber.current.
- *
- * You should be careful about using this method as you may inadvertently clear
- * important fiber-storage state. You should mostly prefer to assign specific
- * keys in the storage using Fiber::[]=.
- *
- * You can also use <tt>Fiber.new(storage: nil)</tt> to create a fiber with an empty
- * storage.
- *
- * Example:
- *
- * while request = request_queue.pop
- * # Reset the per-request state:
- * Fiber.current.storage = nil
- * handle_request(request)
- * end
- */
-static VALUE
-rb_fiber_storage_set(VALUE self, VALUE value)
-{
- if (rb_warning_category_enabled_p(RB_WARN_CATEGORY_EXPERIMENTAL)) {
- rb_category_warn(RB_WARN_CATEGORY_EXPERIMENTAL,
- "Fiber#storage= is experimental and may be removed in the future!");
- }
-
- storage_access_must_be_from_same_fiber(self);
- fiber_storage_validate(value);
-
- fiber_ptr(self)->cont.saved_ec.storage = rb_obj_dup(value);
- return value;
-}
-
-/**
- * call-seq: Fiber[key] -> value
- *
- * Returns the value of the fiber storage variable identified by +key+.
- *
- * The +key+ must be a symbol, and the value is set by Fiber#[]= or
- * Fiber#store.
- *
- * See also Fiber::[]=.
- */
-static VALUE
-rb_fiber_storage_aref(VALUE class, VALUE key)
-{
- ID id = rb_check_id(&key);
- if (!id) return Qnil;
-
- VALUE storage = fiber_storage_get(fiber_current(), FALSE);
- if (storage == Qnil) return Qnil;
-
- return rb_hash_aref(storage, key);
-}
-
-/**
- * call-seq: Fiber[key] = value
- *
- * Assign +value+ to the fiber storage variable identified by +key+.
- * The variable is created if it doesn't exist.
- *
- * +key+ must be a Symbol, otherwise a TypeError is raised.
- *
- * See also Fiber::[].
- */
-static VALUE
-rb_fiber_storage_aset(VALUE class, VALUE key, VALUE value)
-{
- ID id = rb_check_id(&key);
- if (!id) return Qnil;
-
- VALUE storage = fiber_storage_get(fiber_current(), value != Qnil);
- if (storage == Qnil) return Qnil;
-
- if (value == Qnil) {
- return rb_hash_delete(storage, key);
- }
- else {
- return rb_hash_aset(storage, key, value);
- }
-}
+ fib = ZALLOC(rb_fiber_t);
+ fib->cont.self = fibval;
+ fib->cont.type = FIBER_CONTEXT;
+ cont_init(&fib->cont, th);
+ fib->cont.saved_ec.fiber_ptr = fib;
+ fib->prev = NULL;
+
+ /* fib->status == 0 == CREATED
+ * So that we don't need to set status: fiber_status_set(fib, FIBER_CREATED); */
+ VM_ASSERT(FIBER_CREATED_P(fib));
+
+ DATA_PTR(fibval) = fib;
+
+ return fib;
+}
+
+rb_control_frame_t *
+rb_vm_push_frame(rb_execution_context_t *sec,
+ const rb_iseq_t *iseq,
+ VALUE type,
+ VALUE self,
+ VALUE specval,
+ VALUE cref_or_me,
+ const VALUE *pc,
+ VALUE *sp,
+ int local_size,
+ int stack_max);
static VALUE
-fiber_initialize(VALUE self, VALUE proc, struct fiber_pool * fiber_pool, unsigned int blocking, VALUE storage)
+fiber_init(VALUE fibval, VALUE proc)
{
- if (storage == Qundef || storage == Qtrue) {
- // The default, inherit storage (dup) from the current fiber:
- storage = inherit_fiber_storage();
- }
- else /* nil, hash, etc. */ {
- fiber_storage_validate(storage);
- storage = rb_obj_dup(storage);
- }
-
- rb_fiber_t *fiber = fiber_t_alloc(self, blocking);
-
- fiber->cont.saved_ec.storage = storage;
- fiber->first_proc = proc;
- fiber->stack.base = NULL;
- fiber->stack.pool = fiber_pool;
-
- return self;
-}
-
-static void
-fiber_prepare_stack(rb_fiber_t *fiber)
-{
- rb_context_t *cont = &fiber->cont;
+ rb_fiber_t *fib = fiber_t_alloc(fibval);
+ rb_context_t *cont = &fib->cont;
rb_execution_context_t *sec = &cont->saved_ec;
-
- size_t vm_stack_size = 0;
- VALUE *vm_stack = fiber_initialize_coroutine(fiber, &vm_stack_size);
+ rb_thread_t *cth = GET_THREAD();
+ size_t fib_stack_size = cth->vm->default_params.fiber_vm_stack_size / sizeof(VALUE);
/* initialize cont */
cont->saved_vm_stack.ptr = NULL;
- rb_ec_initialize_vm_stack(sec, vm_stack, vm_stack_size / sizeof(VALUE));
+ ec_set_vm_stack(sec, NULL, 0);
+
+ ec_set_vm_stack(sec, ALLOC_N(VALUE, fib_stack_size), fib_stack_size);
+ sec->cfp = (void *)(sec->vm_stack + sec->vm_stack_size);
+
+ rb_vm_push_frame(sec,
+ NULL,
+ VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL | VM_FRAME_FLAG_FINISH | VM_FRAME_FLAG_CFRAME,
+ Qnil, /* self */
+ VM_BLOCK_HANDLER_NONE,
+ 0, /* specval */
+ NULL, /* pc */
+ sec->vm_stack, /* sp */
+ 0, /* local_size */
+ 0);
sec->tag = NULL;
sec->local_storage = NULL;
sec->local_storage_recursive_hash = Qnil;
sec->local_storage_recursive_hash_for_trace = Qnil;
-}
-static struct fiber_pool *
-rb_fiber_pool_default(VALUE pool)
-{
- return &shared_fiber_pool;
-}
-
-VALUE rb_fiber_inherit_storage(struct rb_execution_context_struct *ec, struct rb_fiber_struct *fiber)
-{
- VALUE storage = rb_obj_dup(ec->storage);
- fiber->cont.saved_ec.storage = storage;
- return storage;
-}
-
-/* :nodoc: */
-static VALUE
-rb_fiber_initialize_kw(int argc, VALUE* argv, VALUE self, int kw_splat)
-{
- VALUE pool = Qnil;
- VALUE blocking = Qfalse;
- VALUE storage = Qundef;
+ fib->first_proc = proc;
- if (kw_splat != RB_NO_KEYWORDS) {
- VALUE options = Qnil;
- VALUE arguments[3] = {Qundef};
-
- argc = rb_scan_args_kw(kw_splat, argc, argv, ":", &options);
- rb_get_kwargs(options, fiber_initialize_keywords, 0, 3, arguments);
-
- if (!UNDEF_P(arguments[0])) {
- blocking = arguments[0];
- }
-
- if (!UNDEF_P(arguments[1])) {
- pool = arguments[1];
- }
-
- storage = arguments[2];
- }
+#if !FIBER_USE_NATIVE
+ MEMCPY(&cont->jmpbuf, &cth->root_jmpbuf, rb_jmpbuf_t, 1);
+#endif
- return fiber_initialize(self, rb_block_proc(), rb_fiber_pool_default(pool), RTEST(blocking), storage);
+ return fibval;
}
-/*
- * call-seq:
- * Fiber.new(blocking: false, storage: true) { |*args| ... } -> fiber
- *
- * Creates new Fiber. Initially, the fiber is not running and can be resumed
- * with #resume. Arguments to the first #resume call will be passed to the
- * block:
- *
- * f = Fiber.new do |initial|
- * current = initial
- * loop do
- * puts "current: #{current.inspect}"
- * current = Fiber.yield
- * end
- * end
- * f.resume(100) # prints: current: 100
- * f.resume(1, 2, 3) # prints: current: [1, 2, 3]
- * f.resume # prints: current: nil
- * # ... and so on ...
- *
- * If <tt>blocking: false</tt> is passed to <tt>Fiber.new</tt>, _and_ current
- * thread has a Fiber.scheduler defined, the Fiber becomes non-blocking (see
- * "Non-blocking Fibers" section in class docs).
- *
- * If the <tt>storage</tt> is unspecified, the default is to inherit a copy of
- * the storage from the current fiber. This is the same as specifying
- * <tt>storage: true</tt>.
- *
- * Fiber[:x] = 1
- * Fiber.new do
- * Fiber[:x] # => 1
- * Fiber[:x] = 2
- * end.resume
- * Fiber[:x] # => 1
- *
- * If the given <tt>storage</tt> is <tt>nil</tt>, this function will lazy
- * initialize the internal storage, which starts as an empty hash.
- *
- * Fiber[:x] = "Hello World"
- * Fiber.new(storage: nil) do
- * Fiber[:x] # nil
- * end
- *
- * Otherwise, the given <tt>storage</tt> is used as the new fiber's storage,
- * and it must be an instance of Hash.
- *
- * Explicitly using <tt>storage: true</tt> is currently experimental and may
- * change in the future.
- */
+/* :nodoc: */
static VALUE
-rb_fiber_initialize(int argc, VALUE* argv, VALUE self)
+rb_fiber_init(VALUE fibval)
{
- return rb_fiber_initialize_kw(argc, argv, self, rb_keyword_given_p());
+ return fiber_init(fibval, rb_block_proc());
}
VALUE
-rb_fiber_new_storage(rb_block_call_func_t func, VALUE obj, VALUE storage)
-{
- return fiber_initialize(fiber_alloc(rb_cFiber), rb_proc_new(func, obj), rb_fiber_pool_default(Qnil), 1, storage);
-}
-
-VALUE
-rb_fiber_new(rb_block_call_func_t func, VALUE obj)
-{
- return rb_fiber_new_storage(func, obj, Qtrue);
-}
-
-static VALUE
-rb_fiber_s_schedule_kw(int argc, VALUE* argv, int kw_splat)
-{
- rb_thread_t * th = GET_THREAD();
- VALUE scheduler = th->scheduler;
- VALUE fiber = Qnil;
-
- if (scheduler != Qnil) {
- fiber = rb_fiber_scheduler_fiber(scheduler, argc, argv, kw_splat);
- }
- else {
- rb_raise(rb_eRuntimeError, "No scheduler is available!");
- }
-
- return fiber;
-}
-
-/*
- * call-seq:
- * Fiber.schedule { |*args| ... } -> fiber
- *
- * The method is <em>expected</em> to immediately run the provided block of code in a
- * separate non-blocking fiber.
- *
- * puts "Go to sleep!"
- *
- * Fiber.set_scheduler(MyScheduler.new)
- *
- * Fiber.schedule do
- * puts "Going to sleep"
- * sleep(1)
- * puts "I slept well"
- * end
- *
- * puts "Wakey-wakey, sleepyhead"
- *
- * Assuming MyScheduler is properly implemented, this program will produce:
- *
- * Go to sleep!
- * Going to sleep
- * Wakey-wakey, sleepyhead
- * ...1 sec pause here...
- * I slept well
- *
- * ...e.g. on the first blocking operation inside the Fiber (<tt>sleep(1)</tt>),
- * the control is yielded to the outside code (main fiber), and <em>at the end
- * of that execution</em>, the scheduler takes care of properly resuming all the
- * blocked fibers.
- *
- * Note that the behavior described above is how the method is <em>expected</em>
- * to behave, actual behavior is up to the current scheduler's implementation of
- * Fiber::Scheduler#fiber method. Ruby doesn't enforce this method to
- * behave in any particular way.
- *
- * If the scheduler is not set, the method raises
- * <tt>RuntimeError (No scheduler is available!)</tt>.
- *
- */
-static VALUE
-rb_fiber_s_schedule(int argc, VALUE *argv, VALUE obj)
-{
- return rb_fiber_s_schedule_kw(argc, argv, rb_keyword_given_p());
-}
-
-/*
- * call-seq:
- * Fiber.scheduler -> obj or nil
- *
- * Returns the Fiber scheduler, that was last set for the current thread with Fiber.set_scheduler.
- * Returns +nil+ if no scheduler is set (which is the default), and non-blocking fibers'
- * behavior is the same as blocking.
- * (see "Non-blocking fibers" section in class docs for details about the scheduler concept).
- *
- */
-static VALUE
-rb_fiber_s_scheduler(VALUE klass)
-{
- return rb_fiber_scheduler_get();
-}
-
-/*
- * call-seq:
- * Fiber.current_scheduler -> obj or nil
- *
- * Returns the Fiber scheduler, that was last set for the current thread with Fiber.set_scheduler
- * if and only if the current fiber is non-blocking.
- *
- */
-static VALUE
-rb_fiber_current_scheduler(VALUE klass)
+rb_fiber_new(VALUE (*func)(ANYARGS), VALUE obj)
{
- return rb_fiber_scheduler_current();
+ return fiber_init(fiber_alloc(rb_cFiber), rb_proc_new(func, obj));
}
-/*
- * call-seq:
- * Fiber.set_scheduler(scheduler) -> scheduler
- *
- * Sets the Fiber scheduler for the current thread. If the scheduler is set, non-blocking
- * fibers (created by Fiber.new with <tt>blocking: false</tt>, or by Fiber.schedule)
- * call that scheduler's hook methods on potentially blocking operations, and the current
- * thread will call scheduler's +close+ method on finalization (allowing the scheduler to
- * properly manage all non-finished fibers).
- *
- * +scheduler+ can be an object of any class corresponding to Fiber::Scheduler. Its
- * implementation is up to the user.
- *
- * See also the "Non-blocking fibers" section in class docs.
- *
- */
-static VALUE
-rb_fiber_set_scheduler(VALUE klass, VALUE scheduler)
-{
- return rb_fiber_scheduler_set(scheduler);
-}
-
-NORETURN(static void rb_fiber_terminate(rb_fiber_t *fiber, int need_interrupt, VALUE err));
+static void rb_fiber_terminate(rb_fiber_t *fib, int need_interrupt);
void
-rb_fiber_start(rb_fiber_t *fiber)
+rb_fiber_start(void)
{
- rb_thread_t * volatile th = fiber->cont.saved_ec.thread_ptr;
-
+ rb_thread_t * volatile th = GET_THREAD();
+ rb_fiber_t *fib = th->ec->fiber_ptr;
rb_proc_t *proc;
enum ruby_tag_type state;
int need_interrupt = TRUE;
- VM_ASSERT(th->ec == GET_EC());
- VM_ASSERT(FIBER_RESUMED_P(fiber));
-
- if (fiber->blocking) {
- th->blocking += 1;
- }
+ VM_ASSERT(th->ec == ruby_current_execution_context_ptr);
+ VM_ASSERT(FIBER_RESUMED_P(fib));
EC_PUSH_TAG(th->ec);
if ((state = EC_EXEC_TAG()) == TAG_NONE) {
- rb_context_t *cont = &VAR_FROM_MEMORY(fiber)->cont;
- int argc;
- const VALUE *argv, args = cont->value;
- GetProcPtr(fiber->first_proc, proc);
- argv = (argc = cont->argc) > 1 ? RARRAY_CONST_PTR(args) : &args;
- cont->value = Qnil;
- th->ec->errinfo = Qnil;
- th->ec->root_lep = rb_vm_proc_local_ep(fiber->first_proc);
- th->ec->root_svar = Qfalse;
-
- EXEC_EVENT_HOOK(th->ec, RUBY_EVENT_FIBER_SWITCH, th->self, 0, 0, 0, Qnil);
- cont->value = rb_vm_invoke_proc(th->ec, proc, argc, argv, cont->kw_splat, VM_BLOCK_HANDLER_NONE);
+ rb_context_t *cont = &VAR_FROM_MEMORY(fib)->cont;
+ int argc;
+ const VALUE *argv, args = cont->value;
+ GetProcPtr(fib->first_proc, proc);
+ argv = (argc = cont->argc) > 1 ? RARRAY_CONST_PTR(args) : &args;
+ cont->value = Qnil;
+ th->ec->errinfo = Qnil;
+ th->ec->root_lep = rb_vm_proc_local_ep(fib->first_proc);
+ th->ec->root_svar = Qfalse;
+
+ EXEC_EVENT_HOOK(th->ec, RUBY_EVENT_FIBER_SWITCH, th->self, 0, 0, 0, Qnil);
+ cont->value = rb_vm_invoke_proc(th->ec, proc, argc, argv, VM_BLOCK_HANDLER_NONE);
}
EC_POP_TAG();
- VALUE err = Qfalse;
if (state) {
- err = th->ec->errinfo;
- VM_ASSERT(FIBER_RESUMED_P(fiber));
+ VALUE err = th->ec->errinfo;
+ VM_ASSERT(FIBER_RESUMED_P(fib));
- if (state == TAG_RAISE) {
- // noop...
- }
- else if (state == TAG_FATAL) {
- rb_threadptr_pending_interrupt_enque(th, err);
- }
- else {
- err = rb_vm_make_jump_tag_but_local_jump(state, err);
- }
- need_interrupt = TRUE;
+ if (state == TAG_RAISE || state == TAG_FATAL) {
+ rb_threadptr_pending_interrupt_enque(th, err);
+ }
+ else {
+ err = rb_vm_make_jump_tag_but_local_jump(state, err);
+ if (!NIL_P(err)) {
+ rb_threadptr_pending_interrupt_enque(th, err);
+ }
+ }
+ need_interrupt = TRUE;
}
- rb_fiber_terminate(fiber, need_interrupt, err);
+ rb_fiber_terminate(fib, need_interrupt);
+ VM_UNREACHABLE(rb_fiber_start);
+}
+
+static rb_fiber_t *
+root_fiber_alloc(rb_thread_t *th)
+{
+ VALUE fibval = fiber_alloc(rb_cFiber);
+ rb_fiber_t *fib = th->ec->fiber_ptr;
+
+ VM_ASSERT(DATA_PTR(fibval) == NULL);
+ VM_ASSERT(fib->cont.type == ROOT_FIBER_CONTEXT);
+ VM_ASSERT(fib->status == FIBER_RESUMED);
+
+ th->root_fiber = fib;
+ DATA_PTR(fibval) = fib;
+ fib->cont.self = fibval;
+#if FIBER_USE_NATIVE
+#ifdef _WIN32
+ if (fib->fib_handle == 0) {
+ fib->fib_handle = ConvertThreadToFiber(0);
+ }
+#endif
+#endif
+ return fib;
}
-// Set up a "root fiber", which is the fiber that every Ractor has.
void
rb_threadptr_root_fiber_setup(rb_thread_t *th)
{
- rb_fiber_t *fiber = ruby_mimmalloc(sizeof(rb_fiber_t));
- if (!fiber) {
- rb_bug("%s", strerror(errno)); /* ... is it possible to call rb_bug here? */
+ rb_fiber_t *fib = ruby_mimmalloc(sizeof(rb_fiber_t));
+ MEMZERO(fib, rb_fiber_t, 1);
+ fib->cont.type = ROOT_FIBER_CONTEXT;
+ fib->cont.saved_ec.fiber_ptr = fib;
+ fib->cont.saved_ec.thread_ptr = th;
+ fiber_status_set(fib, FIBER_RESUMED); /* skip CREATED */
+ th->ec = &fib->cont.saved_ec;
+#if FIBER_USE_NATIVE
+#ifdef _WIN32
+ if (fib->fib_handle == 0) {
+ fib->fib_handle = ConvertThreadToFiber(0);
}
- MEMZERO(fiber, rb_fiber_t, 1);
- fiber->cont.type = FIBER_CONTEXT;
- fiber->cont.saved_ec.fiber_ptr = fiber;
- fiber->cont.saved_ec.thread_ptr = th;
- fiber->blocking = 1;
- fiber_status_set(fiber, FIBER_RESUMED); /* skip CREATED */
- th->ec = &fiber->cont.saved_ec;
- // When rb_threadptr_root_fiber_setup is called for the first time, rb_rjit_enabled and
- // rb_yjit_enabled_p() are still false. So this does nothing and rb_jit_cont_init() that is
- // called later will take care of it. However, you still have to call cont_init_jit_cont()
- // here for other Ractors, which are not initialized by rb_jit_cont_init().
- cont_init_jit_cont(&fiber->cont);
+#endif
+#endif
}
void
rb_threadptr_root_fiber_release(rb_thread_t *th)
{
if (th->root_fiber) {
- /* ignore. A root fiber object will free th->ec */
+ /* ignore. A root fiber object will free th->ec */
}
else {
- rb_execution_context_t *ec = GET_EC();
+ VM_ASSERT(th->ec->fiber_ptr->cont.type == ROOT_FIBER_CONTEXT);
+ VM_ASSERT(th->ec->fiber_ptr->cont.self == 0);
+ fiber_free(th->ec->fiber_ptr);
- VM_ASSERT(th->ec->fiber_ptr->cont.type == FIBER_CONTEXT);
- VM_ASSERT(th->ec->fiber_ptr->cont.self == 0);
-
- if (th->ec == ec) {
- rb_ractor_set_current_ec(th->ractor, NULL);
- }
- fiber_free(th->ec->fiber_ptr);
- th->ec = NULL;
+ if (th->ec == ruby_current_execution_context_ptr) {
+ ruby_current_execution_context_ptr = NULL;
+ }
+ th->ec = NULL;
}
}
-void
-rb_threadptr_root_fiber_terminate(rb_thread_t *th)
+static inline rb_fiber_t*
+fiber_current(void)
{
- rb_fiber_t *fiber = th->ec->fiber_ptr;
-
- fiber->status = FIBER_TERMINATED;
-
- // The vm_stack is `alloca`ed on the thread stack, so it's gone too:
- rb_ec_clear_vm_stack(th->ec);
+ rb_execution_context_t *ec = GET_EC();
+ if (ec->fiber_ptr->cont.self == 0) {
+ root_fiber_alloc(rb_ec_thread_ptr(ec));
+ }
+ return ec->fiber_ptr;
}
static inline rb_fiber_t*
-return_fiber(bool terminate)
+return_fiber(void)
{
- rb_fiber_t *fiber = fiber_current();
- rb_fiber_t *prev = fiber->prev;
+ rb_fiber_t *fib = fiber_current();
+ rb_fiber_t *prev = fib->prev;
- if (prev) {
- fiber->prev = NULL;
- prev->resuming_fiber = NULL;
- return prev;
- }
- else {
- if (!terminate) {
- rb_raise(rb_eFiberError, "attempt to yield on a not resumed fiber");
- }
-
- rb_thread_t *th = GET_THREAD();
- rb_fiber_t *root_fiber = th->root_fiber;
+ if (!prev) {
+ rb_thread_t *th = GET_THREAD();
+ rb_fiber_t *root_fiber = th->root_fiber;
- VM_ASSERT(root_fiber != NULL);
+ VM_ASSERT(root_fiber != NULL);
- // search resuming fiber
- for (fiber = root_fiber; fiber->resuming_fiber; fiber = fiber->resuming_fiber) {
- }
-
- return fiber;
+ if (root_fiber == fib) {
+ rb_raise(rb_eFiberError, "can't yield from root fiber");
+ }
+ return root_fiber;
+ }
+ else {
+ fib->prev = NULL;
+ return prev;
}
}
@@ -2622,319 +1558,227 @@ rb_fiber_current(void)
return fiber_current()->cont.self;
}
-// Prepare to execute next_fiber on the given thread.
-static inline void
-fiber_store(rb_fiber_t *next_fiber, rb_thread_t *th)
+static inline VALUE
+fiber_store(rb_fiber_t *next_fib, rb_thread_t *th)
{
- rb_fiber_t *fiber;
+ rb_fiber_t *fib;
if (th->ec->fiber_ptr != NULL) {
- fiber = th->ec->fiber_ptr;
+ fib = th->ec->fiber_ptr;
}
else {
- /* create root fiber */
- fiber = root_fiber_alloc(th);
+ /* create root fiber */
+ fib = root_fiber_alloc(th);
}
- if (FIBER_CREATED_P(next_fiber)) {
- fiber_prepare_stack(next_fiber);
+ VM_ASSERT(FIBER_RESUMED_P(fib) || FIBER_TERMINATED_P(fib));
+ VM_ASSERT(FIBER_RUNNABLE_P(next_fib));
+
+#if FIBER_USE_NATIVE
+ if (FIBER_CREATED_P(next_fib)) {
+ fiber_initialize_machine_stack_context(next_fib, th->vm->default_params.fiber_machine_stack_size);
}
+#endif
- VM_ASSERT(FIBER_RESUMED_P(fiber) || FIBER_TERMINATED_P(fiber));
- VM_ASSERT(FIBER_RUNNABLE_P(next_fiber));
+ if (FIBER_RESUMED_P(fib)) fiber_status_set(fib, FIBER_SUSPENDED);
- if (FIBER_RESUMED_P(fiber)) fiber_status_set(fiber, FIBER_SUSPENDED);
+#if FIBER_USE_NATIVE == 0
+ /* should (re-)allocate stack are before fib->status change to pass fiber_verify() */
+ cont_save_machine_stack(th, &fib->cont);
+#endif
+
+ fiber_status_set(next_fib, FIBER_RESUMED);
- fiber_status_set(next_fiber, FIBER_RESUMED);
- fiber_setcontext(next_fiber, fiber);
+#if FIBER_USE_NATIVE
+ fiber_setcontext(next_fib, fib);
+ /* restored */
+#ifndef _WIN32
+ if (terminated_machine_stack.ptr) {
+ if (machine_stack_cache_index < MAX_MACHINE_STACK_CACHE) {
+ machine_stack_cache[machine_stack_cache_index].ptr = terminated_machine_stack.ptr;
+ machine_stack_cache[machine_stack_cache_index].size = terminated_machine_stack.size;
+ machine_stack_cache_index++;
+ }
+ else {
+ if (terminated_machine_stack.ptr != fib->cont.machine.stack) {
+ munmap((void*)terminated_machine_stack.ptr, terminated_machine_stack.size * sizeof(VALUE));
+ }
+ else {
+ rb_bug("terminated fiber resumed");
+ }
+ }
+ terminated_machine_stack.ptr = NULL;
+ terminated_machine_stack.size = 0;
+ }
+#endif /* not _WIN32 */
+ fib = th->ec->fiber_ptr;
+ if (fib->cont.argc == -1) rb_exc_raise(fib->cont.value);
+ return fib->cont.value;
+
+#else /* FIBER_USE_NATIVE */
+ fib->cont.saved_ec.machine.stack_end = NULL;
+ if (ruby_setjmp(fib->cont.jmpbuf)) {
+ /* restored */
+ fib = th->ec->fiber_ptr;
+ if (fib->cont.argc == -1) rb_exc_raise(fib->cont.value);
+ if (next_fib->cont.value == Qundef) {
+ cont_restore_0(&next_fib->cont, &next_fib->cont.value);
+ VM_UNREACHABLE(fiber_store);
+ }
+ return fib->cont.value;
+ }
+ else {
+ VALUE undef = Qundef;
+ cont_restore_0(&next_fib->cont, &undef);
+ VM_UNREACHABLE(fiber_store);
+ }
+#endif /* FIBER_USE_NATIVE */
}
static inline VALUE
-fiber_switch(rb_fiber_t *fiber, int argc, const VALUE *argv, int kw_splat, rb_fiber_t *resuming_fiber, bool yielding)
+fiber_switch(rb_fiber_t *fib, int argc, const VALUE *argv, int is_resume)
{
VALUE value;
- rb_context_t *cont = &fiber->cont;
+ rb_context_t *cont = &fib->cont;
rb_thread_t *th = GET_THREAD();
/* make sure the root_fiber object is available */
if (th->root_fiber == NULL) root_fiber_alloc(th);
- if (th->ec->fiber_ptr == fiber) {
- /* ignore fiber context switch
- * because destination fiber is the same as current fiber
- */
- return make_passing_arg(argc, argv);
+ if (th->ec->fiber_ptr == fib) {
+ /* ignore fiber context switch
+ * because destination fiber is same as current fiber
+ */
+ return make_passing_arg(argc, argv);
}
if (cont_thread_value(cont) != th->self) {
- rb_raise(rb_eFiberError, "fiber called across threads");
- }
-
- if (FIBER_TERMINATED_P(fiber)) {
- value = rb_exc_new2(rb_eFiberError, "dead fiber called");
-
- if (!FIBER_TERMINATED_P(th->ec->fiber_ptr)) {
- rb_exc_raise(value);
- VM_UNREACHABLE(fiber_switch);
- }
- else {
- /* th->ec->fiber_ptr is also dead => switch to root fiber */
- /* (this means we're being called from rb_fiber_terminate, */
- /* and the terminated fiber's return_fiber() is already dead) */
- VM_ASSERT(FIBER_SUSPENDED_P(th->root_fiber));
-
- cont = &th->root_fiber->cont;
- cont->argc = -1;
- cont->value = value;
-
- fiber_setcontext(th->root_fiber, th->ec->fiber_ptr);
-
- VM_UNREACHABLE(fiber_switch);
- }
+ rb_raise(rb_eFiberError, "fiber called across threads");
+ }
+ else if (cont->saved_ec.protect_tag != th->ec->protect_tag) {
+ rb_raise(rb_eFiberError, "fiber called across stack rewinding barrier");
+ }
+ else if (FIBER_TERMINATED_P(fib)) {
+ value = rb_exc_new2(rb_eFiberError, "dead fiber called");
+
+ if (!FIBER_TERMINATED_P(th->ec->fiber_ptr)) {
+ rb_exc_raise(value);
+ VM_UNREACHABLE(fiber_switch);
+ }
+ else {
+ /* th->ec->fiber_ptr is also dead => switch to root fiber */
+ /* (this means we're being called from rb_fiber_terminate, */
+ /* and the terminated fiber's return_fiber() is already dead) */
+ VM_ASSERT(FIBER_SUSPENDED_P(th->root_fiber));
+
+ cont = &th->root_fiber->cont;
+ cont->argc = -1;
+ cont->value = value;
+#if FIBER_USE_NATIVE
+ fiber_setcontext(th->root_fiber, th->ec->fiber_ptr);
+#else
+ cont_restore_0(cont, &value);
+#endif
+ VM_UNREACHABLE(fiber_switch);
+ }
}
- VM_ASSERT(FIBER_RUNNABLE_P(fiber));
-
- rb_fiber_t *current_fiber = fiber_current();
-
- VM_ASSERT(!current_fiber->resuming_fiber);
-
- if (resuming_fiber) {
- current_fiber->resuming_fiber = resuming_fiber;
- fiber->prev = fiber_current();
- fiber->yielding = 0;
+ if (is_resume) {
+ fib->prev = fiber_current();
}
- VM_ASSERT(!current_fiber->yielding);
- if (yielding) {
- current_fiber->yielding = 1;
- }
-
- if (current_fiber->blocking) {
- th->blocking -= 1;
- }
+ VM_ASSERT(FIBER_RUNNABLE_P(fib));
cont->argc = argc;
- cont->kw_splat = kw_splat;
cont->value = make_passing_arg(argc, argv);
-
- fiber_store(fiber, th);
-
- // We cannot free the stack until the pthread is joined:
-#ifndef COROUTINE_PTHREAD_CONTEXT
- if (resuming_fiber && FIBER_TERMINATED_P(fiber)) {
- fiber_stack_release(fiber);
- }
-#endif
-
- if (fiber_current()->blocking) {
- th->blocking += 1;
- }
-
+ value = fiber_store(fib, th);
RUBY_VM_CHECK_INTS(th->ec);
EXEC_EVENT_HOOK(th->ec, RUBY_EVENT_FIBER_SWITCH, th->self, 0, 0, 0, Qnil);
- current_fiber = th->ec->fiber_ptr;
- value = current_fiber->cont.value;
- if (current_fiber->cont.argc == -1) rb_exc_raise(value);
return value;
}
VALUE
-rb_fiber_transfer(VALUE fiber_value, int argc, const VALUE *argv)
-{
- return fiber_switch(fiber_ptr(fiber_value), argc, argv, RB_NO_KEYWORDS, NULL, false);
-}
-
-/*
- * call-seq:
- * fiber.blocking? -> true or false
- *
- * Returns +true+ if +fiber+ is blocking and +false+ otherwise.
- * Fiber is non-blocking if it was created via passing <tt>blocking: false</tt>
- * to Fiber.new, or via Fiber.schedule.
- *
- * Note that, even if the method returns +false+, the fiber behaves differently
- * only if Fiber.scheduler is set in the current thread.
- *
- * See the "Non-blocking fibers" section in class docs for details.
- *
- */
-VALUE
-rb_fiber_blocking_p(VALUE fiber)
-{
- return RBOOL(fiber_ptr(fiber)->blocking);
-}
-
-static VALUE
-fiber_blocking_yield(VALUE fiber_value)
-{
- rb_fiber_t *fiber = fiber_ptr(fiber_value);
- rb_thread_t * volatile th = fiber->cont.saved_ec.thread_ptr;
-
- // fiber->blocking is `unsigned int : 1`, so we use it as a boolean:
- fiber->blocking = 1;
-
- // Once the fiber is blocking, and current, we increment the thread blocking state:
- th->blocking += 1;
-
- return rb_yield(fiber_value);
-}
-
-static VALUE
-fiber_blocking_ensure(VALUE fiber_value)
+rb_fiber_transfer(VALUE fibval, int argc, const VALUE *argv)
{
- rb_fiber_t *fiber = fiber_ptr(fiber_value);
- rb_thread_t * volatile th = fiber->cont.saved_ec.thread_ptr;
-
- // We are no longer blocking:
- fiber->blocking = 0;
- th->blocking -= 1;
-
- return Qnil;
+ rb_fiber_t *fib;
+ GetFiberPtr(fibval, fib);
+ return fiber_switch(fib, argc, argv, 0);
}
-/*
- * call-seq:
- * Fiber.blocking{|fiber| ...} -> result
- *
- * Forces the fiber to be blocking for the duration of the block. Returns the
- * result of the block.
- *
- * See the "Non-blocking fibers" section in class docs for details.
- *
- */
-VALUE
-rb_fiber_blocking(VALUE class)
+void
+rb_fiber_close(rb_fiber_t *fib)
{
- VALUE fiber_value = rb_fiber_current();
- rb_fiber_t *fiber = fiber_ptr(fiber_value);
-
- // If we are already blocking, this is essentially a no-op:
- if (fiber->blocking) {
- return rb_yield(fiber_value);
+ VALUE *vm_stack = fib->cont.saved_ec.vm_stack;
+ fiber_status_set(fib, FIBER_TERMINATED);
+ if (fib->cont.type == ROOT_FIBER_CONTEXT) {
+ rb_thread_recycle_stack_release(vm_stack);
}
else {
- return rb_ensure(fiber_blocking_yield, fiber_value, fiber_blocking_ensure, fiber_value);
+ ruby_xfree(vm_stack);
}
-}
-
-/*
- * call-seq:
- * Fiber.blocking? -> false or 1
- *
- * Returns +false+ if the current fiber is non-blocking.
- * Fiber is non-blocking if it was created via passing <tt>blocking: false</tt>
- * to Fiber.new, or via Fiber.schedule.
- *
- * If the current Fiber is blocking, the method returns 1.
- * Future developments may allow for situations where larger integers
- * could be returned.
- *
- * Note that, even if the method returns +false+, Fiber behaves differently
- * only if Fiber.scheduler is set in the current thread.
- *
- * See the "Non-blocking fibers" section in class docs for details.
- *
- */
-static VALUE
-rb_fiber_s_blocking_p(VALUE klass)
-{
- rb_thread_t *thread = GET_THREAD();
- unsigned blocking = thread->blocking;
+ ec_set_vm_stack(&fib->cont.saved_ec, NULL, 0);
- if (blocking == 0)
- return Qfalse;
-
- return INT2NUM(blocking);
-}
-
-void
-rb_fiber_close(rb_fiber_t *fiber)
-{
- fiber_status_set(fiber, FIBER_TERMINATED);
+#if !FIBER_USE_NATIVE
+ /* should not mark machine stack any more */
+ fib->cont.saved_ec.machine.stack_end = NULL;
+#endif
}
static void
-rb_fiber_terminate(rb_fiber_t *fiber, int need_interrupt, VALUE error)
-{
- VALUE value = fiber->cont.value;
-
- VM_ASSERT(FIBER_RESUMED_P(fiber));
- rb_fiber_close(fiber);
-
- fiber->cont.machine.stack = NULL;
- fiber->cont.machine.stack_size = 0;
-
- rb_fiber_t *next_fiber = return_fiber(true);
-
- if (need_interrupt) RUBY_VM_SET_INTERRUPT(&next_fiber->cont.saved_ec);
+rb_fiber_terminate(rb_fiber_t *fib, int need_interrupt)
+{
+ VALUE value = fib->cont.value;
+ rb_fiber_t *ret_fib;
+
+ VM_ASSERT(FIBER_RESUMED_P(fib));
+ rb_fiber_close(fib);
+
+#if FIBER_USE_NATIVE && !defined(_WIN32)
+ /* Ruby must not switch to other thread until storing terminated_machine_stack */
+ terminated_machine_stack.ptr = fib->ss_sp;
+ terminated_machine_stack.size = fib->ss_size / sizeof(VALUE);
+ fib->ss_sp = NULL;
+ fib->context.uc_stack.ss_sp = NULL;
+ fib->cont.machine.stack = NULL;
+ fib->cont.machine.stack_size = 0;
+#endif
- if (RTEST(error))
- fiber_switch(next_fiber, -1, &error, RB_NO_KEYWORDS, NULL, false);
- else
- fiber_switch(next_fiber, 1, &value, RB_NO_KEYWORDS, NULL, false);
- ruby_stop(0);
+ ret_fib = return_fiber();
+ if (need_interrupt) RUBY_VM_SET_INTERRUPT(&ret_fib->cont.saved_ec);
+ fiber_switch(ret_fib, 1, &value, 0);
}
-static VALUE
-fiber_resume_kw(rb_fiber_t *fiber, int argc, const VALUE *argv, int kw_splat)
+VALUE
+rb_fiber_resume(VALUE fibval, int argc, const VALUE *argv)
{
- rb_fiber_t *current_fiber = fiber_current();
+ rb_fiber_t *fib;
+ GetFiberPtr(fibval, fib);
- if (argc == -1 && FIBER_CREATED_P(fiber)) {
- rb_raise(rb_eFiberError, "cannot raise exception on unborn fiber");
- }
- else if (FIBER_TERMINATED_P(fiber)) {
- rb_raise(rb_eFiberError, "attempt to resume a terminated fiber");
- }
- else if (fiber == current_fiber) {
- rb_raise(rb_eFiberError, "attempt to resume the current fiber");
- }
- else if (fiber->prev != NULL) {
- rb_raise(rb_eFiberError, "attempt to resume a resumed fiber (double resume)");
+ if (fib->prev != 0 || fib->cont.type == ROOT_FIBER_CONTEXT) {
+ rb_raise(rb_eFiberError, "double resume");
}
- else if (fiber->resuming_fiber) {
- rb_raise(rb_eFiberError, "attempt to resume a resuming fiber");
- }
- else if (fiber->prev == NULL &&
- (!fiber->yielding && fiber->status != FIBER_CREATED)) {
- rb_raise(rb_eFiberError, "attempt to resume a transferring fiber");
+ if (fib->transferred != 0) {
+ rb_raise(rb_eFiberError, "cannot resume transferred Fiber");
}
- return fiber_switch(fiber, argc, argv, kw_splat, fiber, false);
-}
-
-VALUE
-rb_fiber_resume_kw(VALUE self, int argc, const VALUE *argv, int kw_splat)
-{
- return fiber_resume_kw(fiber_ptr(self), argc, argv, kw_splat);
-}
-
-VALUE
-rb_fiber_resume(VALUE self, int argc, const VALUE *argv)
-{
- return fiber_resume_kw(fiber_ptr(self), argc, argv, RB_NO_KEYWORDS);
-}
-
-VALUE
-rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat)
-{
- return fiber_switch(return_fiber(false), argc, argv, kw_splat, NULL, true);
+ return fiber_switch(fib, argc, argv, 1);
}
VALUE
rb_fiber_yield(int argc, const VALUE *argv)
{
- return fiber_switch(return_fiber(false), argc, argv, RB_NO_KEYWORDS, NULL, true);
+ return fiber_switch(return_fiber(), argc, argv, 0);
}
void
-rb_fiber_reset_root_local_storage(rb_thread_t *th)
+rb_fiber_reset_root_local_storage(VALUE thval)
{
+ rb_thread_t *th = rb_thread_ptr(thval);
+
if (th->root_fiber && th->root_fiber != th->ec->fiber_ptr) {
- th->ec->local_storage = th->root_fiber->cont.saved_ec.local_storage;
+ th->ec->local_storage = th->root_fiber->cont.saved_ec.local_storage;
}
}
@@ -2944,110 +1788,36 @@ rb_fiber_reset_root_local_storage(rb_thread_t *th)
*
* Returns true if the fiber can still be resumed (or transferred
* to). After finishing execution of the fiber block this method will
- * always return +false+.
+ * always return false. You need to <code>require 'fiber'</code>
+ * before using this method.
*/
VALUE
-rb_fiber_alive_p(VALUE fiber_value)
+rb_fiber_alive_p(VALUE fibval)
{
- return RBOOL(!FIBER_TERMINATED_P(fiber_ptr(fiber_value)));
+ const rb_fiber_t *fib;
+ GetFiberPtr(fibval, fib);
+ return FIBER_TERMINATED_P(fib) ? Qfalse : Qtrue;
}
/*
* call-seq:
* fiber.resume(args, ...) -> obj
*
- * Resumes the fiber from the point at which the last Fiber.yield was
- * called, or starts running it if it is the first call to
- * #resume. Arguments passed to resume will be the value of the
- * Fiber.yield expression or will be passed as block parameters to
- * the fiber's block if this is the first #resume.
+ * Resumes the fiber from the point at which the last <code>Fiber.yield</code>
+ * was called, or starts running it if it is the first call to
+ * <code>resume</code>. Arguments passed to resume will be the value of
+ * the <code>Fiber.yield</code> expression or will be passed as block
+ * parameters to the fiber's block if this is the first <code>resume</code>.
*
* Alternatively, when resume is called it evaluates to the arguments passed
- * to the next Fiber.yield statement inside the fiber's block
+ * to the next <code>Fiber.yield</code> statement inside the fiber's block
* or to the block value if it runs to completion without any
- * Fiber.yield
+ * <code>Fiber.yield</code>
*/
static VALUE
-rb_fiber_m_resume(int argc, VALUE *argv, VALUE fiber)
+rb_fiber_m_resume(int argc, VALUE *argv, VALUE fib)
{
- return rb_fiber_resume_kw(fiber, argc, argv, rb_keyword_given_p());
-}
-
-/*
- * call-seq:
- * fiber.backtrace -> array
- * fiber.backtrace(start) -> array
- * fiber.backtrace(start, count) -> array
- * fiber.backtrace(start..end) -> array
- *
- * Returns the current execution stack of the fiber. +start+, +count+ and +end+ allow
- * to select only parts of the backtrace.
- *
- * def level3
- * Fiber.yield
- * end
- *
- * def level2
- * level3
- * end
- *
- * def level1
- * level2
- * end
- *
- * f = Fiber.new { level1 }
- *
- * # It is empty before the fiber started
- * f.backtrace
- * #=> []
- *
- * f.resume
- *
- * f.backtrace
- * #=> ["test.rb:2:in `yield'", "test.rb:2:in `level3'", "test.rb:6:in `level2'", "test.rb:10:in `level1'", "test.rb:13:in `block in <main>'"]
- * p f.backtrace(1) # start from the item 1
- * #=> ["test.rb:2:in `level3'", "test.rb:6:in `level2'", "test.rb:10:in `level1'", "test.rb:13:in `block in <main>'"]
- * p f.backtrace(2, 2) # start from item 2, take 2
- * #=> ["test.rb:6:in `level2'", "test.rb:10:in `level1'"]
- * p f.backtrace(1..3) # take items from 1 to 3
- * #=> ["test.rb:2:in `level3'", "test.rb:6:in `level2'", "test.rb:10:in `level1'"]
- *
- * f.resume
- *
- * # It is nil after the fiber is finished
- * f.backtrace
- * #=> nil
- *
- */
-static VALUE
-rb_fiber_backtrace(int argc, VALUE *argv, VALUE fiber)
-{
- return rb_vm_backtrace(argc, argv, &fiber_ptr(fiber)->cont.saved_ec);
-}
-
-/*
- * call-seq:
- * fiber.backtrace_locations -> array
- * fiber.backtrace_locations(start) -> array
- * fiber.backtrace_locations(start, count) -> array
- * fiber.backtrace_locations(start..end) -> array
- *
- * Like #backtrace, but returns each line of the execution stack as a
- * Thread::Backtrace::Location. Accepts the same arguments as #backtrace.
- *
- * f = Fiber.new { Fiber.yield }
- * f.resume
- * loc = f.backtrace_locations.first
- * loc.label #=> "yield"
- * loc.path #=> "test.rb"
- * loc.lineno #=> 1
- *
- *
- */
-static VALUE
-rb_fiber_backtrace_locations(int argc, VALUE *argv, VALUE fiber)
-{
- return rb_vm_backtrace_locations(argc, argv, &fiber_ptr(fiber)->cont.saved_ec);
+ return rb_fiber_resume(fib, argc, argv);
}
/*
@@ -3057,105 +1827,51 @@ rb_fiber_backtrace_locations(int argc, VALUE *argv, VALUE fiber)
* Transfer control to another fiber, resuming it from where it last
* stopped or starting it if it was not resumed before. The calling
* fiber will be suspended much like in a call to
- * Fiber.yield.
+ * <code>Fiber.yield</code>. You need to <code>require 'fiber'</code>
+ * before using this method.
*
- * The fiber which receives the transfer call treats it much like
+ * The fiber which receives the transfer call is treats it much like
* a resume call. Arguments passed to transfer are treated like those
* passed to resume.
*
- * The two style of control passing to and from fiber (one is #resume and
- * Fiber::yield, another is #transfer to and from fiber) can't be freely
- * mixed.
- *
- * * If the Fiber's lifecycle had started with transfer, it will never
- * be able to yield or be resumed control passing, only
- * finish or transfer back. (It still can resume other fibers that
- * are allowed to be resumed.)
- * * If the Fiber's lifecycle had started with resume, it can yield
- * or transfer to another Fiber, but can receive control back only
- * the way compatible with the way it was given away: if it had
- * transferred, it only can be transferred back, and if it had
- * yielded, it only can be resumed back. After that, it again can
- * transfer or yield.
- *
- * If those rules are broken FiberError is raised.
- *
- * For an individual Fiber design, yield/resume is easier to use
- * (the Fiber just gives away control, it doesn't need to think
- * about who the control is given to), while transfer is more flexible
- * for complex cases, allowing to build arbitrary graphs of Fibers
- * dependent on each other.
- *
+ * You cannot resume a fiber that transferred control to another one.
+ * This will cause a double resume error. You need to transfer control
+ * back to this fiber before it can yield and resume.
*
* Example:
*
- * manager = nil # For local var to be visible inside worker block
+ * fiber1 = Fiber.new do
+ * puts "In Fiber 1"
+ * Fiber.yield
+ * end
*
- * # This fiber would be started with transfer
- * # It can't yield, and can't be resumed
- * worker = Fiber.new { |work|
- * puts "Worker: starts"
- * puts "Worker: Performed #{work.inspect}, transferring back"
- * # Fiber.yield # this would raise FiberError: attempt to yield on a not resumed fiber
- * # manager.resume # this would raise FiberError: attempt to resume a resumed fiber (double resume)
- * manager.transfer(work.capitalize)
- * }
+ * fiber2 = Fiber.new do
+ * puts "In Fiber 2"
+ * fiber1.transfer
+ * puts "Never see this message"
+ * end
*
- * # This fiber would be started with resume
- * # It can yield or transfer, and can be transferred
- * # back or resumed
- * manager = Fiber.new {
- * puts "Manager: starts"
- * puts "Manager: transferring 'something' to worker"
- * result = worker.transfer('something')
- * puts "Manager: worker returned #{result.inspect}"
- * # worker.resume # this would raise FiberError: attempt to resume a transferring fiber
- * Fiber.yield # this is OK, the fiber transferred from and to, now it can yield
- * puts "Manager: finished"
- * }
+ * fiber3 = Fiber.new do
+ * puts "In Fiber 3"
+ * end
*
- * puts "Starting the manager"
- * manager.resume
- * puts "Resuming the manager"
- * # manager.transfer # this would raise FiberError: attempt to transfer to a yielding fiber
- * manager.resume
+ * fiber2.resume
+ * fiber3.resume
*
* <em>produces</em>
*
- * Starting the manager
- * Manager: starts
- * Manager: transferring 'something' to worker
- * Worker: starts
- * Worker: Performed "something", transferring back
- * Manager: worker returned "Something"
- * Resuming the manager
- * Manager: finished
+ * In fiber 2
+ * In fiber 1
+ * In fiber 3
*
*/
static VALUE
-rb_fiber_m_transfer(int argc, VALUE *argv, VALUE self)
+rb_fiber_m_transfer(int argc, VALUE *argv, VALUE fibval)
{
- return rb_fiber_transfer_kw(self, argc, argv, rb_keyword_given_p());
-}
-
-static VALUE
-fiber_transfer_kw(rb_fiber_t *fiber, int argc, const VALUE *argv, int kw_splat)
-{
- if (fiber->resuming_fiber) {
- rb_raise(rb_eFiberError, "attempt to transfer to a resuming fiber");
- }
-
- if (fiber->yielding) {
- rb_raise(rb_eFiberError, "attempt to transfer to a yielding fiber");
- }
-
- return fiber_switch(fiber, argc, argv, kw_splat, NULL, false);
-}
-
-VALUE
-rb_fiber_transfer_kw(VALUE self, int argc, const VALUE *argv, int kw_splat)
-{
- return fiber_transfer_kw(fiber_ptr(self), argc, argv, kw_splat);
+ rb_fiber_t *fib;
+ GetFiberPtr(fibval, fib);
+ fib->transferred = 1;
+ return fiber_switch(fib, argc, argv, 0);
}
/*
@@ -3164,101 +1880,56 @@ rb_fiber_transfer_kw(VALUE self, int argc, const VALUE *argv, int kw_splat)
*
* Yields control back to the context that resumed the fiber, passing
* along any arguments that were passed to it. The fiber will resume
- * processing at this point when #resume is called next.
- * Any arguments passed to the next #resume will be the value that
- * this Fiber.yield expression evaluates to.
+ * processing at this point when <code>resume</code> is called next.
+ * Any arguments passed to the next <code>resume</code> will be the
+ * value that this <code>Fiber.yield</code> expression evaluates to.
*/
static VALUE
rb_fiber_s_yield(int argc, VALUE *argv, VALUE klass)
{
- return rb_fiber_yield_kw(argc, argv, rb_keyword_given_p());
-}
-
-static VALUE
-fiber_raise(rb_fiber_t *fiber, int argc, const VALUE *argv)
-{
- VALUE exception = rb_make_exception(argc, argv);
-
- if (fiber->resuming_fiber) {
- rb_raise(rb_eFiberError, "attempt to raise a resuming fiber");
- }
- else if (FIBER_SUSPENDED_P(fiber) && !fiber->yielding) {
- return fiber_transfer_kw(fiber, -1, &exception, RB_NO_KEYWORDS);
- }
- else {
- return fiber_resume_kw(fiber, -1, &exception, RB_NO_KEYWORDS);
- }
-}
-
-VALUE
-rb_fiber_raise(VALUE fiber, int argc, const VALUE *argv)
-{
- return fiber_raise(fiber_ptr(fiber), argc, argv);
+ return rb_fiber_yield(argc, argv);
}
/*
* call-seq:
- * fiber.raise -> obj
- * fiber.raise(string) -> obj
- * fiber.raise(exception [, string [, array]]) -> obj
+ * Fiber.current() -> fiber
*
- * Raises an exception in the fiber at the point at which the last
- * +Fiber.yield+ was called. If the fiber has not been started or has
- * already run to completion, raises +FiberError+. If the fiber is
- * yielding, it is resumed. If it is transferring, it is transferred into.
- * But if it is resuming, raises +FiberError+.
- *
- * With no arguments, raises a +RuntimeError+. With a single +String+
- * argument, raises a +RuntimeError+ with the string as a message. Otherwise,
- * the first parameter should be the name of an +Exception+ class (or an
- * object that returns an +Exception+ object when sent an +exception+
- * message). The optional second parameter sets the message associated with
- * the exception, and the third parameter is an array of callback information.
- * Exceptions are caught by the +rescue+ clause of <code>begin...end</code>
- * blocks.
+ * Returns the current fiber. You need to <code>require 'fiber'</code>
+ * before using this method. If you are not running in the context of
+ * a fiber this method will return the root fiber.
*/
static VALUE
-rb_fiber_m_raise(int argc, VALUE *argv, VALUE self)
+rb_fiber_s_current(VALUE klass)
{
- return rb_fiber_raise(self, argc, argv);
+ return rb_fiber_current();
}
/*
- * call-seq:
- * Fiber.current -> fiber
+ * call-seq:
+ * fiber.to_s -> string
+ *
+ * Returns fiber information string.
*
- * Returns the current fiber. If you are not running in the context of
- * a fiber this method will return the root fiber.
*/
-static VALUE
-rb_fiber_s_current(VALUE klass)
-{
- return rb_fiber_current();
-}
static VALUE
-fiber_to_s(VALUE fiber_value)
+fiber_to_s(VALUE fibval)
{
- const rb_fiber_t *fiber = fiber_ptr(fiber_value);
+ const rb_fiber_t *fib;
const rb_proc_t *proc;
- char status_info[0x20];
+ char status_info[0x10];
- if (fiber->resuming_fiber) {
- snprintf(status_info, 0x20, " (%s by resuming)", fiber_status_name(fiber->status));
+ GetFiberPtr(fibval, fib);
+ snprintf(status_info, 0x10, " (%s)", fiber_status_name(fib->status));
+ if (!rb_obj_is_proc(fib->first_proc)) {
+ VALUE str = rb_any_to_s(fibval);
+ strlcat(status_info, ">", sizeof(status_info));
+ rb_str_set_len(str, RSTRING_LEN(str)-1);
+ rb_str_cat_cstr(str, status_info);
+ return str;
}
- else {
- snprintf(status_info, 0x20, " (%s)", fiber_status_name(fiber->status));
- }
-
- if (!rb_obj_is_proc(fiber->first_proc)) {
- VALUE str = rb_any_to_s(fiber_value);
- strlcat(status_info, ">", sizeof(status_info));
- rb_str_set_len(str, RSTRING_LEN(str)-1);
- rb_str_cat_cstr(str, status_info);
- return str;
- }
- GetProcPtr(fiber->first_proc, proc);
- return rb_block_to_s(fiber_value, &proc->block, status_info);
+ GetProcPtr(fib->first_proc, proc);
+ return rb_block_to_s(fibval, &proc->block, status_info);
}
#ifdef HAVE_WORKING_FORK
@@ -3268,80 +1939,13 @@ rb_fiber_atfork(rb_thread_t *th)
if (th->root_fiber) {
if (&th->root_fiber->cont.saved_ec != th->ec) {
th->root_fiber = th->ec->fiber_ptr;
+ th->root_fiber->cont.type = ROOT_FIBER_CONTEXT;
}
th->root_fiber->prev = 0;
}
}
#endif
-#ifdef RB_EXPERIMENTAL_FIBER_POOL
-static void
-fiber_pool_free(void *ptr)
-{
- struct fiber_pool * fiber_pool = ptr;
- RUBY_FREE_ENTER("fiber_pool");
-
- fiber_pool_allocation_free(fiber_pool->allocations);
- ruby_xfree(fiber_pool);
-
- RUBY_FREE_LEAVE("fiber_pool");
-}
-
-static size_t
-fiber_pool_memsize(const void *ptr)
-{
- const struct fiber_pool * fiber_pool = ptr;
- size_t size = sizeof(*fiber_pool);
-
- size += fiber_pool->count * fiber_pool->size;
-
- return size;
-}
-
-static const rb_data_type_t FiberPoolDataType = {
- "fiber_pool",
- {NULL, fiber_pool_free, fiber_pool_memsize,},
- 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
-};
-
-static VALUE
-fiber_pool_alloc(VALUE klass)
-{
- struct fiber_pool *fiber_pool;
-
- return TypedData_Make_Struct(klass, struct fiber_pool, &FiberPoolDataType, fiber_pool);
-}
-
-static VALUE
-rb_fiber_pool_initialize(int argc, VALUE* argv, VALUE self)
-{
- rb_thread_t *th = GET_THREAD();
- VALUE size = Qnil, count = Qnil, vm_stack_size = Qnil;
- struct fiber_pool * fiber_pool = NULL;
-
- // Maybe these should be keyword arguments.
- rb_scan_args(argc, argv, "03", &size, &count, &vm_stack_size);
-
- if (NIL_P(size)) {
- size = SIZET2NUM(th->vm->default_params.fiber_machine_stack_size);
- }
-
- if (NIL_P(count)) {
- count = INT2NUM(128);
- }
-
- if (NIL_P(vm_stack_size)) {
- vm_stack_size = SIZET2NUM(th->vm->default_params.fiber_vm_stack_size);
- }
-
- TypedData_Get_Struct(self, struct fiber_pool, &FiberPoolDataType, fiber_pool);
-
- fiber_pool_initialize(fiber_pool, NUM2SIZET(size), NUM2SIZET(count), NUM2SIZET(vm_stack_size));
-
- return self;
-}
-#endif
-
/*
* Document-class: FiberError
*
@@ -3358,10 +1962,8 @@ rb_fiber_pool_initialize(int argc, VALUE* argv, VALUE self)
void
Init_Cont(void)
{
+#if FIBER_USE_NATIVE
rb_thread_t *th = GET_THREAD();
- size_t vm_stack_size = th->vm->default_params.fiber_vm_stack_size;
- size_t machine_stack_size = th->vm->default_params.fiber_machine_stack_size;
- size_t stack_size = machine_stack_size + vm_stack_size;
#ifdef _WIN32
SYSTEM_INFO info;
@@ -3371,54 +1973,16 @@ Init_Cont(void)
pagesize = sysconf(_SC_PAGESIZE);
#endif
SET_MACHINE_STACK_END(&th->ec->machine.stack_end);
-
- fiber_pool_initialize(&shared_fiber_pool, stack_size, FIBER_POOL_INITIAL_SIZE, vm_stack_size);
-
- fiber_initialize_keywords[0] = rb_intern_const("blocking");
- fiber_initialize_keywords[1] = rb_intern_const("pool");
- fiber_initialize_keywords[2] = rb_intern_const("storage");
-
- const char *fiber_shared_fiber_pool_free_stacks = getenv("RUBY_SHARED_FIBER_POOL_FREE_STACKS");
- if (fiber_shared_fiber_pool_free_stacks) {
- shared_fiber_pool.free_stacks = atoi(fiber_shared_fiber_pool_free_stacks);
- }
+#endif
rb_cFiber = rb_define_class("Fiber", rb_cObject);
rb_define_alloc_func(rb_cFiber, fiber_alloc);
rb_eFiberError = rb_define_class("FiberError", rb_eStandardError);
rb_define_singleton_method(rb_cFiber, "yield", rb_fiber_s_yield, -1);
- rb_define_singleton_method(rb_cFiber, "current", rb_fiber_s_current, 0);
- rb_define_singleton_method(rb_cFiber, "blocking", rb_fiber_blocking, 0);
- rb_define_singleton_method(rb_cFiber, "[]", rb_fiber_storage_aref, 1);
- rb_define_singleton_method(rb_cFiber, "[]=", rb_fiber_storage_aset, 2);
-
- rb_define_method(rb_cFiber, "initialize", rb_fiber_initialize, -1);
- rb_define_method(rb_cFiber, "blocking?", rb_fiber_blocking_p, 0);
- rb_define_method(rb_cFiber, "storage", rb_fiber_storage_get, 0);
- rb_define_method(rb_cFiber, "storage=", rb_fiber_storage_set, 1);
+ rb_define_method(rb_cFiber, "initialize", rb_fiber_init, 0);
rb_define_method(rb_cFiber, "resume", rb_fiber_m_resume, -1);
- rb_define_method(rb_cFiber, "raise", rb_fiber_m_raise, -1);
- rb_define_method(rb_cFiber, "backtrace", rb_fiber_backtrace, -1);
- rb_define_method(rb_cFiber, "backtrace_locations", rb_fiber_backtrace_locations, -1);
rb_define_method(rb_cFiber, "to_s", fiber_to_s, 0);
rb_define_alias(rb_cFiber, "inspect", "to_s");
- rb_define_method(rb_cFiber, "transfer", rb_fiber_m_transfer, -1);
- rb_define_method(rb_cFiber, "alive?", rb_fiber_alive_p, 0);
-
- rb_define_singleton_method(rb_cFiber, "blocking?", rb_fiber_s_blocking_p, 0);
- rb_define_singleton_method(rb_cFiber, "scheduler", rb_fiber_s_scheduler, 0);
- rb_define_singleton_method(rb_cFiber, "set_scheduler", rb_fiber_set_scheduler, 1);
- rb_define_singleton_method(rb_cFiber, "current_scheduler", rb_fiber_current_scheduler, 0);
-
- rb_define_singleton_method(rb_cFiber, "schedule", rb_fiber_s_schedule, -1);
-
-#ifdef RB_EXPERIMENTAL_FIBER_POOL
- rb_cFiberPool = rb_define_class_under(rb_cFiber, "Pool", rb_cObject);
- rb_define_alloc_func(rb_cFiberPool, fiber_pool_alloc);
- rb_define_method(rb_cFiberPool, "initialize", rb_fiber_pool_initialize, -1);
-#endif
-
- rb_provide("fiber.so");
}
RUBY_SYMBOL_EXPORT_BEGIN
@@ -3434,4 +1998,12 @@ ruby_Init_Continuation_body(void)
rb_define_global_function("callcc", rb_callcc, 0);
}
+void
+ruby_Init_Fiber_as_Coroutine(void)
+{
+ rb_define_method(rb_cFiber, "transfer", rb_fiber_m_transfer, -1);
+ rb_define_method(rb_cFiber, "alive?", rb_fiber_alive_p, 0);
+ rb_define_singleton_method(rb_cFiber, "current", rb_fiber_s_current, 0);
+}
+
RUBY_SYMBOL_EXPORT_END
diff --git a/coroutine/amd64/Context.S b/coroutine/amd64/Context.S
deleted file mode 100644
index d50732adbc..0000000000
--- a/coroutine/amd64/Context.S
+++ /dev/null
@@ -1,46 +0,0 @@
-##
-## This file is part of the "Coroutine" project and released under the MIT License.
-##
-## Created by Samuel Williams on 10/5/2018.
-## Copyright, 2018, by Samuel Williams.
-##
-
-#define TOKEN_PASTE(x,y) x##y
-#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
-
-.text
-
-.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
-PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
-
- # Save caller state
- pushq %rbp
- pushq %rbx
- pushq %r12
- pushq %r13
- pushq %r14
- pushq %r15
-
- # Save caller stack pointer
- movq %rsp, (%rdi)
-
- # Restore callee stack pointer
- movq (%rsi), %rsp
-
- # Restore callee state
- popq %r15
- popq %r14
- popq %r13
- popq %r12
- popq %rbx
- popq %rbp
-
- # Put the first argument into the return value
- movq %rdi, %rax
-
- # We pop the return address and jump to it
- ret
-
-#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
diff --git a/coroutine/amd64/Context.h b/coroutine/amd64/Context.h
deleted file mode 100644
index 44daa4e01a..0000000000
--- a/coroutine/amd64/Context.h
+++ /dev/null
@@ -1,85 +0,0 @@
-#ifndef COROUTINE_AMD64_CONTEXT_H
-#define COROUTINE_AMD64_CONTEXT_H 1
-
-/*
- * This file is part of the "Coroutine" project and released under the MIT License.
- *
- * Created by Samuel Williams on 10/5/2018.
- * Copyright, 2018, by Samuel Williams.
-*/
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __attribute__((noreturn)) void
-
-enum {COROUTINE_REGISTERS = 6};
-
-#if defined(__SANITIZE_ADDRESS__)
- #define COROUTINE_SANITIZE_ADDRESS
-#elif defined(__has_feature)
- #if __has_feature(address_sanitizer)
- #define COROUTINE_SANITIZE_ADDRESS
- #endif
-#endif
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
-#include <sanitizer/common_interface_defs.h>
-#include <sanitizer/asan_interface.h>
-#endif
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
- void *fake_stack;
- void *stack_base;
- size_t stack_size;
-#endif
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
- context->fake_stack = NULL;
- context->stack_base = stack;
- context->stack_size = size;
-#endif
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- *--context->stack_pointer = NULL;
- *--context->stack_pointer = (void*)start;
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
- context->stack_pointer = NULL;
-}
-
-#endif /* COROUTINE_AMD64_CONTEXT_H */
diff --git a/coroutine/arm32/Context.S b/coroutine/arm32/Context.S
deleted file mode 100644
index 1850c4c408..0000000000
--- a/coroutine/arm32/Context.S
+++ /dev/null
@@ -1,33 +0,0 @@
-##
-## This file is part of the "Coroutine" project and released under the MIT License.
-##
-## Created by Samuel Williams on 10/5/2018.
-## Copyright, 2018, by Samuel Williams.
-##
-
-#define TOKEN_PASTE(x,y) x##y
-#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
-
-.file "Context.S"
-.text
-.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
-.align 2
-.type PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer),%function
-.syntax unified
-
-PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
- # Save caller state (8 registers + return address)
- push {r4-r11,lr}
-
- # Save caller stack pointer
- str sp, [r0]
-
- # Restore callee stack pointer
- ldr sp, [r1]
-
- # Restore callee state (8 registers program counter)
- pop {r4-r11,pc}
-
-#if defined(__linux__) && defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
diff --git a/coroutine/arm32/Context.h b/coroutine/arm32/Context.h
deleted file mode 100644
index 09410eb25d..0000000000
--- a/coroutine/arm32/Context.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef COROUTINE_ARM32_CONTEXT_H
-#define COROUTINE_ARM32_CONTEXT_H 1
-
-/*
- * This file is part of the "Coroutine" project and released under the MIT License.
- *
- * Created by Samuel Williams on 10/5/2018.
- * Copyright, 2018, by Samuel Williams.
-*/
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __attribute__((noreturn)) void
-#define COROUTINE_LIMITED_ADDRESS_SPACE
-
-enum {COROUTINE_REGISTERS = 8};
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- *--context->stack_pointer = (void*)start;
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
-}
-
-#endif /* COROUTINE_ARM32_CONTEXT_H */
diff --git a/coroutine/arm64/Context.S b/coroutine/arm64/Context.S
deleted file mode 100644
index 07d50d30df..0000000000
--- a/coroutine/arm64/Context.S
+++ /dev/null
@@ -1,73 +0,0 @@
-##
-## This file is part of the "Coroutine" project and released under the MIT License.
-##
-## Created by Samuel Williams on 10/5/2018.
-## Copyright, 2018, by Samuel Williams.
-##
-
-#define TOKEN_PASTE(x,y) x##y
-#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
-
-#if defined(__APPLE__)
-#define x29 fp
-#define x30 lr
-.text
-.p2align 2
-#else
-.text
-.align 2
-#endif
-
-.global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
-PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
-
- # Make space on the stack for caller registers
- sub sp, sp, 0xb0
-
- # Save caller registers
- stp d8, d9, [sp, 0x00]
- stp d10, d11, [sp, 0x10]
- stp d12, d13, [sp, 0x20]
- stp d14, d15, [sp, 0x30]
- stp x19, x20, [sp, 0x40]
- stp x21, x22, [sp, 0x50]
- stp x23, x24, [sp, 0x60]
- stp x25, x26, [sp, 0x70]
- stp x27, x28, [sp, 0x80]
- stp x29, x30, [sp, 0x90]
-
- # Save return address
- str x30, [sp, 0xa0]
-
- # Save stack pointer to x0 (first argument)
- mov x2, sp
- str x2, [x0, 0]
-
- # Load stack pointer from x1 (second argument)
- ldr x3, [x1, 0]
- mov sp, x3
-
- # Restore caller registers
- ldp d8, d9, [sp, 0x00]
- ldp d10, d11, [sp, 0x10]
- ldp d12, d13, [sp, 0x20]
- ldp d14, d15, [sp, 0x30]
- ldp x19, x20, [sp, 0x40]
- ldp x21, x22, [sp, 0x50]
- ldp x23, x24, [sp, 0x60]
- ldp x25, x26, [sp, 0x70]
- ldp x27, x28, [sp, 0x80]
- ldp x29, x30, [sp, 0x90]
-
- # Load return address into x4
- ldr x4, [sp, 0xa0]
-
- # Pop stack frame
- add sp, sp, 0xb0
-
- # Jump to return address (in x4)
- ret x4
-
-#if defined(__linux__) && defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
diff --git a/coroutine/arm64/Context.h b/coroutine/arm64/Context.h
deleted file mode 100644
index 1472621f48..0000000000
--- a/coroutine/arm64/Context.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#ifndef COROUTINE_ARM64_CONTEXT_H
-#define COROUTINE_ARM64_CONTEXT_H 1
-
-/*
- * This file is part of the "Coroutine" project and released under the MIT License.
- *
- * Created by Samuel Williams on 10/5/2018.
- * Copyright, 2018, by Samuel Williams.
-*/
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __attribute__((noreturn)) void
-
-enum {COROUTINE_REGISTERS = 0xb0 / 8};
-
-#if defined(__SANITIZE_ADDRESS__)
- #define COROUTINE_SANITIZE_ADDRESS
-#elif defined(__has_feature)
- #if __has_feature(address_sanitizer)
- #define COROUTINE_SANITIZE_ADDRESS
- #endif
-#endif
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
-#include <sanitizer/common_interface_defs.h>
-#include <sanitizer/asan_interface.h>
-#endif
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
- void *fake_stack;
- void *stack_base;
- size_t stack_size;
-#endif
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
-#if defined(COROUTINE_SANITIZE_ADDRESS)
- context->fake_stack = NULL;
- context->stack_base = stack;
- context->stack_size = size;
-#endif
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
-
- context->stack_pointer[0xa0 / 8] = (void*)start;
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
-}
-
-#endif /* COROUTINE_ARM64_CONTEXT_H */
diff --git a/coroutine/asyncify/Context.c b/coroutine/asyncify/Context.c
deleted file mode 100644
index 303e5f4429..0000000000
--- a/coroutine/asyncify/Context.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "Context.h"
-
-void coroutine_trampoline(void * _start, void * _context)
-{
- coroutine_start start = (coroutine_start)_start;
- struct coroutine_context * context = _context;
- rb_wasm_set_stack_pointer(context->current_sp);
-
- start(context->from, context);
-}
diff --git a/coroutine/asyncify/Context.h b/coroutine/asyncify/Context.h
deleted file mode 100644
index 7dba829a1d..0000000000
--- a/coroutine/asyncify/Context.h
+++ /dev/null
@@ -1,89 +0,0 @@
-#ifndef COROUTINE_ASYNCIFY_CONTEXT_H
-#define COROUTINE_ASYNCIFY_CONTEXT_H
-
-/*
- This is a coroutine implementation based on Binaryen's Asyncify transformation for WebAssembly.
-
- This implementation is built on low-level ucontext-like API in wasm/fiber.c
- This file is an adapter for the common coroutine interface and for stack manipulation.
- wasm/fiber.c doesn't take care of stack to avoid duplicate management with this adapter.
-
- * See also: wasm/fiber.c
-*/
-
-#include <stddef.h>
-#include <stdio.h>
-#include "wasm/asyncify.h"
-#include "wasm/machine.h"
-#include "wasm/fiber.h"
-
-#define COROUTINE void __attribute__((__noreturn__))
-
-static const int ASYNCIFY_CORO_DEBUG = 0;
-
-struct coroutine_context
-{
- rb_wasm_fiber_context fc;
- void *argument;
- struct coroutine_context *from;
-
- void *current_sp;
- void *stack_base;
- size_t size;
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-COROUTINE coroutine_trampoline(void * _start, void * _context);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context)
-{
- if (ASYNCIFY_CORO_DEBUG) fprintf(stderr, "[%s] entry (context = %p)\n", __func__, context);
- // NULL fiber entry means it's the main fiber, and handled specially.
- rb_wasm_init_context(&context->fc, NULL, NULL, NULL);
- // mark the main fiber has already started
- context->fc.is_started = true;
-}
-
-static inline void coroutine_initialize(struct coroutine_context *context, coroutine_start start, void *stack, size_t size)
-{
- if (ASYNCIFY_CORO_DEBUG) fprintf(stderr, "[%s] entry (context = %p, stack = %p ... %p)\n", __func__, context, stack, (char *)stack + size);
- rb_wasm_init_context(&context->fc, coroutine_trampoline, start, context);
- // record the initial stack pointer position to restore it after resumption
- context->current_sp = (char *)stack + size;
- context->stack_base = stack;
- context->size = size;
-}
-
-static inline struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target)
-{
- if (ASYNCIFY_CORO_DEBUG) fprintf(stderr, "[%s] entry (current = %p, target = %p)\n", __func__, current, target);
- struct coroutine_context * previous = target->from;
-
- target->from = current;
- if (ASYNCIFY_CORO_DEBUG) fprintf(stderr, "[%s] current->current_sp = %p -> %p\n", __func__, current->current_sp, rb_wasm_get_stack_pointer());
- // record the current stack pointer position to restore it after resumption
- current->current_sp = rb_wasm_get_stack_pointer();
-
- // suspend the current coroutine and resume another coroutine
-
- rb_wasm_swapcontext(&current->fc, &target->fc);
-
- // after the original coroutine resumed
-
- rb_wasm_set_stack_pointer(current->current_sp);
-
- target->from = previous;
-
- return target;
-}
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
- if (ASYNCIFY_CORO_DEBUG) fprintf(stderr, "[%s] entry (context = %p)\n", __func__, context);
- context->stack_base = NULL;
- context->size = 0;
- context->from = NULL;
-}
-
-#endif /* COROUTINE_ASYNCIFY_CONTEXT_H */
diff --git a/coroutine/emscripten/Context.c b/coroutine/emscripten/Context.c
deleted file mode 100644
index 75c088daaa..0000000000
--- a/coroutine/emscripten/Context.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Context.h"
-
-void coroutine_trampoline(void * _context)
-{
- struct coroutine_context * context = _context;
-
- context->entry_func(context->from, context);
-}
diff --git a/coroutine/emscripten/Context.h b/coroutine/emscripten/Context.h
deleted file mode 100644
index 361e241685..0000000000
--- a/coroutine/emscripten/Context.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef COROUTINE_EMSCRIPTEN_CONTEXT_H
-#define COROUTINE_EMSCRIPTEN_CONTEXT_H 1
-
-/* An experimental coroutine wrapper for emscripten
- * Contact on Yusuke Endoh if you encounter any problem about this
- */
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <emscripten/fiber.h>
-
-#define COROUTINE __attribute__((noreturn)) void
-
-#if INTPTR_MAX <= INT32_MAX
-#define COROUTINE_LIMITED_ADDRESS_SPACE
-#endif
-
-struct coroutine_context;
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-struct coroutine_context
-{
- emscripten_fiber_t state;
- coroutine_start entry_func;
- struct coroutine_context * from;
- void *argument;
-};
-
-COROUTINE coroutine_trampoline(void * _context);
-
-#define MAIN_ASYNCIFY_STACK_SIZE 65536
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- static char asyncify_stack[MAIN_ASYNCIFY_STACK_SIZE];
- emscripten_fiber_init_from_current_context(&context->state, asyncify_stack, MAIN_ASYNCIFY_STACK_SIZE);
-}
-#undef MAIN_ASYNCIFY_STACK_SIZE
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- uintptr_t addr = (uintptr_t)stack;
- size_t offset = addr & 0xF;
- void *c_stack = (void*)((addr + 0xF) & ~0xF);
- size -= offset;
- size_t c_stack_size = (size / 2) & ~0xF;
- void *asyncify_stack = (void*)((uintptr_t)c_stack + c_stack_size);
- size_t asyncify_stack_size = size - c_stack_size;
- context->entry_func = start;
-
- emscripten_fiber_init(&context->state, coroutine_trampoline, context, c_stack, c_stack_size, asyncify_stack, asyncify_stack_size);
-}
-
-static inline struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target)
-{
- struct coroutine_context * previous = target->from;
-
- target->from = current;
- emscripten_fiber_swap(&current->state, &target->state);
- target->from = previous;
-
- return target;
-}
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
- context->from = NULL;
-}
-
-#endif /* COROUTINE_EMSCRIPTEN_CONTEXT_H */
diff --git a/coroutine/loongarch64/Context.S b/coroutine/loongarch64/Context.S
deleted file mode 100644
index 662f5dfb6c..0000000000
--- a/coroutine/loongarch64/Context.S
+++ /dev/null
@@ -1,73 +0,0 @@
-#define TOKEN_PASTE(x,y) x##y
-#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
-
-.text
-.align 2
-
-.global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
-PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
-
- # Make space on the stack for caller registers
- addi.d $sp, $sp, -0xa0
-
- # Save caller registers
- st.d $s0, $sp, 0x00
- st.d $s1, $sp, 0x08
- st.d $s2, $sp, 0x10
- st.d $s3, $sp, 0x18
- st.d $s4, $sp, 0x20
- st.d $s5, $sp, 0x28
- st.d $s6, $sp, 0x30
- st.d $s7, $sp, 0x38
- st.d $s8, $sp, 0x40
- st.d $fp, $sp, 0x48
- fst.d $fs0, $sp, 0x50
- fst.d $fs1, $sp, 0x58
- fst.d $fs2, $sp, 0x60
- fst.d $fs3, $sp, 0x68
- fst.d $fs4, $sp, 0x70
- fst.d $fs5, $sp, 0x78
- fst.d $fs6, $sp, 0x80
- fst.d $fs7, $sp, 0x88
-
- # Save return address
- st.d $ra, $sp, 0x90
-
- # Save stack pointer to a0 (first argument)
- st.d $sp, $a0, 0x00
-
- # Load stack pointer from a1 (second argument)
- ld.d $sp, $a1, 0x00
-
- # Restore caller registers
- ld.d $s0, $sp, 0x00
- ld.d $s1, $sp, 0x08
- ld.d $s2, $sp, 0x10
- ld.d $s3, $sp, 0x18
- ld.d $s4, $sp, 0x20
- ld.d $s5, $sp, 0x28
- ld.d $s6, $sp, 0x30
- ld.d $s7, $sp, 0x38
- ld.d $s8, $sp, 0x40
- ld.d $fp, $sp, 0x48
- fld.d $fs0, $sp, 0x50
- fld.d $fs1, $sp, 0x58
- fld.d $fs2, $sp, 0x60
- fld.d $fs3, $sp, 0x68
- fld.d $fs4, $sp, 0x70
- fld.d $fs5, $sp, 0x78
- fld.d $fs6, $sp, 0x80
- fld.d $fs7, $sp, 0x88
-
- # Load return address
- ld.d $ra, $sp, 0x90
-
- # Pop stack frame
- addi.d $sp, $sp, 0xa0
-
- # Jump to return address
- jr $ra
-
-#if defined(__linux__) && defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
diff --git a/coroutine/loongarch64/Context.h b/coroutine/loongarch64/Context.h
deleted file mode 100644
index 668c9a965e..0000000000
--- a/coroutine/loongarch64/Context.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __attribute__((noreturn)) void
-
-enum {COROUTINE_REGISTERS = 0xa0 / 8};
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
-
- context->stack_pointer[0x90 / 8] = (void*)start;
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
-}
diff --git a/coroutine/ppc/Context.S b/coroutine/ppc/Context.S
deleted file mode 100644
index cdda93e179..0000000000
--- a/coroutine/ppc/Context.S
+++ /dev/null
@@ -1,90 +0,0 @@
-; Based on the code by Samuel Williams. Created by Sergey Fedorov on 04/06/2022.
-; Credits to Samuel Williams, Rei Odaira and Iain Sandoe. Errors, if any, are mine.
-; Some relevant examples: https://github.com/gcc-mirror/gcc/blob/master/libphobos/libdruntime/config/powerpc/switchcontext.S
-; https://github.com/gcc-mirror/gcc/blob/master/libgcc/config/rs6000/darwin-gpsave.S
-; https://www.ibm.com/docs/en/aix/7.2?topic=epilogs-saving-gprs-only
-; ppc32 version may be re-written compactly with stmw/lwm, but the code wonʼt be faster, see: https://github.com/ruby/ruby/pull/5927#issuecomment-1139730541
-
-; Notice that this code is only for Darwin (macOS). Darwin ABI differs from AIX and ELF.
-; To add support for AIX, *BSD or *Linux, please make separate implementations.
-
-#define TOKEN_PASTE(x,y) x##y
-#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
-
-.machine ppc7400 ; = G4, Rosetta
-.text
-
-.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
-.align 2
-
-PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
- ; Make space on the stack for caller registers
- ; (Should we rather use red zone? See libphobos example.)
- subi r1,r1,80
-
- ; Get LR
- mflr r0
-
- ; Save caller registers
- stw r31,0(r1)
- stw r30,4(r1)
- stw r29,8(r1)
- stw r28,12(r1)
- stw r27,16(r1)
- stw r26,20(r1)
- stw r25,24(r1)
- stw r24,28(r1)
- stw r23,32(r1)
- stw r22,36(r1)
- stw r21,40(r1)
- stw r20,44(r1)
- stw r19,48(r1)
- stw r18,52(r1)
- stw r17,56(r1)
- stw r16,60(r1)
- stw r15,64(r1)
- stw r14,68(r1)
- stw r13,72(r1)
-
- ; Save return address
- ; Possibly should rather be saved into linkage area, see libphobos and IBM docs
- stw r0,76(r1)
-
- ; Save stack pointer to first argument
- stw r1,0(r3)
-
- ; Load stack pointer from second argument
- lwz r1,0(r4)
-
- ; Load return address
- lwz r0,76(r1)
-
- ; Restore caller registers
- lwz r13,72(r1)
- lwz r14,68(r1)
- lwz r15,64(r1)
- lwz r16,60(r1)
- lwz r17,56(r1)
- lwz r18,52(r1)
- lwz r19,48(r1)
- lwz r20,44(r1)
- lwz r21,40(r1)
- lwz r22,36(r1)
- lwz r23,32(r1)
- lwz r24,28(r1)
- lwz r25,24(r1)
- lwz r26,20(r1)
- lwz r27,16(r1)
- lwz r28,12(r1)
- lwz r29,8(r1)
- lwz r30,4(r1)
- lwz r31,0(r1)
-
- ; Set LR
- mtlr r0
-
- ; Pop stack frame
- addi r1,r1,80
-
- ; Jump to return address
- blr
diff --git a/coroutine/ppc/Context.h b/coroutine/ppc/Context.h
deleted file mode 100644
index 1fce112579..0000000000
--- a/coroutine/ppc/Context.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef COROUTINE_PPC_CONTEXT_H
-#define COROUTINE_PPC_CONTEXT_H 1
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __attribute__((noreturn)) void
-#define COROUTINE_LIMITED_ADDRESS_SPACE
-
-enum {
- COROUTINE_REGISTERS =
- 20 /* 19 general purpose registers (r13–r31) and 1 return address */
- + 4 /* space for fiber_entry() to store the link register */
-};
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
-
- /* Skip a global prologue that sets the TOC register */
- context->stack_pointer[19] = ((char*)start) + 8;
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
- context->stack_pointer = NULL;
-}
-
-#endif /* COROUTINE_PPC_CONTEXT_H */
diff --git a/coroutine/ppc64/Context.S b/coroutine/ppc64/Context.S
deleted file mode 100644
index f8561e0e7d..0000000000
--- a/coroutine/ppc64/Context.S
+++ /dev/null
@@ -1,89 +0,0 @@
-; Based on the code by Samuel Williams. Created by Sergey Fedorov on 04/06/2022.
-; Credits to Samuel Williams, Rei Odaira and Iain Sandoe. Errors, if any, are mine.
-; Some relevant examples: https://github.com/gcc-mirror/gcc/blob/master/libphobos/libdruntime/config/powerpc/switchcontext.S
-; https://github.com/gcc-mirror/gcc/blob/master/libgcc/config/rs6000/darwin-gpsave.S
-; https://www.ibm.com/docs/en/aix/7.2?topic=epilogs-saving-gprs-only
-
-; Notice that this code is only for Darwin (macOS). Darwin ABI differs from AIX and ELF.
-; To add support for AIX, *BSD or *Linux, please make separate implementations.
-
-#define TOKEN_PASTE(x,y) x##y
-#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
-
-.machine ppc64 ; = G5
-.text
-
-.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
-.align 2
-
-PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
- ; Make space on the stack for caller registers
- ; (Should we rather use red zone? See libphobos example.)
- subi r1,r1,160
-
- ; Get LR
- mflr r0
-
- ; Save caller registers
- std r31,0(r1)
- std r30,8(r1)
- std r29,16(r1)
- std r28,24(r1)
- std r27,32(r1)
- std r26,40(r1)
- std r25,48(r1)
- std r24,56(r1)
- std r23,64(r1)
- std r22,72(r1)
- std r21,80(r1)
- std r20,88(r1)
- std r19,96(r1)
- std r18,104(r1)
- std r17,112(r1)
- std r16,120(r1)
- std r15,128(r1)
- std r14,136(r1)
- std r13,144(r1)
-
- ; Save return address
- ; Possibly should rather be saved into linkage area, see libphobos and IBM docs
- std r0,152(r1)
-
- ; Save stack pointer to first argument
- std r1,0(r3)
-
- ; Load stack pointer from second argument
- ld r1,0(r4)
-
- ; Load return address
- ld r0,152(r1)
-
- ; Restore caller registers
- ld r13,144(r1)
- ld r14,136(r1)
- ld r15,128(r1)
- ld r16,120(r1)
- ld r17,112(r1)
- ld r18,104(r1)
- ld r19,96(r1)
- ld r20,88(r1)
- ld r21,80(r1)
- ld r22,72(r1)
- ld r23,64(r1)
- ld r24,56(r1)
- ld r25,48(r1)
- ld r26,40(r1)
- ld r27,32(r1)
- ld r28,24(r1)
- ld r29,16(r1)
- ld r30,8(r1)
- ld r31,0(r1)
-
- ; Set LR
- mtlr r0
-
- ; Pop stack frame
- addi r1,r1,160
-
- ; Jump to return address
- blr
diff --git a/coroutine/ppc64/Context.h b/coroutine/ppc64/Context.h
deleted file mode 100644
index 3e6f77f55a..0000000000
--- a/coroutine/ppc64/Context.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef COROUTINE_PPC64_CONTEXT_H
-#define COROUTINE_PPC64_CONTEXT_H 1
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __attribute__((noreturn)) void
-
-enum {
- COROUTINE_REGISTERS =
- 20 /* 19 general purpose registers (r13–r31) and 1 return address */
- + 4 /* space for fiber_entry() to store the link register */
-};
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
-
- /* Skip a global prologue that sets the TOC register */
- context->stack_pointer[19] = ((char*)start) + 8;
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
- context->stack_pointer = NULL;
-}
-
-#endif /* COROUTINE_PPC64_CONTEXT_H */
diff --git a/coroutine/ppc64le/Context.S b/coroutine/ppc64le/Context.S
deleted file mode 100644
index 61be9efcf0..0000000000
--- a/coroutine/ppc64le/Context.S
+++ /dev/null
@@ -1,75 +0,0 @@
-#define TOKEN_PASTE(x,y) x##y
-#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
-
-.text
-.align 2
-
-.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
-.type PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer), @function
-PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
- # Make space on the stack for caller registers
- addi 1,1,-152
-
- # Save caller registers
- std 14,0(1)
- std 15,8(1)
- std 16,16(1)
- std 17,24(1)
- std 18,32(1)
- std 19,40(1)
- std 20,48(1)
- std 21,56(1)
- std 22,64(1)
- std 23,72(1)
- std 24,80(1)
- std 25,88(1)
- std 26,96(1)
- std 27,104(1)
- std 28,112(1)
- std 29,120(1)
- std 30,128(1)
- std 31,136(1)
-
- # Save return address
- mflr 0
- std 0,144(1)
-
- # Save stack pointer to first argument
- std 1,0(3)
-
- # Load stack pointer from second argument
- ld 1,0(4)
-
- # Restore caller registers
- ld 14,0(1)
- ld 15,8(1)
- ld 16,16(1)
- ld 17,24(1)
- ld 18,32(1)
- ld 19,40(1)
- ld 20,48(1)
- ld 21,56(1)
- ld 22,64(1)
- ld 23,72(1)
- ld 24,80(1)
- ld 25,88(1)
- ld 26,96(1)
- ld 27,104(1)
- ld 28,112(1)
- ld 29,120(1)
- ld 30,128(1)
- ld 31,136(1)
-
- # Load return address
- ld 0,144(1)
- mtlr 0
-
- # Pop stack frame
- addi 1,1,152
-
- # Jump to return address
- blr
-
-#if defined(__linux__) && defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
diff --git a/coroutine/ppc64le/Context.h b/coroutine/ppc64le/Context.h
deleted file mode 100644
index fbfaa2ee63..0000000000
--- a/coroutine/ppc64le/Context.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef COROUTINE_PPC64LE_CONTEXT_H
-#define COROUTINE_PPC64LE_CONTEXT_H 1
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __attribute__((noreturn)) void
-
-enum {
- COROUTINE_REGISTERS =
- 19 /* 18 general purpose registers (r14-r31) and 1 return address */
- + 4 /* space for fiber_entry() to store the link register */
-};
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
-
- /* Skip a global prologue that sets the TOC register */
- context->stack_pointer[18] = ((char*)start) + 8;
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
- context->stack_pointer = NULL;
-}
-
-#endif /* COROUTINE_PPC64LE_CONTEXT_H */
diff --git a/coroutine/pthread/Context.c b/coroutine/pthread/Context.c
deleted file mode 100644
index 38774cda0b..0000000000
--- a/coroutine/pthread/Context.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * This file is part of the "Coroutine" project and released under the MIT License.
- *
- * Created by Samuel Williams on 24/6/2021.
- * Copyright, 2021, by Samuel Williams.
-*/
-
-#include "Context.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-
-static const int DEBUG = 0;
-
-static
-int check(const char * message, int result) {
- if (result) {
- switch (result) {
- case EDEADLK:
- if (DEBUG) fprintf(stderr, "deadlock detected result=%d errno=%d\n", result, errno);
- break;
- default:
- if (DEBUG) fprintf(stderr, "error detected result=%d errno=%d\n", result, errno);
- perror(message);
- }
- }
-
- assert(result == 0);
-
- return result;
-}
-
-void coroutine_initialize_main(struct coroutine_context * context) {
- context->id = pthread_self();
-
- check("coroutine_initialize_main:pthread_cond_init",
- pthread_cond_init(&context->schedule, NULL)
- );
-
- context->shared = (struct coroutine_shared*)malloc(sizeof(struct coroutine_shared));
- assert(context->shared);
-
- context->shared->main = context;
- context->shared->count = 1;
-
- if (DEBUG) {
- pthread_mutexattr_t attr;
- pthread_mutexattr_init(&attr);
- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
-
- check("coroutine_initialize_main:pthread_mutex_init",
- pthread_mutex_init(&context->shared->guard, &attr)
- );
- } else {
- check("coroutine_initialize_main:pthread_mutex_init",
- pthread_mutex_init(&context->shared->guard, NULL)
- );
- }
-}
-
-static
-void coroutine_release(struct coroutine_context *context) {
- if (context->shared) {
- size_t count = (context->shared->count -= 1);
-
- if (count == 0) {
- if (DEBUG) fprintf(stderr, "coroutine_release:pthread_mutex_destroy(%p)\n", &context->shared->guard);
- pthread_mutex_destroy(&context->shared->guard);
- free(context->shared);
- }
-
- context->shared = NULL;
-
- if (DEBUG) fprintf(stderr, "coroutine_release:pthread_cond_destroy(%p)\n", &context->schedule);
- pthread_cond_destroy(&context->schedule);
- }
-}
-
-void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- // We will create the thread when we first transfer, but save the details now:
- context->shared = NULL;
- context->start = start;
- context->stack = stack;
- context->size = size;
-}
-
-static
-int is_locked(pthread_mutex_t * mutex) {
- int result = pthread_mutex_trylock(mutex);
-
- // If we could successfully lock the mutex:
- if (result == 0) {
- pthread_mutex_unlock(mutex);
- // We could lock the mutex, so it wasn't locked:
- return 0;
- } else {
- // Otherwise we couldn't lock it because it's already locked:
- return 1;
- }
-}
-
-static
-void coroutine_guard_unlock(void * _context)
-{
- struct coroutine_context * context = _context;
-
- if (DEBUG) fprintf(stderr, "coroutine_guard_unlock:pthread_mutex_unlock\n");
-
- check("coroutine_guard_unlock:pthread_mutex_unlock",
- pthread_mutex_unlock(&context->shared->guard)
- );
-}
-
-static
-void coroutine_wait(struct coroutine_context *context)
-{
- if (DEBUG) fprintf(stderr, "coroutine_wait:pthread_mutex_lock(guard=%p is_locked=%d)\n", &context->shared->guard, is_locked(&context->shared->guard));
- check("coroutine_wait:pthread_mutex_lock",
- pthread_mutex_lock(&context->shared->guard)
- );
-
- if (DEBUG) fprintf(stderr, "coroutine_wait:pthread_mutex_unlock(guard)\n");
- pthread_mutex_unlock(&context->shared->guard);
-}
-
-static
-void coroutine_trampoline_cleanup(void *_context) {
- struct coroutine_context * context = _context;
- coroutine_release(context);
-}
-
-void * coroutine_trampoline(void * _context)
-{
- struct coroutine_context * context = _context;
- assert(context->shared);
-
- pthread_cleanup_push(coroutine_trampoline_cleanup, context);
-
- coroutine_wait(context);
-
- context->start(context->from, context);
-
- pthread_cleanup_pop(1);
-
- return NULL;
-}
-
-static
-int coroutine_create_thread(struct coroutine_context *context)
-{
- int result;
-
- pthread_attr_t attr;
- result = pthread_attr_init(&attr);
- if (result != 0) {
- return result;
- }
-
- result = pthread_attr_setstack(&attr, context->stack, (size_t)context->size);
- if (result != 0) {
- pthread_attr_destroy(&attr);
- return result;
- }
-
- result = pthread_cond_init(&context->schedule, NULL);
- if (result != 0) {
- pthread_attr_destroy(&attr);
- return result;
- }
-
- result = pthread_create(&context->id, &attr, coroutine_trampoline, context);
- if (result != 0) {
- pthread_attr_destroy(&attr);
- if (DEBUG) fprintf(stderr, "coroutine_create_thread:pthread_cond_destroy(%p)\n", &context->schedule);
- pthread_cond_destroy(&context->schedule);
- return result;
- }
-
- context->shared->count += 1;
-
- return result;
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target)
-{
- assert(current->shared);
-
- struct coroutine_context * previous = target->from;
- target->from = current;
-
- if (DEBUG) fprintf(stderr, "coroutine_transfer:pthread_mutex_lock(guard=%p is_locked=%d)\n", &current->shared->guard, is_locked(&current->shared->guard));
- pthread_mutex_lock(&current->shared->guard);
- pthread_cleanup_push(coroutine_guard_unlock, current);
-
- // First transfer:
- if (target->shared == NULL) {
- target->shared = current->shared;
-
- if (DEBUG) fprintf(stderr, "coroutine_transfer:coroutine_create_thread...\n");
- if (coroutine_create_thread(target)) {
- if (DEBUG) fprintf(stderr, "coroutine_transfer:coroutine_create_thread failed\n");
- target->shared = NULL;
- target->from = previous;
- return NULL;
- }
- } else {
- if (DEBUG) fprintf(stderr, "coroutine_transfer:pthread_cond_signal(target)\n");
- pthread_cond_signal(&target->schedule);
- }
-
- // A side effect of acting upon a cancellation request while in a condition wait is that the mutex is (in effect) re-acquired before calling the first cancellation cleanup handler. If cancelled, pthread_cond_wait immediately invokes cleanup handlers.
- if (DEBUG) fprintf(stderr, "coroutine_transfer:pthread_cond_wait(schedule=%p, guard=%p, is_locked=%d)\n", &current->schedule, &current->shared->guard, is_locked(&current->shared->guard));
- check("coroutine_transfer:pthread_cond_wait",
- pthread_cond_wait(&current->schedule, &current->shared->guard)
- );
-
- if (DEBUG) fprintf(stderr, "coroutine_transfer:pthread_cleanup_pop\n");
- pthread_cleanup_pop(1);
-
-#ifdef __FreeBSD__
- // Apparently required for FreeBSD:
- pthread_testcancel();
-#endif
-
- target->from = previous;
-
- return target;
-}
-
-static
-void coroutine_join(struct coroutine_context * context) {
- if (DEBUG) fprintf(stderr, "coroutine_join:pthread_cancel\n");
- int result = pthread_cancel(context->id);
- if (result == -1 && errno == ESRCH) {
- // The thread may be dead due to fork, so it cannot be joined and this doesn't represent a real error:
- return;
- }
-
- check("coroutine_join:pthread_cancel", result);
-
- if (DEBUG) fprintf(stderr, "coroutine_join:pthread_join\n");
- check("coroutine_join:pthread_join",
- pthread_join(context->id, NULL)
- );
-
- if (DEBUG) fprintf(stderr, "coroutine_join:pthread_join done\n");
-}
-
-void coroutine_destroy(struct coroutine_context * context)
-{
- if (DEBUG) fprintf(stderr, "coroutine_destroy\n");
-
- assert(context);
-
- // We are already destroyed or never created:
- if (context->shared == NULL) return;
-
- if (context == context->shared->main) {
- context->shared->main = NULL;
- coroutine_release(context);
- } else {
- coroutine_join(context);
- assert(context->shared == NULL);
- }
-}
diff --git a/coroutine/pthread/Context.h b/coroutine/pthread/Context.h
deleted file mode 100644
index 6d551ee9df..0000000000
--- a/coroutine/pthread/Context.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * This file is part of the "Coroutine" project and released under the MIT License.
- *
- * Created by Samuel Williams on 24/6/2021.
- * Copyright, 2021, by Samuel Williams.
-*/
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <pthread.h>
-
-#define COROUTINE void
-
-#define COROUTINE_PTHREAD_CONTEXT
-
-#ifdef HAVE_STDINT_H
-#include <stdint.h>
-#if INTPTR_MAX <= INT32_MAX
-#define COROUTINE_LIMITED_ADDRESS_SPACE
-#endif
-#endif
-
-struct coroutine_context;
-
-struct coroutine_shared
-{
- pthread_mutex_t guard;
- struct coroutine_context * main;
-
- size_t count;
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-struct coroutine_context
-{
- struct coroutine_shared * shared;
-
- coroutine_start start;
- void *argument;
-
- void *stack;
- size_t size;
-
- pthread_t id;
- pthread_cond_t schedule;
- struct coroutine_context * from;
-};
-
-void coroutine_initialize_main(struct coroutine_context * context);
-
-void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-);
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-void coroutine_destroy(struct coroutine_context * context);
diff --git a/coroutine/riscv64/Context.S b/coroutine/riscv64/Context.S
deleted file mode 100644
index cc4e872f84..0000000000
--- a/coroutine/riscv64/Context.S
+++ /dev/null
@@ -1,87 +0,0 @@
-#define TOKEN_PASTE(x,y) x##y
-#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
-
-.text
-.align 2
-
-.global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
-PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
-
- # Make space on the stack for caller registers
- addi sp, sp, -0xd0
-
- # Save caller registers
- sd s0, 0x00(sp)
- sd s1, 0x08(sp)
- sd s2, 0x10(sp)
- sd s3, 0x18(sp)
- sd s4, 0x20(sp)
- sd s5, 0x28(sp)
- sd s6, 0x30(sp)
- sd s7, 0x38(sp)
- sd s8, 0x40(sp)
- sd s9, 0x48(sp)
- sd s10, 0x50(sp)
- sd s11, 0x58(sp)
- fsd fs0, 0x60(sp)
- fsd fs1, 0x68(sp)
- fsd fs2, 0x70(sp)
- fsd fs3, 0x78(sp)
- fsd fs4, 0x80(sp)
- fsd fs5, 0x88(sp)
- fsd fs6, 0x90(sp)
- fsd fs7, 0x98(sp)
- fsd fs8, 0xa0(sp)
- fsd fs9, 0xa8(sp)
- fsd fs10, 0xb0(sp)
- fsd fs11, 0xb8(sp)
-
- # Save return address
- sd ra, 0xc0(sp)
-
- # Save stack pointer to a0 (first argument)
- mv a2, sp
- sd a2, (a0)
-
- # Load stack pointer from a1 (second argument)
- ld a3, (a1)
- mv sp, a3
-
- # Restore caller registers
- ld s0, 0x00(sp)
- ld s1, 0x08(sp)
- ld s2, 0x10(sp)
- ld s3, 0x18(sp)
- ld s4, 0x20(sp)
- ld s5, 0x28(sp)
- ld s6, 0x30(sp)
- ld s7, 0x38(sp)
- ld s8, 0x40(sp)
- ld s9, 0x48(sp)
- ld s10, 0x50(sp)
- ld s11, 0x58(sp)
- fld fs0, 0x60(sp)
- fld fs1, 0x68(sp)
- fld fs2, 0x70(sp)
- fld fs3, 0x78(sp)
- fld fs4, 0x80(sp)
- fld fs5, 0x88(sp)
- fld fs6, 0x90(sp)
- fld fs7, 0x98(sp)
- fld fs8, 0xa0(sp)
- fld fs9, 0xa8(sp)
- fld fs10, 0xb0(sp)
- fld fs11, 0xb8(sp)
-
- # Load return address
- ld ra, 0xc0(sp)
-
- # Pop stack frame
- addi sp, sp, 0xd0
-
- # Jump to return address
- ret
-
-#if defined(__linux__) && defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
diff --git a/coroutine/riscv64/Context.h b/coroutine/riscv64/Context.h
deleted file mode 100644
index 9ce1140e0b..0000000000
--- a/coroutine/riscv64/Context.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __attribute__((noreturn)) void
-
-enum {COROUTINE_REGISTERS = 0xd0 / 8};
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
-
- context->stack_pointer[0xc0 / 8] = (void*)start;
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
-}
diff --git a/coroutine/ucontext/Context.c b/coroutine/ucontext/Context.c
deleted file mode 100644
index 5d728d554d..0000000000
--- a/coroutine/ucontext/Context.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * This file is part of the "Coroutine" project and released under the MIT License.
- *
- * Created by Samuel Williams on 24/6/2019.
- * Copyright, 2019, by Samuel Williams.
-*/
-
-/* According to Solaris' ucontext.h, makecontext, etc. are removed in SUSv4.
- * To enable the prototype declarations, we need to define __EXTENSIONS__.
- */
-#if defined(__sun) && !defined(__EXTENSIONS__)
-#define __EXTENSIONS__
-#endif
-
-#include "Context.h"
-
-void coroutine_trampoline(void * _start, void * _context)
-{
- coroutine_start start = (coroutine_start)_start;
- struct coroutine_context * context = _context;
-
- start(context->from, context);
-}
diff --git a/coroutine/ucontext/Context.h b/coroutine/ucontext/Context.h
deleted file mode 100644
index d338d8de60..0000000000
--- a/coroutine/ucontext/Context.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef COROUTINE_UCONTEXT_CONTEXT_H
-#define COROUTINE_UCONTEXT_CONTEXT_H 1
-
-/*
- * This file is part of the "Coroutine" project and released under the MIT License.
- *
- * Created by Samuel Williams on 24/6/2019.
- * Copyright, 2019, by Samuel Williams.
-*/
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <ucontext.h>
-
-#define COROUTINE __attribute__((noreturn)) void
-
-#ifdef HAVE_STDINT_H
-#include <stdint.h>
-#if INTPTR_MAX <= INT32_MAX
-#define COROUTINE_LIMITED_ADDRESS_SPACE
-#endif
-#endif
-
-struct coroutine_context
-{
- ucontext_t state;
- struct coroutine_context * from;
- void *argument;
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-COROUTINE coroutine_trampoline(void * _start, void * _context);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->from = NULL;
- getcontext(&context->state);
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- coroutine_initialize_main(context);
-
- context->state.uc_stack.ss_size = size;
- // Despite what it's called, this is not actually a stack pointer. It points to the address of the stack allocation (the lowest address).
- context->state.uc_stack.ss_sp = (char*)stack;
- context->state.uc_stack.ss_flags = 0;
- context->state.uc_link = NULL;
-
- makecontext(&context->state, (void(*)(void))coroutine_trampoline, 2, (void*)start, (void*)context);
-}
-
-static inline struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target)
-{
- struct coroutine_context * previous = target->from;
-
- target->from = current;
- swapcontext(&current->state, &target->state);
- target->from = previous;
-
- return target;
-}
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
- context->state.uc_stack.ss_sp = NULL;
- context->state.uc_stack.ss_size = 0;
- context->from = NULL;
-}
-
-#endif /* COROUTINE_UCONTEXT_CONTEXT_H */
diff --git a/coroutine/universal/Context.S b/coroutine/universal/Context.S
deleted file mode 100644
index 11c80a7927..0000000000
--- a/coroutine/universal/Context.S
+++ /dev/null
@@ -1,16 +0,0 @@
-#if 0
-#elif defined __x86_64__
-# include "coroutine/amd64/Context.S"
-#elif defined __i386__
-# include "coroutine/x86/Context.S"
-#elif defined __ppc__
-# include "coroutine/ppc/Context.S"
-#elif defined __ppc64__ && defined(WORDS_BIGENDIAN)
-# include "coroutine/ppc64/Context.S"
-#elif defined __ppc64__ && !defined(WORDS_BIGENDIAN)
-# include "coroutine/ppc64le/Context.S"
-#elif defined __arm64__
-# include "coroutine/arm64/Context.S"
-#else
-# error "Unsupported CPU"
-#endif
diff --git a/coroutine/universal/Context.h b/coroutine/universal/Context.h
deleted file mode 100644
index ec4d2f484a..0000000000
--- a/coroutine/universal/Context.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef COROUTINE_UNIVERSAL_CONTEXT_H
-#define COROUTINE_UNIVERSAL_CONTEXT_H 1
-
-#if 0
-#elif defined __x86_64__
-# include "coroutine/amd64/Context.h"
-#elif defined __i386__
-# include "coroutine/x86/Context.h"
-#elif defined __ppc__
-# include "coroutine/ppc/Context.h"
-#elif defined __ppc64__ && defined(WORDS_BIGENDIAN)
-# include "coroutine/ppc64/Context.h"
-#elif defined __ppc64__ && !defined(WORDS_BIGENDIAN)
-# include "coroutine/ppc64le/Context.h"
-#elif defined __arm64__
-# include "coroutine/arm64/Context.h"
-#else
-# error "Unsupported CPU"
-#endif
-
-#endif /* COROUTINE_UNIVERSAL_CONTEXT_H */
diff --git a/coroutine/win32/Context.S b/coroutine/win32/Context.S
deleted file mode 100644
index d14bf435e8..0000000000
--- a/coroutine/win32/Context.S
+++ /dev/null
@@ -1,47 +0,0 @@
-##
-## This file is part of the "Coroutine" project and released under the MIT License.
-##
-## Created by Lars Kanis on 06/06/2019.
-##
-
-.text
-
-# Using fastcall is a big win (and it's the same as how x64 works).
-# In coroutine transfer, the arguments are passed in ecx and edx. We don't need
-# to touch these in order to pass them to the destination coroutine.
-
-.globl @coroutine_transfer@8
-@coroutine_transfer@8:
- # Save the thread information block:
- pushl %fs:0
- pushl %fs:4
- pushl %fs:8
-
- # Save caller registers:
- pushl %ebp
- pushl %ebx
- pushl %edi
- pushl %esi
-
- # Save caller stack pointer:
- movl %esp, (%ecx)
-
- # Restore callee stack pointer:
- movl (%edx), %esp
-
- # Restore callee stack:
- popl %esi
- popl %edi
- popl %ebx
- popl %ebp
-
- # Restore the thread information block:
- popl %fs:8
- popl %fs:4
- popl %fs:0
-
- # Save the first argument as the return value:
- movl %ecx, %eax
-
- # Jump to the address on the stack:
- ret
diff --git a/coroutine/win32/Context.asm b/coroutine/win32/Context.asm
deleted file mode 100644
index f8f431239b..0000000000
--- a/coroutine/win32/Context.asm
+++ /dev/null
@@ -1,55 +0,0 @@
-;;
-;; This file is part of the "Coroutine" project and released under the MIT License.
-;;
-;; Created by Samuel Williams on 10/5/2018.
-;; Copyright, 2018, by Samuel Williams.
-;;
-
-.386
-.model flat
-
-.code
-
-assume fs:nothing
-
-; Using fastcall is a big win (and it's the same has how x64 works).
-; In coroutine transfer, the arguments are passed in ecx and edx. We don't need
-; to touch these in order to pass them to the destination coroutine.
-
-@coroutine_transfer@8 proc
- ; Save the thread information block:
- push fs:[0]
- push fs:[4]
- push fs:[8]
-
- ; Save caller registers:
- push ebp
- push ebx
- push edi
- push esi
-
- ; Save caller stack pointer:
- mov dword ptr [ecx], esp
-
- ; Restore callee stack pointer:
- mov esp, dword ptr [edx]
-
- ; Restore callee stack:
- pop esi
- pop edi
- pop ebx
- pop ebp
-
- ; Restore the thread information block:
- pop fs:[8]
- pop fs:[4]
- pop fs:[0]
-
- ; Save the first argument as the return value:
- mov eax, dword ptr ecx
-
- ; Jump to the address on the stack:
- ret
-@coroutine_transfer@8 endp
-
-end
diff --git a/coroutine/win32/Context.h b/coroutine/win32/Context.h
deleted file mode 100644
index 902fd1246f..0000000000
--- a/coroutine/win32/Context.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#ifndef COROUTINE_WIN32_CONTEXT_H
-#define COROUTINE_WIN32_CONTEXT_H 1
-
-/*
- * This file is part of the "Coroutine" project and released under the MIT License.
- *
- * Created by Samuel Williams on 10/5/2018.
- * Copyright, 2018, by Samuel Williams.
-*/
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __declspec(noreturn) void __fastcall
-#define COROUTINE_LIMITED_ADDRESS_SPACE
-
-/* This doesn't include thread information block */
-enum {COROUTINE_REGISTERS = 4};
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-};
-
-typedef void(__fastcall * coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- *--context->stack_pointer = (void*)start;
-
- /* Windows Thread Information Block */
- *--context->stack_pointer = (void*)0xFFFFFFFF; /* fs:[0] */
- *--context->stack_pointer = (void*)top; /* fs:[4] */
- *--context->stack_pointer = (void*)stack; /* fs:[8] */
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
-}
-
-struct coroutine_context * __fastcall coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
-}
-
-#endif /* COROUTINE_WIN32_CONTEXT_H */
diff --git a/coroutine/win64/Context.S b/coroutine/win64/Context.S
deleted file mode 100644
index e0ee38e006..0000000000
--- a/coroutine/win64/Context.S
+++ /dev/null
@@ -1,77 +0,0 @@
-##
-## This file is part of the "Coroutine" project and released under the MIT License.
-##
-## Created by Samuel Williams on 4/11/2018.
-## Copyright, 2018, by Samuel Williams.
-##
-
-.text
-
-.globl coroutine_transfer
-coroutine_transfer:
- # Save the thread information block:
- pushq %gs:8
- pushq %gs:16
-
- # Save caller registers:
- pushq %rbp
- pushq %rbx
- pushq %rdi
- pushq %rsi
- pushq %r12
- pushq %r13
- pushq %r14
- pushq %r15
-
- movaps %xmm15, -168(%rsp)
- movaps %xmm14, -152(%rsp)
- movaps %xmm13, -136(%rsp)
- movaps %xmm12, -120(%rsp)
- movaps %xmm11, -104(%rsp)
- movaps %xmm10, -88(%rsp)
- movaps %xmm9, -72(%rsp)
- movaps %xmm8, -56(%rsp)
- movaps %xmm7, -40(%rsp)
- movaps %xmm6, -24(%rsp)
-
- # Save caller stack pointer:
- mov %rsp, (%rcx)
-
- # Restore callee stack pointer:
- mov (%rdx), %rsp
-
- movaps -24(%rsp), %xmm6
- movaps -40(%rsp), %xmm7
- movaps -56(%rsp), %xmm8
- movaps -72(%rsp), %xmm9
- movaps -88(%rsp), %xmm10
- movaps -104(%rsp), %xmm11
- movaps -120(%rsp), %xmm12
- movaps -136(%rsp), %xmm13
- movaps -152(%rsp), %xmm14
- movaps -168(%rsp), %xmm15
-
- # Restore callee stack:
- popq %r15
- popq %r14
- popq %r13
- popq %r12
- popq %rsi
- popq %rdi
- popq %rbx
- popq %rbp
-
- # Restore the thread information block:
- popq %gs:16
- popq %gs:8
-
- # Put the first argument into the return value:
- mov %rcx, %rax
-
- # We pop the return address and jump to it:
- ret
-
-.globl coroutine_trampoline
-coroutine_trampoline:
- # Do not remove this. This forces 16-byte alignment when entering the coroutine.
- ret
diff --git a/coroutine/win64/Context.asm b/coroutine/win64/Context.asm
deleted file mode 100644
index 8c4dea1c93..0000000000
--- a/coroutine/win64/Context.asm
+++ /dev/null
@@ -1,79 +0,0 @@
-;;
-;; This file is part of the "Coroutine" project and released under the MIT License.
-;;
-;; Created by Samuel Williams on 10/5/2018.
-;; Copyright, 2018, by Samuel Williams.
-;;
-
-.code
-
-coroutine_transfer proc
- ; Save the thread information block:
- push qword ptr gs:[8]
- push qword ptr gs:[16]
-
- ; Save caller registers:
- push rbp
- push rbx
- push rdi
- push rsi
- push r12
- push r13
- push r14
- push r15
-
- movaps [rsp - 24], xmm6
- movaps [rsp - 40], xmm7
- movaps [rsp - 56], xmm8
- movaps [rsp - 72], xmm9
- movaps [rsp - 88], xmm10
- movaps [rsp - 104], xmm11
- movaps [rsp - 120], xmm12
- movaps [rsp - 136], xmm13
- movaps [rsp - 152], xmm14
- movaps [rsp - 168], xmm15
-
- ; Save caller stack pointer:
- mov [rcx], rsp
-
- ; Restore callee stack pointer:
- mov rsp, [rdx]
-
- movaps xmm15, [rsp - 168]
- movaps xmm14, [rsp - 152]
- movaps xmm13, [rsp - 136]
- movaps xmm12, [rsp - 120]
- movaps xmm11, [rsp - 104]
- movaps xmm10, [rsp - 88]
- movaps xmm9, [rsp - 72]
- movaps xmm8, [rsp - 56]
- movaps xmm7, [rsp - 40]
- movaps xmm6, [rsp - 24]
-
- ; Restore callee stack:
- pop r15
- pop r14
- pop r13
- pop r12
- pop rsi
- pop rdi
- pop rbx
- pop rbp
-
- ; Restore the thread information block:
- pop qword ptr gs:[16]
- pop qword ptr gs:[8]
-
- ; Put the first argument into the return value:
- mov rax, rcx
-
- ; We pop the return address and jump to it:
- ret
-coroutine_transfer endp
-
-coroutine_trampoline proc
- ; Do not remove this. This forces 16-byte alignment when entering the coroutine.
- ret
-coroutine_trampoline endp
-
-end
diff --git a/coroutine/win64/Context.h b/coroutine/win64/Context.h
deleted file mode 100644
index aaa4caeaf9..0000000000
--- a/coroutine/win64/Context.h
+++ /dev/null
@@ -1,75 +0,0 @@
-#ifndef COROUTINE_WIN64_CONTEXT_H
-#define COROUTINE_WIN64_CONTEXT_H 1
-
-/*
- * This file is part of the "Coroutine" project and released under the MIT License.
- *
- * Created by Samuel Williams on 10/5/2018.
- * Copyright, 2018, by Samuel Williams.
-*/
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __declspec(noreturn) void
-
-enum {
- COROUTINE_REGISTERS = 8,
- COROUTINE_XMM_REGISTERS = 1+10*2,
-};
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-};
-
-typedef void(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
-
-void coroutine_trampoline();
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- /* Win64 ABI requires space for arguments */
- context->stack_pointer -= 4;
-
- /* Return address */
- *--context->stack_pointer = 0;
- *--context->stack_pointer = (void*)start;
- *--context->stack_pointer = (void*)coroutine_trampoline;
-
- /* Windows Thread Information Block */
- /* *--context->stack_pointer = 0; */ /* gs:[0x00] is not used */
- *--context->stack_pointer = (void*)top; /* gs:[0x08] */
- *--context->stack_pointer = (void*)stack; /* gs:[0x10] */
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
- memset(context->stack_pointer - COROUTINE_XMM_REGISTERS, 0, sizeof(void*) * COROUTINE_XMM_REGISTERS);
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target);
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
-}
-
-#endif /* COROUTINE_WIN64_CONTEXT_H */
diff --git a/coroutine/x86/Context.S b/coroutine/x86/Context.S
deleted file mode 100644
index f06a417084..0000000000
--- a/coroutine/x86/Context.S
+++ /dev/null
@@ -1,42 +0,0 @@
-##
-## This file is part of the "Coroutine" project and released under the MIT License.
-##
-## Created by Samuel Williams on 3/11/2018.
-## Copyright, 2018, by Samuel Williams.
-##
-
-#define TOKEN_PASTE(x,y) x##y
-#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
-
-.text
-
-.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
-PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
-
- # Save caller registers
- pushl %ebp
- pushl %ebx
- pushl %edi
- pushl %esi
-
- # Save caller stack pointer
- movl %esp, (%ecx)
-
- # Restore callee stack pointer
- movl (%edx), %esp
-
- # Restore callee stack
- popl %esi
- popl %edi
- popl %ebx
- popl %ebp
-
- # Save the first argument as the return value
- movl %ecx, %eax
-
- # Jump to the address on the stack
- ret
-
-#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
diff --git a/coroutine/x86/Context.h b/coroutine/x86/Context.h
deleted file mode 100644
index d98eaf6486..0000000000
--- a/coroutine/x86/Context.h
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef COROUTINE_X86_CONTEXT_H
-#define COROUTINE_X86_CONTEXT_H 1
-
-/*
- * This file is part of the "Coroutine" project and released under the MIT License.
- *
- * Created by Samuel Williams on 3/11/2018.
- * Copyright, 2018, by Samuel Williams.
-*/
-
-#pragma once
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#define COROUTINE __attribute__((noreturn, fastcall)) void
-#define COROUTINE_LIMITED_ADDRESS_SPACE
-
-enum {COROUTINE_REGISTERS = 4};
-
-struct coroutine_context
-{
- void **stack_pointer;
- void *argument;
-};
-
-typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self) __attribute__((fastcall));
-
-static inline void coroutine_initialize_main(struct coroutine_context * context) {
- context->stack_pointer = NULL;
-}
-
-static inline void coroutine_initialize(
- struct coroutine_context *context,
- coroutine_start start,
- void *stack,
- size_t size
-) {
- assert(start && stack && size >= 1024);
-
- // Stack grows down. Force 16-byte alignment.
- char * top = (char*)stack + size;
- context->stack_pointer = (void**)((uintptr_t)top & ~0xF);
-
- *--context->stack_pointer = NULL;
- *--context->stack_pointer = (void*)start;
-
- context->stack_pointer -= COROUTINE_REGISTERS;
- memset(context->stack_pointer, 0, sizeof(void*) * COROUTINE_REGISTERS);
-}
-
-struct coroutine_context * coroutine_transfer(struct coroutine_context * current, struct coroutine_context * target) __attribute__((fastcall));
-
-static inline void coroutine_destroy(struct coroutine_context * context)
-{
- context->stack_pointer = NULL;
-}
-
-#endif /* COROUTINE_X86_CONTEXT_H */
diff --git a/coverage/README b/coverage/README
index a4c3dfcb03..7e4ff59e2a 100644
--- a/coverage/README
+++ b/coverage/README
@@ -4,7 +4,7 @@ The make task `update-coverage' retrieves simplecov for coverage report.
COVERAGE=1 make test-all TESTS=test/cgi
-it generates test coverage to coverage directory.
+it generate test coverage to coverage directory.
Limitation
@@ -13,5 +13,5 @@ Limitation
TODO
- * more reduce bundled simplecov(additional configuration, formatter, etc.)
+ * more reduce bundled simplecov(additional configuration, formatter, etc)
* measure rubyspec coverage
diff --git a/cygwin/GNUmakefile.in b/cygwin/GNUmakefile.in
index 43e92a27f0..192cf43b37 100644
--- a/cygwin/GNUmakefile.in
+++ b/cygwin/GNUmakefile.in
@@ -1,23 +1,16 @@
-gnumake = yes
-
include Makefile
-DLLWRAP = @DLLWRAP@ --target=$(target_os) --driver-name="$(CC)"
-windres-cpp := $(CPP) -xc
-windres-cpp := --preprocessor=$(firstword $(windres-cpp)) \
- $(addprefix --preprocessor-arg=,$(wordlist 2,$(words $(windres-cpp)),$(windres-cpp)))
-WINDRES = @WINDRES@ $(windres-cpp) -DRC_INVOKED
+ENABLE_SHARED=@ENABLE_SHARED@
+DLLWRAP = @DLLWRAP@ --target=@target_os@ --driver-name="$(CC)"
+WINDRES = @WINDRES@ --preprocessor="$(CPP) -xc" -DRC_INVOKED
STRIP = @STRIP@
-ifeq ($(target_os),cygwin)
+ifeq (@target_os@,cygwin)
DLL_BASE_NAME := $(LIBRUBY_SO:.dll=)
else
DLL_BASE_NAME := $(RUBY_SO_NAME)
DLLWRAP += -mno-cygwin
VPATH := $(VPATH):$(srcdir)/win32
- ifneq ($(filter -flto%,$(LDFLAGS)),)
- miniruby$(EXEEXT): XLDFLAGS += -Wno-maybe-uninitialized
- endif
endif
ifneq ($(ENABLE_SHARED),yes)
@@ -35,9 +28,11 @@ endif
WPROGRAM = $(RUBYW_INSTALL_NAME)$(EXEEXT)
-include $(srcdir)/template/GNUmakefile.in
+-include uncommon.mk
+
+include $(srcdir)/defs/gmake.mk
-SOLIBS := $(DLL_BASE_NAME).res.$(OBJEXT) $(SOLIBS)
+SOLIBS := $(DLL_BASE_NAME).res.@OBJEXT@ $(SOLIBS)
override EXTOBJS += $(if $(filter-out $(RUBYW_INSTALL_NAME),$(@:$(EXEEXT)=)),$(RUBY_INSTALL_NAME),$(@:$(EXEEXT)=)).res.$(OBJEXT)
RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(DLL_BASE_NAME).rc
RUBYDEF = $(DLL_BASE_NAME).def
@@ -46,26 +41,26 @@ ruby: $(PROGRAM)
rubyw: $(WPROGRAM)
$(LIBRUBY): $(RUBY_EXP) $(LIBRUBY_SO)
-$(RUBY_EXP) $(LIBRUBY_SO): $(DLL_BASE_NAME).res.$(OBJEXT)
+$(RUBY_EXP) $(LIBRUBY_SO): $(DLL_BASE_NAME).res.@OBJEXT@
-%.res.$(OBJEXT): %.rc
+%.res.@OBJEXT@: %.rc
$(ECHO) compiling $@
$(Q) $(WINDRES) --include-dir . --include-dir $(<D) --include-dir $(srcdir)/win32 $< $@
-%.rc: $(BOOTSTRAPRUBY_FAKE) $(RBCONFIG) $(srcdir)/revision.h $(srcdir)/win32/resource.rb
+%.rc: $(RBCONFIG) $(srcdir)/revision.h $(srcdir)/win32/resource.rb
$(ECHO) generating $@
- $(Q) $(BOOTSTRAPRUBY_COMMAND) $(srcdir)/win32/resource.rb \
+ $(Q) $(MINIRUBY) $(srcdir)/win32/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) -rubyw_name=$(RUBYW_INSTALL_NAME) \
-so_name=$(DLL_BASE_NAME) -output=$(*F) \
. $(icondirs) $(srcdir)/win32
-$(PROGRAM): $(RUBY_INSTALL_NAME).res.$(OBJEXT)
-$(WPROGRAM): $(RUBYW_INSTALL_NAME).res.$(OBJEXT)
+$(PROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@
+$(WPROGRAM): $(RUBYW_INSTALL_NAME).res.@OBJEXT@
@rm -f $@
$(ECHO) linking $@
$(Q) $(PURIFY) $(CC) -mwindows -e $(SYMBOL_PREFIX)mainCRTStartup $(LDFLAGS) $(XLDFLAGS) \
$(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@
-$(STUBPROGRAM): $(RUBY_INSTALL_NAME).res.$(OBJEXT)
+$(STUBPROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@
$(RUBY_EXP): $(LIBRUBY_A)
$(ECHO) creating $@
@@ -77,7 +72,7 @@ $(RUBY_EXP): $(LIBRUBY_A)
GNUmakefile: $(srcdir)/cygwin/GNUmakefile.in
-ifeq ($(target_os),mingw32)
+ifeq (@target_os@,mingw32)
$(OBJS) $(MAINOBJ): win32.h
dir.$(OBJEXT) win32/win32.$(OBJEXT): win32/dir.h
@@ -88,17 +83,24 @@ MSYS2_ARG_CONV_EXCL_PARAM = --exclude=;--name=
yes-test-ruby: export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)
yes-test-all: export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)
yes-test-almost: export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)
-test/% spec/%/ spec/%_spec.rb: export MSYS2_ARG_CONV_EXCL=$(MSYS2_ARG_CONV_EXCL_PARAM)
endif
$(LIBRUBY_SO): $(RUBYDEF)
-$(RUBYDEF): $(LIBRUBY_A) $(PREP) $(BOOTSTRAPRUBY_FAKE) $(RBCONFIG)
+$(RUBYDEF): $(LIBRUBY_A) $(PREP) $(RBCONFIG)
$(ECHO) generating $@
- $(Q) $(BOOTSTRAPRUBY_COMMAND) $(srcdir)/win32/mkexports.rb -output=$@ $(LIBRUBY_A)
+ $(Q) $(MINIRUBY) $(srcdir)/win32/mkexports.rb -output=$@ $(LIBRUBY_A)
clean-local::
@$(RM) $(RUBYDEF)
- @$(RM) $(RUBY_EXP) $(RCFILES:.rc=.res.$(OBJEXT))
+
+ifeq (@target_os@,cygwin)
+cygwin-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)0.dll: $(LIBRUBY_A) $(RUBYDEF)
+ $(ECHO) generating $@
+ $(Q) @DLLWRAP@ -s --def=$(RUBYDEF) -o $@
+endif
+
+clean-local::
+ @$(RM) $(RUBY_EXP) $(RCFILES:.rc=.res.@OBJEXT@)
@$(RM) $(RCFILES)
diff --git a/darray.h b/darray.h
deleted file mode 100644
index 7183041f03..0000000000
--- a/darray.h
+++ /dev/null
@@ -1,179 +0,0 @@
-#ifndef RUBY_DARRAY_H
-#define RUBY_DARRAY_H
-
-#include <stdint.h>
-#include <stddef.h>
-#include <stdlib.h>
-
-// Type for a dynamic array. Use to declare a dynamic array.
-// It is a pointer so it fits in st_table nicely. Designed
-// to be fairly type-safe.
-//
-// NULL is a valid empty dynamic array.
-//
-// Example:
-// rb_darray(char) char_array = NULL;
-// rb_darray_append(&char_array, 'e');
-// printf("pushed %c\n", *rb_darray_ref(char_array, 0));
-// rb_darray_free(char_array);
-//
-#define rb_darray(T) struct { rb_darray_meta_t meta; T data[]; } *
-
-// Copy an element out of the array. Warning: not bounds checked.
-//
-// T rb_darray_get(rb_darray(T) ary, size_t idx);
-//
-#define rb_darray_get(ary, idx) ((ary)->data[(idx)])
-
-// Assign to an element. Warning: not bounds checked.
-//
-// void rb_darray_set(rb_darray(T) ary, size_t idx, T element);
-//
-#define rb_darray_set(ary, idx, element) ((ary)->data[(idx)] = (element))
-
-// Get a pointer to an element. Warning: not bounds checked.
-//
-// T *rb_darray_ref(rb_darray(T) ary, size_t idx);
-//
-#define rb_darray_ref(ary, idx) (&((ary)->data[(idx)]))
-
-// Copy a new element into the array. ptr_to_ary is evaluated multiple times.
-//
-// void rb_darray_append(rb_darray(T) *ptr_to_ary, T element);
-//
-#define rb_darray_append(ptr_to_ary, element) do { \
- rb_darray_ensure_space((ptr_to_ary), sizeof(**(ptr_to_ary)), \
- sizeof((*(ptr_to_ary))->data[0])); \
- rb_darray_set(*(ptr_to_ary), \
- (*(ptr_to_ary))->meta.size, \
- (element)); \
- (*(ptr_to_ary))->meta.size++; \
-} while (0)
-
-
-// Last element of the array
-//
-#define rb_darray_back(ary) ((ary)->data[(ary)->meta.size - 1])
-
-// Remove the last element of the array.
-//
-#define rb_darray_pop_back(ary) ((ary)->meta.size--)
-
-// Remove element at idx and replace it by the last element
-#define rb_darray_remove_unordered(ary, idx) do { \
- rb_darray_set(ary, idx, rb_darray_back(ary)); \
- rb_darray_pop_back(ary); \
-} while (0);
-
-// Iterate over items of the array in a for loop
-//
-#define rb_darray_foreach(ary, idx_name, elem_ptr_var) \
- for (size_t idx_name = 0; idx_name < rb_darray_size(ary) && ((elem_ptr_var) = rb_darray_ref(ary, idx_name)); ++idx_name)
-
-// Iterate over valid indices in the array in a for loop
-//
-#define rb_darray_for(ary, idx_name) \
- for (size_t idx_name = 0; idx_name < rb_darray_size(ary); ++idx_name)
-
-// Make a dynamic array of a certain size. All bytes backing the elements are set to zero.
-//
-// Note that NULL is a valid empty dynamic array.
-//
-// void rb_darray_make(rb_darray(T) *ptr_to_ary, size_t size);
-//
-#define rb_darray_make(ptr_to_ary, size) \
- rb_darray_make_impl((ptr_to_ary), size, sizeof(**(ptr_to_ary)), \
- sizeof((*(ptr_to_ary))->data[0]))
-
-#define rb_darray_data_ptr(ary) ((ary)->data)
-
-// Set the size of the array to zero without freeing the backing memory.
-// Allows reusing the same array.
-//
-#define rb_darray_clear(ary) (ary->meta.size = 0)
-
-typedef struct rb_darray_meta {
- size_t size;
- size_t capa;
-} rb_darray_meta_t;
-
-// Get the size of the dynamic array.
-//
-static inline size_t
-rb_darray_size(const void *ary)
-{
- const rb_darray_meta_t *meta = ary;
- return meta ? meta->size : 0;
-}
-
-// Get the capacity of the dynamic array.
-//
-static inline size_t
-rb_darray_capa(const void *ary)
-{
- const rb_darray_meta_t *meta = ary;
- return meta ? meta->capa : 0;
-}
-
-// Free the dynamic array.
-//
-static inline void
-rb_darray_free(void *ary)
-{
- rb_darray_meta_t *meta = ary;
- ruby_sized_xfree(ary, meta->capa);
-}
-
-// Internal function
-// Ensure there is space for one more element.
-// Note: header_size can be bigger than sizeof(rb_darray_meta_t) when T is __int128_t, for example.
-static inline void
-rb_darray_ensure_space(void *ptr_to_ary, size_t header_size, size_t element_size)
-{
- rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
- rb_darray_meta_t *meta = *ptr_to_ptr_to_meta;
- size_t current_capa = rb_darray_capa(meta);
- if (rb_darray_size(meta) < current_capa) return;
-
- // Double the capacity
- size_t new_capa = current_capa == 0 ? 1 : current_capa * 2;
-
- rb_darray_meta_t *doubled_ary = rb_xrealloc_mul_add(meta, new_capa, element_size, header_size);
- // rb_xrealloc functions guarantee that NULL is not returned
- assert(doubled_ary != NULL);
-
- if (meta == NULL) {
- // First allocation. Initialize size. On subsequence allocations
- // realloc takes care of carrying over the size.
- doubled_ary->size = 0;
- }
-
- doubled_ary->capa = new_capa;
-
- // We don't have access to the type of the dynamic array in function context.
- // Write out result with memcpy to avoid strict aliasing issue.
- memcpy(ptr_to_ary, &doubled_ary, sizeof(doubled_ary));
-}
-
-static inline void
-rb_darray_make_impl(void *ptr_to_ary, size_t array_size, size_t header_size, size_t element_size)
-{
- rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
- if (array_size == 0) {
- *ptr_to_ptr_to_meta = NULL;
- return;
- }
-
- rb_darray_meta_t *meta = rb_xcalloc_mul_add(array_size, element_size, header_size);
- // rb_xcalloc functions guarantee that NULL is not returned
- assert(meta != NULL);
-
- meta->size = array_size;
- meta->capa = array_size;
-
- // We don't have access to the type of the dynamic array in function context.
- // Write out result with memcpy to avoid strict aliasing issue.
- memcpy(ptr_to_ary, &meta, sizeof(meta));
-}
-
-#endif /* RUBY_DARRAY_H */
diff --git a/debug.c b/debug.c
index 64cfa94f6a..f811ec6779 100644
--- a/debug.c
+++ b/debug.c
@@ -9,33 +9,14 @@
**********************************************************************/
-#include "ruby/internal/config.h"
-
-#include <stdio.h>
-
-#include "eval_intern.h"
-#include "encindex.h"
-#include "id.h"
-#include "internal/signal.h"
-#include "ruby/encoding.h"
-#include "ruby/io.h"
#include "ruby/ruby.h"
+#include "ruby/encoding.h"
#include "ruby/util.h"
-#include "symbol.h"
-#include "vm_core.h"
#include "vm_debug.h"
-#include "vm_callinfo.h"
-#include "ruby/thread_native.h"
-#include "ractor_core.h"
-
-/* This is the only place struct RIMemo is actually used */
-struct RIMemo {
- VALUE flags;
- VALUE v0;
- VALUE v1;
- VALUE v2;
- VALUE v3;
-};
+#include "eval_intern.h"
+#include "vm_core.h"
+#include "symbol.h"
+#include "id.h"
/* for gdb */
const union {
@@ -46,35 +27,31 @@ const union {
enum ruby_method_ids method_ids;
enum ruby_id_types id_types;
enum ruby_fl_type fl_types;
- enum ruby_fl_ushift fl_ushift;
enum ruby_encoding_consts encoding_consts;
enum ruby_coderange_type enc_coderange_types;
enum ruby_econv_flag_type econv_flag_types;
- rb_econv_result_t econv_result;
- enum ruby_preserved_encindex encoding_index;
enum ruby_robject_flags robject_flags;
enum ruby_rmodule_flags rmodule_flags;
enum ruby_rstring_flags rstring_flags;
enum ruby_rarray_flags rarray_flags;
- enum ruby_rarray_consts rarray_consts;
enum {
- RUBY_FMODE_READABLE = FMODE_READABLE,
- RUBY_FMODE_WRITABLE = FMODE_WRITABLE,
- RUBY_FMODE_READWRITE = FMODE_READWRITE,
- RUBY_FMODE_BINMODE = FMODE_BINMODE,
- RUBY_FMODE_SYNC = FMODE_SYNC,
- RUBY_FMODE_TTY = FMODE_TTY,
- RUBY_FMODE_DUPLEX = FMODE_DUPLEX,
- RUBY_FMODE_APPEND = FMODE_APPEND,
- RUBY_FMODE_CREATE = FMODE_CREATE,
- RUBY_FMODE_NOREVLOOKUP = 0x00000100,
- RUBY_FMODE_TRUNC = FMODE_TRUNC,
- RUBY_FMODE_TEXTMODE = FMODE_TEXTMODE,
- RUBY_FMODE_PREP = 0x00010000,
- RUBY_FMODE_SETENC_BY_BOM = FMODE_SETENC_BY_BOM,
- RUBY_FMODE_UNIX = 0x00200000,
- RUBY_FMODE_INET = 0x00400000,
- RUBY_FMODE_INET6 = 0x00800000,
+ RUBY_FMODE_READABLE = FMODE_READABLE,
+ RUBY_FMODE_WRITABLE = FMODE_WRITABLE,
+ RUBY_FMODE_READWRITE = FMODE_READWRITE,
+ RUBY_FMODE_BINMODE = FMODE_BINMODE,
+ RUBY_FMODE_SYNC = FMODE_SYNC,
+ RUBY_FMODE_TTY = FMODE_TTY,
+ RUBY_FMODE_DUPLEX = FMODE_DUPLEX,
+ RUBY_FMODE_APPEND = FMODE_APPEND,
+ RUBY_FMODE_CREATE = FMODE_CREATE,
+ RUBY_FMODE_NOREVLOOKUP = 0x00000100,
+ RUBY_FMODE_TRUNC = FMODE_TRUNC,
+ RUBY_FMODE_TEXTMODE = FMODE_TEXTMODE,
+ RUBY_FMODE_PREP = 0x00010000,
+ RUBY_FMODE_SETENC_BY_BOM = FMODE_SETENC_BY_BOM,
+ RUBY_FMODE_UNIX = 0x00200000,
+ RUBY_FMODE_INET = 0x00400000,
+ RUBY_FMODE_INET6 = 0x00800000,
RUBY_NODE_TYPESHIFT = NODE_TYPESHIFT,
RUBY_NODE_TYPEMASK = NODE_TYPEMASK,
@@ -82,9 +59,9 @@ const union {
RUBY_NODE_FL_NEWLINE = NODE_FL_NEWLINE
} various;
union {
- enum imemo_type types;
- enum {RUBY_IMEMO_MASK = IMEMO_MASK} mask;
- struct RIMemo *ptr;
+ enum imemo_type types;
+ enum {RUBY_IMEMO_MASK = IMEMO_MASK} mask;
+ struct RIMemo *ptr;
} imemo;
struct RSymbol *symbol_ptr;
enum vm_call_flag_bits vm_call_flags;
@@ -96,9 +73,9 @@ int
ruby_debug_print_indent(int level, int debug_level, int indent_level)
{
if (level < debug_level) {
- fprintf(stderr, "%*s", indent_level, "");
- fflush(stderr);
- return TRUE;
+ fprintf(stderr, "%*s", indent_level, "");
+ fflush(stderr);
+ return TRUE;
}
return FALSE;
}
@@ -112,17 +89,17 @@ ruby_debug_printf(const char *format, ...)
va_end(ap);
}
-#include "internal/gc.h"
+#include "gc.h"
VALUE
ruby_debug_print_value(int level, int debug_level, const char *header, VALUE obj)
{
if (level < debug_level) {
- char buff[0x100];
- rb_raw_obj_info(buff, 0x100, obj);
+ char buff[0x100];
+ rb_raw_obj_info(buff, 0x100, obj);
- fprintf(stderr, "DBG> %s: %s\n", header, buff);
- fflush(stderr);
+ fprintf(stderr, "DBG> %s: %s\n", header, buff);
+ fflush(stderr);
}
return obj;
}
@@ -137,8 +114,8 @@ ID
ruby_debug_print_id(int level, int debug_level, const char *header, ID id)
{
if (level < debug_level) {
- fprintf(stderr, "DBG> %s: %s\n", header, rb_id2name(id));
- fflush(stderr);
+ fprintf(stderr, "DBG> %s: %s\n", header, rb_id2name(id));
+ fflush(stderr);
}
return id;
}
@@ -147,8 +124,8 @@ NODE *
ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node)
{
if (level < debug_level) {
- fprintf(stderr, "DBG> %s: %s (%u)\n", header,
- ruby_node_name(nd_type(node)), nd_line(node));
+ fprintf(stderr, "DBG> %s: %s (%u)\n", header,
+ ruby_node_name(nd_type(node)), nd_line(node));
}
return (NODE *)node;
}
@@ -169,7 +146,6 @@ extern int ruby_w32_rtc_error;
UINT ruby_w32_codepage[2];
#endif
extern int ruby_rgengc_debug;
-extern int ruby_on_ci;
int
ruby_env_debug_option(const char *str, int len, void *arg)
@@ -178,11 +154,11 @@ ruby_env_debug_option(const char *str, int len, void *arg)
size_t retlen;
unsigned long n;
#define SET_WHEN(name, var, val) do { \
- if (len == sizeof(name) - 1 && \
- strncmp(str, (name), len) == 0) { \
- (var) = (val); \
- return 1; \
- } \
+ if (len == sizeof(name) - 1 && \
+ strncmp(str, (name), len) == 0) { \
+ (var) = (val); \
+ return 1; \
+ } \
} while (0)
#define NAME_MATCH_VALUE(name) \
((size_t)len >= sizeof(name)-1 && \
@@ -191,35 +167,34 @@ ruby_env_debug_option(const char *str, int len, void *arg)
(str[sizeof(name)-1] == '=' && \
(str += sizeof(name), len -= sizeof(name), 1))))
#define SET_UINT(val) do { \
- n = ruby_scan_digits(str, len, 10, &retlen, &ov); \
- if (!ov && retlen) { \
- val = (unsigned int)n; \
- } \
- str += retlen; \
- len -= retlen; \
+ n = ruby_scan_digits(str, len, 10, &retlen, &ov); \
+ if (!ov && retlen) { \
+ val = (unsigned int)n; \
+ } \
+ str += retlen; \
+ len -= retlen; \
} while (0)
#define SET_UINT_LIST(name, vals, num) do { \
- int i; \
- for (i = 0; i < (num); ++i) { \
- SET_UINT((vals)[i]); \
- if (!len || *str != ':') break; \
- ++str; \
- --len; \
- } \
- if (len > 0) { \
- fprintf(stderr, "ignored "name" option: `%.*s'\n", len, str); \
- } \
+ int i; \
+ for (i = 0; i < (num); ++i) { \
+ SET_UINT((vals)[i]); \
+ if (!len || *str != ':') break; \
+ ++str; \
+ --len; \
+ } \
+ if (len > 0) { \
+ fprintf(stderr, "ignored "name" option: `%.*s'\n", len, str); \
+ } \
} while (0)
#define SET_WHEN_UINT(name, vals, num, req) \
if (NAME_MATCH_VALUE(name)) SET_UINT_LIST(name, vals, num);
SET_WHEN("gc_stress", *ruby_initial_gc_stress_ptr, Qtrue);
SET_WHEN("core", ruby_enable_coredump, 1);
- SET_WHEN("ci", ruby_on_ci, 1);
if (NAME_MATCH_VALUE("rgengc")) {
- if (!len) ruby_rgengc_debug = 1;
- else SET_UINT_LIST("rgengc", &ruby_rgengc_debug, 1);
- return 1;
+ if (!len) ruby_rgengc_debug = 1;
+ else SET_UINT_LIST("rgengc", &ruby_rgengc_debug, 1);
+ return 1;
}
#if defined _WIN32
# if RUBY_MSVCRT_VERSION >= 80
@@ -228,9 +203,9 @@ ruby_env_debug_option(const char *str, int len, void *arg)
#endif
#if defined _WIN32 || defined __CYGWIN__
if (NAME_MATCH_VALUE("codepage")) {
- if (!len) fprintf(stderr, "missing codepage argument");
- else SET_UINT_LIST("codepage", ruby_w32_codepage, numberof(ruby_w32_codepage));
- return 1;
+ if (!len) fprintf(stderr, "missing codepage argument");
+ else SET_UINT_LIST("codepage", ruby_w32_codepage, numberof(ruby_w32_codepage));
+ return 1;
}
#endif
return 0;
@@ -240,424 +215,12 @@ static void
set_debug_option(const char *str, int len, void *arg)
{
if (!ruby_env_debug_option(str, len, arg)) {
- fprintf(stderr, "unexpected debug option: %.*s\n", len, str);
+ fprintf(stderr, "unexpected debug option: %.*s\n", len, str);
}
}
-#if USE_RUBY_DEBUG_LOG
-static void setup_debug_log(void);
-#else
-#define setup_debug_log()
-#endif
-
void
ruby_set_debug_option(const char *str)
{
ruby_each_words(str, set_debug_option, 0);
- setup_debug_log();
-}
-
-#if USE_RUBY_DEBUG_LOG
-
-// RUBY_DEBUG_LOG features
-// See vm_debug.h comments for details.
-
-#define MAX_DEBUG_LOG 0x1000
-#define MAX_DEBUG_LOG_MESSAGE_LEN 0x0200
-#define MAX_DEBUG_LOG_FILTER_LEN 0x0020
-#define MAX_DEBUG_LOG_FILTER_NUM 0x0010
-
-enum ruby_debug_log_mode ruby_debug_log_mode;
-
-struct debug_log_filter {
- enum debug_log_filter_type {
- dlf_all,
- dlf_file, // "file:..."
- dlf_func, // "func:..."
- } type;
- bool negative;
- char str[MAX_DEBUG_LOG_FILTER_LEN];
-};
-
-static const char *dlf_type_names[] = {
- "all",
- "file",
- "func",
-};
-
-static struct {
- char *mem;
- unsigned int cnt;
- struct debug_log_filter filters[MAX_DEBUG_LOG_FILTER_NUM];
- unsigned int filters_num;
- bool show_pid;
- rb_nativethread_lock_t lock;
- FILE *output;
-} debug_log;
-
-static char *
-RUBY_DEBUG_LOG_MEM_ENTRY(unsigned int index)
-{
- return &debug_log.mem[MAX_DEBUG_LOG_MESSAGE_LEN * index];
-}
-
-static enum debug_log_filter_type
-filter_type(const char *str, int *skiplen)
-{
- if (strncmp(str, "file:", 5) == 0) {
- *skiplen = 5;
- return dlf_file;
- }
- else if(strncmp(str, "func:", 5) == 0) {
- *skiplen = 5;
- return dlf_func;
- }
- else {
- *skiplen = 0;
- return dlf_all;
- }
-}
-
-static void
-setup_debug_log_filter(void)
-{
- const char *filter_config = getenv("RUBY_DEBUG_LOG_FILTER");
-
- if (filter_config && strlen(filter_config) > 0) {
- unsigned int i;
- for (i=0; i<MAX_DEBUG_LOG_FILTER_NUM && filter_config; i++) {
- size_t len;
- const char *str = filter_config;
- const char *p;
-
- if ((p = strchr(str, ',')) == NULL) {
- len = strlen(str);
- filter_config = NULL;
- }
- else {
- len = p - str - 1; // 1 is ','
- filter_config = p + 1;
- }
-
- // positive/negative
- if (*str == '-') {
- debug_log.filters[i].negative = true;
- str++;
- }
- else if (*str == '+') {
- // negative is false on default.
- str++;
- }
-
- // type
- int skiplen;
- debug_log.filters[i].type = filter_type(str, &skiplen);
- len -= skiplen;
-
- if (len >= MAX_DEBUG_LOG_FILTER_LEN) {
- fprintf(stderr, "too long: %s (max:%d)\n", str, MAX_DEBUG_LOG_FILTER_LEN - 1);
- exit(1);
- }
-
- // body
- strncpy(debug_log.filters[i].str, str + skiplen, len);
- debug_log.filters[i].str[len] = 0;
- }
- debug_log.filters_num = i;
-
- for (i=0; i<debug_log.filters_num; i++) {
- fprintf(stderr, "RUBY_DEBUG_LOG_FILTER[%d]=%s (%s%s)\n", i,
- debug_log.filters[i].str,
- debug_log.filters[i].negative ? "-" : "",
- dlf_type_names[debug_log.filters[i].type]);
- }
- }
-}
-
-static void
-setup_debug_log(void)
-{
- // check RUBY_DEBUG_LOG
- const char *log_config = getenv("RUBY_DEBUG_LOG");
- if (log_config && strlen(log_config) > 0) {
- if (strcmp(log_config, "mem") == 0) {
- debug_log.mem = (char *)malloc(MAX_DEBUG_LOG * MAX_DEBUG_LOG_MESSAGE_LEN);
- if (debug_log.mem == NULL) {
- fprintf(stderr, "setup_debug_log failed (can't allocate memory)\n");
- exit(1);
- }
- ruby_debug_log_mode |= ruby_debug_log_memory;
- }
- else if (strcmp(log_config, "stderr") == 0) {
- ruby_debug_log_mode |= ruby_debug_log_stderr;
- }
- else {
- ruby_debug_log_mode |= ruby_debug_log_file;
- if ((debug_log.output = fopen(log_config, "w")) == NULL) {
- fprintf(stderr, "can not open %s for RUBY_DEBUG_LOG\n", log_config);
- exit(1);
- }
- setvbuf(debug_log.output, NULL, _IONBF, 0);
- }
-
- fprintf(stderr, "RUBY_DEBUG_LOG=%s %s%s%s\n", log_config,
- (ruby_debug_log_mode & ruby_debug_log_memory) ? "[mem]" : "",
- (ruby_debug_log_mode & ruby_debug_log_stderr) ? "[stderr]" : "",
- (ruby_debug_log_mode & ruby_debug_log_file) ? "[file]" : "");
- rb_nativethread_lock_initialize(&debug_log.lock);
-
- setup_debug_log_filter();
-
- if (getenv("RUBY_DEBUG_LOG_PID")) {
- debug_log.show_pid = true;
- }
- }
-}
-
-static bool
-check_filter(const char *str, const struct debug_log_filter *filter, bool *state)
-{
- if (filter->negative) {
- if (strstr(str, filter->str) == NULL) {
- *state = true;
- return false;
- }
- else {
- *state = false;
- return true;
- }
- }
- else {
- if (strstr(str, filter->str) != NULL) {
- *state = true;
- return true;
- }
- else {
- *state = false;
- return false;
- }
- }
-}
-
-//
-// RUBY_DEBUG_LOG_FILTER=-foo,-bar,baz,boo
-// returns true if
-// (func_name or file_name) doesn't contain foo
-// and
-// (func_name or file_name) doesn't contain bar
-// and
-// (func_name or file_name) contains baz or boo
-//
-// RUBY_DEBUG_LOG_FILTER=foo,bar,-baz,-boo
-// returns true if
-// (func_name or file_name) contains foo or bar
-// or
-// (func_name or file_name) doesn't contain baz and
-// (func_name or file_name) doesn't contain boo and
-//
-// You can specify "file:" (ex file:foo) or "func:" (ex func:foo)
-// prefixes to specify the filter for.
-//
-bool
-ruby_debug_log_filter(const char *func_name, const char *file_name)
-{
- if (debug_log.filters_num > 0) {
- bool state = false;
-
- for (unsigned int i = 0; i<debug_log.filters_num; i++) {
- const struct debug_log_filter *filter = &debug_log.filters[i];
-
- switch (filter->type) {
- case dlf_all:
- if (check_filter(func_name, filter, &state)) return state;
- if (check_filter(file_name, filter, &state)) return state;
- break;
- case dlf_func:
- if (check_filter(func_name, filter, &state)) return state;
- break;
- case dlf_file:
- if (check_filter(file_name, filter, &state)) return state;
- break;
- }
- }
- return state;
- }
- else {
- return true;
- }
-}
-
-static const char *
-pretty_filename(const char *path)
-{
- // basename is one idea.
- const char *s;
- while ((s = strchr(path, '/')) != NULL) {
- path = s+1;
- }
- return path;
-}
-
-#undef ruby_debug_log
-void
-ruby_debug_log(const char *file, int line, const char *func_name, const char *fmt, ...)
-{
- char buff[MAX_DEBUG_LOG_MESSAGE_LEN] = {0};
- int len = 0;
- int r = 0;
-
- if (debug_log.show_pid) {
- r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN, "pid:%d\t", getpid());
- if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
- len += r;
- }
-
- // message title
- if (func_name && len < MAX_DEBUG_LOG_MESSAGE_LEN) {
- r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN, "%s\t", func_name);
- if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
- len += r;
- }
-
- // message
- if (fmt && len < MAX_DEBUG_LOG_MESSAGE_LEN) {
- va_list args;
- va_start(args, fmt);
- r = vsnprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, fmt, args);
- va_end(args);
- if (r < 0) rb_bug("ruby_debug_log vsnprintf() returns %d", r);
- len += r;
- }
-
- // optional information
-
- // C location
- if (file && len < MAX_DEBUG_LOG_MESSAGE_LEN) {
- r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN, "\t%s:%d", pretty_filename(file), line);
- if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
- len += r;
- }
-
- rb_execution_context_t *ec = rb_current_execution_context(false);
-
- // Ruby location
- int ruby_line;
- const char *ruby_file = ec ? rb_source_location_cstr(&ruby_line) : NULL;
-
- if (len < MAX_DEBUG_LOG_MESSAGE_LEN) {
- if (ruby_file) {
- r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, "\t%s:%d", pretty_filename(ruby_file), ruby_line);
- }
- else {
- r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, "\t");
- }
- if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
- len += r;
- }
-
-#ifdef RUBY_NT_SERIAL
- // native thread information
- if (len < MAX_DEBUG_LOG_MESSAGE_LEN) {
- r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, "\tnt:%d", ruby_nt_serial);
- if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
- len += r;
- }
-#endif
-
- if (ec) {
- rb_thread_t *th = ec ? rb_ec_thread_ptr(ec) : NULL;
-
- // ractor information
- if (ruby_single_main_ractor == NULL) {
- rb_ractor_t *cr = th ? th->ractor : NULL;
-
- if (r && len < MAX_DEBUG_LOG_MESSAGE_LEN) {
- r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, "\tr:#%d/%u",
- cr ? (int)rb_ractor_id(cr) : -1, GET_VM()->ractor.cnt);
-
- if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
- len += r;
- }
- }
-
- // thread information
- if (th && r && len < MAX_DEBUG_LOG_MESSAGE_LEN) {
- rb_execution_context_t *rec = th->ractor ? th->ractor->threads.running_ec : NULL;
- const rb_thread_t *rth = rec ? rec->thread_ptr : NULL;
- const rb_thread_t *sth = th->ractor ? th->ractor->threads.sched.running : NULL;
-
- if (rth != th || sth != th) {
- r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, "\tth:%u (rth:%d,sth:%d)",
- rb_th_serial(th), rth ? (int)rb_th_serial(rth) : -1, sth ? (int)rb_th_serial(sth) : -1);
- }
- else {
- r = snprintf(buff + len, MAX_DEBUG_LOG_MESSAGE_LEN - len, "\tth:%u", rb_th_serial(th));
- }
- if (r < 0) rb_bug("ruby_debug_log returns %d\n", r);
- len += r;
- }
- }
-
- rb_nativethread_lock_lock(&debug_log.lock);
- {
- unsigned int cnt = debug_log.cnt++;
-
- if (ruby_debug_log_mode & ruby_debug_log_memory) {
- unsigned int index = cnt % MAX_DEBUG_LOG;
- char *dst = RUBY_DEBUG_LOG_MEM_ENTRY(index);
- strncpy(dst, buff, MAX_DEBUG_LOG_MESSAGE_LEN);
- }
- if (ruby_debug_log_mode & ruby_debug_log_stderr) {
- fprintf(stderr, "%4u: %s\n", cnt, buff);
- }
- if (ruby_debug_log_mode & ruby_debug_log_file) {
- fprintf(debug_log.output, "%u\t%s\n", cnt, buff);
- }
- }
- rb_nativethread_lock_unlock(&debug_log.lock);
-}
-
-// for debugger
-static void
-debug_log_dump(FILE *out, unsigned int n)
-{
- if (ruby_debug_log_mode & ruby_debug_log_memory) {
- unsigned int size = debug_log.cnt > MAX_DEBUG_LOG ? MAX_DEBUG_LOG : debug_log.cnt;
- unsigned int current_index = debug_log.cnt % MAX_DEBUG_LOG;
- if (n == 0) n = size;
- if (n > size) n = size;
-
- for (unsigned int i=0; i<n; i++) {
- int index = current_index - size + i;
- if (index < 0) index += MAX_DEBUG_LOG;
- VM_ASSERT(index <= MAX_DEBUG_LOG);
- const char *mesg = RUBY_DEBUG_LOG_MEM_ENTRY(index);;
- fprintf(out, "%4u: %s\n", debug_log.cnt - size + i, mesg);
- }
- }
- else {
- fprintf(stderr, "RUBY_DEBUG_LOG=mem is not specified.");
- }
-}
-
-// for debuggers
-
-void
-ruby_debug_log_print(unsigned int n)
-{
- debug_log_dump(stderr, n);
-}
-
-void
-ruby_debug_log_dump(const char *fname, unsigned int n)
-{
- FILE *fp = fopen(fname, "w");
- if (fp == NULL) {
- fprintf(stderr, "can't open %s. give up.\n", fname);
- }
- else {
- debug_log_dump(fp, n);
- fclose(fp);
- }
}
-#endif // #if USE_RUBY_DEBUG_LOG
diff --git a/debug_counter.c b/debug_counter.c
index 3dcc4c6a3a..6000f98c54 100644
--- a/debug_counter.c
+++ b/debug_counter.c
@@ -9,142 +9,33 @@
**********************************************************************/
#include "debug_counter.h"
-#include "internal.h"
#include <stdio.h>
-#include <locale.h>
-#include "ruby/thread_native.h"
#if USE_DEBUG_COUNTER
+#include "internal.h"
-const char *const rb_debug_counter_names[] = {
-#define DEBUG_COUNTER_NAME_EMPTY "" /* Suppress -Wstring-concatenation */
- DEBUG_COUNTER_NAME_EMPTY
-#undef DEBUG_COUNTER_NAME_EMPTY
+static const char *const debug_counter_names[] = {
+ ""
#define RB_DEBUG_COUNTER(name) #name,
#include "debug_counter.h"
#undef RB_DEBUG_COUNTER
};
-size_t rb_debug_counter[numberof(rb_debug_counter_names)];
-void rb_debug_counter_add_atomic(enum rb_debug_counter_type type, int add);
+size_t rb_debug_counter[numberof(debug_counter_names)];
-static rb_nativethread_lock_t debug_counter_lock;
-
-__attribute__((constructor))
+__attribute__((destructor))
static void
-debug_counter_setup(void)
-{
- rb_nativethread_lock_initialize(&debug_counter_lock);
-}
-
-void
-rb_debug_counter_add_atomic(enum rb_debug_counter_type type, int add)
-{
- rb_nativethread_lock_lock(&debug_counter_lock);
- {
- rb_debug_counter[(int)type] += add;
- }
- rb_nativethread_lock_unlock(&debug_counter_lock);
-}
-
-static int debug_counter_disable_show_at_exit = 0;
-
-// note that this operation is not atomic.
-void
-ruby_debug_counter_reset(void)
-{
- for (int i = 0; i < RB_DEBUG_COUNTER_MAX; i++) {
- rb_debug_counter[i] = 0;
- }
-}
-
-// note that this operation is not atomic.
-size_t
-ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr)
-{
- int i;
- if (names_ptr != NULL) {
- for (i=0; i<RB_DEBUG_COUNTER_MAX; i++) {
- names_ptr[i] = rb_debug_counter_names[i];
- }
- }
- if (counters_ptr != NULL) {
- for (i=0; i<RB_DEBUG_COUNTER_MAX; i++) {
- counters_ptr[i] = rb_debug_counter[i];
- }
- }
-
- return RB_DEBUG_COUNTER_MAX;
-}
-
-void
-ruby_debug_counter_show_at_exit(int enable)
-{
- debug_counter_disable_show_at_exit = !enable;
-}
-
-void
-rb_debug_counter_show_results(const char *msg)
+rb_debug_counter_show_results(void)
{
const char *env = getenv("RUBY_DEBUG_COUNTER_DISABLE");
-
- setlocale(LC_NUMERIC, "");
-
if (env == NULL || strcmp("1", env) != 0) {
- int i;
- fprintf(stderr, "[RUBY_DEBUG_COUNTER]\t%d %s\n", getpid(), msg);
- for (i=0; i<RB_DEBUG_COUNTER_MAX; i++) {
- fprintf(stderr, "[RUBY_DEBUG_COUNTER]\t%-30s\t%'14"PRIuSIZE"\n",
- rb_debug_counter_names[i],
- rb_debug_counter[i]);
- }
- }
-}
-
-VALUE
-rb_debug_counter_show(RB_UNUSED_VAR(VALUE klass))
-{
- rb_debug_counter_show_results("show_debug_counters");
- ruby_debug_counter_show_at_exit(FALSE);
- return Qnil;
-}
-
-VALUE
-rb_debug_counter_reset(RB_UNUSED_VAR(VALUE klass))
-{
- ruby_debug_counter_reset();
- return Qnil;
-}
-
-__attribute__((destructor))
-static void
-debug_counter_show_results_at_exit(void)
-{
- if (debug_counter_disable_show_at_exit == 0) {
- rb_debug_counter_show_results("normal exit.");
+ int i;
+ for (i=0; i<RB_DEBUG_COUNTER_MAX; i++) {
+ fprintf(stderr, "[RUBY_DEBUG_COUNTER]\t%s\t%"PRIuSIZE"\n",
+ debug_counter_names[i],
+ rb_debug_counter[i]);
+ }
}
}
-#else
-
-void
-rb_debug_counter_show_results(const char *msg)
-{
-}
-
-size_t
-ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr)
-{
- return 0;
-}
-void
-ruby_debug_counter_reset(void)
-{
-}
-
-void
-ruby_debug_counter_show_at_exit(int enable)
-{
-}
-
#endif /* USE_DEBUG_COUNTER */
diff --git a/debug_counter.h b/debug_counter.h
index f1208d83a8..f0f4e5ed0b 100644
--- a/debug_counter.h
+++ b/debug_counter.h
@@ -14,228 +14,41 @@
#ifdef RB_DEBUG_COUNTER
-// method cache (IMC: inline method cache)
-RB_DEBUG_COUNTER(mc_inline_hit) // IMC hit
-RB_DEBUG_COUNTER(mc_inline_miss_klass) // IMC miss by different class
-RB_DEBUG_COUNTER(mc_inline_miss_invalidated) // IMC miss by invalidated ME
-RB_DEBUG_COUNTER(mc_inline_miss_empty) // IMC miss because prev is empty slot
-RB_DEBUG_COUNTER(mc_inline_miss_same_cc) // IMC miss, but same CC
-RB_DEBUG_COUNTER(mc_inline_miss_same_cme) // IMC miss, but same CME
-RB_DEBUG_COUNTER(mc_inline_miss_same_def) // IMC miss, but same definition
-RB_DEBUG_COUNTER(mc_inline_miss_diff) // IMC miss, different methods
-
-RB_DEBUG_COUNTER(cvar_write_inline_hit) // cvar cache hit on write
-RB_DEBUG_COUNTER(cvar_read_inline_hit) // cvar cache hit on read
-RB_DEBUG_COUNTER(cvar_inline_miss) // miss inline cache
-RB_DEBUG_COUNTER(cvar_class_invalidate) // invalidate cvar cache when define a cvar that's defined on a subclass
-RB_DEBUG_COUNTER(cvar_include_invalidate) // invalidate cvar cache on module include or prepend
-
-RB_DEBUG_COUNTER(mc_cme_complement) // number of acquiring complement CME
-RB_DEBUG_COUNTER(mc_cme_complement_hit) // number of cache hit for complemented CME
-
-RB_DEBUG_COUNTER(mc_search) // count for method lookup in class tree
-RB_DEBUG_COUNTER(mc_search_notfound) // method lookup, but not found
-RB_DEBUG_COUNTER(mc_search_super) // total traversed classes
-
-// callinfo
-RB_DEBUG_COUNTER(ci_packed) // number of packed CI
-RB_DEBUG_COUNTER(ci_kw) // non-packed CI w/ keywords
-RB_DEBUG_COUNTER(ci_nokw) // non-packed CI w/o keywords
-RB_DEBUG_COUNTER(ci_runtime) // creating temporary CI
-
-// callcache
-RB_DEBUG_COUNTER(cc_new) // number of CC
-RB_DEBUG_COUNTER(cc_temp) // dummy CC (stack-allocated)
-RB_DEBUG_COUNTER(cc_found_in_ccs) // count for CC lookup success in CCS
-RB_DEBUG_COUNTER(cc_not_found_in_ccs) // count for CC lookup success in CCS
-
-RB_DEBUG_COUNTER(cc_ent_invalidate) // count for invalidating cc (cc->klass = 0)
-RB_DEBUG_COUNTER(cc_cme_invalidate) // count for invalidating CME
-
-RB_DEBUG_COUNTER(cc_invalidate_leaf) // count for invalidating klass if klass has no-subclasses
-RB_DEBUG_COUNTER(cc_invalidate_leaf_ccs) // corresponding CCS
-RB_DEBUG_COUNTER(cc_invalidate_leaf_callable) // complimented cache (no-subclasses)
-RB_DEBUG_COUNTER(cc_invalidate_tree) // count for invalidating klass if klass has subclasses
-RB_DEBUG_COUNTER(cc_invalidate_tree_cme) // cme if cme is found in this class or superclasses
-RB_DEBUG_COUNTER(cc_invalidate_tree_callable) // complimented cache (subclasses)
-RB_DEBUG_COUNTER(cc_invalidate_negative) // count for invalidating negative cache
-
-RB_DEBUG_COUNTER(ccs_free) // count for free'ing ccs
-RB_DEBUG_COUNTER(ccs_maxlen) // maximum length of ccs
-RB_DEBUG_COUNTER(ccs_found) // count for finding corresponding ccs on method lookup
-RB_DEBUG_COUNTER(ccs_not_found) // count for not found corresponding ccs on method lookup
-
-// vm_eval.c
-RB_DEBUG_COUNTER(call0_public)
-RB_DEBUG_COUNTER(call0_other)
-RB_DEBUG_COUNTER(gccct_hit)
-RB_DEBUG_COUNTER(gccct_miss)
-RB_DEBUG_COUNTER(gccct_null)
-
-// iseq
-RB_DEBUG_COUNTER(iseq_num) // number of total created iseq
-RB_DEBUG_COUNTER(iseq_cd_num) // number of total created cd (call_data)
-
-/*
- * call cache fastpath usage
- */
-RB_DEBUG_COUNTER(ccf_general)
-RB_DEBUG_COUNTER(ccf_iseq_setup)
-RB_DEBUG_COUNTER(ccf_iseq_setup_0start)
-RB_DEBUG_COUNTER(ccf_iseq_setup_tailcall_0start)
-RB_DEBUG_COUNTER(ccf_iseq_fix) /* several functions created with tool/mk_call_iseq_optimized.rb */
-RB_DEBUG_COUNTER(ccf_iseq_opt) /* has_opt == TRUE (has optional parameters), but other flags are FALSE */
-RB_DEBUG_COUNTER(ccf_iseq_kw1) /* vm_call_iseq_setup_kwparm_kwarg() */
-RB_DEBUG_COUNTER(ccf_iseq_kw2) /* vm_call_iseq_setup_kwparm_nokwarg() */
-RB_DEBUG_COUNTER(ccf_cfunc)
-RB_DEBUG_COUNTER(ccf_cfunc_with_frame)
-RB_DEBUG_COUNTER(ccf_ivar) /* attr_reader */
-RB_DEBUG_COUNTER(ccf_attrset) /* attr_writer */
-RB_DEBUG_COUNTER(ccf_method_missing)
-RB_DEBUG_COUNTER(ccf_zsuper)
-RB_DEBUG_COUNTER(ccf_bmethod)
-RB_DEBUG_COUNTER(ccf_opt_send)
-RB_DEBUG_COUNTER(ccf_opt_call)
-RB_DEBUG_COUNTER(ccf_opt_block_call)
-RB_DEBUG_COUNTER(ccf_opt_struct_aref)
-RB_DEBUG_COUNTER(ccf_opt_struct_aset)
-RB_DEBUG_COUNTER(ccf_super_method)
-
-/*
- * control frame push counts.
- *
- * * frame_push: frame push counts.
- * * frame_push_*: frame push counts per each type.
- * * frame_R2R: Ruby frame to Ruby frame
- * * frame_R2C: Ruby frame to C frame
- * * frame_C2C: C frame to C frame
- * * frame_C2R: C frame to Ruby frame
- */
-RB_DEBUG_COUNTER(frame_push)
-RB_DEBUG_COUNTER(frame_push_method)
-RB_DEBUG_COUNTER(frame_push_block)
-RB_DEBUG_COUNTER(frame_push_class)
-RB_DEBUG_COUNTER(frame_push_top)
-RB_DEBUG_COUNTER(frame_push_cfunc)
-RB_DEBUG_COUNTER(frame_push_ifunc)
-RB_DEBUG_COUNTER(frame_push_eval)
-RB_DEBUG_COUNTER(frame_push_rescue)
-RB_DEBUG_COUNTER(frame_push_dummy)
-
-RB_DEBUG_COUNTER(frame_R2R)
-RB_DEBUG_COUNTER(frame_R2C)
-RB_DEBUG_COUNTER(frame_C2C)
-RB_DEBUG_COUNTER(frame_C2R)
-
-/* instance variable counts */
-RB_DEBUG_COUNTER(ivar_get_obj_hit) // Only T_OBJECT hits
-RB_DEBUG_COUNTER(ivar_get_obj_miss) // Only T_OBJECT misses
-RB_DEBUG_COUNTER(ivar_get_ic_hit) // All hits
-RB_DEBUG_COUNTER(ivar_get_ic_miss) // All misses
-RB_DEBUG_COUNTER(ivar_set_ic_hit) // All hits
-RB_DEBUG_COUNTER(ivar_set_obj_hit) // Only T_OBJECT hits
-RB_DEBUG_COUNTER(ivar_set_obj_miss) // Only T_OBJECT misses
-RB_DEBUG_COUNTER(ivar_set_ic_miss) // All misses
-RB_DEBUG_COUNTER(ivar_set_ic_miss_noobject) // Miss because non T_OBJECT
-RB_DEBUG_COUNTER(ivar_get_base) // Calls to `rb_ivar_get` (very slow path)
-RB_DEBUG_COUNTER(ivar_set_base) // Calls to `ivar_set` (very slow path)
-RB_DEBUG_COUNTER(ivar_get_ic_miss_set) // Misses on IV reads where the cache was wrong
-RB_DEBUG_COUNTER(ivar_get_cc_miss_set) // Misses on attr_reader where the cache was wrong
-RB_DEBUG_COUNTER(ivar_get_ic_miss_unset) // Misses on IV read where the cache wasn't set
-RB_DEBUG_COUNTER(ivar_get_cc_miss_unset) // Misses on attr_reader where the cache wasn't set
-
-/* local variable counts
- *
- * * lvar_get: total lvar get counts (VM insn)
- * * lvar_get_dynamic: lvar get counts if accessing upper env (VM insn)
- * * lvar_set*: same as "get"
- * * lvar_set_slowpath: counts using vm_env_write_slowpath()
- */
+/* method search */
+RB_DEBUG_COUNTER(mc_inline_hit)
+RB_DEBUG_COUNTER(mc_inline_miss)
+RB_DEBUG_COUNTER(mc_global_hit)
+RB_DEBUG_COUNTER(mc_global_miss)
+RB_DEBUG_COUNTER(mc_global_state_miss)
+RB_DEBUG_COUNTER(mc_class_serial_miss)
+RB_DEBUG_COUNTER(mc_cme_complement)
+RB_DEBUG_COUNTER(mc_cme_complement_hit)
+RB_DEBUG_COUNTER(mc_search_super)
+
+/* ivar access */
+RB_DEBUG_COUNTER(ivar_get_ic_hit)
+RB_DEBUG_COUNTER(ivar_get_ic_miss)
+RB_DEBUG_COUNTER(ivar_get_ic_miss_serial)
+RB_DEBUG_COUNTER(ivar_get_ic_miss_unset)
+RB_DEBUG_COUNTER(ivar_get_ic_miss_noobject)
+RB_DEBUG_COUNTER(ivar_set_ic_hit)
+RB_DEBUG_COUNTER(ivar_set_ic_miss)
+RB_DEBUG_COUNTER(ivar_set_ic_miss_serial)
+RB_DEBUG_COUNTER(ivar_set_ic_miss_unset)
+RB_DEBUG_COUNTER(ivar_set_ic_miss_oorange)
+RB_DEBUG_COUNTER(ivar_set_ic_miss_noobject)
+RB_DEBUG_COUNTER(ivar_get_base)
+RB_DEBUG_COUNTER(ivar_set_base)
+
+/* lvar access */
RB_DEBUG_COUNTER(lvar_get)
RB_DEBUG_COUNTER(lvar_get_dynamic)
RB_DEBUG_COUNTER(lvar_set)
RB_DEBUG_COUNTER(lvar_set_dynamic)
RB_DEBUG_COUNTER(lvar_set_slowpath)
-/* GC counts:
- *
- * * count: simple count
- * * _minor: minor gc
- * * _major: major gc
- * * other suffix is corresponding to last_gc_info or
- * gc_profile_record_flag in gc.c.
- */
-RB_DEBUG_COUNTER(gc_count)
-RB_DEBUG_COUNTER(gc_minor_newobj)
-RB_DEBUG_COUNTER(gc_minor_malloc)
-RB_DEBUG_COUNTER(gc_minor_method)
-RB_DEBUG_COUNTER(gc_minor_capi)
-RB_DEBUG_COUNTER(gc_minor_stress)
-RB_DEBUG_COUNTER(gc_major_nofree)
-RB_DEBUG_COUNTER(gc_major_oldgen)
-RB_DEBUG_COUNTER(gc_major_shady)
-RB_DEBUG_COUNTER(gc_major_force)
-RB_DEBUG_COUNTER(gc_major_oldmalloc)
-
-RB_DEBUG_COUNTER(gc_enter_start)
-RB_DEBUG_COUNTER(gc_enter_continue)
-RB_DEBUG_COUNTER(gc_enter_rest)
-RB_DEBUG_COUNTER(gc_enter_finalizer)
-
-RB_DEBUG_COUNTER(gc_isptr_trial)
-RB_DEBUG_COUNTER(gc_isptr_range)
-RB_DEBUG_COUNTER(gc_isptr_align)
-RB_DEBUG_COUNTER(gc_isptr_maybe)
-
-/* object allocation counts:
- *
- * * obj_newobj: newobj counts
- * * obj_newobj_slowpath: newobj with slowpath counts
- * * obj_newobj_wb_unprotected: newobj for wb_unprotected.
- * * obj_free: obj_free() counts
- * * obj_promote: promoted counts (oldgen)
- * * obj_wb_unprotect: wb unprotect counts
- *
- * * obj_[type]_[attr]: *free'ed counts* for each type.
- * Note that it is not a allocated counts.
- * * [type]
- * * _obj: T_OBJECT
- * * _str: T_STRING
- * * _ary: T_ARRAY
- * * _xxx: T_XXX (hash, struct, ...)
- *
- * * [attr]
- * * _ptr: R?? is not embed.
- * * _embed: R?? is embed.
- * * _transient: R?? uses transient heap.
- * * type specific attr.
- * * str_shared: str is shared.
- * * str_nofree: nofree
- * * str_fstr: fstr
- * * hash_empty: hash is empty
- * * hash_1_4: has 1 to 4 entries
- * * hash_5_8: has 5 to 8 entries
- * * hash_g8: has n entries (n>8)
- * * match_under4: has under 4 oniguruma regions allocated
- * * match_ge4: has n regions allocated (4<=n<8)
- * * match_ge8: has n regions allocated (8<=n)
- * * data_empty: T_DATA but no memory free.
- * * data_xfree: free'ed by xfree().
- * * data_imm_free: free'ed immediately.
- * * data_zombie: free'ed with zombie.
- * * imemo_*: T_IMEMO with each type.
- */
-RB_DEBUG_COUNTER(obj_newobj)
-RB_DEBUG_COUNTER(obj_newobj_slowpath)
-RB_DEBUG_COUNTER(obj_newobj_wb_unprotected)
+/* object counts */
RB_DEBUG_COUNTER(obj_free)
-RB_DEBUG_COUNTER(obj_promote)
-RB_DEBUG_COUNTER(obj_wb_unprotect)
-
-RB_DEBUG_COUNTER(obj_obj_embed)
-RB_DEBUG_COUNTER(obj_obj_transient)
-RB_DEBUG_COUNTER(obj_obj_ptr)
-RB_DEBUG_COUNTER(obj_obj_too_complex)
RB_DEBUG_COUNTER(obj_str_ptr)
RB_DEBUG_COUNTER(obj_str_embed)
@@ -243,184 +56,54 @@ RB_DEBUG_COUNTER(obj_str_shared)
RB_DEBUG_COUNTER(obj_str_nofree)
RB_DEBUG_COUNTER(obj_str_fstr)
-RB_DEBUG_COUNTER(obj_ary_embed)
-RB_DEBUG_COUNTER(obj_ary_transient)
RB_DEBUG_COUNTER(obj_ary_ptr)
-RB_DEBUG_COUNTER(obj_ary_extracapa)
-/*
- ary_shared_create: shared ary by Array#dup and so on.
- ary_shared: finished in shard.
- ary_shared_root_occupied: shared_root but has only 1 refcnt.
- The number (ary_shared - ary_shared_root_occupied) is meaningful.
- */
-RB_DEBUG_COUNTER(obj_ary_shared_create)
-RB_DEBUG_COUNTER(obj_ary_shared)
-RB_DEBUG_COUNTER(obj_ary_shared_root_occupied)
-
-RB_DEBUG_COUNTER(obj_hash_empty)
-RB_DEBUG_COUNTER(obj_hash_1)
-RB_DEBUG_COUNTER(obj_hash_2)
-RB_DEBUG_COUNTER(obj_hash_3)
-RB_DEBUG_COUNTER(obj_hash_4)
-RB_DEBUG_COUNTER(obj_hash_5_8)
-RB_DEBUG_COUNTER(obj_hash_g8)
-
-RB_DEBUG_COUNTER(obj_hash_null)
-RB_DEBUG_COUNTER(obj_hash_ar)
-RB_DEBUG_COUNTER(obj_hash_st)
-RB_DEBUG_COUNTER(obj_hash_transient)
-RB_DEBUG_COUNTER(obj_hash_force_convert)
-
-RB_DEBUG_COUNTER(obj_struct_embed)
-RB_DEBUG_COUNTER(obj_struct_transient)
-RB_DEBUG_COUNTER(obj_struct_ptr)
-
-RB_DEBUG_COUNTER(obj_data_empty)
-RB_DEBUG_COUNTER(obj_data_xfree)
-RB_DEBUG_COUNTER(obj_data_imm_free)
-RB_DEBUG_COUNTER(obj_data_zombie)
-
-RB_DEBUG_COUNTER(obj_match_under4)
-RB_DEBUG_COUNTER(obj_match_ge4)
-RB_DEBUG_COUNTER(obj_match_ge8)
-RB_DEBUG_COUNTER(obj_match_ptr)
-
-RB_DEBUG_COUNTER(obj_iclass_ptr)
-RB_DEBUG_COUNTER(obj_class_ptr)
-RB_DEBUG_COUNTER(obj_module_ptr)
-
-RB_DEBUG_COUNTER(obj_bignum_ptr)
-RB_DEBUG_COUNTER(obj_bignum_embed)
-RB_DEBUG_COUNTER(obj_float)
-RB_DEBUG_COUNTER(obj_complex)
-RB_DEBUG_COUNTER(obj_rational)
-
-RB_DEBUG_COUNTER(obj_regexp_ptr)
-RB_DEBUG_COUNTER(obj_file_ptr)
-RB_DEBUG_COUNTER(obj_symbol)
-
-RB_DEBUG_COUNTER(obj_imemo_ment)
-RB_DEBUG_COUNTER(obj_imemo_iseq)
-RB_DEBUG_COUNTER(obj_imemo_env)
-RB_DEBUG_COUNTER(obj_imemo_tmpbuf)
-RB_DEBUG_COUNTER(obj_imemo_ast)
-RB_DEBUG_COUNTER(obj_imemo_cref)
-RB_DEBUG_COUNTER(obj_imemo_svar)
-RB_DEBUG_COUNTER(obj_imemo_throw_data)
-RB_DEBUG_COUNTER(obj_imemo_ifunc)
-RB_DEBUG_COUNTER(obj_imemo_memo)
-RB_DEBUG_COUNTER(obj_imemo_parser_strterm)
-RB_DEBUG_COUNTER(obj_imemo_callinfo)
-RB_DEBUG_COUNTER(obj_imemo_callcache)
-RB_DEBUG_COUNTER(obj_imemo_constcache)
-
-/* ar_table */
-RB_DEBUG_COUNTER(artable_hint_hit)
-RB_DEBUG_COUNTER(artable_hint_miss)
-RB_DEBUG_COUNTER(artable_hint_notfound)
-
-/* heap function counts
- *
- * * heap_xmalloc/realloc/xfree: call counts
- */
-RB_DEBUG_COUNTER(heap_xmalloc)
-RB_DEBUG_COUNTER(heap_xrealloc)
-RB_DEBUG_COUNTER(heap_xfree)
-
-/* transient_heap */
-RB_DEBUG_COUNTER(theap_alloc)
-RB_DEBUG_COUNTER(theap_alloc_fail)
-RB_DEBUG_COUNTER(theap_evacuate)
+RB_DEBUG_COUNTER(obj_ary_embed)
-// VM sync
-RB_DEBUG_COUNTER(vm_sync_lock)
-RB_DEBUG_COUNTER(vm_sync_lock_enter)
-RB_DEBUG_COUNTER(vm_sync_lock_enter_nb)
-RB_DEBUG_COUNTER(vm_sync_lock_enter_cr)
-RB_DEBUG_COUNTER(vm_sync_barrier)
+RB_DEBUG_COUNTER(obj_obj_ptr)
+RB_DEBUG_COUNTER(obj_obj_embed)
-/* load (not implemented yet) */
-/*
+/* load */
RB_DEBUG_COUNTER(load_files)
RB_DEBUG_COUNTER(load_path_is_not_realpath)
-*/
+
#endif
#ifndef RUBY_DEBUG_COUNTER_H
#define RUBY_DEBUG_COUNTER_H 1
-#include "ruby/internal/config.h"
-#include <stddef.h> /* for size_t */
-#include "ruby/ruby.h" /* for VALUE */
-
#if !defined(__GNUC__) && USE_DEBUG_COUNTER
#error "USE_DEBUG_COUNTER is not supported by other than __GNUC__"
#endif
enum rb_debug_counter_type {
#define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_##name,
-#include __FILE__
+#include "debug_counter.h"
RB_DEBUG_COUNTER_MAX
#undef RB_DEBUG_COUNTER
};
#if USE_DEBUG_COUNTER
+#include "ruby/ruby.h"
+
extern size_t rb_debug_counter[];
-RUBY_EXTERN struct rb_ractor_struct *ruby_single_main_ractor;
-RUBY_EXTERN void rb_debug_counter_add_atomic(enum rb_debug_counter_type type, int add);
inline static int
rb_debug_counter_add(enum rb_debug_counter_type type, int add, int cond)
{
if (cond) {
- if (ruby_single_main_ractor != NULL) {
- rb_debug_counter[(int)type] += add;
- }
- else {
- rb_debug_counter_add_atomic(type, add);
- }
+ rb_debug_counter[(int)type] += add;
}
return cond;
}
-inline static int
-rb_debug_counter_max(enum rb_debug_counter_type type, unsigned int num)
-{
- // TODO: sync
- if (rb_debug_counter[(int)type] < num) {
- rb_debug_counter[(int)type] = num;
- return 1;
- }
- else {
- return 0;
- }
-}
-
-VALUE rb_debug_counter_reset(VALUE klass);
-VALUE rb_debug_counter_show(VALUE klass);
-
#define RB_DEBUG_COUNTER_INC(type) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, 1)
#define RB_DEBUG_COUNTER_INC_UNLESS(type, cond) (!rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, !(cond)))
-#define RB_DEBUG_COUNTER_INC_IF(type, cond) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, !!(cond))
-#define RB_DEBUG_COUNTER_ADD(type, num) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, (num), 1)
-#define RB_DEBUG_COUNTER_SETMAX(type, num) rb_debug_counter_max(RB_DEBUG_COUNTER_##type, (unsigned int)(num))
+#define RB_DEBUG_COUNTER_INC_IF(type, cond) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, (cond))
#else
#define RB_DEBUG_COUNTER_INC(type) ((void)0)
-#define RB_DEBUG_COUNTER_INC_UNLESS(type, cond) (!!(cond))
-#define RB_DEBUG_COUNTER_INC_IF(type, cond) (!!(cond))
-#define RB_DEBUG_COUNTER_ADD(type, num) ((void)0)
-#define RB_DEBUG_COUNTER_SETMAX(type, num) 0
+#define RB_DEBUG_COUNTER_INC_UNLESS(type, cond) (cond)
+#define RB_DEBUG_COUNTER_INC_IF(type, cond) (cond)
#endif
-void rb_debug_counter_show_results(const char *msg);
-
-RUBY_SYMBOL_EXPORT_BEGIN
-
-size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr);
-void ruby_debug_counter_reset(void);
-void ruby_debug_counter_show_at_exit(int enable);
-
-RUBY_SYMBOL_EXPORT_END
-
#endif /* RUBY_DEBUG_COUNTER_H */
diff --git a/defs/gmake.mk b/defs/gmake.mk
index 1d81da8bf6..d961e27f77 100644
--- a/defs/gmake.mk
+++ b/defs/gmake.mk
@@ -1,52 +1,29 @@
-# -*- mode: makefile-gmake; indent-tabs-mode: t -*-
-
-reconfig config.status: export MAKE:=$(MAKE)
+# -*- makefile-gmake -*-
+gnumake = yes
override gnumake_recursive := $(if $(findstring n,$(firstword $(MFLAGS))),,+)
override mflags := $(filter-out -j%,$(MFLAGS))
MSPECOPT += $(if $(filter -j%,$(MFLAGS)),-j)
-nproc = $(subst -j,,$(filter -j%,$(MFLAGS)))
-
-ifeq ($(GITHUB_ACTIONS),true)
-override ACTIONS_GROUP = @echo "\#\#[group]$(patsubst yes-%,%,$@)"
-override ACTIONS_ENDGROUP = @echo "\#\#[endgroup]"
-endif
-
-ifneq ($(filter darwin%,$(target_os)),)
-# Remove debug option not to generate thousands of .dSYM
-RJIT_DEBUGFLAGS := $(filter-out -g%,$(RJIT_DEBUGFLAGS))
-
-INSTRUBY_ENV += SDKROOT=
-endif
-INSTRUBY_ARGS += --gnumake
-ifeq ($(DOT_WAIT),)
CHECK_TARGETS := great exam love check test check% test% btest%
# expand test targets, and those dependents
TEST_TARGETS := $(filter $(CHECK_TARGETS),$(MAKECMDGOALS))
TEST_DEPENDS := $(filter-out commit $(TEST_TARGETS),$(MAKECMDGOALS))
TEST_TARGETS := $(patsubst great,exam,$(TEST_TARGETS))
TEST_DEPENDS := $(filter-out great $(TEST_TARGETS),$(TEST_DEPENDS))
-TEST_TARGETS := $(patsubst exam,test-bundled-gems yes-test-bundler-parallel check,$(TEST_TARGETS))
-TEST_TARGETS := $(patsubst check,test-syntax-suggest test-spec test-all test-tool test-short,$(TEST_TARGETS))
+TEST_TARGETS := $(patsubst exam,check test-rubyspec,$(TEST_TARGETS))
TEST_TARGETS := $(patsubst test-rubyspec,test-spec,$(TEST_TARGETS))
-TEST_DEPENDS := $(filter-out exam check test-spec $(TEST_TARGETS),$(TEST_DEPENDS))
+TEST_DEPENDS := $(filter-out exam $(TEST_TARGETS),$(TEST_DEPENDS))
TEST_TARGETS := $(patsubst love,check,$(TEST_TARGETS))
TEST_DEPENDS := $(filter-out love $(TEST_TARGETS),$(TEST_DEPENDS))
-TEST_TARGETS := $(patsubst test-almost,test-all,$(patsubst check-%,test test-%,$(TEST_TARGETS)))
-TEST_DEPENDS := $(filter-out test-all $(TEST_TARGETS),$(TEST_DEPENDS))
-TEST_TARGETS := $(patsubst test,test-short,$(TEST_TARGETS))
+TEST_TARGETS := $(patsubst check,test test-testframework test-almost,$(patsubst check-%,test test-%,$(TEST_TARGETS)))
+TEST_DEPENDS := $(filter-out check $(TEST_TARGETS),$(TEST_DEPENDS))
+TEST_TARGETS := $(patsubst test,btest-ruby test-knownbug test-basic,$(TEST_TARGETS))
TEST_DEPENDS := $(filter-out test $(TEST_TARGETS),$(TEST_DEPENDS))
-TEST_TARGETS := $(patsubst test-short,btest-ruby test-knownbug test-basic,$(TEST_TARGETS))
-TEST_TARGETS := $(patsubst test-bundled-gems,test-bundled-gems-run,$(TEST_TARGETS))
-TEST_TARGETS := $(patsubst test-bundled-gems-run,test-bundled-gems-run $(PREPARE_BUNDLED_GEMS),$(TEST_TARGETS))
-TEST_TARGETS := $(patsubst test-bundled-gems-prepare,test-bundled-gems-prepare $(PRECHECK_BUNDLED_GEMS) test-bundled-gems-fetch,$(TEST_TARGETS))
-TEST_TARGETS := $(patsubst test-bundler-parallel,test-bundler-parallel $(PREPARE_BUNDLER),$(TEST_TARGETS))
-TEST_TARGETS := $(patsubst test-syntax-suggest,test-syntax-suggest $(PREPARE_SYNTAX_SUGGEST),$(TEST_TARGETS))
-TEST_DEPENDS := $(filter-out test-short $(TEST_TARGETS),$(TEST_DEPENDS))
TEST_DEPENDS += $(if $(filter great exam love check,$(MAKECMDGOALS)),all exts)
-endif
-in-srcdir := $(if $(filter-out .,$(srcdir)),$(CHDIR) $(srcdir) &&)
+ifneq ($(filter -O0 -Od,$(optflags)),)
+override XCFLAGS := $(filter-out -D_FORTIFY_SOURCE=%,$(XCFLAGS))
+endif
ifeq ($(if $(filter all main exts enc trans libencs libenc libtrans \
prog program ruby ruby$(EXEEXT) \
@@ -56,13 +33,6 @@ ifeq ($(if $(filter all main exts enc trans libencs libenc libtrans \
-include $(SHOWFLAGS)
endif
-ifeq ($(HAVE_BASERUBY):$(HAVE_GIT),yes:yes)
-override modified := $(shell $(BASERUBY) -C $(srcdir) tool/file2lastrev.rb --modified='%Y %m %d')
-override RUBY_RELEASE_YEAR := $(word 1,$(modified))
-override RUBY_RELEASE_MONTH := $(word 2,$(modified))
-override RUBY_RELEASE_DAY := $(word 3,$(modified))
-endif
-
ifneq ($(filter universal-%,$(arch)),)
define archcmd
%.$(1).S: %.c
@@ -82,7 +52,6 @@ $(foreach arch,$(filter -arch=%,$(subst -arch ,-arch=,$(ARCH_FLAG))),\
$(eval $(call archcmd,$(patsubst -arch=%,%,$(value arch)),$(patsubst -arch=%,-arch %,$(value arch)))))
endif
-ifeq ($(DOT_WAIT),)
.PHONY: $(addprefix yes-,$(TEST_TARGETS))
ifneq ($(filter-out btest%,$(TEST_TARGETS)),)
@@ -91,17 +60,13 @@ endif
ORDERED_TEST_TARGETS := $(filter $(TEST_TARGETS), \
btest-ruby test-knownbug test-basic \
- test-testframework test-tool test-ruby test-all \
- test-spec test-syntax-suggest-prepare test-syntax-suggest \
- test-bundler-prepare test-bundler test-bundler-parallel \
- test-bundled-gems-precheck test-bundled-gems-fetch \
- test-bundled-gems-prepare test-bundled-gems-run \
+ test-testframework test-ruby test-almost test-all \
+ test-spec \
)
prev_test := $(if $(filter test-spec,$(ORDERED_TEST_TARGETS)),test-spec-precheck)
$(foreach test,$(ORDERED_TEST_TARGETS), \
$(eval yes-$(value test) no-$(value test): $(value prev_test)); \
$(eval prev_test := $(value test)))
-endif
ifneq ($(if $(filter install,$(MAKECMDGOALS)),$(filter uninstall,$(MAKECMDGOALS))),)
install-targets := $(filter install uninstall,$(MAKECMDGOALS))
@@ -118,14 +83,10 @@ showflags: up
sudo-precheck: test yes-test-testframework no-test-testframework
install-prereq: sudo-precheck
yes-test-all no-test-all: install
+yes-test-almost no-test-almost: install
endif
-yes-test-bundler-parallel: PARALLELRSPECOPTS += $(if $(nproc),-n$(shell expr $(nproc) + $(nproc) / 2))
-
-# Cross reference needs to parse all files at once
-love install reinstall: RDOCFLAGS = --force-update
-
-ifneq ($(if $(filter -flto%,$(CFLAGS)),$(subst darwin,,$(arch)),$(arch)),$(arch))
-override EXE_LDFLAGS = $(filter-out -g%,$(LDFLAGS))
+ifneq ($(filter great,$(MAKECMDGOALS)),)
+love: test-rubyspec
endif
$(srcdir)/missing/des_tables.c: $(srcdir)/missing/crypt.c
@@ -133,7 +94,7 @@ ifeq ($(if $(filter yes,$(CROSS_COMPILING)),,$(CC)),)
touch $@
else
@$(ECHO) building make_des_table
- $(CC) $(INCFLAGS) $(CPPFLAGS) -DDUMP $(EXE_LDFLAGS) $(XLDFLAGS) $(LIBS) -omake_des_table $(srcdir)/missing/crypt.c
+ $(CC) $(CPPFLAGS) -DDUMP $(LDFLAGS) $(XLDFLAGS) $(LIBS) -omake_des_table $(srcdir)/missing/crypt.c
@[ -x ./make_des_table ]
@$(ECHO) generating $@
$(Q) $(MAKEDIRS) $(@D)
@@ -142,8 +103,6 @@ else
$(Q) $(RMALL) make_des_table*
endif
-config.status: $(wildcard config.cache)
-
STUBPROGRAM = rubystub$(EXEEXT)
IGNOREDPATTERNS = %~ .% %.orig %.rej \#%\#
SCRIPTBINDIR := $(if $(EXEEXT),,exec/)
@@ -162,7 +121,7 @@ $(STUBPROGRAM): rubystub.$(OBJEXT) $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SE
rubystub$(EXEEXT):
@rm -f $@
$(ECHO) linking $@
- $(Q) $(PURIFY) $(CC) $(EXE_LDFLAGS) $(XLDFLAGS) rubystub.$(OBJEXT) $(EXTOBJS) $(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@
+ $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) rubystub.$(OBJEXT) $(EXTOBJS) $(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@
$(Q) $(POSTLINK)
$(if $(STRIP),$(Q) $(STRIP) $@)
@@ -173,324 +132,15 @@ $(SCRIPTBINDIR)%$(EXEEXT): bin/% $(STUBPROGRAM) \
$(Q) chmod +x $@
$(Q) $(POSTLINK)
-$(SCRIPTBINDIR):
- $(Q) mkdir $@
+$(TIMESTAMPDIR)/.exec.time:
+ $(Q) mkdir exec
+ $(Q) exit > $@
.PHONY: commit
-commit: $(if $(filter commit,$(MAKECMDGOALS)),$(filter-out commit,$(MAKECMDGOALS))) up
- @$(BASERUBY) -C "$(srcdir)" -I./tool/lib -rvcs -e 'VCS.detect(".").commit'
- +$(Q) \
- { \
- $(in-srcdir) \
- exec sed -f tool/prereq.status defs/gmake.mk template/Makefile.in common.mk; \
- } | \
- $(MAKE) $(mflags) Q=$(Q) ECHO=$(ECHO) srcdir="$(srcdir)" srcs_vpath="" CHDIR="$(CHDIR)" \
- BOOTSTRAPRUBY="$(BOOTSTRAPRUBY)" MINIRUBY="$(BASERUBY)" BASERUBY="$(BASERUBY)" \
- VCSUP="" ENC_MK=.top-enc.mk REVISION_FORCE=PHONY CONFIGURE="$(CONFIGURE)" -f - \
- update-src srcs all-incs
-
-GITHUB_RUBY_URL = https://github.com/ruby/ruby
-PR =
-
-COMMIT_GPG_SIGN = $(shell $(GIT) -C "$(srcdir)" config commit.gpgsign)
-REMOTE_GITHUB_URL = $(shell $(GIT) -C "$(srcdir)" config remote.github.url)
-COMMITS_NOTES = commits
-
-.PHONY: fetch-github
-fetch-github:
- $(call fetch-github,$(PR))
-
-define fetch-github
- $(if $(1),,\
- echo "usage:"; echo " make $@ PR=1234"; \
- exit 1; \
- )
- $(eval REMOTE_GITHUB_URL := $(REMOTE_GITHUB_URL))
- $(if $(REMOTE_GITHUB_URL),,
- echo adding $(GITHUB_RUBY_URL) as remote github
- $(GIT) -C "$(srcdir)" remote add github $(GITHUB_RUBY_URL)
- $(GIT) -C "$(srcdir)" config --add remote.github.fetch +refs/notes/$(COMMITS_NOTES):refs/notes/$(COMMITS_NOTES)
- $(eval REMOTE_GITHUB_URL := $(GITHUB_RUBY_URL))
- )
- $(if $(shell $(GIT) -C "$(srcdir)" rev-parse "github/pull/$(1)/head" -- 2> /dev/null),
- $(GIT) -C "$(srcdir)" branch -f "gh-$(1)" "github/pull/$(1)/head",
- $(GIT) -C "$(srcdir)" fetch -f github "pull/$(1)/head:gh-$(1)"
- )
-endef
-
-.PHONY: checkout-github
-checkout-github: fetch-github
- $(GIT) -C "$(srcdir)" checkout "gh-$(PR)"
-
-.PHONY: update-github
-update-github: fetch-github
- $(eval PULL_REQUEST_API := https://api.github.com/repos/ruby/ruby/pulls/$(PR))
- $(eval PULL_REQUEST_FORK_BRANCH := $(shell \
- curl -s $(if $(GITHUB_TOKEN),-H "Authorization: bearer $(GITHUB_TOKEN)") $(PULL_REQUEST_API) | \
- $(BASERUBY) -rjson -e 'JSON.parse(STDIN.read)["head"].tap { |h| print "#{h["repo"]["full_name"]} #{h["ref"]}" }' \
- ))
- $(eval FORK_REPO := $(word 1,$(PULL_REQUEST_FORK_BRANCH)))
- $(eval PR_BRANCH := $(word 2,$(PULL_REQUEST_FORK_BRANCH)))
-
- $(eval GITHUB_UPDATE_WORKTREE := $(shell mktemp -d "$(srcdir)/gh-$(PR)-XXXXXX"))
- $(GIT) -C "$(srcdir)" worktree add $(notdir $(GITHUB_UPDATE_WORKTREE)) "gh-$(PR)"
- $(GIT) -C "$(GITHUB_UPDATE_WORKTREE)" merge master --no-edit
- @$(BASERUBY) -e 'print "Are you sure to push this to PR=$(PR)? [Y/n]: "; exit(gets.chomp != "n")'
- $(GIT) -C "$(srcdir)" remote add fork-$(PR) git@github.com:$(FORK_REPO).git
- $(GIT) -C "$(GITHUB_UPDATE_WORKTREE)" push fork-$(PR) gh-$(PR):$(PR_BRANCH)
- $(GIT) -C "$(srcdir)" remote rm fork-$(PR)
- $(GIT) -C "$(srcdir)" worktree remove $(notdir $(GITHUB_UPDATE_WORKTREE))
- $(GIT) -C "$(srcdir)" branch -D gh-$(PR)
-
-.PHONY: pull-github
-pull-github: fetch-github
- $(call pull-github,$(PR))
-
-define pull-github
- $(eval GITHUB_MERGE_BASE := $(shell $(GIT) -C "$(srcdir)" log -1 --format=format:%H))
- $(eval GITHUB_MERGE_BRANCH := $(shell $(GIT) -C "$(srcdir)" symbolic-ref --short HEAD))
- $(eval GITHUB_MERGE_WORKTREE := $(shell mktemp -d "$(srcdir)/gh-$(1)-XXXXXX"))
- $(GIT) -C "$(srcdir)" worktree prune
- $(GIT) -C "$(srcdir)" worktree add $(notdir $(GITHUB_MERGE_WORKTREE)) "gh-$(1)"
- $(GIT) -C "$(GITHUB_MERGE_WORKTREE)" rebase $(GITHUB_MERGE_BRANCH)
- $(eval COMMIT_GPG_SIGN := $(COMMIT_GPG_SIGN))
- $(if $(filter true,$(COMMIT_GPG_SIGN)), \
- $(GIT) -C "$(GITHUB_MERGE_WORKTREE)" rebase --exec "$(GIT) commit --amend --no-edit -S" "$(GITHUB_MERGE_BASE)"; \
- )
- $(GIT) -C "$(GITHUB_MERGE_WORKTREE)" rebase --exec "$(GIT) notes add --message 'Merged: $(GITHUB_RUBY_URL)/pull/$(1)'" "$(GITHUB_MERGE_BASE)"
-endef
-
-.PHONY: fetch-github-%
-fetch-github-%:
- $(call fetch-github,$*)
-
-.PHONY: checkout-github-%
-checkout-github-%: fetch-github-%
- $(GIT) -C "$(srcdir)" checkout "gh-$*"
-
-.PHONY: pr-% pull-github-%
-pr-% pull-github-%: fetch-github-%
- $(call pull-github,$*)
-
-HELP_EXTRA_TASKS = \
- " checkout-github: checkout GitHub Pull Request [PR=1234]" \
- " pull-github: rebase GitHub Pull Request to new worktree [PR=1234]" \
- " update-github: merge master branch and push it to Pull Request [PR=1234]" \
- " tags: generate TAGS file" \
- ""
-
-# 1. squeeze spaces
-# 2. strip and skip comment/empty lines
-# 3. "gem x.y.z URL xxxxxx" -> "gem|x.y.z|xxxxxx|URL"
-# 4. "gem x.y.z URL" -> "gem-x.y.z"
-bundled-gems := $(shell sed \
- -e 's/[ ][ ]*/ /g' \
- -e 's/^ //;/\#/d;s/ *$$//;/^$$/d' \
- $(if $(filter yes,$(HAVE_GIT)), \
- -e 's/^\(.*\) \(.*\) \(.*\) \(.*\)/\1|\2|\4|\3/' \
- ) \
- -e 's/ /-/;s/ .*//' \
- $(srcdir)/gems/bundled_gems)
-
-bundled-gems-rev := $(filter-out $(subst |,,$(bundled-gems)),$(bundled-gems))
-bundled-gems := $(filter-out $(bundled-gems-rev),$(bundled-gems))
-
-# calls $(1) with name, version, revision, URL
-foreach-bundled-gems-rev = \
- $(foreach g,$(bundled-gems-rev),$(call foreach-bundled-gems-rev-0,$(1),$(subst |, ,$(value g))))
-foreach-bundled-gems-rev-0 = \
- $(call $(1),$(word 1,$(2)),$(word 2,$(2)),$(word 3,$(2)),$(word 4,$(2)))
-bundled-gem-gemfile = $(srcdir)/gems/$(1)-$(2).gem
-bundled-gem-gemspec = $(srcdir)/gems/src/$(1)/$(1).gemspec
-bundled-gem-extracted = $(srcdir)/.bundle/gems/$(1)-$(2)
-
-update-gems: | $(patsubst %,$(srcdir)/gems/%.gem,$(bundled-gems))
-update-gems: | $(call foreach-bundled-gems-rev,bundled-gem-gemfile)
-update-gems: | $(call foreach-bundled-gems-rev,bundled-gem-gemspec)
-
-test-bundler-precheck: | $(srcdir)/.bundle/cache
-
-$(srcdir)/.bundle/cache:
- $(MAKEDIRS) $(@D) $(CACHE_DIR)
- $(LN_S) ../.downloaded-cache $@
-
-$(srcdir)/gems/%.gem:
- $(ECHO) Downloading bundled gem $*...
- $(Q) $(BASERUBY) -C "$(srcdir)" \
- -I./tool -rdownloader \
- -e 'gem = "$(@F)"' \
- -e 'old = Dir.glob("gems/"+gem.sub(/-[^-]*$$/, "-*.gem"))' \
- -e 'Downloader::RubyGems.download(gem, "gems", nil) and' \
- -e '(old.delete("gems/#{gem}"); !old.empty?) and' \
- -e 'File.unlink(*old) and' \
- -e 'FileUtils.rm_rf(old.map{'"|n|"'n.chomp(".gem")})'
-
-extract-gems: | $(patsubst %,$(srcdir)/.bundle/gems/%,$(bundled-gems))
-extract-gems: | $(call foreach-bundled-gems-rev,bundled-gem-extracted)
+commit: $(if $(filter commit,$(MAKECMDGOALS)),$(filter-out commit,$(MAKECMDGOALS)))
+ @$(BASERUBY) -C "$(srcdir)" -I./tool -rvcs -e 'VCS.detect(".").commit'
+ $(Q)$(MAKE) $(mflags) Q=$(Q) REVISION_FORCE=PHONY update-src srcs all-incs
-$(srcdir)/.bundle/gems/%: $(srcdir)/gems/%.gem | .bundle/gems
- $(ECHO) Extracting bundle gem $*...
- $(Q) $(BASERUBY) -C "$(srcdir)" \
- -Itool/lib -rbundled_gem \
- -e 'BundledGem.unpack("gems/$(@F).gem", ".bundle")'
-
-$(srcdir)/.bundle/.timestamp:
- $(MAKEDIRS) $@
-
-define build-gem
-$(srcdir)/gems/src/$(1)/.git: | $(srcdir)/gems/src
- $(ECHO) Cloning $(4)
- $(Q) $(GIT) clone $(4) $$(@D)
-
-$(srcdir)/.bundle/.timestamp/$(1).revision: \
- $(if $(if $(wildcard $$(@)),$(filter $(3),$(shell cat $$(@)))),,PHONY) \
- | $(srcdir)/.bundle/.timestamp $(srcdir)/gems/src/$(1)/.git
- $(ECHO) Update $(1) to $(3)
- $(Q) $(CHDIR) "$(srcdir)/gems/src/$(1)" && \
- $(GIT) fetch origin $(3) && \
- $(GIT) checkout --detach $(3) && \
- :
- echo $(3) | $(IFCHANGE) $$(@) -
-
-# The repository of minitest does not include minitest.gemspec because it uses hoe.
-# This creates a dummy gemspec.
-$(srcdir)/gems/src/$(1)/$(1).gemspec: $(srcdir)/.bundle/.timestamp/$(1).revision \
- | $(srcdir)/gems/src/$(1)/.git
- $(Q) $(BASERUBY) -I$(tooldir)/lib -rbundled_gem -e 'BundledGem.dummy_gemspec(*ARGV)' $$(@)
-
-$(srcdir)/gems/$(1)-$(2).gem: $(srcdir)/gems/src/$(1)/$(1).gemspec \
- $(srcdir)/.bundle/.timestamp/$(1).revision
- $(ECHO) Building $(1)@$(3) to $$(@)
- $(Q) $(BASERUBY) -C "$(srcdir)" \
- -Itool/lib -rbundled_gem \
- -e 'BundledGem.build("gems/src/$(1)/$(1).gemspec", "$(2)", "gems", validation: false)'
-
-endef
-define build-gem-0
-$(eval $(call build-gem,$(1),$(2),$(3),$(4)))
-endef
-
-$(call foreach-bundled-gems-rev,build-gem-0)
-
-$(srcdir)/gems/src:
- $(MAKEDIRS) $@
-
-$(srcdir)/.bundle/gems:
- $(MAKEDIRS) $@
-
-ifneq ($(DOT_WAIT),)
-up:: $(DOT_WAIT) after-update
-endif
-
-ifneq ($(filter update-bundled_gems refresh-gems,$(MAKECMDGOALS)),)
-update-gems: update-bundled_gems
-endif
-
-.SECONDARY: update-unicode-files
-.SECONDARY: update-unicode-auxiliary-files
-.SECONDARY: update-unicode-ucd-emoji-files
-.SECONDARY: update-unicode-emoji-files
-
-ifeq ($(HAVE_GIT),yes)
-REVISION_LATEST := $(shell $(CHDIR) $(srcdir) && $(GIT) log -1 --format=%H 2>/dev/null)
-else
-REVISION_LATEST := update
-endif
-REVISION_IN_HEADER := $(shell sed '/^\#define RUBY_FULL_REVISION "\(.*\)"/!d;s//\1/;q' $(wildcard $(srcdir)/revision.h revision.h) /dev/null 2>/dev/null)
-ifeq ($(REVISION_IN_HEADER),)
-REVISION_IN_HEADER := none
+ifeq ($(words $(filter update-gems extract-gems,$(MAKECMDGOALS))),2)
+extract-gems: update-gems
endif
-ifneq ($(REVISION_IN_HEADER),$(REVISION_LATEST))
-$(REVISION_H): PHONY
-endif
-
-include $(top_srcdir)/yjit/yjit.mk
-
-# Query on the generated rdoc
-#
-# $ make rdoc:Integer#+
-rdoc\:%: PHONY
- $(Q)$(RUNRUBY) $(srcdir)/libexec/ri --no-standard-docs --doc-dir=$(RDOCOUT) $(patsubst rdoc:%,%,$@)
-
-test_%.rb test/%: programs PHONY
- $(Q)$(exec) $(RUNRUBY) "$(TESTSDIR)/runner.rb" --ruby="$(RUNRUBY)" $(TEST_EXCLUDES) $(TESTOPTS) -- $(patsubst test/%,%,$@)
-
-spec/bundler/%: PHONY
- $(Q)$(exec) $(XRUBY) -C $(srcdir) -Ispec/bundler .bundle/bin/rspec --require spec_helper $(RSPECOPTS) $@
-
-spec/bundler: test-bundler-parallel
- $(Q)$(NULLCMD)
-
-# workaround to avoid matching non ruby files with "spec/%/" under GNU make 3.81
-spec/%_spec.c:
- $(empty)
-$(srcdir)/$(RUBYSPEC_CAPIEXT)/rubyspec.h:
- $(empty)
-
-benchmark/%: miniruby$(EXEEXT) update-benchmark-driver PHONY
- $(Q)$(BASERUBY) -rrubygems -I$(srcdir)/benchmark/lib $(srcdir)/benchmark/benchmark-driver/exe/benchmark-driver \
- --executables="compare-ruby::$(COMPARE_RUBY) -I$(EXTOUT)/common --disable-gem" \
- --executables="built-ruby::$(BENCH_RUBY) --disable-gem" \
- $(srcdir)/$@ $(BENCH_OPTS) $(OPTS)
-
-clean-srcs-ext::
- $(Q)$(RM) $(patsubst $(srcdir)/%,%,$(EXT_SRCS))
-
-clean-srcs-extra::
- $(Q)$(RM) $(patsubst $(srcdir)/%,%,$(EXTRA_SRCS))
-
-ifneq ($(filter $(VCS),git),)
-update-src::
- @$(BASERUBY) $(tooldir)/lib/colorize.rb pass "Latest commit hash = $(shell $(filter-out svn,$(VCS)) -C $(srcdir) rev-parse --short=10 HEAD)"
-endif
-
-# Update dependencies and commit the updates to the current branch.
-update-deps:
- $(eval update_deps := $(shell date +update-deps-%Y%m%d))
- $(eval deps_dir := $(shell mktemp -d)/$(update_deps))
- $(eval GIT_DIR := $(shell $(GIT) -C $(srcdir) rev-parse --absolute-git-dir))
- $(GIT) --git-dir=$(GIT_DIR) worktree add $(deps_dir)
- cp $(tooldir)/config.guess $(tooldir)/config.sub $(deps_dir)/tool
- [ -f config.status ] && cp config.status $(deps_dir)
- cd $(deps_dir) && autoconf && \
- exec ./configure -q -C --enable-load-relative --disable-install-doc --disable-rubygems 'optflags=-O0' 'debugflags=-save-temps=obj -g'
- $(RUNRUBY) -C $(deps_dir) tool/update-deps --fix
- $(GIT) -C $(deps_dir) diff --no-ext-diff --ignore-submodules --exit-code || \
- $(GIT) -C $(deps_dir) commit --all --message='Update dependencies'
- $(GIT) --git-dir=$(GIT_DIR) worktree remove $(deps_dir)
- $(RMDIR) $(dir $(deps_dir))
- $(GIT) --git-dir=$(GIT_DIR) merge --no-edit --ff-only $(update_deps)
- $(GIT) --git-dir=$(GIT_DIR) branch --delete $(update_deps)
-
-# order-only-prerequisites doesn't work for $(RUBYSPEC_CAPIEXT)
-# because the same named directory exists in the source tree.
-$(RUBYSPEC_CAPIEXT)/%.$(DLEXT): $(srcdir)/$(RUBYSPEC_CAPIEXT)/%.c $(srcdir)/$(RUBYSPEC_CAPIEXT)/rubyspec.h $(RUBY_H_INCLUDES) $(LIBRUBY)
- $(ECHO) building $@
- $(Q) $(MAKEDIRS) $(@D)
- $(Q) $(DLDSHARED) -L. $(XDLDFLAGS) $(XLDFLAGS) $(LDFLAGS) $(INCFLAGS) $(CPPFLAGS) $(OUTFLAG)$@ $< $(LIBRUBYARG)
- $(Q) $(RMALL) $@.*
-
-rubyspec-capiext: $(patsubst %.c,$(RUBYSPEC_CAPIEXT)/%.$(DLEXT),$(notdir $(wildcard $(srcdir)/$(RUBYSPEC_CAPIEXT)/*.c)))
- @ $(NULLCMD)
-
-ifeq ($(ENABLE_SHARED),yes)
-exts: rubyspec-capiext
-endif
-
-spec/%/ spec/%_spec.rb: programs exts PHONY
- +$(RUNRUBY) -r./$(arch)-fake $(srcdir)/spec/mspec/bin/mspec-run -B $(srcdir)/spec/default.mspec $(SPECOPTS) $(patsubst %,$(srcdir)/%,$@)
-
-ruby.pc: $(filter-out ruby.pc,$(ruby_pc))
-
-matz: up
- $(eval MINOR := $(shell expr $(MINOR) + 1))
- $(eval message := Development of $(MAJOR).$(MINOR).0 started.)
- $(eval files := include/ruby/version.h include/ruby/internal/abi.h)
- sed -i~ \
- -e "s/^\(#define RUBY_API_VERSION_MINOR\) .*/\1 $(MINOR)/" \
- -e "s/^\(#define RUBY_ABI_VERSION\) .*/\1 0/" \
- $(files:%=$(srcdir)/%)
- $(GIT) -C $(srcdir) commit -m "$(message)" $(files)
-
-tags:
- $(MAKE) GIT="$(GIT)" -C "$(srcdir)" -f defs/tags.mk
diff --git a/defs/id.def b/defs/id.def
index 2ddde7be70..f30b993bd9 100644
--- a/defs/id.def
+++ b/defs/id.def
@@ -2,13 +2,10 @@
firstline, predefined = __LINE__+1, %[\
max
min
- hash
freeze
- nil?
inspect
intern
object_id
- const_added
const_missing
method_missing MethodMissing
method_added
@@ -26,7 +23,7 @@ firstline, predefined = __LINE__+1, %[\
lambda
send
__send__
- __recursive_key__
+ __attached__
initialize
initialize_copy
initialize_clone
@@ -41,42 +38,20 @@ firstline, predefined = __LINE__+1, %[\
to_a
to_s
to_i
- to_f
to_r
bt
bt_locations
call
mesg
exception
- locals
not NOT
and AND
or OR
- div
- divmod
- fdiv
- quo
- name
- nil
- path
_ UScore
-
- # MUST be successive
- _1 NUMPARAM_1
- _2 NUMPARAM_2
- _3 NUMPARAM_3
- _4 NUMPARAM_4
- _5 NUMPARAM_5
- _6 NUMPARAM_6
- _7 NUMPARAM_7
- _8 NUMPARAM_8
- _9 NUMPARAM_9
-
"/*NULL*/" NULL
empty?
eql?
- default
respond_to? Respond_to
respond_to_missing? Respond_to_missing
<IFUNC>
@@ -87,24 +62,21 @@ firstline, predefined = __LINE__+1, %[\
core#define_method
core#define_singleton_method
core#set_postexe
+ core#hash_from_ary
+ core#hash_merge_ary
core#hash_merge_ptr
core#hash_merge_kwd
- core#raise
- core#sprintf
- debug#created_info
$_ LASTLINE
$~ BACKREF
- $! ERROR_INFO
]
# VM ID OP Parser Token
token_ops = %[\
Dot2 .. DOT2
Dot3 ... DOT3
- BDot2 .. BDOT2
- BDot3 ... BDOT3
UPlus +@ UPLUS
UMinus -@ UMINUS
Pow ** POW
@@ -124,8 +96,6 @@ token_ops = %[\
Eqq === EQQ
Neq != NEQ
Not !
- And &
- Or |
Backquote `
EqTilde =~ MATCH
NeqTilde !~ NMATCH
@@ -143,21 +113,6 @@ class KeywordError < RuntimeError
end
end
-def id2varname(token, prefix = nil)
- if /#/ =~ token
- token = "_#{token.gsub(/\W+/, '_')}"
- else
- token = token.sub(/\?/, 'P')
- token = prefix + token if prefix
- token.sub!(/\A[a-z]/) {$&.upcase}
- token.sub!(/\A\$/, "_G_")
- token.sub!(/\A@@/, "_C_")
- token.sub!(/\A@/, "_I_")
- token.gsub!(/\W+/, "")
- end
- token
-end
-
predefined_ids = {}
preserved_ids = []
local_ids = []
@@ -173,7 +128,16 @@ predefined.split(/^/).each_with_index do |line, num|
line.sub!(/\s+#.*/, '')
name, token = line.split
next unless name
- token = id2varname(token || name)
+ token ||= name
+ if /#/ =~ token
+ token = "_#{token.gsub(/\W+/, '_')}"
+ else
+ token = token.sub(/\?/, 'P').sub(/\A[a-z]/) {$&.upcase}
+ token.sub!(/\A\$/, "_G_")
+ token.sub!(/\A@@/, "_C_")
+ token.sub!(/\A@/, "_I_")
+ token.gsub!(/\W+/, "")
+ end
if name == '-'
preserved_ids << token
next
@@ -196,14 +160,13 @@ predefined.split(/^/).each_with_index do |line, num|
end << token
predefined_ids[token] = name
end
-index = 127
token_ops.split(/^/).each do |line|
next if /^#/ =~ line
line.sub!(/\s+#.*/, '')
id, op, token = line.split
next unless id and op
token ||= (id unless /\A\W\z/ =~ op)
- token_op_ids << [id, op, token, (index += 1 if token)]
+ token_op_ids << [id, op, token]
end
{
"LOCAL" => local_ids,
@@ -215,5 +178,4 @@ end
:preserved => preserved_ids,
:predefined => predefined_ids,
:token_op => token_op_ids,
- :last_token => index,
}
diff --git a/defs/keywords b/defs/keywords
index a1b1f4f60f..7f5422faef 100644
--- a/defs/keywords
+++ b/defs/keywords
@@ -1,8 +1,8 @@
%{
-struct kwtable {short name, id[2], state;};
+struct kwtable {int name, id[2], state;};
const struct kwtable *rb_reserved_word(const char *, unsigned int);
#ifndef RIPPER
-static const struct kwtable *reserved_word(register const char *str, register size_t len);
+static const struct kwtable *reserved_word(/*!ANSI{*/const char *, unsigned int/*}!ANSI*/);
#define rb_reserved_word(str, len) reserved_word(str, len)
%}
diff --git a/defs/known_errors.def b/defs/known_errors.def
index e9694cfbda..b9c490d3a2 100644
--- a/defs/known_errors.def
+++ b/defs/known_errors.def
@@ -1,157 +1,148 @@
+EPERM
+ENOENT
+ESRCH
+EINTR
+EIO
+ENXIO
E2BIG
-EACCES
-EADDRINUSE
-EADDRNOTAVAIL
-EADV
-EAFNOSUPPORT
+ENOEXEC
+EBADF
+ECHILD
EAGAIN
-EALREADY
-EAUTH
-EBADARCH
+ENOMEM
+EACCES
+EFAULT
+ENOTBLK
+EBUSY
+EEXIST
+EXDEV
+ENODEV
+ENOTDIR
+EISDIR
+EINVAL
+ENFILE
+EMFILE
+ENOTTY
+ETXTBSY
+EFBIG
+ENOSPC
+ESPIPE
+EROFS
+EMLINK
+EPIPE
+EDOM
+ERANGE
+EDEADLK
+ENAMETOOLONG
+ENOLCK
+ENOSYS
+ENOTEMPTY
+ELOOP
+EWOULDBLOCK
+ENOMSG
+EIDRM
+ECHRNG
+EL2NSYNC
+EL3HLT
+EL3RST
+ELNRNG
+EUNATCH
+ENOCSI
+EL2HLT
EBADE
-EBADEXEC
-EBADF
-EBADFD
-EBADMACHO
-EBADMSG
EBADR
-EBADRPC
+EXFULL
+ENOANO
EBADRQC
EBADSLT
+EDEADLOCK
EBFONT
-EBUSY
-ECANCELED
-ECAPMODE
-ECHILD
-ECHRNG
+ENOSTR
+ENODATA
+ETIME
+ENOSR
+ENONET
+ENOPKG
+EREMOTE
+ENOLINK
+EADV
+ESRMNT
ECOMM
+EPROTO
+EMULTIHOP
+EDOTDOT
+EBADMSG
+EOVERFLOW
+ENOTUNIQ
+EBADFD
+EREMCHG
+ELIBACC
+ELIBBAD
+ELIBSCN
+ELIBMAX
+ELIBEXEC
+EILSEQ
+ERESTART
+ESTRPIPE
+EUSERS
+ENOTSOCK
+EDESTADDRREQ
+EMSGSIZE
+EPROTOTYPE
+ENOPROTOOPT
+EPROTONOSUPPORT
+ESOCKTNOSUPPORT
+EOPNOTSUPP
+EPFNOSUPPORT
+EAFNOSUPPORT
+EADDRINUSE
+EADDRNOTAVAIL
+ENETDOWN
+ENETUNREACH
+ENETRESET
ECONNABORTED
-ECONNREFUSED
ECONNRESET
-EDEADLK
-EDEADLOCK
-EDESTADDRREQ
-EDEVERR
-EDOM
-EDOOFUS
-EDOTDOT
-EDQUOT
-EEXIST
-EFAULT
-EFBIG
-EFTYPE
+ENOBUFS
+EISCONN
+ENOTCONN
+ESHUTDOWN
+ETOOMANYREFS
+ETIMEDOUT
+ECONNREFUSED
EHOSTDOWN
EHOSTUNREACH
-EHWPOISON
-EIDRM
-EILSEQ
+EALREADY
EINPROGRESS
-EINTR
-EINVAL
-EIO
-EIPSEC
-EISCONN
-EISDIR
+ESTALE
+EUCLEAN
+ENOTNAM
+ENAVAIL
EISNAM
+EREMOTEIO
+EDQUOT
+ECANCELED
EKEYEXPIRED
EKEYREJECTED
EKEYREVOKED
-EL2HLT
-EL2NSYNC
-EL3HLT
-EL3RST
-ELAST
-ELIBACC
-ELIBBAD
-ELIBEXEC
-ELIBMAX
-ELIBSCN
-ELNRNG
-ELOOP
EMEDIUMTYPE
-EMFILE
-EMLINK
-EMSGSIZE
-EMULTIHOP
-ENAMETOOLONG
-ENAVAIL
-ENEEDAUTH
-ENETDOWN
-ENETRESET
-ENETUNREACH
-ENFILE
-ENOANO
-ENOATTR
-ENOBUFS
-ENOCSI
-ENODATA
-ENODEV
-ENOENT
-ENOEXEC
ENOKEY
-ENOLCK
-ENOLINK
ENOMEDIUM
-ENOMEM
-ENOMSG
-ENONET
-ENOPKG
-ENOPOLICY
-ENOPROTOOPT
-ENOSPC
-ENOSR
-ENOSTR
-ENOSYS
-ENOTBLK
-ENOTCAPABLE
-ENOTCONN
-ENOTDIR
-ENOTEMPTY
-ENOTNAM
ENOTRECOVERABLE
-ENOTSOCK
-ENOTSUP
-ENOTTY
-ENOTUNIQ
-ENXIO
-EOPNOTSUPP
-EOVERFLOW
EOWNERDEAD
-EPERM
-EPFNOSUPPORT
-EPIPE
+ERFKILL
+EAUTH
+EBADRPC
+EDOOFUS
+EFTYPE
+ENEEDAUTH
+ENOATTR
+ENOTSUP
EPROCLIM
EPROCUNAVAIL
EPROGMISMATCH
EPROGUNAVAIL
-EPROTO
-EPROTONOSUPPORT
-EPROTOTYPE
-EPWROFF
-EQFULL
-ERANGE
-EREMCHG
-EREMOTE
-EREMOTEIO
-ERESTART
-ERFKILL
-EROFS
ERPCMISMATCH
-ESHLIBVERS
-ESHUTDOWN
-ESOCKTNOSUPPORT
-ESPIPE
-ESRCH
-ESRMNT
-ESTALE
-ESTRPIPE
-ETIME
-ETIMEDOUT
-ETOOMANYREFS
-ETXTBSY
-EUCLEAN
-EUNATCH
-EUSERS
-EWOULDBLOCK
-EXDEV
-EXFULL
+EIPSEC
+EHWPOISON
+ECAPMODE
+ENOTCAPABLE
diff --git a/defs/lex.c.src b/defs/lex.c.src
index a1b1f4f60f..7f5422faef 100644
--- a/defs/lex.c.src
+++ b/defs/lex.c.src
@@ -1,8 +1,8 @@
%{
-struct kwtable {short name, id[2], state;};
+struct kwtable {int name, id[2], state;};
const struct kwtable *rb_reserved_word(const char *, unsigned int);
#ifndef RIPPER
-static const struct kwtable *reserved_word(register const char *str, register size_t len);
+static const struct kwtable *reserved_word(/*!ANSI{*/const char *, unsigned int/*}!ANSI*/);
#define rb_reserved_word(str, len) reserved_word(str, len)
%}
diff --git a/defs/separated_version.mk b/defs/separated_version.mk
index 72ee093da7..f086f4b24a 100644
--- a/defs/separated_version.mk
+++ b/defs/separated_version.mk
@@ -1,6 +1,6 @@
# ******** FOR DEVELEPERS ONLY ********
# Separate version.o into a shared library which varies every
-# revisions, in order to make the rest shareable.
+# revisions, in order to make the rest sharable.
include $(firstword $(wildcard GNUmakefile Makefile))
diff --git a/defs/tags.mk b/defs/tags.mk
deleted file mode 100644
index d29260c294..0000000000
--- a/defs/tags.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- mode: makefile-gmake; indent-tabs-mode: t -*-
-
-SRCS := $(shell $(GIT) ls-files \
- *.[chy] *.def *.inc *.rb \
- ccan/ coroutine/ include/ internal/ missing/ \
- 'enc/**/*.[ch]' 'win32/**/*.[ch]' \
- )
-
-TAGS: $(SRCS)
- @echo updating $@
- @tmp=$$(mktemp); \
- trap 'rm -f "$$tmp"' 0; \
- { \
- $(GIT) grep -h --no-line-number -o '^ *# *define *RBIMPL_ATTR_[A-Z_]*(*' -- include | \
- sed 's/^ *# *define *//;/_H$$/d;y/(/+/' | sort -u && \
- echo 'NORETURN+'; \
- } > "$$tmp" && \
- ctags -e -I@"$$tmp" -h .def.inc --langmap=c:+.y.def.inc $(^)
diff --git a/dir.c b/dir.c
index ff351bbae1..40bd4eb193 100644
--- a/dir.c
+++ b/dir.c
@@ -11,10 +11,10 @@
**********************************************************************/
-#include "ruby/internal/config.h"
+#include "internal.h"
+#include "encindex.h"
+#include "ruby/thread.h"
-#include <ctype.h>
-#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -34,10 +34,12 @@
# define USE_OPENDIR_AT 0
# endif
#endif
-
#if USE_OPENDIR_AT
# include <fcntl.h>
#endif
+#ifndef AT_FDCWD
+# define AT_FDCWD -1
+#endif
#undef HAVE_DIRENT_NAMLEN
#if defined HAVE_DIRENT_H && !defined _WIN32
@@ -50,13 +52,13 @@
# define dirent direct
# define NAMLEN(dirent) (dirent)->d_namlen
# define HAVE_DIRENT_NAMLEN 1
-# ifdef HAVE_SYS_NDIR_H
+# if HAVE_SYS_NDIR_H
# include <sys/ndir.h>
# endif
-# ifdef HAVE_SYS_DIR_H
+# if HAVE_SYS_DIR_H
# include <sys/dir.h>
# endif
-# ifdef HAVE_NDIR_H
+# if HAVE_NDIR_H
# include <ndir.h>
# endif
# ifdef _WIN32
@@ -64,6 +66,8 @@
# endif
#endif
+#include <errno.h>
+
#ifndef HAVE_STDLIB_H
char *getenv();
#endif
@@ -72,14 +76,36 @@ char *getenv();
char *strchr(char*,char);
#endif
+#include <ctype.h>
+
+#include "ruby/util.h"
+
+#define vm_initialized rb_cThread
+
+/* define system APIs */
+#ifdef _WIN32
+#undef chdir
+#define chdir(p) rb_w32_uchdir(p)
+#undef mkdir
+#define mkdir(p, m) rb_w32_umkdir((p), (m))
+#undef rmdir
+#define rmdir(p) rb_w32_urmdir(p)
+#undef opendir
+#define opendir(p) rb_w32_uopendir(p)
+#define ruby_getcwd() rb_w32_ugetcwd(NULL, 0)
+#define IS_WIN32 1
+#else
+#define IS_WIN32 0
+#endif
+
#ifdef HAVE_SYS_ATTR_H
#include <sys/attr.h>
#endif
#define USE_NAME_ON_FS_REAL_BASENAME 1 /* platform dependent APIs to
- * get real basenames */
+ * get real basenames */
#define USE_NAME_ON_FS_BY_FNMATCH 2 /* select the matching
- * basename by fnmatch */
+ * basename by fnmatch */
#ifdef HAVE_GETATTRLIST
# define USE_NAME_ON_FS USE_NAME_ON_FS_REAL_BASENAME
@@ -95,54 +121,15 @@ char *strchr(char*,char);
#ifdef __APPLE__
# define NORMALIZE_UTF8PATH 1
-# include <sys/param.h>
-# include <sys/mount.h>
-# include <sys/vnode.h>
#else
# define NORMALIZE_UTF8PATH 0
#endif
-#include "encindex.h"
-#include "id.h"
-#include "internal.h"
-#include "internal/array.h"
-#include "internal/dir.h"
-#include "internal/encoding.h"
-#include "internal/error.h"
-#include "internal/file.h"
-#include "internal/gc.h"
-#include "internal/io.h"
-#include "internal/object.h"
-#include "internal/vm.h"
-#include "ruby/encoding.h"
-#include "ruby/ruby.h"
-#include "ruby/thread.h"
-#include "ruby/util.h"
-#include "builtin.h"
-
-#ifndef AT_FDCWD
-# define AT_FDCWD -1
-#endif
-
-#define vm_initialized rb_cThread
-
-/* define system APIs */
-#ifdef _WIN32
-# undef chdir
-# define chdir(p) rb_w32_uchdir(p)
-# undef mkdir
-# define mkdir(p, m) rb_w32_umkdir((p), (m))
-# undef rmdir
-# define rmdir(p) rb_w32_urmdir(p)
-# undef opendir
-# define opendir(p) rb_w32_uopendir(p)
-# define ruby_getcwd() rb_w32_ugetcwd(NULL, 0)
-# define IS_WIN32 1
-#else
-# define IS_WIN32 0
-#endif
-
#if NORMALIZE_UTF8PATH
+#include <sys/param.h>
+#include <sys/mount.h>
+#include <sys/vnode.h>
+
# if defined HAVE_FGETATTRLIST || !defined HAVE_GETATTRLIST
# define need_normalization(dirp, path) need_normalization(dirp)
# else
@@ -160,12 +147,12 @@ need_normalization(DIR *dirp, const char *path)
int ret = getattrlist(path, &al, attrbuf, sizeof(attrbuf), 0);
# endif
if (!ret) {
- const fsobj_tag_t *tag = (void *)(attrbuf+1);
- switch (*tag) {
- case VT_HFS:
- case VT_CIFS:
- return TRUE;
- }
+ const fsobj_tag_t *tag = (void *)(attrbuf+1);
+ switch (*tag) {
+ case VT_HFS:
+ case VT_CIFS:
+ return TRUE;
+ }
}
# endif
return FALSE;
@@ -175,9 +162,9 @@ static inline int
has_nonascii(const char *ptr, size_t len)
{
while (len > 0) {
- if (!ISASCII(*ptr)) return 1;
- ptr++;
- --len;
+ if (!ISASCII(*ptr)) return 1;
+ ptr++;
+ --len;
}
return 0;
}
@@ -187,18 +174,12 @@ has_nonascii(const char *ptr, size_t len)
# define IF_NORMALIZE_UTF8PATH(something) /* nothing */
#endif
-#if defined(IFTODT) && defined(DT_UNKNOWN)
-# define EMULATE_IFTODT 0
-#else
-# define EMULATE_IFTODT 1
-#endif
-
-#if EMULATE_IFTODT
-# define IFTODT(m) (((m) & S_IFMT) / ((~S_IFMT & (S_IFMT-1)) + 1))
+#ifndef IFTODT
+# define IFTODT(m) (((m) & S_IFMT) / ((~S_IFMT & S_IFMT-1) + 1))
#endif
typedef enum {
-#if !EMULATE_IFTODT
+#ifdef DT_UNKNOWN
path_exist = DT_UNKNOWN,
path_directory = DT_DIR,
path_regular = DT_REG,
@@ -223,13 +204,11 @@ typedef enum {
#else
#define FNM_SYSCASE 0
#endif
-#ifdef _WIN32
+#if _WIN32
#define FNM_SHORTNAME 0x20
#else
#define FNM_SHORTNAME 0
#endif
-#define FNM_GLOB_NOSORT 0x40
-#define FNM_GLOB_SKIPDOT 0x80
#define FNM_NOMATCH 1
#define FNM_ERROR 2
@@ -254,53 +233,53 @@ bracket(
if (p >= pend) return NULL;
if (*p == '!' || *p == '^') {
- not = 1;
- p++;
+ not = 1;
+ p++;
}
while (*p != ']') {
- const char *t1 = p;
- if (escape && *t1 == '\\')
- t1++;
- if (!*t1)
- return NULL;
- p = t1 + (r = rb_enc_mbclen(t1, pend, enc));
- if (p >= pend) return NULL;
- if (p[0] == '-' && p[1] != ']') {
- const char *t2 = p + 1;
- int r2;
- if (escape && *t2 == '\\')
- t2++;
- if (!*t2)
- return NULL;
- p = t2 + (r2 = rb_enc_mbclen(t2, pend, enc));
- if (ok) continue;
- if ((r <= (send-s) && memcmp(t1, s, r) == 0) ||
- (r2 <= (send-s) && memcmp(t2, s, r2) == 0)) {
- ok = 1;
- continue;
- }
- c1 = rb_enc_codepoint(s, send, enc);
- if (nocase) c1 = rb_enc_toupper(c1, enc);
- c2 = rb_enc_codepoint(t1, pend, enc);
- if (nocase) c2 = rb_enc_toupper(c2, enc);
- if (c1 < c2) continue;
- c2 = rb_enc_codepoint(t2, pend, enc);
- if (nocase) c2 = rb_enc_toupper(c2, enc);
- if (c1 > c2) continue;
- }
- else {
- if (ok) continue;
- if (r <= (send-s) && memcmp(t1, s, r) == 0) {
- ok = 1;
- continue;
- }
- if (!nocase) continue;
- c1 = rb_enc_toupper(rb_enc_codepoint(s, send, enc), enc);
- c2 = rb_enc_toupper(rb_enc_codepoint(p, pend, enc), enc);
- if (c1 != c2) continue;
- }
- ok = 1;
+ const char *t1 = p;
+ if (escape && *t1 == '\\')
+ t1++;
+ if (!*t1)
+ return NULL;
+ p = t1 + (r = rb_enc_mbclen(t1, pend, enc));
+ if (p >= pend) return NULL;
+ if (p[0] == '-' && p[1] != ']') {
+ const char *t2 = p + 1;
+ int r2;
+ if (escape && *t2 == '\\')
+ t2++;
+ if (!*t2)
+ return NULL;
+ p = t2 + (r2 = rb_enc_mbclen(t2, pend, enc));
+ if (ok) continue;
+ if ((r <= (send-s) && memcmp(t1, s, r) == 0) ||
+ (r2 <= (send-s) && memcmp(t2, s, r2) == 0)) {
+ ok = 1;
+ continue;
+ }
+ c1 = rb_enc_codepoint(s, send, enc);
+ if (nocase) c1 = rb_enc_toupper(c1, enc);
+ c2 = rb_enc_codepoint(t1, pend, enc);
+ if (nocase) c2 = rb_enc_toupper(c2, enc);
+ if (c1 < c2) continue;
+ c2 = rb_enc_codepoint(t2, pend, enc);
+ if (nocase) c2 = rb_enc_toupper(c2, enc);
+ if (c1 > c2) continue;
+ }
+ else {
+ if (ok) continue;
+ if (r <= (send-s) && memcmp(t1, s, r) == 0) {
+ ok = 1;
+ continue;
+ }
+ if (!nocase) continue;
+ c1 = rb_enc_toupper(rb_enc_codepoint(s, send, enc), enc);
+ c2 = rb_enc_toupper(rb_enc_codepoint(p, pend, enc), enc);
+ if (c1 != c2) continue;
+ }
+ ok = 1;
}
return ok == not ? NULL : (char *)p + 1;
@@ -338,72 +317,72 @@ fnmatch_helper(
int r;
if (period && *s == '.' && *UNESCAPE(p) != '.') /* leading period */
- RETURN(FNM_NOMATCH);
+ RETURN(FNM_NOMATCH);
while (1) {
- switch (*p) {
- case '*':
- do { p++; } while (*p == '*');
- if (ISEND(UNESCAPE(p))) {
- p = UNESCAPE(p);
- RETURN(0);
- }
- if (ISEND(s))
- RETURN(FNM_NOMATCH);
- ptmp = p;
- stmp = s;
- continue;
-
- case '?':
- if (ISEND(s))
- RETURN(FNM_NOMATCH);
- p++;
- Inc(s, send, enc);
- continue;
-
- case '[': {
- const char *t;
- if (ISEND(s))
- RETURN(FNM_NOMATCH);
- if ((t = bracket(p + 1, pend, s, send, flags, enc)) != 0) {
- p = t;
- Inc(s, send, enc);
- continue;
- }
- goto failed;
- }
- }
-
- /* ordinary */
- p = UNESCAPE(p);
- if (ISEND(s))
- RETURN(ISEND(p) ? 0 : FNM_NOMATCH);
- if (ISEND(p))
- goto failed;
- r = rb_enc_precise_mbclen(p, pend, enc);
- if (!MBCLEN_CHARFOUND_P(r))
- goto failed;
- if (r <= (send-s) && memcmp(p, s, r) == 0) {
- p += r;
- s += r;
- continue;
- }
- if (!nocase) goto failed;
- if (rb_enc_toupper(rb_enc_codepoint(p, pend, enc), enc) !=
- rb_enc_toupper(rb_enc_codepoint(s, send, enc), enc))
- goto failed;
- p += r;
- Inc(s, send, enc);
- continue;
+ switch (*p) {
+ case '*':
+ do { p++; } while (*p == '*');
+ if (ISEND(UNESCAPE(p))) {
+ p = UNESCAPE(p);
+ RETURN(0);
+ }
+ if (ISEND(s))
+ RETURN(FNM_NOMATCH);
+ ptmp = p;
+ stmp = s;
+ continue;
+
+ case '?':
+ if (ISEND(s))
+ RETURN(FNM_NOMATCH);
+ p++;
+ Inc(s, send, enc);
+ continue;
+
+ case '[': {
+ const char *t;
+ if (ISEND(s))
+ RETURN(FNM_NOMATCH);
+ if ((t = bracket(p + 1, pend, s, send, flags, enc)) != 0) {
+ p = t;
+ Inc(s, send, enc);
+ continue;
+ }
+ goto failed;
+ }
+ }
+
+ /* ordinary */
+ p = UNESCAPE(p);
+ if (ISEND(s))
+ RETURN(ISEND(p) ? 0 : FNM_NOMATCH);
+ if (ISEND(p))
+ goto failed;
+ r = rb_enc_precise_mbclen(p, pend, enc);
+ if (!MBCLEN_CHARFOUND_P(r))
+ goto failed;
+ if (r <= (send-s) && memcmp(p, s, r) == 0) {
+ p += r;
+ s += r;
+ continue;
+ }
+ if (!nocase) goto failed;
+ if (rb_enc_toupper(rb_enc_codepoint(p, pend, enc), enc) !=
+ rb_enc_toupper(rb_enc_codepoint(s, send, enc), enc))
+ goto failed;
+ p += r;
+ Inc(s, send, enc);
+ continue;
failed: /* try next '*' position */
- if (ptmp && stmp) {
- p = ptmp;
- Inc(stmp, send, enc); /* !ISEND(*stmp) */
- s = stmp;
- continue;
- }
- RETURN(FNM_NOMATCH);
+ if (ptmp && stmp) {
+ p = ptmp;
+ Inc(stmp, send, enc); /* !ISEND(*stmp) */
+ s = stmp;
+ continue;
+ }
+ RETURN(FNM_NOMATCH);
}
}
@@ -424,37 +403,37 @@ fnmatch(
const char *stmp = 0;
if (pathname) {
- while (1) {
- if (p[0] == '*' && p[1] == '*' && p[2] == '/') {
- do { p += 3; } while (p[0] == '*' && p[1] == '*' && p[2] == '/');
- ptmp = p;
- stmp = s;
- }
- if (fnmatch_helper(&p, &s, flags, enc) == 0) {
- while (*s && *s != '/') Inc(s, send, enc);
- if (*p && *s) {
- p++;
- s++;
- continue;
- }
- if (!*p && !*s)
- return 0;
- }
- /* failed : try next recursion */
- if (ptmp && stmp && !(period && *stmp == '.')) {
- while (*stmp && *stmp != '/') Inc(stmp, send, enc);
- if (*stmp) {
- p = ptmp;
- stmp++;
- s = stmp;
- continue;
- }
- }
- return FNM_NOMATCH;
- }
+ while (1) {
+ if (p[0] == '*' && p[1] == '*' && p[2] == '/') {
+ do { p += 3; } while (p[0] == '*' && p[1] == '*' && p[2] == '/');
+ ptmp = p;
+ stmp = s;
+ }
+ if (fnmatch_helper(&p, &s, flags, enc) == 0) {
+ while (*s && *s != '/') Inc(s, send, enc);
+ if (*p && *s) {
+ p++;
+ s++;
+ continue;
+ }
+ if (!*p && !*s)
+ return 0;
+ }
+ /* failed : try next recursion */
+ if (ptmp && stmp && !(period && *stmp == '.')) {
+ while (*stmp && *stmp != '/') Inc(stmp, send, enc);
+ if (*stmp) {
+ p = ptmp;
+ stmp++;
+ s = stmp;
+ continue;
+ }
+ }
+ return FNM_NOMATCH;
+ }
}
else
- return fnmatch_helper(&p, &s, flags, enc);
+ return fnmatch_helper(&p, &s, flags, enc);
}
VALUE rb_cDir;
@@ -466,6 +445,13 @@ struct dir_data {
};
static void
+dir_mark(void *ptr)
+{
+ struct dir_data *dir = ptr;
+ rb_gc_mark(dir->path);
+}
+
+static void
dir_free(void *ptr)
{
struct dir_data *dir = ptr;
@@ -480,14 +466,10 @@ dir_memsize(const void *ptr)
return sizeof(struct dir_data);
}
-RUBY_REFERENCES_START(dir_refs)
- REF_EDGE(dir_data, path),
-RUBY_REFERENCES_END
-
static const rb_data_type_t dir_data_type = {
"dir",
- {REFS_LIST_PTR(dir_refs), dir_free, dir_memsize,},
- 0, NULL, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_DECL_MARKING
+ {dir_mark, dir_free, dir_memsize,},
+ 0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY
};
static VALUE dir_close(VALUE);
@@ -517,23 +499,50 @@ static DIR *
opendir_without_gvl(const char *path)
{
if (vm_initialized) {
- union { const void *in; void *out; } u;
+ union { const void *in; void *out; } u;
- u.in = path;
+ u.in = path;
- return rb_thread_call_without_gvl(nogvl_opendir, u.out, RUBY_UBF_IO, 0);
+ return rb_thread_call_without_gvl(nogvl_opendir, u.out, RUBY_UBF_IO, 0);
}
else
- return opendir(path);
+ return opendir(path);
}
+/*
+ * call-seq:
+ * Dir.new( string ) -> aDir
+ * Dir.new( string, encoding: enc ) -> aDir
+ *
+ * Returns a new directory object for the named directory.
+ *
+ * The optional <i>encoding</i> keyword argument specifies the encoding of the directory.
+ * If not specified, the filesystem encoding is used.
+ */
static VALUE
-dir_initialize(rb_execution_context_t *ec, VALUE dir, VALUE dirname, VALUE enc)
+dir_initialize(int argc, VALUE *argv, VALUE dir)
{
struct dir_data *dp;
- VALUE orig;
+ rb_encoding *fsenc;
+ VALUE dirname, opt, orig;
+ static ID keyword_ids[1];
const char *path;
- rb_encoding *fsenc = NIL_P(enc) ? rb_filesystem_encoding() : rb_to_encoding(enc);
+
+ if (!keyword_ids[0]) {
+ keyword_ids[0] = rb_id_encoding();
+ }
+
+ fsenc = rb_filesystem_encoding();
+
+ rb_scan_args(argc, argv, "1:", &dirname, &opt);
+
+ if (!NIL_P(opt)) {
+ VALUE enc;
+ rb_get_kwargs(opt, keyword_ids, 0, 1, &enc);
+ if (enc != Qundef && !NIL_P(enc)) {
+ fsenc = rb_to_encoding(enc);
+ }
+ }
FilePathValue(dirname);
orig = rb_str_dup_frozen(dirname);
@@ -548,85 +557,58 @@ dir_initialize(rb_execution_context_t *ec, VALUE dir, VALUE dirname, VALUE enc)
path = RSTRING_PTR(dirname);
dp->dir = opendir_without_gvl(path);
if (dp->dir == NULL) {
- int e = errno;
- if (rb_gc_for_fd(e)) {
- dp->dir = opendir_without_gvl(path);
- }
+ int e = errno;
+ if (rb_gc_for_fd(e)) {
+ dp->dir = opendir_without_gvl(path);
+ }
#ifdef HAVE_GETATTRLIST
- else if (e == EIO) {
- u_int32_t attrbuf[1];
- struct attrlist al = {ATTR_BIT_MAP_COUNT, 0};
- if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW) == 0) {
- dp->dir = opendir_without_gvl(path);
- }
- }
-#endif
- if (dp->dir == NULL) {
- RB_GC_GUARD(dirname);
- rb_syserr_fail_path(e, orig);
- }
+ else if (e == EIO) {
+ u_int32_t attrbuf[1];
+ struct attrlist al = {ATTR_BIT_MAP_COUNT, 0};
+ if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW) == 0) {
+ dp->dir = opendir_without_gvl(path);
+ }
+ }
+#endif
+ if (dp->dir == NULL) {
+ RB_GC_GUARD(dirname);
+ rb_syserr_fail_path(e, orig);
+ }
}
RB_OBJ_WRITE(dir, &dp->path, orig);
return dir;
}
-static VALUE
-dir_s_open(rb_execution_context_t *ec, VALUE klass, VALUE dirname, VALUE enc)
-{
- struct dir_data *dp;
- VALUE dir = TypedData_Make_Struct(klass, struct dir_data, &dir_data_type, dp);
-
- dir_initialize(ec, dir, dirname, enc);
-
- return dir;
-}
-
-static VALUE
-dir_s_close(rb_execution_context_t *ec, VALUE klass, VALUE dir)
-{
- return dir_close(dir);
-}
-
-# if defined(HAVE_FDOPENDIR) && defined(HAVE_DIRFD)
/*
* call-seq:
- * Dir.for_fd(integer) -> aDir
- *
- * Returns a Dir representing the directory specified by the given
- * directory file descriptor. Note that the returned Dir will not
- * have an associated path.
- *
- * d1 = Dir.new('..')
- * d2 = Dir.for_fd(d1.fileno)
- * d1.path # => '..'
- * d2.path # => nil
- * d1.chdir{Dir.pwd} == d2.chdir{Dir.pwd} # => true
- *
- * This method uses fdopendir() function defined by POSIX 2008.
- * NotImplementedError is raised on other platforms, such as Windows,
- * which doesn't provide the function.
- *
+ * Dir.open( string ) -> aDir
+ * Dir.open( string, encoding: enc ) -> aDir
+ * Dir.open( string ) {| aDir | block } -> anObject
+ * Dir.open( string, encoding: enc ) {| aDir | block } -> anObject
+ *
+ * The optional <i>encoding</i> keyword argument specifies the encoding of the directory.
+ * If not specified, the filesystem encoding is used.
+ *
+ * With no block, <code>open</code> is a synonym for
+ * <code>Dir::new</code>. If a block is present, it is passed
+ * <i>aDir</i> as a parameter. The directory is closed at the end of
+ * the block, and <code>Dir::open</code> returns the value of the
+ * block.
*/
static VALUE
-dir_s_for_fd(VALUE klass, VALUE fd)
+dir_s_open(int argc, VALUE *argv, VALUE klass)
{
struct dir_data *dp;
VALUE dir = TypedData_Make_Struct(klass, struct dir_data, &dir_data_type, dp);
- if (!(dp->dir = fdopendir(NUM2INT(fd)))) {
- rb_sys_fail("fdopendir");
- UNREACHABLE_RETURN(Qnil);
+ dir_initialize(argc, argv, dir);
+ if (rb_block_given_p()) {
+ return rb_ensure(rb_yield, dir, dir_close, dir);
}
- RB_OBJ_WRITE(dir, &dp->path, Qnil);
return dir;
}
-#else
-#define dir_s_for_fd rb_f_notimplement
-#endif
-
-NORETURN(static void dir_closed(void));
static void
dir_closed(void)
@@ -665,14 +647,14 @@ dir_inspect(VALUE dir)
TypedData_Get_Struct(dir, struct dir_data, &dir_data_type, dirp);
if (!NIL_P(dirp->path)) {
- VALUE str = rb_str_new_cstr("#<");
- rb_str_append(str, rb_class_name(CLASS_OF(dir)));
- rb_str_cat2(str, ":");
- rb_str_append(str, dirp->path);
- rb_str_cat2(str, ">");
- return str;
+ VALUE str = rb_str_new_cstr("#<");
+ rb_str_append(str, rb_class_name(CLASS_OF(dir)));
+ rb_str_cat2(str, ":");
+ rb_str_append(str, dirp->path);
+ rb_str_cat2(str, ">");
+ return str;
}
- return rb_funcallv(dir, idTo_s, 0, 0);
+ return rb_funcallv(dir, rb_intern("to_s"), 0, 0);
}
/* Workaround for Solaris 10 that does not have dirfd.
@@ -712,7 +694,7 @@ dir_fileno(VALUE dir)
GetDIR(dir, dirp);
fd = dirfd(dirp->dir);
if (fd == -1)
- rb_sys_fail("dirfd");
+ rb_sys_fail("dirfd");
return INT2NUM(fd);
}
#else
@@ -744,12 +726,12 @@ static int
fundamental_encoding_p(rb_encoding *enc)
{
switch (rb_enc_to_index(enc)) {
- case ENCINDEX_ASCII_8BIT:
+ case ENCINDEX_ASCII:
case ENCINDEX_US_ASCII:
case ENCINDEX_UTF_8:
- return TRUE;
+ return TRUE;
default:
- return FALSE;
+ return FALSE;
}
}
# define READDIR(dir, enc) rb_w32_readdir((dir), (enc))
@@ -766,11 +748,11 @@ to_be_skipped(const struct dirent *dp)
#ifdef HAVE_DIRENT_NAMLEN
switch (NAMLEN(dp)) {
case 2:
- if (name[1] != '.') return FALSE;
+ if (name[1] != '.') return FALSE;
case 1:
- return TRUE;
+ return TRUE;
default:
- break;
+ break;
}
#else
if (!name[1]) return TRUE;
@@ -801,12 +783,12 @@ dir_read(VALUE dir)
GetDIR(dir, dirp);
errno = 0;
if ((dp = READDIR(dirp->dir, dirp->enc)) != NULL) {
- return rb_external_str_new_with_enc(dp->d_name, NAMLEN(dp), dirp->enc);
+ return rb_external_str_new_with_enc(dp->d_name, NAMLEN(dp), dirp->enc);
}
else {
- int e = errno;
- if (e != 0) rb_syserr_fail(e, 0);
- return Qnil; /* end of stream */
+ int e = errno;
+ if (e != 0) rb_syserr_fail(e, 0);
+ return Qnil; /* end of stream */
}
}
@@ -856,23 +838,24 @@ dir_each_entry(VALUE dir, VALUE (*each)(VALUE, VALUE), VALUE arg, int children_o
rewinddir(dirp->dir);
IF_NORMALIZE_UTF8PATH(norm_p = need_normalization(dirp->dir, RSTRING_PTR(dirp->path)));
while ((dp = READDIR(dirp->dir, dirp->enc)) != NULL) {
- const char *name = dp->d_name;
- size_t namlen = NAMLEN(dp);
- VALUE path;
-
- if (children_only && name[0] == '.') {
- if (namlen == 1) continue; /* current directory */
- if (namlen == 2 && name[1] == '.') continue; /* parent directory */
- }
+ const char *name = dp->d_name;
+ size_t namlen = NAMLEN(dp);
+ VALUE path;
+
+ if (children_only && name[0] == '.') {
+ if (namlen == 1) continue; /* current directory */
+ if (namlen == 2 && name[1] == '.') continue; /* parent directory */
+ }
#if NORMALIZE_UTF8PATH
- if (norm_p && has_nonascii(name, namlen) &&
- !NIL_P(path = rb_str_normalize_ospath(name, namlen))) {
- path = rb_external_str_with_enc(path, dirp->enc);
- }
- else
+ if (norm_p && has_nonascii(name, namlen) &&
+ !NIL_P(path = rb_str_normalize_ospath(name, namlen))) {
+ path = rb_external_str_with_enc(path, dirp->enc);
+ }
+ else
#endif
- path = rb_external_str_new_with_enc(name, namlen, dirp->enc);
- (*each)(arg, path);
+ path = rb_external_str_new_with_enc(name, namlen, dirp->enc);
+ (*each)(arg, path);
+ if (dirp->dir == NULL) dir_closed();
}
return dir;
}
@@ -883,7 +866,8 @@ dir_each_entry(VALUE dir, VALUE (*each)(VALUE, VALUE), VALUE arg, int children_o
* dir.pos -> integer
* dir.tell -> integer
*
- * Returns the current position in <em>dir</em>. See also Dir#seek.
+ * Returns the current position in <em>dir</em>. See also
+ * <code>Dir#seek</code>.
*
* d = Dir.new("testdir")
* d.tell #=> 0
@@ -910,7 +894,7 @@ dir_tell(VALUE dir)
* dir.seek( integer ) -> dir
*
* Seeks to a particular location in <em>dir</em>. <i>integer</i>
- * must be a value returned by Dir#tell.
+ * must be a value returned by <code>Dir#tell</code>.
*
* d = Dir.new("testdir") #=> #<Dir:0x401b3c40>
* d.read #=> "."
@@ -938,7 +922,8 @@ dir_seek(VALUE dir, VALUE pos)
* call-seq:
* dir.pos = integer -> integer
*
- * Synonym for Dir#seek, but returns the position parameter.
+ * Synonym for <code>Dir#seek</code>, but returns the position
+ * parameter.
*
* d = Dir.new("testdir") #=> #<Dir:0x401b3c40>
* d.read #=> "."
@@ -1010,10 +995,10 @@ nogvl_chdir(void *ptr)
}
static void
-dir_chdir0(VALUE path)
+dir_chdir(VALUE path)
{
if (chdir(RSTRING_PTR(path)) < 0)
- rb_sys_fail_path(path);
+ rb_sys_fail_path(path);
}
static int chdir_blocking = 0;
@@ -1025,26 +1010,24 @@ struct chdir_data {
};
static VALUE
-chdir_yield(VALUE v)
+chdir_yield(struct chdir_data *args)
{
- struct chdir_data *args = (void *)v;
- dir_chdir0(args->new_path);
+ dir_chdir(args->new_path);
args->done = TRUE;
chdir_blocking++;
- if (NIL_P(chdir_thread))
- chdir_thread = rb_thread_current();
+ if (chdir_thread == Qnil)
+ chdir_thread = rb_thread_current();
return rb_yield(args->new_path);
}
static VALUE
-chdir_restore(VALUE v)
+chdir_restore(struct chdir_data *args)
{
- struct chdir_data *args = (void *)v;
if (args->done) {
- chdir_blocking--;
- if (chdir_blocking == 0)
- chdir_thread = Qnil;
- dir_chdir0(args->old_path);
+ chdir_blocking--;
+ if (chdir_blocking == 0)
+ chdir_thread = Qnil;
+ dir_chdir(args->old_path);
}
return Qnil;
}
@@ -1057,8 +1040,8 @@ chdir_restore(VALUE v)
* Changes the current working directory of the process to the given
* string. When called without an argument, changes the directory to
* the value of the environment variable <code>HOME</code>, or
- * <code>LOGDIR</code>. SystemCallError (probably Errno::ENOENT) if
- * the target directory does not exist.
+ * <code>LOGDIR</code>. <code>SystemCallError</code> (probably
+ * <code>Errno::ENOENT</code>) if the target directory does not exist.
*
* If a block is given, it is passed the name of the new current
* directory, and the block is executed with that as the current
@@ -1067,8 +1050,7 @@ chdir_restore(VALUE v)
* block. <code>chdir</code> blocks can be nested, but in a
* multi-threaded program an error will be raised if a thread attempts
* to open a <code>chdir</code> block while another thread has one
- * open or a call to <code>chdir</code> without a block occurs inside
- * a block passed to <code>chdir</code> (even in the same thread).
+ * open.
*
* Dir.chdir("/var/spool/mail")
* puts Dir.pwd
@@ -1094,196 +1076,43 @@ dir_s_chdir(int argc, VALUE *argv, VALUE obj)
{
VALUE path = Qnil;
- if (rb_check_arity(argc, 0, 1) == 1) {
- path = rb_str_encode_ospath(rb_get_path(argv[0]));
+ if (rb_scan_args(argc, argv, "01", &path) == 1) {
+ FilePathValue(path);
+ path = rb_str_encode_ospath(path);
}
else {
- const char *dist = getenv("HOME");
- if (!dist) {
- dist = getenv("LOGDIR");
- if (!dist) rb_raise(rb_eArgError, "HOME/LOGDIR not set");
- }
- path = rb_str_new2(dist);
+ const char *dist = getenv("HOME");
+ if (!dist) {
+ dist = getenv("LOGDIR");
+ if (!dist) rb_raise(rb_eArgError, "HOME/LOGDIR not set");
+ }
+ path = rb_str_new2(dist);
}
if (chdir_blocking > 0) {
- if (rb_thread_current() != chdir_thread)
- rb_raise(rb_eRuntimeError, "conflicting chdir during another chdir block");
- if (!rb_block_given_p())
- rb_warn("conflicting chdir during another chdir block");
+ if (!rb_block_given_p() || rb_thread_current() != chdir_thread)
+ rb_warn("conflicting chdir during another chdir block");
}
if (rb_block_given_p()) {
- struct chdir_data args;
+ struct chdir_data args;
- args.old_path = rb_str_encode_ospath(rb_dir_getwd());
- args.new_path = path;
- args.done = FALSE;
- return rb_ensure(chdir_yield, (VALUE)&args, chdir_restore, (VALUE)&args);
+ args.old_path = rb_str_encode_ospath(rb_dir_getwd());
+ args.new_path = path;
+ args.done = FALSE;
+ return rb_ensure(chdir_yield, (VALUE)&args, chdir_restore, (VALUE)&args);
}
else {
- char *p = RSTRING_PTR(path);
- int r = (int)(VALUE)rb_thread_call_without_gvl(nogvl_chdir, p,
- RUBY_UBF_IO, 0);
- if (r < 0)
- rb_sys_fail_path(path);
+ char *p = RSTRING_PTR(path);
+ int r = (int)(VALUE)rb_thread_call_without_gvl(nogvl_chdir, p,
+ RUBY_UBF_IO, 0);
+ if (r < 0)
+ rb_sys_fail_path(path);
}
return INT2FIX(0);
}
-#if defined(HAVE_FCHDIR) && defined(HAVE_DIRFD) && HAVE_FCHDIR && HAVE_DIRFD
-static void *
-nogvl_fchdir(void *ptr)
-{
- const int *fd = ptr;
-
- return (void *)(VALUE)fchdir(*fd);
-}
-
-static void
-dir_fchdir(int fd)
-{
- if (fchdir(fd) < 0)
- rb_sys_fail("fchdir");
-}
-
-struct fchdir_data {
- VALUE old_dir;
- int fd;
- int done;
-};
-
-static VALUE
-fchdir_yield(VALUE v)
-{
- struct fchdir_data *args = (void *)v;
- dir_fchdir(args->fd);
- args->done = TRUE;
- chdir_blocking++;
- if (NIL_P(chdir_thread))
- chdir_thread = rb_thread_current();
- return rb_yield_values(0);
-}
-
-static VALUE
-fchdir_restore(VALUE v)
-{
- struct fchdir_data *args = (void *)v;
- if (args->done) {
- chdir_blocking--;
- if (chdir_blocking == 0)
- chdir_thread = Qnil;
- dir_fchdir(RB_NUM2INT(dir_fileno(args->old_dir)));
- }
- dir_close(args->old_dir);
- return Qnil;
-}
-
-/*
- * call-seq:
- * Dir.fchdir( integer ) -> 0
- * Dir.fchdir( integer ) { block } -> anObject
- *
- * Changes the current working directory of the process to the directory
- * specified by the given file descriptor integer. If the file descriptor
- * is not valid, raises SystemCallError. One reason to use
- * <code>fchdir</code> instead of <code>chdir</code> is when passing
- * directory file descriptors over a UNIX socket or to child processes,
- * to avoid TOCTOU (time-of-check to time-of-use) vulnerabilities.
- *
- * If a block is given, the current working directory is changed for the
- * duration of the block, and the original working directory is restored
- * when the block exits. The return value of <code>fchdir</code> is the
- * value of the block. <code>fchdir</code> and <code>chdir</code> blocks
- * can be nested, but in a multi-threaded program an error will be raised
- * if a thread attempts to open a <code>fchdir</code> or <code>chdir</code>
- * block while another thread has one open or a call to <code>fchdir</code>
- * or <code>chdir</code> without a block occurs inside a block passed to
- * <code>fchdir</code> or <code>chdir</code> (even in the same thread).
- *
- * When generating directory file descriptors from a +Dir+ instance,
- * make sure the +Dir+ instance is not garbage collected before the
- * directory file descriptor is passed to another process. Otherwise,
- * the directory file descriptor will be closed before it is passed.
- *
- * dir = Dir.new("/var/spool/mail")
- * dir2 = Dir.new("/usr")
- * fd = dir.fileno
- * fd2 = dir2.fileno
- * Dir.fchdir(fd) do
- * puts Dir.pwd
- * Dir.fchdir(fd2) do
- * puts Dir.pwd
- * end
- * puts Dir.pwd
- * end
- * puts Dir.pwd
- *
- * <em>produces:</em>
- *
- * /var/spool/mail
- * /tmp
- * /usr
- * /tmp
- * /var/spool/mail
- */
-static VALUE
-dir_s_fchdir(VALUE klass, VALUE fd_value)
-{
- int fd = RB_NUM2INT(fd_value);
-
- if (chdir_blocking > 0) {
- if (rb_thread_current() != chdir_thread)
- rb_raise(rb_eRuntimeError, "conflicting chdir during another chdir block");
- if (!rb_block_given_p())
- rb_warn("conflicting chdir during another chdir block");
- }
-
- if (rb_block_given_p()) {
- struct fchdir_data args;
- args.old_dir = dir_s_alloc(klass);
- dir_initialize(NULL, args.old_dir, rb_fstring_cstr("."), Qnil);
- args.fd = fd;
- args.done = FALSE;
- return rb_ensure(fchdir_yield, (VALUE)&args, fchdir_restore, (VALUE)&args);
- }
- else {
- int r = (int)(VALUE)rb_thread_call_without_gvl(nogvl_fchdir, &fd,
- RUBY_UBF_IO, 0);
- if (r < 0)
- rb_sys_fail("fchdir");
- }
-
- return INT2FIX(0);
-}
-#else
-#define dir_s_fchdir rb_f_notimplement
-#endif
-
-/*
- * call-seq:
- * dir.chdir -> nil
- *
- * Changes the current working directory to the receiver.
- *
- * # Assume current directory is /path
- * Dir.new("testdir").chdir
- * Dir.pwd # => '/path/testdir'
- */
-static VALUE
-dir_chdir(VALUE dir)
-{
-#if defined(HAVE_FCHDIR) && defined(HAVE_DIRFD) && HAVE_FCHDIR && HAVE_DIRFD
- dir_s_fchdir(rb_cDir, dir_fileno(dir));
-#else
- VALUE path = dir_get(dir)->path;
- dir_s_chdir(1, &path, rb_cDir);
-#endif
-
- return Qnil;
-}
-
#ifndef _WIN32
VALUE
rb_dir_getwd_ospath(void)
@@ -1299,8 +1128,9 @@ rb_dir_getwd_ospath(void)
DATA_PTR(path_guard) = path;
#ifdef __APPLE__
cwd = rb_str_normalize_ospath(path, strlen(path));
+ OBJ_TAINT(cwd);
#else
- cwd = rb_str_new2(path);
+ cwd = rb_tainted_str_new2(path);
#endif
DATA_PTR(path_guard) = 0;
@@ -1318,12 +1148,12 @@ rb_dir_getwd(void)
switch (fsenc) {
case ENCINDEX_US_ASCII:
- fsenc = ENCINDEX_ASCII_8BIT;
- case ENCINDEX_ASCII_8BIT:
- break;
+ fsenc = ENCINDEX_ASCII;
+ case ENCINDEX_ASCII:
+ break;
#if defined _WIN32 || defined __APPLE__
default:
- return rb_str_conv_enc(cwd, NULL, fs);
+ return rb_str_conv_enc(cwd, NULL, fs);
#endif
}
return rb_enc_associate_index(cwd, fsenc);
@@ -1361,8 +1191,8 @@ check_dirname(VALUE dir)
pend = path + len;
pend = rb_enc_path_end(rb_enc_path_skip_prefix(path, pend, enc), pend, enc);
if (pend - path < len) {
- d = rb_str_subseq(d, 0, pend - path);
- StringValueCStr(d);
+ d = rb_str_subseq(d, 0, pend - path);
+ StringValueCStr(d);
}
return rb_str_encode_ospath(d);
}
@@ -1382,7 +1212,7 @@ dir_s_chroot(VALUE dir, VALUE path)
{
path = check_dirname(path);
if (chroot(RSTRING_PTR(path)) == -1)
- rb_sys_fail_path(path);
+ rb_sys_fail_path(path);
return INT2FIX(0);
}
@@ -1409,10 +1239,11 @@ nogvl_mkdir(void *ptr)
*
* Makes a new directory named by <i>string</i>, with permissions
* specified by the optional parameter <i>anInteger</i>. The
- * permissions may be modified by the value of File::umask, and are
- * ignored on NT. Raises a SystemCallError if the directory cannot be
- * created. See also the discussion of permissions in the class
- * documentation for File.
+ * permissions may be modified by the value of
+ * <code>File::umask</code>, and are ignored on NT. Raises a
+ * <code>SystemCallError</code> if the directory cannot be created. See
+ * also the discussion of permissions in the class documentation for
+ * <code>File</code>.
*
* Dir.mkdir(File.join(Dir.home, ".foo"), 0700) #=> 0
*
@@ -1425,17 +1256,17 @@ dir_s_mkdir(int argc, VALUE *argv, VALUE obj)
int r;
if (rb_scan_args(argc, argv, "11", &path, &vmode) == 2) {
- m.mode = NUM2MODET(vmode);
+ m.mode = NUM2MODET(vmode);
}
else {
- m.mode = 0777;
+ m.mode = 0777;
}
path = check_dirname(path);
m.path = RSTRING_PTR(path);
r = (int)(VALUE)rb_thread_call_without_gvl(nogvl_mkdir, &m, RUBY_UBF_IO, 0);
if (r < 0)
- rb_sys_fail_path(path);
+ rb_sys_fail_path(path);
return INT2FIX(0);
}
@@ -1454,8 +1285,8 @@ nogvl_rmdir(void *ptr)
* Dir.rmdir( string ) -> 0
* Dir.unlink( string ) -> 0
*
- * Deletes the named directory. Raises a subclass of SystemCallError
- * if the directory isn't empty.
+ * Deletes the named directory. Raises a subclass of
+ * <code>SystemCallError</code> if the directory isn't empty.
*/
static VALUE
dir_s_rmdir(VALUE obj, VALUE dir)
@@ -1467,7 +1298,7 @@ dir_s_rmdir(VALUE obj, VALUE dir)
p = RSTRING_PTR(dir);
r = (int)(VALUE)rb_thread_call_without_gvl(nogvl_rmdir, (void *)p, RUBY_UBF_IO, 0);
if (r < 0)
- rb_sys_fail_path(dir);
+ rb_sys_fail_path(dir);
return INT2FIX(0);
}
@@ -1512,34 +1343,9 @@ sys_enc_warning_in(const char *func, const char *mesg, rb_encoding *enc)
#define sys_warning(val, enc) \
((flags & GLOB_VERBOSE) ? sys_enc_warning_in(RUBY_FUNCTION_NAME_STRING, (val), (enc)) :(void)0)
-static inline size_t
-glob_alloc_size(size_t x, size_t y)
-{
- size_t z;
- if (rb_mul_size_overflow(x, y, SSIZE_MAX, &z)) {
- rb_memerror(); /* or...? */
- }
- else {
- return z;
- }
-}
-
-static inline void *
-glob_alloc_n(size_t x, size_t y)
-{
- return malloc(glob_alloc_size(x, y));
-}
-
-static inline void *
-glob_realloc_n(void *p, size_t x, size_t y)
-{
- return realloc(p, glob_alloc_size(x, y));
-}
-
#define GLOB_ALLOC(type) ((type *)malloc(sizeof(type)))
-#define GLOB_ALLOC_N(type, n) ((type *)glob_alloc_n(sizeof(type), n))
+#define GLOB_ALLOC_N(type, n) ((type *)malloc(sizeof(type) * (n)))
#define GLOB_REALLOC(ptr, size) realloc((ptr), (size))
-#define GLOB_REALLOC_N(ptr, n) glob_realloc_n(ptr, sizeof(*(ptr)), n)
#define GLOB_FREE(ptr) free(ptr)
#define GLOB_JUMP_TAG(status) (((status) == -1) ? rb_memerror() : rb_jump_tag(status))
@@ -1568,44 +1374,32 @@ typedef struct {
ruby_glob_errfunc *error;
} ruby_glob_funcs_t;
-static const char *
-at_subpath(int fd, size_t baselen, const char *path)
-{
-#if USE_OPENDIR_AT
- if (fd != (int)AT_FDCWD && baselen > 0) {
- path += baselen;
- if (*path == '/') ++path;
- }
-#endif
- return *path ? path : ".";
-}
-
/* System call with warning */
static int
-do_stat(int fd, size_t baselen, const char *path, struct stat *pst, int flags, rb_encoding *enc)
+do_stat(int fd, const char *path, struct stat *pst, int flags, rb_encoding *enc)
{
#if USE_OPENDIR_AT
- int ret = fstatat(fd, at_subpath(fd, baselen, path), pst, 0);
+ int ret = fstatat(fd, path, pst, 0);
#else
int ret = STAT(path, pst);
#endif
if (ret < 0 && !to_be_ignored(errno))
- sys_warning(path, enc);
+ sys_warning(path, enc);
return ret;
}
#if defined HAVE_LSTAT || defined lstat || USE_OPENDIR_AT
static int
-do_lstat(int fd, size_t baselen, const char *path, struct stat *pst, int flags, rb_encoding *enc)
+do_lstat(int fd, const char *path, struct stat *pst, int flags, rb_encoding *enc)
{
#if USE_OPENDIR_AT
- int ret = fstatat(fd, at_subpath(fd, baselen, path), pst, AT_SYMLINK_NOFOLLOW);
+ int ret = fstatat(fd, path, pst, AT_SYMLINK_NOFOLLOW);
#else
int ret = lstat(path, pst);
#endif
if (ret < 0 && !to_be_ignored(errno))
- sys_warning(path, enc);
+ sys_warning(path, enc);
return ret;
}
@@ -1623,16 +1417,16 @@ with_gvl_gc_for_fd(void *ptr)
{
int *e = ptr;
- return (void *)RBOOL(rb_gc_for_fd(*e));
+ return (void *)(rb_gc_for_fd(*e) ? Qtrue : Qfalse);
}
static int
gc_for_fd_with_gvl(int e)
{
if (vm_initialized)
- return (int)(VALUE)rb_thread_call_with_gvl(with_gvl_gc_for_fd, &e);
+ return (int)(VALUE)rb_thread_call_with_gvl(with_gvl_gc_for_fd, &e);
else
- return RBOOL(rb_gc_for_fd(e));
+ return rb_gc_for_fd(e) ? Qtrue : Qfalse;
}
static void *
@@ -1644,32 +1438,32 @@ nogvl_opendir_at(void *ptr)
#if USE_OPENDIR_AT
const int opendir_flags = (O_RDONLY|O_CLOEXEC|
# ifdef O_DIRECTORY
- O_DIRECTORY|
+ O_DIRECTORY|
# endif /* O_DIRECTORY */
- 0);
+ 0);
int fd = openat(oaa->basefd, oaa->path, opendir_flags);
dirp = fd >= 0 ? fdopendir(fd) : 0;
if (!dirp) {
- int e = errno;
+ int e = errno;
- switch (gc_for_fd_with_gvl(e)) {
- default:
- if (fd < 0) fd = openat(oaa->basefd, oaa->path, opendir_flags);
- if (fd >= 0) dirp = fdopendir(fd);
- if (dirp) return dirp;
+ switch (gc_for_fd_with_gvl(e)) {
+ default:
+ if (fd < 0) fd = openat(oaa->basefd, oaa->path, opendir_flags);
+ if (fd >= 0) dirp = fdopendir(fd);
+ if (dirp) return dirp;
- e = errno;
- /* fallthrough*/
- case 0:
- if (fd >= 0) close(fd);
- errno = e;
- }
+ e = errno;
+ /* fallthrough*/
+ case 0:
+ if (fd >= 0) close(fd);
+ errno = e;
+ }
}
#else /* !USE_OPENDIR_AT */
dirp = opendir(oaa->path);
if (!dirp && gc_for_fd_with_gvl(errno))
- dirp = opendir(oaa->path);
+ dirp = opendir(oaa->path);
#endif /* !USE_OPENDIR_AT */
return dirp;
@@ -1684,37 +1478,37 @@ opendir_at(int basefd, const char *path)
oaa.path = path;
if (vm_initialized)
- return rb_thread_call_without_gvl(nogvl_opendir_at, &oaa, RUBY_UBF_IO, 0);
+ return rb_thread_call_without_gvl(nogvl_opendir_at, &oaa, RUBY_UBF_IO, 0);
else
- return nogvl_opendir_at(&oaa);
+ return nogvl_opendir_at(&oaa);
}
static DIR *
-do_opendir(const int basefd, size_t baselen, const char *path, int flags, rb_encoding *enc,
- ruby_glob_errfunc *errfunc, VALUE arg, int *status)
+do_opendir(const int basefd, const char *path, int flags, rb_encoding *enc,
+ ruby_glob_errfunc *errfunc, VALUE arg, int *status)
{
DIR *dirp;
#ifdef _WIN32
VALUE tmp = 0;
if (!fundamental_encoding_p(enc)) {
- tmp = rb_enc_str_new(path, strlen(path), enc);
- tmp = rb_str_encode_ospath(tmp);
- path = RSTRING_PTR(tmp);
+ tmp = rb_enc_str_new(path, strlen(path), enc);
+ tmp = rb_str_encode_ospath(tmp);
+ path = RSTRING_PTR(tmp);
}
#endif
- dirp = opendir_at(basefd, at_subpath(basefd, baselen, path));
+ dirp = opendir_at(basefd, path);
if (!dirp) {
- int e = errno;
-
- *status = 0;
- if (!to_be_ignored(e)) {
- if (errfunc) {
- *status = (*errfunc)(path, arg, enc, e);
- }
- else {
- sys_warning(path, enc);
- }
- }
+ int e = errno;
+
+ *status = 0;
+ if (!to_be_ignored(e)) {
+ if (errfunc) {
+ *status = (*errfunc)(path, arg, enc, e);
+ }
+ else {
+ sys_warning(path, enc);
+ }
+ }
}
#ifdef _WIN32
if (tmp) rb_str_resize(tmp, 0); /* GC guard */
@@ -1724,7 +1518,7 @@ do_opendir(const int basefd, size_t baselen, const char *path, int flags, rb_enc
}
/* Globing pattern */
-enum glob_pattern_type { PLAIN, ALPHA, BRACE, MAGICAL, RECURSIVE, MATCH_ALL, MATCH_DIR };
+enum glob_pattern_type { PLAIN, ALPHA, MAGICAL, RECURSIVE, MATCH_ALL, MATCH_DIR };
/* Return nonzero if S has any special globbing chars in it. */
static enum glob_pattern_type
@@ -1732,45 +1526,40 @@ has_magic(const char *p, const char *pend, int flags, rb_encoding *enc)
{
const int escape = !(flags & FNM_NOESCAPE);
int hasalpha = 0;
- int hasmagical = 0;
register char c;
while (p < pend && (c = *p++) != 0) {
- switch (c) {
- case '{':
- return BRACE;
-
- case '*':
- case '?':
- case '[':
- hasmagical = 1;
- break;
+ switch (c) {
+ case '*':
+ case '?':
+ case '[':
+ return MAGICAL;
- case '\\':
- if (escape && p++ >= pend)
- continue;
- break;
+ case '\\':
+ if (escape && p++ >= pend)
+ continue;
+ break;
#ifdef _WIN32
- case '.':
- break;
+ case '.':
+ break;
- case '~':
- hasalpha = 1;
- break;
+ case '~':
+ hasalpha = 1;
+ break;
#endif
- default:
- if (IS_WIN32 || ISALPHA(c)) {
- hasalpha = 1;
- }
- break;
- }
+ default:
+ if (IS_WIN32 || ISALPHA(c)) {
+ hasalpha = 1;
+ }
+ break;
+ }
- p = Next(p-1, pend, enc);
+ p = Next(p-1, pend, enc);
}
- return hasmagical ? MAGICAL : hasalpha ? ALPHA : PLAIN;
+ return hasalpha ? ALPHA : PLAIN;
}
/* Find separator in globbing pattern. */
@@ -1783,33 +1572,26 @@ find_dirsep(const char *p, const char *pend, int flags, rb_encoding *enc)
int open = 0;
while ((c = *p++) != 0) {
- switch (c) {
- case '[':
- open = 1;
- continue;
- case ']':
- open = 0;
- continue;
-
- case '{':
- open = 1;
- continue;
- case '}':
- open = 0;
- continue;
-
- case '/':
- if (!open)
- return (char *)p-1;
- continue;
-
- case '\\':
- if (escape && !(c = *p++))
- return (char *)p-1;
- continue;
- }
-
- p = Next(p-1, pend, enc);
+ switch (c) {
+ case '[':
+ open = 1;
+ continue;
+ case ']':
+ open = 0;
+ continue;
+
+ case '/':
+ if (!open)
+ return (char *)p-1;
+ continue;
+
+ case '\\':
+ if (escape && !(c = *p++))
+ return (char *)p-1;
+ continue;
+ }
+
+ p = Next(p-1, pend, enc);
}
return (char *)p-1;
@@ -1823,20 +1605,20 @@ remove_backslashes(char *p, register const char *pend, rb_encoding *enc)
char *s = p;
while (*p) {
- if (*p == '\\') {
- if (t != s)
- memmove(t, s, p - s);
- t += p - s;
- s = ++p;
- if (!*p) break;
- }
- Inc(p, pend, enc);
+ if (*p == '\\') {
+ if (t != s)
+ memmove(t, s, p - s);
+ t += p - s;
+ s = ++p;
+ if (!*p) break;
+ }
+ Inc(p, pend, enc);
}
while (*p++);
if (t != s)
- memmove(t, s, p - s); /* move '\0' too */
+ memmove(t, s, p - s); /* move '\0' too */
return p;
}
@@ -1857,54 +1639,57 @@ glob_make_pattern(const char *p, const char *e, int flags, rb_encoding *enc)
int recursive = 0;
while (p < e && *p) {
- tmp = GLOB_ALLOC(struct glob_pattern);
- if (!tmp) goto error;
- if (p + 2 < e && p[0] == '*' && p[1] == '*' && p[2] == '/') {
- /* fold continuous RECURSIVEs (needed in glob_helper) */
- do { p += 3; while (*p == '/') p++; } while (p[0] == '*' && p[1] == '*' && p[2] == '/');
- tmp->type = RECURSIVE;
- tmp->str = 0;
- dirsep = 1;
- recursive = 1;
- }
- else {
- const char *m = find_dirsep(p, e, flags, enc);
- const enum glob_pattern_type magic = has_magic(p, m, flags, enc);
- const enum glob_pattern_type non_magic = (USE_NAME_ON_FS || FNM_SYSCASE) ? PLAIN : ALPHA;
- char *buf;
-
- if (!(FNM_SYSCASE || magic > non_magic) && !recursive && *m) {
- const char *m2;
- while (has_magic(m+1, m2 = find_dirsep(m+1, e, flags, enc), flags, enc) <= non_magic &&
- *m2) {
- m = m2;
- }
- }
- buf = GLOB_ALLOC_N(char, m-p+1);
- if (!buf) {
- GLOB_FREE(tmp);
- goto error;
- }
- memcpy(buf, p, m-p);
- buf[m-p] = '\0';
- tmp->type = magic > MAGICAL ? MAGICAL : magic > non_magic ? magic : PLAIN;
- tmp->str = buf;
- if (*m) {
- dirsep = 1;
- p = m + 1;
- }
- else {
- dirsep = 0;
- p = m;
- }
- }
- *tail = tmp;
- tail = &tmp->next;
+ tmp = GLOB_ALLOC(struct glob_pattern);
+ if (!tmp) goto error;
+ if (p + 2 < e && p[0] == '*' && p[1] == '*' && p[2] == '/') {
+ /* fold continuous RECURSIVEs (needed in glob_helper) */
+ do { p += 3; while (*p == '/') p++; } while (p[0] == '*' && p[1] == '*' && p[2] == '/');
+ tmp->type = RECURSIVE;
+ tmp->str = 0;
+ dirsep = 1;
+ recursive = 1;
+ }
+ else {
+ const char *m = find_dirsep(p, e, flags, enc);
+ const enum glob_pattern_type magic = has_magic(p, m, flags, enc);
+ const enum glob_pattern_type non_magic = (USE_NAME_ON_FS || FNM_SYSCASE) ? PLAIN : ALPHA;
+ char *buf;
+
+ if (!(FNM_SYSCASE || magic > non_magic) && !recursive && *m) {
+ const char *m2;
+ while (has_magic(m+1, m2 = find_dirsep(m+1, e, flags, enc), flags, enc) <= non_magic &&
+ *m2) {
+ m = m2;
+ }
+ }
+ buf = GLOB_ALLOC_N(char, m-p+1);
+ if (!buf) {
+ GLOB_FREE(tmp);
+ goto error;
+ }
+ memcpy(buf, p, m-p);
+ buf[m-p] = '\0';
+ tmp->type = magic > MAGICAL ? MAGICAL : magic > non_magic ? magic : PLAIN;
+ tmp->str = buf;
+ if (*m) {
+ dirsep = 1;
+ p = m + 1;
+ }
+ else {
+ dirsep = 0;
+ p = m;
+ }
+ }
+ *tail = tmp;
+ tail = &tmp->next;
}
tmp = GLOB_ALLOC(struct glob_pattern);
if (!tmp) {
- goto error;
+ error:
+ *tail = 0;
+ glob_free_pattern(list);
+ return 0;
}
tmp->type = dirsep ? MATCH_DIR : MATCH_ALL;
tmp->str = 0;
@@ -1912,22 +1697,17 @@ glob_make_pattern(const char *p, const char *e, int flags, rb_encoding *enc)
tmp->next = 0;
return list;
-
- error:
- *tail = 0;
- glob_free_pattern(list);
- return 0;
}
static void
glob_free_pattern(struct glob_pattern *list)
{
while (list) {
- struct glob_pattern *tmp = list;
- list = list->next;
- if (tmp->str)
- GLOB_FREE(tmp->str);
- GLOB_FREE(tmp);
+ struct glob_pattern *tmp = list;
+ list = list->next;
+ if (tmp->str)
+ GLOB_FREE(tmp->str);
+ GLOB_FREE(tmp);
}
}
@@ -1939,7 +1719,7 @@ join_path(const char *path, size_t len, int dirsep, const char *name, size_t nam
if (!buf) return 0;
memcpy(buf, path, len);
if (dirsep) {
- buf[len++] = '/';
+ buf[len++] = '/';
}
memcpy(buf+len, name, namlen);
buf[len+namlen] = '\0';
@@ -1956,8 +1736,8 @@ static int
is_case_sensitive(DIR *dirp, const char *path)
{
struct {
- u_int32_t length;
- vol_capabilities_attr_t cap[1];
+ u_int32_t length;
+ vol_capabilities_attr_t cap[1];
} __attribute__((aligned(4), packed)) attrbuf[1];
struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, 0, ATTR_VOL_INFO|ATTR_VOL_CAPABILITIES};
const vol_capabilities_attr_t *const cap = attrbuf[0].cap;
@@ -1966,13 +1746,13 @@ is_case_sensitive(DIR *dirp, const char *path)
# if defined HAVE_FGETATTRLIST
if (fgetattrlist(dirfd(dirp), &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW))
- return -1;
+ return -1;
# else
if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW))
- return -1;
+ return -1;
# endif
if (!(cap->valid[idx] & mask))
- return -1;
+ return -1;
return (cap->capabilities[idx] & mask) != 0;
}
@@ -1980,10 +1760,10 @@ static char *
replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p, int flags, rb_pathtype_t *type)
{
struct {
- u_int32_t length;
- attrreference_t ref[1];
- fsobj_type_t objtype;
- char path[MAXPATHLEN * 3];
+ u_int32_t length;
+ attrreference_t ref[1];
+ fsobj_type_t objtype;
+ char path[MAXPATHLEN * 3];
} __attribute__((aligned(4), packed)) attrbuf[1];
struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, ATTR_CMN_NAME|ATTR_CMN_OBJTYPE};
const attrreference_t *const ar = attrbuf[0].ref;
@@ -1994,9 +1774,9 @@ replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p, int f
*type = path_noent;
if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW)) {
- if (!to_be_ignored(errno))
- sys_warning(path, enc);
- return path;
+ if (!to_be_ignored(errno))
+ sys_warning(path, enc);
+ return path;
}
switch (attrbuf[0].objtype) {
@@ -2008,21 +1788,21 @@ replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p, int f
name = (char *)ar + ar->attr_dataoffset;
len = (long)ar->attr_length - 1;
if (name + len > (char *)attrbuf + sizeof(attrbuf))
- return path;
+ return path;
# if NORMALIZE_UTF8PATH
if (norm_p && has_nonascii(name, len)) {
- if (!NIL_P(utf8str = rb_str_normalize_ospath(name, len))) {
- RSTRING_GETMEM(utf8str, name, len);
- }
+ if (!NIL_P(utf8str = rb_str_normalize_ospath(name, len))) {
+ RSTRING_GETMEM(utf8str, name, len);
+ }
}
# endif
tmp = GLOB_REALLOC(path, base + len + 1);
if (tmp) {
- path = tmp;
- memcpy(path + base, name, len);
- path[base + len] = '\0';
+ path = tmp;
+ memcpy(path + base, name, len);
+ path[base + len] = '\0';
}
IF_NORMALIZE_UTF8PATH(if (!NIL_P(utf8str)) rb_str_resize(utf8str, 0));
return path;
@@ -2043,62 +1823,62 @@ replace_real_basename(char *path, long base, rb_encoding *enc, int norm_p, int f
long wlen;
int e = 0;
if (!fundamental_encoding_p(enc)) {
- tmp = rb_enc_str_new_cstr(plainname, enc);
- tmp = rb_str_encode_ospath(tmp);
- plainname = RSTRING_PTR(tmp);
+ tmp = rb_enc_str_new_cstr(plainname, enc);
+ tmp = rb_str_encode_ospath(tmp);
+ plainname = RSTRING_PTR(tmp);
}
wplain = rb_w32_mbstr_to_wstr(CP_UTF8, plainname, -1, &wlen);
if (tmp) rb_str_resize(tmp, 0);
if (!wplain) return path;
if (GetFileAttributesExW(wplain, GetFileExInfoStandard, &fa)) {
- h = FindFirstFileW(wplain, &fd);
- e = rb_w32_map_errno(GetLastError());
+ h = FindFirstFileW(wplain, &fd);
+ e = rb_w32_map_errno(GetLastError());
}
if (fa.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
- if (!rb_w32_reparse_symlink_p(wplain))
- fa.dwFileAttributes &= ~FILE_ATTRIBUTE_REPARSE_POINT;
+ if (!rb_w32_reparse_symlink_p(wplain))
+ fa.dwFileAttributes &= ~FILE_ATTRIBUTE_REPARSE_POINT;
}
free(wplain);
if (h == INVALID_HANDLE_VALUE) {
- *type = path_noent;
- if (e && !to_be_ignored(e)) {
- errno = e;
- sys_warning(path, enc);
- }
- return path;
+ *type = path_noent;
+ if (e && !to_be_ignored(e)) {
+ errno = e;
+ sys_warning(path, enc);
+ }
+ return path;
}
FindClose(h);
*type =
- (fa.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) ? path_symlink :
- (fa.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? path_directory :
- path_regular;
+ (fa.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) ? path_symlink :
+ (fa.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? path_directory :
+ path_regular;
if (tmp) {
- char *buf;
- tmp = rb_w32_conv_from_wchar(fd.cFileName, enc);
- wlen = RSTRING_LEN(tmp);
- buf = GLOB_REALLOC(path, base + wlen + 1);
- if (buf) {
- path = buf;
- memcpy(path + base, RSTRING_PTR(tmp), wlen);
- path[base + wlen] = 0;
- }
- rb_str_resize(tmp, 0);
+ char *buf;
+ tmp = rb_w32_conv_from_wchar(fd.cFileName, enc);
+ wlen = RSTRING_LEN(tmp);
+ buf = GLOB_REALLOC(path, base + wlen + 1);
+ if (buf) {
+ path = buf;
+ memcpy(path + base, RSTRING_PTR(tmp), wlen);
+ path[base + wlen] = 0;
+ }
+ rb_str_resize(tmp, 0);
}
else {
- char *utf8filename;
- wlen = WideCharToMultiByte(CP_UTF8, 0, fd.cFileName, -1, NULL, 0, NULL, NULL);
- utf8filename = GLOB_REALLOC(0, wlen);
- if (utf8filename) {
- char *buf;
- WideCharToMultiByte(CP_UTF8, 0, fd.cFileName, -1, utf8filename, wlen, NULL, NULL);
- buf = GLOB_REALLOC(path, base + wlen + 1);
- if (buf) {
- path = buf;
- memcpy(path + base, utf8filename, wlen);
- path[base + wlen] = 0;
- }
- GLOB_FREE(utf8filename);
- }
+ char *utf8filename;
+ wlen = WideCharToMultiByte(CP_UTF8, 0, fd.cFileName, -1, NULL, 0, NULL, NULL);
+ utf8filename = GLOB_REALLOC(0, wlen);
+ if (utf8filename) {
+ char *buf;
+ WideCharToMultiByte(CP_UTF8, 0, fd.cFileName, -1, utf8filename, wlen, NULL, NULL);
+ buf = GLOB_REALLOC(path, base + wlen + 1);
+ if (buf) {
+ path = buf;
+ memcpy(path + base, utf8filename, wlen);
+ path[base + wlen] = 0;
+ }
+ GLOB_FREE(utf8filename);
+ }
}
return path;
}
@@ -2167,15 +1947,13 @@ rb_glob_warning(const char *path, VALUE a, const void *enc, int error)
}
#endif
-NORETURN(static VALUE glob_func_error(VALUE val));
-
static VALUE
glob_func_error(VALUE val)
{
struct glob_error_args *arg = (struct glob_error_args *)val;
VALUE path = rb_enc_str_new_cstr(arg->path, arg->enc);
rb_syserr_fail_str(arg->error, path);
- UNREACHABLE_RETURN(Qnil);
+ return Qnil;
}
static int
@@ -2185,12 +1963,8 @@ rb_glob_error(const char *path, VALUE a, const void *enc, int error)
struct glob_error_args args;
VALUE (*errfunc)(VALUE) = glob_func_error;
- switch (error) {
- case EACCES:
-#ifdef ENOTCAPABLE
- case ENOTCAPABLE:
-#endif
- errfunc = glob_func_warning;
+ if (error == EACCES) {
+ errfunc = glob_func_warning;
}
args.path = path;
args.enc = enc;
@@ -2199,257 +1973,18 @@ rb_glob_error(const char *path, VALUE a, const void *enc, int error)
return status;
}
-typedef struct rb_dirent {
- long d_namlen;
- const char *d_name;
-#ifdef _WIN32
- const char *d_altname;
-#endif
- uint8_t d_type;
-} rb_dirent_t;
-
static inline int
-dirent_match(const char *pat, rb_encoding *enc, const char *name, const rb_dirent_t *dp, int flags)
+dirent_match(const char *pat, rb_encoding *enc, const char *name, const struct dirent *dp, int flags)
{
if (fnmatch(pat, enc, name, flags) == 0) return 1;
#ifdef _WIN32
if (dp->d_altname && (flags & FNM_SHORTNAME)) {
- if (fnmatch(pat, enc, dp->d_altname, flags) == 0) return 1;
+ if (fnmatch(pat, enc, dp->d_altname, flags) == 0) return 1;
}
#endif
return 0;
}
-struct push_glob_args {
- int fd;
- const char *path;
- size_t baselen;
- size_t namelen;
- int dirsep; /* '/' should be placed before appending child entry's name to 'path'. */
- rb_pathtype_t pathtype; /* type of 'path' */
- int flags;
- const ruby_glob_funcs_t *funcs;
- VALUE arg;
-};
-
-struct dirent_brace_args {
- const char *name;
- const rb_dirent_t *dp;
- int flags;
-};
-
-static int
-dirent_match_brace(const char *pattern, VALUE val, void *enc)
-{
- struct dirent_brace_args *arg = (struct dirent_brace_args *)val;
-
- return dirent_match(pattern, enc, arg->name, arg->dp, arg->flags);
-}
-
-/* join paths from pattern list of glob_make_pattern() */
-static char*
-join_path_from_pattern(struct glob_pattern **beg)
-{
- struct glob_pattern *p;
- char *path = NULL;
- size_t path_len = 0;
-
- for (p = *beg; p; p = p->next) {
- const char *str;
- switch (p->type) {
- case RECURSIVE:
- str = "**";
- break;
- case MATCH_DIR:
- /* append last slash */
- str = "";
- break;
- default:
- str = p->str;
- if (!str) continue;
- }
- if (!path) {
- path_len = strlen(str);
- path = GLOB_ALLOC_N(char, path_len + 1);
- if (path) {
- memcpy(path, str, path_len);
- path[path_len] = '\0';
- }
- }
- else {
- size_t len = strlen(str);
- char *tmp;
- tmp = GLOB_REALLOC(path, path_len + len + 2);
- if (tmp) {
- path = tmp;
- path[path_len++] = '/';
- memcpy(path + path_len, str, len);
- path_len += len;
- path[path_len] = '\0';
- }
- }
- }
- return path;
-}
-
-static int push_caller(const char *path, VALUE val, void *enc);
-
-static int ruby_brace_expand(const char *str, int flags, ruby_glob_func *func, VALUE arg,
- rb_encoding *enc, VALUE var);
-
-static const size_t rb_dirent_name_offset =
- offsetof(rb_dirent_t, d_type) + sizeof(uint8_t);
-
-static rb_dirent_t *
-dirent_copy(const struct dirent *dp, rb_dirent_t *rdp)
-{
- if (!dp) return NULL;
- size_t namlen = NAMLEN(dp);
- const size_t altlen =
-#ifdef _WIN32
- dp->d_altlen ? dp->d_altlen + 1 :
-#endif
- 0;
- rb_dirent_t *newrdp = rdp;
- if (!rdp && !(newrdp = malloc(rb_dirent_name_offset + namlen + 1 + altlen)))
- return NULL;
- newrdp->d_namlen = namlen;
- if (!rdp) {
- char *name = (char *)newrdp + rb_dirent_name_offset;
- memcpy(name, dp->d_name, namlen);
- name[namlen] = '\0';
-#ifdef _WIN32
- newrdp->d_altname = NULL;
- if (altlen) {
- char *const altname = name + namlen + 1;
- memcpy(altname, dp->d_altname, altlen - 1);
- altname[altlen - 1] = '\0';
- newrdp->d_altname = altname;
- }
-#endif
- newrdp->d_name = name;
- }
- else {
- newrdp->d_name = dp->d_name;
-#ifdef _WIN32
- newrdp->d_altname = dp->d_altname;
-#endif
- }
-#if !EMULATE_IFTODT
- newrdp->d_type = dp->d_type;
-#else
- newrdp->d_type = 0;
-#endif
- return newrdp;
-}
-
-typedef union {
- struct {
- DIR *dirp;
- rb_dirent_t ent;
- } nosort;
- struct {
- size_t count, idx;
- rb_dirent_t **entries;
- } sort;
-} ruby_glob_entries_t;
-
-static int
-glob_sort_cmp(const void *a, const void *b, void *e)
-{
- const rb_dirent_t *ent1 = *(void **)a;
- const rb_dirent_t *ent2 = *(void **)b;
- return strcmp(ent1->d_name, ent2->d_name);
-}
-
-static void
-glob_dir_finish(ruby_glob_entries_t *ent, int flags)
-{
- if (flags & FNM_GLOB_NOSORT) {
- closedir(ent->nosort.dirp);
- ent->nosort.dirp = NULL;
- }
- else if (ent->sort.entries) {
- for (size_t i = 0, count = ent->sort.count; i < count;) {
- GLOB_FREE(ent->sort.entries[i++]);
- }
- GLOB_FREE(ent->sort.entries);
- ent->sort.entries = NULL;
- ent->sort.count = ent->sort.idx = 0;
- }
-}
-
-static ruby_glob_entries_t *
-glob_opendir(ruby_glob_entries_t *ent, DIR *dirp, int flags, rb_encoding *enc)
-{
- MEMZERO(ent, ruby_glob_entries_t, 1);
- if (flags & FNM_GLOB_NOSORT) {
- ent->nosort.dirp = dirp;
- return ent;
- }
- else {
- void *newp;
- struct dirent *dp;
- size_t count = 0, capacity = 0;
- ent->sort.count = 0;
- ent->sort.idx = 0;
- ent->sort.entries = 0;
-#ifdef _WIN32
- if ((capacity = dirp->nfiles) > 0) {
- if (!(newp = GLOB_ALLOC_N(rb_dirent_t, capacity))) {
- closedir(dirp);
- return NULL;
- }
- ent->sort.entries = newp;
- }
-#endif
- while ((dp = READDIR(dirp, enc)) != NULL) {
- rb_dirent_t *rdp = dirent_copy(dp, NULL);
- if (!rdp) {
- goto nomem;
- }
- if (count >= capacity) {
- capacity += 256;
- if (!(newp = GLOB_REALLOC_N(ent->sort.entries, capacity)))
- goto nomem;
- ent->sort.entries = newp;
- }
- ent->sort.entries[count++] = rdp;
- ent->sort.count = count;
- }
- closedir(dirp);
- if (count < capacity) {
- if (!(newp = GLOB_REALLOC_N(ent->sort.entries, count))) {
- glob_dir_finish(ent, 0);
- return NULL;
- }
- ent->sort.entries = newp;
- }
- ruby_qsort(ent->sort.entries, ent->sort.count, sizeof(ent->sort.entries[0]),
- glob_sort_cmp, NULL);
- return ent;
- }
-
- nomem:
- glob_dir_finish(ent, 0);
- closedir(dirp);
- return NULL;
-}
-
-static rb_dirent_t *
-glob_getent(ruby_glob_entries_t *ent, int flags, rb_encoding *enc)
-{
- if (flags & FNM_GLOB_NOSORT) {
- return dirent_copy(READDIR(ent->nosort.dirp, enc), &ent->nosort.ent);
- }
- else if (ent->sort.idx < ent->sort.count) {
- return ent->sort.entries[ent->sort.idx++];
- }
- else {
- return NULL;
- }
-}
-
static int
glob_helper(
int fd,
@@ -2468,374 +2003,290 @@ glob_helper(
struct stat st;
int status = 0;
struct glob_pattern **cur, **new_beg, **new_end;
- int plain = 0, brace = 0, magical = 0, recursive = 0, match_all = 0, match_dir = 0;
+ int plain = 0, magical = 0, recursive = 0, match_all = 0, match_dir = 0;
int escape = !(flags & FNM_NOESCAPE);
size_t pathlen = baselen + namelen;
+ const char *base = path;
- rb_check_stack_overflow();
+ if (fd != AT_FDCWD && *(base += baselen) == '/') base++;
for (cur = beg; cur < end; ++cur) {
- struct glob_pattern *p = *cur;
- if (p->type == RECURSIVE) {
- recursive = 1;
- p = p->next;
- }
- switch (p->type) {
- case PLAIN:
- plain = 1;
- break;
- case ALPHA:
+ struct glob_pattern *p = *cur;
+ if (p->type == RECURSIVE) {
+ recursive = 1;
+ p = p->next;
+ }
+ switch (p->type) {
+ case PLAIN:
+ plain = 1;
+ break;
+ case ALPHA:
#if USE_NAME_ON_FS == USE_NAME_ON_FS_REAL_BASENAME
- plain = 1;
+ plain = 1;
#else
- magical = 1;
-#endif
- break;
- case BRACE:
- if (!recursive || strchr(p->str, '/')) {
- brace = 1;
- }
- break;
- case MAGICAL:
- magical = 2;
- break;
- case MATCH_ALL:
- match_all = 1;
- break;
- case MATCH_DIR:
- match_dir = 1;
- break;
- case RECURSIVE:
- rb_bug("continuous RECURSIVEs");
- }
- }
-
- if (brace) {
- struct push_glob_args args;
- char* brace_path = join_path_from_pattern(beg);
- if (!brace_path) return -1;
- args.fd = fd;
- args.path = path;
- args.baselen = baselen;
- args.namelen = namelen;
- args.dirsep = dirsep;
- args.pathtype = pathtype;
- args.flags = flags;
- args.funcs = funcs;
- args.arg = arg;
- status = ruby_brace_expand(brace_path, flags, push_caller, (VALUE)&args, enc, Qfalse);
- GLOB_FREE(brace_path);
- return status;
- }
-
- if (*path) {
- if (match_all && pathtype == path_unknown) {
- if (do_lstat(fd, baselen, path, &st, flags, enc) == 0) {
- pathtype = IFTODT(st.st_mode);
- }
- else {
- pathtype = path_noent;
- }
- }
- if (match_dir && (pathtype == path_unknown || pathtype == path_symlink)) {
- if (do_stat(fd, baselen, path, &st, flags, enc) == 0) {
- pathtype = IFTODT(st.st_mode);
- }
- else {
- pathtype = path_noent;
- }
- }
- if (match_all && pathtype > path_noent) {
- const char *subpath = path + baselen + (baselen && path[baselen] == '/');
- status = glob_call_func(funcs->match, subpath, arg, enc);
- if (status) return status;
- }
- if (match_dir && pathtype == path_directory) {
- int seplen = (baselen && path[baselen] == '/');
- const char *subpath = path + baselen + seplen;
- char *tmp = join_path(subpath, namelen - seplen, dirsep, "", 0);
- if (!tmp) return -1;
- status = glob_call_func(funcs->match, tmp, arg, enc);
- GLOB_FREE(tmp);
- if (status) return status;
- }
+ magical = 1;
+#endif
+ break;
+ case MAGICAL:
+ magical = 2;
+ break;
+ case MATCH_ALL:
+ match_all = 1;
+ break;
+ case MATCH_DIR:
+ match_dir = 1;
+ break;
+ case RECURSIVE:
+ rb_bug("continuous RECURSIVEs");
+ }
+ }
+
+ if (*base) {
+ if (match_all && pathtype == path_unknown) {
+ if (do_lstat(fd, base, &st, flags, enc) == 0) {
+ pathtype = IFTODT(st.st_mode);
+ }
+ else {
+ pathtype = path_noent;
+ }
+ }
+ if (match_dir && (pathtype == path_unknown || pathtype == path_symlink)) {
+ if (do_stat(fd, base, &st, flags, enc) == 0) {
+ pathtype = IFTODT(st.st_mode);
+ }
+ else {
+ pathtype = path_noent;
+ }
+ }
+ if (match_all && pathtype > path_noent) {
+ const char *subpath = path + baselen + (baselen && path[baselen] == '/');
+ status = glob_call_func(funcs->match, subpath, arg, enc);
+ if (status) return status;
+ }
+ if (match_dir && pathtype == path_directory) {
+ const char *subpath = path + baselen + (baselen && path[baselen] == '/');
+ char *tmp = join_path(subpath, namelen, dirsep, "", 0);
+ if (!tmp) return -1;
+ status = glob_call_func(funcs->match, tmp + (baselen ? dirsep : 0), arg, enc);
+ GLOB_FREE(tmp);
+ if (status) return status;
+ }
}
if (pathtype == path_noent) return 0;
if (magical || recursive) {
- rb_dirent_t *dp;
- DIR *dirp;
+ struct dirent *dp;
+ DIR *dirp;
# if USE_NAME_ON_FS == USE_NAME_ON_FS_BY_FNMATCH
- char *plainname = 0;
+ char *plainname = 0;
# endif
- IF_NORMALIZE_UTF8PATH(int norm_p);
+ IF_NORMALIZE_UTF8PATH(int norm_p);
# if USE_NAME_ON_FS == USE_NAME_ON_FS_BY_FNMATCH
- if (cur + 1 == end && (*cur)->type <= ALPHA) {
- plainname = join_path(path, pathlen, dirsep, (*cur)->str, strlen((*cur)->str));
- if (!plainname) return -1;
- dirp = do_opendir(fd, basename, plainname, flags, enc, funcs->error, arg, &status);
- GLOB_FREE(plainname);
- }
- else
+ if (cur + 1 == end && (*cur)->type <= ALPHA) {
+ plainname = join_path(path, pathlen, dirsep, (*cur)->str, strlen((*cur)->str));
+ if (!plainname) return -1;
+ dirp = do_opendir(fd, plainname, flags, enc, funcs->error, arg, &status);
+ GLOB_FREE(plainname);
+ }
+ else
# else
- ;
+ ;
# endif
- dirp = do_opendir(fd, baselen, path, flags, enc, funcs->error, arg, &status);
- if (dirp == NULL) {
+ dirp = do_opendir(fd, *base ? base : ".", flags, enc, funcs->error, arg, &status);
+ if (dirp == NULL) {
# if FNM_SYSCASE || NORMALIZE_UTF8PATH
- if ((magical < 2) && !recursive && (errno == EACCES)) {
- /* no read permission, fallback */
- goto literally;
- }
+ if ((magical < 2) && !recursive && (errno == EACCES)) {
+ /* no read permission, fallback */
+ goto literally;
+ }
# endif
- return status;
- }
- IF_NORMALIZE_UTF8PATH(norm_p = need_normalization(dirp, *path ? path : "."));
+ return status;
+ }
+ IF_NORMALIZE_UTF8PATH(norm_p = need_normalization(dirp, *base ? base : "."));
# if NORMALIZE_UTF8PATH
- if (!(norm_p || magical || recursive)) {
- closedir(dirp);
- goto literally;
- }
+ if (!(norm_p || magical || recursive)) {
+ closedir(dirp);
+ goto literally;
+ }
# endif
# ifdef HAVE_GETATTRLIST
- if (is_case_sensitive(dirp, path) == 0)
- flags |= FNM_CASEFOLD;
+ if (is_case_sensitive(dirp, path) == 0)
+ flags |= FNM_CASEFOLD;
# endif
- ruby_glob_entries_t globent;
- if (!glob_opendir(&globent, dirp, flags, enc)) {
- status = 0;
- if (funcs->error) {
- status = (*funcs->error)(path, arg, enc, ENOMEM);
- }
- else {
- sys_warning(path, enc);
- }
- return status;
- }
-
- int skipdot = (flags & FNM_GLOB_SKIPDOT);
- flags |= FNM_GLOB_SKIPDOT;
-
- while ((dp = glob_getent(&globent, flags, enc)) != NULL) {
- char *buf;
- rb_pathtype_t new_pathtype = path_unknown;
- const char *name;
- size_t namlen;
- int dotfile = 0;
- IF_NORMALIZE_UTF8PATH(VALUE utf8str = Qnil);
-
- name = dp->d_name;
- namlen = dp->d_namlen;
- if (name[0] == '.') {
- ++dotfile;
- if (namlen == 1) {
- /* unless DOTMATCH, skip current directories not to recurse infinitely */
- if (recursive && !(flags & FNM_DOTMATCH)) continue;
- if (skipdot) continue;
- ++dotfile;
- new_pathtype = path_directory; /* force to skip stat/lstat */
- }
- else if (namlen == 2 && name[1] == '.') {
- /* always skip parent directories not to recurse infinitely */
- continue;
- }
- }
+ while ((dp = READDIR(dirp, enc)) != NULL) {
+ char *buf;
+ rb_pathtype_t new_pathtype = path_unknown;
+ const char *name;
+ size_t namlen;
+ int dotfile = 0;
+ IF_NORMALIZE_UTF8PATH(VALUE utf8str = Qnil);
+
+ name = dp->d_name;
+ namlen = NAMLEN(dp);
+ if (recursive && name[0] == '.') {
+ ++dotfile;
+ if (namlen == 1) {
+ /* unless DOTMATCH, skip current directories not to recurse infinitely */
+ if (!(flags & FNM_DOTMATCH)) continue;
+ ++dotfile;
+ new_pathtype = path_directory; /* force to skip stat/lstat */
+ }
+ else if (namlen == 2 && name[1] == '.') {
+ /* always skip parent directories not to recurse infinitely */
+ continue;
+ }
+ }
# if NORMALIZE_UTF8PATH
- if (norm_p && has_nonascii(name, namlen)) {
- if (!NIL_P(utf8str = rb_str_normalize_ospath(name, namlen))) {
- RSTRING_GETMEM(utf8str, name, namlen);
- }
- }
+ if (norm_p && has_nonascii(name, namlen)) {
+ if (!NIL_P(utf8str = rb_str_normalize_ospath(name, namlen))) {
+ RSTRING_GETMEM(utf8str, name, namlen);
+ }
+ }
# endif
- buf = join_path(path, pathlen, dirsep, name, namlen);
- IF_NORMALIZE_UTF8PATH(if (!NIL_P(utf8str)) rb_str_resize(utf8str, 0));
- if (!buf) {
- status = -1;
- break;
- }
- name = buf + pathlen + (dirsep != 0);
-#if !EMULATE_IFTODT
- if (dp->d_type != DT_UNKNOWN) {
- /* Got it. We need no more lstat. */
- new_pathtype = dp->d_type;
- }
-#endif
- if (recursive && dotfile < ((flags & FNM_DOTMATCH) ? 2 : 1) &&
- new_pathtype == path_unknown) {
- /* RECURSIVE never match dot files unless FNM_DOTMATCH is set */
- if (do_lstat(fd, baselen, buf, &st, flags, enc) == 0)
- new_pathtype = IFTODT(st.st_mode);
- else
- new_pathtype = path_noent;
- }
-
- new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, (end - beg) * 2);
- if (!new_beg) {
- GLOB_FREE(buf);
- status = -1;
- break;
- }
-
- for (cur = beg; cur < end; ++cur) {
- struct glob_pattern *p = *cur;
- struct dirent_brace_args args;
- if (p->type == RECURSIVE) {
- if (new_pathtype == path_directory || /* not symlink but real directory */
- new_pathtype == path_exist) {
- if (dotfile < ((flags & FNM_DOTMATCH) ? 2 : 1))
- *new_end++ = p; /* append recursive pattern */
- }
- p = p->next; /* 0 times recursion */
- }
- switch (p->type) {
- case BRACE:
- args.name = name;
- args.dp = dp;
- args.flags = flags;
- if (ruby_brace_expand(p->str, flags, dirent_match_brace,
- (VALUE)&args, enc, Qfalse) > 0)
- *new_end++ = p->next;
- break;
- case ALPHA:
+ buf = join_path(path, pathlen, dirsep, name, namlen);
+ IF_NORMALIZE_UTF8PATH(if (!NIL_P(utf8str)) rb_str_resize(utf8str, 0));
+ if (!buf) {
+ status = -1;
+ break;
+ }
+ name = buf + pathlen + (dirsep != 0);
+#ifdef DT_UNKNOWN
+ if (dp->d_type != DT_UNKNOWN) {
+ /* Got it. We need no more lstat. */
+ new_pathtype = dp->d_type;
+ }
+#endif
+ if (recursive && dotfile < ((flags & FNM_DOTMATCH) ? 2 : 1) &&
+ new_pathtype == path_unknown) {
+ /* RECURSIVE never match dot files unless FNM_DOTMATCH is set */
+ if (do_lstat(fd, buf, &st, flags, enc) == 0)
+ new_pathtype = IFTODT(st.st_mode);
+ else
+ new_pathtype = path_noent;
+ }
+
+ new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, (end - beg) * 2);
+ if (!new_beg) {
+ GLOB_FREE(buf);
+ status = -1;
+ break;
+ }
+
+ for (cur = beg; cur < end; ++cur) {
+ struct glob_pattern *p = *cur;
+ if (p->type == RECURSIVE) {
+ if (new_pathtype == path_directory || /* not symlink but real directory */
+ new_pathtype == path_exist) {
+ if (dotfile < ((flags & FNM_DOTMATCH) ? 2 : 1))
+ *new_end++ = p; /* append recursive pattern */
+ }
+ p = p->next; /* 0 times recursion */
+ }
+ switch (p->type) {
+ case ALPHA:
# if USE_NAME_ON_FS == USE_NAME_ON_FS_BY_FNMATCH
- if (plainname) {
- *new_end++ = p->next;
- break;
- }
+ if (plainname) {
+ *new_end++ = p->next;
+ break;
+ }
# endif
- case PLAIN:
- case MAGICAL:
- if (dirent_match(p->str, enc, name, dp, flags))
- *new_end++ = p->next;
- default:
- break;
- }
- }
-
- status = glob_helper(fd, buf, baselen, name - buf - baselen + namlen, 1,
- new_pathtype, new_beg, new_end,
- flags, funcs, arg, enc);
- GLOB_FREE(buf);
- GLOB_FREE(new_beg);
- if (status) break;
- }
-
- glob_dir_finish(&globent, flags);
+ case PLAIN:
+ case MAGICAL:
+ if (dirent_match(p->str, enc, name, dp, flags))
+ *new_end++ = p->next;
+ default:
+ break;
+ }
+ }
+
+ status = glob_helper(fd, buf, baselen, name - buf - baselen + namlen, 1,
+ new_pathtype, new_beg, new_end,
+ flags, funcs, arg, enc);
+ GLOB_FREE(buf);
+ GLOB_FREE(new_beg);
+ if (status) break;
+ }
+
+ closedir(dirp);
}
else if (plain) {
- struct glob_pattern **copy_beg, **copy_end, **cur2;
+ struct glob_pattern **copy_beg, **copy_end, **cur2;
# if FNM_SYSCASE || NORMALIZE_UTF8PATH
literally:
# endif
- copy_beg = copy_end = GLOB_ALLOC_N(struct glob_pattern *, end - beg);
- if (!copy_beg) return -1;
- for (cur = beg; cur < end; ++cur)
- *copy_end++ = (*cur)->type <= ALPHA ? *cur : 0;
-
- for (cur = copy_beg; cur < copy_end; ++cur) {
- if (*cur) {
- rb_pathtype_t new_pathtype = path_unknown;
- char *buf;
- char *name;
- size_t len = strlen((*cur)->str) + 1;
- name = GLOB_ALLOC_N(char, len);
- if (!name) {
- status = -1;
- break;
- }
- memcpy(name, (*cur)->str, len);
- if (escape)
- len = remove_backslashes(name, name+len-1, enc) - name;
-
- new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, end - beg);
- if (!new_beg) {
- GLOB_FREE(name);
- status = -1;
- break;
- }
- *new_end++ = (*cur)->next;
- for (cur2 = cur + 1; cur2 < copy_end; ++cur2) {
- if (*cur2 && fnmatch((*cur2)->str, enc, name, flags) == 0) {
- *new_end++ = (*cur2)->next;
- *cur2 = 0;
- }
- }
-
- buf = join_path(path, pathlen, dirsep, name, len);
- GLOB_FREE(name);
- if (!buf) {
- GLOB_FREE(new_beg);
- status = -1;
- break;
- }
+ copy_beg = copy_end = GLOB_ALLOC_N(struct glob_pattern *, end - beg);
+ if (!copy_beg) return -1;
+ for (cur = beg; cur < end; ++cur)
+ *copy_end++ = (*cur)->type <= ALPHA ? *cur : 0;
+
+ for (cur = copy_beg; cur < copy_end; ++cur) {
+ if (*cur) {
+ rb_pathtype_t new_pathtype = path_unknown;
+ char *buf;
+ char *name;
+ size_t len = strlen((*cur)->str) + 1;
+ name = GLOB_ALLOC_N(char, len);
+ if (!name) {
+ status = -1;
+ break;
+ }
+ memcpy(name, (*cur)->str, len);
+ if (escape)
+ len = remove_backslashes(name, name+len-1, enc) - name;
+
+ new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, end - beg);
+ if (!new_beg) {
+ GLOB_FREE(name);
+ status = -1;
+ break;
+ }
+ *new_end++ = (*cur)->next;
+ for (cur2 = cur + 1; cur2 < copy_end; ++cur2) {
+ if (*cur2 && fnmatch((*cur2)->str, enc, name, flags) == 0) {
+ *new_end++ = (*cur2)->next;
+ *cur2 = 0;
+ }
+ }
+
+ buf = join_path(path, pathlen, dirsep, name, len);
+ GLOB_FREE(name);
+ if (!buf) {
+ GLOB_FREE(new_beg);
+ status = -1;
+ break;
+ }
#if USE_NAME_ON_FS == USE_NAME_ON_FS_REAL_BASENAME
- if ((*cur)->type == ALPHA) {
- buf = replace_real_basename(buf, pathlen + (dirsep != 0), enc,
- IF_NORMALIZE_UTF8PATH(1)+0,
- flags, &new_pathtype);
- if (!buf) break;
- }
-#endif
- status = glob_helper(fd, buf, baselen,
- namelen + strlen(buf + pathlen), 1,
- new_pathtype, new_beg, new_end,
- flags, funcs, arg, enc);
- GLOB_FREE(buf);
- GLOB_FREE(new_beg);
- if (status) break;
- }
- }
-
- GLOB_FREE(copy_beg);
+ if ((*cur)->type == ALPHA) {
+ buf = replace_real_basename(buf, pathlen + (dirsep != 0), enc,
+ IF_NORMALIZE_UTF8PATH(1)+0,
+ flags, &new_pathtype);
+ if (!buf) break;
+ }
+#endif
+ status = glob_helper(fd, buf, baselen,
+ namelen + strlen(buf + pathlen), 1,
+ new_pathtype, new_beg, new_end,
+ flags, funcs, arg, enc);
+ GLOB_FREE(buf);
+ GLOB_FREE(new_beg);
+ if (status) break;
+ }
+ }
+
+ GLOB_FREE(copy_beg);
}
return status;
}
static int
-push_caller(const char *path, VALUE val, void *enc)
-{
- struct push_glob_args *arg = (struct push_glob_args *)val;
- struct glob_pattern *list;
- int status;
-
- list = glob_make_pattern(path, path + strlen(path), arg->flags, enc);
- if (!list) {
- return -1;
- }
- status = glob_helper(arg->fd, arg->path, arg->baselen, arg->namelen, arg->dirsep,
- arg->pathtype, &list, &list + 1, arg->flags, arg->funcs,
- arg->arg, enc);
- glob_free_pattern(list);
- return status;
-}
-
-static int ruby_glob0(const char *path, int fd, const char *base, int flags,
- const ruby_glob_funcs_t *funcs, VALUE arg, rb_encoding *enc);
-
-struct push_glob0_args {
- int fd;
- const char *base;
- int flags;
- const ruby_glob_funcs_t *funcs;
- VALUE arg;
-};
-
-static int
-push_glob0_caller(const char *path, VALUE val, void *enc)
-{
- struct push_glob0_args *arg = (struct push_glob0_args *)val;
- return ruby_glob0(path, arg->fd, arg->base, arg->flags, arg->funcs, arg->arg, enc);
-}
-
-static int
ruby_glob0(const char *path, int fd, const char *base, int flags,
- const ruby_glob_funcs_t *funcs, VALUE arg,
- rb_encoding *enc)
+ const ruby_glob_funcs_t *funcs, VALUE arg,
+ rb_encoding *enc)
{
struct glob_pattern *list;
const char *root, *start;
@@ -2844,17 +2295,6 @@ ruby_glob0(const char *path, int fd, const char *base, int flags,
int status, dirsep = FALSE;
start = root = path;
-
- if (*root == '{') {
- struct push_glob0_args args;
- args.fd = fd;
- args.base = base;
- args.flags = flags;
- args.funcs = funcs;
- args.arg = arg;
- return ruby_brace_expand(path, flags, push_glob0_caller, (VALUE)&args, enc, Qfalse);
- }
-
flags |= FNM_SYSCASE;
#if defined DOSISH
root = rb_enc_path_skip_prefix(root, root + strlen(root), enc);
@@ -2864,10 +2304,10 @@ ruby_glob0(const char *path, int fd, const char *base, int flags,
n = root - start;
if (!n && base) {
- n = strlen(base);
- baselen = n;
- start = base;
- dirsep = TRUE;
+ n = strlen(base);
+ baselen = n;
+ start = base;
+ dirsep = TRUE;
}
buf = GLOB_ALLOC_N(char, n + 1);
if (!buf) return -1;
@@ -2876,12 +2316,12 @@ ruby_glob0(const char *path, int fd, const char *base, int flags,
list = glob_make_pattern(root, root + strlen(root), flags, enc);
if (!list) {
- GLOB_FREE(buf);
- return -1;
+ GLOB_FREE(buf);
+ return -1;
}
status = glob_helper(fd, buf, baselen, n-baselen, dirsep,
- path_unknown, &list, &list + 1,
- flags, funcs, arg, enc);
+ path_unknown, &list, &list + 1,
+ flags, funcs, arg, enc);
glob_free_pattern(list);
GLOB_FREE(buf);
@@ -2893,9 +2333,9 @@ ruby_glob(const char *path, int flags, ruby_glob_func *func, VALUE arg)
{
ruby_glob_funcs_t funcs;
funcs.match = func;
- funcs.error = 0;
+ funcs.error = NULL;
return ruby_glob0(path, AT_FDCWD, 0, flags & ~GLOB_VERBOSE,
- &funcs, arg, rb_ascii8bit_encoding());
+ &funcs, arg, rb_ascii8bit_encoding());
}
static int
@@ -2924,7 +2364,7 @@ rb_glob(const char *path, void (*func)(const char *, VALUE, void *), VALUE arg)
args.enc = rb_ascii8bit_encoding();
status = ruby_glob0(path, AT_FDCWD, 0, GLOB_VERBOSE, &rb_glob_funcs,
- (VALUE)&args, args.enc);
+ (VALUE)&args, args.enc);
if (status) GLOB_JUMP_TAG(status);
}
@@ -2934,6 +2374,7 @@ push_pattern(const char *path, VALUE ary, void *enc)
#if defined _WIN32 || defined __APPLE__
VALUE name = rb_utf8_str_new_cstr(path);
rb_encoding *eenc = rb_default_internal_encoding();
+ OBJ_TAINT(name);
name = rb_str_conv_enc(name, NULL, eenc ? eenc : enc);
#else
VALUE name = rb_external_str_new_with_enc(path, strlen(path), enc);
@@ -2943,7 +2384,7 @@ push_pattern(const char *path, VALUE ary, void *enc)
static int
ruby_brace_expand(const char *str, int flags, ruby_glob_func *func, VALUE arg,
- rb_encoding *enc, VALUE var)
+ rb_encoding *enc, VALUE var)
{
const int escape = !(flags & FNM_NOESCAPE);
const char *p = str;
@@ -2953,48 +2394,48 @@ ruby_brace_expand(const char *str, int flags, ruby_glob_func *func, VALUE arg,
int nest = 0, status = 0;
while (*p) {
- if (*p == '{' && nest++ == 0) {
- lbrace = p;
- }
- if (*p == '}' && lbrace && --nest == 0) {
- rbrace = p;
- break;
- }
- if (*p == '\\' && escape) {
- if (!*++p) break;
- }
- Inc(p, pend, enc);
+ if (*p == '{' && nest++ == 0) {
+ lbrace = p;
+ }
+ if (*p == '}' && lbrace && --nest == 0) {
+ rbrace = p;
+ break;
+ }
+ if (*p == '\\' && escape) {
+ if (!*++p) break;
+ }
+ Inc(p, pend, enc);
}
if (lbrace && rbrace) {
- size_t len = strlen(s) + 1;
- char *buf = GLOB_ALLOC_N(char, len);
- long shift;
-
- if (!buf) return -1;
- memcpy(buf, s, lbrace-s);
- shift = (lbrace-s);
- p = lbrace;
- while (p < rbrace) {
- const char *t = ++p;
- nest = 0;
- while (p < rbrace && !(*p == ',' && nest == 0)) {
- if (*p == '{') nest++;
- if (*p == '}') nest--;
- if (*p == '\\' && escape) {
- if (++p == rbrace) break;
- }
- Inc(p, pend, enc);
- }
- memcpy(buf+shift, t, p-t);
- strlcpy(buf+shift+(p-t), rbrace+1, len-(shift+(p-t)));
- status = ruby_brace_expand(buf, flags, func, arg, enc, var);
- if (status) break;
- }
- GLOB_FREE(buf);
+ size_t len = strlen(s) + 1;
+ char *buf = GLOB_ALLOC_N(char, len);
+ long shift;
+
+ if (!buf) return -1;
+ memcpy(buf, s, lbrace-s);
+ shift = (lbrace-s);
+ p = lbrace;
+ while (p < rbrace) {
+ const char *t = ++p;
+ nest = 0;
+ while (p < rbrace && !(*p == ',' && nest == 0)) {
+ if (*p == '{') nest++;
+ if (*p == '}') nest--;
+ if (*p == '\\' && escape) {
+ if (++p == rbrace) break;
+ }
+ Inc(p, pend, enc);
+ }
+ memcpy(buf+shift, t, p-t);
+ strlcpy(buf+shift+(p-t), rbrace+1, len-(shift+(p-t)));
+ status = ruby_brace_expand(buf, flags, func, arg, enc, var);
+ if (status) break;
+ }
+ GLOB_FREE(buf);
}
else if (!lbrace && !rbrace) {
- status = glob_call_func(func, s, arg, enc);
+ status = glob_call_func(func, s, arg, enc);
}
RB_GC_GUARD(var);
@@ -3022,7 +2463,7 @@ ruby_brace_glob_with_enc(const char *str, int flags, ruby_glob_func *func, VALUE
flags &= ~GLOB_VERBOSE;
args.funcs.match = func;
- args.funcs.error = 0;
+ args.funcs.error = NULL;
args.value = arg;
args.flags = flags;
return ruby_brace_expand(str, flags, glob_brace, (VALUE)&args, enc, Qfalse);
@@ -3034,137 +2475,271 @@ ruby_brace_glob(const char *str, int flags, ruby_glob_func *func, VALUE arg)
return ruby_brace_glob_with_enc(str, flags, func, arg, rb_ascii8bit_encoding());
}
+struct push_glob_args {
+ struct glob_args glob;
+ int flags;
+ int fd;
+};
+
+static int
+push_caller(const char *path, VALUE val, void *enc)
+{
+ struct push_glob_args *arg = (struct push_glob_args *)val;
+
+ return ruby_glob0(path, arg->fd, arg->glob.base, arg->flags, &rb_glob_funcs,
+ (VALUE)&arg->glob, enc);
+}
+
static int
push_glob(VALUE ary, VALUE str, VALUE base, int flags)
{
- struct glob_args args;
- int fd;
+ struct push_glob_args args;
rb_encoding *enc = rb_enc_get(str);
#if defined _WIN32 || defined __APPLE__
str = rb_str_encode_ospath(str);
#endif
if (rb_enc_to_index(enc) == ENCINDEX_US_ASCII)
- enc = rb_filesystem_encoding();
+ enc = rb_filesystem_encoding();
if (rb_enc_to_index(enc) == ENCINDEX_US_ASCII)
- enc = rb_ascii8bit_encoding();
+ enc = rb_ascii8bit_encoding();
flags |= GLOB_VERBOSE;
- args.func = push_pattern;
- args.value = ary;
- args.enc = enc;
- args.base = 0;
- fd = AT_FDCWD;
+ args.glob.func = push_pattern;
+ args.glob.value = ary;
+ args.glob.enc = enc;
+ args.glob.base = 0;
+ args.flags = flags;
+ args.fd = AT_FDCWD;
if (!NIL_P(base)) {
- if (!RB_TYPE_P(base, T_STRING) || !rb_enc_check(str, base)) {
- struct dir_data *dirp = DATA_PTR(base);
- if (!dirp->dir) dir_closed();
+ if (!RB_TYPE_P(base, T_STRING) || !rb_enc_check(str, base)) {
+ struct dir_data *dirp = DATA_PTR(base);
+ if (!dirp->dir) dir_closed();
#ifdef HAVE_DIRFD
- if ((fd = dirfd(dirp->dir)) == -1)
- rb_sys_fail_path(dir_inspect(base));
+ if ((args.fd = dirfd(dirp->dir)) == -1)
+ rb_sys_fail_path(dir_inspect(base));
#endif
- base = dirp->path;
- }
- args.base = RSTRING_PTR(base);
+ base = dirp->path;
+ }
+ args.glob.base = RSTRING_PTR(base);
}
#if defined _WIN32 || defined __APPLE__
enc = rb_utf8_encoding();
#endif
- return ruby_glob0(RSTRING_PTR(str), fd, args.base, flags, &rb_glob_funcs,
- (VALUE)&args, enc);
+ return ruby_brace_expand(RSTRING_PTR(str), flags,
+ push_caller, (VALUE)&args, enc, str);
}
static VALUE
rb_push_glob(VALUE str, VALUE base, int flags) /* '\0' is delimiter */
{
+ long offset = 0;
VALUE ary;
- int status;
/* can contain null bytes as separators */
- if (!RB_TYPE_P(str, T_STRING)) {
- FilePathValue(str);
- }
- else if (!rb_str_to_cstr(str)) {
- rb_raise(rb_eArgError, "nul-separated glob pattern is deprecated");
+ if (!RB_TYPE_P((str), T_STRING)) {
+ FilePathValue(str);
}
else {
- rb_enc_check(str, rb_enc_from_encoding(rb_usascii_encoding()));
+ rb_check_safe_obj(str);
+ rb_enc_check(str, rb_enc_from_encoding(rb_usascii_encoding()));
}
ary = rb_ary_new();
- status = push_glob(ary, str, base, flags);
- if (status) GLOB_JUMP_TAG(status);
+ while (offset < RSTRING_LEN(str)) {
+ char *p, *pend;
+ int status;
+ p = RSTRING_PTR(str) + offset;
+ status = push_glob(ary, rb_enc_str_new(p, strlen(p), rb_enc_get(str)),
+ base, flags);
+ if (status) GLOB_JUMP_TAG(status);
+ if (offset >= RSTRING_LEN(str)) break;
+ p += strlen(p) + 1;
+ pend = RSTRING_PTR(str) + RSTRING_LEN(str);
+ while (p < pend && !*p)
+ p++;
+ offset = p - RSTRING_PTR(str);
+ }
return ary;
}
static VALUE
-dir_globs(VALUE args, VALUE base, int flags)
+dir_globs(long argc, const VALUE *argv, VALUE base, int flags)
{
VALUE ary = rb_ary_new();
long i;
- for (i = 0; i < RARRAY_LEN(args); ++i) {
- int status;
- VALUE str = RARRAY_AREF(args, i);
- FilePathValue(str);
- status = push_glob(ary, str, base, flags);
- if (status) GLOB_JUMP_TAG(status);
+ for (i = 0; i < argc; ++i) {
+ int status;
+ VALUE str = argv[i];
+ FilePathValue(str);
+ status = push_glob(ary, str, base, flags);
+ if (status) GLOB_JUMP_TAG(status);
}
- RB_GC_GUARD(args);
return ary;
}
-static VALUE
-dir_glob_option_base(VALUE base)
+static void
+dir_glob_options(VALUE opt, VALUE *base, int *flags)
{
- if (NIL_OR_UNDEF_P(base)) {
- return Qnil;
+ ID kw[2];
+ VALUE args[2];
+ kw[0] = rb_intern("base");
+ if (flags) kw[1] = rb_intern("flags");
+ rb_get_kwargs(opt, kw, 0, flags ? 2 : 1, args);
+ if (args[0] == Qundef || NIL_P(args[0])) {
+ *base = Qnil;
}
#if USE_OPENDIR_AT
- if (rb_typeddata_is_kind_of(base, &dir_data_type)) {
- return base;
+ else if (rb_typeddata_is_kind_of(args[0], &dir_data_type)) {
+ *base = args[0];
}
#endif
- FilePathValue(base);
- if (!RSTRING_LEN(base)) return Qnil;
- return base;
-}
-
-static int
-dir_glob_option_sort(VALUE sort)
-{
- return (rb_bool_expected(sort, "sort", TRUE) ? 0 : FNM_GLOB_NOSORT);
+ else {
+ FilePathValue(args[0]);
+ if (!RSTRING_LEN(args[0])) args[0] = Qnil;
+ *base = args[0];
+ }
+ if (flags && args[1] != Qundef) {
+ *flags = NUM2INT(args[1]);
+ }
}
+/*
+ * call-seq:
+ * Dir[ string [, string ...] [, base: path] ] -> array
+ *
+ * Equivalent to calling
+ * <code>Dir.glob([</code><i>string,...</i><code>], 0)</code>.
+ *
+ */
static VALUE
-dir_s_aref(rb_execution_context_t *ec, VALUE obj, VALUE args, VALUE base, VALUE sort)
+dir_s_aref(int argc, VALUE *argv, VALUE obj)
{
- const int flags = dir_glob_option_sort(sort);
- base = dir_glob_option_base(base);
- if (RARRAY_LEN(args) == 1) {
- return rb_push_glob(RARRAY_AREF(args, 0), base, flags);
+ VALUE opts, base;
+ argc = rb_scan_args(argc, argv, "*:", NULL, &opts);
+ dir_glob_options(opts, &base, NULL);
+ if (argc == 1) {
+ return rb_push_glob(argv[0], base, 0);
}
- return dir_globs(args, base, flags);
+ return dir_globs(argc, argv, base, 0);
}
+/*
+ * call-seq:
+ * Dir.glob( pattern, [flags], [base: path] ) -> array
+ * Dir.glob( pattern, [flags], [base: path] ) { |filename| block } -> nil
+ *
+ * Expands +pattern+, which is a pattern string or an Array of pattern
+ * strings, and returns an array containing the matching filenames.
+ * If a block is given, calls the block once for each matching filename,
+ * passing the filename as a parameter to the block.
+ *
+ * The optional +base+ keyword argument specifies the base directory for
+ * interpreting relative pathnames instead of the current working directory.
+ * As the results are not prefixed with the base directory name in this
+ * case, you will need to prepend the base directory name if you want real
+ * paths.
+ *
+ * Note that the pattern is not a regexp, it's closer to a shell glob.
+ * See File::fnmatch for the meaning of the +flags+ parameter.
+ * Case sensitivity depends on your system (File::FNM_CASEFOLD is ignored),
+ * as does the order in which the results are returned.
+ *
+ * <code>*</code>::
+ * Matches any file. Can be restricted by other values in the glob.
+ * Equivalent to <code>/ .* /x</code> in regexp.
+ *
+ * <code>*</code>:: Matches all files
+ * <code>c*</code>:: Matches all files beginning with <code>c</code>
+ * <code>*c</code>:: Matches all files ending with <code>c</code>
+ * <code>\*c\*</code>:: Match all files that have <code>c</code> in them
+ * (including at the beginning or end).
+ *
+ * Note, this will not match Unix-like hidden files (dotfiles). In order
+ * to include those in the match results, you must use the
+ * File::FNM_DOTMATCH flag or something like <code>"{*,.*}"</code>.
+ *
+ * <code>**</code>::
+ * Matches directories recursively.
+ *
+ * <code>?</code>::
+ * Matches any one character. Equivalent to <code>/.{1}/</code> in regexp.
+ *
+ * <code>[set]</code>::
+ * Matches any one character in +set+. Behaves exactly like character sets
+ * in Regexp, including set negation (<code>[^a-z]</code>).
+ *
+ * <code>{p,q}</code>::
+ * Matches either literal <code>p</code> or literal <code>q</code>.
+ * Equivalent to pattern alternation in regexp.
+ *
+ * Matching literals may be more than one character in length. More than
+ * two literals may be specified.
+ *
+ * <code> \\ </code>::
+ * Escapes the next metacharacter.
+ *
+ * Note that this means you cannot use backslash on windows as part of a
+ * glob, i.e. <code>Dir["c:\\foo*"]</code> will not work, use
+ * <code>Dir["c:/foo*"]</code> instead.
+ *
+ * Examples:
+ *
+ * Dir["config.?"] #=> ["config.h"]
+ * Dir.glob("config.?") #=> ["config.h"]
+ * Dir.glob("*.[a-z][a-z]") #=> ["main.rb"]
+ * Dir.glob("*.[^r]*") #=> ["config.h"]
+ * Dir.glob("*.{rb,h}") #=> ["main.rb", "config.h"]
+ * Dir.glob("*") #=> ["config.h", "main.rb"]
+ * Dir.glob("*", File::FNM_DOTMATCH) #=> [".", "..", "config.h", "main.rb"]
+ *
+ * rbfiles = File.join("**", "*.rb")
+ * Dir.glob(rbfiles) #=> ["main.rb",
+ * # "lib/song.rb",
+ * # "lib/song/karaoke.rb"]
+ *
+ * Dir.glob(rbfiles, base: "lib") #=> ["song.rb",
+ * # "song/karaoke.rb"]
+ *
+ * libdirs = File.join("**", "lib")
+ * Dir.glob(libdirs) #=> ["lib"]
+ *
+ * librbfiles = File.join("**", "lib", "**", "*.rb")
+ * Dir.glob(librbfiles) #=> ["lib/song.rb",
+ * # "lib/song/karaoke.rb"]
+ *
+ * librbfiles = File.join("**", "lib", "*.rb")
+ * Dir.glob(librbfiles) #=> ["lib/song.rb"]
+ */
static VALUE
-dir_s_glob(rb_execution_context_t *ec, VALUE obj, VALUE str, VALUE rflags, VALUE base, VALUE sort)
+dir_s_glob(int argc, VALUE *argv, VALUE obj)
{
- VALUE ary = rb_check_array_type(str);
- const int flags = (NUM2INT(rflags) | dir_glob_option_sort(sort)) & ~FNM_CASEFOLD;
- base = dir_glob_option_base(base);
+ VALUE str, rflags, ary, opts, base;
+ int flags;
+
+ argc = rb_scan_args(argc, argv, "11:", &str, &rflags, &opts);
+ if (argc == 2)
+ flags = NUM2INT(rflags);
+ else
+ flags = 0;
+ dir_glob_options(opts, &base, &flags);
+
+ ary = rb_check_array_type(str);
if (NIL_P(ary)) {
- ary = rb_push_glob(str, base, flags);
+ ary = rb_push_glob(str, base, flags);
}
else {
- ary = dir_globs(ary, base, flags);
+ VALUE v = ary;
+ ary = dir_globs(RARRAY_LEN(v), RARRAY_CONST_PTR(v), base, flags);
+ RB_GC_GUARD(v);
}
if (rb_block_given_p()) {
- rb_ary_each(ary);
- return Qnil;
+ rb_ary_each(ary);
+ return Qnil;
}
return ary;
}
@@ -3172,7 +2747,7 @@ dir_s_glob(rb_execution_context_t *ec, VALUE obj, VALUE str, VALUE rflags, VALUE
static VALUE
dir_open_dir(int argc, VALUE *argv)
{
- VALUE dir = rb_funcallv_kw(rb_cDir, rb_intern("open"), argc, argv, RB_PASS_CALLED_KEYWORDS);
+ VALUE dir = rb_funcallv(rb_cDir, rb_intern("open"), argc, argv);
rb_check_typeddata(dir, &dir_data_type);
return dir;
@@ -3226,8 +2801,8 @@ dir_collect(VALUE dir)
* Dir.entries( dirname, encoding: enc ) -> array
*
* Returns an array containing all of the filenames in the given
- * directory. Will raise a SystemCallError if the named directory
- * doesn't exist.
+ * directory. Will raise a <code>SystemCallError</code> if the named
+ * directory doesn't exist.
*
* The optional <i>encoding</i> keyword argument specifies the encoding of the
* directory. If not specified, the filesystem encoding is used.
@@ -3282,44 +2857,6 @@ dir_s_each_child(int argc, VALUE *argv, VALUE io)
return Qnil;
}
-/*
- * call-seq:
- * dir.each_child {| filename | block } -> dir
- * dir.each_child -> an_enumerator
- *
- * Calls the block once for each entry except for "." and ".." in
- * this directory, passing the filename of each entry as a parameter
- * to the block.
- *
- * If no block is given, an enumerator is returned instead.
- *
- * d = Dir.new("testdir")
- * d.each_child {|x| puts "Got #{x}" }
- *
- * <em>produces:</em>
- *
- * Got config.h
- * Got main.rb
- *
- */
-static VALUE
-dir_each_child_m(VALUE dir)
-{
- RETURN_ENUMERATOR(dir, 0, 0);
- return dir_each_entry(dir, dir_yield, Qnil, TRUE);
-}
-
-/*
- * call-seq:
- * dir.children -> array
- *
- * Returns an array containing all of the filenames except for "."
- * and ".." in this directory.
- *
- * d = Dir.new("testdir")
- * d.children #=> ["config.h", "main.rb"]
- *
- */
static VALUE
dir_collect_children(VALUE dir)
{
@@ -3334,8 +2871,8 @@ dir_collect_children(VALUE dir)
* Dir.children( dirname, encoding: enc ) -> array
*
* Returns an array containing all of the filenames except for "."
- * and ".." in the given directory. Will raise a SystemCallError if
- * the named directory doesn't exist.
+ * and ".." in the given directory. Will raise a
+ * <code>SystemCallError</code> if the named directory doesn't exist.
*
* The optional <i>encoding</i> keyword argument specifies the encoding of the
* directory. If not specified, the filesystem encoding is used.
@@ -3361,24 +2898,116 @@ fnmatch_brace(const char *pattern, VALUE val, void *enc)
rb_encoding *enc_path = rb_enc_get(path);
if (enc_pattern != enc_path) {
- if (!rb_enc_asciicompat(enc_pattern))
- return FNM_NOMATCH;
- if (!rb_enc_asciicompat(enc_path))
- return FNM_NOMATCH;
- if (!rb_enc_str_asciionly_p(path)) {
- int cr = ENC_CODERANGE_7BIT;
- long len = strlen(pattern);
- if (rb_str_coderange_scan_restartable(pattern, pattern + len,
- enc_pattern, &cr) != len)
- return FNM_NOMATCH;
- if (cr != ENC_CODERANGE_7BIT)
- return FNM_NOMATCH;
- }
+ if (!rb_enc_asciicompat(enc_pattern))
+ return FNM_NOMATCH;
+ if (!rb_enc_asciicompat(enc_path))
+ return FNM_NOMATCH;
+ if (!rb_enc_str_asciionly_p(path)) {
+ int cr = ENC_CODERANGE_7BIT;
+ long len = strlen(pattern);
+ if (rb_str_coderange_scan_restartable(pattern, pattern + len,
+ enc_pattern, &cr) != len)
+ return FNM_NOMATCH;
+ if (cr != ENC_CODERANGE_7BIT)
+ return FNM_NOMATCH;
+ }
}
return (fnmatch(pattern, enc, RSTRING_PTR(path), arg->flags) == 0);
}
-/* :nodoc: */
+/*
+ * call-seq:
+ * File.fnmatch( pattern, path, [flags] ) -> (true or false)
+ * File.fnmatch?( pattern, path, [flags] ) -> (true or false)
+ *
+ * Returns true if +path+ matches against +pattern+. The pattern is not a
+ * regular expression; instead it follows rules similar to shell filename
+ * globbing. It may contain the following metacharacters:
+ *
+ * <code>*</code>::
+ * Matches any file. Can be restricted by other values in the glob.
+ * Equivalent to <code>/ .* /x</code> in regexp.
+ *
+ * <code>*</code>:: Matches all files regular files
+ * <code>c*</code>:: Matches all files beginning with <code>c</code>
+ * <code>*c</code>:: Matches all files ending with <code>c</code>
+ * <code>\*c*</code>:: Matches all files that have <code>c</code> in them
+ * (including at the beginning or end).
+ *
+ * To match hidden files (that start with a <code>.</code> set the
+ * File::FNM_DOTMATCH flag.
+ *
+ * <code>**</code>::
+ * Matches directories recursively or files expansively.
+ *
+ * <code>?</code>::
+ * Matches any one character. Equivalent to <code>/.{1}/</code> in regexp.
+ *
+ * <code>[set]</code>::
+ * Matches any one character in +set+. Behaves exactly like character sets
+ * in Regexp, including set negation (<code>[^a-z]</code>).
+ *
+ * <code> \ </code>::
+ * Escapes the next metacharacter.
+ *
+ * <code>{a,b}</code>::
+ * Matches pattern a and pattern b if File::FNM_EXTGLOB flag is enabled.
+ * Behaves like a Regexp union (<code>(?:a|b)</code>).
+ *
+ * +flags+ is a bitwise OR of the <code>FNM_XXX</code> constants. The same
+ * glob pattern and flags are used by Dir::glob.
+ *
+ * Examples:
+ *
+ * File.fnmatch('cat', 'cat') #=> true # match entire string
+ * File.fnmatch('cat', 'category') #=> false # only match partial string
+ *
+ * File.fnmatch('c{at,ub}s', 'cats') #=> false # { } isn't supported by default
+ * File.fnmatch('c{at,ub}s', 'cats', File::FNM_EXTGLOB) #=> true # { } is supported on FNM_EXTGLOB
+ *
+ * File.fnmatch('c?t', 'cat') #=> true # '?' match only 1 character
+ * File.fnmatch('c??t', 'cat') #=> false # ditto
+ * File.fnmatch('c*', 'cats') #=> true # '*' match 0 or more characters
+ * File.fnmatch('c*t', 'c/a/b/t') #=> true # ditto
+ * File.fnmatch('ca[a-z]', 'cat') #=> true # inclusive bracket expression
+ * File.fnmatch('ca[^t]', 'cat') #=> false # exclusive bracket expression ('^' or '!')
+ *
+ * File.fnmatch('cat', 'CAT') #=> false # case sensitive
+ * File.fnmatch('cat', 'CAT', File::FNM_CASEFOLD) #=> true # case insensitive
+ *
+ * File.fnmatch('?', '/', File::FNM_PATHNAME) #=> false # wildcard doesn't match '/' on FNM_PATHNAME
+ * File.fnmatch('*', '/', File::FNM_PATHNAME) #=> false # ditto
+ * File.fnmatch('[/]', '/', File::FNM_PATHNAME) #=> false # ditto
+ *
+ * File.fnmatch('\?', '?') #=> true # escaped wildcard becomes ordinary
+ * File.fnmatch('\a', 'a') #=> true # escaped ordinary remains ordinary
+ * File.fnmatch('\a', '\a', File::FNM_NOESCAPE) #=> true # FNM_NOESCAPE makes '\' ordinary
+ * File.fnmatch('[\?]', '?') #=> true # can escape inside bracket expression
+ *
+ * File.fnmatch('*', '.profile') #=> false # wildcard doesn't match leading
+ * File.fnmatch('*', '.profile', File::FNM_DOTMATCH) #=> true # period by default.
+ * File.fnmatch('.*', '.profile') #=> true
+ *
+ * rbfiles = '**' '/' '*.rb' # you don't have to do like this. just write in single string.
+ * File.fnmatch(rbfiles, 'main.rb') #=> false
+ * File.fnmatch(rbfiles, './main.rb') #=> false
+ * File.fnmatch(rbfiles, 'lib/song.rb') #=> true
+ * File.fnmatch('**.rb', 'main.rb') #=> true
+ * File.fnmatch('**.rb', './main.rb') #=> false
+ * File.fnmatch('**.rb', 'lib/song.rb') #=> true
+ * File.fnmatch('*', 'dave/.profile') #=> true
+ *
+ * pattern = '*' '/' '*'
+ * File.fnmatch(pattern, 'dave/.profile', File::FNM_PATHNAME) #=> false
+ * File.fnmatch(pattern, 'dave/.profile', File::FNM_PATHNAME | File::FNM_DOTMATCH) #=> true
+ *
+ * pattern = '**' '/' 'foo'
+ * File.fnmatch(pattern, 'a/b/c/foo', File::FNM_PATHNAME) #=> true
+ * File.fnmatch(pattern, '/a/b/c/foo', File::FNM_PATHNAME) #=> true
+ * File.fnmatch(pattern, 'c:/a/b/c/foo', File::FNM_PATHNAME) #=> true
+ * File.fnmatch(pattern, 'a/.b/c/foo', File::FNM_PATHNAME) #=> false
+ * File.fnmatch(pattern, 'a/.b/c/foo', File::FNM_PATHNAME | File::FNM_DOTMATCH) #=> true
+ */
static VALUE
file_s_fnmatch(int argc, VALUE *argv, VALUE obj)
{
@@ -3387,27 +3016,27 @@ file_s_fnmatch(int argc, VALUE *argv, VALUE obj)
int flags;
if (rb_scan_args(argc, argv, "21", &pattern, &path, &rflags) == 3)
- flags = NUM2INT(rflags);
+ flags = NUM2INT(rflags);
else
- flags = 0;
+ flags = 0;
StringValueCStr(pattern);
FilePathStringValue(path);
if (flags & FNM_EXTGLOB) {
- struct brace_args args;
+ struct brace_args args;
- args.value = path;
- args.flags = flags;
- if (ruby_brace_expand(RSTRING_PTR(pattern), flags, fnmatch_brace,
- (VALUE)&args, rb_enc_get(pattern), pattern) > 0)
- return Qtrue;
+ args.value = path;
+ args.flags = flags;
+ if (ruby_brace_expand(RSTRING_PTR(pattern), flags, fnmatch_brace,
+ (VALUE)&args, rb_enc_get(pattern), pattern) > 0)
+ return Qtrue;
}
else {
- rb_encoding *enc = rb_enc_compatible(pattern, path);
- if (!enc) return Qfalse;
- if (fnmatch(RSTRING_PTR(pattern), enc, RSTRING_PTR(path), flags) == 0)
- return Qtrue;
+ rb_encoding *enc = rb_enc_compatible(pattern, path);
+ if (!enc) return Qfalse;
+ if (fnmatch(RSTRING_PTR(pattern), enc, RSTRING_PTR(path), flags) == 0)
+ return Qtrue;
}
RB_GC_GUARD(pattern);
@@ -3431,12 +3060,12 @@ dir_s_home(int argc, VALUE *argv, VALUE obj)
rb_check_arity(argc, 0, 1);
user = (argc > 0) ? argv[0] : Qnil;
if (!NIL_P(user)) {
- SafeStringValue(user);
- rb_must_asciicompat(user);
- u = StringValueCStr(user);
- if (*u) {
- return rb_home_dir_of(user, rb_str_new(0, 0));
- }
+ SafeStringValue(user);
+ rb_must_asciicompat(user);
+ u = StringValueCStr(user);
+ if (*u) {
+ return rb_home_dir_of(user, rb_str_new(0, 0));
+ }
}
return rb_default_home_dir(rb_str_new(0, 0));
@@ -3457,6 +3086,19 @@ rb_file_directory_p(void)
}
#endif
+/*
+ * call-seq:
+ * Dir.exists?(file_name) -> true or false
+ *
+ * Deprecated method. Don't use.
+ */
+static VALUE
+rb_dir_exists_p(VALUE obj, VALUE fname)
+{
+ rb_warning("Dir.exists? is a deprecated name, use Dir.exist? instead");
+ return rb_file_directory_p(obj, fname);
+}
+
static void *
nogvl_dir_empty_p(void *ptr)
{
@@ -3466,24 +3108,24 @@ nogvl_dir_empty_p(void *ptr)
VALUE result = Qtrue;
if (!dir) {
- int e = errno;
- switch (gc_for_fd_with_gvl(e)) {
- default:
- dir = opendir(path);
- if (dir) break;
- e = errno;
- /* fall through */
- case 0:
- if (e == ENOTDIR) return (void *)Qfalse;
- errno = e; /* for rb_sys_fail_path */
- return (void *)Qundef;
- }
+ int e = errno;
+ switch (gc_for_fd_with_gvl(e)) {
+ default:
+ dir = opendir(path);
+ if (dir) break;
+ e = errno;
+ /* fall through */
+ case 0:
+ if (e == ENOTDIR) return (void *)Qfalse;
+ errno = e; /* for rb_sys_fail_path */
+ return (void *)Qundef;
+ }
}
while ((dp = READDIR(dir, NULL)) != NULL) {
- if (!to_be_skipped(dp)) {
- result = Qfalse;
- break;
- }
+ if (!to_be_skipped(dp)) {
+ result = Qfalse;
+ break;
+ }
}
closedir(dir);
return (void *)result;
@@ -3511,31 +3153,42 @@ rb_dir_s_empty_p(VALUE obj, VALUE dirname)
#if defined HAVE_GETATTRLIST && defined ATTR_DIR_ENTRYCOUNT
{
- u_int32_t attrbuf[SIZEUP32(fsobj_tag_t)];
- struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, ATTR_CMN_OBJTAG,};
- if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), 0) != 0)
- rb_sys_fail_path(orig);
- if (*(const fsobj_tag_t *)(attrbuf+1) == VT_HFS) {
- al.commonattr = 0;
- al.dirattr = ATTR_DIR_ENTRYCOUNT;
- if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), 0) == 0) {
- if (attrbuf[0] >= 2 * sizeof(u_int32_t))
- return RBOOL(attrbuf[1] == 0);
- if (false_on_notdir) return Qfalse;
- }
- rb_sys_fail_path(orig);
- }
+ u_int32_t attrbuf[SIZEUP32(fsobj_tag_t)];
+ struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, ATTR_CMN_OBJTAG,};
+ if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), 0) != 0)
+ rb_sys_fail_path(orig);
+ if (*(const fsobj_tag_t *)(attrbuf+1) == VT_HFS) {
+ al.commonattr = 0;
+ al.dirattr = ATTR_DIR_ENTRYCOUNT;
+ if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), 0) == 0) {
+ if (attrbuf[0] >= 2 * sizeof(u_int32_t))
+ return attrbuf[1] ? Qfalse : Qtrue;
+ if (false_on_notdir) return Qfalse;
+ }
+ rb_sys_fail_path(orig);
+ }
}
#endif
result = (VALUE)rb_thread_call_without_gvl(nogvl_dir_empty_p, (void *)path,
- RUBY_UBF_IO, 0);
- if (UNDEF_P(result)) {
- rb_sys_fail_path(orig);
+ RUBY_UBF_IO, 0);
+ if (result == Qundef) {
+ rb_sys_fail_path(orig);
}
return result;
}
+/*
+ * Objects of class <code>Dir</code> are directory streams representing
+ * directories in the underlying file system. They provide a variety of
+ * ways to list directories and their contents. See also
+ * <code>File</code>.
+ *
+ * The directory used in these examples contains the two regular files
+ * (<code>config.h</code> and <code>main.rb</code>), the parent
+ * directory (<code>..</code>), and the directory itself
+ * (<code>.</code>).
+ */
void
Init_Dir(void)
{
@@ -3544,29 +3197,26 @@ Init_Dir(void)
rb_include_module(rb_cDir, rb_mEnumerable);
rb_define_alloc_func(rb_cDir, dir_s_alloc);
- rb_define_singleton_method(rb_cDir,"for_fd", dir_s_for_fd, 1);
+ rb_define_singleton_method(rb_cDir, "open", dir_s_open, -1);
rb_define_singleton_method(rb_cDir, "foreach", dir_foreach, -1);
rb_define_singleton_method(rb_cDir, "entries", dir_entries, -1);
rb_define_singleton_method(rb_cDir, "each_child", dir_s_each_child, -1);
rb_define_singleton_method(rb_cDir, "children", dir_s_children, -1);
+ rb_define_method(rb_cDir,"initialize", dir_initialize, -1);
rb_define_method(rb_cDir,"fileno", dir_fileno, 0);
rb_define_method(rb_cDir,"path", dir_path, 0);
rb_define_method(rb_cDir,"to_path", dir_path, 0);
rb_define_method(rb_cDir,"inspect", dir_inspect, 0);
rb_define_method(rb_cDir,"read", dir_read, 0);
rb_define_method(rb_cDir,"each", dir_each, 0);
- rb_define_method(rb_cDir,"each_child", dir_each_child_m, 0);
- rb_define_method(rb_cDir,"children", dir_collect_children, 0);
rb_define_method(rb_cDir,"rewind", dir_rewind, 0);
rb_define_method(rb_cDir,"tell", dir_tell, 0);
rb_define_method(rb_cDir,"seek", dir_seek, 1);
rb_define_method(rb_cDir,"pos", dir_tell, 0);
rb_define_method(rb_cDir,"pos=", dir_set_pos, 1);
rb_define_method(rb_cDir,"close", dir_close, 0);
- rb_define_method(rb_cDir,"chdir", dir_chdir, 0);
- rb_define_singleton_method(rb_cDir,"fchdir", dir_s_fchdir, 1);
rb_define_singleton_method(rb_cDir,"chdir", dir_s_chdir, -1);
rb_define_singleton_method(rb_cDir,"getwd", dir_s_getwd, 0);
rb_define_singleton_method(rb_cDir,"pwd", dir_s_getwd, 0);
@@ -3577,7 +3227,10 @@ Init_Dir(void)
rb_define_singleton_method(rb_cDir,"unlink", dir_s_rmdir, 1);
rb_define_singleton_method(rb_cDir,"home", dir_s_home, -1);
+ rb_define_singleton_method(rb_cDir,"glob", dir_s_glob, -1);
+ rb_define_singleton_method(rb_cDir,"[]", dir_s_aref, -1);
rb_define_singleton_method(rb_cDir,"exist?", rb_file_directory_p, 1);
+ rb_define_singleton_method(rb_cDir,"exists?", rb_dir_exists_p, 1);
rb_define_singleton_method(rb_cDir,"empty?", rb_dir_s_empty_p, 1);
rb_define_singleton_method(rb_cFile,"fnmatch", file_s_fnmatch, -1);
@@ -3630,5 +3283,3 @@ Init_Dir(void)
*/
rb_file_const("FNM_SHORTNAME", INT2FIX(FNM_SHORTNAME));
}
-
-#include "dir.rbinc"
diff --git a/dir.rb b/dir.rb
deleted file mode 100644
index 2e426b0881..0000000000
--- a/dir.rb
+++ /dev/null
@@ -1,314 +0,0 @@
-# Objects of class Dir are directory streams representing
-# directories in the underlying file system. They provide a variety
-# of ways to list directories and their contents. See also File.
-#
-# The directory used in these examples contains the two regular files
-# (<code>config.h</code> and <code>main.rb</code>), the parent
-# directory (<code>..</code>), and the directory itself
-# (<code>.</code>).
-#
-# == What's Here
-#
-# First, what's elsewhere. \Class \Dir:
-#
-# - Inherits from {class Object}[rdoc-ref:Object@What-27s+Here].
-# - Includes {module Enumerable}[rdoc-ref:Enumerable@What-27s+Here],
-# which provides dozens of additional methods.
-#
-# Here, class \Dir provides methods that are useful for:
-#
-# - {Reading}[rdoc-ref:Dir@Reading]
-# - {Setting}[rdoc-ref:Dir@Setting]
-# - {Querying}[rdoc-ref:Dir@Querying]
-# - {Iterating}[rdoc-ref:Dir@Iterating]
-# - {Other}[rdoc-ref:Dir@Other]
-#
-# === Reading
-#
-# - #close: Closes the directory stream for +self+.
-# - #pos=: Sets the position in the directory stream for +self+.
-# - #read: Reads and returns the next entry in the directory stream for +self+.
-# - #rewind: Sets the position in the directory stream for +self+ to the first entry.
-# - #seek: Sets the position in the directory stream for +self+
-# the entry at the given offset.
-#
-# === Setting
-#
-# - ::chdir: Changes the working directory of the current process
-# to the given directory.
-# - ::chroot: Changes the file-system root for the current process
-# to the given directory.
-#
-# === Querying
-#
-# - ::[]: Same as ::glob without the ability to pass flags.
-# - ::children: Returns an array of names of the children
-# (both files and directories) of the given directory,
-# but not including <tt>.</tt> or <tt>..</tt>.
-# - ::empty?: Returns whether the given path is an empty directory.
-# - ::entries: Returns an array of names of the children
-# (both files and directories) of the given directory,
-# including <tt>.</tt> and <tt>..</tt>.
-# - ::exist?: Returns whether the given path is a directory.
-# - ::getwd (aliased as #pwd): Returns the path to the current working directory.
-# - ::glob: Returns an array of file paths matching the given pattern and flags.
-# - ::home: Returns the home directory path for a given user or the current user.
-# - #children: Returns an array of names of the children
-# (both files and directories) of +self+,
-# but not including <tt>.</tt> or <tt>..</tt>.
-# - #fileno: Returns the integer file descriptor for +self+.
-# - #path (aliased as #to_path): Returns the path used to create +self+.
-# - #tell (aliased as #pos): Returns the integer position
-# in the directory stream for +self+.
-#
-# === Iterating
-#
-# - ::each_child: Calls the given block with each entry in the given directory,
-# but not including <tt>.</tt> or <tt>..</tt>.
-# - ::foreach: Calls the given block with each entry in the given directory,
-# including <tt>.</tt> and <tt>..</tt>.
-# - #each: Calls the given block with each entry in +self+,
-# including <tt>.</tt> and <tt>..</tt>.
-# - #each_child: Calls the given block with each entry in +self+,
-# but not including <tt>.</tt> or <tt>..</tt>.
-#
-# === Other
-#
-# - ::mkdir: Creates a directory at the given path, with optional permissions.
-# - ::new: Returns a new \Dir for the given path, with optional encoding.
-# - ::open: Same as ::new, but if a block is given, yields the \Dir to the block,
-# closing it upon block exit.
-# - ::unlink (aliased as ::delete and ::rmdir): Removes the given directory.
-# - #inspect: Returns a string description of +self+.
-class Dir
- # call-seq:
- # Dir.open( string ) -> aDir
- # Dir.open( string, encoding: enc ) -> aDir
- # Dir.open( string ) {| aDir | block } -> anObject
- # Dir.open( string, encoding: enc ) {| aDir | block } -> anObject
- #
- # The optional <i>encoding</i> keyword argument specifies the encoding of the directory.
- # If not specified, the filesystem encoding is used.
- #
- # With no block, <code>open</code> is a synonym for Dir::new. If a
- # block is present, it is passed <i>aDir</i> as a parameter. The
- # directory is closed at the end of the block, and Dir::open returns
- # the value of the block.
- def self.open(name, encoding: nil, &block)
- dir = Primitive.dir_s_open(name, encoding)
- if block
- begin
- yield dir
- ensure
- Primitive.dir_s_close(dir)
- end
- else
- dir
- end
- end
-
- # call-seq:
- # Dir.new( string ) -> aDir
- # Dir.new( string, encoding: enc ) -> aDir
- #
- # Returns a new directory object for the named directory.
- #
- # The optional <i>encoding</i> keyword argument specifies the encoding of the directory.
- # If not specified, the filesystem encoding is used.
- def initialize(name, encoding: nil)
- Primitive.dir_initialize(name, encoding)
- end
-
- # call-seq:
- # Dir[ string [, string ...] [, base: path] [, sort: true] ] -> array
- #
- # Equivalent to calling
- # <code>Dir.glob([</code><i>string,...</i><code>], 0)</code>.
- def self.[](*args, base: nil, sort: true)
- Primitive.dir_s_aref(args, base, sort)
- end
-
- # call-seq:
- # Dir.glob( pattern, [flags], [base: path] [, sort: true] ) -> array
- # Dir.glob( pattern, [flags], [base: path] [, sort: true] ) { |filename| block } -> nil
- #
- # Expands +pattern+, which is a pattern string or an Array of pattern
- # strings, and returns an array containing the matching filenames.
- # If a block is given, calls the block once for each matching filename,
- # passing the filename as a parameter to the block.
- #
- # The optional +base+ keyword argument specifies the base directory for
- # interpreting relative pathnames instead of the current working directory.
- # As the results are not prefixed with the base directory name in this
- # case, you will need to prepend the base directory name if you want real
- # paths.
- #
- # The results which matched single wildcard or character set are sorted in
- # binary ascending order, unless +false+ is given as the optional +sort+
- # keyword argument. The order of an Array of pattern strings and braces
- # are preserved.
- #
- # Note that the pattern is not a regexp, it's closer to a shell glob.
- # See File::fnmatch for the meaning of the +flags+ parameter.
- # Case sensitivity depends on your system (+File::FNM_CASEFOLD+ is ignored).
- #
- # <code>*</code>::
- # Matches any file. Can be restricted by other values in the glob.
- # Equivalent to <code>/.*/mx</code> in regexp.
- #
- # <code>*</code>:: Matches all files
- # <code>c*</code>:: Matches all files beginning with <code>c</code>
- # <code>*c</code>:: Matches all files ending with <code>c</code>
- # <code>\*c\*</code>:: Match all files that have <code>c</code> in them
- # (including at the beginning or end).
- #
- # Note, this will not match Unix-like hidden files (dotfiles). In order
- # to include those in the match results, you must use the
- # File::FNM_DOTMATCH flag or something like <code>"{*,.*}"</code>.
- #
- # <code>**</code>::
- # Matches directories recursively if followed by <code>/</code>. If
- # this path segment contains any other characters, it is the same as the
- # usual <code>*</code>.
- #
- # <code>?</code>::
- # Matches any one character. Equivalent to <code>/.{1}/</code> in regexp.
- #
- # <code>[set]</code>::
- # Matches any one character in +set+. Behaves exactly like character sets
- # in Regexp, including set negation (<code>[^a-z]</code>).
- #
- # <code>{p,q}</code>::
- # Matches either literal <code>p</code> or literal <code>q</code>.
- # Equivalent to pattern alternation in regexp.
- #
- # Matching literals may be more than one character in length. More than
- # two literals may be specified.
- #
- # <code>\\</code>::
- # Escapes the next metacharacter.
- #
- # Note that this means you cannot use backslash on windows as part of a
- # glob, i.e. <code>Dir["c:\\foo*"]</code> will not work, use
- # <code>Dir["c:/foo*"]</code> instead.
- #
- # Examples:
- #
- # Dir["config.?"] #=> ["config.h"]
- # Dir.glob("config.?") #=> ["config.h"]
- # Dir.glob("*.[a-z][a-z]") #=> ["main.rb"]
- # Dir.glob("*.[^r]*") #=> ["config.h"]
- # Dir.glob("*.{rb,h}") #=> ["main.rb", "config.h"]
- # Dir.glob("*") #=> ["config.h", "main.rb"]
- # Dir.glob("*", File::FNM_DOTMATCH) #=> [".", "config.h", "main.rb"]
- # Dir.glob(["*.rb", "*.h"]) #=> ["main.rb", "config.h"]
- #
- # Dir.glob("**/*.rb") #=> ["main.rb",
- # # "lib/song.rb",
- # # "lib/song/karaoke.rb"]
- #
- # Dir.glob("**/*.rb", base: "lib") #=> ["song.rb",
- # # "song/karaoke.rb"]
- #
- # Dir.glob("**/lib") #=> ["lib"]
- #
- # Dir.glob("**/lib/**/*.rb") #=> ["lib/song.rb",
- # # "lib/song/karaoke.rb"]
- #
- # Dir.glob("**/lib/*.rb") #=> ["lib/song.rb"]
- def self.glob(pattern, _flags = 0, flags: _flags, base: nil, sort: true)
- Primitive.dir_s_glob(pattern, flags, base, sort)
- end
-end
-
-class << File
- # call-seq:
- # File.fnmatch( pattern, path, [flags] ) -> (true or false)
- # File.fnmatch?( pattern, path, [flags] ) -> (true or false)
- #
- # Returns true if +path+ matches against +pattern+. The pattern is not a
- # regular expression; instead it follows rules similar to shell filename
- # globbing. It may contain the following metacharacters:
- #
- # <code>*</code>::
- # Matches any file. Can be restricted by other values in the glob.
- # Equivalent to <code>/.*/x</code> in regexp.
- #
- # <code>*</code>:: Matches all regular files
- # <code>c*</code>:: Matches all files beginning with <code>c</code>
- # <code>*c</code>:: Matches all files ending with <code>c</code>
- # <code>\*c*</code>:: Matches all files that have <code>c</code> in them
- # (including at the beginning or end).
- #
- # To match hidden files (that start with a <code>.</code>) set the
- # File::FNM_DOTMATCH flag.
- #
- # <code>**</code>::
- # Matches directories recursively or files expansively.
- #
- # <code>?</code>::
- # Matches any one character. Equivalent to <code>/.{1}/</code> in regexp.
- #
- # <code>[set]</code>::
- # Matches any one character in +set+. Behaves exactly like character sets
- # in Regexp, including set negation (<code>[^a-z]</code>).
- #
- # <code>\\</code>::
- # Escapes the next metacharacter.
- #
- # <code>{a,b}</code>::
- # Matches pattern a and pattern b if File::FNM_EXTGLOB flag is enabled.
- # Behaves like a Regexp union (<code>(?:a|b)</code>).
- #
- # +flags+ is a bitwise OR of the <code>FNM_XXX</code> constants. The same
- # glob pattern and flags are used by Dir::glob.
- #
- # Examples:
- #
- # File.fnmatch('cat', 'cat') #=> true # match entire string
- # File.fnmatch('cat', 'category') #=> false # only match partial string
- #
- # File.fnmatch('c{at,ub}s', 'cats') #=> false # { } isn't supported by default
- # File.fnmatch('c{at,ub}s', 'cats', File::FNM_EXTGLOB) #=> true # { } is supported on FNM_EXTGLOB
- #
- # File.fnmatch('c?t', 'cat') #=> true # '?' match only 1 character
- # File.fnmatch('c??t', 'cat') #=> false # ditto
- # File.fnmatch('c*', 'cats') #=> true # '*' match 0 or more characters
- # File.fnmatch('c*t', 'c/a/b/t') #=> true # ditto
- # File.fnmatch('ca[a-z]', 'cat') #=> true # inclusive bracket expression
- # File.fnmatch('ca[^t]', 'cat') #=> false # exclusive bracket expression ('^' or '!')
- #
- # File.fnmatch('cat', 'CAT') #=> false # case sensitive
- # File.fnmatch('cat', 'CAT', File::FNM_CASEFOLD) #=> true # case insensitive
- # File.fnmatch('cat', 'CAT', File::FNM_SYSCASE) #=> true or false # depends on the system default
- #
- # File.fnmatch('?', '/', File::FNM_PATHNAME) #=> false # wildcard doesn't match '/' on FNM_PATHNAME
- # File.fnmatch('*', '/', File::FNM_PATHNAME) #=> false # ditto
- # File.fnmatch('[/]', '/', File::FNM_PATHNAME) #=> false # ditto
- #
- # File.fnmatch('\?', '?') #=> true # escaped wildcard becomes ordinary
- # File.fnmatch('\a', 'a') #=> true # escaped ordinary remains ordinary
- # File.fnmatch('\a', '\a', File::FNM_NOESCAPE) #=> true # FNM_NOESCAPE makes '\' ordinary
- # File.fnmatch('[\?]', '?') #=> true # can escape inside bracket expression
- #
- # File.fnmatch('*', '.profile') #=> false # wildcard doesn't match leading
- # File.fnmatch('*', '.profile', File::FNM_DOTMATCH) #=> true # period by default.
- # File.fnmatch('.*', '.profile') #=> true
- #
- # File.fnmatch('**/*.rb', 'main.rb') #=> false
- # File.fnmatch('**/*.rb', './main.rb') #=> false
- # File.fnmatch('**/*.rb', 'lib/song.rb') #=> true
- # File.fnmatch('**.rb', 'main.rb') #=> true
- # File.fnmatch('**.rb', './main.rb') #=> false
- # File.fnmatch('**.rb', 'lib/song.rb') #=> true
- # File.fnmatch('*', 'dave/.profile') #=> true
- #
- # File.fnmatch('**/foo', 'a/b/c/foo', File::FNM_PATHNAME) #=> true
- # File.fnmatch('**/foo', '/a/b/c/foo', File::FNM_PATHNAME) #=> true
- # File.fnmatch('**/foo', 'c:/a/b/c/foo', File::FNM_PATHNAME) #=> true
- # File.fnmatch('**/foo', 'a/.b/c/foo', File::FNM_PATHNAME) #=> false
- # File.fnmatch('**/foo', 'a/.b/c/foo', File::FNM_PATHNAME | File::FNM_DOTMATCH) #=> true
- def fnmatch(pattern, path, flags = 0)
- end
- alias fnmatch? fnmatch
-end if false
diff --git a/dln.c b/dln.c
index 77bfe91b28..55f29fda51 100644
--- a/dln.c
+++ b/dln.c
@@ -15,22 +15,22 @@
#define dln_memerror rb_memerror
#define dln_exit rb_exit
#define dln_loaderror rb_loaderror
-#define dln_fatalerror rb_fatal
#else
#define dln_notimplement --->>> dln not implemented <<<---
#define dln_memerror abort
#define dln_exit exit
static void dln_loaderror(const char *format, ...);
-#define dln_fatalerror dln_loaderror
#endif
#include "dln.h"
-#include "internal.h"
-#include "internal/compilers.h"
#ifdef HAVE_STDLIB_H
# include <stdlib.h>
#endif
+#ifdef USE_DLN_A_OUT
+char *dln_argv0;
+#endif
+
#if defined(HAVE_ALLOCA_H)
#include <alloca.h>
#endif
@@ -41,10 +41,6 @@ static void dln_loaderror(const char *format, ...);
# include <strings.h>
#endif
-#if defined __APPLE__
-# include <AvailabilityMacros.h>
-#endif
-
#ifndef xmalloc
void *xmalloc();
void *xcalloc();
@@ -62,7 +58,7 @@ void *xrealloc();
#include <sys/stat.h>
#ifndef S_ISDIR
-# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#ifdef HAVE_SYS_PARAM_H
@@ -76,6 +72,19 @@ void *xrealloc();
# include <unistd.h>
#endif
+#ifndef _WIN32
+char *getenv();
+#endif
+
+#ifdef __APPLE__
+# if defined(HAVE_DLOPEN)
+ /* Mac OS X with dlopen (10.3 or later) */
+# define MACOSX_DLOPEN
+# else
+# define MACOSX_DYLD
+# endif
+#endif
+
#ifndef dln_loaderror
static void
dln_loaderror(const char *format, ...)
@@ -88,12 +97,12 @@ dln_loaderror(const char *format, ...)
}
#endif
-#if defined(HAVE_DLOPEN) && !defined(_AIX) && !defined(_UNICOSMP)
+#if defined(HAVE_DLOPEN) && !defined(USE_DLN_A_OUT) && !defined(_AIX) && !defined(MACOSX_DYLD) && !defined(_UNICOSMP)
/* dynamic load with dlopen() */
# define USE_DLN_DLOPEN
#endif
-#if defined(__hp9000s300) || ((defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)) && !defined(__ELF__)) || defined(NeXT)
+#if defined(__hp9000s300) || ((defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)) && !defined(__ELF__)) || defined(NeXT) || defined(MACOSX_DYLD)
# define EXTERNAL_PREFIX "_"
#else
# define EXTERNAL_PREFIX ""
@@ -106,7 +115,6 @@ dln_loaderror(const char *format, ...)
#define isdirsep(x) ((x) == '/')
#endif
-#if defined(_WIN32) || defined(USE_DLN_DLOPEN)
static size_t
init_funcname_len(const char **file)
{
@@ -114,8 +122,8 @@ init_funcname_len(const char **file)
/* Load the file as an object one */
for (base = p; *p; p++) { /* Find position of last '/' */
- if (*p == '.' && !dot) dot = p;
- if (isdirsep(*p)) base = p+1, dot = NULL;
+ if (*p == '.' && !dot) dot = p;
+ if (isdirsep(*p)) base = p+1, dot = NULL;
}
*file = base;
/* Delete suffix if it exists */
@@ -130,19 +138,960 @@ static const char funcname_prefix[sizeof(FUNCNAME_PREFIX) - 1] = FUNCNAME_PREFIX
const size_t plen = sizeof(funcname_prefix);\
char *const tmp = ALLOCA_N(char, plen+flen+1);\
if (!tmp) {\
- dln_memerror();\
+ dln_memerror();\
}\
memcpy(tmp, funcname_prefix, plen);\
memcpy(tmp+plen, base, flen);\
tmp[plen+flen] = '\0';\
*(buf) = tmp;\
} while (0)
+
+#ifdef USE_DLN_A_OUT
+
+#ifndef LIBC_NAME
+# define LIBC_NAME "libc.a"
+#endif
+
+#ifndef DLN_DEFAULT_LIB_PATH
+# define DLN_DEFAULT_LIB_PATH "/lib:/usr/lib:/usr/local/lib:."
+#endif
+
+#include <errno.h>
+
+static int dln_errno;
+
+#define DLN_ENOEXEC ENOEXEC /* Exec format error */
+#define DLN_ECONFL 1201 /* Symbol name conflict */
+#define DLN_ENOINIT 1202 /* No initializer given */
+#define DLN_EUNDEF 1203 /* Undefine symbol remains */
+#define DLN_ENOTLIB 1204 /* Not a library file */
+#define DLN_EBADLIB 1205 /* Malformed library file */
+#define DLN_EINIT 1206 /* Not initialized */
+
+static int dln_init_p = 0;
+
+#include <ar.h>
+#include <a.out.h>
+#ifndef N_COMM
+# define N_COMM 0x12
+#endif
+#ifndef N_MAGIC
+# define N_MAGIC(x) (x).a_magic
+#endif
+
+#define INVALID_OBJECT(h) (N_MAGIC(h) != OMAGIC)
+
+#include "ruby/util.h"
+#include "ruby/st.h"
+
+static st_table *sym_tbl;
+static st_table *undef_tbl;
+
+static int load_lib();
+
+static int
+load_header(int fd, struct exec *hdrp, long disp)
+{
+ int size;
+
+ lseek(fd, disp, 0);
+ size = read(fd, hdrp, sizeof(struct exec));
+ if (size == -1) {
+ dln_errno = errno;
+ return -1;
+ }
+ if (size != sizeof(struct exec) || N_BADMAG(*hdrp)) {
+ dln_errno = DLN_ENOEXEC;
+ return -1;
+ }
+ return 0;
+}
+
+#if defined(sequent)
+#define RELOC_SYMBOL(r) ((r)->r_symbolnum)
+#define RELOC_MEMORY_SUB_P(r) ((r)->r_bsr)
+#define RELOC_PCREL_P(r) ((r)->r_pcrel || (r)->r_bsr)
+#define RELOC_TARGET_SIZE(r) ((r)->r_length)
+#endif
+
+/* Default macros */
+#ifndef RELOC_ADDRESS
+#define RELOC_ADDRESS(r) ((r)->r_address)
+#define RELOC_EXTERN_P(r) ((r)->r_extern)
+#define RELOC_SYMBOL(r) ((r)->r_symbolnum)
+#define RELOC_MEMORY_SUB_P(r) 0
+#define RELOC_PCREL_P(r) ((r)->r_pcrel)
+#define RELOC_TARGET_SIZE(r) ((r)->r_length)
+#endif
+
+#if defined(__sun) && defined(__sparc)
+/* Sparc (Sun 4) macros */
+# undef relocation_info
+# define relocation_info reloc_info_sparc
+# define R_RIGHTSHIFT(r) (reloc_r_rightshift[(r)->r_type])
+# define R_BITSIZE(r) (reloc_r_bitsize[(r)->r_type])
+# define R_LENGTH(r) (reloc_r_length[(r)->r_type])
+static int reloc_r_rightshift[] = {
+ 0, 0, 0, 0, 0, 0, 2, 2, 10, 0, 0, 0, 0, 0, 0,
+};
+static int reloc_r_bitsize[] = {
+ 8, 16, 32, 8, 16, 32, 30, 22, 22, 22, 13, 10, 32, 32, 16,
+};
+static int reloc_r_length[] = {
+ 0, 1, 2, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+};
+# define R_PCREL(r) \
+ ((r)->r_type >= RELOC_DISP8 && (r)->r_type <= RELOC_WDISP22)
+# define R_SYMBOL(r) ((r)->r_index)
+#endif
+
+#if defined(sequent)
+#define R_SYMBOL(r) ((r)->r_symbolnum)
+#define R_MEMORY_SUB(r) ((r)->r_bsr)
+#define R_PCREL(r) ((r)->r_pcrel || (r)->r_bsr)
+#define R_LENGTH(r) ((r)->r_length)
+#endif
+
+#ifndef R_SYMBOL
+# define R_SYMBOL(r) ((r)->r_symbolnum)
+# define R_MEMORY_SUB(r) 0
+# define R_PCREL(r) ((r)->r_pcrel)
+# define R_LENGTH(r) ((r)->r_length)
+#endif
+
+static struct relocation_info *
+load_reloc(int fd, struct exec *hdrp, long disp)
+{
+ struct relocation_info *reloc;
+ int size;
+
+ lseek(fd, disp + N_TXTOFF(*hdrp) + hdrp->a_text + hdrp->a_data, 0);
+ size = hdrp->a_trsize + hdrp->a_drsize;
+ reloc = (struct relocation_info*)xmalloc(size);
+ if (reloc == NULL) {
+ dln_errno = errno;
+ return NULL;
+ }
+
+ if (read(fd, reloc, size) != size) {
+ dln_errno = errno;
+ free(reloc);
+ return NULL;
+ }
+
+ return reloc;
+}
+
+static struct nlist *
+load_sym(int fd, struct exec *hdrp, long disp)
+{
+ struct nlist * buffer;
+ struct nlist * sym;
+ struct nlist * end;
+ long displ;
+ int size;
+
+ lseek(fd, N_SYMOFF(*hdrp) + hdrp->a_syms + disp, 0);
+ if (read(fd, &size, sizeof(int)) != sizeof(int)) {
+ goto err_noexec;
+ }
+
+ buffer = (struct nlist*)xmalloc(hdrp->a_syms + size);
+ if (buffer == NULL) {
+ dln_errno = errno;
+ return NULL;
+ }
+
+ lseek(fd, disp + N_SYMOFF(*hdrp), 0);
+ if (read(fd, buffer, hdrp->a_syms + size) != hdrp->a_syms + size) {
+ free(buffer);
+ goto err_noexec;
+ }
+
+ sym = buffer;
+ end = sym + hdrp->a_syms / sizeof(struct nlist);
+ displ = (long)buffer + (long)(hdrp->a_syms);
+
+ while (sym < end) {
+ sym->n_un.n_name = (char*)sym->n_un.n_strx + displ;
+ sym++;
+ }
+ return buffer;
+
+ err_noexec:
+ dln_errno = DLN_ENOEXEC;
+ return NULL;
+}
+
+static st_table *
+sym_hash(struct exec *hdrp, struct nlist *syms)
+{
+ st_table *tbl;
+ struct nlist *sym = syms;
+ struct nlist *end = syms + (hdrp->a_syms / sizeof(struct nlist));
+
+ tbl = st_init_strtable();
+ if (tbl == NULL) {
+ dln_errno = errno;
+ return NULL;
+ }
+
+ while (sym < end) {
+ st_insert(tbl, sym->n_un.n_name, sym);
+ sym++;
+ }
+ return tbl;
+}
+
+static int
+dln_init(const char *prog)
+{
+ char *file, fbuf[MAXPATHLEN];
+ int fd;
+ struct exec hdr;
+ struct nlist *syms;
+
+ if (dln_init_p == 1) return 0;
+
+ file = dln_find_exe_r(prog, NULL, fbuf, sizeof(fbuf));
+ if (file == NULL || (fd = open(file, O_RDONLY)) < 0) {
+ dln_errno = errno;
+ return -1;
+ }
+
+ if (load_header(fd, &hdr, 0) == -1) return -1;
+ syms = load_sym(fd, &hdr, 0);
+ if (syms == NULL) {
+ close(fd);
+ return -1;
+ }
+ sym_tbl = sym_hash(&hdr, syms);
+ if (sym_tbl == NULL) { /* file may be start with #! */
+ char c = '\0';
+ char buf[MAXPATHLEN];
+ char *p;
+
+ free(syms);
+ lseek(fd, 0L, 0);
+ if (read(fd, &c, 1) == -1) {
+ dln_errno = errno;
+ return -1;
+ }
+ if (c != '#') goto err_noexec;
+ if (read(fd, &c, 1) == -1) {
+ dln_errno = errno;
+ return -1;
+ }
+ if (c != '!') goto err_noexec;
+
+ p = buf;
+ /* skip forwarding spaces */
+ while (read(fd, &c, 1) == 1) {
+ if (c == '\n') goto err_noexec;
+ if (c != '\t' && c != ' ') {
+ *p++ = c;
+ break;
+ }
+ }
+ /* read in command name */
+ while (read(fd, p, 1) == 1) {
+ if (*p == '\n' || *p == '\t' || *p == ' ') break;
+ p++;
+ if (p-buf >= MAXPATHLEN) {
+ dln_errno = ENAMETOOLONG;
+ return -1;
+ }
+ }
+ *p = '\0';
+
+ return dln_init(buf);
+ }
+ dln_init_p = 1;
+ undef_tbl = st_init_strtable();
+ close(fd);
+ return 0;
+
+ err_noexec:
+ close(fd);
+ dln_errno = DLN_ENOEXEC;
+ return -1;
+}
+
+static long
+load_text_data(int fd, struct exec *hdrp, int bss, long disp)
+{
+ int size;
+ unsigned char* addr;
+
+ lseek(fd, disp + N_TXTOFF(*hdrp), 0);
+ size = hdrp->a_text + hdrp->a_data;
+
+ if (bss == -1) size += hdrp->a_bss;
+ else if (bss > 1) size += bss;
+
+ addr = (unsigned char*)xmalloc(size);
+ if (addr == NULL) {
+ dln_errno = errno;
+ return 0;
+ }
+
+ if (read(fd, addr, size) != size) {
+ dln_errno = errno;
+ free(addr);
+ return 0;
+ }
+
+ if (bss == -1) {
+ memset(addr + hdrp->a_text + hdrp->a_data, 0, hdrp->a_bss);
+ }
+ else if (bss > 0) {
+ memset(addr + hdrp->a_text + hdrp->a_data, 0, bss);
+ }
+
+ return (long)addr;
+}
+
+static int
+undef_print(char *key, char *value)
+{
+ fprintf(stderr, " %s\n", key);
+ return ST_CONTINUE;
+}
+
+static void
+dln_print_undef(void)
+{
+ fprintf(stderr, " Undefined symbols:\n");
+ st_foreach(undef_tbl, undef_print, NULL);
+}
+
+static void
+dln_undefined(void)
+{
+ if (undef_tbl->num_entries > 0) {
+ fprintf(stderr, "dln: Calling undefined function\n");
+ dln_print_undef();
+ dln_exit(1);
+ }
+}
+
+struct undef {
+ char *name;
+ struct relocation_info reloc;
+ long base;
+ char *addr;
+ union {
+ char c;
+ short s;
+ long l;
+ } u;
+};
+
+static st_table *reloc_tbl = NULL;
+static void
+link_undef(const char *name, long base, struct relocation_info *reloc)
+{
+ static int u_no = 0;
+ struct undef *obj;
+ char *addr = (char*)(reloc->r_address + base);
+
+ obj = (struct undef*)xmalloc(sizeof(struct undef));
+ obj->name = strdup(name);
+ obj->reloc = *reloc;
+ obj->base = base;
+ switch (R_LENGTH(reloc)) {
+ case 0: /* byte */
+ obj->u.c = *addr;
+ break;
+ case 1: /* word */
+ obj->u.s = *(short*)addr;
+ break;
+ case 2: /* long */
+ obj->u.l = *(long*)addr;
+ break;
+ }
+ if (reloc_tbl == NULL) {
+ reloc_tbl = st_init_numtable();
+ }
+ st_insert(reloc_tbl, u_no++, obj);
+}
+
+struct reloc_arg {
+ const char *name;
+ long value;
+};
+
+static int
+reloc_undef(int no, struct undef *undef, struct reloc_arg *arg)
+{
+ int datum;
+ char *address;
+#if defined(__sun) && defined(__sparc)
+ unsigned int mask = 0;
+#endif
+
+ if (strcmp(arg->name, undef->name) != 0) return ST_CONTINUE;
+ address = (char*)(undef->base + undef->reloc.r_address);
+ datum = arg->value;
+
+ if (R_PCREL(&(undef->reloc))) datum -= undef->base;
+#if defined(__sun) && defined(__sparc)
+ datum += undef->reloc.r_addend;
+ datum >>= R_RIGHTSHIFT(&(undef->reloc));
+ mask = (1 << R_BITSIZE(&(undef->reloc))) - 1;
+ mask |= mask -1;
+ datum &= mask;
+ switch (R_LENGTH(&(undef->reloc))) {
+ case 0:
+ *address = undef->u.c;
+ *address &= ~mask;
+ *address |= datum;
+ break;
+ case 1:
+ *(short *)address = undef->u.s;
+ *(short *)address &= ~mask;
+ *(short *)address |= datum;
+ break;
+ case 2:
+ *(long *)address = undef->u.l;
+ *(long *)address &= ~mask;
+ *(long *)address |= datum;
+ break;
+ }
+#else
+ switch (R_LENGTH(&(undef->reloc))) {
+ case 0: /* byte */
+ if (R_MEMORY_SUB(&(undef->reloc)))
+ *address = datum - *address;
+ else *address = undef->u.c + datum;
+ break;
+ case 1: /* word */
+ if (R_MEMORY_SUB(&(undef->reloc)))
+ *(short*)address = datum - *(short*)address;
+ else *(short*)address = undef->u.s + datum;
+ break;
+ case 2: /* long */
+ if (R_MEMORY_SUB(&(undef->reloc)))
+ *(long*)address = datum - *(long*)address;
+ else *(long*)address = undef->u.l + datum;
+ break;
+ }
#endif
+ free(undef->name);
+ free(undef);
+ return ST_DELETE;
+}
+
+static void
+unlink_undef(const char *name, long value)
+{
+ struct reloc_arg arg;
+
+ arg.name = name;
+ arg.value = value;
+ st_foreach(reloc_tbl, reloc_undef, &arg);
+}
+
+#ifdef N_INDR
+struct indr_data {
+ char *name0, *name1;
+};
+
+static int
+reloc_repl(int no, struct undef *undef, struct indr_data *data)
+{
+ if (strcmp(data->name0, undef->name) == 0) {
+ free(undef->name);
+ undef->name = strdup(data->name1);
+ }
+ return ST_CONTINUE;
+}
+#endif
+
+static int
+load_1(int fd, long disp, const char *need_init)
+{
+ static const char *libc = LIBC_NAME;
+ struct exec hdr;
+ struct relocation_info *reloc = NULL;
+ long block = 0;
+ long new_common = 0; /* Length of new common */
+ struct nlist *syms = NULL;
+ struct nlist *sym;
+ struct nlist *end;
+ int init_p = 0;
+
+ if (load_header(fd, &hdr, disp) == -1) return -1;
+ if (INVALID_OBJECT(hdr)) {
+ dln_errno = DLN_ENOEXEC;
+ return -1;
+ }
+ reloc = load_reloc(fd, &hdr, disp);
+ if (reloc == NULL) return -1;
+
+ syms = load_sym(fd, &hdr, disp);
+ if (syms == NULL) {
+ free(reloc);
+ return -1;
+ }
+
+ sym = syms;
+ end = syms + (hdr.a_syms / sizeof(struct nlist));
+ while (sym < end) {
+ struct nlist *old_sym;
+ int value = sym->n_value;
+
+#ifdef N_INDR
+ if (sym->n_type == (N_INDR | N_EXT)) {
+ char *key = sym->n_un.n_name;
+
+ if (st_lookup(sym_tbl, sym[1].n_un.n_name, &old_sym)) {
+ if (st_delete(undef_tbl, (st_data_t*)&key, NULL)) {
+ unlink_undef(key, old_sym->n_value);
+ free(key);
+ }
+ }
+ else {
+ struct indr_data data;
+
+ data.name0 = sym->n_un.n_name;
+ data.name1 = sym[1].n_un.n_name;
+ st_foreach(reloc_tbl, reloc_repl, &data);
+
+ st_insert(undef_tbl, strdup(sym[1].n_un.n_name), NULL);
+ if (st_delete(undef_tbl, (st_data_t*)&key, NULL)) {
+ free(key);
+ }
+ }
+ sym += 2;
+ continue;
+ }
+#endif
+ if (sym->n_type == (N_UNDF | N_EXT)) {
+ if (st_lookup(sym_tbl, sym->n_un.n_name, &old_sym) == 0) {
+ old_sym = NULL;
+ }
+
+ if (value) {
+ if (old_sym) {
+ sym->n_type = N_EXT | N_COMM;
+ sym->n_value = old_sym->n_value;
+ }
+ else {
+ int rnd =
+ value >= sizeof(double) ? sizeof(double) - 1
+ : value >= sizeof(long) ? sizeof(long) - 1
+ : sizeof(short) - 1;
+
+ sym->n_type = N_COMM;
+ new_common += rnd;
+ new_common &= ~(long)rnd;
+ sym->n_value = new_common;
+ new_common += value;
+ }
+ }
+ else {
+ if (old_sym) {
+ sym->n_type = N_EXT | N_COMM;
+ sym->n_value = old_sym->n_value;
+ }
+ else {
+ sym->n_value = (long)dln_undefined;
+ st_insert(undef_tbl, strdup(sym->n_un.n_name), NULL);
+ }
+ }
+ }
+ sym++;
+ }
+
+ block = load_text_data(fd, &hdr, hdr.a_bss + new_common, disp);
+ if (block == 0) goto err_exit;
+
+ sym = syms;
+ while (sym < end) {
+ struct nlist *new_sym;
+ char *key;
+
+ switch (sym->n_type) {
+ case N_COMM:
+ sym->n_value += hdr.a_text + hdr.a_data;
+ case N_TEXT|N_EXT:
+ case N_DATA|N_EXT:
+
+ sym->n_value += block;
+
+ if (st_lookup(sym_tbl, sym->n_un.n_name, &new_sym) != 0
+ && new_sym->n_value != (long)dln_undefined) {
+ dln_errno = DLN_ECONFL;
+ goto err_exit;
+ }
+
+ key = sym->n_un.n_name;
+ if (st_delete(undef_tbl, (st_data_t*)&key, NULL) != 0) {
+ unlink_undef(key, sym->n_value);
+ free(key);
+ }
+
+ new_sym = (struct nlist*)xmalloc(sizeof(struct nlist));
+ *new_sym = *sym;
+ new_sym->n_un.n_name = strdup(sym->n_un.n_name);
+ st_insert(sym_tbl, new_sym->n_un.n_name, new_sym);
+ break;
+
+ case N_TEXT:
+ case N_DATA:
+ sym->n_value += block;
+ break;
+ }
+ sym++;
+ }
+
+ /*
+ * First comes the text-relocation
+ */
+ {
+ struct relocation_info * rel = reloc;
+ struct relocation_info * rel_beg = reloc +
+ (hdr.a_trsize/sizeof(struct relocation_info));
+ struct relocation_info * rel_end = reloc +
+ (hdr.a_trsize+hdr.a_drsize)/sizeof(struct relocation_info);
+
+ while (rel < rel_end) {
+ char *address = (char*)(rel->r_address + block);
+ long datum = 0;
+#if defined(__sun) && defined(__sparc)
+ unsigned int mask = 0;
+#endif
+
+ if (rel >= rel_beg)
+ address += hdr.a_text;
+
+ if (rel->r_extern) { /* Look it up in symbol-table */
+ sym = &(syms[R_SYMBOL(rel)]);
+ switch (sym->n_type) {
+ case N_EXT|N_UNDF:
+ link_undef(sym->n_un.n_name, block, rel);
+ case N_EXT|N_COMM:
+ case N_COMM:
+ datum = sym->n_value;
+ break;
+ default:
+ goto err_exit;
+ }
+ } /* end.. look it up */
+ else { /* is static */
+ switch (R_SYMBOL(rel)) {
+ case N_TEXT:
+ case N_DATA:
+ datum = block;
+ break;
+ case N_BSS:
+ datum = block + new_common;
+ break;
+ case N_ABS:
+ break;
+ }
+ } /* end .. is static */
+ if (R_PCREL(rel)) datum -= block;
+
+#if defined(__sun) && defined(__sparc)
+ datum += rel->r_addend;
+ datum >>= R_RIGHTSHIFT(rel);
+ mask = (1 << R_BITSIZE(rel)) - 1;
+ mask |= mask -1;
+ datum &= mask;
+
+ switch (R_LENGTH(rel)) {
+ case 0:
+ *address &= ~mask;
+ *address |= datum;
+ break;
+ case 1:
+ *(short *)address &= ~mask;
+ *(short *)address |= datum;
+ break;
+ case 2:
+ *(long *)address &= ~mask;
+ *(long *)address |= datum;
+ break;
+ }
+#else
+ switch (R_LENGTH(rel)) {
+ case 0: /* byte */
+ if (datum < -128 || datum > 127) goto err_exit;
+ *address += datum;
+ break;
+ case 1: /* word */
+ *(short *)address += datum;
+ break;
+ case 2: /* long */
+ *(long *)address += datum;
+ break;
+ }
+#endif
+ rel++;
+ }
+ }
+
+ if (need_init) {
+ int len;
+ char **libs_to_be_linked = 0;
+ char *buf;
+
+ if (undef_tbl->num_entries > 0) {
+ if (load_lib(libc) == -1) goto err_exit;
+ }
+
+ init_funcname(&buf, need_init);
+ len = strlen(buf);
+
+ for (sym = syms; sym<end; sym++) {
+ char *name = sym->n_un.n_name;
+ if (name[0] == '_' && sym->n_value >= block) {
+ if (strcmp(name+1, "dln_libs_to_be_linked") == 0) {
+ libs_to_be_linked = (char**)sym->n_value;
+ }
+ else if (strcmp(name+1, buf) == 0) {
+ init_p = 1;
+ ((int (*)())sym->n_value)();
+ }
+ }
+ }
+ if (libs_to_be_linked && undef_tbl->num_entries > 0) {
+ while (*libs_to_be_linked) {
+ load_lib(*libs_to_be_linked);
+ libs_to_be_linked++;
+ }
+ }
+ }
+ free(reloc);
+ free(syms);
+ if (need_init) {
+ if (init_p == 0) {
+ dln_errno = DLN_ENOINIT;
+ return -1;
+ }
+ if (undef_tbl->num_entries > 0) {
+ if (load_lib(libc) == -1) goto err_exit;
+ if (undef_tbl->num_entries > 0) {
+ dln_errno = DLN_EUNDEF;
+ return -1;
+ }
+ }
+ }
+ return 0;
+
+ err_exit:
+ if (syms) free(syms);
+ if (reloc) free(reloc);
+ if (block) free((char*)block);
+ return -1;
+}
+
+static int target_offset;
+static int
+search_undef(const char *key, int value, st_table *lib_tbl)
+{
+ long offset;
+
+ if (st_lookup(lib_tbl, key, &offset) == 0) return ST_CONTINUE;
+ target_offset = offset;
+ return ST_STOP;
+}
+
+struct symdef {
+ int rb_str_index;
+ int lib_offset;
+};
+
+const char *dln_librrb_ary_path = DLN_DEFAULT_LIB_PATH;
+
+static int
+load_lib(const char *lib)
+{
+ char *path, *file, fbuf[MAXPATHLEN];
+ char *envpath = 0;
+ char armagic[SARMAG];
+ int fd, size;
+ struct ar_hdr ahdr;
+ st_table *lib_tbl = NULL;
+ int *data, nsym;
+ struct symdef *base;
+ char *name_base;
+
+ if (dln_init_p == 0) {
+ dln_errno = DLN_ENOINIT;
+ return -1;
+ }
+
+ if (undef_tbl->num_entries == 0) return 0;
+ dln_errno = DLN_EBADLIB;
+
+ if (lib[0] == '-' && lib[1] == 'l') {
+ long len = strlen(lib) + 4;
+ char *p = alloca(len);
+ snprintf(p, len, "lib%s.a", lib+2);
+ lib = p;
+ }
+
+ /* library search path: */
+ /* look for environment variable DLN_LIBRARY_PATH first. */
+ /* then variable dln_librrb_ary_path. */
+ /* if path is still NULL, use "." for path. */
+ path = getenv("DLN_LIBRARY_PATH");
+ if (path == NULL) path = dln_librrb_ary_path;
+ else path = envpath = strdup(path);
+
+ file = dln_find_file_r(lib, path, fbuf, sizeof(fbuf));
+ if (envpath) free(envpath);
+ fd = open(file, O_RDONLY);
+ if (fd == -1) goto syserr;
+ size = read(fd, armagic, SARMAG);
+ if (size == -1) goto syserr;
+
+ if (size != SARMAG) {
+ dln_errno = DLN_ENOTLIB;
+ goto badlib;
+ }
+ size = read(fd, &ahdr, sizeof(ahdr));
+ if (size == -1) goto syserr;
+ if (size != sizeof(ahdr) || sscanf(ahdr.ar_size, "%d", &size) != 1) {
+ goto badlib;
+ }
+
+ if (strncmp(ahdr.ar_name, "__.SYMDEF", 9) == 0) {
+ /* make hash table from __.SYMDEF */
+
+ lib_tbl = st_init_strtable();
+ data = (int*)xmalloc(size);
+ if (data == NULL) goto syserr;
+ size = read(fd, data, size);
+ nsym = *data / sizeof(struct symdef);
+ base = (struct symdef*)(data + 1);
+ name_base = (char*)(base + nsym) + sizeof(int);
+ while (nsym > 0) {
+ char *name = name_base + base->rb_str_index;
+
+ st_insert(lib_tbl, name, base->lib_offset + sizeof(ahdr));
+ nsym--;
+ base++;
+ }
+ for (;;) {
+ target_offset = -1;
+ st_foreach(undef_tbl, search_undef, lib_tbl);
+ if (target_offset == -1) break;
+ if (load_1(fd, target_offset, 0) == -1) {
+ st_free_table(lib_tbl);
+ free(data);
+ goto badlib;
+ }
+ if (undef_tbl->num_entries == 0) break;
+ }
+ free(data);
+ st_free_table(lib_tbl);
+ }
+ else {
+ /* linear library, need to scan (FUTURE) */
+
+ for (;;) {
+ int offset = SARMAG;
+ int found = 0;
+ struct exec hdr;
+ struct nlist *syms, *sym, *end;
+
+ while (undef_tbl->num_entries > 0) {
+ found = 0;
+ lseek(fd, offset, 0);
+ size = read(fd, &ahdr, sizeof(ahdr));
+ if (size == -1) goto syserr;
+ if (size == 0) break;
+ if (size != sizeof(ahdr)
+ || sscanf(ahdr.ar_size, "%d", &size) != 1) {
+ goto badlib;
+ }
+ offset += sizeof(ahdr);
+ if (load_header(fd, &hdr, offset) == -1)
+ goto badlib;
+ syms = load_sym(fd, &hdr, offset);
+ if (syms == NULL) goto badlib;
+ sym = syms;
+ end = syms + (hdr.a_syms / sizeof(struct nlist));
+ while (sym < end) {
+ if (sym->n_type == N_EXT|N_TEXT
+ && st_lookup(undef_tbl, sym->n_un.n_name, NULL)) {
+ break;
+ }
+ sym++;
+ }
+ if (sym < end) {
+ found++;
+ free(syms);
+ if (load_1(fd, offset, 0) == -1) {
+ goto badlib;
+ }
+ }
+ offset += size;
+ if (offset & 1) offset++;
+ }
+ if (found) break;
+ }
+ }
+ close(fd);
+ return 0;
+
+ syserr:
+ dln_errno = errno;
+ badlib:
+ if (fd >= 0) close(fd);
+ return -1;
+}
+
+static int
+load(const char *file)
+{
+ int fd;
+ int result;
+
+ if (dln_init_p == 0) {
+ if (dln_init(dln_argv0) == -1) return -1;
+ }
+ result = strlen(file);
+ if (file[result-1] == 'a') {
+ return load_lib(file);
+ }
+
+ fd = open(file, O_RDONLY);
+ if (fd == -1) {
+ dln_errno = errno;
+ return -1;
+ }
+ result = load_1(fd, 0, file);
+ close(fd);
+
+ return result;
+}
+
+void*
+dln_sym(const char *name)
+{
+ struct nlist *sym;
+
+ if (st_lookup(sym_tbl, name, &sym))
+ return (void*)sym->n_value;
+ return NULL;
+}
+
+#endif /* USE_DLN_A_OUT */
#ifdef USE_DLN_DLOPEN
# include <dlfcn.h>
#endif
+#ifdef __hpux
+#include <errno.h>
+#include "dl.h"
+#endif
+
#if defined(_AIX)
#include <ctype.h> /* for isdigit() */
#include <errno.h> /* for global errno */
@@ -158,6 +1107,10 @@ static const char funcname_prefix[sizeof(FUNCNAME_PREFIX) - 1] = FUNCNAME_PREFIX
#define NSLINKMODULE_OPTION_BINDNOW 1
#endif
#endif
+#else
+#ifdef MACOSX_DYLD
+#include <mach-o/dyld.h>
+#endif
#endif
#ifdef _WIN32
@@ -174,27 +1127,50 @@ dln_strerror(char *message, size_t size)
size_t len = snprintf(message, size, "%d: ", error);
#define format_message(sublang) FormatMessage(\
- FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, \
- NULL, error, MAKELANGID(LANG_NEUTRAL, (sublang)), \
- message + len, size - len, NULL)
+ FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, \
+ NULL, error, MAKELANGID(LANG_NEUTRAL, (sublang)), \
+ message + len, size - len, NULL)
if (format_message(SUBLANG_ENGLISH_US) == 0)
- format_message(SUBLANG_DEFAULT);
+ format_message(SUBLANG_DEFAULT);
for (p = message + len; *p; p++) {
- if (*p == '\n' || *p == '\r')
- *p = ' ';
+ if (*p == '\n' || *p == '\r')
+ *p = ' ';
}
return message;
}
#define dln_strerror() dln_strerror(message, sizeof message)
-#elif defined USE_DLN_DLOPEN
+#elif ! defined _AIX
static const char *
dln_strerror(void)
{
+#ifdef USE_DLN_A_OUT
+ char *strerror();
+
+ switch (dln_errno) {
+ case DLN_ECONFL:
+ return "Symbol name conflict";
+ case DLN_ENOINIT:
+ return "No initializer given";
+ case DLN_EUNDEF:
+ return "Unresolved symbols";
+ case DLN_ENOTLIB:
+ return "Not a library file";
+ case DLN_EBADLIB:
+ return "Malformed library file";
+ case DLN_EINIT:
+ return "Not initialized";
+ default:
+ return strerror(dln_errno);
+ }
+#endif
+
+#ifdef USE_DLN_DLOPEN
return (char*)dlerror();
+#endif
}
#endif
-#if defined(_AIX)
+#if defined(_AIX) && ! defined(_IA64)
static void
aix_loaderror(const char *pathname)
{
@@ -204,18 +1180,18 @@ aix_loaderror(const char *pathname)
snprintf(errbuf, sizeof(errbuf), "load failed - %s. ", pathname);
if (loadquery(L_GETMESSAGES, &message[0], sizeof(message)) != -1) {
- ERRBUF_APPEND("Please issue below command for detailed reasons:\n\t");
- ERRBUF_APPEND("/usr/sbin/execerror ruby ");
- for (i=0; message[i]; i++) {
- ERRBUF_APPEND("\"");
- ERRBUF_APPEND(message[i]);
- ERRBUF_APPEND("\" ");
- }
- ERRBUF_APPEND("\n");
+ ERRBUF_APPEND("Please issue below command for detailed reasons:\n\t");
+ ERRBUF_APPEND("/usr/sbin/execerror ruby ");
+ for (i=0; message[i]; i++) {
+ ERRBUF_APPEND("\"");
+ ERRBUF_APPEND(message[i]);
+ ERRBUF_APPEND("\" ");
+ }
+ ERRBUF_APPEND("\n");
}
else {
- ERRBUF_APPEND(strerror(errno));
- ERRBUF_APPEND("[loadquery failed]");
+ ERRBUF_APPEND(strerror(errno));
+ ERRBUF_APPEND("[loadquery failed]");
}
dln_loaderror("%s", errbuf);
}
@@ -233,22 +1209,22 @@ rb_w32_check_imported(HMODULE ext, HMODULE mine)
desc = ImageDirectoryEntryToData(ext, TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, &size);
if (!desc) return 0;
while (desc->Name) {
- PIMAGE_THUNK_DATA pint = (PIMAGE_THUNK_DATA)((char *)ext + desc->Characteristics);
- PIMAGE_THUNK_DATA piat = (PIMAGE_THUNK_DATA)((char *)ext + desc->FirstThunk);
- for (; piat->u1.Function; piat++, pint++) {
- static const char prefix[] = "rb_";
- PIMAGE_IMPORT_BY_NAME pii;
- const char *name;
-
- if (IMAGE_SNAP_BY_ORDINAL(pint->u1.Ordinal)) continue;
- pii = (PIMAGE_IMPORT_BY_NAME)((char *)ext + (size_t)pint->u1.AddressOfData);
- name = (const char *)pii->Name;
- if (strncmp(name, prefix, sizeof(prefix) - 1) == 0) {
- FARPROC addr = GetProcAddress(mine, name);
- if (addr) return (FARPROC)piat->u1.Function == addr;
- }
- }
- desc++;
+ PIMAGE_THUNK_DATA pint = (PIMAGE_THUNK_DATA)((char *)ext + desc->Characteristics);
+ PIMAGE_THUNK_DATA piat = (PIMAGE_THUNK_DATA)((char *)ext + desc->FirstThunk);
+ for (; piat->u1.Function; piat++, pint++) {
+ static const char prefix[] = "rb_";
+ PIMAGE_IMPORT_BY_NAME pii;
+ const char *name;
+
+ if (IMAGE_SNAP_BY_ORDINAL(pint->u1.Ordinal)) continue;
+ pii = (PIMAGE_IMPORT_BY_NAME)((char *)ext + (size_t)pint->u1.AddressOfData);
+ name = (const char *)pii->Name;
+ if (strncmp(name, prefix, sizeof(prefix) - 1) == 0) {
+ FARPROC addr = GetProcAddress(mine, name);
+ if (addr) return (FARPROC)piat->u1.Function == addr;
+ }
+ }
+ desc++;
}
return 1;
}
@@ -256,92 +1232,40 @@ rb_w32_check_imported(HMODULE ext, HMODULE mine)
#if defined(DLN_NEEDS_ALT_SEPARATOR) && DLN_NEEDS_ALT_SEPARATOR
#define translit_separator(src) do { \
- char *tmp = ALLOCA_N(char, strlen(src) + 1), *p = tmp, c; \
- do { \
- *p++ = ((c = *file++) == '/') ? DLN_NEEDS_ALT_SEPARATOR : c; \
- } while (c); \
- (src) = tmp; \
+ char *tmp = ALLOCA_N(char, strlen(src) + 1), *p = tmp, c; \
+ do { \
+ *p++ = ((c = *file++) == '/') ? DLN_NEEDS_ALT_SEPARATOR : c; \
+ } while (c); \
+ (src) = tmp; \
} while (0)
#else
#define translit_separator(str) (void)(str)
#endif
-#ifdef USE_DLN_DLOPEN
-# include "ruby/internal/stdbool.h"
-# include "internal/warnings.h"
-static bool
-dln_incompatible_func(void *handle, const char *funcname, void *const fp, const char **libname)
+void*
+dln_load(const char *file)
{
- Dl_info dli;
- void *ex = dlsym(handle, funcname);
- if (!ex) return false;
- if (ex == fp) return false;
- if (dladdr(ex, &dli)) {
- *libname = dli.dli_fname;
- }
- return true;
-}
-
-COMPILER_WARNING_PUSH
-#if defined(__clang__) || GCC_VERSION_SINCE(4, 2, 0)
-COMPILER_WARNING_IGNORED(-Wpedantic)
+#if (defined _WIN32 || defined USE_DLN_DLOPEN) && defined RUBY_EXPORT
+ static const char incompatible[] = "incompatible library version";
#endif
-static bool
-dln_incompatible_library_p(void *handle, const char **libname)
-{
-#define check_func(func) \
- if (dln_incompatible_func(handle, EXTERNAL_PREFIX #func, (void *)&func, libname)) \
- return true
- check_func(ruby_xmalloc);
- return false;
-}
-COMPILER_WARNING_POP
+#if !defined(_AIX) && !defined(NeXT)
+ const char *error = 0;
#endif
-#if !defined(MAC_OS_X_VERSION_MIN_REQUIRED)
-/* assume others than old Mac OS X have no problem */
-# define dln_disable_dlclose() false
-
-#elif !defined(MAC_OS_X_VERSION_10_11) || \
- (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11)
-/* targeting older versions only */
-# define dln_disable_dlclose() true
-
-#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
-/* targeting newer versions only */
-# define dln_disable_dlclose() false
-
-#else
-/* support both versions, and check at runtime */
-# include <sys/sysctl.h>
-
-static bool
-dln_disable_dlclose(void)
-{
- int mib[] = {CTL_KERN, KERN_OSREV};
- int32_t rev;
- size_t size = sizeof(rev);
- if (sysctl(mib, numberof(mib), &rev, &size, NULL, 0)) return true;
- if (rev < MAC_OS_X_VERSION_10_11) return true;
- return false;
-}
-#endif
-
-#if defined(_WIN32) || defined(USE_DLN_DLOPEN)
-static void *
-dln_open(const char *file)
-{
- static const char incompatible[] = "incompatible library version";
- const char *error = NULL;
- void *handle;
-
-#if defined(_WIN32)
+#if defined _WIN32
+ HINSTANCE handle;
+ WCHAR *winfile;
char message[1024];
+ void (*init_fct)();
+ char *buf;
+
+ /* Load the file as an object one */
+ init_funcname(&buf, file);
/* Convert the file path to wide char */
- WCHAR *winfile = rb_w32_mbstr_to_wstr(CP_UTF8, file, -1, NULL);
+ winfile = rb_w32_mbstr_to_wstr(CP_UTF8, file, -1, NULL);
if (!winfile) {
- dln_memerror();
+ dln_memerror();
}
/* Load file */
@@ -349,153 +1273,185 @@ dln_open(const char *file)
free(winfile);
if (!handle) {
- error = dln_strerror();
- goto failed;
+ error = dln_strerror();
+ goto failed;
}
-# if defined(RUBY_EXPORT)
+#if defined _WIN32 && defined RUBY_EXPORT
if (!rb_w32_check_imported(handle, rb_libruby_handle())) {
- FreeLibrary(handle);
- error = incompatible;
- goto failed;
+ FreeLibrary(handle);
+ error = incompatible;
+ goto failed;
}
-# endif
-
-#elif defined(USE_DLN_DLOPEN)
-
-# ifndef RTLD_LAZY
-# define RTLD_LAZY 1
-# endif
-# ifdef __INTERIX
-# undef RTLD_GLOBAL
-# endif
-# ifndef RTLD_GLOBAL
-# define RTLD_GLOBAL 0
-# endif
+#endif
- /* Load file */
- handle = dlopen(file, RTLD_LAZY|RTLD_GLOBAL);
- if (handle == NULL) {
- error = dln_strerror();
- goto failed;
+ if ((init_fct = (void(*)())GetProcAddress(handle, buf)) == NULL) {
+ dln_loaderror("%s - %s\n%s", dln_strerror(), buf, file);
}
-# if defined(RUBY_EXPORT)
- {
- const char *libruby_name = NULL;
- if (dln_incompatible_library_p(handle, &libruby_name)) {
- if (dln_disable_dlclose()) {
- /* dlclose() segfaults */
- if (libruby_name) {
- dln_fatalerror("linked to incompatible %s - %s", libruby_name, file);
- }
- dln_fatalerror("%s - %s", incompatible, file);
- }
- else {
- if (libruby_name) {
- const size_t len = strlen(libruby_name);
- char *const tmp = ALLOCA_N(char, len + 1);
- if (tmp) memcpy(tmp, libruby_name, len + 1);
- libruby_name = tmp;
- }
- dlclose(handle);
- if (libruby_name) {
- dln_loaderror("linked to incompatible %s - %s", libruby_name, file);
- }
- error = incompatible;
- goto failed;
- }
- }
+ /* Call the init code */
+ (*init_fct)();
+ return handle;
+#else
+#ifdef USE_DLN_A_OUT
+ if (load(file) == -1) {
+ error = dln_strerror();
+ goto failed;
}
-# endif
-#endif
+ return 0;
+#else
- return handle;
+ char *buf;
+ /* Load the file as an object one */
+ init_funcname(&buf, file);
+ translit_separator(file);
- failed:
- dln_loaderror("%s - %s", error, file);
-}
+#ifdef USE_DLN_DLOPEN
+#define DLN_DEFINED
+ {
+ void *handle;
+ void (*init_fct)();
-static void *
-dln_sym(void *handle, const char *symbol)
-{
- void *func;
- const char *error;
+#ifndef RTLD_LAZY
+# define RTLD_LAZY 1
+#endif
+#ifdef __INTERIX
+# undef RTLD_GLOBAL
+#endif
+#ifndef RTLD_GLOBAL
+# define RTLD_GLOBAL 0
+#endif
-#if defined(_WIN32)
- char message[1024];
+ /* Load file */
+ if ((handle = (void*)dlopen(file, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
+ error = dln_strerror();
+ goto failed;
+ }
+# if defined RUBY_EXPORT
+ {
+ void *ex = dlsym(handle, EXTERNAL_PREFIX"ruby_xmalloc");
+ if (ex && ex != ruby_xmalloc) {
+
+# if defined __APPLE__ && \
+ defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \
+ (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11)
+ /* dlclose() segfaults */
+ rb_fatal("%s - %s", incompatible, file);
+# else
+ dlclose(handle);
+ error = incompatible;
+ goto failed;
+# endif
+ }
+ }
+# endif
- func = GetProcAddress(handle, symbol);
- if (func == NULL) {
- error = dln_strerror();
- goto failed;
+ init_fct = (void(*)())(VALUE)dlsym(handle, buf);
+ if (init_fct == NULL) {
+ const size_t errlen = strlen(error = dln_strerror()) + 1;
+ error = memcpy(ALLOCA_N(char, errlen), error, errlen);
+ dlclose(handle);
+ goto failed;
+ }
+ /* Call the init code */
+ (*init_fct)();
+
+ return handle;
}
+#endif /* USE_DLN_DLOPEN */
-#elif defined(USE_DLN_DLOPEN)
- func = dlsym(handle, symbol);
- if (func == NULL) {
- const size_t errlen = strlen(error = dln_strerror()) + 1;
- error = memcpy(ALLOCA_N(char, errlen), error, errlen);
- goto failed;
+#ifdef __hpux
+#define DLN_DEFINED
+ {
+ shl_t lib = NULL;
+ int flags;
+ void (*init_fct)();
+
+ flags = BIND_DEFERRED;
+ lib = shl_load(file, flags, 0);
+ if (lib == NULL) {
+ extern int errno;
+ dln_loaderror("%s - %s", strerror(errno), file);
+ }
+ shl_findsym(&lib, buf, TYPE_PROCEDURE, (void*)&init_fct);
+ if (init_fct == NULL) {
+ shl_findsym(&lib, buf, TYPE_UNDEFINED, (void*)&init_fct);
+ if (init_fct == NULL) {
+ errno = ENOSYM;
+ dln_loaderror("%s - %s", strerror(ENOSYM), file);
+ }
+ }
+ (*init_fct)();
+ return (void*)lib;
}
-#endif
+#endif /* hpux */
- return func;
+#if defined(_AIX) && ! defined(_IA64)
+#define DLN_DEFINED
+ {
+ void (*init_fct)();
+
+ init_fct = (void(*)())load((char*)file, 1, 0);
+ if (init_fct == NULL) {
+ aix_loaderror(file);
+ }
+ if (loadbind(0, (void*)dln_load, (void*)init_fct) == -1) {
+ aix_loaderror(file);
+ }
+ (*init_fct)();
+ return (void*)init_fct;
+ }
+#endif /* _AIX */
+
+#if defined(MACOSX_DYLD)
+#define DLN_DEFINED
+/*----------------------------------------------------
+ By SHIROYAMA Takayuki Psi@fortune.nest.or.jp
+
+ Special Thanks...
+ Yu tomoak-i@is.aist-nara.ac.jp,
+ Mi hisho@tasihara.nest.or.jp,
+ sunshine@sunshineco.com,
+ and... Miss ARAI Akino(^^;)
+ ----------------------------------------------------*/
+ {
+ int dyld_result;
+ NSObjectFileImage obj_file; /* handle, but not use it */
+ /* "file" is module file name .
+ "buf" is pointer to initial function name with "_" . */
- failed:
- dln_loaderror("%s - %s", error, symbol);
-}
-#endif
+ void (*init_fct)();
-#if defined(RUBY_DLN_CHECK_ABI) && defined(USE_DLN_DLOPEN)
-static bool
-abi_check_enabled_p(void)
-{
- const char *val = getenv("RUBY_ABI_CHECK");
- return val == NULL || !(val[0] == '0' && val[1] == '\0');
-}
-#endif
-void *
-dln_load(const char *file)
-{
-#if defined(_WIN32) || defined(USE_DLN_DLOPEN)
- void *handle = dln_open(file);
+ dyld_result = NSCreateObjectFileImageFromFile(file, &obj_file);
-#ifdef RUBY_DLN_CHECK_ABI
- unsigned long long (*abi_version_fct)(void) = (unsigned long long(*)(void))dln_sym(handle, "ruby_abi_version");
- unsigned long long binary_abi_version = (*abi_version_fct)();
- if (binary_abi_version != ruby_abi_version() && abi_check_enabled_p()) {
- dln_loaderror("incompatible ABI version of binary - %s", file);
- }
-#endif
+ if (dyld_result != NSObjectFileImageSuccess) {
+ dln_loaderror("Failed to load %.200s", file);
+ }
- char *init_fct_name;
- init_funcname(&init_fct_name, file);
- void (*init_fct)(void) = (void(*)(void))dln_sym(handle, init_fct_name);
+ NSLinkModule(obj_file, file, NSLINKMODULE_OPTION_BINDNOW);
- /* Call the init code */
- (*init_fct)();
-
- return handle;
+ /* lookup the initial function */
+ if (!NSIsSymbolNameDefined(buf)) {
+ dln_loaderror("Failed to lookup Init function %.200s",file);
+ }
+ init_fct = NSAddressOfSymbol(NSLookupAndBindSymbol(buf));
+ (*init_fct)();
-#elif defined(_AIX)
- {
- void (*init_fct)(void);
-
- init_fct = (void(*)(void))load((char*)file, 1, 0);
- if (init_fct == NULL) {
- aix_loaderror(file);
- }
- if (loadbind(0, (void*)dln_load, (void*)init_fct) == -1) {
- aix_loaderror(file);
- }
- (*init_fct)();
- return (void*)init_fct;
+ return (void*)init_fct;
}
-#else
+#endif
+
+#ifndef DLN_DEFINED
dln_notimplement();
#endif
+#endif /* USE_DLN_A_OUT */
+#endif
+#if !defined(_AIX) && !defined(NeXT)
+ failed:
+ dln_loaderror("%s - %s", error, file);
+#endif
+
return 0; /* dummy return */
}
diff --git a/dln.h b/dln.h
index 902f753450..d98b2607e2 100644
--- a/dln.h
+++ b/dln.h
@@ -1,5 +1,3 @@
-#ifndef DLN_H
-#define DLN_H
/**********************************************************************
dln.h -
@@ -11,7 +9,24 @@
**********************************************************************/
-#include "ruby/defines.h" /* for RUBY_SYMBOL_EXPORT_BEGIN */
+#ifndef DLN_H
+#define DLN_H
+
+#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
RUBY_SYMBOL_EXPORT_BEGIN
@@ -24,6 +39,11 @@ RUBY_SYMBOL_EXPORT_BEGIN
char *dln_find_exe_r(const char*,const char*,char*,size_t DLN_FIND_EXTRA_ARG_DECL);
char *dln_find_file_r(const char*,const char*,char*,size_t DLN_FIND_EXTRA_ARG_DECL);
+
+#ifdef USE_DLN_A_OUT
+extern char *dln_argv0;
+#endif
+
void *dln_load(const char*);
RUBY_SYMBOL_EXPORT_END
diff --git a/dln_find.c b/dln_find.c
index 5d380f5d39..b08612764e 100644
--- a/dln_find.c
+++ b/dln_find.c
@@ -23,6 +23,10 @@
# include <stdlib.h>
#endif
+#ifdef USE_DLN_A_OUT
+char *dln_argv0;
+#endif
+
#if defined(HAVE_ALLOCA_H)
#include <alloca.h>
#endif
@@ -53,26 +57,26 @@ char *getenv();
#endif
static char *dln_find_1(const char *fname, const char *path, char *buf, size_t size, int exe_flag
- DLN_FIND_EXTRA_ARG_DECL);
+ DLN_FIND_EXTRA_ARG_DECL);
char *
dln_find_exe_r(const char *fname, const char *path, char *buf, size_t size
- DLN_FIND_EXTRA_ARG_DECL)
+ DLN_FIND_EXTRA_ARG_DECL)
{
char *envpath = 0;
if (!path) {
- path = getenv(PATH_ENV);
- if (path) path = envpath = strdup(path);
+ path = getenv(PATH_ENV);
+ if (path) path = envpath = strdup(path);
}
if (!path) {
- path =
- "/usr/local/bin" PATH_SEP
- "/usr/ucb" PATH_SEP
- "/usr/bin" PATH_SEP
- "/bin" PATH_SEP
- ".";
+ path =
+ "/usr/local/bin" PATH_SEP
+ "/usr/ucb" PATH_SEP
+ "/usr/bin" PATH_SEP
+ "/bin" PATH_SEP
+ ".";
}
buf = dln_find_1(fname, path, buf, size, 1 DLN_FIND_EXTRA_ARG);
if (envpath) free(envpath);
@@ -81,7 +85,7 @@ dln_find_exe_r(const char *fname, const char *path, char *buf, size_t size
char *
dln_find_file_r(const char *fname, const char *path, char *buf, size_t size
- DLN_FIND_EXTRA_ARG_DECL)
+ DLN_FIND_EXTRA_ARG_DECL)
{
if (!path) path = ".";
return dln_find_1(fname, path, buf, size, 0 DLN_FIND_EXTRA_ARG);
@@ -89,8 +93,8 @@ dln_find_file_r(const char *fname, const char *path, char *buf, size_t size
static char *
dln_find_1(const char *fname, const char *path, char *fbuf, size_t size,
- int exe_flag /* non 0 if looking for executable. */
- DLN_FIND_EXTRA_ARG_DECL)
+ int exe_flag /* non 0 if looking for executable. */
+ DLN_FIND_EXTRA_ARG_DECL)
{
register const char *dp;
register const char *ep;
@@ -99,7 +103,7 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size,
size_t i, fnlen, fspace;
#ifdef DOSISH
static const char extension[][5] = {
- EXECUTABLE_EXTS,
+ EXECUTABLE_EXTS,
};
size_t j;
int is_abs = 0, has_path = 0;
@@ -110,21 +114,21 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size,
static const char pathname_too_long[] = "openpath: pathname too long (ignored)\n\
\tDirectory \"%.*s\"%s\n\tFile \"%.*s\"%s\n";
#define PATHNAME_TOO_LONG() dln_warning(dln_warning_arg pathname_too_long, \
- ((bp - fbuf) > 100 ? 100 : (int)(bp - fbuf)), fbuf, \
- ((bp - fbuf) > 100 ? "..." : ""), \
- (fnlen > 100 ? 100 : (int)fnlen), fname, \
- (fnlen > 100 ? "..." : ""))
+ ((bp - fbuf) > 100 ? 100 : (int)(bp - fbuf)), fbuf, \
+ ((bp - fbuf) > 100 ? "..." : ""), \
+ (fnlen > 100 ? 100 : (int)fnlen), fname, \
+ (fnlen > 100 ? "..." : ""))
#define RETURN_IF(expr) if (expr) return (char *)fname;
RETURN_IF(!fname);
fnlen = strlen(fname);
if (fnlen >= size) {
- dln_warning(dln_warning_arg
- "openpath: pathname too long (ignored)\n\tFile \"%.*s\"%s\n",
- (fnlen > 100 ? 100 : (int)fnlen), fname,
- (fnlen > 100 ? "..." : ""));
- return NULL;
+ dln_warning(dln_warning_arg
+ "openpath: pathname too long (ignored)\n\tFile \"%.*s\"%s\n",
+ (fnlen > 100 ? 100 : (int)fnlen), fname,
+ (fnlen > 100 ? "..." : ""));
+ return NULL;
}
#ifdef DOSISH
# ifndef CharNext
@@ -132,52 +136,52 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size,
# endif
# ifdef DOSISH_DRIVE_LETTER
if (((p[0] | 0x20) - 'a') < 26 && p[1] == ':') {
- p += 2;
- is_abs = 1;
+ p += 2;
+ is_abs = 1;
}
# endif
switch (*p) {
case '/': case '\\':
- is_abs = 1;
- p++;
+ is_abs = 1;
+ p++;
}
has_path = is_abs;
while (*p) {
- switch (*p) {
- case '/': case '\\':
- has_path = 1;
- ext = 0;
- p++;
- break;
- case '.':
- ext = p;
- p++;
- break;
- default:
- p = CharNext(p);
- }
+ switch (*p) {
+ case '/': case '\\':
+ has_path = 1;
+ ext = 0;
+ p++;
+ break;
+ case '.':
+ ext = p;
+ p++;
+ break;
+ default:
+ p = CharNext(p);
+ }
}
if (ext) {
- for (j = 0; STRCASECMP(ext, extension[j]); ) {
- if (++j == sizeof(extension) / sizeof(extension[0])) {
- ext = 0;
- break;
- }
- }
+ for (j = 0; STRCASECMP(ext, extension[j]); ) {
+ if (++j == sizeof(extension) / sizeof(extension[0])) {
+ ext = 0;
+ break;
+ }
+ }
}
ep = bp = 0;
if (!exe_flag) {
- RETURN_IF(is_abs);
+ RETURN_IF(is_abs);
}
else if (has_path) {
- RETURN_IF(ext);
- i = p - fname;
- if (i + 1 > size) goto toolong;
- fspace = size - i - 1;
- bp = fbuf;
- ep = p;
- memcpy(fbuf, fname, i + 1);
- goto needs_extension;
+ RETURN_IF(ext);
+ i = p - fname;
+ if (i + 1 > size) goto toolong;
+ fspace = size - i - 1;
+ bp = fbuf;
+ ep = p;
+ memcpy(fbuf, fname, i + 1);
+ goto needs_extension;
}
p = fname;
#endif
@@ -189,104 +193,98 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size,
#undef RETURN_IF
for (dp = path;; dp = ++ep) {
- register size_t l;
-
- /* extract a component */
- ep = strchr(dp, PATH_SEP[0]);
- if (ep == NULL)
- ep = dp+strlen(dp);
-
- /* find the length of that component */
- l = ep - dp;
- bp = fbuf;
- fspace = size - 2;
- if (l > 0) {
- /*
- ** If the length of the component is zero length,
- ** start from the current directory. If the
- ** component begins with "~", start from the
- ** user's $HOME environment variable. Otherwise
- ** take the path literally.
- */
-
- if (*dp == '~' && (l == 1 ||
+ register size_t l;
+
+ /* extract a component */
+ ep = strchr(dp, PATH_SEP[0]);
+ if (ep == NULL)
+ ep = dp+strlen(dp);
+
+ /* find the length of that component */
+ l = ep - dp;
+ bp = fbuf;
+ fspace = size - 2;
+ if (l > 0) {
+ /*
+ ** If the length of the component is zero length,
+ ** start from the current directory. If the
+ ** component begins with "~", start from the
+ ** user's $HOME environment variable. Otherwise
+ ** take the path literally.
+ */
+
+ if (*dp == '~' && (l == 1 ||
#if defined(DOSISH)
- dp[1] == '\\' ||
+ dp[1] == '\\' ||
#endif
- dp[1] == '/')) {
- const char *home;
-
- home = getenv("HOME");
- if (home != NULL) {
- i = strlen(home);
- if (fspace < i)
- goto toolong;
- fspace -= i;
- memcpy(bp, home, i);
- bp += i;
- }
- dp++;
- l--;
- }
- if (l > 0) {
- if (fspace < l)
- goto toolong;
- fspace -= l;
- memcpy(bp, dp, l);
- bp += l;
- }
-
- /* add a "/" between directory and filename */
- if (ep[-1] != '/')
- *bp++ = '/';
- }
-
- /* now append the file name */
- i = fnlen;
- if (fspace < i) {
- goto toolong;
- }
- fspace -= i;
- memcpy(bp, fname, i + 1);
+ dp[1] == '/')) {
+ char *home;
+
+ home = getenv("HOME");
+ if (home != NULL) {
+ i = strlen(home);
+ if (fspace < i)
+ goto toolong;
+ fspace -= i;
+ memcpy(bp, home, i);
+ bp += i;
+ }
+ dp++;
+ l--;
+ }
+ if (l > 0) {
+ if (fspace < l)
+ goto toolong;
+ fspace -= l;
+ memcpy(bp, dp, l);
+ bp += l;
+ }
+
+ /* add a "/" between directory and filename */
+ if (ep[-1] != '/')
+ *bp++ = '/';
+ }
+
+ /* now append the file name */
+ i = fnlen;
+ if (fspace < i) {
+ toolong:
+ PATHNAME_TOO_LONG();
+ goto next;
+ }
+ fspace -= i;
+ memcpy(bp, fname, i + 1);
#if defined(DOSISH)
- if (exe_flag && !ext) {
- goto needs_extension;
- }
+ if (exe_flag && !ext) {
+ needs_extension:
+ for (j = 0; j < sizeof(extension) / sizeof(extension[0]); j++) {
+ if (fspace < strlen(extension[j])) {
+ PATHNAME_TOO_LONG();
+ continue;
+ }
+ strlcpy(bp + i, extension[j], fspace);
+ if (stat(fbuf, &st) == 0)
+ return fbuf;
+ }
+ goto next;
+ }
#endif
#ifndef S_ISREG
# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif
- if (stat(fbuf, &st) == 0 && S_ISREG(st.st_mode)) {
- if (exe_flag == 0) return fbuf;
- /* looking for executable */
- if (eaccess(fbuf, X_OK) == 0) return fbuf;
- }
+ if (stat(fbuf, &st) == 0 && S_ISREG(st.st_mode)) {
+ if (exe_flag == 0) return fbuf;
+ /* looking for executable */
+ if (eaccess(fbuf, X_OK) == 0) return fbuf;
+ }
next:
- /* if not, and no other alternatives, life is bleak */
- if (*ep == '\0') {
- return NULL;
- }
- continue;
-
- toolong:
- PATHNAME_TOO_LONG();
- goto next;
+ /* if not, and no other alternatives, life is bleak */
+ if (*ep == '\0') {
+ return NULL;
+ }
-#if defined(DOSISH)
- needs_extension:
- for (j = 0; j < sizeof(extension) / sizeof(extension[0]); j++) {
- if (fspace < strlen(extension[j])) {
- PATHNAME_TOO_LONG();
- continue;
- }
- strlcpy(bp + i, extension[j], fspace);
- if (stat(fbuf, &st) == 0)
- return fbuf;
- }
- goto next;
-#endif
- /* otherwise try the next component in the search path */
+ /* otherwise try the next component in the search path */
}
}
diff --git a/dmydln.c b/dmydln.c
index d05cda0b8e..0fc0a5325e 100644
--- a/dmydln.c
+++ b/dmydln.c
@@ -6,5 +6,5 @@ dln_load(const char *file)
{
rb_loaderror("this executable file can't load extension libraries");
- UNREACHABLE_RETURN(NULL);
+ UNREACHABLE;
}
diff --git a/dmyenc.c b/dmyenc.c
index 75b8a2da43..7e006e826c 100644
--- a/dmyenc.c
+++ b/dmyenc.c
@@ -5,6 +5,6 @@ void
Init_enc(void)
{
if (require("enc/encdb.so") == 1) {
- require("enc/trans/transdb.so");
+ require("enc/trans/transdb.so");
}
}
diff --git a/doc/.document b/doc/.document
index 5ef2d99651..d739c9f6bc 100644
--- a/doc/.document
+++ b/doc/.document
@@ -1,8 +1,3 @@
-*.md
-*.rb
*.rdoc
-contributing
-NEWS
+NEWS-*
syntax
-optparse
-rdoc
diff --git a/doc/ChangeLog/ChangeLog-0.06_to_0.52 b/doc/ChangeLog-0.06_to_0.52
index 63826081b3..63826081b3 100644
--- a/doc/ChangeLog/ChangeLog-0.06_to_0.52
+++ b/doc/ChangeLog-0.06_to_0.52
diff --git a/doc/ChangeLog/ChangeLog-0.50_to_0.60 b/doc/ChangeLog-0.50_to_0.60
index 5f5b03ff40..5f5b03ff40 100644
--- a/doc/ChangeLog/ChangeLog-0.50_to_0.60
+++ b/doc/ChangeLog-0.50_to_0.60
diff --git a/doc/ChangeLog-0.60_to_1.1 b/doc/ChangeLog-0.60_to_1.1
new file mode 100644
index 0000000000..33b0326892
--- /dev/null
+++ b/doc/ChangeLog-0.60_to_1.1
@@ -0,0 +1,3955 @@
+Tue Aug 12 16:02:18 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c: option variables: $-0, $-p(readonly), $-v,
+ $-I(load_path), $-a(readonly), $-K, $-d, $-F, $-i, $-l.
+
+ * parse.y (yylex): ignore rd (ruby document) in the code.
+
+Mon Aug 11 12:37:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (Init_Regexp): $-K as alias to the $KCODE.
+
+ * io.c (Init_IO): new virtual variable $-i for the value of -i
+ option.
+
+ * enum.c (Init_Enumerable): include? as alias of member?
+
+Fri Aug 8 11:16:50 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_foreach): now the record separator can be specified.
+
+ * io.c (io_s_readlines): new method to read in whole file (or
+ command output) from path.
+
+ * ext/socket/socket.c (Init_socket): recvfrom did not work.
+
+ * ext/socket/socket.c (sock_send): forgot to check nil for false
+ value.
+
+Thu Aug 7 11:40:01 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (mod_constants): lists constants defiend in the
+ modules/classes.
+
+ * variable.c (rb_const_set): no longer warns about constant
+ overriding by subclasses.
+
+ * eval.c (mod_eval): does eval() on module's context. local
+ variables are shared with outer scope.
+
+ * object.c (Init_Object): remove private_attr/public_attr.
+
+Wed Aug 6 14:21:36 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (mod_attr): forgot to check nil for false value.
+
+Mon Aug 4 11:50:28 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (class_s_new): need not to specify names to create
+ classes (or modules) dynamically.
+
+ * variable.c (rb_class_path): scan class constants for anonymous
+ classes/modules to make up pathes.
+
+Wed Jul 30 08:45:12 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): stop to cache const value in nodes.
+
+Sat Jul 26 03:17:22 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * numeric.c (flo_to_s): wrong .0 at end.
+
+Sat Jul 26 00:36:36 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (error_print): always print exception type in the
+ toplevel exception handler.
+
+ * string.c (str_hash): wrong hash value.
+
+Thu Jul 24 11:05:51 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (uscore_get): proper error message for unset $_.
+
+Wed Jul 23 09:56:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * object.c (obj_methods): returns list of method names of the
+ specified object.
+
+ * class.c (mod_instance_methods): returns list of method names of
+ the class instnace.
+
+Fri Jul 11 22:38:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * object.c (class_superclass): returns class's superclass
+ itself. (1.1)
+
+ * object.c (obj_type): returns object's class itself. (1.1)
+
+ * class.c (mod_included_modules): list included modules.
+
+ * object.c (class_superclass): raises error for Object.
+
+Thu Jul 3 09:54:02 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (SETUP_ARGS): save source position, remove nd_line().
+
+ * eval.c (rb_call): replace modulo by bit-masking.
+
+ * eval.c (POP_SCOPE): force recycle scope object to reduce gc rate.
+
+ * gc.c (obj_free): aboid calling run_final() when no finalizer is set.
+
+ * eval.c (PUSH_VARS): do not allocate the dynamic scope's end-mark
+ object.
+
+Wed Jul 2 14:25:07 1997 KIMURA Koichi <kkimura@pure.cpdc.canon.co.jp>
+
+ * Native mswin32 support.
+
+Tue Jul 1 09:59:00 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970701
+
+ * parse.y (mrhs): allow rest-star(*) in right hand side.
+
+Tue Jun 24 19:04:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970624
+
+Sat Jun 20 22:22:51 1997 Michio "Karl" Jinbo <karl@marcer.nagaokaut.ac.jp>
+
+ * eval.c: freebsd 3.0 <sys/select.h> support.
+
+Fri Jun 20 01:24:45 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970620
+
+ * gc.c: eliminate uninitilalized field of Hash, Array etc., to
+ avoid dumping core.
+
+Thu Jun 19 01:29:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970619
+
+ * string.c (str_split_method): wrong limit.
+
+Sat Jun 14 01:54:16 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * class.c (rb_singleton_class): no singleton for special
+ constants (now raises exception).
+
+ * eval.c (ruby_init): cbase in TOPLEVEL_BINDING need to be
+ initialized.
+
+Sat Jun 14 01:01:16 1997 maeda shugo <shugo@po.aianet.ne.jp>
+
+ * array.c (sort_2): wrong comparison.
+
+Sat Jun 14 00:53:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * hash.c (hash_foreach): safe iteration.
+
+Fri Jun 13 14:04:56 1997 Michio "Karl" Jinbo <karl@marcer.nagaokaut.ac.jp>
+
+ * configure.in: -Bshareable option for netbsd.
+
+Fri Jun 13 01:16:22 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (pipe_open): call io_unbuffered() only for writable pipes.
+
+Thu Jun 12 01:14:15 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970612
+
+ * ext/socket/socket.c (sock_new): use io_unbuffered().
+
+ * ext/marshal/marshal.c (w_long): compact long format, which
+ supports 64 bit architectures (unless longs are >32 bit size).
+
+ * ext/marshal/marshal.c: allows recursive data for marshaling.
+
+ * parse.y (rb_intern): raise exception for non-internable string.
+
+ * ext/marshal/marshal.c (marshal_load): allows direct loading from
+ strings.
+
+ * ext/marshal/marshal.c (marshal_dump): allows direct dump to strings.
+
+ * ext/marshal/marshal.c (marshal_dump): interface changed.
+
+Wed Jun 11 18:26:00 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * gc.c (rb_newobj): remove needless memset().
+
+Mon Jun 9 13:03:43 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_eval): reduce condition checks from while/until loop.
+
+ * eval.c (rb_eval): wrong jump point for `next'.
+
+Fri Jun 6 11:47:39 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.c (ruby_set_argv): initialize dln_argv0 for dln_a_out.
+
+ * ext/socket/socket.c (open_unix): display path name for exceptions.
+
+ * ruby.c (proc_options): option -S did not work well.
+
+Fri May 30 02:14:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970530
+
+ * eval.c (eval): set $! properly if exception raised in eval().
+
+ * io.c (io_write): now handles non T_FILE object.
+
+ * io.c (io_defset): $< can be anything which has `write' method.
+
+Thu May 29 15:40:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (eval): $@ is always an array (not string).
+
+ * pack.c (pack_unpack): avoid corrupting memory for unexpected
+ input strings.
+
+Wed May 28 12:46:13 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970528
+
+ * process.c (rb_waitpid): do not block other threads.
+
+Tue May 27 12:02:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (ruby_init): split initialize and processing command line
+ options.
+
+ * ruby.c (ruby_options): ruby_init(0, 0, envp) dumps core.
+
+Tue May 20 18:59:45 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * variable.c (rb_ivar_set): invalid instance variable access for
+ built-in object raises TypeError.
+
+Fri May 16 17:32:21 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970516
+
+ * dir.c (push_globs): was freeing non heap pointer.
+
+ * gc.c: remove some duplicated prototypes.
+
+ * ext/kconv/kconv.c: fix prototypes.
+
+Fri May 9 11:38:59 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970509
+
+ * gc.c (obj_free): avoid free(NULL).
+
+ * eval.c (rb_check_safe_str): argument missing for TypeError().
+
+Thu May 8 01:14:28 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c (file_s_dirname): need to return "." for path without
+ slashes.
+
+Wed May 7 19:18:48 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * process.c (f_fork): child processe does not inherit parent's
+ itimer setting on linux. call setitimer() again in the child
+ process.
+
+Sat May 3 02:49:43 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/curses/curses.c: modified for portability and add to the
+ standard distribution.
+
+Wed Apr 30 00:34:00 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c (file_s_size): returns 0 for empty files (not FALSE).
+
+Fri Apr 25 02:17:50 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970425
+
+ * eval.c (f_load): free unused name-table.
+
+ * eval.c (f_load): copy local variable name-table.
+
+ * gc.c (obj_free): avoid free(NULL).
+
+ * eval.c (rb_eval): forgot to make link from the scope object to
+ NODE_SCOPE. It may crash the interpreter.
+
+Thu Apr 24 00:35:09 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * random.c (f_srand): save old seed anyway. srand() returns no
+ value on some systems.
+
+ * gc.c (obj_free): avoid double free of the local variable name
+ table.
+
+ * parse.y (top_local_setup): modify realloc to handle offset.
+
+Tue Apr 22 12:58:26 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970422
+
+Thu Apr 17 00:40:51 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * configure.in (rb_cv_bsdpgrp): proper check for BSD
+ setpgrp/setpgrp.
+
+Wed Apr 16 16:14:02 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (proc_call): proc called in other thread must be orphan.
+
+Tue Apr 15 10:46:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970415
+
+ * gc.c (obj_free): NODE_SCOPE marked from SCOPE object.
+
+ * gc.c (gc_mark): some nodes marked wrong.
+
+ * process.c (proc_getpgrp): wrong argument
+
+Fri Apr 14 18:32:42 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970414
+
+Fri Apr 12 01:20:12 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.h: String pointer changed to unsigned char.
+
+Fri Apr 11 10:27:29 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970411
+
+ * Makefile.in: create libruby.a before linking ruby.
+
+ * string.c (str_strip_bang): >0x80 characters for isspace().
+
+ * eval.c (proc_call): set safe-level temporally
+
+ * eval.c (proc_s_new): save safe-level in the proc context.
+
+ * eval.c (rb_eval): no class/module extension in safe mode.
+
+Thu Apr 10 02:10:41 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * gc.c (gc_mark): remove some pointer checks for speeding up.
+
+ * ruby.c (ruby_options): set $0 temporally for -r option.
+
+ * eval.c: built-in security feature.
+
+ * gc.c (gc_sweep): do not free nodes during compile.
+
+ * parse.y (yycompile): set flag when compiling.
+
+Wed Apr 9 10:19:02 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.c: forgot to include <ctype.h> for isspace().
+
+ * file.c: provide S_ISREG for some platforms.
+
+ * io.c (Init_IO): added some $< operations.
+
+ * lib/ping.rb: check host upness using TCP echo.
+
+Tue Apr 8 00:10:15 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * io.c (arg_read): bug with 0 length input.
+
+Mon Apr 7 11:36:16 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/fcntl/fcntl.c: module for fcntl constants.
+
+ * eval.c (rb_alias): bug when original was an alias.
+
+ * parse.y (primary): syntax to access singleton class.
+
+ * eval.c (mod_public_method): method's to specify visibitily of
+ the class methods. make_method_{public,private} removed.
+
+Fri Apr 4 21:43:57 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970404
+
+ * gc.c (obj_free): finalizer added for experiment.
+
+Thu Apr 3 02:12:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_schedule): make Fatal rise on main_thread on
+ deadlocks.
+
+ * eval.c (thread_join): raise ThreadError instead of Fatal, in
+ case of deadlock.
+
+ * regex.c (re_compile_fastmap): uninitialized local variable.
+
+ * parse.y (parse_regx): new option //[nes] to specify character
+ code for regexp literals. Last specified code option is valid.
+
+ * re.c (reg_s_new): additional 3rd argument to specify compiled
+ regexp's character code.
+
+ * re.c (reg_new_1): regexp character code can be specified for
+ each regexp object.
+
+Wed Apr 2 14:51:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_create): handle uncaught throw.
+
+ * eval.c (thread_create): halt on some deadlock conditions.
+
+ * regex.c (is_in_list): wrong result for non-mbc higher-byte
+ characters.
+
+ * regex.c (re_match): wrong skip for multi-byte characters.
+
+ * regex.c (re_compile_fastmap): wrong fastmap in non-mbc mode.
+
+ * hash.c (Init_Hash): hash compatible features added to ENV.
+
+Tue Apr 1 15:24:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (obj_extend): remove Object#extend as an iterator which
+ is in experimental state, since it unveils internal singleton
+ classes.
+
+Mon Mar 31 14:29:39 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970331
+
+Sun Mar 30 19:40:57 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * parse.y (terms): avoided win32 gcc's optimization bug.
+
+Sat Mar 29 11:21:58 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * struct.c (make_struct): St[val,..] creates new structure.
+
+Fri Mar 28 11:24:51 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (obj_make_private): new method make_method_{public,private}
+ to change visibility of singleton methods.
+
+ * regex.c (re_compile_pattern): enables numeric literal >= 0x80 in
+ the character class.
+
+ * regex.c (re_compile_pattern): enabled numeric literal >= 0x80,
+ in multibyte mode.
+
+ * regex.c (re_compile_fastmap): modified exantn and charset(_not)
+ to set fastmap for higher bytes properly.
+
+ * regex.c (is_in_list): now matches numeric literals.
+
+Thu Mar 27 13:34:20 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * pack.c (pack_unpack): extra null byte after unpacked string.
+
+Wed Mar 26 15:20:34 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * regex.c (re_compile_pattern): register numbers must be fit in a
+ byte (0 <= regnum <= 0xff).
+
+ * regex.c (re_compile_fastmap): forgot to set mbchar map for
+ charset_not if RE_MBCTYPE is on.
+
+ * regex.c (re_compile_pattern): set list bits for multi-byte
+ characters for \W, \S, \D in range expression.
+
+ * object.c (obj_is_kind_of): defined that nil itself is kind of
+ nil. TRUE is kind of TRUE, FALSE is kind of FALSE likewise.
+ This change makes `obj.kind_of?(eval(obj.type))' always true.
+
+Tue Mar 25 14:08:43 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * lib/English.rb: provides nicer English alias for the variables.
+
+ * parse.y (expr): alias $var1 $var2 makes alias of the global
+ variable.
+
+Mon Mar 24 18:23:20 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970324
+
+Thu Mar 20 22:04:59 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (mod_modfunc): forget to clear method cache.
+
+Wed Mar 19 17:06:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (program): set methods' default private/public status
+ correctly under eval().
+
+ * eval.c (eval): set the_class correctly while evaluating string.
+
+Tue Mar 18 12:23:53 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (eval): yield can be called from eval().
+
+ * version 1.0-970318
+
+ * parse.y (program): regexp in condition expression should do
+ matching operation with $_.
+
+ * re.c (reg_regsub): wrong substitution.
+
+Fri Mar 14 14:36:28 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * hash.c (hash_invert): returns value to key mapping of the
+ associative array.
+
+ * ext/socket/extconf.rb: set environment variable SOCKS_SERVER to
+ compile with libsocks.a.
+
+ * ext/socket/socket.c (socks_s_open): SOCKSsocket class to access
+ internet via SOCKS library.
+
+ * sprintf.c (f_sprintf): unsigned formats display leading double
+ dots for imaginary sequence of signed bit to the left.
+
+ * sprintf.c (f_sprintf): correct width and precision formatting
+ for big integers.
+
+ * parse.y (yylex): enables negative hex/octal numbers and `_' in
+ non-decimal numbers.
+
+ * sprintf.c (f_sprintf): %u added for unsigned decimal format.
+
+Thu Mar 13 10:24:27 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sprintf.c (f_sprintf): wrong output for bignums.
+
+ * array.c (ary_reverse_each): iterates in reverse order.
+
+ * pack.c (pack_unpack): L unpacked signed long.
+
+ * io.c (f_backquote): now returns an empty string for no output.
+
+Wed Mar 12 10:20:30 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/socks/socks.c: socket module with socks library.
+
+Mon Mar 10 20:44:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * re.c (reg_regsub): \& for substitution. \`, \', and \+ are
+ avaiable also.
+
+Thu Mar 6 01:47:03 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970306
+
+ * sample/rubydb.el (gud): ruby debugger emacs interface
+
+ * lib/debug.rb: ruby debugger
+
+ * parse.y (exprs): more accurate line number display.
+
+Wed Mar 5 21:31:46 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970305
+
+Tue Mar 4 12:28:32 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.c (proc_options): search through RUBYPATH and PATH for
+ option -S.
+
+Mon Mar 3 22:44:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_status): returns nil for exception terminated
+ threads.
+
+ * eval.c (thread_value): re-raise exceptions.
+
+Sat Mar 1 00:59:47 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_eval): restore $! value after rescue clause, to
+ re-raise exceptions correctly.
+
+Fri Feb 28 16:43:38 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970228
+
+Thu Feb 27 11:23:41 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_yield_0): redo raises exception
+
+ * eval.c (thread_schedule): bug in interrupt handling by rescue.
+
+Wed Feb 26 00:55:36 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (eval): forgot to restore dynamic local variable
+ bindings.
+
+Tue Feb 25 11:22:08 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/aix_ld.rb: AIX dynamic load support (not tested).
+
+ * eval.c (rb_eval): wrong return value for defined? super.
+
+ * error.c (exception): more error check.
+
+ * re.c (reg_regsub): wrong substitution when sub expanded to null
+ string.
+
+Fri Feb 21 13:01:47 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970221
+
+ * eval.c (f_require): volatile added. register variable was
+ recycled, so that GC did not mark that variable.
+
+ * object.c (Init_Object): forget to mark main object (was mostly
+ ok, but made trouble with early GC.)
+
+Thu Feb 20 11:50:50 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970220
+
+Thu Feb 20 11:25:50 1997 Yasuo OHBA <jammy@shljapan.co.jp>
+
+ * lib/date.rb: update
+
+Thu Feb 20 08:25:57 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (yylex): forgot tokfix() before rb_intern().
+
+ * lib/tk.rb (TkVariable): give up using trace_var.
+
+Wed Feb 19 00:24:35 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970219
+
+ * pack.c (pack_pack): packed by null for A specifier. must be
+ space filled.
+
+ * pack.c (pack_unpack): bug in skipping spaces
+
+ * gc.c (xmalloc): garbage collect for every 4 Meg. allocation.
+
+ * string.c (str_split_method): limit worked wrong way.
+
+ * io.c (io_gets_method): misunderstand 0xff in binary files when
+ $/ == nil.
+
+ * re.c (reg_regsub): re-implement.
+
+ * ext/socket/socket.c (thread_connect): remove O_NONBLOCK, which
+ is not defined on some platform like NeXT.
+
+Mon Feb 17 13:08:30 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970217
+
+ * object.c (mod_eqq): === extended for subclass check (to use case
+ as typecase).
+
+Sat Feb 15 02:07:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * regex.c (re_compile_pattern): wrong match backref at end of pattern.
+
+ * io.c (arg_read): now works beyond end of file.
+
+Thu Feb 13 16:21:24 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (expr): return/yield now accept normal argument format.
+
+ * parse.y (yylex): a star in `yield *x' must not be multiplication
+ operator.
+
+Wed Feb 12 15:06:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * time.c (time_plus): bug in simple addition.
+
+ * eval.c (thread_raise): raise exceptions from outside.
+
+ * eval.c (Init_Thread): Thread#alive? -- alias for Thread#status.
+
+Mon Feb 10 00:38:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.h (Data_Make_Struct): rename macros.
+
+Sun Feb 8 11:48:13 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * io.c (f_syscall): argument offset was wrong.
+
+Fri Feb 7 18:01:17 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970207
+
+ * eval.c: add volatiles to avoid variable crobbering by longjmp().
+
+ * eval.c (f_raise): 1st argument can be the GlobalExit object now.
+
+ * array.c (ary_unshift): no longer accept more than 2 args.
+
+ * eval.c (f_raise): bug if 2nd argument is the exception.
+
+Tue Feb 4 00:37:29 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970204
+
+ * eval.c (eval): check compile errors by nerrs.
+
+ * eval.c (rb_eval): check syntax error by nerrs, not by the return
+ value, which may be NULL.
+
+ * eval.c (compile): Do not clear errinfo.
+
+Mon Feb 3 10:13:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (obj_extend): move real inclusion to Module#extend_object
+ to allow redfinition.
+
+ * object.c (Init_Object): Kernel class is now Module. Object class
+ became the true root class.
+
+ * object.c (obj_inspect): remove useless buffer.
+
+ * hash.c (any_cmp): disable interrupts and context switching.
+
+ * st.c: remove ALLOW_INTS to disable interrupt during operations.
+
+Fri Jan 31 22:10:08 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * hash.c (hash_rehash): re-register all key-value.
+
+Thu Jan 30 02:14:49 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * io.c (io_reopen): re-implement according to clone() way.
+
+ * io.c (io_clone): copy IO object.
+
+ * struct.c (struct_eql): compare elements by eql?.
+
+ * io.c (io_mode_flags): detect "rb", "wb" etc.
+
+ * io.h (FMODE_BINMODE): added.
+
+ * ext/socket/socket.c (Init_socket): undef BasicSocket.new
+
+ * file.c (Init_File): File.new(path[,mode])
+
+ * io.c (Init_IO): IO.new(fd[,mode])
+
+ * eval.c (rb_method_boundp): forgot to enable priv argument.
+
+ * object.c (Init_Object): remove `=~' from Kernel class.
+
+ * ext/socket/socket.c (open_inet): initialize sockaddr before
+ calling bind(2).
+
+ * sample/ruby-mode.el (ruby-calculate-indent): skip comment lines
+
+Wed Jan 29 18:43:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (Init_Thread): DEFER_INTS during initializing threads.
+
+ * hash.c (Init_Hash): Hash#eql? checks for object identity.
+
+ * eval.c (thread_set_critical): wrong value assigned.
+
+Mon Jan 27 16:10:51 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * io.c (io_print): remove print_on().
+
+ * eval.c (f_missing): proper error message for undefined method
+ without argument
+
+Sat Jan 25 23:32:32 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_sub_s): false alert - sub() does not modify string.
+
+ * array.c (ary_times): negative multiplication detected
+
+ * string.c (str_times): negative multiplication detected
+
+Fri Jan 24 10:51:39 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * time.c (time_arg): month -> 0 == "jan" == "1" == "01", little bit
+ confusing but wanted to conform japanese style.
+
+ * version 1.0-970124
+
+Fri Jan 24 09:52:49 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * util.c (_fixpath): supports SJIS filenames on DJGPP.
+
+Thu Jan 23 16:52:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * README.EXT: update. partially translated into English.
+
+ * ext/extmk.rb.in: inherit $LDFLAGS to the final link.
+
+ * ext/socket/socket.c (Init_socket): add various constants.
+
+Mon Jan 23 11:40:59 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * eval.c (Init_Thread): allocate main_thread first to avoid crash.
+
+Thu Jan 23 02:09:26 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * gc.c (ObjectSpace): API modified. each_object method will do all
+ the iteration.
+
+ * eval.c (proc_call): wrong return from nested lambda.
+
+ * ext/GD/GD.c: debugged.
+
+Wed Jan 22 16:12:25 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970122
+
+ * gc.c (gc_mark): forgot to mark match->str.
+
+ * ext/GD/GD.c: GD interface module.
+
+ * eval.c (PUSH_BLOCK): wrong value pushed as the block level.
+
+Mon Jan 20 14:01:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_run): no context switch in the critical section.
+
+Mon Jan 20 09:40:59 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * utils.c: supports 8+3 filenames
+
+Sat Jan 18 01:23:03 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970118
+
+ * regex.c (PATFETCH): need cast to unsigned char.
+
+ * io.c (io_ctl): bug in case when arg is not a string.
+
+ * lib/tk.rb: forgot that Kernel#type returns the class name now.
+
+ * regex.c (re_search): "abc\n" =~ "^$" should not match.
+
+Fri Jan 17 12:31:37 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970117
+
+ * ruby.c (ruby_options): constant PLATFORM, which is in the {cpu}-{os}
+ form, defined.
+
+ * configure.in: platform information embedded in the interpreter.
+
+ * regex.c (re_search): /^$/ did not match to "" by wrong exit condition.
+
+ * lib/thread.rb: re-write Mutex/Queue based on Thread.critical.
+
+ * eval.c (thread_set_critical): remove Thread.exclusive, add
+ Thread.critical = TRUE/FALSE instead.
+
+ * re.c (reg_search): re-compile pattern if needed
+
+ * regex.c (PATFETCH): do translate at compile time
+
+Thu Jan 16 00:49:10 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * gc.c (gc_mark_frame): forgot to mark frame->cbase.
+
+ * regex.c (re_compile_pattern): /a$|b)/ causes error.
+
+ * regex.c (re_compile_pattern): /(^|b)/ causes error.
+
+ * version 1.0-970116
+
+ * re.c (Init_Regexp): set RE_CONTEXTUAL_INVALID_OPS flag.
+
+Tue Jan 14 02:09:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (proc_call): Proc#callをイテレータã¨ã—ã¦å‘¼ã‚“ã æ™‚ã«å¯¾å¿œ
+
+ * configure.in: nextstep対応?
+
+ * eval.c (rb_eval): a[b]=cã§ç„¡é§„ãªé…列を割り当ã¦ãªã„
+
+ * eval.c (f_send): イテレータã¨ã—ã¦å‘¼ã°ã‚ŒãŸã‚‰ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦ãƒ¡ã‚½ãƒƒ
+ ドを呼ã¶ï¼Ž
+
+ * string.c (str_new4): match共有用ã®ç”Ÿæˆé–¢æ•°
+
+ * re.c (reg_search): matchã®å®Ÿä½“(文字列)をマッãƒã‚’行ã£ãŸæ–‡å­—列ã¨
+ copy-on-writeã§å…±æœ‰
+
+ * string.c (str_hash): toupperã‚’ã‹ã‘ã‚‹æ¡ä»¶ãŒé•ã£ã¦ã„ãŸ
+
+ * array.c (sort_2): Fixnumã¨Stringを特別扱ã„ã—ã¦é«˜é€ŸåŒ–
+
+Mon Jan 13 11:03:53 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_create): threadãŒç”Ÿæˆã•れるã¾ã§å‰²è¾¼ã¿ã‚’設定ã—ãªã„
+
+ * eval.c (Init_Thread): 割込ã¿ã‚¿ã‚¤ãƒŸãƒ³ã‚°ã‚’100msecã«
+
+Sat Jan 11 00:17:05 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * regex.c (re_search): マッãƒã«å¤±æ•—ã™ã‚‹å ´åˆãŒã‚ã£ãŸ(本当ã«ç›´ã£ãŸã‹ï¼Ÿ)
+
+ * io.c (io_ioctl,io_fcntl): 第2引数をçœç•¥å¯èƒ½ã«
+
+ * io.c (io_ioctl,io_fcntl): 戻り値ãŒIOã ã£ãŸï¼Žæ•´æ•°(システムコール
+ ã®æˆ»ã‚Šå€¤)ã‚’è¿”ã™ã‚ˆã†ã«ã—ãŸï¼Ž
+
+ * io.c (io_ctl): å¼•æ•°ãŒæ•´æ•°ã®æ™‚ã«å¯¾å¿œ
+
+ * io.c (io_fcntl): file.cã‹ã‚‰ç§»å‹•
+
+Fri Jan 10 17:01:47 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-970110
+
+ * ext/socket/socket.c (thread_connect): open(connect(2))ã§ä»–ã®
+ threadをブロックã—ãªã„よã†ã«
+
+ * eval.c (thread_create): exitã§ãªã„ã¨ãã«exitã ã¨æ€ã„込む
+
+Mon Jan 6 17:42:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_sub_s): 文字列長より長ã„offsetã®æ¤œå‡º
+
+ * regex.c (re_search): 空ã«ãƒžãƒƒãƒã™ã‚‹ãƒ‘ターン後ã®$ã§å¤±æ•—
+
+Thu Jan 2 16:36:23 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c (file_reopen): Fileã®reopen(pathã¾ãŸã¯IOã§æŒ‡å®š).
+
+ * io.c (io_reopen): IOã®reopen(IOã§æŒ‡å®š) -- change classã¤ã
+
+Wed Jan 1 11:09:01 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * io.c (f_select): timeoutã§nilã‚’è¿”ã™
+
+Fri Dec 27 13:06:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c (file_s_open): サブクラスã§ã¯ãã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”
+ ã™ã‚ˆã†ã«ï¼Ž
+
+Fri Dec 27 08:58:27 1996 <ono@isl.nara.sharp.co.jp>
+
+ * numeric.c (flo_to_s): index()を使ã‚ãªã„.strstr()ã«ï¼Ž
+
+Thu Dec 26 01:34:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * lib/tk.rb: placeãŒä½¿ãˆã‚‹ã‚ˆã†ã«
+
+ * pack.c (endian): マクロDYNAMIC_ENDIANを指定ã™ã‚‹ã¨å®Ÿè¡Œæ™‚ã«endian
+ を判定ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * eval.c (thread_alloc): åˆæœŸåŒ–忘れã®ãƒ¡ãƒ³ãƒãŒã‚ã£ãŸï¼Ž
+
+Wed Dec 25 00:33:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 1.0-961225
+
+ * io.c (Init_IO): newを無効化
+
+ * lib/tkthcore.rb: tk_call "global $foo; set foo 5"ãªã©ã‚‚ã§ãるよã†ã«
+
+ * eval.c (thread_restore_context): $~, $_ã§ã‚¹ã‚¿ãƒƒã‚¯ã‚’壊ã—ã¦ã„ãŸ
+
+ * process.c (rb_waitpid): threadã«ä¸€å¿œå¯¾å¿œ
+
+Tue Dec 24 15:20:58 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.4-961224
+
+ * configure.in: charãŒunsignedã‹ã©ã†ã‹ã‚‚ãƒã‚§ãƒƒã‚¯
+
+ * regex.c (SIGN_EXTEND_CHAR): __CHAR_UNSIGNED__ã«ã‚‚対応
+
+ * pack.c (pack_unpack): 明示的ã«signed charを指定.
+
+Mon Dec 23 14:41:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.c (load_file): 標準入力ã‹ã‚‰ã®ã‚¹ã‚¯ãƒªãƒ—トã§ä¸€æ™‚ファイルを使ã‚
+ ãªã„よã†ã«
+
+ * object.c (f_integer): `0x', `0'ãªã©ã§baseを解釈ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+Fri Dec 20 01:44:39 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * Makefile.in (flock.o): flockã«å¯¾å¿œ
+
+Thu Dec 19 20:13:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.4-961219
+
+Wed Dec 18 00:06:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * glob.c (glob_filename): strrchrãŒãƒžã‚¯ãƒ­ã®å ´åˆã«å¯¾å¿œ
+
+ * configure.in: <sys/select.h>ã‚’ãƒã‚§ãƒƒã‚¯
+
+ * ext/kconv/kconv.c: 1.62ベースã«
+
+ * ext/kconv/kconv.c: Kconvモジュール
+
+ * string.c (str_substr): lenãŒå…ƒã®æ–‡å­—åˆ—ã‚ˆã‚Šé•·ã„æ™‚ã«å¯¾å¿œ
+
+ * parse.y (iterator): 「$bar do .. endã€ãªã©ã¯è¨±ã•ãªã„よã†ã«
+
+ * parse.y (iterator): FID(foo!,foo?)ã‚’doå½¢å¼ã®ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã«ã§ãる.
+
+ * missing/flock.c (flock): lockf()を使ã£ã¦ä»£æ›¿
+
+ * file.c (file_flock): flockを実装
+
+Tue Dec 17 12:13:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.4-961217
+
+Fri Dec 13 02:05:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * configure.in: RUBYLIBã®ã‚«ãƒ¬ãƒ³ãƒˆã‚’後回ã—(@mix/awk offline)
+
+ * dln.c: AIXã«å¯¾å¿œã—ãŸï¼Ÿ(@mix/awk offline)
+
+ * eval.c (thread_schedule): critical sectionã§ã‚‚明示的ãªã‚³ãƒ³ãƒ†ã‚­ã‚¹
+ トスイッãƒã¯èµ·ããªã„ã¨ã¾ãšã„
+
+ * re.c (reg_search): matchã«å¤±æ•—ã—ãŸæ™‚ã«$~ã‚’nilã«ï¼Ž
+
+ * re.c (reg_search): 毎回matchを生æˆã™ã‚‹ã‚ˆã†ã«
+
+Thu Dec 12 17:03:30 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * numeric.c (flo_to_s): 2.0.to_s -> 2.0ã«
+
+ * eval.c (thread_save_context): $_, $~ã‚’thread毎ã«ä¿å­˜
+
+ * eval.c (thread_kill): main threadã§ã¯exit(0)
+
+ * string.c (str_split_method): é–“é•ã£ãŸçµæžœã‚’è¿”ã—ã¦ã„ãŸ
+
+Thu Dec 12 15:32:48 1996 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * dir.c: CYGWIN32対応
+
+ * ext/socket/socket.c: CYGWIN32対応
+
+ * io.c: CYGWIN32対応
+
+Thu Dec 12 14:43:51 1996 Jun Kuroda <j_kuro@pluto.ai.kutech.ac.jp>
+
+ * lib/tk.rb: wish4.2も探索候補ã«å«ã‚ã‚‹
+
+ * config.guess: JCC対応
+
+Thu Dec 12 00:41:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.4-961212
+
+ * parse.y (parse_string): """..."""ã¯ã‚„ã¯ã‚Šç„¡ãã™ã“ã¨ã«ã—ãŸ
+
+ * parse.y (parse_regx): %r|...|ã§terminatorã‚’ \ ã§ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã§ãã‚‹
+ よã†ã«
+
+ * signal.c (posix_signal): sigactionを使ã†signal
+
+ * configure.in: posix signal/bsd signalã®æ¤œå‡º
+
+Wed Dec 11 17:47:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_schedule): critical sectionã§ã¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚¹ã‚¤ãƒƒ
+ ãƒãŒèµ·ããªã„よã†ã«
+
+ * lib/thread.rb: SharedMutexクラス
+
+ * lib/jcode.rb: String#scanを使ã†ã‚ˆã†ã«
+
+Tue Dec 10 12:21:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961210
+
+ * string.c (str_split_method): æ­£è¦è¡¨ç¾ã«()ã‚’å«ã‚€æ™‚ã«ãƒã‚°
+
+ * lib/jcode.rb: ã¡ã‚‡ã£ã¨ã¾ã—ã«ãªã£ãŸ
+
+ * string.c (tr_setup_table): ç½®æ›æ–‡å­—ãŒçŸ­ã™ãŽã‚‹(2文字)ã®ã¨ãã®ãƒã‚°
+
+Mon Dec 9 11:38:04 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_scan): 文字列ã®ãƒžãƒƒãƒã‚’行ã†ï¼Žã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦ã‚‚å‹•
+ 作ã™ã‚‹
+
+ * regex.c (re_copy_registers): allocatedãŒåˆæœŸåŒ–ã•れã¦ã„ãªã‹ã£ãŸ
+
+ * re.c (match_to_s): $~ã®æ–‡å­—列化
+
+ * re.c (match_to_a): $~ã‚’é…列化ã§ãるよã†ã«
+
+ * re.c (match_getter): レジスタãŒåˆæœŸåŒ–ã•れã¦ã„ãªã‹ã£ãŸ
+
+Thu Dec 5 11:06:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_split_method): マッãƒã—ãªã‹ã£ãŸæ‹¬å¼§ã¯ç©ºæ–‡å­—列を
+ pushã™ã‚‹ã¹ãã§ã¯ãªã„
+
+ * string.c (str_succ): アルファベットをå«ã¾ãªã„文字ã«å¯¾å¿œ
+
+Wed Dec 4 10:48:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961204
+
+ * io.c (io_binmode): DJGPPã§ã®binmode対応
+
+ * sprintf.c (f_sprintf): intã®ç¯„å›²ã®æ•°å€¤ã¯ç›´æŽ¥sprintfã§å¤‰æ›ã™ã‚‹
+
+ * sprintf.c (f_sprintf): "%02s"ã«é ¼ã‚‰ãªã„
+
+ * re.c (reg_search): indexã§SEGV
+
+Tue Dec 3 10:09:36 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961203
+
+ * ext/extmk.rb.in (install): INSTALL_DATAã‹ã‚‰INSTALLã«å¤‰æ›´
+
+ * dln.c: hpux対応
+
+ * string.c (str_aset_method): è² ã®å€¤ã‚’å«ã‚€ç¯„囲ã§ã‚‚例外を起ã“ã•ãªã„
+
+ * array.c (ary_replace): è² ã®å€¤ã‚’å«ã‚€ç¯„囲ã§ã‚‚例外を起ã“ã•ãªã„
+
+ * array.c (beg_len): beg==endã®æ™‚,長ã•0ã«
+
+Mon Dec 2 14:07:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * configure.in: HP shl対応
+
+ * string.c (str_upto): beg > endã®æ™‚ç„¡é™ãƒ«ãƒ¼ãƒ—ã«è½ã¡ã‚‹ã®ã‚’æ­¢ã‚ãŸ
+
+ * range.c (range_each): String#uptoãŒå†å®šç¾©ã•れãŸå ´åˆã«å¯¾å¿œ
+
+ * string.c (str_split_method): "ABC".split(/(B)/)ãŒèª¤å‹•作
+
+Sat Nov 30 01:43:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_eval): undefã§SEGV
+
+Fri Nov 29 12:17:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el (ruby-parse-region): %Q#..#ãªã©ã«å¯¾å¿œï¼Žã—ã‹
+ ã—ï¼ŒåŒºåˆ‡ã‚Šæ–‡å­—ãŒæ¼”ç®—å­ã§è¡Œæœ«ã«ã‚ã‚‹å ´åˆã«ã¯å¯¾å¿œã§ããªã‹ã£ãŸï¼Ž
+
+ * re.c (reg_raise): 例外ã§ã‚‚スラッシュをエスケープ
+
+ * re.c (reg_inspect): スラッシュをエスケープ
+
+ * parse.y (parse_string): `%[QqXxRr](.)..\1'ãªã‚‹æ–‡å­—列形å¼(テスト
+ 採用)
+
+ * parse.y (parse_qstring): '''...'''ã®å½¢å¼
+
+ * ext/dbm/dbm.c (Init_dbm): 述語key?,value?ã®è¿½åŠ 
+
+ * ext/dbm/dbm.c (Init_dbm): includes->include?
+
+ * hash.c (Init_Hash): 述語key?,value?,include?ã®è¿½åŠ 
+
+ * eval.c (rb_eval): unlessã§else節ãŒå®Ÿè¡Œã•れãªã„(ã†ãƒ¼ã‚“)
+
+ * string.c (str_sub_iter_s): イテレータブロック内ã§ãƒžãƒƒãƒãŒè¡Œã‚れ
+ ã‚‹ã¨ä½ç½®ãŒãšã‚Œã‚‹(時ã«ç„¡é™ãƒ«ãƒ¼ãƒ—ã«è½ã¡ã‚‹)
+
+ * string.c (str_resize): lenãŒ0ã®æ™‚sizeã®èª¿æ•´ãŒè¡Œã‚れãªã‹ã£ãŸ
+
+Thu Nov 28 00:59:54 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961128
+
+ * parse.y (parse_string): 3-quote styleã®æ–‡å­—列(例:"""abc"d"e""")
+
+ * configure.in (EXTSTATIC): extã‚’é™çš„ã«ãƒªãƒ³ã‚¯ã™ã‚‹æ™‚ã«ã¯rubyã¯dllã‚’
+ 使ã†ã‚ˆã†ã«
+
+ * io.c (Init_IO): getsã®å¼•æ•°ãŒé–“é•ã£ã¦ã„ãŸ
+
+ * string.c (str_each_line): RSã‚’æ˜Žç¤ºçš„ã«æŒ‡å®šã§ãるよã†ã«
+
+Wed Nov 27 12:37:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961127
+
+ * eval.c (rb_eval): iver defined? ã§selfを指定ã™ã‚‹ã®ã‚’忘れãŸ
+
+ * io.c: getsç­‰ã§RSã‚’æ˜Žç¤ºçš„ã«æŒ‡å®šã§ãるよã†ã«
+
+ * ext/extmk.rb.in (install): static linkã«å¤±æ•—
+
+Tue Nov 26 10:33:04 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961126
+
+ * string.c (str_sub_s): ç½®æ›å¾Œã®æ–‡å­—列長ã•ãŒé–“é•ã£ã¦ã„ãŸ
+
+Mon Nov 25 09:11:22 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * numeric.c (fix_rshift): 32以上ã®å³ã‚·ãƒ•トã§0ã‚’è¿”ã™ã‚ˆã†ã«(Cã®
+ rshiftã¯(x>>(y%32))ã‚’è¿”ã—ã¦ã„ãŸ).
+
+ * string.c (str_gsub): ç½®æ›ãŒè¡Œã‚れãªã„å ´åˆãŒã‚ã£ãŸ
+
+ * string.c (str_resize): 本当ã«å¿…è¦ãªæ™‚ã ã‘realloc
+
+Thu Nov 21 04:13:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * configure.in (EXTSTATIC): --with-static-linked-extã§å…¨ã¦ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼
+ ルをé™çš„リンクã™ã‚‹ã‚ˆã†ã«
+
+ * pack.c (pack_unpack): è¡Œæœ«ã®æ”¹è¡ŒãŒãªã„時ã«ã‚‚ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’スキッ
+ プã™ã‚‹ã‚ˆã†ã«
+
+Wed Nov 20 21:42:51 1996 Yasuo OHBA <jammy@shljapan.co.jp>
+
+ * configure.in: freebsd対応
+
+Wed Nov 20 10:24:24 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/extmk.rb.in (install): 通常リンク用ã®LDFLAGSã¨ãƒ€ã‚¤ãƒŠãƒŸãƒƒã‚¯ãƒª
+ ンク用ã®DLDFALGSを分離
+
+ * ext/extmk.rb.in (install): ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ã®æˆåŠŸã—ãŸã‚‚ã®ã‚’é™çš„リンク
+ ã®ãƒªã‚¹ãƒˆã«è¿½åŠ ã™ã‚‹
+
+ * eval.c (f_missing): ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ–‡å­—列表ç¾ãŒé•·ã™ãŽã‚‹æ™‚ãƒãƒƒãƒ•ã‚¡
+ ã‚’æ›¸ãæ½°ã—ã¦ã„ãŸ
+
+ * process.c (proc_exec_v): forkã—ãŸå¾Œä¾‹å¤–を発生ã•ã›ã¦ã¯ã„ã‘ãªã„
+
+Tue Nov 19 13:28:15 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961119
+
+ * eval.c (mod_method_defined): Module#method_defined? ã®è¿½åŠ 
+
+ * parse.y (call_args): 引数ãŒå”¯ä¸€ã®ã‚³ãƒžãƒ³ãƒ‰ã‚³ãƒ¼ãƒ«ã§ã‚る時ã®ãƒã‚°(戻
+ り値ãŒå±•é–‹ã•れã¦ã—ã¾ã†)
+
+Mon Nov 18 13:28:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_sub): 失敗ã—ãŸæ™‚ã«nilã‚’è¿”ã—ã¦ã„ãŸ
+
+ * string.c (str_split_method): 検索開始ä½ç½®ãŒç§»å‹•ã—ã¦ãªã‹ã£ãŸ
+
+ * ext/socket/socket.c (sock_s_getservbyaname): ã¾ã é–“é•ã£ã¦ã„ãŸ
+
+ * version 0.99.3-961118
+
+ * string.c (str_sub_s): å…ƒã®æ–‡å­—列を置æ›ã™ã‚‹ã®ã‚’æ­¢ã‚ãŸ
+
+ * pack.c (encodes): 領域外をアクセスã—ã¦ã„ãŸ
+
+Fri Nov 15 17:10:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * bignum.c (big_divmod): BignumãŒå¼•æ•°ã®å ´åˆã®å¯¾å¿œå¿˜ã‚Œ
+
+ * sample/ruby-mode.el (ruby-expr-beg): word?å½¢å¼ã¸ã®å¯¾å¿œãŒä¸å®Œå…¨
+
+Wed Nov 13 15:42:40 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_tr_s_bang): tr_sã§trãŒè¡Œã‚れã¦ã„ãªã‹ã£ãŸ
+
+ * eval.c (rb_eval): autoloadクラスã®ãƒã‚§ãƒƒã‚¯
+
+ * string.c (f_sub): subãŒsub!ã¨åŒã˜å‹•作ã«ãªã£ã¦ã„ãŸ
+
+ * eval.c (thread_sleep): stopã¨sleepã®åˆ†é›¢
+
+Mon Nov 11 13:53:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961111
+
+ * numeric.c (fix_step): to, stepãŒæ•´æ•°ä»¥å¤–ã®å ´åˆã«å¯¾å¿œ
+
+ * eval.c (rb_call): dynamic varãŒdynamic scopingã«ãªã£ã¦ã„ãŸ(ã“れ
+ ã¯ã¾ãšã„)
+
+ * string.c (str_chop_bang): é•·ã•0ã®æ–‡å­—列ã®chopã§ï¼Œé ˜åŸŸå¤–ã®ã‚¢ã‚¯ã‚»
+ スãŒç™ºç”Ÿã—ã¦ã„ãŸï¼Ž
+
+ * parse.y (yyerror): 割り当ã¦ãŸé ˜åŸŸå¤–をアクセスã—ã¦ã„ãŸ
+
+Fri Nov 8 11:54:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_yield): scopeã‚’heapã«ã‚³ãƒ”ー
+
+Thu Nov 7 09:56:53 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * numeric.c (num_coerce): ã¨ã‚Šã‚ãˆãšä¸¡è¾ºã‚’Floatã«å¤‰æ›ã™ã‚‹ã“ã¨ã«
+
+Wed Nov 6 10:45:13 1996 Yasuo OHBA <jammy@shljapan.co.jp>
+
+ * lib/parsearg.rb: 第2引数を変更.
+
+Tue Nov 5 14:21:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961105
+
+Sat Nov 2 01:11:40 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * bignum.c (big_pow): typo (dy -> dx)
+
+ * bignum.c (big_divmod): 知らãªã„åž‹ã¯floatã«å¤‰æ›ã—ã¦ã¿ã‚‹
+
+ * numeric.c (fix_lshift): 境界æ¡ä»¶ã®ãƒã‚°(è² ã«ãªã£ã¦ã„ãŸ)
+
+ * bignum.c (big_pow): ç„¡é§„ãªfloatã¸ã®å¤‰æ›ã‚’ãªãã—ãŸ
+
+ * math.c (math_atan2): typo(x -> y)
+
+Fri Nov 1 15:30:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/socket/socket.c (sock_gethostname): gethostnameãŒãªã„時ã«ã¯
+ unameを使ã£ã¦ãƒ›ã‚¹ãƒˆåã‚’å¾—ã‚‹
+
+ * ext/etc/etc.c (etc_getlogin): getloginãŒNULLã‚’è¿”ã—ã¦ã‚‚環境変数を
+ 調ã¹ã‚‹ã‚ˆã†ã«
+
+ * object.c (krn_clone): オブジェクトã®ãƒ•ラグもコピー
+
+ * hash.c (rb_cmp): ãƒãƒƒã‚·ãƒ¥ã®æ¯”較を`=='ã§ãªã`eql?'ã«å¤‰æ›´
+
+ * math.c (Need_Float): Float()を使ã£ã¦å¤‰æ›ã™ã‚‹
+
+ * compar.c (cmp_gt): 以å‰ã®å³è¾ºã‚’è¿”ã™ä»•様ã®åæ®‹ãŒæ®‹ã£ã¦ã„ãŸ
+
+Thu Oct 31 12:55:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961031
+
+ * numeric.c (Init_Numeric): typo
+
+ * eval.c (error_print): é•·ã™ãŽã‚‹trace backを途中çœç•¥ã™ã‚‹
+
+ * regex.c (re_compile_pattern): 全角ã®rangeã«å¯¾å¿œ
+
+Wed Oct 30 03:03:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.3-961030
+
+ * io.c (f_ungetc): 関数を追加
+
+ * eval.c (dyna_var_asgn): return値忘れ
+
+Tue Oct 29 10:05:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (f_split): 関数splitを追加
+
+ * eval.c (rb_call): ãƒã‚¹ãƒˆã—ãŸå¤–å´ã®ã‚¯ãƒ©ã‚¹/モジュールã®å®šæ•°ã‚’å‚ç…§
+ ã§ãるよã†ã«
+
+Mon Oct 28 09:51:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_sub): offsetãŒæ–‡å­—ã®æœ«å°¾ã«ã‚る時ã®ãƒã‚§ãƒƒã‚¯
+
+ * regex.c (re_match): 割り当ã¦ã‚‹ãƒ¬ã‚¸ã‚¹ã‚¿ã®æ•°ãŒ1多ã‹ã£ãŸ
+
+ * io.c (io_gets): $/ = ""ã®å‹•作をperlã«åˆã‚ã›ã‚‹(awkã¨ã¯ã¡ã‚‡ã£ã¨é•
+ ã†ã‚‰ã—ã„)
+
+ * io.c (io_gets): $/ = nilã®æ™‚å°‘ã—高速化
+
+ * string.c (str_split_method): 括弧ãŒnullã«ãƒžãƒƒãƒã—ãŸæ™‚ã«ã‚‚無視ã—
+ ãªã„よã†ã«
+
+ * string.c (str_split_method): 括弧ã«ãƒžãƒƒãƒã—ãŸåˆ†ã¯limitã®æ•°ã«å«ã‚
+ ãªã„よã†ã«ï¼Ž
+
+ * numeric.c (num_coerce_bin): coerceã®å®šç¾©ã‚’変更,2è¦ç´ ã®é…列
+ [x,y]ã‚’è¿”ã™ã‚ˆã†ã«
+
+ * sample/ruby-mode.el (ruby-calculate-indent): "do |aa|"ã®å¯¾å¿œã‚’改
+ å–„ã—ãŸï¼Ž
+
+Sat Oct 26 01:43:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/marshal/marshal.c (w_object): ビルトインクラスã®ã‚µãƒ–クラスを
+ æ­£ã—ã復旧ã§ãるよã†ã«
+
+ * ext/marshal/marshal.c (w_object): ユーザ定義dumpã®å„ªå…ˆ
+
+ * numeric.c (flo_coerce): Float()を使ã£ã¦å®šç¾©
+
+ * numeric.c (Init_Numeric): Numericã®newã®undefã¯ã¾ãšã„
+
+ * ext/marshal/marshal.c (w_symbol): シンボルã®å†…容(文字列)ã¯ä¸€åº¦ã—
+ ã‹ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã出ã•ãªã„.
+
+ * sample/ruby-mode.el (ruby-parse-region): if/while修飾å­ã«å¯¾å¿œã—
+ ãªããªã£ã¦ã„ãŸ
+
+ * bignum.c (Init_Bignum): Bignum.newを除ã
+
+ * eval.c (rb_eval): 引数評価後ã«ãƒ•ァイルåã¨è¡Œç•ªå·ã‚’å†è¨­å®š
+
+ * numeric.c (flo_div): typo
+
+ * sample/ruby-mode.el (ruby-parse-region): def /, def `ã«å¯¾å¿œ
+
+Fri Oct 25 09:26:29 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el (ruby-calculate-indent): "do |aa|"ã«å¯¾å¿œ
+
+ * array.c (ary_aset): indexãŒfixnumã®å ´åˆã¡ã‚‡ã£ã¨é«˜é€ŸåŒ–
+
+ * eval.c (thread_fd_writable): 書ãè¾¼ã¿å‰ã®selectãƒã‚§ãƒƒã‚¯
+
+ * array.c (ary_assoc): ç„¡é™ãƒ«ãƒ¼ãƒ—ã«è½ã¡ãŸ
+
+ * eval.c (thread_wait_for): selectãŒã‚¨ãƒ©ãƒ¼çµ‚了ã—ãŸæ™‚,linux以外ã§
+ ã®å‹•ä½œãŒæ­£ã—ããªã‹ã£ãŸï¼Ž
+
+Thu Oct 24 08:26:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (backtrace): `$@'を文字列ã‹ã‚‰é…列ã«å¤‰æ›´ã—ãŸï¼Ž
+
+ * eval.c (eval): eval中ã®ä¾‹å¤–発生ä½ç½®ã‚’ä¿å­˜ã™ã‚‹
+
+ * bignum.c (bigsub): オペランドã®å¤§å°æ¯”較ã®å¤±æ•—
+
+ * re.c (reg_search): 直接å‚ç…§ãŒãªã„時ã«ã‚‚`$~'ãŒã‚»ãƒƒãƒˆã•れるよã†ã«
+
+Wed Oct 23 10:40:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.2-961023
+
+ * ext/marshal/marshal.c (r_bytes): mallocã‚’ã‚„ã‚,allocaを使ã†
+
+ * sample/ruby-mode.el (ruby-calculate-indent): 括弧ã®å¯¾å¿œã‚’変更.
+ ()内ã§ã¯ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã‚’レベルをåˆã‚ã›ã‚‹ã‚ˆã†ã«
+
+Tue Oct 22 12:59:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * hash.c (hash_s_new): sizeを指定ã§ãるよã†ã«
+
+ * ext/marshal/marshal.c (w_object): dumpã™ã‚‹æ·±ã•制é™ã‚’指定ã§ãるよ
+ ã†ã«
+
+ * array.c (ary_s_new): sizeを指定ã—ãŸæ™‚ã®åˆæœŸåŒ–忘れ
+
+ * object.c (f_float): big2dblã®å®£è¨€å¿˜ã‚Œï¼Ž
+
+ * bignum.c (bigsub): 大ãã•ã®è¿‘ã„BignumåŒå£«ã®æ¼”ç®—ã§çµæžœãŒè² ã«ãªã‚‹
+ å ´åˆã«é–“é•ã„ãŒã‚ã£ãŸï¼Ž
+
+ * array.c (ary_aset): ç½®æ›å…ˆã¨ç½®æ›å…ƒãŒåŒã˜é•·ã•ã®æ™‚内容を
+ shift(memmove)ã—ãªã„よã†ã«ï¼Ž
+
+ * ext/marshal/marshal.c (marshal_dump): ファイルフォーマットã«ãƒãƒ¼
+ ジョンを埋ã‚込むよã†ã«
+
+ * ext/marshal/marshal.c (tmpnam): linux-aout-dln用ã«å®šç¾©
+
+Mon Oct 21 08:40:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/socket/socket.c (sock_s_gethostbyname): hostentæ§‹é€ ä½“ã®æƒ…å ±
+ ã‚’è¿”ã™
+ (sock_s_gethostbyaddr): IPアドレスã‹ã‚‰hostent構造体を得る
+ (sock_s_getservbyaname): getservbyname(3)
+
+Fri Oct 18 10:37:36 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el (ruby-indent-to): 移動先カラムãŒè² ã«ãªã‚‹ãƒã‚°
+
+ * eval.c (compile): evalã§å…ƒã‚½ãƒ¼ã‚¹ã®è¡Œç•ªå·ã§ã‚¨ãƒ©ãƒ¼ã‚’表示ã™ã‚‹
+
+Thu Oct 17 09:52:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (eval): evalã§æ–‡æ³•エラーãŒã‚ã£ãŸæ™‚ã«SEGV
+
+ * lib/safe.rb: Restricted.evalã®ä¸­ã ã‘制é™ã‚’加ãˆã‚‹ï¼Ž
+
+ * eval.c (error_print): ãƒãƒƒã‚¯ãƒˆãƒ¬ãƒ¼ã‚¹ã®å‡ºåŠ›ï¼Žcallerã§ä¾‹å¤–発生ä½ç½®
+ を調整ã—ãŸæ™‚ã«å•題ãŒå‡ºã‚‹(ãã‚“ãªã“ã¨ã‚’ã—ãªã‘れã°è‰¯ã„ã®ã ãŒâ€¦)
+
+ * eval.c (make_backtrace): ãƒãƒƒã‚¯ãƒˆãƒ¬ãƒ¼ã‚¹ã®ç”Ÿæˆ
+
+Wed Oct 16 12:56:22 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby-man-0.99.2-jp/index.html: 日本語版ドキュメントã®å®Œæˆ(é•·ã‹ã£ãŸâ€¦)
+
+ * re.c (reg_regcomp): $=ãŒnilã®æ™‚ã®å‡¦ç†
+
+ * string.c (f_chop): $_ã«å¯¾ã™ã‚‹chop
+
+Tue Oct 15 11:04:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.2-961015
+
+Mon Oct 14 18:22:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_schedule): BOW対応.selectãŒ-1ã‚’è¿”ã—ãŸæ™‚ã«ãƒã‚°(実
+ ã¯do .. whileãŒcontinueã§å…ˆé ­ã«ã‚¸ãƒ£ãƒ³ãƒ—ã™ã‚‹ã¨æ€ã„込んã§ã„ãŸï¼Žæ¡
+ ä»¶ã®ç›´å‰ã ã£ãŸã®ã­ ^^);;;;;
+
+ * sample/ruby-mode.el (ruby-mode-syntax-table): ?ã®syntaxãŒ"/"ã§ã¯
+ ã¾ãšã„らã—ã„
+
+ * hash.c (rb_hash): name conflict
+
+Fri Oct 11 00:23:05 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.2-961011
+
+ * ext/marshal/marshal.c (w_object): çµå±€å‹•ã„ã¦ã„ãªã‹ã£ãŸå¾ªç’°ã‚ªãƒ–ジェ
+ クト対応を外ã—ãŸï¼Ž
+
+ * hash.c (rb_hash): Fixnumã¨æ–‡å­—列ã®é«˜é€ŸåŒ–
+
+ * ext/marshal/marshal.c (w_object): ç„¡é§„ãªãƒ‡ãƒ¼ã‚¿ã®å‰Šé™¤(フォーマッ
+ トã®éžäº’æ›æ€§)
+
+ * io.c (io_readline): 戻り値ã®ä¸å‚™
+
+ * ext/marshal/marshal.c (marshal_dumps): MSDOS対応
+
+ * ruby.c (load_file): MSDOS対応
+
+Wed Oct 9 17:46:27 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/extmk.rb.in (install): ç„¡é§„ãªã‚³ãƒ”ーをé¿ã‘ã‚‹
+
+ * string.c (str_sub_method): マッãƒãŒãªã‹ã£ãŸæ™‚ã®String#subã®å€¤ãŒ
+ é•ã£ã¦ã„ãŸï¼Ž
+
+ * eval.c (obj_extend): extendã—ãŸæ™‚ã«object_extendedを呼ã¶ã‚ˆã†ã«
+
+Tue Oct 8 00:55:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_alloc): 割当ã®å¹³å‡åŒ–
+
+ * eval.c (thread_schedule): joinã®ãƒã‚°ã‚’修正
+
+ * eval.c (thread_wait_for): selectã¸ã®å‰²è¾¼ã¿ãªã©ã«å¯¾å¿œ
+
+ * eval.c (thread_select): linuxã®selectã®æŒ™å‹•ã«å¯¾å¿œ(timeoutãŒå¤‰åŒ–
+ ã™ã‚‹)
+
+Mon Oct 7 09:47:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.2-961007
+
+ * eval.c (PUSH_BLOCK): the_classã®ä¿å­˜ã‚’忘れã¦ã„ãŸï¼Ž
+
+ * ext/dbm/dbm.c (fdbm_store): sizeã®ä¿å­˜ã™ã‚‹å ´æ‰€ãŒé–“é•ã£ã¦ã„ãŸ
+
+ * ext/socket/socket.c (s_accept): thread対応ã—ã¦ã„ãªã‹ã£ãŸ
+
+Sat Oct 5 01:32:27 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * io.c (io_readchar): EOFã§ä¾‹å¤–を発生ã•ã›ã‚‹
+
+Fri Oct 4 11:59:54 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/marshal/marshal.c (w_object): Hashã¨Objectã®å¾©æ—§ã«å¿…è¦ãªãƒãƒƒ
+ ã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ãƒ«ãŒæ¸¡ã•れã¦ã„ãªã‹ã£ãŸï¼Ž
+
+ * variable.c (rb_path2class): ユーザ定義クラスã®å¾©æ—§ã«å¤±æ•—ã—ã¦ã„ãŸ
+
+ * variable.c (rb_path2class): クラスãŒå­˜åœ¨ã—ãªã„時ã®ã‚¨ãƒ©ãƒ¼ã‚’Fatal
+ ã‹ã‚‰NameErrorã¸ï¼Ž
+
+ * range.c (range_s_new): first,lastãŒä¸¡æ–¹Numericã®æ™‚エラーã«ãªã£ã¦
+ ã„ãŸï¼Ž
+
+ * range.c: start->first, end->last
+
+Wed Oct 2 02:02:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c: DJGPPã§chmod,chownを使ãˆã‚‹ã‚ˆã†ã«(ã£ã¦DOSã«chownãŒã‚ã‚‹ã®ã‹?)
+
+ * class.c (rb_singleton_class): ビルトインクラスもextendã—ãŸã‚Šç‰¹ç•°
+ メソッドを追加ã—ãŸã‚Šã§ãるよã†ã«
+
+ * variable.c (rb_set_class_path): ユーザ定義ã®ãƒˆãƒƒãƒ—レベルクラスã«
+ pathを設定ã—ãªã„
+
+ * eval.c (eval): 例外ãŒRuntimeErrorã«åŒ–ã‘ã¦ã„ãŸ
+
+ * eval.c (eval): eval中ã®ä¾‹å¤–ã®è¡¨ç¾ã®æ”¹å–„
+
+ * eval.c (eval): eval_with_bindingã¨ã®ä¸€æœ¬åŒ–
+
+ * eval.c (rb_eval): クラス/モジュール定義ã®ä¸­ã‹ã‚‰å®šç¾©ä¸­ã®ã‚¯ãƒ©ã‚¹/モ
+ ジュールãŒå‚ç…§ã§ãるよã†ã«
+
+Tue Oct 1 01:40:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.2-961001
+
+ * parse.y: cur_crefãŒ2度宣言ã•れã¦ã„ãŸ
+
+ * signal.c (trap): SIGSEGV,SIGBUSã®ãªã„機種ã«å¯¾å¿œ
+
+ * io.c (Init_IO): å¼•æ•°ã‚¿ã‚¤ãƒ—ã®æŒ‡å®šé–“é•ã„
+
+Mon Sep 30 15:28:00 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.2-960930
+
+ * config.guess,config.sub: $host_osãŒæ­£ã—ã設定ã•れãªã„
+
+ * eval.c (rb_eval): yieldã§æ­£ã—ããªã„selfãŒè¨­å®šã•れã¦ã„ãŸ
+
+ * eval.c (ruby_run): toplevelã®ä¾‹å¤–処ç†ã®ãƒã‚°
+
+Mon Sep 30 09:13:26 1996 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * djgpp対応
+
+Sat Sep 28 02:45:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.2-960928
+
+ * sample/ruby-mode.el (ruby-beginning-of-block): ブロックã®å…ˆé ­ã«
+ 移動(æ­£ã—ãインデントã—ã¦ã„ãªã„ã¨å‹•作ã—ãªã„)
+ (ruby-end-of-block): åŒä¸Š
+
+ * eval.c (class_s_new): Class#newãŒã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã°ã‚ŒãŸæ™‚ã¯
+ initializeもイテレータã¨ã—ã¦å‘¼ã°ã‚Œã‚‹ã‚ˆã†ã«
+
+ * signal.c (sigsegv): SEGVã§backtraceを表示ã™ã‚‹ã‚ˆã†ã«
+
+Fri Sep 27 09:51:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.2-960927
+
+ * eval.c (error_print): 引数ã®ãªã„raiseã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒæ­£ã—ã表示ã•
+ れるよã†ã«ï¼Ž
+
+ * eval.c (rb_longjmp): mesgãŒnilã®æ™‚RuntimeErrorを生æˆã™ã‚‹ï¼Ž
+
+ * eval.c (f_raise): 引数ãŒãªã„時ã«å¯¾å¿œ
+
+ * eval.c (thread_mark): stack上ã«ãªã„データã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¤‰æ›ã‚’行ã£ã¦
+ ã„ãŸï¼Ž
+
+ * eval.c (Init_Thread): 割込ã¿ã®é–“éš”ãŒ1ç§’ã¨é•·ã™ãŽãŸï¼Ž
+
+Thu Sep 26 16:02:45 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_schedule): 一度ペンディングã«ãªã‚‹ã¨ãƒ•ラグãŒã‚¯ãƒªã‚¢
+ ã•れã¦ã„ãªã‹ã£ãŸï¼Ž
+
+ * process.c (rb_proc_exec): system/execã®å¼•æ•°ãŒç©ºæ–‡å­—列ã§ã‚ã£ãŸå ´
+ åˆï¼Œä¾‹å¤–を発生ã™ã¹ãã ã£ãŸï¼Ž
+
+ * config.sub/config.guess: æ–°ã—ã„ã‚‚ã®ã«ç½®ãæ›ãˆ
+
+Thu Sep 26 15:41:35 1996 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (next_argv): -i.bakã‚’BOWã¨DOSã«å¯¾å¿œï¼Ž
+
+Thu Sep 26 01:31:43 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * io.c (io_sysread): EOFã§ä¾‹å¤–
+
+ * io.c (f_readline): EOFã§ä¾‹å¤–を発生ã™ã‚‹ã‚ˆã†ã«ï¼Žgetsã¯äº’æ›æ€§ã®ãŸã‚
+ nilã‚’è¿”ã™ã¾ã¾ã«ã™ã‚‹
+
+ * eval.c (proc_call): lambdaã‹ã‚‰ã®returnã§IN_BLOCKフラグãŒç«‹ã£ãŸã¾
+ ã¾ã ã£ãŸ
+
+ * eval.c (PUSH_BLOCK2): threadã«å¯¾å¿œã™ã‚‹ãŸã‚Blockを一度stackã«ã‚³ãƒ”ー
+
+Wed Sep 25 11:54:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (method_call): Const::method()å½¢å¼ã‚’使ãˆã‚‹ã‚ˆã†ã«ã—ã¦ã¿ãŸï¼Ž
+ 引数括弧ã¯çœç•¥ã§ããªã„.
+
+ * sample/test.rb: Process.killã®å­˜åœ¨ã‚’確ã‹ã‚ã¦ã‹ã‚‰ãƒ†ã‚¹ãƒˆã‚’行ã†
+
+ * eval.c (eval_with_binding): 第2引数ã¨ã—ã¦binding(ã¾ãŸã¯lambda)ã‚’
+ 与ãˆã‚‹ã¨ãã®ç’°å¢ƒã§evalを実行ã™ã‚‹ã‚ˆã†ã«ã—ãŸ
+
+ * eval.c (f_binding): ç¾åœ¨ã®bindingã‚’è¿”ã™é–¢æ•°
+
+ * eval.c: block構造体ã«the_classã‚’ä¿å­˜ã™ã‚‹ãƒ¡ãƒ³ãƒã‚’追加
+
+ * process.c (Init_process): kill,wait,waitpidã‚’Processã«ç§»å‹•
+
+Tue Sep 24 02:44:43 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el: ã„ã‚ã„ã‚å•題ãŒå¤šã„ã®ã§ä»¥å‰ã®é«˜é€ŸåŒ–ã¯ç ´æ£„.
+ 別ã®ã‚¢ãƒ—ローãƒã‚’使ã£ãŸï¼Ž
+
+ * lib/tk.rb (Tk.pack): 複数ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’å—ã‘付ã‘ã‚‹pack
+
+Sat Sep 21 11:08:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (exprs): 空文もå—ã‘付ã‘るよã†ã«æ–‡æ³•を変更.今ã¾ã§ã¯æ”¹è¡Œ
+ ã®é€£ç¶šã ã‘ãŒè¨±ã•れã¦ã„ãŸï¼Ž
+
+Fri Sep 20 11:39:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * Failã®å¤§åŠã‚’åå‰ã¤ã例外ã«å¤‰æ›´ï¼Ž
+
+ * re.c (Init_Regexp): åå‰ã¤ã例外を導入.
+
+ * eval.c (f_missing): Objectã¯inspectã—ãªã„.
+
+ * object.c (inspect_i): Object#inspectã§loopã«å¯¾å¿œï¼Ž
+
+ * regex.c (re_search): /^$/ãŒ""ã«ãƒžãƒƒãƒã—ãªã‹ã£ãŸï¼Ž
+
+Thu Sep 19 19:25:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * regex.c (re_search): /^$/ãŒéžç©ºè¡Œã«ãƒžãƒƒãƒã—ã¦ã„ãŸï¼Ž
+
+Tue Sep 17 10:28:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.2-960917
+
+Mon Sep 16 10:47:56 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el (ruby-calculate-indent): 演算å­ç¶™ç¶šã®å ´åˆã®
+ 文字列ã®åˆ¤å®šã®ãƒã‚°
+
+ * sample/ruby-mode.el (ruby-calculate-indent): elseãªã©ã®æ¬¡ã®è¡Œã®
+ インデント計算を正ã—ã.
+
+Sat Sep 14 08:37:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.2-960914
+
+Fri Sep 13 08:06:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/socket/socket.c (tcpaddr): port番å·ã«ntohsã‚’ã¤ã‘忘れ
+
+ * dln.c (link_undef): テーブルã®ç¨®é¡žãŒé–“é•ã£ã¦ã„ãŸï¼Ž
+
+ * bignum.c (bigadd): 引ãç®—ãŒç™ºç”Ÿã™ã‚‹æ™‚ã«è¨ˆç®—é•ã„ãŒèµ·ãã¦ã„ãŸï¼Ž
+
+ * parse.y (iter_do_block): do..endã§ã‚‚dynamic variableを.
+
+ * bignum.c (big_pow): より正確ãªè¨ˆç®—ã‚’(æ•´æ•°åŒå£«ã§ã¯floatã«å¤‰æ›ã—ãª
+ ã„).
+
+Thu Sep 12 13:11:55 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * variable.c (rb_set_class_path): StringクラスãŒåˆæœŸåŒ–ã•れるå‰ã«
+ Stringを作ã£ã¦ã„ãŸï¼Žçµ„è¾¼ã¿ã‚¯ãƒ©ã‚¹ã«ã¯pathã¯ã„らãªã„
+
+ * parse.y (yylex): 0.1ãŒ0ã«ãªã£ã¦ã„ãŸ
+
+ * parse.y (yylex): 行番å·ã®ä¸æ•´åˆ
+
+ * gc.c (oblist_live_obj): 今「生ãã¦ã„ã‚‹ã€å…¨éƒ¨ã®ã‚ªãƒ–ジェクトを返ã™
+ イテレータ.ãã®ã‚¯ãƒ©ã‚¹(ã¾ãŸã¯ã‚µãƒ–クラス)ã®å…¨éƒ¨ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿”
+ ã™each_object_ofも定義ã—ãŸï¼Ž
+
+ * class.c (rb_define_class_id): ç„¡é§„ãªã‚¯ãƒ©ã‚¹ã‚’割り当ã¦ã¦ã„ãŸï¼Žçµæžœ
+ ã¨ã—ã¦æœªåˆæœŸåŒ–ã®ã‚¯ãƒ©ã‚¹ã‚ªãƒ–ジェクトãŒå­˜åœ¨ã—ã¦ã„ãŸï¼Ž
+
+Wed Sep 11 00:56:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (yylex): octalã®å®šæ•°ã®æ¤œå‡ºã‚’より正確ã«(090ã¯ã‚¨ãƒ©ãƒ¼ã¨ã‹).
+
+ * bignum.c (big_minus): yãŒxより大ãã„å ´åˆã«ã‚¨ãƒ©ãƒ¼ï¼Ž
+
+ * parse.y (yylex): エラー行番å·ã®è¡¨ç¤ºã‚’より正確ã«
+
+ * sample/ruby-mode.el (ruby-expr-beg): 変数åãŒ1æ–‡å­—ã®æ™‚誤動作ã—ã¦
+ ã„ãŸï¼Ž
+
+ * sample/ruby-mode.el (ruby-calculate-indent): ?/ã§ãƒ«ãƒ¼ãƒ—ã«è½ã¡ã„
+ ãŸãƒã‚°ã‚’修正.
+
+ * enum.c (enum_min,enum_max): sortã®ã‚ˆã†ã«ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦ã‚‚動作ã™
+ るよã†ã«ï¼Ž
+
+ * enum.c (enum_find_all): typo
+
+Tue Sep 10 12:07:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * node.h (nd_line): NODEã®lineã‚’flagsã«æŠ¼ã—è¾¼ã‚ã¦ã‚ªãƒ–ジェクトサイ
+ ズをå°ã•ãã—ãŸï¼Žåˆ¶é™:32bit intã®ãƒžã‚·ãƒ³ã®å ´åˆï¼Œãƒ•ァイルã®è¡Œæ•°ãŒ
+ 32767ã‚’è¶Šãˆã‚‹ã¨æ­£å¸¸ã«è¡¨ç¤ºã•れãªã„.
+
+ * st.c: hashã¨compareã®é–¢æ•°ãƒ¡ãƒ³ãƒã‚’構造体ã«ãƒ‘ック,クラス的ãªä½¿ã„
+ 方を行ã†ï¼Ž1 tableã‚ãŸã‚Š4 byteã®ç¯€ç´„.
+
+Mon Sep 9 16:35:54 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c (file_truncate): æä¾›ã•れãªã„時ã«ã¯ç‰¹åˆ¥ãªä¾‹å¤–を発生ã™ã‚‹ã‚ˆ
+ ã†ã«ï¼Ž
+
+ * eval.c (Init_Proc): ä¸é©åˆ‡ãªä½ç½®ã®local-jumpを例外ã«ï¼Ž
+
+Sat Sep 7 17:06:15 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (proc_call): ã¾ã ã‚¹ã‚³ãƒ¼ãƒ—ãŒã‚¹ã‚¿ãƒƒã‚¯ä¸Šã«ã‚る時ã«ã¯å±€æ‰€è„±å‡º
+ を有効ã«ã™ã‚‹ï¼Žã“れã§ï¼Œprocを生æˆã—ã¦callã™ã‚‹ã“ã¨ã¯ï¼Œã‚¹ã‚³ãƒ¼ãƒ—を脱
+ 出ã—ãªã„é™ã‚Šï¼Œyieldã¨åŒã˜æ„味をæŒã¤ã“ã¨ã«ãªã‚‹ï¼Ž
+
+Fri Sep 6 13:30:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el (ruby-indent-to): インデントãŒå¤‰ã‚らãªã„時ã«
+ ã¯ãƒãƒƒãƒ•ァを変更ã—ãªã„.
+ (ruby-calculate-indent): ã¾ãšæ–‡å­—åˆ—ã®å†…部ã‹åˆ¤æ–­ã—ã¦ã‹ã‚‰ï¼Œå‰ã®è¡Œ
+ ã‹ã‚‰ãƒ‘ーズを行ã†ï¼ŽdefunãŒå¤§ãããªã£ãŸæ™‚ã®é«˜é€ŸåŒ–.
+ (ruby-in-string-p): 文字列ã®å†…部ã‹ã©ã†ã‹ã‚’判断ã™ã‚‹é–¢æ•°(以å‰ã®
+ parseã‹ã‚‰åˆ†é›¢)
+ (ruby-parse-region): 文字列ã«å¯¾ã™ã‚‹å‡¦ç†ã‚’ã¯ãšã™ï¼Ž
+ (ruby-beginning-of-block): ブロックã®å…ˆé ­ã«
+ (ruby-end-of-block): ãƒ–ãƒ­ãƒƒã‚¯ã®æœ«å°¾ã«(é…ã„…)
+
+Thu Sep 5 14:23:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c (file_s_split): [dirname,basename]ã«splitã™ã‚‹ï¼Ž
+
+ * eval.c (rb_eval): evalã®ä¸­ã§ã‚‚定数ã®å€¤ãŒæ­£ã—ããªã‚‹ã‚ˆã†ã«ï¼Žã“れã§
+ 定数ã«é–¢ã—ã¦ã¯é™çš„ãªã‚¹ã‚³ãƒ¼ãƒ—ãŒä¿è¨¼ã•れるよã†ã«ãªã£ãŸï¼Ž
+
+ * st.c (rehash): ãƒãƒƒã‚·ãƒ¥æ‹¡å¤§ã®ç³»æ•°ã‚’2ã‹ã‚‰1.79ã«ï¼Žå‰²ç®—ãŒã‚ˆã‚Šè‰¯ã„値
+ ã‚’è¿”ã™ã‚ˆã†ã«ï¼Ž
+
+Thu Sep 5 00:32:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (class_superclass) クラスã®ã‚¹ãƒ¼ãƒ‘ークラスを返ã™ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž
+
+Wed Sep 4 16:54:56 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * random.c (f_rand): Bignumã‚„longã®ç¯„囲を越ãˆã‚‹Floatã«å¯¾ã™ã‚‹ä¹±æ•°ã‚‚
+ 発生ã§ãるよã†ã«ï¼Ž
+
+ * struct.c (struct_alloc): Fatalã§ã¯ãªã例外を発生ã•ã›ã‚‹ã‚ˆã†ã«(通
+ 常ã®ä½¿ç”¨ã§ç™ºç”Ÿã—ã†ã‚‹).
+
+ * struct.c (struct_s_members): Structã®ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã§ã¯ãªã,生æˆ
+ ã•れãŸStructクラスã®ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã«ã—ãŸï¼Ž
+
+ * st.c (st_init_table): ruby専用ã«ãƒ‘ラメタを固定ã«ã—ãŸ(サイ
+ ã‚ºãŒæ¸›ã£ãŸ)
+
+Mon Sep 2 11:37:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * array.c (ary_shift): capaãŒã‚ã¾ã‚Šã«ã‚‚大ãã„æ™‚ã«ã¯é ˜åŸŸã‚’REALLOC
+ (ary_pop): åŒä¸Š
+
+ * string.c (str_inspect): multibyte character 対応ã«ãƒŸã‚¹ï¼Ž
+ (str_inspect): unsigned charã«ã—ãªã„ã¨ç¬¦å·å±•é–‹ã•れã¦ã—ã¾ã†
+
+ * parse.y (primary): `::'ã‚’primaryã«ç§»å‹• Foo::Bar.BazãŒã‚¨ãƒ©ãƒ¼ã«ãª
+ らãªã„よã†ã«ï¼Ž
+
+ * parse.y (primary): オペレータ形å¼ã®ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ãŒå®šç¾©ã§ããªã„
+
+ * random.c (f_rand): maxãŒ0ã®æ™‚ã«å¯¾å¿œ
+
+ * io.c (io_printf): 関数を定義ã—ã¦ã„ãŸãŒã‚¤ãƒ³ã‚¿ãƒ—リタã«ç™»éŒ²ã—ã¦ã„ãª
+ ã‹ã£ãŸï¼Ž
+
+ * file.c (file_s_basename): 第2引数ãŒç„¡ã„時ã«ã‚¨ãƒ©ãƒ¼ï¼Ž
+
+Thu Aug 29 10:49:40 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (expr): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã®æ–°å½¢å¼ã«ã€Œmethod do .. endã€å½¢å¼ã‚’採
+ 用ã—ãŸï¼Žã‚‚ã¡ã‚ん昔ã®å½¢å¼ã‚‚有効.
+
+ * sample/ruby-mode.el (ruby-calculate-indent): endã®æ•°ã®æ–¹ãŒå¤šã„å ´
+ åˆã«ã‚‚エラーを起ã“ã•ãªã„よã†ã«ï¼Ž
+
+Wed Aug 28 09:41:36 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * numeric.c (upto,downto,step,times): 対象ãŒfixnumã®ç¯„囲を越ãˆã¦ã‚‚
+ 動作ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+Mon Aug 26 10:04:37 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * missing/setenv.c (envix): typo(missing `== 0' for memcmp)
+
+ * dir.c (dir_foreach): foreach(dir open -> read loop -> closeã¾ã§)
+
+ * io.c (io_foreach): foreach(file open -> read loop -> closeã¾ã§)
+
+ * Fatalã®ã†ã¡æ•æ‰å¯èƒ½ãªã„ãã¤ã‹ã‚’例外ã«ï¼Ž
+
+Sat Aug 24 23:56:37 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * bignum.c (bigdivmod): FIX2INT -> INT2FIX 大間é•ã„
+
+Fri Aug 23 18:13:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * regex.c (re_free_registers): allocateã—ã¦ã„ãªã„時ã«ã¯å½“ç„¶ free
+ ã—ã¦ã¯ã„ã‘ãªã„.
+
+Thu Aug 22 01:20:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_create): 外å´ã‹ã‚‰å¼·åˆ¶çµ‚了ã•ã›ã‚‰ã‚ŒãŸthreadã¯
+ cleanupã™ã‚‹å¿…è¦ãŒç„¡ã„.
+
+Wed Aug 21 09:57:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_create): threadを終了ã•ã›ãŸå¤§åŸŸè„±å‡ºã®æƒ…報を
+ main_threadã«æ¸¡ã™ã‚ˆã†ã«ï¼Ž
+
+ * parse.y (call_args): æœ€çµ‚å¼•æ•°ã«æ‹¬å¼§ã‚’çœç•¥ã—ãŸãƒ¡ã‚½ãƒƒãƒ‰å‘¼å‡ºã—ã‚’ç½®
+ ã‘るよã†ã«(例: print foo bar, baz == print(foo(bar,baz)))
+
+Tue Aug 20 13:37:16 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (masign): 多é‡ä»£å…¥ã¨rest引数ã®å‹•作をåˆã‚ã›ã¦ç©ºã®é…列を代
+ å…¥ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * parse.y (arg): defined?ã®å¼·åº¦ã‚’ã‚‚ã†ã¡ã‚‡ã£ã¨å¼·ã
+
+ * eval.c (error_print): -wã§ä¾‹å¤–åも表示ã™ã‚‹ã‚ˆã†ã«
+
+ * eval.c (rb_eval): æ–°æ§‹æ–‡ã«å¯¾å¿œ
+ (handle_rescue): æ•æ‰ã™ã‚‹ä¾‹å¤–ã‚’ kind_of? ã§åŒå®š
+
+ * parse.y (primary): rescueã®æ§‹æ–‡ã‚’変更(åŒå®šå¼•æ•°ã®è¿½åŠ ï¼Œè¤‡æ•°rescue)
+
+ * Fail()ã®ã‹ãªã‚Šã‚’é©å½“ãªä¾‹å¤–を使ã†ã‚ˆã†ã«
+
+ * eval.c (thread_interrupt): Interrupt(今ã¯non-local jump)ã¯
+ main-threadã«é€ã‚‰ã‚Œã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * eval.c (rb_longjmp): $! ã®å†…容を文字列ã‹ã‚‰ä¾‹å¤–クラスã«å¤‰æ›´
+ (rb_raise): rb_fail ã‹ã‚‰å称変更
+ (rb_interrupt): 例外化
+ (rb_exit): 例外化
+
+ * error.c (Init_Exception): ä¾‹å¤–ã‚¯ãƒ©ã‚¹ã®æ–°è¨­(文字列ã®ã‚µãƒ–クラス)
+
+Mon Aug 19 19:40:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * signal.c (trap): å¤ã„ãƒãƒ³ãƒ‰ãƒ©ã‚’è¿”ã™ã‚ˆã†ã«ï¼Ž
+
+Wed Aug 14 00:07:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_trap_eval): ãƒãƒ³ãƒ‰ãƒ©ã®ãŸã‚ã«threadã‚’forkã™ã‚‹ã“ã¨ã‚’æ­¢
+ ã‚ãŸï¼Ž
+
+ * eval.c (thread_mark): thread毎㮠$!, $@ をマークã—忘れ
+
+ * ext/dbm/dbm.c (fdbm_delete): イテレータã¨ã—ã¦å‘¼ã°ã‚ŒãŸå ´åˆï¼Œè¦ç´ 
+ ãŒç„¡ã‘れã°ãƒ–ロックを評価ã™ã‚‹ï¼Ž
+
+ * hash.c (hash_delete): イテレータã¨ã—ã¦å‘¼ã°ã‚ŒãŸå ´åˆï¼Œè¦ç´ ãŒç„¡ã‘れ
+ ã°ãƒ–ロックを評価ã™ã‚‹ï¼Ž
+
+ * array.c (ary_delete): イテレータã¨ã—ã¦å‘¼ã°ã‚ŒãŸå ´åˆï¼Œè¦ç´ ãŒç„¡ã‘れ
+ ã°ãƒ–ロックを評価ã™ã‚‹ï¼Ž
+
+ * eval.c (rb_interrupt): SIGINTã®ãƒ‡ãƒ•ォルトをexitã‹ã‚‰ç‰¹åˆ¥ãªå¤§åŸŸè„±
+ 出ã«ï¼Žã‚„ã¯ã‚Šå‰²ã‚Šè¾¼ã¾ã‚ŒãŸä½ç½®ã®è¡¨ç¤ºãŒç„¡ã„ã®ã¯å¯‚ã—ã„ã®ã§ï¼Ž
+
+Tue Aug 13 01:34:00 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_exit): sub-thread内ã§ã®exitã‚‚statusã‚’ä¿å­˜ã™ã‚‹ã‚ˆã†ã«
+ (thread_create): 自thread内ã®exitã«å¯¾å¿œ
+
+ * signal.c (sighandle): SIGINTã®ãƒ‡ãƒ•ォルトãƒãƒ³ãƒ‰ãƒ©ã¯exitã™ã‚‹ã‚ˆã†ã«
+ (以å‰ã¯ä¾‹å¤–を発生ã—ã¦ã„ãŸ).
+
+ * 例外ã®ä¸€éƒ¨ã‚’Fatalã«ï¼Ž
+
+ * string.c (str_aset): 文字列ã®ç½®æ›ã®å¯¾è±¡ãŒéƒ¨åˆ†æ–‡å­—列ã§ãªã‹ã£ãŸæ™‚,
+ 例外を発生ã•ã›ãªã„よã†ã«
+
+ * eval.c (proc_call): Procã®ä¸­ã‹ã‚‰break/nextã¯é€šã—,他ã®ã‚‚ã®ã¯é€šã•
+ ãªã„よã†ã«
+
+Mon Aug 12 14:15:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * object.c (krn_type): 文字列を返ã™
+
+ * eval.c (thread_create): sub-thread内ã§ã®exitã«å¯¾å¿œ
+
+ * numeric.c (fix_type): 文字列を返ã™
+
+ * io.c (f_p): デãƒãƒƒã‚°ç”¨ãƒ‡ãƒ¼ã‚¿è¡¨ç¤ºãƒ¡ã‚½ãƒƒãƒ‰
+
+ * eval.c (f_missing): nil/TRUE/FALSEを特別扱ã„
+
+ * string.c (str_inspect): é•·ã„æ–‡å­—列を短縮表示.inspectã®åƒãã‚’
+ human readable stringã®ç”Ÿæˆã«çµ±ä¸€(re-generatable string ã¯æ­£å¼ã«
+ ç„¡ããªã£ãŸ).
+
+Sat Aug 10 16:54:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * object.c (Init_Object): kernel/nil/false/trueã®ã‚¯ãƒ©ã‚¹åを変更(å°
+ 文字ã«),rubyスクリプトã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„よã†ã«ï¼Ž
+
+ * eval.c (rb_eval): CONSTANTã®ã‚¢ã‚¯ã‚»ã‚¹å…ˆã‚’å˜ç´”化.crefを使ã‚ãªã„.
+
+ * eval.c (f_eval): 特異メソッド内ã§ã‚‚定数ã®å€¤ãŒæ­£ã—ããªã‚‹ã‚ˆã†ã«
+
+Fri Aug 9 12:23:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * array.c (ary_concat): append -> concat Stringã«åˆã‚ã›ãŸ
+
+ * parse.y (yylex): `$;'ãŒä½¿ãˆãªã‹ã£ãŸï¼Ž
+
+ * array.c (ary_push_method): 複数引数をå—ã‘付ã‘るよã†ã«ï¼Ž
+ (ary_unshift): 複数引数をå—ã‘付ã‘るよã†ã«ï¼Ž
+
+ * io.c (io_popen): IO.popenã§command pipeãŒé–‹ã‘るよã†ã«ï¼Ž
+
+ * object.c (Init_Object): Kernelã¨Nilã‚’ruby scriptã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ã
+ ãªã„よã†ã«ï¼Ž
+
+Thu Aug 8 01:21:47 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * object.c (f_integer): æ•´æ•°ã¸ã®å¤‰æ›é–¢æ•°
+ (f_float): 実数ã¸ã®å¤‰æ›é–¢æ•°
+ (f_string): 文字列ã¸ã®å¤‰æ›é–¢æ•°
+ (f_array): é…列ã¸ã®å¤‰æ›é–¢æ•°
+
+ * bignum.c (big_to_i): FIXNUMã®ç¯„囲ã§ãªã„時ã¯Bignumã®ã¾ã¾è¿”ã™ã‚ˆã†
+ ã«å¤‰æ›´ï¼Ž
+
+Wed Aug 7 09:28:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99.1-960807
+
+ * parse.y (mlhs): 「*foo = 1,2,3ã€ã‚¿ã‚¤ãƒ—ã®å¤šé‡ä»£å…¥ã‚‚å¯èƒ½ã«ï¼Ž
+
+ * object.c (Init_Object): クラスTrue/Falseã‚’ruby scriptã‹ã‚‰ã‚¢ã‚¯ã‚»
+ スã§ããªã„よã†ã«ï¼Ž
+
+ * object.c (nil_inspect): inspect表ç¾ã¯"nil"ã«
+
+ * io.c (io_print): nilã®printã‚’nilã«ï¼Ž
+
+ * object.c (nil_to_s): nilã®æ–‡å­—列表ç¾ã‚’""ã«ï¼Ž
+
+Tue Aug 6 01:12:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * dir.c (dir_s_open): file descripterãŒè¶³ã‚Šãªã„時ã«ã¯gcã—ã¦ã‹ã‚‰ã‚‚
+ ã†ä¸€åº¦openã—ã¦ã¿ã‚‹ï¼Ž
+
+ * io.c (rb_fopen): ã™ã¹ã¦ã®fopen()ã«ã¤ã„ã¦file descripterãŒè¶³ã‚Šãª
+ ã„æ™‚ã«ã¯gcã—ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦openã—ã¦ã¿ã‚‹ï¼Ž
+
+ * ext/socket/socket.c (Init_socket): 定数ã®è¿½åŠ ï¼Ž
+
+ * sample/ruby-mode.el (ruby-indent-to): インデント後ã®ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®
+ ã®èª¿æ•´ã‚’æ­£ã—ã.
+
+ * gc.c (gc): 割込ã¿ãƒã‚§ãƒƒã‚¯ã‚’行ã‚ãªã„(Cコードã®ä¸­ã§å®‰å¿ƒã—ã¦
+ malloc()ãŒä½¿ãˆãªããªã‚‹ã®ã§).
+
+ * st.c (call_hash_func): signalã¨threadã«ã‚ˆã‚‹å‰²è¾¼ã¿ã«å¯¾å¿œï¼Ž
+
+ * sig.h (DEFER_INTS): 割込ã¿ç¦æ­¢åŒºé–“ã®æŒ‡å®š
+
+ * eval.c (f_require): threadã«ã‚ˆã‚‹requireã®ç«¶åˆã«å¯¾å¿œ(最åˆã®
+ requireãŒçµ‚了ã™ã‚‹ã¾ã§ä»–ã®threadã¯å¾…ã¤).
+
+ * bignum.c (str2inum): 0x80000000ã®å€¤ãŒè² ã«ãªã£ã¦ã„ãŸ
+
+ * sprintf.c (f_sprintf): 文字列末尾,行末ã®å˜ç‹¬ã®`%'ã«å¯¾å¿œ
+
+ * bignum.c (big_cmp): 比較ã®çµæžœãŒé€†ã«ãªã‚‹æ™‚ãŒã‚ã£ãŸï¼Ž
+
+Mon Aug 5 10:58:13 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * process.c (proc_exec_v): 例外ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’分ã‹ã‚Šã‚„ã™ã.
+
+ * ext/dbm/dbm.c (fdbm_store): nilã‚’æ ¼ç´ã™ã‚‹ã¨è¦ç´ ã®å‰Šé™¤ã«ãªã‚‹
+
+ * ext/dbm/dbm.c: サイズをキャッシュ.
+
+Sat Aug 3 01:52:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_fail): `fail'ãŒå¼•æ•°ç„¡ã—ã§å‘¼ã°ã‚ŒãŸæ™‚ã ã‘以å‰ã®`$@'ã‚’ä¿
+ å­˜ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * eval.c (f_fail): frameã®èª¿æ•´
+
+Fri Aug 2 11:26:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/socket/socket.c (bsock_setopt): valã¨ã—ã¦TRUE/FALSE/Fixnumã‚‚
+ å—ã‘付ã‘るよã†ã«ï¼Ž
+
+ * ext/socket/socket.c (Init_socket): SO_REUSEADDRç­‰ã®å®šæ•°ã®è¿½åŠ 
+
+ * ext/md5/md5init.c: md5モジュール(åˆã®è¤‡æ•°ãƒ•ァイルã‹ã‚‰ãªã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼
+ ルã§ã‚‚ã‚ã‚‹)
+
+ * ruby.h (Make_Data_Struct): Data: objectã®instanceå¤‰æ•°ã«æ ¼ç´ ->
+ Dataåž‹ã®Objectã«(Dir,Time,Proc,Thread,DBM)
+
+Thu Aug 1 11:38:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/dbm/dbm.c (fdbm_store): valueãŒæ–‡å­—ã§ç„¡ã„時ã«å¯¾å¿œ
+
+Wed Jul 31 10:53:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/socket/socket.c (open_inet): htonsãŒå¿…è¦ã§ã‚ã£ãŸ
+ (tcpaddr): ntohlã§å¤‰æ›ã—ãŸ
+
+ * process.c (rb_proc_exec): execvp -> execv
+
+Tue Jul 30 17:48:33 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c: `$?'ã‚’thread localã«
+
+ * Makefile.in (install): install時ã«stripを行ã†
+
+ * configure.in: install時ã®stripã®æ¤œå‡º
+
+ * configure.in: NEXTSTEP対応
+
+ * version 0.99.1-960730
+
+Tue Jul 30 16:40:35 1996 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * dln.c (dln_load): NeXT dln(mach-o)対応.configureã¯æœªå¯¾å¿œ
+
+Tue Jul 30 09:46:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * process.c (f_system): 複数引数もã¨ã‚Œã‚‹ã‚ˆã†ã«
+
+ * process.c (f_exec): 複数引数もã¨ã‚Œã‚‹ã‚ˆã†ã«
+
+ * array.c (ary_append): é…列(ã¾ãŸã¯Enum)ã®è¦ç´ ã‚’破壊的ã«è¿½åŠ 
+
+ * array.c (ary_plus): Enumã¯ãã®è¦ç´ ã‚’追加
+
+ * file.c (file_s_open): File.openを追加
+
+ * struct.c (struct_new): FIX2INTを忘れã¦ã„ãŸ
+
+ * file.c (Init_File): exists? -> exist?
+
+ * object.c (obj_is_kind_of): is_kind_of? -> kind_of?, is_a?
+
+ * object.c (obj_is_instance_of): is_instance_of? -> instance_of?
+
+Mon Jul 29 16:40:02 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (parse_regx): å¼å±•開を行ã£ãŸå ´åˆï¼Œcasefoldã®è¨­å®šãŒã§ãã¦
+ ã„ãªã‹ã£ãŸï¼Ž
+
+ * object.c (true_type): TRUE/FALSEã«typeを実装.
+
+ * parse.y (read_escape): 3文字以内ã®octalã«å¯¾å¿œ(\0ã¨ã‹)
+
+Fri Jul 26 00:31:45 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * array.c (ary_reverse_bang): in-placeã§é…列をå転ã•ã›ã‚‹
+ (ary_sort_bang): in-placeã§sortã™ã‚‹
+ (ary_sort): sortã—ãŸé…列を返ã™ã‚ˆã†ã«
+ (ary_delete_at): 指定ã—ãŸä½ç½®ã®è¦ç´ ã‚’削除ã™ã‚‹
+
+ * eval.c (rb_call): stackæ·±ã•ãƒã‚§ãƒƒã‚¯ã‚’毎回ã¯è¡Œã‚ãªã„よã†ã«
+
+ * error.c (Warning): 実行中ã®warningãŒè¡¨ç¤ºã•れã¦ã„ãªã‹ã£ãŸ
+
+ * eval.c (compile): 例外発生を分離.
+
+ * eval.c (f_eval): 変数rb_in_evalã‚’æ­£ã—ã管ç†ã™ã‚‹ã‚ˆã†ã«
+
+ * ext/dbm/dbm.c (fdbm_store): æ ¼ç´ã™ã‚‹keyを文字列ã«å¤‰æ›
+
+ * eval.c (rb_call): ç„¡é™å†å¸°ã®ãƒã‚§ãƒƒã‚¯ã‚’大域脱出を行ã†C methodã«ã‚‚
+ 対応ã•ã›ãŸï¼Žthreadã®stackæ·±ã•ãƒã‚§ãƒƒã‚¯ãƒ«ãƒ¼ãƒãƒ³ã‚’æµç”¨ï¼Ž
+
+ * parse.y (yylex): 第1引数ã®unary -/+ã®åˆ¤å®šãŒé–“é•ã£ã¦ã„ãŸï¼Ž
+
+ * parse.y (yylex): unary +ã§æ•°å­—を余計ã«èª­ã‚“ã§ã„ãŸ(ex. +5 -> 55)
+
+Thu Jul 25 12:15:04 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (yylex): 曖昧ã§ãªã„引数ã«å¯¾ã—ã¦è­¦å‘Šã‚’出ã—ã¦ã„ãŸï¼Ž
+
+ * eval.c (iterator_p): 引数ã§å‘¼ã‚“ã§ã‚‚æ­£ã—ã„çµæžœã‚’è¿”ã™ã‚ˆã†ã«ï¼Ž
+
+ * parse.y: break/next/redo/retryã®ãƒ¡ã‚½ãƒƒãƒ‰åŒ–.
+
+ * sample/ruby-mode.el (ruby-calculate-indent): nestã®ãƒã‚§ãƒƒã‚¯ãƒŸã‚¹
+
+ * sample/ruby-mode.el (ruby-parse-region): 予約語ã®ãƒã‚§ãƒƒã‚¯ã‚’強化
+
+ * parse.y (primary): unless/untilã®å¾©æ´»
+
+Tue Jul 23 18:50:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * array.c (Array#empty?), Hash.c (Hash#empty?), ext/dbm/dbm.c (DBM#empty?):
+ 空ã®åˆ¤å®šè¿°èªž
+
+ * eval.c (f_unless): ifã®é€†ã‚’ã™ã‚‹ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿
+
+ * eval.c (f_until): whileã®é€†ã‚’ã™ã‚‹ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿
+
+ * parse.y: notã®å„ªå…ˆé †ä½ã‚’and/orより高ã
+
+ * parse.y (expr): `!'を引数括弧をçœç•¥ã—ãŸcallã§ã‚‚有効ã«
+
+Mon Jul 22 10:15:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99-960722
+
+ * array.c (ary_print_on): OFSã®NILãƒã‚§ãƒƒã‚¯ãŒä¸å®Œå…¨
+
+ * ruby.c (load_file): 標準入力ã‹ã‚‰ã®ã‚¹ã‚¯ãƒªãƒ—トãŒç©ºã®æ™‚ã«å¯¾å¿œï¼Ž
+
+ * ruby.c (proc_options): -wã§ã¯å¼•æ•°ç„¡ã—ã®æ™‚ã«ã¯æ¨™æº–入力ã‹ã‚‰ã‚¹ã‚¯ãƒª
+ プトをã¨ã‚‹(-vã§ã¯ãŸã‚“ã«çµ‚了ã™ã‚‹).
+
+ * array.c (ary_compact): nilã®è¦ç´ ã‚’å–り除ãメソッド
+
+ * array.c (ary_nitems): nilã§ãªã„è¦ç´ ã‚’æ•°ãˆã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
+
+Sun Jul 20 00:51:53 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.c (proc_options): -w optionを追加
+
+ * parse.y: {}ãŒé–‰ã˜ã¦ã„ãªã„時ã«ã¯å±•é–‹ã—ãªã„文字列を
+
+Fri Jul 19 16:16:05 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99-960719
+
+ * lib/find.rb: 石塚版(pruneã®æ‹¡å¼µä»˜ã)
+
+ * file.c (test_l): lstatã§èª¿ã¹ãªã„ã¨ã­ï¼Ž
+
+ * eval.c (f_throw): 第2引数をçœç•¥å¯èƒ½ã«ï¼Ž
+
+ * parse.y (str_extend): {}ã®ãƒã‚¹ãƒˆã«å¯¾å¿œ
+
+Thu Jul 18 18:25:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99-960718
+
+ * parse.y (str_extend): 文字列中ã®å¼å±•é–‹ã« \" ' ` / ã‚’å«ã‚€äº‹ãŒã§ã
+ るよã†ã«ï¼Ž
+
+Tue Jul 16 15:55:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el (ruby-parse-region): æ­£è¦è¡¨ç¾å†…ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—
+ ã«å¯¾å¿œ
+
+ * version 0.99-960716
+
+Fri Jul 12 10:06:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * io.c (f_select): 引数ã®close check.
+
+ * ruby.c (load_file): #!行ã®å¼•æ•°ãƒã‚§ãƒƒã‚¯ã‚’第1引数ã«é™å®š(実をã„ã†ã¨
+ DOS改行対策)
+
+Wed Jul 10 17:18:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99-960710
+
+ * time.c (time_s_timegm/time_s_timelocal): 時間を生æˆã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
+
+Mon Jun 17 15:59:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99-960617
+
+ * parse.y (yyerror): エラー表示ã®ç°¡ç•¥åŒ–.
+
+Wed Jun 12 14:11:01 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * signal.c (rb_trap_exit): trap 0ã¯threadを生æˆã›ãšã«å‡¦ç†ã™ã‚‹ï¼Ž
+
+Fri Jun 7 10:17:01 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * array.c/hash.c (indexes): é…列1引数ã®ãƒ‘ターンを無ãã—ãŸï¼Žé…列ã®
+ å ´åˆã¯`*ary'を使ã£ã¦ã‚‚らãŠã†ï¼Ž
+
+ * eval.c (thread_wait_threads): main_threadãŒçµ‚了ã™ã‚‹å‰ã«ä»–ã®
+ threadã‚’å¾…ã¤(強制的ã«ã¯çµ‚了ã•ã›ãªã„).
+ (ruby_run): ä»–ã®threadã‚’å¾…ã£ã¦ã„ã‚‹é–“ã«ã‚·ã‚°ãƒŠãƒ«ãŒæ¥ãŸã‚‰ï¼Œå…¨thread
+ を強制終了ã•ã›ã‚‹ï¼Ž
+
+ * eval.c (rb_fail): メソッドåã‚’`$!'ã«åŸ‹ã‚込む.
+
+ * eval.c (thread_create): main_threadã®ã‚³ãƒ³ãƒ†ã‚¯ã‚¹ãƒˆãŒã‚»ãƒ¼ãƒ–ã•れãª
+ ã„å ´åˆãŒã‚ã£ãŸï¼Ž
+
+ * process.c (f_sleep): 時間を指定ã›ãšï¼ŒthreadãŒã²ã¨ã¤ã—ã‹ãªã„状æ³
+ ã«ã‚‚対応.
+
+ * eval.c (thread_create): create後,fnを呼ã³å‡ºã™å‰ã«context switch
+ ãŒèµ·ãã‚‹ã¨é•ã†contextã§fnãŒå®Ÿè¡Œã•れã¦ã—ã¾ã†ãƒã‚°ï¼Ž
+
+Mon Jun 3 08:03:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * struct.c (struct_s_def): メンãƒã®æŒ‡å®šã‚’文字列,シンボル(FIXNUM)
+ åŒæ–¹ã§å¯èƒ½ã«ã—ãŸï¼Ž
+
+ * ext/etc/etc.c (Init_etc): 構造体オブジェクトをGCã‹ã‚‰ä¿è­·ã—ãŸï¼Ž
+
+ * error.c (rb_sys_fail): nil/FALSEを引数ã¨ã—ã¦å—ã‘付ã‘るよã†ã«ï¼Ž
+
+Thu May 30 16:19:08 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_select): EINTRã«å¯¾å¿œï¼Ž
+
+Wed May 29 11:04:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (f_catch): catch/throwを実装ã—ãŸï¼Ž
+
+Tue May 28 13:30:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99-960528
+
+ * eval.c (thread_cleanup): main threadãŒçµ‚了ã™ã‚‹ã¨ä»–ã®threadも終了
+ ã™ã‚‹ã“ã¨ã®æ˜Žç¢ºåŒ–.
+
+ * signal.c (trap): SIGINTã®ãƒ‡ãƒ•ォルトã®è¨­å®šãƒŸã‚¹(本当ã«SIG_DFLã§ã¯
+ ã¾ãšã‹ã£ãŸ).rubyã§ã¯ã¡ã‚ƒã‚“ã¨ãƒãƒ³ãƒ‰ãƒ«ã—ãªã„ã¨ï¼Ž
+
+ * eval.c (thread_interrupt): SIGINTã¯main_threadã«ä¾‹å¤–を発生ã•ã›ã‚‹
+ よã†ã«ï¼Ž
+
+Mon May 27 15:13:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_status): threadã®çŠ¶æ…‹ã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ï¼Žthreadã®çµ‚了
+ ã‚’å¾…ãŸãªã„.
+
+ * eval.c (thread_value): 一種ã®promiseを実装ã™ã‚‹ãŸã‚ã®ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž
+
+ * eval.c (thread_join): å¾…ã£ã¦ã„ã‚‹threadãŒä¾‹å¤–ã‚’èµ·ã“ã—ãŸæ™‚ã«ã¯ï¼Œ
+ joinãŒãã®ä¾‹å¤–を発生ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * eval.c (thread_create): threadã§ã®ä¾‹å¤–ã‚’propagateã—ãªã„よã†ã«ï¼Ž
+
+Fri May 24 10:47:53 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * enum.c (Init_Enumerable): `size' as alias to the `length'
+
+ * eval.c (thread_save_context): `$@', `$!'をスレッド毎ã«ã‚»ãƒ¼ãƒ–.
+
+ * eval.c (superclass): エラー表示をより親切ã«ï¼Ž
+
+Thu May 23 10:38:41 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.99-960523
+
+ * eval.c (superclass): エラー時ã«ã‚¹ãƒ¼ãƒ‘ークラスåã‚’(分ã‹ã‚Œã°)表示
+ ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+Wed May 22 19:48:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (superclass): ã‚¹ãƒ¼ãƒ‘ãƒ¼ã‚¯ãƒ©ã‚¹ã®æŒ‡å®šå­ã‚’`:'ã‹ã‚‰`<'ã«å¤‰æ›´ï¼Ž
+
+Tue May 21 09:27:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * lib/thread.rb: threadをサãƒãƒ¼ãƒˆã™ã‚‹ã‚¯ãƒ©ã‚¹(Mutex, Queue).
+
+Mon May 20 09:39:49 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * time.c (time_cmp): æµ®å‹•å°æ•°ç‚¹æ•°ã‚‚扱ãˆã‚‹ã‚ˆã†ã«ï¼Ž
+ (time_minus): Time - TimeãŒæµ®å‹•å°æ•°ç‚¹æ•°ã‚’è¿”ã™ã‚ˆã†ã«ï¼Ž
+
+Fri May 17 15:40:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * process.c (rb_proc_exec): Thread対応時ã«execã®ç›´å‰ã«
+ ITIMER_VIRTUALをリセットã™ã‚‹ï¼Ž
+
+Tue May 14 02:12:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * signal.c (sighandle): SIGINTã«å¯¾ã—ã¦ãƒ‡ãƒ•ォルトã§ä¾‹å¤–を発生ã•ã›ã‚‹
+ ã®ã‚’ã‚„ã‚,status 130ã§exitã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž
+
+ * eval.c (thread_schedule): Threadã®ãƒã‚°ã¯ã»ã¨ã‚“ã©ã¨ã‚ŒãŸã‚ˆã†ã ï¼Ž
+
+Fri May 10 11:21:08 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (thread_schedule): ユーザレベルThread機能.効率ã¯ã¨ã‚‚ã‹ã
+ ç§»æ¤æ€§ã¯ã‚る.今後,threadé–“ã®é€šä¿¡æ©Ÿèƒ½ã‚’実装ã™ã‚‹äºˆå®šï¼Ž
+
+Thu May 2 21:22:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * time.c (time_timeval): struct timevalを直接返ã™ã‚ˆã†ã«(static変数
+ を使ã‚ãªã„).
+
+Wed May 1 17:27:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * process.c (f_sleep): 整数以外ã®timeを指定ã§ãるよã†ã«ï¼Ž
+
+Thu Apr 25 08:19:15 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c (file_s_dirname): ファイルåãŒ"/"ã‚’å«ã¾ãªã„時,"."ã‚’è¿”ã™
+ よã†ã«(GNU dirnameã®ä»•様).
+
+ * file.c (file_s_basename): ã¾ã nilã¨0ã‚’æ··åŒã—ã¦ã„ã‚‹ã‚½ãƒ¼ã‚¹ãŒæ®‹ã£ã¦
+ ã„ãŸï¼Ž
+
+ * parse.y (exprs): エラーリカãƒãƒªã‚’追加.
+
+Wed Apr 24 15:51:05 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_chop_bang): CRLFã®å ´åˆ2 bytesã‚’chop!ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * ext/socket/socket.c (tcp_svr_s_open): ã¾ã nilã¨0ã‚’æ··åŒã—ã¦ã„るソー
+ ã‚¹ãŒæ®‹ã£ã¦ã„ãŸï¼Ž
+
+Tue Apr 23 18:14:25 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * pack.c (pack_pack): "A/a"ã®ãƒã‚°ï¼Žä½™è¨ˆãªpaddingãŒå…¥ã£ã¦ã„ãŸï¼Ž
+
+Thu Apr 18 13:02:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * configure.in: アーキテクãƒãƒ£ä¾å­˜éƒ¨ã‚’別ディレクトリã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«
+ ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * parse.y (yyerror): エラー発生時ã«ã‚¨ãƒ©ãƒ¼è¡Œã¨ãã®ä½ç½®ã‚’表示ã™ã‚‹ã‚ˆ
+ ã†ã«ï¼Ž
+
+Wed Apr 17 14:22:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * defines.h: SAFE_SIGHANDLEã‚’ç„¡ãã—,å±é™ºãªé¸æŠžã¯ã§ããªã„よã†ã«ï¼Ž
+
+ * io.c (io_ungetc): 新機能.
+
+ * ruby.c (load_file): ファイルã‹ã‚‰ã®èª­ã¿è¾¼ã¿æ–¹å¼ãŒå¤‰ã‚ã£ãŸã®ã«å¯¾å¿œï¼Ž
+
+ * parse.y (compile_file): ファイルã‹ã‚‰ã®å…¥åŠ›ã‚’ä¸€åº¦å…¨éƒ¨èª­ã¿è¾¼ã‚€ã®ã‚’
+ æ­¢ã‚ã¦ï¼Œgetsを使ã†ã“ã¨ã«ã—ãŸï¼Ž
+
+Wed Apr 10 17:40:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.98
+
+Tue Apr 9 09:54:30 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (iter_block): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯ã®æŒ‡å®šã‚’メソッド呼ã³å‡ºã—
+ ã«é™å®šï¼Žæ–‡æ³•ã®æ˜Žç¢ºåŒ–.
+
+ * eval.c (rb_eval): æ¡ä»¶å¼ã®æ­£è¦è¡¨ç¾ã®æ¯”較をinline化.
+
+ * eval.c (rb_eval): defined? 㮠定義情報(種別)を文字列ã§è¿”ã™ï¼Ž
+
+ * node.h: NODE_BEGIN -> NODE_RESCUE, NODE_ENSUREã«åˆ†é›¢ï¼Ž
+
+ * eval.c (rb_eval): option -n/-pã®ãƒˆãƒƒãƒ—レベルループã®inline展開.
+
+ * parse.y (cond0): æ¡ä»¶å¼ä¸­ã®æ–‡å­—åˆ—ã¯æ¯”較ã®å¯¾è±¡ã¨ã—ãªã„
+
+Wed Mar 27 12:33:54 1996 Tairo Nomura <tairo@hucom.tp.titech.ac.jp>
+
+ * defines.h: NeXT対応
+
+Wed Mar 27 10:02:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y: 予約語ã®å¤‰æ›´ continue -> next
+
+Mon Mar 25 07:34:37 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (parse_regx): o(once)オプションを追加.
+
+Fri Mar 22 14:25:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.97d
+
+ * eval.c (dyna_var_defined): 動的ローカル変数ã®å®šç¾©ãƒã‚§ãƒƒã‚¯ç”¨ãƒ«ãƒ¼
+ ãƒãƒ³ï¼Ž
+
+ * parse.y (gettable): eval()ã®ä¸­ã§ã®å‹•的ローカル変数(æ—¢ã«å€¤ã‚’æŒã£
+ ã¦ã„ã‚‹ã‚‚ã®)ã®æ¤œå‡ºã«å¤±æ•—ã—ã¦ã„ãŸï¼Ž
+
+Tue Mar 19 10:46:47 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.97c
+
+ * re.c (reg_s_new): compile時ã«segmentation fault.
+
+ * parse.y (str_extend): ã„ã¤ã‚‚evalã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+Wed Mar 13 11:00:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (str_extend): 文字列中ã®å¼å±•é–‹ã®ä¸å‚™ã‚’ç„¡ãã—ãŸï¼Ž
+
+ * parse.y: 下手ãªã‚¨ãƒ©ãƒ¼ãƒªã‚«ãƒãƒªã‚’外ã—ãŸï¼Ž
+
+Tue Mar 12 12:30:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rescue): é–“é•ã£ã¦ensureã§ã‚‚ä¾‹å¤–ã‚’æ•æ‰ã—ã¦ã„ãŸï¼Ž
+
+Wed Mar 6 12:11:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (var_extend): 変数展開"#{}"ã§ï¼Œä»»æ„ã®å¼ã‚’書ã‘るよã†ã«ã—
+ ãŸï¼Œã“れã§ã€Œå¤‰æ•°ã€å±•é–‹ã§ã¯ç„¡ããªã£ã¡ã‚ƒã£ãŸãªã‚.
+
+ * regex.c (init_syntax_once): `_'ã‚’wordã«è¿½åŠ ï¼Ž
+
+ * regex.c (re_compile_pattern): `\w',`\W'ã®åˆ¤å®šã‚’syntax tableを使
+ ã†ã‚ˆã†ã«ï¼Ž
+
+Tue Feb 27 10:15:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * object.c (obj_inspect): 表示ã™ã‚‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ãŒç„¡ã„時ã«ã¯ï¼Œ
+ to_sを使ã†ï¼Ž
+
+ * configure.in: dlnã®æ¤œå‡ºã‚’自動的ã«ï¼Ž
+
+Mon Feb 26 19:55:33 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.c (readin): read(2)ã§ä¸€åº¦ã«ãƒ•ァイルãŒèª­ã¿è¾¼ã‚ãªã„å ´åˆã«å¯¾å¿œï¼Ž
+
+Sat Feb 24 14:47:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.97b
+
+Fri Feb 23 11:26:02 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * class.c (rb_define_module): C言語ã§å®šç¾©ã•れãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®PATHã®
+ 設定忘れ.文字列化ã§core dump.
+
+ * eval.c (mod_include): 戻り値をnilã«ï¼Ž
+
+ * version 0.97a
+
+Thu Feb 22 21:03:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * array.c (ary_times): 「é…列*文字列ã€ãŒjoinã¨åŒã˜åƒãã‚’ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+Wed Feb 21 11:18:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * configure.in : fileCountをcache.
+
+ * configure.in : Linuxã§ELFç’°å¢ƒã‚’è‡ªå‹•çš„ã«æ¤œå‡ºã§ãるよã†ï¼Ž
+
+Tue Feb 20 11:18:09 1996 Mitsuhide Satou <mit-sato@aries.bekkoame.or.jp>
+
+ * FreeBSD dynamic link対応.
+
+Fri Feb 16 08:50:01 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * object.c (obj_inspect): インスタンス変数をæŒãŸãªã„オブジェクトも
+ æ­£ã—ã表示ã•れるよã†ã«ï¼Ž
+
+Wed Feb 14 16:56:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_eval): æ¡ä»¶å¼ã®`2..2'ãªã©å·¦è¾ºæˆç«‹ç›´å¾Œã«å³è¾ºãŒæˆç«‹ã™ã‚‹
+ パターンã«ãƒã‚°ï¼Ž
+
+Tue Feb 13 18:22:22 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.97
+
+Fri Feb 9 21:32:55 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * lib/tkscrollbox.rb: スクロールã§tclã®è¨­å®šã‚’行ã„,ruby<->wishã®ä¸
+ è¦ãªé€šä¿¡ã‚’ç„¡ãã—ãŸï¼Ž
+
+Wed Feb 7 10:26:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_aref): indexã‚’unsigned intã§ã¨ã£ã¦ã„ãŸï¼Ž
+
+ * string.c (str_aref): 範囲外ã®indexã«å¯¾ã—ã¦nilã‚’è¿”ã™ï¼Ž
+
+ * parse.y (special_local_set): `$_'ãŒå®£è¨€ç„¡ã—ã«ä½¿ã‚れãŸå ´åˆã«å¯¾å¿œï¼Ž
+ 関数をvariable.cã‹ã‚‰ç§»å‹•.
+
+ * string.c (str_sub): ç½®æ›é–‹å§‹ä½ç½®ãŒé–“é•ã£ã¦ã„ãŸï¼Ž
+
+Tue Feb 6 16:17:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el (ruby-parse-region): コメントã®èª­ã¿é£›ã°ã—ã®
+ ãƒã‚°ï¼Ž
+
+Fri Feb 2 18:35:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * variable.c (lastline_get): `$_'ã‚’`$~'ã¨åŒã˜ã‚ˆã†ã«SCOPEローカルãª
+ 変数ã«ã—ãŸï¼Ž
+
+Thu Feb 1 14:14:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c: statã®cacheã‚’ã‚„ã‚ãŸï¼Ž
+
+Wed Jan 31 07:13:08 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (proc_s_new): procã®ä¸­ã§yieldを呼ã°ã‚ŒãŸæ™‚ã«core dumpã—ã¦
+ ã„ãŸï¼Žã¨ã‚Šã‚ãˆãšä¾‹å¤–を発生ã•ã›ã‚‹ï¼Ž
+
+ * variable.c (rb_class2path): singleton classã«å¯¾å¿œï¼Ž
+
+ * ext/etc/etc.c (Init_etc): struct_defineã®ã‚¿ãƒ¼ãƒŸãƒãƒ¼ã‚¿ãŒnilã ã£ãŸ
+ (0ã§ãªã‘れã°ãªã‚‰ãªã„).
+
+ * ext/marshal/marshal.c: TRUE/FALSEã‚’åã出ã›ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * eval.c (rb_get_method_body): キャッシュã®alias対応,ã„ã¾ã¾ã§ã¯
+ aliasã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã«å…¥ã£ã¦ã„ãªã‹ã£ãŸï¼Ž
+
+Tue Jan 30 09:55:13 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_eval): NODE_BLOCK - tail recursive(ã¨ã„ã†ã»ã©ã§ã‚‚ãªã„
+ ãŒ).
+
+ * io.c (io_pipe): pipe(2)を実装ã—ãŸï¼Ž
+
+ * eval.c (rb_eval): Qselfã‚’ãªãã—ãŸï¼Žthread対応ã¸ã®ç¬¬ä¸€æ­©ï¼Žå…ˆã¯é 
+ ã„ãŒâ€¦ï¼Ž
+
+ * eval.c (proc_call): procã®ä¸­ã§ã®returnã¯procã®çµ‚了をæ„味ã™ã‚‹ã‚ˆã†
+ ã«ï¼ŽãŸã ã—,procã‹ã‚‰ã®yieldã®ä¸­ã§ã®returnã¯ä¾‹å¤–を発生ã™ã‚‹ï¼Ž
+
+Wed Jan 24 11:33:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.96a
+
+ * dir.c (dir_each): `$_'ã®å€¤ã‚’変更ã™ã‚‹ã®ã‚’ã‚„ã‚ãŸï¼Ž
+
+ * io.c (f_readlines): nilã¨FALSEã®åˆ†é›¢ã®ã‚ãŠã‚Šã§ç„¡é™ãƒ«ãƒ¼ãƒ—ã«è½ã¡ã¦
+ ã„ãŸï¼Ž
+
+ * ruby.c (ruby_options): $0ã®è¨­å®šãƒŸã‚¹ï¼Ž
+
+Tue Jan 23 15:28:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_eval): ``ã¯æ–‡å­—列を引数ã¨ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰(`)呼ã³å‡ºã—ã®ã‚·
+ ンタックスシュガーã§ã‚ã‚‹ã¨ã—ãŸï¼Ž
+
+ * ruby.c (addpath): `-I'オプションã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒã€Œå‰ã«ã€è¿½åŠ ã•れ
+ るよã†ã«å¤‰æ›´ï¼Ž
+
+Fri Jan 19 11:23:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * dln.c (load_1): N_INDR対応(出æ¥ãŸã‚ˆã†ãªæ°—ãŒã™ã‚‹).
+
+Thu Jan 18 18:14:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.texi: FALSEã¨nilã®åˆ†é›¢ã‚’åæ˜ ã—ãŸï¼Ž
+
+Tue Jan 16 17:39:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.96 - ã¨ã‚Šã‚ãˆãšnilã¨FALSEを区別ã™ã‚‹ç‰ˆ
+
+Wed Jan 10 15:31:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * re.c (reg_match): マッãƒã—ãªã‹ã£ãŸæ™‚ã®æˆ»ã‚Šå€¤ã¯FALSE.
+
+ * object.c (rb_equal): `0 == nil'ãŒTRUEã«ãªã‚‹ãƒã‚°ï¼Ž
+
+Tue Jan 9 00:44:58 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * nilã¨FALSEãŒåˆ†é›¢å¯èƒ½ã«å¤‰æ›´ï¼Ž
+
+ * nilã¨FALSEã¨0ã®åŒºåˆ¥ã‚’厳密ã«ï¼Ž
+
+ * struct.c (struct_new): 引数を0ã§çµ‚ã‚‹å¿…è¦ãŒç„¡ããªã£ãŸï¼Ž
+
+ * object.c (inspect_i): オブジェクトã®ãƒã‚§ãƒƒã‚¯ã®ãƒã‚°(Fixnumã§core
+ dumpã—ã¦ã„ãŸ).
+
+ * range.c (range_to_s): Rangeã®è¡¨ç¤ºã‚’改善.
+
+ * object.c (true_inspect): TRUEã®è¡¨ç¤ºã‚’`TRUE'ã«ï¼Ž
+
+Mon Jan 8 15:02:33 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * numeric.c (fix_mul): divide by zero errorãŒç™ºç”Ÿã—ãŸ(オーãƒãƒ¼ãƒ•ロー
+ 検出ã®ãƒã‚°)
+
+ * texinfo.texをパッケージã«å«ã‚ãŸï¼Ž
+
+Sun Dec 31 00:08:49 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_eval): `::'ã§ã¯ï¼Œãã®ã‚¯ãƒ©ã‚¹ã§å®šç¾©ã•れãŸå®šæ•°ã‚’å‚ç…§ã™ã‚‹
+ よã†ã«å¤‰æ›´ï¼Ž
+
+ * string.c (Init_String): eachã‚’each_lineã«æˆ»ã—ãŸï¼Ž
+
+Thu Dec 28 12:31:55 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_eval): caseã®æ¼”ç®—å­ã‚’`=~'ã‹ã‚‰`==='ã«ï¼Ž
+
+ * variable.c (rb_const_set): クラス定数ã®å†å®šç¾©ã‚’許ã™(åŒã˜ã‚¯ãƒ©ã‚¹ã§
+ ã¯ä¸å¯).警告ã¯å‡ºã™ï¼Ž
+
+Wed Dec 27 13:27:52 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.95c
+
+ * ext/tkutil/tkutil.c: wishãŒã‚ã£ã¦ã‚‚ãªãã¦ã‚‚一応コンパイルã ã‘ã¯
+ ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * lib/tk.rb: 環境変数PATHã‹ã‚‰{wish|wish4.0}を探ã™ã‚ˆã†ã«ï¼Ž
+
+Tue Dec 26 01:03:42 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el (ruby-parse-region): æ­£è¦è¡¨ç¾ã®æ¤œå‡ºå¼·åŒ–.
+
+ * numeric.c (fix_mul): ä¹—ç®—ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ•ロー検出アルゴリズムã®ãƒã‚°ï¼Ž
+
+ * ext/extmk.rb.in: ./install-shを使ã†å ´åˆã®PATHを調整.
+
+ * Makefile.in (install): lib/*.rbを一ã¤ãšã¤ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ï¼Ž
+
+ * io.c (io_each_line): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã®æˆ»ã‚Šå€¤ã‚’nilã§çµ±ä¸€ï¼Ž
+
+Fri Dec 22 10:34:32 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.95b
+
+ * variable.c (f_untrace_var): 第2引数を指定ã™ã‚‹ã¨ç‰¹å®šã®traceを削除
+ ã§ãるよã†ã«ï¼Ž
+
+ * variable.c (f_trace_var): 第2引数ãŒnilã®æ™‚,traceを削除ã™ã‚‹ï¼Ž
+
+ * lib/tk.rb (file_readable/file_writable): 第2引数をnilã«ã™ã‚‹ã“ã¨
+ ã«ã‚ˆã‚‹event handlerã®å‰Šé™¤ï¼Ž
+
+ * parse.y (variable): ドキュメントã«`__FILE__'ã¨`__LINE__'ãŒæ®‹ã£ã¦
+ ã„ãŸï¼Ž`caller(0)'ã§ä»£ç”¨ã—ãŸã¯ãšã ã£ãŸã®ã«ï¼Ž
+
+ * eval.c (f_eval): $!ã®ãƒªã‚»ãƒƒãƒˆï¼Ž
+
+ * error.c (err_sprintf): 勿‰‹ã«"\n"を付加ã™ã‚‹ã®ã‚’æ­¢ã‚ãŸï¼Ž
+
+ * parse.y (f_arglist): 引数リスト直後ã®if/whileã®èª­ã¿é–“é•ã„.
+ lex_stateã®å€¤ãŒè¨­å®šã•れã¦ã„ãªã‹ã£ãŸï¼Ž
+
+Thu Dec 21 00:56:57 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.95a - ^^;;;
+
+ * lib/tkscrollbox.rb: パッケージã«å…¥ã£ã¦ãªã‹ã£ãŸï¼Ž
+
+ * configure.in: FILE structureã®ãƒã‚§ãƒƒã‚¯ã«ãƒã‚°ï¼Ž
+
+ * Makefile.in (clean): ext以下をinstallã—ã¦ã„ãŸï¼Ž
+
+ * ext/socket/extconf.rb: Solarisã«ãŠã‘ã‚‹-lnlsã®ãƒã‚§ãƒƒã‚¯ï¼Ž
+
+ * array.c (beg_len): ãƒã‚°ãŒã‚ã£ãŸâ€¦ï¼Žæ‚²ã—ã„.
+
+ * version 0.95 - fj.sourcesã«
+
+ * eval.c (rb_eval): rescueã®ãƒ­ã‚¸ãƒƒã‚¯ã‚’rb_rescue()ã«ä¸€å…ƒåŒ–.
+
+Wed Dec 20 19:30:58 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * Makefile.in: ä¸è¦ãªã‚³ãƒ³ãƒ‘イルã®å›žé¿(より完全ã«).
+
+ * class.c (singleton_class_new): `single'->`singleton'
+
+Tue Dec 19 07:14:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * io.c (closed?): IOãŒcloseã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’知る述語.
+
+ * parse.y (primary): 特異メソッドã®å¼•æ•°ã®lex_stateãŒä¸é©åˆ‡ï¼Ž
+
+ * lib/tk.rb: tcl->rubyã®å¤‰æ›é–¢æ•°ã®ç”¨æ„.
+
+ * ext/extmk.rb.in (install): installã®2é‡ã‚³ãƒ³ãƒ‘イルã®å›žé¿ï¼Ž
+
+ * array.c (range_beg_len): range指定ã®ä¸é©åˆ‡ãªã‚¨ãƒ©ãƒ¼ã‚’訂正.
+
+ * string.c (str_aref): range指定ã®ãƒã‚°ã‚’削除.
+
+ * lib/tk.rb (tk_split_list): Tclã®ãƒªã‚¹ãƒˆã«å¯¾å¿œï¼Ž
+
+Mon Dec 18 09:58:12 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.94
+
+ * dln.c (dln_load): HP対応(未確èª)
+
+ * eval.c (Init_Proc): Blockã‚’Procã«æ”¹å.
+
+Sat Dec 16 13:46:14 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_eval): retryã§ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã®å†å®Ÿè¡ŒãŒã§ãるよã†ã«ï¼Ž
+
+Fri Dec 15 17:14:30 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c: proc:lambdaã®è¦ªã—ã¿ã‚„ã™ã„別å
+
+Thu Dec 14 17:21:55 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (dyna_var_asgn): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯å†…ã§æœ€åˆã«åˆæœŸåŒ–ã•れãŸ
+ ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®æœ‰åŠ¹ç¯„å›²ã‚’ãã®ãƒ–ロック内ã«é™å®šï¼Žã“れã§lambdaã¨å‘¼ã¹
+ ãªã„ã“ã¨ã¯ãªã„.
+
+Wed Dec 13 02:30:58 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * gc.c: autoloadã®ãƒžãƒ¼ã‚¯ãƒŸã‚¹ï¼Ž
+
+ * lib/tk.rb: wishã‹ã‚‰ã®è¤‡æ•°è¡Œã®æˆ»ã‚Šå€¤ã«å¯¾å¿œ
+
+ * lib/tkcomposite.rb: 複åˆwidget
+
+ * variable.c (rb_class2path): ICLASSã«å¯¾å¿œã—ã¦ãªã‹ã£ãŸï¼Ž
+
+ * eval.c (ruby_run): exit(0)ã®ãƒã‚°
+
+Sat Dec 9 01:21:24 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/marshal/marshal.c (dumps|load): 文字列ã«å¯¾ã™ã‚‹å…¥å‡ºåŠ›ã‚’å¯èƒ½ã«
+ ã—ãŸ(ãŸã ã—実ã¯ãƒ•ァイル経由ãªã®ã ).
+
+Fri Dec 8 18:29:11 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/marshal/marshal.c: シンボルを一度ã ã‘åˆæœŸåŒ–ã™ã‚‹ï¼Ž
+
+Thu Dec 7 07:58:50 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (yylex): 第1å¼•æ•°ã®æ­£è¦è¡¨ç¾ã®èªè­˜ã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã£ãŸï¼ŽåŒæ™‚ã«
+ 状態数を減らã—ãŸï¼Ž
+
+ * string.c (str_sub): ç½®æ›ã§ã‚¹ã‚­ãƒƒãƒ—å¹…ãŒå¤§ãã™ãŽãŸï¼Ž
+
+Wed Dec 6 15:14:23 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_sub_method): sub/gsub(!ãªã—)ã¯ç½®æ›ãŒè¡Œãªã‚れãªã‹ã£
+ ãŸæ™‚,置æ›å‰ã®æ–‡å­—列を返ã™ï¼Ž
+
+Tue Dec 5 00:55:15 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (yylex): 括弧をçœç•¥ã—ãŸæ™‚ã®å¼•数展開ã®`*'ã«å¯¾å¿œï¼Ž
+
+ * eval.c (ruby_run): EXITãƒãƒ³ãƒ‰ãƒ©å†…ã§ã®ä¾‹å¤–ã«å¯¾å¿œï¼Ž
+
+ * bignum.c (big_cmp): Bignumã¨Fixnumã®æ¯”較ã§è½ã¡ã‚‹ï¼Ž
+
+Mon Dec 4 14:21:18 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (call_op): コンパイル時ã®å®šæ•°å¼ã®å±•é–‹ã‚’ã‚„ã‚ãŸï¼ŽåŠ´å¤šãã—
+ ã¦ç›Šå°‘ãªã„ã¨åˆ¤æ–­ã—ãŸã®ã§ï¼Ž
+
+Thu Nov 30 01:35:15 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * lib/tk.rb: {Radio,Check}Buttonã®variableã®å®Ÿè£….
+
+ * eval.c (rb_yield_0): Block.callãŒãƒã‚¹ãƒˆã—ãŸæ™‚ã®ãƒã‚°ï¼Ž
+
+ * io.c (f_select): 常ã«é…列3ã¤ã‚’ãµãã‚€é…列を返ã™ã‚ˆã†ã«
+
+ * lib/tk.rb: fileeventã‚’rubyå´ã§å®Ÿè£….
+
+Wed Nov 29 17:53:23 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * variable.c (rb_ivar_get): selfã‚’å¸¸ã«æŒ‡å®šã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+Tue Nov 14 00:07:29 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * lib/tk.rb: Tk4.0対応
+
+Mon Nov 13 16:23:32 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.93
+
+Thu Nov 9 23:26:01 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * gc.c (gc_mark): モジュールã®Mixinã®ãƒžãƒ¼ã‚¯å¿˜ã‚Œï¼Ž
+
+ * parse.y (f_arglist): メソッド定義ã®å¼•æ•°ã‚’æ‹¬å¼§ã§æ‹¬ã‚‰ãªãã¦ã‚‚良ã„
+ よã†ã«ã—ãŸï¼Ž
+
+Wed Nov 8 00:17:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_yield_0): æœªåˆæœŸåŒ–ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ãŒã‚ã£ãŸï¼Ž
+
+ * eval.c (rb_eval): pendig signalã®ãƒã‚§ãƒƒã‚¯ã‚’eval実行後ã«è¡Œã†ã‚ˆã†
+ ã«ã—ãŸï¼Žã§ãªã„ã¨ã‚·ã‚°ãƒŠãƒ«ã®ç™ºç”Ÿã¨æ¤œå‡ºãŒé ã離れã¦ã—ã¾ã†äº‹ãŒã‚る.
+
+ * parse.y: classæ–‡ã®superclass部を定数ã‹ã‚‰å¼ã«æ‹¡å¼µã—ãŸï¼Ž
+
+ * lib/tk.rb: Tkã®ã»ã¼å…¨ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚¯ãƒ©ã‚¹ã«å¯¾å¿œï¼Žã‚­ãƒ£ãƒ³ãƒã‚¹ã¨ãƒ†ã‚­ã‚¹
+ ト上ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæ®‹ã£ã¦ã„る.
+
+Tue Nov 7 08:18:37 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * signal.c (trap): ブロックを指定ã§ãるよã†ã«ï¼Ž
+
+Mon Nov 6 16:44:00 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (f_caller): å‘¼å‡ºå…ƒã®æƒ…報を得る.
+
+ * ext/tkutil/tkutil.c: wishã®stderr出力を監視ã™ã‚‹ã“ã¨ã§ï¼Œã‚¨ãƒ©ãƒ¼å‡¦
+ ç†ã‚’行ã†ï¼Ž
+
+ * ext/tkutil/tkutil.c: wishã¨ã®é€šä¿¡éƒ¨ã‚’Cã§è¨˜è¿°ï¼Ž
+
+Sat Nov 4 01:12:59 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el (ruby-calculate-indent): インデントã®è¨ˆç®—ã‚’
+ ã‚‚ã†å°‘ã—スマートã«ã—ãŸ(æ­£è¦è¡¨ç¾ã®ãƒã‚§ãƒƒã‚¯ï¼Œç¶™ç¶šè¡Œã®ãƒã‚§ãƒƒã‚¯).
+
+ * eval.c (rb_call): ç„¡é™å†å¸°ã‚’é¿ã‘ã‚‹ãŸã‚,関数ã®ãƒã‚¹ãƒˆãƒ¬ãƒ™ãƒ«ã®åˆ¶é™
+ を行ãªã†ï¼Ž
+
+ * lib/tk.rb: Tkインターフェース.ã¾ã ä¸å®Œå…¨ã ãŒï¼Ž
+
+ * eval.c (rb_yield_0): 空ã®Blockã®ãƒã‚°ï¼Ž
+
+ * sample/ruby-mode.el (ruby-calculate-indent): è¡Œæœ«ã®æ¼”ç®—å­ã«ã‚ˆã‚‹
+ 行継続ã«å¯¾å¿œï¼Ž
+
+Fri Nov 3 12:56:21 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_call): 本体ãŒç©ºã®é–¢æ•°ã®å®Ÿè¡Œã«ãƒã‚°ï¼Ž
+
+ * parse.y (var_extend): æ–‡å­—åˆ—ã®æœ«å°¾ã®å¤‰æ•°å±•é–‹ã®ãƒã‚°ï¼Ž
+
+ * variable.c (rb_gvar_set): traceã®è©•価時ã«ã«å¤‰æ•°å€¤ã‚’与ãˆã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * eval.c (f_require): ruby scriptã®requireã«bug.
+
+ * variable.c (rb_const_get): モジュールã®include対策.
+
+Thu Oct 19 13:56:06 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * dln.c (dln_load): HP対応ã§ã®typo.
+
+Wed Oct 18 17:39:39 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.92
+
+ * object.c (krn_type): オブジェクトã®å‹•çš„ãªåž‹ã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž
+
+Tue Oct 17 00:48:18 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.c (proc_options): -X オプション.chdirã ã‘を行ã†ï¼Ž
+
+ * re.c (reg_search): 漢字コードを途中ã§å¤‰æ›´ã§ãるよã†ã«ï¼Žã‚³ãƒ³ãƒ‘イ
+ ル時ã®ã‚³ãƒ¼ãƒ‰ãŒå¤‰æ›´ã•ã‚ŒãŸæ™‚ã«ã¯ãƒžãƒƒãƒã®ç›´å‰ã«æ­£è¦è¡¨ç¾ã®å†ã‚³ãƒ³ãƒ‘イ
+ ルを行ã†ï¼Žå®šæ•°KCODEã‹ã‚‰å¤‰æ•°$KCODEã¸ï¼Ž
+
+ * parse.y: ()ã®ãªã‹ã«compexprを許ã™ï¼Ž
+
+ * re.c (reg_search): メモリリークを直ã—ãŸï¼Ž
+
+Fri Oct 13 13:19:19 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (str_sub): 文字列置æ›ã«ãƒã‚°ï¼Ž
+
+ * string.c (str_strip_bang): 文字列ã®å¾Œã‚ã®é•·ã•ã®èª¿æ•´ãŒè¡Œã‚れã¦ã„
+ ãªã‹ã£ãŸï¼Ž
+
+ * re.c (reg_search): $&, $1...ã¯ãƒ­ãƒ¼ã‚«ãƒ«ã«æŸç¸›ã™ã‚‹ã‚ˆã†ã«ãªã£ãŸï¼Žå‘¼
+ ã³å‡ºã—ãŸãƒ¡ã‚½ãƒƒãƒ‰ã§ã®ãƒžãƒƒãƒã¯ç¾ã‚¹ã‚³ãƒ¼ãƒ—ã®$&ãªã©ã®å€¤ã«å½±éŸ¿ã—ãªã„.
+ マッãƒã®æƒ…報をスコープ外ã§å¾—ãŸã„ã¨ãã«ã¯$~を使ã£ã¦æŸç¸›æƒ…報をæŒã¡
+ 出ã™å¿…è¦ãŒã‚る.
+
+Thu Oct 12 00:33:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * re.c (reg_search): String:split, String:indexã§ã¯$&, $1...ãŒå¤‰åŒ–
+ ã—ãªã„よã†ã«ã—ãŸï¼Ž
+
+ * io.c (rb_str_setter): setterã®ä»•様ãŒå¤‰æ›´ã«ãªã£ã¦ã„ãŸï¼Ž
+
+ * variable.c (f_trace_var): 第2引数をçœç•¥ã—ã¦ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã¨ã—ã¦å‘¼ã¹
+ るよã†ã«ï¼Ž
+
+Wed Oct 11 11:50:59 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.91
+
+ * variable.c (var_setter): 引数ãŒé–“é•ã£ã¦ã„ãŸï¼Žè‡´å‘½çš„ãƒã‚°ï¼Ž
+
+ * io.c (pipe_open): $stderrã®å€¤ãŒå¤‰æ›´ã•れã¦ã„る時ã«ã¯ãã¡ã‚‰ã‚’
+ å­ãƒ—ロセスã®stderrã«è¨­å®šã™ã‚‹ï¼Ž
+
+Mon Oct 9 13:06:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * object.c (mod_to_s): モジュール内ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯`::'を使ã£ãŸè¡¨ç¾
+ ã§è¡¨ç¤ºã•れるよã†ã«ï¼Ž
+
+ * variable.c (rb_gvar_set): 代入ã«ã‚ˆã‚‹ãƒ«ãƒ¼ãƒ—ãŒç™ºç”Ÿã—ãªã„よã†ã«ï¼Œ
+ trace内ã§ã®ä»£å…¥ã§ã¯traceを評価ã—ãªã„.
+
+ * struct.c (struct_equal): structã®equal判定ã«ã‚¯ãƒ©ã‚¹ã®ä¸€è‡´ã‚’å«ã‚ãŸï¼Ž
+
+Sat Oct 7 00:18:32 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_eval): defined?ã®æ©Ÿèƒ½ã‚’æ‹¡å¼µ(yieldã®ãƒã‚§ãƒƒã‚¯ï¼Œsuperã®
+ 存在ãªã©).
+
+Fri Oct 6 12:06:47 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.90
+
+ * st.c (st_foreach): è¦ç´ ã‚’削除ã—ãŸæ™‚ã«è¦ç´ æ•°ãŒå¤‰åŒ–ã—ã¦ã„ãªã‹ã£ãŸï¼Ž
+
+ * hash.c (hash_values): ãƒã‚°ä¿®æ­£ï¼Žkeysã‚’è¿”ã—ã¦ã„ãŸâ€¦ï¼Ž
+
+ * parse.y (call_op): defined? ã®å¼•æ•°ã§ã¯å®šæ•°ã®ç•³ã¿è¾¼ã¿ã‚’行ã‚ãªã„
+ (ãƒã‚§ãƒƒã‚¯ã™ã‚‹å‰ã«ã‚³ãƒ³ãƒ‘イルエラーã«ãªã£ã¦ã¯å›°ã‚‹).
+
+ * スコープ生æˆã®ä¸€éƒ¨è¦‹ç›´ã—.
+
+Thu Oct 5 00:29:43 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * 関数ã¨ã‚¯ãƒ©ã‚¹ã®å‘½åè¦å‰‡ã‚’変更ã—ãŸï¼Žé–¢æ•°å,変数åã®å…¨é¢æ›¸ãæ›ãˆï¼Ž
+
+ * gc.c (looks_pointerp): ヒープãƒã‚§ãƒƒã‚¯ã®é«˜é€ŸåŒ–.
+
+ * struct.c (Fstruct_aset): 構造体ã«å¯¾ã™ã‚‹`[]='.
+ (struct_set): 構造体メンãƒã«å¯¾ã™ã‚‹ä»£å…¥ï¼Ž
+
+Wed Oct 4 09:54:07 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.89
+
+ * eval.c (Frequire): ダイナミックロードã®ã‚¨ãƒ©ãƒ¼ãƒã‚§ãƒƒã‚¯ã‚’厳ã—ã.
+
+ * struct.c: structã®æ§‹é€ ã‚’å®Œå…¨ã«æ›¸ãæ›ãˆãŸï¼Žä»¥å‰ã¯é †åºä»˜ãã®
+ id->valueã®é€£æƒ³é…列ã§ã‚ã£ãŸãŒï¼Œä»Šåº¦ã¯æ§‹é€ ä½“æ¯Žã«æ–°ã—ã„クラスを生
+ æˆã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž
+
+ * parse.y: `::'ã®æ„味をAssocã®ç”Ÿæˆã‹ã‚‰ã‚¯ãƒ©ã‚¹(モジュール)内ã®å®šæ•°ã‚¢
+ クセスã¸å¤‰æ›´ï¼Ž
+
+ * assoc.c: ãªãã™ï¼Ž
+
+Tue Oct 3 13:31:08 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * variable.c (Ftrace_var): trace_var, 大域変数ã¸ã®æ›¸ãè¾¼ã¿hookを設
+ 定ã™ã‚‹ï¼Ž
+
+ * variable.c: global_entryã®æ§‹æˆã‚’æ›¸ãæ›ãˆãŸï¼Žã“れã§trace_varを実
+ 装ã§ãる.
+
+ * file.c (Ffile_stat): "&"ã§ç›´å‰ã®fstatã®çµæžœã‚‚å‚ç…§ã§ãるよã†ã«ï¼Ž
+
+Fri Sep 29 14:15:13 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.88
+
+ * dln.c (dln_load): AIXã¨HPã«å¯¾å¿œã—ãŸã‚³ãƒ¼ãƒ‰ã‚’入れãŸ(å‹•ä½œã¯æœªç¢ºèª).
+
+ * ext/extmk.rb.in: å¿…è¦ã«å¿œã˜ã¦ï¼Œå®šæ•°EXTLIBを定義ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * dln.c (dln_load): dlnç‹¬ç«‹ã«æ›¸ãæ›ãˆã‚‹ï¼Žå°†æ¥ã®æ‹¡å¼µç”¨ï¼Ž
+ (load_1): dln_a_outã«ãŠã„ã¦ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã§ãƒ©ã‚¤ãƒ–ラリを明示的ã«ãƒ­ãƒ¼
+ ドã™ã‚‹å¿…è¦ãŒãªã„よã†ã«å¤‰æ›´ã—ãŸï¼Ž
+
+Thu Sep 28 13:31:37 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/ruby-mode.el: ã‚‚ã£ã¨ã¾ã—ãªhilit19対応(æ­£è¦è¡¨ç¾).
+
+Wed Sep 27 04:12:44 1995 Takahasi Mamoru <taka@soum.co.jp>
+
+ * sample/test.rb: echoã§-nを使ã‚ãªã„よã†ã«(SysV対策).
+
+ * ext/extmk.rb.in: sub -> sub!
+
+Tue Sep 26 19:12:42 1995 Yasuo OHBA <jammy@csg.mes.co.jp>
+
+ * dln.c (dln_find_1): `.', `..'ã‹ã‚‰å§‹ã¾ã‚‹ãƒ‘スã«å¯¾å¿œã—ãŸ.
+
+Mon Sep 25 12:33:03 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.87
+
+Sat Sep 23 10:00:18 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (Fmod_modfunc): メソッドをprivateã«ã—ï¼ŒåŒæ™‚ã«ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰
+ も定義ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼Žãƒ‘ãƒƒã‚±ãƒ¼ã‚¸çš„ä½¿ã„æ–¹ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ç”¨ï¼Ž
+
+Fri Sep 22 11:02:44 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * lib/find.rb: findã‚’æä¾›ã™ã‚‹ãƒ©ã‚¤ãƒ–ラリ
+
+ * variable.c (rb_define_variable): hookã®è¨­å®šã‚’分離.
+ (add_hook): 1変数ã«å¯¾ã—ã¦è¤‡æ•°ã®hookを設定ã§ãるよã†ã«ï¼Ž
+
+Thu Sep 21 00:22:11 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (Fstr_frozen): æ–‡å­—åˆ—ãŒæ›´æ–°ä¸å¯ã‹ã©ã†ã‹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹è¿°
+ 語メソッド.
+
+ * hash.c (Fhash_aset): keyãŒæ–‡å­—åˆ—ã®æ™‚,キーã®å†…容ãŒå¤‰åŒ–ã—ãªã„よã†
+ ã«ï¼Œdupã—ã¦freezeã™ã‚‹ï¼Ž
+
+Wed Sep 20 16:12:44 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.86
+
+ * ext/extmk.rb.in (have_header): キャッシュã«ãƒã‚°ï¼Ž
+
+ * ext/extmk.rb.in (have_library): 引数ã®é †åºãŒå¤‰ã‚ã£ãŸï¼Ž
+
+Thu Sep 14 18:00:59 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * object.c (obj_is_instance_of): is_member_ofã‹ã‚‰å称変更.
+
+ Wed Sep 13 15:44:35 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (Fstr_tr_bang): ç¯„å›²å¤–ã®æ–‡å­—ã«å¯¾ã™ã‚‹å¤‰æ›ãƒã‚°ï¼Ž
+
+Tue Sep 12 14:27:58 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c (Sfile_expand_path): expand_file_name -> expand_pathã«å
+ 称変更.
+
+ * enum.c (Fenum_member): includes? -> member? ã«å称変更.
+
+ * string.c (Fstr_each_byte): Stringã¯ByteArrayã§ã‚ã‚‹ã¨ã„ã†åŸºæœ¬ã«æˆ»ã£
+ ã¦ï¼Œeachã®å®šç¾©ã‚’each_byteã«å¤‰æ›´ã—ãŸï¼Žä»Šã¾ã§ã®eachã¯each_lineã§ã‚¢
+ クセスã§ãる.
+
+Mon Sep 11 18:31:17 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c (cache_stat): ファイルåã¨ã—ã¦"&"を指定ã™ã‚‹ã¨ç›´å‰ã®
+ stat(2)ã®çµæžœã‚’å†åˆ©ç”¨ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+Fri Sep 8 14:18:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ruby.texi: `!', `?'ã«å¯¾å¿œã—ã¦ã‚¢ãƒƒãƒ—デート.
+
+ * parse.y: defined -> defined?
+
+ * file.c: FileOpã®ä¸€æ–‡å­—メソッドをãªãã™ï¼Žä¸€æ–‡å­—テストã¯testメソッ
+ ドã«ã¾ã‹ã›ã‚‹ï¼Ž
+
+ * parse.y (yylex): 変数åã®å¾Œã‚ã«`?'も許ã™ï¼Žè¿°èªžãƒ¡ã‚½ãƒƒãƒ‰ã®å¾Œã‚ã«
+ `?'を追加ã™ã‚‹ï¼Ž
+
+Thu Sep 7 20:01:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c: 文字列ã®ä¸­èº«ã‚’æ›´æ–°ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®åå‰ã®çµ‚りã«`!'を付加.
+ `!'ã®ç„¡ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚‚用æ„ã—ãŸï¼Ž
+
+ * parse.y: 変数åã®å¾Œã‚ã«`!'を許ã™ï¼Ž
+
+Wed Sep 6 14:12:19 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.85
+
+ * string.c (Fstr_dup): 文字列ã®è¤‡è£½ã‚’作る
+ (Fstr_freeze): æ–‡å­—åˆ—ã®æ›´æ–°ä¸å¯å±žæ€§ã‚’設定ã§ãるよã†ã«ï¼Ž
+ (Fsub/Fgsub): $_ã®å†…容をdupã—ã¦ã‹ã‚‰ç½®æ›ã‚’行ã†ã‚ˆã†ã«ï¼Ž
+
+ * ruby.h (CLONESETUP): flagsã®çŠ¶æ…‹ã‚‚ã‚³ãƒ”ãƒ¼
+
+Tue Sep 5 01:27:50 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * sample/test.rb: å¤±æ•—ã®æ¤œå‡ºã‚’厳ã—ã.
+
+Fri Aug 25 14:31:02 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * process.c (Ffork): イテレータã¨ã—ã¦ã‚‚動作ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * version 0.84
+
+ * signal.c (sig_beg): ãƒãƒ³ãƒ‰ãƒ©ãŒè¨­å®šã•れã¦ã„る時ã«ã¯å†è¨­å®šã—ãªã„.
+
+ * ext/extmk.rb.in (create_makefile): shared objectã®ãƒªãƒ³ã‚¯ã®éš›ã«
+ `-l'オプションを指定ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * signal.c (trap): `EXIT'ã§çµ‚了処ç†ã‚’行ã†è¨­å®šãŒå‡ºæ¥ã‚‹ï¼Ž
+
+Wed Aug 16 00:13:22 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * signal.c (sig_beg): デフォルトã§ã¯begin節ã®ä¸­ã§ã ã‘SIGINTã‚’æ•æ‰
+ ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ï¼Ž
+
+ * io.c (io_ctl): fcntlã‚’æŒãŸãªã„システムã«ã‚‚対応.
+
+ * å„ディレクトリã«åˆ†æ•£ã—ã¦ã„ãŸMANIFESTã‚’ã¾ã¨ã‚ãŸï¼Žæ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«æ¯Ž
+ ã«ã¯å¿…è¦ï¼Ž
+
+ * string.c (Sstr_new,str_sub,Fstr_crypt): å¼•æ•°ã‚’è‡ªå‹•çš„ã«æ–‡å­—列ã«å¤‰
+ æ›ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+Sat Aug 12 00:44:02 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * string.c (Fstr_crypt): PD cryptを用æ„ã—ãŸï¼Ž
+
+Fri Aug 11 14:37:03 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * assoc.c (Fassoc_clone): assocã‚‚cloneã§ãるよã†ã«ï¼Ž
+
+ * io.c: マクロREAD_DATA_PENDINGã®å®šç¾©ã‚’変更(Linux対応)
+
+ * io.c (io_fptr_finalize): fptrã®é–‹æ”¾æ™‚ã®å‡¦ç†ã‚’指定ã§ãるよã†ã«ï¼Ž
+
+Wed Aug 9 16:52:41 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * eval.c (rb_provided): 複数ã®featureをロードã™ã‚‹ã¨ç„¡é™ãƒ«ãƒ¼ãƒ—ã«è½
+ ã¡ã‚‹ã¨ã„ã†å˜ç´”ãª(ã—ã‹ã—凶悪ãª)ミス.
+
+ * ext/extmk.rb.in (install): dlopen対応を行ã£ãŸï¼Žä»Šã¾ã§dlnã«ã—ã‹å
+ 分ã«å¯¾å¿œã—ã¦ã„ãªã‹ã£ãŸï¼Ž
+
+Tue Aug 8 14:17:06 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.83
+
+Mon Aug 7 12:47:41 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y: resque -> rescue.æ¥ãšã‹ã—ã„ãŒtypoを残ã—ã¦ãŠãã‚ã‘ã«ã¯
+ ã„ã‹ãªã„よãªã‚.ãªã‚“ã§ä»Šã¾ã§æ°—ãŒã¤ã‹ãªã‹ã£ãŸã®ã‹â€¦ï¼Ž
+
+Thu Aug 3 18:18:05 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * missing/nt.c: NTç§»æ¤ç”¨ã®é–¢æ•°ç¾¤ã‚’ã¾ã¨ã‚ãŸï¼Ž
+
+ * variable.c (rb_const_get): ã¾ãŸä¾‹å¤–を発生ã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ždefined
+ ãŒã‚る以上例外を発生ã•ã›ãªã„ç†ç”±ãŒãªã„ã®ã§(例外ãŒç™ºç”Ÿã—ãŸæ–¹ãŒã‚¿
+ ã‚¤ãƒ—ãƒŸã‚¹ã®æ¤œå‡ºãªã©ã®ç‚¹ã§æœ‰åˆ©).
+
+ * variable.c (Fautoload): autoloadを実装.今度ã¯ä½¿ãˆã‚‹ã‹ï¼Ž
+
+Mon Jul 31 15:44:21 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (arg_ambiguous): 第1引数ã®ã‚ã„ã¾ã„ã•を警告(-vオプション
+ ã§æœ‰åй).
+
+ * eval.c (rb_eval): `-v'オプションをã¤ã‘ã¦`def'ãŒå‘¼ã°ã‚Œã‚‹ã¨ä¸å¿…è¦
+ ãªã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå‡ºãŸï¼Ž
+
+ * parse.y (yylex): メソッドã®ç¬¬1引数ã®åˆ¤å®šã‚’ã‚‚ã†ã¡ã‚‡ã£ã¨è³¢ãã—ãŸï¼Ž
+
+Fri Jul 28 19:04:43 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (yylex): `+/-/['ã®ç›´å‰ã«ç©ºç™½ãŒæ¥ã‚‹ã‹ã©ã†ã‹ã§å‹•作を変更ã—
+ ãŸ(æ··ä¹±ã®ã‚‚ã¨ã‹?)
+
+Wed Jul 26 09:21:23 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.82a
+
+ * sprintf.c (Fsprintf): `%s'ã§'\0'ã‚’å«ã‚€æ–‡å­—列ã«å¯¾å¿œï¼Ž
+
+ * pack.c (Fpck_pack): packã®è¦ç´ ç¢ºä¿ã®ãƒã‚°ï¼Ž
+
+ * eval.c (Floop): ç„¡é™ãƒ«ãƒ¼ãƒ—ã®ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ï¼Ž
+
+ * io.c (next_argv): 存在ã—ãªã„ファイルåãŒæŒ‡å®šã•ã‚ŒãŸæ™‚ã®ã‚¨ãƒ©ãƒ¼å‡¦ç†
+ ãŒè¡Œã‚れã¦ã„ãªã‹ã£ãŸï¼Ž
+
+Mon Jul 24 17:37:34 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.82
+
+ * ext/extmk.rb.in (install): 拡張モジュールをstatic linkã™ã‚‹å ´åˆã¯
+ ãã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒæ—¢ã«requireã•れãŸã®ã¨åŒã˜ã‚ˆã†ã«featureを設定ã™ã‚‹ï¼Ž
+ ã“ã‚Œã§æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®æ©Ÿèƒ½ãŒå¿…è¦ãªæ™‚ã«ã¯(static linkã•れã¦ã„ã‚‹ã‹
+ ã©ã†ã‹ã«ã‹ã‹ã‚らãš)requireã™ã‚Œã°ã‚ˆããªã‚‹ï¼Ž
+
+ * eval.c (Frequire): `$"'ã«æ ¼ç´ã™ã‚‹æ–‡å­—列をフルパスã§ãªãフィーãƒãƒ£
+ åã¨ã™ã‚‹ï¼Žrubyスクリプトをロードã—ãŸæ™‚ã«ã¯`.rb',オブジェクトを
+ ロードã—ãŸæ™‚ã«ã¯`.o'をフィーãƒãƒ£åã«ä»˜åŠ ã™ã‚‹ï¼Žlispã®requireã¨
+ provideã®åƒãã«(å°‘ã—)è¿‘ã„.
+
+Thu Jul 20 12:50:05 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * Makefile.in (test): make testãŒã§ãるよã†ã«ï¼Ž
+
+ * struct.c (struct_new): typo.
+
+ * eval.c (rb_eval): `defined'を追加.メソッド/変数/定数ã®å®šç¾©çŠ¶æ…‹
+ を知る事ãŒå‡ºæ¥ã‚‹ï¼Ž
+
+Wed Jul 19 18:04:01 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.81
+
+Mon Jul 17 14:53:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * variable.c (rb_const_get): æœªåˆæœŸåŒ–ã®CONSTANTã®å€¤ã‚’nilã«ã—ãŸï¼Žã—
+ ã‹ã—,今後ã¾ãŸä¾‹å¤–ã«æˆ»ã™å¯èƒ½æ€§ã¯ã‚る.è¦ã¯optionalãªã‚¯ãƒ©ã‚¹/モジュー
+ ルãŒå­˜åœ¨ã™ã‚‹ã‹ãƒã‚§ãƒƒã‚¯ã—ãŸã„ã ã‘ãªã‚“ã ãªï¼Ž
+
+ * st.c (int): grow_factorを固定ã«ã—ãŸ(大嶋ã•ã‚“ã®ãƒžã‚·ãƒ³ã«å¯¾å¿œ).
+
+Fri Jul 14 00:48:40 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * ext/extmk.rb.in: キャッシュã®ãƒã‚°ã‚’修正.
+
+ * parse.y (var_extend): #{$æ•°å­—}ã«å¯¾å¿œã—ãŸï¼Ž
+
+ * dln.c (dln_load_1): `Init_FILENAME'ã ã‘を有効ã«ï¼Ž`init_*'ã¯ä»Šå¾Œ
+ 実行ã—ãªã„.
+
+ * ext/etc/etc.c : Etcモジュールを拡張モジュールã¨ã—ã¦åˆ†é›¢ï¼Žå®Ÿã¯NT
+ 対応ã¸ã®å¸ƒçŸ³ã ã£ãŸã‚Šã™ã‚‹ã‹ã‚‚ã—れãªã„.
+
+Tue Jul 11 17:12:48 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * gcc -Wallã§å‡ºãŸwarningã‚’å…ƒã«ã‚½ãƒ¼ã‚¹ã‚’変更.
+
+ * signal.c (trap): typo.
+
+Fri Jul 7 10:08:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.80
+
+ * ruby.texi: texinfo documentã‚’æä¾›ï¼Žspecã¨ruby.1ã¯ç„¡ããªã£ãŸï¼Ž
+
+ * signal.c (Ftrap): 割込ã¿ç¦æ­¢ä¸­ã®ä¾‹å¤–発生ã«å¯¾å¿œï¼Ž
+
+ * eval.c (Flambda): Blockオブジェクトを返ã™ï¼ŽBlock.newã¨åŒç¾©ï¼Ž
+
+Thu Jul 6 00:35:03 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * signal.c (Ftrap): SIG_DFLã®å‡¦ç†ã‚’変更.SIGINTã¸ã®ãƒ‡ãƒ•ォルトãƒãƒ³
+ ドラを用æ„(例外を発生ã™ã‚‹).
+
+ * file.c (Sfile_expand_fname): パスåを絶対パスã«å±•é–‹ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž
+ (Sfile_basename): basenameを得るメソッド.拡張å­ã‚‚外ã›ã‚‹ï¼Ž
+ (Sfile_dirname): basenameã®å対.
+
+ * eval.c (rb_call): argument評価中ã®ä¾‹å¤–発生ã«å¯¾å¿œï¼Ž
+
+ * file.c (Ftest): `M', `A', `C'を追加.
+
+Tue Jul 4 12:36:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * file.c (Ftest): ファイルテスト用メソッド.
+
+ * ruby.c (proc_options): `-r'オプションを追加.
+
+ * parse.y (f_args): デフォルト引数を追加.
+
+ * eval.c (rb_call): 該当ã™ã‚‹å¼•æ•°ãŒç„¡ã„時,rest引数ã®å€¤ã‚’nilã«ï¼Ž
+
+ * numeric.c (num_equal): 数値以外ã¨ã®æ¯”較ã§ä¾‹å¤–ãŒç™ºç”Ÿã—ã¦ã„ãŸï¼Ž
+ FALSEã‚’è¿”ã™ã‚ˆã†ã«ï¼Ž
+
+ * eval.c (masign): 多é‡ä»£å…¥ã®rest部ã®å‹•作ãŒãŠã‹ã—ã‹ã£ãŸï¼Ž
+
+Sat Jun 17 01:03:16 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * parse.y (gettable): æœªåˆæœŸåŒ–ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®å‚ç…§(独立ã—ãŸè­˜åˆ¥å­)
+ ã¯æ­£å¼ã«ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã¨ã—ãŸï¼Ž
+
+ * parse.y (read_escape): tokenbufを使ã‚ãªã„よã†ã«ä¿®æ­£ï¼Žãれã«ã¨ã‚‚
+ ãªã„,`\C-x',`\M-x'ãªã©ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—表ç¾ã‚’復活.ã“れã§ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³
+ トã¨å®Ÿéš›ã®å‡¦ç†ç³»ãŒä¸€è‡´ã—ãŸï¼Ž
+
+Thu Jun 15 15:42:00 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * re.c (re_regcomp): cacheã®ãƒã‚§ãƒƒã‚¯ã‚’改善.
+
+Mon Jun 12 18:50:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * version 0.79
+
+Sat Jun 10 00:25:01 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+
+ * re.c (re_regcomp): cache判定ã«`$='ã®å€¤ã‚‚åæ˜ ã•ã›ãŸï¼Ž
+
+ * sample/test.rb: test suite作æˆï¼Ž
+
+Fri Jun 9 15:58:34 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * re.c (re_regcomp): cacheã®åˆ¤å®šãŒé–“é•ã£ã¦ã„ãŸï¼Ž
+
+Fri Jun 9 00:01:35 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * eval.c (rb_yield): block構造体ã«åˆæœŸåŒ–ã—ã¦ã„ãªã„メンãƒ(iter)ãŒã‚ã£
+ ãŸã®ã§ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ã®ãƒã‚¹ãƒˆãŒæ­£ã—ã動作ã—ãªã‹ã£ãŸï¼Ž
+
+Thu Jun 8 00:59:03 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * re.c (=~): String以外ã¨ã®æ¯”較ãŒFALSEã‚’è¿”ã™ã‚ˆã†ã«(例外を発生ã—ã¦
+ ã„ãŸ).
+
+ * extmk.rb.in: 判定ã—ãŸå€¤ã‚’ファイルã«ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž
+
+ * assoc.c (to_a): to_aメソッドãŒå†å®šç¾©ã•れã¦ã„ãªã‹ã£ãŸï¼Ž
+
+ * eval.c (rb_eval): åˆæœŸåŒ–ã•れã¦ã„ãªã„ローカル変数ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’引
+ æ•°ã®ç„¡ã„メソッド呼ã³å‡ºã—ã¨è§£é‡ˆã™ã‚‹ï¼ŽãŸã ã—,(ç¾çжã§ã¯)メソッドãŒ
+ 定義ã•れã¦ã„ãªã„å ´åˆï¼Œã‚¨ãƒ©ãƒ¼ã«ã›ãšå¤‰æ•°æœªåˆæœŸåŒ–ã®waringを出ã—ã¦
+ nilã‚’è¿”ã—ã¦ã„る.「ruby -pe printã€ãªã©ãŒå®Ÿè¡Œã§ãã‚‹ã¨ã„ã†æ„味ã§
+ ã¯ã‚りãŒãŸã„ã“ã®ä»•様ã¯ï¼Œã—ã‹ã—ä»Šå¾Œã®æ¤œè¨ŽãŒå¿…è¦ã§ã‚る.-- メソッ
+ ド呼ã³å‡ºã—ã¨ã™ã‚‹ã®ã‚’æ­¢ã‚ã‚‹ã‹(以å‰ã®ä»•様),ã„ã¤ã‚‚メソッド呼ã³å‡ºã—
+ ã¨ã™ã‚‹(未定義ãªã‚‰ã°ã‚¨ãƒ©ãƒ¼)ã‹ï¼Œä»Šã®ä»•様ã§è¡Œãã‹ï¼Ž
+
+ * eval.c (rb_eval): åˆæœŸåŒ–ã•れã¦ã„ãªã„ローカル変数ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã§
+ (evalãªã©ã§)åˆæœŸåŒ–ã•れãŸäº‹ãŒåˆ†ã‹ã£ãŸæ™‚ã«ã¯ä»¥å¾ŒåˆæœŸåŒ–ã•れãŸãƒ­ãƒ¼ã‚«
+ ル変数ã¨ã¿ãªã™ï¼Ž
+
+Wed Jun 7 11:58:12 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * eval.c (rb_fail): 例外処ç†å¾Œã‚‚`$!'をクリアã—ãªã„よã†ã«ï¼Ž
+ (rb_fail): `$!'å¤‰æ•°ã«æœ€å¾Œã«æ”¹è¡Œã‚’追加ã—ãªã„.
+
+ * io.c (Fprint): privateメソッドã«å¤‰æ›´ï¼Žå¼•æ•°ã‚’å–らãªã„時ã®å‹•作を変
+ æ›´(`$_'を出力ã™ã‚‹).
+ (Fio_print): 出力先指定ã®printメソッド.
+ (Fio_printf): 出力先指定ã®printfメソッド.
+
+ * parse.y: not演算å­ã®è¿½åŠ ï¼Žå„ªå…ˆé †ä½ã®ä½Žã„`!'演算å­ï¼Ž
+
+Mon Jun 5 19:00:55 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * version 0.78
+
+Fri Jun 2 17:52:03 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * ruby.c (proc_options): -Iオプションã§`$:'ã¸ã®è¿½åŠ ã•れる順番を修
+ æ­£ã—ãŸï¼Ž
+
+Fri Jun 2 00:36:34 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * parse.y: while修飾å­ã®å‹•作を通常ã®whileã¨åŒã˜ã«ã—ãŸï¼ŽãŸã ã—,
+ beginå¼ã¸ã®while修飾å­ã ã‘ã¯do..whileåž‹ã®ãƒ«ãƒ¼ãƒ—ã¨ãªã‚‹ï¼Ž
+
+Wed May 31 18:36:30 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * version 0.77
+
+Mon May 29 18:39:37 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * ext/extmk.rb.in (install): 拡張モジュールもインストールã§ãるよ
+ ã†ã«ï¼Ž
+
+Fri May 26 14:43:01 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * process.c (Fsystem): 戻り値をサブプロセスã®å¤±æ•—/æˆåŠŸã‚’è¡¨ã™çœŸå½å€¤
+ ã«ã—ãŸï¼Žçµ‚了ステータスã¯`$?'ã§å¾—る.
+
+Tue May 23 10:58:11 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * string.c (Fstr_upto): ç„¡é™ãƒ«ãƒ¼ãƒ—ã«é™¥ã‚‰ãªã„よã†ã«ï¼Ž
+
+ * parse.y (cond): `||'ãªã©ã®å³è¾ºã«åˆ¶å¾¡å¼ãŒæ›¸ã‘るよã†ã«ï¼Œæ¡ä»¶å¼ãŒã‹
+ ãªã‚‰ãšã—も値をæŒãŸãªãã¦ã‚‚良ã„よã†ã«ã—ãŸï¼Ž
+
+ * ext/marshal/marshal.c: オブジェクトã®èª­ã¿æ›¸ãをメソッドã®å†å®šç¾©
+ ã§ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã§ãるよã†ã«ï¼Žã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒ`_dump_to'ã¨ã„ã†ãƒ¡ã‚½ãƒƒ
+ ドを定義ã—ã¦ã„る時ã¯ãã¡ã‚‰ã‚’使ã†ã‚ˆã†ã«ï¼Ž
+
+ * ext/extmk.rb.in: static linkも設定ã§ãるよã†ãªä»•様ã«ã—ãŸï¼Ž
+ ext/Setupã¨ã„ã†ãƒ•ァイルã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåを記述ã™ã‚‹ã¨ãã®ãƒ‡ã‚£ãƒ¬ã‚¯
+ トリã«å­˜åœ¨ã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯static linkã•れる(ã¯ãš).
+
+ * eval.c (rb_eval): `..'を文法ã«çµ„ã¿è¾¼ã¿ï¼Œ`..'ã¨`...'ã®å‹•作をperl
+ ã«åˆã‚ã›ãŸï¼Ž
+
+Sat May 20 01:22:48 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * io.c (select): timeout時ã¨å‰²è¾¼ã¿æ™‚ã®å‹•ä½œã®æ˜Žç¢ºåŒ–.
+
+Fri May 19 15:33:23 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * version 0.76
+
+Fri May 19 00:48:08 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * string.c (Fstr_each): ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯ä¸­ã§æ–‡å­—列ã®å¤‰æ›´ãŒè¡Œã‚れ
+ ãŸã‹ã©ã†ã‹ã‚’ãƒã‚§ãƒƒã‚¯ï¼Žãƒã‚¤ãƒ³ã‚¿ã®å€¤ãŒå¤‰ã‚ã£ã¦ã„れã°ä¾‹å¤–を発生ã™ã‚‹ï¼Ž
+
+ * ruby-mode.el: ruby-electric-braceã®æ–°è¨­ï¼Ž
+
+Thu May 18 12:27:23 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * string.c (Fstr_tr): trã®ç½®æ›å¯¾è±¡ã«`\0'ã‚’å«ã‚€æ™‚ã«æ­£ã—ãç½®æ›ã‚’行ã‚
+ ãªã„ãƒã‚°ãŒã‚ã£ãŸï¼Žæ›´ã«ç½®æ›æ–‡å­—列をASCIIé †ã«æŒ‡å®šã—ãªã„ã¨å‹•作ã—ãª
+ ã„å•題もã‚ã£ãŸï¼Žçµæžœã¨ã—ã¦trã‚’æ›¸ãæ›ãˆãŸã®ã§ï¼Œcopyrightã®å•題ã¯
+ ç„¡ããªã£ãŸ(ã¨æ€ã†).
+
+ * gc.c (gc): the_scopeをマークã—ã¦ã„ãªã‹ã£ãŸã®ã§ï¼Œãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã®æŒ‡
+ ã—ã¦ã„るオブジェクトãŒé–“é•ã£ã¦é–‹æ”¾ã•れる場åˆãŒã‚ã£ãŸï¼Ž
+
+ * gc.c (mark_locations_array): 若干ã®é«˜é€ŸåŒ–.
+
+Mon May 15 11:43:49 1995 Yukihiro Matsumoto <matz@ix-02>
+
+ * ext/extmk.rb.in: Dynamic Loadモジュールã®ã‚³ãƒ³ãƒ‘イル用ãƒã‚§ãƒƒã‚¯ã‚’
+ 行ã†ruby script.autoconfã«è¿‘ã„æ„Ÿè¦šã§ä½¿ãˆã‚‹ï¼Žæ–°ã—ã„モジュールを
+ æä¾›ã—ãŸã„人ã¯extã®ä¸‹ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’作るã ã‘ã§è‰¯ã„.必須ã®ãƒ•ã‚¡
+ イルã¯ãƒ•ァイルåã®ä¸€è¦§ã‚’記録ã—ãŸ`MANIFEST'ã¨ã„ã†ãƒ•ァイルã®ã¿ï¼Žå¿…
+ è¦ã«å¿œã˜ã¦`depend'(ファイルã®ä¾å­˜é–¢ä¿‚を記述ã™ã‚‹ãƒ•ァイル gcc -MM
+ ã®å‡ºåŠ›),`extconf.rb'(コンパイル用ã«ãƒ©ã‚¤ãƒ–ラリã¨é–¢æ•°ã®å­˜åœ¨ãƒã‚§ãƒƒ
+ クã™ã‚‹ãƒ•ァイル)を用æ„ã§ãる.
+
+ * eval.c (rb_call): rubyメソッドã®å¼•æ•°ãƒã‚§ãƒƒã‚¯æ™‚ã«æœªåˆæœŸåŒ–ã®
+ jmp_bufを使用ã—ã¦ã„ãŸï¼Ž
+
+ * parse.y: `or'ã¨`and'ã®å„ªå…ˆé †ä½ã‚’åŒã˜ã«ã—ãŸï¼Ž
+
+Wed May 3 18:21:36 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * dln.c: Linuxã§ã¯`__.SYMDEF/'ã§ã‚ã£ãŸï¼Ž
+
+ * dln.c: system callã®ã‚¨ãƒ©ãƒ¼ãƒã‚§ãƒƒã‚¯ã‚’忘れã¦ã„ãŸï¼Ž
+
+Wed Apr 26 09:50:56 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y: イテレータブロックã®å¤‰æ•°å®£è¨€ã‚’`|'ã§æ‹¬ã‚‹ã‚ˆã†ã«ã—ãŸï¼Žã“れ
+ ã§ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿å¤‰æ•°ãŒãªã„時ã¯å®£è¨€ãã®ã‚‚ã®ã‚’çœç•¥ã§ãる.文法ã®å¤‰æ›´ã¯
+ ä¹…ã—ã¶ã‚Šã ï¼Ž
+
+Tue Apr 25 12:04:17 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * eval.c(require): loadã‹ã‚‰ãƒ€ã‚¤ãƒŠãƒŸãƒƒã‚¯ãƒ­ãƒ¼ãƒ‰ã®æ©Ÿèƒ½ã‚’ç§»ã—ã¦ããŸï¼Ž
+ ã•ã‚‰ã«æ‹¡å¼µå­ã®è£œå®Œæ©Ÿèƒ½ã‚’追加ã—ã¦ãƒ¦ãƒ¼ã‚¶ãŒdln/dlopenã®å·®ã‚’æ„è­˜ã™ã‚‹
+ å¿…è¦ã®ãªã„よã†ã«ã—ãŸï¼Ž
+
+ * string.c(sub,sub): イテレータã¨ã—ã¦ã‚‚動作ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * object.c: init_object -> initialize.
+
+Mon Apr 24 14:22:39 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * NEWS-OS 3.4対応
+
+ * io.c: Solarisã®stdioã®å‹•作ãŒé•ã†ã‚ˆã†ã ï¼Žsignalã§EOFã‚’è¿”ã—ã¦ã—ã¾
+ ã†â€¦ï¼Žperlã§ã‚‚åŒæ§˜ã®å•題ãŒã‚る.
+
+Fri Apr 21 20:04:39 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * version 0.75
+
+ * signal.c: trapãŒãªããªã£ã¦ã„ãŸï¼Žã†ãƒ¼ã‚€ï¼Ž
+
+ * configure: Solaris 2.3対応.
+
+ * io.c: #elifã®ãªã„cppã‚‚ã‚る.
+
+ * dir.c: autoconf 2.xã¸ã®å¯¾å¿œãŒä¸å分
+
+Thu Apr 20 12:31:24 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * version 0.74
+
+ * env.h, gc.c, regex.c: IRIXã¸ã®ç§»æ¤å¯¾å¿œ
+
+ * configure: dlopen用ã«picを生æˆã™ã‚‹optionã®æ¤œå‡ºã®ãŸã‚,システムタ
+ イプをãƒã‚§ãƒƒã‚¯ã™ã‚‹ã‚ˆã†ã«ï¼Ž
+
+Tue Apr 18 19:08:17 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * gc.c(xrealloc): ptr=nilã®æ™‚,malloc()ã¨åŒã˜åƒãã‚’
+
+ * array.c(astore): 空ã®é…列ã®0番目ã®è¦ç´ ã«ä»£å…¥ã™ã‚‹ã¨size=0ã§
+ realloc()を呼んã§ã„ãŸï¼Ž
+
+ * configure, glob.c: Solaris 2.xã§ã‚³ãƒ³ãƒ‘イルã§ãるよã†ã«
+
+Mon Apr 10 18:36:06 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * version 0.73
+
+Fri Apr 7 13:51:08 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * cons.c->assoc.c: consã®ä½™è¨ˆãªæ©Ÿèƒ½ã¯å¤–ã—ã¦pairã¨ã—ã¦ã®æ©Ÿèƒ½ã ã‘ã‚’
+ 残ã—ãŸï¼ŽEnumerableã‚’includeã™ã‚‹ã®ã‚‚ã‚„ã‚ãŸï¼Ž
+
+ * string.c(esub): 文字列置æ›ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ï¼Žperlã®s///eã®ç›¸å½“ã™ã‚‹ï¼Ž
+
+Wed Apr 5 11:35:21 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * version 0.72
+
+ * EWS4800対応
+
+ * file.c: utimesãŒãªã„時ã¯utimeを使ã†ã‚ˆã†ã«ï¼Ž
+
+Mon Apr 3 15:19:41 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * version 0.71
+
+ * regexp.c(re_match): ãƒã‚°ãŒã‚ã£ãŸï¼Žmatch_2を削除ã—ãŸæ™‚ã«enbugã—ã¦
+ ã„ãŸã®ã ã£ãŸï¼Ž
+
+Mon Mar 27 15:41:43 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * dict.c: Dict->Hashã«å…¨é¢çš„ã«ç§»è¡Œï¼Ž
+
+Thu Mar 23 20:30:00 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * dbm.c,socket.c: extディレクトリã«åˆ†é›¢ï¼Ž
+
+ * configure: dln周りã®ãƒã‚§ãƒƒã‚¯ã®å¼·åŒ–
+
+ * dln.c: initã®å‘¼ã³å‡ºã—ã‚’dlopen()版ã«åˆã‚ã›ãŸï¼Ž
+
+Mon Mar 20 17:45:08 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * configure: autoconf 2.2ã«å¯¾å¿œ(一部).
+
+Fri Mar 17 15:56:44 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * dln.c: dlopenã®ã‚るマシンã§ã¯ãã¡ã‚‰ã‚’使ã†ã‚ˆã†ã«ï¼ŽãŸã ã—,ã¡ã‚ƒã‚“
+ ã¨å‹•ã„ã¦ã„ã‚‹ã‹ã©ã†ã‹ã¯è‡ªä¿¡ãŒãªã„.
+
+ * regex.c: virtual concatinationã‚’ã‚„ã‚ãŸï¼Ž
+
+Thu Mar 16 11:32:57 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * version 0.70
+
+ * eval.c,regex.c: gccã§ã®ã‚³ãƒ³ãƒ‘イルエラー.
+
+ * io.c: inplace-editã§æ‹¡å¼µå­ãŒæŒ‡å®šã•れãªã„å ´åˆï¼Œã‚‚ã¨ã®ãƒ•ァイルを削
+ 除ã™ã‚‹ï¼Ž
+
+Wed Mar 15 14:59:18 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * version 0.69
+
+ * eval.c(method_missing): unknownã‹ã‚‰å称変更.
+
+ * eval.c(single_method_added): 特異メソッドãŒå®šç¾©ã•ã‚ŒãŸæ™‚ã«å‘¼ã°ã‚Œ
+ るメソッド.hookã¨ã—ã¦ä½¿ãˆã‚‹ï¼Žå®Ÿéš›ã«å®šç¾©ã•れる直å‰ã«å‘¼ã°ã‚Œã‚‹ï¼Ž
+
+Tue Mar 14 14:46:44 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * ruby.c(proc_options): 引数ã®è§£æžã‚’自分ã§ã‚„ã‚‹ã“ã¨ã«ã‚ˆã‚Šå¼•数指定ã®
+ 方法ãŒperlã«è¿‘付ã„ãŸï¼Žgetopt_longã¯ã‚‚ã†ä½¿ã‚ãªã„.
+
+ * dir.c(glob): `{}'ã®ãƒã‚¹ãƒˆã‚’許ã™ã‚ˆã†ã«ã—ãŸï¼Ž
+
+Mon Mar 13 17:56:25 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * glob.c: Glob(ワイルドカードオブジェクト)ã¯ãªããªã£ãŸï¼Žãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼
+ ドã®å±•é–‹ã¯Dir.glob(文字列)を使ã†ï¼Žãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã®ãƒžãƒƒãƒã¯æ­£è¦è¡¨
+ ç¾ã§ä»£ç”¨ï¼Ž
+
+Fri Mar 10 18:35:46 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * eval.c: Mathã®ã‚ˆã†ãªãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯è‡ªåˆ†è‡ªèº«ã§extendã™ã‚‹ï¼Ž
+
+ * eval.c: クラスやモジュールを定義ã™ã‚‹æ™‚,既ã«åŒåã®ã‚‚ã®ãŒã‚れã°è¿½
+ 加定義ã¨ãªã‚‹ã‚ˆã†ã«ï¼ŽãŸã ã—.superクラスã®é•ã„ãªã©ã¯ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Ž
+
+ * regex.c: debug.
+
+ * math.c: 定数PIã¨Eを定義.
+
+Thu Mar 9 21:35:12 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * regex.c: EUC,SJISモードã§ã¯0x80以上ã®8進,16é€²ãƒªãƒ†ãƒ©ãƒ«ã‚’ç¦æ­¢ï¼Ž
+
+ * regex.c: クラス内ã§ã‚‚数値リテラル・文字クラスãŒä½¿ãˆã‚‹ã‚ˆã†ã—ãŸï¼Ž
+
+Wed Mar 8 17:39:05 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * regex.c: \200ãªã©æ‹¬å¼§ã®æ•°ä»¥ä¸Šã®è¡¨ç¾ã¯8進リテラルã¨è§£é‡ˆã™ã‚‹ï¼ŽãŸã 
+ ã—,\1ã‹ã‚‰\9ã¾ã§ã¯ä¾‹å¤–.
+
+ * regex.c: \9以上ã®ãƒªãƒ•ァレンスも有効ã«ã—ãŸï¼Ž
+
+Tue Mar 7 14:26:01 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * eval.c(public/private): スコープ制御メソッドã®å称変更.é™çš„ãªã‚¢
+ クセスも出æ¥ã‚‹ã‚ˆã†ã«ã—ã¦ã¿ãŸãŒï¼Œä¸æŽ¡ç”¨ï¼Ž
+
+Mon Mar 6 19:34:32 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * eval.c(inlcude): メソッド化.動的ã«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’インクルードã§ã
+ るよã†ã«ï¼Žã•らã«ä»»æ„ã®ã‚ªãƒ–ジェクトã«ã‚‚モジュールをインクルードã§
+ ãるメソッド `extend'も用æ„ã—ãŸï¼Ž
+
+ * parse.y: 文法ã‹ã‚‰includeを削除.メソッド化.
+
+Tue Feb 28 15:35:10 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y: é…列,連想é…åˆ—ã®æœ€å¾Œã«`,'ã‚’ãŠã‘るよã†ã«ï¼Ž
+
+Fri Feb 24 13:15:43 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * version 0.68
+
+Thu Feb 23 11:19:19 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * eval.c: resque節ã®selfã®å€¤ãŒé–“é•ã£ã¦ã„ãŸï¼Ž
+
+ * eval.c(rb_clear_cache): キャッシュã®ã‚¯ãƒªã‚¢ã—忘れãŒã‚ã£ãŸï¼Ž
+
+ * eval.c: 定数ã®ã‚¹ã‚³ãƒ¼ãƒ—をクラス内ã®é™çš„スコープã«å¤‰æ›´ã—ãŸï¼Žã“れã«
+ よã£ã¦ï¼Œç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã‹ã‚‰å‚ç…§ã•れる定数ã¯ï¼Œãƒ¬ã‚·ãƒ¼ãƒã®ã‚¯ãƒ©ã‚¹ã§ã¯ãª
+ ã,定義ã•れãŸã‚¹ã‚³ãƒ¼ãƒ—ã®ã‚¯ãƒ©ã‚¹ã®å®šæ•°ã¨ãªã‚‹ï¼Ž
+
+Wed Feb 22 00:51:38 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * regex.c: ignorecaseã‚’æ­£è¦è¡¨ç¾ã®ã‚³ãƒ³ãƒ‘イルå‰ã«æŒ‡å®šã—ãªã„ã¨æ­£ã—ã
+ 動作ã—ãªã„.修正.
+
+ * string.c(toupper,tolower): bug fix.
+
+ * ENV,VERSION: readonly変数ã‹ã‚‰å®šæ•°ã¸ï¼Ž
+
+Tue Feb 21 18:56:56 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * io.c(STDIN, STDOUT, STDERR): 定数ã¨ã—ã¦å®šç¾©ï¼Ž
+
+ * io.c(select): bug fix.
+
+ * version 0.67
+
+Mon Feb 20 16:10:14 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y(yylex): 定数を`%識別å­'ã‹ã‚‰ï¼Œç¬¬1文字ãŒå¤§æ–‡å­—ã®è­˜åˆ¥å­ã«å¤‰
+ 更.ãれã«ã¨ã‚‚ãªã„クラスã¯å®šæ•°ã¨ãªã£ãŸï¼Ž
+
+ * eval.c: クラス定義内ã®selfãŒã‚¯ãƒ©ã‚¹å®šç¾©å¤–部ã®the_classã ã£ãŸï¼Ž
+
+ * variable.c(rb_name_class): クラスåã‚’ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã«æ ¼ç´ã™ã‚‹ï¼Ž
+
+Thu Feb 16 15:36:17 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y: BLOCKã‚’braceã§è¡¨ç¾ã™ã‚‹æ–‡æ³•ã«å¤‰æ›´ã—ãŸã‚‚ã®ã‚’作ã£ã¦ã¿ã‚‹ï¼Ž
+ MLã«æç¤ºã—ã¦ã¿ã‚‹ãŒå応ãŒãªã„.
+
+ * object.c(do,forever): ãªãã—ãŸï¼Ž
+
+Wed Feb 15 13:20:49 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * re.c(new): 第2引数ãŒä¸Žãˆã‚‰ã‚Œã¦ï¼Œã‹ã¤nilã§ãªã„ã¨ãã ã‘設定ã™ã‚‹ã‚ˆ
+ ã†ã«(以å‰ã¯nilã®æ™‚ã«ã‚‚設定を行ãªã£ã¦ã„ãŸ).
+
+ * parse.y(parse_regexp): æ­£è¦è¡¨ç¾ãƒªãƒ†ãƒ©ãƒ«ã§å¤§æ–‡å­—å°æ–‡å­—を無視ã™ã‚‹
+ ã‹ã©ã†ã‹æŒ‡å®šã§ãるよã†ã«ï¼Ž
+
+Tue Feb 14 00:55:33 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * parse.y: (compexpr) -> (expr).
+
+Fri Feb 10 16:30:00 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * ruby.c(load_file): scriptを読ã¿è¾¼ã‚€æ™‚ã ã‘"#!"ã®è§£æžã‚’行ã†ã‚ˆã†ã«ï¼Ž
+
+ * ruby.c(readin): ファイル読ã¿è¾¼ã¿æ™‚ã«å…ˆé ­ã«"#!"ãŒã‚り,ãã®è¡ŒãŒ
+ "ruby"ã¨ã„ã†æ–‡å­—列をå«ã‚€æ™‚,rubyã«å¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã¦ã„れã°ï¼Œãã®å¼•
+ 数も有効ã«ãªã‚‹ï¼Ž
+
+ * parse.y(yylex): コメント行ã®çµ‚りãŒ`\'ã§ã‚ã£ãŸæ™‚,次ã®è¡Œã«ç¶™ç¶šã—
+ ã¦ã„ã‚‹ã¨ã¿ãªã™ã‚ˆã†ã«ã—ãŸï¼Ž
+
+Thu Feb 9 16:18:37 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * version 0.66
+
+ * parse.y: protectã‚’beginã«å¤‰æ›´ï¼Žbegin..endã¯ä¾‹å¤–処ç†ã ã‘ã§ãªã,
+ 文括弧ã¨ã—ã¦ã‚‚åƒãã“ã¨ã«ãªã£ãŸï¼Ž
+
+Wed Feb 1 19:48:24 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * version 0.65
+
+ * string.c(str_replace): ç½®ãæ›ãˆã‚‹æ–‡å­—列ã®é•·ã•ãŒç­‰ã—ã„æ™‚メモリコ
+ ピーをã—ãªã„.
+
+ * string.c(rindex): ãƒã‚°ä¿®æ­£ï¼Ž
+
+Mon Jan 30 11:23:05 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y(value_expr): ifã®ãƒã‚§ãƒƒã‚¯ã‚’追加.
+
+ * gc.c(gc_mark): free cellã®æ‰±ã„ã«ãƒã‚°ï¼Ž
+
+ * parse.y: 文法ã®å¤‰æ›´(よりシンプルã«).例外を減らã—ãŸï¼Ž
+
+Thu Jan 26 00:52:55 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * parse.y: 引数ã¨ã—ã¦é€£æƒ³é…列を置ãã“ã¨ãŒã§ãるよã†ã«ï¼Žã“ã®å ´åˆï¼Œ
+ 連想é…åˆ—ãƒªãƒ†ãƒ©ãƒ«ãŒæœ€çµ‚引数ã¨ãªã‚‹ï¼Ž
+
+ * parse.y: é…列å‚ç…§ã®`[]'内ãŒç©ºã§ã‚‚よã„ã“ã¨ã«ã—ãŸï¼Ž
+
+Tue Jan 24 14:45:15 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * class.c(rb_include_module): `-v'を指定ã—ãŸæ™‚ã«ã¯includeã—ãŸãƒ¢ã‚¸ãƒ¥ãƒ¼
+ ルã¨ã‚¯ãƒ©ã‚¹å®šæ•°ãŒè¡çªã—ã¦ã„ãªã„ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Ž
+
+Mon Jan 23 10:42:09 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y(rb_class2name): メタクラスã«é–¢ã™ã‚‹bug fix.
+
+ * dict.c: Dict[..]ã§è¾žæ›¸ã®ç”ŸæˆãŒå‡ºæ¥ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * array.c: Array[..]ã§é…列ã®ç”ŸæˆãŒå‡ºæ¥ã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * parse.y: 辞書ã®è¡¨ç¾ã¨ã—ã¦{a,b,..}ã¨ã„ã†å½¢å¼ã‚‚許ã™ã‚ˆã†ã«ï¼Ž
+
+Fri Jan 20 10:28:38 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * re.c(Regexp.quote): æ­£è¦è¡¨ç¾ã‚’エスケープã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼Ž
+
+ * ç„¡é§„ãªrb_intern()を減らã—ãŸï¼Ž
+
+ * parse.y: `!', `!=', `!~'を特殊演算å­ã«ã™ã‚‹ï¼Žã‚ˆã£ã¦ã“れらã¯å†å®šç¾©
+ ã§ããªããªã£ãŸï¼Ž
+
+Wed Jan 18 13:20:41 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y: æ–‡æ³•ã®æ•´ç†(unless,untilã‚’ãªãã—ãŸ).
+
+Tue Jan 17 11:11:27 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * eval.c: defã§ãƒ¡ã‚½ãƒƒãƒ‰å†å®šç¾©æ™‚ã«ã¯ã‚¹ãƒ¼ãƒ‘ークラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å¯è¦–
+ 性を継承ã™ã‚‹ï¼Žæœ€åˆã®å®šç¾©ã®æ™‚ã¯ä»Šã¾ã§ã¨åŒã˜ãƒ‡ãƒ•ォルト(トップレベ
+ ルã§é–¢æ•°çš„,クラス定義内ã§é€šå¸¸ãƒ¡ã‚½ãƒƒãƒ‰).
+
+ * object.c(Class#new): オブジェクトã®ç”Ÿæˆæ™‚ã«é–¢æ•°çš„メソッド
+ init_objectãŒå¿…ãšå‘¼ã°ã‚Œã‚‹ã‚ˆã†ã«å¤‰æ›´ï¼Ž
+
+ * eval.c: 未定義ã®ãƒ¡ã‚½ãƒƒãƒ‰ã«å¯¾ã—ã¦unknownメソッドãŒå‘¼ã°ã‚Œã‚‹ã‚ˆã†ã«
+ ãªã£ãŸï¼Žã‚¨ãƒ©ãƒ¼è¡¨ç¤ºãŒä»Šã¾ã§ã¨åŒã˜ã«ãªã‚‹ã‚ˆã†ã«envを調節ã—ã¦ã„る.
+
+Fri Jan 13 14:40:30 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * gc.c: gcã‚’è‹¥å¹²æ›¸ãæ›ãˆã¦æ•´ç†ã—ãŸï¼ŽãŒï¼Œã‚ã¾ã‚Šå¤‰åŒ–ã¯ãªã‹ã£ãŸã‚ˆã†ã ï¼Ž
+
+ * parse.y(yylex): symbolã‚’\symã‹ã‚‰:symã«å¤‰æ›´ã—ãŸï¼Ž
+
+Thu Jan 12 01:39:28 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * eval.c: æ–°è¦é–¢æ•° rb_eval_string().
+
+ * gc.c: gc_mark()を一部éžå†å¸°åŒ–.
+
+ * variable.c(rb_ivar_{get,set}): インスタンス変数ã®ã‚¢ã‚¯ã‚»ã‚¹å‘¨ã‚Šã§
+ ãƒã‚§ãƒƒã‚¯ãŒè¶³ã‚Šãªã‹ã£ãŸï¼Ž
+
+ * variable.c: クラス定数ã¨ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã§ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルを共有
+ ã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž
+
+ * ruby.h: iv_tblã‚’RBasicã‹ã‚‰RObjectã¨RClassã¸ç§»å‹•ã—ãŸï¼Žã“れã«ã‚ˆã‚Šï¼Œ
+ Objectã¨Class,Moduleã—ã‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’æŒã¦ãªããªã‚‹ï¼ŽãŒï¼Œãƒ¡ãƒ¢
+ リ効率ã¯è‹¥å¹²å‘上ã™ã‚‹ï¼Ž
+
+Tue Jan 10 00:58:20 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * 0.64 released
+
+ * eval.c: レシーãƒã¨å¼•æ•°ã¯å¸¸ã«iterã§ã¯ãªã„.
+
+ * cons.c(aref,aset): negative offset対応.
+
+Mon Jan 9 14:40:39 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y: foo{..}ã®å½¢å¼ã«ãŠã„ã¦ï¼Œfooをローカル変数やクラスåã§ã¯
+ ãªã,引数ãªã—ã®é–¢æ•°åž‹ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã¨ã¿ãªã™ã‚ˆã†ã«ã—ãŸï¼Ž
+
+ * list.c -> cons.c: å称変更(クラスåã‚‚).
+
+ * list.c: a::b::c::nilをリスト(a b c)ã¨ã¿ãªã™lispå½¢å¼ã‹ã‚‰ï¼Œa::b::c
+ をリスト(a b c)ã¨ã¿ãªã™rubyå½¢å¼ã«å¤‰æ›´ï¼Ž[], []=, eachã‚‚ãれã«ä¼šã‚
+ ã›ãŸä»•様ã¨ã™ã‚‹ï¼Ž
+
+ * list.c: consペアã¨ã—ã¦ã®æ©Ÿèƒ½ã‚’強調.仕様変更.
+
+Sat Jan 7 01:26:26 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * eval.c: 自己代入ã®ä¸å…·åˆä¿®æ­£ï¼Ž
+
+ * eval.c(masign): 多é‡ä»£å…¥ãŒé…列もリストもã¨ã‚Œã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž
+
+ * list.c: assocã‚’2è¦ç´ ã®é…列ã‹ã‚‰List(CONSペア)ã«å¤‰æ›´ã—ãŸï¼Ž
+
+Fri Jan 6 13:42:12 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y: a[b]+=cã‚„a.b+=cãªã©ã®è‡ªå·±ä»£å…¥å½¢å¼ã§ï¼Œaã‚„bã‚’2度評価ã—ãª
+ ããªã£ãŸï¼Ž
+
+ * eval.c: iterator設定ã®ãƒã‚°ãƒ•ィックス.
+
+ * list.c: Listクラスを新設.
+
+Thu Jan 5 13:55:00 1995 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y: SCOPEã®ãƒ¡ãƒ¢ãƒªãƒªãƒ¼ã‚¯ã‚’ãªãã—ãŸï¼Ž
+
+ * eval.c: built-inメソッドã¸ã®å¼•æ•°ã®å¼•ãæ¸¡ã—方を変更ã—ã¦ï¼Œé…列ã®ç”Ÿ
+ æˆæ•°ã‚’減らã—ãŸï¼Ž
+
+ * re.c: match-dataを毎回生æˆã™ã‚‹ã“ã¨ã‚’ã‚„ã‚ãŸï¼Ž`$~'をアクセスã—ãŸæ™‚
+ ã«on-demandã§ç”Ÿæˆã™ã‚‹ï¼Ž
+
+ * string.c etc: ä¸å¿…è¦ãªmemmoveã‚’memcpyã«ç½®æ›ï¼Ž
+
+ * parse.y: =~, !~ã¯å‰¯ä½œç”¨ãŒã‚ã‚‹ã®ã§ã‚³ãƒ³ãƒ‘イル時ã«å±•é–‹ã§ããªã„.
+
+Tue Jan 3 02:04:36 1995 Yukihiro Matsumoto (matz@dyna)
+
+ * eval.c: rest引数ã®bug fix.
+
+ * eval.c,gc.c: scopeをオブジェクトã«ã—ãŸï¼Ž
+
+ * eval.c: envã¨scopeã®æ‰±ã„を変更ã—ãŸï¼Ž
+
+Wed Dec 28 09:46:57 1994 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y: evalã§ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ãŒè¿½åŠ ã•れãŸå ´åˆã«å¯¾å¿œã—ãŸï¼Ž
+
+ * parse.y: 演算å­ã‚’å«ã‚€aliasã®bug fix.
+
+Tue Dec 27 16:45:20 1994 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y: def A Bã‚’alias A Bã«å¤‰æ›´ï¼Ž
+
+ * eval.c: alias関係ã®bug修正.nodeをオブジェクト化ã—ãŸæ™‚ã«enbugã—
+ ãŸã‚ˆã†ã ï¼Ž
+
+ * signal.c: システムコールã®å†å®šç¾©ã‚’æ­¢ã‚ãŸï¼Ž
+
+ * io.c(select): write/exceptã®ãƒ•ラグ設定ã«ãƒã‚°ï¼Ž
+
+ * Makefile.in: static link用オプションをMake変数ã¨ã—ã¦ç‹¬ç«‹ã•ã›ãŸï¼Ž
+
+Tue Dec 20 00:46:19 1994 Yukihiro Matsumoto (matz@dyna)
+
+ * 0.63 released
+
+ * eval.c(rb_call): superã®å‘¼ã³å‡ºã—ã§è½ã¡ã‚‹ï¼Žargc, argvã®è¨­å®šã‚’忘れ
+ ã¦ã„ãŸï¼Ž
+
+ * parse.y(read_escape): 展開エラー.
+
+ * variable.c: 定義済ã¿ã®å¤‰æ•°ã®hookを変更ã—ãªã„よã†ã«ï¼Ž
+
+Mon Dec 19 12:01:10 1994 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y(cond): æ¡ä»¶å¼ã«ä»£å…¥å¼ãŒç½®ã‹ã‚ŒãŸå ´åˆï¼Œ`-v'オプションã§è­¦
+ 告ãŒå‡ºã‚‹ã‚ˆã†ã«ï¼Ž
+
+ * parse.y(**): 冪乗演算å­`**'ã®å„ªå…ˆé †ä½ã‚’å˜é …演算å­ã‚ˆã‚Šé«˜ãã—ãŸï¼Ž
+
+ * parse.y(and,or): 優先順ä½ã®ä½Žã„演算å­`and', `or'.
+
+ * 0.62 released.
+
+ * eval.c: ä¸å¿…è¦ã«ãªã£ãŸPUSH_ENV, POP_ENVを減らã—ãŸï¼Ž
+
+ * env.h: ENVIONã‹ã‚‰selfã‚’ã¯ãšã—ãŸï¼ŽPUSH_ENVã¯superã®æº–å‚™ã®ãŸã‚ã ã‘
+ ã«ç”¨ã„ã‚‹ã“ã¨ã«ã—ãŸï¼Ž
+
+ * eval.c: 下記ã®ã‚ªãƒ–ジェクト化ã§é…ããªã£ãŸå®Ÿè¡Œé€Ÿåº¦ã‚’ã‚‚ã¨ã«æˆ»ã—ãŸï¼Ž
+
+Mon Dec 17 23:01:10 1994 Yukihiro Matsumoto (matz@ix-02)
+
+ * eval.c: env.{argv,argc}ã¨scope.local_varsã®ã‚ªãƒ–ジェクト化.
+
+ * eval.c: 1スコープ内ã§è¤‡æ•°Blockを生æˆã—ãŸã¨ãã®ãƒã‚°ã‚’修正.
+
+Fri Dec 16 15:52:06 1994 Yukihiro Matsumoto (matz@ix-02)
+
+ * parse.y: `&&'ã¨`||'ã®ä¸¡è¾ºã¯ã„ã¤ã§ã‚‚æ¡ä»¶å¼ã¨ã—ãŸï¼Ž
+
+Thu Dec 15 00:16:04 1994 Yukihiro Matsumoto (matz@dyna)
+
+ * eval.c(Block): Blockオブジェクトを実ç¾ï¼Ž
+
+ * node.h: NODE_QLISTã¯ãªããªã£ãŸï¼Ž
+
+ * eval.c(rb_call): 引数ã¸ã®ä»£å…¥ã‚’åå‰ã§ä¸€ã¤ãšã¤ä»£å…¥ã™ã‚‹ã®ã‚’ã‚„ã‚ã¦ï¼Œ
+ 一度ã«ã‚³ãƒ”ーã™ã‚‹ã‚ˆã†ã«ã—ãŸï¼Ž
+
+ * eval.c(rb_call): rubyã§è¨˜è¿°ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã¸ã®å¼•数渡ã—ã‚’inline化.
+
+ * eval.c: イテレータ判定処ç†ã®å…¨é¢æ›¸ãæ›ãˆï¼Žä¸é©åˆ‡ãªã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿å‘¼ã³
+ 出ã—ã‚’ãªãã—ãŸï¼Žä¾‹ãˆã°ã€Œ[foo(),bar()]{i|baz(i)}ã€ã§fooã‚‚barもイ
+ テレータã¨ã—ã¦å‘¼ã³å‡ºã•れ*ãªã„*.
+
+ * eval.c(rb_call): SCOPE処ç†ã‚’inline化.メソッド呼ã³å‡ºã—ã®è‹¥å¹²ã®é«˜
+ 速化.
+
+Wed Dec 14 18:09:33 1994 Yukihiro Matsumoto (matz@ix-02)
+
+ * node.h: nodeもオブジェクトã«ã™ã‚‹ï¼Žã‚ˆã£ã¦GCã§å›žåŽã•れる.
+
+Thu Dec 8 14:17:29 1994 Yukihiro Matsumoto (matz@ix-02)
+
+ * 0.60 released - alpha test baseline.
diff --git a/doc/ChangeLog-1.8.0 b/doc/ChangeLog-1.8.0
new file mode 100644
index 0000000000..3f7d6bfb3c
--- /dev/null
+++ b/doc/ChangeLog-1.8.0
@@ -0,0 +1,24350 @@
+Mon Aug 4 17:21:19 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (class_instance_method_list): methods defined in
+ singleton class and extended modules should be included.
+ [ruby-dev:21119]
+
+Mon Aug 4 13:05:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_proc): should specify YIELD_FUNC_SVALUE.
+ [ruby-dev:21107]
+
+ * marshal.c (w_object): should not call w_extended for USRMARSHAL
+ dump. [ruby-dev:21106]
+
+Mon Aug 4 10:42:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/ui/console/testrunner.rb: Flushed io in the
+ Console::TestRunner so that it will output immediately.
+
+Mon Aug 4 10:27:22 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.h: remove unnecessary parentheses. [ruby-dev:20879]
+
+Mon Aug 4 10:00:47 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (receive_responses): raise exception to
+ client_thread. Thanks to William Webber.
+
+Mon Aug 4 09:22:53 2003 William Webber <wew@williamwebber.com>
+
+ * lib/net/imap.rb: convert RD to RDoc.
+
+Mon Aug 4 02:34:05 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_utime): never use utime() of C runtime.
+ [ruby-talk:77782]
+
+Sun Aug 3 23:56:50 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call_super): should propagate previous block for
+ super call. [ruby-talk:77884]
+
+Sun Aug 3 22:07:47 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkentry.rb: support 'validatecommand' option of
+ TkEntry/TkSpinbox widget
+
+ * ext/tk/sample/{demos-en,demos-jp}/spin.rb: add
+
+Sun Aug 3 19:25:28 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (call_trace_func): clear exception flag temporarily.
+ [ruby-dev:21090]
+
+Sun Aug 3 18:03:44 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * regex.h (re_mbctab): should refer to RUBY_EXPORT. [ruby-ext:02199]
+
+ * lib/un.h (help): new. % ruby -run -e help cp
+
+Sun Aug 3 08:53:06 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/{demos-en,demos-jp}/image3.rb: add
+
+ * ext/tk/lib/tkcanvas.rb: bug fix on Tk object ID management
+
+ * ext/tk/lib/tktext.rb: ditto
+
+Sun Aug 3 02:55:52 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * process.c: modify macro to detect 'MacOS X' [ruby-talk:77849]
+
+ * ext/tcltklib/lib/tcltk.rb: bug fix ( NOT MAINTAINED : only
+ for running 'line2.rb' demo. )
+
+Sun Aug 3 02:45:06 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * numeric.c (flo_to_s): get rid of buffer overflow.
+
+Sat Aug 2 23:51:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (appendline): clearerr(3) before raising exception, since
+ exception may be captured by rescue. [ruby-talk:77794]
+
+Sat Aug 2 09:58:13 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix --- TkGrid failed to treat
+ RELATIVE PLACEMENT
+
+ * ext/tk/sample/demos-en/, demos-jp/: add or modify some
+ widget demo scripts
+
+Sat Aug 2 20:59:38 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/https.rb: change an option name.
+ :SSLCertStore -> :SSLCertificateStore.
+
+Sat Aug 2 19:18:40 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: respond_to? needs 2nd argument.
+ Thanks Jim Bob. [ruby-talk:77796]
+
+Sat Aug 2 15:11:54 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (--no-undefined): annoying option removed.
+
+Sat Aug 2 14:53:55 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (pkg_config): get configuration by pkg-config. [new]
+
+ * ext/openssl/extconf.rb: use pkg_config.
+
+Sat Aug 2 13:45:17 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c: add "#pragma weak" for __libc_ia64_register_backing_store_base.
+ [ruby-dev:21072]
+
+Sat Aug 2 14:02:39 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (classname): find regular class name if not set.
+ [ruby-dev:20496]
+
+Sat Aug 2 09:58:13 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix --- forgot to entry a widget class
+ name of 'labelframe' widget
+
+ * ext/tk/sample/{demos-en,demos-jp}/{labelframe.rb,paned1.rb,
+ paned2.rb,spin.rb}: add demo-scripts to the JP/EN widget demos
+
+Sat Aug 2 05:04:30 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkentry.rb: bug fix of TkEntry#delete
+
+ * ext/tk/samples/: bug fix of some widget demos
+
+ * ext/tk/lib/tk.rb: support <TkVariable object> == <Symbol>
+
+ * ext/tk/lib/*.rb: freeze some object for security reason
+
+Sat Aug 2 03:30:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_obj_singleton_methods): should not go up to
+ ancestors unless the recursive flag is set. [ruby-list:38007]
+
+ * eval.c (rb_yield_0): expand [] to nil if avalue is set.
+ [ruby-dev:21058]
+
+ * hash.c (env_each_key): use env_keys to avoid environment modify
+ on the fly.
+
+ * hash.c (env_each_value): use env_values for safety.
+
+ * hash.c (env_each): allocate environment array first.
+
+Fri Aug 2 03:20:00 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * lib/yaml/store.rb (YAML::Store#initialize): filename is first
+ argument. Thanks Kent Dahl.
+
+Sat Aug 2 00:49:31 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: refine document.
+
+Fri Aug 1 23:57:45 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_mark_locations): no need to swap arguments.
+
+ * gc.c (STACK_LENGTH): insufficient for growing up stack
+ architectures.
+
+ * gc.c (rb_gc, Init_stack) ditto.
+
+Fri Aug 1 23:33:36 2003 Masatoshi Seki <mas@snow.local.>
+
+ * rubytest.rb: set dldpath on darwin.
+
+Fri Aug 1 23:07:38 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: convert RD to RDoc. Thanks William Webber.
+ [ruby-doc:456]
+
+Fri Aug 1 19:48:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_emitter_write_m): forgot to declare
+ "self", making it default to "int".
+
+ * ext/syck/rubyext.c (syck_emitter_simple_write): ditto.
+
+ * gc.c (rb_gc): should mark backing store region on IA64.
+
+Fri Aug 1 18:51:10 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * process.c: bug fix --- preprocessor errors occur on OpenBSD-current
+
+Fri Aug 1 17:13:23 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: should replace literally.
+
+Fri Aug 1 16:22:57 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_check_readable, rb_io_check_writable): ensure not
+ closed at first.
+
+ * io.c (rb_io_getline): check readable always. (ruby-bugs:PR#1069)
+
+ * io.c (rb_io_each_byte): ditto.
+
+Fri Aug 1 16:02:46 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (READ_DATA_PENDING_PTR): cast to get rid of warnings.
+
+ * ext/socket/socket.c (unix_send_io, unix_recv_io): ditto.
+
+Fri Aug 1 15:53:24 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (isInternalCmd): shouldn't return if find end of str.
+ [ruby-talk:77678]
+
+Fri Aug 1 13:45:14 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call_super): propagate previous block if a block is
+ given. [ruby-talk:77577]
+
+Fri Aug 1 09:54:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fill): array length may be changed during the
+ block execution. [ruby-talk:77579]
+
+ * array.c (rb_ary_zip): ditto.
+
+ * array.c (rb_ary_fill): ditto.
+
+ * hash.c (env_reject_bang): length may be changed during the block
+ execution.
+
+ * hash.c (env_clear): ditto.
+
+Fri Aug 1 04:58:55 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix --- forget to eval given block to
+ TkRoot.new method
+
+ * ext/tk/sample/tkoptdb-safeTk.rb: new sample script
+
+Fri Aug 1 00:52:58 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (Init_stack): IA64 requires STACK_LEVEL_MAX to be less than
+ magic number when optimizer turned on, regardless of rlimit
+ values.
+
+Thu Jul 31 23:44:00 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb: import erb-2.0.4b4.
+
+Thu Jul 31 23:04:45 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/resource.en, ext/tk/sample/resource.jp:
+ wrong resource file format
+
+ * ext/tk/lib/tk.rb: add Tk::Encoding.{encoding_convertfrom,
+ encoding_convertto}
+
+ * ext/tk/lib/tk.rb: add TkOptionDB.read_with_encoding to read
+ non-utf8 resource file
+
+Thu Jul 31 23:02:47 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/etc/etc.c: revert getenv()'s prototype. use it only when _WIN32
+ is not defined.
+
+Thu Jul 31 20:52:40 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: (IMPORTANT BUG FIX) scan of event keywords
+ doesn't work on recent versions of Tck/Tk
+
+ * ext/tk/lib/tk.rb: initialize error of instance variable on
+ TkComposite
+
+ * ext/tk/lib/multi-tk.rb: initialize error on encoding-system on
+ MultiTkIp
+
+ * ext/tk/lib/tk.rb: trouble on destroying widgets
+
+ * ext/tk/sample/demos-en/, demos-jp/: add JP and EN version of
+ Ruby/Tk widget demos
+
+Thu Jul 31 15:25:12 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (rb_ary_collect): must get length of array for each
+ iteration. reported on [ruby-talk:77500], and fixed by
+ K.Sasada <ko1@namikilab.tuat.ac.jp> on [ruby-talk:77504]
+
+Thu Jul 31 14:11:54 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: move gmake specific features
+ into GNUmakefile.
+
+Thu Jul 31 12:36:11 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * bin/erb, lib/erb.rb: add explicit trim mode.
+
+Thu Jul 31 04:59:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (rb_num_coerce_relop): export function.
+
+Thu Jul 31 08:18:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit.rb: A useful return code is now set if tests fail when
+ running automatically using the Console::TestRunner.
+
+Thu Jul 31 07:59:18 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: wrap the command-proc of TkScale --- pass
+ the numeric object to the proc
+
+ * ext/tk/lib/tk.rb: better support for widgets created on
+ Tk interpreter (without Ruby)
+
+ * ext/tk/lib/multi-tk.rb: a little more stable on Multiple Tk
+ interpreters running
+
+Thu Jul 31 00:17:19 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (return_code): obsolete.
+
+ * lib/net/ftp.rb (last_response_code): new method. lastresp is now
+ alias to last_response_code.
+
+ * lib/net/ftp.rb (last_response): new method.
+
+Wed Jul 30 23:55:44 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): check has been dropped. "_dump must return
+ string." [ruby-dev:21024]
+
+Wed Jul 30 22:35:19 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (dir_config): allow multiple directories separated
+ by File::PATH_SEPARATOR.
+
+ * lib/mkmf.rb (create_makefile): DLDFLAGS include $LDFLAGS again.
+ [ruby-talk:76894]
+
+ * lib/mkmf.rb (init_mkmf): not default $LDFLAGS to LDFLAGS for
+ ruby itself, but default $DLDFLAGS to DLDFLAGS.
+
+Wed Jul 30 16:17:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): marshal_dump should not take any
+ argument.
+
+Wed Jul 30 15:54:04 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_initialize): should initialize
+ instance variables. [ruby-talk:77362]
+
+Wed Jul 30 15:39:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): -F set compiled regular expression to $;.
+ [ruby-talk:77381]
+
+ * string.c (Init_String): no setter type check for $;
+
+Wed Jul 30 15:10:02 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * error.c (rb_raise): snprintf() termination moved to
+ win32/win32.c.
+
+ * win32/win32.c (valid_filename, str_grow): unused.
+
+ * win32/win32.c (NTLoginName, ChildRecord): make static.
+
+ * win32/win32.c (CreateChild): argument check.
+
+ * win32/win32.c (kill): should not call CloseHandle() when
+ OpenProcess() failed.
+
+ * win32/win32.c (rb_w32_vsnprintf, rb_w32_snprintf): ensure buffer
+ terminated. [ruby-talk:69672]
+
+Wed Jul 30 10:54:10 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (get): fix wrong argument name. Thanks to William
+ Webber.
+
+Wed Jul 30 10:31:37 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/iconv/iconv.c (iconv_convert): append unchanged portion
+ after overflow. [ruby-dev:21006]
+
+ * ext/iconv/extconf.rb: check if iconv() 2nd argument is const.
+
+Wed Jul 30 09:31:55 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (os2-emx): renamed from os2_emx, add flags to
+ CFLAGS and LDFLAGS, and remove lib prefix. [ruby-dev:20993]
+
+ * file.c (rb_file_s_rename): retry with removing new file on
+ DOSISH. [ruby-dev:21007]
+
+ * ext/socket/extconf.rb (sendmsg, recvmsg): check functions.
+
+ * ext/socket/socket.c (unix_send_io, unix_recv_io): raise
+ NotImplementedError unless system calls are available.
+
+ * ext/socket/socket.c (sock_initialize): rename from sock_init()
+ to get rid of conflict with OS/2 socket library.
+
+Wed Jul 30 07:23:14 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkentry.rb: fix lack of methods for TkEntry
+
+ * ext/tk/lib/multi-tk.rb, ext/tk/lib/tk.rb,
+ ext/tk/lib/tkdialog.rb, ext/tk/lib/tkentry.rb,
+ ext/tk/sample/safe-tk.rb, ext/tk/sample/tktimer2.rb: bug fix
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp.new_* accept a block to
+ eval under the new interpreter
+
+Wed Jul 30 04:36:30 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c,
+ ext/tk/lib/tk.rb, ext/tk/lib/tkafter.rb: additional check of
+ Tk interpreters' status for a little more safety
+
+Wed Jul 30 02:37:12 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): if object responds to 'marshal_dump',
+ Marshal.dump uses it to dump object. unlike '_dump',
+ marshal_dump returns any kind of object.
+
+ * marshal.c (r_object0): restore instance by calling
+ 'marshal_load' method. unlike '_load', it's an instance
+ method, to handle cyclic reference.
+
+ * marshal.c (marshal_load): all objects read from file should be
+ tainted. [ruby-core:01325]
+
+Wed Jul 30 01:47:51 2003 Hugh Sasse <hgs@dmu.ac.uk>
+
+ * lib/timeout.rb (Timeout::timeout): execute immediately if sec is
+ zero.
+
+Wed Jul 30 01:36:18 2003 Aron Griffis <ruby-talk@griffis1.net>
+
+ * ext/socket/socket.c (socks_init): typo fixed. [ruby-talk:77232]
+
+Wed Jul 30 00:48:43 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/extconf.rb: the default value for --enable-socks is
+ taken from ENV["SOCKS_SERVER"]. [ruby-talk:77232]
+
+ * ruby.c (proc_options): add -W option. -W0 to shut up all warning
+ messages. [ruby-talk:77227]
+
+ * error.c (rb_warn): no message will be printed if the value of
+ $VERBOSE is "nil", i.e. perfect silence.
+
+ * ruby.c (verbose_setter): $VERBOSE value is either true, false,
+ or nil.
+
+ * io.c (Init_IO): no "read" check for $stdin. in addition some
+ function names has been changed.
+
+Tue Jul 29 23:10:19 2003 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * regex.c (re_match_exec): incorrect multibyte match.
+
+Tue Jul 29 22:36:50 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb (send0): do taint check only when $SAFE > 0
+
+Tue Jul 29 19:20:34 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (install): support preserve timestamp.
+
+ * instruby.rb (install): use FileUtils::install preserve mode.
+
+ * lib/un.rb: new. % ruby -run -e cp -- -p foo bar
+
+ * lib/mkmf.rb: use un.rb instead of ftools.rb.
+
+ * MANIFEST: add lib/un.rb.
+
+ * ext/extmk.rb (INSTALL_PROG, INSTALL_DATA): modify verbose messages.
+
+Tue Jul 29 18:55:22 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: unify coding style.
+
+ * lib/net/http.rb: ditto.
+
+Tue Jul 29 17:27:59 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.h (LLONG_MIN): fix typo.
+
+Tue Jul 29 16:38:44 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP::send0): add taint check.
+
+Tue Jul 29 15:41:02 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb (install): preserve the timestamp for Mac OS X ranlib
+ problem.
+
+Tue Jul 29 01:14:51 2003 Rick Ohnemus <rick_ohnemus@acm.org>
+
+ * ruby.h (LLONG_MIN): wrong value.
+
+Mon Jul 28 22:57:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_getc): $stdin may not be IO. [ruby-dev:20973]
+
+Tue Jul 29 16:20:36 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: bug fix and
+ change mainloop_abort_on_no_widget_cmd => mainloop_abort_on_exception
+ ( to avoid thread timing trouble on accessing destroyed widgets )
+
+ * ext/tk/lib/multi-tk.rb: change default mode of
+ mainloop_abort_on_exception on multi-tk.rb
+
+ * ext/tk/lib/multi-tk.rb: fix a bug of the procedure for
+ 'Delete' button on the safe-Tk frmae
+
+Tue Jul 29 12:22:28 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c: prefixed many constants and definitions
+ with YAML_ to avoid name clash.
+
+ * ext/syck/gram.c: ditto.
+
+ * ext/syck/gram.h: ditto.
+
+Tue Jul 29 12:15:37 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/etc/etc.c: add real prototype to getenv().
+
+ * win32/win32.h: add arguments to definitions of functions if possible.
+
+Tue Jul 29 08:05:30 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tkdialog.rb, ext/tk/lib/tktext.rb,
+ ext/tk/sample/tkbiff.rb, ext/tk/sample/tkdialog.rb,
+ ext/tk/sample/tkform.rb: bug fix ( tested with Ruby/Tk widget demo )
+
+Tue Jul 29 04:22:08 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/syck.h: Added 'syck' yacc prefixes.
+
+ * ext/syck/gram.c: ditto.
+
+ * ext/syck/token.c: ditto.
+
+ * ext/syck: Added ruby.h reference to source files.
+
+Tue Jul 29 03:53:28 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/net/https.rb (use_ssl=): raise ProtocolError if
+ connection is set up already.
+
+Tue Jul 29 01:45:32 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: use RTEST()
+
+Tue Jul 29 01:24:32 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: bug fix
+
+ * ext/tk/lib/multi-tk.rb: bug fix and pack options are pssed
+ to the safeTk container
+
+ * ext/tk/sample/safe-tk.rb: add example for pack options of
+ safeTk container
+
+Mon Jul 28 23:23:08 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (Init_File): IO should include File::Const.
+ [ruby-dev:20964]
+
+Mon Jul 28 18:53:03 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: check again after pkg-config for MinGW on
+ Cygwin.
+
+Mon Jul 28 15:32:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_gets): only "gets" should set $_.
+
+ * ext/stringio/stringio.c (strio_getline): should not set $_ here.
+
+ * io.c (argf_to_s): argf.to_s returns "ARGF".
+
+ * io.c (set_defout_var, set_deferr_var): make $defout and $deferr
+ obsolete.
+
+ * io.c (set_input_var, set_output_var): allow $stdin, $stdout,
+ $stderr not to be instance of IO.
+
+ * io.c (rb_f_readline): forward method to current_file. gets,
+ readline, readlines, getc, readchar, tell, seek, pos=, rewind,
+ fileno, to_io, eof, each_line, each_byte, binmode, and closed?
+ as well.
+
+ * io.c (argf_forward): utility function to forward method to
+ current_file.
+
+Mon Jul 28 06:10:13 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: bug fix
+
+ * ext/lib/tk/multi-tk.rb: bug fix
+
+ * ext/lib/tk/multi-tk.rb: add methods depend on Tcl's 'interp' command
+
+ * ext/lib/tk/multi-tk.rb: suppot safe-level control of each interpreter
+
+Mon Jul 28 03:08:47 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: each() should return self.
+
+Mon Jul 28 01:35:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): defer rb_str_modify() to actual
+ modify point. other methods, replace, tr, delete, squeeze,
+ lstrip, and rstrip as well.
+
+ * string.c (rb_str_rstrip_bang): remove trailing '\0' at the end
+ of string.
+
+ * string.c (rb_str_lstrip_bang): do not strip '\0' from the left.
+
+Sun Jul 27 21:16:30 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: better support MinGW. add
+ dir_config("kerberos") and with_config("pkg-config").
+
+ * mkconfig.rb: initialize global variables to avoid warnings.
+
+Sun Jul 27 19:35:06 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: add some methods to support
+ multiple interpreters (low level)
+
+ * ext/tk/lib/multi-tk.rb: new library to support multiple Tk
+ interpreters (high level)
+
+ * ext/tcltklib/demo/safeTk.rb: new sample of safeTk interpreter
+
+ * ext/tk/sample/safe-tk.rb: new sample of multi-tk.rb
+
+ * ext/tk/lib/tk.rb: bug fix and add feature to supprt multi-tk
+
+ * ext/tk/lib/tkafter.rb: ditto
+
+Sun Jul 27 14:43:37 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/debug.rb: fix breakpoint parameter parsing/checking.
+ (?:(file|class):)(line_number|method)
+
+Sun Jul 27 10:21:28 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/unix.rb: add UNIXFileOwner, UNIXFileGroup.
+
+Sun Jul 27 03:10:43 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (io_reopen): avoid dup2() equal handles not to close itself and
+ to get rid of a msvcrt bug. [ruby-dev:20919]
+
+Sun Jul 27 00:37:16 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/tmpdir.rb: use GetWindowsDirectory, not GetSystemDirectory.
+ [ruby-talk:77073]
+
+Sat Jul 26 21:25:21 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_fdopen): set errno if it's zero on win32 platforms.
+
+ * ext/openssl/ossl_ssl.c (TO_SOCKET): define special version when
+ _WIN32 is defined. this is ruby's problem, not OpenSSL.
+
+ * win32/win32.c: remove some old comments.
+
+Sat Jul 26 14:26:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/tk/lib/tk.rb (TkCore::chooseDirectory): back up wrongly
+ removed method.
+
+Sat Jul 26 14:14:12 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/stringio/stringio.c: includes Enumerable as well as IO.
+ [ruby-talk:77058]
+
+Sat Jul 26 07:00:53 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb: fix % line.
+
+Sat Jul 26 05:31:09 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.h: fix comment.
+
+ * ext/openssl/ossl.c (ossl_debug): should enable if no va-args
+ macro supplied.
+
+Sat Jul 26 04:04:36 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: refine va-args macro detection.
+ [ruby-talk:76983]
+
+Sat Jul 26 01:33:51 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_setup): need to pass the real
+ socket to SSL_get_fd on native win32 platforms.
+
+Sat Jul 26 01:20:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_const_missing): "const_missing" should not
+ appear in the caller(); add call frame adjustment.
+
+ * eval.c (rb_method_missing): simplify call frame adjustment.
+
+Fri Jul 26 00:04:25 2003 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * ext/openssl/sample: add samples.
+ - cert2text.rb: dump certificate file as text.
+ - crlstore.rb: CRL store implementation. Fetch CRL via HTTP when
+ http-access2 is installed.
+ - certstore.rb: certificate store implementation.
+ - cert_store_view.rb: certificate store viewer with FXRuby. Uses
+ c_rehash.rb, crlstore.rb and certstore.rb.
+
+Fri Jul 25 16:43:03 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: add TclTkIp#create_slave,
+ TclTkIp#_make_safe and TclTkIp#safe?
+
+ * ext/tcltklib/MANUAL.euc: modify descriptions
+
+ * ext/tk/lib/tk.rb: bug fix [ruby-talk:76980] and modify to
+ support multi Tk IPs
+
+ * ext/tk/lib/tkafter.rb: modify to support multi Tk IPs
+
+Fri Jul 25 15:47:39 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for BN_rand_range() and
+ BN_pseudo_rand_range().
+
+ * ext/openssl/ossl_bn.c (ossl_bn_s_rand_range): should raise
+ NotImplementedError if BN_rand_range() wan not defined.
+
+ * ext/openssl/ossl_bn.c (ossl_bn_s_pseudo_rand_range): should raise
+ NotImplementedError if BN_pseudo_rand_range() wan not defined.
+
+ * ext/openssl/ossl_pkcs7.c (ossl_pkcs7_s_encrypt): avoid compiler
+ warning for OpenSSL-0.9.6.
+
+ * ext/openssl/ossl_pkcs7.c (ossl_pkcs7si_initialize): ditto.
+
+Fri Jul 25 14:34:55 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (tcp_s_gethostbyname): was using
+ uninitialized size_t value. [ruby-talk:76946]
+
+Fri Jul 25 13:38:38 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * re.c (rb_reg_options_m): use rb_reg_options() to mask internal
+ flags.
+
+ * re.c (rb_reg_initialize_m): allow nil as third argument and
+ ignore, and mask code flags if the argument is given.
+ [ruby-dev:20885]
+
+ * re.c (rb_reg_options): get common flags directly.
+
+Fri Jul 25 03:52:21 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * lib/yaml/dbm.rb: replace indexes with values_at.
+
+Fri Jul 25 02:55:59 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for libsocket and libnsl.
+
+ * ext/openssl/extconf.rb: use pkg-config to build CFLAGS and LDFLAGS.
+
+Fri Jul 25 01:27:59 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/emitter.c (syck_emitter_flush): accepts count
+ of bytes to flush. anchor offsets now functional.
+
+ * ext/syck/syck.h (syck_emitter_flush): ditto.
+
+ * ext/syck/rubyext.c: ditto.
+
+ * ext/syck/token.c: URI escaping now supported.
+
+Thu Jul 24 16:41:31 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (have_type): check if a type is defined.
+
+ * lib/mkmf.rb (check_sizeof): check size of a type.
+
+ * ext/dbm/extconf.rb: check if type DBM is defined.
+ [ruby-talk:76693]
+
+Thu Jul 24 16:18:40 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ChangeLog (add-log-time-format): "%c" contains timezone on
+ XEmacs.
+
+Thu Jul 24 16:05:22 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (AC_C_VOLATILE): check if volatile works.
+
+ * defines.h (volatile): removed.
+
+ * eval.c (rb_thread_group): Thread#group. [new]
+
+Thu Jul 24 15:50:42 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for win32 OpenSSL libraries.
+
+ * ext/openssl/extconf.rb: add check for __VA_ARGS__.
+
+ * ext/openssl/ossl.h: avoid non C99 compiler errors.
+
+Thu Jul 24 13:32:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (thgroup_add): no warning for terminated threads.
+
+Thu Jul 24 13:09:26 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: added.
+
+Thu Jul 24 11:21:10 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/io/wait/extconf.rb: removed unnecessary backward
+ compatibility stuff.
+
+Thu Jul 24 11:09:10 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: revert use of dir_config.
+
+Thu Jul 24 09:58:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/lib/win32/resolv.rb: added.
+
+ * lib/resolv.rb: support Win32 platforms. based on Tietew's work
+ [ruby-dev:15573].
+
+Thu Jul 24 04:05:46 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ssl.h: undef X509_NAME and PKCS7_SIGNER_INFO to
+ avoid name confliction on mswin32.
+
+ * ext/openssl/ssl.c (ossl_protect_obj2bio): avoid VC++ warnings
+ in function prototype.
+
+ * ext/openssl/ssl.c (ossl_protect_membio2str): ditto.
+
+ * ext/openssl/ssl.c (ossl_protect_x509_ary2sk): ditto.
+
+Thu Jul 24 03:44:04 2003 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * ext/openssl/extconf.rb: cut check for OpenSSL version
+
+Thu Jul 24 03:41:30 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tcltklib/tcltklib.c (ip_init): need at least one statement after
+ label.
+
+Thu Jul 24 01:48:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::[]): should return StringIO (or
+ Tempfile) for multipart/form.
+
+ * variable.c (rb_define_const): give warning for non constant
+ name. [ruby-core:01287]
+
+Thu Jul 24 01:51:08 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick: imported.
+
+ * MANIFEST: added webrick files.
+
+Thu Jul 24 01:32:04 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/tmpdir.rb (tmpdir): new method. remove TMPDIR.
+ use GetSystemWindowsDirectory(GetSystemDirectory), not GetTempPath.
+
+Thu Jul 24 01:08:43 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl: imported.
+
+Wed Jul 23 23:06:59 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (DOSISH): better Cygwin support.
+
+Wed Jul 23 19:13:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_split_m): the receiver may be empty string.
+
+Wed Jul 23 18:43:00 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb: import erb-2.0.4b1.
+
+Wed Jul 23 18:21:52 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/io/wait: imported.
+
+Wed Jul 23 16:07:35 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * process.c: unify indentation
+
+ * configure.in: add --enable-setreuid option
+
+ * ext/tcltklib/tcltklib.c: TclTkIp.new accepts 'ip-name' and 'options'
+
+ * ext/tk/lib/tk.rb: support arguments of TclTkIp.new
+
+ * ext/tk/lib/tk*.rb: preparations for multi-Tk interpreter support
+
+Wed Jul 23 15:49:01 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lstrip_bang): strip NUL along with white
+ spaces. [ruby-talk:76659]
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+Wed Jul 23 14:19:17 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (log_src, checking_for, create_header):
+ Logging.message is printf like format.
+
+Wed Jul 23 10:11:15 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/iconv/iconv.c (check_iconv): check if Iconv instance.
+
+ * ext/iconv/iconv.c (iconv_convert): stringify argument.
+
+Wed Jul 23 02:39:46 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * process.c: add a module for raw syscalls to control UID/GID
+
+ * process.c: add modules for portable UID/GID control
+
+Tue Jul 22 19:16:40 2003 Tanaka Akira <akr@m17n.org>
+
+ * ext/iconv/iconv.c (iconv_failure_initialize): limit
+ inspect message. [ruby-dev:20785]
+
+ * ext/iconv/iconv.c (rb_str_derive): share with original
+ string if possible. [ruby-dev:20785]
+
+Tue Jul 22 17:22:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_const_missing): new method. [ruby-core:00441]
+
+ * variable.c (rb_const_get_at): allow "const_missing" hook.
+
+ * variable.c (rb_const_get_0): ditto.
+
+ * eval.c (method_missing): rename from rb_undefined to clarify.
+
+ * eval.c (ruby_finalize_0): update exit status if any of END proc
+ raises SystemExit. [ruby-core:01256]
+
+ * signal.c (rb_trap_exit): wrap rb_eval_cmd
+
+ * eval.c (rb_exec_end_proc): reduce rb_protect().
+
+Tue Jul 22 17:15:57 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST (lib/cgi/session/pstore.rb, lib/yaml/baseemitter.rb):
+ added.
+
+Tue Jul 22 10:52:19 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/tmpdir.rb: remove charcters after "\000" and regularize path.
+
+Tue Jul 22 02:22:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_equal): should not use rb_equal().
+
+ * string.c (rb_str_equal): should return nil for non string
+ operand to conform comparable convention. [ruby-dev:20759]
+
+Tue Jul 22 00:19:19 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tmpdir.rb: new library to get temporary directory path,
+ using GetTempPath on Win32 environment.
+
+ * lib/tempfile.rb: now uses tmpdir.rb.
+
+ * lib/cgi/session.rb, ib/drb/unix.rb: ditto.
+
+Mon Jul 21 01:53:43 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_string_value_cstr): check null byte in the string
+ before retrieving C ptr. accessed via macro StringValueCStr.
+
+ * file.c: use StringValueCStr to retrieve paths to system calls.
+
+ * file.c (sys_fail2): raise error for two operand system calls
+ such as rename, link, symlink. (ruby-bugs PR#1047)
+
+Sun Jul 20 11:03:25 2003 UENO Katsuhiro <katsu@blue.sky.or.jp>
+
+ * ext/zlib/zlib.c (gzfile_read_header): gz->z.input may be nil after
+ finishing reading a gzip header.
+
+Sat Jul 19 22:25:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_match2): add warning to "~string".
+ [ruby-list:37751]
+
+ * lib/net/ftp.rb (Net::FTP::open): takes block. suggested by Gavin
+ Sinclair in [ruby-core:01237].
+
+Sat Jul 19 19:03:24 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/stdlib.c: add bsearch().
+
+Sat Jul 19 12:34:45 2003 David Black <dblack@superlink.net>
+
+ * lib/scanf.rb: import.
+
+Sat Jul 19 11:27:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc: import.
+
+ * eval.c (thgroup_add): should return group for terminated thread
+ case.
+
+ * eval.c (thgroup_add): do not raise ThreadError on terminated
+ thread addition for compatibility. just warning.
+
+Sat Jul 19 04:50:56 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/iconv/charset_alias.rb, ext/iconv/extconf.rb: make wrapper
+ script which maps charset names. [ruby-dev:20625]
+
+ * ext/iconv/iconv.c (charset_map): charset name map.
+
+ * ext/iconv/iconv.c (iconv_dfree): no exception while
+ finalization.
+
+ * ext/iconv/iconv.c (iconv_s_conv): new method Iconv.conv.
+ [ruby-dev:20588]
+
+Sat Jul 19 03:09:18 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/lib/win32/registry.rb (Win32::Registry::Error):
+ inherit StandardError instead of SystemCallError.
+
+Sat Jul 19 02:00:39 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_attr): extra calls of method_added. [ruby-talk:76361]
+
+Fri Jul 18 18:44:22 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (init_mkmf): clear $INSTALLFILES. [ruby-dev:20727]
+
+Fri Jul 18 17:34:39 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (rm_f): use FileUtils.
+
+ * lib/mkmf.rb (modified?): return mtime of the target if
+ it exists and newer than times.
+
+ * lib/mkmf.rb (install_files): add a current directory
+ file even if it does not exist yet.
+
+ * lib/mkmf.rb (configuration): do not add $LDFLAGS to
+ DLDFLAGS.
+
+ * ext/extmk.rb (extmake): check whether Makefile is newer
+ than depend and MANIFEST.
+
+Fri Jul 18 14:57:19 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (make_cmdvector): recognize quote within string.
+ based on Nobu's patch ([ruby-win32:450]). [ruby-talk:75853]
+
+Fri Jul 18 13:04:36 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_missing): VCALL is called only for LOCAL_ID. no
+ check required.
+
+ * parse.y (primary): primary:tFID generates NODE_FCALL.
+ [ruby-dev:20641]
+
+Thu Jul 17 18:50:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (match_captures): rename from "groups".
+
+Thu Jul 17 17:57:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_clear_cache_by_class): check both klass and origin.
+
+Thu Jul 17 13:46:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_init): set ruby_running to true after
+ initialization.
+
+Thu Jul 17 13:42:53 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftools.rb (File::makedirs): do not handle "//" as a directory.
+
+Thu Jul 17 06:40:28 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: recover and fix typo : Tk.chooseDirectory
+ (Tk8.4 feature)
+
+Wed Jul 16 16:23:58 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_proc_new): call svalue_to_avalue for yield argument.
+
+Wed Jul 16 00:31:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_disable_super, rb_enable_super): deprecate.
+
+ * eval.c (thgroup_s_alloc): re-implement group struct.
+
+ * eval.c (thgroup_add): add check for enclose and frozen status.
+
+Tue Jul 15 19:50:49 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_add_method, rb_alias): need to clear cache by
+ ID when method defined in parent class is cached for
+ grand child classes. [ruby-dev:20672]
+
+Tue Jul 15 14:38:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/matrix.rb: remove elements conversion to_f, to_i, to_r.
+
+ * lib/cgi/session/pstore.rb: add new file.
+
+Tue Jul 15 03:30:41 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (syck_mark_emitter): forgot to rb_gc_mark the
+ outgoing IO object.
+
+Sun Jul 13 14:55:36 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * process.c (proc_getgroups, proc_setmaxgroups): fix typo.
+
+Sat Jul 12 17:01:28 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * struct.c (struct_entry): add prototype to avoid VC++ warnings.
+
+Sat Jul 12 04:43:57 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/emitter.c: new emitter code.
+
+ * ext/syck/rubyext.c: Emitter class.
+
+ * lib/yaml.rb: Load Syck emitter, if available.
+
+ * lib/yaml/stream.rb: ditto.
+
+ * lib/yaml/baseemitter.rb: underlying class for all emitters.
+
+ * lib/yaml/rubytypes.rb: use BaseEmitter abstraction.
+
+ * lib/yaml/emitter.rb: ditto.
+
+Sat Jul 12 04:23:13 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_undef): need to clear cache for inherited class.
+ (rubicon/builtin/TestModulePrivate.rb:test_undef_method)
+
+Sat Jul 12 01:21:54 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (avalue_to_svalue): typo.
+
+ * eval.c (rb_load): rb_prohibit_interrupt must not underflow.
+
+ * parse.y (NODE_STRTERM, tokadd_string, parse_string): moved
+ string nest level from a static variable to NODE_STRTERM, to
+ preserve it from word to word in %W/%w.
+
+Fri Jul 11 22:37:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (aix): needs ruby.imp even with gcc.
+ (ruby-bugs:PR#1007)
+
+Fri Jul 11 18:37:37 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb: do not handle directories. [ruby-dev:20613]
+
+Fri Jul 11 16:09:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): exp should be less than MDMAXEXPT.
+
+Fri Jul 11 07:17:47 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: not create a Tcl/Tk interpreter if already
+ defined TkCore::INTERP
+
+ * ext/tk/lib/tk.rb: bugfix on TkWindow#configure
+
+Thu Jul 10 14:42:02 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * math.c (math_log): nan takes a dummy argument on Cygwin 1.5.0.
+
+Wed Jul 9 23:50:46 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * regex.c (mbctab_sjis): 0x80 is not shift jis first byte.
+ [ruby-dev:20516]
+
+Wed Jul 9 15:38:28 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb: do not install shared libraries as man pages.
+
+ * mkconfig.rb: support text-mount on Cygwin.
+
+Wed Jul 9 11:09:57 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (match_entry): add prototype to avoid VC++ warnings.
+
+Wed Jul 9 03:48:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): put rb_load_file() in a thread critical
+ section. [ruby-dev:20490]
+
+ * eval.c (compile): put rb_compile_string() in a thread critical
+ section.
+
+Tue Jul 8 02:35:41 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get_0): should not warn if constant is not
+ defined. (ruby-bugs-ja PR#509)
+
+ * bignum.c (rb_big2dbl): give a warning on overflow.
+ (ruby-bugs-ja PR#510)
+
+ * util.c (ruby_strtod): change MDMAXEXPT from 511 to 308.
+
+ * pack.c (utf8_to_uv): long is sufficient. LONG_LONG is not
+ required.
+
+Tue Jul 8 01:43:16 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * bignum.c (rb_big2str): support 32 bit (without `long long' type)
+ machines. (ruby-bugs-ja PR#512)
+
+Mon Jul 7 10:22:46 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dbm/extconf.rb (gdbm_compat, qdbm): add check for gdbm_compat
+ and qdbm.
+
+Mon Jul 7 01:34:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call_super): k->super maybe NULL if klass is Kernel.
+ [ruby-dev:20519]
+
+ * gc.c (obj_free): clear method cache when freeing class/module.
+
+Sat Jul 5 23:32:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_remove_method): allow "remove_method" to accept
+ multiple arguments.
+
+Sat Jul 5 00:22:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * node.h (NEW_NODE): cast arguments to rb_node_newnode().
+
+Fri Jul 4 21:48:44 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/syck/rubyext.c, ext/syck/syck.c, ext/syck/syck.h,
+ ext/syck/token.c: C++ style comments are not allowed.
+ (ruby-bugs:PR#1008)
+
+Thu Jul 3 23:41:30 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/timeout.rb: add optional exception argument for compatibility
+ function.
+
+Thu Jul 3 14:22:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_values_at): extract common procedure from
+ rb_ary_values_at. follow DRY principle.
+
+ * re.c (match_values_at): values_at should understand ranges.
+
+ * struct.c (rb_struct_values_at): ditto.
+
+ * struct.c (inspect_struct): inspect format changed; add "struct "
+ at the top.
+
+ * sprintf.c (rb_f_sprintf): "%p" specifier for inspect output.
+ (RCR#69)
+
+ * eval.c (rb_mod_undef_method): allow "undef_method" to accept
+ multiple arguments. (RCR#146)
+
+ * lib/timeout.rb: put timeout in Timeout module. (RCR#121)
+ [ruby-talk:61028]
+
+ * re.c (match_groups): new method added. (RCR#139)
+
+ * variable.c (rb_mod_const_of): should exclude constant defined
+ in Object, unless retrieving constants of Object.
+
+Thu Jul 3 12:13:05 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (VPATH): convert from Windows form to Unix form on
+ MinGW. This fixes the build with GNU make 3.80-1 for Cygwin.
+
+Wed Jul 2 23:27:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_new4): do not allocate new string if original
+ is frozen or already have copy-on-write entry. [ruby-talk:74940]
+
+Wed Jul 2 13:22:39 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_shared_replace): clear flags before copy.
+
+ * string.c (rb_str_replace): ditto.
+
+ * eval.c (rb_yield_0): override visibility mode for module_eval
+ etc. (ruby-bugs-ja PR#505)
+
+Wed Jul 2 11:45:34 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: synchronize document with source code.
+
+ * lib/net/pop.rb: ditto.
+
+Wed Jul 2 11:39:50 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: unify SMTP and SMTPCommand.
+
+ * lib/net/smtp.rb: new exception class SMTPError.
+
+ * lib/net/smtp.rb: new exception class SMTPAuthenticationError.
+
+ * lib/net/smtp.rb: new exception class SMTPServerBusy.
+
+ * lib/net/smtp.rb: new exception class SMTPSyntaxError.
+
+ * lib/net/smtp.rb: new exception class SMTPFatalError.
+
+ * lib/net/smtp.rb: new exception class SMTPUnknownError.
+
+ * lib/net/smtp.rb: change critical section protect algorithm.
+
+ * lib/net/smtp.rb (SMTP#do_start): check authentication args
+ before all.
+
+ * lib/net/smtp.rb: new method send_message (alias send_mail).
+
+ * lib/net/smtp.rb: new method open_message_stream (alias ready).
+
+ * lib/net/pop.rb: POPBadResponse is a POPError.
+
+ * lib/net/pop.rb (POPMail#pop): ban ReadAdapter.
+
+ * lib/net/pop.rb (POPMail#top): ditto.
+
+ * lib/net/pop.rb (POP3Command): change critical section protect
+ algorithm.
+
+ * lib/net/pop.rb (POP3Command#auth): USER and PASS should be one
+ critical block.
+
+ * lib/net/pop.rb (POP3Command#retr): ban `dest' argument using
+ iterator.
+
+ * lib/net/pop.rb (POP3Command#top): ditto.
+
+ * lib/net/protocol.rb: #read_message_to -> #each_message_chunk
+
+ * lib/net/protocol.rb: #D -> #LOG
+
+ * lib/net/protocol.rb: #D_off -> #LOG_off
+
+ * lib/net/protocol.rb: #D_on -> #LOG_on
+
+Wed Jul 2 11:10:47 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: set old class aliases for backward
+ compatibility. [ruby-talk:74863]
+
+ * lib/net/protocol.rb: ditto.
+
+Wed Jul 2 01:32:40 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/net/pop.rb (Net::POP3#start): typofix.
+
+Tue Jul 1 22:08:19 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: TkWindow include TkWinfo
+
+ * ext/tk/lib/tk.rb: treat unknown widget classes as subclasses
+ of TkWindow
+
+Tue Jul 1 19:02:12 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * parse.y (rb_intern): should use mbclen instead of mblen.
+
+Tue Jul 1 10:36:19 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * class.c (rb_define_class, rb_define_module): also set constant under
+ Object. [ruby-dev:20445]
+
+ * object.c (boot_defclass): ditto.
+
+ * variable.c (rb_const_get_at, rb_const_get_0, rb_mod_const_at,
+ rb_const_defined, mod_av_set, rb_const_assign): toplevel constants
+ are now under Object, rb_class_tbl remains for GC.
+
+Mon Jun 30 17:53:06 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (mnew): ignore metaclasses have no influence, for rklass.
+ [ruby-talk:74706]
+
+Sun Jun 29 06:59:07 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb, lib/drb/invokemethod.rb: import drb-2.0.4
+ (use LocalJumpError#reason)
+
+Sat Jun 28 12:28:54 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (rb_cv_stack_grow_dir): check stack growing direction.
+
+ * eval.c (rb_thread_restore_context): prior configuration macro.
+
+ * gc.c (ruby_stack_length): always return the address of lower edge.
+
+ * gc.c (rb_gc_mark_locations): remove margin. [ruby-dev:20462]
+
+ * gc.c (rb_gc, Init_stack): prior configuration macro.
+
+ * gc.c (Init_stack): add safety margin.
+
+Fri Jun 27 14:41:22 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_split_m): remove white spaces on the head of
+ the last element, when limit is specified. [ruby-talk:74506]
+
+Fri Jun 27 03:24:54 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (io_fflush): need to check if closed after thread switch.
+ [ruby-dev:20351]
+
+ * io.c (fptr_finalize): ditto.
+
+ * string.c (rb_str_rindex_m): fixed wrong fix. should move backward
+ first only when matching from the end.
+
+Thu Jun 26 21:34:49 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * class.c (class_instance_method_list): get rid of warning about
+ argument type mismatch, and inline method_list().
+ [ruby-core:01198]
+
+Wed Jun 25 14:40:33 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add and modify methods ---
+ TkWidget.database_class, TkWidget.database_classname,
+ TkWidget#database_class, TkWidget#database_classname
+
+ * ext/tk/lib/tk.rb: instances of a subclass of TkToplevel or
+ TkFrame are created with ":class=>subclass" option as default.
+
+ * ext/tk/sample/tkoptdb.rb: add a new part
+
+Wed Jun 25 12:52:58 2003 Matthew Dempsky <jivera@flame.org>
+
+ * class.c (rb_generic_class_instance_methods): merge argument
+ check (and warning) into one function; following DRY principle.
+ [ruby-core:01193]
+
+Wed Jun 25 05:49:10 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add widget destroy hook binding to TkBindTag::ALL
+
+ * ext/tk/lib/tkcanvas.rb: Although requiring manual control of GC,
+ memory eating problem of TkCanvas Items is fixed.
+
+ * ext/tk/lib/tktext.rb: add some methods and bug fix
+
+Wed Jun 25 00:14:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (autoload_delete): should delete Qundef from iv_tbl.
+ (ruby-bugs-ja PR#504)
+
+Tue Jun 24 16:46:07 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix on TkToplevel, TkFrame,
+ TkPanedwindow, TkOptionDB
+
+ * ext/tk/lib/tk.rb: TkOptionDB --- make it more secure to use procs
+ defined on resourceDB
+
+ * ext/tk/sample/tkoptdb.rb, resource.ja, resource.en:
+ sample script how to use TkOptionDB.
+
+Tue Jun 24 14:22:41 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * lib/yaml/types.rb: replaced Kernel::Hash reference with Object::Hash
+ from [ruby-talk:74270]
+
+Tue Jun 24 17:59:30 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_yield_0): show yielded block position not only yielding
+ point. [ruby-dev:20441]
+
+Tue Jun 24 16:47:07 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTPHeader#proxy_basic_auth): missing `@'.
+ Thanks Douglas Koszerek. (ruby-bugs:PR975)
+
+Tue Jun 24 14:31:17 2003 Minero Aoki <aamine@loveruby.net>
+
+ * config.guess: have wrongly returned "alphaev56-unknown-linux-"
+ on Linux/Alpha. [ruby-dev:20434]
+
+Tue Jun 24 04:54:46 2003 Minero Aoki <aamine@loveruby.net>
+
+ * configure.in: always add -mieee for gcc/alpha. [ruby-dev:20429]
+
+Tue Jun 24 02:40:09 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * array.c (rb_ary_unshift_m): need to check number of arguments.
+ [ruby-talk:74189]
+
+Mon Jun 23 23:59:56 2003 Minero Aoki <aamine@loveruby.net>
+
+ * io.c (io_close): missing prototype. [ruby-dev:20422]
+
+ * ext/socket/socket.c (bsock_do_not_rev_lookup_set): ditto.
+
+ * ext/win32ole/win32ole.c (foletype_guid, foletype_progid): ditto.
+
+ * error.c (syserr_initialize): length argument of sprintf() is an
+ int.
+
+Mon Jun 23 23:28:14 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST: add wince files.
+
+ * ext/tk/MANIFEST: add sample/tkmenubutton.rb.
+
+Mon Jun 23 17:40:58 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dir.c (find_dirsep): get rid of warnings.
+
+ * eval.c (error_print): temporary value might be disposed by GC.
+
+ * hash.c (env_has_value, env_index): should not increment NULL.
+
+ * io.c (io_read, rb_io_sysread): not read when length is 0.
+
+ * io.c (rb_io_reopen): ensure initialized IO.
+
+ * io.c (rb_io_init_copy): sychronize file pointer.
+
+ * io.c (rb_io_s_pipe): make exception proof.
+
+ * string.c (rb_str_rindex_m): Fixnum 0 matched end of string.
+
+Mon Jun 23 16:18:12 2003 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_open_file): initialize flags.
+
+ * time.c (time_arg): initialize v[6] even when argc is 10 to
+ avoid valgrind error.
+
+Mon Jun 23 14:22:44 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix on TkRoot and TkToplevel
+
+Mon Jun 23 08:24:01 2003 Florian Frank <flori@nixe.ping.de>
+
+ * string.c (rb_str_upto): generate sequence according to "succ"
+ order. formerly check was done by dictionary order.
+ [ruby-talk:74138]
+
+Mon Jun 23 00:27:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_string_value): fill constant empty string along
+ with setting ELTS_SHARED if str->ptr is NULL. [ruby-core:01179]
+
+ * string.c (rb_string_value_ptr): ditto.
+
+ * string.c (rb_check_string_type): ditto.
+
+Sun Jun 22 23:42:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (str_gsub): move END(0) check before mbclen2().
+
+ * string.c (scan_once): reduce END(0) check.
+
+ * io.c (rb_io_initialize): accept fixnum mode.
+
+ * eval.c (error_print): replace strchr() by memchr(), einfo may
+ contain "\0".
+
+ * pack.c (pack_unpack): range check for "@" move; initialize check
+ for "m".
+
+ * error.c (syserr_initialize): avoid buffer overflow.
+
+ * file.c (rb_file_s_readlink): expand buffer until readlink
+ succeed.
+
+Sun Jun 22 16:17:02 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: TkRoot.new and TkToplevel.new accept Wm
+ commands as elements
+
+ * ext/tk/lib/tk.rb: TkMenu --- add some methods
+
+ * ext/tk/lib/tk.rb: TkOptionMenubutton --- bug fix
+
+ * ext/tk/sample/tkmenubutton.rb: sample of TkMenubutton and
+ TkOptionMenubutton
+
+Sat Jun 21 23:15:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should not propagate distination tag if
+ tag is already handled in this level. (ruby-bugs-ja PR#501)
+
+ * object.c (str_to_id): check for empty string before intern.
+ [ruby-talk:74006]
+
+Sat Jun 21 13:56:09 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/Makefile.sub: undefine HAVE__SETJMP.
+
+ * wince/resource.rb: include winver.h in wince3.0.
+
+Sat Jun 21 12:55:17 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: TkRoot.new and TkToplevel.new accept Wm commands
+ as elements of a hash argument.
+
+ * ext/tk/sample/tktimer2.rb: add comments about the usage of a
+ TkTimer object.
+
+Sat Jun 21 08:47:22 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk*.rb: remove direct-accesses to TkComm::INTERP and
+ TkComm::INITIALIZE_TARGETS
+
+ * ext/tk/lib/tk*.rb: use TkINTERP_SETUP_SCRIPTS constant for setting
+ up the interpreter
+
+ * ext/tcltklib/tcltklib.c: support to create a safe interpreter
+ with safe-Tk
+
+Fri Jun 20 23:28:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should not propagate TAG_BREAK and
+ TAG_RETURN from orphan Proc object. [ruby-core:01148]
+
+Fri Jun 20 15:04:28 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * defines.h (PATH_ENV): name of PATH environment. [new].
+
+ * defines.h (ENV_IGNORECASE): define for case insensitive platforms
+ to access environment variables.
+
+ * dln.c (dln_find_exe): use PATH_ENV instead of "PATH".
+
+ * hash.c (env_delete, rb_f_getenv, env_fetch, rb_env_path_tainted,
+ env_aset): ditto.
+
+ * ruby.c (proc_options): ditto.
+
+Fri Jun 20 14:52:46 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: Tk interpreter returns TAINTED strings.
+
+Fri Jun 20 03:09:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (new_yield): distinguish "yield 1,2" and "yield [1,2]".
+ [ruby-dev:20360]
+
+ * eval.c (rb_eval): support new_yield() change.
+
+ * variable.c (rb_const_get_0): warn for Foo::BAR when BAR is a
+ toplevel constant (i.e. a constant defined under Object).
+ [ruby-list:36935]
+
+ * parse.y (no_blockarg): separate no block argument check and
+ ret_args argument processing.
+
+Fri Jun 20 00:45:19 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: import csv module.
+
+Thu Jun 19 22:51:41 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb.rb, lib/drb/drb.rb, lib/drb/eq.rb,
+ lib/drb/extserv.rb, lib/drb/extservm.rb, lib/drb/gw.rb,
+ lib/drb/invokemethod.rb, lib/drb/observer.rb,
+ lib/drb/timeridconv.rb, lib/drb/unix.rb: import drb-2.0.4b3
+
+Thu Jun 19 16:14:43 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_do_one_event): change default
+ value of the argument
+
+ * ext/tcltklib/tcltklib.c (lib_do_one_event): returns true/false
+
+ * ext/tcltklib/tcltklib.c: add TclTkLib::EventFlag::NONE ( == 0 )
+
+ * ext/tcltklib/tcltklib.c: add set_no_event_wait() and
+ get_no_event_wait()
+
+ * ext/tcltklib/MANUAL.euc: modify
+
+ * ext/tcltklib/README.euc: ditto
+
+ * ext/tk/lib/tk.rb: change default value of TkCore.do_one_event
+ argument
+
+ * ext/tk/lib/tk.rb: add TkCore.set_no_event_wait(wait) and
+ TkCore.get_no_event_wait
+
+ * ext/tk/lib/tk.rb: add Tk.exit ( == destroy root widget )
+
+ * ext/tk/lib/tkafter.rb: rename TkAfter => TkTimer (TkAfter is
+ an alias name)
+
+ * ext/tk/lib/tkafter.rb: set_callback returns self
+
+ * ext/tk/lib/tkafter.rb: continue() raises an exception, if already
+ running or no procedure.
+
+ * ext/tk/lib/tkafter.rb: skip() raises an exception, if not running.
+
+ * ext/tk/sample/tktimer2.rb: new sample for TkTimer class.
+
+Thu Jun 19 16:13:54 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * rubytest.rb: add library path to include standard libraries.
+
+Thu Jun 19 13:13:10 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (env_delete, rb_f_getenv, env_fetch): case insensitive to
+ access environment variables on DOSISH platforms.
+
+Thu Jun 19 00:51:47 2003 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * range.c (rb_range_beg_len): out_of_range check after adjusting
+ end point. [ruby-dev:20370]
+
+Wed Jun 18 23:59:11 2003 Guy Decoux <ts@moulon.inra.fr>
+
+ * parse.y (call_args): the first argument to arg_cancat() should
+ be NODE_LIST. [ruby-core:01151]
+
+Wed Jun 18 23:41:27 2003 Marc Cartright <marc@isri.unlv.edu>
+
+ * ext/zlib/zlib.c (zstream_run): In a particular situation,
+ deflate/inflate will return Z_BUF_ERROR, even though another call
+ is required by the zlib library.
+
+Wed Jun 18 19:46:21 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix
+
+ * ext/tk/lib/tk.rb: rename 'no_create' option to 'without_creating'
+
+ * ext/tk/lib/tk.rb: add TkWindow#pack_in, TkWindow#grid_in,
+ TkWindow#place_in
+
+ * ext/tk/lib/tk.rb: add TkWindow#bind_class and TkWindow#database_class
+
+ * ext/tk/lib/tk.rb: add TkBindTag.new_by_name and TkDatabaseClass
+ for binding to database class
+
+ * ext/tk/lib/tk.rb: check varname whether already exsist or not.
+ (TkVarAccess.new)
+
+ * ext/tk/lib/tk.rb: TkTextWin#bbox returns an array of four numbers
+
+ * ext/tk/lib/tk.rb: autoload TkDialog2, TkWarning2
+
+ * ext/tk/lib/tk.rb: scan event callback arguments and convert
+ to proper type
+
+ * ext/tk/lib/tk.rb: TkBindTag.new accepts a block
+
+ * ext/tk/lib/tk.rb: If given taglist, TkWindow#bindtags(taglist)
+ returns taglist
+
+ * ext/tk/lib/tk.rb: add TkWindow#bindtags=(taglist)
+
+ * ext/tk/lib/tk.rb: Tk.focue and Tk.focus_lastfor return nil
+ if there is no target widget.
+
+ * ext/tk/lib/tk.rb: Tk::Wm.client returns the argument string
+ when setting name
+
+ * ext/tk/lib/tk.rb: TkGrid.columnconfiginfo and rowconfiginfo
+ given a slot return a number.
+
+ * ext/tk/lib/tk.rb: TkWindow.grid_columnconfiginfo and
+ grid_rowconfiginfo --- ditto
+
+ * ext/tk/lib/tk.rb: rename and define alias :: TkOption ==> TkOptionDB
+
+ * ext/tk/lib/tk.rb: define alias :: TkTimer ==> TkAfter
+
+ * ext/tk/lib/tk.rb: some instance methods change from public to private
+
+ * ext/tk/lib/tk.rb: some TkComm methods change to module functions
+
+ * ext/tk/lib/tk.rb: add support for -displayof option to some
+ TkWinfo methods
+
+ * ext/tk/lib/tk.rb: bind, bind_append and bind_remove ---
+ returns the target of event-binding
+
+ * ext/tk/lib/tk.rb: add Tk8.4 features
+
+ * ext/tk/lib/tk.rb: add TkPaneWindow
+
+ * ext/tk/lib/tkdialog.rb: bug fix
+
+ * ext/tk/lib/tkdialog.rb: some methods return self
+
+ * ext/tk/lib/tkdialog.rb: add TkTextMark#+(mod) and TkTextMark#-(mod)
+
+ * ext/tk/lib/tkdialog.rb: add some methods
+
+ * ext/tk/lib/tkcanvas.rb: bug fix and some methods return self
+
+ * ext/tk/lib/tkentry.rb: some methods return self
+
+ * ext/tk/lib/tkentry.rb: TkEntry#bbox returns an array of four numbers
+
+ * ext/tk/lib/tkentry.rb: scan validatecommand arguments and
+ convert to proper type
+
+ * ext/tk/lib/tkbgerror.rb: support to define a error handler by user
+
+ * ext/tcltklib/tcltklib.c: [ruby-talk:60759]
+
+Wed Jun 18 13:50:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should dispatch based on ID type.
+
+Wed Jun 18 12:53:42 2003 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (rb_yield_0): should restore scope_vmode during yield.
+ [ruby-dev:20361]
+
+Wed Jun 18 01:13:36 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (rb_syck_load_handler): merge key implemented.
+
+ * ext/syck/rubyext.c (transfer_find_i): removed use of String#=~ in favor
+ of Regexp#match.
+
+ * lib/yaml.rb: YAML::try_implicit returns.
+
+ * lib/yaml/rubytypes.rb: Regexps added for type matching.
+
+ * lib/yaml/emitter.rb: fix String + nil error.
+
+Tue Jun 17 17:01:08 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/gram.c: added grammar for certain empty sequence entries.
+
+ * ext/syck/handler.c, ext/syck/syck.c, ext/syck/syck.h: track bad anchors.
+
+ * ext/syck/token.c: added pause token, tag possible circular references.
+
+ * lib/yaml/rubytypes.rb: parsing YMD time as Date instance.
+
+ * ext/syck/rubyext.c: ditto. DomainType, PrivateType, BadAlias classes.
+
+Tue Jun 17 21:28:27 2003 Ariff Abdullah <skywizard@time.net.my>
+
+ * win32/win32.c (rb_w32_opendir): need to set errno. [ruby-talk:73761]
+
+Mon Jun 16 19:01:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: remove rb_cBlock.
+
+Mon Jun 16 18:06:33 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * numeric.c (rb_fix2uint): renamed from rb_fix2int on IA64.
+
+Mon Jun 16 17:02:57 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (proc_invoke): format the message for localjump_error().
+
+Mon Jun 16 16:23:56 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/dl.c (rb_dl_callback): use rb_block_proc() instead of
+ rb_block_new().
+
+ * ext/win32ole/win32ole.c (ev_on_event): ditto.
+
+Mon Jun 16 16:06:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_alloc): re-unification of Block and Proc. Block
+ class is no longer available.
+
+Mon Jun 16 14:43:14 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * bcc32/Makefile.sub: undefine HAVE_GETGROUPS.
+
+Sat Jun 14 16:58:41 2003 Guy Decoux <ts@moulon.inra.fr>
+
+ * regex.c (calculate_must_string): should handle option_set
+ properly. [ruby-talk:73481]
+
+ * regex.c (re_compile_fastmap): a bug in flag manipulation.
+ [ruby-talk:73549]
+
+Sat Jun 14 17:59:59 2003 Guy Decoux <ts@moulon.inra.fr>
+
+ * eval.c (method_arity): should handle NODE_BMETHOD and
+ NODE_DMETHOD. [ruby-core:01138]
+
+Fri Jun 13 09:24:39 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (storebinary): seek correctly. Thanks, William Webber.
+
+ * lib/net/ftp.rb (putbinaryfile): rescue FTPPermError.
+
+Thu Jun 12 22:13:13 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb : add 'no_create' option to widget
+ initialize method.
+
+ * ext/tk/MANIFEST : forgot to commit when added tkmacpkg.rb
+ and tkwinpkg.rb
+
+ * ext/tk/lib/README : ditto.
+
+Thu Jun 12 21:14:11 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb : widget configure returns self (for method
+ call chain)
+
+ * ext/tk/lib/tkmacpkg.rb : Mac resource (not new but not
+ included until now)
+
+ * ext/tk/lib/tkwinpkg.rb : Win DDE and registry (not new but not
+ included until now)
+
+Tue Jun 10 14:26:30 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c: preserve newlines prepended to a block.
+
+ * ext/syck/implicit.c (syck_match_implicit): added !merge and !default.
+
+ * lib/yaml/constants.rb: remove '\z' escape.
+
+ * lib/yaml/emitter.rb: ensure reset of @seq_map shortcut flag.
+
+ * lib/yaml/encoding.rb: remove Unicode translation methods.
+
+ * lib/yaml/rubytypes.rb: improved round-tripping of Strings.
+ [ruby-core:1134]
+
+Tue Jun 10 01:07:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb.rb (IRB::Irb::eval_input): warn and exit if $SAFE >=3
+ after input evaluation.
+
+ * lib/irb.rb (IRB::Irb::eval_input): untaint input string. now
+ irb works for levels 1 and 2.
+
+Mon Jun 9 19:02:33 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in: checks presence of grp.h and setgroups().
+
+ * process.c (proc_getgroups, proc_setgroups): raise
+ NotImplementedError unless available. [ruby-talk:73014]
+
+Mon Jun 9 18:09:11 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fixed 100% CPU problem of Tk.mainloop
+
+Mon Jun 9 15:50:24 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: renewal Tk.mainloop
+
+Sun Jun 8 13:37:21 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/setup.mak: set SUBSYSTEM in each platform.
+
+ * wince/stdlib.c: fix mblen() bug.
+
+Sat Jun 7 22:22:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_loader_transfer): should not use
+ rb_cProc directly, since type_proc may be Proc, Block, or
+ Method.
+
+ * parse.y (value_expr0): class and module statements should not be
+ warned for "void value expression". [ruby-talk:72989]
+
+Sat Jun 7 01:46:41 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (add_final): should determine type by respond_to?
+
+ * gc.c (define_final): ditto.
+
+ * io.c (rb_io_ctl): should not depend on respond_to?
+
+ * range.c (range_step): rb_check_string_type().
+
+Fri Jun 6 20:29:14 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (error_print): needs to be exception proof.
+
+ * eval.c (error_handle, rb_longjmp): bails out when exception
+ reentered. (ruby-bugs-ja:PR#487), [ruby-core:01119],
+ [ruby-core:01122]
+
+ * eval.c (Init_Proc): pre-allocates critical error objects.
+
+Fri Jun 6 20:29:14 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (cmd_brace_block, do_block, brace_block): initialize block
+ variables at the beginning of the block. [ruby-talk:72521]
+
+Fri Jun 6 18:49:11 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_setgroups): new functions.
+
+Fri Jun 6 18:33:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (define_final): eliminate rb_f_lambda() call.
+
+ * class.c (rb_scan_args): ditto.
+
+ * signal.c (sig_trap): ditto.
+
+ * hash.c (rb_hash_initialize): ditto.
+
+ * variable.c (rb_f_trace_var): ditto.
+
+ * ext/dl/dl.c (rb_dl_callback): ditto.
+
+ * ext/win32ole/win32ole.c (ev_on_event): ditto.
+
+Fri Jun 6 16:10:01 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: define Net::HTTPResponse#to_ary for backward
+ compatibility. [ruby-talk:72927]
+
+ * lib/net/protocol.rb: add warning.
+
+Fri Jun 6 13:30:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): $SAFE is turned off in the finalization.
+ Each END proc should preserve its own $SAFE level. [ruby-core:01119]
+
+ * marshal.c (marshal_load): remove unused variable "hash".
+ [ruby-core:01120]
+
+ * hash.c (env_str_new): freeze strings from ENV. [ruby-talk:72860]
+
+ * array.c (rb_ary_first): optional argument to retrieve first n
+ elements.
+
+ * array.c (rb_ary_last): optional argument to retrieve last n
+ elements.
+
+Thu Jun 5 21:31:55 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/stdlib.c: add mblen().
+
+Thu Jun 5 18:33:46 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/curses/curses.c (window_s_allocate,curses_finalize):
+ avoid VC++ warnings.
+
+Thu Jun 5 17:44:11 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (syck_parser_mark): was a bit heavy on the GC.
+
+ * lib/yaml.rb (YAML::transfer): added.
+
+Thu Jun 5 16:11:50 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (MISSING): link with missing/erf.c.
+
+ * missing.h (erf, erfc): fix prototype.
+
+ * missing/erf.c: new. [ruby-list:37753]
+
+Thu Jun 5 15:09:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (math_erf,math_erfc): new function. [ruby-list:37753]
+
+Thu Jun 5 14:49:43 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c: using GC nodes caused segfault. [ruby-core:1071]
+
+Thu Jun 5 13:48:57 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c: directives choked on a period.
+
+ * ext/syck/gram.y: anchors work above a collection. [ruby-core:1071]
+
+ * ext/syck/handler.c, ext/syck/syck.c: ensure a fresh strtable between
+ parser iterations.
+
+Wed Jun 4 12:06:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_finalize): no longer need to turn off $DEBUG in the
+ finalizer. (ruby-bugs-ja PR#473)
+
+Tue Jun 3 22:20:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call_super): should search superclass method based on
+ orig_func, not last_func.
+
+Tue Jun 3 09:59:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call_super): inheritance line adjustment moved from
+ rb_call(). [ruby-core:01113]
+
+ * eval.c (rb_eval): use rb_call_super() to follow DRY principle.
+
+Mon Jun 2 02:20:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (push_values_at): Array#values_at should work with
+ ranges too.
+
+ * range.c (rb_range_beg_len): length calculation was wrong.
+
+ * eval.c (rb_call): should set T_ICLASS in the frame->last_class.
+ [ruby-core:01110]
+
+Sun Jun 1 21:50:01 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: should not use def file, use ld with
+ --export-all-symbols option on Cygwin/MinGW.
+
+ * defines.h: ditto.
+
+ * cygwin/GNUmakefile.in: ditto.
+
+ * ext/digest/defs.h: avoid warnings on Cygwin.
+
+Sun Jun 01 13:33:49 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/string_wce.c: add strpbrk() for hpcpro support.
+
+ * wince/setup.mak: add hpcpro(CE2.11) & armv4t(CE.NET) support.
+
+ * wince/resource.rb: ditto.
+
+ * wince/Makefile.sub: ditto.
+
+Sun Jun 1 10:38:28 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * variable.c (rb_autoload_load): autoloaded constants under a module
+ belong to the module. [ruby-core:01094], [ruby-dev:20309]
+
+Sat May 31 04:36:54 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (rb_intern): should handle multibyte name.
+
+Fri May 30 23:18:01 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (rb_syck_mktime): seconds calculated wrong.
+
+ * ext/syck/gram.c: flexibility to anchors and transfer methods on
+ collections.
+
+ * ext/syck/token.c: hex escapes.
+
+ * lib/yaml/basenode.rb: YamlNode references changed to YAML::BaseNode.
+
+Fri May 30 22:28:04 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * numeric.c (rb_num2uint, rb_fix2int): new function to convert
+ values over INT_MAX. [ruby-core:01099]
+
+ * ruby.h (NUM2UINT, FIX2INT): ditto.
+
+Fri May 30 15:01:05 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c: preserve any indentation past an explicit
+ indentation.
+
+Fri May 30 14:55:44 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_Array): exclude Kernel#to_a instead of Object#to_a.
+ (ruby-bugs-ja:PR#483)
+
+ * lib/optparse.rb (OptionParser::Switch#parse_arg): not splat.
+
+ * lib/optparse.rb (OptionParser::Switch#conv_arg): splat if no
+ conversion supplied.
+
+ * lib/optparse.rb (OptionParser::Switch::PlacedArgument#parse):
+ override next switch after argument conversion.
+
+Fri May 30 14:41:34 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/handler.c, ext/syck/syck.h: removed syck_fold_format().
+
+ * ext/syck/gram.c: flexibility for aliases and anchors.
+
+ * ext/syck/token.c: folding now handled in the tokenizer.
+
+Fri May 30 06:21:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * variable.c (rb_autoload_load): should delete autoloaded
+ symbol itself before load. [ruby-core:01097]
+
+ * variable.c (rb_mod_remove_const): must not return Qundef.
+
+Thu May 29 14:59:10 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (_CRTIMP): redefine _CRTIMP on MinGW.
+
+ * configure.in: remove '-D__USE_CRTIMP' from XCFLAGS on MinGW.
+
+ * win32/win32.c (NtMakeCmdVector): handle quotes only if not instring.
+
+Thu May 29 09:11:01 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (ev_const_defined, ev_const_get), variable.c
+ (rb_const_get_at, rb_const_get, rb_mod_remove_const): use Qundef
+ as autoload marker. [ruby-dev:18103], [ruby-dev:18184]
+
+ * eval.c (rb_mod_autoload, rb_mod_autoload_p): new method;
+ Module#autoload, Module#autoload?.
+
+ * variable.c (rb_autoload, rb_autoload_load, rb_autoload_p):
+ manage autoload constants per classes/modules.
+
+ * variable.c (rb_const_defined_at, rb_const_defined): return false
+ for autoloading constants.
+
+ * class.c (rb_define_class, rb_define_module), eval.c (rb_eval),
+ variable.c (rb_mod_const_at, rb_const_assign): removed autoload
+ stuff.
+
+ * intern.h: prototypes; rb_autoload, rb_autoload_load,
+ rb_autoload_p.
+
+ * lib/optparse.rb (OptionParser::Switch::PlacedArgument::parse):
+ do not treat unmatched argument as an option.
+
+Wed May 28 08:44:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_syscall): type dispatch should be based on
+ rb_check_string_type(), not FIXNUM_P(), because values may be a
+ bignum. [ruby-talk:72257]
+
+Tue May 27 20:33:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c, util.c: removed duplicated includes/defines.
+
+ * ext/socket/socket.c (sock_addrinfo): get rid of SEGV at NULL ptr
+ String. increase buffer size for 64bit platforms.
+
+Tue May 27 02:34:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): should pass the current klass value to
+ block_invoke, which may be called via "super". [ruby-core:01077]
+
+ * eval.c (block_invoke): now takes 4th argument "klass".
+
+ * eval.c (block_alloc): should propagate BLOCK_PROC to
+ ruby_block.
+
+Mon May 26 23:51:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): should not use "yield" method, use "call"
+ instead. (ruby-bugs-ja PR#476)
+
+Mon May 26 21:39:46 2003 MoonWolf <moonwolf@moonwolf.com>
+
+ * lib/mkmf.rb, lib/optparse.rb, lib/tracer.rb: use Method#to_block
+ instead of deprecated Method#to_proc. (ruby-bugs-ja:PR#477)
+
+Mon May 26 21:21:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser::Switch::parse,
+ OptionParser::order): use {Block,Proc}#call instead of deprecated
+ #yield.
+
+Mon May 26 16:39:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): Block/Proc separation. [huge change]
+
+ * eval.c (block_arity): returns exact arity number for Procs out
+ of methods. also gives 1 for {|a|..}.
+
+ * string.c (rb_str_match): revert use of String#index for
+ invocation like string =~ string.
+
+ * eval.c (rb_Array): move Object#to_a exclusion hack from
+ splat_value(). need to be in eval.c for a while.
+
+Sun May 25 23:48:21 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_quad_pack): should negate negative bignum.
+ (ruby-bugs-ja:PR#474)
+
+Sun May 25 03:27:25 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: support LOGIN authentication, based on
+ the patch by Kazuhiko Izawa. [ruby-talk:78981]
+
+Sat May 24 18:19:51 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/Makefile.sub: add eMbedded Visual C++ 4.0 support.
+
+ * wince/resource.rb: ditto.
+
+ * wince/setup.mak: ditto.
+
+ * wince/configure.bat: ditto.
+
+ * wince/mkexports.rb: delete japanese comments.
+
+Fri May 23 18:34:05 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_longjmp): get rid of reentering while debug warning.
+ (ruby-bugs-ja:PR473)
+
+Fri May 23 15:16:16 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * pack.c (pack_unpack): sign-extend if sizeof long is bigger than
+ 32. (ruby-bugs-ja:PR#472)
+
+Fri May 23 14:19:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_finalize): turn off ruby_debug flag before calling
+ at_exit procs and finalizers. (ruby-bugs-ja:PR473)
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop_core): OK to block if
+ there's no other thread. (ruby-bugs:PR#861)
+
+Thu May 22 18:07:46 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c: single- and double-quoted root-level fix.
+
+ * lib/yaml.rb (YAML::object_maker): can create object attributes (such as
+ found in Exception class)
+
+ * lib/yaml/rubytypes.rb: roundtripping of Exception and subclasses.
+
+Fri May 23 01:26:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_clone): defer copying freezing state after
+ calling initialize_copy(). [ruby-dev:20276]
+
+Thu May 22 17:12:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (run_final): use rb_thread_critical instead of DEFER_INTS.
+ [ruby-dev:20272]
+
+ * marshal.c: try to make ArgumentError and TypeError consistent.
+ [ruby-core:01068]
+
+Thu May 22 15:46:37 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_define_alloc_func): need not to disable
+ rb_call_super() for allocation functions. [ruby-core:1065]
+
+Thu May 22 06:21:33 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (rb_syck_err_handler): raise ArgumentError on
+ malformed YAML.
+
+ * lib/yaml/rubytypes.rb: String#to_yaml was missing space indicators at
+ the end of a line.
+
+Thu May 22 05:43:24 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (syck_parser_load): root-level false was returning
+ nil.
+
+ * ext/syck/token.c: root-level transfer method bug.
+
+ * ext/syck/gram.c: root-level empty gave a parse error.
+
+ * lib/yaml/rubytypes.rb: Symbol#to_yaml generating method call error.
+
+Thu May 22 02:46:38 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): splat NODE_RESTARY. [ruby-dev:20268]
+
+ * eval.c (rb_thread_fd_close): raise for writing threads.
+ [ruby-dev:20269]
+
+ * io.c (rb_io_close, io_reopen): ditto.
+
+ * io.c (io_reopen): keep stdio objects for stdin, stdout,
+ and stderr. [ruby-dev:19442]
+
+Thu May 22 01:11:15 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (strings, word_list): must create new instance always.
+ http://yowaken.dip.jp/tdiary/20030521.html#p02
+
+ * parse.y (yylex): slight optimization.
+
+Wed May 21 23:07:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_sys_fail): should not specify errno explicitly.
+ [ruby-dev:20264]
+
+Wed May 21 20:51:47 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub,
+ wince/Makefile.sub: update dependencies.
+
+Wed May 21 17:44:16 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (syserr_initialize): prohibit specifying errno for
+ subclasses of SystemCallError. in addition, if initialize is
+ called for SystenCallError instance, its class be changed.
+ [ruby-dev:20257]
+
+ * gc.c (run_final): to protect thread context switch, finalizers
+ are wrapped in DEFER_INTS/ENABLE_INTS.
+
+Wed May 21 13:26:08 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb: get rid of warnings.
+
+Tue May 20 18:59:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_save_context): prohibit rb_gc_force_recycle()
+ on thread saved ruby_dyna_vars. [ruby-dev:20236]
+
+Tue May 20 17:39:15 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (init_copy): call initialize_copy at the end of copy
+ process.
+
+Tue May 20 17:15:55 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * error.c (syserr_initialize): use Errno constants as default
+ errno for subclasses. [ruby-dev:20241]
+
+Tue May 20 15:26:25 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * st.h: define ST_DATA_T_DEFINED for portability.
+
+ * ext/syck/syck.h: add typedef, st_data_t for Ruby 1.6.
+
+ * ext/syck/syck.c (syck_st_free_nodes): return int.
+
+ * ext/syck/syck.c (syck_add_sym): cast the data to st_data_t
+ to avoid error on bcc32.
+
+ * ext/syck/syck.c (syck_lookup_sym): ditto.
+
+ * ext/syck/syck.c (syck_free_parser): NULL is not integer.
+
+Tue May 20 13:29:04 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (kill): set errno after calling raise().
+
+Tue May 20 10:51:26 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_f_missing): create exception instance by ordinal
+ method. [ruby-dev:20033]
+
+ * error.c (rb_name_error, rb_sys_fail): ditto.
+
+ * error.c (exc_to_s, exit_status, name_err_name,
+ nometh_err_args, syserr_errno, syserr_eqq): access
+ attributes.
+
+ * error.c (name_err_initialize, nometh_err_initialize,
+ syserr_initialize): initialize attributes.
+
+Tue May 20 10:26:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): give warning for multiple values for a
+ block parameter.
+
+ * eval.c (rb_yield_values): a function to yield multiple values.
+
+ * array.c (sort_1): use rb_yield_values.
+
+ * enum.c (min_ii, max_ii): ditto.
+
+ * hash.c (rb_hash_update_block_i, delete_if_i, select_i,
+ each_pair_i, env_each, env_reject_bang, env_select,
+ env_update_i): ditto.
+
+ * struct.c (rb_struct_each_pair): ditto.
+
+ * eval.c (top_include): should include module in the current self,
+ not ruby_top_self. [ruby-dev:20198]
+
+ * eval.c (top_include): stop inclusion to ruby_wrapper; give
+ warning.
+
+Mon May 19 18:54:30 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c, ext/syck/implicit.c: expanded character set to
+ allow UTF-8, other Ruby encodings.
+
+Mon May 19 16:47:00 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/syck.c, ext/syck/syck.h, ext/syck/token.c, ext/syck/gram.c:
+ count line numbers only if line pointer has increased.
+
+Tue May 20 00:45:40 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (push_braces): do not push_braces() unless rbrace is found.
+ (ruby-bugs-ja:PR#469)
+
+Tue May 20 00:09:41 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/pty/pty.c (pty_finalize_syswait): join (using Thread#value)
+ before detach pid. [ruby-talk:71519]
+
+Mon May 19 23:02:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (PUSH_FRAME): save outer ruby_block. [ruby-list:37677],
+ [ruby-dev:20202]
+
+ * eval.c (BEGIN_CALLARGS): restore outer block by using
+ ruby_block->outer.
+
+ * eval.c (block_pass): do not alter block->prev, but block->outer.
+
+ * array.c (get_inspect_tbl): warning on wrong condition.
+
+Mon May 19 16:13:57 2003 Minero Aoki <aamine@loveruby.net>
+
+ * class.c: add #include "version.h".
+
+ * hash.c: ditto.
+
+ * string.c: ditto.
+
+Mon May 19 15:33:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (localjump_xvalue): renamed exitstatus to exit_value
+ since it's not exit "status" after all.
+
+ * eval.c (localjump_error): add reason to LocalJumpError.
+
+ * compar.c (rb_cmpint): raise error via rb_cmperr(), if cmp value
+ is nil. now take new 2 arguments.
+
+ * time.c (time_cmp): 2003-05-16 fix was incomplete.
+ (ruby-bugs-ja:PR#458)
+
+Mon May 19 14:42:50 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_cmp): stupid comparison fixed.
+
+ * io.c (Init_IO): ARGF.path added (alias to ARGF.filename).
+ [ruby-dev:20197]
+
+Mon May 19 13:58:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (init_copy): rename copy_object as initialize_copy,
+ since it works as copy constructor.
+
+ * eval.c (rb_add_method): initialize_copy should always be
+ private, like initialize.
+
+Mon May 19 13:51:50 2003 Minero Aoki <aamine@loveruby.net>
+
+ * re.c (rb_reg_quote): \n \r \f \v quoting was wrong.
+ [ruby-dev:20203]
+
+ * re.c (rb_reg_quote): rb_reg_quote(" ") should be "\\ ", not
+ "\\s".
+
+Mon May 19 08:08:51 2003 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: use warn() instead of $stderr.puts().
+
+ * sample/cal.rb: ditto.
+
+Sat May 17 12:02:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (get_inspect_tbl): check whether inspect_tbl value is a
+ valid array. (ruby-bugs-ja PR#65)
+
+ * array.c (inspect_ensure,rb_protect_inspect,rb_inspecting_p):
+ use get_inspect_tbl().
+
+Sat May 17 11:50:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_abort): call exit(1) if exception is raised. This
+ patch was made by Nobuyoshi Nakada <nobu.nokada@softhome.net> on
+ 2002-05-30. (ruby-bugs-ja PR#236)
+
+ * signal.c: disable Ruby's interrupt handler at the beginning.
+ (ruby-bugs-ja PR#236)
+
+Sat May 17 02:17:42 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/rational.rb (Integer::denominator): fixed typo.
+ (ruby-bugs-ja:PR#466)
+
+Sat May 17 00:18:11 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/socket/socket.c (ruby_connect): connect() after EINPROGRESS
+ returns EINVAL on some platforms, need to check true error
+ status. [ruby-core:01037]
+
+Sat May 17 00:21:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_class_allocate_instance): singleton class check
+ moved to rb_obj_alloc(). (ruby-bugs-ja PR#345)
+
+Fri May 16 23:55:50 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_quote): should escape white space characters,
+ \t, \f, \n, \r. (ruby-bugs-ja PR#231)
+
+Fri May 16 12:40:40 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): chain previous block to the pushing block.
+ [ruby-list:37677]
+
+ * time.c (time_cmp): does not compare with numbers for
+ interchangeability. (ruby-bugs-ja:PR#458)
+
+Thu May 15 21:55:54 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/gram.c: fixes to one-line documents and end of stream
+ documents.
+
+ * ext/syck/syck.c, ext/syck/syck.h: add root_on_error to parser
+ struct, specifying the symbol to be returned on a parse error.
+
+Thu May 15 18:44:31 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI::Redirect#initialize): call super to
+ initialize mesg.
+
+ * lib/open-uri.rb (OpenURI::Meta#charset): call block to guess charset
+ if block is given and charset is not given.
+
+Thu May 15 16:55:16 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_le): returns nil if two classes/modules are not
+ in class-superclass relationship.
+
+ * object.c (rb_mod_cmp): uses new rb_mod_le() behavior.
+
+Thu May 15 07:45:30 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c, ext/syck/implicit.c: timestamp repairs to
+ timezone and milliseconds.
+
+ * ext/syck/syck.c (syck_parser_reset_levels): duplicate string literal
+ to avoid warning.
+
+Thu May 15 13:26:48 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_class_instance_methods): default will be changed in
+ 1.8.1.
+
+ * io.c (set_stdio): better message.
+
+Thu May 15 13:18:11 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (set_stdio): $stdin, $stdout, $stderr now became read-only.
+
+ * variable.c (readonly_setter): message changed.
+
+Thu May 15 09:50:51 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/syck/syck.c (syck_parser_pop_level): add prototype.
+
+ * ext/syck/syck.c (syck_strndup): should return value.
+
+Thu May 15 09:32:25 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (kill): fix typo and add signal 0 support.
+
+Wed May 14 20:09:26 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/gram.c: sequence-in-map shortcut, transfer methods on
+ sequence-in-sequence, memory leak in mapping merge.
+
+ * ext/syck/syck.c: memory leak in domain anchoring.
+
+ * lib/yaml/rubytypes.rb, lib/yaml/types.rb: eliminated 1.6.x code.
+
+Wed May 14 19:56:43 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/syck/rubyext.c: add prototypes to avoid VC++ warnings.
+
+Wed May 14 12:23:46 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (Net::HTTP#start): should check whether HTTP
+ session is opened before finishing. (ruby-bugs-ja:PR#463)
+
+Wed May 14 09:12:55 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: reduce warning. (ruby-bugs-ja:PR#462)
+
+Tue May 13 22:31:04 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * lib/yaml/rubytypes.rb, lib/yaml/types.rb: using Object#object_id
+ rather than deprecated Object#id.
+
+ * ext/syck/token.c: changed ASCII escapes to octal notation.
+
+ * ext/Setup*: added entries for static linking of Syck extension.
+
+Tue May 13 20:31:58 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: add '--Wl,--enable-auto-import' to DLDFLAGS
+ on Cygwin/MinGW.
+
+ * configure.in: add '-D__USE_CRTIMP' to XCFLAGS on MinGW.
+
+ * ext/syck/handler.c: add proper casts.
+
+ * ext/syck/syck.c: ditto.
+
+Tue May 13 17:58:08 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, bcc32/Makefile.sub, win32/Makefile.sub: define
+ HAVE_FSYNC.
+
+ * win32/win32.h (fsync): define as _commit().
+
+Tue May 13 15:35:35 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match_exec): \Z changed to be consistent with new $
+ (endbuf) behavior.
+
+Tue May 13 14:48:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_pos): use $deferr for output instead of stderr
+ directly.
+
+ * eval.c (error_print,error_handle,rb_longjmp,rb_thread_schedule):
+ ditto.
+
+Tue May 13 06:34:19 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * lib/yaml/rubytypes.rb: object and struct loading
+
+ * lib/yaml.rb: YAML::detect_implicit will discover typing for a Ruby
+ string
+
+ * ext/syck/: Fixed portable comments, misuse of NULL and methods without
+ return VALUEs.
+
+Mon May 12 18:08:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (Init_IO): new variable $deferr which is default output
+ port of error messages.
+
+ * io.c (rb_warn_m): new method "warn". [new]
+
+ * error.c (warn_print): use $deferr.
+
+ * error.c (rb_bug): ditto.
+
+ * error.c (err_append): ditto.
+
+Sun May 11 13:50:12 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb: refine to_s test.
+
+ * lib/pp.rb (PP::ObjectMixin#pretty_print): refine to_s handling.
+
+Sun May 11 06:32:13 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/implicit.c, ext/syck/rubyext.c: transfer methods applied to
+ native loading
+
+ * ext/syck/token.c: fix for transfer methods on same indentation as nested
+ mapping
+
+ * lib/yaml/rubytypes.rb: all type names in lowercase
+
+Sat May 10 19:55:18 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/gram.c ext/syck/handler.c ext/syck/implicit.c
+ ext/syck/node.c ext/syck/rubyext.c ext/syck/syck.c
+ ext/syck/syck.h ext/syck/token.c: updated to Syck 0.27
+
+ * lib/yaml/loader.rb: new YAML::Loader class
+
+ * lib/yaml.rb: loading of type families leverages YAML::DefaultLoader
+
+Sat May 10 19:00:08 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/string.c: file removed.
+
+ * wince/stdlib.c: file added.
+
+Sat May 10 16:17:02 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (decode_utf7): new method.
+
+ * lib/net/imap.rb (encode_utf7): new method.
+
+Fri May 9 21:25:50 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ruby/ext/syck, ruby/lib/yaml: Initial checkin of YAML substances.
+
+Fri May 9 16:38:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_reopen): It should be possible to reopen closed IO.
+ [ruby-talk:70941]
+
+ * io.c (rb_io_reopen): inherit original file mode unless specified.
+
+Thu May 8 18:44:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc): check odd alignment stack on m68k machines.
+
+Thu May 8 12:56:04 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * compar.c (rb_cmperr): raise comparison failure.
+
+ * intern.h: prototype; rb_cmperr
+
+ * numeric.c (flo_gt, flo_ge, flo_lt, flo_le, fix_gt, fix_ge,
+ fix_lt, fix_le): should fail unless the argument is comparable.
+ (ruby-bugs-ja:PR#456)
+
+ * numeric.c (int_upto, int_downto): should fail unless the
+ argument is comparable. (ruby-bugs-ja:PR#454)
+
+Wed May 7 13:30:11 2003 Masahiro TANAKA <masa@ir.isas.ac.jp>
+
+ * numeric.c (num_step): better error treatment of float values.
+
+Tue May 6 17:51:54 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: rename method: POP3#mail_size -> n_mails
+
+ * lib/net/pop.rb: rename method: POP3#bytes -> n_bytes
+
+Tue May 6 17:21:01 2003 Minero Aoki <aamine@loveruby.net>
+
+ * ext/bigdecimal/.cvsignore: new file.
+
+ * ext/zlib/.cvsignore: new file.
+
+Tue May 6 14:39:36 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_methods): list singleton methods if recur
+ argument is false; list all methods otherwise.
+
+Mon May 5 21:19:25 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * ext/gdbm/gdbm.c (fgdbm_values_at): new method to replace
+ select(index..).
+
+ * ext/sdbm/init.c (fsdbm_values_at): ditto.
+
+ * ext/dbm/dbm.c (fdbm_values_at): ditto.
+
+ * ext/dbm/dbm.c (DBM::VERSION): defined.
+
+ * ext/gdbm/testgdbm.rb: replace select with values_at.
+
+ * ext/sdbm/testsdbm.rb: ditto.
+
+ * ext/dbm/testdbm.rb: ditto.
+
+ * ext/dbm/testdbm.rb (setup): DBM.open(path, 0400) cause EACCESS
+ on Berkeley DB[234].
+
+Mon May 5 22:57:07 2003 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * sample/cal.rb: use values_at instead of select.
+
+ * sample/biorhythm.rb: ditto.
+
+Mon May 5 18:59:45 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * sample/test.rb: substitute 'select' with 'values_at'.
+
+ * lib/date.rb: ditto.
+
+ * lib/parsedate.rb: ditto.
+
+Mon May 5 00:46:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_values_at): new method to replace select(index..).
+
+ * hash.c (rb_hash_values_at,env_values_at): ditto.
+
+ * re.c (match_values_at): ditto.
+
+ * struct.c (rb_struct_values_at): ditto.
+
+ * re.c (match_select): add iterator behavior.
+
+Sun May 4 19:08:53 2003 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: synchronized with date2 3.3.2.
+
+Sun May 4 15:21:18 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: ESMTP -> SMTP transition wrongly fails.
+
+Sun May 4 15:06:37 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: APOP did not work. [ruby-dev:20149]
+
+Sat May 3 21:14:29 2003 Johan Holmberg <holmberg@iar.se>
+
+ * ext/curses/curses.c, ext/digest/sha2/sha2.c, ext/iconv/iconv.c,
+ ext/racc/cparse/cparse.c: include "ruby.h" at the top to shut up
+ "_FILE_OFFSET_BITS redefined" warning on Solaris.
+
+Sat May 3 11:00:12 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_class_protected_instance_methods): now gives
+ warnings to show migration path. The default will be reversed
+ on Jan 2004.
+
+Sat May 3 00:58:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_methods): now accepts recurse parameter.
+
+ * lib/delegate.rb (Delegator::initialize): instance_methods
+ etc. now recurse by default. need to specify false.
+
+Sat May 3 00:22:00 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: reintroduce Protocol.protocol_param.
+
+ * lib/net/http.rb: ditto.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/smtp.rb: ditto.
+
+Fri May 2 23:29:53 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: remove Protocol class.
+
+ * lib/net/smtp.rb (SMTP): ditto.
+
+ * lib/net/pop.rb (POP3): ditto.
+
+ * lib/net/http.rb (HTTP): ditto.
+
+ * lib/net/protocol.rb: remove Command class.
+
+ * lib/net/smtp.rb (SMTPCommand): ditto.
+
+ * lib/net/pop.rb (POP3Command): ditto.
+
+ * lib/net/pop.rb: remove APOPCommand class.
+
+ * lib/net/protocol.rb: remove Code class and its all subclasses.
+
+ * lib/net/protocol.rb: remove Response class and its all
+ subclasses.
+
+ * lib/net/pop.rb (POPMail): new method unique_id (alias uidl).
+
+Fri May 2 18:17:37 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compar.c (cmp_gt): raises ArgumentError when "<=>" give nil.
+ inspired by discussion on comp.lang.python.
+
+Fri May 2 17:37:01 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::initialize): updated to
+ support 2003-04-23 change in cgi.rb [ruby-core:1002]
+
+Fri May 2 17:21:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (method_list): classify methods based on nearest
+ visibility. [ruby-dev:20127]
+
+ * class.c (rb_class_instance_methods): recurse by default. other
+ method listing methods as well.
+
+Fri May 2 09:38:06 2003 Warren Brown <wkb@airmail.net>
+
+ * string.c (rb_str_ljust): now takes optional argument to specify
+ pad string. [ruby-talk:70482]
+
+ * string.c (rb_str_rjust): ditto.
+
+ * string.c (rb_str_center): ditto.
+
+ * string.c (rb_str_justify): utility function.
+
+Fri May 2 04:10:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_add_method): call singleton_method_added or
+ method_added for every method definition (after ruby_running).
+ [ruby-talk:70471]
+
+ * array.c (rb_ary_reverse_bang): Array#reverse! should not return
+ nil even for arrays sized less than 2.
+
+Thu May 1 23:18:01 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_eof): should not block after reading all argument
+ files. (ruby-bugs-ja PR#449)
+
+Fri May 2 15:10:41 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: use hashes to pass options.
+
+ * lib/fileutils.rb: new option mkdir(:mode), mkdir_p(:mode).
+
+ * instruby.rb: follow fileutils.rb feature change.
+
+Thu May 1 08:24:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match_exec): $ _always_ matches at the end of string.
+
+Wed Apr 30 14:12:00 2003 wanowa.kimura@nifty.ne.jp (kimura wataru)
+
+ * net/imap.rb: support THREAD extension.
+
+Sun Apr 27 23:13:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_to_i): disallow negative radix.
+ [ruby-dev:20087]
+
+Sat Apr 26 23:34:42 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (open_args): warning message changed to "don't put space
+ before argument parentheses".
+
+Sat Apr 26 14:25:00 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/ : files removed.
+ (config, dll.mak, exe.mak, mswince-ruby17.def,
+ io.c, process.c, signal.c, string.c, time.c)
+
+ * wince/ : files added.
+ (assert.c, Makefile.sub, mkexports.rb, io_wce.c,
+ process_wce.c, signal_wce.c, string_wce.c,
+ time_wce.c)
+
+ * wince/configure.bat : like mswin32 style.
+
+ * wince/direct.c : remove "static" at _currentdir.
+
+ * wince/io.h : change definition.
+
+ * wince/stdio.c : _fdopen -> fdopen.
+
+ * wince/process.h : add _P_OVERLAY.
+
+ * wince/time.h : change definition.
+
+ * wince/wincemain.c : add wce_SetCurrentDir.
+
+ * wince/wince.c : add wce_SetCurrentDir and wce_fopen.
+ fix GetModuleFileNameA to return correct "lpFileName".
+
+ * wince/wince.h : remove #ifdef.
+
+ * wince/sys/utime.h, utime.c : rename _utime to utime.
+
+ * wince/sys/stat.c : expand relative directory in stat.
+
+Sat Apr 26 06:33:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_read): ARGF.read() should read all argument files.
+
+Fri Apr 25 18:46:00 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * gc.c: STACK_LEVEL_MAX=65535 on mswince.
+
+Fri Apr 25 18:40:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_read): read should not span two files. [ruby-dev:20073]
+
+Fri Apr 25 18:19:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (splat_value): split splat_value() and avalue_splat().
+
+ * io.c: there's no way to set non-IO value to current_file, thus
+ no need for argf_forward().
+
+Fri Apr 25 02:03:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): Proc#yield should pass through retry and
+ break like keyword yield. [ruby-talk:70034]
+
+ * eval.c (proc_invoke): orphan Proc now raises LocalJumpError for
+ break and retry again.
+
+ * eval.c (rb_eval): ARGSCAT should splat the argument.
+
+ * eval.c (splat_value): splat operation function.
+
+Thu Apr 24 23:37:02 2003 Dave Thomas <dave@thomases.com>
+
+ * lib/matrix.rb (Matrix#minor): Used Range#size, which no longer
+ exists.
+
+ * lib/complex.rb (new!): Complex.new had been made private, but
+ Kernel#Complex called it. Re-exposed as new!.
+
+ * lib/matrix.rb (Matrix.row_vector): Fix method name typo
+
+Thu Apr 24 19:40:02 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb: add -Wl,--no-undefined to LDSHARED only
+ if GNU ld is 2.11 or later.
+
+Wed Apr 23 14:05:40 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/ipaddr.rb (include?): Support non-IPAddr parameters.
+ [ruby-core:00980]
+
+Wed Apr 23 13:31:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::[]): always return Value
+ object.
+
+Wed Apr 23 08:39:27 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/zlib/extconf.rb: bccwin32 is win32 too.
+
+Tue Apr 22 20:58:00 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * ruby.c: don't call VirtualQuery in ruby_init_loadpath()
+ on mswince.
+
+Tue Apr 22 19:08:53 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (save_mantissa, load_mantissa): for interoperability
+ should count cut-down bit from topmost.
+
+Tue Apr 22 09:20:40 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg_ambiguous): hopefully better message.
+
+ * lib/cgi.rb (CGI::QueryExtension::initialize_query): to_ary
+ removed.
+
+Tue Apr 22 06:06:22 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Resource#hash): use XOR to accumulate
+ hash value.
+
+ * lib/tsort.rb (TSort#each_strongly_connected_component): don't use
+ block argument.
+ (each_strongly_connected_component_from): ditto.
+
+Mon Apr 21 21:59:48 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c: one more digit for decimal point. [ruby-talk:69808]
+
+Mon Apr 21 21:25:59 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * numeric.c (flo_is_finite_p): use finite() if available.
+
+ * win32/win32.h (isinf, isnan): define as macro.
+ [ruby-win32:00533]
+
+ * bcc32/Makefile.sub, win32/Makefile.sub: no longer use
+ missing/isinf.c, missing/isnan.c.
+
+Mon Apr 21 18:36:28 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_cstr_to_inum): unnecessarily long buffer was used
+ for radix 9. [ruby-dev:20057]
+
+Mon Apr 21 17:44:34 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (block_append, value_expr0, assign_in_cond,
+ warn_unless_e_option, warning_unless_e_option, range_op,
+ cond0): adjust line number in warning.
+
+Mon Apr 21 00:47:42 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * sample/test.rb: avoid the MSVCRT *printf problem(float).
+ [ruby-dev:20037]
+
+Mon Apr 21 00:11:15 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (w_float): append least mantissa bits to get rid
+ of roundoff problem. [ruby-talk:69518]
+
+ * marshal.c (r_object0): load least mantissa bits.
+
+Sun Apr 20 23:24:25 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (NtInitialize): set the floating-point control word
+ on bcc32.
+
+ * win32/win32.h, bcc32/Makefile.sub: use missing/isinf.c, should not
+ use _finite() because it returns 0 if NaN.
+
+Sun Apr 20 03:09:30 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * parse.y (void_expr0): node might become NULL after calling
+ remove_begin().
+
+Sat Apr 19 21:55:10 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Setup*: Add zlib and remove bogus and obsolete entries.
+
+Sat Apr 19 14:47:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc): use rb_gc_mark_maybe() to mark registered C
+ addresses. C variables may not hold valid reference to Ruby
+ objects. [ruby-core:00975]
+
+Sat Apr 19 00:56:13 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_eql): should compare values with "eql?".
+
+Fri Apr 18 23:29:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_check): <=> returns nil for invalid values;
+ should check.
+
+Fri Apr 18 15:26:50 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c (rb_raise): workaround for some implementations of
+ vsnprintf.
+
+Fri Apr 18 02:23:42 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should not set RE_OPTIMIZE_ANCHOR,
+ if anychar_repeat is enclosed by parentheses.
+
+Fri Apr 18 01:49:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * util.c (ruby_strtod): improved conversion accuracy.
+
+Thu Apr 17 14:39:23 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dbm/dbm.c (each_pair): add prototype to avoid VC++ warnings.
+
+ * ext/readline/readline.c (Init_readline): follow readline 4.2
+ prototype.
+
+Thu Apr 17 14:22:36 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (cond0): warn only range literals whose both side are
+ literals. [ruby-core:00964]
+
+Thu Apr 17 11:10:59 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/readline/readline.c: add the defined operator for bcc32.
+
+Wed Apr 16 00:14:06 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-special-char-p): should test at the
+ point if no argument. fixed by Michael Scholz
+ <scholz-micha@gmx.de>.
+
+Tue Apr 15 19:35:08 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: rm_r should raise Errno::ENOENT if file
+ does not exist ([ruby-core:958]). Thanks Johan Holmberg.
+
+Tue Apr 15 19:12:21 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * struct.c (rb_struct_hash): new methods Struct#hash, Struct#eql?.
+ (ruby-bugs:PR#758)
+
+Tue Apr 15 16:05:11 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * numeric.c (rb_fix2str): buffer was insufficient.
+ (ruby-bugs-ja:PR#431)
+
+Mon Apr 14 19:45:56 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): root must follow buf when
+ reallocated. [ruby-talk:69339], [ruby-dev:20025]
+
+Mon Apr 14 03:22:33 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rubyio.h (struct OpenFile): add noraise flag to finalizer.
+
+ * io.c (Init_IO): define $/, $-0, and $\ as string-only
+ variables.
+
+ * string.c (rb_str_split_m): does not generate empty string if
+ the receiver is empty.
+
+ * io.c (fptr_finalize): should raise error on EBADF for readable
+ IOs as well.
+
+Mon Apr 14 15:54:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_cstr_to_inum, rb_big2str): allow 2-36 as radix.
+
+ * numeric.c (rb_fix2str): ditto.
+
+ * string.c (rb_str_to_i): ditto.
+
+Sun Apr 13 03:20:31 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (try_func): remove COMMON_HEADERS at first for
+ performance.
+
+Sat Apr 12 20:59:40 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-beginning-of-arg): substitute
+ ruby-backward-arg.
+
+ * misc/ruby-mode.el (ruby-calculate-indent): fixed wrong
+ indentation in brace block and parentheses.
+
+ * misc/ruby-mode.el (ruby-forward-sexp, ruby-backward-sexp):
+ support special char literal, and negative arguments.
+
+Sat Apr 12 17:52:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat): use rb_check_convert_type() to retrieve IO.
+
+Fri Apr 11 19:00:14 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_stat): check arguments. [ruby-dev:20007]
+ [ruby-win32:535]
+
+Fri Apr 11 15:56:08 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * numeric.c (coerce_rescue): prevent inspected String from GC.
+
+ * numeric.c (flo_eq, rb_dbl_cmp, flo_gt, flo_ge, flo_lt, flo_le,
+ flo_eql): correct NaN comparison. (ruby-bugs:PR#744)
+
+ * sample/test.rb: NaN comparison test.
+
+Fri Apr 11 14:48:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat): dereference using StringValuePtr().
+
+ * file.c (rb_file_s_stat): use rb_stat(). [ruby-dev:20007]
+
+Fri Apr 11 10:51:08 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/benchmark.rb (Benchmark::bm): get rid of warning.
+ [ruby-talk:69124]
+
+Fri Apr 11 02:41:35 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (set_stdin): assigned value must respond to "read" and
+ "getc".
+
+ * io.c (set_outfile): assigned value must respond to "write".
+ (ruby-bugs-ja:PR#425)
+
+Thu Apr 10 21:12:19 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: Exception line was accidentally removed.
+ [ruby-dev:19989]
+
+Thu Apr 10 18:42:13 2003 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * array.c (rb_ary_times): added some checks for request size.
+
+Thu Apr 10 03:22:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_name): always return empty string for
+ anonymous class/module. (ruby-bugs-ja PR#424)
+
+ * config.sub: stop forcing addition of -gnu to -linux.
+
+ * variable.c (classname): refactoring.
+
+ * variable.c (rb_class_path): __tmp__classpath__ handling moved
+ from classname().
+
+Thu Apr 10 01:52:24 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_obj_is_method): indefinite return value.
+
+Thu Apr 10 00:39:32 2003 Tanaka Akira <akr@m17n.org>
+
+ * regex.c (re_compile_pattern): /[\--\-]/ was warned. warn /]/.
+
+ * mkconfig.rb: escape `]' in regexp.
+
+Thu Apr 10 00:27:07 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * time.c (time_strftime): RSTRING(format)->ptr might become NULL.
+
+Wed Apr 9 23:54:50 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_obj_remove_instance_variable): better message.
+ [ruby-talk:68987]
+
+ * variable.c (rb_mod_remove_const): ditto.
+
+ * object.c (rb_obj_ivar_get): ditto.
+
+ * object.c (rb_obj_ivar_set): ditto.
+
+ * parse.y (yylex): ditto.
+
+Wed Apr 9 21:51:20 2003 Dave Thomas <Dave@Thomases.com>
+
+ * eval.c (rb_mod_define_method): Allow UnboundMethod as
+ parameter.
+
+Wed Apr 9 18:30:58 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (top_include): include module to wrapper module if
+ wrapper is present. experimental. [ruby-list:37539]
+
+Wed Apr 9 17:24:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_mark_children): introduce this function again; this
+ is required when stack was very tight. [ruby-talk:68916]
+
+Wed Apr 9 15:49:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivmod): small typo.
+
+Wed Apr 9 15:35:04 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/readline/readline.c: include <unistd.h> only when
+ HAVE_UNISTD_H is defined.
+
+Wed Apr 9 14:05:00 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (w_object): preserve extended module on struct.
+ (ruby-bugs-ja:PR#422)
+
+Wed Apr 9 03:43:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (BIGZEROP): macro to determine if x is a bignum zero.
+
+Tue Apr 8 11:49:31 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): make Method and UnboundMethod independent.
+ They are like instance and its class. [ruby-core:00941]
+
+ * parse.y (yylex): disallow global variables like "$1ve".
+ [ruby-core:00945]
+
+ * marshal.c (marshal_dump): Marshal.dump(0, false) should cause an
+ error. (ruby-bugs-ja PR#421)
+
+ * regex.c (re_compile_pattern): warn if '-' is the edge of
+ character range.
+
+Mon Apr 7 15:49:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_unpack_sockaddr_in): remove struct
+ size check. getnameinfo(3) can handle. [ruby-dev:19967]
+
+Mon Apr 7 01:33:31 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_read): do not call rb_sys_fail() when required data
+ length is zero. (ruby-bugs-ja PR#420)
+
+ * eval.c (umethod_proc): should raise TypeError, instead of
+ returning error causing Proc. Following the principle of "fail
+ early". [ruby-core:00927]
+
+Sun Apr 6 18:29:21 2003 UENO Katsuhiro <katsu@blue.sky.or.jp>
+
+ * ext/zlib/zlib.c: the return value of GzipReader#getc must be
+ unsigned.
+
+Sun Apr 6 00:35:37 2003 Tanaka Akira <akr@m17n.org>
+
+ * sample/exyacc.rb: use Regexp in gsub!.
+
+Sat Apr 5 23:41:28 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): small but serious typo.
+
+Sat Apr 5 04:23:05 2003 Warren Brown <wkb@airmail.net>
+
+ * sprintf.c (rb_f_sprintf): was decrementing width even if there
+ is no sign character.
+
+Sat Apr 5 01:41:28 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (backtrace): skip internal allocator frame.
+ (ruby-bugs-ja PR#416)
+
+Fri Apr 4 10:53:22 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (assign): should prepare mrhs by svalue_to_mrhs().
+
+Wed Apr 2 15:11:23 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * README.EXT, README.EXT.ja (3.3): clarified -1 as free for
+ Data_Wrap_Struct(). [ruby-dev:19881]
+
+Mon Mar 31 11:11:36 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_missing): use "inspect" for T_OBJECT as well.
+
+Mon Mar 31 10:50:48 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_reject_bang): untaint key string.
+
+ * hash.c (env_delete_m): execute block only if deleting key does
+ not exist.
+
+Sat Mar 29 17:54:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): do not call rb_str_buf_cat() with NULL ptr,
+ which causes SEGV; jump to grow instead. [ruby-dev:19944]
+
+Sat Mar 29 15:19:48 2003 Tanaka Akira <akr@m17n.org>
+
+ * instruby.rb, ext/extmk.rb, lib/benchmark.rb, lib/cgi.rb,
+ lib/debug.rb, lib/getoptlong.rb, lib/optparse.rb, lib/time.rb,
+ lib/date/format.rb, lib/irb/ruby-lex.rb lib/uri/common.rb: revert
+ escape for `-' in character class.
+
+Sat Mar 29 09:48:35 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (avalue_to_svalue): use rb_check_array_type() again.
+ Clarify how "to_ary" and "to_a" work. [ruby-talk:68155]
+
+ * eval.c (svalue_to_avalue): ditto.
+
+ * eval.c (svalue_to_mrhs): ditto.
+
+ * eval.c (rb_eval): unary splat to use to_a, but we need a hack to
+ exclude Object#to_a until it's removed.
+
+ * object.c (rb_Array): check obj.respond_to?("to_a"). Currently
+ all object respond_to "to_a", but Object#to_a will be removed.
+
+ * range.c (Init_Range): undefine to_ary.
+
+ * re.c (Init_Regexp): ditto.
+
+Sat Mar 29 09:47:52 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * MANIFEST (ext/aix_mksym.rb): remove obsolete file.
+
+Fri Mar 29 06:21:24 2003 UENO Katsuhiro <katsu@blue.sky.or.jp>
+
+ * ext/zlib: merge from rough.
+
+Fri Mar 28 19:33:39 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * variable.c (rb_class_path): hold temporary class path in a
+ instance variable to get rid of GC. [ruby-dev:19932]
+
+ * variable.c (classname): remove temporary class path when exact
+ name found.
+
+Fri Mar 28 18:29:23 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): do not warn if "-" is at the top
+ or last of character class.
+
+Thu Mar 27 12:10:15 2003 Tanaka Akira <akr@m17n.org>
+
+ * regex.c (re_compile_pattern): fix [:name:] handling.
+ /[\[:digit:]]/ was treated as /[[:digit:]]/.
+ /[[:-@]/ was treated as /[\[:\-@]/.
+ /[%-[:digit:]]/ was treated as /[%-\[:digit:]\]/.
+
+Thu Mar 27 03:26:40 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_capitalize_bang): check length before upcase
+ first character. (ruby-bugs:PR#697)
+
+Wed Mar 26 20:25:10 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dln.c (dln_find_1): break if path list end, even for too long
+ path names. (ruby-bugs-ja:PR#412)
+
+Wed Mar 26 13:19:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (avalue_splat): new function to do unary * (splat)
+ operator.
+
+ * eval.c (avalue_to_svalue,svalue_to_avalue,svalue_to_mrhs): do
+ not use implicit "to_ary" conversion.
+
+ * ext/curses/curses.c (GetWINDOW,GetMOUSE): add taint check.
+
+ * ext/curses/curses.c (curses_init_screen): ditto.
+
+ * ext/curses/curses.c (window_initialize): ditto.
+
+ * gc.c (os_each_obj): prohibit ObjectSpace#each_object in safe
+ mode ($SAFE >= 4).
+
+Tue Mar 25 23:26:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (trap): return "DEFAULT" and "IGNORE" respectively for
+ previous sighandler SIG_DFL and SIG_IGN. [ruby-talk:67860]
+
+Tue Mar 25 12:24:15 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): call avalue_to_mrhs() to assign block
+ parameter |a|. [ruby-dev:19897]
+
+ * ruby.c (ruby_set_argv): freeze argument strings.
+
+Tue Mar 25 12:01:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_initialize): should check rb_secure(4).
+
+ * dir.c (dir_s_getwd): should check rb_secure(4).
+
+ * object.c (rb_obj_infect): function version of OBJ_INFECT().
+
+ * eval.c (rb_secure_update): new function to check object update.
+
+Tue Mar 25 10:18:05 2003 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: should infect also return values of
+ #inspect.
+
+ * ext/strscan/strscan.c: use snprintf() instead of sprintf().
+
+Mon Mar 24 16:55:04 2003 Takaaki Tateishi <ttate@ttsky.net>
+
+ * ext/dl/dl.c: added rb_secure(4). (Thanks to Minero Aoki)
+
+ * ext/dl/sym.c: ditto.
+
+ * ext/dl/ptr.c: ditto.
+
+Mon Mar 24 00:09:02 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (block_append): warn unused literal.
+
+Sun Mar 23 22:22:04 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/jcode.rb (tr!, delete!, szueeze!): add empty string checking.
+
+Sun Mar 23 19:54:53 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): use free() if dfree is -1.
+
+Sat Mar 22 15:50:29 2003 Tanaka Akira <akr@m17n.org>
+
+ * time.c (make_time_t): try search_time_t if mktime/timegm is failed.
+
+Sat Mar 22 13:26:33 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/optparse.rb, lib/jcode.rb, ext/tk/lib/tk.rb: reorder character
+ class /[\]\[]/ to /[\[\]]/ for readability.
+
+Sat Mar 22 12:44:15 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/date/format.rb, lib/uri/common.rb: escape `[', `]', `-' in
+ character class in regexp to avoid warning.
+
+Sat Mar 22 07:39:32 2003 Ulf Betlehem <flu@iki.fi>
+
+ * io.c (rb_io_fread): may lose data on nonblocking read.
+
+Fri Mar 21 23:40:41 2003 Tanaka Akira <akr@m17n.org>
+
+ * regex.c (re_compile_pattern): fix previous change.
+
+ * instruby.rb, ext/extmk.rb, ext/tk/lib/tk.rb, lib/benchmark.rb,
+ lib/cgi.rb, lib/debug.rb, lib/getoptlong.rb, lib/jcode.rb,
+ lib/optparse.rb, lib/time.rb, lib/date/format.rb,
+ lib/irb/ruby-lex.rb: escape `[', `]', `-' in character class in
+ regexp to avoid warning.
+
+Fri Mar 21 23:23:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): give warning for unescaped square
+ brackets and minus in character class. [ruby-dev:19868]
+
+Fri Mar 21 18:12:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (bmcall): missing type.
+
+Fri Mar 21 01:29:35 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): copy sign bits only if value is
+ negative.
+
+ * missing.h: include <stdarg.h> or <varargs.h> if HAVE_VSNPRINTF
+ is not defined.
+
+Thu Mar 20 18:31:37 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser#order!): follow recent change
+ of proc argument.
+
+Thu Mar 20 16:12:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_to_s): change format specifier to "%.15g" to
+ avoid unnecessary 9s (e.g. 99.59999999999999). (ruby-bugs-ja PR#406)
+
+Thu Mar 20 16:03:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (stmt, primary): get rid of SEGV at empty or invalid
+ condition. (ruby-bugs-ja:PR#410)
+
+ * parse.y (cond_negative): negate condition node when NODE_NOT.
+
+Thu Mar 20 10:45:29 2003 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (bmcall): add volatile to avoid GC problem.
+
+Thu Mar 20 10:10:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (load_dyna): clear ruby_errinfo. (ruby-bugs-ja PR#409)
+
+Wed Mar 19 23:05:30 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/tracer.rb (trace_func): save and recover Thread.critical state.
+ Fixed by Fukumoto Atsushi <fukumoto@imasy.or.jp> [ruby-dev:19830]
+
+Wed Mar 19 02:55:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): make str empty if given. (ruby-bugs-ja PR#408)
+
+ * io.c (io_read): ditto.
+
+ * io.c (rb_io_sysread): ditto.
+
+Tue Mar 18 18:24:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c: do not override min and max.
+
+Sun Mar 16 12:29:55 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (object_address_group): use to_s instead of name
+ to get name of class.
+
+Fri Mar 14 08:53:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (remove_sign_bits): octal left most digit for negative
+ numbers may be '3'. (ruby-bugs-ja PR#407)
+
+ * sprintf.c (rb_f_sprintf): should prefix sign bits if bignum is
+ negative, using sign_bits().
+
+Wed Mar 12 16:48:19 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (prep_stdio): set binmode only if the file descriptor
+ is not connected to a terminal on Cygwin.
+
+Wed Mar 12 11:23:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (avalue_to_mrhs): split argument passing and assignment
+ conversion.
+
+ * eval.c (svalue_to_mrhs): ditto.
+
+ * eval.c (avalue_to_svalue): avalue_to_svalue([[1,2]]) should be
+ [[1,2]], not [1,2] to wrap-around.
+
+Tue Mar 11 21:00:59 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: Digest string wrongly included '\n' when user
+ name is too long (ruby-bugs-ja:PR#404).
+
+Tue Mar 11 20:07:01 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: speeding up by avoiding extra flush.
+ (suggested by Brian Candler <B.Candler@pobox.com> [ruby-talk:66516])
+
+Tue Mar 11 04:30:12 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (massign): remove unnecessary array unpacking; it should
+ be handled before massign() by svalue_to_mrhs().
+
+ * eval.c (svalue_to_mrhs): '*a = v' value conversion to avalue
+ (i.e. [1] => [[1]], [1,2] => [1,2]).
+
+ * eval.c (rb_eval): use svalue_to_mrhs.
+
+ * eval.c (rb_yield_0): ditto.
+
+ * eval.c (proc_invoke): break from "Proc#yield" is legal.
+
+Mon Mar 10 23:19:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_find_file): need world writable directory check for
+ relative paths too.
+
+Mon Mar 10 11:23:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_find_file): world writable directory check if
+ $SAFE >= 1 (was $SAFE >= 2).
+
+Mon Mar 10 01:59:47 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: do not dispatch LIST when a mailbox is empty.
+
+ * lib/net/pop.rb: merge the 'STAT' patch from Frank S.Fejes
+ <frank@oopdreams.com>, with modifications (listed below).
+
+ * lib/net/pop.rb: new method Net::POP#mail_size.
+
+ * lib/net/pop.rb: new method Net::POP#bytes.
+
+ * lib/net/pop.rb: new method Net::POPCommand#stat.
+
+Sun Mar 9 19:30:25 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (mkdir, mkdir_p): revert.
+
+ * instruby.rb (umask): umask 0022, not 0.
+
+Sun Mar 9 17:09:40 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (mkdir, mkdir_p): set mode to 0755.
+
+ * Makefile.in (fake.rb): set ALT_SEPARATOR to the default value.
+
+Sat Mar 8 11:30:59 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (massign): fix a bug not to expand in assignment to sole
+ lhs. [ruby-dev:19766]
+
+Fri Mar 7 21:57:25 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (Kernel.pp): module function.
+ (MatchData#pretty_print): new method.
+
+Fri Mar 7 20:27:19 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/tcltklib/extconf.rb (find_tcl, find_tk): return true if
+ non-versioned found. [ruby-dev:19759]
+
+Fri Mar 7 15:05:35 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dbm/extconf.rb: add QDBM support.
+
+Fri Mar 7 12:59:39 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (massign): deal with sole lhs, assign rest args from
+ converted array. [ruby-dev:19751]
+
+Fri Mar 7 03:31:36 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (dsym): :"symbol string" style should not contain `\0'.
+
+ * process.c (proc_detach): new method Process.detach(pid) which
+ create background watcher thread to issue waitpid. [new]
+
+ * process.c (rb_detach_process): utility function to detach
+ process from C code.
+
+ * ext/pty/pty.c (pty_finalize_syswait): terminate watcher thread,
+ and detach child process (by creating new idle waitpid watcher
+ thread).
+
+ * ext/pty/pty.c (pty_syswait): may lost signal stopped child.
+
+Fri Mar 7 00:30:33 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/Win32API/Win32API.c: no longer use inline-asms.
+
+ * ext/Win32API/extconf.rb: no need to add gcc options.
+
+Thu Mar 6 13:02:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (reswords): fix reswords list.
+
+Wed Mar 5 12:13:21 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: better YACC support on HP-UX.
+
+Wed Mar 5 05:55:20 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cat): remove ptr NULL check and MEMZERO(). ptr
+ must be non NULL.
+
+Tue Mar 4 23:12:07 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in, bcc32/Makefile.sub, win32/Makefile.sub: define
+ RUBY_EXPORT to export symbols.
+
+ * defines.h: use RUBY_EXTERN instead of EXTERN.
+
+ * intern.h, re.h, ruby.h, rubysig.h: ditto.
+
+ * win32/win32.h: remove EXTERN definition.
+
+Tue Mar 4 17:54:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_aref): raise TypeError if index is a symbol.
+ [ruby-list:37217]
+
+ * array.c (rb_ary_aset): ditto.
+
+Tue Nov 13 14:39:11 2001 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * missing/strftime.c: HP-UX support.
+
+Tue Mar 4 15:08:08 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: better HP-UX support.
+
+ * missing/strftime.c: ditto.
+
+Tue Mar 4 10:11:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_popen): do not call rb_io_close() directly, call
+ "close" method instead. [ruby-dev:19717]
+
+ * io.c (rb_io_s_open): ditto.
+
+ * hash.c (rb_any_hash): remove DEFER_INTS. all do_hash() calls in
+ st.c are at the top of functions. No reentrant problem.
+
+Tue Mar 4 01:19:21 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dl/MANIFEST: Exclude .cvsignore. [found by: eban]
+
+Tue Mar 4 01:17:08 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Win32API/MANIFEST: Belatedly add lib/win32/registry.rb.
+ [found by: eban]
+
+Tue Mar 4 00:33:04 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * MANIFEST: Belatedly add Test::Unit files. D'oh!
+
+Sun Mar 2 09:51:47 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (w_nbyte): should output always via rb_io_write().
+
+ * marshal.c (dump_ensure): ditto.
+
+ * marshal.c (marshal_dump): should call "binmode" method, if it
+ responds to.
+
+ * marshal.c (r_byte): should input always via "getc" method.
+
+ * marshal.c (r_bytes0): should input always via "read" method.
+
+ * marshal.c (marshal_load): need not to set up FILE* fp;
+
+Mon Mar 3 11:29:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): parse 'lhs = a rescue b' as 'lhs=(a rescue b)'.
+
+Mon Mar 3 02:53:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fread): should not clearerr() if there's no filled
+ buffer (i.e. rb_io_fread() returning zero).
+
+Mon Mar 3 01:42:35 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-expr-beg): escaped char syntax.
+
+ * misc/ruby-mode.el (ruby-parse-partial): ditto.
+
+ * misc/ruby-mode.el (ruby-parse-partial): no deep indent for
+ block.
+
+ * misc/ruby-mode.el (ruby-backward-arg): skip arguments backward.
+
+ * misc/ruby-mode.el (ruby-calculate-indent): too deep indentation.
+
+Fri Feb 28 23:50:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (map_errno): map OS error to errno. [new]
+
+ * win32/win32.c (pipe_exec, CreateChild, poll_child_status, waitpid,
+ kill, link, rb_w32_rename, unixtime_to_filetime, rb_w32_utime): use
+ map_errno() instead of using GetLastError() directly.
+
+ * win32/win32.c (rb_w32_select, rb_w32_accept, rb_w32_bind,
+ rb_w32_connect, rb_w32_getpeername, rb_w32_getsockname,
+ rb_w32_getsockopt, rb_w32_ioctlsocket, rb_w32_listen, rb_w32_recv,
+ rb_w32_recvfrom, rb_w32_send, rb_w32_sendto, rb_w32_setsockopt,
+ rb_w32_shutdown, rb_w32_socket, rb_w32_gethostbyaddr,
+ rb_w32_gethostbyname, rb_w32_gethostname, rb_w32_getprotobyname,
+ rb_w32_getprotobynumber, rb_w32_getservbyname, rb_w32_getservbyport,
+ rb_w32_fclose, rb_w32_close): map winsock error to errno.
+
+Fri Feb 28 22:54:10 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (flock): supports larger files, and maps error
+ code.
+
+ * win32/win32.c (rb_w32_asynchronize): returns errno from child
+ thread.
+
+ * win32/win32.c (rb_w32_fclose, rb_w32_close): ensures unlocked.
+
+Wed Feb 26 17:38:16 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: replace Kernel.open as well.
+
+Tue Feb 25 23:03:08 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/debug.rb (DEBUGGER__::Context#debug_command): bp filename must
+ be the basename of it. [ruby-talk:65644]
+
+Mon Feb 24 17:49:35 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (yycompile): zero clear ruby_eval_tree_begin if
+ compilation failed.
+
+Mon Feb 24 08:06:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_new): need no MEMZERO().
+
+Sun Feb 23 17:57:06 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils (fu_stream_blksize): wrong logical condition.
+ (and -> or).
+
+Sat Feb 22 03:12:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_gt): use rb_num_coerce_cmp() instead of
+ rb_num_coerce_bin.
+
+ * numeric.c (fix_ge, fix_lt, fix_le): ditto.
+
+ * numeric.c (flo_gt, flo_ge, flo_lt, flo_le): ditto.
+
+Sat Feb 22 02:45:20 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_create): may called from place higher than
+ rb_gc_stack_start.
+
+ * gc.c (Init_stack): update rb_gc_stack_start if it is lower (or
+ higher if stack grows down) than the previous value.
+
+Fri Feb 21 21:03:41 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: new method FileUtils#copy_stream.
+
+ * lib/fileutils.rb: new method FileUtils#compare_file.
+
+ * lib/fileutils.rb: new method FileUtils#compare_stream.
+
+ * lib/fileutils.rb: new method FileUtils#rmtree (alias of rm_rf).
+
+Fri Feb 21 17:19:27 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (rb_f_require): do not need to abort if a DLEXT file
+ is not found.
+
+Fri Feb 21 13:39:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cmp_m): should use LONG2NUM().
+
+Fri Feb 21 12:45:50 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cmp_m): two small bugs fixed.
+
+Fri Feb 21 08:03:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_mark): inline rb_gc_mark_children().
+
+ * gc.c (gc_sweep): new tactics to increase malloc_limit mildly.
+
+Fri Feb 21 05:16:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cmp_m): return nil if str2 does not respond to
+ both "to_str" and "<=>".
+
+ * compar.c (cmp_gt): return nil if "<=>" returns nil (means
+ incomparable).
+
+ * compar.c (cmp_ge, cmp_lt, cmp_le): ditto.
+
+ * compar.c (cmp_between): use RTEST(), since cmp_lt and cmp_gt may
+ return nil.
+
+Thu Feb 20 19:05:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): main thread swapped by fork() may
+ terminate rb_thread_start_0() successfully. call ruby_stop(0);
+ this change was suggested by Rudi Cilibrasi
+ <cilibrar@drachma.ugcs.caltech.edu>.
+
+Thu Feb 20 18:44:51 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): fix wrong behavior for root file.
+ expand_path("..", "//machine/share") => "//machine/share"
+ expand_path("..", "c:/a") => "c:/"
+ expand_path("..", "/a") => "/"
+
+Thu Feb 20 18:11:01 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): should not upward beyond share name.
+
+Thu Feb 20 15:45:33 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * missing.h (strtoul): fix prototype of strtoul.
+
+Thu Feb 20 10:11:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (clhs): allow "Foo::Bar = x".
+
+Thu Feb 20 04:07:06 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (primary): "self[n]=x" can be legal even when "[]=" is
+ private. changes submitted in [ruby-talk:63982]
+
+ * parse.y (aryset): ditto.
+
+ * parse.y (attrset): "self.foo=x" can be legal even when "foo="
+ is private.
+
+ * eval.c (is_defined): private "[]=" and "foo=" support.
+
+ * eval.c (rb_eval, assign): ditto.
+
+Thu Feb 20 03:58:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): "foo=" should not always be public.
+
+Thu Feb 20 01:23:59 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_restore_context): inhibit interrupts in
+ critical section while context switching. [ruby-talk:64785]
+
+Wed Feb 19 18:27:42 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * node.h (nd_cpath): nested class/module declaration.
+ [EXPERIMENTAL]
+
+ * eval.c (rb_eval): ditto.
+
+ * gc.c (rb_gc_mark_children): ditto.
+
+ * parse.y (cpath): ditto.
+
+Tue Feb 18 21:39:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): should not report uninitialized warning by
+ attribute reader method.
+
+ * variable.c (rb_attr_get): new function to get instance variable
+ without uninitialized warning.
+
+ * io.c (argf_to_io): should prefetch argv.
+
+Tue Feb 18 00:13:50 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-comment-column): customize comment
+ column. [new]
+
+ * misc/ruby-mode.el (ruby-deep-indent-paren): deep indentation
+ parentheses. [new]
+
+ * misc/ruby-mode.el (ruby-expr-beg): fix for / after $?.
+
+ * misc/ruby-mode.el (ruby-parse-partial, ruby-calculate-indent):
+ deep indentation support.
+
+ * misc/ruby-mode.el (ruby-forward-sexp, ruby-backward-sexp):
+ move forward/backward across one balanced expression. [new]
+
+ * misc/ruby-mode.el (ruby-indent-exp): indent balanced
+ expression. [new]
+
+ * misc/ruby-mode.el (ruby-electric-brace): indent before
+ show matching parenthesis. (contributed by NABEYA Kenichi)
+
+Mon Feb 17 14:36:56 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_opendir, rb_w32_utime): need parens.
+
+Mon Feb 17 14:13:25 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (link): implement with CreateHardLink().
+
+ * win32/win32.c, win32/win32.h (rb_w32_utime): enable utime() to
+ directory if on NT. [new] (ruby-bugs-ja:PR#393)
+
+Mon Feb 17 13:28:51 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): strip last slash when path is
+ root.
+
+Sun Feb 16 19:22:31 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): buffer might be reallocated while
+ expanding default directory.
+
+ * file.c (file_expand_path): default directory was being
+ ignored if path was full path with no drive letter, under
+ DOSISH.
+
+Sun Feb 16 03:14:33 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (prep_stdio, Init_io): always set binmode on Cygwin.
+
+Sat Feb 15 01:01:45 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): fix surplus path separators while
+ expanding at root directory. [ruby-dev:19572]
+
+Fri Feb 14 14:25:24 2003 akira yamada <akira@arika.org>
+
+ * lib/uri/generic.rb, lib/uri/ldap.rb, lib/uri/mailto.ldap: all foo=()
+ returns arguments passed by caller.
+
+ * lib/uri/generic.rb (Generic#to_str, Generic#to_s): removed to_str.
+ Suggested by Tanaka Akira <akr@m17n.org> at [ruby-dev:19475].
+
+ * lib/uri/generic.rb (Generic#==): should not generate an URI object
+ from argument. Suggested by Tanaka Akira <akr@m17n.org> at
+ [ruby-dev:19475].
+
+Thu Feb 13 11:54:50 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.c (ruby_init_loadpath): ensures buffer terminated
+ before use strncpy().
+
+ * ruby.c (proc_options): avoid SEGV at -S with no arguments.
+ script argument is in effect only when -e is not given.
+ (ruby-bugs-ja:PR#391)
+
+Thu Feb 13 01:30:10 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_schedule): current thread may be dead when
+ deadlock. (ruby-bugs:PR#588)
+
+Thu Feb 13 00:28:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): step might be float 0 < x < 1.
+
+ * eval.c (rb_thread_schedule): pause if no runnable thread when
+ there's only one thread.
+
+Thu Feb 13 00:09:47 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (strrdirsep): ignore trailing directory separators.
+
+ * file.c (rb_file_s_expand_path): File.expand_path(".","/") should
+ return "/". (ruby-bugs-ja:PR#389)
+
+ * file.c (rb_file_s_basename): also ignore trailing directory
+ separators, in compliance with SUSv3. (ruby-bugs-ja:PR#390)
+
+ * file.c (rb_file_s_dirname, rb_file_s_extname): ditto.
+
+ * file.c (rb_file_s_dirname): append "." if drive only.
+
+ * file.c (rb_file_s_split): get rid of converting twice.
+
+Mon Feb 10 20:55:15 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (parse_args): add '-n' to $mflags BEFORE "--".
+ do not add DESTDIR if already included in $mflags.
+
+Mon Feb 10 19:54:30 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (FileUtils#uptodate?): use mtime for
+ comparison.
+
+Mon Feb 10 10:14:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_to_a): return value should be an Array if the
+ receiver is an instance of subclass of Array.
+
+ * string.c (rb_str_to_s): return value should be a String if the
+ receiver is an instance of subclass of String.
+
+Mon Feb 10 03:33:42 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (rb_file_sysopen): rb_file_sysopen_internal() needs four
+ arguments.
+
+Sun Feb 9 15:16:04 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * intern.h (HAVE_RB_DEFINE_ALLOC_FUNC, RB_CVAR_SET_4ARGS):
+ define to 1.
+
+ * ruby.h (NORETURN_STYLE_NEW): ditto.
+
+Sun Feb 9 12:28:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (init_mkmf): add libdir to LIBPATH unless cross
+ compiling.
+
+Sun Feb 9 08:34:45 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: 4xx raises Net::ProtoServerError, 5xx raises
+ Net::ProtoFatalError (for backward compatibility).
+
+Sun Feb 9 07:07:26 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: new method FileUtils.pwd (really).
+
+ * lib/fileutils.rb: FileUtils.pwd, cmp, identical?, uptodate? does
+ not accept any option.
+
+Sat Feb 8 18:35:30 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-forward-string): fixed void variable
+ error.
+
+Sat Feb 8 16:23:11 2003 NABEYA Kenichi <kenichi@nabeya.com>
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): method name can
+ be delimited by tab.
+
+Sat Feb 8 03:57:32 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/irb/workspace.rb, lib/irb/ext/math-mode.rb,
+ lib/irb/ext/multi-irb.rb, lib/irb/lc/error.rb,
+ lib/irb/lc/help-message, lib/irb/lc/ja/error.rb,
+ lib/shell/command-processor.rb, lib/shell/error.rb,
+ lib/shell/filter.rb: Fix typos and grammos. [approved by: keiju]
+
+Sat Feb 8 03:34:28 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * intern.h (HAVE_RB_DEFINE_ALLOC_FUNC): New boolean macro to make
+ it easier to write extensions that work with both ~1.6 and 1.8~.
+
+ * intern.h (RB_CVAR_SET_4ARGS): Ditto.
+
+ * ruby.h (NORETURN_STYLE_NEW): Ditto.
+
+Sat Feb 8 00:47:24 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): calls method_missing when superclass method
+ does not exist.
+
+ * eval.c (rb_f_missing): now handles "no super" case.
+
+ * object.c (rb_obj_ivar_get): Object#instance_variable_get: new
+ method to get instance variable value without eval(). [new]
+
+ * object.c (rb_obj_ivar_set): Object#instance_variable_set: new
+ method to set instance variable value without eval(). [new]
+
+Fri Feb 7 15:35:21 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * intern.h, re.c (rb_memsearch): returns long.
+
+ * string.c (rb_str_index): should return offset position.
+
+Fri Feb 7 15:30:15 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (proc_invoke): should propagate self to super
+ methods. [ruby-dev:19510]
+
+Thu Feb 6 19:04:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): should not preset "kcode" unless
+ encoding is explicitly specified.
+
+Thu Feb 6 19:01:32 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: new method FileUtils.pwd.
+
+ * lib/fileutils.rb: default label is ''.
+
+ * lib/fileutils.rb: using module_eval again, to avoid ruby's bug.
+
+ * lib/fileutils.rb: fix wrong examples in rdoc.
+
+Thu Feb 6 17:43:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/complex.rb (Complex#==): should not raise error by type
+ mismatch.
+
+ * lib/rational.rb (Rational#==): ditto.
+
+Thu Feb 6 11:44:40 2003 MoonWolf <moonwolf@moonwolf.com>
+
+ * re.c (rb_reg_initialize_m): 3rd argument was ignored.
+
+Thu Feb 6 01:09:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_count): return 0 for empty string (was
+ returning nil).
+
+Wed Feb 5 19:41:37 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: dispatch code restructured to make it openable
+ that has `open' method.
+
+ * lib/open-uri.rb: Location: field may has a relative URI.
+ pointed out by erik eriksson <ee@opera.com>.
+
+Wed Feb 5 17:11:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): no .<digit> float literal anymore.
+
+Tue Feb 4 16:11:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_equal): a == b is true when b is non T_ARRAY
+ object, if b has "to_ary" and b == a.
+
+ * hash.c (rb_hash_equal): a == b is true when b is non T_HASH
+ object, if b has "to_hash" and b == a.
+
+ * string.c (rb_str_equal): a == b is true when b is non T_STRING
+ object, if b has "to_str" and b == a.
+
+Mon Feb 3 23:46:48 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_getline): should not increment lineno at EOF.
+
+Mon Feb 3 16:49:19 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): default Object#=== now calls "=="
+ internally.
+
+ * re.c (rb_reg_initialize_m): should honor option status of
+ original regexp.
+
+ * array.c (rb_ary_equal): ary2 should be T_ARRAY (no to_ary
+ conversion).
+
+ * array.c (rb_ary_eql): ditto.
+
+ * string.c (rb_str_equal): str2 should be T_STRING (no to_str
+ conversion).
+
+Mon Feb 3 16:32:52 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * re.c (rb_memsearch): a little improvement.
+
+Mon Feb 3 13:18:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_memsearch): algorithm body of String#index.
+
+ * error.c (Init_Exception): "to_str" removed.
+
+ * eval.c (eval): should not rely on Exception#to_str
+
+ * eval.c (compile_error): ditto.
+
+ * error.c (err_append): ditto.
+
+Sat Feb 1 23:56:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_merge): Hash#merge, non destructive "update".
+ now there's also Hash#merge! which is an alias to "update".
+
+Fri Jan 31 14:16:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_index): search using Karp-Rabin algorithm.
+
+Fri Jan 31 12:45:11 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_obj_classname): new function.
+
+ * string.c (rb_str_dup): should preserve original's class (but not
+ hidden singleton class).
+
+ * string.c (rb_str_substr): ditto.
+
+ * parse.y: backout EXPR_CMDARG removal.
+
+Fri Jan 31 09:40:07 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser::List::accept): default
+ pattern must not be nil.
+
+ * lib/optparse.rb (OptionParser::make_switch): NoArgument doesn't
+ override other styles.
+
+Thu Jan 30 16:46:43 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser::Switch::PlacedArgument): added.
+ if the next argument doesn't start with '-', use it as the
+ value.
+
+ * lib/optparse.rb (OptionParser::make_switch): fixed a bug of
+ pattern.
+
+ * lib/optparse.rb (Array): no need to guard.
+
+Thu Jan 30 08:27:19 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (rb_file_s_expand_path): removed a sludge.
+
+Wed Jan 29 03:24:39 2003 Michal Rokos <michal@rokos.homeip.net>
+
+ * dir.c (glob_helper): memory leak fixed.
+
+Tue Jan 28 04:45:03 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb (parse_args), ext/extmk.rb (parse_args): Prepend a
+ hyphen to the first argument of MAKEFLAGS only if appropriate.
+ Remove wrong comments.
+
+Mon Jan 27 03:30:06 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c (get_syserror): use snprintf() instead of sprintf(). pointed
+ out by knu.
+
+Mon Jan 27 02:06:38 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c (get_syserror): some Windows' errno have 5 digits. pointed
+ out by znz.
+
+Sun Jan 26 19:23:10 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb ($mflags.set?): Check $make instead of $nmake, since
+ there is no such a variable.
+
+ * instruby.rb ($mflags.set?), ext/extmk.rb ($mflags.set?): Return
+ false if unmatched.
+
+Sun Jan 26 19:08:30 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb: Embed rdoc style comments.
+
+ * lib/shellwords.rb (shellwords): Use String#lstrip!.
+
+ * lib/shellwords.rb (shellwords): Recognize an object that
+ responds to to_str() by using String.new().
+
+Sun Jan 26 17:53:04 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb (parse_args), ext/extmk.rb (parse_args): Detect -n
+ and emulate a dry run. Use 'make' in case no --make argument is
+ given.
+
+Sun Jan 26 07:18:42 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * instruby.rb: re-define individual methods verbosely rather than
+ including FileUtils::Verbose, in order to suppress messages from
+ FileUtils#cmp.
+
+ * instruby.rb (makedirs): make same directory only once even if
+ dryrun.
+
+ * lib/fileutils.rb (FileUtils::Verbose, FileUtils::NoWrite):
+ re-define methods with define_method instead of module_eval.
+
+Sun Jan 26 03:37:18 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb, ext/extmk.rb, Makefile.in, win32/Makefile.sub,
+ bcc32/Makefile.sub: Replace the complicated MFLAGS/MAKEFLAGS
+ parser with something plain and comprehensible. This fixes a
+ bug where make flags were wrongly reordered and the resulted
+ command line often did not make sense especially when BSD make
+ is used with extra arguments given. Tested with FreeBSD and
+ Linux by me and mswin32, bccwin32 and mingw by usa.
+
+Fri Jan 24 18:15:33 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: tMINUS should have lower precedence than tPOW.
+
+Fri Jan 24 05:12:55 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): deal
+ with escaped $ and ? at the end of strings. [ruby-talk:62297]
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): added defined?.
+
+Thu Jan 23 17:25:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): do not warn discarding already undefined
+ method.
+
+ * lib/rational.rb: undef quo before replacing.
+
+Thu Jan 23 15:49:57 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (arg): missing arguments.
+
+Thu Jan 23 14:56:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rational.rb: modified to support "quo".
+
+ * numeric.c (num_quo): should return most exact quotient value,
+ i.e. float by default, rational if available.
+
+ * numeric.c (num_div): "div" should return x.divmod(x)[0].
+
+Thu Jan 23 13:24:18 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_arg): was accessing garbage argv value.
+
+Thu Jan 23 06:37:01 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * instruby.rb: should not contain destdir in shebang line.
+
+Wed Jan 22 23:19:57 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (pipe_exec): remove unnecessary SetStdHandle().
+
+Wed Jan 22 20:20:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): syntaxify tPOW negative number hack.
+
+ * parse.y (negate_lit): new function to negate literal numeric
+ values in compile time.
+
+Wed Jan 22 15:36:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match_exec): charset info may be stored in MBC
+ region when $KCODE != NONE.
+
+Wed Jan 22 14:22:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (set_syserr): should preserve duplicated error names.
+
+Tue Jan 21 20:29:31 2003 Michal Rokos <michal@rokos.homeip.net>
+
+ * mkmf.rb: make possible to add files to clean and distclean targets
+
+Tue Jan 21 18:05:25 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bcc32/Makefile.sub (LIBRUBY_A): link dmyext.
+
+Tue Jan 21 16:59:18 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: use real interpreter pathname at shebang line.
+ [ruby-dev:19370]
+
+Tue Jan 21 16:22:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): put back old ** behavior for negative number
+ right operand.
+
+Tue Jan 21 14:46:12 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb: Use Test::Unit.
+
+ * lib/prettyprint.rb: Ditto
+
+ * lib/time.rb: Ditto
+
+ * lib/tsort.rb: Ditto
+
+Tue Jan 21 04:15:50 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb: Use redefined `to_s' as well as `inspect'.
+ Useless `pretty_print' methods removed.
+ (PP::ObjectMixin#pretty_print_inspect): new method.
+
+Mon Jan 20 21:48:43 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (MANTYPE): Detect if the system's nroff(1) groks
+ mdoc. Provide a new option --with-mantype={doc|man} in case the
+ check does not work as expected.
+
+ * Makefile.in (MANTYPE): Define MANTYPE and pass it to
+ instruby.rb.
+
+ * instruby.rb: Convert mdoc manpages to man for systems which
+ nroff(1) does not grok mdoc.
+
+Mon Jan 20 21:25:18 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb (self.open): If a block is given, call it with
+ tempfile as an argument and automatically close the tempfile
+ when the block terminates.
+
+Mon Jan 20 21:02:50 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * mdoc2man.rb: Properly put nested braces, parentheses and angles.
+
+ * mdoc2man.rb: Add support for .An and .Aq/.Ao/.Ac.
+
+ * mdoc2man.rb: Add support for .Dl.
+
+ * mdoc2man.rb: Make .Pf macro actually work.
+
+ * mdoc2man.rb: Properly handle .Os.
+
+ * mdoc2man.rb: Correctly omit spaces around punctuation
+ characters.
+
+Mon Jan 20 19:43:41 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * mdoc2man.rb: Make this work as a library.
+
+Mon Jan 20 18:22:40 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_f_require): purge too many goto's.
+
+Mon Jan 20 17:50:05 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * mdoc2man.rb (parse_macro): Understand .Ux.
+
+Mon Jan 20 17:32:56 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * mdoc2man.rb: New file. A mdoc to man converter ported from
+ Perl.
+
+Mon Jan 20 15:40:15 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.1: Properly close .Bl with .El.
+
+Mon Jan 20 04:14:17 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (egrep_cpp): use inspect to show options.
+
+ * lib/mkmf.rb (dir_config): prior configured directories to
+ defaults.
+
+ * lib/mkmf.rb (dir_config): extract first word to determine
+ make command type.
+
+Mon Jan 20 02:15:53 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/aix_mksym.rb: no longer used.
+
+Mon Jan 20 00:17:16 2003 Matt Armstrong <matt@lickey.com>
+
+ * file.c (eaccess): under windows, make eaccess() just call
+ access(). [ruby-core:716], [ruby-bugs:PR#556]
+
+Sun Jan 19 23:08:18 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb (shellwords): A backslash ('\') in single
+ quotes should not be regarded as meta character. This bug or
+ maybe feature was inherited from Perl's shellwords.pl.
+
+Sun Jan 19 14:01:12 2003 UENO Katsuhiro <unnie@blue.sky.or.jp>
+
+ * regex.c (is_in_list): should work well with UTF-8.
+
+ * regex.c (re_match_exec): ditto.
+
+Sat Jan 18 14:53:49 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_cstr_to_inum): should not erase all 0s, but
+ squeeze into one. [ruby-dev:19377]
+
+Fri Jan 17 03:33:42 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * sprintf.c (rb_f_sprintf): Fix a bug caused by an uninitialized
+ variable v, that a bignum unexpectedly gets converted into a
+ string with its higher figures all filled with ./f/7/1,
+ depending on the base. This bug seems to have been introduced
+ in rev.1.27.
+
+ * sprintf.c (rb_f_sprintf): Use switch instead of a sequence of
+ else-if's.
+
+Wed Jan 15 15:18:38 2003 moumar <moumar@netcourrier.com>
+
+ * configure.in (ARCHFILE): set even unless --enable-shared on
+ AIX. [ruby-talk:61466]
+
+ * marshal.c (math.h): should be included after ruby.h on AIX.
+ [ruby-talk:61366]
+
+Tue Jan 14 21:47:56 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_f_require): do not search adding .rb/.so suffixes if
+ the suffix specified. [ruby-dev:18702]
+ http://moonrock.jp/~don/d/200211.html#d08_t1
+
+Tue Jan 14 18:36:41 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_all): now works without block.
+
+ * enum.c (enum_any): ditto.
+
+Tue Jan 14 01:21:32 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (next_argv): not always set binmode.
+
+Mon Jan 13 20:45:19 2003 Guy Decoux <ts@moulon.inra.fr>
+
+ * parse.y (list_append): avoid O(n) search using node->nd_next->nd_end.
+
+ * parse.y (list_concat): ditto.
+
+ * eval.c (rb_eval): NODE_ARRY nd_end adoption.
+
+Mon Jan 13 02:22:11 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dl/lib/dl/win32.rb: eliminate unnecessary "A" adding.
+
+Sun Jan 12 16:07:17 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (next_argv): inherit binmode from $defout.
+
+Sat Jan 11 22:50:47 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dl/lib/dl/win32.rb: compatibility improvement.
+
+Sat Jan 11 01:44:16 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (RUBY_CHECK_IO_NEED): added more tests.
+
+ * io.c (rb_io_check_readable): seek after synchronized write.
+
+Fri Jan 10 01:23:45 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): syntax
+ classes are not allowed inside character classes.
+ [ruby-talk:60996]
+
+Thu Jan 9 23:28:01 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in: AC_MSG_FAILURE is a new macro in 2.54b or later.
+
+Thu Jan 9 17:05:24 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (RUBY_CHECK_IO_NEED): check whether fseek() and
+ fflush() are needed.
+
+ * io.c (flush_before_seek): flush write stream only.
+
+ * io.c (rb_io_check_readable): seek instead of flush if the last
+ operation was write.
+
+ * io.c (rb_io_check_writable): seek instead of flush if the last
+ operation was read.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub: needs to seek between
+ R/W.
+
+Thu Jan 9 16:31:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should not discard nested NODE_BLOCK.
+
+Thu Jan 9 15:12:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): NODE_NOT elimination for if/unless/while/until node.
+
+ * parse.y (primary): ditto.
+
+Thu Jan 9 13:26:18 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * st.h, st.c: Back out the introduction of st_*_func_t. Some
+ compilers complain about function type mismatch.
+
+Thu Jan 9 02:10:44 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): reduce recursive rb_eval() call by using sort
+ of continuation passing style.
+
+Wed Jan 8 17:10:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/lib/win32/registry.rb: added. [new]
+
+Wed Jan 8 15:54:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: remove ruby_last_node and assignments seems to be
+ unnecessary
+
+ * intern.h: debug does not run if ID_ALLOCATOR is zero.
+
+Wed Jan 8 15:04:11 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_each): treat fixnums specially to boost.
+
+ * numeric.c (num_step): remove rb_scan_args() for small speedup.
+
+Tue Jan 7 17:56:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_avalue): should return converted array.
+
+Tue Jan 7 07:48:01 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_f_local_variables): skip $_, $~ and flip states in
+ dynamic variables. [ruby-core:00681]
+
+Tue Jan 7 02:46:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_clear): new Hash compatible method.
+
+ * hash.c (env_shift, env_invert, env_replace, env_update): ditto.
+
+Mon Jan 6 23:36:29 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * st.h, st.c: Introduce new conventional typedef's, st_data_t,
+ st_compare_func_t, st_hash_func_t and st_each_func_t.
+
+ * st.h, st.c: Do explicit function declarations and do not rely on
+ implicit declarations.
+
+ * class.c, eval.c, gc.c, hash.c, marshal.c, parse.y, variable.c:
+ Add proper casts to avoid warnings.
+
+Mon Jan 6 20:44:43 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * intern.h (rb_check_array_type): Declare rb_check_array_type().
+
+ * ext/digest/md5/md5ossl.c: Include stdio.h for sprintf() and
+ string.h for memcmp().
+
+ * ext/dl/ptr.c: Include ctype.h for isdigit().
+
+Mon Jan 6 18:43:17 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c: improve DOSISH drive letter support.
+
+Mon Jan 6 18:31:45 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (ln): add ' -f' in the verbose message.
+
+ * lib/fileutils.rb (cp_r): add 'p' in the verbose message.
+
+Mon Jan 6 16:44:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_join): dispatch based on "to_str".
+
+ * array.c (rb_ary_times, rb_ary_equal): ditto.
+
+Mon Jan 6 13:26:35 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (proc_exec_v): follow to proc_spawn_v(). call do_aspawn()
+ on Win32.
+
+ * process.c (rb_proc_exec): call do_spawn() on Win32.
+
+ * win32/win32.c, win32/win32.h (do_spawn, do_aspawn): add mode flag.
+
+ * process.c (proc_spawn_v, rb_f_system): follow above change.
+
+Mon Jan 6 05:11:15 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/extmk.rb: make $0 normal variable.
+
+Mon Jan 6 02:32:46 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * struct.c (make_struct): needs meta class.
+
+Sun Jan 5 22:54:05 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (ln): `argv' is not a argument.
+
+Sun Jan 5 17:44:37 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/extmk.rb (extmake): set $0 temporarily while loading
+ extconf.rb.
+
+Sun Jan 5 14:46:46 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb: need paren in regexp(make -n install).
+
+ * ext/extmk.rb (sysquote): do not need to quote on mswin/bccwin/mingw.
+
+ * ext/extmk.rb ($mflags): uniq items and remove '-' and '--'.
+ move options to the lead.
+
+ * lib/fileutils.rb (install): model on the real install
+ command(message).
+
+Sun Jan 5 09:36:46 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.c (ruby_init_loadpath): under Windows, get the module
+ path from an internal address instead of hard coded library
+ name.
+
+ * cygwin/GNUmakefile.in, bcc32/Makefile.sub,
+ win32/Makefile.sub (CPPFLAGS): removed LIBRUBY_SO macro.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub (config.h): no longer
+ depends on makefiles.
+
+Sun Jan 5 04:17:05 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * gc.c (SET_STACK_END): Issue a FLUSH_REGISTER_WINDOWS here too.
+ This fixes make test on FreeBSD/sparc64.
+
+Sun Jan 5 03:43:47 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * defines.h (FLUSH_REGISTER_WINDOWS): Make the flushw call an
+ inline function so it can be used as an expression.
+
+ * eval.c (EXEC_TAG, THREAD_SAVE_CONTEXT): Consistently call
+ FLUSH_REGISTER_WINDOWS before calling setjmp(). (I suspect that
+ every setjmp() implementation should take care of register
+ windows, though)
+
+Sun Jan 5 03:12:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (utimbuf): use utimbuf instead of _utimbuf if defined _WIN32.
+
+ * win32/Makefile.sub (LIBS): use oldnames.lib.
+
+ * win32/win32.c (rb_w32_getcwd): follow above change.
+
+ * win32/win32.h: ditto.
+
+ * wince/direct.c, wince/direct.h (getcwd): ditto.
+
+ * wince/io.h: ditto.
+
+ * wince/string.c, wince/wince.h (stricmp, strnicmp): ditto.
+
+Sat Jan 4 15:18:50 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_proc_exec): use same logic as DJGPP on win32 ports.
+
+ * process.c (rb_f_system): ditto.
+
+ * win32/win32.c, win32/win32.h (do_aspawn): [new]. for arrayed
+ arguments.
+
+ * win32/win32.c (CreateChild): add new argument for real filename of
+ executing process.
+
+ * win32/win32.c (NtHasRedirection, pipe_exec): follow above change.
+
+Sat Jan 4 14:29:52 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in: set rb_cv_need_io_flush_between_seek=yes.
+
+ * win32/Makefile.sub (config.h): define NEED_IO_FLUSH_BETWEE_SEEK.
+ (pointed out by moriq [ruby-dev:19299])
+
+Sat Jan 4 03:12:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (umethod_bind): exact class match is not required. relax
+ the restriction to subclasses.
+
+Sat Jan 4 01:33:40 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (rb_file_s_lchmod): get rid of gcc-3 -O3 warning.
+
+Fri Jan 3 22:26:07 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * process.c (rb_proc_times): need to initialize first.
+
+Fri Jan 3 01:10:17 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): call "inherited" before executing class body.
+
+ * class.c (rb_define_class): call "inherited" after defining the
+ constant.
+
+ * class.c (rb_define_class_under): ditto.
+
+Thu Jan 2 19:37:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (massign): expand first element if RHS is an array and
+ its size is 1, and LHS has concrete assignment target (i.e. LHS
+ has target(s) other than *var).
+
+ * eval.c (massign): avoid unnecessary avalue/svalue conversion.
+
+ * eval.c (rb_yield_0): ditto
+
+ * array.c (rb_ary_update): do not allocate unused array if rpl is
+ nil (i.e. merely removing elements).
+
+Thu Jan 2 13:55:08 2003 Mathieu Bouchard <matju@sympatico.ca>
+
+ * io.c (io_read): should resize supplied string if it's shorter
+ than expected.
+
+Thu Jan 2 11:01:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (bmcall): arguments should be an array.
+
+Wed Jan 1 18:18:45 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: better DJGPP support. add GNUmakefile.
+
+ * djgpp/GNUmakefile: new.
+
+Wed Jan 1 04:16:18 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * node.h (struct RNode): Change argc from int to long. Otherwise
+ NEW_CFUNC() sets argc to a wrong value on platforms where
+ sizeof(int) != sizeof(long) and the byte order is big-endian.
+ This fixes breakage on FreeBSD/sparc64.
+
+Tue Dec 31 23:22:50 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (massign): removed awkward conversion between yvalue,
+ mvalue, etc.
+
+ * eval.c (rb_yield_0): new parameter added to tell whether val is
+ an array value or not.
+
+ * parse.y (yield_args): restructuring: new nodes: NODE_RESTARY2,
+ NODE_SVALUE; removed node: NODE_RESTARGS.
+
+Tue Dec 31 21:13:51 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * Makefile.in, {win32,bcc32}/Makefile.sub: add new target:
+ what-where, no-install.
+
+ * mkconfig.rb: add const: CROSS_COMPILING.
+
+ * ext/extmk.rb: no-install support. add MAKEDIRS macro.
+
+ * lib/mkmf.rb: add !ifdef .. !endif for Borland make.
+
+ * process.c: improve DJGPP support. system "ls", "-l".
+
+Tue Dec 31 20:16:37 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/socket/addrinfo.h (NI_MAXHOST): Define NI_MAXHOST and
+ NI_MAXSERV only if they are not defined yet. This fixes build
+ on such platforms as OpenBSD.
+
+Tue Dec 31 20:07:49 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/tcltklib/extconf.rb (find_tcl, find_tk): Look for both
+ lib{tcl,tk}M.N and lib{tcl,tk}MN on all platforms. *BSD have
+ Tcl/Tk libraries named this way.
+
+Tue Dec 31 19:48:21 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in: Improve OpenBSD support. [obtained from: OpenBSD
+ ports]
+
+ * dln.c (FUNCNAME_PATTERN): Ditto.
+
+Tue Dec 31 19:21:02 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_transpose): Properly declare ary as a VALUE.
+
+ * file.c (rb_file_s_chmod): Do not directly cast an int to void *
+ to avoid a warning.
+
+ * defines.h (FLUSH_REGISTER_WINDOWS): Add support for
+ FreeBSD/sparc64. miniruby still coredumps in a different place,
+ though.
+
+Tue Dec 31 07:47:15 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (parse_string): readjusted.
+
+ * parse.y (heredoc_identifier): readjusted.
+
+ * parse.y (here_document): make EOL codes of single-quoted
+ here-documents consistent.
+
+ * parse.y (yylex): reduced unnecessary conditionals.
+
+Tue Dec 31 04:49:51 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.1: mdoc'ify.
+
+Tue Dec 31 01:30:29 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * parse.y (yylex): do not accept " __END__\n". ([ruby-dev:19245])
+
+Mon Dec 30 21:10:59 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * parse.y (yylex): use strncmp instead of strcmp.
+ accept "__END__\r\n". ([ruby-dev:19241])
+
+Mon Dec 30 20:32:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_mark_frame): should mark frame->node.
+
+Mon Dec 30 19:10:30 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/extmk.rb: split --make argument contains options, assume
+ the first word of --make-flags is always options even unless
+ preceded by -, and ignore letter-case of options if nmake.
+
+ * instruby.rb: extract -n option also from --make and
+ --make-flags.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub: not prepend - to
+ $(MFLAGS)
+
+Mon Dec 30 16:44:14 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_substr): should share the shared string if
+ present, instead of the original string. (ruby-bugs:PR#528)
+
+Mon Dec 30 05:10:00 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/socket/socket.c (tcp_svr_init): local host to
+ init_inetsock() is VALUE but not pointer.
+
+ * ext/socket/socket.c (sock_s_unpack_sockaddr_in): get rid of
+ gcc-3 -O3 warning.
+
+Sun Dec 29 23:45:53 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * gc.c (gc_sweep): adjust GC trigger.
+
+ * dln.c (init_funcname_len): get rid of gcc-3 -O3 warning.
+
+ * eval.c (copy_node_scope): ditto.
+
+ * hash.c (rb_hash_foreach, delete_if_i, select_i, each_value_i,
+ each_key_i, each_pair_i, envix): ditto.
+
+ * range.c (range_each_func): ditto.
+
+ * file.c (rb_file_s_chmod): ditto.
+
+Sun Dec 29 15:30:37 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_parseargs): should not inherit ftools.rb's
+ misfeature.
+
+Sun Dec 29 05:08:13 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/fileutils.rb (cmp): return false if file size differs.
+
+Sat Dec 28 19:21:24 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb: remove junk args.
+
+ * lib/mkmf.rb (create_makefile): remove a trouble library
+ before making a shared library.
+
+ * win32/Makefile.sub: invoke instruby.rb with the --make-flags option.
+
+Sat Dec 28 03:09:58 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#[]): improvement. thanks to Kazuhiro NISHIYAMA
+ <zn@mbf.nifty.com>
+
+Sat Dec 28 00:34:03 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * {win32,bcc32}/Makefile.sub: remove `=' from --make-flags options.
+ nmake quotes args if included `=' in args.
+
+ * instruby.rb: use getopts.rb.
+
+ * ext/dbm/extconf.rb (-DDBM_HDR): substitute ' with " to avoid
+ a error on Win32.
+
+ * ext/gdbm/gdbm.c: add prototypes to avoid VC++ warnings.
+
+Fri Dec 27 21:41:57 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bcc32/setup.mak, win32/setup.mak(-prologue-): move srcdir from
+ CPP input or UNC path will be removed as a comment.
+
+Fri Dec 27 17:55:00 2002 Takaaki Uematsu <mail@uema2.cjb.net>
+
+ * wince/config, wince/configure.bat: replace 1.7 with 1.8
+ in macros.
+
+Fri Dec 27 13:28:14 2002 Minero Aoki <aamine@loveruby.net>
+
+ * instruby.rb: fileutils.rb accepts only one argument.
+
+Fri Dec 27 13:23:29 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_parseargs): reject illegal options
+ correctly.
+
+ * lib/fileutils.rb (uptodate?): parameter declaration was wrong.
+
+ * lib/fileutils.rb: change coding styles.
+
+Fri Dec 27 09:25:22 2002 ABE Shigeru <shiger-a@nifty.com>
+
+ * process.c (rb_proc_times): avoid WindowsXP crash using volatile
+ variables.
+
+Fri Dec 27 02:56:58 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * instruby.rb: check only `-' option, and use fileutils instead of
+ ftools.
+
+Fri Dec 27 02:45:17 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/net/telnet.rb: Telnet#print not add "\n".
+
+ * lib/cgi.rb: cgi['key'] is equal cgi['key'][0]
+
+Thu Dec 26 22:33:18 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (create_makefile): check only `-' option.
+
+ * configure.in: cleanups for MinGW. remove -D__NO_ISOCEXT in $CFLAGS.
+
+ * win32/win32.h: prototypes for isinf, isnan are not needed on MinGW.
+
+Thu Dec 26 19:22:00 2002 YOSHIDA Kazuhiro <moriq@moriq.com>
+
+ * win32/setup.mak (-prologue-): moved srcdir macro definition.
+ [ruby-win32:420].
+
+Wed Dec 25 18:26:44 2002 K.Kosako <kosako@sofnec.co.jp>
+
+ * regex.c (re_match): fixed wrong \G behavior. (ruby-bugs-ja:PR#377)
+
+Wed Dec 25 16:41:16 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match_exec): fix odd \G behavior based on the patch
+ from Nobu.
+
+Wed Dec 25 11:05:11 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bcc32/setup.mak (-generic-): removed garbages.
+
+Wed Dec 25 10:36:20 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub (RUBY_SO_NAME, config.h):
+ use $(MAJOR) and $(MINOR). based on Nobu's patch. [ruby-win32:413]
+
+ * bcc32/setup.mak, win32/setup.mak (-prologue-): define MAJOR, MINOR
+ and TEENY from version.h. based on Nobu's patch. [ruby-win32:413]
+
+ * win32/Makefile.sub (config.h): add HAVE_FLOAT_H.
+
+ * win32/Makefile.sub (parse.obj): depend on win32/win32.h.
+
+Tue Dec 24 23:49:16 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/irb/completion.rb: Use Object#class rather than Object#type.
+
+Tue Dec 24 23:37:40 2002 TADA Tadashi <sho@spc.gr.jp>
+
+ * lib/cgi.rb (Cookie::parse), lib/cgi-lib.rb (initialize): Do not
+ pass to split() a bare string longer than 2 characters as
+ separator.
+
+Tue Dec 24 19:19:24 2002 Tietew <tietew@tietew.net>
+
+ * numeric.c (DBL_MAX_10_EXP): fix typo. [ruby-dev:19175]
+
+Tue Dec 24 17:02:46 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_undefined): use NoMethodError instead of fatal.
+
+Tue Dec 24 02:12:45 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/README: Synchronize with reality.
+
+Tue Dec 24 02:05:51 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * MANIFEST, lib/README, lib/ipaddr.rb: Add ipaddr.rb from rough.
+
+Sun Dec 22 04:07:47 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_alloc): allocator takes only one argument.
+
+Sun Dec 22 02:49:25 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (ary_alloc), dir.c (dir_s_alloc), eval.c (thgroup_s_alloc),
+ file.c (rb_stat_s_alloc), hash.c (hash_alloc), io.c (io_alloc),
+ object.c (rb_module_s_alloc, rb_class_allocate_instance),
+ re.c (match_alloc, rb_reg_s_alloc), string.c (str_alloc),
+ time.c (time_s_alloc), ext/digest/digest.c (rb_digest_base_alloc),
+ ext/tcltklib/tcltklib.c (ip_alloc),
+ ext/win32ole/win32ole.c (fole_s_allocate, fev_s_allocate)
+ : add prototype to get rid of VC++ warnings.
+
+ * ext/sdbm/init.c (fsdbm_alloc): allocator takes only one argument.
+
+Sun Dec 22 00:36:43 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): accept pure ruby libraries.
+
+Sat Dec 21 23:59:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (ins_methods_i): should not show ID_ALLOCATOR.
+
+ * class.c (ins_methods_prot_i): ditto.
+
+ * class.c (ins_methods_priv_i): ditto.
+
+ * class.c (ins_methods_pub_i): ditto.
+
+ * eval.c (call_trace_func): ditto.
+
+ * eval.c (rb_undefined): ditto.
+
+Sat Dec 21 07:27:24 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-parse-partial): keywords must not be
+ preceded by @ or $.
+
+Fri Dec 20 20:29:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/curses/curses.c, ext/dbm/dbm.c, ext/digest/digest.c,
+ ext/dl/handle.c, ext/dl/ptr.c, ext/dl/sym.c, ext/gdbm/gdbm.c,
+ ext/iconv/iconv.c, ext/sdbm/init.c, ext/stringio/stringio.c,
+ ext/strscan/strscan.c, ext/tcltklib/tcltklib.c,
+ ext/win32ole/win32ole.c: use rb_define_alloc_func().
+
+Fri Dec 20 18:29:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_fwrite): separated from io_write().
+
+ * marshal.c (w_byten): use rb_io_fwrite() to support non-blocking
+ IO, and added error check.
+
+ * rubyio.h: prototypes; rb_io_fwrite
+
+Fri Dec 20 17:40:59 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): should not remove Class#allocate.
+
+ * lib/profiler.rb: separate profiling functions, without
+ trace_func and at_exit setting.
+
+Fri Dec 20 16:20:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (do_block): split "do" block and tLBRACE_ARG block.
+
+ * parse.y (cmd_brace_block): new tLBRACE_ARG block rule
+
+ * parse.y (command): can take optional cmd_brace_block; use %prec
+ to resolve shift/reduce conflict. (ruby-bugs-ja PR#372)
+
+ * eval.c (ruby_finalize): trace_func should be cleared here (after
+ executing exit procs and finalizers).
+
+ * eval.c (rb_define_alloc_func): new allocation framework, based
+ on Nobu's work [ruby-dev:19116]. "allocate" method is no longer
+ used for object allocation.
+
+Fri Dec 20 05:06:49 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/README, lib/cgi/ftplib.rb, lib/telnet.rb: Delete ftplib.rb
+ and telnet.rb. It has been quite some time sinc they were
+ obsoleted and made to emit warnings.
+
+Fri Dec 20 04:58:22 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb: Embed Rdoc style comments.
+
+ * lib/tempfile.rb: Add length as an alias for size.
+
+Fri Dec 20 03:57:32 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb: Add Tempfile#close!() as a shorthand for
+ Tempfile#close(true).
+
+ * lib/tempfile.rb: Add Tempfile#{unlink,delete}().
+
+Fri Dec 20 03:53:01 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/README, lib/cgi/final.rb, lib/cgi/session.rb: Delete
+ final.rb, which was obsoleted long ago.
+
+Fri Dec 20 00:16:06 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * re.c (rb_reg_match_pre, rb_reg_match_post, match_to_a,
+ match_select): return instances of same class as the original
+ string. [ruby-dev:19119]
+
+Thu Dec 19 22:55:49 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (DBL_EPSILON): fix typo.
+
+Thu Dec 19 22:35:20 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (assign): avoid [BUG] at multiple attribute assignment.
+
+Thu Dec 19 01:00:09 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_step): use DBL_EPSILON.
+
+ * array.c (rb_check_array_type): new function: return an array
+ (convert if possible), or nil.
+
+ * string.c (rb_check_string_type): new function: return a string
+ (convert if possible), or nil.
+
+ * numeric.c (rb_dbl_cmp): returns nil if values are not
+ comparable.
+
+ * numeric.c (fix_cmp,flo_cmp): use rb_num_coerce_cmp()
+
+ * bignum.c (rb_big_cmp): ditto.
+
+ * numeric.c (rb_num_coerce_cmp): new coercing function for "<=>",
+ which does not raise TypeError.
+
+ * numeric.c (do_coerce): can be suppress exception now.
+
+ * object.c (rb_mod_cmp): should return nil for non class/module
+ objects.
+
+Thu Dec 19 04:21:10 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/open-uri.rb: add a missing ||. (found by: ruby -wc)
+
+Wed Dec 18 17:53:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_eqq): return false if the argument is not a
+ string. now returns boolean value.
+
+ * class.c (rb_include_module): argument should be T_MODULE, not
+ T_class, nor T_ICLASS.
+
+Wed Dec 18 03:52:55 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_new4): handle tail shared string.
+ (ruby-bugs-ja:PR#370)
+
+ * string.c (rb_str_dup_frozen): ditto.
+
+Tue Dec 17 21:08:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * node.h (NODE_ATTRASGN): new node, assignment to attribute.
+ [ruby-core:00637].
+
+ * eval.c (is_defined, rb_eval): ditto.
+
+ * parse.y (attrset, node_assign): ditto.
+
+ * string.c (rb_str_substr): tail sharing. [ruby-core:00650]
+
+ * re.c (rb_reg_nth_match): ditto.
+
+Tue Dec 17 16:52:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): "defined?" should return "assignment" for
+ attribute assignment (e.g. a.foo=b) and indexed assignment
+ (e.g. a[2] = 44).
+
+ * parse.y (aryset): use NODE_ATTRASGN.
+
+Tue Dec 17 04:03:45 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: new file.
+
+Tue Dec 17 00:28:19 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (utimbuf): need to define for VC++.
+
+Mon Dec 16 15:53:20 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (nextc): get rid of overrun. (pointed out by akr
+ [ruby-list:36773])
+
+Sun Dec 15 21:16:44 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (init_mkmf): add $(topdir) to $LIBPATH if $extmk.
+ remove adding $(archdir) to $LIBPATH.
+
+Sat Dec 15 12:15:00 2002 Takaaki Uematsu <mail@uema2.cjb.net>
+
+ * configure.in, defines.h, dir.c, dir.h, dln.c, error.c,
+ eval.c, file.c, hash.c, io.c, main.c, missing.c,
+ process.c, ruby.c, rubysig.h, signal.c, st.c, util.c, util.h,
+ bcc/Makefile.sub, win32/Makefile.sub, win32/win32.h,
+ ext/Win32API/Win32API.c, ext/socket/getaddrinfo.c,
+ ext/socket/getnameinfo.c, ext/socket/socket.c,
+ ext/tcltklib/stubs.c
+ : replace "NT" with "_WIN32", add DOSISH_DRIVE_LETTER
+ * wince/exe.mak : delete \r at the end of lines.
+ * wince/mswince-ruby17.def : delete rb_obj_become
+
+Sun Dec 15 11:43:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (dispose_string): dispose String object.
+
+ * parse.y (heredoc_restore, here_document): fix memory leak.
+
+Sat Dec 14 14:25:00 2002 Takaaki Uematsu <mail@uema2.cjb.net>
+
+ * wince/sys : add stat.c, stat.h, timeb.c, timeb.h,
+ types.h, utime.c, utime.h
+ * wince/dll.mak : object file name changed.
+ * wince/io.c : add empty dup2().
+ * wince/io.h : add dup2 definition.
+
+Sat Dec 14 01:51:29 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dbm/extconf.rb (rb_check): support for GNU dbm 1.8.3.
+ (-with-dbm-type=gdbm_compat). link against -lgdbm_compat
+ and -lgdbm.
+
+Fri Dec 13 23:42:16 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dbm/extconf.rb (db_check): check existence of the function
+ in the specified library before checking it in libc.
+
+Fri Dec 13 17:15:49 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (generic_ivar_get): should always warn uninitialized
+ instance variables.
+
+Fri Dec 13 12:33:22 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (expr): rescue clause was ignored.
+
+Thu Dec 12 18:19:14 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RUBY_PROG_GNU_LD): add $CFLAGS, $CPPFLAGS, $LDFLAGS
+ to the option of $CC.
+
+ * configure.in: set LIBRUBYARG to '-l$(RUBY_SO_NAME)' if the
+ target os is cygwin and --disable-shared option is supplied.
+
+ * lib/mkmf.rb (init_mkmf): expand config["LIBRUBY"] and
+ config["LIBRUBY_A"]. don't link $LIBRUBYARG_STATIC if
+ --disable-shared option is supplied.
+
+ * configure.in (RUBY_CPPOUTFILE): should be a better message.
+
+ * ext/Win32API/extconf.rb: join with a space.
+
+Thu Dec 12 17:27:19 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_hash): define Regexp#hash to make regexps to be
+ hash keys.
+
+ * re.c (Init_Regexp): define Regexp#eql? (alias to Regexp#==).
+
+Thu Dec 12 16:26:31 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (r_object0): singleton class instance can't be loaded.
+ (ruby-bugs-ja:PR#366)
+
+Wed Dec 11 23:35:43 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (create_makefile): -no-undefined -> --no-undefined.
+
+Wed Dec 11 17:54:59 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_read): takes optional second argument to specify a
+ string to be written. the string should not be frozen.
+
+ * io.c (rb_io_sysread): ditto.
+
+Wed Dec 11 11:30:28 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/digest/digest.c (rb_digest_base_copy): renamed "become".
+
+ * ext/stringio/stringio.c (strio_copy): ditto.
+
+Wed Dec 11 00:45:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/getoptlong.rb (GetoptLong::Error): provide a common ancestor
+ for GetoptLong error classes (RCR#129).
+
+Tue Dec 10 17:42:39 2002 K.Kosako <kosako@sofnec.co.jp>
+
+ * re.c (rb_reg_copy_object): fixed memory leak.
+
+Tue Dec 10 17:30:35 2002 Tanaka Akira <akr@m17n.org>
+
+ * pack.c (utf8_limits): fix the limit of 4 bytes UTF-8 sequence.
+
+Tue Dec 10 12:01:15 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (mnew): original class of method defined in module should
+ be the module not intermediate class. [ruby-dev:19040]
+
+Tue Dec 10 01:16:52 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): preceding ".." for negative numbers
+ still left; removed.
+
+ * sprintf.c (rb_f_sprintf): should not prepend '0' if width > prec
+ for example "%5.3d".
+
+Sat Dec 7 18:14:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (Init_process): add Process.exit and Process.abort
+
+ * pack.c (utf8_to_uv): raise ArgumentError for malformed/redundant
+ UTF-8 sequences.
+
+Fri Dec 6 03:46:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (last_status_set): add pid attribute to Process::Status.
+
+Wed Dec 4 17:31:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (uv_to_utf8): limit maximum length of the encoded string
+ to 6 bytes, even when the platform supports 8 bytes long integers.
+
+ * pack.c (utf8_to_uv): do not decode sequences longer than 6 bytes.
+
+ * object.c (copy_object): use "copy_object" method, not "become".
+
+Wed Dec 4 16:37:11 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (copy_object): copy finalizers as well if any.
+
+ * gc.c (rb_gc_copy_finalizer): new function to copy finalizers.
+
+Tue Dec 3 01:13:41 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (PP.singleline_pp): new method.
+
+Sun Dec 1 23:04:03 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser::new): same as OptionParser#on but
+ returns new OptionParser::switch.
+
+Sun Dec 1 22:43:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_stat): empty path is invalid, and return
+ ENOENT rather than EBADF in such case. [ruby-talk:57177]
+
+Fri Nov 29 18:01:48 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (utf8_to_uv): added checks for malformed or redundant
+ UTF-8 sequences.
+
+Thu Nov 28 12:08:30 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb: Avoid the use of "clean::" in favor of "clean:" in
+ order not to let make(1) choke if there is another dependency on
+ the target added in a depend file.
+
+Thu Nov 28 02:40:42 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb: Make sure to dig the destination directory before
+ installing a file there. Formerly "make install" could fail
+ depending on make(1)'s mood of the moment, especially when -jN
+ is given.
+
+Wed Nov 27 17:39:38 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c: Cut redundancy.
+
+ * ext/syslog/syslog.c: Do not leak ident.
+
+Wed Nov 27 17:25:29 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c, ext/syslog/test.rb: Syslog.close should
+ raise RuntimeError when not opened.
+
+ * ext/syslog/syslog.c, ext/syslog/test.rb:
+ Syslog.{ident,options,facility,mask} should all return nil when
+ not opened.
+
+ * ext/syslog/syslog.c, ext/syslog/test.rb: Change back the output
+ format of inspect().
+
+Wed Nov 27 16:25:43 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/test.rb: Switch from RUnit to Test::Unit.
+
+Wed Nov 27 16:14:12 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c: Fix a problem where Syslog.ident was not
+ marked and could thus be GC'd.
+
+Wed Nov 27 16:11:53 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/test.rb: Switch from RUnit to Test::Unit.
+
+ * ext/syslog/test.rb: The output format of inspect() is slightly
+ altered.
+
+Wed Nov 27 06:43:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * error.c (exit_initialize): add SystemExit#initialize to set
+ instance variable status. (ruby-bugs-ja:PR#362)
+ Now accepts status as optional first argument.
+
+ * eval.c (error_handle): now SystemExit have status always.
+
+ * eval.c (system_exit): just instantiate SystemExit without raise.
+
+ * eval.c (rb_thread_start_0): initialize SystemExit properly.
+
+Tue Nov 26 10:17:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dln.c (init_funcname_len): remove MAXPATHLEN dependency.
+
+Mon Nov 25 19:55:38 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): return true if not dynamic and not static.
+
+Mon Nov 25 01:08:40 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c: revert and add the MAXPATHLEN definition on mswin32/mingw32.
+
+Sun Nov 24 20:36:53 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c: move the MAXPATHLEN definition in front.
+
+Fri Nov 22 22:55:01 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): preceding ".." for negative
+ hexadecimal numbers should not appear if prec (e.g. %.4) is
+ specified.
+
+ * pack.c (NUM2I32): support platforms which does not have 32bit
+ integers (e.g. Cray).
+
+Fri Nov 22 19:20:36 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb: Install batch files on Windows. [Submitted by usa]
+
+Fri Nov 22 18:31:46 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_add_method): node may be NULL.
+
+Thu Nov 21 20:53:06 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: changes coding style.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/protocol.rb: ditto.
+
+Thu Nov 21 20:17:08 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: changes coding style.
+
+Thu Nov 21 20:04:06 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: should not overwrite Host: header.
+ (This patch is contributed by sean@ruby-lang.org)
+
+Thu Nov 21 20:01:33 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: support Proxy-Authorization.
+ (This patch is contributed by Alexander Bokovoy)
+
+Thu Nov 21 11:03:39 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_find_file_ext): should not terminate searching with
+ empty path, just ignore.
+
+ * dir.c: remove <sys/parm.h> inclusion.
+
+Wed Nov 20 02:07:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compar.c (cmp_eq,cmp_gt,cmp_ge,cmp_lt,cmp_le): check using
+ rb_cmpint().
+
+ * error.c (init_syserr): remove sys_nerr dependency.
+
+Wed Nov 20 01:52:21 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_cmp): added to satisfy Comparable assumption.
+
+ * eval.c (rb_add_method): "initialize" should be public if it is a
+ singleton method.
+
+Tue Nov 19 22:37:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match): avoid dereferencing if size == 0.
+ (ruby-bugs-ja:PR#360)
+
+Tue Nov 19 20:40:39 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_cmp): should return nil if an operand is not a
+ number nor time. (ruby-bugs-ja:PR#359)
+
+ * file.c (rb_stat_cmp): should return nil if an operand is not
+ File::Stat.
+
+Tue Nov 19 14:35:09 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_zip): iterates over items in the receiver.
+ zipped with nil if argument arrays are shorter. if arrays are
+ longer, left items are ignored. now works with blocks.
+
+ * enum.c (zip_i): changed for new behavior.
+
+ * array.c (rb_ary_transpose): added. [new]
+
+Tue Nov 19 05:12:21 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb: Do not install various working files under bin/.
+
+Tue Nov 19 05:07:39 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * instruby.rb: not rewrite installed scripts when dry-run mode.
+
+ * lib/ostruct.rb (OpenStruct::initialize): should symbolize keys
+ instead of values.
+
+Tue Nov 19 02:24:10 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb: Rewrite installed scripts' shebang lines.
+
+ * instruby.rb: Use File.join() where appropriate.
+
+Tue Nov 19 01:53:35 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * bin/irb: Moved from sample/irb.rb.
+
+ * instruby.rb: Install script files under bin/ with ruby's program
+ prefix and suffix.
+
+Mon Nov 18 02:13:36 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb: Make this library thread safe.
+
+ * lib/tempfile.rb: Do not pick a name which was once used and is
+ still scheduled for removal.
+
+ * lib/tempfile.rb: A lock file need not and must not be scheduled
+ for removal.
+
+ * lib/tempfile.rb: Compare Max_try with the number of mkdir
+ failures instead of the suffix counter.
+
+ * lib/tempfile.rb: Overall cleanup and add some important notices.
+
+Sun Nov 17 22:57:31 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (dsym): garbage returned. (ruby-bugs-ja:PR#358)
+
+Fri Nov 15 07:40:08 2002 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * observer.rb: raise NoMethodError instead of NameError.
+ [ruby-dev:18788]
+
+ * ostruct.rb: ditto. fix a bug in inspect which called String#+ with
+ Symbol. [ruby-dev:18788]
+
+ * profile.rb: illegal use of Array#sort!. replaced it with non-bang
+ method. [ruby-dev:18792]
+
+Thu Nov 14 22:40:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (LIBRUBY_A): append -static. [ruby-dev:18689]
+
+ * configure.in (LIBRUBYARG_STATIC, LIBRUBYARG_SHARED): linker
+ argument to link static/shared library respectively.
+
+ * Makefile.in (LIBRUBYARG_STATIC, LIBRUBYARG_SHARED): added.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub: ditto.
+
+ * instruby.rb (LIBRUBY_A): install to libdir.
+
+ * lib/mkmf.rb (link_command): link static library of ruby, or
+ try_run fails unless LIBRUBY_SO is installed. [ruby-dev:18646]
+
+ * eval.c (call_trace_func): toplevel caller was missing.
+ [ruby-dev:18754]
+
+ * eval.c (proc_to_s): adjust created line number.
+
+ * parse.y (primary, do_block, brace_block): adjust line number of
+ block to beginning line, instead of the first statement inside
+ the block.
+
+Thu Nov 14 08:23:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (math_acos): check errno after operation. ditto for
+ asin, acosh, atanh, log, log10 and sqrt.
+
+ * eval.c (rb_add_method): initialize should always be private.
+
+ * parse.y (expr): add rescue modifier rule.
+
+ * parse.y (command_call): return, break and next with argument is
+ now part of this rule.
+
+Wed Nov 13 16:22:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (DLDFLAGS): removed -Wl,-no-undefined to
+ ext/extmk.rb, in order to allow references to symbols in other
+ extension libraries for mkmf.rb. [ruby-dev:18724]
+
+ * ext/extmk.rb (extmake): ditto.
+
+ * ext/extmk.rb (extmake): exit when make failed.
+
+Sun Nov 10 03:46:18 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: retire contain?() and add superset?(),
+ proper_superset?() subset?(), and proper_subset?().
+ [obtained from: Jason Voegele's set.rb]
+
+ * lib/set.rb: define several aliases: union() for |(),
+ difference() for -(), and intersection() for &().
+ [obtained from: Jason Voegele's set.rb]
+
+ * lib/set.rb: deal with a s/id/object_id/ leftover.
+
+Sat Nov 9 16:06:57 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tcltklib/stubs.c: should include "util.h" for ruby_strdup.
+
+Sat Nov 9 11:39:45 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c: remove ENABLE_TRACE/DISABLE_TRACE to trace child nodes of
+ c-call. [ruby-dev:18699]
+
+Fri Nov 8 04:16:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): "a" in "a /5" should be considered as a local
+ variable. [experimental]
+
+Thu Nov 7 09:51:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_yield_0): should enable trace for non-cfunc nodes.
+ [ruby-dev:18645]
+
+ * eval.c (blk_orphan): a block created in a different thread is
+ orphan. [ruby-dev:17471]
+
+Wed Nov 6 16:57:06 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_define_method): do not set NOEX_CFUNC if klass is
+ really a module, whose methods must be safe for receiver's type.
+
+ * eval.c (rb_eval): nosuper should not be inherited unless the
+ overwritten method is an undef placeholder.
+
+Tue Nov 5 00:46:04 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb: Properly pass the given target to
+ make(1). [pointed out by eban]
+
+Mon Nov 4 20:03:53 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb, lib/mkmf.rb: use CONFIG["ENABLE_SHARED"] instead of
+ checking whether CONFIG["configure-args"] includes "--enable-shared".
+
+Mon Nov 4 16:49:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): allow 'when'-less case statement; persuaded
+ by Sean Chittenden.
+
+Mon Nov 4 06:28:09 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * Makefile.in, ext/extmk.rb, bcc32/Makefile.sub,
+ win32/Makefile.sub: Introduce better command line syntax
+ (--make/--make-flags/--extstatic) to extmk.rb and instruby.rb.
+ Previously such command as 'make -j3 install' with pmake doesn't
+ fail. Formerly extmk.rb was receiving "make -j 3 -j 3" via the
+ command line arguments and just ended up recognizing the first
+ "3" as destdir. [with help of usa]
+
+Mon Nov 4 03:59:51 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/getopts.rb: Do not choke on characters that cannot be used
+ in a variable name. Replace them with `_'. Define a hash named
+ $OPT for convenience.
+
+Sat Nov 2 00:38:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): added Object#object_id, new name for
+ Object#id. [new]
+
+ * object.c (rb_obj_id_obsolete): give warning for Object#id.
+
+ * numeric.c (fix_intern): added Fixnum#to_sym. [new]
+
+ * object.c (sym_to_sym): rename from Symbol#intern
+
+Fri Nov 1 14:21:06 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_zip): added Enumerable#zip. [new]
+
+ * array.c (rb_ary_zip): added Array#zip.
+
+Thu Oct 31 20:10:18 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (init_syserr): remove sys_nerr dependency.
+
+Thu Oct 31 09:31:51 2002 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_export_method): undef'ed method visibility should not
+ be changed.
+
+Wed Oct 30 17:00:47 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_public_method_defined, etc.): new methods:
+ public_method_defined?, private_method_defined?,
+ protected_method_defined?
+
+ * object.c (rb_obj_public_methods): new method
+ Object#public_methods.
+
+ * class.c (ins_methods_i): Object#methods should list both public
+ and protected methods.
+
+ * class.c (rb_class_public_instance_methods): new method
+ Module#public_instance_methods.
+
+Wed Oct 30 06:29:00 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * eval.c, file.c, gc.c, io.c, object.c, ruby.c, ruby.h, struct.c,
+ ext/socket/socket.c: differentiate long and int; use proper
+ printf type specifiers and do casts where appropriate.
+
+Wed Oct 30 04:07:33 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (error_print, rb_longjmp, rb_thread_schedule): flush
+ error message. [ruby-dev:18582]
+
+ * eval.c (ruby_cleanup): added. just clean up without exit.
+ [ruby-dev:18582]
+
+ * eval.c (ruby_exec): added. execute main evaluation tree without
+ exit. [ruby-dev:18582]
+
+ * intern.h: prototypes; ruby_cleanup, ruby_exec
+
+Tue Oct 29 02:00:08 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/extmk.rb (extmake): use dummy_makefile to create dummy
+ Makefile.
+
+ * lib/mkmf.rb (find_executable0): EXEEXT is optional.
+
+ * lib/mkmf.rb (dummy_makefile): make dummy Makefile content.
+
+ * lib/mkmf.rb (create_makefile): define EXTLIB replacing -l.
+
+ * lib/mkmf.rb ($bccwin): detect Borland make by help message.
+
+ * lib/mkmf.rb (CLEANINGS): common rules to clean.
+
+Mon Oct 28 01:27:17 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * djgpp/config.sed (@program_transform_name@): use `%', not `,'.
+
+Sun Oct 27 22:59:50 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * ext/extmk.rb(78) : The unnecessary error when installing by bccwin32
+ is controlled.
+
+ * lib/mkmf.rb(773) : Also in the case of bccwin32, the path was added.
+
+Sun Oct 27 17:07:25 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * djgpp/*: sync with the latest.
+
+ * ext/extmk.rb, lib/mkmf.rb: flush $stdout.
+
+ * io.c (READ_DATA_PENDING_COUNT, READ_DATA_PENDING_PTR):
+ undef these macros on DJGPP.
+
+Sat Oct 26 10:11:47 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * node.h (nd_type): cast the value to int.
+
+Sat Oct 26 04:27:35 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dbm/dbm.c (fdbm_indexes, fdbm_select): add a missing
+ argument and prevent coredump when a nonexistent key is
+ specified.
+
+ * ext/sdbm/init.c (fsdbm_indexes, fsdbm_select): ditto.
+
+Sat Oct 26 03:28:43 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * eval.c, gc.c: use a common set of alloca() #ifdef's. This fixes
+ the build with Intel C Compiler for Linux.
+
+ * eval.c (rb_f_require): declare old_func with a real type, not
+ just type modifiers.
+
+Fri Oct 25 02:55:01 2002 Minero Aoki <aamine@loveruby.net>
+
+ * string.c (rb_str_split_m): RSTRING(str)->ptr might become NULL.
+ [ruby-dev:18581]
+
+Thu Oct 24 21:57:02 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (LIBPATHFLAG): avoid $ substitution.
+ [ruby-dev:18577]
+
+ * ext/extmk.rb (extmake): expand $srcdir.
+
+ * ext/win32ole/extconf.rb: should not override $CFLAGS, but
+ append.
+
+ * lib/mkmf.rb (config_string): use given config hash.
+
+ * bcc32/Makefile.sub (.rc.res): directory part may be empty in
+ Borland make.
+
+Thu Oct 24 03:38:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (create_makefile): site-install target for backward
+ compatibility.
+
+ * lib/mkmf.rb (init_mkmf): libdir prior to topdir.
+
+ * configure.in (LIBPATHFLAG): should escape $. [ruby-dev:18572]
+
+ * mkconfig.rb: never substitute escaped $$.
+
+ * instruby.rb: not install LIBRUBY_SO unless enable-shared.
+ [ruby-dev:18569]
+
+Wed Oct 23 19:16:06 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): added NODE_DSYM, symbol literal with
+ interpolation.
+
+ * node.h: ditto.
+
+ * intern.h: prototypes; rb_is_junk_id, rb_str_dump, rb_str_intern
+
+ * object.c (sym_inspect): escape and quote for non-alphanumeric
+ symbols.
+
+ * parse.y (dsym, tokadd_string, yylex): extended symbol literals.
+
+ * parse.y (rb_is_junk_id): added.
+
+ * string.c (rb_str_dump, rb_str_intern) : make extern.
+
+ * lib/mkmf.rb (create_makefile): deffile should be removed by
+ distclean, not clean.
+
+Tue Oct 22 23:56:41 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (init_mkmf): add dir_config("opt").
+
+Tue Oct 22 19:44:03 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/configure.bat : The command line when calling setup.mak is
+ corrected.
+
+ * bcc32/readme.bcc32 : It follows up about the option of configure.bat.
+
+Tue Oct 22 15:23:19 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * instruby.rb: add dryrun mode.
+
+ * ext/extmk.rb (extmake): add install: target to dummy Makefile.
+
+ * ext/extmk.rb (extmake): avoid Borland make's quirk behavior.
+
+ * lib/mkmf.rb (link_command): opt is not a makefile macro.
+
+ * bcc32/Makefile.sub ($(LIBRUBY_SO) $(LIBRUBY)): EXTOBJS were not
+ linked.
+
+ * bcc32/Makefile.sub (ext/extinit.obj): missing.
+
+ * bcc32/Makefile.sub (TRY_LINK): options have to place before any
+ non-option arguments.
+
+ * win32/Makefile.sub (TRY_LINK): need -link and -libpath options.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub (RANLIB): logical
+ operator never work with command.com.
+
+Tue Oct 22 00:59:59 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RUBY_CPPOUTFILE): fix cache file bug.
+
+ * lib/mkmf.rb (link_command): put 'opt' after conftest.c for
+ static linking.
+
+Mon Oct 21 22:53:02 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (XCFLAGS): CFLAGS to compile ruby itself.
+
+ * configure.in (LIBEXT): suffix for static libraries.
+
+ * configure.in (LIBPATHFLAG): switch template to specify library
+ path.
+
+ * configure.in (LINK_SO): command to link shared objects.
+
+ * configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
+ files.
+
+ * configure.in (EXPORT_PREFIX): prefix to exported symbols on
+ Windows.
+
+ * configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
+ libraries, macros and headers used in common.
+
+ * configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
+ executable name.
+
+ * Makefile.in (CFLAGS): append XCFLAGS.
+
+ * Makefile.in (PREP): miscellaneous system dependent files.
+
+ * Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
+
+ * Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
+
+ * Makefile.in (MAKEFILES): depend on *.in and config.status.
+
+ * Makefile.in (parse.c): replace "y.tab.c" with actual name for
+ byacc.
+
+ * ext/extmk.rb, lib/mkmf.rb: integrated.
+
+ * ext/extmk.rb: propagate MFLAGS.
+
+ * ext/extmk.rb (extmake): make dummy Makefile to clean even if no
+ Makefile is made.
+
+ * lib/mkmf.rb (older): accept multiple file names and Time
+ objects.
+
+ * lib/mkmf.rb (xsystem): split and quote.
+
+ * lib/mkmf.rb (cpp_include): make include directives.
+
+ * lib/mkmf.rb (try_func): try whether specified function is
+ available.
+
+ * lib/mkmf.rb (install_files): default to site-install.
+
+ * lib/mkmf.rb (checking_for): added.
+
+ * lib/mkmf.rb (find_executable0): just find executable file with
+ no message.
+
+ * lib/mkmf.rb (create_header): output header file is variable.
+
+ * lib/mkmf.rb (create_makefile): separate sections.
+
+ * lib/mkmf.rb (init_mkmf): initialize global variables.
+
+ * win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
+
+ * bcc32/Makefile.sub (ARCH): fixed to i386.
+
+ * win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
+ link EXTOBJS.
+
+ * ext/dl/extconf.rb: use try_cpp to cross compile.
+
+ * ext/dl/extconf.rb: not modify files in source directory.
+
+Fri Oct 18 23:11:21 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (value_expr0): allow return/break/next/redo/retry in rhs
+ of logical operator. [ruby-dev:18534]
+
+ * parse.y (remove_begin): eliminate useless NODE_BEGIN.
+ [ruby-dev:18535]
+
+Fri Oct 18 01:02:44 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c, eval.c: Use (*_NSGetEnviron()) instead of environ on
+ Darwin for namespace cleanness. [ruby-core:00537]
+
+ * dln.c (dln_load): Fix Darwin support that has been disabled and
+ switch to using it on Darwin instead of the system dlopen().
+ [ruby-core:00541]
+
+Thu Oct 17 19:17:56 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (w_byten): added; write n bytes from s to arg.
+
+ * marshal.c (dump): flush buffered data.
+
+ * marshal.c (marshal_dump, r_byte, r_bytes0, marshal_load): unify
+ marshaling I/O. [ruby-talk:53368]
+
+Thu Oct 17 12:58:24 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: stat.blksize might be 0/nil.
+
+ * lib/fileutils.rb: change coding style.
+
+Wed Oct 16 22:35:53 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * sprintf.c (rb_f_sprintf): disallow mixed usage of numbered and
+ unnumbered arguments. [ruby-dev:18531]
+ get rid of memory leak at exception. [ruby-core:00460]
+
+Wed Oct 16 13:36:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * variable.c (rb_global_entry): not add global entry until
+ initialized to avoid accessing it while GC. [ruby-dev:18514]
+
+ * variable.c (rb_alias_variable): ditto.
+
+Wed Oct 16 01:03:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_str_to_dbl): RString ptr might be NULL.
+
+ * object.c (rb_cstr_to_dbl): p pointer might be NULL.
+
+ * bignum.c (rb_str_to_inum): RString ptr might be NULL.
+
+ * bignum.c (rb_cstr_to_inum): str pointer might be NULL.
+
+Sat Oct 12 23:44:11 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_putc): wrong condition to fill or flush on
+ bccwin32. [ruby-win32:408]
+
+Fri Oct 11 15:58:06 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): rescue modifier is now an operator with
+ precedence right below assignments. i.e. "a = b rescue c" now
+ parsed as "a = (b rescue c)", not as "(a = b) rescue c". [new]
+ [experimental]
+
+Fri Oct 11 06:05:30 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_fclose, rb_w32_close): use closesocket()
+ for socket. [ruby-win32:382]
+
+ * win32/win32.c (StartSockets): set NtSocketsInitialized.
+
+ * win32/win32.h: prototypes; rb_w32_fclose, rb_w32_close
+
+Fri Oct 11 00:24:57 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * gc.c (ruby_xmalloc, ruby_xrealloc): restrict total allocation
+ size according to memories consumed by live objects.
+ [ruby-dev:18482]
+
+ * gc.c (gc_sweep): estimate how live objects consume memories.
+
+Thu Oct 10 17:26:12 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tcltklib/stubs.c (ruby_tcltk_stubs): fix memory leak.
+ [ruby-dev:18478]
+
+Thu Oct 10 15:20:18 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/weakref.rb (WeakRef::@@final): use Hash#delete.
+
+ * lib/weakref.rb (WeakRef::__getobj__): examine if alive or not by
+ ID_REV_MAP to deal with recycled object. [ruby-dev:18472]
+
+ * lib/weakref.rb (WeakRef::weakref_alive?): ditto.
+
+Wed Oct 9 07:11:25 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * gc.c (gc_sweep): also adjust heaps_limits when free unused heap
+ page. [ruby-core:00526]
+
+ * io.c (io_fflush): condition to retry can occur.
+
+ * io.c (io_write): returned 0 wrongly if no error occurred.
+
+Tue Oct 8 14:19:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (io_write): must check returned value from fwrite() before
+ test with ferror(). (ruby-bugs-ja:PR#350)
+
+Tue Oct 8 10:55:23 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb (PrettyPrint.singleline_format): new method.
+
+Mon Oct 7 16:43:07 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivrem): bignum zero's len should not be 0.
+
+Mon Oct 7 15:36:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivmod): wrong condition check for Bignum zero.
+
+ * bignum.c (Init_Bignum): need to add Bignum#div.
+
+Sun Oct 6 00:49:15 2002 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (rb_load): should not pass blocks to the loaded file.
+ [ruby-dev:18458]
+
+Fri Oct 4 20:25:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_interrupt, rb_thread_signal_raise): no need to
+ save dead thread context. (same as [ruby-dev:18322])
+ (ruby-bugs-ja:PR#349)
+
+Fri Oct 4 13:05:58 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RUBY_PROG_GNU_LD): check whether the linker is GNU ld.
+
+ * ext/extmk.rb (create_makefile): add -Wl,-no-undefined to $DLDFLAGS
+ on Linux if GNU ld is used and --enable-shared is specified.
+
+Fri Oct 4 02:21:16 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_rshift): num should be initialized by carry
+ bits if x is negative.
+
+ * bignum.c (bigdivmod): len for bignum zero is 1, not 0.
+
+Thu Oct 3 20:22:11 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bcc32/mkexports.rb: to work on cygwin via telnet.
+ [ruby-win32:358]
+
+ * ext/tcltklib/tcltklib.c (ip_invoke): requires command name
+ argument. [ruby-dev:18438]
+
+ * eval.c (ruby_init, ruby_options): Init_stack() with local
+ location. (ruby-bugs-ja:PR#277)
+
+ * eval.c (rb_call0): disable trace call. [ruby-dev:18074]
+
+ * eval.c (eval, rb_load): enable trace call. [ruby-dev:18074]
+
+ * eval.c (rb_f_require): set source file name for extension
+ libraries. [ruby-dev:18445]
+
+ * gc.c (Init_stack): prefer address of argument rather than local
+ variable to initialize rb_gc_stack_start.
+
+ * ruby.c (translate_char): translate a character in a string;
+ DOSISH only. [ruby-dev:18274]
+
+ * ruby.c (ruby_init_loadpath): added argv[0] handling under
+ Human68K. [ruby-dev:18274]
+
+ * ruby.c (proc_options): translate directory separator in $0 to
+ '/'. [ruby-dev:18274]
+
+Thu Oct 3 00:27:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/delegate.rb (Delegator::initialize): use Object#class
+ instead of deprecated Object#type.
+
+Wed Oct 2 23:32:48 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (RUBY_CHECK_IO_NEED_FLUSH): check whether fflush()
+ is needed.
+
+ * io.c (flush_before_seek): flush before seek if buffered data
+ may remain.
+
+ * io.c (rb_io_check_readable): flush if the last operation was
+ write.
+
+ * io.c (rb_io_check_writable): flush if the last operation was
+ read.
+
+ * rubyio.h (FMODE_RBUF): added.
+
+Wed Oct 2 23:09:20 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_wait_readable): handle retryable errors.
+
+ * io.c (rb_io_wait_writable): ditto.
+
+ * ext/socket/socket.c (bsock_send): ditto.
+
+ * ext/socket/socket.c (s_recvfrom): ditto.
+
+ * ext/socket/socket.c (s_accept): ditto.
+
+ * ext/socket/socket.c (udp_send): ditto.
+
+ * ext/socket/getaddrinfo.c (afdl): made private structures constant.
+
+ * rubyio.h: prototype; rb_io_wait_readable(), rb_io_wait_writable().
+
+Wed Oct 2 13:03:58 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set ac_cv_func_setitimer to "no" on Cygwin.
+
+Wed Oct 2 10:59:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_sweep): free unused heap page to reduce process size if
+ possible.
+
+ * object.c (rb_obj_type): deprecated Object#type; use Object#class.
+
+Tue Oct 1 23:48:32 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/socket/socket.c (init_sock): no need for special finalizer,
+ socket descriptor is no longer duplicated in 1.7.
+ [ruby-talk:50732]
+
+ * win32/win32.c, win32/win32.h (rb_w32_fddup, rb_w32_fdclose):
+ delete.
+
+Mon Sep 30 20:29:10 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_inspect): not need to raise IOError for closed
+ stream. [ruby-talk:51871]
+
+Mon Sep 30 03:48:15 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_check): need no Fixnum check.
+
+Sun Sep 29 18:30:24 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_open_osfhandle): adjust
+ rb_w32_open_osfhandle() with _open_osfhandle().
+
+ * win32/win32.c (rb_w32_accept, rb_w32_socket): return -1 on
+ error.
+
+ * win32/win32.h: should use file descriptor instead of SOCKET.
+
+Sun Sep 29 06:33:03 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (is_socket, rb_w32_select, rb_w32_accept, rb_w32_bind,
+ rb_w32_connect, rb_w32_getpeername, rb_w32_getsockname,
+ rb_w32_getsockopt, rb_w32_ioctlsocket, rb_w32_listen, rb_w32_recv,
+ rb_w32_recvfrom, rb_w32_send, rb_w32_sendto, rb_w32_setsockopt,
+ rb_w32_shutdown, rb_w32_socket, rb_w32_gethostbyaddr,
+ rb_w32_gethostbyname, rb_w32_gethostname, rb_w32_getprotobyname,
+ rb_w32_getprotobynumber, rb_w32_getservbyname, rb_w32_getservbyport):
+ need to protect WSAGetLastError() by RUBY_CRITICAL. [ruby-talk:51778]
+
+Sat Sep 28 20:06:36 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * keywords: add braces around initializers.
+
+Sat Sep 28 13:19:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * hash.c (rb_hash_become): should check self-assignment after
+ conversion.
+
+Sat Sep 28 10:40:44 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_become): Hash#become should check added
+ self-assignment.
+
+ * class.c (rb_make_metaclass): metaclass of a superclass may be
+ NULL at boot time.
+
+Sat Sep 28 09:50:03 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * ext/extmk.rb: The condition judgment without necessity was deleted.
+
+Fri Sep 27 18:40:42 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_deadlock): more verbose message at deadlock.
+
+ * eval.c (rb_thread_schedule): ditto.
+
+ * eval.c (rb_thread_join): ditto.
+
+Fri Sep 27 13:24:35 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): Class#inherited should be called after the
+ execution of the class body.
+
+Fri Sep 27 02:41:53 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha1: Use OpenSSL's SHA1 engine if available. It is
+ much faster than what we have now (sha1.[ch]). Add a knob
+ (--with-bundled-sha1) to extconf.rb which makes it use the
+ bundled one anyway.
+
+Fri Sep 27 02:25:14 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/rmd160: Use OpenSSL's RMD160 engine if available. It
+ is much faster than what we have now (rmd160.[ch]). Add a knob
+ (--with-bundled-rmd160) to extconf.rb which makes it use the
+ bundled one anyway.
+
+Fri Sep 27 01:23:39 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/md5: Use OpenSSL's MD5 engine if available. It is
+ much faster than what we have now (md5.[ch]). Add a knob
+ (--with-bundled-md5) to extconf.rb which makes it use the
+ bundled one anyway.
+
+Thu Sep 26 22:44:21 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_s_digest): Fix a double
+ free() bug mingled with allocation framework deployment.
+
+ * ext/digest/digest.c (rb_digest_base_s_hexdigest): Get rid of
+ redundant struct allocation.
+
+Thu Sep 26 09:52:52 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): remove "return outside of method" check at
+ compile time.
+
+Wed Sep 25 23:51:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dir.c (glob_helper): must not closedir() when exception raised
+ while globbing "**".
+
+ * marshal.c (w_uclass): unused variable.
+
+ * re.c (match_clone): unused.
+
+ * regex.c (re_compile_pattern): get rid of implicit promotion from
+ plain char to int.
+
+Wed Sep 25 17:46:46 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (libpathflag): restore ENV['LIB'] when some error
+ occurred.
+
+Wed Sep 25 16:14:51 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match): p1 may exceed pend limit.
+
+Mon Sep 23 23:22:43 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_call0): must not clear ruby_current_node, or
+ backtrace cannot be generated.
+
+ * intern.h (ruby_yyparse): rather than yyparse().
+
+ * parse.y (yylex): nextc() returns -1 at end of input, not 0.
+
+ * parse.y (newline_node): reduce duplicated newline node.
+
+ * parse.y (literal_concat): get rid of warning.
+
+ * parse.y (new_evstr): fixed junk code.
+
+Mon Sep 23 19:57:52 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RUBY_MINGW32): new macro. check for the MinGW
+ compiler environment.
+
+ * lib/mkmf.rb: refactoring.
+
+Mon Sep 23 08:27:11 2002 Tanaka Akira <akr@m17n.org>
+
+ * io.c (appendline): forget to terminate with nul.
+
+Mon Sep 23 02:46:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_run): should set toplevel visibility again here.
+
+ * eval.c (rb_eval): should not rely on ruby_class == rb_cObject
+ check. Besides allow implicit publicity for attribute set
+ methods.
+
+ * parse.y (primary): need not to check class_nest, just set
+ whether method is an attrset or not.
+
+Sun Sep 22 21:49:42 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (call_trace_func): should not call trace function while
+ compilation.
+
+ * eval.c (rb_call0): also inside c-func.
+
+ * parse.y (yycompile): ditto.
+
+ * ruby.c (require_libraries): preserve source file/line for each
+ require.
+
+Sun Sep 22 17:08:11 2002 Tanaka Akira <akr@m17n.org>
+
+ * string.c (rb_str_each_line): p might be at the top of the
+ string.
+
+Sat Sep 21 23:28:28 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_make_metaclass): class of metaclass should be
+ metaclass of superclass, unless class itself is a metaclass;
+ class of metaclass of metaclass should point back to self.
+ eh, confusing, isn't it.
+
+ * class.c (rb_singleton_class): check if its class is singleton
+ AND attached to self.
+
+Sat Sep 21 22:23:41 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_raise): no need to save dead thread context.
+ [ruby-dev:18322]
+
+Fri Sep 20 23:02:01 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (block_append): eliminate unused literal nodes.
+
+ * parse.y (literal_concat): refined literal concatenation.
+
+Fri Sep 20 19:43:40 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Merge rough/lib/set.rb rev.1.5-1.15.
+
+Wed Sep 18 12:41:16 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should define class/module under ruby_cbase.
+
+ * eval.c (rb_eval): should set class/module path based on
+ ruby_cbase, not ruby_class.
+
+ * eval.c (module_setup): use ruby_cbase instead of ruby_class.
+
+Tue Sep 17 21:06:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_die): put thread dead state.
+
+ * eval.c (rb_thread_atfork): free stack buffer at fork too.
+
+Tue Sep 17 01:13:31 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_nesting): load wrapping module should appear in
+ Module#nesting list. (ruby-bugs-ja:PR#328)
+
+ * eval.c (rb_thread_remove): free stack buffer on remove.
+
+Tue Sep 17 00:58:35 2002 Minero Aoki <aamine@loveruby.net>
+
+ * io.c: add parameter prototype.
+
+ * re.c: ditto.
+
+Sun Sep 15 21:14:22 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * win32/win32.c (rb_w32_opendir, rb_w32_stat): Corresponds to
+ the unjust path containing ".
+
+Sun Sep 15 19:48:55 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (OUTFLAG, CPPOUTFILE): moved from lib/mkmf.rb.
+ check whether ${CPP} accepts the -o option.
+
+ * win32/Makefile.sub (OUTFLAG, CPPOUTFILE): ditto.
+
+ * bcc32/Makefile.sub (OUTFLAG, CPPOUTFILE): ditto.
+
+ * djgpp/config.sed (OUTFLAG, CPPOUTFILE): ditto.
+
+ * lib/mkmf.rb (OUTFLAG, CPPOUTFILE): use CONFIG.
+ make easy to understand log.
+
+ * mkconfig.rb (val): should not strip.
+
+Sat Sep 14 20:13:42 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * error.c(rb_sys_fail): remove case EPIPE on bcc32 .
+
+Fri Sep 13 23:39:49 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dir.c (glob_func_caller): add prototype to get rid of warning.
+
+Fri Sep 13 18:35:12 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): avoid uninitialized global/class variable
+ warnings at `||='. [ruby-dev:18278]
+
+ * parse.y (stmt, arg): ditto
+
+Fri Sep 13 13:28:04 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb ($INSTALLFILES): avoid warning when $VERBOSE mode.
+
+Thu Sep 12 23:20:10 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/setup.mak : Control of a message.
+
+ * bcc32/makefile.sub : include resource.
+
+Thu Sep 12 18:10:03 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dir.c (glob_helper): fixed freeing buffer. (ruby-bugs-ja:PR#332)
+
+ * dir.c (glob_helper): should pass matched path. (ruby-bugs-ja:PR#333)
+
+Thu Sep 12 00:09:32 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_trap_eval): preserve thread status and so on.
+ [ruby-talk:40337], [ruby-core:00019]
+
+Wed Sep 11 21:25:52 2002 Tanaka Akira <akr@m17n.org>
+
+ * pp.rb (ARGF.pretty_print): implemented.
+ (PP.pp): arguments reordered.
+
+Wed Sep 11 18:55:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (proc_to_s): refined format. [ruby-dev:18215]
+
+Wed Sep 11 17:47:17 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, win32/win32.h (rb_w32_getpid): negate pid under Win9x.
+ [ruby-dev:18262]
+
+Wed Sep 11 12:58:57 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (get_pat): Add an extra argument "quote".
+
+ * string.c (rb_str_match_m): Do not bother to convert if a regexp
+ is given.
+
+Wed Sep 11 11:33:40 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub: remove unnecessary `.dll' from filename of
+ dll's resource file.
+
+ * cygwin/GNUmakefile.in: ditto. [ruby-dev:17103]
+
+ * win32/Makefile.sub: ditto. [ruby-dev:17103]
+
+ * win32/resource.rb: ditto. [ruby-dev:17103]
+
+Wed Sep 11 09:59:46 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_wait_readable): added.
+
+ * io.c (rb_io_wait_writable): added.
+
+ * io.c (io_read_retryable): added.
+
+ * io.c (io_write): retry on EINTR, ERESTART and EWOULDBLOCK.
+ [ruby-dev:17855], [ruby-dev:17878], [ruby-core:00444]
+
+ * io.c (rb_io_fread): ditto.
+
+ * io.c (read_all): ditto.
+
+ * io.c (appendline): ditto.
+
+ * io.c (rb_io_each_byte): ditto.
+
+ * io.c (rb_io_getc): ditto.
+
+Wed Sep 11 09:29:24 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (ext): make directory `ext' on compile dir.
+ [ruby-dev:18255]
+
+Wed Sep 11 00:41:10 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_mod_define_method): initialize orig_func too.
+ (ruby-bugs-ja:PR#330)
+
+Wed Sep 11 00:01:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (glob_helper): prevent memory leak using rb_protect().
+
+ * string.c (rb_str_associate): no need to check freeze flag.
+
+ * string.c (rb_str_resize): should honor STR_ASSOC flag on
+ resize.
+
+ * string.c (rb_str_resize): proper STR_ASSOC handling. pointed
+ out by Michal Rokos.
+
+ * string.c (rb_str_buf_cat): ditto.
+
+ * string.c (rb_str_cat): ditto.
+
+ * string.c (rb_str_buf_append): ditto.
+
+ * string.c (rb_str_append): ditto.
+
+Tue Sep 10 23:35:46 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (nextc): restore line number after here documents.
+ (ruby-bugs-ja:PR#331)
+
+ * parse.y (heredoc_restore): ditto.
+
+Tue Sep 10 18:26:52 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb, lib/mkmf.rb ($INCFLAGS): new var for -I$(topdir).
+
+ * lib/mkmf.rb: add #define WIN32_LEAN_AND_MEAN to improve compile
+ times.
+
+Tue Sep 10 17:16:14 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (miniruby): shouldn't link $(EXTOBJS).
+ [ruby-dev:17059]
+
+ * win32/Makefile.sub ($(LIBRUBY_A), $(LIBRUBY)): avoid lib.exe's
+ warning. [ruby-dev:17059]
+
+ * win32/Makefile.sub: remove unnecessary rules. [ruby-dev:17059]
+
+ * win32/configure.bat, win32/setup.mak, win32/README.win32: enable to
+ pass some arguments to configure. [ruby-dev:17059]
+
+Mon Sep 9 23:43:33 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.h (S_I?USR): define only if not mingw32.
+
+Mon Sep 9 11:21:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/stringio/stringio.c (strio_set_string): reinitialize
+ properly.
+
+ * ext/stringio/stringio.c (strio_become): added self-assign check
+ and experimental auto-conversion to StringIO.
+
+ * ext/stringio/stringio.c (strio_reopen): added.
+
+
+Sun Sep 8 21:29:25 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * time.c (time_free): prototype; struct time_object -> void *.
+ avoid GCC warnings.
+
+ * lib/mkmf.rb, ext/extmk.rb ($LINK, $CPP): move to lib/mkmf.rb.
+
+Sun Sep 8 19:02:28 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c: prototype; time_free() to avoid VC++ warnings.
+
+ * ext/tcltklib/tcltklib.c: prototype; invoke_queue_handler() to avoid
+ VC++ warning.
+
+ * win32/win32.c (rb_w32_stat): remove S_IWGRP and S_IWOTH bits from
+ st_mode.
+
+ * win32/win32.h (S_I*): define if not defined.
+
+Sun Sep 8 14:38:31 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: modify program_prefix only if specified
+ --program-prefix.
+
+ * configure.in: don't generate ext/extmk.rb.
+
+ * Makefile.in: execute directly $(srcdir)/ext/extmk.rb.
+ remove -Cext option, "Dir::chdir 'ext'" in ext/extmk.rb.
+
+ * {win32,bccwin32}/Makefile.sub: ditto.
+
+ * instruby.rb: ditto.
+
+ * ext/extmk.rb: renamed from ext/extmk.rb.in.
+
+ * lib/mkmf.rb (module Logging): create log files (mkmf.log)
+ in each extension module directories.
+
+ * ext/extmk.rb: ditto.
+
+ * lib/mkmf.rb (macro_defined?): new method.
+
+ * ext/.cvsignore: remove extmk.rb.
+
+ * ext/*/.cvsignore: add "*.def".
+
+ * lib/mkmf.rb (have_struct_member): moved from ext/socket/extconf.rb.
+
+ * ext/socket/extconf.rb: use macro_defined? instead of egrep_cpp.
+
+ * ext/etc/extconf.rb: use have_struct_member.
+
+ * ext/etc/etc.c: add prefix HAVE_ST_ to PW_ macros.
+
+Sun Sep 8 14:36:40 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/configure.bat : Control of a message.
+ * bcc32/makefile.sub : @(sitearch) typo.
+ * ext/extmk.rb.in : [bccwin32] libdir is added to a library path.
+ * lib/mkmf.rb : ditto.
+
+Sat Sep 7 23:32:56 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/inf-ruby.el (inferior-ruby-error-regexp-alist): regexp
+ alist for error message from ruby.
+
+ * misc/inf-ruby.el (inferior-ruby-mode): fixed for Emacs.
+
+ * misc/inf-ruby.el (ruby-send-region): compilation-parse-errors
+ doesn't parse first line, so insert separators before each
+ evaluations.
+
+Sat Sep 7 19:46:57 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Disallow Set.new(false). Add even more tests.
+ [Submitted by: "Christoph" <chr_news@gmx.net>]
+
+Sat Sep 7 19:23:56 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Fix a bug in flatten()'s recursive set detection.
+ [Submitted by: "Christoph" <chr_news@gmx.net>] Some tests
+ against the bug are added.
+
+ * lib/set.rb: Resurrect the test suite by putting it after
+ __END__ and executing `eval DATA.read'.
+
+Sat Sep 7 08:41:39 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (rb_gc_mark_parser): ruby_eval_tree is marked in eval.c.
+
+Fri Sep 6 20:01:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb ($CC): command to compile C source.
+
+ * lib/mkmf.rb (logging): added.
+
+ * lib/mkmf.rb (try_compile): added.
+
+ * lib/mkmf.rb (egrep_cpp): use internal grep when pattern is
+ Regexp, otherwise use external egrep command but get rid of
+ pipe of command.com.
+
+ * lib/mkmf.rb (have_func): local variable should be volatile not
+ to be eliminated by optimization.
+
+ * lib/mkmf.rb (create_makefile): link with CONFIG["LIBS"].
+
+ * lib/mkmf.rb (create_makefile): emit .SUFFIXES:.
+
+Fri Sep 6 12:11:22 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (rb_gc_mark_parser): should mark ALL global variables
+ defined in parse.y.
+
+Fri Sep 6 01:15:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (ruby_xmalloc): remove MALLOC_LIMIT to avoid frequent
+ garbage collection.
+
+Fri Sep 6 11:47:37 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (rb_gc_mark_parser): should mark global variables
+ defined in parse.y.
+
+Fri Sep 6 10:34:32 2002 Minero Aoki <aamine@loveruby.net>
+
+ * io.c (rb_io_puts): RSTRING(line)->ptr might be NULL.
+
+Fri Sep 6 10:26:37 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: should not put non-NODE-VALUEs in the semantic stack.
+
+Fri Sep 6 05:48:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (rb_path_check): nothing to check under DOSISH.
+ [ruby-list:35772]
+
+Fri Sep 6 05:03:50 2002 Minero Aoki <aamine@loveruby.net>
+
+ * gc.c (rb_gc): should mark parser.
+
+ * parse.y (rb_gc_mark_parser): new function.
+
+ * intern.h (rb_gc_mark_parser): added.
+
+Thu Sep 5 18:32:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_path2class): should not use rb_eval_string().
+
+Thu Sep 5 17:18:22 2002 Michal Rokos <michal@ruby-lang.org>
+
+ * dln.c: fix memory leak in dln_load (ruby-core:405) and
+ in load_1 (ruby-core:407)
+
+Thu Sep 5 15:43:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_extended): should allow marshaling of object which
+ is extended by named module.
+
+ * class.c (rb_make_metaclass): super may be T_ICLASS, need to skip.
+
+Thu Sep 5 13:09:22 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): overriding false constant with class/module
+ definition should be error. (PR#327)
+
+Thu Sep 5 01:24:26 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * extmk.rb (create_makefile): add macro MAKEDIRS, INSTALL_PROG,
+ INSTALL_DATA.
+
+ * extmk.rb (create_makefile): support for building to any directory.
+
+ * extmk.rb (xsystem): move to mkmf.rb.
+
+ * mkmf.rb (xsystem): support for extmk.rb
+
+ * mkmf.rb ($CPP): remove '-E' option. add CPPFLAGS.
+
+Wed Sep 4 16:15:17 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: ==(o) should be aware of all the Set variant
+ instances, not just those of its subclasses. [Submitted by:
+ "Christoph" <chr_news@gmx.net>]
+
+ * lib/set.rb: - Fix eql?(). [ditto]
+
+Wed Sep 4 15:23:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_make_metaclass): obj.meta.super.meta should be equal
+ to obj.meta.meta.super (ruby-bugs-ja:PR#324).
+
+Wed Sep 4 05:10:16 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * parse.y (yylex): the warning message "invalid
+ character syntax" was never issued (ruby-bugs-ja:PR#323).
+
+Wed Sep 4 01:08:45 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_bytes): do not use alloca (ruby-bugs:PR#382).
+
+Tue Sep 3 17:12:59 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * extmk.rb: require mkmf.rb. remove duplicate methods.
+ use Config::CONFIG["FOO"] instead of @FOO@.
+
+ * mkmf.rb: support for extmk.rb.
+
+Mon Sep 2 23:01:50 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * re.c (rb_reg_search): MatchData must be rb_cMatch.
+ (ruby-bugs-ja:PR#319)
+
+Mon Sep 2 21:21:46 2002 Minero Aoki <aamine@loveruby.net>
+
+ * gc.c (gc_sweep): does reclaim nodes in also compile time, if we
+ can.
+
+ * ruby.c (load_file): omit GC if we can.
+
+ * parse.y (ruby_parser_stack_on_heap): new function.
+
+ * intern.h (ruby_parser_stack_on_heap): added.
+
+Mon Sep 2 18:45:07 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_copy_generic_ivar): remove old generic instance
+ variable table if it exists.
+
+Sun Sep 1 15:54:33 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * config.guess: fixed for Linux/PPC.
+
+Sat Aug 31 09:38:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_make_metaclass): metaclass of a metaclass is a
+ metaclass itself.
+
+Fri Aug 30 22:45:16 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Added.
+
+Fri Aug 30 20:58:54 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_Call): typo.
+
+Fri Aug 30 19:45:52 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * variable.c (rb_const_assign): st_delete() takes pointer to key.
+
+Fri Aug 30 19:40:28 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/Win32API/Win32API.c (Win32API_Call): RSTRING()->ptr may be
+ NULL.
+
+ * ext/nkf/nkf.c (rb_nkf_guess): ditto.
+
+ * ext/readline/readline.c (readline_s_set_completion_append_character):
+ ditto.
+
+ * ext/socket/socket.c (sock_s_getaddrinfo, sock_s_getnameinfo):
+ ditto.
+
+ * ext/tcltklib/tcltklib.c (ip_toUTF8, ip_fromUTF8): ditto.
+
+Fri Aug 30 01:32:17 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_singleton_class): superclass of a metaclass
+ should be a metaclass of superclass.
+
+ * range.c (range_eq): two instances must belong to a same class to
+ be equal.
+
+ * range.c (range_eql): ditto.
+
+ * io.c (rb_io_taint_check): frozen check added.
+
+ * file.c (rb_stat_become): frozen check added.
+
+ * object.c (rb_obj_become): ditto.
+
+ * re.c (rb_reg_become): ditto.
+
+ * struct.c (rb_struct_become): ditto.
+
+ * time.c (time_become): ditto.
+
+ * array.c (rb_ary_become): should call rb_ary_modify().
+
+ * hash.c (rb_hash_become): should call rb_hash_modify().
+
+ * compar.c (cmp_equal): should not use NUM2LONG(), since <=> may
+ return bignum.
+
+ * compar.c (cmp_gt, cmp_ge, cmp_lt, cmp_le, cmp_between): ditto.
+
+Thu Aug 29 23:34:42 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/MakeFile.sub (sitearch): add.
+
+Thu Aug 29 13:36:42 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (read_all): should use off_t instead of long.
+
+Thu Aug 29 00:55:55 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (r_object): yield loaded objects, not intermediates.
+ (ruby-bugs-ja:PR#296)
+
+Thu Aug 29 00:06:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_become): should not free ptr if it's shared.
+
+ * eval.c (rb_alias): prohibit making an alias named "allocate" if
+ klass is a metaclass.
+
+Wed Aug 28 23:59:15 2002 Michal Rokos <michal@ruby-lang.org>
+
+ * signal.c: remove #ifdef SIGINT for struct signals.
+
+ * variable.c: get rid of fix length buffer in rb_class_path.
+
+Wed Aug 28 23:34:32 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (appendline): data was lost when raw mode.
+
+Wed Aug 28 22:57:34 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_string_value_ptr): StringValuePtr() should never
+ return NULL pointer.
+
+Wed Aug 28 19:12:46 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/stringio/stringio.c (strio_initialize): RSTRING(mode)->ptr
+ can be NULL.
+
+ * ext/stringio/stringio.c (strio_ungetc): fix buffer overflow.
+
+Wed Aug 28 18:19:55 2002 Michal Rokos <michal@ruby-lang.org>
+
+ * file.c: fix memory leak in rb_stat_init.
+
+Wed Aug 28 17:45:03 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (kill): negate pid under Win9x.
+
+Wed Aug 28 16:36:40 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (ar): don't check ar twice.
+
+Wed Aug 28 15:00:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_delete_bang): should check if str->ptr is 0.
+
+ * string.c (rb_str_squeeze_bang): ditto.
+
+ * string.c (rb_str_count): ditto.
+
+ * string.c (rb_str_lstrip_bang): ditto.
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+ * string.c (rb_str_intern): ditto.
+
+Wed Aug 28 11:37:35 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.h: define SIGINT and SIGKILL if not defined.
+
+ * win32/win32.c: remove definition of SIGINT and SIGKILL.
+
+Tue Aug 27 19:50:27 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.c (require_libraries): prevent ruby_sourcefile from GC.
+
+Tue Aug 27 15:03:35 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_find_file): $LOAD_PATH must not be empty.
+
+ * file.c (rb_find_file_ext): ditto.
+
+Tue Aug 27 02:35:21 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eq): class check should be based on range.class,
+ instead of Range to work with Range.dup.
+
+ * range.c (range_eql): ditto.
+
+Mon Aug 26 18:17:56 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_mod_dup): need to preserve metaclass and flags.
+
+Mon Aug 26 10:44:18 2002 Tanaka Akira <akr@m17n.org>
+
+ * object.c (rb_cstr_to_dbl): had a buffer overrun.
+
+Sun Aug 25 20:10:32 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#form): fix ruby-bugs-ja:PR#280, add default action.
+
+Sat Aug 24 15:32:16 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (call_trace_func): restore source file/line, as trace
+ function installed in required library with -r option can be
+ called while parsing. (ruby-bugs:PR#372)
+
+ * eval.c (module_setup): unused variable. [ruby-core:00358]
+
+Sat Aug 24 14:59:02 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_class): integrate singleton check into a function
+ to follow DRY principle.
+
+ * marshal.c (w_uclass): should check singleton method.
+
+ * object.c (rb_obj_dup): dmark and dfree functions must be match
+ for T_DATA type.
+
+ * object.c (rb_obj_dup): class of the duped object must be match
+ to the class of the original.
+
+Sat Aug 24 13:57:28 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb (Time.rfc2822, Time#rfc2822): preserve localtimeness.
+
+ * lib/pp.rb: pretty_print_cycled is renamed to pretty_print_cycle.
+
+Fri Aug 23 23:59:57 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (method_call): check receiver is defined.
+
+ * eval.c (umethod_call): removed.
+
+Fri Aug 23 23:39:17 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_quote): do not escape \t, \f, \r, \n, for they are
+ not regular expression metacharacters.
+
+ * time.c (time_s_alloc): use time_free instead of free (null check,
+ also serves for type mark).
+
+ * time.c (time_s_at): check dfree function too.
+
+Fri Aug 23 17:06:48 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: RUBY_SO_NAME is msvcrt-rubyXX on mswin32/mingw32.
+
+ * configure.in (sitearch): new var.
+
+ * mkconfig.rb, lib/mkmf.rb (sitearch): ditto.
+
+ * win32/Makefile.sub, win32/setup.mak (sitearch): ditto.
+
+ * instruby.rb: ditto.
+
+Wed Aug 21 16:53:00 2002 Michal Rokos <michal@ruby-lang.org>
+
+ * *.c: int, long types cleanup.
+
+ * parse.y: ditto.
+
+ * re.h, regex.h, ruby.h: ditto.
+
+Wed Aug 21 16:43:19 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_cleanup): should not modify the global
+ variable curr_thread.
+
+Wed Aug 21 16:14:26 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set ac_cv_func__setjmp to "no" on Cygwin.
+
+ * configure.in: set ac_cv_func_crypt to "no" on MinGW.
+
+Tue Aug 20 21:47 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * io.c (rb_io_fread): remove case EPIPE on bcc32 .
+
+ * win32/win32.c (rb_w32_getc): clear EPIPE error on bcc32.
+
+Tue Aug 20 19:39:03 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): accept drive letter on Cygwin.
+
+ * file.c (is_absolute_path): ditto.
+
+Tue Aug 20 12:12:25 2002 Tietew <tietew@tietew.net>
+
+ * io.c (rb_io_putc): output via rb_io_write().
+
+Mon Aug 19 19:01:55 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/inf-ruby.el (inf-ruby-keys): ruby-send-definition
+ conflicted with ruby-insert-end.
+
+ * misc/inf-ruby.el (inferior-ruby-mode): compilation-minor-mode.
+
+ * misc/inf-ruby.el (ruby-send-region): send as here document to
+ adjust source file/line. [ruby-talk:47113], [ruby-dev:17965]
+
+ * misc/inf-ruby.el (ruby-send-terminator): added to make unique
+ terminator.
+
+Mon Aug 19 17:08:19 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): frozen check should be moved here
+ from rb_reg_initialize().
+
+Mon Aug 19 15:38:44 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (sort_2): comparison should be done as signed long.
+
+ * array.c (sort_2): should return int, not VALUE.
+
+Mon Aug 19 12:38:33 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_save_context, rb_thread_restore_context):
+ save/restore SEH chain on MS-Windows at thread switch.
+ [ruby-win32:273]
+
+ * eval.c (win32_get_exception_list, win32_set_exception_list):
+ added.
+
+Sat Aug 17 23:01:25 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (sort_2): *a - *b may overflow.
+
+Sat Aug 17 00:25:08 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_new): len*sizeof(VALUE) may be a positive value.
+
+ * array.c (rb_ary_initialize): ditto.
+
+Fri Aug 16 15:58:16 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (NOFILE): define NOFILE as 64 if not defined.
+
+ * signal.c (sighandler_t): rename to sh_t on dietlibc.
+
+Fri Aug 16 15:37:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_cstr_to_inum): new decimal and octal string.
+
+Fri Aug 16 13:17:11 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_class_allocate_instance): move singleton class
+ check from rb_obj_alloc().
+
+Fri Aug 16 11:47:24 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_fread): renamed from io_fread and made extern.
+
+ * marshal.c (r_bytes0): check if successfully read, use
+ rb_io_fread() instead of fread() to be preemptive.
+ (ruby-bugs-ja:PR#294, 295)
+
+ * rubyio.h (rb_io_fread): added.
+
+Fri Aug 16 07:57:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (compile_error): must not clear ruby_sourcefile here.
+ (ruby-bugs:PR#364).
+
+ * eval.c (rb_longjmp): set ruby_sourcefile before making
+ backtrace.
+
+Thu Aug 15 20:38:58 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (ruby_current_node) : added to set sourceline on demand.
+
+ * eval.c (error_pos, error_print, rb_longjmp, assign): set source
+ file/line.
+
+ * eval.c (rb_eval): store current node instead of file/line, and
+ preserve it at return.
+
+ * eval.c (module_setup): ditto.
+
+ * eval.c (struct thread): store node instead of file/line.
+
+ * eval.c (rb_thread_raise): ditto.
+
+ * intern.h (ruby_current_node): added.
+
+ * intern.h (ruby_set_current_source): added.
+
+ * parse.y (stmt, arg): not fix position of assignment.
+
+ * parse.y (node_assign): ditto.
+
+ * parse.y (yycompile): clear current node.
+
+Thu Aug 15 00:48:46 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): should not modify frozen Regexp.
+
+Tue Aug 13 18:33:18 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/tcltklib/tcltklib.c (ip_init): allocation framework.
+
+Tue Aug 13 15:32:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_replace): should copy ifnone.
+
+ * hash.c (rb_hash_dup): should preserve HASH_PROC_DEFAULT and
+ HASH_DELETED flags.
+
+ * hash.c (rb_hash_shift): shift from empty hash should not return
+ its default proc.
+
+ * hash.c (rb_hash_default_proc): new method. [new]
+
+Tue Aug 13 00:37:11 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_aref): no need for Bignum check.
+
+ * array.c (rb_ary_aset): explicit Bignum check removed.
+
+ * numeric.c (fix_aref): normalize bignum before bit-op.
+
+ * bignum.c (rb_big_rand): max may be Bignum zero.
+
+ * bignum.c (rb_cstr_to_inum): should normalize bignums, to avoid
+ returning fixable bignum value.
+
+ * bignum.c (rb_uint2big): there should be no zero sized bignum.
+
+Mon Aug 12 23:45:28 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/extmk.rb.in: extmake() that works properly for both tkutil
+ (tk/tkutil.so) and digest/sha1.
+
+Mon Aug 12 22:29:35 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.c (set_arg0): Correct the position of #endif.
+
+Mon Aug 12 17:25:06 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_equal): should check HASH_PROC_DEFAULT too.
+
+Mon Aug 12 16:15:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_big_cmp): raise for NaN. (ruby-bugs-ja:PR#284).
+
+Sun Aug 11 09:34:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): set line number from all nodes.
+
+ * eval.c (proc_to_s): show source file/line if available.
+
+ * marshal.c (r_object): register TYPE_BIGNUM regardless real type.
+
+Sat Aug 10 23:47:16 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_cmp): use dbl2big() for Floats, instead of
+ big2dbl().
+
+ * bignum.c (Init_Bignum): rb_big_zero_p() removed. There may be
+ Bignum zero.
+
+Fri Aug 9 13:31:40 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/Win32API/extconf.rb: check existence of <windows.h>.
+
+Thu Aug 8 09:37:02 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (NilClass): must provide conversion block.
+
+ * lib/optparse.rb (String): ditto.
+
+Thu Aug 8 00:45:15 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): new argument added for original method name.
+ preserve original method name in frame->orig_func.
+
+ * eval.c (is_defined): use frame->orig_func, not last_func.
+
+ * eval.c (rb_eval): ditto.
+
+ * eval.c (method_call): supply data->oid also to rb_call0().
+
+ * object.c (rb_class_allocate_instance): call rb_obj_alloc() when
+ called from alias, thus invoke original "allocate".
+
+ * eval.c (remove_method): removing allocate from classes should
+ cause NameError.
+
+Wed Aug 7 22:12:54 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser::Completion::convert): returned
+ all values not first one.
+
+ * lib/optparse.rb (OptionParser::Switch::parse): return values as
+ is.
+
+ * lib/optparse.rb (OptionParser::order): ditto.
+
+ * lib/optparse/time.rb: prior time.rb.
+
+ * lib/optparse/uri.rb: require standard uri module. thanks to
+ Minero Aoki.
+
+Wed Aug 7 09:51:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_equal): should check default values.
+
+Wed Aug 7 08:44:32 2002 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/cparse.c: reduce goto.
+
+Tue Aug 6 15:19:39 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_rindex): must return -1 if unmatched.
+
+Mon Aug 5 22:41:18 2002 Minero Aoki <aamine@loveruby.net>
+
+ * MANIFEST: add lib/racc/parser.rb.
+
+ * ext/racc/cparse/cparse.c: code refine.
+
+ * ext/racc/cparse/MANIFEST: add depend.
+
+Sun Aug 4 22:30:50 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/curses/curses.c: follow allocation framework.
+
+Sat Aug 3 21:23:56 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): set constant in cbase scope.
+
+ * eval.c (assign): ditto.
+
+Fri Aug 2 09:12:32 2002 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: follow allocation framework.
+
+Fri Aug 2 01:21:52 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (s_recvfrom): update RSTRING len.
+
+Thu Aug 1 17:47:15 2002 Tachino Nobuhiro <tachino@jp.fujitsu.com>
+
+ * parse.y (tokadd_string): ignore backslashed spaces in %w.
+
+Thu Aug 1 14:14:15 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_find): do not use rb_eval_cmd(); should not accept
+ a string for if_none.
+
+Wed Jul 31 14:11:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_undef): undef should be done for klass, not ruby_class.
+
+Tue Jul 30 19:48:51 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-accurate-end-of-block): restrict search
+ region.
+
+ * misc/ruby-mode.el (ruby-parse-partial): reversed wrong patch.
+
+Tue Jul 30 17:21:13 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-accurate-end-of-block): incomplete block
+ caused infinite loop.
+
+ * misc/ruby-mode.el (ruby-parse-partial): returns nil unless
+ delimiters found.
+
+Tue Jul 30 15:24:07 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tcltklib/stubs.c (ruby_tcltk_stubs): win32_getenv returns
+ the same address always, so allocate string by ruby_strdup.
+
+ * win32/win32.c: prototype; rb_w32_open_osfhandle().
+
+Tue Jul 30 09:11:07 2002 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (rb_thread_join_m): add parameter type declaration.
+
+Tue Jul 30 08:37:11 2002 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (localjump_error): add parameter type declaration.
+
+Mon Jul 29 16:00:54 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in: always use File.expand_path for $top_srcdir.
+
+Sat Jul 27 23:07:52 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_to_int): default to_int implementation for every
+ numeric class.
+
+Sat Jul 27 08:09:03 2002 Booker C. Bense <bbense@slac.stanford.edu>
+
+ * re.c (rb_reg_quote): initial part of the string was never copied
+ to the quoted string.
+
+Fri Jul 26 23:03:53 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): no need to convert to string twice.
+
+Fri Jul 26 18:32:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-expr-beg): wrong indent at modifiers
+ after ?.
+
+Fri Jul 26 16:01:16 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in (create_makefile): use Regexp in gsub.
+
+ * sample/mkproto.rb: ditto and fix bug.
+
+Fri Jul 26 14:31:06 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c: replace with Mersenne Twister RNG.
+
+Fri Jul 26 12:14:48 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (yylex): modify to accept a code like "m (a){...}".
+
+Thu Jul 25 09:05:02 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-delimiter): include here document.
+
+ * misc/ruby-mode.el (ruby-deep-arglist): skips spaces after
+ parenthesis when 'space.
+
+ * misc/ruby-mode.el (ruby-imenu-create-index): fix for nested
+ classes.
+
+ * misc/ruby-mode.el (ruby-accurate-end-of-block): added. scan a
+ block in the order.
+
+ * misc/ruby-mode.el (ruby-expr-beg): support for here document.
+
+ * misc/ruby-mode.el (ruby-parse-partial): splitted from
+ ruby-parse-region.
+
+ * misc/ruby-mode.el (ruby-move-to-block): skips RD style comments.
+
+Wed Jul 24 09:47:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (jump_tag_but_local_jump): preserve retval in
+ LocalJumpError exceptions.
+
+ * parse.y (command): no more check for "super outside of method".
+
+ * eval.c (rb_mod_define_method): should set last_class and
+ last_func in the block->frame.
+
+Mon Jul 22 17:23:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_handle): should handle TAG_THROW as well.
+
+Fri Jul 19 10:52:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): new decimal notation '0d4567'.
+
+Thu Jul 18 11:52:02 2002 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (set_socket): new method.
+
+Thu Jul 18 06:51:24 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (yylex): fix typo.
+
+Wed Jul 17 18:41:28 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): new octal notation '0o777'.
+
+Mon Jul 15 18:36:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (string_content): every string_content node should
+ return string only. use NODE_EVSTR to coercing.
+
+ * eval.c (rb_eval): NODE_EVSTR support.
+
+Mon Jul 15 10:35:35 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (heredoc_identifier): fix typo.
+
+Sat Jul 13 09:30:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (literal_concat_string): wrong optimization.
+
+Sat Jul 13 01:25:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/resolv.rb (Resolv::DNS::open, close): new.
+
+ * lib/optparse.rb, lib/optparse: import.
+
+Fri Jul 12 06:34:05 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: rename HTTP.get_uri get_response.
+
+ * lib/net/http.rb: HTTP.get_print accepts URI objects.
+
+ * lib/net/http.rb: HTTP.get had not work with URI objects.
+
+Fri Jul 12 02:15:58 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_match): fix for string match.
+
+Fri Jul 12 00:02:50 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/stringio/stringio.c (strio_gets_internal): fixed for record
+ separator longer than 1.
+
+Thu Jul 11 17:59:20 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_quote): avoid unnecessary string allocation.
+
+ * string.c (get_pat): quote metacharacters before compiling a
+ string into a regex.
+
+ * string.c (rb_str_split_m): special treatment of strings of size
+ 1, but AWK emulation. now uses get_pat().
+
+ * string.c (rb_str_match_m): quote metacharacters.
+
+ * string.c (rb_str_match2): ditto.
+
+Thu Jul 11 12:59:23 2002 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/resolv.rb: untaint strings read from /etc/hosts and
+ /etc/resolv.conf to prevent SecurityError when $SAFE==1.
+
+Thu Jul 11 09:00:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_slice_bang): if there's no corresponding
+ substring, slice! should return nil without exception.
+
+Tue Jul 9 20:03:55 2002 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * irb 0.9
+
+Sat Jul 6 07:35:02 2002 Jamie Herre <jfh@gettysgroup.com>
+
+ * array.c (rb_ary_insert): type fixed.
+
+Fri Jul 5 09:17:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_split_m): accept separator value nil as well.
+
+Fri Jul 5 08:59:15 2002 Michal Rokos <michal@ruby-lang.org>
+
+ * enum.c: Fix bug in enum_sort_by and some code indents
+
+Fri Jul 5 05:00:40 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#initialize): improvement for mod_ruby.
+ thanks to Sean Chittenden <sean@ruby-lang.org>, Shugo Maeda
+ <shugo@modruby.net>
+
+Fri Jul 5 00:10:09 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_become): was leaking memory.
+
+Thu Jul 4 23:43:26 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: remove useless function str_extend_p().
+
+Wed Jul 3 14:26:40 2002 Sean Chittenden <sean@ruby-lang.org>
+
+ * lib/net/ftp.rb (get): new method.
+
+ * lib/net/ftp.rb (putt): ditto.
+
+ * lib/net/ftp.rb (binary): ditto.
+
+ * lib/net/ftp.rb (binary=): ditto.
+
+Wed Jul 3 13:57:53 2002 Sean Chittenden <sean@ruby-lang.org>
+
+ * lib/net/ftp.rb (getbinaryfile): the second argument (localfile)
+ is now optional.
+
+ * lib/net/ftp.rb (gettextfile): ditto.
+
+Wed Jul 3 13:45:42 2002 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb: use &block and yield for speed.
+
+Wed Jul 3 02:32:31 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#initialize): improvement for mod_ruby.
+
+Tue Jul 2 14:53:10 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): should not alter other
+ classes/modules by inclusion. by this fix, local order may not
+ be preserved for some cases.
+
+ * class.c (include_class_new): module may be T_ICLASS; retrieve
+ original module information.
+
+Tue Jul 2 14:13:11 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#header): accept any type as value.
+
+Sun Jun 30 17:05:29 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (seekdir, telldir): add ac_cv_func_telldir=yes,
+ ac_cv_func_seekdir=yes for MinGW.
+
+Sat Jun 29 01:43:32 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_finalize, pipe_popen): two-way pipe support for win32.
+
+ * win32/win32.c (ChildRecord, FindFreeChildSlot): ditto.
+
+ * win32/win32.c, win32/win32.h (pipe_exec): new function for two-way
+ pipe support for win32.
+
+ * win32/win32.c, win32/win32.h (FindPipedChildSlot, rb_w32_popen,
+ rb_w32_pclose): removed functions for two-way pipe support for win32.
+
+Fri Jun 28 23:49:34 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * pack.c (pack_unpack): change names of local variables because their
+ names are overlapped.
+
+Fri Jun 28 17:54:07 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb: fix object address.
+
+Thu Jun 27 23:55:50 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_stat): fix buffer overflow. (ruby-bugs:PR#329)
+
+Thu Jun 27 20:57:45 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb, lib/pp.rb: convenience methods added.
+
+Thu Jun 27 15:22:18 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb: re-implemented for incremental output to handle
+ huge data. API is changed a bit.
+
+ * lib/pp.rb: adapt new pretty printing API.
+
+Thu Jun 27 08:28:18 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (literal_concat_string): non-string last expression in
+ #{} was ignored when followed by literal.
+
+Thu Jun 27 03:42:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): need to process backslashes properly.
+
+Wed Jun 26 17:33:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_any_to_a): declare Object#to_a to be obsolete.
+
+ * object.c (rb_Array): do not convert nil into [] automagically.
+
+Wed Jun 26 15:40:00 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (words, qwords): word list literal rules.
+
+ * parse.y (parse_string): ditto.
+
+ * parse.y (yylex): %W: word list literal with interpolation. [new]
+
+Tue Jun 25 18:53:34 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (string1, xstring, regexp): moved lex_strnest
+ initialization to string_contents/xstring_contents.
+
+Tue Jun 25 19:24:38 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * dln.c: remove definition rb_loaderror().
+
+Tue Jun 25 00:34:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_Integer): use "to_int" instead of
+ "to_i". [experimental]
+
+ * object.c (nil_to_f): new method.
+
+ * object.c (rb_Integer): Symbols and nil should cause error.
+
+ * object.c (rb_Float): nil should cause error.
+
+Tue Jun 25 00:21:00 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * dln.c: remark definition rb_loaderror().
+
+Tue Jun 25 00:14:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (string_dvar): allow back references in interpolation.
+
+Mon Jun 24 16:32:31 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): NODE_EVSTR is no longer used.
+
+ * eval.c (eval): not enforce to make assigned variables dynamic.
+
+ * parse.y (string): split rules to strings/xstring/regexp to allow
+ arbitrary statements inside string interpolation.
+
+ * parse.y (here_document): splitted into three phases.
+
+ * parse.y (literall_append, literal_concat): added.
+ append/concatenate string literals.
+
+ * sample/test.rb (valid_syntax): adjust line number for BEGIN.
+
+ * lib/mkmf.rb (create_makefile): get rid of nested string.
+
+ * lib/mkmf.rb (install_rb): site-install didn't work properly.
+
+Sun Jun 23 00:19:10 2002 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb, sample/cal.rb, sample/goodfriday.rb:
+ updated to the new version (based on date2 3.3).
+
+Sat Jun 22 14:41:33 2002 Guy Decoux <ts@moulon.inra.fr>
+
+ * ext/socket/socket.c (sock_addrinfo): make all 3 versions of
+ getaddrinfo happy. [ruby-core:00184]
+
+Fri Jun 21 18:49:58 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): __END__ should not be effective within
+ string literals.
+
+Thu Jun 20 21:09:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/readline/readline.c (readline_readline): get rid of
+ libreadline's bug. (ruby-bugs-ja:PR#268)
+
+Thu Jun 20 17:10:27 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftool.rb (BUFSIZE): tuning, set buffer length to 8192.
+
+ * configure.in (__NO_ISOCEXT): add for mingw-runtime 2.0-2.
+
+ * configure.in (__MSVCRT__): removed because it is defined
+ in the GCC specs.
+
+Wed Jun 19 14:46:18 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb, lib/mkmf.rb (xsystem): open the log file if xsystem
+ is called.
+
+Wed Jun 19 01:01:13 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (here_document): should be aware of __END__ within here
+ documents.
+
+Wed Jun 19 00:50:50 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (yylex): ? followed by successive word characters is
+ ternary operator not numeric literal.
+
+ * parse.y (yylex): commands after break/next/rescue can take
+ arguments. (ruby-bugs-ja:PR#265)
+
+Tue Jun 18 19:20:16 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb: remove unnecessary exports. (ruby-dev:17418)
+
+Tue Jun 18 12:50:17 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (yylex): should pushback proper char after '<<'.
+
+ * parse.y (range_op, cond0, cond): get rid of doubled warnings.
+
+ * parse.y (value_expr): reduce recursion level.
+
+ * parse.y (logop): ditto.
+
+Mon Jun 17 11:11:34 2002 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * string.c (rb_str_crypt): result need not be tainted always.
+
+Mon Jun 17 10:51:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dln.c (dln_load): need to preserve dln_strerror() result,
+ calling other dl family can clear it.
+
+Sat Jun 15 22:56:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): obsolete '?<whitespace>'; use '?\s', '?\n',
+ etc, instead.
+
+Sat Jun 15 18:51:13 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * dir.c (glob_helper): Use lstat() instead of stat() so it catches
+ a dead symlink. Given a dead symlink named "a", Dir.glob("?")
+ did catch it but Dir.glob("a") somehow didn't.
+
+Sat Jun 15 01:59:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): no here document after a dot.
+
+ * parse.y (yylex): should have set lex_state after '`'.
+
+ * parse.y (yylex): should have set lex_state properly after
+ tOP_ASGN.
+
+Fri Jun 14 21:01:48 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/mkexports.rb: insert sleep(1) for win9x.
+
+ * bcc32/configure.bat: change return code LF -> CRLF for win9x.
+
+ * win32/win32.c: fix rb_w32_open_osfhandle()
+
+Fri Jun 14 15:22:19 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (read_escape): deny zero-width hexadecimal character.
+ (ruby-bugs-ja:PR#260)
+
+ * parse.y (tokadd_escape): ditto.
+
+ * regex.c (re_compile_pattern): ditto.
+
+Fri Jun 14 00:49:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2dbl): return canonical HUGE_VAL for infinity.
+
+Thu Jun 13 09:43:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_avalue): v may be Qundef. This fix was
+ suggested by Guy Decoux.
+
+Thu Jun 13 00:33:49 2002 takuma ozawa <metal@mine.ne.jp>
+
+ * hash.c (rb_hash_s_create): use rb_hash_aset() instead of calling
+ st_insert() directly, to dup&freeze string keys.
+
+Thu Jun 13 00:12:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): proper error message for "@@0".
+
+ * parse.y (yylex): paren to parse_string() must be zero for
+ unparenthesized strings.
+
+ * parse.y (str_extend): broken string when unterminated "#{".
+
+ * enum.c (enum_sort_by): had a bug in 1 element enumeration.
+
+Wed Jun 12 18:04:44 2002 akira yamada <akira@arika.org>
+
+ * uri/common.rb (REGEXP::PATTERN::X_ABS_URI): 'file:/foo' is valid.
+
+ * uri/generic.rb (Generic#xxx=): should return substituted value.
+ (ruby-dev:16728.)
+
+ * test/generic.rb (test_set_component): added tests for the above
+ change.
+
+Wed Jun 12 02:38:00 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (stmt): fix typo.
+
+Wed Jun 12 01:10:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): 'do' should return kDO_BLOCK on EXPR_ENDARG.
+
+ * parse.y (singleton): "def (()).a end" dumped core.
+
+ * parse.y (range_op): node may be null.
+
+ * parse.y (match_gen): ditto.
+
+Tue Jun 11 19:20:34 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (LIBRUBY): rename to lib$(LIBRUBY_SO).a on Cygwin/MinGW.
+
+ * configure.in, cygwin/GNUmakefile: use dllwrap when --disable-shared
+ is specified.
+
+Tue Jun 11 17:12:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): void value check for "..", "...", "!", and "not".
+
+ * parse.y (match_gen): void value check for "=~".
+
+ * parse.y (value_expr): check NODE_AND and NODE_OR recursively.
+
+ * parse.y (cond0): void value check added for conditionals.
+
+Tue Jun 11 13:18:47 2002 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (noop): new method.
+
+ * lib/net/ftp.rb (site): ditto.
+
+Tue Jun 11 13:15:41 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub: set PROCESSOR_LEVEL to 6 if it's too big value.
+
+ * win32/Makefile.sub: ditto.
+
+Tue Jun 11 12:37:46 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/configure.bat fix.
+
+Tue Jun 11 10:18:23 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * new platform [bccwin32] merged.
+ - create new folder bcc32
+ - modify any files for bccwin32
+ error.c, file.c, hash.c, io.c, instruby.rb,
+ ext/extmk.rb.in,
+ lib/mkmf.rb, lib/ftools.rb,
+ ext/digest/defs.h,
+ ext/dl/depend, ext/dl/dl.c, ext/dl/sym.c, ext/dl/extconf.rb,
+ ext/socket/extconf.rb,
+ ext/pty/extconf.rb,
+ ext/tcltklib/extconf.rb
+ ext/Win32API/Win32API.c,
+ win32/dir.h, win32/win32.c, win32/win32.h, win32/resource.rb
+
+Mon Jun 10 19:02:19 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * numeric.c (fix_lshift): negative shift count means right shift.
+ (ruby-bugs-ja:PR#248)
+
+ * numeric.c (fix_rshift): return -1 when left side operand is
+ negative. (ruby-bugs-ja:PR#247)
+
+ * parse.y (yylex): `0_' should be an error. (ruby-bugs-ja:PR#249)
+
+Mon Jun 10 01:53:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): ruby_frame->last_func may be null, if it's
+ called outside of a method.
+
+ * parse.y (arg): use INT2NUM, not INT2FIX for tUMINUS.
+
+ * parse.y (arg): unnecessary negative tPOW treatment.
+
+ * parse.y (tokadd_escape): wrong backslash escapement.
+
+Sun Jun 9 17:40:41 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: change the callback mechanism.
+
+Sat Jun 8 00:48:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt,arg): too much void value check.
+
+ * parse.y (stmt,arg): need to check void value on rules which does
+ not use node_assign().
+
+Thu Jun 6 19:50:39 2002 KONISHI Hiromasa <H_Konishi@ruby-lang.org>
+
+ * sample/biorhythm.rb (getPosiiton,etc)
+ fix at changing Date module ( Date is changed Fixnum to Rational )
+
+Thu Jun 6 17:42:39 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (ipaddr): need not to taint hostnames.
+
+Thu Jun 6 12:04:30 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): use sub! instead of []= because
+ []= causes exception.
+
+Thu Jun 6 11:42:15 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/thread.rb (Queue::pop): get rid of race condition.
+
+Wed Jun 5 01:56:47 2002 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: Stop the running zombi-eventloop when
+ mainloop_watchdog is killed.
+
+Tue Jun 4 23:09:24 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_include): should be based on "<=>", whereas
+ member? still is based on "each".
+
+ * range.c (range_min,range_max): redefine methods based on "<=>".
+
+Tue Jun 4 18:28:37 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/extconf.rb: The IPv6 stack of Cygwin is still incomplete.
+
+ * ext/Win32API/extconf.rb: refactoring.
+
+Tue Jun 4 07:03:33 2002 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkfont.rb: Fix bugs on TkFont.init_widget_font for Tk8.x.
+
+ * ext/tk/lib/tkafter.rb: Add self to 1st argument of interval-
+ and loop-proc
+ TkAfter#current_interval returns an interval (sleep) time value
+ TkAfter#current_args returns an array of arguments
+ TkAfter#return_value returns a return value of last loop-proc
+
+ * ext/tk/lib/tk*.rb: Allow to use Symbols for parameters.
+
+ * ext/tk/lib/tkcanvas.rb: (TkcItem) Add 'coords' parameter to the
+ canvas item constructor (for new notation of constructor).
+
+ * ext/tcltklib/tcltklib.c: New 'mainloop' and 'mainloop_watchdog'.
+
+ * ext/tk/lib/tk.rb: (Tk.restart) Add 'app-name' paramater and
+ 'use' parameter.
+
+ * ext/tk/lib/tk.rb: Add new parameter 'widgetname' to the widget
+ constructor to support effective use of Resource Database.
+
+ * ext/tk/lib/tk.rb: TkOption::get always returns a tainted string.
+
+Tue Jun 4 00:45:50 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/socket/addrinfo.h: typo.
+
+ * ext/socket/getaddrinfo.c (gai_strerror): make literals const.
+
+ * ext/socket/socket.c (init_inetsock): ensures resources are
+ freed at exceptions.
+
+ * ext/socket/socket.c (init_unixsock): ditto.
+
+ * ext/socket/socket.c (udp_connect): ditto.
+
+Mon Jun 3 20:39:51 2002 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/extconf.rb : change PLATFORM with RUBY_PLATFORM.
+
+Mon Jun 3 07:07:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (here_document): check if identifier is terminated.
+ (ruby-bugs-ja:PR#239)
+
+ * parse.y (yylex): should pushback proper char after '**'.
+ (ruby-bugs-ja:PR#240)
+
+Mon Jun 3 05:56:17 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_aset): should raise error if an indexing string
+ is not found in the receiver.
+
+ * sprintf.c (rb_f_sprintf): "%d" should convert objects into
+ integers using Integer().
+
+Sat Jun 1 19:20:07 2002 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole: merge from rough.
+
+Fri May 31 17:11:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile::size): added.
+
+Thu May 30 12:52:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): iteration done using "+" if elements are
+ Numeric. Otherwise using "succ".
+
+ * range.c (range_each): iteration done using "succ". If the
+ elements does not respond to "succ", raise TypeError. As a
+ result, all Enumerable methods, e.g. collect, require elements
+ to respond to "succ".
+
+ * range.c (range_member): comparison done using "each", if
+ elements are non-Numeric or no-"succ" objects. Otherwise
+ compare using "<=>".
+
+ * range.c (Init_Range): remove "size" and "length".
+
+Thu May 30 09:16:36 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb: if StringIO is usable then use it.
+
+Wed May 29 18:55:47 2002 KONISHI Hiromasa <H_Konishi@ruby-lang.org>
+
+ * function renames my* and win32_* to rb_w32_* in win32/win32.c
+ fixed files win32/win32.c, win32/win32.h, win32/dir.h,
+ hash.c, rubysig.h, signal.c, ext/socket/socket.c
+
+Wed May 29 17:32:55 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * time.c (tmcmp, search_time_t): activate unless HAVE_TIMEGM.
+
+Wed May 29 13:45:15 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb: not use const if GET, HEAD. check multipart form head.
+
+Tue May 28 17:56:02 2002 Sean Chittenden <sean@ruby-lang.org>
+
+ * parse.y: yyparse #defines moved from intern.h
+
+ * ruby.c (proc_options): access prefixed "ruby_yydebug".
+
+ * applied modifies to pacify some of gcc -Wall warnings.
+
+Tue May 28 14:07:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): no more ugly hack for "**", so that "-2**2" to be
+ parsed as "(-2)**2", whereas "- 2**2" or "-(2)**2" to be parsed
+ as "-(2**2)".
+
+ * parse.y (yylex): '-2' to be literal fixnum. [new]
+
+Tue May 28 12:13:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (scope_node): trick to keep the node has a scope.
+
+ * eval.c (rb_eval): NODE_EVSTR: write back local_tbl to the node.
+
+ * eval.c (rb_eval): NODE_SCOPE: hold the scope node in ruby_scope.
+
+ * eval.c (module_setup): ditto.
+
+ * eval.c (rb_call0): ditto.
+
+ * node.h (NEW_DASGN, NEW_DASGN_CURR): remove surplus semicolons.
+
+Fri May 24 09:06:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_arg): nil test against v[6] (usec).
+
+Thu May 23 16:39:21 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.c (proc_options): option parsing problem.
+ (ruby-bugs-ja:PR#233)
+
+Thu May 23 09:13:56 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): removed "-*-" support for #! line.
+
+ * io.c (rb_io_s_sysopen): new method to get a raw file
+ descriptor. [new]
+
+ * ext/socket/socket.c (tcp_sysaccept): new method to return an
+ accepted socket fd (integer). [new]
+
+ * ext/socket/socket.c (unix_sysaccept,sock_sysaccept): ditto.
+
+Wed May 22 21:26:47 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.c (proc_options): -T consumes digits only.
+
+Wed May 22 20:18:31 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: need not link vsnprintf.o on MinGW.
+
+Wed May 22 18:34:23 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (yylex): Here-document label ate '-'.
+
+Tue May 21 13:25:18 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): symbols end with
+ '_'.
+
+Tue May 21 04:48:37 2002 Sean Chittenden <sean@chittenden.org>
+
+ * lib/cgi-lib.rb: Checking for constant MOD_RUBY instead of
+ environment variable. Remove a mod_ruby warning and use
+ Apache::request.headers_out[] instead.
+
+Tue May 21 01:16:46 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (bodystmt): ensure clause was executed on else clause
+ without rescue clause.
+
+Tue May 21 00:20:25 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl/ptr.c: rename PtrData::alloc to PtrData::malloc.
+
+ * ext/dl/lib/dl/struct.c: rename Struct#alloc to Struct#malloc.
+
+Mon May 20 14:29:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): should do exact match for Module#==.
+
+ * compar.c (cmp_eq): returns 'false' if <=> returns 'nil'.
+
+ * compar.c (cmp_gt,cmp_ge,cmp_lt,cmp_le,cmp_between): ditto.
+
+Mon May 20 13:28:52 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_clone): writing stream was not copied properly.
+
+Sat May 18 21:38:11 2002 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb, lib/parsedate.rb:
+ updated to the new version (based on date2 3.2.1).
+
+Sat May 18 21:18:00 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): add VC++4/5 support about noreturn
+ directive.
+
+Sat May 18 02:16:41 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): should propagate taintedness.
+
+ * pack.c (pack_unpack): ditto.
+
+Fri May 17 16:16:19 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * sample/test.rb: use eval instead of './miniruby -c',
+ in order to check a syntax error.
+
+Thu May 16 14:46:34 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_select): cleanup conditional compilation.
+
+Wed May 15 06:13:35 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): need to preserve errno before
+ calling rb_trap_exec().
+
+ * regex.c (calculate_must_string): a bug in charset/charset_not
+ parsing.
+
+Tue May 14 18:17:44 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/Makefile.sub: config.h inlined. and catch up with the
+ latest change.
+
+ * win32/config.h.in: no longer used.
+
+Tue May 14 14:49:05 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * gc.c (is_pointer_to_heap): avoid GCC 3.1 warnings.
+
+ * missing/strftime.c (timezone): it should take no argument on Cygwin.
+
+Tue May 14 03:07:35 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_clear_cache_by_class): new function.
+
+ * eval.c (set_method_visibility): should have clear cache for
+ updated visibility.
+
+Mon May 13 14:38:33 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * djgpp/config.hin, djgpp/config.sed: catch up with the latest change.
+
+Mon May 13 01:59:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_to_s): default format precision to be "%.16g".
+
+ * util.c (ruby_strtod): use own strtod(3) implementation to avoid
+ locale hell. Due to this change "0xff".to_f no longer returns 255.0
+
+Sun May 12 03:01:08 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * missing.h: add for missing/*.c.
+
+ * ruby.h: add `#include "missing.h"'.
+
+ * Makefile.in: add the dependency of missing.h by gcc -MM.
+
+ * MANIFEST: add missing.h
+
+Sat May 11 23:24:52 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: enable dl's stack emulation for constructing function call.
+
+Sat May 11 10:52:09 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dir.c (glob_helper): remove escaping backslashes.
+
+Sat May 11 02:46:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (avalue_to_yvalue): new function to distinguish yvalue
+ (no-arg == Qundef) from svalue (no-arg == Qnil).
+
+ * eval.c (rb_yield_0): use avalue_to_yvalue().
+
+ * eval.c (assign): warn if val == Qundef where it means rhs is
+ void (e.g. yield without value or call without argument).
+
+Fri May 10 19:00:47 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (here_document): preserve line number begins here
+ document.
+
+Fri May 10 01:55:44 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_join): added an argument to limit time to wait
+ the thread.
+
+ * eval.c (rb_thread_join_m): new. and added optional argument.
+
+Wed May 8 23:48:40 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (value_expr): need not to warn for WHILE and UNTIL,
+ since they can have return value (via valued break).
+
+Tue May 7 17:13:40 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: forgot to add '-Wl,' to the gcc option on Cygwin/MinGW.
+
+Tue May 7 15:41:33 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/iconv/iconv.c (iconv_try): should initialize exceptions
+ properly. (ruby-bugs-ja:PR#232)
+
+Tue May 7 15:28:03 2002 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (rb_yield_0): The destination of the goto jump was wrong.
+
+Tue May 7 09:17:51 2002 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (superclass): undesirable "unexpected return" when the
+ superclass is not a Class.
+
+Sun May 5 06:53:45 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb: exclude topdir from the system configuration
+ section and prevent it from being overridden.
+
+Fri May 3 20:19:00 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: add #include <errno.h> in AC_CHECK_DECLS().
+
+ * win32/config.h.in: define HAVE_DECL_SYS_NERR.
+
+Thu May 2 23:42:40 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_s_quote): # also should be quoted.
+
+Thu May 2 18:27:13 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: use 'do...end' instead of '{}' for
+ Borland make.
+
+Thu May 2 08:01:56 2002 Chris Thomas <kenshin@apple.com>
+
+ * error.c: use HAVE_DECL_SYS_NERR instead of platform names.
+
+Tue Apr 30 09:23:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_step): better iteration condition for float
+ values; suggested by Masahiro TANAKA <masa@ir.isas.ac.jp>.
+
+Tue Apr 30 05:59:42 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * range.c (range_step): step (for Range#step method) <= 0 makes no
+ sense, thus ArgError will be raised.
+
+ * range.c (range_each): Range#each method is special case for
+ Range#step(1)
+
+Mon Apr 29 18:46:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_find_file): load must be done from an absolute path if
+ $SAFE >= 4.
+
+Sun Apr 28 17:01:56 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (insert): fix prototype for ANSI C.
+
+Fri Apr 26 13:47:15 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_partition): new method. [new]
+
+Fri Apr 26 13:41:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_s_quote): quote whitespaces for /x cases.
+
+Fri Apr 26 06:48:23 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl/ptr.c (cary2ary): missing break in switch statements.
+
+Fri Apr 26 09:35:47 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_proc_new): make Proc from C function. [new]
+
+ * intern.h (rb_proc_new): prototype.
+
+Wed Apr 24 14:56:46 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (proc_to_proc): return self. [new]
+
+ * eval.c (block_pass): no need to convert if block is Proc.
+
+Wed Apr 24 14:21:41 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set size of the initial stack from
+ 2MB to 32MB on MinGW/Cygwin.
+
+Wed Apr 24 14:06:35 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_step): try to reduce residual on Float operations.
+
+Wed Apr 24 06:48:31 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * io.c (rb_io_mode_flags): both 'r+b' and 'rb+' should be allowed.
+
+ * io.c (rb_io_mode_modenum): ditto.
+
+Wed Apr 24 01:16:14 2002 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_mark): must check if ptr is NULL
+ first. [ruby-talk:38873]
+
+ * lib/mkmf.rb (create_makefile): should print depend file when
+ make is other than nmake.
+
+Wed Apr 24 00:37:12 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb.in (create_makefile): use `{$(srcdir)}' directive instead
+ of `$(srcdir)/' when including depend file.
+
+ * lib/mkmf.rb (create_makefile): add `{$(srcdir)}' when including depend
+ file.
+
+Tue Apr 23 12:58:18 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_memerror): rename from mem_error, and exported.
+
+ * gc.c (Init_GC): pre-allocate NoMemoryError instance.
+
+ * object.c (convert_type): error message changed from "failed to
+ convert" to "cannot convert", since it does not try to convert
+ if an object does not respond to the converting method.
+
+Mon Apr 22 09:31:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): convert Method to Proc using
+ rb_check_convert_type().
+
+ * object.c (rb_check_convert_type): always convert T_DATA
+
+ * eval.c (rb_thread_cleanup): should not terminate main_thread by
+ Fatal error.
+
+ * regex.c (is_in_list): need to not exclude NUL and NEWLINE.
+
+Sat Apr 20 00:19:13 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): wrong backslash escapement.
+
+ * re.c (rb_reg_expr_str): do not escape embedded space
+ characters.
+
+Fri Apr 19 22:03:40 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: add -DNT to $CFLAGS instead of $CPPFLAGS.
+
+ * win32/setup.mak: ditto.
+
+Fri Apr 19 17:24:22 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): T_DATA process patch from Joel VanderWerf
+ <vjoel@PATH.Berkeley.EDU>. This is temporary hack; it remains
+ undocumented, and it will be removed when marshaling is
+ re-designed.
+
+ * marshal.c (r_object): ditto.
+
+Fri Apr 19 17:10:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_step): Integer#step is moved to Numeric#step;
+ Fixnum#step is merged into this method.
+
+ * numeric.c (int_dotimes): Fixnum#times is merged.
+
+ * numeric.c (int_upto): Fixnum#upto is merged.
+
+ * numeric.c (int_downto): Fixnum#downto is merged.
+
+Fri Apr 19 16:22:55 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/extconf.rb: include <windows.h>, <winsock.h> on _WIN32.
+
+ * win32/win32.c: include <mswsock.h> on __MINGW32__.
+
+ * configure.in: cleanup for autoconf 2.5x.
+
+ * configure.in: use gcc -shared instead of dllwrap on Cygwin/MinGW.
+
+ * ext/extmk.rb, lib/mkmf.rb: get rid of "--def=".
+
+Fri Apr 19 14:57:44 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * re.c (rb_reg_to_s): remove redundant shy group.
+
+Fri Apr 19 01:08:20 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_cleanup): current thread may be THREAD_STOPPED,
+ for example when terminated from signal handler.
+
+Thu Apr 18 19:03:15 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): remove /p support.
+
+ * regex.h: ditto.
+
+ * parse.y (parse_regx): ditto.
+
+Thu Apr 18 17:01:43 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl/ptr.c (rb_dlptr_cast): removed.
+
+Thu Apr 18 17:01:43 2002 Tanaka Akira <akr@m17n.org>
+
+ * re.c (rb_reg_to_s): new function for Regexp#to_s.
+
+Wed Apr 17 23:55:34 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Setup*, ext/bigfloat/*: Back out the import of BigFloat in
+ favor of its forthcoming successor, BigDecimal.
+
+Wed Apr 17 16:53:33 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): should treat backslash specially in
+ escaping.
+
+Wed Apr 17 08:16:41 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * io.c: complete off_t handling; missing argument for
+ fptr_finalize(); polished rb_scan_args call.
+
+Wed Apr 17 00:01:59 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * dir.c: wrap multi-statement macro by do { } while (0)
+
+ * eval.c, numeric,c, sprintf.c, util.c: ditto.
+
+Tue Apr 16 08:59:50 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (assign): convert mrhs to mvalue.
+
+Mon Apr 15 18:12:57 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_eq): check `y == x' if y is neither Fixnum,
+ Bignum, nor Float.
+
+Mon Apr 15 09:27:31 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): should treat 'U' in character unit, not in
+ byte unit.
+
+ * error.c (exc_initialize): should clear backtrace information.
+
+Sat Apr 13 23:42:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fptr_cleanup): should close IO created by IO.new(fd).
+
+ * rubyio.h: remove FMODE_FDOPEN
+
+Fri Apr 12 12:54:04 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: use missing/acosh.c.
+
+ * win32/config.h.in: define HAVE_COSH, HAVE_SINH, and HAVE_TANH.
+
+Fri Apr 12 02:58:55 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * struct.c (rb_struct_select): fix typo.
+
+Fri Apr 12 00:34:17 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * MANIFEST (missing/acosh.c): added.
+
+ * Makefile.in (missing/acosh.c): ditto.
+
+ * Makefile.in (missing/fileblocks.c): ditto.
+
+ * configure.in (AC_REPLACE_FUNCS): check acosh() on behalf of
+ inverse hyperbolic functions, asinh() and atanh().
+
+ * missing/acosh.c: added for acosh(), asinh() and atanh().
+
+Thu Apr 11 20:01:44 2002 Masahiro Tomita <tommy@tmtm.org>
+
+ * io.c (io_write): check error if written data is less than
+ specified size to detect EPIPE.
+
+Thu Apr 11 19:10:37 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (remain_size): IO#read returns "" if file.size == 0.
+
+ * random.c (rand_init): add check for initstate(3).
+
+ * configure.in: ditto.
+
+Thu Apr 11 09:31:19 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl/ptr.c: raise() -> rb_raise(). (Thanks Tetsuya Watanabe)
+
+ * ext/dl/sym.c: ditto.
+
+Thu Apr 11 07:57:48 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * eval.c (assign): ruby_verbose should be surrounded by RTEST().
+
+ * object.c (rb_str2cstr): ditto.
+
+ * parse.y (void_expr): ditto.
+
+ * parse.y (void_stmts): ditto.
+
+ * variable.c (rb_ivar_get): ditto.
+
+ * variable.c (rb_cvar_set): ditto.
+
+ * variable.c (rb_cvar_get): ditto.
+
+Thu Apr 11 07:02:31 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: Add dl.txt instead of README and README.html.
+
+Thu Apr 11 01:55:52 2002 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi/session.rb: support for multipart form.
+
+Wed Apr 10 18:42:23 2002 Tachino Nobuhiro <tachino@jp.fujitsu.com>
+
+ * dir.c (glob_helper): should have proceed link when link->path
+ was non existing symbolic link.
+
+Wed Apr 10 17:30:19 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_obj_remove_instance_variable): raise NameError if
+ specified instance variable is not defined.
+
+ * variable.c (generic_ivar_remove): modified to check ivar
+ existence.
+
+Wed Apr 10 14:16:45 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): fontify symbols for
+ unary operators and aset.
+
+Tue Apr 9 13:40:31 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb (try_link0): need expand macro in command, sync with
+ ext/extmk.rb.in.
+
+ * lib/mkmf.rb (try_cpp): ditto.
+
+ * lib/mkmf.rb (egrep_cpp): ditto.
+
+Tue Apr 9 12:44:59 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/stringio/stringio.c (check_modifiable): performance
+ improvement. avoid calling rb_str_modify() twice.
+
+ * ext/stringio/stringio.c (strio_ungetc): ditto.
+
+ * ext/stringio/stringio.c (strio_putc): ditto.
+
+ * ext/stringio/stringio.c (strio_write): ditto, and use
+ rb_str_cat() as possible.
+
+Tue Apr 9 05:17:48 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * re.c (match_select): fix index references and make
+ MatchData#select actually work.
+
+Tue Apr 9 00:20:52 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): new method based on the proposal
+ (and patch) from Mike Hall. [new]
+
+Mon Apr 8 04:50:51 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (error_handle): default to 1 unless status is set.
+
+ * eval.c (ruby_options): guard error_handle() with PROT_NONE.
+
+ * eval.c (ruby_stop): ditto.
+
+Mon Apr 8 01:22:24 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (math_acosh): added. [new]
+
+ * math.c (math_asinh): ditto.
+
+ * math.c (math_atanh): ditto.
+
+ * struct.c (rb_struct_each_pair): method added. [new]
+
+Sat Apr 6 02:04:49 2002 Guy Decoux <ts@moulon.inra.fr>
+
+ * class.c (rb_singleton_class): wrong condition; was creating
+ unnecessary singleton class.
+
+Sat Apr 6 01:09:41 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (remove_sign_bits): simplifies the condition.
+
+ * bignum.c (get2comp): calculate proper carry over.
+
+Fri Apr 5 05:07:28 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: Add dl/struct.rb.
+
+Thu Apr 4 14:08:52 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl/lib/dl/import.rb: Get rid of ineffective
+ encoding/decoding procedures.
+
+Thu Apr 4 01:08:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_step): step may be a float less than 1.
+
+Wed Apr 3 20:42:34 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: Merge Nakada's patch.
+
+ * ext/dl/dl.h: define StringValuePtr for ruby-1.6.
+
+Wed Apr 3 15:37:24 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: Add dl/types.rb.
+
+Wed Apr 3 01:54:10 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/extmk.rb.in (enable_config): follow lib/mkmf.rb.
+
+Tue Apr 2 19:59:13 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: Merge from rough.
+
+Tue Apr 2 15:17:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * Makefile.in (CPPFLAGS): remove @includedir@.
+
+ * lib/mkmf.rb (create_makefile): ditto.
+
+ * ext/extmk.rb.in (create_makefile): ditto.
+
+Tue Apr 2 15:09:05 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_addrinfo): should clear addrinfo hints.
+
+Mon Apr 1 23:48:12 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * lib/mkmf.rb: install any files using $INSTALLFILES.
+ (see also [ruby-dev:16683])
+
+Mon Apr 1 17:25:50 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fptr_cleanup): need flush even when io will not be
+ closed.
+
+ * io.c (rb_io_initialize): was calling wrong function
+ rb_io_mode_flags().
+
+Mon Apr 1 16:52:00 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/sdbm/init.c (each_pair): moved prototype before the
+ definition.
+
+ * ext/racc/cparse/cparse.c (call_scaniter): ditto.
+
+Mon Apr 1 15:11:40 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/racc/cparse/cparse.c: prototype; call_scaniter().
+
+ * ext/sdbm/init.c: prototype; each_pair().
+
+ * ext/tcltklib/tcltklib.c: prototypes; _timer_for_tcl() and ip_ruby(),
+ Nobu's patch at [ruby-dev:14483].
+
+Mon Apr 1 10:56:40 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (match_setter): it's OK to assign nil to $~.
+
+Mon Apr 1 03:55:46 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fptr_cleanup): do not close IO created by for_fd().
+
+ * io.c (rb_io_initialize): mark IO created by for_fd
+
+ * ext/socket/socket.c (bsock_s_for_fd): ditto.
+
+Fri Mar 29 20:21:58 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb (create_makefile): default FLAGS to empty strings.
+
+Fri Mar 29 16:36:52 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb (arg_config): should use Shellwords::shellwords like
+ ext/extmk.rb.in.
+
+ * lib/mkmf.rb (enable_config): default had priority over command
+ line options and configure_args.
+
+ * lib/mkmf.rb: support autoconf 2.53 style variables from
+ environment.
+
+ * lib/mkmf.rb: add directory options.
+
+Fri Mar 29 15:49:29 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/README.win32: follow recent changes.
+
+Fri Mar 29 14:44:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fflush): DRY patch from /Christoph applied.
+
+Thu Mar 28 18:58:13 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): reflect user defined $CC in
+ config.status.
+
+Thu Mar 28 18:03:51 2002 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: add taint check.
+
+ * ext/strscan/strscan.c: #getch/#get_byte should set regexp
+ registers.
+
+ * ext/strscan/strscan.c: remove useless #include directive.
+
+ * ext/strscan/strscan.c: refactor struct strscanner.
+
+Thu Mar 28 14:51:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_addrinfo): should specify socktype
+ from outside.
+
+Wed Mar 27 17:04:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_binmode): should call next_argv() to initialize ARGF.
+
+ * io.c (argf_filename): ditto.
+
+ * io.c (argf_file): ditto.
+
+Wed Mar 27 14:47:32 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (READ_DATA_PENDING): configure.in has supported for uClibc,
+ so remove uClibc stuff.
+
+Wed Mar 27 13:14:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_sysseek): new method based on a patch from Aristarkh
+ A Zagorodnikov <xm@bolotov-team.ru>. [new]
+
+ * io.c (READ_DATA_PENDING): use !feof(fp) for default behavior.
+
+Tue Mar 26 20:28:50 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: HTTP.get accepts URI.
+
+ * lib/net/http.rb: new method HTTP.get_uri.
+
+ * lib/net/http.rb: add some HTTP 1.1 response codes.
+
+Tue Mar 26 20:25:28 2002 Minero Aoki <aamine@loveruby.net>
+
+ * doc/net/protocol.rd.ja, smtp.rd.ja, pop.rd.ja: removed.
+
+ * MANIFEST: remove doc/net/* entries.
+
+Tue Mar 26 18:45:15 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (FILE_READPTR): check bufread instead of bufend
+ for uClibc.
+
+ * ext/extmk.rb.in (arg_config): should use Shellwords::shellwords.
+
+Tue Mar 26 01:56:33 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): while/until statement modifiers to "begin"
+ statement now work as "do .. while" even when begin statement
+ has "rescue" or "ensure" [new].
+
+ * parse.y (bodystmt): rescue/ensure is allowed at every bodies,
+ i.e. method bodies, begin bodies, class bodies[new], and module
+ bodies[new].
+
+Mon Mar 25 22:10:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_addrinfo): should specify ai_socktype
+ for getaddrinfo hints.
+
+Mon Mar 25 17:18:48 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * dir.c (rb_push_glob): local variable 'maxnest' was
+ uninitialized.
+
+Mon Mar 25 16:53:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_abort): embed aborting message into exception
+ object [new].
+
+ * eval.c (terminate_process): utility function for exit and abort.
+
+Tue Mar 26 14:04:47 2002 okabe katsuyuki <HGC02147@nifty.ne.jp>
+
+ * win32/mkexports.rb: support VC++.NET.
+
+Tue Mar 26 14:00:17 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/bigfloat/bigfloat.c: Fix the initializer's function name
+ according to the new library name. (pointed out by nobu)
+
+Tue Mar 26 11:12:01 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: new file.
+
+Tue Mar 26 03:23:50 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (pp): return nil like p.
+
+Tue Mar 26 01:48:01 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/bigfloat/extconf.rb: Downcase the library name. (BigFloat.so
+ -> bigfloat.so)
+
+ * ext/bigfloat/bigfloat.c (BigFloat_inspect): Alter the inspect
+ format not to look like an array. (pointed out by akr)
+
+ * ext/bigfloat/bigfloat.c (BigFloat_hash): Implement BigFloat#hash.
+
+ * ext/bigfloat/bigfloat.c (BigFloat_dump, BigFloat_load):
+ Support marshaling.
+
+Tue Mar 26 00:38:11 2002 Tanaka Akira <akr@m17n.org>
+
+ * configure.in (FILE_READPTR): check _p for 4.4BSD.
+
+Mon Mar 25 23:39:25 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * configure.in (FILE_READPTR): new. for IO#gets improvement.
+
+ * io.c (READ_DATA_PENDING_PTR): ditto.
+
+ * io.c (remain_size): separated from read_all().
+
+ * io.c (read_all): argument changed.
+
+ * io.c (appendline): new. get a line and append to string.
+
+ * io.c (swallow): new. swallow continuous line delimiters.
+
+ * io.c (rb_io_getline_fast): add delimiter argument.
+
+ * io.c (rb_io_getline): performance improvement.
+
+Mon Mar 25 19:30:25 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in (arg_config): get rid of single quotes
+ for autoconf 2.53.
+
+Mon Mar 25 17:49:41 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * regex.c (mbc_startpos_func): VC6 seems to be unable to
+ understand forward declaration for static variables.
+
+ * dir.c (rb_push_glob): local variable 'maxnest' was
+ uninitialized.
+
+Mon Mar 25 13:24:20 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (bsock_do_not_rev_lookup_set): should not be
+ allowed when $SAFE > 3.
+
+ * eval.c (rb_thread_ready): THREAD_TO_KILL threads should not turn
+ into THREAD_RUNNABLE on wakeup.
+
+ * eval.c (rb_thread_list): THREAD_TO_KILL threads should be in the
+ list.
+
+ * eval.c (thgroup_list): ditto; by moving gid clearance from
+ rb_thread_cleanup().
+
+Mon Mar 25 11:06:19 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * dln.c (dln_argv0): unused unless USE_DLN_A_OUT.
+
+ * regex.c (mbc_startpos_func): should be static.
+
+Sun Mar 24 12:19:09 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * dir.c (fnmatch): "*/bar" (with FNM_PATHNAME flag) does not
+ match "foo/bar".
+
+Sun Mar 24 00:46:05 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * util.c (push_element): avoid warning for djgpp.
+
+Sat Mar 23 01:50:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): files on /proc filesystem with zero stat size,
+ may have contents.
+
+Fri Mar 22 18:07:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (tcp_s_gethostbyname): refactored.
+
+ * ext/socket/socket.c (sock_s_gethostbyname): ditto.
+
+Fri Mar 22 16:46:54 2002 Minero Aoki <aamine@loveruby.net>
+
+ * ext/extmk.rb.in: replace mkdir with mkpath to compile racc/cparse.
+
+Fri Mar 22 16:22:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * the VMS support patch submitted by Akiyoshi, Masamichi
+ <Masamichi.Akiyoshi@jp.compaq.com> is merged.
+
+Fri Mar 22 16:27:24 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/racc/parser.rb: new file.
+
+ * ext/racc/MANIFEST, cparse.c, depend, extconf.rb: new files.
+
+ * lib/README: add racc/parser.rb.
+
+ * ext/Setup*: add racc/cparse.
+
+Fri Mar 22 15:04:03 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (exec_under): changing ruby_class is OK, but should not
+ alter cbase.
+
+ * eval.c (yield_under_i): ditto.
+
+Fri Mar 22 15:44:38 2002 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/MANIFEST, strscan.c, depend, extconf.rb: new files.
+
+ * ext/Setup*: add strscan entry.
+
+Fri Mar 22 14:32:14 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: Protocol#start should return self.
+
+Fri Mar 22 14:14:21 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb: fix arguments to create exceptions.
+ Patch from matt@lickey.com. (ruby-bugs:PR#278)
+
+Fri Mar 22 13:51:11 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/bigfloat/.cvsignore, ext/bigfloat/MANIFEST: BigFloat 1.1.8
+ has been imported. Add .cvsignore and MANIFEST.
+
+Fri Mar 22 04:07:55 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * sprintf.c (rb_f_printf): discard meaningless prefix ".." for '%u'.
+
+Thu Mar 21 01:11:37 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): fix install path (prefix).
+
+Thu Mar 21 01:03:05 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/configsub.rb: latest autoconf style support.
+
+Wed Mar 20 22:16:25 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * mkconfig.rb: close duplicated $stdout before renaming rbconfig.rb.
+
+Wed Mar 20 21:54:17 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/Makefile.sub: made variables configurable.
+
+ * win32/Makefile.sub (config.h): updates RUBY_PLATFORM from
+ Makefile.
+
+ * win32/Makefile.sub (config.status): ditto. and use recent
+ autoconf format.
+
+ * win32/Makefile.sub (clean): separate ext and local clean up.
+
+ * win32/Makefile.sub (distclean): ditto.
+
+ * win32/config.status.in: no longer used.
+
+Wed Mar 20 20:12:35 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * variable.c (rb_const_list): a temporary table must be freed.
+
+Wed Mar 20 19:44:09 2002 Tanaka Akira <akr@m17n.org>
+
+ * mkconfig.rb: don't touch rbconfig.rb if there is a trouble.
+
+Wed Mar 20 16:05:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): should check receiver only once.
+
+ * eval.c (is_defined): should handle NODE_NEWLINE.
+
+Wed Mar 20 11:29:25 2002 Aristarkh A Zagorodnikov <xm@xml-objects.com>
+
+ * file.c (rb_file_s_expand_path): memory leak fixed.
+
+Wed Mar 20 00:36:43 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * util.c (ruby_getcwd): the content of buf is uncertain and must
+ not be printed when getcwd(buf, size) has failed.
+
+Mon Mar 18 22:19:52 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/stringio/stringio.c (check_modifiable): wrong declaration.
+
+Mon Mar 18 18:04:05 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/digest: add depend file.
+
+ * ext/digest/md5: ditto.
+
+ * ext/digest/rmd160: ditto.
+
+ * ext/digest/sha1: ditto.
+
+ * ext/digest/sha2: ditto.
+
+ * ext/iconv/MANIFEST: ditto.
+
+ * ext/stringio/MANIFEST: ditto.
+
+ * ext/syslog: ditto.
+
+Mon Mar 18 17:18:06 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_f_abort): should not bypass cleanup.
+
+ * ext/stringio/stringio.c (check_modifiable): void function.
+
+Mon Mar 18 12:52:01 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/iconv/extconf.rb: workaround for GNU libiconv.
+
+Mon Mar 18 10:55:03 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (parse_string): part of multi-byte sequence must not
+ match to paren.
+
+ * parse.y (parse_qstring): ditto.
+
+ * parse.y (parse_quotedwords): ditto.
+
+ * parse.y (str_extend): handle multi-byte characters.
+
+Mon Mar 18 10:31:20 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * enum.c (enum_find): catch a value before recycle.
+
+ * enum.c (enum_all): ditto.
+
+ * enum.c (enum_any): ditto.
+
+ * enum.c (enum_min): ditto.
+
+ * enum.c (enum_max): ditto.
+
+Sun Mar 17 20:08:04 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/iconv/depend: added.
+
+ * ext/stringio/depend: added.
+
+Sat Mar 16 22:43:53 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * missing/fileblocks.c: add for autoconf.
+
+Sat Mar 16 15:30:40 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_search): should clear last_match if pos is out of
+ string range.
+
+ * string.c (rb_str_index_m): ditto.
+
+ * string.c (rb_str_rindex): ditto.
+
+Sat Mar 16 09:04:58 2002 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * enum.c (enum_inject): use the first iterated element as the
+ initial value when omitted.
+
+ * enum.c (inject_i): ditto.
+
+ * enum.c (Init_Enumerable): Enumerable#inject now takes variable
+ count arguments.
+
+Fri Mar 15 19:47:31 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/win32.c (StartSockets): remove duplicated lines.
+
+Fri Mar 15 17:44:08 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * bignum.c, intern.h (rb_ull2big, rb_ll2big, rb_ull2inum, rb_ll2inum,
+ big2ull, rb_big2ull, rb_big2ll): use LONG_LONG macro instead of
+ long long.
+
+ * numeric.c, intern.h, ruby.h (rb_num2ll, rb_num2ull): ditto.
+
+ * ruby.h: use _I64_MAX and _I64_MIN if they are defined (for VC++).
+
+Fri Mar 15 14:02:43 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/iconv/iconv.c: fixed document, Iconv#new is no longer an
+ iterator. thanks to Tanaka Akira <akr@m17n.org>.
+
+Thu Mar 14 22:17:45 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/iconv: imported.
+
+Thu Mar 14 16:42:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_define_class): should handle autoload.
+
+ * class.c (rb_define_module): ditto.
+
+Thu Mar 14 16:18:12 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: autoconf 2.53 support. use AC_LIBOBJ.
+
+Thu Mar 14 00:29:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_match): should clear $~ if operand is nil.
+
+ * re.c (rb_reg_match2): ditto.
+
+Thu Mar 14 12:32:59 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/stringio/stringio.c: fixed frozen string bug. ungetc no
+ longer raises on readonly stream unless modifies actually.
+
+Thu Mar 14 08:57:41 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * dir.c (rb_push_glob): avoid SEGV when a block given.
+
+Thu Mar 14 00:16:02 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * string.c (rb_str_subpat_set): must make str independent after
+ rb_reg_search() matched.
+
+Wed Mar 13 19:05:15 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * dir.c: FNM_PERIOD is obsoleted and FNM_DOTMATCH is introduced
+ instead, which has the opposite meaning of FNM_PERIOD.
+
+ * dir.c: Dir::glob now accepts optional FNM_* flags via the second
+ argument, whereas Dir::[] doesn't.
+
+Wed Mar 13 18:36:55 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/getopts.rb: single_options can be nil[*], and is not not
+ optional. ([*]Pointed out by gotoken)
+
+Wed Mar 13 17:23:46 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure: merge Jonathan Baker's large file support patch
+ [ruby-talk:35316], with read_all patch in [ruby-talk:35470].
+
+Wed Mar 13 04:06:48 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_abort): optional message argument that be printed
+ on termination.
+
+Tue Mar 12 17:12:06 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb: don't complete domains for absolute FQNs.
+
+Mon Mar 11 23:08:48 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/tsort.rb: new file.
+
+Mon Mar 11 21:03:37 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/stringio: new.
+
+Mon Mar 11 18:03:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): '\0111' should be '\011' plus '1',
+ since octal literals are formed by three digits at most.
+
+Mon Mar 11 14:44:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): module inclusion using extend() should
+ also be detected.
+
+ * eval.c (rb_eval_cmd): cbase should not be NULL; it should be
+ either ruby_wrapper or Object.
+
+Sun Mar 10 02:18:22 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * enum.c (enum_each_with_index): should return self.
+
+ * process.c (proc_setpgrp): should return value for non-void function.
+
+ * process.c (proc_getpgid): should raise exception if getpgid() return -1.
+
+ * string.c (rb_str_ljust): should return a duplicated string.
+
+ * string.c (rb_str_rjust): ditto.
+
+ * string.c (rb_str_center): ditto.
+
+Sat Mar 9 08:45:58 2002 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/extconf.rb (have_struct_member): don't print checked
+ result.
+
+Fri Mar 8 12:19:15 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb: use its own thread group for background threads.
+
+Fri Mar 8 02:21:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (cvar_cbase): utility function to find innermost non
+ singleton cbase.
+
+ * eval.c (is_defined): adopt new cvar behavior.
+
+ * eval.c (rb_eval): ditto.
+
+ * eval.c (assign): ditto.
+
+Thu Mar 7 20:08:25 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * gc.c (rb_source_filename): added. holds unique strings for file
+ names with GC space.
+
+ * gc.c (rb_gc_mark): mark source file name.
+
+ * gc.c (gc_sweep): ditto.
+
+ * gc.c (Init_GC): initialize source file name table.
+
+ * intern.h (rb_source_filename): added.
+
+ * eval.c (rb_eval_string): use rb_source_filename().
+
+ * parse.y (yycompile): ditto.
+
+ * ruby.c (proc_options): ditto.
+
+ * ruby.c (load_file): ditto.
+
+ * ruby.c (ruby_script): ditto.
+
+ * ruby.c (ruby_prog_init): ditto.
+
+Wed Mar 6 17:58:08 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c (dln_load): use LoadLibrary instead of LoadLibraryEx.
+
+Wed Mar 6 16:50:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_mod_clone): should not call rb_obj_clone(), since
+ Module does not provide "allocate".
+
+ * class.c (rb_singleton_class): should create new singleton class
+ if obj is a class or module and attached object is different,
+ which means metaclass of singleton class is sought.
+
+ * time.c (time_s_alloc): now follows allocation framework.
+
+Tue Mar 5 05:56:29 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/getopts.rb: Rewrite to fix some bugs and complete features.
+ - Accept options with the colon in the first argument;
+ getopts("a:bcd:") is equivalent to getopts("bc", "a:", "d:").
+ - Do not discard the argument that caused an error.
+ - Do not discard '-', which commonly stands for stdin or stdout.
+ - Allow specifying a long option with a value using '='.
+ (command --long-option=value)
+ - Stop reading options when it meets a non-option argument.
+
+Mon Mar 4 13:19:18 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in (dir_config): Sync with mkmf.rb: Fix a bug where
+ --with-xx-{include,lib} is ignored when --with-xx-dir is
+ specified.
+
+Mon Mar 4 00:09:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should initialize outer class variables from
+ methods in singleton class definitions.
+
+ * eval.c (assign): ditto.
+
+Fri Mar 1 11:29:10 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/{addinfo.h,getaddrinfo.c} (gai_strerror): add const
+ qualifier only for uClibc.
+
+Fri Mar 1 11:22:51 2002 Amos Gouaux <amos+ruby@utdallas.edu>
+
+ * lib/net/imap.rb: added document.
+
+ * lib/net/imap.rb (getquotaroot): new method.
+
+ * lib/net/imap.rb (setacl): remove the rights if the rights
+ parameter is nil.
+
+ * lib/net/imap.rb (getacl): return an array of MailboxACLItem.
+
+Fri Mar 1 06:25:49 2002 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/extconf.rb (have_struct_member): new method.
+ check msg_control and msg_accrights in struct msghdr. check
+ sys/uio.h.
+
+ * ext/socket/socket.c: include sys/uio.h if available.
+ (thread_read_select): new function.
+ (unix_send_io): ditto.
+ (unix_recv_io): ditto.
+ (unix_s_socketpair): ditto.
+ (Init_socket): define UNIXSocket#send_io, UNIXSocket#recv_io,
+ UNIXSocket.socketpair and UNIXSocket.pair.
+
+ * dln.c (dln_load): fix typo.
+
+Wed Feb 27 16:30:50 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_include): load modules in argument order.
+
+ * st.c (st_init_table_with_size): num_bins should be prime numbers
+ (no decrement).
+
+ * st.c (rehash): ditto.
+
+Wed Feb 27 13:18:49 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (READ_DATA_PENDING): uClibc support.
+
+ * random.c (rand_init): ditto.
+
+ * ext/socket/{addinfo.h,getaddrinfo.c} (gai_strerror): ditto.
+
+Wed Feb 27 07:05:17 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/sha2.c: Merge from rough. Fix a couple of
+ off-by-one errors in Aaron Gifford's code.
+
+ Obtained from: KAME via FreeBSD
+ KAME PR: 393
+ FreeBSD PR: kern/34242
+
+Wed Feb 27 03:36:47 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * ext/dbm/dbm.c (fdbm_select): 1.7 behavior.
+
+ * ext/gdbm/gdbm.c (fgdbm_select): ditto.
+
+ * ext/sdbm/sdbm.c (fsdbm_select): ditto.
+
+ * ext/dbm/dbm.c (fdbm_delete): adopt Hash#delete behavior.
+
+ * ext/sdbm/sdbm.c (fsdbm_delete): ditto.
+
+ * ext/gdbm/gdbm.c: need not to dup key to the block.
+
+ * ext/sdbm/sdbm.c : replace RuntimeError with SDBMError.
+
+Tue Feb 26 21:34:07 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * bignum.c (rb_big_2comp): void function cannot return any value.
+
+Tue Feb 26 16:52:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_missing): NoMethod error messages for true, false,
+ nil must respond visibility like for other objects.
+
+Tue Feb 26 15:41:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): call trace_func for if/while conditions.
+
+ * marshal.c (r_object): separate r_regist from proc calling.
+
+Tue Feb 26 11:25:50 2002 akira yamada <akira@arika.org>
+
+ * lib/uri/generic.rb: merge0 should return [oth, oth] if oth is
+ absolute URI.
+
+ * lib/uri/generic.rb: registry part must not be allowed for any
+ schemes for the Internet. (RFC2396, section 3.2.2 and 3.2.1.)
+
+Mon Feb 25 21:22:41 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c: Merge from rough. Use SafeStringValue().
+
+Mon Feb 25 21:12:08 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c: Merge from rough. Turn Syslog into a
+ module keeping backward compatibility intact.
+
+Mon Feb 25 19:35:48 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * sample/test.rb (system): test with scripts under the source
+ directory.
+
+Mon Feb 25 15:14:01 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_inspect): should not dump core for unbound
+ singleton methods.
+
+ * object.c (rb_mod_to_s): better description.
+
+Mon Feb 25 13:32:13 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/shell.rb (Shell::expand_path): relative to @cwd.
+
+Mon Feb 25 06:30:11 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * hash.c (env_select): should path the assoc list.
+
+Sun Feb 24 17:20:22 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/*/*.h: Merge from rough.
+ - Avoid namespace pollution. (MD5_* -> rb_Digest_MD5_*, etc.)
+
+Sat Feb 23 21:12:13 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_syswait): thread kludge; should be fixed to
+ support native thread.
+
+Fri Feb 22 21:20:53 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: set read_timeout dynamically.
+
+ * lib/net/http.rb: @@newimpl is always true in the main trunk.
+
+ * lib/net/http.rb: HTTP.port -> default_port
+
+ * lib/net/http.rb: HTTPResponse.read_response_status ->
+ read_status_line
+
+Fri Feb 22 19:56:15 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/config.status.in: set LIBRUBY_SO.
+
+Fri Feb 22 03:34:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (get2comp): need to specify to carry or not.
+
+ * io.c (rb_io_inspect): embed path info.
+
+Fri Feb 22 11:30:01 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb: FillGroup implemented.
+
+Thu Feb 21 21:40:18 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/extmk.rb.in (create_makefile): remove unnecessary -L option from
+ LIBS macro.
+
+Thu Feb 21 02:49:12 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * pack.c (pack_pack): wrong # comment treatment.
+
+ * pack.c (pack_unpack): ditto.
+
+Wed Feb 20 15:15:03 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * intern.h: prototypes; rb_io_addstr(), rb_io_printf(),
+ rb_io_print(), rb_io_puts()
+
+ * io.c (rb_io_addstr): make extern.
+
+ * io.c (rb_io_printf): ditto.
+
+ * io.c (rb_io_print): ditto.
+
+ * io.c (rb_io_puts): ditto.
+
+Wed Feb 20 13:41:35 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * io.c (rb_io_close): return Qnil.
+
+Wed Feb 20 12:41:59 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_any_cmp): should handle Qundef in keys.
+
+ * eval.c (remove_method): should not remove a empty method to
+ implement "undef".
+
+ * eval.c (rb_eval): should allow singleton class def for
+ true/false/nil.
+
+Tue Feb 19 21:43:32 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: rename Protocol.port to default_port.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/http.rb: ditto.
+
+ * lib/net/protocol.rb: rename BufferedSocket class to
+ InternetMessageIO.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/http.rb: ditto.
+
+ * lib/net/protocol.rb: rename InternetMessageIO#write_pendstr to
+ write_message.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/protocol.rb: new method
+ InternetMessageIO#through_message.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/protocol.rb: rename InternetMessageIO#read_pendstr to
+ read_message_to.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/protocol.rb: rename InternetMessageIO#read_pendlist to
+ each_list_item
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/protocol.rb: Now block size is 1024.
+
+ * lib/net/smtp.rb: new methods SMTP#esmtp? and #esmtp=.
+
+ * lib/net/http.rb: Using singleton method syntax instead of
+ singleton class clause, to avoid behavior change of class
+ variables in ruby 1.7.
+
+ * lib/net/http.rb: HTTPResponse class does not inherit from
+ Net::Response.
+
+ * lib/net/http.rb: divide HTTP#connecting into
+ {begin,end}_transport.
+
+ * lib/net/http.rb: unused class Accumulator removed.
+
+ * lib/net/http.rb: Net::HTTP reads response. not HTTPRequest.
+
+ * lib/net/http.rb: proxy related class-instance-variables are not
+ initialized correctly.
+
+Tue Feb 19 20:20:12 2002 Ed Sinjiashvili <edsin@swes.saren.ru>
+
+ * parse.y (str_extend): backslash escape was done wrong.
+
+Tue Feb 19 17:10:25 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (path_check_1): do not fail on world writable *parent*
+ directories too.
+
+Tue Feb 19 15:51:41 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (path_check_1): do not warn on world writable *parent*
+ directories.
+
+ * class.c (rb_include_module): should preserve ancestor order in
+ the included class/module.
+
+Tue Feb 19 14:45:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (path_check_1): should check directory sticky bits.
+
+ * process.c (security): need not to warn twice.
+
+ * marshal.c (r_object): complete restoration before calling
+ r_regist().
+
+Tue Feb 19 14:24:36 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): operators in the "op" rule should make
+ lex_state EXPR_ARG on EXPR_FNAME and EXPR_DOT.
+
+Tue Feb 19 13:38:10 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval_string_wrap): should hide the toplevel local
+ variable bindings by PUSH_SCOPE().
+
+Tue Feb 19 13:21:51 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * regex.c: fix prototypes of xmalloc(), xcalloc() and xrealloc().
+
+Tue Feb 19 13:16:08 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * io.c (rb_io_ungetc): don't fail pushed EOF back.
+
+Mon Feb 18 20:48:40 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * pack.c (pack_pack): avoid infinite loop at comment.
+
+ * pack.c (pack_unpack): ditto.
+
+Mon Feb 18 14:06:28 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * misc/ruby-mode.el (ruby-block-hanging-re): rescue block was too
+ indented.
+
+Mon Feb 18 13:56:44 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (expr_value, arg_value, primary_value): value_expr()
+ check in place.
+
+ * eval.c (block_pass): "&nil" should clear block given.
+
+Mon Feb 18 02:05:56 2002 Wolfgang Jahrling <wolfgang@pro-linux.de>
+
+ * dir.c (push_braces): remove MAXPATHLEN dependency.
+
+ * dir.c (dir_s_globd): ditto.
+
+ * dln.c (init_funcname): ditto.
+
+ * dln.c (load_1): ditto.
+
+ * dln.c (dln_load): ditto.
+
+ * configure.in: add GNU/Hurd switches.
+
+Fri Feb 15 17:44:26 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): allows comment in template strings.
+
+ * pack.c (pack_unpack): ditto.
+
+Sun Feb 17 23:41:37 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * mkconfig.rb (Config::expand): expand ${} too.
+
+ * ext/extmk.rb.in (try_link0): expand command.
+
+ * ext/extmk.rb.in (try_cpp): ditto.
+
+ * ext/extmk.rb.in (extmake): default $LIBPATH to $libdir
+
+Sun Feb 17 21:39:24 2002 Tetsuya Watanabe <tetsuya.watanabe@nifty.com>
+
+ * ext/digest/md5/md5init.c (Init_md5): rb_cvar_declare() is
+ replaced by rb_cvar_set().
+
+ * ext/digest/rmd160/rmd160init.c (Init_rmd160): ditto.
+
+ * ext/digest/sha1/sha1init.c (Init_sha1): ditto.
+
+ * ext/digest/sha2/sha2init.c (Init_sha2): ditto.
+
+Sun Feb 17 18:10:09 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * class.c (rb_define_class): warn unless superclass is specified
+ explicitly.
+
+ * class.c (rb_define_class_under): ditto.
+
+Thu Feb 16 02:11:08 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): fontify
+ instance/class/global variables start with '_'.
+
+Fri Feb 15 14:40:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): replace rb_cvar_declare() by rb_cvar_set().
+
+ * eval.c (assign): ditto.
+
+ * variable.c (rb_cvar_set): 4th argument (warn) added; define new
+ class variable if it's not defined yet.
+
+ * variable.c (rb_cvar_declare): removed.
+
+Fri Feb 15 13:36:58 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_rshift): should properly convert the negative
+ value to 2's compliment.
+
+Thu Feb 14 17:38:35 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y: avoid SEGV at OP_ASIGN to pseudo variable.
+
+Thu Feb 14 14:13:16 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (Init_Struct): should undefine "allocate" for Struct
+ class (it's redefined in the subclasses).
+
+Wed Feb 13 17:58:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): local variable declaration order was changed
+ since 1.6
+
+ * parse.y (arg): ditto.
+
+ * pack.c (pack_pack): add templates 'q' and 'Q'.
+
+ * pack.c (pack_unpack): ditto.
+
+ * bignum.c (rb_quad_pack): new utility function.
+
+ * bignum.c (rb_quad_unpack): ditto.
+
+Tue Feb 12 01:21:34 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assignable): should emit CVASGN within the method
+ body.
+
+Mon Feb 11 06:13:53 2002 Matt Armstrong <matt@lickey.com>
+
+ * dir.c (dir_s_glob): should not warn even if no match found.
+
+Mon Feb 11 04:25:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): clean up class variable behavior.
+
+ * eval.c (assign): ditto.
+
+ * eval.c (is_defined): ditto.
+
+ * variable.c (rb_mod_class_variables): need not to call rb_cvar_singleton().
+
+ * variable.c (rb_cvar_singleton): removed.
+
+Mon Feb 11 00:10:41 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * regex.c (re_compile_fastmap): skip begpos.
+
+Sun Feb 10 16:52:53 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ruby.c (load_file): avoid SEGV on '#' only input.
+
+Fri Feb 8 23:07:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): singleton check should be moved from yycompile
+ to here.
+
+ * eval.c (is_defined): check should be added here too.
+
+Fri Feb 8 05:31:48 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: HTTP.Proxy should use self for proxy-class's
+ super class.
+
+ * lib/net/http.rb: initialize HTTP.proxy_port by HTTP.port.
+
+Fri Feb 8 01:27:33 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yycompile): should inherit "in_single" if eval happened
+ in a singleton method.
+
+ * eval.c (rb_eval): class variables from singleton methods defined
+ within singleton class statement should work like ones defined
+ by singleton def statements.
+
+Thu Feb 7 13:44:08 2002 akira yamada <akira@arika.org>
+
+ * uri/common.rb (URI::join): new method.
+
+ * uri/generic.rb (Generic#merge): URI.parse("http://a/")+"b" should
+ return "http://a/b" but it returned "http://a//b".
+
+ * uri/generic.rb (Generic#check_path): corrected error message,
+ @path -> v
+
+Thu Feb 7 00:18:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_write): flag when buffered write is done.
+
+ * io.c (fptr_finalize): do not raise error on EBADF if write
+ buffer is empty.
+
+Wed Feb 6 17:18:54 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * configure.in: keep old config.h unless changed.
+
+Wed Feb 6 13:28:53 2002 Amos Gouaux <amos+ruby@utdallas.edu>
+
+ * lib/net/imap.rb: OpenSSL support.
+
+ * lib/net/imap.rb (setquota): unset quota if the second argument
+ is nil.
+
+Wed Feb 6 13:05:11 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_readlines): avoid calling GetOpenFile() repeatedly.
+
+ * io.c (rb_io_each_line): ditto.
+
+ * io.c (argf_getline): ditto.
+
+ * process.c: should include <time.h> to get proper CLK_TCK.
+
+Wed Feb 6 02:10:30 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * io.c (fptr_finalize): ignore EBADF when f and f2 use same
+ descriptor.
+
+Tue Feb 5 16:17:20 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (fptr_finalize): should raise error when fclose fails.
+
+ * eval.c (method_inspect): proper output format to distinguish
+ methods and singleton methods.
+
+Mon Feb 4 22:44:58 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_file_s_expand_path): should terminate.
+
+Mon Feb 4 15:38:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_class_real): should not follow ICLASS link
+
+ * variable.c (classname): should follow ICLASS link explicitly.
+
+ * eval.c (rb_call): ditto.
+
+Fri Feb 1 19:10:04 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * intern.h: prototypes for new functions; rb_cstr_to_inum(),
+ rb_str_to_inum(), rb_cstr_to_dbl(), rb_str_to_dbl()
+
+ * bignum.c (rb_cstr_to_inum): changed from rb_cstr2inum(), and
+ added argument badcheck to be consistent with parser. [new]
+
+ * bignum.c (rb_str_to_inum): ditto.
+
+ * bignum.c (rb_cstr2inum): wrapper of rb_cstr_to_inum() now.
+
+ * bignum.c (rb_str2inum): ditto.
+
+ * object.c (rb_cstr_to_dbl): float number parser. [new]
+
+ * object.c (rb_str_to_dbl): ditto.
+
+ * object.c (rb_Float): use rb_cstr_to_dbl() for strict check.
+
+ * object.c (rb_Integer): use rb_str_to_inum() for strict check.
+
+ * string.c (rb_str_to_f): use rb_str_to_dbl() with less check.
+
+ * string.c (rb_str_to_i): use rb_str_to_inum() with less check.
+
+ * string.c (rb_str_hex): ditto.
+
+ * string.c (rb_str_oct): ditto.
+
+ * sprintf.c (rb_f_sprintf): ditto.
+
+ * time.c (obj2long): ditto.
+
+ * parse.y (yylex): use rb_cstr_to_inum() for strict check.
+
+Fri Feb 1 17:46:39 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * regex.c (mbc_startpos): become macro.
+
+ * regex.c (euc_startpos): added for improvement.
+
+ * regex.c (sjis_startpos): ditto.
+
+ * regex.c (utf8_startpos): ditto.
+
+Fri Feb 1 00:03:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat_inspect): print dev, rdev in hexadecimal.
+
+Thu Jan 31 20:45:33 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb (dir_config): prior --with flag.
+
+ * lib/mkmf.rb (arg_config): avoid special variables for
+ font-lock-mode.
+
+Thu Jan 31 13:22:36 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (File::Stat#pretty_print): print rdev_major and rdev_minor.
+
+Wed Jan 30 15:58:04 2002 K.Kosako <kosako@sofnec.co.jp>
+
+ * regex.c (re_adjust_startpos): fix for SJIS and UTF-8.
+
+ * regex.c (mbc_startpos): ditto.
+
+Wed Jan 30 13:37:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_search): should set regs.allocated.
+
+Wed Jan 30 02:25:38 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * regex.c (re_adjust_startpos): search start of multibyte
+ backward.
+
+ * regex.c (mbc_startpos): ditto.
+
+Tue Jan 29 17:59:20 2002 Tanaka Akira <akr@m17n.org>
+
+ * file.c: `major' and `minor' macro needs sys/mkdev.h on SunOS 5.x.
+
+ * configure.in: add check for `sys/mkdev.h'.
+
+ * lib/pp.rb: don't print a mode File::Stat as decimal number.
+
+Mon Jan 28 19:16:58 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_ary_fill): shouldn't yield unless block given.
+
+Mon Jan 28 18:33:18 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (yylex): strict check for numbers.
+
+Mon Jan 28 18:01:01 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat_rdev_major): added. [new]
+
+ * file.c (rb_stat_rdev_minor): added. [new]
+
+ * file.c (rb_stat_inspect): print mode in octal.
+
+Mon Jan 28 13:29:41 2002 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (is_defined): defined?(Foo::Baz) should check constants
+ only, no methods.
+
+ * eval.c (is_defined): should not dump core on defined?(a::b)
+ where a is not a class nor a module.
+
+Mon Jan 28 02:50:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): remove dup and clone from TrueClass,
+ FalseClass, and NilClass.
+
+ * array.c (rb_ary_fill): Array#fill takes block to get the value to
+ fill.
+
+Sat Jan 26 20:05:18 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_to_i): to_i(0) auto-detects base radix.
+
+ * array.c (rb_ary_initialize): fill by the block evaluation value
+ if block is given.
+
+Fri Jan 25 17:48:43 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (solaris): add '-shared' only for GNU ld.
+
+Fri Jan 25 17:16:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): detect cyclic module inclusion.
+
+Fri Jan 25 02:17:56 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_cleanup): need not to free thread stacks at
+ process termination.
+
+ * array.c (rb_ary_fetch): use the block to get the default value
+ if the block is given.
+
+ * eval.c (rb_thread_schedule): should check time only if BOTH
+ WAIT_SELECT and WAIT_TIME.
+
+Thu Jan 24 11:49:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (umethod_bind): should update rklass field.
+
+ * hash.c (rb_hash_update): if a block is given, yields [key,
+ value1, value2] to the block to resolve conflict.
+
+Thu Jan 24 05:42:01 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * string.c (rb_str_split_m): no need to consider KANJI
+ characters, if the length of separator is 1 (byte).
+
+Wed Jan 23 16:07:31 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (Init_Array): remove Array#filter.
+
+Wed Jan 23 13:27:44 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_yield_0): restore source file/line after yield.
+
+Wed Jan 23 02:00:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_initialize): should accept zero argument.
+
+ * object.c (rb_mod_cmp): should raise ArgumentError if
+ inheritance/inclusion relation between two classes/modules is
+ not defined. [new]
+
+Tue Jan 22 17:45:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fsync): new method. [new]
+
+Mon Jan 21 22:57:18 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * signal.c (ruby_signal): must define sighandler_t for every
+ occasion.
+
+Mon Jan 21 08:25:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_stop): should not trace error handler.
+
+ * signal.c (install_sighandler): do not install sighandler unless
+ the old value is SIG_DFL.
+
+ * io.c (io_write): should not raise exception on O_NONBLOCK io.
+
+ * dir.c (dir_set_pos): seek should return dir, pos= should not.
+
+Sat Jan 19 02:31:45 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): need not to clear method cache for NODE_CLASS,
+ NODE_SCLASS.
+
+ * gc.c (obj_free): need not to clear method cache on class/module
+ finalization.
+
+Fri Jan 18 23:38:03 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fetch): index out of range raises exception
+ unless optional second argument is specified.
+
+Fri Jan 18 17:32:09 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_new): block check moved from initialize to this
+ method.
+
+ * io.c (rb_io_s_open): open should call initialize too. IO#for_fd
+ also calls initialize. [new]
+
+Fri Jan 18 10:26:33 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_sys_fail): replace INT2FIX() by INT2NUM() since
+ errno value may not fit in Fixnum size on Hurd.
+
+ * error.c (set_syserr): ditto.
+
+Fri Jan 18 10:12:00 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (tcp_svr_s_open): fix typo.
+
+Fri Jan 18 02:27:48 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_glob): returns nil if block given.
+
+ * io.c (rb_io_each_byte): should return self.
+
+ * io.c (rb_io_close_m): close check added.
+
+ * dir.c (dir_seek): should return pos.
+
+Fri Jan 18 01:21:53 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (fixpos): orig may be (NODE*)1, which should not be
+ dereferenced.
+
+Thu Jan 17 16:21:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): allow "retry" from within argument passed
+ block. [new]
+
+ * eval.c (localjump_error): should preserve exit status in the
+ exception object. [new]
+
+ * eval.c (proc_invoke): should raise exception for "break" if it's
+ yielding, not calling. [new]
+
+ * eval.c (block_pass): should NOT raise exception for "break". [new]
+
+ * eval.c (block_pass): should allow block argument relay even in
+ the tainted mode.
+
+Thu Jan 17 09:43:05 2002 TAKAHASHI Kaoru <kaoru@kaisei.org>
+
+ * misc/ruby-mode.el (ruby-add-log-current-method): New function
+ for `add-log-current-defun-function'.
+
+Thu Jan 17 04:51:48 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: support subclassing by proper "initialize"
+ calling convention. [new]
+
+Wed Jan 16 18:25:08 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c: primes should be primes.
+
+Wed Jan 16 12:29:14 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/timeout.rb (timeout): new optional argument to specify an
+ exception class.
+
+ * lib/resolv.rb: use Resolv::ResolvTimeout for internal timeout to
+ avoid problem with timeout of application.
+
+Wed Jan 16 11:12:30 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * object.c (rb_Float): remove underscores between digits.
+
+ * bignum.c (rb_cstr2inum): reject prefix followed by spaces only.
+
+ * class.c (rb_class_inherited): should use Object when no super
+ class.
+
+Tue Jan 15 01:11:44 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): method defined? check should honor
+ protected too.
+
+Mon Jan 14 13:06:02 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): should not pass tainted block, if $SAFE > 0.
+
+Sun Jan 13 09:31:41 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * variable.c (rb_mod_remove_cvar): should pass the char*.
+
+Fri Jan 11 05:06:25 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * class.c (rb_make_metaclass): [new]
+
+ * class.c (rb_define_class_id): use rb_make_metaclass(), don't
+ call Class#inherited hook.
+
+ * class.c (rb_class_inherited): [new]
+
+ * class.c (rb_define_class): call Class#inherited hook here.
+
+ * class.c (rb_define_class_under): ditto after class path is set.
+
+ * class.c (rb_singleton_class): use rb_make_metaclass().
+
+ * eval.c (rb_eval): same as rb_define_class_under().
+
+ * intern.h: prototypes of rb_make_metaclass() and
+ rb_class_inherited().
+
+ * object.c (rb_class_s_new): use rb_make_metaclass() and
+ rb_class_inherited().
+
+ * object.c (Init_Object): use rb_make_metaclass().
+
+ * struct.c (make_struct): use rb_class_inherited().
+
+Thu Jan 10 19:15:15 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_add_method): should clear cache by id always.
+
+ * eval.c (rb_disable_super): no longer need to clear cache before
+ rb_add_method().
+
+ * eval.c (rb_export_method): ditto.
+
+ * eval.c (rb_attr): ditto.
+
+ * eval.c (rb_undef): ditto.
+
+ * eval.c (rb_eval): ditto.
+
+ * eval.c (rb_mod_modfunc): ditto.
+
+ * eval.c (rb_mod_define_method): ditto.
+
+Thu Jan 10 11:42:47 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/resource.rb: Modify copyright in resource script.
+
+Thu Jan 10 07:15:44 2002 takuma ozawa <metal@mine.ne.jp>
+
+ * re.c (match_select): should propagate taintness.
+
+Thu Jan 10 00:54:57 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_set_default): Hash#default= should return the
+ new value.
+
+Wed Jan 9 20:21:09 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * misc/ruby-mode.el (ruby-calculate-indent): indentation after
+ comment at beginning of buffer failed.
+
+ * misc/ruby-mode.el (font-lock-defaults): unless XEmacs, set
+ font-lock variables in ruby-mode-hook.
+
+Tue Jan 8 15:56:20 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_to_i): accepts optional base argument. [new]
+
+ * numeric.c (rb_fix2str): should not handle negative fixnum values
+ int32 via calling sprintf() directly.
+
+Tue Jan 8 15:54:02 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_add_method): clear replaced method from the cache.
+
+Mon Jan 7 12:38:47 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb (Time#xmlschema): new optional argument
+ fractional_seconds to specify a number of digits of
+ fractional part of the time.
+
+Sat Jan 5 13:18:11 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * range.c (range_member): beginning check was
+ wrong. [ruby-talk:30252]
+
+Sat Jan 5 03:07:34 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_new2): NULL pointer check added.
+
+Sat Jan 5 00:19:12 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (yycompile): strdup()'ed twice.
+
+Fri Jan 4 18:29:10 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * class.c (rb_define_module_under): should locate predefined
+ module using rb_const_defined_at().
+
+Fri Jan 4 17:23:49 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * misc/ruby-mode.el (ruby-forward-string): forward a string. [new]
+
+ * misc/ruby-mode.el (ruby-parse-region): handle nested parentheses
+ in a string and terminators in #{}.
+
+ * misc/ruby-mode.el (ruby-calculate-indent): ditto.
+
+Wed Jan 2 23:34:25 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): add -I. to CPPFLAGS.
+
+ * lib/mkmf.rb (create_makefile): srcdir support(.def and depend file).
+
+Wed Jan 2 11:51:56 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_system): abandon vfork.
+
+ * io.c (pipe_open): ditto.
+
+Tue Jan 1 02:16:48 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/curses/extconf.rb: add dir_config.
+
+ * Makefile.in (fake.rb): set RUBY_VERSION.
+
+Mon Dec 31 14:20:46 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (yycompile): always store copy of filename.
+
+ * parse.y (rb_compile_file): no longer need to strdup() here.
+
+Mon Dec 31 05:26:40 2001 Ferris McCormick <fmccor@inforead.com>
+
+ * defines.h: sparc linux needs different FLUSH_REGISTER_WINDOWS
+
+Mon Dec 31 04:27:28 2001 Minero Aoki <aamine@mx.edit.ne.jp>
+
+ * lib/net/protocol.rb: Protocol#start returns the return value of
+ block.
+
+ * lib/net/protocol.rb: set timeout limit by default.
+
+ * lib/net/protocol.rb: new methods WriteAdapter#write, puts,
+ print, printf.
+
+ * lib/net/http.rb: rename HTTP#get2 to request_get, post2 to
+ request_post ...
+
+ * lib/net/smtp.rb: should not resolve HELO domain automatically.
+
+Sun Dec 30 00:59:16 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb (have_library): accept -lm
+ unconditionally on mswin32/mingw32.
+
+Sat Dec 29 01:55:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_search): abandon stclass optimization.
+
+Fri Dec 28 14:39:05 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_cmpint): fixed typo.
+
+Thu Dec 27 18:43:04 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * bignum.c (rb_cstr2inum): deny "0_".
+
+Thu Dec 27 01:54:02 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * bignum.c (rb_cstr2inum): allow "0\n" and so on.
+
+Wed Dec 26 19:24:21 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_invalid_str): utility function to show inspect()'ed
+ string.
+
+ * bignum.c (rb_cstr2inum): prints invalid strings in inspect()'ed
+ format.
+
+ * object.c (rb_Float): ditto.
+
+Wed Dec 26 02:41:29 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_convert_type): no longer use rb_rescue().
+
+Tue Dec 25 18:32:16 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * re.c (rb_reg_search): initialize taint status of match object.
+
+Tue Dec 25 02:37:49 2001 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb, lib/prettyprint.rb: new files.
+
+Tue Dec 25 02:11:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_convert_type): check method response check before
+ invoking rb_rescue().
+
+ * object.c (rb_check_convert_type): ditto.
+
+Mon Dec 24 02:37:40 2001 Le Wang <lewang@bigfoot.com>
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords):
+ fix font-lock problem [ruby-talk:29296].
+
+Sat Dec 22 22:52:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_timeval): wrong cast to time_t.
+
+ * time.c (time_plus): ditto.
+
+Fri Dec 21 20:33:34 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * parse.y (str_extend): make up "#$;" handling.
+
+Fri Dec 21 16:18:17 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * dln.h, ruby.h, util.h: enable prototypes in C++.
+
+Fri Dec 21 15:12:41 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_plus): result should not be negative unless
+ NEGATIVE_TIME_T is defined.
+
+ * time.c (time_new_internal): should check tv_sec overflow too.
+
+ * time.c (time_timeval): should check time_t range when time is
+ initialized from float.
+
+ * time.c (time_plus): uses modf(3).
+
+Fri Dec 21 03:15:52 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_mod_define_method): must not convert Method to Proc.
+
+Fri Dec 21 01:17:57 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb (with_destdir): new.
+
+ * lib/mkmf.rb: prefix target directories with $(DESTDIR) all.
+
+ * lib/mkmf.rb: no need to mkdir $(libdir)
+
+Thu Dec 20 14:08:20 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: rename Net::Socket to Net::BufferedSocket
+
+Thu Dec 20 13:51:52 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * variable.c (rb_cvar_set): add frozen class/module check.
+
+ * variable.c (rb_cvar_declare): add frozen class/module check.
+
+Thu Dec 20 01:01:50 2001 takuma ozawa <metal@mine.ne.jp>
+
+ * re.c (match_to_a): should propagate taint.
+
+ * re.c (rb_reg_s_quote): ditto.
+
+Wed Dec 19 16:58:29 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c: new methods
+ Readline::basic_word_break_characters,
+ Readline::basic_word_break_characters=,
+ Readline::completer_word_break_characters,
+ Readline::completer_word_break_characters=,
+ Readline::basic_quote_characters,
+ Readline::basic_quote_characters=,
+ Readline::completer_quote_characters,
+ Readline::completer_quote_characters=,
+ Readline::filename_quote_characters,
+ Readline::filename_quote_characters=.
+
+Wed Dec 19 14:05:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_define_method): define_method should follow
+ default method visibility.
+
+ * eval.c (rb_attr): should warn if the default method visibility
+ is "module_function" (can be error).
+
+ * eval.c (rb_mod_define_method): should define class/module method
+ also if the visibility is "module_function".
+
+ * eval.c (rb_mod_define_method): should call hook method
+ "method_added", and "singleton_method_added".
+
+Wed Dec 19 11:42:13 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * string.c: use RESIZE_CAPA for capacity change.
+
+Wed Dec 19 03:08:40 2001 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb: date.rb is not required anymore.
+
+ * lib/resolv.rb: fix document. refine IPv6 regex.
+
+Tue Dec 18 23:24:53 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (Init_socket): add listen method to
+ TCPServer and UNIXServer.
+
+Tue Dec 18 17:54:53 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * sample/test.rb: Hash#indexes -> Hash#select.
+
+Tue Dec 18 01:02:13 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): should not select a thread which is
+ not yet initialized.
+
+Mon Dec 17 18:53:49 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * string.c (rb_str_replace): swap arguments of OBJ_INFECT.
+
+Mon Dec 17 16:52:20 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * intern.h: add prototypes.
+ rb_gc_enable(), rb_gc_disable(), rb_gc_start(), rb_str_new5()
+ rb_str_buf_append(), rb_str_buf_cat(), rb_str_buf_cat2(),
+ rb_str_dup_frozen()
+
+ * ruby.h: added declaration.
+ rb_defout, rb_stdin, rb_stdout, rb_stderr, ruby_errinfo
+
+ * rubyio.h: changed double include guard macro to RUBYIO_H.
+
+ * array.c (inspect_call): make static.
+
+ * eval.c (dvar_asgn): ditto.
+
+ * io.c (rb_io_close_read): ditto.
+
+ * lex.c (rb_reserved_word): ditto.
+
+ * ruby.c: (req_list_head, req_list_last): ditto.
+
+ * ruby.c (require_libraries): ditto.
+
+Mon Dec 17 15:41:24 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_plus): wrong boundary check.
+
+ * time.c (time_minus): ditto.
+
+Mon Dec 17 15:19:32 2001 Tanaka Akira <akr@m17n.org>
+
+ * time.c: new method `gmtoff', `gmt_offset' and `utc_offset'.
+ (time_utc_offset): new function.
+ (Init_Time): bind above methods to `time_utc_offset'.
+
+ * time.c: 64bit time_t support.
+ (time_s_at): use NUM2LONG instead of NUM2INT for tv_sec.
+ (time_arg): initialize tm_isdst correctly.
+ use long to initialize tm_year.
+ (search_time_t): renamed from `make_time_t'.
+ (make_time_t): call `timegm' and `mktime' instead of `search_time_t'
+ if available.
+ (time_to_i): use LONG2NUM instead of INT2NUM.
+ (time_localtime): check localtime failure.
+ (time_gmtime): check gmtime failure.
+ (time_year): use LONG2NUM instead of INT2FIX.
+ (time_to_a): use long for tm_year.
+ (time_dump): check tm_year which is not representable with 17bit.
+ (time_load): initialize tm_isdst.
+
+ * configure.in: check existence of `mktime' and `timegm'.
+ check existence of tm_gmtoff field of struct tm.
+ fix negative time_t for 64bit time_t.
+
+ * missing/strftime.c: fix overflow by tm_year + 1900.
+
+ * lib/time.rb: use Time#utc_offset.
+
+Mon Dec 17 00:02:04 2001 Guy Decoux <ts@moulon.inra.fr>
+
+ * variable.c (find_class_path): should initialize iv_tbl if it's
+ NULL.
+
+Fri Dec 14 04:23:36 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: new method Net::POP3.APOP
+
+ * lib/net/http.rb: set default Content-Type to
+ x-www-form-urlencoded (causes warning)
+
+ * lib/net/protocol.rb: remove Net::NetPrivate module.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/http.rb: ditto.
+
+Fri Dec 14 00:16:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_define_class): should return the existing class if
+ the class is already defined and its superclass is identical to
+ the specified superclass.
+
+ * class.c (rb_define_class_under): ditto.
+
+ * class.c (rb_define_module): should return the existing module if
+ the module is already defined.
+
+Thu Dec 13 09:52:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_new_internal): avoid loop to calculate negative
+ div, mod.
+
+ * time.c (time_cmp): should handle Bignums.
+
+Tue Dec 11 17:39:16 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * array.c (rb_ary_pop): should ELTS_SHARED flag check before
+ REALLOC.
+
+Tue Dec 11 12:45:28 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_match_m): should convert an argument into
+ regexp if it's a string.
+
+Tue Dec 11 03:40:23 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_select): Array#select(n,m,...) now works like
+ Array#indexes(n,m,..). [new, experimental]
+
+ * hash.c (rb_hash_select): ditto.
+
+ * hash.c (env_select): ditto.
+
+ * re.c (match_select): ditto.
+
+ * struct.c (rb_struct_select): ditto.
+
+Tue Dec 11 03:17:19 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * object.c (rb_class_real): follow included modules.
+
+Mon Dec 10 23:37:51 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * util.h: change prototype of ruby_qsort() to accord with its
+ definition.
+
+Mon Dec 10 20:30:01 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * gc.c (STR_ASSOC): use FL_USER3 instead of FL_USER2.
+
+Mon Dec 10 17:40:02 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * parse.y (str_extend): make up pushback call.
+
+Mon Dec 10 02:09:28 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_modify): should copy the internal buffer if the
+ modifying buffer is shared.
+
+ * array.c (ary_make_shared): make an internal buffer of an array
+ to be shared.
+
+ * array.c (rb_ary_shift): avoid sliding an internal buffer by
+ using shared buffer.
+
+ * array.c (rb_ary_subseq): avoid copying the buffer.
+
+Mon Dec 10 01:06:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (gettable): should freeze __FILE__ string.
+
+Sun Dec 9 18:06:26 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: calls on_connect before conn_command
+
+Sat Dec 8 23:27:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_puts): old behavior restored. rationale: a) if you
+ want to call to_s for arrays, you can just call print a, "\n".
+ b) to_s wastes memory if array (and sum of its contents) is
+ huge. c) now any object that has to_ary is treated as an array,
+ using rb_check_convert_type().
+
+Sat Dec 8 22:40:38 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_initialize): now accepts a block to calculate
+ the default value. [new]
+
+ * hash.c (rb_hash_aref): call "default" method to get the value
+ corresponding to the non existing key.
+
+ * hash.c (rb_hash_default): get the default value based on the
+ block given to 'new'. Now it takes an optional "key" argument.
+ "default" became the method to get the value for non existing
+ key. Users may override "default" method to change the hash
+ behavior.
+
+ * hash.c (rb_hash_set_default): clear the flag if a block is given
+ to 'new'
+
+Sat Dec 8 02:29:54 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): undef Data.allocate, left Data.new.
+
+Fri Dec 7 19:12:14 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: SMTP.new requires at least one arg.
+
+ * lib/net/pop.rb: POP.new requires at least one arg.
+
+ * lib/net/pop.rb: uses "raise *Error.new" instead of simple raise.
+
+ * lib/net/http.rb: HTTP.new requires at least one arg.
+
+ * lib/net/http.rb: changes implicit start algorithm.
+
+Fri Dec 7 15:49:39 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/extmk.rb.in: ignore adding -Wl,-R to DLDFLAGS when the directory
+ is $topdir.
+
+Fri Dec 7 13:58:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (window_scrollok): use RTEST().
+
+ * ext/curses/curses.c (window_idlok): ditto.
+
+ * ext/curses/curses.c (window_keypad): ditto.
+
+ * ext/curses/curses.c (window_idlok): idlok() may return void on
+ some platforms; so don't use return value.
+
+ * ext/curses/curses.c (window_scrollok): ditto for consistency.
+
+ * ext/curses/curses.c: replace FIX2INT() by typechecking NUM2INT().
+
+Fri Dec 7 09:51:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (str_extend): should not process immature #$x and
+ #@x interpolation, e.g #@#@ etc.
+
+Fri Dec 7 03:21:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_sort_by): sort_by does not have to be stable always.
+
+ * enum.c (enum_sort_by): call qsort directly to gain performance.
+
+Thu Dec 6 18:52:28 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/extmk.rb.in: add -Wl,-R flags to DLDFLAGS on netbsdelf.
+
+ * lib/mkmf.rb: ditto.
+
+Thu Dec 6 09:15:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_qsort): ruby_qsort(qs6) is now native thread safe.
+
+ * error.c (rb_sys_fail): it must be a bug if it's called when
+ errno == 0.
+
+Wed Dec 5 23:36:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (WC2MBC1ST): should not pass through > 0x80 number in UTF-8.
+
+Wed Dec 5 20:05:18 2001 Florian Frank <flori@ping.de>
+
+ * ext/socket/socket.c (bsock_send): should raise EWOULDBLOCK
+ exception.
+
+ * ext/socket/socket.c (s_recvfrom): ditto.
+
+ * ext/socket/socket.c (s_accept): ditto.
+
+ * ext/socket/socket.c (udp_send): ditto.
+
+Tue Dec 4 17:43:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (DUPSETUP): new SETUP macro for duplication.
+
+ * time.c (time_dup): implement in Time class using DUPSETUP.
+
+ * time.c (time_getlocaltime): new method; probably requires
+ better name than getlocaltime. [new,experimental]
+
+ * time.c (time_getgmtime): ditto.
+
+ * array.c (rb_ary_dup): uses DUPSETUP.
+
+ * string.c (rb_str_dup): uses DUPSETUP. now properly copies
+ instance variables too.
+
+Tue Dec 4 03:49:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fread): EAGAIN/EWOULDBLOCK should not terminate and
+ throw away the input.
+
+ * time.c (time_new_internal): underflow adjustment must not use
+ negative div/mod.
+
+ * time.c (time_cmp): should consider tv_usec on non Fixnum number
+ comparison.
+Sun Dec 9 23:00:54 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * matrix.rb: Vector#* bug. reported from Massimiliano Mirra
+ <info@chromatic-harp.com>.
+
+Sun Dec 9 22:15:59 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * enum.c (enum_sort_by): should replace with last elements.
+
+Mon Dec 3 16:06:57 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/extconf.rb: remove -L/usr/local/lib.
+
+ * configure.in: add -Wl,-export-dynamic on NetBSD.
+
+Mon Dec 3 16:04:16 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * configure.in: not use X11BASE, since it's not always set.
+
+Mon Dec 3 13:53:49 2001 Tanaka Akira <akr@m17n.org>
+
+ * time.c (rb_strftime): buffer length condition was wrong.
+
+ * time.c (time_strftime): should backup buf to the original
+ buffer.
+
+Mon Dec 3 09:59:08 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_plus): must detect result overflow.
+
+ * time.c (time_minus): ditto.
+
+ * time.c (time_new_internal): round usec overflow and underflow
+ here.
+
+ * time.c (time_plus): move operand overflow/underflow check to
+ time_new_internal().
+
+ * time.c (time_minus): ditto.
+
+ * time.c (time_cmp): should consider tv_usec too.
+
+Mon Dec 3 03:32:22 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * configure.in: apply patch from NetBSD's pkgsrc (patch-aa).
+
+Sun Dec 2 22:01:52 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: use GCC, not without_gcc. remove without_gcc.
+
+ * ext/curses/extconf.rb: check for curses.h.
+
+ * ext/dbm/extconf.rb: check if $CFLAGS includes DBM_HDR.
+
+Sat Dec 1 12:13:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_gmtime): time_modify() should be called even if tm
+ struct is not calculated yet.
+
+Fri Nov 30 17:02:55 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set target_cpu to i386 on cygwin and mingw32.
+
+ * configure.in: default --enable-shared to yes on cygwin and mingw32.
+
+Fri Nov 30 00:25:28 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * README.EXT: Appendix B is duplicated.
+
+ * README.EXT.ja: ditto.
+
+Thu Nov 29 00:28:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_equal): object with to_str must be treated as a
+ string.
+
+Wed Nov 28 18:46:28 2001 Ville Mattila <mulperi@iki.fi>
+
+ * eval.c (rb_thread_select): should subtract timeofday() from
+ limit, not reverse.
+
+Wed Nov 28 16:03:28 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * util.c (scan_hex): x is not a hexadecimal digit.
+
+Wed Nov 28 13:38:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): should treat the case that
+ select(2) returns 0, if a thread is under both WAIT_SELECT and
+ WAIT_TIME. Jakub Travnik <J.Travnik@sh.cvut.cz> actually fixed
+ this bug.
+
+Tue Nov 27 02:15:25 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_float): must distinguish -0.0 from 0.0.
+
+Mon Nov 26 20:57:24 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Setup*, ext/syslog/*: import the "syslog" module from the
+ rough ruby project.
+
+Mon Nov 26 16:14:42 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * gc.c (gc_mark_all): tweak mark order for little bit better scan.
+
+ * gc.c (rb_gc_mark): ditto.
+
+ * gc.c (rb_gc): ditto.
+
+Mon Nov 26 16:54:59 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (mypopen): fixed that mypclose() didn't really close
+ pipe.
+
+ * win32/win32.c (CreateChild): set STARTF_USESTDHANDLES flag only
+ when some handles are passed.
+
+Mon Nov 26 16:31:28 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (sort_by_i): slight performance boost.
+
+Sun Nov 25 21:02:18 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * parse.y (str_extend): change types of second and third arguments
+ from char to int.
+
+Thu Nov 22 20:15:28 2001 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
+
+ * gc.c (gc_mark_rest): should call gc_mark_children(), not gc_mark().
+
+ * gc.c (rb_gc_mark): may cause infinite loop.
+
+Thu Nov 22 00:28:13 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (str_extend): should check nesting parentheses in #{}.
+
+Wed Nov 21 12:22:52 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi.rb: CGI#header: do not set Apache.request.status for
+ Location: if Apache.request.status is already set.
+
+Wed Nov 21 02:24:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (pst_wstopsig): returns nil unless WIFSTOPPED() is
+ non-zero.
+
+ * process.c (pst_wtermsig): returns nil unless WIFSIGNALED() is
+ non-zero.
+
+ * process.c (pst_wexitstatus): returns nil unless WIFEXITED() is
+ non-zero.
+
+Wed Nov 21 00:17:54 2001 Ville Mattila <mulperi@iki.fi>
+
+ * eval.c (rb_thread_select): tv_sec and tv_usec should not be
+ negative.
+
+ * signal.c (posix_signal): do not set SA_RESTART for SIGVTALRM.
+
+Tue Nov 20 21:09:22 2001 Guy Decoux <ts@moulon.inra.fr>
+
+ * parse.y (call_args2): block_arg may follow the first argument in
+ call_args2.
+
+Tue Nov 20 02:01:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (stack_check): should avoid stack length check during
+ raising SystemStackError exception.
+
+Tue Nov 20 01:07:13 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (str_extend): should not terminate string interpolation
+ with newlines in here-docs and newline terminated strings.
+
+Mon Nov 19 17:58:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_modfunc): should follow NODE_ZSUPER link; based
+ on Guy Decoux's patch in [ruby-talk:25478].
+
+Mon Nov 19 16:09:33 2001 Tanaka Akira <akr@m17n.org>
+
+ * string.c (rb_str_succ): there was buffer overrun.
+
+Mon Nov 19 14:14:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (str_extend): term can be any character.
+
+Mon Nov 19 04:58:42 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb (header): support for Apache. thanks to
+ Shugo Maeda <shugo@ruby-lang.org>.
+
+Sun Nov 18 19:37:55 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y: needless conditionals.
+
+ * parse.y (parse_regx): parse error at unterminated regex /#{.
+ (ruby-bugs-ja:PR#142)
+
+Sat Nov 17 12:37:39 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): should give length to utf8_to_uv().
+
+ * pack.c (utf8_to_uv): add length check.
+
+Sat Nov 17 01:41:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * massages: replace "wrong #" by "wrong number".
+
+ * marshal.c (w_float): output Infinity and NaN explicitly.
+
+ * marshal.c (r_object): support new explicit float format.
+
+ * eval.c (rb_thread_wait_for): select may cause ERESTART on
+ Solaris.
+
+ * eval.c (rb_thread_select): ditto.
+
+Thu Nov 15 15:29:39 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_ary_join): non-nil separator must be converted to
+ String. and separators' total length was wrong.
+
+Thu Nov 15 03:37:17 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * hash.c (ruby_setenv): remove USE_WIN32_RTL_ENV block since it's
+ obsoleted.
+
+ * win32/win32.c, win32/win32.h: sort out #if 0 - #endif or others.
+
+Thu Nov 15 00:07:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_to_s): if rb_output_fs is nil, insert newlines
+ between array elements (use rb_default_rs as newline literal)
+ [experimental].
+
+Wed Nov 14 15:16:23 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * gc.c (init_mark_stack): no need to clear mark_stack.
+
+ * gc.c (gc_mark_all): need to handle finalizer mark.
+
+ * gc.c (gc_mark_rest): use MEMCPY instead of memcpy.
+
+ * gc.c (rb_gc_mark): earlier const check to avoid pusing special
+ constants into mark stack.
+
+Wed Nov 14 01:12:07 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (waitpid): fix wait count.
+
+ * win32/win32.c (poll_child_status): rename from wait_child().
+
+Wed Nov 14 01:33:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_to_s): 'to_s' now takes optional argument to
+ specify radix. [new]
+
+ * bignum.c (rb_big_to_s): ditto. [new]
+
+Tue Nov 13 19:50:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: do not override CC if set.
+
+Tue Nov 13 16:49:16 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (mypopen): return error status instead of calling
+ rb_sys_fail().
+
+ * win32/win32.c (do_spawn): ditto.
+
+Tue Nov 13 14:39:11 2001 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * signal.c (sighandle): should not re-register sighandler if
+ POSIX_SIGNAL is defined.
+
+Tue Nov 13 12:55:59 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (do_spawn): use CreateChild() instead of calling
+ CreateProcess() directly. Original patches comes from Patrick Cheng.
+
+ * win32/win32.c (mypopen): ditto.
+
+ * win32/win32.c (mypclose): use rb_syswait() instead of waiting in this
+ function.
+
+ * win32/win32.c (waitpid): use wait_child() instead of _cwait().
+
+ * win32/win32.c (CreateChild): added. [new]
+
+ * win32/win32.c (wait_child): added. [new]
+
+ * win32/win32.c (FindFirstChildSlot): added. [new]
+
+ * win32/win32.c (FindChildSlot): added. [new]
+
+ * win32/win32.c (FindPipedChildSlot): added. [new]
+
+ * win32/win32.c (CloseChildHandle): added. [new]
+
+ * win32/win32.c (FindFreeChildSlot): added. [new]
+
+Tue Nov 13 12:38:12 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * hash.c (envix): use GET_ENVIRON and FREE_ENVIRON to get environment
+ variables list.
+
+ * hash.c (env_keys): ditto.
+
+ * hash.c (env_each_key): ditto.
+
+ * hash.c (env_values): ditto.
+
+ * hash.c (env_keys): ditto.
+
+ * hash.c (env_each_value): ditto.
+
+ * hash.c (env_each): ditto.
+
+ * hash.c (env_inspect): ditto.
+
+ * hash.c (env_to_a): ditto.
+
+ * hash.c (env_size): ditto.
+
+ * hash.c (env_empty_p): ditto.
+
+ * hash.c (env_has_value): ditto.
+
+ * hash.c (env_index): ditto.
+
+ * hash.c (env_to_hash): ditto.
+
+ * win32/win32.c (win32_getenv): use static buffer.
+
+ * win32/win32.c, win32/win32.h (win32_get_environ): get environment
+ variables list. [new]
+
+ * win32/win32.c, win32/win32.h (win32_free_environ): free environment
+ variables list. [new]
+
+Mon Nov 12 16:48:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_print): errat array may be empty.
+
+Mon Nov 12 01:30:37 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval_cmd): should not upgrade safe level unless
+ explicitly specified by argument newly added.
+
+ * signal.c (sig_trap): should not allow tainted trap closure.
+
+ * variable.c (rb_f_trace_var): should not allow trace_var on safe
+ level higher than 3.
+
+ * variable.c (rb_f_trace_var): should not allow tainted trace
+ closure.
+
+Sun Nov 11 00:12:23 2001 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
+
+ * gc.c: do not use static stack until system stack overflows.
+
+Sat Nov 10 03:57:09 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): should call Exception#exception instead of
+ calling rb_exc_new3() directly.
+
+ * error.c (exc_exception): set "mesg" directly to the clone. it
+ might be better to set mesg via some method for flexibility.
+
+Sat Nov 10 00:14:24 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (cvar_override_check): should print original module
+ name, if 'a' is T_ICLASS.
+
+ * parse.y (yylex): float '1_.0' should not be allowed.
+
+ * variable.c (var_getter): should care about var as Qfalse
+ (ruby-bugs#PR199).
+
+Fri Nov 9 13:50:06 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/config.status.in: make CFLAGS same as Makefile's one.
+
+Thu Nov 8 20:20:37 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_trap_eval): avoid annoying warning with signal.
+ [ruby-talk:23225]
+
+ * eval.c (rb_call0): adjust caller source file/line while
+ evaluating optional arguments.
+
+Thu Nov 8 18:41:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (cmpint): <=> or block for {min,max} may return bignum.
+
+ * array.c (sort_1): use rb_compint.
+
+ * array.c (sort_2): ditto.
+
+ * enum.c (min_ii): ditto.
+
+ * enum.c (min_ii): ditto.
+
+ * enum.c (max_i): ditto.
+
+ * enum.c (max_ii): ditto.
+
+Thu Nov 8 18:21:02 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (path_check_1): forgot to initialize 'p'.
+
+Thu Nov 8 14:52:15 2001 Tanaka Akira <akr@m17n.org>
+
+ * mkconfig.rb: use String#dump to generate Ruby string literal.
+
+Thu Nov 8 15:46:54 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eql): should override 'eql?'
+
+ * array.c (rb_ary_hash): should override 'hash' too.
+
+Tue Nov 6 14:38:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (security): always give warning for insecure PATH.
+
+ * dir.c (my_getcwd): do not rely on MAXPATHLEN.
+
+ * file.c (rb_file_s_readlink): ditto.
+
+ * file.c (path_check_1): ditto.
+
+Tue Nov 6 14:17:14 2001 Amos Gouaux <amos+ruby@utdallas.edu>
+
+ * lib/net/imap.rb (getquota_response): use astring for mailbox
+ names.
+
+ * lib/net/imap.rb (getacl_response): ditto.
+
+Mon Nov 5 17:09:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): should not call rb_f_block_given_p().
+
+Sat Nov 3 23:33:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): should terminate string by NUL.
+
+Sat Nov 3 22:28:51 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * matrix.rb (Matrix#column_vectors, Matrix#row_vectors): ditto bug.
+ this bug report and fix by tsutomu@nucba.ac.jp.
+
+ * forwardable.rb: change raise to Kernel::raise
+
+Sat Nov 3 10:11:57 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): better error message.
+
+Thu Nov 1 14:08:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_aref): idx may be a Bignum.
+
+ * numeric.c (fix_aref): negative index must return zero.
+
+Thu Nov 1 13:23:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark_children): should NOT treat last element of
+ structs and arrays specially.
+
+Wed Oct 31 16:59:25 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (exec_under): should initialize ruby_frame->self;
+
+Wed Oct 31 15:09:28 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (POP_VARS): should not set DVAR_DONT_RECYCLE if _old
+ ruby_vars is already force_recycled.
+
+Wed Oct 31 10:28:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc): handles mark stack overflow.
+
+ * gc.c (PUSH_MARK): use static mark stack, no more recursion.
+
+Wed Oct 31 02:44:06 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: CGI::Cookie::parse(): Ignore duplicate keys caused by
+ Netscape bug.
+
+Tue Oct 30 18:21:51 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/mkexports.rb: follow the change of rb_io_puts().
+
+Tue Oct 30 14:04:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): do smart chomp if $/ == '\n'. [new]
+
+ * io.c (rb_io_puts): don't treat Array specially.
+
+ * bignum.c (rb_big_cmp): should convert bignum to float.
+
+ * eval.c (rb_f_eval): can't modify untainted binding.
+
+Mon Oct 29 16:08:30 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should preserve p0 value.
+
+Mon Oct 29 14:56:44 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * intern.h (rb_protect_inspect): follow the change of array.c.
+
+ * eval.c (rb_exec_end_proc): follow the change of rb_protect().
+
+ * eval.c (method_proc, umethod_proc, rb_catch): cast the first
+ parameter of rb_iterate() to avoid VC++ warning.
+
+ * range.c (range_step): ditto.
+
+ * ext/sdbm/init.c (fsdbm_update, fsdbm_replace): ditto.
+
+Mon Oct 29 07:57:31 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (str_extend): should allow interpolation of $-x.
+
+ * variable.c (rb_cvar_set): empty iv_tbl may cause infinite loop.
+
+ * variable.c (rb_cvar_get): ditto.
+
+ * variable.c (cvar_override_check): ditto.
+
+Sat Oct 27 23:01:19 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_eq): convert Bignum to Float, instead of
+ reverse.
+
+Fri Oct 26 06:19:29 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_localtime): getting tm should not be prohibited for
+ frozen time objects.
+
+ * time.c (time_gmtime): ditto.
+
+ * version.c (Init_version): freeze RUBY_VERSION,
+ RUBY_RELEASE_DATE, and RUBY_PLATFORM.
+
+ * file.c (Init_File): freeze File::SEPARATOR, ALT_SEPARATOR and
+ PATH_SEPARATOR.
+
+ * file.c (rb_stat_cmp): should check operand type before calling
+ get_stat().
+
+Thu Oct 25 10:28:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval_cmd): should not invoke "call" with a block on
+ any occasion.
+
+Wed Oct 24 03:25:31 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_aref): idx may be a Bignum.
+
+Tue Oct 23 01:21:19 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (proc_invoke): fix self switching in Proc#call
+ (ruby-bugs-ja#PR108) and GC failure. use Qundef instead of 0
+ to direct not switching self.
+
+ * eval.c (call_trace_func): ditto.
+
+ * eval.c (call_end_proc): ditto.
+
+ * eval.c (proc_call): ditto.
+
+ * eval.c (proc_yield): ditto.
+
+Tue Oct 23 01:15:43 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * variable.c (rb_global_entry): reconstruct global variable
+ aliasing (sharing global_entry->var with other global_entry).
+
+ * variable.c (undef_getter): ditto.
+
+ * variable.c (undef_setter): ditto.
+
+ * variable.c (val_setter): ditto.
+
+ * variable.c (mark_global_entry): ditto.
+
+ * variable.c (rb_define_hooked_variable): ditto.
+
+ * variable.c (rb_f_trace_var): ditto.
+
+ * variable.c (remove_trace): ditto.
+
+ * variable.c (rb_f_untrace_var): ditto.
+
+ * variable.c (rb_gvar_get): ditto.
+
+ * variable.c (trace_en): ditto.
+
+ * variable.c (rb_gvar_set): ditto.
+
+ * variable.c (rb_gvar_defined): ditto.
+
+ * variable.c (rb_alias_variable): ditto.
+
+Mon Oct 22 18:53:55 2001 Masahiro Tanaka <masa@stars.gsfc.nasa.gov>
+
+ * numeric.c (num_remainder): a bug in Numeric#remainder.
+
+Mon Oct 22 15:21:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_exec_end_proc): END might be called within END
+ block.
+
+ * class.c (rb_mod_clone): should not copy class name, since clone
+ should remain anonymous.
+
+Fri Oct 19 23:40:37 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * variable.c (remove_trace): should not access already freed area.
+
+ * variable.c (rb_f_untrace_var): fix memory leak.
+
+Fri Oct 19 17:55:14 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * marshal.c (w_uclass): cloned class is not user
+ class. (ruby-bugs-ja#PR103)
+
+ * marshal.c (r_object): Struct subclass couldn't
+ load. (ruby-bugs-ja#PR104)
+
+Wed Oct 17 14:12:50 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * variable.c (alias_fixup): added. ad hoc support for ordinary
+ global variable aliasing. when original entry is set, make the
+ alias to refer directly as possible.
+
+ * variable.c (alias_getter, alias_setter): ditto.
+
+ * variable.c (rb_alias_variable): ditto. and no need to mark alias
+ variables.
+
+ * variable.c (rb_gvar_defined): refer the original entry of an alias.
+
+Tue Oct 16 23:29:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): self in a block given to define_method now be
+ switched to the receiver of the method.
+
+ * eval.c (proc_invoke): added new parameter to allow self
+ switching.
+
+Tue Oct 16 21:38:15 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_f_missing): check stack level with rb_stack_check().
+
+ * eval.c (rb_call0): ditto.
+
+ * eval.c, intern.h (rb_stack_check): added. [new]
+
+Tue Oct 16 13:18:47 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * object.c (rb_mod_initialize): optional block with
+ Module.new. [new] (from 2001-10-10)
+
+Tue Oct 16 00:07:06 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (yylex): disallow alpha-numeric and mbchar for
+ terminator of %string.
+
+Mon Oct 15 18:00:05 2001 Pit Capitain <pit@capitain.de>
+
+ * string.c (rb_str_index): wrong increment for non alphanumeric
+ string.
+
+Mon Oct 15 05:23:02 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * sprintf.c (rb_f_sprintf): support "%B".
+
+Wed Oct 10 03:11:47 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat_clone): should copy internal data too.
+
+ * numeric.c (num_clone): Numeric should not be copied by clone.
+
+ * object.c (rb_obj_clone): should check immediate values.
+
+ * parse.y (command): `yield' should take command_args.
+
+ * parse.y (parse_quotedwords): %w(...) is not a string.
+
+Tue Oct 9 18:40:35 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * process.c (Init_process): activate the case NT.
+
+Tue Oct 9 17:08:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (thread_status_name): separated from
+ rb_thread_inspect(). return string expression for thread status.
+
+ * eval.c (rb_thread_status, rb_thread_inspect): use
+ thread_status_name().
+
+ * eval.c (rb_thread_priority_set): return the priority not but
+ self.
+
+Sat Oct 6 23:07:08 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): NODE_MATCH3 was confusing left and right. sigh.
+
+Fri Oct 5 15:19:46 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_unique): should not dump anonymous class.
+
+Fri Oct 5 11:59:13 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (proc_s_new): revived.
+
+ * eval.c (Init_Proc): define Proc.new instead of Proc.allocate to
+ inhibit from creating uninitialized Proc.
+
+Thu Oct 4 14:11:03 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): EALREADY is the equivalent
+ for EINPROGRESS in ws2_32.lib.
+
+Wed Oct 3 20:11:06 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * re.c (rb_reg_s_alloc): avoid infinite recursion.
+
+Wed Oct 3 16:49:49 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/gdbm/gdbm.c (rb_gdbm_fetch): str is a VALUE now.
+
+Wed Oct 3 13:32:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object): better allocation type check for
+ TYPE_UCLASS. usage of allocation framework is disabled for now.
+
+ * variable.c (rb_class_path): Module may have subclass.
+
+ * string.c (rb_str_update): should maintain original negative
+ offset.
+
+ * string.c (rb_str_subpat_set): ditto
+
+ * string.c (rb_str_aset): ditto.
+
+ * re.c (rb_reg_nth_match): should check negative nth.
+
+ * re.c (rb_reg_nth_defined): ditto.
+
+Tue Oct 2 19:12:47 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftools.rb (catname): allow trailing '/' for the destination.
+
+Tue Oct 2 18:31:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should override existing class.
+
+Tue Oct 2 17:08:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_alloc): general instance allocation framework.
+ use of NEWOBJ() is deprecated except within 'allocate' method.
+
+Tue Oct 2 08:04:52 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * marshal.c (r_object): TYPE_UCLASS check should be inversed.
+
+Mon Oct 1 19:18:54 2001 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (unix_addr): getsockname(2) may result len = 0.
+
+ * ext/socket/socket.c (unix_peeraddr): getpeername(2) may result
+ len = 0.
+
+Mon Oct 1 09:59:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_subpat_set): support function for new argument
+ pattern String#[re,offset] = val. [new]
+
+Sat Sep 29 02:30:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (POP_BLOCK): rb_gc_force_recycle() was called too much.
+ Should not be called if SCOPE_DONT_RECYCLE is set.
+
+Wed Sep 26 22:21:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_aref_m): new argument pattern
+ String#[re,offset]. [new]
+
+Wed Sep 26 19:02:39 2001 Guy Decoux <ts@moulon.inra.fr>
+
+ * parse.y: allow 'primary[] = arg'
+
+Tue Sep 25 10:46:42 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (isInternalCmd): check return value of NtMakeCmdVector
+ (Tietew <tietew@tietew.net>'s patch).
+
+Mon Sep 24 00:55:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_substr): should return an instance of
+ receiver's class.
+
+ * string.c (rb_str_succ): ditto.
+
+ * array.c (rb_ary_subseq): ditto.
+
+ * array.c (rb_ary_initialize): Array.new([1,2,3]) => [1,2,3]. [new]
+
+Sat Sep 22 22:16:08 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_reverse): should return an instance of
+ receiver's class.
+
+ * string.c (rb_str_times): ditto.
+
+ * array.c (rb_ary_times): ditto
+
+ * string.c (str_gsub): ditto.
+
+ * string.c (rb_str_ljust): ditto.
+
+ * string.c (rb_str_rjust): ditto.
+
+ * string.c (rb_str_center): ditto.
+
+Sat Sep 22 12:13:39 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): retrieves file, line information from binding.
+
+Thu Sep 20 21:25:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (MATCH_DATA): access via rb_svar().
+
+Thu Sep 20 15:20:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c, intern.h (rb_svar): return reference to special variable
+ from local variable index. [new]
+
+ * eval.c (rb_eval): use rb_svar() for NODE_FLIP{2,3}.
+
+ * parse.y (rb_(backref|lastline)_(get|set)): access via rb_svar().
+
+ * eval.c (proc_invoke): push dynamic variables.
+
+ * eval.c (rb_thread_yield): push special variables as dynamic
+ variables($_, $~ and FLIP states).
+
+Thu Sep 20 15:20:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * intern.h, parse.y (rb_is_local_id): return true if the ID is
+ local symbol. [new]
+
+ * parse.y (internal_id): make new ID for internal use. [new]
+
+ * parse.y (cond0): allocate internal ID for NODE_FLIP{2,3}.
+
+ * eval.c (rb_f_local_variables): use rb_is_local_id() to select
+ visible local variables.
+
+Thu Sep 20 15:20:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_thread_start_0): SCOPE_SHARED is removed.
+
+ * eval.c, intern.h (rb_thread_scope_shared_p): removed. special
+ variables are no longer shared by threads.
+
+ * re.c (rb_reg_search): MATCHDATA is no longer shared by threads.
+
+Tue Sep 18 11:44:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_init): String.new() => "" [new]
+
+Tue Sep 11 20:53:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_path): new method.
+
+ * dir.c (dir_initialize): wrap DIR into struct, along with path
+ information.
+
+Sat Sep 8 07:13:42 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/net/telnet.rb: waitfor(): improvement. thanks to
+ nobu.nakada@nifty.ne.jp
+
+Sat Sep 8 04:34:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_restore_context): save current value of
+ lastline and lastmatch in the thread struct for later restore.
+
+ * eval.c (rb_thread_save_context): restore lastline and lastmatch.
+
+Fri Sep 7 11:27:56 2001 akira yamada <akira@ruby-lang.org>
+
+ * numeric.c (flo_to_s): should handle negative float value.
+
+Fri Sep 7 09:44:44 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/net/telnet.rb: waitfor(): bug fix.
+
+Fri Sep 7 07:11:34 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: CGI#doctype(): bug fix (html4Fr).
+
+ * lib/net/telnet.rb, lib/cgi.rb: remove VERSION, RELEASE_DATE,
+ VERSION_CODE, RELEASE_CODE. please use REVISION.
+
+ * lib/cgi.rb: CGI#header(): bug fix.
+
+ * lib/net/telnet.rb, lib/cgi.rb: concat --> +=
+
+Thu Sep 6 17:38:18 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * dir.c (dir_s_chdir): raise if environment variable HOME/LOGDIR
+ not set.
+
+ * dir.c (glob_helper): avoid infinite loop on a file name with
+ wildcard characters. (ruby-bugs#PR177)
+
+Thu Sep 6 14:25:15 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_s_hexdigest): remove a debug
+ print.
+
+Thu Sep 6 13:56:14 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_s_digest,
+ rb_digest_base_s_hexdigest): ensure that a string is given.
+
+Thu Sep 6 13:28:51 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/jcode.rb (_regexp_quote): fix quote handling, again.
+
+Thu Sep 6 07:28:56 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_find_file_ext): add const qualifiers to ext.
+
+ * intern.h (rb_find_file_ext): ditto.
+
+Thu Sep 6 07:16:14 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/socket/socket.c (Init_socket): remove duplicating constants.
+
+Thu Sep 6 03:15:24 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): should check whole ancestors to
+ avoid duplicate module inclusion.
+
+Wed Sep 5 20:02:27 2001 Shin'ya Adzumi <adzumi@denpa.org>
+
+ * string.c (trnext): should check backslash before updating "now"
+ position.
+
+Wed Sep 5 17:41:11 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/jcode.rb (_regexp_quote): fix quote handling.
+
+Tue Sep 4 01:03:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (Init_Regexp): to_s to be alias to inspect.
+
+Mon Sep 3 22:46:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): should support 'keyword='.
+
+Mon Sep 3 20:26:08 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * intern.h (rb_find_file_ext): changed from rb_find_file_noext().
+
+Mon Sep 3 15:12:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): should not adjust argc/argv if -e option
+ is supplied.
+
+Mon Sep 3 14:11:17 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * error.c: unbreak the build on *BSD with gcc 3.0.1 by removing
+ the conflicting declaration of sys_nerr for *BSD.
+
+Sat Sep 1 18:50:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): should not alter origargv[].
+
+ * ruby.c (set_arg0): long strings for $0 dumped core.
+
+Sat Sep 1 09:50:54 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ruby.c (set_arg0): prevent SEGV when val is longer than the
+ original arguments.
+
+ * ruby.c (ruby_process_options): initialize total length of
+ original arguments at first.
+
+Sat Sep 1 14:05:28 2001 Brian F. Feldman <green@FreeBSD.org>
+
+ * ruby.c (set_arg0): use setprogtitle() if it's available.
+
+Sat Sep 1 03:49:11 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_popen): accept integer flags as mode.
+
+Fri Aug 31 19:46:05 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_find_file_ext): extension table can be supplied from
+ outside. renamed.
+
+ * eval.c (rb_f_require): replace rb_find_file_noext by
+ rb_find_file_ext.
+
+Fri Aug 31 19:26:55 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_provided): should also check feature without
+ extension.
+
+Fri Aug 31 13:06:33 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_to_s): do not rely on decimal point to be '.'
+
+Wed Aug 29 02:18:53 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): ternary ? can be followed by newline.
+
+Tue Aug 28 00:40:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): should check static linked libraries
+ before raising exception.
+
+Fri Aug 24 15:17:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_equal): check identity equality first.
+
+ * string.c (rb_str_equal): ditto.
+
+ * struct.c (rb_struct_equal): ditto.
+
+Fri Aug 24 14:38:17 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * dln.c (dln_strerror): fix a bug that sometimes made null message on
+ win32 (Tietew <tietew@tietew.net>'s patch).
+
+ * win32/win32.c (mystrerror): ditto.
+
+Fri Aug 24 03:15:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): undef Integer::new.
+
+Fri Aug 24 00:46:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): NODE_WHILE should update result for each
+ conditional evaluation.
+
+ * eval.c (rb_eval): NODE_UNTIL should return last evaluated value
+ (or value given to break).
+
+Thu Aug 23 21:59:38 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * enum.c (sort_by_i): fix typo.
+
+Thu Aug 23 10:10:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): should not dump core for "defined?(())".
+
+ * eval.c (umethod_bind): recv can be an instance of descender of
+ oklass if oklass is a Module.
+
+Wed Aug 22 23:20:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_equal): check identity equality first.
+
+Wed Aug 22 19:58:59 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (intersect_fds): counts intersecting fds.
+
+ * eval.c (rb_thread_schedule): only fds requested by
+ each thread count as select_value.
+
+Tue Aug 21 22:28:09 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (group_member): should check real gid only.
+
+ * file.c (eaccess): do not cache euid, since effective euid may be
+ changed via Process.euid=().
+
+ * file.c (eaccess): return -1 unless every specified access mode
+ is permitted.
+
+Tue Aug 21 16:09:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): while/until returns the value which is given
+ to break.
+
+ * parse.y (value_expr): using while/until/class/def as an
+ expression is now gives a warning, not an error.
+
+Tue Aug 21 11:56:02 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eqq): should compare strings based on magical
+ increment (using String#upto), not dictionary order.
+
+Mon Aug 20 19:53:16 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/digest/sha2/extconf.rb: fix support for cross-compiling.
+
+ * mkconfig.rb: fix support for autoconf 2.52.
+
+Mon Aug 20 17:24:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_sort_by): new method for Schewartzian transformed
+ stable sort.
+
+Mon Aug 20 16:09:05 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (mod_av_set): detect constant overriding for built-in
+ classes/modules.
+
+Mon Aug 20 15:14:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (tokadd_escape): escaped backslashes too much.
+
+Mon Aug 20 13:24:08 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): 'iter' here should be an array.
+
+Mon Aug 20 12:43:08 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): should retrieve __member__ data from
+ non-singleton class.
+
+Sat Aug 18 23:11:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_get): class variable override check added.
+
+ * variable.c (rb_cvar_set): ditto
+
+ * variable.c (rb_cvar_declare): ditto.
+
+Fri Aug 17 12:13:48 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: Protocol.new requires at least one arg.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/http.rb: ditto.
+
+Fri Aug 17 00:49:51 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parse_regx): handle backslash escaping of delimiter here.
+
+Thu Aug 16 23:03:40 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * io.c: prevent recursive malloc calls on NEC UX/4800.
+
+ * ext/socket/socket.c: ditto.
+
+Thu Aug 16 13:54:04 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (s_recvfrom): fix typo.
+
+Thu Aug 16 09:53:28 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (s_recvfrom): avoid VC++6 warning.
+
+Thu Aug 16 03:50:33 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (NtCmdGlob): avoid VC++ warning.
+
+ * lib/mkmf.rb: add -I$(srcdir) to CPPFLAGS.
+
+Wed Aug 15 04:59:15 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/*/extconf.rb: really fix so that they build from any
+ directory.
+
+Wed Aug 15 04:04:02 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/extconf.rb: fix so that they build from any
+ directory.
+
+Wed Aug 15 01:59:19 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/defs.h: Define NO_UINT64_T instead of emitting an
+ error to fail.
+
+ * ext/digest/sha2/extconf.rb: Do not exit on error, and utilize
+ NO_UINT64_T to detect if the system has a 64bit integer type.
+
+Tue Aug 14 21:14:07 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/extconf.rb: do not create Makefile when no 64bit
+ integer type is detected.
+
+Tue Aug 14 17:09:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): new method.
+
+Tue Aug 14 11:49:00 2001 TOYOFUKU Chikanobu <toyofuku@juice.or.jp>
+
+ * string.c (rb_str_cmp): remove needless conditional.
+
+Tue Aug 14 03:23:25 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * string.c (rb_str_lstrip_bang) `return Qnil' was missing.
+
+Mon Aug 13 14:16:46 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * bignum.c, marshal.c: Detypo: s/SIZEOF_ING/SIZEOF_INT/.
+
+Sun Aug 12 15:01:58 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * string.c (rb_str_cat): fix buffer overflow.
+
+ * string.c (rb_str_append): nothing to append actually when `str2'
+ is empty.
+
+Sat Aug 11 14:43:47 2001 Tanaka Akira <akr@m17n.org>
+
+ * array.c (rb_inspecting_p): initialize inspect_key if it is
+ not initialized yet.
+
+Fri Aug 10 22:14:37 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (cond0): operands of logical operators are not treated
+ as conditional expression anymore, but propagate conditional
+ status if used in conditionals.
+
+Tue Aug 7 09:10:32 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.h: fix problems with BC++ (ruby-bugs#PR161).
+
+Mon Aug 6 23:47:46 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * pack.c (pack_pack): associates p/P strings once at last
+ (reverted to 1.26).
+
+ * string.c (rb_str_associate): associates an Array at once, not
+ but a String. realloc's when str_buf.
+
+Mon Aug 6 17:01:33 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_gc_mark_threads): should mark ruby_cref.
+
+Mon Aug 6 14:31:37 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * numeric.c (num_divmod): fix typo.
+
+Mon Aug 6 03:29:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lstrip_bang): new method.
+
+ * string.c (rb_str_rstrip_bang): new method.
+
+Mon Aug 6 00:35:03 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * struct.c (rb_struct_modify): should check frozen and taint
+ status.
+
+Sun Aug 5 19:28:39 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * string.c (rb_str_associate): should consider STR_ASSOC too.
+
+Sun Aug 5 07:46:18 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_undefined): do not recurse if method_missing is
+ undefined.
+
+Thu Aug 2 21:37:32 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_waitpid): now all arguments are optional.
+
+ * process.c (Init_process): waitpid is now alias to wait.
+
+ * process.c (Init_process): waitpid2 is now alias to wait2.
+
+ * process.c (rb_waitpid): made public.
+
+ * ext/pty/pty.c (pty_getpty): avoid disturbing SIGCHLD using
+ thread and rb_waitpid.
+
+Thu Aug 2 11:23:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_getpgrp): now takes no argument on all
+ platforms.
+
+ * process.c (proc_setpgrp): ditto.
+
+Thu Aug 2 01:29:42 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (strrdirsep): removed meaningless code.
+
+ * file.c (rb_file_s_expand_path): reverted to 1.66.
+
+Wed Aug 1 16:17:47 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_in): added
+ Socket::pack_sockaddr_in(). [new]
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): added
+ Socket::pack_sockaddr_un(). [new]
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_in): added
+ Socket::unpack_sockaddr_in(). [new]
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): added
+ Socket::unpack_sockaddr_un(). [new]
+
+Wed Aug 1 15:42:16 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * eval.c (ruby_run): avoid VC++ warning.
+
+Tue Jul 31 17:30:53 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * marshal.c (Init_marshal): fix typos.
+
+Tue Jul 31 15:16:39 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * process.c (last_status_set): nothing returned, should be void.
+
+ * ext/socket/socket.c (load_addr_info): ditto.
+
+Tue Jul 31 12:11:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (Init_marshal): new constant Marshal::MAJOR_VERSION
+ and Marshal::MINOR_VERSION.
+
+Tue Jul 31 07:18:04 2001 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (rb_file_s_expand_path): scans per path element not per
+ byte/character, including fix of [ruby-talk:18152] and
+ multi-byte pathname support.
+
+Tue Jul 31 11:52:10 2001 akira yamada <akira@ruby-lang.org>
+
+ * marshal.c (marshal_load): ruby_verbose test should be wrapped by
+ RTEST().
+
+Mon Jul 30 17:54:23 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_index): should return nil (not the default
+ value) if value is not in the hash.
+
+Mon Jul 30 12:55:47 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_div): new method added. alias to '/' which
+ should be preserved even if '/' is redefined (e.g. by
+ mathn). [new]
+
+Mon Jul 30 11:12:14 2001 Amos Gouaux <amos+ruby@utdallas.edu>
+
+ * lib/net/imap.rb: added new commands for managing folder quotas
+ and folder ACLs.
+
+Mon Jul 30 03:19:53 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr2inum): "0 ff".hex should return 0, not 255.
+
+Fri Jul 27 22:29:41 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_file_s_expand_path): fixed using CharNext().
+
+Fri Jul 27 18:07:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_provided): extension should be guessed using
+ rb_find_file_noext().
+
+ * eval.c (rb_f_require): should call rb_feature_p() after
+ extension completion.
+
+Fri Jul 27 16:25:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): add CHECK_INTS before next, redo, retry to
+ avoid potential uninterruptable infinite loop.
+
+Thu Jul 26 11:27:12 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_find_file_noext, rb_find_file): fix tilde expansion
+ problem.
+
+Wed Jul 25 17:54:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): use CharNext() to expand.
+
+Wed Jul 25 17:16:26 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * intern.h: add some missing function prototypes.
+
+Wed Jul 25 15:50:05 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * file.c (rb_file_s_expand_path): should not expand "." and ".."
+ not following dirsep.
+
+Wed Jul 25 12:15:32 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_find_file_noext): should update f by expanded path.
+
+ * file.c (rb_find_file): ditto.
+
+Tue Jul 24 23:10:47 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (strrdirsep): multi-byte pathname and DOSish separator
+ support. originally comes from Patrick Cheng. [new]
+
+ * file.c (rb_file_s_basename, rb_file_s_dirname): use
+ strrdirsep(). comes from Patrick Cheng.
+
+ * file.c (is_absolute_path): restricted in DOSish absolute path
+ with drive letter, and UNC support. originally comes from
+ Patrick Cheng.
+
+ * file.c (getcwd): define macro using getwd() unless provided.
+
+Tue Jul 24 19:23:15 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: dig the target subdirectory for
+ lib/* files properly in case of create_makefile("dir/name").
+
+Mon Jul 23 00:26:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_provide_feature): should not tweak extension used for
+ loading.
+
+Sun Jul 22 21:16:43 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: introduce a couple of new make
+ variables: CLEANFILES and DISTCLEANFILES. They'd typically be
+ defined in a file "depend".
+
+Sat Jul 21 09:40:10 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * io.c (io_fread): use fread(3) if PENDING_COUNT is available.
+
+Fri Jul 20 22:55:01 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * gc.c (ruby_xrealloc): fix a dangling bug which led memory
+ reallocation to fail even though the second try after a GC
+ succeeds.
+
+Fri Jul 20 03:00:46 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * class.c (rb_mod_include_p): Module#include? added. [new]
+
+Fri Jul 20 01:05:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (ignorecase_setter): give warning on modifying $=.
+
+ * string.c (rb_str_casecmp): new method. [new]
+
+ * string.c (rb_str_eql): separated from rb_str_equal(), make it
+ always be case sensitive. [new]
+
+ * string.c (rb_str_hash): made it always be case sensitive.
+
+Thu Jul 19 13:03:15 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_f_require): should not include path in $" value
+
+ * file.c (rb_find_file): should return 0 explicitly on failure.
+
+Tue Jul 17 11:44:40 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * ruby.h: enable volatile directive with VC++.
+
+ * regex.c: ditto.
+
+Tue Jul 17 06:01:12 2001 Minero Aoki <aamine@loveruby.net>
+
+ * doc/net/smtp.rd.ja, pop.rd.ja, http.rd.ja: new files.
+
+ * MANIFEST: add doc/net/{http,pop,smtp}.rd.ja.
+
+Tue Jul 17 11:22:01 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (NUM_FAILURE_ITEMS): was confusing NUM_REG_ITEMS and
+ NUM_NONREG_ITEMS, which have happened to be same value.
+
+Tue Jul 17 11:08:34 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * ext/extmk.rb.in: modify RM macro because command.com/cmd.exe don't
+ recognize single quotation as quote character.
+
+ * lib/mkmf.rb: ditto.
+
+Tue Jul 17 01:38:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_class_new): subclass check moved to this function.
+
+ * class.c (rb_class_boot): check less version of rb_class_new().
+
+Man Jul 16 13:21:30 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * file.c (file_load_ok): fix typo.
+
+Mon Jul 16 12:58:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should preserve iter status for embedded
+ frame in the block.
+
+Mon Jul 16 00:04:39 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): may overrun buffer on stack.
+
+Sun Jul 15 01:38:28 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * string.c (rb_str_insert): forgot to call rb_str_modify().
+
+Sat Jul 14 12:26:30 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/digest/*/extconf.rb: fix so that they build from any
+ directory.
+
+Sat Jul 14 06:20:17 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/net/http.rb: HTTP#proxy? did not worked.
+
+Sat Jul 14 02:56:19 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in: support multi-level ext/ directories.
+ (e.g. you can have ext/foo, ext/foo/bar and ext/foo/baz)
+
+Sat Jul 14 02:55:02 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/.cvsignore: let cvs ignore extinit.c.
+
+Fri Jul 13 23:47:35 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_search): should consider reverse search.
+
+Fri Jul 13 22:26:09 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb: use File::split to split a target into a prefix and
+ a module name. This also works around a just found bug of
+ String#rindex.
+
+ * ext/extmk.rb.in: ditto.
+
+Fri Jul 13 02:36:10 2001 Minero Aoki <aamine@loveruby.net>
+
+ * dir.c (dir_s_chdir): warn only when invoked from multiple
+ threads or block is not given.
+
+Thu Jul 12 15:11:48 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): workaround for the setup of
+ Cygwin socket(EALREADY).
+
+Mon Jul 9 16:49:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in: modify RM macro.
+
+ * lib/mkmf.rb: ditto.
+
+Sun Jul 8 20:52:02 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi().
+
+Sun Jul 8 16:04:35 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: rename HTTP#request_by_name to send_request.
+
+ * lib/net/protocol.rb (ProtoSocket#read): modify typo.
+
+Sat Jul 7 17:45:35 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_convert_type): should use rb_rescue(), not rb_rescue2().
+
+ * range.c (range_init): ditto.
+
+Fri Jul 6 18:01:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_dup): copies (actually does not free)
+ generic_ivar on dupif original owns them.
+
+Fri Jul 6 02:15:06 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb: a tempfile must be created with mode 0600.
+
+Thu Jul 5 20:28:53 2001 Tietew <tietew@tietew.net>
+
+ * string.c (rb_str_each_line): should propagate taint mark.
+
+ * ext/nkf/nkf.c (rb_nkf_kconv): ditto.
+
+Fri Jul 6 14:54:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): revamp for simpler implementation.
+
+ * file.c (rb_find_file_noext): use String object, instead of
+ passing char* around.
+
+ * file.c (rb_find_file): ditto.
+
+Thu Jul 5 22:01:02 2001 Mitsuhiro Kondo <kondo@nik-prt.co.jp>
+
+ * dln.c (dln_load): should use NSLINKMODULE_OPTION_BINDNOW.
+
+Thu Jul 5 13:44:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (load_file): local variables 'c' remain uninitialized on
+ xflag.
+
+Thu Jul 5 10:00:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match): prefetched escaped character too early.
+
+Wed Jul 4 08:58:30 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): add argument check for attr_readers.
+
+Wed Jul 4 04:22:44 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTP#request_by_name): arg order changes.
+
+Wed Jul 4 04:07:36 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTP#request_by_name): bug fix.
+
+ * lib/net/http.rb: does not write Connection: by default.
+
+ * lib/net/protocol.rb: "start" for started protocol is an error.
+
+ * lib/net/protocol.rb: "finish" for finished protocol is an error.
+
+Wed Jul 4 03:17:31 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: new method HTTP#request_by_name (test)
+
+ * lib/net/http.rb: new class HTTPGenericRequest
+
+Tue Jul 3 23:58:29 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb: distclean should remove mkmf.log as well.
+
+Tue Jul 3 18:35:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval_string_wrap): should push frame (and adjust
+ cbase) before wrapped eval.
+
+ * eval.c (rb_eval_cmd): ditto.
+
+ * eval.c (eval): should update ruby_class always after all.
+
+Tue Jul 3 14:56:27 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (block_pass): do not change wrapper information.
+
+ * eval.c (rb_yield_0): preserve wrapper information.
+
+Tue Jul 3 08:59:50 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * error.c (rb_name_error): raise NameError instead of LoadError.
+
+Mon Jul 2 17:22:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_exception): clone the receiver exception instead of
+ creating brand new exception object of the receiver.
+
+Mon Jul 2 09:53:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval_string_wrap): extend new ruby_top_self, not
+ original self.
+
+ * eval.c (rb_eval_cmd): respect ruby_wrapper if set.
+
+ * eval.c (eval): do not update ruby_class unless scope is not
+ provided.
+
+Sun Jul 1 10:51:15 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (eval): preserve wrapper information.
+
+ * eval.c (proc_invoke): ditto.
+
+ * eval.c (block_pass): ditto.
+
+Sat Jun 30 02:55:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (void_expr): too much warnings for void context
+ (e.g. foo[1] that can be mere Proc call).
+
+Fri Jun 29 17:23:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_name_error): new function to raise NameError with
+ name attribute set.
+
+ * eval.c (rb_f_missing): set name and args in the exception
+ object. [new]
+
+ * error.c (name_name): NameError#name - new method.
+
+ * error.c (nometh_args): NoMethodError#args - new method.
+
+Fri Jun 29 15:29:31 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lex.c (rb_reserved_word): lex_state after tRESCUE should be
+ EXPR_MID.
+
+Thu Jun 28 00:21:28 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/matrix.rb: resolve 'ruby -w' warnings.
+
+ * lib/irb/locale.rb: resolve 'ruby -w' warnings.
+
+ * lib/irb/multi-irb.rb: resolve 'ruby -w' warnings.
+
+ * lib/irb/ruby-lex.rb: fix problem for "\\M-\\..." and "\\C-\\..."
+ and resolve 'ruby -w' warnings.
+
+ * lib/irb/ruby-token.rb: fix typo
+
+ * lib/shell/command-processor.rb: resolve 'ruby -w' warnings.
+
+Wed Jun 27 08:53:26 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: new methods POP3.auth_only, POP3#auth_only
+
+ * lib/net/http.rb: HTTP.Proxy returns self if ADDRESS is nil.
+
+ * lib/net/protocol.rb: new method ProtocolError#response
+
+ * lib/net/protocol.rb,smtp.rb,pop.rb,http.rb: add document.
+
+Tue Jun 26 18:42:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (add_heap): allocation size of the heap unit is doubled for
+ each allocation.
+
+Mon Jun 25 09:54:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (isdelim): space, tab, and newline are no longer
+ delimiters for glob patterns.
+
+Sat Jun 23 22:28:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_avalue): new conversion scheme between single
+ value and array values.
+
+ * eval.c (avalue_to_svalue): ditto.
+
+ * eval.c (rb_eval): REXPAND now uses avalue_to_svalue(), return
+ and yield too.
+
+ * eval.c (rb_yield_0): use avalue_to_svalue().
+
+ * eval.c (proc_invoke): Proc#call gives avaules, whereas
+ Proc#yield gives mvalues.
+
+ * eval.c (bmcall): convert given value (svalue) to avalue.
+
+Sat Jun 23 18:28:52 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/readline/readline.c (readline_event): a non-void function
+ should return a value.
+
+Fri Jun 22 23:17:28 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): workaround for the setup of
+ Cygwin socket.
+
+Fri Jun 22 23:11:17 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/locale.rb: fix for require "kconv" problem
+
+Fri Jun 22 18:08:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): no mvalue_to_svalue conversion here.
+
+ * eval.c (massign): takes svalue, convert it to mvalue inside.
+
+ * eval.c (rb_eval): parameters for yield/return are always
+ svalues now.
+
+ * eval.c (svalue_to_mvalue): more strict conversion.
+
+ * eval.c (mvalue_to_svalue): ditto.
+
+Fri Jun 22 17:12:23 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (new_size): prime hash size enabled.
+
+ * ext/socket/socket.c (Init_socket): SO_* constants added.
+
+Tue Jun 19 22:24:07 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * gc.c (rb_setjmp): avoid GCC 3.0 warnings.
+
+Tue Jun 19 18:19:30 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/readline/readline.c: add new methods:
+ Readline::completion_append_character and
+ Readline::completion_append_character=.
+
+Tue Jun 19 16:29:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_mvalue): new function to convert from svalue
+ to mvalue. [experimental]
+
+ * eval.c (mvalue_to_svalue): new function to convert from mvalue
+ to svalue.
+
+ * eval.c (rb_eval): use mvalue_to_svalue().
+
+ * eval.c (rb_yield_0): use mvalue_to_svalue().
+
+ * eval.c (proc_invoke): proper mvalue handling.
+
+Mon Jun 18 17:38:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): searches ".rb" and ".so" at the same
+ time. previous behavior (search ".rb", then ".so") has a
+ security risk (ruby-bugs#PR140).
+
+ * array.c (rb_ary_to_ary): new function to replace internal
+ rb_Array(), which never calls to_a, but to_ary (rb_Array() might
+ call both). [new]
+
+Mon Jun 18 00:43:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (PUSH_FAILURE_POINT): push option status again.
+
+ * regex.c (re_compile_pattern): avoid pushing unnecessary
+ option_set.
+
+Sat Jun 16 10:58:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): tainted string is OK if wrapped *and*
+ $SAFE >= 4.
+
+Thu Jun 14 16:27:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): should not nail down higher blocks
+ before preserving original context (i.e. should not alter
+ original context).
+
+Wed Jun 13 19:34:59 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * dir.c (Init_Dir): add a new method File::fnmatch? along with
+ File::Constants::FNM_*. While I am here, FNM_NOCASE is renamed
+ to FNM_CASEFOLD which is commonly used by *BSD and GNU libc.
+
+Wed Jun 13 09:33:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_yield): new method equivalent to Proc#call but no
+ check for number of arguments. [new]
+
+Tue Jun 12 14:21:28 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb: target_prefix is only for installation, not for
+ build.
+
+Tue Jun 12 00:41:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_eq): new method Method#==. [new]
+
+Mon Jun 11 14:29:41 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * confgure.in: add RUBY_CANONICAL_BUILD.
+
+Sun Jun 10 17:31:47 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * gc.c (STR_NO_ORIG): STR_NO_ORIG value was different between
+ string.c and gc.c
+
+Sat Jun 9 22:10:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should convert *non-array at the end of
+ arguments by using Array().
+
+Sat Jun 9 17:04:30 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * hash.c (ruby_setenv): readline library leaves their environment
+ strings uncopied. "free" check revised.
+
+Sat Jun 9 16:31:03 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * ext/extmk.rb.in: Use -F and -T for mswin32 because cl.exe doesn't
+ support -o officially and cl.exe considers that *.cc and *.cxx are
+ OBJs.
+
+ * lib/mkmf.rb: ditto.
+
+ * win32/Makefile.sub: Use del instead of rm.
+ All these changes are derived from Nobuyoshi Nakada's patch.
+ Thanks.
+
+Fri Jun 8 22:37:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (Init_stack): avoid __builtin_frame_address(2) to retrieve
+ stack bottom line.
+
+Fri Jun 8 18:14:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (numhash): should shuffle bits by dividing by prime number.
+
+Fri Jun 8 17:05:21 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): multiple assignment behavior fixed, which
+ results "*a = nil" makes "a == []" now.
+
+Fri Jun 8 15:25:09 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): should set SCOPE_PUBLIC before calling
+ dln_load().
+
+Thu Jun 7 17:28:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): exclude kDO_BLOCK too much by false condition.
+
+Wed Jun 6 23:02:36 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/sync.rb: bug fix if obj.initialize has parameters when
+ obj.extend(Sync_m)
+
+ * lib/mutex_m.rb: modified bit
+
+Wed Jun 6 16:11:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): should check if tainted even when wrap is
+ specified.
+
+Wed Jun 6 14:34:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (mrhs_basic): "*arg" should always be expanded by REXPAND.
+
+ * regex.c (re_compile_pattern): too much optimization for the
+ cases like /(.|a)b/.
+
+Tue Jun 5 23:58:43 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (fc_i): removed vast string allocation.
+
+Tue Jun 5 16:45:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (Init_Exception): NameError went under StandardError,
+ and NoMethodError went under NameError.
+
+Tue Jun 5 16:40:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_intern): non identifier symbols should be
+ categorized as ID_JUNK. [new]
+
+Tue Jun 5 16:15:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_const_at): use hash table as internal
+ data. [new]
+
+ * variable.c (rb_mod_const_of): ditto.
+
+ * variable.c (rb_const_list): new function to convert internal
+ data (hash table) to array of strings.
+
+ * eval.c (rb_mod_s_constants): data handling scheme has changed.
+
+Tue Jun 5 15:16:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_add_method): should not call rb_secure(), for
+ last_func may not be set.
+
+ * io.c (rb_io_ctl): ioctl should accept any integer within C long
+ range.
+
+Tue Jun 5 13:41:13 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/etc/extconf.rb: use egrep_cpp.
+
+Tue Jun 5 12:44:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object): wrong type check for modules.
+
+ * marshal.c (w_object): should not dump anonymous classes/modules.
+
+Tue Jun 5 01:19:34 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_open_file): use rb_file_sysopen_internal() if the 3rd
+ argument (permission flags) is given. [new, should be backported?]
+
+ * io.c (rb_io_mode_binmode): mode string (e.g. "r+") to flags to
+ open(2).
+
+Mon Jun 4 23:55:54 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): NODE_REXPAND expand an array of 1 element as
+ the element itself. [new, should be backported?]
+
+ * parse.y (ret_args): should treat "*[a]" in rhs expression as
+ "a", not "[a]".
+
+Mon Jun 4 04:14:53 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/shellwords.rb: don't destroy argument.
+
+Sat Jun 2 23:23:05 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should push option modifier at the
+ right place.
+
+Sat Jun 2 23:05:20 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi/session.rb: don't use module_function for Class.
+
+Sat Jun 2 00:02:22 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * irb messages: fix typos.
+
+Fri Jun 1 17:26:24 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * hash.c (replace_i): ignore when key == Qundef.
+
+Fri Jun 1 16:50:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (call_args2): confusion with list_append() and
+ list_concat() was fixed.
+
+Fri Jun 1 15:01:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): fixed 'print CGI::bar() {}, "\n"' syntax
+ breakage, adding new lex_state status. sigh. [new]
+
+Fri Jun 1 11:21:04 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: use waitpid on mingw32.
+
+ * ext/dbm/extconf.rb: include <ndbm.h>, not <gdbm.h>.
+
+Thu May 31 18:34:57 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * file.c (rb_file_s_unlink): should not allow if $SAFE >= 2.
+
+Thu May 31 17:23:25 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (Init_Range): define "to_ary".
+
+Thu May 31 13:30:25 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * mkconfig.rb, ext/configsub.rb: VERSION -> RUBY_VERSION.
+
+Thu May 31 08:00:58 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/dir.h: re-add.
+
+Thu May 31 01:25:59 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in: default --with-libc_r to `no' until the problem is
+ fixed. (FreeBSD only)
+
+Tue May 29 17:24:23 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * ruby.c (proc_options): unexpected SecurityError happens when -T4.
+
+Tue May 29 18:46:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): * \1 .. \9 should be
+ backreferences always.
+
+ * regex.c (re_match): backreferences corresponding to
+ unclosed/unmatched parentheses should fail always.
+
+Tue May 29 16:35:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cat): use rb_str_buf_cat() if possible. [new]
+
+ * string.c (rb_str_append): ditto.
+
+ * string.c (rb_str_buf_cat): remove unnecessary check (type,
+ taint, modify) to gain performance.
+
+ * string.c (rb_str_buf_append): ditto.
+
+ * string.c (rb_str_buf_finish): removed.
+
+Tue May 29 02:05:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_buf_new): buffering string function. [new]
+
+ * string.c (rb_str_buf_append): ditto.
+
+ * string.c (rb_str_buf_cat): ditto.
+
+ * string.c (rb_str_buf_finish): ditto.
+
+Mon May 28 23:20:43 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: remove unnecessary AC_CANONICAL_BUILD
+
+ * defines.h: #define HAVE_SETITIMER on Cygwin(bug fixed).
+
+ * ruby.c: use relative path from LIBRUBY_SO.
+
+ * ruby.c: don't use -mwin32 option on Cygwin.
+
+ * cygwin/GNUmakefile.in: ditto.
+
+ * ext/sdbm/_sdbm: ditto.
+
+ * ext/tcltklib/extconf.rb: ditto.
+
+ * ext/tcltklib/stubs.c: ditto.
+
+Mon May 28 22:12:01 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/extconf.rb.in: make the priority of the make rule of .c
+ higher than .C .
+
+Mon May 28 13:22:19 2001 Tanaka Akira <akr@m17n.org>
+
+ * time.c (make_time_t): local time adjustment revised.
+
+Mon May 28 02:20:38 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * dir.c (glob_helper): teach has_magic() to handle flags and get
+ glob_helper to properly support FNM_NOESCAPE.
+
+ * dir.c (fnmatch): fix a bug when FNM_PATHNAME and FNM_PERIOD are
+ specified at the same time.
+
+Sat May 26 09:55:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: accomplish extended syntax described in [ruby-talk:14525]
+ using tSPC token. [new, experimental]
+
+Sat May 26 07:05:45 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * MANIFEST: add win32/dir.h .
+
+Fri May 25 20:03:51 2001 Pascal Rigaux <pixel@mandrakesoft.com>
+
+ * dln.c (dln_find_1): should exclude directories in executable
+ file lookup.
+
+Fri May 25 18:00:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_obj_singleton_methods): list methods in extended
+ modules if optional argument is true. [new]
+
+Fri May 25 14:19:25 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * string.c (rb_str_replace): add taint status infection
+ (OBJ_INFECT()).
+
+ * string.c (rb_str_crypt): ditto.
+
+ * string.c (rb_str_ljust): ditto.
+
+ * string.c (rb_str_rjust): ditto.
+
+ * string.c (rb_str_center): ditto.
+
+Fri May 25 05:39:03 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/sha1/sha1-ruby.c (sha1_hexdigest): fix buffer overflow. The
+ buffer for a SHA-1 hexdigest needs to be 41 bytes in length.
+
+Fri May 25 01:47:39 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * MANIFEST: update the entries I forgot to add or remove.
+
+Fri May 25 00:57:25 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/sha1/sha1-ruby.c (sha1_new): separate initialize() from
+ new().
+
+ * ext/md5/md5init.c (md5i_new): ditto.
+
+Fri May 25 00:53:41 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dbm/extconf.rb: fix support for *BSD and set $CFLAGS
+ properly.
+
+Thu May 24 16:10:33 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_member): check based on "<=>" comparison. [new]
+
+ * range.c (range_check): add "succ" check if first end is not a
+ numeric.
+
+ * range.c (range_eqq): comparison should based on "<=>".
+
+ * range.c (range_each): ditto.
+
+Thu May 24 16:08:21 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * mkconfig.rb: autoconf 2.50 support.
+
+Thu May 24 14:23:35 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): need argument adjustment for C defined
+ blocks too.
+
+Thu May 24 01:11:30 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/extconf.rb: header search added. [new]
+
+Wed May 23 02:58:21 2001 Tanaka Akira <akr@m17n.org>
+
+ * time.c (make_time_t): fix ad-hoc local time adjustment, using
+ binary tree search.
+
+Tue May 22 17:10:35 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * variable.c (rb_alias_variable): should not allow variable
+ aliasing if $SAFE >= 4.
+
+Tue May 22 02:37:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (expr): "break" and "next" to take optional expression,
+ which is used as a value for termination. [new, experimental]
+
+ * eval.c (rb_eval): "break" can give value to terminating method.
+
+ * eval.c (rb_eval): "break" and "next" to take optional expression.
+
+ * eval.c (rb_yield_0): "next" can give value to terminating "yield".
+
+ * eval.c (rb_iterate): "break" can give value to terminating method.
+
+ * eval.c (proc_call): ditto.
+
+Mon May 21 13:15:25 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2str): t should be protected from GC.
+
+Sat May 19 09:29:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_proc_times): need not to check return value from
+ times(2).
+
+Fri May 18 05:36:08 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in (xsystem): backout the previous fix which was
+ bogus.
+
+Fri May 18 05:19:55 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb (xsystem): make a temporary fix to get $(...) macros
+ properly expanded on a command execution.
+
+ * ext/extmk.rb.in (xsystem): ditto.
+
+Fri May 18 03:45:55 2001 Brian F. Feldman <green@FreeBSD.org>
+
+ * lib/mkmf.rb: unbreak "make install". lib/* must be installed
+ under $rubylibdir, not under $libdir.
+
+Fri May 18 01:28:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (expr): break, next, redo, retry are moved from primary.
+
+Fri May 18 01:11:02 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * ext/sha1/sha1-ruby.c (sha1_new): get rid of an unneeded
+ rb_obj_call_init() call.
+
+Fri May 18 01:03:55 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * ext/sha1/sha1.txt, ext/sha1/sha1.txt.jp: fix typos.
+
+Thu May 17 19:17:11 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shell.rb, lib/shell/process-controller.rb,
+ lib/shell/command-processor.rb: translate Japanese comments into
+ English.
+
+Thu May 17 19:07:14 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * doc/shell.rd.jp: RD'ify and make some fixes.
+
+ * doc/shell.rd: RD'ify, delete Japanese leftovers, make overall
+ English fixes, and sync with doc/shell.rd.jp.
+
+Thu May 17 17:35:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): address of local_vars might change during eval.
+
+Thu May 17 07:27:09 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/md5/md5.txt.jp, ext/sha1/sha1.txt.jp:
+ s/SuperClass/Superclass/.
+
+Thu May 17 07:21:44 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Setup.dj, ext/Setup.emx, ext/Setup.nt, ext/Setup.x68:
+ compile sha1 in as well as md5.
+
+ * ext/Setup: put sha1 in a comment.
+
+Thu May 17 07:16:38 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/sha1/sha1.txt.jp: add the Japanese version derived from
+ ext/md5/md5.txt.jp.
+
+ * ext/sha1/sha1.txt: revise the copyright info and reduce the
+ difference from ext/md5/md5.txt.
+
+ * ext/md5/md5.txt: reduce the difference from ext/sha1/sha1.txt.
+
+Thu May 17 07:11:35 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/sha1/extconf.rb, ext/sha1/sha1.c: use WORDS_BIGENDIAN to
+ detect the platform's endian.
+
+Thu May 17 06:31:30 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/md5/md5.txt: make wording fixes, and mention the newly added
+ method: "<<".
+
+ * ext/md5/md5.txt.jp: ditto.
+
+Wed May 16 18:05:52 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/md5/md5init.c: add an instance method "<<" as an alias for
+ "update". (inspired by Steve Coltrin's ruby-sha1)
+
+Tue May 15 17:46:37 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_and): should not push frozen key string.
+
+ * array.c (rb_ary_or): ditto.
+
+Tue May 15 02:18:23 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/thread.rb: rescue ThreadError in case the thread is dead
+ just before calling Thread#run.
+
+Mon May 14 13:50:22 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): should save context before raising
+ deadlock, saved context for current thread might be obsolete.
+
+ * time.c (make_time_t): non DST timezone shift supported (hopefully).
+
+ * time.c (make_time_t): strict range detection for negative time_t.
+
+Mon May 14 11:54:20 2001 Tanaka Akira <akr@m17n.org>
+
+ * signal.c: SIGINFO added.
+
+Mon May 14 08:57:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_ensure): should not SEGV when prot_tag is NULL.
+
+Sun May 13 23:51:14 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/resource.rb: Modify copyright in resource script.
+
+Sun May 13 14:03:33 2001 Okada Jun <yun@be-in.org>
+
+ * lib/thread.rb: fix Queue#pop and SizedQueue#max= to avoid
+ deadlock.
+
+Sat May 12 15:43:55 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/win32.c (kill): add support of signal 9 on mswin32/mingw32.
+
+Fri May 11 15:09:52 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.h (rb_string_value): add volatile to avoid compiler warning.
+
+ * string.c (rb_string_value): ditto.
+
+Fri May 11 03:35:33 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * README.EXT: Document find_library(), with_config() and
+ dir_config().
+
+Fri May 11 03:34:20 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * README.EXT.jp: Remove the description of find_header() because
+ such a function does not actually exist.
+
+ * README.EXT.jp: Update the description of dir_config().
+
+Fri May 11 02:42:05 2001 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * README, README.jp: Fix CVS access and mailing lists info.
+
+Fri May 11 02:00:44 2001 Ryo HAYASAKA <ryoh@jaist.ac.jp>
+
+ * bignum.c (bigdivrem): access boundary bug.
+
+Thu May 10 02:40:47 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): prohibit dumping out singleton classes.
+
+ * object.c (rb_mod_to_s): distinguish singleton classes.
+
+ * variable.c (rb_class2name): it's ok to reveal NilClass,
+ TrueClass, FalseClass.
+
+Wed May 9 14:38:33 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_yield_0): preserve and restore ruby_cref as well.
+
+Tue May 8 18:28:19 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb.rb lib/irb/multi-irb.rb lib/irb/ruby-lex.rb
+ lib/irb/version.rb resolve ctrl-c problem
+
+Tue May 8 17:12:43 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (is_defined): core dumped during instance_eval for
+ special constants.
+
+ * eval.c (rb_eval): ditto.
+
+Tue May 8 08:52:57 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * doc/forwardable.rd, doc/forwardable.rd.jp: Hit `=begin' and
+ `=end' in proper places so rd2 can format them without a problem.
+
+ * doc/irb/irb-tools.rd.jp, doc/irb/irb.rd, doc/irb/irb.rd.jp:
+ ditto.
+
+Tue May 8 08:38:53 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * doc/forwardable.rd, doc/forwardable.rd.jp, lib/forwardable.rb:
+ Import forwardable 1.1.
+
+Tue May 8 08:34:33 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * doc/irb/irb-tools.rd.jp, doc/irb/irb.rd.jp: Convert from JIS to
+ EUC.
+
+Tue May 8 03:46:39 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * sample/rbc.rb: Obsoleted by IRB.
+
+Mon May 7 15:58:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): "||=" should not warn for uninitialized instance
+ variables.
+
+ * eval.c (rb_eval): ditto.
+
+ * eval.c (eval): preserve and restore ruby_cref as well.
+
+Mon May 7 15:45:48 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftools.rb (syscopy): chmod destination file only if
+ it does not exist.
+
+Mon May 7 14:35:57 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_is_instance_of): takes only class/module as an
+ argument.
+
+Sun May 6 16:27:29 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * eval.c (is_defined): rb_reg_nth_defined() may return Qnil.
+
+Thu May 3 03:15:06 2001 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * configure.in: get --enable-shared to work on MacOS X.
+
+ * Makefile.in: make $(LIBRUBY_SO) depend on miniruby properly.
+ Now `make -jN' should work without a problem.
+
+Thu May 3 02:07:45 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/config.h.in: add SIZEOF___INT64 definition.
+
+Wed May 2 20:39:35 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c (rb_glob, rb_globi): remove unnecessary FNM_PATHNAME.
+
+Wed May 2 11:46:13 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (block_pass): should not downgrade safe level.
+
+Wed May 2 03:07:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/extconf.rb: allow specifying dbm-type explicitly.
+
+ * ext/dbm/extconf.rb: avoid gdbm if possible, because it leaks
+ memory, whereas gdbm.so doesn't. potential incompatibility.
+
+Wed May 2 02:02:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_insert): new method.
+
+Tue May 1 17:55:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): lex_state after RESCUE_MOD should be EXPR_BEG.
+
+Tue May 1 16:23:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_insert): new method.
+
+ * array.c (rb_ary_update): new utility function.
+
+Tue May 1 03:24:05 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/irb/completion.rb, lib/irb/frame.rb, lib/irb/xmp.rb,
+ doc/irb/irb-tools.rd.jp: Merge from irb-tools 0.7.1.
+
+Tue May 1 03:07:17 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * sample/irb.rb, lib/irb.rb, lib/irb/*, doc/irb/*: Merge from irb
+ 0.7.3.
+
+ * instruby.rb: Install help-message's too.
+
+ * lib/irb/main.rb: This file is not needed anymore.
+
+Fri Apr 27 09:27:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (set_outfile): should check if closed before assignment.
+
+Thu Apr 26 22:36:11 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: don't use tzname on Cygwin 1.3.1+.
+
+ * configure.in: add -mieee/-ieee to CFLAGS on OSF1/Alpha
+ to disable "DIVISION BY ZERO" exception.
+
+Thu Apr 26 22:30:43 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should preserve value of ruby_errinfo.
+
+Thu Apr 26 10:36:09 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): infinite sleep should not cause
+ dead lock.
+
+Wed Apr 25 16:40:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_flatten_bang): proper recursive detection.
+
+Wed Apr 25 15:36:15 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (yield_under): need not to prohibit at safe level 4.
+
+Wed Apr 25 15:22:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): p/P packs nil into NULL.
+
+ * pack.c (pack_unpack): p/P unpacks NULL into nil.
+
+Tue Apr 24 15:35:32 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): size check for P template.
+
+ * ruby.c (set_arg0): wrong predicate when new $0 value is bigger
+ than original space.
+
+Tue Apr 24 15:18:49 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: (dir_config) do not add the
+ specified include directory if already included in $CPPFLAGS.
+
+ * ext/extmk.rb.in, lib/mkmf.rb: (dir_config) return a more useful
+ value, [include_dir, lib_dir].
+
+Mon Apr 23 14:43:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (id2ref): should use NUM2ULONG()
+
+ * object.c (rb_mod_const_get): check whether name is a class
+ variable name.
+
+ * object.c (rb_mod_const_set): ditto.
+
+ * object.c (rb_mod_const_defined): ditto.
+
+Sat Apr 21 22:33:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_float): precision changed to "%.16g"
+
+Sat Apr 21 22:07:58 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * eval.c (rb_call0): wrong retry behavior.
+
+Fri Apr 20 19:12:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_aref): a bug on long>int architecture.
+
+Fri Apr 20 14:57:15 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_eval_string_wrap): should restore ruby_wrapper.
+
+Sun Apr 22 17:44:37 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: add -mieee to CFLAGS on Linux/Alpha
+ to disable "DIVISION BY ZERO" exception.
+
+ * configure.in: remove -ansi on OSF/1.
+
+Wed Apr 18 04:37:51 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: CGI::Cookie: no use PATH_INFO.
+
+Wed Apr 18 00:24:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): char class at either edge of range
+ should be invalid.
+
+Tue Apr 17 17:33:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (handle_rescue): use === to compare exception match.
+
+ * error.c (syserr_eqq): comparison between SystemCallErrors should
+ based on their error numbers.
+
+Tue Apr 17 16:54:39 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (safe_getter): should use INT2NUM().
+
+Tue Apr 17 15:12:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2long): 2**31 cannot fit in 31 bit long.
+
+Sat Apr 14 22:46:43 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * regex.c (calculate_must_string): wrong length calculation.
+
+Sat Apr 14 13:37:32 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/config.status.in: no longer use missing/alloca.c.
+
+ * win32/Makefile.sub: ditto.
+
+Fri Apr 13 12:40:48 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_thread_start_0): fixed memory leak.
+
+Fri Apr 13 16:41:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (none): should clear cmdarg_stack too.
+
+Fri Apr 13 06:19:29 2001 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * io.c (rb_fopen): use setvbuf() to avoid recursive malloc() on
+ some platforms.
+
+Wed Apr 11 23:36:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat_dev): device functions should honor stat field
+ types (except long long such as dev_t).
+
+Wed Apr 11 18:07:53 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_mod_nesting): should not push nil for nesting array.
+
+ * eval.c (rb_mod_s_constants): should not search array by
+ rb_mod_const_at() for nil (happens for singleton class).
+
+Wed Apr 11 13:29:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_singleton_class_attached): should modify iv_tbl by
+ itself, no longer use rb_iv_set() to avoid freeze check error.
+
+ * variable.c (rb_const_get): error message "uninitialized constant
+ Foo at Bar::Baz" instead of "uninitialized constantBar::Baz::Foo".
+
+Tue Apr 10 17:52:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_included): new hook called from rb_mod_include().
+
+Tue Apr 10 02:24:40 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * io.c (opt_i_set): should strdup() inplace_edit string.
+
+Mon Apr 9 23:29:54 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (exec_under): need to push cref too.
+
+Mon Apr 9 15:20:21 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_missing): raise NameError for "undefined local
+ variable or method".
+
+ * error.c (Init_Exception): new exception NoMethodError.
+ NameError moved under ScriptError again.
+
+ * eval.c (rb_f_missing): use NoMethodError instead of NameError.
+
+Mon Apr 9 12:05:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (Init_File): should redefine "new" class method.
+
+Mon Apr 9 11:56:52 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: fix typo.
+
+Fri Apr 6 01:46:35 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (PUSH_CREF): sharing cref node was problematic. maintain
+ runtime cref list instead.
+
+ * eval.c (rb_eval): copy defn node before registering.
+
+ * eval.c (rb_load): clear ruby_cref before loading.
+
+Thu Apr 5 22:40:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get): no recursion to show full class path
+ for modules.
+
+ * eval.c (rb_set_safe_level): should set safe level in curr_thread
+ as well.
+
+ * eval.c (safe_setter): ditto.
+
+Thu Apr 5 13:46:06 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * object.c (rb_obj_is_instance_of): nil belongs to false, not true.
+
+Thu Apr 5 02:19:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (make_time_t): proper (I hope) daylight saving time
+ handling for both US and Europe. I HATE DST!
+
+ * eval.c (rb_thread_wait_for): non blocked signal interrupt should
+ stop the interval.
+
+Wed Apr 4 03:47:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_eq): class check added.
+
+ * eval.c (proc_eq): typo fixed ("return" was omitted).
+
+ * error.c (Init_Exception): move NameError under StandardError.
+
+ * class.c (rb_mod_clone): should copy method bodies too.
+
+ * bignum.c (bigdivrem): should trim trailing zero bdigits of
+ remainder, even if dd == 0.
+
+ * file.c (check3rdbyte): safe string check moved here.
+
+Tue Apr 3 09:56:20 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in (create_makefile): create def file only if
+ it does not yet exist.
+
+ * lib/mkmf.rb: ditto.
+
+Tue Apr 3 00:05:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (make_time_t): remove HAVE_TM_ZONE code since it
+ sometimes reports wrong time.
+
+ * time.c (make_time_t): remove unnecessary range check for
+ platforms where negative time_t is available.
+
+Mon Apr 2 16:52:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_waitall): should push Process::Status instead of
+ Fixnum status.
+
+ * process.c (waitall_each): should add all entries in pid_tbl.
+ these changes are inspired by Koji Arai. Thanks.
+
+ * process.c (proc_wait): should not iterate if pid_tbl is 0.
+
+ * process.c (proc_waitall): ditto.
+
+Mon Apr 2 14:25:49 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb (wait): ensure reentrance.
+
+ * lib/monitor.rb (wait): fix timeout support.
+
+Mon Apr 2 12:40:45 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (media_subtype): return subtype.
+
+Mon Apr 2 12:01:15 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (flag_list): capitalize flags.
+
+Mon Apr 2 01:32:38 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * Makefile.in: Introduce MAINLIBS.
+
+ * configure.in: Link libc_r against the ruby executable on
+ FreeBSD, which is the first attempt to work around a certain
+ problem regarding pthread on FreeBSD. It should make ruby/libruby
+ happy when it loads an extension to a library compiled and linked
+ with -pthread. Note, however, that libruby is _not_ linked with
+ libc_r so as not to mess up pthread unfriendly stuff including
+ apache+mod_ruby and vim6+ruby_interp.
+
+Mon Apr 2 01:16:24 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c: use ruby's opendir on mingw32.
+
+ * win32/dir.h, dir.c, Makefile: ditto.
+
+Sun Apr 1 23:26:14 2001 TOYOFUKU Chikanobu <toyofuku@juice.or.jp>
+
+ * numeric.c (flodivmod): a bug in no fmod case.
+
+Sun Apr 1 18:36:14 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * process.c (pst_wifsignaled): should apply WIFSIGNALED for status
+ (int), not st (VALUE).
+
+Sat Mar 31 04:47:55 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: add document and example code.
+
+Sat Mar 31 03:24:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (Init_IO): value of $/ and $\ are no longer restricted to
+ strings. type checks are done on demand.
+
+ * class.c (rb_include_module): module inclusion should be check
+ taints.
+
+ * ruby.h (STR2CSTR): replace to StringType() and StringTypePtr().
+
+ * ruby.h (rb_str2cstr): ditto.
+
+Fri Mar 30 23:37:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): should not copy toplevel local variables. It
+ cause variable/method ambiguity. Thanks to L. Peter Deutsch.
+
+Fri Mar 30 22:56:56 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: rename ContinueRequest to ContinuationRequest.
+
+Fri Mar 30 12:51:19 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): freeze check at first.
+
+Thu Mar 29 17:05:09 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_attr): sprintf() and rb_intern() moved into
+ conditional body.
+
+Wed Mar 28 23:43:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: add C++ rules in addition to C
+ rules for the mswin32 platforms.
+
+Wed Mar 28 19:29:21 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: move C++ rules to the right place.
+
+Wed Mar 28 17:39:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_str2cstr): warn if string contains \0 and length
+ value is ignored.
+
+Wed Mar 28 15:00:31 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * class.c (rb_singleton_class_clone): should copy class constant
+ table as well.
+
+Wed Mar 28 14:23:23 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): sometimes cache was mistakenly left
+ uncleared - based on the patch by K.Kosako.
+
+ * ruby.h: all Check_SafeStr()'s are replaced by SafeStr() to
+ ensure 'to_str' be always effective.
+
+Wed Mar 28 09:52:33 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/Makefile.sub: disable global optimization.
+
+Tue Mar 27 15:00:54 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_mod_define_method): should have clear method cache.
+
+ * eval.c (rb_mod_define_method): should have raised exception for
+ type error.
+
+Tue Mar 27 14:48:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: changed "extern INLINE" to "static inline".
+
+Mon Mar 26 23:19:33 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * time.c (rb_strftime): check whether strftime returns empty string.
+
+Mon Mar 26 21:16:56 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: supports response handlers and multiple commands.
+
+Mon Mar 26 17:21:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: remove TMP_PROTECT_END to prevent C_ALLOCA crash.
+
+Mon Mar 26 14:04:41 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/Win32API/Win32API.c: remove Init_win32api().
+
+Sun Mar 25 16:52:48 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * file.c (rb_file_flock): do not trap EINTR.
+
+ * missing/flock.c (flock): returns the value from lockf(2)
+ directly.
+
+Sat Mar 24 23:44:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_defined): should ignore toplevel cbase (Object).
+
+ * eval.c (ev_const_get): ditto.
+
+Fri Mar 23 17:37:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/md5/md5.h: replace by independent md5 implementation
+ contributed by L. Peter Deutsch (thanks).
+
+ * ext/md5/md5init.c: adopted to Deutsch's md5 implementation.
+
+Fri Mar 23 17:26:19 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): string from P/p should be tainted.
+
+Fri Mar 23 12:18:44 2001 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * ext/curses/curses.c: curses on Mac OS X public beta does not
+ have _maxx etc.
+
+Fri Mar 23 10:50:31 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): should truncate trailing zero short for
+ bignums.
+
+Fri Mar 23 09:49:02 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (sym_intern): new method.
+
+Thu Mar 22 22:15:45 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/Win32API/extconf.rb: add -fno-omit-frame-pointer.
+
+Thu Mar 22 18:17:36 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_nesting): should not include Object at the
+ toplevel.
+
+Thu Mar 22 17:43:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: better inline function support.
+
+ * configure.in (NO_C_INLINE): check if inline is available for the
+ C compiler.
+
+Mon Mar 19 11:03:10 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * marshal.c (r_object): len calculation patch was wrong for
+ machines SIZEOF_BDIGITS == SIZEOF_SHORT.
+
+ * gc.c: alloca prototype reorganized for C_ALLOCA machine.
+
+Wed Mar 21 23:07:45 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (win32_stat): WinNT/2k "//host/share" support.
+
+Wed Mar 21 08:05:35 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/dir.h: replace missing/dir.h .
+
+ * win32/win32.h: ditto.
+
+ * win32/win32.c: ditto.
+
+Wed Mar 21 01:26:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (id2ref): sometimes confused symbol and reference.
+
+Tue Mar 20 23:09:33 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (win32_stat): UNC support.
+
+ * dir.c (extract_path): fix "./*" problem.
+
+Tue Mar 20 15:10:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (glob_helper): breaks loop after calling recursive
+ glob_helper; all wild cards should be consumed; no need for
+ further match.
+
+ * dir.c (dir_s_glob): gives warning if no match found.
+
+Tue Mar 20 14:13:45 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * object.c (sym_inspect): did allocate extra byte space.
+
+Mon Mar 19 19:14:47 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * marshal.c (shortlen): shortlen should return number of bytes
+ written.
+
+Mon Mar 19 16:52:23 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (ev_const_defined): need not to check if cbase->nd_class
+ is rb_cObject.
+
+ * eval.c (ev_const_get): ditto.
+
+Mon Mar 19 17:11:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_zone): return "UTC" for UTC time objects.
+
+Mon Mar 19 16:27:32 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (THREAD_ALLOC): flags should be initialized.
+
+ * signal.c (rb_f_kill): should use FIX2INT, not FIX2UINT.
+
+Mon Mar 19 10:55:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (glob_helper): replace lstat() by stat() to follow symlink
+ in the case like 'symlink/*'.
+
+ * dir.c (glob_helper): gave warning too much.
+
+Sun Mar 18 08:58:18 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: // === '' --> //.match('')
+
+ * lib/cgi.rb: cgi#header(): improvement for mod_ruby.
+
+ * lib/cgi.rb: cgi#rfc1123date(): improvement.
+ thanks to TADA Tadashi <sho@spc.gr.jp>.
+
+ * lib/cgi.rb: cgi#rfc1123date(): document bug fix.
+ thanks to Kazuhiro NISHIYAMA <zn@mbf.nifty.com>.
+
+ * lib/cgi.rb: cgi#header(): bug fix.
+ thanks to IWATSUKI Hiroyuki <don@na.rim.or.jp>.
+
+Sat Mar 17 11:11:24 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (glob_helper): * should follow symlink, whereas ** should
+ not follow.
+
+Thu Mar 15 01:28:02 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_chdir): block form of Dir.chdir. (RCR#U016).
+
+Fri Mar 16 17:14:17 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in: Set SOLIBS properly for all ELF and
+ FreeBSD/NetBSD/OpenBSD a.out platforms so that the shlib
+ dependencies are recorded in the libruby shlib.
+
+Wed Mar 14 16:41:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): raise FATAL just once to
+ THREAD_TO_KILL.
+
+Wed Mar 14 10:41:34 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): 0 (= Qfalse) is a valid value, so that
+ default self should be checked by klass == 0.
+
+ * bignum.c (rb_cstr2inum): should disallow '++1', '+-1', etc.
+
+Tue Mar 13 17:51:09 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_defined): add new parameter self for special
+ const fallback.
+
+ * eval.c (ev_const_get): ditto.
+
+Tue Mar 13 16:39:45 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c (rb_glob_helper): fix drive letter handling on DOSISH.
+
+Tue Mar 13 14:54:39 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: add HTTPRequest#basic_auth.
+
+ * lib/net/smtp.rb: raise if only account or password is given.
+
+ * lib/net/protocol.rb: WriteAdapter#<< returns self.
+
+Tue Mar 13 14:41:16 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_seek_m): wrong calling sequence of rb_io_seek().
+
+Tue Mar 13 09:14:19 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (cond0): no special treatment of string literal in
+ condition.
+
+Mon Mar 12 18:59:38 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): save/restore $libs and $LIBPATH.
+
+Sun Mar 11 18:13:34 2001 Masahiro Tanaka <masa@stars.gsfc.nasa.gov>
+
+ * math.c: add acos, asin, atan, conh, sinh, tanh and hypot to Math.
+
+ * configure.in: check hypot availability.
+
+ * missing/hypot.c: public domain rewrite of hypot.
+
+Sun Mar 11 13:21:04 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * parse.y (warn_unless_e_option): warning condition was wrong.
+
+ * parse.y (warning_unless_e_option): ditto.
+
+Sun Mar 11 00:55:31 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (install_rb): fix handling of destination path.
+
+Sat Mar 10 22:56:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_all): new method 'all?', which returns true if
+ block returns true for all elements.
+
+ * enum.c (enum_any): new method 'any?', which returns true if
+ block returns true for any of elements.
+
+Sat Mar 10 02:34:18 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * math.c (math_log, math_log10): use nan() instead of 0.0/0.0 on Cygwin.
+
+Fri Mar 9 09:56:19 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (marshal_load): do not give warning unless explicitly
+ set to verbose.
+
+Fri Mar 9 02:07:53 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_exit): give string value "exit" to SystemExit.
+
+ * ruby.c (proc_options): -v should not print version if
+ proc_options called via moreswitches().
+
+Thu Mar 8 17:45:19 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: one write(2) per one line.
+
+Wed Mar 7 14:26:11 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * math.c (math_log, math_log10): should return NaN if x < 0.0
+ on Cygwin.
+
+Thu Mar 7 10:31:26 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (stmt): while/until modifier must work for empty body.
+
+Tue Mar 6 22:53:58 2001 Kazuhiro Yoshida <moriq.kazuhiro@nifty.ne.jp>
+
+ * ruby.c (ruby_set_argv): clear ARGV contents before adding args.
+
+Tue Mar 6 10:50:29 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): rescue and ensure clauses should be allowed
+ to appear in singleton method body.
+
+Mon Mar 5 17:25:13 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_eq): compare Procs using blocktag equality.
+
+ * eval.c (proc_to_s): stringify according to block tag address.
+
+Mon Mar 5 17:19:56 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (gettimeofday): use GetLocalTime() instead of ftime()
+ for high-resolution timing.
+
+Sun Mar 4 17:01:09 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * string.c (trnext): support backslash escape in String#tr.
+
+Sat Mar 3 16:15:16 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): push cbase if ruby_cbase != ruby_class, for
+ example in the case NODE_DEFN/NODE_DEFS are called within
+ module_eval.
+
+Wed Feb 28 11:02:41 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_delete_bang): delete! should take at least 1
+ argument.
+
+ * ruby.c (load_file): add rb_gc() after loading to avoid
+ extraordinary memory growth.
+
+Wed Feb 28 05:01:40 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * dir.c (rb_glob_helper): "./foo" should match "foo", not "./foo".
+
+Tue Feb 27 16:38:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_get): retrieve Object's constant if no current
+ class is available (e.g. defining singleton class for Fixnums).
+
+ * eval.c (ev_const_defined): check Object's constant if no current
+ class is available (e.g. defining singleton class for Fixnums).
+
+ * time.c (time_timeval): negative time interval should not be
+ allowed.
+
+ * eval.c (proc_call): ignore block to `call' always, despite of
+ being orphan or not.
+
+Wed Feb 27 10:16:32 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_yield_0): should check based on rb_block_given_p()
+ and rb_f_block_given_p().
+
+Tue Feb 27 04:13:45 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * configure.in (frame-address): --enable-frame-address to allow
+ __builtin_frame_address() to be used.
+
+ * eval.c (stack_length): use __builtin_frame_address() based on
+ the macro USE_BUILTIN_FRAME_ADDRESS.
+
+ * gc.c (rb_gc): ditto.
+
+ * gc.c (Init_stack): ditto.
+
+Mon Feb 26 16:20:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): call ruby_show_version() just once.
+
+ * dir.c (dir_s_open): returns the value from a block (if given).
+
+Mon Feb 26 14:29:04 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: add C++ rules in addition to C
+ rules.
+
+Mon Feb 26 00:04:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_call): should not modify ruby_block->frame.iter
+ based on ruby_frame->iter altered by PUSH_ITER().
+
+Mon Feb 26 05:27:52 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/net/telnet.rb: #telnetmode(), #binmode(): bug fix.
+ thanks to nobu.nakada@nifty.ne.jp.
+
+Mon Feb 26 04:55:50 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: CGI#form(): bug fix.
+ thanks to MoonWolf <moonwolf@moonwolf.com>.
+
+ * lib/cgi.rb: CGI#rfc1123_date(): improvement.
+ thanks to Tomoyasu Akita <genzo-@dm4lab.to>.
+
+ * lib/cgi.rb: CGI#header(): improvement for mod_ruby.
+ thanks to Shugo Maeda <shugo@ruby-lang.org>.
+
+Sun Feb 25 02:45:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_file_s_rename): avoid Cygwin's bug.
+
+Sat Feb 24 23:32:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_fd_close): should save current context before
+ raising exception.
+
+Sat Feb 24 22:14:00 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (myrename): fix error handling.
+
+Sat Feb 24 13:58:48 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: always close connection on request without
+ body.
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: change copyright.
+
+Sat Feb 24 03:15:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (set_stdin): preserve original stdin.
+
+ * io.c (set_outfile): preserve original stdout/stderr.
+
+Fri Feb 23 08:28:58 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: clear read buffer after reopen.
+
+ * lib/net/protocol.rb: refactoring.
+
+ * lib/net/http.rb: split module HTTPHeader from HTTPResponse.
+
+Tue Feb 20 23:45:35 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * process.c: add W* macro if not available.
+
+Tue Feb 20 16:37:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: add check for negative time_t for gmtime(3).
+
+ * time.c (time_new_internal): no positive check if gmtime(3) can
+ handle negative time_t.
+
+ * time.c (time_timeval): ditto.
+
+ * bignum.c (rb_big2long): should not raise RangeError for Bignum
+ LONG_MIN value.
+
+Mon Feb 19 17:46:37 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_substr): "a"[1,2] should return ""; need
+ rubicon upgrade.
+
+Mon Feb 19 12:10:36 2001 Triet H. Lai <thlai@mail.usyd.edu.au>
+
+ * error.c (rb_sys_warning): new function to give warning with
+ strerror() message.
+
+ * dir.c (rb_glob_helper): better error handling, along with
+ performance tune.
+
+Mon Feb 19 01:55:43 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (secure_visibility): visibility check for untainted modules.
+
+Mon Feb 19 00:29:29 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * signal.c (sigpipe): sighandler which does nothing.
+
+ * signal.c (trap): set sigpipe function for SIGPIPE.
+
+ * signal.c (Init_signal): default SIGPIPE handler should be
+ sigpipe function.
+
+Sun Feb 18 15:42:38 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/curses/extconf.rb: add dir_config.
+
+ * missing/flock.c: use fcntl(2) instead of lockf(2).
+
+Sun Feb 18 05:46:03 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: Response#range_length was not debugged.
+
+Sun Feb 18 04:02:03 2001 Yasushi Shoji <yashi@yashi.com>
+
+ * array.c (rb_ary_subseq): wrong boundary check.
+
+Sun Feb 18 00:09:50 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/win32.c: make file I/O faster on mswin32/mingw32.
+
+ * win32/win32.h: ditto.
+
+ * rubysig.h: ditto.
+
+Sat Feb 17 23:32:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (cond0): integer literal in condition should not be
+ compared to lineno ($.).
+
+Fri Feb 16 01:44:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (set_outfile): f should be the FILE* from the assigning value.
+
+ * ext/socket/socket.c (tcp_s_open): should not give default value
+ to local_host.
+
+ * time.c (time_s_times): move to Process::times.
+
+ * file.c (rb_file_s_lchmod): new method File::lchmod.
+
+ * file.c (rb_file_s_lchown): new method File::lchown.
+
+Thu Feb 15 11:33:49 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi/session.rb (close): fixed reversed condition.
+
+Thu Feb 15 08:34:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_waitall): new method based on a patch from Brian
+ Fundakowski Feldman <green@green.dyndns.org>.
+
+ * process.c (last_status_set): objectify $? value (Process::Status).
+
+Wed Feb 14 17:28:24 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: supports unknown resp_text_code.
+
+Wed Feb 14 00:44:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_glob): support backslash escape of metacharacters
+ and delimiters.
+
+ * dir.c (remove_backslases): remove backslashes from path before
+ calling stat(2).
+
+ * dir.c (dir_s_glob): call rb_yield directly (via push_pattern) if
+ block is given to the method.
+
+ * dir.c (push_pattern): do not call rb_ary_push; yield directly.
+
+ * eval.c (blk_copy_prev): reduced ALLOC_N too much.
+
+ * eval.c (frame_dup): ditto.
+
+Tue Feb 13 23:05:38 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c (lstat): should use rb_sys_stat if lstat(2) is not
+ available.
+
+Tue Feb 13 08:43:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_ctl): do not call ioctl/fcntl for f2, if f and f2
+ have same fileno.
+
+Tue Feb 13 01:13:43 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): raise LocalJumpError if unexpected local jumps
+ appear during load.
+
+ * ext/socket/socket.c (bsock_close_read): don't call rb_thread_fd_close();
+ it's supposed to be called by io_io_close().
+
+ * ext/socket/socket.c (bsock_close_read): do not modify f and f2.
+
+ * ext/socket/socket.c (bsock_close_write): ditto.
+
+ * ext/socket/socket.c (sock_new): avoid dup(2) on sockets.
+
+ * parse.y (primary): preserve and clear in_single and in_def using
+ stack to prevent nested method errors in singleton class bodies.
+
+Sun Feb 11 16:00:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (stack_length): use __builtin_frame_address() only if
+ GCC and i386 CPU.
+
+ * gc.c (rb_gc, Init_stack): ditto.
+
+ * configure.in: add ac_cv_func_getpgrp_void=yes on DJGPP.
+
+Sat Feb 10 23:43:49 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * hash.c (rb_any_hash): dumped core on machines sizeof(int) != sizeof(long).
+
+Sat Feb 10 23:07:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_for_fd): IO::for_fd(fd) - new method.
+
+ * regex.c (PREV_IS_A_LETTER): should not treat c>0x7f as a word
+ character if -Kn.
+
+Sat Feb 10 00:00:30 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/win32.c (win32_stat): replace stat to enable when pathname
+ ends with '/' or '\' for mswin32 on Win9X / Win2k.
+
+ * win32/win32.h: ditto.
+
+ * ruby.h: ditto.
+
+ * dir.c (rb_glob_helper): ditto.
+
+ * file.c (rb_stat, rb_file_s_stat, eaccess, check3rdbyte): ditto.
+
+Fri Feb 9 22:54:57 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath): convert '\\' to '/'
+ before finding executable file path.
+
+Fri Feb 9 17:41:53 2001 Triet H. Lai <thlai@mail.usyd.edu.au>
+
+ * dir.c (rb_glob_helper): do not follow symbolic links.
+
+Thu Feb 8 21:27:24 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (install_rb): fix handling of relative path.
+
+ * lib/mkmf.rb (create_makefile): add srcdir.
+
+Thu Feb 8 02:22:09 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: join HTTPReadResponse into HTTPResponse again.
+
+ * lib/net/http.rb: move http_version() from HTTPRequest to
+ HTTPResponse.
+
+ * lib/net/protocol.rb: refactoring.
+
+Wed Feb 7 16:27:27 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: split HTTPResponse into HTTPReadResponse
+ module.
+
+ * lib/net/protocol.rb: add Net::net_private.
+
+ * lib/net/protocol.rb: Socket#reopen takes arg, open_timeout.
+
+Wed Feb 7 16:05:22 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (parse_quotedwords): %w should allow parenthesis escape.
+
+Wed Feb 7 00:57:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parse_qstring): %q should allow terminator escape.
+
+ * re.c (rb_reg_options): new method to give an option values.
+
+ * parse.y (cond0): disable special treating of integer literal in
+ conditional unless option -e is supplied. changes current
+ behavior. experimental.
+
+ * parse.y (cond0): give warning for string/integer literals and
+ dot operators in conditionals unless option -e is supplied.
+
+ * re.c (rb_reg_equal): all option flags should be same to be equal.
+
+Tue Feb 6 21:30:44 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: call on_connect() on re-opening socket.
+
+ * lib/net/pop.rb: also POP3 can use APOP auth.
+
+Tue Feb 6 20:19:10 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: add HTTP#request.
+
+ * lib/net/http.rb: take HTTP 1.0 server into account (incomplete).
+
+ * lib/net/protocol.rb: timeout for open/read.
+
+ * lib/net/protocol.rb: add Protocol#on_connect,on_disconnect.
+
+Mon Feb 5 23:15:46 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (Init_Exception): make Interrupt a subclass of
+ SignalException.
+
+Mon Feb 5 00:39:06 2001 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
+
+ * dir.c: use ISXXX() instead of isxxx().
+
+ * dln.c (aix_loaderror): ditto.
+
+ * file.c (rb_file_s_expand_path): ditto.
+
+ * string.c (rb_str_upcase_bang): ditto.
+
+ * win32/win32.c (do_spawn): ditto.
+
+ * win32/win32.c (NtMakeCmdVector): ditto.
+
+ * win32/win32.c (opendir): ditto.
+
+Sat Feb 3 14:44:53 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * configure.in (AC_C_INLINE): check inline attribute.
+
+ * gc.c (is_pointer_to_heap): use inline rather than __inline__.
+
+ * pack.c (hex2num): ditto.
+
+ * ruby.h (rb_class_of, rb_type, rb_special_const_p): ditto.
+
+ * util.c (rb_class_of, rb_type, rb_special_const_p): defined in
+ ruby.h.
+
+Fri Feb 2 16:14:51 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): returns self, even if its length is
+ less than 2.
+
+ * eval.c (POP_VARS): propagate DVAR_DONT_RECYCLE, if
+ SCOPE_DONT_RECYCLE of ruby_scope is set.
+
+Wed Jan 31 22:27:29 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: gcc-2.95.2-7(Cygwin) support.
+ add -mwin32 if available.
+
+ * cygwin/GNUmakefile: ditto.
+
+Tue Jan 30 17:56:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fetch): new method.
+
+Mon Jan 29 17:36:19 2001 TOYOFUKU Chikanobu <toyofuku@juice.or.jp>
+
+ * eval.c (rb_eval): nd_iter evaluation should be wrapped by
+ BEGIN_CALLARGS and END_CALLARGS.
+
+Mon Jan 29 14:25:39 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): return from block jumps directory to
+ block invoker.
+
+Mon Jan 29 01:40:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_independent): should not clear str->orig here.
+ it's too early.
+
+Fri Jan 26 01:42:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: clarify do ambiguity, bit more complex but natural
+ from my point of view.
+
+Wed Jan 24 14:58:08 2001 Akinori MUSHA <knu@ruby-lang.org>
+
+ * lib/cgi.rb: fix the problem that when running under mod_ruby
+ header() outputs only one Set-Cookie line.
+
+Wed Jan 24 01:45:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (POP_BLOCK_TAG): call rb_gc_force_recycle() if block has
+ not been objectified.
+
+ * eval.c (rb_callcc): should nail down block->tag history to avoid
+ rb_gc_force_recycle().
+
+Tue Jan 23 18:51:57 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): should finalize objects in
+ deferred_final_list too.
+
+Tue Jan 23 16:10:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (os_live_obj): do not list terminated object.
+
+ * gc.c (os_obj_of): ditto.
+
+ * gc.c (rb_gc_mark): support new T_BLKTAG tag.
+
+ * gc.c (obj_free): ditto.
+
+ * eval.c (new_blktag): creation of new block tag, which holds
+ destination of global jump and orphan status.
+
+ * eval.c (block_pass): break from orphan Proc object will raise a
+ LocalJumpError exception.
+
+Mon Jan 22 16:33:16 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * mkconfig.rb: autoconf 2.49 support.
+
+Mon Jan 22 00:32:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): behavior consistency with proc_call(). do
+ not propagate `break'.
+
+Sat Jan 20 03:54:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): fixed serious syntax misbehavior. do's
+ preceding was too high. a block in `foo bar do .. end' should
+ be passed to `foo', not `bar'.
+
+ * parse.y (block_call): syntax restructure.
+
+Thu Jan 18 04:28:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_read): new method to call IO#read from
+ pathname. In addition, it accepts third optional argument to
+ specify starting point.
+
+Wed Jan 17 13:28:26 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: remove DEFS definition.
+
+ * mkconfig.rb: ditto.
+
+ * win32/config.status.in: ditto.
+
+Tue Jan 16 17:00:50 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: ignore EOFError for read.
+
+ * lib/net/http.rb: user specified header was not used.
+
+Mon Jan 15 16:00:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): should check associated pointer packed by
+ pack("P"). Thus pointers can be retrieved only from pointer
+ packed strings. restriction added.
+
+Sun Jan 14 21:49:28 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * sprintf.c (rb_f_sprintf): simple typo. binary base should be 2,
+ not '2'.
+
+ * re.c (rb_reg_s_last_match): should explicitly return nth match.
+
+Sun Jan 14 18:21:30 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/config.status.in: add some field.
+
+ * win32/win32.c (isInternalCmd): ignore case for shell's internal
+ command.
+
+ * win32/win32.c (do_spawn): recognize quoted command line.
+
+Sun Jan 14 04:10:27 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb (adding): too few "yield" in case of arg is
+ not String/File.
+
+ * lib/net/http.rb: add http request object.
+
+Sat Jan 13 19:39:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * re.c (rb_reg_desc): separate RE_OPTION_MULTILINE
+
+ * re.c (rb_reg_options): add RE_OPTION_{POSIXLINE,RE_OPTION_MULTILINE,
+ RE_OPTION_EXTENDED}
+
+Thu Jan 11 10:45:04 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.h, win32/config.h.in: move NORETURN from win32.h
+ to config.h.in.
+
+ * win32/config.h.in (inline): renamed from INLINE.
+
+ * djgpp/config.hin (INLINE): removed.
+
+Thu Jan 11 06:45:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_dup): should propagate FL_SINGLETON.
+
+ * object.c (inspect_obj): handles the case of no instance variable.
+
+Wed Jan 10 16:15:08 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.h: NORETURN macro is changed for VC++ 6.0.
+
+ * eval.c, intern.h: ditto.
+
+ * djgpp/config.hin, win32/win32.h: ditto.
+
+ * configure.in: ditto.
+
+Wed Jan 10 13:54:53 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * process.c (proc_setuid): use setresuid() if available.
+
+ * process.c (proc_setgid): use setresgid() if available.
+
+ * configure.in: ditto.
+
+Wed Jan 10 01:50:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in (AC_C_INLINE): check inline attribute.
+
+ * string.c (rb_str_reverse_bang): forgot to call rb_str_modify().
+
+Tue Jan 9 17:41:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_taint): check frozen status before modifying
+ taint status.
+
+ * object.c (rb_obj_untaint): ditto.
+
+Tue Jan 9 16:22:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): new method.
+
+Tue Jan 9 02:16:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): clear klass member of
+ terminating object.
+
+ * eval.c (rb_call): raise exception for terminated object.
+
+Mon Jan 8 21:24:37 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivrem): t2 might be too big for signed long; do
+ not use rb_int2big(), but rb_uint2big().
+
+Mon Jan 8 21:35:10 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * file.c (path_check_1): should restore modified path.
+
+Mon Jan 8 03:09:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_load_fail): new func to report LoadError.
+
+ * ruby.c (load_file): use rb_load_fail.
+
+Sat Jan 6 00:17:18 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * pack.c (pack_pack): avoid infinite loop(pack 'm2').
+
+Fri Jan 5 01:02:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_finalize): should enclosed by PUSH_TAG/POP_TAG.
+
+ * gc.c (rb_gc_mark): link 2 of NODE_IFUNC should not be explicitly
+ marked. it may contain non object pointer.
+
+Tue Jan 2 00:20:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (reg_s_last_match): Regexp::last_match(nth) returns nth
+ substring of the match (alternative for $& and $<digit>).
+
+Sun Dec 31 01:39:16 2000 Guy Decoux <decoux@moulon.inra.fr>
+
+ * eval.c (rb_mod_define_method): wrong comparison for blocks.
+
+Sat Dec 30 19:28:50 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (id2ref): should handle Symbol too.
+
+ * gc.c (id2ref): should print original ptr value
+
+Sat Dec 30 03:14:22 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_iterate): NODE_CFUNC does not protect its data
+ (nd_tval), so create new node NODE_IFUNC for iteration C
+ function.
+
+ * eval.c (rb_yield_0): use NODE_IFUNC.
+
+ * gc.c (rb_gc_mark): support NODE_IFUNC.
+
+Fri Dec 29 11:41:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (mem_error): prohibit recursive mem_error().
+ (ruby-bugs-ja:PR#36)
+
+Fri Dec 29 11:05:41 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_fd_writable): should not switch context if
+ rb_thread_critical is set.
+
+ * eval.c (rb_thread_wait_fd): ditto.
+
+ * eval.c (rb_thread_wait_for): ditto.
+
+ * eval.c (rb_thread_select): ditto.
+
+ * eval.c (rb_thread_join): join during critical section causes
+ deadlock.
+
+Fri Dec 29 00:38:46 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * m17n.c: new file - core functions of M17N.
+
+Tue Dec 26 18:46:41 2000 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * lib/debug.rb: Avoid thread deadlock in debugging stopped thread.
+
+ * lib/debug.rb: Uncleared 'finish' state.
+
+Tue Dec 26 16:53:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): remove dvar node by rb_gc_force_recycle()
+ more eagerly.
+
+ * eval.c (rb_f_binding): recycling should be stopped for outer
+ scope too.
+
+ * eval.c (proc_new): ditto.
+
+Tue Dec 26 15:45:35 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_inspect): should treat multibyte characters
+ properly.
+
+Mon Dec 25 17:49:08 2000 K.Kosako <kosako@sofnec.co.jp>
+
+ * string.c (rb_str_replace_m): unexpected string share happens if
+ replace is done for associated (STR_NO_ORIG) string.
+
+Tue Dec 26 15:01:53 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_p): should not call rb_io_flush() if rb_defout is not
+ a IO (T_FILE).
+
+Mon Dec 25 15:52:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.6.2 released.
+
+Mon Dec 25 05:11:04 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: version 2.1.2 (some bug fixes).
+
+ * lib/cgi.rb: Regexp::last_match[1] --> $1
+
+ * lib/net/telnet.rb: ditto.
+
+Mon Dec 25 04:43:02 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: does not send HEAD on closing socket.
+
+Mon Dec 25 00:44:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_any_cmp): should use rb_str_cmp() if TYPE == T_STRING
+ and CLASS_OF == rb_cString.
+
+ * string.c (rb_str_new4): should copy class of original too.
+
+Mon Dec 25 00:04:54 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_thread_schedule): initial value of `max' changed to -1.
+
+Mon Dec 25 00:16:14 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_replace_m): copy-on-write replace.
+
+ * parse.y (yylex): should handle => after identifier as well as ==
+ and =~.
+
+Sat Dec 23 23:55:57 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr2inum): Integer("") should not return 0.
+
+Sat Dec 23 11:55:57 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_and): Array#& should preserve original order.
+
+Sat Dec 23 03:44:16 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: set @closed false in Socket#reopen.
+
+ * lib/net/pop.rb: add POP3.foreach, delete_all.
+
+ * lib/net/pop.rb: add POP3#delete_all.
+
+ * lib/net/http.rb: add HTTP.version_1_1, version_1_2
+
+ * lib/net/http.rb: refactoring.
+
+Fri Dec 22 23:11:12 2000 Ueno Katsuhiro <unnie@blue.sky.or.jp>
+
+ * eval.c (rb_feature_p): ext might be null.
+
+Fri Dec 22 17:04:12 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/win32.c (myselect): avoid busy loop by adjusting fd_count.
+
+Fri Dec 22 15:07:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr2inum): prefix like '0x' had removed too much.
+
+Thu Dec 21 13:01:46 2000 Tanaka Akira <akr@m17n.org>
+
+ * lib/net/ftp.rb (makeport): don't use TCPsocket.getaddress.
+
+Wed Dec 20 12:00:15 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_lshift): should cast up to BDIGIT_DBL.
+
+ * parse.y (yylex): disallow trailing '_' for numeric literals.
+
+ * bignum.c (rb_cstr2inum): allow `_' within converting string.
+
+ * eval.c (specific_eval): should take no argument if block is
+ supplied.
+
+Tue Dec 19 13:44:50 2000 K.Kosako <kosako@sofnec.co.jp>
+
+ * io.c (rb_f_p): should flush rb_defout, not stdout.
+
+Tue Dec 19 00:57:10 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_minus): usec might overflow. (ruby-bugs-ja:PR#35)
+
+ * eval.c (rb_obj_extend): Object#extend should take at least one
+ argument.
+
+ * parse.y (mrhs_basic): should check value_expr($3), not $1.
+
+Mon Dec 18 23:18:39 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * util.c (mblen, __crt0_glob_function): add for multibyte
+ on DJGPP 2.03.
+
+Mon Dec 18 18:10:30 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_plus): usec might underflow (ruby-bugs-ja:#PR33).
+
+Mon Dec 18 08:11:20 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_set_default): should call rb_hash_modify().
+
+Sat Dec 16 02:58:26 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * eval.c (rb_eval): should clear ruby_errinfo on retry.
+
+ * eval.c (rb_rescue2): ditto.
+
+Thu Dec 14 13:06:18 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * class.c (rb_include_module): prohibit frozen class/module.
+
+ * eval.c (rb_frozen_class_p): make external.
+
+ * intern.h (rb_frozen_class_p): prototyped.
+
+ * intern.h (rb_undef): prototyped not but rb_undef_method()
+ which is also in ruby.h.
+
+Thu Dec 14 09:20:26 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: support -T1 on ruby 1.6.2
+
+ * lib/cgi.rb: $1 --> Regexp::last_match[1]
+
+ * lib/net/telnet.rb: ditto.
+
+Wed Dec 13 23:27:06 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): handles case statement without expr, which
+ looks for any TRUE (non nil, non false) when expression.
+
+ * parse.y (primary): case expression should not be compstmt, but
+ mere expr.
+
+ * parse.y (primary): case without following expression is now
+ separated rule.
+
+Wed Dec 13 12:41:27 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.c (proc_options): accept "--^M" for DOS line endings.
+
+Tue Dec 12 15:45:42 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (newline_node): cancel newline unification.
+
+Mon Dec 11 23:01:57 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): supports cases `?' precedes EOF and newline.
+
+Mon Dec 11 12:11:25 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (call_end_proc): some frame members were left
+ uninitialized.
+
+Mon Dec 11 01:14:58 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fptr_finalize): do not fclose stdin, stdout and
+ stderr at exit.
+
+Sat Dec 9 17:34:48 2000 Tachino Nobuhiro <tachino@open.nm.fujitsu.co.jp>
+
+ * time.c (time_cmp): should check with kind_of?, not instance_of?
+
+ * time.c (time_eql): ditto.
+
+ * time.c (time_minus): ditto.
+
+Fri Dec 8 17:23:25 2000 Tachino Nobuhiro <tachino@open.nm.fujitsu.co.jp>
+
+ * sprintf.c (rb_f_sprintf): proper string precision treat.
+
+Fri Dec 8 10:44:05 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_remove_cvar): Module#remove_class_variable
+ added.
+
+Thu Dec 7 17:35:51 2000 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (stack_length): don't use __builtin_frame_address() on alpha.
+
+Wed Dec 6 18:07:13 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * djgpp/config.sed, win32/Makefile.sub: typo.
+
+ * eval.c (rb_mod_define_method): avoid VC4.0 warnings.
+
+Wed Dec 6 13:38:08 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_and): tuning, make hash from shorter operand.
+
+Wed Dec 6 01:28:50 2000 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * gc.c (rb_gc): __builtin_frame_address() should not be used on
+ MacOS X.
+
+ * gc.c (Init_stack): ditto.
+
+Mon Dec 4 13:44:01 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/jcode.rb: consider multibyte. not /n.
+
+Mon Dec 4 09:49:36 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_inspect): output whole string contents. no more `...'
+
+ * string.c (rb_str_dump): should propagate taintness.
+
+ * hash.c (env_inspect): hash like human readable output.
+
+ * variable.c (rb_ivar_get): prohibiting instance variable access
+ is too much restriction.
+
+ * class.c (method_list): retrieving information should not be
+ restricted where $SAFE=4.
+
+ * class.c (rb_obj_singleton_methods): ditto.
+
+ * eval.c (rb_thread_priority): ditto.
+
+ * eval.c (rb_thread_local_aref): ditto.
+
+ * variable.c (rb_obj_instance_variables): ditto.
+
+ * variable.c (rb_mod_const_at): ditto.
+
+ * variable.c (rb_mod_class_variables): ditto.
+
+ * eval.c (rb_exec_end_proc): end_proc should be preserved.
+
+Sat Dec 2 22:32:43 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): || should accept exactly zero argument.
+
+ * parse.y (stmt): multiple right hand side for single assignment
+ (e.g. a = 1,2) is allowed.
+
+Wed Nov 29 07:55:29 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_long): dumping long should be smaller than 32bit max.
+
+ * marshal.c (w_long): shorter long format for small integers(-123..122).
+
+ * marshal.c (r_long): ditto.
+
+Tue Nov 28 18:10:51 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_define_method): quick hack to implement
+ on-the-fly method definition. experimental.
+
+Mon Nov 27 17:00:35 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should not redefine builtin classes/modules
+ from within wrapped load.
+
+Mon Nov 27 08:57:33 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (call_end_proc): should be isolated from outer block.
+
+Mon Nov 27 00:10:08 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_ctl): call ioctl/fcntl for fptr->f2 too.
+
+ * process.c (rb_f_fork): call rb_thread_atfork() after creating
+ child process.
+
+ * eval.c (rb_thread_atfork): kill all other threads immediately,
+ then turn the current thread into the main thread.
+
+Sat Nov 25 23:12:22 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_run): move calling point of rb_trap_exit after
+ cleaning up threads.
+
+ * eval.c (ruby_finalize): new function to call EXIT trap, END
+ procs and GC finalizers.
+
+ * eval.c (rb_exec_end_proc): prevent recursion.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): ditto.
+
+ * signal.c (rb_trap_exit): ditto. made static.
+
+ * process.c (rb_f_fork): should swallow all exceptions from block
+ execution.
+
+ * process.c (fork_rescue): should call ruby_finalize().
+
+ * parse.y (yycompile): rb_gc() removed. I don't remember why I put
+ this here. test code?
+
+Fri Nov 24 22:03:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (EXCL): exclusive information is now stored in an
+ instance variable. this enables proper marshal dump.
+
+ * process.c (proc_waitpid): should clear rb_last_status ($?) if
+ no pid was given by waitpid(2).
+
+Thu Nov 23 01:35:38 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_waitpid2): returns nil if no pid found.
+
+Wed Nov 22 23:45:15 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eq): new method. Compares start and end of range
+ respectively.
+
+Wed Nov 22 11:01:32 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_class_variables): should honor singleton
+ class variable rule defined yesterday.
+
+Tue Nov 21 23:24:14 2000 Mitsuteru S Nakao <nakao@kuicr.kyoto-u.ac.jp>
+
+ * numeric.c (flodivmod): missing second operand (typo).
+
+Tue Nov 21 03:39:41 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (marshal_load): marshal format compatibility check
+ revised. greater minor revision is UPWARD compatible;
+ downward compatibility is not assured.
+
+ * eval.c (is_defined): clarify class variable behavior for
+ singleton classes. class variables within singleton class
+ should be treated like within singleton method.
+
+Mon Nov 20 13:45:21 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): set ruby_sourceline before evaluating
+ exceptions.
+
+ * gc.c (gc_sweep): defer finalization in GC during compilation or
+ interrupt prohibit section.
+
+ * gc.c (gc_sweep): mark all nodes before sweeping if GC happened
+ during compilation.
+
+ * eval.c (rb_eval): should treat class variables specially in a
+ method defined in the singleton class.
+
+Mon Nov 20 10:20:21 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c, win32/win32.c, ruby.h: add rb_iglob().
+
+Mon Nov 20 00:18:16 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_subseq): should return nil for outbound start
+ index.
+
+ * marshal.c (marshal_load): show format versions explicitly when
+ format version mismatch happens.
+
+Sun Nov 19 06:13:24 2000 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * marshal.c: use long for string/array length.
+
+ * pack.c (swaps): use bit-or(|) instead of plus(+).
+
+ * pack.c (swapl): ditto.
+
+Sat Nov 18 15:18:16 2000 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * array.c (rb_ary_replace): array size should be in long.
+
+ * array.c (rb_ary_concat): ditto.
+
+ * array.c (rb_ary_hash): ditto.
+
+Sat Nov 18 14:07:20 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: Socket#readline() reads until "\n", not "\r\n"
+
+Fri Nov 17 14:55:18 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * string.c (rb_str_succ): output should be NUL terminated.
+
+Fri Nov 17 02:54:15 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_close): need not to flush before closing.
+
+ * eval.c (rb_thread_join): should preserve last thread status when
+ THREAD_TO_KILL.
+
+ * eval.c (rb_thread_stop): ditto.
+
+ * io.c (io_fflush): wrap fflush by TRAP_BEG, TRAP_END.
+
+ * eval.c (rb_eval): method defined within singleton class
+ definition should behave like singleton method about class
+ variables.
+
+ * eval.c (is_defined): ditto.
+
+Thu Nov 16 23:06:07 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: can call {old,new}_implementation any times.
+
+ * lib/net/http.rb: HTTP#connecting, receive ->
+ common_oper, connecting.
+
+ * lib/net/http.rb: output warning if u_header includes
+ duplicated header.
+
+ * lib/net/http.rb: not check Connection:/Proxy-Connection;
+ always read until eof.
+
+ * lib/net/protocol.rb: detects and catches "break" from block.
+
+Thu Nov 16 16:32:45 2000 Masahiro Tanaka <masa@stars.gsfc.nasa.gov>
+
+ * bignum.c (bigdivrem): should have incremented ny first.
+
+Thu Nov 16 14:58:00 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/socket/socket.c (sock_new): duplicates file descriptor
+ with myfddup() on mswin32/mingw32.
+
+ * win32/win32.h: uses system original fdopen().
+
+ * win32/win32.c (myfddup): newly added instead of myfdopen().
+
+ * win32/win32.c (mybind, myconnect, mygetsockname, mygetsockopt,
+ mylisten, mysetsockopt): now accept file descriptor only, not
+ SOCKET.
+
+ * win32/win32.c (myaccept, mysocket): return file descriptor,
+ instead of SOCKET.
+
+Thu Nov 16 10:23:24 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (massign): too strict check for nameless rest argument.
+
+ * eval.c (method_arity): mere * should return -1.
+
+ * eval.c (intersect_fds): should check all FDs in the fd_set.
+
+Wed Nov 15 19:33:20 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_attr): should clear method cache before calling hook.
+
+ * eval.c (rb_eval): ditto.
+
+ * eval.c (rb_mod_modfunc): ditto.
+
+Mon Nov 13 22:44:52 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_bug): print version to stderr.
+
+Mon Nov 13 19:02:08 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c, io.c, process.c: the exit status of program must be
+ multiplied 256 on mswin32 and msdosdjgpp(system(), ``).
+
+Sat Nov 11 22:57:38 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): uniformed treatment of -a**b, where a is a
+ number literal; hacky but behavior appears more consistent.
+
+ * parse.y (newline_node): reduce newline node (one per line).
+
+ * random.c (rb_f_srand): should be prohibited in safe level
+ greater than 4.
+
+Sat Nov 11 22:37:36 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * rubysig.h: do not use rb_trap_immediate on win32.
+
+ * rubysig.h: new macros, ATOMIC_TEST, ATOMIC_SET, ATOMIC_INC,
+ ATOMIC_DEC, RUBY_CRITICAL and new definition of TRAP_BEG,
+ TRAP_END.
+
+ * gc.c (ruby_xmalloc): should wrap malloc() by RUBY_CRITICAL.
+
+ * signal.c (sighandle): better win32 sig handling.
+
+ * win32/win32.c (flock): better implementation.
+
+ * win32/win32.c (myselect): ditto.
+
+ * win32/win32.c (myaccept): ditto.
+
+ * win32/win32.c (waitpid): ditto.
+
+ * win32/win32.c (myrename): ditto.
+
+ * win32/win32.c (wait_events): support function for win32 signal
+ handling.
+
+Sat Nov 11 08:34:18 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.31.
+
+ * lib/net/http.rb: initializes header in HTTP, not HTTPCommand.
+
+ * lib/net/protocol.rb, http.rb: rewrites proxy code.
+
+Fri Nov 10 16:15:53 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (rb_num2long): use to_int, not to_i.
+
+ * error.c: T_SYMBOL was misplaced by T_UNDEF.
+
+ * parse.y (yylex): eval("^") caused infinite loop.
+
+Thu Nov 9 14:22:13 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_taint_check): should check IO taintness; no
+ operation for untainted IO should be allowed in the sandbox.
+
+ * rubyio.h (GetOpenFile): check IO taintness inside using
+ rb_io_taint_check().
+
+Wed Nov 8 03:08:53 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fflush): ensure fflush(3) would not block by calling
+ rb_thread_fd_writable().
+
+Tue Nov 7 20:29:56 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.30.
+
+ * lib/net/protocol.rb, smtp.rb: Command#critical_ok -> error_ok
+
+ * lib/net/http.rb: reads header when also "100 Continue".
+
+Tue Nov 7 04:32:19 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivrem): use bit shift to make y's MSB set.
+
+Mon Nov 6 1:22:49 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (warn_print): do not use err_append(), to ensure output
+ to stderr.
+
+ * error.c (rb_warn): use warn_print() instead of err_print().
+
+ * error.c (rb_warning): ditto.
+
+ * error.c (rb_bug): ditto.
+
+ * eval.c (rb_load): re-raise exceptions during load.
+
+ * time.c (make_time_t): remove useless adjust
+
+Thu Nov 2 18:01:16 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c (rb_f_rand): half-baked float support fixed. This fix
+ was originally proposed by K.Kosako <kosako@sofnec.co.jp>.
+
+Tue Oct 31 17:27:17 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c: change digit size to `long|int' if long long is
+ available.
+
+ * marshal.c (w_object): support `long|int' digits.
+
+ * marshal.c (r_object): ditto.
+
+Sat Oct 28 23:54:22 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): allow =end at the end of file (without a
+ newline at the end).
+
+Fri Oct 27 10:00:27 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr2inum): should ignore trailing white spaces.
+
+ * bignum.c (rb_str2inum): string may not have sentinel NUL.
+
+Fri Oct 27 02:37:22 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr2inum): wrongly assigned base to c before
+ badcheck check.
+
+Thu Oct 26 02:42:50 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: Command#critical_ok
+
+ * lib/net/smtp.rb: clear critical flag before go to SMTP
+
+Wed Oct 25 12:30:19 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_concat): replacing array might be the receiver
+ itself. do not call rb_ary_push_m.
+
+ * array.c (rb_ary_replace): replacing array might be the receiver
+ itself. use memmove.
+
+Fri Oct 20 07:56:23 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): ARGSPUSH should not modify args array.
+
+Thu Oct 19 14:58:17 2000 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * pack.c (NUM2U32): should use NUM2ULONG().
+
+Tue Oct 17 17:30:34 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (error_print): ruby_sourcefile may be NULL.
+
+Tue Oct 17 16:36:28 2000 Wes Nakamura <wknaka@pobox.com>
+
+ * pack.c (NATINT_U32): wrong use of sizeof.
+
+Tue Oct 17 12:48:20 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (rb_abort): nil check against ruby_errinfo.
+
+ * eval.c (rb_thread_schedule): use FOREACH_THREAD_FROM instead of
+ FOREACH_THREAD, since curr_thread may be removed from thread ring.
+
+ * eval.c (THREAD_ALLOC): errinfo should be Qnil.
+
+ * eval.c (rb_callcc): th->prev,th->next are now already
+ initialized in THREAD_ALLOC.
+
+Mon Oct 16 15:37:33 2000 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * eval.c (rb_thread_inspect): tag size was shorter than required.
+
+ * object.c (rb_obj_inspect): ditto.
+
+Mon Oct 16 14:25:18 2000 Shugo Maeda <shugo@ruby-lang.org>
+
+ * object.c (sym_inspect): used `name' before initialization.
+
+Mon Oct 16 14:06:00 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): use NATINT_U32 for 'l', 'L', and 'N'.
+
+ * pack.c (I32,U32): 32 bit sized integer.
+
+ * pack.c (OFF16,OFF32B): big endian offset for network byteorder.
+
+Mon Oct 16 06:39:32 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: hex-alpha is not [a-h] but [a-f].
+
+Mon Oct 16 01:02:02 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): should not abort on exception if
+ $SAFE >= 4.
+
+ * parse.y (sym): symbols for class variable names.
+
+Sun Oct 15 01:49:18 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_flock): should accept interrupt.
+
+ * process.c (rb_waitpid): ditto.
+
+ * process.c (rb_waitpid): ditto.
+
+ * process.c (proc_wait): ditto.
+
+ * process.c (proc_waitpid2): wrong recursion.
+
+Sat Oct 14 03:32:13 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_alloc): should not link a new thread in the
+ live thread ring before initialization.
+
+Fri Oct 13 17:08:09 2000 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: new file.
+
+Thu Oct 12 18:56:28 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/pop.rb: POP3#reset
+
+ * lib/net/http.rb: a code for "Switch Protocol" was wrongly 100.
+
+Thu Oct 12 01:23:38 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: bug fix: CGI::html(): PRETTY option didn't work.
+
+Thu Oct 12 00:03:02 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (sym_inspect): should adjust string length.
+
+ * struct.c (rb_struct_to_s): ditto.
+
+ * struct.c (rb_struct_inspect): ditto.
+
+Wed Oct 11 22:15:47 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (rb_thread_inspect): should adjust string length.
+
+ * object.c (rb_any_to_s): ditto.
+
+ * object.c (rb_obj_inspect): ditto.
+
+Wed Oct 11 18:13:50 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): should check insecure exit.
+
+Wed Oct 11 14:29:51 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: 2nd arg for ProtocolError#initialize is
+ optional.
+
+ * lib/net/http.rb: code refining.
+
+Wed Oct 11 11:13:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): setter method (e.g. foo=) should always be
+ public.
+
+ * eval.c (rb_thread_raise): should not raise SecurityError if
+ exception raised by the interpreter.
+
+ * eval.c (rb_thread_cleanup): skip all THREAD_KILLED threads
+ before FOREACH_THREAD.
+
+Tue Oct 10 16:11:54 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c (dln_load): remove unused code for Cygwin.
+
+Tue Oct 10 09:49:23 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (Init_File): FileTest.size should return 0 (not nil) for
+ empty files.
+
+Sun Oct 8 13:20:26 2000 Guy Decoux <decoux@moulon.inra.fr>
+
+ * eval.c (POP_SCOPE): not just set SCOPE_DONT_RECYCLE, but do
+ scope_dup().
+
+Sat Oct 7 15:10:50 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_reverse_bang): unnecessary ALLOCA_N() was
+ removed.
+
+Fri Oct 6 14:50:24 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: remove "DESTDIR =".
+
+ * Makefile.in, win32/Makefile.sub, ruby.1: renamed -X to -C.
+
+Fri Oct 6 12:50:52 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_plus): use to_ary(), not Check_Type().
+
+ * array.c (rb_ary_concat): ditto.
+
+ * gc.c (rb_gc): use __builtin_frame_address() for gcc.
+
+ * eval.c (stack_length): ditto.
+
+ * parse.y (assign_in_cond): stop warning till some better warning
+ condition will be found.
+
+Thu Oct 5 18:02:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_dup): should have propagated taint flag.
+ (ruby-bugs:#PR64,65)
+
+Wed Oct 4 00:26:11 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_arity): proc{|a|}'s arity should be -1.
+
+Mon Oct 2 05:28:58 2000 akira yamada <akira@ruby-lang.org>
+
+ * string.c (trnext): minus at the end of pattern.
+
+Sun Oct 1 00:43:34 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: exp-name was wrong on cygwin and mingw32.
+
+Thu Sep 28 14:57:09 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should try must_string calculation
+ every time.
+
+Tue Sep 19 23:47:44 2000 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * configure.in, config.guess, config.sub: MacOS X support.
+
+Wed Sep 27 18:40:05 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.6.1 released.
+
+Wed Sep 27 16:13:05 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * mkconfig.rb: variables should be expanded only if /\$\{?\w+\}?/.
+
+Tue Sep 26 18:09:51 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * string.c: include <math.h>
+
+Tue Sep 26 15:59:50 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_dup): metaclasses of class/module should not be
+ cleared by rb_obj_dup.
+
+Tue Sep 26 02:44:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (GC_MALLOC_LIMIT): size extended.
+
+ * regex.c (DOUBLE_STACK): use machine's stack region for regex
+ stack if its size is small enough.
+
+Mon Sep 25 18:13:07 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c: include <defines.h>.
+
+ * eval.c (rb_add_method): cache mismatch by method
+ definition. need to clear_cache_by_id every time.
+
+Mon Sep 25 13:31:45 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/win32.c (NtCmdGlob): substitute '\\' with '/'.
+
+Mon Sep 25 00:35:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * defines.h: #undef HAVE_SETITIMER on cygwin.
+
+Sun Sep 24 03:01:53 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, http.rb: typo.
+
+Sat Sep 23 07:33:20 2000 Aleksi Niemela <aleksi.niemela@cinnober.com>
+
+ * regex.c (re_compile_pattern): nicer regexp error messages for
+ invalid patterns.
+
+Sat Sep 23 03:06:25 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_autoload_load): should not require already
+ provided features.
+
+Fri Sep 22 15:46:21 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: too early parameter expansion in string.
+
+Fri Sep 22 13:58:51 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb.in: don't use default $:
+
+Fri Sep 22 13:42:50 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * regex.c (PUSH_FAILURE_COUNT): avoid casting warning on alpha.
+
+ * regex.c (PUSH_FAILURE_POINT): ditto.
+
+Fri Sep 22 10:16:21 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/config.h.in: add HAVE_TELLDIR, HAVE_SEEKDIR
+
+Thu Sep 21 19:04:34 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb, lib/mkmf.rb (install_rb): check whether libdir is
+ directory or not.
+
+Thu Sep 21 17:23:05 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_symlink): use HAVE_SYMLINK.
+
+ * file.c (rb_file_s_readlink): use HAVE_READLINK.
+
+ * dir.c (dir_tell): use HAVE_TELLDIR.
+
+ * dir.c (dir_seek): use HAVE_SEEKDIR.
+
+ * configure.in (AC_CHECK_FUNCS): lstat, symlink, readlink,
+ telldir, seekdir checks added.
+
+ * file.c (lstat): should use stat(2) if lstat(2) is not
+ available.
+
+Thu Sep 21 15:59:23 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.29.
+
+ * lib/net/http.rb: HTTPReadAdapter -> HTTPResponseReceiver
+
+ * lib/net/http.rb (connecting): response is got in receive()
+
+Thu Sep 21 15:49:07 2000 Wayne Scott <wscott@ichips.intel.com>
+
+ * lib/find.rb (find): should not follow symbolic links;
+ tuned performance too.
+
+Wed Sep 20 23:21:38 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (load_file): two Ctrl-D was required to stop ruby at the
+ beginning of stdin script read.
+
+Wed Sep 20 14:01:45 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_provided): detect infinite load loop.
+
+ * eval.c (rb_provided): too weak filename comparison.
+
+ * eval.c (rb_thread_alloc): avoid recycling still referenced
+ dvar structures.
+
+ * eval.c (rb_callcc): ditto.
+
+ * eval.c (THREAD_ALLOC): fill dyna_vars field by ruby_dyna_vars.
+
+Tue Sep 19 17:47:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.6.0 released.
+
+Tue Sep 19 16:24:52 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (Init_marshal): provide marshal.so no more.
+
+Tue Sep 19 14:01:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in, win32/setup.mak: include version number
+ in RUBY_SO_NAME.
+
+Tue Sep 19 13:07:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): was confusing $~ and $_.
+
+Tue Sep 19 13:06:53 2000 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * signal.c (rb_f_kill): signum may be a negative number, should be
+ treated by signed number.
+
+Tue Sep 19 01:14:56 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_provide): better feature handling.
+
+ * eval.c (rb_f_require): loading ruby library may be partial
+ state. checks in rb_thread_loading is integrated.
+
+ * eval.c (rb_provided): better thread awareness.
+
+ * lib/irb/frame.rb: 6 (not 5) parameters for trace_func proc.
+
+ * eval.c (error_print): should print error position even if
+ get_backtrace() failed.
+
+Sat Sep 16 03:29:59 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): rb_provided() was called too early; does
+ not work well with threads.
+
+ * parse.y (ensure): should distinguish empty ensure and non
+ existing ensure.
+
+ * file.c (Init_File): extending File by class of FileTest was
+ serious mistake.
+
+Thu Sep 14 02:46:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_yield): array strip should be done in this
+ function.
+
+Wed Sep 13 17:01:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_eq): incomplete value comparison of bignums.
+
+Wed Sep 13 06:39:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_class_variables): Module#class_variables added.
+
+Wed Sep 13 06:09:26 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: bug fix: CGI::header(): output status header.
+
+Wed Sep 13 01:09:12 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): allow global variables like '$__a'.
+
+Tue Sep 12 22:28:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/socket/extconf.rb: avoid using terrible <netinet/tcp.h>
+ on cygwin 1.1.5.
+
+Tue Sep 12 16:01:58 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * array.c (rb_ary_unshift_m): typo.
+
+Tue Sep 12 15:37:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): stripped array too much, should remove just
+ for proc_call().
+
+Tue Sep 12 07:05:24 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: version 2.0.0: require ruby1.5.4 or later.
+
+ * lib/net/telnet.rb: version 1.6.0
+
+Tue Sep 12 03:26:07 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (massign): use to_ary to get an array if available.
+
+ * object.c (rb_Array): ditto.
+
+Mon Sep 11 14:24:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (ruby_setenv): should not free the element of
+ origenvironment.
+
+ * parse.y (command_call): kYIELD moved to this rule to allow
+ 'a = yield b'. (ruby-bugs-ja:#PR15)
+
+Mon Sep 11 01:27:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): proc#call([]) should pass single value to
+ the block.
+
+ * eval.c (callargs): reduce array allocation.
+
+ * eval.c (massign): precise check for argument number.
+
+Fri Sep 8 10:05:17 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (STR_NO_ORIG): should be FL_USER2.
+
+Thu Sep 7 14:17:51 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cat): should work even for concatenating same
+ string.
+
+Wed Sep 6 17:06:38 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_declare): should check superclass's class
+ variable first.
+
+Wed Sep 6 10:42:02 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-calculate-indent): shift continuing line
+ if previous line ends with modifier keyword.
+
+ * misc/ruby-mode.el (ruby-parse-region): should not give up if
+ modifiers are at the end of line.
+
+ * misc/ruby-mode.el (ruby-expr-beg): indented wrongly if modified
+ statement was size 1.
+
+Wed Sep 6 10:41:19 2000 Kenichi Komiya <kom@mail1.accsnet.ne.jp>
+
+ * misc/ruby-mode.el (ruby-parse-region): modifier was not handled
+ well on emacs19.
+
+Tue Sep 5 17:10:12 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_to_s): fixed zone string UTC for utc time object.
+
+Tue Sep 5 00:26:06 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_search): range worked wrongly on bm_search().
+
+Mon Sep 4 13:40:40 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: renamed libruby.a to libruby.{cygwin,mingw32}.a
+ on cygwin and mingw32.
+
+Sun Sep 3 23:44:04 2000 Noriaki Harada <tenmei@maoh.office.ne.jp>
+
+ * io.c (NO_SAFE_RENAME): for BeOS too.
+
+Sun Sep 3 11:31:53 2000 Takaaki Tateishi <ttate@jaist.ac.jp>
+
+ * parse.y (rescue): no assignment was done if rescue body was
+ empty.
+
+Sat Sep 2 10:52:21 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (call_args,aref_args): block_call can be the last
+ argument.
+
+ * parse.y (COND_PUSH,COND_POP): maintain condition stack to allow
+ kDO2 in parentheses in while/until/for conditions.
+
+ * parse.y (yylex): generate kDO2 for EXPR_ARG outside of
+ while/until/for condition.
+
+Fri Sep 1 10:36:29 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (aref_args,opt_call_args): add block_call to allow a
+ method without parentheses and with block as a last argument.
+
+ * hash.c (rb_hash_sort): should not return nil.
+
+ * re.c (match_aref): should use rb_reg_nth_match().
+
+ * eval.c (POP_SCOPE): recycled scopes too much
+
+ * eval.c (Init_eval): extend room for stack allowance.
+
+ * eval.c (POP_SCOPE): frees scope too much.
+
+Thu Aug 31 14:28:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_mark): T_SCOPE condition must be more precise.
+
+ * eval.c (scope_dup): should not make all duped scope orphan.
+
+Thu Aug 31 10:11:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): allow stmt_rhs to be right hand side of multiple
+ assignment.
+
+ * time.c (rb_time_timeval): type error should not mention the word
+ 'interval'.
+
+Wed Aug 30 23:21:20 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (rb_num2long): use rb_Integer() instead of independent
+ convert routine.
+
+ * eval.c (rb_rescue2): now takes arbitrary number of exception types.
+
+ * object.c (rb_convert_type): use rb_rescue2 now to handle NameError.
+
+ * object.c (rb_convert_type): better error message.
+
+Wed Aug 30 17:09:14 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): AlphaNT support.
+
+Wed Aug 30 14:19:07 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (node_assign): should support NODE_CVASGN2 too.
+
+Wed Aug 30 11:31:47 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): add the
+ arguments checking.
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): add taint
+ checking. allow String object in the third argument.
+
+Wed Aug 30 10:29:40 2000 Masahiro Tomita <tommy@tmtm.org>
+
+ * io.c (rb_f_p): flush output buffer.
+
+Tue Aug 29 16:29:15 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assignable): remove NODE_CVASGN3.
+
+ * parse.y (gettable): remove NODE_CVAR3.
+
+Tue Aug 29 02:02:14 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): handles create_makefile("a/b").
+
+ * ext/extmk.rb.in (create_makefile): ditto
+
+Mon Aug 28 18:43:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): now handles class variables.
+
+ * eval.c (rb_eval): class variable behavior revisited.
+
+ * parse.y (assignable): ditto.
+
+ * parse.y (gettable): ditto.
+
+ * regex.c (PUSH_FAILURE_COUNT): push/pop interval count on failure
+ stack. this fix is inspired by the Emacs21 patch from Stefan
+ Monnier <monnier@cs.yale.edu>.
+
+Fri Aug 25 15:24:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_get): should not follow __attached__.
+
+ * variable.c (rb_cvar_set): ditto.
+
+ * variable.c (rb_cvar_declare): ditto.
+
+ * variable.c (mod_av_set): second class variable assignment at the
+ toplevel should not give warning.
+
+Fri Aug 25 01:18:36 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (next_argv): prepare path for open file.
+
+ * string.c (rb_str_setter): moved from io.c.
+
+ * io.c (next_argv): filename should be "-" for refreshed ARGF.
+
+Thu Aug 24 15:27:39 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/socket/socketport.h: use `extern int h_errno' if needed.
+
+Sat Aug 19 01:34:02 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/sdbm/_sdbm.c (sdbm_prep): flags should be or-ed by O_BINARY on
+ Win32 too.
+
+ * ext/sdbm/_sdbm.c (makroom): fill hole with 0 on Win32 too.
+
+Fri Aug 18 13:23:59 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should preserve and clear $! value before
+ compilation.
+
+ * eval.c (eval): ditto.
+
+Fri Aug 18 11:06:19 2000 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/socket.c (s_accept): start GC on EMFILE/ENFILE.
+
+Thu Aug 17 16:04:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): should clear ruby_errinfo.
+
+Thu Aug 17 04:26:31 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.27.
+
+ * lib/net/protocol.rb: writing methods returns written byte size.
+
+ * lib/net/smtp.rb: send_mail accepts many destinations.
+
+Wed Aug 16 00:43:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_s_times): use CLK_TCK for HZ if it's defined.
+
+Tue Aug 15 17:30:59 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (frame_dup): should set flag FRAME_MALLOC after
+ argv allocation.
+
+ * eval.c (blk_free): should not free argv if GC was called before
+ frame_dup.
+
+Tue Aug 15 16:08:40 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: add ac_cv_func_times=yes for mingw32.
+
+ * win32/win32.c (mytimes): typo.
+
+Tue Aug 15 01:45:28 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_eof): should return true at the end of ARGF without
+ checking stdout if arguments are given.
+
+Mon Aug 14 10:34:32 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_status): status should return false for normal
+ termination, nil for termination by exception.
+
+Fri Aug 11 15:43:46 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_undef): give warning for undefining __id__, __send__.
+
+Thu Aug 10 08:05:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_callcc): returned current thread instead of
+ continuation wrongly.
+
+Thu Aug 10 05:40:28 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb.in: $CPPFLAGS should be initialized.
+
+ * ext/tcltklib/depend: add stubs.o.
+
+ * ext/tcltklib/extconf.rb: use $CPPFLAGS instead of $CFLAGS.
+
+Wed Aug 9 16:31:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_callcc): thread status for continuations must be
+ THREAD_KILLED, otherwise thread_free() breaks other threads.
+
+Wed Aug 9 13:24:25 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/win32.[ch]: emulate rename(2).
+
+Tue Aug 8 14:01:46 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/tcltklib/tcltklib.c: support --enable-tcltk_stubs
+
+ * ext/tcltklib/extconf.rb: ditto.
+
+ * ext/tcltklib/stubs.c: created. examine candidate shared libraries.
+
+Mon Aug 7 13:59:12 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (CLONESETUP): should copy flags before any potential
+ object allocation.
+
+ * regex.c (re_match): check for stack depth was needed.
+
+Sat Aug 5 16:43:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * djgpp/*: convert DOS line endings to UNIX style.
+
+ * djgpp/config.status: rename to config.sed for SFN.
+
+ * lib/ftools.rb (compare, safe_unlink, chmod): avoid warnings.
+
+ * lib/ftools.rb (move): typo. not `tpath', but `to'.
+
+Fri Aug 4 23:26:48 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (proc_call): gives warning if a block is supplied.
+
+ * eval.c (rb_eval): no warning for discarding if an alias for the
+ method is already made.
+
+Fri Aug 4 16:32:29 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_reject_bang): returns nil if no element removed.
+
+ * hash.c (rb_hash_reject_bang): returns nil if no element removed.
+
+Thu Aug 3 19:44:26 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_fd_writable): should return integer value.
+
+ * array.c (rb_ary_assoc): search array element whose length is
+ longer than 0 (not 1).
+
+Wed Aug 2 18:27:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_wait_fd): prohibit thread context switch
+ during compilation.
+
+ * eval.c (rb_cont_call): prohibit Continuation#call across threads.
+
+Wed Aug 2 08:22:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (rb_gc): clear malloc_memories to zero, to avoid potential
+ super frequent GC invocation. (ruby-bugs:#PR48)
+
+ * gc.c (rb_gc): only add_heap() if GC trigger condition is
+ satisfied.
+
+Tue Aug 1 16:41:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (proc_options): global load path setting moved from
+ ruby_prog_init().
+
+ * ruby.c (incpush): renamed. push path entry at the END of the
+ load path array. This makes -I directories sorted in order in
+ the arguments.
+
+Sat Jul 29 23:42:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (dir_each): should check whether dir is closed during the
+ block execution. (ruby-bugs:#PR47)
+
+Sat Jul 29 21:57:30 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ruby.c (rubylib_mangle): provide another buffer for the result.
+
+Wed Jul 26 10:09:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: set SOLIBS to LIBS on Cygwin.
+
+ * configure.in: LIBRUBY_SO='$(RUBY_INSTALL_NAME)'.$target_os.dll
+ on cygwin and mingw32. ruby-cygwin.dll is bad. why?
+
+Wed Jul 26 10:04:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (gc_sweep): avoid full scan during compilation.
+
+ * gc.c (rb_gc): add heap during no gc period (including
+ compilation).
+
+Tue Jul 25 19:03:04 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * cygwin/GNUmakefile: use puts instead of print, because
+ Cygwin DLL's behavior is changed(or bug?).
+
+ * configure.in: LIBRUBY_SO='$(RUBY_INSTALL_NAME)'-$target_os.dll
+ on cygwin and mingw32.
+
+ * cygwin/GNUmakefile: ditto.
+
+ * Makefile.in: $(SOLIBS) should be put after dmyext.@OBJEXT@.
+
+ * instruby.rb: install $(LIBRUBY) to libdir
+ if $(LIBRUBY) != $(LIBRUBY_A_).
+
+Tue Jul 25 15:16:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_p): redirect to $defout.
+
+Mon Jul 24 18:52:55 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/win32.c (win32_getenv): should remove `static'.
+
+ * ruby.c (rubylib_mangle): support "/hoge;/foo"
+
+Mon Jul 24 10:28:55 2000 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
+
+ * string.c (rb_str_count): raise exception if no argument is
+ given.
+
+Sun Jul 23 12:55:04 2000 Dave Thomas <Dave@Thomases.com>
+
+ * string.c (rb_str_rindex): Support negative end position.
+
+Fri Jul 21 17:35:01 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (aref_args): command_call now be permitted as
+ aref_args.
+
+ * process.c (proc_getpriority): getpriority(2) may return valid
+ negative number. use errno to detect error.
+
+ * marshal.c (dump_ensure): dumped string should be tainted if
+ any among target objects is tainted.
+
+ * marshal.c (r_regist): restored object should be tainted if and
+ only if the source is a file or a tainted string.
+
+Wed Jul 19 15:14:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (bigdivrem): should use rb_int2big(), not rb_uint2big().
+
+Tue Jul 18 14:58:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (ruby_options): should treat SystemExit etc. properly.
+
+ * parse.y (yycompile): should check compile_for_eval, not
+ ruby_in_eval.
+
+Mon Jul 17 04:29:50 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/mkmf.rb: converts extension of $objs into $OBJEXT.
+
+Sun Jul 16 03:02:34 2000 Dave Thomas <dave@thomases.com>
+
+ * lib/weakref.rb: Change to use new ObjectSpace calls.
+
+Sat Jul 15 21:59:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): should not redefine __id__ nor __send__.
+
+ * gc.c (define_final): integrate final.rb features into the
+ interpreter. define_finalizer and undefine_finalizer was
+ added to ObjectSpace. plus, add_finalizer, remove_finalizer,
+ and call_finalizer are deprecated now.
+
+Sat Jul 15 01:32:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_mod_method): implements unbound method.
+
+ * eval.c (Init_eval): should prohibit `module_function' for class
+ Class.
+
+Fri Jul 14 17:19:59 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * cygwin/GNUmakefile.in: use miniruby instead of sed.
+
+Fri Jul 14 12:49:50 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (argf_eof): need to check stdin, when next_p == -1.
+
+ * io.c (read_all): use io_fread() instead of fread(3).
+
+ * io.c (io_reopen): should clearerr FILE if fd < 3.
+
+ * re.c (rb_reg_match_m): the result is exported, so it should be
+ declared as busy.
+
+ * eval.c (rb_eval): should preserve errinfo even if return, break,
+ etc. is called in rescue clause.
+
+ * instruby.rb: install irb too.
+
+Wed Jul 12 15:32:57 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_const_get): constants for builtin classes must
+ have higher priority than constants from included modules at
+ Object class.
+
+ * bignum.c (bigdivrem): small embarrassing typo.
+
+Wed Jul 12 15:06:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): use rb_const_get_at().
+
+ * variable.c (top_const_get): retrieve toplevel constants only,
+ not ones of Object (and its included modules) in general.
+
+Wed Jul 12 15:04:11 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.26.
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb:
+ add module Net::NetPrivate and its inner classes
+ {Read,Write}Adapter, Command, Socket,
+ SMTPCommand, POP3Command, APOPCommand, HTTPCommand
+
+Wed Jul 12 13:10:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (bigdivrem): defer bignorm().
+
+ * bignum.c (bignorm): accepts accidental fixnums.
+
+Tue Jul 11 16:54:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): `@<digit>' is no longer a valid instance
+ variable name.
+
+Tue Jul 11 01:51:50 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (rb_big_divmod): should not use Integer(float) for
+ the right operand.
+
+ * bignum.c (rb_big_remainder): ditto.
+
+ * bignum.c (rb_big_modulo): ditto.
+
+Mon Jul 10 15:27:16 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c (pipe_finalize): should set rb_last_status when pclose().
+
+Mon Jul 10 09:07:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (rb_bug): print version number and such too.
+
+Sat Jul 8 23:08:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_start_0): should copy previous scopes to
+ prevent rb_gc_force_recycle().
+
+Fri Jul 7 23:36:36 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/addrinfo.h: move IN_EXPERIMENTAL and IN_LOOPBACKNET
+ definitions to ext/socket/sockport.h.
+
+ * ext/socket/extconf.rb: add getservbyport() and arpa/inet.h check.
+
+ * ext/socket/getaddrinfo.c (getaddrinfo): SOCK_RAW may not be
+ defined (ex. BeOS, Palm OS 2.x or before).
+
+ * ext/socket/getnameinfo.c (getnameinfo): getservbyport() may not
+ exist (ex. BeOS, Palm OS).
+
+ * ext/socket/sockport.h: add IN_EXPERIMENTAL, IN_CLASSA_NSHIFT,
+ IN_LOOPBACKNET, AF_UNSPEC, PF_UNSPEC and PF_INET.
+
+Fri Jul 7 03:30:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (aref_args): should allow Hash[:a=>2] etc.
+
+ * numeric.c (fix_aref): convert index by NUM2INT, not FIX2INT.
+ (ruby-bugs:#PR37)
+
+ * time.c (time_localtime): should prohibit for frozen time.
+
+ * time.c (time_gmtime): ditto.
+
+Thu Jul 6 19:12:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_file_s_open): should not terminate fptr; just clear it.
+
+ * ruby.c (proc_options): should not call require_libraries()
+ twice.
+
+ * ruby.c (require_libraries): clear req_list_head.next after
+ execution.
+
+Thu Jul 6 13:51:57 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * object.c (rb_to_id): name may not be symbol nor fixnum.
+
+ * struct.c (rb_struct_s_def): name may be nil.
+
+Thu Jul 6 02:09:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (bigdivrem): new function to return remainder.
+
+ * numeric.c (fixdivmod): now returns modulo, not remainder.
+
+ * numeric.c (flodivmod): ditto.
+
+ * bignum.c (bigdivmod): ditto.
+
+ * numeric.c (num_modulo): new method; alias to '%'.
+
+Thu Jul 6 00:51:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/win32.c (NtCmdGlob): patterns should be separated and
+ NUL terminated.
+
+Wed Jul 5 22:27:56 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * cygwin/GNUmakefile: use ruby.def to make rubycw.dll.
+
+ * ext/extmk.rb.in: create target.def.
+
+ * lib/mkmf.rb: ditto.
+
+Wed Jul 5 09:47:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_arg): Time::local, Time::gm now take 7th optional
+ argument for usec.
+
+ * numeric.c (num_ceil, etc): default ceil, floor, round, truncate
+ implementation for Numeric, using `to_f'.
+
+ * io.c (rb_io_reopen): clear fptr->path after free() to prevent
+ potential GC crash.
+
+ * io.c (rb_file_s_open): terminate fptr unless null.
+
+ * io.c (rb_file_initialize): ditto.
+
+ * lib/tempfile.rb: specify FILE::CREAT|File::EXCL to open for
+ better security.
+
+ * numeric.c (flo_truncate): new method.
+
+Wed Jul 5 01:02:53 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb.in: join ' ' -> join(' ').
+
+ * lib/mkmf.rb: ditto.
+
+Tue Jul 4 13:51:29 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/dbm/dbm.c: add methods added to Hash in 1.5.x.
+
+ * ext/gdbm/gdbm.c: ditto.
+
+ * ext/sdbm/init.c: ditto.
+
+ * eval.c (proc_call): args may be Qundef (means no argument), do
+ not call TYPE() for args.
+
+Tue Jul 4 13:20:56 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb.in: make command line must be single-quoted.
+ $(RUBY_INSTALL_NAME) is command substitution in the POSIX sh.
+
+Tue Jul 4 13:16:02 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * util.c (rb_type): should add T_UNDEF.
+
+Tue Jul 4 09:30:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (here_document): supports EOF right after terminator.
+
+ * random.c (rb_f_rand): argument is now optional (rand(max=0)).
+
+Tue Jul 4 01:50:49 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/ruby.def: remove ruby_mktemp.
+
+Tue Jul 4 01:27:13 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_rescue2): new function to rescue arbitrary exception.
+
+ * numeric.c (do_coerce): should catch NameError explicitly.
+
+Tue Jul 4 00:15:23 2000 Dave Thomas <Dave@thomases.com>
+
+ * numeric.c (Init_Numeric): forgot to register Numeric#remainder.
+
+Mon Jul 3 23:46:56 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (myselect, myaccept): disable interrupt while
+ executing accept() or select() to avoid Ctrl-C causes
+ "unknown software exception (0xc0000029)".
+
+Mon Jul 3 18:35:41 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * lib/mkmf.rb: use null device if it exists for cross-compiling.
+
+Mon Jul 3 18:19:51 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.26.
+
+ * lib/net/protocol.rb (finish): do nothing unless active.
+
+ * lib/net/http.rb: HTTP#{get,post}2 again (for new impl).
+
+Mon Jul 3 16:47:22 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * cygwin/GNUmakefile: librubys.a -> lib$(RUBY_INSTALL_NAME)s.a
+
+ * configure.in: use AC_CANONICAL_{HOST,TARGET,BUILD}.
+
+Mon Jul 3 13:15:02 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (fix_divmod): x * d + m = y where d, m = x.divmod(y).
+
+ * bignum.c (rb_big_divmod): ditto.
+
+ * numeric.c (fixdivmod): does not depend C's undefined %
+ behavior. adopt to fmod(3m) behavior.
+
+ * numeric.c (flo_mod): modulo now reserves fmod(3m) behavior.
+
+ * numeric.c (num_remainder): 'deprecated' warning.
+
+Mon Jul 3 10:27:28 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: use AC_CANONICAL_SYSTEM.
+
+Sun Jul 2 21:17:37 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: support without --enable-shared for cygwin/mingw32.
+
+ * cygwin/GNUmakefile: ditto.
+
+ * ext/extmk.rb.in: use null device if it exists for cross-compiling.
+
+ * lib/mkmf.rb: ditto.
+
+ * util.c (ruby_mktemp): remove unused ruby_mktemp().
+
+Sun Jul 2 14:18:04 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * eval.c (TMP_PROTECT_END): tmp__protect_tmp may be NULL.
+
+Sun Jul 2 03:37:50 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.25.
+
+ * lib/net/protocol.rb (each_crlf_line): beg = 0 is needed in adding{}
+
+ * lib/net/smtp.rb: allow String for to_addr of SMTP#sendmail
+
+Sat Jul 1 15:22:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (fix_rshift): should handle shift value more than
+ sizeof(long).
+
+Sat Jul 1 15:22:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): the value from RTEST() is not valid Ruby
+ object. result should be either true or false.
+
+Sat Jul 1 09:30:06 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * re.c (rb_reg_initialize): was freeing invalid pointer.
+
+Sat Jul 1 03:25:56 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (call_args): command_call can be the last argument of
+ call_args. It had to be the only argument.
+
+ * re.c (rb_reg_s_quote): should not dump core even for unsane mbc
+ string.
+
+Fri Jun 30 01:36:20 2000 Aleksi Niemela <aleksi.niemela@cinnober.com>
+
+ * parse.y (f_norm_arg): better, nicer error message.
+
+Thu Jun 29 07:45:33 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (udp_send): destination may be packed
+ struct sockaddr.
+
+ * object.c (rb_Integer): Integer(nil) should be invalid, on the
+ other hand, nil.to_i is OK.
+
+Wed Jun 28 17:26:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (ip_recvfrom): udp_recvfrom and tcp_recvfrom
+ is merged and moved to IPSocket#recvfrom.
+
+ * ext/socket/socket.c (sock_s_getaddrinfo): family can be a
+ strings such as "AF_INET" etc.
+
+ * ruby.c (require_libraries): . and RUBYLIB added to $load_path
+ just before -r procedure.
+
+ * ruby.c (proc_options): -e, - did not exec -r.
+
+Wed Jun 28 14:52:28 2000 Koga Youichirou <y-koga@mms.mt.nec.co.jp>
+
+ * config.sub: NetBSD/hpcmips support.
+
+Wed Jun 28 10:11:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c: gc trigger threshold changed; GC_NEWOBJ_LIMIT removed,
+ FREE_MIN is increased to 4096.
+
+Tue Jun 27 22:39:28 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.24.
+
+ * lib/net/protocol.rb: modified each_crlf_line again.
+
+ * lib/net/protocol.rb: do_write_beg,do_write_end -> writing{}
+ do_write_do -> do_write
+
+ * lib/net/http.rb: can make proxy connection by passing
+ addresses to HTTP.new, start.
+
+ * lib/net/http.rb: HTTP.new_implementation, old_implementation:
+ can use 1.2 implementation of head, get, post, put.
+ (see document)
+
+Tue Jun 27 12:05:10 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32.c (myfdclr): new function.
+
+ * win32.h: add FD_CLR.
+
+Mon Jun 26 23:41:41 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ruby.h: add cast for ANSI style.
+
+ * gc.c (rb_data_object_alloc): use RUBY_DATA_FUNC.
+
+Mon Jun 26 22:20:03 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (is_socket, extract_file_fd): New function.
+
+ * win32/win32.c (myfdopen): use is_socket().
+
+ * win32/win32.c (myselect): return non socket files immediately
+ if file and socket handles are mixed.
+
+Mon Jun 26 16:21:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_schedule): wait_for cleared too early.
+
+Mon Jun 26 09:15:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c: remove obsolete 'F', 'D' specifiers.
+
+Sun Jun 25 00:55:03 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/socket.c (sock_s_getnameinfo): `res' would not
+ be assigned if TYPE(sa) == T_STRING.
+
+Sat Jun 24 14:36:29 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * config*.dj, configure.bat, top.sed: move to djgpp/.
+
+Sat Jun 24 02:34:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (load_file): call require_libraries() here to let
+ debug.rb work properly.
+
+Fri Jun 23 22:34:51 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * bignum.c (rb_big_lshift): reorder xds assignment to avoid
+ reusing `x' as `len' by VC++ 6.0 SP3 compiler with -Ox switch.
+
+Fri Jun 23 01:11:27 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_substr): should return empty string (""),
+ if beg == str.size and len == zero, mostly for convenience and
+ backward compatibility.
+
+ * parse.y (new_super): should tweak block_pass node for super too.
+
+ * string.c (rb_str_split_m): last split element should not be nil,
+ but "" when limit is specified.
+
+Thu Jun 22 17:27:46 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_substr): str[n,m] now returns nil when n equals
+ to str.size.
+
+Thu Jun 22 13:49:02 2000 Uechi Yasumasa <uechi@ryucom.ne.jp>
+
+ * lib/net/ftp.rb: support resuming.
+
+Thu Jun 22 13:37:19 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * eval.c (rb_thread_sleep_forever): merge pause() macro.
+
+Wed Jun 21 08:49:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): should not raise exception just by defining
+ singleton class.
+
+Wed Jun 21 01:18:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h: two macros RUBY_DATA_FUNC and RUBY_METHOD_FUNC are added
+ to make writing C++ extensions easier.
+
+ * array.c (rb_ary_dup): internal classes should not be shared by dup.
+
+ * hash.c (rb_hash_dup): ditto.
+
+ * object.c (rb_obj_dup): ditto.
+
+ * string.c (rb_str_dup): ditto.
+
+ * error.c (Init_Exception): renamed NotImplementError to
+ NotImplementedError.
+
+Tue Jun 20 16:22:38 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (make_time_t): bug in DST boundary.
+
+Tue Jun 20 10:54:19 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: add eval sitedir.
+
+Tue Jun 20 06:14:43 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: change: version syntax. old: x.yz, now: x.y.z
+
+ * lib/net/telnet.rb: ditto.
+
+Tue Jun 20 00:37:45 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_kcode_m): Regexp#kcode returns nil for code unfixed
+ regexp object.
+
+ * bignum.c (bigdivmod): bignum zero check was wrong.
+
+Mon Jun 19 10:48:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_cvar_set): forgot to add security check for class
+ variable assignment.
+
+Sun Jun 18 22:49:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: single quoted sitedir.
+
+ * mkconfig.rb: add DESTDIR for cross-compiling.
+
+ * lib/mkmf.rb: add DESTDIR.
+
+ * ruby.c (load_file): force binmode if fname includes ".exe"
+ on DOSISH.
+
+Sat Jun 17 23:22:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (rb_f_sprintf): should ignore negative precision given
+ by <%.*>.
+
+ * sprintf.c (rb_f_sprintf): should allow zero precision.
+
+Sat Jun 17 03:13:29 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_localtime): avoid unnecessary call of localtime.
+
+ * time.c (time_gmtime): avoid unnecessary call of gmtime.
+
+ * process.c (proc_wait2): new method.
+
+ * process.c (proc_waitpid): second argument made optional.
+
+ * process.c (proc_waitpid2): new method.
+
+Sat Jun 17 00:05:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_clone): should initialize member fields.
+
+Fri Jun 16 22:49:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_rewind): set lineno to zero.
+
+Fri Jun 16 22:47:47 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.23.
+
+ * lib/net/protocol.rb: too many CRLF in last line.
+
+Fri Jun 16 21:23:59 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: add pause(2) checking.
+
+ * eval.c: define pause() if missing.
+
+Fri Jun 16 18:41:58 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * process.c (proc_setsid): BSD-style setpgrp() don't return
+ process group ID, but 0 or -1.
+
+Fri Jun 16 16:23:35 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * file.c (rb_stat_inspect): gives detailed information;
+ compatibility with ruby-1.4.x.
+
+Fri Jun 16 05:18:45 2000 Yasuhiro Fukuma <yasuf@bsdclub.org>
+
+ * configure.in: FreeBSD: do not link dummy libxpg4 which was
+ merged into libc.
+
+Fri Jun 16 03:17:36 2000 Satoshi Nojo <nojo@t-samukawa.or.jp>
+
+ * ext/dbm/dbm.c (fdbm_length): use GetDBM. empty?, [] too.
+
+ * ext/gdbm/gdbm.c (fgdbm_length): ditto.
+
+ * ext/sdbm/init.c (fsdbm_length): ditto.
+
+Fri Jun 16 01:57:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_sleep_forever): pause(2) instead of sleep(3).
+
+Thu Jun 15 10:46:36 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_sub_bang): should propagate taintness from
+ replacement string.
+
+Wed Jun 14 17:01:41 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * rubytest.rb: add CONFIG['EXEEXT'] to the executable file name.
+
+Wed Jun 14 14:50:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_f_sub): assign to $_ only if modification happens.
+
+ * string.c (rb_f_gsub): ditto.
+
+ * string.c (rb_f_chop): ditto.
+
+ * string.c (rb_f_chomp): ditto.
+
+ * io.c (io_reopen): preserve file position by ftell/fseek, if io
+ is a seekable.
+
+ * eval.c (method_arity): wrong arity number for the methods with
+ optional arguments.
+
+ * time.c (make_time_t): opposite timezone shift (should be negative).
+
+Wed Jun 14 14:07:38 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c: typo(ig/if).
+
+ * re.c: typo(re/reg). add rb_reg_check().
+
+ * time.c: remove unneeded declare(daylight, timezone).
+
+ * configure.in: add include <time.h> when daylight checking.
+
+Wed Jun 14 11:36:52 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * marshal.c (r_object): modified for symbols.
+
+ * marshal.c (w_object): ditto.
+
+Wed Jun 14 10:04:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_memcmp): should compare according to ruby_ignorecase.
+
+ * string.c (rb_str_cmp): use rb_memcmp.
+
+ * string.c (rb_str_index): ditto.
+
+ * string.c (rb_str_rindex): ditto.
+
+ * string.c (rb_str_each_line): ditto.
+
+Wed Jun 14 04:58:53 2000 Dave Thomas <dave@thomases.com>
+
+ * io.c (rb_io_set_lineno): should have returned VALUE, not
+ integer.
+
+Wed Jun 14 09:29:42 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_dup): dup should always propagate taintness.
+
+Wed Jun 14 00:50:14 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: read_multipart(): if no content body then raise EOFError.
+
+Tue Jun 13 11:46:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * process.c (proc_setsid): try implement it using setpgrp() and
+ ioctl(fd, TIOCNOTTY, NULL).
+
+ * re.c (rb_reg_prepare_re): magic variable $= should affect regex
+ pattern match.
+
+ * time.c (make_time_t): use tm.tm_gmtoff if possible.
+
+ * time.c (time_zone): use tm.tm_zone if available.
+
+Tue Jun 13 01:50:57 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.22.
+
+ * lib/net/http.rb: HTTPResponse#body returns body.
+
+Mon Jun 12 23:41:54 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in (daylight): avoid GCC optimization.
+
+Mon Jun 12 19:02:27 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: cygwin has strange timezone.
+
+ * time.c (time_zone): use tzname and daylight.
+
+Sat Jun 10 23:10:32 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_seek): whence is optional, default is SEEK_SET.
+
+Fri Jun 9 17:00:29 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.21.
+
+ * lib/net/http.rb: exception is raised with response object.
+
+Fri Jun 9 15:11:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (make_time_t): supports daylight saving time.
+
+ * eval.c (rb_thread_safe_level): should retrieve current $SAFE
+ value if a thread is the current thread.
+
+Thu Jun 8 14:25:45 2000 Hiroshi Igarashi <iga@ruby-lang.org>
+
+ * lib/mkmf.rb: add target `distclean' in Makefile for extlib.
+ target `clean' doesn't remove Makefile.
+
+Thu Jun 8 13:34:03 2000 Dave Thomas <dave@thomases.com>
+
+ * numeric.c: add nan?, infinite?, and finite? to Float
+
+Thu Jun 8 00:31:04 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * regex.h: export re_mbctab properly on cygwin.
+
+ * dln.c: use dlopen instead of LoadLibrary on cygwin.
+
+Thu Jun 8 13:41:34 2000 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * file.c (rb_file_s_basename): might dump core.
+
+Tue Jun 6 03:29:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (dir_foreach): now returns nil for consistency.
+
+ * bignum.c (bigdivmod): modulo by small numbers was wrong.
+
+Mon Jun 5 00:18:08 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * bignum.c: avoid conflict with USHORT on mingw32.
+
+Mon Jun 5 00:13:35 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * eval.c (rb_thread_schedule): =/== typo.
+
+Sun Jun 4 03:17:36 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: improve: CGI::pretty()
+
+Sun Jun 4 02:01:10 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * lib/mkmf.rb: do not need to add -L$(topdir) in --enable-shared case.
+
+Sat Jun 3 13:50:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (rb_id2name): should support constant attrset
+ identifiers.
+
+ * bignum.c (rb_big_eq): Bignum#== should not raise exception.
+
+Fri Jun 2 11:24:48 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_popen): open with a block returns the value from the
+ block. old behavior was back.
+
+Fri Jun 2 00:42:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+
+ * eval.c (rb_thread_cleanup): should clear priority for thread
+ termination.
+
+Thu Jun 1 22:39:41 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.20.
+
+ * lib/net/http.rb: wrongly closed the socket twice
+ when no Content-Length: was given.
+
+Thu Jun 1 00:59:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_yield_0): convert Qundef to [].
+
+Wed May 31 20:45:59 2000 Dave Thomas <Dave@Thomases.com>
+
+ * string.c (rb_str_slice_bang): wrong argument number.
+
+Wed May 31 12:37:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_exec_end_proc): print error message from END procs.
+
+Wed May 31 04:06:41 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: change: CGI#out() if "HEAD" == REQUEST_METHOD then
+ output only HTTP header.
+
+Wed May 31 01:54:21 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_schedule): set main_thread->status to
+ THREAD_TO_KILL, before raising deadlock error.
+
+ * eval.c (rb_thread_deadlock): if curr_thread == main_thread, do
+ not call rb_thread_restore_context()
+
+Tue May 30 23:33:41 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * lib/mkmf.rb (create_makefile): add $(TARGET).ilk and *.pdb
+ to cleanup files for mswin32.
+
+Mon May 29 10:41:10 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_file_s_basename): should propagate taintness.
+
+Sun May 28 21:37:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * eval.c: bug fix: DLEXT2.
+
+Sun May 28 19:21:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/win32.c: use ruby's glob.
+
+ * dir.c: "glob" exported and renamed to "rb_glob".
+
+ * ruby.h: ditto.
+
+ * main.c: turn off command line mingw32's globbing.
+
+Wed May 25 22:25:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb.in: use "ftools" instead of "rm -f".
+
+ * lib/mkmf.rb: ditto.
+
+Thu May 25 22:01:32 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * defines.h: mswin32: remove obsolete USHORT definition.
+
+ * re.h: mswin32: use EXTERN instead of extern.
+
+ * regex.h: mswin32: export re_mbctab properly.
+
+ * win32/ruby.def: add ruby_ignorecase and regex.c's exports.
+
+Thu May 25 21:28:44 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * re.c (rb_reg_expr_str): escape un-printable character.
+
+Thu May 25 01:35:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (tokadd_escape): forgot to add `\x' to hexadecimal
+ escape sequences.
+
+ * object.c (rb_obj_dup): dup for normal object (T_OBJECT) copies
+ instance variables only.
+
+Wed May 24 23:49:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_mod_initialize): should provide initialize.
+
+Wed May 24 23:17:50 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/Makefile: remove unnecessary mv and rm command call.
+
+Wed May 24 21:01:04 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/pty/pty.c: use "" instead of <> to include ruby.h and rubyio.h
+ for BeOS (PowerPC).
+
+ * file.c (rb_find_file): should check dln_find_file() result.
+
+ * win32/ruby.def: add rb_block_given_p.
+
+Wed May 24 16:32:45 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_popen): popen does not take 3rd argument anymore.
+
+ * re.c (rb_reg_desc): re may be zero, check before dereferencing.
+
+Wed May 24 16:03:06 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: bug fix: CGI::escape(), CGI::Cookie::new()
+
+ * lib/net/telnet.rb: improve: binmode(), telnetmode() interface
+
+Wed May 24 13:12:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * misc/ruby-mode.el (ruby-parse-region): support `while .. do'
+ etc. But corresponding keywords must be at the beginning of
+ line.
+
+Tue May 23 23:50:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_initialize_m): wrong kcode value.
+
+ * re.c (rb_reg_s_new): forgot to initialize re->ptr.
+
+Tue May 23 08:36:24 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): forgot to restore old option
+ status by (?ix-ix).
+
+ * regex.c (re_compile_fastmap): anychar may match newline if
+ RE_OPTION_MULTILINE or RE_OPTION_POSIXLINE is set.
+
+Mon May 22 22:45:06 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.19.
+
+ * lib/net/http.rb: do not use Regexp "p" option.
+
+Mon May 22 21:56:43 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * struct.c (rb_struct_getmember): should use ID2SYM, not INT2NUM.
+
+Mon May 22 15:07:37 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (rb_find_file): should check if the file really exists.
+
+Mon May 22 09:08:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_popen): _exit(0) after processing block under the
+ child process.
+
+ * io.c (rb_io_popen): flush stdout/stderr before subprocess
+ termination.
+
+ * eval.c (rb_check_safe_str): insert rb_secure(4); operation
+ requires untainted string should be prohibited in level 4.
+
+Sun May 21 21:17:00 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: add Setup.dj for djgpp cross-compiling.
+
+ * Setup.dj: add readline.
+
+ * instruby.rb: copy win32/win32.h to archlibdir on mingw32.
+
+Sun May 21 20:58:08 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * pack.c: fix OFF16 and OFF32 definitions for Alpha and IRIX64.
+
+Sun May 21 17:31:37 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * instruby.rb: support "make install" for cross-compiling.
+
+ * ext/extmk.rb.in: ditto.
+
+Sun May 21 14:22:49 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * Makefile.in: rename prep.rb to fake.rb.
+
+ * configure.in: ditto.
+
+Sat May 20 23:29:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (dir_s_new): does not take block; "open" does.
+
+ * io.c (rb_io_s_new): ditto.
+
+Fri May 19 07:44:26 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (dir_s_open): Dir#open does not returns closed Dir if a
+ block is given to the method.
+
+ * re.c (rb_reg_initialize_m): Regexp::new calls initialize now.
+
+ * string.c (Init_String): String#delete_at removed.
+
+ * string.c (rb_str_aset_m): should have checked argc != 2.
+
+ * eval.c (rb_thread_schedule): select(2) was called too many.
+
+ * regex.c (re_compile_pattern): a bug in (?m) support. Pointed
+ out by Dave Thomas <Dave@thomases.com>.
+
+Thu May 18 23:55:26 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * dln.c (search_undef): st_lookup()'s 3rd parameter should be
+ a pointer of the variable which has the same size and alignment
+ as `char *'.
+
+ * marshal.c (w_symbol, w_object): ditto.
+
+ * parse.y (rb_intern): ditto.
+
+Thu May 18 18:00:35 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.18.
+
+ * lib/net/protocol.rb: Net::Version was removed.
+
+ * lib/net/smtp.rb: use Socket.gethostname to get local host name.
+
+Thu May 18 13:34:57 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (ruby_connect): should not have replaced
+ thread_write_select() by rb_thread_fd_writable().
+
+Thu May 18 09:01:25 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * configure.in, ext/extmk.rb.in, lib/mkmf.rb: remove BeOS R3 support.
+ Make a shared library (libruby.so) only if the --enable-shared
+ option is specified.
+
+ * instruby.rb: no longer use libruby.so.LIB and import.h.
+
+ * io.c: fix READ_DATA_PENDING definition for BeOS (PowerPC).
+
+Wed May 17 14:14:23 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_new_1): use /m instead of /p.
+
+Wed May 17 02:22:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_polling): wait 0.06 second to let other
+ processes run.
+
+ * process.c (rb_waitpid): avoid busy wait using rb_thread_polling.
+
+ * file.c (rb_thread_flock): ditto.
+
+ * parse.y (expr): avoid calling value_expr() twice.
+
+Wed May 17 00:45:57 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c (rb_io_binmode): should check PLATFORMs, not O_BINARY, sigh...
+
+Wed May 17 00:40:15 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/config.h: add DLEXT2, now DLEXT on mswin32 is "so".
+
+ * win32/config.status: ditto.
+
+ * win32/ruby.def: add symbol "rb_big_divmod".
+
+Tue May 16 19:45:32 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * intern.h: use EXTERN instead of extern.
+
+ * win32/ruby.def: add rb_defout, rb_stdout, ruby_errinfo,
+ ruby_sourceline, ruby_sourcefile to work with eruby
+ reported by Hiroshi Saito <HiroshiSaito@pob.org>.
+ Export both ruby_xmalloc and xmalloc etc.
+
+Tue May 16 17:00:05 2000 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * eval.c (rb_thread_select): should check whether fds are null.
+
+Tue May 16 11:51:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (pipe_open): synchronize subprocess stdout/stderr.
+
+Mon May 15 15:38:09 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h: exported symbols should be for xmalloc etc. are now
+ prefixed by 'ruby_', e.g. ruby_xmalloc().
+
+ * eval.c (rb_thread_select): remove busy wait for select.
+
+ * dir.c (glob): trailing path may be null, e.g. glob("**").
+
+Mon May 15 14:48:41 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * io.c (rb_io_pid): new method; returns nil if no process attached
+ to the IO.
+
+Mon May 15 01:18:20 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_s_popen): _exit after Proc execution.
+
+Sun May 14 18:05:59 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * Makefile.in: missing/nt.c -> win32/win32.c
+
+ * configure.in: bug fix; static linking on mingw32.
+
+ * cygwin/GNUmakefile.in: remove VPATH.
+
+ * ext/extmk.rb.in: Makefile set binmode with mingw32 on cygwin32.
+
+ * lib/mkmf.rb: ditto.
+
+ * win32/config.h: undef HAVE_SYS_FILE_H.
+
+Sun May 14 02:02:48 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * lib/irb/ruby-lex.rb: '/' should be escaped in character class.
+
+Sun May 14 00:54:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in, ...: support mingw32.
+
+ * defines.h: ditto. undef EXTERN for tcl/tk on cygwin.
+
+ * ext/*/extconf.rb: replace PLATFORM with RUBY_PLATFORM.
+
+ * ext/socket/sockport.h: define IN_MULTICAST for missing IN_MULTICAST.
+
+ * ext/tcltklib/tcltklib.c: remove declaration of rb_argv0.
+
+ * file.c: should check S_IXGRP, S_ISGID, not NT.
+
+ * io.c (rb_io_binmode): should check _IOBIN, O_BINARY, not PLATFORMs.
+
+Sat May 13 14:21:15 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * io.c (rb_io_s_popen): should check whether a block is given.
+
+Fri May 12 17:33:44 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): charset_not should not exclude
+ newline from matching set.
+
+Thu May 11 22:51:05 2000 Ryunosuke Ohshima <ryu@jaist.ac.jp>
+
+ * pack.c (pack_pack): Bignum support.
+
+ * pack.c (pack_unpack): ditto.
+
+Thu May 11 21:19:29 2000 Hiroshi Igarashi <iga@ruby-lang.org>
+
+ * intern.h: add missing declarations of ruby API functions.
+
+ * ruby.h: fix function name in declarations.
+
+Thu May 11 22:29:25 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/md5/depend: add $(topdir)/config.h dependency to md5c.o.
+
+ * ext/md5/extconf.rb: new file to add -DHAVE_CONFIG_H flag for Alpha.
+
+Thu May 11 10:55:52 2000 Ryunosuke Ohshima <ryu@jaist.ac.jp>
+
+ * pack.c (pack_pack): packing BER compressed integer by `w'.
+
+ * pack.c (pack_unpack): unpacking BER.
+
+Thu May 11 00:37:55 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_regx): remove in_brack.
+
+Wed May 10 12:51:18 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (proc_options): move adding RUBYLIB and "." to the load
+ path after #! line parsing.
+
+ * parse.y (parse_regx): should parse backslash escape like `\c['
+ here to avoid causing `unterminated regexp' error.
+
+Wed May 10 00:19:53 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * MANIFEST, beos/GNUmakefile.in, configure.in: no longer need
+ beos/GNUmakefile.in to support BeOS R4.5.2 (Intel) as a result
+ of eban's Makefile.in change.
+
+ * io.c: NOFILE is already defined on BeOS R4.5 (Intel) or later.
+
+ * lib/matrix.rb: remove debug print.
+
+ * regex.c: don't use nested comment.
+
+Tue May 9 17:08:43 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (massign): no longer convert nil into empty array.
+
+ * io.c (rb_io_s_popen): optional 3rd argument to give proc, which
+ will be executed in spawned child process.
+
+Mon May 8 23:47:39 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (rb_callcc): prev & next should be initialized to zero.
+
+Mon May 8 23:17:36 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dln.c (dln_init): remove possible buffer overrun. This is
+ suggested by Aleksi Niemela <aleksi.niemela@cinnober.com>.
+
+ * dln.c (init_funcname): ditto.
+
+Sat May 6 23:35:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (lhs): should allow `obj.Attr = 5' type expression.
+
+Sat May 6 15:46:08 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/socket/extconf.rb: add a new configure option to force use
+ of the WIDE Project's getaddrinfo(): --enbale-wide-getaddrinfo.
+
+Fri May 5 21:19:22 2000 MOROHOSHI Akihiko <moro@remus.dti.ne.jp>
+
+ * parse.y (yylex): allow '$1foo' and such.
+
+Fri May 5 17:57:24 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.17.
+
+ * lib/net/http.rb: write also port number in Host: field.
+
+ * lib/net/http.rb: see Proxy-Connection: to decide socket connection.
+
+Fri May 5 03:25:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_fastmap): charset_not for multibyte
+ characters excluded too many characters.
+
+Tue May 2 13:23:43 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_schedule): little bit more impartial context
+ switching.
+
+Tue May 2 09:50:03 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * configure.in: add DLDLIBS to set platform specific library
+ for extensions.
+
+ * ext/extmk.rb.in: use @DLDLIBS@ instead of RUBY_PLATFORM choice.
+
+ * lib/mkmf.rb: use CONFIG["DLDLIBS"] instead of RUBY_PLATFORM choice.
+
+ * config_s.dj: add @DLDLIBS@.
+
+ * win32/config.status: ditto.
+
+ * win32/ruby.def: regular maintenance.
+
+Mon May 1 23:42:44 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in, eval.c: add DLEXT2. now DLEXT on Cygwin is "so".
+
+ * defines.h: use dllimport, dllexport for Cygwin 1.1.x.
+
+ * ruby.h: ditto.
+
+ * cygwin/GNUmakefile.in: ditto.
+
+ * ext/Win32API/Win32API.c: directly "call" in asm statement for
+ gcc 2.95.x or newer.
+
+Sat Apr 29 04:58:12 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_ary_unshift_m): performance improvement.
+
+Fri Apr 28 00:19:22 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_ary_unshift_m): takes items to push.
+
+Wed Apr 26 15:23:02 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_succ): insert carrying character just before
+ the leftmost alpha numeric character.
+
+ * string.c (rb_str_succ): proper behavior for "".succ and "\377".succ.
+
+ * string.c (rb_str_succ): use realloc and memmove.
+
+Tue Apr 25 18:28:45 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.16.
+
+ * lib/net/smtp.rb: add SMTP AUTH
+
+Tue Apr 25 14:30:13 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_gets_internal): shortcut when rs == rb_default_rs.
+
+Sat Apr 22 23:14:41 2000 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * configure.in: MacOS X support.
+
+Sat Apr 22 16:37:10 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.15.
+
+ * lib/net/http.rb: closing socket by watching both
+ user header and server response
+
+Fri Apr 21 21:44:34 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c (rb_io_s_pipe): should set FMODE_SYNC.
+
+Thu Apr 20 16:59:22 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (massign): `*lvalue = false' should assign `[false]' to
+ lvalue.
+
+Wed Apr 19 08:35:08 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (rb_singleton_class): generate singleton class for
+ special constants: nil, true, false.
+
+Wed Apr 19 02:09:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (rb_singleton_class): singleton method for nil, true,
+ false is possible now.
+
+ * eval.c (rb_eval): ditto.
+
+Tue Apr 18 18:54:25 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.14.
+
+ * lib/net/http.rb: new method HTTP#head2.
+
+ * lib/net/http.rb: get2/post2 does not raise exceptions.
+
+Mon Apr 17 15:16:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_close): to detect some exceptional status, writable
+ IO should be flushed before close;
+
+Sat Apr 15 18:29:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_collect_bang): Array#filter renamed.
+
+Fri Apr 14 19:47:11 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.13.
+
+ * lib/net/pop.rb: accept illegal timestamp
+
+ * lib/net/http.rb: when body was chunked, does not set Content-Length:
+
+Tue Apr 11 21:14:42 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * config_s.dj: add @sitedir@.
+ * configure.in: add --with-sitedir=DIR option.
+ * instruby.rb: use CONFIG["sitedir"].
+ * lib/mkmf.rb: support 'make site-install'.
+ * win32/config.status: add @sitedir@.
+
+Tue Apr 11 16:25:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (rb_big_2comp): unnecessary lvalue cast removed.
+
+Tue Apr 11 02:25:53 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (env_fetch): new method.
+
+ * marshal.c (marshal_dump): accepts depth = nil for unlimited depth.
+
+Sun Apr 9 20:49:19 2000 Dave Thomas <Dave@Thomases.com>
+
+ * parse.y (str_extend): Allow class variables to be expanded.
+
+Fri Apr 7 02:03:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (rb_sys_fail): escape non-printable characters.
+
+Thu Apr 6 20:10:47 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/extmk.rb.in (create_makefile): BeOS --program-suffix support.
+ * lib/mkmf.rb (create_makefile): ditto.
+
+Thu Apr 6 09:55:26 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * error.c (rb_sys_fail): need rb_exc_new2() call on BeOS.
+
+Mon Apr 3 17:22:27 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_reopen): support tempfile.
+
+ * eval.c (catch_i): should supply argument.
+
+Sat Apr 1 22:50:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (r_object): wrong symbol restoration.
+
+Sat Apr 1 21:30:53 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c (rb_io_printf, rb_f_printf): should use rb_io_write.
+
+Sat Apr 1 00:16:05 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): should be clear flags
+ before calling finalizers.
+
+ * eval.c (specific_eval): can be called without SecurityError, if
+ $SAFE >= 4.
+
+ * object.c (sym_inspect): inspect gives ":sym", to_s gives "sym".
+
+Fri Mar 31 22:07:04 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.12.
+
+ * lib/net/protocol.rb: update Net::Protocol::Proxy#connect
+
+ * lib/net/protocol.rb: ReplyCode is not a class
+
+ * lib/net/http.rb: header value format was change:
+ values do not include header name
+
+ * lib/net/http.rb: header is not a Hash, but HTTPResponse
+
+Thu Mar 30 12:19:44 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * enum.c (enum_find): rb_eval_cmd() should be called with array.
+
+Tue Mar 28 13:57:05 2000 Clemens Hintze <c.hintze@gmx.net>
+
+ * ext/dbm/dbm.c (fdbm_invert): should return new hash.
+
+ * ext/gdbm/gdbm.c (fgdbm_invert): ditto.
+
+Tue Mar 28 00:58:03 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.11.
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: does not
+ dispatch any commands while dispatching command.
+
+ * lib/net/protocol.rb: failed to get error class of
+ inherited ReplyCode
+
+ * lib/net/http.rb: change feature of "get2", "post2"
+
+Mon Mar 27 01:34:58 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.10.
+
+ * lib/net/http.rb: return value of 'head' was wrong.
+
+Sun Mar 26 17:47:35 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.9.
+
+ * lib/net/smtp.rb: SMTP#do_ready wrongly took no arguments
+
+Sat Mar 25 23:21:10 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (w_object): symbols should be converted to ID before
+ dumping out.
+
+Fri Mar 24 18:26:51 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (test_check): should have checked exact number of arguments.
+
+Fri Mar 24 21:02:11 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * signal.c (trap): should treat some symbols as the signal.
+
+Fri Mar 24 06:58:03 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.8.
+
+ * lib/net/http.rb: post, get2, post2, get_body
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: separate
+ Command/Socket documentation.
+
+Thu Mar 23 02:26:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_fptr_finalize): fptr may be null.
+
+ * io.c (rb_io_s_new): now calls `initialize'.
+
+ * io.c (rb_io_initialize): actual open done in this method.
+
+ * io.c (rb_file_initialize): ditto.
+
+ * eval.c (rb_eval): class variables in singleton class definition
+ is now handled properly (I hope).
+
+Wed Mar 22 21:49:36 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * st.c (st_delete_safe): skip already deleted entry.
+
+ * hash.c (rb_hash_delete): modify brace miss.
+
+Wed Mar 22 08:53:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (exec_under): do not push cbase if ruby_cbase == under.
+
+ * node.h (NEW_CREF0): preserve cbase nesting.
+
+Tue Mar 21 12:57:50 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_class_s_new): Class::new should call `inherited'.
+
+Sat Mar 18 12:36:09 2000 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_backtrace, make_backtrace): removed unused variable
+ `lev'.
+
+ * eval.c (rb_attr): calls `method_added' at attribute definition.
+
+ * eval.c (rb_mod_modfunc): calls `singleton_method_added' while
+ `module_function'.
+
+ * eval.c (rb_eval): parameter to `method_added' and
+ `singleton_method_added' is Symbol.
+
+ * eval.c (Init_eval): caches IDs for `method_added' and
+ `singleton_method_added'.
+
+Sat Mar 18 11:25:10 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (rescue): allows `rescue Error in foo'. experimental.
+ which is better this or preparing alias `exception' for `$!'?
+
+Fri Mar 17 15:02:45 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_autoload_id): defining new autoload should be
+ prohibited for $SAFE > 4.
+
+ * variable.c (rb_autoload_load): autoload should be possible for
+ $SAFE > 4.
+
+ * eval.c (call_trace_func): should handle T_ICLASS properly.
+
+Fri Mar 17 14:34:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_gsub): forgot to initialize str->orig.
+
+Fri Mar 17 01:24:59 2000 Dave Thomas <Dave@thomases.com>
+
+ * string.c (rb_str_clone): forgot to copy str->orig if STR_NO_ORIG
+ is set by Array#pack.
+
+Wed Mar 15 21:25:04 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * array.c (rb_ary_join): 'result' is always duplicated
+ before concat string.
+
+Wed Mar 15 17:26:05 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_hash_s_create): unexpected recursive call removed.
+ this bug was found by Satoshi Nojo <nojo@t-samukawa.or.jp>.
+
+Wed Mar 15 13:12:39 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (Init_Thread): Thread.join removed finally.
+
+ * string.c (rb_str_chomp_bang): forgot to call rb_str_modify().
+
+Mon Mar 13 16:12:13 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (block_pass): distinguish real orphan block and still
+ on-stack block passed by block argument.
+
+Mon Mar 13 00:20:25 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (f_norm_arg): proper error message when constant comes
+ in formal argument list. this message is suggested by Muvaw
+ Pnazte <bugathlon@yahoo.com>.
+
+ * eval.c (rb_f_raise): proper error message when the first
+ argument is not an exception class/object.
+
+ * string.c (rb_str_dup): dup now postpone buffer copy as long as
+ possible. performance improved by lazy copying.
+
+Sun Mar 12 13:58:52 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * signal.c (rb_f_kill): should treat some symbols as the signal.
+
+Sat Mar 11 22:03:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_gsub): performance tune by avoiding buffer copy.
+
+ * eval.c (rb_f_missing): check if argv[0] is ID.
+
+Sat Mar 11 15:49:41 2000 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * struct.c (rb_struct_aref): struct aref by symbol.
+
+Sat Mar 11 05:07:11 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * process.c (proc_setpriority): should return 0, not nil.
+
+ * process.c (proc_setpgid): ditto.
+
+Fri Mar 10 18:14:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (path_check_1): confusing buf and path. this bug found
+ by <decoux@moulon.inra.fr>.
+
+Fri Mar 10 09:37:49 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * MANIFEST: add beos/GNUmakefile.in.
+ * configure.in: support BeOS R4.5.2 (Intel).
+ * beos/GNUmakefile.in: new file to support BeOS R4.5.2 (Intel).
+
+Thu Mar 9 11:13:32 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_fastmap): fixed embarrassing brace bug.
+
+Thu Mar 9 01:36:32 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * missing/flock.c: emulate missing flock() with fcntl().
+
+Thu Mar 9 00:29:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (sym_to_s): returns ":sym".
+
+ * object.c (sym_id2name): separated from to_s; returns "sym".
+
+Wed Mar 8 19:16:19 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.7.
+
+ * lib/net/http.rb (connecting): returns header
+
+Wed Mar 8 02:08:43 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y: escape expansion too early.
+
+ * string.c (rb_f_scan): Kernel#scan added.
+
+ * regex.c (re_compile_pattern): support \cX et al.
+
+Tue Mar 7 01:44:27 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (set_stdin): simplified procedure, allows $stdin = DATA;
+ experimental.
+
+ * io.c (set_outfile): ditto.
+
+ * re.c (Init_Regexp): new method Regexp#last_match added; it's an
+ alternative for $~.
+
+ * configure.in (DEFAULT_KCODE): KCODE_NONE should be the default.
+
+ * dir.c (dir_s_rmdir): should return 0 on success.
+
+ * signal.c: remove CWGUSI support.
+
+Mon Mar 6 12:28:37 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (w_symbol): support symbol object.
+
+ * util.c: make symbol as separated class.
+
+ * error.c (Init_Exception): new exception RangeError.
+
+ * ext/socket/socket.c (ip_addrsetup): should check length of hostname.
+
+ * ext/socket/socket.c (ip_addrsetup): check newline at the end of
+ hostname. These fixes suggested by Muvaw Pnazte <bugathlon@yahoo.com>.
+
+Sun Mar 5 20:35:45 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): should call
+ LoadLibrary() everytime and should assign the hdll to Win32API
+ object(protect the hdll from GC).
+
+Sun Mar 5 18:49:06 2000 Nakada.Nobuyoshi <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-parse-region): not treat method `begin'
+ and `end' as reserved words.
+
+ * misc/ruby-mode.el (ruby-font-lock-docs): ignore after `=begin'
+ and `=end'.
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords, hilit-set-mode-patterns):
+ added `yield' to keywords.
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords, hilit-set-mode-patterns):
+ matches keywords at end of buffer.
+
+Sun Mar 5 18:08:53 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.6.
+
+ * lib/net/http.rb: allow to omit 'start'
+
+Tue Feb 29 01:08:26 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * range.c (range_initialize): initialization done in `initialize';
+ `initialize' should not be called more than once.
+
+ * object.c (Init_Object): default `initialize' should take zero
+ argument.
+
+ * time.c (time_s_new): call `initialize' in Time::new.
+
+Sat Feb 26 22:39:31 2000 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * string.c (rb_str_times): fix String#* with huge string.
+
+Sat Feb 26 00:14:59 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (dir_s_new): call `initialize' in Dir::new.
+
+Fri Feb 25 23:01:49 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ruby.h: export ruby_safe_level by EXTERN for mswin32.
+ * win32/ruby.def: regular maintenance.
+
+Fri Feb 25 22:12:46 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_reopen): IO#reopen should accept path as well.
+
+ * string.c (rb_str_s_new): call `initialize' in String::new.
+
+ * hash.c (rb_hash_s_new): call `initialize' in Hash::new.
+
+ * array.c (rb_ary_s_new): call `initialize' in Array::new.
+
+Fri Feb 25 12:50:20 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_start_timer): interval changed to 10ms from 50ms.
+
+Fri Feb 25 06:42:26 2000 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/socket/socket.c (ip_addrsetup): hostp should remain NULL if
+ host is nil.
+
+Thu Feb 24 16:53:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_schedule): priority check for sleep expired
+ threads needed.
+
+Wed Feb 23 14:22:32 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_join): forgot to initialize a local variable
+ `taint'.
+
+Tue Feb 22 07:40:55 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (Init_Regexp): renamed to MatchData, old name MatchingData
+ remain as alias.
+
+Tue Feb 22 00:20:21 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.5.
+
+ * lib/net/session.rb: rename to protocol.rb
+
+ * lib/net/protocol.rb: ProtocolSocket -> Net::Socket
+
+ * lib/net/protocol.rb: Net::Socket#write, write_pendstr
+ can take block
+
+ * lib/net/smtp.rb: new methods SMTP#ready SMTPCommand#write_mail
+
+ * lib/net/pop.rb: POPMail#pop can take block
+
+Sat Feb 19 23:58:51 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): pop_loop should not pop at forward jump.
+
+Fri Feb 18 17:15:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (method_clone): method objects are now clonable.
+
+Fri Feb 18 00:27:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_shared_variable_declare): shared variable (aka
+ class/module variable) introduced. prefix `@@'. experimental.
+
+ * class.c (rb_scan_args): new format char '&'.
+
+Thu Feb 17 19:09:05 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (mypopen): don't close handle if it is not assigned.
+ * win32/win32.c (my_open_osfhandle): support O_NOINHERIT flag.
+ * win32/win32.c (win32_getcwd): rename getcwd to win32_getcwd
+ in order to avoid using the C/C++ runtime DLL's getcwd.
+ Use CharNext() to process directory name.
+ * win32/win32.h: map getcwd to win32_getcwd.
+
+Wed Feb 16 00:32:49 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (method_arity): nd_rest is -1 for no rest argument.
+
+ * process.c (proc_waitpid): returns nil when waitpid(2) returns 0.
+
+Tue Feb 15 01:47:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * process.c (rb_f_waitpid): pid_t should be signed.
+
+Mon Feb 14 13:59:01 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): yylex yields wrong tokens for `:foo=~expr'.
+
+ * ruby.c (load_file): exit if reading file is empty.
+
+Mon Feb 14 03:34:52 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): `foo.bar=1' should be <foo><.><bar><=><1>,
+ not <foo><.><bar=><1>.
+
+ * eval.c (rb_thread_restore_context): process according to
+ RESTORE_* is moved after longjmp().
+
+ * eval.c (thread_switch): new function to process RESTORE_*.
+
+Sun Feb 13 16:19:49 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ruby.c (require_libraries): don't access freed memory.
+
+ * ruby.c (add_modules): ditto.
+
+Fri Feb 11 12:06:22 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_quotedwords): %w() need to split not only by mere
+ spaces, but by all whitespaces.
+
+Thu Feb 10 02:12:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_index_m): did not support negative offset.
+
+Wed Feb 9 21:54:26 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/getaddrinfo.c: gcc --traditional support.
+ Rearrange headers to work AC_C_CONST.
+ * ext/socket/getnameinfo.c: ditto.
+ * ext/socket/socket.c: mswin32: use double instead of long long.
+
+Wed Feb 9 16:30:41 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (num_coerce): should return [y, x].
+
+Wed Feb 9 11:07:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (ruby_prog_init): loadpath structure changed.
+
+Tue Feb 8 02:07:33 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): optimize for \G at top.
+
+ * regex.c (re_compile_pattern): \G introduced.
+
+ * regex.c (re_match): ditto.
+
+ * string.c (str_sub_bang): old behavior restored: bang method
+ returns nil if string not changed.
+
+ * regex.c (re_compile_pattern): support independent subexpression
+ `(?>pattern)'.
+
+ * regex.c (re_match): ditto.
+
+Mon Feb 7 15:51:08 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): now understands interrupts under Ruby.
+
+Mon Feb 7 07:51:52 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_uniq_bang): always return an Array.
+
+ * array.c (rb_ary_compact_bang): ditto.
+
+ * array.c (rb_ary_flatten_bang): ditto.
+
+ * hash.c (rb_hash_reject): returns a Hash, not an Array.
+
+ * hash.c (env_reject): ditto.
+
+Fri Feb 4 10:20:25 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (scan_once): scan now leaves information about the last
+ successful pattern match in $&.
+
+ * io.c (rb_io_close): should not check closed IO.
+
+Fri Feb 4 05:44:01 2000 Kentaro Inagaki <inagaki@tg.rim.or.jp>
+
+ * ext/socket/socket.c (s_recv): TRAP_BEG after retry entry.
+
+Wed Feb 2 22:33:45 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_thread_start): receives argument from outside, like
+ `Thread::start(1,2,3){|a,b,c| ... }'.
+
+Wed Feb 2 22:14:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_regsub): should check regs->num_regs.
+
+ * re.c (rb_reg_search): remove matchcache, use static struct
+ re_register instead.
+
+ * re.c (match_getter): avoid cloning match data.
+
+Wed Feb 2 17:12:15 2000 Dave Thomas <Dave@Thomases.com>
+
+ * samples/eval.rb: Rescue new ScriptError exception
+
+Wed Feb 2 02:06:07 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_gsub_bang): gsub! now leaves information about the
+ last successful pattern match in $&.
+
+Mon Jan 31 15:24:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_sub_bang): bang method returns string always.
+ experimental.
+
+Sun Jan 30 17:58:09 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * eval.c: arrange to use setitimer(2) for BOW, DJGPP
+
+ * defines.h: ditto. use random(3) on cygwin b20.1.
+
+Sun Jan 30 17:20:16 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * eval.c: use getrlimit(2) on DJGPP.
+
+Thu Jan 27 01:27:10 2000 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
+
+ * dir.c (glob): glob pattern "/*" did not match.
+
+Wed Jan 26 22:30:47 2000 Shigeo Kobayashi <shigeo@tinyforest.gr.jp>
+
+ * numeric.c (flo_modulo): wrong result for negative modulo.
+
+Wed Jan 26 02:01:57 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (test_c): should use S_ISCHR.
+
+ * file.c (rb_stat_c): ditto.
+
+ * string.c (rb_str_each_line): should propagate tainting.
+
+Tue Jan 25 04:01:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_obj_freeze): all objects made freezable.
+
+Tue Jan 25 00:37:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: use AC_CHECK_TOOL for cross compiling.
+
+Mon Jan 24 19:01:54 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_protect_inspect): should be checked by id of
+ objects; not by object themselves.
+
+Mon Jan 24 18:48:08 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * eval.c (rb_eval): too many warnings; warned on every method
+ overriding. should be on method discarding.
+
+Mon Jan 24 02:56:44 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): -2.abs should be `(-2).abs' to accomplish the
+ principle of less surprise. `+2' too.
+
+ * eval.c (rb_eval): when defining class is already there, and
+ superclass differ, throw away the old class.
+
+ * variable.c (rb_const_set): gives warning again on constant
+ redefinition.
+
+ * error.c (Init_Exception): SyntaxError, NameError, LoadError and
+ NotImplementError are subclasses of ScriptError<Exception, not
+ StandardError. experimental.
+
+Sat Jan 22 00:00:41 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_quotedwords): no longer use `String#split'.
+ and enable space escape within quoted word list.
+ e.g. %w(a\ b\ c abc) => ["a b c", "abc"].
+
+ * string.c (rb_str_slice_bang): new method `slice!'.
+
+Fri Jan 21 21:56:08 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.4.
+
+ * lib/net/http.rb: can receive messages which have
+ no Content-Length:.
+
+Fri Jan 21 16:15:59 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thgroup_s_new): new class ThreadGroup.
+
+Tue Jan 18 12:24:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * struct.c (Init_Struct): remove Struct's own hash and eql?.
+
+Sat Jan 15 22:21:08 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (search_method): argument klass may be 0.
+
+Sat Jan 15 15:03:46 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * enum.c (enum_index): remove this method.
+
+ * enum.c: remove use of pointers to local variables. find,
+ find_all, min, max, index, member?, each_with_index,
+
+ * eval.c (massign): multiple assignment does not use to_a anymore.
+ experimental.
+
+Fri Jan 14 12:22:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_replace): use memmove instead of memcpy for
+ overwrapping strings (e.g. a[1] = a).
+
+Thu Jan 13 11:12:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (arg_add): use new node, ARGSPUSH.
+
+Mon Jan 10 18:32:28 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * marshal.c (w_object): forgot an argument to call w_ivar().
+
+Sun Jan 9 18:13:51 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * random.c: first was not defined unless HAVE_RANDOM.
+
+Sat Jan 8 19:02:49 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_sysread): raise IOError for buffered IO.
+
+ * ext/socket/socket.c (s_recv): ditto.
+
+Fri Jan 7 00:59:29 2000 Masahiro Tomita <tommy@tmtm.org>
+
+ * io.c (io_fread): TRAP_BEG/TRAP_END added around getc().
+
+Thu Jan 6 00:39:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * random.c (rb_f_rand): should be initialized unless srand is
+ called before.
+
+Wed Jan 5 16:59:34 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.3.
+
+ * lib/net/session.rb: Session -> Protocol, ...
+
+ * lib/net/http.rb: HTTPCommand implementation was changed.
+
+Wed Jan 5 02:14:46 2000 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * parse.y: Fix SEGV on empty parens with UMINUS or UPLUS.
+
+Tue Jan 4 22:25:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (stmt): `() while cond' dumped core.
+
+Tue Jan 4 06:04:14 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: modify for cross-compiling.
+ use target_* instead of host_*.
+ use AC_CANONICAL_TARGET.
+
+ * Makefile.in: ditto.
+
+ * cygwin/GNUmakefile.in: ditto.
+
+Sat Jan 1 13:26:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_yield_0): force_recycle ruby_dyna_vars to gain
+ performance.
+
+ * array.c (rb_ary_delete_at_m): takes same argument pattern with
+ rb_ary_aref.
+
+Sat Jan 1 10:12:26 2000 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.h,util.c (rb_special_const_p): peep hole optimization.
+
+ * ruby.h,util.c (rb_test_false_or_nil): removed.
+
+ * ruby.h (RTEST, SPECIAL_CONST_P): peep hole optimization.
+
+ * ruby.h (FL_ABLE, FL_SET, FL_UNSET, FL_REVERSE): made expressions
+ not statements.
+
+ * ruby.h (OBJ_INFECT): newly added macro which copies taint from
+ `s' to `x'.
+
+Sat Jan 1 02:04:18 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_safe_level): new method.
+
+ * eval.c (rb_yield_0): recycle dyna_var_map to reduce object
+ allocation.
+
+Fri Dec 31 00:52:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c: thread independent trace_func not needed.
+
+Thu Dec 30 14:47:31 1999 akira yamada <akira@ruby-lang.org>
+
+ * configure.in: specifies -soname in LIBRUBY_DLDFLAGS on linux
+ platforms.
+
+Thu Dec 30 10:51:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c,io.c,hash,c,re.c,string.c: `_m' suffix instead of
+ `_method' for wrapper functions to implement method,
+ e.g. `rb_str_join_m()'.
+
+Thu Dec 30 02:08:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (rb_cstr2inum): non-numeric format check added.
+ currently it works only with base == 0 (i.e. Integer()).
+
+ * bignum.c (rb_str2inum): now takes VALUE to 1st argument. null
+ byte check added.
+
+ * array.c (rb_ary_replace): unless replacement is an array,
+ replacement shall be converted to array by `[replacement]', not
+ by `replacement.to_a'.
+
+ * array.c (rb_ary_plus): right operand must be an array.
+
+ * array.c (rb_ary_concat): argument must be an array.
+
+Mon Dec 27 12:35:47 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/socket.c (sock_finalize): mswin32: fix socket handle leak.
+
+ * win32/win32.c (myfdclose): ditto.
+
+Sun Dec 26 23:15:13 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (mypopen): raise catchable error instead of rb_fatal.
+ * win32/win32.c (mypclose): fix process handle leak.
+
+Sun Dec 26 16:17:11 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): use UINT2NUM
+ instead of INT2NUM to set __dll__ and __proc__.
+
+Sat Dec 25 00:08:59 1999 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_Call): remove 'dword ptr'
+ from _asm.
+
+Fri Dec 24 10:26:47 1999 Koji Oda <oda@bsd1.qnes.nec.co.jp>
+
+ * win32/win32.h: use "C++" linkage.
+
+Fri Dec 24 02:00:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (THREAD_ALLOC): should initialize th->trace.
+
+Fri Dec 24 00:43:39 1999 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
+
+ * io.c (pipe_open): check for `fptr->f == NULL'.
+ * win32/win32.c (mypopen): STDERR does not work during ` function.
+
+Wed Dec 22 22:50:40 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.2.
+
+ * lib/net/http.rb: HTTP support is enhanced a little
+
+ * lib/net/http.rb: support proxy
+
+Tue Dec 21 17:21:28 1999 Koji Oda <oda@bsd1.qnes.nec.co.jp>
+
+ * ext/socket/socket.c (sock_finalize): mswin32: fix FILE* leak.
+
+Tue Dec 21 05:33:56 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.1.
+
+ * lib/net/http.rb: support HTTP chunk
+
+Mon Dec 20 19:08:12 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_file_s_expand_path): handle dir separator correctly.
+
+Sun Dec 19 22:56:31 1999 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
+
+ * lib/find.rb: support dosish root directory.
+ * win32/Makefile: ditto.
+ * win32/config.status: ditto.
+ * win32/win32.c (opendir): ditto.
+ * win32/win32.c (opendir): use CharPrev() to get last character
+ of the directory name.
+
+Sat Dec 18 03:00:01 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (path_check_1): check should be done by absolute path.
+
+ * marshal.c (r_ivar): should restore generic_ivar too.
+
+ * marshal.c (w_ivar): should dump generic_ivar too.
+
+Fri Dec 17 22:46:46 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.0.
+
+ * lib/net/http.rb: test release
+
+ * lib/net/session.rb: support class swapping
+
+ * lib/net/session.rb: Socket#flush_rbuf
+
+ * lib/net/session.rb: doquote -> Net.quote
+
+Fri Dec 17 19:27:43 1999 IWAMURO Motonori <iwa@mmp.fujitsu.co.jp>
+
+ * eval.c (rb_load): should initialize ruby_frame->last_class.
+
+Wed Dec 15 01:35:29 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (proc_options): option to change directory changed to
+ `-C' like tar.
+
+ * ruby.c (proc_options): argv boundary check for `-X'.
+
+Mon Dec 13 15:15:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_adjust_startpos): separate startpos adjustment
+ because of major performance drawback.
+
+ * class.c (rb_singleton_class): tainted status of the singleton
+ class must be synchronized with the object.
+
+ * eval.c (rb_thread_schedule): implement thread priority.
+
+Sat Dec 11 03:34:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (mark_hashentry): key should be VALUE, not ID.
+
+ * io.c (argf_eof): should check next_p too.
+
+Thu Dec 9 18:09:13 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * error.c (exc_set_backtrace): forgot to declare a VALUE argument.
+
+Thu Dec 9 14:19:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_obj_taint): explicit tainting must be prohibited at
+ level 4 to prevent polluting trusted object by untrusted code.
+
+ * file.c: file operations (stat, lstat, chmod, chown, umask,
+ truncate, flock) are prohibited in level 2 (was level 4).
+
+Wed Dec 8 11:48:23 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_f_require): prohibiting require() in the secure mode
+ cause serious autoloading error.
+
+ * variable.c (rb_obj_instance_variables): don't need to prohibit
+ to get list of instance variable names of untainted objects.
+
+ * variable.c (rb_ivar_get): don't need to prohibit to get instance
+ variables of untainted objects.
+
+ * variable.c (rb_mod_remove_const): should prohibit constant
+ removals too.
+
+Wed Dec 8 09:23:01 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): should try autoloading before defining
+ class/module at the toplevel.
+
+Tue Dec 7 22:15:30 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * configure.in: Modified rb_cv_rshift_sign detect routine and
+ more simple/fast RSHIFT() for hpux-10.x.
+
+Tue Dec 7 11:16:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (Init_eval): calculate stack limit from rlimit where
+ getrlimit(2) is available.
+
+Tue Dec 7 09:57:33 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * file.c (rb_file_ftype): should have removed mode_t.
+
+Mon Dec 6 15:55:30 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * numeric.c (fix_rshift): Fix -1 >> 32 returned 0 (should be -1).
+
+ * numeric.c (fix_rshift): Fix 1 >> -1 returned 0 (should be 2).
+
+Mon Dec 6 11:47:23 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (rb_f_sprintf): formatted string must be tainted if
+ any of parameters is a tainted string.
+
+ * file.c (rb_file_s_expand_path): expanded file path need not to
+ be tainted always.
+
+Sun Dec 5 20:25:29 1999 Katsuhiro Ueno <unnie@blue.sky.or.jp>
+
+ * eval.c (Init_Proc): simple typo.
+
+ * gc.c (add_heap): sizeof(RVALUE*), not sizeof(RVALUE).
+
+Sat Dec 4 01:40:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): adjust startpos for multibyte match unless
+ the first pattern is forced byte match.
+
+ * bignum.c (rb_big_rand): should not use rand/random where drand48
+ may be available. RANDOM_NUMBER should be provided from outside.
+
+Fri Dec 3 09:54:59 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (moreswitches): there may be trailing garbage at #!
+ line.
+
+ * eval.c (rb_f_require): should check require 'feature.o' too.
+
+Thu Dec 2 11:58:15 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * eval.c (rb_thread_loading): should maintain loading_tbl.
+
+Thu Dec 2 10:21:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_loading_done): wrong parameter to st_delete().
+
+Wed Dec 1 11:24:06 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ruby.c (process_sflag): process -s properly (should not force `--').
+
+Wed Dec 1 09:47:33 1999 Kazunori NISHI <kazunori@swlab.csce.kyushu-u.ac.jp>
+
+ * string.c (rb_str_split_method): should increment end too.
+
+Tue Nov 30 18:00:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c: MARSHAL_MINOR incremented; format version is 4.2.
+
+ * marshal.c (w_object): distinguish class and module.
+
+ * marshal.c (w_object): save hash's default value.
+
+ * marshal.c (r_object): restore hash's default value.
+
+Tue Nov 30 01:46:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_source): generated source string must be tainted if
+ regex is tainted.
+
+ * file.c (rb_file_s_basename): basename should not be tainted
+ unless the original path is tainted.
+
+ * file.c (rb_file_s_dirname): ditto.
+
+Mon Nov 29 20:42:13 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (stat_new): Struct::Stat -> File::Stat; Stat is no longer
+ a Struct.
+
+Mon Nov 29 15:28:52 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_path2class): evaluated value from path should be
+ module or class.
+
+Fri Nov 26 18:12:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_exec_end_proc): should remove only end_procs defined
+ within load wrapper.
+
+ * eval.c (rb_load): save and restore ruby_wrapper around loading.
+
+ * eval.c (rb_mark_end_proc): mark end procs registered by END{} or
+ at_exit{}.
+
+ * eval.c (rb_set_end_proc): should not call rb_global_variable()
+ on heap address; it crashed mod_ruby.
+
+Mon Nov 22 14:07:24 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ruby.c (proc_options): variable e_script should be visited by
+ garbage collector.
+
+Sat Nov 20 10:10:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (inspect_i): value may be nil, check revised.
+
+Fri Nov 19 18:06:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (glob): recursive wildcard match by `**' ala zsh.
+
+Fri Nov 19 11:44:26 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * variable.c: was returning void value.
+
+Fri Nov 19 03:57:22 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c: add methods Stat struct class to reduce stat(2).
+
+Thu Nov 18 16:18:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/pstore.rb: mutual lock by flock(2).
+
+Thu Nov 18 11:44:13 1999 Masahiro Tomita <tommy@tmtm.org>
+
+ * io.c (read_all): should check bytes too.
+
+Wed Nov 17 02:40:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (Init_IO): $defout (alias of $>) added.
+
+Tue Nov 16 09:47:14 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/pstore.rb: add mutual lock using symlink.
+
+Mon Nov 15 16:50:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * enum.c (enum_grep): non matching grep returns an empty array, no
+ longer returns nil.
+
+ * enum.c (enum_grep): grep with block returns collection of
+ evaluated values of block over matched elements.
+
+Mon Nov 15 04:50:33 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * re.c (rb_reg_source): should not call rb_reg_expr_str()
+ everytime.
+
+Sat Nov 13 07:34:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_mod_constants): traverse superclasses to collect
+ constants.
+
+ * eval.c (assign): modified for shared variables.
+
+ * eval.c (rb_eval): search nested scope, then superclasses to
+ assign shared variables within methods.
+
+ * eval.c (rb_eval): remove warnings from constants modification,
+ because they are no longer constants.
+
+ * parse.y (node_assign): modified for shared variables.
+
+ * parse.y (assignable): allow constant assignment in methods;
+ constants should be called `shared variable'.
+
+Fri Nov 12 23:52:19 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * process.c (rb_f_system): argument check for NT, __EMX__, DJGPP.
+
+Wed Nov 10 21:54:11 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * hash.c (rb_any_cmp): Fixed return without value.
+
+Wed Nov 10 17:57:06 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c: incorporate <yasuf@big.or.jp>'s sprintf patch at
+ [ruby-dev:7754].
+
+Wed Nov 10 08:28:53 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_call0): supply class parameter for each invocation.
+
+Tue Nov 9 13:21:04 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * configure.in: AC_MINIX move to before AC_EXEEXT and AC_OBJEXT.
+
+Mon Nov 8 19:52:29 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * configure.in: Renamed AC_CHAR_UNSIGNED to AC_C_CHAR_UNSIGNED.
+
+ * configure.in: Added default to AC_CHECK_SIZEOF().
+
+Mon Nov 8 14:28:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (stmt): rescue modifier added to the syntax.
+
+ * keywords: kRESCUE_MOD added.
+
+ * eval.c (rb_f_eval): fake outer scope when eval() called without
+ bindings.
+
+ * eval.c (rb_f_binding): should copy last_class in the outer frame too.
+
+Sun Nov 7 18:31:04 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * eval.c (is_defined): last_class may be 0.
+
+Sat Nov 6 19:26:55 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * Makefile.in: Added depend entry make parse.@OBJEXT@ from parse.c
+ for UCB make
+
+Thu Nov 4 17:41:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): \< (wordbeg), \> (wordend) disabled.
+
+Wed Nov 3 08:52:57 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * io.c (Init_IO): forgot to use INT2FIX() around SEEK_SET, etc.
+
+Wed Nov 3 00:25:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_split_method): use mbclen2() to handle kcode
+ option of regexp objects.
+
+Mon Nov 1 14:22:15 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * eval.c (rb_eval): reduce recursive calls to rb_eval()
+ case of ||= and &&= .
+
+Sun Oct 31 13:12:42 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * regex.c (re_compile_pattern): wrong [\W] match.
+
+Fri Oct 29 16:57:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/nkf/lib/kconv.rb: new String methods (kconv, tojis, toeuc,
+ tosjis).
+
+ * time.c (time_s_at): now accepts optional second argument to
+ specify micro second.
+
+Thu Oct 28 13:35:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_split_method): should be mbchar aware with
+ single char separators.
+
+Wed Oct 27 12:57:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * random.c (rb_f_srand): random seed should be unsigned.
+
+Tue Oct 26 23:58:15 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_collect): collect for better performance.
+
+Tue Oct 26 19:20:54 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * marshal.c (r_object): should register class/module objects.
+
+Sat Oct 23 15:59:39 1999 Takaaki Tateishi <ttate@jaist.ac.jp>
+
+ * process.c (rb_f_system): should require at least one argument.
+
+Sat Oct 23 12:42:44 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * enum.c (enum_collect): collect without block will collect
+ elements in enumerable.
+
+Thu Oct 21 16:14:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (moreswitches): function to process string option;
+ the name is stolen from perl (not implementation).
+
+ * ruby.c (proc_options): use RUBYOPT environment variable to
+ retrieve the default options.
+
+ * dir.c (fnmatch): use eban's fnmatch; do not depend on system's
+ fnmatch (which may have portability problem) anymore.
+
+Wed Oct 20 15:14:24 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (marshal_load): should protect the generated object
+ table (arg->data) from GC.
+
+Mon Oct 18 16:15:52 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/nkf/nkf.c (rb_nkf_kconv): output should be NUL terminated.
+
+Mon Oct 18 09:03:01 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb: 1.0.3
+
+ * lib/net/pop.rb: new methods POP3Command#uidl, POPMail#uidl.
+
+Sun Oct 17 03:35:33 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * array.c (rb_ary_pop): forgot some freeze checks.
+
+Sat Oct 16 12:57:53 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * array.c (rb_ary_sort): always returns the copied array.
+
+Fri Oct 15 22:50:41 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * error.c (sys_nerr): on CYGWIN, it is _sys_nerr.
+
+Fri Oct 15 01:32:31 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c (rb_io_ctl) :need to use NUM2ULONG, not NUM2INT.
+
+ * ext/Win32API/Win32API.c (Win32API_Call): need to use NUM2ULONG,
+ not NUM2INT.
+
+Fri Oct 15 00:22:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (Init_Regexp): super class of the MatchingData, which was
+ Data, to be Object.
+
+ * eval.c (ruby_run): evaluate required libraries before load &
+ compiling the script.
+
+ * parse.y (lex_getline): retrieve a line from the stream, saving
+ lines in the table in debug mode.
+
+ * eval.c (call_trace_func): treat the case ruby_sourcefile is null.
+
+Thu Oct 14 02:00:10 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (string): compile time string concatenation.
+
+Wed Oct 13 07:28:09 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb: 1.0.2
+
+ * lib/net/session.rb: new method Session#set_pipe.
+
+ * lib/net/session.rb, smtp.rb, pop.rb: add RD documentation.
+
+Wed Oct 13 02:17:05 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * array.c (rb_ary_plus): remove recursion.
+
+ * array.c (rb_ary_sort_bang): detect modify attempt.
+
+Wed Oct 13 02:17:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (block_pass): should copy block to prevent modifications.
+ tag in the structure should be updated from latest prot_tag.
+
+ * eval.c (proc_s_new): tag in struct BLOCK should not point into
+ unused stack.
+
+ * dir.c (dir_s_glob): iterate over generated matching filenames if
+ the block is given to the method.
+
+ * array.c (rb_ary_at): new methods; at, first, last.
+
+ * hash.c (rb_hash_fetch): raises exception unless the default
+ value is supplied.
+
+ * hash.c (rb_hash_s_create): need not remove nil from value.
+
+ * hash.c (rb_hash_aset): setting value to nil does not remove key
+ anymore.
+
+Tue Oct 12 22:29:04 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_read): length may be 0 or negative.
+
+Tue Oct 12 13:26:27 1999 Jun-ichiro itojun Hagino <itojun@itojun.org>
+
+ * signal.c (posix_signal): RETSIGTYPE may be void.
+
+Tue Oct 12 03:28:03 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * array.c (rb_ary_delete_at): allows negative position.
+
+Mon Oct 11 17:42:25 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (rb_intern): should generate distinct ID_ATTRSET symbols
+ for the name with multiple `='s at the end.
+
+ * Makefile.in (CPPFLAGS): separate cpp flags from CFLAGS.
+
+Mon Oct 11 07:27:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): should not execute the `else' clause on the
+ case the exceptions are handled by the `rescue' clause.
+
+ * signal.c (Init_signal): ignore SIGPIPE by default.
+
+Wed Oct 6 17:13:19 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ruby.c (addpath): rubylib_mangled_path() modified.
+
+Mon Oct 4 12:42:32 1999 Kazuhiko Izawa <izawa@erec.che.tohoku.ac.jp>
+
+ * pack.c (pack_unpack): % in printf format should be %%.
+
+Mon Oct 4 10:01:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_obj_instance_variables): should always return
+ array for all object can have instance variables now.
+
+Mon Oct 4 00:08:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (OFF16): need to adjust pointer address to pack/unpack on
+ 64bit machines.
+
+Sun Oct 3 03:05:59 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * time.c (time_arg): mktime y2k problem.
+
+Sun Sep 26 16:54:45 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * parse.y (here_document): `\r' handling for here documents.
+
+Wed Sep 22 09:20:11 1999 Masahiro Tomita <tommy@tmtm.org>
+
+ * ext/socket/socket.c: SOCKS5 support.
+
+Wed Sep 22 07:33:23 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb: 1.0.1
+
+ * lib/net/pop.rb: APOP did not work.
+
+ * lib/net/pop.rb: modify the way to make APOP challenge.
+
+Wed Sep 22 00:35:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_include): should return boolean value.
+
+ * regex.c (re_compile_fastmap): wrong comparison with mbc.
+
+ * eval.c (specific_eval): default sourcefile name should be
+ "(eval)" for module_eval etc.
+
+Wed Sep 22 00:06:07 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/Makefile: update rules.
+
+ * io.c (io_fread): should not assign in char, it maybe -1.
+
+Tue Sep 21 23:57:54 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (call_trace_func): should not propagate retval in
+ trace_func.
+
+Mon Sep 20 21:35:39 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (myselect): assume non socket files are always
+ readable/writable.
+
+Mon Sep 20 01:08:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_fread): should not block other threads.
+
+ * io.c (rb_io_synchronized): renamed from rb_io_unbuffered(); do
+ not call setbuf(NULL) anymore.
+
+Sat Sep 18 13:45:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * stable version 1.4.2 released.
+
+Fri Sep 17 23:24:17 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (rb_f_missing): dumped core if no argument given.
+
+Fri Sep 17 23:21:06 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (myselect): translate WSAEINTR, WSAENOTSOCK into
+ UNIX errno constants.
+
+Fri Sep 17 00:52:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (arg): assignable() may return 0.
+
+Thu Sep 16 20:46:23 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * eval.c (rb_eval): was doubly evaluating the return expression.
+
+Thu Sep 16 18:40:08 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * stable version 1.4.1 released.
+
+Thu Sep 16 11:33:22 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (rb_str_match): should return nil.
+
+Wed Sep 15 22:46:37 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_s_quote): should quote `-' too.
+
+Tue Sep 14 15:23:22 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (yylex): no need to ignore `\r' here.
+
+ * parse.y (nextc): strip `\r' from text.
+
+ * parse.y (nextc): support `__END__\r\n' type terminator.
+
+Mon Sep 13 10:49:19 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * eval.c (rb_eval): needless RTEST(ruby_verbose) removed.
+
+Mon Sep 13 09:10:11 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb: 1.0.0
+
+Wed Sep 8 11:37:38 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * time.c (make_time_t): bit more strict comparison.
+
+Tue Sep 7 00:50:56 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * range.c (range_each): use rb_str_upto() for strings.
+
+ * string.c (rb_str_upto): set upper limit by comparing curr <= end.
+
+ * range.c (range_each): should check equality to handle magic
+ increment.
+
+Mon Sep 6 22:43:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): break/next/redo available within -n/-p loop.
+
+Fri Sep 3 11:14:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * compar.c (cmp_equal): should not raise exception; protect by
+ rb_rescue().
+
+Thu Sep 2 05:23:05 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * file.c (rb_file_s_expand_path): use dirsep, instead of character
+ literal '/'.
+
+ * file.c (rb_file_s_expand_path): reduce multiple dirsep at the top.
+
+Wed Sep 1 00:28:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_call): call rb_undefined() if a method appears not to
+ be exist explicitly from cache.
+
+ * eval.c (rb_method_boundp): check method cache before calling
+ rb_get_method_body().
+
+ * eval.c (rb_get_method_body): store method non-existence
+ information in the cache.
+
+ * random.c (rb_f_srand): use getpid(2) to generate seed.
+
+ * regex.c (re_match): do not apply partial mbc match for
+ charset_not.
+
+ * regex.c (re_compile_pattern): put extended literal prefix (0xff)
+ only before numeric literals, not before all >0x80 char.
+
+ * regex.c (re_compile_pattern): put numeric literal in extended
+ charset region, not normal charset bits.
+
+ * regex.c (re_compile_fastmap): calculate fastmap for charset and
+ charset_not to treat numeric literal (e.g. \246) specially.
+
+Fri Aug 28 17:32:55 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * eval.c (rb_eval): should set return value (nil) explicitly if a
+ value is omitted for return statement.
+
+Sun Aug 26 20:26:40 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ext/readline/readline.c: restore terminal mode
+ even if readline() interrupted.
+
+ * ext/readline/readline.c: returned string need to
+ be tainted.
+
+ * ext/readline/readline.c: fixed memory leak.
+
+ * ext/readline/readline.c: allow negative index.
+
+ * ext/readline/readline.c: added Readline::HISTORY.size
+ same as Readline::HISTORY.length
+
+ * ext/readline/readline.c: allow conditional parsing
+ of the ~/.inputrc file by `$if Ruby'.
+
+ * ext/readline/extconf.rb: check whether the
+ libreadline has the variable `rl_completion_append_character'
+ (this feature was implemented from GNU readline 2.1).
+
+Thu Aug 26 15:06:11 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * gc.c (rb_gc): local variables may be placed beyond stack_end, so
+ use an address from alloca(1) on non C_ALLOCA platforms.
+
+Thu Aug 26 01:24:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (rb_f_sprintf): "%%" is legal, but "%3.14%" is not.
+
+Mon Aug 23 00:00:54 1999 Tsukada Takuya <tsukada@fminn.nagano.nagano.jp>
+
+ * regex.c (re_compile_fastmap): wrong macro caused memory leak.
+
+Sat Aug 21 11:30:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (ADJ): should not adjust addresses to data on heap.
+
+Fri Aug 20 20:50:58 1999 Kenji Nagasawa <kenn@hma.att.ne.jp>
+
+ * defines.h (PATH_SEP): path separator is ";" for OS/2.
+
+Thu Aug 19 10:50:43 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * gc.c (rb_gc): add volatile to avoid GCC optimize bug(?).
+
+Wed Aug 18 23:48:10 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * due to disk trouble, some change records were lost. several
+ modification made to eval.c, gc.c, io.c, pack.c,
+ ext/extmk.rb.in, and lib/mkmf.rb.
+
+Fri Aug 13 15:41:39 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * stable version 1.4.0 released.
+
+Fri Aug 13 03:16:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (argf_forward): since $stdout may be non-IO, ARGF.file is
+ not guaranteed to be IO. check and forwarding added to every ARGF
+ method.
+
+ * io.c (set_outfile): $stdout/$stderr may not be IO now.
+
+ * io.c (set_stdin): $stdin may not be IO now.
+
+ * range.c (rb_range_beg_len): round `end' to length as documented.
+
+ * io.c (Init_IO): preserve original stdin/stdout/stderr.
+
+Thu Aug 12 13:44:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (Init_load): require receives 1 argument.
+
+ * eval.c (frame_dup): should clear tmp to avoid dangling
+ references.
+
+Wed Aug 11 13:33:13 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (rb_eval): no automatic aggregate initialization.
+
+ * eval.c (module_setup): ditto.
+
+Wed Aug 11 18:18:41 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * eval.c (yield_under_i): automatic aggregate initialization is an
+ ANSI feature.
+
+Wed Aug 11 10:10:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): parse `[].length==0' as `([].length)==0', not
+ `([].length=)=0'
+
+ * parse.y (yylex): parse `[].length!=0' as `([].length)!=0', not
+ `([].length!)=0'
+
+ * parse.y (peek): peek-in lexical buffer.
+
+Wed Aug 11 00:34:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): bug on backward jump adjustment concerning
+ stop_paren.
+
+Tue Aug 10 14:54:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/nkf/nkf.c (rb_nkf_guess): binary detection was wrong.
+
+Tue Aug 10 00:07:36 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_clone): should use CLONESETUP().
+
+Mon Aug 9 23:57:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h (CLONESETUP): should have copied generic instance
+ variables too.
+
+Mon Aug 9 10:46:54 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/extconf.rb: add check for <arpa/nameser.h> and
+ <resolv.h>.
+
+Sat Aug 7 13:19:06 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * numeric.c (flo_cmp): comparing NaN should not return value.
+ raises FloatDomainError.
+
+Sat Aug 7 03:09:08 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (blk_free): free copied frames too.
+
+ * eval.c (frame_dup): should copy previous frames from stack to
+ heap to preserve frame information.
+
+Fri Aug 6 15:01:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.7 - version 1.4 beta
+
+ * ext/socket/socket.c (s_recv): UDPsocket#recvfrom now returns
+ IPsocket#addr information.
+
+ * array.c (rb_ary_subary): ary[-3,3] should not return nil.
+
+Thu Aug 5 10:58:01 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_mark): protect old ruby_frame from GC during it
+ replaced by eval().
+
+ * eval.c (eval): do not modify frame.prev; binding should preserve
+ information about calling() too.
+
+ * eval.c (rb_yield_0): no arity check for mere yield; but only for
+ Proc#call.
+
+Tue Aug 3 22:07:13 1999 Kazuhiro HIWADA <hiwada@kuee.kyoto-u.ac.jp>
+
+ * object.c (rb_mod_clone): should check if iv_tbl, m_tbl are
+ initialized.
+
+Tue Aug 3 19:03:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_any_cmp): use rb_with_disable_interrupt() to ensure
+ clearance of rb_prohibit_interrupt even on failure.
+
+ * eval.c (rb_with_disable_interrupt): new function added.
+
+Sat Jul 31 23:23:44 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_create_0): set THREAD_RAISED flag on thread
+ termination by exception.
+
+ * eval.c (rb_thread_join): `$!' may not be nil for the threads
+ created in rescue clause.
+
+ * eval.c (rb_thread_status): ditto.
+
+ * eval.c (rb_thread_join): should re-raise exception for already
+ dead threads too.
+
+Fri Jul 30 17:56:54 1999 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
+
+ * object.c (rb_mod_ge): wrong comparison.
+
+Fri Jul 30 12:15:44 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/tcltklib/extconf.rb: win32 support.
+
+ * lib/mkmf.rb: use append_library().
+
+ * ext/extmk.rb.in: ditto.
+
+Fri Jul 30 02:11:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_delete): should return nil for deleting non
+ existing item.
+
+ * io.c (rb_io_close): call rb_sys_wait() on explicit close.
+
+ * io.c (rb_io_fptr_close): do not call rb_sys_wait() on finalize.
+
+ * eval.c (yield_under_i): cbase context should be maintained for
+ Module#module_eval(). suggested by <inaba@st.rim.or.jp>.
+
+Wed Jul 28 01:18:28 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * Makefile.in: add -I$(hdrdir)/lib to install using ftools.
+
+ * util.c: use HAVE_FCNTL_H, not HAVE_FCNTL
+
+Wed Jul 28 18:24:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.6 - version 1.4 alpha
+
+Tue Jul 27 09:38:08 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * eval.c (rb_eval): reduce recursive rb_eval() calls by
+ NODE_BLOCKs.
+
+Tue Jul 27 01:20:40 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * file.c (rb_file_s_expand_path): drive letter patch.
+
+Mon Jul 26 02:36:31 1999 Shugo Maeda <shugo@netlab.co.jp>
+
+ * eval.c (rb_load): should clear ruby_nerr.
+
+ * eval.c (rb_thread_join): oldbt should not be empty to unshift.
+
+Sun Jul 25 12:09:16 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * dir.c (push_braces): should treat nested braces.
+
+Fri Jul 23 02:49:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_hash_clear): dummy argument added; suggested by
+ <eguchi@shizuokanet.ne.jp>. thanks.
+
+Thu Jul 22 19:37:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_join): get_backtrace() may return Qnil.
+ typecheck added.
+
+Tue Jul 20 14:36:43 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * range.c (range_each): do not treat String specially (for future
+ override).
+
+Tue Jul 20 02:28:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_gets): $_ should be nil, when get returns nil.
+
+ * io.c (rb_f_gets): ditto.
+
+Mon Jul 19 17:13:09 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_fastmap): should continue fastmap compile
+ for anychar_repeat, for it's repeat anyway.
+
+Mon Jul 26 13:33:45 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * lib/jcode.rb: replaced by faster code.
+
+Mon Jul 19 01:57:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/mkmf.rb: no longer use install program.
+
+ * ext/extmk.rb.in: use miniruby to install programs.
+
+Sat Jul 17 00:06:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (ipaddr): don't do reverse lookup if
+ attribute do_not_reverse_lookup is set for socket classes.
+ Experimental. Note this is a global attribute.
+
+Fri Jul 16 22:18:29 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_eof): use feof() to check EOF already met.
+
+ * io.c (read_all): should return nil at EOF.
+
+Fri Jul 16 13:39:42 1999 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/telnet.rb: version 0.231.
+
+Fri Jul 16 10:58:22 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * regex.c (re_match): debug print removed.
+
+Fri Jul 16 09:58:15 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * many files: clean up unused variables found by gcc -Wall.
+
+ * lib/mkmf.rb: better cygwin support etc.
+
+ * ext/extmk.rb.in: ditto.
+
+ * instruby.rb: ditto.
+
+Fri Jul 16 01:37:50 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * string.c (rb_str_squeeze_bang): the type of local variable `c'
+ should be int, not char.
+
+ * string.c (rb_str_reverse): should always return copy.
+
+Thu Jul 15 23:25:57 1999 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * lib/debug.rb: better display & frame treatment.
+
+Thu Jul 15 21:16:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_each): returns self for normal termination;
+ returns nil for break.
+
+ * string.c: non bang methods (e.g. String#sub) should always
+ return copy of the receiver.
+
+Thu Jul 15 21:09:15 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * eval.c (find_file): do not add empty string to the path.
+
+ * configure.in (with-search-path): should not add empty string if
+ the option is not supplied.
+
+Thu Jul 15 17:49:08 1999 Ryo HAYASAKA <hayasaka@univ21.u-aizu.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: move `#include "ruby.h"' forward.
+
+Thu Jul 15 16:54:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.5 - version 1.4 alpha
+
+Wed Jul 14 23:45:33 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (ruby_init): initialize for the first time only.
+
+Tue Jul 13 00:15:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_hash_index): re-defined; method to retrieve a key
+ from the value.
+
+ * hash.c (Init_Hash): member? should be re-defined for Hash.
+
+Tue Jul 12 13:54:51 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * io.c (rb_file_sysopen): wrong number of argument.
+
+Mon Jul 12 11:52:35 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_f_missing): class name included in message.
+
+ * eval.c (print_undef): better error message.
+
+Sun Jul 11 05:36:17 1999 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * lib/debug.rb: patch to show proper position.
+
+Fri Jul 9 23:56:14 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * dln.c (dln_find_1): path conv. moved to conv_to_posix_path.
+
+ * dln.c (conv_to_posix_path): path conv. should be done.
+
+Fri Jul 9 10:26:47 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * random.c (RANDOM_NUMBER): should place parentheses.
+
+Fri Jul 8 11:00:51 1999 Shugo Maeda <shugo@netlab.co.jp>
+
+ * numeric.c (fix_div): division may be out of fixnum range.
+
+ * bignum.c (bigdivmod): proper sign calculation to result.
+
+Wed Jul 7 18:27:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * st.c (st_delete_safe): was modifying wrong slot.
+
+Mon Jul 5 13:17:46 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): close all files at exit.
+
+Fri Jul 2 18:00:21 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/Mail/README: Mail-0.3.0 added to the distribution.
+
+Fri Jul 2 01:45:32 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_fastmap): avoid allocation of register
+ variables for each invocation of re_match(). Suggested by
+ Zasukhin Ruslan <ruslan@paradigmasoft.com>. Thanks.
+
+Tue Jun 29 20:39:24 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ext/tk/lib/tk.rb (TkVariable): bug fix; should value type check
+ be added?
+
+ * string.c (rb_str_each_line): a bug in paragraph mode.
+
+ * ruby.c (load_file): shifted too much to skip #!.
+
+Tue Jun 29 06:50:21 1999 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/CGI.rb: 0.30 - cleanup release, incompatible.
+
+ * lib/telnet.rb: 0.22 - timeout added.
+
+Tue Jun 29 10:49:25 1999 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * configure.in: better Rhapsody support.
+
+ * lib/mkmf.rb: Rhapsody/NEXTSTEP support.
+
+Tue Jun 29 01:42:13 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/pty/pty.c (chld_changed): should use POSIX.1 style wait.
+
+Mon Jun 28 21:07:36 1999 KIMURA Koichi <kbk@kt.rim.or.jp>
+
+ * ext/extmk.rb.nt: wrong result for have_library().
+
+Mon Jun 28 15:24:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * missing/isinf.c: OSF/1 raises SIGFPE on one()/zero().
+
+ * regex.c (re_search): should search til EOS, for patterns may
+ match beyond the end of range.
+
+Mon Jun 28 12:49:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_f_select): should not accept Time objects as an
+ argument for it is time interval.
+
+ * process.c (rb_f_sleep): ditto.
+
+ * file.c (test_s): should return nil for false condition.
+
+Mon Jun 28 12:23:52 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * bignum.c (rb_dbl2big): typo.
+
+ * file.c (rb_f_test): ditto.
+
+ * string.c (rb_str_crypt): wrong message.
+
+Sun Jun 27 19:50:11 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * eval.c (rb_f_exit): should have treat signed integer status, not
+ VALUE.
+
+ * process.c (rb_f_exit_bang): should work like exit().
+
+Sun Jun 27 16:21:32 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * string.c (rb_str_rindex): wrong position to search.
+
+Sat Jun 26 04:05:30 1999 Takaaki Tateishi <ttate@jaist.ac.jp>
+
+ * configure.in (configure_args): --with-search-path to specify
+ additional ruby search path.
+
+ * ruby.c (ruby_prog_init): additional search path.
+
+Fri Jun 25 13:09:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (pack_unpack): needed to initialize natint.
+
+ * regex.c (re_compile_pattern): add start_paren to avoid too much
+ finalization on maybe_finalize_jump.
+
+Fri Jun 25 13:07:20 1999 Koji Oda <oda@bsd1.qnes.nec.co.jp>
+
+ * missing/isinf.c: include "config.h" added.
+
+Fri Jun 25 07:25:05 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * lib/mkmf.rb: initialize $(topdir).
+
+ * ext/extmk.rb.in (install_rb): install lib/*.rb properly.
+
+ * configure.in (linux): specifies -rpath on --enable-shared.
+
+ * configure.in (aix): ruby.imp must reside in $(topdir).
+
+Thu Jun 24 19:11:29 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * parse.y (rb_str_extend): multi-byte identifier in expression
+ interpolation in strings.
+
+ * parse.y (yylex): support multi-byte char identifiers.
+
+Thu Jun 24 15:27:13 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (f_arg): check duplicate argument names.
+
+ * gc.c (rb_gc_mark): marking wrong member for NODE_ARGS.
+
+ * string.c (rb_str_rindex): POSITION specifies start point, not
+ end point.
+
+Thu Jun 24 13:00:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (print_mbc): wrong boundary.
+
+ * pack.c (uv_to_utf8): raises ArgError for too big value.
+
+Thu Jun 24 11:02:51 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * pack.c (uv_to_utf8): mask needed.
+
+Wed Jun 23 21:03:56 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * ruby.h (struct RFile): remove iv_tbl from struct. instance
+ variables are handled as generic ivs.
+
+Wed Jun 23 22:06:26 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * pack.c (utf8_to_uv): pack to 7 bytes sequence.
+
+ * pack.c (uv_to_utf8): wrong boundary.
+
+ * pack.c (pack_unpack): should treat as unsigned long.
+
+Wed Jun 23 15:10:11 1999 Inaba Hiroto <inaba@sdd.tokyo-sc.toshiba.co.jp>
+
+ * parse.y (parse_string): failed to parse nested braces.
+
+ * parse.y (parse_regx): nested braces within #{} available.
+
+Wed Jun 23 11:18:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (slow_search): wrong shift width for mbcs.
+
+ * eval.c (rb_thread_save_context): should not clear th->locals.
+
+Wed Jun 23 02:06:14 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): UMINUS binds too tight with digits. changed so
+ that -2**2 => -4.
+
+ * parse.y (close_paren): `do' for expr termination now works it
+ used to be.
+
+Wed Jun 22 18:26:42 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * pack.c (pack_pack): should initialize local variable `j'.
+
+Wed Jun 22 15:24:59 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * parse.y (here_document): a bug for multiline heredoc.
+
+Tue Jun 22 15:06:36 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/socket/socket.c (ruby_socket): forgot to return fd
+ explicitly.
+
+Tue Jun 22 13:34:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * rubyio.h (MakeOpenFile): should initialize member `iv_tbl'.
+
+Wed Jun 22 10:35:51 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * io.c (rb_io_gets_internal): getc(3) may not set errno on
+ interrupt.
+
+Mon Jun 21 22:39:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (call_required_libraries): ruby_sourceline should be
+ cleared before loading libraries.
+
+ * io.c (set_stdin): do not use reopen(), so that we don't need to
+ dup original stdin before assigning $stdin.
+
+Mon Jun 21 18:04:27 1999 Ryo HAYASAKA <hayasaka@univ21.u-aizu.ac.jp>
+
+ * ext/dbm/dbm.c: include <cdefs.h> for solaris 2.6.
+
+Mon Jun 21 15:59:47 1999 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/socket/socket.c (ip_addrsetup): forgot to put `else'.
+
+Mon Jun 21 15:38:37 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (fptr_finalize): remove rb_syswait() invocation to avoid
+ wait4(2) within GC. rb_syswait() moved to rb_io_fptr_close().
+
+Mon Jun 21 12:05:59 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * dir.c (dir_s_glob): remove MAXPATHLEN restriction.
+
+ * ext/md5/md5init.c (md5_hexdigest): should have used "%02x".
+
+Sun Jun 20 19:50:38 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * string.c (rb_str_each_line): should have checked string
+ boundary.
+
+Sat Jun 19 22:24:12 1999 Kenji Nagasawa <kenn@hma.att.ne.jp>
+
+ * OS/2 patch improved.
+
+Fri Jun 18 08:30:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (r_byte): add data length check.
+
+ * ext/tcltklib/tcltklib.c (_timer_for_tcl): was doing busy-wait.
+
+Tue Jun 15 10:01:21 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * configure.in: remove trailing slash from interpreter embedded
+ shared library path.
+
+ * configure.in (INSTALL_DLLIB): install shared lib with 0555.
+
+ * instruby.rb: changed mode for shared library into 0555.
+
+Fri Jun 11 23:27:00 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * ext/etc/etc.c (etc_passwd): should return nil, not exception for
+ call after last passwd entry.
+
+Fri Jun 11 15:21:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (rb_gc_mark_locations): add safety margin 1.
+
+ * eval.c (ruby_run): should protect toplevel node tree.
+
+ * ext/etc/etc.c (etc_group): dumps core if there's no more group.
+
+Fri Jun 11 01:50:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (ruby_run): Init_stack() was called too late; local
+ variables happened to be higher (or lower) than stack_start.
+
+Thu Jun 10 16:41:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c: do not call `initialize' for IO objects. So with Array,
+ Hash, Range, and Time objects.
+
+ * ext/curses/curses.c (curses_getch): made thread aware using
+ rb_read_check().
+
+ * ext/curses/curses.c (window_getch): ditto.
+
+ * ext/curses/curses.c (curses_getstr): made (partially) thread
+ aware using rb_read_check().
+
+ * ext/curses/curses.c (window_getstr): ditto.
+
+ * io.c (rb_read_check): new function to help making something
+ (like extension libraries) thread aware.
+
+ * eval.c (is_defined): `defined? super' should be true even for
+ private superclass methods.
+
+Fri Jun 10 13:42:10 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * pack.c (pack_pack): template `Z' should be allowed.
+
+Wed Jun 9 13:26:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_loading): modified to avoid nested race
+ condition of require().
+
+ * ext/tcltklib/tcltklib.c (ip_invoke): queue invocation on non
+ main threads.
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop): flush invocation
+ queues periodically.
+
+ * version.c (ruby_show_version): now print the message to stdout.
+
+ * version.c (ruby_show_copyright): ditto.
+
+Tue Jun 8 00:00:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (pack_unpack): append sentinel (NUL) to the string.
+
+ * ext/md5/md5init.c (md5_hexdigest): new method to obtain
+ printable hash string.
+
+ * ext/md5/md5init.c (md5_update): should return self.
+
+ * pack.c (pack_pack): undocumented template 'U' for UTF8.
+
+ * pack.c (pack_unpack): ditto.
+
+ * marshal.c (r_byte): should replace getc() with rb_getc().
+
+ * io.c (rb_getc): getc() replacement uses READ_DATA_PENDING() and
+ rb_thread_wait_fd().
+
+Mon Jun 7 23:23:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_mod_clone): should call CLOSESETUP().
+
+ * eval.c (bind_clone): should call CLONESETUP() for new clone.
+
+Sat Jun 5 10:32:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_oct): binary (e.g. 0b10111) support.
+
+ * variable.c (rb_const_set): raise warning, not exception.
+
+ * parse.y (yycompile): initialize parser internal variables.
+
+ * parse.y (close_paren): set lex_state to EXPR_PAREN after closing
+ parenthesis.
+
+ * parse.y (yylex): returns kDO for `do' right after method_call.
+
+Thu Jun 3 11:05:30 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * regex.c (read_backslash): should decode \b within class.
+
+Thu Jun 3 01:06:18 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * dln.c (dln_load): AIX improvement (aix_findmain removed).
+
+Wed Jun 2 00:41:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (pack_unpack): new undocumented template Z which strips
+ stuff after first null.
+
+ * pack.c (pack_pack): should preserve specified length of the
+ resulting string.
+
+Tue Jun 1 15:29:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (ruby_socket): retry after GC, if socket(2)
+ failed on EMFILE or ENFILE.
+
+ * ext/socket/socket.c (sock_s_socketpair): ditto.
+
+ * eval.c (module_setup): need to add PUSH_VAR/POP_VAR to clear
+ dyna vars link list.
+
+ * version.h (RUBY_RELEASE_CODE): integer macro constant for source
+ version detection.
+
+Sun May 30 22:19:12 1999 Kenji Nagasawa <kenn@tcp-ip.or.jp>
+
+ * ext/socket/socket.c: emx/gcc 0.9d now fixes things about
+ AF_UNIX.
+
+ * process.c: OS/2 EMX kludge.
+
+ * Makefile.in (strncasecmp.o): added dependency.
+
+Mon May 31 16:06:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.4 - preliminary release for 1.4
+
+Mon May 31 15:57:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_fptr_close): close on IO which main_thread is
+ waiting cause serious exception, that vanishes the actual fd
+ closing. Invocation of rb_thread_fd_close() is deferred
+ a little.
+
+Sat May 29 18:27:13 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * regex.c (re_match): stack boundary check needed.
+
+Sat May 29 12:27:00 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_invoke): proper ref count management
+ to avoid leak. I HATE REF COUNTING!!
+
+ * eval.c (ruby_run): moved ruby_require_libraries() to handle `-r'
+ from ruby_options() to avoid stack corruption for threads
+ created in libraries.
+
+Sat May 29 02:22:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_yield_0): when `for' appeared in blocks, it
+ introduced new scope for local variables.
+
+Fri May 28 17:16:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_squeeze_bang): squeeze AND of the arguments.
+ UNDOCUMENTED.
+
+ * string.c (rb_str_count): new UNDOCUMENTED method.
+
+ * string.c (rb_str_delete_bang): delete AND of the arg ranges.
+ UNDOCUMENTED FEATURE for 1.3.x.
+
+ * ext/socket/socket.c (setipaddr): re-wrote using ip_addrsetup().
+
+ * ext/socket/socket.c (ip_addrsetup): decode symbolic address
+ <broadcast>.
+
+Thu May 27 12:27:42 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (tr_trans): should handle NUL (\0) within strings.
+
+Tue May 25 16:45:11 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_f_syscall): syscall may return values other than zero
+ on success.
+
+ * regex.c (re_match): handle empty loop properly (hopefully).
+
+ * regex.c (re_match): remove empty group check, because it does
+ not help non-grouping parentheses (?:..).
+
+ * regex.c (re_compile_fastmap): treating try_next, finalize_push
+ wrong way.
+
+ * regex.c: remove some obsolete functions such as
+ group_match_null_string_p().
+
+Mon May 24 14:47:54 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (read_backslash): read backslash by regex.
+
+Sun May 23 19:44:58 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/pty/pty.c (getDevice): portability patch.
+
+Fri May 21 23:01:26 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/getaddrinfo.c (GET_AI): should set error code.
+
+Thu May 20 03:43:44 1999 Jun-ichiro itojun Hagino <itojun@itojun.org>
+
+ * ext/socket/socket.c: you should use sockaddr_storage to handle
+ IPv6 addresses.
+
+ * ext/socket/getaddrinfo.c (getaddrinfo): prevent retrieving
+ AF_INET6 address if hints.ai_flags == AI_PASSIVE.
+
+Wed May 19 12:27:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (exec_end_proc): should protect exceptions.
+
+ * gc.c (run_final): ditto.
+
+ * parse.y (f_rest_arg): allow just * for rest arg.
+
+ * parse.y (mlhs_basic): allow * without formal argument.
+
+ * regex.c (re_match): the variable `part' should be initialized.
+
+Tue May 18 15:25:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): a bug in range adjustment.
+
+Tue May 18 11:35:59 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * dln.c (conv_to_posix_path): path_len argument added.
+
+Mon May 17 12:26:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (fix_rev): should treat Fixnum as signed long.
+
+ * eval.c (massign): add strict number check for yield (and call).
+
+ * eval.c (proc_arity): new method to return number of arguments.
+
+ * eval.c (method_arity): new method to return number of arguments.
+
+ * parse.y (read_escape): char may be unsigned.
+
+ * string.c (rb_str_succ): ditto.
+
+ * string.c (tr_trans): ditto.
+
+ * object.c (Init_Object): methods `&', `|', `^' are added to nil.
+
+ * range.c (rb_range_beg_len): it should be OK for [0..-len-1].
+
+ * regex.c (re_search): search for byte literal within mbcs.
+
+ * regex.c (is_in_list): parsh
+
+ * regex.c (re_compile_fastmap): should have not alter the loop
+ variable `j' if TRASLATE_P().
+
+ * regex.c (re_compile_pattern): escaped characters should be read
+ by PATFETCH_RAW(c).
+
+Sat May 15 11:23:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): endline2 (\Z) should not match at the point
+ between a newline and end-of-line, like endline ($).
+
+ * class.c (include_class_new): should initialize iv_tbl to share
+ between module and iclass.
+
+Fri May 14 08:50:27 1999 Akira Endo <akendo@t3.rim.or.jp>
+
+ * regex.c (re_compile_fastmap): it should be k != 0 to skip.
+
+Fri May 14 12:46:56 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_load): a bug in old marshal format support.
+
+ * instruby.rb: make site_ruby directory.
+
+Fri May 14 10:18:02 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * regex.c (re_match): a bug in inline `.*' etc.
+
+Fri May 14 09:58:46 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * ruby.c (addpath): should have specified string length.
+
+Thu May 13 10:40:44 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval_string_wrap): new function.
+
+ * regex.c (re_compile_pattern): POSIX line match should alter
+ behavior for `^' and `$' to begbuf and endbuf2 respectively.
+
+ * ext/pty/pty.c: un-ANSI-fy function arguments.
+
+Wed May 12 14:19:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * struct.c (iv_get): in case of inheritance of generated struct
+ class, __member__ and __size__ should also be inherited.
+ Thanks for Pros Yeboah <yeboah@tu-harburg.de>.
+
+ * io.c (rb_f_gets_internal): should check number of arguments
+ before checking rb_rs == rb_default_rs. Thanks for Koji Arai
+ <JCA02266@nifty.ne.jp>.
+
+Tue May 11 08:29:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): .?, .+ did not work.
+
+Mon May 10 00:59:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/jcode.rb: forgot to squeeze on reverse (complement) case.
+
+ * string.c (tr_squeeze): should not set modify flag to be honest,
+ if the string is not modified.
+
+ * signal.c (Init_signal): SIGTERM should not be handled.
+
+ * regex.c (re_match): seeking for longest match is now optional,
+ which can be set using RE_OPTION_POSIXMATCH. This satisfies
+ POSIX longest match as much as Emacs's posix-* functions, which
+ are known to be incomplete.
+
+Sun May 9 13:04:01 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/socket.c (sock_s_getaddrinfo): conversion from
+ Fixnums to C integers needed.
+
+Sun May 9 11:51:43 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * range.c (range_eqq): reverse condition.
+
+ * range.c (range_s_new): default should be end inclusive.
+
+Sat May 8 03:27:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (thread_connect): replace nasty
+ rb_thread_fd_writable() with rb_thread_select().
+
+Fri May 7 20:49:00 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/getaddrinfo.c (inet_pton): wrong parameter to
+ inet_aton().
+
+ * ext/socket/addrinfo.h (__P): silly cut and paste typo.
+
+Fri May 7 17:03:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (glob): removed GPL'ed glob.c completely.
+
+Fri May 7 08:17:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/sdbm/extconf.rb: sdbm extension added to the distribution.
+
+Fri May 7 01:42:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (tcp_s_gethostbyname): avoid using struct
+ sockaddr_storage.
+
+Thu May 6 13:21:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_indexes): should not use rb_ary_concat().
+
+Thu May 4 12:34:18 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * parse.y (parse_string): there should be newline escape by
+ backslashes in strings.
+
+ * parse.y (parse_qstring): ditto.
+
+Mon May 3 04:37:20 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ext/tcltklib/extconf.rb: better search for libX11.
+
+ * range.c (range_s_new): embarrassing =/== typo.
+
+ * re.c (Init_Regexp): failed to set default kcode.
+
+Mon May 3 02:39:55 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * ext/socket/socket.c (open_inet): typo (res and res0).
+
+Tue May 4 02:07:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * mkconfig.rb: leave undefined $(VARIABLE) unexpanded in the
+ Config::CONFIG hash table.
+
+Mon May 3 09:37:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): expand exactn{n} at compile time.
+ handles stop_paren specially.
+
+ * regex.c (re_compile_pattern): expand x{n} at compile time.
+
+ * regex.c (re_search): posix line match should be checked.
+
+ * regex.c (re_search): a bug in anchor condition.
+
+Fri Apr 30 18:57:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.3
+
+ * string.c (rb_str_rindex): position should be END point, not
+ START point.
+
+ * re.c (rb_reg_search): pos means end point on reverse now.
+
+ * array.c (rb_ary_s_create): should clear ary->ptr to avoid
+ potential gc crash.
+
+Fri Apr 30 15:24:58 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/addrinfo.h: compatibility hack for ipv4.
+
+ * ext/socket/socket.c: itojun's ipv6 patches applied.
+
+ * ext/socket/extconf.rb: detect ipv6 features based on itojun's
+ ipv6 patches.
+
+ * ext/extmk.rb.in (enable_config): can handle --enable-xxx now.
+
+ * lib/mkmf.rb (enable_config): ditto.
+
+Fri Apr 30 05:22:23 1999 Shugo Maeda <shugo@netlab.co.jp>
+
+ * string.c (rb_str_aset): last index should not append.
+
+Thu Apr 29 18:55:31 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * dln.c (conv_to_posix_path): remove const from args.
+
+ * ruby.c (rubylib_mangle): remove Fatal(), the obsolete function.
+
+Tue Apr 27 14:11:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (fname): lazy workaround for keywords did not work well.
+
+ * ext/extmk.rb.in: `--with-xxx=yyy' argument configuration.
+
+ * lib/mkmf.rb: ditto.
+
+ * misc/ruby-mode.el: forgot to handle $`.
+
+ * ext/extmk.rb.in: better AIX link support proposed by
+ <komatsu@sarion.co.jp>.
+
+Mon Apr 26 16:46:59 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/extmk.rb.in: AIX shared library support modified.
+
+ * ext/aix_mksym.rb: ditto.
+
+ * configure.in: ditto.
+
+ * sprintf.c (rb_f_sprintf): should allocate proper sized buffer
+ for float numbers.
+
+Sat Apr 24 00:00:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (operation): syntax like `a.[]=(1,2)' is allowed.
+
+Fri Apr 23 23:54:09 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (argf_binmode): binmode method added to ARGF.
+
+Fri Apr 23 13:55:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_f_chomp): should assign the result to $_. or maybe
+ sub/gsub/chop/chomp should NOT assign $_ altogether.
+
+Thu Apr 22 16:50:54 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_callcc): call scope_dup() for all scopes in
+ the interpreter stack.
+
+Tue Apr 20 11:24:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_dump): `#' should be escaped.
+
+Tue Apr 20 02:32:42 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_regx): option /p for posix match added.
+
+ * re.c (rb_reg_desc): did not print options properly.
+
+ * io.c (rb_file_s_open): initialize was called twice.
+
+Mon Apr 19 18:56:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * configure.in (DEFAULT_KCODE): can specify default code for
+ $KCODE by --with-default-kcode=(euc|sjis|utf8|none).
+
+ * regex.c (IS_A_LETTER): a byte sequence shorter than mbc should
+ not match with \w etc.
+
+Mon Apr 19 13:49:11 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (eval): should restore ruby_dyna_vars.
+
+Fri Apr 16 21:40:43 1999 Nobuyoshi Nakada <gea02117@nifty.ne.jp>
+
+ * io.c (f_backquote): pipe_open may return nil.
+
+ * io.c (f_open): rb_io_open may return nil.
+
+ * io.c (io_s_foreach): ditto.
+
+ * io.c (io_s_readlines): ditto.
+
+ * io.c (io_defset): wrong message.
+
+Fri Apr 16 15:09:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (rb_str2inum): strtoul() returns long, not int.
+
+ * eval.c (rb_load): size of VALUE and ID may be different.
+
+ * util.c (mmprepare): int is too small to cast from pointers.
+
+ * config.guess: avoid 'linux-gnu' for alpha-unknown-linux.
+
+Thu Apr 15 23:46:20 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ruby.c (rubylib_mangle): mangle path by RUBYLIB_PREFIX.
+
+Wed Apr 14 23:52:51 1999 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * node.h (NODE_LMASK): should be long to avoid overflow.
+
+Wed Apr 14 13:14:35 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * dln.c: AIX dynamic link.
+
+ * ext/aix_ld.rb: ditto.
+
+Wed Apr 14 12:19:09 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/thread.rb: Queue#{enq,deq} added.
+
+Tue Apr 13 17:43:56 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_hash_s_create): Hash::[] acts more like casting.
+
+Tue Apr 13 00:33:52 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_stdio_set): warning for assignment to the variables
+ $std{in,out,err}.
+
+Mon Apr 12 23:12:32 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_reopen): check for reopening same IO.
+
+Fri Apr 9 17:45:11 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (rb_compile_string): bug for nested eval().
+
+ * regex.c (re_match): should pop non-greedy stack items on
+ failure, after best_regs are fixed.
+
+Thu Apr 8 17:30:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (PACK_LENGTH_ADJUST): need to adjust for `*' length.
+
+Tue Apr 6 23:28:44 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (void_check): add void context checks.
+
+Mon Apr 5 12:23:42 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_s_at): should copy gmt-mode.
+
+ * eval.c (eval_node): preserve ruby_eval_tree.
+
+Fri Apr 2 14:00:34 1999 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * lib/debug.rb: wrong command interpreting.
+
+Fri Apr 2 11:46:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.2
+
+Fri Apr 2 10:40:04 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_s_pipe): forgot to define IO::pipe.
+
+Thu Apr 1 14:40:46 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (assign): modified for rhs change.
+
+ * parse.y (stmt): unparenthesisized method calls can be right hand
+ side expression of the assignment.
+
+Sat Mar 27 22:42:47 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ext/nkf/nkf.c (rb_nkf_kconv): check size output_ctr before
+ decrement.
+
+Thu Mar 25 09:11:03 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_s_at): preserve gmt-mode for result.
+
+ * parse.y (rb_compile_string): do not use cur_mid, use
+ compile_for_eval instead.
+
+ * st.c (PTR_NOT_EQUAL): wrong logical condition.
+
+Wed Mar 24 13:06:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yycompile): should clear cur_mid after compilation.
+
+ * io.c (next_argv): need to check type for ARGV.shift.
+
+ * eval.c (blk_copy_prev): need to preserve outer scope as well as
+ outer frames.
+
+ * parse.y (rb_compile_string): return can appear within eval().
+
+Tue Mar 23 10:15:07 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * configure.in: AC_C_CONST check added.
+
+Tue Mar 23 02:07:35 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_plus): preserve gmt-mode for result.
+
+Mon Mar 22 01:32:37 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): adjust line numbers before expression
+ interpolation within strings.
+
+ * eval.c (rb_eval): defined? returns nil for false condition.
+
+ * numeric.c (num_nonzero_p): returns nil for false condition.
+
+Sat Mar 20 13:07:43 1999 Keiju Ishitsuka <keiju@rational.com>
+
+ * lib/weakref.rb: avoid leak for two weakrefs for one object.
+
+Fri Mar 19 11:26:45 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * eval.c (ruby_run): needed to eval END{} on exit.
+
+ * eval.c (rb_exit): ditto.
+
+Fri Mar 19 02:17:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * signal.c (Init_signal): handles terminating signals HUP, TERM,
+ QUIT, PIPE, etc.
+
+Thu Mar 18 15:47:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (rb_big_and): bug in sign calculation.
+
+ * bignum.c (rb_big_or): ditto.
+
+ * io.c (rb_f_select): forgot to use to_io to retrieve IO, after
+ calling select(2).
+
+Tue Mar 16 19:54:31 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/extmk.rb.in: static linking cause infinite make loop.
+
+Tue Mar 16 18:50:04 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * ext/socket/socket.c (tcp_s_gethostbyname): typo, not NUM2INT(),
+ but INT2NUM().
+
+ * ext/socket/socket.c (mkhostent): ditto.
+
+Tue Mar 16 12:31:44 1999 Ryo HAYASAKA <hayasaka@cheer.u-aizu.ac.jp>
+
+ * file.c (utime_internal): suppress warning by const.
+
+ * time.c (time_gmtime): ditto.
+
+Tue Mar 16 10:23:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_clone): Time object can be cloned.
+
+Tue Mar 16 03:13:10 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ruby.c (load_file): argv[argc] should be NULL.
+
+Mon Mar 15 22:12:08 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * sprintf.c (rb_f_sprintf): typo in arg_num check at exit.
+
+Mon Mar 15 16:42:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_dup): dup2 should copy class too.
+
+Mon Mar 15 15:12:53 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * lib/mkmf.rb: install program relative path check.
+
+Mon Mar 15 14:05:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_s_new): 2nd argument is now option.
+ Regexp::EXTENDED can be specified.
+
+Fri Mar 12 10:47:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_index): str.index("") should always match at
+ offset point.
+
+ * string.c (rb_str_upto): can specify end point exclusion.
+
+ * string.c (rb_str_index): negative offset.
+
+ * regex.c (re_match): begline should not match at the point
+ between a newline and end-of-string. endline neither.
+
+ * regex.c (re_compile_pattern): context_indep_anchors .
+
+ * parse.y (parse_regx): need not to push backslashes before
+ escaped characters.
+
+ * eval.c (rb_thread_join): re-raises exception within target.
+
+Fri Mar 12 01:09:36 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ext/readline/readline.c (readline_s_vi_editing_mode): wrong
+ number of arguments.
+
+Fri Mar 12 02:12:50 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (PACK_ITEM_ADJUST): "a".unpack("C3") => [97, nil, nil]
+
+Thu Mar 11 18:23:50 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * ext/socket/socket.c (Init_socket): UDPsocket was omitted.
+
+Thu Mar 11 16:43:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (PACK_LENGTH_ADJUST): push fixed number of items per
+ template to result array.
+
+ * pack.c (pack_unpack): I/N/C etc. push nil in the array for "".
+
+Tue Mar 9 00:19:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (ruby_unsetenv): use ruby_setenv(name, 0).
+
+ * hash.c (env_delete): ditto.
+
+ * string.c (rb_str_upto): do not check `beg<end' to generate
+ strings for the pattern like "a".upto("#a").
+
+ * range.c (range_each): treat strings as special case.
+
+ * range.c (range_each): no longer use upto for generic cases.
+
+Sun Mar 7 14:21:32 1999 IKARASHI Akira <ikarashi@itlb.te.noda.sut.ac.jp>
+
+ * string.c (rb_str_index): wrong end point calculation.
+
+Sat Mar 6 02:19:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (match_index): MatchingData#index(n) added.
+
+ * array.c (rb_ary_subseq): ary[n..-1] returns an sub-array unless
+ n is too small negative index.
+
+ * re.c (rb_reg_match_method): Regexp#match(str) added.
+
+ * array.c (rb_ary_indexes): understands ranges as indexes.
+
+ * re.c (match_size): MatchingData#size added.
+
+Fri Mar 5 01:04:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_fill): modified for range.
+
+ * array.c (rb_ary_aset): a[n..m] revisited.
+
+Thu Mar 4 14:23:29 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_subseq): a[n..m] revisited.
+
+ * parse.y (method_call): allow Const::method{}.
+
+ * array.c (rb_ary_replace_method): should replace original array.
+
+Thu Mar 4 02:30:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * configure.in: remove --disable-thread, thread feature is no
+ longer optional.
+
+Thu Mar 4 00:32:17 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * parse.y (read_escape): wrong arguments for scan_oct,scan_hex.
+
+Wed Mar 3 11:51:53 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (Init_socket): rename class names as
+ TCPsocket -> TCPSocket etc.
+
+Tue Mar 2 19:46:42 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * configure.in (LDSHARED): use gcc -Wl,-G for solaris with gcc.
+
+Tue Mar 2 17:04:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): backslashes do not concatenate comment lines
+ anymore.
+
+Mon Mar 1 14:05:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_call0): adjust argv for optional arguments. super
+ without arguments emit superclass method with the value from
+ optional arguments. enabled as experiment.
+
+Sun Feb 28 14:04:07 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * parse.y (nextc): backslash at the eof cause infinite loop
+
+Sun Feb 28 11:01:26 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * time.c (make_time_t): month range check added.
+
+Sat Feb 27 02:36:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (Init_Regexp): add escape as alias of quote.
+
+ * re.c (rb_reg_s_quote): char-code can be specified now.
+
+Fri Feb 26 18:45:36 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * eval.c (error_print): bug for error message with newlines.
+
+Fri Feb 26 12:00:04 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (make_time_t): future check modified to allow 1969-12-31
+ at certain timezone.
+
+ * time.c (time_arg): year >= 1000 should be past.
+
+ * version.c (Init_version): constant RELEASE_DATE added.
+
+Fri Feb 26 01:08:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_substr): returns nil for out-of-range access.
+
+ * array.c (rb_ary_subseq): returns nil for out-of-range access.
+
+ * array.c (rb_ary_store): negative index message has changed.
+
+ * string.c (rb_str_aset): reallocation needed.
+
+ * string.c (rb_str_aset): allow char append to the string.
+
+Thu Feb 25 23:30:17 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * time.c (time_load): tm_year should be packed in 17 bits, not 18.
+
+Thu Feb 25 12:50:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * missing/dup2.c: replaced by public domain version.
+
+ * time.c (make_time_t): add `future check' in loops.
+
+ * object.c (rb_num2dbl): forbid implicit conversion from nil, or
+ strings. thus `Time.now + str' should raise error.
+
+ * object.c (rb_Float): convert nil into 0.0.
+
+ * object.c (rb_Integer): conversion method improved.
+
+Thu Feb 25 03:27:50 1999 Shugo Maeda <shugo@netlab.co.jp>
+
+ * eval.c (rb_call): should handle T_ICLASS properly.
+
+Thu Feb 25 00:04:00 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (Init_Exception): global function Exception() removed.
+
+ * variable.c (rb_class2name): returns "nil"/"true"/"false" for them.
+
+ * time.c (time_dump): time marshaling format compressed size from
+ 11 bytes to 8 bytes. thanx to tadf@kt.rim.or.jp.
+
+ * eval.c (rb_obj_call_init): should specify arguments explicitly.
+
+Wed Feb 24 15:43:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): comment concatenation requires preceding space
+ before backslash at the end of line.
+
+ * io.c (rb_f_pipe): global pipe is obsolete now.
+
+ * object.c (Init_Object): remove true.to_i, false.to_i.
+
+Tue Feb 23 14:21:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): warn if identifier! immediately followed by `='.
+
+Tue Feb 23 12:32:41 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * eval.c (rb_load): tilde expansion moved to find_file.
+
+ * eval.c (find_file): tilde expansion added.
+
+Tue Feb 23 10:50:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (require_method): require can handle multiple fnames.
+
+ * hash.c (rb_hash_foreach_iter): hash key may be nil.
+
+Mon Feb 22 17:44:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): should not pop failure point on success for
+ non-greedy matches.
+
+ * io.c (Init_IO): remove global_functions getc, readchar, ungetc,
+ seek, tell, rewind.
+
+Sat Feb 20 22:54:26 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (rb_num2long): no implicit conversion from boolean.
+
+Sat Feb 20 09:58:42 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * numeric.c (flo_to_s): portable Infinity and NaN support.
+
+Sat Feb 20 07:13:31 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * io.c (rb_file_sysopen): forgot to initialize a local variable.
+
+Fri Feb 19 23:05:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_subseq): range check changed.
+
+ * marshal.c: increment MARSHAL_MINOR for Time format change.
+
+ * time.c (time_old_load): support old marshal format.
+
+ * time.c (time_load): changed for new format Y/M/D/h/m/s/usec.
+
+ * time.c (time_dump): marshal dump format has changed.
+
+Fri Feb 19 00:25:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_arg): should reject "sep\0" and such.
+
+ * time.c (time_plus): Time#+ should not receive Time object
+ operand.
+
+ * string.c (rb_str_substr): negative length raises exception now.
+
+ * array.c (beg_len): if end == -1, it points end of the array.
+
+ * array.c (rb_ary_subseq): negative length raises exception now.
+
+Thu Feb 18 20:57:04 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * time.c (rb_strftime): strftime() may return 0 on success too.
+
+ * time.c (time_strftime): `\0' within format string should not be
+ omitted in the result.
+
+ * time.c (rb_strftime): zero length format.
+
+ * time.c (time_to_a): yday start with 1 now.
+
+ * time.c (time_zone): support for long timezone name.
+
+ * time.c (time_yday): yday start with 1 now.
+
+ * time.c (time_minus): minus calculation was wrong.
+
+ * time.c (time_minus): sec, usec should be at least `long', maybe
+ they should be `time_t'.
+
+ * time.c (time_plus): addition with float was wrong.
+
+ * time.c (time_to_s): support for long timezone name.
+
+ * time.c (time_gm_or_local): too far future check moved.
+
+ * time.c (time_arg): treat 2 digit year as 69-99 => 1969-1999,
+ 00-68 => 2000-2068
+
+Thu Feb 18 03:56:47 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * missing/fnmatch.c: moved to missing directory.
+
+Wed Feb 17 16:22:26 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * struct.c (rb_struct_alloc): actual initialization now be done in
+ `initialize'.
+
+Wed Feb 17 09:47:15 1999 okabe katsuyuki <hgc02147@nifty.ne.jp>
+
+ * regex.c (re_search): use mbclen() instead of ismbchar().
+
+ * re.c (rb_reg_s_quote): should handle mbchars properly.
+
+Wed Feb 17 01:25:26 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): stop comment concatenation by backslash follows
+ after >= 0x80 char. may cause problem with Latin chars.
+
+ * eval.c (error_print): exception in rb_obj_as_string() caused
+ SEGV. protect it by PUSH_TAG/POP_TAG.
+
+ * error.c (exc_exception): `Exception#exception' should return self.
+
+Wed Feb 17 01:12:22 1999 Hirotaka Ichikawa <hirotaka.ichikawa@tosmec.toshiba.co.jp>
+
+ * configure.in: BeOS patch.
+
+Tue Feb 16 14:25:00 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): should reallocate mbc space for
+ character class unless current_mbctype is ASCII.
+
+Mon Feb 15 15:48:30 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * configure.in: specify `-Wl,-E' only for GNU ld.
+
+Mon Feb 15 11:43:22 1999 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
+
+ * array.c (rb_inspecting_p): should return Qfalse.
+
+Sun Feb 14 22:36:40 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * sprintf.c (rb_f_sprintf): `%G' was omitted.
+
+Sun Feb 14 12:47:48 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * numeric.c (Init_Numeric): allow divide by zero on FreeBSD.
+
+ * numeric.c (Init_Numeric): FloatDomainError added.
+
+ * configure.in (AC_REPLACE_FUNCS): add checks for functions
+ isinf, isnan, and finite.
+
+Sat Feb 13 01:24:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_create_0): should protect th->thread.
+
+Fri Feb 12 16:16:47 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * string.c (rb_str_inspect): wrong mbc position.
+
+Fri Feb 12 16:21:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_fd_close):
+
+ * io.c (rb_io_fptr_close): tell scheduler that fd is closed.
+
+ * io.c (rb_io_reopen): ditto.
+
+ * io.c (READ_CHECK): check if closed after thread context switch.
+
+ * ext/socket/socket.c (bsock_close_read): do not check
+ the return value from shutdown(2).
+
+ * ext/socket/socket.c (bsock_close_write): ditto.
+
+ * ext/socket/socket.c (sock_new): need to dup(fd) for close_read
+ and close_write.
+
+ * parse.y (here_document): handle newlines within #{}.
+
+ * regex.h: should replace symbols for ruby.
+
+Fri Feb 12 00:46:28 1999 Shugo Maeda <shugo@netlab.co.jp>
+
+ * marshal.c (r_object): should update the method name in message.
+
+ * marshal.c (w_object): limit should be converted into Fixnum.
+
+Wed Feb 10 15:20:03 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): empty pattern should not cause infinite
+ pattern match loop.
+
+ * regex.c (re_compile_pattern): RE_OPTIMIZE_ANCHOR for /.*/, not
+ for /(.|\n)/.
+
+ * numeric.c (fix_pow): `fixnum**nil' should raise TypeError.
+
+ * bignum.c (rb_big_pow): need to normalize results.
+
+Wed Feb 10 01:42:41 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * numeric.c (fix_pow): `(5**1).type' should be Integer.
+
+Tue Feb 9 01:22:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): do not ignore newlines in mbchars.
+
+ * io.c (rb_file_s_open): mode can be specified by flags like
+ open(2), e.g. File::open(path, File::CREAT|File::WRONLY).
+
+ * io.c (rb_f_open): bit-wise mode flags for pipes
+
+ * io.c (Init_IO): bit flags for open.
+
+Sat Feb 6 22:56:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_sub_bang): should not overwrite match data by
+ regexp match within the block.
+
+ * string.c (rb_str_gsub_bang): ditto.
+
+Sat Feb 6 03:06:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (match_getter): accessing $~ without matching caused SEGV.
+
+Fri Feb 5 22:11:08 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * parse.y (yylex): binary literal support, like 0b01001.
+
+ * parse.y (yylex): octal numbers can contain `_'s.
+
+ * parse.y (yylex): warns if non-octal number follows immediately
+ after octal literal.
+
+ * parse.y (yylex): now need at least one digit after prefix such
+ as 0x, or 0b.
+
+ * bignum.c (rb_str2inum): recognize binary numbers like 0b0101.
+
+Fri Feb 5 03:26:56 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * ruby.c (proc_options): -e without program prints error.
+
+Fri Feb 5 00:01:50 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (terms): needed to clear heredoc_end.
+
+ * numeric.c (flo_div): allow float division by zero.
+
+Thu Feb 4 11:56:24 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * missing/strtod.c: for compatibility.
+
+ * configure.in (strtod): add strtod compatible check.
+
+ * numeric.c (rb_num2long): missing/vsnprintf.c does not support
+ floating points.
+
+ * numeric.c (flo_to_s): ditto.
+
+Wed Feb 3 23:02:12 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * regex.c (re_compile_pattern): use ismbchar() to get next char.
+
+ * regex.c (re_search): wrong mbchar shift.
+
+ * re.c (rb_reg_search): needed to reset $KCODE after match.
+
+ * regex.c (re_compile_fastmap): mbchars should match with \w.
+
+Wed Feb 3 22:35:12 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * parse.y (yylex): too big float raise warning, not error.
+
+Tue Feb 2 23:41:42 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * regex.c (re_match): wrong boundary.
+
+ * regex.c (IS_A_LETTER): re_mbctab[c] may not be 1 for mbc.
+
+ * regex.c (re_search): mbchar support for shifting ranges.
+
+ * regex.c (MBC2WC): wrong conversion.
+
+Wed Feb 3 15:03:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_regx): need to escape parens if terminators are
+ not any kind of parenthesis.
+
+ * parse.y (parse_qstring): ditto.
+
+ * parse.y (parse_string): ditto.
+
+Tue Feb 2 17:11:26 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * string.c (rb_str_gsub_bang): too small realloc condition.
+
+Mon Feb 1 10:01:17 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * parse.y (yylex): range check for the float literal.
+
+Sat Jan 30 18:34:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (usage): -h option to show brief command description.
+
+Sat Jan 30 08:45:16 1999 IKARASHI Akira <ikarashi@itlb.te.noda.sut.ac.jp>
+
+ * lib/cgi-lib.rb: cookie support added.
+
+Sat Jan 30 13:38:24 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): mbchars should match with \w
+ within character class. Was matching with \W.
+
+ * regex.c (re_match): \w should match with multi byte characters,
+ not its first byte.
+
+Sat Jan 30 10:06:41 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * re.c (rb_reg_s_new): UTF-8 flag handle (/u, /U).
+
+ * re.c (rb_kcode): $KCODE handle for UTF-8.
+
+Sat Jan 30 01:51:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_delete_if): RTEST() missing.
+
+ * hash.c (delete_if_i): ditto.
+
+ * enum.c (Init_Enumerable): select (=find_all), detect (=find)
+ added as aliases.
+
+Fri Jan 29 21:32:19 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * hash.c (rb_f_setenv): SEGV caused by small typo.
+
+Fri Jan 29 00:15:58 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/parsedate.rb (parsedate): support date format like
+ 23-Feb-93, which is required by HTTP/1.1.
+
+ * variable.c (find_class_path): avoid calling rb_iv_set().
+
+ * eval.c (backtrace): do not need to modify $SAFE internally.
+
+ * variable.c (classname): inline __classid__ access.
+
+ * eval.c (THREAD_ALLOC): needed to initialize wrapper.
+
+ * lib/ftools.rb (makedirs): allows slash at the end of the path.
+
+ * numeric.c (rb_fix_induced_from): ensure result to be Fixnum.
+
+Thu Jan 28 17:31:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (flo_to_s): float format changed to "%16.10g".
+
+Thu Jan 28 02:13:11 1999 Yoshinori Toki <toki@freedom.ne.jp>
+
+ * array.c (rb_ary_store): expand allocated buffer by 3/2.
+
+Wed Jan 27 17:50:02 1999 Kazuhiro HIWADA <hiwada@kuee.kyoto-u.ac.jp>
+
+ * bignum.c (dbl2big): raised error if double is too big to cast
+ into long. check added.
+
+Wed Jan 27 03:16:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_mod_const_at): can't list constants of the
+ untainted objects in safe mode.
+
+ * class.c (method_list): can't list methods of untainted objects
+ in safe mode.
+
+Tue Jan 26 02:40:41 1999 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
+
+ * prec.c: Precision support for numbers.
+
+Thu Jan 21 19:08:14 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_f_raise): calls `exception' method, not `new'.
+
+ * error.c (exc_exception): renamed from `new'.
+
+Wed Jan 20 03:39:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yycompile): rb_in_compile renamed to ruby_in_compile.
+
+ * ruby.c (load_file): define DATA if __END__ appeared in script.
+
+Tue Jan 19 14:57:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (here_document): need to protect lex_lastline.
+
+ * parse.y (yylex): disable %//, %'', %``.
+
+Tue Jan 19 05:01:16 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * array.c (beg_len): round range value too much.
+
+Mon Jan 18 13:02:27 1999 Kuroda Jun <jkuro@dwe.co.jp>
+
+ * hash.c (env_keys): strchr() may return NULL.
+
+Mon Jan 18 17:51:47 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * instruby.rb (wdir): install libruby.a in archdir.
+
+ * lib/ftools.rb (install): removes file before installing.
+
+Mon Jan 18 16:55:31 1999 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * eval.c (rb_callcc): experimental continuation support.
+
+Sun Jan 17 19:45:37 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * pack.c (pack_pack): nil packing caused SEGV.
+
+Sat Jan 16 13:18:03 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_concat): character (fixnum) can be append to
+ strings
+
+ * array.c (rb_ary_unshift): unshift returns array.
+
+Sat Jan 16 01:39:19 1999 Yoshida Masato <yoshidam@tau.bekkoame.ne.jp>
+
+ * string.c (rb_str_split_method): UTF-8 support.
+
+ * regex.c: UTF-8 support.
+
+Thu Jan 14 00:42:55 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_gsub_bang): forget to add offset for null match.
+
+ * eval.c (rb_thread_local_aset): can't modify in tainted mode.
+
+ * hash.c (env_each_key): avoid generating temporary array.
+
+Wed Jan 13 23:58:50 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_f_setenv): name and value can be tainted.
+
+Wed Jan 6 02:42:08 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (Init_Bignum): forgot to define Bignum#===.
+
+ * gc.c (gc_sweep): if add_heap() is called during GC, objects on
+ allocated heap page(s) are not marked, should not be recycled.
+
+ * gc.c (gc_sweep): should refer latest freelist.
+
+ * gc.c (id2ref): modified to support performance patch.
+
+ * object.c (rb_obj_id): performance patch (no bignum for id).
+
+Tue Jan 5 01:56:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * config.guess: merge up-to-date from autoconf 2.12.
+
+ * array.c (rb_ary_join): avoid calling rb_protect_inspect() till
+ it is really needed.
+
+ * object.c (rb_obj_inspect): show detailed information for the
+ instance variables (infinite loop can avoid now).
+
+ * struct.c (rb_struct_inspect): avoid infinite loop.
+
+Sun Jan 3 01:37:58 1999 Takao KAWAMURA <kawamura@ike.tottori-u.ac.jp>
+
+ * misc/ruby-mode.el (ruby-end-of-defun): moved too much.
+
+ * misc/ruby-mode.el (ruby-mode-variables): set paragraph-separator
+ for the mode.
+
+ * misc/ruby-mode.el: proper font-lock for `def' and `nil' etc.
+
+Sat Jan 2 17:09:06 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_jump_tag): new api to invoke JUMP_TAG. tag values
+ can be obtained from rb_eval_string_protect()/rb_load_protect().
+
+ * eval.c (rb_rescue): now catches all exceptions but SystemExit.
+
+ * eval.c (rb_eval_string_protect): eval string with protection.
+
+ * eval.c (rb_load_protect): load file with protection.
+
+ * io.c (rb_io_puts): avoid infinite loop for cyclic arrays.
+
+ * eval.c (rb_thread_local_aref): thread local hash tables.
+
+ * object.c (rb_equal): check exact equal before calling `=='.
+
+Thu Dec 31 22:28:53 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * eval.c (rb_f_require): feature names should be provided with
+ DLEXT extension.
+
+ * marshal.c (Init_marshal): need to provide `marshal.so'.
+
+Wed Dec 30 02:29:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (classname): do not call rb_ivar_set().
+
+ * eval.c (ruby_run): finalizers were called too early.
+
+Fri Dec 25 12:19:30 1998 Fukuda Masaki <fukuda@wni.co.jp>
+
+ * gc.c (rb_gc_mark): should not return on FL_EXIVAR.
+
+Fri Dec 25 11:56:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (gc_mark): proper scanning for temporary region.
+
+ * eval.c (TMP_ALLOC): protection for C_ALLOCA was broken.
+
+Thu Dec 24 18:26:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * development version 1.3 released.
+
+Thu Dec 24 00:17:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_load): top self should be set properly.
+
+ * variable.c (classname): check __classpath__ if it is defined.
+
+ * variable.c (classname): invalid warning at -v with static linked
+ ruby interpreter.
+
+ * eval.c (is_defined): modified for expr::Const support.
+
+ * eval.c (rb_eval): invoke method expr::Const if expr is not class
+ nor module.
+
+ * parse.y (primary): enable expr::identifier as method
+ invocation.
+
+Wed Dec 23 03:04:36 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): avoid too many loop pops for (?:..).
+
+Tue Dec 22 18:01:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental version 1.1d1 released.
+
+Mon Dec 21 01:33:03 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (TMP_PROTECT): add volatile to ensure GC protection.
+
+ * string.c (rb_str_gsub_bang): calculate buffer size properly.
+
+ * parse.y (lex_get_str): needed to return Qnil at EOS.
+
+ * eval.c (find_file): check policy modified, raise exception
+ immediately for tainted load_path.
+
+ * hash.c (rb_f_setenv): do not depend on setenv() nor putenv().
+
+Thu Dec 17 06:29:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/tk/tkutil.c (tk_s_new): use rb_obj_instance_eval(), instead
+ of rb_yield_0().
+
+ * eval.c (rb_f_require): forgot to call find_file in some cases.
+
+ * eval.c (rb_f_require): `require "feature.so"' to load dynamic
+ libraries. old `require "feature.o"' is still OK.
+
+ * eval.c (rb_eval): yield without value dumped core.
+
+Wed Dec 16 16:28:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental version 1.1d0 (pre1.2) released.
+
+Wed Dec 16 10:43:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): bound check before calling re_match().
+
+Tue Dec 15 13:59:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (exc_to_s): returns class name for unset mesg.
+
+ * error.c (exc_initialize): do not initialize @mesg by "".
+
+ * parse.y (nextc): __END__ should handle CR+LF newlines.
+
+Wed Dec 9 13:37:12 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * pack.c (encodes): use buffering for B-encoding.
+
+ * pack.c (pack_pack): Q-encoding by 'M'.
+
+Tue Dec 8 14:10:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (generic_ivar_get): any object can have instance
+ variables now. great improvement.
+
+ * variable.c (rb_name_class): do not set __classpath__ by default,
+ use __classid__ instead.
+
+Mon Dec 7 22:08:22 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h (struct RFile): IO objects can have instance variables now.
+
+ * parse.y (primary): allows `def obj::foo; .. end'.
+
+Mon Dec 7 18:24:50 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * ruby.c (set_arg0): $0 support for HP-UX.
+
+Mon Dec 7 01:30:28 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * dln.c (dln_strerror): better error messages on win32.
+
+Sat Dec 5 23:27:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (here_document): indentable here-doc delimiter by
+ `<<-'. Proposed by Clemens <c.hintze@gmx.net>. Thanks.
+
+Thu Dec 3 16:50:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/extmk.rb.in (realclean): trouble on install.
+
+Sun Nov 29 22:25:39 1998 Takaaki Tateishi <ttate@jaist.ac.jp>
+
+ * process.c (f_exec): check number of argument.
+
+Thu Nov 26 17:27:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c9 released.
+
+Wed Nov 25 13:07:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_dup): do not copy additional data (STR_NO_ORIG).
+
+ * parse.y (yycompile): reduce known memory leak (hard to remove).
+
+Wed Nov 25 03:41:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * st.c (st_init_table_with_size): round size up to prime number.
+
+Sat Nov 21 23:27:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_hash_aset): reduce copying key strings.
+
+ * gc.c (looks_pointerp): declare as inline function if possible.
+
+ * st.c (PTR_NOT_EQUAL): compare hash values first before calling
+ comparing function.
+
+ * st.c (ADD_DIRECT): save hash value in entries to reduce hash
+ calculation.
+
+ * string.c (rb_str_gsub_bang): avoid rb_scan_args() to speed-up.
+
+ * string.c (rb_str_sub_bang): ditto.
+
+Sat Nov 21 18:44:06 1998 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * time.c (time_s_now): had memory leak.
+
+ * ext/md5/md5init.c (md5_new): had memory leak.
+
+ * ext/md5/md5init.c (md5_clone): ditto.
+
+Fri Nov 20 23:23:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/delegate.rb: do not propagate hash and eql?.
+
+Thu Nov 19 01:40:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sample/ruby-mode.el (ruby-expr-beg): failed to find reserved
+ word boundary.
+
+ * eval.c (rb_eval): avoid calling `concat' method. calls
+ rb_ary_concat() directly for efficiency.
+
+ * eval.c (rb_eval): actual rest arguments extended arrays too much.
+
+Wed Nov 18 14:30:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (rb_define_global_function): global functions now be
+ module function of the Kernel.
+
+Wed Nov 18 10:48:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (read_all): SEGV on large files.
+
+Tue Nov 17 18:11:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c8 released.
+
+Tue Nov 17 16:58:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (arg): assignment to attribute name start with capital
+ should be allowed.
+
+ * eval.c (thread_alloc): needed to mark terminated threads too.
+
+Tue Nov 17 12:33:48 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
+
+ * ext/extmk.rb.in (create_makefile): Set `libdir' to `@libdir@',
+ Set `pkglibdir' to `$libdir/$(RUBY_INSTALL_NAME)'.
+
+Tue Nov 17 10:30:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (f_sprintf): %l%%c -> %%l%c
+
+Tue Nov 17 01:08:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (ret_args): distinguish `a' and `*a' for the arguments
+ of yield and return.
+
+ * eval.c (rb_eval): flip3 should work like sed.
+
+ * eval.c (rb_eval): flip{2,3} now have independent state for each
+ scope to work fine with thread.
+
+Mon Nov 16 23:26:29 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (primary): exec else clause if no exception raised.
+
+Sun Nov 15 15:44:07 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * ext/extmk.rb.in (install): bug in target.
+
+Sat Nov 14 11:02:05 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
+
+ * Makefile.in (install): Give the argument `$(DESTDIR)' to
+ `instruby.rb'.
+
+ * instruby.rb: Recognize ARG[0] as `destdir'.
+
+ * instruby.rb: Give the argument `destdir' to `extmk.rb'.
+
+ * ext/extmk.rb.in: Recognize ARG[1] as `$destdir'.
+
+ * instruby.rb: Create the installation directories (bindir, libdir,
+ archdir, pkglibdir, archdir, and mandir) under `destdir', and
+ install all files under there.
+
+ * ext/extmk.rb.in: Likewise.
+
+Sat Nov 14 10:56:55 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
+
+ * instruby.rb: Add the variable `pkglibdir'.
+
+ * instruby.rb: Set the variable `libdir' to `$(libdir)', not
+ `$(libdir)/$(ruby_install_name)'. `libruby.so' and `libruby.so.LIB'
+ are installed at `libdir'.
+
+ * instruby.rb: Set the variable `archdir' to `$(pkglibdir)/$(arch)'.
+
+Fri Nov 13 19:43:29 1998 KIMURA Koichi <kbk@kt.rim.or.jp>
+
+ * missing/nt.c (SafeFree): wrong free offset.
+
+Thu Nov 12 20:11:53 1998 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * sample/ruby-mode.el: wrong highlight.
+
+ * parse.y (parse_regx): newline in regexp was ignored.
+
+Wed Nov 11 10:54:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (here_document): <<'FOO' should not escape anything.
+
+ * parse.y (here_document): bare << here-doc available, even though
+ it's deprecated.
+
+ * file.c (rb_file_s_readlink): return value should be tainted.
+
+ * ext/etc/etc.c (setup_passwd): information (eg. GCOS name) should
+ be tainted (modified at Perl Conference).
+
+Tue Nov 10 00:22:11 1998 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * configure.in: elf support for FreeBSD 3.x
+
+Tue Nov 10 00:05:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): here document available in eval.
+
+Mon Nov 9 17:55:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c7 released.
+
+Fri Nov 6 19:25:27 1998 Takao KAWAMURA <kawamura@ike.tottori-u.ac.jp>
+
+ * sample/ruby-mode.el: font-lock patch.
+
+Thu Nov 5 15:42:22 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sample/README, lib/README: simple description for each file.
+
+Wed Nov 4 18:14:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (assign): attribute assignment should be called as public.
+
+Tue Nov 3 23:36:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_dump): dumps core for negative char value.
+
+ * regex.c (re_compile_pattern): out of boundary access for empty
+ regexp.
+
+Mon Nov 2 22:54:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_aset): `str[str]' replaces first match.
+
+Mon Nov 2 18:24:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_create): was accessing modified status.
+
+Sun Nov 1 01:18:52 1998 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * gc.c (xrealloc): size 0 needs round up to 1.
+
+Sat Oct 31 23:18:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_split_method): negative LIMIT means number of
+ split fields are unlimited, as in perl.
+
+ * string.c (rb_str_split_method): if LIMIT is unspecified,
+ trailing null fields are stripped.
+
+Sat Oct 31 04:16:14 1998 Inaba Hiroto <inaba@st.rim.or.jp>
+
+ * string.c (str_aref): regexp index SEGVed.
+
+Fri Oct 30 14:33:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_match): returns nil for unmatch.
+
+ * dir.c (dir_entries): new method.
+
+ * eval.c (block_pass): do not push block, substitute it.
+
+Fri Oct 30 01:28:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * range.c (range_check): avoid <=> check for Fixnums.
+
+ * array.c (rb_ary_aset): accept negative index.
+
+Wed Oct 28 22:00:54 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): access out of boundary fixed.
+
+Wed Oct 28 11:37:42 1998 TAMITO <tommy@valley.ne.jp>
+
+ * io.c (f_select): fd number comparison bug.
+
+Tue Oct 27 23:07:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sample/ruby-mode.el (ruby-parse-region): forgot to support %w()
+ style array literal.
+
+ * eval.c (rb_eval): unused block raises warning.
+
+Mon Oct 26 09:37:53 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (dvar_asgn_push): dvar pushed too many times if
+ variable-in-block first appear in loops.
+
+Sun Oct 25 22:59:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (set_list_bits): was using wrong offset.
+
+Thu Oct 22 00:07:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_obj_method): method retrieved from tainted object
+ should be tainted too.
+
+ * eval.c (method_call): safe_level should be restored during
+ Method#call.
+
+Wed Oct 21 14:21:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (Init_IO): new constants IO::SEEK_{SET,CUR,END}.
+
+ * io.c (rb_f_ungetc): ungetc pushes a char back into STDIN.
+
+Mon Oct 19 11:50:00 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
+
+ * ext/extmk.rb: Load '@top_srcdir@/lib/find.rb', not
+ '../lib/find.rb'.
+
+ * ext/extmk.rb: Distinguish between `top_srcdir' and `topdir'.
+
+ * Makefile.in (CFLAGS): Add `-I.'.
+
+ * Makefile.in (lex.c): Give `@srcdir@/keywords' to gperf, not
+ `keywords'.
+
+ * instruby.rb: Use `CONFIG["bindir"]', instead of `prefix + "/bin"'.
+
+ * instruby.rb: Use `CONFIG["libdir"]', instead of `prefix + "/lib"'.
+
+ * instruby.rb Use `CONFIG["mandir"]', instead of `prefix + "/man"'.
+
+ * instruby.rb (wdir): Add the variable to preserve the current
+ working directory.
+
+ * instruby.rb: Chdir to wdir before install `config.h' and
+ `rbconfig.rb'.
+
+Mon Oct 19 10:07:01 1998 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * eval.c (rb_eval): reduce recursive calls to rb_eval().
+
+Fri Oct 16 15:31:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_new_internal): timeval must be positive.
+
+Thu Oct 15 13:54:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (arg): local variables can be accessed within right side
+ expression in assignment, notably in blocks.
+
+Wed Oct 14 00:18:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (Init_Array): Array#=== is now for equal check, not
+ inclusion check.
+
+ * parse.y (when_args): `when a, *b' style new syntax for array
+ expansion in `case'.
+
+Tue Oct 13 14:30:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_obj_untaint): taint marks can be unset.
+
+ * eval.c (rb_eval): taint propagation for embedded strings.
+
+Mon Oct 12 13:27:15 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_call0): check stack depth more frequently.
+
+Mon Oct 12 08:08:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_p): can print even in secure mode.
+
+Sun Oct 11 22:50:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_const_set): taint check for modification.
+
+ * variable.c (rb_ivar_set): taint check for modification.
+
+ * string.c (rb_str_modify): taint check for modification.
+
+ * hash.c (rb_hash_modify): taint check for modification.
+
+ * array.c (rb_ary_modify): taint check for modification.
+
+ * ruby.h (FL_TAINT): taint for all objects, not only strings.
+
+Fri Oct 9 17:01:14 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (read_all): read() returns "" at immediate EOF.
+
+ * io.c (io_read): read(nil) read all until EOF.
+
+Thu Oct 8 13:32:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_dump): marshal can dump Time object now.
+
+ * marshal.c (Init_marshal): rename marshal methods `_dump_to' to
+ `_dump', `_load_from' to `_load'.
+
+ * parse.y (rb_intern): "+=".intern generates proper symbol.
+
+Mon Oct 5 18:31:53 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c6 released.
+
+Fri Oct 2 14:22:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): `/\s*(--)$/ =~ "- --"' did not match,
+ because of wrong optimize condition.
+
+Mon Oct 1 01:55:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (rb_intern): should not raise exceptions.
+
+ * parse.y (yylex): symbol like `:foo?=' should not be allowed.
+
+ * ext/extmk.rb.in: makes *.a for static link modules.
+
+Wed Sep 30 14:13:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_start): supports making a subclass of the
+ Thread class.
+
+Tue Sep 29 17:46:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_join): join is now an instance method.
+
+Fri Sep 25 12:01:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): `@foo!' should be an error.
+
+Thu Sep 24 14:55:06 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * ext/etc/etc.c (Init_etc): wrong field definition.
+
+Thu Sep 17 17:09:05 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_reopen): was creating FILE* for wrong fd.
+
+Tue Sep 15 05:28:11 1998 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * regex.c (re_compile_pattern): forgot to fixup for the pattern
+ like (?=(A)|(B)).
+
+Tue Sep 15 01:06:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_gets_internal): do not set $_ by default, only
+ gets/readline set the variable.
+
+ * eval.c (rb_f_load): load toplevel class is set to anonymous
+ module if safe_level >= 5, to encapsulate modification.
+
+ * eval.c (rb_f_load): set frame properly.
+
+ * string.c (rb_str_each_line): do not set $_.
+
+Mon Sep 14 14:42:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): beginning and end of the string, do not
+ automatically match `\b'.
+
+ * string.c (scan_once): consume at least on character.
+
+ * regex.c (re_search): wrong behavior for negative range.
+
+Sat Sep 12 21:21:26 1998 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * regex.c (re_search): range value should be maintained.
+
+Thu Sep 10 10:55:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (backref_error): yyerror does not understand formats.
+
+Tue Sep 8 18:05:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c5 released.
+
+Tue Sep 8 10:03:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_each_line): wrong line splitting with newline at
+ top of the string.
+
+ * string.c: non bang methods return copied string.
+
+ * eval.c (f_END): needed to initialize frame->argc;
+
+Fri Sep 4 11:27:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (bigadd): proper sign combination.
+
+ * regex.c (re_search): wrong return value for \A.
+
+Thu Sep 3 14:08:14 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c4 released.
+
+Tue Sep 1 10:47:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (slow_search): do not compare llen and blen. llen may
+ be longer than blen, if little contains 0xff.
+
+ * regex.c (mbctab_euc): set 0x8e as multibyte character.
+
+ * string.c (str_inspect): mask character for octal output.
+
+Mon Aug 31 15:32:41 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): use calculated offset if exactn is the
+ first opcode in the compiled regexp.
+
+ * regex.c (bm_search): use Boyer-Moore search for simple search.
+
+ * regex.c (must_instr): wrong length check if pattern includes
+ byte escape by 0xff.
+
+ * regex.c (re_compile_pattern): need not to check current_mbctype.
+
+Sat Aug 29 16:31:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_check_safe_str): avoid calling rb_id2name() in normal
+ cases to speed-up.
+
+ * eval.c (thread_raise): do not save context of terminated thread.
+
+ * regex.c (re_compile_pattern): mask \nnn over 256.
+
+Sat Aug 29 02:09:46 1998 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * sprintf.c (f_sprintf): wrong buffer size check.
+
+Fri Aug 28 01:57:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): accepts (?ix-ix) and (?ix-ix:...).
+
+Fri Aug 28 12:25:33 1998 Hiroshi Igarashi <igarashi@ueda.info.waseda.ac.jp>
+
+ * ruby.c (ruby_require_modules): load modules in appearing order.
+
+Fri Aug 28 01:57:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): accepts (?ix-ix) and (?ix-ix:...).
+
+Thu Aug 27 12:54:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c3 released.
+
+Wed Aug 26 14:40:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): check whether ruby_class is properly set,
+ before accessing it.
+
+ * eval.c (rb_obj_instance_eval): ruby_class should be Qnil for
+ special objects like Fixnums.
+
+ * ext/tkutil/tkutil.c (Init_tkutil): removes calls to
+ rb_yield_0(). used instance_eval() instead in the tk.rb.
+
+Wed Aug 26 11:47:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): pop non-greedy stack elements on success.
+
+Wed Aug 26 09:25:35 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ruby.h: add #define environ for cygwin32.
+
+Tue Aug 25 08:57:41 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_sort_bang): temporarily freeze sorting array.
+
+Mon Aug 24 18:46:44 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * dln.c (dln_find_1): path check was too strict.
+
+Mon Aug 24 15:28:11 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * parse.y (f_arglist): opt_nl added after f_args.
+
+Fri Aug 21 01:06:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c: grand renaming on socket.c.
+
+ * ext/socket/socket.c (inet_aton): supply inet_aton for those
+ systems that do not have it.
+
+ * ext/socket/socket.c (setipaddr): use inet_aton instead of
+ inet_addr.
+
+ * ext/socket/socket.c (tcp_s_gethostbyname): new method: works
+ like Socket.gethostbyname but returning array contains ip-addrs
+ as octet decimal string format like "127.0.0.1".
+
+ * ext/socket/socket.c (mkhostent): return format changed to
+ [host, aliases, type, ipaddr..] as documented.
+
+Wed Aug 19 00:31:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_ctl): forgot to place TRAP_END at right position.
+
+Fri Aug 14 11:01:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (call_trace_func): save __FILE__, __LINE__ before
+ executing trace_func, since trace function should not corrupt
+ line number information.
+
+Thu Aug 13 15:09:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_s_new): was marking unallocated region on GC.
+
+Tue Aug 11 11:57:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c2 released.
+
+Mon Aug 10 14:05:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * process.c (f_system): removed fflush(stdin).
+
+Fri Aug 7 17:44:44 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (err_snprintf): replace sprintf for fixed sized buffer,
+ with snprintf to avoid buffer over-run. For systems which does
+ dot provide snprintf, missing/snprintf.c added.
+
+Wed Aug 5 00:47:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_search): recycle match object.
+
+Mon Aug 3 09:17:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_gsub_bang): do not allocate temporary string.
+
+ * string.c (rb_str_sub_bang): use inline replace.
+
+Wed Jul 29 00:36:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (hash_s_new): the default value can be specified.
+
+ * hash.c (hash_default): method to set the default value.
+
+ * hash.c (hash_aref): now returns the default value.
+
+Tue Jul 28 13:03:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_s_new): argument to specify initial value is added.
+
+ * array.c (ary_s_new): specifies size, not capacity.
+
+Mon Jul 27 12:39:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_replace): zero fill for expansion gap.
+
+ * regex.c (mbctab_euc): set flags on for 0xA1-0xFE. suggested by
+ <inaba@st.rim.or.jp>.
+
+ * string.c (str_inspect): consider current_mbctype.
+
+Sun Jul 26 15:37:11 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * array.c (ary_s_new): Array.new(1<<30) dumps core.
+
+Fri Jul 24 13:40:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c1 released.
+
+Fri Jul 24 02:10:22 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (r_bytes2): allocated buffer size was too short.
+
+ * marshal.c (w_object): saves all options, not only casefold flag.
+
+ * re.c (reg_clone): now copies options properly.
+
+ * re.c (reg_get_kcode): code number was wrong.
+
+Thu Jul 23 13:11:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_attr): argument should be symbol or string.
+
+Wed Jul 22 11:59:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (calculate_must_string): wrong offset added.
+
+Wed Jul 22 11:59:59 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * st.c (rehash): still had a GC problem. fixed.
+
+Tue Jul 21 13:19:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (gc_mark_threads): crashed on GC before thread allocation.
+
+ * st.c (rehash): GC during rehash caused SEGV.
+
+Tue Jul 21 01:25:10 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (f_sprintf): integer formatter totally re-written.
+
+ * sprintf.c (remove_sign_bits): support uppercase hexadecimal.
+
+Sat Jul 18 00:14:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (f_sprintf): proper sign position for %X and %O.
+
+Fri Jul 17 14:10:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c0 released.
+
+Fri Jul 17 08:01:49 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * process.c (f_exec): Check_SafeStr() added.
+
+ * process.c (f_system): Check_SafeStr() moved before fork().
+
+Thu Jul 16 22:58:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (scan_once): substrings to the block should not be
+ tainted. use reg_nth_match(), not str_substr().
+
+ * string.c (str_substr): needed to transfer taint.
+
+Thu Jul 16 16:15:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (xmalloc): object allocation count added to GC trigger.
+
+ * eval.c (thread_save_context): avoid marking uninitialized stack
+ in thread_mark. GC may be triggered by REALLOC_N().
+
+Wed Jul 15 15:11:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_31.
+
+Wed Jul 15 15:05:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_create): exit() and abort() in threads now
+ forwarded to main_thread.
+
+Tue Jul 14 14:03:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (obj_instance_variables): list names that is not
+ instance variables.
+
+ * gc.c (GC_MALLOC_LIMIT): choose smaller limit value.
+
+Mon Jul 13 12:39:38 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (str2cstr): should not return NULL.
+
+Fri Jul 10 11:51:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (gettable): needed to add dyna_in_block() check.
+
+Thu Jul 9 17:38:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_30.
+
+Thu Jul 9 16:01:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (fmt_setup): format specifier for long needed.
+
+ * sprintf.c (f_sprintf): ditto.
+
+ * numeric.c (fix2str): ditto.
+
+ * eval.c (thread_create): no more ITIMER_REAL.
+
+ * eval.c (thread_create): thread finalization needed before
+ aborting thread if thread_abort is set.
+
+Wed Jul 8 18:17:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (big_pow): abandon power by bignum (too big).
+
+Tue Jul 7 13:58:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_catch): add C level catch/throw feature.
+
+Mon Jul 6 15:18:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (arg): proper return values for `||=' and `&&='.
+
+Fri Jul 3 16:05:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_29.
+
+Fri Jul 3 11:20:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (r_byte): byte should not extend sign bit.
+
+ * numeric.c (fix_mul): use FIX2LONG() instead of FIX2INT() for
+ 64bit architectures.
+
+ * marshal.c (r_bytes): remove weird casting between pointer and int.
+
+ * process.c (proc_setsid): new method Process#setsid().
+
+Thu Jul 2 12:49:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (w_object): remove `write_bignum' label for 64bit
+ architectures.
+
+ * marshal.c (r_bytes): needs int, not long.
+
+Wed Jul 1 14:21:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (flo_plus): should not allow addition with strings.
+
+Wed Jul 1 13:09:01 1998 Keiju ISHITSUKA <keiju@rational.com>
+
+ * numeric.c (num_uminus): wrong coerce direction.
+
+Tue Jun 30 10:13:44 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (f_p): accepts arbitrary number of arguments.
+
+ * eval.c (rb_yield_0): there's some case that iterator_p() returns
+ true even if the_block was not set. check added.
+
+Tue Jun 30 01:05:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (BEGIN_CALLARGS): adjust the_block before evaluating the
+ receiver's value and the arguments.
+
+Fri Jun 26 18:02:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_28.
+
+Fri Jun 26 11:01:26 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (str_aset_method): needed to convert to string.
+
+Thu Jun 25 02:05:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): optimize for `.*' at beginning of the
+ pattern.
+
+ * regex.c (re_search): optimize for character class repeat at
+ beginning of the pattern.
+
+ * regex.c (re_compile_pattern): detect optimization potential for
+ the compiled patterns.
+
+Thu Jun 25 00:02:26 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * re.c (reg_s_new): flag value was wrong.
+
+Wed Jun 24 23:45:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): wrong anchor handling for reverse search.
+
+Wed Jun 24 02:18:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (mlhs): `((a,b)),c = [[1,2]],3' assigns a=1,b=2,c=3.
+
+Tue Jun 23 11:46:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): `&&=' and `||=' added.
+
+Sat Jun 20 02:53:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (assignable): nesting local variables should have higher
+ priority than normal local variables for assignment too.
+
+Fri Jun 19 18:28:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_27.
+
+Fri Jun 19 14:34:49 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (assign): support hack for nested multiple assignment.
+
+ * parse.y (mlhs): nested multiple assignment.
+
+ * eval.c (rb_eval): in-block variables now honors static scope.
+
+ * configure.in: RSHIFT check moved to configure.
+
+Thu Jun 18 16:46:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_26.
+
+Thu Jun 18 13:37:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (file_s_ftype): uses lstat(2) instead of stat(2).
+
+ * dir.c (dir_s_glob): there can be buffer overrun, check added.
+
+ * eval.c (f_binding): handles in-block variables declared after
+ binding's generation.
+
+ * numeric.c (flo_floor): floor, ceil, round added to Float.
+
+Wed Jun 17 11:20:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (gettable): nesting local variables should have higher
+ priority than normal local variables.
+
+Tue Jun 16 12:30:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (str2inum): handles `+ddd'.
+
+ * struct.c (make_struct): name parameter can be nil for unnamed
+ structures.
+
+Mon Jun 15 16:30:10 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (class_s_inherited): prohibiting to make subclass of
+ class Class.
+
+ * object.c (module_s_new): support for making subclass of Module.
+
+ * parse.y (yycompile): clear eval_tree before compiling.
+
+Fri Jun 12 17:58:18 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (eval): write back the_dyna_var into the block.
+
+Thu Jun 11 18:19:18 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_25.
+
+ * eval.c (dvar_add_compiling): register dyna_var at compile time.
+
+ * regex.c (re_compile_pattern): RE_DUP_MAX iteration is too big.
+
+Wed Jun 10 15:12:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_eof): do not block other threads.
+
+ * signal.c (trap): reserve SIGALRM for thread.
+
+ * eval.c (thread_create): use ITIMER_REAL also to avoid system
+ call blocking.
+
+ * io.c (f_syscall): add TRAP_BEG, TRAP_END around system calls.
+
+ * io.c (io_ctl): add TRAP_BEG, TRAP_END around system calls.
+
+ * enum.c (enum_collect): did not collect false values.
+
+ * array.c (ary_new2): forgot to initialize capa field.
+
+Tue Jun 9 18:36:15 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (str_split_method): split dumped core for "\xff".
+
+Tue Jun 9 16:22:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_24.
+
+Tue Jun 9 16:04:07 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/kconv/kconv.c (kconv_guess): more precise decision for EUC,
+ using jless algorithm (3 sequential EUC hiragana characters).
+
+Tue Jun 9 15:12:44 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/kconv/kconv.c (kconv_guess): wrong guess for EUC as SJIS in
+ some cases (0xe0 - 0xef).
+
+ * gc.c (xmalloc): insert size check for big (negative in signed)
+ allocation size.
+
+Tue Jun 9 02:54:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/parsedate.rb: wday moved to the last in the return values.
+
+Mon Jun 8 10:40:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_split_method): split dumped core for "\0".
+
+Sat Jun 6 22:50:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (calculate_must_string): wrong condition for
+ {start,stop}_nowidth.
+
+ * regex.c (re_match): various features imported from GNU regex.c
+ 0.12, such as nested grouping, avoiding infinite loop with empty
+ match, etc.
+
+ * regex.c (register_info_type): now use union.
+
+ * regex.c (re_search): more precise anchor(^) check.
+
+Wed Jun 3 18:07:54 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_raise): check rb_in_compile, not rb_in_eval.
+
+Mon Jun 1 05:26:06 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * string.c (trnext): casting to signed char* needed.
+
+Tue Jun 2 16:00:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (udp_addrsetup): error check enhanced.
+
+ * ext/socket/socket.c (sock_s_getservbyaname): use strtoul(), if
+ possible.
+
+Sat May 30 07:10:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_prepare_re): no more needless regular expression
+ recompile on casefold conditions.
+
+Thu May 28 18:02:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (nil_plus): no more `+' method for nil.
+
+Wed May 27 17:33:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (hash_fetch): new method.
+
+ * regex.c (re_search): check whether translate table is set.
+
+Tue May 26 11:39:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_23.
+
+ * parse.y (yylex): no UPLUS/UMINUS for 1st argument if
+ parenthesises are omitted.
+
+Tue May 26 01:09:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): (?XI) for turns off the
+ corresponding option.
+
+Mon May 25 12:38:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): inline i option (?i).
+
+ * regex.c (re_compile_pattern): inline x option (?x).
+
+ * regex.c (re_compile_pattern): x option for regexp.
+
+ * dir.c (dir_s_open): returns block's evaluated value.
+
+ * io.c (f_open): returns block's evaluated value.
+
+ * ext/curses/curses.c (curses_addstr): nil argument caused SEGV.
+
+Fri May 22 11:52:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): push mark on (?:), so that
+ laststart check for {a,b} can be done.
+
+Thu May 21 17:31:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): wrong match (too non-greedy) for `{a,b}?'.
+
+ * io.c (io_lineno): new method IO#lineno, IO#lineno=.
+
+Wed May 20 06:04:43 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * BeOS patch.
+
+Wed May 20 16:32:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (BIGDN): use RSHIFT(), instead of mere `>>'.
+
+Tue May 19 16:36:26 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_22.
+
+Tue May 19 16:31:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (assignable): specification changed for in-block
+ variable definition.
+
+ * eval.c (dyna_var_asgn): error in in-block variables' compile
+ time definition.
+
+ * parse.y (str_extend): wrong nesting detection.
+
+Tue May 19 09:47:55 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * numeric.c (num2int): re-defined (extensions may use this).
+
+Mon May 18 16:40:50 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * error.c (get_syserr): BeOS support.
+
+ * configure.in: modified for BeOS.
+
+ * string.c (str_dump): do not call isascii().
+
+ * sprintf.c (remove_sign_bits): forgot to initialize end pointer.
+
+ * glob.c: #include <alloca.h> added.
+
+Mon May 18 14:52:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_21.
+
+Mon May 18 03:27:57 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * file.c (file_s_expand_path): optional second argument
+ `default_directory' added.
+
+Sat May 16 22:06:52 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * error.c (RAISE_ERROR): wrong error message
+
+Fri May 15 14:43:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_20.
+
+Thu May 14 14:44:21 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * sun4 cc patches for intern.h and regex.h.
+
+Thu May 14 14:03:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * random.c (RANDOM_MAX): guessing proper maximum value for random
+ numbers.
+
+ * random.c (f_rand): use drand48 if possible.
+
+Wed May 13 19:05:20 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * BeOS patches for io.c, error.c and config.guess.
+
+Wed May 13 14:56:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_19.
+
+ * most of the Mac and BeOS patches merged, except path separators.
+
+ * error.c (err_append): generated SyntaxError was String.
+
+ * ruby.h: xxx2INT, xxx2UINT checks values as int, not long.
+
+ * ruby.h: remove typedef's. INT, UINT, UCHAR, USHORT.
+
+Tue May 12 17:38:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_18.
+
+Tue May 12 11:38:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (syserr_errno): returns errno of the SystemCallError.
+
+ * error.c (rb_sys_fail): saves errno in the Exception.
+
+ * error.c (set_syserr): no need to protect syserr_list.
+
+ * error.c (rb_sys_fail): no more bufsize limit.
+
+ * error.c (set_syserr): integer value of errno can be accessed by
+ Errno::EXXX::Errno.
+
+Sun May 10 03:10:33 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * io.c (io_tell etc.): moved from File class to IO class.
+
+Fri May 8 12:26:37 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (pack_unpack): should be unsigned int (was signed int).
+
+Thu May 7 16:34:10 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (pack_pack): `V', `N' uses newly created NUM2UINT().
+
+ * ruby.h (NUM2UINT): new macro.
+
+ * bignum.c (big2uint): try to convert bignum into UINT.
+
+ * re.c (reg_match): needed to return false for match with nil.
+
+ * gc.c (obj_free): wrong condition to free string.
+
+Wed May 6 21:08:08 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ruby.c (ruby_process_options): modified for DJGPP.
+
+Wed May 6 15:48:03 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_17.
+
+Wed May 6 01:37:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c: remove global variable `errat'.
+
+ * eval.c (rb_longjmp): embed error position information in the
+ exception object.
+
+Sat May 2 12:20:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_search): supports reverse search.
+
+ * string.c (str_index_method): does update $~ etc.
+
+ * eval.c (f_load): needed to clear the_dyna_vars.
+
+ * eval.c (dyna_var_asgn): do not push dyna_var, which is id == 0.
+
+ * error.c (Init_Exception): NotImplementError is no longer
+ StandardError, which is not handled by default rescue.
+
+Fri May 1 00:35:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (proc_options): `-d' turns on verbose flag too.
+
+ * error.c (exception): last argument may be the superclass of the
+ defining exception(s).
+
+ * io.c (Init_IO): EOFError is now subclass of the IOError.
+
+ * io.c (Init_IO): forgot to define IOError.
+
+ * error.c (Init_Exception): old Exception class renamed to
+ StandardError. Exception now replaces old GlobalExit.
+
+ * error.c (Init_Exception): Exception is now the root of the
+ Global Exits. There's no longer GlobalExit class.
+
+ * util.c (ruby_mktemp): check TMP, TMPDIR first.
+
+Thu Apr 30 01:08:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/tk.rb: call 'unknown', if proc not defined.
+
+ * eval.c (handle_rescue): default rescue handles `Exceptional' not
+ only the instance of the `Exception's.
+
+ * eval.c (f_raise): exception can be any object.
+
+ * time.c (time_gm_or_local): call time_gmtime or time_localtime.
+
+ * eval.c (f_raise): raises TypeError if the class which is not a
+ subclass of String is specified (checked in exc_new()).
+
+ * error.c (exc_new): need to check whether invalid class (not a
+ subclass of String) is specified.
+
+Wed Apr 29 21:05:44 1998 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ruby.c (proc_options): option '-e' via tempfile.
+
+Tue Apr 28 15:27:58 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_16.
+
+Tue Apr 28 00:07:38 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (obj_is_proc): type check predicate.
+
+ * eval.c (obj_is_block): ditto.
+
+Mon Apr 27 16:59:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/gtk/gtk.c (Init_gtk): use timeout, not idle to avoid
+ consuming CPU too much.
+
+ * lib/tk.rb: use tcltklib#_invoke instead of `_eval'.
+
+Mon Apr 27 16:59:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_sort): use dup, not clone.
+
+Mon Apr 27 13:46:27 1998 Tadahiro Maebashi <maebashi@iij.ad.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_invoke): invoke tcl command
+ directly. need not worry about escaping tcl characters.
+
+Mon Apr 27 12:04:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * random.c (f_rand): do not call srand() implicitly.
+
+Fri Apr 24 14:35:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_15.
+
+ * parse.y (assignable): dyna_var_asgn actually defines nested
+ local variables in outer context.
+
+ * random.c (f_rand): call srand(), if it has not called yet.
+
+ * random.c (f_srand): use tv_usec as the default seed.
+
+ * eval.c (rb_eval): values of nested local variables should be
+ independent.
+
+ * eval.c (rb_yield_0): local variables wrong nested conditions.
+
+Wed Apr 22 23:27:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (select_get_io): get IO object by `to_io'.
+
+ * io.c (io_to_io): method to retrieve IO object, from delegating
+ object for example.
+
+Wed Apr 22 16:52:37 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_14.
+
+ * string.c (str_modify): check for embedded pointer reference.
+
+ * gc.c (obj_free): ditto.
+
+ * pack.c (pack_pack): p/P template to embed pointers.
+
+Wed Apr 22 00:07:10 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * array.c (ary_rindex): embarrassing typo.
+
+Tue Apr 21 12:31:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_13.
+
+ * configure.in (RUBY_LIB): supports --program-{prefix,suffix}.
+
+ * array.c (ary_rindex): new method.
+
+ * io.c (io_binmode): should return self.
+
+Tue Apr 21 08:23:04 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * parse.y (here_document): calling parse_string with wrong
+ arguments.
+
+ * struct.c (struct_aset): problem member assignment with name.
+
+Mon Apr 20 14:47:49 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_12.
+
+ * time.c (time_arg): args may be string (support for reduced
+ implicit type conversion).
+
+ * lib/base64.rb: changed to use pack/unpack with `m' template.
+
+Mon Apr 20 06:23:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (mod_remove_const): new method.
+
+Sat Apr 18 03:53:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (hash_each_with_index): removed. use Enumerable's
+ each_with_index instead.
+
+ * class.c (rb_include_module): check for super modules, since
+ module's included modules may be changed.
+
+Fri Apr 17 21:50:47 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * marshal.c (r_long): r_byte() may return signed byte.
+
+Fri Apr 17 11:58:30 1998 NAGAI Hidetoshi <nagai@dumbo.ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop): thread and interrupt check.
+
+Fri Apr 17 11:06:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (find_file): try to fopen() to check whether file exists.
+
+ * ruby.c (load_file): ditto.
+
+ * struct.c (struct_aset): struct member can be set by member name.
+
+Fri Apr 17 00:47:19 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/extmk.rb.in: added m68k-human support
+
+ * file.c (LOCK_SH): defines moved.
+
+ * array.c (ary_flatten_bang): simplified loop.
+
+Thu Apr 16 16:52:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_11.
+
+ * lib/tk.rb: thread support (experimental - maybe slow).
+
+ * eval.c (rb_longjmp): trace event on exception in raising
+ context, just before raising exception.
+
+ * struct.c (struct_s_members): forgot to check singletons.
+
+ * struct.c (struct_aref): members can be accessed by names too.
+
+ * array.c (ary_flatten): new method.
+
+ * eval.c (rb_longjmp): prints exception information with `-d'.
+
+ * object.c (any_to_s): remove class name restriction.
+
+Thu Apr 16 01:38:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (thread_flock): do not block other threads.
+
+ * eval.c (thread_trap_eval): signals are now delivered to the
+ current thread again. In case that the current thread is dead,
+ signals are forwarded to the main thread.
+
+ * string.c (str_new4): need not to duplicate frozen strings.
+
+Wed Apr 15 08:33:47 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * struct.c (struct_inspect): remove restriction for struct names.
+
+Wed Apr 15 02:55:02 1998 Kazuya 'Sharl' Masuda <sharl@www.ufo.co.jp>
+
+ * x68 patches to config.sub, ext/extmk.rb.in
+
+Wed Apr 15 01:22:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_dup_frozen): do not duplicate frozen strings.
+
+ * parse.y (yylex): allow nested parenthesises.
+
+ * io.c (obj_displayln): prints newline after `display'ing the
+ receiver.
+
+ * io.c (io_puts): avoid generating "\n" each time. use RS_default
+ instead.
+
+ * io.c (f_p): ditto.
+
+Tue Apr 14 22:18:17 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * struct.c (struct_aref): should not subtract negative index.
+
+Tue Apr 14 11:34:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_10.
+
+ * parse.y: token names prefixed by `t'.
+
+ * struct.c (struct_s_def): supports subclassing of Struct.
+
+ * io.c (io_s_new): supports subclassing of IO.
+
+Mon Apr 13 11:07:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (f_binding): need to restore method name.
+
+ * eval.c (rb_call0): raises SystemStackError, not Fatal.
+
+ * io.c (obj_display): same as `print self'.
+
+ * io.c (f_p): can now be called in the method form.
+
+ * re.c (reg_regsub): needed to be mbchar aware.
+
+Mon Apr 13 13:18:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_trap_eval): all signals delivered to main_thread.
+
+Mon Apr 13 12:47:03 1998 TAKAHASHI Masayoshi <maki@inac.co.jp>
+
+ * re.c (kcode_set_option): did not set SJIS on SJIS condition.
+
+Sun Apr 12 22:14:07 1998 Kazunori NISHI <kazunori@swlab.csce.kyushu-u.ac.jp>
+
+ * array.c (ary_uniq_bang): should be `==', not `='. embarrassing.
+
+Sat Apr 11 02:13:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_subseq): SEGVed for `[][1,1]'.
+
+Fri Apr 10 21:29:06 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * array.c (ary_subseq): add check for beg larger than array length.
+
+Wed Apr 8 17:24:11 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * dir.c (dir_s_open): can be called with block (like IO#open).
+
+ * dir.c (dir_s_chdir): print directory path on error.
+
+ * dir.c (dir_s_chroot): ditto
+
+ * dir.c (Init_Dir): needed to override `new'.
+
+Thu Apr 9 18:24:58 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_09.
+
+ * string.c (str_cmp): do not depend on sentinel at the end of the
+ strings.
+
+ * string.c (str_chomp_bang): forgot to set the sentinel.
+
+Wed Apr 8 00:59:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (big2int): converted int may be too big to fit in
+ signed int.
+
+ * parse.y (arg): `foo += 1' should not cause an error.
+
+ * variable.c (rb_const_defined): returned false even if the
+ constant is defined at the top level.
+
+ * eval.c (f_local_variables): dyna_var->id may be null. should
+ have checked before calling str_new2().
+
+Tue Apr 7 01:15:15 1998 Kaneko Naoshi <wbs01621@mail.wbs.or.jp>
+
+ * re.c (reg_regsub): need to check string boundary.
+
+Tue Apr 7 19:19:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_cmp): returns either 1, 0, -1.
+
+ * array.c (ary_cmp): should check array length, too
+
+Tue Apr 7 18:50:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_08.
+
+Tue Apr 7 18:31:27 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * instruby.rb (mandir): dll installation for cygwin32
+
+Tue Apr 7 01:16:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * config.sub (maybe_os): TOWNS support?
+
+ * config.guess: too strict check for libc versions on linuxes.
+
+ * experimental release 1.1b9_07.
+
+ * array.c (ary_cmp): compare each element using `<=>'.
+
+ * hash.c (hash_each_with_index): yields [value, key] pair.
+
+ * class.c (class_protected_instance_methods): list protected
+ method names.
+
+ * class.c (ins_methods_i): exclude protected methods.
+
+ * eval.c (PUSH_BLOCK): dynamic variables can be accessed from
+ eval() with bindings.
+
+Mon Apr 6 14:49:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_yield): must return evaluated value.
+
+Fri Apr 3 13:07:29 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_schedule): context switch bypassed on wrong
+ conditions.
+
+ * variable.c (rb_name_class): set classname by id before String
+ class is initialized (1.0 behavior restored).
+
+Fri Apr 3 11:25:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (num2int): no implicit conversion from string.
+
+ * numeric.c (num2int): check whether `to_i' returns an Integer.
+
+ * numeric.c (num_zero_p): new method.
+
+ * numeric.c (num_nonzero_p): new method. returns the receiver if
+ it's not zero.
+
+ * eval.c (obj_instance_eval): the_class should be the object's
+ singleton class.
+
+ * error.c (exc_s_new): message is converted into a string.
+
+Thu Apr 2 18:31:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (obj_call_init): every object call `initialize'.
+
+Wed Apr 1 08:51:53 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * parse.y (stmt): UNTIL_MOD should be for stmt, not only for expr.
+
+Wed Apr 1 01:20:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (true_and): boolean operators &, | and ^.
+
+Tue Mar 31 13:23:58 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_compact_bang): returns nil, if it does not modify
+ the array like String's bang methods.
+
+ * array.c (ary_uniq_bang): new method to remove duplicate items.
+
+ * eval.c (bind_s_new): new method.
+
+ * numeric.c (num2int): raise exception if Fixnums too big to
+ convert into `int' in case that sizeof(int) < sizeof(INT).
+
+ * string.c (str_center): SEGV on negative width.
+
+ * eval.c (eval): forgot to set sourcefile.
+
+Mon Mar 30 11:12:29 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (f_test): raises exception for unknown command.
+
+ * eval.c (Init_eval): `class_eval': alias to the module_eval.
+
+Mon Mar 30 18:50:42 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * string.c (str_capitalize_bang): did not check string modification.
+
+ * string.c (str_delete_bang): wrong conversion.
+
+ * string.c (str_intern): typo in error message.
+
+Mon Mar 30 01:44:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (obj_instance_eval): accepts block as evaluation body.
+ No compilation needed each time.
+
+ * eval.c (mod_module_eval): ditto
+
+ * file.c (file_s_umask): umask did not return old values, if no
+ argument given.
+
+Sun Mar 29 00:54:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (f_throw): nil returned always.
+
+Sat Mar 28 20:40:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_06.
+
+Sat Mar 28 16:07:11 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (io_closed): should not cause exception for closed IO.
+
+ * string.c (str_tr): returned nil for success.
+
+Sat Mar 28 00:47:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (f_local_variables): new method to return an array of
+ local variable names.
+
+ * variable.c (obj_instance_variables): now returns an array of
+ variable names, as described in the reference.
+
+ * eval.c (rb_attr): honors default method visibility of the
+ current scope.
+
+Fri Mar 27 13:49:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_05.
+
+ * ruby.c (ruby_prog_init): `site_ruby' added to load_path.
+
+ * ruby.c (ruby_prog_init): load-path order changed. Paths in
+ the RUBYLIB environment variable comes first in non-tainted
+ mode.
+
+Thu Mar 26 11:51:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_call): new feature: `protected' methods.
+
+ * string.c (str_dump): new method.
+
+ * eval.c (block_pass): block argument can be nil, which means no
+ block is supplied for the method.
+
+Wed Mar 25 21:20:13 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * string.c (str_reverse_bang): string copied to wrong place.
+
+Wed Mar 25 08:12:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (flo_modulo): caused SEGV if left operand is not a
+ float value.
+
+ * eval.c (f_eval): optional third and fourth argument to specify
+ file-name and line-number.
+
+ * eval.c (eval): file-name and line-number set properly.
+
+ * parse.y (assign_in_cond): literal assignment is now warning, not
+ compile error.
+
+ * error.c (Warn): Warn() always print message, OTOH Waring()
+ prints when verbose flag is set.
+
+Tue Mar 24 12:50:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (ruby_prog_init): `.' should come last in the load-path.
+
+ * eval.c (Init_eval): `__send__', alias for `send'.
+
+Mon Mar 23 12:44:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_chomp_bang): now takes `rs' as an argument.
+
+ * eval.c (thread_free): main_thread should not be freed.
+
+Fri Mar 20 16:40:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_chomp_bang): chomp! (and other ! methods) returns
+ nil if it does not modify the string.
+
+ * string.c (str_sub_iter_s): should check last pattern since it
+ may be matched to null.
+
+Thu Mar 19 13:48:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_04.
+
+ * parse.y (yylex): `10e0.9' should cause syntax error.
+
+Wed Mar 18 17:46:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (load_file): new file object constant DATA. Only
+ available for the script from the file.
+
+ * regex.c (re_match): forwarding failure point popped too much.
+
+Tue Mar 17 18:23:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * math.c (math_frexp): newly added.
+
+ * math.c (math_ldexp): ditto.
+
+ * bignum.c (bigdivmod): calculates modulo.
+
+ * numeric.c (fix_remainder): returns reminder, formerly introduced
+ as modulo.
+
+ * numeric.c (fix_modulo): calculates proper `modulo'.
+
+ * bignum.c (bigdivmod): wrong sign for reminder.
+
+Mon Mar 16 17:07:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_03.
+
+Mon Mar 16 16:33:53 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (pipe_finalize): needed to add pipe_finalize to pipes on
+ cygwin32.
+
+Mon Mar 16 14:11:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (ins_methods_i): needed to consider NOEX_UNDEF.
+
+Mon Mar 16 13:23:53 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (io_check_closed): check for `fptr->f2 == NULL'.
+
+ * io.c (io_fptr_close): ditto.
+
+Mon Mar 16 11:49:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (pipe_atexit): free()ing referencing pipe_list.
+
+ * range.c (range_length): returns zero, if the first is greater
+ than the last.
+
+ * signal.c (trap_restore_mask): restore signal mask before raising
+ exceptions and throws.
+
+Fri Mar 13 13:49:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_02.
+
+ * object.c (mod_clone): need to dups constants and instance
+ variables.
+
+ * eval.c (rb_eval): forgot to initialize body for NODE_DEFS.
+
+ * eval.c (rb_eval): retrieve self from calling frame, since self
+ changes sometimes.
+
+ * env.h (FRAME): need to save self in the calling frame.
+
+ * io.c (f_gets_method): rs should be initialized by RS.
+
+Thu Mar 12 15:33:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_01.
+
+ * range.c (range_s_new): check values by `first <= last'.
+
+ * parse.y (lastline_set): fixed offset for $_ and $~ in the local
+ variable space.
+
+Wed Mar 11 02:14:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_gets): handle normal case specially for speed.
+
+ * eval.c (rb_disable_super): function to disable superclass's
+ method explicitly.
+
+ * eval.c (rb_eval): inherits previous method definition's
+ NOEX_UNDEF-ness, if exists.
+
+ * class.c (rb_define_method): disables superclass's overriding
+ method by default.
+
+Wed Mar 11 01:40:48 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * numeric.c (flo_gt,etc.): do not depend on `<=>', to handle NaN.
+
+Tue Mar 10 00:03:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (load_file): understands multiple options in #! line.
+
+ * regex.c (re_compile_pattern): support for [:alpha:] etc.
+
+Mon Mar 9 16:53:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.h (GetOpenFile): embed io_check_closed in GetOpenFile.
+
+ * sprintf.c (f_sprintf): zero padding failed for negative
+ integers.
+
+ * sprintf.c (remove_sign_bits): failed to remove some bits.
+
+Sat Mar 7 21:51:46 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * class.c (ins_methods_i): body may be NULL for some case.
+
+Fri Mar 6 17:23:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (mbcinit): table driven mbchar detection.
+
+ * object.c (obj_alloc): check for allocating instance for the
+ primitive classes (mostly perfect).
+
+ * ext/curses/curses.c (curses_finalize): restore original state at
+ interpreter termination.
+
+ * ext/curses/curses.c (curses_addstr): forgot to check argument
+ type (caused SEGV). now uses STR2CSTR() macro.
+
+Thu Mar 5 13:47:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (block_pass): accepts method object as block args.
+
+ * eval.c (f_missing): use any_to_s() for stringify.
+
+Wed Mar 4 01:39:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (block_arg): new syntax - block argument in the
+ calling arglist.
+
+ * eval.c (rb_call): no module search. simplified a lot.
+
+ * eval.c (rb_eval): block arg support.
+
+ * parse.y (f_block_arg): new syntax - block argument in the
+ formal arglist.
+
+Tue Mar 3 14:20:15 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (obj_method): returns bound method object.
+
+ * eval.c (rb_call): argument check for empty methods.
+
+ * ruby.h (NUM2CHR): new macro, originally from curses module.
+
+Tue Mar 3 13:03:35 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * io.c (io_putc): new method.
+
+Tue Mar 3 11:21:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_inspect): more strict charcode detection.
+
+ * eval.c (thread_stop): stopping only thread raises ThreadError
+ exception.
+
+Tue Mar 3 08:04:56 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * struct.c (struct_alloc): incomplete struct initialization made
+ GC to access unallocated addresses.
+
+Mon Mar 2 16:28:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_stop_method): remove Thread#stop.
+
+Fri Feb 27 18:16:26 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b9 released.
+
+Fri Feb 27 09:36:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (hash_delete_nil): needed to compare value to nil, since
+ nil is the valid key for hashes.
+
+ * hash.c (hash_foreach_iter): rehashing causes IndexError.
+
+ * hash.c (hash_foreach_iter): rehash check by pointer comparison.
+
+Thu Feb 26 17:22:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (fname): convert reswords into symbols.
+
+ * parse.y (reswords): reserved words are now embedded in the
+ syntax (sigh).
+
+ * parse.y: now reserved words can be method names safely.
+
+Wed Feb 25 15:50:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (mod_module_eval): clear the_scope's PRIVATE flag before
+ calling eval().
+
+ * gc.c (gc_call_finalizer_at_exit): run finalizers before any data
+ object being freed.
+
+ * eval.c (rb_eval): needed to keep prot_tag->retval before
+ evaluating the ensure clause.
+
+Tue Feb 24 11:16:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): reserved words can be appear as method names at
+ right after 'def' and `.'(dot), like foo.next.
+
+ * eval.c (return_check): checks for return out of thread (formerly
+ done in return_value).
+
+ * eval.c (POP_TAG): copy retval to outer level.
+
+ * eval.c (return_value): just set retval, no check, no unwinding.
+
+ * parse.y (nextc): line continuation by backslash at end of line.
+
+ * regex.c (re_compile_pattern): forgot to clear pending_exact on
+ closing parentheses.
+
+ * parse.y (assignable): should not assign dyna_var to true, if it
+ is already defined.
+
+Mon Feb 23 14:35:03 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (obj_is_kind_of): no longer accepts true/false/nil.
+
+ * object.c ({true,false,nil}_to_i): can be converted into integers.
+
+Mon Feb 23 12:11:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_s_quote): needed to be mbchar aware.
+
+ * eval.c (proc_s_new): wrong iter mark.
+
+Sat Feb 21 22:59:30 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * io.c (f_syscall): no argument check.
+
+Fri Feb 20 10:17:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b8 released.
+
+ * ext/kconv/kconv.c (kconv_kconv): default output code now be
+ determined according to the value of $KCODE.
+
+ * re.c (rb_get_kcode): can retrieve $KCODE from C code.
+
+ * parse.y (stmt): if/unless modifiers returns nil, if condition is
+ not established.
+
+Thu Feb 19 11:06:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/kconv/kconv.c (kconv_kconv): charcode can be specified by
+ code name (JIS, SJIS, EUC like value of $KCODE).
+
+ * regex.c (re_compile_pattern): forgot to fixup_jump for (?:..).
+
+ * regex.c (re_compile_pattern): needed to clear pending_exact on
+ non-registering grouping (?:...).
+
+Wed Feb 18 19:54:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (here_document): needed to set lex_state to EXPR_END.
+
+Wed Feb 18 18:45:10 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * patches for cygwin32 applied.
+
+Wed Feb 18 00:41:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_sub_s): needed to be mbchar aware to increment one
+ character.
+
+ * regex.c (re_match): \Z matches newline just before the end of
+ the string.
+
+Tue Feb 17 00:04:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_arg): Time.gm and Time.local now understands
+ Time#to_a format.
+
+ * string.c (str_sub_s): replace happened twice for null pattern.
+
+ * regex.c (re_search): null pattern should not match after newline
+ at the end of string.
+
+ * time.c (time_isdst): now returns boolean value.
+
+ * error.c (rb_check_type): treat special constants in messages.
+
+ * parse.y (yylex): new form `::Const' to see toplevel constants.
+
+ * parse.y (cond): SEGV on `if ()'.
+
+ * gc.c (obj_free): some data needed explicit free().
+
+Mon Feb 16 23:55:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (blk_free): release duplicated block informations.
+
+ * eval.c (blk_copy_prev): duplicate outer block information into
+ the heap, when proc/binding created.
+
+Mon Feb 16 14:38:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_mon): now 1 for January and so on.
+
+ * time.c (time_year): year in 19xx (no + 1900 needed anymore).
+
+Mon Feb 16 13:28:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): need to fetch mbchar's second byte
+ without translation.
+
+Mon Feb 16 12:29:27 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * eval.c (f_pass_block): pass iterator block to other method.
+
+Fri Feb 13 08:16:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_regx): handle \s before read_escape().
+
+ * parse.y (read_escape): `\s' in strings as space.
+
+Tue Feb 10 17:29:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b7 released.
+
+ * string.c (str_aset): string insertion by `str[n] = str2'.
+
+ * string.c (str_oct): does recognize `0x'.
+
+ * sprintf.c (f_sprintf): use base 10 for conversion from string to
+ integer.
+
+Mon Feb 9 14:51:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (do_coerce): proper error message.
+
+ * string.c (str_sum): bug - masked by wrong value. (sigh..)
+
+Sat Feb 7 15:11:14 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_empty): new method
+
+Fri Feb 6 01:42:15 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_asctime): use asctime(3), not strftime(3).
+
+Thu Feb 5 18:58:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_fptr_close): do not free path on close().
+
+ * array.c (ary_filter): new method.
+
+ * enum.c (enum_each_with_index): new method.
+
+Thu Feb 5 14:10:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (primary): singleton class def can be appeared inside
+ method bodies.
+
+ * hash.c (hash_replace): replace content.
+
+ * string.c (str_replace_method): replace content.
+
+ * array.c (ary_replace_method): replace elements.
+
+ * string.c (str_succ_bang): String#succ!
+
+Thu Feb 5 18:20:30 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (str_upcase_bang): multi byte character support.
+
+Wed Feb 4 13:55:26 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_reverse): SEGV on empty array reverse.
+
+Tue Feb 3 12:24:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (match_to_a): non matching element should be nil.
+
+ * ruby.c (ruby_load_script): load script after all initialization.
+
+ * bignum.c (str2inum): need to interpret prefix `0' of `0x'.
+
+Tue Feb 3 10:00:18 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * numeric.c (fix_rshift): use `sizeof(INT)*8' instead of 32.
+
+Mon Feb 2 14:09:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (set_arg0): grab environment region too.
+
+Thu Jan 29 18:36:25 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * process.c (rb_proc_exec): check `sh' to be exist.
+
+Thu Jan 29 18:18:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_stdio_set): assignment to $stdin or $stdout does
+ reopen() as well as $stderr.
+
+Thu Jan 29 14:18:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (mod_ancestors): should not include singleton classes.
+
+ * object.c (obj_type): should not return internal class.
+
+ * io.c (io_reopen): unwillingly closes stdio streams.
+
+Thu Jan 29 11:50:35 1998 Toshihiko SHIMOKAWA <toshi@csce.kyushu-u.ac.jp>
+
+ * ext/socket/socket.c (udp_addrsetup): forgot to use htons().
+
+Tue Jan 27 23:15:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * keywords: __FILE__, __LINE__ are available again.
+
+Fri Jan 23 14:19:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b6 released.
+
+ * object.c (mod_to_s): need to duplicate classpath.
+
+ * error.c (exc_inspect): need to duplicate classpath.
+
+Thu Jan 22 00:37:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h (STR2CSTR): new macro to retrieve char*.
+
+ * class.c (rb_define_method): `initialize' should always be
+ private, even if it defined by C extensions.
+
+ * eval.c (rb_eval): `initialize' should always be private.
+
+Thu Jan 22 16:21:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): some singleton class def cause SEGV.
+
+ * eval.c (TMP_ALLOC): replace ALLOCA_N, where thread context
+ switch may happen.
+
+Wed Jan 21 01:43:42 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (PUSH_FRAME): do not use ALLOCA_N(). crash on some
+ platforms that use missing/alloca.c.
+
+ * regex.c (re_compile_pattern): too many pops for non register
+ subexpr.
+
+ * parse.y (yylex): open parentheses after identifiers are argument
+ list, even if whitespaces have seen.
+
+Tue Jan 20 15:19:59 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (terms): quoted word list by %w(a b c).
+
+ * ext/tcltklib/extconf.rb: more accurate check for tcl/tk libs.
+
+ * file.c (rb_stat): most of the FileTest methods (and function
+ `test') accept File objects as the argument.
+
+Tue Jan 19 18:19:24 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/extmk.rb.in (install): there should be no newline after install:
+
+ * re.c (MIN): renamed from min(). there's a local variable named
+ min in the file, so that some cpp will raise an error.
+
+Mon Jan 19 16:30:05 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b5 released.
+
+ * process.c (rb_syswait): no exception raised.
+
+Fri Jan 16 00:43:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h (CLONESETUP): copies its singleton classes too.
+
+ * class.c (singleton_class_attached): saves binded object in the
+ singleton classes.
+
+ * eval.c (rb_eval): calls singleton_method_added even in the
+ singleton class clauses.
+
+Fri Jan 15 23:22:43 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ruby.c (proc_options): -S does not recognize PATH.
+
+Thu Jan 15 02:03:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_clear_cache_by_id): clear only affected cache
+ entries.
+
+Wed Jan 14 02:14:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c: new UDP/IP socket classes.
+
+Tue Jan 13 10:00:18 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_cmp): ignorecase($=) works wrong.
+
+Fri Jan 9 13:19:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b4 released.
+
+ * eval.c (f_missing): class name omitted from the error message.
+
+ * error.c (exc_inspect): description changed.
+
+ * string.c (Init_String): GlobalExit's superclass did not filled,
+ since GlobalExit created earlier than String.
+
+Thu Jan 8 12:10:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (aryset): expr in the brackets can be null.
+
+Wed Jan 7 21:13:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_reopen): keep stderr unclosed.
+
+ * io.c (io_errset): keep stderr unclosed.
+
+Tue Jan 6 00:27:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y: syntax modified for `while expr do .. end' etc.
+
+ * process.c (f_exec,f_system): can supply arbitrary name for the
+ new process.
+
+Mon Jan 5 16:59:13 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * file.c (file_s_basename): removes any extension by ".*".
+
+Sun Jan 4 19:36:22 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * parse.y (yylex): needed to update lex_p (reading point).
+
+Sat Jan 3 19:14:14 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * class.c,object.c: duplicate defines mKernel and cFinxnum.
+
+Fri Jan 2 20:38:59 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/curses/curses.c (NUM2CHAR): uses the first character for
+ string arguments.
+
+ * array.c (ary_fill): did not extend array for ranges.
+
+ * array.c (beg_len): did not return end pos bigger than size.
+
+Fri Jan 2 02:09:16 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * dir.c (dir_s_chdir): bug in nil check.
+
+ * array.c (ary_fill): bug in nil check.
+
+Tue Dec 30 11:46:23 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (env_path_tainted): checks directories in PATH
+ environment variable are not world writable.
+
+ * ruby.c (load_file): invoke specified interpreter if the #! line
+ does not contain the word `ruby'.
+
+Fri Dec 26 03:26:41 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (uscore_get): type information included in the error
+ message.
+
+ * variable.c (f_untrace_var): does not free trace-data within
+ trace procedure.
+
+Thu Dec 25 02:50:29 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b3 released.
+
+ * ruby.h: inlining some functions on gcc 2.x
+
+Tue Dec 23 02:47:33 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): public/private information kept in the current
+ scope, to remove undesired state from the class/module.
+
+ * time.c (time_strftime): remove hidden limit of 100 bytes of
+ result string, using malloc'ed buffer.
+
+ * hash.c (hash_update): merges the contents of another hash,
+ overriding existing keys.
+
+ * regex.c (must_instr): totally re-written.
+
+ * io.c (read_all): try to allocate proper sized buffer using
+ fstat(2) for speedup.
+
+Sat Dec 20 00:27:28 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (must_instr): need to skip 2 bytes for mbchars.
+
+Fri Dec 19 01:18:29 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b2 released.
+
+ * eval.c (check_errat): check and convert (if necessary) traceback
+ information before assigning to the variable $@.
+
+ * eval.c (f_raise): optional third argument to specify traceback
+ information.
+
+ * io.c (f_open): prevent infinite recursive call.
+
+Thu Dec 18 19:33:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_rindex): now accepts regexp as index.
+
+Thu Dec 18 18:42:50 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/socket/extconf.rb: modified to detect win32 socket lib.
+
+Thu Dec 18 00:25:03 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_equal): checks for source and casefold and kcode matching.
+
+ * marshal.c: became built-in module.
+
+ * ext/marshal/marshal.c (r_object): displays struct name for
+ non-compatible struct.
+
+ * string.c (str_index_method): now searches character (fixnum) in
+ the string.
+
+ * string.c (str_include): redefine `include?'.
+
+ * regex.c (re_match): start_nowidth saves current stack position
+ to stop_nowidth.
+
+ * regex.c (re_compile_pattern): add space to stop_nowidth to save
+ runtime stack position.
+
+Tue Dec 16 14:57:43 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (scan_once): wrong exception for regexp that match with
+ null string (use substr instead of subseq).
+
+Sat Dec 13 00:13:32 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (expr): remove bare assocs from expr rule.
+
+ * rbconfig.rb: renamed from config.rb (it was too generic name).
+
+Fri Dec 12 00:50:25 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (expr): warns if BEGIN or END appear in the method
+ bodies.
+
+ * string.c (str_match): calls y =~ x if y is neither String nor
+ Regexp so that eregex.rb works.
+
+ * eval.c (f_at_exit): to register end proc.
+
+ * class.c (rb_define_module_function): define 'function' method
+ for the Module, not private method.
+
+ * class.c (rb_define_function): function to define `function' method.
+
+ * eval.c (rb_eval): inherit visibility from superclass's method
+ except when it is set to `function'
+
+ * eval.c (rb_eval): new visibility status `function'.
+
+ * parse.y (yycompile): do not clear eval_tree. thus enable multiple
+ command line script by option `-e'.
+
+ * eval.c (rb_eval): END execute just once.
+
+ * parse.y (expr): BEGIN/END built in the syntax.
+
+Thu Dec 11 13:14:35 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (mod_le): Module (or Class) comparison.
+
+ * eval.c (rb_remove_method): raises NameError if named method does
+ not exist.
+
+ * ext/curses/curses.c: remove CHECK macro for BSD curses.
+
+Thu Dec 11 12:44:01 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * pack.c: sun4 cc patch
+
+Wed Dec 10 15:21:36 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/marshal/marshal.c (marshal_load): can supply evolution proc
+ object as optional second argument.
+
+ * re.c (reg_source): get source string of the regular expression.
+
+Tue Dec 9 10:05:17 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b1 released.
+
+ * parse.y (tokadd): token buffer overrun.
+
+ * ruby.c (ruby_prog_init): forgot to protect rb_argv0 from gc.
+
+ * eval.c (ruby_run): call finalizers at process termination.
+
+ * gc.c (gc_call_finalizer_at_exit): call free proc for every Data
+ Wrapper, and finalizer for specified objects at termination.
+
+ * version.c (show_version): version format changed.
+
+ * regex.c (re_match): wrong match with non-greedy if they appear
+ more than once in regular expressions.
+
+ * sample/ruby-mode.el (ruby-expr-beg): forgot to handle modifiers.
+
+Mon Dec 8 19:00:15 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_puts): just put a newline if no argument given.
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop): thread-aware tk handle
+ when $tk_thread_safe is set.
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop): use Tcl_DoOneEvent()
+ instead of Tk_MainLoop().
+
+Mon Dec 6 07:11:16 1997 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * io.c (io_puts): core dumped without any argument.
+
+Fri Dec 5 18:17:17 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (mod_remove_method): remove (not undef) a method from the
+ class/module.
+
+ * variable.c (obj_remove_instance_variable): method to remove
+ instance variables.
+
+Thu Dec 4 13:50:29 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b0 released.
+
+ * string.c (str_aref): called str_index for regexp.
+
+Mon Dec 1 15:24:41 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * compar.c (cmp_between): wrong comparison made.
+
+Wed Nov 26 18:18:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/mkmf.rb: generate Makefile for extension modules out of ruby
+ source tree. use like `ruby -r mkmf extconf.rb'.
+
+ * numeric.c (fix2str): enlarge buffer to prevent overflow on some
+ machines.
+
+ * parse.y (here_document): wrong line number generated after here-doc.
+
+Fri Nov 21 13:17:12 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): skip multibyte characters in comments.
+
+Wed Nov 19 17:19:20 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (nil_to_a): nil.to_a => [].
+
+ * parse.y (call_args): wrong node generation.
+
+Tue Nov 18 10:13:08 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (Init_Array): Array#=== works as Array#include?
+
+ * regex.c (re_compile_pattern): insert initialize code for jump_n,
+ before entering loops.
+
+ * re.c (reg_search): does not save registers unless $& etc appear
+ in the script.
+
+Mon Nov 17 13:01:43 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (is_defined): add defined? check for receivers and
+ arguments for calls.
+
+ * re.c (reg_search): cache last match object.
+
+ * re.c (match_aref): $[0] etc. are available.
+
+Sat Nov 15 00:11:36 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (io_s_popen): "rb" detection
+
+Fri Nov 14 18:28:40 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (scan_once): returns whole match if the pattern does
+ not contain any parentheses.
+
+Thu Nov 13 14:39:06 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_sub): returns copy of the receiver string, even if
+ any substitution occurred.
+
+ * regex.c (re_compile_pattern): no-width match by (?=..), (?!..).
+
+Wed Nov 12 13:44:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c: remove coerce from Time class.
+
+ * regex.c (re_match): non-greedy match by ??, *? +?, {n,m}?.
+
+Mon Nov 10 11:24:51 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): non-registering parens (?:..).
+
+ * regex.c (re_compile_pattern): new meta character \< (wordbeg)
+ and \> (wordend).
+
+ * regex.c (re_compile_pattern): embedded comment for regular
+ expression by (?#...).
+
+Fri Nov 7 16:58:24 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): perl5 regexp \A and \Z available.
+
+ * regex.c (re_compile_pattern): can expand compile stack dynamically.
+
+ * regex.c (PUSH_FAILURE_POINT): wrong compare condition.
+
+Wed Nov 2 16:00:00 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (str_sub_s): "".sub! "", "" => "\000"
+
+Fri Oct 31 15:52:10 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (assoc): keyword assoc like {fg->"black"}.
+
+Thu Oct 30 17:33:38 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_println): print with newline, which is not affected by
+ the values of $/ and $\.
+
+Thu Oct 30 16:54:01 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (str_chop_bang): "".chop caused SEGV.
+
+ * string.c (str_chomp_bang): method to chop out last newline.
+
+Mon Oct 27 13:49:13 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/extmk.rb.in: library may have pathname contains `.'
+
+ * eval.c (rb_rescue): should not protect SystemError.
+
+Fri Oct 24 10:58:53 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_s_with_open_stream): ensures to close stream.
+
+Thu Oct 23 11:17:44 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_errset): value of $stderr can be changed (to any IO
+ object).
+
+ * io.c (next_argv): $< can be anything that responds to `write'.
+
+ * file.c (file_s_with_open_file): ensures to close file.
+
+ * error.c (exception): create error under the current class/module.
+
+ * range.c (range_eqq): fixnum check for last needed too.
+
+Wed Oct 22 12:52:30 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c: Socket::Constants added.
+
+ * file.c: File::Constants added for inclusion.
+
+ * array.c (ary_join): call ary_join() recursively for the 1st
+ array element.
+
+Mon Oct 20 12:18:29 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ruby.c (load_file): wrong condition for #! check with -x.
+
+ * file.c (file_s_dirname): did return "" for "/a".
+
+Fri Oct 17 14:29:09 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c: now works on alpha-linux.
+
+ * bignum.c (bigadd): some undefined side effect order assumed.
+
+Wed Oct 15 17:49:24 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * intern.h: function prototypes added.
+
+Mon Oct 13 16:54:18 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (rb_define_class_id): call superclass's `inherited'
+ method when making subclasses.
+
+ * parse.y (nextc): clear lex_lastline at the end of file.
+
+ * object.c (Init_Object): need to undef Class#append_features.
+
+ * eval.c (rb_eval): no warning on extending classes or modules.
+
+Thu Oct 9 11:17:50 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (error_print): the exception name follows after the error
+ message.
+
+ * eval.c (compile_error): error message slightly changed.
+
+ * parse.y (nextc): script parsing will be terminated by __END__ at
+ beginning of line.
+
+ * eval.c (compile_error): `__END__' is no longer a keyword.
+
+ * parse.y (nextc): protect lastline read from script stream.
+
+Tue Oct 7 14:06:06 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha9 released.
+
+ * eval.c (mod_append_features): renamed from extend_class.
+
+ * eval.c (rb_eval): defining method calls `method_added'.
+
+ * eval.c (ruby_options): exception while processing options must
+ terminate the interpreter.
+
+ * error.c (Init_Exception): wrong method configuration. `new'
+ should have been a singleton method.
+
+Mon Oct 6 18:55:38 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/kconv/kconv.c (kconv_guess): code to guess character code
+ from string.
+
+Mon Oct 6 18:38:17 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * pack.c: now encode/decode base64 by `m' template.
+
+Fri Oct 3 10:51:10 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * MANIFEST: needed to include lex.c in the distribution.
+
+ * eval.c (ruby_options): f_require() called too early.
+
+ * eval.c (rb_provide): module extensions should always be `.o'.
+
+Thu Oct 2 11:38:31 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha8 released.
+
+ * ext/marshal/marshal.c (r_object): remove temporal regist for
+ structs. (caused problem if structs form cycles.)
+
+ * parse.y (match_gen): static binding for match(=~) calls
+ with regexp literals.
+
+Wed Oct 1 15:26:55 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c: protect retval in struct tag from GC for C_ALLOCA.
+
+ * eval.c: no more pointer value from setjmp/longjmp.
+
+Wed Oct 1 14:01:49 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/marshal/marshal.c (w_byte): argument must be char.
+
+Wed Oct 1 10:30:22 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (mod_const_at): global constants now belongs to the
+ class Object.
+
+ * object.c (Init_Object): new global constant NIL.
+
+ * ext/marshal/marshal.c (marshal_dump): try to set binmode.
+
+ * ext/marshal/marshal.c (r_object): forgot to re-regist structs in
+ the object table.
+
+ * eval.c (ruby_options): call Init_ext() before any require()
+ calls by `-r'.
+
+Fri Sep 30 14:29:22 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/marshal/marshal.c (w_object): marshal dumped core.
+
+Tue Sep 30 10:27:39 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sample/test.rb: bignum test suits added.
+
+ * eval.c (rb_eval): new pseudo variable `true' and `false'.
+
+ * parse.y: new keywords `true' and `false' added.
+
+Mon Sep 29 13:37:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (forbid_setid): forbid some options in suid mode.
+
+ * ruby.h (NUM2DBL): new macro to convert into doubles.
+
+Mon Sep 27 09:53:48 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
+
+ * bignum.c: modified for speeding.
+
+Fri Sep 26 18:27:59 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * sample/from.rb: some extensions.
+
+Mon Sep 29 13:15:56 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (lhs): no more syntax error on `obj.CONSTANT = value'.
+
+Fri Sep 26 14:41:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (ruby_run): deferred calling Init_ext() just before eval_node.
+
+Fri Sep 26 13:27:24 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (io_isatty): forgot to return TRUE value.
+
+Fri Sep 25 11:10:58 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
+
+ * eval.c: use _setjmp/_longjmp instead of setjmp/longjmp on some
+ platforms.
+
+Wed Sep 24 17:43:13 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (Init_String): String#taint and String#taint? added.
+
+ * class.c (mod_ancestors): ancestors include the class itself.
+
+Wed Sep 24 00:57:00 1997 Katsuyuki Okabe <HGC02147@niftyserve.or.jp>
+
+ * X68000 patch.
+
+Tue Sep 23 20:42:30 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
+
+ * parse.y (node_newnode): SEGV on null node setup.
+
+Mon Sep 22 11:22:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (ruby_prog_init): wrong safe condition check.
+
+Sun Sep 21 14:46:02 1997 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * error.c (exc_inspect): garbage added to classpath.
+
+Fri Sep 19 11:49:23 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (newtok): forgot to adjust buffer size when shrinking
+ the token buffer.
+
+ * enum.c (enum_find): rb_eval_cmd() does not return value.
+
+ * io.c (pipe_open): close fds on pipe exec. fcntl(fd, F_SETFD, 1)
+ no longer used.
+
+Tue Sep 16 17:54:25 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (f_test): problem if wrong command specified.
+
+ * ruby.c (ruby_prog_init): close stdaux and stdprn for MSDOS.
+
+ * ruby.c (ruby_prog_init): should not add path from environment
+ variable, if ruby is running under setuid.
+
+ * process.c (init_ids): check suid check for setuid/seteuid etc.
+
+Mon Sep 15 00:42:04 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * regex.c (re_compile_pattern): \w{3} and \W{3} did not work.
+
+Thu Sep 11 10:31:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha7 released.
+
+ * ext/socket/socket.c (sock_new): no setbuf() for NT.
+
+ * io.c (rb_fopen,rb_fdopen): set close-on-exec for every fd.
+
+Wed Sep 10 15:55:31 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/marshal/marshal.c (r_bytes0): extra big length check.
+
+Tue Sep 9 16:27:14 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (pipe_fptr_atexit): clean up popen()'ed fptr.
+
+ * error.c (set_syserr): some system has error code that is bigger
+ than sys_nerr. grrr.
+
+Mon Sep 8 18:33:33 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_s_new): dereferenced nil for optional mode.
+
+Fri Sep 5 10:26:03 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (class_instance_methods): do not include methods which
+ are changed to private in subclasses.
+
+Thu Sep 4 12:38:53 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (f_global_variables): list name of the global
+ variables.
+
+ * object.c (obj_id): returns unique integer.
+
+Wed Sep 3 14:05:16 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha6 released.
+
+ * eval.c (mod_s_constants): context sensitive constant list.
+
+ * variable.c (mod_constants): no more `all' option.
+
+ * variable.c (mod_const_of): the values for autoload classes are
+ their name strings.
+
+ * class.c (class_instance_methods): no special treatment for
+ singleton classes.
+
+ * object.c (obj_singleton_methods): returns list of singleton
+ method names.
+
+ * parse.y (yylex): no here document after `class' keyword.
+
+ * eval.c (f_load): expand path if fname begins with `~'.
+
+Tue Sep 2 13:19:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (ins_methods_i): do not list undef'ed methods.
+
+Mon Sep 1 13:42:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha5 released.
+
+ * object.c (mod_attr_reader): create methods to define attribute
+ reader/write/accessor.
+
+ * class.c (rb_define_attr): always defines accessors.
+
+ * eval.c (rb_call): alias occurred in the module body caused SEGV.
+
+ * parse.y: did not generate here document strings properly.
+
+Mon Sep 1 11:43:57 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * parse.y (yylex): heredoc dropped an extra character.
+
+Fri Aug 29 11:10:21 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (class_instance_methods): same method names should not
+ appear more than once.
+
+ * parse.y (yylex): spaces can follow =begin/=end.
+
+ * variable.c (find_class_path): look for class_tbl also for
+ unnamed fundamental classes, such as Object, String, etc.
+
+ * variable.c (rb_name_class): can't name class before String class
+ is initialized.
+
+ * inits.c (rb_call_inits): unrecognized dependency from GC to
+ Array.
+
+ * variable.c (find_class_path): could not find class if Object's
+ iv_tbl is NULL.
+
+Thu Aug 28 13:12:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha4 released.
+
+ * variable.c (mod_constants): wrong condition for singleton
+ class.
+
+ * parse.y (yylex): revised `=begin' skip code.
+
+ * parse.y (here_document): forgot to free(eos).
+
+ * parse.y (yylex): spaces after `<<' prohibited for here
+ documents to avoid confusing with operator `<<'.
+
+ * eval.c (is_defined): separated from rb_eval().
+
+Wed Aug 27 11:32:42 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha3 released.
+
+ * variable.c (mod_name): returns name of the class/module.
+
+ * parse.y (here_document): finally here document available now.
+
+ * variable.c (fc_i): some classes/modules does not have iv_tbl.
+
+ * variable.c (find_class_path): avoid infinite loop.
+
+Tue Aug 26 13:43:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): undef'ing non-existing method will raise
+ NameError exception.
+
+ * object.c (class_s_new): needed to create metaclass too.
+
+ * eval.c (error_print): no class name print for anonymous class.
+
+ * eval.c (rb_longjmp): proper exception raised if raise() called
+ without arguments, with $! or $@ set.
+
+ * object.c (Init_Object): superclass()'s method argument setting
+ was wrong again.
+
+ * class.c (mod_ancestors): list superclasses and included modules
+ in priority order.
+
+Mon Aug 25 11:53:11 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha2 released.
+
+ * sample/ruby-mode.el (ruby-parse-region): auto-indent now
+ supports "\\" in the strings.
+
+ * struct.c (struct_getmember): new API to get member value from C
+ language side.
+
+Sat Aug 23 21:39:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (assignable): remove unnecessary local variable
+ initialize by nil.
+
+Fri Aug 22 14:26:40 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (error_print): modified exception print format.
+
+Thu Aug 21 16:10:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sample/ruby-mode.el (ruby-calculate-indent): wrong indent level
+ calculated with keyword operators.
+
+Thu Aug 21 11:36:58 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * parse.y (arg): ary[0] += 1 cause SEGV
+
+Wed Aug 20 17:28:50 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (ruby_process_options): require() all modules after
+ processing all options
+
+ * process.c (rb_proc_exec): more security checks added.
+
+ * process.c (rb_proc_exec): insecure path on exec.
+
+ * hash.c (f_getenv): PATH modification security check.
+
+Tue Aug 19 00:15:38 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha1 released.
+
+ * eval.c (mod_eval): work as normal eval() if second binding
+ argument given.
+
+ * eval.c (rb_call): did not raise ArgumentError if too many
+ arguments more than optional arguments (without rest arg).
+
+ * eval.c (rb_eval): did not work well for op_asgn2 (attribute
+ self assignment).
+
+ * eval.c (Init_Thread): returns main thread.
+
+Mon Aug 18 09:25:56 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (inspect_i): did not display T_DATA instance variables.
+
+ * parse.y: provides more accurate line number information.
+
+ * eval.c (thread_value): include value's backtrace information in
+ the variable `$@'.
+
+ * eval.c (f_abort): print backtrace and exit.
+
+Sat Aug 16 00:17:44 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (class_new_instance): do not make instance from virtual
+ classes.
+
+ * object.c (class_s_new): do not make subclass of singleton class.
+
+Fri Aug 15 15:49:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (call_trace_func): block context switch in the trace
+ function.
+
+ * eval.c (rb_eval): clear method cache at class extension.
+
+ * object.c (obj_type): returns object's class even if it defines
+ singleton methods.
+
+Fri Aug 15 19:40:43 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/socket/socket.c (Init_socket): small typo caused SEGV.
+
+Wed Aug 13 17:51:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha0 released.
+
+Local variables:
+add-log-time-format: (lambda ()
+ (let* ((time (current-time))
+ (diff (+ (cadr time) 32400))
+ (lo (% diff 65536))
+ (hi (+ (car time) (/ diff 65536))))
+ (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t)))
+indent-tabs-mode: t
+tab-width: 8
+end:
diff --git a/doc/ChangeLog-1.9.3 b/doc/ChangeLog-1.9.3
new file mode 100644
index 0000000000..eecfc44325
--- /dev/null
+++ b/doc/ChangeLog-1.9.3
@@ -0,0 +1,92772 @@
+Sun Jul 10 22:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal): fix
+ precision treatment errors.
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests for the above change.
+ fix precision treatment errors.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): precision argument
+ should be optional for its compatibility.
+
+Sun Jul 10 22:38:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (var_ref): distinguish vcall from local variable
+ references. based on a patch by Michael Edgar michael.j.edgar
+ AT dartmouth.edu. Bug #5002
+
+Sun Jul 10 21:51:29 2011 Koichi Sasada <ko1@atdot.net>
+
+ * internal.h: add comments (cautions).
+
+Sun Jul 10 20:59:38 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Add new class variable `@@testfile_prefix`.
+ This is for changing test name prefix. (For testing)
+
+ * test/testunit/tests_for_parallel/ptest_first.rb: Renamed from
+ test_first.rb
+
+ * test/testunit/tests_for_parallel/ptest_second.rb: Renamed from
+ test_second.rb
+
+ * test/testunit/tests_for_parallel/ptest_third.rb: Renamed from
+ test_third.rb
+
+ * test/testunit/tests_for_parallel/ptest_forth.rb: Renamed from
+ test_forth.rb
+
+ * test/testunit/tests_for_parallel/runner.rb: Remove misc.rb
+
+ * test/testunit/tests_for_parallel/ptest_first.rb: ditto.
+
+ * test/testunit/tests_for_parallel/ptest_second.rb: ditto.
+
+ * test/testunit/tests_for_parallel/ptest_third.rb: ditto.
+
+ * test/testunit/tests_for_parallel/ptest_forth.rb: ditto.
+
+ * test/testunit/tests_for_parallel/misc.rb: Removed because no longer
+ needed.
+
+ * test/testunit/test_parallel.rb: Fix assertions for above.
+
+Sun Jul 10 16:57:08 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_throw): check a class frame.
+ Fixes Bug #4648.
+ The patch is contributed by Kazuki Tsujimoto.
+
+ * bootstraptest/test_proc.rb: add tests for above.
+
+Sun Jul 10 17:28:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (mutex_debug): use exit(EXIT_FAILURE) instead of
+ exit(1).
+ * thread_pthread.c (add_signal_thread_list): ditto.
+ * thread.c (rb_thread_call_with_gvl): ditto.
+ * util.c (Bug): ditto.
+
+Sun Jul 10 15:58:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Merge json gem 1.5.4+ (f7f78896607b6f6226cd).
+ [Bug #4700]
+
+Sun Jul 10 16:41:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (typedef struct rb_vm_struct): create a new
+ 'inhibit_thread_creation' field.
+ * thread.c (rb_thread_terminate_all): set inhibit_thread_creation.
+ * thread.c (thread_s_new): don't permit to create new thread
+ if the VM is under destruction. Otherwise evil finalizer code
+ can make SEGV. [Bug #4992][ruby-core:37858]
+
+ * bootstraptest/test_objectspace.rb: new test for this fix.
+
+Sun Jul 10 16:06:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (sigsegv): use abort() instead of exit() when nested
+ SEGV was happen. Because unnested SEGV use abort().
+ [Bug #5013][ruby-dev:44078]
+
+Sun Jul 10 15:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * load.c (rb_f_autoload): prevent to autoload for singleton
+ classes. fixes [Bug #4886] [ruby-dev:43816]
+
+ * bootstraptest/test_autoload.rb: add tests for the above change.
+
+Sun Jul 10 15:09:17 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/assertions.rb: Import documentation patch by Justin
+ Collins. [ruby-core:37225] [Feature #4903]
+
+Sun Jul 10 14:57:36 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: canonicalizes nth and sf.
+
+Sun Jul 10 14:13:50 2011 Koichi Sasada <ko1@atdot.net>
+
+ * internal.h (rb_thread_call_with_gvl, rb_thread_call_without_gvl):
+ make them visible as experimental C APIs. fixes Feature #4328.
+
+Sun Jul 10 12:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): support non-integral
+ exponent. fixes [Bug #3271]
+
+ * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power_op): add a function to
+ only use for "**" operator.
+
+ * test/bigdecimal/test_bigdecimal.rb: add a bunch of tests for the
+ above changes.
+
+ * ext/bigdecimal/bigdecimal.c (is_integer): add an utility function.
+
+ * ext/bigdecimal/bigdecimal.c (is_negative): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (is_positive): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (is_zero): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (is_one): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (is_even): ditto.
+
+Sun Jul 10 12:08:39 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (when_vals): when a string literal is written on when
+ clause, skip string creation to make it faster. [ruby-dev:44068]
+ [Feature #5000]
+
+Sun Jul 10 11:35:29 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (reduce_nodes_gen): NODE_RETURN in rescue body must not be
+ reduced when there is an else clause. This caused bizarre behavior
+ in [Bug #4473] [ruby-core:35629] [ruby-core:37884].
+
+Sun Jul 10 09:46:14 2011 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * range.c (range_max): fix behavior with excluded end value.
+ [Bug #4591]
+
+Sun Jul 10 09:13:18 2011 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS: Fix RubyGems version. [Ruby 1.9 - Bug #5004]
+
+Sat Jul 9 20:01:59 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * internal.h: rb_rational_reciprocal is defined in rational.c.
+
+Sat Jul 9 19:48:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * internal.h: added declarations.
+ * complex.c: followed the above change.
+
+Sat Jul 9 17:24:41 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * NEWS: bigdecimal is not a builtin.
+
+Sat Jul 9 17:17:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: some improvements for performance.
+
+Sat Jul 9 16:56:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * atomic.h (ATOMIC_OR): _InterlockedOr is unavailable in VC6.
+
+ * numeric.c (ULLONG_MAX): fallback definition.
+
+Sat Jul 9 15:59:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_{read,write}): should be signed.
+ Bug #5001
+
+Sat Jul 9 14:02:20 2011 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb: fix multipart form parsing bug. [Bug #3866]
+
+Sat Jul 9 11:41:03 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Add Vector#normalize [ruby-dev:43829]
+
+Sat Jul 9 09:25:06 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enumerator.c: Remove "enumeration sequenced by".
+ [Ruby 1.9 - Bug #4757]
+
+Sat Jul 9 09:14:56 2011 Eric Hodel <drbrain@segment7.net>
+
+ * io.c: Note that methods other than IO#gets may increase IO#lineno.
+ [Ruby 1.9 - Bug #4902]
+
+Sat Jul 9 08:39:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUN_OPT): disable gems.
+
+Sat Jul 9 08:37:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_close): close(2) on a fd which is being read by
+ another thread causes deadlock on Mac OS X 10.5
+
+Fri Jul 8 21:20:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: use USE_ELF instead of __ELF__ because Solaris
+ doesn't define it. USE_ELF is already provided by configure.
+ patched by Naohisa Goto. [ruby-dev:44066] [Bug #4998]
+
+ * addr2line.h: ditto.
+
+ * vm_dump.c: ditto.
+
+Fri Jul 8 16:40:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/parser/parser.rl (convert_encoding): should not modify
+ the argument.
+
+ * ext/json/parser/parser.rl (convert_encoding): no needs to use
+ force_encoding.
+
+Fri Jul 8 15:53:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_bug): get rid of segfault after all threads
+ disposed.
+
+Fri Jul 8 15:01:06 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl.h: include openssl/e_os2.h before checking the
+ definition of OPENSSL_SYS_WIN32.
+
+Fri Jul 8 14:40:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (wunlink): reverted a part of r32426. it was mistakenly
+ mixed.
+
+Fri Jul 8 14:29:47 2011 Narihiro Nakamura <authornari@gmail.com>
+
+ * configure.in: can't subtract void *.
+
+Fri Jul 8 14:33:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): define GC_MARK_STACKFRAME_WORD.
+ fixed build problem of r32438. the value (30) is temporary value.
+ maybe it's enough by 20~24 according to my observation.
+
+Fri Jul 8 13:47:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_unlock_all): folded into
+ rb_threadptr_unlock_all_locking_mutexes.
+ * thread.c (rb_threadptr_unlock_all_locking_mutexes) ditto.
+
+Fri Jul 8 13:36:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_unlock_all_locking_mutexes): rename to
+ rb_threadptr_unlock_all_locking_mutexes and remove static.
+ * vm_core.h: add rb_threadptr_unlock_all_locking_mutexes declaration.
+ * thread.c (thread_start_func_2): adjust the above rename.
+
+ * eval.c (ruby_cleanup): call rb_threadptr_unlock_all_locking_mutexes
+ again after finalizer. [Bug #4988] [ruby-dev:44049]
+
+Fri Jul 8 13:06:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (FIBER_MACHINE_STACK_ALLOCATION_SIZE): Fiber stack size
+ don't need to keep multiple number of sizeof(VALUE).
+
+Fri Jul 8 11:39:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (sudo-precheck): true command is not standard on
+ Windows.
+
+Fri Jul 8 10:39:52 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (gvl_destroy): fix cond_t leak.
+
+Fri Jul 8 09:17:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * gc.c: Improve documentation
+
+Thu Jul 7 23:35:31 2011 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: change water_mark value that may call
+ gc_mark(lev <= GC_LEVEL_MAX) in gc_mark().
+ In ruby_stack_check(), water_mark is a value that may call some
+ C function. Fixes Bug #3781
+
+ * configure.in: define GC_MARK_STACKFRAME_WORD that approximate
+ size of gc_mark() and gc_mark_children() stackframes.
+
+Thu Jul 7 17:55:05 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/testunit/test_parallel.rb (TestParallelWorker#teardown): wait
+ the child process even if the communication pipe is broken.
+
+Thu Jul 7 15:44:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_set_index, rb_enc_associate_index): should
+ check if frozen.
+
+ * parse.y (rb_intern3), ruby.c (process_options, ruby_script):
+ defer freezing after associating encodings.
+
+Thu Jul 7 15:16:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_num2ull): use own switch sentence.
+ Current implementation can't convert 18446744073709551615.
+
+Thu Jul 7 06:56:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (FIBER_STACK_FLAGS): workaround fix for r32420 on FreeBSD.
+
+Thu Jul 7 06:46:12 2011 Eric Hodel <drbrain@segment7.net>
+
+ * benchmark/driver.rb: Add difference column to report that averages
+ across all runs of a benchmark. [Ruby 1.9 - Feature #4982]
+
+Thu Jul 7 06:19:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Reduce requires to improve `make benchmark`.
+ [#4962]
+ * lib/rubygems/specification.rb: Delay initialization of rubygems
+ until require is called.
+
+Thu Jul 7 04:31:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (arg): rescue_mod is in inverse order from other
+ modifiers. patched by michael.j.edgar AT dartmouth.edu at
+ [ruby-core:36248]. fixed #4716.
+
+Thu Jul 7 00:40:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (kill): check that the process exited or not before
+ terminating it. [Bug #4943]
+
+Wed Jul 6 23:13:19 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (opt_call_args): allow trailing comma after assoc
+ argument e.g. 'foo(bar:1,)'. fixed #3456
+
+Wed Jul 6 22:11:12 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Validate date in
+ "Date:" header
+
+Wed Jul 6 21:29:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_machine_stack_alloc): cleanup pointer arithmetic.
+ "size/sizeof(VALUE)" is ugly and easy confusing.
+ * cont.c (fiber_initialize_machine_stack_context): ditto.
+
+Wed Jul 6 21:24:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_machine_stack_alloc): fix mprotect misuse. A stack
+ guard page should have PROT_NONE.
+ * cont.c (fiber_initialize_machine_stack_context):
+ th->machine_stack_maxsize shouldn't be included guard pages size.
+ [Bug #4983][ruby-dev:44043]
+
+Wed Jul 6 21:23:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_machine_stack_alloc): use MAP_STACK if it's provided.
+
+Wed Jul 6 21:22:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_machine_stack_alloc): use MAP_FAILED instead of -1.
+
+Wed Jul 6 21:21:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_machine_stack_alloc): remove unnecessary cast.
+
+Wed Jul 6 18:10:13 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Adding space after
+ comma.
+
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Remove variable
+ `now`. Suppress warning.
+
+Wed Jul 6 12:18:09 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Fix bug depends to
+ time. The test fails if time past 1 second in line 136-145
+
+Tue Jul 5 15:28:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_here_document): should dispatch heredoc_end
+ scanner event on an empty here document. fixed Bug#4543.
+
+Tue Jul 5 13:49:26 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * addr2line.c: fix r32407 to check HAVE_ALLOCA_H.
+
+Tue Jul 5 14:05:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httpauth/digestauth.rb (_authenticate):
+ Literal texts in HTTP ABNF is case-insensitive (RFC2616 2.1),
+ and a sample implementation in RFC2617 also ignores the case
+ of algorithms. So now this ignores those cases.
+ [ruby-dev:43965] [Feature #4936]
+
+ * lib/webrick/httpauth/digestauth.rb (initialize):
+ Because of above, opera_hack is useless and removed.
+
+Tue Jul 5 01:30:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread_pthread.c (native_sleep): cut the waiting time up to
+ 100,000,000 because Solaris cond_timedwait() return EINVAL if an
+ argument is greater than current_time + 100,000,000. This is
+ considered as a kind of spurious wakeup. The caller to native_sleep
+ should care about spurious wakeup.
+
+Tue Jul 5 01:24:26 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c: disable FIBER_USE_NATIVE on Solaris because resuming any
+ Fiber caused SEGV. I haven't follow up the issue deeply, but it
+ works when disabling the feature.
+
+Tue Jul 5 01:22:46 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * addr2line.c: include <alloca.h> to fix a build issue on Solaris.
+
+Tue Jul 5 00:49:05 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/coverage/coverage.c: resurrect r32071 + add GC guard for
+ rb_coverages. [ruby-core:37352] [Bug #4927]
+ [ruby-core:36539] [Feature #4796]
+
+ * test/coverage/test_coverage.rb resurrect r32071.
+
+Mon Jul 4 22:24:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (get_stack): For NetBSD/FreeBSD, use
+ pthread_attr_getstack() if possible. and, remove an assumption
+ of stack growing direction.
+
+Mon Jul 4 20:42:31 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/coverage/coverage.c: revert r32071. The commit caused SEGV on
+ some minor nonfree OS. I have no means of debugging the bug. My
+ personal opinion is that such OS should be unsupported unless there
+ is an active maintainer. [ruby-core:37352]
+
+ * test/coverage/test_coverage.rb: ditto.
+
+Mon Jul 4 07:14:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (get_stack): the return address of get_stack
+ must be the highest address of the current thread's stack.
+
+Mon Jul 4 06:37:22 2011 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/intern.h, thread_pthread.c (rb_reserved_fd_p,
+ RB_RESERVED_FD_P): added. This C API is to limit to access
+ fds which are used by RubyVM internal. In this version of
+ CRuby, return 1 if fd is communication pipe.
+ If your application needs to close all file descriptors to
+ present resource leak, skip internal fds using this C API.
+ We also define a macro RB_RESERVED_FD_P(fd). So you can write
+ #ifndef RB_RESERVED_FD_P
+ #define RB_RESERVED_FD_P(fd) 0
+ #endif
+ for Ruby 1.9.2 or previous version to write compatible extensions.
+ See [ruby-core:37727]
+
+ * thread_win32.c (rb_reserved_fd_p): added (return 0 for any fds).
+
+ * io.c (rb_io_initialize): raise ArgumentError if given fd is reserved by Ruby.
+
+Sun Jul 3 23:43:56 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/extmk.rb (extmake): suppresses outputs from extconf.rb.
+ (extmake) warns a failure in extconf.rb.
+
+Sun Jul 3 13:44:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_reject_bang): should not remove elements which are
+ not yielded. [Bug #2545]
+
+Sun Jul 3 06:10:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (get_stack): pthread_attr_getstack() doesn't
+ return stack start address, but stack base address. Thus,
+ we need to add stack size for getting stack start address.
+ And, we don't have to decrease guard size twice.
+ * thread_pthread.c (thread_start_func_1): don't use inaccurate
+ stack start guess if native_thread_init_stack() can be used.
+ [Bug #1813] [ruby-core:24540]
+
+Sun Jul 3 04:50:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (get_stack): add to a care of guard page on Mac
+ OS X. [Bug #1813] [ruby-core:24540]
+ * signal.c (ruby_signal): SIGBUS use alternative stack too.
+ * signal.c (sigbus): On Mac, thread stack overflow makes SIGBUS
+ instead of SIGSEGV. thus, added stackoverflow check.
+ * signal.c (default_handler): get rid of compilation warning.
+ * signal.c (Init_signal): ditto.
+
+Sat Jul 02 08:59:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ocsp.rb
+ * test/openssl/test_x509_cert.rb: Perform SHA-256 tests only if
+ supported by the available OpenSSL version. Versions < 0.9.8 don't
+ support it. [ruby-core:37724]
+
+Sat Jul 2 07:17:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_reject_bang, rb_ary_delete_if): rejected
+ elements should be removed. fixed [Bug #2545]
+
+Sat Jul 2 01:57:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: remove a description of Kernel#respond_to? because it has
+ been reverted at revision 28564.
+
+Sat Jul 2 00:58:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: describe a change of multiplication of Bignum.
+
+Fri Jul 1 18:52:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_app_erb.rb: increase loop count. too short
+ measurement time makes less accuracy.
+ * benchmark/bm_app_factorial.rb: ditto.
+ * benchmark/bm_app_mandelbrot.rb: ditto.
+ * benchmark/bm_app_strconcat.rb: ditto.
+
+ * benchmark/bm_io_file_create.rb: ditto.
+ * benchmark/bm_io_file_read.rb: ditto.
+ * benchmark/bm_io_file_write.rb: ditto.
+
+ * benchmark/bm_so_concatenate.rb: ditto.
+ * benchmark/bm_so_lists.rb: ditto.
+ * benchmark/bm_so_matrix.rb: ditto.
+ * benchmark/bm_so_random.rb: ditto.
+ * benchmark/bm_so_sieve.rb: ditto.
+
+ * benchmark/bm_vm_thread_mutex1.rb: ditto.
+ * benchmark/bm_vm_thread_mutex2.rb: ditto.
+ * benchmark/bm_vm_thread_mutex3.rb: ditto.
+
+ * benchmark/bm_vm1_block.rb: cleanup.
+ * benchmark/bm_vm1_const.rb: cleanup.
+ * benchmark/bm_vm1_ensure.rb: cleanup.
+ * benchmark/bm_vm1_ivar.rb: cleanup.
+ * benchmark/bm_vm1_length.rb: cleanup.
+ * benchmark/bm_vm1_neq.rb: cleanup.
+ * benchmark/bm_vm1_not.rb: cleanup.
+ * benchmark/bm_vm1_rescue.rb: cleanup.
+ * benchmark/bm_vm1_simplereturn.rb: cleanup.
+ * benchmark/bm_vm1_swap.rb: cleanup.
+
+ * benchmark/bm_vm2_array.rb: cleanup.
+ * benchmark/bm_vm2_case.rb: cleanup.
+ * benchmark/bm_vm2_defined_method.rb: cleanup.
+ * benchmark/bm_vm2_eval.rb: cleanup.
+ * benchmark/bm_vm2_method.rb: cleanup.
+ * benchmark/bm_vm2_mutex.rb: cleanup.
+ * benchmark/bm_vm2_poly_method.rb: cleanup.
+ * benchmark/bm_vm2_poly_method_ov.rb: cleanup.
+ * benchmark/bm_vm2_proc.rb: cleanup.
+ * benchmark/bm_vm2_regexp.rb: cleanup.
+ * benchmark/bm_vm2_send.rb: cleanup.
+ * benchmark/bm_vm2_super.rb: cleanup.
+ * benchmark/bm_vm2_unif1.rb: cleanup.
+ * benchmark/bm_vm2_zsuper.rb: cleanup.
+
+ * benchmark/bm_vm_thread_alive_check1.rb: cleanup.
+
+Fri Jul 1 15:23:00 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix: Add LUP decomposition
+
+Fri Jul 1 15:21:14 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Allow non integer exponents for Matrix#**
+
+Fri Jul 1 15:13:25 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix: Add Eigenvalue Decomposition
+
+Fri Jul 1 15:10:22 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix: Add Matrix#round
+
+Fri Jul 1 11:41:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_trans): free heap ptr when the str is not embedded.
+ patched by Eric Wong. [Bug #4956] [ruby-core:37708]
+
+Fri Jul 1 11:07:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (do_select): fix memory leak.
+ Patch by Eric Wong. Thank you! [Bug #4953] [ruby-core:37702]
+
+Fri Jul 1 08:21:28 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_getivar): check vm state version
+ to invalidate inline cache (ivar index).
+ fixes Bug #4926.
+
+ * vm_insnhelper.c (vm_setivar): ditto.
+
+Fri Jul 1 08:03:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c, thread_pthread.c (WRITE_CONST): suppress warnings
+ `ignoring return value'.
+
+Fri Jul 1 06:41:36 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_threadptr_check_signal): only wake up main thread.
+
+ * thread.c (rb_threadptr_execute_interrupts_common): check signal
+ delivery if it is main thread.
+ fixes [ruby-dev:44005] [Ruby 1.9 - Bug #4950]
+
+ * bootstraptest/test_fork.rb: add a test for above.
+
+ * signal.c (rb_get_next_signal): skip if signal_buff is empty.
+ (check signal_buff.size first)
+
+ * vm_core.h: remove unused variable rb_thread_t::exec_signal.
+
+ * thread.c (rb_thread_check_trap_pending): check
+ rb_signal_buff_size() because rb_thread_t::exec_signal
+ is no longer available.
+
+Fri Jul 1 03:28:25 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (Init_class_hierarchy): should name BasicObject
+ explicitly.
+
+ * variable.c (rb_const_defined_0): should not check for
+ superclasses as const_get.
+
+Fri Jul 1 03:24:03 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: mathn is still alive (should die soon).
+
+Thu Jun 30 23:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * misc/ruby-mode.el (ruby-indent-beg-re): Fix broken regular
+ expression. Fixes #4546
+
+Thu Jun 30 23:43:30 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl.c/.h: Added ossl_x509_name_sk2ary.
+ * ext/openssl/ossl.c: Replaced ossl_x509_ary2k by generic macro to
+ simplify future conversions.
+ * ext/openssl/ossl_ssl.c: Implement SSLSocket#client_ca.
+ * test/openssl/test_ssl.rb: Add test for SSLSocket#client_ca.
+ Thanks to Ippei Obayashi for providing the patch!
+ [ Ruby 1.9 - Feature #4481 ] [ruby-core:35461]
+
+Thu Jun 30 22:38:58 2011 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm2_defined_method.rb: added to measure performance of
+ bmethod (method defined by define_method()).
+
+Thu Jun 30 22:17:04 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_bmethod): fix to hook call/return event
+ for methods defined by define_method(). fixes Bug #4613.
+
+ * thread.c (call_trace_proc): Fix to skip if class is not given (0).
+ Note that ID and Class object are passed for call/return event
+ if the called method was defined by define_method().
+ If you are author of tracer/profiler/debugger, this may be an
+ important change. You should check passed class as zero or
+ non-zero instead of checking the event type.
+
+ * test/ruby/test_settracefunc.rb: add a test for above.
+
+Thu Jun 30 21:18:35 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * configure.in: Add warnflags for XL/C on AIX during configure
+ to avoid [Bug #3971]. See [ruby-core:32859]
+
+Thu Jun 30 21:16:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (m_ajd): refers a constant.
+
+Thu Jun 30 20:54:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/io-console.gemspec: spin-off gem for 1.9.2.
+
+Thu Jun 30 20:36:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: trivial changes.
+
+Thu Jun 30 20:12:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_module.rb: tests for [Bug #3422] and [Bug #3423].
+
+Thu Jun 30 20:03:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: modified doc.
+
+Thu Jun 30 19:09:19 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (thread_timer): ignore unknown errno.
+ (we observed that select(2) was canceled by errno=514 on
+ boron == Linux/Xen environment)
+
+Thu Jun 30 17:33:25 2011 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects):
+ Fix rdoc. Fixes Bug #3892.
+
+ * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects):
+ Change key type if the klass of a object is zero (internal object).
+ Read rdoc for details.
+
+ * internal.h: export rb_objspace_data_type_name().
+
+Thu Jun 30 17:25:08 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (ping_signal_thread_list, thread_timer):
+ fix to keep polling state if there are any ping-tasks.
+
+Thu Jun 30 12:25:34 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): allocate
+ machine stack for the timer thread at least 12KB. FreeBSD 8.2
+ AMD64 causes machine stack overflow (SIGSEGV) only with
+ PTHREAD_STACK_MIN (maybe defined as 2KB).
+
+Thu Jun 30 09:36:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/weakref.rb: Attach documentation to WeakRef and add missing
+ documentation
+
+Thu Jun 30 09:30:14 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/yaml.rb: Document toplevel YAML and YAML::ENGINE to describe
+ Psych vs Syck engines.
+
+Thu Jun 30 09:21:52 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cmath.rb: Hide handle_no_method_error from RDoc.
+ * error.c: Document or hide undocumented error classes.
+
+Thu Jun 30 07:49:04 2011 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c: Document ENV
+
+Thu Jun 30 06:37:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): ensure RUBYLIB_PREFIX stored
+ before RUBYLIB, even if MANGLED_PATH is enabled. fixed #1679.
+ MANGLED_PATH is disabled by the default and will be removed
+ completely in the future.
+
+Thu Jun 30 06:32:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/drb/drb.rb: Hide deprecated toplevel DRb constants.
+
+Thu Jun 30 06:17:02 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cmath.rb (CMath.log): second argument: b can be nil.
+
+Thu Jun 30 06:23:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * thread.c (ruby_thread_s_pass): Fix typo.
+
+Thu Jun 30 06:16:53 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 3.8 which contains fixes for documentation
+ in trunk.
+
+Thu Jun 30 02:53:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_threadptr_execute_interrupts_common): remove
+ meaningless native_thread_yield(). It never close a race.
+
+Thu Jun 30 02:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_schedule_limits): minor optimization.
+ eliminate machine context saving when running time is enough small.
+
+Thu Jun 30 02:28:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_schedule_rec): move interrupt_flag check to
+ rb_thread_schedule().
+ And also rename to rb_thread_schedule_limits() and remove
+ sched_depth argument. It's no longer called recursive.
+ * thread.c (rb_thread_schedule): add to check interrupt_flag as
+ above explained.
+
+ * thread.c (rb_threadptr_execute_interrupts_rec): rename to
+ rb_threadptr_execute_interrupts_common() and remove sched_depth
+ argument. It's no longer called recursive.
+
+ * thread.c (rb_thread_sleep): adapt the renaming.
+ * thread.c (rb_threadptr_execute_interrupts): ditto.
+ * thread.c (rb_thread_execute_interrupts): ditto.
+
+Thu Jun 30 01:31:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_s_pass): change RDoc description and remove
+ a sample code. The actual implementation never behave as explained by
+ an example. It's a documentation bug.
+
+Thu Jun 30 00:54:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_stop): change RDoc sample code. The old
+ example is buggy and may cause deadlock. The patch is
+ suggested by Heesob Park <phasis@gmail.com>. Thank you!
+ [Bug #3606][ruby-core:31454]
+
+Thu Jun 30 00:49:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_wakeup): change RDoc sample code. The old
+ example is buggy and may not display anything by a race.
+ The patch is suggested by Heesob Park <phasis@gmail.com>.
+ Thank you! [Bug #3606][ruby-core:31454]
+
+Thu Jun 30 00:43:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_run): change RDoc. The old example is buggy
+ and may cause deadlock. The patch is suggested by Heesob Park
+ <phasis@gmail.com>. Thank you! [Bug #3606][ruby-core:31454]
+
+Thu Jun 30 00:30:15 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/cmath.rb: make same exception for Math. fix [Bug #3137].
+
+Thu Jun 30 00:03:20 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/completion.rb: complement correctly string literal. fix
+ [Bug #1145].
+
+Wed Jun 29 23:42:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: avoided using timev.
+ * ext/date/date_strftime.c: ditto.
+ * ext/date/date_tmx.h: ditto.
+
+Wed Jun 29 23:17:57 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/openssl/ossl.h (OPENSSL_SYS_WIN32): support for mingw(msys).
+
+Wed Jun 29 23:09:14 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tk/extconf.rb (intptr_t, uintptr_t): support for the latest ActiveTcl with mingw.
+
+Wed Jun 29 22:49:10 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/cmd/help.rb: support RDoc 3.7. fix [Bug #3760].
+
+Wed Jun 29 22:04:14 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/tracer.rb: Tracer.on only if required by -r command-line option.
+ and consider --disable-gems option.
+ * test/test_tracer.rb: add tests for it.
+
+Wed Jun 29 13:55:36 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get_0): should not look for superclasses if
+ the second optional argument is given for #const_get().
+ fix [Bug #3422] [Bug #3423]
+
+Wed Jun 29 12:07:27 2011 Eric Hodel <drbrain@segment7.net>
+
+ * math.c: Attach documentation for Math.
+ * object.c: Document NIL, TRUE, FALSE.
+ * io.c: Improve grammar in ARGF comment. Document STDIN/OUT/ERR.
+ Document ARGF global constant.
+ * lib/rake: Hide deprecated toplevel constants from RDoc (import from
+ rake trunk).
+ * lib/thwait.rb: Document ThWait.
+ * lib/mathn.rb: Hide Math redefinition from RDoc
+ * lib/sync.rb: Add a basic comment for Sync_m, Synchronizer_m, Sync,
+ Synchronizer.
+ * parse.y: Document SCRIPT_LINES__.
+ * hash.c: Document ENV class and global constant.
+ * vm.c: Document TOPLEVEL_BINDING.
+ * version.c: Document RUBY_* constants.
+ * ruby.c: Document DATA and ARGV.
+
+Wed Jun 29 10:13:12 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Matrix.zero can build rectangular matrices.
+ Vector#r should be called #magnitude
+
+Wed Jun 29 10:11:08 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Add Matrix#diagonal?, hermitian?, normal?,
+ orthogonal?
+ permutation?, symmetric?, {lower|upper}triangular?, unitary?, zero?
+
+Wed Jun 29 10:09:35 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Specialize Matrix#find_index to return [row, col]
+ and accept the same optional argument as #each
+
+Wed Jun 29 10:07:32 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Matrix#each{_with_index} can iterate over a subset
+ of the Matrix
+
+Wed Jun 29 06:21:02 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (native_stop_timer_thread): skip to close
+ communication pipe to avoid timing bug (process termination timing).
+ The communication pipe will closed by OS.
+
+Wed Jun 29 06:09:54 2011 Koichi Sasada <ko1@atdot.net>
+
+ * error.c (rb_async_bug_errno): async-safe bug report function.
+ In timer thread, signal handler should use it.
+ The patch is contributed by Eric Wong <normalperson@yhbt.net>.
+ Refs: [ruby-core:37644] and [ruby-core:37647]
+
+ * thread_pthread.c: use rb_async_bug_errno().
+ And replace all fprintf() to write().
+
+ * internal.h (rb_async_bug_errno): add decl. of above func.
+
+Tue Jun 28 23:46:08 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/tracer.rb: count only non-internal libraries in stack trace,
+ ignoring custom_require.
+
+Tue Jun 28 21:44:58 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: recognize '\char' in ruby statement.
+
+Tue Jun 28 20:39:29 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/debug.rb (var_list): Command 'var *' did not work on 1.9(!).
+ global_variables, local_variables, and instance_variables returns
+ Symbols from 1.9 and need to stringify before evaling it.
+ See #4931.
+
+Tue Jun 28 19:23:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c: Now, USE_TRAP_SIGMASK depend on HAVE_PTHREAD_SIGMASK.
+ The code have already depended on pthread_sigmask since r27464.
+
+Tue Jun 28 15:09:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/benchmark.rb: merge eregon/benchmark.
+ https://github.com/eregon/ruby/tree/benchmark
+ patched by Benoit Daloze. [ruby-core:37593] [Bug #4940]
+
+ * lib/benchmark (Benchmark#bmbm): bmbm should be consistent with bm
+ for the return value.
+
+ * test/benchmark: remove preemptive test instead of skipping
+ I removed the preemptive test I wrote for Feature #4197.
+ I'll add it back when the implementation will be able to satisfy it.
+
+ * lib/benchmark (Benchmark#bmbm): remove useless explicit call,
+ #format is an alias of #to_s test/benchmark: add a test for
+ format of long time.
+
+ * lib/benchmark: fix label width: always add 1 to ensure there is a
+ space delimiter even with times over 100s
+ When I asked for Feature #4197, I wanted to make delimiting spaces
+ consistent for #bm and #bmbm.
+ But with times over 100s, the output contains no space between the
+ label and the first time (user).
+ Now both ensure there is always a space, even if that means 3 spaces
+ with times under 10s (because it is formatted as %10.6f)
+
+ * test/benchmark: let labels be a constant
+ lib/benchmark (Benchmark#realtime): avoid creating an unused Proc
+ lib/benchmark (Benchmark#benchmark): use ensure clause to restore
+ STDOUT.sync, as in #bmbm
+
+Tue Jun 28 13:41:51 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (native_stop_timer_thread): fixed commit miss of
+ r32244. grep sources before changing the signature of a function.
+
+Tue Jun 28 11:49:14 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (consume_communication_pipe):
+ Make "buff" as static. (Maybe) "buff" can be shared between
+ any caller (any threads) because no one use the read values.
+ "buff" (1024 byte) on stack may cause stack overflow on
+ several environment (we found a crash on FreeBSD).
+ And remove const value "buff_size", and define CCP_READ_BUFF_SIZE
+ macro.
+
+Tue Jun 28 11:45:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake: Update rake to fix some bugs and hide deprecated features
+ from RDoc.
+ * lib/rake/version.rb: Bump version to 0.9.2.1 to distinguish it from
+ the released version.
+ * NEWS: ditto
+
+Tue Jun 28 11:17:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 3.7 (final)
+ * NEWS: ditto
+
+Tue Jun 28 10:18:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c (rb_daemon): fix wrong #endif position.
+
+Tue Jun 28 07:50:32 2011 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (Init_Object): Teach RDoc what Init_class_hierarchy does to
+ hook up ri for BasicObject, Object, Module and Class.
+
+Tue Jun 28 05:03:32 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * thread.c (rb_thread_local_aref): RDoc fix. Thread#[] example
+ had a race. See #4480.
+
+Tue Jun 28 01:22:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_log): move BigMath.log from
+ bigdecimal/math.rb.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb: move test for BigMath.log from
+ test/bigdecimal/test_bigmath.rb.
+
+ * test/bigdecimal/test_bigmath.rb: ditto.
+
+Tue Jun 28 01:19:52 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: fix [Bug #4232].
+
+Tue Jun 28 00:14:13 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: fix [Bug #4409]. add DRbServer#here?.
+
+ * test/drb/test_drb.rb: ditto.
+
+ * test/drb/drbtest.rb: ditto.
+
+ * test/drb/ut_eq.rb: ditto.
+
+Tue Jun 28 00:08:43 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/workspace.rb: fix BUG#4793.
+
+Mon Jun 27 22:06:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (consume_communication_pipe): don't use C99
+ style variable length array.
+
+Mon Jun 27 22:04:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (consume_communication_pipe): change return
+ type to void. caller doesn't use it.
+
+Mon Jun 27 21:29:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.h (rb_global_vm_lock_struct): add volatile to
+ gvl->waiting. now thread_timer() access it w/o lock.
+
+Mon Jun 27 21:16:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: s/__gvl_acquire/gvl_acquire_common/ and
+ s/__gvl_release/gvl_release_common/.
+
+Mon Jun 27 11:41:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (rb_thread_create_timer_thread):
+ the type of return value of write(2) is ssize_t.
+
+Mon Jun 27 09:57:02 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (rb_thread_create_timer_thread):
+ Fixes missing initialization of oflags.
+
+Mon Jun 27 09:07:42 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c: Stop polling in the timer thread when there are
+ no waiting thread. If there are 2 or more runnable threads,
+ the timer thread does polling. Avoid polling makes power save
+ for several computers (0.2W per a Ruby process, when I measured).
+ If outside-event such as signal or Thread#kill was occurred
+ when the timer thread does not do polling, then wake-up
+ the timer thread using communication-pipe (the timer thread
+ waits this communication-pipe with select(2)).
+ The discussion about this modification can be found from the post
+ [ruby-core:33456] and other related posts.
+ Note that Eric Wong and KOSAKI Motohiro give us the huge
+ contributions for this modification. Thanks.
+
+ * thread_pthread.c (rb_thread_wakeup_timer_thread): add a function.
+ This function wakes up the timer thread using communication-pipe.
+
+ * thread.c (rb_thread_stop_timer_thread): add a parameter which
+ specify closing communication-pipe or not.
+
+ * thread.c (rb_thread_terminate_all): do not stop timer thread here
+ (ruby_cleanup() terminate timer thread).
+
+ * signal.c: wake up timer thread using
+ rb_thread_wakeup_timer_thread() from signal handler.
+
+ * eval.c (ruby_cleanup): use rb_thread_stop_timer_thread(1).
+
+ * process.c: use rb_thread_stop_timer_thread(0)
+ (reuse communication-pipe).
+
+ * thread_win32.c (rb_thread_wakeup_timer_thread): add a dummy
+ function.
+
+ * vm_core.h: add and fix decl. of functions.
+
+Mon Jun 27 08:01:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c: should use ALLOCA_N.
+
+Mon Jun 27 01:34:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/etc/test_etc.rb (TestEtc#test_get{pw,gr}nam): skip entries
+ start with + sign, which means NIS. these are returned in the
+ case that passwd and group entries in /etc/nsswitch.conf are set
+ to use "nis" explicitly on Debian. fixed #3683
+
+Mon Jun 27 00:44:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (rb_parser_end_seen_p): fix documentation about return
+ value. patched by Sho Hashimoto. [Bug #4511]
+
+Mon Jun 27 00:40:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (rb_hash_reject): add documentation that Hash#reject
+ without block returns enumerator.
+ patched by Michael Edgar [Bug #4847] [ruby-core:36800]
+
+Sun Jun 26 23:49:21 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_switch_hitter.rb: added a test.
+
+ Sun Jun 26 22:21:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: refactoring.
+
+Sun Jun 26 18:03:30 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * parse.y: comma at the end of line is no longer allowed.
+ A patch from Yukihiro Matsumoto <matz AT ruby-lang.org>.
+ (fixed #3456).
+
+Sun Jun 26 13:35:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_dump.c (rb_vm_bugreport): change CrashReporter suggestion messages
+ on Mac. It should be placed after "-- C level backtrace" line.
+ Suggested by Endoh-san.
+
+ <before>
+ -- See Crash Report log file under ~/Library/Logs/CrashReporter or ---------
+ -- /Library/Logs/CrashReporter, for the more detail of ---------------------
+ -- C level backtrace information -------------------------------------------
+
+ <after>
+ -- C level backtrace information -------------------------------------------
+
+ See Crash Report log file under ~/Library/Logs/CrashReporter or
+ /Library/Logs/CrashReporter, for the more detail of.
+
+Sun Jun 26 10:08:28 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb
+ * ext/openssl/ossl_missing.h/.c: add ASN1_put_eoc if missing.
+
+ * ext/openssl/ossl_asn1.c: introduce ossl_asn1_object_size and
+ ossl_asn1_put_object to wrap functionality depending on OpenSSL
+ version in use.
+ Fixes [ Ruby 1.9 - Bug #4916 ] reported by Hiroshi Nakamura.
+ [ruby-core:37286]
+
+Sun Jun 26 01:00:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (date_strftime_internal): removed meaningless braces.
+ * ext/date/date_core.c (gengo): the value should be int.
+
+Sat Jun 25 23:45:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * vm_insnhelper.c (vm_search_superclass): avoid control frame
+ stack overrun. currently super() in Proc created in a method
+ defined by Module#define_method raise NoMethodError. [Bug #4881]
+ * test/ruby/test_method.rb t_super_in_proc_from_define_method):
+ add test for it.
+
+Sat Jun 25 23:23:14 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread.c (sleep_forever): now Kernel#sleep don't wakeup by
+ signal handler execution. [Bug #4072]
+
+Sat Jun 25 23:14:47 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread.c (rb_threadptr_check_signal): remove unnecessary th->status
+ backup. fix race condition which may results unexpected main thread's
+ status transition. see #4072
+
+Fri Jun 24 19:57:30 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (setup_forwarded_info): Parsing request
+ header failed when the request is from 2 or more Apache reverse
+ proxies. It's said that all X-Forwarded-* headers will contain more
+ than one (comma-separated) value if the original request already
+ contained one of these headers. Since we could use these values as
+ Host header, we choose the initial(first) value. See #4922.
+
+ * test/webrick/test_httprequest.rb (test_forwarded): Test it.
+
+Fri Jun 24 17:06:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_daemon): should not start timer thread
+ twice. fixed Bug#4920.
+
+Fri Jun 24 15:54:14 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): Try to shutdown SSL
+ connection more gracefully. Call SSL_shutdown() max 4 times until it
+ returns 1 (success). Bi-directional SSL close has several states but
+ SSL_shutdown() kicks only 1 transition per call. Max 4 is from
+ mod_ssl.c of Apache httpd that says 'max 2x pending + 2x data = 4'.
+ See #4237.
+
+Fri Jun 24 07:24:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake/version.rb: Fixed VERSION to work with tool/rbinstall.rb
+ * bin/rake: Import bin/rake from 0.9.2
+ * tool/rbinstall.rb (install): Rake::VERSION is now in
+ lib/rake/version.rb. Fixes `make install`
+
+Fri Jun 24 07:11:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake: Import Rake 0.9.2
+
+Fri Jun 24 00:44:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (c_valid_{julian,gregorian}_p): fixed the range of month.
+
+Fri Jun 24 00:14:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: trivial changes on text.
+
+Thu Jun 23 22:46:57 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_x509name.c: Add X509::Name#hash_old as a wrapper
+ for X509_NAME_hash_old in OpenSSL 1.0.0. See #4805
+
+ * test/openssl/test_x509name.rb (test_hash): Make test pass with
+ OpenSSL 1.0.0.
+
+ * NEWS: Add it.
+
+Thu Jun 23 19:30:53 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_set_time): Check
+ argument type with NUM2LONG if the arg is not a Time object.
+ See #4919.
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_set_timeout): Check
+ type with NUM2LONG. Time as an arg is not allowed. See #4919.
+
+ * test/openssl/test_ssl_session.rb (test_session_time,
+ test_session_timeout): Test it.
+
+Wed Jun 23 13:30:30 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * signal.c(ruby_atomic_exchange): Fix definition style.
+
+Wed Jun 22 22:34:05 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_session_new_cb): Return 0 to
+ OpenSSL from the callback for SSL_CTX_sess_set_get_cb().
+ Returning 0 means to OpenSSL that the session is still valid
+ (since we created Ruby Session object) and was not freed by us with
+ SSL_SESSION_free(). Call SSLContext#remove_session(sess) in
+ session_get_cb block if you don't want OpenSSL to cache the session
+ internally.
+ This potential issue was pointed by Ippei Obayashi. See #4416.
+
+ * test/openssl/test_ssl_session.rb (test_ctx_server_session_cb): Test
+ it.
+
+Wed Jun 22 22:21:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl_session.c: Respect T_BIGNUM time values. Patch by
+ Tomoyuki Chikanaga.
+ [ Ruby 1.9 - Bug #4919 ] [ruby-dev:43869]
+
+Wed Jun 22 21:29:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/depend (SOCK_HEADERS): use $(top_srcdir) instead of
+ $(topdir). sorry!
+
+Wed Jun 22 19:47:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (cont_capture): add volatile.
+ On clang -O, it is needed to avoid the optimization.
+ With this and llvm/clang's recent fix, clang 3.0 can
+ build ruby-trunk with -O option.
+
+ * cont.c (cont_capture): use for-loop.
+
+ * array.c (rb_ary_each): add volatile and use it.
+
+ * vm_insnhelper.c (vm_call_cfunc): ditto.
+
+Wed Jun 22 18:20:46 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_session_remove_cb):
+ OpenSSL::SSL::SSLContext#session_remove_cb was broken. It wrongly
+ tried to call the session_*new*_cb callback.
+
+ * test/openssl/test_ssl_session.rb (class OpenSSL): Test it.
+
+Wed Jun 22 17:37:49 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl.h: Introduced OSSL_BIO_reset macro for PEM/DER
+ fallback scenarios.
+
+ * ext/openssl/ossl_pkey_dsa.c
+ * ext/openssl/ossl_x509req.c
+ * ext/openssl/ossl_pkey_rsa.c
+ * ext/openssl/ossl_pkey_ec.c
+ * ext/openssl/ossl_ssl_session.c
+ * ext/openssl/ossl_x509crl.c
+ * ext/openssl/ossl_pkey.c
+ * ext/openssl/ossl_pkey_dh.c
+ * ext/openssl/ossl_x509cert.c
+ * ext/openssl/ossl_pkcs7.c: Use OSSL_BIO_reset.
+
+ * ext/openssl/ossl_ssl.c
+ * ext/openssl/ossl_cipher.c
+ * ext/openssl/ossl_pkey_ec.c
+ * ext/openssl/ossl_pkcs12.c
+ * ext/openssl/ossl_ssl_session.c: Replace rb_raise occurrences by
+ ossl_raise. This automatically flushes OpenSSL's error queue.
+
+ * ext/openssl/ossl_pkcs7.c: Raise error if DER fallback for parsing
+ fails.
+
+ * test/openssl/test_pkey_ec.rb
+ * test/openssl/test_pkey_dsa.rb
+ * test/openssl/test_pkey_rsa.rb: Add assertions that OpenSSL.errors is
+ empty.
+
+ * test/openssl/test_pkey_rsa.rb: Remove initial OpenSSL.errors call in
+ test_new.
+ [ Ruby 1.9 - Bug #4885 ] [ruby-core:37134]
+
+Wed Jun 22 15:01:24 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Use SSL_MODE_RELEASE_BUFFERS if available.
+ Thanks, Eric Wong, for providing the patch.
+ [ Ruby 1.9 - Feature #4672 ] [ruby-core:36127]
+
+Wed Jun 22 14:47:53 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_buffering.rb
+ * test/openssl/test_pkcs12.rb: Inherit from Test::Unit::TestCase
+ instead of MiniTest::Unit::TestCase. [ruby-core:37275]
+
+Wed Jun 22 12:41:03 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_to_der):
+ OpenSSL::SSL::Session#to_der was broken. Fix buffer handling.
+
+ * test/openssl/test_ssl_session.rb (test_session): Test it.
+
+Wed Jun 22 12:38:52 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/openssl/test_ssl_session.rb: Split out SSL::Session related
+ tests from test_ssl.rb
+
+Wed Jun 22 03:20:52 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Fix cyclic references of
+ objects. Thanks to CvX for reporting the bug and a test case.
+ * test/psych/test_object.rb: test for cyclic object references.
+
+Wed Jun 22 02:39:54 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP.post_form): Do not ignore query part of
+ the given URI to post. See #655.
+
+ * test/net/http/test_http.rb, test/net/http/utils.rb: Test it.
+
+Wed Jun 22 01:28:13 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/openssl/test_x509store.rb (test_set_errors): Redhat is
+ distributing a patched version of OpenSSL that allows multiple CRL
+ for a key (multi-crl.patch.) Make test pass on such env. See #4122,
+ #4554.
+
+Tue Jun 21 21:50:37 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/webrick/httpresponse.rb (HTTPResponse#setup_header): Close
+ HTTP/1.1 connection when returning an IO object as response body
+ without setting HTTPResponse#chunked to true. See #855 no.1.
+
+ * test/webrick/test_httpserver.rb: Test it.
+
+Tue Jun 21 21:27:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * internal.h: move rb_thread_io_blocking_region() declaration
+ from intern.h to internal.h. It's still experimental API and
+ need more discussion. [ruby-dev:43698]
+ * include/ruby/intern.h: ditto.
+
+ * ext/socket/rubysocket.h: include internal.h.
+ * ext/socket/depend: add internal.h dependency.
+ * ext/socket/extconf.rb: add $INCFLAGS to topdir.
+
+Tue Jun 21 20:38:47 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (datetime_s_*): canonicalize 24 o'clock.
+
+Tue Jun 21 19:46:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb (TestThread#test_priority): enable
+ this test again. Current GVL respect thread priority rather
+ than past.
+
+Tue Jun 21 13:25:35 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (readline_getc): applied a patch in
+ #3827 by by Akio Tajima <artonx AT yahoo.co.jp>. (see #3827)
+
+Tue Jun 21 13:16:31 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: fixed bug, specify --disable-libedit
+ then disable libedit, does not specify then check readline and
+ libedit if failed checking readline. (fixes #3375)
+
+Mon Jun 20 22:52:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (before_exec): use sig_do_nothing instead of SIG_DFL
+ for avoiding a race.
+ * process.c (sig_do_nothing): new function.
+
+Mon Jun 20 21:31:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (thread_timer): rename timeout_10ms to
+ time_quantum. it's no longer 10ms.
+
+Mon Jun 20 18:46:02 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_cipher.c, ext/openssl/lib/openssl/cipher.rb:
+ Documentation fix by Ippei Obayashi. See #4419.
+
+Mon Jun 20 15:41:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/webrick/cookie.rb (WEBrick::Cookie.parse): Revert r31228.
+ r31228 was for allowing the 'Cookie:' header which did not have no
+ SP after ';' for separating cookie-pairs but RFC6265 requires single
+ SP after ';' there. We allow multiple SPs here for compatibility
+ with older WEBrick version.
+
+ * test/webrick/test_cookie.rb: Test it.
+
+Sun Jun 19 13:31:26 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * NEWS: Introduce --hide-skip on test/unit.
+
+Sun Jun 19 10:05:16 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: Override Test::Unit::TestCase#on_parallel_worker?
+ only when $0 == __FILE__.
+
+ * lib/test/unit/parallel.rb: Run Test::Unit::Worker.run only when
+ $0 == __FILE__.
+
+Sat Jun 18 23:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (fill_cbuf): finish reading at EOF, and the readconv has
+ been cleared by another thread while io_fillbuf() is waiting at
+ select(). a patch in [ruby-core:37197] by Hiroshi Shirosaki
+ <h.shirosaki AT gmail.com>. fixed #3840
+
+Sat Jun 18 21:36:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: remove GVL_DEBUG
+
+Sat Jun 18 21:32:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm.c, vm_core.h (rb_vm_stack_to_heap): remove const.
+ It makes compilations warnings.
+
+Sat Jun 18 18:54:15 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_core.h (rb_vm_stack_to_heap): fix "const" place.
+
+Sat Jun 18 17:23:38 2011 Tanaka Akira <akr@fsij.org>
+
+ * eval.c, hash.c, load.c, proc.c, range.c, thread.c, time.c: don't
+ declare internal functions.
+
+ * internal.h, vm_core.h: declare internal functions.
+
+ * array.c: include internal.h.
+
+ * common.mk: update dependency for array.o.
+
+Sat Jun 18 13:39:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * internal.h: declarations declared in include/ruby/*.h removed.
+
+Sat Jun 18 12:42:17 2011 Tanaka Akira <akr@fsij.org>
+
+ * method.h, internal.h iseq.h: declare internal functions.
+
+ * compile.c, eval.c, iseq.c, object.c, parse.y, proc.c, process.c,
+ thread.c, vm.c, vm_eval.c, vm_insnhelper.c, vm_method.c: don't
+ declare internal functions.
+
+ Note that rb_method_entry_eq() is defined in vm_method.c but
+ there was a declaration in proc.c with different const-ness.
+ Now it is declared in method.h with same const-ness to the
+ definition.
+
+ * object.c (rb_mod_module_exec): don't declare functions declared in
+ include/ruby/intern.h.
+
+Sat Jun 18 12:05:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/backward/classext.h: for evil gems. fixed #4803
+
+Sat Jun 18 11:12:13 2011 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: update dependencies.
+
+Sat Jun 18 11:09:03 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c: suppress warnings.
+
+Sat Jun 18 10:22:39 2011 Tanaka Akira <akr@fsij.org>
+
+ * internal.h: declare more internal functions.
+
+ * iseq.h (rb_method_get_iseq): declared.
+
+ * compile.c, eval.c, eval_error.c, iseq.c, parse.y, proc.c, range.c,
+ ruby.c, time.c, util.c, vm.c: don't declare internal functions.
+
+ * eval.c, parse.y, thread_pthread.c: non-existing function declarations
+ removed.
+
+Sat Jun 18 08:12:54 2011 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: dependencies updated.
+
+ * tool/update-deps: new file to assist update dependencies in
+ common.mk.
+
+Sat Jun 18 07:27:27 2011 Tanaka Akira <akr@fsij.org>
+
+ * internal.h: declare internal functions here.
+
+ * node.h: declare NODE dependent internal functions here.
+
+ * iseq.h: declare rb_iseq_t dependent internal functions here.
+
+ * vm_core.h: declare rb_thread_t dependent internal functions here.
+
+ * bignum.c, class.c, compile.c, complex.c, cont.c, dir.c, encoding.c,
+ enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c, io.c,
+ iseq.c, load.c, marshal.c, math.c, numeric.c, object.c, parse.y,
+ proc.c, process.c, range.c, rational.c, re.c, ruby.c, string.c,
+ thread.c, time.c, transcode.c, variable.c, vm.c,
+ tool/compile_prelude.rb: don't declare internal functions declared
+ in above headers. include above headers if required.
+
+ Note that rb_thread_mark() was declared as
+ void rb_thread_mark(rb_thread_t *th) in cont.c but defined as
+ void rb_thread_mark(void *ptr) in vm.c. Now it is declared as
+ the later in internal.h.
+
+Sat Jun 18 02:36:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpNewRbClass): fix type of the 2nd
+ argument.
+
+ * ext/bigdecimal/bigdecimal.h: ditto.
+
+Sat Jun 18 02:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): move BigMath.exp from
+ bigdecimal/math.rb.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb: move test for BigMath.exp from
+ test/bigdecimal/test_bigmath.rb.
+
+ * test/bigdecimal/test_bigmath.rb: ditto.
+
+Sat Jun 18 00:20:54 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: do not define wnum[01].
+
+Fri Jun 17 18:57:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): fix return value of obj[a,*b]=c.
+
+Fri Jun 17 13:09:45 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c: Clean up documentation.
+
+Fri Jun 17 09:25:14 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c: Document curses constants. Patch by Vincent
+ Batts. [Ruby 1.9 - Bug #4880]
+
+Fri Jun 17 09:11:05 2011 Eric Hodel <drbrain@segment7.net>
+
+ * object.c: Document Module#method_added and #method_removed.
+ Patch by Bryce Kerley. [Ruby 1.9 - Feature #4867]
+
+Fri Jun 17 08:50:16 2011 Eric Hodel <drbrain@segment7.net>
+
+ * io.c: Improve documentation of IO and File open and new.
+ Patch by Roger Pack. [Ruby 1.9 - Bug #4790]
+
+Fri Jun 17 07:53:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/csv.rb: Document #raw_encoding. Patch by David Czarnecki.
+ [Ruby 1.9 - Bug #4874]
+
+Fri Jun 17 07:46:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/benchmark.rb: Document Benchmark::Tms#memberwise. Patch by
+ David Czarnecki. [Ruby 1.9 - Bug #4873]
+
+Fri Jun 17 07:38:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/prettyprint.rb: Improve documentation. Patch by Ysiad
+ Ferreiras. [#4834]
+
+Fri Jun 17 07:23:03 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_drop): Improve documentation. Patch by Caley Woods.
+ [Ruby 1.9 - Bug #4858]
+
+Fri Jun 17 06:11:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/log.rb: Improve documentation of BasicLog and Log.
+ Patch by Olivier Brisse. [Ruby 1.9 - Bug #4833]
+ * lib/webrick/httpstatus.rb: Improve documentation of
+ WEBrick::HTTPStatus. Patch by Olivier Brisse.
+ [Ruby 1.9 - Bug #4833]
+
+Fri Jun 17 04:48:22 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c, thread_pthread.h: remove unused variables.
+ (native_thread_data_t::gvl_cond, native_thread_data_t::gvl_next)
+
+Thu Jun 16 14:32:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * time.c (rb_time_new): prevent overflow by "* 1000".
+
+Fri Jun 17 03:07:36 2011 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm4_thread_create_join.rb,
+ benchmark/bm_vm4_thread_mutex[1-3].rb: renamed to
+ bm_thread_* (fix last rename).
+
+Fri Jun 17 02:26:47 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (native_thread_create): fix debug message.
+ (add last newline)
+
+Thu Jun 16 23:40:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_schedule_rec): fix {UN,}LIKELY macro misuse.
+ * gc.c (rb_newobj): ditto.
+ * vm_insnhelper.c (vm_method_search): ditto.
+
+Thu Jun 16 20:06:15 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb: Fix Regexp for test.
+
+ * test/testunit/tests_for_parallel/test_third.rb: Use
+ Test::Unit::TestCase#on_parallel_worker? for detecting worker.
+
+ * lib/test/unit/testcase.rb(Test::Unit::TestCase#on_parallel_worker?):
+ New Method Test::Unit::TestCase#on_parallel_worker? returns true
+ when a testcase is running on parallel worker.
+ * lib/test/unit/parallel.rb(Test::Unit::TestCase#on_parallel_worker?):
+ ditto.
+
+Thu Jun 16 19:27:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/test_securerandom.rb: Add testcase. This testcase does NOT aim
+ to test cryptographically strongness and randomness. It includes
+ the test for PID recycle issue of OpenSSL described in #4579 but
+ it's disabled by default.
+
+Thu Jun 16 17:55:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (TestIO#test_copy_stream_socket): fix
+ test hanging up issue. Patch by CHIKANAGA Tomoyuki.
+
+Thu Jun 16 15:17:39 2011 Eric Hodel <drbrain@segment7.net>
+
+ * variable.c (const_missing): Add simple example of const_missing.
+ Patch by Anuj Dutta. [Ruby 1.9 - Bug #4794]
+
+Thu Jun 16 15:09:29 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/monitor.rb: Improve documentation. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4823]
+
+Thu Jun 16 14:54:09 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/utils.rb: Document WEBrick::Utils. Patch by Olivier
+ Brisse. [Ruby 1.9 - Bug #4819]
+
+Thu Jun 16 14:26:46 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/httpservlet/erbhandler.rb: Allow the ERB document to
+ alter the content-type of the response. [Ruby 1.9 - Bug #4685]
+
+Thu Jun 16 14:15:47 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/timeout.rb: Clarify timeout duration types. Patch by Alf Mikula.
+ [Ruby 1.9 - Bug #4791]
+ * lib/net/http.rb: ditto
+
+Thu Jun 16 13:25:25 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Import RDoc 3.7 release candidate
+
+Thu Jun 16 11:35:09 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (search_response): parses SEARCH responses from
+ the Yahoo IMAP server correctly. patched by Mark Nadig. [Bug #4509]
+
+Thu Jun 16 09:12:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * fix for build on solaris 10.
+
+Thu Jun 16 09:08:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/io/console/test_io_console.rb (TestIO_Console#test_sync):
+ fix for daemon process.
+
+Thu Jun 16 07:58:01 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb(test_ignore_tzero): Test for r32109.
+
+ * test/testunit/tests_for_parallel/test_third.rb: Use another way to
+ detect that test is running on worker. This fixes sometimes
+ TestParallel failing.
+
+Thu Jun 16 07:20:06 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb(Test::Unit::Runner#_run_parallel): Ignore -j0
+ because it makes blocking forever by IO.select.
+
+Thu Jun 16 03:08:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/testunit/test_parallel.rb (TestParallel::TestParallelWorker#
+ setup): now can run on Windows, probably.
+
+ * test/testunit/test_parallel.rb (TestParallel::TestParallel#setup):
+ ditto.
+
+Thu Jun 16 03:00:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (do_select): Windows: no need to poll if select(2) is
+ cancelable.
+
+ * thread_win32.c (native_fd_select): new function to make select(2)
+ cancelable.
+
+ * thread_win32.c (rb_w32_check_interrupt): new function for checking
+ interrupt.
+
+ * win32/win32.c (rb_w32_select_with_thread): new function. cancelable
+ select(2).
+
+ * win32/win32.c (rb_w32_select): use above function internally.
+
+Wed Jun 15 23:30:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * gc.c: fix a regression by r31690 on AIX because AIX malloc
+ return NULL if it's passed 0. But some caller don't expect it.
+ patch by Yutaka Kanemoto. [ruby-dev:43779]
+ (vm_malloc_prepare): return calculated size.
+ (vm_xmalloc): use above result.
+ (vm_xcalloc): ditto.
+
+Wed Jun 15 23:11:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c: remove BLOCKING_REGION_CORE() macro. It's no longer used
+ since r32022.
+
+Wed Jun 15 21:00:47 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_config.rb: execute based on the existence of the
+ OpenSSL module.
+
+Wed Jun 15 12:35:11 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb (test_copy_stream_socket): wait a child process
+ before SIGUSR1 handler is removed.
+
+ * test/pathname/test_pathname.rb (define_assertion): use line number
+ for test method names.
+
+Wed Jun 15 10:37:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (rb_stat_rdev): use DEVT2NUM.
+
+ * file.c (rb_stat_rdev_major): ditto.
+
+ * file.c (rb_stat_rdev_minor): ditto.
+
+Wed Jun 15 05:12:59 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (lib_eventloop_core): revert the last change (it's
+ the part for ruby_1_8), and use rb_thread_check_ints() when RUBY_VM
+ is defined.
+
+Wed Jun 15 04:42:47 2011 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm3_thread_*.rb: renamed bm_vm3_thread_*.rb to
+ benchmark/bm_vm_thread_*.rb.
+
+Wed Jun 15 04:28:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_vm4_thread_pass.rb: rename bm_vm4* to
+ bm_vm_thread_*. suggested by ko1.
+ * benchmark/bm_vm4_pipe.rb: ditto.
+ * benchmark/bm_vm4_alive_check1.rb: ditto.
+ * benchmark/bm_vm4_pass_flood.rb: ditto.
+
+Wed Jun 15 03:52:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_vm4_pass_flood.rb: new benchmark for GVL fairness.
+ * benchmark/bm_vm4_alive_check1.rb: ditto.
+
+Wed Jun 15 01:27:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (gvl_yield): fix live lock issue on 1-2 cpus
+ system. It's additional fix for r32021.
+ * thread_pthread.c (gvl_init): add switch_wait_cond.
+ * thread_pthread.h (typedef struct rb_global_vm_lock_struct): ditto.
+
+Tue Jun 14 23:16:22 2011 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (show_progress): refine verbose mode.
+ (exec_test): ditto.
+
+Tue Jun 14 23:02:36 2011 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (show_progress): extracted from assert_check.
+ (assert_check): use show_progress.
+ (assert_normal_exit): ditto.
+ (assert_finish): ditto.
+ (flunk): ditto.
+
+Tue Jun 14 22:51:42 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_*.rb: added tests.
+
+Tue Jun 14 22:09:58 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: renamed some functions.
+ * ext/date/date_core.c: modified doc.
+
+Tue Jun 14 21:26:01 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (cont_save_thread): add new utility function.
+ rb_context_t::saved_thread.machine_stack_start and
+ machine_stack_end should be cleared immediately after a snapshot of
+ current thread is stored to saved_thread. [ruby-dev:43680] [Bug #4855]
+ this change aims to get rid of unnecessary GC mark at machine stack.
+
+Tue Jun 14 19:50:49 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_autoload.rb: remove temporary directory.
+
+Tue Jun 14 11:05:03 2011 Narihiro Nakamura <narihiro@netlab.jp>
+
+ * gc.c (rb_gc_set_params): call initial_expand_heap if
+ initial_heap_min_slots is set.
+
+Tue Jun 14 11:02:08 2011 Narihiro Nakamura <narihiro@netlab.jp>
+
+ * gc.c: use size_t.
+
+Tue Jun 14 01:10:38 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/coverage/test_coverage.rb: add a test for restart. a patch
+ from Xavier Shay. [ruby-core:36745]
+
+Tue Jun 14 01:05:10 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/coverage/coverage.c: make it restartable. [ruby-core:36539]
+
+Mon Jun 13 23:55:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_schedule_rec): call gvl_yield() unconditionally.
+ * thread_pthread.c: remove HAVE_GVL_YIELD macro.
+ * thread_win32.c (gvl_yield): new. this fallback logic was moved from
+ rb_thread_schedule_rec().
+
+Mon Jun 13 23:50:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/io/console/console.c (console_dev): typo.
+
+Mon Jun 13 23:38:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_parse_string): flush delayed token. based on a
+ patch by Masaya Tarui in [ruby-dev:43762]. Bug #4544
+
+ * parse.y (yylex): revert r24557. delayed token at the end of
+ string should be flushed already by the above change.
+
+Mon Jun 13 23:33:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_dev): console should be
+ unbuffered.
+
+ * ext/io/console/console.c (console_dev): take care of no-ctty
+ case.
+
+Mon Jun 13 23:06:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: rewrite GVL completely. This fix improve some
+ benchmark dramatically (e.g. vm3_thread_mutex result changed
+ form 120.601sec to 3.426sec).
+ * thread_win32.c: ditto.
+ * thread_pthread.h: ditto.
+ * vm_core.h: ditto.
+ * thread.c: ditto.
+
+Mon Jun 13 23:11:52 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_unix.rb: don't use Thread.abort_on_exception.
+
+Mon Jun 13 23:05:01 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/unixsocket.c (unix_send_io): race condition fixed.
+ (unix_recv_io): ditto.
+ fixed by Eric Wong. [ruby-core:35574]
+
+ * test/socket/test_unix.rb: test added for above problem.
+
+Mon Jun 13 21:41:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_win32.c (native_cond_signal): remove unnecessary rb_bug().
+ It's additional fix for r32021. [Bug #4696]
+
+Mon Jun 13 20:50:49 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ec.rb
+ test/openssl/test_pkey_ec.rb: merge both files into test_pkey_ec.rb.
+ Removed redundant group instantiation from PKey tests.
+ * test/openssl/utils.rb: only create TEST_PKEY_EC_P256V1 if EC is
+ defined.
+
+Mon Jun 13 20:28:24 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/digest.rb: remove MDC2 from test, it is not available
+ by default in an OpenSSL installation.
+
+Mon Jun 13 20:18:55 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, vm_insnhelper.h: move decl. of
+ ruby_vm_global_state_version and related macros
+ from vm_core.h to vm_insnhelper.h.
+
+ * vm.c (vm_clear_all_cache): added. This function is called
+ when ruby_vm_global_state_version overflows.
+ TODO: vm_clear_all_inline_method_cache() is only place holder.
+ We need to implement it ASAP.
+
+ * vm_method.c (vm_clear_global_method_cache): added.
+
+Mon Jun 13 19:46:21 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/cmath.rb: add new method Object#real?. fix #3137
+
+Mon Jun 13 18:52:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (is_kind_of_BigDecimal): new function to
+ examine the whether the object is kind of BigDecimal.
+
+Mon Jun 13 18:49:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): use GetVpValueWithPrec
+ for Float and Rational arguments.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_new, test_cmp, test_power):
+ add and modify tests for the above change.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): modify coding style to
+ match ruby's standard.
+
+Mon Jun 13 18:33:04 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (SecureRandom.random_bytes): modify PRNG state
+ to prevent random number sequence repetition at forked child
+ process which has same pid.
+ reported by Eric Wong. [ruby-core:35765]
+
+Mon Jun 13 17:02:34 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#use_ssl?): require 'openssl' only when
+ https is needed. fixes r31933.
+
+Mon Jun 13 14:35:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * lib/cmath.rb (CMath.cbrt): returns the principal value of the cube
+ root of the argument. fix #3676
+
+ * test/test_cmath.rb (test_cbrt_returns_principal_value_of_cube_root):
+ test for the above change.
+
+Mon Jun 13 14:17:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * lib/test/unit.rb (Test::Unit::GlobOption#non_options): fix typo.
+
+Mon Jun 13 13:04:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c: fix error for digests that have no oid
+ (e.g. DSS1).
+ * test/openssl/test_digest.c: add tests for this.
+
+Mon Jun 13 12:51:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/yaml.rb: load psych only when syck is not loaded.
+
+Mon Jun 13 12:23:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+Mon Jun 13 12:23:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/psych/lib/psych/deprecated.rb (Object#to_yaml_properties):
+ undef to_yaml_properties before redefine it.
+
+ * ext/syck/lib/syck/rubytypes.rb: ditto.
+
+Mon Jun 13 11:30:10 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c: allow Digests to be created by sn, ln or
+ oid.
+ * test/openssl/test_digest.rb: add tests for this.
+ [Ruby 1.9 - Feature #4412] [ruby-core:35319]
+
+Mon Jun 13 10:54:03 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/pkey_dh.c: corrected documentation.
+ * test/openssl/utils.rb: add test key for DH.
+ * test/openssl/test_pkey_dh.rb: add tests.
+
+Mon Jun 13 10:13:08 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/pkey_dh.c: clarify difference between DH#public_key and
+ DH#pub_key in documentation.
+
+Mon Jun 13 05:50:43 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: introduce PKey.read.
+
+Mon Jun 13 05:17:29 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey.c: added PKey.read module function that allows
+ reading arbitrary public/private keys from DER-/PEM-encoded File or
+ string instances.
+ * ext/openssl/ossl_pkey_dh.c: improved documentation.
+ * test/openssl/utils.rb: added EC test key.
+ * test/openssl/test_pkey_rsa.rb
+ test/openssl/test_pkey_dsa.rb: Test PKey.read. Reuse keys from
+ OpenSSL::TestUtils.
+ * test/openssl/test_pkey_ec.rb: Created test file for EC tests.
+ Test PKey.read.
+ [Ruby 1.9 - Feature #4424] [ruby-core:35330]
+
+Mon Jun 13 04:42:24 2011 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (total_i): fix to skip no ruby objects.
+
+Mon Jun 13 03:07:38 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/benchmark/test_benchmark.rb (capture_output):
+ replace '-' as space. On NetBSD, subtract between two Process.times
+ after and before the short process may return negative value like:
+ t0=Process.times; yield; t1=Process.times; p t1.utime-t0.utime
+
+Mon Jun 13 02:40:23 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_dsa.rb: Test for DSA#syssign/sysverify.
+
+Mon Jun 13 01:59:19 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_dh.c: completed documentation.
+ * ext/openssl/ossl_pkey_dsa.c: corrected examples. Improved parameter
+ sections.
+
+Mon Jun 13 00:25:10 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_dsa.c: completed documentation.
+
+Sun Jun 12 23:36:46 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (kill_sub_thread): remove the method. [ruby-core:34185]
+
+Sun Jun 12 21:01:56 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (d_lite_marshal_load): should give converted value.
+
+Sun Jun 12 20:36:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: edited doc.
+
+Sun Jun 12 18:12:07 2011 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm3_clearmethodcache.rb: added.
+
+Sun Jun 12 17:40:29 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c (rb_clear_cache*): update only vm state version.
+
+ * vm_method.c (rb_method_entry_get_without_cache, rb_method_entry):
+ Fill method cache entry with vm state version, and
+ check current vm state version for method (cache) look up.
+ This modification speed-up invalidating of global method cache table.
+ [Ruby 1.9 - Feature #3905] [ruby-core:36908]
+
+Sun Jun 12 16:19:48 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: fail on Mac OS X. [Bug #4853][ruby-dev:43655]
+
+Sun Jun 12 15:56:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c: remove th->transition_for_lock. It's thread unsafe.
+ [Bug #4723][ruby-dev:43563]
+
+Sun Jun 12 15:47:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c: introduce spurious wakeup safe deadlock check.
+ [Bug #4696][ruby-dev:43554]
+
+Sun Jun 12 13:33:52 2011 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm3_thread_mutex.rb: remove it.
+
+ * benchmark/bm_vm3_thread_mutex[1-3].rb: added 3 benchmarks.
+ 1: one thread with one mutex (no contention).
+ 2: two threads with one mutex (contention).
+ 3: 1000 threads with one mutex (huge number of contention)
+ Above removed benchmark was type 3.
+ Therefore, this commit adds type 1 and 2 benchmark.
+
+Sun Jun 12 11:16:59 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c: use select() appropriately for sendfile().
+ Fixed by Eric Wong. [ruby-core:36150]
+ (maygvl_copy_stream_wait_readwrite): removed.
+ (nogvl_copy_stream_sendfile): use nogvl_copy_stream_wait_write and
+ maygvl_copy_stream_wait_read instead of
+ maygvl_copy_stream_wait_readwrite.
+
+Sun Jun 12 09:32:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * atomic.h (ATOMIC_OR): _InterlockedOr is not available on mingw.h
+ * gc.c (rb_gc_set_params): VM_OBJSPACE is disabled on mingw.
+
+Sun Jun 12 01:07:09 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: edited doc.
+
+Sat Jun 11 23:18:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (RUBY_VM_SET_TIMER_INTERRUPT, RUBY_VM_SET_INTERRUPT,
+ RUBY_VM_SET_FINALIZER_INTERRUPT): use atomic ops for preventing
+ interrupt_flag bit lost. [Bug #4770][ruby-dev:43467]
+ * thread.c (rb_threadptr_execute_interrupts_rec): ditto.
+ * vm_core.h (typedef struct rb_thread_struct): change type of
+ interrupt_flag to rb_atomic_t.
+ * atomic.h: move atomic ops definition from signal.c.
+ * signal.c: remove atomic ops definition.
+ * common.mk (gc, signal, thread, cont): add to dependency to atomic.h.
+
+Sat Jun 11 23:23:52 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: edited doc.
+
+Sat Jun 11 23:02:36 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (module OpenSSL):
+ Buffering#each_byte should return String in accordance with IO in
+ 1.9.
+
+ * test/openssl/test_buffering.rb (class OpenSSL): add tests for getc
+ and each_byte.
+
+Sat Jun 11 22:41:37 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * time.c: a correction of doc for strftime (%v).
+
+Sat Jun 11 22:30:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: replaced doc for strftime based on Time's one.
+
+Sat Jun 11 22:07:56 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (datetime_s_{iso8601,rfc3339,xmlschema,rfc2822,httpdate}):
+ do not take argument comp.
+
+Sat Jun 11 21:58:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: added examples.
+
+Sat Jun 11 19:40:45 2011 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: expand heap if initial_heap_min_slots is bigger than
+ HEAP_MIN_SLOTS.
+
+Sat Jun 11 19:42:50 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ChangeLog (vim): set shiftwidth to 2.
+
+Sat Jun 11 19:27:06 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_x509req.c: raise RequestError instead of
+ CertificateError when Request#to_der gets an error from OpenSSL.
+ Patch from Ippei Obayashi, see #4420. I cannot write a test for
+ this... Request does not allow to create broken bytes...
+
+Sat Jun 11 19:34:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (Date::(ABBR_)?(MONTH|DAY)NAMES): should be usascii.
+
+Sat Jun 11 19:24:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: rewrote doc.
+
+Sat Jun 11 19:04:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::GlobOption#non_options): should run
+ with 1.8.
+
+Sat Jun 11 18:05:57 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * bootstraptest/runner.rb: should initialize $stress to avoid warnings.
+
+Sat Jun 11 18:02:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_getc): should be 7bit if ascii. fixes #4557
+
+Sat Jun 11 16:52:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (rb_enc_uint_chr): fix message format. Bug#4869
+
+Sat Jun 11 16:28:25 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/formatters/pretty.rb
+ (REXML::Formatters::Pretty#write_text),
+ test/rexml/test_core.rb
+ (Tester#test_pretty_format_long_text_finite): don't ignore
+ 'width' parameter in pretty formatter. fixes #4498
+ Reported by Michael Frasca. Thanks!!!
+
+Sat Jun 11 16:11:36 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_core.rb
+ (Tester#test_pretty_format_long_text_finite): remove needless
+ assert_nothing_raised.
+
+Sat Jun 11 16:04:03 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/xpathparser.rb
+ (REXML::Parsers::XPathParser#parse),
+ test/rexml/test_elements.rb
+ (ElementsTester#test_each_with_frozen_condition):
+ don't modify original XPath. fixes #4161
+ Reported by Pavel Shved. Thanks!!!
+
+Sat Jun 11 15:53:27 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_elements.rb (ElementsTester): remove needless
+ prefix from test name.
+
+Sat Jun 11 15:36:36 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
+ * common.mk: fixed a grammatical error
+
+Sat Jun 11 14:20:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm.c (thread_memsize): don't ignore size of th->local_storage.
+
+Sat Jun 11 10:32:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: should quote arch_hdrdir and libpath for the case
+ installed prefix contains spaces.
+
+Sat Jun 11 10:20:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (native_cond_timeout): wrap conditionally used
+ label.
+
+ * thread_pthread.c (native_sleep): remove unused variable.
+
+Sat Jun 11 10:15:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (rb_thread_execute_interrupts): use GetThreadPtr to extract
+ rb_thread_t from VALUE.
+ reported by Motohiro KOSAKI. [ruby-dev:43700]
+
+Sat Jun 11 10:00:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_process_options): add missing return type.
+
+Fri Jun 10 23:18:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/tk/tcltklib.c (lib_eventloop_core): replace CHECK_INTS with
+ rb_thread_check_ints(). Because current code can't be compiled.
+
+Fri Jun 10 16:38:13 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): When ruby process is run as Windows
+ Service the console codepage is not set, GetConsoleCP returns 0.
+ So on such environment, use GetACP().
+ http://blogs.msdn.com/b/michkap/archive/2005/02/08/369197.aspx
+ patched by Rafal Bigaj [ruby-core:36832] [Bug #4854]
+
+Fri Jun 10 14:34:24 2011 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: restore TESTRUN_SCRIPT to "$(srcdir)/test.rb".
+ TESTRUN_SCRIPT is used by "make run", "make gdb" and so on.
+
+Fri Jun 10 13:01:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_module.rb (TestModule#remove_rake_mixins): remove all
+ module related to Rake.
+
+Fri Jun 10 09:52:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * encoding.c: Mention that Encoding.compatible? can work with more
+ than just Strings.
+
+Fri Jun 10 02:25:53 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: updating version to match released gem.
+
+Fri Jun 10 01:06:29 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/bigdecimal (BigDecimal_to_i): Integer#** may return flonum.
+
+Fri Jun 10 00:35:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (string_to_c_internal): uses rb_reg_nth_match;
+ * rational.c (string_to_r_internal): ditto.
+
+Fri Jun 10 00:25:03 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c: remove an unused declaration.
+
+Fri Jun 10 00:24:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (string_to_r): Rational#** may return flonum.
+
+Thu Jun 9 23:57:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c: fix IO.copy_stream interrupt handling.
+ based on the patch by Eric Wong. [ruby-core:36156]
+
+ * vm_core.h (rb_thread_call_with_gvl): don't declare here.
+
+ * thread.c: include internal.h.
+ (rb_thread_execute_interrupts): new function.
+
+ * internal.h (rb_thread_execute_interrupts): declared.
+ (rb_thread_call_with_gvl): declared.
+
+Thu Jun 9 23:34:01 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (rb_objspace_call_finalizer): use rb_typeddata_is_kind_of() for
+ type check to get rid of a double free when main Thread has singleton
+ class. [ruby-core:36741] [Bug #4828]
+ * thread.c (rb_obj_is_mutex): add a new utility function.
+ * vm.c (rb_obj_is_thread): ditto.
+
+Thu Jun 9 22:53:49 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_thread.rb (TestThread#test_kill_thread_subclass):
+ add test for Thread.kill with Thread subclass instance.
+
+Thu Jun 9 22:31:47 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_thread.rb (TestThread#test_kill_wrong_argument):
+ test for [ruby-core:35086].
+ partially forward porting r31402 from ruby_1_9_2 branch.
+
+Thu Jun 9 18:36:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * string.c: Fix the ambiguous description of the behavior of
+ rb_str_aref_m with a range. It returns nil when the beginning of
+ the range is greater than the end of the string rather than the range.
+
+Thu Jun 9 10:57:03 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Hash subclasses can be read
+ from YAML files.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Hash subclasses can be
+ dumped to YAML files.
+ * test/psych/test_hash.rb: corresponding test.
+
+Thu Jun 9 09:18:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Ruby modules can be loaded
+ from YAML files.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Ruby modules can be
+ dumped to YAML files.
+ * test/psych/test_class.rb: corresponding test.
+
+Thu Jun 9 09:05:04 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Ruby classes can be loaded
+ from YAML files.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Ruby classes can be
+ dumped to YAML files.
+ * test/psych/test_class.rb: corresponding test.
+
+Wed Jun 8 21:38:57 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (root_fiber_alloc): set root fiber's status RUNNING.
+ in cont_mark() only RUNNING fiber's machine stack is marked.
+ root fiber's status should be RUNNING at the beginning regardless of
+ FIBER_USE_NATIVE. [ruby-core:36735] fixes #4827
+
+Tue Jun 7 20:50:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * doc/irb/irb.rd: fix typo. patch by Nobuhiro IMAI.
+ [Bug #4843] [ruby-dev:43639]
+ * doc/irb/irb.rd.ja: ditto.
+ * doc/ChangeLog-YARV: ditto.
+
+Tue Jun 7 18:52:55 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/user_interaction.rb (Gem::StreamUI#tty?): IO#tty? of
+ Windows has been fixed at r29969.
+
+ * test/rubygems/test_gem_stream_ui.rb: now can run tests.
+
+Tue Jun 7 18:36:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem.rb (TestGem#{test_self_user_home_userprofile,
+ test_self_user_home_user_drive_and_path}): should simply ignore
+ meaningless tests instead of skipping them.
+
+Tue Jun 7 18:15:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ should show some messages when skipping tests.
+
+Tue Jun 7 13:59:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/date/date_core.c (date_s_today, datetime_s_now): check the
+ result of localtime_r().
+
+Tue Jun 7 13:36:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/extconf.rb: use $defs not $CPPFLAGS to get rid of
+ command line escape issues on Windows. fixed #4835.
+
+Tue Jun 7 03:18:45 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_io.rb (TestIO#test_s_{,bin}write): do not create a
+ file under /tmp. [Bug #4846]
+
+Mon Jun 6 22:51:43 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c: use #if FIBER_USE_NATIVE instead of #ifdef.
+ you can suppress use of setcontext for Fiber with compile option
+ -DFIBER_USE_NATIVE=0
+
+Mon Jun 6 21:59:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_switch_hitter.rb: added a test.
+
+Mon Jun 6 21:37:45 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: added notes.
+
+Mon Jun 6 21:02:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: flattened format to strftimev.
+ * ext/date/date_core.c (date_strftime_internal): taints run.
+
+Mon Jun 6 15:10:17 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/{defines,missing}.h (rb_infinity, rb_nan): move from
+ defines.h to missing.h. (couldn't use RUBY_EXTERN there.)
+
+Mon Jun 6 14:35:48 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_markup_pre_process.rb (TestRDocMarkupPreProcess#
+ {test_include_file,test_include_file_encoding_incompatible}): no
+ need to write such workaround. don't hide the bug of ruby. (and the
+ bug is already fixed.)
+
+Mon Jun 6 14:11:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/date/date_core.c (valid_jd_sub): need to convert from VALUE to
+ double.
+
+ * ext/date/date_core.c (offset_to_sec): get rid of a compiler warning.
+
+Mon Jun 6 14:09:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/defines.h (rb_infinity, rb_nan): export for Windows.
+
+Mon Jun 6 10:54:45 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb(Test::Unit::Runner#puke):
+ Add overriding from MiniTest::Unit#puke. This reverts minitest's fix
+ that skip messages are hidden when not verbose mode (-v option).
+ To hide skip messages, use --hide-skip option instead.
+
+Mon Jun 6 10:52:13 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: don't use autoload.
+
+Mon Jun 6 09:39:43 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): release event objects to plug memory
+ leak. Thanks Mark J. Titorenko!
+
+Sun Jun 5 23:26:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * eval.c: remove rb_thread_stop_timer_thread function declaration.
+ Instead, include vm_core.h.
+ * process.c: ditto.
+
+Sun Jun 5 21:38:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (thread_timer): add to care a spurious wakeup.
+ When native_cond_timedwait() return 0 by spurious wakeup, we
+ don't have to neither 1) call timer_thread_function and 2)
+ exit the timer thread.
+
+Sun Jun 5 17:50:01 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (m_real_cwyear): new. derived from m_cwyear.
+ * ext/date/date_strftime.c: trivial changes.
+
+Sun Jun 5 17:22:01 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/config_list.in: add new options for tcltklib.
+
+Sun Jun 5 10:06:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_tmx.h: now does not place decoded data. allows to
+ access indirectly via functions on demand.
+ * ext/date/date_strftime.c: ditto.
+ * ext/date/date_core.c: ditto.
+ * ext/date/date_core.c ({d|dt}_lite_to_s): use strftime.
+
+Sun Jun 5 06:22:02 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * NEWS: wrote about changes of date.
+
+Sat Jun 4 16:59:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (d_lite_inspect): changed the format.
+ * ext/date/date_core.c: refactoring and fixing some bugs.
+
+Sat Jun 4 11:30:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (check_mix_method_i, do_mix_method_i): not mix methods
+ renamed as nil.
+
+Sat Jun 4 04:04:41 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rubygems/test_gem_commands_which_command.rb:
+ "missing" exists on ruby's top source directory. [Bug #4815]
+
+Fri Jun 3 21:48:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/test_case.rb: Refix for test-all in separate directory.
+ r31147 + r31151.
+
+Fri Jun 3 20:58:47 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/date/date_core.c (d_lite_plus): get rid of compiler warnings.
+
+Fri Jun 3 20:56:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/missing.h, numeric.c (round): moved prototype of round()
+ from numeric.c to missing.h. (note: round() is C99 feature, so ruby
+ provides it if not exist in C runtime.)
+
+Fri Jun 3 20:42:04 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: Keep $stdin, $stdout before run testcase
+ and restore after run. Because some test break $stdin, $stdout.
+ Fixes [Bug #4433] [ruby-core:35353]
+
+Fri Jun 3 19:58:14 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_fflush): windows -- call fsync() only when the FD is tied to
+ file, because if the FD is pipe, it blocks.
+
+Fri Jun 3 09:27:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (URI::HTTP#request_uri): return nil when the uri
+ is path-rootless form. Bug #4759
+
+Thu Jun 2 23:51:03 2011 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Improve the line ending detection algorithm
+ patch by Alexey).
+
+Thu Jun 2 20:05:57 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_s_write, rb_io_s_binwrite): return!!!
+
+Thu Jun 2 16:29:34 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * io.c: Add File.write, File.binwrite. [Feature #1081] [ruby-core:21701]
+
+ * test/ruby/test_io.rb: Test for File.write, File.binwrite.
+
+ * NEWS: News for above.
+
+Thu Jun 2 12:33:09 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_fflush, rb_io_flush): need to fsync() when ruby calls
+ internal flush. [ruby-core:36670] [Bug #4813]
+
+Thu Jun 2 07:56:24 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: reduce CPU power required by an eventloop.
+
+Tue May 31 21:28:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring):
+ redirect stderr to null device.
+
+Thu Jun 2 00:45:26 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: fix for uninitialized global variables.
+ [Ruby 1.9 - Bug #4811]
+
+Wed Jun 1 21:57:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_sleep): fix 1000times calculation error.
+ this is a regression since r31457. [Bug #4808] [ruby-dev:43606]
+
+Wed Jun 1 17:19:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: remove unused macro.
+
+Wed Jun 1 15:42:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (peek_n): new macro to see next nth char.
+
+Wed Jun 1 15:40:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (gem): fix for rubygems change.
+
+Wed Jun 1 14:07:57 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.2.2 (r6281)
+ * test/minitest/*: ditto
+
+Wed Jun 1 12:35:50 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rubygems*: Import rubygems 1.8.5 (released @ 137c80f)
+ * test/rubygems: Ditto
+
+Wed Jun 1 12:34:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: add new features of bigdecimal.
+
+Wed Jun 1 09:41:14 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cgi/util.rb: Improve documentation. Patch by Kuba Fietkiewicz.
+ [Ruby 1.9 - Bug #4775]
+ * lib/cgi/core.rb: ditto
+
+Wed Jun 1 09:26:05 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mathn.rb: Improve documentation and attach it to Numeric.
+ Modified from patch by Anil V. [Ruby 1.9 - Bug #4762]
+
+Wed Jun 1 09:21:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/prime.rb: Indent examples enough to appear as code sections.
+ Note that Prime is Enumerable. [#4762]
+
+Wed Jun 1 07:34:57 2011 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c (key_i): Change rdoc from "the first occurrence" to "an
+ occurrence" since first occurrence is not a specification of
+ Hash#key. [Ruby 1.9 - Bug #4760]
+
+Wed Jun 1 07:26:19 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/pty/pty.c (pty_check): Restore "not reached" comment.
+ [Ruby 1.9 - Bug #4756]
+
+Wed Jun 1 07:21:40 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Fix document-method declarations for set_sync and
+ set_comment. [Ruby 1.9 - Bug #4695]
+
+Wed Jun 1 06:43:13 2011 Masaya Tarui <tarui@ruby-lang.org>
+
+ * load.c (loaded_feature_path): cut nonsense loop execution to fix
+ performance bug.
+
+Wed Jun 1 01:16:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_mix_module): implement Module#mix.
+
+Wed Jun 1 01:15:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_encoding_set): should honor already set ecflags since it
+ might be set by mode option. fixed #4804
+
+Wed Jun 1 00:34:04 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): remove unused
+ variable.
+
+Wed Jun 1 00:32:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): support instantiation from
+ a Float through Rational.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_global_new_float): add a test for
+ the above changes.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_new_with_float): ditto.
+
+Wed Jun 1 00:07:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_coerce): support coerce with a
+ Rational. The precision used for instantiate a BigDecimal from the
+ given Rational is obtained from the receiver BigDecimal.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_coerce): add a test for the
+ above change.
+
+Tue May 31 23:49:08 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (offset_to_sec): fixed invalid validation.
+
+Tue May 31 23:43:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): replace the algorithm for
+ coercing from a Rational to stop requiring "bigdecimal/util.rb".
+ [ruby-core:34318]
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValue): refactoring.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): support instantiation from a
+ Rational.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_global_new_with_rational): add a
+ test for the above change.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_new_with_rational): ditto.
+
+Tue May 31 22:44:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): support instantiation a
+ BigDecimal object from an Integer.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_new_with_integer):
+ add for testing the above change.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_global_new): replace its body
+ with a BigDecimal_new call.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_global_new_with_integer):
+ add for testing the above change.
+
+Tue May 31 22:24:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: use simple/complex mode instead of light/right mode.
+ * test/date/*.rb: followed the above changes.
+
+Tue May 31 21:28:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring):
+ initialize SIGINT handler.
+
+Tue May 31 17:03:24 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/net/http.rb, lib/net/protocol.rb: Allow to configure to wait
+ server returning '100 continue' response before sending HTTP request
+ body. See NEWS for more detail. See #3622.
+ Original patch is made by Eric Hodel <drbrain@segment7.net>.
+
+ * test/net/http/test_http.rb: test it.
+
+ * NEWS: Add new feature.
+
+Tue May 31 14:17:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_s_pipe): potential bug. the mode of read IO is set as
+ DEFAULT_TEXTMODE in call of io_set_encoding(), and of write IO is
+ also set as it in call of io_new_instance() via rb_protect().
+ so, if DEFAULT_TEXTMODE is not 0, we should check the result of
+ extract_binmode() and avoid crush of default IO mode and the result.
+
+Tue May 31 13:00:17 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * strftime.c (rb_strftime_with_timespec): improved style consistency.
+ constified some variables.
+
+ * test/test_time.rb (TestTime#test_huge_precision): test for #4456.
+
+Tue May 31 12:53:10 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/io/wait/test_io_wait.rb (TestIOWait#{test_nread,test_ready?,
+ test_wait}: give system some time to process the written data.
+
+Tue May 31 12:40:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_open_mode): MUST release resources
+ explicitly. fix problem of r31671
+
+Tue May 31 10:49:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_exec.c: remove conditions for clang
+ because clang version 3.0 (trunk 132165) doesn't need them.
+
+Mon May 30 22:19:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring): don't
+ close stderr.
+
+Mon May 30 20:22:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring): small
+ but critical typo of r31642. sorry...
+ [Bug #4798] [ruby-core:36550]
+
+Mon May 30 15:44:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * insns.def (opt_mult): as r31805, volatile it.
+ Without this, clang -O fails calculation.
+
+ * numeric.c (fix_mul): ditto.
+
+ * rational.c (f_imul): ditto.
+
+Mon May 30 10:26:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (int_pow): make sure to assign the result of x * z.
+ If xz is optimized out, the value won't overflow.
+
+Sun May 29 23:17:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_match): fix rdoc of Regexp#=~.
+ patched by Tsuyoshi Sawada. [Bug #4781]
+
+Sun May 29 23:10:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/https.rb (WEBrick::HTTPRequest#parse_uri):
+ keep parse_uri as private. patched by okkez. [Bug #4773]
+
+Sun May 29 17:53:03 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * numeric.c: add #include "internal.h" for rb_big_uminus() prototype.
+
+Sun May 29 15:09:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_round): fix for negative value.
+
+Sun May 29 02:16:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/net/http/utils.rb (TestNetHTTPUtils#teardown): add nil check.
+
+Sun May 29 00:22:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (before_exec, after_exec): change from macro to function.
+
+Sat May 28 19:30:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (before_exec, after_exec): change SIGPIPE handler to SIG_DFL
+ before calling execve(). Because r31760 reintroduced an issue that
+ system() may hang up (i.e. [ruby-dev:12261]).
+ * process.c (save_sigpipe, restore_sigpipe): new.
+
+Sat May 28 16:08:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (Init_signal, default_handler): change default SIGPIPE handler
+ from empty function to SIG_IGN. [ruby-dev:43215]
+ * signal.c (sigpipe): removed.
+
+Sat May 28 03:04:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (fill_cbuf): return MORE_CHAR_SUSPENDED when cbuf is not empty.
+
+Sat May 28 02:22:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * string.c (rb_str_bytesize): rb_str_bytesize() should use LONG2NUM().
+ Patch by Nikolai Weibull. [Bug #4789] [ruby-core:36511]
+
+Sat May 28 02:06:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (fill_cbuf): Fix test-all crash.
+
+Sat May 28 00:58:40 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/ostruct.rb (method_missing): Handle [] and []= correctly.
+ Based on a patch by Caius Durling, bug #4179 [ruby-core:33792]
+
+Fri May 27 23:56:54 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_core.rb (Tester::test_text_frozen): split frozen
+ string test. refs #4783
+
+Fri May 27 22:46:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (gem): install gemspec of json. fixed #4784
+
+Fri May 27 22:45:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (validate_enc_binmode): do not clear textmode flag if
+ default. fixed #4732
+
+ * io.c (fill_cbuf): finish reading at EOF.
+
+Fri May 27 11:31:51 2011 misfo <tedwardo2@gmail.com>
+
+ * lib/rexml/text.rb (REXML::Text#initialize): prevent an error
+ when passing a frozen string to REXML::Text.new
+
+ dup the string passed in instead of cloning so that it's frozen
+ state is ignored
+
+Fri May 27 08:47:26 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * thread.c (ppoll): typo bug fix.
+
+Fri May 27 08:35:04 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: hang-up at exit before calling Tk.mainloop.
+
+ * ext/tk/lib/tk/extconf.rb: cannot make on MinGW [Ruby 1.9 - Bug #4141].
+
+Thu May 27 00:34:07 2011 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Enhance each() to support Enumerator.
+
+Thu May 26 10:32:11 2011 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Documentation improvements from Ysiad Ferreiras.
+ [Ruby 1.9 - Bug #4785]
+
+Thu May 26 15:42:02 2011 Cezary Baginski <cezary.baginski@gmail.com>
+
+ * lib/xmlrpc/parser.rb (FaultException): fix to_s and inspect
+
+ * test/xmlrpc/parser.rb: test for the above
+
+Wed May 25 11:54:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c: Remove color constants block.
+ [Ruby 1.9 - Bug #4748]
+
+Wed May 25 09:56:45 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c: Add missing documentation for button state, MIN
+ and MAX comments. Add Curses. to TABSIZE= and ESCDELAY= methods.
+ [Ruby 1.9 - Bug #4747]
+
+Wed May 25 09:35:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/benchmark.rb: Restore nodoc for Benchmark::Job and
+ Benchmark::Report. [Ruby 1.9 - Bug #4726]
+
+Wed May 25 09:29:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/pop.rb: Hide implementation details from RDoc.
+ [Ruby 1.9 - Bug #4711]
+
+Wed May 25 09:26:29 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/ftp.rb: Add :nodoc: for private methods.
+ [Ruby 1.9 - Bug #4710]
+
+Wed May 25 09:19:17 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Fix Document-method declarations. Improve
+ Zlib::GzipFile's method catalog. [Ruby 1.9 - Bug #4695]
+
+Wed May 25 08:22:12 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/erb.rb: Hide documentation for implementation details of ERB.
+ [Ruby 1.9 - Bug #4694]
+
+Wed May 25 07:58:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile.{mkdir,rmdir}): revert for backward
+ compatibility.
+
+Wed May 25 07:13:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * spec/README: update the description.
+
+Wed May 25 07:12:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile.{lock,unlock}_tempfile): refactor.
+
+Tue May 24 17:30:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * spec/README: fix typo.
+ patched by bowsersenior. https://github.com/ruby/ruby/pull/24
+
+Tue May 24 07:06:34 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fail to start Tk.mainloop (exit immediately) on
+ some environment (reported on [ruby-talk:381444]).
+
+ * ext/tk/lib/tk/canvas.rb: support creating a canvas item object from
+ an item ID number.
+
+ * ext/tk/lib/tk/image.rb: import documents which are pull-requested.
+ [Ruby 1.9 - Feature #4595]
+
+ * ext/tk/lib/tk/extconf.rb: search directories for 64bit library (e.g.
+ /usr/lib64), add some new configure options (see README.tcltklib),
+ and bug fix.
+
+ * ext/tk/lib/tk/README.tcltklib: modify docs for some new configure
+ options.
+
+Tue May 24 04:01:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/yaml.rb: switch default YAML engine to Psych, old syck engine
+ may be enabled via YAML::ENGINE.yamler = "syck". [ruby-core:36374]
+
+Mon May 23 09:45:26 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * include/ruby/defines.h (CASEFOLD_FILESYSTEM): Revert r30508. Forgot to
+ include this file in the commit r31692. __APPLE__ is not
+ CASEFOLD_FILESYSTEM again, from this time.
+
+Mon May 23 10:01:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Do not parse zero-tagged values as EOC. Do
+ not let current length become negative for infinite length constructed
+ values. Support constructed values of length zero. Added tests.
+
+Mon May 23 09:19:53 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/smtp.rb: Document Net::SMTP::Response. Patch by J.R. Garcia.
+ [Ruby 1.9 - Bug #4768]
+
+Mon May 23 09:03:52 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: Never Ignore SIGINT. When received
+ Interrupt, immediately puts result and exit. [ruby-dev:43571]
+
+ * lib/test/unit.rb: When received Interrupt, wait results from workers
+ and collect them. [ruby-dev:43571]
+
+Mon May 23 09:08:07 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mathn.rb: Improve documentation. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4767]
+
+Mon May 23 08:45:55 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/ostruct.rb: Improve documentation. Patch by Franklin Webber.
+ [Ruby 1.9 - Bug #4761]
+
+Mon May 23 08:35:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c: Improve documentation of Hash#key. Patch by Utkarsh
+ Kukreti. [Ruby 1.9 - Bug #4760]
+
+Mon May 23 08:32:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enumerator.c: Improve documentation. Patch by Dave Copeland.
+ [Ruby 1.9 - Bug #4757]
+
+Mon May 23 07:19:45 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS (openssl): Infinite length support. Different behavior of
+ Constructive and Primitive constructors.
+
+Mon May 23 06:58:33 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Forbid Constructives whose value is not an
+ Array to prevent segfault. Added test.
+
+Mon May 23 06:33:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Forbid Constructive without infinite
+ length. This also prevents a segfault. Added test and improved
+ documentation.
+
+Mon May 23 05:58:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Fix decoding of infinite length values.
+ Simplified ossl_asn1_decode0 by splitting it into three separate
+ functions. Add tests.
+ [Ruby 1.9 - Bug #4374][ruby-core:35123]
+
+Mon May 23 04:03:46 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_initialize): Allow creation of
+ Constructives with an explicit tag_class parameter without
+ automatically setting tagging to :EXPLICIT. Fixes a bug when encoding
+ infinite length primitive values.
+
+Mon May 23 04:03:46 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_cons_to_der): Add an additional
+ EOC for infinite length Constructives that are supposed to be encoded
+ with explicit tagging. Also tabify method correctly.
+
+Mon May 23 03:44:39 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1data_to_der): Remove redundant
+ flag tmp_cons.
+
+Mon May 23 00:35:00 2001 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c (dump_bignum, bigmul1_balance, big_split, biglsh_bang),
+ (bigrsh_bang, big_split3, bigmul1_toom3, bigmul0): implement Toom3 (Toom-Cook)
+ multiplication.
+
+ * include/ruby/defines.h: add format prefixes for BDIGIT and BDIGIT_DBL.
+
+Sun May 22 23:24:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Instead of rb_intern use static symbols to
+ improve performance.
+
+Sun May 22 21:56:51 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Use OpenSSL constants V_ASN1_xxx instead of
+ hardcoded numbers for initializing class_tag_map.
+
+Sun May 22 21:29:29 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * include/ruby/defines.h (CASEFOLD_FILESYSTEM): Revert r30508. See #4255.
+ Now __APPLE__ is not CASEFOLD_FILESYSTEM again.
+
+ * load.c (loaded_feature_path, rb_feature_p, load_lock): Revert r30508.
+ See #4255. Make $LOADED_FEATURES scanning case-sensitive again.
+
+Sun May 22 18:59:27 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_asn1.c(ossl_asn1_default_tag): avoid using RCLASS_SUPER
+ to make it compilable. Plus, tabify and change variable definition style.
+
+Sun May 22 18:26:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (vm_xcalloc): use calloc provided by platforms.
+ fixes #4754
+
+Sun May 22 11:44:53 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/pty/pty.c: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4756]
+
+Sun May 22 11:26:39 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/timeout.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4755]
+
+Sun May 22 11:21:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/ipaddr.rb: Improve documentation. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4753]
+
+Sun May 22 11:14:40 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/forwardable.rb: Document def_delegator. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4752]
+
+Sun May 22 11:11:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/fileutils.rb: Document block behavior of FileUtils.cd. Patch by
+ Bil Kleb. [Ruby 1.9 - Bug #4751]
+
+Sun May 22 11:07:47 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c: Complete documentation. Patch by Vincent
+ Batts. [Ruby 1.9 - Bug #4748]
+
+Sun May 22 09:29:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ use spawn. it prevent that other tests inherit renamed $0.
+
+Sun May 22 08:57:13 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Default tag lookup in constant time via hash
+ instead of previous linear algorithm.
+ [Ruby 1.9 - Feature #4309][ruby-core:34813]
+
+Sun May 22 07:54:16 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c: Explain DSS and DSS1 in documentation.
+
+Sun May 22 07:10:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_dsa.rb: Add tests for sign/verify.
+
+Sun May 22 06:07:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_x509cert.rb: Merge DSA-related tests from ruby_1_8
+ branch.
+
+Sun May 22 04:11:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (Init_Thread): add a code comment why the meaningless
+ line is necessary.
+
+Sun May 22 01:35:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: modified documentation.
+
+Sat May 21 22:46:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime(date_strftime_with_tmx): "%v" means "%e-%b-%Y".
+
+Sat May 21 22:14:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_extract_modeenc): accept combination hash and
+ File::Constants. (eg. File.open('yo', :mode => File::WRONLY))
+ [Feature #4742][ruby-core:36338]
+ * test/ruby/test_io.rb (TestIO#test_open_mode): new test.
+
+Sat May 21 21:44:14 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_switch_hitter.rb: new.
+
+Sat May 21 21:18:29 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_{core,parse}.c: moved nearly all core code from ext/date/lib.
+ * ext/date/lib/{date,date/format}.rb: removed nearly all code.
+
+Sat May 21 02:58:46 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/.document: Add curses to documented extensions.
+ * ext/curses/curses.c: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4747]
+
+Sat May 21 02:51:01 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb: Improve documentation. Patch
+ by Pete Higgins. [Ruby 1.9 - Bug #4746]
+
+Sat May 21 02:44:10 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/bigdecimal/lib/bigdecimal/jacobian.rb: Document isEqual. Patch
+ by Kuba Fietkiewicz. [Ruby 1.9 - Bug #4744]
+
+Sat May 21 02:22:34 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/date/lib/date/format.rb: Document date formats. Patch by
+ Clinton Nixon. [Ruby 1.9 - Bug #4743]
+
+Fri May 20 05:15:19 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+ * gc.c: Fix build on m68k by 'error: too few arguments to
+ function 'mark_locations_array''.
+
+Fri May 20 04:23:42 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/scanf.rb: Improve documentation. Patch by Gabe McArthur.
+ [Ruby 1.9 - Bug #4735]
+
+Fri May 20 00:58:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/ibm737-tbl.rb: greek code page. fixes #4738
+
+Thu May 19 14:44:05 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_signal.rb (test_signal_requiring): skip on Windows.
+ we can send SIGINT only to pid 0 and the process itself.
+
+Thu May 19 09:07:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib: revert r31635-r31638 and untabify with expand(1).
+
+Thu May 19 07:47:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_rsa.rb: Add tests for sign/verify.
+
+Thu May 19 07:19:16 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey.c: Add documentation.
+
+Thu May 19 07:06:56 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/benchmark.rb: Fix indentation.
+ * lib/net/imap.rb: Fix indentation of regular expressions.
+
+Thu May 19 06:36:11 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/imap.rb: Fix indentation of EOF for heredoc.
+ * lib/debug.rb (Commands): Fix indentation of EOHELP for heredoc.
+
+Thu May 19 06:30:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Fix indentation of EOM for heredoc.
+
+Thu May 19 06:16:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib: Convert tabs to spaces for ruby files per
+ https://bugs.ruby-lang.org/projects/ruby/wiki/DeveloperHowto#coding-style
+ Patch by Steve Klabnik [Ruby 1.9 - Bug #4730]
+ Patch by Jason Dew [Ruby 1.9 - Feature #4718]
+
+Thu May 19 06:06:07 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cgi/util.rb: Improve documentation. Patch by Clinton Nixon.
+ [Ruby 1.9 - Bug #4733]
+ * lib/cgi/core.rb: ditto
+ * lib/cgi/cookie.rb: ditto
+
+Thu May 19 06:02:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/tempfile.rb: Document Dir.mkdir and Dir.rmdir. Patch by Clinton
+ Nixon. [Ruby 1.9 - Bug #4728]
+
+Thu May 19 05:57:52 2011 Eric Hodel <drbrain@segment7.net>
+
+ * encoding.c: Improve documentation for Encoding#default_external and
+ Encoding#default_internal.
+
+Wed May 18 22:45:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/lib/console/size.rb (IO#console_size): new
+ method. (EXPERIMENTAL)
+
+Wed May 18 22:41:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h: add for internal use only.
+
+Wed May 18 22:36:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (setup_exception): internal exception should be hidden
+
+Wed May 18 20:25:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/timeout.rb (Timeout#timeout): don't leak "execution expired"
+ exception. [Bug #4283] [ruby-core:34534].
+
+Wed May 18 06:09:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cmath.rb: Add some examples and improve documentation. Patch by
+ Sandor Szucs. [Ruby 1.9 - Bug #4727]
+
+Wed May 18 05:40:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/benchmark.rb: Remove nodoc from Benchmark::Job and
+ Benchmark::Report. Patch by Sandor Szucs. [Ruby 1.9 - Bug #4726]
+
+Wed May 18 05:29:26 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/compat.rb: Improve documentation. Patch by Sandor
+ Szucs. [Ruby 1.9 - Bug #4725]
+
+Wed May 18 05:10:35 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/tracer.rb: Improve documentation. Patch by Richard Ramsden.
+ [Ruby 1.9 - Feature #4720]
+
+Wed May 18 04:53:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cmath.rb: Improve documentation. Patch by Jason Dew.
+ [Ruby 1.9 - Feature #4717]
+
+Wed May 18 04:50:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/ftp.rb: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4710]
+
+Wed May 18 03:14:49 2011 Eric Hodel <drbrain@segment7.net>
+
+ * test/test_singleton.rb: Add tests from lib/singleton.rb. Patch by
+ Pete Higgins. [Ruby 1.9 - Bug #4715]
+
+Wed May 18 03:03:07 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/singleton.rb: Improve documentation. Patch by Pete Higgins.
+ [Ruby 1.9 - Bug #4709]
+
+Tue May 17 21:24:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_lock): remove remove_signal_thread_list() call.
+ It's meaningless because lock_interrupt doesn't call
+ add_signal_thread_list().
+
+Tue May 17 20:20:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (rb_thread_struct): add volatile to
+ transition_for_lock because it is not protected by lock.
+
+Tue May 17 20:08:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * LEGAL (missing/{elf,tgamma,lgamma_r}.c): they've been replaced by
+ public domain implementations.
+
+ * LEGAL (vsnprintf.c): it has moved to srcdir from missing/.
+
+ * LEGAL (missing/crypt.c): list its original license.
+
+Tue May 17 19:54:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * LEGAL (configure): add missing/setproctitle.c
+
+Tue May 17 19:35:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ Fix FreeBSD test failure.
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ use ps -o command instead of ps -o cmd. FreeBSD doesn't support
+ -o cmd option.
+
+Tue May 17 08:04:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c: Add documentation.
+
+Tue May 17 07:14:58 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Improve documentation of proxy configuration
+ methods. Patch by Alf Mikula. [Ruby 1.9 - Bug #4714]
+
+Tue May 17 07:09:01 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/pop.rb: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4711]
+ * lib/net/telnet.rb: ditto
+
+Tue May 17 07:00:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Fix nodoc for Net::HTTP::version_1_1?. Patch by
+ Alf Mikula. [Ruby 1.9 - Bug #4713]
+
+Tue May 17 06:56:26 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/optparse.rb: Add link to make_switch to improve documentation.
+ Patch by David Copeland. [Ruby 1.9 - Bug #4708]
+
+Tue May 17 06:50:40 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/observer.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4707]
+
+Tue May 17 06:42:53 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/logger.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4706]
+
+Tue May 17 06:28:14 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/gserver.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4705]
+
+Tue May 17 06:21:15 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cgi.rb: Add toplevel documentation to class CGI
+ * lib/cgi/session.rb: Add overview documentation to CGI::Cookie
+ * lib/cgi/html.rb: Don't add CGI::TagMaker documentation to CGI.
+ Patch by David Copeland. [Ruby 1.9 - Bug #4704]
+ * lib/cgi/core.rb: Clean up CGI documentation. Patch by David
+ Copeland. [Ruby 1.9 - Bug #4704]
+ * lib/cgi/cookie.rb: Clean up CGI::Cookie documentation. Patch by
+ David Copeland. [Ruby 1.9 - Bug #4704]
+
+Tue May 17 05:52:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/digest: Improve documentation of Digest, Digest::HMAC and
+ Digest::SHA2. Patch by Pete Higgins. [Ruby 1.9 - Bug #4702]
+
+Tue May 17 03:51:42 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/abbrev.rb: Hide copyright and revision information from RDoc.
+ Inspired by patch from David Copeland, bug #4703.
+
+Tue May 17 03:33:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/timeout.rb (module Timeout): Hide internal constants. Patch by
+ Pete Higgins. [Ruby 1.9 - Bug #4701]
+
+Mon May 16 11:21:09 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (RUBY_SO_NAME): add CPU as prefix
+ of RUBY_SO_NAME on x64/ia64 mswin/mingw.
+ [Feature #4602]
+
+Mon May 16 08:00:05 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc.rb: Update to RDoc 3.6.1, allows OpenSSL::Digest to be
+ found.
+
+Mon May 16 05:49:54 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/drb/acl.rb: Add documentation.
+
+Mon May 16 05:13:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Add documentation.
+
+Mon May 16 00:32:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signal_process_group):
+ skip if the platform doesn't have :pgroup capability. (i.e. skip
+ if mswin32)
+
+Sun May 15 23:53:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/intern.h: resurrect old rb_fd_copy().
+ * thread.c (rb_fd_copy): ditto.
+
+Sun May 15 23:45:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/intern.h: remove rb_fd_copy() to rb_fd_dup() and
+ rb_w32_fdcopy() to rb_w32_fd_dup().
+ * win32/win32.c: ditto.
+ * thread.c: ditto.
+
+Sun May 15 22:26:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * signal.c (rb_f_kill): accept '-SIGXXX' style signal with Symbol or
+ implicit conversion with #to_str. [ruby-dev:43169] fixes #4362
+ * test/ruby/test_signal.rb (test_signal_process_group): add a test
+ for send signal to process group.
+
+Sun May 15 21:22:35 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (cont_init): clear macihne_stack_start/end of saved thread to
+ prevent mark machine stack of GC'ed Thread. root Fiber is not
+ initialized by fiber_init().
+ based on a patch by Serge Balyuk [ruby-core:35891] fixes #4612
+ * test/ruby/test_fiber.rb (test_gc_root_fiber): add test for it.
+
+Sun May 15 21:04:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (econv_init): revert r31353. [ruby-dev:43512]
+
+Sun May 15 03:39:35 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4695]
+
+Sun May 15 03:23:46 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/erb.rb: Document ERB::Compiler. Patch by Simon Chiang.
+ [Ruby 1.9 - Bug #4694]
+
+Sun May 15 00:58:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix mswin32 build error.
+
+ * missing/setproctitle.c: add #ifdef HAVE_UNISTD_H.
+ * win32/Makefile.sub (MISSING): add setproctitle.obj
+
+Sat May 14 22:45:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * missing/setproctitle.c: add to include "ruby/util.h".
+
+Sat May 14 19:52:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ add for $0 test.
+
+Sat May 14 19:50:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * missing/setproctitle.c (compat_init_setproctitle): use
+ ruby_strdup() instead of strdup().
+
+Sat May 14 19:37:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/missing.h: add setproctitle() declaration.
+ * missing/setproctitle.c: added.
+ * configure.in: add check for missing/setproctitle.c.
+
+ * ruby.c (ruby_process_options): add to call compat_init_setproctitle().
+ * ruby.c (set_arg0): remove all platform specific code. it's
+ moved to missing/setproctitle.c.
+ * ruby.c (origarg): remove len field. It's no longer used.
+ * ruby.c (get_arglen): removed.
+
+ This patch makes a lot of cleanup set_arg0 related code and fixes
+ [Feature #4689].
+
+Sat May 14 17:42:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * process.c (rb_proc_times): improve documentation.
+ [ruby-core:35785] fixes #4581, reported by Andrew Grimm.
+
+Sat May 14 12:12:54 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_dsa.rb: Add basic tests and tests that
+ ensure new public key PEM encoding behavior and ensure backward
+ compatibility.
+ [Ruby 1.9 - Bug #4422] [ruby-core:35328]
+ * test/openssl/test_pkey_rsa.rb: Remove line with 'puts'.
+
+Sat May 14 12:06:49 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/context.rb (class RDoc): Fix infinite loop caused by
+ re-encountering BasicObject.
+
+Sat May 14 10:32:36 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_rsa.rb: Add tests that ensure new public key
+ encoding behavior and also ensure backward compatibility.
+ [Ruby 1.9 - Bug #4421] [ruby-core:35327]
+
+Sat May 14 09:50:10 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/yaml/dbm.rb: Add documentation. Patch by Justin Collins.
+ [Ruby 1.9 - Bug #4693]
+ * lib/yaml/store.rb: ditto
+
+Sat May 14 09:31:43 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc.rb: Updated to RDoc 3.6
+
+Sat May 14 07:30:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: released a new gem, so increasing version.
+
+Sat May 14 05:08:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c
+ * ext/openssl/ossl_pkey.c
+ * ext/openssl/ossl_pkey.h
+ * test/openssl/pkey/test_pkey_rsa.rb
+ Reverted premature commit. Sorry for the noise!
+
+Sat May 14 05:02:58 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri.rb: Add toplevel documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4690]
+
+Sat May 14 04:19:06 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: Describe altered behaviour for RSA and DSA public key
+ encoding. [Ruby 1.9 - Bug #4421, Bug #4422]
+ [ruby-core:35327,35328]
+
+Sat May 14 02:57:52 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/ipaddr.rb (unless Socket): Document valid*? methods. Patch by
+ Sebastian Martinez. [Ruby 1.9 - Feature #4687]
+
+Sat May 14 02:54:04 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rexml/functions.rb: Add some documentation for REXML::Functions.
+ Patch by Sebastian Martinez. [Ruby 1.9 - Feature #4688]
+
+Sat May 14 02:51:42 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/resolv.rb: Hide private method and state-tracking constants from
+ RDoc. Patch by Mark Turner. [Ruby 1.9 - Feature #4691]
+
+Fri May 13 19:23:21 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * numeric.c (flo_coerce): Add #flo_coerce documentation.
+ Patch by Sebastian Martinez.
+ https://github.com/ruby/ruby/pull/21
+
+Fri May 13 18:42:22 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * README.EXT: fix typo. Patch by William Blackerby.
+ https://github.com/ruby/ruby/pull/19
+
+ * README.EXT.ja: ditto.
+
+Fri May 13 15:22:34 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_select): check invalid handle before doing
+ select operations. see [ruby-dev:43513], [ruby-dev:43535]
+
+Fri May 13 08:34:00 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/rdoc.rb: Output summary after documentation report.
+ * lib/rdoc/stats/normal.rb: Don't output information for users when
+ we're not on a TTY
+
+Fri May 13 07:49:02 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/fileutils.rb: Hide internal methods from RDoc. Patch by Darragh
+ Curran. [Ruby 1.9 - Bug #4684]
+
+Fri May 13 07:36:23 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/httpservlet/erbhandler.rb: Add documentation.
+
+Fri May 13 07:04:33 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mathn.rb: Fix indentation. Patch by Jason Dew.
+ [Ruby 1.9 - Feature #4682]
+
+Fri May 13 06:50:43 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mathn.rb: Add documentation. Patch by Jason Dew. [Ruby 1.9 -
+ Feature #4667]
+
+Fri May 13 05:44:19 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/logger.rb (class Logger): Document Logger#datetime_format.
+ Patch by Sergio Gil Perez de la Manga. [Ruby 1.9 - Bug #4678]
+
+Fri May 13 05:39:11 2011 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (Init_Regexp): Document option constants. Patch by Vincent
+ Batts. [Ruby 1.9 - Bug #4677]
+ * lib/uri/common.rb (module URI): Documentation for URI. Patch by
+ Vincent Batts. [Ruby 1.9- Bug #4677]
+ * lib/uri/ftp.rb (module URI): ditto
+ * lib/uri/generic.rb (module URI): ditto
+ * lib/uri/http.rb (module URI): ditto
+ * lib/uri/https.rb (module URI): ditto
+ * lib/uri/ldap.rb (module URI): ditto
+ * lib/uri/ldaps.rb (module URI): ditto
+ * lib/uri/mailto.rb (module URI): ditto
+ * process.c (Init_process): Document Process constants. Patch by
+ Vincent Batts. [Ruby 1.9- Bug #4677]
+
+Fri May 13 05:16:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rss/atom.rb (module RSS): Document URIs. Patch by Mark Turner.
+ [Ruby 1.9 - #4671]
+ * lib/rss/rss.rb (module RSS): Document exception classes. Patch by
+ Mark Turner. [Ruby 1.9 - #4671]
+
+Fri May 13 02:15:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (select_internal): remove unused variable (interrupt_flag).
+
+Thu May 12 18:24:34 2011 Kouhei Sutou <kou@clear-code.com>
+
+ * configure.in: limit to "T" type for prefix of external symbols
+ because x86_64-w64-mingw32-gcc on Debian GNU/Linux generates the
+ following symbol:
+ 0000000068483390 D _GLOBAL__F__conftest_external
+
+ Approved by nobu.
+
+Thu May 12 14:50:52 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/dl/test_base.rb (Fiddle::LIBC_SO): its always msvc*.dll on
+ mswin/mingw.
+
+Thu May 12 14:47:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (Logging.postpone): copy only when temporary logfile
+ exists.
+
+Thu May 12 12:24:22 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+ * ext/openssl/ossl_ssl.c: By trunk@31346, function check of SSLv2 is
+ executed.
+ However, the problem is not revised in this.
+ This adds the control of using function of SSLv2 in made macro by
+ function check.
+
+Thu May 12 08:10:46 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/set.rb (class Set): Add nodoc to internal-use methods. Patch
+ by Pete Higgins. [Ruby 1.9 - Bug #4665]
+
+Thu May 12 08:01:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_ec.c: Allow encryption when PEM-encoding
+ Elliptic Curve private keys.
+ [ruby-core:35329] [Bug #4423]
+
+Thu May 12 07:54:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (rb_obj_equal): Add documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4664]
+ * lib/rexml: ditto
+ * lib/mkmf.rb: ditto
+ * ext/socket/lib/socket.rb: ditto
+
+Thu May 12 07:30:08 2011 Eric Hodel <drbrain@segment7.net>
+
+ * Various .document files: Update .document files to match files which
+ have documentation.
+
+Thu May 12 07:18:45 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_dsa.c: Use generic X.509 SubjectPublicKeyInfo
+ format for PEM-encoding DSA public keys.
+ [ruby-core:35328] [Bug #4422]
+
+Thu May 12 06:27:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_rsa.c: Use generic X.509 SubjectPublicKeyInfo
+ format for encoding RSA public keys.
+ [ruby-core:35327] [Bug #4421]
+
+Wed May 11 19:45:27 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/forwardable.rb: support 'delegate :foo => :bar' for to meet
+ by specification of RDOC.
+
+Wed May 11 08:36:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick: Add documentation for WEBrick::HTTPAuth
+
+Wed May 11 03:06:35 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rss.rb: Add documentation for RSS. Patch by Steve Klabnik.
+ [Ruby 1.9 - Bug #4663]
+
+Tue May 10 14:50:32 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Add option for hiding skip messages when test
+ ends. #4657
+
+ * test/testunit/test_hideskip.rb, test/testunit/test4test_hideskip.rb:
+ test for above.
+
+Tue May 10 10:53:04 2011 Eric Hodel <drbrain@segment7.net>
+
+ * common.mk (rdoc): Add rdoc-coverage rule
+
+Tue May 10 09:13:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick: Add Documentation
+
+Tue May 10 04:22:09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/log.rb: Hide copyright info from ri
+ * lib/webrick/httpstatus.rb: ditto
+ * lib/webrick/htmlutils.rb: ditto
+ * lib/webrick/httpversion.rb: ditto
+ * lib/webrick/version.rb: ditto
+ * lib/webrick/httpauth/userdb.rb: ditto
+ * lib/webrick/httpauth/authenticator.rb: ditto
+ * lib/webrick/accesslog.rb: ditto
+
+Mon May 9 20:57:13 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_{complex,rational}.rb: added tests.
+
+Mon May 9 20:29:44 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (string_to_c_internal): a refactoring.
+
+Mon May 9 18:33:05 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c: Improve documentation for String#start_with? and
+ String#end_with?. fixes #4652
+ patched by Andrew Grimm <andrew.j.grimm at gmail.com>
+
+Mon May 9 13:49:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * complex.c (string_to_c_internal): support scientific notation.
+ patched by Tinco Andringa. https://github.com/ruby/ruby/pull/16
+ [ruby-core:36046][Bug #4655]
+
+Mon May 9 11:52:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (int_ord): remove K&R style.
+ patched by Daehyub Kim. https://github.com/ruby/ruby/pull/17
+
+Sun May 8 22:17:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_{complex2,complexrational}.rb: use skip.
+ * test/date/*.rb: ditto.
+
+Sun May 8 21:02:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_{complex2,complexrational}.rb: NEVER SKIP.
+
+Sun May 8 21:01:21 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_date_base.rb: fixed.
+
+Sun May 8 20:54:11 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: NEVER SKIP.
+
+Sun May 8 20:37:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: reverted 31432.
+
+Sun May 8 20:32:43 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: reverted 31483.
+
+Sun May 8 19:39:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_cond_timedwait): add to care EINTR.
+ * thread_pthread.c (thread_timer): remove EINTR check.
+
+Sun May 8 19:04:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/time.rb (xmlschema): avoid passing any negative numbers.
+
+Sun May 8 18:40:03 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_{parse,strptime}.c: introduced some macros.
+
+Sun May 8 17:17:13 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: use skip /w messages.
+
+Sun May 8 17:04:55 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb (_httpdate): omitted to call zone_to_diff.
+
+Sun May 8 16:56:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (date_s_test_*): use macros.
+
+Sun May 8 10:24:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: cleanup signal_thread_list related ifdef.
+ 1) we don't have to use #ifdef FOO-PLATFORM directly 2) About
+ half #ifdef didn't care symbian properly.
+
+Sun May 8 05:19:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/io/wait/test_io_wait.rb: Linux socketpair(2) only support
+ AF_UNIX, but windows socketpair doesn't support it. we can't
+ avoid platform check. sigh!
+
+Sun May 8 00:13:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/io/wait/test_io_wait.rb: use Socket.pair instead of pipe.
+ Windows can only treat a socket.
+
+Sat May 7 22:43:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_zero): remove redundant zero fill.
+
+Sat May 7 22:38:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_init): remove volatile qualifier.
+
+Sat May 7 22:34:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_init_copy): new internal api. It provide efficient
+ copy constructor semantics.
+ * thread.c (do_select): use rb_fd_init_copy().
+
+Sat May 7 15:18:06 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix incorrect native_cond_signal call when deadlock was detected.
+
+ * thread.c (lock_func): decrement cond_waiting if timeout was happen.
+
+Sat May 7 18:28:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (USE_MONOTONIC_COND): check the availability
+ more strictly.
+
+ * thread_pthread.h (rb_thread_cond_t): ditto.
+
+Sat May 7 15:15:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ fix win32 native_cond_timedwait() makes SIGSEGV.
+
+ * thread_win32.h (rb_thread_cond_struct): add prev field instead of
+ last. (ie cond_event_entry is now using double linked list instead of
+ single)
+ * thread_win32.c (cond_event_entry): add prev field.
+
+ * thread_win32.c (__cond_timedwait): remove entry properly if timeout
+ was happen.
+
+ * thread_win32.c (native_cond_signal): change for double linked list.
+ * thread_win32.c (native_cond_broadcast): ditto.
+ * thread_win32.c (native_cond_initialize): ditto.
+
+Sat May 7 12:41:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix mutex deadlock test hang-up.
+
+ * thread_win32.c (abs_timespec_to_timeout_ms): fix 1000x calculation
+ mistake. (ie fix hang-up native_cond_timedwait())
+
+Sat May 7 03:14:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ sleep_cond use monotonic time if possible.
+
+ * thread_pthread.c (native_thread_init): change sleep_cond
+ attribute to monotonic.
+ * thread_pthread.c (native_sleep): use native_cond_timeout().
+
+ * thread_pthread.c (native_cond_timeout): add overflow care.
+ * thread_win32.c (native_cond_timeout): ditto.
+
+Sat May 7 02:49:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix win32 compile error.
+
+ * thread_win32.c (RB_CONDATTR_CLOCK_MONOTONIC): define
+ RB_CONDATTR_CLOCK_MONOTONIC always.
+ * thread_pthread.c (RB_CONDATTR_CLOCK_MONOTONIC): ditto.
+
+Sat May 7 02:29:41 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ mutex: deadlock check timeout use monotonic time.
+
+ * thread_pthread.c (native_cond_timeout): new internal api.
+ it calculate a proper time for argument of native_cond_timedwait().
+ * thread_win32.c (native_cond_timeout): ditto.
+
+ * thread_pthread.c (thread_timer): use native_cond_timeout()
+ instead of get_ts.
+ * thread.c (lock_func): ditto.
+
+ * thread_pthread.c (get_ts): removed. use native_cond_timeout().
+ * thread.c (init_lock_timeout): ditto.
+
+Sat May 7 01:54:21 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (get_ts): add monotonic clock capability.
+ * thread_pthread.c (rb_thread_create_timer_thread): use monotonic
+ clock if possible.
+
+Sat May 7 01:43:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.h (rb_thread_cond_t): add clockid field. it's
+ no longer an alias of pthread_cond_t.
+ * thread_pthread.c: adapt new rb_thread_cond_t type.
+ * thread.c (mutex_alloc): ditto.
+ * thread_win32.c (native_cond_initialize): ditto.
+ * configure.in: add check for pthread_cond_attr_setclock() and
+ clockid_t type.
+
+Fri May 6 23:29:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_wait_for_single_fd): use ppoll() instead of poll()
+ if possible. based on a patch from Eric Wong. [ruby-core:36003].
+
+Fri May 6 23:13:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: remove nanosleep check. we no longer use it.
+ r20124 removed last usage.
+
+Fri May 6 22:35:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (mktime_do): extra digits are not used.
+
+Fri May 6 17:43:07 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/syck/rubyext.c (mktime_do): remove unused variable offset.
+
+ * ext/syck/syck.h: use #ifdef instead of #if DEBUG.
+
+Fri May 6 16:27:33 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_core.c (DAY_IN_NANOSECONDS): refix: 31438.
+ check with LONG_MAX and cast as long; without this the calculation
+ will be done as int and overflow.
+
+Fri May 6 15:01:11 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * ext/syck/rubyext.c (mktime_do): avoid buffer overrun, by
+ silently ignoring lesser significant digits. Required buffer
+ length can be computable so you might at first think of
+ allocating enough memory space on the fly using alloca(). That
+ is a wrong idea because when using alloca there is always risk
+ of integer overflow. A function that accepts outer-process
+ resources like this should not blindly trust its inputs. In
+ this particular case we just want to generate milliseconds
+ resolution by strtod() so the string in question needs no more
+ length than what we originally have. Ignoring lesser
+ significant digits should suffice I believe.
+
+Fri May 6 14:25:53 2011 Tinco Andringa <mail@tinco.nl>
+
+ * ext/syck/rubyext.c (mktime_do): YAML.load time correctly parse
+ usecs smaller than 1 fixes #4571
+
+Thu May 5 22:23:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_mutex_reinitialize_atfork): removed
+ unused macro.
+ * thread_win32.c (native_mutex_reinitialize_atfork): ditto.
+
+Thu May 5 22:09:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/date/date_core.c (DAY_IN_NANOSECONDS): long long int is not
+ available on all platforms.
+
+Thu May 5 17:36:31 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * eval.c (frame_func_id): store result of method_entry_of_iseq() to
+ cfp->me because method_entry_of_iseq() might become expensive.
+
+Thu May 5 15:03:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * eval.c (frame_func_id): __method__ return different name from
+ methods defined by Module#define_method with a same block.
+ [ruby-core:35386] fixes #4606
+ * eval.c (method_entry_of_iseq): new helper function. search control
+ frame stack for a method entry which has given iseq.
+ * test/ruby/test_method.rb: add tests for #4606
+
+Wed May 4 22:13:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_vm4_pipe.rb: Reduced iterations. Too slow benchmark
+ is bad.
+ * benchmark/bm_vm4_thread_pass.rb: ditto.
+
+Wed May 4 22:08:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/date/test_date_base.rb: don't use no message skip().
+
+Wed May 4 21:11:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_io_select2.rb: reduce number of using file
+ descriptors. because gdb need some fds.
+
+Wed May 4 19:00:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_wait_for_single_fd): Fix wrong return value.
+ * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb
+ (TestWaitForSingleFD#test_wait_for_closed_pipe): test for it.
+
+Wed May 4 18:46:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/-test-/wait_for_single_fd: New. for testing
+ rb_wait_for_single_fd() internal function.
+ The patch was written by Eric Wong. [ruby-core:35991]
+
+ * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb: ditto.
+
+Wed May 4 12:46:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_wait_for_single_fd): Added POLLNVAL check.
+ based on a patch from Eric Wong at [ruby-core:35991].
+
+Wed May 4 11:51:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_f_select): remove useless ifdef.
+
+Wed May 4 11:42:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/init.c (wait_connectable): fix error handling code.
+ RB_WAITFD_OUT is turned on even though an error occur.
+
+Wed May 4 10:12:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/readline/readline.c (readline_event): use rb_wait_for_single_fd().
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+
+Wed May 4 10:10:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/init.c (wait_connectable): use rb_wait_for_single_fd().
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+
+ * ext/socket/init.c (try_wait_connectable, wait_connectable_ensure):
+ removed.
+
+Wed May 4 10:07:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/io/wait/wait.c (io_wait): use rb_wait_for_single_fd().
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+
+Wed May 4 10:01:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_wait_for_single_fd): new. poll(2) based backend for
+ rb_wait_for_single_fd().
+ Now only Linux uses it.
+
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+
+Wed May 4 09:56:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_wait_for_single_fd): new.
+ * thread.c (select_single): select(2) based backend for
+ rb_wait_for_single_fd().
+
+ * io.c (make_writeconv): use rb_wait_for_single_fd() instead of
+ rb_thread_fd_select().
+ * io.c (rb_io_wait_readable): ditto.
+ * thread.c (rb_thread_wait_fd_rw): ditto.
+
+ * io.c (wait_readable): removed.
+ * thread.c (init_set_fd): new helper function.
+ * include/ruby/io.h (RB_WAITFD_IN, RB_WAITFD_PRI, RB_WAITFD_OUT):
+ new constant for rb_single_wait_fd().
+
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+
+Wed May 4 08:04:59 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: fix time dumping so that
+ Syck can load UTC times that Psych dumps.
+
+Wed May 4 07:33:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_copy): fix wrong argument.This issue was pointed
+ out by Eric Wong. [ruby-core:35982]
+
+Tue May 3 20:29:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_symbol_mode):
+ Skip sticky bit test if the platform is FreeBSD. It doesn't allow to
+ change sticky bit if a target is regular file.
+
+Tue May 3 18:23:57 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/date/test_date.rb (TestDate#test_coerce):
+ test for [ruby-core:35127].
+
+Tue May 3 04:27:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_select): preserve errno if no error
+ occurred.
+
+Tue May 3 03:57:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_w32_fdcopy): add prototype. fixes
+ #4640
+
+Mon May 2 01:02:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/fileutils.rb (FileUtils#chmod): accept symbolic mode argument.
+ The patch was written by takkanm. [ruby-core:26029][Feature #2190]
+
+ * lib/fileutils.rb (FileUtils#fu_mode): new helper function.
+ * lib/fileutils.rb (FileUtils#symbolic_modes_to_i): ditto.
+ * lib/fileutils.rb (FileUtils#mode_mask): ditto.
+ * lib/fileutils.rb (FileUtils#user_mask): ditto.
+
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_symbol_mode):
+ new test for the above symbolic mode.
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_R): ditto.
+
+Mon May 2 00:36:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/init.c (rsock_connect): add to care EINTR. based
+ on a patch from Eric Wong at [ruby-core:35621][Bug #4555]
+
+Sun May 1 01:06:24 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_select): release GVL while waiting select().
+
+Sat Apr 30 23:10:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (rb_w32_fdcopy): New. This can copy even though
+ fdset size exceed FD_SETSIZE.
+ * include/ruby/intern.h (rb_fd_copy): use rb_w32_fdcopy()
+
+Sat Apr 30 20:18:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (do_select): Change argument type to rb_fdset_t.
+ Now do_select() is free from unexpected hangup if
+ HAVE_RB_FD_INIT=1 [Bug #4636]
+
+ * thread.c (rb_thread_fd_select, rb_thread_wait_fd_rw):
+ adapt new argument type.
+
+ * thread.c (rb_thread_select): make dummy implementation.
+
+Sat Apr 30 20:16:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_copy): Change function argument. Now
+ rb_fd_copy() has fully copy semantics.
+ * include/ruby/intern.h: ditto.
+
+Sat Apr 30 20:11:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/intern.h (rb_thread_select): mark as deprecated.
+
+ * ext/io/wait/wait.c (wait_readable): use rb_thread_fd_select
+ instead of rb_thread_select.
+ * ext/socket/init.c (wait_connectable0): ditto.
+ * ext/readline/readline.c (readline_event): ditto.
+ * io.c (rb_io_wait_readable, wait_readable, rb_io_wait_writable,
+ wait_writable): ditto.
+
+Sat Apr 30 20:06:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (do_select): remove useless ifdef. time calculation
+ is not heavy weight.
+
+Sat Apr 30 16:48:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_io_select3.rb: New.
+
+Sat Apr 30 16:27:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (copy_stream_body, rb_io_s_copy_stream): move rb_fd_init()
+ from copy_stream_body to rb_io_s_copy_stream. fds of passing
+ rb_fd_term() have to be guaranteed initialized.
+
+Sat Apr 30 16:13:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_io_select.rb, benchmark/bm_io_select2.rb: New.
+ based on a patch from Eric Wong at [Feature #4531]
+
+Sat Apr 30 03:25:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/io/wait/test_io_wait.rb: New. for testing ext/io/wait.
+ the patch was written by Eric Wong. [Feature #4531]
+
+Sat Apr 30 00:34:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/win32.h: remove redundant declaration of
+ rb_w32_time_subtract().
+
+Sat Apr 30 00:16:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (gvl_init): fix hangup if GVL_SIMPLE_LOCK=1.
+ We don't have to call mutex_unlock() before initialize it!
+
+Fri Apr 29 13:15:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_win32.c (native_cond_timedwait): New. r31373 caused
+ win32 build failure.
+
+ * thread_win32.c (__cond_timedwait, abs_timespec_to_timeout_ms):
+ New helper functions.
+
+ * win32/win32.c (rb_w32_time_subtract): rename from subtract and
+ remove static.
+
+Fri Apr 29 10:43:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_vm4_pipe.rb: Add two new benchmark for GVL
+ performance. They was written by Koichi Sasada.
+ * benchmark/bm_vm4_thread_pass.rb: ditto.
+
+Fri Apr 29 10:25:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_method.c (rb_clear_cache_by_class): Revert r29673. It made
+ a segmentation fault regression. [Bug #4289][ruby-core:34554].
+
+Fri Apr 29 10:24:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (make_writeconv): do not add textmode newline decorator if any
+ newline decorator is set already. fixes #4618, fixes #4619
+
+Fri Apr 29 10:17:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (lock_func): small cleanup.
+
+Fri Apr 29 10:07:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_lock, lock_func): Avoid busy loop and
+ performance regression. bm_vm3_thread_mutex.rb performance
+ change from 109.064sec to 16.331sec. [Feature #4607]
+
+ * thread.c (init_lock_timeout): New helper function.
+
+Thu Apr 28 16:15:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{win32.c,dir.h} (rb_w32_uopendir): new API to pass UTF-8 path.
+
+ * win32/win32.c (opendir_internal, rb_w32_opendir): extract and merge
+ common part of rb_w32_opendir() and rb_w32_uopendir().
+
+ * dir.c (do_opendir, glob_helper): encoding.
+
+ * dir.c (dir_initialize, do_opendir): convert path to UTF-8 and call
+ rb_w32_uopendir() instead of rb_w32_opendir() on Windows.
+ fixes #4491, reported by Joey Zhou.
+
+Thu Apr 28 15:32:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/dl/test_base.rb (DL::LIBC_SO): its always msvc*.dll on
+ mswin/mingw.
+
+Thu Apr 28 06:07:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/csv.rb (CSV::open): suppress universal newline decorator.
+ fixes #4603
+
+ * lib/csv.rb (CSV.read): no mode is needed.
+
+Thu Apr 28 06:06:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc, rb_f_backquote): set default text
+ mode. fixes #4619
+
+ * io.c (pipe_open): set universal newline decorator if needed.
+
+Wed Apr 27 11:33:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/emoji_iso2022_kddi.trans: ISO-2022-JP-KDDI doesn't have
+ CP932 UDA. Another reason is emacs-mule: the implementation of
+ stateless-iso-2022-jp doesn't support beyond 94x94 (0x7fxx);
+ but CP932 UDA is in 7Fxx-92xx.
+
+Wed Apr 27 07:42:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (STRIP): use proper toolchain. based on a patch
+ from Jon Forums at [ruby-core:35909]. fixes #4617
+
+Wed Apr 27 01:20:59 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (date_zone_to_diff): renamed.
+ * ext/date/date_parse.c: ditto.
+ * ext/date/date_strptime.c: ditto.
+
+Wed Apr 27 01:16:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_find): accept Encoding objects.
+
+Wed Apr 27 00:55:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (econv_opts): add newline option.
+
+ * io.c (validate_enc_binmode, rb_io_extract_modeenc): set newline
+ decorator according to open mode.
+
+ * transcode.c (rb_econv_prepare_options): new function, to prepare
+ econv options with newline flags.
+
+ * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_MASK): add.
+
+Wed Apr 27 00:51:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_truncate): fix function.
+
+ * include/ruby/win32.h (ftruncate, truncate, ftello, fseeko): non-64
+ versions on mingw are useless because they use int32_t. fixes #4564
+
+Wed Apr 27 00:50:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: modified validation methods.
+ * ext/date/lib/date.rb: ditto.
+
+Wed Apr 27 00:00:37 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (dt_lite_set_tmx): should get df value.
+
+Tue Apr 26 22:34:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb (_iso8601): allowed day only civil
+ date. disallowed separatorless day only ordinal date.
+
+Mon Apr 25 21:31:36 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+ * ext/openssl/extconf.rb: Should check SSLv2_*method.
+ openssl compiled with "no-ssl2" the extconf don't fail
+ when running `make' having this compilation errors.
+ Patched by Laurent Arnoud. fixes #4562, #4556
+
+Mon Apr 25 20:53:32 2011 Tajima, Akio <artonx@yahoo.co.jp>
+
+ * win32/win32.c (kill): accept 0 only sig is SIGINT #4596
+
+Mon Apr 25 19:59:47 2011 Tajima, Akio <artonx@yahoo.co.jp>
+
+ * win32/win32.c (kill): accept 0 as pid, fixes #4596
+
+Mon Apr 25 16:43:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (random_rand): remove unused variables.
+
+ * struct.c (rb_struct_define_without_accessor): ditto.
+
+ * strftime.c (rb_strftime_with_timespec): ditto.
+
+ * sprintf.c: ditto.
+
+ * time.c (time_asctime): remove useless GetTimeval().
+
+ * thread_pthread.c: cast to (void *) for %p.
+
+Mon Apr 25 11:02:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/ripper/lib/ripper/sexp.rb: fix rdoc around sexp.
+ patched by Sho Hashimoto. fixes #4599
+
+Mon Apr 25 08:24:04 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * random.c (rb_f_rand, random_s_rand): RDocs for them.
+
+Mon Apr 25 07:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * random.c (random_s_rand, Init_Random): Random.rand should behave as
+ Random::DEFAULT.rand rather than Kernel#rand.
+
+ * random.c (rand_range, random_rand): rand_range function extracted
+ from random_rand function.
+
+ * random.c (rb_f_rand): accept a Range argument as Random#rand
+ [ruby-dev:43427] #4605
+
+Mon Apr 25 03:31:06 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/time.rb: require 'date'.
+ * ext/date/lib/date/format.rb: removed require line.
+
+Mon Apr 25 03:08:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb: require 'date'.
+
+Mon Apr 25 03:04:16 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb (_iso8601): added a pattern.
+
+Mon Apr 25 02:51:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/lib/date/format.rb: require 'date_core.so'.
+ date/format needs methods which are now in date_core.so.
+ This breaks make rdoc which uses Date._parse from time.rb.
+
+Mon Apr 25 02:47:46 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb (_iso8601): fixed a bug of regex.
+
+Mon Apr 25 02:12:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb: an adjustment of regex.
+
+Mon Apr 25 01:58:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb: omitted to call _parse.
+
+Mon Apr 25 01:03:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * string.c (rb_to_id): remove unused variable.
+
+Sun Apr 24 22:19:05 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c, rational.c: omitted some method calls.
+
+Sun Apr 24 02:57:27 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (n2i): takes long.
+
+Sun Apr 24 02:51:06 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c: reverted.
+
+Sun Apr 24 02:25:23 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/intern.h: pcc can't use __builtin_constant_p.
+
+ * vm_exec.c: change condition.
+
+Sun Apr 24 01:58:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_core.c (leap_p): suppress warning: parentheses.
+
+ * ext/date/date_core.c (date_s__parse_internal): remove unused
+ variable "str".
+
+ * ext/date/date_parse.c (parse_ddd_cb): use RSTRING_LENINT.
+
+ * ext/date/date_strftime.c (date_strftime_with_tmx): remove unused
+ variable.
+
+Sun Apr 24 00:34:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c: removed some unused macros. use strchr()
+ instead of index().
+
+Sat Apr 23 21:29:42 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: replacement of implementation of
+ _parse. [experimental]
+ * ext/date/date_parse.c: new.
+ * ext/date/lib/date/format.rb: removed ruby version of _parse.
+
+Fri Apr 22 12:04:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): fix rdoc.
+ patched by burningTyger. https://github.com/ruby/ruby/pull/11
+
+Fri Apr 22 11:49:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
+ XML-RPC's int is 32bit int, and Fixnum also may be beyond 32bit.
+
+ * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
+ XML-RPC doesn't allow Infinity and NaN.
+ http://www.xmlrpc.com/spec
+
+Fri Apr 22 04:16:14 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): strings from psych have proper taint
+ markings.
+
+ * test/psych/test_tainted.rb: test for string taint
+
+Thu Apr 21 01:30:02 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (rb_f_srand): fix rdoc: srand(0)'s 0 is a seed.
+ [ruby-core:35833] fixes #4590
+
+Thu Apr 21 01:01:28 2011 Masaya Tarui <tarui@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): maximum length of lpCommandLine is
+ 32,768 characters, including the Unicode terminating null character.
+
+Wed Apr 20 21:32:11 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strptime.c (date__strptime_internal): do not
+ overwrite local variables.
+
+Wed Apr 20 14:41:28 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_each_line): check string's length when compare
+ separator and string. [ruby-core:35815] fixes #4586
+
+Wed Apr 20 00:02:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): use position of open paren.
+
+Tue Apr 19 01:00:21 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * test/ruby/test_io.rb (TestIO#test_cross_thread_close_fd):
+ skip cross thread pipe close if windows
+
+Mon Apr 18 12:15:46 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_range.rb (TestRange#test_step_ruby_core_35753):
+ avoid float error. [ruby-core:35804]
+
+Sun Apr 17 00:20:14 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_{core,strftime}.c: use struct tmx instead of vtm.
+ * ext/date/date_tmx.h: new.
+
+Sat Apr 16 22:23:52 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c (date_strftime_wo_timespec): changed
+ the way of validation of locale modifiers.
+
+Sat Apr 16 21:55:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: replacement of implementation of
+ _strptime. [experimental]
+ * ext/date/date_strptime.c: new.
+ * ext/date/lib/date/format.rb: removed ruby version of _strptime.
+
+Sat Apr 16 10:18:30 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * vm.c (Init_VM): suppress warning: "OPT_BASIC_OPERATIONS" is not
+ defined.
+
+Fri Apr 15 23:41:18 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ruby.c (proc_options): suppress warning:
+ "ALLOW_DEFAULT_SOURCE_ENCODING" is not defined.
+
+Fri Apr 15 15:10:29 2011 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/uri/generic.rb (#route_from_path): Fix a bug where
+ URI('http://h/b/').route_to('http://h/b') wrongly returned './'
+ (should be '../b'). [Bug #4476]
+
+Fri Apr 15 14:58:06 2011 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/fileutils.rb (FileUtils#touch): Fix corrupted output when
+ mtime is specified in addition to nocreate (and verbose).
+ ref [ruby-dev:43401]
+
+Thu Apr 14 23:43:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (ruby_float_step): wrong loop condition.
+ fixes [ruby-core:35753], reported by Joey Zhou.
+
+ * test/ruby/test_range.rb (TestRange#test_step_ruby_core_35753):
+ test above change.
+
+Thu Apr 14 22:48:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Options#setup_options): set possible
+ values for completion. no conversion is needed.
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#initialize): use
+ positional arguments instead of keyword arguments.
+
+ * lib/test/unit.rb (Test::Unit::Runner#jobs_status): io/console may
+ not be available. use 80 as the last resort if IO#winsize and
+ COLUMNS are unavailable.
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#died): rename using a
+ verb.
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): check if worker
+ is signaled and use its exit status.
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#dead): no longer @in
+ and @out are separated.
+
+Thu Apr 14 21:23:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_autoload_p): search superclasses as same as actual
+ loading. fixes [ruby-core:35679]
+
+Thu Apr 14 21:21:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (frexp, modf): wrongly declared as pure in
+ mingw math.h.
+
+ * include/ruby/win32.h (ftruncate, truncate): mingw64 misses
+ prototypes.
+
+ * win32/win32.c (rb_w32_read): suppress warning.
+
+Thu Apr 14 19:55:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/fileutils.rb (FileUtils#touch): fix corrupted output when
+ FileUtils.touch(:nocreate => true, :verbose => true) case.
+ The patch was written by Hiroyuki Iwatsuki. [ruby-dev:43401]
+
+Thu Apr 14 16:01:45 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (rb_f_syscall): suppress warning: "HAVE___SYSCALL" is not
+ defined.
+
+Thu Apr 14 00:41:09 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread.c (thread_fd_close_i): IOError exception should be assigned
+ to rb_thread_t::thrown_errinfo.
+
+Wed Apr 13 20:12:26 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (rb_io_fdatasync): remove unused variable.
+
+Tue Apr 12 20:54:12 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/st.h: parenthesize macro arguments.
+
+Tue Apr 12 19:19:50 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb: avoid race condition. fixes #4572
+
+Tue Apr 12 18:07:13 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: --disable-libedit to disable
+ libedit. fixes #4550
+
+Tue Apr 12 10:37:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: VC doesn't have ftruncate() and others, but
+ ruby needs HAVE_ macros to use our emulation functions.
+ (fix the problem of 31262)
+
+Tue Apr 12 01:33:00 2011 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in: properly evaluate existence of truncate, ftruncate
+ and ftello for MinGW. [ruby-core:35678]
+ * win32/win32.c: rename truncate, ftruncate and ftello to avoid
+ redefinitions.
+ * win32/win32.h: ditto.
+
+Mon Apr 11 21:51:52 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c: revert r31230. Because it made a regression.
+ [ruby-core:35631]
+
+Mon Apr 11 21:49:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb: Added TestIO#test_cross_thread_close_stdio
+ and TestIO#test_cross_thread_close_fd.
+ The patch was written by Eric Wong. [ruby-core:35669]
+
+Mon Apr 11 21:15:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * file.c (rb_group_member): kill 256K of stack usage.
+ the patch was written by Eric Wong. [ruby-core:35699]
+
+Mon Apr 11 07:24:13 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl.c: Fix typo, document version constants.
+
+Sun Apr 10 22:23:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h: parenthesize macro arguments.
+
+Sat Apr 9 23:31:47 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * ext/stringio/stringio.c (strio_each, strio_readlines):
+ Use `NUM2LONG` instead of `FIX2INT`. Fixes [ruby-dev:43395].
+
+Sat Apr 9 23:22:27 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * ext/stringio/stringio.c (strio_each):
+ Fix exception message and don't raise immediately if block is not
+ given.
+ Fixes [ruby-dev:43394].
+
+ * test/stringio/test_stringio.rb (test_each_line_limit_0):
+ Fix test for above.
+
+Sat Apr 9 21:54:15 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * ext/stringio/stringio.c (strio_each, strio_readlines):
+ limit must not be zero. Fixes [ruby-dev:43392].
+
+ * test/stringio/test_stringio.rb: Add tests for above.
+
+Sat Apr 9 18:01:36 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/util.h: parenthesize macro arguments.
+
+Fri Apr 8 16:01:56 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_getline): check whether str is
+ a string when str and lim are given.
+ https://twitter.com/watson1978/status/56225052152168449
+
+Thu Apr 7 20:03:52 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h: parenthesize macro arguments.
+
+Wed Apr 6 21:08:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h: parenthesize macro arguments.
+
+Wed Apr 6 15:12:40 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_dh.c (ossl_dh_initialize):
+ pop pushed error after each try of reading. fixes #4550
+
+ * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_initialize): ditto.
+
+Wed Apr 6 11:36:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize):
+ pop pushed error after each try of reading. fixes #4550
+
+Tue Apr 5 20:33:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h: parenthesize macro arguments.
+
+Mon Apr 4 22:02:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/io/nonblock/nonblock.c (io_nonblock_set): Avoid F_SETFL if
+ we're not changing the O_NONBLOCK bit. F_SETFL is an expensive
+ operation since it needs to affect all processes with the same
+ file object.
+ The patch is written by Eric Wong. [ruby-core:35556]
+
+Mon Apr 4 21:41:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_syswrite): While local FS writes are usually
+ buffered, the buffers can be full or the file opened with
+ O_SYNC. IO#syswrite can also be used on blocking IOs
+ (pipe/socket) just like IO#write.
+ The patch is written by Eric Wong. [ruby-core:35554]
+
+Mon Apr 4 11:50:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/test_tempfile.rb: simply ignore platform dependent testcases
+ instead of skipping.
+
+Sun Apr 3 22:52:22 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/syslog/syslog.c: improve rdoc.
+ a patch by Jonas Pfenniger. [ruby-core:35592] fixes #4545
+
+Sun Apr 3 22:10:09 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/zlib/zlib.c: parenthesize macro arguments.
+
+Sun Apr 3 21:33:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: disable fdatasync again on Mac OS X.
+ [ruby-core:35493][Bug #4500]
+
+Sun Apr 3 21:16:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_reopen): IO#close releases GVL if possible.
+ close() may block for certain file types (NFS, SO_LINGER
+ sockets, inotify), so let other threads run. The patch was
+ created by Eric Wong [ruby-core:35555][Bug #4527]
+
+ * io.c (fptr_finalize): ditto.
+
+ * io.c (maygvl_fclose): new.
+ * io.c (nogvl_fclose): ditto.
+ * io.c (maygvl_close): ditto.
+ * io.c (nogvl_close): ditto.
+
+Fri Apr 1 22:25:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/syslog/syslog.c: parenthesize macro arguments.
+
+Fri Apr 1 18:53:06 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/cookie.rb (WEBrick::Cookie.parse): 'white space is
+ permitted between tokens' according to RFC2965. Though 'Netscape
+ spec' does not define the syntax clearly, make it tolerant as a
+ server. As a real-world example, rest-client gem sends
+ 'Cookie: foo=1;bar=2'
+
+ * test/webrick/test_cookie.rb (test_parse_non_whitespace): test it.
+
+Fri Apr 1 13:19:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (RUBY_VM_CHECK_INTS_TH): merge a patch by ko1
+ in [ruby-dev:43373].
+
+Thu Mar 31 23:15:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-brace-to-do-end, ruby-do-end-to-brace):
+ adjust space between block beginning and block arguments
+
+Thu Mar 31 20:42:05 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/strscan/strscan.c: parenthesize macro arguments.
+
+Thu Mar 31 18:06:12 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_ev_const): should ignore crefs with
+ the NODE_FL_CREF_PUSHED_BY_EVAL flag.
+
+Thu Mar 31 16:49:56 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_ev_const): search root cref properly.
+ [ruby-dev:43365]
+
+Thu Mar 31 14:50:25 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_s_constants): should ignore crefs with
+ the NODE_FL_CREF_PUSHED_BY_EVAL flag.
+
+Wed Mar 30 22:55:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-toggle-block): toggle do/end and {}.
+
+ * misc/ruby-mode.el (ruby-move-to-block): move to opening of
+ block.
+
+Wed Mar 30 14:35:15 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.h (COPY_CREF): should copy
+ the NODE_FL_CREF_PUSHED_BY_EVAL flag to hide constants from
+ methods defined by class_eval. [ruby-dev:43365]
+
+Wed Mar 30 00:24:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/stringio/stringio.c: parenthesize macro arguments.
+
+Tue Mar 29 21:51:31 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * object.c (rb_String): Kernel#String should call to_str before to_s.
+
+Tue Mar 29 10:28:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/webrick/test_filehandler.rb
+ (WEBrick::TestFileHandler#test_short_filename): the cgi doesn't exist
+ on current directory.
+
+Tue Mar 29 05:19:57 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c: parenthesize macro arguments.
+
+Tue Mar 29 00:03:51 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * test/webrick/test_filehandler.rb (test_short_filename):
+ read real short filename by cmd because smb mounted files
+ have different naming convention.
+
+Mon Mar 28 11:38:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_core.c (date_s_today): use int for year.
+
+ * ext/date/date_core.c (datetime_s_now): ditto.
+
+Mon Mar 28 11:07:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb: set MFLAGS from MAKEFLAGS when using nmake.
+
+Mon Mar 28 11:07:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (love): all you need is love.
+
+Sun Mar 27 23:16:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c: parenthesize macro arguments.
+
+Sun Mar 27 16:55:34 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-map): remove unnecessary
+ binding. fixes
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468952
+
+ * misc/ruby-mode.el: suppress warnings at byte compile. fixes
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502926
+
+Sun Mar 27 11:18:35 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: removed unused variables.
+
+Sat Mar 26 15:16:09 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/getaddrinfo.c: parenthesize macro arguments.
+
+Sat Mar 26 05:27:34 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/lib/date/format.rb (DateTime#strftime): removed because
+ date_core defines it.
+
+Fri Mar 25 21:59:45 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: should not force cast with macros.
+
+Fri Mar 25 21:56:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/init.c: parenthesize macro arguments.
+
+Fri Mar 25 19:39:40 2011 Ben Walton <bwalton@artsci.utoronto.ca>
+
+ * test/test_syslog.rb:
+ Skip syslog tests that rely on LOG_PERROR unless it's defined
+
+ Instead of checking looking at the platform to determine if the tests
+ relying on LOG_PERROR should be run, look for the definition of the
+ constant as this will be robust against all platforms as long as the
+ underlying syslog.c code sets it up correctly.
+
+ This specifically addresses failures on Solaris 9.
+
+ Use LOG_PID instead of LOG_PERROR in Syslog.open test
+
+ LOG_PERROR isn't a POSIX option for syslog, so it fails on platforms
+ that don't define it. Solaris 9 and 10 are examples of this.
+
+ Use LOG_PID instead.
+
+Fri Mar 25 15:42:17 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/sdbm/_sdbm.c (sdbm_open): use size_t.
+
+ * ext/syck/bytecode.c: ditto.
+
+ * ext/sdbm/_sdbm.c (delpair): use ptrdiff_t.
+
+ * ext/sdbm/init.c: use RSTRING_LENINT.
+
+ * ext/dl/handle.c: suppress warning: shorten-64-to-32.
+
+ * ext/strscan/strscan.c: ditto.
+
+ * ext/syck/emitter.c: ditto.
+
+ * ext/syck/implicit.c: ditto.
+
+ * ext/syck/syck.c: ditto.
+
+ * ext/syck/token.c: ditto.
+
+Fri Mar 25 12:14:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: import nkf 7f18e30.
+
+Fri Mar 25 11:49:29 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess#test_no_curdir): skip silently
+ on Windows, because this tests a platform specific feature and it'll
+ never be supported on ruby on Windows.
+
+ * test/ruby/test_dir_m17n.rb
+ (TestDir_M17N#test_filename_extutf8_invalid,
+ TestDir_M17N#test_filename_as_bytes_extutf8): ditto.
+
+ * test/open-uri/test_open-uri.rb
+ (TestOpenURI#test_find_proxy_case_sensitive_env): ditto.
+
+ * test/dl/test_handle.rb (DL::TestHandle#test_NEXT,
+ DL::TestHandle#test_DEFAULT): ditto.
+
+Thu Mar 24 23:06:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_ev_const): should not autoload in
+ defined? mode.
+
+ * variable.c (rb_const_defined_0): fix autoloading base.
+ [ruby-core:35509]
+
+Thu Mar 24 22:48:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c: parenthesize macro arguments.
+
+Thu Mar 24 14:45:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl.c: suppress warning: shorten-64-to-32.
+
+ * ext/openssl/ossl.h: ditto.
+
+ * ext/openssl/ossl_asn1.c: ditto.
+
+ * ext/openssl/ossl_bio.c: ditto.
+
+ * ext/openssl/ossl_bn.c: ditto.
+
+ * ext/openssl/ossl_cipher.c: ditto.
+
+ * ext/openssl/ossl_hmac.c: ditto.
+
+ * ext/openssl/ossl_ns_spki.c: ditto.
+
+ * ext/openssl/ossl_ocsp.c: ditto.
+
+ * ext/openssl/ossl_pkcs5.c: ditto.
+
+ * ext/openssl/ossl_pkey.c: ditto.
+
+ * ext/openssl/ossl_pkey_dh.c: ditto.
+
+ * ext/openssl/ossl_pkey_dsa.c: ditto.
+
+ * ext/openssl/ossl_pkey_ec.c: ditto.
+
+ * ext/openssl/ossl_pkey_rsa.c: ditto.
+
+ * ext/openssl/ossl_rand.c: ditto.
+
+ * ext/openssl/ossl_ssl.c: ditto.
+
+ * ext/openssl/ossl_x509ext.c: ditto.
+
+ * ext/openssl/ossl_x509name.c: ditto.
+
+Thu Mar 24 11:48:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_rand.c (ossl_rand_egd_bytes): use NUM2INT because
+ the result is used with functions whose argument is int.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): ditto.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_purpose): ditto.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_trust): ditto.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_purpose): ditto.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_trust): ditto.
+
+Thu Mar 24 11:36:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_x509name.c: id_aref's type is ID.
+
+Thu Mar 24 10:04:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/io/console/console.c (console_set_winsize):
+ suppress warning: shorten-64-to-32.
+
+Thu Mar 24 09:56:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspreq_verify): flags is VALUE,
+ so it should use NUM2INT.
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspbres_verify): ditto.
+
+Wed Mar 23 21:09:29 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/readline/readline.c: parenthesize macro arguments.
+
+Wed Mar 23 08:07:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_round): fix inaccurate results.
+
+Wed Mar 23 00:12:16 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * win32/win32.c: wait process real termination after reading
+ exit code. fixes #4518
+
+Tue Mar 22 21:20:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/test_case.rb: save current dir to @current_dir
+ before Dir.chdir.
+
+Tue Mar 22 20:10:04 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/psych/parser.c: parenthesize macro arguments.
+
+Tue Mar 22 20:10:01 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ruby_missing.h: parenthesize macro arguments.
+
+Tue Mar 22 13:33:22 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/buffering.rb: removed circular require of
+ openssl.rb.
+
+ * ext/openssl/lib/openssl/*: removed following comment for transition
+ measures of avoiding circular require. No one claimed about this as
+ far as I know.
+ ##
+ # Should we care what if somebody require this file directly?
+ # require "openssl"
+
+Tue Mar 22 10:57:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/runner.rb: set Gem::TestCase's @@project_dir.
+
+ * lib/rubygems/test_case.rb: set Gem::TestCase's @@project_dir only
+ when it is not defined.
+
+Tue Mar 22 09:38:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (flo_round): use pow instead of while-loop. fixes #4510
+ patched by Alex Young [ruby-core:35526]
+
+Tue Mar 22 06:47:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_strftime.c (date_strftime_wo_timespec):
+ suppress warning: shorten-64-to-32.
+
+Tue Mar 22 06:42:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_core.c: suppress warning: shorten-64-to-32.
+
+Tue Mar 22 06:41:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit/parallel.rb: remove unused variable.
+
+Tue Mar 22 06:19:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_16le.c: suppress warning: shorten-64-to-32.
+
+ * ext/dbm/dbm.c: ditto.
+
+ * ext/gdbm/gdbm.c: ditto.
+
+ * parse.y (Init_ripper): suppress warning: unused value.
+
+Mon Mar 21 11:21:32 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Refactoring. Unified if and elsif.
+
+Sun Mar 20 23:09:34 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: checks duplicated modifiers.
+
+Sun Mar 20 22:32:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: removed unused code and arguments.
+
+Sun Mar 20 21:34:49 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: replacement of implementation of
+ strftime. It has some limitations that is same as Time's
+ one. [experimental]
+ * ext/date/date_strftime.c: new.
+ * ext/date/lib/date/format.rb: removed ruby version of strftime.
+
+Sun Mar 20 12:43:12 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509store.c: parenthesize macro arguments.
+
+Sun Mar 20 01:39:48 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * hash.c (ruby_setenv): check env process block size with OS ver.
+ * win32/win32.c: export rb_w32_osver for above patch.
+ * include/ruby/win32.h: declare rb_w32_osver for Win32 Libs.
+
+Sat Mar 19 18:35:05 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * hash.c (ruby_setenv): calculate total env block size for win32.
+ * test/ruby/test_env.rb: add test for above patch.
+
+Sat Mar 19 17:14:46 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * hash.c (ruby_setenv): checking with max process environment
+ block size for Win32. 32767 for 2000/XP, 2003. if failed to
+ read the block, then checking with 5120 for earlier Windows.
+
+Sat Mar 19 12:30:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509revoked.c: parenthesize macro arguments.
+
+Fri Mar 18 20:44:36 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509req.c: parenthesize macro arguments.
+
+Fri Mar 18 08:48:06 2011 Oleg Shaldybin <oleg.shaldybin@gmail.com>
+
+ * lib/fileutils.rb (FileUtils::Entry_#copy_file): updated FileUtils.cp
+ to still copy file permissions when :preserve is false (as cp does
+ this even when -p isn't set).
+
+Fri Mar 18 00:59:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/extconf.rb (create_docfile): removed. should not
+ modify source directory unnecessarily, platform dependent
+ documentation should be dealt with by rdoc. [ruby-core:35495]
+
+Fri Mar 18 00:54:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_funcall_passing_block): add prototype.
+ a patch by James M. Lawrence at [ruby-core:35501]
+
+Wed Mar 17 06:23:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509name.c: parenthesize macro arguments.
+
+Wed Mar 16 20:36:56 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal): raise an error on
+ listen(2) failure.
+ reported by Xavier Shay. [ruby-core:35505]
+
+Wed Mar 16 15:06:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/lib/openssl/buffering.rb (module OpenSSL): #flush should
+ not change sync mode on exception.
+ * test/openssl/test_buffering.rb: added
+
+Wed Mar 16 13:45:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/lib/openssl/buffering.rb: de-nest Buffering module
+
+ * ext/openssl/lib/openssl/buffering.rb: add RDoc
+
+Wed Mar 16 08:40:39 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509ext.c: parenthesize macro arguments.
+
+Tue Mar 15 18:34:27 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509crl.c: parenthesize macro arguments.
+
+Tue Mar 15 09:49:03 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/misc/test_ruby_mode.rb (test_singleton_class): Skip for Pending.
+
+Mon Mar 14 21:20:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_require.rb (test_require_too_long_filename):
+ increase path length, because MAXPATHLEN is defined as 4096 on linux.
+
+ * test/ruby/test_require.rb (test_require_path_home_1): ditto.
+
+ * test/ruby/test_require.rb (test_require_path_home_2): ditto.
+
+Mon Mar 14 19:54:37 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509cert.c: parenthesize macro arguments.
+
+Sun Mar 13 18:11:28 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509attr.c: parenthesize macro arguments.
+
+Sun Mar 13 16:07:58 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/pstore.rb: Fix don't raise "nested transaction" when thread_safe
+ is true. Patch by Masaki Matsushita (Glass_saga). [ruby-dev:43337]
+
+ * test/test_pstore.rb: Test for above.
+ Patch by Masaki Matsushita (Glass_saga) [ruby-dev:43337]
+
+Sat Mar 12 04:12:41 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl_session.c: parenthesize macro arguments.
+
+Sat Mar 12 02:27:07 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c ({d,dt}_lite_marshal_load): checks the given
+ argument.
+
+Sat Mar 12 01:26:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: changed some directives.
+
+Sat Mar 12 01:16:02 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c, ext/date/lib/*: moved rdoc descriptions.
+
+Sat Mar 12 00:06:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib: moved from lib.
+
+Fri Mar 11 23:32:38 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/delta*: removed undocumented delta.
+
+Fri Mar 11 18:42:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (find_executable0): should exclude directories.
+
+Fri Mar 11 01:40:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_getmaxgroups, proc_setmaxgroups): Process#maxgroups
+ and Process#maxgroups= now raise NotImplementedError if the
+ platform don't support supplementary groups concept.
+
+Fri Mar 11 01:25:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (get_sc_ngroups_max): return -1 if platform don't
+ support NGROUPS_MAX.
+
+Thu Mar 10 22:28:15 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl.h: parenthesize macro arguments.
+
+Thu Mar 10 21:59:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (parser_encode_length): add exception as UTF8-MAC for
+ magic comment's emacs newline specifier
+ patched by James M. Lawrence [ruby-core:35476] fixes #4489
+
+Thu Mar 10 16:00:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (parser_encode_length): fix typo: the length of
+ "-dos" and "-mac" is not 5 but 4.
+ patched by James M. Lawrence [ruby-core:35476] fixes #4489
+
+Thu Mar 10 10:52:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_require.rb: setting too long string to ENV causes
+ Errno::EINVAL on Windows. long path name errors may causes over
+ about 1024 bytes, then limit it about 4000 bytes.
+
+Thu Mar 10 10:09:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#read): fix for the case
+ when IO#read or IO#gets returns nil.
+
+Thu Mar 10 07:12:03 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rubygems*: Import rubygems 1.6.2 (release candidate @ 2026fbb5)
+ * test/rubygems: Ditto
+ * test/runner.rb: Added test to load path to fix test requires.
+
+Thu Mar 10 03:00:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl.c: parenthesize macro arguments.
+
+Wed Mar 9 23:51:26 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_io_m17n.rb (test_io_new_enc): "sjis" is now an alias
+ of Windows-31J.
+
+Wed Mar 9 23:06:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): fix indent after aref.
+
+Wed Mar 9 12:50:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Rescue exceptions when
+ people implement the method method. Thanks Lin Jen-Shin.
+ [ruby-core:35255]
+
+ * test/psych/visitors/test_yaml_tree.rb: test for implementation of
+ method method.
+
+Wed Mar 9 11:53:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/shift_jis.c: Change SJIS as an alias of Windows-31J.
+ [ruby-dev:43027] fixes #4280
+
+ * enc/shift_jis.c: Add PCK as an alias of Windows-31J.
+
+Wed Mar 9 00:45:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: nmake substitutes all occurrences in macro.
+
+ * ext/extmk.rb: workaround for nmake.
+
+Tue Mar 8 23:49:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_setgroups): cleanup.
+
+Tue Mar 8 23:40:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/misc/test_ruby_mode.rb: test for ruby-mode.el.
+
+Tue Mar 8 23:27:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (get_sc_ngroups_max): try to use NGROUPS_MAX at first if
+ _SC_NGROUP_MAX is not defined.
+
+Tue Mar 8 23:10:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): fix for array in block.
+
+Tue Mar 8 21:44:49 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_rand.c: parenthesize macro arguments.
+
+Tue Mar 8 16:45:31 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (ruby_setenv): MSDN says that Windows XP or earlier limits
+ the total size of environment block to 5,120 chars. and on such
+ OS, putenv() causes SEGV. So, ruby should limit the size of an
+ environment variable to 5,120 bytes for workaround.
+
+Tue Mar 8 15:57:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_spec_fetcher.rb
+ (TestGemSpecFetcher#test_cache_dir_escapes_windows_paths): cache_dir
+ may have driveletter and `:' for base of cache_dir itself, so need
+ to skip it for checking.
+
+Tue Mar 8 12:30:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-deep-indent-paren-p, ruby-calculate-indent):
+ do not apply deep-indent inside parens at the beginning of
+ expressions.
+
+Tue Mar 8 09:32:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (configure-ext, build-ext), ext/extmk.rb (extmake):
+ support parallel-make under ext.
+
+Tue Mar 8 09:25:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_setgroups): use getgrnam() if getgrnam_r() is
+ not available.
+
+ * process.c: RARRAY_LEN() returns long int.
+
+Tue Mar 8 09:07:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_REPLACE_TYPE): enclose in quotes for multiple
+ type names.
+
+Tue Mar 8 01:43:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c (get_sc_ngroups_max): define to wrap sysconf(3).
+ this also supports Windows which doesn't have sysconf(3).
+
+ * process.c (maxgroups): use get_sc_ngroups_max.
+
+ * process.c (proc_setmaxgroups): ditto.
+
+Tue Mar 8 01:16:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (rb_objspace): an initializer must be a constant.
+
+Tue Mar 8 01:11:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c (maxgroups): cast because sysconf(3)'s return value is long.
+
+ * process.c (proc_setmaxgroups): ditto.
+
+ * process.c (proc_setgroups): cast because RARRAY_LEN() is long.
+
+Tue Mar 8 00:02:47 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey_rsa.c: parenthesize macro arguments.
+
+Mon Mar 7 22:59:39 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/pstore.rb: Delete variable @transaction and fix #4474. Patch by
+ Masaki Matsushita (Glass_saga).
+
+ * test/test_pstore.rb(test_thread_safe): Add test for #4474.
+
+Mon Mar 7 21:31:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_setgroups): replace getgrnam() with getgrnam_r()
+ because getgrnam() isn't thread safe.
+
+Mon Mar 7 20:49:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_getmaxgroups, proc_setmaxgroups): reflect
+ platform maxgroups limitation by default instead hardcoded 65536.
+
+Mon Mar 7 17:13:00 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_set_params): allow GC parameter configuration by
+ environment variables. based on a patch from funny-falcon at
+ https://gist.github.com/856296, but honors safe level.
+
+Mon Mar 7 09:05:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c: NUM2RLIM is defined but no getrlimit and setrlimit on
+ mingw.
+
+Mon Mar 7 08:38:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/date/date_core.c (DateTimeData): should not use bare 'long long'
+ and 'long double', which are not defined by C89.
+
+ * ext/date/date_core.c (dt_lite_plus): get rid of overflow at casting
+ down double to integer.
+
+Mon Mar 7 00:21:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_getgroups): get rid of maxgroups dependency.
+ ngroups can be calculated dynamically.
+
+Sun Mar 6 23:45:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: rlim_t use standard RUBY_REPLACE_TYPE mechanism.
+
+Sun Mar 6 23:26:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_setmaxgroups): added negative value check.
+ This was suggested by Daniel Berger. Thanks Daniel!
+ [ruby-core:35426][Bug#4467]
+
+Sun Mar 6 23:18:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (maxgroups, proc_setmaxgroups): increase max groups
+ limitation up to 65536.
+
+Sun Mar 6 22:20:59 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey_ec.c: parenthesize macro arguments.
+
+Sun Mar 6 21:49:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * sample/list.rb (MyElem#initialize): initialize @head
+ explicitly. Otherwise -W2 option makes following warning.
+ "warning: instance variable @head not initialized".
+ This issue was founded by Andrew Grimm. Thanks Andrew!
+ [ruby-core:35435][Bug#4471]
+
+Sun Mar 6 05:21:41 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * class.c: fix camelCase to snake_case in documentation code examples.
+ patched by Andrew Grimm. fixes Bug #4469
+
+ * marshal.c: ditto.
+
+ * proc.c: ditto.
+
+ * sample/biorhythm.rb: ditto.
+
+ * vm_eval.c: ditto.
+
+ * vm_method.c: ditto.
+
+
+Sun Mar 6 03:22:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_cntl): use rb_thread_io_blocking_region() instead
+ rb_thread_blocking_region().
+
+Sat Mar 5 22:54:36 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * include/ruby/intern.h: fix a typo of prototype declaration.
+ rb_mutex_try_lock -> rb_mutex_trylock [ruby-dev:43213]
+
+Sat Mar 5 19:44:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (TestIO#test_fcntl_lock): small clean up.
+
+Sat Mar 5 01:33:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_cntl, nogvl_io_cntl): IO.fcntl() and IO.ioctl()
+ release GVL during calling kernel interface.
+ Suggested by Eric Wong. [ruby-core:35417][Bug #4463]
+
+ * test/ruby/test_io.rb (TestIO#test_fcntl_lock): add new test for
+ IO.fcntl().
+
+Fri Mar 4 23:09:12 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/testunit/test_parallel.rb
+ (test_should_run_all_without_any_leaks): consider that the order of
+ testcase could change. [ruby-dev:43300] [Bug #4466]
+
+Fri Mar 4 22:01:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_cntl): change 'cmd' type to int. ioctl and fcntl need to
+ be passed int.
+ * io.c (rb_io_ctl): ditto.
+
+Fri Mar 4 21:10:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: save warnflags. the patch is created by Eric Wong.
+ [Bug #4465]
+
+Wed Mar 2 21:15:00 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey_dsa.c: parenthesize macro arguments.
+
+Thu Mar 3 22:10:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (check_exec_redirect_fd, check_exec_redirect): raise
+ ArgumentError if fd >= 3 on Windows because the feature is not
+ supported.
+
+ * test/ruby/test_process.rb (test_execopts_redirect): remove meaningless
+ argument.
+
+Thu Mar 3 21:21:42 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (test_execopts_redirect): redirecting fd
+ >= 3 is not supported on Windows, so should not specify such options
+ when calling spawn or others.
+
+Thu Mar 3 18:59:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_slice_bang): raise error when the string is frozen.
+
+Thu Mar 3 14:25:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * strftime.c (STRFTIME): return 0 and ERANGE when precision is too
+ large. [ruby-dev:43284] fixes #4456
+
+Thu Mar 3 00:46:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c (uleb128): cast the value to unsigned long.
+
+ * addr2line.c (fill_lines): print error when lseek fails.
+
+Thu Mar 3 00:36:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/encoding.rb (REXML::Encoding#encoding=): store @encoding
+ a String which means the name of the encoding.
+ this partially revert r29646.
+
+ * lib/rexml/document.rb: follow above.
+
+ * lib/rexml/output.rb: ditto.
+
+ * lib/rexml/parsers/baseparser.rb: ditto.
+
+ * lib/rexml/source.rb: ditto.
+
+ * lib/rexml/xmldecl.rb: ditto.
+
+Wed Mar 2 23:19:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_byte_substr): return nil for negative length.
+
+Wed Mar 2 21:15:00 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey_dh.c: parenthesize macro arguments.
+
+Wed Mar 2 14:24:04 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: Fix name from `inclement_io` to
+ `increment_io`.
+
+Wed Mar 2 14:06:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_slice_bang): move treatments which is only needed
+ when the result is not nil.
+
+Wed Mar 2 14:02:29 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb(TestParallel#spawn_runner):
+ Fix outputing empty line in running test.
+
+ * test/testunit/tests_for_parallel/test_third.rb: Remove `sleep`
+
+Tue Mar 1 22:29:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey.h: parenthesize macro arguments.
+
+Tue Mar 1 22:02:35 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: Fix number.
+
+Tue Mar 1 21:48:22 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: For Windows.
+
+ * test/testunit/test_parallel.rb(TestParallelWorker#test_quit_in_test):
+ Fix for above specification change.
+ * test/testunit/test_parallel.rb(TestParallel#spawn_runner):
+ Fix outputing empty line in running test.
+
+Tue Mar 1 20:51:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_system.rb (TestSystem#test_system_at):
+ remove tests for [bug#4396]. because we decided to reject this
+ ticket.
+
+Tue Mar 1 19:46:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/{test_date.rb,test_date_attr.rb}: [ruby-dev:43280]
+
+Tue Mar 1 18:40:38 2011 Ryan Davis <ryan@YPCMC09457>
+
+ * lib/rubygems*: Import rubygems 1.6.0 (released version @ 58d8a0b9)
+ * test/rubygems: Ditto
+
+Tue Mar 1 16:22:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c: revert r30987 because it causes some failures in
+ test-all, especially webrick.
+
+Tue Mar 1 15:59:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_byteslice): the resulted encoding should keep
+ original encoding. this also fixes the encoding when the result
+ shares internal string. [ruby-core:35376]
+
+Tue Mar 1 13:25:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpMemAlloc): CVE-2011-0188.
+ Fixes a bug reported by Drew Yao <ayao at apple.com>
+
+Tue Mar 1 10:34:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_byteslice): Add String#byteslice. [ruby-core:35376]
+
+Tue Mar 1 00:12:49 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * include/ruby/win32.h: define WIN32 if neither _WIN64 nor WIN32
+ defined. it forces to use push/pop for pack(4) pragma.
+
+Mon Feb 28 23:52:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/testunit/test_rake_integration.rb (test_with_rake_runner):
+ use assert_in_out_err for suppress messages.
+
+Mon Feb 28 22:48:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (rb_w32_spawn): use shell if a commandline contain
+ double-quote character.
+ * win32/win32.c (is_internal_cmd): similar, use shell if a commandline
+ contain caret character.
+
+ * test/ruby/test_system.rb (TestSystem#test_system_at): fix
+ wrong test case. if system() invoke a command by using shell,
+ system() never return nil. Also, "" quotation must not appear
+ twice in a command line.
+
+Mon Feb 28 17:36:57 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkcs7.c: parenthesize macro arguments.
+
+Mon Feb 28 16:48:42 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkcs12.c: parenthesize macro arguments.
+
+Mon Feb 28 16:28:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_trans): when the hash for multibyte repl is empty,
+ tr is inverse mode, and a character doesn't much the table, the
+ character should be replaced by last replacement. Bug #4449
+
+Mon Feb 28 16:38:56 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ocsp.c: parenthesize macro arguments.
+
+Mon Feb 28 13:02:15 2011 Danial Pearce <github@tigris.id.au>
+
+ * lib/tempfile.rb: Fix example file paths in docs for tempfile.
+ https://github.com/ruby/ruby/pull/5
+
+Mon Feb 28 12:56:18 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_init): typo fix.
+ https://github.com/ruby/ruby/pull/8
+
+Mon Feb 28 12:28:13 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/date/date_core.c (datetime_s_now): localtime() and localtime_r()
+ required time_t pointer as 1st parameter, and tv_sec member of struct
+ timeval is long.
+
+Mon Feb 28 11:57:40 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb: Temporally disable test on Windows.
+
+Mon Feb 28 07:28:35 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb(Test::Unit::Runner#after_worker_quit):
+ method name more be natural English.
+
+ * lib/test/unit.rb(Test::Unit::Runner::Worker.launch):
+ IO.sync doesn't need. Should use "b" for mode.
+
+Sun Feb 27 21:59:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_system.rb (TestSystem#test_system_redirect_win):
+ add test for system().
+
+Sun Feb 27 18:00:09 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Refactoring; Worker never use Hash for internal
+ storage.
+
+ * lib/test/unit.rb: Never use Kernel#spawn. Use IO.popen instead.
+
+Sun Feb 27 13:16:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ns_spki.c: parenthesize macro arguments.
+
+Sat Feb 26 17:07:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: [Feature #4257]
+
+ * ext/date/extconf.rb: new
+
+ * ext/date/date_core.c: new
+
+Sat Feb 26 16:10:23 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: --jobs-status won't puts over 2 lines.
+
+ * test/testunit/test_parallel.rb: Fix test for above.
+
+ * lib/test/*: refactoring.
+
+Sat Feb 26 07:10:05 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: fix parsing timezone's whose
+ whose format is (+/-)hhmm. Thanks Goncalo Silva!
+
+ * test/psych/test_scalar_scanner.rb: test for bug.
+
+Thu Feb 24 23:02:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_hmac.c: parenthesize macro arguments.
+
+Thu Feb 24 22:53:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (love): for the birthday.
+
+Thu Feb 24 22:51:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (ruby_vm_destruct): run vm exit hooks after all objects are
+ destructed.
+
+Thu Feb 24 14:40:33 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * ChangeLog (vim): Modeline for vim
+
+Thu Feb 24 13:39:25 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * common.mk: Use $RUNRUBY for worker process.
+
+ * lib/test/unit.rb: Fix bug.
+
+ * lib/test/unit.rb: @options[:ruby](@opts[:ruby]) is now Array.
+
+ * test/testunit/parallel.rb: Fix for above.
+
+Thu Feb 24 10:05:55 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/tests_for_parallel/misc.rb: Fix bug in r30947.
+
+ * lib/test/unit.rb, lib/test/unit/assertions.rb: For this test.
+
+Wed Feb 23 23:07:38 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb, test/testunit/parallel/*:
+ Test for r30939.
+
+ * lib/test/unit.rb: For test.
+
+ * lib/test/parallel.rb: For test.
+
+ * lib/test/unit/testcase.rb: For test.
+
+Wed Feb 23 22:05:13 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_engine.c: parenthesize macro arguments.
+
+Tue Feb 22 23:15:17 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Fix --ruby option doesn't effect.
+
+ * lib/test/unit.rb: Fix typo.
+
+Tue Feb 22 21:39:28 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_digest.c: parenthesize macro arguments.
+
+Tue Feb 22 14:34:26 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Fix merging miss.
+
+Tue Feb 22 12:27:26 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Add new options; --jobs,-j,--ruby,--jobs-status,
+ --no-retry.
+ [Feature #4415] [ruby-dev:43226],[ruby-dev:43222],[ruby-core:35294]
+
+ * lib/test/unit/parallel.rb: Used at test/unit --jobs(-j) option.
+
+ * test/csv/test_serialization.rb: test/unit parallel running ready.
+
+ * test/rake/test_file_task.rb: test/unit parallel running ready.
+
+Tue Feb 22 06:09:10 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/syslog/syslog.c: Apply documentation patch from mathew murphy.
+ [Bug #4149]
+
+Tue Feb 22 03:09:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: increase Psych to 1.1.0 for help with
+ debugging.
+
+Tue Feb 22 03:04:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/streaming.rb: refactor streaming methods to a
+ module.
+ * ext/psych/lib/psych/stream.rb: extracted streaming specific methods
+ to a module.
+ * ext/psych/lib/psych/json/stream.rb: JSON stream inherits from
+ JSONTree and includes streaming methods.
+ * ext/psych/lib/psych/visitors/json_tree.rb: JSON does not support
+ object references, so remove object reference testing when building
+ JSON trees.
+
+Tue Feb 22 02:41:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb (accept): use Hash#key?
+ when looking up object references to err on the side of cache
+ misses.
+
+Mon Feb 21 10:58:39 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/yaml_events.rb: refactoring JSON event
+ handling methods to a module for reuse.
+ * ext/psych/lib/psych/json/tree_builder.rb: AST builder uses JSON
+ event methods.
+ * ext/psych/lib/psych/json/stream.rb: stream emitter uses JSON event
+ methods.
+
+Mon Feb 21 10:54:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/stream.rb: do not emit custom tags in maps
+ or sequences when emitting JSON.
+ * ext/psych/lib/psych/json/tree_builder.rb: do not emit custom tags in
+ sequences when emitting JSON.
+ * test/psych/json/test_stream.rb: tests for custom stream emits.
+ * test/psych/test_json_tree.rb: tests for JSON emits.
+
+Mon Feb 21 10:05:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/ruby_events.rb: DRY up ruby event handling
+ for JSON.
+ * ext/psych/lib/psych/visitors/json_tree.rb: use ruby events module
+ * ext/psych/lib/psych/json/stream.rb: ditto
+
+Mon Feb 21 10:01:01 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/stream.rb: fix JSON stream emits to use
+ double quotes during stream.
+ * test/psych/json/test_stream.rb: tests to reflect changes.
+
+Mon Feb 21 00:38:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_system.rb (TestSystem#test_system_at):
+ add testcase for bug4396.
+
+Sun Feb 20 19:59:32 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_cipher.c: parenthesize macro arguments.
+
+Sun Feb 20 16:26:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (exec_recursive): prevent temporary objects from GC.
+
+ * prevent temporary objects from GC, and should not use
+ RSTRING_PTR() for function calls since it evaluates the argument
+ a couple of times.
+
+Sun Feb 20 16:22:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_flock): use rb_thread_io_blocking_region for the
+ time being.
+
+Sun Feb 20 05:33:17 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 2.0.2 r6207.
+ * test/minitest/*: ditto
+
+Sun Feb 20 02:14:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (sig_trap): avoid pthread_sigmask(xx, &mask, &mask) usage
+ because FreeBSD don't permit it. If it's used, it behave as
+ pthread_sigmask(xx, NULL, &mask).
+
+ * signal.c (init_sigchld): ditto.
+
+Sun Feb 20 00:46:51 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_bn.c: parenthesize macro arguments.
+
+Sat Feb 19 22:37:42 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * vm_insnhelper.c (vm_check_if_namespace): guard temporary object
+ from GC.
+
+Sat Feb 19 06:36:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/test/unit.rb: partial revert of r30849. [ruby-core:32864]
+
+ * test/testunit/test_rake_integration.rb: adding an integration test
+ with the rake loader to prevent regressions.
+
+Fri Feb 18 19:31:31 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::remove_entry_secure): there is a
+ race condition in the case where the given path is a directory,
+ and some other user can move that directory, and create a
+ symlink while this method is executing.
+ Reported by: Nicholas Jefferson <nicholas at pythonic.com.au>
+
+Fri Feb 18 00:28:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * compile.c (get_exception_sym2type): guard temporary object from GC.
+
+Thu Feb 17 23:54:29 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * iseq.c (prepare_iseq_build): initialize iseq_compile_data::err_info
+ with nil. this fix exception in rb_iseq_load().
+
+Thu Feb 17 22:32:35 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_marshal.rb (test_marshal_dump_extra_iv):
+ fix a typo of local variable. [Bug #3720] [ruby-dev:42083]
+
+Thu Feb 17 21:32:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl.h: parenthesize macro arguments.
+
+Wed Feb 16 20:37:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * eval_jump.c (rb_exec_end_proc): changed at_exit and END proc
+ evaluation order. [Bug #4400] [ruby-core:35237]
+ * eval_jump.c (rb_mark_end_proc): ditto.
+
+ * test/ruby/test_beginendblock.rb (TestBeginEndBlock#test_nested_at_exit):
+ added a test for nested at_exit.
+ * test/ruby/test_beginendblock.rb (TestBeginEndBlock#test_beginendblock):
+ changed the test to adopt new spec.
+
+Wed Feb 16 20:17:06 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/openssl_missing.h: parenthesize macro arguments.
+
+Tue Feb 15 21:37:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/gdbm/gdbm.c: parenthesize macro arguments.
+
+Tue Feb 15 20:34:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * array.c (ary_join_1): fix array size.
+
+Tue Feb 15 19:43:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: fix and resubmit r30621. [ruby-dev:43203]
+
+Tue Feb 15 15:41:30 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (array_join): copy the encoding of the first element as
+ an initial encoding.
+
+ * array.c (array_join_0): ditto.
+
+ * array.c (array_join_1): ditto.
+
+ * array.c (inspect_ary): ditto.
+
+ * array.c (array_join_1): add an argument to check the appending is
+ first one or not.
+
+Tue Feb 15 15:40:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (inspect_i): copy the encoding of the first key as
+ an initial encoding.
+
+Mon Feb 14 15:00:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (inspect_ary): don't taint the inspected result of a
+ recursive array.
+
+Tue Feb 15 15:43:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): change the rule for empty strings:
+ remove the special treatment of the US-ASCII encoded empty string.
+ Now Encoding.compatible? usually respect the encoding of the
+ receiver.
+
+Tue Feb 15 15:39:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): remove special treatment of
+ ASCII-8BIT receivers.
+
+ * string.c (str_gsub): set initial encoding of the buffer as the
+ same of the receiver. [ruby-core:35141]
+
+Tue Feb 15 09:49:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_system.rb (TestSystem#test_system_at): use findstr
+ command instead of find command, because the latter is confusing
+ another famous Unix command.
+
+Mon Feb 14 23:01:19 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread.c (rb_thread_io_blocking_region): reset th->waiting_fd
+ after blocking region, because remaining waiting_fd might
+ cause unnecessary IOError.
+
+Mon Feb 14 21:06:50 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: revert r30621. That revision introduced mkmf test
+ failures and it turned out to be OK to revert. [ruby-dev:43203]
+
+Mon Feb 14 21:04:01 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/fiddle/conversions.h: parenthesize macro arguments.
+
+Mon Feb 14 18:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/setup.mak (USE_RUBYGEMS): fixed r30835. It didn't work on
+ mswin32 port. If you changed win32/configure.bat, you should change
+ setup.mak too.
+
+Mon Feb 14 17:28:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_system.rb (TestSystem#test_system_at):
+ added test. [ruby-core:35218] (#4393)
+
+Mon Feb 14 13:15:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (is_internal_cmd): if the first char of prog is '@',
+ execute it via shell. [ruby-core:35218] (#4393)
+
+Mon Feb 14 10:33:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb: revert r30863, because it causes too many noise.
+
+Mon Feb 14 07:34:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c: parenthesize macro arguments.
+
+Sun Feb 13 19:41:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): skip
+ test suites failed to load instead of mere messages.
+
+Sun Feb 13 09:56:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/openssl/test_config.rb (OpenSSL#test_freeze): fix error
+ message assertion.
+
+ * test/io/nonblock/test_flush.rb (TestIONonblock#flush_test):
+ return true to finish the test.
+
+ * test/syck/test_string.rb (Syck::TestString#test_non_binary_string):
+ use assert_not instead of refute, unless required minitest
+ explicitly.
+
+ * test/test_prime.rb (TestPrime::sieve.Integer): ditto.
+
+ * test/xmlrpc/webrick_testing.rb (WEBrick_Testing#start_server):
+ catch IOError when server socket was closed.
+
+Sun Feb 13 07:39:51 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): typo fixed. a patch from Gaku Ueda in
+ [ruby-core:35216].
+
+Sun Feb 13 00:48:47 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (Date#===): [ruby-core:35127]
+
+Sun Feb 13 00:29:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Options#process_args): always
+ return options.
+
+ * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): return
+ if any test case get loaded.
+
+ * lib/test/unit.rb (Test::Unit::AutoRunner#initialize): do not add
+ default directory if it is nil.
+
+ * lib/test/unit.rb (Test::Unit::AutoRunner#process_args): return
+ true if any test cases to run.
+
+Sat Feb 12 23:17:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (assert_include): add alias.
+
+Sat Feb 12 14:44:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_io_blocking_region): new function to run
+ blocking region with GIL released, for fd.
+
+ * thread.c (rb_thread_fd_close): implement. [ruby-core:35203]
+
+ * vm.c (th_init): rename from th_init2.
+
+Sat Feb 12 14:41:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::AutoRunner#initialize): use
+ default_dir if no test case given.
+
+ * lib/test/unit.rb (Test::Unit::Runner): rename from Test::Unit::Mini.
+
+ * lib/test/unit.rb (Test::Unit::GlobOption#non_options): run tests
+ under base directory if no argument given.
+
+Sat Feb 12 08:03:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb (TestSetTraceFunc): ensure to use
+ method_added hook defined in Module.
+
+Sat Feb 12 01:04:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): enable rubygems if --gem option is given.
+
+ * ruby.c (process_options): load rubygems if it is disabled but
+ --gem option is given.
+
+Fri Feb 11 23:27:50 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ruby.c (proc_options): add --gem=enabled as an alias of
+ --enable=gems and --gem=disabled as an alias of --disable=gems.
+ Gem named "enabled" or "disabled" has already been reserved
+ legitimately for this purpose.
+
+Fri Feb 11 23:17:04 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/cfunc.c: parenthesize macro arguments.
+
+Fri Feb 11 21:41:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bin/testrb, test/runner.rb, lib/test/unit.rb: improve backward
+ compatibility.
+
+Fri Feb 11 19:45:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): use rb_ary_free to free internal object.
+
+ * gc.h (RUBY_FREE_UNLESS_NULL): get rid of double free.
+ [ruby-core:35192]
+
+Fri Feb 11 16:57:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_transcode.rb (test_from_cp50221): fix wrong
+ assertion and move back.
+
+Fri Feb 11 14:33:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_no_match): alias for
+ backward compatibility.
+
+Fri Feb 11 12:06:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (add_gems, require_libraries, proc_options): add
+ --require and --gem options.
+
+Fri Feb 11 12:03:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rubygems): add --disable-rubygems option.
+
+Fri Feb 11 11:39:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in (CROSS_COMPILING): get rid of NameError.
+
+Thu Feb 10 23:12:34 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/dl.h: parenthesize macro arguments.
+
+Wed Feb 9 23:11:27 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c: parenthesize macro arguments.
+
+Tue Feb 8 11:47:11 2011 Loren Sands-Ramshaw <lorensr@gmail.com>
+
+ * array.c: documentation clarification in rotate, rotate!,
+ index, and rindex. [ruby-core:35144]
+
+Wed Feb 9 09:45:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_encoding.rb: remove unnecessary (and wrong)
+ platform-dependent hacks.
+
+Wed Feb 9 00:47:18 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/etc/etc.c: parenthesize macro arguments.
+
+Tue Feb 8 19:38:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg): fix for invalid nest errors.
+
+Tue Feb 8 19:22:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in (AC_MSG_CHECKING): fixed typo. the patch is
+ created by Benoit Daloze. Thanks a lot. [Bug #4384][ruby-core:35148]
+
+Tue Feb 8 16:04:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_s_sysopen): use NUM2MODET() instead NUM2UINT().
+
+Tue Feb 8 15:59:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (rb_run_exec_options_err): use MODET2NUM() instead
+ LONG2NUM().
+
+Tue Feb 8 13:59:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: revert r30725. Now we have proper runtime fallback.
+ Therefore, no need compile time disabling. (see r30762).
+
+Tue Feb 8 01:00:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * process.c (proc_setgroups): add GC guard to prevent intermediate
+ variable from GC.
+
+Tue Feb 8 00:56:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg, ruby-in-here-doc-p): tell
+ singleton class definitions from here documents.
+
+ * misc/ruby-mode.el (ruby-expr-beg, ruby-parse-partial): keyword
+ followed by colon is label.
+
+Mon Feb 7 22:56:16 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/benchmark.rb (Benchmark#bmbm): use ensure clause instead of
+ Object#tap to restore STDOUT.sync.
+
+Mon Feb 7 22:34:20 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/net/http.rb (Net::HTTP#connect): support SNI (Server Name
+ Indication) for HTTPS. [ruby-dev:43164]
+ http://stackoverflow.com/questions/4685736/openssl-server-name-indication-support-in-ruby
+
+Mon Feb 7 16:05:32 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Upgrade to RDoc 3.5.3 Fixes [Bug #4376]
+
+Mon Feb 7 11:46:59 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (rdoc): add --encoding=UTF-8; ruby's rdoc must be UTF-8.
+
+Mon Feb 7 10:21:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_options.rb (TestRDocOptions#test_check_files):
+ there is no easy way to create owner unreadable file on Windows.
+ So, skip the test.
+
+Sun Feb 6 13:48:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/lib/json/common.rb (JSON::MissingUnicodeSupport.iconv):
+ should not drop rest of the result. use Iconv.conv instead.
+
+Sun Feb 6 12:46:02 2011 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (gsub): Ensure result encoding is the same as input
+ encoding. [Bug #4340].
+
+Sun Feb 6 12:18:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (words, qwords): dispatch array events. based on a
+ patch from Michael Edgar. [Bug #4365].
+
+Sun Feb 6 12:12:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/fileutils/fileasserts.rb (FileAssertions): separate module.
+
+Sun Feb 6 11:29:23 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c: parenthesize macro arguments.
+
+Sat Feb 5 22:01:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ revert r30796. r30797 and r30798 are an alternative fix.
+ [ruby-dev:43174]
+
+Sat Feb 5 21:47:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (mlhs_basic): include mlhs_post for ripper. a patch
+ from Michael Edgar at [ruby-core:35078].
+
+Sat Feb 5 21:22:21 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_block): move from
+ test/fileutils/fileasserts.rb.
+
+ * test/fileutils/fileasserts.rb (assert_block): pass arguments
+ as-is. [ruby-dev:43174]
+
+Sat Feb 5 16:47:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ msg can be passed nil. [Bug #4371] [ruby-dev:43174]
+
+Sat Feb 5 15:18:25 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Upgrade to RDoc 3.5.2
+
+Sat Feb 5 12:05:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_node_init_copy): SyckNode is not
+ copiable. [ruby-core:35094]
+
+Sat Feb 5 11:48:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_alloc): leave data ptr
+ NULL.
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_new, ossl_cipher_initialize):
+ allocate internal structure. [ruby-core:35094]
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_copy): ditto.
+
+Sat Feb 5 11:29:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/parser/parser.h (GET_PARSER): raise TypeError.
+
+ * ext/json/parser/parser.rl (cParser_initialize): ditto.
+
+ * ext/json/parser/parser.h (GET_PARSER): check if initialized.
+ [ruby-core:35079]
+
+ * ext/json/parser/parser.rl (cParser_initialize): ditto.
+
+Sat Feb 5 10:09:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_get_expanded_load_path): always expand load paths.
+
+Sat Feb 5 09:38:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (encoded_dup): extract.
+
+Sat Feb 5 03:37:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::LowMethods): make low level methods
+ in NoWrite and DryRun to do nothing. [ruby-dev:43129]
+
+ * test/fileutils/fileasserts.rb: add message arguments.
+
+ * test/fileutils/fileasserts.rb (Test::Unit::Assertions#assert_block):
+ show the given message.
+
+Sat Feb 5 02:09:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lex_getline, parser_set_encode): set encoding of lines
+ in SCRIPT_LINES__ as source encoding. [ruby-dev:43168]
+
+Sat Feb 5 02:08:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (ruby_thread_data_type): add prefix.
+
+Sat Feb 5 00:59:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (GetThreadPtr): use TypedData_Get_Struct() instead
+ CoreDataFromValue() because we need type check. Otherwise,
+ type mismatch can cause segmentation fault crash.
+ [ruby-core:35086] [Ruby 1.9-Bug#4367]
+
+ * vm.c (thread_data_type): remove static.
+
+Fri Feb 4 19:14:27 2011 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/utf8_mac.trans: parenthesize macro arguments.
+
+Fri Feb 4 12:11:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * string.c (str_utf8_nth): fixed a condition of optimized lead
+ byte counting. [Bug #4366][ruby-dev:43170]
+
+Fri Feb 4 01:50:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * string.c (count_utf8_lead_bytes_with_word): wrote function
+ comments.
+
+Fri Feb 4 00:14:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_reader_get_unused): no need to dup
+ before rb_str_resurrect.
+
+Thu Feb 3 20:04:44 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c (CHECK): unused macro removed.
+
+Thu Feb 3 18:33:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_reader_get_unused): use rb_str_resurrect
+ because gz->z.input is hidden string. [ruby-core:35057]
+
+Thu Feb 3 16:34:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/shift_jis.c (code_to_mbc): cast as int from the subtraction of
+ pointers.
+
+ * enc/utf_16le.c (utf16le_mbc_enc_len): use ptrdiff_t.
+
+ * enc/utf_32be.c (utf32be_left_adjust_char_head): ditto.
+
+ * enc/utf_32le.c (utf32le_left_adjust_char_head): ditto.
+
+Thu Feb 3 16:31:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/missing.h: don't use HAVE_STDDEF_H because it never
+ defined by configure though configure.bat defines it.
+
+ * include/ruby/ruby.h: move include stddef.h to defines.h
+
+ * include/ruby/defines.h: ditto.
+
+Wed Feb 2 20:25:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_step_back): cast 4th argument 'n'
+ as int because Ruby usually treats length value as long but
+ onigenc_step_back's 4th argument is int.
+
+Thu Feb 3 07:20:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: use Regexp::NOENCODING
+ rather than magic number.
+
+ * ext/syck/lib/syck/rubytypes.rb: ditto
+
+Thu Feb 3 07:16:11 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * re.c (Init_Regexp): added a constant for ARG_ENCODING_NONE
+ [ruby-core:35054]
+
+ * test/ruby/test_regexp.rb: corresponding test.
+
+Thu Feb 3 07:02:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: ARG_ENCODING_NONE regular
+ expressions can round trip. [ruby-core:34969]
+
+ * test/psych/test_yaml.rb: test for ARG_ENCODING_NONE regex
+
+ * ext/sych/lib/syck/rubytypes.rb: ARG_ENCODING_NONE regular
+ expressions can round trip.
+
+ * test/syck/test_yaml.rb: test for ARG_ENCODING_NONE regex
+
+Wed Feb 2 17:09:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_fdatasync): Use fsync(2) if the underlying
+ operating system does not support fdatasync(2).
+
+Wed Feb 2 14:51:08 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/to_tt_only.rb: commit miss
+ * test/rdoc/test_rdoc_markup_to_tt_only.rb: ditto
+ * test/rdoc/test_rdoc_single_class.rb: ditto
+
+Wed Feb 2 09:27:53 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Upgrade to RDoc 3.5.1
+
+Wed Feb 2 00:30:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/st.h (st_table): Added comment why we need __extension__.
+
+Tue Feb 1 20:45:44 2011 Tanaka Akira <akr@fsij.org>
+
+ * enc/encdb.c: parenthesize macro arguments.
+
+Tue Feb 1 15:12:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_require.rb (TestRequire#test_require_with_unc):
+ use ``127.0.0.1'' instead of ``localhost'' as host name, because
+ XP or earlier cannot resolv it as NBT hostname.
+
+Tue Feb 1 13:20:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/benchmark/test_benchmark.rb (#capture_bench_output):
+ Added explicit sleep. Windows have imprecise time support.
+ Thus Tms.new.Add!{} may be or may be not equal 0. The
+ test failure started since r30747.
+
+Tue Feb 1 11:03:47 2011 Ryan Davis <ryan@lust.local>
+
+ * lib/rubygems*: Import rubygems 1.5.0 (released version @ 1fb59d0)
+ * test/rubygems: Ditto
+
+Tue Feb 1 08:01:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_set_winsize): new method to set
+ console size. [EXPERIMENTAL]
+
+ * ext/io/console/console.c (console_winsize): use GetWriteFD.
+
+Tue Feb 1 02:28:14 2011 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * include/ruby/win32.h, win32/win32.c: add rb_w32_inet_ntop.
+ inet_ntop's minimum supported client is Vista.
+
+Tue Feb 1 00:10:30 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/benchmark.rb: fix benchmark to work with current ruby.
+ patched by Benoit Daloze [ruby-core:33846] [ruby-dev:43143]
+ merged from https://github.com/eregon/ruby/commits/benchmark
+
+ * lib/benchmark (Report#width): update documentation
+ * lib/benchmark: document the return value of #benchmark and the
+ :list attribute in Report
+ * lib/benchmark (Tms#format): rename variables, use String#%
+ instead of Kernel.format
+ * lib/benchmark: remove undocumented Benchmark::times (an alias
+ of Process::times used twice)
+ * lib/benchmark (#benchmark): use label_width for the caption
+ * lib/benchmark (Tms#initialize): rename variables
+ * lib/benchmark: allow title to not be a String and call #to_s
+ * lib/benchmark (Benchmark#bm): return an Array of the times with
+ the labels
+ * lib/benchmark: correct output for Benchmark#bmbm
+ (remove the extra space)
+ * lib/benchmark: add a few tests for Benchmark::Tms output
+ * lib/benchmark: improve style (enumerators, ljust, unused vars)
+ * lib/benchmark: add spec about output and return value
+ * lib/benchmark: improve basic style and consistency
+ no parenthesis for print and use interpolation instead of printf
+ * lib/benchmark: remove unnecessary conversions and variables
+ * lib/benchmark: correct indentation
+ * lib/benchmark: rename the FMTSTR constant and variable to FORMAT
+ * lib/benchmark: remove useless exception
+
+ * test/benchmark: remove unused variable warnings
+
+Mon Jan 31 23:27:23 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * node.c (add_id): remove duplicated rb_id2str() call.
+
+Sun Jan 30 17:19:46 2011 Tanaka Akira <akr@fsij.org>
+
+ * missing/langinfo.c: parenthesize macro arguments.
+
+Mon Jan 31 21:57:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: revert r30698.
+
+Mon Jan 31 21:32:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread.c (thread_start_func_2): check deadlock condition before
+ release thread stack. fix memory violation when deadlock detected.
+ reported by Max Aller. [Bug #4009] [ruby-core:32982]
+
+Mon Jan 31 14:45:47 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/locale.rb (IRB::Locale::#search_file):
+ Gem might be undefined if --disable-gems. [ruby-core:34990]
+
+Mon Jan 31 12:26:14 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: suppressed shorten-64-to-32 warnings.
+ * regcomp.c: ditto.
+ * regexec.c: ditto.
+ * regint.h: ditto.
+ * regparse.c: ditto.
+ * regparse.h: ditto.
+ * time.c: ditto.
+ * variable.c: ditto.
+
+Mon Jan 31 04:45:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_uniq_bang): call ARY_SET_LEN(ary, 0) before
+ ary_resize_capa because ary_resize_capa expects resized length is
+ smaller than current array length. call rb_ary_unshare before
+ ary_resize_capa because ary_resize_capa lost the reference to
+ original shared array. [ruby-core:34997]
+
+Sun Jan 30 17:19:46 2011 Tanaka Akira <akr@fsij.org>
+
+ * missing/crypt.c: parenthesize macro arguments.
+
+Sun Jan 30 16:40:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rubygems/test_gem_security.rb (TestGemSecurity): valid only
+ if OpenSSL is available.
+
+ * test/dl/test_dl2.rb (TestDL#test_sin): math functions do not
+ work on x86_64 due to the design of DL2.
+
+ * test/dl/test_func.rb (DL::TestFunc#test_{sinf,sin): ditto.
+
+Sun Jan 30 16:09:22 2011 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime_with_timespec): %G produces 4 digits.
+
+Sun Jan 30 15:13:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/emacs_mule.c (emacsmule_islead): 7bit range is also leading
+ byte.
+
+Sun Jan 30 13:03:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_fetch_m): use useful message for longer key, not a
+ nonsense id value.
+
+ * string.c (rb_str_ellipsize): new function to ellipsize a string.
+
+ * include/ruby/encoding.h (rb_enc_step_back): new function to step
+ back n characters.
+
+Sun Jan 30 12:53:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/emacs_mule.c (emacsmule_islead): fix inverse condition.
+
+Sun Jan 30 09:37:25 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * io.c (struct argf): char behaves like an unsigned char
+ by default on AIX.
+
+Sun Jan 30 08:02:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: Mac OS X wrongly reports it has fdatasync(3).
+
+Sun Jan 30 03:29:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_bn.c (GetBNPtr): add missing nil case.
+ patched by Martin Bosslet. [ruby-core:34987]
+
+Sun Jan 30 01:02:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h: Added NUM2MODET() and MODET2NUM() default
+ definition.
+ Because r30686 introduced win32 build failure.
+
+Sat Jan 29 22:16:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_join): [].join.encoding must be US-ASCII.
+ [ruby-list:47790]
+
+Sat Jan 29 20:22:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/driver.rb (BenchmarkDriver#measure): Show command line
+ when abnormal exiting occur.
+
+Sat Jan 29 10:53:16 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_get_ev_const): no-scope reference to toplevel
+ private constant has been prohibited incorrectly.
+
+ * test/ruby/test_module.rb (test_toplevel_private_constant): add a
+ test for above.
+
+Sat Jan 29 08:43:23 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rubygems*: Import rubygems 1.5.0 (release candidate @ 09893d9)
+ * test/rubygems: Ditto
+
+Sat Jan 29 02:02:37 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (rb_mod_const_of, sv_i): Module#constant should exclude
+ private constants. see [ruby-core:32912].
+
+ * test/ruby/test_module.rb (test_constants_with_private_constant): add
+ a test for above.
+
+Sat Jan 29 01:36:41 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (rb_const_set): const_set should preserve constant
+ visibility. see [ruby-core:32912].
+
+ * test/ruby/test_module.rb: add a test for above.
+
+Sat Jan 29 01:24:57 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (NODE_CLASS, NODE_MODULE), insns.def (defineclass): raise
+ an exception when "class Foo::Bar" is evaluated and Foo::Bar is
+ private. To implement this, define_type of "defineclass" is added
+ so that the instruction can distinguish whether the class definition
+ is scoped (class Foo::Bar) or not (class Bar).
+
+ * test/ruby/test_class.rb (test_redefine_private_class),
+ test/ruby/test_module.rb
+ (test_define_module_under_private_constant): add tests for above.
+
+Sat Jan 29 01:19:17 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * constant.h, variable.c: to ensure compatibility, rb_const_get_* must
+ not raise an exception even when the constant is private. Instead,
+ rb_public_const_get_* and rb_public_const_defined_* are introduced,
+ which raise an exception when the referring constant is private.
+ see [ruby-core:32912].
+
+ * vm_insnhelper.c (vm_get_ev_const): use rb_public_const_get_* instead
+ of rb_const_get_* to follow the constant visibility when user code
+ refers a constant.
+
+ * test/ruby/test_marshal.rb (test_marshal_private_class): add a test.
+ This test had failed because of incompatibility of rb_const_get.
+
+Sat Jan 29 00:30:44 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (set_const_visibility): fix typo. a patch from Tomoyuki
+ Chikanaga in [ruby-core:32919].
+
+Fri Jan 28 23:20:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create,
+ TestGDBM2#test_writer_open_notexist): We only need to skip libgdbm
+ 1.8.0, not all 1.8.x. 1.8.1 or later don't have GDBM_WRITER sickness.
+
+Fri Jan 28 21:56:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/dbm/extconf.rb: Added new header places for Fedora13.
+
+Fri Jan 28 21:49:30 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/zlib/zlib.c: parenthesize macro arguments.
+
+Fri Jan 28 17:47:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/gdbm/test_gdbm.rb (TestGDBM2#test_writer_open_notexist):
+ gdbm 1.8.x changed GDBM::WRITER behavior. Thus our testcase need
+ to be changed too.
+
+Fri Jan 28 17:33:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create): skip
+ the test if gdbm version is 1.8.x.
+
+Fri Jan 28 16:30:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_require.rb (TestRequire#test_require_too_long_filename):
+ Added -w option because too long path error don't output a message
+ by default since r30660. [Bug #4336] [ruby-dev:43134]
+
+Fri Jan 28 16:19:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_require.rb (TestRequire#test_require_path_home_{1,2}):
+ Added -w option because too long path error don't output a message
+ by default since r30660. [Bug #4336] [ruby-dev:43134]
+
+Fri Jan 28 16:04:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_require.rb (TestRequire#test_require_path_home_{1,2,3}):
+ split from test_require_path_home.
+
+Fri Jan 28 13:04:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in (--with-valgrind): Fixed r29683. Now this option
+ is really default on.
+
+Fri Jan 28 12:05:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Add #include<sys/stat.h> when struct stat is
+ tested. Otherwise, incomplete type dereference error will occur.
+
+Fri Jan 28 11:53:19 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: redundant variable names made strange conftest
+ error. Fixed it.
+
+Fri Jan 28 11:47:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess#test_too_long_path{,2}):
+ should handle Errno::E2BIG, because this test checks crash of ruby,
+ not the error type system.
+
+Fri Jan 28 11:23:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_open): Use NUM2MODET() instead NUM2UINT().
+ * io.c (rb_scan_open_args): ditto.
+
+Fri Jan 28 10:58:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Added mode_t type checking.
+ * process.c (rb_exec_arg_addopt): Use NUM2MODET() instead
+ NUM2LONG because clang makes compile error by this narrowing
+ conversion.
+ * process.c (rb_run_exec_options_err): ditto.
+
+Fri Jan 28 02:37:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * re.c (rb_reg_raise): add GC guard to prevent intermediate
+ variable from GC.
+
+Fri Jan 28 02:35:41 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * hash.c (rb_hash_fetch_m): add GC guard to prevent intermediate
+ variable from GC.
+
+Fri Jan 28 01:33:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_process.rb (TestProcess#test_too_long_path)
+ TestProcess#test_too_long_path): Reduced string size from 100MB
+ to 10MB. 100MB may cause no memory error. It isn't intended.
+
+Fri Jan 28 01:27:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_process.rb (TestProcess#test_too_long_path2):
+ Factored out from test_too_long_path. A test should only do
+ one test.
+
+Thu Jan 27 23:29:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_foreach): check if unpacked.
+
+Thu Jan 27 23:14:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-map): remove deprecated binding.
+ use M-; instead.
+
+Thu Jan 27 21:58:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c (rb_str_to_inum): get rid of too huge alloca().
+
+Thu Jan 27 21:43:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * object.c (rb_str_to_dbl): rewrite again. use ALLOCV instead
+ rb_str_tmp_new().
+
+Thu Jan 27 21:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c: get rid of STRNDUPA(). It's dangerous API.
+
+Thu Jan 27 21:31:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (rb_w32_aspawn): get rid of too huge alloca().
+ [Bug #4330] [ruby-core:34898]
+
+Thu Jan 27 20:30:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (rb_w32_spawn): get rid of too huge alloca().
+
+Thu Jan 27 18:49:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (open_dir_handle): get rid of too huge alloca().
+
+Thu Jan 27 18:34:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * file.c (w32_io_info): get rid of too huge alloca().
+ [Bug #4313] [ruby-core:34830]
+
+Thu Jan 27 18:19:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (wstati64): get rid of too huge alloca().
+ [Bug #4316] [ruby-core:34834]
+
+Thu Jan 27 15:11:52 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): get rid of too huge
+ alloca(). this is the real fix of [ruby-core:34833].
+
+Thu Jan 27 12:46:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (ALLOC_ARGV_WITH_STR): fix void pointer arithmetic.
+
+Thu Jan 27 08:41:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_exec_v, rb_proc_exec_n, rb_proc_exec)
+ (proc_spawn_n, proc_spawn): get rid of too huge alloca().
+ [ruby-core:34827], [ruby-core:34833]
+
+Thu Jan 27 08:32:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (ALLOCV): new API for exception-safe
+ temporary buffer. [ruby-core:34844]
+
+ * string.c (rb_alloc_tmp_buffer, rb_free_tmp_buffer):
+ implementation of the API.
+
+Thu Jan 27 08:22:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln_find.c (dln_find_1): use rb_warning and return immediately
+ if fname is longer than buffer.
+
+Wed Jan 26 22:57:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * class.c (clone_method): add GC guard to prevent intermediate
+ variable from GC. [Bug #4321] [ruby-dev:43107]
+
+Wed Jan 26 22:45:16 2011 Tanaka Akira <akr@fsij.org>
+
+ * template/id.h.tmpl: parenthesize macro arguments.
+
+Wed Jan 26 22:28:49 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * vm_eval.c (rb_throw_obj): add GC guard to prevent intermediate
+ variable from GC. [Bug #4322] [ruby-dev:43108]
+
+Wed Jan 26 17:08:59 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): OpenSSL::ASN1.decode
+ should reject indefinite length primitive encodings as that is
+ illegal. Patch by Martin Bosslet. See #4324.
+
+Wed Jan 26 10:36:28 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (=~): documentation fix; the return value is nil when
+ it doesn't match. patched by Andrei Kulakov [ruby-core:34562]
+
+Tue Jan 25 08:41:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln_find.c (dln_find_1): omit too long pathnames.
+
+Tue Jan 25 08:28:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_resize): get rid of out-of-bound access.
+
+Tue Jan 25 07:48:22 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_thread.rb: remove unused variables.
+
+Tue Jan 25 07:45:44 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_thread.rb (TestThread#test_condvar_nolock_2): get
+ rid of method redefined.
+
+Tue Jan 25 07:00:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_string_value_cstr): rb_str_modify can change
+ RSTRING_PTR.
+
+Tue Jan 25 03:24:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb: Added various ConditionVariable tests.
+
+Mon Jan 24 22:26:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * object.c (rb_str_to_dbl): Fix again. use rb_str_tmp_new()
+ instead ALLOC_N.
+
+Mon Jan 24 21:50:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_insnhelper.h: parenthesize macro arguments.
+
+Mon Jan 24 21:28:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * object.c (rb_str_to_dbl): use ALLOC_N instead ALLOCA_N because
+ ALLOC_N may cause stack overflow.
+
+Mon Jan 24 21:04:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_invalid_str): prevent intermediate variable from GC.
+ [ruby-core:34820]
+
+Sun Jan 23 23:01:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/io/console/test_io_console.rb: Don't run test if the system
+ don't support io/console.
+
+Sun Jan 23 22:17:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/fiddle/test_fiddle.rb: Don't run test if the system don't support
+ fiddle.
+
+ * test/fiddle/test_function.rb: ditto.
+ * test/fiddle/test_closure.rb: ditto.
+
+Sun Jan 23 11:39:18 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_exec.h: parenthesize macro arguments.
+
+Sun Jan 23 10:33:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in (ruby): suppress warnings.
+
+Sun Jan 23 08:00:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_nth_len, str_utf8_nth): return the rest length together.
+
+ * string.c (rb_str_substr): get rid of measure the length always
+ to improve performance for huge string. [ruby-core:34648]
+
+Sun Jan 23 00:40:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/test_syslog.rb: Fix to make a lot of test failure if
+ the platform doesn't support syslog.
+
+Sat Jan 22 11:49:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: fixing merge key support
+ when multiple merge keys are specified.
+
+ * test/psych/test_merge_keys.rb: tests for multi-merge key support
+
+Sat Jan 22 11:33:04 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: merge keys are actually
+ part of YAML 1.1, so they should be supported. Remove warning and
+ merge keys to parent. [ruby-core:34679]
+
+ * test/psych/test_merge_keys.rb: test for merge keys
+
+Sat Jan 22 10:25:19 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): add the file name to the exception when
+ parse errors occur.
+
+ * test/psych/test_parser.rb: test for parse error file name
+
+Sat Jan 22 10:12:30 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): fix assertion error when reusing a
+ parser after an exception has been raised
+
+ * test/psych/test_parser.rb: test for assertion error
+
+Sat Jan 22 04:09:22 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/nodes/node.rb: Make Psych::Nodes::Node
+ enumerable.
+
+ * ext/psych/lib/psych/visitors/depth_first.rb: Add a depth-first
+ visitor to enumerate over a YAML AST in a depth-first fashion
+
+ * test/psych/nodes/test_enumerable.rb: test for enumerating nodes
+
+ * test/psych/visitors/test_depth_first.rb: test for depth-first
+ visitor
+
+Sat Jan 22 00:53:42 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_core.h: parenthesize macro arguments.
+
+Fri Jan 21 18:15:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: should not use -Werror=* flags while conftests.
+
+Fri Jan 21 09:17:00 2011 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in: Fix incorrectly detected x86_64-w64-mingw32 due
+ canonalization of target_os. Bug #3889 [ruby-core:32634]
+
+Thu Jan 20 23:44:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Fix rb_cv_va_args_macro was broken. We are using
+ -Werror=implicit-function-declaration compile option. therefore
+ we need a function declaration explicitly.
+
+Thu Jan 20 23:58:02 2011 Tanaka Akira <akr@fsij.org>
+
+ * node.h: parenthesize macro arguments.
+
+Thu Jan 20 23:25:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Add '#include <stdlib.h>' to
+ rb_cv_localtime_overflow test too. It's reported by Tomoyuki
+ Chikanaga. Thanks.
+
+Thu Jan 20 16:11:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * README.EXT, README.EXT.ja: You shouldn't choose ``conftest.c'' as a
+ name of a source file.
+
+Thu Jan 20 12:15:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Add stdlib.h inclusion into rb_cv_negative_time_t
+ test because it's required for exit(3). The patch is
+ created by Tomoyuki Chikanaga. [Bug #4287] [ruby-dev:43060]
+
+Thu Jan 20 11:39:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/webrick/utils.rb (TestWEBrick::RubyBin): test CGI does not need
+ to load rubygems. if it activated, ruby raises LoadError about
+ rbconfig.rb.
+
+Thu Jan 20 09:19:42 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/json_tree.rb: Fix JSON emit for
+ DateTime and Time classes.
+
+ * test/psych/test_json_tree.rb: test for JSON emit
+
+Thu Jan 20 08:02:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/coder.rb (represent_object): arbitrary objects
+ may be passed to the Psych::Coder object.
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: support for visiting
+ arbitrary objects set on the coder.
+
+ * test/psych/test_coder.rb: supporting test case.
+
+Thu Jan 20 06:03:17 2011 Tanaka Akira <akr@fsij.org>
+
+ * method.h: parenthesize macro arguments.
+
+Wed Jan 19 13:16:05 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/sources_command.rb: Finish removing code,
+ (fixes sources command test).
+
+Wed Jan 19 13:04:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * proc.c (proc_call): Add gc guard to avoid segfault. The fix
+ is created by Tomoyuki Chikanaga. [Bug #4238][ruby-dev:42963]
+
+Wed Jan 19 12:31:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Since gem_prelude requires rubygems, enable
+ custom_require always.
+
+Wed Jan 19 12:08:08 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/dependency_command.rb: Remove require of
+ deleted file.
+ * lib/rubygems/commands/fetch_command.rb: ditto
+ * lib/rubygems/commands/setup_command.rb: ditto
+ * lib/rubygems/commands/sources_command.rb: ditto
+ * lib/rubygems/commands/specification_command.rb: ditto
+
+Wed Jan 19 08:13:59 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rubygems*: Import rubygems 1.5.0 (release candidate)
+ * test/rubygems: Ditto
+
+Tue Jan 18 23:31:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y: avoid NULL reference. [ruby-dev:43067]
+
+Wed Jan 19 02:54:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (cvt): set first byte of buf to NUL for the case when
+ no bytes are written to the buf. [ruby-dev:43062]
+
+Tue Jan 18 23:04:51 2011 Tanaka Akira <akr@fsij.org>
+
+ * gc.h: parenthesize macro arguments.
+
+Tue Jan 18 18:31:14 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/completion.rb: Irb tab completion support for XX::method
+ forms.
+
+Tue Jan 18 15:05:55 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: added RDoc document for logging message escape
+ by Hal Brodigan. See #3869
+
+Tue Jan 18 07:53:52 2011 Tanaka Akira <akr@fsij.org>
+
+ * eval_intern.h: parenthesize macro arguments.
+
+Tue Jan 18 04:42:44 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/parser.rb (Mark): Adding a class to wrap
+ marker information
+
+ * ext/psych/parser.c (mark): Add a method to return the mark object
+ for the parser
+
+ * test/psych/test_parser.rb: tests for the Mark class.
+
+Tue Jan 18 02:46:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/json_tree.rb (visit_String): JSON
+ strings should be dumped with double quotes. [ruby-core:34186]
+
+ * test/psych/test_json_tree.rb: test for double quotes
+
+Mon Jan 17 23:36:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * array.c (rb_ary_times): less MEMCPY calls.
+
+Mon Jan 17 22:54:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * debug.h: parenthesize macro arguments.
+
+Mon Jan 17 21:40:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): revert r30549.
+
+Sun Jan 16 20:55:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * vsnprintf.c: parenthesize macro arguments.
+
+Sat Jan 15 11:57:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags): add -Werror=implicit-function-declaration
+ if available.
+
+ * lib/mkmf.rb (init_mkmf): ignore warnings in mkmf tests.
+
+ * test/mkmf/base.rb (setup, teardown): restore config values.
+
+ * test/mkmf/test_flags.rb: split from test_find_executable.rb.
+
+Sat Jan 15 10:04:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): autoload rubygems.
+
+ * tool/compile_prelude.rb (Prelude#initialize): ignore empty
+ preludes.
+
+ * ruby.c (ruby_init_prelude): get rid of global namespace
+ pollution.
+
+Sat Jan 15 09:42:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h: missing prototypes.
+
+Fri Jan 14 23:25:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_method.c: parenthesize macro arguments.
+
+Fri Jan 14 15:32:29 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb: call neither logout nor disconnect
+ unless connected. patch by Kazuhiro NISHIYAMA. [ruby-dev:42860]
+
+Fri Jan 14 14:56:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/imap.rb: use bytesize for binary strings.
+ patched by Yoshimasa Niwa. [ruby-core:34222]
+
+Fri Jan 14 14:01:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_unpack): the resulted string of unpack('M') must have
+ ASCII-8BIT encoding (and ENC_CODERANGE_VALID). [ruby-core:34482]
+
+Fri Jan 14 13:38:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_check_footer): ISIZE (Input SIZE) in
+ gzip's header is the size of uncompressed input data modulo 2^32.
+ [ruby-core:34481] http://www.ietf.org/rfc/rfc1952.txt
+
+Fri Jan 14 11:36:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (RUNRUBY): require path should
+ include "." because rbconfig.rb is there.
+
+Fri Jan 14 10:40:11 2011 Ryan Davis <ryan@lust.local>
+
+ * gem_prelude.rb: Just require rubygems. Fixes rubygems 1.4.
+ * lib/rubygems.rb: removed all Gem::Quickloader code.
+ * ruby.c: renamed ruby_init_gems to ruby_init_prelude. Set
+ $disable_rubygems since there is no fine grained mechanism to
+ skip parts of the prelude. Open to suggestions on how to do this
+ better.
+ * test/*.rb: Load path isn't set up correctly, so add
+ --disable-gems as needed to failing tests that are explicitly
+ testing stderr w/ ==.
+
+Fri Jan 14 07:30:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_next_argv): go advance when the next file cannot be
+ read. [ruby-core:34446]
+
+Thu Jan 13 20:49:19 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_insnhelper.c: parenthesize macro arguments.
+
+Thu Jan 13 13:21:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * vm_dump.c: delete dashes to make lines 80 chars, Patched by
+ Shota Fukumori (sora_h). [Bug #4275] [ruby-dev:43021]
+
+Thu Jan 13 13:21:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * vm_dump.c: fix misspelling of CrashReporter, Patched by Shota
+ Fukumori (sora_h). [Bug #4275] [ruby-dev:43021]
+
+Thu Jan 13 06:27:29 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * error.c: Exception#to_s should actually call to_s.
+
+Thu Jan 13 00:32:54 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c (get_nth_dirname): decrement the directory index
+ because the index specifies the index of given included_directories
+ which is separated by NUL and its index is begun from 1.
+ Note that 0 specifies the current directory of the compilation.
+ see also http://www.dwarfstd.org/doc/dwarf-2.0.0.pdf
+
+Thu Jan 13 00:06:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_f_syscall): Add warning messages. [ruby-core:34062]
+
+Thu Jan 13 00:00:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_f_syscall): Some syscall return unsigned or pointer value.
+ Therefore we should only check the result is -1 or not.
+ [ruby-core:34062]
+
+Wed Jan 12 23:55:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_f_syscall): Add 64bit Linux support. Some syscall takes
+ long type arguments.
+
+Wed Jan 12 19:37:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_dump.c: parenthesize macro arguments.
+
+Wed Jan 12 19:28:23 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm.c (thread_free): reset ruby_current_thread if it points the
+ thread to free.
+ * gc.c (slot_sweep): don't call RUBY_VM_SET_FINALIZER_INTERRUPT if
+ there is no current thread.
+ [ruby-dev:43000]
+
+Wed Jan 12 19:09:29 2011 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (sort_by_i): reenter check more strictly.
+ (sort_by_cmp): ditto.
+ [ruby-dev:43003] reported by Usaku NAKAMURA.
+
+Wed Jan 12 16:25:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/net/http.rb (Net::HTTP#connect): makes it timeout during
+ SSL handshake too. [ruby-core:34203]
+ Patch by Marc Slemko.
+
+ * test/net/http/test_http.rb (TestNetHTTP_v1_2#test_timeout_during_HTTP_session):
+ test for [ruby-core:34203]
+
+ * test/net/http/test_https.rb (TestNetHTTPS#test_timeout_during_SSL_handshake):
+ ditto.
+
+Wed Jan 12 16:24:53 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/readline/extconf.rb: new checks for RL_PROMPT_START_IGNORE
+ and RL_PROMPT_END_IGNORE. [ruby-core:34331]
+
+ * ext/readline/readline.c: enables USE_INSERT_IGNORE_ESCAPE only if
+ RL_PROMPT_{START,END}_IGNORE are available to get rid of compilation
+ error with libedit.
+
+Wed Jan 12 15:53:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT.ja (rb_ensure): typo.
+
+Wed Jan 12 11:33:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: OpenBSD uses the elf_abi.h header file instead of the
+ elf.h header file. patched by Jeremy Evans [ruby-core:34384]
+
+Wed Jan 12 03:59:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/webrick/test_cgi.rb: Removes usage of deprecated
+ :RequestHandler option.
+ patched by Peter Weldon [ruby-core:34010]
+
+ * test/webrick/test_httpproxy.rb: ditto.
+
+ * test/webrick/test_httpserver.rb: Add a test of the deprecation
+ behaviour.
+
+Wed Jan 12 08:37:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (hash_i): return different values for inverse hash.
+ [ruby-core:34334]
+
+Tue Jan 11 20:32:59 2011 Tanaka Akira <akr@fsij.org>
+
+ * variable.c: parenthesize macro arguments.
+
+Tue Jan 11 13:06:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (rb_ary_resize): should care of embeded array when extending
+ the array.
+
+ * array.c (rb_ary_resize): need to set capa when changing the real
+ size of the array.
+ these are latent bugs.
+
+Mon Jan 10 22:46:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/defines.h (CASEFOLD_FILESYSTEM): HFS+ is case
+ insensitive.
+
+ * load.c (loaded_feature_path, rb_feature_p, load_lock): on a
+ case-insensitive filesystem, loaded features search should
+ ignore case. [ruby-core:34297]
+
+Mon Jan 10 21:34:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (showflags): show LD commands.
+
+Mon Jan 10 14:32:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_method.rb (TestMethod#test_define_method): method
+ transplanting between class and module is impossible.
+
+Mon Jan 10 13:51:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/rdoc-mode.el (rdoc-mode): show trailing whitespace.
+
+Mon Jan 10 11:22:02 2011 Tanaka Akira <akr@fsij.org>
+
+ * util.c: parenthesize macro arguments.
+
+Mon Jan 10 07:41:31 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * misc/README: mention rdoc-mode.el and ruby-style.el.
+
+Sun Jan 9 20:37:21 2011 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c: parenthesize macro arguments.
+
+Sun Jan 9 16:31:53 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * io.c (Kernel.#syscall): implemented on LP64/LLP64 environments too.
+ also uses __syscall if available for *BSD on 64bit architecture.
+ [ruby-core:34062]
+
+Sun Jan 9 16:31:34 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/locale.rb (IRB::Locale::LOCALE_NAME_RE):
+ some platform has a locale without territory but with
+ encoding.
+ (#each_sub_locale): ditto.
+
+Sun Jan 9 14:47:50 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c: apply a patch from Nobuyoshi Nakada.
+ fixed #3616 [ruby-core:31484] IRB + readline incorrectly counts
+ non-printing characters in prompt
+
+Sat Jan 8 21:47:26 2011 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_sort_by): use rb_ary_resize.
+ (ary_cutoff): removed.
+
+Sat Jan 8 21:24:17 2011 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (swapf): compilation condition simplified.
+ (swapd): ditto.
+
+Sat Jan 8 20:51:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (swapd): remove duplicated code.
+
+Sat Jan 8 19:28:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * thread.c: parenthesize macro arguments.
+
+Fri Jan 7 23:07:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): backref needs to capture.
+
+Fri Jan 7 21:57:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-variables), misc/ruby-style.el:
+ show trailing whitespace.
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): highlight
+ regexp after open bracket. [ruby-core:34183]
+
+Fri Jan 7 00:37:35 2011 Tanaka Akira <akr@fsij.org>
+
+ * string.c: parenthesize macro arguments.
+
+Thu Jan 6 22:42:02 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigmul1_karatsuba): avoid overflow that make assertion
+ fail in certain case. this patch is contributed from Ray Chason
+ <chasonr at gmail.com> in personal communication.
+
+Thu Jan 6 20:55:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): ignore rest from first dot from
+ TARGET to generate init function name.
+ this is followup of r30464.
+
+Thu Jan 6 11:27:01 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/tree_builder.rb (start_mapping): tags
+ should not be included in JSON mapping
+
+Thu Jan 6 09:23:33 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/net/protocol.rb (eof?): BufferedIO should proxy eof? to the
+ underlying IO object.
+
+Thu Jan 6 09:12:31 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/mkmf.rb (configuration): fixing gsub when multiple error flags
+ are passed to GCC.
+
+Thu Jan 6 05:25:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_modify): export.
+
+Thu Jan 6 05:14:41 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (get_strio, strio_set_string)
+ (strio_reopen): check if frozen. [ruby-core:33648]
+
+Thu Jan 6 05:10:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_resize): new utility function. [ruby-dev:42912]
+
+Thu Jan 6 05:03:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (init_funcname_len): ignore rest from first dot.
+ [ruby-dev:41774]
+
+Thu Jan 6 02:55:48 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: use YAML 1.0 output
+ format for serializing nil values. Thanks Eric Hodel!
+
+ * test/psych/test_nil.rb: test for nil values
+
+Wed Jan 5 14:21:34 2011 Mark Dodwell <hi@mkdynamic.co.uk>
+
+ * string.c: fix rdoc typo.
+ https://github.com/shyouhei/ruby/pull/3
+
+Wed Jan 5 14:06:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_options.rb (TestRDocOptions#test_check_files):
+ skip on Windows because chmod 0 doesn't mean unreadable by owner.
+
+Wed Jan 5 13:56:54 2011 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/net/http.rb (Net::HTTP#get): A header hash given should not
+ be modified.
+
+Wed Jan 5 12:10:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/dl/{cfunc.c,dl.h,handle.c}, ext/fiddle/fiddle.{h,c}: Use _WIN32
+ rather than checking for windows.h. Thanks Jon Forums!
+ [ruby-core:33977]
+
+Sat Jan 1 17:02:50 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/locale.rb (IRB::Locale#search_file): make it possible
+ to load a localization from a gem.
+ (IRB::Locale#lc_path): obsoleted because of the change of #search_file
+ (IRB::Locale#each_localized_path): new private method, based on
+ lc_path
+ (IRB::Locale#find): follows the change of #search_file.
+ (IRB::Locale#load): removed duplicate with #find.
+
+Sat Jan 1 11:44:42 2011 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c: parenthesize macro arguments.
+
+Sat Jan 1 11:10:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c: take care of platforms where long is bigger
+ than int.
+
+Sat Jan 1 11:03:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS (optparse): shell completion support.
+
+ * misc/README (rb_optparse.{bash,zsh}): for shell completion.
+
+ * include/ruby/intern.h (VALUE rb_ary_print_on): I have never seen
+ this function anywhere.
+
+Sat Jan 1 04:20:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_write_console): don't raise exception when
+ the conversion is for writing to console.
+ Patched by Heesob Park [ruby-core:33999]
+
+Fri Dec 31 12:02:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_sort_by): use less temporary objects.
+
+Fri Dec 31 11:46:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags), lib/mkmf.rb (configuration): turn
+ warnings into errors only for bundled extensions.
+ [ruby-core:33815]
+
+Fri Dec 31 11:15:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (sizeof): zlib.h mistakenly assumes the result
+ of sizeof to be int, not size_t.
+
+Fri Dec 31 10:27:34 2010 Tanaka Akira <akr@fsij.org>
+
+ * st.c: parenthesize macro arguments.
+
+Fri Dec 31 03:23:26 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD__uqtoa): Fix overflow when long != quad_t.
+ patched by Peter Weldon <peter.weldon AT null.net>
+ [ruby-core:33985]
+
+Fri Dec 31 03:00:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * Makefile.in: remove unnecessary semicolons.
+
+Thu Dec 30 23:09:47 2010 wanabe <s.wanabe@gmail.com>
+
+ * vm.c (vm_define_method): guard iseq from GC while method definition.
+ [ruby-dev:42832]
+
+Thu Dec 30 20:18:32 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/Makefile.sub: ditto.
+
+Thu Dec 30 20:57:09 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * Makefile.in: Check V=1 argument if run "make clean" or similar.
+
+Thu Dec 30 20:41:50 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * Makefile.in: Kill ugly line continuation.
+
+Thu Dec 30 11:49:40 2010 Tanaka Akira <akr@fsij.org>
+
+ * sprintf.c: parenthesize macro arguments.
+
+Wed Dec 29 21:20:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (maygvl_copy_stream_wait_readwrite): define if USE_SENDFILE
+
+Wed Dec 29 20:37:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: strip current directory prefix.
+
+ * enc/depend (clean): remove name2ctype.h when out-of-place build.
+
+ * win32/Makefile.sub (clean-enc): pass V to inferior make.
+
+Wed Dec 29 18:23:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): need to escape if the coderange is invalid.
+
+Wed Dec 29 10:06:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * signal.c: parenthesize macro arguments.
+
+Wed Dec 29 07:22:15 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake/rdoctask.rb: Deprecate in favor of rdoc/task.
+
+Wed Dec 29 07:07:06 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 3.1
+
+Tue Dec 28 18:36:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c, include/ruby/intern.h (rb_compile_error_with_enc): new
+ function to raise syntax error, with source encoding'ed message.
+
+ * parse.y (compile_error): use above function.
+ [ruby-core:33951] (#4217)
+
+Tue Dec 28 07:37:38 2010 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c: parenthesize macro arguments.
+
+Tue Dec 28 07:17:11 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add ARGF.write and so on.
+
+Tue Dec 28 07:12:38 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add new magic-comment. (warn-indent) [ruby-core:25442]
+
+Tue Dec 28 04:32:37 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/extconf.rb: check for windows.h while building fiddle.
+ Thanks Jon Forums! [ruby-core:33923]
+
+Tue Dec 28 01:45:12 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: Add Zlib.deflate and Zlib.inflate.
+ [ruby-dev:42833]
+
+Mon Dec 27 21:22:33 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/configure.bat: Remove obsoleted coding rule. Now, we
+ don't support to build on Windows 95/98 and Me.
+
+Mon Dec 27 18:27:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * re.c: parenthesize macro arguments.
+
+Mon Dec 27 15:22:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/README.win32: note to need NT based OS to build ruby.
+
+Mon Dec 27 12:14:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (EXTMK_ARGS): specify to pass macro V, because nmake
+ doesn't pass it via MAKEFLAGS.
+
+Mon Dec 27 10:33:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/zlib/zlib.c (Init_zlib): Add Zlib.deflate and Zlib.inflate.
+ [ruby-dev:42833]
+
+Mon Dec 27 07:38:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * misc/rb_optparse.zsh: add compdef for generator.
+
+Mon Dec 27 07:32:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/optparse.rb (OptionParser#compsys): escape brackets too.
+ [ruby-dev:42754]
+
+Mon Dec 27 01:30:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: add IF_NAMESIZE.
+ add a default for INET6_ADDRSTRLEN.
+
+Sun Dec 26 23:49:47 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/Makefile.sub: suppress a strange error message when RMALL
+ found no such file.
+ * win32/rmall.bat: new.
+
+Sun Dec 26 21:23:23 2010 <kosaki.motohiro@gmail.com>
+
+ * win32/Makefile.sub: fix 'nmake clean-enc' breakage since r28322.
+
+Sun Dec 26 22:25:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/depend (ripper.y): fix messages with nmake.
+ [ruby-dev:42896]
+
+Sun Dec 26 22:24:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): get rid of warnings caused by
+ -Wdeclaration-after-statement on cygwin.
+
+Sun Dec 26 20:28:34 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (before_exec): add small comment.
+
+Sun Dec 26 20:52:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: define INET_ADDRSTRLEN as 16 if not
+ available. fix compilation error on mswin32-60. reported by nobu.
+
+Sun Dec 26 19:37:37 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c: define IFNAMSIZ if not available.
+ fix compilation error on mingw32. reported by nobu.
+
+Sun Dec 26 12:16:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths::HOMEDIR): no exception if
+ HOME is not set. [ruby-core:33867]
+
+Sun Dec 26 11:39:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): missing ripper rule. i.e., `a::B ||= c 1'.
+ http://twitter.com/#!/wannabe53/status/18797576396472321
+ http://twitter.com/#!/wannabe53/status/18798416150663168
+
+Sun Dec 26 11:15:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/with_different_ofs.rb (DifferentOFS): should not affect
+ original classes.
+
+Sun Dec 26 09:35:07 2010 Tanaka Akira <akr@fsij.org>
+
+ * rational.c: parenthesize macro arguments.
+
+Sun Dec 26 09:22:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (rb_if_indextoname): new function to abstract
+ environments without if_indextoname.
+ (inspect_ipv6_multicast_if): new function to inspect
+ IPV6_MULTICAST_IF.
+ Socket::Option.new(:INET6, :IPV6, :MULTICAST_IF,
+ [2].pack("I!")).inspect is
+ "#<Socket::Option: INET6 IPV6 MULTICAST_IF eth0>".
+
+Sun Dec 26 04:31:15 2010 Luis Lavena <luislavena@gmail.com>
+
+ * ext/dl/win32/registry.rb: Corrected RegCreateKeyExA signature.
+ Patch by Rafal Michalski [ruby-core:33874] [Ruby 1.9-Bug#4203]
+
+Sun Dec 26 02:31:58 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (advice_arg_check): Change argument check.
+ Now, an unsupported advice makes NotImplementedError.
+ [ruby-dev:42887] [Ruby 1.9-Feature#4204]
+
+Sun Dec 26 03:00:53 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/extconf.rb: Fix build error which was introduced r30372.
+
+Sun Dec 26 01:37:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: check the existence of if_indextoname().
+
+ * ext/socket/option.c: yesterday's akr's commits destroyed the build of
+ some unrelated platforms (such as Windows).
+
+Sat Dec 25 23:29:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_ipv4_add_drop_membership): new function
+ to inspect struct ip_mreq and struct ip_mreqn for
+ IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
+ Socket::Option.new(:INET, :IP, :ADD_MEMBERSHIP,
+ [239,255,99,81, 0,0,0,0].pack("CCCCCCCC")).inspect is now
+ "#<Socket::Option: INET IP ADD_MEMBERSHIP 239.255.99.81 0.0.0.0>".
+ (inspect_ipv4_multicast_if): new function to inspect struct in_addr
+ and struct ip_mreqn for IP_MULTICAST_IF.
+ Socket::Option.new(:INET, :IP, :MULTICAST_IF,
+ [192,168,0,7].pack("CCCC")).inspect is now
+ "#<Socket::Option: INET IP MULTICAST_IF 192.168.0.7>".
+
+ * ext/socket/extconf.rb: check struct ip_mreq and struct ip_mreqn.
+
+Sat Dec 25 22:49:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/csv: DifferentOFS needs to be include in each classes.
+
+ * test/digest/test_digest_extend.rb (TestDigestExtend#setup):
+ should not depend on the result of previous tests
+
+ * test/with_different_ofs.rb (DifferentOFS::WithDifferentOFS): give
+ name.
+
+ * test/with_different_ofs.rb (DifferentOFS): test suite for test
+ suites affected by $,.
+
+ * test/digest/test_digest_extend.rb (TestDigestExtend): should not
+ assume $, invariant.
+
+ * test/csv/test_data_converters.rb, test/csv/test_table.rb: don't
+ call setup within tests.
+
+Sat Dec 25 20:01:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (pipe_open): Added rb_thread_atfork(). We must reinitialize
+ GVL at new process creation.
+
+Sat Dec 25 18:26:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_ipv6_mreq): new function to inspect
+ struct ipv6_mreq for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP.
+ Socket::Option.new(:INET6, :IPV6, :JOIN_GROUP,
+ [0xff12,0,0,0,0,0,0,1, 2].pack("nnnnnnnnI!")).inspect is now
+ "#<Socket::Option: INET6 IPV6 JOIN_GROUP ff12::1 eth0>".
+
+ * ext/socket/extconf.rb: check struct ipv6_mreq.
+
+Sat Dec 25 18:04:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/csv.rb (CSV.foreach): 'rb' mode is defaulted in open.
+
+ * lib/csv.rb (CSV#init_separators): cannonicalize encoding options
+ as Encoding objects.
+
+Sat Dec 25 18:30:34 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_atfork): Add small comment why we need
+ reset random seed.
+
+Sat Dec 25 17:33:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/csv/base.rb (TestCSV.with_different_ofs): give name to
+ anonymous classes.
+
+ * lib/csv.rb (CSV#init_separators): use IO#gets with length
+ parameter to get rid of wrong conversion.
+
+ * lib/csv.rb (CSV::foreach, CSV#initialize): directly use encoding
+
+ * lib/csv.rb, test/csv: should not assume $, invariant.
+
+Sat Dec 25 16:08:06 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c: change rb_atomic_t definition from uchar to uint.
+
+Sat Dec 25 15:04:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/csv/test_encodings.rb (TestEncodings#setup): fix evil test
+ suite writing to the source directory.
+
+Sat Dec 25 15:08:08 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/pty/pty.c (chfunc): Added rb_thread_atfork_before_exec().
+ We must reinitialize GVL at new process creation. Otherwise
+ we may meet an insane deadlock. [Bug#4121][ruby-dev:42686]
+
+Sat Dec 25 14:27:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_extract_encoding_option): accept Encoding object as
+ encoding: optional argument. [ruby-dev:42884]
+
+Sat Dec 25 13:37:55 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 2.0.2 r6093.
+
+Sat Dec 25 13:05:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * random.c: parenthesize macro arguments.
+
+Sat Dec 25 12:48:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_f_require_relative): don't omit return type.
+
+Sat Dec 25 11:06:00 2010 Eric Hodel <drbrain@segment7.net>
+
+ * load.c (rb_f_require_relative): Add documentation.
+
+Sat Dec 25 11:02:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzreader_gets): support optional length
+ parameter.
+
+ * ext/zlib/zlib.c (gzfile_read, gzfile_readpartial): length should
+ be long.
+
+Sat Dec 25 10:51:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/generator/generator.{c,h} (fbuffer_free_only_buffer):
+ unused.
+
+ * ext/openssl/ossl_pkcs5.c (ossl_pkcs5_pbkdf2_hmac): add casts.
+
+Fri Dec 24 08:46:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * process.c: parenthesize macro arguments.
+
+Thu Dec 23 19:17:14 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/net/imap/cacert.pem: updated because it has been expired.
+
+ * test/net/imap/server.crt: signed again because CA cert was expired.
+
+Thu Dec 23 11:16:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * parse.y: parenthesize macro arguments.
+
+Thu Dec 23 11:00:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_type): check for type from extensions for ruby
+ 1.8. see [ruby-core:33797].
+
+Thu Dec 23 08:12:59 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/net/smtp.rb: refactoring Net::SMTP#esmtp= to use an
+ attr_accessor
+
+Thu Dec 23 06:35:41 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/net/smtp.rb: Net::SMTP should close the SSL connection if the
+ connection verification fails.
+
+Thu Dec 23 01:47:58 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: remove #object_id. [ruby-dev:42840]
+
+Wed Dec 22 08:56:39 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add Module#private_constant and Module#public_constant.
+ [ruby-dev:39685][ruby-core:32698]
+
+Wed Dec 22 07:59:23 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add IO#advise. [ruby-core:33110] [Ruby 1.9-Feature#4038]
+
+Tue Dec 21 23:45:31 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (Init_GC): move back object_id to Kernel. [ruby-dev:42840]
+
+Tue Dec 21 12:45:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (target_archs): remove temporary objects.
+
+ * enc/Makefile.in, enc/depend (clean): remove work directories.
+
+Tue Dec 21 07:39:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: parenthesize macro arguments.
+
+Tue Dec 21 06:25:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rexml/test_contrib.rb (ContribTester#test_pos): should not
+ use fixed path name for tests. [ruby-dev:42827]
+
+ * test/rexml/test_sax.rb (SAX2Tester#test_socket): should not use
+ fixed port for tests. [ruby-dev:42828]
+
+Tue Dec 21 06:10:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (setup_args), vm.c (invoke_block_from_c),
+ vm_insnhelper.c (caller_setup_args): reverted r30241 and r30243
+ except for the test.
+
+Tue Dec 21 01:41:42 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * io.c : add an extra byte to buffer for the specification of read
+ in Windows. see [ruby-core:33460] and r29980. and, we have to
+ discuss how to do this one byte.
+
+Tue Dec 21 01:18:06 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * error.c: Fix build error for win32. This regression was
+ introduced by r30271.
+
+Tue Dec 21 00:59:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_cleanup_func): Moved interrupted_lock
+ destroying code from native_thread_destroy() to
+ thread_cleanup_func() because it's platform independent logic.
+
+ * thread_win32.c (native_thread_destroy): ditto.
+ * thread_pthread.c (native_thread_destroy): ditto.
+
+Tue Dec 21 00:46:20 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_cleanup_func): Don't touch native threading
+ resource at fork. Sadly this is purely bandaid. We need to
+ implement proper fix later. [Bug #4169] [ruby-core:33767]
+
+Tue Dec 21 00:22:44 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * error.c (exit_success_p): Check status code more carefully.
+ status code may have garbage in upper bit.
+
+Mon Dec 20 23:12:37 2010 Tanaka Akira <akr@fsij.org>
+
+ * node.c: parenthesize macro arguments.
+
+Mon Dec 20 20:04:41 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add #__id__ and #object_id. [ruby-dev:42778]
+
+Mon Dec 20 20:03:21 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_thread_destroy): Fixed gvl_cond leak.
+
+Mon Dec 20 13:49:05 2010 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS: Add item for RDoc 3.0.1
+
+ * lib/rdoc: Import RDoc 3.0.1, remove require for perl parser.
+
+Mon Dec 20 12:15:32 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 3.0.
+
+Mon Dec 20 01:55:03 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (Init_IO): Added O_DIRECT. This feature was proposed by
+ Run Paint Run Run.
+ [Feature #4015] [ruby-core:33018]
+
+Sun Dec 19 19:15:23 2010 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c: parenthesize macro arguments.
+
+Sat Dec 18 21:52:37 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * vsnprintf.c (BSD_vfprintf): suppress warning: "_WIN32" is not
+ defined.
+
+Sat Dec 18 16:02:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (setup_args), vm.c (invoke_block_from_c),
+ vm_insnhelper.c (caller_setup_args): fix of r30241. lambda block
+ should check argument number.
+
+Sat Dec 18 14:42:29 2010 Tanaka Akira <akr@fsij.org>
+
+ * load.c: parenthesize macro arguments.
+
+Sat Dec 18 10:07:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (setup_args, iseq_compile_each): optimize AMPER LAMBDA
+ combination as block.
+
+Fri Dec 17 22:07:16 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (Init_GC): move #__id__ and #object_id to BasicObject.
+ [ruby-dev:42778]
+
+Fri Dec 17 19:35:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/base.rb (TestMkmf::FakeLog): capture output from mkmf.
+
+ * test/mkmf/test_find_executable.rb (test_find_executable):
+ suppress meaningless differences for chkbuild.
+
+Fri Dec 17 13:26:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak (BASERUBY): quit with an error when BASERUBY was not
+ able to set, just like configure.in does. [ruby-dev:42782]
+
+Fri Dec 17 07:04:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * iseq.c: parenthesize macro arguments.
+
+Fri Dec 17 04:18:37 2010 Eric Hodel <drbrain@segment7.net>
+
+ * transcode.c (str_encode): Alter comment for better wording and ri
+ output.
+
+Fri Dec 17 00:05:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_advise): New API. IO#advise() allows to tell the
+ ruby runtime how it expects to use a file handle. This feature
+ can be improved a performance some situations.
+ Note: This feature is mainly developed by Run Paint Run Run.
+ Thank you! [ruby-core:33110] [Ruby 1.9-Feature#4038]
+
+ * io.c (do_io_advise): Helper function.
+ * io.c (io_advise_sym_to_const): ditto.
+
+Thu Dec 16 23:29:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (bin-comm): use transformed name.
+ [ruby-dev:42777]
+
+Thu Dec 16 21:52:07 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c: parenthesize macro arguments.
+
+Thu Dec 16 21:46:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb (RbConfig): honor ARCHFLAGS and RC_ARCHS to
+ override embedded ARCH_FLAG value on universal-darwin.
+
+Thu Dec 16 19:50:12 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{configure.bat,setup.mak,Makefile.sub} (PROGRAM_PREFIX,
+ PROGRAM_SUFFIX): unite the differences of the names of macros of
+ prefix and suffix.
+ reported by HANEDA Norikatsu. [ruby-dev:42775]
+
+Thu Dec 16 08:04:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (RNode): match the type of flags to RBasic, and renamed
+ nd_file as nd_reserved.
+
+ * iseq.c (set_relation), vm_insnhelper.c (vm_cref_push): nd_file
+ is always zero-cleared.
+
+Thu Dec 16 07:22:30 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/unit.rb: Imported minitest 2.0.1 r6079.
+
+Wed Dec 15 20:45:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (process_args): need to setup @help to print options.
+
+Wed Dec 15 11:19:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/zlib/test_zlib.rb (test_to_io): forgotten to fix with r30201.
+
+Wed Dec 15 11:07:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (simple_sendfile): enable on Mac OS X.
+
+ * io.c (nogvl_copy_stream_sendfile): moved precheck of copy length.
+
+ * io.c (nogvl_copy_stream_sendfile): should wait for both of
+ read/write fds.
+
+Wed Dec 15 07:11:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * hash.c: parenthesize macro arguments.
+
+Wed Dec 15 04:02:00 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_set_config):
+ fix compile error when !HAVE_X509V3_SET_NCONF. Thanks
+ Chikanaga-san. [ruby-dev:42761] [Ruby 1.9-Bug#4158]
+
+Wed Dec 15 03:41:31 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ripper/test_parser_events.rb (TestRipper#test_block_variables):
+ Limit address space 100MB instead 100KB. Quite frankly, This
+ margin is too narrow to contain ruby. [ruby-dev:42763] [Bug#4159]
+
+Tue Dec 14 23:53:52 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (simple_sendfile): improve linux compatibility on FreeBSD,
+ and now it works. But without cpuset -l 0, it still gets stuck.
+
+Tue Dec 14 20:31:33 2010 Tanaka Akira <akr@fsij.org>
+
+ * gc.c: parenthesize macro arguments.
+
+Tue Dec 14 18:31:48 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb: help messages.
+
+Tue Dec 14 18:19:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (help): there is no reason to use the abbreviation for here.
+
+Tue Dec 14 15:03:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (test_reopen, test_reinitialize): should close
+ the temporary files.
+
+Tue Dec 14 14:24:15 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (make_tempfile): change the prefix from 'foo'
+ to 'test_io' because the old one is meaningless and inconvenient.
+
+ * test/ruby/test_io.rb (test_binmode_after_closed): the temporary file
+ made by make_temfile is already closed.
+
+Tue Dec 14 13:52:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (test_flush_in_finalizer[12]): should close
+ temporary file because it's only used for taking pathname and
+ unlinking the file after the end of the test (in GC phase).
+
+Tue Dec 14 13:34:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_s_open): should close the IO if some error
+ occurs in initializing.
+
+Tue Dec 14 13:04:16 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPRequest#send_request_body_data):
+ set binmode to tempfile.
+
+Tue Dec 14 12:55:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/zlib/test_zlib.rb (*): should close files associated with zlib.
+
+Tue Dec 14 11:30:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_argf.rb (test_inplace_rename_impossible): unlink
+ the renamed temporary file on no_safe_rename platforms.
+
+ * test/ruby/test_argf.rb (test_readlines_limit_0,
+ test_each_line_limit_0): should close argf because the associated
+ Tempfile object cannot unlink the temporary file when it's gc'ed
+ on some platforms (Windows, etc.)
+
+Tue Dec 14 11:27:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/minitest/unit.rb (Minitest::Unit#_run_suite): split test
+ name and its time. Thiw allows to know test's name when you are
+ running tests and meet a test which spends long time at realtime.
+
+Tue Dec 14 11:25:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: Add -Werror=declaration-after-statement to default
+ warning flag. If you are using GCC, this flag is useful to
+ prevent breaking VC build.
+
+Tue Dec 14 10:25:57 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): how many gcc-c99isms
+ must a man mend; before he can build with VC? r30178
+
+Mon Dec 13 21:26:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (simple_sendfile): disable the use of sendfile(2) on
+ FreeBSD. It blocks on TestIO#test_copy_stream_socket.
+
+Mon Dec 13 18:35:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c: define USE_SENDFILE on FreeBSD or DragonFly BSD.
+ Remove Mac OS X because its argument is different from them.
+
+Mon Dec 13 12:00:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c: parenthesize macro arguments.
+
+Mon Dec 13 11:21:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (simple_sendfile): added for BSD version of sendfile(2).
+
+Mon Dec 13 09:50:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPRequest#set_form): Added to support
+ both application/x-www-form-urlencoded and multipart/form-data.
+ There is a similar API, Net::HTTPRequest#set_form_data, but
+ to keep its compatibility this is newly added. [ruby-dev:42729]
+
+Sun Dec 12 23:45:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): fix for __goto__ and __label__
+ where were totally broken.
+
+Sun Dec 12 22:45:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ID_H_INCLUDES): now id.h depends on vm_opts.h.
+
+Sun Dec 12 20:42:47 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * template/id.h.tmpl: suppress all warning: "SUPPORT_JOKE" is not
+ defined. [ruby-dev:42730]
+
+Sun Dec 12 20:35:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * misc/rb_optparse.zsh: update how to install.
+
+ * misc/rb_optparse.zsh: avoid error when setopt noclobber.
+
+ * lib/optparse.rb: fix typo. pointed out at
+ <http://d.hatena.ne.jp/nagachika/20101207>.
+
+Sun Dec 12 13:27:35 2010 Tanaka Akira <akr@fsij.org>
+
+ * eval_error.c: parenthesize macro arguments.
+
+Sun Dec 12 11:53:24 2010 Tanaka Akira <akr@fsij.org>
+
+ * error.c: parenthesize macro arguments.
+
+Sun Dec 12 04:01:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): fix: extra back slash is added when
+ the string is dummy encoding and includes \x22 or \x5C.
+
+Sun Dec 12 02:42:24 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/openssl/ossl_asn1.c: indefinite length BER to DER encoding is
+ properly supported. Thanks Martin Bosslet! [ruby-core:33082]
+
+Sat Dec 11 17:43:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/bigdecimal/bigdecimal.h: suppress "warning: 'VPrint' declared
+ 'static' but never defined".
+
+Sat Dec 11 09:24:57 2010 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c: parenthesize macro arguments.
+
+Sat Dec 11 08:12:48 2010 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl.c, ext/openssl/ossl_pkey_rsa.c: Document RSA, RSA
+ encryption/decryption and PKCS #5 encryption/decryption.
+
+Sat Dec 11 06:23:41 2010 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_x509name.c: include Comparable to provide #==.
+ Document OpenSSL::X509::Name#<=>. [Ruby 1.9-Feature#4116]
+
+Sat Dec 11 05:48:28 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: infinite loop on method_missing at loading.
+ [ruby-dev:42716] [Ruby 1.9-Bug#4129]
+
+ * ext/tk/lib/multi-tk.rb: when no eventloop is running, ruby freezes at
+ exit.
+
+Sat Dec 11 02:23:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/openssl/extconf.rb: try pkgconfig first, then fall back to
+ normal have_library, etc. Thanks Erik Hollensbe. [ruby-core:32406]
+
+Fri Dec 10 22:33:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * dln_find.c: parenthesize macro arguments.
+
+Fri Dec 10 20:05:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl (ruby_method_ids): suppress warnings.
+ [ruby-dev:42730]
+
+Fri Dec 10 18:29:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): relatively called non-shared
+ binary cannot be found in PATH, so use given pathname.
+
+Fri Dec 10 18:28:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (SCRIPTPROGRAMS): ignore backup files and etc.
+
+ * cygwin/GNUmakefile.in (scriptbin): set executable bit.
+
+ * tool/rbinstall.rb (install_recursive): always skip default ignored
+ files. if block is given, call it instead of calling install.
+
+ * tool/rbinstall.rb (bin-comm): use install_recursive.
+
+Fri Dec 10 18:12:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/base.rb (TestMkmf#config_value): extract macro value from
+ config.h.
+
+ * test/mkmf/test_sizeof.rb (TestMkmf::TestSizeof#test_sizeof_builtin),
+ (TestMkmf::TestSizeof#test_sizeof_struct): more tests.
+
+ * lib/mkmf.rb (check_signedness): should use the prelude code.
+ [ruby-dev:42731]
+
+ * lib/mkmf.rb (Logging.log_close): separate from Logging.logfile.
+
+ * test/mkmf/base.rb (TestMkmf::MKMFLOG): show mkmf.log at failures.
+
+ * test/mkmf/base.rb (TestMkmf#teardown): close log file for each tests.
+
+Fri Dec 10 11:36:43 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * compile.c (enum): remove a comma at end of enumerator list.
+
+ * constant.h (rb_const_flag_t): ditto.
+
+ * iseq.h (enum catch_type): ditto.
+
+ * iseq.h (enum defined_type): ditto.
+
+ * vm_core.h (enum iseq_type): ditto.
+
+ * vm_core.h (enum vm_special_object_type): ditto.
+
+Fri Dec 10 10:47:53 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c (_HAVE_SANE_QUAD_): Don't forget LP64, r30156.
+
+Fri Dec 10 10:37:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (_HAVE_SANE_QUAD_): if a certain platform has LONG_LONG in
+ 8 byte, it might be sane quad. [ruby-core:33634]
+
+Fri Dec 10 10:07:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: remove version 1.1 features.
+
+Fri Dec 10 02:18:02 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_cleanup): removing C
+ implementation of `cleanup`.
+
+ * ext/openssl/lib/openssl/x509.rb: adding ruby implementation of
+ `cleanup`. OpenSSL::X509::StoreContext#cleanup is deprecated since
+ reusing the underlying struct doesn't make sense. [ruby-dev:42546]
+
+Thu Dec 9 20:14:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lvar_defined_gen, shadowing_lvar_gen, dvar_defined): no
+ warnings for unused method and block arguments.
+ [ruby-dev:42718] [ruby-dev:42724]
+
+Thu Dec 9 19:25:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * dln.c: parenthesize macro arguments.
+
+Thu Dec 9 18:51:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/webrick/accesslog.rb (WEBrick::AccessLog#format): support
+ %{remote}p for logging remote (client) port number.
+ [ruby-dev:42670]
+
+Thu Dec 9 11:00:30 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_dup): should copy contents only. no instance
+ variable, no class would be copied. it would affect methods
+ #sort, #reject, #transpose, #uniq, #compact, and #shuffle.
+ [ruby-core:33640]
+
+ * array.c (rb_ary_reverse_m): ditto.
+
+ * array.c (rb_ary_rotate_m): ditto.
+
+Wed Dec 8 21:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl/lib/dl/struct.rb: clean a warning: assigned but unused
+ variable. patched by Kouhei Yanagita. [ruby-dev:42722]
+
+ * ext/dl/lib/dl/import.rb: ditto.
+
+Wed Dec 8 21:36:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (shadowing_lvar_gen): fix line number. [ruby-dev:42718]
+
+Wed Dec 8 20:37:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * dir.c: parenthesize macro arguments.
+
+Tue Dec 7 22:37:15 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * io.c (io_read): duplicate string if shared. [ruby-dev:42719]
+
+Tue Dec 7 22:31:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Officious): separate completion
+ options from --help. [ruby-dev:42690]
+
+ * lib/optparse.rb (OptionParser::Completion#candidate),
+ (OptionParser::Switch#compsys): remove unused variables.
+
+Tue Dec 7 22:05:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_loop): call default handler of the given
+ hash, method, proc or [] method as fallback. [ruby-dev:42692]
+
+Tue Dec 7 21:59:37 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/light/node.rb: remove circular require.
+
+Tue Dec 7 21:56:01 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_light.rb: really suppress a warning.
+
+Tue Dec 7 21:51:57 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_light.rb: suppress a warning.
+
+Tue Dec 7 21:14:03 2010 Tanaka Akira <akr@fsij.org>
+
+ * debug.c: parenthesize macro arguments.
+
+Tue Dec 7 21:06:38 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/doctype.rb, test/rexml/test_doctype.rb: suppress warnings.
+ [ruby-core:33305]
+ Reported by Aaron Patterson. Thanks!!!
+
+Tue Dec 7 18:56:52 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (String#kconv): fix typo and update rdoc.
+ patched by Kouhei Yanagita [ruby-dev:42696]
+
+Tue Dec 7 20:32:11 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_doctype.rb: add Accessor to test case name.
+
+Tue Dec 7 20:31:02 2010 Kouhei Sutou <kou@clear-code.com>
+
+ * test/rexml/test_doctype.rb: Doctype -> DocType.
+
+Tue Dec 7 20:29:23 2010 Kouhei Sutou <kou@clear-code.com>
+
+ * test/rexml/test_doctype_mixin.rb: rename to ...
+ * test/rexml/test_doctype.rb: ... this to remove needless name.
+
+Tue Dec 7 17:03:16 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (xlist): supported the XLIST command, which is an
+ extension by Apple and Google. patch by Geoff Youngs.
+ [ruby-core:33521]
+
+Tue Dec 7 08:00:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (WERRORFLAG): flag to treat
+ warnings as errors.
+
+ * lib/mkmf.rb (Logging.postpone): yield log file object.
+
+ * lib/mkmf.rb (xsystem): add options, :werror only right now.
+
+ * lib/mkmf.rb (with_werror): check as if warnings are errors.
+
+ * lib/mkmf.rb (convertible_int): make declaration conflict
+ warnings errors not to pass wrong type. [ruby-dev:42684]
+
+ * lib/mkmf.rb (COMMON_MACROS): get rid of conflicts.
+
+ * win32/Makefile.sub (WARNFLAGS): make declaration conflict
+ warnings errors if possible.
+
+Sun Dec 7 21:16:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * cont.c: parenthesize macro arguments.
+
+Tue Dec 7 00:27:14 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * win32/win32.c (rb_w32_read): fixed more for readline,
+ and so on. [ruby-core:33511]
+
+Mon Dec 6 23:18:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/base.rb (TestMkmf#setup): run quietly.
+
+ * test/mkmf/test_find_executable.rb (test_find_executable): use
+ configured results.
+
+ * common.mk (test-build): test for build process.
+
+Mon Dec 6 22:47:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#candidate): skip separators.
+
+ * sample/optparse/opttest.rb: should not override --help.
+ [ruby-dev:42690]
+
+Mon Dec 6 19:00:48 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * misc/rb_optparse.zsh: fix typos.
+
+Mon Dec 6 18:59:04 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add new encodings.
+
+Mon Dec 6 18:56:42 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_string.rb (TestString#test_scan): add a test for
+ [ruby-core:33338] #4087.
+
+Mon Dec 6 18:55:36 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/uri/test_common.rb (TestCommon#test_encode_www_form): add
+ tests for r30015.
+
+Mon Dec 6 10:39:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::Parser#initialize_pattern):
+ refix for restrict the pattern.
+
+Mon Dec 6 09:45:11 2010 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl (OpenSSL): add toplevel documentation
+ * ext/openssl/ossl_ssl.c (SSLContext, SSLSocket: add additional
+ documentation
+ * ext/openssl: move "let rdoc know about mOSSL" comments so they don't
+ show up in output
+
+Mon Dec 6 09:16:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::Parser#initialize_pattern):
+ workaround fix pattern of hostname for RFC 3986. [ruby-dev:42672]
+
+Mon Dec 6 09:14:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/mkmf.rb (check_signedness): rename unused variable prelude.
+
+Sun Dec 5 17:56:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (make_metaclass): fix probable typo. builtin type flag
+ cannot be used with FL_TEST.
+
+Sun Dec 5 12:09:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/init.rb (IRB.parse_opts): fix typo. [ruby-core:33574]
+
+Sun Dec 5 11:27:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): decrement for ungotten line.
+ [ruby-dev:42680]
+
+Sun Dec 5 10:32:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * complex.c: parenthesize macro arguments.
+
+Sat Dec 4 11:39:17 2010 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_x509ext.c (initialize): add documentation.
+
+Sat Dec 4 11:21:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_update_by): new API for Hash#update.
+
+Sat Dec 4 11:18:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * class.c: parenthesize macro arguments.
+
+Sat Dec 4 11:07:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_vm_inc_const_missing_count): missing prototype.
+
+Sat Dec 4 08:50:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (Init_iconv): no warnings if $VERBOSE is nil.
+
+Sat Dec 4 08:25:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): revert r30064 and r30071,
+ because of [ruby-core:26761]. Bug#4106 rejected.
+
+Sat Dec 4 07:46:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (String#tr_cpp): substitute * with P like as
+ autoconf.
+
+Fri Dec 3 22:36:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): protected methods should be
+ checked against the real class.
+
+Fri Dec 3 20:23:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (convertible_int): define printf format prefix too.
+
+ * lib/mkmf.rb (convertible_int): detect convertible integer type.
+ port RUBY_REPLACE_INT from configure.in.
+
+ * lib/mkmf.rb (check_sizeof): should return integer always.
+
+Fri Dec 3 12:54:48 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (RCFLAGS): VC10 and after only. fixed the problem
+ of r30015. [ruby-core:33530]
+
+Fri Dec 3 12:41:52 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * gc.c (rb_objspace_free): With our "lazy-sweep" GC engine, it is
+ possible for an object to survive until its surrounding object
+ space is about to be freed. Those objects, if any, remains
+ leaked for the rest of a process life. This is problematic
+ because for instance a T_DATA object may have its own destructor
+ to terminate something.
+
+ * vm.c (ruby_vm_destruct): ruby_current_vm termination should be
+ somewhere after rb_objspace_free for above reason.
+
+Fri Dec 3 12:17:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): protected singleton methods should
+ be visible from same real class methods. [ruby-core:33506]
+
+Fri Dec 3 07:08:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_getline): round upto next char
+ boundary. [ruby-dev:42674]
+
+Fri Dec 3 06:52:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * compile.c: parenthesize macro arguments.
+
+Fri Dec 3 04:08:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_alias_internal): use st_insert2 and change return
+ value to int.
+
+ * encoding.c (enc_alias): follow enc_alias_internal.
+
+Fri Dec 3 01:52:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_alias_internal): use xfree instead of free.
+
+Thu Dec 2 23:52:26 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * NEWS: entry for ruby_vm_at_exit().
+
+ * eval.c (ruby_cleanup): bug fix around at_exit (1) timing was
+ wrong. (2) execution order was opposite.
+
+Thu Dec 2 23:05:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (RCFLAGS): -nologo switch is only available in
+ newer versions of rc.exe. fixed the problem of r30012.
+
+Thu Dec 2 21:28:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/add/rails.rb: removed.
+
+Thu Dec 2 21:22:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_alias_internal): free the copied key and
+ return NULL when given key is already registered.
+
+ * encoding.c (enc_alias): call set_encoding_const only when the
+ alias is not registered yet.
+
+Thu Dec 2 19:58:24 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm.c (ruby_vm_at_exit): new API. This enables extension libs to
+ hook a VM termination. Right now, because the VM we have is
+ process global, most extensions do not deallocate resources and
+ leave them to Operating System's reaping userland processes. But
+ in a future we plan to have multiple VMs to run simultaneously in
+ a single process (MVM project). At that stage we can no longer
+ rely on OSes and have to manage every resources to be reclaimed
+ properly. So it is. For a forward-compatibility reason this API
+ is introduced now, encouraging you to be as gentle as you can for
+ your resources; that is, tidy up your room.
+
+ * include/ruby/vm.h: ditto.
+
+ * vm_core.h (rb_vm_struct): new field.
+
+ * vm.c (vm_init2): initialize above new field.
+
+ * eval.c (ruby_cleanup): trigger those hooks.
+
+Thu Dec 2 17:00:44 2010 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: parenthesize macro arguments.
+
+Thu Dec 2 15:31:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): more fix. [ruby-core:33513]
+
+Thu Dec 2 13:41:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): workaround for console reading troubles.
+ fixed [ruby-core:33511]
+
+Thu Dec 2 13:10:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_form):
+ split key-value when the value is Array like object.
+
+Thu Dec 2 10:39:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#set_form_data):
+ use URI.encode_www_form for application/x-www-form-urlencoded.
+
+Thu Dec 2 10:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/extmk.rb: remove $makeflags.defined?, it should be $mflags.
+
+Thu Dec 2 10:19:47 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (rc): suppress meaningless message.
+
+Thu Dec 2 10:09:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/generator/extconf.rb: remove the lines which set -O3
+ when -O option is not set.
+ Note that -O3 doesn't always exist.
+
+ * ext/json/parser/extconf.rb: ditto.
+
+Thu Dec 2 10:01:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/extmk.rb: define $makeflags.defined? like $mflags.
+
+Thu Dec 2 07:20:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::GCStressOption): --gc-stress
+ option.
+
+ * lib/test/unit.rb (Test::Unit::Mini#_run_suites): show the result
+ even when interrupted on the way.
+
+Thu Dec 2 07:08:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (setattr): should retry on EINTR.
+ [ruby-dev:42666]
+
+Thu Dec 2 02:30:50 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: fixed positional wording to match revised order.
+
+Thu Dec 2 01:24:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/common.rb: don't use iconv on 1.9.
+ patched by Shota Fukumori [ruby-core:33164]
+
+Thu Dec 2 01:02:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Update github/flori/json from 1.4.2+ to
+ e22b2f2bdfe6a9b0. this fixes some bugs.
+
+Thu Dec 2 00:05:44 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: improve rdoc.
+ This change the order of chapter because such overview should
+ begin with simple examples.
+ patched by Eric Hodel [ruby-core:33469]
+
+Wed Dec 1 22:01:49 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): fixed a potential bug when using bccwin32
+ ruby with Microsoft's dll, though we already gave up of supporting
+ bccwin32. [ruby-core:33503]
+
+Wed Dec 1 21:43:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * array.c: parenthesize macro arguments.
+
+Wed Dec 1 21:41:57 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_addrinfo.rb: extract Errno::EADDRINUSE as a method.
+
+ * test/socket/test_socket.rb: ditto.
+
+Wed Dec 1 15:08:32 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/openssl/test_ssl.rb (test_not_started_session): non socket
+ argument of SSLSocket.new is not supported on Windows.
+
+Wed Dec 1 14:36:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_memhash): zero-filled strings should return
+ different values. [ruby-core:33500]
+
+Wed Dec 1 14:27:49 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 2.0.0 r5952.
+ * test/minitest/*.rb: ditto.
+ * lib/test/unit.rb: Compatibility fix for minitest changes.
+
+Wed Dec 1 10:16:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): fix typo (not 0xFD but 0xFE).
+
+Wed Dec 1 09:28:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: Follow .gnu_debuglink section.
+ A user of distribution provided ruby will see line
+ info if s/he has a debug package for ruby.
+ patched by Shinichiro Hamaji [ruby-dev:42655]
+
+Wed Dec 1 01:29:15 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): inspect as a dummy encoding string
+ when a UTF-16/32 (not BE/LE) string does not have a BOM.
+ Unicode and some RFCs say that a string labeled as UTF-16/32
+ doesn't have a BOM, it should be considered big endian.
+ But many Windows programs generates little endian UTF-16
+ strings without a BOM. So String#inspect treats a string
+ labeled UTF-16/32 without a BOM as a dummy encoding string.
+ patched by Martin Duerst. [ruby-core:33461]
+
+Tue Nov 30 17:04:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c (parse_debug_line_cu): ignore DW_LNE_set_discriminator.
+ To ignore, it needs to read a single unsigned LEB128 integer.
+
+Tue Nov 30 16:29:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_dump.c: undef HAVE_BACKTRACE when the OS is FreeBSD (in other
+ words backtrace() is libexecinfo) and it is optimized.
+ This temporary hack may be also applied to other libexecinfo
+ environments.
+
+Tue Nov 30 16:23:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: improve rdoc.
+ patched by Eric Hodel ref #4100
+
+Tue Nov 30 12:23:52 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): read only 1 byte at once on console.
+ workaround of Windows bug. see [ruby-core:33460].
+ this is not the final solution.
+
+Tue Nov 30 11:39:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: improve rdoc.
+ patched by mathew murphy [ruby-core:33472] ref #4100
+
+Tue Nov 30 05:03:44 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri/common.rb (encode_www_form, encode_www_form_component):
+ Improve English in documentation.
+
+ * ext/openssl/ossl_ssl.c (ssl_version=, ciphers=): Document
+ #ssl_version=, add documentation for #ciphers=.
+
+Mon Nov 29 22:55:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::WFKV_): get rid of backtrack explosion
+ by nested repeat operators. [ruby-core:33464]
+
+Mon Nov 29 22:53:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (scriptbin.mk): fix generated rules.
+
+ * win32/win32.c (rb_w32_write_console): fix argument type.
+
+Mon Nov 29 21:12:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-forward-sexp): stop after literal hash
+ key labels.
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): highlight literal
+ hash key labels as symbols.
+
+Mon Nov 29 18:31:31 2010 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb (test_unicode_public_review_issue_121):
+ - Removed commented-out options that are no longer under discussion.
+ - Added two more tests for forthcomming clarifications.
+
+Mon Nov 29 14:31:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_isatty): use GetConsoleMode() to determine the
+ fd is console or not, just like rb_w32_write_console(). [experimental]
+
+Mon Nov 29 14:19:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (rb_w32_write_console): wrong prototype.
+
+Mon Nov 29 14:10:55 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_write_console): fixed indentation.
+
+Sun Nov 28 22:13:39 2010 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (NATIVE_MUTEX_LOCK_DEBUG): move and use it.
+
+ * ChangeLog: fix my timezone.
+
+Mon Nov 28 21:58:58 2010 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c: remove pthread_atfork().
+
+Mon Nov 28 21:54:22 2010 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (native_cond_*): Check return code.
+ (Some OSes except Linux return error code).
+
+Sun Nov 28 21:46:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (thread_start_func_1): initialize native thread
+ data immediately before starting.
+
+Sun Nov 28 14:56:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (struct argf): make lineno long, and reorder members.
+
+Sun Nov 28 14:55:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_win32.c (gvl_release, gvl_init): suppress warnings.
+
+Sun Nov 28 14:48:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (gvl_release, gvl_init): suppress warnings.
+
+ * vm_core.h (rb_vm_gvl_destroy): add prototype.
+
+Sun Nov 28 14:46:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (gvl_reinit): register atfork handler only in
+ the parent process, to get rid of dead lock.
+
+Sun Nov 28 12:23:57 2010 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, vm_core.h: make gvl_acquire/release/init/destruct
+ APIs to modularize GVL implementation.
+
+ * thread_pthread.c, thread_pthread.h: Two GVL implementations.
+ (1) Simple locking GVL which is same as existing GVL.
+ (2) Wake-up queued threads. The wake-up order is simple FIFO.
+ (We can make several queues to support exact priorities, however
+ this causes some issues such as priority inversion and so on.)
+ This impl. prevents spin-loop (*1) caused on SMP environments.
+ *1: Only one Ruby thread acquires GVL again and again.
+ Bug #2359 [ruby-core:26694]
+
+ * thread_win32.c, thread_win32.h: Using simple lock
+ not by CRITICAL_SECTION but by Mutex.
+ Bug #3890 [ruby-dev:42315]
+
+ * vm.c (ruby_vm_destruct): ditto.
+
+Sun Nov 28 04:40:00 2010 Luis Lavena <luislavena@gmail.com>
+
+ * io.c (io_fwrite): use rb_w32_write_console under Windows.
+
+ * win32/win32.c (rb_w32_write_console): added to write to write
+ Unicode using WriteConsoleW for stdout/stderr. [ruby-core:33166]
+
+Sun Nov 28 03:58:47 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: improve rdoc.
+ patched by Mike Perham [ruby-core:33433]
+
+Sat Nov 27 19:12:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: parenthesize macro arguments.
+
+Sat Nov 27 18:08:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (leap_year_v_p): fixed typo. [ruby-dev:42631]
+
+Sat Nov 27 17:57:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * resolv.rb (Resolv::DNS): use the same DNS server when retry using
+ TCP. reported by Julian Mehnle. [ruby-core:32970]
+
+Sat Nov 27 15:45:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): see CrashReport log on Mac OS X.
+
+ * configure.in: link addr2line only for ELF.
+
+Sat Nov 27 13:58:55 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#candidate): : was missing. Thanks,
+ Shota Fukumori. [ruby-dev:42634]
+
+Sat Nov 27 12:07:05 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * man/ruby.1: Ruby man page from Arthur Gunn in [ruby-core:33412]
+
+Sat Nov 27 11:29:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#candidate): get rid of 1.9 syntax
+ so that BASERUBY can be 1.8.
+
+Sat Nov 27 08:16:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * addr2line.c (rb_dump_backtrace_with_lines): should close fd on
+ edge case.
+
+Fri Nov 26 13:33:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: apply a patch from shinichiro.h.
+
+Fri Nov 26 12:21:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: added to show source filename and line number of
+ functions in backtrace. [ruby-dev:42625]
+ a patch from shinichiro.h <shinichiro.hamaji AT gmail.com>
+
+ * addr2line.h: ditto.
+
+ * common.mk: add addr2line.$(OBJEXT).
+
+ * configure.in: check dl_iterate_phdr.
+
+ * vm_dump.c (rb_vm_bugreport): use rb_dump_backtrace_with_lines in
+ addr2line.c when the binary is ELF.
+
+Fri Nov 26 12:12:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (setup_tree): restart setup_tree() for a node whose
+ AnchorNode's type is ANCHOR_PREC_BEHIND or ANCHOR_PREC_BEHIND_NOT
+ and divide_look_behind_alternatives() divided it to NT_ALT or
+ NT_LIST. [ruby-core:33370]
+
+Fri Nov 26 11:40:11 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): get only required rights of the target
+ thread because THREAD_ALL_ACCESS causes an access error on XP.
+ reported by Masaya TARUI via IRC.
+
+Fri Nov 26 11:09:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): show the displacement from the beginning
+ of the symbol.
+
+Fri Nov 26 10:48:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): follow the output of glibc.
+ see [ruby-dev:42627]
+
+Fri Nov 26 09:48:45 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_str): should succeed the taint status from
+ the origin. [ruby-core:33338]
+
+Fri Nov 26 09:32:37 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): seems to be necessary the 3rd argument of
+ SymGetLineFromAddr64(), even though MSDN says it can be zero.
+
+Fri Nov 26 09:03:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (onig_is_prelude): added to check whether ruby is still
+ in prelude (or other boot processes) or not.
+
+ * regcomp.c (optimize_node_left): use onig_is_prelude for printing.
+
+ * regcomp.c (set_optimize_info_from_tree): ditto.
+
+ * regcomp.c (onig_compile): ditto.
+
+ * regcomp.c (print_compiled_byte_code_list): print its address.
+
+ * regcomp.c (print_indent_tree): print its contents tree of
+ ANCHOR_PREC_READ(_NOT) and ANCHOR_PREC_BEHIND(_NOT).
+
+Thu Nov 25 23:10:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (print_distance_range): use PRIuSIZE.
+
+ * regcomp.c (print_optimize_info): use %ld because the type of
+ calculated value of integers is long.
+
+ * regexec.c (onig_print_compiled_byte_code): add prototype.
+
+ * regexec.c (match_at): add 2nd argument.
+
+Thu Nov 25 10:29:55 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/callback/mkcallback.rb (gencallback): shouldn't assume that
+ VALUE is the same size with long.
+
+Thu Nov 25 10:03:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/win32ole/test_err_in_callback.rb (teardown): remove tmp file
+ only when it exists.
+
+Thu Nov 25 01:38:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/big5-hkscs-tbl.rb: Update table as HKSCS-2008.
+ patched by oCameLo oTnTh [ruby-core:33256]
+
+ * enc/big5.c: add alias Big5-HKSCS:2008 to Big5-HKSCS.
+
+Wed Nov 24 15:18:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vsnprintf (BSD_vfprintf): use QUADINT macro only when _HAVE_SANE_QUAD_
+ macro is defined.
+
+Wed Nov 24 12:47:16 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vsnprintf (BSD_vfprintf): added VC++ compatible size specifications
+ (I, I32, I64).
+
+Wed Nov 24 11:19:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): treat UTF-16 and UTF-32 as BE or LE.
+
+Wed Nov 24 06:35:32 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf_16_32.trans: add the UTF-32 converter.
+
+Wed Nov 24 05:40:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+Wed Nov 24 06:13:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (filecp, wstr_to_mbstr, mbstr_to_wstr):
+ refactored.
+
+Wed Nov 24 05:40:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf_16_32.trans: add a converter from UTF-8 to UTF-16.
+
+Wed Nov 24 03:21:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf_16_32.trans: raise error on unpaired upper
+ surrogates.
+
+Wed Nov 24 01:40:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_16_32.h: add UTF-16 and UTF-32 as a dummy encoding.
+
+ * enc/trans/utf_16_32.trans: add a converter from UTF-16 to UTF-8.
+
+Tue Nov 23 21:59:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (wlink, rb_w32_getppid): use typedef instead of
+ repeating complicated function prototypes.
+
+Tue Nov 23 18:54:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_mark): should mark self in control
+ frames. [ruby-core:33289]
+
+Tue Nov 23 07:57:31 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/delta/parser.{ry,rb}: fixed a bug of token scanner.
+
+Tue Nov 23 07:29:24 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c, rational.c ({nucomp,nurat}_expt): added a check.
+
+Tue Nov 23 07:27:27 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (daynum): should be private.
+
+Tue Nov 23 07:22:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ChangeLog (change-log-indent-text): hanging indent.
+
+Tue Nov 23 06:30:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (SITE_DIR, VENDOR_DIR),
+ version.c (ruby_initial_load_paths): exclude directories that
+ are configured without them from $LOAD_PATH. [ruby-core:33267]
+
+ * configure.in (rubylibprefix): No ruby, No libprefix.
+
+Tue Nov 23 01:05:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): don't output floating point
+ when the precision is 0. [ruby-dev:42615]
+
+Mon Nov 22 21:30:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_inspect): fix for ascii-compatible external
+ encoding and different encoding string. [ruby-core:33283]
+
+Mon Nov 22 18:45:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): should not duplicate rules.
+ bug fix of r29842.
+
+Mon Nov 22 18:04:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/big5.c: split CP950 from Big5.
+
+ * enc/big5.c: split CP951 from Big5-HKSCS.
+
+ * enc/trans/big5.trans: import conversion table of Big5, Big5-HKSCS,
+ CP950, and CP951 from ICU. they need fallback conversions.
+ ref [ruby-core:33256]
+ http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/
+
+ * tool/transcode-tblgen.rb (import_ucm): add to import ucm files.
+
+Mon Nov 22 18:33:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_inspect): append for each chars instead of bulk
+ copy if encoding conversion is needed. [ruby-core:33283]
+
+Mon Nov 22 14:22:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * time.c (time_zone): use rb_locale_str_new_cstr to set encoding
+ as locale and convert its content to internal encoding.
+ [ruby-core:33278]
+
+Mon Nov 22 11:58:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_concat): set ENC_CODERANGE_VALID when the
+ receiver is 7BIT and the argument is non ASCII.
+
+Mon Nov 22 01:48:58 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: some improvements for performance.
+
+Sat Nov 20 07:45:50 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/mkmf.rb: adding compilation support for ObjC/ObjC++ extensions.
+ Thanks Scott Gonyea! [ruby-core:33260]
+
+Sat Nov 20 01:57:55 2010 Akio Tajima <artonx@yahoo.co.jp>
+
+ * common.mk: add dependency(insns.inc) to compile.obj
+
+Fri Nov 19 23:05:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (insns_rules.mk): remove extra backslash.
+
+ * cygwin/GNUmakefile.in, win32/Makefile.sub (clean): rc files are
+ made at compile time, so should be removed by clean.
+
+Fri Nov 19 22:09:46 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_core.rb
+ (Tester#test_pretty_format_long_text_finite): skip a test that
+ uses long string on small memory system. [ruby-dev:42599]
+
+Fri Nov 19 21:07:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb: shell completion support for zsh. based on
+ <http://d.hatena.ne.jp/rubikitch/20071002/zshcomplete>
+
+ * lib/optparse.rb: shell completion support for bash.
+
+Fri Nov 19 00:00:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (SCRIPTPROGRAMS): no needs on cygwin.
+
+ * win32/Makefile.sub (scriptbin): create script binaries.
+
+Thu Nov 18 23:21:23 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/formatters/pretty.rb (REXML::Formatters::Pretty#wrap):
+ REXML::Formatters::Pretty#wrap used a recursive method call to
+ format text. This switches it to use an iterative approach.
+ [ruby-core:33245]
+ Patch by Jeremy Evans. Thanks!!!
+
+ * test/rexml/test_core.rb: add a test for it.
+
+Thu Nov 18 22:58:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h (rb_io_buffer_t): extract from rb_io_t.
+
+Thu Nov 18 07:37:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (reconfig): force reconfigure with previous options.
+
+ * common.mk (showconfig): show configure flags, like as
+ `config.status --config' generated by recent autoconf.
+
+Thu Nov 18 07:16:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/langinfo.c (strncasecmp): get rid of redefinition.
+
+Thu Nov 18 00:02:17 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Upgrading output encoding with ASCII content
+ as needed. [ruby-core:33229]
+
+Wed Nov 17 23:19:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/configure.bat: remove quotes from arguments to be quoted.
+
+ * lib/mkmf.rb (create_makefile): use forward slashes in messages.
+
+ * lib/mkmf.rb (create_makefile): make extension libraries messages
+ brief.
+
+ * win32/Makefile.sub (MAKEDIRS): should not include silent flag.
+
+ * common.mk (ext/ripper/ripper.c, ext/json/parser/parser.c): pass
+ Q and ECHO. [ruby-core:33226]
+
+Wed Nov 17 16:09:52 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/test_tracer.rb: new test case.
+ minimal regression test for r29280.
+
+Wed Nov 17 16:04:23 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/envutil.rb (Test::Unit::Assersions#assert_warn):
+ new assertion to assert that a particular warning message is
+ displayed.
+ forward port from branches/ruby_1_9_2@29795.
+
+Wed Nov 17 15:16:48 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regint.h (OnigOpInfoType): constify name.
+
+ * regcomp.c (op2name): constify return value.
+
+ * regcomp.c (onig_print_compiled_byte_code): use PRIuPTR and
+ uintptr_t to clean warnings.
+
+ * regcomp.c (print_indent_tree): use PRIxPTR and intptr_t.
+
+ * regexec.c (match_at): use PRIdPTR and intptr_t.
+
+Wed Nov 17 09:49:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/shift_jis.c (property_name_to_ctype): fix memory leak.
+
+ * enc/euc_jp.c (property_name_to_ctype): ditto.
+
+Wed Nov 17 08:54:04 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Upgrading output encoding as needed. [ruby-core:33135]
+
+Tue Nov 16 22:30:39 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_throw): remove fear of undefined behavior :-)
+ Coverity Scan found this bug.
+
+Tue Nov 16 09:33:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (to_digits): avoid unused
+ variables warning, reported by Aaron Patterson.
+
+Tue Nov 16 06:39:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (PACK_ITEM_ADJUST): return nil not result array and yield
+ values if block is given. [ruby-core:33193]
+
+Tue Nov 16 00:21:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regparse.c (and_cclass, or_cclass): fix memory leak. Coverity Scan
+ found this bug. [ruby-dev:42579]
+
+Tue Nov 16 00:07:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (assign_heap_slot): fix fear of memory leak and memory
+ violation. Coverity Scan found this bug.
+
+Mon Nov 15 23:54:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval_intern.h (CHECK_STACK_OVERFLOW): it was not intended to add
+ size_t to a pointer typed VALUE*. Coverity Scan found this defect.
+
+Mon Nov 15 23:41:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_set_exception_local_table, iseq_set_local_table,
+ rb_iseq_build_from_ary): fix type inconsistency (which is benign
+ because sizeof(ID) == sizeof(ID*), though). Coverity Scan found
+ these bugs.
+
+Mon Nov 15 22:47:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_funcall): ensure va_end after va_init_list. Coverity
+ Scan found this bug.
+
+Mon Nov 15 08:36:12 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/racc/parser.rb (do_parse, yyparse): using class eval to define
+ method and avoid __send__.
+
+Mon Nov 15 06:43:48 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * etc/openssl/ossl_ssl.c (ossl_ssl_get_cert): raise exception if
+ pointer is invalid. Thanks Ippei Obayashi! [ruby-dev:42573]
+
+Sun Nov 14 17:57:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (distclean): should not remove sources which are
+ distributed in tarball.
+
+Sun Nov 14 16:48:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_set_token_info): turn on/off with directives.
+ [ruby-core:25442]
+
+Sun Nov 14 12:05:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_readlines): forward to current_file for arguments
+ check. http://twitter.com/nagachika/status/3634254856589312
+
+Sun Nov 14 08:48:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/setup.mak (-basic-vars-, -runtime-): suppress trailing
+ space and compiler command line.
+
+Sun Nov 14 04:22:32 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (config.h): Added HAVE_LABS and HAVE_LLABS to config.h.
+
+ * symbian/configure.bat: Changed packaging version in line with API
+ style 3 versioning.
+
+Sat Nov 13 16:37:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (showflags, help): emit messages at once.
+
+ * win32/Makefile.sub (MSG, EOM): remove surrounding quotes by %~I.
+
+Sat Nov 13 01:31:30 2010 Akio Tajima <artonx@yahoo.co.jp>
+
+ * win32/Makefile.sub: reorder variable End Of Message (don't display it)
+
+Fri Nov 12 20:52:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (showflags, help): use caret to quote leading spaces on
+ Windows.
+
+ * Makefile.in, common.mk, cygwin/GNUmakefile.in, enc/depend,
+ ext/ripper/depend, lib/mkmf.rb, win32/Makefile.sub: caddle up.
+
+Fri Nov 12 16:35:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: support C level backtrace information on FreeBSD.
+ When devel/libexecinfo is installed on FreeBSD, now ruby
+ can show C level backtrace information.
+ http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/libexecinfo/
+
+Fri Nov 12 09:58:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak: use findstr.exe instead of find.exe, because all
+ target build platforms should have findstr.exe, and, find.exe often
+ means another command such as cygwin's.
+
+Fri Nov 12 00:30:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): need PRI_LL_PREFIX.
+
+Thu Nov 11 23:38:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: ANSI C-conforming const and volatile are mandatory
+
+ * configure.in (AC_C_CONST, AC_C_INLINE, AC_C_VOLATILE): check
+ before used in other checks.
+
+ * configure.in (RUBY_CHECK_PRINTF_PREFIX): should not break from
+ RUBY_WERROR_FLAG, so that ac_c_werror_flag gets restored.
+
+Thu Nov 11 23:04:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (warn_deprecated): show caller position.
+
+Thu Nov 11 23:03:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_close): untie tied io before closing.
+
+ * io.c (argf_write): add ARGF.write and so on.
+
+ * io.c (argf_read_nonblock): add ARGF.read_nonblock.
+
+Thu Nov 11 21:49:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/stats.rb (RDoc#print): get rid of NaN.
+
+Thu Nov 11 21:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (SHOWFLAGS): show compile flags.
+
+ * common.mk: hide long command lines by default. verbose-mode is
+ turned on by V=1 as before.
+ http://jarp.does.notwork.org/diary/200605b.html#200605121
+
+Thu Nov 11 21:32:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_func): accept variable address.
+
+ * ext/win32ole/extconf.rb: libuuid is needed on cygwin.
+
+Thu Nov 11 21:24:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): use cygwin_conv_path on cygwin 1.7 or
+ later.
+
+ * ruby.c (push_include_cygwin): ditto.
+
+Thu Nov 11 20:49:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRI_LL_PREFIX): format type specifier for
+ LONG_LONG may vary on platforms.
+
+Thu Nov 11 20:45:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (SYMBOL_PREFIX): separate from EXPORT_PREFIX.
+
+ * win32/mkexports.rb (Exports#each_export): use SYMBOL_PREFIX.
+
+Wed Nov 10 07:20:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (scriptbin): make executable file from
+ scripts with stub.
+
+ * ruby.c (load_file_internal): assume xflag for exe file as well
+ as no-shebang file.
+
+ * tool/rbinstall.rb: install script programs.
+
+ * win32/mkexports.rb (Exports#initialize): alias ruby_sysinit for
+ stub.
+
+ * win32/stub.c: stub for scripts. [EXPERIMENTAL]
+
+Tue Nov 9 21:57:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (init_funcname): allocate and build initialization
+ funciton name at once.
+
+Tue Nov 9 21:14:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (AC_FUNC_GETPGRP, AC_FUNC_SETPGRP): no need when
+ not used.
+
+ * configure.in (EXPORT_PREFIX): check generic prefix.
+
+Tue Nov 9 13:24:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regenc.c (onigenc_minimum_property_name_to_ctype):
+ \p{...} should be case insensitive. [ruby-core:33000]
+
+ * regenc.c (onigenc_property_list_add_property):
+ ditto.
+
+ * enc/euc_jp.c (init_property_list, property_name_to_ctype):
+ to lowercase property names.
+
+ * enc/shift_jis.c (init_property_list, property_name_to_ctype):
+ ditto.
+
+Tue Nov 9 13:29:36 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (overlapped_socket_io): get rid of a warning of 64bit
+ mingw.
+
+Tue Nov 9 10:44:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): this code uses FPU's rounding system.
+ But x86's FPU calculates double precision floating-point
+ numbers in 80bit precision, so it fails to round the value.
+ So ensure the value is assigned a variable. [ruby-dev:42551]
+ see also [ruby-math:00802]
+ http://www.shudo.net/java-grandprix99/strictfp/
+
+Tue Nov 9 07:30:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_syserr_new): new function to make SystemCallError
+ instance without errno. [EXPERIMENTAL]
+
+ * error.c (rb_syserr_fail, rb_mod_syserr_fail): ditto.
+
+Tue Nov 9 05:54:57 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/*.rb: Remove unused variable warnings.
+ Patch by Run Paint [ruby-core:30991]
+
+ * lib/rubygems/*, lib/rdoc/*.rb, lib/rake/*.rb: ditto
+
+Mon Nov 8 18:26:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_hdtoa): fix type cast and bufsize.
+
+Mon Nov 8 15:40:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): fix precision specifier doesn't
+ work well on %f. [ruby-dev:42552]
+
+Mon Nov 8 14:41:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (get_wsa_extension_function): typos.
+
+Mon Nov 8 13:41:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Add Age property to regexp. [ruby-core:33019]
+ patched by Ammar Ali, tested by Run Paint Run Run
+
+Mon Nov 8 12:16:39 2010 Ben Walton <bwalton@artsci.utoronto.ca>
+
+ * configure.in: support -h for solaris linker when gcc not used
+
+Mon Nov 8 11:47:39 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (finish_overlapped_socket): refactoring.
+
+Mon Nov 8 11:02:21 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (get_proc_address): refactoring.
+
+ * win32/win32.c (get_wsa_exetinsion_function): refactoring.
+
+Mon Nov 8 09:45:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/gbk-tbl.rb: Add euro sign. [ruby-core:33094]
+ CP936, which is de facto definition of GBK, has it.
+ http://msdn.microsoft.com/en-us/goglobal/cc305153.aspx
+
+Mon Nov 8 07:26:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check only the first symbol to get rid of
+ duplication. [ruby-core:33084] #4031
+
+Sun Nov 7 10:13:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (NM): check on all platforms. #4031
+
+Sun Nov 7 06:16:33 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/openssl/test_ocsp.rb: adding test for r29699. Thanks Elise
+ Huard! [ruby-core:32460]
+
+Sat Nov 6 07:33:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_export_prefix): check for prefixed
+ underscore of exported symbols
+
+ * tool/rbinstall.rb (bin-comm): prepend prolog shell script if
+ necessary.
+
+ * configure.in (LIBRUBY_RELATIVE): use rpath token expansion.
+
+Sat Nov 6 07:24:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/ruby.pc.in (arch, sitearch): reordered.
+
+ * configure.in: keep failed file.
+
+Sat Nov 6 07:03:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork_err): save errinfo before fdopen.
+
+Sat Nov 6 00:43:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspcid_initialize): an optional
+ parameter may be used to specify the OpenSSL::OCSP::CertificateId on
+ initialization. Thanks Elise Huard! [ruby-core:32460]
+
+Fri Nov 5 12:23:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_{process,system}.rb (test_fallback_to_sh):
+ meaningless and wrong tests where /bin/sh does not exist.
+
+ * process.c (proc_spawn_v): should spawn, not exec.
+
+Fri Nov 5 01:21:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_exec_v, proc_spawn_v): try to execute with sh if
+ no shebang. [ruby-core:32745] [EXPERIMENTAL]
+
+Fri Nov 5 00:39:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_readlines, rb_io_each_line): limit must not be zero.
+ a patch from Tomoyuki Chikanaga at [ruby-dev:42538]. #4024
+
+Fri Nov 5 00:14:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/extconf.rb: fixing ffi library location on windows.
+ Thanks Usa! [ruby-core:32930]
+
+Thu Nov 4 20:04:44 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_newobj): force garbage_collect() if GC.stress == true.
+
+Thu Nov 4 19:48:22 2010 Koichi Sasada <ko1@atdot.net>
+
+ * ChangeLog: missed to write a last ChangeLog.
+
+ * gc.c (gc_finalize_deferred): removed.
+
+ * gc.c (rb_gc_finalize_deferred): Do not invoke a free_unused_heaps().
+
+Thu Nov 4 19:45:27 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (run_final): do not need argument obj.
+
+Thu Nov 4 19:26:10 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (before_gc_sweep): fix commit miss.
+
+Thu Nov 4 19:20:46 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (after_gc_sweep, before_gc_sweep):
+ invoke rb_sweep_method_entry() as soon as possible.
+
+Thu Nov 4 19:13:58 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (after_gc_sweep, slot_sweep): finalizers should be invoked
+ as soon as possible.
+
+Thu Nov 4 10:30:40 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in (--with-valgrind): Now this option is default on.
+ You can still explicitly disable this feature by specifying
+ --without-valgrind.
+
+Thu Nov 4 02:06:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (fiber_t_alloc): raise an error when fiber is going to be
+ initialized twice. [ruby-dev:42524]
+
+Thu Nov 4 02:04:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (rb_fiber_resume): raise an "double resume" error when root
+ fiber is going to be resumed. [ruby-dev:42523]
+
+Wed Nov 3 14:17:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct#delete_field): also undefine
+ accessor methods. [ruby-core:33010]
+
+Wed Nov 3 14:13:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): concatenation of valid
+ encoding string and invalid encoding string should result
+ invalid encoding. [ruby-core:33027]
+
+Wed Nov 3 08:58:59 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, vm.c, vm_core.h: remove USE_VALUE_CACHE option.
+
+Wed Nov 3 07:47:25 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex#identify_string): parse multiple
+ regex options. a patch from Heesob Park in [ruby-core:32988].
+
+Wed Nov 3 07:33:57 2010 Tanaka Akira <akr@fsij.org>
+
+ * vm_method.c (rb_clear_cache_by_class): just return if the class has
+ no method. reported by Eric Wong. [ruby-core:32689]
+
+Tue Nov 2 22:50:25 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/visitor.rb (initialize): push accessor
+ methods to subclass that actually uses them.
+
+Tue Nov 2 22:47:08 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/visitor.rb (accept): switch to
+ a dispatch cache rather than case / when statement.
+
+Tue Nov 2 21:46:52 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS: fix a typo.
+
+Tue Nov 2 20:10:32 2010 Tajima Akio <artonx@yahoo.co.jp>
+
+ * test/rake/test_tasks.rb: clear env var which is used by the test.
+ [ruby-dev:42508]
+
+Tue Nov 2 00:25:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: win64 is just same with win32 about socket.
+ notice: but wince is not same.
+
+Mon Nov 1 21:25:57 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * main.c: <stdlib.h> is needed, to introduce the getenv(3)
+ prototype declaration. Without it a C compiler shall infer
+ the getenv type as "int getenv(...);", but this is totally
+ wrong, especially when your machine's sizeof(int) and
+ sizeof(char*) differs. On such environment a return value
+ of getenv(3), which is in fact a char*, might first casted
+ into a int (loses data here), and then casted back to char*
+ by automatic integral promotion to fit to the prototype of
+ ruby_set_debug_option().
+
+Sun Oct 31 23:27:09 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (finalizer_table, objspace->final.table):
+ Create finalizer_table at Init_heap().
+ Remove all null checks of finalizer_table.
+
+ * gc.c (mark_tbl): skip if no table entries.
+
+ * gc.c (slot_swee): remove useless need_call_final check.
+
+Sun Oct 31 22:32:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_objspace_free): finalizers should be called separately
+ from freeing objspace. [ruby-dev:42479]
+
+Sun Oct 31 22:24:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): free current VM and its objspace even
+ when exiting by SystemExit.
+
+Sun Oct 31 22:10:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (new_child_iseq): adjust argument types.
+
+ * iseq.c (prepare_iseq_build, rb_iseq_new),
+ (rb_iseq_new_with_bopt_and_opt, rb_iseq_new_with_opt),
+ (rb_iseq_new_with_bopt): ditto.
+
+ * compile.c (iseq_set_exception_table): suppress warnings.
+
+ * insns.def (putspecialobject, defined): ditto.
+
+ * iseq.c (iseq_load): ditto.
+
+Sun Oct 31 09:30:51 2010 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: some refactoring.
+ - move decl. of rb_compile_option_struct to iseq.h.
+ - define enum iseq_type.
+ - define enum vm_special_object_type.
+
+ * compile.c: some refactoring.
+ - apply above changes.
+ - (struct iseq_link_element): change value of type.
+ - remove unused decl.
+ - fix comment.
+ - rename iseq_build_body and iseq_build_exception to
+ iseq_build_from_ary_body and iseq_build_from_ary_exception.
+
+ * iseq.h: define enum catch_type and enum defined_type.
+
+ * insns.def: apply above changes.
+
+ * iseq.c: define ISEQ_MAJOR_VERSION and ISEQ_MINOR_VERSION.
+
+Sat Oct 30 23:38:59 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/encoding.rb: untabify.
+
+Sat Oct 30 21:06:37 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/encoding.rb: use Ruby native encoding mechanism.
+ [ruby-dev:42464]
+ * lib/rexml/encodings/: remove.
+
+ * lib/rexml/document.rb, lib/rexml/formatters/default.rb,
+ lib/rexml/output.rb, lib/rexml/parseexception.rb,
+ lib/rexml/parsers/baseparser.rb, lib/rexml/source.rb,
+ lib/rexml/xmldecl.rb: use Ruby's native Encoding object.
+
+ * test/rexml/, test/rss/: follow the above encoding changes.
+
+ * NEWS: add REXML's incompatible change about encoding.
+
+Sat Oct 30 17:23:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod): get rid of overflow/underflow as possible.
+
+Sat Oct 30 14:37:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_pc): erase runtime-defined variables and
+ check if generated pc file is valid.
+
+ * template/ruby.pc.in (DEFFILE): need for mingw.
+
+ * template/ruby.pc.in (LIBRUBY): fix the order.
+
+Sat Oct 30 11:33:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (ruby_pc): ignore missing variables.
+
+ * template/ruby.pc.in: add missing variables for mswin.
+
+Sat Oct 30 10:24:35 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * object.c: Make BasicObject.new accept no parameter.
+ Revert of r26135 [ruby-core:27080], as per [ruby-core:32952].
+
+Sat Oct 30 09:40:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c: use constants in id.h.
+
+Sat Oct 30 09:08:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/fiddle/closure.c (fiddle_closure): embed cif not reference
+ so that the content surely get initialized. [ruby-dev:42480]
+
+Sat Oct 30 07:01:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv-replace.rb: suppress warning.
+
+ * lib/open-uri.rb: ditto.
+
+Sat Oct 30 06:32:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/pathname/test_pathname.rb (TestPathname#test_grpowned?): the
+ group of the created file is inherited from the parent
+ directory on BSDs and MacOS X. Linux also inherit the group if
+ the setgid bit of the directory is set. It causes the test fail.
+ fixed by Shota Fukumori. [ruby-dev:42458]
+
+Sat Oct 30 05:58:54 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: retry via TCP if UDP reply is truncated.
+ fixed by Julian Mehnle. [ruby-core:32407]
+
+Sat Oct 30 00:35:13 2010 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_s_compile): fix optional argument.
+ a patch from Yutaka HARA [ruby-core:32953] [Ruby 1.9-Bug#4001]
+
+Sat Oct 30 00:24:42 2010 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (memsize_of): take care of
+ T_CLASS/const_tbl.
+ a patch from nagachika <nagachika00@gmail.com> [ruby-dev:42490]
+
+Fri Oct 29 23:32:36 2010 Koichi Sasada <ko1@atdot.net>
+
+ * test/profile_test_all.rb: added.
+ You can use test-all profiler with the following command:
+ RUBY_TEST_ALL_PROFILE=true make test-all
+ This command generates ./test_all_profile and you can analyze
+ which tests consume memories.
+
+ * test/runner.rb: ditto.
+
+Fri Oct 29 10:02:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Add 'Unknown' Script.
+ patched by Run Paint Run Run. [ruby-core:32937] #3998
+
+Fri Oct 29 05:13:34 2010 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (ObjectSpace.memsize_of_all): rename
+ ObjectSpace.total_memsize_of_all_objects() to
+ ObjectSpace.memsize_of_all([klass]).
+ Accept Class object to filter the objects.
+
+ * test/objspace/test_objspace.rb: fix test for above change.
+
+Fri Oct 29 03:04:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_dump): fix expected length. [ruby-core:32935]
+
+Thu Oct 28 23:31:39 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (before_gc_sweep, run_final): fix decrement timing of final_num.
+
+Thu Oct 28 20:11:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Update Oniguruma for Unicode 6.
+ patched by Run Paint Run Run. [ruby-core:32923] #3989
+
+Thu Oct 28 20:06:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (ONIGENC_CTYPE_SPECIAL_MASK):
+ change mask from 128 to 256. [ruby-core:32931]
+
+Thu Oct 28 12:06:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (read_request_line): extend max
+ length to 2083. This is from Internet Explorer's max uri
+ length. http://support.microsoft.com/kb/208427 [ruby-core:32924]
+
+Thu Oct 28 04:00:08 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (GC.stat): added. [ruby-dev:38607]
+
+ * test/ruby/test_gc.rb: add a test for above.
+
+Thu Oct 28 03:13:06 2010 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (memsize_of): fix rdoc.
+
+ * ext/objspace/objspace.c (total_memsize_of_all_objects): added.
+
+ * test/objspace/test_objspace.rb:
+ - add a test for ObjectSpace.total_memsize_of_all_objects.
+ - add two tests for ObjectSpace.memsize_of (for nil and Fixnum).
+
+Wed Oct 27 23:55:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (Init_iconv): warn deprecated use.
+
+Wed Oct 27 18:50:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2long, rb_big2ulong): rb2ulong() returns VALUE, but
+ its real range is ulong. So, if the size of VALUE is bigger than
+ ulong, upper bits are always zero even if the actual value is
+ negative.
+ fixed #3490
+
+Wed Oct 27 18:27:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#pipe): should close write end of pipe
+ before closing read end, to get rid of timing problem.
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
+
+Wed Oct 27 18:14:27 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getppid): support Win64.
+
+Wed Oct 27 15:07:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (w32_error): should get error no only once, because
+ the result of the second getting will indicate the error of the
+ first FormatMessage() call.
+
+Wed Oct 27 13:51:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#pipe): need to propagate exceptions
+ in read/write thread. fix r29541.
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
+
+Wed Oct 27 12:05:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * class.c (clone_const): need to return value. fix r29602.
+
+Wed Oct 27 11:58:58 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (NUM2LONG_internal): add cast to get rid of a
+ non GCC compiler warning. this is intentional type conversion.
+
+Wed Oct 27 09:25:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c: apply documentation patch by Run Paint Run Run.
+ [ruby-core:32915]
+
+Wed Oct 27 02:12:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * object.c (Init_Object), constant.h, variable.c
+ (rb_mod_private_constant, rb_mod_public_constant,
+ set_const_visibility, rb_const_get_0): add Module#public_constant
+ and private_constant. [ruby-dev:39685][ruby-core:32698]
+
+ * test/ruby/test_module.rb: add tests for above.
+
+Wed Oct 27 02:02:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * class.c, constant.h, gc.c, method.h, object.c, variable.c,
+ vm_insnhelper.c: use struct rb_constant_entry_t as entry of
+ RCLASS_CONST_TBL. RCLASS_CONST_TBL has contained VALUE of constant
+ directly. Now instead rb_const_entry_t is contained in
+ RCLASS_CONST_TBL, rb_const_entry_t is managed by malloc, and
+ have not only the value itself but also visibility flag.
+ This is another preparation for private constant (see
+ [ruby-dev:39685][ruby-core:32698]).
+
+Wed Oct 27 01:56:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * class.c, gc.c, object.c, variable.c, vm_insnhelper.c,
+ include/ruby/ruby.h: separate RCLASS_CONST_TBL from RCLASS_IV_TBL.
+ RCLASS_IV_TBL has contained not only instance variable table but
+ also constant table. Now the two table are separated to
+ RCLASS_CONST_TBL and RCLASS_IV_TBL. This is a preparation for
+ private constant (see [ruby-dev:39685][ruby-core:32698]).
+
+Tue Oct 26 18:51:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/scanf.rb (extract_float): allow 2.e+2 style.
+ [ruby-dev:42452] #3978
+
+Tue Oct 26 18:09:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (ASFLAGS): needs INCFLAGS.
+
+ * configure.in (rb_cv_dynamic_alloca): check if extra source for
+ dynamic size alloca.
+
+ * missing/x86_64-chkstk.s (___chkstk): necessary for alloca of
+ amd64-mingw32msvc-gcc on Ubuntu.
+
+ * thread_win32.c (ruby_alloca_chkstk): check stack overflow
+
+Tue Oct 26 18:04:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/ruby.pc.in (Libs): needs DLDFLAGS.
+
+Tue Oct 26 12:47:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (pkgconfig-data): moved from Makefile.in.
+
+ * tool/rbinstall.rb: install pc file only if non-empty.
+ [ruby-core:32901] #3983
+
+ * win32/Makefile.sub (ruby_pc): create pc file.
+
+Tue Oct 26 09:13:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_gcc_atomic_builtins): check for atomic
+ builtins, all are not available in Apple derivative gcc.
+
+Tue Oct 26 00:29:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (pkgconfig-data): create pkg-config metadata file.
+
+ * tool/rbinstall.rb: install pkg-config metadata file.
+
+ * template/ruby.pc.in: template of pkg-config metadata file.
+
+Mon Oct 25 16:38:07 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * signal.c (rb_atomic_t): GCC (of at least recent versions)
+ has ubiquitous support for atomic operations. On that
+ compiler a C program can issue a memory barrier using these
+ dedicated instructions. According to the GCC manual they
+ cargo culted this feature form the Itanium ABI so chances
+ are that other compilers could also support this feature.
+ But so far GCC is the only compiler that I know to have it.
+ Also note that this works on non-Itanium machines.
+
+Mon Oct 25 06:21:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): prec digits fractal part should be
+ appended to 0 if prec is given. [ruby-dev:42453] #3979
+
+Mon Oct 25 02:57:21 2010 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk (run.gdb): Quit gdb on 'make gdb' when
+ no signals are received.
+
+Mon Oct 25 00:25:23 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: some corrections of documentation.
+
+Sun Oct 24 17:14:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c, gc.c, hash.c, object.c, string.c, struct.c,
+ transcode.c, variable.c, vm.c, vm_insnhelper.c, vm_method.c:
+ replace calls to rb_error_frozen() with rb_check_frozen(). a
+ patch from Run Paint Run Run at [ruby-core:32014]
+
+ * include/ruby/intern.h (rb_check_frozen): optimize.
+ [ruby-core:32878]
+
+Sun Oct 24 15:16:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Mini#run): abort if interrupted.
+
+ * lib/test/unit.rb (Test::Unit::Mini#run_test_suites): show the
+ result even when interrupted on the way.
+
+ * lib/test/unit.rb (Test::Unit::Mini#run_test_suites): ensure
+ output sync mode to be restored.
+
+Sun Oct 24 14:11:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_define_method): defined method is run with the default
+ public visibility regardless the visibility context of definition.
+ [ruby-core:30638]
+
+Sun Oct 24 12:08:54 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/test/unit.rb: make test/unit play nicely with the rake test
+ loader. [ruby-core:32864]
+
+Sun Oct 24 00:25:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (test_segv_test): follow up the
+ change at r29556.
+
+Sat Oct 23 14:39:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: $extmk should be true for test/runner.
+
+Sat Oct 23 10:55:37 2010 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c (rb_vm_bugreport): fix to add bug outputs.
+ - loaded script ($0)
+ - loaded features ($")
+ - process memory map on Linux (/proc/self/maps)
+
+ * vm_dump.c (rb_vmdebug_stack_dump_raw): fix header message.
+
+Fri Oct 22 14:50:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ assertion message must not be nil.
+
+Fri Oct 22 13:59:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ treat nil case. Please run test-all before commit such change.
+
+Thu Oct 21 23:58:14 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_lazy_sweep): Variable declarations should be at
+ the head of block.
+
+Thu Oct 21 23:56:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (objspace_each_objects, rb_objspace_each_objects): use
+ struct.
+
+ * gc.c (objspace_each_objects): fix return with no value.
+
+Thu Oct 21 23:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_initialize): remove useless intermediate variable.
+
+Thu Oct 21 16:07:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_f_select): change rdoc.
+ patched by Eito Katagiri [ruby-core:31805]
+
+Thu Oct 21 15:55:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httpauth/digestauth.rb
+ (WEBrick::HTTPAuth::ProxyDigestAuth#check_uri): privated.
+ [ruby-dev:42344]
+
+Thu Oct 21 15:50:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_f_select): add correct rdoc.
+ patched by Dave Thomas [ruby-core:32467]
+
+Thu Oct 21 15:42:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/telnet.rb (Net::Telnet#close): added.
+ patched by Erik Hollensbe [ruby-dev:42260] #3830
+
+Thu Oct 21 13:08:00 2010 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (rb_objspace_each_objects): don't lazy sweep in
+ rb_objspace_each_objects. [Bug #3940] [ruby-dev:42369]
+
+Thu Oct 21 00:05:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#pipe): get rid of deadlock on pipe.
+ a patch from Tomoyuki Chikanaga at [ruby-dev:42435]. #3970
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
+
+Wed Oct 20 23:54:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dbm/dbm.c: rdoc based on a patch by mathew meta AT
+ pobox.com, at [ruby-core:32853].
+
+Wed Oct 20 10:47:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): reject 0x1.p+0. [ruby-dev:42432] #3966
+
+Wed Oct 20 10:00:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): print floating point on "%#a".
+ [ruby-dev:42431] Bug#3965
+
+Tue Oct 19 19:30:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): clear ALT flag for %a.
+ [ruby-core:32841] [ruby-core:32848]
+
+Tue Oct 19 12:19:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): fix over-count of field size.
+
+Tue Oct 19 03:08:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): use HEXPREFIX flag for prefix of %a.
+ [ruby-core:32841]
+
+Mon Oct 18 13:18:01 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_class_init): Define
+ Digest::Class.new(). [Feature #3954]
+
+Mon Oct 18 12:58:40 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_pack): refine the document. [ruby-dev:42397]
+ (pack_unpack): ditto.
+
+Mon Oct 18 10:19:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (transport_request): @socket may be nil.
+ patched by Egbert Eich [ruby-core:32829]
+
+Mon Oct 18 09:57:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c (BSD_vfprintf): wrong padding around prefix and
+ floating point with %a. [ruby-dev:42403] Bug #3956
+
+Sun Oct 17 22:36:33 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/delta.rb: added an rdoc tag.
+
+Sun Oct 17 10:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_mod_remove_const): update rdoc.
+ [ruby-core:31957]
+
+Sun Oct 17 10:40:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_define_{class,module}_id_under): register to be
+ marked, which probably are defined and used internally.
+
+Sat Oct 16 11:10:55 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_encoding2cp): set codepage 20936
+ according to GB2312. [Bug #3937] [ruby-core:32758]
+
+Sat Oct 16 10:54:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (CPP): already used in .c.i rule.
+
+ * cygwin/GNUmakefile.in (DLLWRAP, WINDRES): add --driver-name and
+ --preprocessor options explicitly. [ruby-core:32776]
+
+Sat Oct 16 10:06:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/sdbm/_sdbm.c (SEEDUPS, BADMESS): make settable using command
+ line options.
+
+ * ext/sdbm/_sdbm.c (makroom): suppress unused result warning.
+
+ * ext/sdbm/extconf.rb: disable BADMESS, a library should not emit
+ messages directly.
+
+Sat Oct 16 08:39:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_strerror): get English message first, instead of
+ system default. see [ruby-dev:42358].
+
+Sat Oct 16 00:08:00 2010 Koichi Sasada <ko1@atdot.net>
+
+ * hash.c (rb_hash_aref): skip calling "default" method
+ if it is not needed, for speed-up.
+
+Fri Oct 15 23:36:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (NUM2DEVT, DEVT2NUM, PRI_DEVT_PREFIX): fallback to
+ unsigned int.
+
+Fri Oct 15 22:54:46 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_hresult2msg): get English message first,
+ instead of system default. [ruby-core:32765]
+
+Fri Oct 15 22:47:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (VALUE): prefer long over uintptr_t,
+ FIX2LONG expects VALUE to be long at least.
+
+ * include/ruby/ruby.h (FIX2LONG): parenthesize the argument.
+
+Fri Oct 15 20:30:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (dev_t): use RUBY_REPLACE_TYPE.
+
+ * file.c (rb_stat_inspect): use PRI_DEVT_PREFIX.
+
+Fri Oct 15 17:26:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_pack): simplify comparison of explicit_endian
+ as pointed by nobu.
+
+ * pack.c (pack_unpack): ditto.
+
+Fri Oct 15 16:40:37 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_pack): fix more than one modifiers appear in the
+ format string. [ruby-core:32793]
+
+ * pack.c (pack_unpack): ditto.
+
+Thu Oct 14 23:20:42 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_folderitem2_invokeverb.rb: refactoring.
+
+Thu Oct 14 22:18:29 2010 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, iseq.c, vm_insnhelper.c: rename variable name
+ (ip -> iseq).
+
+Thu Oct 14 20:41:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_pack): support endian modifiers: < and >.
+ [ruby-dev:42376] Feature #3491
+
+ * pack.c (pack_unpack): ditto.
+
+Thu Oct 14 20:50:51 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (reg_get_val): expand environment in
+ the pathname. [Bug #3907]
+
+Thu Oct 14 07:35:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (DEVT2NUM): added. Size of dev_t is depend on the
+ environment even if POSIX defines dev_t as unsigned integer.
+ For example, OpenVMS, 64bit Solaris 9, and NetBSD 6 defines
+ dev_t as 64bit unsigned integer.
+
+ * file.c (rb_stat_dev): use DEVT2NUM.
+
+ * file.c (rb_stat_dev_major): dev_t is not long. major(3)'s return
+ value is int.
+
+ * file.c (rb_stat_dev_minor): dev_t is not long. minor(3)'s return
+ value is int.
+
+ * configure.in: check size of dev_t.
+
+Thu Oct 14 07:22:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_and, rb_ary_or), class.c (rb_mod_init_copy),
+ gc.c (undefine_final), time.c (time_mload): get rid of
+ type-punning casts.
+
+Thu Oct 14 04:16:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (ruby_float_step): fix Numeric#step with infinity unit
+ doesn't works well. [ruby-core:32779]
+
+Wed Oct 13 23:16:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/enc-unicode.rb: get rid of lots of warnings.
+
+ * iseq.c (insn_operand_intern, rb_iseq_disasm): fix format specifiers.
+
+ * vm.c (thread_free): ditto.
+
+ * numeric.c (check_uint): get rid of overflow on LLP64 platforms.
+
+ * insns.def (opt_case_dispatch): use st_data_t.
+
+Wed Oct 13 22:32:34 2010 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI::unescape): bugfix to unescape the multibyte
+ string. Thanks nobu and tDiary dev members. [Bug #3909]
+
+Wed Oct 13 21:13:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (int_chr): raise error when the value is negative.
+
+Wed Oct 13 19:24:08 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm.c (ruby_vm_destruct): This function type was wrong; correct to the prototype.
+
+Wed Oct 13 14:58:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_num_to_uint): fix 32bit logic.
+
+Wed Oct 13 12:53:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_num_to_uint): added to check the range of arguments.
+ Mainly for negative value with NUM2UINT on 32bit environment.
+
+ * string.c (rb_str_concat): use rb_num_to_uint.
+
+Wed Oct 13 12:10:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (w32_error): get English message first, instead
+ of system default. see [ruby-core:32765].
+ [experimental]
+
+Wed Oct 13 11:04:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c (ruby_set_debug_option): define always for binary
+ compatibility with debug env enabled binary.
+
+ * signal.c (ruby_enable_coredump): ditto.
+
+Wed Oct 13 10:52:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (ruby_executable_node): missing prototype.
+
+Wed Oct 13 05:23:04 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * missing/strchr.c: add strlen's prototype.
+
+ * missing/strstr.c: ditto.
+
+Wed Oct 13 00:21:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (struct mktime_arg): constified.
+
+ * ext/syck/rubyext.c (mktime_do, mktime_r, rb_syck_mktime): fix
+ function signatures.
+
+Wed Oct 13 00:18:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (MurmurMagic): get rid of literal overflow.
+
+ * configure.in (RUBY_CHECK_PRINTF_PREFIX): check for printf format
+ specifier if possible.
+
+Tue Oct 12 23:58:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_open_osfhandle, rb_w32_wopen, rb_w32_pipe):
+ use uintptr_t instead of long for win64.
+
+ * win32/win32.c (socketpair_internal): suppress warnings.
+
+ * win32/win32.c (ftruncate): use HANDLE instead of long for win64.
+
+ * vsnprintf.c (BSD_vfprintf): fix cast.
+
+ * numeric.c (rb_num2fix): result of rb_num2long is SIGNED_VALUE.
+
+ * compile.c (iseq_build_body), error.c (set_syserr, get_syserr),
+ (syserr_initialize), gc.c (define_final, rb_gc_copy_finalizer),
+ (run_final), hash.c (rb_hash_aref, rb_hash_lookup2),
+ (rb_hash_fetch_m, rb_hash_clear, rb_hash_aset, eql_i),
+ iseq.c (iseq_load, iseq_data_to_ary), marshal.c (r_symlink),
+ thread.c (rb_thread_local_aref),
+ variable.c (generic_ivar_remove, ivar_get, rb_const_get_0),
+ (rb_cvar_get), vm.c (rb_vm_check_redefinition_opt_method),
+ vm_insnhelper.c (vm_get_ev_const), vm_method.c (remove_method),
+ ext/iconv/iconv.c (map_charset): use st_data_t.
+
+ * compile.c (iseq_build_body), insns.def (getglobal, setglobal),
+ iseq.c (iseq_load, iseq_data_to_ary), util.c (valid_filename):
+ use VALUE.
+
+ * gc.c (obj_free, rb_objspace_call_finalizer): fix truncating
+ cast.
+
+ * gc.c (mark_current_machine_context): suppress warnings.
+
+ * compile.c (iseq_compile_each): fix truncating cast.
+
+ * cont.c (fiber_setcontext): missing variable definition.
+
+Tue Oct 12 19:25:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (exc_to_s): use OBJ_INFECT.
+
+ * error.c (name_err_to_s): ditto.
+
+ * error.c (name_err_mesg_to_str): ditto.
+
+ * error.c (syserr_initialize): ditto.
+
+Tue Oct 12 19:07:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (syserr_initialize): taint message if mesg is given
+ and it is tainted.
+
+Tue Oct 12 18:25:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_ungetc): always see Bignum. On 32bit valid value
+ may be a Bignum. On 64bit for errors. [ruby-dev:42366]
+
+Tue Oct 12 18:25:04 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_concat): use unsigned int for GB18030.
+
+Tue Oct 12 17:53:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric (check_uint): the mask must refer to VALUE.
+
+Tue Oct 12 17:47:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric (check_uint): set MSB for negative value.
+
+ * numeric (rb_num2uint): return value's type of rb_num2ulong
+ is VALUE.
+
+ * numeric (int_chr): variable i can't be negative.
+
+Tue Oct 12 16:04:37 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_strerror): get English message first, instead
+ of system default. see [ruby-dev:42358].
+ [experimental]
+
+Tue Oct 12 15:52:35 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_strerror): unmap some range of errno for
+ workaround of VC10's strerror() and sys_nerr problem.
+ based on a patch from Akio Tajima, [ruby-dev:42355].
+
+Tue Oct 12 15:36:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_ungetc): use unsigned int for GB18030.
+
+Tue Oct 12 15:14:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_putc): support multibyte characters.
+ [ruby-core:30697]
+
+Tue Oct 12 15:10:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_enc_uint_chr): split from int_chr.
+
+ * numeric.c (int_chr): use rb_enc_uint_chr.
+
+ * include/ruby/encoding.h (rb_enc_uint_chr): added.
+
+Tue Oct 12 14:04:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (int_chr): a codepoint of Ruby M17N must be 32bit
+ unsigned int; GB18030 uses MSB. Also note that OnigCodePoint
+ is defined as unsigned int.
+
+Tue Oct 12 12:20:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): foolish mistake.
+
+Tue Oct 12 10:39:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_MINGW32): canonicalize only on mingw.
+
+Mon Oct 11 20:20:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (HTTP.get): specify ASCII-8BIT as the result
+ encoding of Zlib::GzipReader.
+ http://hibari.2ch.net/test/read.cgi/tech/1281473294/271
+
+Mon Oct 11 17:42:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (syserr_initialize): use mesg's encoding when locale
+ encoding is US-ASCII. If locale encoding is not US-ASCII,
+ assume err has non ASCII characters. [ruby-dev:42358]
+
+Mon Oct 11 14:03:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (syserr_initialize): set the encoding of Errno::*#message
+ as locale. [ruby-dev:42358]
+
+Mon Oct 11 06:38:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_set_encoding):
+ StringIO#set_encoding can get 2nd argument and optional hash
+ for API compatibility to IO. [ruby-dev:42356]
+
+Mon Oct 11 06:11:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_set_encoding): use rb_funcall2 when the io is not
+ a T_FILE. [ruby-dev:42356]
+
+Sun Oct 10 18:42:23 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#replace): Apply a bit of optimization.
+
+Sun Oct 10 10:20:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_MINGW32): canonicalize as like mswin version.
+
+Sun Oct 10 05:33:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_signal_buff_size, rb_signal_exec): moved
+ declarations from thread.c.
+
+Sat Oct 9 16:54:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RSHIFT): quote to get rid of argument expansion
+ for autoconf 2.68.
+
+Sat Oct 9 11:00:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_reset_event_flags, exec_event_hooks): ignore
+ hooks marked as removed.
+
+ * thread.c (thread_exec_event_hooks): remove hooks to be removed.
+
+ * thread.c (rb_threadptr_remove_event_hook, rb_remove_event_hook):
+ defer removing hooks if running the hooks. [ruby-dev:42350]
+
+Sat Oct 9 10:51:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_threadptr_exec_event_hooks): suppress each event
+ hooks separately.
+
+ * thread.c (thread_suppress_tracing): split from
+ ruby_suppress_tracing, accepting thread pointer and event mask.
+
+Sat Oct 9 08:16:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_threadptr_remove_event_hook): fix typo.
+
+Fri Oct 8 10:52:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RBCONFIG): depends on version.h due to
+ RUBY_PATCHLEVEL. [ruby-core:32709]
+
+Fri Oct 8 00:24:54 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Fixing documentation typos. [ruby-core:32712]
+
+Thu Oct 7 09:14:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_exec.c (vm_exec_core): Treat clang as non gcc on this
+ context: It has __asm__ but doesn't works well.
+
+Wed Oct 6 12:28:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/uri/generic.rb (URI::Generic#hostname): new method.
+ (URI::Generic#hostname=): ditto.
+
+ * lib/open-uri.rb: use URI#hostname
+
+ * lib/net/http.rb: ditto.
+
+ reported by Adam Majer. [ruby-core:32056]
+
+Wed Oct 6 11:52:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (fptr_finalize): write_mutex might have been destroyed
+ already in finalization phase, as the order of finalizers is not
+ guaranteed. rb_mutex_t should be used in place of Mutex object
+ in the future.
+
+Tue Oct 5 22:17:02 2010 wanabe <s.wanabe@gmail.com>
+
+ * win32/mkexports.rb: revert r29320 and r29402.
+
+Mon Oct 4 12:43:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (regexp): dregexp has literal string only at the head
+ and successors are array. [ruby-core:32682]
+
+Mon Oct 4 10:22:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (rand_init): This checks the value is in 32bit or not,
+ so use int32_t, not int.
+
+Mon Oct 4 09:47:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (rand_init): remove useless assignment.
+
+ * re.c (update_char_offset): remove unused variable.
+
+ * re.c (read_escaped_byte): ditto.
+
+Mon Oct 4 09:30:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/bn.rb (Integer#to_bn): OpenSSL::BN.new
+ accepts only Strings, so call Integer#to_s(16).
+ 16 is for an optimization. [ruby-dev:42336]
+
+Mon Oct 4 07:57:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (fiber_memsize): Return size.
+ Before this change, fiber_memsize always returns 0.
+
+Mon Oct 4 07:16:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/unicode.c (onigenc_unicode_property_name_to_ctype):
+ remove useless assignment.
+
+ * vm.c (vm_make_proc_from_block): ditto.
+
+ * variable.c (rb_ivar_count): ditto.
+
+Mon Oct 4 06:40:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (clean-rdoc): Don't use \ in variable expansion.
+ BSD make treats it as an escape character.
+
+Mon Oct 4 00:01:53 2010 wanabe <s.wanabe@gmail.com>
+
+ * tool/config.sub: revert r29320, r29324, r29347, r29354, r29365
+ to automake-1.11.1. [ruby-core:32634]
+
+ * win32/mkexports.rb: no longer use 'mingw64'. a patch from Luis Lavena
+ at [ruby-core:32678].
+
+Sun Oct 3 20:36:37 2010 Akio Tajima (arton) <artonx@yahoo.co.jp>
+
+ * test/win32ole/test_folderitem2_invokeverb.rb: Change creating
+ shortcut verb to 'Link' [Bug #3339]
+
+Sun Oct 3 19:44:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): get rid of duplicated ruby target when
+ already there it was.
+
+Sat Oct 2 22:59:32 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_thread.rb: add for win32ole with Thread.
+
+Fri Oct 1 17:03:00 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/webrick/test_httpproxy.rb (TestWEBrickHTTPProxy::test_upstream_proxy):
+ My machine fails this test at this line, saying 503 service unavailable.
+
+Thu Sep 30 16:11:08 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getenv): should return NULL if specified name
+ is empty. a patch from Heesob Park at [ruby-core:32650]
+
+Thu Sep 30 15:18:23 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (command_asgn): allow command_call to be right hand side
+ expression of chained assignment. [ruby-dev:42313]
+
+Thu Sep 30 10:55:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (ruby_setenv): workaround for old Windows. a patch from
+ Heesob Park. [ruby-core:32353]
+
+Thu Sep 30 09:29:06 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_form): change treatment of
+ undefined value in given array as latest internet draft for
+ application/www-form-urlencoded.
+ http://tools.ietf.org/html/draft-hoehrmann-urlencoded-01
+
+Thu Sep 30 09:34:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): fixed wrong type of return value of
+ SymGetModuleBase64(). [ruby-dev:42306]
+
+Wed Sep 29 21:04:05 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions::test_script_from_stdin):
+ As usual, PTY is not always available.
+
+Wed Sep 29 18:38:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.sub (x64): regularize only for pc vendor, and strip
+ useless 64 suffix.
+
+Wed Sep 29 17:53:02 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BIGDECIMAL_ENABLE_VPRINT):
+ VPrint is usually disabled. It's only used in debugging.
+
+Wed Sep 29 17:41:34 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_limit):
+ return the result of a block.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_save_limit):
+ add a test for the above change.
+
+Wed Sep 29 16:18:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): remove unused optional arguments.
+
+Wed Sep 29 13:26:30 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_rounding_mode):
+ return the result of a block.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_save_rounding_mode):
+ add a test for the above change.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_save_exception_mode):
+ add a test for the return value of BigDecimal.save_exception_mode.
+
+Wed Sep 29 12:45:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div2, BigDecimal_add2,
+ BigDecimal_sub2, BigDecimal_mult2, VpLimitRound): remove meaningless
+ casts to get rid of compiler warnings.
+
+Wed Sep 29 12:35:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VPrint, VpToString): fix format.
+
+Wed Sep 29 12:31:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/known_classes.rb (RDoc::KNOWN_CLASSES): add Encoding.
+
+Tue Sep 28 20:50:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.sub (x64): regularize same as mswin.
+
+Tue Sep 28 20:06:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): add windows support.
+ based on patches from Peter Weldon at [ruby-core:32551]
+
+Mon Sep 27 23:30:34 2010 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_case_dispatch), vm_insnhelper.c:
+ execute the procedures of "when" clauses by bytecode
+ instead of st_foreach() when the object does not hit
+ prepared hash. [ruby-dev:42304]
+
+Mon Sep 27 15:54:03 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/net/http/test_https.rb: As always, localhost is not
+ guaranteed to be resolved as 127.0.0.1. But a SSL
+ certificate needs a socket to listen on a specific address
+ where a CN resolves to. On situations where localhost is
+ not 127.0.0.1, these tests are not possible.
+
+Mon Sep 27 15:25:05 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb: resurrection of r29259.
+ this change depends on minitest 1.7.1.
+
+ * lib/test/unit/assertions.rb: ditto.
+
+Sun Sep 26 22:59:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.sub (x86_64-pc-mingw64): regularize.
+
+Sun Sep 26 22:21:07 2010 wanabe <s.wanabe@gmail.com>
+
+ * ext/openssl/ossl_hmac.c (ossl_hmac_hexdigest, ossl_hmac_s_hexdigest),
+ ext/openssl/ossl_pkey_ec.c (ossl_ec_group_set_seed),
+ ext/openssl/ossl_ssl_session.c (ossl_ssl_session_to_der),
+ ext/openssl/ossl_pkcs7.c (numberof): suppress warnings.
+ [ruby-core:31932]
+
+Sun Sep 26 10:25:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.{guess,sub}: updated to automake-1.11.1.
+
+Sat Sep 25 22:48:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_DLDFLAGS): fix quoting.
+
+Sat Sep 25 10:30:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_DLDFLAGS): use -unexported_symbol only
+ when available. http://trac.macports.org/ticket/26341
+
+Sat Sep 25 10:05:49 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Always add -mieee for Renesas SH4.
+ Thanks, Nobuhiro Iwamatsu. [Feature #3874] [ruby-core:32548]
+
+Sat Sep 25 01:34:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (install-cross): target to install cross-compiling
+ stuff.
+
+Fri Sep 24 23:44:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_call), vm.c (invoke_block_from_c),
+ vm_insnhelper.c (vm_yield_with_cfunc): pass given block.
+ [ruby-core:32075]
+
+ * vm_eval.c (rb_funcall_passing_block): new function to call
+ method with passing given block.
+
+Fri Sep 24 15:50:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_to_i): fix rdoc: String#to_i raises an
+ exception when base is invalid. [ruby-core:31685]
+
+Fri Sep 24 15:28:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_rindex): use rb_enc_prev_char instead of repeated
+ str_nth.
+ patched by Michael Selig [ruby-core:32498]
+
+Fri Sep 24 14:19:12 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/test_pty.rb: Same as 229281; existence of PTY class do not
+ guarantee a successful pty operation.
+
+Fri Sep 24 06:25:55 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.7.2 r5879.
+ * test/minitest/*.rb: ditto.
+
+Thu Sep 23 23:09:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_cref0): cref is stacked only in normal
+ iseqs, so check if it is the case first.
+
+Thu Sep 23 23:08:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.sub: mingw64 should use x86_64. [ruby-core:32514]
+
+Thu Sep 23 21:40:40 2010 wanabe <s.wanabe@gmail.com>
+
+ * ext/socket/raddrinfo.c (init_addrinfo, inspect_sockaddr): suppress
+ warnings. see [ruby-core:31932].
+
+Thu Sep 23 19:27:57 2010 wanabe <s.wanabe@gmail.com>
+
+ * thread_win32.c (w32_wait_events, w32_close_handle): suppress warnings.
+ see [ruby-core:31932].
+
+Thu Sep 23 18:54:39 2010 wanabe <s.wanabe@gmail.com>
+
+ * tool/config.sub: add mingw64.
+
+ * win32/mkexports.rb (Exports::Mingw64): added.
+
+ * win32/mkexports.rb (Exports::Mingw32): renamed from Exports::Mingw.
+
+Thu Sep 23 09:01:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_cref_push): no outer cref is needed for proc
+ from method. Bug #3786, Bug #3860, [ruby-core:32501]
+
+Wed Sep 22 17:12:01 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/openssl/utils.rb (OpenSSL#silent): always restore $VERBOSE.
+ [ruby-dev:42285]
+
+Wed Sep 22 16:59:40 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/test_prime.rb (TestPrime#test_new): the warning expected have
+ not been displayed when $VERBOSE == nil. Patch by Shota Fukumori
+ a.k.a. sora_h. [ruby-dev:42272]
+ Recovers $stderr even if StringIO.new fails. Reported by unak.
+
+Wed Sep 22 01:55:48 2010 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_method.rb: fix last commit.
+
+Wed Sep 22 01:49:52 2010 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_method.rb: add a test for [ruby-core:30534].
+
+Wed Sep 22 00:52:44 2010 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/rdoc/ri/store.rb (save_cache): remove duplicate entries.
+
+Wed Sep 22 00:00:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_f_pathname): Pathname() translated
+ from pathname.rb.
+
+Tue Sep 21 22:18:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/mkconfig.rb: fixed build problem on mswin64 introduced in r29278.
+
+Tue Sep 21 02:42:35 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/pathname/test_pathname.rb (TestPathname#test_mkdir): fix typo.
+
+Mon Sep 20 23:23:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (bracket): get rid of scanning at the end of the pattern
+ string, not to raise an exception while globbing command line.
+ [ruby-core:32478]
+
+Mon Sep 20 11:25:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (Init_pathname): Pathname#=~ undefinition
+ translated from pathname.rb.
+
+Mon Sep 20 02:34:11 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (check_rounding_mode, BigDecimal_mode):
+ raise ArgumentError instead of TypeError passing invalid modes.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_mode, test_round):
+ change against the above modifications.
+
+Sun Sep 19 22:08:39 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/mkmf.rb (try_link): rdoc
+ (try_compile): ditto
+ (try_cpp): ditto
+ (try_func): ditto
+ (try_var): ditto
+ (try_run): ditto
+ (egrep_cpp): ditto
+
+Sun Sep 19 20:43:33 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in (--disable-install-doc): disables capi too, in addition
+ to rdoc.
+ (--disable-install-rdoc): a new option for disabling only rdoc.
+ (--disable-install-capi): a new option for disabling only capi.
+
+Sun Sep 19 20:37:45 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (clean): removes all documents on cleaning.o
+ (CAPIOUT): new variable.
+ (clean-capi, distclean-capi, realclean-capi): new targets
+
+ * Makefile.in (clean-capi, distclean-capi, realclean-capi): ditto.
+
+ * win32/Makefile.sub (clean-capi, distclean-capi, realclean-capi):
+ ditto.
+
+Sun Sep 19 13:44:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_SO): fix an oversight of replace
+ RUBY_INSTALL_NAME with RUBY_SO_NAME. a patch from Jeremy Evans
+ at [ruby-core:32474].
+
+Sun Sep 19 07:48:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_unlink): Pathname#unlink and
+ Pathname#delete translated from pathname.rb.
+
+Sun Sep 19 06:06:07 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (check_rounding_mode): added for
+ converting symbol to rounding mode number.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mode, BigDecimal_round):
+ support to specify rounding mode by symbol.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_mode, test_round):
+ add tests for above changes.
+
+Sun Sep 19 05:14:35 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c: fix rounding algorithms for half-down
+ and half-even. This change is based on the patch created by Matthew
+ Willson, the reporter of this bug. [Bug #3803] [ruby-core:32136]
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests for above changes.
+
+Sat Sep 18 20:09:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_each_entry): Pathname#each_entry
+ translated from pathname.rb.
+
+Fri Sep 17 23:44:07 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/xpath_parser.rb, test/rexml/test_xpath.rb:
+ add missing method availability check. [ruby-core:32447]
+ Reported by Wiebe Cazemier. Thanks!!!
+
+Fri Sep 17 23:23:26 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_sax.rb: don't use thread and sleep to avoid slow test.
+
+Fri Sep 17 23:10:44 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_core.rb: enable.
+
+Fri Sep 17 22:46:02 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/: untabify.
+
+Fri Sep 17 22:29:56 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/: fix fixture data path. All REXML tests are worked.
+
+Fri Sep 17 22:15:15 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_listener.rb: remove needless codes.
+
+Fri Sep 17 22:12:23 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/: import REXML tests from
+ http://www.germane-software.com/repos/rexml/trunk/test/.
+ Many tests are failed temporary. I'll fix them quickly. Sorry.
+
+Fri Sep 17 16:48:49 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/io/console/test_io_console.rb (TestIO_Console::helper):
+ PTY.open is not guaranteed to work. On my machine opening a
+ pty is prohibited via process control group. On those cases
+ exceptions shall occur, and that doesn't mean our fault.
+ Skip those tests on such situations.
+
+Fri Sep 17 08:30:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tracer.rb: count only non-internal libraries in stack trace,
+ ignoring custom_require. [ruby-core:31858]
+
+Fri Sep 17 02:18:41 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * tool/mkconfig.rb: Fix build with m4 1.4.15 generating duplicate
+ lines in config.status. According to nobu, the mswin32 port may
+ depend on the piece of code in question, so the behavior is left
+ unchanged on mswin32.
+
+Thu Sep 16 23:47:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_opendir): Pathname#opendir translated
+ from pathname.rb.
+
+Thu Sep 16 21:40:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::GlobOption): merged RejectOption.
+
+ * test/runner.rb: utilize GlobOption.
+
+Thu Sep 16 21:31:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/driver.rb (RDoc::RI::Driver.setup_options)
+ (RDoc::RI::Driver.fixup_options): split from process_args.
+ libraries should not parse ARGV inside, since it's a task of
+ applications, not libraries.
+
+Thu Sep 16 21:02:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths.each): HOMEDIR can be nil
+ if $HOME is unset.
+
+Thu Sep 16 14:50:42 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/ruby/test_file_exhaustive.rb (TestFileExhaustive::test_expand_path):
+ ENV["HOME"] might not be set. On those cases without it an
+ exception raises here, which effectively disables later
+ tests on this method.
+
+Thu Sep 16 08:30:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): fix rdoc. pointed out by Tomoyuki
+ Chikanaga at [ruby-core:32395], and a patch from Daniel
+ Bovensiepen at [ruby-core:32403].
+
+Thu Sep 16 08:27:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/extconf.rb: use expanded sysconfdir with empty DESTDIR.
+ [ruby-core:32394]
+
+Thu Sep 16 06:07:24 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_rmdir): Pathname#rmdir translated
+ from pathname.rb.
+
+Thu Sep 16 00:36:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/extconf.rb: Remove Readline 6 check because
+ Ruby's license is now GPLv3 compatible. [ruby-core:28736]
+
+Thu Sep 16 00:26:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * COPYING: change Ruby's License from a dual license with GPLv2
+ to a dual license with 2-clause BSDL.
+ [ruby-dev:42166] [ruby-core:31971]
+ [ruby-dev:39167] [ruby-core:25272]
+
+ * COPYING.ja: ditto.
+
+ * BSDL: added. this is from The FreeBSD License.
+
+Wed Sep 15 21:07:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_mkdir): Pathname#mkdir translated
+ from pathname.rb.
+
+Wed Sep 15 13:37:00 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb: "localhost" not guaranteed to
+ resolve to "127.0.0.1". On my machine it is "::1" instead.
+ The problem is, you have to connect to the imaps server via
+ the canonical name written in a server certificate, and that
+ of the server.cert is "localhost". So you have to listen to
+ the address of what "localhost" resolves to. I think this
+ situation cannot be resolved in a handy manner because the
+ test "test_imaps_post_connection_check" is actually
+ expecting to connect to a server via an address other than
+ the CN. On my machine several assertions won't pass because
+ the test cannot connect to the server.
+
+Wed Sep 15 09:12:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_puts): fix for wide char encoding strings.
+ [ruby-dev:42212]
+
+Wed Sep 15 07:27:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_format_m): mentioned about Hash argument. a patch
+ from Daniel Bovensiepen at [ruby-core:32386].
+
+ * sprintf.c (get_hash): ditto, and fix typo.
+
+Wed Sep 15 07:22:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_entries): Pathname#entries translated
+ from pathname.rb.
+
+Wed Sep 15 02:13:44 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/closure.c : Don't use FFI closure alloc on OpenBSD.
+ Thanks Jeremy Evans! [ruby-core:32384]
+
+Tue Sep 14 20:17:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_s_getwd): Pathname.getwd and
+ Pathname.pwd translated from pathname.rb.
+
+Tue Sep 14 05:13:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_s_glob): Pathname.glob translated
+ from pathname.rb.
+
+Tue Sep 14 01:24:51 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (ruby_getaddrinfo__aix): suppress a
+ warning.
+
+Mon Sep 13 20:48:30 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_zero_p): Pathname#zero? translated
+ from pathname.rb.
+
+Mon Sep 13 19:56:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/rubysocket.h (__DARWIN_ALIGNBYTES): workaround of a
+ bug in system header of darwin 9. [ruby-core:32341]
+
+Mon Sep 13 18:11:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_do): fix typo. a patch from Peter Weldon
+ at [ruby-core:32327].
+
+Mon Sep 13 10:12:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): reject Float('0x0.').
+ [ruby-dev:42239] Bug #3820
+
+Mon Sep 13 09:23:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_bn.c (ossl_bn_is_prime): fix comparison
+ with rb_scan_args. Before this fix, OpenSSL::BN#prime?
+ is fully broken. [ruby-dev:42225]
+
+Mon Sep 13 06:45:24 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_writable_real_p):
+ Pathname#writable_real? translated from pathname.rb.
+
+Sun Sep 12 21:21:50 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: [ruby-core:32096] Thanks Colin Bartlett.
+
+Sun Sep 12 19:30:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_world_writable_p):
+ Pathname#world_writable? translated from pathname.rb.
+
+Sun Sep 12 09:16:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_writable_p): Pathname#writable?
+ translated from pathname.rb.
+
+Sun Sep 12 08:36:15 2010 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rlimit_resource_name2int): support more limits:
+ RLIMIT_MSGQUEUE, RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_RTTIME and
+ RLIMIT_SIGPENDING.
+ (Init_process): ditto.
+ patch by Run Paint Run Run. [ruby-core:32262]
+
+Sun Sep 12 04:27:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rlimit_resource_name2int): use STRCASECMP to avoid
+ ALLOCA_N.
+
+Sat Sep 11 16:47:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (ruby_setenv): raise if putenv and SetEnvironmentVariable
+ failed, because of the restriction of the size on Windows.
+ based on a patch from Peter Weldon at [ruby-core:32304]. fix:
+ Bug#3812, [ruby-core:32250]
+
+Sat Sep 11 15:19:57 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/httpauth/digestauth.rb (WEBrick::Config::DigestAuth):
+ Add documentation
+
+ * lib/webrick/config.rb (WEBrick::Config::DigestAuth): Add
+ documentation
+
+Sat Sep 11 12:32:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_set_kcode, rb_get_kcode): removed
+ zombie prototype declarations. a patch from Eric Hodel
+ at [ruby-core:32305].
+
+Sat Sep 11 06:53:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_symlink_p): Pathname#symlink?
+ translated from pathname.rb.
+
+Fri Sep 10 23:03:43 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_sticky_p): Pathname#sticky? translated
+ from pathname.rb.
+
+Fri Sep 10 19:11:13 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#continue): add
+ method for generating HTTP/1.1 100 continue response if the client
+ expects it, otherwise does nothing. Patch by Brian Candler.
+ ref #855.
+
+ * test/webrick/test_httprequest.rb: test added.
+
+Fri Sep 10 17:49:34 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/x509-internal.rb: removed unused local
+ variable.
+
+ * test/openssl/*: less warnings while test running with -w.
+
+Fri Sep 10 16:49:20 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * class.c (rb_scan_args): Add support for optional keyword
+ argument hash. [ruby-dev:42221] [ruby-dev:38048]
+
+ * README.EXT, README.EXT.ja: Update documentation accordingly.
+
+ * dir.c (dir_initialize): Make use of the new rb_scan_args()
+ feature.
+
+ * io.c (rb_io_s_popen, rb_scan_open_args, rb_io_initialize)
+ (rb_io_s_pipe, open_key_args, io_s_foreach, io_s_readlines)
+ (rb_io_s_read, rb_io_set_encoding): Ditto.
+
+ * transcode.c (str_transcode, econv_args)
+ (econv_primitive_convert): Ditto.
+
+ * ext/zlib/zlib.c (rb_gzreader_initialize): Ditto.
+
+Fri Sep 10 10:33:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (rb_genrand_ulong_limited): renamed from
+ rb_rand_internal and now this is public API.
+
+ * include/ruby/ruby.h (rb_genrand_ulong_limited): added.
+
+ * bignum.c (big_sparse_p): use rb_genrand_ulong_limited.
+
+Fri Sep 10 13:07:22 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/digest/lib/digest.rb: removed unused exception variable
+ assignment to avoid a warning.
+
+Fri Sep 10 07:29:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_systmpdir): assume system default tmpdir
+ safe. [ruby-dev:42089]
+
+Fri Sep 10 07:03:23 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_size_p): Pathname#size? translated from
+ pathname.rb.
+
+Fri Sep 10 02:15:29 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_peercred): support OpenBSD-current.
+ patch by Jeremy Evans. [ruby-core:32240]
+
+Thu Sep 9 23:25:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): skip allocator frames which have no
+ name. [ruby-core:32231]
+
+Thu Sep 9 22:39:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_size): Pathname#size translated from
+ pathname.rb.
+
+Thu Sep 9 22:34:48 2010 wanabe <s.wanabe@gmail.com>
+
+ * compile.c (case_when_optimizable_literal): When float value can be
+ treated as integer, add to table hash of case that way.
+ based on a patch from Ikuo KOBORI. [ruby-dev:42038]
+
+ * insns.def (opt_case_dispatch): ditto.
+
+ * test/ruby/test_case.rb: add tests.
+
+Thu Sep 9 17:15:15 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/net/http/test_https.rb (test_identity_verify_failure): follows
+ the SSL hostname check error message of openssl.
+
+Thu Sep 9 10:44:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_env.rb (test_aset): OpenBSD acts like NetBSD in
+ that it ignores characters after = in ENV.
+ patched by Jeremy Evans [ruby-core:32184]
+
+Thu Sep 9 09:02:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/rbinstall.rb (install?): gemspec filename should include
+ its version. patched by Luis Lavena [ruby-core:32165]
+
+Wed Sep 8 22:46:31 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ssl_get_error): Thread context switch was
+ blocked on Windows while blocking call for SSLSocket. Need to
+ convert errno for letting rb_io_wait_readable detect EWOULDBLOCK.
+ Patch by arton. ref #3794.
+
+Wed Sep 8 20:56:57 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_setgid_p): Pathname#setgid? translated
+ from pathname.rb.
+
+Wed Sep 8 06:25:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_setuid_p): Pathname#setuid? translated
+ from pathname.rb.
+
+Tue Sep 7 21:03:35 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_readable_real_p):
+ Pathname#readable_real? translated from pathname.rb.
+
+Mon Sep 6 23:07:25 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_world_readable_p):
+ Pathname#world_readable? translated from pathname.rb.
+
+Mon Sep 6 11:03:13 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * Fixed wrong check of missing functions. Patch by Adrian Quark.
+ ref #3400
+ The patch contains following comment:
+ This patch should avoid unnecessary incompatibility with future
+ versions of Openssl. Changes suggested by bmaher_at_amazon.com.
+
+Mon Sep 6 10:46:55 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * Fixed exception message for SSL post connection check failure. Patch
+ by Paul Betteridge. ref [Bug #3704]
+
+Mon Sep 6 10:31:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_s_get_line_buffer):
+ Readline.line_buffer should return locale string.
+ [ruby-dev:42184] #3791
+
+Mon Sep 6 09:47:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): check there is at least 1 digit after
+ "0x" before ".". [ruby-dev:42183] #3790
+
+Mon Sep 6 09:44:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): check integer overflow.
+ [ruby-dev:42180] #3789
+
+Mon Sep 6 06:17:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_readable_p): Pathname#readable?
+ translated from pathname.rb.
+
+Sun Sep 5 23:02:34 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_owned_p): Pathname#owned?
+ translated from pathname.rb.
+
+Sat Sep 4 23:48:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_readlink): symlink target should be in
+ filesystem encoding.
+
+Sat Sep 4 10:40:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (ruby_init_ext): export for golfers.
+
+ * vm_core.h (rb_iseq_eval, rb_iseq_compile_with_option): ditto.
+
+Sun May 23 17:29:41 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (capi): uses a timestamp file to get rid of
+ generating twice.
+
+Fri Jun 18 01:33:21 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * enc/Makefile.in (realclean): has been missing. necessary
+ for make realclean-enc.
+
+Fri Sep 3 23:51:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_socket_p): Pathname#socket?
+ translated from pathname.rb.
+
+Fri Sep 3 06:40:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (chfunc): pass through exceptions.
+
+ * io.c (rb_io_bufwrite, rb_io_bufread): added.
+
+ * process.c (rb_fork_err): protect from exceptions.
+
+Fri Sep 3 06:16:07 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_pipe_p): Pathname#pipe?
+ translated from pathname.rb.
+
+Fri Sep 3 06:14:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (chfunc): restore errno from SystemCallError and
+ propagate proper exception to the parent. [ruby-dev:41965]
+
+Thu Sep 2 22:10:38 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_file_p): Pathname#file?
+ translated from pathname.rb.
+
+Thu Sep 2 09:12:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): don't forget to free
+ memory.
+
+Thu Sep 2 09:01:13 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): unicodize.
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): convert arguments of
+ CreateChild() from ACP to WideChar.
+
+Thu Sep 2 06:53:43 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_directory_p): Pathname#directory?
+ translated from pathname.rb.
+
+Wed Sep 1 22:03:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_grpowned_p): Pathname#grpowned?
+ translated from pathname.rb.
+
+Wed Sep 1 17:39:02 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.7.1 r5835.
+ * test/minitest/*.rb: ditto.
+
+Wed Sep 1 16:50:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_setup_table): optimized. don't create hash objects
+ when given pattern is ASCII only.
+
+ * string.c (tr_find): ditto.
+
+Wed Sep 1 14:35:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_rotate_m): fix typo of rdoc.
+ patched by Andrei Kulakov [ruby-core:31975]
+
+Wed Sep 1 14:33:36 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enum.c (enum_zip): fix typo of rdoc.
+ patched by Andrei Kulakov [ruby-core:31974]
+
+Wed Sep 1 12:56:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (ruby_suppress_tracing): restore the state and invoke
+ the func with normal state. a patch from Satoshi Shiba <shiba
+ AT rvm.jp> at [ruby-dev:42162]. [ruby-core:31783]
+
+Tue Aug 31 21:10:23 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_exist_p): Pathname#exist? translated
+ from pathname.rb.
+
+Tue Aug 31 17:32:34 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/stubs.c: fix [Bug #3771] "VC++ can't make ext/tk with enabling
+ stubs". Thanks, Akio Tajima [ruby-dev:42159].
+
+Tue Aug 31 03:42:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_setup_table): fix bug in r29146.
+ Initialize table even if cflag is 0; tr_find see whether
+ del is empty or not.
+
+ * string.c (tr_find): nodel can't be NULL; if NULL, it means
+ it is not specified.
+
+Mon Aug 30 21:29:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_executable_real_p):
+ Pathname#executable_real? translated from pathname.rb.
+
+Mon Aug 30 15:00:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_setup_table): initialize negating table when
+ negating string is given. [ruby-core:31851]
+
+ * string.c (tr_find): add a sentence for the time when
+ target characters include negating one.
+
+ * string.c (rb_str_count): move definition.
+
+Mon Aug 30 07:32:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_executable_p): Pathname#executable?
+ translated from pathname.rb.
+
+Sun Aug 29 23:54:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser/ruby.rb (RDoc#parse_call_parameters): don't
+ include assignment. [Bug #3759], [ruby-dev:42154]
+
+ * lib/rdoc/parser/ruby.rb (RDoc#parse_class): ignore non-constant
+ name singleton class. [Bug #3759], [ruby-dev:42154]
+
+Sun Aug 29 23:25:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_get_path_check): clarify error message for
+ ASCII-incompatible path name.
+
+Sun Aug 29 16:02:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (node_name.inc): remove command option -n and give
+ file as stdin, because IronRuby 1.1 still doesn't support it.
+ So now we can use ir.exe as BASERUBY.
+
+ * tool/node_name.rb: read stdin with while gets.
+
+Sun Aug 29 13:22:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_method_id_and_class): curried proc has no
+ method. [ruby-core:31871]
+
+Sun Aug 29 12:51:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_provide_feature): clarify error message for frozen
+ $LOADED_FEATURES. based on a patch from Run Paint Run Run at
+ [ruby-core:31913].
+
+Sun Aug 29 12:19:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_failed): should honor encoding. [ruby-core:31915]
+
+Sun Aug 29 09:35:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (clean): exclude *.inc. [ruby-dev:41931]
+
+ * common.mk (distclean): include *.inc.
+
+ * common.mk (help): change description about clean and distclean.
+
+Sat Aug 29 06:34:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_chardev_p): Pathname#chardev?
+ translated from pathname.rb.
+
+Sat Aug 28 17:39:33 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_exception_mode,
+ BigDecimal_save_rounding_mode, BigDecimal_save_limit): added.
+
+ * test/bigdecimal/test_bigdecimal.rb: added tests for the above
+ features.
+
+Sat Aug 28 08:11:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_blockdev_p): Pathname#blockdev?
+ translated from pathname.rb.
+
+Fri Aug 27 16:20:01 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * string.c (rb_str_prepend): new method by Shota Fukumori (sora_h)
+ [Feature #3765]
+
+Fri Aug 27 15:24:20 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * math.c (math_atan2): you should know that M_PI is not the feature
+ of C90.
+ fixed build failure caused by r29115.
+
+Fri Aug 27 15:26:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (null_device): move from io.c.
+
+Fri Aug 27 12:47:44 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * math.c (math_atan2): change the behavior when x and y are zero.
+ [ruby-dev:42090] [Bug #3736] [ruby-dev:42116]
+
+ * test/ruby/test_math.rb (test_atan2): add tests for the above
+ changes.
+
+Fri Aug 27 12:26:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * object.c (rb_obj_class): remove mention of obsolete method.
+ a patch from Run Paint Run Run at [ruby-core:31842].
+
+Fri Aug 27 12:25:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (null_device): the name of null device. [ruby-dev:41791]
+
+Fri Aug 27 07:57:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle_bang): bail out from modification during
+ shuffle.
+
+ * array.c (rb_ary_sample): ditto.
+
+Fri Aug 27 05:11:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_sysopen): Pathname#sysopen translated
+ from pathname.rb.
+
+Thu Aug 26 22:53:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle): rdoc fix. argument name was missing.
+ a patch from Run Paint Run Run at [ruby-core:31848].
+
+Thu Aug 26 21:49:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_readlines): Pathname#readlines
+ translated from pathname.rb.
+
+Thu Aug 26 10:37:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regint.h (OnigStackIndex): the type should be intptr_t.
+ Original Oniguruma assumes the size of long and that of void *
+ are equal, but it's not true on LLP64 platform: mswin64.
+ originally patched by shintaro kuwamoto [ruby-dev:42133]
+
+Thu Aug 26 10:38:11 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * test/dl/test_base.rb: AIX does not have dynamically loadable lib[cm].
+
+ * test/fiddle/helper.rb: AIX does not have dynamically loadable lib[cm].
+
+Thu Aug 26 09:49:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle_bang): check number of argument.
+
+Tue Aug 26 09:11:40 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
+ rmpd_set_thread_local_exception_mode, VpGetException,
+ VpSetException): thread-local exception mode.
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
+ rmpd_set_thread_local_precision_limit, VpGetPrecLimit,
+ VpSetPrecLimit): thread-local precision limit.
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
+ rmpd_set_thread_local_rounding_mode, VpGetRoundMode,
+ VpSetRoundMode, VpException, VpInternalRound):
+ thread-local rounding mode.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mode, BigDecimal_round,
+ VpIsRoundMode, VpGetRoundMode, VpSetRoundMode, VpActiveRound,
+ VpMidRound, VpLeftRound), ext/bigdecimal/bigdecimal.h:
+ use unsigned short for rounding mode.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_mode): add test for
+ setting rounding mode.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_thread_local_mode):
+ add test for setting mode thread-locally.
+
+Thu Aug 26 07:29:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_{shuffle_bang,sample}): use Random class object.
+
+ * random.c (try_get_rnd): use default_rand for Random as same as
+ singleton methods.
+
+ * random.c (rb_random_real): check the range of result.
+
+Wed Aug 25 22:11:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_binread): Pathname#binread translated
+ from pathname.rb.
+
+Wed Aug 25 03:42:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): workaround for VC9 for x64.
+ reported by kuwamoto shintaro in [ruby-dev:42125].
+
+Tue Aug 24 23:28:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * .gitignore: updated.
+
+Tue Aug 24 22:07:28 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_read): Pathname#read translated from
+ pathname.rb.
+
+Tue Aug 24 10:11:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: read API version from include/ruby/version.h.
+
+ * {bcc,win}32/setup.mak (-version-): ditto.
+
+ * version.h (RUBY_LIB_VERSION): use API version numbers.
+
+Tue Aug 24 07:07:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle_bang, rb_ary_sample): add optional
+ argument random. [ruby-dev:41923] [EXPERIMENTAL]
+
+ * random.c (rb_random_{int32,real,bytes}): fallback to normal
+ method invocation.
+
+Tue Aug 24 06:08:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/version.h (RUBY_API_VERSION_*): renamed and moved
+ from version.h. [ruby-dev:42103]
+
+Tue Aug 24 05:58:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ChangeLog: flushed. [ruby-dev:42050]
+
+Tue Aug 24 01:14:58 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): to_f must underflow
+ when the exponent is less than DBL_MIN_10_EXP - BASE_FIG.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_to_f): added test for the above changes.
+
+Mon Aug 23 23:14:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_each_line): Pathname#each_line
+ translated from pathname.rb.
+
+Mon Aug 23 22:30:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (version.o): depends on both of version.h and
+ include/ruby/version.h. [ruby-dev:42063]
+
+Mon Aug 23 13:09:27 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * backport r29071 from ruby_1_8;
+
+ * ext/openssl/ossl_asn1.c (obj_to_asn1bool): fixed ASN1::Boolean
+ encoding issue for OpenSSL 1.0.0 compatibility.
+ ASN1::Boolean.new(false).to_der wrongly generated "\1\1\377" which
+ means 'true'.
+
+ ASN1_TYPE_set of OpenSSL <= 0.9.8 treats value 0x100 as 'false'
+ but OpenSSL >= 1.0.0 treats it as 'true'. ruby-ossl was using
+ 0x100 for 'false' for backward compatibility. Just use 0x0 for
+ the case OpenSSL >= OpenSSL 0.9.7.
+
+ * test/openssl/test_asn1.rb: test added.
+
+Mon Aug 23 12:28:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_search): fix: 4th argument should be regexp
+ object. patched by shintaro kuwamoto [ruby-dev:41667] #3459
+
+Mon Aug 23 02:23:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): make sure to have digit-sequence after 'p'
+ for hexadecimal-floating-constant. [ruby-dev:42105]
+
+Mon Aug 23 00:23:07 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: [ruby-core:31695]
+
+Sun Aug 22 09:08:02 2010 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (UINT2NUM): fix ifdef condition for LLP64.
+ reported by Daniel Gutmanas. [ruby-core:31778]
+
+Sun Aug 22 06:46:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (RAND_UPTO): macro for random number.
+
+Sun Aug 22 05:55:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: fix typo. a patch from Eric Wong at
+ [ruby-core:31810].
+
+Sat Aug 21 20:09:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm.c: add missing prototype of rb_iseq_clone for r29063.
+
+Sat Aug 21 18:54:56 2010 wanabe <s.wanabe@gmail.com>
+
+ * vm.c (vm_define_method): copy iseq to avoid overwriting iseq->klass.
+ #2502, #3136. see #2420.
+
+Sat Aug 21 17:36:42 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_split): Pathname#split translated from
+ pathname.rb.
+
+Fri Aug 20 10:40:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_expand_path): Pathname#expand_path
+ translated from pathname.rb.
+
+Thu Aug 19 22:44:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (usage): add usage.
+
+ * tool/make-snapshot (package): accept revision as BRANCH@REV.
+
+Thu Aug 19 19:53:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_timestamp): fix a constant type.
+
+ * ext/socket/raddrinfo.c (get_afamily): suppress a warning.
+
+Thu Aug 19 19:28:47 2010 Tanaka Akira <akr@fsij.org>
+
+ * thread_pthread.c (native_sleep): suppress a warning for platforms
+ which time_t is int.
+
+Thu Aug 19 18:15:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: Add a tool to merge commits between branches.
+ developed by URABE Shyouhei
+
+Thu Aug 19 17:19:09 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * backport r28621 and r28632 from ruby_1_8;
+
+ * ext/openssl/ossl_config.c, ext/openssl/lib/openssl/config.rb,
+ ext/openssl/lib/openssl.rb: reimplement OpenSSL::Config in Ruby.
+ Now it should work on windows.
+
+ * test/openssl/test_config.rb: added tests for OpenSSL::Config#dup.
+
+ * test/openssl/test_config.rb: added tests for Config#clone.
+
+Thu Aug 19 12:04:39 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * array.c (rb_ary_permutation, rb_ary_repeated_permutation,
+ rb_ary_repeated_combination, rb_ary_product):
+ use ary_make_shared_copy instead of ary_make_substitution.
+ [ruby-dev:42067] [Bug #3708]
+
+ * test/ruby/test_array.rb (test_product, test_repeated_permutation,
+ test_repeated_combination): append assertions against [Bug #3708].
+
+Thu Aug 19 11:11:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enum.c (enum_inject): fix typo of rdoc.
+ patched by Andrei Kulakov [ruby-core:31768]
+
+Thu Aug 19 10:06:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_extname): Pathname#extname translated
+ from pathname.rb.
+
+Thu Aug 19 06:03:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_push_frame): initialize block_iseq. a patch
+ from Peter Weldon at [ruby-core:31757].
+
+Wed Aug 18 19:08:17 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * array.c (ary_make_shared): revert r29037, it occurs SEGV some
+ situations.
+
+Wed Aug 18 18:36:32 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * array.c (ary_make_shared),
+ test/ruby/test_array.rb (test_permutation):
+ always return the original array when it is shared.
+ [ruby-dev:42067] [Bug #3708]
+
+Wed Aug 18 01:37:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c: revert r26701; it introduces Bug #3681.
+ [ruby-core:31677]
+
+Tue Aug 17 20:05:29 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb (test_threaded_flush): test "hi" is not output
+ twice.
+
+Tue Aug 17 15:13:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/date.rb: Re-revert the part of r28950.
+ It reverted the part of r28619.
+
+Tue Aug 17 13:00:07 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_dirname): Pathname#dirname translated
+ from pathname.rb.
+
+Tue Aug 17 07:50:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/extconf.rb: check functions more.
+ [ruby-core:31722]
+
+Tue Aug 17 07:42:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_make_independent_expand): set capacity properly. a
+ patch from Peter Weldon at [ruby-core:31734]. [ruby-core:31653]
+
+Tue Aug 17 07:38:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb, lib/rubygems.rb (Gem.suffixes): include empty
+ suffix. [ruby-core:31730]
+
+Mon Aug 16 22:16:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_basename): unused variable removed.
+
+Mon Aug 16 21:39:33 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_basename): Pathname#basename translated
+ from pathname.rb.
+
+Mon Aug 16 20:26:13 2010 Narihiro Nakamura <narihiro@netlab.jp>
+
+ * gc.c (gc_profile_result): Index begins with 1.
+
+Mon Aug 16 20:21:17 2010 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_profile_result): use size_t. based on patches from
+ Tomoaki NISHIYAMA <tomoakin@kenroku.kanazawa-u.ac.jp> at
+ [ruby-dev:42042].
+
+Mon Aug 16 19:23:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_dtoa, ruby_hdtoa): use same representations for
+ Infinity and NaN. a part of a patch from Peter Weldon at
+ [ruby-core:31725].
+
+ * util.c (ruby_hdtoa): fixed buffer overrun. based on a patch
+ from Peter Weldon at [ruby-core:31725].
+
+Mon Aug 16 17:44:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * common.mk (capi): use -b option for doxygen. It disables stdout
+ buffering and prevents wrong reordering between stdout and stderr
+ even when the output of "make" is redirected.
+
+Sun Aug 15 19:59:58 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#set_error):
+ Fix for possible cross-site scripting (CVE-2010-0541).
+ Found by Apple, reported by Hideki Yamane.
+ Patch by Hirokazu Nishio <nishio.hirokazu AT gmail.com>.
+
+Mon Aug 16 12:29:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (test-rubyspec-precheck): split
+ from test-rubyspec.
+
+ * common.mk (test-rubyspec): moved from Makefile.in.
+
+Mon Aug 16 10:00:45 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.h (llabs): never never never never never
+ use "long long".
+
+ * ext/bigdecimal.bigdecimal.c (BigDecimal_to_i): get rid of a warning.
+
+Sun Aug 15 18:14:20 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_dump, BigDecimal_inspect,
+ VPrint, VpToString, VpVarCheck): use PRIuSIZE, PRIdSIZE, PRIdVALUE,
+ and PRIxVALUE.
+
+Sun Aug 15 16:14:31 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (Logging.postpone): close @log only when it's available.
+
+Sun Aug 15 13:30:35 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.h (VpVtoD): fix a type of e.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_dump, BigDecimal_inspect):
+ fix format for size_t.
+
+Sun Aug 15 00:22:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/extconf.rb, ext/bigdecimal/bigdecimal.h
+ (labs, llabs): support environments missing labs and llabs.
+
+ * ext/bigdecimal/bigdecimal.h (vabs): added.
+
+ * ext/bigdecimal/extconf.rb, ext/bigdecimal/bigdecimal.h,
+ ext/bigdecimal/bigdecimal.c, test/bigdecimal/test_bigdecimal.rb
+ (TestBigDecimal#test_new): replace U_LONG, S_LONG, S_INT, and U_INT
+ with appropriate standard or ruby-provided types.
+
+Sun Aug 15 00:15:45 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_utime): Pathname#utime translated
+ from pathname.rb.
+
+Sat Aug 14 21:04:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_gc_mark_threads): deprecated.
+
+Sat Aug 14 19:12:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/{coverage,objspace}/extconf.rb ($INCFLAGS): explicitly add
+ topdir and top_srcdir. [ruby-dev:42031]
+
+Sat Aug 14 17:48:41 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * test/objspace/test_objspace.rb: added test for objspace.
+
+ * ext/objspace/objspace.c: considers T_ZOMBIE by lazy sweep GC.
+
+ * gc.c: considers that dsize was 0. [ruby-dev:42022]
+
+Sat Aug 14 15:33:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, include/ruby/defines.h (RUBY_FUNC_EXPORTED): macro
+ to declare exported function.
+
+ * array.c (rb_ary_memsize), string.c (rb_str_memsize),
+ variable.c (rb_objspace_data_type_memsize): used in
+ objspace. [ruby-dev:42022]
+
+ * io.c (rb_io_memsize): constified.
+
+ * regcomp.c (onig_memsize): constified.
+
+ * gc.h (rb_objspace_each_objects): used in objspace.
+
+ * vm_core.h (rb_{get,set,reset}_coverages): used in coverage.
+
+ * include/ruby/intern.h (rb_time_interval): used in io/wait.
+
+ * include/ruby/intern.h (rb_make_backtrace, rb_make_exception):
+ used in ripper.
+
+ * node.h (rb_parser_{malloc,realloc,calloc,free}): ditto.
+
+Fri Aug 13 22:48:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_truncate): Pathname#truncate translated
+ from pathname.rb.
+
+Fri Aug 13 16:11:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (MiniTest::Unit.new): extend before initialize.
+ [ruby-dev:41970]
+
+ * lib/test/unit.rb (MiniTest::Unit.autorun): use Test::Unit::Mini.
+
+Thu Aug 12 23:39:02 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_make_symlink): Pathname#make_symlink
+ translated from pathname.rb.
+
+Thu Aug 12 21:18:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_lstat): Pathname#lstat translated
+ from pathname.rb.
+
+Thu Aug 12 05:58:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_char_to_option_kcode): used in
+ ripper.
+
+ * node.h (rb_reserved_word): ditto.
+
+Thu Aug 12 00:19:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_rubyoptions.rb (test_script_from_stdin): disable
+ echo. [ruby-dev:41966]
+
+Wed Aug 11 23:28:22 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * lib/cmath.rb (CMath.sqrt): use floating-point value.
+ [ruby-core:31672] [Bug #3678]
+
+ * test/test_cmath.rb: added for testing lib/cmath.rb.
+
+Wed Aug 11 20:57:25 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: merge from branches/ruby_1_9_2, and move io/console.
+ [ruby-dev:41924]
+
+Wed Aug 11 11:01:15 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c: don't use // comment.
+
+Wed Aug 11 06:18:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_stat): Pathname#stat translated
+ from pathname.rb.
+
+Tue Aug 10 21:18:04 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_to_[ifr]): don't allow complex with in-exact
+ imaginary zero to be converted.
+
+Tue Aug 10 20:56:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/optparse.rb: suppress a warning.
+
+ * test/test_mutex_m.rb: ditto.
+
+Tue Aug 10 20:56:13 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (Date::Format::Bag): use Struct.
+ as an experimental.
+
+Tue Aug 10 20:45:35 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_rename): Pathname#rename translated
+ from pathname.rb.
+
+Tue Aug 10 20:16:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/resolv.rb (get_info): get rid of a warning.
+
+Tue Aug 10 19:56:13 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: [ruby-core:31658]
+
+Tue Aug 10 17:24:56 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT.ja: rb_tainted_str_new_cstr() is an alias of
+ rb_tainted_str_new2().
+
+Tue Aug 10 15:24:30 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c, ext/bigdecimal/bigdecimal.h,
+ ext/bigdecimal/extconf.rb: BASE and BASE_FIG are defined
+ based on the size of BDIGIT.
+
+ * ext/bigdecimal/bigdecimal.c, ext/bigdecimal/bigdecimal.h:
+ use BDIGIT for Real#frac.
+
+Tue Aug 10 15:19:45 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.h, ext/bigdecimal/bigdecimal.c:
+ add extern declaration of rb_cBigDecimal.
+
+Tue Aug 10 14:09:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest::parse_uri):
+ rollup leading slashes. [ruby-core:31657]
+ patched by Jamison Wilde
+ NOTE: //authority/path is valid relative URI both RFC2396 and
+ RFC3986. So when give a relative URI-like string to URI lib,
+ users must care leading slashes.
+
+Tue Aug 10 11:26:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/un.rb (httpd): SIGQUIT and SIGHUP are not guaranteed to exist.
+
+Tue Aug 10 06:26:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_readlink): Pathname#readlink translated
+ from pathname.rb.
+
+Mon Aug 9 22:15:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_open): Pathname#open translated from
+ pathname.rb.
+
+Mon Aug 9 22:11:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_signal.rb (TestSignal#test_exit_action): use
+ Process.spawn instead of Process.fork.
+
+Mon Aug 9 15:59:02 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/source_index.rb: rename unused variable.
+
+ * lib/rubygems/specification.rb: rename unused variable.
+
+ * lib/rubygems/specification.rb: remove unused variable.
+
+Mon Aug 9 14:10:06 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Fix type of mimeout_state.buf.
+ [nkf-bug:20079]
+
+Mon Aug 9 06:52:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (sys_warning_1): show error message.
+
+Mon Aug 9 06:50:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_require.rb (test_require_too_long_filename):
+ clear -w option.
+
+Mon Aug 9 00:18:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb ($ignore_error): initialize after $nmake.
+
+Sun Aug 8 19:16:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_make_link): Pathname#make_link
+ translated from pathname.rb.
+
+Sun Aug 8 16:42:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems.rb (Gem.find_files): reverted to use globbing.
+
+ * lib/rubygems.rb (Gem.find_files): fixed search order same as
+ default behavior.
+
+ * gem_prelude.rb, lib/rubygems.rb (Gem.suffixes): return truly
+ require-able suffixes only.
+
+Sun Aug 8 13:20:57 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_ftype): Pathname#ftype translated
+ from pathname.rb.
+
+Sun Aug 8 12:41:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_escape): no similar messages twice.
+ [ruby-core:31048]
+
+Sun Aug 8 10:07:45 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime_with_timespec): suppress warnings.
+
+Sun Aug 8 08:58:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUBY_H_INCLUDES): add subst.h.
+
+Sun Aug 8 08:55:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (ruby_snprintf): printf attribute.
+
+Sun Aug 8 07:47:29 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/rbconfig/obsolete.rb: show the location which use Config.
+
+Sun Aug 8 07:29:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_fnmatch): Pathname#fnmatch and
+ Pathname#fnmatch? translated from pathname.rb.
+
+Sun Aug 8 07:18:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/subst.h (snprintf): redefinition moved from ruby.h.
+ (vsnprintf): ditto.
+
+Sun Aug 8 00:41:42 2010 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/subst.h: new file for substitute standard functions.
+
+ * include/ruby/missing.h: don't substitute "close", etc. here.
+
+ * include/ruby/ruby.h: include ruby/subst.h at last.
+ This prevents substituting "close" in unistd.h.
+
+Sat Aug 7 19:51:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (EnvUtil.invoke_ruby): merge stdout and stderr
+ if capture_stderr is :merge_to_stdout.
+ (assert_normal_exit): print abnormal output properly.
+
+Sat Aug 7 19:04:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * missing/close.c: undef the macros "getpeername", "getsockname" and
+ "shutdown" to prevent infinite recursion.
+
+Sat Aug 7 18:37:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * missing/close.c: undef the macro "close" to prevent infinite
+ recursion.
+
+Sat Aug 7 18:20:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_lchown): Pathname#lchown translated
+ from pathname.rb.
+
+Sat Aug 7 17:49:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/missing.h: moved BROKEN_CLOSE replacements from
+ include/ruby/ruby.h.
+
+Sat Aug 7 17:40:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb, lib/rbconfig/obsolete.rb: warn obsolete and
+ deprecated Config.
+
+Sat Aug 7 17:18:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): follow the change of
+ install-rb-default line format at r28850, which causes second
+ run to create dummy makefiles.
+
+Sat Aug 7 14:08:44 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/mkmf.rb: change instance variable to global.
+
+Sat Aug 7 13:59:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pathname/pathname.c (path_sub_ext): don't clobber shared string.
+ [ruby-core:31640]
+
+Sat Aug 7 13:33:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (vm_call0): fix for VM_METHOD_TYPE_NOTIMPLEMENTED.
+ [ruby-dev:41953]
+
+Sat Aug 7 09:47:06 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: fix checking version of GCC.
+
+Sat Aug 7 09:31:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (Init_pathname): fix number of arguments for
+ Pathname#chown.
+
+Sat Aug 7 09:28:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): use assert. fix
+ faildesc.
+
+ * test/pathname/test_pathname.rb (test_lchmod): test Pathname#lchmod
+ using assert_normal_exit.
+
+Sat Aug 7 08:26:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_chown): Pathname#chown translated
+ from pathname.rb.
+
+Sat Aug 7 02:09:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_lchmod): Pathname#lchmod translated
+ from pathname.rb.
+
+Fri Aug 6 21:30:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_chmod): Pathname#chmod translated from
+ pathname.rb.
+
+Fri Aug 6 20:13:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * rational.c (nurat_div): divided by infinity should be zero.
+
+ * rational.c (nurat_div): divided by float zero should be
+ infinity. [ruby-core:31626]
+
+Fri Aug 6 18:59:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (realpath_rec): rb_str_modify depends on the length, so
+ resize instead.
+
+Fri Aug 6 18:56:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (clean-ext): fixed directories to be removed.
+
+Fri Aug 6 17:42:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/depend: add space at the beginning of @ignore_error.
+
+ * lib/mkmf.rb: ditto.
+
+Fri Aug 6 17:38:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (clean): add prelude.c, config.log, and rbconfig.rb.
+
+ * common.mk (distclean): remove encdb.h, config.log, and rbconfig.rb.
+
+Fri Aug 6 17:35:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in: ignore error from RMDIRS.
+
+ * enc/depend: ditto.
+
+ * lib/mkmf.rb: ditto.
+
+Fri Aug 6 05:53:32 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_mtime): Pathname#mtime translated from
+ pathname.rb.
+
+Thu Aug 5 22:09:30 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_ctime): Pathname#ctime translated from
+ pathname.rb.
+
+Thu Aug 5 21:20:31 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (NODE_ARGSCAT, NODE_ARGSPUSH): drop unused ARGSCAT
+ results when popped is true. [ruby-dev:41933], [Bug #3658]
+ This is retry of r28870 and r28873 which were reverted.
+
+Thu Aug 5 20:13:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (String functions): mention
+ rb_str_resize and rb_str_set_len.
+
+Thu Aug 5 19:59:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_set_len): bail out when buffer overflowed
+ probably.
+
+Thu Aug 5 18:36:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (nucomp_marshal_load): should check the argument.
+ [ruby-core:31622]
+
+ * rational.c (nurat_marshal_load): ditto
+
+ * marshal.c (w_float): should not append a dot if no fractal part
+ exists. [ruby-dev:41936]
+
+Thu Aug 5 17:11:43 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (void_expr_gen): add 'possibly' to warning message.
+ [ruby-core:31611]
+
+Thu Aug 5 16:57:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_make_pattern): fold continuous PLAINs to get rid of
+ snail at too deep path. [ruby-dev:41871]
+
+Thu Aug 5 16:42:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_set_len): should fail to modify shared string.
+
+Thu Aug 5 14:12:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): ensure sopath to be modifiable
+
+Thu Aug 5 12:39:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_make_independent_expand): fix buffer overflow
+ while shrinking.
+
+Thu Aug 5 06:42:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c (realpath_rec): call rb_str_modify before rb_str_set_len.
+
+Wed Aug 4 19:37:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_set_len): rb_str_modify cannot work before the
+ length is set, which is a precondition for rb_str_modify.
+
+Wed Aug 4 15:47:21 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): no need to create the directory
+ at each library file. this change makes making ext faster.
+
+Wed Aug 4 06:25:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_atime): Pathname#atime translated from
+ pathname.rb.
+
+Tue Aug 3 21:16:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (Init_Random): add Random::DEFAULT.
+
+Tue Aug 3 21:01:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_check_hash_type): added.
+
+Tue Aug 3 20:30:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_eq): never equal to infinity.
+ [ruby-core:31603]
+
+ * rational.c (nurat_div): hack for integral float divisor.
+
+Tue Aug 3 14:42:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/extmk.rb: remove purelib, fixes a bug in r28440, r28441.
+
+ * spec/default.mspec: ditto.
+
+ * template/Doxyfile.tmpl: ditto.
+
+Tue Aug 3 14:19:42 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/driver.rb (setup_pager): no need to check the existence
+ of pagers. the following code checks whether they are executable or
+ not.
+
+Tue Aug 3 12:03:57 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * tool/runruby.rb: no purelib.
+
+Tue Aug 3 07:52:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/purelib.rb: no longer used since the default load path of
+ miniruby is empty.
+
+Tue Aug 3 00:53:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def, vm_core.h: fixed typo. reported by Rocky Bernstein
+ <rockyb AT rubyforge.org> at [ruby-core:31596].
+
+Mon Aug 2 21:51:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): rb_str_set_len modifies ptr
+ since r26303.
+
+Mon Aug 2 21:16:03 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: NONAMELESSUNION defined only if gcc
+ version is older than 3.4.4. [ruby-core:31567] [Bug #3637]
+ * ext/win32ole/extconf.rb: ditto.
+
+Mon Aug 2 16:34:32 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (native_thread_join): need to wait thread, of course.
+ [ruby-dev:41911]
+
+Mon Aug 2 12:22:22 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (file_expand_path): wrong condition. [ruby-core:31591]
+
+Mon Aug 2 05:34:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_realdirpath): Pathname#realdirpath
+ translated from pathname.rb.
+
+Sun Aug 1 23:04:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb: describe superclasses explicitly.
+
+Sun Aug 1 23:04:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_modify_expand, rb_str_resize): get rid of
+ repeating malloc and realloc.
+
+Sun Aug 1 22:16:30 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_hash): use rb_memhash and
+ take care of negative finite numbers properly.
+ [ruby-core:31582][Bug #3640]
+
+Sun Aug 1 20:57:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_realpath): Pathname#realpath translated
+ from pathname.rb.
+
+Sun Aug 1 17:27:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub: needs stddef.h for size_t. a patch from
+ Akio Tajima at [ruby-dev:41905].
+
+Sun Aug 1 14:59:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_sub_ext): Pathname#sub_ext translated
+ from pathname.rb.
+
+Sun Aug 1 10:23:48 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/init.rb (IRB.parse_opts): set VERBOSE to true when debug
+ switch called in irb. a patch from Andrew Grimm in
+ [ruby-core:31558].
+
+Sun Aug 1 09:35:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (big_op): comparison of bignum and infinity has returned 1
+ or -1, but it must return boolean.
+
+Sun Aug 1 09:44:25 2010 Tanaka Akira <akr@fsij.org>
+
+ * class.c (rb_include_module): don't clear the method cache if the
+ included module has no method.
+ reported by Eric Wong. [ruby-core:31559]
+
+Sun Aug 1 09:21:32 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_sub): Pathname#sub translated
+ from pathname.rb.
+
+Sun Aug 1 09:12:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h: latest x86_64 mingw defines stati64.
+ [ruby-core:27516]
+
+Sun Aug 1 08:51:52 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: fix typo. [ruby-core:31564][Bug #3636]
+
+Sat Jul 31 23:15:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_inspect): Pathname#inspect translated
+ from pathname.rb.
+
+Sat Jul 31 15:50:03 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (Init_pathname): The alias,
+ Pathname#to_path, is translated from pathname.rb.
+
+Sat Jul 31 09:12:36 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_to_s): Pathname#to_s translated
+ from pathname.rb.
+
+Sat Jul 31 08:20:07 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/ssl.rb (WEBrick::Utils.create_self_signed_cert):
+ merged r28784 from ruby_1_8: wrongly created dummy SSL certificate
+ with version == 3 (no such version) and serial == 0 (must be >0).
+
+Fri Jul 30 21:43:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_hash): Pathname#hash translated
+ from pathname.rb.
+
+Fri Jul 30 12:42:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/imap.rb (example): use IO#noecho to read password if
+ possible, and defer until needed. [ruby-dev:41889]
+
+ * lib/net/imap.rb (example): support starttls option.
+ [ruby-dev:41888]
+
+Fri Jul 30 08:51:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): home directory must be absolute.
+ [ruby-core:31537]
+
+Fri Jul 30 08:33:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): should check if could find user.
+ [ruby-core:31538]
+
+Fri Jul 30 07:59:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_add_suffix): fixed a bug returning uninitialized
+ value.
+
+Fri Jul 30 07:48:04 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: use TK_XINCLUDES on tkConfig.sh when not empty,
+ even if MacOS X Aqua version [ruby-dev:41883].
+
+Thu Jul 29 22:28:35 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_cmp): Pathname#<=> translated
+ from pathname.rb.
+
+Thu Jul 29 06:51:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (EXT_SRCS): add ext/json/parser/parser.c.
+
+Thu Jul 29 05:52:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): pass baselen to rmext.
+
+Thu Jul 29 02:38:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: not [freebsd] but [freebsd*] for AS_CASE.
+
+Wed Jul 28 22:23:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_eq): Pathname#{==,===,eql?} translated
+ from pathname.rb.
+
+Wed Jul 28 19:37:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): VC6 or later have stddef.h.
+
+ * include/ruby/missing.h: need to include stddef.h for size_t.
+
+ * include/ruby/missing.h: shouldn't declare as dllimport when building
+ ruby itself (for Windows).
+
+Wed Jul 28 17:11:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/*.c: include missing.h
+
+Wed Jul 28 09:38:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * cont.c: typos.
+
+Wed Jul 28 09:24:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c: (RB_PAGE_SIZE): renamed from PAGE_SIZE. [ruby-dev:41870]
+
+ * cont.c: (RB_PAGE_MASK): renamed from PAGE_MASK.
+
+Tue Jul 27 23:09:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_taint): use rb_obj_taint.
+ (path_untaint): Pathname#untaint translated from
+ pathname.rb.
+
+Tue Jul 27 18:59:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_framework): added.
+
+Tue Jul 27 18:33:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * defines.h, intern.h, missing.h, ruby.h, st.h, util.h: include
+ config.h and defines.h for autoconf macros.
+
+Tue Jul 27 16:27:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (flo_cmp): typo.
+
+Tue Jul 27 16:09:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * class.c, compile.c, dir.c, file.c, iseq.c, parse.y, random.c:
+ clean unused-value warnings.
+
+ * cont.c, process.c, vm_exec.h: clean cast warnings.
+
+Mon Jul 26 22:34:37 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_taint): Pathname#taint translated from
+ pathname.rb.
+
+Mon Jul 26 18:18:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (config.h): add include guard.
+
+ * win32/Makefile.sub, bcc32/Makefile.sub (config.h): ditto.
+
+Mon Jul 26 14:38:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XCFLAGS): missing.h needs config.h.
+
+Mon Jul 26 14:08:47 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/missing.h: revert a part of r28727. config.h is expected
+ to include only once, before including defines.h.
+ including it here breaks some macro definitions.
+
+Mon Jul 26 13:52:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: define BROKEN_CLOSE only on FreeBSD.
+ This needs to merge to 1.9.2.
+
+Mon Jul 26 13:01:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_mark): should mark iseq itself other than normal
+ iseq. [ruby-dev:41880]
+
+Mon Jul 26 11:51:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: define BROKEN_CLOSE on FreeBSD.
+ This fixes build failure on MSVC. [ruby-core:31481]
+
+ * include/ruby/ruby.h, include/ruby/missing.h:
+ use BROKEN_CLOSE for replacing close(2).
+
+Mon Jul 26 09:51:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_mark): mark only self of normal iseqs, not
+ nodes. [ruby-dev:41874]
+
+Sun Jul 25 05:37:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_cmp): honor the result of infinite? method of the
+ other. [ruby-core:31470]
+
+ * test/ruby/envutil.rb (EnvUtil#.suppress_warning): added.
+
+ * test/ruby/test_float.rb (TestFloat#test_Float): suppress
+ warnings under --verbose.
+
+Fri Jul 23 16:07:32 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/mutex_m.rb (sleep): added Mutex_m#sleep to support
+ ConditionVariable.
+
+Fri Jul 23 15:09:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_MINGW32): ignore msvc suffix.
+
+ * configure.in (RUBY_TRY_CFLAGS): try with werror turned on.
+
+Fri Jul 23 09:02:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): fixed out-of-boundary access at invalid
+ multibyte characters.
+
+Fri Jul 23 09:00:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XCFLAGS): reverted mistakenly removed option.
+ [ruby-dev:41872]
+
+ * include/ruby/missing.h: needs ruby/config.h.
+
+Thu Jul 22 20:58:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_EXTERN): unnecessary after all.
+
+Thu Jul 22 17:33:47 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * complex.c (nucomp_to_i): allow complex with imaginary zero to be
+ converted.
+
+ * complex.c (nucomp_to_f, nucomp_to_r): ditto.
+
+Thu Jul 22 20:12:56 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread_pthread.c (get_stack): fix memory leak; pthread_attr_destroy
+ must be called even when pthread_getattr_np is used.
+ [ruby-core:31269]
+
+Thu Jul 22 16:27:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): fix broken Regexp#inspect when it
+ is ASCII-8BIT and non-ASCII character.
+ The length of character should be from original byte string.
+ [ruby-core:31431]
+
+Thu Jul 22 14:30:17 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/missing.h: add prototype for ruby_close().
+
+Thu Jul 22 12:58:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_EXTERN): ignore invalid attribute.
+
+ * configure.in: fix for older autoconf.
+
+Thu Jul 22 12:02:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/{intern,io}.h: add missing prototypes.
+
+Thu Jul 22 06:38:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XCFLAGS): use -fvisibility=hidden if possible.
+
+ * configure.in (RMDIR): use --ignore-fail-on-non-empty if possible.
+
+ * configure.in (RUBY_EXTERN): FUNCTION-BODY was missing.
+
+Thu Jul 22 03:02:55 2010 Eric Hodel <drbrain@segment7.net>
+
+ * README.EXT: fix signature of rb_ensure and rb_rescue to match
+ implementation.
+
+Wed Jul 21 23:07:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in: get rid of embedding an absolute path.
+
+Wed Jul 21 15:22:17 2010 Evan Phoenix <evan@fallingsnow.net>
+
+ * lib/rubygems/custom_require.rb, gem_prelude.rb: Load code from
+ from gems properly.
+
+Wed Jul 21 15:15:02 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c: add short documentation about named reference.
+ [ruby-core:31294]
+
+Wed Jul 21 15:00:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (local_push_gen): disable unused variable warnings in
+ eval. [ruby-dev:41869]
+
+Wed Jul 21 13:57:37 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_method.c (rb_method_boundp): revert r28543, r28564.
+ They may be merged in Ruby 2.0. [ruby-core:31217]
+
+Wed Jul 21 13:37:35 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/uri/common.rb: Have URI#route_to, URI#route_from accept
+ string-like arguments [ruby-core:30961]
+
+ * lib/uri/generic.rb: ditto for URI.join, URI#merge
+
+Wed Jul 21 12:39:15 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/cmath.rb (CMath#cbrt): cbrt should accept a negative real
+ numbers. [ruby-core:31234]
+
+Wed Jul 21 12:31:30 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/uri/common.rb: Have URI() and URI.join accept URI objects in
+ addition to strings. [ruby-core:30960]
+
+Wed Jul 21 11:55:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_hdtoa): renamed from BSD__hdtoa.
+
+Tue Jul 20 11:35:11 2010 Evan Phoenix <evan@ruby-lang.org>
+
+ * lib/rubygems.rb: Load the custom require if --disable-rubygems
+ was used.
+
+Tue Jul 20 11:27:18 2010 Evan Phoenix <evan@ruby-lang.org>
+
+ * gem_prelude.rb: Pull in rubygem's custom require
+
+ * lib/rubygems.rb: Handle always having custom require available
+
+Tue Jul 20 18:39:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RSTRING_GETMEM): new macro to get ptr and
+ len at once.
+
+ * string.c (rb_str_cmp, str_eql, rb_str_eql): trivial improvements.
+
+Tue Jul 20 18:23:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/fiddle/closure.c (closure_data_type),
+ ext/fiddle/function.c (function_data_type): rb_data_type_t has
+ changed.
+
+Tue Jul 20 14:21:38 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: don't call after_gc_sweep() after when garbage_collect()
+ was called, because rb_sweep_method_entry() free live unlinked
+ method entries. [ruby-core:31169]
+
+Tue Jul 20 12:42:06 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (rb_getaddrinfo): according to my
+ valgrind output this variable should be initialized beforehand.
+
+Tue Jul 20 12:50:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_flush_buffer): write and buffer operations should be
+ monolithic. [ruby-core:31348]
+
+Tue Jul 20 12:27:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#copy): check file name
+ separator boundary. [ruby-core:31360]
+
+Mon Jul 19 18:34:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (get_strpath): check the type.
+ (path_initialize): bypass to_path call for T_STRING.
+ (path_freeze): implemented.
+
+ * ext/pathname/lib/pathname.rb (Pathname#freeze): removed.
+
+Mon Jul 19 12:33:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_clear): should not unshare embedded array, and
+ should make unshared array embedded.
+
+Mon Jul 19 09:00:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS (Kernel#instance_eval): add an incompatible change since
+ the 1.9.1 release. [ruby-core:31336]
+
+Mon Jul 19 05:46:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_data_type_t): add new feature macros.
+
+Sun Jul 18 21:20:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_clear): no need to duplicate buffer just before
+ clearing.
+
+Sun Jul 18 16:31:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_data_type_t): restructured. [ruby-dev:41862]
+ add parent member.
+
+ * error.c (rb_typeddata_inherited_p): new function.
+
+Sun Jul 18 01:09:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_initialize): return a value.
+
+Sun Jul 18 00:02:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/lib/pathname.rb (Pathname#initialize): removed.
+
+ * ext/pathname/pathname.c (path_initialize): implemented.
+ (get_strpath): new function.
+ (set_strpath): ditto.
+
+Sat Jul 17 19:01:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (MiniTest::Unit#process_args): refactored.
+
+Sat Jul 17 18:30:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/file2lastrev.rb: don't depend on pathname.rb if File.realpath
+ is available.
+
+Sat Jul 17 14:10:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_add_suffix): fixed type warnings.
+
+Sat Jul 17 13:48:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/lib/pathname.rb: moved from lib/pathname.rb.
+ require pathname.so.
+
+ * ext/pathname/pathname.c: new file to define empty Pathname class.
+
+ * ext/pathname/extconf.rb: new file.
+
+Sat Jul 17 13:04:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_wakeup_alive): split from rb_thread_wakeup.
+ merged from r13476. c.f. [ruby-core:31320]
+
+Sat Jul 17 10:07:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb: MiniTest::Unit is different class from
+ Test::Unit, and install runner before loading test/minitest.
+
+Fri Jul 16 14:58:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): run tests only when
+ any tests have not run.
+
+ * bin/testrb, test/runner.rb: use Test::Unit.start.
+
+Fri Jul 16 12:06:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (ext-arch): prune directories start with '-'.
+
+Thu Jul 15 21:43:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * numeric.c (fix_divide): must not use rb_rational_new1 for coercion
+ because it returns an argument itself when canonical mode is set.
+ [ruby-core:31279]
+
+Thu Jul 15 21:38:31 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (bm_free): fix memory leak. [ruby-core:30869] [Bug #3466]
+
+Thu Jul 15 15:47:32 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regexec.c (onig_search): don't skip non-ANYCHARs when
+ .* fails to match. This causes to fail matching
+ ANYCHAR_STAR with LOOK_BEHIND. This fix is workaround
+ and disable the optimization. [ruby-dev:41851]
+
+Thu Jul 15 06:11:29 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/rdoc/markup/attribute_manager.rb: fixing ri output when special
+ characters are inside html tags. Thanks Tomo Kazahaya! [Bug #3512]
+
+Thu Jul 15 06:01:42 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (guess_local_offset): use the UTC offset of an older date on
+ 64bit time_t environment.
+
+Thu Jul 15 02:42:51 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/test/unit.rb (setup_argv): convert to using optparse, adding
+ --help and -I. [ruby-core:30154]
+
+Thu Jul 15 00:35:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (localtime_with_gmtoff_zone): renamed from
+ localtime_with_gmtoff and return the timezone abbreviation name.
+ (guess_local_offset): return the isdst and timezone abbreviation name.
+ (localtimew): use the returned isdst and timezone abbreviation name.
+ [ruby-core:31275]
+
+Wed Jul 14 20:23:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (frame_func_id), vm_eval.c (rb_iterate),
+ vm_insnhelper.c (vm_yield_with_cfunc): as the name of a C-level
+ block, use the current method ID at the creation point.
+ [ruby-dev:41852]
+
+Wed Jul 14 18:18:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regexec.c (match_at): add end point to enclen's argument.
+ This only effect on compiling with -DONIG_DEBUG_MATCH.
+
+Tue Jul 13 21:34:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c: libedit is missing declaration of
+ rl_getc.
+
+Tue Jul 13 21:31:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_daemon): split from proc_daemon.
+
+ * process.c (rb_fork_err): suppress gcc 4.4 warnings.
+
+ * random.c (fill_random_seed): ditto.
+
+Tue Jul 13 21:01:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (establishShell): chfunc must not raise any
+ exceptions.
+
+Tue Jul 13 20:58:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_DEFAULT_ARCH): adjust for target
+ cpu. [ruby-core:31243]
+
+Tue Jul 13 20:46:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (rb_dlhandle_close): should not pass a dynamic
+ string to rb_raise directly.
+
+Tue Jul 13 12:04:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * missing/close.c: keep original errno.
+
+Mon Jul 12 01:58:56 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/csv.rb: Fix unused variable warnings.
+ Patch by Run Paint [ruby-core:30991]
+
+ * lib/date.rb: ditto
+
+ * lib/debug.rb: ditto
+
+ * lib/drb/drb.rb: ditto
+
+ * lib/drb/invokemethod.rb: ditto
+
+ * lib/irb/ruby-lex.rb: ditto
+
+ * lib/irb/slex.rb: ditto
+
+ * lib/logger.rb: ditto
+
+ * lib/pathname.rb: ditto
+
+Sun Jul 11 21:20:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT{,.ja} (rb_block_call): fixed about third/fourth
+ arguments to the block. based on [ruby-core:31192] by Asher
+ Haig. [Bug #3558]
+
+Sun Jul 11 17:01:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in ({,dist-,real-}clean-ext): should also omit
+ semicolon when omitting "in WORDS" of FOR-statement.
+
+ * tool/rmdirs: ditto.
+
+Sun Jul 11 11:07:42 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rdoc/test_rdoc_ri_driver.rb (test_formatter): add a test. a
+ patch from caleb clausen in [ruby-core:31182].
+
+Sat Jul 10 21:43:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime_with_timespec): fix precision handling for
+ %:z and %::z.
+
+Fri Jul 9 22:32:54 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c: unused declarations removed.
+
+Fri Jul 9 21:20:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime_with_timespec): clear colons at unknown
+ directive.
+
+Fri Jul 9 21:04:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c: don't call tzset. strftime.c doesn't depend on
+ the global timezone.
+
+Fri Jul 9 20:30:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): 24:00 should be the beginning of the next
+ day even if the leap second, 23:59:60, exists.
+
+Fri Jul 9 01:08:46 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/emitter.rb (initialize): line_width is
+ a valid option passed to the emitter.
+
+ * test/psych/test_psych.rb: corresponding tests.
+
+Fri Jul 9 00:49:46 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/emitter.c (line_width, set_line_width): preferred line may
+ be set on the emitter.
+
+ * test/psych/test_emitter.rb: corresponding tests.
+
+Thu Jul 8 15:47:34 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_conv_enc_opts): fix infinite loop because
+ of ISO-2022-JP conversion with empty string.
+ patched by Brian Buchanan [ruby-core:31107]
+
+Thu Jul 8 08:16:57 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb (push): adding version
+ and header emit options.
+
+ * test/psych/test_psych.rb: corresponding test.
+
+Thu Jul 8 08:01:03 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/emitter.c: updating documentation about emit options
+
+ * ext/psych/lib/psych/core_ext.rb: ditto
+
+ * ext/psych/lib/psych.rb (dump): passing emit options to emitter.
+
+ * ext/psych/lib/psych/nodes/node.rb: ditto
+
+ * ext/psych/lib/psych/visitors/emitter.rb: sending emit options to
+ YAML emitter. [ruby-core:28318]
+
+Thu Jul 8 06:05:58 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime_with_timespec): support %:z and %::z.
+ [ruby-dev:41841]
+
+Thu Jul 8 00:15:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gem_prelude.rb: provide workaround for gem activation. Currently,
+ gem activation does not work by default. Now it can be worked
+ around by requiring "rubygems" first. [ruby-core:29486]
+ a patch from Evan Phoenix in [ruby-core:31096].
+
+ * lib/rubygems.rb: ditto.
+
+Wed Jul 7 10:01:34 2010 Adrian Bloomer <adrian.bloomer@gmail.com>
+
+ * numeric.c (fix_rev): Replaced fix_rev with '~num | FIXNUM_FLAG'.
+
+Wed Jul 7 13:22:20 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (ruby_find_basename): set correct baselen.
+
+Wed Jul 7 13:02:59 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * vm_method.c (rb_method_boundp): respond_to?(:protected_method,
+ true) should return true. Pointed out by Marc-Andre Lafortune.
+ [ruby-dev:41837]
+
+Wed Jul 7 12:00:24 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (ruby_find_basename): should initialize f.
+
+Wed Jul 7 11:44:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_raise): add invalid header to
+ exceptions.
+
+Wed Jul 7 10:26:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * missing/close.c: ignore ECONNRESET.
+ FreeBSD wrongly sets ECONNRESET on close(2) and
+ it causes false-negative exceptions. [ruby-dev:41778]
+
+ * configure.in: ditto.
+Tue Jul 6 22:57:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c (nogvl_copy_stream_sendfile): jump to retry_sendfile directly
+ to avoid select() on a socket which TCP state is CLOSED.
+ patch by Eric Wong. [ruby-core:31053]
+
+Tue Jul 6 21:45:34 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io/console/console.c (winsize_row): should return actual screen
+ size, not buffer size.
+
+Tue Jul 6 08:35:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/dl/lib/dl/import.rb (handler): add a more helpful error message
+ when calling import_symbol or import_function without calling
+ dlload. Thanks nobu! [ruby-core:30996]
+
+Tue Jul 6 00:34:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (thread_free): free altstack to prevent memory leak. a patch
+ from Tomoyuki Chikanaga in [ruby-dev:41815]. [Bug #3537]
+
+Tue Jul 6 00:29:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (NONASCII_MASK): NONASCII_MASK must be unsigned.
+ [ruby-dev:41782]
+
+Mon Jul 5 16:05:39 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * vm_method.c (rb_method_boundp): Return false for protected
+ methods when called from Kernel#respond_to?. [ruby-dev:40461]
+
+Mon Jul 5 12:32:01 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb (parse_string): support
+ timezones that are not one hour off. [ruby-core:31023]
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
+
+Sun Jul 4 22:49:54 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_syntax.rb: split test_syntax from test_system.rb.
+
+Sun Jul 4 22:02:02 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_system.rb (test_syntax): unified with test_syntax2.
+
+Sun Jul 4 21:00:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_system.rb (test_syntax2): moved from sample/test.rb
+ [ruby-dev:41721]
+
+Sun Jul 4 17:13:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (swallow, prepare_getline_args, rb_io_getline_1): fix for
+ paragraph mode reading in non-ascii-compatible encoding.
+ [ruby-dev:41803]
+
+Sat Jul 3 16:14:10 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): add two new constants
+ BigDecimal::INFINITY and BigDecimal::NAN.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (BigMath.exp): modify the
+ behaviors for infinity arguments as same as Math.exp.
+
+Sat Jul 3 09:47:26 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb(visit_Psych_Nodes_Scalar):
+ teaching Psych to deserialize DateTime objects. [Bug #1390]
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb(visit_DateTime): added a
+ method for serializing DateTime objects.
+
+ * ext/psych/lib/psych/scalar_scanner.rb(parse_time): add method for
+ parsing times objects from a string.
+
+ * test/psych/test_date_time.rb: tests for dumping DateTime objects.
+
+Sat Jul 3 09:13:55 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb (visit_Time): use
+ Time#nsec to accurately serialize time objects. [ruby-core:29233]
+
+Fri Jul 2 23:30:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (argf_inplace_mode_set): prohibits an assignment of a tainted
+ value.
+
+ * file.c (ruby_find_basename, ruby_find_extname): split from
+ rb_file_s_basename() and rb_file_s_extname().
+
+ * util.c (ruby_add_suffix): support arbitrary length of the suffix
+ to get rid of the potential buffer overflow.
+ reported by tarui.
+
+Fri Jul 2 05:31:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (rb_num2long): accept LONG_MAX < x < LONG_MAX+1 and
+ LONG_MIN-1 < x < LONG_MIN as well because they are converted
+ into the valid range of long by truncation.
+ (rb_num2ulong): accept ULONG_MAX < x < ULONG_MAX+1 and
+ LONG_MIN-1 < x < LONG_MIN as well.
+ (rb_num2ll): accept LLONG_MAX < x < LLONG_MAX+1 and
+ LLONG_MIN-1 < x < LLONG_MIN.
+
+Thu Jul 1 23:10:25 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Improving documentation.
+
+Thu Jul 1 22:15:01 2010 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (rb_num2ulong): fix the lower limit for float.
+ [ruby-dev:41361]
+
+Thu Jul 1 21:37:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): integrated with
+ runexec.
+
+Thu Jul 1 16:19:53 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (thread_start_func_1): don't call
+ native_thread_init_stack(th) on cygwin to avoid the segv
+ introduced by r27789. Cygwin's signal implementation is half
+ baked so USE_SIGNALSTACK is not defined and it needs another
+ treatment.
+
+Thu Jul 1 13:00:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (test-knownbug): ignore known bugs.
+
+Thu Jul 1 08:40:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object): suppress empty instance variable entry on
+ compatible dump objects.
+
+Wed Jun 30 07:29:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (test_script_from_stdin): by using
+ a pipe, get rid of not-well-defined behavior after the child
+ process terminated in pty.
+
+Wed Jun 30 02:30:26 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * thread_pthread.c (get_stack): use pthread_getthrds_np() for AIX.
+
+ * configure.in: ditto.
+
+Tue Jun 29 21:11:15 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * ext/stringio/stringio.c (strio_write): add RB_GC_GUARD.
+
+Tue Jun 29 19:39:59 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_method.rb (is_ruby64): check
+ ruby binary is mswin64 or mingw64. [ruby-dev:41756]
+
+Tue Jun 29 14:18:21 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_realpath_internal, realpath_rec): skip UNC share root
+ on DOSISH platforms.
+ http://pc12.2ch.net/test/read.cgi/tech/1272248179/600
+
+Tue Jun 29 11:52:33 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (unlink_heap_slot, slot_sweep): unlink heaps_slot of
+ heaps_slot linked list if heaps_slot is empty at slot_sweep.
+ fixed [ruby-dev:41543], [ruby-core:24894].
+
+Tue Jun 29 01:22:08 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/fiddle.h: added FFI type detection to avoid bug in ffi
+ header files. Thanks Yugui! [ruby-core:30917]
+
+Mon Jun 28 22:14:22 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rdoc/test_rdoc_ri_driver.rb (TestRDocRIDriver#test_formatter):
+ fix a test accordingly to r28455.
+
+Mon Jun 28 21:56:14 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_fd_resize, rb_fd_copy): avoid NULL dereference upon
+ failed realloc by using xrealloc instead of not realloc. a patch
+ from Jim Meyering <meyering at redhat.com> in [ruby-core:30920]
+ [Bug #3489]
+
+Mon Jun 28 20:32:33 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_method.rb (test_offset_vtbl): check
+ that Ruby is 32bit or 64bit binary in order to get correct offset
+ value. [ruby-dev:41741]
+
+Mon Jun 28 05:32:51 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rdoc/ri/driver.rb (RDoc::RI::Driver#formatter): should use bs
+ format when stdout is piped. [ruby-core:30734]
+
+Mon Jun 28 03:12:03 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_class.rb: add a test for [ruby-core:30843].
+
+Mon Jun 28 02:43:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * class.c (rb_mod_init_copy): when class is dup'ed, a metaclass of the
+ class should be attached to the dup'ed class, not the original
+ class. [ruby-core:30843] [Bug #3461]
+
+Sun Jun 27 23:31:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h, io.c: reverted r21709.
+
+ * ruby.c (load_file_internal): nothing to read if EOF reached
+ while reading shebang. [ruby-core:30910]
+
+Sun Jun 27 13:25:07 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c (simple_sendfile): don't try to send data more than SSIZE_MAX
+ with single sendfile call..
+ based on the patch by Eric Wong. [ruby-core:30908]
+
+Sun Jun 27 10:41:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/require_paths_builder.rb (write_require_paths_file_if_needed):
+ no reason that bin directory should be included in $LOAD_PATH.
+ it is for executable files, but not libraries. [ruby-core:25936]
+
+Sat Jun 26 13:07:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (enable-debug-env): option for RUBY_DEBUG env.
+
+Sat Jun 26 11:56:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (clear-installed-list): put redirection before set
+ command, since it seems to be handled by nmake in special way.
+ [ruby-dev:41711]
+
+Sat Jun 26 10:08:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): no needs to copy the
+ original ENV, since it's done in spawn automatically.
+ [ruby-dev:41733]
+
+Sat Jun 26 08:44:22 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * NEWS (zlib): new methods. [ruby-dev:41706] [Bug #3472]
+
+Sat Jun 26 07:59:18 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_method.rb (test_offset_vtbl): check
+ that OS is Windows 32bit or Windows 64bit in order to get
+ correct offset value.
+
+Sat Jun 26 04:39:12 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * ext/dl/lib/dl/func.rb (call): don't overwrite original arguments
+ to defend from GC.
+ * test/dl/test_func.rb (test_string): add test for above.
+
+Fri Jun 25 11:45:36 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Fixing a bug that prevented CSV from parsing
+ all multi-line fields correctly. Patch by Rob Biedenharn.
+
+Fri Jun 25 10:07:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err):
+ return the exit status.
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): change the
+ environment of spawned process only.
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): get rid of possible
+ deadlock.
+
+Fri Jun 25 06:24:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/un.rb (httpd): MaxClients also should be integer.
+ [ruby-dev:41724] [Bug #3477]
+
+ * lib/un.rb (setup): fix of word splitting. [ruby-dev:41723]
+ [Bug #3476]
+
+Fri Jun 25 01:07:17 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * include/ruby/ruby.h (static inline rb_gc_guarded_ptr): prevent
+ RB_GC_GUARD_PTR being removed by optimization.
+
+Thu Jun 24 06:22:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (ruby_getaddrinfo__darwin): the workaround
+ for Mac OS X moved from rsock_getaddrinfo.
+
+Thu Jun 24 05:44:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (struct dump_arg, struct load_arg): merge taint and
+ untrust flags into infection as bit flags.
+
+ * marshal.c (w_nbyte, clear_dump_arg): infect the buffer as soon
+ as appending, because it might have been finalized already at
+ exit. based on a patch by Tomoyuki Chikanaga
+ at [ruby-dev:41672]. [Bug #3463]
+
+Wed Jun 23 23:49:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (str_is_number): renamed from str_isnumber to
+ avoid confusion to str_isnumber in ext/socket/getaddrinfo.c.
+
+Wed Jun 23 23:45:31 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * NEWS (stringio): new methods. [ruby-dev:41687] [Bug #3469]
+
+Wed Jun 23 22:52:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c: don't use __P.
+
+Wed Jun 23 21:32:08 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (reg_get_typelib_file_path): try win64
+ registry entry at first. [ruby-dev:41674] [Bug #3464]
+
+Wed Jun 23 21:17:32 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (ruby_getaddrinfo__darwin): new workaround for
+ getaddrinfo problem on Mac OS X Snow Leopard. [ruby-core:29427]
+ patch by Wataru Kimura. [ruby-core:30842]
+
+Wed Jun 23 17:12:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS (ptr): new method and deprecated methods. [ruby-dev:41681]
+
+ * ext/pty/{README,README.ja}: ditto.
+
+ * ext/pty/pty.c (pty_check): add rdoc.
+
+Wed Jun 23 12:44:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_regexp.rb (test_dup_warn): read in UTF-8
+ encoding regardless environment.
+
+ * test/ruby/envutil.rb (invoke_ruby): add encoding option.
+
+Wed Jun 23 06:44:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (fchown): need to check. a patch by Eric Wong
+ at [ruby-core:30818].
+
+ * io.c (argf_next_argv): check for setting owner/group.
+
+Tue Jun 22 23:10:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (num_exact): fix for mathn. [ruby-dev:41599]
+
+Tue Jun 22 22:00:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb: suppress warnings.
+
+Tue Jun 22 21:33:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/optparse/test_summary.rb: fixed superclass so that it run
+ solely.
+
+Tue Jun 22 19:57:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (shadowing_lvar_gen): should add lvar to vars and
+ used. [ruby-dev:41666]
+
+Tue Jun 22 13:23:13 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/delegate.rb: Forward #trust, #untrust, #taint and #untaint
+ to both the delegator and __getobj__ [ruby-core:26138]
+
+Mon Jun 21 23:41:08 2010 wanabe <s.wanabe@gmail.com>
+
+ * eval_error.c (error_print): clear raised_flag while error-printing
+ to avoid hang. [ruby-core:27608]
+
+ * test/ruby/test_beginendblock.rb (test_endblock_raise): add test for
+ above.
+
+Sun Jun 20 16:17:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * id.c (Init_id): add underscore name.
+
+ * parse.y (warn_unused_var): ignore underscore name.
+
+ * parse.y (warn_unused_var): use same format as shadowing local
+ variable.
+
+ * parse.y (shadowing_lvar_gen): get rid of adding extra name for
+ shadowing local variable. [ruby-dev:41628]
+
+Sat Jun 19 11:11:37 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb.rb: remove double exclamation marks. a patch from Diego
+ Viola. [ruby-core:30589]
+
+Sat Jun 19 03:35:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb (resolve_klass): fix the
+ exception message when attempting to load an unknown class. Thanks
+ nobu! [ruby-dev:41399]
+
+ * test/psych/test_psych.rb: test for the exception message
+
+Fri Jun 18 10:37:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (gc_lazy_sweep): clean a warning.
+ "suggest parentheses around assignment used as truth value"
+
+ * transcode_data.h (getGB4bt1): clean a warning.
+ "suggest parentheses around arithmetic in operand of |"
+
+ * transcode_data.h (getGB4bt3): ditto.
+
+ * vm.c (thread_free): clean a warning. "format 'p' expects type
+ 'void *', but argument 3 has type 'struct rb_mutex_struct *'"
+
+Fri Jun 18 10:15:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c: add prototype of rb_realpath_internal.
+
+ * load.c: ditto.
+
+Fri Jun 18 01:50:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * object.c: Object#public_methods, private_methods, etc. returns
+ method ids that belong to the class or the singleton class(es) of
+ the object. [ruby-dev:41613]
+
+ * class.c: on the other hand, Module#public_instance_methods, etc.
+ returns method ids that belong to the module itself (even if the
+ module is singleton, it does not return method ids of super
+ class(es); see [ruby-core:28837]).
+
+Fri Jun 18 01:22:55 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (prevent_directory_traversal): apply filesystem encoding to path
+ only during calling File.expand_path. [ruby-dev:41423]
+
+Thu Jun 17 23:20:14 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * load.c (rb_load_internal): remove call to rb_realpath_internal
+ within rb_load_internal which caused big performance degradation.
+ Instead, call rb_realpath_internal in the caller of
+ rb_load_internal. [ruby-dev:41502] [ruby-dev:41610]
+
+ * vm.c (rb_vm_call_cfunc): ditto.
+
+ * eval_intern.h (rb_vm_call_cfunc): ditto.
+
+ * ruby.c (process_options): ditto.
+
+Thu Jun 17 18:37:47 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_str_encode_ospath): when the encoding of the parameter
+ is ASCII-8BIT, should recognize as filesystem encoding, and convert
+ to UTF-8 on Windows.
+
+ * file.c (realpath_rec): should convert to ospath encoding before
+ calling lstat().
+
+ * file.c (rb_realpath_internal): resolved string should take over
+ the encoding of base string.
+
+ * transcode.c (rb_str_encode): should return new string always.
+ fixed #3444.
+
+Wed Jun 16 18:34:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y: ripper needs warn_unused_var(), too.
+
+Wed Jun 16 18:20:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (warn_unused_var): warn unused variables.
+ [ruby-dev:41620]
+
+Wed Jun 16 15:40:53 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c (rb_bug): existence of _set_abort_behavior() depends on
+ runtime version, not compiler version.
+
+Wed Jun 16 01:38:40 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/fiddle/extconf.rb: check ffi.h even when pkg-config succeeded.
+ On Debian/lenny, which is a "supported" platform, ffi.h is installed
+ in /usr/include/i486-linux-gnu/. This causes build error when using
+ gcc whose target is not i486-linux-gnu.
+
+Wed Jun 16 00:04:38 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_io.rb (safe_4): does not use Timeout because
+ Timeout.timeout uses Thread#kill which raises SecurityError when
+ $SAFE == 4. based on a patch from Tomoyuki Chikanaga.
+ [ruby-dev:41484]
+
+ * test/ruby/test_io.rb (test_print_separators): use pipe (test helper
+ method) instead of IO.pipe. [ruby-dev:41484]
+
+Tue Jun 15 17:14:58 2010 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/fiddle/extconf.rb: De Morgan's laws.
+
+Tue Jun 15 12:09:00 2010 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/fiddle/extconf.rb: use pkg_config to find ffi.h.
+
+Tue Jun 15 02:31:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk (clean-ext, clean-enc): clean up cleaning
+ targets.
+
+Mon Jun 14 22:36:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_socket.rb (test_udp_server): rescue Errno::ENOSYS
+ for Windows.
+
+ * test/socket/test_nonblock.rb (test_sendmsg_nonblock_error): ditto.
+
+ [ruby-dev:41597] reported by Masaya Tarui.
+
+Mon Jun 14 17:44:39 2010 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: raise DRbConnError instead of ArgumentError if too
+ many arguments. [ruby-dev:41481]
+
+ * test/drb/test_drb.rb: ditto.
+
+ * test/drb/drbtest.rb: ditto.
+
+Mon Jun 14 04:03:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/fiddle/closure.c (dealloc): refix workaround r28300.
+ don't use ffi_closure_alloc, ffi_prep_closure_loc and
+ ffi_closure_free on MACOSX and __linux__.
+ [ruby-dev:41483] [ruby-dev:41214]
+
+Sun Jun 13 15:46:07 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rubyoptions.rb: add a simple test for __END__ and
+ DATA.
+
+Sun Jun 13 04:24:18 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/delegate.rb: Delegate !=, eql? and hash [ruby-core:26139]
+
+Sun Jun 13 02:12:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac.trans (buf_apply): fix for patterns
+ whose result is 2 bytes. [ruby-core:30751]
+
+Sun Jun 13 01:38:17 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * time.c (rb_localtime_r2): fix mixed declarations and code.
+
+Sun Jun 13 00:27:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl/lib/dl.rb: don't require when already loaded.
+
+Sun Jun 13 00:02:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/fiddle/closure.c (dealloc): workaround fix for libffi's
+ ffi_closure_free. [ruby-dev:41483] [ruby-dev:41214]
+
+Sat Jun 12 10:02:26 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_syscall): should check argument string taint before
+ invoking system calls.
+
+Sat Jun 12 09:18:31 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (uninitialized_constant): process through
+ rb_class_real() to remove "Object::" from error message.
+ [ruby-dev:40951]
+
+Sat Jun 12 00:38:37 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/dbm/extconf.rb: accept Berkley DB version 3, 4 and 5.
+ a patch from Takahiro Kambe. [ruby-dev:41531]
+
+Fri Jun 11 23:21:35 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (init_leap_second_info): check the result of
+ gmtime_with_leapsecond.
+
+Fri Jun 11 23:04:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_get_ciphers):
+ use sk_SSL_CIPHER_num and sk_SSL_CIPHER_value instead of cast.
+ patched by Takahiro Kambe [ruby-dev:41530]
+
+Fri Jun 11 22:59:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/missing.h (isnan): fix compilation error on OpenBSD.
+
+Fri Jun 11 22:39:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rubygems/install_update_options.rb
+ (Gem::InstallUpdateOptions#add_install_update_options): deprecate
+ --test option which has not worked. [ruby-core:21714]
+
+ * test/rubygems/test_gem_command_manager.rb: ditto.
+
+Fri Jun 11 07:34:25 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): test the result of LOCALTIME.
+
+Fri Jun 11 00:42:45 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_localtime_r2): fix localtime overflow check.
+
+Thu Jun 10 23:05:44 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_localtime_r2): refine localtime overflow check for
+ FreeBSD 6.4.
+
+Thu Jun 10 09:10:08 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_putc): documentation updated to mention putc would
+ not work well with multi-byte characters. [ruby-core:30697]
+
+ * io.c (rb_f_putc): ditto.
+
+Wed Jun 9 22:51:50 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): always extrapolate from past.
+ [ruby-core:30672] reported by Benoit Daloze.
+
+Wed Jun 9 22:13:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (calc_tm_yday): extracted from timegmw_noleapsecond.
+
+Tue Jun 8 06:27:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb: load full rubygems at LoadError for activation
+ check. [ruby-core:29486]
+
+Tue Jun 8 06:04:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (parse_mode_enc): set set_by_bom bit. [ruby-core:30641]
+
+Sun Jun 6 22:37:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_buf_cat_escaped_char): get rid of buffer
+ overflow on platforms int is bigger than 32bit, and warnings.
+
+Sun Jun 6 19:55:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * array.c (rb_ary_product): clear uninitialized elements in temporary
+ array.
+
+Sun Jun 6 12:31:57 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: set_heaps_increment is not
+ called before gc_marks of lazy sweeping because live_num not
+ contain finalize objects. So call set_heaps_increment after lazy
+ sweeping if free_num are not enough. And move free_min to struct
+ rb_objspace for above. [ruby-dev:41499]
+
+Sun Jun 6 10:44:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_product): need to set the length in order to get
+ the entries marked. [ruby-dev:41540]
+
+Sun Jun 6 08:26:01 2010 Tanaka Akira <akr@fsij.org>
+
+ * vm.c (Init_BareVM): call Init_native_thread here.
+
+ * thread.c (Init_Thread): don't call Init_native_thread.
+
+ * thread_pthread.c (Init_native_thread): exported.
+
+ * thread_win32.c (Init_native_thread): ditto.
+
+ [ruby-dev:41536]
+
+Sun Jun 6 08:21:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS: Enumerable#join has been reverted. [ruby-core:30604]
+
+Sat Jun 5 20:30:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): ASCII incompatible strings
+ must always escape or converted.
+
+ * re.c (rb_reg_expr_str): use rb_str_buf_cat_escaped_char
+ when resenc is given: for Regexp#inspect or error message.
+
+ * re.c (rb_reg_desc): add 'n' for ENCODING_NONE.
+
+Sat Jun 5 01:20:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (sym_inspect): Escape when the symbol is not
+ resulted encoding and not ascii_only. It had escaped
+ ascii-incompatible string, but it is wrong.
+
+Sat Jun 5 01:10:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_buf_cat_escaped_char): defined.
+ Splited from rb_str_inspect.
+
+Sat Jun 5 16:39:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * .gdbinit (rp): show type name for RTypedData.
+
+Sat Jun 5 15:59:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options, load_file_internal): $0 seen from
+ required libraries by -r option should be the main script.
+ [ruby-core:23717]
+
+Sat Jun 5 15:15:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): support for child
+ process env.
+
+Sat Jun 5 14:11:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb (test_exception_during_shutdown):
+ need to raise always.
+
+Sat Jun 5 13:13:30 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (eql?, ==, minor): Fix bugs when comparing/returning
+ some empty matrices.
+
+Sat Jun 5 11:00:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * error.c (rb_name_err_mesg_new): guard mesg, recv and method.
+ The problem in [ruby-dev:41464] is caused because mesg is collected.
+
+Sat Jun 5 10:03:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * .gdbinit (rp): detect and show RTypedData.
+
+Sat Jun 5 08:30:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_f_test): 'W' should test writable by real uid/git,
+ not world writable. [ruby-core:30587]
+
+Sat Jun 5 06:20:57 2010 Eric Hodel <drbrain@segment7.net>
+
+ * dir.c: Clarification of what '*' matches. Patch by John Wells
+ <john.wells at greatworx.com>
+
+Fri Jun 4 10:46:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_inspect): should taint the result.
+ [ruby-dev:41533]
+
+Fri Jun 4 09:37:15 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (gc_sweep): suppress a warning on VC, again.
+
+Thu Jun 3 23:34:55 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Emit a deprecation warning in
+ verbose mode and add a caution to the overview section of the
+ document. [ruby-dev:41525]
+
+Thu Jun 3 19:33:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_inspect): suppress warnings by
+ rb_sprintf.
+
+ * ext/dl/cptr.c (rb_dlptr_s_malloc): suppress warnings.
+
+Thu Jun 3 18:58:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (ruby_init_ext): statically linked extensions have no
+ real path. [ruby-dev:41526]
+
+ * vm.c (rb_vm_call_cfunc): add filepath argument.
+
+Thu Jun 3 18:17:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rake/test_win32.rb (Rake::TestWin32): update tests.
+ [ruby-core:30309]
+
+ * test/io/nonblock/test_flush.rb (test_flush): try pipe and
+ socketpair. [ruby-dev:41517]
+
+Thu Jun 3 09:36:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/dl.h (DLSTACK_TYPE): type of stack is same as VALUE.
+ reported by sakiyama shin in [ruby-dev:41514]
+
+Thu Jun 3 06:30:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_path.rb (test_path): workaround for drive
+ letter.
+
+ * test/ruby/test_path.rb (test_path): get rid of blocking on
+ access to non-existent host.
+
+Thu Jun 3 05:37:46 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * tool/rbinstall.rb (install-bin): Allow bin/* install from dot-dirs.
+ Fixes rvm and multiruby installations.
+
+Thu Jun 3 01:22:45 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fix typo and race condition.
+
+Thu Jun 3 00:58:45 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/dl/lib/dl/cparser.rb (parse_ctype): add backwards compatibility
+ by supporting "uint" types in the c parser. [ruby-core:29750]
+ * test/dl/test_cparser.rb: adding a test for "uint" changes.
+
+Wed Jun 2 11:40:02 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): should consider block on stack,
+ if block argument is passed. [ruby-core:30534]
+
+ * parse.c (arg_concat_gen): should append to nd_head, not to
+ nd_iter for NODE_BLOCK_PASS.
+
+Tue Jun 1 23:12:06 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (unescape_nonascii): \P{FOO} is also Unicode property in
+ regexp. [ruby-core:30540]
+
+Tue Jun 1 21:29:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: adding support to rfc5789 patch verb.
+ Added a Net::HTTP::Patch class which expects a message body
+ and response body. It recycles the post method into a patch one,
+ that will send the encoded representation to the server.
+ Summarizing, a new class has been created, the post method
+ extracted into send_entity, including a new argument,
+ which defines which class to use (Post or Patch) and
+ finally a patch method was created. [ruby-core:30426]
+ Patched by Guilherme Silveira
+ <guilherme.silveira AT caelum.com.br>
+
+Tue Jun 1 03:46:08 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/extconf.rb: reject GPLv3 readline. [ruby-dev:39172]
+ [ruby-core:25272] [ruby-dev:39167] [ruby-core:28736]
+
+Tue Jun 1 01:14:31 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * io.c (pipe_open): add RB_GC_GUARD.
+ This caused failure when test/ruby/test_argf.rb is executed with
+ GC.stress = true in mswin32_90
+
+Mon May 31 23:44:22 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: use tclConfig.sh/tkConfig.sh when frameworks
+ are enabled on MacOS X.
+
+ * ext/tk/stubs.c: dirty hack for frameworks and stubs on MacOS X.
+
+ * ext/tk/lib/tk.rb: stop creating a dummy Tcl/Tk interpreter.
+ And hide a root window before starting eventloop. (for ruby 1.9)
+
+ * ext/tk/tcltklib.c: add codes to support Ruby/Tk-Kit (Rubykit).
+
+Mon May 31 21:49:42 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS::Requester#request): rescue ECONNRESET
+ for Windows. reported by U.Nakamura. [ruby-dev:41477]
+
+Mon May 31 19:25:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (onig_syntax_warn): do not use external strings as
+ printf format.
+
+Mon May 31 18:22:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-set-encoding): skip shebang line
+ always regardless of ruby.
+
+Mon May 31 15:07:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): Refix r28102: this breaks
+ r28039. test for [ruby-dev:41429] is added. [ruby-core:30516]
+
+Mon May 31 14:47:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): inspect as ASCII when the codepoint
+ of a character in Unicode string is ASCII printable one.
+
+Mon May 31 13:44:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_unicode_p): check the encoding is Unicode
+ or not by the name; not function's pointer. [ruby-dev:41479]
+
+Mon May 31 04:03:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): check if expanded dname encoding is
+ compatible with fname, not just copying. [ruby-core:30516]
+
+ * test/ruby/test_beginendblock.rb (test_endblockwarn): needs
+ encoding comment.
+
+Mon May 31 02:17:54 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (defined): respond_to_missing? may not be available
+ (for BasicObject instances).
+
+Mon May 31 01:43:42 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/delegate: Delegator: combine (public|protected) methods with
+ those of the delegated object. [ruby-core:27224]
+ DelegateClass: combine (public|protected) instance methods
+ with those of the delegated superclass.
+
+Sun May 30 22:18:49 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/set.rb (keep_if, select!): New methods [ruby-core:29749]
+
+Sun May 30 21:51:59 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rake/test_application.rb: update a test because of r28089.
+
+Sun May 30 21:48:07 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/tempfile.rb (Tempfile#unlink): leave @data. Assigning nil to
+ @data caused double closing error of the same IO in finalizer. a
+ patch from Simon Nicholls. [ruby-core:29395]
+
+Sun May 30 18:47:15 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: updated to b856dd07.
+ this cleans warnings.
+
+Sun May 30 18:25:55 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * load.c (load_failed): use more accurate error message.
+ [ruby-core:23851]
+
+Sun May 30 16:54:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * file.c (rb_file_directory_p): update rdoc. a patch from Ilkka
+ Laukkanen. [ruby-core:30016]
+
+Sun May 30 14:59:13 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_mark_all_clear): don't call obj_free() in
+ gc_mark_all_clear(), because obj_free() may make T_ZOMBIE
+ objects.
+
+ * gc.c (gc_clear_mark_on_sweep_slots): renamed.
+
+ * gc.c (rb_objspace_call_finalizer): call
+ gc_clear_mark_on_sweep_slots() before calling mark_tbl().
+ [ruby-dev:41459]
+
+Sun May 30 03:40:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_utf8, parser_tokadd_string): allow NUL
+ containing symbol literals, as well as String#to_sym.
+ [ruby-dev:41447]
+
+Sun May 30 03:03:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/generator/template/darkfish/classpage.rhtml:
+ fix encoding value of XML declaration. [ruby-dev:41452]
+
+Sun May 30 02:20:26 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * thread.c (RB_GC_SAVE_MACHINE_CONTEXT), gc.c (ruby_gc_stress_start):
+ revert r28078.
+
+Sun May 30 02:21:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/zlib/zlib.c (zstream_append_input2): add RB_GC_GUARD.
+ This caused failure when test/csv is executed with GC.stress = true.
+
+Sun May 30 01:25:48 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * thread.c (RB_GC_SAVE_MACHINE_CONTEXT): start GC
+ by switching the thread if gc_stress == true
+
+ * gc.c (ruby_gc_stress_start): ditto.
+
+Sun May 30 00:02:39 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (force_chain_object, rb_objspace_call_finalizer): delete
+ finalizer entry after corresponding finalizer is executed.
+ This caused SEGV when test/cgi is executed with GC.stress = true.
+
+Sat May 29 23:30:33 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (str_replace_shared): change embedded state atomically.
+ [ruby-core:29953] [ruby-dev:41456]
+
+Sat May 29 12:56:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encindex): avoid infinite require
+ loop. [ruby-core:30467]
+
+Sat May 29 12:05:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc#read_file_contents): take care of BOM.
+ [ruby-dev:41452]
+
+Sat May 29 10:12:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (GC_PROF_TIMER_STOP): regularize `marked' to suppress
+ warnings.
+
+Sat May 29 09:34:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb: fix for --disable-gems.
+
+Sat May 29 09:04:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS::Requester#request): rescue ECONNREFUSED.
+
+Sat May 29 08:46:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (allocate_sorted_heaps, before_gc_sweep, gc_sweep): removed
+ unused variables.
+
+Fri May 28 20:35:21 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (blocking_region_begin): avoid RUBY_VM_CHECK_INTS()
+ call during GVL state transition. [Bug#3354] [ruby-dev:41435]
+
+Fri May 28 19:37:47 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: use simple lazy sweep algorithm for response performance
+ gain. See [ruby-dev:41067].
+
+ * object.c: FL_MARK of some objects by lazy sweep is copied when
+ RVALUE is cloned. These objects are not marked in the mark phase.
+ So delete FL_MARK.
+
+ * class.c: ditto.
+
+Fri May 28 18:39:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_inspect): escape ASCII-compatible strings.
+
+ * string.c (rb_str_inspect): escape ASCII-compatible strings.
+
+Fri May 28 17:34:48 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * array.c (rb_ary_product): Use tmpary instead, to ensure marking
+ arrays by GC.
+
+Fri May 28 11:40:07 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * array.c (rb_ary_product): Do not rely on GC, t0 should be
+ checked explicitly.
+
+Fri May 28 10:40:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (checking_for): ignore toplevel.
+
+Fri May 28 00:47:16 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * error.c (rb_bug): suppress the error report dialog if report_bug()
+ is finished successfully.
+
+Fri May 28 00:32:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * insns.def (invokesuper): check consistency between class of self and
+ class of method being invoked by super. This is temporary measure
+ for YARV. See [ruby-core:30313] in detail. See [ruby-dev:40959]
+ [ruby-dev:39772] [ruby-core:27000] [ruby-core:27230]
+
+ * vm_insnhelper.c (vm_search_superclass): ditto.
+
+Thu May 27 23:38:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (rb_home_dir): set filesystem encoding.
+
+Thu May 27 23:29:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): set encoding as the same of fname
+ when _result_ is not filesystem encoding. [ruby-dev:41429]
+
+Thu May 27 23:07:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): use rb_enc_associate_index and
+ rb_filesystem_encindex. Strings related FileSystem should
+ have filesystem_encoding.
+
+ * file.c (SET_EXTERNAL_ENCODING): removed.
+
+Thu May 27 23:03:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_filesystem_encindex): defined.
+
+ * include/ruby/encoding.h (rb_locale_encindex): ditto.
+
+ * encoding.c (rb_filesystem_encindex): remove static.
+
+ * encoding.c (rb_locale_encindex): ditto.
+
+Thu May 27 22:34:27 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): call ReadFile() with len = 0 before
+ reading really on console, because the first ReadFile() call after
+ PeekConsoleInput() always returns broken data. (Windows's bug).
+ [ruby-core:29018]
+
+Thu May 27 12:42:23 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * LGPL: Removed. We no longer have LGPL'd source files in our
+ tree.
+
+Wed May 26 20:19:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): add the result of random to the
+ beginning of range, not the opposite. [ruby-dev:41415]
+
+Wed May 26 19:55:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (file_expand_path): revert a part of r22392. it's commit miss.
+
+Wed May 26 18:40:23 2010 Masaya Tarui <tarui@ruby-lang.org>
+
+ * test/rinda/test_rinda.rb (TupleSpaceTest, TupleSpaceProxyTest):
+ kill a used thread at teardown. [ruby-dev:41397]
+
+Wed May 26 12:08:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): subtraction method of non-numeric can
+ return Float. [ruby-dev:41410]
+
+Wed May 26 11:50:09 2010 Eric Hodel <drbrain@segment7.net>
+
+ * marshal.c (Init_marshal): document marshal_dump and marshal_load.
+
+Wed May 26 10:35:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_large_fd_select): needed on mingw, even
+ though fd_mask is not available. [ruby-core:30401]
+
+Tue May 25 14:00:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (add_code_range_to_buf0): fix false negative
+ warning when given range is just before previous range.
+ [ruby-dev:41406]
+
+Tue May 25 16:37:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-version): take revision if
+ keyword is expanded. [ruby-dev:41408]
+
+Tue May 25 13:26:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/vm.h, include/ruby/encoding.h: add external
+ linkage.
+
+Tue May 25 01:46:49 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_f_caller): update rdoc. a patch from Nobuhiro IMAI
+ <nov at yo.rim.or.jp> in [ruby-dev:41387].
+
+Mon May 24 23:04:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * error.c: fix wrong exception class name in rdoc.
+
+Mon May 24 19:00:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (warn_balanced, parser_yylex): no warnings after closing
+ parens.
+
+Mon May 24 12:52:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (change), tool/change_maker.rb: make a brief template
+ for ChangeLog.
+
+Mon May 24 09:19:59 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (gc_sweep): suppress a warning on VC.
+
+Mon May 24 08:16:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_f_spawn): use correct command name for the error
+ message. [ruby-dev:41395]
+
+Sun May 23 17:48:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/x509-internal.rb, lib/forwardable.rb,
+ lib/irb/cmd/fork.rb, lib/mutex_m.rb,
+ lib/shell/process-controller.rb, lib/sync.rb, object.c:
+ suppress warnings patched by Benoit Daloze at [ruby-core:30366].
+
+ * parse.y (warn_balanced): no warning for singleton class.
+ [ruby-core:30366]
+
+Sun May 23 16:56:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (CONST_ID_CACHE, rb_intern_const): suppress
+ warnings with -Wconversion.
+
+Sun May 23 07:08:34 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/stream.rb: adding a JSON streaming API
+
+ * ext/psych/lib/psych/stream.rb: ditto
+
+ * ext/psych/lib/psych.rb: using autoload
+
+ * ext/psych/lib/psych/json.rb: ditto
+
+ * ext/psych/lib/psych/json/tree_builder.rb: refactor
+
+ * ext/psych/lib/psych/visitors/json_tree.rb: refactor
+
+Sat May 22 03:53:05 2010 Satoshi Shiba <shiba@rvm.jp>
+
+ * cont.c (fiber_setcontext): Use swapcontext() instead longjmp().
+ [ruby-dev:41316] [Bug #3295]
+
+Fri May 21 19:11:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_convert, rb_nkf_guess): check too huge
+ string.
+
+Fri May 21 18:12:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_intern): C90 needs nonempty macro
+ arguments.
+
+Fri May 21 13:55:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBYARG_SHARED): shared library will not be
+ created unless enable-shared.
+
+ * ruby.c (ruby_init_loadpath_safe): use real path for non-shared
+ build.
+
+Fri May 21 12:25:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_float): use dtoa directly instead of stripping
+ needless trailing .0.
+
+ * numeric.c (flo_to_s): reverted. [ruby-dev:41341]
+
+Fri May 21 01:06:05 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (subtract_tv): if the rest is zero, should finish waiting
+ immediately.
+
+ * win32/win32.c (subtract): ditto.
+ based on a patch from Roger Pack in [ruby-core:27957].
+
+Thu May 20 22:49:04 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * re.c (rb_reg_s_union_m): update rdoc. [ruby-dev:41354]
+
+Thu May 20 22:08:28 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_f_caller): update rdoc. a patch from Nobuhiro IMAI
+ <nov at yo.rim.or.jp> in [ruby-dev:41348].
+
+Thu May 20 22:04:05 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (vm_backtrace_each): now takes an init function to distinguish
+ an empty stack from out of stack. [ruby-dev:41366]
+
+ * vm_eval.c (print_backtrace, rb_thread_backtrace): ditto.
+
+Thu May 20 20:47:46 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke): raise NoMethodError
+ when COM method is not found. [ruby-core:30160] [Bug #3277]
+
+ * test/win32ole/test_win32ole.rb (test_no_method_error): ditto.
+
+Thu May 20 16:17:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/psych/emitter: C99(gcc)-ism.
+
+Thu May 20 12:59:49 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/stream.rb: adding YAML streaming API for
+ infinite length streams.
+
+ * ext/psych/lib/psych.rb: refactoring for streaming API
+
+ * ext/psych/lib/psych/{handler, stream, tree_builder}.rb: ditto
+
+Thu May 20 02:12:20 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/emitter.c: output strings are automatically transcoded
+
+Wed May 19 23:36:57 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: [ruby-dev:41334] [Bug #3307] invalid result
+ on searching tcl.h/tk.h. Thanks, Masaya Tarui.
+
+Wed May 19 23:19:30 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (disconnect): closes the socket of a Net::IMAP
+ object only when it is not closed. [ruby-dev:41350]
+
+Wed May 19 20:09:38 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_f_caller): return [] instead of nil when the function
+ is called on toplevel. [ruby-dev:41348]
+
+Wed May 19 19:58:01 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: mswin/mingw ruby has socketpair(), but it's
+ not exist as such name in ruby static library, so mkmf.rb cannot
+ find it.
+
+Wed May 19 19:45:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * iseq_compile_each (NODE_DEFINED): put nil first to fix stack
+ consistency. [ruby-core:30293]
+ Now, lfinish[0] of defined_expr seems not to be used. Refactoring
+ may be needed.
+
+Wed May 19 16:55:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_num2ulong): use rb_big2ulong for data from
+ Bignum. Without this 32bit integer on 32bit environment
+ can't converted into long.
+ This fixes 1) and 2) of [ruby-dev:41289]
+
+Mon May 17 22:19:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * process.c: suppress warning for signed and unsigned type
+ inconsistency.
+
+ * ext/psych/parser.c: ditto.
+
+ * ext/sdbm/_sdbm.c: ditto.
+
+ * ext/syck/rubyext.c: ditto.
+
+Mon May 17 21:30:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * .gitignore: updated.
+
+Mon May 17 21:08:53 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (argv_size): merged into join_argv() to maintain the
+ agreement with it. removed code has a calculation bug.
+ fixed [Bug#2388]
+
+ * win32/win32.c (join_argv): calc and return the length of joined
+ argv.
+ the cause of the original bug was clarified by Masaya TARUI
+ <tarui AT prx.jp> and the solution was suggested by him, too.
+
+Mon Apr 5 09:20:08 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/iso_2022_jp.h: add CP50220.
+
+ * enc/trans/iso2022.trans: add converter for CP50220.
+
+Mon May 17 09:37:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#entries): returns pathname in
+ UTF-8 on Windows to allow FileUtils accessing all pathnames
+ internally.
+
+Mon May 17 01:07:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (rb_w32_check_imported): workaround for VC6.
+
+Sun May 16 22:21:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (mnew): initialize a field. a patch from Takahiro Kambe.
+ [ruby-dev:41312]
+
+Sun May 16 22:17:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (setup_exception): let SystemStackError#backtrace return an
+ single element array instead of string itself. [ruby-core:30196]
+
+Sun May 16 21:51:04 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (parser_read_escape, parser_tokadd_escape): allow a hex or
+ octal encoded character after \c. This seemed to be prohibited at
+ r13836, but its ChangeLog mentions nothing about this prohibition.
+ So I assume this prohibition is not intended. [ruby-core:27229]
+
+Sun May 16 21:14:04 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ruby/test_rubyoptions.rb (TestRubyOptions#test_segv_test):
+ fixes "NoMethodError: undefined method `[]=' for nil:NilClass"
+
+Sun May 16 17:16:09 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (proc_binding): don't propagate filename and line_no of
+ binding that is created from C level. [ruby-dev:41322]
+
+ * vm_eval.c (eval_string_with_cref): ditto.
+
+Sun May 16 15:09:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (rb_w32_check_imported): check if extension library to be
+ loaded imports from different ruby dll.
+
+Sun May 16 14:55:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (dln_find.o): fix dependency.
+
+Sun May 16 13:55:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_loaderror): use locale string, not ascii-8bit.
+
+Sun May 16 11:39:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/missing.h (signbit): add missing prototype.
+
+Sun May 16 10:49:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (rb_iconv_sys_fail): fix number of arguments.
+ a patch by Masaya TARUI <tarui AT prx.jp>.
+
+Sun May 16 02:24:27 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * configure.in: can not load libruby.so if gcc is used with
+ --enable-shared on AIX.
+
+Sat May 15 17:16:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (rb_iconv_sys_fail): raise BrokenLibrary if
+ errno is not set. [ruby-dev:41317]
+
+Fri May 14 07:27:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_float): strip ".0" from end for rubyspec.
+
+Fri May 14 01:17:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.c (rb_thread_struct): add a field for sigaltstack.
+
+ * thread_pthread.c (thread_start_func_1): initialize machine stack
+ information.
+
+ * thread.c (thread_start_func_2): set sigaltstack for each sub thread.
+ [ruby-core:24540] [ruby-core:30207]
+
+Thu May 13 21:40:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * missing/ffs.c (ffs): fixed for non-zero values.
+
+Thu May 13 18:45:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (get_write_fd): return primary fd if no
+ io is tied for writing.
+
+Thu May 13 18:15:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (swallow): should use more_char() instead of fill_cbuf().
+ suggested by akr.
+
+Thu May 13 17:56:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_set_echo, console_echo_p): use
+ primary fd. [ruby-dev:41309]
+
+Thu May 13 13:30:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_float): use minimal representation.
+
+ * numeric.c (ruby_dbl2cstr): split from rb_float_new.
+
+Thu May 13 13:09:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_vm_get_sourceline): moved from eval_intern.h for
+ vm_dump.c.
+
+Thu May 13 12:53:13 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (swallow): support text mode and UTF-16/32 as internal encoding.
+ [Bug #1576]
+
+ * io.c (io_shift_cbuf): read and throw it away when str is NULL.
+
+Thu May 13 09:45:27 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: link with ffs.obj.
+
+Thu May 13 07:37:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c: include unistd.h before sdbm.h for off_t.
+ fix compilation problem on FreeBSD 6.4.
+
+Wed May 12 23:48:37 2010 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_quad_pack): deprecated.
+ (rb_quad_unpack): ditto.
+
+Wed May 12 22:22:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_big_abs_find_minbit): use ffs().
+
+ * configure.in: check ffs().
+
+ * missing/ffs.c: new file.
+
+ * include/ruby/missing.h (ffs): declared.
+
+Wed May 12 16:43:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): fixed broken output including nuls.
+
+Wed May 12 16:25:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): exponent needs 2 digits.
+
+Wed May 12 16:02:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): fill lower zeros.
+
+Wed May 12 15:45:36 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/generator/ri.rb (generate): should load existing cache
+ before generating it.
+
+Wed May 12 15:04:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (BigMath#log): improved
+ precision and performance. [ruby-dev:41295]
+
+Wed May 12 11:39:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: test all IPPROTO_* constants for recent Win32
+ SDK.
+
+Wed May 12 10:57:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): make minimum string representation.
+ [ruby-core:30145]
+
+Wed May 12 09:21:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): fix wrong index for the lang
+ option's value 'N'. reported by Masaya TARUI via IRC.
+
+Tue May 11 23:07:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: test IPPROTO_IP and IPPROTO_IPV6 constants.
+
+ * ext/socket/mkconstants.rb: define macros for enum.
+
+ [ruby-dev:38849]
+
+Tue May 11 21:53:18 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rake/test_task_arguments.rb: makes ENV empty during tests
+ because ENV may change the behavior of Rake::TaskArguments.
+ [ruby-core:29984]
+
+Tue May 11 15:14:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_8.c: Add new alias UTF-8-HFS for UTF8-MAC.
+ http://www.gnu.org/software/emacs/NEWS.23.2
+
+Tue May 11 13:46:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (atan),
+ test/bigdecimal/test_bigmath.rb (test_atan): explicitly specify
+ the precision for calculating a reciprocal number of an argument.
+ [Bug #3267]
+
+Tue May 11 11:49:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/sdbm/sdbm.h (DBM): large file support on win32.
+ [ruby-core:23039]
+
+ * ext/sdbm/depend: objects depend on sdbm.h.
+
+Tue May 11 09:57:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (rb_vm_get_sourceline): add prototype.
+
+Tue May 11 09:53:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/psych/parser.c (PSYCH_TRANSCODE): get rid of bare use of gcc
+ extension.
+
+Tue May 11 01:20:43 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): Return strings encoded as
+ Encoding.default_internal if set.
+
+Mon May 10 23:50:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_unpack): add a missing break.
+
+Mon May 10 14:13:04 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (rb_big_abs_find_minbit): get rid of a warning of VC.
+
+Mon May 10 13:59:42 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_has_cancel_io): new
+ function.
+
+ * io.c (WAIT_FD_IN_WIN32): check only when it's not cancelable.
+
+Mon May 10 06:59:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (rdoc): rdoc should depend main. Moreover when XRUBY
+ is miniruby, it can run after miniruby is built.
+
+Mon May 10 03:36:56 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (eval_string_with_cref): propagate filename and line_no
+ of binding. [ruby-dev:38767] [ruby-core:28307]
+
+ * vm_core.h (rb_binding_t), proc.c: add filename and line_no fields to
+ preserve them.
+
+Mon May 10 02:58:33 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_compile_each), vm_insnhelper.c (vm_invoke_block,
+ vm_throw): allow "return" and "yield" even in singleton class
+ definition. based on a patch from wanabe <s.wanabe AT gmail.com>
+ for "return". [ruby-core:21379] [ruby-dev:40975]
+
+ * insns.def (defineclass): ditto (straightforwardly push block ptr,
+ instead of dfp ptr with special flag).
+
+ * vm_core.h (RUBY_VM_CLASS_SPECIAL_P): ditto (no longer needed).
+
+ * proc.c (proc_new): ditto (remove handling for special flag).
+
+ * bootstraptest/test_jump.rb: add tests for above.
+
+Mon May 10 02:29:51 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (fiber_switch): raise FiberError when returning to dead
+ fiber. [ruby-dev:40833]
+
+Mon May 10 02:07:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/thread.rb (ConditionVariable#wait): ensure to remove the current
+ thread from waiters. [ruby-core:29835]
+
+Mon May 10 00:54:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_set_raw): new method.
+
+ * ext/io/console/console.c (ttymode): reverted previous commit.
+
+Sun May 9 23:53:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_GC_GUARD_PTR): get rid of removal by
+ optimization.
+
+Sun May 9 23:07:53 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (proc_dup): copy blockprocval. proc_dup is used by
+ define_method, which made blockprocval be GC'ed mistakenly.
+ [ruby-core:30023]
+
+Sun May 9 16:28:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (fiber_initialize_machine_stack_context): try to release
+ unnecessary fibers and retry to create. based on a patch from
+ masaya tarui at [ruby-dev:41230].
+
+Sun May 9 08:32:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/generator/generator.c (fbuffer_inc_capa):
+ fix the use of REALLOC_N. [ruby-dev:41227]
+
+Sun May 9 09:30:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/{generator/generator.c,parser/parser.rl}: fixed indent.
+
+ * ext/json/{generator,parser}/depend: added.
+
+Sun May 9 09:15:03 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb: use IPv4 for
+ test_imaps_post_connection_check. [ruby-dev:41189]
+
+Sun May 9 08:24:24 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (disconnect): terminates @receiver_thread even if
+ @sock.shutdown raises an exception. [ruby-dev:34881]
+
+Sun May 9 06:15:21 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (nogvl_copy_stream_sendfile): ISO C90 forbids mixed
+ declarations and code.
+
+Sun May 9 02:57:02 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/lib/fiddle.rb: only require DL if it hasn't been required
+ yet. [ruby-core:30095]
+
+Sun May 9 01:15:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (stackgrowdirection): removed duplicated code, use
+ STACK_UPPER macro instead.
+
+ * gc.h (STACK_DIR_UPPER): moved from thread_pthread.c.
+
+Sun May 9 00:35:56 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/dl/test_base.rb (libc_so, libm_so): supports solaris.
+
+Sat May 8 19:03:31 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec (config): . is no longer in $:.
+
+Sun May 9 00:27:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_aset): fixed argument type.
+
+Sat May 8 23:09:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS (io/console): IO#noecho and IO#raw without block are
+ obsolete already. [ruby-dev:41226]
+
+ * ext/io/console/console.c (ttymode): save duped file descriptors
+ and restore tty modes using them, so that original modes can be
+ restored even if original fds are closed. [ruby-dev:41225]
+
+Sat May 8 13:48:31 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_fetch, rb_ary_splice, rb_ary_store): Improve
+ IndexError
+ messages [ruby-core:28394]
+
+ * hash.c (rb_hash_fetch_m): Improve KeyError message
+
+Sat May 8 13:11:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/user_interaction.rb (Gem::StreamUI#ask_for_password):
+ use io/console.
+
+ * ext/io/console: imported. [ruby-dev:40897]
+
+Sat May 8 12:25:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_systmpdir): moved from ext/tmpdir.
+
+ * ext/etc/etc.c (etc_sysconfdir): added.
+
+ * lib/rubygems/config_file.rb, lib/tmpdir.rb: use etc.
+
+Sat May 8 11:07:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpAlloc): ensure buf does not get
+ collected. based on a patch masaya tarui at [ruby-dev:41213].
+
+Sat May 8 10:03:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (BasicSocket#connect_address): MacOS X 10.6
+ returns "::ffff:a.b.c.d" for IPv4-mapped IPv6 address.
+ [ruby-dev:41215] patch by Tomoyuki Chikanaga.
+
+Fri May 7 23:51:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.h: bump up to 1.9.3.
+
+Fri May 7 11:30:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (install-man): install mdocs directly without
+ temporary files. [ruby-dev:41204]
+
+Fri May 7 09:16:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/extconf.rb (get_tclConfig_dirs): glob with EXEEXT.
+
+ * ext/tk/extconf.rb (search_tclConfig): fixed typo.
+
+Fri May 7 06:45:28 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: search directories on PATH, only if containing
+ tclsh or wish command (probably right fix for [ruby-core:30010]).
+
+Fri May 7 03:40:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): fix to check overflow.
+
+Thu May 6 22:19:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * cont.c: define FIBER_USE_NATIVE only when _WIN32_WINNT >= 0x0400
+ on Windows because Fiber APIs are supported only such building
+ (and running) environments.
+ [ruby-dev:41192]
+
+Thu May 6 19:13:43 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/openssl/test_ec.rb: added test_dsa_sign_asn1_FIPS186_3. dgst is
+ truncated with ec_key.group.order.size after openssl 0.9.8m for
+ FIPS 186-3 compliance.
+
+ WARNING: ruby-openssl aims to wrap an OpenSSL so when you're using
+ openssl 0.9.8l or earlier version, EC.dsa_sign_asn1 raises
+ OpenSSL::PKey::ECError as before and EC.dsa_verify_asn1 just returns
+ false when you pass dgst longer than expected (no truncation
+ performed).
+
+ * ext/openssl/ossl_pkey_ec.c: rdoc typo fixed.
+
+Thu May 6 18:12:43 2010 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (fiber_setcontext): Fix last commit.
+
+Thu May 6 17:16:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (rb_localtime_r2): get rid of infinite loop bug of
+ localtime() on x86_64-darwin. [ruby-core:30031]
+
+Thu May 6 15:56:12 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/*: Adding fiddle library to wrap libffi
+ * test/fiddle/*: testing fiddle extension
+ * ext/dl/lib/dl.rb: Requiring fiddle if it is available
+ * ext/dl/lib/dl/callback.rb: using Fiddle if it is available
+ * ext/dl/lib/dl/func.rb: ditto
+
+Thu May 6 15:04:37 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_match_m): add description about optional
+ position parameter. [ruby-list:47064]
+ patched by KISHIMOTO, Makoto <ksmakoto AT dd.iij4u.or.jp>
+
+Thu May 6 14:12:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/tmpdir.rb: test RUBY_PLATFORM for loading tmpdir.so to avoid
+ LoadError.
+
+Thu May 6 12:41:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: add rationalize methods of Complex, Float, Integer, NilClass,
+ and Rational classes.
+
+Thu May 6 12:12:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README: update.
+
+Thu May 6 03:34:29 2010 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: apply FIBER_USE_NATIVE patch. This patch improve
+ Fiber context switching cost using system APIs. Detail comments
+ are written in cont.c.
+
+Thu May 6 02:16:48 2010 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c (rb_unlink_method_entry, rb_sweep_method_entry):
+ added. Unlinked method entries are collected to
+ vm->unlinked_method_entry_list. On the GC timing, mark all method
+ entries which are on all living threads. Only non-marked method
+ entries are collected. This hack prevents releasing living method
+ entry.
+ [Performance Consideration] Since this Method Entry GC (MEGC)
+ doesn't occur frequently, MEGC will not be a performance bottleneck.
+ However, to traverse living method entries, every control frame push
+ needs to clear cfp->me field. This will be a performance issue
+ (because pushing control frame is occurred frequently).
+ Bug #2777 [ruby-dev:40457]
+
+ * cont.c (fiber_init): init cfp->me.
+
+ * gc.c (garbage_collect): kick rb_sweep_method_entry().
+
+ * method.h (rb_method_entry_t): add a mark field.
+
+ * vm.c (invoke_block_from_c): set passed me.
+
+ * vm.c (rb_thread_mark): mark cfp->me.
+
+ * vm_core.h (rb_thread_t): add a field passed_me.
+
+ * vm_core.h (rb_vm_t): add a field unlinked_method_entry_list.
+
+ * vm_insnhelper.c (vm_push_frame): clear cfp->me at all times.
+
+ * vm_insnhelper.c (vm_call_bmethod): pass me.
+
+ * bootstraptest/test_method.rb: add a test.
+
+Wed May 5 22:22:51 2010 wanabe <s.wanabe@gmail.com>
+
+ * compile.c (iseq_set_sequence): fix check range of ic_index.
+ a patch from Tomoyuki Chikanaga. #3236
+
+Wed May 5 21:49:31 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * dln.c (aix_loaderror): use execerror for load error on AIX.
+ This can avoid SEGV reported by Perry Smith. [Bug #2063]
+
+Wed May 5 20:37:54 2010 wanabe <s.wanabe@gmail.com>
+
+ * thread_win32.c (w32_wait_events): get GVL before handle interrupt
+ event. [ruby-core:27199], [ruby-core:29698]
+
+Wed May 5 19:00:01 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: revert. enbugged by last commit.
+ ([ruby-dev:41133], [ruby-dev:41134], [ruby-core:30010])
+
+ * ext/tk/README.tcltklib: ditto.
+
+Wed May 5 15:54:35 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_stat): use STAT macro instead of calling stat() directly.
+ reported by Bill Kelly. [ruby-core:30012]
+
+Wed May 5 11:43:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/test_io.rb (megacontent-copy_stream): get rid of
+ deadlock.
+
+Wed May 5 07:27:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_mark_method_entry): renamed.
+
+Wed May 5 05:20:27 2010 Koichi Sasada <ko1@atdot.net>
+
+ * method.h, vm_method.c: rename some internal functions related to
+ rb_method_entry_t.
+ rb_add_method_me() -> rb_method_entry_set().
+ rb_get_method_entry() -> rb_method_entry_without_cache().
+ rb_gc_mark_method_entry() -> rb_mark_method_entry().
+
+ * class.c, proc.c: ditto.
+
+Tue May 4 22:59:48 2010 wanabe <s.wanabe@gmail.com>
+
+ * compile.c (iseq_build_body): update iseq->ic_size.
+ a patch from Tomoyuki Chikanaga. see #3236.
+
+Tue May 4 18:51:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (name_err_mesg_to_str): preserve encoding of inspection.
+ [ruby-core:29948]
+
+Tue May 4 18:38:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb (test_copy_stream):
+ IO.copy_stream support binmode only currently.
+ [ruby-core:23724]
+
+Tue May 4 12:46:09 2010 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (argument_error): push correct backtrace.
+ Bug #2281 [ruby-core:26333]
+
+Tue May 4 12:38:40 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_inspect): use rb_str_cat2 and
+ rb_str_append.
+
+ * ext/socket/ancdata.c (ancillary_inspect): refined.
+
+Tue May 4 11:48:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_inspect): use rb_str_cat2 and
+ rb_str_append.
+
+Tue May 4 07:52:33 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/net/http.rb (Net::HTTPResponse#read_chunked): ensure to skip the
+ last newline of chunk. [ruby-core:29229]
+
+ * test/net/http/utils.rb: add an option for chunked response test.
+
+ * test/net/http/test_http.rb: add tests for chunked response.
+
+Tue May 4 03:37:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Update nkf 2010-04-28.
+
+Mon May 3 21:08:16 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * sample/README: update file list. [ruby-core:28981]
+
+Mon May 3 08:15:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/emitter.c (syck_scan_scalar): set SCAN_WHITEEDGE flag
+ when scalar begins with newline. patches from Dave B <daz AT
+ d10.karoo.co.uk> at [ruby-core:23019] and caleb clausen at
+ [ruby-core:25851]. [ruby-core:23006][ruby-core:29925]
+
+Sun May 2 17:52:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/task.rb (RDoc::Task): should not override newer code.
+
+Sun May 2 17:25:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): ignore signedness.
+
+Sun May 2 12:04:30 2010 wanabe <s.wanabe@gmail.com>
+
+ * iseq.c (iseq_load): allow filepath to be nil.
+ a patch from Tomoyuki Chikanaga in [Bug #3229].
+
+Sun May 2 08:54:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::NEEDS_BINMODE): check if O_BINARY value instead
+ of fragile check by platform name.
+
+Sun May 2 07:38:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (dir_config): should not modify argument arrays
+ themselves.
+
+Sat May 1 22:53:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#size): stat by path name when it is
+ closed.
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ keep the first trace.
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ fixed filtering. [ruby-core:29908]
+
+Sat May 1 16:46:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_IsInfinite): don't use
+ non-ascii character.
+
+Sat May 1 14:08:29 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/server.rb: Fix bug when serving gems.
+
+Sat May 1 14:05:36 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Upgrade to RDoc 2.5.8.
+
+Sat May 1 09:43:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ filter out traces in minitest directory. [ruby-core:29908]
+
+Sat May 1 06:42:57 2010 wanabe <s.wanabe@gmail.com>
+
+ * win32/win32.c: add declaration of wstati64 for gcc.
+
+Sat May 1 02:41:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * merge some patches from win32-unicode-test branch.
+ see #1685.
+
+ * file.c, include/ruby/intern.h (rb_str_encode_ospath): new function
+ to convert encoding for pathname.
+
+ * win32.c, include/ruby/win32.h (rb_w32_ulink, rb_w32_urename,
+ rb_w32_ustati64, rb_w32_uopen, rb_w32_uutime, rb_w32_uchdir,
+ rb_w32_umkdir, rb_w32_urmdir, rb_w32_uunlink): new functions to
+ accept UTF-8 path.
+
+ * win32/win32.c (rb_w32_opendir, link, rb_w32_stati64, rb_w32_utime,
+ rb_w32_unlink): use WCHAR path internally.
+
+ * file.c (rb_stat, eaccess, access_internal, rb_file_s_ftype,
+ chmod_internal, rb_file_chmod, rb_file_chown, utime_internal,
+ rb_file_s_link, unlink_internal, rb_file_s_rename): use UTF-8 version
+ functions on Win32.
+
+ * file.c (apply2files, rb_stat, rb_file_s_lstat, rb_file_symlink_p,
+ rb_file_readable_p, rb_file_writable_p, rb_file_executable_p,
+ check3rdbyte, rb_file_identical_p, rb_file_chmod, rb_file_chown,
+ rb_file_s_link, rb_file_s_symlink, rb_file_s_rename): call
+ rb_str_encode_ospath() before passing the path to system.
+
+ * io.c (rb_sysopen): ditto.
+
+ * dir.c (dir_chdir, dir_s_mkdir, dir_s_rmdir): ditto.
+
+Sat May 1 00:26:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ assertion message must be String or Proc. suggested by caleb
+ clausen at [ruby-core:29884].
+
+Sat May 1 00:14:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_io.rb: skip false tests on Windows.
+ [ruby-core:29886]
+
+Fri Apr 30 22:46:27 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * math.c: Math::DomainError < StandardError [ruby-core:29855]
+
+Fri Apr 30 21:40:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/test_open3.rb (TestOpen3#test_commandline): use simple
+ command via shell. [ruby-dev:41100]
+
+Fri Apr 30 15:38:45 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: better support for MinGW environment.
+
+Fri Apr 30 12:05:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c (file_expand_path): call rb_str_set_len before BUFCHECK to
+ prevent rb_str_resize in BUFCHECK discard the content.
+
+Fri Apr 30 11:48:31 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * string.c (rb_str_sub_bang): String#sub! now raises an error when
+ called on a frozen string, even if no change is made.
+ See [ruby-core:23657]
+
+Fri Apr 30 11:40:44 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * eval.c (make_exception, rb_obj_extend): Fix error messages in case
+ of wrong
+ number of arguments
+
+ * file.c (rb_f_test, rb_file_s_umask): ditto
+
+ * numeric.c (int_chr, num_step): ditto
+
+ * process.c (rb_f_sleep): ditto
+
+ * re.c (rb_reg_initialize_m): ditto
+
+ * signal.c (rb_f_kill, sig_trap): ditto
+
+ * string.c (rb_str_aref_m, rb_str_aset_m, rb_str_count,
+ rb_str_delete_bang,
+ rb_str_slice_bang, rb_str_sub_bang, str_gsub): ditto
+
+ * proc.c (curry): rdoc fix
+
+Fri Apr 30 04:09:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (TIMET_MAX): should be time_t, not unsigned_time_t.
+
+Fri Apr 30 03:59:08 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (rb_time_unmagnify_to_float): should cast.
+
+Fri Apr 30 03:38:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (fix_mul): the width of fixnum is same as long's on all
+ platforms.
+
+Fri Apr 30 03:17:20 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Improve algorithm for Matrix#determinant and
+ Matrix#rank
+ {determinant,det,rank}_e are now deprecated. [ruby-core:28273]
+ Also fixes a bug in Determinant#rank (e.g. [[0,1][0,1][0,1]])
+ Matrix#singular?, Matrix#regular? now raise on rectangular matrices
+ and use determinant instead of rank.
+
+Fri Apr 30 00:52:56 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): define some constants to select
+ collect code for win64.
+
+Thu Apr 29 20:10:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/test_open3.rb (test_commandline): use dump instead of
+ shellwords. [ruby-core:23797]
+
+Thu Apr 29 18:39:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/thwait.rb (ThreadsWait#join): refined rdoc again.
+ [ruby-core:29863] [ruby-dev:41092]
+
+Thu Apr 29 14:46:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby: use more descriptive assertions.
+
+ * test/ruby: fixed nonsense assertions.
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ reverted. [ruby-core:29872]
+
+Thu Apr 29 12:33:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/thwait.rb (ThreadsWait#join): refined rdoc. [ruby-core:29863]
+
+Thu Apr 29 12:16:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert): reject
+ non-boolean values. [ruby-core:29868]
+
+Thu Apr 29 11:20:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (seek_before_access): renamed. see [ruby-core:29861].
+
+ * io.c (rb_io_s_binread): fixed rdoc. parts of a patch from Roger
+ Pack in [ruby-core:29861].
+
+Thu Apr 29 03:50:49 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/utils.rb: Fixing an incompatibility with
+ reflection methods returning Symbols. Patch by
+ HD Moore. [ruby-core:29821]
+
+Wed Apr 28 23:53:15 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/thwait.rb: revise rdoc. a patch from Roger Pack in
+ [ruby-core:27362].
+
+Wed Apr 28 23:21:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Update to JSON 1.4.2.
+
+Wed Apr 28 22:53:57 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread. (rb_thread_terminate_all): revert r24591 which caused SEGV
+ sometimes. [ruby-dev:40936] [ruby-core:27245] [ruby-core:27416]
+
+Wed Apr 28 22:26:55 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/psych/visitors/test_yaml_tree.rb (test_struct_const): remove
+ Struct::Foo which affects test/ruby/test_struct to warn redefining
+ constant.
+
+Wed Apr 28 18:04:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_timespec): use rb_check_funcall.
+
+Wed Apr 28 17:14:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/extconf.rb: CMSG_ macros are broken on 64bit darwin,
+ because of use of __DARWIN_ALIGN.
+
+Wed Apr 28 16:44:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h ({RSTRING,RSTRUCT,RBIGNUM}_LENINT): check long
+ to cast to int.
+
+Wed Apr 28 16:28:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/unixsocket.c (sendmsg_blocking, recvmsg_blocking):
+ define only when used.
+
+ * ext/socket/rubysocket.h: non-implemented method definitions need
+ to be shared.
+
+Wed Apr 28 10:27:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (ruby_vsnprintf, ruby_snprintf): suppress warnings.
+ why return int in spite of the arguments of size_t?
+
+Wed Apr 28 09:49:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/compile_prelude.rb: enable optimization.
+
+Wed Apr 28 09:43:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (warn_balanced): do not warn for EXPR_ENDFN.
+
+Tue Apr 27 23:57:04 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (ruby_cleanup): add exception guard around code running
+ signal handler (of r27513). Absence of the guard made
+ bootstraptest/test_thread.rb fail sometimes.
+
+Tue Apr 27 22:55:29 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * insns.def (onceinlinecache): add exclusion control for a region
+ between onceinlinecache and setinlinecache. [ruby-dev:39768]
+
+Tue Apr 27 22:40:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * iseq.c (set_relation): do not use top_wrapper as bottom of cref,
+ which caused constant lookup error when "wrapped load" is used;
+ instead, use Object as bottom, and push top_wrapper on Object.
+ [ruby-core:25039]
+
+Tue Apr 27 21:24:40 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (ruby_cleanup): before cleanup, check signal buffer and run
+ handler if any. [ruby-core:20970]
+
+ * thread.c (rb_threadptr_check_signal): separated from
+ timer_thread_function.
+
+Tue Apr 27 18:00:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP#rcptto_list): fixed typo.
+ [ruby-core:29809]
+
+Tue Apr 27 12:44:23 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 2.5.7. Fixes #1318 and ruby-core:29780.
+
+Tue Apr 27 10:54:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_read_escape): deny extra character escapes.
+ [ruby-core:27228]
+
+Tue Apr 27 06:20:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c (select_internal): IO which cbuf is not empty is readable.
+
+Tue Apr 27 00:07:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (program): check void_expr when rb_parse_in_main().
+ [ruby-dev:38717]
+
+Mon Apr 26 20:11:05 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c, rational.c, lib/cmath.rb, lib/date.rb lib/date/delta*:
+ reverted r27484-27486. now official spec.
+
+Mon Apr 26 15:42:59 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/json/generator/generator.c (convert_UTF8_to_JSON_ASCII): get rid
+ of a warning.
+
+Mon Apr 26 13:11:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ripper_get_value): escape Qundef.
+
+Mon Apr 26 12:42:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (warn_balanced): warn according to last state.
+
+Mon Apr 26 09:05:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Update to JSON 1.4.1.
+
+Sun Apr 25 23:50:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (ruby_dup): update max fd.
+
+Sun Apr 25 21:56:49 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (fetch_internal): do not quote message data item
+ names. Thanks, Eric Hodel. [ruby-core:23508]
+
+Sun Apr 25 15:59:02 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb: reverted experimental r23900.
+
+Sun Apr 25 15:51:00 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c, rational.c: reverted experimental r24565.
+
+Sun Apr 25 15:34:48 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/delta*: reverted experimental r24567 and
+ r25393.
+
+Sun Apr 25 11:02:20 2010 wanabe <s.wanabe@gmail.com>
+
+ * hash.c (ruby_setenv): putenv on msvcrt.dll can't remove empty value.
+
+Sat Apr 24 23:40:50 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb: use [""].pack("p").size to detect the pointer size.
+
+Sat Apr 24 21:07:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/psych/test_psych.rb: don't leave temporary files.
+
+Sat Apr 24 16:27:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (RUBY_PROGRAM_VERSION): added
+
+ * tool/rbinstall.rb: expand target file name.
+
+ * template/fake.rb.in: no need for hook if extmk.
+
+Sat Apr 24 14:40:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c: raise IOError when byte oriented operations occur with
+ non-empty character buffer.
+ [ruby-dev:40493] [ruby-dev:40506]
+
+Sat Apr 24 13:06:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (get_arglen): skip the last terminator of argv before
+ checking environ.
+
+ * ruby.c (get_arglen): duplicate environ area if setenv and unsetenv
+ are provided.
+
+ * ruby.c (set_arg0): keep empty strings.
+
+Sat Apr 24 09:44:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/yaml2byte.c (bytestring_append, bytestring_extend):
+ removed wrong extra assignments. a patch from Marcus Rueckert
+ <darix AT opensu.se> at [ruby-core:29759].
+
+Sat Apr 24 00:41:52 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * process.c (rb_f_fork): remove after_exec() which sometimes caused
+ two timer threads started. [ruby-core:25217]
+
+ * signal.c: use pthread_sigmask() instead of sigprocmask().
+ sigprocmask() is unspecified behavior on multi-thread programs.
+ [ruby-core:25217]
+
+Sat Apr 24 00:36:05 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/dl/test_base.rb: add kfreebsd support. based on a patch from
+ Petr Salinger in [ruby-core:29769].
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=560293
+
+Sat Apr 24 00:14:41 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl_session.c (SSL_SESSION_cmp): remove static for
+ loopy version of openssl (0.9.8l?).
+
+Fri Apr 23 23:27:17 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_config.c: fix compilation failure with
+ OpenSSL 0.9.8.
+
+Fri Apr 23 17:29:35 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_config.c: OpenSSL 1.0.0 support.
+ [ruby-core:29256]
+
+ * ext/openssl/extconf.rb: check some functions added/removed at
+ OpenSSL 1.0.0.
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_load): use engines which
+ exists.
+
+ * ext/openssl/ossl_ssl_session (SSL_SESSION_cmp): removed at 1.0.0,
+ so implement compatible function here.
+
+Fri Apr 23 14:37:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb (Gem::QuickLoader.load_full_rubygems_library):
+ get rid of creating same regexps many times.
+
+ * lib/rubygems/custom_require.rb (Kernel#require): ditto.
+
+Fri Apr 23 14:07:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * doc/etc.rd, doc/etc.rd.ja: moved from ext/etc.
+
+ * ext/etc.c (Init_etc): fixed rdoc.
+
+Fri Apr 23 11:31:25 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 2.5.6.
+
+Fri Apr 23 04:11:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ripper/test_parser_events.rb (test_unterminated_regexp):
+ separate test.
+
+Fri Apr 23 01:47:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_wopen): shouldn't use FILE_FLAG_OVERLAPPED with
+ normal file. #1807, #2510, #2549
+
+Fri Apr 23 01:28:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (ubf_handle): remove unused typedef.
+
+Thu Apr 22 23:10:59 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (mnew): fix wrong error message when Kernel#public_method
+ receives name of private method. [Bug #2425]
+
+Thu Apr 22 22:56:42 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_thread.rb: fix test. [Bug #2342]
+
+Thu Apr 22 21:50:17 2010 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/ext/multi-irb.rb: fix multi-irb running
+ parallelly. [ruby-dev:41031] [Bug #3182]
+
+Thu Apr 22 17:13:34 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems 1.3.7.pre.1 (as 1.3.6.1).
+
+Thu Apr 22 16:43:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (warn_balanced): removed false warning.
+
+ * parse.y (parser_yylex): skip whitespaces after method name.
+
+Wed Apr 22 02:16:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.[ch]: replace _DEBUG with BIGDECIMAL_DEBUG
+ to prevent activating debugging code when compiled with -DEBUG flag
+ on Windows. [ruby-core:22989] #1308
+
+Wed Apr 21 21:24:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/sha2/extconf.rb: check SHA256_CTX and SHA512_CTX to fix
+ compilation failure on OpenBSD 4.4.
+
+Wed Apr 21 15:13:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_getc): fix incomplete character immediately before EOF
+ with newline converter. [ruby-dev:41024]
+
+Wed Apr 21 13:44:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (regexp): check each fragments. [ruby-core:27374]
+
+Wed Apr 21 13:36:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): reverted r27388 due to backward
+ compatibility.
+
+ * parse.y (parser_yylex): warn confusing binary operators after
+ local variable.
+
+Wed Apr 21 11:53:47 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 2.5.5. Fixes bugs in ri, Darkfish and
+ rdoc option handling.
+
+Wed Apr 21 11:31:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): abandoned EXPR_VCALL.
+
+Wed Apr 21 03:17:17 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_getc): set read_encoding to resulted one character
+ string. [ruby-dev:41023]
+
+Wed Apr 21 00:29:39 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (bigmul1_karatsuba): fix calculation order to prevent
+ underflow. [ruby-core:29088]
+
+Wed Apr 21 00:26:17 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (NODE_NEXT, NODE_REDO): add dummy putnil instruction to
+ fix stack consistency error. [ruby-core:28172]
+
+ * bootstraptest/test_jump.rb: add a test for above.
+
+Wed Apr 21 00:16:44 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/zlib/zlib.c (rb_deflate_params): update buf_filled count because
+ deflateParams writes to out buffer. And, revert r18029 because the
+ flush was not needed now and emits garbage. [ruby-dev:40802]
+
+Wed Apr 21 00:01:05 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_method.c (rb_add_method_def): decrement alias count of
+ rb_method_definition_t to prevent memory leak. see
+ [ruby-dev:41021].
+
+Tue Apr 20 21:33:06 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/registry.rb (PredefinedKey#create): root key
+ name should be a string. fixed [ruby-core:28192]
+
+Tue Apr 20 19:25:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): fix for tLPAREN_ARG.
+
+Tue Apr 20 12:34:23 2010 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/{core, util}.rb (RFC822_DAYS, RFC822_MONTHS):
+ move the constant because used only util.rb.
+
+Tue Apr 20 12:24:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lex_state_e, IS_END, IS_SPCARG, parser_yylex): separate
+ the state after vcall. [ruby-core:29578]
+
+Tue Apr 20 01:03:00 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_fork.rb: add a test for [ruby-core:28924].
+
+Tue Apr 20 00:43:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): skip last directory separators.
+ [ruby-core:29627]
+
+Tue Apr 20 00:41:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (internal_{read,write}_func, rb_{read,write}_internal):
+ reverted r27265, since now rb_thread_blocking_region() preserves
+ errno.
+
+Mon Apr 19 23:14:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_thread_blocking_region, rb_thread_blocking_region_end):
+ preserve errno. [Bug #2606] [ruby-core:28924]
+
+Mon Apr 19 19:41:10 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::cp_r): backport r11156 from ruby_1_8.
+
+Mon Apr 19 19:18:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): reduced duplicated conditions.
+
+Mon Apr 19 13:58:04 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 2.5.4. Fixes #3169, #3160, #3023.
+
+Mon Apr 19 12:46:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/timeout.rb (Timeout#timeout): propagate errors to the
+ caller. [ruby-dev:41010]
+
+Mon Apr 19 00:27:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_method.c (rb_add_method_def): workaround fix for redefinition
+ of methods. This is because cfp->me uses the rb_method_entry
+ which is freed by redefinition of remove_method. Note that
+ reusing may cause another problem when the usage is changed.
+ [ruby-core:27320] [ruby-core:29464]
+
+Sun Apr 18 22:13:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (string_content): cond_stack and cmdarg_stack are VALUE.
+
+Sun Apr 18 18:07:47 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::IPv4::Regex): make it only accept 0 to 255.
+ [ruby-core:29501]
+
+Sun Apr 18 12:48:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): seems like a symbol-literal when spaces
+ are unbalanced. [ruby-core:29578]
+
+Sun Apr 18 12:32:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (string_content): preserve cond_stack and cmdarg_stack.
+ [ruby-core:29579]
+
+Sun Apr 18 05:50:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: defaulting binary string
+ format to "literal" format.
+
+Sun Apr 18 02:13:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (identify_identifier): add '_' to the regexp.
+
+Sat Apr 17 23:21:15 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: use AC_TRY_LINK instead of AC_TRY_COMPILE.
+ On Solaris it can compile with signbit but can't link.
+
+Sat Apr 17 20:34:09 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/envutil.rb: update Gem::ConfigMap to fake environment for
+ tests. Some test of rubygems had failed because envutil.rb changed
+ only RbConfig::CONFIG but not Gem::ConfigMap.
+
+Sat Apr 17 20:31:08 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/ruby-lex.rb (identify_identifier): allow multibyte character
+ as identifier. [ruby-core:27275]
+
+Sat Apr 17 09:19:27 2010 wanabe <s.wanabe@gmail.com>
+
+ * compile.c (iseq_compile_each): fix splat condition in NODE_WHEN.
+ [Bug #2226]
+
+Sat Apr 17 08:57:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP#rcptto_list): continue when at least
+ one RCPT is accepted. based on a patch from Kero van Gelder at
+ [ruby-core:26190].
+
+Sat Apr 17 07:43:55 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/thread/test_queue.rb (TestQueue#grind): fix typos.
+
+Sat Apr 17 07:27:53 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add Array#repeated_{combination,permutation} [Feature #2981]
+
+Sat Apr 17 05:30:22 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/core_ext.rb (yaml_as): supporting deprecated
+ "yaml_as" method
+ * ext/syck/lib/syck/tag.rb: ditto
+
+Sat Apr 17 05:25:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/coder.rb (scalar): supporting deprecated methods
+ * ext/psych/lib/psych/deprecated.rb: supporting deprecated
+ to_yaml_properties method
+
+Sat Apr 17 01:32:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (rb_io_rewind, rb_io_eof): add rdoc. based on a patch from
+ Roger Pack in [ruby-core:26771] [Bug #2377].
+
+Fri Apr 16 23:42:56 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_folderitem2_invokeverb.rb (test_invokeverb):
+ run test only when "Create Shortcut (&S)" menu is found.
+ [ruby-core:29550] [Bug #1602]
+
+Fri Apr 16 21:52:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (string_content, etc): counts of CMDARG_PUSH and POP were
+ inconsistent. [ruby-core:22637]
+
+Fri Apr 16 21:27:57 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_coerce): revert r23389,
+ which not only is unnecessary but also causes the inconsistency of
+ return type. [ruby-core:25706] [Bug #2129]
+
+Fri Apr 16 20:05:24 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/thread.rb (Queue#push, #pop, SizedQueue#push, #pop): remove
+ code that kicks waiting thread twice, which caused race and
+ deadlock. a patch from James M. Lawrence. [ruby-core:25537]
+
+ * test/thread/test_queue.rb: added.
+
+Fri Apr 16 20:01:47 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * .gitignore: updated.
+
+Fri Apr 16 16:51:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/file2lastrev.rb (VCS::SVN::get_revisions.): remind about
+ DOSISH, sometimes.
+
+Fri Apr 16 16:15:40 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_repeated_permutation): new method added. a patch
+ from Makoto Kishimoto in [ruby-core:29267] [ruby-core:28724]
+
+ * array.c (rb_ary_repeated_combination): ditto.
+
+Thu Apr 15 22:41:47 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_thread_priority, rb_thread_priority_set): fix rdoc.
+ Lower-priority thread may run even if there are higher-priority
+ threads. See [ruby-dev:40977].
+
+Thu Apr 15 22:33:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/uri/ftp.rb (URI::FTP#set_path): added to correct handling of
+ special case where path of ftp is relative. This converts relative
+ path to absolute one, because external representation of ftp path is
+ relative and internal representation is absolute. [ruby-core:24077]
+
+ * lib/uri/ftp.rb (URI::FTP#initialize): converts absolute to relative.
+
+ * lib/uri/generic.rb (URI::Generic#check_path): allow relative path
+ when scheme is ftp.
+
+Thu Apr 15 21:54:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/file2lastrev.rb: use backtick for ruby 1.8.
+
+Thu Apr 15 21:13:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/file2lastrev.rb: this should run with ruby 1.8.
+
+Thu Apr 15 20:41:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/file2lastrev.rb: make -q effective for files not version
+ controlled.
+
+Thu Apr 15 14:50:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): get rid of use of malloc from signal
+ handler by using ruby_engine_name. [ruby-core:29497]
+
+ * vm_eval.c (print_backtrace): file may be nil when segfaulted in
+ very early stage.
+
+ * vm_dump.c (bugreport_backtrace): ditto.
+
+Thu Apr 15 11:51:49 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (help): small fix.
+
+Wed Apr 14 22:09:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/source.rb: force_encoding("UTF-8") when the input
+ is already UTF-8. patched by Kouhei Sutou [ruby-core:23404]
+
+Wed Apr 14 18:23:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * configure.in (signbit): signbit is a macro in C99.
+
+Wed Apr 14 17:56:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_shift_cbuf): should terminate.
+ http://golf.shinh.org/p.rb?DECimal+number+to+BINary#Ruby
+
+Wed Apr 14 16:29:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (GET_STACK_BOUNDS): fixed macro argument names. a patch from
+ Satoshi Shiba <shiba AT rvm.jp> at [ruby-dev:40973].
+
+ * gc.h (ruby_get_stack_grow_direction): fixed prototype.
+
+ * thread_pthread.c (get_stack, ruby_stack_overflowed_p): both side
+ should be same type. [Bug #3145]
+
+Wed Apr 14 15:58:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_string_value_cstr): make NUL terminated if it is
+ not done.
+
+Wed Apr 14 12:56:21 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap (encode_utf7): encode & properly. Thanks, Kengo
+ Matsuyama. [ruby-dev:38063]
+
+Wed Apr 14 11:39:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/lib/syck/basenode.rb (Syck::BaseNode#match_path): fixed
+ library name.
+
+ * ext/syck/lib/yaml/syck.rb: split from ext/syck/lib/syck.rb for
+ backward compatibility.
+
+Wed Apr 14 09:24:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Refix [nkf-bug:21393]. (explicit -X)
+
+Tue Apr 13 20:36:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Fix: Windows Codepages wrongly convert
+ Halfwidth Katakana. [nkf-bug:21393]
+
+Tue Apr 13 15:00:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (make_seed_value): fix leading-zero-guard condition on
+ bdigit is smaller than 32bit.
+
+Tue Apr 13 13:57:36 2010 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/completion.rb (CompletionProc): fix [ruby-dev:40953]
+ [Bug #3126]. Thanks Kazuhiro NISHIYAMA.
+
+Tue Apr 13 09:32:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (transcode_loop): insert output the value when
+ fallback hash has a related key. [ruby-dev:40540]
+ [ruby-dev:40829] #3036
+
+ * transcode.c (rb_econv_prepare_opts): pass to newhash
+ a value with the key :fallback.
+
+Tue Apr 13 00:12:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * random.c (rand_init): use the absolute value of seed to
+ make srand(-2**40) portable with 32bit and 64bit.
+ [ruby-core:29292](2)
+
+Mon Apr 12 22:48:47 2010 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c (inspect_enumerator): don't raise for uninitialized
+ enumerator.
+
+Mon Apr 12 21:47:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * LEGAL: separated the section for parse.c. contributed by Paul
+ Betteridge in [ruby-core:29472].
+
+Mon Apr 12 09:19:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (fu_each_src_dest): ensure src is accessible.
+
+ * lib/fileutils.rb (fu_same): use File.identical? to get rid of
+ exceptions. [ruby-core:28141]
+
+ * lib/fileutils.rb (fu_have_st_ino): no longer used.
+
+ * lib/fileutils.rb (fu_have_st_ino): check if required method is
+ defined, instead of platform name.
+
+Mon Apr 12 05:10:20 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: New method Matrix.build [ruby-core:28272]
+
+Mon Apr 12 03:45:25 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Deprecate elements_to_{f/i/r}
+
+Mon Apr 12 03:30:29 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Handle coercion errors by raising TypeErrors
+ [ruby-core:26736]
+
+Mon Apr 12 00:51:21 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (rb_io_getline_fast, rb_io_getline_1): fix ARGF.lineno
+ behavior. [ruby-core:25205]
+
+ * test/ruby/test_argf.rb (TestArgf#test_lineno3): add a test for
+ above.
+
+Sun Apr 11 23:25:17 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * configure.in: can not load libraries if --with-opt-dir is used
+ on AIX. [Bug #3107]
+
+Sun Apr 11 14:44:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/ruby-lex.rb (RubyLex#getc): revert r10817, which caused
+ regression for handling case when there is no newline at the end of
+ file. [ruby-core:28248]
+
+Sun Apr 11 12:08:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_replicate): new encoding name must be valid
+ c-string. [ruby-dev:40954]
+
+Sun Apr 11 11:58:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (ftruncate): rename to get rid of conflict
+ with same name but non-LFS function on MinGW. [ruby-core:24757]
+
+Sun Apr 11 10:33:34 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 2.5.3. Includes r27288 and r27290.
+
+Sun Apr 11 09:31:39 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/syck/*: Moved test/yaml to test/syck since it's actually
+ testing the syck YAML engine.
+
+Sun Apr 11 08:56:44 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (setup_output_dir): compare by Time#to_i.
+ Cached created time doesn't have fractional times,
+ but FileStat#mtime has; so rdoc almost always judged files
+ are updated.
+
+Sun Apr 11 07:40:48 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (setup_output_dir): fix typo. [ruby-core:29415]
+
+Sun Apr 11 07:01:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (decode_www_form_component): validate.
+ [ruby-dev:40938]
+
+ * lib/uri/common.rb (decode_www_form): allow empty string.
+
+ * lib/uri/common.rb: fix nodoc for constant. [ruby-dev:40949]
+
+Sat Apr 10 21:26:22 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/markup/preprocess.rb (RDoc::Markup::PreProcess#handle):
+ use File.binread to avoid locale dependency.
+
+Sat Apr 10 15:18:26 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 2.5.2
+ * lib/rdoc/parser/ruby.rb (RDoc::Parser::Ruby): Don't parse rdoc
+ files, reverts r24976 in favor of include directive support in C
+ parser.
+
+Sat Apr 10 13:14:22 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/openssl/ossl_ssl.c (Init_ossl_ssl): add SSLContext#ssl_timeout=,
+ which allows net/https to specify timeout. [ruby-core:24812]
+
+Sat Apr 10 07:36:13 2010 wanabe <s.wanabe@gmail.com>
+
+ * vm_method.c (rb_add_method): clear attr.location before rb_ary_new3.
+ a patch from Masaya TARUI in [Bug #3108]
+
+Sat Apr 10 05:27:26 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/deprecated.rb: implementing Psych.quick_emit and
+ adding deprecation warnings.
+ * ext/psych/lib/psych/visitors/to_ruby.rb: supporting deprecated
+ yaml_initialize api.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: supporting deprecated
+ to_yaml api.
+
+Sat Apr 10 01:08:53 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: parse raises a TypeError when nil is passed in.
+
+Sat Apr 10 00:01:51 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/pty/lib/expect.rb: preserve buffer read, instead of discard.
+ based on a patch from Luiz Angelo Daros de Luca in
+ [ruby-core:23464].
+
+Fri Apr 9 23:58:58 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/pty/lib/expect.rb: raise an error when argument is unexpected
+ type. based on a patch from Luiz Angelo Daros de Luca in
+ [ruby-core:23464].
+
+Fri Apr 9 23:57:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/pty/lib/expect.rb: add rdoc. based on a patch from Luiz Angelo
+ Daros de Luca in [ruby-core:23464].
+
+Fri Apr 9 23:54:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/init.rb, lib/irb/lc/help-message,
+ lib/irb/lc/ja/help-message: add -w flag. [ruby-core:24594]
+
+Fri Apr 9 23:51:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal),
+ ext/socket/unixsocket.c (rsock_init_unixsock): check the result of
+ listen(2). based on a patch from Mike Pomraning. [ruby-core:23698]
+
+Fri Apr 9 21:22:10 2010 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/completion.rb (CompletionProc): irb will be stuck with
+ long variable name at completion. [Bug#1969]. refix [ruby-core:28366].
+
+Fri Apr 9 20:54:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (decode_www_form): don't ignore leading '?'.
+ [ruby-dev:40938]
+
+ * lib/uri/common.rb (decode_www_form): check whether argument is
+ valid application/x-www-form-urlencoded data.
+
+Fri Apr 9 20:29:13 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * dir.c (push_glob): clear up the previous commit (RB_GC_GUARD can
+ precede the last reference). [ruby-dev:40942]
+
+Fri Apr 9 20:05:05 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * dir.c (push_glob): add RB_GC_GUARD to prevent str being free'ed.
+ a patch from Masaya TARUI in [ruby-dev:40939]. [ruby-dev:40514]
+
+Fri Apr 9 10:53:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * compile.c (iseq_compile_each): stop hiding, and freeze unpopped
+ string nodes to allow method redefinition. [ruby-dev:40641]
+
+Fri Apr 9 01:26:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (internal_{read,write}_func, rb_{read,write}_internal):
+ preserve errno. a patch from Takehiro Kubo in [ruby-core:29340].
+ [ruby-core:28924]
+
+Fri Apr 9 01:12:07 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/completion.rb (CompletionProc): calling the method "methods"
+ may raise an exception. [ruby-core:28366]
+
+Thu Apr 8 14:33:24 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: --disable-install-doc should prohibit doxygen.
+
+Thu Apr 8 14:23:51 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: include errno.h before defining errnos.
+ see [ruby-core:29314]
+
+Thu Apr 8 11:45:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/yaml.rb: use Psych if only it is loaded already.
+
+ * lib/yaml.rb (YAML::EngineManager#yamler): set the result after
+ successfully switched.
+
+Thu Apr 8 07:22:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rand_init): ignore higher bits if all they are same as
+ the lower sign bit. [ruby-core:29292](2)
+
+Thu Apr 8 07:16:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/cmd/help.rb (IRB::ExtendCommand::Help#execute): use RI
+ interactive mode if no argument. [ruby-dev:39839]
+
+Wed Apr 8 02:33:55 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_permutation): Remove limitation for lengthy permutations
+ [ruby-core:29240]
+
+ * test/ruby/test_array.rb: ditto
+
+Wed Apr 7 23:33:55 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * misc/ruby-mode.el (ruby-mode-map): binded C-c C-c and C-c C-c C-u
+ to comment-region and uncomment-region. Thanks Michael Klishin!
+ [Feature #872] [ruby-core:20552]
+
+Wed Apr 7 21:44:14 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (ASCTIME): unused macro removed.
+
+Wed Apr 7 16:45:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): reverted r27244.
+
+Wed Apr 7 11:49:34 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/quickpath.rb (REXML::QuickPath::predicate):
+ fix regexp.
+
+Wed Apr 7 09:44:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): quote init-commands.
+
+ * configure.in (Makefile): `make ruby` builds ruby command
+ even if RUBY_INSTALL_NAME is customized or it has extension.
+
+Wed Apr 7 03:28:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc#{initialize,setup_output_dir}):
+ initialize @last_created and use it.
+
+Wed Apr 7 02:05:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in: not define $extout to make target in cwd.
+
+Tue Apr 6 23:01:35 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h: Introduce UNINITIALIZED_VAR() macro.
+ * thread.c (do_select): Use UNINITIALIZED_VAR() instead FAKE_FD_ZERO().
+ Also, remove FAKE_FD_ZERO completely. [Feature #3018]
+
+Tue Apr 6 14:53:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: check definition existence before defining
+ errno macros.
+
+ * win32/win32.c (errmap): define winsock errors mappings.
+ these are VC++10 support. see [ruby-core:29278]
+
+Tue Apr 6 21:55:25 2010 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: test localtime(3) overflow. [ruby-dev:40910]
+
+ * time.c (rb_gmtime_r): renamed from rb_gmtime.
+ (rb_localtime_r): renamed from rb_localtime.
+ (rb_localtime_r2): call rb_localtime_r and validate the result if
+ there is overflow problem.
+ (rb_gmtime_r2): call rb_gmtime_r and validate the result if there
+ is overflow problem.
+
+Tue Apr 6 11:21:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in: hooks for extconf.rb.
+
+Tue Apr 6 06:19:36 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/text.rb (REXML::Text.check): comment out
+ broken logic.
+
+Tue Apr 6 05:59:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/parsers/baseparser.rb (LETTER, DIGIT):
+ always use POSIX charclass.
+
+ * lib/rexml/parsers/baseparser.rb (NAMECHAR):
+ remove duplicated range.
+
+ * lib/rexml/xmltokens.rb (NCNAME_STR, NAMECHAR): ditto.
+
+ * lib/rexml/parsers/xpathparser.rb (PathExpr): ditto.
+
+ * lib/rexml/text.rb (REXML::Text#initialize):
+ initialize @parent.
+
+Mon Apr 5 19:54:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (make_regexp): use onig_new_with_source to keep
+ sourcefile and sourceline.
+
+ * re.c (onig_new_with_source): copied from onig_new in
+ regcomp.c for keep sourcefile and sourceline.
+
+Mon Apr 5 13:20:45 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/win32.c (EWOULDBLOCK): VC10 already
+ defined EWOULDBLOCK. based on a patch from Charlie Savage,
+ see [ruby-core:29255]
+
+Mon Apr 5 13:10:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/psych/lib/psych/core_ext.rb: remove before alias.
+
+ * ext/syck/lib/syck.rb: don't warn called by itself.
+
+Mon Apr 5 13:08:24 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb (each_export): VC10 support.
+ a patch from Charlie Savage in [ruby-core:29254]
+
+Sun Apr 4 22:18:32 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (cmp): optimize for fixnums.
+ (lt): use cmp.
+ (gt): ditto.
+ (le): ditto.
+ (ge): ditto.
+ (wlt): use wcmp.
+ (wgt): ditto.
+ (wle): ditto.
+ (wge): ditto.
+ (time_subsec): use wmod.
+
+Sun Apr 4 10:04:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/ruby.h: replace snprintf and vsnprintf by
+ ruby_snprintf and ruby_vsnprintf. [ruby-dev:40909]
+
+ * configure.in: don't check snprintf(3) and vsnprintf(3).
+
+ * include/ruby/missing.h: don't declare snprintf and vsnprintf.
+
+ * include/ruby/ruby.h: include stdarg.h.
+
+ * sprintf.c: include vsnprintf.c
+
+ * vsnprintf.c: renamed from missing/vsnprintf.c.
+
+ * vsnprintf.c: remove useless ifdefs.
+
+ * win32/mkexports.rb: use ruby_snprintf and ruby_vsnprintf.
+
+Sun Apr 4 09:44:01 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (lt): call <=> instead of <.
+
+Sun Apr 4 06:46:16 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/yaml: Moved to ext/syck/lib, Syck only uses Syck constant.
+ * lib/yaml.rb: Added an engine manager for choosing YAML engine.
+ * ext/syck/lib/syck/rubytypes.rb: squashed warnings when using Psych
+
+Sat Apr 3 22:47:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: don't define STRUCT_WIDEVAL.
+
+Sat Apr 3 18:15:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc#{setup,update}_output_dir): store mtimes
+ per files in the flag file.
+
+ * lib/rdoc/rdoc.rb (RDoc#normalized_file_list): skip already
+ processed and unmodified files.
+
+Sat Apr 3 15:09:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (rdoc): no force-update, and add RDOCFLAGS.
+
+ * lib/rdoc/options.rb (RDoc#parse): no-force-update option.
+
+Sat Apr 3 10:51:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): raise ArgumentError on nil, as the
+ documentation implies. [ruby-core:29075]
+
+ * random.c (rb_f_rand): mentioned the case of when max is nil.
+
+Sat Apr 3 06:56:11 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_product): Accept a block [ruby-core:29045]
+
+Sat Apr 3 04:46:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/file2lastrev.rb (VCS#relative_to): path and @srcdir may have
+ different relative-ness.
+
+Sat Apr 3 03:19:01 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/benchmark.rb (Benchmark::Tms#add): fix NameError.
+ [ruby-dev:40906]
+
+ * test/benchmark/test_benchmark.rb: add a test for above.
+
+Sat Apr 3 01:50:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser/ruby.rb (RDoc#make_message): no empty lines.
+
+ * lib/rdoc/stats.rb (RDoc::Normal#print_file): send to stdout and
+ flush always
+
+Sat Apr 3 00:03:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/class_module.rb (RDoc#merge): get rid of stack overflow.
+
+ * lib/rdoc/parser/c.rb (RDoc#handle_method): see source files in
+ source directory.
+
+Fri Apr 2 22:13:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb: reverted r27186 to add generators.
+
+Fri Apr 2 21:17:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS: added reverse_lookup option.
+
+Fri Apr 2 15:26:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_ri_driver.rb (with_dummy_pager): don't grasp
+ the terminal.
+
+Fri Apr 2 14:43:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc::Generator): defer by autoload.
+
+ * lib/rdoc/generator/darkfish.rb: use normal library instead of
+ gem.
+
+Fri Apr 2 14:26:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc#parse_files): don't branch by
+ RUBY_VERSION. reapplied r24990.
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc#parse_files): emacs local variables
+ are delimited by a semicolon. supported Vim style. reapplied
+ r24988 with fixing a typo for shebang.
+
+Fri Apr 2 14:16:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser/ruby.rb (RDoc::Parser::Ruby): parse also rdoc
+ files. reapplied r24976.
+
+ * lib/rdoc/parser/c.rb: fixed a small error in the documentation.
+ [ruby-core:24744] reapplied r24395.
+
+ * lib/rdoc/parser.rb (RDoc::Parser.binary?): blksize may be nil
+ and is irrelevant to whether a file is binary. TAB and newlines
+ would be usually considered to be included in text data.
+ reapplied r23071 and r24297.
+
+Fri Apr 2 13:59:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths): Gem::Enable has been
+ obsolete. reapplied r24599.
+
+ * lib/rdoc/ri/paths.rb: follows $ridir. reapplied r23554.
+
+ * lib/rdoc/ri/paths.rb (RDoc::HOMEDIR): expand_path deals with
+ platform dependent environments. reapplied r21312.
+
+Fri Apr 2 12:52:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/parser.rb (binary?): regression.
+
+Fri Apr 2 11:54:49 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_env): wrong calculation of the head of setenv
+ string. [ruby-core:29216]
+ a patch from Heesob Park in [ruby-core:29218]
+
+Fri Apr 2 08:24:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (ruby_setsid): split from proc_setsid.
+
+ * process.c (proc_daemon): use EXIT_SUCCESS instead of magic number.
+
+Fri Apr 2 07:00:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cptr.c (rb_dlptr_inspect): fix format specifiers.
+
+Fri Apr 2 05:38:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (InitVM): calls per-VM initialization in
+ single VM, but does nothing in MVM.
+
+Fri Apr 2 02:56:56 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: New instance methods:
+ empty? [ruby-core:26284], each, each_with_index [ruby-core:28400],
+ conjugate, conj, imaginary, imag, real, real?, rectangular, rect
+ [ruby-core:26285]
+
+ Removed compare_by*, inspect_org, cf [ruby-core:26268]
+
+ Matrix.empty: raise on negative sizes
+
+ Matrix.determinant: raise on rectangular matrices [ruby-core:28271]
+
+Thu Apr 1 17:17:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/iso2022.trans: CP50221 supports 8bit JIS.
+
+Thu Apr 1 16:44:00 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc, test/rdoc: Imported RDoc 2.5
+
+Thu Apr 1 14:30:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/utf_16{be,le}.c (utf16{be,le}_mbc_to_code): simplified.
+
+Thu Apr 1 14:07:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (BSD__hdtoa): don't use C99 macros. (FP_NORMAL etc)
+
+Thu Apr 1 13:30:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): support %a format. [ruby-dev:40650]
+
+ * missing/vsnprintf.c (BSD_vfprintf): ditto.
+
+ * missing/vsnprintf.c (cvt): ditto.
+
+ * util.c (BSD__hdtoa): added. This is 2-clause BSDL licensed
+ by David Schultz and from FreeBSD.
+
+ * LEGAL: add about hdtoa() in util.c.
+
+Thu Apr 1 13:24:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): return 0.0 if hexadecimal and
+ badcheck is FALSE: Float("0x1p+0") works, but "0x1p+0".to_f
+ doesn't. [ruby-dev:40650]
+
+ * util.c (ruby_strtod): allow hexadecimal integers.
+
+Thu Apr 1 13:20:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/scanf.rb: support %a format. [ruby-dev:40650]
+
+Thu Apr 1 12:04:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRE_TIMET_PREFIX): define if configure doesn't
+ defines it. [ruby-core:29190]
+
+Thu Apr 1 11:36:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_initialize): fixed a rdoc miss that textmode and
+ binmode flag explanation was reversed each other. a patch from
+ Heesob Park in [ruby-core:29166].
+
+Thu Apr 1 09:54:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RUBY_{DEFAULT,NEVER}_FREE): added.
+ [ruby-dev:40889]
+
+Thu Apr 1 04:55:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_big_abs_find_minbit): fix handling the last word.
+
+Thu Apr 1 04:30:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (long_mul): overflow condition changed.
+ (wi_mul): ditto.
+
+Wed Mar 31 23:33:29 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (long_mul): extracted from mul and avoid integer overflow.
+ (wi_mul): extracted from wmul and avoid integer overflow.
+
+Wed Mar 31 21:30:38 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: less bignum allocations.
+
+ * strftime.c (rb_strftime_timespec): defined to avoid rational for
+ nano second resolution time.
+
+Wed Mar 31 16:05:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rake/test_{package_task,rules,task_manager}.rb: use
+ temporary directories.
+
+Wed Mar 31 13:53:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rubygems/gemutilities.rb (setup, teardown):
+ Object#to_yaml must use syck on RubyGem.
+
+Wed Mar 31 06:57:14 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (timew2timespec): fix previous change.
+
+Wed Mar 31 00:32:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (wdivmod): renamed from wdivmodv. fix neg/pos and pos/neg.
+ (split_second): return number of seconds as wideval_t.
+ (timet2wv): new function.
+ (wv2timet): new function.
+ (timet2wideval): removed.
+
+Tue Mar 30 22:24:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: use more polymorphic operations.
+
+Tue Mar 30 22:12:38 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add URI.decode and URI.encode to Obsoleted methods,
+ and fix typos. [ruby-dev:40852]
+
+ * NEWS: add Time#subsec.
+
+Tue Mar 30 22:07:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: reorder wide value implementation.
+
+Tue Mar 30 22:00:44 2010 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb.rb: support [Feature#988], [ruby-core:21177].
+ * lib/irb/context.rb: fix Context#verbose?.
+
+Tue Mar 30 21:56:33 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: make wide value more polymorphic.
+
+Tue Mar 30 21:18:32 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/psych/extconf.rb: install psych .so to not psych/ but direct.
+ This prepends to install *.rb files to psych/psych.
+
+ * ext/psych/lib/psych.rb: require 'psych.so'.
+
+Tue Mar 30 20:55:14 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (w2v): renamed from w2xv.
+ (v2w): renamed from xv2w.
+ (rb_time_magnify): takes wideval_t.
+ (rb_time_unmagnify): returns wideval_t.
+
+Tue Mar 30 19:46:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/psych/lib: moved external library dependent files from lib.
+ [ruby-core:29129]
+
+Tue Mar 30 18:25:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_dirname): split from rb_file_s_dirname.
+
+ * load.c (rb_f_require_relative): use absolute path instead of
+ expanded path.
+
+Tue Mar 30 13:57:08 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * process.c (proc_daemon): Process.daemon should raise an error on
+ failure regardless of whether the implementation uses daemon(3)
+ or not. [ruby-dev:40832]
+
+Tue Mar 30 13:11:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/file2lastrev.rb (VCS::GIT_SVN): removed because git-log can
+ deal with git-svn repository faster than git-svn-info.
+
+ * tool/file2lastrev.rb (VCS#get_revisions): particular commands do
+ not depend on instance.
+
+Tue Mar 30 08:55:50 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/extconf.rb: Making library detection more agnostic.
+
+Tue Mar 30 08:10:59 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/psych.rb: Fix problem with empty and white-space only strings.
+ Thanks Peter McLain!
+ * test/psych/test_psych.rb: tests for change.
+
+Tue Mar 30 05:31:39 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/psych.rb: documentation updates. Thanks Peter McLain!
+ * lib/psych/{coder,tree_builder}.rb: ditto
+
+Tue Mar 30 03:56:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/psych/{emitter,parser,psych}.c: move variable
+ declaration to the first of the block.
+
+Mon Mar 29 21:47:44 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * prelude.rb, .document: Stuff in prelude.rb should be documented
+ as well.
+
+Mon Mar 29 20:23:05 2010 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/matrix.rb(Vector#each2, Vector#collect2): add type check for
+ Integer[Bug #2495].
+
+Mon Mar 29 19:45:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: wide value condition changed.
+
+Mon Mar 29 18:10:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (Numeric): accept rationals.
+
+Mon Mar 29 15:10:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#open): re-open with same mode and
+ options as initialize.
+
+Mon Mar 29 09:16:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c: change include order; ruby.h should be at first.
+
+Mon Mar 29 06:47:25 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/*: importing Psych to trunk
+ * test/psych/*: ditto
+ * lib/psych/*: ditto
+
+Sun Mar 28 10:03:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/scanf.rb: fix max width modifier for %f.
+
+Sun Mar 28 10:35:45 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.6.0 r5717.
+ * test/minitest/*.rb: ditto.
+
+Sun Mar 28 10:12:28 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_time_magnify): fix for LP64.
+
+Sun Mar 28 09:28:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/scanf.rb: fix %[egEFG] isn't accept.
+
+Sun Mar 28 09:53:02 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: rename small integer specialization related identifiers.
+
+Sun Mar 28 08:20:37 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (weq): specialize for small integer.
+ (wne): ditto.
+ (wlt): ditto.
+ (wgt): ditto.
+ (wle): ditto.
+ (wge): ditto.
+ (rb_time_magnify): ditto.
+ (rb_time_unmagnify): ditto.
+ (rb_time_unmagnify_to_float): new function to avoid rational for
+ Time#to_f and Time#-.
+
+Sun Mar 28 07:12:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (mul): condition refined.
+
+Sun Mar 28 02:14:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: fix previous commit.
+
+Sat Mar 27 23:17:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: use 64bit arithmetic even on platforms with 32bit VALUE.
+
+Fri Mar 26 23:52:07 2010 wanabe <s.wanabe@gmail.com>
+
+ * NEWS: add Thread#add_trace_func and Thread#set_trace_func.
+
+Fri Mar 26 22:58:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_initialize): initialize
+ store->ex_data.sk. a patch from Christian Holtje in
+ [ruby-core:28907]. [ruby-core:23971] [ruby-core:18121]
+
+Fri Mar 26 19:55:41 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * Makefile.in (DOXYGEN): Define a missing variable DOXYGEN. Build
+ has been failing when doxygen(1) is found by configure but the
+ variable is not defined by the system and make(1) does not allow
+ an empty command. ("@$(DOXYGEN)" was the cause)
+
+Fri Mar 26 19:28:03 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_hash.rb (test_recursive_key): recursive keys are
+ permitted now. [ruby-dev:40735]
+
+Fri Mar 26 12:36:10 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/yaml/basenode.rb: deprecating YPath methods
+
+ * lib/yaml/stream.rb: deprecating YAML::Stream#edit
+
+Fri Mar 26 12:29:28 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/yaml/encoding.rb: YAML.encode, YAML.decode are deprecated.
+
+ * lib/yaml/stringio.rb: yaml/stringio.rb is deprecated.
+
+ * lib/yaml/ypath.rb: YAML::YPath is deprecated.
+
+Fri Mar 26 04:52:19 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: fix [ruby-core:28901] [Bug #2997].
+ Thanks, Michael Graff.
+
+ * ext/tk/tcltklib.c: use xfree() for memories allocated by ALLOC().
+
+ * ext/tk/tkutil/tkutil.c: ditto.
+
+ * ext/tk/lib/tkextlib/version.rb: forgot updating.
+
+Thu Mar 25 23:53:22 2010 wanabe <s.wanabe@gmail.com>
+
+ * thread.c (thread_reset_event_flags): set flags to thread. [Bug #693]
+
+Thu Mar 25 23:17:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * file.c (rb_get_path_check): prefer #to_path over #to_str. a patch
+ originally written by me, and modified by Nobuyoshi Nakada.
+ [ruby-core:24257]
+
+Thu Mar 25 18:10:08 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: Array#{uniq,uniq!} can take a block. see [ruby-dev:37998]
+
+Thu Mar 25 17:21:49 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add IO#autoclose=, IO#autoclose?, IO#codepoints,
+ IO#each_codepoint.
+
+Thu Mar 25 14:50:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_{read,write}): fix handle leaks. based on
+ a patch from Heesob Park in [ruby-core:28919]. [ruby-core:28833]
+
+Thu Mar 25 12:37:37 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add Kernel#singleton_class.
+
+Thu Mar 25 11:34:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c, node.h, strftime.c, enc/trans/utf8_mac.trans:
+ added explicit casts for suppressing warnings.
+
+Thu Mar 25 11:34:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * test/ruby/test_dir_m17n.rb: HFS+ escapes invalid byte sequences of
+ filenames.
+
+Thu Mar 25 05:44:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_version): needs runnable CPP.
+
+Thu Mar 25 04:42:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (package): take a breath for HP-UX make
+ [ruby-core:28938].
+
+ * tool/make-snapshot (Dir.mktmpdir): for 1.8.6 backward compatibility.
+
+ * tool/make-snapshot (package): $: no longer contains ".", in trunk.
+
+Thu Mar 25 03:52:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/charset_alias.rb: update of URL. [ruby-dev:38360]
+
+Wed Mar 24 23:43:40 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (thread_create_core): let new thread inherit RUBY_EVENT_VM
+ of event_flags. [ruby-core:25191]
+
+ * thread.c (rb_threadptr_exec_event_hooks): delete RUBY_EVENT_VM if
+ all event_hooks are removed.
+
+Wed Mar 24 22:58:02 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * configure.in: revert the previous commit, which seemed to break make
+ install. The files of standard libraries are directly installed to
+ $(PREFIX)/lib/ruby instead of $(PREFIX)/lib/ruby/1.9.1
+
+Wed Mar 24 18:16:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LDSHARED, CPP): keep $(CC). [ruby-core:28912]
+
+Wed Mar 24 14:33:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): limit read size to 16KB if the file
+ seems to be console. [ruby-core:28902]
+
+Wed Mar 24 10:18:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): set length of string before calling
+ rb_enc_check because rb_enc_check scans its content.
+ This prevents warnings by valgrind.
+
+Tue Mar 23 23:58:51 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Incorporating the fixes from the recent
+ FasterCSV releases: 1.5.2 and 1.5.3. New parser
+ by Tim Elliott. [ruby-core:25038]
+
+Tue Mar 23 18:35:46 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * object.c (rb_obj_singleton_class): new method
+ Kernel#singleton_class. [ruby-core:21702]
+
+Tue Mar 23 01:13:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket: use rsock_ prefix for internal initialization functions.
+
+Mon Mar 22 20:32:22 2010 wanabe <s.wanabe@gmail.com>
+
+ * proc.c (rb_method_location): return attr's location if it is setup.
+ [Feature #2084]
+
+ * NEWS: follow above.
+
+ * vm_method.c (rb_add_method): save attr's location.
+
+ * gc.c (mark_method_entry): mark attr's location.
+
+ * method.h (rb_method_definition_t): add member to save attr's location.
+
+ * vm_eval.c (vm_call0): follow above.
+
+ * vm_insnhelper.c (vm_call_method): ditto.
+
+ * vm_method.c (rb_method_definition_eq): ditto.
+
+Mon Mar 22 19:31:06 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (Date#>>): fixed. [ruby-core:28011]
+
+Mon Mar 22 18:01:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RMDIRS): use rmdir -p if possible.
+
+ * Makefile.in ({dist,real}clean-ext): fix for removing ext
+ directories.
+
+Mon Mar 22 09:06:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/.document: extracted from ext/.document.
+
+Mon Mar 22 00:50:33 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (rsock_revlookup_flag): declared.
+
+Mon Mar 22 00:01:24 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (config.h): RUBY_EXEC_PREFIX defined.
+
+Sun Mar 21 00:46:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_form_component):
+ convert strings of HTML5 ASCII incompatible encoding
+ to UTF-8.
+
+ * lib/uri/common.rb (URI.encode_www_form_component):
+ "\x83\x41" of Shift_JIS should be encoded as "%83A".
+ This follows real implementations.
+
+ * lib/uri/common.rb (URI.decode_www_form_component):
+ use given encoding for force_encoding. [ruby-dev:40721]
+
+Sun Mar 21 21:09:17 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv-replace.rb: specify super class for rdoc.
+
+ * lib/ipaddr.rb: ditto.
+
+Sun Mar 21 19:52:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_initialize): add autoclose argument to control close
+ at finalization. [ruby-core:26222]
+
+ * io.c (rb_io_autoclose_p, rb_io_set_autoclose): new methods.
+
+Sun Mar 21 19:50:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket: make sources rdoc friendly.
+
+Sun Mar 21 17:57:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (IO_RBUF_CAPA_FOR): use large buffer as cbuf if readconv is
+ needed for performance improvement. based on a patch by Roger Pack
+ in [ruby-core:28163]. [ruby-core:28162]
+
+Sun Mar 21 17:14:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: reuse hash object.
+
+Sun Mar 21 12:32:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (transcode_compile_tree): make
+ valid_encoding mandatory unless from_encoding is registered in
+ ValidEncoding.
+ (transcode_tbl_only): ditto.
+ (transcode_tblgen): ditto.
+ (ValidEncoding): new function.
+
+ * enc/trans/escape.trans: specify valid_encoding.
+
+ * enc/trans/emoji_sjis_docomo.trans: ditto.
+
+ * enc/trans/emoji.trans: ditto.
+
+ * enc/trans/emoji_iso2022_kddi.trans: ditto.
+
+ * enc/trans/big5.trans: ditto.
+
+ * enc/trans/emoji_sjis_softbank.trans: ditto.
+
+ * enc/trans/emoji_sjis_kddi.trans: ditto.
+
+ * enc/trans/chinese.trans: use ValidEncoding() instead of
+ ValidEncoding[].
+
+Sun Mar 21 09:43:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (IO_[CRW]BUF_CAPA_MIN): replaced magic numbers.
+
+Sun Mar 21 09:22:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * object.c (rb_obj_hash): use LONG2FIX to avoid Bignum allocation.
+
+Sat Mar 20 22:51:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_sum): use UCHAR_MAX.
+
+Sat Mar 20 19:16:42 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ActionMap.unambiguous_action): use
+ Array#delete.
+ (ActionMap.merge2): defined.
+ (ActionMap::PostMemo): removed.
+ (transcode_compile_tree): use ActionMap.merge2.
+
+Sat Mar 20 13:26:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * array.c (rb_ary_uniq_bang): the array is already unique if the
+ length is zero or one.
+ (rb_ary_uniq): ditto.
+
+Sat Mar 20 12:30:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib: fixed typo. a patch by Sho Hashimoto in [ruby-dev:40716].
+
+Sat Mar 20 11:32:18 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (each_firstbyte_range): tuned for less
+ method calls.
+
+Sat Mar 20 00:59:50 2010 wanabe <s.wanabe@gmail.com>
+
+ * ext/dl/lib/dl/pack.rb (DL#pack): allow LLP64.
+
+Fri Mar 19 05:26:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_sum): don't call method for each byte.
+
+Thu Mar 18 21:24:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (miniruby): link $(NORMALMAINOBJ).
+
+Thu Mar 18 19:52:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: scan singleton mappings sequentially.
+
+Thu Mar 18 06:28:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_EXEC_PREFIX): added to config.h.
+
+ * ruby.c (ruby_init_loadpath_safe): TMP_RUBY_PREFIX should be
+ exec_prefix, not rubylibprefix. [ruby-core:28718]
+
+ * version.c (RUBY_LIB_PREFIX): fallback to RUBY_EXEC_PREFIX.
+
+Thu Mar 18 05:58:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_{to_i,mod,divmod,div2}):
+ removed unused variables.
+
+Thu Mar 18 04:40:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern3): get rid of type-punning cast.
+
+Thu Mar 18 02:29:42 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_build_body): add mark to jump table hash of case.
+
+Thu Mar 18 00:58:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): Add support for Hexadecimal
+ floating-point expression [ruby-dev:40650] #2969
+
+Thu Mar 18 00:00:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.{en,de}code_www_form_component):
+ renamed from URI.{en,de}code_www_component. [ruby-dev:40672]
+
+ * lib/uri/common.rb (URI.encode_www_form_component): %-encoded
+ element should have always two hex.
+
+ * lib/uri/common.rb (URI.encode_www_form_component):
+ better treatment for ASCII incompatible encodings and
+ encodings whose lead byte may use 7bit.
+
+ * lib/uri/common.rb (URI.decode_www_form_component): add %20.
+
+ * lib/uri/common.rb (URI.decode_www_form_component): add
+ result's encoding as 2nd argument.
+
+ * lib/uri/common.rb (URI.decode_www_form): added.
+
+Wed Mar 17 16:25:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_aset): allow recursive key. [ruby-core:24648]
+
+Wed Mar 17 06:39:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.h (rb_warning, rb_sys_warning): fixed typo in rdoc.
+ [ruby-core:28696]
+
+Wed Mar 17 02:29:46 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c, iseq.c, ruby.c, vm.c, vm_core.h, vm_eval.c: add absolute
+ path field into rb_iseq_t. The field contains a string representing
+ a path to corresponding source file. or nil when the iseq is created
+ from -e, stdin, eval, etc. This field is used for require_relative.
+ [ruby-dev:40004]
+
+ * load.c (rb_f_require_relative): add C implementation of
+ require_relative.
+
+ * prelude.rb (require_relative): get rid of Ruby implementation of
+ require_relative.
+
+Wed Mar 17 01:24:01 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (rb_intern3): prohibit Symbol with an invalid encoding.
+ [ruby-core:24621]
+
+ * test/ruby/test_m17n_comb.rb: modify a test for above.
+
+Tue Mar 16 22:51:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: specialize for singleton mappings.
+
+Tue Mar 16 20:13:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * enc/trans/emoji.trans: added codepoints leading 0xf4 into
+ nomap_table.
+
+Tue Mar 16 17:33:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): keep e's sign.
+ When e doesn't over flow e * BASE_FIG but overflow e * 10,
+ e will overflow.
+
+Tue Mar 16 17:18:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_str_conv_enc_opts): missing prototype.
+
+Tue Mar 16 15:20:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tmpdir: split from lib/tmpdir.rb.
+
+ * win32/win32.c (rb_w32_system_tmpdir): extracted from init_env.
+
+ * win32/win32.c (rb_w32_getcwd): removed duplicated code.
+
+Tue Mar 16 14:06:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (ENC_TO_ENCINDEX): suppress warnings.
+
+Tue Mar 16 14:03:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RSHIFT): parenthesize the argument of cast instead
+ of the result.
+
+Tue Mar 16 11:23:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): ignore dname if it has different
+ drive letter or UNC.
+
+Tue Mar 16 07:16:56 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: redundant loop removed.
+
+Tue Mar 16 07:01:43 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: refactored to use tree as memo key.
+
+Tue Mar 16 04:05:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: more info in generating macro names.
+
+Mon Mar 15 21:58:03 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: ActionMap#each_firstbyte inlined.
+
+Mon Mar 15 21:22:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (transcode_tblgen): add valid_encoding
+ optional argument.
+
+ * enc/trans/single_byte.trans use valid_encoding argument for
+ transcode_tblgen.
+
+ * enc/trans/chinese.trans: ditto.
+
+Mon Mar 15 18:33:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (default_rand): removed initial buffer.
+
+ * random.c (Init_RandomSeed): initialize seed of default random.
+
+ * random.c (Init_RandomSeed2): turn the seed to Bignum object.
+
+Mon Mar 15 17:28:30 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_print): RDoc update. a patch from Daniel Kelley
+ in [ruby-core:28643].
+
+Mon Mar 15 14:06:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (next_state): no initialization here.
+
+ * random.c (default_mt): always return initialized MT.
+
+Mon Mar 15 11:49:48 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (rb_reset_random_seed): set seed in this.
+ [ruby-core:28655]
+
+Mon Mar 15 10:26:02 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: import latest nkf. [master 9306cb0]
+ this also fixes [ruby-dev:40607]
+
+Mon Mar 15 09:34:17 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_component):
+ call str.to_s at first.
+
+Mon Mar 15 09:36:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * symbian/README.SYMBIAN: fixed broken patch and converted to
+ unified diff.
+
+Mon Mar 15 07:51:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (Init_File): do not define File::ALT_SEPARATOR on cygwin.
+
+Mon Mar 15 07:41:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (realpath_rec): use same cache.
+
+ * file.c (realpath_internal): regulate separators in prefix.
+ [ruby-core:28653]
+
+ * file.c (FILE_ALT_SEPARATOR): separated condition.
+
+Mon Mar 15 04:41:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_each_codepoint): read directly when readconv is
+ needed but internal encoding is not set. [ruby-core:28650]
+
+Mon Mar 15 04:18:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/file2lastrev.rb (VCS::{SVN,GIT}#get_revisions):
+ use block argument 'path' to get the path given by super.
+
+Mon Mar 15 02:43:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (Action#hash): defined.
+ (Action#eql?): ditto.
+ (Action#==): ditto.
+
+Mon Mar 15 01:52:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: refactored.
+
+Mon Mar 15 01:18:31 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (*.pkg): Ruby Core installation separated from standard extensions.
+
+ * symbian/configure.bat: ditto.
+
+ * symbian/README.SYMBIAN: ditto.
+
+ * symbian/setup (config.h): support for 2nd internal drive added.
+
+Mon Mar 15 00:11:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/file2lastrev.rb (VCS::GIT_SVN#get_revisions) :
+ use block argument 'path' to get the path given by super.
+
+ * tool/file2lastrev.rb (VCS::GIT#get_revisions):
+ use double quotes for Windows.
+ patched by Vladimir Sizikov [ruby-core:28651]
+
+Sun Mar 14 22:38:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: consider valid_encoding for max_input.
+
+Sun Mar 14 15:46:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/emoji.trans: fix nomap_table.
+
+Sun Mar 14 09:50:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (insn_data_to_s_detail), iseq.c (insn_operand_intern):
+ fixed format specifiers.
+
+Sun Mar 14 07:20:17 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (EXPAND_PATH_BUFFER): make it back to usascii, to prevent
+ infinite loop on some platform. [ruby-dev:40629]
+
+Sun Mar 14 02:40:38 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: reject ambiguous mapping.
+
+ * enc/trans/single_byte.trans: remove ambiguous mapping such as
+ \xD6 -> U+05F2 and \xD6\xC7 -> U+FB1F in Windows-1255
+
+Sat Mar 13 23:48:27 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (file_expand_path): should not just copy the encoding
+ from fname. [ruby-core:28635]
+
+ * file.c (EXPAND_PATH_BUFFER): set filesystem_encoding, not
+ usascii for path buffer.
+
+Sat Mar 13 17:48:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/file2lastrev.rb: refactored. fixed changed revision of git.
+
+Sat Mar 13 15:44:20 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_print): should not print field separator at the end
+ of arguments. [ruby-talk:358633]
+
+Sat Mar 13 14:49:55 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_join): remove Enumerable#join. [ruby-core:24786]
+
+ * array.c (ary_join_1): use #to_ary to detect recursive array.
+
+Sat Mar 13 12:26:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h (MakeOpenFile): finalize fptr to get rid of
+ memory leak.
+
+Sat Mar 13 11:14:26 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * load.c (rb_get_expanded_load_path): expand paths if any item in $:
+ is not a string.
+
+Sat Mar 13 10:16:32 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * load.c (rb_get_expanded_load_path): does not expand paths if all
+ the items in $: are absolute paths. [ruby-core:28113]
+
+Sat Mar 13 10:03:52 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: fix [Bug #2840] Tk doesn't built in mingw.
+
+Sat Mar 13 03:24:15 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: show consumed time at last.
+
+Sat Mar 13 00:44:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): check encoding of suffix.
+
+Sat Mar 13 00:11:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): mark initial load paths.
+
+ * gem_prelude.rb (push_all_highest_version_gems_on_load_path):
+ search insertion position by initial load path mark.
+
+ * lib/rubygems.rb (Gem.load_path_insert_index): ditto.
+
+Fri Mar 12 21:34:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: emoji encodings.
+
+Fri Mar 12 17:14:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_form): new method to
+ generate URL-encoded form data. [ruby-dev:39246]
+
+ * lib/uri/common.rb (URI.encode_www_component,
+ URI.decode_www_component): new method for encode/decode
+ a name/value of HTML form.
+
+Fri Mar 12 17:36:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb
+ (WEBrick::HTTPServlet::CGIHandler#do_GET):
+ set binary mode for tempfile.
+ http://pc12.2ch.net/test/read.cgi/tech/1265467681/286
+
+Fri Mar 12 13:52:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * tool/compile_prelude.rb: TMP_RUBY_PREFIX should replace
+ rubylibprefix but not prefix.
+
+Fri Mar 12 09:43:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * complex.c (f_signbit): remove condition for signbit because
+ all platforms have signbit from r26871.
+
+Fri Mar 12 07:25:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_env): get rid of alloca() for outer string.
+
+Fri Mar 12 07:17:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/racc/cparse/cparse.c: suppressed warnings for shortening on
+ platforms where pointer is bigger than int.
+
+Fri Mar 12 07:15:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe, ruby_init_gems): set and remove
+ TMP_RUBY_PREFIX.
+
+ * variable.c (rb_const_remove): new function.
+
+ * tool/compile_prelude.rb: split each preludes.
+
+Fri Mar 12 07:09:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (config.status): setup MINIRUBY environment for
+ cross-compiling.
+
+Fri Mar 12 06:48:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/extconf.rb: log() is built-in in some compilers and needs
+ proper declaration.
+
+Fri Mar 12 06:37:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/timeout.rb: split from lib/timeout.rb.
+
+Thu Mar 11 22:35:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_round): new method Time#round. [ruby-dev:40595]
+
+Thu Mar 11 17:31:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_transcode0): confirm the code range.
+
+Thu Mar 11 12:14:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/signbit.c: added.
+
+Thu Mar 11 11:16:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check if target_archs has changed.
+
+Thu Mar 11 01:33:30 2010 wanabe <s.wanabe@gmail.com>
+
+ * win32/win32.c (signbit): allow x64.
+
+Thu Mar 11 01:04:48 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * iseq.c (rb_iseq_clone): sets local_iseq and klass properly.
+
+Wed Mar 10 21:25:41 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enum.c (min_ii, max_ii, minmax_ii): remove wrong optimization that
+ reuses array for yield parameter, which caused unexpected behavior.
+ [ruby-core:25989]
+
+Wed Mar 10 12:10:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * enc/x_emoji.h: renamed from enc/x-emoji.c.
+
+Wed Mar 10 04:17:08 2010 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (defined_expr), insns.def (defined): fix to pass a Symbol
+ object such as :$foo for the "defined?($foo)" expression
+ on defined instruction. This patch fixes ISeq#to_a/load.
+
+Tue Mar 9 20:50:09 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/dl/test_method.rb: delete a residual test for dl on libffi.
+
+Tue Mar 9 18:00:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * enc/trans/EMOJI/*.src, enc/trans/emoji*,
+ enc/x-emoji.c, test/ruby/enc/test_emoji.rb,
+ tool/enc-emoji-citrus-gen.rb, tool/enc-emoji4unicode.rb,
+ tool/jisx0208.rb, tool/test/test_jisx0208.rb:
+ new encodings to support emoji charsets, which are used by
+ Japanese mobile phones [ruby-dev:40528].
+ Thanks Yoji Shidara for a lot of contribution.
+
+ * tool/transcode-tblgen.rb: modified for enc-emoji4unicode.rb.
+
+Tue Mar 9 14:57:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb (ActionMap#generate_node):
+ remove useless dup.
+
+ * tool/transcode-tblgen.rb (transcode_tbl_only): remove duplicated
+ method call for encode_utf8.
+
+Tue Mar 9 14:55:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_to_s): remove unused variable.
+
+Tue Mar 9 12:17:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * tool/transcode-tblgen.rb (StrSet#parse, ActionMap#generate_node):
+ optimization (reusing object and improving memoize).
+ [ruby-dev:40582]
+
+Sun Mar 7 02:27:03 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * dln.c [DLN_NEEDS_ALT_SEPARATOR] (translit_separator): small typo
+ fixed.
+
+ * symbian/setup (*.pkg): Shared library installation path fixed to
+ match changes in version.c.
+
+ * symbian/setup (ruby.mmp): SOURCE dln_find.c added.
+
+Sun Mar 7 23:14:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_pack): use DIGSPERLONG and BITSPERDIG.
+ (rb_big_unpack): use DIGSPERLONG.
+
+Sun Mar 7 19:21:10 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * io.c: Fix documentation for each/each_line/lines, bytes/each_byte,
+ codepoints/each_code_point [ruby-core:23948]
+
+ * string.c: ditto
+
+ * ext/stringio/stringio.c: ditto
+
+Sun Mar 7 13:49:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c: add optional basedir argument for realpath/realdirpath.
+ (realpath_internal): handle basedir.
+ (rb_file_s_realpath): extract basedir from argument list.
+ (rb_file_s_realdirpath): extract basedir from argument list.
+
+ * lib/pathname.rb (realpath): pass basedir.
+ (realdirpath): ditto.
+
+Sun Mar 7 02:05:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_set_filesystem_encoding):
+ filesystem encoding on Mac OS X is now
+ default external encoding. so Mac OS X is now
+ treated as one of Unix. [ruby-dev:40439]
+
+ * file.c (file_path_convert): ditto.
+
+Sat Mar 6 22:07:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: fix the prototype of rb_big2ulong_pack.
+
+Sat Mar 6 13:45:37 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (rb_io_s_write, rb_io_s_binwrite): delete File#write and
+ #binwrite. It may take a long time to make them stable, so 1.9.2
+ should not include them. We need refactoring to implement them
+ again.
+
+ * test/ruby/test_io.rb: delete tests for them.
+
+Sat Mar 6 10:03:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (rb_io_s_binwrite): use mode "r+b" instead of "ab" to handle
+ offset correctly. [ruby-core:28517]
+
+ * test/ruby/test_io.rb: use assert_equal instead of assert.
+
+Sat Mar 6 01:08:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): VC6 has __int64.
+
+Fri Mar 5 19:36:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (econv_opts): set :undef => :replace when
+ :replace is given and :invalid is not given. [ruby-dev:40554]
+
+Fri Mar 5 17:51:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): suppressed a warning.
+
+ * win32/win32.c (rb_w32_map_errno, winnt_stat, rb_chsize): ditto.
+
+ * win32/win32.c (rb_w32_aspawn): get rid of overflow.
+
+Fri Mar 5 11:59:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (signbit): defined on mingw.
+
+Thu Mar 4 22:49:42 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (setup_exception): avoid line number 0 when setting
+ $DEBUG=true. [ruby-dev:39116]
+
+Thu Mar 4 22:45:02 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (io_s_write, io_s_binwrite): add File#write and #binwrite.
+ [ruby-core:21701]
+
+ * test/ruby/test_io.rb: add tests for above.
+
+Mon Mar 4 13:14:34 2010 wanabe <s.wanabe@gmail.com>
+
+ * gc.c (gc_profile_total_time): add GC::Profiler.total_time.
+ [ruby-core:27169]
+
+ * NEWS: ditto.
+
+Thu Mar 4 10:15:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * complex.c (m_log, m_exp): remove unused functions.
+
+Thu Mar 4 02:34:59 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_env.rb (TestEnv#test_select_bang): add tests.
+
+Thu Mar 4 02:29:52 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_hash.rb (TestHash#test_keep_if): fix typo.
+
+Thu Mar 4 00:10:54 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (HEX2): extracted from regexps.
+
+Wed Mar 3 23:16:32 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * complex.c (nucomp_real_check): raise TypeError instead of
+ ArgumentError when argument is not a real as expected
+ [ruby-core:28395]
+
+ * rational.c (nurat_int_check): ditto (for integers)
+
+Wed Mar 3 23:07:08 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (Vector#each): Return self and optimization
+ [ruby-core:28405]
+
+Wed Mar 3 18:35:55 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_select_bang): add #select! and keep_if to Hash.
+
+ * hash.c (env_select_bang): ..and to ENV.
+
+Wed Mar 3 15:54:20 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/matrix.rb (Vector#each2, collect2): small refactoring.
+
+Wed Mar 3 16:14:24 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/matrix.rb (Vector#each): make Vector enumerable.
+ [ruby-core:28405]
+
+Wed Mar 3 14:28:23 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_select_bang): select! removes all elements for
+ which block returns false. [ruby-core:27286]
+
+ * array.c (rb_ary_keep_if): #keep_if, new method.
+
+Wed Mar 3 06:19:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (signbit): defined.
+
+ * win32/Makefile.sub, symbian/setup (config.h): pack.c requires
+ SIZEOF_INT*_T now.
+
+Tue Mar 2 21:16:48 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (rb_io_lines, rb_io_bytes, rb_io_chars, rb_io_codepoints):
+ change to alias to each_*, in similar way to ARGF and String.
+ [ruby-core:23948]
+
+Tue Mar 2 15:54:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (noname_disable_map): add NT_ANCHOR case.
+ Without this change, captured groups in anchors (look-ahead,
+ look-behind, and so on) are not removed and
+ unintended invalid backref error occur. [ruby-core:28235]
+
+ * regcomp.c (renumber_by_map): ditto.
+
+Tue Mar 2 14:42:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * test/dl/test_closure.rb: forget to revert at r26764.
+
+Tue Mar 2 14:29:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext_safe, rb_find_file_safe): skip argument
+ checks in file_expand_path().
+
+Tue Mar 2 13:54:44 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * test/ruby/test_math.rb: Fix lgamma test
+
+Mon Mar 1 23:26:56 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (pty_open): refine the path for master IO.
+
+Mon Mar 1 20:07:06 2010 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/zlib/zlib.c (zstream_expand_buffer_into): remove compare
+ different type values warning.
+
+Mon Mar 1 17:42:45 2010 wanabe <s.wanabe@gmail.com>
+
+ * configure.in (mingw): do not detect snprintf/vsnprintf.
+
+Mon Mar 1 16:54:21 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/oniguruma.h: updated to follow Oniguruma 5.9.2.
+
+ * re.c (make_regexp): use onig_new() instead of onig_alloc_init().
+
+ * re.c (rb_reg_to_s): ditto.
+Sun Feb 28 21:32:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (get_device_once): raise on error when fail is
+ non-zero.
+
+Sun Feb 28 18:58:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * math.c (rb_eMathDomainError): new exception class
+ for representing mathematical domain error instead
+ of Errno::EDOM.
+
+ * math.c (domain_check, infinity_check): removed,
+ no longer needed.
+
+ * math.c (math_atan2, math_acos, math_asin, math_acosh,
+ math_atanh, math_log, math_log2, math_log10, math_sqrt,
+ math_gamma, math_lgamma): mathematical domain errors
+ are checked and raised before calling libm's functions.
+
+ * test/ruby/test_math.rb: updated for changes of math.c.
+
+Sun Feb 28 15:07:28 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_pack): use union to avoid pointer cast.
+ (pack_unpack): ditto.
+
+Sun Feb 28 11:49:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * openssl/ossl.c (OSSL_IMPL_SK2ARY): for OpenSSL 1.0.
+ patched by Jeroen van Meeuwen at [ruby-core:25210]
+ fixed by Nobuyoshi Nakada [ruby-core:25238],
+ Hongli Lai [ruby-core:27417],
+ and Motohiro KOSAKI [ruby-core:28063]
+
+ * ext/openssl/ossl_pkcs7.c (pkcs7_get_certs, pkcs7_get_crls):
+ split pkcs7_get_certs_or_crls.
+
+Sun Feb 28 11:42:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/openssl/{test_x509cert.rb,openssl,test_x509crl.rb,
+ test_x509req.rb}:
+ fix false positive tests because of OpenSSL spec change.
+ patched by originally Hongli Lai [ruby-core:27417],
+ and fixed by Motohiro KOSAKI [ruby-core:28063]
+
+Sun Feb 28 11:21:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/openssl/{test_x509cert.rb,openssl,test_x509req.rb}:
+ remove false positive tests because of OpenSSL spec change.
+ patched by Motohiro KOSAKI [ruby-core:28063]
+ see also [ruby-dev:40077]
+
+Sun Feb 28 11:25:16 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_pack): generalized integer packer implemented.
+ (pack_unpack): generalized integer unpacker implemented.
+
+Sun Feb 28 06:58:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (swap32): use __builtin_bswap32 on gcc 4.3.0 or later.
+ (swap64): ditto.
+
+Sun Feb 28 00:38:18 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: use integer types with explicit size.
+
+Sat Feb 27 15:54:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: check assumption on QUAD_SIZE and SIZEOF_LONG.
+
+ * bignum.c: check assumption on SIZEOF_LONG and SIZEOF_BDIGITS.
+
+Sat Feb 27 03:48:18 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: fix q and Q for big endian environments which have no
+ 8 bytes integer type.
+ (pack_pack): use rb_big_pack.
+ (pack_unpack): use rb_big_unpack.
+
+ * include/ruby/intern.h (rb_big_pack): declared.
+ (rb_big_unpack): ditto.
+
+ * bignum.c (rb_big_pack): new function.
+ (rb_big_unpack): ditto.
+
+Fri Feb 26 21:36:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: fix rb_quad_pack and rb_quad_unpack for environments
+ which don't have 8bytes integer type. This still depends on little
+ endian.
+ (rb_quad_pack): use quad_buf_complement. don't raise for large
+ values.
+ (rb_quad_unpack): use quad_buf_complement.
+ (quad_buf_complement): new function extracted from rb_quad_pack.
+ add one after bitwise negation.
+
+Fri Feb 26 21:29:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (RSHIFT): add parenthesis to suppress warning.
+
+Fri Feb 26 20:51:47 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/socket/raddrinfo.c, ext/socket/udpsocket.c: avoid illegal cast
+ from void-returning function to VALUE-returning one. It causes SEGV
+ on RubySpec with mingw32.
+
+Fri Feb 26 20:07:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (QUAD_SIZE): it should be always 8.
+
+ * bignum.c (rb_quad_pack): use LONG_LONG version only if
+ SIZEOF_LONG_LONG == QUAD_SIZE.
+
+Fri Feb 26 16:49:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (swap64): fix for VC6.
+
+Fri Feb 26 14:17:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack, pack_unpack): suppressed warnings.
+
+Fri Feb 26 07:44:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl: revert dl with libffi because it can't run on mswin now.
+
+Thu Feb 25 22:59:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: consider DYNAMIC_ENDIAN. refactored.
+
+Thu Feb 25 11:17:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * rational.c (nurat_expt): use Float#** when Rational ** Float.
+ This fixes Rational(3,1)**3.0=>26.99999999999999 on FreeBSD.
+
+ * complex.c (rb_fexpt): removed.
+ Note that this function is not static but is private.
+
+Thu Feb 25 00:43:57 2010 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: Change the operand type of setinlinecache
+ (OFFSET to IC). This IC must be same as corresponding
+ getinlinecache instruction's IC operand.
+ This change is for a little performance improvement
+ (getting IC directly) and is for the AOT compilation development.
+
+ * compile.c, iseq.c, insns.def: Change the approach to handling inline
+ cache (IC) type operand to enable the above change.
+ This change also affects ISeq#to_a method. The inline cache operand
+ will be dumped by fixnum, the index of inline cache, in other words,
+ inline cache identity.
+
+ * template/insns_info.inc.tmpl, tool/instruction.rb: No need to count
+ inline cache size (insn_iclen()).
+
+Thu Feb 25 00:57:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (swap64): don't redefine.
+
+Thu Feb 25 00:29:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_unpack): don't use OFF32 for gcc 4.5.
+
+Wed Feb 24 22:39:15 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: fix [ruby-core:28320] reported by Paul Clegg.
+ (Resolv::DNS::Requester#request): raise ResolvTimeout
+ consistently for timeout.
+
+Wed Feb 24 14:38:16 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/indexer: Removed obsolete files.
+
+Wed Feb 24 11:52:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (translit_separator): moved back from load.c again.
+
+ * dln_find.c: split from dln.c.
+
+Wed Feb 24 09:31:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/extconf.rb: use OpenSSL only when all transform
+ functions are available.
+
+Wed Feb 24 00:39:17 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (str_new_empty): String#split, partition, rpartition
+ taints the resulting strings if self is tainted.
+
+Mon Feb 22 21:35:33 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/sha2/sha2init.c: test OpenSSL more strictly.
+
+Mon Feb 22 11:52:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems: update to 1.3.6.
+
+Mon Feb 22 11:21:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/sha2: Use OpenSSL's SHA1 engine if available.
+
+Sun Feb 21 21:20:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile, install_files): honor srcprefix
+ argument if given. [ruby-dev:40449]
+
+Sun Feb 21 13:29:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/rubygems_version.rb: outdated. [ruby-core:28275]
+
+Sun Feb 21 06:24:12 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (config.h): HAVE_STRUCT_TIMEZONE, VOID_UNSETENV, and RUBY_LIB_VERSION_STYLE defined.
+ * symbian/setup (ruby.mmp): SOURCE node.c added.
+
+Mon Feb 22 09:15:45 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark_children): lost comment added.
+
+Sat Feb 20 14:42:19 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): should prepare placeholder before
+ processing instance variables. [ruby-dev:40414]
+
+ * marshal.c (id2encidx): no longer need arg.
+
+Sat Feb 20 14:36:16 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): use called_id when method definition
+ structure is already freed. [ruby-dev:40234] [ruby-core:27959]
+
+Fri Feb 19 00:04:19 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/drb/drb.rb (DRbServer#stop_service): join killed thread to
+ ensure service stops. [ruby-dev:40441]
+
+Thu Feb 18 22:31:15 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * math.c (math_atanh): raise ERANGE without calling atanh if absolute
+ value is 1 to achieve platform-independent math. [ruby-core:28219]
+
+ * math.c (math_lgamma): return [Infinity, 1] without calling lgamma_r
+ if argument is infinity or -infinity. [ruby-core:28219]
+
+Thu Feb 18 22:28:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * configure.in: new --with-ext and --with-out-ext options for extmk.
+ * tool/mkconfig.rb: normalizing --with-out-ext to --without-ext.
+
+Thu Feb 18 21:50:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_unpack): call PACK_ITEM_ADJUST for 'Q'.
+
+Thu Feb 18 02:14:26 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (io_fread, io_getpartial, io_read, io_sysread): by using lock,
+ prohibit modification of buffer string during read (which had caused
+ EFAULT or SEGV). [ruby-dev:40437]
+
+ * test/ruby/test_io.rb: rewrite tests for the old behavior.
+
+Wed Feb 17 21:34:01 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regcomp.c (setup_tree, onig_compile): optimize .* at last by
+ converting into (?>.*), which does not backtrack. [ruby-core:27791]
+
+ * test/ruby/test_regexp.rb: add a test for above.
+
+Wed Feb 17 21:26:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_normal_exit): add :timeout option.
+
+Wed Feb 17 17:05:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_cfunc): removed unused variable.
+
+ * vm.c (vm_frametype_name): define only when VMDEBUG.
+
+Wed Feb 17 15:34:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl_conversions.c (rb_dl_type_to_ffi_type): support signed
+ long long.
+
+ * ext/dl/cfunc.c (rb_dlcfunc_inspect): get rid of overflow.
+
+ * ext/dl/closure.c (dlc_callback, rb_dlclosure_init): ditto.
+
+ * ext/dl/cptr.c (rb_dlptr_s_malloc): ditto.
+
+ * ext/dl/method.c (rb_dlfunction_initialize): ditto.
+
+Wed Feb 17 01:16:12 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * hash.c (hash_update): always raise an exception when adding a new
+ key during iteration. Traditionally, an exception was raised only
+ when rehash occurs, but it may lead to difficult bug to reproduce.
+ [ruby-core:23614]
+
+Tue Feb 16 22:09:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (chain_finalized_object): fix precedence.
+
+Tue Feb 16 21:32:01 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (rb_objspace_call_finalizer): always run finalizer at exit,
+ before object is free'd. [ruby-dev:40382]
+
+Tue Feb 16 20:56:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c (rb_group_member): renamed from group_member.
+ don't use group_member() in glibc because it's not valgrind clean.
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=570047
+
+Tue Feb 16 19:19:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): convert signed value to
+ unsigned.
+
+Tue Feb 16 19:02:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/dl/test_{base,handle}.rb: use more verbose assertions.
+
+ * test/dl/test_import.rb (DL::LIBC::BoundQsortCallback): renamed
+ to get rid of overwriting warning.
+
+Tue Feb 16 11:03:19 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/dl/method.c: Adding DL::Method as a superclass for DL::Function
+
+Mon Feb 15 23:37:30 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c: check lseek error by errno. NetBSD 4.0.1 may return -1 as
+ a file position of tty.
+
+Mon Feb 15 23:08:56 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/pstore.rb (PStore#initialize): initialize @thread_safe.
+ [ruby-core:27853]
+
+Mon Feb 15 22:45:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * st.c (st_foreach): don't access ptr->hash after func call.
+ It may access freed area.
+
+Mon Feb 15 22:25:16 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/zlib/zlib.c (zlib_mem_alloc): suppress valgrind warnings.
+ http://www.zlib.net/zlib_faq.html#faq36
+
+Mon Feb 15 22:18:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_add): propagate fixed time offset.
+
+Mon Feb 15 17:42:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * signal.c (USE_SIGALTSTACK): NetBSD can't use sigaltstack(2)
+ with pthread.
+ http://netbsd.gw.com/cgi-bin/man-cgi?sigaltstack++NetBSD-current
+
+Mon Feb 15 13:11:47 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_push_m): use rb_ary_modify instead of
+ rb_ary_modify_check. This fixes regression due to r26632.
+
+Sun Feb 14 12:54:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): removed duplicated entry for regexp.
+ [ruby-dev:40416]
+
+Sun Feb 14 04:45:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): register regexp object before encoding
+ name. [ruby-dev:40414]
+
+ * re.c (rb_reg_alloc, rb_reg_init_str): split from rb_reg_new_str.
+
+Sat Feb 13 17:07:20 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete): RDoc update. a patch from Hugh Sasse.
+ [ruby-core:28128]
+
+ * array.c (rb_ary_compact_bang): ditto.
+
+Sat Feb 13 15:01:24 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (id2encidx): duplicated entry for encoding name.
+ [ruby-dev:40388]
+
+Sat Feb 13 12:17:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/tempfile.rb (Tempfile::Remover): new class to replace
+ Tempfile.callback. port r24902 from Ruby 1.8.
+
+Fri Feb 12 17:55:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (thread_free): fixed typo.
+
+Fri Feb 12 02:27:39 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#initialize, Set#replace, Set#merge)
+ (Set#subtract, Set#&): Fix duck type tests. [ruby-core:28078]
+
+ * lib/set.rb (Set#initialize, Set#replace, Set#merge)
+ (Set#subtract, Set#&): Try #each if #each_entry fails.
+
+Thu Feb 11 20:43:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_oflags_modestr): return "r" for O_RDONLY|O_APPEND.
+ [ruby-dev:40379]
+
+Thu Feb 11 19:19:21 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * missing/alloca.c: s/RUBY_LIB/RUBY_LIB_PREFIX/ [ruby-dev:40395]
+
+Thu Feb 11 17:52:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_exec): reset thread state before restarting vm loop
+ from catch scope. [ruby-core:28129], [ruby-core:28143]
+
+Thu Feb 11 14:43:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): read sequentially since marshal source
+ may not be possible to rewind. [ruby-dev:40386]
+
+ * marshal.c (r_object0): replace non-1.8 escapes directly.
+
+Thu Feb 11 09:49:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: fix [ruby-core:28144] reported by Hans de Graaff.
+ (Resolv::DNS#make_requester): pass nameserver_port to
+ UnconnectedUDP.new.
+ (Resolv::DNS.bind_random_port): change the is_ipv6 argument to
+ bind_host.
+ (Resolv::DNS::Requester#initialize): change instance variable to
+ store multiple sockets.
+ (Resolv::DNS::Requester#request): pass readable sockets to
+ recv_reply.
+ (Resolv::DNS::Requester#close): close all sockets.
+ (Resolv::DNS::Requester::UnconnectedUDP#initialize): allocate
+ a socket for each address family of name servers.
+ (Resolv::DNS::Requester::UnconnectedUDP#recv_reply): read from the
+ passwd readable socket.
+ (Resolv::DNS::Requester::UnconnectedUDP#sender): use appropriate
+ socket for the target nameserver.
+ (Resolv::DNS::Requester::ConnectedUDP): follow the instance variable
+ change.
+ (Resolv::DNS::Requester::TCP#sender): ditto.
+ (Resolv::DNS::Config#nameserver_port): new method.
+
+Thu Feb 11 01:45:04 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (vm_exec): temporarily revert r26628, which causes SEGV when
+ executing rubyspec.
+
+Wed Feb 10 16:31:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_push_m, rb_ary_unshift_m, rb_ary_aset),
+ (rb_ary_insert, rb_ary_replace, rb_ary_concat),
+ (rb_ary_uniq_bang, rb_ary_flatten_bang): check if frozen after
+ wrong number of arguments but before TypeError.
+ [ruby-core:28140]
+
+ * hash.c (rb_hash_replace): ditto.
+
+ * string.c (rb_str_replace): ditto.
+
+Wed Feb 10 04:06:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_exec): reset thread state before starting vm loop.
+ [ruby-core:28129]
+
+Tue Feb 9 23:48:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divide): fix precision too.
+
+Tue Feb 9 23:26:07 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): fix precision.
+ [ruby-core:17472][ruby-dev:35372][ruby-dev:40105][ruby-dev:40358]
+
+Tue Feb 9 22:23:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (READ_CHECK): do not select fd before reading, that had made
+ TCPServer#gets stuck. [ruby-dev:40317]
+
+Tue Feb 9 21:27:38 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/text.rb (REXML::Text#initialize): REXML::Text.new checks
+ raw text for illegal characters without entity check, for the sake
+ of 1.8 compatibility. This had caused rubyspec error.
+
+Mon Feb 8 23:49:24 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast): wrong calculation of new position
+ from rb_str_coderange_scan_restartable(). [ruby-core:28103]
+
+ * io.c (read_all): ditto.
+
+ * sprintf.c (rb_str_format): ditto.
+
+Mon Feb 8 21:03:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (socket_s_ip_address_list): obtain the scope_id
+ of IPv6 link local address on OpenSolaris.
+
+Mon Feb 8 16:27:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dmyversion.c: empty load path in miniruby.
+
+ * common.mk (COMPILE_PRELUDE): rbconfig is loaded on demand.
+
+ * tool/eval.rb, win32/{mkexports,resource}.rb: miniruby no longer
+ contains "." in $:.
+
+Mon Feb 8 15:15:07 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_clone): call initialize_clone hook method to
+ call initialize_copy.
+
+ * object.c (rb_obj_dup): call initialize_dup hook.
+
+ * lib/delegate.rb (Delegator#initialize_clone): use new hook to
+ implement deep copy. [ruby-dev:40242]
+
+ * lib/delegate.rb (Delegator#initialize_dup): ditto.
+
+ * test/test_delegate.rb (TestDelegateClass#test_copy_frozen): add
+ a test to ensure #clone copies frozen status.
+
+Mon Feb 8 10:28:58 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: check pthread_attr_getstack to prevent obsolete
+ warning for pthread_attr_getstackaddr.
+
+Sun Feb 7 23:12:34 2010 Tanaka Akira <akr@fsij.org>
+
+ * sample/test.rb: sort files for syntax validation.
+
+Sun Feb 7 23:08:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb: sort test files.
+
+Sun Feb 7 12:53:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/rake.rb (Rake::FileList::ARRAY_METHODS): fix test failure by <=>
+ definition at Kernel.
+
+Sun Feb 7 03:01:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * math.c (math_lgamma): initialize sign because
+ lgamma(NaN) doesn't set the sign in OpenSolaris.
+
+Sun Feb 7 00:23:21 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * class.c (rb_class_init_copy): raise a TypeError if the argument is
+ BasicObject. [ruby-core:27060]
+
+Sat Feb 6 23:37:11 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (initialize): set @sock to a NullSocket instance to
+ raise FTPConnectionError when not connected. [ruby-dev:40258]
+
+Sat Feb 6 23:25:57 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/view2.rb: replaced with Hugh Sasse's version.
+ [ruby-core:27894]
+
+Sat Feb 6 22:57:00 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (receive_responses): does not hang when an
+ unexpected BYE response received. fixed [ruby-core:27944].
+ Thanks, Bob Potter.
+
+Sat Feb 6 21:31:23 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb (wait): supported timeout.
+
+ * test/net/imap/test_imap.rb (test_exception_during_idle): use timeout.
+
+Sat Feb 6 19:35:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * tool/compile_prelude.rb: fix require path.
+
+Sat Feb 6 12:02:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#method_missing),
+ (Delegator.delegating_block): don't hide backtrace from
+ __getobj__ and reduced exception messages when $DEBUG.
+
+Sat Feb 6 11:35:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/ipsocket.c (ip_addr, ip_peeraddr),
+ ext/socket/socket.c (sock_s_getaddrinfo): added optional
+ reverse_lookup flag. [ruby-core:28007]
+
+Sat Feb 6 01:55:02 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/stringio/stringio.c (strio_ungetc): pads with \000 when the
+ current position is after the end. [ruby-dev:40271]
+
+Sat Feb 6 01:14:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/purelib.rb, common.mk: to simulate ruby command more precisely,
+ remove "." from $: of virtual environment for build and test.
+
+Sat Feb 6 00:02:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * random.c (fill_random_seed): don't use O_NOFOLLOW because
+ /dev/urandom is a symlink in OpenSolaris.
+
+ * lib/securerandom.rb (SecureRandom.random_bytes): ditto.
+
+Fri Feb 5 16:38:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator): include copy of Kernel.
+ [ruby-dev:40314]
+
+ * lib/delegate.rb (Delegator#{dup,clone}): class of copy should be
+ Delegator. [ruby-dev:40313]
+
+Fri Feb 5 09:26:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * bignum.c (big_op): remove unused variables.
+
+Fri Feb 5 02:06:57 2010 Aaron Patterson <tenderlove@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: Struct members are emitted without a leading
+ colon. Thanks Yusuke Endoh! [ruby-core:28052]
+
+ * test/yaml/test_struct.rb: fixed tests to go with Struct changes
+
+ * test/yaml/test_yaml.rb: fixed tests to go with Struct changes
+
+Fri Feb 5 00:34:24 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (big_gt, big_ge, big_lt, big_ge): added Bignum#>, >=, < and
+ <= to allow to compare with BigDecimal. [ruby-dev:40167]
+
+Thu Feb 4 15:47:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (native_thread_init_stack): use get_stack.
+ patched by KOSAKI Motohiro [ruby-dev:40309]
+
+ * thread_pthread.c (ruby_init_stack): use get_stack
+ on platforms which have pthread_attr_get_np.
+ (FreeBSD, DragonFlyBSD and NetBSD)
+ This is because FreeBSD and DragonFly BSD must use
+ pthread_attr_get_np to get stack size of main thread,
+ but Mac OS X and Linux with LinuxThreads must use getrlimit.
+ <http://www.nminoru.jp/~nminoru/programming/stackoverflow_handling.html>
+ <http://d.hatena.ne.jp/nurse/20100204>
+
+Thu Feb 4 09:55:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: FreeBSD, DragonFly BSD and OpenBSD needs
+ pthread_np.h to use pthread_*_np functions.
+ OpenBSD's pthread_*_np also depend sys/signal.h,
+ but it is included at signal.h via vm_core.h via thread.c.
+
+Thu Feb 4 08:15:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator): now inherits BasicObject.
+ [ruby-dev:39154], [Bug #2679], [ruby-dev:40242]
+
+Thu Feb 4 03:00:59 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): get red of
+ floating point exception.
+
+Thu Feb 4 01:24:01 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): fix infinity
+ handling. 1 / Infinity was evaluated to NaN.
+
+Thu Feb 4 00:37:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_mdump, time_mload): dump/load utc_offset.
+ [ruby-dev:40063]
+
+Wed Feb 3 22:22:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check for non-portable stack attribute functions.
+
+Wed Feb 3 20:10:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/iconv/charset_alias.rb: pass block argument to outer local
+ variable.
+
+Wed Feb 3 20:08:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c (realpath_rec): rb_path_last_separator may return NULL.
+
+Wed Feb 3 13:15:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c: DragonFlyBSD is also the same as FreeBSD
+ on getting the stack size of the main thread.
+
+Wed Feb 3 12:30:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): use pthread_get_attr_np
+ to get the stack size of the main thread on FreeBSD.
+
+ * thread_pthread.c: include pthread_np.h on FreeBSD.
+
+Wed Feb 3 11:38:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/{closure,function}.c: removed C99 features and warnings.
+
+Wed Feb 3 10:12:09 2010 Aaron Patterson <tenderlove@ruby-lang.org>
+
+ * ext/dl/function.c: DL::Function now uses libffi
+
+ * ext/dl/cfunc.c (rb_dl_set_last_error): set to non static so errors
+ can be exposed.
+
+ * ext/dl/closure.c: DL::Closure will now be used in place of
+ ext/dl/callback/*.
+
+ * ext/dl/dl.c: legacy callbacks removed in favor of libffi
+
+ * ext/dl/dl_conversions.(c,h): used for converting ruby types to FFI
+ types.
+
+ * ext/dl/callback/*: replaced by libffi callbacks.
+
+ * ext/dl/lib/dl/callback.rb: Converting internal callbacks to use
+ DL::Closure
+
+ * ext/dl/lib/dl/closure.rb: Ruby parts of the new DL::Closure object
+
+ * ext/dl/lib/dl/import.rb: More conversion to use DL::Closure object
+
+ * ext/dl/lib/dl/value.rb (ruby2ffi): adding private method for
+ DL::CPtr to ffi value conversion.
+
+Tue Feb 2 18:15:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c: turn on do_not_reverse_lookup by default,
+ which has been reverted in r9880 probably unintentionally,
+ according to matz. [ruby-core:24530]
+
+Tue Feb 2 14:46:06 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c: move implementation of each_slice, each_cons,
+ each_with_object to enum.c.
+
+ * enum.c (each_slice_i): convert multiple values from yield into
+ an array.
+
+ * enum.c (each_cons_i): ditto.
+
+ * enum.c (each_with_object_i): ditto.
+
+Tue Feb 2 14:30:27 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_each_entry): new method #each_entry to pack values
+ from yield into an array.
+
+ * lib/set.rb (Set#merge): use Enumerable#each_entry to implement
+ Set compatible to 1.8 behavior. [ruby-core:27985]
+
+ * lib/set.rb: replace is_a?(Enumerable) with respond_to?(:each)
+ for duck typing.
+
+ * lib/set.rb (SortedSet#add): typo fixed.
+
+Tue Feb 2 11:13:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#marshal_dump): exclude
+ delegator-specific instance variables.
+
+Mon Feb 1 21:26:41 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/matrix.rb (Vector#each2): returns a self. [ruby-dev:40241]
+
+Mon Feb 1 17:08:42 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_minus): RDoc update. a patch from red stun
+ in [ruby-core:27951]
+
+Mon Feb 1 07:36:33 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil/tkutil.c: fix SEGV on TkUtil::CallbackSubst._setup_subst_table.
+
+ * ext/tk/lib/tk.rb: [ruby1.9] fix freeze at exit.
+
+ * ext/tk/lib/tk.rb: [POTENTIAL INCOMPATIBLE] return NoMethodError
+ for TkWindow#to_ary and to_str.
+
+ * ext/tk/lib/tkextlib/tcllib/plotchart.rb: wrong arguments.
+
+ * ext/tk/sample/tkballoonhelp.rb: fail to support TkEntry widgets.
+
+Sun Jan 31 23:20:43 2010 wanabe <s.wanabe@gmail.com>
+
+ * io.c (rb_io_each_codepoint): use cbuf when needs readconv.
+
+Sun Jan 31 23:07:23 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_dir.rb: use string instead of symbol as file name.
+
+Sun Jan 31 22:41:33 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_string_value): fix the previous commit.
+
+Sun Jan 31 21:43:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_string_value): make no exception for Symbol.
+ [ruby-dev:40274]
+
+Sun Jan 31 21:10:15 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_throw): fixed infinite loop. [ruby-core:27969]
+
+Sun Jan 31 21:29:58 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/text.rb (REXML::Text#initialize): do Text.check only when
+ parent is specified, since Text.check may need doctype. partially
+ revert r26518.
+
+Sun Jan 31 15:50:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/text.rb (REXML::Text#initialize): fix typo and a bug that
+ seems to be caused by refactoring.
+
+Sun Jan 31 15:46:37 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/parent.rb (REXML::Parent#delete): return the deleted node
+ because the rdoc of REXML::Element#delete_element says it returns
+ "the element that was removed." [REXMLTracker#161]
+
+Sun Jan 31 14:33:00 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: A bug fix for deleting blank Table rows from Andy Hartford.
+
+Sun Jan 31 13:31:43 2010 wanabe <s.wanabe@gmail.com>
+
+ * gc.c (obj_free): free rb_classext_t of eigenclass. [Bug #1392]
+
+Sun Jan 31 13:00:14 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/document.rb (REXML::Document#add): fix duplicate XMLDecls
+ and bad DocTypes in REXML::Document. (Bug #19058) [ruby-core:27979]
+ based on the patch by Federico Builes.
+
+Fri Jan 29 22:49:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/getoptlong.rb (set_options): ensure that the type of argument is
+ Array, restoring this check that was deleted at r10239. This caused
+ rubyspec error.
+
+Fri Jan 29 12:59:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (mingw): needs $(DEFFILE) for extension libraries.
+ [ruby-core:27946]
+
+Fri Jan 29 11:09:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_do): log no source when no development env.
+
+ * lib/mkmf.rb (create_makefile): srcprefix always needs $(srcdir).
+
+ * lib/mkmf.rb (create_makefile): yield configuration if a block is
+ given.
+
+Fri Jan 29 09:43:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac.trans (buf_shift_char): don't see uninitialized
+ value. [ruby-dev:40233]
+
+Fri Jan 29 01:42:24 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#initialize_copy): use initialize_copy
+ instead of overriding clone/dup. [ruby-dev:40221]
+ it now always clones the target, it might cause incompatibility.
+
+Fri Jan 29 01:26:53 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_i): update RDoc to
+ denote that #to_i raises FloatDomainError for Inf and NaN.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_i): fast #to_i using
+ BigDecimal_split().
+
+ * bignum.c (conv_digit): use faster ISDIGIT() assuming ASCII.
+
+Fri Jan 29 00:18:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/cgi.rb: set autoload to CGI::HtmlExtension. [ruby-dev:40194]
+
+Thu Jan 28 09:44:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (onig_compile): initialize ScanEnv.
+ mainly to initialize env->warnings_flag [ruby-dev:40196]
+
+ * regparse.c (scan_env_clear): clear warnings_flag.
+
+Wed Jan 27 23:33:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/matrix/test_matrix.rb, test/matrix/test_vector.rb: add some
+ tests.
+
+Wed Jan 27 23:29:36 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/thread.rb (ConditionVariable#wait, signal, broadcast): return
+ self (for 1.8 compatibility).
+
+Wed Jan 27 23:27:54 2010 Keiju Ishitsuka <keiju@emperor2.pendome>
+
+ * lib/matrix.rb: add exception Matrix::ErrOperationNotImplemented
+ [ruby-dev:40149].
+ * lib/matrix.rb: change message of exception
+ Matrix::ErrOperationNotDefined [ruby-dev:40150], [ruby-dev:40176].
+ * lib/matrix.rb: add method Vector#/ [ruby-dev:40151].
+ * lib/matrix.rb(Matrix::Scalar#+,-,/): delete meaningless when
+ switch. [ruby-dev:40149]
+
+Wed Jan 27 23:22:54 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * vm_dump.c (bugreport_backtrace): trivial change.
+
+ * vm_dump.c (rb_vm_bugreport): uninitialized local variable i.
+ [ruby-dev:40169]
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_segv_test):
+ follow above change.
+
+Wed Jan 27 23:20:52 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_exception.rb
+ (TestException#test_thread_signal_location):
+ change test method name.
+
+Wed Jan 27 22:48:40 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/matrix.rb (determinant): fix name error.
+
+Wed Jan 27 22:26:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_backtrace): "circular require" warning was output to
+ stdout except the first line. All line is output to stderr now.
+ [ruby-dev:40147]
+
+Wed Jan 27 00:22:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod, BigDecimal_mod,
+ BigDecimal_divmod, BigDecimal_div2): BigDecimal#% and #div returned
+ an array itself that was returned by #divmod.
+
+Wed Jan 27 00:19:30 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): do not raise infinity
+ exception for BigDecimal("0E200000000000").
+
+Tue Jan 26 21:50:31 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): BigDecimal("0E200000000000")
+ was Infinity, not 0.
+
+ * test/bigdecimal/test_bigdecimal.rb: add a test for above.
+
+Tue Jan 26 21:36:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: test unsetenv returns a value.
+ unsetenv is void in older BSDs (FreeBSD 6 and OpenBSD 4.5 at least).
+
+ * hash.c (ruby_setenv): don't use the result of unsetenv if unsetenv
+ doesn't return a value.
+
+Tue Jan 26 21:32:03 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: suppress a warning.
+
+ * ext/extmk.rb: ditto.
+
+Tue Jan 26 20:23:22 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (rb_vm_invoke_proc): this function must not catch TAG_RETURN
+ because vm_exec does. This caused rubyspec error. [ruby-dev:40158]
+
+Tue Jan 26 20:21:28 2010 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/eq.rb: fix circular require in drb.
+ reported by akr. see [ruby-dev:40156] [ruby-core:27661]
+
+Tue Jan 26 19:59:17 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_gzfile_s_wrap): add rdoc. [Bug #2656]
+ patched by Hugh Sasse [ruby-core:27692] [ruby-core:27852]
+
+ * ext/zlib/doc/zlib.rd: removed.
+
+Tue Jan 26 16:43:34 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/strscan/strscan.c: fix rdoc. (length -> bytesize)
+ reported by Kornelius Kalnbach. see [ruby-core:27792]
+
+Tue Jan 26 07:06:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/matrix.rb: suppress warnings.
+
+Tue Jan 26 03:16:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c, vm_core.h, eval.c: because rb_protect must not be jumped by
+ callcc, revert r26407. And rename trap_tag to protect_tag and
+ change exception message (across trap -> across stack rewinding
+ barrier).
+
+Mon Jan 25 23:08:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (do_select): wrong conditions. [ruby-core:27753]
+
+Mon Jan 25 22:31:53 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/envutil.rb: use method_defined? instead of
+ instance_methods.include?.
+
+Mon Jan 25 22:08:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (rb_cont_call, cont_restore_1): remove trap_tag check because
+ it seems not to make sense. [ruby-dev:40121]
+
+ * vm_core.h, eval.c (rb_protect): ditto.
+
+Mon Jan 25 21:43:05 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/envutil.rb: fix the check if instance method `ruby' is
+ defined or not.
+
+Mon Jan 25 21:17:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rubyoptions.rb (test_segv_test): add a test for
+ bugreport trace dumper.
+
+Mon Jan 25 17:47:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (pty_check): needs WNOHANG to poll, return $?, and
+ call raise_from_check() with pid_t. [ruby-dev:40141]
+
+Mon Jan 25 17:36:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.c (RUBY_LIB, RUBY_*_LIB): moved from configures.
+
+Mon Jan 25 12:11:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (USE_SIGALTSTACK): only when SA_SIGINFO also is
+ available. see [ruby-core:27768].
+
+Mon Jan 25 12:02:34 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dln.c, file.c, io.c, signal.c: add __HAIKU__.
+ patched by Alexander von Gluck [ruby-core:27767]
+
+Mon Jan 25 11:45:47 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * math.c (domain_check): ignore errno if y is inf.
+ r26335 is because NetBSD 5.0's asin and acos returns
+ 0.0 with errno EDOM. But it breaks Linux whose gamma returns inf
+ with errno ERANGE on.
+
+Sun Jan 24 22:48:05 2010 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm.c, vm_eval.c, vm_insnhelper.c: fix issues about
+ return and c-return trace. This issue skips (c-)return event
+ with global jump such as break or return. This fix make vm invoke
+ hooks at stack rewind timing. fix [ruby-core:27606] [Bug #2610].
+
+ * test/ruby/test_settracefunc.rb: add a test for above.
+
+Sun Jan 24 14:21:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_strlen_cr): increment by rb_enc_mbminlen(enc) for
+ broken byte sequence. [ruby-core:27748]
+ (rb_str_inspect): ditto.
+
+Sun Jan 24 05:18:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): unlock all locking mutexes
+ before clean up. [ruby-core:26877]
+
+ * thread.c (rb_thread_atfork): no other threads to be joined.
+
+ * vm_core.h (rb_thread_lock_unlock, rb_thread_lock_destroy):
+ new functions.
+
+ * vm.c (ruby_vm_destruct): unlock and destroy global VM lock.
+
+Sun Jan 24 00:31:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/parser/ruby.rb: fix typo.
+ patched by Hal Brodigan [ruby-core:21536]
+
+Sun Jan 24 00:02:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/markup/to_html_crossref.rb: fix failure of the test.
+ patched by Tomoyuki Chikanaga and nobu [ruby-core:20564]
+
+Sat Jan 23 23:27:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (dir_s_glob): add rdoc by Roger Pack. [ruby-core:27669]
+
+Sat Jan 23 23:12:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/generator/html.rb (RDoc::Generator::HTML#gen_into):
+ make the rdoc(generating html) run faster and use less memory.
+ patch by Tetsu Soh [ruby-core:27656]
+
+Sat Jan 23 19:54:48 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE.ole_initialize,
+ WIN32OLE.ole_uninitialize to use in win32ole.rb.
+ You must not use these methods.
+
+ * ext/win32ole/lib/win32ole.rb: add win32ole.rb
+ re-define Thread#initialize (fix ruby-core:27634)
+
+Sat Jan 23 00:25:19 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * sample/coverage.rb: preserve exit status.
+
+Sat Jan 23 00:21:18 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_dir.rb: get rid of debug print.
+
+ * test/ruby/test_module.rb: fixed to make test-all work.
+
+Fri Jan 22 23:54:04 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: add a test for Array#rotate, rotate!.
+
+ * test/ruby/test_dir.rb, test/ruby/test_fnmatch.rb: add some tests
+ (for coverage of dir.c).
+
+ * test/ruby/test_enum.rb: add a test for Enumerable#minmax.
+
+ * test/ruby/test_enumerator.rb: add some tests for Enumerator#inspect,
+ Enumerator::Generator and Yielder.
+
+ * test/ruby/test_env.rb: add a test for ENV#index.
+
+ * test/ruby/test_exception.rb: add some tests (for coverage of
+ error.c).
+
+ * test/ruby/test_hash.rb: add a test for recursive check.
+
+ * test/ruby/test_integer.rb: add a test for number of argument of
+ Integer.
+
+ * test/ruby/test_method.rb: add a test for define_method.
+
+ * test/ruby/test_module.rb: add a test for constant of included
+ module.
+
+ * test/ruby/test_proc.rb: add a test for parameters with cfunc.
+
+Fri Jan 22 23:50:03 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_regexp.rb, test/ruby/test_symbol.rb,
+ test/ruby/test_variable.rb: add some tests (for coverage of
+ compile.c).
+
+Fri Jan 22 21:05:34 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mload): add submicro into vtm.subsecx. [ruby-dev:40133]
+
+Fri Jan 22 14:26:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (rdoc): needs encodings and exts.
+
+Fri Jan 22 14:16:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: add missing comma.
+
+Fri Jan 22 01:07:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_bignum.rb, test/ruby/test_class.rb,
+ test/ruby/test_defined.rb, test/ruby/test_hash.rb,
+ test/ruby/test_primitive.rb, test/ruby/test_variable.rb: add some
+ tests (for coverage).
+
+Fri Jan 22 01:03:28 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_require.rb (test_define_class): expect TypeError
+ instead of NameError. [ruby-core:27504]
+
+Thu Jan 21 15:09:35 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: some tidy.
+
+Thu Jan 21 11:15:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_rotate): new methods, Array#rotate! and
+ Array#rotate. [ruby-dev:17194]
+
+ * array.c (rb_ary_reverse_m): copy directly.
+
+Thu Jan 21 09:38:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: use AS_CASE instead of when, to get rid of
+ an unintentional substitution.
+
+Thu Jan 21 08:45:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_s_disasm): check for proc first. based on the
+ patch by Roger Pack in [ruby-core:27626]. [ruby-core:27227]
+
+Wed Jan 20 16:09:59 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * common.mk (compile.$(OBJEXT)): dependencies lacking.
+
+ * vm_method.c (rb_add_method_cfunc): invalid initializer for C89
+
+ * compile.c (iseq_insns_unification): int might be smaller than int*
+
+Tue Jan 19 20:00:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::Config.default_config_hash): return an
+ empty hash when resolv.conf is not available. [ruby-core:27620]
+
+ * lib/resolv.rb (Resolv::DNS::Config#lazy_initialize): fixed the
+ defaults of nameserver and port.
+
+Tue Jan 19 14:29:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (clean-ext): allow glob patterns.
+
+ * ext/extmk.rb: ditto.
+
+Tue Jan 19 14:19:26 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/{extconf.rb, zlib.c): crc32_combine and adler32_combine is
+ supported on Zlib 1.2.2.1, so check them for old zlib.
+
+Tue Jan 19 09:03:37 2010 Aaron Patterson <tenderlove@ruby-lang.org>
+
+ * ext/zlib/zlib.c: added Zlib.crc32_combine and Zlib.adler32_combine
+
+ * test/zlib/test_zlib.rb: corresponding tests [ruby-core:27551]
+
+Tue Jan 19 02:02:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: add some tests (for coverage).
+
+ * test/ruby/test_bignum.rb: ditto.
+
+Tue Jan 19 01:57:12 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_bignum.rb: some coerce definitions (for test) was
+ wrong.
+
+Tue Jan 19 01:53:11 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (bigsub_int): remove nonsense loop.
+
+Tue Jan 19 01:42:36 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (top_compstmt, top_stmts, top_stmt): prohibit BEGIN {} in
+ non-toplevel scope. [ruby-core:21657]
+
+ * test/ruby/test_beginendblock.rb (test_begininclass): add a test for
+ above.
+
+Mon Jan 18 17:16:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/httpservlet/filehandler.rb (make_partial_content):
+ add bytes-unit. [ruby-dev:40030]
+
+Mon Jan 18 15:49:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPHeader#{content_range,range_length}):
+ use inclusive range same as the header representation.
+
+Mon Jan 18 03:59:57 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_instance_hexdigest_bang): Fix
+ rdoc.
+
+ * ext/digest/lib/digest.rb (Digest::Class.base64digest)
+ (Digest::Instance#base64digest{,!}): New methods.
+
+Sun Jan 17 22:48:44 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_instance_digest)
+ (rb_digest_instance_hexdigest): Save a method call of reset()
+ for a disposable clone.
+
+Sun Jan 17 19:24:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * math.c (domain_check): check errno first.
+ NetBSD 5.0's asin and acos returns 0.0 with errno EDOM.
+
+Sun Jan 17 14:24:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (rb_str_derive): use long.
+
+ * ext/iconv/iconv.c (iconv_convert): suppress a warning.
+
+ * lib/mkmf.rb (check_signedness): new method.
+
+ * lib/mkmf.rb (have_header, create_header): use String#tr_cpp.
+
+Thu Jan 14 13:06:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_hash, int_chr): fixed type.
+
+Thu Jan 14 12:50:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_concat): fixed range check for Fixnum, and
+ added checks for integer overflow and invalid char code.
+
+Thu Jan 14 09:34:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_concat): raise RangeError when the argument is
+ negative value. [ruby-core:27583]
+
+Thu Jan 14 08:49:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_to_r): convert to rational if internal representation
+ is not rational.
+
+Thu Jan 14 04:01:50 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mdump): use nano_num and nano_den instead of subnano to
+ avoid Rational class in marshaled data which prevent unmarshal by
+ Ruby 1.8.
+ (time_mload): use nano_num and nano_den.
+
+Wed Jan 13 11:57:38 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * object.c (rb_class_initialize): Make sure BasicObject doesn't get
+ initialized twice [ruby-core:27577]
+
+ * class.c (rb_class_init_copy): ditto
+
+Wed Jan 13 06:54:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check for if struct timezone is defined.
+
+ * missing.h (struct timezone): define if not defined.
+
+ * win32/win32.h (struct timezone): defined in the newer w32api.
+ [ruby-core:27515]
+
+Wed Jan 13 00:33:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/shell/command-processor.rb: fix typo by Sho Hashimoto.
+ reported and patched at [ruby-dev:40058] [Bug #2599]
+
+Tue Jan 12 23:48:29 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb, test/rss/test_maker_0.9.rb:
+ accept any time format in maker. [ruby-core:26923]
+
+Tue Jan 12 21:56:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_set_len): call rb_str_modify.
+
+ * file.c (realpath_rec): don't call rb_str_modify before
+ rb_str_set_len.
+
+Tue Jan 12 20:44:14 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c (realpath_internal): call rb_secure.
+
+Tue Jan 12 16:48:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP.start): options may not be given.
+
+Tue Jan 12 16:48:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): check if instream
+ is closed instead of fd 0.
+
+ * ext/readline/readline.c (Init_readline): use STDIN for input.
+ Reported by Sora Harakami. See
+ http://d.hatena.ne.jp/codnote/20100111/1263174134
+
+Tue Jan 12 16:09:02 2010 wanabe <s.wanabe@gmail.com>
+
+ * test/ruby/test_process.rb (test_execopts_env): MANDATORY_ENVS might
+ not be a part of ENV. e.g. TMPDIR.
+
+Tue Jan 12 14:07:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP.start): add hash argument to
+ set ssl related options. when use_ssl is set default value
+ of verify_mode is OpenSSL::SSL::VERIFY_PEER. [ruby-dev:40003]
+
+Tue Jan 12 14:53:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_env): use _wputenv() instead of
+ SetEnvironmentVariableW() because latter doesn't set msvcrt's environ
+ work area, of course.
+ [Bug #2552]
+
+Tue Jan 12 13:33:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (realpath_rec): trace symbolic link only when supporting
+ readlink().
+
+Tue Jan 12 12:49:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-here-doc-beg-match): fix for here-doc
+ which ends with an underscore.
+
+Tue Jan 12 09:58:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c: need to include errno.h for EINVAL.
+
+ * hash.c (ruby_setenv): fixed typo. see [ruby-dev:40026]
+
+Tue Jan 12 09:22:43 2010 Tanaka Akira <akr@fsij.org>
+
+ * prelude.rb (require_relative): use File.realpath. [ruby-dev:40040]
+
+ * include/ruby/intern.h: declare rb_dir_getwd.
+
+ * dir.c (rb_dir_getwd): copied from dir_s_getwd to export.
+ (dir_s_getwd): use rb_dir_getwd.
+
+ * file.c (rb_file_s_realpath): new method File.realpath.
+ (rb_file_s_realdirpath): new method File.realdirpath.
+
+ * lib/pathname.rb (Pathname#realpath): use File.realpath.
+ (Pathname#realdirpath): use File.realdirpath.
+
+Mon Jan 11 22:45:08 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c (ruby_setenv): Improve the emulation of setenv(3) on
+ environments where putenv(3) is used. Raise EINVAL If a
+ variable name contains an '='.
+
+Mon Jan 11 18:16:38 2010 wanabe <s.wanabe@gmail.com>
+
+ * vm_insnhelper.h (GET_BLOCK_PTR): return 0 when in class frame.
+ [Bug #2583]
+
+Mon Jan 11 16:52:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_strlen): added. [ruby-dev:40028]
+
+ * include/ruby/intern.h (rb_str_strlen): declared.
+
+Mon Jan 11 13:30:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/accesslog.rb (WEBrick::AccessLog#format): fixed typo.
+
+ * lib/webrick/httpstatus.rb (WEBrick::HTTPStatus::Status#initialize):
+ accept 0 or more arguments. [ruby-dev:40021]
+
+Mon Jan 11 12:47:58 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c (ruby_setenv): ENV.[]= should raise an error if setenv(3)
+ or putenv(3) fails. [ruby-dev:40023]
+
+Sun Jan 10 17:25:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/accesslog.rb : Escape needed.
+
+ * lib/webrick/httpstatus.rb : ditto.
+
+ * lib/webrick/httprequest.rb : ditto.
+
+ * lib/webrick/httputils.rb : ditto.
+
+ * test/webrick/test_cgi.rb (TestWEBrickCGI::test_bad_): Test for it.
+
+Sun Jan 10 04:54:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_define_class): raise TypeError same as class
+ statement. [ruby-core:27504]
+
+Sun Jan 10 04:41:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): needs ARCH_FLAG.
+
+Sat Jan 9 14:20:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (install-all): maybe typo.
+
+Sat Jan 9 14:01:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD_vfprintf): get rid of a warning of VC++ x64.
+
+Sat Jan 9 08:40:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/configure.bat (WIN32DIR): regularise file separators.
+
+Fri Jan 8 23:35:18 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (mnew): don't check visibility of method body if public
+ ZSUPER method is found. [ruby-dev:39767]
+
+ * test/ruby/test_method.rb: add a test for above.
+
+Fri Jan 8 22:59:40 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_method.c (rb_alias): skip ZSUPER method when searching body of
+ source method. [ruby-dev:39760]
+
+ * test/ruby/test_alias.rb: add a test for above.
+
+Fri Jan 8 21:15:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http, lib/net/https: move content from net/https to
+ net/http. [ruby-dev:39986]
+
+Fri Jan 8 14:06:01 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_s_read): close the IO if an exception is raised on
+ seeking. [ruby-core:27429]
+
+Fri Jan 8 13:12:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_symbol): dump no encoding for 7bit only coderange
+ symbol. [ruby-core:27375]
+
+Thu Jan 7 07:56:09 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.5.0 r5596.
+ * test/minitest/*.rb: ditto.
+
+Tue Jan 5 19:30:53 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_exception.rb: add a test. cf [ruby-dev:39116]
+
+Tue Jan 5 02:03:34 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (DTRACE): clear this when `dtrace -l` fails.
+ Note that current FreeBSD needs privilege to call it;
+ so to use DTrace on FreeBSD, you should run configure as root.
+
+Mon Jan 4 21:24:18 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gc.c: added UNLIKELY to probes for optimization.
+
+ * vm.c: ditto.
+
+ * thread.c: ditto.
+
+Mon Jan 4 09:30:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (TRACING_MODEL): follow yugui's previous changes.
+
+Mon Jan 4 09:30:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (InterlockedExchangePointer): old SDK support.
+
+Sun Jan 3 23:54:51 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * trace.h: new file. wraps tracing mechanisms.
+
+ * defs/dtrace.d: new file. defined a dtrace provider "ruby".
+
+ * include/ruby/ruby.h (LIKELY): moved from vm.c.
+ (UNLIKELY): ditto.
+ (OBJSETUP): probe "object-create".
+ (RUBY_EVENT_RESCUE): new event.
+
+ * vm_exec.c (DEBUG_ENTER_INSN): embedded a probe insn-entry into it.
+ (DEBUG_END_INSN): insn-return.
+
+ * vm.c (LIKELY): moved into ruby.h.
+ (UNLIKELY): ditto.
+ (Init_BareVM): embedded a probe "raise" into it.
+
+ * variable.c (rb_class2name_without_alloc): new utility function.
+
+ * tool/rbinstall.rb (install?(:ext, :arch, :'ext-arch')): installs
+ dtrace.d if necessary.
+
+ * thread_pthread.c (add_signal_thread_list): probe "raise".
+ (rb_thread_create_timer_thread): ditto.
+
+ * thread.c (rb_thread_schedule_rec): probes "thread-enter" and
+ "thread-leave",
+ (thread_start_func_2): ditto.
+ (thread_cleanup_func): probe "thread-term"
+
+ * lib/mkmf.rb: supports dtrace postprocessor on making an extension.
+
+ * iseq.c (rb_vm_insn_name): new utility function.
+ (rb_vm_insn_len): ditto.
+
+ * insns.def (hook): probes "method-entry", "method-return", "line",
+ and "rescue".
+
+ * compile.c (iseq_compile_each): adds a trace op for "rescue" probe.
+
+ * gc.c (garbage_collect): probes "gc-begin" and "gc-end".
+ (obj_free): probe "object-free"
+ (garbage_collect_with_gvl): probe "raise"
+ (negative_size_allocation_error): ditto.
+ (rb_memerror): ditto.
+
+ * eval.c (rb_rescue2): probe "rescue"
+ (rb_longjmp): probe "raise"
+
+ * ext/probe/probe.c: new extension for application defined probes.
+
+ * ext/probe/extconf.rb: ditto.
+
+ * configure.in (--with-tracing-model): new option to choose a tracing
+ mechanism.
+ (DTRACE): new substitution. name of dtrace(1).
+ (RUBY_TRACING_MODEL): new substitution.
+ (DTRACE_OBJ): ditto.
+ (MINIDTRACE_OBJ): ditto.
+ (GOLFDTRACE_OBJ): ditto.
+ (LIBRUBY_DTRACE_OBJ): ditto.
+ (RUBY_DTRACE_POSTPROCESS): new macro. checks whether the dtrace on
+ the system needs postprocessing.
+ (RUBY_DTRACE_BSD_BROKEN): new macro. checks whether the dtrace
+ supports USDT.
+
+ * Makefile.in:
+ (DTRACE): new variable. name of dtrace(1).
+ (TRACING_MODEL): new variable. name of the chosen tracing mechanism.
+ (DTRACE_OBJ): same as the one in configure.in.
+ (MINIDTRACE_OBJ): ditto.
+ (GOLFDTRACE_OBJ): ditto.
+ (LIBRUBY_DTRACE_OBJ): ditto.
+ (CPPOUTFILE): new substitution. necessary for generating dtrace.d
+ (trace_none.h): new target for TRACING_MODEL=none
+ (RUBY_H_INCLUDES): appended a header for tracing.
+ (distclean-local): also removes preprocessed version of dtrace.d
+ ($(LIBRUBY_A)): needs $(LIBRUBY_DTRACE_OBJ) if dtrace needs
+ postprocessing.
+ ($(PROGRAM)): ditto.
+ (golf): ditto.
+ (miniruby): ditto.
+ ($(arch_hdrdir)/ruby/dtrace.d): new target. preprocessed version
+ of defs/dtrace.d. generated if necessary.
+ ($(arch_hdrdir)/ruby/trace_dtrace.h): new target.
+ definition of probes.
+ ($(LIBRUBY_DTRACE_OBJ)): new target. generated if dtrace needs
+ postprocessing.
+ ($(DTRACE_OBJ)): ditto.
+ ($(MINIDTRACE_OBJ)): ditto.
+ ($(GOLFDTRACE_OBJ)): ditto.
+
+Sun Jan 3 15:34:19 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/rexml/text.rb: String no longer has #each.
+ Patch by Mitsutaka Mimura (takkanm). [ruby-dev:39949].
+
+Sun Jan 3 01:29:18 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder#inspect):
+ implemented.
+
+Sat Jan 2 15:57:54 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS#initialize): new option :nameserver_port.
+ (Resolv::DNS#each_resource): pass port number.
+ (Resolv::DNS#make_requester): ditto.
+ (Resolv::DNS::Config#lazy_initialize): initialize @nameserver_port
+ instead of @nameserver.
+ (Resolv::DNS::Config#single?): return port number addition to the
+ nameserver.
+ (Resolv::DNS::Config#generate_timeouts): use @nameserver_port.
+ (Resolv::DNS::Config#resolv): yield port number.
+
+Sat Jan 2 00:43:22 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (initialize_regexp): allow leading
+ and trailing white space, and forbid extra characters
+ on another lines. [ruby-core:26223]
+ RFC 3986 Appendix C. Delimiting a URI in Context
+ draft-duerst-iri-bis-07 7.2. Web Address processing
+
+Fri Jan 1 23:17:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI#normalize!): normalize case of
+ scheme. [ruby-core:27309]
+
+Fri Jan 1 00:47:57 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_instance_method_unimpl): Suppress
+ compiler warnings.
+
+Fri Jan 1 00:00:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/mkconfig.rb: generate RbConfig.ruby in rbconfig.rb.
+
+ * lib/webrick/httpservlet/cgihandler.rb: use RbConfig.ruby.
+
+ * test/ruby/envutil.rb: ditto.
+
+ * benchmark/report.rb: ditto.
+
+ * benchmark/runc.rb: ditto.
+
+ * tool/eval.rb: ditto.
+
+Thu Dec 31 18:18:55 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/rubysocket.h: include addrinfo.h only when using our own
+ getaddrinfo.c.
+
+Thu Dec 31 14:20:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (save_redirect_fd): consider EBADF that the fd is not used.
+ [ruby-dev:39938]
+
+Thu Dec 31 06:03:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_type): typed.
+
+ * ext/socket/extconf.rb: fix for wide-getaddrinfo option.
+
+ * ext/socket/addrinfo.c: rename {addr,name}info functions to ensure
+ those are used on darwin.
+
+Thu Dec 31 03:27:53 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (native_thread_destroy): decreased the probability of
+ using the interrupt event in the thread termination.
+ see [ruby-core:27199].
+
+Thu Dec 31 02:35:57 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (w32_error): should report the function.
+
+Thu Dec 31 01:58:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: fix for extstatic.
+
+Wed Dec 30 19:43:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/ruby.h (RREGEXP_SRC_END): added.
+
+Wed Dec 30 19:40:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/defines.h (INFINITY): this is float.
+
+ * include/ruby/defines.h (NAN): ditto.
+
+ * numeric.c (rb_infinity): change content as float.
+
+ * numeric.c (rb_nan): ditto.
+
+Wed Dec 30 17:59:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb (push_all_highest_version_gems_on_load_path):
+ simplified.
+
+ * lib/rubygems/command_manager.rb (Gem#load_and_instantiate):
+ rescue only NameError from const_get.
+
+ * lib/rubygems/source_index.rb (Gem#load_specification): don't use
+ RUBY_VERSION to branch.
+
+ * lib/rubygems/validator.rb (Gem::TestRunner, Gem#alien): ditto.
+
+ * lib/rubygems.rb: Kernel#gem is already defined, and workaround
+ for home directory and custom_require are no longer needed.
+
+Tue Dec 29 16:03:33 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): Add Float::INFINITY and Float::NAN.
+ [ruby-dev:1657] [ruby-dev:4760] [ruby-list:7023]
+ [ruby-list:46690]
+ [ruby-core:26632] [ruby-talk:41352] [ruby-talk:203333]
+
+ * include/ruby/defines.h (INFINITY): defined.
+
+ * include/ruby/defines.h (NAN): defined.
+
+ * include/ruby/util.h (ruby_div0): removed.
+
+ * numeric.c (fix_pow): use INFINITY and NAN
+ instead of ruby_div0(1.0).
+
+ * marshal.c (r_object0): ditto.
+
+ * bignum.c (big_fdiv): ditto.
+
+Tue Dec 29 10:36:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser::STANDALONE):
+ any number spaces can be placed between equal-sign and the value.
+ patch from Ed Howland in [ruby-core:27345].
+
+Mon Dec 28 22:33:58 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): force to inherit standard I/O handles.
+ this change fixes [ruby-core:27273], but other side effects might
+ exist.
+
+Mon Dec 28 22:00:10 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_marshal.rb: added tests for taintness/untrustness
+ propagation.
+
+Mon Dec 28 18:13:26 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * sample/occur2.rb: reimplemented in modern style. [ruby-dev:39927].
+
+Mon Dec 28 17:19:37 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/install-sh: correction by Hiro Asari.
+ https://gist.github.com/264558/58ad1cae45cde49600bbb39286af2aae23e639d5
+
+Mon Dec 28 13:18:52 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/install-sh: wrote the intention. [ruby-dev:39928]
+
+Sun Dec 27 10:45:00 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (foleparam_initialize): add foleparam_initialize
+ to check argument of WIN32OLE_PARAM.new
+
+ * test/win32ole/test_win32ole_param.rb (test_s_new): add some assertion
+ to test WIN32OLE_PARAM.new
+
+Sun Dec 27 09:41:54 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/rbinstall.rb (install?(:local, :comm, :bin, :'bin-comm')):
+ Makes it vim friendly. __END__ in a heredoc is confusing with
+ the script end for vim.
+
+Sun Dec 27 09:13:55 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * sample/occur2.rb: have been broken. fixed for Ruby 1.9 feature.
+
+Thu Dec 24 16:32:30 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/uri/generic.rb (eql?): Check the class of the compared object.
+ Based on a patch by Peter McLain [ruby-core:27019]
+
+Thu Dec 24 15:20:03 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regexec.c (match_at): follow enclen's change.
+
+Thu Dec 24 12:08:00 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/delegate.rb (marshal_dump/load): dump & load instance variables
+ by default [ruby-core:24211]
+
+Thu Dec 24 10:31:50 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/object.c (rb_obj_cmp): Default <=> operator returns 0 if
+ objects are == [ruby-core:24063]
+
+Wed Dec 23 09:12:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/cgi/test_cgi_multipart.rb (CGIMultipartTest#_prepare):
+ always must be binary mode. c.f. Bug#2341
+
+Thu Dec 10 09:20:58 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): undef Encoding.new because
+ a class which is rb_undef_alloc-func-ed can't call new method.
+ [ruby-dev:39862]
+
+ * vm.c (Init_VM): undef RubyVM.new and RubyVM::Env.new.
+
+Mon Dec 21 17:51:44 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (optimize_node_left): include equal on the condition of for-loop.
+ This bug also affects original Oniguruma. [ruby-core:27247]
+
+Mon Dec 21 10:03:33 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (print_enc_string): follow enclen's change.
+
+ * regcomp.c (onig_print_compiled_byte_code): ditto.
+
+ * regcomp.c (onig_print_compiled_byte_code): change prototype.
+
+ * regint.c (onig_print_compiled_byte_code): comment out.
+
+Mon Dec 21 08:04:34 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * object.c: BasicObject#initialize accepts any number of arguments
+ [ruby-core:27080]
+
+Mon Dec 21 02:45:46 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_iterate): remove SEGV (retry).
+
+Sun Dec 20 23:18:23 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_iterate): remove SEGV (use the original patch).
+ [ruby-dev:39874]
+
+Sun Dec 20 21:26:05 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_iterate): pass current block when the argument bl_proc
+ is NULL. This behavior can be used to make enumerator faster
+ [ruby-dev:39874]
+
+ * enumerator.c (enumerator_each): pass current block directly instead
+ of trampoline block (enumerator_each_i).
+
+ * io.c (argf_each_line, argf_each_byte, argf_each_char): ditto.
+
+Sat Dec 19 14:59:30 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gem_prelude.rb (Kernel#gem): should make gem private. a patch
+ from Sho Hashimoto in [ruby-dev:39838].
+
+Sat Dec 19 14:57:17 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/webrick/config.rb (WEBrick::Config): typo fixed. a patch
+ from Sho Hashimoto in [ruby-dev:39835].
+
+Sat Dec 19 11:06:48 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (each2,collect2,map2): Fix enumerator
+ [ruby-core:27225]
+
+Sat Dec 19 09:58:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (check_funcall): reset method_missing_reason before
+ trying the call. based on a patch from Yehuda Katz in
+ [ruby-core:27219].
+
+Sat Dec 19 09:29:22 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/set.rb: Add checks that passed argument is Enumerable.
+ [ruby-core:23844]
+
+Wed Dec 16 20:28:46 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/envutil.rb: fix a typo in assert message.
+
+Wed Dec 16 16:57:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/un.rb (httpd): try to convert port number to integer.
+
+Wed Dec 16 11:18:30 2009 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in(MINIRUBY): use "$BASERUBY" as a default ruby executable
+ name.
+
+Wed Dec 16 00:53:14 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/find.rb (Find.find): rescue more exceptions which is possible to
+ occur by other process change the directory tree.
+
+Tue Dec 15 09:06:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/find.rb (Find.find): get rid of race condition.
+
+Mon Dec 14 22:33:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/find.rb (Find.find): rescue only ENOENT and EACCES for lstat.
+
+Mon Dec 14 21:49:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/find.rb (Find.find): narrow rescue region.
+
+Mon Dec 14 09:20:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/find.rb (Find.find): removed already unnecessary code.
+
+Sun Dec 13 23:48:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/find.rb (Find.find): sort directory entries. [ruby-dev:39847]
+
+Sun Dec 13 20:55:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (invoke_ruby): call to_str for stdin_data to
+ reject non-string.
+
+Sun Dec 13 20:26:57 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (rb_parser_dump_tree): add prototype.
+
+Thu Dec 10 20:55:55 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode_data.h, transcode.c, tool/transcode-tblgen.rb: Added
+ support for new transcoding instruction FUNsio (with Tatsuya Mizuno)
+
+ * enc/trans/gb18030.trans: Significantly reduced GB18030 conversion
+ table footprint using FUNsio and differences (with Tatsuya Mizuno)
+
+ * test/ruby/test_transcode.rb: Minor name fix (from Tatsuya Mizuno)
+
+Thu Dec 10 17:22:36 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (yield_under): yields self the same as 1.8.
+
+Thu Dec 10 15:49:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (native_mutex_reinitialize_atfork): release and
+ re-acquire the lock at re-initialization.
+
+Thu Dec 10 12:56:02 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_replicate): add Encoding#replicate(name).
+
+ * encoding.c (enc_replicate_with_index): renamed from old
+ enc_replicate.
+
+ * encoding.c (rb_enc_from_encoding_index): split from
+ rb_enc_from_encoding.
+
+Thu Dec 10 09:15:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): CHAR_ESC_LEN should be 13.
+
+Thu Dec 10 01:12:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (dyna_pop_gen): pop dvars. [ruby-dev:39861]
+
+Thu Dec 10 00:46:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.c (dump_node): fixed for long members.
+
+Wed Dec 9 22:57:04 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * node.c: node management added. Currently, only pretty-dumper is
+ implemented. [ruby-dev:39853]
+
+ * ruby.c: --dump=parsetree and --dump=parsetree_with_comment options
+ added. This is just for debug or research purpose. Note that the
+ compatibility of these options are not supported at all.
+
+Wed Dec 9 09:50:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_justify): fixed the case a fill size is a
+ multiple of the length of the padding. [ruby-dev:39856]
+
+Tue Dec 8 23:41:34 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat: now recognize --with-*-{dir,include,lib} options
+ and pass them to mkmf.
+
+ * win32/configure.bat: general conversion from ``/'' to ``\'' of
+ configure_args is not necessary any longer.
+
+ * win32/setup.mak: BASERUBY is used as command, so always need to
+ convert ``/'' to ``\'' within it.
+
+Tue Dec 8 23:39:52 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (flo_eq): suppress a warning on VC++ for x64.
+
+Tue Dec 8 16:19:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems: update to 1.3.5.
+
+ * lib/rubygems/defaults.rb (Gem::default_dir): removed a clause
+ doing nothing.
+
+Tue Dec 8 03:50:24 2009 Tanaka Akira <akr@fsij.org>
+
+ * file.c (rb_f_test): use string form in unknown command error
+ message.
+
+Mon Dec 7 14:11:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object): reverted r26007. [ruby-dev:39845]
+
+ * test/test_delegate.rb (test_marshal): moved from test_marshal.rb.
+
+Mon Dec 7 13:05:59 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * string.c (rb_str_justify): CVE-2009-4124.
+ Fixes a bug reported by
+ Emmanouel Kellinis <Emmanouel.Kellinis AT kpmg.co.uk>, KPMG London;
+ Patch by nobu.
+
+Sun Dec 6 23:50:46 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * strftime.c: %l should be 1..12 instead of 0..12 [ruby-core:27072]
+
+Sun Dec 6 23:16:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/find.rb (Find.find): reduce stat system call.
+
+Sun Dec 6 16:02:15 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httpservlet/filehandler.rb: escape filename of index.
+ [ruby-dev:37768]
+
+Sun Dec 6 00:35:16 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (config.h): EXECUTABLE_EXTS moved from
+ dln.c:dln_find_1().
+
+Sat Dec 5 15:35:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object): dump instance variables when using
+ marshal_dump. [ruby-core:24211]
+
+ * variable.c (rb_ivar_count): added.
+
+Sat Dec 5 13:19:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: default ac_cv_prog_CC to CC.
+
+Sat Dec 5 10:18:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/extend-command.rb (def_extend_command): fixed argument
+ number for negative arity.
+
+Fri Dec 4 16:50:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (k_def): adjust the location of method definition to the
+ line of def. [Bug #2427]
+
+Fri Dec 4 19:05:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (defined): should respect #respond_to_missing? as
+ #respond_to? does.
+
+Fri Dec 4 15:50:18 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (yield_under): does not yield self, and passes blockptr
+ instead of &block to vm_cref_push(). [ruby-dev:39833]
+
+Fri Dec 4 15:15:43 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (num_exact): should not accept strings as operands, even
+ though they respond to #to_r. ideally, strict rational
+ conversion should be done by a method like #to_rational, not #to_r.
+ [ruby-core:23729]
+
+Fri Dec 4 13:10:23 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/stringio/stringio.c (ungetc): RDoc updated. trunk allows
+ pushing back behind the beginning of the pseudo stream.
+
+Fri Dec 4 03:10:38 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * compile.c (compile_cpath, iseq_compile_each): reverted
+ constant/class variable lookup in instance_eval etc. to the
+ behavior of 1.8.
+
+ * eval.c (rb_mod_nesting): ditto.
+
+ * insns.def (putspecialobject, defineclass): ditto.
+
+ * node.h (NODE_FL_CREF_PUSHED_BY_EVAL): ditto.
+
+ * vm_core.h (VM_SPECIAL_OBJECT_CONST_BASE): ditto.
+
+ * vm_eval.c (yield_under, eval_under): ditto.
+
+ * vm_insnhelper.c (vm_cref_push, vm_get_const_base,
+ vm_get_ev_const, vm_get_cvar_base): ditto.
+
+Thu Dec 3 20:27:27 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/gb18030-tbl.rb: Fix omission of C1 region in code table
+ (from Tatsuya Mizuno)
+
+ * test/ruby/test_transcode.rb: Added test for converting full range of
+ Unicode codepoints from/to GB18030 (from Tatsuya Mizuno)
+
+Wed Dec 2 23:51:28 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c: initialize @hostname of SSLSocket to avoid
+ warning at SSLSocket#connect.
+
+Tue Dec 1 18:01:43 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/digest/test_digest_extend.rb: added tests for digest framework.
+
+Tue Dec 1 12:01:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (dyna_push_gen, dyna_pop_gen): no needs to save both of
+ args and vars. [ruby-core:26961]
+
+ * parse.y (dyna_push_gen): use rb_node_newnode() for ripper.
+ [ruby-core:26961]
+
+ * parse.y (dyna_push_gen, dyna_pop_gen): adjust local vtable level
+ for the case of syntax errors in method name or argument inside
+ do block. [ruby-core:26961]
+
+Mon Nov 30 16:57:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (command_output): $makeflags are already quoted.
+
+Mon Nov 30 16:54:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (EXECUTABLE_EXTS): moved from
+ dln.c:dln_find_1().
+
+ * lib/mkmf.rb (def find_executable0): use EXECUTABLE_EXTS, not
+ only EXEEXT. [ruby-core:26821]
+
+Mon Nov 30 11:00:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): suppress an extra error message after
+ numeric literal without digits. based on a patch from ujihisa .
+ in [ruby-dev:39811]. [ruby-dev:39798]
+
+Sun Nov 29 16:56:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (check_funcall_failed): pass ID. [ruby-core:26934]
+
+Sun Nov 29 06:37:53 2009 Aaron Patterson <tenderlove@ruby-lang.org>
+
+ * lib/rexml/formatters/default.rb (write_attribute): fix an
+ exception when printing a document when duplicate namespaced
+ attributes exist. Thanks, Alexey Froloff [ruby-core:26837]
+
+Sat Nov 28 09:05:53 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_eval.c (check_funcall_failed): should rescue user raised
+ NoMethodError. rescue all NoMethodError if receiver does not
+ respond to the method name. [ruby-dev:39796]
+
+Thu Nov 26 21:14:30 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_complex.rb (@unify): fix the detection if math
+ loaded. This makes test_complex.rb work fine with the previous
+ commit.
+
+ * test/ruby/test_rational.rb (@unify): ditto.
+
+Thu Nov 26 21:13:36 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/test_mathn.rb (TestMathn): new test case.
+ test for r25067.
+
+Thu Nov 26 21:11:23 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/openssl/test_config.rb (OpenSSL::TestConfig): new test case.
+ test for r25017.
+
+Thu Nov 26 21:08:54 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_range.rb (TestRange#test_comparison_when_recursive):
+ test for r25010.
+
+ * test/ruby/test_struct.rb (TestStruct#test_comparison_when_recursive):
+ ditto.
+
+Thu Nov 26 20:18:02 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gem_prelude.rb (Gem.set_home): must dup before force_encoding
+ and must force_encoding before gsub.
+ cf. Yen Sign problem of SJIS [ruby-core:26910]
+
+Thu Nov 26 17:54:37 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{configure.bat, setup.mak, Makefile.sub}: add new configure
+ option ``--with-ntver''.
+
+Thu Nov 26 11:42:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/base.rb: use $INCFLAGS to add -I option. [Bug#2387]
+
+Thu Nov 26 07:17:58 2009 wanabe <s.wanabe@gmail.com>
+
+ * marshal.c (mark_dump_arg): mark str. see also [ruby-dev:39735]
+
+Thu Nov 26 00:05:58 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/digest/test_digest_extend.rb: Added tests for current digest
+ framework.
+
+Wed Nov 25 20:46:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_search_method_entry): refine error message.
+
+Wed Nov 25 19:29:05 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_instance_method_unimpl): Do not
+ call rb_inspect() on an object that does not implement necessary
+ methods; reported by NaHi.
+
+Wed Nov 25 19:30:30 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: Added a check for an internal error
+ (with Tatsuya Mizuno)
+
+Tue Nov 24 22:57:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (EnvUtil.invoke_ruby): raise Timeout::Error
+ instead of flunk. reported by Yusuke Endoh.
+
+Tue Nov 24 22:31:44 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (ruby_vm_destruct, thread_memsize): fix argument type to make
+ RUBY_MARK_FREE_DEBUG available.
+
+Tue Nov 24 21:25:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * error.c: include errno.h at beginning.
+
+Tue Nov 24 20:11:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c: %Y format a year with 4 digits at least.
+
+ * lib/time.rb: format a year with 4 digits at least.
+
+Tue Nov 24 20:05:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * defs/known_errors.def: more errors.
+
+Tue Nov 24 20:01:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (rb_bug_errno): declared.
+
+ * include/ruby/intern.h (rb_strerrno): declaration removed.
+
+ * error.c (rb_strerrno): make it static. return NULL for unknown
+ errors.
+ (rb_bug_errno): defined.
+
+ * thread_pthread.c: use rb_bug_errno.
+
+ * signal.c (ruby_signal): use rb_bug_errno.
+
+Tue Nov 24 10:17:38 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_path_convert): fix fs_encoding is not assign.
+
+Tue Nov 24 10:00:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_strerrno): constified.
+
+Tue Nov 24 09:49:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * error.c (rb_strerrno): return "UNKNOWNERROR" for non-zero unknown
+ error.
+
+Tue Nov 24 09:18:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_strerrno): declared.
+
+ * template/known_errors.inc.tmpl: generate defined_error() and
+ undefined_error() instead of set_syserr.
+
+ * error.c (Init_syserr): define defined_error() and undefined_error()
+ to follow the above change.
+ (rb_strerrno): defined.
+
+ * thread_pthread.c: show error message and errno macro name with
+ rb_bug.
+
+Mon Nov 23 16:06:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (RUBY_STACK_MIN, RUBY_STACK_SPACE): delay for
+ platforms where PTHREAD_STACK_MIN is not compile time constant.
+ [ruby-dev:39751]
+
+Mon Nov 23 11:26:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_1): removed duplication.
+
+Mon Nov 23 04:12:00 2009 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans (fun_so_universal_newline): generate \n
+ after \r\n detection instead of just after \r.
+ [ruby-list:45988] [ruby-core:25881] [ruby-core:26788]
+
+Sat Nov 21 18:48:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_search_method_entry): show flags and klass value in
+ not implemented error message.
+
+Sat Nov 21 16:38:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (marshal_dump): use normal object as the buffer so
+ that no hidden object is exposed to ruby-level. [ruby-dev:39744]
+
+Sat Nov 21 15:58:43 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (read_all): fix: false negative invalid byte sequence
+ on reading from pipes. [ruby-dev:39743]
+ fix: assign the variable 'pos' as relative value from recent pos.
+
+Sat Nov 21 14:44:16 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_path_convert): delay getting UTF8-MAC encoding
+ while really needed. [ruby-core:26807]
+
+Fri Nov 20 21:16:54 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_search_method_entry): avoid trigraph.
+
+Thu Nov 19 23:17:06 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (putbinaryfile): use APPE for resume.
+ Thanks, Tomoyuki Chikanaga.
+
+Thu Nov 19 22:50:05 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (flag_list): untaint strings to intern in the safe
+ level 1.
+
+ * lib/net/imap.rb (max_flag_count=): new methods to set the max
+ number of flags interned to symbols.
+
+Thu Nov 19 20:43:39 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/getnameinfo.c: need to include extconf.h for HAVE_* macros.
+ reported by Kenta Murata <mrkn AT mrkn.jp> via IRC.
+
+Thu Nov 19 17:00:59 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: nmake execute the file named echo if it exists
+ in the PATH. reported by Kenta Murata <mrkn AT mrkn.jp> via IRC.
+
+Thu Nov 19 02:50:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_search_method_entry): show the type of the hidden
+ object.
+ (rb_type_str): new function for above.
+
+Thu Nov 19 00:47:09 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (MORE_CHAR_SUSPENDED): renamed from MORE_CHAR_CBUF_FULL.
+
+Wed Nov 18 22:00:13 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fill_cbuf): extracted from more_char.
+ (io_shift_cbuf): fix memmove condition.
+ (read_all): use fill_cbuf directly to avoid ECONV_AFTER_OUTPUT.
+ [ruby-dev:39708]
+
+Wed Nov 18 18:25:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_atfork_internal): reinitialize global lock
+ at fork to get rid of deadlock. based on the patch from Hongli
+ Lai in [ruby-core:26783]. [ruby-core:23572]
+
+Wed Nov 18 17:48:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (terminate_atfork_i): all mutex locks by other threads
+ have been abandoned at fork.
+
+Wed Nov 18 15:27:20 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (file_path_convert): delay getting filesystem encoding
+ while really needed.
+
+Wed Nov 18 12:33:42 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_set_default_encoding): reset filesystem
+ encoding because on resetting default_external because
+ Unix's filesystem encoding depends on default_external.
+
+ * encoding.c (enc_set_filesystem_encoding): added.
+
+ * ruby.c (process_options): don't call rb_filesystem_encoding
+ because filesystem encoding is reset when default_external
+ is reset.
+
+Wed Nov 18 11:57:32 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * math.c (math_gamma): fix incorrect comparison expression.
+ see also [ruby-dev:39709] [Bug #2381]
+
+Wed Nov 18 11:37:05 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_scan_open_args): move path encoding conversion
+ for filesystem encoding of Mac OS X.
+
+ * file.c (file_path_convert): added for convert encoding
+ of file path.
+
+ * file.c (rb_get_path_check): add file_path_convert.
+
+Wed Nov 18 10:17:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_utf8_nth): no count_utf8_lead_bytes_with_word
+ optimization for short string. [ruby-core:26787]
+
+ * string.c (str_utf8_offset): str_utf8_nth never return NULL.
+
+Wed Nov 18 10:12:34 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_undef): should raise TypeError if klass is nil.
+ 1.instance_eval { undef to_s } causes SEGV before this fix.
+
+ * test/ruby/test_undef.rb: new tests for undef.
+
+Wed Nov 18 08:41:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_utf8_nth): fixed overrun. [ruby-core:26787]
+
+Wed Nov 18 07:51:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (parse_mode_enc): fix invalid access.
+
+Tue Nov 17 23:50:06 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_alias): should raise TypeError if klass is nil.
+ 1.instance_eval { alias to_string to_s } causes SEGV before this
+ fix.
+
+ * test/ruby/test_alias.rb (test_special_const_alias): ditto.
+
+Tue Nov 17 17:53:53 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/big5.c, enc/trans/big5.trans, enc/trans/big5-uao-tbl.rb,
+ test/ruby/test-transcode.rb: Added Encoding 'Big5-UAO' and transcoding
+ for it (from Tatsuya Mizuno) (see Bug #1784)
+
+Tue Nov 17 16:26:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (opt_case_dispatch): runtime value cannot be used as
+ an element initializer.
+
+ * vm_insnhelper.c (opt_case_dispatch_i): gets rid of type-punning
+ calls.
+
+Mon Nov 16 15:51:53 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): protected singleton methods of
+ an object should not be able to called from other instances of the
+ class of the object. [ruby-core:26761]
+
+ * vm_eval.c (rb_method_call_status): ditto.
+
+ * test/ruby/test_module.rb (test_protected_singleton_method): ditto.
+
+Mon Nov 16 14:03:53 2009 wanabe <s.wanabe@gmail.com>
+
+ * io.c (read_all): shift read buffer if exception occurred.
+ pointed out in [ruby-dev:39702].
+
+Mon Nov 16 07:59:38 2009 wanabe <s.wanabe@gmail.com>
+
+ * io.c (read_all): don't call io_shift_cbuf until buffering enough or
+ econv_finished. [ruby-dev:39696]
+
+ * io.c (more_char): don't call clear_readconv to read buffer after
+ econv_finished.
+
+ * io.c (appendline, rb_io_each_codepoint): clear readconv when done.
+
+Mon Nov 16 01:58:08 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * include/ruby/ruby.h (rb_classext_t): annotate @internal.
+
+Mon Nov 16 01:35:34 2009 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_filesystem_encindex): use default external encoding
+ instead of locale encoding in Unix.
+
+ * ruby.c (process_options): delay filesystem encoding
+ initialization until default external encoding initialization.
+
+Mon Nov 16 00:06:26 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (thread_cleanup_func): delete locking_mutex when thread
+ object become dummy because of fork. [ruby-core:26744]
+ [ruby-core:26745]
+
+ * bootstraptest/test_thread.rb: add a test for above.
+
+Sat Nov 14 21:54:46 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * class.c (rb_mod_init_copy): fix memory leak of Class#dup.
+ [ruby-dev:39687]
+
+Sat Nov 14 17:09:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (--with-opt-dir): ignore and suppress a warning.
+ [ruby-dev:39684]
+
+Sat Nov 14 16:43:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (ruby_setenv): get rid of crash in Solaris 8 and 10.
+ [ruby-core:26668]
+
+Sat Nov 14 09:16:54 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): Fix comparisons
+ [ruby-core:26646]
+
+ * test/bigdecimal/test_bigdecimal.rb (class): Fix and improve tests.
+
+Sat Nov 14 04:07:06 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb (TkVariable::coerce): fix bug on a
+ numeric value.
+
+Sat Nov 14 03:35:29 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: TkVariable#*(other) and /(other) have a
+ bug on handling of the "other" value.
+
+Fri Nov 13 21:18:15 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/zlib/zlib.c (rb_zlib_adler32): fix typo.
+
+Fri Nov 13 16:22:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): see first_func, not first_proc,
+ to decide which to use.
+
+ * gc.c (vm_xrealloc): use the given object space.
+
+Fri Nov 13 00:46:24 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI::pretty): fix the overflow bug
+ if stripped string.[ruby-dev:37975]
+
+Thu Nov 12 23:08:11 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (read_from_cmdline): this code is better.
+ [ruby-core:25991]
+
+Thu Nov 12 22:55:42 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/net/telnet.rb: don't use simple delegate.
+ because SimpleDelegate behavior changed.
+
+Thu Nov 12 14:33:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_win32.c (thread_errno): CreateThread does not set errno.
+
+ * thread.c (thread_create_core): moved failure handling from
+ native_thread_core().
+
+ * thread_pthread.c (native_thread_create): constified.
+
+Thu Nov 12 10:08:56 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * .document: remove documents not in rdoc format until
+ rdoc supports non rdoc files. [ruby-core:26459]
+
+Thu Nov 12 06:42:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#initialize): option hash may not be
+ given. [ruby-core:26681]
+
+Thu Nov 12 01:29:15 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enumerator.c (yielder_yield_push): Yielder#<< should return self.
+ [ruby-dev:39660]
+
+Wed Nov 11 19:17:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#initialize): merge mode option.
+
+ * lib/tmpdir.rb (Dir::Tmpname#create): splat options.
+
+Wed Nov 11 12:54:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (ruby_setenv): use ruby_strdup().
+
+Wed Nov 11 12:19:27 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (ruby_setenv): also set CRT workarea. ref [ruby-core:25010]
+
+Wed Nov 11 09:36:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object, r_object0): use RHASH_IFNONE but not ifnone
+ directly.
+
+Wed Nov 11 08:32:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (blocking_region_begin): define before BLOCKING_REGION.
+ reported by Luis Lavena. [ruby-core:26670]
+
+Wed Nov 11 08:22:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * util.c (ruby_strtod): use dval() consistently.
+
+Wed Nov 11 02:14:48 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/matrix/test_matrix.rb (TestMatrix#test_rank):
+ added a test method for r24969.
+
+Tue Nov 10 08:23:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_f_exec, rb_f_system, rb_f_spawn): mentioned about
+ the shell to be used when the command line is single string.
+ See [ruby-core:26652]
+
+Mon Nov 9 20:15:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (rb_gc_save_machine_context): don't save the stack pointer
+ in this function.
+ (RB_GC_SAVE_MACHINE_CONTEXT): call rb_gc_save_machine_context and
+ save the stack pointer at caller side.
+ (rb_thread_schedule_rec): use RB_GC_SAVE_MACHINE_CONTEXT instead of
+ rb_gc_save_machine_context.
+ (blocking_region_begin): changed to a macro. use
+ RB_GC_SAVE_MACHINE_CONTEXT instead of rb_gc_save_machine_context.
+ [ruby-dev:39659]
+
+Mon Nov 9 11:28:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags): add -Wno-long-long.
+
+Sun Nov 8 18:13:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c: use RHASH_IFNONE but not ifnone directly.
+
+Sat Nov 7 21:02:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (PP::ObjectMixin#pretty_print): use to_s regardless of
+ instance variables.
+
+Sat Nov 7 20:59:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_push_frame): get rid of out-of-bounds
+ access.
+
+Sat Nov 7 12:41:19 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): revert r25521.
+ [ruby-core:26427] [ruby-core:26447]
+
+Fri Nov 6 18:33:47 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_push_frame): add CHECK_STACK_OVERFLOW.
+ [ruby-dev:39592]
+
+ * eval.c (rb_longjmp): add 1 level backtrace for sysstack_error
+ without calling any method to prevent further stack overflow.
+
+ * eval.c (make_exception): don't call #exception for
+ sysstack_error to prevent stack overflow.
+
+ * proc.c (Init_Proc): don't freeze sysstack_error.
+
+ * eval.c (rb_longjmp): move reentrant check after exception
+ preparation.
+
+Fri Nov 6 17:13:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_header): split the line by tabs.
+
+Fri Nov 6 12:02:32 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (MINIDLNOBJ): set default as dmydln.o.
+ Now LLVM clang seems to be able to build Ruby 1.9.
+
+Fri Nov 6 09:29:32 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encindex): add fallback to
+ ASCII-8BIT on Windows.
+
+Fri Nov 6 07:29:07 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_case.rb: merged r25658 from ruby_1_8.
+
+Thu Nov 5 12:27:07 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gem_prelude.rb (Gem.user_home): force_encoding(
+ Encoding.find('filesystem')). [ruby-core:26525]
+
+Thu Nov 5 07:47:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (BEGIN): now local_push and local_pop are necessary in
+ ripper.
+
+Wed Nov 4 21:39:10 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * .document: add some README files to default rdoc's of trunk.
+ patched by Roger Pack [ruby-core:26459]
+
+Wed Nov 4 16:06:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/st.h (SIZEOF_ST_INDEX_T): moved from st.c for
+ Init_RandomSeed().
+
+Wed Nov 4 15:50:16 2009 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * include/ruby/ruby.h (NUM2CHR): prefix __extension__ for
+ braced-groups within expressions.
+
+Wed Nov 4 15:46:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_{internal,external}_encoding_once): fixed typos.
+
+Wed Nov 4 12:49:18 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c (mnew): Fix scope issue [ruby-core:26069]
+
+Wed Nov 4 08:50:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rb_hash_start): moved from string.c.
+
+ * random.c (Init_RandomSeed2): register global address before set.
+
+ * random.c (Init_RandomSeed): initialize hashseed.
+
+Wed Nov 4 08:26:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_check): moved other checks from GetDIR.
+
+ * dir.c (GetDIR): fixed a variable name.
+
+Wed Nov 4 08:19:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (rb_fiber_start): fixed unconditional test.
+
+Wed Nov 4 02:08:14 2009 Aaron Patterson <tenderlove@ruby-lang.org>
+
+ * ext/dl/cptr.c (rb_dlptr_eql, rb_dlptr_cmp): DL::CPtr#== and DL::CPtr#<=>
+ should not raise an exception when compared to a different object.
+
+Wed Nov 4 00:05:36 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_upto): make next object before yield its block.
+ fix: can modify original begin string of String#upto.
+ [ruby-dev:26384] [ruby-dev:39626]
+
+Mon Nov 2 18:33:21 2009 wanabe <s.wanabe@gmail.com>
+
+ * cont.c (fiber_free): don't free unallocated local_storage. see #1325.
+
+ * cont.c (cont_init): clear local_storage not to use current thread's.
+
+ * cont.c (fiber_t_alloc, root_fiber_alloc): link itself always for
+ a case that fiber_link_remove() is called before fiber_link_join().
+
+ * cont.c (fiber_init): clear cont->vm_stack and th->stack before
+ root_fiber_alloc() in rb_fiber_current().
+
+Mon Nov 2 14:52:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_exc_raise, rb_exc_fatal, rb_make_exception):
+ suppressed shorten-64-to-32 warnings.
+
+Mon Nov 2 14:43:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_pthread.c (native_stop_timer_thread): delay joining timer
+ thread after unlocking mutex.
+
+Mon Nov 2 13:31:14 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_pthread.c (native_stop_timer_thread): need to join timer thread
+ only when really stopping it.
+
+Mon Nov 2 12:55:50 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_{pthread,win32}.c (native_stop_timer_thread): join the thread
+ here.
+
+ * thread_{pthread,win32}.c (native_reset_timer_thread): new function.
+
+ * thread.c (rb_thread_stop_timer_thread, rb_thread_reset_timer_thread):
+ call above function instead of simply setting 0.
+
+Mon Nov 2 11:22:19 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/registry.rb: update rdoc. [ruby-core:26022]
+
+Sun Nov 1 20:16:03 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: fixed rdoc. [ruby-core:26457]
+
+Sun Nov 1 16:24:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_stack_grow_dir): fix for universal binary.
+
+ * configure.in (sitehdrdir, vendorhdrdir): fixed default values.
+
+Sun Nov 1 13:31:16 2009 wanabe <s.wanabe@gmail.com>
+
+ * win32/win32.c (overlapped_socket_io, recvmsg, sendmsg): pass handle
+ instead of pointer to CloseHandle().
+
+Sun Nov 1 13:11:27 2009 wanabe <s.wanabe@gmail.com>
+
+ * ext/socket/socket.c (socket_s_ip_address_list): use FreeLibrary() to
+ free HMODULE.
+
+Sun Nov 1 08:17:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (GET_STACK_BOUNDS): refactored common code. based on a
+ patch from Suraj N. Kurapati <sunaku AT gmail.com> in
+ [ruby-core:26443].
+
+Sat Oct 31 23:44:35 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_count): remove optimization using #size.
+ revert r25560.
+
+ * vm_eval.c (rb_funcall_no_recursive): remove method.
+
+Sat Oct 31 23:28:49 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_eval.c (check_funcall): logic updated according to
+ [ruby-dev:39594]. search method entry, call if it exists;
+ otherwise check method_missing, call if it was overridden,
+ protecting exceptions; if NoMethodError happens, check method
+ name.
+
+ * vm_eval.c (vm_call0): use idMethodMissing.
+
+ * vm_eval.c (rb_search_method_entry): typo fixed.
+
+Sat Oct 31 17:19:28 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPResponse#each_response_header):
+ cosmetic: '?\ ' -> '?\s'
+
+Fri Oct 30 22:09:47 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPResponse#each_response_header):
+ accept multiline message header of HTTP response. see #1796.
+ cf. RFC 2616 '4.2 Message Header'.
+
+ * test/net/http/test_httpresponse.rb: added.
+
+Fri Oct 30 18:54:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (trnext): detect empty range and raise exception.
+ [ruby-dev:39108]
+
+Fri Oct 30 17:01:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (enum call_type): get rid of last comma.
+
+ * vm_eval.c (vm_call0, vm_call_super, rb_f_send, rb_f_public_send):
+ fixed call_type. [ruby-dev:39581]
+
+ * vm_eval.c (rb_search_method_entry, rb_method_call_status): split
+ from rb_call0().
+
+ * vm_eval.c (rb_check_funcall): get rid of raising exceptions and
+ hiding further exceptions. [ruby-dev:39584]
+
+ * vm_eval.c (rb_funcall_no_recursive): ditto.
+
+Fri Oct 30 13:36:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_blocking_region): reverted r25566, and added
+ description that no exception is allowed inside `func', instead.
+ see [ruby-dev:39582]
+
+Fri Oct 30 13:13:16 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32.c (recvmsg, sendmsg, link): shouldn't raise ruby's exceptions
+ in the functions expected as system API. see [ruby-dev:39579] and
+ [ruby-dev:39582]
+
+Fri Oct 30 12:59:20 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (rb_thread_blocking_region): standard C doesn't accept
+ preprocessing directive within macro expansion.
+
+Fri Oct 30 10:55:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_blocking_region): must ensure to unlock GVL.
+ [ruby-dev:39579]
+
+Fri Oct 30 04:47:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RSTRING_END): trivial optimization.
+
+ * string.c (rb_str_sub_bang): trivial optimization.
+
+Fri Oct 30 02:11:36 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_count): call #size using rb_funcall_no_recursive()
+ to prevent infinite recursive calls. [ruby-core:24794]
+
+ * vm_eval.c (rb_funcall_no_recursive): utility function to check
+ direct recursive call.
+
+ * vm_eval.c (rb_check_funcall): move from eval.c. [refactoring]
+
+Thu Oct 29 18:37:02 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): revert previous commit.
+
+ * ruby.c (process_options): ditto.
+
+Thu Oct 29 15:35:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): set locale and filesystem encindex.
+
+ * ruby.c (process_options): move setting func of filesystem
+ encoding to Init_Encoding.
+
+Thu Oct 29 15:43:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_name_err_mesg_new): added prototype.
+
+Thu Oct 29 13:53:18 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_to_ary): do not use #respond_to? to detect
+ to_ary. Just call. [ruby-core:23738]
+
+ * eval.c (rb_check_funcall): new function with method existence
+ check. returns Qundef when the method does not exist.
+
+ * enumerator.c (enumerator_rewind): just call method, using
+ rb_check_funcall(). [ruby-core:23738]
+
+ * error.c (exc_equal): ditto.
+
+ * object.c (convert_type): ditto.
+
+ * error.c (rb_name_err_mesg_new): export function.
+
+ * eval.c (make_exception): ditto.
+
+ * io.c (pop_last_hash): return early when the last argument is nil.
+
+ * io.c (rb_io_puts): treat T_STRING specially for small
+ optimization.
+
+ * vm_eval.c (raise_method_missing): skip method call if possible
+ using rb_method_basic_definition_p().
+
+ * vm_eval.c (method_missing): ditto.
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_debug): test
+ suites changed to ignore exceptions caused by just-call policy.
+
+Thu Oct 29 04:41:44 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (process_options): call rb_filesystem_encoding().
+
+Thu Oct 29 04:40:36 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (Init_IO): rb_default_rs should be US-ASCII.
+
+Thu Oct 29 01:22:01 2009 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * ext/socket/extconf.rb : Compilation failure on AIX.
+ ss_len (a member of struct sockaddr_storage) has preceding __,
+ but ss_family does not have it from AIX 5.2.
+
+Wed Oct 28 16:32:49 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (get_filesystem_encoding): removed.
+
+ * encoding.c (rb_locale_encindex): added.
+
+ * encoding.c (rb_filesystem_encindex): added.
+
+ * encoding.c (rb_filesystem_encindex): add an alias 'filesystem'.
+ [ruby-dev:39574]
+
+ * encoding.c (enc_find): add rdoc about special aliases.
+
+ * gem_prelude.rb (Gem.set_home): use Encoding.find('filesystem').
+
+ * gem_prelude.rb (Gem.set_paths): ditto.
+
+Wed Oct 28 15:02:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gem_prelude.rb (Gem.set_home):
+ force_encoding(Encoding.filesystem_encoding)
+ [ruby-core:25959]
+
+ * gem_prelude.rb (Gem.set_paths): ditto.
+
+Wed Oct 28 14:24:45 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (get_filesystem_encoding):
+ add Encoding.filesystem_encoding [ruby-dev:39546]
+ also see [ruby-core:25959]
+
+Wed Oct 28 14:51:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_each_group): fixed typo.
+
+Wed Oct 28 13:02:10 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#initialize): sets @binary to true.
+
+ * lib/net/ftp.rb (Net::FTP#binary=): sends a TYPE command only when
+ logged in. [ruby-dev:39548]
+
+ * lib/net/ftp.rb (Net::FTP#send_type_command): new private method
+ which sends an appropriate TYPE command according to the value of
+ @binary.
+
+ * lib/net/ftp.rb (Net::FTP#login): calls send_type_command instead
+ of binary=.
+
+Wed Oct 28 12:26:51 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_setup_method): should push call frame before
+ raising exception, to put the Ruby-defined method name in the
+ error message. [ruby-core:26333]
+
+ * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): macro modified.
+
+ * vm_insnhelper.c (vm_yield_setup_args): modified for new
+ VM_CALLEE_SETUP_ARG macro.
+
+Tue Oct 27 22:46:44 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#initialize): @sock = nil.
+
+ * lib/net/ftp.rb (Net::FTP#binary=): send command only when
+ socket is open. [ruby-dev:39548]
+
+Tue Oct 27 22:22:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (Init_stringio): added read_nonblock and
+ write_nonblock aliases. [ruby-dev:39551]
+
+ * ext/stringio/stringio.c (strio_data_type): typed.
+
+Tue Oct 27 21:20:35 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: add TkVariable#+@ and -@ method.
+
+Tue Oct 27 16:36:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (chopped_length): get rid of unexpected exception.
+ see [ruby-core:26336].
+
+Tue Oct 27 15:53:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * gc.h (SET_MACHINE_STACK_END): use __i386.
+ Some compiler may not define __i386__.
+ Solaris 64-bit Developer's Guide:
+ http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view
+
+Tue Oct 27 15:44:48 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (getbinaryfile, list): call to_s to convert
+ a Pathname instance into a string. [ruby-core:26237]
+
+Tue Oct 27 12:30:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.h (SET_MACHINE_STACK_END): use __i386__ instead of __i386,
+ and explicit size qualifiers.
+
+Tue Oct 27 09:40:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.h (SET_MACHINE_STACK_END): add x86_64 version by nobu.
+
+Tue Oct 27 09:27:59 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_exec.c (DECL_SC_REG): use __clang__.
+
+Tue Oct 27 08:56:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: reverted r25443 because build_os is used in mkmf.rb
+ on some platforms. [ruby-core:26332]
+
+Tue Oct 27 08:01:57 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * parse.y (ripper_filename): add Ripper#filename. [ruby-dev:37856]
+
+ * test/ripper/test_filter.rb: add more tests.
+
+Tue Oct 27 07:53:25 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (garbage_collect_with_gvl): do not garbage_collect when
+ dont_gc flag turned on. [ruby-core:26327]
+
+Tue Oct 27 07:38:39 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c,stubs.c: remove errors or warnings when compiled
+ with old ruby 1.8.x.
+
+ * ext/tk/tkutil/tkutil.c: ditto.
+
+Tue Oct 27 05:56:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm.c (invoke_block_from_c): return Qnil when its iseq is
+ SPECIAL CONST. [ruby-core:26335]
+
+Tue Oct 27 05:11:49 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_exec.c (DECL_SC_REG): check defined(__asm__) before use it.
+ LLVM/clang defines __GNUC__ but doesn't have __asm__.
+
+Tue Oct 27 03:45:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): added RUBY_SITEARCH to use
+ different name from RUBY_ARCH. [ruby-core:26324]
+
+Mon Oct 26 20:04:13 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_cmp): Array#<=> returns nil when comparison fails
+ [ruby-core:26316]
+
+Mon Oct 26 18:37:57 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (default_proc_arity_check): new support function.
+
+ * hash.c (rb_hash_initialize): should do arity check as #default_proc=.
+ [ruby-core:26281]
+
+Mon Oct 26 13:24:17 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/remote-tk.rb: typo fixed.
+
+Mon Oct 26 12:34:08 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ruby.c (usage): -T and -W descriptions updated. see
+ [ruby-dev:39539]
+
+ * man/ruby.1: ditto.
+
+Mon Oct 26 12:06:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_fwrite): adjust stdio file position after direct write on
+ BSDish platforms. [ruby-core:26300]
+
+Sun Oct 25 15:44:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (dlhandle_sym): fixed an invalid local variable
+ declaration.
+
+Sun Oct 25 13:33:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_cntl): F_DUPFD is platform dependent.
+
+Sun Oct 25 10:19:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (rb_dlhandle_close): fixed an invalid local
+ variable declaration.
+
+Sun Oct 25 05:44:34 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (**): Optimization (up to 45% faster)
+
+Sat Oct 24 14:28:40 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_set_default_proc): checks arity of default_proc
+ of a Hash. [ruby-core:26087]
+
+Sat Oct 24 13:38:45 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_cmp): defines Object#<=>. [ruby-core:24063]
+
+Sat Oct 24 09:51:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_flat_map): new method that concatenates the values
+ from given block. also provides alias #collect_concat.
+
+Sat Oct 24 00:36:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_cntl): update max file descriptor by the result of
+ fcntl(F_DUPFD).
+
+Fri Oct 23 16:31:14 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_class_new): move class check to rb_check_inheritable().
+
+ * class.c (rb_check_inheritable): should not allow subclass of
+ class Class. [ruby-core:26225]
+
+Fri Oct 23 14:25:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (target, target_alias): replace with real cpu.
+
+ * mkconfig.rb: build* are not needed in rbconfig.rb.
+
+ * configure.in (warnflags): use -Wextra only when
+ -Wno-missing-field-initializers is available.
+
+ * configure.in (optflags): removed -fomit-frame-pointer by default.
+
+Fri Oct 23 09:12:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pathname.rb (Pathname::SAME_PATHS): FNM_SYSCASE is always
+ non-nil.
+
+Fri Oct 23 07:32:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, Makefile.in, win32/Makefile.sub (XRUBY): runnable
+ ruby without current libraries.
+
+ * common.mk (rdoc): use XRUBY.
+
+Fri Oct 23 07:28:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags): use -Wextra instead of -Wall.
+
+ * gc.c (mark_current_machine_context): get rid of warning.
+
+Thu Oct 22 21:10:39 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * class.c (rb_obj_basic_to_s_p): typo. Please become familiar with
+ the ANSI style.
+
+Thu Oct 22 20:20:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_in_out_err): test_stdout and
+ test_stderr should be an array.
+
+ * test/ruby/test_rubyoptions.rb (test_notfound): test_stdin of
+ assert_in_out_err should be a string.
+
+Thu Oct 22 17:49:05 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/fileutils.rb (FileUtils#fu_get_uid, fu_get_gid): Do not
+ convert an integer back and forth.
+
+Thu Oct 22 17:29:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (arg_prepend): removed. a patch from Mikhail T. in
+ [ruby-core:26217].
+
+Thu Oct 22 04:54:41 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_inspect): print instance variables only when
+ Object#to_s is not overridden. [ruby-core:24425]
+
+ * class.c (rb_obj_basic_to_s_p): new function.
+
+Wed Oct 21 19:32:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_obj_inspect): fixed rdoc about the case that to_s
+ is called. [ruby-core:24425]
+
+Wed Oct 21 08:17:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/logger/test_logger.rb (TestLogDevice#test_write): check
+ also error message.
+
+Wed Oct 21 03:54:41 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb:
+ Creator functions now strict with their arguments
+ Support for empty matrices (see new method Matrix.empty)
+ Matrix#trace raises an ErrDimensionMismatch if the matrix is not square
+ Enumerators are returned when no block given
+ Consistent results when accessing elements with out of bounds indices
+ Details in [ruby-core:23598].
+
+Wed Oct 21 00:27:15 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/httpauth/digestauth.rb: typo in exception message fixed.
+
+Wed Oct 21 00:17:28 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: imported upstream version (logger/1.2.7) see #2238.
+ * do not raise an exception even if log writing failed.
+ * do not raise ShiftingError if an aged file already exists.
+ (no ShiftingError will be raised from 1.2.7, just warn() instead)
+ * test/logger/test_logger.rb: ditto.
+
+Tue Oct 20 22:29:06 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/matrix.rb: Bug fix. See detail [ruby-core:23598].
+
+Tue Oct 20 17:57:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_symbol, r_symreal): fixed the order of symbol and
+ its encoding modifier, in order to make the dump readable from
+ 1.8. [ruby-dev:39515]
+
+Tue Oct 20 16:41:18 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (finite, scalb): inline'ed non-standard
+ identifier macros. [ruby-core:26166]
+
+Tue Oct 20 15:38:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ripper_intern): enable literal optimization.
+
+ * parse.y (method_call): dispatch symbols. a patch from Andy Keep in
+ [ruby-core:26169]. [ruby-core:26165]
+
+ * parse.y (mlhs_basic): fixed handling splat in middle of mlhs. a
+ patch from Andy Keep in [ruby-core:26163]
+
+ * parse.y (parser_here_document): dispatch delayed heredoc
+ contents. based on a patch from Andy Keep in [ruby-core:24855].
+
+Mon Oct 19 15:17:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rb_method_entry): search method entry by class and id.
+
+Mon Oct 19 15:03:31 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (enc/unicode/name2ctype.h): no need to create
+ directory if it already exists.
+
+Mon Oct 19 11:34:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rb_ps): dump all threads and their callstacks. based
+ on [ruby-core:26155] by Joshua ben Jore <twists AT gmail.com>.
+
+Mon Oct 19 10:59:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (prepare_iseq_build, rb_iseq_build_for_ruby2cext):
+ untrust mark array. [ruby-core:26137]
+
+Mon Oct 19 05:49:53 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/rexml/element.rb (text=): false should be converted to string.
+ A patch by Teruo Oshida [ruby-dev:38351]
+
+Sun Oct 18 22:33:25 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: do not require lib/delta.rb.
+
+ * lib/date/delta.rb: follows the above change.
+
+Sun Oct 18 19:14:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (is_special_global_name): add boundary check.
+
+Sun Oct 18 18:31:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): should not dup tmp string. a
+ patch from neomjp neomjp in [ruby-core:24251].
+
+Sun Oct 18 09:49:14 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/test_prime.rb
+ (TestPrime#test_eratosthenes_works_fine_after_timeout):
+ test for [ruby-dev:39465].
+
+ * lib/prime.rb (Prime::EratosthenesSieve):
+ fixed [ruby-dev:39465].
+ suppressed memory reallocation.
+ constantified some magic numbers.
+
+Sat Oct 17 22:11:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (id2encidx): register encoding name.
+ (r_object0): register object before encoding name.
+ [ruby-core:24882]
+
+Sat Oct 17 17:56:58 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/rake/test_fileutils.rb (Rake::TestFileUtils#test_sh): uses
+ FileUtils::RUBY instead of fixed "ruby" so that the ruby command
+ works fine in Ruby's "make test-all".
+ (test_sh_with_a_single_string_argument): ditto.
+ (test_sh_with_multiple_arguments): ditto.
+ (test_sh_failure): ditto
+ (test_sh_special_handling): ditto.
+
+Sat Oct 17 17:30:06 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (big_split): fix off-by-one error. [ruby-dev:39501]
+
+Sat Oct 17 16:34:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (parser_yylex): fix token even after trailing under score.
+
+Sat Oct 17 11:27:44 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (basic_obj_respond_to): call #respond_to_missing?
+ always with two arguments. [ruby-core:26090]
+
+Sat Oct 17 08:51:44 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#respond_to_missing): warn only when
+ specified method is a private. [ruby-dev:39498]
+
+Fri Oct 17 00:05:53 2009 wanabe <s.wanabe@gmail.com>
+
+ * st.c (unpack_entries): save table->bins and never change the table
+ during unpacking. Because st_insert() may cause GC and refer the
+ table, i.e. st_foreach(). [Bug #2196]
+
+Fri Oct 16 22:20:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * prelude.rb (require_relative): defined as a module function of
+ Kernel.
+
+Fri Oct 16 20:18:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#method_missing): remove backtrace
+ lines _until_ `method_missing'.
+
+Fri Oct 16 20:09:55 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#freeze): #freeze should freeze self
+ and the target at once. [ruby-core:26118]
+
+Fri Oct 16 19:39:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#respond_to_missing): warn if optional
+ include_private argument is not false. Delegator does (and
+ should) not forward private methods. [ruby-core:26080]
+
+ * lib/delegate.rb (Delegator#respond_to_missing): instead of
+ redefining #respond_to?, use #respond_to_missing?. [ruby-core:26081]
+
+Fri Oct 16 18:42:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/test_gc.rb: added tests based on [ruby-dev:39484]
+ from wanabe <s.wanabe AT gmail.com>.
+
+Fri Oct 16 16:09:01 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): `\'' is also quote character.
+
+Fri Oct 16 13:40:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.h (rb_gc_debug_body): constified.
+
+Fri Oct 16 13:20:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpMidRound): remove warnings.
+ patch from Charlie Savage. [ruby-core:22869]
+
+ * ext/digest/bubblebabble/bubblebabble.c (bubblebabble_str_new): ditto.
+
+ * ext/digest/digest.c (hexencode_str_new): ditto.
+
+ * ext/iconv/iconv.c (iconv_convert): ditto.
+
+ * ext/socket/socket.c (inspect_sockaddr): ditto.
+
+ * ext/socket/raddrinfo.c (sockaddr_obj): ditto.
+
+ * ext/syck/emitter.c (syck_emitter_write): ditto.
+
+ * ext/syck/emitter.c (syck_emitter_flush): ditto.
+
+ * ext/syck/emitter.c (syck_emit_tag): ditto.
+
+Fri Oct 16 12:03:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/csv.rb (CSV#raw_encoding): returns ASCII-8BIT when the io
+ doesn't have encoding.
+
+Fri Oct 16 03:15:52 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/csv.rb (CSV#read_to_char): set encoding and verify data
+ which read from io before encode it to @encoding.
+
+ * lib/csv.rb (CSV#raw_encoding): add to get @io's encoding.
+
+ * lib/csv.rb (CSV#read_io): add to read string and set @io's
+ encoding.
+
+Thu Oct 15 18:26:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern3): check symbol table overflow before generate
+ next id. [ruby-core:26092]
+
+Thu Oct 15 15:14:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_encoding_set): get rid of parsing non-ascii string, and
+ refine messages for invalid name encoding.
+
+ * io.c (io_reopen): unread current buffer before telling the
+ position, for the case of reopening same file. [ruby-dev:39479]
+
+Thu Oct 15 14:20:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_create): cannot retry with given block.
+ [ruby-dev:39487]
+
+Thu Oct 15 09:25:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/init.c (rsock_init_sock): mswin doesn't have S_IFSOCK
+ flag in st_mode of struct stat. so, use rb_w32_issocket() function
+ instead of S_ISSOCK macro.
+
+Thu Oct 15 00:47:42 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ use UTS#18 for POSIX character class.
+ http://rubyspec.org/issues/show/161
+
+Thu Oct 15 00:26:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (rsock_init_sock): validate file descriptor.
+
+Wed Oct 14 13:24:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): script name should not be shown in an
+ error message before loaded.
+
+Wed Oct 14 09:06:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_run_node): need to call ruby_cleanup() always even
+ if any error occurred so far.
+
+Wed Oct 14 08:08:12 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c (mnew): Method#new checks for respond_to_missing? with
+ private set to true
+ [ruby-core:26069]
+
+Tue Oct 13 21:05:01 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Add DerivedCoreProperties, PropList (Binary Property),
+ PropertyAlias and PropertyValueAlias.
+ Now users of tool/enc-unicode.rb should specify
+ the directory of UCD files.
+
+Tue Oct 13 18:54:25 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/variable.rb: bug fix. additional trace definition changes the
+ option of first trace definition.
+
+Tue Oct 13 18:23:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (token_info_push, token_info_pop): reduced ifdefs.
+
+ * parse.y (parser_magic_comment): fixed normalization.
+
+Tue Oct 13 09:04:14 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * thread.c: Revert changes to Thread#raise made in r25278
+ [ruby-core:25367]
+
+ * eval_intern.h: ditto
+
+Mon Oct 12 23:27:57 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (login): use "anonymous@" as a default password.
+ [ruby-dev:39451]
+
+Mon Oct 12 22:48:25 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (retrlines): added a new block parameter.
+
+ * lib/net/ftp.rb (gettextfile): preserve missing end-of-line at end
+ of files. [ruby-core:24590]
+
+Mon Oct 12 19:48:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_run_node): if an exception occurred in ruby_option,
+ the result is not executable.
+
+Mon Oct 12 05:51:11 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (fetch_token): warn invalid back reference
+ and subexp call. (\k and \g).
+
+Mon Oct 12 03:47:42 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (has_encoding): added for check the regexp
+ is dumped by 1.8 or 1.9.
+
+ * marshal.c (r_object0): use has_encoding.
+
+Sun Oct 11 15:54:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_select): fixed rdoc. a patch from Justin
+ Collins in [ruby-core:26050].
+
+Sun Oct 11 10:27:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/context.rb (IRB::Context#irb_name): removed duplicated
+ attr_reader. [ruby-core:26047]
+
+ * lib/irb/ruby-lex.rb (RubyLex#lex_int2): removed duplicated
+ character class range.
+
+Sun Oct 11 10:04:35 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (fetch_token_in_cc): warn when \p is not
+ followed by property name.
+
+ * regparse.c (fetch_token): ditto.
+
+Sun Oct 11 09:44:46 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regerror.c (onig_vsnprintf_with_pattern): added.
+
+ * regparse.c (onig_syntax_warn): use above.
+
+Sun Oct 11 09:04:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_GC_GUARD_PTR): workaround for gcc
+ optimization.
+
+ * include/ruby/ruby.h (ruby_exec_node): declared.
+
+Sun Oct 11 03:10:50 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (onig_syntax_warn): added.
+
+ * regparse.c (CC_ESC_WARN, CLOSE_BRACKET_WITHOUT_ESC_WARN,
+ CC_DUP_WARN, UNKNOWN_ESC_WARN): use onig_syntax_warn.
+
+Sun Oct 11 00:14:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (marshal_dump, marshal_load): prevent from GC.
+
+Sat Oct 10 23:57:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (path_check_0): prevent from GC.
+
+Sat Oct 10 23:51:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_transcoding, str_transcoding_resize): fixed
+ types.
+
+Sat Oct 10 20:35:27 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * math.c (math_atanh): reverted r25279.
+
+Sat Oct 10 19:03:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c: use rb_thread_blocking_region to avoid
+ rb_read_check. This makes other threads runnable in getstr and
+ wgetstr.
+ (getch_func): extracted from curses_getch.
+ (curses_getch): use rb_thread_blocking_region with getch_func.
+ (getstr_func): extracted from curses_getstr.
+ (curses_getstr): use rb_thread_blocking_region with getstr_func.
+ (wgetch_func): extracted from window_getch.
+ (window_getch): use rb_thread_blocking_region with wgetch_func.
+ (wgetstr_func): extracted from window_getstr.
+ (window_getstr): use rb_thread_blocking_region with wgetstr_func.
+
+ * include/ruby/io.h (rb_read_check): deprecated because it access
+ internal of stdio.
+
+Sat Oct 10 18:59:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (cflags, cxxflags): remove duplicating options.
+
+Sat Oct 10 18:19:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, Makefile.in (LIBRUBY_SO), common.mk (ruby.imp),
+ win32/mkexports.rb (each_export): exclude _threadptr_ functions.
+
+Sat Oct 10 17:55:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_threadptr_errinfo): renamed.
+
+Sat Oct 10 17:03:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_exec_node): removed unused argument.
+
+Sat Oct 10 14:55:55 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * math.c (math_atanh): Fix bug for Math.atanh(+/-1). It now returns
+ +-Infinity. [ruby-core:26028]
+
+Sat Oct 10 14:09:40 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * thread.c (rb_threadptr_execute_interrupts_rec, rb_threadptr_raise):
+ Thread#raise with no argument will now re-raise the current exception
+ if there is one [ruby-core:25367]
+
+ * eval.c (get_errinfo, rb_rubylevel_thread_errinfo): Getter for
+ current exception for a given thread
+
+Fri Oct 9 23:10:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (rb_method_boundp): should exclude NOEX_RESPONDS.
+ based on the patch from Nikolai Lugovoi. [ruby-core:25949]
+
+Fri Oct 9 21:14:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS::Requester::ConnectedUDP): disable
+ reverse lookup.
+ (Resolv::DNS::Requester::UnconnectedUDP): ditto.
+
+Fri Oct 9 10:12:13 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/irb/context.rb (IRB::Context#initialize):
+ remove warnings when $VERBOSE is set as true in .irbrc.
+
+Fri Oct 9 02:58:18 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb: optimized.
+
+ * enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ U+100000-U+10FFFD is assigned, not Cn.
+
+Fri Oct 9 02:12:02 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * ext/curses/curses.c: Many functions of module Curses could cause a
+ crash if the ncurses library was not properly initialized.
+ Fix pointed out by Alexander Beisig [ruby-core:22592]
+ Functions fixed: attroff, attron, attrset, bkgd, bkgdset,
+ can_change_color, close_screen, closed, color_content, curs_set,
+ def_prog_mode, delch, deleteln, getmouse, getstr, has_colors,
+ init_color, init_pair, insertln, keyname, mouseinterval, mousemask,
+ pair_content, pair_number, reset_prog_mode, resizeterm, scrl,
+ setscrreg, standend, standout, start_color, timeout, ungetmouse,
+ use_default_colors
+
+Fri Oct 9 01:07:34 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (ADD_TRACE): fire coverage event in ensure clause.
+ [ruby-dev:39303]
+
+ * iseq.h, iseq.c: ditto.
+
+Fri Oct 9 00:33:29 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/net/telnet.rb (cmd): Pass FailEOF options: patch by Brian
+ Candler [ruby-core:22723]
+
+Fri Oct 9 00:01:17 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.udp_server_recv): extracted from
+ Socket.udp_server_loop_on.
+
+Thu Oct 8 05:45:14 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb: parse range notation of UnicodeData.txt.
+
+ * enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ follow above change. [ruby-dev:39444]
+
+Thu Oct 8 02:46:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_inspect): copy by chunks.
+
+Thu Oct 8 01:23:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_s_disasm): accept proc objects. [ruby-core:18762]
+
+Wed Oct 7 16:42:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (mark_dump_arg, mark_load_arg): ignore already cleaned
+ data. [ruby-core:25969]
+
+ * marshal.c (clear_dump_arg, clear_load_arg): clear freed fields.
+
+Wed Oct 7 16:06:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_long2int): evaluates the argument only
+ once.
+
+ * struct.c (rb_struct_alloc): check array length overflow.
+
+Wed Oct 7 09:23:49 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): don't assign -1 to unsigned int.
+
+Wed Oct 7 00:27:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS.bind_random_port): bind to "::" for IPv6.
+ (Resolv::DNS::ConnectedUDP#initialize): specify is_ipv6 argument of
+ bind_random_port.
+ [ruby-core:25970]
+
+Tue Oct 6 23:32:38 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): RDoc updated. a patch from Nobuhiro
+ IMAI <nov at yo.rim.or.jp> in [ruby-dev:39440]. [ruby-dev:39439]
+
+Tue Oct 6 21:30:58 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_reopen): avoid close if possible.
+
+Tue Oct 6 18:56:09 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_select): Struct#select should return
+ enumerator when no block given.
+
+Tue Oct 6 06:26:00 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * * ext/tk/lib/tk/canvas.rb: *** POTENTIALLY INCOMPATIBLE ***
+ 'tags' option of a TkcItem object should give a list of TkcTag objs.
+
+ * ext/tk/lib/tkextlib/vu/dial.rb: fix logical bug.
+
+ * ext/tk/lib/tk/canvas.rb, ext/tk/lib/tkextlib/blt/component.rb:
+ lack of support for methodcall_optkeys.
+
+Mon Oct 5 17:19:33 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator::public_api): take snapshot of
+ public method at the beginning time.
+
+ * lib/delegate.rb (SimpleDelegator#initialize): use
+ Delegator.public_api since public_method might be added after
+ initialization. [ruby-dev:39383]
+
+ * lib/delegate.rb (DelegateClass): ditto.
+
+Mon Oct 5 12:22:12 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_{times, shuffle_bang, sample}): reducing macro
+ calls inside of the loop by keeping pointers in local
+ variables. a patch from Masahiro Kanai (CanI) in [ruby-dev:39406].
+ It was found and fixed at Security and Programming camp 2009.
+
+ * string.c (rb_str_{times, split_m}): ditto.
+
+ * struct.c (rb_struct_{getmember, set, aref_id, aset_id}, {make,
+ inspect}_struct, recursive_{equal, hash, eql}): ditto.
+
+Mon Oct 5 00:09:57 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (basic_obj_respond_to): should not call
+ #respond_to_missing? for not implemented methods.
+ [ruby-core:25909]
+
+ * vm_method.c (rb_method_boundp): returns exceptional value 2 for
+ not-implemented methods when called from #respond_to? (specifies
+ by new constant NOEX_RESPONDS).
+
+ * method.h (enum): new constant NOEX_RESPONDS added.
+
+Sun Oct 4 22:16:29 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/cookie.rb: add default value to @@accept_charset
+ if have not defined. [ruby-dev:38987]
+
+ * lib/cgi/util.rb: ditto.
+
+Sun Oct 4 19:30:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (struct {dump,load}_arg): manage with dfree, instead
+ of using local variable which may be moved by context switch.
+ [ruby-dev:39425]
+
+Sun Oct 4 15:00:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (NATINT_LEN, pack_pack): suppressed warnings.
+
+Sun Oct 4 14:01:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems.rb (Gem::binary_mode): binary mode uses binary
+ encoding.
+
+Sun Oct 4 08:27:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (slicebefore_ii): use id_eqq.
+
+Sun Oct 4 06:40:09 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (ruby.mmp): added macro RUBY_EXPORT to match the
+ change in dln.c
+
+Sun Oct 4 05:34:34 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: add TkVariable#to_hash,to_proc,to_int,
+ to_str,to_ary
+
+Sun Oct 4 00:59:52 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb: fix command-line option of
+ non-interactive terminal. [ruby-core:23016]
+
+Sun Oct 4 00:40:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake/contrib: added. [ruby-core:25918]
+
+Sat Oct 3 22:14:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (bv_decls, bvar): fix for block variables.
+ [ruby-dev:39423]
+
+Sat Oct 3 21:19:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_add_method_def): no redefinition warning on
+ undef.
+
+Sat Oct 3 18:51:11 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_f_integer): now Integer() takes optional base
+ argument. base will be ignored for non string values.
+ suggested by Sam Carr at RubyFoo Lounge at London.
+
+ * test/ruby/test_integer.rb (TestInteger#test_Integer): test
+ updated.
+
+Sat Oct 3 04:34:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assignable_gen): parser_yyerror takes two arguments.
+
+Sat Oct 3 04:07:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake: updated to rake code to rake-0.8.7 source code base.
+
+ * lib/rake/loaders/makefile.rb (Rake::MakefileLoader#process_line):
+ respace dependencies too.
+
+Sat Oct 3 02:59:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assignable_gen): get rid of macro collision.
+
+Sat Oct 3 02:49:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_make_shared): should count frozen array itself.
+
+Sat Oct 3 01:01:20 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/unicode/name2ctype.h: Updated to Unicode 5.2.0.
+
+Sat Oct 3 01:01:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: workaround for regexp metacharacters of expr in
+ prefix path.
+
+Sat Oct 3 00:47:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ripper/dummyparser.rb (DummyParser): improvement by Magnus
+ Holm in [ruby-core:25884].
+ * remove scanner events which simply returned the first argument.
+ * all parser events are now automatically generated.
+ * simplify blocks.
+
+Sat Oct 3 00:43:52 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * method.h (rb_method_type_t): remove a comma at end of
+ enumerator list.
+
+Sat Oct 3 00:31:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (discrete_object_p): needs the argument type to get rid
+ of truncation on platforms where VALUE is larger than int.
+
+Fri Oct 2 22:30:15 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/unicode/name2ctype.h.blt, enc/unicode/name2ctype.kwd,
+ enc/unicode/name2ctype.src: Updated to Unicode 5.2.0.
+ NOTE: when you update these data, download UnicodeData.txt
+ and Scripts.txt from http://www.unicode.org/Public/UNIDATA/
+ and run
+ ruby1.9 tool/enc-unicode.rb UnicodeData.txt Scripts.txt \
+ > enc/unicode/name2ctype.kwd
+
+ * enc/unicode/Scripts.txt: removed.
+
+ * enc/unicode/UnicodeData.txt: removed.
+
+Fri Oct 2 20:49:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_slice_before): take a pattern if no block given.
+
+Fri Oct 2 20:37:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ripper_yylval_id, ripper_get_{id,value}): wrap ID by
+ NODE to track local variable assignment.
+
+ * parse.y (lvar_defined_gen, assignable_gen): enable local
+ variable check. [ruby-core:24923]
+
+ * parse.y (validate): use value only.
+
+ * test/ripper/test_parser_events.rb (test_local_variables): tests
+ based on a patch from Magnus Holm in [ruby-core:25885].
+
+Fri Oct 2 15:34:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (ruby_suppress_tracing): get rid of clobbering by
+ longjmp.
+
+Fri Oct 2 09:20:35 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_origenviron): remove unused old variable.
+ [ruby-dev:39412]
+
+Thu Oct 1 14:16:39 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{setup.mak,Makefile.sub,win32.c},include/ruby/win32.h (RT_VER):
+ split compiler specification and runtime library specification.
+
+ * win32/Makefile.sub (LD_SHARED*, config.status): no need to embed
+ manifest if not exist.
+
+Thu Oct 1 13:23:14 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getpid): simply call GetCurrentProcessId()
+ instead of calling MSVCRT's getpid().
+
+Wed Sep 30 13:15:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_add_method_def): show the location where
+ overwritten method was defined. [ruby-dev:39400]
+
+Wed Sep 30 00:37:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_block_call): extracted.
+
+Wed Sep 30 00:00:25 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): escape as \x{XXXX} when the encoding is
+ other than Unicode. [ruby-dev:39388]
+
+Wed Sep 30 00:00:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (THREAD_MODEL): modified message when no thread
+ model is available.
+
+Tue Sep 29 23:17:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_scan_open_args): rb_utf8mac_encoding is undefined.
+
+Tue Sep 29 22:25:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_struct_iv_get): deprecated because it is
+ not used and access internal structure.
+
+Tue Sep 29 22:19:36 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb (assert_equal): use Time#subsec if nsec
+ is not enough to distinguish arguments.
+
+Tue Sep 29 21:16:35 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_scan_open_args): add UTF8-MAC to no-conversion encoding.
+
+Tue Sep 29 21:21:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (--enable-pthread): deprecated.
+
+Tue Sep 29 21:03:59 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/pp.rb (Kernel#pp): returns its arguments, like Kernel#p.
+ [ruby-dev:34830]
+
+Tue Sep 29 17:02:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/lib/json/common.rb (recurse_proc): removed needless
+ module_function, since visibility is already module_function.
+
+Tue Sep 29 13:48:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_method_definition_eq): non-null definition is
+ not equal to null definition.
+
+ * vm_method.c (rb_add_method_def): nothing to do if old method had
+ same definition. [ruby-dev:39397]
+
+Tue Sep 29 06:50:32 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): dump as \uXXXX when the
+ string is in Unicode. [ruby-dev:39388]
+
+Tue Sep 29 06:49:16 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_unicode_p): defined.
+ Returns 1 when the encoding is Unicode series
+ other than UTF-7 else 0.
+
+Tue Sep 29 04:14:08 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding): On Unix systems,
+ filesystem encoding should be locale encoding.
+ [ruby-dev:39393]
+
+Tue Sep 29 04:07:58 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (rb_f_getenv): use rb_filesystem_str_new_cstr
+ instead of rb_str_new2.
+ ENV['PATH'].encoding should be Filesystem Encoding
+ because its content is related to filesystem.
+ see [ruby-dev:39393]
+
+ * hash.c (env_fetch): ditto.
+
+ * string.c (rb_filesystem_str_new): defined.
+
+ * string.c (rb_filesystem_str_new_cstr): ditto.
+
+ * include/ruby/intern.h (rb_filesystem_str_new): added.
+
+ * include/ruby/intern.h (rb_filesystem_str_new_cstr): ditto.
+
+Tue Sep 29 04:06:18 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/st.h: include inttypes.h and stdint.h.
+
+Tue Sep 29 00:07:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_f_getenv, env_fetch): env string may be overwritten.
+
+Mon Sep 28 23:30:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (load_lib, dln_find_exe_r): env string may be overwritten.
+
+ * dln.c (dln_{exit,loaderror,memerror,notimplement}): renamed as
+ independent names.
+
+ * dln.c (aix_loaderror): needs format string.
+
+Mon Sep 28 19:36:20 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (LK_ERR): with overlapped I/O, LockFileEx() returns
+ ERROR_IO_PENDING if the file is locked.
+
+Mon Sep 28 19:05:05 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * include/ruby/st.h: aligned prototype of st_hash_uint32 with function
+ definition (fixing compiling problem on cygwin)
+
+Mon Sep 28 12:13:15 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * method.h (enum): new method type VM_METHOD_TYPE_MISSING.
+
+ * vm_eval.c (vm_call0): invoking VM_METHOD_TYPE_MISSING method
+ objects.
+
+ * vm_insnhelper.c (vm_call_method): invoking method defined from
+ VM_METHOD_TYPE_MISSING.
+
+ * proc.c (rb_method_entry_arity): ditto.
+
+ * vm_method.c (rb_method_entry_eq): two method object wraps
+ method_missing with same symbol should be equal.
+ [ruby-core:25755]
+
+ * proc.c (mnew): should always return method object.
+
+Mon Sep 28 11:38:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string): the byte after ``\'' may be a part of
+ multibyte character, so pushback it. [ruby-list:46416]
+
+Mon Sep 28 10:06:38 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * stringio/stringio.c (strio_read): set ASCII-8BIT encoding
+ when length argument is given.
+
+Mon Sep 28 01:28:17 2009 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * Makefile.in (miniruby): suppress duplication warning on AIX.
+
+Mon Sep 28 01:13:25 2009 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * common.mk (ruby.imp): add text section [Bug #2064].
+
+ * common.mk (ruby.imp): do not export Init_*.
+
+Sun Sep 27 13:06:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (PP:ObjectMixin#pretty_print): delegates has no inspect
+ method. [ruby-core:25804]
+
+Sun Sep 27 12:01:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_buf_cat2): optimize since all second arguments are
+ constant literals.
+
+ * string.c (str_cat_char): unused now.
+
+ * string.c (rb_hash_{uint{32,},end}): removed.
+
+Sun Sep 27 11:58:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (optflags): add -fomit-frame-pointer by default.
+
+Sun Sep 27 11:28:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_minmax): use struct for memo.
+ (enum_minmax_by): ditto.
+
+Sun Sep 27 10:21:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags): check all flags if each are available.
+
+Sun Sep 27 05:35:17 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/ext/generator/generator.c: Documentation patch by okkez.
+ [Bug #2075]
+
+Sun Sep 27 04:20:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): result's encoding should be fixed.
+ If default_internal is not nil, the encoding is default_internal.
+ Else if default_external is not nil, the encoding is default_external.
+ But the encoding is not ASCII-compatible, the encoding is replaced by
+ US-ASCII.
+ Characters in ASCII-incompatible encoding or non ASCII characters
+ in other than the encoding will be \xXX escaped.
+ [ruby-dev:39343]
+
+ * string.c (str_buf_cat2): defined.
+
+ * string.c (prefix_escape): removed.
+
+Sun Sep 27 05:37:45 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/missing-pips.c: Updated to work with the latest PIPS 1.6.
+
+ * symbian/setup: ditto.
+
+ * symbian/README.SYMBIAN: ditto.
+
+Sun Sep 27 02:00:46 2009 Koichi Sasada <ko1@atdot.net>
+
+ * string.c: use rename-macro instead of RUBY_ALIAS_FUNCTION_TYPE.
+ Because build causes failure.
+
+Sat Sep 26 23:29:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c: moved murmur hash from string.c. [ruby-dev:39376]
+
+Sun Sep 26 00:24:14 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup: Updated .mmp file generation due to blockinlining.c removal.
+
+Sat Sep 26 22:39:24 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Makefile.in(test-rubyspec): explicitly executes run subcommand of
+ mspec.
+
+ * spec/README: typo fix
+
+Sat Sep 26 17:53:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (COLLISION): improved collision log feature.
+
+ * string.c (hash): updated to MurmurHash 2.0 2009-09-19.
+
+ * string.c (rb_hash_start): fixed shift width on 128bit platform.
+
+ * include/ruby/intern.h (rb_hash_{start,uint32,uint,end}): fixed
+ prototypes.
+
+Sat Sep 26 13:26:55 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/net/http.rb (transport_request): Handle timeout error by
+ closing socket if exception raised. [ruby-core:20976]
+
+Sat Sep 26 12:08:17 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (rb_method_entry_eq): method defined from same
+ block/proc should be equal. [ruby-core:25755] [ruby-core:24791]
+
+Sat Sep 26 08:35:12 2009 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (compile_string): rename to parse_string(), because
+ this function only parse String to NODE.
+
+Fri Sep 25 16:01:45 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_access): new function to
+ replace MSVCRT's access().
+ [ruby-core:25761]
+
+ * file.c (eaccess): workaround for recent MSVCRT is no longer needed.
+
+Fri Sep 25 13:04:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (mnew): fix for instance method of Module, BasicObject
+ and subclass of a class which overrides respond_to_missing?.
+ based on a patch from Nikolai Lugovoi <nlugovoi AT gmail.com> in
+ [ruby-core:25748].
+
+Fri Sep 25 11:56:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_mod_method_defined): should return true or false.
+
+Thu Sep 24 13:32:53 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (mnew): generate method object that wraps method_missing,
+ when #respond_to_missing? is defined.
+
+ * test/ruby/test_object.rb (test_respond_to_missing): add test
+ suites for #respond_to_missing? changes.
+
+Thu Sep 24 09:41:42 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/mathn.rb (Bignum#**): Fixed bignum**fixnum that was broken when
+ requiring lib/mathn
+ [ruby-core:25740]
+
+Thu Sep 24 02:21:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (atan): atan(Infinity) is
+ PI/2.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (atan): reduce loop with
+ the double-angle formula. based on a patch from Masahiro
+ Kanai (CanI) in [ruby-dev:39367].
+
+Thu Sep 24 01:14:18 2009 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * dln.c (aix_loaderror): fixed typo. suppress warnings.
+
+Thu Sep 24 00:17:06 2009 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_minmax): reduce comparison.
+ (enum_minmax_by): ditto.
+
+Wed Sep 23 22:58:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/thread.rb (ConditionVariable#wait): add timeout argument.
+ [ruby-talk:346154]
+
+Wed Sep 23 21:25:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (atan): refined.
+
+Wed Sep 23 17:08:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assign_in_cond): also should warn assignment to dvar in
+ conditional. [ruby-dev:39363]
+
+Wed Sep 23 13:14:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_upto): keep first width. [ruby-dev:39361]
+
+Wed Sep 23 11:28:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/instruction.rb (make_header_prepare_stack): check stack
+ overflow. [ruby-core:25714]
+
+ * tool/instruction.rb (make_footer_stack_val): ditto.
+
+Wed Sep 23 05:03:36 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c (umethod_bind, rb_mod_define_method): Fix bug that
+ disallowed methods from singleton classes to be used for
+ UnboundMethod#bind, Kernel#define_singleton_method and
+ Module#define_method, even when that singleton class was of the right
+ kind_of. A patch by Shane O'Brien [ruby-core:25632]
+
+Tue Sep 22 22:56:48 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (basic_obj_respond_to): new function to fundamental
+ behavior for #respond_to?
+
+ * vm_method.c (basic_obj_respond_to): calls #respond_to_missing
+ method if overridden, to check responsiveness of methods
+ implemented by #method_missing.
+
+Tue Sep 22 16:34:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_table_entry, st_get_key): use st_index_t.
+
+Tue Sep 22 16:28:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regenc.h (PosixBracketEntryType): constified.
+
+ * regenc.h (PosixBracketEntryInit): suppress warnings.
+
+ * regerror.c (onig_error_code_to_str, onig_snprintf_with_pattern):
+ fixed type.
+
+ * regparse.c (st_str_end_key, str_end_cmp, str_end_hash):
+ constified.
+
+ * tool/transcode-tblgen.rb (transcode_generated_code): fixed type.
+
+Tue Sep 22 10:29:06 2009 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_chunk): new method Enumerable#chunk.
+ * enum.c (enum_slice_before): new method Enumerable#slice_before.
+ [ruby-dev:38392] [ruby-dev:39240]
+
+Tue Sep 22 05:58:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c, cont.c, gc.c, insns.def, iseq.c, iseq.h, process.c,
+ thread.c, vm.c, vm_core.h, vm_dump.c, vm_eval.c,
+ vm_insnhelper.c, vm_method.c, template/insns_info.inc.tmpl,
+ tool/instruction.rb: fixed types.
+
+Tue Sep 22 05:04:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/{ludcmp,math}.rb: depend on
+ bigdecimal.
+
+ * ext/bigdecimal/lib/bigdecimal/*.rb: made module functions.
+
+Tue Sep 22 04:47:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValue): support conversion from
+ Rational. [ruby-core:25697]
+
+Tue Sep 22 04:43:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (INSNS): depend on tools.
+
+Tue Sep 22 01:10:22 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * ossl_ocsp.c (ossl_ocspres_to_der): Bug fix in Response#to_def.
+ Patch by Chris Chandler [ruby-core:18411]
+
+Tue Sep 22 01:10:02 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * ossl_config.c (ossl_config_add_value_m, ossl_config_set_section):
+ Check if frozen (or untrusted for $SAFE >= 4) [ruby-core:18377]
+
+Mon Sep 21 17:12:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_binding): allow proc from method. [ruby-core:25589]
+
+ * vm.c (collect_local_variables_in_env): block iseq can be NULL.
+
+Mon Sep 21 10:50:37 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (rb_time_succ): make Time#succ obsolete since time is not
+ a discrete value.
+
+ * range.c (discrete_object_p): treat time objects specially to
+ determine discrete values, since time objects have #succ yet are
+ discrete (for now at least).
+
+Mon Sep 21 10:13:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_new, cont_capture, fiber_t_alloc): needs already
+ running thread. cf. [ruby-core:25681]
+
+Mon Sep 21 00:07:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (sin, cos, atan, exp, log):
+ improved precision and performance. based on a patch from Makoto
+ Yamashita in [ruby-core:25600] and [ruby-core:25602].
+
+Sun Sep 20 11:11:34 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * struct.c (rb_struct_equal, rb_struct_eql): Handle comparison of
+ recursive structures [ruby-core:24759]
+
+ * range.c (range_eq, range_eql): ditto for ranges
+
+Sat Sep 19 17:46:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (ENABLE_VM_OBJSPACE): socklist needs st_table in
+ rb_w32_sysinit(), before object space initialization.
+
+Sat Sep 19 17:32:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (GlobPathValue), file.c (rb_get_path_check): path names
+ must be ASCII compatible.
+
+Sat Sep 19 00:02:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_type): forward declaration to suppress a
+ warning. a patch from Naohisa Goto at [ruby-dev:39350]
+
+Fri Sep 18 23:59:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (GlobPathValue): adjust return types. based on a patch
+ from Naohisa Goto at [ruby-dev:39350].
+
+Fri Sep 18 23:51:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): entry regexp object before its encoding
+ name. [ruby-core:25625]
+
+Fri Sep 18 16:29:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (eval.o): needs vm.h.
+
+ * eval.c (ruby_cleanup): destruct current VM before exit.
+
+ * gc.c (rb_objspace_free): free object space.
+
+ * vm.c (ruby_vm_destruct): destruct and free VM struct.
+
+Fri Sep 18 16:15:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each), parse.y (stmt, arg): arg_concat()
+ on op_asgn was inversed. [ruby-core:25629] [Bug #2050]
+
+Fri Sep 18 16:06:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (GlobPathValue): glob allows null bytes as separators.
+
+Fri Sep 18 10:11:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * doc/re.rdoc: use rdoc mode.
+
+ * misc/rdoc-mode.el: added.
+
+Fri Sep 18 09:02:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc#parse_files): don't branch by
+ RUBY_VERSION.
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc#parse_files): emacs local variables
+ are delimited by a semicolon. supported Vim style.
+
+Fri Sep 18 07:06:41 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/fileutils/test_fileutils.rb: add a test for [ruby-dev:39345]
+
+Fri Sep 18 06:47:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (push_glob): str should be a string always.
+
+ * dir.c (rb_push_glob, dir_globs): use #to_path to convert non-
+ string values. cf. [ruby-dev:39345]
+
+Fri Sep 18 06:36:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (rm_f, rm_rf): FileUtils.rm can take an array.
+ [ruby-dev:39345]
+
+ * lib/mkmf.rb (create_header): open in binmode.
+
+Thu Sep 17 18:34:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (vm_xrealloc): free as like standard free if size is zero.
+
+Thu Sep 17 15:41:02 2009 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h: use rb_node_newnode() directly.
+
+Thu Sep 17 15:01:32 2009 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c: removed.
+
+ * README.EXT: ditto.
+
+ * README.EXT.ja: ditto.
+
+Thu Sep 17 13:50:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_s_debug_set): set level, not only boolean.
+
+Thu Sep 17 13:12:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser/ruby.rb (RDoc::Parser::Ruby): parse also rdoc
+ files.
+
+ * doc/re.rdoc: renamed from re.rb.
+
+Thu Sep 17 09:37:28 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * doc/re.rb: New document for Ruby's fork of Oniguruma.
+ written by Run Paint Run Run [ruby-core:25420]
+
+ * re.c: import document in doc/re.rb.
+
+ * .document: add doc/re.rb.
+
+Thu Sep 17 06:03:40 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (Matrix#rank): Two bug fixes. One made
+ Matrix[[0,0],[0,0],[1,0]].rank raise a NoMethodError while the other
+ one had Matrix[[0,1],[0,0],[1,0]].rank raise a TypeError.
+
+Thu Sep 17 06:02:04 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Optimizations
+
+Thu Sep 17 00:36:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mdump): error message refined.
+
+Wed Sep 16 19:27:43 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_thread.rb (TestThread#test_recursive): remove
+ implementation dependent test.
+
+Wed Sep 16 17:42:52 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): install-capi needs docdir. And,
+ mandir, infodir and ridir are also depend on datadir like docdir.
+
+Wed Sep 16 17:20:49 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (Matrix#/): Fix obvious bug
+
+Wed Sep 16 16:59:34 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (DOCTARGETS): rdoc is default.
+
+Wed Sep 16 16:27:40 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: typo.
+
+Wed Sep 16 16:20:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CAPITARGET): enable iff doxygen is available.
+
+ * configure.in (INSTALLDOC): enable if rdoc or doxygen are enabled.
+
+ * common.mk (docs): target to make documents.
+
+ * Makefile.in, win32/Makefile.sub (install-{all,nodoc}): trigger
+ by $(INSTALLDOC) from install.
+
+Wed Sep 16 13:39:10 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (determinant): Bug fix where determinant failed on
+ some matrices [ruby-core:23597]
+
+Wed Sep 16 13:30:20 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: trivial optimizations
+
+Wed Sep 16 13:15:17 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * template/Doxyfile.tmpl: RbConfig::CONFIG['DOT'] is sometimes nil.
+
+Wed Sep 16 10:14:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (rb_protect, rb_jump_tag): added.
+
+Wed Sep 16 10:12:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (main): makes also encs.
+
+Wed Sep 16 06:30:07 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * thread.c (rb_exec_recursive_outer, rb_exec_recursive): Added method
+ to short-circuit to the outermost level in case of recursion
+
+ * test/ruby/test_thread.rb (test_recursive_outer): Test for above
+
+ * hash.c (rb_hash_hash): Return a sensible hash for in case of
+ recursion [ruby-core:24648]
+
+ * range.c (rb_range_hash): ditto
+
+ * struct.c (rb_struct_hash): ditto
+
+ * array.c (rb_array_hash): ditto
+
+ * test/ruby/test_array.rb (test_hash2): test for above
+
+Wed Sep 16 06:17:33 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * vm_eval.c (rb_catch_obj, rb_catch, rb_f_catch): No longer use the
+ obsolete function rb_iterate.
+
+Tue Sep 15 21:48:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (--enable-frame-address): removed.
+
+Tue Sep 15 15:21:01 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{configure.bat,Makefile.sub} (RDOCTARGET): the meaning of this
+ macro was changed at r24923.
+
+Tue Sep 15 15:16:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (install-rdoc), configure.in (RDOCTARGET): removed
+ circular dependency. [ruby-dev:39339]
+
+Tue Sep 15 15:09:13 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat: need a space before a tab to output the tab by
+ echo.
+
+Tue Sep 15 14:24:52 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_split_m): use rb_isspace when the
+ string may be ASCII-incompatible.
+
+ * string.c (rb_str_lstrip_bang): ditto.
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+Tue Sep 15 12:12:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_USE_BUILTIN_FRAME_ADDRESS): check after real
+ target CPU is set.
+
+ * configure.in (RUBY_UNIVERSAL_ARCH): check real target CPU after
+ AC_PROG_CC.
+
+Tue Sep 15 06:42:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (install-all): target to install all.
+
+ * tool/rbinstall.rb (parse_args): accept all install targets.
+
+ * tool/rbinstall.rb (parse_args): show help message and exit if
+ rbconfig could not load.
+
+Tue Sep 15 04:25:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RDOCTARGET): use install-all. [ruby-dev:39334]
+
+Tue Sep 15 03:00:35 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lstrip_bang): use ascii_isspace(). [ruby-dev:39322]
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+ * string.c (rb_str_split_m): ditto.
+
+Mon Sep 14 16:39:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c, parse.y: fixed types.
+
+ * node.h (nd_line): limit to int.
+
+Mon Sep 14 11:23:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, common.mk, */configure.bat (rdoc): make before
+ install if rdoc is enabled. [ruby-dev:39325]
+
+Mon Sep 14 10:56:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (check-ruby): run all test of ruby itself.
+
+Mon Sep 14 10:44:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_TYPE_P): should not use BUILTIN_TYPE for
+ special constants.
+
+Mon Sep 14 10:08:19 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): use rb_enc_mbc_to_codepoint
+ because we already knew char is found and got length.
+
+Mon Sep 14 09:59:03 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (NUM2INT, NUM2LL, INT2NUM, UINT2NUM),
+ (LONG2NUM, ULONG2NUM, NUM2CHR): get rid of backward references of
+ macros. the code couldn't compile by VC.
+
+Mon Sep 14 08:33:11 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/net/http.rb (each_*): return enumerator if no block present.
+ Patch by Arthur Schreiber [ruby-core:18310]
+
+Mon Sep 14 06:42:21 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/cgi/cookie.rb (value): Keep CGI::Cookie#value in sync with the
+ cookie itself. Based on a patch by Arthur Schreiber [ruby-core:17634]
+
+Mon Sep 14 05:21:12 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/net/http.rb (fetch): Handle properly default values; a patch by
+ Arthur Schreiber [ruby-core:18308]
+
+Mon Sep 14 04:07:09 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/set.rb (==): Optimization; patch by Arthur Schreiber [ruby-core:17203]
+
+Mon Sep 14 03:30:23 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/pre-build: added rule to generate id.h for Symbian build.
+
+ * symbian/configure.bat: fixed harmless error message.
+
+Sun Sep 13 22:18:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_mod_remove_const): do not change VM state when an
+ exception will occur.
+
+Sun Sep 13 21:25:01 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (oletypelib_get_libattr): some refactoring
+ by adding oletypelib_get_libattr.
+
+Sun Sep 13 20:55:19 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (oletypelib_get_typelib): some refactoring
+ by adding oletypelib_get_typelib.
+
+Sun Sep 13 20:18:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_sflag, proc_options, load_file_internal): fixed
+ types.
+
+Sun Sep 13 19:39:59 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: some refactoring.
+
+Sun Sep 13 19:38:34 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): no need to define DATA when error.
+
+Sun Sep 13 18:48:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XLDFLAGS): link startup code with ObjC support.
+
+Sun Sep 13 13:38:00 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * thread.c (recursive_*): refactored the access to the inspect
+ table used by rb_exec_recursive_*. The functions recursive_push,
+ pop and check now assume a valid hash table as their first
+ argument. Added documentation.
+
+Sun Sep 13 12:07:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (SYM2ID): needs parens.
+
+ * include/ruby/ruby.h (NUM2INT, NUM2LL, INT2NUM, UINT2NUM),
+ (LONG2NUM, ULONG2NUM, NUM2CHR, rb_type_p, rb_special_const_p):
+ GCC specific optimization.
+
+Sun Sep 13 11:06:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI::Meta#content_type_parse): strip quotes.
+
+Sun Sep 13 09:38:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/prime.rb (EratosthenesGenerator#initialize): call super.
+ (TrialDivisionGenerator, Generator23): ditto. [ruby-core:25539]
+
+Sun Sep 13 09:34:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_add_method_def): no warning for inherited
+ method.
+
+Sun Sep 13 08:30:30 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: fix WIN32OLE_TYPELIB.new when the 1st
+ argument is the non-registered file.
+
+Sun Sep 13 02:08:43 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: change members of iseq_inline_cache_entry.
+ make cache value members to one union member "ic_value".
+
+ * insns.def: ditto.
+
+ * vm_insnhelper.c: ditto.
+
+Sun Sep 13 01:15:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (URI::FTP#buffer_open): fix the %2F handling.
+
+Sun Sep 13 00:46:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (CALL_METHOD_HOOK): refined with macro.
+
+ * vm_method.c (rb_remove_method_id): no definition body is
+ undefined.
+
+ * vm_method.c (rb_add_method, rb_add_method_me): call method added
+ hook after definition. [ruby-core:25536]
+
+ * vm_method.c (rb_alias): hooks are called from rb_add_method_def.
+
+Sat Sep 12 22:47:24 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (URI::FTP#buffer_open): use the port specified in
+ the URI.
+
+Sat Sep 12 17:31:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (GCC): subst for GCC depending extension libraries.
+
+Sat Sep 12 07:52:59 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): initialize result
+ variant value.
+
+Fri Sep 11 21:52:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS: update for 1.9.2. based on a patch from Run Paint Run Run
+ in [ruby-core:25534].
+
+Fri Sep 11 21:38:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check for real target cpu on darwin 10.
+
+Fri Sep 11 18:51:57 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/fileutils: use require_relative to require fileasserts.
+
+Fri Sep 11 14:22:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (debugflags): use gdb by default on linux and
+ darwin.
+
+ * configure.in (XLDFLAGS): keep ARCHFILE macro on AIX.
+
+ * configure.in (RUBY_REPLACE_TYPE): define typename to default
+ type if the latter is found.
+
+Fri Sep 11 13:57:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (fstat): override if large file support is
+ enabled.
+
+Fri Sep 11 11:33:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.{guess,sub}: updated to automake-1.11.
+
+Fri Sep 11 10:38:33 2009 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPHeader::encode_kvpair): also call to_s
+ to k. A patch from swdyh <youhei@gmail.com>
+ http://github.com/swdyh/ruby/tree/c847f43c2ccb679b9ff728f8b1b16c6ceeb57f39
+
+Fri Sep 11 09:45:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (aix_loaderror): get rid of using uninitialized value in the
+ case loadquery fails. fixed wrong index variable usage. see
+ [ruby-core:25479].
+
+Fri Sep 11 07:52:43 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * unicode.c (onigenc_unicode_property_name_to_ctype):
+ ignore case of properties.
+
+ * tool/enc-unicode.rb: downcase properties list.
+
+ * enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ follow above.
+
+Fri Sep 11 05:00:19 2009 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h (rb_data_type_t): Add comments.
+ And add a member variable "data", a multi-purpose storage
+ area for rb_data_type.
+
+Fri Sep 11 02:14:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/dl: use require_relative to require test_base.rb.
+
+Fri Sep 11 02:06:44 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (rb_char_to_option_kcode): ASCII-8BIT should
+ also delay.
+
+ * re.c (parser_regx_options): return rb_ascii8bit_encindex on
+ ASCII-8BIT. [ruby-dev:39300]
+
+Fri Sep 11 01:14:00 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/net/http.rb (fetch): rdoc fix, patch by Arthur Schreiber.
+ [ruby-core:18309].
+
+Thu Sep 10 23:00:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): fix for parallel execution.
+ [ruby-core:25509]
+
+Thu Sep 10 21:22:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/dl/test_cptr.rb (test_free=): test SEGV at first.
+ [ruby-dev:39269]
+
+Thu Sep 10 21:20:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): Don't use
+ AssertionMessage.
+
+Thu Sep 10 15:59:05 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (UNKNOWN_ESC_WARN): added.
+
+ * regparse.c (conv_backslash_value): Warn unknown
+ escaped chars in regexp. [ruby-dev:39104]
+
+Wed Sep 9 22:02:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#copy_file): open the source
+ file first to ensure it can be copied. [ruby-core:25498]
+
+Wed Sep 9 21:20:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_data_type): typed.
+
+ * ext/dl/cfunc.c (dlcfunc_data_type): typed.
+
+ * ext/dl/cptr.c (dlptr_data_type): ditto.
+
+ * ext/dl/handle.c (dlhandle_data_type): ditto.
+
+Wed Sep 9 17:17:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (parser_regx_options): only one kcode should effect
+ options [ruby-core:25411]
+
+Wed Sep 9 15:46:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_feature_provided): fixed for autoloading extension
+ library without suffix.
+
+Wed Sep 9 15:24:32 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * include/ruby/st.h : revert previous commit.
+
+ * ext/objspace/objspace.c : remove st_memsize declare.
+
+Wed Sep 9 14:07:19 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * include/ruby/st.h : fix duplicate st_memsize declare.
+
+Wed Sep 9 13:33:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_autoload): initialize typed data.
+
+Wed Sep 9 13:10:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_free_table): constified.
+
+Wed Sep 9 13:09:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_data_type): typed.
+
+ * enumerator.c (enumerator_data_type): typed.
+ (yielder_data_type, generator_data_type): ditto.
+
+ * error.c (name_err_mesg_data_type): typed.
+
+ * file.c (stat_data_type): typed.
+
+ * thread.c (thgroup_data_type, mutex_data_type, barrier_data_type):
+ typed.
+
+ * time.c (time_data_type): typed.
+
+ * transcode.c (econv_data_type): typed.
+
+ * variable.c (autoload_data_type): typed.
+
+Wed Sep 9 11:11:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_data_type_struct): constified dsize.
+
+Wed Sep 9 11:07:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_memsize): fixed wrong expression on IA64.
+
+Wed Sep 9 10:51:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_restore_1, rb_cont_call): should be Fiber.
+
+Wed Sep 9 00:27:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_data_type, fiber_data_type): typed.
+
+Tue Sep 8 22:37:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb, lib/tmpdir.rb (Tmpname): extracted new module.
+ [ruby-dev:39197]
+
+Tue Sep 8 22:18:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_init_*table_with_size): use st_index_t.
+
+ * include/ruby/st.h (st_hash_func): use st_index_t.
+
+Tue Sep 8 21:48:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_mark): mark callers iseqs. [ruby-core:25474]
+ [Bug #2062]
+
+Tue Sep 8 11:53:58 2009 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_mark): no need to mark inline cache entries.
+
+ * insns.def (onceinlinecache, setinlinecache): save a value
+ to mark cached value.
+
+Tue Sep 8 08:32:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/dl/test_{cfunc,ptr}.rb: added tests from Aaron Patterson.
+ see [ruby-dev:39249].
+
+Mon Sep 7 17:22:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_tell): adjustment for ungotten data.
+
+Mon Sep 7 17:13:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_encname_bom_p): removed magic number.
+
+Mon Sep 7 12:26:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/inspector.rb (IRB::INSPECTORS.def_inspector): support
+ object without #inspect defined. a patch from Daniel
+ Bovensiepen. [ruby-core:25200]
+
+Mon Sep 7 05:38:34 2009 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_*): add IC operands.
+
+ * vm_insnhelper.h (CALL_SIMPLE_METHOD): add a version which
+ use an inline cache. USE_IC_FOR_SPECIALIZED_METHOD macro
+ switches the behaviour. This change also removes
+ CALL_SIMPLE_METHOD_IC() macro.
+
+ * tool/instruction.rb: fix elimination process to ignore
+ variable "ic".
+
+Mon Sep 7 05:21:09 2009 Koichi Sasada <ko1@atdot.net>
+
+ * Makefile.in, common.mk: move a id.h generation rule.
+
+Mon Sep 7 05:07:59 2009 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: remove RUBY_VERSION output.
+
+Mon Sep 7 05:06:16 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c: rename macro name ENABLE_IC_FOR_IVAR
+ to USE_IC_FOR_IVAR.
+
+Mon Sep 7 03:21:40 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.escape): obsoleted.
+
+ * lib/uri/common.rb (URI.unescape): ditto.
+
+Sun Sep 6 18:13:54 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.h (CALL_SIMPLE_METHOD_IC): make a macro
+ invoke simple method with inline cache entry.
+
+ * insns.def (opt_length, opt_size): fix to use inline method cache.
+
+Sun Sep 6 17:47:21 2009 Koichi Sasada <ko1@atdot.net>
+
+ * template/id.h.tmpl: fix this.
+
+ * id.h: removed. Because this file is generated automatically.
+
+Sun Sep 6 17:31:28 2009 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_specialized_instruction), insns.def (opt_size):
+ optimize #size methods (by specialized instruction).
+
+ * id.c, id.h, vm.c, vm_insnhelper.h: ditto.
+
+Sun Sep 6 16:13:06 2009 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (setinstancevariable), vm_insnhelper.c (vm_setivar):
+ fix to use inline cache (trivial optimization).
+
+Sun Sep 6 10:34:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c: fixed rdoc, a patch from Nobuhiro IMAI at [ruby-core:25433].
+
+Sun Sep 6 05:19:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c: Add rdoc for ARGF.
+ contributed by Run Paint Run Run. [ruby-core:23854]
+
+Sat Sep 5 15:21:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): op_asgn to aref should return rhs.
+ [ruby-core:25387]
+
+Sat Sep 5 10:38:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): &&= and ||= should return rhs.
+ [ruby-dev:39163] (#1996), [ruby-core:25143]
+
+Sat Sep 5 08:51:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (update_char_offset): position should be long.
+
+ * re.c (match_hash, match_equal): new methods. [ruby-core:24748]
+
+ * re.c (reg_match_pos, rb_reg_eqq, rb_reg_s_quote): get rid of use
+ VALUE as int.
+
+Fri Sep 4 20:40:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (round): added declaration. [ruby-dev:39222]
+
+Fri Sep 4 06:15:39 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (Init_Dir): alias Dir#path to Dir#to_path. [ruby-core:25326]
+
+Fri Sep 4 04:49:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): fixed rdoc. [ruby-core:25332]
+
+Fri Sep 4 04:46:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/httpservlet/abstract.rb (do_OPTIONS): method names
+ are symbols now. [ruby-core:24580]
+
+Thu Sep 3 17:56:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (literal_concat_gen): concat body from dstr instead of
+ nd_next. [ruby-core:25284]
+
+Wed Sep 2 16:49:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * math.c (math_gamma): get rid of direct comparison between too
+ big double and integer, with gcc on x86_64. [ruby-core:25257]
+
+Wed Sep 2 13:47:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * math.c (domain_check): simplified.
+
+Wed Sep 2 11:32:24 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (obj_free): fix to free method table (fix memory leak).
+
+Wed Sep 2 07:42:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/instruction.rb (RubyVM::InstructionsLoader#make_stackcaching_insns):
+ simplified.
+
+Wed Sep 2 02:32:46 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/common.rb (NaN): Change definition
+ of NaN to 0.0/0 for 1.8/1.9 compatibility.
+
+Wed Sep 2 01:16:32 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Update to JSON 1.1.9.
+
+Tue Sep 1 19:56:28 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (eval_string_with_cref): fix to check local_table_size.
+ [ruby-dev:39205] [Bug #2024]
+
+Mon Aug 31 16:20:41 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * class.c (make_singleton_class): variable name changed.
+ removed an unnecessary conditional.
+
+Mon Aug 31 14:17:09 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * class.c: refactored singleton class related matters.
+ Handles eigenclasses and plain classes transparently.
+
+ (make_metaclass): renamed from make_metametaclass.
+ (METACLASS_OF): new utility macro
+ (META_CLASS_OF_CLASS_CLASS): ditto.
+ (ENSURE_EIGENCLASS): ditto.
+ (make_singleton_class): extracted from rb_singleton_class.
+ (boot_defclass): moved from object.c
+ (Init_class_hierarchy): extracted from Init_Object.
+ (rb_make_metaclass): refactored.
+ (singleton_class_of): extracted from rb_singleton_class.
+ (rb_singleton_class): refactored.
+ (rb_define_singleton_method): it needs a metaclass only
+ but not its metametaclass.
+
+ * object.c: booting class hierarchy was moved to class.c
+ for keeping dependency between compilation units least.
+ (Init_Object): extracting the booting into
+ Init_class_hierarchy.
+ (boot_defclass): moved to class.c.
+
+Sun Aug 30 23:44:09 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): use mktime for the first guess.
+
+Sun Aug 30 16:38:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_enc_symname2_p): not depend on nul terminator.
+
+Sun Aug 30 14:11:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: dependencies updated.
+
+Sun Aug 30 13:00:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (add): shortcut implemented for fixnums.
+ (sub): ditto.
+ (mul): ditto.
+
+Sun Aug 30 10:24:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (eq): apply RTEST.
+ (ne): ditto.
+ (add): avoid method dispatch for bignums.
+ (sub): ditto.
+ (mul): ditto.
+ (mod): ditto.
+
+Sun Aug 30 09:45:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigmul1_single): new function specialized respect to
+ multiply two single digit bignums.
+ (bigmul0): use bigmul1_single.
+
+Sun Aug 30 03:59:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * timev.h (TIME_SCALE): defined as 1000000000.
+ (struct vtm): subsec is replaced by subsecx.
+ subsec * TIME_SCALE == subsecx.
+
+ * time.c: avoid rational in most cases.
+ (struct time_object): timev is replaced by timexv.
+ timev * TIME_SCALE == timexv.
+
+Sun Aug 30 03:17:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (init_leap_second_info): use TIMET_MAX.
+
+Sun Aug 30 01:15:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_read_all): use gzfile_newstr;
+ set and convert its encoding. [ruby-dev:38304]
+
+Sat Aug 29 20:40:02 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * vm_eval.c (rb_call0): gets rid of checking method cache twice.
+
+ * method.h (rb_get_method_entry): added a prototype of the function.
+ (rb_method_entry_without_cache): more friendly name.
+
+Sat Aug 29 12:16:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (Dir.mktmpdir): rolled back r24699. [ruby-dev:39193]
+
+Sat Aug 29 03:27:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#make_tmpname): removed thread race
+ condition.
+
+ * lib/tmpdir.rb (Dir.mktmpdir): ditto.
+
+Fri Aug 28 20:29:34 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb (Tempfile#callback): Debug information should be
+ output to stderr, not stdout; pointed out by akira yamada.
+ cf. [ruby-dev:39072]
+
+Fri Aug 28 20:34:24 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: use SafeStringValue instead of
+ Check_SafeStr.
+
+Fri Aug 28 13:30:43 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (do_select): rollback r24680. void struct initializer is
+ invalid.
+
+Fri Aug 28 11:45:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * method.h (rb_method_definition_t): split from rb_method_entry_
+ to deal aliases. [ruby-dev:39165]
+
+ * proc.c (struct METHOD): contains rb_method_entry_t copy.
+
+Fri Aug 28 10:21:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_mark): skip outdated cache entries.
+
+ * vm_core.h ({GET,INC}_VM_STATE_VERSION): moved from
+ vm_insnhelper.h.
+
+Fri Aug 28 07:25:25 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (next_i): typo fixed (reached at end -> reached an
+ end). pointed out by James Edward Gray II at LoneStar RubyConf.
+
+Thu Aug 27 18:31:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_remove_method_id): exported.
+
+ * numeric.c (num_sadded): fix for non-ascii method name.
+
+Thu Aug 27 14:32:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_preprocess_dregexp): set encoding as ASCII-8BIT
+ when /n is specified and the embedded string is escaped text.
+
+Thu Aug 27 13:51:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): random integer can be a fixnum for
+ bignum range. [ruby-dev:39173]
+
+Thu Aug 27 08:16:34 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/strscan/strscan.c (strscan_set_string): set string should not be
+ duped or frozen, because freezing it causes #concat method failure,
+ and unnecessary to dup without freezing. a patch from Aaron
+ Patterson at [ruby-core:25145].
+
+Thu Aug 27 02:06:11 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (enc/unicode/name2ctype.kwd):
+ remove rules to generate name2ctype.kwd from
+ UnicodeData.txt and Scripts.txt.
+ if you want to generate, use tool/enc-unicode.rb.
+
+Thu Aug 27 02:00:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * unicode.c (PROPERTY_NAME_MAX_SIZE): use MAX_WORD_LENGTH.
+
+Wed Aug 26 23:59:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): refined error message.
+
+ * random.c (random_rand): fixed for edge cases of ranges.
+ [ruby-dev:39166]
+
+Wed Aug 26 21:49:23 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/tempfile.rb: add documents from Hongli Lai's fork.
+ cf [ruby-core:25131].
+
+Wed Aug 26 19:51:13 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/mkconfig.rb (program_transform_name): fix for multiple trans
+ rules for autoconf 2.61 or earlier.
+
+ * tool/rbinstall.rb (program_transform_name): ditto.
+
+Wed Aug 26 19:20:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): unified random_int and random_float.
+ [ruby-dev:39158]. and fixes [ruby-core:24655], [ruby-core:24677],
+ [ruby-core:24679].
+
+Wed Aug 26 18:59:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/test_tempfile.rb: merged from Hongli Lai's fork.
+ cf [ruby-core:25131].
+
+Wed Aug 26 18:49:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#close!): should not undefine finalizer
+ by just unlink.
+
+Wed Aug 26 17:00:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb (program_transform_name): fix for autoconf 2.61
+ or earlier.
+
+Wed Aug 26 14:34:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#close!, Tempfile#path): added side
+ notes from Hongli Lai's fork.
+
+ * lib/tempfile.rb (Tempfile#unlink, Tempfile.callback): do nothing
+ any more once unlinked.
+
+Wed Aug 26 13:48:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#unlink): reverted r23494, since the
+ usage in RubyInline is considered wrong.
+
+Wed Aug 26 12:36:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (collect_local_variables_in_env): skips internal variables.
+ [ruby-core:25125]
+
+Tue Aug 25 23:51:07 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb: added for generate name2ctype.kwd.
+ contributed by Run Paint Run Run [ruby-core:24775]
+
+ * enc/unicode.c (CodeRanges): move definitions to name2ctype.h.
+
+ * enc/unicode/name2ctype.h.blt, enc/unicode/name2ctype.kwd,
+ enc/unicode/name2ctype.src: updated to v5.1.
+
+ * enc/unicode/UnicodeData.txt, enc/unicode/Scripts.txt: added v5.1.
+
+ * Makefile.in: add rule to generate name2ctype.kwd from
+ UnicodeData.txt and Scripts.txt.
+
+Tue Aug 25 22:31:51 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (MKDIR_P): Set 'mkdir -p' to MKDIR_P
+ when AC_PROG_MKDIR_P doesn't set MKDIR_P.
+
+Tue Aug 25 17:38:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_clone, bigmul1_normal, bigdivrem): trivial
+ optimization.
+
+ * bignum.c (big2dbl): truncates zero digits to get rid of possible
+ underflow.
+
+Tue Aug 25 12:22:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (enc/unicode/name2ctype.h): explicitly ignores the
+ result of diff and turns -e option off, because *BSD make passes
+ it by default.
+
+Tue Aug 25 02:16:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (DLDFLAGS): use linker_flag and changed undefined
+ and multiply_defined behaviors. cf [ruby-core:25086].
+
+Mon Aug 24 21:31:37 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb, test/rss/test_maker_2.0.rb: fix a bug
+ that RSS Maker doesn't accept 'false' as guid's isPermaLink.
+ Reported by Joe Holt. Thanks!!!
+
+Mon Aug 24 18:58:56 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/missing.h (vsnprintf): rollback a part of r24179, because
+ it's meaningless.
+
+Mon Aug 24 16:35:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_delete_safe): deals with packed entries.
+ [ruby-core:25080]
+
+ * st.c (st_cleanup_safe): ditto. [ruby-core:25081]
+
+Mon Aug 24 13:24:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (MAKEDIRS): define.
+
+ * common.mk (capi): using $(MAKEDIRS), so depends on $(PREP).
+
+Mon Aug 24 13:14:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): set cross_compiling only when
+ universal binary.
+
+Mon Aug 24 12:55:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (enc/unicode/name2ctype.h): use md instead of
+ $(MAKEDIRS).
+
+Sun Aug 23 15:22:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (main): "usage" description updated.
+
+Sun Aug 23 15:12:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (Dir.mktmpdir): updated to latest.
+ (in_temporary_working_directory): temporary directory name changed.
+
+Sun Aug 23 00:56:13 2009 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (rb_thread_schedule): don't recur infinitely.
+ (rb_threadptr_execute_interrupts): ditto.
+ [ruby-dev:38060]
+
+Sat Aug 22 15:07:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/syck/rubyext.c (id_hash_new): new function to create a hash
+ which key is compared by object id.
+ (syck_emitter_reset): use id_hash_new for bonus->data.
+
+ * lib/yaml.rb (YAML.quick_emit): give the object itself to emitter.
+ don't use object_id and hash.
+
+Sat Aug 22 13:05:22 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in: use CP and MV macros.
+
+Sat Aug 22 01:29:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (rm_f, rm_rf): pass the last hash through if exists.
+ [ruby-dev:39153]
+
+Sat Aug 22 00:48:08 2009 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c (ary2sv): add dup argument.
+ (enumerator_next): call ary2sv with dup=0.
+ (enumerator_peek): call ary2sv with dup=1 to return duplicated array.
+ (enumerator_peek_values_m): new function to return duplicated array.
+ (Init_Enumerator): use enumerator_peek_values_m as
+ Enumerator#peek_value.
+
+Sat Aug 22 00:03:19 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_check_deadlock): decrease number of sleepers before
+ deadlock detection because the deadlock exception makes main thread
+ run. [ruby-dev:39142]
+
+Fri Aug 21 22:34:58 2009 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c (get_next_values): extracted from
+ enumerator_next_values.
+ (enumerator_next_values): use get_next_values.
+ (enumerator_peek_values): ditto.
+
+Fri Aug 21 17:01:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/unicode/name2ctype.h: split from enc/unicode.c and made a
+ perfect hash.
+
+Fri Aug 21 15:13:08 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/io.h, io.c (FMODE_SETENC_BY_BOM):
+ renamed from FMODE_STRIP_BOM.
+
+Thu Aug 20 01:24:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_fmode_modestr): change modestr syntax for BOM
+ to "BOM|UTF-*". [ruby-dev:39106]
+
+ * io.c (parse_mode_enc): ditto.
+
+Fri Aug 21 15:01:35 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): use rb_prep_terminal
+ only on Windows.
+
+Fri Aug 21 07:25:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/gemdirs.rb: split from lib/rdoc/ri/paths.rb to ge
+ rid of loading rubygems and searching all gems always.
+
+Fri Aug 21 07:14:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_PROGRAM_VERSION, RUBY_RELEASE_DATE): extracts
+ from version.h for cross-compiling.
+
+ * template/fake.rb.in (RUBY_VERSION, RUBY_DESCRIPTION): use above.
+
+Fri Aug 21 00:08:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths): Gem::Enable has been obsolete.
+
+Thu Aug 20 23:56:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_sysopen): moved sysopen_struct from rb_sysopen_internal.
+
+Thu Aug 20 23:39:51 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (reduce_nodes_gen): preserve NODE_FL_NEWLINE flag during
+ node reducing. [ruby-core:24463]
+
+Thu Aug 20 14:39:47 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_get): add rl_prep_terminal(1).
+ incited by jitte [ruby-list:43546]
+
+Thu Aug 20 12:09:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ivar2_hash_type): disabled for now.
+
+Thu Aug 20 08:39:50 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_thread_terminate_all): do not ignore interrupt when
+ reaping threads on termination. [ruby-dev:39107]
+
+Thu Aug 20 02:32:08 2009 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c (next_init): don't clear feedvalue.
+
+Thu Aug 20 01:28:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c: implement Enumerator#{next_values,peek_values,feed}
+ and StopIteration#result. [ruby-dev:39109]
+ (struct enumerator): replace no_next by stop_exc.
+ new field feedvalue.
+ (enumerator_mark): mark feedvalue and stop_exc.
+ (enumerator_init): initialize feedvalue and stop_exc.
+ (enumerator_init_copy): initialize feedvalue.
+ (next_ii): send yield arguments as an array. return feedvalue.
+ (next_i): generate StopIteration exception here. set result.
+ (next_init): initialize feedvalue.
+ (enumerator_next_values): new method Enumerator#next_values.
+ (ary2sv): new function.
+ (enumerator_peek_values): new method Enumerator#peek_values.
+ (enumerator_feed): new method Enumerator#feed.
+ (yielder_yield): return the yield value.
+ (generator_each): return the iterator value.
+ (stop_result): new method StopIteration#result.
+
+Thu Aug 20 01:06:48 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (DEFINE_STRUCT_DIRENT): use union to allocate sufficient
+ memory space for Solaris. a patch from Naohisa GOTO
+ <ngoto at gen-info.osaka-u.ac.jp> in [ruby-dev:39132].
+ [ruby-dev:39062]
+
+ * configure.in (SIZEOF_STRUCT_DIRENT_TOO_SMALL): Solaris dirent
+ check.
+
+Wed Aug 19 11:32:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/unicode.c (CodeRanges): initialized statically.
+
+Wed Aug 19 02:54:01 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_settracefunc.rb (test_return, test_return2): add two
+ tests for [ruby-dev:38701] and [ruby-core:24463].
+
+Wed Aug 19 01:08:34 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (NODE_RETURN): fire return event at explicit return.
+ [ruby-dev:38701]
+
+Tue Aug 18 21:00:26 2009 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c (enumerator_peek): new method Enumerator#peek.
+ (enumerator_next): don't rewind at end.
+ [ruby-dev:38932]
+
+Tue Aug 18 13:46:14 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * touch test/rdoc/empty.dat to run test_rdoc_parser.rb
+
+Tue Aug 18 11:37:24 2009 wanabe <s.wanabe@gmail.com>
+
+ * vm_insnhelper.c (vm_call_cfunc): ensure hook c-return.
+ [Bug #1588]
+
+ * test/ruby/test_settracefunc.rb (TestSetTraceFunc#test_raise):
+ follow above.
+
+Tue Aug 18 01:57:00 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): treat symbols specially so that iterating
+ over symbols should work like strings. [ruby-core:24780]
+
+ * range.c (range_each): ditto.
+
+Tue Aug 18 01:21:31 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_each): should honor to_str conversion.
+
+Mon Aug 17 23:45:40 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/delta.rb: removed require 'date'. added to_c.
+
+Mon Aug 17 14:35:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lex_get_str, lex_io_gets, rb_parser_compile_string):
+ must be ascii compatible.
+
+Mon Aug 17 10:37:41 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (add_code_range_to_buf0): added with checkdup argument.
+
+ * regparse.c (add_code_range_to_buf): use above.
+
+ * regparse.c (add_code_range0): added with checkdup argument.
+
+ * regparse.c (add_code_range): use above.
+
+ * regparse.c (i_apply_case_fold): don't warn if the duplicate is
+ caused by case folding.
+
+Mon Aug 17 08:31:56 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/delta.rb: merged from date4. [experimental]
+
+ * lib/date/delta/parser.*: ditto.
+
+ * lib/date.rb: followed the above changes.
+
+Mon Aug 17 08:19:03 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (strptime): removed \v; since \s includes \v.
+
+Mon Aug 17 08:14:26 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_rationalize) added. [experimental]
+
+ * rational.c ({nurat,nilclass,integer,float}_rationalize) ditto.
+
+Mon Aug 17 08:11:53 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb: use num#i.
+
+Mon Aug 17 07:59:00 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c (flo_pow,fix_pow): may return complex number.
+
+ * bignum.c (rb_big_pow): ditto.
+
+Mon Aug 17 07:16:10 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_imaginary): num#i to return imaginary counterpart
+ of the given numeric.
+
+ * complex.c (Init_Complex): undef #i for complex numbers.
+
+Mon Aug 17 00:17:33 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/complex.rb, lib/rational.rb: added warning messages.
+
+Sun Aug 16 23:58:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yylex): should dispatch scan-event even when follows
+ just after delayed-token. [ruby-dev:37855] [Bug #1071]
+
+Sun Aug 16 22:20:16 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: reverted.
+
+Sun Aug 16 21:31:21 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/date/format.rb: suppressed a warning.
+
+ * lib/irb/ruby-lex.rb: ditto.
+
+Sun Aug 16 15:25:26 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/csv.rb: Change magic comment to US-ASCII in order to
+ make literals as US-ASCII.
+
+Sun Aug 16 10:45:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (parse_char_class, parse_exp, parse_branch),
+ (parse_subexp): fixed memory leak. a patch from Ralf Junker
+ <ralfjunker AT gmx.de> at [ruby-core:24921].
+
+Sun Aug 16 10:38:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each, vm_backtrace_push),
+ vm_eval.c (print_backtrace), vm_dump.c (bugreport_backtrace):
+ rb_backtrace_iter_func now takes VALUE as file and method names.
+
+Sun Aug 16 03:06:59 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (opt_eq_func): fix optimization bug. This issue
+ was found out and debugged with Takuto Hayashi at Security and
+ Programming camp 2009.
+
+Sun Aug 16 01:10:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (add_ctype_to_cc_by_range): fix the first
+ character bigger than sb_out was dropped.
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_posix_bracket):
+ add tests for above.
+
+Sun Aug 16 00:30:33 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/oniguruma.h
+ (ONIGENC_CTYPE_SPECIAL_MASK): added.
+ (ONIGENC_CTYPE_D): ditto.
+ (ONIGENC_CTYPE_S): ditto.
+ (ONIGENC_CTYPE_W): ditto.
+
+ * regparse.c: \d, \s and \w are now non Unicode class.
+ [ruby-dev:39026]
+ (fetch_token_in_cc): use ONIGENC_CTYPE_[DSW] for \d/\s/\w.
+ (fetch_token): ditto.
+ (add_ctype_to_cc): add routines for ONIGENC_CTYPE_[DSW].
+ (parse_exp): ditto.
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_char_class):
+ add tests for above.
+
+Sat Aug 15 10:39:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (fname, string_dvar, sym, dsym, f_arglist): removed
+ duplications.
+
+Fri Aug 14 20:03:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_check_safe_str): deprecated.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_add_{file,path}):
+ replaced deprecated function.
+
+Fri Aug 14 17:59:12 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_preprocess_dregexp): change Exception class to
+ RegexpError.
+
+ * test/ruby/test_m17n.rb (test_regexp_usascii): follow above.
+
+ * test/ruby/test_m17n.rb (test_regexp_embed): ditto.
+
+Fri Aug 14 17:17:42 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/Makefile.in (MKDIRS): revert r24525.
+
+Fri Aug 14 16:28:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/lib/digest/hmac.rb (Digest::HMAC#initialize): faster
+ code.
+
+Fri Aug 14 14:31:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rubyhdrdir): fixed typo. [ruby-dev:39079]
+
+Fri Aug 14 00:29:22 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * doc/ChangeLog-1.8.0: add forgotten entry contributed by
+ TAKAHASHI Kaoru. [ruby-dev:39065]
+
+Fri Aug 14 00:19:49 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#method_missing): __FILE__ may contain
+ multi-byte characters. a patch from Kenta Murata in [ruby-dev:39066].
+
+Thu Aug 13 21:01:03 2009 wanabe <s.wanabe@gmail.com>
+
+ * vm.c (vm_exec): returning from lambda runs ensure section.
+ [Bug #1729]
+
+Thu Aug 13 18:40:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): set cross_compiling to yes
+ only when AC_COMPUTE_INT, and inverted the arguments.
+
+Thu Aug 13 18:22:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): use AC_COMPUTE_INT instead of
+ _AC_COMPUTE_INT_COMPILE with cross compiling, since its arguments
+ have been changed at autoconf 2.64.
+
+Thu Aug 13 16:31:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (opt_case_dispatch): suppressed a warning.
+
+ * vm_insnhelper.c (opt_case_dispatch_i): ditto.
+
+Thu Aug 13 16:20:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, Makefile.in (MAKEDIRS): used MKDIR_P instead of
+ as_mkdir_p. [ruby-dev:39063]
+
+Thu Aug 13 15:37:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regenc.c (onigenc_strlen_null, onigenc_str_bytelen_null): fixed
+ infinite loop for wide encodings. reported by Ralf Junker a
+ [ruby-core:24892]. [ruby-core:24904]
+
+Wed Aug 12 21:07:46 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: if ipv6 is enabled, the version of Windows
+ must be XP or later.
+ [ruby-core:24601]
+
+Wed Aug 12 15:59:29 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (yes-test-knownbug): use RUNRUBY instead of MINIRUBY.
+
+Wed Aug 12 15:52:04 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * class.c (rb_define_module_id_under): fix the name.
+
+ * class.c (rb_define_module_under): fix for previous changes.
+
+Wed Aug 12 15:32:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_define_class_id_under, rb_define_module_id_under):
+ new functions to define a nested class/module with non-ascii
+ name.
+
+ * struct.c (make_struct): use name with encoding.
+
+ * struct.c (inspect_struct): ditto. [ruby-core:24849]
+
+Wed Aug 12 Wed Aug 12 14:54:34 2009 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm.c, vm_insnhelper.c, vm_insnhelper.h: check
+ definition of (classes)#=== for case/when optimization.
+ Fix Bug #1376 [ruby-core:23190].
+
+ * string.c (Init_String), bignum.c (Init_Bignum),
+ numeric.c (Init_Numeric): define String#===, Symbol#===,
+ Bignum#===, Fixnum#===, Float#=== as same as (classes)#==.
+
+Wed Aug 12 14:14:42 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (readdir_internal): free old temporary filename.
+ [ruby-core:24820]
+
+Wed Aug 12 12:59:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_new_frozen): must not change encoding of frozen
+ shared string. [ruby-dev:39068]
+
+Wed Aug 12 11:51:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_broken_crypt): needs more checks.
+
+Wed Aug 12 07:41:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): If a string is empty and
+ other's encoding is US-ASCII, returns the empty string's encoding.
+ [ruby-list:46274]
+
+Wed Aug 12 07:38:12 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (is_data_encoding): fix condition.
+
+ * encoding.c (enc_capable): ditto.
+
+Tue Aug 11 23:12:31 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (complete_frags): Monday must be suitable for %W's
+ default day.
+
+Tue Aug 11 21:42:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (num_divmod): fixed rdoc. [ruby-core:24862]
+
+Mon Aug 10 21:45:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_path2class): no deprecation.
+
+Mon Aug 10 10:57:59 2009 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: reject unused longlife gc. longlife gc target is longlife
+ NODE by method table and vm inline cache. but, fixed it at
+ r24085, r24128. so I rejected longlife gc.
+
+ * debug.c: ditto.
+
+ * include/ruby/intern.h: ditto.
+
+ * include/ruby/ruby.h: ditto.
+
+ * iseq.c: ditto.
+
+ * node.h: ditto.
+
+ * vm_insnhelper.c: ditto.
+
+ * vm_insnhelper.h: ditto.
+
+Mon Aug 10 06:55:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (class2path, w_unique, w_extended, w_class, w_uclass):
+ deal with non-ascii class path. [ruby-core:24790]
+
+ * marshal.c (r_unique, path2class, path2module, obj_alloc_by_path),
+ (r_object0): ditto.
+
+ * variable.c (rb_path_to_class): new encoding-aware function to
+ get a class from its name.
+
+Sun Aug 9 21:14:03 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb (search_tclConfig): last change isn't enough.
+ fixed it.
+
+Sun Aug 9 16:36:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ruby.imp): excluded prelude.o to get rid of circular
+ dependency. [ruby-dev:39052]
+
+Sun Aug 9 14:49:24 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (rb_big_cmp, bigsub, big_real_len, bigmul1_normal,
+ bigmul1_balance, big_split): remove BDIGITS() inside of the loops.
+ same as r24444.
+
+Sat Aug 8 17:03:21 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_ascii_compatible_p): added. [ruby-core:24793]
+ (Init_Encoding): New API Encoding#ascii_compatible?.
+
+Sun Aug 9 07:25:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/eventids2.c (token_to_eventid): added
+ keyword_do_LAMBDA. [ruby-dev:39049]
+
+Sun Aug 9 02:07:41 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/compile_prelude.rb: fixes a regexp pattern for require.
+ It had matched 'require("foo"('.
+
+Sat Aug 8 11:42:44 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigzero_p): removing BDIGITS() inside of the
+ loop. inspired by Masahiro Kanai's blog entry
+ <http://d.hatena.ne.jp/CanI/20090807/1249657492>.
+
+Sat Aug 8 06:18:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_symbol r_symlink, r_symbol, r_object0): fix for
+ non-ascii symbols. loading such symbols can cause segfaults in
+ older versions. [ruby-core:24788]
+
+Fri Aug 7 03:25:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.c (error_print): removed an extra argument.
+
+Fri Aug 7 03:22:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_exc_raise, rb_exc_fatal): nil is used to reraise.
+
+Fri Aug 7 01:49:41 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/sha2.c: The ULL suffix is not supported by
+ pre-C99 compilers, so resurrect the ULL() macro to regain
+ portability. [ruby-dev:39032]
+
+Fri Aug 7 01:35:26 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/*/extconf.rb: inttypes.h and unistd.h need not be
+ checked here. [ruby-dev:39032]
+
+Fri Aug 7 01:04:17 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb (search_tclConfig): fix logic bug.
+
+Thu Aug 6 21:18:15 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/digest/sha2/lib/sha2.rb: should require sha2.so.
+
+Thu Aug 6 21:11:40 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/digest/sha2/sha2.c (*_Final): typos.
+
+Thu Aug 6 19:46:56 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/sha2.h (BYTE_ORDER): Define BYTE_ORDER as
+ necessary. [ruby-dev:39029]
+
+Thu Aug 6 16:36:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (valid_encoding_name_p): rejects too long encoding
+ names.
+
+ * encoding.c (encoding_data_type): typed data.
+
+ * encoding.c (enc_capable, rb_enc_get_index): Symbol is encoding
+ capable.
+
+ * encoding.c (rb_enc_associate_index): cannot set encoding on
+ special constants.
+
+Thu Aug 6 15:44:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_method_entry_eq): deals with optimized method
+ properly. [ruby-core:24789]
+
+Thu Aug 6 13:30:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/base.rb (TestMkmf): was turned into a class, because
+ MiniUnit doesn't complain even if a testcase has no tests.
+
+Thu Aug 6 13:00:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (check_sizeof): added optional compiler option
+ argument. [ruby-core:24785]
+
+ * lib/mkmf.rb (create_makefile): suppressed shadowing outer local
+ variable warnings.
+
+Thu Aug 6 12:05:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/testcase.rb (Test::Unit): removes silly TestCase
+ class.
+
+Thu Aug 6 01:37:20 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/sha2.[ch]: Update to 1.0 RELEASE which fixes an
+ off-by-one bug in SHA-256 hashing. Reduce differences from
+ the original while at it. [Bug #1799]
+
+Thu Aug 6 00:09:56 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb (IPAddr#hash): Take account of netmask; submitted
+ by Nobuhiro IMAI in [ruby-dev:39011]
+
+Wed Aug 5 19:19:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): assumes -x flag if no "ruby" is in
+ the shebang line. [ruby-dev:39015]
+
+Wed Aug 5 19:11:01 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (rb_stdio_set_default_encoding): declared.
+
+Wed Aug 5 18:46:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c (ruby_dummy_gdb_enums): made public. [ruby-dev:39001]
+
+Wed Aug 5 13:49:09 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): generate numerical sequence when
+ characters in both edges are all digits. [ruby-talk:343186]
+
+Wed Aug 5 12:54:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_exc_raise, rb_exc_fatal): require exception object.
+ [ruby-core:24767]
+
+Wed Aug 5 12:39:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_longjmp): reset raised flag before fatal error.
+
+Wed Aug 5 10:20:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_preprocess_dregexp): add options to arguments.
+
+ * re.c (rb_reg_new_ary): follow above.
+
+ * re.c (rb_reg_preprocess_dregexp): change error message when
+ /.../n has a non escaped non ASCII character in non ASCII-8BIT
+ script. [ruby-dev:38524]
+
+Wed Aug 5 03:28:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): expands paths before
+ requiring. [ruby-dev:39012]
+
+Wed Aug 5 01:38:27 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/pp.rb (guard_inspect_key): untrust internal hash to prevent
+ unexpected SecurityError.
+
+ * test/ruby/test_object.rb: add a test for [ruby-dev:38982].
+
+Wed Aug 5 00:33:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser/c.rb: fixed a small error in the documentation.
+ [ruby-core:24744]
+
+Tue Aug 4 22:10:34 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (has_redirection): need to execute shell if commandline
+ includes newline. cf. [ruby-core:24560]
+
+Tue Aug 4 15:06:58 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb (IPAddr#{eql?,hash}): Add IPAddr#{eql?,hash} so
+ that an IPAddr object can be used as a hash key, a set element,
+ etc.; suggested by Nick Brown <nick@nick-brown.com>.
+
+Tue Aug 4 13:07:10 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (ONIG_SYN_WARN_CC_DUP): defined.
+ * regparse.h (ScanEnv): add warnings_flag.
+ * regparse.c (CC_DUP_WARN): defined for warn duplicated characters in
+ character class of regexp. [ruby-core:24593]
+ (add_code_range_to_buf): add CC_DUP_WARN.
+ (next_state_val): add CC_DUP_WARN.
+ (OnigSyntaxRuby): add ONIG_SYN_WARN_CC_DUP.
+ (SET_ALL_MULTI_BYTE_RANGE): add env to arguments.
+ (add_code_range): ditto.
+ (add_code_range_to_buf): ditto.
+ (not_code_range_buf): ditto.
+ (or_code_range_buf): ditto.
+ (and_code_range1): ditto.
+ (and_code_range_buf): ditto.
+ (and_cclass): ditto.
+ (or_cclass): ditto.
+ (add_ctype_to_cc_by_range): ditto.
+ (add_ctype_to_cc): ditto.
+ (parse_char_class): ditto.
+
+Tue Aug 4 12:40:45 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/encdb.c (ENC_SET_BASE): fix typo.
+ patch by ujihisa [ruby-dev:39004]
+
+Tue Aug 4 11:57:39 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eql, range_eq): fixed equality to work for
+ subclasses of Range. a patch from Marc-Andre Lafortune.
+ [ruby-core:22190]
+
+ * test/ruby/test_range.rb: add assertions for above.
+
+Tue Aug 4 09:41:11 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/big5.c (EncLen_Big5): back to original Big5 table.
+ (EncLen_Big5_HKSCS): for Big5-HKSCS.
+ (trans): add the lead byte table for Big5-HKSCS.
+ (big5_mbc_enc_len): abstract function for Big5 series.
+ (big5_mbc_enc_len): for Big5.
+ (big5_hkscs_mbc_enc_len): for Big5-HKSCS.
+ (BIG5_HKSCS_P): added.
+ (BIG5_ISMB_FIRST): add routine for Big5-HKSCS.
+ (big5_hkscs): add for Big5-HKSCS.
+
+Tue Aug 4 09:33:54 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_set_base): Add for setting base encoding
+ with their names. this is internal function.
+
+ * template/encdb.h.tmpl: specify ENC_SET_BASE for second encodings in
+ each encoding files.
+
+ * enc/encdb.c (rb_enc_set_base): add a declaration.
+ (ENC_SET_BASE): ditto.
+
+Tue Aug 4 06:30:01 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_replace): should copy compare_by_identity status as well.
+ [ruby-core:24728]
+
+Tue Aug 4 05:43:03 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (recursive_push): need to set UNTRUST. [ruby-dev:38997]
+
+Tue Aug 4 03:56:51 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tcltklib.c: fix trouble on old-style C function
+ declarations [ruby-core:22871].
+
+ * ext/tk/lib/tcltklib.c: (ruby_1_8) fix warning about RUBY_RELEASE_DATE
+
+ * ext/tk/lib/tk/multi-tk.rb: kill zombie threads.
+
+ * ext/tk/lib/tk/fontchooser.rb: fix typo and support OptionObj.
+
+ * ext/tk/lib/tk/{canvas.rb,virtevent.rb,image.rb,timer.rb}:
+ don't create unnecessary array.
+
+Mon Aug 3 22:19:24 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (rb_mod_include): fix document. [ruby-core:24675]
+
+Mon Aug 3 18:25:08 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/svr.rb: obsolete TCPserver renamed. [ruby-core:24712]
+
+ * sample/tsvr.rb: ditto.
+
+ * sample/dualstack-httpd.rb: ditto.
+
+Mon Aug 3 18:12:54 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (recursive_push): untrust internal hash to prevent
+ unexpected SecurityError. a patch from Kazuhiro NISHIYAMA.
+ Fix: #1864 [ruby-dev:38982]
+
+Mon Aug 3 17:06:05 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/README: updated. a patch from Daniel Bovensiepen.
+ [ruby-core:24693]
+
+Mon Aug 3 16:28:09 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_connect): return value was broken when some
+ error occurred.
+ [ruby-core:24234]
+
+Mon Aug 3 15:56:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (permute0): use chars for boolean array.
+
+ * array.c (rb_ary_{permutation,combination}): disallow reentrance
+ with continuation since work-buffers cannot restore.
+
+ * array.c (rb_ary_{permutation,combination,product}): must not use
+ ary_discard on strings.
+
+Mon Aug 3 06:43:25 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_hash): normalize -0.0 to 0.0. [ruby-core:24577]
+
+Mon Aug 3 00:32:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rb_random_int): arguments have to be converted to
+ integer. [ruby-core:24679]
+
+Sun Aug 2 21:04:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (literal_concat0): tail can be nil. [ruby-dev:38980]
+
+Sun Aug 2 20:09:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_combination, rb_ary_product): prevent from GC.
+
+Sun Aug 2 16:53:19 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rand.rb: add tests for Random#float's rejection
+ against Infinity and NaN.
+
+Sun Aug 2 14:20:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rand_int): prevent from GC.
+
+Sat Aug 1 19:23:27 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_trans): change condition of singlebyte
+ optimization.
+
+Sat Aug 1 18:50:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_float): rejects Infinity and NaN.
+ [ruby-core:24651]
+
+Sat Aug 1 18:34:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (gem): suppressed warnings.
+ cf: [ruby-dev:38975]
+
+Sat Aug 1 05:18:36 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_trans): can't use singlebyte optimization when
+ the replacement is multibyte. [ruby-core:24612]
+
+Fri Jul 31 18:01:34 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/securerandom.rb (SecureRandom.random_bytes): return string should
+ be ASCII-8BIT. [ruby-core:24640]
+
+Fri Jul 31 16:28:33 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_stdio_set_default_encoding): added.
+
+ * ruby.c (process_options): call rb_stdio_set_default_encoding
+ after setting default internal and external.
+
+Fri Jul 31 15:06:33 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/compile_prelude.rb: too long string literal causes compile error
+ on some platforms.
+
+Fri Jul 31 13:15:27 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * transcode.c (str_encode_bang): C99ism.
+
+Fri Jul 31 11:48:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): used more appropriate construct.
+
+Fri Jul 31 10:54:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (literal_concat_gen): reduced unnecessary node at string
+ literal concatenation with empty head dstr. [ruby-dev:38968]
+
+Fri Jul 31 02:57:39 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (literal_concat_gen): NODE_DSTR was incorrectly handled as
+ NODE_STR. [ruby-dev:38968]
+
+ * bootstraptest/test_syntax.rb: add a test for above.
+
+Fri Jul 31 00:55:48 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_module.rb (test_ancestors, test_included_modules):
+ ignore rake mixins.
+
+Fri Jul 31 00:30:54 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_call_cfunc): let set_trace_func use called_id
+ instead of original_id.
+
+Thu Jul 30 23:04:32 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gem_prelude.rb (Gem.path): uses Gem.default_path as a default value
+ so that ruby finds gems in ~/.gem/.
+ (Gem.user_home): reduced version of lib/rubygems.rb's.
+ Gem.default_path needs it.
+
+Thu Jul 30 22:28:04 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/compile_prelude.rb: replaces "require" with in-place evaluation
+ so that copy & paste for lib/rubygems/default.rb is not necessary.
+
+ * gem_prelude.rb: removes copied codes from lib/rubygems/defaults.rb.
+ uses require instead.
+
+ * common.mk (prelude.c): adds dependency for lib/rubygems/defaults.rb.
+
+Thu Jul 30 21:56:18 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rand.rb: add tests for Random class.
+
+Thu Jul 30 21:48:56 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * random.c (init_genrand): ensure invariant of mt->next and mt->left.
+ mt->next should always equal mt->state + N + 1 - mt->left.
+ In fact, 'r = Random.new(0); r == r.dup' has returned false.
+
+Thu Jul 30 21:43:41 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * random.c (random_bytes): use NUM2LONG instead of FIX2LONG because
+ Random#bytes may receive bignum.
+
+Thu Jul 30 21:39:42 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_compile_each): fix stack consistency error.
+ [ruby-core:24611]
+
+ * bootstraptest/test_method.rb: add tests for above.
+
+Thu Jul 30 18:39:39 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: added check for frozen string for encode! (see Bug #1836)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+
+Thu Jul 30 16:45:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defineclass): preserve encoding of class/module
+ names. [ruby-core:24600]
+
+ * variable.c (rb_set_class_path_string): set class path with a
+ string value.
+
+Thu Jul 30 16:12:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (Init_var_tables): initializes __classid__ ID.
+
+ * variable.c: use st_data_t for st functions.
+
+Thu Jul 29 14:25:14 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI::unescape): support encoding option.
+
+ * lib/cgi/cookie.rb (CGI::Cookie.parse): fix for the encoded value.
+
+Wed Jul 29 08:08:07 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (regexp): regexp literal at the top of dstr is still needed
+ even if it is empty.
+
+Wed Jul 29 03:36:24 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/json/lib/json/common.rb (JSON#recurse_proc): remove
+ unnecessary private specifier. [ruby-dev:38929]
+
+Wed Jul 29 03:34:46 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, vm_insnhelper.c (vm_call_method): revive
+ VM_CALL_OPT_SEND_BIT and use it to recognize "send" method.
+
+Wed Jul 29 03:11:59 2009 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (rb_method_entry_arity): support not_implemented method.
+ (I have no idea to test it)
+
+Tue Jul 28 19:36:26 2009 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (rb_method_entry_arity): support optimized method (send).
+
+ * test/ruby/test_method.rb: add a test for above.
+
+Tue Jul 28 04:34:05 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/extconf.rb: bug fix and ignore invalid Tcl/Tk libraries.
+
+ * ext/tk/lib/config_list.in: bug fix and add a new option.
+
+ * ext/tk/lib/README.tcltklib: update for a new option.
+
+Mon Jul 27 19:03:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_*str_new_cstr, rb_str_buf_new_cstr),
+ (rb_str_buf_cat2, rb_str_cat2, rb_exc_new2): suppress warnings.
+
+Mon Jul 27 10:24:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser.rb (RDoc::Parser.binary?): fix for empty files.
+ [ruby-dev:38848]
+
+Mon Jul 27 06:51:41 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_eof): should call next_argv() before testing.
+ [ruby-core:24561]
+
+Sun Jul 26 19:17:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_eof): go to the next file if called after ARGF.close
+ or ARGF.skip. a patch from Mike Kasick at [ruby-core:24561].
+
+Sun Jul 26 18:30:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): __send__ can call protected
+ methods. [ruby-core:24500]
+
+Sun Jul 26 01:09:14 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * ext/bigdecimal.c: moved BASE_FIG definition before it is used
+ first time.
+
+ * include/ruby/defines.h [__SYMBIAN32__]: defined TRUE and FALSE to match
+ changes in bignum.c and array.c.
+
+Sat Jul 25 17:49:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_eof): should not have reached EOF before trying to
+ read. based on a patch by Heesob Park <phasis AT gmail.com> in
+ [ruby-core:24559]. [ruby-core:24557]
+
+Sat Jul 25 13:44:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (nucomp_hash), rational.c (nurat_hash): not to use
+ hash value of class so that equality against subclasses can
+ work. [ruby-dev:38850]
+
+Sat Jul 25 01:05:59 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/big5.c: Fix EncLen_BIG5 for Big5-HKSCS. see [ruby-core:24390]
+
+Fri Jul 24 19:19:19 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/big5.trans, big5-hkscs-tbl.rb:
+ new Chinese BIG5-HKSCS transcoding (with Tatsuya Mizuno)
+ see [ruby-core:24390]
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (with Tatsuya Mizuno)
+
+ * enc/big5.c: Added BIG5-HKSCS as a replicate encoding of BIG5
+ (short term solution, needs more work; with Tatsuya Mizuno)
+
+ * tool/transcode-tblgen.rb: made 'pat' directly accessible in
+ class StrSet
+
+Fri Jul 24 18:03:01 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (idle): leaves IDLE in a ensure clause. a patch
+ from Eric Hodel.
+
+ * test/net/imap/test_imap.rb (setup, teardown): turn on
+ Socket.do_not_reverse_lookup in tests.
+
+Fri Jul 24 00:13:41 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (resp_text_code): accepts response codes without
+ text. [ruby-core:24194]
+
+ * lib/net/imap.rb (idle, idle_done): new methods for the IMAP4 IDLE
+ command (RFC 2177). Thanks, Eric Hodel.
+
+ * lib/net/imap.rb (format_date, format_datetime): new method to
+ format IMAP-style date/datetime. Thanks, Eric Hodel.
+
+Thu Jul 23 17:31:02 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb: make irb be able to parse
+ string_dvar. [ruby-core: 24051]
+
+Thu Jul 23 17:26:51 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: should not create "config_list" in a $srcdir.
+
+Thu Jul 23 14:35:02 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_{open,wopen}): fixed typos. these conditions
+ mean to call runtime's open() if textmode.
+
+Thu Jul 23 08:53:24 2009 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/simple_markup/: Remove useless directory.
+ [Bug #1343]
+
+Thu Jul 23 08:52:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_{state,left}): internal/debug use.
+
+Wed Jul 22 19:29:26 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_module.rb (TestModule#test_alias): warning
+ message updated.
+
+Thu Jul 23 00:39:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (class.o): depends on vm_core.h.
+
+Thu Jul 23 00:10:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (init_leap_second_info): checks the result of gmtime to
+ suppress warnings.
+
+Wed Jul 22 22:23:24 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.h (struct rb_iseq_t): add a new field line_no. This field
+ represents line number from which the original code of the iseq
+ starts. [ruby-dev:38698]
+
+ * iseq.c, compile.c: ditto.
+
+ * parse.y: line number hack (for Proc#source_location) is no longer
+ needed.
+
+ * test/ruby/test_settracefunc.rb: line number of set_trace_func is now
+ compatible with 1.8's.
+
+Wed Jul 22 22:16:48 2009 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * method.h: Commas at end of enum list not allowed as of C89
+
+ * vm_method.c (rb_add_method): avoid C++ comment
+
+ * vm_insnhelper.c (vm_call_cfunc): ditto.
+
+Wed Jul 22 20:42:52 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: define IPPROTO_IPV6 macro for recent Windows
+ SDK.
+
+Wed Jul 22 19:32:10 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: define IPV6_* constants only when INET6
+ is defined.
+
+Wed Jul 22 19:23:04 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: ipv6 support is disabled by default on mswin.
+
+Wed Jul 22 17:41:08 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal): drop IPv6 addresses
+ if INET6 is not defined.
+
+Wed Jul 22 17:29:59 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: enable ipv6 support for win32.
+
+Wed Jul 22 16:38:39 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * hash.c (Hash::[]): rdoc. patch by Marc-Andre Lafortune.
+ #1385.
+
+Wed Jul 22 10:00:53 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (WSAMSG): get rid of compile error on VC9 and mingw.
+
+Wed Jul 22 06:35:56 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_enum.rb (TestEnumerable#each): recursive join now
+ raises ArgumentError.
+
+Wed Jul 22 02:33:57 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb.rb: forget svn commit.
+
+Wed Jul 22 01:20:54 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bootstraptest/test_io.rb: block write may block for long time.
+
+Wed Jul 22 00:34:39 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb.rb, lib/irb/init.rb, lib/irb/ext/save-history.rb: add
+ IRB::irb_at_exit. no use finalizer saving history. [ruby-dev-38563]
+
+Tue Jul 21 23:47:38 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * random.c (rand_init): array length of random seed was broken, which
+ causes memory error with srand(2**1000000-1).
+
+ * test/ruby/test_rand.c: test for above.
+
+Tue Jul 21 21:37:19 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/cmd/help.rb: fixed irb's "help" command. [ruby-core:22310].
+
+ * lib/tracer.rb: no show lines unknown line number. [ruby-core:22096],
+ no trace display c-call and c-return as default.
+
+Tue Jul 21 16:24:41 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (vtdate2rbtime): VT_DATE variant object
+ is converted to Time object now.
+
+ * test/win32ole/test_win32ole_variant.rb (test_s_new_with_nil,
+ test_conversion_time2date, test_conversion_str2date,
+ test_conversion_vt_date, test_set_value): ditto.
+
+ * ext/win32ole/win32ole.c (rbtime2vtdate): refactoring.
+
+Tue Jul 21 16:07:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tracer.rb: toplevel caller exists now. [ruby-core:24454]
+
+Tue Jul 21 13:36:20 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch] (recvmsg, sendmsg): new functions to support recvmsg/
+ sendmsg like UNIX. these functions are experimental and not tested
+ well. bug reports are welcome.
+
+Tue Jul 21 13:35:21 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (TEST_RUNNABLE): follow r24209.
+
+Tue Jul 21 12:45:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_enable, rb_gc_disable): should return Qtrue/Qfalse.
+
+Tue Jul 21 12:38:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_generic_ivar_memsize): should not remove generic
+ instance variable table.
+
+Mon Jul 20 20:35:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_f_open): add rdoc about specifying ext_enc as *-bom.
+
+Mon Jul 20 19:00:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (compile_dstr_fragments): reduced needless literal.
+
+ * parse.y (xstring, regexp, dsym, literal_concat, evstr2dstr):
+ literal at the top of dstr is no longer needed if it is empty,
+ since concatstrings and toregexp always create new strings.
+
+Mon Jul 20 12:51:39 2009 wanabe <s.wanabe@gmail.com>
+
+ * lib/matrix.rb (Matrix#rank): revert a part of r20859 to avoid
+ infinite loop. [Bug #1020]
+
+Mon Jul 20 11:12:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, Makefile.in (TEST_RUNNABLE): tests are no
+ runnable if cross-compiling.
+
+ * common.mk (btest*, test*): ditto.
+
+Mon Jul 20 10:55:18 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Addrinfo#family_addrinfo): fix a typo in
+ error message. patch by Nobuhiro IMAI. [ruby-dev:38828]
+
+Sun Jul 19 22:22:54 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (float_to_r): an improvement.
+
+Sun Jul 19 20:41:24 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (make_patterns): do not use \d.
+
+ * rational.c (make_patterns): ditto.
+
+Sun Jul 19 17:32:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_read): should taint the result. [ruby-dev:38826]
+
+Sun Jul 19 11:00:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (me_opts): fixed optimized method aliasing.
+ [ruby-dev:38824]
+
+Sun Jul 19 10:54:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.accept_loop): rescue
+ IO::WaitReadable instead of Errno::EWOULDBLOCK.
+ (Socket.udp_server_loop_on): ditto.
+
+Sat Jul 18 23:44:59 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (reg_enc_error): use rb_enc_get to get the encoding of
+ a Regexp object. REGEXP(re)->ptr->enc is the encoding of the
+ regexp engine for patterns and target strings.
+ [ruby-core:23208]
+
+Sat Jul 18 17:43:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_hash_cmp): got rid of overflow.
+
+Sat Jul 18 16:03:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/defines.h (TRUE, FALSE): for internal use.
+
+Sat Jul 18 11:39:49 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * random.c: workaround for VC++ 6.0.
+
+Sat Jul 18 09:16:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rb_random_{int32,real,bytes,int}): added functions for
+ extension libraries.
+
+Sat Jul 18 09:07:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (fill_random_seed): use cryptographic service on Windows.
+
+Sat Jul 18 07:56:00 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fail to create a widget object for an unknown
+ widget path.
+
+Sat Jul 18 07:06:31 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb,ext/tk/lib/tk/grid.rb: Bug fix on grid_slaves().
+ Extend usage pattern of grid_column()/grid_row().
+
+Sat Jul 18 06:30:35 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: include winsock headers in extern "C++" for
+ C++ extension libraries.
+
+ * include/ruby/missing.h (vsnprintf): workaround for VC++.
+ [ruby-core:23096]
+
+Sat Jul 18 00:23:47 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/readline/readline.c (Init_readline): rl_catch_signals does
+ not exist on some platform like Mac OS X 10.5.
+
+ * ext/readline/extconf.rb: checks existence of rl_catch_signals.
+
+Fri Jul 17 22:37:22 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (socket_s_ip_address_list): drop inactive
+ adapters.
+
+ * test/socket/test_{nonblock,addrinfo,socket}.rb: skip some tests on
+ Windows.
+ [ruby-core:23051]
+
+Fri Jul 17 22:29:21 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/readline/readline.c (Init_readline): use rl_catch_sigwinch only
+ when existing.
+
+ * ext/readline/extconf.rb: check existence of rl_catch_sigwinch, and
+ workaround for native Win32 readline port.
+
+Fri Jul 17 18:18:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * range.c (recursive_hash): extracted from range_hash. reject
+ recursive key.
+ (range_hash): use recursive_hash.
+
+Fri Jul 17 18:11:32 2009 Tanaka Akira <akr@fsij.org>
+
+ * struct.c (recursive_hash): extracted from rb_struct_hash. reject
+ recursive key.
+ (rb_struct_hash): use recursive_hash.
+
+Fri Jul 17 16:45:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * array.c (recursive_hash): reject recursive key.
+
+Fri Jul 17 15:20:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (DIGSPERINT): fix for LP64.
+
+ * random.c (fill_random_seed): /dev/urandom is not available on
+ DOSISH systems.
+
+ * random.c (random_equal): new method Random#==.
+
+Fri Jul 17 13:35:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (rsock_getfamily): return AF_UNSPEC if getsockname
+ is failed. [ruby-core:24383]
+
+Fri Jul 17 01:22:57 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (recursive_join): raise ArgumentError for joining
+ recursive array.
+
+ * array.c (ary_join_1): ditto.
+
+ * test/ruby/test_array.rb (TestArray#test_join2): test updated for
+ recursive join.
+
+Thu Jul 16 23:32:16 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb,ext/tk/config_list.in: ignore paths which includes
+ white space characters on Windows.[ruby-dev:38794]
+
+ * ext/tk/lib/tk.rb: works on Cygwin (limitation:: Tk.mainloop works on
+ the main thread only).
+
+Thu Jul 16 20:58:18 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole.rb (test_s_codepage_changed,
+ test_s_locale_set, test_s_locale_change): skip test if Japanese
+ locale is not installed. [ruby-core:23806]
+
+ * test/win32ole/test_win32ole_variant.rb (test_conversion_str2cy):
+ ditto.
+
+Thu Jul 16 19:02:28 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets_port0): servers
+ is nil if an error occurs before setting it.
+
+Thu Jul 16 18:42:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (fill_random_seed): suppress a warning.
+
+Thu Jul 16 18:30:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_aset, recursive_hash): rejects recursive hash.
+ [ruby-core:22921]
+
+Thu Jul 16 18:28:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * id.c (Init_id), vm.c (vm_exec): @#__ThrowState__ is no longer
+ used. [ruby-dev:38760]
+
+Thu Jul 16 17:41:28 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c (rb_alias): fix a case which try non-existing method alias.
+
+ * test/ruby/test_alias.rb: add a test.
+
+Thu Jul 16 16:00:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_reopen): discards read buffer. [ruby-core:24240]
+
+Thu Jul 16 15:52:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_new, rb_bigzero_p), range.c (rb_range_values):
+ added for random.c.
+
+ * random.c (rb_random_t): objectified. [EXPERIMENTAL]
+ [ruby-dev:30954]
+
+Thu Jul 16 14:08:44 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sample): RDoc update. a patch from Florian
+ Frank. [ruby-core:24347]
+
+Thu Jul 16 12:42:10 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): rl_free_line_state
+ before rl_cleanup_after_signal.
+
+ * ext/readline/readline.c (Init_readline): set rl_catch_signals and
+ rl_catch_sigwinch as 0. [ruby-core:21884]
+
+Thu Jul 16 08:59:22 2009 Koichi Sasada <ko1@atdot.net>
+
+ * node.h, vm_core.h, variable.c: rename global_entry to rb_global_entry.
+
+ * compile.c, insns.def, iseq.c, vm_insnhelper.h: ditto.
+
+Thu Jul 16 08:57:44 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c: separate clearing cache entry code.
+
+Thu Jul 16 08:56:32 2009 Koichi Sasada <ko1@atdot.net>
+
+ * dir.c (push_glob): re-fix GC problem.
+
+Thu Jul 16 08:55:27 2009 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: add method.h.
+
+Thu Jul 16 08:53:26 2009 Koichi Sasada <ko1@atdot.net>
+
+ * io.c (argf_free): free data body.
+
+Wed Jul 15 23:46:55 2009 Koichi Sasada <ko1@atdot.net>
+
+ * method.h, vm_core.h: add rb_method_entry_t. Remove nodes around
+ method management. This change affect some VM control stack structure.
+
+ * vm.c, vm_insnhelper.c, vm_method.c, vm_eval.c: ditto. and make some
+ refactoring.
+
+ * insns.def, class.c, eval.c, proc.c, vm_dump.c : ditto.
+
+ * vm_core.h, compile.c (iseq_specialized_instruction): remove
+ VM_CALL_SEND_BIT. use another optimization tech for Kernel#send.
+
+ * node.h: remove unused node types.
+
+ * ext/objspace/objspace.c (count_nodes): ditto.
+
+ * gc.c: add mark/free functions for method entry.
+
+ * include/ruby/intern.h: remove decl of
+ rb_define_notimplement_method_id(). nobody can use it
+ because noex is not opened.
+
+ * iseq.c (iseq_mark): fix to check ic_method is available.
+
+ * iseq.c (rb_iseq_disasm): fix to use rb_method_get_iseq().
+
+Wed Jul 15 23:45:11 2009 Koichi Sasada <ko1@atdot.net>
+
+ * dir.c (push_glob): fix GC problem.
+
+Wed Jul 15 17:33:52 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/purelib.rb: translates a fake path to rubygems in $" into
+ an alternative in $: so that Kernel.#require does not load
+ more rubygems.rb.
+ Resolves many failures in test/rubygems/*.
+
+ * gem_prelude.rb (Gem.load_full_rubygems_library): supports case
+ the rubygems to load is not in $(rubylibprefix).
+ (Gem.path_to_full_rubygems_library): new method for the changes in
+ purelib.rb and Gem.load_full_rubygems_library.
+ (Gem.fake_rubygems_as_loaded): new method.
+
+Wed Jul 15 16:29:35 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (LIBPATHFLAG): path is already quoted in mkmf.rb.
+
+Wed Jul 15 06:21:50 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: --with-{tcl,tk}-dir doesn't work.[ruby-dev:38782]
+
+Wed Jul 15 04:22:54 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_multipart.rb (CGIMultipartTest#_prepare):
+ set tempfile name with literal.
+
+Tue Jul 14 21:53:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/nonblock: moved from ext/io/wait/lib.
+
+Tue Jul 14 17:29:20 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_index_m): return nil if pos is out of string.
+ [ruby-core:23660]
+
+Tue Jul 14 16:13:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_initialize): check if the descriptor can be accessed
+ in the specified open mode. [ruby-dev:38571]
+
+Tue Jul 14 09:26:14 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: Long-term-callback support isn't stable yet.
+ So, disable the feature and waiting for improvement in the future.
+
+Tue Jul 14 01:28:17 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_m17n.rb (TestM17N#test_env): the encoding of
+ ENV is now locale encoding.
+
+Tue Jul 14 01:24:56 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (r_object0): should return real object.
+
+Tue Jul 14 01:06:31 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enumerator.c (yielder_yield_i): use rb_proc_new instead of
+ rb_iterate. [ruby-dev:38518]
+
+ * README.EXT: rb_iterate is obsolete since 1.9; use rb_block_call
+ instead.
+
+ * README.EXT.ja: ditto.
+
+Tue Jul 14 00:45:41 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_case.rb (TestCase#test_deoptimization):
+ test for [ruby-core:23190].
+
+Mon Jul 13 22:49:50 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/prime.rb (Prime#prime_division): now decomposes
+ negative integer into a decomposition with element [-1, 1].
+
+ * test/test_prime.rb: test for it.
+
+Mon Jul 13 22:28:03 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): handles leaked on win32 when an error occurs.
+
+Mon Jul 13 20:21:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): should not shadow outer variable not to
+ return Qnil always.
+
+Mon Jul 13 19:41:05 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (r_object0): copy instance variables to new regexp.
+
+Mon Jul 13 17:49:11 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, compile.c: declare struct iseq_inline_cache_entry.
+ Inline cache (IC) entries are no longer GC managed object.
+ IC entries are freed when ISeq is freed.
+
+ * iseq.c: fix mark, free, memsize functions for above change.
+
+ * insns.def: remove rb_gc_write_barrier().
+
+ * vm_insnhelper.c (vm_method_search): ditto.
+
+ * tool/instruction.rb, template/insns_info.inc.tmpl (insn_iclen):
+ added.
+
+Mon Jul 13 13:35:08 2009 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm_insnhelper.c (getinstancevariable):
+ fix to use inline cache.
+
+ * compile.c: fix to skip inline cache entry (IC). IC is added
+ automatically by compiler.
+
+ * insns.def, vm_insnhelper.h: fix IC positions.
+
+ * iseq.c: increment minor_version of ISeq because of above change.
+
+Mon Jul 13 08:01:00 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries.
+
+ * ext/tk/*: Support new features of Tcl/Tk8.6b1 and minor bug fixes.
+ ( [KNOWN BUG] Ruby/Tk on Ruby 1.9 will not work on Cygwin. )
+
+ * ext/tk/*: Unify sources between Ruby 1.8 & 1.9.
+ Improve default_widget_set handling.
+
+ * ext/tk/*: Multi-TkInterpreter (multi-tk.rb) works on Ruby 1.8 & 1.9.
+ ( [KNOWN BUG] On Ruby 1.8, join to a long term Thread on Tk
+ callbacks may freeze. On Ruby 1.9, cannot create a second
+ master interpreter (creating slaves are OK); supported master
+ interpreter is the default master interpreter only. )
+
+ * ext/tk/lib/tkextlib/*: Update supported versions of Tk extensions.
+ Tcllib 1.8/Tklib 0.4.1 ==> Tcllib 1.11.1/Tklib 0.5
+ BWidgets 1.7 ==> BWidgets 1.8
+ TkTable 2.9 ==> TkTable 2.10
+ TkTreeCtrl 2005-12-02 ==> TkTreeCtrl 2.2.9
+ Tile 0.8.0/8.5.1 ==> Tile 0.8.3/8.6b1
+ IncrTcl 2005-02-14 ==> IncrTcl 2008-12-15
+ TclX 2005-02-07 ==> TclX 2008-12-15
+ Trofs 0.4.3 ==> Trofs 0.4.4
+
+Mon Jul 13 01:18:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_timespec): rounds subsecond toward zero.
+
+Sun Jul 12 23:51:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (env_str_new): use rb_locale_str_new instead of
+ rb_tainted_str_new. rb_locale_str_new set string locale
+ encoding and tainted.
+
+Sun Jul 12 23:56:40 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: added some shortcuts.
+
+ * rational.c: ditto.
+
+Sun Jul 12 23:30:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_to_integer, rb_check_to_integer): return Bignum
+ as-is.
+
+Sun Jul 12 21:07:46 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: use k_exact_{zero,one}_p macro.
+
+ * rational.c: ditto.
+
+Sun Jul 12 20:42:58 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c (fix_divide): added an entry to rational.
+
+ * rational.c (rb_rational_reciprocal): added.
+
+ * complex.c (f_reciprocal): added.
+
+Sun Jul 12 02:24:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rand_init): use fixed buffer for small numbers.
+
+Sat Jul 11 14:43:34 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_io_m17n.rb (test_strip_bom): added.
+
+Sat Jul 11 07:11:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ array length is long.
+
+ * ext/readline/readline.c (readline_s_get_filename_quote_characters):
+ missing type of self.
+
+Sat Jul 11 02:37:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (limited_rand): expands to long before shift so that
+ the result does not overflow.
+
+Sat Jul 11 00:16:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rand_init): got rid of buffer overflow.
+
+Sat Jul 11 00:11:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_join_1): should recurse for element array.
+
+Fri Jul 10 23:10:11 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_strip_bom): ungetbyte third byte when UTF-16LE.
+
+Fri Jul 10 23:04:16 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_strip_bom): Fix condition of second byte of
+ UTF-16LE/UTF-32LE.
+
+Fri Jul 10 21:45:30 2009 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: checked rl_refresh_line in readline.
+
+ * ext/readline/readline.c (readline_s_refresh_line): add new
+ method, a patch from Koichiro Ohba. see [ruby-list:45922].
+
+Fri Jul 10 21:00:05 2009 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: checked rl_line_buffer and rl_point in
+ readline.
+
+ * ext/readline/readline.c (readline_s_get_line_buffer): new method.
+ (readline_s_get_point): new method.
+
+Fri Jul 10 16:30:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (recursive_join): use obj to tell if recursion occurs.
+ [ruby-core:24150]
+
+ * enum.c (enum_join): reverted r23966. [ruby-core:24196]
+
+Fri Jul 10 14:41:34 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (r_object0): set encoding only if the encoding
+ is not US-ASCII.
+
+Fri Jul 10 14:44:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (struct MT): ruby already assumes int has 32bit a
+ least, so no needs to use long.
+
+ * random.c (rand_init): copies data to be used really only.
+
+Fri Jul 10 11:41:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_obj_{untrust,untrusted,trust}): added
+ prototypes. [ruby-dev:38756]
+
+Fri Jul 10 10:25:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_superclass): checks for implicit
+ argument passing before method search. [ruby-core:24244]
+
+Fri Jul 10 07:22:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_data_type): typed.
+
+Thu Jul 9 23:28:48 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/io.h (FMODE_STRIP_BOM): new constant.
+
+ * io.c (io_encname_bom_p): judge whether the encoding name
+ is *-bom or not.
+ (parse_mode_enc): drop "-bom".
+ (rb_io_modestr_fmode): set FMODE_STRIP_BOM if needed.
+ (rb_io_extract_modeenc): ditto.
+ (io_strip_bom): strip bom if exists.
+ (io_set_encoding_by_bom): set encoding if there is bom.
+ Set encoding and strip bom when modeenc string is "r:foo-bom"
+ [ruby-dev:37236]
+
+Thu Jul 9 21:56:59 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (r_object0): replace \u by u when the regexp is
+ made by Ruby 1.8. [ruby-dev:36750]
+
+Wed Jul 8 23:13:54 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_div): omitted zero division check.
+
+Wed Jul 8 21:00:37 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/inspector.rb: forget svn add.
+
+Wed Jul 8 19:10:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_type): rejects typed data.
+
+Wed Jul 8 18:28:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c ({proc,binding,method}_data_type): typed.
+
+Wed Jul 8 16:47:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): returns new string instead of
+ shared string from FilePathStringValue(). [ruby-core:24199]
+
+Wed Jul 8 04:28:16 2009 Eric Hodel <drbrain@segment7.net>
+
+ * ext/.document: Update with extensions that appear to have
+ documentation. [ruby-core:24181]
+
+Wed Jul 8 04:28:16 2009 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h:
+ rename
+ "...TypeStruct" and "typed_struct" to
+ "TypedData..." and "typeddata", respectively.
+ rename
+ rb_data_type_t#name to
+ rb_data_type_t#wrap_struct_name.
+
+ * error.c, gc.c, iseq.c, vm.c: ditto.
+
+Tue Jul 7 20:23:27 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * bin/irb, lib/irb.rb lib/irb/*: irb-0.9.6, extend inspect-mode
+
+Tue Jul 7 17:00:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): deal with typed struct like
+ as obj_free().
+
+ * error.c (rb_typed_struct_is_kind_of): new function to see if the
+ given typed struct.
+
+ * error.c (rb_check_typed_struct): new function to check typed
+ struct.
+
+ * include/ruby/ruby.h (Check_TypedStruct, Data_Get_TypedStruct):
+ new macro to check typed struct.
+
+Tue Jul 7 13:36:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (DEFINE_ENUMFUNCS): included function signature.
+
+ * enum.c (rb_enum_join): non-nil separator must be convertible to
+ String. [ruby-core:24172]
+
+Tue Jul 7 12:47:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (rb_enum_join): should propagate taint to the return
+ value. the change was overridden by r23967. [ruby-core:24176]
+
+Tue Jul 7 11:56:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (GC_PROF_SET_MALLOC_INFO, GC_PROF_SET_HEAP_INFO): simplified.
+
+Tue Jul 7 10:12:37 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_ext_int_to_encs): Set external encoding if
+ ext==intern. [ruby-dev:38278]
+
+Mon Jul 6 09:31:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (make_curry_proc): should propagate lambda-ness.
+ [ruby-core:24127]
+
+ * proc.c (proc_hash): use long.
+
+Mon Jul 6 09:06:49 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_module.rb (TestModule#test_undef): adjust to
+ message change.
+
+ * test/ruby/test_object.rb (TestObject#test_redefine_method_which_may_case_serious_problem): ditto.
+
+ * test/ruby/test_object.rb (TestObject#test_remove_method): ditto.
+
+Mon Jul 6 09:04:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_join): deals with self recursive objects to get rid
+ of infinite recursion. [ruby-core:24150]
+
+Mon Jul 6 08:00:10 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_to_a): should propagate taint to the return value.
+ [ruby-core:24152]
+
+ * enum.c (enum_sort_by): ditto.
+
+Mon Jul 6 00:41:41 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: edited rdoc.
+
+Sun Jul 5 23:55:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): fix Time.local(2009,2,31) failure on 64bit
+ time_t environment.
+
+Sun Jul 5 22:43:13 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_polar): now arg is optional.
+
+Sun Jul 5 20:40:35 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (float_arg): returns PI for -0.0.
+
+Sun Jul 5 14:04:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_threadptr_exec_event_hooks): new function to
+ execute event hooks, with preserving errinfo. [ruby-core:24118]
+
+Sun Jul 5 08:14:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_add_method, remove_method, rb_undef): fixed
+ minor grammatical errors in warnings. a patch from Run Pain
+ Run Run at [ruby-core:24141].
+
+ * vm_method.c (Init_eval_method): registers notimplement_body as a
+ mark-object.
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): restores the firs
+ arg where is overwritten at funcall. [ruby-core:24139]
+
+Sat Jul 4 08:20:03 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (dbl2ival): should raise FloatDomainError on Infinity
+ and NaN as 1.8 does. [ruby-dev:38726]
+
+Fri Jul 3 22:48:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): less number of guesses for hh:mm:60.
+
+Fri Jul 3 21:30:14 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_equal_p): removed.
+
+Fri Jul 3 21:07:29 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: renamed equal_p to eqeq_p.
+
+ * complex.c: ditto.
+
+ * complex.c (nucomp_equal_p): added.
+ Complex(NaN).equal?(Complex(NaN)) should return true.
+
+Fri Jul 3 19:48:40 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: undef-ed some methods. [ruby-core:24110]
+
+ * complex.c (Numeric#arg): NaN for NaN. [ruby-core:24116]
+
+Fri Jul 3 18:35:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct rb_iseq_struct): fixed types.
+
+ * vm_core.h (ic_vmstat): VM state version is VALUE.
+
+Fri Jul 3 02:52:20 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): time guess strategy refined again.
+
+Fri Jul 3 00:36:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): time guess strategy refined.
+
+Thu Jul 2 11:16:25 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: added response to Net::IMAP::ResponseError.
+ a patch from Eric Hodel in [ruby-core:24111].
+
+Thu Jul 2 08:04:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (num_exact): rb_check_to_integer() can deal with both of
+ Fixnum and Bignum together.
+
+Thu Jul 2 07:53:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): fixed wrong variable.
+
+Thu Jul 2 05:37:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (num_exact): use to_r for T_FLOAT.
+
+Thu Jul 2 05:15:54 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (quo): return an integer if possible.
+
+Wed Jul 1 21:09:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_time_num_new): declared.
+
+ * time.c (nsec2timev): extracted from time_new_internal.
+ (time_new_internal): change argument to VALUE.
+ (rb_time_new): follow the argument change.
+ (rb_time_nano_new): ditto.
+ (rb_time_num_new): new function.
+
+ * ext/socket/ancdata.c (ancillary_timestamp): use rb_time_num_new to
+ represent struct bintime preciously.
+
+Wed Jul 1 08:46:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_encoding): encodings need extra depth.
+ [ruby-core:24100]
+
+Wed Jul 1 06:47:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_grep): gets rid of type-punning calls.
+
+Wed Jul 1 06:36:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_join): add Enumerable#join.
+
+ * array.c (ary_join_1): recursive join for Enumerators (and
+ objects with #to_a).
+
+ * array.c (rb_ary_join): performance tune.
+
+Tue Jun 30 18:19:07 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_hash): documentation fix. a patch from
+ Marc-Andre Lafortune. [ruby-core:23943]
+
+ * object.c (rb_mod_cmp): ditto.
+
+ * range.c (range_eq): ditto.
+
+ * string.c (rb_str_partition, rb_str_rpartition): ditto.
+
+ * struct.c (rb_struct_s_def): ditto.
+
+Tue Jun 30 17:44:24 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (reg_match_pos): adjust offset based on characters, not
+ bytes. [ruby-dev:38722]
+
+ * string.c (rb_str_offset): new function.
+
+ * string.c (rb_str_index_m): no call to rb_reg_adjust_startpos().
+
+Tue Jun 30 16:57:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb: renamed to get rid of collision against
+ instruction.rb on command line completion of shell.
+
+ * tool/mkconfig.rb (RbConfig.expand): get rid of exceptions on
+ frozen strings unless really changed.
+
+ * tool/file2lastrev.rb: get rid of global variables.
+
+ * tool/compile_prelude.rb: use US-ASCII name.
+
+Tue Jun 30 16:46:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def, tool/instruction.rb: fixed types.
+
+Tue Jun 30 11:08:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/oniguruma.h, include/ruby/re.h, re.c, regcomp.c,
+ regenc.c, regerror.c, regexec.c, regint.h, regparse.c: use long.
+
+Tue Jun 30 11:05:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_1): fixed index overrun.
+
+Tue Jun 30 08:42:34 2009 Eric Hodel <drbrain@segment7.net>
+
+ * tool/instruby.rb: summary is required in a .gemspec.
+
+Tue Jun 30 01:35:12 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/strip-rdocs.rb: supports QT style doxy-comments.
+
+Tue Jun 30 01:24:10 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (log2, cbrt): added. [experimental]
+
+Tue Jun 30 01:19:53 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_expt): do not use rb_fexpt.
+
+Mon Jun 29 22:50:10 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Doxyfile.in: removed. merged into template/Doxyfile.template
+
+ * configure.in: new checking for dot and doxygen.
+
+ * template/Doxyfile.template: merged with Doxyfile.in.
+ configured some options.
+
+ * common.mk (capi): use $(DOXYGEN) instead of "doxygen".
+ (Doxyfile): removed a duplicate entry in the dependency.
+
+Mon Jun 29 21:01:31 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_expt): checks exactness.
+
+Mon Jun 29 20:29:11 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (float_to_r): always returns rational.
+
+Mon Jun 29 18:55:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_1): fix for files with dots. [ruby-dev:38588]
+
+Mon Jun 29 17:14:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): should copy original encoding.
+ [ruby-dev:38612]
+
+Sun Jun 28 23:10:55 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gem_prelude.c (Gem.default_dir): follows the change on
+ lib/rubygems/default.rb in r23879
+
+Sun Jun 28 23:32:11 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_div): raises ZeroDivisionError immediately
+ when the given second argument is zero.
+
+ * rational.c (nurat_fdiv): never raise even if the given second
+ argument is zero.
+
+ * rational.c (rb_raise_zerodiv): changed the message (zero to 0).
+
+Sun Jun 28 22:25:07 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_expt): convert to a float when the given power
+ is a bignum.
+
+ * rational.c (nurat_expt): ditto.
+
+Sun Jun 28 21:16:48 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (sqrt): fixed an issue [ruby-list:45852].
+
+Sun Jun 28 19:48:29 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_expt): some improvements.
+
+ * rational.c (nurat_expt): ditto.
+
+Sun Jun 28 19:03:46 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/instruby.rb (:gem): registers the bundled version
+ of minitest as a gem as rdoc or rake.
+ c.f. [ruby-dev:38692].
+
+Sun Jun 28 19:02:07 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/rubygems.rb (ConfigMap[:rubylibprefix]): new entry.
+
+ * lib/rubygems/defaults.rb (Gem.default_dir): considers
+ "--with-rubylibprefix" configure option.
+
+Sun Jun 28 09:21:00 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: renamed some static functions.
+
+ * rational.c: ditto.
+
+Sat Jun 27 19:06:22 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_addsub): new
+
+ * complex.c (nucomp_{add,sub}): use nucomp_addsub.
+
+ * complex.c (nucomp_divide): changed the algorithm.
+
+ * complex.c (nucomp_abs): added shortcuts.
+
+Sat Jun 27 16:56:33 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_cmp): use rb_num_coerce_cmp.
+
+Sat Jun 27 16:45:10 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: revised rdoc.
+
+ * rational.c: ditto.
+
+ * numeric.c: ditto.
+
+Sat Jun 27 13:44:48 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS, lib/rss/maker/base.rb, test/rss/test_maker_2.0.rb: add
+ item.guid.permanent_link? and item.guid.permanent_link=.
+
+Sat Jun 27 13:41:00 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS: rss: 0.2.5 -> 0.2.7.
+
+ * lib/rss/rss.rb, test/rss/test_version.rb: 0.2.6 -> 0.2.7.
+
+Sat Jun 27 03:16:56 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_chr): use default_internal encoding as default
+ destination encoding if set. [ruby-core:23997]
+
+Sat Jun 27 03:09:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_rewind): need to rewind $. and ARGF.lineno.
+ [ruby-core:24046]
+
+ * io.c (struct argf): refactoring on $. and ARGF.lineno behavior.
+
+Fri Jun 26 21:48:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (pty_getpty): check dup failure.
+
+Fri Jun 26 17:33:46 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_rubyopt):
+ test suite add '.' to RUBYLIB. remove checks.
+
+ * test/ruby/test_require.rb (TestRequire#test_tainted_loadpath):
+ the default tempdir directory /tmp is world writable, so
+ SecurityError would be raised. check removed.
+
+Fri Jun 26 16:32:59 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (COMPILE_PRELUDE): need -I. before -rrbconfig.
+ [ruby-dev:38714]
+
+Thu Jun 25 18:41:51 2009 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.4.2 r5269.
+ * test/minitest/*.rb: ditto.
+
+Thu Jun 25 17:58:39 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_binmode_m): should call rb_io_ascii8bit_binmode() to
+ set its encoding to ASCII-8BIT. [ruby-core:24029]
+
+Thu Jun 25 13:04:58 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: '&' in sed s command's replacement is '\&' in ruby.
+ [ruby-dev:38713]
+
+Thu Jun 25 06:50:23 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_each_codepoint): uninitialized local variable enc.
+
+Thu Jun 25 06:25:49 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (first_i): wrong condition for no argument #first.
+ [ruby-core:24017]
+
+Wed Jun 24 20:19:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_s_now): new function. Time.now don't take arguments.
+
+Wed Jun 24 16:08:03 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/resource.rb: CONFIG["TEENY"] is not ruby's version but API's
+ one. So need to use RUBY_VERSION instead.
+
+Wed Jun 24 16:07:04 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb: rbconfig.rb exists at ".".
+
+Wed Jun 24 15:02:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_set_encode): show the erred file name instead of
+ the file that requires it. [ruby-core:24006]
+
+Wed Jun 24 11:41:20 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-style.el: It is too late to set c-file-style in
+ c-mode-hook (at least on Emacs 23). Call c-set-style instead.
+
+Tue Jun 23 21:28:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_get_path_check): check with given safe level.
+
+ * file.c (rb_find_file_ext_safe, rb_find_file_safe): ditto.
+
+ * safe.c (rb_insecure_operation): function to raise security
+ error.
+
+Tue Jun 23 20:32:43 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c: remove the definition of GC_DEBUG (debugging macro).
+
+Tue Jun 23 16:16:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_version): defaults revision to 0 when no
+ revision.h exists.
+
+Tue Jun 23 16:04:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext, rb_find_file): no needs to expand
+ paths with tilde twice.
+
+ * load.c (rb_f_load): load the given path directly if not found in
+ load_path.
+
+ * load.c (search_required): search file in specified safe level.
+
+ * load.c (rb_require_safe): path to load is already searched in
+ search_required().
+
+Tue Jun 23 12:43:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: remove PACKAGE_* macros generated by autotools.
+ [ruby-core:20938]
+
+Tue Jun 23 01:17:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (process_options): don't specify .so for encdb here.
+ "." is replaced by "_" in load_encoding.
+
+ * encoding.c (load_encoding): add .so here.
+
+Mon Jun 22 23:24:22 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_generic_ivar_memsize): typo fixed. a patch from
+ Kazuhiro NISHIYAMA. [ruby-dev:38700]
+
+ * ext/objspace/objspace.c (memsize_of): ditto.
+
+Mon Jun 22 21:21:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c: remove __CHECKER__ test.
+
+ * dir.c: ditto.
+
+ * dln.c: ditto.
+
+ * file.c: ditto.
+
+ * process.c: ditto.
+
+Mon Jun 22 17:15:38 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_each_codepoint): new method.
+ [ruby-core:23949]
+
+ * ext/stringio/stringio.c (strio_each_codepoint): ditto.
+
+Mon Jun 22 16:26:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): removed "." from load_path.
+
+Mon Jun 22 16:14:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_arguments, iseq_compile_each): internal
+ arrays must be hidden. [ruby-dev:38613]
+
+ * vm.c (Init_top_self): ditto.
+
+Mon Jun 22 14:41:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options), enc/prelude.rb: encdb and transdb are
+ extension libraries.
+
+ * ruby.c (process_options): set progname earlier.
+
+Mon Jun 22 13:50:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_fdatasync): new method IO#fdatasync.
+
+Sun Jun 21 22:33:05 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * load.c (Init_load): $: must be readonly. [ruby-dev:38690]
+
+ * ruby.c (ruby_prog_init): $-W must be readonly. [ruby-dev:38691]
+
+Sun Jun 21 10:47:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#copy_file): open with
+ default umask. [ruby-core:23952]
+
+Sun Jun 21 10:46:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (enc_arg): default internal encoding may not be set.
+ [ruby-core:23932]
+
+Sat Jun 20 21:11:43 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c (num_div): don't use num_floor which is actually
+ flo_floor.
+
+ * numeric.c (num_modulo): don't call '%'.
+
+ * numeric.c (num_divmod): use num_modulo.
+
+ * numeric.c: defined '%'.
+
+ * rational.c (nurat_idiv,nurat_mod,nurat_divmod,nurat_rem): removed.
+
+Sat Jun 20 20:28:44 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: edited rdoc.
+
+ * numeric.c: ditto.
+
+Sat Jun 20 08:56:47 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: edited rdoc.
+
+ * rational.c: ditto.
+
+ * numeric.c: ditto.
+
+Sat Jun 20 07:17:52 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/monitor.rb (MonitorMixin::extend_object): should use
+ #__send__ instead of #send to avoid possible name conflict.
+ [ruby-core:23907]
+
+Sat Jun 20 06:56:31 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: edited rdoc.
+
+ * rational.c: ditto.
+
+Sat Jun 20 05:08:59 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: edited rdoc.
+
+ * rational.c: ditto.
+
+Sat Jun 20 04:30:35 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_abs): removed.
+
+Sat Jun 20 03:34:16 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: added rdoc.
+
+Fri Jun 19 23:43:38 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: edited rdoc.
+
+Fri Jun 19 22:58:16 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: edited rdoc.
+
+Fri Jun 19 22:21:17 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: edited rdoc.
+
+Fri Jun 19 21:56:01 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_expt): delegates to complex when self is
+ negative. because Float#** does not produce complex.
+
+Fri Jun 19 21:40:58 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: edited rdoc.
+
+ * rational.c: ditto.
+
+Fri Jun 19 20:53:54 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_name_list): update RDoc. [ruby-core:23926]
+
+Fri Jun 19 20:44:45 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: constant COMPLEX_NAME has been removed.
+
+ * rational.c: constant RATIONAL_NAME has been removed.
+
+Fri Jun 19 20:39:46 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: added rdoc. a patch from Run Paint Run Run.
+
+Fri Jun 19 17:04:59 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_cmp): should always return nil for NaN.
+
+ * numeric.c (flo_cmp): handle infinite value specially using
+ infinite? method internally. [ruby-dev:38681]
+
+Fri Jun 19 09:28:45 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c (*_numerator,*_denominator): moved to rational.c.
+
+ * rational.c (*_numerator,*_denominator): moved from numeric.c.
+
+Fri Jun 19 08:14:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big_lshift, big_rshift): return Bignum always without
+ normalization. [ruby-dev:38679]
+
+Thu Jun 18 22:31:38 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_s_convert): calls to_r when the given argument
+ is non-integer.
+
+ * rational.c (nurat_s_convert): raises TypeError when the given
+ argument is nil.
+
+ * complex.c (nucomp_s_convert): ditto.
+
+Thu Jun 18 20:32:11 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c (num_numerator, num_denominator): use
+ to_r [ruby-core:23910].
+
+Thu Jun 18 16:21:05 2009 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.4.0 r5083.
+ * test/minitest/*.rb: ditto.
+
+Thu Jun 18 10:12:49 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): went infinity too
+ early. add BASE_FIG margin. [ruby-dev:38673]
+
+Thu Jun 18 01:35:51 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_cmp): Infinity is greater than any bignum
+ number. [ruby-dev:38672]
+
+ * bignum.c (rb_big_cmp): ditto.
+
+Thu Jun 18 01:29:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): drive letter is ascii only.
+ [ruby-dev:38612]
+
+Thu Jun 18 01:09:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ridir, RI_BASE_NAME): fixed for path expansion.
+ [ruby-core:23876]
+
+Wed Jun 17 23:46:08 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_coerce): accepts Complex when the imag is
+ exact zero.
+
+Wed Jun 17 21:25:54 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * bignum.c (rb_big_fdiv): checks whether the given second argument
+ can be converted to float properly.
+
+ * numeric.c (fix_fdiv): calls rb_big_fdiv when the given second
+ argument is a bignum.
+
+ * rational.c (nurat_fdiv): should calculate Float(x/y), not
+ Float(x)/Float(y).
+
+Wed Jun 17 16:57:40 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * load.c (rb_f_require): RDoc updated. a patch from Run Paint Run
+ Run in [ruby-core:23833].
+
+ * load.c (rb_mod_autoload): ditto. [ruby-core:23835]
+
+Wed Jun 17 14:37:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/test.rb (valid_syntax?): skips BOM. [ruby-dev:38666]
+
+ * test/ruby/test_system.rb (TestSystem#valid_syntax?): ditto.
+
+Wed Jun 17 13:54:18 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/strscan/strscan.c (Init_strscan): remove obsolete
+ matchedsize method, use matched_size instead. [ruby-dev:38591]
+
+Wed Jun 17 12:37:37 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (ruby_thread_stack_overflow): call rb_exc_raise() on
+ stack overflows in the signal handler, if sigaltstack is
+ available. On stack overflow (and with sigaltstack), the signal
+ handler is more likely to have room to create an exception
+ object. [ruby-core:23813]
+
+Wed Jun 17 08:10:38 2009 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace: added. objspace library extends some methods to
+ ObjectSpace module.
+
+Wed Jun 17 08:14:01 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_coerce): accepts Complex instances.
+
+ * rational.c (nurat_coerce): accepts Rational
+ instances. [ruby-core:23859]
+
+Wed Jun 17 07:36:22 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httputils.rb (parse_form_data): escape boundary of
+ multipart/form-data when embed in regexp.
+
+Wed Jun 17 07:24:26 2009 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_memsize): added.
+
+ * io.c (rb_io_memsize): added.
+
+ * regcomp.c (onig_memsize): added.
+
+ * string.c (rb_str_memsize): added.
+
+ * transcode.c (rb_transcoding_memsize, rb_econv_memsize): added.
+
+ * variable.c (rb_geneic_ivar_memsize): added.
+
+Wed Jun 17 07:04:33 2009 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_memsize): added. Use RTypedData instead of RData
+ for ISeq.
+
+ * vm.c (env_memsize, vm_memsize, thread_memsize): added. Use
+ RTypedData instead of RData for Env, VM, Thread.
+
+Wed Jun 17 06:48:28 2009 Koichi Sasada <ko1@atdot.net>
+
+ * st.c, include/ruby/st.h (st_memsize): added. This function returns
+ the memory usage of st_table.
+
+Wed Jun 17 06:19:06 2009 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: New structure RTypedData, added.
+ This structure includes more explicit type information for
+ T_DATA objects. If RData(obj)->dfree is immediate value `1' on
+ T_DATA object obj, obj is needed to be accessed with RTYPEDDATA(obj)
+ instead of RDATA(obj). A RTypedData structure points the structure
+ rb_typed_data_t. rb_typed_data_t includes information such as the
+ type name of this data, mark and free function what RData includes,
+ and memsize function show how data consuming the memory size.
+ Note that you do not need any change existing T_DATA objects.
+ If you use RDataType instead of RData on T_DATA object,
+ you can specify explicit type information.
+
+ * gc.c (rb_data_typed_object_alloc, rb_objspace_data_type_memsize,
+ rb_objspace_data_type_name): added.
+
+Wed Jun 17 06:14:23 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: fix indent.
+
+Wed Jun 17 06:05:03 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_objspace_each_objects): New C API, added.
+
+Wed Jun 17 00:31:30 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_argf.rb (TestArgf#test_skip): updated test
+ according to clarified behavior.
+
+Tue Jun 16 22:47:37 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (fptr_finalize): revert last change. [ruby-dev:38648]
+
+ * io.c (fptr_finalize): skip close(2) for fd 0,1,2.
+
+Tue Jun 16 20:07:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (transcode_restartable0): refix can't build with VC9.
+
+Tue Jun 16 16:09:59 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * parse.y (parser_read_escape, parser_tokadd_escape):
+ replace scan_oct as ruby_scan_oct.
+
+Tue Jun 16 06:40:31 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (fptr_finalize): should close stdin/stdout/stderr when
+ closed explicitly. [ruby-core:23853]
+
+ * io.c (argf_skip): should close only when current_file is available.
+
+Tue Jun 16 01:50:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_call0): refine exception message for hidden objects.
+
+Mon Jun 15 22:35:31 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * bignum.c (rb_big2db): (-Float::MAX.to_i*2).to_f should return
+ -HUGE_VAL (-Infinity).
+
+Mon Jun 15 18:48:41 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_each_line): should return self. [ruby-core:23852]
+
+ * io.c (argf_each_byte, argf_each_char): ditto.
+
+Mon Jun 15 17:48:42 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (os_obj_of): invoke garbage collection before iteration, to
+ avoid accessing half recycled object references. [ruby-dev:38613]
+
+Mon Jun 15 11:04:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rp, iseq): load dummy_gdb_enums on demand.
+ [ruby-dev:38606]
+
+Sun Jun 14 14:57:57 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, vm_eval.c: add Thread.backtrace.
+
+ * test/ruby/test_thread.rb: add a test.
+
+Sun Jun 14 13:58:32 2009 Koichi Sasada <ko1@atdot.net>
+
+ * transcode.c (transcode_restartable0): revert last commit because
+ this change cause SEGV at test-all.
+
+Sun Jun 14 10:49:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext, rb_find_file): canonicalize absolute
+ paths. [ruby-core:23845]
+
+ * file.c (rb_file_size): added rdoc. a patch from Run Paint Run
+ Run at [ruby-core:23839].
+
+Sun Jun 14 07:53:26 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_fdiv): use fdiv recursively.
+
+ * complex.c (nucomp_expt): reduced code.
+
+Sun Jun 14 03:37:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac.trans: remove wrong optimization.
+
+Sun Jun 14 01:53:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (transcode_restartable0): can't build with VC9.
+
+Sun Jun 14 01:23:41 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_to_f): use fdiv.
+
+Sat Jun 13 15:03:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_lock): show backtrace at circular require.
+
+ * load.c (rb_provide): assumes us-ascii only.
+
+ * load.c (rb_require_safe): FilePathValue() implies rb_str_new4().
+
+ * load.c (rb_mod_autoload): try conversion to path like as
+ require. [ruby-core:23834]
+
+Sat Jun 13 09:58:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_ivar): should not set internal encoding ivar as an
+ ordinary ivar. [ruby-dev:38596]
+
+Sat Jun 13 07:08:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_f_local_variables): now returns symbols. a patch from
+ Run Paint Run Run at [ruby-core:23828].
+
+Sat Jun 13 07:06:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_f_catch): updated rdoc about generalized argument,
+ and the case without arguments. [ruby-core:23827]
+
+Sat Jun 13 06:50:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/protocol.rb (Net::BufferedIO#rbuf_fill): TimeoutError is
+ obsolete, use Timeout::Error instead. [ruby-core:23821]
+
+Sat Jun 13 06:45:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_f_throw): fixed rdoc about exception.
+ [ruby-core:23824]
+
+Fri Jun 12 14:56:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): associate the input encoding when
+ copying an absolute path. [ruby-dev:38594]
+
+Fri Jun 12 02:41:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_replace_shared): shared target must be frozen.
+ [ruby-core:23727]
+
+Thu Jun 11 21:05:09 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (exp): omitted redundant function call.
+
+Thu Jun 11 17:49:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (gfCheckVal): never used.
+
+ * ext/bigdecimal/bigdecimal.c (VpInit): fixed format modifiers.
+
+ * ext/bigdecimal/bigdecimal.c (VPrint): constified.
+
+Thu Jun 11 15:27:17 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/prime.rb: documentation typo fixed. a patch from okkez.
+ [ruby-dev:38586]
+
+Wed Jun 10 18:15:17 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c (dir_s_getwd): directory path's encoding should be filesystem's
+ one.
+
+ * lib/tmpdir.rb: ditto (but not finished yet.)
+
+Wed Jun 10 06:28:15 2009 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Upgrade to RubyGems 1.3.4 r2223.
+
+Tue Jun 9 22:38:09 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (log10): raised exception when the given number is
+ a negative real.
+
+Tue Jun 9 15:13:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_s_glob): fixed rdoc. a patch from Joseph Pecoraro a
+ [ruby-core:23767].
+
+ * dir.c (sys_warning): get rid of type-punning function cast.
+
+ * dir.c (ruby_glob0): get rid of possible overflow.
+
+Tue Jun 9 10:58:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (RMALL): need for distclean-rdoc.
+
+Tue Jun 9 01:07:33 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: rename functions which require a parameter
+ "rb_thread_t *", the prefix to be rb_threadptr_ instead of
+ rb_thread_.
+
+ * thread.c (rb_thread_add_event_hook(), rb_thread_remove_event_hook):
+ change the parameter type from rb_thread_t * to VALUE.
+
+ * eval.c, eval_error.c, eval_intern.h, signal.c, vm_core.h, vm_eval.c:
+ ditto.
+
+ * include/ruby/intern.h: remove decl of rb_thread_signal_raise() and
+ rb_thread_signal_exit().
+
+Mon Jun 8 05:07:41 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): print fatal error
+ message to stderr instead of using rb_bug().
+
+ * KNOWNBUGS.rb, bootstraptest/test_fork.rb: move a fixed test.
+
+Sun Jun 7 22:44:20 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (log): avoided redundant expression.
+
+Sat Jun 6 02:49:05 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_reject_bang): always check frozen status.
+ [ruby-core:23715]
+
+ * hash.c (rb_hash_update): ditto.
+
+ * hash.c (rb_hash_reject_bang): call rb_hash_foreach() directly.
+
+ * hash.c (rb_hash_update_i): call st_insert() directly.
+
+ * hash.c (rb_hash_update_block_i): ditto.
+
+Fri Jun 5 07:12:32 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mkmf.rb (#link_command): should dup CONFTEST_C which is
+ frozen. ref [ruby-core:23675]. [ruby-core:23702]
+
+Thu Jun 4 02:25:51 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/base64.rb: typo fixed. a patch from okkez. [ruby-dev:38564]
+
+Wed Jun 3 09:03:23 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_first): should check negative length.
+
+Tue Jun 2 17:32:40 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (first_i): Enumerator#first should consume only what is
+ needed. a patch from Marc-Andre Lafortune. [ruby-core:23661]
+
+ * enum.c (enum_first): call to_int once for an argument. based on
+ a patch from Marc-Andre Lafortune.
+
+Tue Jun 2 13:27:21 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ripper/test_filter.rb: add tests. see [ruby-dev:37856]
+
+Tue Jun 2 07:44:43 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_gsub_bang): modify check at the beginning.
+ [ruby-core:23662] ref [ruby-core:23657]
+
+ * string.c (rb_str_rstrip_bang): ditto. [ruby-core:23657]
+
+ * string.c (rb_str_chop_bang): ditto.
+
+ * string.c (rb_str_chomp_bang): ditto.
+
+ * string.c (rb_str_reverse_bang): modify check added. [ruby-core:23671]
+
+Mon Jun 1 11:21:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_capture, fiber_store): reraise transferred error.
+
+ * cont.c (fiber_switch): transfers dead fiber error to the previous
+ or root fiber if the current fiber is dead. [ruby-core:23651]
+
+Mon Jun 1 10:41:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_exc_new2): optimization for literal.
+
+Mon Jun 1 07:20:02 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): returns Inf if
+ exp is bigger than DBL_MANT_DIG.
+
+Sun May 31 23:28:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): checks for duplication of source
+ files.
+
+Sun May 31 23:26:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (istrailinggarbage): fixed typo.
+
+Fri May 29 17:10:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (Init_Struct): made #to_s an alias to #inspect to
+ reduce the result of recursive struct. a patch from ujihisa a
+ [ruby-dev:38554].
+
+Fri May 29 17:08:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (Init_Hash): made #to_s an alias to #inspect to reduce
+ the result of recursive hash. a patch from ujihisa a
+ [ruby-core:23601]. [ruby-dev:38555]
+
+Fri May 29 09:30:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (collect_all): checks interrupts. [ruby-core:23594]
+
+Thu May 28 07:39:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (THREAD_MODEL): reject unknown value and checks
+ pthread.h only when pthread. [ruby-core:23577]
+
+Thu May 28 03:47:46 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/optparse/opttest.rb: typo fixed. [ruby-dev:38544]
+
+Thu May 28 03:43:10 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_strftime): update RDoc according to info from
+ Marc-Andre Lafortune in [ruby-core:23575]. [ruby-core:23564]
+
+Thu May 28 02:40:54 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/uri: don't set @parser if it is DEFAULT_PARSER for marshaling
+ URI objects between Ruby 1.8 and Ruby 1.9.
+ [ruby-dev:38377]
+
+Wed May 27 23:00:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (struct parser_params): lex_gets_ptr should be long.
+
+Wed May 27 18:00:15 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigand_int): new function to calculate bignum and
+ fixnum without allocating internal bignum.
+
+ * bignum.c (bigor_int): ditto.
+
+ * bignum.c (bigxor_int): ditto.
+
+ * bignum.c (bigand_int): even less object allocation.
+
+Wed May 27 14:29:55 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_encoding): more compact encoding information for
+ US-ASCII and UTF-8. [incompatible] [experimental]
+
+ * marshal.c (r_ivar): restore :E encoding information.
+
+Wed May 27 14:08:39 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (st_insert2): new function with processing new key,
+ e.g. copy.
+
+ * hash.c (rb_hash_aset): use st_insert2() to reduce redundant
+ st_lookup calls.
+
+Wed May 27 02:31:38 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_getc): the function for
+ rl_getc_function must be a byte function.
+ so use getbyte method. [ruby-dev:38535]
+
+Tue May 26 14:24:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c: fixed types.
+
+ * common.mk (bignum.o, numeric.o): depend on util.h.
+
+ * bignum.c, marshal.c: fixed types.
+
+ * numeric.c (infinite_value): use ruby_div0.
+
+ * include/ruby/util.h (ruby_div0): moved from marshal.c.
+
+Tue May 26 11:01:41 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * lib/mkmf.rb: use map! to replace strings in $objs array.
+
+Tue May 26 10:12:08 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bignew_1): inline memory allocation.
+
+ * bignum.c (bigtrunc): call rb_big_resize() only when needed.
+
+ * bignum.c (bigfixize): declare inline.
+
+Tue May 26 05:39:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (FilePathValue): prevent from GC.
+
+ * include/ruby/ruby.h (NUM2LONG): added GCC specific optimization.
+
+Tue May 26 03:41:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (rb_gmtime, rb_localtime): gmtime and localtime return
+ NULL on error. [ruby-core:23551]
+
+Tue May 26 03:38:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_each_char, rb_str_each_codepoint): string
+ length must be long.
+
+Mon May 25 13:27:32 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * lib/mkmf.rb: dont use gsub! method for frozen string.
+
+Mon May 25 11:47:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb, tool/instruby.rb: removed redundant code.
+
+Mon May 25 09:34:09 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_hash): avoid calling rb_enc_str_asciionly_p().
+
+ * string.c (rb_str_replace): avoid redundant calling rb_str_new4().
+
+ * string.c (str_replace): factor out replacement from
+ rb_str_replace() without type check nor discarding the
+ destination contents.
+
+Mon May 25 08:06:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_partition): should use the converted result. a
+ patch from Marc-Andre Lafortune at [ruby-core:23540].
+
+ * string.c (rb_str_rpartition): ditto.
+
+Mon May 25 06:25:38 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_hash.rb (TestHash::test_equal2): recursive hashes
+ are handled properly now. ref: [ruby-core:23402]
+
+ * test/ruby/test_m17n.rb (TestM17N#test_sprintf_p): test fixed
+
+Mon May 25 05:32:19 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::HTTP_STATUS): typo fixed. a patch from
+ Nobuhiro IMAI. [ruby-dev:38538]
+
+Sun May 24 22:48:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_exec_recursive_paired): new function for proper
+ handling of recursive arrays. [EXPERIMENTAL] [ruby-core:23402]
+
+ * array.c (rb_ary_equal, rb_ary_eql, rb_ary_cmp): use above.
+
+ * hash.c (hash_equal): ditto.
+
+Sun May 24 22:39:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (syserr_initialize): errno is int.
+
+Sun May 24 00:52:54 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in ($ridir): new configuration. [ruby-core:23520].
+ c.f. [ruby-core:23519].
+
+ (--with-ridir): new configure option.
+
+ * tool/instruby.rb (:doc, :rdoc): uses $ridir instead of
+ a fixed path.
+
+ * lib/rdoc/ri/paths.rb: follows $ridir.
+
+ * Makefile.in: removes RIDATADIR which is no longer used.
+
+ * bcc32/Makefile.sub: generates the 'ridir' entry for RbConfig.
+ removes RIDATADIR which is no longer used.
+
+ * win32/Makefile.sub: ditto.
+
+Sat May 23 23:52:33 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_char): return original string.
+ [ruby-core:23499]
+
+ * string.c (rb_str_each_codepoint): protect string from
+ modification.
+
+Sat May 23 21:48:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (rb_dlhandle_s_sym): added a method to access
+ using RTLD_NEXT. [ruby-dev:38152]
+
+ * ext/dl/handle.c (Init_dlhandle): added constants DEFAULT and
+ NEXT which correspond to RTLD_DEFAULT and RTLD_NEXT.
+
+Sat May 23 18:53:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/lib/dl/cparser.rb (DL::CParser#parse_struct_signature):
+ splitting with regexp source string is obsolete. a patch from
+ Minwoo Lee at [ruby-core:23494].
+
+ * ext/dl/cptr.c (rb_dlptr_cmp): return signed value, and restrict
+ to Fixnum. [ruby-dev:38533]
+
+Fri May 22 23:22:53 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * missing/vsnprintf.c (errno): [BUG] fixes a compilation
+ error on SIZEOF_LONG > SIZEOF_INT.
+ (BSD_vfprintf): ditto.
+
+Fri May 22 23:20:48 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec: follows runruby.rb's move at r23542.
+
+Fri May 22 21:38:55 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * NEWS: add Time#to_r.
+
+Fri May 22 20:29:01 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * config.guess: moved into tool/.
+
+ * config.sub: ditto.
+
+ * install-sh: ditto
+
+ * configure.in: follows the moves.
+
+ * LEGAL: ditto.
+
+Fri May 22 20:10:18 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * instruby.rb: moved into tool/.
+
+ * mkconfig.rb: ditto.
+
+ * rubytest.rb: ditto.
+
+ * runruby.rb: ditto.
+
+ * common.mk: follows the moves.
+
+ * configure.in: ditto.
+
+ * win32/Makefile.sub: ditto.
+
+Fri May 22 05:09:43 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_slice_bang): avoid call of rb_scan_args() unless
+ it's really necessary.
+
+Thu May 21 22:17:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl, id.h (enum ruby_method_ids): added some IDs.
+
+ * debug.c (dummy_gdb_enums): added enum ruby_method_ids.
+
+ * .gdbinit (rp): improved output of Symbol.
+
+Thu May 21 21:07:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD_vfprintf): support for 'z' modifier.
+
+Thu May 21 18:55:33 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gem_prelude.rb (Gem.default_dir and misc.): use rubylibprefix.
+ follows the change in r23368.
+
+Thu May 21 12:07:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_EVENT_HOOKS_HAVE_CALLBACK_DATA):
+ new macro for compatibility check.
+
+Thu May 21 01:43:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_long2int, RARRAY_LENINT): check long to
+ cast to int. [ruby-dev:38508]
+
+ * struct.c, vm_eval.c, vm_insnhelper.c: use RARRAY_LENINT.
+
+Wed May 20 21:00:27 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * rb_enc_get_index: allows an arbitrary RData as the argument but not
+ only what points a rb_encoding.
+
+Wed May 20 20:54:37 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/.gitignore: ignores rubyspec/ and mspec/.
+
+Wed May 20 19:41:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (rb_struct_new): get rid of too large alloca.
+
+ * struct.c (rb_struct_hash): use long.
+
+Wed May 20 18:58:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c, vm_insnhelper.c: argument number is restricted to
+ int, and fixed overflow.
+
+Wed May 20 18:34:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (zip_ary): should use long.
+
+ * enumerator.c (inspect_enumerator): should use long.
+
+Wed May 20 09:18:44 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_count): optimized for 1byte string count by
+ avoiding tr_setup_table().
+
+Wed May 20 06:25:29 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_fast_mbclen): faster mbclen for strings known
+ to be valid.
+
+ * string.c (enc_strlen): coderange specified version of
+ rb_enc_strlen(). use rb_enc_fast_mbclen() if coderange is 7bit
+ or valid.
+
+ * string.c (str_gsub): use rb_enc_fast_mbclen().
+
+ * string.c (rb_str_reverse, rb_str_split_m, rb_str_each_char,
+ scan_once): ditto.
+
+Wed May 20 06:20:05 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#unlink): close first for Windows. a
+ patch from Florian Frank. [ruby-core:23505]
+
+Wed May 20 00:13:38 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_codepoint_len): combine rb_enc_codepoint()
+ and rb_enc_codelen() in one function to reduce calls.
+
+ * encoding.c (rb_enc_codepoint): compatibility function.
+
+ * sprintf.c (rb_str_format): use rb_enc_codepoint_len().
+
+ * string.c (rb_str_inspect, rb_str_upcase_bang,
+ rb_str_downcase_bang, rb_str_capitalize_bang,
+ rb_str_swapcase_bang, trnext, tr_trans, rb_str_delete_bang,
+ rb_str_squeeze_bang, rb_str_count, rb_str_split_m,
+ rb_str_each_line, rb_str_each_codepoint, rb_str_lstrip_bang,
+ sym_printable): ditto.
+
+ * transcode.c (make_econv_exception): use rb_enc_mbc_to_codepoint()
+
+Wed May 20 00:05:52 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (rb_attr): should preserve encoding info.
+ [ruby-dev:38498]
+
+Tue May 19 22:54:35 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * time.c (time_minus): always return a Float. [ruby-dev:38446]
+
+ * time.c (time_to_r): new method. [ruby-dev:38461]
+
+Tue May 19 13:59:35 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (clone_method): add cast to remove warning from
+ rb_gc_write_barrier().
+
+Tue May 19 13:54:15 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (struct_ivar_get): new function to avoid repeated
+ rb_intern() calls.
+
+ * struct.c (rb_struct_iv_get): use struct_ivar_get()
+
+ * struct.c (num_members): ditto.
+
+ * struct.c (rb_struct_s_members): ditto.
+
+ * class.c (rb_singleton_class): cache symbol to reduce calls to
+ rb_intern().
+
+Tue May 19 07:52:05 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/test_time.rb: make tests timezone independent.
+ reported by zunda. [ruby-dev:38492]
+
+Mon May 18 21:40:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#sub): suppress a warning. [ruby-dev:38488]
+
+Sun May 17 23:23:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (SRC_EXT): should be flat.
+ http://twitter.com/_tad_/status/1825862632
+
+Sun May 17 23:05:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): VARIABLE_LIBPATH is always
+ defined, see its value instead.
+
+Sun May 17 18:59:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (nd_line): NODE_LMASK is not needed.
+
+ * node.h (NOEX_SAFE): made int.
+
+Sun May 17 14:23:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (rb_parse_in_eval): returns true in true eval, not in
+ main. [ruby-dev:38382]
+
+ * parse.y (program): inherits dvars in eval or main.
+
+Sun May 17 14:02:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_script): sets also VM toplevel program name.
+
+ * ruby.c (process_options): no longer needs additional frame.
+
+ * vm.c (rb_vm_get_sourceline): should not access out of bound.
+
+Sun May 17 09:47:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (cmdline_options_init): initialize encodings.
+
+ * ruby.c (add_modules, require_libraries, process_sflag):
+
+ * ruby.c (process_sflag): not process twice.
+
+ * ruby.c (moreswitches): get rid of possible overflow.
+
+Sun May 17 09:31:05 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (foletypelib_name): should return
+ encoded name corresponding to WIN32OLE.codepage.
+
+Sun May 17 09:02:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): support for cygwin 1.7. see
+ [ruby-core:23241].
+ gets rid of possible buffer overflow with realpath().
+
+ * ruby.c (set_arg0): get rids of overrun.
+
+Sat May 16 18:38:32 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb: add nil check.
+
+Sat May 16 18:36:01 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_maker_atom_feed.rb: suppress warnings.
+
+Sat May 16 18:33:15 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS: add RSS::Maker.supported?(version).
+
+Sat May 16 18:26:42 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb, test/test_parser_1.0.rb: fix foaf:Image
+ element causes parse error even if ignore_unknown_element mode.
+
+Sat May 16 18:14:19 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker.rb, lib/rss/maker/0.9.rb,
+ test/test_maker_*.rb: add RSS::Maker.supported?
+
+Sat May 16 18:12:39 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/content/*, lib/rss/dublincore/*: fix circular require.
+ * test/test_maker_atom_feed.rb,
+ test/test_maker_atom_entry.rb: suppress warnings.
+
+Sat May 16 18:07:17 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/feed.rb, test/test_maker_atom_feed.rb:
+ remove needless codes.
+
+Sat May 16 18:05:07 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/entry.rb: fix a typo.
+
+Sat May 16 18:02:57 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/feed.rb, test/test_maker_atom_entry.rb,
+ test/test_maker_atom_feed.rb: fix duplicated dc:date.
+ Reported by Kazuhiro NISHIYAMA. Thanks!!! [ruby-list:46014]
+
+Sat May 16 18:02:16 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb, lib/rss/maker/1.0.rb, lib/rss/maker/feed.rb,
+ test/rss/test_maker_1.0.rb, test/rss/test_maker_atom_feed.rb:
+ RSS 1.0 and Atom feed maker treat maker.channel.language as
+ maker.channel.dc_language.
+
+Sat May 16 17:57:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/lib/dl/callback.rb (DL#remove_callback_internal): ignore
+ unbound function. [ruby-dev:38474]
+
+Sat May 16 17:51:11 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/rss_recent.rb, sample/rss/list_description.rb: use
+ UTF-8.
+
+Sat May 16 17:47:55 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, test/rss/test_version.rb (RSS::VERSION):
+ 0.2.5 -> 0.2.6.
+
+Sat May 16 17:26:04 2009 Narihiro Nakamura <authorNari@gmail.com>
+
+ * iseq.c (rb_iseq_clone): use longlife object and insert write barrier.
+
+ * vm_insnhelper.c (vm_cref_push): ditto.
+
+ * vm_insnhelper.h (COPY_CREF): insert write barrier.
+
+Sat May 16 13:49:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_autoload_load): gets rid of false warning.
+ [ruby-core:23466]
+
+Sat May 16 10:59:54 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/drb/dhasenc.rb: add magic comment for encoding.
+
+ * sample/mine.rb: ditto.
+
+ * ext/tk/sample/tcltklib/sample1.rb: ditto.
+
+Sat May 16 09:49:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (magic_comment_encoding): ignores unused emacs-style
+ encoding comment, as like Vim styles. [ruby-core:23470]
+
+Sat May 16 09:30:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * defs/keywords (reserved_word): made inline function static.
+ [ruby-core:23210]
+
+ * parse.y (rb_reserved_word): ordinary function for ripper.
+
+Sat May 16 09:19:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (magic_comment_encoding): use rb_compile_warning() to
+ show the currently parsing file name. [ruby-core:23469]
+
+Sat May 16 09:03:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_version): now version.h includes
+ include/ruby/version.h, so need to tell to cpp to see
+ $(srcdir)/include. [ruby-core:23468]
+
+Fri May 15 17:35:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shift, rb_ary_shift_m): clears unused elements.
+ [ruby-dev:38448]
+
+Fri May 15 15:15:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_autoload_load): checks if iv_tbl is valid.
+ [ruby-dev:38456]
+
+Fri May 15 11:17:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak (-version-): now version.h includes
+ include/ruby/version.h, so need to tell to cpp to check
+ $(srcdir)/include.
+ reported by KIMURA Koichi at http://www.kt.rim.or.jp/%7ekbk/zakkicho/09/zakkicho0905b.html#D20090514-6
+
+Thu May 14 16:13:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getpwuid): use rb_uid_t. [ruby-dev:38443]
+
+ * ext/stringio/stringio.c (strio_ungetbyte): encoding should no
+ be effective.
+
+Thu May 14 10:17:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/test.rb (valid_syntax?): defaults to us-ascii.
+
+Wed May 13 22:34:31 2009 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: add longlife garbage collection. [ruby-dev:38423]
+ (NORMAL_HEAPS_USED): new macro.
+ (LONGLIFE_ALLOCATE_HEAPS_MIN): ditto.
+ (add_longlife_heaps_slot): new function.
+ (rb_newobj_from_longlife_heap): ditto.
+ (rb_newobj_longlife): ditto.
+ (rb_node_newnode_longlife): ditto.
+ (rb_gc_write_barrier): ditto.
+ (remembered_set_recycle): ditto.
+ (rb_gc_mark_remembered_set): ditto.
+ (clear_mark_longlife_heaps): ditto.
+ (gc_sweep_for_longlife): ditto.
+ (assign_heap_slot): new argument to longlife heaps slot.
+ (add_freelist): ditto.
+ (gc_sweep): avoid longlife heap slot. set longlife_collection
+ flag at add heap.
+ (rb_gc_force_recycle): avoid mark object and remembered_set
+ object.
+ (garbage_collect): add longlife collection.
+ (rb_gc_start): invoke longlife collection.
+ (gc_profile_record_get): for longlife collection profile.
+ (gc_profile_result): ditto.
+
+ * include/ruby/intern.h (rb_gc_write_barrier): declared.
+
+ * include/ruby/ruby.h (FL_REMEMBERED_SET): renamed from FL_RESERVED.
+
+ * debug.c (FL_REMEMBERED_SET): ditto.
+
+ * insns.def (setinlinecache): insert write barrier.
+
+ * vm_insnhelper.c (vm_method_search): ditto.
+
+ * set_relation (set_relation): use longlife object.
+
+ * vm.c (vm_define_method): ditto.
+
+ * vm_core.h (NEW_INLINE_CACHE_ENTRY): ditto.
+
+ * vm_method.c (rb_add_method): ditto.
+
+ * class.c (rb_add_method): ditto.
+
+ * node.h (NEW_NODE_LONGLIFE): new macro.
+ (rb_node_newnode_longlife): declared.
+
+Wed May 13 15:23:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/version.h: extracted the extensions interface and
+ the never-changeable info.
+
+Wed May 13 03:20:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_init_1): unused variable removed.
+
+Tue May 12 21:03:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c: support fixed UTC offset. [ruby-dev:38326]
+ (leap_year_v_p): new macro.
+ (TIME_FIXOFF_P): new macro.
+ (TIME_SET_FIXOFF): new macro.
+ (time_init_0): renamed from time_init.
+ (time_set_utc_offset): new function.
+ (vtm_add_offset): new function.
+ (utc_offset_arg): new function.
+ (time_init_1): new function.
+ (time_init): call time_init_0 or time_init_1 according argc.
+ (validate_utc_offset): new function.
+ (time_localtime_m): new function.
+ (time_fixoff): new function.
+ (time_getlocaltime): take optional UTC offset argument.
+ (time_get_tm): support fixed UTC offset time.
+ (Init_Time): make Time#{initialize,localtime,getlocal} varargs.
+
+ * strftime.c (rb_strftime): vtm->zone can be NULL now.
+
+Tue May 12 18:23:40 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * yarvtest: removed because it's outdated.
+
+Mon May 11 21:46:20 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: add semicolons to some grammar rules not terminated
+ with them. a patch from Dave B in [ruby-core:23422].
+
+Mon May 11 20:08:33 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (Init_IO): add constant File::NOATIME. [ruby-core:23194]
+
+Mon May 11 13:08:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb (rubylibdir): use rubylibprefix. [ruby-dev:38426]
+
+Mon May 11 08:37:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_coerce): support
+ coercing into Rational. [ruby-core:23415]
+
+Mon May 11 04:39:45 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP#check_auth_args): should not change
+ number of methods for the sake of compatibility.
+
+Sun May 10 11:36:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_instance_p): new function to check if
+ the argument is an instance of DL::CFunc.
+
+ * ext/dl/cptr.c (rb_dlptr_initialize, rb_dlptr_s_malloc): checks
+ if DL::CFunc. [ruby-dev:38403].
+
+ * ext/dl/lib/dl/cparser.rb (DL::CParser#parse_signature): strips
+ spaces. based on a patch from Takashi Tamura in [ruby-dev:38398].
+
+ * ext/dl/lib/dl/value.rb (DL::ValueUtil#wrap_arg): block must be
+ given if arg is not bound. [ruby-dev:38404]
+
+ * ext/dl/cfunc.c (rb_dlcfunc_instance_p): new function to check if
+ the argument is an instance of DL::CFunc.
+
+Sat May 9 19:57:00 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_float.rb (TestFloat#test_sleep_with_Float): add a
+ test. see [ruby-core:23282]
+
+Sat May 9 19:23:46 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: use subsec instead of nsec.
+
+Sat May 9 12:19:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c: 3rd argument of rb_hash_foreach() is VALUE.
+
+ * hash.c (rb_any_hash, recursive_hash): use VALUE for hash.
+
+Sat May 9 11:14:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_f_catch): gets rid of issue with gcc 4.4. a patch
+ from Alexey Froloff in [ruby-core:23398]. [ruby-core:22924]
+
+Fri May 8 19:38:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_link0): removes waste dSYM directories left
+ when debug and universal-binary are enabled.
+
+ * lib/mkmf.rb (check_sizeof): fixed wrong recurring result for
+ intrinsic types.
+
+Fri May 8 10:14:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in, win32/Makefile.sub (RUBY_BASE_NAME):
+ program base name. [ruby-dev:38241]
+
+ * configure.in (--with-soname): base name of shared library.
+ [ruby-dev:38290]
+
+Fri May 8 10:07:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_flatten_bang): clears temporary array.
+
+Fri May 8 02:30:14 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (SortedSet#add): Do not require each newly added
+ element to be Comparable but to respond to <=>. [ruby-dev:38371]
+
+Thu May 7 21:42:51 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rubyoptions.rb (test_indentation_check): add a test
+ for indentation check. [ruby-dev:38382]
+
+Thu May 7 16:40:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_flatten_bang): returns nil if nothing changed.
+ a patch from Marc-Andre Lafortune in [ruby-core:23382].
+
+Thu May 7 14:26:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sample): negative sample number is invalid.
+ [ruby-core:23374]
+
+Thu May 7 14:16:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c, include/ruby/encoding.h: fixed types.
+
+ * include/ruby/encoding.h (rb_enc_nth): long is used for index.
+
+Thu May 7 14:01:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (r_le): fixed types.
+
+ * range.c (range_eql): fixed rdoc.
+
+Thu May 7 13:10:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): should be rb_pid_t.
+
+Wed May 6 16:50:20 2009 Tanaka Akira <akr@fsij.org>
+
+ * math.c (math_gamma): use a table for positive small integers.
+
+Wed May 6 09:27:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.ja: code for THINK_C does not exist already. [Bug #1435]
+
+Wed May 6 05:33:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CFLAGS, CXXFLAGS): strips extra spaces.
+
+Tue May 5 11:29:07 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/ifchange: Fix: arguments which begin with minus sign may
+ parsed as options. Because of older systems, don't use --
+ but use parentheses.
+
+Tue May 5 10:42:28 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Update to JSON 1.1.4.
+
+Tue May 5 07:22:37 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c: NOMAP is now multibyte direct map.
+
+ * transcode.c: remove ASIS.
+
+ * transcode_data.h: ditto.
+
+ * tool/transcode-tb (ActionMap#generate_info): remove :asis.
+
+ * tool/transcode-tb (ActionMap#generate_info): add :nomap0.
+
+ * enc/trans/utf8_mac.trans: replace :asis by :nomap0.
+
+Sat May 2 22:53:02 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (SortedSet): Fix document. [Bug #1429]
+
+Sat May 2 10:34:29 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac-tbl.rb: don't use Unicode escape.
+
+ * enc/trans/utf8_mac.trans: follow above.
+
+Sat May 2 09:19:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (Init_Array): made #to_s an alias to #inspect to reduce
+ the result of recursive array. a patch from ujihisa at
+ [ruby-dev:38362]
+
+Fri May 1 16:50:05 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#merge): Only directly use the passed objects
+ @hash instance variable when self and the passed object are
+ instances of the same class. [Bug #118]
+
+Fri May 1 16:44:11 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (SortedSet#add): Do not let an incomparable object
+ in. [Bug #118]
+
+Fri May 1 13:18:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (_longjmp): never return. see [ruby-core:23241]
+
+Fri May 1 01:31:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/extmk.rb: use RbConfig instead of Config.
+
+ * instruby.rb: ditto.
+
+ * lib/rubygems.rb: ditto.
+
+ * test/rubygems/test_config.rb: ditto.
+
+Thu Apr 30 21:23:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * runruby.rb: use RbConfig::CONFIG instead of Config::CONFIG.
+
+ * spec/default.mspec: ditto.
+
+ * yarvtest/yarvtest.rb: ditto.
+
+ * instruby.rb: ditto.
+
+ * benchmark/report.rb: ditto.
+
+ * benchmark/runc.rb: ditto.
+
+ * tool/eval.rb: ditto.
+
+ * test/rubygems/test_gem.rb: ditto.
+
+ * test/rubygems/test_config.rb: ditto.
+
+ * test/rubygems/test_gem_platform.rb: ditto.
+
+Thu Apr 30 18:18:13 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/http.rb: documentation typo fixed. [ruby-core:23335]
+
+Thu Apr 30 15:27:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/utf8_mac.trans: get rid of a 1.9 feature for cross
+ compile.
+
+Thu Apr 30 11:35:30 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding): Change filesystem_encoding of
+ Mac OS X to UTF-8.
+
+Wed Apr 29 21:23:40 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/iso_2022_jp.h: add CP50221.
+
+ * enc/trans/iso2022.trans: add converter for CP50221.
+
+Wed Apr 29 15:22:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_join): recursive array has no meaning as path
+ name. [ruby-core:23329]
+
+Tue Apr 28 19:09:45 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/test_timeout.rb (TestTimeout#test_timeout): add a test.
+
+Tue Apr 28 07:13:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pp.rb (Struct#pretty_print): coerce to a string since
+ anonymous class has name no longer. [ruby-dev:38349]
+
+Mon Apr 27 16:47:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_version): uses sed instead of grep if the
+ result is need, to get rid of GREP_OPTIONS. [ruby-dev:38336]
+
+Mon Apr 27 01:25:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_getc): use rl_getc_function if
+ possible, to get rid of hang up at EOF without a newline.
+
+Sun Apr 26 23:19:32 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac.trans: Add converter for UTF8-MAC.
+
+ * enc/trans/utf8_mac-tbl.rb: ditto.
+
+ * test/ruby/test_econv.rb: tests for above.
+
+Sun Apr 26 22:17:02 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tb (ActionMap#each_firstbyte):
+ if :asis collides other mappings, use another.
+
+ * tool/transcode-tb (ActionMap#generate_info):
+ add :asis for ASIS.
+
+Sun Apr 26 21:59:43 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (ASIS): added for multi byte direct map.
+
+ * transcode.c (transcode_restartable0): ditto.
+
+Sun Apr 26 20:33:12 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tb (ActionMap#generate_node):
+ Use ActionMap#gennode instead of generate_node
+ because of initialization.
+
+Sun Apr 26 20:21:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * .gitignore: added.
+
+Sun Apr 26 20:17:24 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/rake.rb: use RbConfig::CONFIG instead of Config::CONFIG.
+
+ * lib/rbconfig/datadir.rb: ditto.
+
+Sun Apr 26 19:30:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_arg): unused variable removed.
+
+Sun Apr 26 18:35:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_reopen): keeps pathv for prep_stdio. [ruby-dev:38131]
+
+Sun Apr 26 15:13:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#parse_in_order): do not make an
+ option from non-option argument. [ruby-dev:38333]
+
+Sat Apr 25 19:11:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_cv_func_daemon): use daemon(3) only on *BSD.
+
+ * process.c (proc_daemon): double fork to ensure not having ctty.
+ [ruby-core:23305]
+
+Sat Apr 25 16:19:48 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (month_arg): extracted from time_arg.
+ (validate_vtm): ditto.
+
+Sat Apr 25 16:03:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (TIME_COPY_GMT): new macro.
+ (time_s_at): use TIME_COPY_GMT.
+ (time_succ): ditto.
+
+Sat Apr 25 15:54:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mload): use TIME_SET_UTC.
+
+Sat Apr 25 15:47:54 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_get_tm): take time_object instead of gmt.
+
+Sat Apr 25 15:39:44 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_succ): refactored to avoid gmt variable.
+ (strftimev): use TIME_UTC_P.
+ (time_strftime): ditto.
+
+Sat Apr 25 15:21:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (TIME_UTC_P): new macro.
+ (TIME_SET_UTC): ditto.
+ (TIME_LOCALTIME_P): ditto.
+ (TIME_SET_LOCALTIME): ditto.
+ (time_utc_p): use the above macro.
+ (time_localtime): ditto.
+ (time_localtime): ditto.
+ (time_gmtime): ditto.
+ (time_to_s): ditto.
+ (time_add): ditto.
+ (time_sec): ditto.
+ (time_min): ditto.
+ (time_hour): ditto.
+ (time_mday): ditto.
+ (time_mon): ditto.
+ (time_year): ditto.
+ (time_wday): ditto.
+ (wday_p): ditto.
+ (time_yday): ditto.
+ (time_isdst): ditto.
+ (time_zone): ditto.
+ (time_utc_offset): ditto.
+ (time_to_a): ditto.
+ (strftimev): ditto.
+ (time_strftime): ditto.
+ (time_mdump): ditto.
+
+Thu Apr 23 01:30:37 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/zlib/zlib.c (Zlib::GzipFile#path): New method.
+
+Wed Apr 22 20:25:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_timespec): check out-of-range. [ruby-core:23282]
+ [Bug #1396]
+
+Wed Apr 22 19:33:13 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.parse): use year completion in Date._parse.
+
+Wed Apr 22 11:12:15 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (GMTIME, LOCALTIME): should set result if not have *_r().
+
+ * time.c (localtime_with_gmtoff): now always needed tmbuf.
+
+Wed Apr 22 10:38:47 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c (glob_helper): C99(gcc)-ism.
+
+ * time.c (find_time_t): GUESS macro needs the variable named ``result''
+ always.
+
+Wed Apr 22 09:27:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (localtime_with_gmtoff): fixed cross function jump.
+
+Wed Apr 22 03:06:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time#rfc2822): pad leading zeros for year.
+ (Time#httpdate): ditto.
+ (Time#xmlschema): ditto.
+
+Wed Apr 22 02:10:48 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time#xmlschema): use subsec instead of nsec.
+
+Wed Apr 22 01:27:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_arg): use the year argument as-is. [ruby-dev:38194]
+
+ * lib/time.rb (Time.parse): interpret small year 0..99 as 1950..2049.
+
+Wed Apr 22 00:32:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (find_time_t): constified.
+
+Wed Apr 22 00:11:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (leap_year_v_p): removed.
+
+Tue Apr 21 23:52:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c: remove time_t restriction from Time class.
+
+ * timev.h: new file to define struct vtm.
+
+ * strftime.c: format struct vtm instead of struct tm.
+
+ * ext/syck/rubyext.c (mktime_do): don't use time_t;
+
+ [ruby-dev:38191]
+
+Tue Apr 21 09:25:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_path, dir_each, glob_helper): use readdir_r() if
+ available.
+
+Tue Apr 21 09:20:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (init_mkmf): needs default library path even if
+ cross compiling.
+
+Tue Apr 21 07:07:45 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_push): bypass rb_ary_store().
+
+Tue Apr 21 01:25:16 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigsub_int): subtraction without making internal
+ bignum values.
+
+ * bignum.c (bigadd_int): ditto for addition.
+
+ * bignum.c (bigtrunc): declare inline.
+
+ * bignum.c (rb_quad_pack): fix condition.
+
+Tue Apr 21 01:13:42 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (config.h): added TIMET2NUM and NUM2TIMET to match
+ the change in time.c
+
+Mon Apr 20 20:29:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_split_m): faster processing on 7bit strings.
+
+ * string.c (ascii_isspace): faster isspace() for 7bit strings.
+
+Sun Apr 19 14:43:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): the order of local variables on stack is
+ undefined. should use outermost VALUE for ruby_init_stack.
+
+ * gc.c (ruby_get_stack_grow_direction, Init_stack): allows volatile
+ pointer.
+
+ * thread_*.c (ruby_init_stack): ditto.
+
+Sun Apr 19 13:17:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb (Gem::QuickLoader#push_gem_version_on_load_path):
+ check for requirement if the gem is installed. a patch from
+ Kyosuke MOROHASHI at [ruby-dev:38020].
+
+Sun Apr 19 01:39:17 2009 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_seteuid_m): defined to use rb_f_notimplement if not
+ implemented.
+ (proc_setegid_m): ditto.
+
+Sun Apr 19 01:03:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_setuid): use rb_f_notimplement if not implemented.
+ (proc_setgid): ditto.
+
+Sat Apr 18 23:07:18 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/readline/readline.c: use rb_f_notimplement for methods not
+ implemented.
+
+ * ext/openssl/ossl_engine.c: ditto.
+
+ * ext/openssl/ossl_config.c: ditto.
+
+ * ext/openssl/ossl_cipher.c: ditto.
+
+ * ext/openssl/ossl_pkcs5.c: ditto.
+
+ * ext/openssl/ossl_x509ext.c: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/basicsocket.c: ditto.
+
+ * ext/socket/ancdata.c: ditto.
+
+ * ext/socket/unixsocket.c: ditto.
+
+ * ext/iconv/iconv.c: ditto.
+
+Sat Apr 18 21:07:34 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c: use rb_f_notimplement for methods not
+ implemented.
+
+Fri Apr 17 01:51:17 2009 Tanaka Akira <akr@fsij.org>
+
+ * node.h (rb_notimplement_body_p): declared.
+
+ * vm_method.c (Init_eval_method): suppress a warning.
+
+ * io.c (rb_io_fsync): use rb_f_notimplement if not implemented.
+ (rb_io_close_on_exec_p): ditto.
+ (rb_io_set_close_on_exec): ditto.
+ (rb_io_fcntl): ditto.
+ (rb_f_syscall): ditto.
+
+ * dir.c (dir_tell): ditto.
+ (dir_seek): ditto.
+ (dir_s_chroot): ditto.
+
+ * process.c (proc_getpgrp): ditto.
+ (proc_setpgrp): ditto.
+ (proc_getpgid): ditto.
+ (proc_setpgid): ditto.
+ (proc_setsid): ditto.
+ (proc_getpriority): ditto.
+ (proc_setpriority): ditto.
+ (proc_getrlimit): ditto.
+ (proc_setrlimit): ditto.
+ (p_sys_setuid): ditto.
+ (p_sys_setruid): ditto.
+ (p_sys_seteuid): ditto.
+ (p_sys_setreuid): ditto.
+ (p_sys_setresuid): ditto.
+ (p_sys_setgid): ditto.
+ (p_sys_setrgid): ditto.
+ (p_sys_setegid): ditto.
+ (p_sys_setregid): ditto.
+ (p_sys_setreuid): ditto.
+ (p_sys_setresgid): ditto.
+ (p_sys_issetugid): ditto.
+ (proc_getgroups): ditto.
+ (proc_setgroups): ditto.
+ (proc_initgroups): ditto.
+ (proc_daemon): ditto.
+ (rb_proc_times): ditto.
+
+ * file.c (rb_file_s_lchown): ditto.
+ (rb_file_s_link): ditto.
+ (rb_file_s_symlink): ditto.
+ (rb_file_s_readlink): ditto.
+ (rb_file_s_truncate): ditto.
+ (rb_file_truncate): ditto.
+
+Fri Apr 17 00:53:47 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/cgi/core.rb (read_multipart): When path is not defined,
+ define local_path as a method always returning nil instead of
+ aliasing. This is because StringIO#path no longer exists.
+
+Fri Apr 17 00:45:09 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * dir.c (bracket): fix escape handling for range character in bracket
+ of fnmatch pattern. e.g., '[a\-c]' should not match 'b'.
+
+Thu Apr 16 23:09:03 2009 Tanaka Akira <akr@fsij.org>
+
+ * class.c (rb_define_method_id): use rb_define_notimplement_method_id
+ if rb_f_notimplement is given.
+ (rb_define_protected_method): ditto.
+ (rb_define_private_method): ditto.
+ (rb_define_method): use rb_define_method_id.
+
+ * include/ruby/intern.h (rb_f_notimplement): declared.
+ (rb_define_notimplement_method_id): declared.
+
+ * proc.c (method_inspect): show not-implemented.
+
+ * vm_method.c (notimplement_body): new variable.
+ (rb_notimplement_body_p): new function.
+ (rb_method_boundp): return false if not implemented.
+ (rb_f_notimplement): new function.
+ (rb_define_notimplement_method_id): new function.
+
+ * process.c (rb_f_fork): use rb_f_notimplement if not implemented.
+
+ * file.c (rb_file_s_lchmod): use rb_f_notimplement if not implemented.
+
+Wed Apr 15 20:24:49 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_flatten): flatten(0) works as Array#dup.
+ [ruby-core:23168]
+
+ * test/ruby/test_array.rb: add a test for above.
+
+Wed Apr 15 11:53:35 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (fnmatch_helper): use rb_enc_precise_mbclen and
+ fail if bytes are invalid. [ruby-dev:38307]
+
+Tue Apr 14 18:11:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (bracket): if same in bytes, path is matching.
+ [ruby-dev:38305]
+
+Mon Apr 13 17:21:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): scan coderange incrementally.
+
+Mon Apr 13 11:35:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): optimize previous commit.
+ [ruby-list:45954]
+
+Mon Apr 13 10:58:54 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): check encoding compatibility only on
+ real parts.
+
+Sun Apr 12 19:54:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (bracket, fnmatch_helper): compare bytewise first, to get
+ rid of invalid byte sequence. [ruby-dev:38303]
+
+Sat Apr 11 08:45:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): phony ruby target needs empty command.
+
+Fri Apr 10 11:32:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (up): updates timestamp file.
+
+Fri Apr 10 04:54:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): info-program needs common.mk.
+
+Fri Apr 10 03:46:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_INSTALL_NAME): use --program-transform-name.
+
+ * instruby.rb, mkconfig.rb: deal with --program-transform-name
+ better. now supports s, y commands and single addressing.
+
+Thu Apr 9 23:59:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: don't override the rule for ruby.
+
+Wed Apr 8 21:58:12 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_str_dump): buffer length plus one byte for null
+ terminator. [ruby-dev:38294]
+
+ * test/ruby/test_m17n.rb (test_str_dump): add a test for above.
+
+Wed Apr 8 20:08:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): should not sign-expand non-ascii.
+ [ruby-core:23158]
+
+Wed Apr 8 17:29:29 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_chop_bang): reset coderange. [ruby-core:23155]
+
+Wed Apr 8 14:00:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (what_type?): fixed typo, and refined for member of
+ aggregation types.
+
+ * lib/mkmf.rb (Logging.postpone): copy postponed output always.
+
+Wed Apr 8 09:45:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_SO): removed redundant additional version
+ numbers.
+
+Tue Apr 7 13:35:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (info): shows configured names.
+
+ * configure.in (Makefile): works even if RUBY_INSTALL_NAME
+ contains macro.
+
+ * configure.in (LIBRUBY_DLDFLAGS): compatibility version is
+ ruby_version.
+
+ * configure.in (RUBY_REPLACE_TYPE): defines type modifier prefix
+ for printf.
+
+Tue Apr 7 02:27:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_DEFINT): should pass includes to
+ AC_CHECK_SIZEOF and RUBY_CHECK_SIZEOF.
+
+ * configure.in (CFLAGS, CXXFLAGS): need ARCH_FLAG for universal
+ binary.
+
+Tue Apr 7 01:08:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): reduce fragments if no precision lost.
+ c.f. [ruby-core:23075]
+
+Mon Apr 6 23:16:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CFLAGS, CXXFLAGS): override with $cflags and
+ $cxxflags if not given. [ruby-core:23130]
+
+Mon Apr 6 19:26:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (utime_failed): refined the error message for EINVAL on
+ DOSISH platforms, where it may fail depending on filesystems.
+ see [ruby-dev:38277].
+
+Mon Apr 6 16:38:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (sys_fail2, rb_file_s_readlink, BUFCHECK, rmext),
+ (rb_file_s_basename): get rid of overflow.
+
+Mon Apr 6 15:11:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (int_chr): checks overflow.
+
+Mon Apr 6 10:49:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/stringio/test_stringio.rb (test_path): StringIO#path is no
+ longer defined. [ruby-dev:38254]
+
+Mon Apr 6 10:47:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_path): removed. [ruby-dev:38254]
+
+Sun Apr 5 18:02:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_fd_resize): does nothing on Win32.
+
+Sat Apr 4 17:05:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (RB_NUM_COERCE_FUNCS_NEED_OPID): macro to
+ check compatibility. [ruby-dev:38162]
+
+Sat Apr 4 07:38:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb (sitearch): default to arch.
+
+Fri Apr 3 14:02:42 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/irb/completion.rb (IRB::InputCompletor::Operators): Add
+ overloadable negative operators.
+
+ * lib/irb/ruby-lex.rb (RubyLex#lex_init): Support overloadable
+ negative operators.
+
+ * lib/irb/ruby-lex.rb (RubyLex#identify_identifier): Minus signs
+ need to be escaped in regexp character class.
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords, ruby-parse-partial):
+ Support overloadable negative operators.
+
+Fri Apr 3 12:45:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: quotes arguments with spaces always.
+
+Thu Apr 2 14:50:06 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/getoptlong.rb: remove unused rdoc/usage from example.
+ [ruby-core:23098]
+
+Thu Apr 2 07:42:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): updated.
+
+Wed Apr 1 20:37:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (rb_cv_fork_with_pthread): fail if the child process
+ fail.
+
+Wed Apr 1 19:46:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): support for parallel make. a
+ patch from Takuto Matsuu at [ruby-dev:38220].
+
+Wed Apr 1 19:39:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_LDSHARED): use $(CC) instead of cc.
+ a patch from Wataru Kimura at [ruby-dev:38225].
+
+Wed Apr 1 18:53:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): should not #include inside a
+ function, since headers may have declarations.
+ c.f. [ruby-core:23095]
+
+Wed Apr 1 18:44:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: ignores version numbers in config.status. replaces
+ all $$s in program_transform_name.
+
+Wed Apr 1 15:12:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (.c.i): use CPP instead of CC, since gcc -E can'
+ work with multiple -arch options.
+
+Wed Apr 1 13:46:20 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_thread_fd_select): new function to call select
+ using rb_fdset_t.
+
+ * io.c (select_internal): use rb_thread_fd_select instead of
+ rb_thread_select. based on the patch from Kengo Matsuyama.
+ [ruby-dev:38221]
+
+Wed Apr 1 13:16:19 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_sleep): RDoc disambiguation. [ruby-talk:332632]
+
+Tue Mar 31 15:17:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: fixed the help strings for the header and library
+ dir switches, and updated to use AS_HELP_STRING. patches from
+ Richard Brown, c.f. [ruby-core:23067].
+
+Mon Mar 31 08:18:57 2009 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * test/csv/test_interface.rb, test/csv/test_serialization.rb:
+ Trying more fixes some failing tests on Windows.
+
+Mon Mar 30 19:04:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * .gdbinit (rp): show negative fixnum correctly.
+
+Mon Mar 30 12:12:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (eval_string_with_cref): replaces the message if
+ frozen. [ruby-dev:38208]
+
+Mon Mar 30 01:00:20 2009 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * test/csv/test_interface.rb: Trying a fix for some failing tests
+ on Windows.
+
+Sun Mar 29 08:59:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pathname.rb (Pathname#relative_path_from): compares path
+ components according to system default case-sensitiveness.
+ [ruby-core:22829]
+
+Sat Mar 28 11:10:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ruby.imp): all symbols in static library need to be
+ exported, so that encoding-extensions can be loaded. based on a
+ patch from Yutaka Kanemoto <kinpoco AT gmail.com> in
+ [ruby-talk:332282].
+
+Sat Mar 28 08:49:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): checks if named argument given twice.
+
+ * sprintf.c (GETNAMEARG): remembers named arg is used, to get rid
+ of too many arguments warning.
+
+Sat Mar 28 03:16:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (link_command, cc_command, cpp_command): should no
+ override extout defined in extmk.rb.
+
+Fri Mar 27 12:56:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (what_type?): checks more restrictively, and
+ supports universal binary.
+
+Fri Mar 27 01:33:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_cmp): negate the result of reverse comparison.
+
+Fri Mar 27 01:19:50 2009 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_cmpint): FIX2INT may fail on LP64 platforms.
+
+Thu Mar 26 12:22:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb (String#is_binary_data?): TAB would be
+ usually considered to be included in text data.
+
+ * lib/rdoc/parser.rb (RDoc::Parser.binary?): blksize may be nil
+ and is irrelevant to whether a file is binary. copied from
+ above since TAB and newlines would be usually considered to be
+ included in text data.
+
+Thu Mar 26 11:33:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths): considers
+ --program-prefix and --program-suffix. reapplied r19923.
+
+Wed Mar 25 07:45:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (target_alias): replaces cpu with universal too.
+
+ * configure.in (target): replaces cpu with arch by --with-arch.
+
+ * mkconfig.rb (TOPDIR): chops arch in config instead of
+ RUBY_PLATFORM which varies on universal_binary.
+
+ * mkconfig.rb (MAJOR, MINOR, TEENY): reads from version.h always.
+
+Tue Mar 24 19:23:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): need to include $4.
+
+Tue Mar 24 17:08:52 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * io.c (rb_io_inspect): Cannot access fptr->fd if fptr is NULL.
+ This fixes a coredump caused by: ruby -e "class X < IO; def
+ initialize; end; end; p X.new.inspect"
+
+Mon Mar 23 22:01:00 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_timespec): use NUM2TIMET.
+ (time_s_at): ditto.
+
+Mon Mar 23 21:52:26 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * process.c (Init_process): Better patch for eliminating an
+ "unused variable".
+
+Mon Mar 23 21:41:14 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dbm/dbm.c (fdbm_initialize): Make the file variable
+ volatile, because FilePathValue() currently does not protect the
+ given variable from GC. (Probably it should)
+
+ * ext/sdbm/init.c (fsdbm_initialize): Ditto.
+
+Mon Mar 23 19:22:14 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * file.c (rb_file_s_lstat): Back out.
+
+Mon Mar 23 18:54:57 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * file.c (rb_file_s_stat, rb_file_s_lstat): Remove repeated type
+ checks.
+
+Mon Mar 23 14:57:48 2009 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (init_heap): set default to heap slots length
+ if HEAP_OBJ_LIMIT is larger than HEAP_MIN_SLOTS. [Bug #1310]
+ (set_heaps_increment): increment next_heaps_length if
+ next_heaps_length and heaps_used are same.
+
+Mon Mar 23 14:32:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): use original command if not found.
+
+Mon Mar 23 06:51:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (link_so): replaces $(TARGET) with basename of the
+ target. [ruby-talk:330286]
+
+Sun Mar 22 14:51:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): use NULL as
+ application name for batch files.
+
+Sat Mar 21 15:54:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl.c (write_would_block): defined.
+ (read_would_block): defined.
+ (ossl_start_ssl): add nonblock argument.
+ (ossl_ssl_connect): follow ossl_start_ssl change.
+ (ossl_ssl_connect_nonblock): new method.
+ (ossl_ssl_accept): follow ossl_start_ssl change.
+ (ossl_ssl_accept_nonblock): new method.
+ (ossl_ssl_read_internal): use write_would_block and
+ read_would_block.
+ (ossl_ssl_write_internal): ditto.
+
+Sat Mar 21 08:19:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_exec): prints error message only on platforms
+ neither close-on-exec nor spawnv is supported.
+
+Sat Mar 21 08:17:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): omit program name
+ if actual program path is found. [ruby-core:22960]
+
+Sat Mar 21 07:25:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): should pass program name even if multiple
+ arguments are given. fix for TestProcess::test_argv0.
+
+Sat Mar 21 02:37:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/lib/openssl/buffering.rb
+ (OpenSSL::Buffering#write_nonblock): new method.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_write_nonblock): new method.
+ (ossl_ssl_write_internal): defined.
+ (ossl_ssl_write): use ossl_ssl_write_internal.
+
+Fri Mar 20 18:25:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (errmap): added ERROR_MOD_NOT_FOUND.
+
+Fri Mar 20 09:22:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (libprefix): must not append "lib" after $(libdir),
+ when load_relative is not used on darwin. a patch from Kenta
+ Murata at [ruby-dev:38182].
+
+Thu Mar 19 20:29:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_mWaitReadable): defined.
+ (rb_mWaitWritable): defined.
+ (io_getpartial): extend IO::WaitReadable on EWOULDBLOCK and EAGAIN.
+ (rb_io_write_nonblock): extend IO::WaitWritable on EWOULDBLOCK and
+ EAGAIN.
+
+ * error.c (make_errno_exc): extracted from rb_sys_fail.
+ (rb_mod_sys_fail): new function.
+
+ * include/ruby/ruby.h (rb_mod_sys_fail): declared.
+ (rb_mWaitReadable): declared.
+ (rb_mWaitWritable): declared.
+
+ * ext/socket/init.c (rsock_s_recvfrom_nonblock): extend
+ IO::WaitReadable on EWOULDBLOCK and EAGAIN.
+ (rsock_s_accept_nonblock): extend IO::WaitReadable on EWOULDBLOCK,
+ EAGAIN, ECONNABORTED and EPROTO.
+
+ * ext/socket/socket.c (sock_connect_nonblock): extend IO::WaitWritable
+ on EINPROGRESS.
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): extend
+ IO::WaitWritable on EWOULDBLOCK and EAGAIN.
+ (bsock_recvmsg_internal): extend IO::WaitReadable on EWOULDBLOCK and
+ EAGAIN.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read_internal): raise SSLError
+ extended by IO::WaitReadable/IO::WaitWritable on
+ SSL_ERROR_WANT_READ/SSL_ERROR_WANT_WRITE.
+
+ * ext/openssl/ossl.c (ossl_make_error): extracted from ossl_raise.
+ (ossl_exc_new): new function.
+
+ * ext/openssl/ossl.h (ossl_exc_new): declared.
+
+ * lib/net/protocol.rb (rbuf_fill): rescue IO::WaitReadable and
+ IO::WaitWritable.
+
+ [ruby-core:22539], [ruby-dev:38140]
+
+Thu Mar 19 18:49:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): allows qualified name.
+
+ * configure.in (RUBY_REPLACE_TYPE): checks more strictly.
+
+ * configure.in (struct stat.st_size, struct stat.st_blocks),
+ (struct stat.st_ino): check for size.
+
+ * lib/mkmf.rb (check_sizeof): allows qualified name.
+
+ * file.c (rb_stat_ino, rb_stat_blocks): check by size.
+
+Wed Mar 18 16:59:48 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/test_syslog.rb (TestSyslog#test_open): check
+ param after block again. because detect not to call block.
+
+Wed Mar 18 16:54:04 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/socket/ancdata.c: not use pktinfo.ipi_spec_dst if not defined
+ * ext/socket/extconf.rb: define HAVE_IPI_SPEC_DST
+
+Wed Mar 18 16:38:11 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/test_syslog.rb (TestSyslog#test_open): check
+ block parameter in block. [ruby-dev:38180]
+
+Wed Mar 18 12:48:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (report_bug): rb_bug can be caused by extension
+ libraries.
+
+Wed Mar 18 02:41:33 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (open_server_inaddr_any): fixed multiple network
+ families problem. a patch from Charl Matthee at [ruby-core:21033].
+
+Tue Mar 17 21:42:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (package): creates .revision.time and passes
+ CHDIR to create prerequisite files.
+
+Tue Mar 17 18:00:55 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (Enumerator#{each_,}{with_index,with_object}): Fix
+ a bug where any parameter but the first one is dropped even if
+ multiple values are yielded with. [Bug #1198]
+
+Tue Mar 17 14:25:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#sub): set $~ in block.binding.
+ [ruby-dev:38173]
+
+Tue Mar 17 13:48:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): added RUBY_COREDLL.
+
+ * ext/dl/handle.c (rb_dlhandle_initialize): returns msvcrt if libc
+ or RUBY_COREDLL is given. [ruby-core:22828]
+
+Tue Mar 17 10:29:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c, dln.c, parse.y, re.c, ruby.c, sprintf.c, strftime.c,
+ string.c, util.c, variable.c: use strlcpy, memcpy and snprintf
+ instead of strcpy, strncpy and sprintf.
+
+Mon Mar 16 17:15:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/dl/test_win32.rb (Win32API): enclosed by DL::TestWin32.
+ [ruby-core:22827]
+
+Mon Mar 16 16:37:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tcltklib.c (eventloop_sleep, lib_eventloop_core),
+ (lib_watchdog_core): tv_usec is not time_t.
+
+Mon Mar 16 12:30:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (REVISION_H): keeps timestamp of revision.h.
+ [ruby-core:22900]
+
+ * tool/ifchange, win32/ifchange.bat: extended --timestamp option.
+
+Mon Mar 16 09:28:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk, win32/Makefile.sub: added preprocessing rules.
+
+Sun Mar 15 12:34:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/minitest/test_mini_test.rb: fixed tests depending on the
+ detail of floating point representation.
+
+Sun Mar 15 12:01:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/installer.rb (Gem::Installer#shebang): fix for env
+ shebang.
+
+Sun Mar 15 11:15:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h ({RSTRING,RBIGNUM}_EMBED_LEN_MAX): made int.
+
+ * include/ruby/ruby.h (OBJ_{TAINTED,UNTRUSTED,FROZEN}): return int.
+
+ * include/ruby/encoding.h (ENC_CODERANGE): ditto.
+
+Sun Mar 15 11:11:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_hash_uint, rb_hash_start, rb_hash_end): use VALUE
+ rather than unsigned int.
+
+Sun Mar 15 11:00:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): stop the timer thread before exec.
+
+Sun Mar 15 09:17:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (.y.c): use SRC_FILE which contains slashes instead of
+ backslashes. [ruby-core:22891]
+
+Sun Mar 15 08:26:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (srcs-ext): creates ext/dl/callback/callback.c also.
+
+Sun Mar 15 03:29:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (SAVED_GROUP_ID, p_gid_switch): should be rb_gid_t.
+
+Sun Mar 15 02:53:13 2009 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_subpat): accept capture name.
+ (rb_str_aref): follow above change.
+ (rb_str_aref_m): pass the 2nd argument to rb_str_subpat.
+ (rb_str_subpat_set): accept capture name.
+ (rb_str_aset): follow above change.
+ (rb_str_partition): ditto.
+ (rb_str_aset_m): pass the 2nd argument to rb_str_subpat_set.
+
+ * include/ruby/intern.h (rb_reg_backref_number): declared.
+
+ * re.c (rb_reg_backref_number): defined.
+
+ [ruby-core:21057]
+
+Sun Mar 15 02:09:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (bmcall): should not uninitialized variable. a patch from
+ pegacorn at [ruby-dev:38169].
+
+Sat Mar 14 18:25:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_scan_oct, ruby_scan_hex): use size_t.
+
+Sat Mar 14 18:18:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_proc_call, rb_node_arity, bmcall, curry): checks
+ overflow.
+
+ * proc.c (rb_proc_parameters): unnamed_parameters() expects in
+ not VALUE.
+
+Sat Mar 14 17:54:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_each_words): assume no string exceeds INT_MAX.
+
+Sat Mar 14 15:59:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_spawn_internal): use int variable for status.
+
+Sat Mar 14 14:45:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_f_system): use rb_pid_t for pid.
+ (rb_spawn_internal): local variable renamed.
+
+Sat Mar 14 14:16:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strdup, Balloc, rv_alloc): use size_t.
+
+Sat Mar 14 13:53:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_qsort): the result of cmp must be signed, so ge
+ rid of reuse of a variable.
+
+Sat Mar 14 10:56:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (init_funcname_len, dln_find_exe_r, dln_find_file_r): use
+ size_t.
+
+ * file.c (rb_stat_inspect, file_expand_path): ditto.
+
+ * util.c (ruby_qsort): ditto.
+
+Sat Mar 14 10:39:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (CXX_EXT): checks for case-sensitive filesystem with
+ FNM_SYSCASE rather than build_os.
+
+Fri Mar 13 23:03:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (wait_connectable0): remove unreachable code.
+
+Fri Mar 13 23:00:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): pass [include] to AC_CHECK_SIZEOF.
+
+Fri Mar 13 20:58:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * dln.c (dln_find_1): compare fspace in size_t world.
+
+Fri Mar 13 18:58:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CFLAGS, CXXFLAGS): moved after warnflags.
+
+Fri Mar 13 18:10:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_throw_obj): inverted call flow. [ruby-core:22872]
+
+Fri Mar 13 17:04:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (bool): not define to get rid of conflict
+ against curses.
+
+Fri Mar 13 16:45:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/openssl_missing.h (i2d_of_void): cast for callbacks.
+ [ruby-core:22860]
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_by_id): suppress a
+ warning.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_flush_sessions): time_t may
+ be larger than long.
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_get_time),
+ (ossl_ssl_session_get_timeout): use TIMET2NUM() to convert
+ time_t.
+
+Fri Mar 13 15:10:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_set_value): should use
+ OPENSSL_free instead of free. a patch from Charlie Savage at
+ [ruby-core:22858].
+
+Fri Mar 13 21:11:51 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/sdbm/_sdbm.c: should include "ruby/defines.h" as well for
+ prototypes of compatibility functions on Win32 platform.
+ [ruby-core:22870]
+
+Fri Mar 13 10:42:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (AC_HEADER_STDBOOL): added.
+
+ * include/ruby/ruby.h (NUM2INT, rb_special_const_p): returns true
+ and false instead of Qtrue and Qfalse for platforms where VALUE
+ is bigger than int.
+
+ * gc.c (gc_stress_set), ext/openssl/ossl_asn1.c (decode_bool): go
+ rid of variables named `bool'.
+
+Fri Mar 13 10:16:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (struct stat.st_size): may be huge.
+
+Fri Mar 13 09:30:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (bigfixize): zero length Bignum is 0.
+
+Fri Mar 13 09:17:12 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils#fu_get_gid): stringify group
+ argument before making regexp match. [ruby-dev:38155]
+
+Fri Mar 13 08:06:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (rv_strdup): macro to duplicate nul-terminated string.
+ [ruby-core:22852]
+
+Thu Mar 12 22:41:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl: suppress warnings.
+
+ * ext/openssl/ossl.h (OSSL_Debug): don't use gcc extension for
+ variadic macro.
+
+Thu Mar 12 22:29:36 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (WARNFLAGS): warning 4996 is only in VC++8 or
+ later.
+
+Thu Mar 12 22:14:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_def_const): use INT2NUM because
+ OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG doesn't fit into Fixnum.
+
+Thu Mar 12 18:16:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c, bignum.c, dln.c, error.c, gc.c, io.c, marshal.c,
+ numeric.c, pack.c, strftime.c, string.c, thread.c, transcode.c,
+ transcode_data.h, util.c, variable.c, vm_dump.c,
+ include/ruby/encoding.h, missing/crypt.c, missing/vsnprintf.c:
+ suppress VC type warnings. [ruby-core:22726]
+
+ * marshal.c (div0), numeric.c (infinite_value): new functions to
+ get rid of VC division by 0 warnings.
+
+ * st.c: use st_index_t for indexes instead of int.
+
+ * vm.c (rb_vm_get_sourceline), vm_insnhelper.c (vm_throw): use
+ rb_num_t.
+
+Thu Mar 12 09:30:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): if same size type is found, no
+ more calculation is needed.
+
+ * configure.in (RUBY_DEFINT): falls back to RUBY_CHECK_SIZEOF if
+ size is not immediate.
+
+Thu Mar 12 09:24:24 2009 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h: suppress warnings of overflow.
+
+Thu Mar 12 09:15:14 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h: suppress warnings of overflow.
+
+Thu Mar 12 05:49:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags): added some default flags,
+ pointer-arith, write-strings and shorten-64-to-32, but suppress
+ unused-parameter and missing-field-initializers, if possible.
+
+ * configure.in (RUBY_CHECK_HUGE): checks whether a value range is
+ larger than long.
+
+ * file.c (rb_stat_blocks): struct stat.st_blocks may be larger
+ than long.
+
+ * io.c (copy_stream_fallback_body): off_t may be larger than long.
+
+ * iseq.c (rb_iseq_disasm): RSTRING_LEN() returns long.
+
+ * process.c (rb_f_sleep): time() needs time_t.
+
+ * random.c (fill_random_seed): enclosed conditionally used
+ variables.
+
+ * thread_pthread.c (ruby_init_stack): range of rlim_cur may be
+ larger than int.
+
+ * missing/vsnprintf.c (BSD_vfprintf): commented out code which has
+ no effect at all.
+
+Thu Mar 12 02:10:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: strip spaces from ruby_version.
+ Sun C 5.9 SunOS_i386 Build47_dlight 2007/05/22 generates
+ `ruby_version= 1 "." 9 "." 1'.
+
+Thu Mar 12 01:18:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_seek): use long for seekdir().
+
+Thu Mar 12 01:08:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/ytab.sed: replaces backslashes with slash for nmake.
+
+Wed Mar 11 21:23:06 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mload): don't clear tm_mday.
+
+Wed Mar 11 20:13:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (rb_dlhandle_sym): RTLD_NEXT is not for symbol
+ name. [ruby-dev:38150]
+
+Wed Mar 11 17:26:38 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/Win32API.rb: call by :stdcall as default.
+ [ruby-core:22826]
+
+Wed Mar 11 13:27:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stack_type): uses VALUE which is able to be stored
+ parser stack.
+
+Wed Mar 11 13:22:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_env): set TMPDIR if none of TMPDIR, TMP,
+ TEMP is set.
+
+ * win32/win32.c (rb_w32_telldir, rb_w32_seekdir): should use long,
+ as defined by SUSv3.
+
+Wed Mar 11 13:03:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (rb_dlhandle_sym): fixed heap corruption.
+ [ruby-core:22822]
+
+Wed Mar 11 06:12:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): expands libpath and removes
+ last /lib.
+
+Wed Mar 11 04:47:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_to_i, time_hash): time_t may be bigger than long
+ and int.
+
+ * time.c (time_timeval, rb_time_timeval, obj2nsec, time_strftime),
+ (time_mdump, time_mload): suppress warnings.
+
+ * win32/Makefile.sub (config.h): added TIMET2NUM and NUM2TIMET.
+
+Wed Mar 11 04:29:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c: suppress warnings. based on a patch from Charlie
+ Savage at [ruby-core:22804].
+
+Wed Mar 11 04:22:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (sig_trap): suppress warnings.
+
+Tue Mar 10 20:07:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (WARNFLAGS): uses -wd4996 instead of
+ CRTDEFFLAGS. cf. [ruby-core:22725]
+
+Tue Mar 10 19:58:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (strcasecmp, strncasecmp): use _ prefixed
+ versions to suppress warnings.
+
+ * ext/dl/callback/mkcallback.rb (DLTYPE[FLOAT]): cast to suppress
+ warnings. [ruby-core:22792]
+
+ * array.c, bignum.c, gc.c, numeric.c, string.c, util.c, insns.def,
+ missing/crypt.c, missing/vsnprintf.c, : suppress warnings.
+ [ruby-core:22792]
+
+Tue Mar 10 13:45:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (LDFLAGS): moved -link to TRY_LINK, LINK_SO
+ and so on. based on a patch by Charlie Savage at
+ [ruby-core:22794]
+
+ * win32/Makefile.sub (config.h): passes LDFLAGS to rbconfig.rb so
+ that extconf.rb could refer it. [ruby-core:22725]
+
+Tue Mar 10 11:36:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (prepare_iseq_build): too few arguments to function
+ rb_ary_tmp_new().
+
+Tue Mar 10 10:53:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_compile_with_option): argument may be converted.
+
+Tue Mar 10 04:56:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MINIRUBY): keep macro into Makefile.
+
+ * configure.in (RUBY_CHECK_SIZEOF): fix for fallback.
+
+ * configure.in (MANGLED_PATH): defines for RUBYLIB_PREFIX.
+
+ * ruby.c (ruby_init_loadpath_safe): uses string as buffer.
+
+ * symbian/setup (config_h): defines MANGLED_PATH.
+
+Tue Mar 10 03:48:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/callback/depend: fix for parallel build.
+
+ * ext/dl/callback/extconf.rb: callback.h is no longer created.
+
+ * ext/dl/callback/mkcallback.rb: creates main source first.
+
+ * ext/dl/callback/extconf.rb ($distcleanfiles): added callback.c.
+
+Tue Mar 10 00:06:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (load_relative): new option to enable load path
+ relative to libruby_so.
+
+ * ruby.c (ruby_init_loadpath_safe): added the case using dladdr().
+
+Mon Mar 9 16:49:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake: updated to rake code to rake-0.8.4 source code base.
+
+Mon Mar 9 16:03:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/installer.rb (Gem::Installer#initialize): env may
+ not be under /usr/bin.
+
+ * lib/rubygems/installer.rb (Gem::Installer#shebang): uses /bin/sh
+ if shebang has any options, since env shebang trick does no
+ work with options.
+
+Mon Mar 9 15:19:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (manpages): use basename to compare and for Tempfile.
+
+Mon Mar 9 14:55:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (default gems): installs default gemspecs.
+
+Mon Mar 9 14:48:08 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (OPTFLAGS): simplified. see [ruby-core:22725]
+
+Mon Mar 9 14:33:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb: prints names of the directories where files are
+ installed to.
+
+Mon Mar 9 02:25:54 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_proc.rb: add some tests.
+
+Mon Mar 9 01:38:00 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_enum.rb: add some tests.
+
+Mon Mar 9 01:12:37 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_object.rb: add a test for Object#method_missing.
+
+Mon Mar 9 01:11:17 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_file_exhaustive.rb: add tests for File#size and
+ File.absolute_path.
+
+Sun Mar 8 23:02:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (LDFLAGS): always prepends -link.
+
+Sun Mar 8 11:39:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): dirty hack to compute multiple
+ sizeof, for apple's universal binary.
+
+Sat Mar 7 22:06:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (universal_binary): checks if sizes are same on all
+ architectures.
+
+Sat Mar 7 18:45:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: checks if cd really succeeded.
+
+Sat Mar 7 14:24:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: don't use CONFIG_SHELL for testing shell feature in
+ Makefile.
+
+Sat Mar 7 14:07:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: fix the location of cdcmd.
+
+Sat Mar 7 13:52:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: the shell which runs configure may be different from
+ the shell for make. configure likes bash but Makefile specifies
+ SHELL=/bin/sh.
+
+Sat Mar 7 12:31:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/erb/test_erb.rb: reverted space sensitive test results.
+
+ * test/rdoc/test_rdoc_parser_c.rb: ditto.
+
+ * test/rdoc/test_rdoc_ri_default_display.rb: ditto.
+
+Fri Mar 6 23:35:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (SecureRandom.urlsafe_base64): add optional
+ argument to add padding.
+
+Fri Mar 6 19:25:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_LIB_VERSION_STYLE): sets full or minor style
+ not to show RUBY_VERSION_MAJOR and so on.
+
+ * version.h (RUBY_LIB_VERSION): makes from RUBY_LIB_VERSION_STYLE.
+
+ * configure.in, Makefile.in, win32/Makefile.sub (CHDIR): cd using
+ physical directory.
+
+ * Makefile.in (update-mspec): split from update-rubyspec.
+
+ * win32/Makefile.sub (update-{rubyspec,mspec}): added.
+
+Fri Mar 6 14:28:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (INSNS): moved variable
+ definition before rule.
+
+Fri Mar 6 13:47:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake/loaders/makefile.rb (Rake::MakefileLoader#load): deals with
+ escaped spaces. incorporated from rake 0.8.4.
+
+ * lib/rake/testtask.rb (Rake::TestTask#define): passes each libs
+ as each arguments with expanded. incorporated from rake 0.8.4.
+
+Thu Mar 5 18:36:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): keeps enough precision for round trip.
+ [ruby-core:22325]
+
+Thu Mar 5 17:42:06 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fill): doc for Array#fill misses indication
+ about negative value for the start argument. [ruby-core:22497]
+
+Thu Mar 5 16:56:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (Dir.tmpdir): not use USERPROFILE, and ignores
+ non-existent directory.
+
+Thu Mar 5 14:52:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_sysinit): initializes version info first.
+
+ * win32/win32.c (rb_w32_osid): always define for binary compatibility.
+
+Thu Mar 5 11:52:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (make_insns_rules): rule to make rules for insns.
+
+Thu Mar 5 11:27:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (miniruby.exe): workaround for a failure of
+ mt.exe on Windows 7 beta. [ruby-talk:330284]
+
+Thu Mar 5 10:32:17 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/dl/test_base.rb: Add dragonfly to libc and libm switch.
+
+Thu Mar 5 10:29:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_eql): extracted from rb_str_equal and rb_str_eql.
+
+ * string.c (rb_str_chomp_bang): keeps 7bit coderange.
+
+Thu Mar 5 10:10:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (enc_initialized_p): ENC_UNINITIALIZED
+ is not defined already.
+
+ * include/ruby/encoding.h (ENC_FROM_ENCINDEX): removed because
+ depending on a static variable.
+
+Thu Mar 5 04:42:52 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: fix wrong test, and add a test for
+ sort_by!.
+
+Thu Mar 5 04:32:38 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: add some tests for coverage.
+
+Thu Mar 5 00:06:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/README.win32 (Requirement): added unicows.lib and dll.
+
+Wed Mar 4 23:29:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, win32/configure.bat (--enable-win95): new option
+ to enable/disable win95 support.
+
+Wed Mar 4 21:21:51 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/thread.rb (SizedQueue#push): fix limit condition.
+ [ruby-dev:38135]
+
+Wed Mar 4 20:27:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (mingw): checks if unicows.lib is available.
+
+ * include/ruby/win32.h (WIN95): moved to config.h
+
+ * win32/Makefile.sub (LIBS): links unicows.lib if available.
+
+ * win32/Makefile.sub (config.h): defines WIN95 only if unicows.lib
+ is available.
+
+ * win32/setup.mak (-unicows-): checks if unicows.lib is available.
+
+Tue Mar 3 17:10:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): removes object files no longer used and
+ files to be removed by old distclean.
+
+Tue Mar 3 16:51:51 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/resolv.rb: get rid of warning.
+
+ * ext/dl/lib/dl/func.rb: ditto.
+
+Tue Mar 3 16:25:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake), lib/mkmf.rb (create_makefile): $objs and
+ $srcs are always Array or nil now.
+
+Tue Mar 3 15:54:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/{registry,resolv}.rb: use dl/import instead
+ of Win32API.
+
+Tue Mar 3 15:53:20 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/dl/func.rb (DL::Function.name): delegate to @cfunc.
+
+Tue Mar 3 15:40:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl.c (rb_dl_init_callbacks): autoloads callbacks.
+
+ * ext/dl/callback: split from dl.
+
+ * ext/dl/lib/dl/cparser.rb (DL::CParser::parse_signature): fixed
+ variable name.
+
+ * ext/dl/lib/dl/pack.rb (DL::PackInfo): reduced redundant
+ initialization.
+
+ * ext/dl/lib/dl/stack.rb (DL::Stack): ditto.
+
+ * ext/dl/lib/dl/value.rb (DL::ValueUtil#wrap_arg): NULL for nil.
+
+ * test/dl: moved from ext/dl/test.
+
+Tue Mar 3 14:57:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (main): passes $(MAKE) to mkmain_cmd
+
+ * ext/extmk.rb (command_output): uses arguments to invoke make.
+
+Tue Mar 3 01:56:03 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (SecureRandom.urlsafe_base64): delete padding.
+
+Mon Mar 2 21:39:08 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/sockport.h (SS_LEN): defined unconditionally.
+
+Mon Mar 2 21:26:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (anc_inspect_socket_creds): suppress warnings.
+
+Mon Mar 2 21:13:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (rsock_discard_cmsg_resource): defined
+ unconditionally.
+
+Mon Mar 2 21:06:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_mload): don't use "sun" variable
+ for Solaris.
+
+Mon Mar 2 21:01:36 2009 Tanaka Akira <akr@fsij.org>
+
+ * file.c: include fcntl.h for O_RDONLY on Solaris.
+
+Mon Mar 2 19:43:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::Parser#escape): escaped string is ascii
+ only.
+
+ * lib/uri/common.rb (URI::Parser#unescape): converts bytewise.
+ [ruby-dev:38005], [ruby-dev:38110]
+
+Mon Mar 2 16:40:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (Macros): added HAVE_RUBY_*_H.
+
+Mon Mar 2 12:22:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_env): keeps wide chars as wide chars.
+
+Mon Mar 2 11:01:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl.h (dlerror): fixed on Windows.
+
+ * ext/dl/handle.c (rb_dlhandle_initialize): returns handle to
+ libruby if nil is given on Windows as dlopen.
+
+ * ext/dl/handle.c (rb_dlhandle_sym): get rid of buffer overrun,
+ and try ASCII WINAPI versions too.
+
+Mon Mar 2 10:29:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_longjmp), include/ruby/intern.h (ruby_cleanup): fixed
+ prototypes.
+
+Mon Mar 2 00:56:45 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/observer.rb: The module observable uses now a hash to
+ store listeners. merged a patch from Alessandro Di Maria in
+ [ruby-core:22560].
+
+Sun Mar 1 22:59:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c: suppress warnings.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/unixsocket.c: ditto.
+
+Sun Mar 1 20:57:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ (rsock_getfamily): renamed from rb_sock_getfamily.
+
+Sun Mar 1 19:52:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/win32/lib/Win32API.rb (initialize): passes res
+ arguments to DL.
+
+Sun Mar 1 19:38:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_run): suppress a warning. a patch from
+ Charlie Savage at [ruby-core:22607].
+
+Sun Mar 1 19:36:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_dtoa): allocates one more byte to get rid of buffer
+ overrun. a patch from Charlie Savage at [ruby-core:22604].
+
+Sun Mar 1 19:10:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (.y.c): removed extra backslash. [ruby-core:22602]
+
+Sun Mar 1 19:02:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): fix for stdcall and missing
+ argument numbers. [ruby-core:22601]
+
+ * ext/dl/dl.h (DLSTACK_PROTO0_): added.
+
+ * ext/dl/mkcallback.rb (gencallback, gen_callback_file),
+ (rb_dl_init_callbacks): omit stdcall functions unless supported.
+
+ * lib/rubygems/config_file.rb (SHGetFolderPath): stdcall.
+
+Sun Mar 1 17:27:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (gfDebug): uncommented out.
+ [ruby-core:22600]
+
+Sun Mar 1 16:15:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_waitpid): use wait_each() on no waitpid platforms.
+ [ruby-dev:38054]
+
+Sun Mar 1 16:01:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_daemon): stops and restarts timer thread because
+ daemon(3) implies fork(2). [ruby-dev:38055]
+
+Sun Mar 1 15:45:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ (rsock_make_hostent): renamed from sock_make_hostent.
+ (rsock_addrinfo): renamed from sock_addrinfo.
+ (rsock_getaddrinfo): renamed from sock_getaddrinfo.
+ (rsock_socket): renamed from ruby_socket.
+ (rsock_sock_s_socketpair): renamed from sock_s_socketpair.
+ (rsock_connect): renamed from ruby_connect.
+
+ * ext/socket/socket.c (sock_listen): make it static.
+
+Sun Mar 1 15:29:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket: add rsock_ prefix.
+
+Sat Feb 28 21:52:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_iterate): use volatile to suppress warnings.
+
+ * eval.c (ruby_cleanup): ditto.
+
+Sat Feb 28 20:09:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * eval_error.c (error_print): use volatile to suppress warnings.
+
+ * vm_eval.c (eval_string_with_cref): ditto.
+
+ * thread.c (rb_exec_recursive): ditto.
+
+ * eval_jump.c (rb_exec_end_proc): ditto.
+
+ * eval.c (ruby_exec_node): ditto.
+ (rb_longjmp): ditto.
+
+Sat Feb 28 18:28:58 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_unix_rights): check message type.
+
+Sat Feb 28 16:18:39 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/net/http.rb: suppress warnings of non-existing instance variable
+ access for SSL.
+
+Sat Feb 28 14:50:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (BasicSocket#connect_address): returns ::1
+ if the address is IPv4-mapped IPv6 address for 0.0.0.0 for MacOS X.
+
+Sat Feb 28 00:18:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c: suppress strict-aliasing warning with
+ gcc version 4.4.0 20090219 (Red Hat 4.4.0-0.21) on Fedora 11 Alpha.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/unixsocket.c: ditto.
+
+ * ext/socket/sockport.h (SS_LEN): defined.
+ (SET_SS_LEN): ditto.
+
+Fri Feb 27 22:30:18 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): close FDs passed by
+ SCM_RIGHTS unless :scm_rights=>true is given.
+ (discard_cmsg): extracted from rsock_discard_cmsg_resource.
+
+Fri Feb 27 22:14:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/lib/openssl/buffering.rb: define Buffering module under
+ OpenSSL. [ruby-dev:37906]
+
+Fri Feb 27 22:09:24 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb: don't define assert_not_* if already
+ overridden.
+
+Fri Feb 27 22:02:34 2009 Tanaka Akira <akr@fsij.org>
+
+ * util.c: fix SEGV by test_time.rb with
+ gcc version 4.4.0 20090219 (Red Hat 4.4.0-0.21) on Fedora 11 Alpha.
+
+Fri Feb 27 18:30:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (cdhash_type, iseq_set_sequence): should not call
+ methods of the argument of case, to keep the semantics of
+ case/when. [ruby-dev:38079]
+
+Fri Feb 27 18:01:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (ruby_get_stack_grow_direction): no needs to use thread
+ here, and not initialized yet. [ruby-core:22439]
+
+Fri Feb 27 17:45:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_load_ok): checks if regular file, except for the
+ platform disallows to open directories, e.g. dosish.
+ [ruby-dev:38097], [Bug #1221]
+
+Fri Feb 27 14:39:40 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (flo_eq, flo_gt, flo_ge, flo_lt, flo_le, flo_eql): revert
+ isnan() checks for VC++6.
+
+ * insns.def (opt_lt, opt_gt): ditto.
+
+Fri Feb 27 14:23:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (modifiable): check if really frozen.
+ [ruby-core:22559]
+
+Thu Feb 26 23:14:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (BasicSocket#connect_address): new method.
+
+Thu Feb 26 19:29:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (hash_foreach_iter): fix for prototype.
+
+Thu Feb 26 18:36:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (INSNS, newline.c, miniprelude.c, prelude.c),
+ (node_name.inc, known_errors.inc): unified from Makefile.in and
+ win32/Makefile.sub.
+
+Thu Feb 26 13:30:34 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * util.c (valid_filename): use our own implementation of open(),
+ close() and unlink().
+
+Thu Feb 26 13:23:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (cdhash_each): resurrects internal literals.
+
+Thu Feb 26 10:56:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (rb_w32_wopen): prototype forgotten.
+
+ * io.c (rb_sysopen_internal): shouldn't replace undefined chars in this
+ case.
+
+Thu Feb 26 01:34:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: more MSG_* constants.
+
+Thu Feb 26 00:21:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_level): extracted from sockopt_level_m.
+ (sockopt_optname): extracted from sockopt_optname_m.
+ (sockopt_data): apply StringValue.
+ (sockopt_s_linger): new method.
+ (sockopt_linger): new method.
+ (inspect_linger): show onoff value if it is neither 0 nor 1.
+
+Wed Feb 25 23:23:03 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_unix_rights): raise
+ NotImplementedError if no fd passing feature.
+ (ancillary_timestamp): raise NotImplementedError if no timestamp
+ feature.
+
+Wed Feb 25 23:18:53 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_s_unix_rights): new method.
+
+Wed Feb 25 23:01:26 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/unixsocket.c (unix_recv_io): prevent FD leak when 2 fd is
+ sent on LP64 platform.
+
+ * ext/socket/rubysocket.h (rsock_discard_cmsg_resource): declared.
+
+ * ext/socket/ancdata.c (rsock_discard_cmsg_resource): renamed from
+ discard_cmsg_resource. export it.
+
+Wed Feb 25 17:31:32 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (sysopen_func, rb_sysopen_internal, rb_sysopen): open file
+ by UTF-16'ed filename on Windows.
+
+ * io.c (rb_file_open_generic, rb_io_s_sysopen, rb_io_reopen,
+ argf_next_argv): follow above change.
+
+ * io.c (rb_scan_open_args): no longer need to convert filepath here on
+ Windows.
+
+ * win32/wio32.c (rb_w32_wopen): new function to open file by UTF-16'ed
+ filename.
+
+ * win32/win32.c (rb_w32_open): call rb_w32_open().
+
+Wed Feb 25 15:05:35 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): use un.rb as cp instead of
+ cmd.exe's copy command.
+
+ * lib/mkmf.rb (create_makefile): no longer need to convert path
+ separator when copying file.
+
+Wed Feb 25 12:27:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_force_encoding): should clear coderange at changing
+ encoding. [ruby-core:22437]
+
+Wed Feb 25 12:06:09 2009 <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline_1): enables limit even if rs is given.
+ [ruby-core:22434]
+
+Wed Feb 25 02:28:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): coderange may change.
+ [ruby-core:22414]
+
+Wed Feb 25 02:17:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_delete_bang): should recalculate coderange.
+ [ruby-talk:329267]
+
+Wed Feb 25 00:41:21 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * class.c (rb_scan_args): Allow specifying the number of trailing
+ mandatory arguments right after the number of optional arguments
+ only if the number of leading mandatory arguments is not omitted.
+
+ * ext/socket/tcpserver.c (tcp_svr_init): Make use of it.
+
+Wed Feb 25 00:28:25 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_size): new method added. [ruby-core:22088]
+
+Wed Feb 25 00:15:15 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (curses_colors): new method added. a patch
+ from Alexander Beisig in [ruby-core:22331].
+
+ * ext/curses/curses.c (curses_color_pairs): ditto.
+
+Wed Feb 25 00:05:13 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * class.c (rb_scan_args): Revamp rb_scan_args() to compute the
+ number of required and optional arguments precisely to prepare
+ for a more informative error message.
+
+Tue Feb 24 23:58:52 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_index, rb_ary_rindex): Emit a warning that a
+ given block is unused when an argument is specified.
+
+Tue Feb 24 22:00:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sockaddr_obj): convert fe80:1::1 to fe80::1%1.
+
+Tue Feb 24 19:56:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_timestamp): support SCM_BINTIME.
+
+Tue Feb 24 19:45:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_timestamp): new method.
+
+Tue Feb 24 19:01:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (main): split from exts and makes main program after
+ building exts with miniruby, to get rid of overwriting running
+ program. [ruby-core:22339]
+
+ * Makefile.in, win32/Makefile.sub (RUNCMD, MKMAIN_CMD): macros to
+ run script file.
+
+ * ext/extmk.rb (parse_args): added --command-output option which
+ creates script file to make main program.
+
+Tue Feb 24 17:58:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ripper.c): exec can't work on Windows.
+
+ * ext/ripper/depend (.SUFFIXES): nmake doesn't have .y by default.
+
+ * Makefile.in (id.h): overwrites unconditionally.
+
+Tue Feb 24 13:13:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD_vfprintf): ptrdiff_t may be larger than
+ long.
+
+Tue Feb 24 11:21:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (rb_disable_interrupt, rb_enable_interrupt): see
+ USE_TRAP_MASK.
+
+Tue Feb 24 10:49:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_waitpid): last argument was missing.
+
+ * process.c (waitall_each): fixed typo. a patch from shinichiro.h
+ <shinichiro.hamaji AT gmail.com> at [ruby-dev:38054].
+
+Tue Feb 24 01:53:40 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_eq): remove unnecessary NaN check using isnan().
+ comparison regarding NaN is false anyway.
+
+ * numeric.c (flo_gt, flo_ge, flo_lt, flo_le, flo_eql): ditto.
+
+Tue Feb 24 01:22:19 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_thread.rb: fix for environment where fork is not
+ available.
+
+Tue Feb 24 01:19:38 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (thread_cleanup_func): unlock all locked mutexes even when
+ forking. [ruby-core:22269]
+
+Tue Feb 24 00:54:16 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (opt_minus): inline float operation.
+
+ * insns.def (opt_lt, opt_gt): ditto.
+
+Tue Feb 24 00:24:13 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_each): check #succ only when it is really
+ needed. small performance improvement.
+
+ * math.c (Need_Float): call rb_to_float() only when it is really
+ needed. small performance improvement.
+
+Tue Feb 24 00:19:33 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/pathname.rb (Pathname#foreachline): removed wrongly
+ resurrected method. [ruby-dev:38065]
+
+Mon Feb 23 20:39:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (inspect_timespec_as_abstime): new function to
+ show struct timespec.
+ (ancillary_inspect): use it for SCM_TIMESTAMPNS on GNU/Linux.
+
+Mon Feb 23 20:30:06 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (inspect_bintime_as_abstime): new function to
+ show struct bintime.
+ (ancillary_inspect): use it for SCM_BINTIME on FreeBSD.
+
+ * ext/socket/mkconstants.rb: define SCM_BINTIME.
+
+Mon Feb 23 20:18:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (inspect_timeval_as_abstime): use time_t
+ variable to avoid a warning on environments which use long as
+ tv_sec as NetBSD.
+
+Mon Feb 23 15:53:30 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_index, rb_ary_rindex): We know that argc is not
+ zero when we reach here.
+
+ * array.c (rb_ary_initialize, rb_ary_index): Shrink a double
+ space. (NFC)
+
+Mon Feb 23 14:47:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (mv): added description for the case of
+ different partitions. [ruby-talk:329072]
+
+Mon Feb 23 10:19:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (USE_SYMBOL_AS_METHOD_NAME): Module#methods,
+ #singleton_methods and so on return Symbols. [ruby-talk:328775]
+
+Mon Feb 23 10:15:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja: added macros for the Compatibilities.
+
+Mon Feb 23 03:19:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: define SO_TIMESTAMPNS and SCM_TIMESTAMPNS
+ if available.
+
+Mon Feb 23 02:54:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_inspect): use SCM_TIMESTAMP instead
+ of SO_TIMESTAMP. SCM_TIMESTAMP != SO_TIMESTAMP on MacOS X.
+
+Mon Feb 23 02:44:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (inspect_timeval_as_abstime): new function.
+ (ancillary_inspect): use it for SO_TIMESTAMP.
+
+Mon Feb 23 02:26:44 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_timeval_as_interval): renamed from
+ inspect_timeval.
+
+Mon Feb 23 02:10:09 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_timeval): fix the size test.
+
+Sun Feb 22 22:42:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (tr_trans): should recalculate coderange.
+ [ruby-core:22326] (reopened at [ruby-core:22328])
+
+Sun Feb 22 20:09:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_linger): message refined.
+
+Sun Feb 22 19:28:08 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (s_recvfrom): use rb_io_wait_readable after
+ recvfrom.
+
+Sun Feb 22 18:40:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_errno): new function.
+ (sockopt_inspect): use inspect_errno for SO_ERROR.
+
+Sun Feb 22 15:11:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * re.c (Init_Regexp): define Regexp::FIXEDENCODING. [ruby-dev:38066]
+
+Sun Feb 22 14:33:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (tr_trans): should not be affected by the encoding of
+ replacement unless actually modified. [ruby-talk:328967]
+ [ruby-core:22326]
+
+Sun Feb 22 13:38:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/init.c (s_recvfrom_nonblock): handles EAGAIN too.
+
+ * ext/socket/init.c (s_accept_nonblock): ditto, and EPROTO depends
+ on platforms.
+
+Sun Feb 22 13:03:12 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * eval.c (ruby_options): the evaluator now expects iseq instead of tree.
+
+ * ruby.c (ruby_process_options): ditto.
+
+Sun Feb 22 13:03:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (configure): unset PWD to use symlink to building
+ directory.
+
+ * Makefile.in (up): cd doesn't need LC_TIME, VCS needs.
+
+Sun Feb 22 10:43:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (method_missing): should not pop cfp if missing method
+ is method_missing. [ruby-core:22298]
+
+ * vm_eval.c (rb_raise_method_missing): new function to directly
+ raise NoMethodError.
+
+ * vm_insnhelper.c (vm_call_method): fixed the case method_missing
+ is missing.
+
+Sun Feb 22 02:15:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): handle EMSGSIZE as
+ well.
+
+Sun Feb 22 02:03:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): check max length
+ overflow.
+
+Sun Feb 22 01:52:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): don't call
+ discard_cmsg_resource when EMFILE.
+
+Sun Feb 22 01:48:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): gc when SCM_RIGHTS
+ hit the file descriptor limit.
+
+Sun Feb 22 00:51:58 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_getpartial): error message describes what should be
+ waited after nonblocking error.
+ (rb_io_write_nonblock): ditto.
+
+ * ext/socket/init.c (s_recvfrom_nonblock): ditto.
+ (s_accept_nonblock): ditto.
+
+ * ext/socket/socket.c (sock_connect_nonblock): ditto.
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): ditto.
+ (bsock_recvmsg_internal): ditto.
+
+Sun Feb 22 00:31:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): check recvmsg error
+ earlier.
+
+Fri Feb 20 23:28:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * util.c (rv_alloc, freedtoa): use our normal xmalloc()/xfree() because
+ couldn't free the returned pointer from ruby_dtoa().
+
+ * missing/vsnprintf.c (cvt): receive buffer and use/return it instead
+ of returning the pointer returned from BSD__dtoa().
+
+ * missing/vsnprintf.c (BSD_vfprintf): pass buf to cvt() as the buffer.
+ [ruby-core:22184]
+
+Thu Feb 19 22:59:09 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (make_io_for_unix_rights): cmsg_len may be
+ bigger than msg_controllen on 4.4BSD at least.
+ freeze unix_rights array.
+
+Thu Feb 19 22:17:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): fix exception.
+
+Thu Feb 19 21:13:03 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_unix_rights): method renamed.
+
+Thu Feb 19 15:47:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in: extracted from Makefile.in.
+
+ * configure.in (fake.rb): prefixed with $(arch)-.
+
+Thu Feb 19 15:39:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspbres_verify): OCSP_basic_verify
+ returns positive value on success, not non-zero. [ruby-core:21762]
+
+Thu Feb 19 15:17:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (@@systmpdir): File.expand_path also joins paths.
+
+Thu Feb 19 15:14:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_each_group): defines only when Etc::Group is
+ available.
+
+Thu Feb 19 15:11:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (translit_char): moved from ruby.c.
+
+ * load.c (load_ext): transliterates file separators and back if
+ needed.
+
+ * symbian/setup (DLN_NEEDS_ALT_SEPARATOR): defined.
+
+Thu Feb 19 14:48:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, */Makefile.sub (LOAD_RELATIVE): moved from ruby.c
+
+Thu Feb 19 14:39:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (darwin): uses -unexported_symbol option of ld instead
+ of objcopy
+
+ * configure.in (darwin): makes dylib instead of so.
+
+Thu Feb 19 14:22:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): added phony targets.
+
+ * lib/mkmf.rb (create_makefile): creates target directories before
+ copying. [ruby-core:21958]
+
+ * lib/mkmf.rb (create_makefile): removes directories in the depth
+ order.
+
+Thu Feb 19 13:56:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_home_dir): checks if HAVE_PWD_H. [ruby-dev:38049]
+
+Thu Feb 19 08:45:48 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/socket/rubysocket.h: add "#include <sys/stat.h>"
+
+Thu Feb 19 03:42:48 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_rights): new method.
+ (make_io_for_rights): new function to allocate
+ IOs for FDs in SCM_RIGHTS message.
+ (bsock_recvmsg_internal): use make_io_for_rights. So the FDs can be
+ closed by GC.
+
+Thu Feb 19 03:28:59 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * README.EXT, README.EXT.ja: Improve the document about
+ rb_scan_args() even more.
+
+Thu Feb 19 03:12:51 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_file_exhaustive.rb: skip some tests if euid == 0.
+ a patch from Lucas Nussbaum in [ruby-core:22209].
+
+Thu Feb 19 03:00:49 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * README.EXT, README.EXT.ja: Improve the document about
+ rb_scan_args().
+
+Wed Feb 18 22:47:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (discard_cmsg_resource): new function to close
+ file descriptors in control message.
+ (bsock_recvmsg_internal): call discard_cmsg_resource before retrying
+ recvmsg.
+
+Wed Feb 18 21:47:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): prevent misalignment.
+
+Wed Feb 18 21:34:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): prevent misalignment.
+
+Wed Feb 18 21:09:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): reduce code on
+ environments which have no control message.
+
+Wed Feb 18 20:27:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (OBJCOPY): set ac_cv_prog_ac_ct_OBJCOPY to do nothing
+ on cygwin and mingw because symbols are exported by def file.
+
+Wed Feb 18 15:35:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_chown): use chown unless HAVE_FCHOWN.
+
+ * io.c (pipe_open): sarg is always used unless HAVE_FORK.
+
+Wed Feb 18 15:23:34 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * bootstraptest/runner.rb: Use RUBY_DESCRIPTION if defined.
+
+Wed Feb 18 14:33:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_resurrect), string.c (rb_str_resurrect): new
+ functions based on [ruby-dev:37983]
+
+ * insns.def (putstring, duparray): use rb_{ary,str}_resurrect().
+
+ * iseq.c (iseq_data_to_ary): needs to result TS_VALUE.
+
+Wed Feb 18 12:35:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): fix for spaces before extension.
+ [ruby-dev:38044]
+
+Wed Feb 18 12:00:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): suppress a warning. named magic
+ numbers.
+
+Wed Feb 18 10:29:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): do not delete main thread from
+ living_threads. [ruby-core:19385], [ruby-core:22158]
+
+Wed Feb 18 01:05:05 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl: avoid cyclic require.
+
+ * ext/openssl/lib/openssl/ssl-internal.rb: renamed from ssl.rb
+
+ * ext/openssl/lib/openssl/x509-internal.rb: renamed from x509.rb.
+
+ * lib/net/imap.rb: require openssl, instead of openssl/ssl.
+
+ * lib/net/pop.rb: require openssl, instead of openssl/ssl.
+
+ [ruby-dev:38018]
+
+Wed Feb 18 00:55:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (Etc::Passwd.each, Etc::Group.each): new methods.
+ [ruby-dev:37999]
+
+Tue Feb 17 23:25:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): make the padding
+ removing only on NetBSD.
+
+Tue Feb 17 19:39:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): should not remove the
+ last padding of control messages, basically.
+
+Tue Feb 17 12:50:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_shared_replace): no need for
+ str_make_independent.
+
+Tue Feb 17 05:41:08 2009 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: fix to add "ensure" codes across "while" clause
+ before "return" expression. [ruby-dev:37967]
+
+ * bootstraptest/test_flow.rb: add a test.
+
+Tue Feb 17 01:53:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate rb_define_const directly for
+ rdoc.
+
+ * ext/.document: add socket/constdefs.c.
+
+ * ext/socket/constants.c (sock_define_const): removed.
+ (sock_define_uconst): ditto.
+ (rb_mSockConst): new static variable.
+
+Mon Feb 16 23:14:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal) [OpenBSD]: don't remove
+ the last padding to prevent sendmsg failure in test_udp_server in
+ test/socket/test_socket.rb on OpenBSD 4.4.
+
+Mon Feb 16 21:59:32 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup: Update Symbian config to match recent changes in missing/alloca.c
+
+Mon Feb 16 17:04:14 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * class.c (rb_scan_args), README.EXT, README.EXT.ja: Add support
+ for specifying the number of the trailing mandatory arguments.
+ Update the documents accordingly. [ruby-dev:37995]
+
+Mon Feb 16 16:46:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c (set_debug_option): added rtc_error option.
+
+ * win32/Makefile.sub (CRTDEFFLAGS): separated from DEFS.
+
+ * win32/win32.c (rtc_error_handler): ignores RTC errors unless
+ rtc_error debug option is given.
+
+ * win32/win32.c (rb_w32_sysinit): suppress useless CRT assertions.
+ [ruby-core:22116]
+
+Sun Feb 15 21:43:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct#new_ostruct_member): checks if frozen.
+ [ruby-talk:328195], [ruby-core:22142]
+
+Sun Feb 15 21:22:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions): aliases
+ assert_not_ methods.
+
+Sun Feb 15 16:57:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (SecureRandom.urlsafe_base64): new method.
+
+Sun Feb 15 14:58:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * hash.c (hash_i): use Murmurhash.
+
+Sun Feb 15 11:45:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_define_hooked_variable): suppress false assertion
+ with VC9. [ruby-core:22115]
+
+Sun Feb 15 08:35:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/test_pp.rb: extract from lib/pp.rb.
+
+ * test/test_prettyprint.rb: extract from lib/prettyprint.rb.
+
+ * test/test_tsort.rb: extract from lib/tsort.rb.
+
+Sun Feb 15 06:34:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.parse): raise ArgumentError if Date._parse don't
+ extract date information. [ruby-core:20912]
+
+Sun Feb 15 04:48:08 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_hash_uint32, rb_hash_uint, rb_hash_start, rb_hash_end),
+ include/ruby/intern.h: add Murmurhash API. [ruby-dev:37784]
+
+ * complex.c (nucomp_hash), array.c (rb_ary_hash), time.c (time_hash),
+ string.c (rb_str_hash), object.c (rb_obj_hash), range.c
+ (range_hash), struct.c (rb_struct_hash), hash.c (rb_any_hash),
+ rational.c (nurat_hash): use Murmurhash. [ruby-dev:37784]
+
+Sun Feb 15 03:50:21 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * hash.c (rb_hash): always return a fixnum value because a return
+ value of rb_hash may be used as a hash value itself and bignums have
+ no unique VALUE.
+
+ * test/ruby/test_hash.rb: add a test for above.
+
+Sun Feb 15 00:45:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_uniq_bang, rb_ary_uniq): unique by the result of
+ given block. [ruby-dev:37998]
+
+Sun Feb 15 00:39:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_resize_capa): should not overwrite outside embedded
+ array.
+
+Sat Feb 14 20:18:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/test_time.rb: extracted from lib/time.rb.
+
+Sat Feb 14 19:20:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb: obsolete methods removed.
+ [ruby-core:21564]
+
+Sat Feb 14 15:46:01 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/pathname.rb (Pathname#binread): added. [ruby-dev:37952]
+
+Sat Feb 14 13:14:18 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * iseq.c: remove nil parameter from Proc#parameters
+ after rest appeared.
+
+Sat Feb 14 07:23:52 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_external_str_new_with_enc): change evaluation order
+ for speed.
+
+Sat Feb 14 02:20:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/sockport.h (SET_SA_LEN): cast to void for suppressing a
+ warning.
+
+Fri Feb 13 23:37:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/win32/lib/Win32API.rb (Win32API#initialize): DL.dlopen
+ raises DLError.
+
+Fri Feb 13 21:13:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (Init_socket): define TCPServer#listen and
+ UNIXServer#listen here for rdoc.
+
+Fri Feb 13 20:59:48 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (extract_ipv6_pktinfo): set sa_len for 4.4BSD.
+
+Fri Feb 13 15:34:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (simple_default_value): removed. default values of optional
+ parameters are not available still now. [ruby-dev:37980]
+
+Fri Feb 13 15:11:11 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (eval_string_with_cref): use rb_vm_get_ruby_level_next_cfp()
+ instead of vm_get_ruby_level_caller_cfp(). checking a upper frame
+ is not enough. [ruby-dev:37984]
+
+ * proc.c, vm_core.h: declare rb_vm_get_ruby_level_next_cfp()
+ on vm_core.h.
+
+Fri Feb 13 15:01:40 2009 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_alive_p): fix to return true instead of 0.
+ [ruby-dev:37991]
+
+ * test/ruby/test_fiber.rb: add a test for Fiber#alive?
+
+Fri Feb 13 09:43:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_cv_func_flock): using flock defined in
+ win32/win32.c on mingw.
+
+Fri Feb 13 01:45:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_sequence, compile_dstr_fragments),
+ (iseq_compile_each): hides other internal objects.
+
+ * compile.c (iseq_compile_each): just freeze xstr.
+
+Fri Feb 13 00:48:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defineclass): try to autoload const to be overridden.
+
+Thu Feb 12 23:22:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_socket.rb (test_udp_server): filter out unreachable
+ addresses. [ruby-dev:37970]
+
+Thu Feb 12 22:51:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (hide_obj): OBJ_FREEZE() is not an expression. a patch
+ from nagachika <nagachika00 AT gmail.com> at [ruby-dev:37977].
+
+ * compile.c (insn_set_sc_state): fixed typo.
+
+Thu Feb 12 12:36:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_getpeereid): implemented for Solaris
+ using getpeerucred.
+
+ * ext/socket/extconf.rb: check ucred.h and getpeerucred.
+
+ * ext/socket/rubysocket.h: include ucred.h if available.
+
+Thu Feb 12 19:42:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (compile_array_, defined_expr, iseq_compile_each): hide
+ and freeze internal literal objects, to prevent from modifying.
+ [ruby-dev:37959]
+
+ * iseq.c (insn_operand_intern): copy internal literal objects.
+
+ * insns.def (putstring, duparray): ditto.
+
+ * string.c (rb_str_replace): exported.
+
+Thu Feb 12 17:17:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_ungetc): calculates new position
+ before reallocation. [Bug#1099]
+
+Thu Feb 12 16:50:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: a patch to build on GNU/kOpenSolaris from Rober
+ Millan at [ruby-core:21888].
+
+Thu Feb 12 15:28:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * iseq.c (simple_default_value): allow plain strings as default
+ values.
+
+Wed Feb 11 18:09:41 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (define_final, undefine_final): shouldn't add/remove finalizer
+ of frozen objects.
+
+ * gc.c (undefine_final): should remove FL_FINALIZE flag.
+ [ruby-dev:37964] (also see [ruby-dev:37959])
+
+Wed Feb 11 17:37:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.udp_server_sockets): call the block
+ if given. close the sockets when the block exits.
+ (Socket.udp_server_loop): use udp_server_sockets in block form.
+
+Wed Feb 11 17:34:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets): call the block
+ if given. close the sockets when the block exits.
+ (Socket.tcp_server_loop): use tcp_server_sockets in block form.
+
+Wed Feb 11 17:01:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.unix_server_loop): use
+ unix_server_socket with a block.
+
+Wed Feb 11 16:54:26 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.unix_server_socket): close the
+ socket when the block exits.
+
+Wed Feb 11 16:50:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.unix_server_socket): call the block
+ if given. remove the socket file when the block exits.
+
+Wed Feb 11 16:44:20 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_s_ip_pktinfo): make 3rd argument
+ optional.
+
+Wed Feb 11 15:47:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_make_shared): returns shared root array itself, and
+ frozen array can be shared.
+
+Wed Feb 11 14:46:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (setspecial, putstring): fixed typos in rdoc.
+
+ * insns.def (toregexp): uses rb_ary_tmp_new(), and clears it after
+ used.
+
+Wed Feb 11 14:08:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (anc_inspect_socket_rights): return 1 on
+ success. 0 on failure.
+ (anc_inspect_passcred_credentials): ditto.
+ (anc_inspect_socket_creds): ditto.
+ (anc_inspect_socket_creds): ditto.
+ (anc_inspect_socket_creds): ditto.
+ (anc_inspect_ip_recvdstaddr): ditto.
+ (anc_inspect_ip_pktinfo): ditto.
+ (anc_inspect_ipv6_pktinfo): ditto.
+ (ancillary_inspect): check family.
+
+Wed Feb 11 12:55:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (anc_inspect_ip_pktinfo): make result bit
+ succinct.
+ (Init_ancdata): fix number of arguments.
+
+Wed Feb 11 11:47:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c (Init_ipsocket): undef getpeereid at IPSocket.
+
+Wed Feb 11 10:16:34 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: check getpeereid.
+
+ * ext/socket/basicsocket.c (bsock_getpeereid): new method.
+
+Wed Feb 11 09:58:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket::UDPSource#inspect): fix variable
+ name.
+
+Wed Feb 11 00:38:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_gethostname): use HOST_NAME_MAX.
+
+ * ext/socket/raddrinfo.c (make_ipaddr): local variable renamed.
+
+Tue Feb 10 23:44:53 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (struct recvfrom_arg): use struct
+ sockaddr_storage.
+ (recvfrom_blocking): follow struct recvfrom_arg change.
+ (s_recvfrom): ditto.
+ (s_recvfrom_nonblock): use struct sockaddr_storage.
+
+ * ext/socket/socket.c (sock_accept): use struct sockaddr_storage.
+ (sock_accept_nonblock): ditto.
+ (sock_sysaccept): ditto.
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): use struct
+ sockaddr_storage.
+
+Tue Feb 10 23:30:32 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_getpeername): use struct
+ sockaddr_storage.
+ (bsock_local_address): ditto.
+ (bsock_remote_address): ditto.
+
+Tue Feb 10 21:26:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.udp_server_sockets): new method.
+ (Socket.udp_server_loop_on): new method.
+ (Socket.udp_server_loop): new method
+ (Socket.ip_sockets_port0): extracted from tcp_server_sockets_port0.
+ (Socket::UDPSource): new class.
+
+Tue Feb 10 21:14:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sockaddr_obj): fill pfamily.
+
+Tue Feb 10 21:09:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_s_bool): new method.
+ (sockopt_bool): new method.
+
+Tue Feb 10 20:58:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_family_m): renamed from sockopt_family.
+ (sockopt_level_m): renamed from sockopt_level.
+ (sockopt_optname_m): renamed from sockopt_optname.
+ (inspect_local_peercred): follow the renaming.
+ (Init_sockopt): ditto.
+
+Tue Feb 10 20:56:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (anc_inspect_socket_creds): refactored to avoid
+ a rb_str_cat2 call.
+
+Tue Feb 10 04:34:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (when): makes parentheses balanced.
+
+Tue Feb 10 01:28:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ip_cmsg_type_to_sym): renamed from
+ cmsg_type_to_sym.
+
+Tue Feb 10 01:22:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_inspect): refactored.
+
+Tue Feb 10 01:02:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate intern_family_noprefix.
+
+ * ext/socket/option.c (sockopt_inspect): use intern_family_noprefix
+ not to show AF_ prefix.
+
+ * ext/socket/ancdata.c (ancillary_inspect): ditto.
+
+Mon Feb 9 23:21:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/constants.c (level_arg): use unknown_level_to_int for
+ non internet protocol.
+ (optname_arg): use only so_optname_to_int for non internet protocol.
+ (cmsg_type_arg): use only scm_optname_to_int for non internet
+ protocol.
+
+ * ext/socket/mkconstants.rb: generate unknown_level_to_int.
+ rename iplevel_to_int to ip_level_to_int.
+
+Mon Feb 9 23:04:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: rename level_to_int to iplevel_to_int.
+ rename intern_level to intern_iplevel.
+
+ * ext/socket/constants.c: follow the renaming.
+
+ * ext/socket/option.c: ditto.
+
+ * ext/socket/ancdata.c: ditto.
+
+Mon Feb 9 22:52:13 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (level_arg): add family argument.
+ (optname_arg): ditto.
+ (cmsg_type_arg): ditto.
+ (rb_sock_getfamily): declared.
+
+ * ext/socket/constants.c (level_arg): add family argument.
+ (optname_arg): ditto.
+ (cmsg_type_arg): ditto.
+
+ * ext/socket/init.c (rb_sock_getfamily): defined.
+
+ * ext/socket/option.c (sockopt_initialize): give family for level_arg
+ and optname_arg.
+ (sockopt_s_int): ditto.
+
+ * ext/socket/basicsocket.c (bsock_setsockopt): ditto.
+ (bsock_getsockopt): ditto.
+
+ * ext/socket/ancdata.c (ancillary_initialize): ditto.
+ (ancillary_s_int): ditto.
+ (ancillary_cmsg_is_p): ditto.
+ (bsock_sendmsg_internal): ditto.
+ (bsock_recvmsg_internal): use rb_sock_getfamily.
+
+Mon Feb 9 21:48:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_inspect): show address family.
+
+Mon Feb 9 20:19:36 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_getsockname): use sockaddr_storage.
+
+Mon Feb 9 20:11:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (load_conv_function51932): fixed for the
+ case IMultiLanguage is not available. [ruby-dev:37950]
+
+Mon Feb 9 20:04:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_int): return 1/0 on success/failure.
+ (inspect_uint): ditto.
+ (inspect_linger): ditto.
+ (inspect_socktype): ditto.
+ (inspect_timeval): ditto.
+ (inspect_peercred): ditto.
+ (inspect_local_peercred): ditto.
+ (sockopt_inspect): refactored.
+
+Mon Feb 9 20:00:26 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: more constants for Solaris.
+
+Mon Feb 9 19:59:18 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_getsockopt): refine address family
+ examination.
+
+Mon Feb 9 19:52:32 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_initialize): argument conversion
+ reordered.
+
+Mon Feb 9 19:46:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_initialize): add family argument.
+ (ancdata_new): ditto.
+ (ancillary_s_int): ditto.
+ (ancillary_family): new function.
+ (ancillary_family_m): new method.
+ (ancillary_s_ip_pktinfo): follow ancdata_new change.
+ (ancillary_s_ipv6_pktinfo): ditto.
+ (bsock_recvmsg_internal): examine the socket address family.
+
+Mon Feb 9 11:31:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_encoding_set): ignore second argument when external and
+ internal are same. [ruby-dev:37939]
+
+Mon Feb 9 09:05:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_local_peercred): check version.
+ (sockopt_inspect): suppress warning.
+
+Mon Feb 9 02:04:03 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_peercred): struct ucred contains
+ effective uid/gid.
+
+Mon Feb 9 00:44:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_inspect): add ifdef guard for
+ LOCAL_PEERCRED.
+
+Mon Feb 9 00:37:06 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_local_peercred): cr_uid is a effective
+ uid, not a real uid.
+
+Mon Feb 9 00:30:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: check sys/param.h and sys/ucred.h.
+
+ * ext/socket/rubysocket.h: include sys/param.h and sys/ucred.h.
+
+ * ext/socket/option.c (inspect_local_peercred): new function to show
+ LOCAL_PEERCRED socket option on FreeBSD.
+ (sockopt_inspect): show as LOCAL_* socket option if AF_UNIX and level
+ is 0.
+
+Mon Feb 9 00:01:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (sockopt_new): add family argument.
+
+ * ext/socket/option.c (sockopt_initialize): add vfamily argument.
+ (sockopt_new): add family argument and record it in the object.
+ (sockopt_family): new method.
+ (sockopt_s_int): add vfamily argument.
+ (sockopt_inspect): show family.
+
+ * ext/socket/basicsocket.c (bsock_getsockopt): check address family
+ using getsockname.
+
+Sun Feb 8 23:37:17 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enumerator.c (enumerator_with_index): receives one argument which
+ represents a start offset. [ruby-dev:37921]
+
+Sun Feb 8 23:28:05 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * include/ruby/st.h, st.c: order entries by a linked list instead of
+ a loop to fix iteration miss when hash is modified during iteration.
+ [ruby-dev:37910]
+
+Sun Feb 8 23:22:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_peercred): new function to show
+ SO_PEERCRED socket option on GNU/Linux.
+
+Sun Feb 8 22:44:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/backward/rubysig.h (rb_thread_blocking_region_begin),
+ (rb_thread_blocking_region_end): marked as deprecated.
+
+ * include/ruby/backward/rubysig.h (TRAP_BEG): fix for C++. a
+ patch from Aman Gupta at [ruby-core:21934]
+
+Sun Feb 8 21:47:50 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: check struct cmsgcred.
+
+ * ext/socket/ancdata.c (anc_inspect_passcred_credentials): add
+ "(ucred)".
+ (anc_inspect_socket_creds): show struct cmsgcred too, for FreeBSD.
+
+Sun Feb 8 21:05:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/drb/extservm.rb (DRb::ExtServManager#invoke_service_command):
+ detach spawned process. [ruby-dev:37936]
+
+Sun Feb 8 20:30:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: check struct sockcred.
+
+ * ext/socket/ancdata.c (anc_inspect_socket_creds): new function to
+ show SCM_CREDS on NetBSD.
+
+Sun Feb 8 19:05:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/backward/rubysig.h: extern "C" was missing.
+ [ruby-core:21929]
+
+Sun Feb 8 18:46:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (anc_inspect_passcred_credentials): new
+ function to show SCM_CREDENTIALS on GNU/Linux.
+
+Sun Feb 8 18:34:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_s_binread): ensures file path. [ruby-dev:37940]
+
+Sun Feb 8 13:52:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (init_unix_addrinfo): add socktype argument.
+ (addrinfo_initialize): follow init_unix_addrinfo change.
+ (addrinfo_s_unix): add optional argument: socktype
+
+Sun Feb 8 13:09:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_APPEND_OPTION, RUBY_APPEND_OPTIONS),
+ (RUBY_PREPEND_OPTION, RUBY_PREPEND_OPTIONS): add option(s)
+ without duplication.
+
+ * configure.in (RUBY_DEFINE_IF): changed parameter order, now
+ condition comes first.
+
+ * configure.in (universal_binary): checks architecture macros, and
+ improved thin load paths.
+
+Sun Feb 8 09:41:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: gets extout and arch from rbconfig.rb.
+
+Sat Feb 7 21:26:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_addrinfo.rb (test_family_addrinfo): don't use
+ www.ruby-lang.org.
+ http://d.hatena.ne.jp/nagachika/20090204/working_for_0f0e
+
+Sat Feb 7 18:02:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (--with-arch): added new option to support
+ universal binary. replaced --enable-fat-binary option which
+ didn't work actually.
+
+ * configure.in (RUBY_FUNC_ATTRIBUTE): added conditional test.
+
+ * configure.in (ac_cv_type_getgroups): declared because getgroups()
+ fills rest of the buffer with garbage on Rosetta.
+
+ * configure.in (alloca): defines only for powerpc, but always
+ create empty object to suppress ld warning.
+
+ * configure.in (LIBRUBY_DLDFLAGS): set compatibility version with
+ TEENY.
+
+ * configure.in (CFLAGS, LDFLAGS): separates ARCH_FLAG.
+
+ * configure.in (arch): renamed to "universal" from "fat".
+
+ * Makefile.in (ARCH_FLAG): added.
+
+ * include/ruby/defines.h (WORDS_BIGENDIAN): uses
+ AC_APPLE_UNIVERSAL_BUILD.
+
+ * missing/alloca.c (alloca): defines only if C_ALLOCA is defined.
+
+Sat Feb 7 12:31:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: added --precommand and --show options.
+
+ * runruby.rb: added --cpu option.
+
+ * runruby.rb: skips version check in rbconfig.rb.
+
+Sat Feb 7 11:44:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_header): needs dependent headers if trying to
+ compile.
+
+ * ext/socket/extconf.rb: net/if.h depends on other headers.
+
+Sat Feb 7 04:02:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * dir.c (dir_read): don't disable rdoc.
+
+Fri Feb 6 23:28:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fread): use rb_io_wait_readable for retry
+ avoid Errno::EINTR on ruby -e 'trap(:CHLD) {}; spawn("sleep 1"); STDIN.read'
+
+Fri Feb 6 22:36:11 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * thread_pthread.c (native_thread_create) [__SYMBIAN32__]: reduced pthread stack size.
+
+ * thread_pthread.c (thread_timer) [__SYMBIAN32__]: compiled out unsupported yet signal-related functionality.
+
+ * io.c (pipe_open) [__SYMBIAN32__]: fixed compile time error.
+
+Fri Feb 6 22:11:46 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * include/ruby/defines.h [__SYMBIAN32__]: included <sys/select.h> for fd_set definition
+
+Fri Feb 6 21:58:24 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/missing-pips.c: added a stub for missing PIPS function execl.
+
+ * process.c (rb_proc_exec) [__SYMBIAN32__]: removed conditional around execl function call.
+
+Fri Feb 6 20:37:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (register_sigaltstack): ignore sigaltstack error.
+ It fails on OpenBSD 4.4 when pthread library is linked.
+
+Fri Feb 6 18:18:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_readdir_with_enc): fallback to OS's conversion
+ when ASCII-8BIT is passed.
+
+Fri Feb 6 17:19:23 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{dir.h, win32.c} (rb_w32_readdir_with_enc): new function to
+ read entry with specified enc.
+
+ * win32/win32.c (readdir_internal): extract from rb_w32_opendir().
+
+ * win32/win32.c (opendir_internal): extract from rb_w32_readdir().
+
+ * dir.c (dir_read, dir_each): use new READDIR macro instead of readdir()
+ to pass enc for special version of readdir, such as above.
+
+Fri Feb 6 12:11:24 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (process_options): set initial default_external before -r.
+
+Fri Feb 6 12:03:47 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (process_options): -K and -E in shebang should be reflect to
+ default_external. [ruby-dev:37920]
+
+Fri Feb 6 07:52:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (chfunc): type fixed.
+
+Fri Feb 6 02:51:59 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_codepoint): update RDoc for
+ String#codepoints. a patch from Radoslaw Bulat in
+ [ruby-core:21835]
+
+Fri Feb 6 01:09:13 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (cont_mark, cont_capture, cont_restore_1): use #else instead
+ of #elif. a patch from NISHIMATSU Takeshi <t_nissie at yahoo.co.jp>
+ in [ruby-list:45856].
+
+Thu Feb 5 20:28:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_run_exec_options_err): renamed from
+ rb_run_exec_options.
+ (rb_exec_err): renamed from rb_exec.
+ (rb_fork_err): renamed from rb_fork.
+ (rb_spawn_err): renamed from rb_spawn.
+ (rb_run_exec_options): declared with 1.9.1 compatible signature.
+ (rb_exec): ditto.
+ (rb_fork): ditto.
+ (rb_spawn): ditto.
+
+ * process.c (rb_run_exec_options_err): renamed from
+ rb_run_exec_options.
+ (rb_exec_err): renamed from rb_exec.
+ (rb_fork_err): renamed from rb_fork.
+ (rb_spawn_err): renamed from rb_spawn.
+ (rb_run_exec_options): defined.
+ (rb_exec): ditto.
+ (rb_fork): ditto.
+ (rb_spawn): ditto.
+
+ * io.c: follow above change.
+
+ * ext/pty/pty.c: follow above change.
+
+ [ruby-dev:37893]
+
+Thu Feb 5 19:58:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket: AddrInfo is renamed to Addrinfo. [ruby-dev:37876]
+
+Thu Feb 5 16:18:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_SITE_LIB_PATH, RUBY_VENDOR_LIB_PATH): fix for
+ NetBSD.
+
+Thu Feb 5 16:04:29 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): follow recent changes about paths.
+
+Thu Feb 5 14:26:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MAJOR, MINOR, TEENY): uses RUBY_VERSION_*.
+
+ * mkconfig.rb (prefix): uses ruby_version in config.status.
+
+Thu Feb 5 12:24:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_uniq): gets rid of copying.
+
+Thu Feb 5 12:01:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_add_hash): split from ary_make_hash().
+
+ * array.c (ary_make_hash): hide a Hash used internally.
+
+ * array.c (ary_recycle_hash): clears internally used hash. this
+ name came from [ruby-dev:37908].
+
+ * array.c (rb_ary_diff, rb_ary_and, rb_ary_or, rb_ary_uniq_bang):
+ recycle hashes.
+
+Thu Feb 5 11:21:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_LIB_VERSION): added for library version, to
+ split from core version. [ruby-dev:37748]
+
+ * configure.in (RUBY_LIB_PATH, etc): moved actual version
+ dependent stuff to version.c.
+
+ * ruby.c (ruby_init_loadpath_safe): ditto.
+
+ * version.c (ruby_initial_load_paths): moved initial load path
+ version depending on version from ruby.c.
+
+ * version.h (RUBY_VERSION_{MAJOR,MINOR,TEENY}): now mean library
+ and API version, and reverted to 1.9.1. [ruby-dev:37889]
+
+Thu Feb 5 07:39:33 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/readline/readline.c (Init_readline): remove_history(0) may be
+ NULL. [ruby-dev:37891]
+
+Thu Feb 5 03:55:22 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (LOCALTIME): should call tzset() before localtime_r().
+ [ruby-dev:37896]
+
+Thu Feb 5 02:12:35 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/configure.bat: Updated Symbian configuration procedure to
+ avoid creating files outside build directory
+
+ * symbian/pre-build: ditto
+
+ * symbian/setup: ditto
+
+ * symbian/rubyu.def: removed
+
+Thu Feb 5 01:44:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): refine error message for
+ undefined conversion. [ruby-core:21828]
+
+Thu Feb 5 01:18:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_socketpair): make 3rd argument optional.
+
+ * ext/socket/unixsocket.c (unix_s_socketpair): follow the above
+ change.
+
+ * ext/socket/rubysocket.h (sock_s_socketpair): ditto.
+
+Thu Feb 5 00:09:39 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_ipv6_to_ipv4): new method.
+
+Wed Feb 4 21:59:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): show U+XXXX form for undefined
+ conversion error from UTF-8.
+
+Wed Feb 4 21:57:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_dump): use MBCLEN_CHARFOUND_P properly.
+
+Wed Feb 4 21:55:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb: refine success message.
+
+Wed Feb 4 19:10:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (id.h): updates from parse.h.
+
+Wed Feb 4 11:45:06 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb: shouldn't export DllMain.
+ reported at http://pc11.2ch.net/test/read.cgi/tech/1233686068/21
+
+Wed Feb 4 10:12:05 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD_vfprintf): should support 't' format
+ modifier to handle PRIdPTRDIFF. thanks for the info from
+ Kazuhiro NISHIYAMA. [ruby-core:21807]
+
+Wed Feb 4 01:28:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: fix struct in_pktinfo and struct in6_pktinfo
+ detection.
+
+Wed Feb 4 00:32:59 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb(test_getpwnam, test_getgrgid, test_getgrnam):
+ support an environment that has duplicative entries. a patch from
+ Tomoyuki Chikanaga <chikanag at nippon-control-system.co.jp> in
+ [ruby-dev:37882].
+
+Wed Feb 4 00:17:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets_port0): skip
+ socket creation error.
+
+Tue Feb 3 23:37:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): resets EOF flag after parse.
+
+Tue Feb 3 23:13:34 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace): always returns non-nil array if lev is
+ negative. [ruby-core:21795]
+
+Tue Feb 3 21:19:06 2009 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: checked rl_set_screen_size and
+ rl_get_screen_size.
+
+ * ext/readline/readline.c (readline_s_set_screen_size): added
+ Readline.set_screen_size.
+
+ * ext/readline/readline.c (readline_s_get_screen_size): added
+ Readline.get_screen_size.
+
+Tue Feb 3 21:07:19 2009 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (readline_s_set_completion_proc): set
+ default if proc is nil. fix #1095
+
+Tue Feb 3 16:36:06 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * array.c (rb_ary_sort_by_bang): RDoc update.
+
+ * NEWS: add Array#sort_by!.
+
+Tue Feb 3 16:23:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets_port0): new
+ private function for allocating same port both IPv4 and IPv6.
+ (Socket.tcp_server_sockets): use tcp_server_sockets_port0 for port 0.
+
+Tue Feb 3 14:12:10 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: validate data before sending to a server.
+ [ruby-core:20320]
+
+Tue Feb 3 12:35:41 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (match_array): replace match_check().
+
+ * re.c (match_values_at): ditto.
+
+Tue Feb 3 12:09:08 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (hmac_md5): should use String#ord to get ascii
+ code from the one-character string.
+
+Tue Feb 3 11:25:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_lock): warn for circular require. [ruby-core:20794],
+ [ruby-core:20797]
+
+Tue Feb 3 08:35:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets): extracted from
+ Socket.tcp_server_loop.
+ (Socket.accept_loop): ditto.
+ (Socket.unix_server_socket): extracted from Socket.unix_server_loop.
+ (Socket.unix_server_loop): use Socket.accept_loop.
+
+Tue Feb 3 08:21:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_readpartial.rb (make_pipe): readpartial does not
+ work in text mode.
+
+Tue Feb 3 08:18:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (RUBYDEF): uses mkexports.rb on cygwin too.
+
+ * win32/mkexports.rb (Exports::Cygwin): added.
+
+Tue Feb 3 08:10:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (Doxyfile): moved from Makefile.in.
+
+ * template/Doxyfile.tmpl: split from Doxyfile.in.
+
+Tue Feb 3 08:01:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_write): use of cast expressions as lvalues
+ is deprecated.
+
+Tue Feb 3 07:57:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/extconf.rb (in_pktinfo, in6_pktinfo),
+ ext/socket/ancdata.c: defined in w32api/ws2tcpip.h on cygwin but
+ cannot compile for some reason.
+
+Tue Feb 3 07:02:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/langinfo.c (nl_langinfo_codeset): accepts iso-8859
+ fragment. [ruby-core:21757]
+
+Tue Feb 3 07:01:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb (patchlevel): config.status may not contain
+ PATCHLEVEL even if other version numbers exist.
+
+Mon Feb 2 23:43:00 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (Init_addrinfo): add AddrInfo#to_s as an
+ alias of AddrInfo#to_sockaddr.
+
+ * ext/socket/option.c (Init_sockopt): add Socket::Option#to_s as an
+ alias of Socket::Option#data.
+
+ [ruby-dev:37873]
+
+Mon Feb 2 21:04:13 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sort_by_bang): RDoc update. [ruby-core:21742]
+
+Mon Feb 2 20:49:24 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c: Introduce id_each to save rb_intern() and SYM2ID()
+ calls.
+
+Mon Feb 2 19:55:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_addrinfo.rb: use AddrInfo.getaddrinfo to generate
+ IPv6 address. AddrInfo.ip generates IPv4 address for IPv4 mapped
+ IPv6 address if --with-lookup-order-hack=INET.
+ [ruby-dev:37868]
+
+Mon Feb 2 19:17:16 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * doc/NEWS-1.9.1: typo fixed: collect_all -> collect.
+ [ruby-core:21706]
+
+Mon Feb 2 17:23:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (dir.o, win32.o): depend on win32/dir.h.
+
+Mon Feb 2 17:13:46 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * mkconfig.rb: patchlevel is sometimes minus.
+
+ * win32/resource.rb: ditto.
+
+Mon Feb 2 17:11:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (cmsg_type_to_sym): add #ifdef for no IPv6
+ environment.
+
+Mon Feb 2 17:05:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext): should not be infected from other
+ load paths.
+
+Mon Feb 2 16:33:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_s_home): new method. [ruby-core:21454]
+
+Mon Feb 2 16:06:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * version.h: bump up to 1.9.2 patchlevel -1.
+ yugui recommend "-1" strongly.
+
+ * lib/rubygems/version.rb: accept negative patchlevel.
+
+Mon Feb 2 14:53:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_initialize): make 3rd argument, protocol,
+ optional.
+
+Mon Feb 2 14:47:53 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sort_by_bang): new method. requested in
+ [ruby-core:21709]
+
+Mon Feb 2 14:22:56 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/constants.c (cmsg_type_arg): INET6 check.
+
+Mon Feb 2 14:18:20 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c: use INET6 instead of IPV6.
+
+Mon Feb 2 12:47:47 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/{options,raddrinfo}.c: use INET6 instead of AF_INET6 for
+ VC++6.
+
+Mon Feb 2 12:41:52 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * complex.c (f_signbit): regard NaN as a positive value.
+ [ruby-dev:37861].
+
+Mon Feb 2 12:39:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/test.rb (valid_syntax?), test/ruby/test_system.rb
+ (TestSystem::valid_syntax?): use catch and throw instead of
+ return inside BEGIN block.
+
+Mon Feb 2 11:45:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (cmsg_type_arg): declared.
+ (Init_ancdata): ditto.
+
+ * ext/socket/init.c (Init_socket_init): call Init_ancdata.
+
+ * ext/socket/constants.c (cmsg_type_arg): defined.
+
+ * ext/socket/depend: add dependency for ancdata.o.
+
+ * ext/socket/mkconstants.rb: generate scm_optname_to_int.
+ more constants.
+
+ * ext/socket/extconf.rb: add ancdata.o.
+
+ * ext/socket/ancdata.c: new file. new method
+ BasicSocket#{sendmsg,sendmsg_nonblock,recvmsg,recvmsg_nonblock}
+
+Mon Feb 2 10:57:27 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, win32/dir.h (open_dir_handle, rb_w32_opendir,
+ move_to_next_entry, rb_w32_readdir, check_valid_dir): change backend
+ API from A to W.
+
+Mon Feb 2 10:48:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_setsockopt): accept Socket::Option
+ object.
+ (bsock_getsockopt): return Socket::Option object.
+
+ * ext/socket/option.c: new file.
+
+ * ext/socket/rubysocket.h (rb_cSockOpt): declared.
+ (sockopt_new): ditto.
+ (Init_sockopt): ditto.
+
+ * ext/socket/init.c (Init_socket_init): call Init_sockopt.
+
+ * ext/socket/depend: add dependency for option.o
+
+ * ext/socket/mkconstants.rb: generate intern_level, intern_so_optname,
+ intern_ip_optname, intern_ipv6_optname, intern_tcp_optname,
+ intern_udp_optname and intern_scm_optname.
+
+ * ext/socket/extconf.rb: add option.o.
+
+Mon Feb 2 09:49:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): progname is not available at
+ initializing phase.
+
+Mon Feb 2 08:12:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb (Server#serve): gets rid of hardcoded
+ platform names.
+
+ * lib/resolv.rb (Resolv::Hosts::DefaultFileName),
+ (Resolv::DNS::Config.default_config_hash): tries win32/resolv on
+ mswin64 too.
+
+ * lib/rubygems/specification.rb (Gem::Specification#ruby_code):
+ added mswin64.
+
+ * lib/drb/extservm.rb (DRb::ExtServManager#invoke_service_command):
+ spawn is better to start a process in background.
+
+ * ext/extmk.rb: uses FNM_SYSCASE.
+
+ * instruby.rb: installs win32.h on mswin64 platform.
+ [ruby-core:21722]
+
+Mon Feb 2 07:36:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): now takes an iterator function.
+
+ * vm_core.h (rb_make_backtrace, rb_backtrace_each): added
+ prototypes.
+
+ * vm_dump.c (rb_vm_bugreport), vm_eval.c (rb_backtrace): gets rid
+ of allocating objects. [ruby-core:21619]
+
+ * vm_eval.c (rb_backtrace_each): new function which iterates over
+ each backtrace info.
+
+Mon Feb 2 06:51:36 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding): Windows' filesystem encoding is
+ sometimes ANSI code page and sometimes OEM code page. we should check
+ whether code page is used.
+
+Sun Feb 1 21:27:55 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_ipv4_private_p): new method.
+ (addrinfo_ipv4_loopback_p): ditto.
+ (addrinfo_ipv4_multicast_p): ditto.
+
+Sun Feb 1 16:10:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (Switch#summarize): strips an equal sign from
+ short option, and fills right sides in shorter lines.
+ [ruby-talk:326414]
+
+Sun Feb 1 05:19:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_const_get_0), vm_insnhelper.c (vm_get_ev_const):
+ avoids infinite self recursion autoload. [ruby-core:21696]
+
+Sat Jan 31 22:50:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb (assert_equal): show class in failure
+ message if meaningful.
+
+Sat Jan 31 22:38:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS#each_address): don't query IPv6 address
+ if the host has no global IPv6 address.
+
+Sat Jan 31 22:29:05 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (STR2CSTR): removed.
+ (rb_str2cstr): removed.
+
+ * object.c (rb_str2cstr): removed.
+
+Sat Jan 31 20:07:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_ipv6_unspecified_p): new method.
+ (addrinfo_ipv6_loopback_p): ditto.
+ (addrinfo_ipv6_multicast_p): ditto.
+ (addrinfo_ipv6_linklocal_p): ditto.
+ (addrinfo_ipv6_sitelocal_p): ditto.
+ (addrinfo_ipv6_v4mapped_p): ditto.
+ (addrinfo_ipv6_v4compat_p): ditto.
+ (addrinfo_ipv6_mc_nodelocal_p): ditto.
+ (addrinfo_ipv6_mc_linklocal_p): ditto.
+ (addrinfo_ipv6_mc_sitelocal_p): ditto.
+ (addrinfo_ipv6_mc_orglocal_p): ditto.
+ (addrinfo_ipv6_mc_global_p): ditto.
+
+Sat Jan 31 19:09:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_require_safe): raises when the path to be loaded is
+ tainted. [ruby-dev:37843]
+
+Sat Jan 31 18:08:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (optflags): defaulted to -O3 to get rid of slug of
+ gcc 4.3.
+
+Sat Jan 31 18:03:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (List#accept, parse_in_order): n option is no
+ longer needed.
+
+Sat Jan 31 14:12:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#each_child): new method.
+
+Sat Jan 31 00:07:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb
+ (Test::Unit::Assertions#assert_nothing_raised): suppress warning.
+ [ruby-core:21312]
+
+Fri Jan 30 21:49:32 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#realdirpath): new method based on the
+ patch in [ruby-dev:36560] by Akinori MUSHA.
+ [ruby-dev:36290]
+
+Fri Jan 30 18:04:23 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_write): limit write size to 32KB if the file
+ seems to be console. [ruby-core:21613]
+
+Fri Jan 30 16:12:32 2009 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/curses/curses.c (Init_curses): Curses#crmode and
+ Curses#nocrmode changes to the module function.
+ fix #916
+
+Fri Jan 30 14:31:14 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/make-snapshot (prereq): remove enc.mk from tarball because
+ BSD make checks $(srcdir)/enc.mk and try to run $(builddir)/enc.mk.
+
+Fri Jan 30 14:11:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: extract compile rules to each target for nmake.
+
+Fri Jan 30 12:59:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (RUBYDEF): depends on makefiles.
+
+ * cygwin/GNUmakefile.in (RUBYDEF): adds DATA to non-function symbols
+ which is not marked as T.
+
+Fri Jan 30 11:03:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_respond_to): gets rid of
+ overcounting. [ruby-dev:37703]
+
+Fri Jan 30 02:55:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_init_by_convpath_i): make it static.
+
+Thu Jan 29 16:22:41 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * load.c (rb_feature_provided): should not calculate len by pointer
+ subtraction because feature may be a expanded path.
+ [ruby-core:21267]
+
+Thu Jan 29 14:12:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (BASERUBY): erases RUBYOPT at the test.
+
+ * configure.in (OBJCOPY): not used on Windows.
+
+Thu Jan 29 13:16:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/securerandom.rb (SecureRandom.uuid): uses unpacked array
+ instead of string, because String#[] returns one length string.
+
+Thu Jan 29 12:29:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (FileUtils#rake_system): no longer needs workaround
+ on Windows. [ruby-core:21339]
+
+ * lib/rake/win32.rb (Rake::Win32#rake_system): ditto.
+
+ * lib/rake/win32.rb (Rake::Win32#win32_system_dir): no longer
+ needs environment variables other than APPDATA now.
+
+ * lib/rake.rb (Rake::Application#standard_system_dir): uses
+ platform specific definition on Windows system.
+
+Thu Jan 29 12:18:54 2009 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * lib/securerandom.rb: new method SecureRandom#uuid
+
+Thu Jan 29 11:22:19 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (inspect_sockaddr): if defined AF_INET6,
+ perhaps can inspect IPv6 addresses if not defined INET6.
+
+ * ext/socket/socket.c (socket_s_ip_address_list): support Windows XP
+ or later. (Win2k or earlier is still not supported)
+
+Thu Jan 29 00:24:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_run): previous change didn't resolve the
+ problem.
+
+Wed Jan 28 22:51:12 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_run): desperately guard the variable.
+ [ruby-core:20576]
+
+Wed Jan 28 15:24:11 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * math.c: SEGV is caused by implicit rb_to_float declaration
+ test_complexrational.rb: [BUG] in IA-64 architecture
+
+Tue Jan 27 20:02:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (socks_connect_blocking): moved from
+ sockssocket.c. [ruby-dev:37834]
+
+ * sockssocket.c (socks_init): don't omit "int" type.
+
+Tue Jan 27 14:41:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (RUBYDEF): needs DATA marks to export
+ non-function symbols. [ruby-core:21582]
+
+ * win32/mkexports.rb (Exports::Mingw#each_export): ditto.
+
+Tue Jan 27 12:59:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/ripper/depend: use VPATH.
+ If a platform doesn't support VPATH, Ruby doesn't support it:
+ for example MSYS. [ruby-core:21570]
+
+Tue Jan 27 12:21:17 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/ripper/depend: lex.c's correct path is ../../lex.c.
+
+Tue Jan 27 11:09:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_header): checks the header depending on
+ platform.
+
+ * lib/mkmf.rb (have_header, find_header): use try_header.
+
+ * win32/Makefile.sub (try_header): uses try_compile to get rid of
+ slow -E option of VC.
+
+Tue Jan 27 11:03:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (distclean-enc, realclean-enc): do not call clean of
+ enc.mk twice or more.
+
+ * enc/depend (cleanobjs): added deffile.
+
+ * lib/mkmf.rb (create_makefile): removes deffile at clean instead
+ of distclean.
+
+ * win32/Makefile.sub (miniruby, LIBRUBY_SO): removes lib and exp
+ files.
+
+ * win32/Makefile.sub (clean, distclean): have moved to common.mk.
+
+ * win32/rmdirs.bat: omits `not empty' message.
+
+Tue Jan 27 10:15:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (struct rb_transcoding): added ary member for debug.
+
+Tue Jan 27 10:10:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Doxyfile.in (FILE_VERSION_FILTER, INPUT_FILTER): should not use
+ ./miniruby directly for cross compiling.
+
+Tue Jan 27 04:02:53 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/ripper/depend: fixed dependency path to lex.c.
+ [ruby-core:21570]
+
+Tue Jan 27 03:43:34 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_any_hash): fixed performance issues with nil, true,
+ false as hash keys. a patch from Matthias Waechter.
+ [ruby-core:21568]
+
+Tue Jan 27 03:23:43 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): should point correct path to
+ ruby.h and defines.h. [ruby-core:21569]
+
+Mon Jan 26 16:00:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_aset): fixed arguments evaluation order.
+
+Mon Jan 26 15:49:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pathname.rb (chop_basename, prepend_prefix): use o option.
+
+Sun Jan 25 16:35:44 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (socket_s_ip_address_list): renamed from
+ socket_s_list_ip_address. [ruby-dev:37806]
+
+Sun Jan 25 12:17:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (RUBYDEF): needs read-only section too.
+
+Sun Jan 25 12:02:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (clean-ext): condition of EXTS was inverted.
+
+Sun Jan 25 11:50:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): fixed the variables order because
+ converter proc refers the separator.
+
+Sun Jan 25 11:25:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (RMDIRS): remove directory and
+ parents.
+
+ * Makefile.in, win32/Makefile.sub (distclean-rdoc): added to remove
+ temporary rdoc.
+
+ * Makefile.in, win32/Makefile.sub (clean-ext): skips non-existent
+ directories.
+
+ * common.mk (clean, distclean): cleans rdoc.
+
+ * common.mk (clean-extout): removes extout directory.
+
+ * configure.in (RMDIRS, RMALL): added to clean extout.
+
+ * lib/fileutils.rb (FileUtils#rmdir): added :parents option.
+
+ * lib/mkmf.rb (create_makefile): cleans installed files at clean
+ instead of distclean.
+
+ * lib/mkmf.rb (create_makefile): added clean-so and clean-rb.
+
+ * lib/mkmf.rb (def init_mkmf): added DISTCLEANDIRS.
+
+ * lib/un.rb (rmdir): added -p option.
+
+ * tool/rmdirs, win32/rmdirs.bat: removes directory and the parents.
+
+ * win32/rm.bat: added -r option.
+
+Sun Jan 25 09:09:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (join_path): use strlcat() to force link.
+
+ * dir.c (glob_helper): no strcpy() is needed since len is known.
+
+Sun Jan 25 06:44:58 2009 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_ssl.c: Server Name Indication support.
+ new methods SSLContext#server_name_cb=, SSLSocket#hostname=.
+
+ * test/openssl/test_ssl.rb: Tests for above.
+
+Sat Jan 24 08:22:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): tools under the top source
+ directory are not installed, so unusable outside extmk.rb.
+
+Fri Jan 23 17:24:31 2009 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * golf_prelude.rb (Enumerator#inspect): avoid warning.
+
+Fri Jan 23 15:12:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (mkintpath): new function which converts native path
+ to format acceptable in Makefile.
+
+ * lib/mkmf.rb (configuration): leaves PATH_SEPARATOR unchanged.
+
+ * lib/mkmf.rb (configuration): converts srcdir, topdir and hdrdir.
+ a patch by Alexey Borzenkov <snaury AT gmail.com> at
+ [ruby-core:21448].
+
+ * lib/mkmf.rb (try_func): got rid of c-mode confusion.
+
+Fri Jan 23 13:26:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (trap_handler): also accepts symbols. [ruby-dev:37823]
+
+Thu Jan 22 18:14:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): removes installed files under
+ extout at distclean.
+
+Thu Jan 22 17:12:37 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI.parse): generate only key on params hash
+ if request have only key uri parameters.
+ (ex. index.cgi?aaa&bbb=1 # params=>{:aaa=>[],:bbb=>["1"]})
+
+ * test/cgi/test_cgi_core.rb: fix test for key only params.
+
+Thu Jan 22 16:29:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/installer.rb (Gem::Installer#initialize): fixed
+ typos.
+
+ * test/rubygems/test_gem.rb (test_self_dir): removed false
+ assertions.
+
+ * test/rubygems/test_gem.rb (test_self_set_paths): checks if paths
+ are included.
+
+ * test/rubygems/test_gem_commands_install_command.rb
+ (test_execute_remote): checks diagnostic message too.
+
+ * test/rubygems/test_gem_installer.rb (load): uses Gem.ruby.
+
+ * test/rubygems/gemutilities.rb (Gem.ruby): initializes from the
+ environment variable to run without installation.
+
+ * test/rubygems/gemutilities.rb (RubyGemTestCase#util_build_gem):
+ creates cache directory.
+
+Thu Jan 22 16:12:51 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * revert previous revision. it's already out-of-date.
+
+Thu Jan 22 15:54:02 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/win32.c (rb_w32_is_valid_fd): new function
+ to validate fd.
+
+ * io.c (rb_io_initialize): check fd with above function.
+
+Thu Jan 22 14:53:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_process.rb (MANDATORY_ENVS): needs RUBYLIB to run
+ tests without install.
+
+Thu Jan 22 12:19:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (define_final): cannot define finalizer for immediate
+ values. [ruby-core:21500]
+
+ * gc.c (define_final): freezes or hides internal values.
+
+Thu Jan 22 11:33:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_time_timeval): made a real prototype. a patch from
+ Marcus Rueckert <darix AT opensu.se> at [ruby-core:21492].
+
+Wed Jan 21 21:43:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_ungetbyte, rb_io_ungetc): allows nil to reset EOF
+ flag with ungetting nothing.
+
+ * ruby.c (load_file_internal): rests EOF flag to make possible to
+ load from stdin after reading data.
+
+Wed Jan 21 17:17:18 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_double_capa): a new function to expand array more
+ aggressively. [ruby-core:21460]
+
+ * array.c (rb_ary_store): use ary_double_capa().
+
+ * array.c (rb_ary_unshift_m): ditto.
+
+ * array.c (rb_ary_splice): ditto.
+
+Wed Jan 21 15:32:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_ungetbyte, rb_io_ungetc): clears EOF flag.
+
+Wed Jan 21 14:41:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (take_items): to_ary() raises ArgumentError if cannot to
+ convert to Array. [ruby-dev:37797]
+
+Wed Jan 21 14:32:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (debug_lines): calls rb_intern() once.
+
+Wed Jan 21 13:58:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h (FMODE_EOF): EOF flag on TTY.
+
+ * io.c (io_set_eof): sets EOF flag for TTY.
+
+ * io.c (io_seek): clears EOF flag.
+
+ * io.c (io_fillbuf): returns EOF if already met EOF. [ruby-dev:37798]
+
+ * io.c (io_fillbuf, io_fread, io_getpartial): sets EOF.
+
+Wed Jan 21 08:22:04 2009 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.3.1 r4532.
+ * test/minitest/*.rb: ditto.
+
+Tue Jan 20 20:16:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (socket_s_list_ip_address): new method.
+ (sockaddr_obj): new function.
+
+ * ext/socket/rubysocket.h: include ifaddrs.h, sys/ioctl.h,
+ sys/sockio.h, net/if.h if available.
+ (addrinfo_new): declared.
+
+ * ext/socket/raddrinfo.c (addrinfo_new): exported.
+
+ * ext/socket/extconf.rb: check ifaddrs.h, sys/ioctl.h, sys/sockio.h,
+ net/if.h and getifaddrs.
+
+Tue Jan 20 20:05:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (pseudo_AF_FTIP): moved from mkconstants.rb.
+
+ * ext/socket/mkconstants.rb: prepend header if -H is not given.
+
+Tue Jan 20 17:50:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_buf): use nkf_char.
+
+Tue Jan 20 16:17:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (ruby_Init_{Continuation_body,Fiber_as_Coroutine}): prefixed
+ with ruby_ to export.
+
+ * ext/continuation/continuation.c, ext/fiber/fiber.c: ditto.
+
+Tue Jan 20 15:32:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (miniruby): renames and then removes, to get rid of
+ EPERM on cygwin and mingw.
+
+ * Makefile.in ($(LIBRUBY_SO)): use wildcard option of objcopy.
+
+ * configure.in (DLDFLAGS): do not export all symbols.
+
+ * cygwin/GNUmakefile.in (RUBYDEF): rejects symbols prefixed with
+ Init_.
+
+ * win32/mkexports.rb (Exports::Mingw): includes all symbols as
+ well as mswin32, except for prefixed with Init_.
+
+Tue Jan 20 13:03:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (hash): fixed the tail bytes handling in the aligned
+ access case.
+
+Tue Jan 20 09:26:05 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_buf_push): maybe a bug.
+
+ * ext/nkf/nkf-utf8/nkf.c (options): no need to support help option.
+
+Tue Jan 20 06:48:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (take_items), enum.c (enum_zip): tries to convert to
+ array first. [ruby-core:21442]
+
+Tue Jan 20 03:50:37 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Update nkf to 2.0.9.
+ revert -s meaning as Shift_JIS, etc.
+
+Tue Jan 20 03:42:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (hash): fixed typo. [ruby-dev:37791]
+
+Tue Jan 20 01:15:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (SOMAXCONN): defined.
+
+Mon Jan 19 22:31:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use erb for generating code.
+
+Mon Jan 19 17:33:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (hash): defaulted to MurmurHash 2.0.
+
+Mon Jan 19 17:29:34 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/defines.h (RUBY_ALIAS_FUNCTION_TYPE): added.
+
+Mon Jan 19 17:24:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (vm_stack_dump_each): used only if debug mode.
+
+Mon Jan 19 16:32:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (hash): added MurmurHash 2.0.
+
+Mon Jan 19 14:31:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_execute_interrupts): needs
+ rb_signal_buff_size to be declared.
+
+Mon Jan 19 13:34:25 2009 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (require_libraries): reset th->parse_in_eval while
+ loading libraries. fixes [ruby-dev:37780]
+
+Mon Jan 19 11:46:39 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c, eval.c (rb_f_block_given_p): move definition of
+ "iterator?" and "block_given?" to make static.
+
+ * vm.c (vm_get_ruby_level_caller_cfp): make it static.
+
+ * eval_intern.h, vm_insnhelper.c: move decl. of
+ vm_get_ruby_level_caller_cfp()
+ from eval_intern.h to vm_insnhelper.c.
+
+Mon Jan 19 11:27:39 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: add a prefix "rb_" to exposed functions
+ vm_get_ruby_level_next_cfp(), rb_vm_make_env_object(),
+ vm_stack_to_heap(), vm_make_proc(), vm_invoke_proc(),
+ vm_get_sourceline(), vm_cref(), vm_localjump_error(),
+ vm_make_jump_tag_but_local_jump(), vm_jump_tag_but_local_jump().
+ This changes may affect only core because most of renamed functions
+ require a pointer of not-exposed struct such as rb_thread_t or NODE.
+ In short, they are core functions.
+
+ * cont.c, eval.c, eval_intern.h, load.c, proc.c, thread.c,
+ vm_core.h, vm_dump.c, vm_eval.c, vm_exec.c, vm_insnhelper.c:
+ ditto.
+
+Mon Jan 19 11:22:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/rubysocket.h (rb_cUNIXSocket, rb_cUNIXServer),
+ (unixpath, unixaddr): UNIX domain sockets depend on sys/un.h.
+
+Mon Jan 19 11:02:30 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c: add a prefix "rb_vmdebug_" to
+ vm_stack_dump_raw(), vm_stack_dump_raw_current(),
+ vm_env_dump_raw(), vm_proc_dump_raw(), vm_stack_dump_th(),
+ vm_debug_print_register(), vm_thread_dump_regs(),
+ vm_debug_print_pre(), vm_debug_print_post(),
+ vm_thread_dump_state().
+ This change also may affect core (in fact, user of
+ above functions may be only ko1).
+
+ * vm_core.h: ditto.
+
+ * vm_exec.h (SDR2): remove duplicate definition.
+
+Mon Jan 19 11:00:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_ip_port): use AF_INET6 only when
+ defined, as well as addrinfo_ipv6_p().
+
+Mon Jan 19 10:43:38 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (garbage_collect_with_gvl): suppress warnings.
+
+Mon Jan 19 10:34:32 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/depend: workaround for nmake. files in depend without
+ paths should converted by RULE_SUBST, but mkmf.rb cannot recognize
+ macros currently.
+
+Mon Jan 19 09:53:43 2009 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c:
+ rename ruby_iseq_disasm_insn() -> rb_iseq_disasm_insn().
+ rename ruby_iseq_disasm() -> rb_iseq_disasm().
+
+ * compile.c:
+ rename ruby_iseq_compile() -> rb_iseq_compile_node().
+ rename ruby_iseq_translate_threaded_code() ->
+ rb_iseq_translate_threaded_code().
+ rename ruby_insns_name_array() -> rb_insns_name_array().
+ rename ruby_iseq_build_from_ary() -> rb_iseq_build_from_ary().
+
+ * iseq.c, compile.c: remove ruby_insn_make_insn_table() and make
+ static function insn_make_insn_table().
+
+ * iseq.h, ruby.c, vm.c, vm_core.h, vm_eval.c, vm_dump.c,
+ blockinlining.c: ditto.
+ Rename strange "ruby_" prefix to "rb_" prefix.
+ This changes may affect only core because renamed functions
+ require a pointer of rb_iseq_t which is not exposed.
+
+Mon Jan 19 09:21:04 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: define macros with default value in
+ constdefs.h if not exist them.
+
+ * ext/socket/raddrinfo.c (addrinfo_mdump, addrinfo_mload): support
+ UNIX socket only on platforms which support it.
+
+Mon Jan 19 08:56:53 2009 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm_eval.c (rb_f_local_variables): move definition from eval.c
+ to vm_eval.c because vm_collect_local_variables_in_heap() should
+ be static function.
+
+ * vm.c (vm_collect_local_variables_in_heap): make it static.
+
+Mon Jan 19 04:06:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_load): renamed from ruby_iseq_load, since it is
+ for C extensions or the ruby core. [ruby-core:21407]
+
+Mon Jan 19 03:06:22 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (str_transcode0): fix: :xml option doesn't
+ work on str.encode([options]) form without default_internal.
+
+Sun Jan 18 16:56:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_inspect_sockaddr): new
+ method AddrInfo#inspect_sockaddr.
+ (inspect_sockaddr): extracted from addrinfo_inspect.
+ (addrinfo_inspect): use inspect_sockaddr.
+ (Init_addrinfo): define the new method.
+
+Sun Jan 18 16:46:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_ip_address): new method
+ AddrInfo#ip_address.
+ (addrinfo_ip_port): new method AddrInfo#ip_port.
+ (Init_addrinfo): define the methods above.
+
+Sun Jan 18 14:29:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/unixsocket.c: redundant #ifdef removed.
+
+Sun Jan 18 03:33:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_mdump): don't use symbol.
+ (addrinfo_mload): ditto.
+
+Sun Jan 18 03:05:20 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_mdump): new method.
+ (addrinfo_mload): new method.
+ (Init_addrinfo): define the method above.
+
+ * ext/socket/constants.c (constant_arg): str_to_int's first argument
+ constified.
+
+ * ext/socket/mkconstants.rb (gen_name_to_int_decl): generated
+ function's first argument constified.
+ (gen_name_to_int_func_in_guard): ditto.
+ (ipproto_to_int): generated.
+
+ * ext/socket/rubysocket.h (IS_IP_FAMILY): moved from raddrinfo.c.
+
+Sun Jan 18 01:37:50 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_getnameinfo): accept AddrInfo object.
+
+ * ext/socket/raddrinfo.c (rb_check_sockaddr_string_type): defined.
+
+ * ext/socket/rubysocket.h (rb_check_sockaddr_string_type): declared.
+
+Sat Jan 17 22:01:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb: new file.
+
+Sat Jan 17 19:33:48 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in (VCSUP): fixed the cases for git-svn or git.
+
+ * win32/Makefile.sub (VCSUP): ditto.
+
+ * Makefile.in (up): `cd' is necessary for git and git-svn.
+
+Sat Jan 17 19:16:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate a header file for generated
+ functions.
+
+ * ext/socket/rubysocket.h: include constdefs.h. don't declare
+ generated functions.
+
+ * ext/socket/constants.c: include constdefs.c instead of constants.h.
+
+ * ext/socket/depend: dependency updated.
+
+Sat Jan 17 17:58:22 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/xmp.rb: multilingualizes XMP::StringInputMethod.
+ [ruby-core:21383].
+
+Sat Jan 17 15:01:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (make_inspectname): add a res argument to
+ suppress numeric inspectname.
+ (init_addrinfo_getaddrinfo): call make_inspectname here.
+ (addrinfo_firstonly_new): follow make_inspectname change.
+ (addrinfo_list_new): ditto.
+ (addrinfo_initialize): follow init_addrinfo_getaddrinfo change.
+
+Sat Jan 17 14:52:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: don't cause an error for duplicate names.
+
+Sat Jan 17 12:46:17 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket: split files for each class.
+
+ * ext/socket/rubysocket.h: common header.
+
+ * ext/socket/basicsocket.c: new file for BasicSocket.
+
+ * ext/socket/ipsocket.c: new file for IPSocket.
+
+ * ext/socket/tcpsocket.c: new file for TCPSocket.
+
+ * ext/socket/tcpserver.c: new file for TCPServer.
+
+ * ext/socket/sockssocket.c: new file for SOCKSSocket.
+
+ * ext/socket/udpsocket.c: new file for UDPSocket.
+
+ * ext/socket/unixsocket.c: new file for UNIXSocket.
+
+ * ext/socket/unixserver.c: new file for UNIXServer.
+
+ * ext/socket/socket.c: now for Socket.
+
+ * ext/socket/raddrinfo.c: new file for AddrInfo and name resolution.
+
+ * ext/socket/constants.c: new file for constants.
+
+ * ext/socket/init.c: new file for utilities.
+
+ * ext/socket/mkconstants.rb: export *_to_int.
+
+ * ext/socket/extconf.rb: add new object files.
+
+ * ext/socket/depend: add dependencies for new files.
+
+ * ext/.document: add new files.
+
+Sat Jan 17 11:12:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_restore_0): padding size doesn't need to be large
+ if alloca is used. suppress warnings.
+
+Sat Jan 17 11:12:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (vm_stack_dump_each): initialized at declarations.
+
+ * vm_dump.c (rb_vm_bugreport): constified to suppress a warning.
+
+Fri Jan 16 22:30:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: move addrinfo code.
+
+Fri Jan 16 18:51:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (up): tell nmake that need to run command via
+ shell.
+
+Fri Jan 16 18:43:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (package): includes all rules and expand
+ configured values from the environment to create *.inc, sets RM
+ for ripper.c, and needs chdir if absolute path is given with
+ -exported option.
+
+Fri Jan 16 18:26:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (VALUE): use unsigned long or long long
+ instead of uintptr_t, since many %lx and so on are still used.
+
+Fri Jan 16 17:33:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): set VCS and VCSUP to support `git svn'
+ and git.
+
+ * Makefile.in, win32/Makefile.sub (up): split from common.mk.
+
+Fri Jan 16 12:24:39 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (thread_start_func_2): call ruby_cleanup() if thread is
+ main thread. [ruby-dev:37624]
+
+Fri Jan 16 12:27:50 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub ($(INSNS), node_name.inc, known_errors.inc,
+ miniprelude.c, newline.c): if dependencies is newer than targets or
+ targets don't exist, try to create targets with BASERUBY. no need to
+ detect errors there because the absence of BASERUBY is not abnormal.
+ after the try, if the targets still don't exist, copy them from
+ $(srcdir).
+
+Fri Jan 16 12:15:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX): must define as string.
+ if not, cause compile error in using PRI?VALUE.
+
+ * win32/Makefile.sub (config.h): add SIZEOF_INTPTR_T and
+ SIZEOF_UINTPTR_T for SIZEOF_VALUE.
+
+Fri Jan 16 11:51:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * symbian/pre-build (COMSPEC): should not overridden.
+
+Fri Jan 16 11:47:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_parse_in_main): fixed typo.
+
+Fri Jan 16 11:41:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_REPLACE_TYPE): does not define rb_ prefixed
+ name if no default type is given.
+
+ * configure.in (RUBY_DEFINT): checks size.
+
+ * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX, PRI_SIZE_PREFIX):
+ assumes usable if PRIdPTR is defined.
+
+Fri Jan 16 02:25:46 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_thread_execute_interrupts): if signal is already
+ buffered, main thread should wait until timer thread delivers it.
+
+ * thread.c (timer_thread_function): should defer delivery of a signal
+ if main thread does not yet trap a previous one. [ruby-dev:37676]
+
+Fri Jan 16 02:05:55 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (addrinfo_s_ip): new method AddrInfo.ip.
+
+Fri Jan 16 01:42:50 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (call_trace_proc): as Matz said ([ruby-core:21183]),
+ should skip rb_str_new2() if rb_sourcefile() returns NULL.
+ rb_sourcefile() returns NULL if frame is toplevel of Fiber.
+ [ruby-core:21161] [Bug #985]
+
+Fri Jan 16 01:09:37 2009 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (process_options): decrement parse_in_eval to recognize
+ parsing main or normal eval script.
+
+ * compile.c (rb_parse_in_main): return 1 if parsing main script.
+ (if parse_in_eval is negative value, it means main script)
+
+ * parse.y (yycompile0): check rb_parse_in_main() to accumulate
+ script text. Bug #848 [ruby-core:20450]
+
+Fri Jan 16 00:57:34 2009 Koichi Sasada <ko1@atdot.net>
+
+ * lib/debug.rb: as wanabe-san pointed out,
+ set_trace_func should be completely final task in debug.rb.
+ Bug #847 [ruby-core:20449]
+
+Fri Jan 16 00:27:03 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (rb_vm_inc_const_missing_count, ruby_vm_const_missing_count):
+ added.
+
+ * vm_insnhelper.h: ditto.
+
+ * variable.c (rb_const_get_0), insns.def: Constants should not be
+ cached if const_missing is called. [ruby-core:21059] [Bug #967]
+
+ * bootstraptest/test_class.rb: add a test.
+
+Fri Jan 16 00:25:09 2009 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: btest-ruby should receive option with OPTS.
+
+Fri Jan 16 00:21:10 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub ($(INSNS), node_name.inc, known_errors.inc,
+ miniprelude.c, newline.c): shouldn't copy when $(srcdir) != ".", too.
+ (this is a workaround. we need more strict check.)
+
+ * win32/Makefile.sub ($(INSNS)): shouldn't remove BASERUBY.
+
+Fri Jan 16 00:19:55 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_with_gvl): suppress warnings.
+
+Thu Jan 15 20:44:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * tool/file2lastrev.rb: RUBY_REVISION must be an integer.
+
+Thu Jan 15 15:55:31 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (enc_set_default_encoding): should not treat US-ASCII
+ special here. a patch from Yui NARUSE in [ruby-dev:37769].
+ [ruby-dev:37699]
+
+Thu Jan 15 14:27:27 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * LEGAL: Added information for missing/langinfo.c
+
+Thu Jan 15 14:17:57 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): explicit error for "Object::Far += foo 1" just
+ as "Object::Far += 1".
+
+ * parse.y (command): moved return/break/next from command_call for
+ better error message.
+
+ * parse.y (call_args): void value check added.
+
+Thu Jan 15 13:10:58 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (COMPILERFLAG): for enc/trans/gb18030.c.
+
+Thu Jan 15 13:10:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (MISSING): added langinfo on mingw
+ and mswin.
+
+ * encoding.c (rb_locale_charmap): use environments on mingw and mswin.
+
+ * missing/langinfo.c (nl_langinfo_codeset): MS-Windows Japanese
+ environment uses Windows-31J derived from Shift_JIS, not EUC-JP.
+
+Thu Jan 15 12:10:39 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub ($(INSNS), node_name.inc, known_errors.inc,
+ miniprelude.c, newline.c): copy only when $(srcdir) != pwd.
+
+Thu Jan 15 11:40:44 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): revert a part of previous commit. it may be a
+ mistake.
+
+Thu Jan 15 10:45:52 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * symbian/README.SYMBIAN: symbian support added. great appreciate
+ to <alexandre.zavorine at symbian.com>.
+
+Thu Jan 15 00:06:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/gb18030.trans: get rid of a 1.9 feature for cross
+ compile. [ruby-core:21345]
+
+Wed Jan 14 23:57:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): fallback to codepage if no
+ locale is found. [ruby-core:21110]
+
+ * missing/langinfo.c (nl_langinfo_codeset): returns NULL if no
+ locale is found.
+
+Wed Jan 14 22:38:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (negative_size_allocation_error_with_gvl): abolish a warning.
+ (negative_size_allocation_error): ditto.
+
+ * ext/openssl/ossl.c (ossl_raise): ditto.
+
+Wed Jan 14 20:05:05 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/gb18030.trans, gb18030-tbl.rb:
+ new Chinese GB18030 transcoding (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
+ * transcode_data.h, transcode.c, tool/transcode_tblgen.rb:
+ added support for GB18030-specific 4-byte sequences
+ (with Yoshihiro Kambayashi)
+
+Wed Jan 14 16:16:19 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/extconf.rb: check ncursesw earlier than ncurses to
+ support UTF-8 strings. non UTF-8 strings should be converted
+ explicitly. [ruby-core:21094]
+
+Wed Jan 14 14:42:30 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * cont.c: fix prototype declare of register_stack_extend
+
+Wed Jan 14 13:19:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_aspawn): should not escape with caret
+ unless using cmd.exe.
+
+Wed Jan 14 13:09:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/extconf.rb (gai_strerror): checks if available and if
+ returns const pointer.
+
+ * ext/socket/getaddrinfo.c (gai_strerror): defines only if non
+ available. [ruby-core:21328]
+
+Wed Jan 14 12:39:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_wait_readable, rb_io_wait_writable): need rb_fd_ptr.
+
+ * io.c (appendline): reformed.
+
+ * io.c (rb_io_s_pipe): reduced nest of rb_ensure of main block.
+
+Tue Jan 13 22:56:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/addrinfo.h (AI_NUMERICSERV): defined.
+ (AI_MASK): add AI_NUMERICSERV.
+
+ * ext/socket/getaddrinfo.c (getaddrinfo): support AI_NUMERICSERV.
+
+Tue Jan 13 21:45:53 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/ostruct.rb (OpenStruct#inspect): fixed the recursion check.
+ Patch by Kornelius Kalnbach. [ruby-core:20992].
+
+ * test/ostruct/test_ostruct.rb: test for inspect.
+ Patch by Kornelius Kalnbach. [ruby-core:20992].
+
+Tue Jan 13 21:44:30 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_reopen, rb_io_init_copy): should register fptr to pipe_list
+ when copying pipe fptr.
+
+Tue Jan 13 21:38:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rb_getaddrinfo): use getaddrinfo with GVL if
+ getaddrinfo.c/getnameinfo.c is used. They are not thread safe
+ because gethostbyname/gethostbyaddr is used.
+ (rb_getnameinfo): ditto.
+
+ * extconf.rb: define GETADDRINFO_EMU if getaddrinfo.c/getnameinfo.c is
+ used.
+
+Tue Jan 13 21:28:14 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * object.c (rb_obj_not_match): rdoc.
+ Patch by Kornelius Kalnbach. [ruby-core:20991]
+
+Tue Jan 13 18:21:44 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_close_read): call rb_io_fptr_cleanup() instead of
+ fptr_finalize() because the fptr has special finalizer if it is a
+ pipe. [ruby-dev:37757] (3)
+
+Tue Jan 13 18:19:49 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_initialize): workaround for Windows. [ruby-dev:37686]
+ (also see [ruby-dev:37721])
+
+Tue Jan 13 17:29:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/make_transdb.rb (converters): should not depend on the
+ hash order for cross compile.
+
+Tue Jan 13 16:39:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/intern.h, thread.c, win32/Makefile.sub (rb_fdset_t,
+ rb_fd_init, rb_fd_term, rb_fd_zero, rb_fd_set, rb_fd_clr, rb_fd_isset,
+ rb_fd_select, rb_fd_ptr, rb_fd_max, HAVE_RB_FD_INIT): new type,
+ functions, and macros for Windows.
+
+ * win32/win32.c (extract_fd, rb_w32_select): use rb_fdset_t to expand
+ fd_array if needed. [ruby-core:19946]
+
+ * win32/win32.c (copy_fd): new function for rb_w32_select().
+
+Tue Jan 13 12:31:54 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/file2lastrev.rb (get_revisions): fixes problem with
+ svn on cygwin. [ruby-dev:37702].
+ Patch by Kouhei Sutou.
+
+Tue Jan 13 11:58:04 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/input-method.rb: IRB did not prompt for MSwin32.
+ [ruby-dev:37686].
+ Patch by arton <artonx AT yahoo.co.jp>.
+
+Tue Jan 13 12:10:42 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/{getaddrinfo,getnameinfo}.c: need to include ws2tcpip.h
+ on Windows.
+
+Tue Jan 13 09:49:49 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * ext/socket/socket.c: removed warning about unused variable 'rai'.
+
+Tue Jan 13 03:07:28 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: require "tool/mdoc2man.rb" before chdir if needed.
+
+Tue Jan 13 02:54:54 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: use headers instead of "netdb.h" in checking
+ getnameinfo() and getaddrinfo() because Windows doesn't have it.
+ [ruby-dev:37757] (1)
+
+ * ext/socket/sockport.h (SA_LEN): use sockaddr_in6 when defined AF_INET6
+ if INET6 is not defined. winsock2's getaddrinfo() returns
+ sockaddr_in6 if ipv6 is available.
+
+Tue Jan 13 02:21:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (internal_cmd_match): extracted from
+ is_internal_cmd.
+
+ * win32/win32.c (argv_size, join_argv): escapes redirection, pipe
+ and caret punctuations with carets.
+
+ * win32/win32.c (rb_w32_aspawn): ditto, and redirections and pipe
+ have no meanings.
+
+Tue Jan 13 02:07:38 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: use Encoding.find("locale") instead of
+ Encoding.locale_charmap
+
+Tue Jan 13 00:57:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_unpack_sockaddr_in): check too short
+ sockaddr.
+ (sock_s_unpack_sockaddr_un): ditto.
+
+Mon Jan 12 23:55:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (addrinfo_ip_unpack): new method
+ AddrInfo#ip_unpack.
+ (addrinfo_unix_path): new method AddrInfo#unix_path.
+ (Init_socket): define above methods.
+
+Mon Jan 12 23:31:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (IS_IP_FAMILY): defined.
+ (addrinfo_ip_p): use it.
+
+Mon Jan 12 17:23:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_nothing_raised): removes the
+ current trace to get rid of an issue of MiniTest::Unit#location.
+
+Mon Jan 12 16:49:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (install): erased a garbage.
+
+Mon Jan 12 16:45:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (open_dir_handle): extracted from rb_w32_opendir.
+
+ * win32/win32.c (winnt_stat): gets rid of strange behavior of
+ GetFileAttributes(). [ruby-core:21269]
+
+Mon Jan 12 12:43:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (parse_args, install): added --strip option.
+
+ * instruby.rb (install_recursive): skips the directory if matched
+ to a no_install pattern ending with a file separator.
+
+Mon Jan 12 12:33:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: don't use bytesize because 1.9 dependent.
+ [ruby-core:21266]
+
+Mon Jan 12 11:59:19 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (ruby_xmalloc, ruby_xrealloc, ruby_xfree):
+ enable to use them without GVL.
+ if GC is invoked, acquire GVL during GC.
+ if NoMemoryError is raised, acquire GVL and raise it.
+
+Mon Jan 12 10:39:19 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: fix comment (terminology: Global VM Lock).
+
+ * thread.c (blocking_region_begin, blocking_region_end):
+ save and clear th->blocking_region_buffer.
+
+ * thread.c (rb_thread_call_with_gvl): check if it has GVL.
+
+ * thread.c (ruby_thread_has_gvl_p): added.
+
+ * vm_core.h: add decls.
+
+Mon Jan 12 10:21:11 2009 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c: remove unused decl.
+
+Sun Jan 11 16:53:14 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (PercentScanner): remove PercentScanner. fixed % after
+ %> bug. [ruby-dev:37751] [Bug #997]
+
+ * test/erb/test_erb.rb: ditto
+
+Sun Jan 11 09:53:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb (c_str): get rid of a 1.9 feature for
+ cross compile. [ruby-core:21243]
+
+Sun Jan 11 09:47:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): set nil as the value if assoc length
+ is not enough. [ruby-core:21249]
+
+Sat Jan 10 21:17:28 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: don't generate unintended newlines.
+
+Sat Jan 10 20:50:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: refactored to nest properly in statically
+ and dynamically.
+
+Sat Jan 10 20:26:17 2009 Tanaka Akira <akr@fsij.org>
+
+ * version.h: make version string succinct:
+ "ruby 1.9.1p5000 (2009-01-10 trunk 21414) [i686-linux]".
+
+Sat Jan 10 19:05:13 2009 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_restore_1): should not be inlined.
+
+Fri Jan 9 21:52:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_define_const): use INT2NUM.
+
+Fri Jan 9 15:40:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: define macro if default_value is passed.
+
+Fri Jan 9 13:20:08 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: rescue abnormal Encoding.locale_charmap value.
+
+Fri Jan 9 12:29:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (test-sample), rubytest.rb: use runruby.rb
+
+Fri Jan 9 10:40:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess::MANDATORY_ENVS): some
+ platforms need environments for shared objects.
+
+Thu Jan 8 23:19:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (bsock_shutdown): accept symbol/string as how.
+ (shutdown_how_arg): new function.
+
+ * ext/socket/mkconstants.rb: generate shutdown_how_to_int.
+
+Thu Jan 8 23:16:37 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: easy code contains fewer bugs.
+
+Thu Jan 8 22:59:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (gen_name_to_int_func): generate
+ name_to_int functions, not only body.
+
+Thu Jan 8 22:44:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: don't use AI_NUMERICSERV for platforms which
+ not define it as old Windows.
+ [ruby-dev:37736]
+
+Thu Jan 8 17:32:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb: should not depend on a library which does not exist
+ in 1.8.
+
+Thu Jan 8 07:52:55 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (init_unix_addrinfo): don't return a value.
+
+Thu Jan 8 07:30:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI.redirectable?): reverted https redirection.
+
+Thu Jan 8 00:31:58 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb (assert_no_match): don't count up as two
+ assertions.
+
+Thu Jan 8 00:26:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (addrinfo_getnameinfo): use NI_DGRAM if socktype
+ is SOCK_DGRAM.
+
+Thu Jan 8 00:16:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (host_str): add flags_ptr argument to specify
+ AI_NUMERICHOST if host is numeric form.
+ (port_str): add flags_ptr argument to specify AI_NUMERICSERV if port
+ is numeric form.
+
+Wed Jan 7 22:24:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rb_cAddrInfo): new class AddrInfo.
+ (s_recvfrom): return AddrInfo as address.
+ (s_recvfrom_nonblock): ditto.
+ (sock_accept): ditto.
+ (sock_accept_nonblock): ditto.
+ (sock_sysaccept): ditto.
+ (bsock_send): accept AddrInfo as address argument.
+ (sock_connect): ditto.
+ (sock_connect_nonblock): ditto.
+ (sock_bind): ditto.
+ (sock_s_unpack_sockaddr_in): ditto.
+ (sock_s_unpack_sockaddr_un): ditto.
+ (bsock_local_address): new method BasicSocket#local_address.
+ (bsock_remote_address): new method BasicSocket#remote_address.
+ (addrinfo_initialize): new method AddrInfo#initialize.
+ (addrinfo_inspect): new method AddrInfo#inspect.
+ (addrinfo_afamily): new method AddrInfo#afamily.
+ (addrinfo_pfamily): new method AddrInfo#pfamily.
+ (addrinfo_socktype): new method AddrInfo#socktype.
+ (addrinfo_protocol): new method AddrInfo#protocol.
+ (addrinfo_to_sockaddr): new method AddrInfo#to_sockaddr.
+ (addrinfo_canonname): new method AddrInfo#canonname.
+ (addrinfo_ip_p): new method AddrInfo#ip?.
+ (addrinfo_ipv4_p): new method AddrInfo#ipv4?.
+ (addrinfo_ipv6_p): new method AddrInfo#ipv6?.
+ (addrinfo_unix_p): new method AddrInfo#unix?.
+ (addrinfo_getnameinfo): new method AddrInfo#getnameinfo.
+ (addrinfo_s_getaddrinfo): new method AddrInfo.getaddrinfo.
+ (addrinfo_s_tcp): new method AddrInfo.tcp.
+ (addrinfo_s_udp): new method AddrInfo.udp.
+ (addrinfo_s_unix): new method AddrInfo.unix.
+ (Init_socket): define new class and methods.
+ (sock_getaddrinfo): apply socktype hack regardless of ai_flags.
+ (addrinfo_new): defined.
+ (get_afamily): ditto.
+ (fd_socket_addrinfo): ditto.
+ (io_socket_addrinfo): ditto.
+ (SockAddrStringValue): ditto.
+ (SockAddrStringValuePtr): ditto.
+ (sockaddr_string_value): ditto.
+ (sockaddr_string_value_ptr): ditto.
+ (rb_addrinfo_t): ditto.
+ (addrinfo_mark): ditto.
+ (addrinfo_free): ditto.
+ (addrinfo_s_allocate): ditto.
+ (IS_ADDRINFO): ditto.
+ (check_addrinfo): ditto.
+ (get_addrinfo): ditto.
+ (alloc_addrinfo): ditto.
+ (init_addrinfo): ditto.
+ (addrinfo_new): ditto.
+ (call_getaddrinfo): ditto.
+ (init_addrinfo_getaddrinfo): ditto.
+ (make_inspectname): ditto.
+ (addrinfo_firstonly_new): ditto.
+ (addrinfo_list_new): ditto.
+ (init_unix_addrinfo): ditto.
+ (ai_get_afamily): ditto.
+
+ * ext/socket/mkconstants.rb: generate intern_protocol_family,
+ intern_socktype and intern_ipproto.
+
+ [ruby-dev:37692]
+
+Wed Jan 7 22:13:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (man, gem): fixed errors.
+
+Wed Jan 7 17:14:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb: use installed libraries. [ruby-core:21006]
+
+ * instruby.rb (gem), lib/rubygems/defaults.rb (Gem.default_dir):
+ use version invariant configuration.
+
+Tue Jan 6 19:09:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_restore_0): streamlined to ensure O(1) time. based on
+ a patch by Brent Roman <brent AT mbari.org>.
+
+Tue Jan 6 00:34:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_close_before_exec): more heuristics to detect maximum fd.
+
+Mon Jan 5 17:59:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (cygwin): needs properly implemented nl_langinfo().
+ [ruby-core:21110]
+
+ * missing/langinfo.c: added as suggested at [ruby-core:21015], from
+ http://www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c.
+
+ * missing/langinfo.c (nl_langinfo_0): fixed typos for SJIS.
+
+Mon Jan 5 17:38:40 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): use GetConsoleCP() instead of
+ GetACP() because external encoding should be console's one.
+
+ * encoding.c (rb_filesystem_encoding): use GetOEMCP() instead of
+ GetACP() because VFAT/FAT32 uses OEM CP.
+
+Mon Jan 5 16:26:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding): use ANSI codepage for file
+ system on cygwin.
+
+ * encoding.c (rb_locale_charmap): reverted. [ruby-core:21110]
+
+Mon Jan 5 16:15:00 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/curses/curses.c (free_window): use xfree instead of free.
+ [ruby-dev:37200]
+
+Mon Jan 5 15:49:45 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/gdbm/gdbm.c (rb_gdbm_fetch): remove needless cast.
+
+Mon Jan 5 12:52:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_env): use user profile folder than personal
+ folder.
+
+Mon Jan 5 08:41:13 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_stat): need type check for non string values.
+ [ruby-dev:37673] fix: #964
+
+ * file.c (rb_file_s_size, rb_file_s_atime, rb_file_s_mtime,
+ rb_file_s_ctime, rb_f_test): ditto.
+
+Mon Jan 5 08:17:56 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): should not add up errors on loops.
+ [ruby-dev:37691]
+
+Mon Jan 5 07:58:37 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c (rb_f_srand): update RDoc. [ruby-core:21113]
+
+Mon Jan 5 06:39:56 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_max): max value from ... not defined for non
+ Integer Numeric end values. [ruby-dev:37690] fix: #974
+
+Sun Jan 4 22:37:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rb_getaddrinfo): defined for address lookup without GVL.
+ (struct getaddrinfo_arg): defined.
+ (nogvl_getaddrinfo): defined.
+ (rb_getnameinfo): defined for name lookup without GVL.
+ (getnameinfo_arg): defined.
+ (nogvl_getnameinfo): defined.
+
+Sun Jan 4 18:10:10 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/gbk.trans, gbk-tbl.rb:
+ new Chinese GBK transcoding (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
+Sun Jan 4 17:55:55 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: added tests for GB2312
+ (from Yoshihiro Kambayashi)
+
+ * enc/trans/chinese.trans: set valid byte patterns for
+ GB2312 and GB12345
+
+Sun Jan 4 17:39:39 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/big5.trans, big5-tbl.rb:
+ new Chinese Big5 transcoding (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
+Sun Jan 4 17:07:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems.rb (Gem.set_home, Gem.set_paths): should not create
+ directories stealthily. [ruby-core:20990]
+
+ * lib/rubygems.rb (Gem.find_home): expand_path deals with platform
+ dependent environments.
+
+ * lib/rdoc/ri/paths.rb (RDoc::HOMEDIR): ditto.
+
+ * instruby.rb (gem): creates gem directories at installation.
+
+Sun Jan 4 15:41:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding, rb_locale_charmap): uses
+ codepage on cygwin. [ruby-core:20994]
+
+Sun Jan 4 11:58:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (ruby_float_step): extracted from num_step().
+
+ * range.c (range_step): uses ruby_float_step() for float range.
+ [ruby-dev:37691]
+
+Sun Jan 4 11:11:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): does not use both of makefile.rb and
+ extconf.rb at the same time.
+
+ * lib/mkmf.rb (DLLIB): depends on Makefile. [ruby-core:21096]
+
+Sun Jan 4 09:27:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (constant_arg): constified.
+
+ * ext/socket/socket.c (optname_arg): cygwin does not have
+ IPPROTO_IPV6.
+
+ * ext/socket/mkconstants.rb (ipv6_optname_to_int): ditto.
+
+Sun Jan 4 04:33:14 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: redundant #ifdef removed.
+
+Sun Jan 4 03:30:18 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (maygvl_copy_stream_wait_read): renamed to add prefix to
+ express GVL state.
+ (nogvl_copy_stream_wait_write): ditto.
+ (nogvl_copy_stream_sendfile): ditto.
+ (maygvl_copy_stream_read): ditto.
+ (nogvl_copy_stream_write): ditto.
+ (nogvl_copy_stream_read_write): ditto.
+ (nogvl_copy_stream_func): ditto.
+
+Sun Jan 4 00:30:50 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb: merged r20850, r17881, r16811, r16763, r16748, r15829,
+ r15794 and r15698 from ruby_1_8.
+
+ * test/erb/test_erb.rb: ditto.
+
+Sat Jan 3 22:24:36 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk, Makefile.in, win32/Makefile.sub (INSNS): move the macro
+ definition from common.mk to {Makefile.in,win32/Makefile.sub}.
+ [ruby-dev:37678]
+
+Sat Jan 3 15:30:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/chinese.trans: added for transcoding EUC-CN and GB12345.
+
+ * enc/trans/GB/: ditto.
+
+Sat Jan 3 15:26:30 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/euc-cn.c: renamed from gb2312.c because GB2312 is
+ the name of a CSS. it's encoding name is "EUC-CN".
+
+Sat Jan 3 03:00:42 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk, Makefile.in, win32/Makefile.sub ($(INSNS), node_name.inc,
+ known_errors.inc, miniprelude.c, newline.c): move rules from common.mk
+ to {Makefile.in,win32/Makefile.sub} for nmake.
+ [ruby-core:20993]
+
+Fri Jan 2 23:51:41 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_sleep.rb (test_sleep_5sec): stop gc.
+
+Fri Jan 2 23:36:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: don't apply socktype hack [ruby-core:184] for
+ sock_s_getaddrinfo.
+ (sock_getaddrinfo): add socktype_hack argument.
+ (sock_addrinfo): call sock_getaddrinfo with socktype_hack.
+ (sock_s_getaddrinfo): call sock_getaddrinfo without socktype_hack.
+ [ruby-dev:37674]
+
+Fri Jan 2 23:33:38 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/missing.h, sprintf.c: get rid of a warning of VC++.
+
+Fri Jan 2 22:25:46 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * process.c: use sigaction instead of sigset. [ruby-core:21021]
+
+Fri Jan 2 22:22:04 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_proc.rb: suppress error message.
+
+Fri Jan 2 22:20:46 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb (test_wait_and_sigchild): remove debug
+ output.
+
+Fri Jan 2 17:45:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: rename family_to_str to intern_family.
+ it returns ID now.
+
+ * ext/socket/socket.c (ipaddr): use intern_family.
+
+Fri Jan 2 17:20:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use ID in the values of
+ family_to_str_hash. family_to_str returns a VALUE.
+
+ * ext/socket/socket.c (ipaddr): follow family_to_str change.
+
+Fri Jan 2 17:01:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: refactored to gather stringizer
+ description.
+
+Fri Jan 2 15:30:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: make common prefix optional.
+
+Fri Jan 2 14:59:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use hash for family_to_str to avoid
+ linear search. lenp argument removed.
+
+ * ext/socket/socket.c (ipaddr): call family_to_str without lenp
+ argument.
+
+Fri Jan 2 14:33:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (gen_int_to_name): don't compare constants
+ in preprocessor because the constants may be enum.
+
+Fri Jan 2 14:11:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (gen_int_to_name): add lenp argument.
+
+ * ext/socket/socket.c (ipaddr): follow argument change.
+
+Fri Jan 2 10:20:24 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/singleton.rb: fix documentation. [ruby-core:21038]
+
+Fri Jan 2 06:43:58 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * signal.c (rb_signal_buff_size): defined for check whether signal
+ is in the buffer or not.
+
+ * thread_pthread.c (thread_timer): don't exit the loop when signal
+ is in the buffer. [ruby-dev:37637]
+
+Fri Jan 2 04:40:00 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: check duplicates.
+
+Fri Jan 2 02:39:08 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (optname_arg): defined.
+ (bsock_setsockopt): use optname_arg.
+ (bsock_getsockopt): ditto.
+
+ * ext/socket/mkconstants.rb: generate so_optname_to_int,
+ ip_optname_to_int, ipv6_optname_to_int, tcp_optname_to_int and
+ udp_optname_to_int.
+ more constants.
+
+Fri Jan 2 02:08:36 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (constant_arg): extracted from family_arg.
+ (family_arg): use constant_arg.
+ (socktype_arg): ditto.
+ (level_arg): ditto.
+
+Fri Jan 2 01:15:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (level_arg): defined.
+ (bsock_setsockopt): use level_arg.
+ (bsock_getsockopt): ditto.
+
+ * ext/socket/mkconstants.rb: generate level_to_int.
+
+Fri Jan 2 00:58:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (family_arg): accept symbols as well.
+ (socktype_arg): ditto.
+
+Fri Jan 2 00:49:44 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_getaddrinfo): use socktype_arg.
+
+Fri Jan 2 00:12:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (family_arg): extracted from
+ setup_domain_and_type.
+ (socktype_arg): ditto.
+ (udp_init): use family_arg.
+ (sock_s_gethostbyaddr): ditto.
+ (sock_s_getaddrinfo): ditto.
+ (sock_s_getnameinfo): ditto.
+
+Thu Jan 1 22:27:55 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec: fix for builddir != srcdir
+
+ * Makefile.in: ditto.
+
+Thu Jan 1 21:26:05 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_getnameinfo): use family_to_int.
+
+Thu Jan 1 21:08:34 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: check all alias possibility.
+
+Thu Jan 1 20:59:55 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: more possible aliases.
+
+Thu Jan 1 20:54:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: AF_ISO and AF_OSI may be aliased.
+
+Thu Jan 1 20:50:09 2009 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * process.c (before_exec): it makes no sense for a conditional
+ expression to return a void value.
+
+Thu Jan 1 20:47:09 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_getaddrinfo): use family_to_int.
+
+Thu Jan 1 20:17:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: include constants.h at top.
+
+Thu Jan 1 19:53:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: add valp argument for family_to_int and
+ socktype_to_int.
+
+ * ext/socket/socket.c (setup_domain_and_type): use valp argument.
+
+Thu Jan 1 19:36:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate family_to_str.
+
+ * ext/socket/socket.c (ipaddr): use family_to_str.
+
+Thu Jan 1 17:37:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate socktype_to_int.
+
+ * ext/socket/socket.c (setup_domain_and_type): use socktype_to_int.
+
+Thu Jan 1 17:26:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (setup_domain_and_type): initialize ptr.
+
+Thu Jan 1 17:01:50 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: refine family_to_int.
+
+Thu Jan 1 16:48:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate family_to_int().
+
+ * ext/socket/socket.c (setup_domain_and_type): use family_to_int.
+
+Thu Jan 1 15:08:46 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/file2lastrev.rb: supports git repositories which are cloned
+ from a git-svn gateway.
+ Patch by Hongli Lai. [ruby-core:21020]
+
+Thu Jan 1 16:08:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate init_constants function.
+
+ * ext/socket/socket.c (Init_socket): call init_constants.
+
+Thu Jan 1 16:03:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (Socket::AF_INET6): moved from socket.c.
+ (Socket::PF_INET6): ditto.
+
+Thu Jan 1 15:27:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use erb.
+
+Thu Jan 1 15:07:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: add -o option.
+
+ * ext/socket/depend: use mkconstants.rb with -o option.
+
+Thu Jan 1 07:42:36 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/singleton.rb: fix indentation of RDoc text. [ruby-core:21029]
+
+Thu Jan 1 07:16:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (distclean-ext, realclean-ext): use EXTS as default.
+
+ * win32/Makefile.sub (distclean-ext, realclean-ext): try to remove ext
+ directory.
+
+Thu Jan 1 06:56:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/file2lastrev.rb: unset PWD.
+
+Wed Dec 31 23:37:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_socketpair): yield if a block is given.
+ (io_call_close): defined.
+ (io_close): defined.
+ (pair_yield): defined.
+
+Wed Dec 31 19:35:57 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/README: follows the change of directory structure in rubyspec.
+
+ * spec/default.mspec: ditto. Also follows change of mspec command.
+
+ * Makefile.in: ditto.
+
+Wed Dec 31 17:16:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read_internal): show openssl error
+ code in EWOULDBLOCK error.
+
+Wed Dec 31 15:45:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_body): don't check to_io because
+ Zlib::GzipWriter#to_io returns the underlying IO.
+
+Wed Dec 31 14:52:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_digest.c (GetDigestPtr): use StringValueCStr
+ instead of STR2CSTR.
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_key_initialize): ditto.
+ (ossl_ec_group_initialize): ditto.
+
+Wed Dec 31 14:12:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_to_float): replaced by to_flo definition from
+ math.c [ruby-dev:37668]
+
+ * math.c (Need_Float): use rb_to_float().
+
+Wed Dec 31 13:49:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#read_nonblock):
+ implemented.
+
+ * ext/openssl/ossl_ssl.c (rb_sys_fail_path): removed.
+ (fcntl.h): don't include.
+ (ossl_ssl_read_internal): defined.
+ (ossl_ssl_read): use ossl_ssl_read_internal.
+ (ossl_ssl_read_nonblock): use ossl_ssl_read_internal.
+ (Init_ossl_ssl): define sysread_nonblock, instead of read_nonblock.
+
+Wed Dec 31 00:27:54 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_to_float): prohibit conversion from nil to float.
+ [ruby-dev:37663]
+
+ * pack.c (pack_pack): replace all rb_Float() to rb_to_float().
+ [ruby-dev:37663]
+
+Tue Dec 30 21:17:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use sock_define_uconst for INADDR_*
+ constants because Socket::INADDR_LOOPBACK should be 0x7f000001
+ instead of -0xffffff.
+
+ * ext/socket/socket.c (sock_define_uconst): defined.
+
+Tue Dec 30 18:23:10 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.3.1 r4506.
+ * test/minitest/*.rb: ditto.
+
+Tue Dec 30 17:59:59 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: Minor fixes and tweaks in documentation.
+
+Tue Dec 30 17:03:51 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ext/dl/test/test_import.rb: fix a prototype decl.
+ pointed out by Takehiro Kubo [ruby-core:20971].
+
+Tue Dec 30 16:56:09 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_blocking_region): add a comment.
+
+ * thread.c (rb_thread_call_without_gvl): added as a alias of
+ rb_thread_blocking_region().
+
+ * thread.c (rb_thread_call_with_gvl): added.
+
+ * vm_core.h (rb_thread_t#blocking_region_buffer): added for
+ rb_thread_call_with_gvl().
+
+Mon Dec 29 23:41:42 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ext/dl/test/test_base.rb: add libc search logic.
+ this patch is written by Takehiro Kubo.
+ [ruby-core:20963] [Bug #932]
+
+ * ext/dl/dl.h: Add ",..." as the last argument.
+ this patch is written by Takehiro Kubo.
+ Bug #633 [ruby-core:19289]
+
+ * ext/dl/lib/dl/stack.rb: add add_padding() to calculate
+ alignment. this patch is written by Takehiro Kubo.
+ Bug #633 [ruby-core:19289]
+
+ * ext/dl/test/test_func.rb: atof()'s return value is double.
+ this patch is written by Takehiro Kubo.
+ Bug #633 [ruby-core:19289]
+
+ * ext/dl/test/test_import.rb:
+ - atof()'s return value is double.
+ - The types of qsort's second and third argument are size_t.
+ - fprintf()'s return value is int.
+ this patch is written by Takehiro Kubo.
+ Bug #633 [ruby-core:19289]
+
+Mon Dec 29 22:37:17 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * process.c (rb_waitpid): retries waitpid when EINTR.
+ [ruby-core:19744].
+
+Mon Dec 29 23:18:52 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * bignum.c (rb_cstr_to_inum): changed an error message.
+
+ * complex.c (string_to_c_strict): ditto.
+
+ * rational.c (string_to_r_strict): ditto.
+
+Mon Dec 29 22:37:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): template f should not accept non float
+ values. [ruby-dev:37656]
+
+ * object.c (rb_to_float): new function to type check floats.
+
+Mon Dec 29 22:27:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c (rb_f_rand): type check simplified. strings are no
+ longer allowed for argument. [ruby-dev:37655]
+
+ * test/ruby/test_rand.rb (TestRand::o.to_int): need override
+ to_int.
+
+Mon Dec 29 21:22:31 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: Infinity.numerator returns self. [experimental]
+
+ * numeric.c: Infinity.denominator returns 1. [experimental]
+
+Mon Dec 29 20:57:14 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/ri.1: new manpage.
+
+Mon Dec 29 20:45:25 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: floor, ceil, truncate and round accept an extra
+ argument like Float#round. [experimental]
+
+Mon Dec 29 18:24:49 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Makefile.in (distclean-local): removes Doxyfile and
+ run.gdb at distclean'ing.
+
+Mon Dec 29 17:53:24 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * bin/erb: accepts options in more flexible styles.
+
+Mon Dec 29 17:25:17 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/erb.rb (ERB): m17n of ERB. adds rdoc.
+ fixes #712. c.f. [ruby-dev:37516].
+
+ * lib/erb.rb (ERB::Compiler#compile): recognizes magic comments.
+ returns a pair of compiled script and its script encoding.
+
+ * lib/erb.rb (ERB#set_eoutvar): make generated scripts return a
+ string in correct encoding.
+
+ * lib/erb.rb (ERB#def_method): use Kernel#eval for encoding-awareness
+ of the evaluated string.
+
+ * bin/erb.rb (ERB::Main.run): adds -E and -U options.
+ String is no longer Enumerable.
+
+ * man/erb.1: new manpage.
+
+ * test/erb/test_erb_m17n.rb: new test case for m17n features.
+
+Mon Dec 29 18:02:45 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/io/wait/wait.c (io_nread): returns number of bytes available
+ for read. response to feature request #936 in [ruby-core:20917].
+
+Mon Dec 29 17:52:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/io/wait/wait.c (io_ready_p): updated to follow RDoc.
+
+Mon Dec 29 16:52:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (s_recvfrom_nonblock): revert r21162.
+
+Mon Dec 29 16:16:20 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_set_eval_stack, vm_set_main_stack, vm_set_top_stack):
+ check stack overflow. [ruby-dev:37646]
+
+Sun Dec 28 18:36:33 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/rubygems/test_gem_command.rb
+ (test_add_option_overlapping_common_and_local_options):
+ follows r21066.
+
+Mon Dec 29 14:50:19 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Makefile.in (ext-clean): ext-clean always fails.
+
+ * ext/dl/ripper/extconf.rb: adds y.output into the clean list.
+
+Mon Dec 29 11:58:39 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_mutex_trylock): return false if Mutex owned
+ by current thread. [ruby-core:20943]
+
+ * thread.c (rb_mutex_lock): check dead lock (recursive lock) here.
+
+ * test/ruby/test_thread.rb: add a test.
+
+Mon Dec 29 10:58:54 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (rb_get_path): move encoding conversion of file path
+ from rb_scan_open_args.
+
+ * io.c (rb_scan_open_args): ditto.
+
+Mon Dec 29 07:15:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * cont.c: small RDoc fix mentioned from <radek.bulat at gmail.com>
+ in [ruby-core:20921].
+
+Mon Dec 29 03:43:25 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (process_options): set th->base_block only while
+ it is needed. [ruby-dev:37634] [Bug #939]
+
+ * ruby.c (require_libraries): clear th->base_block before
+ require libraries.
+
+Sun Dec 28 21:33:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ext/dl/test_base.rb: add BSD's case.
+
+Sun Dec 28 21:09:12 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/dl/lib/dl/import.rb (DL::Importer#sizeof): follows
+ a feature change in 1.9.
+
+Sun Dec 28 21:03:07 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/dl/lib/dl/import.rb (DL::Importer#extern): adds filename and
+ line number to module_eval'ing for readability of backtrace.
+ (DL::Importer#bind): ditto.
+
+ * ext/dl/lib/dl/struct.rb (DL::CStructBuilder#create): ditto.
+
+Sun Dec 28 19:11:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): do not use snprintf/vsnprintf in
+ msvcrt.
+
+ * sprintf.c: not force to override snprintf/vsnprintf.
+ [ruby-core:20824]
+
+Sun Dec 28 17:21:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rubygems/test_ext_configure_builder.rb (test_self_build_fail):
+ Extends pattern for FreeBSD's error message.
+
+Sun Dec 28 17:10:13 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/dl/test/test_dl2.rb: modify strncpy, strcpy, qsort, types.
+ Patch by Takehiro Kubo.
+ Bug #633 [ruby-core:19289]
+ * ext/dl/test/test_base.rb: /lib/libc.so is x86_64 binary in x86_64 architecture.
+
+Sun Dec 28 12:53:10 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/dl/test/test_base.rb: use libc.dylib when the platform is darwin.
+
+Sun Dec 28 12:24:14 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (mutex_free, mutex_unlock): add qualifiers.
+
+Sun Dec 28 10:28:04 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (mutex_free): GC thread (main thread) has failed to unlock
+ a mutex that is locked by another thread, which makes the mutex
+ dangling in keeping_mutexes and causes [BUG] or stuck finally.
+ Now unlocking is performed as locking thread.
+
+ * thread.c (mutex_unlock, rb_mutex_unlock, rb_mutex_unlock_all):
+ mutex_unlock receives a thread.
+
+Sun Dec 28 05:44:44 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.3.1 r4505.
+ * test/minitest/*.rb: ditto.
+
+Sun Dec 28 00:43:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * runruby.rb: refactored to modify ENV as once.
+
+Sat Dec 27 22:41:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_info_formatting.rb (setup, teardown): uses
+ mktmpdir and removes it after the test.
+
+ * test/cgi/test_cgi_session.rb (setup, teardown): ditto.
+
+Sat Dec 27 21:46:10 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/dl/test/test_base.rb: use lib64 when the architecture is x86_64.
+
+Sat Dec 27 20:26:59 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_argv_size): if an argument is empty, it's size
+ is 2, not 0, because it will be converted to "".
+
+Sat Dec 27 19:40:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (after_exec): needs to reset before restart timer
+ thread.
+
+ * thread.c (thread_start_func_2): stops timer thread if forked in
+ the new thread. [ruby-core:19385]
+
+ * thread.c (rb_thread_atfork, rb_thread_atfork_before_exec): DRY.
+
+Sat Dec 27 18:25:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_eval.c (rb_f_loop): return enumerator if no block given.
+ [ruby-list:45747]
+
+Sat Dec 27 17:08:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (dummy_gdb_enums.special_consts): forces to load debug
+ info on Mac OS X.
+
+ * .gdbinit (rp): added T_ZOMBIE.
+
+Sat Dec 27 16:18:02 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_frame_callee, rb_frame_caller): rb_frame_callee()
+ should return method id on current frame.
+ add rb_frame_caller() to get method id on parent frame.
+ Bug #884 [ruby-dev:37446]
+
+ * eval.c (rb_f_method_name): use rb_frame_caller()
+ instead of rb_frame_callee().
+
+Sat Dec 27 15:28:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): show source and destination
+ encoding. [ruby-dev:37285]
+
+Sat Dec 27 15:23:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_yield_with_cfunc): rename parameter name
+ "blockptr" to "blockargptr".
+
+Sat Dec 27 15:15:56 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (revision.h): ignores failure of file2lastrev.
+
+Sat Dec 27 15:02:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (process_options): fix to untouch th->mild_compile_error.
+ [ruby-dev:37621], [ruby-dev:37620]
+
+Sat Dec 27 14:48:26 2008 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.h, iseq.c (rb_iseq_new_main): add a type ISEQ_TYPE_MAIN.
+ [ruby-dev:37619]
+
+ * compile.c (rb_dvar_defined, ruby_iseq_compile): ditto.
+
+ * iseq.c (iseq_data_to_ary, iseq_load): ditto.
+
+ * compile.c (iseq_compile_each): fix to check ip->compile_data.
+
+Sat Dec 27 14:29:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI.redirectable?): permit https redirection.
+ patch from Roman Shterenzon. [ruby-core:20485]
+
+Sat Dec 27 13:36:55 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (get_errinfo): return th->errinfo value
+ if normal errinfo place (dynamic local variable) is not found.
+ fixes Bug #732 [ruby-dev:37046].
+
+ * bootstraptest/test_proc.rb: add a test.
+
+Sat Dec 27 13:10:43 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/irb.1: adds -v, -h, -E and -U.
+
+Sat Dec 27 11:41:45 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method, vm_call_cfunc): use original id instead of
+ calling id when NODE_CFUNC or NODE_BMETHOD.
+ fixes Bug #632 [ruby-core:19282].
+
+ * vm_eval.c (vm_call0, vm_call_super): ditto.
+
+ * vm_method.c (rb_add_method, rb_alias): store original id
+ in nd_file field of NODE_METHOD.
+
+ * test/stringio/test_stringio.rb: add a test.
+
+Sat Dec 27 09:48:54 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (Init_VM): create and define TOPLEVEL_BINDING at first.
+
+ * vm.c (vm_set_main_stack, rb_iseq_eval_main): added.
+
+ * parse.y (rb_parser_compile_file): fix to check parse_in_eval flag.
+
+ * eval.c (ruby_exec_node): use rb_iseq_eval_main()
+ instead of rb_iseq_eval().
+
+ * iseq.c (rb_iseq_new_main), vm_core.h: added.
+ main script (specified by -e or script name) should be run
+ under TOPLEVEL_BINDING using Kernel#eval. Above changes
+ simulate Kernel#eval behaviour. [ruby-dev:37240]
+
+ * compile.c (make_name_for_block): skip iseq except block type.
+ this fix is needed for [ruby-dev:37240], and also fixes
+ [ruby-dev:35392].
+
+Sat Dec 27 09:14:17 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * cont.c: rdoc for Fiber. patch by Muhammad Ali.
+ [ruby-core:20894]
+
+Sat Dec 27 05:38:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (after_fork): ignores a termination request in the
+ parent process. [ruby-dev:37447]
+
+Sat Dec 27 01:52:39 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Using a more robust transcoding scheme to produce
+ ASCII compatible inspect() messages. [ruby-dev:37591]
+
+Fri Dec 26 18:04:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fptr_finalize): don't allocate objects if noraise.
+ (finish_writeconv): add noalloc argument to be able to avoid
+ object allocation.
+ (finish_writeconv_arg): introduced again.
+ (finish_writeconv_sync): follow the above change.
+
+Fri Dec 26 17:04:14 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/input-method.rb (IRB::StdioInputMethod#initialize):
+ removed a 'p' for debugging.
+
+Fri Dec 26 15:50:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::List#summarize): gives priority
+ to latter switches. [ruby-dev:36692]
+
+ * lib/optparse.rb (OptionParser#summarize): do not append
+ unnecessary line terminator.
+
+Fri Dec 26 14:01:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fptr_finalize): close the IO object even if finish_writeconv or
+ flush is failed.
+ (finish_writeconv): don't raise. return errno or exception.
+ (finish_writeconv_arg): removed.
+ (finish_writeconv_sync): follow finish_writeconv change.
+
+ * transcode.c (rb_econv_make_exception): new function.
+
+ * include/ruby/encoding.h (rb_econv_make_exception): declared.
+
+Thu Dec 25 20:57:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (str_transcode0): set encoding when String#encode was
+ given explicit but the same destination and source encoding.
+
+Thu Dec 25 20:01:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_s_pipe): unused variable removed.
+
+Thu Dec 25 19:35:51 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (sym_ignore): remove useless symbol.
+
+Thu Dec 25 18:36:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (pipe_close): removed.
+ (pipe_yield): defined.
+ (rb_io_s_pipe): use pipe_yield.
+
+Thu Dec 25 17:49:45 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (decorate_convpath): show type of escaping for
+ xml_attr_quote or some conversions.
+
+Thu Dec 25 17:06:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_initialize): check fd validity. [ruby-dev:36646]
+
+Thu Dec 25 16:23:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (flush_before_seek): check io_fflush result.
+ (rb_io_check_readable): ditto.
+ (rb_io_flush): ditto.
+ (rb_io_fsync): ditto.
+ (remain_size): ditto.
+ (rb_io_write_nonblock): ditto.
+ (finish_writeconv): ditto.
+ (fptr_finalize): ditto.
+ (io_reopen): ditto.
+ (rb_io_reopen): ditto.
+ (copy_stream_body): ditto.
+
+Thu Dec 25 15:54:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fflush): flush write buffer without write lock in
+ finalizers. [ruby-dev:37572]
+
+ * io.c (rb_io_fptr_finalize): clear write lock before finalizing.
+
+Thu Dec 25 15:07:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fptr_finalize): close the IO object even if close(2) is failed.
+
+Thu Dec 25 14:51:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/parser.rb (RDoc::Parser.binary?): should read in binary mode.
+
+Thu Dec 25 14:32:23 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_method_search): fix control flow bug.
+ (committed at r20981)
+
+Thu Dec 25 13:28:20 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_flush): fsync() after buffer is flushed on win32.
+ [ruby-core:20043]
+
+Thu Dec 25 13:13:00 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_method_search): return rb_cObject if there is no
+ super class. [ruby-dev:37587]
+
+ * bootstraptest/test_method.rb: add tests for above.
+
+Thu Dec 25 12:49:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (proc_new): should use proc_dup() if block has Proc.
+
+ * vm.c (vm_make_proc_from_block): should use rb_cProc for block.
+
+ * vm.c (vm_make_proc): add an assertion.
+
+ * bootstraptest/test_proc.rb: add a test.
+
+Thu Dec 25 12:44:27 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_yield_with_cfunc): check block has Proc.
+
+Thu Dec 25 05:53:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl, id.h (ruby_method_ids): not depend on if
+ token are defined as macros. [ruby-dev:37553]
+
+ * template/id.h.tmpl, id.h (ruby_method_ids_check): enclosed in a
+ struct.
+
+Thu Dec 25 01:52:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): sets native thread key.
+
+Thu Dec 25 01:09:23 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline_history.rb: check the encoding that
+ is in the Readline::HISTORY.
+
+Thu Dec 25 00:59:06 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline_history.rb: did not check the
+ encoding that is in the Readline::HISTORY. I will fix it.
+
+Wed Dec 24 22:36:06 2008 Koichi Sasada <ko1@atdot.net>
+
+ * error.c, vm_dump.c: change message by rb_bug().
+
+Wed Dec 24 21:57:39 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_peephole_optimize): fix typo.
+
+Sun Dec 21 13:38:04 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (invoke_block_from_c): fix to point right cfp.
+
+ * vm.c (vm_make_proc, vm_make_proc_from_block), vm_core.h:
+ remove unused parameter cfp.
+
+ * vm_insnhelper.c, proc.c (proc_new): ditto.
+
+Wed Dec 24 20:59:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * error.c (exc_equal): == method should not raise Exception.
+ [ruby-dev:37519]
+
+ * sample/test.rb: fix test.
+
+Wed Dec 24 20:33:45 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): use class of method defined
+ instead of receiver's class on bmethod. fixes [ruby-core:20786]
+
+ * bootstraptest/test_method.rb: add a test for above.
+
+ * vm_insnhelper.c (vm_setup_method): remove unused parameter klass.
+
+ * vm_insnhelper.h (CALL_METHOD): ditto.
+
+ * insns.def, vm_eval.c: ditto.
+
+Wed Dec 24 20:15:50 2008 Koichi Sasada <ko1@atdot.net>
+
+ * tool/file2lastrev.rb (get_revisions): fix to ignore end of line.
+
+Wed Dec 24 13:33:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (HAVE_LONG_LONG, HAVE_OFF_T): revised for autoconf
+ 2.62 or later.
+
+Wed Dec 24 06:29:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (OBJDUMP, OBJCOPY): autoconf list is not comma
+ separated.
+
+ * configure.in (AC_HEADER_STDC, AC_CHECK_HEADERS, AC_CHECK_FUNCS):
+ removed duplicated checks.
+
+Wed Dec 24 03:21:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el: added comment to mention newer version
+ bundled with Emacs 23 or later. a patch from Phil Hagelberg
+ <phil at hagelb.org> in [ruby-core:20838].
+
+Tue Dec 23 23:49:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_init_copy): call io_seek only if io_tell succeeds.
+
+Tue Dec 23 22:57:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork): don't propagate an error message if error
+ buffer not given.
+
+Tue Dec 23 21:55:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork): propagate an error message from child to parent.
+ (rb_f_exec): show details of error in child process on
+ exception.
+ (save_redirect_fd): add error message arguments.
+ (run_exec_dup2): ditto.
+ (run_exec_close): ditto.
+ (run_exec_open): ditto.
+ (run_exec_dup2_child): ditto.
+ (run_exec_pgroup): ditto.
+ (run_exec_rlimit): ditto.
+ (rb_run_exec_options): ditto.
+ (rb_exec): ditto.
+ (rb_exec_atfork): ditto.
+ (rb_spawn_internal): ditto.
+ (rb_spawn): ditto.
+ (rb_f_system): follow arguments change.
+ (proc_daemon): ditto.
+ (rb_f_spawn): show details of error in child process on exception.
+
+ * io.c (popen_exec): add error message arguments.
+ (pipe_open): show details of error in child process on exception.
+
+ * include/ruby/intern.h (rb_run_exec_options): add error message
+ arguments.
+ (rb_exec): ditto.
+ (rb_fork): ditto.
+ (rb_spawn): ditto.
+
+ * ext/pty/pty.c (chfunc): add error message arguments.
+
+Tue Dec 23 20:28:28 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * io.c: rdoc for File::open and 1.9 feature in file modes.
+
+ * transcode.c: rdoc for String#encode
+
+Tue Dec 23 19:51:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): deals with quoted commands.
+
+Tue Dec 23 18:44:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime): use locale insensitive functions for tr_TR
+ locale.
+
+Tue Dec 23 17:38:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb (assert_equal): show small differences
+ for Regexp and Float.
+
+Tue Dec 23 16:49:48 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): support normal commands with arguments.
+
+Tue Dec 23 16:22:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_inspect): show fd number if there is no pathname.
+
+Tue Dec 23 15:48:55 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/file2lastrev.rb: shouldn't use single quote in shell's command
+ line if you want to support Windows.
+
+Tue Dec 23 15:46:43 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/mathn.rb: Math.sqrt(NaN) should be NaN. [ruby-dev:37537]
+
+Tue Dec 23 15:46:47 2008 Eric Hodel <drbrain@segment7.net>
+ * gem_prelude.rb: Match full RubyGems behavior when a gem can't be
+ found.
+
+Tue Dec 23 15:36:58 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/file2lastrev.rb: detects vcs directory properly on building
+ outside of srcdir. [ruby-dev:37555] [ruby-dev:37561]
+
+Tue Dec 23 15:30:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): need to initialize args.
+
+Tue Dec 23 14:18:14 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/st.h: need to include defines.h because LONG_LONG is
+ defined there.
+
+Tue Dec 23 13:52:05 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser/c.rb: Don't coalesce adjacent comment blocks.
+ [bug#901]
+
+Tue Dec 23 12:00:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (pipe_close): fix coding style. [ruby-dev:37554]
+
+Tue Dec 23 08:10:05 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Fix documentation. [bug#827]
+
+Tue Dec 23 08:04:58 2008 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Don't remove methods twice. [bug#555]
+
+Tue Dec 23 00:16:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * sprintf.c (rb_str_format): fix buffer overflow.
+
+Mon Dec 22 19:31:19 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (revision.h): uses tool/file2lastrev.rb to support
+ git-svn.
+
+ * version.h: changed version string as
+ `ruby 1.9.1 (2008-12-22 patchlevel-5000 trunk 20912)
+ [i386-darwin9.6.0]'.
+
+Mon Dec 22 16:32:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): encoding of packed string only from 'm',
+ 'M', and 'u' should be US-ASCII. [ruby-dev:37284]
+
+ * pack.c (pack_pack): encoding of packed string only from 'U'
+ should be UTF-8. also upgrade US-ASCII strings to UTF-8.
+
+Mon Dec 22 15:56:49 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Doxyfile.in: new file. Template of a configuration file.
+ Introduces C-level API reference generation with Doxygen.
+
+ * tool/file2lastrev.rb: wrapper script that abstracts subversion
+ and git-svn.
+
+ * tool/strip-rdoc.rb: filter for preventing doxygen from processing
+ rdoc comments.
+
+ * configure.in: (Doxyfile): Doxyfile is generated together with
+ Makefile.
+ (PACKAGE): configuration $(PACKAGE) is necessary for $(docdir).
+
+ * instruby.rb: adds a new install target 'capi'
+
+ * common.mk (capi): new target that generates C API documents with
+ Doxygen.
+ (install-capi): new target.
+ (pre-install-capi): ditto.
+ (do-install-capi): ditto.
+ (post-install-capi): ditto.
+
+Mon Dec 22 21:31:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (int_ord): Integer#ord implemented.
+
+Mon Dec 22 21:26:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_s_pipe): IO.pipe can take a block.
+ (pipe_close): new function.
+
+Mon Dec 22 21:08:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb (assert_nothing_raised): increment
+ assertion count. [ruby-dev:37480]
+
+Mon Dec 22 19:10:44 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (Init_native_thread): need to call
+ ruby_thread_set_native() here.
+
+Mon Dec 22 18:00:36 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: fix wrong flag value.
+
+Mon Dec 22 15:15:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/protocol.rb (Net::BufferedIO#rbuf_fill): avoid calling
+ read_nonblock in rescue. use retry instead.
+
+Mon Dec 22 14:35:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_external_str_new_with_enc): set ASCII-8BIT if
+ encoding is US-ASCII and string contains 8bit characters.
+
+Mon Dec 22 12:26:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (rubydll.def), win32/mkexports.rb
+ (Exports#exports): added VERSION.
+
+Mon Dec 22 12:25:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD_vfprintf): fix for test_sprintf_comb.rb, by
+ wanabe in [ruby-dev:36935].
+
+Mon Dec 22 12:05:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (mingw): no longer uses snprintf and vsnprintf of
+ msvcrt. [Bug#6]
+
+ * win32/win32.c (rb_w32_vsnprintf, rb_w32_snprintf): removed.
+
+ * win32/Makefile.sub (config.h): vsnprintf exists in VC7 or later.
+
+ * win32/mkexports.rb (Exports#initialize): aliases
+ rb_w32_vsnprintf and rb_w32_snprintf for binary compatibility.
+
+ * sprintf.c (rb_str_format): uses snprintf instead of sprintf.
+
+ * numeric.c (flo_to_s, rb_num2long, rb_num2ll): ditto.
+
+Mon Dec 22 10:59:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): should return enumerator if called
+ without block. [ruby-dev:37526]
+
+Mon Dec 22 09:54:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (gettable_gen): the encoding of __FILE__ should be
+ rb_filesystem_encoding(). [ruby-list:45733]
+
+ * parse.y (gettable_gen): __FILE__ should be ASCII-8BIT when
+ filesystem encoding is US-ASCII and __FILE__ contains non 7bit
+ characters.
+
+Mon Dec 22 02:54:56 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: temporary patch for trouble on TkAqua (> Tk8.4.9).
+
+ * ext/tk/sample/demos-jp/widget: set encoding to a demo-code string to
+ avoid garbled text on the Code Window.
+
+Sun Dec 21 14:55:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (SPLAT_PROC): splat values by hand.
+
+Sun Dec 21 13:50:37 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline.rb
+ (TestReadline#test_some_characters_methods): checked encoding.
+
+Sun Dec 21 12:23:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (SPLAT_PROC): fix for regexp. [ruby-dev:37514]
+
+Sun Dec 21 10:43:10 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * sample/test.rb: rescue exception.
+
+Sat Dec 20 18:28:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_1): supplements an extension for executable
+ files on DOSish platforms.
+
+ * io.c (pipe_open): use rb_w32_aspawn() for array form.
+
+ * win32/win32.c (rb_w32_pipe_exec): no longer used.
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): deals with batch
+ files and commands with extensions. [ruby-core:20695]
+
+ * win32/win32.c (has_redirection): supports environment variables
+ references.
+
+Sat Dec 20 15:34:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rake.rb (Rake::FileList#egrep): change open mode to "rb",
+ i.e. default to binary. [ruby-dev:37385]
+
+ * lib/rake.rb (Rake::FileList#egrep): allow specifying reading
+ encoding, e.g. FileList['*.rb'].egrep(/require/, encoding:
+ "ascii-8bit")
+
+ * lib/rake.rb (Rake::MultiTask): invoke_prerequisites should be
+ private. a patch from okkez in [ruby-dev:37399]
+
+Sat Dec 20 10:59:16 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/locale.rb (IRB::Locale#initialize)
+ initializes instance variables to suppress warnings.
+ typo fix to ignore LoadError: [ruby-dev:37508]
+
+Fri Dec 19 17:01:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_extract_encoding_option): "internal_encoding: nil"
+ to specify no-transcoding. and other corner case fixed.
+ [ruby-dev:37496]
+
+ * hash.c (rb_hash_lookup2): new function to look-up hash with
+ default value.
+
+Fri Dec 19 15:51:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): get rid of warning on DOSISH.
+
+Fri Dec 19 07:45:37 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_equal): duck typing equal to make it transitive.
+ [ruby-dev:34808]
+
+Thu Dec 18 19:31:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/init.rb (IRB.opt_parse): (M17N) adds -U and -E as command
+ line options. [ruby-dev:37161]. Fixes #711.
+ improved long options.
+
+ * lib/irb/init.rb (IRB.set_encoding): new subroutine for IRB.opt_parse
+
+ * lib/irb/input-method.rb (IRB::StdioInputMethod): (M17N) regards
+ scripts that user types as encoded in the external_encoding.
+
+ * lib/irb/input-method.rb (IRB::ReadlineInputMethod): ditto.
+
+ * lib/irb/input-method.rb (IRB::FileInputMethod): (M17N) respects
+ magic comment.
+
+ * lib/irb/help.rb (IRB.print_usage): (M17N) respects magic comment
+ in the resource file.
+
+ * lib/irb/lc/help-message: adds -U and -E.
+
+ * lib/irb/lc/ja/help-message: ditto. re-encoded from ISO-2022-JP into UTF-8.
+
+ * lib/irb/lc/ja/encoding_aliases.rb: new file. provides Japanese specific
+ character encoding name table for backward compatibility.
+
+ * lib/irb/lc/ja/error.rb: re-encoded from ISO-2022-JP into UTF-8.
+ magic comment.
+
+ * lib/irb/locale.rb: integrated with Ruby 1.9's M17N support.
+
+ * lib/irb/magic-file.rb: new file. utility to handle files with magic
+ comment and opens in the correct encoding.
+
+ * lib/irb/ruby-lex.rb (RubyLex#each_top_level_statement): recovers
+ character encoding for a statement after it lexed so that irb can
+ eval the statement in correct encoding.
+
+ * lib/irb/src_encoding.rb: new file. utility.
+
+Thu Dec 18 21:12:28 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/session.rb: fix bug for ignore session_id option.
+ report from [ruby-core:18635], [Bug #572]
+
+ * lib/cgi/core.rb: use Encoding#find when encoding set.
+
+ * test/cgi/test_cgi_session.rb: test for session_id specified.
+
+Thu Dec 18 17:00:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_aset): string key copying only happen if key is
+ an exact instance of String, not a subclass. based on a patch
+ from Mike Gold <mike.gold.4433 at gmail.com> in [ruby-talk:322667].
+ [incompatible] [ruby-talk:322417]
+
+Thu Dec 18 16:48:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/optparse/version.rb: remove variable shadowing to stop
+ warning. [ruby-core:20612]
+
+ * lib/irb/completion.rb, lib/net/imap.rb, lib/prime.rb,
+ lib/rinda/ring.rb, lib/racc/parser.rb,
+ lib/shell/command-processor.rb, lib/yaml/yamlnode.rb: ditto.
+
+ * lib/racc/parser.rb: remove space before parentheses.
+
+ * lib/shell/command-processor.rb, lib/shell/process-controller.rb:
+ use parentheses around arguments.
+
+ * lib/irb/ext/change-ws.rb, lib/rexml/validation/relaxng.rb,
+ lib/yaml/baseemitter.rb: indentation fix.
+
+ * lib/matrix.rb: small cosmetic change.
+
+Thu Dec 18 08:15:04 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb: Restricting method inspection to show only
+ non-inherited public methods. [ruby-core:20603]
+
+ * lib/xmlrpc/server.rb: Fixing method inspection so it doesn't
+ trigger XMLRPC::FaultException when used. [ruby-core:20604]
+
+Wed Dec 17 19:39:44 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (unix_recv_io): relax msg_controllen error
+ check for x86_64-openbsd4.4.
+
+Wed Dec 17 19:37:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/extconf.rb: check util.h for OpenBSD.
+
+ * ext/pty/pty.c: include util.h if available. fix variable name.
+
+Wed Dec 17 19:23:28 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/matrix.rb: shut up warning. [ruby-dev:37481] [Bug #899]
+
+Wed Dec 17 15:44:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_pop_m): use enum ary_take_pos_flags.
+
+ * array.c (rb_ary_push_m): add modification check before actual
+ operation. [ruby-dev:37440]
+
+Wed Dec 17 15:35:39 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in (OBJDUMP, OBJCOPY):
+ *BSD's ports and MacPorts prefix GNU binutils with 'g'.
+
+Wed Dec 17 11:39:39 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/bigdecimal/test_bigdecimal.rb (TestBigDecimal#test_hash):
+ shut up warning. see [ruby-dev:37437]
+
+Wed Dec 17 11:01:35 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_hash): gets rid of collisions between different
+ encoding strings. [ruby-core:20526]
+
+Wed Dec 17 09:50:19 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_metaclass.rb: removed codes for my debugging.
+ sorry. [ruby-dev:37470]
+
+Tue Dec 16 22:55:11 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bin/testrb: set $0.
+
+Tue Dec 16 22:42:16 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): sorry, fixed wrong commit.
+
+Tue Dec 16 22:15:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/minitest/unit.rb (MiniTest::Assertions#assert_instance_of):
+ should assert by instance_of?, not ===. [ruby-dev:37458]
+
+ * lib/minitest/unit.rb (MiniTest::Assertions#assert_instance_of):
+ typo fixed.
+
+Tue Dec 16 21:59:29 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): ALT_SEPARATOR support.
+
+Tue Dec 16 21:59:02 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpToString): reverted modification
+ (that caused a bug) in r20359. [ruby-dev:37370]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_limit): comment update.
+ [ruby-dev:37465]
+
+Tue Dec 16 20:34:44 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (getDevice): add nomesg argument.
+ (get_device_once): add nomesg argument. chmod slave tty to 0600
+ if nomesg. more error tests.
+ (no_mesg): new function.
+ (pty_open): make slave tty's mode 0600.
+
+Tue Dec 16 20:24:20 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (_parse): m17n compliant.
+
+Tue Dec 16 19:48:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/extconf.rb: check posix_openpt.
+
+ * ext/pty/pty.c (get_device_once): use posix_openpt if available.
+
+Tue Dec 16 19:43:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c: use strlcpy for error messages.
+
+Tue Dec 16 16:41:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): returns dispatched result.
+
+ * parse.y (primary): also in ripper, saves in_def before restoring.
+
+Tue Dec 16 12:30:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_cv_header_ucontext_h): do not use ucontext.h on Mac
+ OS X 10.5 or later. merged from MacPorts.
+
+ * configure.in (ac_cv_func_daemon): daemon(3) is deprecated on Mac OS
+ X 10.5 or later.
+
+Tue Dec 16 11:37:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (set_arg0): use strlcpy() instead of strncpy().
+
+ * load.c (rb_feature_p): ditto.
+
+ * dln.c (dln_load): ditto.
+
+Tue Dec 16 09:14:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (block_call): block should not be given to yield.
+ [ruby-core:20583]
+
+Mon Dec 15 23:48:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (sleep_timeval): cast tv_usec to long to shut up
+ warnings on OSX. [ruby-dev:37449]
+
+Mon Dec 15 23:34:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (pty_open): set FMODE_SYNC and FMODE_DUPLEX.
+
+Mon Dec 15 23:29:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (process_options): revive global sub, gsub, chop, chomp
+ only when auto looping options (-p/-n) is specified.
+ [ruby-core:20570]
+
+Mon Dec 15 22:48:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (pty_open): new method PTY.open.
+
+Mon Dec 15 21:24:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (get_device_once): use DEVICELEN instead of
+ sizeof SlaveName.
+
+Mon Dec 15 21:01:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (chfunc): make it static.
+
+Mon Dec 15 20:59:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (child_info): add slavename.
+ (chfunc): use slavename.
+ (establishShell): set slavename.
+
+Mon Dec 15 20:16:46 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (EXTMK_ARGS): shouldn't use ``\"'' because cmd.exe eat
+ ''\'' in such quotes.
+
+Mon Dec 15 19:07:31 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): define CANONICALIZATION_FOR_MATHN
+ to follow r20683.
+
+Mon Dec 15 18:12:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rake/packagetask.rb (Rake::PackageTask): small document
+ update from okkez in [ruby-dev:37443]
+
+Mon Dec 15 16:28:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_callee_setup_arg_complex): uses cfp from
+ blockptr instead of the current cfp. [ruby-core:20544]
+
+Mon Dec 15 14:56:59 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_metaclass.rb: new test case for metaclass hierarchy.
+
+ * class.c (make_metametaclass): new function. extracted from
+ rb_make_metaclass.
+
+ * class.c (rb_make_metaclass): uses make_metametaclass when called for a
+ metaclass.
+
+ * class.c (rb_singleton_class): creates a meta^(n+2)-class in
+ addition to a meta^(n+1)-class when called for a meta^(n)-class.
+ This is because the returned meta^(n+1) class must acts as an instance of
+ Class, metaclass of Class, ..., meta^(n+1)-class of Class,
+ Module, metaclass of Module, ..., meta^(n+1)-class of Module,
+ Object, metaclass of Object, ..., meta^(n+2)-class of Object,
+ BasicObject, metaclass of BasicObject, ..., meta^(n+2)-class of
+ and BasicObject even when Class, Module, Object or BasicObject has
+ not have its meta^(i)-class yet.
+
+Mon Dec 15 15:13:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * id.h, template/id.h.tmpl (ruby_method_ids): sees YYTOKENTYPE too.
+ [ruby-dev:37436]
+
+Mon Dec 15 15:02:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (EXTMK_ARGS): needs MINIRUBY for cross-compile.
+ [ruby-core:20131]
+
+Mon Dec 15 14:39:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (vm_call0): NODE_ZSUPER supported. [ruby-core:20480]
+
+ * vm_eval.c (vm_call_super): uses method_missing().
+
+ * vm_eval.c (method_missing): get rid of too large alloca.
+
+ * vm_eval.c (rb_call0, method_missing): uses idMethodMissing.
+
+ * vm_method.c (rb_add_method, remove_method, rb_undef): uses
+ id__send__.
+
+ * vm_method.c (Init_eval_method): removed IDs which are defined as
+ immediate values.
+
+Mon Dec 15 11:35:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace): defaults to script name for C functions.
+
+Mon Dec 15 11:32:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (rubylib_mangled_path, rubylib_mangled_path2): cannot use
+ locale encoding before load path is initialized
+
+ * ruby.c (ruby_init_loadpath_safe): ditto.
+
+ * ruby.c (process_options): loads encdb so that encodings can be
+ loaded, then associates script name and load paths with the
+ locale encoding.
+
+Mon Dec 15 10:00:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (btest-ruby): use RUNRUBY instead of MINIRUBY to load the
+ shared library. [Bug #849]
+
+Sun Dec 14 22:31:19 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (bigmul1_karatsuba): remove temporal bignum.
+
+ * bignum.c (bigsqr): call bigmul0(x, x) because it is faster than the
+ original bigsqr at this point.
+
+ * bignum.c (rb_big_pow): a value returned from bigsqr is already
+ truncated.
+
+Sun Dec 14 21:13:02 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (bigmul1_karatsuba): fix comment and refactoring.
+
+Sun Dec 14 14:53:41 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (bigmul1_balance, bigmul1_karatsuba): remove all
+ rb_gc_force_recycle which causes memory leak.
+
+Sun Dec 14 14:26:11 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/README: directory structure changed
+
+Sun Dec 14 09:14:37 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * reverts r20713.
+
+Sun Dec 14 12:51:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (rb_big_mul): faster multiplication by Karatsuba method and
+ twice faster square than normal multiplication. [ruby-dev:37392]
+
+ * random.c (rb_rand_internal): used by Bignum#*.
+
+ * test/ruby/test_bignum.rb: add some tests for above.
+
+Sun Dec 14 01:35:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (forked_child): new variable.
+ (before_exec): don't call rb_thread_stop_timer_thread if
+ forked_child.
+ (after_exec): reset forked_child after rb_thread_start_timer_thread.
+ (rb_fork): set forked_child just after fork in child.
+
+ * ext/pty/pty.c (chfunc): extracted from establishShell.
+ (establishShell): use rb_fork.
+
+ [ruby-dev:37418]
+
+Sat Dec 13 22:17:30 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (help): describes more targets.
+ based on a patch by Michael Klishin. [ruby-core:20523].
+
+Sat Dec 13 18:34:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_printable): wrong condition for string iteration.
+
+Sat Dec 13 16:04:48 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * encoding.c (default_external): endless recursion during
+ loading a locale encoding on some locale.
+ fixed by Nobuyoshi Nakada.
+
+Sat Dec 13 15:55:37 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ruby.c (process_options): fixed default_internal is nil.
+ (closes #862)
+
+Sat Dec 13 15:52:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_equal): remove documentation error "Otherwise,
+ compares them as strings". [ruby-dev:37398]
+
+ * string.c (sym_inspect): quote if symbol contains non-printable
+ characters. [ruby-dev:37398]
+
+Sat Dec 13 14:24:38 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/enc/test_utf16.rb: feature changed in r20626.
+ follows it.
+
+Sat Dec 13 13:41:44 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_m17n_comb.rb: feature changed in r20626.
+ follows it.
+
+Sat Dec 13 13:03:20 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: use rb_usascii_str_new2 instead of rb_str_new2.
+
+ * rational.c: ditto.
+
+Sat Dec 13 12:48:57 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_m17n.rb: feature changed in r20626.
+ follows it.
+
+Sat Dec 13 12:38:16 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/minitest/test.rb (MinTest::Unit#location):
+ skips user-defined assertions as MiniTest's.
+ e.g. for test/ruby/test_m17n.rb.
+
+Sat Dec 13 09:17:33 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.3.1 r4503.
+ * test/minitest/test_mini_test.rb: ditto.
+ * lib/miniunit/autorun.rb: added (as part of r4503).
+
+Sat Dec 13 08:35:14 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_canonicalization): renamed.
+
+ * ext/math/complex.c: followed the above change.
+
+ * rational.c (nurat_canonicalization): renamed.
+
+ * ext/math/rational.c: followed the above change.
+
+ * configure.in: defines a new macro.
+
+Sat Dec 13 01:10:03 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c
+ (readline_s_get_completion_append_character): uses locale
+ encoding but not ASCII-8BIT.
+
+Fri Dec 12 22:12:46 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c, rational.c: do not use RUBY_VERSION_CODE.
+
+Fri Dec 12 21:41:36 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c: r20662 reverted.
+
+Fri Dec 12 19:29:07 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * encoding.c (rb_enc_set_default_external): default_internal can be
+ nil, but default_external cannot.
+
+ * encoding.c (rb_set_default_internal): adds rdoc.
+
+ * encoding.c (enc_find): ditto.
+
+Fri Dec 12 19:24:47 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (run, runruby, parse, gdb, gdb-ruby): you can also run
+ other scripts than $(srcdir)/test.rb.
+
+Fri Dec 12 19:13:43 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (readline_readline): changed the message
+ of IOError to 'closed stdin' from 'stdin closed' if stdin was
+ closed.
+
+Fri Dec 12 19:00:49 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c: used the ExportStringValue macro
+ instead of the OutputStringValue macro. removed the
+ OutputStringValue macro.
+
+Fri Dec 12 16:23:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yycompile0): ruby_eval_tree_begin is always 0 when
+ ruby_eval_tree is 0.
+
+Fri Dec 12 14:09:55 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * encoding.c (enc_get_default_encoding): removed.
+ Generalizing rb_default_{external,internal}_encoding seems to be
+ difficult.
+ default_external cannot be NULL even before detected. [ruby-dev:37390]
+
+ * encoding.c (rb_default_external_encoding): has its own
+ implementation again.
+
+ * encoding.c (rb_default_internal_encoding): ditto.
+
+ * gem_prelude.rb: added notice.
+
+ * ruby.c (rubylib_mangled_path, rubylib_mangled_path2): uses locale
+ encoding but not ASCII-8BIT.
+
+ * ruby.c (process_options): refers less to default_external.
+
+Fri Dec 12 11:00:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_feature_p): load path must be expanded.
+ [ruby-dev:37388]
+
+Fri Dec 12 10:28:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_version): greps only the line that defines version.
+
+ * version.h (RUBY_VERSION_CODE, RUBY_RELEASE_CODE): removed.
+
+Fri Dec 12 10:20:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c, rational.c: do not use RUBY_VERSION_CODE.
+
+Fri Dec 12 10:19:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_string_value_ptr, rb_to_id): do not use a side
+ effect expression in RSTRING_PTR.
+
+ * string.c (rb_str_split_m): simplified the argument of
+ RSTRING_LEN.
+
+Thu Dec 11 23:48:00 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (sqrt): should pass nan to the original method.
+
+Thu Dec 11 21:04:04 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker.rb, lib/rss/maker/0.9.rb, lib/rss/maker/base.rb:
+ RSS::Maker.[] returns a maker class corresponds to passed version.
+
+ * test/rss/test_maker_*.rb: add tests for RSS::Maker.[].
+
+Thu Dec 11 20:05:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_aliases_enc_i): skips default internal.
+
+Thu Dec 11 19:31:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb: extracted from lib/test/unit.rb.
+ lib/test/unit/testcase.rb: ditto.
+ at asakusa.rb. [ruby-core:20014]
+
+Thu Dec 11 19:23:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb (test_dup_many): extracted from test_dup.
+ test in ruby subprocess. at asakusa.rb. [ruby-dev:35648]
+
+Thu Dec 11 19:16:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#=~): undefed. at asakusa.rb.
+ [ruby-core:19690]
+
+Thu Dec 11 13:09:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (reg_enc_error): raise EncodingCompatibilityError for
+ encoding incompatibility. [ruby-core:18600]
+
+ * re.c (rb_reg_prepare_enc): more consistent error message.
+ [ruby-core:18611]
+
+Thu Dec 11 13:36:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_set_default_encoding): allowed to set default
+ encoding.
+
+ * encoding.c (rb_locale_encoding): removed Encoding::LOCALE.
+
+ * encoding.c (rb_enc_set_default_external): ditto.
+
+ * encoding.c (rb_enc_set_default_internal): ditto.
+
+ * encoding.c (rb_enc_set_default_internal): defines internal
+ encoding as nil.
+
+Thu Dec 11 11:11:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/st.h (size_t): needs stddef.h or stdlib.h.
+ [ruby-core:20339]
+
+Thu Dec 11 10:25:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_bignum.rb (TestBignum#test_convert): remove
+ platform dependent call of Process.wait. coverage should be
+ accomplished by other method. [ruby-dev:36062]
+
+Thu Dec 11 10:18:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): require
+ rexml/formatters/transitive if transitive flag is on. a patch
+ from akira yamada in [ruby-dev:36230]. fix #553
+
+ * lib/rexml/element.rb (REXML::Element#write): ditto.
+
+ * lib/rexml/formatters/transitive.rb (REXML::Formatters::Transitive#write_element):
+ add hack for IE. [ruby-dev:36230]
+
+Thu Dec 11 02:37:22 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (domain_check): should not raise EDOM exception for NaN
+ value if operand is also NaN. affects acos, asin, acosh, atanh,
+ log, log2, log10, sqrt, gamma, lgamma. [ruby-dev:37357]
+
+Thu Dec 11 02:23:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.pipeline_start): return an array of threads if a
+ block is not given.
+
+Thu Dec 11 01:48:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_round): should be round
+ to integer. [ruby-dev:37355]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divmod): division should
+ be integer. [incompatible] [ruby-dev:37355]
+
+Thu Dec 11 01:21:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_mutex_unlock): shut up warning. a patch from
+ Kazuhiro NISHIYAMA in [ruby-dev:37345]. fix #846
+
+Wed Dec 10 23:58:56 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: avoided warnings on cpp. [ruby-dev:37344]
+
+ * rational.c: ditto.
+
+Wed Dec 10 21:32:02 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker.rb (RSS::Maker.[]): add.
+ Suggested by Akinori MUSHA. Thanks!!! [ruby-dev:37210]
+
+Wed Dec 10 12:56:32 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_rewind): If the enclosed object
+ responds to a "rewind" method, call it; cf. [ruby-dev:37268]
+
+Wed Dec 10 12:46:52 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_next): Fix a typo: s/rewinded/rewound/.
+
+ * lib/prime.rb (Prime::OldCompatibility#each): Ditto.
+
+Wed Dec 10 11:25:53 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): raise RegexpError when encoding
+ is dummy encoding. [ruby-dev:37091]
+
+Wed Dec 10 01:28:16 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (win32.obj): depend on headers.
+
+Tue Dec 9 18:35:35 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans, cp850-tbl.rb, cp852-tbl.rb,
+ cp855-tbl.rb, koi8-r-tbl.rb, koi8-u-tbl.rb, tis-620-tbl.rb:
+ new single-byte transcodings (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi), small cosmetic fixes
+
+Tue Dec 9 13:33:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each), gc.c (assign_heap_slot),
+ (gc_mark_children), parse.y (vtable_alloc, vtable_free, vtable_add),
+ proc.c (proc_to_s), thread.c (terminate_i, rb_thread_terminate_all),
+ (thread_start_func_2, blocking_region_begin, blocking_region_end),
+ (rb_thread_kill), thread_pthread.c (native_thread_create),
+ (ubf_pthread_cond_signal), vm.c (check_env, thread_free), vm_dump.c
+ (vm_env_dump_raw, vm_stack_dump_each, vm_thread_dump_state),
+ (vm_call0): use void pointer for %p.
+
+ * cont.c (fiber_status), template/insns.inc.tmpl (ruby_vminsn_type),
+ vm_insnhelper.h (BOP): ISO C forbids comma at end of enumerator
+ list.
+
+ * vm_insnhelper.c (check_cfunc): use function pointer.
+
+Tue Dec 9 13:23:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (curses_use_default_colors): add new
+ method. a patch from Giancarlo F Bellido
+ <support at coaxialhost.com> in [ruby-core:20434].
+
+ * ext/curses/curses.c (curses_tabsize_set): ditto.
+
+ * ext/curses/curses.c (curses_tabsize_get): ditto.
+
+Tue Dec 9 12:08:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rp): fixed typo for T_STRUCT.
+
+Tue Dec 9 11:50:46 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * pack.c (pack_pack): fixed [ruby-dev:37295].
+ Array#pack always has returned an US-ASCII string when
+ the given format ended with 'u', 'M' or 'm'.
+
+Tue Dec 9 03:21:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: fix for continued lines. based on a patch from
+ Marcus Rueckert <darix AT opensu.se> at [ruby-core:20420].
+
+Tue Dec 9 00:54:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (package): enc.mk in snapshot is dummy and should
+ not deal with objects. [ruby-core:20422]
+
+Tue Dec 9 00:17:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (clean-srcs): split out from clean.
+
+Mon Dec 8 23:34:18 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * pack.c (pack_pack): fixed odd act of 'm*', 'M*', and 'P*'.
+ just ignores '*' in these cases.
+ [ruby-dev:37289]
+
+Mon Dec 8 18:31:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack): fixed length for odd length string.
+ [ruby-dev:37283]
+
+Mon Dec 8 11:28:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): added version, copyright, usage, yydebug,
+ syntax to --dump option.
+
+Mon Dec 8 11:15:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): source-encoding option.
+
+Mon Dec 8 10:32:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_option_encoding_once): dry.
+
+ * ruby.c (proc_options): checks extra argument for -E/--encoding.
+
+Sun Dec 7 23:47:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBPATHFLAG): use numbered specifier if RPATHFLAG
+ is set. [ruby-talk:322136]
+
+Sun Dec 7 23:17:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (LIBRUBY_SO): localizes non-public symbols.
+
+ * configure.in (OBJDUMP, OBJCOPY): for dealing with binary files.
+
+Sun Dec 7 17:44:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.capture3): renamed from Open3.poutput3.
+ (Open3.capture2): renamed from Open3.poutput2.
+ (Open3.capture2e): renamed from Open3.poutput2e.
+
+Sun Dec 7 11:48:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.poutput3): :binmode option implemented.
+ (Open3.poutput2): ditto.
+ (Open3.poutput2e): ditto.
+
+Sat Dec 6 18:33:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (package): added RM and CP. [ruby-dev:37288]
+
+Sat Dec 6 17:51:35 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * pack.c (pack_pack): 'u0' is not special differently from 'm0'.
+
+Sat Dec 6 14:35:06 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_pack): set US-ASCII and CODERANGE_7BIT
+ when quoted-printable ('M') and base64 ('m').
+ [ruby-dev:37284]
+
+ * pack.c (pack_unpack): ditto.
+
+Fri Dec 5 22:56:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_make_exception): single argument to raise may be
+ string compatible object.
+
+Fri Dec 5 21:45:45 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_{to_s,inspect}): performance improvement.
+
+Fri Dec 5 21:42:44 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: inspect should not depend on to_s.
+
+Fri Dec 5 21:18:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_truncate): return
+ integer if no optional argument given. [incompatible]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_floor): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_ceil): ditto.
+
+Fri Dec 5 19:06:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.pipeline_start): new method.
+ (Open3.pipeline): ditto.
+
+Fri Dec 5 18:55:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (run_exec_dup2): !save is false if Qnil.
+
+Fri Dec 5 18:07:32 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read, rb_w32_write, rb_w32_isatty): check
+ whether fd is valid.
+
+Fri Dec 5 13:05:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_parameters): proc arguments are always optional.
+
+ * proc.c (get_proc_iseq, rb_proc_parameters): ditto.
+
+Fri Dec 5 12:38:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_sequence): uses rb_compile_warning() for
+ warning at compilation time.
+
+Fri Dec 5 12:35:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (ruby_iseq_compile, ruby_iseq_translate_threaded_code),
+ (ruby_insns_name_array, ruby_iseq_build_from_ary): prefixed with
+ ruby_.
+
+ * iseq.c (ruby_iseq_load, ruby_insn_make_insn_table): ditto.
+
+Fri Dec 5 10:01:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_cmp_m): fixed rdoc. pointed out by <Thomas
+ C. Mitchell AT gmail.com> at [ruby-talk:321967]
+
+Fri Dec 5 07:58:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_binwrite): arg.offset should be updated after retry.
+
+Fri Dec 5 03:29:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_get_load_path): returns the load path without
+ touching.
+
+ * load.c (rb_feature_provided): new function to return the loading
+ path in addition to rb_provided().
+
+ * load.c (search_required): sets path if loading.
+
+ * variable.c (autoload_provided): load paths are expanded to check
+ if loading.
+
+ * variable.c (autoload_node): keeps autoload mark while loading.
+ [ruby-core:20235]
+
+ * variable.c (rb_const_get_0): loops while autoload mark is set.
+
+Fri Dec 5 01:37:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): ERROR_BROKEN_PIPE is not a real error
+ at this point.
+
+ * io.c (pipe_open): use rb_w32_spawn() instead of rb_w32_pipe_exec()
+ to use our own redirection scheme.
+
+Fri Dec 5 01:35:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_to_proc): use hidden object.
+
+Fri Dec 5 01:19:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): propagate taint status from format string to
+ result string.
+
+Fri Dec 5 00:34:10 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (run_exec_dup2): need to sort by reverted order when
+ restoring fds.
+
+Fri Dec 5 00:17:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_to_proc): caches Symbol procs, based on a patch from
+ Shumpei Akai <admin AT flexfrank.net>. [ruby-dev:37265]
+
+Thu Dec 4 23:29:34 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (waitpid): fix bug of checking child slot.
+
+ * win32/win32.c (FindChildSlotByHandle): new.
+
+Thu Dec 4 23:24:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.poutput3): new method.
+ (Open3.poutput2): ditto.
+ (Open3.poutput2e): ditto.
+
+Thu Dec 4 23:02:13 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec: follows changes in rubyspec project.
+ inherits configurations from ruby.1.9.mspec.
+
+Thu Dec 4 22:13:55 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_complex.rb: added some tests.
+
+ * test/ruby/test_rational.rb: ditto.
+
+Thu Dec 4 19:56:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.popen3): simplified.
+ (Open3.popen_run): extracted from Open3.popen3.
+ (Open3.popen2): new method.
+ (Open3.popen2e): new method.
+ (Open3.pipeline_rw): new method.
+ (Open3.pipeline_r): new method.
+ (Open3.pipeline_w): new method.
+ (Open3.pipeline_run): new private method.
+
+Thu Dec 4 19:16:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (check_exec_fds): resolve cascaded child fd reference.
+
+Thu Dec 4 16:58:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rubygems/validator.rb (Gem#remove_leading_dot_dir): make
+ this method private. a patch from okkez in [ruby-dev:37245]
+
+Thu Dec 4 16:19:18 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read_nonblock):
+ OpenSSL::SSL::SSLSocket should implement read_nonblock. a patch
+ from Aaron Patterson in [ruby-core:20277]. fix: #814 [ruby-core:20241]
+
+Thu Dec 4 16:16:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/gserver.rb: fixed type in sample code. a report from Oleg
+ Puchinin.
+
+Thu Dec 4 14:54:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rubygems/local_remote_options.rb (Gem#add_update_sources_option):
+ little documentation fix. a patch from okkez. [ruby-dev:37271]
+
+Thu Dec 4 13:56:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (window_getch): avoid ISPRINT() macro which
+ has an issue with OpenSolaris. [ruby-core:20189]
+
+ * ext/curses/curses.c (curses_getch): no ISPRINT(). [ruby-core:20294]
+
+ * signal.c (ruby_signal): EINVAL from sigaction(2) is not a bug.
+
+Thu Dec 4 11:40:56 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (inspect_enumerator): Implement #inspect.
+ [ruby-dev:37248]-[ruby-dev:37263]
+
+Thu Dec 4 11:38:40 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * vm_method.c (rb_obj_respond_to): Remove a duplicated rdoc
+ comment and fix a markup error.
+
+Thu Dec 4 06:04:16 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/menu.rb: TkOptionMenubutton.new fails to treat
+ 'parent' and 'variable' options on a Hash argument.
+
+Thu Dec 4 05:06:47 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix. use ::RubyVM instead of ::VM
+ [ruby-list:45676]
+
+ * ext/tk/tcltklib.c: update RELEASE_DATE
+
+Thu Dec 4 01:37:47 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nurat_{to_s,inspect}): provides better representation
+ for in-finite imag part.
+
+Thu Dec 4 01:22:41 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (f_signbit): NaN may be signed value.
+
+Wed Dec 3 23:59:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (EXEC_OPTION_DUP2_CHILD): defined.
+ (check_exec_redirect_fd): check :in, :out and :err.
+ (check_exec_redirect): check [:child, fd].
+ (check_exec_fds): validate EXEC_OPTION_DUP2_CHILD array.
+ (run_exec_dup2_child): new function.
+ (rb_run_exec_options): call run_exec_dup2_child.
+
+Wed Dec 3 22:54:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (expr): keyword_not can continue across newline.
+ [ruby-core:20252]
+
+Wed Dec 3 22:40:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (simple_default_value): returns simplest assignment only.
+ [ruby-core:20237]
+
+Wed Dec 3 21:30:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (check_exec_redirect): accept :in, :out, :err as redirect
+ target.
+
+Wed Dec 3 21:18:27 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_rational.rb: revert.
+
+Wed Dec 3 14:48:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tcltklib.c (ip_ruby_cmd, ip_invoke_with_position): must
+ not access internal union directly. [ruby-list:45670]
+
+Wed Dec 3 12:24:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getc, rb_io_readchar): documentation correction from
+ Emiel van de Laar. [ruby-core:20212]
+
+ * ext/stringio/stringio.c (strio_readchar): ditto.
+
+Wed Dec 3 09:26:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/xpath.rb (REXML::XPath.first): apply documentation
+ patch from Ken Bloom in [ruby-core:20213].
+
+ * lib/rexml/xpath.rb (REXML::XPath.each): ditto.
+
+Wed Dec 3 02:56:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rational.rb: add a test.
+
+Wed Dec 3 02:53:24 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_range.rb: add a test.
+
+Wed Dec 3 02:26:07 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_string.rb: add some tests.
+
+Wed Dec 3 02:04:21 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/pty/pty.c (Init_pty): fix typo.
+
+Tue Dec 2 19:22:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.popen3): merge hash options if given.
+
+Tue Dec 2 15:31:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/protocol.rb (Net::BufferedIO#rbuf_fill): use
+ read_nonblock instead of sysread wrapped by timeout to boost
+ performance. a patch from Aaron Patterson in [ruby-core:20191].
+ fix #806
+
+Mon Dec 1 23:23:52 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * set 1.9.1-p5000 into version number. [ruby-dev:36998]
+
+Mon Dec 1 15:48:47 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * signal.c (register_sigaltstack): no need to define on non-sigaltstack
+ platform.
+
+Mon Dec 1 12:00:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (rb_fiber_start): calls with exact argument number.
+ [ruby-core:20088]
+
+Sun Nov 30 21:41:10 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/rake.1: new manual page
+
+Sun Nov 30 18:01:50 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_parse_curly_brace):
+ now accepts quantifier on anchors again by r20391.
+
+Sat Nov 29 23:56:44 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/irb.1 (EXAMPLES): new section
+
+Sat Nov 29 19:19:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regparse.c (is_invalid_quantifier_target): Perl and old Ruby
+ accepts quantifier on anchors. [ruby-core:20161]
+
+Sat Nov 29 18:28:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_getaddrinfo): should have updated for
+ Mac OS X. a patch from Shumpei Akai in [ruby-dev:37234]
+
+Sat Nov 29 00:18:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * cont.c (fiber_alloc): separate allocation and initialization.
+ allow subclass to override #initialize. [ruby-core:20086]
+
+Fri Nov 28 18:31:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getaddrinfo): refactored to remove
+ code duplication regarding getaddrinfo.
+
+Fri Nov 28 17:52:26 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/forwardable.rb: should be usable def_single_delegator for
+ Class and Module.
+
+Fri Nov 28 13:19:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (simple_default_value): extracts simplest default
+ argument value.
+
+ * iseq.c (rb_iseq_parameters): returns parameter list.
+
+ * proc.c (get_proc_iseq, get_method_iseq): handles ifunc and
+ bmethod.
+
+ * proc.c (rb_proc_parameters, rb_method_parameters): added
+ Proc#parameters and Method#parameters. [ruby-core:19759]
+
+Fri Nov 28 02:18:47 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): bigdecimal
+ division (including modulo) should raise ZeroDivisionError as
+ integer division. [incompatible]
+
+Fri Nov 28 00:12:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flodivmod): floating point division should raise
+ ZeroDivisionError as integer division. [incompatible]
+
+Thu Nov 27 23:54:37 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark): still needs to check stack depth during GC.
+
+ * gc.c (stack_check): ditto.
+
+Thu Nov 27 21:41:29 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * strftime.c (rb_strftime): should add padding for %%.
+
+Thu Nov 27 16:32:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (register_sigaltstack): stores alt stack for debug
+ purpose.
+
+Thu Nov 27 16:12:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (ruby_sigaction_t): added.
+
+Thu Nov 27 15:59:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (ruby_stack_check): no check if using sigaltstack.
+
+ * signal.c (ALT_STACK_SIZE): default minimum size is insufficient
+ for method calls.
+
+ * signal.c (sigsegv): handles stack overflow if possible.
+
+ * thread.c (ruby_thread_stack_overflow): helper function to raise
+ sysstack_error.
+
+ * thread_pthread.c (ruby_stack_overflowed_p): checks for stack
+ overflow.
+
+Thu Nov 27 10:40:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div2): should return
+ Integer for #div operation.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div2): should raise
+ ZeroDivisionError if divisor is zero. [ruby-dev:37207]
+
+Wed Nov 26 23:15:47 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * strftime.c (STRFTIME): use rb_strftime() recursively, instead of
+ platform's strftime().
+
+Wed Nov 26 22:46:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpException): bigdecimal zero
+ division should raise FloatDomainError if mode
+ VP_EXCEPTION_ZERODIVIDE is set. [ruby-dev:37204]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mode): should handle
+ VP_EXCEPTION_ZERODIVIDE.
+
+Wed Nov 26 15:16:07 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/gdbm/gdbm.c (rb_gdbm_nextkey): fix memory leak.
+
+Wed Nov 26 03:17:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_r): raise exception
+ for nan/inf conversion. [ruby-dev:37187] fix #793
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_i): ditto.
+
+Wed Nov 26 03:00:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpAlloc): avoid ALLOCA_N() to avoid
+ segmentation fault caused by (insanely) long decimal values.
+ [ruby-dev:37189] fix #794
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_dump, BigDecimal_to_i,
+ BigDecimal_to_f, BigDecimal_to_s, BigDecimal_split,
+ BigDecimal_inspect): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (VpToString): small performance
+ improvement.
+
+Wed Nov 26 00:26:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * strftime.c (STRFTIME): should add padding for %[xXrR] etc.
+ [ruby-dev:37185] fix: #792
+
+Tue Nov 25 16:26:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_times): taint (and untrust) status should be
+ inherited by "ary * 0". [ruby-dev:37024]
+
+Tue Nov 25 15:54:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * strftime.c (rb_strftime): should not swallow incomplete
+ formatter, e.g. "%E". [ruby-dev:37170] fix: #787
+
+ * strftime.c (rb_strftime): clear flags before processing unknown
+ formatter, e.g. "%i". [ruby-dev:37180]
+
+Tue Nov 25 10:35:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * strftime.c (rb_strftime): "%^P" should convert to upper case.
+ [ruby-dev:37180]
+
+Tue Nov 25 07:51:18 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * strftime.c (FMT): use "%0d" formatter for zero padding, not "%.d".
+ [ruby-dev:37168] fix: #768
+
+ * strftime.c (rb_strftime): %s to use zero padding by default.
+ [ruby-dev:37180]
+
+Tue Nov 25 03:37:42 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/blt/tabset.rb,
+ ext/tk/lib/tkextlib/blt/tabnotebook.rb:
+ fix many bugs. Now, those work properly.
+
+Tue Nov 25 03:26:04 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_step): treat infinite step specially.
+ [ruby-dev:37157] fix: #781.
+
+Tue Nov 25 01:23:25 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (strftime): ignores '_' flag for %[LN].
+
+Tue Nov 25 00:08:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork): stops the timer thread during fork.
+ [ruby-dev:37117]
+
+ * thread.c (rb_thread_start_timer_thread): timer thread needs
+ system_working to be set.
+
+Mon Nov 24 23:27:28 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): The # flag should work with %a, %A, %b,
+ %B, and %h. [ruby-dev:37162]
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Mon Nov 24 23:16:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (register_sigaltstack): should not add external
+ variable (with some cosmetic changes). [ruby-dev:37158]
+
+Mon Nov 24 22:57:25 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): A width specifier for %t and %n should
+ work. [ruby-dev:37160]
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Mon Nov 24 22:07:07 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): The precision of %0N should be 9.
+ [ruby-dev:37156]
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Mon Nov 24 21:38:23 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): The default precision should be 1, not
+ 0. [ruby-dev:37155]
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Mon Nov 24 19:53:47 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (inspect): changed again.
+
+Mon Nov 24 18:35:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/time.rb: r20251 reverted. The patched behavior do not round
+ trip. [ruby-core:19988]
+
+Sun Nov 23 16:04:05 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * signal.c (default_handler, Init_signal): compile error if
+ USE_SIGALTSTACK is not defined.
+
+Sun Nov 23 00:04:14 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * signal.c (ALT_STACK_SIZE): 4KB is not enough on Mac OS X.
+ Uses SIGSTKSZ.
+
+Sat Nov 22 21:29:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_method.rb (test_default_accessibility): test case for
+ [ruby-dev:37124].
+
+Sat Nov 22 18:24:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_world_writable_p): should return nil for non
+ world-writable files.
+
+Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/blt.rb, ext/tk/lib/tkextlib/blt/vector.rb:
+ fix NameError bug.
+
+Sat Nov 22 03:41:22 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/pty/pty.c (get_device_once): abandon asynchronous exception
+ that might cause serious problem if a program terminated early.
+ asynchronous exception is a very bad thing anyway. use
+ Process.waitpid(pid) or PTY.check(pid) to poll program
+ termination. if PTY.check is called with optional second
+ argument being true, it raises an exception same as one from
+ previous behavior. [incompatible] fix: [ruby-core:19583]
+
+Fri Nov 21 22:24:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (curses_escdelay_set): support ESCDELAY. a
+ patch from Giancarlo F Bellido <support at coaxialhost.com> in
+ [ruby-core:19961].
+
+Fri Nov 21 22:17:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (usage): -W description updated. [ruby-core:19858]
+
+Fri Nov 21 21:50:54 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (register_sigaltstack): use alternative stack for
+ SIGSEGV to avoid uncaught stack overflow. based on a patch from
+ Hiro Yoshioka <hyoshiok at miraclelinux.com> in [ruby-dev:37134].
+ [ruby-dev:36993]
+
+Fri Nov 21 16:06:54 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm.c (thread_free): th->vm may be NULL when pthread_create
+ failed for ENOMEM. [ruby-dev:37095]
+
+Thu Nov 20 07:33:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/logger.rb (Logger): should handle the case that cvs/svn do
+ not expand $Id keyword. [ruby-core:19991]
+
+Thu Nov 20 07:27:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/minitest/unit.rb (MiniTest::Assertions#capture_io): adjust
+ indentation to shut up warning. [ruby-core:19993]
+
+Wed Nov 19 17:48:05 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (rb_syck_mktime): return DateTime for a value
+ out of range of Time. [ruby-core:19919]
+
+Wed Nov 19 14:14:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * node.h (NOEX_MODFUNC): should be include NOEX_PRIVATE.
+ [ruby-dev:37124]
+
+Wed Nov 19 03:01:04 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: fixed fails occasionally [ruby-dev:37119].
+ thanks, shinichiro.h.
+
+Wed Nov 19 02:39:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (Init_syserr): moved function definition itself from
+ template/known_errors.inc.tmpl.
+
+Wed Nov 19 01:10:52 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRbConn::alive?): fixed NoMethodError problem
+ from NaHi [ruby-dev:37110].
+
+Wed Nov 19 01:05:26 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (cont_mark, cont_capture, cont_restore_1): speed up
+ continuation by copying only valid YARV stack. [ruby-dev:37106]
+
+Wed Nov 19 00:03:13 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/time.rb: according to RFC2822, -0000 means local time, +0000
+ means UTC. a patch from Chun Wang. [ruby-core:19578]
+
+Tue Nov 18 23:02:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (proc_eq): equivalence check should not done by pointer
+ comparison, but should be based on iseq contents. [ruby-dev:37101]
+
+Tue Nov 18 20:30:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#open_socket): SOCKSsocket is obsolete.
+ a patch from Alan Johnson <alan.wayne.johnson at gmail.com> in
+ [ruby-core:19982].
+
+Tue Nov 18 16:18:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/logger.rb (ProgName): fixed for svn, based on a patch from
+ Nobuhiro IMAI at [ruby-dev:37108].
+
+Tue Nov 18 15:56:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#read_request_line):
+ use possessive match for path retrieval to avoid huge recursion
+ for insanely long path.
+
+Tue Nov 18 15:50:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_desc): re might be NULL.
+
+ * regerror.c (onig_error_code_to_format): message updated.
+
+Tue Nov 18 09:42:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::make_switch): makes default
+ conversion to splat. [ruby-list:45645]
+
+Mon Nov 17 18:05:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (LIBS): fixed for disable-shared. [ruby-dev:37103]
+
+Mon Nov 17 11:12:24 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * bin/erb: remove -K option.
+
+Mon Nov 17 02:19:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBYARG_STATIC): fixed for --enable-rpath.
+
+Sat Nov 15 22:46:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_regsub): returns -1 unless ascii as well as
+ rb_enc_ascget(). [ruby-dev:37097]
+
+Sat Nov 15 22:23:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LDSHARED): do not suppress debug info if higher debug
+ level is given, on cygwin and mingw.
+
+Fri Nov 14 20:27:46 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * README.EXT, README.EXT.ja, vm_exec.c, vm_insnhelper.c: update
+ filenames.
+
+Thu Nov 13 11:31:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_barrier_wait): gets rid of recursive deadlock.
+
+Thu Nov 13 06:08:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_barrier_{new,wait,release,destroy}): use Mutex so that
+ circular requires fail with deadlock. [ruby-core:19821]
+
+Wed Nov 12 07:16:01 2008 David Flanagan <david@think32>
+
+ * ruby.c (set_internal_encoding_once): fix typo in error string
+
+Wed Nov 12 03:30:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_{external,locale}_str_new_cstr): optimized
+ versions for literal strings.
+
+Wed Nov 12 03:28:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_require_safe): destroys barrier after successfully
+ loaded, to get rid of loading same library again. [ruby-core:19798]
+
+ * thread.c (rb_barrier_wait): can not wait destroyed barrier.
+
+ * thread.c (rb_barrier_destroy): destroys barrier so that no longer
+ waited.
+
+Tue Nov 11 23:02:27 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/ruby.1 (RUBYOPT): wrote which option can appear.
+ (--yydebug): wrote "do not use".
+ (--dump): wrote "do not use".
+
+Tue Nov 11 21:22:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic#check_path): REL_PATH should a
+ symbol. [ruby-core:19805]
+
+Tue Nov 11 20:49:29 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * configure.in: fix SEGV on Mac OS X 10.5.3 with pthread.
+ a patch from Wataru Kimura in Bug #193 [ruby-core:17333].
+
+Tue Nov 11 20:39:27 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (inspect): reverted the previous change.
+
+Tue Nov 11 17:35:25 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_accept): secure fd before accept because if
+ error causes in securing, cannot restore the state of accepted
+ socket.
+ fixed [ruby-core:19728]
+
+Tue Nov 11 14:40:40 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: unnecessary setup method
+ (setup_really_needed?) removed
+
+Tue Nov 11 14:25:25 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans, macgreek-tbl.rb, macroman-tbl.rb,
+ macromania-tbl.rb, macturkish-tbl.rb, macukraine-tbl.rb,
+ ibm437-tbl.rb, ibm852-tbl.rb, ibm855-tbl.rb, ibm857-tbl.rb,
+ ibm860-tbl.rb, ibm861-tbl.rb, ibm862-tbl.rb, ibm863-tbl.rb,
+ ibm865-tbl.rb, ibm866-tbl.rb, ibm869-tbl.rb, ibm775-tbl.rb:
+ new single-byte transcodings (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
+Tue Nov 11 13:20:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_r): moved from
+ bigdecimal/util, converted into C. [ruby-dev:36805]
+
+Tue Nov 11 07:55:57 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (inspect): changed the format.
+
+Mon Nov 10 17:34:50 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/sdbm/test_sdbm.rb (TestSDBM#test_index): Reflect the method
+ name change from #index to #key and remove a duplicated test
+ method.
+
+Mon Nov 10 10:50:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator.delegating_block): should not refer
+ DelegateClass specific @delegate_dc_obj. a patch from Erik
+ Hollensbe in [ruby-core:19671].
+
+Mon Nov 10 09:54:21 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (ifs_open_socket): should retry without proto_buffer
+ if cannot find the suitable protocol. a patch from Heesob Park.
+ fixed [ruby-core:19713]
+
+Sun Nov 9 13:04:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_initialize_m): avoid unnecessary array
+ allocation.
+
+Sun Nov 9 04:10:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (control_frame_dump): suppresses finished method name.
+
+Sun Nov 9 00:30:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (thread_timer): checks working flags again.
+
+Sun Nov 9 00:02:01 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/session/pstore.rb: fix indentation.
+
+Sat Nov 8 23:47:45 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/session.rb (FileStore): use marshalized data.
+
+ * test/cgi/session_dir: add a session directory in test.
+
+ * test/cgi/test_cgi_session.rb: add a test.
+
+Sat Nov 8 21:57:03 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/session.rb: remove debug code.
+
+Sat Nov 8 21:33:53 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/session.rb: fix indentation.
+
+Sat Nov 8 18:11:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#do_CONNECT):
+ use #bytesize instead of #size. a patch submitted from
+ raspberry lemon in [ruby-core:18571].
+
+ * lib/webrick/httpauth/digestauth.rb, lib/webrick/httpproxy.rb,
+ lib/webrick/httprequest.rb, lib/webrick/httpservlet/cgi_runner.rb,
+ lib/webrick/httpservlet/abstract.rb, lib/webrick/httpresponse.rb,
+ lib/webrick/httpservlet/cgihandler.rb, lib/webrick/utils.rb: ditto.
+
+Sat Nov 8 17:31:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_ungetc): ungetc position should
+ not be changed from 1.8. [ruby-core:19632]
+
+Sat Nov 8 17:15:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#make_switch): 1.9 Symbols respond
+ to :match. a patch from keith cascio, <keith at ucla.edu>.
+ [ruby-core:19730]
+
+Sat Nov 8 12:10:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_index): make #index warn like Hash.
+ [ruby-dev:37039]
+
+ * ext/sdbm/init.c (Init_sdbm): typo fixed. [ruby-dev:37039]
+
+Sat Nov 8 07:07:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: detect stdio buffer pointers for uClibc. a patch
+ from Brian Candler <B.Candler at pobox.com> in [ruby-core:12020].
+ [ruby-core:19713]
+
+Sat Nov 8 06:51:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_index): make #index warn like Hash.
+
+ * ext/dbm/dbm.c (fdbm_key): new method.
+
+ * ext/sdbm/init.c: ditto.
+
+Sat Nov 8 06:20:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c: curses encoding should obey locale.
+
+ * ext/curses/curses.c (curses_getch): 1.9 getch should return one
+ character string for single byte string. wchar_t support may
+ follow in the future.
+
+Sat Nov 8 05:46:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h (rb_io_t): added write_lock to serialize.
+ [ruby-core:19668]
+
+ * gc.c (gc_mark_children): mark write_lock.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): Mutex also needs to be
+ deferred.
+
+ * io.c (io_fflush, io_binwrite, fptr_finalize): serializes writing.
+
+Sat Nov 8 05:31:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * safe.c (safe_setter): add warning for $SAFE=3.
+
+Sat Nov 8 01:48:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): do not wait never
+ coming signal if failed to create timer thread.
+
+ * thread_pthread.c (native_cond_timedwait): returns error code.
+
+ * thread_pthread.c (thread_timer): typo fixed.
+
+Sat Nov 8 01:14:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (thread_timer, rb_thread_create_timer_thread):
+ handshakes properly.
+
+Fri Nov 7 22:51:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * inits.c (rb_call_inits): do not repeat.
+
+Fri Nov 7 22:46:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (thread_timer): initializes mutex each time.
+
+Fri Nov 7 21:23:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_win32.c (thread_start_func_1): use already gotten stack info.
+
+Fri Nov 7 12:26:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb.rb (IRB::Irb#eval_input): remove extra @context.prompt_i.
+ [ruby-core:19718]
+
+Fri Nov 7 11:55:30 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * nkf.c: update to r1.188. fixes for 16bit environment.
+
+Fri Nov 7 07:43:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_timer): pthread_cond_timedwait returns ETIMEDOUT
+ when timed out.
+
+Fri Nov 7 07:32:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: support Rational and Complex as 1.8
+ does. a patch from Hiroshi Moriyama in [ruby-dev:36899].
+
+Fri Nov 7 07:12:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (thread_timer): uses pthread_cond_timedwait always
+ instead of pthread_kill.
+
+Fri Nov 7 06:58:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (Init_String): remove Symbol#===. [ruby-dev:37026]
+
+Fri Nov 7 04:02:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_timer): uses timedwait on cygwin.
+
+Fri Nov 7 02:00:12 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/rexml/entity.rb (unnormalized): do not call
+ document.record_entity_expansion if document is nil.
+ see <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502535>.
+ Thanks, Naohisa Goto.
+
+ * test/rexml/test_document.rb: ditto.
+
+Fri Nov 7 01:24:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: binary encoding spec is no longer needed in 1.9.
+
+Thu Nov 6 22:21:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_stop_timer_thread): terminates timer thread
+ immediately.
+
+Thu Nov 6 21:21:46 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fole_s_connect, fole_initialize,
+ folevariant_initialize): check argument type of WIN32OLE.connect,
+ WIN32OLE.new, WIN32OLE_VARIANT.new.
+
+ * test/win32ole/test_win32ole.rb (test_s_new_exc, test_s_connect_exc):
+ ditto.
+
+ * test/win32ole/test_win32ole_variant.rb (test_s_new_exc): ditto.
+
+ * test/win32ole/test_win32ole_method.rb: add assertion of
+ WIN32OLE_METHOD.new.
+
+Tue Nov 4 13:08:01 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): now can specify ``-xname''
+ instead of ``-x name''.
+
+Tue Nov 4 08:00:00 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * test/zlib/test_zlib.rb(test_readchar): compare in same type.
+
+Tue Nov 4 03:28:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_join): do not repeat self in a recursive array.
+ [ruby-dev:37019]
+
+Tue Nov 4 01:56:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_mutex_synchronize): fixed prototype.
+
+ * thread.c (rb_mutex_synchronize): fixed function name.
+
+Mon Nov 3 16:32:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing.h: needs RUBY_EXTERN instead of extern for mswin.
+
+Mon Nov 3 13:01:13 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * array.c (rb_ary_take_first_or_last): renamed rb_ary_partial more
+ appropriately.
+ (ary_take_pos_flags): new enum. makes the fourth argument of
+ rb_ary_take_first_or_last more descriptive.
+ (rb_ary_partial): renamed rb_ary_partial0 more appropriately.
+ takes a new parameter klass for what class to instantiate.
+
+Mon Nov 3 13:00:26 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * range.c (rb_range_beg_len): rb_raise takes C values as arguments.
+ [BUG] ranges turned into other value in a message of RangeError.
+
+Mon Nov 3 00:36:44 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_event.rb: rename test class.
+
+ * test/win32ole/test_win32ole_variant_outarg.rb: add in order
+ to use ADO instead of Internet Explorer.
+ remove test/win32ole/test_win32ole_variant_with_ie.rb.
+
+ * test/win32ole/orig_data.csv: ditto.
+
+Sun Nov 2 23:08:08 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_err_in_callback.rb: add teardown.
+
+Sun Nov 2 22:12:41 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_event_free): invoke IConnectionPoint::Unadvise
+ before invoking IConnectionPoint::Release.
+
+ * test/win32ole/test_win32ole_event.rb, test/win32ole/err_in_callback.rb,
+ test/win32ole/test_err_in_callback.rb: Use ActiveX Data Object
+ Library instead of InternetExplorer.
+
+Sun Nov 2 22:06:55 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * win32/Makefile.sub: add RUNRUBYOPT. [ruby-dev:37009]
+
+Sun Nov 2 16:41:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (Init_zlib): defines readbyte instead redefining
+ readchar.
+
+Sat Nov 1 07:09:40 2008 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Don't require rubygems/defaults.rb.
+
+Fri Oct 31 21:58:50 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/converter.rb (RSS::Converter): use String#encode.
+
+Fri Oct 31 21:28:14 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/webrick/httpauth/digestauth.rb
+ (WEBrick::HTTPAuth::DigestAuth#initialize): fix typo.
+
+Fri Oct 31 18:51:42 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_array.rb (test_array_subclass): test for r20076.
+
+Fri Oct 31 18:42:19 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * array.c (ary_partial0): recovers the mistakenly changed feature at r19723.
+ Array#[m,n] had returned an Array even for an instance of a
+ subclass.
+
+Fri Oct 31 18:05:05 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans, maccroatioan-tbl.rb,
+ maccyrillic-tbl.rb, maciceland-tbl.rb: new single-byte
+ transcodings (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
+Fri Oct 31 12:51:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_globs): need taint check. reported by steve
+ <oksteev at gmail.com>
+
+Fri Oct 31 12:42:45 2008 wanabe <s.wanabe@gmail.com>
+
+ * array.c (rb_ary_decrement_share): fix to work recycling
+ shared-array without the following. [ruby-dev:36991]
+
+ * array.c (ary_make_substitution): don't recycle substitution array.
+
+Fri Oct 31 12:27:52 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec: supports that the build directory != srcdir.
+
+Fri Oct 31 11:35:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_set_default_internal): no alias "internal" if
+ default internal is not set. [ruby-dev:37000]
+
+Fri Oct 31 08:16:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): delays setting safe level.
+ [ruby-dev:36997]
+
+Thu Oct 30 21:32:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_permutation): hide temporal array.
+
+Thu Oct 30 14:45:45 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans: refactoring to make it easier
+ to add more transcodings (with Yoshihiro Kambayashi)
+
+ * enc/trans/iso-8859-1-tbl.rb: new file to avoid having to
+ treat ISO-8859-1 as special
+
+Thu Oct 30 14:10:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): templates a, A, Z should propagate encoding
+ of original strings. templates b, B, h, H brings ASCII-8BIT to
+ the result.
+
+Thu Oct 30 10:34:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (moreswitches): splits option string and passes arguments.
+
+ * ruby.c (proc_options): checks if allowed in RUBYOPT.
+
+ * ruby.c (process_options): allows long style options in RUBYOPT.
+
+ * ruby.c (load_file_internal): ditto in shebang. [ruby-dev:36979]
+
+Thu Oct 30 09:31:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_locale_encoding): makes an alias for locale.
+ [ruby-dev:36976]
+
+ * encoding.c (rb_enc_set_default_external): ditto for external.
+
+ * encoding.c (rb_enc_set_default_internal): ditto for internal.
+
+Thu Oct 30 03:30:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (load_file_internal): should not set script encoding to
+ ASCII-8BIT.
+
+ * ruby.c (load_file_internal): do not auto convert scripts even
+ when default_internal is set. [ruby-core:19579]
+
+Thu Oct 30 02:20:33 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_sort_bang): remove SEGV when replacing array with
+ embedded one during sort. [ruby-dev:36983]
+
+ * test/ruby/test_array.rb (test_sort!): add tests for above.
+
+Thu Oct 30 01:44:23 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: add some tests.
+
+Thu Oct 30 01:32:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_splice): remove redundant check.
+
+Thu Oct 30 01:24:55 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_str_cmp): fix condition which always returned true
+ because ENCODING_GET returns unsigned long.
+
+Thu Oct 30 01:10:32 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb (test_permutation): add a test that replaces
+ array during permutation.
+
+Wed Oct 29 23:31:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_check_dummy_enc): new function to check dummy
+ encoding.
+
+ * string.c (rb_str_upcase_bang): case conversion functions should
+ not be applicable to strings in dummy encoding. [ruby-dev:36985]
+
+Wed Oct 29 23:57:29 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_sort_bang): replacing array during sort broke
+ invariant of array. [ruby-dev:36983]
+
+Wed Oct 29 21:06:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_rewind): should reset fptr->readconv if it's
+ available.
+
+ * io.c (more_char): clear readconv at EOF.
+
+ * test/ruby/test_file.rb: should not read after EOF. use rewind
+ instead.
+
+Wed Oct 29 20:45:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/webrick/utils.rb (start_server): provide a reference to log of
+ webrick.
+
+ * test/webrick/test_httpproxy.rb, test/webrick/test_httpauth.rb,
+ test/webrick/test_cgi.rb, test/webrick/test_httpserver.rb,
+ test/webrick/test_server.rb, test/webrick/test_filehandler.rb: use
+ webrick log as an assertion message.
+
+Wed Oct 29 16:41:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack): set encoding from packing string and UTF-8 for
+ "U". [ruby-core:19590]
+
+Wed Oct 29 15:50:00 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * complex.c (imp1, imp2): should declare type.
+ [BUG] at IA-64
+
+Wed Oct 29 14:36:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (revision.h): have to be updated daily or by non-trivial
+ commits.
+
+Wed Oct 29 13:18:02 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * README, README.ja: Update the portability section.
+
+Wed Oct 29 13:02:17 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (rb_cv_lib_xpg4_needed): Drop legacy FreeBSD
+ support regarding libxpg4. Those old versions of FreeBSD
+ shipped with the library don't have a working pthread library
+ anyway.
+
+Wed Oct 29 11:50:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (dln-a-out): cannot make shared library nor work with
+ ELF. [ruby-core:19571]
+
+Wed Oct 29 11:00:25 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_open): shouldn't seek here.
+
+ * win32/win32.c (rb_w32_write): write to the end of the file when
+ FAPPEND is specified.
+
+Wed Oct 29 09:30:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): cache common interned IDs.
+
+Wed Oct 29 00:43:39 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: uses macro in declarations.
+
+Wed Oct 29 00:26:00 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_open): need to seek to the end of the file when
+ O_APPEND is specified.
+
+Wed Oct 29 00:08:05 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * math.c (rb_math_{atan2,cos,cosh,hypot,log,sin,sinh,sqrt}): added.
+
+ * complex.c: follows the above change.
+
+Tue Oct 28 23:29:06 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (kanji_convert): output unicode chars.
+ [ruby-dev:36957]
+
+ * ext/nkf/nkf-utf8/nkf.c (numchar_getc): increase buffer size.
+ reported and patched at [ruby-dev:36957] by mame.
+
+Tue Oct 28 23:03:46 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_proc.rb: filled all patterns for testing
+ vm_yield_setup_args.
+
+Tue Oct 28 23:05:35 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: continues to support canonicalization *unofficially*
+ for an odd library mathn for the time being (only 1.9.x).
+ since grand mathn must be very very special library for us.
+
+ * rational.c: ditto.
+
+ * ext/mathn/*/*: follow the above changes.
+
+Tue Oct 28 21:31:55 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (parser_yylex): check EOF explicitly.
+
+Tue Oct 28 20:59:12 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (extract_binmode): new function to extract binmode/textmode
+ options from hash.
+
+ * io.c (rb_io_extract_modeenc): use above function.
+
+ * io.c (rb_io_s_pipe): recognize binmode/textmode options.
+
+Tue Oct 28 20:15:49 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (make_readconv): now can specify the size of cbuf.
+
+ * io.c (read_all, appendline, io_getc, rb_io_ungetc): follow above
+ change.
+
+Tue Oct 28 19:00:51 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pipe_exec): internal fds should be always
+ binmode.
+
+Tue Oct 28 17:21:18 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/make-snapshot.rb: merged from ruby_1_9_1.
+
+Tue Oct 28 16:56:31 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gem_prelude.rb: merged from ruby_1_9_1 branch.
+ considers --program-suffix and prefix configure options.
+
+ * lib/rubygems/defaults.rb: ditto.
+
+ * test/rubygems/test_gem.rb (@default_dir_re): ditto.
+
+Tue Oct 28 16:13:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: use String#bytesize.
+
+Tue Oct 28 09:51:48 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bootstraptest/test_thread.rb: ignore some exceptions.
+ [ruby-dev:36951]
+
+Tue Oct 28 09:19:40 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (RUNRUBY): now ruby requires something from
+ gem_prelude, so need to set library path.
+
+Mon Oct 27 22:29:11 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * vm_insnhelper.c (vm_yield_setup_args): supports optional parameters.
+ Fixed [ruby-core:19503].
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): a new function. extracted
+ from vm_yield_setup_args.
+
+ * vm_insnhelper.c (vm_yield_setup_block_args_complex): ditto.
+
+ * test/ruby/test_proc.rb: added tests for arguments on a Proc from
+ Kernel#proc called.
+
+Mon Oct 27 20:03:05 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/mathn/complex/complex.c: no need to define rb_cComplex because
+ it's already defined at $(srcdir)/complex.c.
+
+ * ext/mathn/rational/rational.c: no need to define rb_cRational because
+ it's already defined at $(srcdir)/rational.c.
+
+Mon Oct 27 15:58:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file): preserves $.. [ruby-dev:36937]
+
+ * io.c (argf_init): initial value of $. should be 0.
+ see [ruby-dev:36937].
+
+Mon Oct 27 15:38:38 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/minitest/test_mini_test.rb
+ (test_assert_raises_triggered_different): the test failed when a
+ file path in the backtrace contains something except [\w\/\.],
+ e.g. hyphen, Japanese characters or backslash.
+
+ * test/minitest/test_mini_test.rb
+ (test_assert_raises_triggered_subclass): ditto.
+
+Mon Oct 27 15:32:08 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/minitest/test_mini_test.rb: fixed that r19958 made
+ test-all fail when the ruby was built at $(srcdir).
+
+Mon Oct 27 12:04:58 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/envutil.rb: reverted the changeset 19948 because it
+ concealed unexpected behaviours of ruby.
+
+ * test/ruby/test_io.rb: ditto.
+
+Mon Oct 27 12:02:53 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/nkf/nkf.c (rb_nkf_convert): should specify type of variable.
+
+Mon Oct 27 11:34:56 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/minitest/test_mini_test.rb (test_filter_backtrace):
+ fixed failure on Ruby built at out of $(srcdir).
+
+ * test/minitest/test_mini_test.rb (test_Filter_backtrace_unit_starts):
+ ditto.
+
+Mon Oct 27 10:02:47 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (read_all): the 3rd argument maybe Qnil.
+
+Mon Oct 27 01:29:55 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/nkf/test_nkf.rb: add a test for [ruby-dev:36909].
+
+Mon Oct 27 01:05:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_convert): avoid GC.
+ reported in [ruby-dev:36909] and patched [ruby-dev:36941] by mame.
+
+Sun Oct 26 21:28:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/json/test_json.rb: remove dependency on permutation gem.
+
+Sun Oct 26 19:18:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (blocking_region_{begin,end}): declared as inline.
+
+ * util.c (freedtoa): used only when MULTIPLE_THREADS is not defined.
+
+ * win32/win32.c (rb_w32_pipe): serial is DWORD.
+
+ * ext/etc/etc.c (sGroup): getgrent may not be available.
+
+Sun Oct 26 18:11:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/wait/{extconf.rb,wait.c}: needs sys/ioctl.h for fcntl on
+ cygwin.
+
+Sun Oct 26 18:18:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb: disables debug and verbose flags to suppress failure
+ messages. interpolation does not occur inside single quotes.
+
+Sun Oct 26 18:42:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_in_out_err): disables builtin rubygems
+ to get rid of the interference.
+
+ * test/ruby/test_io.rb (ruby): ditto.
+
+Sun Oct 26 13:30:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (read_all): use the given buffer to read when needs readconv.
+ based on the patch by wanabe <s.wanabe AT gmail.com> at
+ [ruby-dev:36931].
+
+Sun Oct 26 07:57:35 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Update to RubyGems 1.3.1 r1909.
+
+Sun Oct 26 07:35:56 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/unit.rb: Imported minitest 1.3.0 r4429.
+ * test/minitest/*: ditto.
+
+Sun Oct 26 02:16:29 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in ($MANTYPE): followed ruby.1, which had moved.
+
+ * instruby.rb (:man): ditto.
+
+ * mdoc2man.rb: fixed for the case Xr with 2 arguments.
+
+Sun Oct 26 01:42:45 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/irb.1: new manual page.
+
+Sun Oct 26 00:11:48 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/ruby.1: moved into man/. added some descriptions.
+
+ * man/goruby.1: new file.
+
+ * instruby.rb (:man): followed ruby.1.
+
+Sat Oct 25 20:05:22 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_profile_result): bug fix. The millisecond is 1/1000.
+
+Sat Oct 25 11:12:40 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ruby.c (usage): updated the description of -E option.
+
+Sat Oct 25 09:54:10 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Fixed a bug in read_to_char() that would slurp
+ whole files if the encoding was invalid. It will now read
+ up to 10 bytes ahead to find a valid character boundary or
+ give up. [ruby-core:19465]
+
+ * test/csv/test_features.rb, test/csv/test_table.rb, test/csv/test_row.rb:
+ Loosened some tests to check for a compatible? Encoding instead
+ of an exact Encoding. [ruby-core:19470]
+
+Sat Oct 25 07:42:49 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Update to RDoc 2.2.2 r192.
+
+Sat Oct 25 04:00:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/us_ascii.c (us_ascii_mbc_enc_len): made static. a patch by
+ Tadashi Saito <shiba AT mail2.accsnet.ne.jp> at [ruby-dev:36916]
+
+ * signal.c (signal_buff): made static. a patch by Tadashi Saito
+ <shiba AT mail2.accsnet.ne.jp> at [ruby-dev:36915]
+
+ * util.c (freedtoa): made static to get rid of name clash. a patch by
+ Tadashi Saito <shiba AT mail2.accsnet.ne.jp> at [ruby-dev:36913]
+
+ * util.c (ruby_dtoa): added prefix, ditto.
+
+Sat Oct 25 03:43:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lambda): need to adjust lpar_beg for both of the parser and
+ ripper.
+
+Sat Oct 25 01:29:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/mathn/rational/rational.c: undef duplicated macro definition
+ first to shut up the warning.
+
+ * ext/mathn/rational/rational.c (rb_rational_new_mathn): specify
+ omitted return value.
+
+Sat Oct 25 00:14:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sample): fixed sizes and randomness.
+
+Fri Oct 24 23:04:42 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in (sitedir): considers --program-prefix and
+ --program-suffix.
+ (vendordir): ditto.
+ (rubyhdrdir): ditto.
+
+ * mkconfig.rb (CONFIG["rubylibdir"]): ditto.
+
+ * win32/Makefile.sub: ditto.
+
+ * instruby.rb (:rdoc): ditto.
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths): ditto.
+
+Fri Oct 24 22:59:27 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb (test_sample): add tests for size of
+ returned array and randomness.
+
+Fri Oct 24 21:50:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * id.h, template/id.h.tmpl (enum ruby_method_ids): reordered.
+
+Fri Oct 24 21:19:45 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * ext/mathn/rational.c: change several global functions.
+
+Fri Oct 24 21:05:38 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/html.rb: allow symbolized key.
+
+ * test/cgi/test_cgi_tag_helper.rb: add a test.
+
+Fri Oct 24 20:54:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (exts): renamed to get rid of the existent directory.
+
+Fri Oct 24 20:45:41 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * ext/mathn/rational.c: change several global functions to static
+ function.
+
+Fri Oct 24 19:57:19 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_dump): should have removed commented out
+ unnecessary code. [ruby-cvs:27131]
+
+Fri Oct 24 19:16:36 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * id.h (enum ruby_method_ids): ISO C forbids comma at end of
+ enumerator list.
+
+Fri Oct 24 18:29:00 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/mathn.rb: moved into ext/mathn/rational/rational.c and
+ ext/mathn/complex/complex.c.
+ * ext/mathn: new mathn ext-libraries.
+
+Fri Oct 24 18:21:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_array.rb (TestArray#test_join): should restore
+ global variable after the test. [ruby-dev:36896]
+
+ * test/ruby/test_hash.rb (TestHash#test_to_s): ditto.
+
+Fri Oct 24 17:43:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (lambda): need to adjust lpar_beg for ripper as well.
+ [ruby-dev:36702]
+
+Fri Oct 24 16:13:12 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (read_multipart): change field value as String
+ from StringIO or Tempfile when multipart parse except file field.
+ add files method that can get uploaded files. [ruby-dev:36547]
+
+ * test/cgi/test_cgi_multipart.rb: fix the test for core.rb.
+
+Fri Oct 24 14:22:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ext): split out the target for extension library.
+
+ * common.mk (encs): depends on enc and trans.
+
+Fri Oct 24 10:23:24 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_signal.rb (TestSignal#test_exit_action): Thread
+ may terminate before sysread. [ruby-dev:36835]
+
+Thu Oct 23 22:06:23 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * distruby.rb: removed. "make dist" uses tool/make-snapshot for the 1.9
+ series. distruby.rb has been no longer used.
+
+Thu Oct 23 17:30:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_class_instance_methods): rdoc fixed. [ruby-core:19458]
+
+Thu Oct 23 16:19:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/init.rb (IRB.load_modules): catch LoadError explicitly.
+ a patch from Daniel Berger <Daniel.Berger at qwest.com> in
+ [ruby-core:19451]. fix [ruby-core:19450]
+
+Thu Oct 23 16:16:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyport): check if the port range.
+ [ruby-core:19460]
+
+Thu Oct 23 14:08:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyname): unuse unnecessary
+ object.
+
+ * ext/socket/socket.c (sock_s_getservbyport): the port should be
+ converted before the proto so that the #to_int of the former cannot
+ alter the latter.
+
+Thu Oct 23 10:55:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_dump): use \u{ff} escape for UTF-8 encoding
+ string.
+
+Thu Oct 23 09:26:22 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyport): cast to get rid of
+ warning.
+
+Thu Oct 23 08:06:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyport): port should be
+ network byte order. a patch from Dave Thomas in [ruby-core:19454].
+
+Thu Oct 23 01:26:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_conv_enc_opts): new function to convert with
+ specifying ecflags and ecopts.
+
+ * ext/zlib/zlib.c (gzfile_newstr): specify ecflags and ecopts for
+ conversion using above function.
+
+ * ext/zlib/zlib.c (gzfile_newstr): use own rb_econv_t for dummy
+ encoding to handling stateful encoding (e.g. iso-2022-jp).
+ [ruby-dev:36857]
+
+ * ext/zlib/zlib.c (gzfile_getc): ditto.
+
+Thu Oct 23 01:24:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_tmpsrc): get rid of side effects.
+
+Thu Oct 23 00:10:01 2008 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: separate data structure between rb_fiber_t and
+ rb_context_t (rb_fiber_t includes rb_context_t).
+ rb_fiber_t has double linked list of fibers in same threads.
+
+Wed Oct 22 17:25:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (pipe_open): remove unnecessary flush before fork.
+ a patch from Kazuhiro NISHIYAMA <zn at mbf.nifty.com>
+ in [ruby-dev:36840].
+
+Wed Oct 22 16:27:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_yield_setup_args): should not drop arguments
+ corresponding to default parameters.
+
+Wed Oct 22 14:59:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_larglist): should not allow semicolon separated local
+ variable declarations if formal argument list is not surrounded
+ by parentheses, mostly because semicolon outside of parentheses
+ appears to terminate the expression.
+
+Wed Oct 22 14:52:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_external_str_new_with_enc): no implicit strlen call.
+ [ruby-dev:36854]
+
+ * string.c (rb_external_str_new_cstr): new function to create
+ string from external NUL terminated C string.
+
+ * string.c (rb_locale_str_new_cstr): ditto.
+
+ * ext/readline/readline.c: now use rb_locale_str_new_cstr().
+
+ * test/sdbm/test_sdbm.rb (TestSDBM#test_delete_with_block):
+ deleted key to the block may be a copy of specified key.
+
+ * test/dbm/test_dbm.rb (TestDBM#test_delete_with_block): ditto.
+
+Wed Oct 22 13:16:47 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (unescape_escaped_nonascii): back out the last change on
+ the function. [ruby-dev:36818]
+
+Wed Oct 22 07:09:19 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_gzreader_ungetc): should be able to unget
+ Fixnum.
+
+ * ext/stringio/stringio.c (strio_ungetc): should convert unget
+ string.
+
+ * ext/stringio/stringio.c (strio_ungetbyte): new method.
+
+Wed Oct 22 05:46:25 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/vm.h: write a comment.
+
+ * common.mk: remove vm.h from any rules.
+ vm.h is not needed on this version.
+
+ * vm_core.h: ditto.
+
+Wed Oct 22 05:39:39 2008 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y (arg_concat_gen): concat target node should be NODE_ARRAY.
+ [ruby-core:19413]
+
+ * bootstraptest/test_method.rb: add tests.
+
+Wed Oct 22 00:29:13 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb (test_core_03_notify): Fixed test failures
+ [ruby-dev:36837].
+
+Wed Oct 22 00:22:06 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_external_str_new_with_enc): wrong condition to
+ calculate strlen().
+
+ * ext/readline/readline.c: add encoding support.
+
+Tue Oct 21 23:12:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_write): should convert writing
+ string to the encoding of the buffer.
+
+ * hash.c (rb_any_hash): typo fixed.
+
+ * ext/zlib/zlib.c (rb_gzwriter_write): oops, IO string conversion
+ need to be done by to_s.
+
+Tue Oct 21 22:38:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (open_key_args): should adjust argc, argv in struct
+ foreach_arg.
+
+Tue Oct 21 21:52:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_gzwriter_write): conversion should be done
+ using to_str, not to_s.
+
+ * ext/zlib/zlib.c (rb_gzwriter_write): need proper conversion
+ according to gz encoding.
+
+ * ext/zlib/zlib.c (rb_gzreader_ungetc): convert string encoding
+ before unget.
+
+Tue Oct 21 21:33:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (assert_nothing_raised): raise with backtrace.
+
+Tue Oct 21 20:12:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (assert_nothing_raised): set backtrace.
+
+Tue Oct 21 18:17:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c: remove obsolete prototype macros.
+
+ * ext/zlib/zlib.c (struct gzfile): add encoding field to gzfile
+ structure.
+
+ * ext/zlib/zlib.c (rb_gzreader_getc): now works on characters.
+
+ * ext/zlib/zlib.c (rb_gzreader_getbyte): new method to retrieve
+ single byte.
+
+ * ext/zlib/zlib.c (rb_gzreader_readbyte): ditto.
+
+ * ext/zlib/zlib.c (rb_gzreader_each_byte): renamed from each_char
+
+ * ext/zlib/zlib.c (rb_gzreader_ungetc): allow unget strings.
+
+ * ext/zlib/zlib.c (rb_gzreader_ungetbyte): renamed from ungetc.
+
+Tue Oct 21 13:28:42 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * io.c, include/ruby/intern.h (rb_io_ascii8bit_binmode): externed.
+
+ * ext/socket/socket.c (init_sock): use rb_io_ascii8bit_binmode()
+ instead of rb_io_binmode().
+
+Tue Oct 21 13:17:39 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * mdoc2man.rb: moved into tools/.
+
+ * instruby.rb: followed the change of mdoc2man.
+
+Tue Oct 21 11:34:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (strip_glibc_option, map_charset): check if
+ encoding is a string. based on the patch by Hiroshi Moriyama at
+ [ruby-dev:36811].
+
+ * test/iconv/test_basic.rb (test_invalid_arguments): added tests.
+
+Tue Oct 21 10:40:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_file_open_internal): should initialize fmode before using.
+
+Tue Oct 21 08:56:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (parse_char_class): CCV_SB is only for single
+ byte. [ruby-dev:36786]
+
+Tue Oct 21 01:49:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): plain rb/wb should set ASCII-8BIT
+ to the external_encoding.
+
+ * io.c (rb_file_open_internal): ditto.
+
+ * io.c (NEED_WRITECONV): no conversion when the external_encoding
+ is ASCII-8BIT.
+
+ * io.c (do_writeconv): skip ASCII-8BIT.
+
+Tue Oct 21 00:51:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_ascii8bit_binmode): renamed from rb_io_binmode.
+ (rb_io_binmode): don't change encoding conversion.
+ (rb_io_binmode_m): call rb_io_ascii8bit_binmode.
+
+Mon Oct 20 21:19:00 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (read_multipart): file's encoding is ascii-8bit
+ from file field of multipart form.
+
+Mon Oct 20 20:16:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (Init_zlib): add getbyte as an alias to getc.
+ [ruby-dev:36801]
+
+Mon Oct 20 17:31:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_equal): should not compare recursively.
+ [ruby-dev:36796]
+
+Mon Oct 20 16:48:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/ruby.h (ExportStringValue): new macro to convert
+ string in internal encoding to external to export.
+
+ * string.c (rb_str_export): new function to do conversion to
+ external encoding.
+
+ * ext/sdbm/init.c: encoding conversion support.
+
+ * ext/dbm/dbm.c: ditto.
+
+Mon Oct 20 15:42:02 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_locale_str_new): new function to convert string
+ from locale to internal encoding.
+
+Mon Oct 20 09:47:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/runner.rb: search srcdir/test/arg at first to find test/ruby
+ directory when "ruby" is specified.
+
+Mon Oct 20 08:20:01 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: support Encoding.default_internal.
+
+ * ext/tk/tcltklib.c: ditto.
+
+ * ext/tk/extconf.rb: improve the strategy for searching Tcl/Tk headers.
+
+Mon Oct 20 00:57:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): call given block for
+ filtering files.
+
+ * test/runner.rb: search srcdir/test/arg, srcdir/arg.
+
+ * bin/testrb: show usage if no files given.
+
+Sun Oct 19 21:19:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (srcs): removed ID_H_TARGET.
+
+ * tool/generic_erb.rb: always overwrites if no if-change option.
+ sends the result to stdout if no output option.
+
+ * template/id.h.tmpl: shows which token differs.
+
+Sun Oct 19 18:15:15 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans: adding WINDOWS-wwww encodings
+ (wwww = 874/1250/1251/1253/1254/1255/1256/1257)
+ (contributed by Yoshihiro Kambayashi)
+
+ * enc/trans/windows-wwww-tbl.rb: 8 new files
+ (contributed by Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added test_windows_wwww
+ (contributed by Yoshihiro Kambayashi)
+
+Sun Oct 19 07:37:13 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (log2,cbrt,frexp,ldexp,hypot,erf,erfc,gamma,lgamma):
+ should be also provided as module function. [ruby-dev:36787]
+
+Sun Oct 19 07:25:08 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * keywords, lex.c.src, opt_insn_unif.def, opt_operand.def: moved rarely changed
+ input files for code generators into defs/ directory.
+
+ * Makefile.in (lex.c): followed keywords and lex.c.src.
+
+ * common.mk (parser.o): followed keywords.
+ (INSNS): followed opt_*.def
+
+ * tools/instruction.rb: followed opt_*.def.
+
+Sun Oct 19 12:28:01 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * test/csv/*: Renamed tc_* files to test_* to fit in within Ruby's
+ testing process.
+
+Sun Oct 19 00:15:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (assert_nothing_thrown): don't intern.
+
+Sat Oct 18 14:40:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_sadded): remove newly defined singleton method
+ that should not exist after exception handling. [ruby-dev:36569]
+
+Sat Oct 18 14:27:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (opt_block_arg): allow trailing comma after usual
+ arguments. not after block argument.
+
+Sat Oct 18 13:30:53 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_external_str_new): a new function to convert from
+ external encoding to internal encoding. if something went
+ wrong, it returns a string with the external encoding.
+
+ * string.c (rb_external_str_new_with_enc): same as above besides
+ you can specify the source encoding.
+
+ * ruby.c (ruby_set_argv): use rb_external_str_new()
+
+ * ruby.c (set_arg0, ruby_script): ditto.
+
+Sat Oct 18 04:08:18 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#initialize): now Tempfile.new takes
+ keyword arguments to open(). [ruby-dev:36756]
+
+Sat Oct 18 17:10:10 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * tool/transcode-tblgen.rb: added set_valid_byte_pattern
+ to reduce coupling between table generation script and
+ specific encodings.
+
+ * enc/trans/single_byte.trans: using set_valid_byte_pattern
+
+Sat Oct 18 16:39:39 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: in transcode_search_path, eliminated a warning
+ on cygwin about pathlen potentially not being initialized
+
+Sat Oct 18 13:40:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (assert_nothing_thrown): implemented.
+
+Sat Oct 18 01:33:22 2008 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * common.mk: use added options for generic_erb.rb.
+
+Sat Oct 18 00:47:51 2008 wanabe <s.wanabe@gmail.com>
+
+ * array.c: don't recycle shared-array while sort!.
+
+Fri Oct 17 22:04:38 2008 wanabe <s.wanabe@gmail.com>
+
+ * array.c: recycle shared-array when it isn't referenced.
+
+Fri Oct 17 20:29:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): specify ARG_ENCODING_NONE instead of
+ ARG_ENCODING_FIXED for Regexp.new("", nil, "n"). [ruby-dev:36761]
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_initialize): test
+ updated.
+
+Fri Oct 17 19:46:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/ifchange, win32/ifchange.bat: --timestamp option added.
+
+ * tool/generic_erb.rb: --timestamp, --output and --if-change options
+ added.
+
+Fri Oct 17 18:33:12 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * array.c (ary_resize_capa): renamed RESIZE_CAPA.
+
+Fri Oct 17 18:16:51 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/bigdecimal/test_bigdecimal.rb (TestBigDecimal#test_sqrt_bigdecimal):
+ test updated. a patch from TAKANO Mitsuhiro <takano32 at jus.or.jp> in
+ [ruby-dev:36736].
+
+Fri Oct 17 18:14:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (uncommon.mk): ignores failures at loading.
+
+ * test/rubygems/gemutilities.rb (RubyGemTestCase#build_rake_in):
+ get rid of interference with other tests.
+
+Fri Oct 17 18:06:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c (str_transcode0): String#encode without argument now
+ behave as if :undef => :replace, :invalid => :replace specified.
+
+ * transcode.c (rb_econv_prepare_opts): should preserve options in
+ any case.
+
+Fri Oct 17 11:48:18 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/socket.c (init_sock): sockets should be binmode.
+
+ * test/socket/test_tcp.rb (test_encoding): ditto.
+
+Fri Oct 17 10:26:13 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/insns2vm.rb: remove -Kn option in shebang line because it's
+ inconsistent with -Ks commandline option in common.mk.
+
+Fri Oct 17 01:26:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_restartable0): in_pos and out_pos never be
+ NULL, now.
+
+Fri Oct 17 00:39:19 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/test/unit.rb: sort the order of executing tests.
+
+Fri Oct 17 00:24:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_binmode): reset encoding conversion.
+
+Fri Oct 17 00:16:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (rb_getc, rb_io_fread, rb_io_fwrite, rb_read_pending):
+ remove deprecated functions which do not work. [ruby-dev:36697]
+
+Thu Oct 16 23:48:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk (TESTS): removed to re-enable test for minitest.
+
+Thu Oct 16 23:37:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_set_sequence): fix memory leak.
+
+Thu Oct 16 23:27:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (assert_equal): avoid incompatible character
+ encodings error.
+
+Thu Oct 16 23:23:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (assert_equal): failure message changed.
+
+Thu Oct 16 22:52:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit: removed test/unit.
+
+ * lib/test/unit.rb: new compatibility layer using minitest.
+
+ * bin/testrb: use above.
+
+ * test/runner.rb: ditto.
+
+Thu Oct 16 14:34:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, enc/depend (enc, trans): targets for sources.
+
+Thu Oct 16 14:30:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (lib): installs all files other than README etc.
+
+Thu Oct 16 09:48:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): changed the message to clarify the
+ third option argument is now ignored. [ruby-dev:36753]
+
+Thu Oct 16 08:14:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): no warning when default_external already
+ set by -E.
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_rubyopt):
+ put -K after -E to set script encoding.
+
+Thu Oct 16 06:20:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_transcode.rb (TestTranscode#test_errors):
+ String#encode now works without any argument. [ruby-dev:36740]
+
+Wed Oct 15 23:48:22 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * .gdbinit (rp): REGEXP handling fixed.
+
+ * string.c (rb_str_rindex_m): need not to call rb_enc_check on
+ regexp.
+
+ * re.c (unescape_escaped_nonascii): try ASCII-8BIT encoding for
+ broken strings.
+
+Wed Oct 15 23:11:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (DelegateClass): restored 1.8 behavior for
+ DelegateClass as well. [ruby-dev:36739]
+
+Wed Oct 15 22:19:14 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (RESIZE_CAPA): check whether len is longer than capacity.
+
+ * array.c (rb_ary_compact_bang): resize ary before changing capacity.
+ fixed [ruby-dev:36704]
+
+Wed Oct 15 16:57:30 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * version.h (RUBY_DESCRIPTION): remove unnecessary space.
+
+Tue Oct 14 23:18:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator): simplified and restored 1.8
+ behavior. [ruby-dev:35986]
+
+Tue Oct 14 21:50:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (TESTS): skips minitest by default, since it interferes
+ with test/unit.
+
+Tue Oct 14 21:36:29 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (load_conv_function51932): check
+ having IMultiLanguage2 or IMultiLanguage. [ruby-dev:36716]
+
+ * ext/win32ole/extconf.rb: ditto.
+
+Tue Oct 14 20:45:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (Init_IO): $FILENAME and $* must be read-only. [ruby-dev:36698]
+
+ * variable.c (*_getter, *_setter, *_marker): made public.
+
+ * include/ruby/ruby.h (rb_gvar_*_{getter,setter,marker}): declared.
+
+Tue Oct 14 20:32:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/single_byte.trans (transcode_tblgen_singlebyte): renamed
+ from transcode_tblgen_windows.
+ (transcode_tblgen_iso8859): use transcode_tblgen_singlebyte.
+
+Tue Oct 14 19:32:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (process_options): -U should be allowed in RUBYOPT
+ environment variable. [ruby-dev:36720]
+
+Tue Oct 14 14:11:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): -U can be followed by other options.
+
+Tue Oct 14 13:30:30 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans: added windows-1252
+
+ * enc/trans/windows-1252-tbl.rb: new file
+ (contributed by Yoshihiro Kambayashi)
+
+ * tool/transcode-tblgen.rb: listed windows-1252 as '1byte'
+
+ * test/ruby/test_transcode.rb: added test_windows_1252
+ (contributed by Yoshihiro Kambayashi)
+
+Tue Oct 14 12:22:32 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_variable.rb (TestVariable#test_variable): add
+ a test of [ruby-dev:36698].
+
+Tue Oct 14 11:14:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c (str_transcode0): should not raise error when
+ default_internal is not set. [ruby-core:19309]
+
+Tue Oct 14 11:14:26 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/net/pop.rb: check for invalid APOP timestamp. (CVE-2007-1558)
+ [ruby-dev:36631]
+
+ * test/net/pop/test_pop.rb: ditto.
+
+Tue Oct 14 09:39:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (set_internal_encoding_once): check double contradicted
+ specification of the encoding from command line.
+
+ * ruby.c (set_external_encoding_once): ditto.
+
+Tue Oct 14 08:28:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): allow reserved word to be keyword argument.
+
+Mon Oct 13 19:07:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (token_info_pop): show source filename. [ruby-dev:36710]
+
+Mon Oct 13 08:59:08 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (load_conv_function51932): support
+ CP51932 on cygwin and mingw32. thanks to arton.
+
+ * test/win32ole/test_win32ole.rb (test_cp51932): ditto.
+
+Mon Oct 13 07:54:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): add -U command line option to specify
+ utf-8 as default_internal.
+
+Mon Oct 13 07:42:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c (str_transcode0): String#encode() with no encoding
+ specified transcode the string into Encoding.default_internal.
+ inspired by [ruby-core:19298].
+
+Sun Oct 12 18:00:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (set_ole_codepage, ole_cp2encoding,
+ ole_wc2mb, ole_vstr2wc, ole_mb2wc): support CP51932 (only mswin32).
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Sun Oct 12 12:03:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_insnhelper.h (ruby_vm_redefined_flag): apply optimization
+ patch proposed by Paul Brannan. [ruby-core:19171]
+
+Sun Oct 12 09:46:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime): suppressed warnings on cygwin.
+
+Sat Oct 11 19:49:35 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_prepare): use utf-8 encoding directly.
+
+Sat Oct 11 10:20:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (CLEANINGS): uses escaped form tabs to preventing the
+ confusion. [ruby-talk:317345]
+
+Sat Oct 11 08:51:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (Rake::Application#standard_exception_handling): removed
+ unnecessary SystemExit, and exits with false instead of system
+ dependent value. [ruby-talk:317330]
+
+Sat Oct 11 03:54:05 2008 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: optimize 'for' statement when one variable given.
+
+ * benchmark/bm_loop_for.rb: added.
+
+ * benchmark/bm_loop_times.rb: modified.
+
+Sat Oct 11 12:09:05 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv/csv.rb: Added support for Encoding::default_internal.
+ * lib/csv/csv.rb: Switched to new Hash syntax.
+
+Fri Oct 10 22:16:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (comment_at_top): needed for ripper too.
+
+Fri Oct 10 22:07:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby.h: updated macros for headers. [ruby-core:19275]
+
+Fri Oct 10 19:21:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (magic_comment_encoding): warns when ignored.
+
+ * parse.y (parser_magic_comment): replaces '-' with '_'.
+
+ * parse.y (parser_yylex): allows magic comments indented and the
+ second line or later.
+
+Fri Oct 10 17:26:50 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/ext/parser/parser.c (JSON_parse_string):
+ associate encoding.
+
+Fri Oct 10 10:18:21 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/test/*: reverted back to test/unit.
+ * test/test/*: ditto
+ * lib/minitest/*: Imported minitest 1.3.0 r4333.
+
+Fri Oct 10 03:41:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): check if codepoint for %c is valid.
+ [ruby-dev:36691]
+
+Fri Oct 10 01:55:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_names): minor improvement.
+
+Fri Oct 10 00:21:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (ParseError.filter_backtrace): removes internal
+ backtrace.
+
+Fri Oct 10 00:11:16 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * transcode.c (rb_econv_add_converter): remove unnecessary NULL check.
+
+Thu Oct 9 23:53:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-c-mode): buffer may not have file
+ name.
+
+Thu Oct 9 23:30:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * process.c (run_exec_dup2): fix resource leak.
+
+Thu Oct 9 23:19:02 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * process.c (rb_run_exec_options): fix resource leak.
+
+Thu Oct 9 22:13:58 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_module.rb (test_remove_class_variable): add a test
+ for Class#remove_class_variable.
+
+ * test/ruby/test_object.rb (test_remove_instance_variable): add a test
+ for Object#remove_instance_variable.
+
+Thu Oct 9 22:04:38 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (rb_mod_remove_cvar): fix r19711.
+
+Thu Oct 9 21:17:50 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/syck/syck.c (syck_lookup_sym): remove reading uninitialized
+ variable.
+
+Thu Oct 9 16:34:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/ext/generator/extconf.rb: fix target.
+
+ * ext/json/ext/parser/extconf.rb: ditto.
+
+Thu Oct 9 14:37:59 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * include/ruby/ruby.h: embeds the elements of an array into its
+ struct RArray for # of elements <= 3.
+
+ * array.c: ditto.
+
+ * gc.c (gc_mark_children): following the change of struct RArray.
+
+ * ext/tk/tcltklib.c (ip_ruby_cmp): ditto.
+
+ * parse.y (coverage): ditto.
+
+ * proc.c (curry): ditto.
+
+ * .gdbinit: ditto.
+
+Thu Oct 9 11:29:33 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): new instance method Encoding#names,
+ returns its name and alias names.
+
+ * encoding.c (enc_names): defined for Encoding#names.
+
+ * encoding.c (enc_names_i): defined for enc_names.
+
+Thu Oct 9 08:47:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_thread_wait_fd_rw): should not block by select if
+ there's only one thread living. fixed [ruby-dev:36646].
+
+Wed Oct 8 20:59:52 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_init_cp): initialize WIN32OLE.codepage
+ according to Encoding.default_internal and
+ Encoding.default_external.
+
+Wed Oct 8 17:02:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure/generator.rb (utf8_to_json):
+ process each unpacked Unicode character.
+
+Wed Oct 8 15:00:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure/parser.rb
+ (JSON::Pure::Parser#parse_string): force_encoding("UTF-8").
+
+Wed Oct 8 11:56:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: assert_nothing_thrown,
+ assert_raise, assert_not_equal, assert_no_match, assert_not_nil,
+ assert_not_same are coming back as alias.
+
+Wed Oct 8 11:18:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (autoload_delete, autoload_file): should not delete
+ autoload table, since it may be shared with duplicated modules.
+ [ruby-core:19181]
+
+Wed Oct 8 02:38:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_default_internal_encoding): merged a patch from
+ Michael Selig <michael.selig at fs.com.au> in [ruby-core:18985].
+
+ * io.c (rb_io_ext_int_to_encs): ditto.
+
+ * ruby.c (proc_options): support default internal encoding in -E
+ option.
+
+Wed Oct 8 00:03:39 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (today,now): should produce own instances.
+ [ruby-talk:317020]
+
+Tue Oct 7 16:43:51 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure/generator.rb (utf8_to_json):
+ force_encoding before gsub.
+
+Tue Oct 7 16:35:41 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure/generator.rb (utf8_to_json):
+ downcase the result of Unicode escape.
+
+Mon Oct 6 16:44:52 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::QueryExtension::initialize_query): fix the
+ condition.
+
+ * test/cgi/test_cgi_core.rb: bug fix encoding.
+ thanks to TAKANO Mitsuhiro <takano32 at jus.or.jp> .
+
+ * test/cgi/test_cgi_multipart.rb: temporary comment in.
+
+Mon Oct 6 15:22:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_mark_children): ignores T_ZOMBIE.
+
+Mon Oct 6 12:45:20 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_module.rb (TestModule#_wrap_assertion): add
+ definition. is this really needed?
+
+ * test/ruby/test_module.rb (TestModule#test_mod_constants): should
+ not depend on global Module constants.
+
+Mon Oct 6 12:38:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Assertions#assert_nothing_raised):
+ should take optional message argument.
+
+Mon Oct 6 12:18:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): string comparison should be
+ transitive. [ruby-dev:36484]
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb#test_str_eq): test
+ updated.
+
+Mon Oct 6 09:00:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/bigdecimal/test_bigdecimal.rb (test_sqrt_bigdecimal): test
+ updated. a patch from TAKANO Mitsuhiro <takano32 at jus.or.jp>
+ in [ruby-dev:36669].
+
+Sun Oct 5 23:34:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb ($config_h): now always defines for old libraries.
+
+Sun Oct 5 23:06:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_mod_modfunc): method undefined in included module
+ may not have nd_body. [ruby-core:18738]
+
+Sun Oct 5 21:28:58 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/rational.rb: resolved conflicts of aliases.
+
+ * lib/mathn.rb: avoided some warnings.
+
+Sun Oct 5 18:51:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: remove debug code introduced by previous change.
+
+Sun Oct 5 17:49:35 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/open-uri.rb (OpenURI.open_uri): set encoding to strio.
+
+Sun Oct 5 17:39:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_set_encoding): defined for
+ StringIO#set_encoding.
+
+Sun Oct 5 11:24:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * eval.c: come back definition of environ.
+
+Sun Oct 5 09:19:49 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/utf8tbl.c: update table.
+
+Sat Oct 4 22:50:14 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * dln.c: Ruby no longer supports VMS.
+
+ * error.c: ditto.
+
+ * eval.c: ditto.
+
+ * eval_intern.h: ditto.
+
+ * include/ruby/defines.h: ditto.
+
+ * include/ruby/ruby.h: ditto.
+
+ * io.c: ditto.
+
+ * process.c: ditto.
+
+ * ruby.c: ditto.
+
+ * vms/config.h: removed.
+
+ * vms/vms.h: ditto.
+
+ * vms/vmsruby_private.c: ditto.
+
+ * vms/vmsruby_private.h: ditto.
+
+Sat Oct 4 22:44:23 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * dln.c: Ruby no longer supports Windows CE.
+
+ * eval.c: ditto.
+
+ * include/ruby/defines.h: ditto.
+
+ * include/ruby/win32.h: ditto.
+
+ * ruby.c: ditto.
+
+ * strftime.c: ditto.
+
+ * win32/Makefile.sub: ditto.
+
+ * win32/win32.c: ditto.
+
+ * ext/tk/extconf.rb: ditto.
+
+ * lib/fileutils.rb: ditto.
+
+ * test/fileutils/test_fileutils.rb: ditto.
+
+ * wince/*: removed.
+
+Sat Oct 4 22:35:06 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * dln.c: Ruby no longer supports MacOS 9 or before.
+
+ * eval.c: ditto.
+
+ * eval_intern.h: ditto.
+
+ * ext/extmk.rb: ditto.
+
+ * ext/tk/sample/tkextlib/treectrl/demo.rb: ditto.
+
+ * ext/tk/stubs.c: ditto.
+
+ * file.c: ditto.
+
+ * hash.c: ditto.
+
+ * include/ruby/defines.h: ditto.
+
+ * ruby.c: ditto.
+
+ * signal.c: ditto.
+
+ * vm_core.h: ditto.
+
+Sat Oct 4 22:30:28 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * dln.c: Ruby no longer supports MS-DOS.
+
+ * ext/sdbm/_sdbm.c: ditto.
+
+ * ext/sdbm/sdbm.h: ditto.
+
+ * gc.c: ditto.
+
+ * hash.c: ditto.
+
+ * include/ruby/defines.h: ditto.
+
+ * include/ruby/util.h: ditto.
+
+ * io.c: ditto.
+
+ * process.c: ditto.
+
+ * ruby.c: ditto.
+
+ * strftime.c: ditto.
+
+ * util.c: ditto.
+
+Sat Oct 4 22:14:15 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * djgpp/GNUmakefile.in: removed. Ruby no longer supports djgpp.
+
+ * djgpp/README.djgpp: ditto.
+
+ * djgpp/config.hin: ditto.
+
+ * djgpp/config.sed: ditto.
+
+ * djgpp/configure.bat: ditto.
+
+ * djgpp/mkver.sed: ditto.
+
+ * ext/Setup.dj: ditto.
+
+ * dln.c: removed djgpp supports.
+
+ * file.c: ditto.
+
+ * gc.c: ditto.
+
+ * io.c: ditto.
+
+ * process.c: ditto.
+
+ * ruby.c: ditto.
+
+ * signal.c: ditto.
+
+ * util.c: ditto.
+
+ * vm_core.h: ditto.
+
+ * lib/fileutils.rb: ditto.
+
+ * lib/mkmf.rb: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+ * test/fileutils/test_fileutils.rb: ditto.
+
+ * test/ruby/test_env.rb: ditto.
+
+ * test/ruby/test_path.rb: ditto.
+
+Sat Oct 4 21:59:39 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * x68/_dtos18.c: removed. Ruby no longer supports human68k.
+
+ * x68/_round.c: ditto.
+
+ * x68/fconvert.c: ditto.
+
+ * x68/select.c: ditto.
+
+ * ext/Setup.x68: ditto.
+
+ * missing/x68.c: ditto.
+
+ * dln.c (dln_find_exe_r): removed human68k supports.
+ (dln_find_1): ditto.
+
+ * lib/mkmf.rb: ditto.
+
+ * ext/extmk.rb (Init_ext): ditto.
+
+ * ext/socket/socket.c (init_sock): ditto.
+
+ * gc.c (GC_MALLOC_LIMIT): ditto.
+ (rb_setjmp, rb_jmpbuf): ditto.
+ (mark_current_machine_context): ditto.
+
+ * include/ruby/defines.h (PATH_ENV): ditto.
+
+ * io.c: ditto.
+
+ * process.c: ditto.
+
+ * ruby.c: ditto.
+
+ * test/ruby/test_env.rb: ditto.
+
+ * test/ruby/test_path.rb: ditto.
+
+ * LEGAL
+
+Sat Oct 4 19:02:36 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: no need to require the "lib/rational.rb".
+
+Sat Oct 4 19:02:59 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_enc_get): don't replicate encoding.
+ [ruby-dev:36575]
+
+Sat Oct 4 18:47:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_external_encoding): defined.
+
+ * ext/stringio/stringio.c (strio_internal_encoding): defined.
+
+ * ext/stringio/stringio.c (Init_stringio): define above.
+
+Sat Oct 4 15:52:17 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/mini/test_mini_test.rb: recovered.
+ It had been temporarily removed at r19645.
+
+ * test/mini/test_mini_mock.rb: ditto.
+
+ * test/mini/test_mini_spec.rb: ditto.
+
+ * lib/test/**/*: replaced by miniunit.
+ miniunit had been temporarily reverted at r19643 but
+ now recovered.
+
+Sat Oct 4 15:33:26 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (gdb-ruby): new target. it runs ruby under controlled by
+ gdb.
+
+ * common.mk (dist): accepts RELNAME variable as the second argument of
+ make-snapshot.rb.
+
+Sat Oct 4 12:17:46 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/irb/ext/save-history.rb: change load_history using File.expand_path. see [ruby-dev:36660]. Thanks Kouhei Sutou.
+ * lib/irb/irb/context.rb: convert string Symbol of instance variable names in IRB:Context#inspect.
+
+Fri Oct 3 22:43:04 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/dl/extconf.rb ($distcleanfiles): added callback-?.c into
+ the distclean list.
+
+Fri Oct 3 19:33:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure.rb (module JSON): remove Iconv dependency.
+
+ * ext/json/lib/json/pure/generator.rb (utf8_to_json): process as
+ binary and remove Iconv dependency.
+
+ * ext/json/lib/json/pure/parser.rb (parse_string): ditto.
+
+Fri Oct 3 14:04:05 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{configure.bat,setup.mak,Makefile.sub): add --program-prefix
+ configure option support.
+
+Thu Oct 2 21:22:43 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::QueryExtension): delete MorphingBody
+ and replace like as 1.8's in multipart reading.
+ see [ruby-dev:36443],
+ reference from CGIAlt http://cgialt.rubyforge.org/
+
+ * test/cgi/test_cgi_multipart.rb : fixed multipart test.
+
+Thu Oct 2 20:46:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_sub_bang): fix coderange.
+
+Wed Oct 1 22:54:09 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/parsers/lightparser.rb, lib/debug.rb: remove unused when
+ clauses.
+
+Wed Oct 1 22:43:59 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/xmlrpc, lib/rexml, test/ruby/test_array.rb,
+ test/ruby/test_unicode_escape.rb, test/scanf/test_scanf.rb,
+ test/rss/rss-assertions.rb: fix indentation to remove warning.
+
+Wed Oct 1 21:36:35 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): finalize deferred IO and Data.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): defers IO finalization.
+ [ruby-dev:36646]
+
+Wed Oct 1 19:11:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (marshal_dump): fixed for check_dump_arg.
+
+ * marshal.c (marshal_dump): initializes dump_arg before any funcall.
+ [ruby-dev:36648]
+
+Wed Oct 1 00:54:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_split_m): should use rb_str_subseq() which use
+ offset and length by bytes. [ruby-dev:36641]
+
+Wed Oct 1 00:29:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_settracefunc.rb (test_call, test_class): line number
+ was changed at r19592.
+
+Wed Oct 1 00:20:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (check_exec_redirect): don't depend on rb_stdout and
+ rb_stderr.
+
+Tue Sep 30 23:06:58 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/mini/test_mini_test.rb: removed.
+ Temporarily removed the tests for miniunit because of
+ they depend on the miniunit version of test/unit,
+ where test/unit was temporarily reverted to the state
+ before importing miniunit.
+
+ * test/mini/test_mini_mock.rb: ditto.
+
+ * test/mini/test_mini_spec.rb: ditto.
+
+Tue Sep 30 23:04:30 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/test/**/*: recovered.
+ Temporarily reverts the changes of lib/test/unit/* in
+ r19502 and r19501, in order to release 1.9.0-5.
+
+Tue Sep 30 23:00:05 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/test/unit.rb: removed.
+ Temporarily reverts the changes of lib/test/unit/* in
+ r19543, r19534 and r19503, in order to release 1.9.0-5.
+
+ * lib/test/unit/assertions.rb: ditto.
+
+ * lib/test/unit/deprecate.rb: ditto.
+
+ * lib/test/unit/error.rb: ditto.
+
+ * lib/test/unit/testcase.rb: ditto.
+
+Tue Sep 30 20:17:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): should honor value of the
+ textmode: and binmode: options.
+
+Tue Sep 30 17:04:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/bigdecimal/test_bigdecimal.rb (test_sqrt_bigdecimal): wrong
+ precision specification. a patch from TAKANO Mitsuhiro
+ <takano32 at jus.or.jp> in [ruby-dev:36634].
+
+Tue Sep 30 16:53:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): returns non zero. [ruby-dev:36633]
+
+Tue Sep 30 16:52:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): add %<name>s style named argument
+ support. a patch from Yusuke Endoh <mame at tsg.ne.jp>
+ in [ruby-dev:35851].
+
+ * sprintf.c (rb_str_format): add gettext style named format
+ (%{name}) support. inspired by [ruby-dev:35852].
+
+ * sprintf.c (GETNAMEARG): should raise KeyError exception when no
+ named argument found.
+
+ * hash.c (rb_hash_fetch): export fetch function.
+
+Tue Sep 30 13:19:01 2008 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/test_gem_installer.rb: remove extra call to setup to
+ fix ENV['HOME'] pollution.
+
+Tue Sep 30 13:04:11 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/mini/test.rb: Updated to 1.3.0 r4257.
+ * test/mini/*: added from r4257.
+
+Tue Sep 30 07:46:07 2008 Eric Hodel <drbrain@segment7.net>
+
+ * test/rdoc/test_rdoc_markup_attribute_manager.rb: Test with clean
+ SPECIALS.
+ * test/rubygems/gemutilities.rb: Restore ENV['HOME'] after test.
+ * test/runner.rb: Pass -n argument down to miniunit.
+
+Tue Sep 30 01:02:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (token_info_push, token_info_pop): do nothing for evaled
+ source.
+
+Tue Sep 30 00:47:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: constified.
+
+Mon Sep 29 23:32:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_subseq): don't use rb_str_drop_bytes for short
+ string.
+
+Mon Sep 29 22:54:29 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/mathn.rb: added String#to_[rc]. moved def_canon.
+
+Mon Sep 29 20:41:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_subseq): use rb_str_drop_bytes if possible.
+
+Mon Sep 29 20:22:20 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: imported additional tests and some adjustments.
+
+Mon Sep 29 20:13:05 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fev_initialize): initialization
+ handler instance variable.
+
+ * test/win32ole/test_win32ole_typelib.rb (test_s_typelibs):
+ fix the warning of shadowing outer local variable.
+
+Mon Sep 29 19:59:00 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (rescue_callback): use rb_write_error
+ instead of fprintf.
+
+Mon Sep 29 01:51:54 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rdoc/test_rdoc_info_formatting.rb (teardown): delete tmpdir for
+ test.
+
+Mon Sep 29 00:30:20 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/html.rb (CGI::HtmlExtension::{radio_group, checkbox_group}):
+ can specify the false as checked or selected value.
+ [ruby-core:18306], [ruby-core:18307]
+
+ * test/cgi/test_cgi_tag_helper.rb: add a test.
+
+Sun Sep 28 23:08:38 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/html.rb (CGI::HtmlExtension::popup_menu):
+ fix the calls #bytesize on array parameters. [ruby-core:18919]
+
+Sun Sep 28 22:44:26 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::parse): ignore illegal query params.
+ [ruby-dev:36618]
+
+Sun Sep 28 22:05:07 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_set_sequence): check duplicated when clause.
+ [ruby-dev:36616]
+
+Sun Sep 28 19:04:03 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: imported a date test suite ruby 1.9 limited ed.
+
+Sun Sep 28 18:40:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mini/test.rb (MINI_DIR): loaded path is expanded.
+
+ * lib/mini/test.rb (assert_match): get rid of confusion of
+ ruby-mode.el.
+
+Sun Sep 28 12:36:09 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.c (vm_exec_core): add an UNLIKELY() hint.
+
+ * vm_insnhelper.h (BASIC_OP_UNREDEFINED_P): add a LIKELY() hint.
+
+Sun Sep 28 12:04:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_new): sets empty string to coderange 7bit.
+ [ruby-core:18993]
+
+Sun Sep 28 09:39:48 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/mathn.rb ({Fixnum,Bignum,Float}#**): may produce complex
+ value.
+
+Sun Sep 28 09:05:53 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv/csv.rb: Worked around some minor encoding changes in Ruby
+ pointed out by Nobu.
+
+Sun Sep 28 08:37:12 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/mathn.rb: a hack to provide canonicalization. This must be
+ temporary, but this seems to be not bad for the time being.
+
+Sat Sep 27 06:22:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (Module#rake_extension, String#ext, String#pathmap): use
+ built-in methods.
+
+ * lib/rake.rb (String#pathmap): fixed typo in rdoc.
+
+Sat Sep 27 04:28:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rmext): preceding dots are not a part of extension.
+
+ * file.c (rb_file_s_extname): ditto.
+
+Sat Sep 27 03:15:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_jump_tag_but_local_jump): exc is not used if val is nil.
+
+Sat Sep 27 03:12:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (host_str): numeric address should be unsigned.
+ [ruby-core:18971]
+
+Fri Sep 26 22:46:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary, brace_block): fix for line number.
+
+ * proc.c (rb_proc_location, rb_method_location): new methods
+ {Proc,Method,UnboundMethod}#source_location. [ruby-core:18452]
+
+Fri Sep 26 21:36:33 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (RUBY_VM_CHECK_INTS_TH): add an UNLIKELY hint.
+
+Fri Sep 26 19:33:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_str_encode): renamed from
+ rb_str_transcode. [ruby-dev:36593]
+ (rb_econv_has_convpath_p): renamed from rb_transcode_convertible.
+
+ * transcode.c: follow the renaming.
+
+ * io.c: ditto.
+
+Fri Sep 26 19:01:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/bigdecimal/test_bigdecimal.rb (test_inspect): fixed CPU bit
+ size dependent test. pointed out by TAKANO Mitsuhiro <takano32 AT
+ jus.or.jp>.
+
+Fri Sep 26 18:57:33 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/pathname/test_pathname.rb: Fix use of deprecated methods.
+
+Fri Sep 26 18:39:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (dist): nothing is needed to run BASERUBY.
+
+ * tool/make-snapshot: new option -archname.
+
+Fri Sep 26 18:24:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el: safe customizable variables.
+
+Fri Sep 26 17:37:18 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * include/ruby/ruby.h (rb_mPrecision): removed.
+ Precision module was temporarily removed at r19430.
+
+Fri Sep 26 17:25:10 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (dist): Changed its dependencies and action.
+
+Fri Sep 26 17:07:04 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * error.c (Init_syserr): moved to the template.
+ (errno_missing): removed. fixed [ruby-dev:35958].
+
+ * defs/known_errors.def: added. extracted from Init_syserr.
+
+ * templates/known_errors.inc.tmpl: added. Template for Init_syserr.
+ c.f. [ruby-dev:35958].
+
+ * tools/generic_erb.rb: added. general purpose mapper which maps
+ data+template into source code.
+
+ * common.mk (error.$(OBJEXT), incs, known_errors.inc):
+ Fixed dependencies.
+
+Fri Sep 26 17:02:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thlist_signal): clears the woken thread if nothing woke.
+
+ * thread.c (rb_barrier_wait): achieves the lock if no thread was
+ waiting yet.
+
+Fri Sep 26 12:04:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c: should include <ruby/io.h>.
+
+ * ext/io/wait/wait.c: ditto.
+
+ * ext/openssl/ossl.h: ditto.
+
+Fri Sep 26 11:34:08 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * variable.c (rb_define_hooked_variable): cast to get rid of compiler
+ warnings.
+
+Fri Sep 26 11:05:41 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * transcode.c, include/ruby/encoding.c (rb_transcode_convertible):
+ new function. checking the existence of converter.
+
+Fri Sep 26 10:35:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (global_variable, struct trace_var): made function
+ members more strict.
+
+Fri Sep 26 09:55:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby{io,sig}.h: moved to include/ruby/backward.
+
+Fri Sep 26 09:47:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/rubysig.h: old macros for backward compatibility.
+
+ * thread.c (BLOCKING_REGION): rewritten using helper functions.
+
+Fri Sep 26 03:03:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (Init_vm_eval): define module_eval, class_eval and eval
+ here for rdoc.
+
+Fri Sep 26 00:40:30 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * range.c (range_inspect): fix SEGV for cyclic range object.
+ [ruby-core:18835]
+
+Thu Sep 25 23:59:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: dependency updated.
+
+Thu Sep 25 21:46:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_eUndefinedConversionError): renamed from
+ rb_eConversionUndefinedError.
+ (rb_eConverterNotFoundError): renamed from rb_eNoConverterError.
+
+Thu Sep 25 21:23:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * pack.c (pack_pack, pack_unpack): 'm0' format (base64) complies with
+ RFC 4648. It adds no line feed when encoding, and raise ArgumentError
+ if the encoded string contains non-alphabet (including CR and LF).
+
+ * lib/base64.rb: added. This provides encoding/decoding method for
+ Base64 in standard RFC 2045, Base64 in standard RFC 4648 and ``Base 64
+ Encoding with URL and Filename SafeAlphabet'' in RFC 4648.
+
+ * test_pack.c, test/base64/test_base64.rb: add tests for above.
+
+Thu Sep 25 21:00:32 2008 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix btest-* rules [ruby-dev:36528].
+ and remove obsolete rules.
+
+Thu Sep 25 20:27:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * class.c (rb_make_metaclass): [BUG] Fixed a bus error
+ on the case for metaclass of a class which includes a
+ module.
+
+Thu Sep 25 19:34:33 2008 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/*: Update some new tests to use build_rake_in.
+ * test/rubygems/gemutilities.rb: Fix broken merge of rake detection.
+
+Thu Sep 25 19:13:12 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Update to RubyGems 1.3.0 r1891.
+
+Thu Sep 25 18:40:42 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * class.c (rb_make_metaclass): Made class of class of class
+ from Class into its own eigenclass. Now meta^(n)-class
+ hierarchy regresses infinitely, again.
+ (This feature was decided on developer-meeting-20080922.)
+
+Thu Sep 25 16:01:07 2008 Jim Weirich <jim@tardis.local>
+
+ * lib/rake.rb: Update rake source to version 0.8.3. This
+ version includes some fixes for running Rake on windows.
+ (1) better APPDATA/HOMExxx/USERPROFILE integration for
+ system rakefiles, (2) Better handling of the :ruby command
+ when installed in directory containing spaces.
+
+Thu Sep 25 11:22:51 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Update to RDoc 2.2.1 r185.
+
+Thu Sep 25 02:08:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_mode_enc): make it static.
+
+Thu Sep 25 01:22:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mini/test.rb (Mini::Assertions#assert_raise): fixed typo.
+
+Wed Sep 24 23:39:00 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * test/cgi/test_cgi_multipart.rb : revert last change.
+ ( deprecated is assert_raises. )
+ * test/cgi/test_cgi_core.rb : ditto.
+ * test/cgi/test_cgi_header.rb : ditto.
+
+Wed Sep 24 23:12:49 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::new, CGI::{accept_charset,accept_charset=}) :
+ accept parameters either in a hash,
+ string as a block. add the encoding validation process.
+ * test/cgi/test_cgi_core.rb : test for query encoding check.
+
+Wed Sep 24 22:58:18 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): raise exception when the encoding of
+ the string is dummy.
+
+ * string.c (rb_str_rstrip_bang): remove nul characters even if the
+ encoding of the string is not single byte optimizable.
+ fixed [ruby-core:18844], reported by Michael Selig.
+
+Wed Sep 24 19:01:45 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): workaround for VC++8 x64.
+
+Wed Sep 24 17:44:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (Init_Complex), rational.c (Init_Rational): undefines
+ default #allocate methods which call the allocator.
+
+Wed Sep 24 17:02:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (Init_Complex), rational.c (Init_Rational): ID_ALLOCATOR
+ differs from :allocate, and invisible in ruby level.
+
+Wed Sep 24 15:58:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): removing mixed spaces and nuls at
+ the end of strings. [ruby-dev:36497]
+
+Wed Sep 24 15:13:04 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * test/cgi/test_cgi_multipart.rb : test for miniunit.
+ * test/cgi/test_cgi_core.rb : ditto.
+ * test/cgi/test_cgi_header.rb : ditto.
+
+Wed Sep 24 14:38:29 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/tmpdir.rb: setup buffer with nul characters instead of spaces.
+ fixed [ruby-dev:36493]
+
+Wed Sep 24 11:18:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_binread): offset argument was wrongly passed to
+ internal IO#read call. [ruby-core:18810]
+
+Wed Sep 24 07:38:23 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm_core.h: ruby/ruby.h should be included at the very first
+ place in an entire compilation unit, as it includes
+ ruby/config.h
+
+Wed Sep 24 06:41:24 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/test/*: removed test/unit.
+ * lib/test/*: added miniunit.
+ * lib/mini/*: ditto.
+
+Wed Sep 24 04:45:35 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/node.h, node.h: move node.h from include path.
+ This change stop to install node.h because of saving ABI
+ (node.h will be changed. Extensions should not depends on
+ this file).
+
+ * blockinlining.c, class.c, compile.c, debug.h, enum.c,
+ gc.c, iseq.c, parse.y, ruby.c, signal.c, variable.c,
+ vm.c, vm_core.h, vm_dump.c: ditto.
+
+ * ext/ripper/depend: ditto.
+
+Wed Sep 24 04:09:13 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: remove unused frame values.
+
+Wed Sep 24 04:07:07 2008 Koichi Sasada <ko1@atdot.net>
+
+ * signal.c (signal_exec): execute rb_eval_cmd() directly.
+
+Wed Sep 24 03:08:58 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri/mailto.rb: fix indentation.
+ * lib/uri/generic.rb: ditto.
+ * lib/yaml.rb: ditto.
+ * lib/uri/cgi/core.rb: fix indentation and ambiguous argument warning.
+
+Tue Sep 23 23:39:25 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv/csv.rb: Improved the idea of whitespace and word characters used
+ in substitutions during header conversion as suggested by Michael Selig.
+
+Tue Sep 23 21:50:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_binwrite): allocate wbuf if nosync.
+
+Tue Sep 23 21:45:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_body): use io_binwrite instead of io_fwrite.
+
+Tue Sep 23 21:31:16 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_rational2.rb: updated.
+
+ * test/ruby/test_complex2.rb: added.
+
+ * test/ruby/test_complexrational.rb: added.
+
+Tue Sep 23 21:26:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_casecmp): make the ordering consistent with
+ String#<=>.
+
+Tue Sep 23 20:52:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_binwrite): add nosync argument.
+ (do_writeconv): extracted from io_fwrite.
+ (io_fwrite): add nosync argument. use do_writeconv.
+ (io_write): add nosync argument.
+ (io_write_m): new function for IO#write.
+ (rb_p): don't append record separator.
+
+Tue Sep 23 20:24:41 2008 Koichi Sasada <ko1@atdot.net>
+
+ * signal.c (signal_exec): fix to use rb_proc_call().
+
+Tue Sep 23 20:06:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/formatters/pretty.rb (REXML::Formatters::Pretty#wrap):
+ abandon wrapping if the line contains no space. [ruby-dev:36045]
+
+Tue Sep 23 19:38:03 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (subtract): check tv_sec. reported by ko1.
+
+Tue Sep 23 19:21:03 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_canonicalize_internal): does no apply
+ canonicalization rule anymore.
+
+ * rational.c (nurat_s_canonicalize_internal(_no_reduce)?): ditto.
+
+ * complex.c: removed class method new! and new.
+
+ * rational.c: ditto.
+
+Tue Sep 23 19:20:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_binread): a new method to read binary chunk from a
+ file. [ruby-core:18674]
+
+ * io.c (open_key_args): wrong permission specified for read-open.
+
+Tue Sep 23 18:24:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * hash.c (rb_obj_is_proc): declaration moved for rdoc.
+
+Tue Sep 23 18:07:55 2008 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk (io.o): remove dependency for vm_core.h.
+
+Tue Sep 23 17:56:44 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_blocking_region): fix typo in a document.
+
+Tue Sep 23 17:50:35 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_blocking_region): write a document.
+
+Tue Sep 23 17:14:31 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, include/ruby/intern.h (rb_thread_interrupted): added.
+
+ * io.c: use VALUE of thead instead of rb_tread_t to check interrupts.
+
+Tue Sep 23 17:05:14 2008 Koichi Sasada <ko1@atdot.net>
+
+ * class.c, vm_core.h: move decl of rb_iseq_clone() to class.c.
+
+Tue Sep 23 17:02:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * debug.h (ruby_set_debug_option): declared.
+
+ * main.c: include debug.h.
+
+ * common.mk (main.$(OBJEXT)): dependency updated.
+
+Tue Sep 23 16:59:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (ENVMATCH, ENVNMATCH): reduced same code.
+
+Tue Sep 23 16:55:11 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.h: fix comment and rename macro HAVE_RUBY_MVM_H to
+ HAVE_RUBY_VM_H.
+
+Tue Sep 23 16:41:31 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/node.h, vm_core.h: move definition of
+ RUBY_VM_METHOD_NODE to node.h.
+
+ * class.c, common.mk: remove useless inclusion.
+
+ * compile.h, iseq.h, vm_core.h: rename compile.h to iseq.h.
+ move some definitions from vm_core.h to iseq.h.
+
+ * compile.c, iseq.c, vm.c: ditto.
+
+ * eval.c, compile.c: move some functions for parser
+ from eval.c to compile.c.
+
+ * eval_intern.h, vm_core.h: move va_init_list() macro to
+ vm_core.h.
+
+ * iseq.c (rb_iseq_new_top, rb_iseq_first_lineno): added.
+
+ * load.c, ruby.c: use rb_iseq_new_top() instead of
+ rb_iseq_new() with ISEQ_TYPE_TOP constant directly.
+
+ * proc.c: use rb_iseq_first_lineno() instead of accessing
+ iseq structure.
+
+Tue Sep 23 16:17:54 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/ripper/eventids2.c (token_to_eventid): supper __ENCODING__
+ keyword. [ruby-dev:36478]
+
+Tue Sep 23 15:30:53 2008 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk, hash.c: remove unused inclusion.
+
+Tue Sep 23 09:52:07 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval_safe.c, safe.c: rename eval_safe.c to safe.c.
+
+ * common.mk, eval.c, safe.c, inits.c: separate safe.c from eval.c and
+ make Init_safe().
+
+Tue Sep 23 09:20:00 2008 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: clean up
+ - remove blockinlining.$(OBJEXT) to built
+ - make ENCODING_H_INCLDUES variable (include/ruby/encoding.h)
+ - make VM_CORE_H_INCLUDES variable (vm_core.h)
+ - simplify rules.
+ - make depends rule to output depend status using gcc -MM.
+
+ * include/ruby/mvm.h, include/ruby/vm.h: rename mvm.h to vm.h.
+
+ * include/ruby.h: ditto.
+
+ * load.c: add inclusion explicitly.
+
+ * enumerator.c, object.c, parse.y, thread.c, vm_dump.c:
+ remove useless inclusion.
+
+ * eval_intern.h: cleanup inclusion.
+
+ * vm_core.h: rb_thread_t should be defined in this file.
+
+ * vm_evalbody.c, vm_exec.c: rename vm_evalbody.c to vm_exec.c.
+
+ * vm.h, vm_exec.h: rename vm.h to vm_exec.h.
+
+ * insnhelper.h, vm_insnhelper.h: rename insnhelper.h to vm_insnhelper.h.
+
+ * vm.c, vm_insnhelper.c, vm_insnhelper.h:
+ - rename vm_eval() to vm_exec_core().
+ - rename vm_eval_body() to vm_exec().
+ - cleanup include order.
+
+ * vm_method.c: fix comment.
+
+Tue Sep 23 09:01:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/pathname.rb (each_filename): return Enumerator if no block
+ given.
+
+ * test/pathname/test_pathname.rb: add a test for above.
+
+Tue Sep 23 08:25:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_aset): allow nil value to remove an entry.
+ [ruby-dev:36465]
+
+ * test/ruby/test_env.rb (TestEnv#test_aset): test updated.
+
+Tue Sep 23 08:07:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-keyword-end-re): emacs21 support. a
+ patch from Hiroshi Moriyama <hiroshi at kvd.biglobe.ne.jp> in
+ [ruby-dev:36471].
+
+ * misc/ruby-mode.el (ruby-in-ppss-context-p): ditto.
+
+ * misc/ruby-mode.el (ruby-here-doc-end-syntax):
+
+Tue Sep 23 02:07:52 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline_history.rb
+ (Readline::TestHistory#test_each): checked return value.
+
+Tue Sep 23 02:05:34 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (Init_readline): used remove_history to
+ check offset of history if unsupported clear_history.
+
+Mon Sep 22 17:39:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#open): should return a value from the
+ block (if given). [ruby-core:18394]
+
+Mon Sep 22 11:17:51 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * include/ruby/encoding.h (enum): ISO C forbids comma at end of
+ enumerator list
+
+Mon Sep 22 10:15:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * LEGAL: updated file names removed and added. [ruby-dev:36426]
+
+Mon Sep 22 02:39:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (get_default_external): add description.
+
+Sun Sep 21 21:52:41 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * math.c (math_log): should check argc.
+
+Sun Sep 21 21:20:24 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: added two macros.
+
+ * rational.c: ditto.
+
+Sun Sep 21 18:06:38 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_convert): checks argc.
+
+ * rational.c (nurat_s_convert): ditto.
+
+Sun Sep 21 10:19:04 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_canonicalize_internal): checks exactness of
+ imag only.
+
+ * rational.c (nurat_s_convert): accepts non real value
+ (Rational(a,b) as a/b).
+
+ * complex.c (nucomp_s_convert): refined.
+
+Sun Sep 21 09:37:57 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv/csv.rb: Reworked CSV's parser and generator to be m17n. Data
+ is now parsed in the Encoding it is in without need for translation.
+ * lib/csv/csv.rb: Improved inspect() messages for better IRb support.
+ * lib/csv/csv.rb: Fixed header writing bug reported by Dov Murik.
+ * lib/csv/csv.rb: Use custom separators in parsing header Strings as
+ suggested by Shmulik Regev.
+ * lib/csv/csv.rb: Added a :write_headers option for outputting headers.
+ * lib/csv/csv.rb: Handle open() calls in binary mode whenever we can to
+ workaround a Windows issue where line-ending translation can cause an
+ off-by-one error in seeking back to a non-zero starting position after
+ auto-discovery for :row_sep as suggested by Robert Battle.
+ * lib/csv/csv.rb: Improved the parser to fail faster when fed some forms
+ of invalid CSV that can be detected without reading ahead.
+ * lib/csv/csv.rb: Added a :field_size_limit option to control CSV's
+ lookahead and prevent the parser from biting off more data than
+ it can chew.
+ * lib/csv/csv.rb: Added readers for CSV attributes: col_sep(), row_sep(),
+ quote_char(), field_size_limit(), converters(), unconverted_fields?(),
+ headers(), return_headers?(), write_headers?(), header_converters(),
+ skip_blanks?(), and force_quotes?().
+ * lib/csv/csv.rb: Cleaned up code syntax to be more inline with
+ Ruby 1.9 than 1.8.
+
+Sun Sep 21 07:43:16 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: an instance method image has been removed and
+ uses "imag" instead of "image".
+
+ * complex.c: two instance method re and im are removed.
+
+ * rational.c: follows the above changes.
+
+ * include/ruby/ruby.h: ditto.
+
+ * gc.c: ditto.
+
+ * lib/cmath.rb: ditto.
+
+ * lib/mathn.rb: ditto.
+
+ * lib/complex.rb: ditto. and provides some obsolete methods.
+
+Sun Sep 21 02:48:45 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/ext/parser/parse.c: use ruby_xfree().
+
+ * ext/json/ext/parser/parse.rl: ditto.
+
+ * ext/json/ext/parser/unicode.c: ditto.
+
+Sun Sep 21 02:40:20 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: import JSON v 1.1.3.
+
+Sat Sep 20 11:43:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/optparse.rb (summarize): separator "" should output new line.
+
+Sat Sep 20 08:07:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y: strings which contain only US-ASCII don't force to have
+ US-ASCII encoding. [ruby-dev:36400]
+
+Sat Sep 20 07:59:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_desc): Regexps of ASCII Compatible encoding may
+ contain non-ASCII characters. So in that case its encoding
+ must keep original encoding.
+
+Sat Sep 20 07:44:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: prec.c is removed.
+
+Fri Sep 19 22:37:25 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: uses f_(in)?exact_p macro.
+
+ * rational.c: ditto.
+
+ * bignum.c (rb_big_pow): bignum**bignum - should calculate without
+ rational.
+
+ * lib/complex.rb: should override Math module at most once.
+
+ * lib/mathn.rb: requires 'cmath' directly.
+
+Fri Sep 19 20:48:06 2008 Yuki Sonoda <yugui@yugui.jp>
+
+ * prec.c: removed. Precision will be redesigned and be back again.
+ c.f. [ruby-dev:36352].
+
+ * common.mk (COMMON_OBJS): removed prec.o.
+
+ * inits.c (rb_call_inits): removed Init_Precision.
+
+ * numeric.c (Init_Numeric): removed inclusion of Precision.
+ removed #induced_from from each class.
+
+ * rational.c: ditto.
+
+ * ext/bigdecimal/bigdecimal.c: ditto.
+
+ * lib/rdoc/known_classes.rb: removed the entry for Precision.
+
+ * test/ruby/test_prec.rb: removed.
+
+ * test/ruby/test_integer.rb: removed tests for Precision.
+
+ * test/ruby/test_fixnum.rb: ditto.
+
+ * test/ruby/test_float.rb: ditto.
+
+ * test/ruby/test_rational.rb: ditto.
+
+ * test/ruby/test_complex.rb: ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb: ditto.
+
+Fri Sep 19 19:43:40 2008 Yuki Sonoda <yugui@yugui.jp>
+
+ * common.mk : Reverts the changeset 18994.
+ Uses the official repository of rubyspec again.
+
+Fri Sep 19 17:41:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: applied OS/2 support patch from Brendan Oakley
+ <gentux2 at gmail.com> in [ruby-core:18707].
+
+Fri Sep 19 09:29:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dln.c: newer BeOS support. a patch from Pete Goodeve
+ <pete.goodeve at computer.org> in [ruby-core:18712].
+
+Fri Sep 19 03:41:25 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: fix memory violation. mentioned by mame [ruby-dev:36373]
+
+Fri Sep 19 01:07:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * regexec.c (string_cmp_ic): add text_end argument.
+ (slow_search): call enclen with real string end.
+ (map_search): add text_end argument.
+
+Thu Sep 18 22:54:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_key_to_string): comment out
+ fragments of unused code.
+
+Thu Sep 18 22:35:03 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): 1E1000...000 is interpreted as
+ Infinity. [ruby-dev:36159]
+
+ * ext/bigdecimal/bigdecimal.c (VpPower): Infinity ** 1 returns
+ Infinity instead of NaN. [ruby-dev:36159]
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests for above.
+
+Thu Sep 18 22:20:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (Init_Exception): introduce EncodingError which is a
+ superclass for all encoding related exception classes,
+ e.g. Encoding::CompatibilityError. [ruby-dev:36371]
+
+ * transcode.c (Init_transcode): ditto.
+
+Thu Sep 18 21:57:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): make ascii8bit string to be
+ compatible with any other encoding.
+
+ * string.c (rb_str_cmp): use rb_str_comparable() instead of
+ rb_enc_compatible() since <=> is a comparison anyway.
+
+Thu Sep 18 21:37:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * grapheme cluster implementation reverted. [ruby-dev:36375]
+
+Thu Sep 18 20:50:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (Rake::Application#standard_exception_handling):
+ replaced magic numbers for exit status.
+
+Thu Sep 18 20:37:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::ParseError#set_backtrace): omits
+ OptionParser internal backtraces unless debug flag is set.
+
+Thu Sep 18 20:02:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/uri/common.rb (unescape): skip '%' to make String#hex work
+ correctly.
+
+Thu Sep 18 19:51:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (big2str_karatsuba): free internal buffer eagerly.
+ a patch from TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com>
+ in [ruby-dev:36217].
+
+ * bignum.c (rb_big2str0): ditto.
+
+Thu Sep 18 19:43:04 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * st.c (new_size): raise RuntimeError when st_table is too big.
+ [ruby-dev:36354]
+
+Thu Sep 18 18:23:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (enc_arg): must take pointer argument to avoid GC
+ problem. StringValueCStr modifies the argument and it should be
+ preserved while the string StringValueCStr returns is used.
+ Since the string is used by caller, the modified argument should be
+ hold by caller. Actually
+ GC.stress = true
+ def (o=Object.new).to_str()
+ "universal"+"_newline"
+ end
+ "\u3042".encode(o, "")
+ causes curious warning:
+ rb_define_const: invalid name `' for constant
+
+Thu Sep 18 17:32:44 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c: add "Error" suffix for Encoding exception classes.
+ a patch from Tadashi Saito <shiba at mail2.accsnet.ne.jp> in
+ [ruby-dev:36346].
+
+ * encoding.c (Init_Encoding): rename EncodingCompatibilityError to
+ Encoding::CompatibilityError. [ruby-dev:36366]
+
+Thu Sep 18 17:18:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c (enc_arg): revert last change. too early exception
+ raising.
+
+ * transcode.c (enc_arg): need not to take pointer argument.
+
+Sun Sep 18 02:22:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests to achieve over 90%
+ test coverage of bigdecimal.
+
+Wed Sep 17 21:50:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_casecmp): don't use rb_enc_codepoint.
+
+Wed Sep 17 19:55:33 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_convert): accepts complex
+ value (Complex(a,b) as a+bi).
+
+Wed Sep 17 19:16:47 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_io.rb (TestIO#test_dup): avoid infinite loop.
+ [ruby-dev:36326]
+
+ * test/ruby/test_io.rb (TestIO#test_dup): remove needless open.
+ [ruby-dev:35957]
+
+Wed Sep 17 17:44:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): process option mode: and perm: as
+ well.
+
+ * io.c (open_key_args): move mode: and perm: related code to
+ rb_io_extract_modeenc().
+
+Wed Sep 17 13:42:59 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/html.rb (checkbox_group,radio_group): bug fix
+ use size instead of bytesize.
+
+ * test/cgi/test_cgi_tag_helper.rb: test for checkbox_group,radio_group.
+
+Wed Sep 17 06:58:31 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: provides predicate real? instead of scalar?.
+
+ * complex.c: follows the above change.
+
+ * lib/cmath.rb: ditto.
+
+Wed Sep 17 01:56:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io_m17n.rb: use __FILE__ instead of /dev/null.
+ [ruby-dev:36327]
+
+Wed Sep 17 01:33:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): add precise_ret
+ argument for mbc_to_code.
+ (ONIGENC_MBC_TO_CODE): provide NULL for precise_ret.
+ (ONIGENC_MBC_PRECISE_CODEPOINT): defined.
+
+ * include/ruby/encoding.h (rb_enc_mbc_precise_codepoint): defined.
+
+ * regenc.h (onigenc_single_byte_mbc_to_code): precise_ret argument
+ added.
+ (onigenc_mbn_mbc_to_code): ditto.
+
+ * regenc.c (onigenc_single_byte_mbc_to_code): precise_ret argument
+ added.
+ (onigenc_mbn_mbc_to_code): ditto.
+
+ * string.c (count_utf8_lead_bytes_with_word): removed.
+ (str_utf8_nth): removed.
+ (str_utf8_offset): removed.
+ (str_strlen): UTF-8 codepoint oriented optimization removed.
+ (rb_str_substr): ditto.
+ (enc_succ_char): use rb_enc_mbc_precise_codepoint.
+ (enc_pred_char): ditto.
+ (rb_str_succ): ditto.
+
+ * encoding.c (rb_enc_ascget): check length with
+ rb_enc_mbc_precise_codepoint.
+ (rb_enc_codepoint): use rb_enc_mbc_precise_codepoint.
+
+ * regexec.c (string_cmp_ic): add text_end argument.
+ (match_at): check end of character after exact string matches.
+
+ * enc/utf_8.c (grapheme_table): defined for extended grapheme cluster
+ boundary.
+ (grapheme_cmp): defined.
+ (get_grapheme_properties): defined.
+ (grapheme_boundary_p): defined.
+ (MAX_BYTES_LENGTH): defined.
+ (comb_char_enc_len): defined.
+ (mbc_to_code0): extracted from mbc_to_code.
+ (mbc_to_code): use mbc_to_code0.
+ (left_adjust_combchar_head): defined.
+ (utf_8): use a extended grapheme cluster as a unit.
+
+ * enc/unicode.c (onigenc_unicode_mbc_case_fold): use
+ ONIGENC_MBC_PRECISE_CODEPOINT to extract codepoints.
+ (onigenc_unicode_get_case_fold_codes_by_str): ditto.
+
+ * enc/euc_jp.c (mbc_to_code): follow mbc_to_code field change.
+ use onigenc_mbn_mbc_to_code.
+
+ * enc/shift_jis.c (mbc_to_code): ditto.
+
+ * enc/emacs_mule.c (mbc_to_code): ditto.
+
+ * enc/gbk.c (gbk_mbc_to_code): follow mbc_to_code field and
+ onigenc_mbn_mbc_to_code change.
+
+ * enc/cp949.c (cp949_mbc_to_code): ditto.
+
+ * enc/big5.c (big5_mbc_to_code): ditto.
+
+ * enc/euc_tw.c (euctw_mbc_to_code): ditto.
+
+ * enc/euc_kr.c (euckr_mbc_to_code): ditto.
+
+ * enc/gb18030.c (gb18030_mbc_to_code): ditto.
+
+ * enc/utf_32be.c (utf32be_mbc_to_code): follow mbc_to_code field
+ change.
+
+ * enc/utf_16be.c (utf16be_mbc_to_code): ditto.
+
+ * enc/utf_32le.c (utf32le_mbc_to_code): ditto.
+
+ * enc/utf_16le.c (utf16le_mbc_to_code): ditto.
+
+Wed Sep 17 01:17:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (enc_arg): raise exception when unknown encoding is
+ given.
+
+Tue Sep 16 22:23:24 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI#header): performance improvement.
+ From CGIAlt http://cgialt.rubyforge.org/
+
+ * test/cgi/test_cgi_header.rb: exception class fixed.
+
+Tue Sep 16 22:21:33 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_concat): fix rdoc. (codepoint is integer)
+
+ * string.c (rb_str_each_codepoint): use UINT2NUM.
+
+Tue Sep 16 21:48:55 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_desc): Regexp#inspect should be US-ASCII.
+
+Tue Sep 16 21:33:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_crypt): orthodox crypt() sees only first two bytes
+ of salt.
+
+Tue Sep 16 19:18:40 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_marshal_{dump,load}): preserve instance
+ variables.
+
+ * rational.c (nurat_marshal_{dump,load}): ditto.
+
+Tue Sep 16 18:28:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_gets_m): rdoc updated. limit counts in bytes.
+ [ruby-core:18617]
+
+ * io.c (rb_io_readlines, rb_f_gets): ditto.
+
+ * io.c (rb_io_readbyte): rdoc updated. [ruby-core:18617]
+
+Tue Sep 16 11:55:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_codepoint): add new methods, #codepoints
+ and #each_codepoint. a patch from Michael Selig
+ <michael.selig at fs.com.au> in [ruby-core:18532].
+
+Tue Sep 16 11:24:44 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: add new constants. a patch from
+ IWAMURO Motonori <deenheart+ruby at gmail.com> in [ruby-dev:36309].
+
+Tue Sep 16 09:20:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_dup): exception should be
+ raised from IO#dup.
+
+Tue Sep 16 08:35:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_dup): this test might fail if
+ there are any garbage IO objects.
+
+Tue Sep 16 02:02:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_buf_cat_ascii): codepoint is unsigned int.
+
+ * string.c (rb_str_concat): ditto.
+
+ * string.c (str_cat_char): ditto.
+
+ * string.c (prefix_escape): ditto.
+
+Tue Sep 16 01:47:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (single_byte_optimizable): make function inline. based
+ on a patch from Michael Selig <michael.selig at fs.com.au> in
+ [ruby-core:18532].
+
+ * string.c (str_modify_keep_cr): new function act as
+ rb_str_modify(), but don't clear coderange
+
+ * string.c (rb_str_casecmp): specialized for single byte strings.
+
+ * string.c (rb_str_splice): preserve coderange.
+
+ * string.c (rb_str_slice_bang, rb_str_reverse_bang,
+ rb_str_upcase_bang, rb_str_downcase_bang, tr_trans,
+ rb_str_capitalize_bang, rb_str_swapcase_bang,
+ rb_str_delete_bang, rb_str_chop_bang, rb_str_chomp_bang,
+ rb_str_lstrip_bang, rb_str_rstrip_bang): ditto.
+
+ * string.c (rb_str_clear): preset coderange.
+
+ * string.c (rb_str_split_m): specialized for splitting with a
+ string.
+
+Tue Sep 16 00:57:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_quote): use rb_enc_mbcput to generate ASCII
+ incompatible characters properly.
+
+Tue Sep 16 00:51:59 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (Encoding#base_encoding): removed. [ruby-dev:36270]
+
+Tue Sep 16 00:40:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (STR1_LENGTH): defined.
+ (makeSTR1LEN): defined.
+
+ * tool/transcode-tblgen.rb: use makeSTR1LEN. generate STR1 for 4 to
+ 259 bytes.
+
+ * transcode.c (rb_transcoding): new field: output_index.
+ (transcode_restartable0): use STR1_LENGTH.
+
+Mon Sep 15 23:52:45 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, include/ruby/ruby.h: rename rb_register_mark_object()
+ to rb_gc_register_mark_object().
+
+ * eval.c, vm.c: initialize vm->mark_object_ary at
+ Init_top_self().
+
+ * bignum.c, complex.c, encoding.c, ext/win32ole/win32ole.c,
+ io.c, load.c, marshal.c, rational.c, ruby.c, vm.c:
+ use rb_gc_register_mark_object() instead of
+ rb_global_variable() or rb_gc_register_address().
+
+Mon Sep 15 23:37:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_opts): don't use to_sym.
+
+Mon Sep 15 23:28:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_get_index): don't return -1.
+
+ * io.c (rb_scan_open_args): call FilePathValue before encoding
+ conversion.
+
+Mon Sep 15 22:11:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_squeeze_bang): specialized for 7bit characters in
+ ASCII compatible strings.
+
+ * string.c (rb_str_count): ditto.
+
+ * string.c (tr_trans): preserve 7bit/valid coderange flag.
+
+ * string.c (rb_str_squeeze_bang): preserve previous coderange value.
+
+ * string.c (rb_str_lstrip_bang): ditto.
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+ * encoding.c (rb_default_external_encoding): preserve
+ default_external_encoding in a static variable.
+
+ * string.c (single_byte_optimizable): check coderange first, to
+ reduce number of calling rb_enc_from_index().
+
+Mon Sep 15 20:57:00 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/matrix.rb (Matrix#eql?): fixed [ruby-dev:36298].
+ Reported by an anonymous user.
+
+ * lib/matrix.rb (Vector#eql?): ditto.
+
+ * (Matrix#compare_by_row_vectors): takes comparison
+ strategy as an optional parameter.
+
+ * (Vector#compare_by): ditto.
+
+Mon Sep 15 14:34:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (RUBY_MAX_CHAR_LEN): defined.
+
+ * encoding.c (str_cat_char): use RUBY_MAX_CHAR_LEN.
+
+Mon Sep 15 13:53:33 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): accept other than strings and
+ regexps. [ruby-core:18595]
+
+ * encoding.c (rb_enc_get_index): works files and encodings.
+
+Mon Sep 15 13:17:21 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_eql_p): new.
+
+ * complex.c (nucomp_hash): should use hash values of the elements.
+
+ * rational.c (nurat_hash): ditto.
+
+ * hash.c (rb_any_cmp): removed an unused variable.
+
+Mon Sep 15 11:11:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): resetsize_func and resetstate_func
+ also returns ssize_t.
+
+ * enc/trans/iso2022.trans: follow the type change.
+
+Mon Sep 15 10:28:10 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/matrix/test_matrix.rb (setup): typo.
+ (test_equality): misdefinition of the expected working.
+ Reported by an anonymous user.
+ (test_hash): added.
+
+ * test/matrix/test_vector.rb: ditto.
+
+Mon Sep 15 03:33:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h: return output functions ssize_t.
+
+ * transcode.c (transcode_restartable0): don't need to cast the result
+ of output functions.
+
+ * enc/trans/newline.trans: follow the type change.
+
+ * enc/trans/escape.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/japanese.trans: ditto.
+
+Mon Sep 15 03:04:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h: output function takes output buffer size.
+
+ * transcode.c: give output buffer size for output functions.
+
+ * enc/trans/newline.trans: follow the type change.
+
+ * enc/trans/escape.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/japanese.trans: ditto.
+
+Mon Sep 15 02:37:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_encode): returns duplicated string if nothing
+ changed. [ruby-core:18578]
+
+Sun Sep 14 22:09:01 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::parse): performance improvement
+
+Sun Sep 14 18:33:32 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: trivial changes.
+
+Sun Sep 14 16:15:22 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/matrix.rb (Vector#eql?): typo of the method name as "eqn?".
+ (Vector#eqn?): removed. Defined by mistake.
+ Fixes [ruby-dev:36294]. Reported by weda <weda AT
+ issp.u-tokyo.ac.jp> and an anonymous user.
+
+ * test/matrix/test_matrix.rb: added.
+
+ * test/matrix/test_vector.rb: added.
+
+Sun Sep 14 16:07:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): associates the locale encoding with $0 as
+ well as ARGV.
+
+Sun Sep 14 13:48:03 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * object.c (Init_Object): added metameta-class initialization for
+ BasicObject, Object, and Module.
+ The metameta-classes of them are now the metaclass of Class, as the
+ metameta-class of Class is.
+
+ * object.c (boot_defmetametaclass): added.
+
+Sun Sep 14 10:10:43 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (f_{add,mul,sub}): omitted some shortcuts for preserving
+ signed zero anyway.
+
+ * complex.c (nucomp_negate): new.
+
+Sun Sep 14 04:15:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): add end argument for
+ left_adjust_char_head.
+ (ONIGENC_LEFT_ADJUST_CHAR_HEAD): add end argument.
+ (onigenc_get_left_adjust_char_head): ditto.
+
+ * include/ruby/encoding.h (rb_enc_left_char_head): add end argument.
+
+ * regenc.h (onigenc_single_byte_left_adjust_char_head): ditto.
+
+ * regenc.c (onigenc_get_right_adjust_char_head): follow the interface
+ change.
+ (onigenc_get_right_adjust_char_head_with_prev): ditto.
+ (onigenc_get_prev_char_head): ditto.
+ (onigenc_step_back): ditto.
+ (onigenc_get_left_adjust_char_head): ditto.
+ (onigenc_single_byte_code_to_mbc): ditto.
+
+ * re.c: ditto.
+
+ * string.c: ditto.
+
+ * io.c: ditto.
+
+ * regexec.c: ditto.
+
+ * enc/euc_jp.c: ditto.
+
+ * enc/cp949.c: ditto.
+
+ * enc/shift_jis.c: ditto.
+
+ * enc/gbk.c: ditto.
+
+ * enc/big5.c: ditto.
+
+ * enc/euc_tw.c: ditto.
+
+ * enc/euc_kr.c: ditto.
+
+ * enc/emacs_mule.c: ditto.
+
+ * enc/gb18030.c: ditto.
+
+ * enc/utf_8.c: ditto.
+
+ * enc/utf_16le.c: ditto.
+
+ * enc/utf_16be.c: ditto.
+
+ * enc/utf_32le.c: ditto.
+
+ * enc/utf_32be.c: ditto.
+
+Sun Sep 14 03:43:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (ONIGENC_STEP_BACK): add end argument.
+ (onigenc_step_back): ditto.
+
+ * regenc.c (onigenc_step_back): add end argument.
+
+ * regexec.c: follow the interface change.
+
+Sun Sep 14 03:20:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (onigenc_get_prev_char_head): add end
+ argument.
+
+ * include/ruby/encoding.h (rb_enc_prev_char): ditto.
+
+ * regenc.c (onigenc_get_prev_char_head): add end argument.
+
+ * regparse.c: follow the interface change.
+
+ * regexec.c: ditto.
+
+ * string.c: ditto.
+
+ * parse.y: ditto.
+
+Sun Sep 14 02:04:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h
+ (onigenc_get_right_adjust_char_head_with_prev): add end argument.
+
+ * regenc.c (onigenc_get_right_adjust_char_head_with_prev): use end
+ argument.
+
+ * regexec.c (forward_search_range): follow the interface change.
+
+Sun Sep 14 01:38:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (onigenc_get_right_adjust_char_head): add
+ end argument.
+
+ * include/ruby/encoding.h (rb_enc_right_char_head): add end argument.
+
+ * regenc.c (onigenc_get_right_adjust_char_head): use end argument.
+
+ * re.c (rb_reg_adjust_startpos): follow the interface change.
+
+ * string.c (rb_str_index): ditto.
+
+ * regexec.c (backward_search_range): ditto.
+ (onig_search): ditto.
+
+Sun Sep 14 00:43:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/ripper/depend (ripper.o): it depends on ruby headers.
+
+Sat Sep 13 19:27:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_encoding_set): don't need argc argument.
+ (rb_io_s_pipe): update io_encoding_set call.
+ (rb_io_set_encoding): ditto.
+
+Sat Sep 13 18:46:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_transcoding): align state field.
+
+Sat Sep 13 18:21:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (DECORATOR_P): renamed from SUPPLEMENTAL_CONVERSION.
+
+Sat Sep 13 18:05:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): use rb_enc_name.
+ (make_readconv): ditto.
+
+ * transcode.c (rb_econv_open_opts): ditto.
+ (econv_args): ditto.
+ (decorate_convpath): ditto.
+ (econv_set_replacement): ditto.
+
+Sat Sep 13 11:15:38 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/rexml/document.rb: fixed typo.
+
+Sat Sep 13 10:53:13 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: refined.
+
+ * rational.c: ditto.
+
+Sat Sep 13 03:44:52 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_prepare_opts): raise ArgumentError if
+ a broken string is specified as a replacement.
+
+Sat Sep 13 03:31:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * iseq.c (iseq_s_compile_file): use rb_file_open_str.
+
+ * io.c (rb_file_open_generic): call validate_enc_binmode.
+ (rb_file_open_str): call FilePathValue.
+
+Sat Sep 13 02:58:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (validate_enc_binmode): extracted from rb_io_extract_modeenc.
+ (rb_io_extract_modeenc): use validate_enc_binmode.
+ (io_encoding_set): call validate_enc_binmode.
+
+Sat Sep 13 02:50:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_prepare_opts): initialize *opt and return 0
+ if opthash is nil.
+
+Sat Sep 13 02:29:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans: transcoder name renamed to use underscore.
+
+ * transcode.c: follow the renaming.
+
+Sat Sep 13 02:12:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_init_by_convpath_i): new function.
+ (rb_econv_init_by_convpath): new function.
+ (econv_init): use rb_econv_init_by_convpath.
+
+Sat Sep 13 01:11:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_args): take snamev_p and dnamev_p to prevent
+ possible GC problem.
+
+Sat Sep 13 00:38:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (enc_arg): take arg as VALUE * to prevent possible GC
+ problem.
+
+Fri Sep 12 23:19:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_add_transcoder_at): fix loop condition.
+
+Fri Sep 12 22:39:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (decorator_names): extracted from rb_econv_open.
+ (rb_econv_open): use decorator_names.
+ (econv_args): extracted from econv_init.
+ (econv_init): use econv_args.
+ (decorate_convpath): new function.
+ (search_convpath_i): new function.
+ (econv_s_search_convpath): new method.
+ (Init_transcode): new method defined.
+
+Fri Sep 12 21:55:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_t): new field: num_allocated.
+ (rb_econv_alloc): extracted from
+ rb_econv_open_by_transcoder_entries.
+ (rb_econv_add_transcoder_at): extracted from rb_econv_decorate_at
+ and generalized
+ (rb_econv_open_by_transcoder_entries): use rb_econv_alloc and
+ rb_econv_add_transcoder_at.
+ (rb_econv_add_converter): extracted from rb_econv_decorate_at.
+ (rb_econv_decorate_at): use rb_econv_add_converter.
+
+Fri Sep 12 21:22:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_t): new field: started.
+ (rb_econv_open_by_transcoder_entries): initialize started field.
+ (rb_econv_convert): set started field.
+ (rb_econv_insert_output): ditto.
+ (rb_econv_decorate_at): check started field instead of num_finished.
+
+Fri Sep 12 20:28:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * regenc.c (onigenc_single_byte_code_to_mbc): follow OnigEncoding
+ change.
+
+Fri Sep 12 20:00:22 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regparse.c (parse_exp): fix resource leak.
+
+Fri Sep 12 01:21:22 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/syck/node.c (syck_replace_str2): fix wrong check to free ptr.
+
+Thu Sep 11 20:18:24 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_err_in_callback.rb (teardown): get rid
+ of infinite loop.
+
+Thu Sep 11 19:12:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (OnigCodePoint): unsigned long to unsigned int.
+
+ * include/ruby/encoding.h (rb_enc_codepoint): ditto.
+
+ * encoding.c (rb_enc_codepoint): signed int to unsigned int.
+
+ * encoding.c (rb_enc_ascget): ditto.
+
+ * string.c (rb_str_casecmp): ditto.
+
+ * string.c (enc_succ_alnum_char): ditto.
+
+ * string.c (rb_str_inspect): ditto.
+
+ * string.c (rb_str_upcase_bang): ditto.
+
+ * string.c (rb_str_downcase_bang): ditto.
+
+ * string.c (rb_str_capitalize_bang): ditto.
+
+ * string.c (rb_str_swapcase_bang): ditto.
+
+ * string.c (struct tr): ditto.
+
+ * string.c (trnext): ditto.
+
+ * string.c (tr_trans): ditto.
+
+ * string.c (tr_setup_table): ditto.
+
+ * string.c (tr_find): ditto.
+
+ * string.c (rb_str_delete_bang): ditto.
+
+ * string.c (rb_str_squeeze_bang): ditto.
+
+ * string.c (rb_str_count): ditto.
+
+ * string.c (rb_str_split_m): ditto.
+
+ * string.c (rb_str_each_line): ditto.
+
+ * string.c (rb_str_lstrip_bang): ditto.
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+ * string.c (rb_str_intern): ditto.
+
+ * dir.c (char_casecmp): ditto.
+
+ * sprintf.c (rb_str_format): ditto.
+
+ * enc/emacs_mule.c (mbc_to_code): to be 32bit clean.
+
+ * enc/emacs_mule.c (code_to_mbc): ditto.
+
+ * enc/gb18030.c (mbc_to_code): ditto.
+
+ * enc/gb18030.c (code_to_mbc): ditto.
+
+Thu Sep 11 19:09:25 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/iconv/iconv.c: add attention for machine independent.
+
+Thu Sep 11 15:23:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivrem): adjust length for division and remainder.
+ a patch from TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com> in
+ [ruby-dev:36231].
+
+Thu Sep 11 02:59:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_binwrite): extracted from io_fwrite.
+
+Thu Sep 11 02:25:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_encoding): new function.
+ (make_encobj): new function.
+ (econv_s_asciicompat_encoding): use make_encoding.
+ (rb_econv_open_exc): use SUPPLEMENTAL_CONVERSION.
+ (econv_convpath): use encoding object in the result.
+
+Thu Sep 11 02:14:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_convpath): new method.
+
+Wed Sep 10 23:00:43 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * tool/compile_prelude.rb: print "<internal:prelude>" instead of
+ "prelude.rb" on stack trace. [ruby-dev:36129]
+
+Wed Sep 10 21:19:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (big2str_karatsuba): remove unnecessary fixnum code. a
+ patch from TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com> in
+ [ruby-dev:36217].
+
+Wed Sep 10 21:09:32 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_err_in_callback.rb: InternetExplorer should
+ be closed.
+
+ * test/win32ole/err_in_callback.rb: ditto.
+
+Wed Sep 10 18:25:19 2008 akira yamada <akira@rice.p.arika.org>
+
+ * lib/uri/common.rb (URI::Parser): new class.
+
+ * lib/uri/mailto.rb, lib/uri/generic.rb: follow the above change.
+
+ * test/uri/test_parser.rb: added tests for URI::Parser.
+
+Wed Sep 10 10:35:32 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/cookie.rb (CGI::Cookie#to_s): performance improvement
+ from http://jp.rubyist.net/magazine/?0023-Cgirb.
+
+Wed Sep 10 10:12:29 2008 akira yamada <akira@arika.org>
+
+ * lib/sync.rb (Sync_m#sync_exclusive): fixed
+ typo. [ruby-dev:36233] [RubyForge#11680]
+
+Wed Sep 10 01:57:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (StrSet#hash): cache hash value.
+ (ActionMap#hash): ditto.
+
+Wed Sep 10 01:26:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (econv_after_output): renamed from
+ econv_output_followed_by_input.
+ (ECONV_AFTER_OUTPUT): renamed from ECONV_OUTPUT_FOLLOWED_BY_INPUT.
+
+ * transcode.c: follow the renaming.
+
+ * io.c: ditto.
+
+Wed Sep 10 01:16:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (get_replacement_character): don't return ASCII
+ incompatible replacements.
+ (make_replacement): don't convert the result of
+ get_replacement_character.
+
+Wed Sep 10 01:05:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans (rb_universal_newline): swap src_encoding
+ and dst_encoding.
+
+ * transcode.c (rb_econv_decorate_at): call get_transcoder_entry only
+ once.
+ (rb_econv_binmode): follow universal_newline change.
+
+Wed Sep 10 00:01:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): rename field: writeconv_stateless to
+ writeconv_asciicompat.
+
+ * io.c: follow the renaming.
+
+ * gc.c: ditto.
+
+Tue Sep 9 23:55:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fwrite): raise an error if ASCII incompatible string
+ written for text mode IO without encoding conversion.
+ (rb_io_extract_modeenc): binmode requirement changed.
+
+Tue Sep 9 21:59:48 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi*: split cgi.rb into four files. [ruby-dev:36041]
+
+Tue Sep 9 21:17:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_DECORATOR_MASK): merge
+ ECONV_ENCODER_MASK and ECONV_DECORATOR_MASK.
+ (ECONV_UNIVERSAL_NEWLINE_DECORATOR): renamed from
+ ECONV_UNIVERSAL_NEWLINE_DECODER.
+ (ECONV_CRLF_NEWLINE_DECORATOR): renamed from
+ ECONV_CRLF_NEWLINE_ENCODER.
+ (ECONV_CR_NEWLINE_DECORATOR): renamed from ECONV_CR_NEWLINE_ENCODER.
+ (ECONV_XML_TEXT_DECORATOR): renamed from ECONV_XML_TEXT_ENCODER.
+ (ECONV_XML_ATTR_CONTENT_DECORATOR): renamed from
+ ECONV_XML_ATTR_CONTENT_ENCODER.
+ (ECONV_STATEFUL_DECORATOR_MASK): renamed from
+ ECONV_STATEFUL_ENCODER_MASK.
+ (ECONV_XML_ATTR_QUOTE_DECORATOR): renamed from
+ ECONV_XML_ATTR_CONTENT_DECORATOR.
+
+ * io.c: follow the renaming.
+
+ * transcode.c: ditto.
+
+Tue Sep 9 20:55:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open0): make it static.
+ (rb_econv_open): place decorators at last.
+
+Tue Sep 9 20:40:15 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/openssl/test_ssl.rb (OpenSSL#test_client_session):
+ Debian's openssl 0.9.8g-13 failed at assert(ssl.session_reused?),
+ when use default SSLContext. [ruby-dev:36167]
+
+Tue Sep 9 20:34:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_t): last_trans_index removed.
+ (rb_econv_open_by_transcoder_entries): follow the type change.
+ (rb_econv_open0): ditto.
+ (rb_econv_decorate_at): ditto.
+ (rb_econv_binmode): ditto.
+ (rb_econv_insert_output): simplified because there are no decorators
+ at last.
+
+Tue Sep 9 20:21:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): reverse the order of decoders.
+
+Tue Sep 9 20:18:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open0): num_encoders and num_decoders removed.
+
+Tue Sep 9 03:59:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): useless branch removed.
+
+Tue Sep 9 02:18:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_decorate_at_first): declared.
+ (rb_econv_decorate_at_last): declared.
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): initialize
+ replacement_enc. allocate outbuf for the last transcoder.
+ (rb_econv_open0): extracted from rb_econv_open.
+ (rb_econv_open): use rb_econv_open0 and decorate the result using
+ rb_econv_decorate_at_first and rb_econv_decorate_at_last.
+ (rb_econv_decorate_at): new function.
+ (rb_econv_decorate_at_first): ditto.
+ (rb_econv_decorate_at_last): ditto.
+ (rb_econv_binmode): fix iteration end condition.
+ (econv_init): don't set source_encoding_name and
+ destination_encoding_name because they are set in rb_econv_open0.
+
+Tue Sep 9 01:10:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): make ec a local variable.
+
+Tue Sep 9 00:20:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_asciicompat_encoding): check decoder.
+
+Tue Sep 9 00:00:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_t): last_error.partial_input removed.
+
+Mon Sep 8 23:24:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_asciicompat_encoding): renamed
+ from rb_econv_stateless_encoding to apply stateless ASCII
+ incompatible encodings such as UTF-16BE.
+
+ * io.c (make_writeconv): use rb_econv_asciicompat_encoding.
+
+ * transcode_data.h (rb_transcoder_asciicompat_type_t): renamed from
+ rb_transcoder_stateful_type_t.
+ (rb_transcoder): use rb_transcoder_asciicompat_type_t.
+
+ * transcode.c: follow the type change.
+ (asciicompat_encoding_i): renamed from stateless_encoding_i.
+ (rb_econv_asciicompat_encoding): renamed from
+ rb_econv_stateless_encoding.
+ (econv_s_asciicompat_encoding): method renamed.
+
+ * tool/transcode-tblgen.rb: follow the type change.
+
+ * enc/trans/utf_16_32.trans: follow the type change.
+ rb_from_UTF_16BE to UTF-8 is asciicompat_decoder.
+ rb_from_UTF_16LE to UTF-8 is asciicompat_decoder.
+ rb_from_UTF_32BE to UTF-8 is asciicompat_decoder.
+ rb_from_UTF_32LE to UTF-8 is asciicompat_decoder.
+ UTF-8 to rb_to_UTF_16BE is asciicompat_encoder.
+ UTF-8 to rb_to_UTF_16LE is asciicompat_encoder.
+ UTF-8 to rb_to_UTF_32BE is asciicompat_encoder.
+ UTF-8 to rb_to_UTF_32LE is asciicompat_encoder.
+
+ * enc/trans/newline.trans: follow the type change. universal newline
+ decoder is asciicompat_converter.
+
+ * enc/trans/escape.trans: follow the type change.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/japanese.trans: ditto.
+
+Mon Sep 8 23:05:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_insert_output): "readagain" part should be
+ after replacement.
+
+Mon Sep 8 22:30:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (dir_initialize): rename option name of Dir.open
+ from :external_encoding to :encoding.
+
+Mon Sep 8 22:16:20 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi.rb : obsolete regex "n" option. [ruby-dev:36130]
+
+Mon Sep 8 18:13:20 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (getppid): typo. [ruby-dev:36202]
+
+ * process.c (get_ppid): mention the return value on Windows.
+
+Mon Sep 8 18:15:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ArrayCode): less string substitutions.
+
+Mon Sep 8 18:13:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * vm.c (rb_mRubyVMFrozenCore): registered for GC.
+
+ * re.c (rb_reg_preprocess_dregexp): fix GC problem on MacOS X with
+ powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc.
+ build 5367).
+
+Mon Sep 8 18:09:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): define SIZE_MAX for VC++6/7.
+
+Mon Sep 8 17:46:09 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (filetime_to_unixtime): remove unused variable.
+ [ruby-dev:36191]
+
+Mon Sep 8 13:47:39 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_io.rb (TestIO#test_dup): add open in block.
+ see [ruby-dev:35957].
+
+Mon Sep 8 07:09:42 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: some adjustments.
+
+ * rational.c: ditto.
+
+Mon Sep 8 06:50:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XLDFLAGS): added --enable-auto-import for cygwin and
+ mingw.
+
+Mon Sep 8 02:04:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_set_replacement): renamed from
+ rb_econv_set_replacemenet.
+
+ * transcode.c: follow the renaming.
+
+Mon Sep 8 01:10:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (transcode_tblgen): log message refined.
+
+Mon Sep 8 00:58:04 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: removed unused code.
+
+Mon Sep 8 00:04:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/iso2022.trans: upcase to iso-2022-jp.
+
+ * enc/emacs_mule.c: ditto.
+
+Sun Sep 7 23:46:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/iso2022.trans: stateless-iso-2022-jp is defined to avoid
+ undefined conversion error between iso-2022-jp and the corresponding
+ stateless encoding.
+
+ * enc/emacs_mule.c: replicate emacs-mule as stateless-iso-2022-jp.
+
+Sun Sep 7 20:03:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans (hexstr): renamed from str1.
+
+Sun Sep 7 19:45:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans: use transcode_tblgen.
+
+ * tool/transcode-tblgen.rb: generate an empty line after str1.
+
+Sun Sep 7 19:16:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ActionMap#str_name): new method to
+ generate a name base on string content.
+ (ActionMap#gen_str): extracted from generate_info and use str_name.
+
+Sun Sep 7 18:28:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ActionMap#generate_info): use a memo to
+ avoid duplication for STR1.
+
+Sun Sep 7 18:10:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (STR1): defined for a string up to 255 bytes.
+ (STR1_BYTEINDEX): defined.
+ (makeSTR1): defined.
+
+ * tool/transcode-tblgen.rb: generate STR1.
+
+ * transcode.c (transcode_restartable0): interpret STR1.
+
+ * enc/trans/escape.trans (fun_so_escape_xml_chref): removed. STR1 is
+ used instead.
+
+Sun Sep 7 17:54:45 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * configure.in: Mac OS X's crypt(2) is broken with invalid salt.
+ [ruby-dev:35899]
+ * string.c (rb_str_crypt): ditto.
+
+Sun Sep 7 17:29:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: o4 is usable only if the first byte is
+ f0-f7.
+
+Sun Sep 7 12:44:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): choose ASCII compatible encoding as
+ intermediate encoding if stateful encoder exists.
+
+Sun Sep 7 12:09:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_XML_ATTR_CONTENT_ENCODER): defined.
+ (ECONV_STATEFUL_ENCODER_MASK): defined.
+ (ECONV_XML_ATTR_QUOTE_ENCODER): defined.
+ (ECONV_XML_ATTR_ENCODER): removed.
+
+ * enc/trans/escape.trans (rb_escape_xml_attr_content): defined.
+ (rb_escape_xml_attr_quote): defined.
+ (rb_escape_xml_attr): removed.
+
+ * io.c (NEED_WRITECONV): writeconv is required if supplemental
+ converter is used.
+ (make_writeconv): apply stateful encoder in writeconv.
+
+ * transcode.c: follow the constant change.
+
+Sun Sep 7 07:24:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/*.el: merged the following patches from Nathan Weizenbaum
+ <nex342 at gmail.com>. [ruby-core:18424]
+
+ * misc/ruby-mode.el: improve here-doc performance.
+
+ * misc/ruby-mode.el: don't crash the whole mode if the Subversion
+ $ keyword isn't interpolated.
+
+ * misc/ruby-mode.el: don't highlight keywords when they're the
+ beginning of non-keyword symbols.
+
+ * misc/ruby-mode.el, misc/ruby-electric.el: use regexp-opt where
+ possible for more efficient regexps.
+
+ * misc/*.el: untabify, for internal consistency and consistency
+ with standard Emacs elisp files.
+
+ * misc/ruby-mode.el: fix a variable-name error.
+
+ * misc/emacs-mode.el: don't set case-fold-search globally to nil;
+ instead just set it when we need it.
+
+Sun Sep 7 06:31:51 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (file_expand_path): applied a patch from Nobuhiro Tachino
+ in [ruby-dev:35948]. fix #491
+
+Sun Sep 7 03:37:05 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_block_optarg): allow default for block parameters as
+ long as the value is primary. a patch from Eric Mahurin
+ <eric.mahurin at gmail.com> in [ruby-core:16880].
+
+Sun Sep 7 01:07:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): "1.upto 2 {|i| p i }" should be syntax error.
+ [ruby-dev:36008]
+
+ * test/ruby/test_parse.rb (TestParse): update a test not to use
+ recently fixed inconsistent syntax.
+
+Sun Sep 7 00:37:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_ERROR_HANDLER_MASK): defined.
+ (ECONV_DECODER_MASK): defined.
+ (ECONV_ENCODER_MASK): defined.
+
+ * io.c (make_writeconv): restrict ecflags for writeconv with
+ ECONV_ERROR_HANDLER_MASK.
+
+Sat Sep 6 23:03:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_XML_TEXT_ENCODER): renamed from
+ ECONV_HTML_TEXT_ENCODER.
+ (ECONV_XML_ATTR_ENCODER): renamed from ECONV_HTML_ATTR_ENCODER.
+
+ * enc/trans/escape.trans: follow the renaming.
+
+ * transcode.c: ditto.
+
+Sat Sep 6 21:35:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: add some IPV6 constants. [ruby-dev:36175]
+
+Sat Sep 6 20:10:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_description): show ECONV_HTML_TEXT_ENCODER and
+ ECONV_HTML_ATTR_ENCODER.
+
+Sat Sep 6 20:06:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_binmode): check actual transcoders.
+
+Sat Sep 6 19:54:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): fix last_tc.
+
+Sat Sep 6 19:36:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_binmode): clear newline flags in writeconv_pre_ecflags.
+
+Sat Sep 6 18:47:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (str_transcode0): check ECONV_HTML_TEXT_ENCODER and
+ ECONV_HTML_ATTR_ENCODER.
+
+Sat Sep 6 18:38:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (allocate_converted_string): fix overflow condition.
+
+Sat Sep 6 15:06:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (sym_html): new variable.
+ (sym_text): ditto.
+ (sym_attr): ditto.
+ (econv_opts): check :html=>:text and :html=>:attr.
+ (Init_transcode): initialize the above variables.
+
+Sat Sep 6 14:46:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_HTML_TEXT_ENCODER): new constant.
+ (ECONV_HTML_ATTR_ENCODER): ditto.
+
+ * transcode.c (rb_econv_open): check ECONV_HTML_TEXT_ENCODER and
+ ECONV_HTML_ATTR_ENCODER.
+ (Init_transcode): Encoding::Converter::HTML_TEXT_ENCODER and
+ Encoding::Converter::HTML_ATTR_ENCODER defined.
+
+Sat Sep 6 14:15:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (struct trans_open_t): defined to pass num_additional.
+ (trans_open_i): use struct trans_open_t.
+ (rb_econv_open): ditto.
+
+Sat Sep 6 13:43:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans (fun_so_escape_html_attr): fix return type.
+
+Sat Sep 6 12:43:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): needless branch removed.
+
+Sat Sep 6 12:38:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): test condition simplified.
+
+Sat Sep 6 12:25:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (stateless_encoding_i): ignore supplemental conversions.
+ Encoding::Converter.stateless_encoding("html-attr-escaped") should be
+ nil.
+
+Sat Sep 6 12:19:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans (escape_html_attr_init): new function.
+ (fun_so_escape_html_attr): new function.
+ (escape_html_attr_finish): new function.
+ (rb_escape_html_attr): use them to quote the converted result.
+
+Sat Sep 6 07:54:36 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: uses f_real_p macro.
+
+Sat Sep 6 07:27:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): fail for ASCII incompatible with
+ newline conversion.
+
+Sat Sep 6 07:24:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_extract_modeenc): raise an error for ASCII incompatible
+ encoding without binmode.
+
+Sat Sep 6 07:12:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivrem1): optimization by skipping zeros at the
+ tail of digits. a patch from TOYOFUKU Chikanobu
+ <nobu_toyofuku at nifty.com> in [ruby-dev:36169].
+
+Sat Sep 6 06:28:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans: new file.
+
+Sat Sep 6 06:23:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (StrSet.parse): accept upper case
+ hexadecimal digits.
+
+Sat Sep 6 05:37:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (output_hex_charref): upcase hexadecimal digits.
+
+Sat Sep 6 05:22:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_UNDEF_HEX_CHARREF): defined.
+
+ * transcode.c (output_hex_charref): new function.
+ (rb_econv_convert): call output_hex_charref if
+ ECONV_UNDEF_HEX_CHARREF.
+ (Init_transcode): Encoding::Converter::UNDEF_HEX_CHARREF added.
+
+Sat Sep 6 03:52:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_convert): use ECONV_INVALID_MASK and
+ ECONV_UNDEF_MASK.
+
+Sat Sep 6 06:05:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/ruby.h (DBL2NUM): renamed from DOUBLE2NUM.
+ a patch from Tadashi Saito <shiba at mail2.accsnet.ne.jp>
+ in [ruby-dev:36102].
+
+Sat Sep 6 04:44:06 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (Init_Proc): add '===' operator to use procs in when
+ clause of the case statement. inspired by <http://www.aimred.com/news/developers/2008/08/14/unlocking_the_power_of_case_equality_proc/>.
+
+Sat Sep 6 03:18:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (allocate_converted_string): add arguments for a buffer
+ allocated by caller.
+ (rb_econv_insert_output): provide caller allocated buffer to
+ allocate_converted_string.
+
+Sat Sep 6 02:58:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (str_transcode_enc_args): local variables renamed.
+ (str_transcode0): ditto.
+
+Sat Sep 6 02:23:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_s_stateless_encoding): new method.
+
+Sat Sep 6 02:01:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (enc_arg): extracted from str_transcode_enc_args.
+ (str_transcode_enc_args): use enc_arg.
+
+Fri Sep 5 20:27:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_modestr_fmode): renamed from
+ rb_io_mode_flags.
+ (rb_io_modestr_oflags): renamed from rb_io_mode_modenum.
+ (rb_io_oflags_fmode): renamed from rb_io_modenum_flags.
+ (rb_io_mode_flags): defined as a macro.
+ (rb_io_modenum_flags): ditto.
+
+ * io.c: follow the renaming with consistency.
+
+ * process.c (check_exec_redirect): call rb_io_modestr_oflags.
+
+ * ext/pty/depend: pty.o depends on io.h.
+
+Fri Sep 5 20:12:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans (universal_newline_finish): new function.
+
+Fri Sep 5 20:07:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_mode_modenum): moved from
+ include/ruby/intern.h.
+
+Fri Sep 5 19:59:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (MODENUM_MAX): removed.
+
+Fri Sep 5 18:37:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (copy_stream_fallback_body): use read method unless readpartial
+ is available. [ruby-dev:36124]
+
+Fri Sep 5 18:16:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_create): strips glibc style option before
+ charset mapping. retries without options if they seemed causing
+ error, and warns. [ruby-dev:36147]
+
+Fri Sep 5 03:09:48 2008 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_data_to_ary): make it static.
+
+ * thread.c (thgroup_enclose): ditto.
+
+Fri Sep 5 02:56:37 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (thread_recycle_stack_slot, thread_recycle_stack_count):
+ make it static.
+
+Fri Sep 5 02:40:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_critical): removed.
+
+Fri Sep 5 01:22:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (argf_mark): mark p->encs.ecopts.
+
+Fri Sep 5 00:45:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): rename fields:
+ from_encoding -> src_encoding, to_encoding -> dst_encoding.
+
+ * transcode.c: follow the renaming.
+
+Fri Sep 5 00:22:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c: variables renamed for consistency.
+
+Fri Sep 5 00:05:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (encodes): make buff fixed length to avoid SEGV by
+ ruby -e '["a"*10000000].pack("m1000000000")'
+
+Thu Sep 4 23:47:05 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mode): set exception mode
+ correctly. In spite of BigDecimal.mode(BigDecimal::EXCEPTION_ALL,
+ true), BigDecimal.new("NaN") did not raise an exception previously.
+
+Thu Sep 4 23:42:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_file_open_str): declared.
+
+ * io.c (rb_file_open_str): defined.
+
+ * ext/zlib/zlib.c (gzfile_s_open): use rb_file_open_str instead of
+ rb_file_open.
+
+Thu Sep 4 23:18:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans: record newline types met in universal
+ newline decoder.
+
+Thu Sep 4 23:05:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/prime.rb (Prime::OldCompatibility#each): added compatibility to
+ Ruby 1.8.7.
+ (Prime#each): added more rdocs.
+ (Prime#each): remembers the last value of the given block.
+
+Thu Sep 4 21:53:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_init): accept an integer as 3rd argument as well.
+
+Thu Sep 4 21:46:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (sym_partial_input): new variable.
+ (econv_primitive_convert): accept a hash as 5th argument as well.
+
+Thu Sep 4 21:04:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (sym_universal_newline_decoder): new variable.
+ (sym_crlf_newline_encoder): ditto.
+ (sym_cr_newline_encoder): ditto.
+ (econv_opts): check newline converter options.
+ (econv_init): make 3rd argument hash/nil only.
+
+Thu Sep 4 21:03:28 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c: rename some debug functions.
+
+Thu Sep 4 20:57:54 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_check_trap_pending): added for compatibility.
+
+ * ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: remove ruby/signal.h
+ dependency.
+
+Thu Sep 4 20:30:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (PType): defined unconditionally.
+
+ * transcode.c (PType): don't define here.
+
+Thu Sep 4 20:19:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c: variables renamed for consistency.
+
+Thu Sep 4 19:40:50 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_profile_record_get): to static function.
+ (gc_profile_result): ditto.
+ (gc_profile_report): ditto.
+
+Thu Sep 4 19:20:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_enc_t): rename flags to ecflags.
+ (rb_io_t): rename writeconv_pre_flags to writeconv_pre_ecflags.
+ (MakeOpenFile): follow the renaming.
+
+ * io.c: follow the renaming.
+
+Thu Sep 4 19:10:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_INVALID_IGNORE): removed because
+ it tend to cause security problem. If the behaviour is really
+ required, ECONV_INVALID_REPLACE with empty string can be used.
+ For example, CVE-2006-2313, CVE-2008-1036, [ruby-core:15645],
+ http://unicode.org/reports/tr36/
+ (ECONV_UNDEF_IGNORE): ditto.
+
+ * transcode.c (rb_econv_convert): follow the above change.
+ (econv_opts): ditto.
+ (Init_transcode): ditto.
+
+Thu Sep 4 13:22:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct rb_vm_struct): replaced signal staff with trap
+ staff.
+
+ * signal.c (signal_buff): per process resource now.
+
+ * signal.c (trap_list): moved to VM.
+
+ * signal.c (rb_get_next_signal): reverted.
+
+ * signal.c (rb_trap_exit): trap_pending_list was no longer used.
+
+ * thread.c (timer_thread_function): delivers buffered per-process
+ signals to each VMs.
+
+ * vm.c (rb_vm_mark): marks trap_list.
+
+Thu Sep 4 13:01:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (struct sysopen_struct, rb_sysopen_internal, rb_sysopen):
+ constified.
+
+ * io.c: expanded ARGF members macros.
+
+Thu Sep 4 10:43:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb (citrus_decode_mapsrc): support older 1.8.
+
+Thu Sep 4 10:33:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_next_argv, argf_set_encoding): copy struct wise.
+
+Thu Sep 4 09:46:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_scan_open_args): follow rb_str_transcode change.
+
+Thu Sep 4 08:59:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * file.c (rb_find_file): fix GC problem on Debian GNU/Linux (IA64)
+ with gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).
+ There is no register/memory to contain load_path. A register (r35)
+ contains &RARRAY_PTR(load_path), (char*)load_path + 32.
+
+Thu Sep 4 03:10:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): new fields: encs.ecopts and
+ writeconv_pre_ecopts.
+ (MakeOpenFile): initialize them.
+
+ * include/ruby/encoding.h (rb_str_transcode): take ecopts argument.
+ (rb_econv_flags): removed.
+ (rb_econv_prepare_opts): declared.
+ (rb_econv_open_opts): declared.
+
+ * io.c (make_writeconv): use rb_econv_open_opts.
+ (make_readconv): ditto.
+ (io_fwrite): follow rb_str_transcode change.
+ (rb_io_extract_modeenc): use rb_econv_prepare_opts.
+ (rb_file_open_generic): initialize encs.ecopts.
+ (rb_file_open_internal): ditto.
+ (rb_io_reopen): ditto.
+ (argf_ecopts): defined.
+ (argf_next_argv): set encs.ecopts.
+ (io_encoding_set): use rb_econv_prepare_opts.
+ (argf_set_encoding): set argf_ecopts.
+
+ * gc.c (gc_mark_children): mark encs.ecopts and writeconv_pre_ecopts
+ in T_FILE.
+
+ * transcode.c (transcode_loop): take ecopts argument. use
+ rb_econv_open_opts.
+ (rb_econv_flags): removed.
+ (rb_econv_prepare_opts): defined.
+ (rb_econv_open_opts): defined.
+ (str_transcode0): take ecopts.
+ (str_transcode): use rb_econv_prepare_opts.
+ (rb_str_transcode): take ecopts.
+ (econv_init): accept hash argument.
+ (econv_insert_output): follow rb_str_transcode change.
+
+Thu Sep 4 01:30:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_set_replacemenet): declared.
+
+ * transcode.c (rb_econv_t): new fields: replacement_str,
+ replacement_len, replacement_enc and replacement_allocated.
+ (get_replacement_character): make len as size_t.
+ (rb_econv_open_by_transcoder_entries): initialize the new fields.
+ (rb_econv_close): deallocate replacement_str if it allocated.
+ (make_replacement): new function.
+ (output_replacement_character): use make_replacement.
+ (rb_econv_set_replacemenet): defined.
+ (econv_get_replacement): new method.
+ (econv_set_replacement): new method.
+
+Thu Sep 4 01:12:03 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (filetime_to_timeval): new function, split from
+ gettimeofday().
+
+ * win32/win32.c (gettimeofday): use above function.
+
+ * win32/win32.c (filetime_to_unixtime): ditto. [ruby-dev:36135]
+
+Thu Sep 4 01:00:57 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * transcode.c (transcode_restartable0): avoid VC++6's bug.
+
+Thu Sep 4 00:26:27 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (make_writeconv): follow akr's previous commit.
+
+Thu Sep 4 00:09:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_option_t): removed. Since
+ rb_econv_option_t has only one field, int flags, rb_econv_option_t is
+ replaced by int.
+
+ * include/ruby/io.h: follow the above change.
+
+ * io.c: ditto.
+
+ * transcode.c: ditto.
+
+Thu Sep 4 00:04:59 2008 Koichi Sasada <ko1@atdot.net>
+
+ * win32/win32.c: fix ruby/signal.h depending codes.
+
+Thu Sep 4 00:01:45 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb (test_getpwuid, test_getgrgid): use
+ Process.euid and egid instead of Etc.getlogin to identify current
+ user which may be different from a login one (e.g., su command).
+
+Wed Sep 3 23:52:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb: check only typical use of
+ setpwent/getpwent/endpwent and setgrent/getgrent/endgrent.
+
+Wed Sep 3 23:33:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_transcoding): moved from transcode_data.h.
+ (TRANSCODING_READBUF): ditto.
+ (TRANSCODING_WRITEBUF): ditto.
+ (TRANSCODING_STATE_EMBED_MAX): ditto.
+ (TRANSCODING_STATE): ditto.
+
+Wed Sep 3 23:03:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): remove stateful field.
+ add state field.
+ (TRANSCODING_STATE): defined.
+ (rb_transcoder): add fields: state_size, state_init_func,
+ state_fini_func.
+ change rb_transcoding* argument to void*.
+
+ * transcode.c (transcode_restartable0): use TRANSCODING_STATE for
+ first arguments of transcoder functions.
+ (rb_transcoding_open_by_transcoder): initialize state field.
+ (rb_transcoding_close): finalize state field.
+
+ * tool/transcode-tblgen.rb: provide state size/init/fini.
+
+ * enc/trans/newline.trans (universal_newline_init): defined.
+ (fun_so_universal_newline): take void* as a state pointer.
+ (rb_universal_newline): provide state size/init/fini.
+ (rb_crlf_newline): ditto.
+ (rb_cr_newline): ditto.
+
+ * enc/trans/iso2022.trans (iso2022jp_init): defined.
+ (fun_si_iso2022jp_to_eucjp): take void* as a state pointer.
+ (fun_so_iso2022jp_to_eucjp): ditto.
+ (fun_so_eucjp_to_iso2022jp): ditto.
+ (iso2022jp_reset_sequence_size): ditto.
+ (finish_eucjp_to_iso2022jp): ditto.
+ (rb_ISO_2022_JP_to_EUC_JP): provide state size/init/fini.
+ (rb_EUC_JP_to_ISO_2022_JP): ditto.
+
+ * enc/trans/utf_16_32.trans (fun_so_from_utf_16be): take void* as a
+ state pointer.
+ (fun_so_to_utf_16be): ditto.
+ (fun_so_from_utf_16le): ditto.
+ (fun_so_to_utf_16le): ditto.
+ (fun_so_from_utf_32be): ditto.
+ (fun_so_to_utf_32be): ditto.
+ (fun_so_from_utf_32le): ditto.
+ (fun_so_to_utf_32le): ditto.
+ (rb_from_UTF_16BE): provide state size/init/fini.
+ (rb_to_UTF_16BE): ditto.
+ (rb_from_UTF_16LE): ditto.
+ (rb_to_UTF_16LE): ditto.
+ (rb_from_UTF_32BE): ditto.
+ (rb_to_UTF_32BE): ditto.
+ (rb_from_UTF_32LE): ditto.
+ (rb_to_UTF_32LE): ditto.
+
+ * enc/trans/japanese.trans (fun_so_eucjp2sjis): take void* as a state
+ pointer.
+ (fun_so_sjis2eucjp): ditto.
+ (rb_eucjp2sjis): provide state size/init/fini.
+ (rb_sjis2eucjp): provide state size/init/fini.
+
+Wed Sep 3 22:31:11 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/mathn.rb (Integer): moved into prime.rb.
+ (Prime): ditto.
+
+ * lib/prime.rb (Integer): moved from mathn.rb.
+ (Integer.each_prime): added.
+ (Integer#prime?): added.
+ (Prime): moved from mathn.rb.
+ Its implementation was rewritten. see [ruby-dev:35863].
+ And patched by Keiju ISHITSUKA <keiju@ishitsuka.com>,
+ see [ruby-dev:36128].
+ (Prime.new): obsolete.
+ (Prime.instance): added.
+ (Prime.each): added.
+ (Prime.int_from_prime_division): added.
+ (Prime.prime_division): added.
+ (Prime.prime?): added.
+ Patch by TOYOFUKU Chikanobu
+ <nobu_toyofuku at nifty.com> in [ruby-dev:36067].
+ (Prime.cache): removed.
+ (Prime.primes): removed.
+ (Prime.primes_so_far): removed.
+ (Prime#int_from_prime_division): added.
+ (Prime#prime_division): added.
+ (Prime#prime?): added.
+ (Prime#primes): removed.
+ (Prime#primes_so_far): removed.
+ (Prime::PseudoPrmeGenerator): added.
+ (Prime::EratosthenesGenerator): added.
+ (Prime::TrialDivisionGenerator): added.
+ (Prime::Generator23): added.
+ (Prime::TrialDivision): added.
+ Extracted from the previous implementation of Prime
+ by Keiju ISHITSUKA.
+ (Prime::EratosthenesSieve): added.
+
+ * lib/.document (prime.rb): added
+
+ * lib/README (prime.rb): added
+
+ * test/test_prime.rb: added.
+
+Wed Sep 3 21:49:00 2008 David A. Black <dblack@rubypal.com>
+
+ * lib/scanf.rb: fixed bug involving matching literal '['
+
+ * test/scanf/test_scanf.rb: added test for scanf.rb fix
+
+Wed Sep 3 21:31:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (WORDINDEX_SHIFT_BITS): defined.
+ (WORDINDEX2INFO): defined.
+ (INFO2WORDINDEX): defined.
+
+ * tool/transcode-tblgen.rb: use WORDINDEX2INFO.
+
+ * transcode.c: use INFO2WORDINDEX.
+
+Wed Sep 3 21:19:51 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * golf_prelude.rb: suppress warnings when goruby -v.
+
+Wed Sep 3 21:07:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (BL_MIN_BYTE): defined.
+ (BL_MAX_BYTE): defined.
+ (BL_OFFSET): defined.
+ (BL_ACTION): defined.
+ (transcode_restartable0): use BL_MIN_BYTE, BL_MAX_BYTE and
+ BL_ACTION.
+
+Wed Sep 3 20:58:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (BYTE_ADDR): defined.
+ (WORD_ADDR): ditto.
+ (BL_BASE): use BYTE_ADDR and WORD_ADDR.
+ (BL_INFO): use WORD_ADDR.
+
+Wed Sep 3 20:47:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): new field: byte_array_length and
+ word_array_length.
+
+ * tool/transcode-tblgen.rb (transcode_generated_code): generate
+ byte_array_length and word_array_length.
+
+Wed Sep 3 20:34:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ArrayCode): new class.
+ (ActionMap#gen_array_code): moved to ArrayCode.
+ (ActionMap#numelt_array_code): ditto.
+ (ActionMap#array_code_insert_at_last): ditto.
+ (TRANSCODE_GENERATED_BYTES_CODE): use ArrayCode.
+ (TRANSCODE_GENERATED_WORDS_CODE): ditto.
+
+Wed Sep 3 20:08:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/japanese.trans: new file.
+
+Wed Sep 3 20:04:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ActionMap#gen_array_code): extracted from
+ generate_lookup_node.
+ (ActionMap#numelt_array_code): ditto.
+ (ActionMap#array_code_insert_at_last): ditto.
+
+Wed Sep 3 20:01:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (parser_encoding_name): defined.
+ (parser_tokadd_mbchar): show encoding in the message of
+ "invalid multibyte char" error.
+
+Wed Sep 3 19:28:04 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_method_missing): C99.
+
+Wed Sep 3 19:18:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_thread.rb: fix test.
+ [ruby-dev:35960]
+
+Wed Sep 3 17:48:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/make_transdb.rb: check $(srcdir)/enc/trans before
+ enc/trans.
+
+ * enc/trans/make_transdb.rb: keep names_t.
+
+Wed Sep 3 16:54:46 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/signal.h: removed.
+
+ * common.mk, class.c, eval.c, eval_intern.h, file.c, gc.c, hash.c,
+ io.c, process.c, signal.c: vm_core.h: ditto.
+ Some unused external global variables are also removed.
+ (rb_prohibit_interrupt, rb_trap_immediate, rb_trap_pending,
+ rb_thread_critical)
+
+ * ext/openssl/ossl_ssl.c, ext/openssl/ossl_x509store.c,
+ ext/readline/readline.c, ext/socket/depend,
+ ext/socket/socket.c: ditto.
+
+Wed Sep 3 00:23:25 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_method_missing): copy arguments to allocated
+ memory from machine stack. [ruby-dev:36064]
+
+Tue Sep 2 22:20:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (base_element): removed.
+ (BYTE_LOOKUP): removed.
+ (BYTE_LOOKUP_BASE): don't cast.
+ (BYTE_LOOKUP_INFO): ditto.
+ (PType): unsigned int, instead of uintptr_t.
+ (rb_transcoding): change type of next_field, conv_tree_start and
+ word_array.
+
+ * tool/transcode-tblgen.rb: generate word_array as array of unsigned
+ int.
+
+ * transcode.c (transcode_restartable0): follow the above type change.
+
+Tue Sep 2 21:22:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: add prefix for byte_array and word_array.
+
+Tue Sep 2 20:57:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/make_transdb.rb: check foo.c only if foo.trans exists.
+
+Tue Sep 2 19:19:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/make_transdb.rb: error message improved.
+
+Tue Sep 2 14:05:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/trans/utf_16_32.trans (from_UTF_8): rename from to_UTF_16BE
+ because it was not collect.
+
+Tue Sep 2 14:00:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * enc/emacs_mule.c (svn:executable): dropped executable bit.
+
+ * enc/make_encdb.rb (svn:executable): ditto.
+
+Tue Sep 2 12:58:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (COMPILERFLAG): new compiler flag to compile
+ enc/trans/japanese*.c.
+
+Tue Sep 2 12:37:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/japanese_euc.trans: splitted from japanese.trans to avoid
+ compiler limitation. reported by usa.
+
+ * enc/trans/japanese_sjis.trans: ditto.
+
+Tue Sep 2 12:31:24 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (miniruby): new target.
+
+Tue Sep 2 11:47:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (struct load_arg): data is now st_table.
+
+ * marshal.c (mark_load_arg): marks data and compat_tbl.
+
+ * marshal.c (r_object0): no need to check if reentered.
+
+ * marshal.c (marshal_load): make the wrapper with mark_load_arg.
+
+Tue Sep 2 10:49:18 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (gettimeofday): easier calculation. use the definition
+ of the Gregorian calendar.
+
+Tue Sep 2 10:33:12 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (distclean-golf): moved golf_prelude.c here from
+ distclean-local.
+ (GOLFPRELUDE): added.
+ (distclean-local): moved golf_prelude.c into distclean-golf.
+
+Tue Sep 2 10:09:17 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (gettimeofday): calc tv_sec and tv_usec from system
+ time by myself. [ruby-dev:36084]
+
+Tue Sep 2 04:00:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (o3): prevent sign extension on 64bit environment.
+ (o4): ditto.
+
+Tue Sep 2 03:26:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: comment removed in generated code.
+
+Tue Sep 2 03:16:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: define TRANSCODE_TABLE_INFO in generated
+ code. use it in rb_transcoder.
+
+ * enc/trans/newline.trans: use TRANSCODE_TABLE_INFO.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+Tue Sep 2 03:04:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: record infos and BYTE_LOOKUPs as index of
+ word_array to avoid relocation.
+
+ * transcode.c (transcode_restartable0): add word_array to get infos
+ and BYTE_LOOKUPs.
+
+ * transcode_data.h (BYTE_LOOKUP_INFO): change return type to
+ uintptr_t.
+
+Tue Sep 2 02:48:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: don't need to cast offsets array.
+
+Tue Sep 2 02:36:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: record offsets array as index of
+ byte_array to avoid relocation.
+
+ * transcode.c (transcode_restartable0): add byte_array to get offsets
+ array.
+
+ * transcode_data.h (BYTE_LOOKUP_BASE): change return type to
+ uintptr_t.
+ (rb_transcoder): add fields: byte_array, word_array and word_size.
+
+ * enc/trans/newline.trans: follow rb_transcoder change.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+Tue Sep 2 02:05:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: make infos arrays and BYTE_LOOKUPs into
+ single array.
+
+Tue Sep 2 01:47:44 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (clean-golf): added.
+ (distclean-golf): added.
+ (realclean-golf): added.
+ (clean): added clean-golf.
+ (distclean): added distclean-golf.
+ (realclean): added realclean-golf.
+
+Tue Sep 2 01:31:45 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (realclean-local): added newline.c.
+
+Tue Sep 2 01:19:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (BYTE_LOOKUP): change to uintptr_t array.
+ (BYTE_LOOKUP_BASE): follow the type change.
+ (BYTE_LOOKUP_INFO): ditto.
+ (PType): ditto.
+ (rb_transcoding): ditto.
+
+ * tool/transcode-tblgen.rb: follow the type change.
+
+ * transcode.c: ditto.
+
+ * enc/trans/newline.trans: ditto.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+Mon Sep 1 23:32:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (BYTE_LOOKUP_BASE): abstract accessor for
+ BYTE_LOOKUP.
+ (BYTE_LOOKUP_INFO): ditto.
+
+ * transcode.c (transcode_restartable0): use BYTE_LOOKUP_BASE and
+ BYTE_LOOKUP_INFO.
+
+Mon Sep 1 23:14:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: gather infos arrays and BYTE_LOOKUPs.
+
+Mon Sep 1 22:42:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/mkmf.rb (distclean): added RM_RF conftest.dSYM.
+ Fixes distclean-ext problem on Mac OS X.
+ (RM_RF): added.
+
+Mon Sep 1 22:37:06 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/rexml/document.rb: limit entity expansion. Thanks, Luka
+ Treiber, Mitja Kolsek, and Michael Koziarski.
+
+ * lib/rexml/entity.rb: ditto.
+
+ * test/rexml/test_document.rb: ditto.
+
+Mon Sep 1 22:20:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: make offsets arrays into single array.
+
+Mon Sep 1 21:46:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: gather offsets arrays at top.
+
+Mon Sep 1 21:09:04 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ./: removed rubyspec from svn:ignore subversion property.
+ rubyspec directory is no longer used.
+
+ * spec: added mspec and rubyspec to svn:ignore.
+
+Mon Sep 1 19:37:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: ValidEncoding['eucJP-ms'] defined.
+ "\xA2\xAF".encode("utf-8", "eucJP-ms") should raise
+ Encoding::ConversionUndefined, not Encoding::InvalidByteSequence.
+
+Mon Sep 1 18:27:51 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (gettimeofday): shouldn't use mktime(3) because it's
+ buggy about handling summer time.
+ reported by Yoshikawa <yoshixool AT gmail.com> at [ruby-dev:36071]
+
+Mon Sep 1 17:07:23 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/euc_jp.c (euc-jp-ms): euc-jp-ms is not an alias of EUC-JP
+ but eucJP-ms.
+
+ * enc/trans/japanese.trans (eucJP-ms): eucJP-ms is the correct
+ name of the encoding in Ruby. [ruby-dev:36070]
+
+Mon Sep 1 16:48:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/md5/md5init.c (md5), ext/digest/rmd160/rmd160init.c
+ (rmd160) ext/digest/sha1/sha1init.c (sha1),
+ ext/digest/sha2/sha2init.c (sha256, sha384, sha512): constified.
+
+Mon Sep 1 15:15:40 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.trans: fix mapping priority.
+ IBM extended is prior than NEC selected IBM.
+
+Mon Sep 1 14:44:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb (transcode_compile_tree): use the first
+ mapping when some mappings are given for a character.
+ [ruby-dev:36068]
+
+ * tool/transcode-tblgen.rb: expandtab.
+
+Mon Sep 1 14:40:18 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * README.EXT (Appendix A): fixed the name of class
+ Enumerator. Enumerable::Enumerator was renamed just
+ Enumerator at revision 18564.
+
+ * README.EXT (Appendix A): ditto.
+
+Mon Sep 1 14:37:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb: set ERB source filename for error message.
+
+Mon Sep 1 14:37:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend: transdb.c may not present.
+
+Mon Sep 1 14:25:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.trans: fix Ruby 1.8 compatibility.
+
+ * enc/trans/japanese.trans: fix mapping priority. [ruby-dev:36068]
+
+Mon Sep 1 14:24:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_transcode.rb (test_windows_31j): added.
+
+Mon Sep 1 14:00:04 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * README.EXT (Data-types): fixed for current status.
+ (Manipulating Ruby data): mentioned some more functions.
+ (Class/module definition): ditto.
+ (Global variables shared between C and Ruby):
+ fixed prototypes for the getter/setter's of global variables.
+ (Appendix A): mentioned some more files.
+
+ * README.EXT.ja: ditto.
+
+Mon Sep 1 11:31:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (copy_stream, fu_copy_stream0, copy_file): use
+ IO.copy_stream to get rid of extraneous conversion.
+
+Mon Sep 1 02:55:15 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * strftime.c (rb_strftime): calc timezone offset by myself if system
+ doesn't provide timezone info.
+
+Mon Sep 1 02:48:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: change "illegal" to "invalid".
+
+Mon Sep 1 02:31:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (transcode_generated_code): defined for
+ generating table at once.
+ (transcode_tblgen): returns an empty string.
+ (transcode_generate_node): ditto.
+
+ * enc/trans/newline.trans: use transcode_generated_code.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/single_byte.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+ * enc/trans/japanese.trans: ditto.
+
+ * enc/trans/korean.trans: ditto.
+
+Mon Sep 1 02:10:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (citrus_decode_mapsrc): print logging
+ message on STDERR.
+
+Mon Sep 1 01:24:09 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/eucjp-tbl.rb: replace by previous Citrus maps.
+
+ * enc/trans/sjis-tbl.rb: ditto.
+
+Mon Sep 1 01:18:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb: add table generator from Citrus maps.
+
+ * enc/trans/japanese.trans: use Citrus maps.
+
+ * enc/trans/CP: add maps from Citrus.
+
+ * enc/trans/JIS: ditto.
+
+ * test/ruby/test_transcode.rb: Shift_JIS and EUC-JP doesn't support
+ IBM extended characters.
+
+Mon Sep 1 00:19:45 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (docs): removed a useless make target.
+ tool/makedoc.rb was removed at revision 13919.
+
+Sun Aug 31 20:49:42 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (numeric_abs2): new.
+
+Sun Aug 31 18:22:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_devel?): checks if the compiler works.
+
+Sun Aug 31 18:02:41 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Temporarily uses git://github.com/yugui/rubyspec.git
+ until specs for 1.9 is merged into
+ git://github.com/rubyspec/rubyspec.git.
+
+Sun Aug 31 18:06:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode.c): set source_encoding and
+ destination_encoding as encoding object.
+ (ecerr_source_encoding): new method.
+ (ecerr_destination_encoding): ditto.
+
+Sun Aug 31 17:58:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (Logging.log_open): opens in binary mode to get rid of
+ extra CR.
+
+ * lib/mkmf.rb (try_func, try_var, have_struct_member),
+ (scalar_ptr_type?, scalar_type?): use MAIN_DOES_NOTHING.
+
+ * lib/mkmf.rb (MAIN_DOES_NOTHING): defaults to ordinary main.
+
+ * win32/Makefile.sub (config): for MAIN_DOES_NOTHING for wince.
+
+Sun Aug 31 17:30:35 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/README (How to run): added.
+
+Sun Aug 31 17:28:25 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec (config): added.
+
+ * spec/default.mspec (target): replaced the built ruby
+ to runruby.rb.
+ Improved $LOAD_PATH on running specs.
+
+ * spec/default.mspec (flags): ditto.
+
+Sun Aug 31 17:16:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): rename instance variable names
+ for storing encoding names.
+ (ecerr_source_encoding_name): method renamed.
+ (ecerr_destination_encoding_name): ditto.
+
+Sun Aug 31 16:57:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_putback): associate encoding to the result.
+
+Sun Aug 31 16:43:56 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/intern.h: rename RB_UBF_DFL to
+ RUBY_UBF_IO and RUBY_UBF_PROCESS.
+ Because there is no default (universal) unblocking function.
+
+ * ext/socket/socket.c, file.c, io.c, process.c, thread.c: ditto.
+
+Sun Aug 31 16:42:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_insert_output): raise ArgumentError on failure.
+
+Sun Aug 31 16:39:17 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_thread.rb: add a test.
+
+Sun Aug 31 16:34:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/single_byte.trans (us_ascii_map): don't define 8bit bytes.
+
+Sun Aug 31 14:27:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_last_error): new method.
+
+Sun Aug 31 14:17:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): make two arguments,
+ destination_byteoffset and destination_bytesize, optional.
+
+Sun Aug 31 14:12:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): error message simplified.
+
+Sun Aug 31 13:47:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/coverage/coverage.c (rb_mCoverage): removed unneeded static variable.
+
+ * ext/socket/socket.c (unix_recv_io): ditto.
+
+ * ext/socket/socket.c (mConst): ditto.
+
+Sun Aug 31 13:45:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspres_initialize): fix for
+ initialization of r18168.
+
+Sun Aug 31 13:42:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/eventids2.c (ripper_init_eventids2): use rb_intern_const.
+
+ * ext/ripper/tools/generate.rb (generate_eventids1): ditto.
+
+ * ext/ripper/tools/generate.rb (generate_eventids2_table): ditto.
+
+Sun Aug 31 12:56:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/mkcallback.rb (rb_dl_init_callbacks): fix indent.
+
+Sun Aug 31 11:39:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/strscan/strscan.c (strscan_do_scan): fix usecnt decrement.
+
+Sun Aug 31 04:38:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_putback): make max argument optional.
+
+Sun Aug 31 04:35:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_putback): putback from last byte.
+
+Sun Aug 31 04:27:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_putback): renamed from econv_primitive_putback.
+
+Sun Aug 31 04:22:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_insert_output): renamed from
+ econv_primitive_insert_output.
+
+Sun Aug 31 04:20:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_econv.rb: follow econv_primitive_errinfo change.
+
+Sun Aug 31 03:44:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_errinfo): 5th element (partial_input)
+ removed from result.
+
+Sun Aug 31 01:53:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/mkcallback.rb: split callback.h to callback-[0-9].c to reduce
+ memory consumption on compilation. [ruby-dev:31898]
+
+ * ext/dl/depend: add dependency for callback-[0-9].[co].
+
+Sun Aug 31 01:27:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/mkcallback.rb (foreach_proc_entry): extracted.
+ (gencallback): ditto.
+ (gen_push_proc_ary): ditto.
+ (gen_push_addr_ary): ditto.
+
+Sat Aug 30 23:51:01 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_tuplebag.rb (test_has_expires_eh): fix failures
+ [ruby-dev:35937].
+
+Sat Aug 30 23:38:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/test/test_import.rb: fix character code.
+
+ * ext/dl/test/test_func.rb: ditto.
+
+Sat Aug 30 22:23:31 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: added a static variable for nurat_to_f.
+
+Sat Aug 30 20:05:41 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_open, rb_w32_read, rb_w32_write): fallback to
+ MSVCRT if text mode is specified. this case will not be used from
+ ruby itself.
+
+Sat Aug 30 19:49:38 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): EOF is not error.
+ ref [ruby-dev:36050]
+
+Sat Aug 30 18:17:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (struct token_info): constified.
+
+ * parse.y (token_info_get_column, token_info_has_nonspaces),
+ (token_info_push, token_info_pop): constified.
+
+Sat Aug 30 15:43:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/openssl/ossl_config.c (Init_ossl_config): memory leak fixed.
+ a patch <shinichiro.hamaji at gmail.com> in [ruby-dev:35880].
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_set_value): ditto.
+
+ * ext/strscan/strscan.c (strscan_do_scan): ditto.
+
+Sat Aug 30 14:58:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_initialize): fix for
+ initialization of r18168.
+
+Sat Aug 30 14:47:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/mkcallback.rb: fix continuation line detection.
+
+Sat Aug 30 14:39:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/mkcallback.rb (rb_dl_init_callbacks): avoid GC problem which
+ is caused by 'GC.stress=true; require "dl"'.
+
+Sat Aug 30 11:54:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (token_info_push): -w warns indentation level mismatch.
+ based on a patch from Yukina Yamano presented at RubyKaigi'07.
+ See <http://jp.rubyist.net/RubyKaigi2007/Log0609-LT06.html> and
+ <http://www.logic-junction.com/products/rubyend.html> (Japanese).
+
+Sat Aug 30 10:46:44 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ext/iconv/iconv.c: remove include pragma for "ruby/intern.h".
+
+Sat Aug 30 10:43:03 2008 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: remove include pragma for "ruby/intern.h".
+
+Sat Aug 30 10:41:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (Rake::Application#help): fix for OPTIONAL_ARGUMENT and
+ multiple short options. [ruby-dev:36051]
+
+Sat Aug 30 08:59:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_file_s_absolute_path),
+ (rb_file_absolute_path): prototyped.
+
+Sat Aug 30 08:09:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_compatible_p): use TYPE not BUILTIN_TYPE.
+ [ruby-dev:36048]
+
+Sat Aug 30 07:48:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_compatible_p): add SPECIAL_CONST_P check.
+ [ruby-dev:36048]
+
+ * test/ruby/test_m17n.rb (test_compatible): fix test.
+
+Sat Aug 30 02:48:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_freeze): update rdoc to mention RuntimeError
+ (not TypeError any longer) would be raised. [ruby-dev:35982]
+
+Sat Aug 30 01:55:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivmod): remove redundant code. a patch from
+ TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com> in [ruby-dev:36044].
+
+Sat Aug 30 01:37:20 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#initialize): remove unused constants. a patch
+ from Takeyuki Fujioka in [ruby-dev:36046].
+
+Fri Aug 29 22:29:41 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c ({nucomp,numeric}_rect): new.
+
+ * complex.c: added some aliases
+ (::rectangular, ::rect, #rectangular, #rect, #phase,
+ #magnitude).
+
+ * complex.c (string_to_c_internal): should not strip any null
+ bytes.
+
+ * rational.c (string_to_r_internal): ditto.
+
+ * rational.c (i_gcd): reverted to nurat 0.0.2's one.
+
+ * numeric.c: added an alias (#magnitude).
+
+ * bignum.c: ditto.
+
+ * test/ruby/test_complex.rb: added assertions.
+
+ * test/ruby/test_rational.rb: ditto.
+
+Fri Aug 29 19:46:02 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, include/ruby/ruby.h: rename T_DEFERRED to T_ZOMBIE.
+
+Fri Aug 29 18:22:27 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_compatible_p): raise TypeError when argument is not
+ String nor Regexp.
+
+Fri Aug 29 18:20:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_index_m): only regexp uses byte offset.
+
+ * string.c (rb_str_rindex_m): ditto.
+
+Fri Aug 29 16:48:34 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): copy arguments to allocated
+ memory from machine stack. [ruby-dev:36028]
+
+ * KNOWNBUGS.rb, bootstraptest/test_method.rb: move fixed test.
+
+Fri Aug 29 12:19:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_x509attr.c (ossl_x509attr_initialize): fix for
+ initialization of r18168.
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspreq_initialize): ditto.
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): ditto.
+
+Fri Aug 29 11:04:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): ASCII compatible string and US-ASCII
+ regexp is compatible. [ruby-dev:36033]
+
+ * string.c (rb_str_index_m): second argument is position of character.
+ by usa. [ruby-dev:36033]
+
+ * string.c (rb_str_rindex_m): ditto.
+
+Fri Aug 29 04:47:49 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read, rb_w32_write): more accurate handling
+ of wait result.
+
+Fri Aug 29 02:59:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_finish): new method.
+
+Fri Aug 29 02:45:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_convert): new method.
+
+Fri Aug 29 02:38:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): accept nil as
+ destination_bytesize for unlimited destination size.
+
+Fri Aug 29 02:11:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): accept nil as input for empty
+ input.
+
+Fri Aug 29 02:03:56 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): supported %s and %P.
+
+ * time.c (time_strftime): ditto.
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Fri Aug 29 01:57:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (sym_invalid_byte_sequence): new variable.
+ (sym_undefined_conversion): ditto.
+ (sym_destination_buffer_full): ditto.
+ (sym_source_buffer_empty): ditto.
+ (sym_finished): ditto.
+ (sym_output_followed_by_input): ditto.
+ (sym_incomplete_input): ditto.
+ (econv_result_to_symbol): use above variables.
+ (Init_transcode): initialize above variables.
+
+Fri Aug 29 00:53:40 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): fixed a bug of padding.
+
+ * test/ruby/test_time.rb: ditto.
+
+Fri Aug 29 00:19:54 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (set_pioinfo_extra): use MSVCRT's open() and close().
+
+Fri Aug 29 00:03:13 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * file.c (file_expand_path): check invalid access.
+
+Thu Aug 28 23:55:50 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): Time.mktime(2000).strftime("%-S") should
+ return "0", not "".
+
+ * test/ruby/test_time.rb: ditto.
+
+Thu Aug 28 23:55:22 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_time.rb: suppress warning during test.
+
+Thu Aug 28 23:50:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_time.rb (test_strftime): make test for %a independent
+ from local timezone. [ruby-dev:35992]
+
+Thu Aug 28 23:39:49 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_str_shared_replace): remove corrupt noembed string
+ which causes SEGV. [ruby-dev:35989]
+
+Thu Aug 28 23:36:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: dependency updated.
+
+Thu Aug 28 23:28:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * KNOWNBUGS.rb: add a test. see [ruby-dev:36028]
+
+Thu Aug 28 21:43:05 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_open): overlapped file
+ I/O support.
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_pipe): overlapped pipe
+ I/O support.
+
+ * win32/win32.c (rb_w32_read, rb_w32_write): overlapped I/O support to
+ enable canceling I/O.
+
+ * thread_win32.c (ubf_handle): remove workaround.
+
+Thu Aug 28 20:22:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_yield_setup_args): object with to_ary should
+ behave like array. a patch from Yusuke Endoh <mame at tsg.ne.jp>
+ in [ruby-dev:35988]. [ruby-dev:35977]
+
+ * object.c (convert_type): call less rb_intern() less frequently
+ by using cache structure.
+
+ * vm_method.c (rb_method_node): fail earlier if no method found.
+
+Thu Aug 28 19:04:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bootstraptest/test_io.rb: no need to create real file.
+
+Thu Aug 28 09:26:53 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_multipart.rb: add test for multipart.
+ Patch by Takeyuki Fujioka. [ruby-dev:36014]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Thu Aug 28 09:22:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_modruby.rb: add test for mod_ruby adaptor.
+ Patch by Takeyuki Fujioka. [ruby-dev:36013]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Thu Aug 28 09:17:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_header.rb: add test for CGI::Header.
+ Patch by Takeyuki Fujioka. [ruby-dev:36010] [ruby-dev:36011]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Thu Aug 28 02:16:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): refcnt field removed.
+ (MakeOpenFile): refcnt initialization removed.
+
+ * io.c (rb_io_fptr_finalize): don't check refcnt.
+ (rb_io_close_read): don't use refcnt.
+
+Thu Aug 28 00:07:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_initialize): don't accept IO object. [ruby-dev:35895]
+
+Wed Aug 27 23:28:51 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke): WIN32OLE#[] and WIN32OLE#[]=
+ accepts number argument.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Wed Aug 27 14:45:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_core.rb: add core test.
+ Patch by Takeyuki Fujioka. [ruby-dev:36001] [ruby-dev:36002]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Wed Aug 27 10:34:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie): remove delegate.
+ Patch by Takeyuki Fujioka. [ruby-dev:35995]
+
+ * test/cgi/test_cgi_cookie.rb: added for above.
+ Patch by Takeyuki Fujioka. [ruby-dev:35996]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Wed Aug 27 01:13:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_loop): simplified.
+
+Wed Aug 27 01:03:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_result_t): enumeration constant:
+ econv_incomplete_input.
+
+ * io.c (finish_writeconv): check econv_incomplete_input.
+
+ * transcode.c (transcode_restartable0): return econv_incomplete_input
+ for unexpected end of source buffer.
+ (trans_sweep): check econv_incomplete_input.
+ (rb_trans_conv): ditto.
+ (rb_econv_convert0): ditto.
+ (rb_econv_convert): ditto.
+ (transcode_loop): ditto.
+ (make_econv_exception): change message for econv_incomplete_input.
+ (econv_result_to_symbol): return :incomplete_input for
+ econv_incomplete_input.
+ (ecerr_incomplete_input): new method.
+
+Wed Aug 27 00:05:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): rename crbuf to cbuf.
+
+ * io.c: follow the renaming.
+
+Tue Aug 26 23:52:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_elem_t): move to transcode.c
+ (rb_econv_t): defined as an incomplete type.
+
+ * transcode.c (rb_econv_elem_t): moved from encoding.h.
+ (rb_econv_t): complete type defined.
+
+Tue Aug 26 22:44:12 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (time_asctime): workaround for MSVCRT's bug.
+ based on a patch from wanabe <s.wanabe AT gmail.com> at
+ [ruby-dev:35831] and a suggestion by KIMURA Koichi
+ <kbk AT kt.rim.or.jp> at [ruby-dev:35832]
+ fixed [ruby-dev:35555]
+
+Tue Aug 26 21:53:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): disable newline conversion for ASCII
+ incompatible encodings.
+ (str_transcode0): don't need disable newline conversion here.
+
+Tue Aug 26 21:44:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_binmode): binmode is effective only once.
+
+Tue Aug 26 19:43:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): new class method for class File.
+
+ * file.c (file_expand_path): add absolute_path handling (no ~user
+ expansion). [ruby-core:18319]
+
+Tue Aug 26 19:27:54 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/ruby/test_enum.rb (TestEnumerable#test_each_with_object):
+ Add a test for Enumerable#each_with_object.
+
+Tue Aug 26 19:25:44 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/ruby/test_enumerator.rb (TestEnumerator#test_with_object):
+ Add (back) the test for Enumerator#with_object.
+
+Tue Aug 26 16:16:43 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_tag_helper.rb: add more tests for html3.
+ Patch by Takeyuki Fujioka. [ruby-dev:35975]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Tue Aug 26 14:43:10 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c: Activate Enumerator#with_object and add
+ Enumerable#each_with_object. [experimental]
+
+Tue Aug 26 14:38:32 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_initialize),
+ test/ruby/test_enumerator.rb: Add an ability to generate an
+ enumerator from a block. [experimental] [ruby-dev:35903]
+
+Tue Aug 26 13:25:25 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: added test_euc_jp
+ (contributed by Yoshihiro Kambayashi)
+
+Tue Aug 26 11:54:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_tag_helper.rb: added by Takeyuki Fujioka.
+ [ruby-dev:35971]
+
+Tue Aug 26 11:33:30 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi.rb (nOE_element_def): fix error when cascade methods which
+ don't have arguments. Patch by Takeyuki Fujioka. [ruby-dev:35964]
+
+ * lib/cgi.rb (blockquote): String#collect (this depends on
+ String#each) is no longer exists.
+ Patch by Takeyuki Fujioka. [ruby-dev:35946]
+
+ * lib/cgi.rb (blockquote): ditto.
+
+Tue Aug 26 03:06:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): copy invalid/undef flags.
+
+Tue Aug 26 02:47:08 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (dist): tool/make-snapshot is executable.
+
+ * tool/make-snapshot (package): supported release numbers 1.9.0-x.
+
+Tue Aug 26 02:43:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): new field: writeconv_pre_opts.
+
+ * io.c (make_writeconv): initialize writeconv_pre_opts.
+ (io_fwrite): use writeconv_pre_opts.
+
+Tue Aug 26 01:48:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c: test _WIN32 for CRLF platform. (cygwin defines O_BINARY.)
+
+Tue Aug 26 01:29:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c: force CRLF handling if RUBY_TEST_CRLF_ENVIRONMENT is defined.
+ This is only for testing.
+
+Tue Aug 26 01:26:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (str_transcode0): disable newline conversion for ASCII
+ incompatible encoding.
+
+Tue Aug 26 00:55:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (str_transcode0): don't short cut for newline conversion.
+
+Tue Aug 26 00:36:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fwrite): add TEXTMODE_NEWLINE_ENCODER to option for
+ rb_str_transcode.
+
+Tue Aug 26 00:24:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): show readagain part for invalid
+ byte sequence exception. store the part as an instance variable.
+ (ecerr_readagain_bytes): new method to access the readagain part.
+
+Tue Aug 26 00:02:49 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpMult): fix double free.
+
+Mon Aug 25 23:59:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): make last_tc NULL if there are only
+ additional transcoders.
+ (econv_description): extracted from rb_econv_open_exc.
+ (rb_econv_open_exc): use econv_description.
+ (econv_inspect): use econv_description.
+
+Mon Aug 25 23:56:42 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32.c (init_stdhandle): set binmode.
+
+Mon Aug 25 23:38:17 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb(strftime): %[LN] can print with given
+ arbitrary precision.
+
+ * lib/date/format.rb(strftime): optional flags and filed width
+ should also affect %[nt].
+
+Mon Aug 25 23:01:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): default defined? should return
+ "expression" without evaluating the expression. [ruby-dev:35967]
+
+Mon Aug 25 22:46:01 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_thread.rb (test_status_and_stop_p): reduce the risk
+ of race condition.
+
+Mon Aug 25 22:39:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/extend-command.rb (def_extend_command): check number of
+ arguments. [ruby-dev:35074]
+
+ * lib/irb/ext/multi-irb.rb (search): check if a corresponding job is
+ found. [ruby-dev:35074]
+
+Mon Aug 25 22:29:13 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_io.rb (test_dup): fix typo. see [ruby-dev:35958]
+
+Mon Aug 25 22:02:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): initialize
+ last_error. num_trans may be zero.
+ (rb_econv_convert0): num_trans may be zero.
+ (rb_econv_putbackable): ditto.
+ (rb_econv_putback): ditto.
+ (rb_econv_convert): input_ptr and output_ptr may be NULL.
+
+Mon Aug 25 19:05:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): should handle NODE_{AND,OR} as
+ "expression". [ruby-dev:35951]
+
+Mon Aug 25 17:36:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_io_ungetbyte): added prototype.
+
+ * io.c (rb_io_gets): use rb_io_getline_1 for unget buffer.
+
+ * ruby.c (load_file): use rb_io_ungetbyte.
+
+ * transcode.c (rb_econv_substr_append): fix for buffer overrun.
+
+ * win32/enc-setup.mak (BUILTIN_TRANSOBJS): added.
+
+Mon Aug 25 14:22:21 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * parse.y (YYSTYPE): struct RVarmap has been no longer
+ defined.
+ see also r11717 by matz.
+
+Mon Aug 25 10:42:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_econv_open_exc): constified.
+
+Mon Aug 25 07:10:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/emacs_mule.c: fix ctype.
+
+Mon Aug 25 00:52:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (BUILTIN_TRANSSRCS): defined.
+ (BUILTIN_TRANSOBJS): defined.
+
+ * enc/Makefile.in (BUILTIN_TRANSES): defined.
+
+ * enc/make_encmake.rb (BUILTIN_TRANSES): defined.
+
+ * enc/depend: don't generate rules for builtin transcoders.
+
+ * common.mk (COMMONOBJS): add BUILTIN_TRANSOBJS.
+ (enc.mk): pass BUILTIN_TRANSOBJS.
+ (newline.c): new rule.
+ (newline.$(OBJEXT)): new rule.
+ (srcs): newline.c added.
+
+ * Makefile.in (BUILTIN_TRANSSRCS): defined.
+ (BUILTIN_TRANSOBJS): defined.
+
+ * transcode.c (Init_transcode): call Init_newline.
+
+Mon Aug 25 00:11:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (declare_transcoder): arguments order changed.
+ (rb_declare_transcoder): call declare_transcoder just once.
+
+Sun Aug 24 19:48:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_t): use rb_econv_option_t.
+
+ * transcode.c: follow the rb_econv_t change.
+
+Sun Aug 24 19:40:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_init_copy): copy encs.
+
+Sun Aug 24 19:17:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_open): add an argument: vperm.
+ (open_key_args): call rb_io_open with perm.
+
+Sun Aug 24 19:11:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (sym_invalid): removed.
+ (sym_undef): removed.
+ (sym_ignore): removed.
+ (sym_replace): removed.
+
+Sun Aug 24 19:07:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_reopen): initialize fptr->encs.opts.
+
+Sun Aug 24 18:37:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_s_pipe): accept optional hash.
+ (rb_io_set_encoding): ditto.
+ (rb_io_extract_modeenc): use rb_econv_opts to initialize
+ ecopts.
+ (rb_file_open_generic): ditto.
+ (rb_file_open_internal): ditto.
+ (io_encoding_set): new argument: opt.
+ (argf_set_encoding): copy fptr->encs.opts to argf_ecopts.
+
+ * transcode.c (rb_econv_opts): accept Qnil for initialization.
+
+Sun Aug 24 18:10:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_enc_t): add opts field.
+ (FMODE_INVALID_MASK): removed.
+ (FMODE_INVALID_IGNORE): ditto.
+ (FMODE_INVALID_REPLACE): ditto.
+ (FMODE_UNDEF_MASK): ditto.
+ (FMODE_UNDEF_IGNORE): ditto.
+ (FMODE_UNDEF_REPLACE): ditto.
+ (MakeOpenFile): initialize the opts field.
+
+ * io.c (make_writeconv): use the opts field.
+ (io_fwrite): ditto.
+ (make_readconv): ditto.
+ (argf_ecopts): new macro.
+ (rb_io_extract_modeenc): fill the opts field.
+ (argf_next_argv): ditto.
+ (rb_file_open_generic): initialize the opts field.
+ (rb_file_open_internal): ditto.
+ (io_encoding_set): ditto.
+ (argf_set_encoding): ditto.
+
+Sun Aug 24 18:02:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (struct argf): use struct rb_io_enc_t.
+ (argf_enc): follow the struct argf change.
+ (argf_enc2): ditto.
+
+Sun Aug 24 17:36:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_str_transcode): make 3rd argument
+ rb_econv_option_t*.
+
+ * transcode.c (transcode_loop): take rb_econv_option_t* as a argument.
+ (str_transcode0): ditto.
+ (str_transcode): make rb_econv_option_t and call str_transcode0 with
+ it.
+ (rb_str_transcode): take rb_econv_option_t*.
+
+ * io.c (io_fwrite): follow the rb_str_transcode change.
+
+Sun Aug 24 16:47:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): make enc and enc2 as struct
+ rb_io_enc_t;
+
+ * io.c: follow the structure change.
+ (convconfig_t): defined by rb_io_enc_t.
+
+Sun Aug 24 16:19:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_opts): declared.
+
+ * transcode.c (rb_econv_opts): defined.
+
+ * io.c (rb_io_extract_modeenc): use rb_econv_opts.
+
+Sun Aug 24 16:06:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_option_t): defined.
+ (rb_econv_open): 3rd arg changed.
+ (rb_econv_open_exc): ditto.
+
+ * io.c (make_writeconv): use rb_econv_option_t.
+ (make_readconv): ditto.
+ (rb_econv_open): take rb_econv_option_t for options.
+ (rb_econv_open_exc): ditto.
+ (transcode_loop): use rb_econv_option_t.
+ (econv_init): use rb_econv_option_t.
+
+Sun Aug 24 15:43:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_substr_append): associate dst with destination
+ encoding when dst is created.
+
+Sun Aug 24 15:21:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_str_transcode): add ecflags argument.
+
+ * transcode.c (econv_opts): extracted from str_transcode.
+ (str_transcode_enc_args): extracted from str_transcode.
+ (str_transcode0): extracted from str_transcode.
+ (str_transcode): use econv_opts, str_transcode_enc_args,
+ str_transcode0.
+ (rb_str_transcode): call str_transcode0.
+ (econv_primitive_insert_output): give the additional argument for
+ rb_str_transcode.
+
+ * io.c (make_writeconv): use invalid/undef flags.
+ (io_fwrite): ditto.
+ (rb_scan_open_args): give the additional argument for
+ rb_str_transcode.
+
+Sun Aug 24 13:27:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (str_transcode): check last hash only if 0 < argc.
+
+Sun Aug 24 12:22:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_substr_append): renamed from
+ rb_econv_string.
+ (rb_econv_str_convert): declared.
+ (rb_econv_substr_convert): declared.
+ (rb_econv_str_append): declared.
+
+ * io.c (io_fwrite): use rb_econv_str_convert instead of
+ rb_econv_string.
+
+ * transcode.c (rb_econv_substr_append): renamed from rb_econv_string.
+ (rb_econv_str_append): new function.
+ (rb_econv_substr_convert): ditto.
+ (rb_econv_str_convert): ditto.
+
+Sun Aug 24 12:15:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#urlencode): str[0] returns char in 1.9.
+ Patch by Junegunn Choi [ruby-core:18368]
+
+Sun Aug 24 12:02:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): return NULL on error.
+
+Sun Aug 24 11:40:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_open_exc): declared.
+
+ * transcode.c (rb_eNoConverter): new exception.
+ (rb_econv_open_exc): new function.
+ (transcode_loop): use rb_econv_open_exc.
+
+ * io.c (make_writeconv): use rb_econv_open_exc.
+ (make_readconv): ditto.
+
+Sun Aug 24 11:26:54 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::unescapeHTML): consider ISO-8859-1.
+ [ruby-dev:35936]
+
+Sun Aug 24 10:55:00 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/emacs_mule.c: support Emacs/Mule internal encoding.
+
+Sun Aug 24 08:03:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (daylight, timezone): not provided as dllexport on cygwin,
+ right now.
+
+Sun Aug 24 06:39:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::unescapeHTML): more encoding sensible unescaping.
+ [ruby-dev:35936]
+
+Sun Aug 24 04:23:19 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_compatible_p): raise TypeError when argument is Encoding.
+
+Sat Aug 23 23:25:47 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#out): remove auto encoding conversion and set
+ LANGUAGE. [ruby-dev:35922]
+
+Sat Aug 23 20:01:29 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_process.rb (TestProcess#test_rlimit_value):
+ add Errno::EINVAL. [ruby-dev:35900]
+
+Sat Aug 23 18:29:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_scan_open_args): use pop_last_hash.
+
+Sat Aug 23 16:59:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_INVALID_MASK): defined.
+ (FMODE_INVALID_IGNORE): defined.
+ (FMODE_INVALID_REPLACE): defined.
+ (FMODE_UNDEF_MASK): defined.
+ (FMODE_UNDEF_IGNORE): defined.
+ (FMODE_UNDEF_REPLACE): defined.
+
+ * io.c (sym_invalid): defined.
+ (sym_undef): defined.
+ (sym_ignore): defined.
+ (sym_replace): defined.
+ (make_readconv): specify ECONV_INVALID_* and ECONV_UNDEF_* if
+ FMODE_INVALID_* and FMODE_UNDEF_* is set.
+ (rb_io_extract_modeenc): check {:invalid, :undef} => {:replace,
+ :ignore} for FMODE_INVALID_* and FMODE_UNDEF_*.
+
+Sat Aug 23 17:06:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime): support more flags.
+
+Sat Aug 23 15:14:10 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_opts.h: enable "OPT_TRACE_INSTRUCTION" on default.
+
+Sat Aug 23 14:59:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_INVALID_MASK): defined.
+ (ECONV_INVALID_IGNORE): defined.
+ (ECONV_INVALID_REPLACE): defined.
+ (ECONV_UNDEF_MASK): defined.
+ (ECONV_UNDEF_IGNORE): defined.
+ (ECONV_UNDEF_REPLACE): defined.
+
+ * transcode.c (INVALID_IGNORE): removed.
+ (INVALID_REPLACE): removed.
+ (UNDEF_IGNORE): removed.
+ (UNDEF_REPLACE): removed.
+ (rb_econv_convert0): renamed from rb_econv_convert.
+ (rb_econv_convert): defined to call rb_econv_convert0 with
+ replace/ignore behavior moved from transcode_loop.
+ (transcode_loop): replace/ignore behavior removed.
+
+Sat Aug 23 11:23:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_extract_modeenc): check :textmode and :binmode in option
+ hash.
+
+Sat Aug 23 10:48:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (pty_getpty): follow rb_io_t's path -> pathv change.
+
+Sat Aug 23 10:42:52 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (check_pipe_command): extracted from rb_f_open and rb_io_open.
+ (rb_f_open): use check_pipe_command.
+ (rb_io_open): ditto.
+
+Sat Aug 23 10:13:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (read_all): fptr->enc2 is 0 if no conversion.
+ (rb_io_getline_fast): ditto.
+ (io_getc): ditto.
+
+Sat Aug 23 09:45:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): remove path field and add pathv field.
+ (MakeOpenFile): initialize pathv as Qnil.
+
+ * gc.c: mark pathv field in T_FILE.
+
+ * io.c: follow the rb_io_t field change.
+
+ * file.c: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+Sat Aug 23 01:42:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_TEXTMODE): defined.
+
+ * include/ruby/encoding.h (rb_econv_t): new field: flags.
+ (rb_econv_binmode): declared.
+
+ * io.c (io_unread): text mode hack removed.
+ (NEED_NEWLINE_DECODER): defined.
+ (NEED_NEWLINE_ENCODER): defined.
+ (NEED_READCONV): defined.
+ (NEED_WRITECONV): defined.
+ (TEXTMODE_NEWLINE_ENCODER): defined for windows.
+ (make_writeconv): setup converter with TEXTMODE_NEWLINE_ENCODER for
+ text mode.
+ (io_fwrite): use NEED_WRITECONV. character code conversion is
+ disabled if fptr->writeconv_stateless is nil.
+ (make_readconv): setup converter with
+ ECONV_UNIVERSAL_NEWLINE_DECODER for text mode.
+ (read_all): use NEED_READCONV.
+ (appendline): use NEED_READCONV.
+ (rb_io_getline_1): use NEED_READCONV.
+ (io_getc): use NEED_READCONV.
+ (rb_io_ungetc): use NEED_READCONV.
+ (rb_io_binmode): OS-level text mode test removed. call
+ rb_econv_binmode.
+ (rb_io_binmode_m): call rb_io_binmode_m with write_io as well.
+ (rb_io_flags_mode): return mode string including "t".
+ (rb_io_mode_flags): detect "t" for text mode.
+ (rb_sysopen): always specify O_BINARY.
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): initialize flags.
+ (rb_econv_open): if source and destination encoding is
+ both empty string, open newline converter. last_tc will be NULL in
+ this case.
+ (rb_econv_encoding_to_insert_output): last_tc may be NULL now.
+ (rb_econv_string): ditto.
+ (output_replacement_character): ditto.
+ (transcode_loop): ditto.
+ (econv_init): ditto.
+ (econv_inspect): ditto.
+ (rb_econv_binmode): new function.
+
+Fri Aug 22 21:18:40 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_div): now behaves as quo.
+
+ * complex.c (nucomp_s_generic_p): has been removed.
+
+ * complex.c (nucomp_to_s): adopts new form.
+
+ * complex.c (nucomp_inspect): ditto.
+
+ * complex.c (string_to_c_internal): ditto and supports polar form.
+
+ * complex.c (rb_complex_polar): new.
+
+ * rational.c (nurat_to_s): do not canonicalize.
+
+ * rational.c (nurat_inspect): adopts new form.
+
+ * rational.c (string_to_r_internal): ditto.
+
+ * include/ruby/intern.h: added a declaration.
+
+ * lib/complex.rb: added an obsolete class method.
+
+ * lib/cmath.rb: use scalar? instead of generic?.
+
+Fri Aug 22 20:06:46 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#shutdown):
+ rescue Errno::ENOTCONN and close. [ruby-dev:35896]
+
+ * test/openssl/test_ssl.rb (OpenSSL#start_server): ditto.
+ [ruby-dev:35897]
+
+ * lib/net/imap.rb (Net::IMAP#disconnect): ditto. [ruby-dev:35898]
+
+Fri Aug 22 19:58:27 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: no need to require the "lib/rational.rb" any more.
+
+Fri Aug 22 15:47:38 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/cgi.rb: use bytesize instead of size/length.
+
+Fri Aug 22 14:28:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime): supported flags and precision for most
+ conversions. [ruby-dev:35906]
+
+Fri Aug 22 14:04:04 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: test_shift_jis:
+ fixed comment strings (see r18291)
+
+Fri Aug 22 12:41:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_pid): use PIDT2NUM.
+
+Fri Aug 22 11:36:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (dir_enc_str_new): set US-ASCII to the path
+ when the path is 7bit string and encoding is ASCII compatible.
+
+ * dir.c (push_glob): set file system encoding when argument encoding
+ is US-ASCII.
+
+Fri Aug 22 11:30:38 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (dir_enc_str_new): renamed from dir_enc_str.
+
+ * dir.c (dir_read): use dir_enc_str_new.
+
+ * dir.c (dir_each): ditto.
+
+ * dir.c (push_pattern): ditto.
+
+Fri Aug 22 11:29:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: remove config.h dependency.
+
+Fri Aug 22 10:52:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (gmtime_r): check if reentrant versions are available.
+
+ * time.c (IF_HAVE_GMTIME_R, ASCTIME, GMTIME, LOCALTIME): use reentrant
+ versions if available.
+
+Fri Aug 22 05:29:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (INT2NUM): just use a simple macro on LP64.
+ (UINT2NUM): ditto.
+
+Fri Aug 22 05:10:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_file_open_generic): take filename as a VALUE.
+ (rb_file_open_internal): ditto.
+ (rb_io_open): ditto.
+ (rb_file_open): pass filename as a VALUE to rb_file_open_internal.
+ (rb_open_file): pass filename as a VALUE to rb_file_open_generic.
+ (open_key_args): pass filename as a VALUE to rb_io_open.
+
+Fri Aug 22 04:33:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h: fix previous change for LP64.
+
+Fri Aug 22 03:19:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (NUM2LONG): make it inline function to evaluate
+ the argument only once.
+ `t = Object.new; def t.*(x) p x; 0 end; p Time.at(0, t)' did print x
+ twice.
+ (NUM2INT): ditto.
+ (NUM2LL): ditto.
+ (INT2NUM): make it inline function.
+ (LONG2NUM): ditto.
+ (UINT2NUM): ditto.
+ (ULONG2NUM): ditto.
+
+Fri Aug 22 03:03:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_s_sysopen): mode can be a Bignum.
+
+Fri Aug 22 02:57:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_extract_modeenc): notify coerced to caller.
+ (rb_io_initialize): mode may be a Bignum.
+
+Fri Aug 22 02:42:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_extract_modeenc): use rb_check_to_integer to test
+ integer.
+
+Fri Aug 22 02:25:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * iseq.c (iseq_inspect): don't raise on uninitialized object.
+ show real class name.
+
+Fri Aug 22 02:08:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_initialize): accept hash argument.
+
+Thu Aug 21 23:51:51 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): supported %F and %<precision>N.
+ reverted config.h to ruby.h for Windows.
+
+ * test/ruby/test_time.rb (TestTime::test_strftime): added tests
+ for %F and %N.
+
+ * time.c: documented %F and %N.
+
+Thu Aug 21 20:23:26 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb#test_str_crypt): add
+ key and salt to error message.
+
+Thu Aug 21 19:20:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * file.c (rb_stat_inspect): don't raise if self is not initialized.
+
+Thu Aug 21 19:17:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (pst_pid): use rb_attr_get to avoid warning on
+ Process::Status.allocate.pid.
+ (pst_inspect): don't raise if self is not initialized.
+
+Thu Aug 21 19:05:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_extract_encoding_option): if internal encoding is not
+ specified, enc is external encoding.
+
+Thu Aug 21 14:22:50 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c: include ruby/config.h instead of ruby/ruby.h.
+
+ * common.mk: removed the old rule for missing/strftime.c.
+
+Thu Aug 21 09:29:01 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): return "UTC" instead of "GMT".
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Thu Aug 21 07:59:04 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/iconv/test_option.rb (test_ignore_option): skip if iconv
+ doesn't have transliterate.
+
+ * test/iconv/test_option.rb (test_translit_option): ditto.
+
+Thu Aug 21 06:12:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/scanf.rb (Scanf::FormatSpecifier#initialize): %i should accept
+ single digit decimal. [ruby-core:18355]
+
+Thu Aug 21 06:02:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_initialize_copy): Range is now a Struct.
+ [ruby-core:18353]
+
+ * struct.c (rb_struct_init_copy): made public.
+
+Thu Aug 21 03:09:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_extract_encoding_option): enc2 is external encoding if
+ external encoding and internal encoding is given.
+ (pipe_open): add flags and convconfig argument to initialize
+ fptr->{mode,enc,enc2}.
+ (pipe_open_v): pass flags and convconfig from caller to pipe_open.
+ (pipe_open_s): ditto.
+ (pop_last_hash): new function.
+ (rb_io_s_popen): use last hash as option to specify code conversion.
+ (rb_io_open): specify flags and convconfig arguments for
+ pipe_open_s.
+ (rb_f_backquote): ditto.
+
+Thu Aug 21 02:27:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (prep_io): local variable renamed.
+ (rb_io_fdopen): ditto.
+ (prep_stdio): ditto.
+
+Thu Aug 21 01:58:59 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * configure.in: always check timezone().
+
+ * strftime.c (rb_strftime): prefer timezone/altzone rather than
+ gettimeofday(). The second argument to gettimeofday() is ignored
+ on Solaris.
+
+Thu Aug 21 02:03:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (open_key_args): simplified.
+
+Thu Aug 21 01:57:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (open_key_args): IO.foreach(path, rs, limit) didn't work.
+
+Thu Aug 21 01:31:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_file_sysopen_internal): unused function removed.
+ (rb_file_sysopen): ditto.
+
+Thu Aug 21 01:09:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c: use mode_t for the 3rd argument, permission, of open(2).
+
+Thu Aug 21 00:51:42 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * configure.in: removed strftime from AC_REPLACE_FUNCS().
+
+ * include/ruby/missing.h: removed prototype for strftime().
+
+ * missing/strftime.c: removed.
+
+ * time.c (time_to_s): use rb_strftime() instead of strftime(3).
+ (time_zone): ditto.
+
+Thu Aug 21 00:49:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * strftime.c: win32 support.
+
+Thu Aug 21 00:20:05 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c: new file.
+
+ * common.mk (COMMONOBJS): added strftime.$(OBJEXT).
+
+ * time.c (time_strftime): do not use strftime(3). supported
+ %L(millisecond) and %N(nanosecond).
+
+ * test/ruby/test_time.rb: added tests for %L and %N.
+
+Wed Aug 20 23:53:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_set_encoding): removed.
+ (rb_io_open): set up encoding using new argument opt.
+ (open_key_args): call rb_io_open with opt. don't call
+ io_set_encoding.
+
+Wed Aug 20 22:30:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_file_open_internal): use rb_io_flags_modenum.
+ (rb_io_reopen): use rb_io_flags_modenum and rb_io_modenum_mode.
+ (rb_io_stdio_file): ditto.
+
+Wed Aug 20 22:28:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_new): use the given class.
+
+ * vm.c (vm_make_proc): added an argument for the class.
+
+Wed Aug 20 22:24:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_take): get rid of extraneous iteration.
+
+Wed Aug 20 20:32:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_open_with_args): use rb_open_file instead of rb_io_open.
+
+Wed Aug 20 20:16:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_scan_open_args): extracted from rb_open_file.
+
+Wed Aug 20 19:22:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (convconfig_t): new type.
+ (rb_io_extract_modeenc): new function.
+ (rb_file_open_generic): new function.
+ (rb_file_open_internal): use rb_file_open_generic.
+ (rb_file_sysopen_internal): use rb_file_open_generic.
+ (rb_open_file): use rb_io_extract_modeenc and rb_file_open_generic.
+ (rb_io_open): call rb_file_open_internal instead of rb_file_open.
+
+Wed Aug 20 19:15:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (Init_IO): new constants: File::DSYNC, File::RSYNC and
+ File::NOFOLLOW.
+
+Wed Aug 20 18:41:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_open_file): don't lookup :mode and :perm in opt. it is
+ useless because vmode and perm is overwritten by rb_scan_args
+ anyway.
+
+Wed Aug 20 18:37:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (open_key_args): meaningless MEMCPY removed.
+
+Wed Aug 20 18:30:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (prep_io) [cygwin]: use FMODE_BINMODE instead of O_BINARY.
+
+Wed Aug 20 16:39:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sample): performance improvement for huge array.
+
+Wed Aug 20 12:28:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sample): get rid of infinite loop. #455
+
+Wed Aug 20 06:09:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_TRUNC): value changed because 0x100 is used
+ as FMODE_NOREVLOOKUP in socket.c
+
+Wed Aug 20 05:19:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (parse_mode_enc): extracted from mode_enc.
+ (io_extract_encoding_option): extracted from io_set_encoding.
+
+Wed Aug 20 04:17:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_flags_modenum): make it static.
+
+Wed Aug 20 03:36:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_TRUNC): new constant.
+
+ * io.c (rb_io_mode_flags): set FMODE_TRUNC for "w".
+ (rb_io_modenum_flags): set FMODE_TRUNC for O_TRUNC.
+ (rb_io_flags_modenum): new function.
+ (rb_io_mode_modenum): just use rb_io_mode_flags and
+ rb_io_flags_modenum.
+
+Wed Aug 20 02:36:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fopen): macro for vms removed. fopen is not used now.
+
+Wed Aug 20 02:27:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): fix memory leak.
+ (rb_econv_close): ditto.
+ fixed by shinichiro.h. [ruby-dev:35880]
+
+Tue Aug 19 21:50:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_fopen): declaration removed.
+
+ * io.c (rb_fopen): unused function removed.
+
+Tue Aug 19 21:14:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_READWRITE): define as
+ FMODE_READABLE|FMODE_WRITABLE.
+
+Tue Aug 19 21:13:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_flags_mode): use hexadecimal in error message.
+ (rb_io_modenum_mode): ditto.
+ (rb_io_initialize): ditto.
+
+Tue Aug 19 18:23:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_flags_mode): add a prefix 0 to octal in error message.
+ (rb_io_modenum_mode): ditto.
+
+Tue Aug 19 18:05:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_*): sorted and describe the values in
+ hexadecimal.
+
+Tue Aug 19 17:32:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): store the
+ result of d2i_X509_NAME into DATA_PTR(self).
+
+Tue Aug 19 04:54:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (FileUtils#ruby): takes care of space containing path.
+ [ ruby-Bugs-21591 ]
+
+Tue Aug 19 01:32:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_open_file): encoding in mode string was ignored if perm is
+ specified.
+
+Tue Aug 19 01:02:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_open_file): don't access argv[-1] by
+ File.allocate.instance_eval { initialize }.
+
+Tue Aug 19 00:56:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_inspect): don't raise for uninitialized Regexp.
+
+Tue Aug 19 00:34:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_check_readable): side effect for STDIN removed.
+ (rb_io_external_encoding): ditto.
+
+Mon Aug 18 23:27:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_ungetbyte): renamed from io_ungetc.
+ (rb_io_ungetbyte): new method.
+ (rb_io_ungetc): push back into character buffer if enc2 is set.
+
+Mon Aug 18 22:41:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (id_encode): removed.
+
+Mon Aug 18 22:30:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): if enc and enc2 is set, convert
+ string.encoding to enc2.
+
+ * include/ruby/io.h: comment changed.
+
+Mon Aug 18 21:02:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): new fields: writeconv,
+ writeconv_stateless and writeconv_initialized.
+ (MakeOpenFile): initialize them.
+
+ * include/ruby/encoding.h (rb_econv_stateless_encoding): declared.
+ (rb_econv_string): declared.
+
+ * io.c (make_writeconv): new function.
+ (io_fwrite): use econv.
+ (make_readconv): fix error message.
+ (finish_writeconv): new function.
+ (fptr_finalize): call finish_writeconv.
+ (clear_writeconv): new function.
+ (clear_codeconv): new function to call both clear_readconv and
+ clear_writeconv.
+ (rb_io_fptr_finalize): call clear_codeconv instead of
+ clear_readconv.
+ (mode_enc): ditto.
+ (io_set_encoding): ditto.
+ (argf_next_argv): ditto.
+ (io_encoding_set): ditto.
+
+ * gc.c (gc_mark_children): mark writeconv_stateless in T_FILE.
+
+ * transcode.c (stateless_encoding_i): new function.
+ (rb_econv_stateless_encoding): ditto.
+ (rb_econv_string): ditto.
+
+Mon Aug 18 17:23:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (clear_readconv): extracted from rb_io_fptr_finalize.
+ (mode_enc): call clear_readconv.
+ (io_set_encoding): ditto.
+ (argf_next_argv): ditto.
+ (io_encoding_set): ditto.
+
+Mon Aug 18 16:54:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (mode_enc): modify enc and enc2 consistently.
+ (io_set_encoding): ditto.
+ (io_encoding_set): ditto.
+
+Mon Aug 18 13:21:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_search_path): prevent infinite loop by
+ searching a path for self conversion.
+
+Mon Aug 18 12:45:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_enc_str): code conversion removed.
+ (io_enc_str_converted): removed because it is identical to
+ io_enc_str now.
+
+Mon Aug 18 12:12:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_shift_crbuf): add strp argument to append into existing
+ string.
+ (read_all): use econv if enc2 is set.
+ (io_getc): follow the io_shift_crbuf change.
+
+Mon Aug 18 10:35:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_enc_str_converted): new function.
+ (make_readconv): extracted from io_getc.
+ (more_char): ditto.
+ (appendline): use econv via make_readconv and more_char for code
+ conversion.
+ (prepare_getline_args): don't convert record separator.
+ (rb_io_getline_1): don't use rb_io_getline_fast if enc2 is set.
+ (io_getc): use make_readconv and more_char.
+
+Mon Aug 18 08:27:44 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * common.mk: fix error in uncommon.mk.
+
+Mon Aug 18 06:10:08 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: config.h depends config.status.
+
+Mon Aug 18 03:59:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (appendline): appendline cannot check character boundary.
+ (rb_io_getline_1): relax limit until character boundary.
+
+Mon Aug 18 02:25:11 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#eof?): added lacked method.
+
+Sun Aug 17 21:50:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (prepare_getline_args): io.gets(10,nil) should cause TypeError.
+
+Sun Aug 17 15:58:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: not check config.h.
+
+ * lib/mkmf.rb (init_mkmf): add include/ruby/backward to $INCFLAGS.
+
+ * include/ruby/backward/{st,util}.h: added for backward compatibility.
+ [ruby-dev:35811]
+
+Sun Aug 17 13:40:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_putback): new method.
+
+Sun Aug 17 13:23:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_putbackable): declared.
+ (rb_econv_putback): ditto.
+
+ * transcode.c (rb_econv_putbackable): implemented.
+ (rb_econv_putback): ditto.
+
+ * io.c (io_getc): put back bytes if possible.
+
+Sun Aug 17 12:00:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): add several instance variables
+ to exception object.
+ (ecerr_source_encoding): new method:
+ Encoding::ConversionUndefined#source_encoding and
+ Encoding::InvalidByteSequence#source_encoding.
+ (ecerr_destination_encoding): new method:
+ Encoding::ConversionUndefined#destination_encoding and
+ Encoding::InvalidByteSequence#destination_encoding.
+ (econverr_error_char): new method:
+ Encoding::ConversionUndefined#error_char.
+ (econverr_error_bytes): new method:
+ Encoding::ConversionUndefined#error_bytes.
+
+Sun Aug 17 11:43:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (struct MT): packed Mersenne Twister staffs.
+
+ * random.c (struct RandSeed): packed random seed staffs.
+
+Sun Aug 17 08:38:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/iconv/test_option.rb (test_ignore_option): skip if iconv
+ doesn't have transliterate.
+
+ * test/iconv/test_option.rb (test_translit_option): ditto.
+
+Sun Aug 17 01:29:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): new fields: readconv, crbuf, crbuf_off,
+ crbuf_len, crbuf_capa.
+ (MakeOpenFile): initialize them.
+
+ * io.c (io_shift_crbuf): new function.
+ (io_getc): use econv.
+ (rb_io_fptr_finalize): finalize readconv and crbuf.
+
+Sun Aug 17 00:02:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_check_error): declared.
+
+ * transcode.c (make_econv_exception): new function.
+ (transcode_loop): use make_econv_exception.
+ (rb_econv_check_error): defined.
+
+Sat Aug 16 15:23:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_elem_t): fields removed: from and
+ to.
+ (rb_econv_t): new fields: source_encoding_name and
+ destination_encoding_name.
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): initialize the
+ new fields.
+ (rb_econv_open): set up the new fields.
+ (econv_inspect): use the new fields.
+
+Sat Aug 16 14:22:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_t): add fields: in_buf_start,
+ in_data_start, in_data_end, in_buf_end and last_trans_index.
+ (rb_econv_output): removed.
+ (rb_econv_insert_output): declared.
+ (rb_econv_encoding_to_insert_output): declared.
+
+ * enc/trans/newline.trans (rb_universal_newline): stateful_type
+ changed.
+
+ * transcode.c (transcode_restartable0): initialize inchar_start,
+ tc->recognized_len and next_table at beginning of the loop.
+ (rb_econv_open_by_transcoder_entries): initialize new fields.
+ (rb_econv_open): setup last_trans_index.
+ (trans_sweep): last out_buf_start can be non-NULL now.
+ (rb_econv_convert): check last out_buf_start and in_buf_start at
+ first.
+ (rb_econv_output_with_destination_encoding): removed.
+ (econv_just_convert): removed.
+ (rb_econv_output): removed.
+ (econv_primitive_output): method removed.
+ (rb_econv_encoding_to_insert_output): new function.
+ (allocate_converted_string): new function.
+ (rb_econv_insert_output): new function.
+ (econv_primitive_insert_output): new method.
+ (output_replacement_character): use rb_econv_insert_output. unused
+ arguments removed.
+
+Sat Aug 16 09:20:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_intern_const): tiny optimization.
+
+ * include/ruby/ruby.h (SSIZET2NUM, NUM2SSIZET, SSIZE_MAX, SSIZE_MIN):
+ macros for ssize_t.
+
+Sat Aug 16 08:11:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder_stateful_type_t): defined.
+ (rb_transcoder): add field: stateful_type.
+
+ * tool/transcode-tblgen.rb: generate stateful_type field as
+ stateless_converter.
+
+ * enc/trans/iso2022.trans: follow rb_transcoder change.
+
+ * enc/trans/newline.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+Fri Aug 15 23:07:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_just_convert): extracted from rb_econv_output.
+ (rb_econv_output): use econv_just_convert.
+ (econv_primitive_output): new method.
+
+Fri Aug 15 19:57:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_output): add str_encoding
+ argument.
+
+ * transcode.c (get_replacement_character): add repl_enc_ptr argument.
+ (rb_econv_output_with_destination_encoding): renamed from
+ rb_econv_output and make it static.
+ (rb_econv_output): convert str and call
+ rb_econv_output_with_destination_encoding.
+ (output_replacement_character): follow above interface change.
+
+Fri Aug 15 19:33:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_drop_bytes): use memmove.
+
+Fri Aug 15 18:33:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_t): add error_tc in last_error.
+
+ * transcode.c (rb_econv_convert): fill error_tc.
+
+Fri Aug 15 18:10:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_t): new field: last_error.
+
+ * transcode.c (rb_trans_conv): new argument: result_position_ptr.
+ (rb_econv_convert): fill last_error.
+ (econv_result_to_symbol): extracted from econv_primitive_convert.
+ (econv_primitive_errinfo): new method.
+
+Fri Aug 15 17:39:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.{c,h}): creates in the dependency order.
+
+Fri Aug 15 16:59:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (exec_event_hooks): skips RubyVM::FrozenCore.
+
+ * vm.c (Init_VM): get rid of SEGV in a trace proc.
+
+Fri Aug 15 09:33:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (conv_init): check empty name.
+
+Fri Aug 15 09:03:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_init): don't create dummy encoding if
+ rb_econv_open is failed.
+ (make_dummy_encoding): new function extracted from make_encoding.
+ (make_encoding): removed.
+
+Fri Aug 15 01:07:16 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk ({$(srcdir)}.y.c): escape backslash.
+
+Fri Aug 15 01:05:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): set destination_buffer
+ encoding.
+
+Fri Aug 15 00:52:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_output): declared.
+
+ * transcode_data.h (rb_transcoder): add resetsize_func field.
+
+ * enc/trans/iso2022.trans (iso2022jp_reset_sequence_size): defined.
+ (rb_EUC_JP_to_ISO_2022_JP): provide resetsize_func.
+
+ * tool/transcode-tblgen.rb: set NULL for resetsize_func.
+
+ * transcode.c (rb_econv_output): new function for inserting output.
+ (output_replacement_character): use rb_econv_output.
+ (transcode_loop): check return value of
+ output_replacement_character.
+
+Thu Aug 14 23:47:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_UNIVERSAL_NEWLINE_DECODER): defined.
+ (ECONV_CRLF_NEWLINE_ENCODER): ditto.
+ (ECONV_CR_NEWLINE_ENCODER): ditto.
+ (ECONV_PARTIAL_INPUT): ditto.
+ (ECONV_OUTPUT_FOLLOWED_BY_INPUT): ditto.
+
+ * transcode.c: use ECONV_* defined as above.
+
+Thu Aug 14 23:35:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c: local variable renamed.
+
+Thu Aug 14 23:22:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_result_t): moved from
+ transcode_data.h.
+ (rb_econv_elem_t): ditto.
+ (rb_econv_t): ditto. source_encoding and destination_encoding field
+ is added.
+ (rb_econv_open): declared.
+ (rb_econv_convert): ditto.
+ (rb_econv_close): ditto.
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): initialize
+ source_encoding and destination_encoding field as NULL.
+ (rb_econv_open): make it external linkage.
+ (rb_econv_close): ditto.
+ (rb_econv_convert): ditto. renamed from rb_econv_conv.
+ (make_encoding): new function.
+ (econv_init): use make_encoding and store rb_encoding* in
+ rb_econv_t.
+ (econv_source_encoding): new method
+ Encoding::Converter#source_encoding.
+ (econv_destination_encoding): new method
+ Encoding::Converter#destination_encoding.
+
+Thu Aug 14 22:44:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_econv_result_t): change enumeration
+ constant's prefix: transcode_ to econv_.
+
+ * transcode.c: follow the constant prefix change.
+
+Thu Aug 14 21:34:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_init): accept Encoding object as source_encoding
+ and destination_encoding.
+
+Thu Aug 14 21:10:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_filesystem_encoding): use default external encoding
+ for Unix.
+
+ * dir.c (dir_initialize): don't cache fs_encoding.
+
+Thu Aug 14 20:58:57 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): renamed from
+ rb_trans_open_by_transcoder_entries.
+
+Thu Aug 14 20:56:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_max_output): removed.
+
+Thu Aug 14 20:52:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: check unexpected actions.
+
+Thu Aug 14 20:25:52 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (transcode_invalid_byte_sequence): renamed from
+ transcode_invalid_input.
+ (transcode_destination_buffer_full): renamed from transcode_obuf_full.
+ (transcode_source_buffer_empty): renamed from transcode_ibuf_empty.
+ (rb_econv_result_t): renamed from rb_trans_result_t.
+ (rb_econv_elem_t): renamed from rb_trans_elem_t.
+ (rb_econv_t): renamed from rb_trans_t.
+
+ * transcode.c (UNIVERSAL_NEWLINE_DECODER): renamed from
+ UNIVERSAL_NEWLINE.
+ (CRLF_NEWLINE_ENCODER): renamed from CRLF_NEWLINE.
+ (CR_NEWLINE_ENCODER): renamed from CR_NEWLINE.
+ (rb_econv_open): renamed from rb_trans_open.
+ (rb_econv_close): renamed from rb_trans_close.
+
+Thu Aug 14 19:41:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (load_transcoder): unused function removed.
+ (rb_transcoding_open): ditto.
+
+Thu Aug 14 17:57:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_ispunct): added.
+
+ * common.mk (COMMONOBJS), inits.c (rb_call_inits): id.c is now
+ included from parse.c.
+
+ * id.c (Init_id), id.h (ruby_method_ids): added IDs used by VM.
+
+ * parse.y (global_symbols): added rooms for VM IDs.
+
+ * parse.y (rb_intern3, rb_id2str): single punctuation symbol is now
+ same as char code.
+
+Thu Aug 14 17:46:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (union tmpyystype): no longer needed, since YYSTYPE is
+ defined in parse.h now.
+
+Thu Aug 14 17:27:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * version.c (Init_version): add RUBY_ENGINE constant.
+
+Thu Aug 14 15:34:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_conv): new function. it doesn't consume
+ input too much, even for multilevel conversion.
+ (transcode_loop): use rb_econv_conv.
+ (econv_primitive_convert): ditto.
+
+Thu Aug 14 15:27:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/defines.h (RUBY_ALIAS_FUNCTION): fallback definition.
+
+Thu Aug 14 15:08:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_trans_result_t): new enumeration constant:
+ transcode_output_followed_by_input.
+
+ * transcode.c (OUTPUT_FOLLOWED_BY_INPUT): new flag.
+ (transcode_restartable0): suspend when output followed by input if
+ OUTPUT_FOLLOWED_BY_INPUT is specified.
+ (trans_sweep): check OUTPUT_FOLLOWED_BY_INPUT.
+ (rb_trans_conv): support OUTPUT_FOLLOWED_BY_INPUT.
+ (econv_primitive_convert): return :output_followed_by_input for
+ transcode_output_followed_by_input.
+
+Thu Aug 14 14:57:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (getrusage_time): should return the value.
+
+ * thread.c (rb_thread_priority_set): get rid of C99 feature.
+
+ * transcode.c (transcode_search_path): ditto.
+
+ * vm.c (REWIND_CFP): get rid of statement expressions.
+
+Thu Aug 14 14:13:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (Init_VM): hide FrozenCore.
+
+Thu Aug 14 12:20:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (load_transcoder): suppress warning.
+
+ * missing/vsnprintf.c (BSD_vfprintf): ditto.
+
+Thu Aug 14 12:01:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (gnumake): check for GNU make.
+
+ * Makefile.in (uncommon.mk): includes filtered common.mk.
+
+ * common.mk (parse.h): workaround for nmake.
+
+Thu Aug 14 06:09:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_execute_interrupts): switch event
+ should be occur only once.
+
+Thu Aug 14 05:36:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: parse.h depends on parse.c.
+
+ * common.mk: hash.o depends on $(ID_H_INCLUDES).
+
+Thu Aug 14 02:45:16 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_file_exhaustive.rb (TestFileExhaustive#setup):
+ set group of tmpdir. [ruby-dev:35633]
+
+Thu Aug 14 15:50:30 2008 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * hash.c (set_default): fix rdoc. #441
+
+Thu Aug 14 02:23:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): add output_byteoffset
+ argument.
+
+Thu Aug 14 00:43:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_gcc_function_alias): checks alias attribute.
+
+ * string.c (alias_func): replaced with RUBY_ALIAS_FUNCTION.
+
+Wed Aug 13 23:42:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.h): fake rule.
+
+Wed Aug 13 23:15:58 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_thread.rb (test_list): call Thread.pass to run t1.
+ fixed [ruby-core:18264].
+
+Wed Aug 13 23:05:51 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * string.c (alias_func): changed to 'weak, alias' from 'alias' for
+ Mac OSX. (closes #429)
+
+Wed Aug 13 19:40:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: count only freed object as freelist size.
+
+Wed Aug 13 18:34:22 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * marshal.c (marshal_load): set arg.untrust properly.
+
+Wed Aug 13 17:47:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_inspect): new method.
+
+Wed Aug 13 17:35:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_restartable0): several local variables
+ removed.
+
+Wed Aug 13 17:35:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_set_default_proc): add new method. a patch from
+ Giuseppe Bilotta. #419
+
+Wed Aug 13 17:31:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_insnhelper.c (caller_setup_args): should ensure if the value
+ from to_proc is a real Proc.
+
+Wed Aug 13 17:28:29 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * common.mk: regint.h no longer includes vm_core.h.
+
+Wed Aug 13 17:26:44 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): add fields: writebuf_off,
+ writebuf_len and writebuf.
+ (TRANSCODING_WRITEBUF): new macro.
+
+ * transcode.c (transcode_restartable0): output until output buffer is
+ really full.
+ (rb_transcoding_open_by_transcoder): initialize writebuf_len,
+ writebuf_off and writebuf.
+ (rb_transcoding_close): finalize writebuf.
+
+Wed Aug 13 17:18:37 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_check_ints): added. please note that
+ this function may cause ruby's thread switching.
+
+ * include/ruby/intern.h: ditto.
+
+ * regint.h: use rb_thread_check_ints() instead of
+ RUBY_CHECK_INTS() directly.
+
+Wed Aug 13 17:01:36 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * golf_prelude.rb, lib/set.rb (TC_Set#test_each),
+ test/readline/test_readline_history.rb (Readline#test_each__enumerator),
+ test/ruby/test_array.rb (TestArray#test_collect),
+ test/ruby/test_enumerator.rb (TestEnumerator#test_initialize):
+ Enumerable::Enumerator is now called Enumerator.
+
+ * lib/rinda/tuplespace.rb (Rinda::TupleBag#initialize): Use
+ enum_for instead of hardcoding Enumerable::Enumerator.
+
+Wed Aug 13 16:40:57 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, vm_core.h: add manual priority support
+ using time slice. if you enable USE_NATIVE_THREAD_PRIORITY
+ macro, this mechanism is ignored. [ruby-dev:33124]
+
+ * thread_pthread.c, thread_win32.c: ditto.
+
+ * test/ruby/test_thread.rb: fix test parameter.
+
+Wed Aug 13 16:02:14 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * object.c (rb_obj_untrusted): new method Object#untrusted?.
+ (rb_obj_untrust): new method Object#untrust.
+ (rb_obj_trust): new method Object#trust.
+
+ * array.c, debug.c, time.c, include/ruby/ruby.h, re.c, variable.c,
+ string.c, io.c, dir.c, vm_method.c, struct.c, class.c, hash.c,
+ ruby.c, marshal.c: fixes for Object#untrusted?.
+
+ * test/ruby/test_module.rb, test/ruby/test_array.rb,
+ test/ruby/test_object.rb, test/ruby/test_string.rb,
+ test/ruby/test_marshal.rb, test/ruby/test_hash.rb: added tests for
+ Object#untrusted?.
+
+Wed Aug 13 16:13:58 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_m17n.rb: follow EncodingCompatibilityError.
+
+ * test/ruby/test_mixed_unicode_escapes.rb: ditto.
+
+ * test/ruby/enc/test_utf16.rb: ditto.
+
+Wed Aug 13 16:05:50 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_cmp): retry with right hand operand if its not a
+ time object. [ruby-dev:35011]
+
+Wed Aug 13 15:51:22 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c: Apply a temporary fix to fix build on OS X. A real
+ fix will follow later.
+
+Wed Aug 13 15:25:09 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (Init_Enumerator): Rename Enumerable::Enumerator to
+ just Enumerator.
+
+Wed Aug 13 15:13:57 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * common.mk (prelude.c, golf_prelude.c): Using $(COMPILE_PRELUDE)
+ requires $(RBCONFIG).
+
+Wed Aug 13 15:08:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_init): make flags argument optional.
+ (econv_primitive_convert): ditto.
+
+Wed Aug 13 14:55:27 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * common.mk (realclean-local): Remove parse.h as well.
+
+ * common.mk: Add missing dependencies regarding vm_core.h, id.h,
+ parse.c (parse.h), etc..
+
+Wed Aug 13 14:45:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans (rb_crlf_newline): new transcoder.
+ (rb_cr_newline): new transcoder.
+
+ * transcode.c (trans_open_i): one more extra room for input newline
+ converter.
+ (rb_trans_open): crlf newline and cr newline implemented.
+ (Init_transcode): Encoding::Converter::CRLF_NEWLINE and
+ Encoding::Converter::CR_NEWLINE defined.
+
+Wed Aug 13 14:22:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans: new file.
+
+ * transcode_data.h (rb_trans_t): add last_tc field.
+
+ * transcode.c (UNIVERSAL_NEWLINE): defined.
+ (CRLF_NEWLINE): defined.
+ (CR_NEWLINE): defined.
+ (rb_trans_open_by_transcoder_entries): initialize last_tc.
+ (trans_open_i): allocate one more room for output newline converter.
+ (rb_trans_open): universal newline implemented.
+ (more_output_buffer): take max_output argument instead ts.
+ (output_replacement_character): take tc argument instead of ts.
+ (transcode_loop): use last_tc field.
+ (econv_init): add flags argument for rb_trans_open.
+ (Init_transcode): Encoding::Converter::UNIVERSAL_NEWLINE defined.
+
+Wed Aug 13 14:00:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.c): generates parse.h together.
+
+ * id.c, id.h: use constants for parser tokens.
+
+Wed Aug 13 13:47:05 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: rewind cfp to show proper backtrace.
+ [ruby-dev:35820]
+
+Wed Aug 13 13:09:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: fix for clean up.
+
+Wed Aug 13 11:45:51 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * vm_core.h: Declare rb_iseq_clone, which is used in class.c.
+
+Wed Aug 13 11:39:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_search_path): return the length of converter
+ path.
+ (load_transcoder_entry): renamed from load_transcoder.
+ (load_transcoder): new function for loading transcoder by encoding
+ names.
+ (rb_transcoding_open_by_transcoder): extracted from
+ rb_transcoding_open.
+ (rb_transcoding_open): use load_transcoder and
+ rb_transcoding_open_by_transcoder.
+ (rb_trans_open_by_transcoder_entries): new function.
+ (trans_open_i): construct entries array.
+ (rb_trans_open): use rb_trans_open_by_transcoder_entries.
+
+Wed Aug 13 10:45:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: try to find exported directory.
+
+Wed Aug 13 10:16:35 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * doc/NEWS: Mention the Readline.vi_editing_mode?,
+ Readline.emacs_editing_mode?, Readline::HISTORY[] and
+ Readline::HISTORY.clear change.
+
+Wed Aug 13 08:03:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): add output_size argument.
+
+Wed Aug 13 07:41:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_trans_conv): report last transcode_obuf_full.
+ (econv_max_output): new method Encoding::Converter#max_output.
+
+Wed Aug 13 02:46:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (rb_eEncCompatError): add Exception.
+
+ * include/ruby/ruby.h: ditto.
+
+ * encoding.c (rb_enc_check): use rb_eEncCompatError.
+
+ * string.c (rb_enc_cr_str_buf_cat): ditto.
+
+ * string.c (rb_str_sub_bang): ditto.
+
+ * string.c (rb_str_hex): ditto.
+
+ * string.c (rb_str_oct): ditto.
+
+Wed Aug 13 02:36:47 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (str_transcode): fix error message.
+
+Tue Aug 12 23:42:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_cEncodingConverter): new class Encoding::Converter.
+ (econv_free): new function.
+ (econv_s_allocate): ditto.
+ (econv_init): ditto.
+ (check_econv): ditto.
+ (econv_primitive_convert): new method.
+ (Init_transcode): define Encoding::Converter.
+
+Tue Aug 12 23:16:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_splice_0): call rb_str_drop_bytes, not rb_str_drop.
+
+Tue Aug 12 19:11:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: fix for enc.mk.
+
+Tue Aug 12 19:08:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_drop_bytes): new function to drop first bytes.
+
+Tue Aug 12 18:58:48 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_insnhelper.c (vm_define_method): move
+ function place.
+
+Tue Aug 12 18:56:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c: more descriptive aliases of rb_str_new[2-5].
+ [ruby-dev:35615]
+
+Tue Aug 12 18:51:29 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * gc.c (getrusage_time): Returned effective value on Windows.
+
+Tue Aug 12 18:51:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_trans_open): free ts before raise.
+
+Tue Aug 12 18:46:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): should not ignore
+ <=> comparison. [ruby-dev:35732]
+
+Tue Aug 12 18:43:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/make_transdb.rb: *.erb.c is not used anymore.
+
+Tue Aug 12 18:32:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_trans_elem_t): new field: from and to.
+
+ * transcode.c (trans_open_i): just record from and to.
+ (rb_trans_open): load transcodings.
+
+Tue Aug 12 18:32:03 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c (mSyslog_open): Use of Check_SafeStr() is
+ deprecated.
+ (mSyslogConstants_LOG_MASK, mSyslogConstants_LOG_UPTO): Use
+ NUM2INT() instead of FIX2INT() when the type of an given object
+ is not determined.
+
+Tue Aug 12 18:14:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb (#transcode_tblgen): slight message
+ improvement.
+
+Tue Aug 12 17:16:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (trans_open_i): check the result of rb_transcoding_open.
+
+Tue Aug 12 16:23:32 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_profile_result): use rb_str_catf.
+
+Tue Aug 12 16:13:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (TRANSCODE_ERROR): removed.
+
+ * tool/transcode-tblgen.rb: 8bit byte of ASCII-8BIT is a valid
+ (but unique to ASCII-8BIT) character.
+
+ * transcode.c (rb_eConversionUndefined): new error.
+ (rb_eInvalidByteSequence): ditto.
+
+Tue Aug 12 16:08:51 2008 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: POP3Command should export @socket since POP
+ calls #socket.
+
+Tue Aug 12 16:06:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c, util.c (quorem, nrv_alloc, dtoa): enabled floating point
+ support.
+
+Tue Aug 12 15:52:45 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_profile_result): use sprintf.
+
+Tue Aug 12 15:37:40 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): should check symbol table overflow.
+
+Tue Aug 12 15:31:04 2008 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (send_request_with_body): Content-Length should
+ be byte length of string. (closes #203)
+
+Tue Aug 12 15:17:06 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: (transvpath_prefix): prefix has no extension, so replace
+ %s with "".
+
+Tue Aug 12 15:03:43 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline.rb (TestReadline#test_safe_level_4):
+ tested Readline.vi_editing_mode? and Readline.emacs_editing_mode?.
+
+Tue Aug 12 14:25:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (.SUFFIXES): renamed to .trans.
+
+ * enc/make_encmake.rb: added --encs and --no-encs options.
+
+ * enc/depend (TRANSVPATH): fix for nmake.
+
+Tue Aug 12 14:19:53 2008 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/https.rb: suppress syntax warning.
+
+Tue Aug 12 14:15:51 2008 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (Net::HTTP#initialize): initialize net/https
+ variables to suppress syntax warning.
+
+Tue Aug 12 14:15:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): fixed shadowing variable.
+
+Tue Aug 12 10:25:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete): Array#delete to return deleted element.
+
+Tue Aug 12 10:18:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/win32ole/test_err_in_callback.rb: do not require 'mkmf'
+ unless WIN32OLE is defined.
+
+Tue Aug 12 07:41:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): add resetstate_func field for
+ resetting a state of stateful encoding.
+
+ * enc/trans/iso2022.trans (rb_EUC_JP_to_ISO_2022_JP): specify
+ finish_eucjp_to_iso2022jp for resetstate_func.
+
+ * tool/transcode-tblgen.rb: specify NULL for resetstate_func.
+
+ * transcode.c (output_replacement_character): call resetstate_func
+ before appending the replacement character.
+
+Tue Aug 12 07:19:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (get_replacement_character): extracted from
+ output_replacement_character.
+
+Tue Aug 12 07:00:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): typedef at first.
+
+Tue Aug 12 06:48:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_trans_conv): find second last error.
+
+Tue Aug 12 00:43:44 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_trans_result_t): new type.
+ (rb_trans_elem_t): new type.
+ (rb_trans_t): new type.
+
+ * transcode.c (transcode_dispatch_cb): removed.
+ (transcode_dispatch): removed.
+ (rb_transcoding_result_t): moved to rb_trans_result_t in
+ transcode_data.h.
+ (transcode_restartable0): goto follow_info when FUNsi.
+ (rb_transcoding_open): use get_transcoder_entry.
+ (rb_trans_open): new function.
+ (rb_trans_conv): ditto.
+ (rb_trans_close): ditto.
+ (trans_open_i): ditto.
+ (trans_sweep): ditto.
+ (more_output_buffer): take rb_trans_t instead of rb_transcoding as
+ an argument.
+ (transcode_loop): take from_encoding and to_encoding instead of tr
+ as arguments. use rb_trans_open/rb_trans_conv/rb_trans_close.
+ (str_transcode): don't use transcode_dispatch.
+
+Mon Aug 11 20:37:05 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * iseq.c (rb_iseq_clone): should preserve cref_stack link.
+
+Mon Aug 11 20:27:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): add taint check.
+
+ * ext/dl/dl.c (rb_dl_malloc): add rb_secure(2).
+
+ * ext/dl/dl.c (rb_dl_realloc): ditto.
+
+ * ext/dl/dl.c (rb_dl_free): ditto.
+
+ * ext/dl/dl.c (rb_dl_ptr2value): ditto.
+
+Mon Aug 11 20:11:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (getrusage_time): works only if RUSAGE_SELF is defined right
+ now.
+
+ * gc.c (gc_profile_result): C99.
+
+Mon Aug 11 18:57:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sample): rename #choice to #sample. in
+ addition, sample takes optional argument, a la #first.
+
+Mon Aug 11 18:28:02 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: added GC::Profiler.
+
+Mon Aug 11 17:26:16 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/README.ja: added API document for
+ Readline.vi_editing_mode? and Readline.emacs_editing_mode?.
+
+ * ext/readline/extconf.rb: checked rl_editing_mode variable in
+ Readline library.
+
+ * ext/readline/readline.c (readline_s_emacs_editing_mode_p): added
+ Readline.emacs_editing_mode? method.
+ (readline_s_vi_editing_mode_p): added Readline.vi_editing_mode?
+ method.
+ (Init_readline): ditto.
+
+Mon Aug 11 16:56:40 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline.rb: added test for Readline's class
+ methods.
+
+Mon Aug 11 16:39:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (clone_method): should copy cbase in cref as well.
+ [ruby-dev:35116]
+
+ * iseq.c (iseq_mark): mark original iseq object.
+
+ * iseq.c (iseq_free): do not free internal data if they have
+ original iseq to belong.
+
+ * iseq.c (rb_iseq_clone): a new function to clone iseq value.
+
+Mon Aug 11 16:34:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/iso2022.trans: renamed from iso2022.erb.c.
+
+ * enc/trans/single_byte.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+ * enc/trans/korean.trans: ditto.
+
+ * enc/trans/japanese.trans: ditto.
+
+ * enc/depend: follow the renaming.
+
+ * tool/build-transcode: ditto.
+
+Mon Aug 11 15:09:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (rb_cv_broken_glibc_ia64_erfc): renamed from
+ rb_broken_glibc_ia64_erfc.
+ [ruby-core:18228]
+
+Mon Aug 11 10:04:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): rename fields.
+ readlen -> recognized_len.
+ feedlen -> readagain_len.
+
+ * transcode.c: follow the field renaming.
+
+Sun Aug 10 22:34:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_restartable0): invalid handling simplified.
+ (transcode_restartable): use PARTIAL_INPUT for converting buffered
+ input.
+
+Sun Aug 10 22:24:24 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * encoding.c: include util.h. [ruby-dev:35715]
+
+ * common.mk: ditto.
+
+Sun Aug 10 20:59:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): new field: flags.
+
+ * transcode.c (load_transcoder): extracted from transcode_dispatch_cb.
+ (rb_transcoding_result_t): renamed from transcode_result_t.
+ (rb_transcoding_open): new function.
+ (rb_transcoding_convert): ditto.
+ (rb_transcoding_close): ditto.
+ (transcode_loop): use rb_transcoding_open, rb_transcoding_convert
+ and rb_transcoding_close.
+ (str_transcode): don't need rb_transcoding.
+
+Sun Aug 10 18:09:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: record checksum of
+ transcode-tblgen.rb itself.
+
+Sun Aug 10 12:34:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * config.guess ({powerpc-apple,i586-pc}-haiku): re-applied r18403.
+ [ruby-core:18110]
+
+ * config.{guess,sub}: updated to automake-1.10.1.
+
+Sun Aug 10 11:45:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (make-workdir): use MAKEDIRS.
+
+ * enc/depend: makes target directory before compile/link.
+
+ * tool/transcode-tblgen.rb: creates target directory.
+
+Sun Aug 10 11:30:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c: rename my_transcoding to tc and my_transcoder to tr.
+
+Sun Aug 10 11:15:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): add feedlen field.
+
+ * transcode.c (transcode_restartable0): renamed from
+ transcode_restartable.
+ save input buffer into feed buffer if next character is started the
+ point before input buffer. for example, "\x00\xd8\x01" then "\x02"
+ in UTF-16LE. \x02 causes invalid and next character is started from
+ \x01.
+ (transcode_restartable): new function to call
+ transcode_restartable0. if feed buffer is not empty, convert it at
+ first.
+
+Sun Aug 10 11:02:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (extconf): use MAKEDIRS.
+
+Sun Aug 10 09:35:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb.rb (IRB::Irb#inspect): instance_variables returns symbols
+ instead of strings now. [ruby-dev:34930]
+
+Sun Aug 10 09:22:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_char_start): refactored to remove readlen
+ argument.
+ (transcode_restartable): refactored to remove readlen variable.
+
+Sun Aug 10 08:56:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (STACK_LEVEL_MAX, ruby_stack_length): returns size_t.
+ [ruby-core:18207]
+
+ * configure.in (rb_cv_missing__dtos18, rb_cv_missing_fconvert),
+ ext/digest/md5/md5.c, ext/openssl/ossl.c (main),
+ ext/socket/extconf.rb (ipv6, wide-getaddrinfo): main should be int.
+
+ * main.c (main), win32/winmain.c, wince/wincemain.c (WinMain): envp is
+ no longer used so long time. based on a patch from Peter Bowen at
+ [ruby-core:18208]
+
+Sat Aug 9 22:05:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_loop): take destination and resize function
+ as parameters.
+ (more_output_buffer): ditto.
+ (str_transcoding_resize): argument changed from rb_transcoding* to
+ VALUE.
+ (str_transcode): call transcode_loop with destination string and its
+ resize function.
+
+ * transcode_data.h (rb_transcoding): move ruby_string_dest and
+ flush_func to transcode_loop parameters.
+
+Sat Aug 9 21:29:45 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: encs depend on transdb.h
+
+Sat Aug 9 21:10:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_rshift_sign, rb_cv_binary_elf): get rid of
+ AC_TRY_RUN.
+
+Sat Aug 9 16:33:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): new fields: next_info and next_byte.
+
+ * transcode.c (transcode_restartable): save/restore next_info and
+ next_byte.
+ sync readlen and in_p when invalid.
+
+Sat Aug 9 15:10:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_restartable): my_transcoder argument removed.
+ (transcode_loop): my_transcoder argument removed.
+
+Sat Aug 9 14:39:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): add fields for restartable
+ transcoding.
+ (rb_transcoder): add max_input field.
+ from_unit_length field is renamed to input_unit_length.
+
+ * tool/transcode-tblgen.rb: generate max_input field.
+
+ * enc/trans/iso2022.erb.c: follow rb_transcoder change.
+
+ * enc/trans/utf_16_32.erb.c: ditto.
+
+ * transcode.c (PARTIAL_INPUT): new constant.
+ (transcode_char_start): new function.
+ (transcode_result_t): new type.
+ (transcode_restartable): new function.
+ (more_output_buffer): new function.
+ (transcode_loop): use transcode_restartable.
+
+Sat Aug 9 13:35:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * stable/ext/socket/socket.c (NI_MAXHOST, NI_MAXSERV): fixed invalid
+ preprocessor directives. a patch from Peter Bowen at
+ [ruby-core:18211].
+
+Sat Aug 9 06:37:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/make_encdb.rb, enc/trans/make_transdb.rb: skip nonexistent
+ directory. [ruby-dev:35802]
+
+Sat Aug 9 01:07:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/utf_16_32.erb.c (fun_so_from_utf_32le): implemented.
+ (fun_so_to_utf_32le): implemented.
+ [ruby-dev:35777]
+
+Sat Aug 9 00:42:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): from_unit_length field added.
+ from_utf8 field removed.
+
+ * tool/transcode-tblgen.rb: generate offsets range.
+ follow rb_transcoder change.
+
+ * transcode.c (transcode_loop): don't use from_utf8.
+ make invalid region from_unit_length wise.
+
+ * enc/trans/iso2022.erb.c: follow rb_transcoder and
+ transcode_generate_node change.
+
+ * enc/trans/utf_16_32.erb.c: follow rb_transcoder and
+ transcode_generate_node change.
+ explicit :invalid map removed.
+
+Fri Aug 8 23:29:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (TRANSCSRCS): needs rule_subst to apply.
+
+ * io.c (shutdown): not define if defined already.
+
+Fri Aug 8 22:47:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (opt_eq_func): large function to make inline.
+
+ * bcc32/Makefile.sub (config.h): cannot compile a big inline function.
+
+Fri Aug 8 21:09:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (enk.mk): give not RUBY but MINIRUBY.
+
+Fri Aug 8 17:03:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (shutdown, sched_yield, pthread_attr_setinheritsched):
+ check for Haiku.
+
+ * eval_intern.h, io.c, thread_pthread.c: use autoconfisticated results.
+
+Fri Aug 8 16:52:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (enc.mk): mkmf.rb requires rbconfig.rb.
+
+ * common.mk (srcs-enc): renamed from transcodes.
+
+ * enc/Makefile.in (make-workdir): creates object directories.
+
+ * common.mk (encdb.h): see both $(srcdir)/enc and enc.
+
+ * enc/make_encdb.rb: ditto.
+
+ * enc/trans/make_transdb.rb: fix for the case no transdirs are given.
+
+ * enc/trans/make_transdb.rb: converts only one transcoders for each
+ basename.
+
+Fri Aug 8 10:53:52 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: randomize source port and transaction id.
+ CVE-2008-1447.
+
+ * lib/resolv-replace.rb (UDPSocket#bind): don't resolv host if host is
+ "".
+
+Fri Aug 8 04:20:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: see both $(srcdir)/enc/trans and enc/trans.
+
+ * enc/trans/make_transdb.rb: ditto.
+
+Fri Aug 8 00:05:02 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/.document: added readline/readline.c.
+
+ * ext/readline/readline.c: changed Copyright. added RDoc.
+
+ * ext/readline/README.ja: fixed typo.
+
+ * ext/readline/README: contents was moved RDoc.
+
+Thu Aug 7 23:43:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): new field "stateful".
+ (rb_transcoder): preprocessor and postprocessor field removed.
+ change arguments of func_ii, func_si, func_io and func_so.
+ new field "finish_func".
+
+ * tool/transcode-tblgen.rb: make FUNii, FUNsi and FUNio
+ generatable.
+
+ * transcode.c (transcoder_lib_table): removed.
+ (transcoder_table): change structure.
+ (transcoder_key): removed because the above structure change.
+ (make_transcoder_entry): new function.
+ (get_transcoder_entry): ditto.
+ (rb_register_transcoder): follow the structure change.
+ (declare_transcoder): ditto.
+ (transcode_search_path): new function for breadth first search to
+ find a list of converters.
+ (transcode_search_path_i): new function.
+ (transcode_dispatch_cb): ditto.
+ (transcode_dispatch): use transcode_search_path.
+ (transcode_loop): follow the argument change.
+ (str_transcode): preprocessor and postprocessor stuff removed.
+
+ * enc/trans/iso2022.erb.c: new file. ISO-2022-JP conversion
+ re-implemented.
+
+ * enc/trans/japanese.erb.c: ISO-2022-JP stuff removed.
+
+ * enc/trans/utf_16_32.erb.c: follow argument change of FUNso.
+
+ [ruby-dev:35798]
+
+Thu Aug 7 22:55:44 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/README.ja: updated API document for Readline module.
+
+Thu Aug 7 20:52:08 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (login): raise FTPReplyError if passwd or acct
+ is not supplied. fixed [ruby-core:18058].
+
+Thu Aug 7 18:01:44 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-mode.el (ruby-imenu-create-index-in-block): Fix the
+ regexp to only pick definition lines properly. `module_function'
+ is not a definition of a module named `_function'.
+
+Thu Aug 7 17:47:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend: add transdb.c.
+
+Thu Aug 7 16:28:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk, {bcc,win}32/Makefile.sub (clean-ext): do not
+ use miniruby.
+
+Thu Aug 7 14:17:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend: removed needless explicit commands.
+
+ * lib/mkmf.rb, {bcc32,win32}/Makefile.sub (CLEANLIBS, CLEANOBJS):
+ moved clean targets to platform makefiles.
+
+Thu Aug 7 13:12:30 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/getaddrinfo.c (gai_strerror): ignore only on Haiku.
+ a patch from <zn at mbf.nifty.com>, [ruby-dev:35796].
+
+Thu Aug 7 06:31:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/process.rb (test_popen_fork): skip a test which is
+ freeze in FreeBSD.
+
+Thu Aug 7 06:05:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * config.guess: add powerpc-apple-haiku, i586-pc-haiku.
+ see [ruby-core:18110]
+
+Thu Aug 7 05:51:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * eval_intern.h: Add support to Haiku. see [ruby-core:18110]
+
+ * include/ruby/defines.h: ditto.
+
+ * configure.in: ditto.
+
+ * thread_pthread.c: ditto.
+
+ * io.c: ditto.
+
+ * lib/mkmf.rb: ditto.
+
+ * ext/socket/getaddrinfo.c: ditto.
+
+ * ext/socket/extconf.rb: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/addrinfo.h: ditto.
+
+ * ext/socket/getnameinfo.c: ditto.
+
+Thu Aug 7 05:43:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: mkdir enc/trans before build tables.
+
+Thu Aug 7 05:18:30 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/depend: enc/*.c is source but enc/trans/*.c is generated.
+
+Thu Aug 7 05:14:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regenc.c (code_to_mbc): raise RangeError Integer#chr
+ when more than 255 is given with single byte encoding.
+ [ruby-dev:35789]
+
+Thu Aug 7 05:06:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (run_final): runs finalizers with the object terminated.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): keeps finalized objects from
+ linking to freelist.
+
+Thu Aug 7 04:43:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/depend: for build in other than srcdir.
+
+Wed Aug 6 22:40:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (transcode_generate_node): code
+ argument removed.
+
+Wed Aug 6 21:25:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (chain_finalized_object): deletes finalizers to be invoked from
+ finalizer_table.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): warns when could not invoke
+ finalizers.
+
+Wed Aug 6 20:56:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/depend: transcode table generation depends on
+ tool/transcode-tblgen.rb.
+
+Wed Aug 6 20:48:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): self-referencing finalizers
+ cannot be invoked. [ruby-dev:35681]
+
+Wed Aug 6 20:44:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: distinguish UNDEF and INVALID.
+ [ruby-dev:35709]
+
+ * transcode.c (transcode_loop): don't need rb_enc_mbclen now.
+
+Wed Aug 6 14:40:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (transdb.h): requires transcoders.
+
+ * enc/depend (srcs): target for transcoders.
+
+Wed Aug 6 14:04:08 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: replace not only $(<:...) but also $<.
+
+Wed Aug 6 13:54:30 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): export BASERUBY.
+
+ * enc/depend: avoid GNU make'ism.
+
+Wed Aug 6 07:59:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ActionMap#eql?): use == to compare @map.
+
+Wed Aug 6 07:45:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: show generating tables in verbose mode.
+ (transcode_generate_node): call ActionMap#generate_node with showing
+ table name.
+
+ * enc/trans/utf_16_32.erb.c: use transcode_generate_node.
+
+Wed Aug 6 06:55:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): propagates fatal error and system
+ exit to the main thread.
+
+Wed Aug 6 05:31:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_to_encoding_index, rb_to_encoding): check if the name
+ is ascii compatible as well as Encoding.find.
+
+ * transcode.c (str_encode): no need to duplicate first.
+
+Wed Aug 6 05:08:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): reset to real class.
+
+ * file.c (rb_find_file_ext, rb_find_file): ditto.
+
+ * io.c (io_reopen): ditto.
+
+Wed Aug 6 03:56:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (transcodes), tool/build-transcode: generates transcode
+ sources.
+
+ * enc/trans/{japanese,korean,single_byte,utf_16_32}.c: to be
+ autogenerated now.
+
+ * enc/depend: added rules for .c from .erb.c.
+
+Tue Aug 5 20:46:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/build-transcode: new file.
+
+ * tool/transcode-tblgen.rb: new file.
+
+ * enc/trans/make_transdb.rb: exclude *.erb.c.
+
+ * enc/depend: exclude *.erb.c.
+
+ * enc/trans/utf_16_32.erb.c: new file.
+
+ * enc/trans/single_byte.erb.c: new file.
+
+ * enc/trans/japanese.erb.c: new file.
+
+ * enc/trans/korean.erb.c: new file.
+
+ * enc/trans/iso-8859-2-tbl.rb: new file.
+
+ * enc/trans/iso-8859-3-tbl.rb: new file.
+
+ * enc/trans/iso-8859-4-tbl.rb: new file.
+
+ * enc/trans/iso-8859-5-tbl.rb: new file.
+
+ * enc/trans/iso-8859-6-tbl.rb: new file.
+
+ * enc/trans/iso-8859-7-tbl.rb: new file.
+
+ * enc/trans/iso-8859-8-tbl.rb: new file.
+
+ * enc/trans/iso-8859-9-tbl.rb: new file.
+
+ * enc/trans/iso-8859-10-tbl.rb: new file.
+
+ * enc/trans/iso-8859-11-tbl.rb: new file.
+
+ * enc/trans/iso-8859-13-tbl.rb: new file.
+
+ * enc/trans/iso-8859-14-tbl.rb: new file.
+
+ * enc/trans/iso-8859-15-tbl.rb: new file.
+
+ * enc/trans/eucjp-tbl.rb: new file.
+
+ * enc/trans/sjis-tbl.rb: new file.
+
+ * enc/trans/euckr-tbl.rb: new file.
+
+ * enc/trans/utf_16_32.c: regenerated.
+
+ * enc/trans/single_byte.c: regenerated.
+
+ * enc/trans/japanese.c: regenerated.
+
+ * enc/trans/korean.c: regenerated.
+
+ [ruby-dev:35730]
+
+Tue Aug 5 18:02:53 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/io/nonblock/test_flush.rb (TestIONonblock#test_flush):
+ rescue some exceptions. [ruby-dev:35638]
+
+Tue Aug 5 16:40:06 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (chdir): handle 5xx errors correctly.
+ fixed [ruby-core:18057].
+
+Tue Aug 5 16:38:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h, bcc32/Makefile.sub (config.h): bcc 5.8 has
+ stdint.h.
+
+Tue Aug 5 16:13:05 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (disconnect): do not refer to SSL::SSLSocket for
+ environments without OpenSSL. fixed [ruby-dev:35755].
+
+Tue Aug 5 14:19:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_mode): generalized st_mode mask.
+
+Tue Aug 5 12:43:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (retry_sendfile, retry_read): ENOSYS and EWOULDBLOCK are not
+ defined on every platforms.
+
+Tue Aug 5 12:34:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode_data.h (TRANSCODE_ERROR): common transcode failure
+ exception, would be changed later.
+
+ * enc/trans/japanese.c (UNSUPPORTED_MODE): unsupported mode transition
+ exception.
+
+Tue Aug 5 03:29:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): respect overridden <=> for String and
+ Fixnum. [ruby-core:17708]
+
+ * include/ruby/node.h (NOEX_BASIC): basic definition method flag.
+
+ * include/ruby/intern.h, vm_method.c (rb_method_basic_definition_p):
+ new function to check if the method is not redefined after the
+ initialization.
+
+ * vm_method.c (rb_obj_respond_to): use rb_method_basic_definition_p.
+
+Mon Aug 4 20:39:06 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Makefile.in (update-rubyspec): renamed the rubyspec directory
+ "spec". Changed directory structure.
+
+ * Makefile.in (test-rubyspec): ditto.
+
+ * spec/README: described the structure of "spec" directory.
+
+ * spec/default.mspec: configured for Matz's Ruby Implementation.
+
+Mon Aug 4 19:21:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_tmp_new): added.
+
+ * vm_eval.c (vm_call_super): fixed typo, and get rid of too large
+ alloca. [ruby-core:17922]
+
+Mon Aug 4 16:48:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (deferred_nodes, compstmt, arg, fixup_nodes, range_op): fix
+ up fixnum range literal in conditional as automagical line number
+ comparison. [ruby-core:12124], [ruby-dev:35731]
+
+Mon Aug 4 14:41:25 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP::rcptto): fix a typo. a patch from
+ Masao Takaku <masao at nii.ac.jp>
+ fix [ruby-dev:35489].
+
+Mon Aug 4 14:08:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (dump_ensure), process.c (run_exec_dup2),
+ string.c (rb_str_replace), transcode.c (transcode_dispatch): fixed
+ memory leaks. based on patches from shinichiro.h <shinichiro.hamaji
+ AT gmail.com> at [ruby-dev:35751].
+
+Sun Aug 3 19:32:52 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (hash2named_arg): refactoring.
+
+ * ext/win32ole/win32ole.c (ole_invoke, fole_respond_to, ev_on_event,
+ fev_off_event): accepts Symbol argument.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+Sun Aug 3 10:41:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_shared_replace): fixed memory leak. a patch from
+ shinichiro.h <shinichiro.hamaji AT gmail.com> at [ruby-dev:35742]
+
+Sat Aug 2 22:55:41 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_err_in_callback.rb: remove temporary files.
+ some refactoring.
+
+Sat Aug 2 15:51:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yylex): 8 and 9 in octal integer should cause compile
+ error. [ruby-dev:35729]
+
+Sat Aug 2 01:06:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c: add U+FF5E to EUC-JP.
+ [ruby-dev:35720] [ruby-dev:35722]
+
+Fri Aug 1 23:49:44 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: checked to have clear_history in
+ readline library.
+ * ext/readline/readline.c (hist_get, hist_each, Init_readline):
+ The offset specified for the argument of history_get() might be
+ different in GNU Readline and libedit. If use libedit, it was
+ corrected that the computational method of the offset specified
+ for the argument of history_get() when the Readline module was
+ initialized was decided.
+ (hist_get, hist_set): If use libedit, accesses first an input
+ content in history when specifies the negative offset for the
+ argument of history_get() or replace_history_entry(). Then
+ checks the offset is negative in ruby.
+ (rb_remove_history): When compiling, it corrects it to warning
+ when libedit is used.
+ (hist_clear, Init_readline): added Readline::HISTORY.clear
+ method. [ruby-dev:35551]
+ * test/readline/test_readline_history.rb: added unit test for
+ Readline::HISTORY.
+
+Fri Aug 1 23:26:45 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (transcode_loop): undefined character is replaced with
+ only one character. [ruby-dev:35709]
+
+Fri Aug 1 23:26:22 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ Merged r16430(akr), r16431(akr), r16433(akr), r16469(nobu), and
+ r17874(akr) from ruby_1_8.
+
+ * Makefile.in (update-rubyspec): added
+
+ * Makefile.in (test-rubyspec): added
+
+Fri Aug 1 23:16:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c: add support for CP51932,
+
+Fri Aug 1 22:59:40 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c: add U+FF0C,
+
+Fri Aug 1 21:49:41 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/sdbm/test_sdbm.rb: add some tests.
+
+Fri Aug 1 21:36:00 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (allocate_heaps, assign_heap_slot, rb_newobj_from_heap):
+ reset during_gc before raising NoMemoryError.
+
+Fri Aug 1 21:29:56 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (Init_BareVM): check failure of malloc().
+
+Fri Aug 1 20:55:27 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c (to_SHIFT_JIS_EF_BF_offsets): add U+FFF3,
+ U+FFF4, U+FFF5.
+
+ * enc/trans/japanese.c (to_SHIFT_JIS_EF_BF_infos): ditto.
+
+ * enc/trans/japanese.c (to_EUC_JP_EF_BF_infos): added.
+
+ * enc/trans/japanese.c (to_EUC_JP_EF_BF): added.
+
+ * enc/trans/japanese.c (to_EUC_JP_EF_infos): change size.
+ [ruby-dev:35714]
+
+Fri Aug 1 18:27:15 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * parse.y (parser_yylex): removed an useless conditional, and magic
+ comment are ignored unless at the first of line.
+
+ * test/ruby/test_m17n.rb (test_magic_comment_vim): added.
+
+ * test/ruby/test_m17n.rb (test_magic_comment_at_various_positions):
+ added.
+
+Fri Aug 1 14:54:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_seekdir): no need to rewind to seek forward.
+
+Fri Aug 1 05:31:08 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (output_replacement_character):
+ rename from _get_replacement_character.
+
+ * transcode.c (output_replacement_character):
+ fix replacement on UTF-32{BE,LE}. [ruby-dev:35705]
+
+ * transcode.c (transcode_loop): ditto.
+
+ * test/ruby/test_transcode.rb (test_invalid_replace):
+ add for above.
+
+Fri Aug 1 01:01:49 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (rb_proc_call_with_block): reduce comparison.
+
+Thu Jul 31 22:17:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpMult): prevent memory leak.
+
+Thu Jul 31 20:05:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_transcode.rb (test_unicode_public_review_issue_121):
+ fix option1 and 3.
+
+Thu Jul 31 19:54:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (get_replacement_character): use U+FFFD as replacement
+ character when convert to Unicode.
+
+ * test/ruby/test_transcode.rb (test_unicode_public_review_issue_121):
+ rename from test_public_review_issue_121.
+
+ * test/ruby/test_transcode.rb (test_unicode_public_review_issue_121):
+ enable option2.
+
+Thu Jul 31 17:00:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (get_replacement_character): fix: invalid byte sequence
+ is always replaced "\x00?".
+
+Thu Jul 31 16:37:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rubygems/test_gem_ext_configure_builder.rb
+ (test_self_build_fail): remove extra newline. [ruby-dev:35704]
+
+Thu Jul 31 15:11:11 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: added test_shift_jis
+ (contributed by Yoshihiro Kambayashi) and
+ test_public_review_issue_121
+ (see http://www.unicode.org/review/pr-121.html)
+
+Thu Jul 31 13:18:30 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * include/ruby/ruby.h (struct RString): size of ary must be
+ RSTRING_EMBED_LEN_MAX + 1.
+
+Thu Jul 31 12:23:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_unpack): upper half of hexdigits has never been used.
+
+Thu Jul 31 11:31:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/syck.h (ASSERT): fix typo at r18176.
+
+ * ext/syck/rubyext.c (rb_syck_compile): expression in ASSERT() has no
+ effect unless debug mode.
+
+Thu Jul 31 10:51:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (ruby_iseq_disasm_insn): suppress warnings on platforms which
+ int size differs from pointer size.
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_get_asn1type): ditto
+
+ * ext/syck/rubyext.c (rb_syck_err_handler),
+ (syck_default_error_handler): ditto.
+
+Thu Jul 31 02:21:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/syck/rubyext.c (rb_syck_compile): remove meaningless branch
+ that misleads into thinking that the variable sav may be
+ uninitialized.
+
+Thu Jul 31 01:25:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_mutex_unlock_all): mutex is no longer a ruby object.
+
+Thu Jul 31 01:18:07 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (magic_comment_encoding): remove meaningless null check.
+
+Thu Jul 31 01:09:28 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpIsRoundMode): fix tautology
+ condition.
+
+Thu Jul 31 00:58:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_unpack): reduced static variables.
+
+Thu Jul 31 00:10:20 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (rb_proc_call_with_block): prevent null reference.
+
+Wed Jul 30 22:19:13 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (vtable_free): remove meaningless null check.
+
+Wed Jul 30 22:08:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * dir.c (struct dir_data): change path field char * to VALUE.
+ (mark_dir): new function for mark path field.
+ (free_dir): follow the path field change.
+ (dir_s_alloc): ditto.
+ (dir_initialize): ditto.
+ (dir_s_open): ditto.
+ (dir_inspect): ditto.
+ (dir_path): return (duplicate of) the path field to preserve
+ encoding. [ruby-dev:35685]
+
+Wed Jul 30 22:06:56 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (sym_inspect): remove dead code.
+
+Wed Jul 30 21:32:52 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ChangeLog: fix wrong method name and add reference.
+
+Wed Jul 30 21:30:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regparse.c (name_add): fix memory leak.
+
+Wed Jul 30 21:08:06 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/syck/syck.c (syck_free_parser): fix memory leak by
+ YAML::Syck.compile.
+
+ * regparse.c (parse_exp): fix memory leak at Regexp.new("x{1,1}").
+
+Wed Jul 30 17:48:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_select): recalc the rest of timeout for each
+ iterations. [ruby-core:18015]
+
+Tue Jul 29 23:37:37 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (io_ungetc): raise NotImplementedError when ungetc is called
+ against dummy encoding IO. [ruby-dev:35686]
+
+ * io.c (rb_io_getline_1): ditto when gets with delimiter is called.
+
+ * io.c (io_getc): ditto when getc is called.
+
+ * test/ruby/test_io_m17n.rb (test_terminator_stateful_conversion,
+ test_getc_stateful_conversion, test_ungetc_stateful_conversion):
+ these tests should raise NotImplementedError.
+
+Tue Jul 29 22:55:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_io.rb (pipe): run reader thread and writer thread.
+
+Tue Jul 29 21:38:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): fix typo.
+
+Tue Jul 29 21:35:59 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb (test_passwd): age field may be string under
+ some environments.
+
+Tue Jul 29 17:54:35 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (char_casecmp): fix: return 0 if either of characters is NUL.
+
+Tue Jul 29 13:17:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/etc/test_etc.rb (test_getpwuid): fix for users whose uid is
+ shared.
+
+Tue Jul 29 05:37:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext, rb_find_file): explicit relative path
+ which starts with "./" or "../" should be searched from cwd
+ instead of load path. [ruby-dev:35673]
+
+Tue Jul 29 02:39:46 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * math.c (math_atanh): raise EDOM on FreeBSD when atanh(1).
+
+ * math.c (math_log): ditto.
+
+ * math.c (math_log2): ditto.
+
+ * math.c (math_log10): ditto.
+
+ * test/ruby/test_math.rb: test for above.
+
+Tue Jul 29 01:41:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * dir.c (struct dir_data): intenc field removed.
+ (dir_s_alloc): intenc initialization removed.
+ (dir_initialize): :internal_encoding option removed. dirname code
+ conversion removed.
+ (dir_enc_str): code conversion removed.
+ [ruby-dev:35661]
+
+Mon Jul 28 21:32:17 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/: use PNG instead of zlib as binary data.
+
+Mon Jul 28 21:24:33 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.[ch] (cond_every_entry, rb_thread_cond_struct): reverted
+ r18239 because r18245 made the changes unnecessary.
+
+ * thread.c (rb_mutex_struct): define after including thread_{pthread,
+ win32}.c.
+
+Mon Jul 28 21:00:10 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_require.rb (test_require_too_long_filename):
+ Kernel#require does not use dln_find_file_r (at r18242).
+
+Mon Jul 28 20:17:03 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.h: move the definition of struct rb_mutex_struct.
+
+ * thread.c: ditto.
+
+Mon Jul 28 18:58:46 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (mutex_unlock): fix typo.
+
+Mon Jul 28 18:15:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext, rb_find_file): not to split load path with
+ path separator. [ruby-Bugs-21356]
+
+Mon Jul 28 18:14:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (overlapped_socket_io, fcntl, rb_w32_close): must not
+ pass a pointer to int which is smaller than st_data_t on mswin64.
+
+Mon Jul 28 16:49:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (CreateChild, overlapped_socket_io): suppress
+ warnings.
+
+Mon Jul 28 16:06:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (MAXPATHLEN): define before use.
+
+Mon Jul 28 16:01:12 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.[ch] (cond_every_entry, rb_thread_cond_struct): moved
+ the definitions from .c to .h because rb_thread_cond_struct is used
+ in vm_core.h.
+
+Mon Jul 28 14:29:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (load_lib): use dln_find_file_r instead of dln_find_file.
+
+Mon Jul 28 00:18:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.h, thread.c: It is now prohibited to use Data_Get_Struct in
+ *_free against an object that is going to be free'ed. So, change type
+ of thread_t#keeping_mutexes from VALUE to mutex_t.
+
+ * vm.c: remove mark to keeping_mutexes.
+
+Sun Jul 27 23:32:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/openssl/test_ssl.rb (server_loop): rescue Errno::EINVAL and
+ Errno::ECONNABORTED.
+
+Sun Jul 27 22:11:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * bootstraptests/method.rb: increase RLIMIT_STACK size to 4M+8Kbytes
+ because FreeBSD fails this less than that.
+
+Sun Jul 27 21:45:59 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_mark_children, obj_free): T_DEFERRED should not be appear.
+
+ * gc.c (gc_sweep, finalize_list): fix to decrement heap_slot#limit
+ after executing finalizer.
+
+Sun Jul 27 14:48:37 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: add a type T_DEFERRED.
+
+ * gc.c: fix deferred finalizer system. finalize processes of
+ T_DATA and T_FILE are executed after gc process.
+ And fix to use BUILTIN_TYPE() instead of seeing flag.
+
+ * thread.c, vm_core.h: add RUBY_VM_SET_FINALIZER_INTERRUPT()
+ and check interrupt_flag at rb_thread_execute_interrupts().
+
+ * thread.c (mutex_mark): fix to mark next_mutex.
+
+ * vm.c (rb_thread_mark): fix to mark keeping_mutexes.
+
+Sun Jul 27 09:15:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.h (dln_find_exe, dln_find_file): deprecated, use reentrant
+ versions instead.
+
+Sun Jul 27 09:02:32 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/tuplespace.rb: merged from 1.8.
+
+ * test/rinda/test_rinda.rb: merged from 1.8.
+
+Sat Jul 26 22:45:18 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * sample/exyacc.rb: fixed NoMethodError(Kernel#sub!).
+ replaced use of special variables with explicit IO
+ operations.
+
+Sat Jul 26 21:17:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (Init_win32ole): add
+ WIN32OLE_EVENT#handler=, WIN32OLE_EVENT#handler
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+Sat Jul 26 07:44:14 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (add_event_call_back): remove unused
+ variable.
+
+Fri Jul 25 23:48:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_sweep, obj_free, run_final): defer finalizers of IO and
+ Data. [ruby-dev:35578]
+
+Fri Jul 25 23:35:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils#split_header_value):
+ reduce backtrack. based on a fix by Christian Neukirchen
+ <chneukirchen AT gmail.com>.
+
+Fri Jul 25 21:55:38 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/enc/test_koi8.rb: move from test/ruby/test_koi8.rb.
+
+Fri Jul 25 21:09:32 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke, add_event_callback,
+ rescue_callback): refactoring.
+
+Fri Jul 25 20:52:44 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/err_in_callback.rb: add test of raising
+ exception in WIN32OLE_EVENT callback.
+
+ * test/win32ole/test_err_in_callback.rb: ditto.
+
+Fri Jul 25 20:43:57 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (Init_win32ole): add
+ WIN32OLE_EVENT#off_event.
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+ * test/win32ole/test_win32ole_event.rb: some refactoring.
+
+Fri Jul 25 19:50:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regint.c (xmalloc, xrealloc, xfree): not to use ruby managed memory.
+
+Fri Jul 25 15:52:40 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_invoke_proc): skip setting safe_level if
+ it from bmethod. This change makes test/ruby/test_proc.rb pass.
+
+Fri Jul 25 10:00:00 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: refactoring/cleanup of
+ test_iso_2022_jp(_1)
+
+Fri Jul 25 04:12:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_convert): output of mime encode is US-ASCII.
+ [ruby-list:45257]
+
+Fri Jul 25 02:43:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * sample/coverage.rb: move from lib/coverage.rb because this remains in
+ an early phase of development.
+
+Fri Jul 25 00:10:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext, rb_find_file): converts Windows style path
+ to Cygwin path. [ruby-dev:35647]
+
+Thu Jul 24 16:30:21 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (exit_handler): use st_free_table() to free socklist.
+
+ * win32/win32.c (rb_w32_pipe_exec, rb_w32_accept, rb_w32_socket,
+ rb_w32_socketpair): should check and release fd and sockets/handles
+ if an error occurs in rb_w32_open_osfhandle().
+
+Thu Jul 24 16:05:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (overlapped_socket_io): avoid warnings.
+
+ * thread_win32.c (ubf_handle): refactoring.
+
+Thu Jul 24 07:01:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c: got rid of improper casts.
+
+Wed Jul 23 23:19:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/socket/test_tcp.rb (test_recvfrom): replace an irrelevant test
+ for old behavior.
+
+Wed Jul 23 21:38:16 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_marshal.rb: suppress warning during test.
+
+Wed Jul 23 21:35:53 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_dir.rb: suppress warning during test.
+
+Wed Jul 23 18:27:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/{stubs,tcltklib}.c, ext/tk/tkutil/tkutil.c: fix warnings
+ about constness and signedness.
+
+Wed Jul 23 17:04:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/openssl_missing.h (d2i_of_void): define for older
+ versions. [ruby-dev:35637]
+
+Wed Jul 23 13:53:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/curses/extconf.rb: use try_static_assert.
+
+Wed Jul 23 10:06:19 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/zlib/test_zlib.rb (TestZlibDeflate#test_params): suppress a
+ finalizer warning.
+
+Wed Jul 23 06:25:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck: suppress warnings more.
+
+Wed Jul 23 03:19:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (struct input_code.name, input_codename):
+ constified.
+
+Wed Jul 23 03:02:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck: suppress warnings.
+
+Wed Jul 23 00:34:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl: suppress warnings.
+
+Tue Jul 22 23:01:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/syck/rubyext.c, ext/syck/yaml2byte.c, ext/syck/emitter.c,
+ ext/syck/syck.c, ext/syck/handler.c, ext/syck/syck.h: suppress GCC
+ warning.
+
+Tue Jul 22 20:42:24 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): BigDecimal#<=> should
+ return nil if an argument can't be coerced into BigDecimal.
+
+ * ext/bigdecimal/bigdecimal.h, ext/bigdecimal/bigdecimal.c
+ (VpIsNegDoubleZero, VpItoV): comment out unused functions.
+
+Tue Jul 22 20:33:54 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rdoc/test_rdoc_parser_ruby.rb (teardown): close tempfile.
+
+Tue Jul 22 19:38:38 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: added two comments
+
+Tue Jul 22 18:08:34 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja: mention about FIX2LONG and NUM2LONG.
+ see [ruby-dev:35197]
+
+Tue Jul 22 17:53:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (insn_data_to_s_detail), file.c (rb_stat_inspect),
+ iseq.c (ruby_iseq_disasm_insn, ruby_iseq_disasm),
+ process.c (pst_message), re.c (match_inspect): use rb_str_catf.
+
+ * dir.c (dir_inspect), iseq.c (iseq_inspect, insn_operand_intern): use
+ rb_sprintf.
+
+ * error.c (rb_name_error, rb_raise, rb_loaderror, rb_fatal): use
+ rb_vsprintf.
+
+Tue Jul 22 17:20:25 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_func): new function to get API's address which
+ is often used and not supported on all Windows.
+
+ * win32/win32.c (overlapped_socket_io): shouldn't use overlapped I/O if
+ CancelIo() is not supported.
+
+Tue Jul 22 16:47:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h, sprintf.c (rb_str_catf, rb_str_vcatf): new
+ functions. [ruby-dev:35597]
+
+ * string.c (rb_str_capacity): new function to return the capacity.
+
+Tue Jul 22 16:08:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (connect_blocking, socks_connect_blocking,
+ ruby_connect): cast.
+
+Tue Jul 22 11:05:08 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_dir.rb: use realpath of tmpdir. [ruby-dev:35481]
+
+ * test/ruby/test_process.rb: ditto.
+
+Tue Jul 22 09:51:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el: fix here-doc strings with inner quotes. patches
+ by Nathan Weizenbaum <nex342 AT gmail.com> from [ruby-core:17615]
+ through [ruby-core:17910].
+
+Tue Jul 22 04:26:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_str_buf_new2): optimization for literals.
+
+ * string.c (str_buf_cat): returns VALUE.
+
+Tue Jul 22 03:34:01 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Update to RDoc 2.1.0 r112.
+
+Tue Jul 22 02:51:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_str_buf_cat2, rb_str_cat2): optimization
+ for literals.
+
+Tue Jul 22 02:50:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (1.5 Manipulating Ruby data): fix the
+ prototype of rb_vsprintf, and added rb_str_cat2. [ruby-dev:35622]
+
+Mon Jul 21 17:15:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_filesystem_encoding): use locale encoding on Unix.
+ [ruby-dev:35617]
+
+Mon Jul 21 15:29:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (struct __sbuf, FILE): use size_t.
+
+ * sprintf.c (ruby__sfvwrite): ditto.
+
+Mon Jul 21 13:55:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (1.5 Manipulating Ruby data): mentioned
+ rb_sprintf and rb_vsprintf. [ruby-dev:35611]
+
+Mon Jul 21 10:25:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (prepare_getline_args): check if rs is a string when non-nil
+ lim is given. [ruby-dev:35610]
+
+Mon Jul 21 04:55:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * dir.c (dir_initialize): use rb_convert_type instead of
+ rb_check_convert_type to prevent SEGV by Dir.new(".", true).
+ (dir_initialize): use FilePathValue before rb_enc_get(dirname) to
+ prevent SEGV by Dir.new(0).
+
+Mon Jul 21 04:42:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_s_union): useless rb_enc_get call removed to prevent
+ SEGV by Regexp.union("", nil).
+
+Sun Jul 20 22:50:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): NODE_POSTEXE should set each end
+ procs only once. [ruby-dev:35596]
+
+Sun Jul 20 16:00:37 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): use rb_protect
+ instead of rb_rescue2. [ruby-dev:35595]
+
+Sun Jul 20 01:23:24 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.
+
+ * ext/win32ole/win32ole.c (EVENTSINK_GetIDsOfNames): return
+ ITypeInfo::GetIDsOfNames().
+
+Sat Jul 19 09:31:35 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.
+
+ * ext/win32ole/win32ole.c: add document of inspect methods.
+
+Sat Jul 19 06:08:43 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Import RDoc r104. Various make test-all fixes.
+
+Sat Jul 19 00:27:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (check_uint, rb_num2uint, rb_fix2uint): fixed wrong check
+ about 64bit positive value.
+
+Fri Jul 18 23:23:37 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): avoid cfp consistency
+ error when exception raised in event callback.
+
+Fri Jul 18 14:52:14 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (socklist): table for registering socket options
+ (currently only O_NONBLOCK).
+
+ * win32/win32.c (StartSockets, exit_handler): alloc/free socklist.
+
+ * win32/win32.c (is_socket): use socklist.
+
+ * win32/win32.c (rb_w32_accept, rb_w32_socket, rb_w32_socketpair):
+ register new socket to socklist.
+
+ * win32/win32.c (rb_w32_close): remove closing socket from socklist.
+
+ * win32/win32.c (fcntl): register socket options.
+
+ * win32/win32.c (overlapped_socket_io): send to/recv from socket with
+ overlapped operation if the socket is not nonblocking mode.
+ [experimental]
+
+ * win32/win32.c (rb_w32_send, rb_w32_sendto, rb_w32_recv,
+ rb_w32_recvfrom): use overlapped_socket_io().
+
+ * win32/win32.c (open_ifs_socket): set overlapped mode. this is the
+ default mode of winsock's socket(), so lacking it is an old bug.
+
+Fri Jul 18 09:44:30 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/*: Import RDoc r101.
+
+Thu Jul 17 23:45:55 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rdoc/test_rdoc_c_parser.rb (teardown): close tempfile.
+
+Thu Jul 17 21:08:49 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb (test_getpriority, test_setpriority): use
+ PRIO_PROCESS instead of PRIO_USER.
+
+Thu Jul 17 20:41:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * pack.c (pack_unpack): fix v and V with big endian.
+ [1].pack("V").unpack("V") was [4294967296].
+
+Thu Jul 17 20:35:03 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * pack.c (pack_pack): fix i! with big endian. [1].pack("i!") was
+ "\0\0\0\0".
+
+Thu Jul 17 16:48:40 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): select() for connect() has
+ mean only when the socket is non-blocking.
+
+Thu Jul 17 10:55:24 2008 Eric Hodel <drbrain@segment7.net>
+
+ * mkconfig.rb: Simplify expression for RDoc.
+
+Thu Jul 17 10:21:15 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (check_uint, rb_num2uint, rb_fix2uint): strict check.
+ fixed [ruby-dev:33683]
+
+Thu Jul 17 04:19:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): wake up joining threads.
+
+ * thread.c (sleep_forever, sleep_timeval): return when interrupted.
+ [ruby-dev:35542]
+
+ * thread.c (timer_thread_function): restore main thread status.
+ [ruby-core:17270]
+
+Thu Jul 17 01:27:38 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (appendline): remove invalid access.
+
+Wed Jul 16 18:04:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (signal_exec, trap_handler): trap accepts a string as
+ command. [ruby-dev:35533]
+
+Wed Jul 16 00:04:30 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err): new
+ method.
+
+ * test/ruby/test_argf.rb: use assert_in_out_err instead of
+ EnvUtil.rubyexec.
+
+ * test/ruby/test_module.rb: ditto.
+
+ * test/ruby/test_require.rb: ditto.
+
+ * test/ruby/test_objectspace.rb: ditto.
+
+ * test/ruby/test_object.rb: ditto.
+
+ * test/ruby/test_string.rb: ditto.
+
+ * test/ruby/test_method.rb: ditto.
+
+ * test/ruby/test_variable.rb: ditto.
+
+ * test/ruby/test_io.rb: ditto.
+
+ * test/ruby/test_rubyoptions.rb: ditto.
+
+ * test/ruby/test_exception.rb: ditto.
+
+ * test/ruby/test_class.rb: ditto.
+
+ * test/ruby/test_thread.rb: ditto.
+
+Tue Jul 15 22:34:03 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (ruby_version): follow changes in configure.in.
+
+Tue Jul 15 21:58:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/{,tkutil/}extconf.rb: ruby/ruby.h no longer needs to be
+ checked.
+
+ * ext/tk/{tcltklib.c,tkutil/tkutil.c}: check macros for each headers.
+
+Tue Jul 15 21:45:41 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/tk/extconf.rb, ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: Do
+ not test ruby/ruby.h, which makes OS X's gcc pick the wrong
+ header file from Ruby.framework.
+
+Tue Jul 15 21:31:26 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (--with-ruby-version): Add a new option to specify
+ the ruby version string for version specific directories.
+ [ruby-dev:35490]
+
+ * mkconfig.rb: Definition of ruby_version is now determined by the
+ configure script.
+
+Tue Jul 15 18:14:20 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect, s_accept): check before readable/
+ writable by select() instead of wrapping in blocking region.
+
+ * ext/socket/socket.c (bsock_send, s_recvfrom, udp_send, unix_send_io,
+ unix_recv_io): should check readable/writable before calling blocking
+ functions.
+ see [ruby-dev:35446]
+
+Tue Jul 15 18:12:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (ubf_handle): cancel blocking IO if it can (only
+ Vista). see [ruby-dev:35446]
+
+ * win32/win32.c (errmap): add ERROR_OPERATION_ABORTED as EINTR.
+
+Mon Jul 14 20:35:21 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_event.rb (teardown): fix typo.
+
+Mon Jul 14 18:47:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_loop): constified.
+
+ * transcode.c (str_transcode): rb_str_set_len() sets a delimiter.
+
+ * transcode_data.h (rb_transcoder): constified preprocessor and
+ postprocessor input.
+
+ * enc/trans/japanese.c: ditto.
+
+Sun Jul 13 05:37:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX, PRI_SIZE_PREFIX): typo.
+
+ * {bcc32,win32}/Makefile.sub: (SIZEOF_SIZE_T, SIZEOF_PTRDIFF_T): added.
+
+Sat Jul 12 23:54:55 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (LIBRUBY_DLDFLAGS): import library which created
+ with DLL is broken. save import library which created by lib.exe and
+ install it.
+ fixed the problem mentioned at the postscript of [ruby-dev:35448]
+
+Sat Jul 12 23:24:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: use PRIuSIZE.
+
+Sat Jul 12 22:41:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX, PRI_SIZE_PREFIX): fixed typo.
+
+Sat Jul 12 22:30:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (HAVE_RUBY_RUBY_H): defines macros so that
+ extconf.rb do not need to check if headers exist under separated
+ directory. [ruby-dev:35437]
+
+ * include/{ruby,rubyio,rubysig}.h, include/ruby/intern.h: use
+ "ruby/..." instead of <ruby/...>.
+
+Sat Jul 12 22:17:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (sizeof ptrdiff_t): check for size of ptrdiff_t.
+
+ * include/ruby/ruby.h (PRI?PTRDIFF, PRI?SIZE): printf conversion
+ specifiers for ptrdiff_t and size_t/ssize_t.
+
+ * insns.def (leave), marshal.c (long_toobig), transcode.c
+ (str_transcode), vm_dump.c (control_frame_dump, stack_dump_each),
+ (debug_print_register, debug_print_pre): t and z length modifiers
+ are C99.
+
+Sat Jul 12 16:02:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client#do_rpc): requires
+ webrick/cookie. [ ruby-Bugs-21139 ]
+
+Sat Jul 12 09:25:07 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_event.rb: add test
+ for WIN32OLE_EVENT#on_event_with_outargs
+
+ * test/win32ole/test_win32ole_event.rb(teardown): calling
+ WIN32OLE_EVENT.message_loop
+
+Sat Jul 12 01:54:13 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_select): shouldn't pass non-socket handle to
+ original select().
+
+Fri Jul 11 23:05:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/zlib/test_zlib.rb: add a test for Zlib::Deflate#params.
+
+Fri Jul 11 22:58:28 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/zlib/zlib.c (rb_deflate_params): flush before deflateParams.
+ [ruby-core:17675]
+
+Fri Jul 11 22:09:01 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.rb, win32/Makefile.sub (PLATFORM): use $(PLATFORM)
+ instead of $(OS) because ENV["OS"] is used in test-all (drb).
+
+Fri Jul 11 20:51:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_wait_readable, rb_io_wait_writable): check if the file
+ descriptor is closed.
+
+ * thread.c (rb_thread_wait_fd_rw): ditto.
+
+Fri Jul 11 16:16:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_accept, rb_w32_socket, rb_w32_socketpair):
+ prohibit inheritance of sockets, too. [experimental]
+
+Fri Jul 11 14:39:49 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): the measures for Vista is no longer
+ unnecessary.
+
+Fri Jul 11 06:16:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (process.o): depends on util.h.
+
+Fri Jul 11 05:07:46 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (pipe): prohibit inheritance.
+ fixed: [ruby-dev:35421]
+
+Fri Jul 11 00:56:46 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (thread_create_core): fix GC problem.
+ [ruby-core:17669]
+
+Thu Jul 10 22:06:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pstore.rb (PStore#transaction): return the result from the
+ block. [ruby-core:17718]
+
+Thu Jul 10 21:15:49 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_typelib.rb: add some illegal argument
+ test.
+
+ * test/win32ole/test_win32ole_type.rb: ditto.
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+ * test/win32ole/test_win32ole_param.rb: ditto.
+
+ * test/win32ole/test_win32ole_method.rb: ditto.
+
+Thu Jul 10 19:38:35 2008 wanabe <s.wanabe@gmail.com>
+
+ * test/ruby/envutil.rb (assert_normal_exit): r17993 revert.
+
+Thu Jul 10 18:29:41 2008 wanabe <s.wanabe@gmail.com>
+
+ * test/ruby/envutil.rb (assert_normal_exit): finish writing script
+ before spawn("ruby") to avoid blocking in win32.
+
+Thu Jul 10 17:20:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (insert): follow recent changes of globbing.
+
+Thu Jul 10 14:09:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/coverage/coverage.c (rb_coverage_start): return nil.
+
+Thu Jul 10 12:41:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_wait_for): fixed variable name.
+
+Thu Jul 10 12:09:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_thread_t), vm.c (rb_thread_mark), process.c
+ (rb_last_status_get, rb_last_status_set, rb_last_status_clear):
+ moved last_status from rb_vm_t. [ruby-dev:35414]
+
+ * vm.c (th_init2): initialize last_status with nil.
+
+Thu Jul 10 12:09:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_wait_for): wait until timed out only when
+ sleeping with timeout.
+
+Wed Jul 9 22:41:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (sleep_timeval): wait until timed out. [ruby-core:17270]
+
+Wed Jul 9 20:58:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * array.c (rb_ary_fill): don't raise even if length is negative.
+ [ruby-core:17483], [ruby-core:17661]
+
+Wed Jul 9 20:18:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_va_args_macro): check for __VA_ARGS__.
+
+ * thread.c (thread_debug): show source name and line if possible.
+
+ * thread_{pthread,win32}.c (rb_thread_create_timer_thread): needs more
+ stack for debug.
+
+Wed Jul 9 11:13:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/profiler.rb (Profiler__#print_profile): sort in the descending
+ order of cumulative time.
+
+Wed Jul 9 11:11:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (struct glob_args, rb_glob_caller, rb_glob2, push_pattern),
+ (glob_brace): make consistent prototypes.
+
+ * dir.c (push_glob): set enc in the caller of rb_glob_caller as well
+ as rb_glob2.
+
+Wed Jul 9 09:12:11 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (options): use input_endian.
+
+Wed Jul 9 01:38:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_succ): alphabets or numerics mutually enclosing
+ non-alphanumeric characters can carry up. e.g., "1.999".succ should
+ be "2.000".
+
+Wed Jul 9 00:12:31 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_set_coverages, rb_reset_coverages): enable and disable
+ coverage measurement.
+
+ * thread.c (rb_get_coverages): rename and move from vm.c.
+
+ * vm.c (rb_vm_get_coverages): ditto.
+
+ * iseq.c (prepare_iseq_build): ditto.
+
+ * thread.c (clear_coverage): ditto.
+
+ * parse.y (coverage): ditto.
+
+ * ext/coverage/coverage.c: use above functions, add new method
+ Coverage.start and fix rdoc .
+
+Tue Jul 8 23:02:35 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (find_default_source): bug fix when
+ OLE object does not have default source interface.
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+Tue Jul 8 22:56:23 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_enable_coverages): hide coverage array by setting 0 to
+ klass during measurement.
+
+ * parse.y (coverage, yycompile0): ditto.
+
+ * iseq.c (prepare_iseq_build): use rb_hash_lookup instead of
+ rb_hash_aref.
+
+ * thread.c (rb_coverage_result): restore klass of coverage array
+ and return it.
+
+ * thread.c (update_coverage): check whether its klass is 0.
+
+Tue Jul 8 22:28:25 2008 Koichi Sasada <ko1@atdot.net>
+
+ * lib/debug.rb, lib/profile.rb: fix to use RubyVM.
+
+ * lib/rdoc/parsers/parse_c.rb: ditto.
+
+Tue Jul 8 21:45:22 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (rb_vm_mark): mark the last element of special_exceptions.
+
+Tue Jul 8 19:55:40 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (find_default_source): try to
+ find COCLASS when WIN32OLE object is not COCLASS.
+
+ * test/win32ole/test_win32ole_event.rb: ditto
+
+Tue Jul 8 13:38:22 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.h: fix to skip inserting a trace insn.
+
+Tue Jul 8 11:41:17 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c: shouldn't use ruby object in globbing, because glob service
+ routines are called before initializing ruby on some platforms (ex.
+ windows).
+
+Tue Jul 8 10:08:40 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (Next): use rb_enc_mbclen. [ruby-dev:35390]
+
+Tue Jul 8 07:59:40 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (Next): use rb_enc_precise_mbclen.
+
+Tue Jul 8 02:27:23 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c: preserve encoding of strings in glob and fnmatch.
+
+ * include/ruby/ruby.h: related changes.
+
+Tue Jul 8 00:22:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_succ): limit carrying in an alphanumeric region if
+ exists. [ruby-dev:35094]
+
+Mon Jul 7 20:39:28 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(Init_win32ole): add
+ WIN32OLE_TYPE#source_ole_types, WIN32OLE_TYPE#default_ole_types,
+ WIN32OLE_TYPE#default_event_sources.
+
+ * test/win32ole/test_win32ole_type.rb: ditto.
+
+Mon Jul 7 19:45:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_dir.rb (test_chroot_nodir): add Errno::EPERM.
+
+Mon Jul 7 17:12:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ipaddr.rb (IPAddr#initialize): get rid of ArgumentError in
+ IPAddr#to_range. a patch from okkez <okkez000 AT gmail.com> in
+ [ruby-dev:35091].
+
+Mon Jul 7 01:24:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): fix for file name with spaces.
+ [ruby-talk:307404]
+
+Mon Jul 7 00:59:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): prior STACK_END_ADDRESS if
+ found. [ruby-core:17624]
+
+Sun Jul 6 23:48:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (bsock_send, s_recvfrom, ruby_connect, s_accept),
+ (udp_send, unix_send_io, unix_recv_io): blocking region support.
+
+Sun Jul 6 18:34:35 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_type.rb (test_initialize): add
+ more assertions.
+
+Sun Jul 6 10:12:21 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/test/unit/collector/objectspace.rb
+ (Test::Unit::Collector::ObjectSpace::NAME): fix a typo.
+
+Sun Jul 6 00:56:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (host_str): fix type mismatch in rb_raise
+ format and argument.
+ (port_str): ditto.
+ (unix_recv_io): ditto.
+ (sock_s_unpack_sockaddr_un): ditto.
+
+Sat Jul 5 23:42:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (NUM2INT): cast to int.
+ (FIX2INT): ditto.
+ (NUM2UINT): cast to unsigned int.
+ (FIX2UINT): ditto.
+
+Sat Jul 5 23:10:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_pipe): new function for handling EMFILE and ENFILE
+ error of pipe().
+ (UPDATE_MAXFD_PIPE): removed.
+ (pipe_open): use rb_pipe.
+ (rb_io_s_pipe): ditto.
+
+ * process.c (pipe_nocrash): use rb_pipe.
+
+ * include/ruby/intern.h (rb_pipe): declared.
+
+Sat Jul 5 22:22:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_initialize): NUM2INT() returns int.
+
+ * thread.c (timer_thread_function), thread_pthread.c (thread_timer),
+ thread_win32.c (timer_thread_func), thread_{pthread,win32}.c
+ (rb_thread_create_timer_thread): passing VM.
+
+Sat Jul 5 20:53:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_word.rb: check word installed.
+
+Sat Jul 5 16:12:54 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: revert. before lazy sweep.
+
+Sat Jul 5 09:55:44 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE#ole_respond_to?
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Sat Jul 5 08:48:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (unescape_nonascii): add has_property argument not to
+ raise error by /\p{Hiragana}\u{3042}/ in EUC-JP script.
+ (rb_reg_preprocess): use has_property argument to make regexp
+ encoding fixed.
+
+Sat Jul 5 08:29:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (unescape_nonascii): make regexp fixed_encoding if \p is used.
+ fixed [ruby-core:17279].
+
+Fri Jul 4 23:12:53 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (d2time): fix the bug of VT_DATE
+ to String conversion when negative value.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+Fri Jul 4 22:15:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/testcase.rb: collect descendants of
+ Test::Unit::TestCase using inherited.
+
+ * lib/test/unit/autorunner.rb: don't use ObjectSpace.each_object.
+
+ * lib/test/unit/collector/dir.rb: ditto.
+
+ * lib/test/unit/collector/objectspace.rb: ditto.
+
+ [ruby-core:17126]
+
+Fri Jul 4 20:43:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (OnigEncoding): removed auxiliary_data.
+
+ * include/ruby/encoding.h (ENC_DUMMY_P): moved dummy encoding flag to
+ rb_encoding from Encoding instance.
+
+ * encoding.c (rb_encoding_list): list of Encoding instances.
+
+ * encoding.c (struct rb_encoding_entry): moved base encoding from
+ instance variable.
+
+Fri Jul 4 17:51:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (check_uint, rb_num2uint, rb_fix2uint): proper check.
+
+Fri Jul 4 14:17:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#sendport): use divmod. [ruby-core:17557]
+
+Fri Jul 4 11:08:37 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (garbage_collect_force): sweep is completely ended.
+
+ * gc.c (os_obj_of): invoke garbage_collect_force() when freelist none.
+
+Fri Jul 4 05:01:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (rb_num2uint, rb_fix2uint): typo.
+
+Fri Jul 4 02:21:06 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (check_uint, rb_num2uint, rb_fix2uint): also needs checking
+ negative value. see [ruby-dev:33683]
+
+Thu Jul 3 23:26:36 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * include/ruby/intern.h: remove prototypes about coverage.
+
+ * iseq.c (prepare_iseq_build): add prototype.
+
+ * parse.y (coverage): ditto.
+
+ * thread.c (clear_coverage): ditto.
+
+ * thread.c (update_coverage): use rb_sourceline.
+
+ * thread.c (rb_get_coverages): rename and move to vm.c.
+
+ * vm.c (rb_vm_get_coverages): ditto.
+
+ * ext/coverage/coverage.c: add rdoc.
+
+Thu Jul 3 21:51:21 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/coverage/coverage.c, ext/coverage/extconf.rb: eliminate
+ COVERAGE__ and introduce coverage.so instead. How to measure
+ coverage: (1) require "coverage.so", (2) require or load Ruby source
+ file, and (3) Coverage.result will return the same hash as COVERAGE__.
+ [ruby-dev:35324]
+
+ * thread.c (rb_enable_coverages): start coverage measurement by using
+ rb_add_event_hook.
+
+ * thread.c (rb_get_coverages): returns current results of coverage
+ measurement.
+
+ * include/ruby/intern.h: add prototype for above two functions.
+
+ * vm_core.h, vm.c: add field of coverages to rb_vm_t.
+
+ * insns.def (trace): remove special handling for COVERAGE__.
+
+ * iseq.c (prepare_iseq_build): switch COVERAGE__ to
+ rb_get_coverages().
+
+ * parse.y (coverage): ditto.
+
+ * thread.c (clear_coverage): ditto.
+
+ * lib/coverage.rb: use coverage.so instead of COVERAGE__.
+
+Thu Jul 3 21:20:45 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (thread_initialize): NUM2INT returns long.
+
+Thu Jul 3 21:06:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (Init_eval): typo fixed in r17833.
+
+Thu Jul 3 19:44:44 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (Init_win32ole): remove duplicate line.
+
+Thu Jul 3 16:08:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (erfc): erfc of glibc comes with Debian GNU/Linux Etch
+ on IA64 is broken. erfc(10000.0) aborts.
+ use missing/erf.c instead.
+ http://sources.redhat.com/ml/libc-hacker/2005-08/msg00008.html
+
+Thu Jul 3 12:49:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP::start): use 'localhost' instead of
+ 'localhost.localdomain'. [ruby-dev:35333]
+
+ * lib/net/smtp.rb (Net::SMTP::SMTP.start): ditto.
+
+Thu Jul 3 07:06:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (SET_LC_MESSAGES): LC_MESSAGES must be C.
+
+Thu Jul 3 07:02:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (Init_eval), gc.c (Init_GC), proc.c (Init_Proc): freeze
+ messages of preallocated special exceptions also.
+
+Thu Jul 3 04:39:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_during_gc): VALUE cache is irrelevant.
+
+Thu Jul 3 01:44:01 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regint.h (GET_ALIGNMENT_PAD_SIZE, ALIGNMENT_RIGHT): cast pointer to
+ uintptr_t instead of unsigned int.
+
+Thu Jul 3 01:23:13 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * sprintf.c: include ieeefp.h to refer to isinf.
+
+ * ext/bigdecimal/bigdecimal.c: ditto.
+
+ * ext/json/ext/generator/generator.c: ditto.
+
+ * rational.c: ditto.
+
+Thu Jul 3 01:01:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * missing/tgamma.c (tgamma): remove unused variable.
+
+Thu Jul 3 00:18:00 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: avoid creating Ruby object during
+ GC. thanks to arton <artonx AT yahoo.co.jp>. [ruby-dev:35313]
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+Thu Jul 3 00:09:31 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * gc.c: add rb_during_gc(). based on a patch from arton <artonx AT
+ yahoo.co.jp> at [ruby-dev:35313].
+
+ * include/ruby/intern.h: ditto.
+
+Wed Jul 2 09:49:10 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_lazy_sweep): use lazy sweep algorithm for response
+ performance gain.
+
+ * gc.c (garbage_collect_force): mark and lazysweep invoke, after
+ erasing all mark.
+
+ * gc.c (GC_NOT_LAZY_SWEEP): not lazy sweep flag. for debug.
+
+Wed Jul 2 03:42:44 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_settracefunc.rb: fix expected traces for
+ RubyVM::FrozenCore's event and r17744.
+
+Wed Jul 2 03:10:41 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.h, insns.def: reduce insn operand of "trace".
+
+ * include/ruby/ruby.h: add RUBY_EVENT_COVERAGE event.
+
+Wed Jul 2 02:02:34 2008 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c, vm.c: fix to refer to next ruby level cfp to make binding.
+
+Wed Jul 2 01:58:19 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insns.def (trace): C99ism.
+
+Wed Jul 2 01:53:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * Add coverage measurement constant COVERAGE__. This constant is not
+ for casual use. Usage: (1) assign {} to COVERAGE__, (2) require or
+ load Ruby source file, and (3) COVERAGE__["sourcefilepath"] will
+ return an array whose elements represent number of executions per
+ line of source code.
+
+ * vm_core.h: add field of coverage array to iseq.
+
+ * iseq.c (prepare_iseq_build): ditto.
+
+ * insns.def (trace): update coverage array.
+
+ * parse.y (coverage): create and initialize coverage array.
+
+ * compile.h (ADD_TRACE): add trace instruction to update coverage
+ array.
+
+ * thread.c (clear_coverage): delete coverage array when forking.
+ Otherwise, double count of coverage may occur.
+
+ * lib/coverage.rb: sample coverage measurement tool.
+
+ * error.c: distinguish explicitly between parse_in_eval and
+ mild_compile_error.
+
+ * load.c: ditto.
+
+ * vm_eval.c: ditto.
+
+Tue Jul 1 21:32:43 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/test/unit/ui/console/testrunner.rb: prevent destructive
+ modification to $0.
+
+ * test/rubygems/gemutilities.rb (build_rake_in): move from
+ test_gem_ext_rake_builder.rb.
+
+ * test/rubygems/test_gem_ext_rake_builder.rb: ditto.
+
+ * test/rubygems/test_gem_installer.rb: override Gem.ruby and
+ ENV["rake"].
+
+ * test/rubygems/test_gem_uninstaller.rb: ditto.
+
+Tue Jul 1 21:13:17 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, vm.c, insns.def: call FrozenCore.set_postexe method
+ instead to use "postexe" insn.
+
+ * id.c, id.h: add a prepared id for above.
+
+Tue Jul 1 21:09:58 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/mkmf.rb (create_tmpsrc): we need to include COMMON_HEADERS,
+ namely inclusion of ruby.h, because _GNU_SOURCE is now defined
+ there (if any) and socket.so requires it on Linux systems.
+
+Tue Jul 1 20:55:07 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * eval.c (rb_interrupt): trick to suppress GCC warning.
+
+ * sprintf.c (rb_str_format): ditto.
+
+Tue Jul 1 20:44:36 2008 Koichi Sasada <ko1@atdot.net>
+
+ * tool/instruction.rb: RubyVM is not module.
+
+Tue Jul 1 19:31:24 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * ext/digest/digest.c (rb_digest_instance_inspect): constified.
+
+ * variable.c (rb_path2class): field precision should have type int.
+
+Tue Jul 1 19:01:00 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/shift_jis.c (code_is_ctype): HALF WIDTH KATAKANA is
+ a character.
+
+Tue Jul 1 17:56:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD__uqtoa): constified.
+
+Tue Jul 1 17:50:44 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/make_encdb.h: always add ';' at the end of line.
+
+Tue Jul 1 17:44:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (COMPILE_OPTION_FALSE), time.c (timegm_noleapsecond),
+ thread.c (eKillSignal, eTerminateSignal),
+ missing/vsnprintf.c (BSD_vfprintf): constified.
+
+Tue Jul 1 17:37:43 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * enc/ascii.c: ISO C does not allow extra ';' outside of a
+ function
+
+ * enc/us_ascii.c: ditto.
+
+ * enc/utf_8.c: ditto.
+
+ * enc/big5.c: ditto.
+
+ * enc/euc_jp.c: ditto.
+
+ * enc/euc_kr.c: ditto.
+
+ * enc/euc_tw.c: ditto.
+
+ * enc/gb2312.c: ditto.
+
+ * enc/gbk.c: ditto.
+
+ * enc/iso_8859_1.c: ditto.
+
+ * enc/iso_8859_2.c: ditto.
+
+ * enc/iso_8859_3.c: ditto.
+
+ * enc/iso_8859_4.c: ditto.
+
+ * enc/iso_8859_5.c: ditto.
+
+ * enc/iso_8859_6.c: ditto.
+
+ * enc/iso_8859_7.c: ditto.
+
+ * enc/iso_8859_8.c: ditto.
+
+ * enc/iso_8859_9.c: ditto.
+
+ * enc/iso_8859_10.c: ditto.
+
+ * enc/iso_8859_11.c: ditto.
+
+ * enc/iso_8859_13.c: ditto.
+
+ * enc/iso_8859_14.c: ditto.
+
+ * enc/iso_8859_15.c: ditto.
+
+ * enc/iso_8859_16.c: ditto.
+
+ * enc/koi8_r.c: ditto.
+
+ * enc/shift_jis.c: ditto.
+
+ * enc/utf_16be.c: ditto.
+
+ * enc/utf_32be.c: ditto.
+
+ * enc/utf_32le.c: ditto.
+
+ * enc/windows_1251.c: ditto.
+
+ * process.c (run_exec_rlimit): ISO C90 forbids mixed declarations
+ and code
+
+ * include/ruby/ruby.h (enum ruby_special_consts): ISO C forbids
+ comma at end of enumerator list
+
+ * include/ruby/ruby.h (enum ruby_value_type): ditto.
+
+ * eval_intern.h (enum): ditto.
+
+ * vm_core.h (enum rb_thread_status): ditto.
+
+ * parse.y (enum lex_state_e): ditto.
+
+ * parse.y (enum string_type): ditto.
+
+ * process.c (enum): ditto.
+
+ * ruby.c (enum dump_flag_bits): ditto.
+
+ * ruby.c (enum disable_flag_bits): ditto.
+
+ * enc/gb18030.c (enum): ditto.
+
+Tue Jul 1 17:21:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regexec.c (stack_double): use MatchStackLimitSize atomically.
+
+ * regparse.c (onig_free_shared_cclass_table): OnigTypeCClassTable
+ needs atomicity
+
+ * regsyntax.c: constified all predefined OnigSyntaxTypes.
+
+Tue Jul 1 16:57:44 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * include/ruby/st.h (struct st_table): type of bit-field
+ 'num_entries' is a GCC extension
+
+ * include/ruby/ruby.h (rb_intern): prefix __extension__ for
+ braced-groups within expressions.
+
+ * include/ruby/intern.h (rb_usascii_str_new2): ditto.
+
+ * include/ruby/intern.h (rb_tainted_str_new2): ditto.
+
+ * include/ruby/intern.h (rb_str_new2): ditto.
+
+Tue Jul 1 15:01:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/ext/builder.rb (Gem::Ext::Builder.make),
+ (Gem::Ext::Builder.run): EXIT_SUCCESS may be 0 or may not.
+
+ * test/rubygems/test_gem_ext_rake_builder.rb (build_rake_in): override
+ Gem.ruby and ENV["rake"].
+
+ * runruby.rb: bin/rake does not exist in archdir where architecture
+ depend script (i.e. rbconfig.rb) exists.
+
+Tue Jul 1 13:19:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_fill): check if beg is too big.
+
+Tue Jul 1 12:01:16 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def, vm.c, vm_core.h: remove some insns
+ (undef, alias, definemethod).
+ Call RubyVM::FrozenCore's singleton method instead.
+ Add "putiseq" and "putspecialobject" instructions.
+
+ * id.c, id.h: add ids for above.
+
+ * tool/parse.rb: "VM" no longer exists. Use RubyVM instead.
+
+Tue Jul 1 03:28:16 2008 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/test_ext_configure_builder.rb: Apply locale-free
+ patch by Yusuke ENDOH. [ruby-core:17444].
+
+ * runruby.rb: Set ENV['rake']. Patch by Yusuke ENDOH
+ [ruby-core:17442].
+
+Tue Jul 1 01:07:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension.read_multipart): blanks inside
+ double quotes are allowed. [ruby-list:45140]
+
+Tue Jul 1 00:59:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (num_coerce): call rb_Float(x) first. don't depend on
+ evaluation order of function arguments.
+
+Tue Jul 1 00:49:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_newobj): abort GC phase before rb_bug.
+
+Mon Jun 30 23:15:07 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/openssl/test_ssl.rb (start_server): shutdown TCPServer before
+ close.
+
+Mon Jun 30 23:01:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUBY_H_INCLUDES): common headers which are included with
+ ruby.h together.
+
+Mon Jun 30 22:57:50 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_settracefunc.rb (test_raise): reveal an exception
+ hided by rescue modifier.
+
+Mon Jun 30 22:49:32 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb (test_aset): access with too big index
+ raises not ArgumentError but IndexError now.
+
+Mon Jun 30 22:30:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (recursive_collect): r15662 reverted.
+
+Mon Jun 30 22:27:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/stringio/stringio.c (strio_getline): fix for nil and "" as
+ separator. [ruby-dev:34591]
+
+Mon Jun 30 22:21:30 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (argf_each_line): pass args to each_line. [ruby-dev:34958]
+
+Mon Jun 30 22:12:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (chain_finalized_object): should not delete from finalizer
+ table until run.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): deferred_final_list may be
+ empty first.
+
+Mon Jun 30 18:57:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_finalize_deferred): allow object allocation in finalizers.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): ditto.
+
+Mon Jun 30 14:41:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (rb_newobj): prohibit call of rb_newobj() during gc when
+ USE_VALUE_CACHE is not defined (normal case).
+
+Mon Jun 30 10:28:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syslog/syslog.c (syslog_write): syslog operations should be
+ protected from $SAFE level 4. a patch from Keita Yamaguchi
+ <keita.yamaguchi at gmail.com>.
+
+ * ext/syslog/syslog.c (mSyslog_close): ditto.
+
+ * ext/syslog/syslog.c (mSyslog_set_mask): ditto.
+
+Mon Jun 30 03:01:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/net/http/test_http.rb (_test_request__file): specify encoding
+ explicitly.
+
+ * test/net/http/utils.rb: ditto.
+
+Mon Jun 30 02:31:07 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_utf8_encindex): defined.
+
+ * include/ruby/encoding.h (rb_utf8_encindex): ditto.
+
+Mon Jun 30 02:14:34 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_core.h,vm_core.h, vm_dump.c, iseq.c: rename class name
+ VM -> RubyVM, and rename rb_cVM -> rb_cRubyVM.
+ "VM" is too short name for class.
+
+ * test/ruby/test_method.rb, test/ruby/test_settracefunc.rb: ditto.
+
+ * include/ruby/ruby.h: rb_cRubyVM, rb_cEnv, rb_cISeq should not be
+ exposed.
+
+Mon Jun 30 02:10:32 2008 Koichi Sasada <ko1@atdot.net>
+
+ * process.c (Init_process): fix to avoid a warning.
+
+Mon Jun 30 01:52:05 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_parse.rb: remove tests for open_args.
+
+Sun Jun 29 23:01:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_format_m): make tmp volatile to avoid possible GC
+ problem.
+
+Sun Jun 29 18:01:30 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb, lib/rss/utils.rb: merge documents from ruby_1_8.
+
+Sun Jun 29 17:44:23 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::ListenerMixin#known_class): define to
+ work with ruby 1.8.x too.
+
+Sun Jun 29 17:41:42 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb (RSS::Maker::RSSBase#to_feed): raise
+ exception not return nil if RSS::Maker.make can't get required
+ information.
+
+ * test/rss/rss-assertions.rb: follow the above change.
+
+Sun Jun 29 17:37:23 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb (RSS::Maker::RSSBase#make): require block.
+
+ * test/rss/test_maker_{0.9,1.0,2.0}.rb: follow the above change.
+
+Sun Jun 29 17:33:34 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb, lib/rss/maker/itunes.rb: don't use
+ instance_eval to initialize variables. (speed up)
+
+Sun Jun 29 17:31:15 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, test/rss/test_version.rb (RSS::VERSION):
+ 0.2.4 -> 0.2.5.
+
+Sun Jun 29 11:36:20 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * dir.rb: fix resource leak.
+
+Sun Jun 29 09:43:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (@@systmpdir): prior LOCAL_APPDATA if possible, and
+ should be clean. based on a patch from arton <artonx AT
+ yahoo.co.jp> at [ruby-dev:35269]
+
+Sun Jun 29 07:53:08 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (date2time_str): fix the overflow in
+ some situation. [ruby-bugs-20793]
+
+Sat Jun 28 21:25:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (struct RRegexp): new field usecnt. replace
+ str and len by src.
+
+ * gc.c (gc_mark_children): mark src field of regexp.
+ (obj_free): don't free str field.
+
+ * re.c (REG_BUSY): removed.
+ (rb_reg_initialize): prohibit re-initialize regexp.
+ (rb_reg_search): use usecnt to prevent freeing regexp currently
+ using. this prevents SEGV by:
+ r = /\A((a.)*(a.)*)*b/
+ r =~ "ab" + "\xc2\xa1".force_encoding("euc-jp")
+ t = Thread.new { r =~ "ab"*8 + "\xc2\xa1".force_encoding("utf-8")}
+ sleep 0.2
+ r =~ "ab"*8 + "\xc2\xa1".force_encoding("euc-jp")
+
+Sat Jun 28 21:15:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_str_new2, rb_tainted_str_new2,
+ rb_usascii_str_new2): use inline versions only for constant
+ literals.
+
+Sat Jun 28 13:12:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/rubygems/test_gem.rb (test_self_path_APPLE_GEM_HOME): don't use
+ fixed /tmp/apple_gem_home directory.
+
+Sat Jun 28 08:40:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: check String encoding when
+ converting String to VT_BSTR in OLE.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Sat Jun 28 01:08:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_timespec): fix rounding negative float.
+
+Fri Jun 27 21:38:57 2008 Tanaka Akira <akr@fsij.org>
+
+ * struct.c: __size__ removed. use the length of __members__ instead.
+ (num_members): new function.
+
+Fri Jun 27 21:19:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/inlinetest.rb (InlineTest.in_progname): workaround for frozen
+ $0. [ruby-dev:35261]
+
+ * lib/test/unit/ui/console/testrunner.rb (TestRunner#finished): ditto.
+
+Fri Jun 27 17:45:17 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/erb.rb: adjust line number for magic comment.
+
+ * test/erb/test_erb.rb: add tests for def_method.
+
+Fri Jun 27 14:29:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): empty not should call '!' on nil.
+ cf [ruby-dev:35227]
+
+Fri Jun 27 14:25:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_eval_body): if thrown exception is frozen, reraise it to
+ create a new instance.
+
+Fri Jun 27 13:29:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_str_new2, rb_tainted_str_new2,
+ rb_usascii_str_new2): use with-length versions with strlen to
+ optimize strlen, if optimized.
+
+Fri Jun 27 12:28:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/un.rb (mkmf): new command to create makefile.
+
+Fri Jun 27 11:06:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/un.rb (wait_writable): added help message.
+
+Fri Jun 27 06:52:54 2008 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in: need a ",".
+
+ * process.c (rb_fork): check CANNOT_FORK_WITH_PTHREAD macro.
+
+Fri Jun 27 06:50:56 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (vm_call_super): fix to call method_missing.
+ [ruby-core:15719], [ruby-core:17340]
+
+Fri Jun 27 00:00:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_arg0, ruby_prog_init): freeze $0. a patch from Keita
+ Yamaguchi <keita.yamaguchi at gmail.com>.
+
+Thu Jun 26 23:58:29 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_str_index_m, rb_str_rindex_m, rb_str_include): fix
+ rdoc.
+
+Thu Jun 26 17:43:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_f_trace_var): should not be allowed at safe level 4.
+ a patch from Keita Yamaguchi <keita.yamaguchi at gmail.com>.
+
+Thu Jun 26 11:04:30 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.2.0 r1824. Incorporates patch by
+ Yusuke ENDOH [ruby-core:17353].
+
+Thu Jun 26 00:48:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): not operand might be empty. [ruby-dev:35227]
+
+Wed Jun 25 21:54:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): make functional-style not operator to act
+ like function. see <http://d.hatena.ne.jp/ku-ma-me/20080624/p1>.
+
+Wed Jun 25 15:28:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_fill): not depend on unspecified behavior at integer
+ overflow. reported by Vincenzo Iozzo <snagg AT openssl.it>.
+
+Wed Jun 25 13:42:44 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Compiler:Buffer#new): push magic comment first.
+
+ * lib/erb.rb (ERB::Compiler#compile): fix for broken input.
+
+Wed Jun 25 12:10:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Compiler#compile): magic comment needs LF.
+
+Wed Jun 25 09:31:11 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Compiler#compile): output magic comment.
+
+Tue Jun 24 22:14:36 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (eval_string_with_cref): preserve parse_in_eval even if
+ exception raised.
+
+Tue Jun 24 22:09:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(ole_invoke): fix memory leak.
+ [ruby-bugs-20792]
+
+Tue Jun 24 17:20:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_fork_with_pthread): check after check for
+ pthread library, and define the macro when checked only.
+
+Tue Jun 24 17:04:39 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/io/wait/extconf.rb: check sys/socket.h for cygwin.
+
+Tue Jun 24 16:51:51 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_reopen): remove cygwin handling because it seems to be for
+ C's stdio.
+ fixed [ruby-dev:35183]
+
+Tue Jun 24 11:12:33 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/win32.c (rb_w32_getppid): now support
+ getppid() on win32 (but only Win2k or later).
+
+ * process.c (get_ppid): remove win32 special logic.
+
+Tue Jun 24 09:40:47 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (init_sock): socket is binmode on platforms
+ which support binmode.
+
+Tue Jun 24 00:21:53 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_build_from_ary): initialize arg_opts, a patch from
+ Adam Strzelecki <ono at java.pl> in [ruby-core:17220].
+
+Tue Jun 24 00:10:53 2008 wanabe <s.wanabe@gmail.com>
+
+ * compile.c (iseq_build_from_ary): fix expression to obtain
+ iseq->local_size and iseq->local_table_size. [ruby-dev:35205]
+
+Mon Jun 23 11:31:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Rational::power2): removed incomplete method.
+ see [ruby-dev:35195]. [ruby-core:17293]
+
+Sun Jun 22 14:16:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/extconf.rb (have_readline_func): readline on Mac OS X
+ needs headers to detect some functions.
+
+Sun Jun 22 09:51:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_class_superclass): rdoc improvement, a patch from
+ Gaston Ramos <ramos.gaston AT gmail.com> in [ruby-core:17371].
+
+Sun Jun 22 09:22:32 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * README.EXT: translated README.EXT.ja
+
+Sun Jun 22 00:42:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_osid, rb_w32_osver, CreateChild): XP is
+ is different from Vista about pipe handle inheritance.
+ fixed [ruby-core:17367], reported by Lars Christensen <larsch at
+ belunktum.dk>
+
+Sun Jun 22 00:38:45 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT.ja: add note about mark and free.
+
+Sun Jun 22 00:01:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_binmode_p, argf_binmode_p, Init_IO): new method
+ IO#binmode? and ARGF.binmode? [ruby-dev:35148]
+
+Sat Jun 21 17:33:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): no longer support P_WAIT.
+
+Sat Jun 21 16:46:09 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (native_sleep): must block reentrance when accessing
+ th->unblock.
+ fixed [ruby-core:17341], reported by Bill Kelly <billk at cts.com>
+
+Sat Jun 21 16:29:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (call_args2, open_args): removed.
+
+ * parse.y (parser_yylex): unified warnings at space between method
+ name and argument parenthesis. [ruby-dev:33943]
+
+Sat Jun 21 16:21:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_round): get rid of overflow.
+
+Sat Jun 21 15:57:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc#collect_first_comment): skip
+ magic comment.
+
+Sat Jun 21 15:54:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check if fork works with pthread.
+
+Sat Jun 21 15:31:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: ported to ruby.
+
+ * tool/make-snapshot: fixed digests.
+
+Sat Jun 21 04:36:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/jacobian.rb (Jacobian::dfdxi):
+ typo fixed (raize -> raise). [ruby-list:45101]
+
+ * enumerator.c (enum_each_cons): typo in RDoc fixed.
+
+Sat Jun 21 00:45:34 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * tool/make-snapshot: do not use sha256sum; use BASERUBY instead
+
+ * common.mk (dist): use tool/make-snapshot instead
+
+Fri Jun 20 16:34:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (Init_process): Process::Status#to_int removed.
+ (PST2INT): defined.
+ (pst_to_s): use PST2INT.
+ (pst_inspect): ditto.
+ (pst_equal): ditto.
+ (pst_bitand): ditto.
+ (pst_rshift): ditto.
+ (pst_wifstopped): ditto.
+ (pst_wstopsig): ditto.
+ (pst_wifsignaled): ditto.
+ (pst_wtermsig): ditto.
+ (pst_wifexited): ditto.
+ (pst_wexitstatus): ditto.
+ (pst_success_p): ditto.
+ (pst_wcoredump): ditto.
+ (rb_f_system): ditto.
+
+Fri Jun 20 15:40:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_store, rb_ary_splice): not depend on unspecified
+ behavior at integer overflow.
+
+ * string.c (str_buf_cat): ditto.
+
+Fri Jun 20 12:39:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_detach_process): store detached process ID in the
+ thread local storage. moved from lib/open3.rb.
+
+Fri Jun 20 11:57:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_sub_bang): should preserve replacement points
+ since they may be altered in the yielded block.
+
+Fri Jun 20 11:07:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_memhash): randomize hash to avoid algorithmic
+ complexity attacks.
+ (rb_str_hash): use rb_memhash.
+
+ * include/ruby/intern.h (rb_reset_random_seed): declared.
+
+ * thread.c (rb_thread_atfork): call rb_reset_random_seed.
+
+ * inits.c (rb_call_inits): call Init_RandomSeed at first.
+
+ * random.c (seed_initialized): defined.
+ (fill_random_seed): extracted from random_seed.
+ (make_seed_value): extracted from random_seed.
+ (rb_f_rand): initialize random seed at first.
+ (initial_seed): defined.
+ (Init_RandomSeed): defined.
+ (Init_RandomSeed2): defined.
+ (rb_reset_random_seed): defined.
+ (Init_Random): call Init_RandomSeed2.
+
+Wed Jun 18 21:52:38 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * array.c (ary_new, rb_ary_initialize, rb_ary_store,
+ rb_ary_splice, rb_ary_times): integer overflows should be
+ checked. based on patches from Drew Yao <ayao at apple.com>
+ fixed CVE-2008-2726
+
+ * string.c (rb_enc_cr_str_buf_cat): fixed unsafe use of alloca,
+ which led memory corruption. based on a patch from Drew Yao
+ <ayao at apple.com> fixed CVE-2008-2726
+
+Fri Jun 20 03:26:00 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_f_fork): NetBSD 4.0 or later can fork.
+
+Fri Jun 20 03:19:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/testunit/collector/test_dir.rb: r15825 made it unnecessary to
+ change String to Symbol.
+
+ * test/testunit/collector/test_objectspace.rb: ditto.
+
+Fri Jun 20 03:14:31 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*, test/rubygems/*: Update to RubyGems 1.1.1 r1784 (pre
+ 1.2).
+
+Fri Jun 20 03:01:59 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c: try to remove false positive of deadlock detection (second
+ trial).
+
+Fri Jun 20 02:16:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Rational::power2): typo fixed. [ruby-core:17293]
+
+Fri Jun 20 02:11:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): should preserve last successful match
+ data. [ruby-dev:35182]
+
+Fri Jun 20 01:07:28 2008 Koichi Sasada <ko1@atdot.net>
+
+ * KNOWNBUGS.rb, bootstraptest/pending.rb: move a bug (?) to pending.
+
+Fri Jun 20 00:40:08 2008 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (proc_new): fix to return Proc object if block is already
+ in heap. [ruby-core:15711]
+
+ * bootstraptest/test_proc.rb: add a test.
+
+Fri Jun 20 00:18:04 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread_win32.c (native_sleep): fix to decrement sleeper count.
+
+Thu Jun 19 23:48:45 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/net/http/test_http.rb: compare encodings of two strings before
+ comparing themself, which suppress too big error output.
+
+Thu Jun 19 23:46:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/json/ext/parser/parser.rl, ext/json/ext/parser/parser.c: JSON
+ text SHALL be encoded in Unicode.
+
+Thu Jun 19 23:17:56 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c, thread_win32.c, vm_core.h: try to remove false positive of
+ deadlock detection.
+
+Thu Jun 19 21:38:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): check if compile before showing message.
+
+Thu Jun 19 21:35:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: supported multiple snapshots.
+
+Thu Jun 19 20:37:00 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/net/pop.rb (Net::POP3#set_all_uids): speed
+ up. a patch from <m-sumi AT techfirm.co.jp> [ruby-list:45047]
+
+Thu Jun 19 17:44:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/etc/etc.c (Init_etc): define constant aliases Etc::Passwd
+ and Etc::Group. [ruby-dev:35150]
+
+Thu Jun 19 17:37:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_alloc): specify 'inline' modifier.
+
+ * string.c (str_alloc): remove cSymbol hack that no longer
+ necessary.
+
+ * string.c (scan_once): avoid retrieving encoding info unless
+ necessary.
+
+Thu Jun 19 17:19:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_scan): String#scan should preserve last
+ successful match data. [ruby-dev:35106]
+
+Thu Jun 19 16:49:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * missing/acosh.c (atanh): should set ERANGE to errno if parameter
+ is the boundary case. fixed [ruby-dev:35155]
+
+Thu Jun 19 16:06:01 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/tile/treeview.rb: cannot configure tags.
+
+Thu Jun 19 11:48:33 2008 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_enumerator.rb: fix to skip "with_memo" test.
+
+Thu Jun 19 11:40:55 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_throw): fix "return" process from "lambda".
+
+ * bootstraptest/test_proc.rb: add a test.
+
+ * bootstraptest/pending.rb: add a pending bug.
+
+Thu Jun 19 00:33:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb: avoid infinite loop. [ruby-dev:35158]
+
+Wed Jun 18 23:07:19 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * gc.c (rb_newobj): prohibit call of rb_newobj() during gc.
+ a patch from Sylvain Joyeux in [ruby-core:12099].
+
+Wed Jun 18 21:08:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (verbose_setter, opt_W_getter): fixed prototypes.
+
+Wed Jun 18 19:20:00 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (opt_W_getter): use ruby_verbose directly instead of parameter
+ because ruby_verbose is not a real variable, so the address of
+ parameter is not collect.
+
+Wed Jun 18 18:31:03 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (errmap): add some pipe errors.
+
+ * win32/win32.c (rb_w32_write): set errno when CRT's errno is EINVAL
+ for pipe errors.
+
+Wed Jun 18 18:09:08 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (poll_child_status): set EINVAL to errno when
+ GetExitCodeProcess() fails with ERROR_INVALID_HANDLE.
+
+Wed Jun 18 15:01:18 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_open_file): fs_encoding and fname_encoding is
+ rb_encoding *.
+ fixed [ruby-dev:35151]
+
+Wed Jun 18 14:30:06 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_open_file): not rb_enc_get_index but rb_enc_get.
+
+Wed Jun 18 13:49:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (pipe): now pipe is textmode. although this
+ change is experimental, it will be spec if no compatibility problem
+ is reported.
+
+Wed Jun 18 12:05:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object, marshal_dump, r_object0, marshal_load): search
+ public methods only. [ruby-core:17283]
+
+ * object.c (convert_type): ditto.
+
+ * lib/singleton.rb (Singleton#_dump): conversion method should be
+ public.
+
+Wed Jun 18 10:18:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_passwd, etc_group): fixed rdoc. a patch from
+ okkez <okkez000 AT gmail.com> in [ruby-dev:35141].
+
+Wed Jun 18 08:58:16 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/*: Fix errors for 1.9.
+
+ * gem_prelude.rb: Only remove methods from gem_prelude.rb when
+ loading real RubyGems.
+
+Wed Jun 18 07:03:30 2008 Eric Hodel <drbrain@egment7.net>
+
+ * lib/rubygems/*: Update to RubyGems r1778 (pre 1.2).
+
+Wed Jun 18 04:27:58 2008 Koichi Sasada <ko1@atdot.net>
+
+ * KNOWNBUGS.rb, bootstraptest/pending.rb: move pending bug.
+
+Wed Jun 18 04:24:20 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_insnhelper.c: fix escape process with "break" and "return"
+ syntax in "lambda". [ ruby-Bugs-19304 ], [ruby-core:17164]
+
+ * KNOWNBUGS.rb, bootstraptest/test_proc.rb: add/move solved test.
+
+Wed Jun 18 01:51:10 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: cannot access class variable from
+ singleton method.
+
+Wed Jun 18 00:03:33 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c (Init_Dir): dir_foreach() takes variable argument.
+
+Tue Jun 17 23:04:24 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/net/telnet.rb: Fixing Telnet#wairfor() which was broken by
+ changes to the Kernel::Integer() method. [ruby-core:17272]
+
+Tue Jun 17 23:02:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (opt_W_getter): made a hooked variable.
+
+Tue Jun 17 22:04:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enc/euc_jp.c (property_name_to_ctype): core dumped when sizeof(int)
+ differs from sizeof(long). [ruby-dev:35131]
+
+ * enc/shift_jis.c (property_name_to_ctype): ditto.
+
+ * enc/unicode.c (onigenc_unicode_property_name_to_ctype): ditto.
+
+Tue Jun 17 20:32:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (miniruby$(EXEEXT)): $(PREP) isn't always same as
+ miniruby, and tests, debug, etc have no meaning when
+ cross-compiling.
+
+Tue Jun 17 18:39:11 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * common.mk: fixed dependencies on miniruby.
+
+Tue Jun 17 18:11:01 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (pipe): expand pipe buffer size.
+
+Tue Jun 17 17:07:35 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): no need to inherit handles here because
+ spawn'ed child cannot detect that STDIN is closed.
+
+Tue Jun 17 06:32:55 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (dir_data): add intenc and extenc.
+
+ * dir.c (dir_s_alloc): ditto.
+
+ * dir.c (dir_initialize): now accept internal_encoding and
+ external_encoding.
+
+ * dir.c (dir_s_open): changed for dir_initialize.
+
+ * dir.c (dir_open_dir): ditto.
+
+ * dir.c (dir_foreach): changed for dir_open_dir.
+
+ * dir.c (dir_entries): changed for dir_open_dir.
+
+ * dir.c (dir_enc_str): defined.
+
+ * dir.c (dir_path): use dir_enc_str.
+
+ * dir.c (dir_read): ditto.
+
+ * dir.c (dir_each): ditto.
+
+Tue Jun 17 06:28:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_set_encoding): defined.
+
+ * io.c (rb_open_file): convert path on Windows and Mac OS X.
+
+ * io.c (open_key_args): use io_set_encoding and now accept
+ internal_encoding and external_encoding.
+
+Tue Jun 17 06:26:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding): defined.
+
+ * include/ruby/encoding.h (rb_filesystem_encoding): added.
+
+Tue Jun 17 06:24:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/syck/rubyext.c: add encoding header.
+
+Tue Jun 17 01:52:50 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: SEGV when exit.
+
+ * ext/tk/lib/tk.rb: add a check for safety to Tk.exit.
+
+ * ext/tk/sample/irbtkw.rbw: freezes when receives SIGINT.
+
+Mon Jun 16 21:58:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_each, strio_readlines): IO#each and
+ IO#readlines do not affect $_. [ruby-core:17277]
+
+Mon Jun 16 18:52:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/thwait.rb (ThreadsWait): Exception2MessageMapper no longer has
+ extend_to method. [ruby-core:17267]
+
+Mon Jun 16 14:46:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/e2mmap.rb (E2MM.def_e2message): typo.
+
+Mon Jun 16 09:43:27 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_with_object, Init_Enumerator):
+ Temporarily back out with_memo, for which we need a better name.
+
+Mon Jun 16 07:14:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_readline, strio_each)
+ (strio_readlines): set lastline. [ruby-core:17257]
+
+Mon Jun 16 01:49:39 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_f_block_given_p): fix to skip class frame.
+ [ruby-core:14813]
+
+ * KNOWNBUGS.rb, bootstraptest/test_method.rb: move solved test.
+
+Mon Jun 16 01:48:08 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c (vm_stack_dump_raw): disable verbose debug output.
+
+Mon Jun 16 01:33:08 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, thread.c: rename global_interpreter_lock to
+ global_vm_lock.
+
+Sun Jun 15 18:40:35 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/syck/rubyext.c (yaml_org_handler): associate encoding.
+
+ * ext/syck/rubyext.c (syck_genericresolver_node_import): ditto.
+
+Sun Jun 15 18:17:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_vm_t), vm.c (rb_vm_mark): moved preallocated special
+ exceptions.
+
+ * eval.c (Init_eval), gc.c (Init_GC), proc.c (Init_Proc): freeze
+ preallocated special exceptions.
+
+ * eval.c (rb_longjmp): duplicate the thrown exception to set backtrace
+ if it was frozen.
+
+ * gc.c (rb_memerror): raise nomem_error without backtrace if failed to
+ make backtrace.
+
+Sat Jun 14 22:52:35 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_sysread): should not raise at empty
+ read. a patch from Arthur Schreiber at [ruby-core:17245].
+
+Sat Jun 14 16:55:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): no need to expand root path which has no
+ short file name. [ruby-dev:35095]
+
+Sat Jun 14 11:59:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.h (STACK_UPPER): moved from gc.c
+
+ * thread.c, thread_{pthread,win32}.c (ruby_init_stack,
+ ruby_thread_init_stack): moved stack initialization from gc.c.
+
+Sat Jun 14 11:57:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.h (STACK_UPPER): moved from gc.c
+
+ * thread.c, thread_{pthread,win32}.c (ruby_init_stack,
+ ruby_thread_init_stack): moved stack initialization from gc.c.
+
+Sat Jun 14 07:52:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (ruby_initial_gc_stress): defined.
+ (ruby_initial_gc_stress_ptr): defined.
+
+ * debug.c (set_debug_option): use ruby_initial_gc_stress_ptr for
+ gc_stress option.
+
+Sat Jun 14 00:09:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (ruby_gc_stress): moved to rb_objspace_t.
+
+ * gc.c (gc_stress_get, gc_stress_set): VM local attribute.
+
+ * signal.c (sigsegv): ditto.
+
+Fri Jun 13 21:55:48 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_equal_p): Rational(0,x) and 0 are equivalent,
+ anyway.
+
+Fri Jun 13 21:26:39 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (string_to_c, nucomp_s_convert): preserve the current
+ backref.
+
+ * rational.c (string_to_r, nurat_s_convert): ditto.
+
+ * include/ruby/intern.h (rb_match_busy): added a declaration.
+
+Fri Jun 13 18:08:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.xmlschema): don't accept decimal dot without
+ fractional digits. fractional digits handling simplified.
+
+Fri Jun 13 17:20:40 2008 wanabe <s.wanabe@gmail.com>
+
+ * complex.c (string_to_c_internal): save and restore backref.
+ fixed [ruby-dev:34991]
+
+Fri Jun 13 17:06:20 2008 wanabe <s.wanabe@gmail.com>
+
+ * rational.c (string_to_r_internal): save and restore backref.
+ fixed [ruby-dev:34990]
+
+Fri Jun 13 14:41:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT.ja: update about Fixnum. reported in
+ <http://www.tmtm.org/ja/tdiary/?date=20080611#p01>
+
+ * README.EXT.ja: describe about StringValueCStr().
+
+ * README.EXT: ditto.
+
+Fri Jun 13 14:24:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_memerror): exit with EXIT_FAILURE instead of magic number.
+
+ * gc.c (ruby_stack_check): STACK_LENGTH should be less than
+ STACK_LEVEL_MAX.
+
+Fri Jun 13 12:55:37 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (sort_by_i): use NODE_DOT2 instead of NODE_MEMO to avoid
+ extra calls to is_pointer_to_heap() in GC.
+
+ * enum.c (enum_zip): ditto.
+
+Fri Jun 13 00:41:58 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_thread.rb: add a test.
+
+Thu Jun 12 23:30:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (mutex_unlock): fix cond_notified consistency.
+
+Thu Jun 12 22:19:45 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (native_sleep): fixed previous commit.
+
+Thu Jun 12 21:59:17 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c, vm_core.h, vm.c, thread_pthread.c, thread_win32.c: add
+ deadlock detection. [ruby-dev:35044]
+
+ * bootstraptest/test_thread.rb: add tests for above.
+
+Thu Jun 12 21:39:55 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: refactoring.
+
+ * rational.c: ditto.
+
+Thu Jun 12 17:11:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regint.h: undefine USE_CAPTURE_HISTORY which is mentioned as
+ unsupported in the Onigiruma document.
+
+Thu Jun 12 13:36:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (rb_intern): use rb_intern2 with strlen for
+ constant symbols to optimize strlen.
+
+Thu Jun 12 08:47:51 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): should use io_read_encoding(), not
+ io_input_encoding().
+
+ * io.c (rb_io_getline_1): reduce calling of io_read_encoding().
+
+ * string.c (rb_str_scan): need not to restore $~ value, so avoid
+ pinning match object.
+
+Thu Jun 12 02:49:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/stringio/stringio.c (strio_init): rewind when reopened.
+
+Thu Jun 12 02:43:27 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_zip): ANSI style.
+
+Thu Jun 12 02:25:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_reopen): clear read buffer.
+
+Thu Jun 12 00:56:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk: check proper conditions. [ruby-dev:35047]
+
+Wed Jun 11 23:33:13 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fread): bypass buffered read if reading buffer is empty.
+
+ * io.c (remain_size): do not add extra one byte.
+
+Wed Jun 11 12:15:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_normal_exit): hide stderr output
+ when success.
+
+Wed Jun 11 09:26:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (encs): need to pass miniruby path for windows.
+
+Wed Jun 11 05:53:20 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, eval_intern.h (PASS_PASSED_BLOCK):
+ set a VM_FRAME_FLAG_PASSED flag to skip this frame when
+ searching ruby-level-cfp.
+
+ * eval.c, eval_intern.h, proc.c: fix to check cfp. if there is
+ no valid ruby-level-cfp, cause RuntimeError exception.
+ [ruby-dev:34128]
+
+ * vm_core.h, vm_evalbody.c, vm.c, vm_dump.c, vm_insnhelper.c,
+ insns.def: rename FRAME_MAGIC_* to VM_FRAME_MAGIC_*.
+
+ * KNOWNBUGS.rb, bootstraptest/test*.rb: move solved bugs.
+
+Wed Jun 11 05:55:31 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: SEGV when tcltk-stubs is enabled.
+
+ * ext/tk/tcltklib.c: avoid error on a shared object.
+
+ * ext/tk/extconf.rb: support --with-tcltkversion
+
+ * ext/tk/README.tcltklib: add document about --with-tcltkversion
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb, ext/tk/lib/remote-tk.rb:
+ not work on $SAFE==4
+
+ * ext/tk/lib/multi-tk.rb: Object#methods returns Symbols on Ruby1.9.
+
+ * ext/tk/lib/tk/timer.rb: add TkTimer#at_end(proc) to register the
+ procedure which called at end of the timer.
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/itemfont.rb, ext/tk/lib/font.rb:
+ support __IGNORE_UNKNOWN_CONFIGURE_OPTION__ about font options.
+
+ * ext/tk/lib/*: treat __IGNORE_UNKNOWN_CONFIGURE_OPTION__
+
+ * ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb,
+ ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb,
+ ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: bug fix.
+
+ * ext/tk/lib/tk/text.rb: typo. call a wrong method.
+
+ * ext/tk/lib/tk/itemconfig.rb: ditto.
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/itemconfig.rb,
+ ext/tk/lib/tk/canvas.rb: support alias names of option keys.
+
+ * ext/tk/lib/tk/grid.rb: lack of module-method definitions.
+
+ * ext/tk/lib/tk/pack.rb, ext/tk/lib/tk/grid.rb: increase supported
+ parameter patterns of configure method.
+
+ * ext/tk/lib/tk.rb: add TkWindow#grid_anchor, grid_column, grid_row.
+
+ * ext/tk/lib/tk/wm.rb: methods of Tk::Wm_for_General module cannot
+ pass the given block to methods of Tk::Wm module.
+
+ * ext/tk/lib/tk/wm.rb: Wm#overrideredirect overwrites argument to
+ an invalid value.
+
+ * ext/tk/lib/tk.rb: fix memory (object) leak bug.
+
+ * ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: fix memory leak.
+
+ * ext/tk/sample/demos-jp/aniwave.rb, ext/tk/sample/demos-en/aniwave.rb:
+ bug fix.
+
+ * ext/tk/lib/tkextlib/blt/component.rb,
+ ext/tk/lib/tkextlib/tile/tentry.rb,
+ ext/tk/lib/tkextlib/tile/treeview.rb: ditto.
+
+ * ext/tk/lib/tkextlib/tile/tpaned.rb: improve TPaned#add.
+
+ * ext/tk/sample/demos-jp/widget, ext/tk/sample/demos-en/widget,
+ ext/tk/sample/demos-jp/style.rb, ext/tk/sample/demos-en/style.rb,
+ ext/tk/sample/demos-jp/bind.rb, ext/tk/sample/demos-en/bind.rb:
+ bug fix.
+
+ * ext/tk/sample/ttk_wrapper.rb: ditto.
+
+ * ext/tk/sample/ttk_wrapper.rb: support "if __FILE__ == $0" idiom.
+
+ * ext/tk/sample/tktextio.rb: add binding for 'Ctrl-u' at console mode.
+
+ * ext/tk/lib/tkextlib/tile.rb, ext/tk/lib/tkextlib/tile/style.rb,
+ ext/tk/sample/ttk_wrapper.rb: improve treating and control themes.
+ add Tk::Tile.themes and Tk::Tile.set_theme(theme).
+
+ * ext/tk/lib/tkextlib/tile.rb: lack of autoload definitions.
+
+ * ext/tk/lib/tkextlib/tile/tnotebook.rb: cannot use kanji (not UTF-8)
+ characters for headings.
+
+ * ext/tk/lib/tkextlib/tkDND/shape.rb: wrong package name.
+
+ * ext/tk/tkutil/tkutil.c: improve handling callback-subst-keys.
+ Now, support longnam-keys (e.g. '%CTT' on tkdnd-2.0; however, still
+ not support tkdnd-2.0 on tkextlib), and symbols of parameters (e.g.
+ :widget=>'%W', :keycode=>'%k', '%x'=>:x, '%X'=>:root_x, and so on;
+ those are attributes of event object). It means that Ruby/Tk accepts
+ not only "widget.bind(ev, '%W', '%k', ...){|w, k, ...| ... }", but
+ also "widget.bind(ev, :widget, :keycode, ...){|w, k, ...| ... }".
+ It is potentially incompatible, when user passes symbols to the
+ arguments of the callback block (the block receives the symbols as
+ strings). I think that is very rare case (probably, used by Ruby/Tk
+ experts only). When causes such trouble, please give strings instead
+ of such symbol parameters (e.g. call Symbol#to_s method).
+
+ * ext/tk/lib/tk/event.rb, ext/tk/lib/tk/validation.rb,
+ ext/tk/lib/tkextlib/blt/treeview.rb,
+ ext/tk/lib/tkextlib/winico/winico.rb: ditto.
+
+ * ext/tk/tkutil/tkutil.c: strings are available on subst_tables on
+ TkUtil::CallbackSubst class (it is useful on Ruby 1.9).
+
+ * ext/tk/lib/tk/spinbox.rb, ext/tk/lib/tkextlib/iwidgets/hierarchy.rb,
+ ext/tk/lib/tkextlib/iwidgets/spinner.rb,
+ ext/tk/lib/tkextlib/iwidgets/entryfield.rb,
+ ext/tk/lib/tkextlib/iwidgets/calendar.rb,
+ ext/tk/lib/tkextlib/blt/dragdrop.rb,
+ ext/tk/lib/tkextlib/tkDND/tkdnd.rb,
+ ext/tk/lib/tkextlib/treectrl/tktreectrl.rb,
+ ext/tk/lib/tkextlib/tktable/tktable.rb: disable code piece became
+ unnecessary by reason of the changes of ext/tk/tkutil/tkutil.c.
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb: change strategy to define
+ the constant WITH_ENCODING.
+
+ * ext/tk/lib/tk.rb: fix bug on Tk::Encoding.tk_encoding_names.
+
+Wed Jun 11 03:40:37 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/find.rb (Find#find): Return an enumerator if no block is
+ given.
+
+Wed Jun 11 01:28:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/intern.h, proc.c: revert rb_proc_call() and
+ create rb_proc_call_with_block() instead.
+
+ * include/ruby/ruby.h, eval_jump.c, thread.c, vm_insnhelper.c:
+ rb_blockptr should not be exposed.
+
+Tue Jun 10 21:07:19 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_float.rb: add tests. [ruby-dev:35009]
+
+Tue Jun 10 20:55:57 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_convert): need not to initialize optional
+ argument for rb_scan_args().
+
+Tue Jun 10 20:13:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: negate default of --without-ext if --with-ext is
+ given.
+
+ * ext/extmk.rb: negate default of --without-ext.
+
+Tue Jun 10 17:43:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle_bang): update RDoc. [ruby-dev:35034]
+
+Tue Jun 10 17:30:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_obj_instance_exec, rb_mod_module_exec):
+ added prototypes.
+
+Tue Jun 10 17:00:29 2008 wanabe <s.wanabe@gmail.com>
+
+ * util.c (ruby_strtod): ruby_strtod don't allow a trailing
+ decimal point like "7.". [ruby-dev:34835] [ruby-dev:35009]
+
+Tue Jun 10 13:48:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rational.c (nurat_s_convert): need not to initialize optional
+ argument for rb_scan_args().
+
+Tue Jun 10 12:58:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/wait/wait.c (FIONREAD_POSSIBLE_P): suppress warnings.
+
+Tue Jun 10 12:43:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (CONST_ID_CACHE): fixed statement expression.
+
+Tue Jun 10 11:25:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (rb_argv0): revised for ext/tk.
+
+ * include/ruby/encoding.h: not to use varargs.h since requiring C89.
+
+Tue Jun 10 00:50:51 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * include/ruby/ruby.h, vm_core.h: add a type rb_blockptr.
+
+ * vm_insnhelper.c (vm_yield_with_cfunc): vm_yield_with_cfunc receives
+ blockptr and passes it to iterating block.
+
+ * proc.c (rb_proc_call), include/ruby/intern.h: rb_proc_call receives
+ blockptr. "rb_proc_call(self, args, blockptr)" in C corresponds to
+ "self.call(*args, &block)" in Ruby.
+
+ * proc.c (proc_call): pass blockptr to block that is written in C.
+
+ * proc.c (curry): receive blockptr and pass it to original proc.
+ [ruby-core:15551]
+
+ * vm.c (invoke_block_from_c): fix for change of vm_yield_with_cfunc.
+
+ * thread.c (call_trace_proc), eval_jump.c (rb_call_end_proc): fix for
+ change of rb_proc_call.
+
+Tue Jun 10 00:10:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk (test-knownbug): give $(OPTS) for bootstraptest/runner.rb.
+
+Mon Jun 9 23:10:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (Init_stack): don't declare. it is a macro now.
+
+Mon Jun 9 22:46:47 2008 wanabe <s.wanabe@gmail.com>
+
+ * compile.c : treat []&&= in virtually the same way as []||=.
+ [ruby-dev:34679]
+
+Mon Jun 9 21:17:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (clean): remove build directories.
+
+ * test_knownbug.rb -> KNOWNBUGS.rb: renamed.
+
+ * common.mk: apply above change.
+
+Mon Jun 9 21:14:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): set flags.
+
+Mon Jun 9 21:09:02 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb -> ./test_knownbug.rb: moved.
+
+ * common.mk: add a rule "test-knownbug".
+
+Mon Jun 9 21:00:32 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_convert): can accept Complex('i').
+ [ruby-dev:34991]
+
+Mon Jun 9 18:25:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (CONST_ID): constant ID cache for non-gcc.
+
+ * *.c: no cache in init functions.
+
+Mon Jun 9 17:56:30 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#delete_if): Call to_a.
+ (SortedSet#delete_if, TC_SortedSet#test_sortedset): Use super to
+ yield elements in sorted order; [ruby-core:17144] by Arthur
+ Schreiber.
+ (SortedSet#each, SortedSet#each, TC_Set#test_each)
+ (TC_SortedSet#test_sortedset): Return self; [ruby-dev:35002] by
+ Arthur Schreiber.
+
+Mon Jun 9 17:47:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fptr_finalize): close IO object if fd is already closed.
+ (rb_p): call rb_io_write just once.
+
+Mon Jun 9 15:37:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (require_libraries): req_list may be NULL. [ruby-dev:35008]
+
+Mon Jun 9 14:18:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct rb_vm_struct): moved src_encoding_index,
+ ruby_debug, ruby_verbose, and rb_progname.
+
+ * ruby.c (rb_argv0): no longer used.
+
+ * ruby.c (struct cmdline_options): moved setids and req_list, and the
+ latter is now an array, to prevent memory leak.
+
+ * ruby.c (cmdline_options_init): added.
+
+ * ruby.c (add_modules, require_libraries, init_ids, forbid_setid): use
+ struct cmdline_options.
+
+ * vm.c (vm_init2): initialize src_encoding_index.
+
+ * vm.c: getters/setters for ruby_{debug,verbose}.
+
+Mon Jun 9 09:54:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (Init_stack): make to call ruby_init_stack.
+
+Mon Jun 9 08:12:40 2008 wanabe <s.wanabe@gmail.com>
+
+ * vm_insnhelper.c, vm.c, proc.c : revert r17021. [ruby-dev:34997]
+
+Mon Jun 9 03:12:23 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/pending.rb: move/remove solved issues.
+
+ * bootstraptest/test_class.rb: ditto.
+
+Mon Jun 9 02:32:58 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/zlib/zlib.c (rb_deflate_init_copy): Copy buffers as well.
+ [ruby-list:45018]
+
+Sun Jun 8 22:22:20 2008 wanabe <s.wanabe@gmail.com>
+
+ * vm_insnhelper.c, vm.c, proc.c (proc_call): allow call method with
+ block that both is written in C. [ruby-dev:34273] [ruby-core:15551]
+
+ * proc.c (curry): use proc_call instead of rb_proc_call.
+ [ruby-dev:34273] [ruby-core:15551]
+
+Sun Jun 8 21:50:27 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/zlib/test_zlib.rb: add tests to achieve over 90% test coverage
+ of zlib.
+
+Sun Jun 8 20:12:47 2008 wanabe <s.wanabe@gmail.com>
+
+ * vm_insnhelper.c (vm_throw): regard break as return in lambda.
+ [ruby-dev:34646]
+
+Sun Jun 8 19:17:59 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: add a build option "CALC_EXACT_MALLOC_SIZE".
+ This option enables to calculate exact size of current
+ allocated size by malloc(). You can access these information
+ with GC.malloc_allocated_size and GC.malloc_allocations.
+ This option consume additional memory as a header of each memory
+ object. This option also helps to find out xmalloc()/xfree()
+ consistency. If you get trouble with this option, some extension
+ using "free()" instead of "xfree()".
+ This options is disabled by default.
+
+Sun Jun 8 18:15:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * array.c, bignum.c, cont.c, dir.c, dln.c, encoding.c, enumerator.c,
+ enumerator.c (enumerator_allocate), eval_jump.c, file.c, hash.c,
+ io.c, load.c, pack.c, proc.c, random.c, re.c, ruby.c, st.c,
+ string.c, thread.c, thread_pthread.c, time.c, util.c, variable.c,
+ vm.c, gc.c:
+ allocated memory objects by xmalloc (ruby_xmalloc) should be
+ freed by xfree (ruby_xfree).
+
+ * ext/curses/curses.c, ext/dbm/dbm.c, ext/digest/digest.c,
+ ext/gdbm/gdbm.c, ext/json/ext/parser/parser.c,
+ ext/json/ext/parser/unicode.c, ext/openssl/ossl_cipher.c,
+ ext/openssl/ossl_hmac.c, ext/openssl/ossl_pkey_ec.c,
+ ext/sdbm/init.c, ext/strscan/strscan.c, ext/zlib/zlib.c:
+ ditto.
+
+Sun Jun 8 01:15:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * hash.c (hash_i): make Hash#hash order insensitive.
+ (rb_hash_dup): use DUPSETUP.
+
+Sat Jun 7 23:47:35 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/zlib/zlib.c (rb_deflate_initialize, Init_zlib): Fix up
+ initialize_copy; [ruby-list:45016].
+
+Sat Jun 7 22:15:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (VENDOR_DIR): use LIBDIR instead of PREFIX as well as
+ SITE_DIR. a patch from Richard Brown <rbrown AT exherbo.org> in
+ [ruby-core:17129].
+
+Sat Jun 7 21:37:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_f_open), re.c (rb_reg_search), transcode.c (str_transcode):
+ suppress warnings.
+
+ * util.c (quorem, rv_alloc, nrv_alloc): only used in dtoa().
+
+Sat Jun 7 16:06:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CFLAGS, CXXFLAGS): append default flags.
+
+Sat Jun 7 01:23:59 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_open_file, rb_io_s_sysopen): fmode should be unsigned int.
+ fixed [ruby-dev:34979]
+
+Fri Jun 6 23:46:19 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_callee_setup_arg): check simple flag before
+ calling setup_arg function(). this change reduce function call.
+
+Fri Jun 6 21:51:46 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (COMMON_HEADERS): include ws2tcpip.h.
+
+ * ext/socket/addrinfo.h (addrinfo, getaddrinfo, getnameinfo,
+ freehostent, freeaddrinfo): undef before define because these are
+ macros in some versions of Windows SDK.
+
+ merged from ruby_1_8.
+
+Fri Jun 6 18:25:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/iconv/utils.rb (default_test): override not to croak.
+
+Fri Jun 6 16:41:45 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: include ws2tcpip.h. fixed [ruby-Bugs-20528]
+
+Fri Jun 6 15:05:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (count_objects): clear hash after counting objects.
+
+Fri Jun 6 12:43:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_dir.rb (TestDir::test_glob): glob file names not sorted.
+
+Fri Jun 6 00:05:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.xmlschema): don't use float. fix
+ http://rubyforge.org/tracker/index.php?func=detail&group_id=426&atid=1698&aid=20504
+
+Thu Jun 5 23:56:18 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_gc.rb: add tests to achieve over 90% test coverage of
+ gc.c.
+
+ * test/ruby/test_objectspace.rb: ditto.
+
+ * test/ruby/test_marshal.rb: ditto.
+
+Thu Jun 5 23:40:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (rb_objspace_alloc): this function is needed only when
+ ENABLE_VM_OBJSPACE macro is defined.
+
+ * vm.c: ditto.
+
+Thu Jun 5 23:31:21 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/stringio/test_stringio.rb: add tests to achieve over 95% test
+ coverage of stringio.
+
+ * test/strscan/test_stringscanner.rb: ditto for strscan.
+
+Thu Jun 5 23:25:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (ruby_finalize_0): clear trace_func after executing END
+ procs.
+
+ * thread.c: fix typo.
+
+Thu Jun 5 22:50:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (os_obj_of): heaps may be modified in yield.
+
+Thu Jun 5 21:46:50 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * st.c (st_reverse_foreach): comment out unused function.
+
+ * util.c (dtoa): ditto.
+
+Thu Jun 5 20:30:46 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_initialize):
+ Add a null check for ssl; submitted by akira yamada
+ in [ruby-dev:34950].
+
+ * ext/openssl/ossl_ssl.c (Init_ossl_ssl): Define OP_NO_TICKET if
+ SSL_OP_NO_TICKET is present; submitted by akira yamada
+ in [ruby-dev:34944].
+
+ * test/openssl/test_ssl.rb (OpenSSL#test_server_session): Add a
+ workaround for the case where OpenSSL is configured with
+ --enable-tlsext; submitted by akira yamada in [ruby-dev:34944].
+
+Thu Jun 5 20:24:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (thread_set_trace_func_m): fix check for proc argument.
+
+Thu Jun 5 20:17:29 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/document.rb (REXML::Document:write): leaky modification
+ trans -> transitive. [ruby-dev:32040], r13686
+
+ * lib/rexml/text.rb (Text.check): fix check for illegal character.
+
+Thu Jun 5 14:03:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_create): find encoding without options.
+
+Thu Jun 5 07:48:32 2008 Koichi Sasada <ko1@atdot.net>
+
+ * string.c (hash): should be "static".
+
+Thu Jun 5 01:47:18 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_transcode.rb: add tests for iso-2022-jp.
+
+Thu Jun 5 01:27:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb: add tests.
+
+Wed Jun 4 23:10:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/zlib/zlib.c (rb_gzfile_set_mtime): fix typo.
+
+Wed Jun 4 18:53:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_alloc): RDoc updated. a patch from Gaston
+ Ramos <ramos.gaston at gmail.com> in [ruby-core:17073].
+
+Wed Jun 4 18:36:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc.rb: massive spelling correction patch from Evan Farrar
+ <evanfarrar at gmail.com> in [ruby-doc:1382] applied.
+
+Wed Jun 4 17:52:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_iconv): fix for length argument and now
+ allows range. [ruby-core:17092]
+
+Wed Jun 4 15:45:41 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_with_index, enumerator_with_memo): Fix
+ grammo in rdoc.
+
+Wed Jun 4 13:06:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CFLAGS, CXXFLAGS): include additional flags to
+ CFLAGS and CXXFLAGS while configuration.
+
+Tue Jun 3 23:06:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/strscan/strscan.c (strscan_scan_full, strscan_search_full): fix
+ document.
+
+Tue Jun 3 22:37:26 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/strscan/strscan.c (strscan_exist_p): fix document.
+
+Tue Jun 3 22:33:29 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_dir.rb: add tests to achieve over 90% test coverage
+ of dir.c.
+
+ * test/ruby/test_encoding.rb: add tests for dummy?, name_list and
+ aliases.
+
+ * test/ruby/test_marshal.rb: add some tests.
+
+Tue Jun 3 22:25:51 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb: new tests for etc.
+
+Tue Jun 3 19:35:02 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_with_memo): New method: with_memo().
+
+Tue Jun 3 20:04:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (miniruby$(EXEEXT)): miniruby cannot be
+ written by miniruby itself.
+
+Tue Jun 3 19:33:22 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_init_copy): Take care of
+ initialize_copy as well as initialize.
+
+Tue Jun 3 16:06:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): fix for non-existent files and SFN of
+ symlinks. [ruby-talk:303736]
+
+Tue Jun 3 15:12:01 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#classify): Back out the `group_by' alias.
+ Better think twice.
+
+Tue Jun 3 15:00:22 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#collect, Set#select): Back out. I thought it
+ was consistent but turned out to be wrong.
+
+Tue Jun 3 13:41:08 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#collect, Set#select): Override Enumerable
+ methods and make them return a set. [ruby-core:17055]
+ (Set#delete_if, Set#collect!, Set#reject!, Set#classify)
+ (Set#divide, Set#delete_if): Return an enumerator if no block is
+ given.
+ (Set#classify): Define an alias `group_by' to override that of
+ Enumerable.
+
+Tue Jun 3 13:35:40 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (run_exec_pgroup): C99 ism.
+
+Tue Jun 3 12:51:57 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_allocate, enumerator_ptr): Properly
+ detect if the object is initialized and raise error when
+ appropriate.
+ (enumerator_initialize): Fix a typo in rdoc. [ruby-core:17052]
+
+Tue Jun 3 01:21:51 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_method.rb: add a test.
+
+Tue Jun 3 00:26:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * marshal.c (w_object): add a check for modification of array during
+ its dump.
+
+Mon Jun 2 22:27:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enc/iso_8859_5.c: Large omicron should lowercase to small omicron.
+
+ * test/ruby/test_big5.rb, test/ruby/test_cp949.rb,
+ test/ruby/test_euc_jp.rb, test/ruby/test_euc_kr.rb,
+ test/ruby/test_euc_tw.rb, test/ruby/test_gb18030.rb,
+ test/ruby/test_gbk.rb, test/ruby/test_iso_8859.rb,
+ test/ruby/test_koi8.rb, test/ruby/test_shift_jis.rb,
+ test/ruby/test_windows_1251.rb: new tests for encoding.
+
+ * test/ruby/test_utf16.rb, test/ruby/test_utf32.rb,
+ test/ruby/test_regexp.rb: add tests.
+
+Mon Jun 2 21:56:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_file.rb: add tests for uninitialized object.
+
+ * test/ruby/test_class.rb: ditto.
+
+ * test/ruby/test_thread.rb: ditto.
+
+Mon Jun 2 21:44:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * re.c: fix SEGV by Regexp.allocate.names, Match.allocate.names, etc.
+
+ * test/ruby/test_regexp.rb: add tests for above.
+
+ * io.c: fix SEGV by IO.allocate.print, etc.
+
+ * test/ruby/test_io.rb: add tests for above.
+
+Mon Jun 2 19:17:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_argf.rb (teardown): remove renamed temporary files.
+
+Mon Jun 2 18:51:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/un.rb (wait_writable): wait until target files can be
+ written actually.
+
+ * win32/Makefile.sub (LDSHARED_0, LINK_SO): get rid of failure of
+ mt.exe.
+
+Mon Jun 2 16:26:17 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/delegate.rb (Delegator::MethodDelegation#respond_to):
+ respond_to? should now take optional second argument; submitted
+ by Jeremy Kemper <jeremy at bitsweat.net> in [ruby-core:17045].
+
+Mon Jun 2 16:14:18 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/erb.rb (ERB::Compiler::TrimScanner#scan_line): Oops. This
+ change did not apply to trunk. Backed out.
+
+Mon Jun 2 16:08:24 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/erb.rb (ERB::Compiler::TrimScanner#scan_line): Fix a bug
+ where tokens are not yielded one by one.
+
+ * test/erb/test_erb.rb (TestERBCore#_test_01)
+ (TestERBCore#test_02_safe_04): The expected value should come
+ first for assert_equal().
+
+Mon Jun 2 13:06:38 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * mkconfig.rb: hide build path from rbconfig.rb.
+
+Mon Jun 2 08:46:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod, dtoa): initialize more variables for error
+ handling.
+
+Mon Jun 2 04:55:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * suppress warnings on cygwin, mingw and mswin.
+
+Mon Jun 2 04:35:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/gb18030.c (gb18030_code_to_mbc): add 0x80000000
+ for 4bytes character.
+
+Mon Jun 2 03:52:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_arg0): reverted used variable definition.
+
+Mon Jun 2 03:23:25 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/gb18030.c (gb18030_mbc_to_code): mask by 0x7FFFFFFF
+ because OnigCodePoint will be used as 32bit signed int.
+ Masking by 0x7FFFFFFF is ok on GB18030;
+ Minimum 4bytes character is 0x81308130.
+
+Sun Jun 1 22:29:35 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * rational.c (string_to_r_internal): use rb_isdigit.
+
+ * marshal.c (long_toobig): use %zd.
+
+ * ruby.c (set_arg0): move unused variable definition.
+
+Sun Jun 1 12:18:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * insns.def (DEFINE_INSN): subtract of pointers is ptrdiff_t.
+ this is not int on 64bit system.
+
+ * vm_dump.c (control_frame_dump): ditto.
+
+ * vm_dump.c (stack_dump_each): ditto.
+
+ * vm_dump.c (debug_print_register): ditto.
+
+ * vm_dump.c (debug_print_pre): ditto.
+
+ * transcode.c (str_transcode): ditto.
+
+Sun Jun 1 10:32:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): show coredump status.
+
+Sat May 31 23:33:34 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * README, README.ja: Add a note about default C flags.
+
+Sat May 31 23:02:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (count_objects): clear given hash.
+
+Sat May 31 20:28:10 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_regexp.rb: add tests.
+
+Sat May 31 19:11:39 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_16{be,le}.c (utf16{be,le}_code_to_mbc):
+ fix codepoint to bytes.
+
+Sat May 31 18:28:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * suppress warnings with -Wwrite-string.
+
+Sat May 31 18:26:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete_if): should return enumerator if no block
+ is given. [ruby-dev:34901]
+
+Sat May 31 15:58:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in (warnflags): defaulted to -Wall
+ -Wno-parentheses with gcc. [ruby-dev:34810]
+
+Sat May 31 15:17:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/mvm.h: new header file for MVM, and moved rb_vm_t and
+ rb_thread_t from vm_core.h.
+
+Sat May 31 12:02:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): show pid when fail.
+
+Fri May 30 23:55:56 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_rubyoptions.rb: add a test of RUBY_DESCRIPTION.
+
+Fri May 30 22:47:17 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_regexp.rb: add tests.
+
+Fri May 30 22:40:53 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_signal.rb: add tests to achieve over 80% test
+ coverage of signal.c.
+
+Fri May 30 22:28:03 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * signal.c (esignal_signo): fix SignalException#signo which returned
+ nil absolutely.
+
+ * signal.c (esignal_init): always prepend "SIG" to a string that is
+ returned by SignalException#signm.
+
+Fri May 30 22:17:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_argf.rb: rename a conflicting method name.
+
+ * test/ruby/test_string.rb: ditto.
+
+ * test/ruby/test_io.rb: ditto.
+
+Fri May 30 22:14:37 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (defined_expr): fix SEGV by defined?([1]).
+
+Fri May 30 12:18:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (prelude.c): simply depends on PREP. [ruby-dev:34877]
+
+ * enc/make_encdb.rb, enc/trans/make_transdb.rb: ditto.
+
+Fri May 30 10:55:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct rb_unblock_callback), thread.c
+ (set_unblock_function), thread_{pthread,win32}.c (native_sleep):
+ extracted from struct rb_thread_struct.
+
+ * thread.c (reset_unblock_function): not check interrupts at leaving
+ blocking region. [ruby-dev:34874]
+
+Fri May 30 06:09:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_8.c: add UTF8-MAC (UTF-8-MAC).
+
+Fri May 30 04:17:13 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (enum_count, count_all_i, Init_Enumerable),
+ array.c (rb_ary_count): If no argument or block is given, count
+ the number of all elements.
+
+Fri May 30 03:12:18 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/openssl/ossl_bn.c (ossl_bn_s_rand, ossl_bn_s_pseudo_rand):
+ Int should be enough here.
+
+Fri May 30 02:35:00 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/openssl/ossl_bn.c (ossl_bn_s_rand, ossl_bn_s_pseudo_rand),
+ ext/openssl/ossl_pkey_dh.c (ossl_dh_s_generate)
+ (ossl_dh_initialize),
+ ext/openssl/ossl_pkey_dsa.c (ossl_dsa_s_generate),
+ ext/openssl/ossl_rand.c (ossl_rand_bytes)
+ (ossl_rand_pseudo_bytes, ossl_rand_egd_bytes),
+ ext/openssl/ossl_x509store.c (ossl_x509stctx_set_error): Do not
+ use FIX2INT() without checking the value type. Use NUM2INT()
+ instead; found by akr in [ruby-dev:34890].
+
+Fri May 30 02:08:20 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * signal.c (esignal_init): handle a non-integer argument correctly,
+ allowing SignalException.new(:INT).
+
+Fri May 30 00:59:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_regexp.rb: add tests.
+
+Thu May 29 22:51:05 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_require.rb: add a test for load with wrap flag, to
+ achieve 100% test coverage of eval_jump.c.
+
+Thu May 29 22:47:53 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_argf.rb: new tests for ARGF, to achieve over 85% test
+ coverage of file.c.
+
+ * test/ruby/test_io.rb: add tests.
+
+Thu May 29 22:41:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (argf_readchar): raise EOFError, synchronizing IO#readchar.
+
+Thu May 29 22:29:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (argf_external_encoding, argf_internal_encoding): fix SEGV by
+ ARGF.external_encoding.
+
+Thu May 29 17:52:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/extconf.rb: search zlib1, and regard mswin32 later than VC6
+ as WIN32. [ruby-core:16984]
+
+Wed May 28 18:05:28 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_nitems, Init_Array): Axe Array#nitems().
+ cf. [ruby-dev:34676]-[ruby-dev:34713]
+
+Wed May 28 17:50:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/mkexports.rb (Exports#objdump, Exports#each_line): extracted.
+
+Wed May 28 17:41:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (MKPREP): appended $(RBCONFIG).
+
+ * common.mk (enc.mk, prelude.c): not depend on $(RBCONFIG) on mswin32
+ to get of compiling twice each time.
+
+ * win32/Makefile.sub (prelude.c): not depend on $(PREP).
+
+Wed May 28 17:37:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb (Exports::Mswin#each_export): speed up.
+
+Wed May 28 16:41:59 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_slice_bang): Call rb_ary_modify_check() at the
+ beginning. [rubyspec]
+
+Wed May 28 16:12:44 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb (WEBrick::HTTPServlet::CGIHandler#do_GET):
+ Set the HTTP status code to 302 if a Location header field is
+ present and the status code is not valid as a client
+ redirection. cf. RFC 3875 6.2.3, 6.2.4.
+
+Wed May 28 15:53:52 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/trans/japanese.c (to_SHIFT_JIS_EF_infos): typo.
+
+Wed May 28 15:18:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/singleton.rb (SingletonClassMethods): _load should be public.
+
+Wed May 28 13:30:43 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c: add workaround for Unicode to CP932.
+ U+2015->0x815C, U+2225->0x8161, U+FF0D->0x817C, U+FF3C->0x815F,
+ U+FF5E->0x8160, U+FFE0->0x8191, U+FFE1->0x8192, U+FFE2->0x81CA
+
+Wed May 28 12:52:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object, marshal_dump, r_object0, marshal_load): search
+ private methods too. [ruby-dev:34671]
+
+ * object.c (convert_type): ditto.
+
+Wed May 28 08:42:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c: "%" is required before PRI?VALUE.
+
+Tue May 27 22:10:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.c (error_handle): SystemExit and SignalException throws
+ TAG_RAISE but not TAG_FATAL.
+
+ * thread.c (rb_thread_execute_interrupts): delay interrupts during
+ raising exceptions. [ruby-dev:34855]
+
+Tue May 27 20:18:30 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_slice_bang): Return an empty array instead of
+ nil when pos is valid and len is adjusted from a valid value to
+ zero; caught by RubySpec.
+
+Tue May 27 19:12:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (MKPREP), common.mk, win32/Makefile.sub (prelude.c): get
+ rid of depending PREP with nmake.
+
+ * common.mk (encs): depends on libruby.
+
+Tue May 27 19:00:22 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/stringio/stringio.c (strio_each_char, Init_stringio): Add
+ StringIO#{each_char,chars}.
+ (Init_stringio): Fix StringIO#bytes.
+
+Tue May 27 17:54:35 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/stringio/stringio.c (strio_each_byte): Return self instead
+ of nil as the rdoc says.
+
+Tue May 27 15:36:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (check_int): use PRIxVALUE format specifier.
+
+ * numeric.c (check_uint, rb_num2fix, int_chr): ditto.
+
+ * numeric.c (num_fdiv): fallback to_f should always return float
+ result. should not use #quo that may return rational.
+
+ * numeric.c (num_div): should raise ZeroDivisionError.
+
+ * numeric.c (fix_divide): ditto.
+
+ * test/ruby/test_numeric.rb (TestNumeric::test_divmod): avoid
+ ZeroDivisionError in tests.
+
+Tue May 27 13:14:53 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (enum_to_a): Pass arguments through to #each().
+ (enum_sort): Follow the enum_to_a signature change.
+ (enum_reverse_each): Add #reverse_each().
+
+Tue May 27 13:12:37 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * io.c (Init_IO): Define ARGF.{lines,bytes,chars}.
+
+Tue May 27 12:06:37 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (BUFCHECK): wrong condition. [ruby-core:16921]
+
+ * file.c (file_expand_buf): shouldn't use buflen for length of string.
+
+Mon May 26 18:24:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (BUFCHECK): no resize if enough room.
+
+ * file.c (file_expand_path): use BUFCHECK.
+
+Mon May 26 17:48:42 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (struct enumerator, enumerator_init)
+ (enumerator_init_copy, enumerator_each): Eliminate iter.
+ (enumerator_ptr): Do not hardcode the class name.
+ (enumerator_with_index): Delay variable initialization after
+ RETURN_ENUMERATOR().
+
+Mon May 26 17:23:49 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (file_expand_path): add more space for '/'.
+
+ * file.c (file_expand_path): should reset address of p after calling
+ rb_str_resize(). [ruby-dev:34800]
+
+Mon May 26 16:49:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode): use run-hooks if run-mode-hook is
+ not available. a patch from Kazuhiro NISHIYAMA <zn at mbf.nifty.com>
+ in [ruby-dev:34853].
+
+Mon May 26 16:41:35 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (ntfs_tail): filename which starts with '.' is valid.
+
+ * file.c (file_expand_path): cygwin symlink support.
+
+Mon May 26 07:15:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): rb_make_backtrace has no arguments.
+
+Mon May 26 01:17:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): signal description
+ refined.
+
+Mon May 26 00:52:52 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c (env_each_key, env_each_value, env_reject_bang)
+ (rb_env_clear, env_replace): Omit duplicated secure level check.
+
+Mon May 26 00:37:16 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c (env_each_value): Do not call env_values() twice.
+
+Sun May 25 17:54:36 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_compile): set local_table for
+ ISEQ_TYPE_DEFINED_GUARD.
+
+Sun May 25 17:52:25 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_build_body): remove side effect from
+ VM::InstructionSequence.load.
+
+Sun May 25 04:30:45 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_module.rb (remove_json_mixins): change judgment
+ condition.
+
+Sun May 25 03:54:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_module.rb (test_ancestors, test_included_modules):
+ ignore json mixins.
+
+Sun May 25 02:37:25 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.c: renamed from vm_method.c. "vm_method.c" is included
+ by "vm.c".
+
+ * vm_eval.c: added. Some codes are moved from "eval.c"
+
+ * common.mk: fix for above changes.
+
+ * compile.c: make a vm_eval(0)
+
+ * eval.c, eval_error.c, eval_intern.h, eval_jump.c, proc.c, vm.c,
+ id.c, id.h, vm_core.h, vm_dump.c, vm_evalbody.c, vm_insnhelper.c,
+ blockinlining.c: fix for above changes. and do some refactoring.
+ this changes improve rb_yield() performance.
+
+Sat May 24 22:32:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): clear errno at the top of our own
+ implementation of strtod(3). [ruby-dev:34834] [ruby-dev:34839]
+
+Sat May 24 15:26:16 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_set_exception_table, NODE_WHILE, NODE_NEXT): remove
+ special handling that decrements sp in CATCH_TYPE_NEXT for NODE_WHILE.
+
+ * vm.c (vm_eval_body), vm_insnhelper.c (vm_throw): remove unused code.
+
+Sat May 24 08:13:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (rb_str_transcode): argc is 1, and argv is &to.
+
+Fri May 23 17:55:11 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_slice_bang): Be consistent with Array#slice()
+ and String#slice!(). Just return nil when a negative length or
+ out of boundary index is given instead of raising an exception
+ via internal functions.
+
+Fri May 23 16:44:34 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (Init_Enumerator): Override
+ Enumerable::Enumerator#each_with_index with #with_index.
+
+Fri May 23 12:23:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_num_t): moved form vm.h.
+
+ * tool/instruction.rb (RubyVM::Instruction#sp_increase_c_expr),
+ tool/instruction.rb (RubyVM::VmBodyGenerator#make_header_operands):
+ omit unused variables.
+
+Fri May 23 08:47:02 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_equal): == operator should be transitional.
+ [ruby-dev:34808]
+
+ * error.c (syserr_eqq): === should be able to handle delegated
+ objects as well.
+
+Fri May 23 06:15:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_compile_with_option): get rid of segv.
+
+Fri May 23 02:29:14 2008 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_gt|ge|lt|le): use values directly to compare.
+
+Fri May 23 01:15:09 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, eval_intern.h, include/ruby/intern.h, include/ruby/ruby.h,
+ vm.c, vm_core.h, vm_insnhelper.c: remove pointless "const".
+
+Thu May 22 23:45:17 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (get_destination_insn, get_next_insn, get_prev_insn):
+ peephole optimization should not ignore ISEQ_ELEMENT_ADJUST.
+
+Thu May 22 20:20:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (check_dump_arg, check_load_arg): check if reentered.
+ [ruby-dev:34802]
+
+Thu May 22 20:14:28 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * iseq.c (iseq_load, iseq_data_to_ary): support
+ ISEQ_TYPE_DEFINED_GUARD.
+
+Thu May 22 19:01:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_get_ruby_level_cfp): moved from eval_intern.h.
+
+ * vm.c (sdr, nsdr): define methods only if VMDEBUG is defined.
+
+Thu May 22 17:18:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * array.c (rb_ary_compact_bang): fix reallocation size.
+
+Thu May 22 15:20:20 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval_intern.h, vm_core.h, include/ruby/intern.h, include/ruby/ruby.h,
+ vm.c: need to add const to prototypes, of course.
+
+Thu May 22 13:24:43 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm.c, vm_core.h, vm_insnhelper.c: specify "const".
+
+ * vm_opts.h: add a OPT_TOKEN_THREADED_CODE macro.
+
+Thu May 22 12:51:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * insns.def (newhash): fix a variable definition: "const k".
+
+Thu May 22 12:40:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (flatten): check if reentered. [ruby-dev:34798]
+
+Thu May 22 11:39:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): capture stdout and stderr
+ of the child process.
+
+Thu May 22 08:28:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (flatten): free memo hash table before raising exception.
+ [ruby-dev:34789]
+
+Thu May 22 06:30:10 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * array.c (flatten): fix memory leak.
+
+Thu May 22 06:21:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_str_caseeql): added.
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_enc_find_index): use nkf_str_caseeql.
+
+Thu May 22 05:45:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (proc_dup): should copy safe_level from src proc
+ properly. a patch from Keita Yamaguchi
+ <keita.yamaguchi at gmail.com>
+
+Thu May 22 02:46:08 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: do not use Thread#raise. [ruby-dev:34739]
+
+Thu May 22 00:30:06 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_require.rb: new tests for library requiring, to
+ achieve over 90% test coverage of dln.c.
+
+ * test/ruby/test_class.rb: add tests to achieve over 90% test coverage
+ of class.c.
+
+ * test/ruby/test_module.rb: ditto.
+
+Thu May 22 00:15:44 2008 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm_insnhelper.c: specify "const".
+
+Wed May 21 23:20:21 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_eval.rb: fix syntax.
+
+Wed May 21 17:46:17 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_enc_find_index):
+ use strcasecmp. [ruby-dev:34787]
+
+Wed May 21 16:48:22 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_compact_bang): avoid forceful realloc.
+
+Wed May 21 07:42:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_usascii_str_new): use rb_str_new.
+
+ * string.c (rb_enc_str_new): ditto.
+
+ * string.c (rb_usascii_str_new2): use rb_str_new2.
+
+Wed May 21 07:22:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c, include/ruby/encoding.h
+ (rb_enc_associate, rb_enc_associate_index):
+ returns obj. [ruby-dev:34778]
+
+Wed May 21 04:20:20 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_ascii8bit_encoding): use ENCINDEX_ASCII.
+
+ * encoding.c, include/ruby/encoding.h (rb_ascii8bit_encindex):
+ added.
+
+ * encoding.c (rb_locale_encoding): use rb_usascii_encoding().
+
+Wed May 21 01:45:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file_exhaustive.rb (setup): workaround for Windows
+ Vista.
+
+ * test/ruby/envutil.rb (rubyexec): now Open3.open3 is supported on
+ Windows.
+
+ * test/ruby/test_process.rb: use ``||'' instead of ``;'' because
+ cmd.exe not support it.
+
+Wed May 21 01:28:47 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c, include/ruby/encoding.h (rb_str_transcode):
+ C API of encoding conversion for Ruby object.
+ VALUE rb_str_transcode(VALUE str, VALUE to).
+
+ * transcode.c (str_encode, str_encode_bang):
+ rename from rb_tr_transcode or rb_str_transcode_bang.
+
+Tue May 20 23:26:05 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: fix tests for 64bit CPU.
+
+Tue May 20 20:59:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (rb_nkf_convert) (nkf_enc_without_bom):
+ reverted. nkf-utf8/nkf.c should be independent of ruby.
+
+ * ext/nkf/nkf.c (options):
+ moved from nkf-utf8/nkf.c.
+ override nkf's original settings for Unicode BOM.
+
+Tue May 20 13:20:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_convert), ext/nkf/nkf-utf8/nkf.c
+ (nkf_enc_without_bom): BOM is not a part of encodings.
+
+ * ext/nkf/nkf.c (Init_nkf), ext/nkf/nkf-utf8/nkf.c (options):
+ UTF-{16,32} without endian have no sense.
+
+Tue May 20 12:13:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options, process_options): --dump option.
+
+Tue May 20 11:36:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRI[diouxX]VALUE): printf format for VALUE.
+
+ * gc.c (assign_heap_slot): suppress a warning.
+
+Tue May 20 03:42:43 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm_insnhelper.c: fix cref in instance_eval
+ and cvar_base search protocol.
+
+ * bootstraptest/test_knownbug.rb, test_eval.rb: move solved test
+ and add new tests.
+
+ * test/ruby/test_eval.rb: fix tests for spec.
+
+Tue May 20 01:43:44 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: fix a test.
+ "block_given?" returns true if "yield" can be used.
+
+Tue May 20 01:07:19 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (assignable_gen): when "self = 1" was evaluated, unnecessary
+ error message was output, which might cause null pointer access.
+
+Tue May 20 08:38:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_enc_strlen_cr): need to set ENC_CODERANGE_7BIT if
+ search_nonascii() fails. [ruby-dev:34751]
+
+ * string.c (rb_str_reverse): preserve coderange info if the
+ receiver is 7bit string.
+
+ * string.c (rb_str_reverse_bang): ditto.
+
+ * string.c (rb_str_reverse_bang): should have called
+ single_byte_optimizable before rb_str_modify() that clears
+ coderange info.
+
+ * string.c (tr_trans): handle single bytes more eagerly.
+
+Mon May 19 23:32:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (invoke_block_from_c): fix call flow.
+
+Mon May 19 23:19:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regexec.c (slow_search): check the case when the length is 1.
+ The behavior of memcmp is undefined if the third argument is 0.
+
+Mon May 19 21:07:48 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (native_thread_apply_priority):
+ fix argument range check. [ruby-dev:33124]
+
+Mon May 19 18:22:35 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/openssl/ossl_pkcs5.c (ossl_pkcs5_pbkdf2_hmac): Fix the type
+ of md; pointed out by Takahiro Kambe <taca at back-street.net>
+ in [ruby-dev:34748].
+
+Mon May 19 17:23:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regparse.c (PINC): use optimized enclen() instead of
+ ONIGENC_MBC_ENC_LEN().
+
+ * regparse.c (PFETCH): ditto.
+
+ * regparse.c (PFETCH): small optimization.
+
+ * regexec.c (slow_search): single byte encoding optimization.
+
+ * regenc.h (enclen): avoid calling function when encoding's
+ min_len == max_len.
+
+ * re.c (rb_reg_regsub): rb_enc_ascget() optimization for single
+ byte encoding.
+
+ * re.c (rb_reg_search): avoid allocating new re_registers if we
+ already have MatchData.
+
+ * re.c (match_init_copy): avoid unnecessary onig_region_free()
+ before onig_region_copy.
+
+ * encoding.c (rb_enc_get_index): remove implicit enc_capable check
+ each time.
+
+ * encoding.c (rb_enc_set_index): ditto.
+
+ * encoding.c (enc_compatible_p): small refactoring.
+
+ * include/ruby/encoding.h (rb_enc_dummy_p): inline
+ rb_enc_dummy_p() and export related code.
+
+Mon May 19 14:32:03 2008 Koichi Sasada <ko1@atdot.net>
+
+ * version.h: fix strange change by version.h update tool.
+
+Mon May 19 14:18:13 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: move solved tests.
+
+ * bootstraptest/test_eval.rb, test_literal.rb, test_syntax.rb,
+ test_thread.rb: ditto.
+
+ * test/ruby/test_m17n.rb, test_proc.rb, test_sprintf.rb,
+ test_string.rb, test/ruby/test_struct.rb: ditto.
+
+Mon May 19 13:23:03 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_spawn_internal): set last_status when status == -1
+ because there is no path to set it on win32. this patch is derived
+ from [ruby-core:16787], submitted by Luis Lavena <luislavena at
+ gmail.com>
+
+Mon May 19 11:32:47 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, insns.def, eval.c, vm_insnhelper.c: fix CREF handling.
+ VM value stack frame of block contains cref information.
+ (dfp[-1] points CREF)
+
+ * compile.c, eval_intern.h, eval_method.c, load.c, proc.c,
+ vm_dump.h, vm_core.h: ditto.
+
+ * include/ruby/ruby.h, gc.c: remove T_VALUES because of above
+ changes.
+
+ * bootstraptest/test_eval.rb, test_knownbug.rb: move solved test.
+
+Sun May 18 22:26:51 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/filehandler.rb: should normalize path
+ name in path_info to prevent script disclosure vulnerability on
+ DOSISH filesystems. (fix: CVE-2008-1891)
+ Note: NTFS/FAT filesystem should not be published by the platforms
+ other than Windows. Pathname interpretation (including short
+ filename) is less than perfect.
+
+ * lib/webrick/httpservlet/abstract.rb
+ (WEBrick::HTTPServlet::AbstractServlet#redirect_to_directory_uri):
+ should escape the value of Location: header.
+
+ * lib/webrick/httpservlet/cgi_runner.rb: accept interpreter
+ command line arguments.
+
+Sun May 18 02:54:46 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * pack.c (pack_pack): check errno to detect error of ruby_strtoul.
+
+ * pack.c (pack_unpack): ditto.
+
+ * test/ruby/test_pack.rb: add a test for above.
+
+Sat May 17 23:53:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): fix for short file name on Cygwin.
+
+Sat May 17 18:03:52 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * vm.c (Init_VM): removed the definition of Thread#initialize,
+ which is overwritten in Init_Thread and is never used.
+
+Sat May 17 14:01:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): should not free shared pointer, and set
+ shared. [ruby-dev:34732]
+
+Sat May 17 12:34:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * thread_pthread.c (Init_native_thread): Kernel#.sleep used never to
+ sleep on Mac OS X. Reported by arton <artonx AT yahoo.co.jp>.
+
+ * thread_pthread.c (native_sleep): added error checks.
+
+Sat May 17 11:29:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): first dot is not an extension name.
+
+Sat May 17 03:21:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): stop memory leak. [ruby-dev:34726]
+
+ * re.c (rb_reg_search): need to free allocated buffer in re_register.
+
+ * regexec.c (onig_region_new): more pedantic malloc check.
+
+ * regexec.c (onig_region_resize): ditto.
+
+ * regexec.c (STATE_CHECK_BUFF_INIT): ditto.
+
+ * regexec.c (onig_region_copy): use onig_region_resize.
+
+Fri May 16 12:48:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (to_flo): rb_Float() accepts even strings for input.
+
+ * complex.c (nucomp_to_f): fix wrong message.
+
+ * complex.c (nucomp_to_r): ditto.
+
+ * object.c (rb_Float): do not check NaN for error. NaN is a part
+ of valid float values.
+
+Thu May 15 23:36:09 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_string.rb: add tests to achieve over 90% test
+ coverage of string.c.
+
+ * test/ruby/test_m17n.rb: ditto.
+
+ * test/ruby/test_symbol.rb: ditto.
+
+ * test/ruby/test_pack.rb: ditto.
+
+Thu May 15 23:01:06 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (tr_find): String#delete returned wrong result when multiple
+ utf-8 arguments are passed.
+
+ * test/ruby/test_m17n.rb (test_delete): add a test for above.
+
+Thu May 15 22:37:56 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (ripper_warningS): now used.
+
+Thu May 15 15:33:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): support for alternative data stream
+ and ignored trailing garbage of NTFS.
+
+ * file.c (rb_file_s_basename): ditto.
+
+ * file.c (rb_file_s_extname): ditto.
+
+Thu May 15 13:43:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): no need for forceful warning when
+ converting to float. overflow is a nature of float values.
+
+ * parse.y (parser_yylex): ditto.
+
+Thu May 15 13:23:20 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_prepare_enc): error condition was updated for non
+ ASCII compatible strings.
+
+Thu May 15 12:19:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/openssl/openssl_missing.c (HMAC_CTX_copy): adopted
+ prototype change in openssl bundled with newer OpenBSD.
+ a patch from Takahiro Kambe <taca at back-street.net> in
+ [ruby-dev:34691].
+
+Wed May 14 22:09:25 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ChangeLog: fix typo.
+
+Wed May 14 21:49:14 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_object.rb: new tests to achieve over 90% test
+ coverage of object.c, eval.c and eval_method.c.
+
+ * test/ruby/test_module.rb: ditto.
+
+ * test/ruby/test_trace.rb: ditto.
+
+ * test/ruby/test_integer.rb: ditto.
+
+ * test/ruby/test_float.rb: ditto.
+
+ * test/ruby/test_method.rb: ditto.
+
+ * test/ruby/test_variable.rb: ditto.
+
+ * test/ruby/test_eval.rb: ditto.
+
+ * test/ruby/test_exception.rb: ditto.
+
+ * test/ruby/test_class.rb: ditto.
+
+Wed May 14 12:46:37 2008 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (insn_operand_intern): remove Qundef related code.
+
+Wed May 14 12:42:36 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_count): Override Enumerable#count for better
+ performance.
+
+Wed May 14 11:29:06 2008 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: add a "putcbase" instruction.
+
+ * compile.c, insns.def: fix to use putcbase instruction for
+ class search. Qundef should not be used.
+
+Wed May 14 07:49:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): defer calling of rb_frame_self() until it
+ become really necessary.
+
+ * eval.c (rb_call): ditto.
+
+Wed May 14 00:55:56 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_io_m17n.rb: remove a duplicative method.
+
+ * test/ruby/test_utf16.rb: rename a conflicting method name.
+
+ * test/ruby/test_array.rb: ditto.
+
+ * test/ruby/test_file_exhaustive.rb: ditto.
+
+ * test/ruby/test_hash.rb: ditto.
+
+ * test/ruby/test_env.rb: ditto.
+
+ * test/ruby/test_fixnum.rb: ditto.
+
+ * test/ruby/test_rational.rb: ditto.
+
+Wed May 14 00:45:58 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval_method.c (rb_add_method): fix check for warning when
+ Object#initialize is redefined. (same as 1.8)
+
+Tue May 13 23:32:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_yield): use rb_yield_values2.
+
+ * enum.c (DEFINE_ENUMFUNCS): macro to define enumerator and yielding
+ functions.
+
+ * enum.c (enum_all_func, enum_any_func, enum_one_func,
+ enum_none_func): reduced duplicate code.
+
+Tue May 13 15:09:38 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c: Update rdoc.
+ (enumerator_initialize): Discourage the use.
+ (enum_each_slice, enum_each_cons, enumerator_each)
+ (enumerator_with_index): Add a note about a call without a block.
+
+Tue May 13 08:25:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_f_gets): re-enable rdoc.
+ (rb_f_readline): ditto.
+ (rb_f_readlines): ditto.
+
+Tue May 13 07:56:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cat): fixed buffer overrun reported by
+ Christopher Thompson <cthompson at nexopia.com> in [ruby-core:16746]
+
+Mon May 12 23:37:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (collect_local_variables_in_env): remove unnecessary check
+ which causes: x=1;proc{local_variables}.call #=> []
+
+ * test/ruby/test_variable.rb: add a test for above.
+
+Mon May 12 23:05:24 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c, include/ruby/intern.h (rb_run_exec_options): externed.
+
+ * process.c (save_redirect_fd, save_env_i, save_env, run_exec_dup2,
+ run_exec_open, run_exec_pgroup, run_exec_rlimit, rb_run_exec_options):
+ save parent's process environments.
+
+ * process.c (rb_spawn_internal): remove calling run_exec_options()
+ because cannot restore after spawn.
+
+ * io.c (pipe_open): ditto.
+
+ * test/ruby/test_process.rb (test_execopts_env): upcase environment
+ variable name for case insensitive platforms.
+
+ * win32/win32.c (init_env): set USER environment variable only when
+ USERNAME is available.
+
+Mon May 12 22:23:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/date.rb (once): use Object#object_id instead of Symbol#to_i.
+
+Mon May 12 21:34:46 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/envutil.rb (rubybin): return expanded rubyexe instead of
+ expanded ruby if available.
+
+Mon May 12 20:19:55 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (grep_i): Be aware of multiple values;
+ fix [ruby-dev:34653].
+ (grep_iter_i): Ditto.
+ (count_i): Ditto.
+ (find_i): Ditto.
+ (find_index_i): Ditto.
+ (find_all_i): Ditto.
+ (reject_i): Ditto.
+ (inject_i): Ditto.
+ (inject_op_i): Ditto.
+ (partition_i): Ditto.
+ (group_by_i): Ditto.
+ (first_i): Ditto.
+ (sort_by_i): Ditto.
+ (all_i): Ditto.
+ (all_iter_i): Ditto.
+ (any_i): Ditto.
+ (any_iter_i): Ditto.
+ (one_i): Ditto.
+ (one_iter_i): Ditto.
+ (none_i): Ditto.
+ (none_iter_i): Ditto.
+ (min_i): Ditto.
+ (min_ii): Ditto.
+ (max_i): Ditto.
+ (max_ii): Ditto.
+ (minmax_i): Ditto.
+ (minmax_ii): Ditto.
+ (min_by_i): Ditto.
+ (max_by_i): Ditto.
+ (minmax_by_i): Ditto.
+ (member_i): Ditto.
+ (take_i): Ditto.
+ (take_while_i): Ditto.
+ (drop_i): Ditto.
+ (drop_while_i): Ditto.
+ (cycle_i): Ditto.
+
+ * enum.c (each_with_index): Update rdoc. each_with_index() takes
+ arguments that are passed through to each(), and a hash preserves
+ key order.
+
+Mon May 12 19:05:24 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_spawn_internal): remove calling run_exec_options()
+ because cannot restore after spawn. we'll fix this later.
+
+Mon May 12 18:16:44 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_spawn_internal): need to call run_exec_options() before
+ spawn if the platform doesn't have fork. [ruby-dev:34647]
+
+Mon May 12 15:20:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (ruby_vm_xmalloc): increase malloc_increase only if malloc
+ succeeds. failed malloc size can be huge. it may increase
+ malloc_limit too big which cause less GC and memory full.
+ (ruby_vm_xrealloc): ditto.
+ (rb_objspace): make params.limit and params.increase size_t.
+
+Mon May 12 15:04:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_prepare_re): made non static with small refactoring.
+
+ * ext/strscan/strscan.c (strscan_do_scan): should adjust encoding
+ before regex searching.
+
+Mon May 12 13:57:19 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): add NODE_OP_ASGN_{OR,AND}. "defined?(a||=1)"
+ should not operate assignment. [ruby-dev:34645]
+
+Mon May 12 13:29:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigzero_p): check from MSB to LSB. [ruby-dev:34649]
+
+Mon May 12 12:32:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUBYOPT): affected BASERUBY too. [ruby-talk:301514]
+
+Mon May 12 12:27:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (assign_heap_slot): fix condition for number of objects in
+ a heap.
+
+Mon May 12 12:24:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_to_i): really removed. [ruby-dev:34641]
+
+Mon May 12 11:15:55 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gc.c (assign_heap_slot): put the binary search routine in order.
+
+Mon May 12 10:52:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_gems), gem_prelude.rb: check if Gem is defined
+ instead of Gem::Enable.
+
+ * gem_prelude.rb (load_full_rubygems_library, const_missing): prevent
+ infinite recursion. [ruby-dev:34539]
+
+Sun May 11 23:19:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (all_iter_i, any_iter_i): reduced duplicated code.
+
+Sun May 11 22:54:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb (main): leave -I options for purelib.rb
+ untouched.
+
+ * bootstraptest/runner.rb (main): handle relative path -r options.
+
+Sun May 11 19:04:06 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_thread.rb: kill and join temporal threads that are
+ created in each test.
+
+Sun May 11 17:58:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_process.rb (TestProcess#with_stdin): defined.
+ (TestProcess#test_argv0_noarg): don't use redirect_fds.
+ [ruby-dev:34647]
+
+Sun May 11 17:57:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MINIRUBY): should not include extension library path.
+
+Sun May 11 14:40:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (SIZET2NUM): new macro.
+ (NUM2SIZET): new macro.
+
+ * gc.c (struct rb_objspace): use size_t for increment, length and
+ used for 64bit.
+ (allocate_heaps): ditto.
+ (assign_heap_slot): ditto.
+ (set_heaps_increment): ditto.
+ (gc_mark_all): ditto.
+ (is_pointer_to_heap): ditto.
+ (free_unused_heaps): ditto.
+ (gc_sweep): ditto.
+ (os_obj_of): ditto.
+ (rb_gc_call_finalizer_at_exit): ditto.
+ (count_objects): ditto.
+
+Sun May 11 13:14:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (thread_cleanup_func_before_exec): extracted from
+ thread_cleanup_func not to touch pthread data.
+ pthread_cond_destroy in forked process may cause deadlock on
+ Debian GNU/Linux Etch on x86, x86-64 and IA64.
+ this doesn't cause resource leak because the process will exec soon.
+ (terminate_atfork_before_exec_i): defined.
+ (rb_thread_atfork_before_exec): defined.
+
+ * include/ruby/intern.h (rb_thread_atfork_before_exec): declared.
+
+ * process.c (rb_exec_atfork): call rb_thread_atfork_before_exec
+ instead of rb_thread_atfork.
+
+ * io.c (popen_exec): call rb_thread_atfork_before_exec instead of
+ rb_thread_atfork.
+
+Sat May 10 22:14:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_trans): single '^' does not mean negation.
+ [ruby-dev:34632]
+
+ * string.c (tr_trans): should check src size, not str size.
+ [ruby-dev:34637]
+
+ * string.c (tr_trans): should not turn on modify flag if no
+ modification happens. [ruby-dev:34631]
+
+Sat May 10 18:11:18 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_line): zero length record separator should
+ split a string into paragraphs. [ruby-dev:34586]
+
+ * string.c (rb_str_each_line): RDoc updated.
+
+Sat May 10 11:36:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * vm.c (env_mark): mark env->block.self. prevent SEGV when GC occur
+ in prepare_iseq_build with gcc version 3.4.6 [FreeBSD] 20060305 on
+ FreeBSD/amd64.
+
+Fri May 9 19:16:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (timeofday): use monotonic clock. based on a patch
+ from zimbatm <zimbatm at oree.ch> in [ruby-core:16627].
+
+Fri May 9 07:47:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * cont.c (cont_restore_0): dynamic stack direction code should be
+ consistent with static one. [ruby-talk:301152]
+
+Fri May 9 00:03:50 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): operator assignment "a += b rescue c" should be
+ parsed as "a += (b rescue c)" just like normal assignment.
+ [ruby-talk:301000]
+
+Thu May 8 18:14:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_and): bit-wise operation should not take float
+ values. [ruby-dev:34612]
+
+ * bignum.c (rb_big_or): ditto.
+
+ * bignum.c (rb_big_xor): ditto.
+
+Thu May 8 17:44:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, ext/extmk.rb, lib/mkmf.rb: use absolute path for RUBYOPT.
+
+ * file.c (rb_find_file_ext): guard load_path from GC.
+ gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) optimizes
+ load_path by holding only RARRAY_LEN(load_path) and
+ RARRAY_PTR(load_path) in registers on IA64 GNU/Linux Etch.
+
+Thu May 8 16:41:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MINIRUBY), common.mk (RUBYOPT): add purelib.rb.
+ [ruby-core:16642]
+
+Thu May 8 16:00:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): ! and ? at the bottom are no longer part
+ of valid symbol names. [ruby-dev:34590]
+
+Thu May 8 15:36:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (rb_gc_save_machine_context): call FLUSH_REGISTER_WINDOWS
+ to mark the register stack from GC on another thread.
+
+Thu May 8 15:14:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): freeze temporary array.
+
+Thu May 8 13:19:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_mark): mark stat_insn_usage only when ptr is not
+ null.
+
+Thu May 8 10:44:04 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (sort_reentered): reentered check may be called from
+ Array#sort.
+
+Thu May 8 09:51:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (sort_1, sort_2): check for reentered and if elements are
+ accessible. [ruby-core:16679]
+
+Thu May 8 06:43:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_exe_r, dln_find_file_r): reentrant versions.
+
+ * file.c (rb_find_file_ext, rb_find_file), process.c (proc_exec_v),
+ (rb_proc_exec, proc_spawn_v, proc_spawn), ruby.c (process_options):
+ use reentrant versions.
+
+Thu May 8 06:27:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_key_p): thread local storage stores ID.
+
+Thu May 8 01:10:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_trans): should squeeze properly. [ruby-dev:34587]
+
+ * string.c (tr_trans): had a bug in treating multi-byte character
+ replacement.
+
+ * string.c (rb_str_delete_bang): need not to do anything for empty
+ strings.
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_delete): add
+ test for empty receiver.
+
+Wed May 7 20:19:18 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (process_options, ruby_set_argv): set encoding of rb_argv
+ after Init_prelude() because cannot load encoding extensions before
+ it.
+
+Wed May 7 20:00:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (bit_coerce): float should not be a valid operand of
+ bitwise operations. [ruby-dev:34583]
+
+Wed May 7 19:35:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_thread_key_p): should always convert symbol to ID.
+ [ruby-dev:34588]
+
+Wed May 7 19:30:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_divide): float division should floor() before
+ rounding into integer. [ruby-dev:34584]
+
+Wed May 7 18:02:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_to_i): remove obsolete method. preparation for
+ symbol GC.
+
+ * numeric.c (fix_to_sym): ditto.
+
+ * numeric.c (fix_id2name): ditto.
+
+Wed May 7 17:43:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_puts_ary): check recursion first. [ruby-dev:34580]
+
+Wed May 7 17:41:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_eval_body): initialize retval. [ruby-dev:34576]
+
+Wed May 7 13:02:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_fdiv): flo.fdiv(NaN) should result NaN.
+
+ * numeric.c (num_quo): renamed and moved from bignum.c.
+ [ruby-dev:34582]
+
+ * bignum.c (rb_big_fdiv): update RDoc description
+
+ * rational.c (nurat_s_new_m): small refactoring.
+
+ * bignum.c (rb_big2dbl): no need for forceful warning when
+ converting to float. overflow is a nature of float values.
+
+Wed May 7 00:54:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzreader_gets): may cause infinite loop.
+ a patch from Kouya <kouyataifu4 at gmail.com> in
+ [ruby-reference-manual:762].
+
+Tue May 6 02:08:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/io/nonblock/test_flush.rb: don't set Thread.abort_on_exception.
+
+ * test/net/imap/test_imap.rb: ensure disconnecting imap to terminate
+ receiver thread.
+
+Tue May 6 00:29:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * iseq.c (insn_operand_intern): should handle Qundef embedded in
+ operand. [ruby-core:16656]
+
+Tue May 6 00:00:02 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): should call compile_cpath() for
+ modules as well. [ruby-dev:34585]
+
+ * insns.def (defineclass): add undef handling.
+
+Mon May 5 23:49:40 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (defineclass): was using wrong variable. [ruby-dev:34592]
+
+Mon May 5 20:07:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fflush): IO#flush problem within threads. a patch from
+ <s.wanabe at gmail.com> in [ruby-dev:34595].
+
+Mon May 5 19:58:44 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): protect some expression from
+ segmentation fault. a patch from wanabe <s.wanabe at gmail.com>
+ in [ruby-dev:34593].
+
+Mon May 5 19:49:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_s_def): Struct.new(0) should not SEGV.
+ based on the patch from wanabe <s.wanabe at gmail.com> in
+ [ruby-dev:34594].
+
+ * struct.c (make_struct): call to_str on name object.
+
+Mon May 5 17:17:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (ruby_cleanup): wrap ruby_finalize_0 by SAVE_ROOT_JMPBUF to
+ avoid SEGV by at_exit { Fiber.new{}.resume } on IA64.
+
+Mon May 5 12:12:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_slice_bang): should adjust length before making
+ sub-array.
+
+Mon May 5 11:36:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_dup): should dupe corresponding information.
+ [ruby-dev:34581]
+
+Mon May 5 11:13:50 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (compile_cpath): use Qundef to denote cbase lookup.
+
+ * insns.def (defineclass): Qundef is passed for cbase.
+
+ * insns.def (setconstant): ditto.
+
+ * vm_insnhelper.c (vm_check_if_namespace): use rb_inspect()
+ instead of rb_obj_as_string() for better description.
+
+Mon May 5 02:10:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (set_heaps_increment): fix memory allocation strategy by
+ determining heaps_inc from heaps_used, not objects_delta.
+ (struct rb_objspace): delta removed. change increment, length and
+ used to long for LP64.
+ (objects_delta): removed.
+ (allocate_heaps): add next_heaps_length argument.
+ (init_heap): renamed from add_heap.
+ (garbage_collect): use heaps_increment in dont_gc.
+
+Sun May 4 21:09:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/getoptlong.rb: use $stderr instead of $deferr.
+
+Sun May 4 16:04:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * time.c (obj2nsec): fix string argument.
+
+Sun May 4 14:29:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (rb_obj_respond_to): check the result of respond_to? method
+ by RTEST.
+
+Sun May 4 12:57:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_each_line): return original string.
+
+Sat May 3 20:57:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_normal_exit):
+ new method.
+
+Sat May 3 18:10:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_timespec): raise TypeError for nil and other objects
+ which has no divmod method.
+
+Fri May 2 23:59:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (internal_read_func, internal_write_func): split from
+ internal_io_func.
+
+Fri May 2 23:55:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * variable.c (rb_define_hooked_variable): guard *var from GC to
+ prevent collecting argf under RUBY_DEBUG=gc_stress.
+
+Fri May 2 17:29:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): call to_int if step is not a numeric
+ value. [ruby-dev:34575]
+
+Fri May 2 16:10:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): do not forcefully convert steps into
+ integers. [ruby-dev:34571]
+
+Fri May 2 14:52:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el: move fontifying code from hook. a patch from
+ Phil Hagelberg <phil at hagelb.org> in [ruby-core:16636].
+
+Fri May 2 14:10:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): step may be bignum.
+
+Fri May 2 13:52:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (Init_Regexp): remove MatchData#select. [ruby-dev:34563]
+
+Thu May 1 23:59:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_divide), numeric.c (fix_divide): check for result
+ domain. [ruby-dev:34559]
+
+Thu May 1 23:57:06 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/net/telnet.rb: This patch from Brian Candler adds a FailEOF mode which
+ can be activated to have net/telnet raise EOFError exceptions when the
+ remote connection is closed. The default behavior remains unchanged though.
+
+Thu May 1 23:43:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_step): check if step can be converted to an integer.
+ [ruby-dev:34558]
+
+ * range.c (range_step): allow float step bigger than zero but less
+ than one. [ruby-dev:34557]
+
+Thu May 1 23:20:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_divide): return an integer for idiv.
+ [ruby-dev:34553]
+
+Thu May 1 20:47:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): should access converted hash value.
+ [ruby-dev:34555]
+
+Thu May 1 20:31:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_parse.rb (TestParse::test_void_expr_stmts_value):
+ shut up warning.
+
+ * rational.c (nurat_to_f): no need for forceful warning when
+ converting to float. overflow is a nature of float values.
+
+Thu May 1 16:10:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (env_delete_if): return enumerator if no block given.
+ [ruby-dev:34554]
+
+Wed Apr 30 21:36:40 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (url_encode): [ruby-dev:34497] ERB::Util#url_encode
+ bug fix. Reported by rubikitch.
+
+ * test/erb/test_erb.rb: ditto
+
+Wed Apr 30 20:11:36 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/net/telnet.rb: Fixing a bug where line endings would not be properly
+ escaped when the two character ending was broken up into separate TCP
+ packets. Issue reported and patched by Brian Candler.
+
+Wed Apr 30 18:03:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_load_path), vm_core.h (rb_vm_t): moved to VM.
+
+ * load.c (rb_get_load_path): returns absolute load path.
+
+ * load.c (load_path_getter): $LOAD_PATH getter.
+
+ * file.c (rb_find_file_ext, rb_find_file), ruby.c (push_include,
+ ruby_init_loadpath): use the accessor.
+
+ * vm.c (rb_vm_mark): mark load_path.
+
+Wed Apr 30 17:47:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_search): use local variable. a patch from wanabe
+ <s.wanabe AT gmail.com> in [ruby-dev:34537]. [ruby-dev:34492]
+
+Wed Apr 30 16:10:18 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval_intern.h: specify the values of the enumeration constants
+ explicitly. [ruby-dev:34489]
+
+Wed Apr 30 12:32:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (check_exec_redirect_fd): prohibit duplex IO.
+ (check_exec_fds): record maxhint even if close_others is not
+ specified.
+ (rb_exec_arg_fixup): renamed from rb_exec_arg_fix.
+
+Mon Apr 28 20:24:27 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_marshal_load): checks the given
+ denominator. [ruby-dev:34536]
+
+Mon Apr 28 14:21:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (POSFIXABLE): use FIXNUM_MAX+1 instead of
+ FIXNUM_MAX to make it possible to convert to double accurately on
+ environments with 64bit VALUE and 64bit double.
+ It assumes FLT_RADIX is 2.
+ fix RubyForge bug #14102.
+
+Mon Apr 28 12:48:57 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_exec_arg_addopt, rb_exec_arg_addopt): now can specify
+ close_exec on having no fork environment (but still meaningless).
+
+Mon Apr 28 11:11:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (run_exec_options): don't call FIX2INT for nil.
+
+Mon Apr 28 11:11:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (method_name): should return symbols instead of strings.
+ [ruby-dev:34531]
+
+Mon Apr 28 09:02:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_exec_arg_init): declared.
+ (rb_exec_arg_addopt): declared.
+ (rb_exec_arg_fix): declared.
+ (rb_exec_initarg): removed.
+ (rb_exec_getargs): removed.
+ (rb_exec_initarg2): removed.
+
+ * io.c (struct popen_arg): make execarg as a pointer.
+ (popen_exec): follow popen_arg change.
+ (pipe_open): add eargp argument. extract argc and argv from eargp.
+ use rb_exec_arg_addopt to add redirect options.
+ (pipe_open_v): set up struct rb_exec_arg.
+ (pipe_open_s): set up struct rb_exec_arg.
+
+ * process.c (rb_exec_arg_addopt): new function extracted from
+ check_exec_options_i.
+ (check_exec_options_i): use rb_exec_arg_addopt.
+ (rb_check_exec_options): opthash is always a hash now.
+ (rb_exec_getargs): make it static.
+ (rb_exec_fillarg): renamed from rb_exec_initarg2. don't set up
+ redirect_fds.
+ (rb_exec_arg_init): new function.
+ (rb_exec_arg_fix): new function.
+ (rb_f_exec): use rb_exec_arg_init and rb_exec_arg_fix. use
+ rb_exec_arg_addopt to set close_others option.
+ (run_exec_options): make close_others by default.
+ (rb_spawn_internal): use rb_exec_arg_init and rb_exec_arg_fix. use
+ rb_exec_arg_addopt to set close_others option.
+
+Sun Apr 27 18:59:04 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_expt): use f_rational_new2. [ruby-dev:34524]
+
+Sun Apr 27 15:23:40 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_count): add a GC.count method. This method returns
+ a GC invoking count.
+
+Sun Apr 27 12:20:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_vm_t), gc.c (rb_objspace, rb_newobj), vm.c
+ (Init_BareVM): per-VM object space support, which is disabled now.
+
+ * gc.c (rb_objspace_alloc), vm.c (Init_BareVM): should not use ruby
+ malloc here.
+
+ * gc.c (garbage_collect, etc): performance improvement by passing the
+ reference instead of referring the global variable in each functions.
+
+Sun Apr 27 08:06:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (ruby_set_argv): ARGV should be locale encoding.
+ [ruby-list:44861]
+
+Sun Apr 27 01:46:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.popen3w): removed.
+ (Open3.popen3): notice wait_thr.
+
+Sun Apr 27 01:13:05 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc, test/rdoc: Update to RDoc 2.0.0 r56.
+
+Sat Apr 26 21:30:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_hash_dup): declared.
+
+ * hash.c (rb_hash_dup): new function.
+
+ * process.c (rb_spawn_internal): don't modify option hash.
+
+Sat Apr 26 18:36:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c, signal.c, thread.c, thread_win32.c, include/ruby/intern.h:
+ suppress warnings.
+
+Sat Apr 26 17:42:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (builtin_types), gc.c (count_objects): added Complex and
+ Rational.
+
+Sat Apr 26 17:35:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_eNOERROR): renamed.
+
+Sat Apr 26 17:30:11 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h, gc.c: remove T_BLOCK.
+
+ * include/ruby/ruby.h: re-number T_xxx.
+
+Sat Apr 26 17:31:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_cProcessTms, rb_cProcessStatus): renamed.
+
+ * error.c (builtin_types), signal.c (siglist), st.c (primes),
+ struct.c (ref_func), time.c (months): constified.
+
+Sat Apr 26 13:00:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb: double fork is replaced by spawn with Process.detach.
+ (Open3.popen3w): new method to access the thread returned by
+ Process.detach.
+
+Sat Apr 26 00:47:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_spawn_internal): new function to specify
+ default_close_others.
+ (rb_spawn): specify default_close_others true.
+ (rb_f_system): call rb_spawn_internal with default_close_others as
+ false.
+
+Sat Apr 26 12:26:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_each): use INT2FIX() for fixnum values.
+
+Fri Apr 25 17:56:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (free_unused_heaps): preserve last used heap segment to
+ reduce malloc() call.
+
+Fri Apr 25 17:54:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (HEAP_SIZE): use smaller heap segment (2K) for more chance
+ to be freed. based on patch from authorNari <authornari at gmail.com>.
+
+ * gc.c (rb_newobj_from_heap): eventually allocate heap segments.
+
+Fri Apr 25 15:35:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_spawn): rb_exec_initarg() returns new argc and argv in
+ earg.
+
+Fri Apr 25 12:37:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (flatten): returns an instance of same class.
+ [ruby-core:16554]
+
+Fri Apr 25 10:52:27 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: define mode_t for umask.
+
+ * process.c (check_exec_options_i, check_exec_fds, run_exec_options):
+ support "close_others" only when fork(2) is available.
+
+Fri Apr 25 00:16:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c: include sys/stat.h for umask.
+
+Thu Apr 24 23:25:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_env_clear): declared.
+ (rb_io_mode_modenum): declared.
+ (rb_close_before_exec): declared.
+ (struct rb_exec_arg): add options and redirect_fds field.
+ (rb_check_argv): removed.
+ (rb_exec_initarg): declared.
+ (rb_exec_getargs): declared.
+ (rb_exec_initarg2): declared.
+ (rb_fork): add third argument: fds.
+
+ * io.c (max_file_descriptor): new static variable to record maximum
+ file descriptor ruby used.
+ (UPDATE_MAXFD): new macro.
+ (UPDATE_MAXFD_PIPE): new macro.
+ (rb_io_mode_modenum): externed.
+ (rb_sysopen): update max_file_descriptor.
+ (rb_close_before_exec): new function.
+ (popen_exec): redirection removed because it is done by extended
+ spawn mechanism.
+ (pipe_open): generate a hash for spawn options to specify
+ redirections.
+ (pipe_open_v): use rb_exec_getargs.
+ (pipe_open_s): use rb_exec_getargs.
+ (rb_io_initialize): update max_file_descriptor.
+
+ * process.c (hide_obj): new function.
+ (check_exec_redirect_fd): new function.
+ (check_exec_redirect): new function.
+ (check_exec_options_i): new function.
+ (check_exec_fds): new function.
+ (rb_check_exec_options): new function.
+ (check_exec_env_i): new function.
+ (rb_check_exec_env): new function.
+ (rb_exec_getargs): new function.
+ (rb_exec_initarg2): new function.
+ (rb_exec_initarg): new function.
+ (rb_f_exec): use rb_exec_initarg.
+ (intcmp): new function.
+ (run_exec_dup2): new function.
+ (run_exec_close): new function.
+ (run_exec_open): new function.
+ (run_exec_pgroup): new function.
+ (run_exec_rlimit): new function.
+ (run_exec_options): new function.
+ (rb_exec): call run_exec_options.
+ (move_fds_to_avoid_crash): new function.
+ (pipe_nocrash): new function.
+ (rb_fork): use pipe_nocrash to avoid file descriptor conflicts.
+ (rb_spawn): use rb_exec_initarg.
+ (rlimit_resource_name2int): extracted from rlimit_resource_type.
+ (rlimit_type_by_hname): new function.
+ (rlimit_type_by_lname): new function.
+ (rlimit_resource_type): use rlimit_type_by_hname.
+ (proc_daemon): add fds argument for rb_fork.
+
+ * hash.c (rb_env_clear): renamed from env_clear and externed.
+
+ [ruby-dev:34086]
+
+Thu Apr 24 23:00:58 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_thread.rb: fix typos.
+
+ * test/ruby/envutil.rb (rubyexec): move Open3.popen3 call into timeout
+ block.
+
+Thu Apr 24 22:34:52 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_comparable.rb: new tests for Comparable, to achieve
+ 100% test coverage of compar.c.
+
+Thu Apr 24 17:19:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (process_options): set safe_level before loading script.
+ [ruby-dev:34421]
+
+Thu Apr 24 14:15:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_1): prior files with extensions to files sans
+ extensions. [ruby-core:16517]
+
+Thu Apr 24 00:26:06 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/descriptions.rb: fixed wrong class nestings.
+
+Thu Apr 24 00:20:01 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_settracefunc.rb: add a test for set_trace_func.
+
+ * test/ruby/envutil.rb: move "rubyexec" method from test_rubyoptions.rb.
+
+ * test/ruby/test_rubyoptions.rb: use rubyexec in envutil.rb.
+
+ * test/ruby/test_thread.rb: add tests to achieve over 90% test coverage
+ of thread.c.
+
+Wed Apr 23 15:28:52 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create): failed
+ notice moved from comment to assertion message. [ruby-dev:29127]
+
+Wed Apr 23 11:49:54 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#each, SortedSet#each, TC_Set#test_each): Return
+ an enumerator if no block is given.
+
+Wed Apr 23 00:36:03 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/openssl/test_ssl.rb (start_server): add timeout to server.join.
+
+Wed Apr 23 00:18:45 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_symbol.rb (TestSymbol#test_to_proc): Improve
+ tests of Symbol#to_proc.
+
+Tue Apr 22 22:40:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/drb/drb.rb (DRb::DRbServer::check_insecure_method): should
+ check method names by symbols, not by strings. a patch from
+ Kazuhiro NISHIYAMA <zn at mbf.nifty.com> in [ruby-dev:34487].
+
+Tue Apr 22 22:15:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-{case,label}-indent): up list from
+ indentation point.
+
+Tue Apr 22 21:09:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (score_table_A0, score_table_F0):
+ type of content is unsigned char.
+
+ * ext/nkf/nkf-utf8/nkf.c (push_broken_buf): 'c' is nkf_char.
+
+ * ext/nkf/nkf-utf8/nkf.c (push_broken_buf): enc is 0 or pointer.
+
+ * ext/nkf//nkf.c (options): type of option is unsigned char.
+
+Tue Apr 22 20:51:58 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (z_conv): characters must be nkf_char.
+
+Tue Apr 22 19:23:05 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_initialize): Remove an undocumented
+ feature (passing a block to the constructor) that's broken.
+ This is not what I intended.
+
+Tue Apr 22 17:54:05 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm_core.h (exec_event_hooks): ``inline'' is a type modifier, not
+ a type itself.
+
+Tue Apr 22 16:24:27 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): do not use C++ comments.
+
+Tue Apr 22 16:23:53 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: use AC_USE_SYSTEM_EXTENSIONS.
+
+Tue Apr 22 16:23:16 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm_evalbody.c (DECL_SC_REG): use __asm__ instead.
+
+Tue Apr 22 16:18:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_evalbody.c (DECL_SC_REG): typo fixed.
+
+Tue Apr 22 15:25:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (struct timespec): needs time.h according to POSIX.
+
+Tue Apr 22 13:19:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_thread_stop_timer_thread): should clear
+ timer_thread_id after stopping it.
+
+Tue Apr 22 13:12:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_join): remove the current thread from the join list
+ of the target thread.
+
+Tue Apr 22 12:03:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_ev_const): search from the base klass if it
+ is given.
+
+Tue Apr 22 09:58:13 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c: avoid warnings.
+
+Tue Apr 22 09:56:51 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (eaccess): workaround for recent msvcrt's behavior.
+ [ruby-core:16460]
+
+Mon Apr 21 19:08:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_body): call rb_io_check_readable and
+ rb_io_check_writable.
+
+Mon Apr 21 17:45:27 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dbm/dbm.c (fdbm_each_value, fdbm_each_key, fdbm_each_pair):
+ GDBM#{each,each_pair,each_key,each_value}: Return an enumerator
+ if no block is given.
+
+ * ext/gdbm/gdbm.c (fgdbm_each_value, fgdbm_each_key,
+ fgdbm_each_pair): GDBM#{each,each_pair,each_key,each_value}:
+ Return an enumerator if no block is given.
+
+ * ext/openssl/ossl_config.c (ossl_config_each):
+ OpenSSL::Config#each: Return an enumerator if no block is given.
+
+ * ext/readline/readline.c (hist_each): Readline::HISTORY#each:
+ Return an enumerator if no block is given.
+
+ * ext/sdbm/init.c (fsdbm_each_value, fsdbm_each_key,
+ fsdbm_each_pair): SDBM#{each,each_pair,each_key,each_value}:
+ Return an enumerator if no block is given.
+
+ * ext/stringio/stringio.c (strio_each_byte, strio_each):
+ StringIO#{each,each_line,each_byte}: Return an enumerator if no
+ block is given.
+
+ * ext/stringio/stringio.c (Init_stringio): Add #lines and #bytes,
+ which are aliases to #each_line and #each_byte, respectively.
+
+ * ext/win32ole/win32ole.c (fole_each): WIN32OLE#each: Return an
+ enumerator if no block is given.
+
+ * ext/zlib/zlib.c (rb_gzreader_each_byte, rb_gzreader_each):
+ Zlib::GzipReader#{each,each_line,each_byte}: Return an
+ enumerator if no block is given.
+
+ * ext/zlib/zlib.c (Init_zlib): Add Zlib::GzipReader#lines and
+ #bytes, which are aliases to #each_line and #each_byte,
+ respectively.
+
+Mon Apr 21 17:01:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_compile_with_option): check if src is a string.
+ [ruby-core:16453]
+
+Mon Apr 21 16:06:47 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_init): preserve the method name in ID.
+
+ * enumerator.c (enumerator_each): need not to call rb_to_id().
+
+ * enumerator.c (enumerator_with_index): ditto.
+
+Mon Apr 21 11:00:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): capture exception during defined?
+ evaluation. a patch from wanabe <s.wanabe at gmail.com> in
+ [ruby-dev:34461]. [ruby-core:16010]
+
+Mon Apr 21 10:06:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c: should include <errno.h> to refer to errno.
+
+Mon Apr 21 09:58:04 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (rb_strftime): check errno to detect strftime(3)'s error.
+ this is workaround for recent version of MSVCRT.
+ [ruby-dev:34456]
+
+Mon Apr 21 08:54:30 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (ruby_xmalloc): use size_t for malloc argument instead of long.
+
+Sun Apr 20 21:00:21 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c, include/ruby/ruby.h: Export rb_cEnumerator.
+
+Sun Apr 20 20:47:50 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c: Resolve the method every time an enumeration
+ method is run, not once when the enumerator is initialized as it
+ was before, so that method_missing() and method (re)definition
+ afterwards are both in effect; pointed out in: [ruby-core:16441]
+
+Sun Apr 20 15:11:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_rbuf_to_dst): removed.
+ (copy_stream_fallback_body): don't bypass write method.
+ (copy_stream_body): simplified.
+
+Sun Apr 20 15:01:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct iseq_compile_data): moved label_no from
+ new_label_body().
+
+ * compile.c (iseq_set_exception_table): allocates catch_table only
+ when entries exist.
+
+ * compile.c (struct iseq_link_element, struct iseq_insn_data): made
+ enum for debuggers.
+
+Sun Apr 20 14:44:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): fix for splat in when and rescue.
+ a patch from wanabe <s.wanabe AT gmail.com> in [ruby-dev:34429].
+ [ruby-core:14537]
+
+Sun Apr 20 13:55:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_fallback): write directly (bypassing write method)
+ if possible.
+
+Sun Apr 20 12:49:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_fallback): read directly (bypassing readpartial
+ method) if possible.
+
+Sun Apr 20 04:45:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_body): use readpartial and write method for
+ non-IOs such as StringIO and ARGF.
+
+Fri Apr 18 20:57:33 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: add tests to achieve over 95% test coverage
+ of array.c.
+
+Fri Apr 18 17:37:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_mark_locations): get rid of underflow.
+
+ * gc.c (mark_current_machine_context): check if the main thread stack
+ position may shrink under the initialized position. [ruby-core:16436]
+
+Thu Apr 17 22:20:52 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enc/trans/utf_16_32.c (fun_so_to_utf_16be, fun_so_to_utf_16le): add
+ parentheses to remove warnings of gcc.
+
+ * io.c (rb_io_getc): remove unused variables.
+
+ * compile.c (NODE_NEXT, NODE_REDO): remove unused labels.
+
+ * ext/nkf/nkf.c (rb_nkf_convert): remove unused variables.
+
+ * ext/syck/rubyext.c (syck_resolver_initialize,
+ syck_resolver_detect_implicit, syck_emitter_emit): remove unused
+ variables.
+
+Thu Apr 17 20:12:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rubyoptions.rb (test_search): enable some assertions.
+
+ * test/ruby/test_rubyoptions.rb: flunk message in win32.
+
+Thu Apr 17 16:07:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (ruby): run in C locale.
+
+ * test/ruby/test_rubyoptions.rb (test_encoding): --encoding does not
+ affect source code.
+
+Thu Apr 17 00:45:41 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb (test_rlimit_nofile): reset RLIMIT_NOFILE
+ before exit (for gcov).
+
+ * test/ruby/test_rubyoptions.rb: new tests for option of ruby
+ interpreter, to achieve over 95% test coverage of ruby.c.
+
+Wed Apr 16 02:40:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): preludes and parser need to run in safe
+ level 0. [ruby-dev:34407]
+
+Wed Apr 16 02:26:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): dln_find_file returns the pointer to a
+ static buffer, so should copy it. [ruby-dev:34409]
+
+Tue Apr 15 23:08:46 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/xmlrpc/client.rb: fix cookie handling. [ruby-dev:34403]
+
+ * test/xmlrpc/test_cookie.rb: add a test for the above fix.
+
+Tue Apr 15 19:20:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c: #undef rb_argv moved before #define.
+
+Tue Apr 15 18:02:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_argv): replaced with rb_get_argv().
+ [ruby-Bugs-19514]
+
+Tue Apr 15 17:10:59 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/net/http.rb, lib/net/smtp.rb, lib/net/pop.rb: update
+ URLs of Japanese documents.
+
+Tue Apr 15 16:45:14 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_symbol.rb (TestSymbol#test_to_proc): add tests.
+
+Tue Apr 15 15:38:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-encoding-map): added shift-jis for older
+ versions.
+
+ * misc/ruby-mode.el (ruby-mode-set-encoding):
+ coding-system-to-mime-charset is not a standard function.
+ [carbon-emacs:795]
+ fix for the case that magic comment exists but coding system is
+ absent.
+
+ * misc/ruby-mode.el (ruby-mode): use write-contents-functions or
+ write-contents-hooks for older versions.
+
+Tue Apr 15 07:21:21 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_div): [ruby-dev:34357]
+
+ * complex.c (nucomp_abs): use hypot.
+
+ * complex.c (nucomp_quo): do not force conversion.
+
+ * test/ruby/test_complex.rb: omitted some meaningless tests.
+
+Mon Apr 14 23:25:50 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_objectspace.rb: add a test for
+ ObjectSpace.count_objects.
+
+Mon Apr 14 22:44:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (SET_EXTERNAL_ENCODING): avoid call rb_enc_check() on
+ half-baked result string.
+
+ * re.c (rb_reg_search): make search reentrant. [ruby-dev:34223]
+
+ * test/ruby/test_parse.rb (TestParse::test_global_variable):
+ should preserve $& variable.
+
+Mon Apr 14 17:23:27 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c (rb_hash_delete_if, rb_hash_reject_bang, env_delete_if,
+ env_reject_bang): Return an enumerator if no block is given.
+
+Mon Apr 14 14:33:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c, compile.h (compile_debug): made runtime option.
+
+ * debug.c (ruby_debug_print_indent): returns if debug_level exceeds
+ the threshold.
+
+ * debug.c (ruby_debug_printf): printf to stderr.
+
+ * iseq.c (make_compile_option, make_compile_option_value): added
+ debug_level option.
+
+ * vm_core.h (rb_compile_option_t): added debug_level.
+
+ * vm_core.h (struct iseq_compile_data): added node_level.
+
+Mon Apr 14 12:52:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (Init_stack): use ruby_init_stack. [ruby-dev:34350]
+
+ * gc.c (rb_objspace_t): packed globals. [ruby-dev:34348]
+
+ * gc.c (finalizers): removed. [ruby-dev:34349]
+
+Mon Apr 14 11:30:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_new): new integer overflow check condition.
+ suggested by TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com> in
+ [ruby-dev:34156].
+
+ * array.c (rb_ary_initialize): ditto.
+
+Mon Apr 14 00:51:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_parse.rb: add tests to achieve over 95% test coverage
+ of parse.y.
+
+Sun Apr 13 23:53:58 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (enum_cycle): Make Enumerable#cycle do a finite loop when
+ the number of cycles is specified.
+
+ * array.c (rb_ary_cycle): Ditto for Array#cycle.
+
+Sun Apr 13 18:52:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (lock_func): should not check interrupts in
+ blocking region. [ruby-dev:34378]
+
+Sat Apr 12 12:41:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_exec_node, ruby_run_node), ruby.c (process_options):
+ use iseq instead of NODE.
+
+ * gc.c (source_filenames): removed.
+
+ * include/ruby/intern.h, parse.y (yycompile, parser_mark, parser_free,
+ ripper_initialize): rb_source_filename() is no longer used.
+
+ * compile.c, compile.h (ERROR_ARGS), parse.y (node_newnode, fixpos,
+ parser_warn, e_option_supplied, warn_unless_e_option, range_op,
+ cond0): nd_file is no longer used.
+
+Sat Apr 12 12:17:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * prelude.rb (require_relative): move require_relative from
+ lib/require_relative.rb. [ruby-core:16356]
+
+ * lib/require_relative.rb: removed.
+
+Sat Apr 12 05:55:57 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*, test/rubygems*: Update to RubyGems 1.1.1 r1701.
+
+Sat Apr 12 03:13:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): set external encoding.
+
+ * file.c (rb_file_s_basename, rb_file_s_dirname, rb_file_s_extname):
+ copy encoding.
+
+Fri Apr 11 17:35:06 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (count_i): modified to shut warning up.
+
+Fri Apr 11 17:25:09 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (count_i, count_iter_i, enum_count, enum_find_index):
+ Reduce code.
+
+Fri Apr 11 17:06:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (find_index_i): modified to shut warning up.
+
+ * enum.c (find_index_iter_i): ditto.
+
+Fri Apr 11 16:44:43 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (enum_find_index): Add support for find_index(obj);
+ [ruby-dev:34313].
+
+ * array.c (rb_ary_index): Define find_index as an alias to index.
+
+Fri Apr 11 16:42:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/yaml/store.rb (YAML::load): modified to support empty
+ database.
+
+Fri Apr 11 08:05:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): add volatile to avoid potential GC bug. a
+ patch from Tomoyuki Chikanaga <chikanag at nippon-control-system.co.jp>
+ in [ruby-dev:34312].
+
+Thu Apr 10 23:08:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/pstore.rb (PStore::dump, PStore::load): allow subclass
+ overriding. [ruby-dev:34305]
+
+ * lib/yaml/store.rb (YAML::Store::marshal_dump_supports_canonical_option?):
+ add a method to support faster PStore.
+
+Thu Apr 10 20:36:45 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/rdebug.el, misc/README: Remove rdebug.el as per request
+ from the maintainer and mention the ruby-debug project at
+ RubyForge in README; bug#19043.
+
+Thu Apr 10 19:41:00 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * eval.c (rb_f_loop): Mention StopIteration in the document.
+
+Thu Apr 10 19:23:55 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_pop_m, rb_ary_shift_m): Update documents for
+ #pop() and #shift().
+
+ * array.c (rb_ary_slice_bang): Update document. Assigning
+ array[*args]= nil no longer removes elements.
+
+Thu Apr 10 16:58:44 2008 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (w_object): TYPE_USERDEF assigns id for ivars first.
+ [ruby-dev:34159] by nagachika.
+
+Thu Apr 10 15:03:47 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/generator.rb: removed obsolete library. [ruby-core:16233]
+
+ * test/test_generator.rb: removed as well. [ruby-dev:34306]
+
+ * lib/pstore.rb: replaced by Hongli Lai's faster version.
+
+Thu Apr 10 10:27:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (native_sleep): sleep_cond is initialized at
+ creation. [ruby-Patches-19361].
+
+Wed Apr 9 14:43:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (lock_func): optimized and checks for interrupt_flag.
+ based on a patch from Sylvain Joyeux in [ruby-Patches-19361] and
+ [ruby-Patches-19362].
+
+Wed Apr 9 12:12:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_thread.rb: new tests from Sylvain Joyeux in
+ [ruby-Patches-19361].
+
+Tue Apr 8 21:36:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_mutex_sleep): ensures to re-acquire at waking up.
+ [ruby-Patches-19361]
+
+Tue Apr 8 11:00:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/complex.rb: remove Math first before overwriting by CMath.
+
+Tue Apr 8 10:34:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * load.c (rb_require_safe): should check fname path after $SAFE is
+ properly set. [ruby-dev:34268]
+
+ * re.c (rb_reg_quote): should always copy the quoting string.
+ [ruby-core:16235]
+
+Tue Apr 8 10:30:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (prelude.c): depends on enc/prelude.rb.
+
+ * enc/prelude.rb: fixed initial library names.
+
+Tue Apr 8 03:39:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_provided): check expanded path for relative path
+ features, loading or loaded features are already expanded in 1.9.
+
+ * variable.c (rb_autoload_load): no needs to check if provided before
+ rb_require_safe. [ruby-dev:34266]
+
+Mon Apr 7 22:41:21 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: cancelled recent changes (except to remove rdiv).
+
+ * bignum.c: ditto.
+
+ * bignum.c: added rb_big_idiv.
+
+Mon Apr 7 15:51:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_init_db): moved to enc/encdb.c.
+
+ * transcode.c (init_transcoder_table): moved to enc/trans/transdb.c.
+
+ * enc/depend (enc/encdb.o enc/trans/transdb.o): depend on
+ corresponding headers.
+
+ * common.mk (COMMONOBJS): moved transcode.o from OBJS
+
+Mon Apr 7 12:26:32 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: add a known-bug.
+
+Mon Apr 7 12:15:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_each_func): should not leave a variable
+ uninitialized, which could cause SEGV.
+
+ * range.c (range_step): removed duplicated and unreachable code.
+
+Mon Apr 7 02:12:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): need not to check if tainted.
+ [ruby-dev:34219]
+
+Sun Apr 6 09:45:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_tell): check if closed. [ruby-core:16223]
+
+Sat Apr 5 23:17:20 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb: new.
+
+ * lib/complex.rb: depends lib/cmath.rb.
+
+ * lib/rational.rb: added rdiv.
+
+ * complex.c: removed some math functions.
+
+Sat Apr 5 05:50:57 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_rb.rb: Fix uninitialized variable warnings.
+
+ * lib/rdoc/generator/html.rb: ditto.
+
+ * lib/rdoc/options.rb: Fix shadowed variable warning.
+
+ * lib/webrick/httprequest.rb: Fix redefined method warning.
+
+Sat Apr 5 02:13:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cmpint): moved from compar.c, to check bignum
+ zero.
+
+Fri Apr 4 23:24:06 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_memsearch_qs): wrong boundary condition.
+
+ * re.c (rb_memsearch_qs_utf8): ditto.
+
+Fri Apr 4 14:11:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_memsearch_qs): wrong boundary condition. a patch from
+ wanabe <s.wanabe AT gmail.com> in [ruby-dev:34248].
+
+Fri Apr 4 05:57:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/pop.rb (Net::POP3::do_finish): clear @n_mails and
+ @n_bytes as well. [ruby-core:16144]
+
+Fri Apr 4 01:59:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): add step for each iteration if begin and
+ end are numeric. [ruby-core:15990]
+
+Fri Apr 4 00:42:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (Init_Bignum): rdiv method removed. [ruby-dev:34242]
+
+ * complex.c (nucomp_quo): ditto.
+
+ * numeric.c (num_rdiv): ditto.
+
+ * rational.c (nurat_div): ditto.
+
+ * complex.c (nucomp_fdiv): fdiv implementation restored.
+
+ * numeric.c (num_quo): RDoc updated.
+
+Thu Apr 3 21:51:45 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_int_check): function for DRY real check.
+
+ * complex.c (nucomp_{add,sub,mul,div,expt}): use rb_num_coerce_bin().
+
+Thu Apr 3 19:59:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defineclass): check if cbase is a class or a module.
+ [ruby-core:16118]
+
+Thu Apr 3 14:42:11 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (INSNS): add insns_info.inc.
+
+ * common.mk (INSNS): make incs separately for nmake.
+
+Thu Apr 3 13:20:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (endb.h, transdb.h, prelude.c): depend on $(PREP) and
+ check if really changed. [ruby-core:16102]
+
+ * Makefile.in, common.mk, configure.in, {win32,bcc32}/Makefile.sub
+ (MINIOBJS, ARCHMINIOBJS): separated.
+
+Thu Apr 3 09:00:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_sequence, iseq_insns_unification,
+ insn_data_to_s_detail): constified.
+
+ * iseq.c (insn_operand_intern, ruby_iseq_disasm_insn): ditto.
+
+ * template/{insns_info,opt_sc,optunifs}.inc.tmpl: ditto.
+
+ * tool/instruction.rb (OptUnifsIncGenerator): ditto.
+
+Thu Apr 3 08:46:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_include): add RDoc to describe that comparison
+ for numeric is done according magnitude of values.
+ [ruby-core:15907]
+
+Wed Apr 2 22:29:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rational.c (nurat_int_check): function for DRY integer check.
+
+ * numeric.c (num_rdiv): should always return rational number.
+
+ * rational.c (nurat_add, nurat_sub, nurat_mul, nurat_fdiv,
+ nurat_cmp): use rb_num_coerce_bin().
+
+ * rational.c (nurat_division): does / and rdiv.
+
+ * .gdbinit (rp): no longer use rb_p().
+
+Wed Apr 2 06:52:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * .gdbinit (rp): supports rational and complex numbers. it's
+ cheating since it uses rb_p().
+
+Wed Apr 2 06:24:06 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/node.h: add new constants for rb_call()'s scope.
+
+ * eval.c (iterate_method): use CALL_* scope constant to specify
+ proper scope value.
+
+ * eval.c (rb_each, rb_apply, rb_funcall, rb_funcall2, rb_funcall3):
+ ditto.
+
+Tue Apr 1 21:19:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rational.c: need to include <float.h> just once.
+
+Tue Apr 1 16:40:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big2dbl): more precise conversion at edge cases.
+ [ruby-dev:34195]
+
+Tue Apr 1 14:43:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: get rid of empty expansion.
+
+ * configure.in: _setjmp is available but _longjmp is not on mingw.
+
+Tue Apr 1 09:41:22 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc,win}32/Makefile (config.h): need to define RUBY_SETJMP, etc.
+
+Tue Apr 1 07:31:58 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems* test/rubygems*: Import RubyGems 1.1.0.
+
+Tue Apr 1 03:20:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_SETJMP, RUBY_LONGJMP, RUBY_JMP_BUF): prefers
+ _setjmp over setjmp and sigsetjmp. [ruby-core:16023]
+ __builtin_setjmp cannot handle a variable.
+
+ * configure.in (--with-setjmp-type): new option to override the
+ default rule in the above.
+
+ * eval_intern.h (ruby_setjmp, ruby_longjmp), gc.c (rb_setjmp),
+ vm_core.h (rb_jmpbuf_t): use RUBY_SETJMP, RUBY_LONGJMP and
+ RUBY_JMP_BUF.
+
+Tue Apr 1 01:55:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::Config.default_config_hash): requires
+ win32/resolv to use Win32::Resolv. [ruby-dev:34138]
+
+Tue Apr 1 01:40:58 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: adopted the ruby's style.
+
+ * rational.c: ditto.
+
+Tue Apr 1 00:17:35 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: revert.
+
+Mon Mar 31 18:57:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub (config.h): define ssize_t.
+
+ * io.c (copy_stream_body): some platform don't have O_NOCTTY.
+
+Mon Mar 31 18:42:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check for ssize_t. [ruby-dev:34184]
+
+Mon Mar 31 14:45:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_quo): should convert its operand to Rational.
+
+ * rational.c (string_to_r_strict): should raise TypeError.
+
+ * bignum.c (Init_Bignum): should not redefine Bignum#div.
+ Numeric#div will do. [ruby-dev:34066]
+
+Mon Mar 31 04:05:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_getc): set coderange while getting characters.
+
+Sun Mar 30 23:16:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (proc_dup): should copy is_lambda attribute as well.
+ [ruby-talk:296244]
+
+Sun Mar 30 15:33:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c: IO.copy_stream implemented. [ruby-dev:33843]
+
+ * thread.c (rb_fd_select): new function.
+
+ * configure.in (sys/sendfile.h): check the header file.
+ (sendfile): check the function.
+ (pread): check the function.
+
+Sat Mar 29 14:18:41 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/*: full update Ruby/Tk to support Ruby(1.9|1.8) and Tc/Tk8.5.
+
+ * ext/tk/lib/tkextlib/tile.rb: [incompatible] remove TileWidgets'
+ instate/state/identify method to avoid the conflict with standard
+ widget options. Those methods are renamed to ttk_instate/ttk_state/
+ ttk_identify (tile_instate/tile_state/tile_identify are available
+ too). Although I don't recommend, if you really need old methods,
+ please define "Tk::USE_OBSOLETE_TILE_STATE_METHOD = true" before
+ "require 'tkextlib/tile'".
+
+ * ext/tk/lib/tkextlib/tile.rb: "Tk::Tile::__Import_Tile_Widgets__!"
+ is obsolete. It outputs warning. To control default widget set,
+ use "Tk.default_widget_set = :Ttk".
+
+ * ext/tk/lib/tk.rb: __IGNORE_UNKNOWN_CONFIGURE_OPTION__ method and
+ __set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!(mode) method are defined
+ as module methods of TkConfigMethod. It may help users to wrap old
+ Ruby/Tk scripts (use standard widgets) to force to use Ttk widgets.
+ Ttk widgets don't have some options of standard widgets which are
+ control the view of widgets. When set ignore-mode true, configure
+ method tries to ignore such unknown options with no exception.
+ Of course, it may raise other troubles on the GUI design.
+ So, those are a little danger methods.
+
+ * ext/tk/lib/tk/itemconfig.rb: __IGNORE_UNKNOWN_CONFIGURE_OPTION__
+ method and __set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!(mode) method
+ are defined as module methods of TkItemConfigMethod as the same
+ purpose as TkConfigMethod's ones.
+
+ * ext/tk/sample/ttk_wrapper.rb: A new example. This is a tool for
+ wrapping old Ruby/Tk scripts (which use standard widgets) to use
+ Ttk (Tile) widgets as default.
+
+ * ext/tk/sample/tkextlib/tile/demo.rb: use ttk_instate/ttk_state
+ method instead of instate/state method.
+
+ * ext/tk/lib/tk/root, ext/tk/lib/tk/namespace.rb,
+ ext/tk/lib/tk/text.rb, ext/tk/lib/tkextlib/*: some 'instance_eval's
+ are replaced to "instance_exec(self)".
+
+ * ext/tk/lib/tk/event.rb: bug fix on KEY_TBL and PROC_TBL (?x is not
+ a character code on Ruby1.9).
+
+ * ext/tk/lib/tk/variable.rb: support new style of operation argument
+ on Tcl/Tk's 'trace' command for variables.
+
+ * ext/tk/sample/demos-jp/widget, ext/tk/sample/demos-en/widget: bug fix
+
+ * ext/tk/sample/demos-jp/textpeer.rb,
+ ext/tk/sample/demos-en/textpeer.rb: new widget demo.
+
+ * ext/tk/tcltklib.c: decrease SEGV troubles (probably)
+
+ * ext/tk/lib/tk.rb: remove Thread.critical access if Ruby1.9
+
+ * ext/tk/lib/tk/multi-tk.rb: support Ruby1.9 (probably)
+
+ * ext/tk/lib/tkextlib/tile.rb: add method to define Tcl/Tk command
+ to make Tcl/Tk theme sources (based on different version of Tile
+ extension) available.
+ (Tk::Tile::__define_LoadImages_proc_for_compatibility__)
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/wm.rb: support dockable frames
+ (Tcl/Tk8.5 feature). 'wm' command can treat many kinds of widgets
+ as toplevel widgets.
+
+ * ext/tk/lib/tkextlib/tile/style.rb: ditto.
+ (Tk::Tile::Style.__define_wrapper_proc_for_compatibility__)
+
+ * ext/tk/lib/tk/font.rb: add actual_hash and metrics_hash to get
+ properties as a hash. metrics_hash method returns a boolean value
+ for 'fixed' option. But metrics method returns numeric value
+ (0 or 1) for 'fixed' option, because of backward compatibility.
+
+ * ext/tk/lib/tk/timer.rb: sometimes fail to set callback procedure.
+
+ * ext/tk/lib/tk.rb: add Tk.sleep and Tk.wakeup method. Tk.sleep
+ doesn't block the eventloop. It will be better to use the method
+ in event callbacks.
+
+ * ext/tk/sample/tksleep_sample.rb: sample script about Tk.sleep.
+
+Thu Mar 27 20:44:22 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (f_lcm): removed.
+
+ * rational.c (rb_lcm, rb_gcdlcm): added.
+
+ * lib/complex.rb (gcd, lcm, gcdlcm): removed.
+
+ * lib/rational.rb (gcd, lcm, gcdlcm): ditto.
+
+Wed Mar 26 18:11:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_constants): rdoc updated. a patch from
+ Florian Gilcher <flo AT andersground.net> in [ruby-core:16009].
+
+Wed Mar 26 00:55:28 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rand.rb: add tests to achieve over 95% test coverage
+ of random.c.
+
+Wed Mar 26 00:28:55 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rational.rb: add tests to achieve over 90% test
+ coverage of rational.c.
+
+ * test/ruby/test_complex.rb: ditto for complex.c.
+
+Tue Mar 25 19:34:05 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_knownbug.rb: add tests. [ruby-dev:34128]
+
+Tue Mar 25 19:09:04 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (ary_new): fix size check. [ruby-dev:34123]
+
+ * array.c (rb_ary_take, rb_ary_drop): check negative size and use
+ NUM2LONG instead of FIX2LONG. [ruby-dev:34123]
+
+ * enum.c (enum_take, enum_drop): check negative size.
+
+ * test/ruby/test_array.rb: add tests for above.
+
+Tue Mar 25 16:32:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): checks if the word is empty.
+
+ * ruby.c (process_options): typo fixed. [ruby-dev:34122]
+
+Tue Mar 25 15:26:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (defined_expr): false short-circuit destination label may
+ be needed. [ruby-talk:295296]
+
+ * compile.c (iseq_compile_each): put nil if false short-circuit is
+ created.
+
+ * compile.c (compile_massign_opt): no need to use alloca.
+
+Mon Mar 24 19:23:52 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * parse.y (debug_lines): Always prepare a new array for each
+ file's SCRIPT_LINES__ storage, instead of appending source lines
+ every time a file is re-loaded; submitted by Rocky Bernstein in
+ #18517.
+
+Mon Mar 24 10:25:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: sitearch should use target_cpu. [ruby-core:15986]
+
+Sun Mar 23 02:51:57 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rlimit_resource_value): use NUM2RLIM.
+
+Sun Mar 23 02:28:01 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: fixed. [ruby-dev:34109]
+
+ * rational.c: ditto.
+
+Fri Mar 21 21:32:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_f_gets, rb_f_readline, rb_f_readlines): delegates to ARGF
+ as well as puts and putc. [ruby-dev:34100]
+
+Fri Mar 21 21:26:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::Hosts): should not use win32/resolv on cygwin.
+ [ruby-dev:29945], [ruby-dev:34095]
+
+ * lib/win32/registry.rb (Win32::Registry.expand_environ): try upcased
+ name too for cygwin. [ruby-dev:29945]
+
+ * lib/win32/resolv.rb (Win32::Resolv.get_hosts_path): use expand_path.
+
+Fri Mar 21 21:10:00 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb: Say that I am the current maintainer.
+
+ * lib/set.rb: Ditto.
+
+ * lib/shellwords.rb: Ditto.
+
+ * ext/syslog/syslog.txt: Ditto.
+
+Fri Mar 21 09:24:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (open_for_install): write block result and rewrite only
+ if changed from existing file.
+
+Fri Mar 21 08:29:33 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_to_f): rearrangement.
+
+Fri Mar 21 06:44:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * rational.c (nurat_to_f): C99.
+
+Fri Mar 21 01:40:27 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * complex.c (nucomp_sub, nucomp_expt): call corresponding functions.
+
+Fri Mar 21 01:21:43 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * missing/tgamma.c: include config.h before math.h. [ruby-dev:34075]
+
+Thu Mar 20 21:46:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_getline): use receiver.
+
+Thu Mar 20 21:20:19 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: some improvements (include Shin-ichiro HARA's
+ effort).
+
+ * complex.c: some improvements.
+
+ * test/ruby/test_rational2.rb: new.
+
+Thu Mar 20 00:21:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_initialize_copy): get rid of segfault.
+
+ * io.c (argf_tell, argf_seek_m, argf_set_pos, argf_rewind,
+ argf_fileno, argf_to_io, argf_eofl, argf_getc, argf_getbyte,
+ argf_readchar, argf_readbyte, argf_each_line): use receiver.
+
+Wed Mar 19 23:52:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_putc, rb_io_puts): output directly if the receiver is
+ rb_stdout to get rid of infinite recursion. [ruby-dev:34059]
+
+Wed Mar 19 22:27:41 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: added rb_gcd.
+
+ * complex.c: use rb_gcd.
+
+Wed Mar 19 18:37:00 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: revert.
+
+ * rational.c: revert.
+
+Wed Mar 19 17:31:20 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_intern.h (TH_EXEC_TAG): need not to FLUSH_REGISTER_WINDOWS.
+ [ruby-core:15871], [ruby-dev:34088]
+
+Wed Mar 19 14:53:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (nucomp_to_s, nucomp_inspect): get rid of making
+ unnecessary intermediate objects.
+
+ * complex.c (make_patterns, string_to_c): do not treat successive
+ underscores as a part of numeric like as literals. [ruby-dev:34085]
+
+ * rational.c (make_patterns, string_to_r): ditto.
+
+Wed Mar 19 14:36:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_cstr_to_inum): treat successive underscores as
+ nondigit. [ruby-dev:34089]
+
+Wed Mar 19 14:08:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_check_encoding): should not load autoloaded encoding
+ directly, instead use rb_enc_find_index() which deal with alias and
+ replica. [ruby-core:15957]
+
+Wed Mar 19 11:49:47 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regint.h (include): include ruby.h instead of defines.h and config.h.
+
+Wed Mar 19 10:17:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regint.h (CHECK_INTERRUPT_IN_MATCH_AT): add interrupt check
+ during match. [ruby-talk:295002]
+
+Tue Mar 18 16:24:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (literal_concat_gen): bail out at different encoding.
+
+Tue Mar 18 04:00:27 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_memsearch_ss): simple shift search.
+
+ * re.c (rb_memsearch_qs): quick search.
+
+ * re.c (rb_memsearch_qs_utf8): quick search for UTF-8 string.
+
+ * re.c (rb_memsearch_qs_utf8_hash): hash functions for above.
+
+ * re.c (rb_memsearch): use above functions.
+
+ * string.c (rb_str_index): give enc to rb_memsearch.
+
+ * include/ruby/intern.h (rb_memsearch): move to encoding.h.
+
+ * include/ruby/encoding.h (rb_memsearch): move from intern.h.
+
+ * common.mk (PREP): add dependency.
+
+Mon Mar 17 22:23:54 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_take, rb_ary_take_while, rb_ary_drop,
+ rb_ary_drop_while): new methods. [ruby-dev:34067]
+
+ * test/ruby/test_array.rb: add tests for above.
+
+Mon Mar 17 17:11:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode): should use `run-mode-hooks' instead
+ of calling `run-hooks' directly to run the mode hook. patch from
+ Chiyuan Zhang <pluskid AT gmail.com> in [ruby-core:15915]
+
+Mon Mar 17 16:41:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: unset GREP_OPTIONS. [ruby-core:15918]
+
+Sun Mar 16 18:07:07 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/utf_16_32.c: bug fix (some invalid UTF-8 sequences
+ were legal)
+
+ * test/ruby/test_transcode.rb: test for above bug
+
+Sun Mar 16 17:28:07 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (LIBRUBY_SO): add dependency to $(BUILTIN_ENCOBJS).
+
+Sun Mar 16 08:51:41 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * include/ruby/intern.h: added some declarations.
+
+ * include/ruby/ruby.h: ditto.
+
+ * common.mk: added some entries.
+
+ * configure.in: added a check for signbit.
+
+ * lib/complex.rb: nearly all of core definitions have been removed.
+
+ * lib/rational.rb: ditto.
+
+ * lib/mathn.rb: some trivial adjustments.
+
+ * complex.c: new.
+
+ * rational.c: ditto.
+
+ * numeric.c (flo_{quo,rdiv}, fix_fdiv): added.
+
+ * numeric.c ({num,int}_{numerator,denominator}): ditto.
+
+ * bignum.c (rb_big_fdiv): ditto.
+
+ * numeric.c (fix_{quo,pow}): now may yield rational number.
+
+ * bignum.c (rb_big_{quo,pow}): ditto.
+
+ * numeric.c (rb_{int,flo}_induced_from): now can accept rational.
+
+ * gc.c (gc_mark_children, obj_free): now detects complex and rational.
+
+ * inits.c (rb_call_inits): now calls Init_{Complex,Rational}.
+
+ * test/ruby/test_complex.rb: new.
+
+ * test/ruby/test_rational.rb: ditto.
+
+Sat Mar 15 17:48:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_associate_index): pass unnecessary enc_capable().
+
+ * string.c (rb_str_cmp): reduce invocation of rb_enc_compatible().
+
+Fri Mar 14 17:04:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (inttypes.h): includes always if available.
+
+ * string.c, ext/digest/defs.h: moved inttypes.h to ruby.h.
+
+Fri Mar 14 16:59:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_LIB_PREFIX): fix for prefix.
+
+Fri Mar 14 16:35:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie::initialize): performance patch from
+ Makoto Kuwata <kwa@kuwata-lab.com> in [ruby-dev:34048].
+
+Fri Mar 14 15:49:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_LIB_PREFIX): use libdir.
+
+Fri Mar 14 14:24:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/defs.h: inttypes.h is still needed.
+
+Fri Mar 14 11:34:12 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub: follow below changes.
+
+Fri Mar 14 11:24:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-encoding-map, ruby-use-encoding-map): added
+ to customize.
+
+Fri Mar 14 10:37:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (int8_t, uint8_t, int16_t, uint16_t int32_t,
+ uint32_t int64_t, uint64_t, int128_t, uint128_t,
+ intptr_t, uintptr_t): check if defined.
+
+ * win32/Makefile.sub: follow configure.in.
+
+ * ext/digest/defs.h: remove checks for uint8_t, uint32_t and uint64_t.
+
+Fri Mar 14 10:12:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_VARTYPE): should not indent preprocessor
+ directives.
+
+Fri Mar 14 10:03:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (UNALIGNED_WORD_ACCESS): IA64 cannot access unaligned word.
+
+Thu Mar 13 21:00:50 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_slice_bang): should not use rb_ary_subseq()
+ which shares internal pointer. splice modifies the receiver
+ right after subseq. [ruby-dev:34005]
+
+ * bootstraptest/test_struct.rb: some test moved from test to shut
+ warning up.
+
+Thu Mar 13 19:42:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub (config.h): define uint32_t.
+
+Thu Mar 13 14:14:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * trunk/configure.in (AC_CHECK_HEADERS): stdint.h is not needed to
+ check.
+
+ * trunk/configure.in (rb_cv_type_uint32_t): unquoted. [ruby-dev:34030]
+
+ * trunk/string.c (hash): use inttypes.h instead of stdint.h.
+
+Thu Mar 13 10:42:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_divmod): should return integer division. [ruby-dev:34006]
+
+ * enum.c (zip_ary): wrong boundary condition.
+
+ * test/ruby/test_numeric.rb (TestNumeric::test_num2long): bit-and
+ should not raise RangeError.
+
+Thu Mar 13 03:12:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/cmd/help.rb: should be updated for new ri structure.
+ [ruby-core:15825]
+
+ * lib/rdoc/ri/driver.rb (RDoc::initialize): allow options to be optional.
+
+ * lib/rdoc/ri/driver.rb (RDoc::class_cache): map_dirs may be
+ empty.
+
+ * lib/rdoc/ri/driver.rb (RDoc::get_info_for): revive get_info_for
+ method. maybe broken.
+
+ * lib/rdoc/ri/util.rb (RDoc::initialize): should not use RiError
+ no more.
+
+Thu Mar 13 01:45:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (stdint.h): check if presence.
+
+ * configure.in (uint32_t): check if defined.
+
+ * string.c (hash): fix for portability. [ruby-dev:34020]
+
+Wed Mar 12 17:33:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): fix for a mere underscore.
+
+Wed Mar 12 14:47:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (rb_thread_raised_set): use generic flags.
+
+ * eval.c (rb_longjmp): clear all raised flags.
+
+ * eval.c (stack_check): leave clearing flag to rb_longjmp.
+
+ * gc.c (rb_memerror): use thread raised flag instead of static flag.
+
+Tue Mar 11 23:38:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_combination): argument check before creating
+ Enumerator.
+
+ * array.c (rb_ary_permutation): ditto.
+
+ * enum.c (enum_zip): optimize if all arguments are arrays.
+
+Tue Mar 11 19:48:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_coerce): try conversion before type check.
+ [ruby-core:15838]
+
+Tue Mar 11 12:39:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (clean-local): WINMAINOBJ is Windows specific.
+
+Tue Mar 11 10:19:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (hash): replaced by MurmurHash described in
+ <http://murmurhash.googlepages.com/>.
+
+Tue Mar 11 09:52:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): empty strings in any encoding are
+ compatible each other.
+
+Tue Mar 11 00:46:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (usage): remove some unimportant lines to fit -h message
+ in a page. [ruby-dev:34018]
+
+Mon Mar 10 17:11:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_local_variables): local_variables should return an
+ array of symbols. [ruby-dev:34008]
+
+ * vm.c (collect_local_variables_in_env): ditto.
+
+Mon Mar 10 15:53:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.c (MKSTR): make US-ASCII. [ruby-dev:34010]
+
+Mon Mar 10 02:08:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_index): if t == s + pos, the character beginning
+ from s + pos is valid.
+
+Sun Mar 9 13:51:21 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generator.rb: Restore missing line to #params. Patch by
+ Lincoln Stoll <lstoll at lstoll.net>
+
+Sun Mar 9 09:52:00 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/code_objects.rb: Remove debugging Kernel#p. Patch by
+ Lincoln Stoll <lstoll at lstoll.net>
+ * lib/rdoc/generator/html.rb: Fully qualify AllReferences. Patch by
+ Lincoln Stoll <lstoll at lstoll.net>
+ * lib/rdoc/ri/writer.rb: Fix 1.8 backwards compatibility.
+
+Sat Mar 8 18:50:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (isdirsep): backslash is valid path separator on cygwin too.
+
+Sat Mar 8 06:53:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (search_nonascii): Use VALUE instead of unsigned long
+ because VALUE can be the fastest unsigned integer type.
+ On LLP64 unsigned long isn't the fastest.
+ * string.c (str_strlen): ditto.
+ * string.c (str_utf8_nth): ditto.
+ * string.c (count_utf8_lead_bytes_with_ulong): ditto.
+
+ * string.c (count_utf8_lead_bytes_with_word): renamed.
+
+Fri Mar 7 21:27:43 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c: fix indent.
+
+Fri Mar 7 21:12:19 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (power_cache_init, power_cache_get_power0, Init_Bignum):
+ delayed initializing power cache per base. [ruby-dev:34003]
+
+Fri Mar 7 20:30:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_restore_0): fixed typo. [ruby-core:15821]
+
+Fri Mar 7 19:56:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: rdoc added. [ruby-Patches-9762]
+
+Thu Mar 6 17:26:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): space flag is in effect for Inf/NaN too.
+ [ruby-dev:34002]
+
+Thu Mar 6 15:44:20 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): casting double to long is undefined
+ if the integer part of double is out of the range of long.
+
+Thu Mar 6 15:11:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): ignore 0 flag for NaN and Inf.
+ [ruby-dev:33994]
+
+Thu Mar 6 15:05:25 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32}/Makefile.sub (RUNRUBY): use $(PROGRAM) instead of
+ ruby$(EXEEXT).
+ suggested by KIMURA Koichi <kimura.koichi at canon.co.jp>.
+ [ruby-dev:34000]
+
+Thu Mar 6 14:46:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/lgamma_r.c (loggamma): return 0 for 1 and 2.
+
+ * test/ruby/test_math.rb: accept errors by functions under missing/.
+
+Thu Mar 6 14:29:44 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (rb_str_transcode_bang): set coderange.
+
+ * transcode.c (rb_str_transcode): use rb_str_transcode_bang.
+
+Thu Mar 6 14:00:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/missing.h (cbrt): add declaration.
+
+Thu Mar 6 11:14:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-add-log-current-method): use ruby style
+ method name format.
+
+Thu Mar 6 11:12:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): no need of loop.
+
+Thu Mar 6 08:30:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_freeze): call rb_class_name() directly.
+ [ruby-core:15802]
+
+Thu Mar 6 04:32:06 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (count_utf8_lead_bytes_with_ulong): fix shift size.
+ [ruby-dev:33993]
+
+ * string.c (str_utf8_nth) fix wrong counting.
+
+Thu Mar 6 00:34:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): size_t returned from strlen() can be
+ unsigned.
+
+Thu Mar 6 00:31:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (make_struct): preserve encoding of struct name.
+
+Wed Mar 5 22:49:20 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (is_utf8_lead_byte, count_utf8_lead_bytes_with_ulong):
+ defined for UTF-8 optimization.
+
+ * string.c (str_strlen): use is_utf8_lead_byte and
+ count_utf8_lead_bytes_with_ulong.
+
+ * string.c (str_utf8_nth) ditto.
+
+Wed Mar 5 17:53:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_flock): returns false on EAGAIN if non-blocking.
+ [ruby-core:15795]
+
+Wed Mar 5 17:43:43 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c (transcode_loop): Adjusted detection of invalid
+ (ill-formed) UTF-8 sequences. Fixing potential security issue, see
+ http://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes.
+
+ * test/ruby/test_transcode.rb: Added two tests for above fix.
+
+Wed Mar 5 14:00:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_to_s): avoid rb_scan_args() when no argument
+ given.
+ * bignum.c (rb_big_to_s): ditto.
+ * enum.c (enum_first): ditto.
+ * eval_jump.c (rb_f_catch): ditto.
+ * io.c (rb_obj_display): ditto.
+ * class.c (rb_obj_singleton_methods): ditto.
+ * object.c (rb_class_initialize): ditto.
+ * random.c (rb_f_srand): ditto.
+ * range.c (range_step): ditto.
+ * re.c (rb_reg_s_last_match): ditto.
+ * string.c (rb_str_to_i): ditto.
+ * string.c (rb_str_each_line): ditto.
+ * string.c (rb_str_chomp_bang): ditto.
+ * string.c (rb_str_sum): ditto.
+
+ * string.c (str_modifiable): declare inline.
+ * string.c (str_independent): ditto.
+
+Wed Mar 5 11:50:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/debug.rb: require 'continuation' to implement "restart"
+ command. [ruby-dev:33992]
+
+ * lib/debug.rb (Context::debug_command): remove local variable
+ shadowing to shut up warnings. [ruby-dev:33992]
+
+ * lib/debug.rb (Context::display_list): ditto.
+
+ * lib/debug.rb (Context::resume): ditto.
+
+ * lib/debug.rb (Context::get_thread): no longer use #index for Hash.
+
+Tue Mar 4 21:35:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb.rb (IRB::Irb::eval_input): SyntaxError should not be
+ considered as IRB bug. [ruby-dev:33991]
+
+ * lib/irb/workspace.rb (IRB::WorkSpace::filter_backtrace): should
+ filter 'irb.rb' as well for context mode 2 and 3.
+
+Tue Mar 4 19:10:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_aset): should not copy key string when
+ compare_by_identity is set. [ruby-dev:33604]
+
+ * hash.c (hash_equal): two hash tables are different when internal
+ comparison table differ. [ruby-dev:33989]
+
+Tue Mar 4 16:29:06 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): disallow non digits '0o' expression.
+
+Tue Mar 4 14:35:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (open_key_args): use rb_io_open_with_args instead of rb_f_open.
+ [ruby-core:15763]
+
+Tue Mar 4 13:41:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (add_heap): fix previous change. [ruby-dev:33988]
+
+Tue Mar 4 10:21:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (add_heap): use binary search to find the place to insert the
+ new heap slot. [ruby-dev:33983]
+
+Tue Mar 4 05:30:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (open_key_args): use rb_io_open instead of rb_f_open.
+ [ruby-core:15746]
+
+Mon Mar 3 23:28:37 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/filehandler.rb: should normalize path
+ separators in path_info to prevent directory traversal
+ attacks on DOSISH platforms.
+ reported by Digital Security Research Group [DSECRG-08-026].
+
+ * lib/webrick/httpservlet/filehandler.rb: pathnames which have
+ not to be published should be checked case-insensitively.
+
+Mon Mar 3 17:25:45 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (add_heap): sort heaps array in ascending order to use
+ binary search.
+
+ * gc.c (is_pointer_to_heap): use binary search to identify object
+ in heaps. works better when number of heap segments grow big.
+
+Mon Mar 3 17:15:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_regsub): remove too strict encoding check.
+ [ruby-dev:33966]
+
+Mon Mar 3 16:14:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_any_hash): shrinks all results in Fixnum range.
+ [ruby-core:15713]
+
+Sun Mar 2 23:03:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_ungetc): reduce redundant call.
+
+Sun Mar 2 10:13:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file): parse shebang in us-ascii. a patch from
+ sheepman <sheepman AT sheepman.sakura.ne.jp> in [ruby-dev:33955]
+
+Sun Mar 2 00:08:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): check for successive underscores.
+ [ruby-dev:33952]
+
+Sat Mar 1 17:59:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (struct argf): packed ARGF stuffs.
+
+ * ruby.c (proc_options): use ruby_set_inplace_mode().
+
+Sat Mar 1 17:51:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (recursive_collect): do not always
+ include all test_*.rb.
+
+Sat Mar 1 14:14:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * development snapshot 1.9.0-1 released.
+
+Sat Mar 1 13:46:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * tool/make-snapshot: make prereq uses MINIRUBY.
+
+ * tool/make-snapshot: allow packaging like 1.9.0-1 by second
+ command-line argument.
+
+Sat Mar 1 13:11:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/allpairs.rb: new file for all pairs method.
+
+ * test/ruby/test_m17n_comb.rb: use allpairs.rb to reduce test cases.
+
+ * test/ruby/test_sprintf_comb.rb: ditto.
+
+Sat Mar 1 12:34:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_inspect): use rb_str_inspect() instead of
+ rb_str_dump(). [ruby-dev:33946]
+
+Sat Mar 1 12:15:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_method.c (rb_get_method_body): ent->method may be freed by
+ GC. [ruby-dev:31819]
+
+ * thread.c (remove_event_hook): should not access freed memory.
+ [ruby-dev:31820]
+
+Sat Mar 1 10:31:19 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (read_all, rb_io_getline_fast): encoding is io_input_encoding.
+
+Sat Mar 1 10:09:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (tr_setup_table, rb_str_split_m, rb_str_chomp_bang):
+ simplified with rb_enc_ascget(). [ruby-dev:33944]
+
+Sat Mar 1 10:01:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_coderange_scan_restartable): should not return
+ offset in the middle of a character.
+
+ * string.c (rb_str_coderange_scan_restartable): should not return
+ invalid cr value.
+
+Sat Mar 1 09:36:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): "%#.0o" should keep prefix where
+ "%#.0x" should not.
+
+Sat Mar 1 02:35:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big2str_find_n1): check integer overflow.
+
+Sat Mar 1 00:29:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_dummy_p): bootstrap encodings can not be dummy.
+
+ * encoding.c (rb_enc_ascget): no needs to call rb_enc_precise_mbclen()
+ twice.
+
+Fri Feb 29 23:14:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_chomp): test
+ updated.
+
+Fri Feb 29 20:58:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (TestIterator::test_enumerator):
+ adjust test for zip behavior reversion.
+
+Fri Feb 29 20:25:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): now works on UTF-16.
+
+ * string.c (tr_setup_table): negation should work on non ASCII
+ compatible strings as well.
+
+ * string.c (rb_str_split_m): awk split should work on non ASCII
+ compatible strings as well.
+
+Fri Feb 29 18:08:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_strftime): format should be ascii compatible.
+
+ * parse.y (rb_intern3): non ASCII compatible symbols.
+
+ * re.c (rb_reg_regsub): add encoding check.
+
+ * string.c (rb_str_chomp_bang): ditto.
+
+ * test/ruby/test_utf16.rb (TestUTF16::test_chomp): raises exception.
+
+Fri Feb 29 15:16:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_rpartition): calculation was done in byte indexing.
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_start_with):
+ allow start_with? matching on broken strings.
+
+Fri Feb 29 15:12:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (opt_block_param): command can start just after block param
+ definition. [ruby-list:44479]
+
+Fri Feb 29 03:22:19 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_time.rb (test_readers): fix typo.
+ (test_strftime): "UTC" is also ok for time.gmtime.strftime("%Z").
+
+Fri Feb 29 02:50:07 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (str_new): remove encoding assumption of empty string.
+
+ * hash.c ( rb_f_getenv, env_fetch, env_inspect): result of ENV should
+ be always ASCII-8BIT.
+
+ * object.c (nil_to_s): nil.to_s should be US-ASCII.
+
+Fri Feb 29 02:24:22 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: forgot to update RELEASE_DATE
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/text.rb,
+ ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: remove adhoc check
+ of Ruby's features (use existence of some classes instead of
+ comparing with RUBY_VERSION)
+
+ * ext/tk/lib/tk/root.rb, ext/tk/lib/tk/autoload.rb: make TkRoot
+ (Tk::Root) unswitchable
+
+ * ext/tk/lib/multi-tk.rb: partial bug fix (still not work!!)
+
+Thu Feb 28 23:37:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI::Meta#meta_setup_encoding): use ASCII-8BIT
+ for charset unspecified non-text data.
+
+Thu Feb 28 22:19:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_capable): IMMEDIATE_P doesn't include Qnil and Qfalse.
+ use SPECIAL_CONST_P.
+
+Thu Feb 28 19:45:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_find): check type of argument and convert to String
+ if it is StringValue. [ruby-cvs:22866]
+
+Thu Feb 28 18:07:52 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI::Meta#meta_setup_encoding): setup encoding
+ by charset.
+ (OpenURI::Meta#meta_add_field): call meta_setup_encoding when
+ content-type.
+
+Thu Feb 28 15:29:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast): scan coderange.
+
+Thu Feb 28 14:36:46 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_str_copy): removed.
+
+Thu Feb 28 13:51:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (stack_check): made flag per threads.
+
+ * thread.c (rb_thread_set_raised, rb_thread_reset_raised): prefixed.
+
+Thu Feb 28 11:43:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_flock): immediately returns on EAGAIN if
+ non-blocking. [ruby-core:15672]
+
+Thu Feb 28 11:23:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline_1): get rid of segfault. [ruby-dev:33938]
+
+Thu Feb 28 11:19:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_reverse_bang): removed unused variables.
+
+ * include/ruby/encoding.h (rb_str_coderange_scan_restartable): added
+ prototype.
+
+ * string.c (rb_str_coderange_scan_restartable, rb_str_times): removed
+ unused variables.
+
+ * string.c (rb_str_reverse_bang): ditto
+
+ * string.c (rb_enc_str_copy): unused now. may be used in future?
+
+Thu Feb 28 03:03:32 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/*: make default widget set
+ switchable between Tk (standard Tcl/Tk widget set) and
+ Ttk (Tile). Initial default widget set is Tk. Now, toplevel
+ widget classes are removed and defined as aliases.
+ For example, "TkButton" is an alias of the "Tk::Button" class.
+ Those aliases are replaced when switching default widget set.
+ "Tk.default_widget_set=" is the method for switching default
+ widget set. "Tk.default_widget_set = :Ttk" defines Ttk (Tile)
+ widget set as default. It means that "TkButton" denotes
+ "Tk::Tile::Button" class. And then, "TkButton.new" creates
+ a Tk::Tile::Button widget. Of course, you can back to use
+ standard Tk widgets as the default widget set by calling
+ "Tk.default_widget_set = :Tk", whenever you want. Based on
+ the feature, you can use Ttk widget styling engine on your
+ old Ruby/Tk application without modifying its source, if you
+ don't use widget options unsupported on Ttk widgets (At first,
+ call "Tk.default_widget_set = :Ttk", and next load and run
+ your application).
+ This is one step for supporting Tcl/Tk8.5 features.
+
+Wed Feb 27 22:55:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_coderange_scan_restartable): coderange scanning
+ for partial read.
+
+ * io.c (read_all): set coderange when not convert encoding.
+
+Wed Feb 27 03:55:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, enc/make_encmake.rb: load current mkmf.rb even if
+ cross-compiling.
+
+ * ext/extmk.rb, enc/make_encmake.rb, lib/mkmf.rb: need to be 1.8
+ compatible for cross-compiling.
+
+Tue Feb 26 16:53:13 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-calculate-indent): should distinguish
+ comment and # in strings. [ruby-dev:33874]
+
+Tue Feb 26 16:41:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (combi_len, rb_ary_product): check for overflow.
+ [ruby-Bugs-18355]
+
+Tue Feb 26 16:38:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (recursive_cmp): compare minimal length parts.
+
+Tue Feb 26 16:06:00 2008 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_{ec,dh,dsa,rsa}.c: Remove useless warnings.
+
+ * ext/openssl/ossl_asn1.c: Simplify code.
+
+ * ext/openssl/ossl_ssl_session.c Fix compiler warnings.
+ Undefine #id if SSL_SESSION_get_id is not supported.
+
+Tue Feb 26 15:50:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (value_expr_gen): removed inappropriate warning.
+ [ruby-core:15660]
+
+Tue Feb 26 15:43:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (tokadd_escape): refactored. [ruby-core:15657]
+
+Tue Feb 26 15:30:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_eql, rb_ary_cmp): get rid of stack overflow with
+ self-recursive constructs. [ruby-Bugs-18356]
+
+Tue Feb 26 01:16:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (ROBJECT_NUMIV): renamed from ROBJECT_LEN.
+ (ROBJECT_IVPTR): renamed from ROBJECT_PTR.
+
+ * variable.c: follow the above renaming.
+
+ * object.c: ditto.
+
+ * gc.c: ditto.
+
+ * marshal.c: ditto.
+
+Mon Feb 25 17:30:29 2008 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/digest.c ext/openssl/lib/openssl/digest.rb:
+ Commit patch #9280 from Akinori MUSHA.
+ Simplify the OpenSSL::Digest class and make use of the
+ existing Digest framework.
+ Enhance performance.
+
+Mon Feb 25 15:33:29 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (big2str_karatsuba): initialize cache if not initialized.
+
+ * bignum.c (Init_Bignum): delayed initializing cache.
+ [ruby-dev:33930]
+
+Mon Feb 25 13:40:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (Init_process): share bignum objects for RLIM_INFINITY,
+ RLIM_SAVED_MAX and RLIM_SAVED_CUR if they are equal.
+
+Mon Feb 25 10:41:41 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * encoding.c (Encoding#dummy): minor grammatical fixes
+ in rdoc documentation.
+
+Mon Feb 25 00:01:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (clean-local): should be double-colon.
+
+Sun Feb 24 23:39:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, {bcc,win}32/Makefile.sub (clean-local): remove
+ intermediate files.
+
+ * cygwin/GNUmakefile.in (clean-local): remove def file.
+
+Sun Feb 24 06:49:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c (ruby_set_debug_option): separated ruby_each_words().
+
+ * util.c (ruby_each_words): extracted from ruby_set_debug_option().
+
+ * ruby.c (enable_option, disable_option): allow all for all known
+ features.
+
+ * ruby.c (proc_options): generalized enable/disable options.
+
+ * ruby.c (ruby_init_gems): take enabled flag. [ruby-core:14840]
+
+ * ruby.c (process_options): added --disable-rubyopt flag.
+
+ * include/ruby/util.h (ruby_each_words): prototype.
+
+Sun Feb 24 05:25:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): check if argument for -E exists.
+
+Sun Feb 24 05:09:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-label-indent): fix for labels inside
+ blocks in switch.
+
+Sun Feb 24 03:52:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (valid_filename): use O_EXCL to get rid of clobbering
+ existing files in race conditions.
+
+Sat Feb 23 21:36:13 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (ole_init_cp): should return value.
+
+Sat Feb 23 20:16:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (str_sublen): removed.
+
+ * string.c (rb_str_reverse, rb_str_reverse_bang): use
+ single_byte_optimizable.
+
+Sat Feb 23 19:25:18 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_copy_for_substr): renamed from
+ rb_enc_cr_str_copy.
+
+ * string.c: use rb_enc_cr_str_copy_for_substr and keep coderange.
+
+Sat Feb 23 18:50:17 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_encoding2cp): remove US-ASCII
+ mapping.
+
+Sat Feb 23 01:09:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rlimit_resource_type): new function.
+ (rlimit_resource_value): new function.
+ (proc_getrlimit): use rlimit_resource_type to accept
+ symbol and string as resource type.
+ (proc_setrlimit): use rlimit_resource_type and rlimit_resource_value
+ to accept symbol and string as resource type and values.
+
+Fri Feb 22 21:12:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_copy): check string's coderange is 7bit or
+ valid.
+
+Fri Feb 22 19:50:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (BIGZEROP): fix for longer Bignum zeros. [ruby-Bugs-17454]
+
+Fri Feb 22 15:47:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_mbclen): return minlen instead of 1 when
+ a character is not found properly.
+
+ * string.c (rb_enc_strlen): round up string length with fixed
+ multibyte encoding such as UTF-32.
+ (rb_enc_strlen_cr): ditto.
+ (rb_str_substr): fix substring with fixed multibyte encoding.
+ (rb_str_justify): check number of characters.
+
+Fri Feb 22 12:11:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): string of ascii incompatible encoding
+ should be escaped and returned as US-ASCII encoding.
+
+Fri Feb 22 11:16:55 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_substr): copy encoding although empty string.
+
+Fri Feb 22 04:48:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_times): empty string's coderange is CODERANGE_7BIT.
+
+ * string.c (rb_str_substr): ditto.
+
+ * encoding.c (rb_enc_compatible): empty string is compatible with not
+ only nonasciicompatible strings. [ruby-dev:33895]
+
+Thu Feb 21 17:15:15 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: Added basic support for passing options to String#encode
+ via a hash. Currently only one option, with one value, is supported:
+ invalid: :ignore (dropping invalid byte sequences instead of
+ producing an error). Option naming is not yet stable!
+
+ * test/ruby/test_transcode.rb: Added a single test for invalid: :ignore
+ option. Not more tests because most data does not yet distinguish
+ between INVALID and UNKNOWN.
+
+Thu Feb 21 16:35:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_unshift_m): expands enough for argc. [ruby-dev:33880]
+
+Thu Feb 21 14:49:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_set_encoding): uses current_file after check if next
+ input is available.
+
+Thu Feb 21 14:13:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_putc): invoke stdout method so that redefining putc
+ may take effect. [ruby-talk:291844]
+
+ * io.c (rb_f_puts): ditto.
+
+Thu Feb 21 11:10:49 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c: replace rb_enc_copy by rb_enc_cr_str_copy or
+ rb_enc_cr_str_exact_copy.
+
+Thu Feb 21 10:35:04 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_asciicompat): dummy encoding is not
+ ascii compatible. [ruby-dev:33878]
+
+Thu Feb 21 00:01:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RPATHFLAG): -R option of HP-UX ld is not for runtime
+ load path. [ruby-list:44600]
+
+Wed Feb 20 23:55:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_map_errno): exported.
+
+Wed Feb 20 23:28:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/readline/extconf.rb (rl_event_hook): workaround for native
+ windows.
+
+Wed Feb 20 19:42:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_associate_index): doesn't clear coderange
+ when new encoding equals to old one.
+
+Wed Feb 20 19:15:38 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_str_copy): added for wrapper for rb_enc_copy.
+ this also copy coderange when ptr and len is equal.
+
+ * string.c (rb_enc_cr_str_copy): added for wrapper for rb_enc_copy.
+ this always copy coderange.
+
+ * string.c (str_replace_shared): use rb_enc_str_copy.
+
+ * string.c (str_new3): don't rb_enc_copy because encoding is copied
+ at str_replace_shared.
+
+Wed Feb 20 13:08:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (parse_args): added --dir-mode, --script-mode and
+ --cmd-type options. [ruby-dev:33816]
+
+ * instruby.rb (parse_args): added bin-arch and bin-comm to install
+ type, for compiled files and script files.
+
+ * instruby.rb (parse_args): deal with make style command line macros,
+ and count as long style options if prefixed with INSTALL_.
+
+ * instruby.rb (makedirs): use $dir_mode. [ruby-dev:33805]
+
+ * instruby.rb (open_for_install): set file mode, which is now
+ permission mode instead of access mode.
+
+ * instruby.rb (bin-comm): installs scripts with replacing shebang
+ lines.
+
+Wed Feb 20 10:04:22 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (open_key_args): set arg->io even if no options passed.
+ [ruby-dev:33072]
+
+Tue Feb 19 21:11:49 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_strlen_cr): get length with coderange scan.
+
+ * string.c (str_strlen): use rb_enc_strlen_cr. [ruby-dev:33849]
+
+Tue Feb 19 20:49:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_raise_jump): moved adjustment for control frame.
+
+Tue Feb 19 18:34:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (STACK_LENGTH) [SPARC] : 0x80 offset removed. [ruby-dev:33857]
+
+Tue Feb 19 14:27:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_event): prevent polling. based on
+ a patch from error errorsson in [ruby-Bugs-17675].
+
+Tue Feb 19 11:14:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_exec_node): no thread starts inside iseq compilation.
+
+ * eval.c (rb_f_raise): skip current control frame. [ruby-core:15589]
+
+ * insns.def (opt_div): raise as the ordinary method. [ruby-core:15589]
+
+Mon Feb 18 15:16:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_each_line): fix newline size.
+
+Mon Feb 18 13:06:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/irb/locale.rb (IRB::Locale#lc2kconv): check ja_JP.EUC-JP as well.
+
+Mon Feb 18 11:51:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (re_warn): defined to restore warnings for /[a-c-e]/, etc.
+
+Mon Feb 18 10:17:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/lib/expect.rb (IO#expect): check if peer is closed.
+ [ruby-Bugs-17940]
+
+Mon Feb 18 00:33:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_regsub): don't repeat repl twice with
+ "X".sub!(/./, sprintf("\\%c", 255)).
+
+Sun Feb 17 23:06:55 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/cgi.rb (CGI::escapeHTML): use gsub with Hash. [ruby-dev:33828]
+
+Sun Feb 17 21:38:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (ENC_CODERANGE_AND): fix broken case. [ruby-dev:33826]
+
+ * string.c (rb_str_times): fix broken case. [ruby-dev:33826]
+
+Sun Feb 17 20:45:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_prepare_re): add enable_warning parameter.
+ (rb_reg_adjust_startpos): disable warning by rb_reg_prepare_re.
+ (rb_reg_search): follow rb_reg_prepare_re parameter change.
+
+Sun Feb 17 20:12:41 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_regexp.rb: add tests to achieve over 90% test
+ coverage of re.c.
+
+Sun Feb 17 15:25:08 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (ENC_CODERANGE_AND): added.
+
+ * string.c (rb_str_plus, rb_str_times): keep coderange.
+
+ * parse.y (STR_NEW0) use rb_usascii_str_new.
+
+Sun Feb 17 14:07:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (str_strlen): rb_enc_strlen doesn't fail.
+
+Sun Feb 17 13:03:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (str_sublen): use rb_enc_strlen.
+
+Sun Feb 17 12:17:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/{euc_jp.c,gbk.c,iso_8859_1.c,iso_8859_11.c,iso_8859_13.c,
+ iso_8859_2.c,iso_8859_6.c,iso_8859_7.c,iso_8859_8.c,iso_8859_9.c,
+ shift_jis.c,windows_1251.c}: add document about encodings.
+
+ * enc/cp949.c: divided into new file.
+
+Sun Feb 17 10:59:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_quote): return US-ASCII string consistently.
+
+Sun Feb 17 09:17:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_times): reduce loop overhead.
+
+Sun Feb 17 03:37:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/re.h (struct rmatch_offset): new struct for character
+ offsets.
+ (struct rmatch): new struct.
+ (struct RMatch): reference struct rmatch.
+ (RMATCH_REGS): new macro.
+
+ * re.c (match_alloc): initialize struct rmatch.
+ (pair_byte_cmp): new function.
+ (update_char_offset): update character offsets.
+ (match_init_copy): copy regexp and character offsets.
+ (match_sublen): removed.
+ (match_offset): use update_char_offset.
+ (match_begin): ditto.
+ (match_end): ditto.
+ (rb_reg_search): make character offset updated flag false.
+ (match_size): use RMATCH_REGS.
+ (match_backref_number): ditto.
+ (rb_reg_nth_defined): ditto.
+ (rb_reg_nth_match): ditto.
+ (rb_reg_match_pre): ditto.
+ (rb_reg_match_post): ditto.
+ (rb_reg_match_last): ditto.
+ (match_array): ditto.
+ (match_aref): ditto.
+ (match_values_at): ditto.
+ (match_inspect): ditto.
+
+ * string.c (rb_str_subpat_set): use RMATCH_REGS.
+ (rb_str_sub_bang): ditto.
+ (str_gsub): ditto.
+ (rb_str_split_m): ditto.
+ (scan_once): ditto.
+
+ * gc.c (obj_free): free character offsets.
+
+Sun Feb 17 03:13:40 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/resource.rb: made version infos confirm to OS spec.
+
+ * {bcc32,win32}/Makefile.sub (*.rc): add dependency.
+
+Sat Feb 16 20:49:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_substr): optimized for UTF-8.
+
+Sat Feb 16 18:13:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_compatible): check encoding incapable arguments.
+
+Sat Feb 16 20:12:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (match_inspect): avoid SEGV with MatchData.allocate.inspect.
+
+Sat Feb 16 19:04:17 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (str_strlen): revert r15507. [ruby-dev:33810]
+
+Sat Feb 16 18:25:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (str_strlen): little more optimization.
+ (rb_enc_nth): remove needless variable 'c'.
+
+Sat Feb 16 18:00:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_compatible): empty strings are always compatible.
+
+ * string.c (rb_enc_cr_str_buf_cat): ditto.
+
+Sat Feb 16 16:14:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_strlen): UTF-8 character count moved to str_strlen.
+ (str_strlen): UTF-8 character count is only applicable for valid
+ UTF-8 string. [ruby-dev:33807]
+
+Sat Feb 16 13:16:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_sub_bang): stringize replacing hash values.
+ (str_gsub): ditto.
+
+Sat Feb 16 13:01:33 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_strlen): add search_nonascii like character
+ counter for UTF-8.
+
+Sat Feb 16 11:53:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_strlen): moved to string.c.
+
+ * string.c (rb_enc_strlen): use search_nonascii.
+ (str_strlen): don't use search_nonascii.
+
+Sat Feb 16 11:45:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/require_relative.rb: check require_relative call in eval.
+
+Sat Feb 16 08:00:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (process_options): set default_external before loading
+ libraries. [ruby-dev:33801]
+
+Sat Feb 16 05:49:54 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/iso_8859_{4,13}.c: Windows-1257 is replica of ISO-8859-13.
+
+ * string.c (single_byte_optimizable): rb_enc_mbminlen must be 1
+ when rb_enc_mbmaxlen is 1.
+
+Sat Feb 16 03:43:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_nth): moved to string.c.
+
+ * string.c (rb_enc_nth): moved from string.c. use search_nonascii
+ for ASCII compatible string.
+ (str_nth): wrong optimization removed to fix
+ "a".force_encoding("EUC-JP").slice!(0,10) returns
+ "a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+
+Sat Feb 16 00:21:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (rb_range_beg_len): check if responds to "begin" and "end"
+ methods for non-Range object.
+
+Fri Feb 15 20:29:42 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_init_cp): initialize WIN32OLE.codepage
+ according to Encoding.default_external.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Fri Feb 15 19:31:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/node.h (NODE_FL_NEWLINE): renamed from NODE_NEWLINE
+ to denote its a flag. [ruby-core:15529]
+
+Fri Feb 15 18:23:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_sub_bang, str_gsub): allows hash for replacement.
+
+Fri Feb 15 17:12:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_strlen): use search_nonascii() for performance.
+
+ * string.c (str_nth): ditto.
+
+Fri Feb 15 16:22:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (open_key_args): allow specifying both :mode and :encoding.
+
+Fri Feb 15 15:34:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_getbyte): new method.
+ (rb_str_setbyte): new method.
+
+Fri Feb 15 15:29:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/require_relative.rb: new file.
+
+Fri Feb 15 15:23:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_convert): check upper bound. a patch from
+ Daniel Luz at [ruby-Bugs-17910].
+
+Fri Feb 15 10:35:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_quote): set US-ASCII for ASCII-only string.
+ [ruby-dev:33785]
+
+Fri Feb 15 10:27:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {win,bcc}32/Makefile.sub (config.h): added HAVE_FTRUNCATE.
+ [ruby-dev:33786]
+
+Fri Feb 15 09:44:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reg_compile_gen): reg_fragment_setenc might not raise an
+ exception before rb_reg_compile.
+
+Fri Feb 15 07:37:40 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/paths.rb: Preserve compatibility with 1.8.
+
+Fri Feb 15 02:42:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ftruncate): check if available.
+
+ * file.c (rb_file_truncate): check if ftruncate instead of truncate.
+
+Fri Feb 15 02:40:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (sigsetmask): check when signal semantics is not POSIX.
+
+ * signal.c (USE_TRAP_MASK): set true if sigprocmask or sigsetmask is
+ available.
+
+Thu Feb 14 23:56:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.c (error_print): append a newline to rest lines.
+
+ * parse.y (reg_compile_gen): appends error message from
+ rb_reg_compile() to one from reg_fragment_setenc().
+
+Thu Feb 14 21:00:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_reopen): check STDIN, STDOUT and STDERR mode according to
+ stdio streams.
+
+Thu Feb 14 16:07:40 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_math.rb: actual-expected argument ordering for
+ test_math.rb fixed. a patch from Tadashi Saito
+ <shiba AT mail2.accsnet.ne.jp> in [ruby-dev:33770].
+
+Thu Feb 14 16:02:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_utime): inhibits with secure level 2 or higher.
+
+Thu Feb 14 12:30:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_preprocess_dregexp): use non-preprocessed regexp source
+ for result.
+
+Thu Feb 14 01:43:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/timeout.rb (Timeout::timeout): made sensitive to location on the
+ stack. [ruby-core:15458]
+
+Thu Feb 14 00:49:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (INSTRUBY_ARGS): pass mode to install. [ruby-dev:33766]
+
+ * instruby.rb (parse_args): added --data-mode and --prog-mode options.
+
+Thu Feb 14 00:02:19 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (eval): allow to eval in a binding that has a singleton method.
+ [ruby-dev:33763]
+
+ * test/ruby/test_proc.rb: add tests to achieve over 70% test coverage
+ of proc.c.
+
+ * test/ruby/test_method.rb: ditto.
+
+Wed Feb 13 22:46:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#sub_ext): new method. [ruby-list:44608]
+
+Wed Feb 13 21:50:32 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (proc_curry): new method. [ruby-dev:33676]
+
+ * test/ruby/test_proc.rb: add tests for above.
+
+Wed Feb 13 20:48:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (RObject): add iv_index_tbl for shortcut of
+ RCLASS_IV_INDEX_TBL(rb_obj_class(obj)).
+ (ROBJECT_IV_INDEX_TBL): defined.
+
+ * object.c (init_copy): initialize iv_index_tbl in struct RObject.
+
+ * variable.c (ivar_get): use ROBJECT_IV_INDEX_TBL.
+ (rb_ivar_defined): ditto.
+ (obj_ivar_each): ditto.
+ (rb_obj_remove_instance_variable): ditto.
+ (rb_ivar_set): update iv_index_tbl in struct RObject.
+
+Wed Feb 13 16:21:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb: revert r15442. 2nd argument of String#sub parse
+ escapes. [ruby-dev:33726]
+
+ * bootstraptest/test_method.rb, enc/depend, instruby.rb, lib/mkmf.rb,
+ mkconfig.rb: revert r15443. ditto.
+
+Wed Feb 13 11:20:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: fix typo.
+
+ * lib/mkmf.rb: revert r15443. "\\1#{sep}\\2" is wrong if sep is ended
+ with "\\".
+
+Wed Feb 13 08:57:21 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/inline.rb: Allow inline markup to have a leading
+ '#' or '\', or trailing punctuation. i.e. *#freeze?*, *\foo?*.
+
+Wed Feb 13 07:21:23 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/to_html_hyperlink.rb: Moved linking to to_html.rb, move
+ crossref to to_html_crossref.rb
+
+Wed Feb 13 04:15:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (arg_concat_gen, arg_append_gen): optimize for array push.
+
+ * parse.y (arg_concat_gen): optimize for array concat.
+
+ * parse.y (arg_add_gen): removed since identical to arg_append_gen.
+
+Tue Feb 12 21:04:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (exc_list): should use mrhs if non array.
+
+Tue Feb 12 20:32:50 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/rational.rb (floor, ceil, truncate, round): do not use
+ definitions of Numeric.
+
+ * lib/rational.rb (to_i): should returns truncated self.
+
+ * lib/complex.rb (numerator): requires
+ Integer#{numerator,denominator}.
+
+ * lib/complex.rb (quo): do not use definition of Numeric.
+
+ * lib/complex.rb (>, >=, <, <=, between?, div, divmod, modulo,
+ floor, ceil, truncate, round): undef'ed.
+
+ * lib/mathn.rb (Rational#inspect): removed.
+
+Tue Feb 12 16:48:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (args, mrhs): flattens literal array splats.
+
+ * parse.y (exc_list): splat literal array.
+
+Tue Feb 12 15:27:19 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * bootstraptest/runner.rb, bootstraptest/test_method.rb, enc/depend,
+ instruby.rb, lib/mkmf.rb, lib/test/unit/util/procwrapper.rb,
+ mkconfig.rb, sample/test.rb, template/vm.inc.tmpl,
+ test/ruby/test_stringchar.rb: fixes around String#gsub.
+
+Tue Feb 12 15:11:47 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure/generator.rb,
+ ext/json/lib/json/pure/parser.rb, ext/openssl/lib/openssl/x509.rb,
+ ext/win32ole/sample/olegen.rb, lib/date/format.rb, lib/irb/context.rb,
+ lib/irb/workspace.rb, lib/net/http.rb, lib/net/imap.rb,
+ lib/rdoc/generator.rb, lib/rdoc/markup/to_html.rb,
+ lib/rdoc/markup/to_latex.rb, lib/rdoc/parsers/parse_c.rb,
+ lib/rdoc/ri/formatter.rb, lib/rexml/parsers/baseparser.rb,
+ lib/rexml/quickpath.rb, lib/rexml/text.rb, lib/rss/parser.rb,
+ lib/uri/common.rb, lib/uri/generic.rb, lib/webrick/httpresponse.rb,
+ lib/webrick/httpservlet/filehandler.rb, lib/yaml/baseemitter.rb,
+ lib/yaml/encoding.rb: performance tuning around String#gsub.
+
+Tue Feb 12 12:16:45 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_hash_cmp): lighter version of rb_str_cmp() for
+ hash comparison function.
+
+ * hash.c (rb_any_cmp): use rb_str_hash_cmp().
+
+ * string.c (rb_str_casecmp): should return nil for incompatible
+ comparison.
+
+Tue Feb 12 12:13:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * instruby.rb: specify file mode to install. a patch from
+ pegacorn <subscriber.jp AT gmail.com> in [ruby-dev:33699].
+
+Tue Feb 12 11:38:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (rb_num_coerce_bin): add ID argument to specify
+ caller's method name. [ruby-dev:33663]
+
+ * numeric.c (rb_num_coerce_cmp): ditto.
+
+ * numeric.c (rb_num_coerce_relop): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (DoSomeOne): add function name argument.
+
+Tue Feb 12 10:25:02 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/rdoc.rb: Wrap parse_files' read in version check for
+ backwards compatibility.
+
+Tue Feb 12 10:15:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (load_file): enc must effect source encoding.
+ [ruby-core:15496]
+
+Tue Feb 12 10:16:47 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/paths.rb: Restore require rubygems check.
+
+Tue Feb 12 02:42:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_include): specialize single character string
+ case (e.g. (?a ..?z).include(?x)) for performance.
+ [ruby-core:15481]
+
+ * string.c (rb_str_upto): specialize single character case.
+
+ * string.c (rb_str_hash): omit coderange scan for performance.
+
+ * object.c (rb_check_to_integer): check Fixnum first.
+
+ * object.c (rb_to_integer): ditto.
+
+ * string.c (rb_str_equal): inline memcmp to avoid unnecessary
+ rb_str_comparable().
+
+ * parse.y (rb_intern2): use US-ASCII encoding.
+
+ * parse.y (rb_intern_str): ditto.
+
+Mon Feb 11 17:21:18 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb:
+ 0.2.3 -> 0.2.4.
+
+ * lib/rss/maker.rb, lib/rss/maker/, test/rss/test_maker_2.0.rb:
+ fixed a bug that RSS::Maker.make("0.9")'s item doesn't make some
+ elements if description is missed.
+ Reported by Michael Auzenne. Thanks!!!
+
+ * lib/rss/maker/0.9.rb, test/rss/test_maker_0.9.rb:
+ RSS::Maker.make("0.9") generates RSS 0.92 not RSS 0.91.
+
+Mon Feb 11 10:43:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (load_file): the encoding of DATA follows the source
+ file encoding. [ruby-dev:33693]
+
+Mon Feb 11 06:50:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_pack.rb: fix tests for 64bit CPU.
+
+ * test/ruby/test_bignum.rb: ditto.
+
+ * test/ruby/test_file_exhaustive.rb: ditto.
+
+ * test/ruby/test_integer.rb: ditto.
+
+ * test/ruby/test_time.rb: ditto.
+
+ * test/ruby/test_numeric.rb: ditto.
+
+ * test/ruby/test_fixnum.rb: ditto.
+
+Mon Feb 11 00:18:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/benchmark.rb (Job::Benchmark#item): fix typo.
+
+Sun Feb 10 21:58:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (encdb, transdb): depend on $(PREP).
+
+Sun Feb 10 16:58:20 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*, test/rubygems*, gem_prelude.rb: Import RubyGems
+ r1601. [ruby-core:15381]
+
+Sun Feb 10 15:07:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc32,win32,wince}/Makefile.sub (MISSING): added cbrt.obj.
+
+Sun Feb 10 12:58:33 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/code_objects.rb: Make some attributes accessible for reuse.
+ * lib/rdoc/generator/html.rb: Pull out ContextUser classes and related
+ methods for reuse.
+ * lib/rdoc/generator.rb: Move ContextUser classes to
+ RDoc::Generator::Context for reuse.
+ * lib/rdoc/rdoc.rb: Make RDoc::RDoc initialization a little easier.
+ * lib/rdoc/options.rb: Make RDoc::Options easier to use without
+ parsing an ARGV.
+ * lib/rdoc/markup/to_*.rb: Subclass RDoc::Markup::Formatter.
+ * lib/rdoc/markup/formatter.rb: Add RDoc::Markup::Formatter to make
+ RDoc markup conversion easier.
+ * lib/rdoc/markup/fragments.rb: Make RDoc::Markup::ListItem easier to
+ test.
+ * lib/rdoc/markup/to_html_hyperlink.rb: Pulled out of the HTML
+ generator for easier reusability.
+ * lib/rdoc/markup.rb: Fix bug with labeled lists containing bullet
+ lists.
+ * lib/rdoc/generators/html/html.rb: Fix Constant display.
+
+Sat Feb 9 23:44:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/tgamma.c (tgamma): use lgamma_r if available.
+
+Sat Feb 9 23:22:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/extconf.rb: simplified the condition.
+
+Sat Feb 9 21:20:28 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_math.rb: add tests for Math.gamma, Math.lgamma and
+ Math.cbrt, and use assert_in_delta instead of assert.
+
+Sat Feb 9 18:34:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * math.c (math_cbrt): new method Math.cbrt.
+
+ * configure.in (cbrt): check for replacement functions.
+
+ * missing/cbrt.c: new file.
+
+Sat Feb 9 17:51:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): use strtod() for more
+ precision. [ruby-talk:290296]
+
+ * ext/bigdecimal/bigdecimal.c (BASE_FIG): made constant.
+
+ * ext/bigdecimal/extconf.rb: ditto. [ruby-dev:33658]
+
+Sat Feb 9 12:06:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/tgamma.c (tgamma): add error check.
+
+Sat Feb 9 11:47:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * math.c (math_gamma): add error check.
+ (math_lgamma): ditto.
+
+Sat Feb 9 11:09:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/lgamma_r.c (lgamma_r): return HUGE_VAL for non-positive
+ integers.
+
+Sat Feb 9 10:03:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_new4): copy encoding from orig, instead of shared
+ one.
+
+Sat Feb 9 01:01:38 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (lchmod_internal): fix warning cast from pointer to integer of
+ different size.
+
+Sat Feb 9 00:44:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb.rb (IRB::Irb::eval_input): rescues Interrupt and other than
+ SystemExit and SignalException. [ruby-core:15359]
+
+Fri Feb 8 23:51:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/lgamma_r.c (lgamma_r): use smaller argument for sin function.
+
+Fri Feb 8 22:10:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI.open_http): rescue URI::InvalidURIError by
+ URI.parse for location URI.
+
+Fri Feb 8 19:22:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (rb_str_derive): uses rb_str_subseq() for byte
+ length. [ruby-dev:33653]
+
+ * ext/iconv/iconv.c (iconv_convert): added toidx argument to set
+ encoding of successfully converted string. [ruby-dev:33221]
+
+Fri Feb 8 15:09:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (xsystem): expand macros like as make.
+
+Fri Feb 8 09:27:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/ri/driver.rb (read_yaml): remove SM* for compatibility.
+
+Fri Feb 8 00:07:24 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_hash.rb: follow the change of Hash#flatten.
+
+ * test/ruby/test_time.rb: add tests to achieve over 70% test coverage
+ of time.c.
+
+ * test/ruby/test_prec.rb: ditto over 90% for prec.c.
+
+Thu Feb 7 19:11:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_dup): reverted unneeded change. [ruby-dev:33634]
+
+ * string.c (rb_str_replace): makes frozen shared string before
+ sharing.
+
+Thu Feb 7 16:33:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_reopen): don't change access mode for stdin, stdout and
+ stderr. [ruby-core:15360]
+
+Thu Feb 7 16:33:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_replace_shared): replaces string with sharing.
+
+ * string.c (rb_str_new4, rb_str_associate, rb_str_associated): allows
+ associated strings shared.
+
+ * string.c (rb_str_dup, rb_str_substr, rb_str_replace): shares memory.
+ [ruby-core:15400]
+
+Thu Feb 7 15:42:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_end_with): compares with the suffix.
+
+Thu Feb 7 15:03:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/korean.c: add support for CP949 by Park Ji-In.
+ [ruby-dev:33626]
+
+Thu Feb 7 11:11:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * missing/lgamma_r.c (lgamma_r): some compilers don't permit dividing
+ by literal 0.0. use const variable instead.
+
+ * {bcc32,win32,wince}/Makefile.sub (MISSING): add lgamma_r.obj and
+ tgamma.obj.
+
+Thu Feb 7 10:39:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * math.c (math_gamma): new method Math.gamma.
+ (math_lgamma): new method Math.lgamma.
+
+ * include/ruby/missing.h (tgamma): declared unless HAVE_TGAMMA.
+ (lgamma_r): declared unless HAVE_LGAMMA_R.
+
+ * configure.in (tgamma): check for replacement functions.
+ (lgamma_r): ditto.
+
+ * missing/tgamma.c: new file. based on gamma.c from
+ "C-gengo niyoru saishin algorithm jiten" (New Algorithm handbook
+ in C language) (Gijyutsu hyouron sha, Tokyo, 1991)
+ by Haruhiko Okumura.
+
+ * missing/lgamma_r.c: ditto.
+
+ * LEGAL (missing/tgamma.c): describe as public domain.
+ (missing/lgamma_r.c): ditto.
+
+Thu Feb 7 09:05:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_enc_from_index): BINARY does not
+ have in-bound encoding index.
+
+Thu Feb 7 04:26:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/korean.c: add EUC-KR conversion support by Park Ji-In.
+ [ruby-dev:33621]
+
+Wed Feb 6 01:47:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_flatten): do not flatten recursively by default.
+ [ruby-dev:33603]
+
+Wed Feb 6 00:50:19 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insns.def (adjuststack): never use INC_SP with minus value because
+ some compilers cannot deal it correctly. use DEC_SP instead.
+
+Wed Feb 6 00:48:41 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_hash.rb: add tests to achieve over 90% test coverage
+ of hash.c.
+
+ * test/ruby/test_env.rb: ditto.
+
+Wed Feb 6 00:24:49 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * hash.c (env_rassoc): remove access to free'd environment on mswin32.
+
+Tue Feb 5 21:57:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (rb_call_super): pass a passed block when super is called via
+ rb_call_super. [ruby-dev:33598]
+
+Tue Feb 5 11:14:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (INSTALL_DIRS, install_dirs): added BINDIR.
+
+ * lib/mkmf.rb (install_files): rejects files matching to
+ $NONINSTALLFILES.
+
+ * lib/mkmf.rb (init_mkmf): defaults $NONINSTALLFILES to backup and
+ temporary files.
+
+Mon Feb 4 21:52:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (DelegateClass): use define_method instead of
+ module_eval to improve performance. [ruby-dev:33586]
+
+Mon Feb 4 16:44:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (darwin): NSIG is not defined if _XOPEN_SOURCE > 500L.
+ [ruby-dev:33584]
+
+Mon Feb 4 14:51:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_enc_symname2_p): support "!", "!=" and "!~".
+ [ruby-dev:33592]
+
+Mon Feb 4 13:58:42 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator.preserved, DelegateClass.methods): extend
+ shouldn't be delegated. [ruby-dev:32987], etc.
+
+Mon Feb 4 08:59:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::[]): no more transition
+ extend(CGI::Value). a patch from <tommy AT tmtm.org> in
+ [ruby-dev:33583].
+
+Sun Feb 3 21:13:13 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_numeric.rb: forgot to add this (at r15360).
+
+ * test/ruby/test_file_exhaustive.rb: add tests to achieve over 80% test
+ coverage of file.c.
+
+Sat Feb 2 20:06:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/benchmark.rb (Benchmark::realtime): make Benchmark#realtime
+ a bit faster. a patch from Alexander Dymo <dymo AT ukrpost.ua> in
+ [ruby-core:15337].
+
+Sat Feb 2 17:40:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * time.c (time_cmp): Time.<=> no longer supports comparison with
+ numeric. [ruby-core:15332]
+
+Sat Feb 2 09:53:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (darwin): disabled fat-binary support which confuses
+ configure much, since ``universal'' implies hidden cross-compiling.
+ TODO: ruby and libruby.bundle might be possible to bound with `lipo'
+ after builds for each archs. Anyway, config.h and rbconfig.rb must
+ be separated definitely at least.
+
+Sat Feb 2 09:28:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * random.c (limited_big_rand): fix buffer overflow when SIZEOF_BDIGITS
+ is 2. fixed by Kenta Murata. [ruby-dev:33565]
+
+Fri Feb 1 21:42:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (darwin): _XOPEN_SOURCE is necessary to make ucontext_t
+ consistent with the library implementation of MacOS X 10.5.
+ [ruby-dev:33461]
+
+ * configure.in (darwin): ucontext on PowerPC MacOS X 10.5 is broken.
+
+Fri Feb 1 11:44:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb (C_ESC): use octal escape to avoid
+ "\x09for (;;) ..." to be interpret the first character 0x9f.
+
+Thu Jan 31 23:06:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_bignum.rb: suppress warnings during test.
+
+ * test/ruby/test_enum.rb: ditto.
+
+ * test/ruby/test_integer.rb: add tests to achieve over 90% test
+ coverage of numeric.c.
+
+ * test/ruby/test_float.rb: ditto.
+
+ * test/ruby/test_fixnum.rb: ditto.
+
+ * test/ruby/test_numeric.rb: ditto.
+
+ * test/ruby/test_pack.rb: add tests to achieve over 90% test coverage
+ of pack.c.
+
+Thu Jan 31 17:30:42 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * marshal.c (r_object0): no need to call r_entry for immediate values.
+
+Thu Jan 31 15:46:30 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/formatter.rb (output): add accessor.
+
+ * lib/rdoc/ri/display.rb (page): replace @formatter.output instead of
+ $stdout.
+
+Thu Jan 31 15:06:50 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (r_object0): call r_entry/r_leave to call proc when
+ TYPE_FIXNUM, TYPE_NIL, TYPE_TRUE, TYPE_FALSE, TYPE_SYMBOL.
+
+Thu Jan 31 14:03:38 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/display.rb (display_method_list, display_class_list):
+ use @formatter.raw_print_line instead of puts.
+
+ * lib/rdoc/ri/driver.rb (select_methods): new method to collect all
+ instance/class methods which match with passed pattern.
+
+ * lib/rdoc/ri/driver.rb (run): use class_cache's result directly
+ instead of select_classes' because it's removed now.
+
+ * lib/rdoc/ri/driver.rb (run): search methods when passed name is not
+ class name. [ruby-core:15309]
+
+Thu Jan 31 08:31:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ext/extmk.rb, instruby.rb): inlined $(MAKE) so that can
+ be executed even with -n.
+
+Thu Jan 31 06:24:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_close_read): replaces fptr with the tied writer if
+ duplex.
+
+ * io.c (rb_io_close_write): unties the tied IO for writing if duplex.
+ [ruby-dev:33532]
+
+Thu Jan 31 02:22:04 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (open_key_args): allow encoding key to take two encoding
+ names. a patch from <rubikitch AT ruby-lang.org>. [ruby-dev:33540]
+
+Thu Jan 31 02:15:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (dsym): allow empty symbols. [ruby-core:15248]
+
+Thu Jan 31 00:01:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (select_internal): fix SEGV by `select [STDIN],nil,[STDIN]'.
+ fixed by Petr Chromec.
+ http://rubyforge.org/tracker/index.php?func=detail&aid=17275&group_id=426&atid=1698
+
+Wed Jan 30 17:32:49 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/*.c: add GB12345, UCS-{2,4}{BE,LE}.
+
+Wed Jan 30 14:32:18 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/driver.rb (cache_file_for): shouldn't use `:' in filename.
+
+Wed Jan 30 14:27:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_succ): use wrapped character as a carry for
+ ASCII incompatible encoding.
+
+Wed Jan 30 12:26:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/utf_16be.c (UTF16_IS_SURROGATE_FIRST): avoid branch.
+ (UTF16_IS_SURROGATE_SECOND): ditto.
+ (UTF16_IS_SURROGATE): defined.
+ (utf16be_mbc_enc_len): validation implemented.
+
+ * enc/utf_16le.c (UTF16_IS_SURROGATE_FIRST): avoid branch.
+ (UTF16_IS_SURROGATE_SECOND): ditto.
+ (UTF16_IS_SURROGATE): defined.
+ (utf16le_mbc_enc_len): validation implemented.
+
+Wed Jan 30 12:06:43 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * bignum.c (rb_cstr_to_inum): '0_2' is a valid representation.
+
+Wed Jan 30 11:57:50 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * bootstraptest/runner.rb: fix -I../../hoge case.
+
+Wed Jan 30 01:25:16 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_range.rb: add tests to achieve over 90% test coverage
+ of range.c.
+
+Wed Jan 30 00:09:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/euc_tw.c (euctw_mbc_enc_len): validation implemented.
+
+Tue Jan 29 22:58:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_enumerator.rb: add tests to achieve over 90% test
+ coverage of enumerator.c.
+
+ * test/ruby/test_enum.rb: add for enum.c.
+
+Tue Jan 29 22:29:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enumerator.c: fix documents.
+
+Tue Jan 29 22:27:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * range.c: fix SEGV by ("a" .. "z").step(2 ** 30) { }.
+
+Tue Jan 29 21:59:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/euc_tw.c (euctw_islead): 0x8e is a leading byte.
+
+Tue Jan 29 21:55:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c: move object allocation out of blocking_region.
+ [ruby-dev:33139]
+
+Tue Jan 29 20:37:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/make_transdb.rb: add for make transdb.h.
+
+ * dmytranscode.c: add for miniruby.
+
+ * enc/gbk.c (gbk_left_adjust_char_head, gbk_is_allowed_reverse_match):
+ fix odd regexp match. [ruby-dev:33502]
+
+Tue Jan 29 20:17:06 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32}/Makefile.sub (MINIOBJS): add dmytranscode.$(OBJEXT).
+
+Tue Jan 29 19:39:40 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in, common.mk: fix rule for dmytranscode.o.
+
+Tue Jan 29 19:03:16 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c (rb_to_Windows_31J): to 'Windows-31J'.
+
+ * common.mk: add rules for transdb.h.
+
+ * transcode.c (init_transcoder_table): use transdb.h.
+
+Tue Jan 29 18:05:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (encdb_{replicate,alias,dummy,declare}): define only if
+ NO_ENCDB_H is not defined.
+
+Tue Jan 29 17:54:11 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/gbk.c (EncLen_gbk): too short. [ruby-dev:33497]
+
+Tue Jan 29 17:25:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dmyencoding.c, encoding.c (enc_init_db, NO_ENCDB_H):
+ miniruby doesn't use encdb.
+
+ * common.mk: encdb.h use miniruby.
+
+Tue Jan 29 17:37:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/gb18030.c (gb18030_mbc_enc_len): validation implemented.
+
+Tue Jan 29 17:01:07 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/ifchange: remove $temp when unchanged.
+
+Tue Jan 29 16:59:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * insns.def (toregexp): generate a regexp from strings instead of one
+ string.
+
+ * re.c (rb_reg_new_ary): defined for toregexp. it concatenates
+ strings after each string is preprocessed.
+
+ * compile.c (compile_dstr_fragments): split from compile_dstr.
+ (compile_dstr): call compile_dstr_fragments.
+ (compile_dregx): defined for dynamic regexp.
+ (iseq_compile_each): use compile_dregx for dynamic regexp.
+
+ [ruby-dev:33400]
+
+Tue Jan 29 16:25:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk, ext/extmk.rb: always make encdb.h.
+
+Tue Jan 29 12:53:39 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/gbk.c: add GBK, CP936 and CP949.
+
+ * enc/euc_kr.c: remove CP949.
+
+ * enc/euc_cn.c: remove CP936 and rename to gb2312.c
+
+ * enc/gb2312.c: GB2312 is preferred MIME name.
+
+Tue Jan 29 03:01:29 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (reg_fragment_setenc_gen): US-ASCII script special code.
+
+ * parse.y (reg_fragment_check_len, reg_compile_gen): no need such
+ trick.
+ [ruby-dev:33399]
+
+ * test/ruby/test_m17n.rb (test_regexp_usacii_literal): add tests.
+
+Tue Jan 29 01:38:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk ($(srcdir)/revision.h): no need to show ifchange execution
+ because ifchange echos updated or unchanged.
+
+Tue Jan 29 01:26:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (up): use last changed revision.
+
+ * common.mk (up): force to update revision.h.
+
+Tue Jan 29 00:12:17 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): should be US-ASCII.
+
+Tue Jan 29 00:10:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-set-encoding): updates magic comment.
+
+Mon Jan 28 23:47:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (rb_id2str, ripper_initialize, Init_ripper):
+ use rb_usascii_str_new2. [ruby-dev:33449]
+
+Mon Jan 28 19:37:08 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (ole_cp2encoding): new function.
+
+ * ext/win32ole/win32ole.c (ole_wc2vstr, ole_variant2val, fole_missing):
+ set encoding to result.
+
+ * ext/win32ole/win32ole.c (fole_s_set_code_page, Init_win32ole): set
+ default encoding.
+ [ruby-dev:33433]
+
+Mon Jan 28 11:17:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c, parse.y, re.c: use rb_ascii8bit_encoding.
+
+Mon Jan 28 17:54:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_7.h: add dummy encoding UTF-7 and its alias CP65000.
+
+Mon Jan 28 17:41:19 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/utf_8.c: add alias CP65001.
+
+Mon Jan 28 15:33:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/big5.c (big5_mbc_enc_len): validation implemented.
+
+Mon Jan 28 13:02:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/euc_kr.c (euckr_mbc_enc_len): validation implemented.
+
+Mon Jan 28 11:24:49 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_str_new): encoding of UTF-8 literal string in
+ US-ASCII script is UTF-8. [ruby-dev:33406]
+
+Mon Jan 28 10:25:59 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_m17n.rb (test_magic_comment): add test.
+
+Mon Jan 28 09:34:54 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (help): use double quotes for nmake.
+
+Mon Jan 28 00:39:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_set_encode): check if encoding is ASCII compatible.
+
+Mon Jan 28 01:21:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_open_file): should check NUL in path.
+ <http://www.rubyist.net/~matz/20080125.html#c01>.
+
+ * io.c (rb_io_s_popen): ditto.
+
+ * io.c (rb_io_reopen): ditto.
+
+ * io.c (next_argv): ditto.
+
+Sun Jan 27 23:33:35 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): fix for left justify flag.
+
+ * sprintf.c (rb_str_format): zero-precision zero bug revised.
+ [ruby-dev:33419]
+
+Sun Jan 27 23:20:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h: precise mbclen API redesigned to avoid
+ inline functions.
+ (onigenc_mbclen_charfound): removed.
+ (onigenc_mbclen_needmore): removed.
+ (onigenc_mbclen_recover): removed.
+ (ONIGENC_MBCLEN_CHARFOUND): removed.
+ (ONIGENC_MBCLEN_CHARFOUND_P): defined.
+ (ONIGENC_MBCLEN_CHARFOUND_LEN): defined.
+ (ONIGENC_MBCLEN_INVALID): removed.
+ (ONIGENC_MBCLEN_INVALID_P): defined.
+ (ONIGENC_MBCLEN_NEEDMORE): removed.
+ (ONIGENC_MBCLEN_NEEDMORE_P): defined.
+ (ONIGENC_MBCLEN_NEEDMORE_LEN): defined.
+ (ONIGENC_MBC_ENC_LEN): use onigenc_mbclen_approximate.
+
+ * regenc.c (onigenc_mbclen_approximate): defined.
+
+ * include/ruby/encoding.h (MBCLEN_CHARFOUND): removed.
+ (MBCLEN_INVALID): removed.
+ (MBCLEN_NEEDMORE): removed.
+ (MBCLEN_CHARFOUND_P): defined.
+ (MBCLEN_INVALID_P): defined.
+ (MBCLEN_NEEDMORE_P): defined.
+ (MBCLEN_CHARFOUND_LEN): defined.
+ (MBCLEN_NEEDMORE_LEN): defined.
+
+ * encoding.c: use new API.
+
+ * re.c: ditto.
+
+ * string.c: ditto.
+
+ * parse.y: ditto.
+
+Sun Jan 27 22:55:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (value_expr_gen): reverted r12880. [ruby-dev:33388]
+
+Sun Jan 27 22:33:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): fix for octal with precision.
+ [ruby-dev:33411]
+
+Sun Jan 27 22:31:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-set-encoding): automatically insert
+ encoding magic comment.
+
+ * misc/ruby-mode.el (ruby-mode): set ruby-mode-set-encoding to buffer
+ local before-save-hook.
+
+Sun Jan 27 19:51:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_inspect): avoid exception by
+ "\#\xa1".force_encoding("euc-jp").inspect.
+
+Sun Jan 27 19:07:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_succ): warning suppressed.
+
+Sun Jan 27 18:18:13 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (help): show major targets.
+
+Sun Jan 27 17:54:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c: raise error when no output encoding is given.
+
+Sun Jan 27 17:20:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_succ): don't increment/decrement codepoint.
+
+Sun Jan 27 16:03:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex#buf_input): use chars.to_a.
+
+Sun Jan 27 16:27:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8: update nkf.
+
+Sun Jan 27 16:25:27 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_source): set encoding as regexp encoding.
+
+Sun Jan 27 05:56:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_preprocess): force fixed encoding when ASCII
+ incompatible source string.
+
+Sat Jan 26 23:46:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): zero-precision zero should be empty.
+ [ruby-dev:33363]
+
+ * sprintf.c (rb_str_format): not prepend octal prefix to negative or
+ zero value. [ruby-dev:33363], [ruby-dev:33367]
+
+Sat Jan 26 23:42:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assignable_gen, keyword_to_name): __ENCODING__ was missing.
+
+Sat Jan 26 19:08:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (w_object): dump string encoding in USERDEF.
+ [ruby-dev:33401]
+
+Sat Jan 26 17:42:23 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): validate argument expr of "next"
+ statement.
+
+ * bootstraptest/test_syntax.rb: add a test.
+
+Sat Jan 26 17:22:46 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, compile.h: fix to calculate correct stack depth
+ at each instruction.
+
+Sat Jan 26 09:41:02 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/doctype.rb, test/rss/test_maker_itunes.rb: replace
+ multi-byte string.
+
+ * test/json/{test_json.rb, test_json_unicode.rb}:
+ add magic comment.
+
+Sat Jan 26 09:30:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_usascii_encindex): added prototype.
+
+ * include/ruby/intern.h (rb_usascii_str_new, rb_usascii_str_new2):
+ ditto.
+
+Sat Jan 26 09:17:13 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_new): set US-ASCII and ENC_CODERANGE_7BIT when
+ empty string (len == 0).
+
+Sat Jan 26 03:41:53 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_initialize): set default script encoding as US-ASCII.
+
+ * ruby.c (load_file): ditto.
+
+ * ruby.c (process_options): set script encoding of -e from locale
+ except when -K is specified.
+
+ * ruby.c (load_file): set script encoding of stdin from locale except
+ when -K is specified. [ruby-dev:33375]
+
+Sat Jan 26 02:51:06 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, compile.h: fix stack pointer issues.
+ calculate correct stack depth at compile time.
+
+ * insns.def (emptstack): remove it and add a new insn "adjuststack".
+
+ * bootstraptest/test_knownbug.rb: move/remove fixed test.
+
+ * bootstraptest/test_syntax.rb: ditto.
+
+Sat Jan 26 00:17:18 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_usascii_new{,2}: defined.
+ (rb_str_new): set US-ASCII and ENC_CODERANGE_7BIT when empty
+ string.
+
+ * encoding.c (rb_usascii_encoding, rb_usascii_encindex): defined.
+ (rb_enc_inspect, enc_name, rb_locale_charmap, rb_enc_name_list_i):
+ use rb_str_ascii_new.
+
+ * array.c (recursive_join, inspect_ary): ditto.
+
+ * object.c (nil_to_s, nil_inspect, true_to_s, false_to_s,
+ rb_mod_to_s): ditto.
+
+ * hash.c (inspect_hash, rb_hash_inspect, rb_f_getenv, env_fetch,
+ env_clear, env_to_s, env_inspect): ditto.
+
+ * numeric.c (flo_to_s, int_chr, rb_fix2str): ditto.
+
+ * bignum.c (rb_big2str): ditto.
+
+ * file.c (rb_file_ftype, rb_file_s_dirname, rb_file_s_extname,
+ file_inspect_join, Init_file): ditto.
+
+ * test/ruby/test_ruby_m17n.rb: add checks for encoding of string.
+
+Sat Jan 26 01:35:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (r_byte): use getbyte instead of getc.
+ (marshal_load): ditto.
+ [ruby-dev:33264]
+
+Sat Jan 26 00:43:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_getline_fast): don't care ASCII incompatible encoding.
+ (prepare_getline_args): generate a newline according to IO encoding
+ when necessary.
+ (rb_io_getline_1): call rb_io_getline_fast only for ASCII
+ compatible encoding.
+
+Fri Jan 25 21:49:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_buf_cat_ascii): use rb_enc_cr_str_buf_cat.
+
+Fri Jan 25 19:38:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (version.$(OBJEXT)): depends on $(srcdir)/revision.h.
+
+ * common.mk (revision.h): extracts revision number with ``svn info''.
+
+ * common.mk (up): target to update from the repository.
+
+ * Makefile.in, {win,bcc}32/Makefile.sub (IFCHANGE): tool to update a
+ file if changed.
+
+ * tool/ifchange: for unixen.
+
+ * win32/ifchange.bat: some fix
+
+Fri Jan 25 17:12:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file): set default to ASCII-8BIT explicitly if -K
+ option is not given.
+
+Fri Jan 25 16:31:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_str_buf_cat_ascii): declared.
+
+ * string.c (rb_str_buf_cat_ascii): defined.
+
+ * re.c (rb_reg_s_union): use rb_str_buf_cat_ascii to support ASCII
+ incompatible encoding.
+
+Fri Jan 25 16:11:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options, load_file, rb_load_file): propagates script
+ encoding by -K to libraries. [ruby-dev:33156]
+
+Fri Jan 25 15:56:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (cmdline_arguments): split argc and argv from cmdline_options.
+
+ * ruby.c (process_options): not set encoding of -e option from -E
+ option if they are not compatible.
+
+Fri Jan 25 13:15:23 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (proc_options, process_options, load_file): shouldn't effect
+ --encoding to script encoding. [ruby-dev:33169]
+
+Fri Jan 25 10:31:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * */*.bat: set svn:mime-type to text/batch.
+
+Thu Jan 24 23:23:06 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enum.c (enum_one, enum_take_while, enum_drop_while): fix documents.
+
+Thu Jan 24 21:46:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (reg_fragment_setenc_gen): associate ASCII-8BIT only if
+ str has only ASCII characters.
+
+Thu Jan 24 20:46:17 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_m17n.rb: follow to the following changes.
+
+Thu Jan 24 20:21:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parser.y (parser_str_new): automatically update string literal's
+ encoding from US-ASCII to ASCII-8BIT when script encoding is US-ASCII
+ and the string includes non-ascii bytes. [ruby-dev:33348]
+
+ * parser.y (reg_fragment_check_gen, reg_compile_gen): automatically
+ update regexp literal's encoding from US-ASCII to ASCII-8BIT when
+ script encoding is US-ASCII, the regexp has no kcode option and the
+ regexp includes non-ascii bytes. [ruby-dev:33353]
+
+Thu Jan 24 19:36:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic::inspect): use Kernel#to_s instead
+ object_id with printf. [ruby-dev:33347]
+
+Thu Jan 24 19:29:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (remove_sign_bits): returns pointer to the first char to
+ be used, instead of copying.
+
+ * sprintf.c (rb_str_format): negative indicator dots should come
+ before sign digits always. [ruby-dev:33224]
+
+Thu Jan 24 18:19:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_is_newline): parenthesized arguments.
+
+Thu Jan 24 18:14:14 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (rb_reg_fixed_encoding_p): no need to treat ASCII-8BIT specially.
+
+Thu Jan 24 16:53:06 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): 7bit clean regexp should be US-ASCII.
+ [ruby-dev:33346]
+
+Thu Jan 24 16:31:04 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast): the end point of left_char_head()
+ must be the last character. [ruby-cvs:22445]
+
+Thu Jan 24 16:24:25 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (reg_fragment_setenc_gen): recognize regexp with option n as
+ as ASCII-8BIT instead of US-ASCII. [ruby-dev:33339]
+
+Thu Jan 24 15:44:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (collect_bang_i): use rb_ary_store() to avoid potential
+ memory corruption. a patch from Yusuke Endoh <mame@tsg.ne.jp>
+ in [ruby-dev:33328].
+
+ * array.c (ITERATE): remove unnecessary macro.
+
+ * array.c (sort_1): remove ary_sort_check(). in-place sort keep
+ original elements even when it's modified.
+
+ * array.c (sort_2): ditto.
+
+Thu Jan 24 15:09:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * time.c (make_time_t): revert round trip test. [ruby-dev:33058]
+
+Thu Jan 24 11:14:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): ASCII incompatible encoding is
+ not compatible with any other encoding.
+
+Thu Jan 24 07:34:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (STR_NEW0): set encoding as US-ASCII.
+
+Thu Jan 24 03:47:41 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/text.rb, lib/rubygems/open-uri.rb, lib/open-uri.rb,
+ test/logger/test_logger.rb, test/ruby/test_regexp.rb:
+ fix tests. [ruby-dev:33336]
+
+Thu Jan 24 03:23:44 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_line): use memchr(3) for faster newline
+ search.
+
+ * io.c (appendline): remove unused arguments
+
+ * io.c (rb_io_getline_fast): make much simpler (and faster).
+
+Thu Jan 24 02:13:07 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * insns.def (expandarray): fix stack inc. [ruby-dev:32892]
+
+ * bootstraptest/test_knownbug.rb, test_massign.rb: move a fixed test.
+
+Thu Jan 24 01:00:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.{c, h} (rb_usascii_encoding): added.
+
+ * parse.y (parser_str_new, rb_intern3): ascii only string literal is
+ US-ASCII.
+
+ * ruby.c (proc_optionc): -Kn means ASCII-8BIT.
+
+Wed Jan 23 23:54:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * sprintf.c: fix comment. [ruby-dev:33275]
+
+ * math.c: fix comment. [ruby-dev:33276]
+
+Wed Jan 23 22:47:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_struct.rb: add tests to achieve over 90% test
+ coverage of struct.c.
+
+ * test/ruby/test_sprintf.rb: ditto for sprintf.c.
+
+ * test/ruby/test_math.rb: ditto for math.c.
+
+Wed Jan 23 22:14:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/japanese.c (rb_from_Windows_31J, rb_to_Windows_31J):
+ provisional workaround for Windows-31J. [ruby-dev:33320]
+
+Wed Jan 23 15:25:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_strftime): copy encoding from format. [ruby-dev:33303]
+
+Wed Jan 23 15:04:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_make_independent): should set length.
+
+ * string.c (rb_str_associate): hide associated array from ObjectSpace.
+
+ * string.c (rb_str_associated): return associated array with freezing
+ instead of false. [ruby-dev:33282]
+
+ * string.c (rb_str_freeze): freeze associated array together.
+
+Wed Jan 23 13:39:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_prepare_re): fix SEGV by
+ /a/ =~ "aa".force_encoding("utf-16be").
+
+Wed Jan 23 11:53:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_mod_check, str_nth, str_offset): constified.
+
+ * string.c (rb_str_dump): dump in ASCII-8BIT always.
+
+Wed Jan 23 10:18:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_method.c (rb_export_method): set ruby_vm_redefined_flag for
+ visibility change as well. reported by K.Kosako in
+ http://d.hatena.ne.jp/kkos/20080122#1201012720.
+
+Tue Jan 22 22:26:23 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_bignum.rb: change some tests because rational
+ redefines Bignum#quo and Bignum#**.
+
+Tue Jan 22 20:58:15 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): need to output sodir rule.
+
+Tue Jan 22 19:37:16 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): lib files shouldn't depend on install
+ dir because if the dir is newer than lib files, lib files will be
+ always copied.
+
+Tue Jan 22 17:52:52 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/utf_16_32.c: Streamline parentheses, add more
+ 'static' qualifiers.
+
+Tue Jan 22 12:57:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in (MINIRUBY): remove -I$(EXTOUT)/$(arch) from
+ MINIRUBY since miniruby might not be able to load DLL.
+
+ * test/ruby/test_m17n.rb: move tests from bootstrap test.
+
+ * encoding.c (enc_find): should check name if ASCII compatible.
+
+ * string.c (rb_str_end_with): should check character boundary.
+
+ * encoding.c (rb_enc_compatible): encoding must be ASCII
+ compatible before checking ENC_CODERANGE_7BIT.
+
+ * encoding.c (rb_enc_compatible): wrong compatibility condition.
+ [ruby-dev:33273]
+
+Tue Jan 22 09:26:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_each_char): iterates over a shadow.
+ [ruby-dev:33243]
+
+Tue Jan 22 08:59:52 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/formatter.rb: Indent labeled lists like note lists.
+
+ * test/rdoc/test_rdoc_ri_overstrike_formatter.rb: Added.
+
+ * test/rdoc/test_rdoc_ri_formatter.rb: Added tests.
+
+Tue Jan 22 04:40:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_intern3): do not call rb_enc_mbclen() if *m is
+ ASCII. [ruby-talk:287225]
+
+ * string.c (rb_str_each_line): use rb_enc_is_newline() to gain
+ performance if the record separator ($/) is not modified.
+
+Tue Jan 22 01:15:51 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ChangeLog: format-time-string under C locale. [ruby-dev:33261]
+
+Tue Jan 22 00:45:12 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_bignum.rb: add tests for bignum.c.
+
+Tue Jan 22 00:30:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (big_shift): fix a bug that caused infinite loop when
+ left shifting.
+
+Mon Jan 21 20:09:38 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (marshal_load): initialize the cache.
+
+Mon Jan 21 19:42:42 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c, enc/trans/utf_16_32.c, test/ruby/test_transcode.rb:
+ added UTF-32BE and UTF-32LE conversions.
+
+Mon Jan 21 14:36:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_transcode): initialize transcoder in
+ rb_transcoding. [ruby-dev:33234]
+
+ * transcode_data.h (rb_transcoding): transcoder constified.
+
+Mon Jan 21 12:50:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c, gc.c (setjmp): sigsetjmp is a macro on cygwin.
+
+Mon Jan 21 12:35:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_loop, str_transcoding_resize): use unsigned
+ char. [ruby-dev:33232]
+
+ * transcode_data.h (rb_transcoding, rb_transcoder): removed callback
+ parameters.
+
+ * enc/trans/japanese.c: ditto.
+
+ * enc/trans/utf_16_32.c: parenthesized bit-or operands.
+
+Mon Jan 21 11:59:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_each_char): move forward. [ruby-dev:33231]
+
+Mon Jan 21 06:40:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_dispatch): constified return value.
+
+ * transcode_data.h (rb_transcoding): include pointer to rb_transcoder
+ and auxiliary data.
+
+ * transcode_data.h (rb_transcoder): all callback functions should have
+ their own parameters.
+
+ * enc/trans/{japanese,single_byte}.c: constified.
+
+Mon Jan 21 03:45:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_each_char): advance offset before get next char
+ length. [ruby-dev:33211]
+
+Sun Jan 20 20:00:20 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c, enc/trans/utf_16_32.c, test/ruby/test_transcode.rb:
+ added UTF-16LE conversions.
+
+ * fixed changelog for last commit
+
+Sun Jan 20 17:54:00 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * added changelog for last commit
+
+Sun Jan 20 15:08:08 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/utf_16_32.c: new file, currently implementing
+ UTF-16BE conversions only.
+
+ * test/ruby/test_transcode.rb: Added tests for UTF-16BE;
+ made check_both_ways() use force_encoding differently.
+
+ * transcode_data.h, transcode.c: Support for more conversion
+ functions.
+
+Sun Jan 20 13:06:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_each_char): performance improvement, and stop if
+ shortened in the block. [ruby-dev:33189]
+
+Sun Jan 20 09:12:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: use -Ks when read insns.def. [ruby-dev#33185]
+
+ * parse.y: fix -e and stdin strings aren't set encoding.
+
+Sun Jan 20 05:12:44 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/make_encdb.rb: fix duplication check.
+
+Sun Jan 20 05:03:46 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ascii.c: remove definition of replica KOI8-U.
+
+Sun Jan 20 00:33:59 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/koi8_u.c: added.
+
+ * regenc.c, enc/utf_8.c, enc/unicode.c, enc/gb18030.c: add ARG_UNUSED.
+
+Sat Jan 19 22:41:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (coderange_scan): don't call mbclen functions for ASCII
+ characters with ASCII compatible encoding.
+
+Sat Jan 19 21:00:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/rdoc/template.rb (RDoc): defined to avoid uninitialized constant
+ error by `./ruby test/rubygems/test_gem_server.rb'.
+
+Sat Jan 19 20:41:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (enc_new): don't free rb_encoding to avoid SEGV by
+ `miniruby -e exit' on x86_64 GNU/Linux.
+
+Sat Jan 19 18:40:19 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (once): use an instance variable which points a hash
+ as cache. [experimental]
+
+Sat Jan 19 17:21:29 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: parse's hints as an
+ experimental function has been removed.
+
+Sat Jan 19 11:21:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (sigsetjmp): check if available.
+
+ * eval.c, gc.c (setjmp): do not use _setjmp if sigsetjmp is available.
+
+Sat Jan 19 11:10:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: Remove wrong assumptions about Cygwin. a patch from
+ Corinna Vinschen in [ruby-Bugs-17018].
+
+Sat Jan 19 09:23:14 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_set_safe_array): should not use
+ recursive calling.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+Sat Jan 19 08:58:47 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup: Remove ListBase and Line constants.
+
+ * lib/rdoc/ri: Allow output IO to be specified.
+
+ * test/rdoc/parser/test_parse_c.rb: Move up one level, fixed.
+
+ * test/rdoc/parser/test_rdoc_markup_attribute_manager.rb: Renamed to
+ match new class name, updated to match new classes.
+
+ * test/rdoc/test_rdoc_ri_formatter.rb: Start of RI formatting tests.
+
+ * test/rdoc/test_rdoc_ri_attribute_manager.rb: Start of
+ RDoc::RI::AttributeManager tests.
+
+ * test/rdoc/test_simple_markup.rb: Moved to match new class name.
+
+Sat Jan 19 08:35:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_prepare): get encoding from the first line.
+ [ruby-dev:33168]
+
+ * ruby.c (load_file): set encoding to input with set_encoding.
+
+Sat Jan 19 03:46:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (thread_create_core): prohibit thread creation in the
+ frozen thread group. a patch in [ruby-dev:33176] from sheepman
+ <sheepman AT sheepman.sakura.ne.jp>.
+
+ * thread.c (thread_create_core): should inherit ThreadGroup from
+ the current thread.
+
+Sat Jan 19 00:37:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): set result encoding for wider width.
+
+Sat Jan 19 00:13:19 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (w32_wait_events): shouldn't invoke interrupt handle
+ by timer_thread.
+
+Fri Jan 18 23:49:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_create_core): set thread group before creating
+ thread.
+
+Fri Jan 18 20:19:51 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (ripper_initialize): too early to set parser->enc.
+
+Fri Jan 18 20:03:05 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak (BASERUBY): nmake cannot execute ruby correctly
+ if the path of ruby.exe is quoted.
+
+ * win32/setup.mak ($(ARCH)): if a macro is appended by $(APPEND),
+ a space will be inserted on the top of the line.
+
+Fri Jan 18 17:56:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h, insnhelper.h, thread_pthread.h, vm_core.h, vm_opts.h:
+ prefixed include guards with RUBY.
+
+ * id.h: added include guard.
+
+ * regenc.h, regint.h, regparse.h: prefixed include guards with
+ ONIGURUMA.
+
+Fri Jan 18 15:57:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_cleanup_func): ignore errors from destroying mutex
+ of dead thread. [ruby-core:15069]
+
+ * thread_pthread.c, thread_win32.c (native_thread_destroy): ditto.
+
+Fri Jan 18 15:56:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_name_list_i, rb_enc_aliases_enc_i): freeze
+ element strings to be returned.
+
+Fri Jan 18 14:36:34 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_m17n.rb (test_str_dump): added test for
+ String#dump. [ruby-dev:33142]
+
+Fri Jan 18 12:25:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (load_encoding): check if successfully loaded.
+
+ * encoding.c (rb_enc_find_index): use original encoding name to
+ replicate loaded encoding instead alias.
+
+Fri Jan 18 09:43:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (rb_char_to_option_kcode): Regexp switch `s' should mean
+ Windows-31J, as wells as `-Ks'.
+
+Fri Jan 18 09:22:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_initialize): explicitly call rb_ascii8bit_encoding().
+
+ * parse.y (parser_prepare): lex_input may not be have encoding (e.g. IO).
+
+ * parse.y (rb_parser_compile_string): set encoding from input string.
+
+ * encoding.c (rb_enc_find_index): use ASCII-8BIT if loading known
+ encoding failed.
+
+ * parse.y (ripper_initialize): move parser->enc initialization.
+
+ * encoding.c (rb_enc_aliases_enc_i): exclude non alias names from
+ Encoding.aliases.
+
+ * encoding.c (rb_enc_find_index): use original encoding name to
+ load DLL.
+
+Fri Jan 18 07:06:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (Init_IO): stdin/stdout may not be duplex.
+
+Fri Jan 18 04:27:57 2008 Eric Hodel <drbrain@segment7.net>
+
+ * sample/rdoc/markup/rdoc2latex.rb: Fix for new namespacing.
+
+ * lib/rdoc/markup/to_latex.rb: Fix namespacing.
+
+Fri Jan 18 02:02:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb (assert_valid_syntax): added.
+
+ * bootstraptest/test_knownbug.rb: added test for [ruby-list:44479]
+
+Fri Jan 18 01:48:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): check argument number to
+ attr_reader. [ruby-core:15120]
+
+Fri Jan 18 00:49:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_check_readable): flush tied write IO too.
+
+ * io.c (Init_IO): tie stdin with stdout. [ruby-core:15107]
+
+Fri Jan 18 00:23:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_free): removed since rb_encoding may be used while
+ cleanup.
+
+Fri Jan 18 00:17:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/euc_cn.c: split from enc/euc_kr.c.
+
+Fri Jan 18 00:03:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_init): use default external encoding
+ if nothing is given. a patch from sheepman <sheepman AT
+ sheepman.sakura.ne.jp> in [ruby-dev:33159].
+
+Thu Jan 17 23:56:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encdb.h): give output file name to make_encdb.rb.
+
+ * encoding.c (enc_table): simplified.
+
+ * encoding.c (enc_register_at): lazy loading. [ruby-dev:33013]
+
+ * regenc.h (ENC_DUMMY): added.
+
+ * enc/make_encdb.rb: now emits macros only.
+
+ * enc/iso_2022_jp.h: split from encoding.c.
+
+Thu Jan 17 21:48:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_char_to_option_kcode): fixed typo.
+
+Thu Jan 17 21:01:25 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (Date::Infinity#<=>): didn't work. A patch from
+ Dirkjan Bussink <d.bussink AT gmail.com> [ruby-core:15098].
+ This is a bug obviously. However it didn't affect the library's
+ functions.
+
+ * lib/date.rb, lib/date/format.rb: some trivial changes.
+
+Thu Jan 17 13:07:18 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_dump): preserve the encoding of source string
+ if it is ASCII compatible. otherwise, add '.force_encoding()'
+ for ugly work around. maybe we should implement some other way
+ to keep non ASCII encoding in dumped string. [ruby-dev:33142]
+
+Thu Jan 17 10:30:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fwrite): always flush IO on tty, even without newlines.
+ [ruby-core:15107]
+
+Wed Jan 16 22:45:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_register_at): make own copy. [ruby-dev:33136]
+
+Wed Jan 16 18:03:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open, rb_io_s_popen): clear temporary object to release
+ and prevent from GC.
+
+Wed Jan 16 17:55:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (fix_quo): typo. a patch from Shin-ichiro HARA
+ <sinara AT blade.nagaokaut.ac.jp> in [ruby-dev:33130]
+
+Wed Jan 16 17:36:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/test_delegate.rb: add new test file for delegate.rb.
+
+Wed Jan 16 16:14:00 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.1: Fix grammar.
+
+Wed Jan 16 15:26:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (sys_fail2): get rid of unlimited alloca.
+
+ * io.c (mode_enc, pipe_open, rb_io_s_popen): ditto.
+
+ * load.c (rb_feature_p): ditto.
+
+ * object.c (rb_cstr_to_dbl): ditto.
+
+ * io.c (mode_enc): fixed uninitialized variable.
+
+Wed Jan 16 12:51:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_str_tmp_new, rb_str_shared_replace):
+ prototype moved.
+
+Tue Jan 15 23:52:51 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/*: add ARG_UNUSED.
+
+ * enc/koi8_u.c: added.
+
+Tue Jan 15 23:00:08 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_{16,32}{be,le}.c: remove some ARG_UNUSED. replace struct
+ OnigEncodingST by OnigEncoding.
+
+Tue Jan 15 22:30:43 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (ENC_REGISTER): use &OnigEncoding*.
+ (ENCINDEX_UTF_8): renamed from ENCINDEX_UTF8.
+ (rb_enc_init): use ENC_REGISTER.
+
+ * include/ruby/oniguruma.h (OnigEncodingUTF8, ONIG_ENCODING_UTF8):
+ removed.
+
+ * enc/*.c: remove use of &encoding_*; use enc argument instead.
+
+Tue Jan 15 18:44:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enc/utf_8.c: remove use of ONIG_ENCODING_UTF8 altogether; use
+ enc argument instead.
+
+Tue Jan 15 18:05:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/utf_8.c (ONIG_ENCODING_UTF8): reverted.
+
+Tue Jan 15 18:01:55 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (MKFILES): add dependencies.
+
+Tue Jan 15 18:00:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enc/utf_8.c (OnigEncodingDefine): encoding name should be kept
+ unchanged.
+
+Tue Jan 15 17:53:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/utf_8.c: renamed as IANA name.
+
+ * enc/Makefile.in: ditto.
+
+Tue Jan 15 16:59:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): encoding libraries cannot be loaded until
+ load path is set.
+
+Tue Jan 15 15:09:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/setup.mak: strip out empty lines from CPP output.
+
+Tue Jan 15 14:57:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {win,bcc}32/setup.mak (-basic-vars-): expand BASERUBY to full path
+ to get rid of ./ruby.exe.
+
+ * win32/enc-setup.mak: workaround for Borland make.
+
+Tue Jan 15 14:44:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): use ASCII-8BIT in miniruby.
+
+Tue Jan 15 13:54:41 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32}/Makefile.sub (RUNRUBY): need to set archdir when
+ invoking ruby.
+
+Tue Jan 15 13:43:18 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (us_ascii.o): add dependencies. [ruby-dev:33111]
+
+Tue Jan 15 03:41:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (eval): check if backtrace is empty. [ruby-core:15040]
+
+Tue Jan 15 01:28:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: simplified dummy objects dependencies.
+
+Tue Jan 15 01:19:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (OBJS): moved encoding.o from COMMONOBJS.
+
+ * common.mk (dmyencoding.o): added. [ruby-dev:33099]
+
+ * configure.in, {win,bcc}32/Makefile.sub (MINIOBJS): added
+ dmyencoding.o.
+
+ * dmyencoding.c (rb_locale_charmap): returns nil for miniruby.
+
+Tue Jan 15 00:05:50 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (appendline): specifying limit should not generate broken
+ byte sequence. strings should be rounded. [ruby-dev:33088]
+
+Mon Jan 14 23:33:02 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (Kconv.tolocale): argument is str.
+
+Mon Jan 14 23:31:05 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in (setup): add -I$(EXTOUT)/$(arch) to MINIRUBY.
+
+ * bootstraptest/runner.rb (main): expand -I directory path.
+
+Mon Jan 14 23:28:10 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/enc-setup.mak (BUILTIN_ENCOBJS): depends on enc/Makefile.in.
+
+Mon Jan 14 22:48:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_char_to_option_kcode): use rb_enc_find_index() instead
+ of using fixed index value.
+
+ * enc/Makefile.in (encsrcdir): make US-ASCII built-in.
+
+Mon Jan 14 22:25:02 2008 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * golf_prelude.rb: Shorter method name completion. Same method
+ used for const missing. do_while and do_until added. Enumerator
+ gains all of Array's abilities. Ex:
+ '123'.m{|i|i*2} #=> "112233"
+ '123'.pe #=> '123'.perm*' ' #=> "123 132 213 231 312 321"
+ base on a patch from Darren Smith <darrenks AT ml1.net>.
+
+Mon Jan 14 21:10:02 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enc/us_ascii.c: wrong alias name: ANSI_X3.4-1986.
+
+ * rubytest.rb: add -I#{srcdir} to load encoding DLL.
+
+Mon Jan 14 18:53:58 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: clear thread structure.
+ (TODO: survey that child process should clear mutex or not).
+
+ * bootstraptest/test_knownbug.rb, test_thread.rb: move a fixed test.
+
+Mon Jan 14 18:43:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: add "flunk" method.
+
+ * bootstraptest/test_knownbug.rb: fix to use flunk.
+
+Mon Jan 14 18:10:59 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.h: remove dangerous assembler sentence.
+
+Mon Jan 14 18:06:37 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_locale_encoding): return US-ASCII when charmap is
+ nil.
+
+Mon Jan 14 16:12:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/shellwords.rb: scape should be an alias to shellescape. a
+ patch from Masahiro Kawato <m-kawato AT mwb.biglobe.ne.jp> in
+ [ruby-dev:33060].
+
+Mon Jan 14 16:09:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.1: a patch to describe --encoding. a patch from Yugui
+ <yugui AT yugui.sakura.ne.jp> in [ruby-dev:33079].
+
+ * ruby.c: ditto.
+
+Mon Jan 14 13:49:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_prepare_re): initialize error message buffer.
+ (rb_reg_search): ditto.
+ (rb_reg_check_preprocess): ditto.
+ (rb_reg_new_str): ditto.
+ (rb_enc_reg_new): ditto.
+ (rb_reg_compile): ditto.
+ (rb_reg_initialize_m): ditto.
+ (rb_reg_s_union_m): ditto.
+
+Mon Jan 14 12:33:07 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup*: Renamespace from SM::SimpleMarkup to
+ RDoc::Markup.
+
+Mon Jan 14 10:45:45 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/ascii.c: Exchanged order of arguments for one ENC_ALIAS
+
+Mon Jan 14 09:19:07 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/time.rb: do not reference Time directly from the inside of
+ definitions. [ruby-dev:33059]
+
+Mon Jan 14 05:44:44 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/*.c: add replicas and aliases.
+
+ * enc/make_encdb.h: add duplicate and undefined check.
+
+Mon Jan 14 02:03:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/oniguruma.h: remove ONIG_ENCODING_* and OnigEncoding*
+ which are not builtin.
+
+ * regenc.{c,h} (onigenc_mb2_code_to_mbclen, onigenc_mb4_code_to_mbclen):
+ fix prototype.
+
+ * enc/big5.c, enc/euc_kr.c, enc/euc_tw.c, enc/gb18030.c,
+ enc/koi8_r.c, enc/windows_1251.c: imported from Oniguruma.
+
+Sun Jan 13 22:47:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/make_encdb.h: sort encoding names by original name.
+
+ * encoding.c, enc/*.c: define replicas and aliases.
+
+Sun Jan 13 20:24:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c: add documents.
+
+Sun Jan 13 18:41:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): moved initialization from encdb.h.
+
+ * enc/make_encdb.rb (enc_name_list): constified.
+
+ * enc/make_encdb.rb (enc_init_db): moved some functions to encoding.c.
+
+Sun Jan 13 13:53:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file): local variable was not initialized when -x flag
+ is given.
+
+ * ruby.c (load_file): script files should not be affected by locale.
+ [ruby-dev:33054]
+
+Sun Jan 13 12:01:32 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generators*: Reorganize RDoc generators.
+
+Sun Jan 13 11:41:11 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (ENCINDEX_EUC_JP, ENCINDEX_SJIS): removed.
+ (rb_enc_init): EUC-JP and Shift_JIS are not builtin now.
+
+ * enc/Makefile.in: ditto.
+
+ * common.mk: ditto.
+
+ * ruby.c (proc_options): ditto.
+
+ * enc/shift_jis.c, enc/euc_jp.c: fixes for remove from builtin.
+
+Sun Jan 13 10:21:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_table): packed all enc_table stuff.
+
+Sun Jan 13 09:58:17 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_init): revert removing SJIS.
+
+ * enc/sjis.c: move to enc/shift_jis.c, to make encoding name equal to
+ filename for convenience of loading lib.
+
+ * enc/shift_jis.c: moved from enc/sjis.c.
+
+ * common.mk: follows enc/shift_jis.c.
+
+ * enc/Makefile.in: ditto.
+
+Sun Jan 13 09:22:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (incs): includes encdb.h.
+
+Sun Jan 13 09:17:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub (MV): use move instead of ren. [ruby-Bugs-17019]
+
+Sun Jan 13 01:52:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enc/make_encdb.rb: should work on Ruby 1.8. [ruby-dev:33069]
+
+ * common.mk (encdb.h): pass enc dir from outside to make_encdb.rb.
+
+Sun Jan 13 00:01:07 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/make_encdb.rb: added. search enc/*.c and make encoding database.
+
+ * regenc.h (ENC_REPLICATE, ENC_ALIAS): added for defining replica
+ encoding and encoding alias.
+
+ * encoding.c (rb_enc_init): move alias definitions to enc/*.c.
+ (rb_enc_find_index): search original of replica and alias when no
+ encoding library.
+ (rb_enc_name_list, rb_enc_aliases_enc_i, rb_enc_aliases_str_i,
+ rb_enc_aliases, Encoding.name_list, Encoding.aliases): added.
+ (Init_Encoding): init encdb.
+
+ * enc/ascii.c, enc/us_ascii.c, enc/euc_jp.c, enc/sjis.c:
+ add replica encoding and encoding alias definition.
+
+ * common.mk (dist-clean-local): add rule for remove encdb.h.
+
+Sat Jan 12 18:27:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_define_alloc_func, rb_undef_alloc_func): should
+ define/undef on a singleton class. [ruby-core:09959]
+
+Sat Jan 12 12:44:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c: rdoc update.
+
+Sat Jan 12 12:01:49 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: tuning for performance.
+
+Sat Jan 12 11:29:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/test_proc.rb: fixed wrong expected result. pointed
+ out by Kornelius "murphy" Kalnbach <murphy AT rubychan.de> in
+ [ruby-core:15022].
+
+Sat Jan 12 04:38:38 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (process_options): -e'script' is locale encoding by default.
+ (load_file): ruby script from stdin is locale encoding by default.
+
+Sat Jan 12 04:31:59 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: fix bug: -m was -m0.
+
+Fri Jan 11 23:22:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (string.c): call rb_str_buf_append to update encoding of
+ str1, even if str2 is empty.
+
+Fri Jan 11 20:20:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_mark): needs to mark the receiver too. a patch from
+ Chris Heath <chris AT heathens.co.nz> in [ruby-core:14983].
+ [ruby-core:14885]
+
+Fri Jan 11 18:28:49 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/usage.rb: Removed.
+
+ * lib/getoptlong.rb: Update example to not use lib/rdoc/usage.rb.
+
+Fri Jan 11 18:17:10 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/driver.rb (read_yaml): Follow namespace change
+ [ruby-core:14964].
+
+Fri Jan 11 16:55:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_append): performance improvement.
+
+Fri Jan 11 12:35:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: moved broken syscall checks from process.c etc.
+
+ * defines.h (WORDS_BIGENDIAN): honor __BIG_ENDIAN__ than the result of
+ configure.
+
+ * lib/rdoc/options.rb (check_diagram): more precise check, darwin
+ is not Windows but mingw is on it.
+
+Fri Jan 11 09:59:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: update to r1.163.
+
+ * ext/nkf/nkf.c: ASCII's canonical name is US-ASCII.
+
+ * ext/nkf/lib/kconv.rb (Kconv.isjis): force_encoding('BINARY').
+
+Fri Jan 11 09:23:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (set_base_encoding): must use rb_enc_dummy_p.
+
+Fri Jan 11 06:13:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_to_encoding_index, rb_to_encoding): disallow nil.
+ [ruby-dev:33003]
+
+Fri Jan 11 01:08:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_mutex_unlock): proper error message for unlocking
+ mutex that is not locked. a patch from Yusuke ENDOH
+ <mame at tsg.ne.jp> in [ruby-dev:33010].
+
+Thu Jan 10 18:00:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * prelude.rb (Mutex::synchronize): capture exception from unlock.
+ [ruby-dev:32935]
+
+Thu Jan 10 10:15:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_encoding_set): IO.pipe("euc-jp", nil) should work as
+ IO.pipe("euc-jp", nil). [ruby-dev:33000]
+
+ * io.c (io_encoding_set): handle nil for v1.
+
+Thu Jan 10 02:41:22 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_binmode): should not alter encoding. [ruby-dev:32918]
+
+ * io.c (io_read_encoding): need not to return ASCII-8BIT for
+ binary IO.
+
+Wed Jan 9 22:04:17 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/mathn.rb (Prime#each): returns an enumerator if no block
+ given. [ruby-dev:32815]
+
+Wed Jan 9 22:03:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_replicate): replica of dummy is a dummy.
+
+Wed Jan 9 20:55:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/e2mmap.rb (Exception2MessageMapper::Raise): define fail.
+ [ruby-dev:32854]
+
+Wed Jan 9 20:35:42 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb: support X-Forwarded-* header fields.
+ WEBrick::HTTPRequest#{host,port,request_uri} is derived having
+ regards to X-Forwarded-Proto and X-Forwarded-Host.
+
+ * lib/webrick/httprequest.rb
+ (WEBrick::HTTPRequest#server_name?): new method.
+ (WEBrick::HTTPRequest#remote_ip?): new method.
+ (WEBrick::HTTPRequest#ssl?): new method.
+
+Wed Jan 9 18:24:39 2008 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * golf_prelude.rb (Array#to_s): alias to join.
+
+ * golf_prelude.rb (FalseClass#to_s): return "".
+
+Wed Jan 9 16:59:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): fix self appending.
+
+Wed Jan 9 15:54:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): give priority command line encoding option
+ to RUBYOPT, and enable -E option in RUBYOPT.
+
+ * ruby.c (load_file): deal with encoding option in shebang line if
+ nothing in command line and RUBYOPT.
+
+Wed Jan 9 14:55:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (yycompile0): remove setting parser->enc because it is set
+ in parser_prepare() by previous change of parser_prepare().
+
+Wed Jan 9 14:52:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat, rb_str_buf_append): deal with self
+ appending.
+
+Wed Jan 9 14:44:57 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_prepare): set parser->enc from lex_input for ripper.
+
+Wed Jan 9 13:45:52 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (WEBrick::HTTPServer#start):
+ :DoNotReverseLookup option had not been performed.
+
+Wed Jan 9 13:03:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): do not recalculate coderange
+ value if it's given from outside.
+
+Wed Jan 9 08:42:01 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * enum.c: Updating the documentation of Enumerable#zip to reflect
+ the recent changes Matz made to the method.
+
+Wed Jan 9 01:35:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/Makefile.in (BUILTIN_ENCS): UTF-{16,32}{BE,LE} are not builtin.
+
+Tue Jan 8 23:55:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_init): UTF-{16,32}{BE,LE} are not builtin.
+
+Tue Jan 8 22:33:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c, Makefile.in, include/ruby/oniguruma.h,
+ enc/Makefile.in: fix rules for UTF-{16,32}{BE,LE}.
+
+Tue Jan 8 20:02:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win{32,ce}/Makefile.sub: merged.
+
+Tue Jan 8 19:48:15 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/driver.rb: Speed up Marshal.load. Fix bug with nested
+ classes' methods.
+
+Tue Jan 8 19:17:29 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/*: Clean up namespacing of RI's classes.
+
+Tue Jan 8 18:05:35 2008 Eric Hodel <drbrain@segment7.net>
+
+ * bin/ri, lib/rdoc/ri/*: Replace with Ryan Davis' cached ri.
+
+Tue Jan 8 17:32:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_zip): honor length of the receiver, not the
+ shortest length. [ruby-core:14738]
+
+ * enum.c (enum_zip): returns array not enumerator for no block
+ form. [ruby-core:14738]
+
+ * enumerator.c (next_ii): do not ignore multiple values yielded.
+
+ * array.c (rb_ary_zip): faster version without creating generators.
+
+Tue Jan 8 15:47:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/utf{16,32}_{be,le}.c: use &OnigEncodingName(*) instead of
+ ONIG_ENCODING_*.
+
+Tue Jan 8 15:40:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regenc.c (onigenc_strlen_null, onigenc_str_bytelen_null): suppressed
+ warnings.
+
+ * regenc.h, enc/unicode.c (onigenc_unicode_ctype_code_range): added
+ encoding argument.
+
+ * enc/utf{16,32}_{be,le}.c: added init functions.
+
+ * enc/utf{16,32}_{be,le}.c: imported from Oniguruma 5.9.1.
+
+Tue Jan 8 15:03:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (str_gsub): avoid appending empty pre-match substr.
+
+Tue Jan 8 13:05:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_build_from_ary), iseq.c (iseq_load): fix for format change.
+
+Tue Jan 8 07:56:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_buf_append): fix append itself.
+
+Tue Jan 8 01:13:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (STR_ENC_GET): defined. same as rb_enc_get without
+ enc_capable.
+ (coderange_scan): ASCII-8BIT test refined.
+ (rb_enc_cr_str_buf_cat): new internal function to accumulate
+ strings with encoding.
+ (rb_enc_str_buf_cat): use rb_enc_cr_str_buf_cat.
+ (rb_str_buf_append): ditto
+ (str_gsub): use rb_str_buf_append.
+ (rb_str_hash): use ENCODING_GET.
+ (rb_str_comparable): ditto.
+ (rb_str_cmp): compare encoding index, not rb_encoding address.
+
+Mon Jan 7 20:37:55 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb: external encoding of
+ tempfiles is set to "ASCII-8BIT".
+
+Mon Jan 7 19:39:50 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/template.rb: Use ERB instead of custom template language.
+
+ * lib/rdoc/generators/template/html/old_html.rb: Remove.
+
+ * lib/rdoc/generators/template/*: Convert to ERB.
+
+Mon Jan 7 19:11:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (Init_String): sym_match arity spec was wrong. a patch
+ from Hiroyuki Iwatsuki <don at na.rim.or.jp> in [ruby-dev:32957].
+
+Mon Jan 7 18:10:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (str_gsub): move rb_enc_get(str) to out of loop.
+
+Mon Jan 7 15:52:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (OnigEncodingType): new member
+ ruby_encoding_index to avoid linear search in rb_enc_to_index.
+
+ * include/ruby/encoding.h (rb_enc_to_index): macro defined to use
+ ruby_encoding_index.
+
+ * encoding.c (rb_enc_to_index): removed.
+ (enc_register_at): initialize ruby_encoding_index member.
+
+Mon Jan 7 16:10:35 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/tokenstream.rb: Namespace under RDoc.
+
+Mon Jan 7 16:06:09 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/dot.rb: Namespace under RDoc.
+
+ * lib/rdoc/diagram.rb: Clean up formatting.
+
+Mon Jan 7 15:51:35 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/options.rb: Convert to OptionParser, clean up -h output,
+ namespace under RDoc.
+ * lib/rdoc/*: Namespace RDoc::Options.
+
+Mon Jan 7 15:42:46 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk, Makefile.in, */Makefile.sub (distclean-local): move
+ removing rule of ext/ripper/y.output from common.mk to Makefiles
+ that depend on platforms.
+
+Mon Jan 7 13:54:57 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_preprocess): fix fixed_enc condition.
+
+Mon Jan 7 11:51:49 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generators/ri_generator.rb: Merge documentation from the
+ same class on output. Fixes bug where documentation could
+ disappear.
+
+ * lib/rdoc/options.rb: Fix typo.
+
+ * lib/rdoc/generators/*: Clean up some namespacing and make RDoc
+ consistent.
+
+Mon Jan 7 11:44:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_internal_get_index): extracted from
+ rb_enc_get_index.
+ (rb_enc_internal_set_index): extracted from rb_enc_associate_index
+
+ * include/ruby/encoding.h (ENCODING_SET): work over ENCODING_INLINE_MAX.
+ (ENCODING_GET): ditto.
+ (ENCODING_IS_ASCII8BIT): defined.
+ (ENCODING_CODERANGE_SET): defined.
+
+ * re.c (rb_reg_fixed_encoding_p): use ENCODING_IS_ASCII8BIT.
+
+ * string.c (rb_enc_str_buf_cat): use ENCODING_IS_ASCII8BIT.
+
+ * parse.y (reg_fragment_setenc_gen): use ENCODING_IS_ASCII8BIT.
+
+ * marshal.c (has_ivars): use ENCODING_IS_ASCII8BIT.
+
+Mon Jan 7 02:14:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (coderange_scan): avoid rb_enc_to_index.
+ (rb_enc_str_buf_cat): ditto.
+ (str_cat_char): use rb_enc_str_buf_cat.
+ (rb_str_inspect): ditto.
+
+Mon Jan 7 01:36:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (coderange_scan): optimize ASCII-8BIT string.
+ (rb_enc_str_buf_cat): don't call coderange_scan if possible.
+
+Mon Jan 7 01:05:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/erb.rb (ERB::Revision): cut off locale dependent string in Date
+ keyword.
+
+Mon Jan 7 00:48:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * Date keyword removed to avoid inclusion of locale dependent
+ string. [ruby-dev:32940]
+
+Sun Jan 6 21:14:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_initialize_str): forbid raw non ASCII character
+ for ASCII-8BIT regexp in non ASCII-8BIT script.
+
+Sun Jan 6 18:19:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_enc_str_buf_cat): declared.
+
+ * string.c (coderange_scan): extracted from rb_enc_str_coderange.
+ (rb_enc_str_coderange): use coderange_scan.
+ (rb_str_shared_replace): copy encoding and coderange.
+ (rb_enc_str_buf_cat): new function for linear complexity string
+ accumulation with encoding.
+ (rb_str_sub_bang): don't conflict substituted part and replacement.
+ (str_gsub): use rb_enc_str_buf_cat.
+ (rb_str_clear): clear coderange.
+
+ * re.c (rb_reg_regsub): use rb_enc_str_buf_cat.
+
+Sun Jan 6 17:55:44 2008 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * lib/securerandom.rb: Add Win32 support.
+
+Sun Jan 6 09:32:58 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: introduced some constants
+ (for internal use) and aliases (minute and second).
+
+ * sample/cal.rb: trivial adjustments.
+
+Sun Jan 6 01:38:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_initialize_str): /\x80/n is not an error even if script
+ encoding is EUC-JP.
+
+Sun Jan 6 00:48:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::DNS#each_address): get A record and then AAAA
+ record. [ruby-dev:32925]
+
+Sat Jan 5 21:48:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * vm_insnhelper.c (vm_callee_setup_arg): it is not inlinable because
+ alloca is used.
+
+Sat Jan 5 16:50:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_resize): copy if old data is not empty
+ [ruby-core:14785]
+
+Sat Jan 5 13:04:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): no need for intermediate object.
+
+Sat Jan 5 11:48:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (Init_Encoding): alias csWindows31J to Windows-31J.
+ IE6 accepts csWindows31J but Windows-31J.
+
+Sat Jan 5 02:21:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (rb_intern): memorize interned ID for constant
+ string, using gcc's __builtin_constant_p and statement expression.
+
+Sat Jan 5 02:14:45 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (trnext): should enable backslash escape.
+
+Sat Jan 5 01:50:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): move instance_eval and instance_exec to
+ BasicObject. [ruby-core:14747]
+
+ * lib/delegate.rb: should preserve new methods in BasicObject.
+
+Sat Jan 5 01:46:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): update according to the last API revert.
+
+Sat Jan 5 01:30:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h, re.c (rb_reg_new): keep interface same as
+ 1.8. [ruby-core:14583]
+
+ * include/ruby/intern.h, re.c (rb_reg_new_str): renamed, and defines
+ HAVE_RB_REG_NEW_STR macro to tell if it is available.
+
+ * include/ruby/encoding.h (rb_enc_reg_new): added.
+
+ * insns.def (toregexp), marshal.c (r_object0): use rb_reg_new_str().
+
+ * re.c (rb_reg_regcomp, rb_reg_s_union): ditto.
+
+Fri Jan 4 23:08:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_arg): use converted object. [ruby-core:14759]
+
+Fri Jan 4 16:24:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/lib/digest/hmac.rb (Digest::HMAC#initialize): use
+ String#bytesize to avoid test errors on EUC-JP environment.
+
+Fri Jan 4 14:00:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_prepare_re): check string encoding. Oniguruma doesn't
+ support invalid encoding.
+
+Fri Jan 4 10:22:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_search): avoid inner loop for reverse search.
+
+ * regexec.c: unset USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
+ which is turned on since oniguruma 5.9.1.
+
+Fri Jan 4 02:53:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/euc_jp.c: remove eucjp_ prefix. breakpoint can be specified as
+ euc_jp.c:mbc_enc_len. avoid needless conflict by merge.
+
+ * enc/sjis.c: remove sjis_ prefix.
+
+ * enc/utf8.c: remove utf8_ prefix.
+
+ * enc/iso_8859_1.c: remove iso_8859_1_ prefix.
+
+ * enc/iso_8859_2.c: remove iso_8859_2_ prefix.
+
+ * enc/iso_8859_3.c: remove iso_8859_3_ prefix.
+
+ * enc/iso_8859_4.c: remove iso_8859_4_ prefix.
+
+ * enc/iso_8859_5.c: remove iso_8859_5_ prefix.
+
+ * enc/iso_8859_6.c: remove iso_8859_6_ prefix.
+
+ * enc/iso_8859_7.c: remove iso_8859_7_ prefix.
+
+ * enc/iso_8859_8.c: remove iso_8859_8_ prefix.
+
+ * enc/iso_8859_9.c: remove iso_8859_9_ prefix.
+
+ * enc/iso_8859_10.c: remove iso_8859_10_ prefix.
+
+ * enc/iso_8859_11.c: remove iso_8859_11_ prefix.
+
+ * enc/iso_8859_13.c: remove iso_8859_13_ prefix.
+
+ * enc/iso_8859_14.c: remove iso_8859_14_ prefix.
+
+ * enc/iso_8859_15.c: remove iso_8859_15_ prefix.
+
+ * enc/iso_8859_16.c: remove iso_8859_16_ prefix.
+
+Fri Jan 4 02:47:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_search): iterate onig_match for reverse mode.
+
+Fri Jan 4 01:20:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32.h: only VC6 needs extern "C++" for math.h. [ruby-talk:285660]
+
+Fri Jan 4 00:54:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/oniguruma.h: Oniguruma 5.9.1 merged.
+
+Fri Jan 4 00:20:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_ungetc): move data in buffer if it is required to store the
+ argument.
+
+Thu Jan 3 21:56:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (st_strcasecmp): declared for STRCASECMP.
+ (st_strncasecmp): declared for STRNCASECMP.
+
+Thu Jan 3 20:24:48 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval_jump.c (rb_f_catch): Restore cfp if caught thrown object.
+
+Thu Jan 3 19:45:57 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_eval.rb, test_knownbug.rb: move a fixed test.
+
+Thu Jan 3 18:39:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c: (rb_tolower, rb_toupper): body was exchanged.
+
+Thu Jan 3 17:54:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * regenc.h (onigenc_ascii_is_code_ctype): put back.
+
+Thu Jan 3 17:33:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_isalnum): defined.
+ (rb_isalpha): ditto.
+ (rb_isblank): ditto.
+ (rb_iscntrl): ditto.
+ (rb_isdigit): ditto.
+ (rb_isgraph): ditto.
+ (rb_islower): ditto.
+ (rb_isprint): ditto.
+ (rb_ispunct): ditto.
+ (rb_isspace): ditto.
+ (rb_isupper): ditto.
+ (rb_isxdigit): ditto.
+ (rb_tolower): ditto.
+ (rb_toupper): ditto.
+
+ * include/ruby/ruby.h: don't include include/ruby/encoding.h.
+ (rb_isascii): defined.
+ (rb_isalnum): declared.
+ (rb_isalpha): ditto.
+ (rb_isblank): ditto.
+ (rb_iscntrl): ditto.
+ (rb_isdigit): ditto.
+ (rb_isgraph): ditto.
+ (rb_islower): ditto.
+ (rb_isprint): ditto.
+ (rb_ispunct): ditto.
+ (rb_isspace): ditto.
+ (rb_isupper): ditto.
+ (rb_isxdigit): ditto.
+ (rb_tolower): ditto.
+ (rb_toupper): ditto.
+ (ISASCII): simplified.
+ (ISPRINT): ditto.
+ (ISSPACE): ditto.
+ (ISUPPER): ditto.
+ (ISLOWER): ditto.
+ (ISALNUM): ditto.
+ (ISALPHA): ditto.
+ (ISDIGIT): ditto.
+ (ISXDIGIT): ditto.
+ (TOUPPER): ditto.
+ (TOLOWER): ditto.
+
+ * include/ruby/encoding.h (rb_isascii): removed.
+ (rb_isalnum): ditto.
+ (rb_isalpha): ditto.
+ (rb_isblank): ditto.
+ (rb_iscntrl): ditto.
+ (rb_isdigit): ditto.
+ (rb_isgraph): ditto.
+ (rb_islower): ditto.
+ (rb_isprint): ditto.
+ (rb_ispunct): ditto.
+ (rb_isspace): ditto.
+ (rb_isupper): ditto.
+ (rb_isxdigit): ditto.
+ (rb_tolower): ditto.
+ (rb_toupper): ditto.
+
+ * common.mk: dependency updated.
+
+Thu Jan 3 15:10:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_isascii): simplified.
+ (rb_isalnum): call onigenc_ascii_is_code_ctype without indirect call.
+ (rb_isalpha): ditto.
+ (rb_isblank): ditto.
+ (rb_iscntrl): ditto.
+ (rb_isdigit): ditto.
+ (rb_isgraph): ditto.
+ (rb_islower): ditto.
+ (rb_isprint): ditto.
+ (rb_ispunct): ditto.
+ (rb_isspace): ditto.
+ (rb_isupper): ditto.
+ (rb_isxdigit): ditto.
+
+ * include/ruby/oniguruma.h (onigenc_ascii_is_code_ctype): declaration
+ moved from regenc.h.
+
+Thu Jan 3 14:37:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (parser_magic_comment): use STRNCASECMP.
+ (set_file_encoding): ditto.
+
+Thu Jan 3 11:44:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * time.c: don't mention an obsolete library, ParseDate.
+
+Thu Jan 3 11:28:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (fptr_finalize): clear errno first. [ruby-talk:284492]
+
+Thu Jan 3 05:02:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/us_ascii.c: add us_ascii_ prefix for functions to ease
+ setting breakpoint when debugging.
+
+ * enc/euc_jp.c: add eucjp_ prefix.
+
+ * enc/sjis.c: add sjis_ prefix.
+
+ * enc/iso_8859_1.c: add iso_8859_1_ prefix.
+
+ * enc/iso_8859_2.c: add iso_8859_2_ prefix.
+
+ * enc/iso_8859_3.c: add iso_8859_3_ prefix.
+
+ * enc/iso_8859_4.c: add iso_8859_4_ prefix.
+
+ * enc/iso_8859_5.c: add iso_8859_5_ prefix.
+
+ * enc/iso_8859_6.c: add iso_8859_6_ prefix.
+
+ * enc/iso_8859_7.c: add iso_8859_7_ prefix.
+
+Thu Jan 3 02:44:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (conv_digit): use ISDIGIT, ISLOWER and ISUPPER.
+
+Wed Jan 2 23:50:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * util.c (ruby_strtoul): "0x", "+" and "-" is not a valid integer.
+ end of integer should be just after "0", the beginning, the
+ beginning respectively.
+
+Wed Jan 2 15:23:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * util.c (ruby_strtoul): locale independent strtoul is implemented to
+ avoid "i".to_i(36) cause 0 under tr_TR locale on Debian GNU/Linux
+ 4.0 (Etch).
+ This is newly implemented, not a copy of missing/strtoul.c.
+
+ * include/ruby/ruby.h (ruby_strtoul): declared.
+ (STRTOUL): defined to use ruby_strtoul.
+
+ * bignum.c, pack.c, ext/socket/socket.c: use STRTOUL.
+
+ * configure.in (strtoul): don't check.
+
+ * missing/strtoul.c: removed.
+
+ * include/ruby/missing.h (strtoul): removed.
+
+ * common.mk (strtoul.o): removed.
+
+ * LEGAL (missing/strtoul.c): removed.
+
+Wed Jan 2 14:41:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk (strcasecmp.o): removed.
+ (strncasecmp.o): removed.
+
+ * include/ruby/missing.h (strcasecmp): removed.
+ (strncasecmp): removed.
+
+Wed Jan 2 11:34:57 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/strcasecmp.c: removed. Ruby don't use locale dependent
+ strcasecmp.
+
+ * missing/strncasecmp.c: ditto.
+
+ * configure.in: don't check strcasecmp and strncasecmp.
+
+ * LEGAL: missing/strcasecmp.c and missing/strncasecmp.c removed.
+
+Wed Jan 2 10:13:54 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * sample/time.rb: use Process.times instead of Time.times.
+
+Wed Jan 2 09:09:53 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * sample/goodfriday.rb: examples for date are enough. retired.
+
+Wed Jan 2 08:58:54 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * sample/cal.rb: just updated with the newest version.
+
+Wed Jan 2 01:19:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/depend: dependency updated.
+
+Wed Jan 2 00:14:41 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c, utf8tbl.c}: Update nkf.
+
+ * ext/nkf/nkf.c: fix documents.
+
+ * ext/nkf/lib/kconv.rb: fix documents.
+ (Kconv.is*): use valid_encoding?.
+ (Kconv.isjis): defined.
+
+Tue Jan 1 23:17:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: dependency updated.
+
+Tue Jan 1 21:11:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_isascii): defined.
+ (rb_isalnum): ditto.
+ (rb_isalpha): ditto.
+ (rb_isblank): ditto.
+ (rb_iscntrl): ditto.
+ (rb_isdigit): ditto.
+ (rb_isgraph): ditto.
+ (rb_islower): ditto.
+ (rb_isprint): ditto.
+ (rb_ispunct): ditto.
+ (rb_isspace): ditto.
+ (rb_isupper): ditto.
+ (rb_isxdigit): ditto.
+ (rb_tolower): ditto.
+ (rb_toupper): ditto.
+
+ * include/ruby/st.h (st_strcasecmp): declared.
+ (st_strncasecmp): ditto.
+
+ * st.c (type_strcasehash): use st_strcasecmp instead of strcasecmp.
+ (st_strcasecmp): defined.
+ (st_strncasecmp): ditto.
+
+ * include/ruby/ruby.h: include include/ruby/encoding.h.
+ (ISASCII): use rb_isascii.
+ (ISPRINT): use rb_isprint.
+ (ISSPACE): use rb_isspace.
+ (ISUPPER): use rb_isupper.
+ (ISLOWER): use rb_islower.
+ (ISALNUM): use rb_isalnum.
+ (ISALPHA): use rb_isalpha.
+ (ISDIGIT): use rb_isdigit.
+ (ISXDIGIT): use rb_isxdigit.
+ (TOUPPER): defined.
+ (TOLOWER): ditto.
+ (STRCASECMP): ditto.
+ (STRNCASECMP): ditto.
+
+ * dir.c, encoding.c, file.c, hash.c, process.c, ruby.c, time.c,
+ transcode.c, ext/readline/readline.c: use locale insensitive
+ functions. [ruby-core:14662]
+
+Tue Jan 1 17:50:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_mode_enc): encoding spec is not allowed in binary mode.
+ [ruby-dev:32913]
+
+Tue Jan 1 14:41:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml: 1.9 patch from Sam Ruby mentioned in his blog:
+ <http://intertwingly.net/blog/2007/12/31/Porting-REXML-to-Ruby-1-9>
+ [ruby-core:14639]
+
+Tue Jan 1 14:15:04 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_substr): offset movement bug. a patch from
+ Vincent Isambart <vincent.isambart at gmail.com> in
+ [ruby-core:14647]. [ruby-core:14644]
+
+Tue Jan 1 01:29:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_to_encoding): raises for non-nil, non-encoding,
+ non-string object. [ruby-core:14634]
+
+Tue Jan 1 01:04:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): rejects dummy encoding.
+
+Mon Dec 31 23:53:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options, process_options): delays finding encoding
+ until load_path is set.
+
+Mon Dec 31 23:27:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_resize): embeds if ptr is null. [ruby-dev:32819]
+
+Mon Dec 31 23:17:22 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_service):
+ call do_XXX which correspond with request method.
+ (WEBrick::HTTPProxyServer#do_CONNECT,do_GET,do_POST,do_HEAD): added.
+
+ * test/webrick/test_httpproxy.rb: add test for WEBrick::HTTPProxyServer.
+
+Mon Dec 31 22:53:29 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread_pthread.c (native_sleep): timespec tv_sec may overflow on
+ some platform. a patch from zunda <zunda616e AT yahoo.co.jp> in
+ [ruby-dev:32904].
+
+Mon Dec 31 19:35:20 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (IS_7BIT): removed.
+ (single_byte_optimizable): new function to test optimizationability
+ using single byte string.
+ (str_strlen): use single_byte_optimizable instead of
+ is_ascii_string.
+ (str_nth): rename argument: asc -> singlebyte.
+ (str_offset): ditto.
+ (rb_str_substr): use single_byte_optimizable instead of IS_7BIT.
+ (rb_str_index): ditto.
+ (rb_str_rindex): ditto.
+ (rb_str_splice): ditto.
+ (rb_str_justify): ditto.
+
+Mon Dec 31 07:39:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * main.c, goruby.c (RUBY_MAIN_INIT): removed.
+
+ * goruby.c (goruby_run_node): run after ruby_init_loadpath() so that
+ require works, and protect the call.
+
+Mon Dec 31 06:50:38 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: not use -I$(srcdir)/lib with $(MINIRUBY) for cross
+ compiling.
+
+ * configure.in, {win,bcc}32/Makefile.sub (MINIRUBY): -I$(srcdir)/lib
+ moved.
+
+Mon Dec 31 06:08:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_sprintf, rb_enc_vsprintf): prototyped.
+
+ * sprintf.c (rb_enc_sprintf, rb_enc_vsprintf): new functions to format
+ arguments with encoding.
+
+Sun Dec 30 23:48:00 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (String#/): define / as split, as association of
+ Array#*.
+
+Sun Dec 30 23:19:06 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * golf_prelude.rb (@@golf_hash): for performance improvement.
+
+Sun Dec 30 22:44:50 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (_valid_time?): I'm not sure to recommend such an
+ expression. but anyway it is acceptable now. [ruby-core:14580]
+
+Sun Dec 30 21:54:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (program, yycompile0): too early to drop lex_lastline in
+ rules.
+
+Sun Dec 30 19:23:23 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bootstraptest/test_knownbug.rb: support DOSISH.
+
+Sun Dec 30 17:43:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): registered rb_encoding differs from
+ ONIG_ENCODINGs.
+
+Sun Dec 30 13:56:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (program): clear input strings after all process.
+
+ * parse.y (parser_nextc, parser_yylex): should not drop lex_lastline
+ while lex_p is valid. [ruby-dev:32896]
+
+Sun Dec 30 10:54:49 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: rm largefile.h.
+
+ * common.mk: clean golf, conf*, preludes, and so on.
+
+ * enc/depend: silent and ignore error for rm.
+
+ * enc/Makefile.in: should define prefix and exec_prefix.
+
+Sun Dec 30 06:31:11 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (Init_encoding): register Windows-31J and its alias.
+ [ruby-dev:32843]
+
+ * ruby.c (proc_options): -Ks options means Windows-31J, not Shift_JIS.
+
+Sun Dec 30 06:27:38 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (depend_rules): need to convert `/' to `\' for windows
+ native commands.
+
+Sun Dec 30 01:43:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (DLDFLAGS): like as extensions. [ruby-core:14567]
+
+Sat Dec 29 23:48:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fflush): don't retry when wbuf modified by other threads.
+
+Sat Dec 29 22:44:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_regsub): returns the given string itself if nothing
+ changed.
+
+ * string.c (rb_str_sub_bang): keeps code-range as possible.
+
+ * string.c (str_gsub): adjusts code-range. [ruby-core:14566]
+
+Sat Dec 29 21:54:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (clean, distclean, realclean): should include clean-enc
+ and others. [ruby-dev:32887]
+
+Sat Dec 29 13:29:29 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/test_knownbug.rb: add a test reported by
+ Kazuhiro NISHIYAMA. [ruby-dev:32819].
+ add a test reported by Frederick Cheung. [ruby-core:14556].
+
+ * test/ruby/test_m17n.rb (test_gsub): add a test reported by
+ Sam Ruby. [ruby-core:14566]
+
+Sat Dec 29 04:46:58 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert_throws):
+ throw won't raise NameError nor ThreadError but ArgumentError on 1.9.
+ (Test::Unit::Assertions#assert_not_throws): ditto.
+
+ * test/testunit/test_assertions.rb: add assertions for throwing some
+ objects other than Symbol.
+
+Sat Dec 29 03:10:12 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_unread): fix typo.
+
+Sat Dec 29 02:18:45 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_unread): adhoc workaround for non-binary mode of some DOSish
+ platforms. this is not perfect and safety, but works with most cases.
+
+Fri Dec 28 23:53:18 2007 Tanaka Akira <akr@fsij.org>
+
+ * ext/strscan/strscan.c (str_new): new function for allocate an string
+ with encoding propagation.
+ (extract_range): use str_new.
+ (extract_beg_len): ditto.
+ (strscan_peek): ditto.
+ (strscan_rest): ditto.
+
+Fri Dec 28 20:18:42 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * golf_prelude.rb (Object.say): derived from Perl 5.10.
+
+Fri Dec 28 19:39:34 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (rb_locale_encoding): should check return value from
+ rb_locale_charmap().
+
+ * ruby.c (locale_encoding): removed.
+
+ * ruby.c (process_options): use rb_locale_encoding() instead of
+ locale_encoding().
+
+ * ext/readline/readline.c (readline_readline): use locale encoding
+ instead of input IO's encoding. [ruby-dev:32872]
+
+Fri Dec 28 19:29:07 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline, readline_s_set_input):
+ use mReadline directly because self is not always same.
+
+Fri Dec 28 19:11:28 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_locale_encoding): defined.
+
+ * include/ruby/encoding.h (rb_locale_encoding): declared.
+
+Fri Dec 28 18:45:29 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): set encoding to result.
+
+ * ext/readline/readline.c (readline_s_set_input, Init_readline): save
+ input IO to hidden instance variable.
+
+Fri Dec 28 01:55:04 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c (transcode_dispatch): reverted some of the changes
+ in r14746.
+
+ * transcode.c, enc/trans/single_byte.c: Added conversions to/from
+ US-ASCII and ASCII-8BIT (using data tables).
+
+ * enc/trans/single_byte.c: Some spacing/ordering changes due to
+ automatic data file generation.
+
+ * transcode_data.h, transcode.c: Preliminary code for using
+ micro-conversion functions.
+
+ * test/ruby/test_transcode.rb: Added some tests for US-ASCII and
+ ASCII-8BIT conversions.
+
+Fri Dec 28 17:33:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * time.c (make_time_t): verify mktime and timegm result.
+
+Fri Dec 28 16:36:33 2007 NARUSE, Yui <naruse@airemix.com>
+
+ * lib/resolv.rb (Resolv::DNS#each_address): now returns IPv6 address.
+
+Fri Dec 28 16:10:00 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/dot/dot.rb: Move to lib/rdoc/dot.rb. Fix namespacing.
+
+ * lib/rdoc/diagram.rb: Update for 1.9.
+
+Fri Dec 28 15:38:29 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/sample/: Move to sample/rdoc/markup directory.
+
+Fri Dec 28 15:15:12 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/irb/completion.rb: Remove garbage ("X=1").
+
+Fri Dec 28 15:12:05 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc, test/rdoc: Move RDoc tests out of lib/.
+
+Fri Dec 28 15:10:47 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (set_base_encoding, enc_base_encoding): renamed
+ based_encoding as base_encoding.
+
+Fri Dec 28 13:57:49 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (Integer#each): use alias simply.
+
+Fri Dec 28 13:45:21 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * golf_prelude.rb (Object.const_missing): No need to delegate to
+ superclass. Just raise a NameError when none matches.
+
+Fri Dec 28 13:18:47 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, test/rss/test_version.rb: 0.2.2 -> 0.2.3.
+
+ * lib/rss/parser.rb, test/rss/test_parser.rb: supported "-" in tag name.
+ Reported by Ray Chen. Thanks.
+
+Fri Dec 28 13:07:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (os_obj_of): returns an enumerator if no block given. based on
+ a patch from Yugui <yugui AT yugui.sakura.ne.jp>. [ruby-dev:32828]
+
+Fri Dec 28 11:46:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/ytab.sed: skip yydestruct hack unless yymsg exists, for bison
+ 1.8 series. [ruby-dev:32825]
+
+Fri Dec 28 11:39:02 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (Object.quine): need to join because SCRIPT_LINES__[]
+ returns an array of lines.
+
+Fri Dec 28 11:16:53 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (Object.quine): get the script itself.
+
+Fri Dec 28 10:06:54 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * golf_prelude.rb (Object.const_missing): Auto-complete constants.
+
+Fri Dec 28 01:55:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_dispatch): allows transcoding from/to
+ ASCII-8BIT.
+
+Fri Dec 28 01:47:25 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (Integer): Integer is now enumerable on goruby.
+
+Fri Dec 28 01:27:47 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/rdoc/rdoc.rb (parse_files): don't depend on the default external
+ encoding.
+
+Fri Dec 28 00:01:57 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (golf_prelude.c): use MINIRUBY instead of BASERUBY because
+ tool/compile_prelude.rb requires rbconfig.rb.
+
+Thu Dec 27 23:56:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: should not use the libraries under the source directory
+ at cross compiling.
+
+Thu Dec 27 23:43:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (EXTOBJS): uses ruby.rc always for other than
+ rubyw.exe.
+
+Thu Dec 27 22:31:37 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/commands/update_command.rb (do_rubygems_update): use
+ portable and safely ENV operation. reported in
+ <http://slashdot.jp/developers/comments.pl?sid=384937&cid=1273085>.
+
+Thu Dec 27 21:47:04 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * mkconfig.rb (prefix): archdir is "1.9.0", not "1.9". reported in
+ <http://slashdot.jp/developers/comments.pl?sid=384937&cid=1273085>.
+
+Thu Dec 27 17:57:30 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y, transcode_data.h, transcode.c, lib/weakref.rb,
+ lib/irb/ruby-lex.rb, lib/irb/lc/error.rb, enc/trans/japanese.c:
+ change "illegal" to "invalid" in a context which doesn't against
+ a law.
+
+Thu Dec 27 16:37:06 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_s_union): show encodings in error message.
+
+Thu Dec 27 15:25:16 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_codelen): show codepoint in error message.
+
+ * include/ruby/encoding.h (rb_enc_codelen): comment it returns
+ positive integer.
+
+ * string.c (rb_str_concat): rb_enc_codelen doesn't return 0.
+
+Thu Dec 27 15:18:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_codelen): error message refined.
+
+Thu Dec 27 15:11:27 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_check): show encodings in error message.
+
+Thu Dec 27 15:02:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_casecmp): fixed using a wrong variable.
+ [ruby-list:44402]
+
+Thu Dec 27 14:34:38 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fflush): checks wbuf modification by other threads.
+ not perfect. it need locks.
+
+Thu Dec 27 10:44:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: a patch to support IRIX from Andrew
+ Thompson <andrew@hijacked.us> in [ruby-core:14447].
+
+Thu Dec 27 02:25:45 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_tmpsrc): retry to create file if Errno::EACCES
+ occurs. this is a workaround for mswin32.
+
+Wed Dec 26 22:47:31 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::DNS::Name.==): fix for other is array of
+ Resolv::DNS::Label::Str.
+
+ * lib/resolv.rb (Resolv::DNS::MessageEncoder#put_label): String#string
+ is not defined, so replace to_s.
+
+ * lib/resolv.rb (Resolv::IPv6#to_name): ip6.int is obsoleted by
+ ip6.arpa.
+
+Wed Dec 26 21:27:02 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (_xmlschema): some improvements.
+
+ * lib/date/format.rb (_parse): a new hint compfunc. [experimental]
+
+Wed Dec 26 17:31:08 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fflush): check closed fptr after rb_write_internal to avoid
+ SEGV on MacOS X.
+
+Wed Dec 26 16:10:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (Init_String): defines chars method.
+
+Wed Dec 26 14:38:43 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: install goruby if exists.
+
+Wed Dec 26 13:55:02 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Cleaned up some code with Ruby 1.9 idioms.
+
+Wed Dec 26 13:29:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (tmpbuf): use rb_str_tmp_new().
+
+Wed Dec 26 00:57:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/ext/generator/generator.c (Init_generator): requires
+ json/common.rb for GeneratorError, when static linked. a patch from
+ Kenta Murata <muraken AT gmail.com> in [ruby-dev:32789].
+
+Tue Dec 25 23:33:55 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * development version 1.9.0 released.
+
+Tue Dec 25 23:25:29 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/node.rb (REXML::Node::indent): should initialize rv
+ variable. a patch from Tadayoshi Funaba <tadf AT dotrb.org> in
+ [ruby-dev:32783].
+
+Tue Dec 25 23:16:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): encoding option in shebang and RUBYOPT did not
+ work, do not store alloca()ed string in a parent scope struct.
+
+Tue Dec 25 22:56:52 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): keep this file.
+
+Tue Dec 25 22:55:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (TIMEZONE_VOID): typo.
+
+Tue Dec 25 22:45:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns2vm.rb: add encoding option to shebang.
+
+Tue Dec 25 22:13:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/pending.rb: add pending issue.
+
+Tue Dec 25 22:12:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: remove Thread.critical(=).
+
+Tue Dec 25 21:44:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: add version number.
+
+Tue Dec 25 21:32:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix stack consistency error
+ (break is compiled to throw instead of jump insn).
+ these problems are reported by Yusuke ENDOH <mame AT tsg.ne.jp>
+
+ * bootstraptest/test_knownbug.rb, test_syntax.rb: move fixed test.
+
+Tue Dec 25 21:32:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (struct parser_params): make parser_ruby_sourcefile common
+ field. it is used by node_newnode.
+ new field parser_ruby_sourcefile_string for ripper.
+ (parser_initialize): initialize parser_ruby_sourcefile in ripper.
+ (ripper_initialize): initialize parser_ruby_sourcefile_string.
+
+Tue Dec 25 21:26:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.c): depends on tool/ytab.sed.
+
+ * tool/ytab.sed: hack for bison 2.1.
+
+Tue Dec 25 20:24:58 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_ssl.c: Only show a warning if the default
+ DH callback is actually used.
+
+ * ext/openssl/ossl_rand.c: New method: random_add().
+
+Tue Dec 25 20:24:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: argument check, and cleanup exported directory.
+
+Tue Dec 25 20:07:13 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * tool/make-snapshot: more portable.
+
+Tue Dec 25 19:01:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.h (rb_enc_mbc_to_codepoint): wrapper for
+ ONIGENC_MBC_TO_CODE().
+
+ * string.c (rb_str_succ): deal with invalid sequence as binary.
+
+Tue Dec 25 18:40:46 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c: all methods need $SAFE < 1.
+
+ vm.c: comment out debug functions.
+
+Tue Dec 25 18:37:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (appendline): move RS comparison to rb_io_getline_1().
+
+Tue Dec 25 18:27:51 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_each_line): don't call rb_enc_codepoint with empty
+ string.
+
+Tue Dec 25 18:06:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_inspect): don't call rb_enc_codepoint with empty
+ string. fix '#'.inspect.
+
+ * encoding.c (rb_enc_codepoint): raise on empty string.
+
+Tue Dec 25 17:48:28 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm.c (rb_frame_method_id_and_class): new function to get the
+ method id and class of the current frame.
+
+Tue Dec 25 17:32:04 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb (create_makefile): Add a missing dependency on the
+ target directory for each .rb file. This will hopefully fix
+ parallel make (-jN). Tested on FreeBSD.
+
+Tue Dec 25 16:51:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/japanese.c (rb_{from,to}_{SHIFT_JIS,EUC_JP}): inversed
+ from_encoding and to_encoding.
+
+Tue Dec 25 16:41:57 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (h): add new method for all golfers.
+
+Tue Dec 25 16:37:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/japanese.c (rb_to_EUC_JP): fixed typo.
+
+Tue Dec 25 16:34:58 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/depend: add dependencies. [ruby-dev:32760]
+
+Tue Dec 25 16:26:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h, thread.c: rename is_ruby_native_thread() to
+ ruby_native_thread_p().
+
+ * ext/tk/tcltklib.c: apply it.
+
+Tue Dec 25 16:15:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (clean-enc): clean encoding objects.
+
+Tue Dec 25 16:04:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, goruby.c, golf_prelude.rb: for golfers.
+
+ * main.c (main): hook for embedding applications.
+
+ * tool/compile_prelude.rb: can change initialize function name.
+
+Tue Dec 25 15:59:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_register): do not use based_encoding to check if
+ dummy encoding.
+
+Tue Dec 25 15:55:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_succ): fix for string with non-alphanumeric chars.
+
+Tue Dec 25 15:42:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_external_encoding): should return nil for
+ pass-through write IO. [ruby-dev:32740]
+
+Tue Dec 25 15:24:57 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (appendline): initialize rslen to 1 if rsptr is 0.
+ rslen is the length of the delimiter.
+ if only delim is given, it should be 1.
+ [ruby-dev:32746]
+
+Tue Dec 25 15:21:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_dispatch): fix for multistep transcode.
+
+Tue Dec 25 15:07:51 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/trans/single_byte.c (Init_single_byte): renamed.
+
+Tue Dec 25 15:00:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_yield): when multiple values yielded from #each
+ pack them into an array. [ruby-dev:32708]
+
+ * enum.c: all method but all?, any?, one? and none? passed packed
+ multiple values to the block.
+
+ * enum.c (collect_all): should pack all values. [ruby-core:14410]
+
+Tue Dec 25 14:57:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (COMMONOBJS): transcode_data_*.c moved under enc/trans.
+
+ * transcode_data.h (rb_transcoding, rb_transcoder): prefixed.
+
+ * transcode.c (rb_register_transcoder, rb_declare_transcoder): split
+ declaration and registration. [ruby-dev:32704]
+
+ * transcode.c (transcode_dispatch): autoload pre-declared transcoder.
+
+ * transcode.c (str_transcode): use rb_define_dummy_encoding().
+
+ * transcode.c (Init_transcode): initialize transcoder tables.
+
+ * enc/trans/single_byte.c, enc/trans/japanese.c: moved from top.
+
+Tue Dec 25 14:20:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mkmf.rb (map_dir): should generate path including $top_srcdir.
+
+Tue Dec 25 14:09:16 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Fixed test failures caused by changes to Ruby.
+
+ * test/csv/tc_serialization, test/csv/tc_csv_parsing, test/csv/tc_features:
+ Fixed test failures caused by changes to Ruby.
+
+Tue Dec 25 14:11:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_encoding_set): missing return type.
+
+Tue Dec 25 14:03:48 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rinda/test_rinda.rb (MockClock#{_forward, forward, sleep}):
+ Change default value of n as @reso from nil. If default value is
+ nil, n.+ is not defined.
+
+Tue Dec 25 13:54:01 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io_m17n.rb (test_pipe): fixed.
+ [ruby-dev:32743]
+
+Tue Dec 25 13:44:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_wait_fd_rw): should check EBADF on select().
+
+Tue Dec 25 13:30:03 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c, thread_pthread.h, thread_win32.c,
+ thread_win32.c: make some functions static functions.
+ a patch from Tadashi Saito <shiba AT mail2.accsnet.ne.jp>
+ in [ruby-core:14407]
+
+Tue Dec 25 13:23:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io_m17n.rb (test_write_noenc): don't mix text and
+ binary mode. [ruby-dev:32743]
+
+Tue Dec 25 13:13:09 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * README.EXT.ja, dir.c, eval.c, eval_intern.h, lex.c.src,
+ lex.c.blt, keywords, load.c, thread.c: more ANSI'ize.
+ a patch from Tadashi Saito <shiba AT mail2.accsnet.ne.jp>
+ in [ruby-dev:32725]
+
+Tue Dec 25 13:07:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, thread.c, cont.c: add RUBY_VM_SET_INTERRUPT(),
+ RUBY_VM_SET_TIMER_INTERRUPT(), RUBY_VM_INTERRUPTED().
+
+ * thread.c, thread_pthread.c, thread_win32.c: fix to ignore time slice
+ event until sleep.
+
+ * bootstraptest/test_thread.rb: add a test for time limited join test.
+
+Tue Dec 25 12:42:59 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (Init_VM): remove unused code.
+ [ruby-dev:32732]
+
+Tue Dec 25 12:32:32 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: Moving a static counter from inside register_transcoder()
+ and register_functional_transcoder() to outside the functions, renaming
+ from n to next_transcoder_position. Fixes 3) in [ruby-dev:32715].
+
+Tue Dec 25 12:22:17 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sample/from.rb: follow Ruby 1.9 libraries.
+
+Tue Dec 25 12:21:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (method_inspect): preserve encoding of the method name.
+
+Tue Dec 25 12:07:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (BASERUBY): delayed error until BASERUBY is used.
+
+Tue Dec 25 11:48:35 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/README: removed obsoleted files: dbmtest.rb,
+ getopts.test, mrshtest.rb, regx.rb.
+
+Tue Dec 25 11:45:34 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Import the FasterCSV source as the new CSV class.
+
+ * test/csv/*: Added all applicable tests from FasterCSV.
+
+Tue Dec 25 11:33:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (report_bug): uses ruby_description.
+
+Tue Dec 25 11:20:38 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix stack consistency error.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp> [ruby-dev:32720]
+
+ * bootstraptest/test_syntax.rb: add 2 tests for above.
+
+Tue Dec 25 11:14:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c, vm_core.h: comment out unused fields.
+
+Tue Dec 25 11:02:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: check frame is FINAL when creating env.
+ [ruby-core:14395]
+
+ * bootstraptest/test_block.rb: add a test for above.
+
+Tue Dec 25 09:12:13 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/: Enable RDoc debugging only with $DEBUG_RDOC.
+
+Tue Dec 25 08:37:43 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb, test/csv/test_csv.rb: Removed in preparation for
+ FasterCSV code import.
+
+Tue Dec 25 08:27:43 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Fix test failures.
+
+ * test/rubygems/test_gem.rb: Fix test failure.
+
+Tue Dec 25 06:23:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb, test_literal.rb: move fixed test.
+
+Tue Dec 25 06:19:04 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * sample/biorhythm.rb: follow Ruby 1.9 libraries.
+
+Tue Dec 25 06:15:01 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: add dummy toplevel frame.
+
+Tue Dec 25 05:44:56 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Fix uninitialized variable warning.
+ [ruby-talk:284582]
+
+ * lib/irb/output-method.rb: Remove unused #foo method.
+ [ruby-talk:284582]
+
+Tue Dec 25 05:24:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile): clear local table if node == 0.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp> [ruby-dev:32530]
+
+ * vm.c: clear VM stack.
+
+Tue Dec 25 04:23:32 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (rb_id2str): fill klass of returned string as rb_cString.
+ some strings are allocated before rb_cString is created.
+ This prevents a "called on terminated object" error by
+ ObjectSpace.each_object(Module) {|m| p m.name }.
+
+Tue Dec 25 03:51:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix stack consistency bug.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
+
+Tue Dec 25 03:19:47 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * tool/make-snapshot: must create configure and lex.c.
+
+Tue Dec 25 03:16:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_pipe): now takes up to two arguments. allow its
+ external/internal encoding by Encoding objects.
+
+ * io.c (rb_io_set_encoding): new method to set encoding of the IO.
+
+ * io.c (argf_set_encoding): ditto.
+
+Tue Dec 25 03:08:53 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * pack.c (pack_pack): use NUM2LONG instead of NUM2INT.
+
+ * numeric.c (fix_lshift, fix_aref): use SIZEOF_LONG instead of
+ SIZEOF_VALUE.
+
+ * bignum.c (big2ulong, rb_big_aref): ditto.
+
+Tue Dec 25 02:55:26 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/rexml/element.rb (REXML::Elements#each): yield in each
+ should be called with one parameter. [ruby-dev:32708]
+
+Tue Dec 25 02:15:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): add a "pop" insn after break
+ to fix stack consistency error. [ruby-core:14385]
+
+ * bootstraptest/test_syntax.rb: add tests for above.
+
+ * bootstraptest/test_knownbug.rb: remove fixed bug.
+
+Tue Dec 25 01:54:36 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * id.c (Init_id): remove several unused symbols. [ruby-core:14362]
+
+ * compile.c (iseq_specialized_instruction): do not use
+ VM_CALL_SEND_BANG flag any longer.
+
+Tue Dec 25 01:42:41 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/rdoc/rdoc.rb (parse_files): interpret coding cookie.
+
+Tue Dec 25 01:38:04 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (method_name): preserve Symbol's encoding.
+
+ * numeric.c (fix_id2name): ditto.
+
+Tue Dec 25 01:19:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_left_char_head): new utility macro.
+
+ * include/ruby/encoding.h (rb_enc_right_char_head): ditto.
+
+ * io.c (appendline): does multibyte RS search in the function.
+
+ * io.c (prepare_getline_args): RS may be nil.
+
+ * io.c (rb_io_getc): should process character based on external
+ encoding, when transcoding required.
+
+Tue Dec 25 01:07:57 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/irb/output-method.rb: translate a comment to English to
+ avoid mix of EUC-JP comment and UTF-8 Date keyword.
+ svn substitute Date keyword with UTF-8 weekday on UTF-8 locale.
+
+Tue Dec 25 00:27:28 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservley/cgihandler.rb
+ (WEBrick::HTTPServlet::CGIHandler#do_GET): m17nized.
+
+Mon Dec 24 23:55:29 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/cgi.rb (CGI::escape): m17nized.
+ (CGI::unescape): ditto.
+ (CGI::escapeHTML): ditto.
+ (CGI::unescapeHTML): ditto.
+
+Mon Dec 24 23:32:24 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * transcode_data_japanese.c (select_iso_2022_mode): '\e' is not valid.
+
+Mon Dec 24 23:13:09 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/rdoc/diagram.rb (RDoc::Diagram#initialize): use fileuitls
+ instead of ftools.
+
+Mon Dec 24 23:04:57 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/ftools.rb: removed obsoleted lib. use fileutils instead (by eban).
+
+ * lib/rdoc/rdoc.rb, lib/rdoc/generators/*, lib/rake.rb: let it use
+ fileutils instead of ftools.
+
+ * lib/shell/command-processor.rb: removed unused references to ftools.
+
+ * lib/parsedate.rb: removed. see [ruby-core:12535], [ruby-dev:31969].
+
+ * lib/README: updated.
+
+Mon Dec 24 23:01:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI::Buffer): use Meta ===. [ruby-core:14295]
+
+Mon Dec 24 22:46:42 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c: register_functional_transcoder() added.
+ (init_transcoder_table(: register ISO-2022-JP.
+ (str_transcode): add preprocessor and postprocessor.
+
+ * transcode_data_japanese.c: add ISO-2022-JP support.
+
+ * transcode_data.h: moved transcoder and transcoding definition from
+ transcode.c.
+
+Mon Dec 24 20:29:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/io/nonblock/test_flush.rb: fix test for 1.9.
+
+Mon Dec 24 20:23:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/rinda/test_rinda.rb: revert last commit because this test seems
+ to have timing problem to halt all tests.
+
+Mon Dec 24 20:18:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/rinda/test_rinda.rb: enable rinda test.
+
+Mon Dec 24 20:16:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * instruby.rb: fix rdoc install dir.
+
+Mon Dec 24 18:37:32 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_prepare_re): show regexp encoding in the error message.
+
+Mon Dec 24 18:23:32 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (rb_exc_raise): ANSI style.
+ (rb_exc_fatal): ditto.
+ (rb_raise_jump): ditto.
+ (rb_jump_tag): ditto.
+ (rb_block_given_p): ditto.
+
+ * variable.c (original_module): ditto.
+
+Mon Dec 24 18:05:09 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (Init_ISeq): disable ISeq.load() because there is no verifier.
+
+ * iseq.c, proc.c: add ISeq.disasm(method).
+
+Mon Dec 24 18:06:03 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval_method.c (Init_eval_method): extracted from Init_eval
+ for rdoc to find rb_mod_remove_method, rb_mod_undef_method and
+ rb_mod_alias_method.
+
+ * eval.c (Init_eval): call Init_eval_method.
+
+Mon Dec 24 17:59:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_lock): reverted.
+
+ * thread.c (rb_barrier_wait): check for recursive wait.
+
+Mon Dec 24 17:50:54 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (function_call_may_return_twice_jmp_buf): removed.
+ (function_call_may_return_twice_false): removed.
+ [ruby-core:14335]
+
+Mon Dec 24 17:40:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (node_name.inc, miniprelude.c, prelude.c): nmake cannot
+ handle target vpath in other than implicit rules.
+
+Mon Dec 24 17:20:34 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/{mailread.rb,getopts.rb,parsearg.rb}: removed.
+ see [ruby-core:12535], [ruby-dev:31969].
+
+Mon Dec 24 17:12:57 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h, random.c, array.c:
+ change exported name.
+ genrand_int32 -> rb_genrand_int32.
+ genrand_real -> rb_genrand_real.
+ [ruby-core:14335]
+
+Mon Dec 24 17:06:37 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * {lib,test}/{soap,wsdl,xsd}: removed soap4r along to the discussion
+ at ruby-core and ruby-dev. see [ruby-core:12535], [ruby-dev:31969].
+
+Mon Dec 24 17:06:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_feature_p): returns loading path name too.
+
+ * load.c (search_required): returns path too if feature is being
+ loaded. [ruby-dev:32048] [TODO: refactoring]
+
+Mon Dec 24 16:29:12 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * sample/openssl: reviewed and remove dependency on getopts.rb.
+
+Mon Dec 24 16:18:57 2007 Koichi Sasada <ko1@atdot.net>
+
+ * mkconfig.rb: add teeny to CONFIG['ruby_version'].
+
+Mon Dec 24 15:55:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * tool/compile.rb, getrev.rb, runruby.rb: remove unused tools.
+
+Mon Dec 24 15:42:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, cygwin/GNUmakefile.in, */Makefile.sub,
+ djgpp/config.hin.: version dependent directory names now contain
+ teeny.
+
+Mon Dec 24 15:29:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/serb.rb: removed.
+
+Mon Dec 24 13:55:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_proc_new), vm.c (invoke_block): removed u3.state magic.
+ [ruby-core:14310]
+
+ * test/ruby/test_symbol.rb (test_to_proc): a test from Frederick
+ Cheung <frederick.cheung AT gmail.com>.
+
+Mon Dec 24 13:43:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_atfork): should not leave living_threads
+ referring freed table while allocating new table.
+
+Mon Dec 24 12:49:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in, lib/mkmf.rb, */Makefile.sub: specify
+ compiled output file name explicitly.
+
+ * enc/Makefile.in, enc/depend: now makes compiler to put generated
+ files under directories corresponding to the each source.
+ enc/trans supported.
+
+ * enc/make_encmake.rb: evaluates depend file before Makefile.in so
+ that the former can influence to CONFIG.
+
+Mon Dec 24 12:35:03 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win{32,ce}/Makefile.sub (MFLAGS): defaulted to -l.
+
+Mon Dec 24 12:08:10 2007 Eric Hodel <drbrain@segment7.net>
+
+ * /, ext/: Add svn:ignore for OS X Xcode 3's conftest.dSYM
+ directories.
+
+Mon Dec 24 11:56:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: should not pass MAKEFLAGS to recursive make.
+ + normal make: MFLAGS are set and command line options and macros
+ are all passed silently.
+ + GNU make: ditto, and all options and macros in MAKEFLAGS are in
+ effect.
+ + nmake: MFLAGS is not set and MAKEFLAGS has only options without
+ hyphen, no macros exist in any variables.
+ + Borland make: ditto, and command line macros cannot override
+ macros in makefile, so passing them is vain.
+
+ * {bcc32,win{32,ce}}/Makefile.sub (SET_MAKE): set MFLAGS which is not
+ set by default, to get rid of chaotic situation of MFLAGS/MAKEFLAGS.
+
+Mon Dec 24 11:32:44 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): fixed to keep transitivity.
+ [ruby-dev:32693]
+
+Mon Dec 24 11:20:31 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/ri_options.rb: Fix display of GEMDIRS, make command
+ examples match ri's name.
+
+ * lib/rdoc/ri/ri_paths.rb: Only allow latest ri dirs in ri output.
+
+Mon Dec 24 10:49:04 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri/mailto.rb, lib/uri/common.rb: Fix Regexp warnings. Patch
+ #16524 from Kornelius Kalnbach, [ruby-core:14302].
+
+Mon Dec 24 10:37:38 2007 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Remove methods from Gem, not QuickLoader, to fix
+ warnings.
+
+Mon Dec 24 09:45:45 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c, transcode_data_one_byte.c, transcode_data_japanese.c:
+ added rb_ prefix to external data symbols.
+
+Mon Dec 24 05:32:22 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): updated documentation. a patch from Keita
+ Yamaguchi <keita.yamaguchi AT gmail.com> in [ruby-dev:32686].
+
+ * README.EXT: updated. a patch from Tadashi Saito
+ <shiba AT mail2.accsnet.ne.jp> in [ruby-core:14328].
+
+ * array.c (rb_ary_at): updated documentation. a patch from Tadashi
+ Saito <shiba AT mail2.accsnet.ne.jp> in [ruby-core:14330].
+
+Mon Dec 24 05:13:04 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_trans): should associate new encoding if modified.
+
+Mon Dec 24 04:04:12 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/net/http/test_https.rb: should rescue LoadError.
+
+Mon Dec 24 03:57:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c, vm.h: fix to support sparc machine.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
+
+Mon Dec 24 03:35:19 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: remove additional "-".
+
+Mon Dec 24 02:59:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_check_readable): should not fill fptr->enc always.
+ read-write IO (e.g. socket) does not work. [ruby-dev:32685]
+
+ * io.c (io_read_encoding): retrieve reading encoding.
+
+ * io.c (prepare_getline_args): convert RS to external encoding.
+
+ * string.c (str_new_shared): was setting embedding flag of wrong
+ string object. [ruby-dev:32685]
+
+ * io.c (io_enc_str): should preserve default_external encoding.
+
+ * io.c (appendline): should do multibyte aware RS search.
+
+Mon Dec 24 02:06:35 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_open): documentation update.
+
+ * io.c (rb_io_s_pipe): ditto.
+
+ * io.c (io_fwrite): wrong encoding destination.
+
+ * io.c (rb_io_external_encoding): should return the encoding of
+ the file reading.
+
+ * io.c (rb_io_internal_encoding): should return the encoding of
+ read string.
+
+Mon Dec 24 01:46:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_pipe): allow specifying read-side encoding.
+
+ * io.c (io_enc_str): wrong encoding destination.
+
+Mon Dec 24 01:03:17 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): comparison including broken
+ coderange strings do not consider encoding.
+
+Mon Dec 24 00:57:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (open_key_args): IO direct methods (foreach, readlines,
+ read) now takes keyword argument: encoding, mode, open_args.
+
+Mon Dec 24 00:52:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_read): encoding argument reverted.
+
+ * io.c (mode_enc): independent function to share code.
+
+ * io.c (rb_io_internal_encoding): new method.
+
+Mon Dec 24 00:47:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb (TestBeginEndBlock::test_endblockwarn):
+ rename endblockwarn.rb to endblockwarn_rb to avoid unnecessary
+ warning in make test.
+
+Sun Dec 23 23:03:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_codepoint): implemented to raise invalid
+ encoding.
+
+ * include/ruby/encoding.h (rb_enc_codepoint): macro is replaced as a
+ declaration.
+
+Sun Dec 23 19:45:22 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.httpdate): fix 2 digits year for 20xx.
+ reported by Tadayoshi Funaba. [ruby-dev:32687]
+
+Sun Dec 23 19:33:42 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/open-uri.rb: Fix method redefined warning. [ruby-core:14304]
+
+Sun Dec 23 18:31:49 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_enc_get): use rb_define_dummy_encoding.
+
+ * ext/nkf/nkf.c (Init_nkf): use rb_nkf_enc_get("ASCII").
+
+ * ext/nkf/nkf-utf8/nkf.c: Update 1.161.
+
+ * ext/nkf/nkf-utf9/config.h: default output encoding is now UTF-8.
+
+ * ext/nkf/lib/kconv.rb (Kconv.kconv): replace Encoding#name by
+ Encoding#to_s.
+
+Sun Dec 23 18:02:52 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/gem_open_uri.rb: Fix version check.
+
+Sun Dec 23 17:24:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_init): add eucJP as an alias of EUC-JP.
+
+Sun Dec 23 17:00:23 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.httpdate): use Time.utc for
+ "day-of-week, dd-mon-yy HH::MM:SS GMT" format.
+
+Sun Dec 23 16:12:40 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Fix 1.9 warnings.
+
+Sun Dec 23 15:28:37 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems, test/rubygems: Fix new 1.9 warnings.
+
+Sun Dec 23 14:43:10 2007 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Use require to load rubygems.rb so the correct path
+ is in $LOADED_FEATURES on RubyGems upgrade.
+
+Sun Dec 23 11:26:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_call): use exact argument array interface.
+ [ruby-core:14279]
+
+Sun Dec 23 11:01:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_binmode_m): removed C99ism.
+
+Sun Dec 23 10:23:23 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode_data_one_byte.c: Better (and more honest) optimization.
+
+ * transcode_data_japanese.c: First optimization step.
+
+Sun Dec 23 09:07:02 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h, encoding.c, re.c, io.c, parse.y, numeric.c,
+ ruby.c, transcode.c, ext/nkf/nkf.c: rename rb_ascii_encoding to
+ rb_ascii8bit_encoding. rb_ascii_encoding is ambiguous with
+ ASCII-8BIT and US-ASCII.
+
+Sun Dec 23 03:35:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.h: use patchlevel if revision is not set.
+
+ * {bcc32,win{32,ce}}/setup.mak (-version-): skip including revision.h.
+
+ * common.mk (srcs): new target to generated sources.
+
+ * common.mk (encs, ext/ripper/ripper.c): MAKEFLAGS needs -.
+
+ * enc/depend, enc/make_encmake.rb: use erb.
+
+Sun Dec 23 01:56:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_mode_enc): do not set encoding unless explicitly
+ specified.
+
+ * io.c (rb_io_check_readable): fill fptr->enc by default_external
+ if it's empty.
+
+ * io.c (io_enc_str): fptr->enc is always set for reading IO (by
+ rb_io_check_readable(fptr)).
+
+Sun Dec 23 01:18:06 2007 David Flanagan <david@davidflanagan.com>
+
+ * io.c, io.h: temporary patch to partially implement
+ transcode-on-read and transcode-on-write
+
+Sun Dec 23 00:48:05 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb: added tests for SSL.
+
+Sat Dec 22 21:10:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_genericresolver_node_import): should
+ not set instance variable "@kind" before initializing it.
+ [ruby-dev:32677]
+
+Sat Dec 22 19:52:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_objectspace.rb: fix condition.
+
+Sat Dec 22 19:17:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ext/probeprofiler/: removed.
+
+Sat Dec 22 19:14:38 2007 Koichi Sasada <ko1@atdot.net>
+
+ * process.c (rb_f_fork): Unsupport Kernel.fork() on NetBSD.
+
+Sat Dec 22 18:20:13 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (version.o): add dependency. [ruby-dev:32680]
+
+Sat Dec 22 17:45:11 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (Init_nkf): use rb_ascii_encoding() for
+ rb_nkf_enc_get("US-ASCII").
+ * if use rb_nkf_enc_get("US-ASCII"), ruby will crash - this is bug?
+
+Sat Dec 22 17:39:03 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb ($extmk): fixed broken condition.
+
+Sat Dec 22 17:35:59 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8.c: Update nkf.c rev:1.157.
+
+ * ext/nkf/nkf.c (rb_nkf_enc_get): replicate proper based encoding.
+
+ * ext/nkf/kconv.c (Kconv#kconv, to*): use self.encoding as from_enc
+ when from_enc isn't given.
+
+Sat Dec 22 17:06:50 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/net/ssl.rb (OpenSSL::SSL::SSLContext.build): removed.
+
+ * ext/openssl/lib/net/ssl.rb (OpenSSL::SSL::SSLContext#set_params):
+ new method to set suitable SSL parameters.
+
+ * lib/net/pop.rb, lib/net/http.rb, lib/net/imap.rb,
+ test/openssl/test_ssl.rb: follow above change.
+
+ * test/net/http/test_https.rb: refine error case.
+
+Sat Dec 22 16:58:49 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (encode_utf7): accept UTF-8 strings.
+
+ * lib/net/imap.rb (decode_utf7): return UTF-8 strings.
+
+Sat Dec 22 15:56:36 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * transcode_data_japanese: typo.
+
+Sat Dec 22 15:54:54 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * ChangeLog: Information for last patch got lost, fixed
+
+ * test/ruby/test_transcode.rb: Added simple tests for
+ EUC-JP and Shift_JIS and tests for ASCII-only range
+
+Sat Dec 22 15:45:45 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode_data_one_byte: slightly optimized
+
+ * transcode_data_japanese: new data file for EUC-JP and SHIFT_JIS
+ (not yet optimized; tests to follow; data from
+ http://nkf.sourceforge.jp/ucm/{SJIS|eucJP}-nkf.ucm)
+
+ * common.mk, transcode.c: Adjusted for transcode_data_japanese
+
+Sat Dec 22 15:30:13 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * */Makefile.sub (MFLAGS): define unless defined.
+
+Sat Dec 22 15:17:40 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb ($extmk): set true only when under ext/ or tool/.
+
+Sat Dec 22 15:14:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encs, ext/ripper/ripper.c): needs MFLAGS.
+
+ * configure.in (STRINGIZE): stringizing macro.
+
+ * include/ruby/defines.h (STRINGIZE): fallback.
+
+ * tool/make-snapshot: new file.
+
+ * version.c (ruby_description, ruby_copyright): string constants for
+ -v option.
+
+Sat Dec 22 15:03:37 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (initialize): fixed documentation.
+
+Sat Dec 22 15:01:16 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/pop.rb (enable_ssl): use OpenSSL::SSL::SSLContext.build
+ instead of SSLContext.new (default verify mode is now
+ OpenSSL::SSL::VERIFY_PEER).
+
+Sat Dec 22 14:45:21 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: shouldn't freeze nil. [ruby-dev:32677]
+
+Sat Dec 22 14:27:27 2007 Tanaka Akira <akr@fsij.org>
+
+ * regenc.c (onigenc_ascii_is_code_ctype): moved from enc/ascii.c.
+
+ * regenc.h (onigenc_ascii_is_code_ctype): declared.
+
+ * enc/ascii.c: use onigenc_ascii_is_code_ctype.
+
+ * enc/us_ascii.c: new file for US-ASCII.
+
+Sat Dec 22 14:30:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reg_named_capture_assign_iter): allows non-ascii names and
+ get rid of reserved word IDs.
+
+Sat Dec 22 14:18:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_float.rb, test_sprintf.rb: fix test place.
+
+Sat Dec 22 14:17:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_objectspace.rb: skip frozen string.
+
+Sat Dec 22 14:02:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_permutation): add volatile to avoid GC problem.
+
+Sat Dec 22 11:47:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_obj_instance_eval): use class of immediate objects.
+
+ * test/ruby/test_eval.rb: fix a test.
+
+Sat Dec 22 11:37:06 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): win32 support.
+
+Sat Dec 22 11:31:14 2007 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Place bin dir before lib dir so gem bin stubs work.
+
+Sat Dec 22 11:05:44 2007 Jim Weirich <jim@tardis.local>
+
+ * lib/rake.rb (Rake): Added Rake and related libraries to the
+ source code base.
+
+Sat Dec 22 10:30:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * tool/insns2vm.rb: moved from lib/vm/instruction.rb.
+
+Sat Dec 22 10:25:44 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (reg_named_capture_assign_iter): captured name should
+ not be reserved word. a patch from Keita Yamaguchi
+ <keita.yamaguchi AT gmail.com> in [ruby-dev:32675].
+
+ * parse.y (reg_named_capture_assign_iter): just ignore the
+ captures that do not have valid local variable name.
+
+Sat Dec 22 10:19:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_method_name): now __method__ and __callee__ are
+ aliases. [ruby-core:14244]
+
+Sat Dec 22 08:29:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_buf_append): improvement for non-broken coded
+ strings.
+
+Sat Dec 22 06:30:04 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_fork.rb: skip if fork is not unsupported.
+
+ * bootstraptest/test_io.rb: skip if require failed.
+
+Sat Dec 22 06:09:12 2007 David Flanagan <david@davidflanagan.com>
+
+ * io.c: fix typo in rdoc comment
+
+Sat Dec 22 05:09:43 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_str_new, rb_intern3): rb_default_encoding() renamed.
+
+ * ext/nkf/nkf.c (rb_nkf_putchar): ditto.
+
+Sat Dec 22 03:54:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_ascii_encoding): renamed from previous
+ rb_default_encoding().
+
+Sat Dec 22 02:49:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (command): block from cmd_brace_block was ignored.
+ [ruby-dev:32644]
+
+ * re.c (rb_reg_prepare_re): stop ENCODING_NONE warning if the
+ encoding of the str is ASCII-8BIT.
+
+Sat Dec 22 01:52:11 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_ungetc): avoid buffer relocation, which might cause
+ serious problem under concurrent situation.
+
+Sat Dec 22 01:35:41 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (ARG_ENCODING_NONE): defined for /.../n option.
+ (REG_ENCODING_NONE): ditto.
+ (rb_char_to_option_kcode): return ARG_ENCODING_NONE for n.
+ (rb_reg_prepare_re): warn /ascii/n =~ "non-ascii".
+ (rb_reg_initialize): set REG_ENCODING_NONE from ARG_ENCODING_NONE.
+
+Sat Dec 22 01:23:10 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/json/test_json_addition.rb (test_core): do not use Time.now
+ because JSON can't hold nsec.
+
+Sat Dec 22 01:10:30 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tk/sample/tkextlib/vu/canvSticker2.rb,
+ ext/tk/sample/demos-{en,jp}/bind.rb: fix typo. [ruby-dev:32668]
+
+Sat Dec 22 00:56:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/test.rb (valid_syntax): force_encoding input script.
+
+Fri Dec 21 23:48:38 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (depend_rules): suffixes list broken. fixed.
+
+Fri Dec 21 20:18:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_mul0): remove unused variable.
+
+ * bignum.c (bigdivrem): ditto.
+
+Fri Dec 21 20:13:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_catch_obj, rb_throw_obj): prototyped.
+
+ * include/ruby/intern.h (rb_fiber_alive_p): prototyped.
+
+Fri Dec 21 20:09:18 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_succ): retry increasing until valid char is found.
+
+Fri Dec 21 20:00:02 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_replicate): now creates first class encoding.
+
+ * encoding.c (rb_define_dummy_encoding): always based on the default
+ encoding.
+
+ * encoding.c (rb_enc_dummy_p): check if dummy.
+
+ * encoding.c (enc_inspect): shows if dummy.
+
+ * encoding.c (Init_Encoding): added dummy? method
+
+ * include/ruby/encoding.h (ENCODING_INLINE_MAX): increased.
+
+Fri Dec 21 18:40:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * io.c: write() should be in blocking region.
+
+ * bootstraptest/test_io.rb, test_knownbug.rb: move a fixed test.
+
+Fri Dec 21 17:56:30 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: provisional support on Ruby-VM.
+
+ * ext/tk/MANUAL_tcltklib.eng, ext/tk/MANUAL_tcltklib.eucj:
+ modify document about new functions.
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/labelframe.rb,
+ ext/tk/lib/tk/frame.rb, ext/tk/lib/tk/toplevel.rb,
+ ext/tk/lib/tk/scrollbar.rb, ext/tk/lib/tk/message.rb,
+ ext/tk/lib/tk/listbox.rb, ext/tk/lib/tk/text.rb,
+ ext/tk/lib/tk/scale.rb, ext/tk/lib/tk/entry.rb,
+ ext/tk/lib/tk/ttk_selector.rb, ext/tk/lib/tk/menu.rb,
+ ext/tk/lib/tk/label.rb, ext/tk/lib/tk/spinbox.rb,
+ ext/tk/lib/tk/textmark.rb, ext/tk/lib/tk/winpkg.rb,
+ ext/tk/lib/tk/checkbutton.rb, ext/tk/lib/tk/panedwindow.rb,
+ ext/tk/lib/tk/texttag.rb, ext/tk/lib/tk/root.rb,
+ ext/tk/lib/tk/textimage.rb, ext/tk/lib/tk/radiobutton.rb,
+ ext/tk/lib/tk/package.rb, ext/tk/lib/tk/macpkg.rb,
+ ext/tk/lib/tk/composite.rb, ext/tk/lib/tk/autoload.rb,
+ ext/tk/lib/tk/canvas.rb, ext/tk/lib/tk/button.rb,
+ ext/tk/lib/tk/textwindow.rb,
+ ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb,
+ ext/tk/lib/tkextlib/tile/style.rb,
+ ext/tk/lib/tkextlib/tile/tscrollbar.rb,
+ ext/tk/lib/tkextlib/tile/tpaned.rb, ext/tk/lib/tkextlib/tile.rb,
+ ext/tk/extconf.rb: support Tcl/Tk8.5 (partial, not complete).
+
+ * ext/tk/sample/demos-jp/widget,
+ ext/tk/sample/demos-jp/pendulum.rb,
+ ext/tk/sample/demos-jp/bind.rb,
+ ext/tk/sample/tkextlib/vu/canvSticker2.rb,
+ ext/tk/sample/demos-en/pendulum.rb,
+ ext/tk/sample/demos-en/bind.rb: remove $KCODE and minor bug fix.
+
+Fri Dec 21 17:49:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_str_transcode_bang): returns self if no conversion.
+ [ruby-dev:32662]
+
+Fri Dec 21 17:44:47 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Update to RubyGems 1.0.1, r1581
+
+Fri Dec 21 17:32:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/pending.rb: renamed from featurebug.rb.
+ This file contains bugs which is known but will not be
+ fixed in days.
+
+Fri Dec 21 17:31:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c (dummy_gdb_enums.various): added ENCODING and CODERANGE
+ constants.
+
+ * .gdbinit: use enum constants.
+
+Fri Dec 21 17:28:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/featurebug.rb: added.
+
+ * bootstraptest/test_knownbug.rb: move a feature bug.
+
+Fri Dec 21 17:25:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_atfork): fix to mark thread object.
+ [ruby-dev:32404]
+
+ * bootstraptest/test_knownbug.rb, test_fork.rb: move a fixed test.
+
+Fri Dec 21 17:07:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * gc.h: extern variable should not be initialized.
+
+ * thread_pthread.c: add a parameter.
+
+Fri Dec 21 16:50:43 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (Init_Encoding): use enc_name as to_s.
+ (enc_inspect): renamed from enc_to_s. add "#" at beginning.
+
+Fri Dec 21 16:37:43 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/config.h (MIME_DECODE_DEFAULT, X0201_DEFAULT):
+ defined as FALSE. nkf and kconv don't decode MIME encoded string
+ and don't convert JIS X 0201 Katakana.
+
+ * test/nkf/test_kconv.rb: fix tests.
+
+Fri Dec 21 16:33:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_iter_i): adjusted for rb_block_call_func.
+
+ * include/ruby/ruby.h (rb_block_call_func): function to be called back
+ as block.
+
+Fri Dec 21 16:25:25 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * common.mk, transcode_data_iso_8859.c: renamed to
+ transcode_data_one_byte.c.
+
+Fri Dec 21 16:10:30 2007 Shigeo Kobayashi <shigeo@tinyforest.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpMidRound): Round method bug
+ pointed by Ryan Platte fixed(Patch to the patch from "NATORI
+ Shin"). [ruby-talk:273360]
+
+Fri Dec 21 16:06:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (append_utf8): use rb_utf8_encoding() instead of
+ rb_enc_find("utf-8").
+
+Fri Dec 21 15:59:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_init): use enc_register_at() directly.
+
+ * encoding.c (rb_utf8_encoding): returns utf-8 encoding.
+
+ * include/ruby/encoding.h (rb_utf8_encoding): prototyped.
+
+ * parse.y (UTF8_ENC): uses rb_utf8_encoding().
+
+Fri Dec 21 15:31:59 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_read): allow specifying encoding explicitly.
+
+ * io.c (rb_io_binmode): specifies encoding to ASCII-8BIT (binary).
+
+ * io.c (rb_io_s_read): IO should be in binary mode when offset is
+ specified.
+
+ * encoding.c (rb_to_encoding): returns default encoding if no
+ corresponding encoding found.
+
+Fri Dec 21 15:24:22 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (initialize): accept service name. changed
+ the default value of the old style +verify+ argument to true.
+
+Fri Dec 21 15:15:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (rb_garbage_collect): new function for debugging.
+
+Fri Dec 21 15:16:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_to_encoding_index): should return error instead of
+ exception even if type is incorrect.
+
+Fri Dec 21 14:58:27 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_init_copy): prohibit cloning of
+ generators since Fibers cannot be copied.
+
+ * enumerator.c (enumerator_init_copy): typo fixed.
+
+Fri Dec 21 14:46:07 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (Init_IO): define IO::BINARY even if O_BINARY is not exist.
+
+Fri Dec 21 14:01:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_system.rb (TestSystem::valid_syntax): apply
+ ASCII-8BIT encoding explicitly.
+
+ * re.c (rb_reg_prepare_re): add encoding name in the message.
+
+Fri Dec 21 13:54:05 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c: change "character encodings differ" error messages.
+
+Fri Dec 21 13:46:58 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_register): set encoding constant.
+
+ * encoding.c (rb_enc_find_index): replace non-alphanumeric chars with
+ underscores, so that initialize function can be called.
+
+ * encoding.c (rb_enc_find_index): extension libraries have lower case
+ names conventionally.
+
+ * ruby.c (proc_options, process_options): finds encoding after
+ load_path is initialized.
+
+Fri Dec 21 13:10:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_external_encoding): new method.
+
+ * encoding.c (rb_enc_from_encoding): returns Qnil for NULL
+ encoding.
+
+ * io.c (rb_io_external_encoding): should fill delayed
+ initialization for STDIN.
+
+Fri Dec 21 13:09:11 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_locale_charmap): return nil if no locale information.
+
+Fri Dec 21 12:55:39 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/runit, lib/rubyunit.rb, test/testunit/runit: removed.
+
+Fri Dec 21 12:45:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): avoid unnecessary loop using
+ ONIGENC_LEFT_ADJUST_CHAR_HEAD().
+
+Fri Dec 21 12:32:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (Init_File): File.exists? revived.
+
+ * dir.c (Init_Dir): Dir.exists? again.
+
+Fri Dec 21 12:26:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: remove "illegal".
+
+Fri Dec 21 12:22:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * keywords, parse.y (__ENCODING__): represent script encoding.
+
+Fri Dec 21 12:16:50 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_is_ascii_only_p): new method ascii_only?.
+
+Fri Dec 21 12:11:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_mode_enc): set default external encoding if no
+ encoding specified explicitly.
+
+Fri Dec 21 12:00:34 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: check langinfo.h and locale.h.
+
+ * encoding.c: use langinfo.h only if available.
+
+ * main.c: use locale.h only if available.
+
+Fri Dec 21 11:47:56 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c: include locale.h
+ (rb_locale_charmap): new method Encoding.locale_charmap for
+ nl_langinfo(CODESET).
+
+ * include/ruby/encoding.h (rb_locale_charmap): declared.
+
+ * main.c (main): call setlocale with LC_CTYPE.
+
+ * ruby.c (locale_encoding): use rb_locale_charmap.
+
+Fri Dec 21 11:35:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_dump.c: fix typo. Reported by Yuki Mitsui.
+
+Fri Dec 21 11:28:00 2007 Tanaka Akira <akr@fsij.org>
+
+ * regerror.c, string.c, io.c, lib/getoptlong.rb, lib/net/imap.rb,
+ compile.c, sprintf.c, parse.y, ext/win32ole/win32ole.c,
+ ext/tk/sample/demos-en/entry3.rb, ext/tk/lib/tcltk.rb,
+ ext/openssl/ossl_bn.c, numeric.c, vm.c,
+ benchmark/bm_so_meteor_contest.rb, bignum.c, ruby.c: don't "illegal"
+ for non law violation context.
+
+Fri Dec 21 11:23:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (enc.mk): depends on $(RBCONFIG) instead of rbconfig.rb.
+
+ * encoding.c (Init_Encoding): ISO-8859-1 is no longer a replica.
+
+ * regenc.h (OnigEncodingDefine): names of extension and encoding can
+ differ.
+
+ * enc/Makefile.in: always shared.
+
+ * enc/depend (deffile): should not upcase.
+
+ * enc/{ascii,euc_jp,sjis,utf8,iso_8859_{1..16}}.c: fix for Init.
+
+Fri Dec 21 09:26:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: use erb.
+
+Fri Dec 21 08:07:35 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_next): should call next_init() if fiber
+ is dead already. [ruby-dev:32459]
+
+Fri Dec 21 01:21:49 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLContext.build):
+ enable CRL checking by default.
+
+Fri Dec 21 01:20:56 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/http.rb (Net::HTTP#connect): use
+ OpenSSL::SSL::SSLContext.build instead of SSLContext.new (default
+ verify mode is now OpenSSL::SSL::VERIFY_PEER).
+
+ * lib/net/https.rb: SSL parameters are defined by attr_accessor.
+
+ * test/net/http/test_https.rb: add test for HTTPS features.
+
+Fri Dec 21 01:11:37 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * io.c (select_internal): should return original value.
+
+Fri Dec 21 00:26:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_trans): wrong encoding check for tree strings.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_tr_s): "invalid mbstring
+ sequence" is not an error to be tested.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_tr): ditto.
+
+Thu Dec 20 19:29:07 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (initialize): the second argument is an option
+ hash now. use SSLContext.build to specify SSL parameters.
+
+Thu Dec 20 19:11:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (native_thread_apply_priority): check
+ _POSIX_PRIORITY_SCHEDULING for OpenBSD.
+
+Thu Dec 20 18:33:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in: add libthr for FreeBSD.
+
+Thu Dec 20 18:17:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk, *.ci: renamed to *.c.
+
+ * eval_load.c: renamed to load.c.
+
+Thu Dec 20 17:36:01 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Import RubyGems 1.0.0, r1575.
+
+Thu Dec 20 17:18:38 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c: support Proc#binding.
+
+ * sample/test.rb: add a test.
+
+Thu Dec 20 17:15:15 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * pack.c: Slight change to documentation ('character' ->
+ 'byte (C char)'). [ruby-core:13126], see also [ruby-core:13998].
+
+Thu Dec 20 17:07:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (enc.mk): depends on rbconfig.rb.
+
+ * regenc.h (OnigEncodingDefine): external encoding definition macro.
+
+ * enc/Makefile.in: fix for linking.
+
+ * enc/depend, enc/make_encmake.rb: fix for Windows.
+
+ * enc/{ascii,euc_jp,sjis,utf8,iso_8859_{1..16}}.c: renamed.
+
+Thu Dec 20 16:42:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (find_line_no): return 0 if not found.
+
+Thu Dec 20 16:04:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci, vm.c, vm_core.h: change interface of
+ vm_invoke_block() to specify block ptr. [ruby-talk:266422]
+
+ * cont.c, eval_jump.ci, insns.def, proc.c, signal.c, thread.c:
+ apply above change.
+
+ * bootstraptest/test_knownbug.rb: move fixed bug.
+
+ * bootstraptest/test_block.rb: ditto. and add a test.
+
+Thu Dec 20 15:47:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/iso_8859_{1..16}.c: renamed.
+
+Thu Dec 20 09:59:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_expandarray): fix sp increase place.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-dev:32581].
+
+ * bootstraptest/test_massign.rb: add a test for above.
+
+ * bootstraptest/test_syntax.rb: fix last committed test.
+
+Thu Dec 20 09:47:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_syntax.rb: add a test.
+
+Thu Dec 20 09:40:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each/NODE_RETURN): fix stack consistency.
+
+Thu Dec 20 09:42:11 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (big2str_orig): access beyond memory region cause crash
+ on interrupt. a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in
+ [ruby-dev:32651]. [ruby-dev:32641]
+
+Thu Dec 20 09:06:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_index): wrong starting position.
+
+Thu Dec 20 06:34:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): add pop after throw as return.
+
+ * bootstraptest/test_knownbug.rb, test_syntax.rb: move resolved test.
+
+ * vm_core.h, iseq.c, compile.h: add debug output code.
+
+Thu Dec 20 04:57:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): remove unused retry entry.
+
+Thu Dec 20 04:15:41 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * */Makefile.sub (DEFS, RM): output to config.status.
+
+Thu Dec 20 02:59:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * common.mk (encs): create encoding directory.
+
+Thu Dec 20 02:50:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/iso8859_{1..16}.c: adjust for ruby.
+
+Thu Dec 20 02:28:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/iso8859_{1..16}.c: imported from Onigiruma 5.9.0.
+
+Thu Dec 20 02:23:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (RM): added.
+
+ * enc/depend (encs): sort in alpha-numeric order.
+
+ * enc/depend (clean, distclean): added.
+
+Thu Dec 20 01:10:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): should handle upper level eval iseq
+ from break/next, and COMPILE_ERROR() breaks only one block.
+ [ruby-dev:31372]
+
+Thu Dec 20 00:07:36 2007 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/drbtest.rb (test_07_public_private_protected_missing):
+ followed current Ruby specification.
+
+Wed Dec 19 23:57:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_inspect, dir_path, dir_tell): check for frozen and closed
+ is not needed. [ruby-dev:32640]
+
+Wed Dec 19 22:59:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_sublen): adjust position if position is not at the
+ head of a character.
+
+ * string.c (rb_str_chomp_bang): check if match start at the head
+ of a character.
+
+ * string.c (rb_str_chomp_bang): wrong adjust condition.
+
+ * string.c (rb_str_rindex): comparison length should be based on
+ bytes, not characters.
+
+ * string.c (rb_str_rindex_m): too much adjustment.
+
+ * re.c (reg_match_pos): pos adjustment should be based on
+ characters.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_str_insert): test updated
+ to check negative offset behavior.
+
+ * string.c (rb_str_each_line): should consider rslen.
+
+ * string.c (rb_str_buf_append): should propagate encoding.
+
+ * string.c (rb_str_each_line): ditto.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_str_each_line): should
+ check encoding as well.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_str_each_line): empty
+ array can not propagate encoding; should not check.
+
+Wed Dec 19 21:42:18 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_regsub): should set checked encoding.
+
+ * string.c (rb_str_sub_bang): applied r14212 too.
+
+Wed Dec 19 20:40:01 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (bigmul1): C99ism.
+
+ * bignum.c (bigdivrem1): need dummy return value.
+
+Wed Dec 19 19:18:06 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Updated.
+
+ * ext/nkf/nkf.c (rb_nkf_enc_get): added.
+ (find encoding or replicate default encoding)
+
+ * ext/nkf/nkf.c (NKF::<ENCODING>): redefine encoding constant.
+
+ * ext/nkf/lib/kconv.rb (Kconv::<ENCODING>): redefined as Encoding.
+
+ * ext/nkf/lib/kconv.rb: refactoring.
+
+Wed Dec 19 19:11:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_mul0): blocking check for bigger numbers.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-dev:32632].
+
+ * bignum.c (bigdivrem): ditto.
+
+Wed Dec 19 17:34:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): remove "retry" in block.
+ ("iter{retry}" cause syntax error)
+ Currently, "begin; ...; rescue; iter{retry}; end" cause
+ syntax error too.
+
+ * bootstraptest/test_jump.rb: ditto.
+
+ * lib/drb/invokemethod.rb: ditto.
+
+ * sample/drb/darrayc.rb: ditto.
+
+ * sample/test.rb: ditto.
+
+ * test/drb/drbtest.rb: ditto.
+
+ * test/ruby/test_iterator.rb: ditto.
+
+ * sample/test.rb: add a 'test' directory on the SYSTEM test.
+
+Wed Dec 19 17:12:59 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb, test_block.rb:
+ move fixed bug.
+
+ * bootstraptest/test_m17n.rb: added.
+
+Wed Dec 19 16:59:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (errinfo_place): skip if error is Fixnum. [ruby-dev:32608]
+
+ * bootstraptest/test_exception.rb, test_known_bug.rb: move fixed bug.
+
+Wed Dec 19 16:31:58 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reg_named_capture_assign_iter): remove C99 dependency.
+
+ * parse.y (reg_named_capture_assign_iter): get rid of creating
+ unnecessary ID.
+
+ * parse.y (rb_enc_symname2_p): check for non-nul-terminated string.
+
+Wed Dec 19 15:37:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insnhelper.ci (vm_yield_with_cfunc): call cfunc with
+ (argv[0], data, argc, argv) to pass all arguments.
+
+ * enumerator.c (enumerator_each_i): adapted to new calling
+ convention.
+
+Wed Dec 19 15:13:20 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_justify): should propagate encoding from pad
+ string too.
+
+Wed Dec 19 13:57:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (TIMEZONE_VOID): check whether timezone requires zero
+ arguments. [ruby-dev:32631]
+
+Wed Dec 19 13:22:14 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (NKF::_ENCODING): removed.
+
+ * ext/nkf/nkf.c (rb_nkf_kconv): renamed to rb_nkf_convert.
+
+ * ext/nkf/nkf.c (rb_nkf_convert): set encoding.
+
+ * ext/nkf/nkf.c (rb_nkf_guess1): removed.
+
+ * ext/nkf/nkf.c (rb_nkf_guess2): renamed to rb_nkf_guess.
+
+ * ext/nkf/nkf.c (rb_nkf_guess):
+ guess method now returns encoding object.
+
+ * ext/nkf/nkf-utf8/nkf.c: Update to nkf 2.0.8 2007-12-19.
+
+Wed Dec 19 10:52:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_cstr_to_inum): an underscore succeeding after octal
+ prefix is allowed. [ruby-core:14139]
+
+Wed Dec 19 00:09:19 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr_to_inum): wrong radix check. a patch from
+ Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-dev:32628].
+
+ * bignum.c (big2str_find_n1): ditto.
+
+Tue Dec 18 23:53:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): fix for segfault. [ruby-dev:31372]
+
+Tue Dec 18 23:44:32 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/net/http/utils.rb: split TestNetHTTPUtils module from
+ test/net/http/test_http.rb. and start HTTP server in each test case.
+
+Tue Dec 18 23:27:51 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#accept_client):
+ should rescue Errno::EINVAL from TCPServer#accept. this exception
+ might occur if the server socket is not in ready to listen.
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#accept_client):
+ don't call TCPServer#close if the :ShutdownSocketWithoutClose is set.
+
+ * lib/webrick/config.rb (WEBrick::Config::General): add new parameter
+ :ShutdownSocketWithoutClose.
+
+Tue Dec 18 22:51:47 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#shutdown):
+ new method which calls TCPSocket#shutdown of the underlying socket.
+
+Tue Dec 18 22:11:50 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/rss/parser.rb, lib/rss/atom.rb, lib/rss/rss.rb,
+ test/rss/rss-assertions.rb, test/rss/test_atom.rb: use
+ pack/unpack("m") instead of base64 library.
+
+ * lib/webrick/httpproxy.rb: use delete("\n") instead of chomp/chop
+ because the result of pack("m") might be multi-line.
+
+Tue Dec 18 22:12:35 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci, vm.c: rewrite sp manipulation around method/block
+ invocation. [ruby-dev:32547]
+
+Tue Dec 18 22:11:23 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/sspi.rb: use pack/unpack("m") instead of
+ base64 library which was already removed.
+
+Tue Dec 18 21:09:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (invoke_block): merge 2 stack overflow checks.
+
+Tue Dec 18 20:58:35 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insnhelper.ci, insns.def, object.c, vm.c, vm.h:
+ optimize !@, != method invocation.
+
+ * id.c, id.h: ditto.
+
+ * bootstraptest/test_syntax.rb: add tests for above.
+
+Tue Dec 18 18:10:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: add issues.
+
+Tue Dec 18 20:22:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (arg tMATCH arg): call reg_named_capture_assign_gen if regexp
+ literal is used.
+ (reg_named_capture_assign_gen): assign the result of named capture
+ into local variables.
+ [ruby-dev:32588]
+
+ * re.c: document the assignment by named captures.
+
+Tue Dec 18 18:09:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_splice): propagate encoding.
+
+ * string.c (rb_str_subpat_set): ditto.
+
+Tue Dec 18 17:27:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_freeze): preserve frozen state of immediate
+ values in internal hash table, a la generic_ivar.
+
+ * object.c (rb_obj_frozen_p): check immediate values too.
+
+ * variable.c (generic_ivar_set): add frozen check fro immediate
+ values.
+
+Tue Dec 18 17:04:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_str_transcode_bang, rb_str_transcode): set new
+ encoding even if no conversion is done because of 7bit only.
+ [ruby-dev:32591]
+
+Tue Dec 18 15:43:59 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encs, ext/ripper/ripper.c): other options must come
+ before MAKEFLAGS in GNU make.
+
+Tue Dec 18 15:19:55 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_rb.rb: Don't call private fail anymore.
+
+Tue Dec 18 15:17:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encs, ext/ripper/ripper.c): pass MAKEFLAGS.
+
+Tue Dec 18 14:45:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (op_tbl): remove duplication to avoid symbol aliases.
+
+Tue Dec 18 14:39:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_nth): need not to raise out-of-range exception.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_str_aref_len): removed
+ debug print.
+
+Tue Dec 18 14:05:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend: get rid of target expanded as empty for nmake.
+
+Tue Dec 18 07:56:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (rb_obj_public_method): Object#public_method to retrieve
+ public method object.
+
+ * proc.c (rb_mod_public_instance_method): Module#public_instance_method
+ to retrieve public instance method from class / module.
+
+ * proc.c (mnew): visibility check added.
+
+ * eval_error.ci (rb_print_undef): add rb_ prefix.
+
+ * eval_error.ci (rb_print_undef): add visibility in the error
+ message.
+
+Tue Dec 18 05:54:26 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/Env.rb, lib/base64.rb, lib/importenv.rb, lib/eregex.rb: removed.
+
+ * lib/ping.rb, lib/readbytes.rb: removed
+
+Tue Dec 18 02:30:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (BUILTIN_ENCS): removed.
+
+ * common.mk (enc.mk): pass BUILTIN_ENCS from command line.
+
+ * enc/depend: ditto.
+
+ * enc/make_encmake.rb: ditto.
+
+Tue Dec 18 01:46:48 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): need to clear output buffer to avoid
+ broken encoding compatibility check.
+
+Tue Dec 18 01:40:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (depend_rules): inserts ruby to only headers.
+
+Tue Dec 18 01:21:19 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_encode_length): chomp eol style modifiers.
+
+ * parse.y (parser_magic_comment): ditto.
+
+ * parse.y (set_file_encoding): ditto.
+
+Tue Dec 18 01:15:44 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encs): added dependencies.
+
+ * enc/Makefile.in, enc/depend, enc/make_encmake.rb: moved serb code.
+
+ * lib/mkmf.rb (depend_rules): now takes content string, not file name.
+
+ * win32/enc-setup.mak: overrides default target.
+
+Tue Dec 18 00:26:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): raise error if non-Unicode fixed
+ encoding option is specified for regexp literals with \u{}
+ escapes.
+
+ * string.c (rb_str_squeeze_bang): should squeeze multibyte
+ characters as well.
+
+Mon Dec 17 21:41:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/enc-setup.mak: extracts BUILTIN_ENCOBJS.
+
+ * tool/compile_prelude.rb: needs srcdir.
+
+Mon Dec 17 21:24:04 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * common.mk (miniprelude.c): add -I$(srcdir).
+
+Mon Dec 17 20:53:27 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_set_ssl_version):
+ new method OpenSSL::SSL::SSLContext#ssl_version to wrap
+ SSL_CTX_set_ssl_version.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_get_verify_result):
+ new method OpenSSL::SSL::SSLSocket#verify_result to wrap
+ SSL_get_verify_result.
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLContext.build):
+ new method to build OpenSSL::SSL::SSLContext with Hash parameters.
+ this method provides safety default parameters than SSLContext.new.
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL.verify_certificate_identity):
+ new module function: pull out identity verification process
+ from OpenSSL::SSL::SSLSocket#post_connection_check.
+
+Mon Dec 17 18:42:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (scan_once): need no encoding compatibility check.
+ it's done inside of re_reg_search().
+
+ * string.c (rb_str_split_m): ditto.
+
+ * re.c (rb_reg_regsub): ditto.
+
+Mon Dec 17 17:50:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_index): check if substring is broken.
+
+ * string.c (rb_str_rindex): ditto.
+
+ * string.c (rb_str_succ): should carry over.
+
+Mon Dec 17 17:47:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encs): new target to compile external encodings.
+
+ * enc/Makefile.in: became a serb template.
+
+ * enc/make_encmake.rb: creates enc.mk from enc/Makefile.in using serb.
+
+ * lib/mkmf.rb (relative_from): moved from ext/extmk.rb.
+
+ * lib/mkmf.rb ($extmk): true if under to top source directory, not
+ only ext.
+
+ * lib/mkmf.rb (depend_rules): extracted from create_makefile.
+
+ * tool/serb.rb (serb): splitted from tool/compile_prelude.rb.
+
+Mon Dec 17 17:32:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MAKEFILES): removed enc/Makefile.
+
+ * configure.in (EXTERNAL_ENCOBJS, ENCSOS): removed.
+
+ * enc/Makefile.in (BUILTIN_ENCS): includes .c suffix.
+
+ * enc/depend: splitted from Makefile.in.
+
+ * {bcc32,win32,wince}/setup.mak (-encs-): extracts BUILTIN_ENCOBJS.
+
+Mon Dec 17 17:07:53 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_str_asciionly_p): use rb_enc_str_coderange.
+
+Mon Dec 17 16:39:25 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_str_coderange): set ENC_CODERANGE_BROKEN using
+ rb_enc_precise_mbclen.
+ (rb_str_valid_encoding_p): just check coderange is
+ ENC_CODERANGE_BROKEN or not.
+
+Mon Dec 17 16:04:16 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#gets): added second
+ optional argument to specify maximum length limit.
+
+Mon Dec 17 16:02:30 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb, lib/webrick/cgi.rb: Request-Line or
+ header fields should be read with maximum length. [ruby-talk:231745]
+
+Mon Dec 17 14:03:39 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ENC_CODERANGE_VALID): rename from
+ ENC_CODERANGE_8BIT.
+
+ * string.c (rb_enc_str_coderange): follow the renaming.
+
+Mon Dec 17 13:56:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_find): wrong condition fixed.
+
+ * sprintf.c (rb_str_format): check encoding based on result, not
+ the format string.
+
+ * string.c (rb_str_upto): add encoding check.
+
+Mon Dec 17 12:21:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (RUNRUBY): added RUNRUBYOPT.
+
+Mon Dec 17 11:38:59 2007 Tanaka Akira <akr@fsij.org>
+
+ * thread_win32.ci (native_thread_create): initialize
+ th->machine_stack_maxsize as rb_gc_stack_maxsize.
+
+Sun Dec 16 17:07:35 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c (transcode_loop): removed special case (-1)
+ for undefined conversions.
+
+ * transcode_data_iso_8859.c: Changed from character constants
+ ('\xC2') to integer constants (0xC2) for shorter files and
+ better readability; eliminated duplicated tables; changed
+ from -1 offset to actual UNDEF entry (not yet distinguishing
+ UNDEF and ILLEGAL correctly).
+
+ * test/ruby/test_transcode.rb: added a test for UNDEF conversion.
+
+Sun Dec 16 14:51:59 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MAKEFILES): should be enc/Makefile, not GNUmakefile.
+ [ruby-dev:32609]
+
+ * configure.in (BUILTIN_ENCS): removed escapes for OpenBSD.
+
+Sat Dec 15 23:58:46 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/openssl/test_pair.rb (SSLPair#ssl_pair): join the thread, even
+ on an error.
+
+Sat Dec 15 23:50:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/xmlrpc/webrick_testing.rb: join webrick server thread.
+
+Sat Dec 15 22:27:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (BUILTIN_ENCS): splitted command line instead of
+ semicolons for Solaris.
+
+Sat Dec 15 21:38:24 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/timeout.rb: join the background thread to make sure it is dead.
+
+Sat Dec 15 20:20:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (enc/Makefile): add external encoding objects list.
+
+ * common.mk (BUILTIN_ENCOBJS): renamed from ENCOBJS.
+
+ * configure.in (BUILTIN_ENCS): [] needs to be enclosed because of m4.
+
+ * Makefile.in (BUILTIN_ENCOBJS): substituted by autoconf.
+
+ * enc/Makefile.in: new file to compile external encoding sources.
+
+ * encoding.c (rb_enc_find_index): auto-load external encoding objects
+ as "ext/ENCODING_NAME". [ruby-dev:32606]
+
+Sat Dec 15 13:04:30 2007 Tanaka Akira <akr@fsij.org>
+
+ * vm_core.h (rb_thread_t): new member machine_stack_maxsize and
+ machine_register_stack_maxsize.
+
+ * gc.c (rb_gc_stack_maxsize): new global variable for the thread size
+ of the main thread.
+ (STACK_LEVEL_MAX): use machine_stack_maxsize of current thread.
+ (ruby_stack_check): check IA64 register stack.
+ (ruby_set_stack_size): set rb_gc_stack_maxsize.
+ (Init_stack): set rb_gc_stack_maxsize.
+
+ * thread_pthread.ci (native_thread_create): initialize
+ th->machine_stack_maxsize and th->machine_register_stack_maxsize.
+
+ * vm.c (Init_BareVM): initialize th->machine_stack_maxsize and
+ th->machine_register_stack_maxsize.
+
+ * thread_win32.ci (native_thread_create): initialize
+ th->machine_stack_maxsize. not tested. just a guess at all.
+
+ [ruby-dev:32604]
+
+Sat Dec 15 12:58:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_register, rb_enc_replicate, rb_enc_alias): check
+ if already registered.
+
+Sat Dec 15 01:57:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc/options.rb (Options::parse): do not access $KCODE any
+ longer. [ruby-core:14079]
+
+ * lib/irb/init.rb (IRB::IRB.parse_opts): ditto.
+
+ * lib/cgi.rb (CGI::CGI): ditto.
+
+Fri Dec 14 18:18:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * thread_pthread.ci (native_thread_create): twice the stack size.
+ 512KB is not enough to complete test-all on Debian GNU/Linux on
+ IA64.
+
+Fri Dec 14 16:10:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_p): RDoc update. a patch from murphy <murphy AT rubychan.de>.
+ [ruby-core:14010]
+
+Fri Dec 14 16:06:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cmp): encoding aware comparison.
+
+ * string.c (rb_str_casecmp): ditto.
+
+Fri Dec 14 15:25:30 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c (encoding_equal): new function.
+
+ * transcode.c (str_transcode, transcode_dispatch): added two-step
+ conversion logic via UTF-8.
+
+ * transcode.c: some minor formatting fixes
+
+ * transcode_data.h, transcode_data_iso_8859.c: Shortened
+ extremely frequently used macros to shorten file length.
+
+ * test/ruby/test_transcode.rb: Fixed name of test class;
+ added setup method to ensure all necessary encodings exist;
+ split tests into more test methods; added tests; fixed ordering
+ of arguments in assert_equal to have expected result first.
+
+Fri Dec 14 13:47:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ruby.imp): fix for circular dependency. a patch from
+ Yutaka Kanemoto <kinpoco AT gmail.com> in [ruby-dev:32590].
+
+ * regint.h, st.c, ext/json/ext/generator/generator.c: suppress
+ warnings on AIX.
+
+Fri Dec 14 12:36:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_VARTYPE): check if a variable is defined
+ and its type.
+
+ * configure.in (timezone, altzone): check for recent cygwin.
+
+ * missing/strftime.c (strftime): fix for timezone. [ruby-dev:32536]
+
+ * lib/mkmf.rb (try_var): should fail for functions.
+
+ * ext/readline/extconf.rb: should use have_func for functions instead
+ of have_var.
+
+Fri Dec 14 10:25:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/e2mmap.rb (Exception2MessageMapper::E2MM.Raise): $! no
+ longer modifiable in 1.9.
+
+Fri Dec 14 08:17:24 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (rb_protect): restore root_jmpbuf even if proc exits by
+ break such as dbm.delete_if { break }.
+
+Fri Dec 14 02:55:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_nth): direct jump if string is 7bit only. great
+ performance boost for worst case.
+
+ * string.c (str_strlen): direct size if string is 7bit only.
+
+Fri Dec 14 02:29:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): 1st argument (typically the
+ receiver) would have higher priority in encoding detection.
+
+Fri Dec 14 02:05:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_synchronized): should check if initialized.
+ [ruby-dev:32585]
+
+Fri Dec 14 00:54:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): embedded string may override encoding
+ of the regular expression.
+
+ * re.c (rb_reg_initialize): fix encoding of regular expression if
+ embedded string has its own encoding specified.
+
+Thu Dec 13 22:16:46 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): encoding should never fall back
+ to ASCII-8BIT unless both encodings are ASCII-8BIT.
+
+Thu Dec 13 20:31:28 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_shared_replace): make str noembed after free.
+
+Thu Dec 13 20:09:09 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (rb_protect): restore root_jmpbuf to avoid SEGV by
+ 'IO.pipe; [].each.next' with gcc version 3.3.5 (Debian 1:3.3.5-13)
+ on IA64.
+
+Thu Dec 13 17:51:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_split_m): need not to check encoding if regexp
+ is empty.
+
+ * string.c (rb_str_justify): associate encoding of original to the
+ result.
+
+ * string.c (rb_str_chomp_bang): need to check encoding of record
+ separator.
+
+ * string.c (str_gsub): should copy encoding to the result.
+
+ * sprintf.c (rb_str_format): ditto.
+
+ * string.c (rb_str_succ): should not enter infinite loop for
+ non-ASCII, non-alphanumeric character at the bottom.
+
+Thu Dec 13 17:03:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): should swap encoding indexes too.
+
+Thu Dec 13 16:41:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): should not judge compatibility
+ based on rb_enc_asciicompat().
+
+Thu Dec 13 13:09:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/io.h (MakeOpenFile): fptr->enc should be
+ initialized to zero. [ruby-dev:32569]
+
+Thu Dec 13 08:56:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getc): use default external encoding if fptr->enc is
+ not set. [ruby-dev:32565]
+
+ * lib/rubygems/package.rb (Gem::TarReader::Entry::rewind): typo fixed.
+ [ruby-dev:32565]
+
+Thu Dec 13 08:24:16 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): should associate default external encoding.
+
+ * io.c (io_read): should NOT associate default external encoding.
+
+Wed Dec 12 23:22:58 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c, regerror.c, string.c, parse.y, ruby.c, file.c:
+ use capital letter for \xHH notation. [ruby-dev:32511]
+
+Wed Dec 12 22:21:34 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_mode_enc): allow specifying external encoding in
+ open mode, e.g. open(path, "r:utf-8").
+
+Wed Dec 12 21:26:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_method.ci (rb_alias): no need to skip aliasing when new
+ equals to old. [ruby-core:13990]
+
+Wed Dec 12 16:34:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_check_readable): set default external encoding to
+ STDIN.
+
+ * io.c (io_enc_str): associate encoding to output string.
+
+Wed Dec 12 12:44:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (expr): 'not' and '!' should act as conditional
+ expression. [ruby-dev:32548]
+
+Wed Dec 12 12:11:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_regsub): should copy encoding.
+
+ * string.c (rb_str_sub_bang, str_gsub): should check and copy encoding
+ to be replaced.
+
+Tue Dec 11 23:04:17 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): RDoc update. a patch from Gary Wright
+ <radar2002 AT gmail.com>. [ruby-core:13998]
+
+ * pack.c (pack_unpack): ditto.
+
+Tue Dec 11 16:37:47 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_ascget): renamed from rb_enc_get_ascii.
+
+ * include/ruby/encoding.h: follow the renaming.
+
+ * re.c: ditto.
+
+Tue Dec 11 16:19:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, */Makefile.sub (CP, MV): added.
+
+ * common.mk (.y.c): not discard the old target until successfully
+ created.
+
+Tue Dec 11 15:20:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): singleton_method_{added,removed,undefined}
+ hooks should be defined for BasicObject. [ruby-dev:32531]
+
+ * eval.c (Init_eval): method_missing should be defined for all
+ objects; moved to BasicObject.
+
+Tue Dec 11 14:27:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_loop): get rid of SEGV at sequence can not be
+ converted.
+
+ * transcode.c (rb_str_transcode_bang): copy encoding. [ruby-dev:32532]
+
+ * test/ruby/test_transcode.rb: added tests from Martin Duerst <duerst
+ AT it.aoyama.ac.jp>. [ruby-dev:32532]
+
+Tue Dec 11 12:05:51 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_get_ascii): add an argument to provide the
+ length of the returned character.
+
+ * include/ruby/encoding.h (rb_enc_get_ascii): add the argument.
+
+ * re.c (rb_reg_expr_str): modify rb_enc_get_ascii call.
+ (rb_reg_quote): ditto.
+ (rb_reg_regsub): ditto.
+
+Tue Dec 11 09:40:21 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE):
+ parenthesize an argument.
+
+Tue Dec 11 02:23:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_method_missing): RDoc update patch from Hugh Sasse
+ <hgs AT dmu.ac.uk>. [ruby-core:12932]
+
+Tue Dec 11 01:51:34 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP::get): now supports gzip
+ content-encoding. a patch from Hugh Sasse <hgs AT dmu.ac.uk>.
+ [ruby-core:13451]
+
+Tue Dec 11 01:21:21 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (shadowing_lvar_gen): no duplicate error for "_".
+
+Mon Dec 10 22:08:47 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_slice_bang): If an invalid range is given, do
+ not raise an exception but return nil just like slice() does.
+
+Mon Dec 10 21:47:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_transcode): allow non-registered encodings.
+ [ruby-dev:32520]
+
+Mon Dec 10 21:00:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_slice_bang): should return nil if position out
+ of range. a patch from Akinori MUSHA <knu AT iDaemons.org>.
+ [ruby-dev:32518]
+
+Mon Dec 10 19:02:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_match): should calculate offset by converted
+ operand. [ruby-cvs:21416]
+
+Mon Dec 10 18:28:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::REGEXP::PATTERN): typo in REG_NAME
+ regular expression. a patch from Ueda Satoshi
+ <s-ueda AT livedoor.jp>. [ruby-dev:32514]
+
+Mon Dec 10 17:46:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_tmp_new): creates hidden temporary buffer.
+
+ * transcode.c (transcoding): added a pointer to function to flush.
+
+ * transcode.c (transcode_loop): do not use string internal.
+ [ruby-dev:32512]
+
+ * transcode.c (str_transcode): allow Encoding objects.
+
+ * transcode_data.h (BYTE_LOOKUP): use actual struct name.
+
+Mon Dec 10 16:52:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_insert): should not add length in bytes to index in
+ chars.
+
+Mon Dec 10 14:33:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_public_send): rename invoke_method to public_send.
+ it now invokes public method only no matter how it's called.
+
+Mon Dec 10 14:00:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c: new file to provide encoding conversion features.
+ code contributed by Martin Duerst.
+
+Mon Dec 10 13:50:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_search): return byte offset. [ruby-dev:32452]
+
+ * re.c (rb_reg_match, rb_reg_match2, rb_reg_match_m): convert byte
+ offset to char index.
+
+ * string.c (rb_str_index): return byte offset. [ruby-dev:32472]
+
+ * string.c (rb_str_split_m): calculate in byte offset.
+
+Mon Dec 10 09:56:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm1_neq.rb, bm_vm1_not.rb: added.
+
+Mon Dec 10 07:48:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): wrong token was generated. [ruby-dev:32498]
+
+ * object.c (rb_obj_not_match): wrong test.
+
+Mon Dec 10 06:44:47 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_expr_str): use \xHH instead of \OOO.
+
+ * regerror.c (to_ascii): ditto.
+ (onig_snprintf_with_pattern): ditto.
+ (onig_snprintf_with_pattern): ditto.
+
+ * string.c (rb_str_inspect): ditto.
+ (rb_str_dump): ditto.
+
+ * parse.y (parser_yylex): ditto.
+
+ * ruby.c (proc_options): ditto.
+
+ * file.c (rb_f_test): ditto.
+
+ [ruby-dev:32495]
+
+Mon Dec 10 06:41:00 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_names): new method Regexp#names.
+ (rb_reg_named_captures): new method Regexp#named_captures
+ (match_regexp): new method MatchData#regexp.
+ (match_names): new method MatchData#names.
+
+ * lib/pp.rb (MatchData#pretty_print): show names of named captures.
+
+ [ruby-dev:32493]
+
+Mon Dec 10 01:35:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (expr): redefinable not (!) operator.
+
+ * parse.y (arg): ditto.
+
+ * object.c (rb_obj_not): new method "!".
+
+ * object.c (rb_obj_not_equal): new method "!=".
+
+ * object.c (rb_obj_not_match): new method "!~".
+
+Sun Dec 9 22:31:36 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_s_last_match): accept named capture's name.
+
+Sun Dec 9 15:57:53 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (match_backref_number): new function for converting a backref
+ name/number to an integer.
+ (match_offset): use match_backref_number.
+ (match_begin): ditto.
+ (match_end): ditto.
+ (name_to_backref_number): raise IndexError instead of RuntimeError.
+ (match_inspect): show capture index.
+
+Sun Dec 9 14:59:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h (CHECK_STACK_OVERFLOW): reserve frame size.
+ [ruby-dev:32485]
+
+Sun Dec 9 14:38:25 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (rb_thread_mark): use rb_gc_mark_maybe() for
+ VM stack specified by mark_stack_len. [ruby-dev:32462]
+
+ * insnhelper.ci: clear vm stack extended by opt value.
+
+Sun Dec 9 14:08:47 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (FilePathStringValue): defined. similar to
+ FilePathValue but no taint check.
+
+ * file.c (rb_get_path_no_checksafe): implementation of
+ FilePathStringValue.
+ (rb_file_s_basename): use FilePathStringValue.
+ (rb_file_s_dirname): ditto.
+ (rb_file_s_extname): ditto.
+ (rb_file_s_split): ditto.
+ (rb_file_join): ditto.
+
+ * dir.c (file_s_fnmatch): ditto.
+
+Sun Dec 9 12:49:34 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (append_utf8): check unicode range.
+
+Sun Dec 9 12:39:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi.rb (read_multipart): exclude blanks from header values.
+ [ruby-list:44327]
+
+Sun Dec 9 12:18:19 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_get_path): use the original object if to_path method is
+ not defined. [ruby-dev:32473]
+
+ * io.c (rb_f_open): call to_open on non-string objects, instead of
+ to_str. [ruby-dev:32473]
+
+Sun Dec 9 12:12:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (tr_find): returns true if no characters to be removed is
+ specified.
+
+Sun Dec 9 12:03:16 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_magic_comment): delimits with a semicolon.
+
+Sun Dec 9 11:29:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (tr_trans): get rid of segfaults when has multibytes but
+ source sets have no multibytes.
+
+Sun Dec 9 04:01:28 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_mbclen): return 1 if underlying implementation
+ returns a length longer than e-p.
+ (rb_enc_precise_mbclen): return needmore if underlying
+ implementation returns a length longer than e-p.
+
+Sat Dec 8 17:59:40 2007 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (posix_signal): return value.
+
+Sat Dec 8 17:22:16 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/openssl/test_pkcs7.rb: Remove redundant module namespace.
+
+Sat Dec 8 17:07:10 2007 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (proc_options): make rb_raise format as a string literal to
+ avoid warning.
+
+Sat Dec 8 16:18:16 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_check_preprocess): new function for validating regexp
+ fragment.
+
+ * parse.y (regexp): invoke reg_fragment_check.
+ (reg_fragment_check): defined.
+ (reg_fragment_check_gen): defined.
+
+Sat Dec 8 11:06:29 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_mbclen): make it never fail.
+ (rb_enc_nth): don't check the return value of rb_enc_mbclen.
+ (rb_enc_strlen): ditto.
+ (rb_enc_precise_mbclen): return needmore(1) if e <= p.
+ (rb_enc_get_ascii): new function for extracting ASCII character.
+
+ * include/ruby/encoding.h (rb_enc_get_ascii): declared.
+
+ * include/ruby/regex.h (ismbchar): removed.
+
+ * re.c (rb_reg_expr_str): use rb_enc_get_ascii.
+ (unescape_escaped_nonascii): use rb_enc_precise_mbclen to determine
+ the termination of escaped non-ASCII character.
+ (unescape_nonascii): use rb_enc_precise_mbclen.
+ (rb_reg_quote): use rb_enc_get_ascii.
+ (rb_reg_regsub): use rb_enc_get_ascii.
+
+ * string.c (rb_str_reverse) don't check the return value of
+ rb_enc_mbclen.
+ (rb_str_split_m): don't call rb_enc_mbclen with e <= p.
+
+ * parse.y (is_identchar): use ISASCII.
+ (parser_ismbchar): removed.
+ (parser_precise_mbclen): new macro.
+ (parser_isascii): new macro.
+ (parser_tokadd_mbchar): use parser_precise_mbclen to check invalid
+ character precisely.
+ (parser_tokadd_string): use parser_isascii.
+ (parser_yylex): ditto.
+ (is_special_global_name): don't call is_identchar with e <= p.
+ (rb_enc_symname_p): ditto.
+
+ [ruby-dev:32455]
+
+ * ext/tk/sample/tkextlib/vu/canvSticker2.rb: remove coding cookie
+ because the encoding is not UTF-8. [ruby-dev:32475]
+
+Fri Dec 7 20:21:35 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/net/ftptls.rb, ext/openssl/lib/net/telnets.rb:
+ half-finished libraries are discontinued.
+
+Fri Dec 7 15:44:40 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb: use Hash for recursion check as inspect.
+
+Fri Dec 7 15:04:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (flatten): some performance improvements, based on a patch
+ from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-core:13877].
+ [ruby-core:13851]
+
+ * thread.c (rb_exec_recursive): use Hash instead of Array for
+ performance improvement. [ruby-core:13898]
+
+ * thread.c (recursive_pop): use object ID.
+
+Thu Dec 6 19:52:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): typo fixed ("!" -> "|") in the ripper code.
+
+Thu Dec 6 19:48:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): tUPLUS no longer works as identity operation any
+ more. inspired by [ruby-talk:265532].
+
+Thu Dec 6 18:22:11 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_precise_mbclen): new function for mbclen with
+ validation.
+
+ * include/ruby/encoding.h (rb_enc_precise_mbclen): declared.
+ (MBCLEN_CHARFOUND): new macro.
+ (MBCLEN_INVALID): new macro.
+ (MBCLEN_NEEDMORE): new macro.
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): replace mbc_enc_len
+ by precise_mbc_enc_len.
+ (ONIGENC_PRECISE_MBC_ENC_LEN): new macro.
+ (ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND): new macro.
+ (ONIGENC_CONSTRUCT_MBCLEN_INVALID): new macro.
+ (ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE): new macro.
+ (ONIGENC_MBCLEN_CHARFOUND): new macro.
+ (ONIGENC_MBCLEN_INVALID): new macro.
+ (ONIGENC_MBCLEN_NEEDMORE): new macro.
+ (ONIGENC_MBC_ENC_LEN): use ONIGENC_PRECISE_MBC_ENC_LEN.
+
+ * enc/euc_jp.c: validation implemented.
+
+ * enc/sjis.c: ditto.
+
+ * enc/utf8.c: ditto.
+
+ * string.c (rb_str_inspect): use rb_enc_precise_mbclen for invalid
+ encoding.
+ (rb_str_valid_encoding_p): new method String#valid_encoding?.
+
+ * io.c (rb_io_getc): use rb_enc_precise_mbclen.
+
+ [ruby-dev:32438]
+
+Thu Dec 6 01:37:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (i_apply_case_fold): fix for negative character class. a
+ patch from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-core:13884].
+
+Thu Dec 6 01:00:38 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_s_list): support NetBSD/Citrus iconv.
+
+Wed Dec 5 16:18:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_proc_s_new): call initialize. [ruby-core:13824]
+
+ * proc.c (rb_proc_location): return file name and line number where
+ the proc is defined.
+
+ * thread.c (thread_s_new): call initialize. [ruby-core:13835]
+
+ * thread.c (thread_initialize): split initialize method.
+
+Wed Dec 5 15:25:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern3): fix to changing encoding to default, and
+ uncommented r13835, which is rare but not impossible.
+
+Wed Dec 5 15:15:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (step_i, range_step): support non-fixnum steps.
+ [ruby-talk:282100]
+
+Wed Dec 5 14:25:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix typo.
+
+Wed Dec 5 13:41:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yycompile): get rid of tracing while parsing.
+ [ruby-dev:31351]
+
+ * thread.c (ruby_suppress_tracing): added a new parameter, which
+ directs to call func always.
+
+Tue Dec 4 19:56:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_convert): should not set encoding unless
+ the target encoding is supported. [ruby-dev:32451]
+
+Tue Dec 4 17:34:17 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (tojis, tosjis, toeuc, toutf8):
+ set encoding. [ruby-dev:32447]
+
+Tue Dec 4 17:07:25 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/json.rb, lib/json/*: moved to ext/json/lib.
+
+Tue Dec 4 16:34:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_create): achieve target encoding.
+
+ * ext/iconv/iconv.c (iconv_convert, iconv_finish, iconv_iconv,
+ iconv_conv): set result string encoding. [ruby-dev:32446]
+
+ * ext/iconv/iconv.c (iconv_initialize, iconv_s_open): set encoding to
+ Iconv instance.
+
+Tue Dec 4 14:34:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): reverted c flag.
+
+Tue Dec 4 11:23:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_cstr_to_inum): trailing spaces may exist at squeezing
+ preceding 0s. [ruby-core:13873]
+
+Mon Dec 3 11:51:53 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/*: removed or moved to ext/dl/win32.
+
+ * ext/dl/win32/*: new. [ruby-dev:32387]
+
+Sun Dec 2 22:08:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_mbchar): fix for ASCII chars. [ruby-dev:32432]
+
+ * parse.y (parser_parse_string, parser_here_document): prevent false
+ error messages.
+
+Sun Dec 2 20:43:22 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (unescape_escaped_nonascii): fix mbclen argument.
+
+Sun Dec 2 15:47:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_mbchar): check insufficient multibyte char.
+ [ruby-dev:32429]
+
+Sun Dec 2 15:42:16 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, test/rss/test_version.rb: 0.2.1 -> 0.2.2.
+
+ * lib/rss/maker/itunes.rb: fixed new_itunes_category.
+ * lib/rss/maker/taxonomy.rb: new_taxo_topic -> new_topic because
+ of consistency.
+
+ * test/rss/test_maker_itunes.rb, test/rss/test_itunes.rb: removed
+ needless UTF-8 characters.
+
+Sun Dec 2 15:18:37 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_callee_setup_arg): fix error message.
+ [ruby-dev:32430]
+
+Sun Dec 2 09:12:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (regexp): fix /#{}\xa1\xa2/e to be EUC-JP.
+ (reg_fragment_setenc_gen): extracted from reg_compile_gen.
+
+Sun Dec 2 01:39:51 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_uv_to_utf8): declared.
+
+ * re.c (rb_reg_preprocess): new function for dynamic regexp with
+ \u{} such as Regexp.new("\\u{6666}").
+ (rb_reg_prepare_re): preprocess regexp for recompiling.
+ (read_escaped_byte): new function.
+ (unescape_escaped_nonascii): new function.
+ (append_utf8): new function.
+ (unescape_unicode_list): new function.
+ (unescape_unicode_bmp): new function.
+ (unescape_nonascii): new function.
+ (rb_reg_initialize): preprocess regexp.
+
+ * pack.c (rb_uv_to_utf8): renamed from uv_to_utf8.
+
+ * parse.y (STR_NEW3): take func instead of has8 and hasmb.
+ (parser_str_new): use default coderange mechanism except for regexp.
+ (parser_tokadd_utf8): copy regexp source as-is.
+ (parser_read_escape): UTF-8 stuff removed.
+ (parser_tokadd_escape): has8bit and hasmb removed.
+ (parser_tokadd_string): fix 8-bit single byte character with \u.
+ (parser_parse_string): has8bit and hasmb removed.
+ (parser_here_document): has8bit and hasmb removed.
+ (parser_yylex): call parser_tokadd_utf8 instead of read_escape for
+ UTF-8 character.
+
+Wed Dec 2 01:00:07 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb (XMLRPC::Server#server): Improve signal handling so
+ pressing control-c in the controlling terminal or sending SIGTERM stops
+ the XML-RPC server.
+
+Sat Dec 1 23:04:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c: rename primary_encoding -> default_external (encoding).
+
+Sat Dec 1 19:52:57 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (Time#to_datetime): use nsec instead of usec.
+
+ * lib/date.rb (DateTime#to_time): second minute as an argument to
+ Time::utc contains fractional part in rational; hence Time
+ object may keep resolution at most nanosecond.
+
+Sat Dec 1 14:36:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: move fixed bugs.
+
+ * test/ruby/test_sprintf.rb: ditto.
+
+ * test/yaml/test_yaml.rb: ditto.
+
+Sat Dec 1 13:24:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_yield_with_cfunc): fix to passing argc on third
+ parameter of IFUNC. [ruby-dev:32329]
+
+ * enumerator.c: fix to pass exact number of argument.
+
+ * eval.c (rb_yield_values2): added.
+
+ * include/ruby/ruby.h: ditto.
+
+ * bootstraptest/test_knownbug.rb: move a fixed test.
+
+ * bootstraptest/test_block.rb: ditto.
+
+Sat Dec 1 10:45:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_open): use to_open for every non-string object. path
+ object may use method_missing.
+
+Sat Dec 1 09:44:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (concatarray, splatarray): use to_a instead of
+ to_splat.
+
+ * insnhelper.ci (caller_setup_args): ditto.
+
+Sat Dec 1 03:34:32 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (newline_node): always remove NODE_BEGIN.
+
+Fri Nov 30 23:48:07 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (ruby_signal): use SA_SIGINFO if available.
+ [ ruby-Patches-6418 ]
+
+Fri Nov 30 22:52:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (trap_signm): SIGVTALRM no longer used for green
+ thread. [ruby-talk:281318]
+
+ * signal.c (ruby_sig_finalize): do not install SIG_DFL handler if
+ previous handler is sighandler().
+
+Fri Nov 30 21:02:15 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/json.rb, lib/json/add/{core.rb, rails.rb},
+ test/json/test_json_rails.rb: additional files of JSON 1.1.2.
+ [ruby-dev:32405]
+
+Fri Nov 30 19:33:38 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (rb_syck_mktime): avoid segmentation fault.
+ [ruby-core:13735]
+
+Fri Nov 30 19:05:55 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_count): precise argument number check.
+
+ * enum.c (enum_count): return Enumerator if no block given.
+
+Fri Nov 30 16:42:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_take_while): returns Enumerator if no block given.
+
+ * enum.c (enum_drop_while): ditto.
+
+Thu Nov 29 16:59:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): remove unnecessary NODE_BEGIN. [ruby-core:13814]
+
+Thu Nov 29 06:45:48 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_eql): recursive comparison should be based on
+ eql? [ruby-core:13803]
+
+Wed Nov 28 18:08:00 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json, lib/json, test/json: Update to JSON 1.1.2.
+ (RubyForge#15447)
+
+ * math.c: fix typo.
+
+Wed Nov 28 16:29:35 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_invoke_block): should splat args.
+ [ruby-dev:32392]
+
+ * test/ruby/test_yield.rb: add tests for above.
+
+Wed Nov 28 14:43:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): use dldflags instead of DLDFLAGS to
+ get rid of mixing $LDFLAGS and $ARCH_FLAG.
+
+ * lib/mkmf.rb (configuration): ditto.
+
+ * lib/mkmf.rb (create_makefile): support for extensions which has no
+ shared object.
+
+Wed Nov 28 02:42:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big2str_find_n1): removed extraneous element.
+ [ruby-dev:32351], [ruby-dev:32365]
+
+ * bignum.c (big2str_find_n1): returns necessary digits now.
+
+ * sprintf.c (remove_sign_bits): extends sign bit first.
+
+Tue Nov 27 15:53:43 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): "when *[],1" dumps core.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32350]
+
+ * bootstraptest/test_syntax.rb: add a test for above.
+
+Tue Nov 27 15:40:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): "a[*b] += 1" dumps core.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32354]
+
+ * bootstraptest/test_syntax.rb: add a test for above.
+
+Tue Nov 27 12:47:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def: change return value of "defined?"
+ for $&, $1, ... . If such variables are defined,
+ return "global-variable".
+
+ * test/ruby/test_defined.rb: add tests.
+
+ * bootstraptest/test_syntax.rb: fix a test.
+
+Tue Nov 27 11:54:46 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: fix typo.
+
+Tue Nov 27 11:23:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test_beginendblock.rb: add loop to wait signal.
+ [ruby-dev:32332]
+
+Tue Nov 27 11:14:57 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h, encoding.c, re.c, string.c, parse.y:
+ rename ENC_CODERANGE_SINGLE to ENC_CODERANGE_7BIT.
+ rename ENC_CODERANGE_MULTI to ENC_CODERANGE_8BIT.
+ Because single byte 8bit character, such as Shift_JIS 1byte katakana,
+ is represented by ENC_CODERANGE_MULTI even if it is not multi byte.
+
+Tue Nov 27 10:45:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_method_missing): fix stack trace.
+
+ * bootstraptest/test_knownbug.rb: move solved tests.
+
+ * bootstraptest/test_method.rb, test/ruby/test_regexp.rb: ditto.
+
+Tue Nov 27 09:57:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, compile.c: fix to allow dsym for alias/undef.
+ [ruby-dev:32355]
+
+ * bootstraptest/test_method.rb: add tests for above.
+
+Mon Nov 26 23:18:46 2007 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/extserv.rb (initialize, stop_service): synchronize with
+ ExtServManager.
+
+ * test/drb/test_drb.rb (TestDRbEval): ignored.
+
+Mon Nov 26 17:32:16 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (Init_Regexp): new method Regexp#fixed_encoding?
+ [ruby-dev:32361]
+
+Mon Nov 26 13:28:14 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/complex.rb: be able to create Complex(0, -0.0). [ruby-list:44268]
+
+Mon Nov 26 11:24:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_fixed_encoding_p): extracted from rb_reg_prepare_re and
+ rb_reg_s_union.
+ (rb_reg_s_union): refactored.
+
+Mon Nov 26 10:44:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_read_internal, rb_sysopen_internal): remove C99 dependency.
+
+Sun Nov 25 22:21:35 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_enc_str_asciionly_p): declared.
+ (rb_enc_str_asciicompat_p): defined.
+
+ * re.c (rb_reg_initialize_str): use rb_enc_str_asciionly_p.
+ (rb_reg_quote): return ascii-8bit string if the argument is
+ ascii-only to generate encoding generic regexp if possible.
+ (rb_reg_s_union): fix encoding handling. [ruby-dev:32094]
+
+ * string.c (rb_enc_str_asciionly_p): defined.
+
+Sun Nov 25 12:12:03 2007 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Import fast-loading gem_prelude.rb from RubyGems.
+
+ * lib/rubygems*: Import RubyGems r1516.
+
+Sat Nov 24 23:25:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_eval.rb (TestEval::test_instance_eval_cvar):
+ updated not to modify class variable of Object class.
+
+Fri Nov 23 17:34:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * io.c: add rb_read_internal() as blocking function.
+
+Fri Nov 23 17:33:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: fix comment.
+
+Fri Nov 23 17:26:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: move solved tests.
+
+ * bootstraptest/test_io.rb, test_marshal.rb, test_objectspace.rb:
+ ditto.
+
+ * test/ruby/test_integer.rb, test_regexp.rb: ditto.
+
+Fri Nov 23 15:59:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * struct.c (rb_struct_alloc_noinit): new function.
+ (rb_struct_define_without_accessor): add allocator to the arguments.
+
+ * range.c (range_alloc): re-introduced using rb_struct_alloc_noinit.
+
+Fri Nov 23 15:27:43 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (REG_CASESTATE): unused macro removed.
+ (rb_reg_prepare_re): check encoding difference.
+ (rb_reg_initialize): check 8bit byte.
+
+ * parse.y (parser_tokadd_escape): fix has8bit.
+
+ [ruby-dev:32113]
+
+Fri Nov 23 15:16:48 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_f_global_variables): variable names should not
+ duplicate. [ruby-dev:32344]
+
+Fri Nov 23 13:34:08 2007 Tanaka Akira <akr@fsij.org>
+
+ * struct.c (rb_struct_define_without_accessor): new function.
+
+ * range.c (range_alloc): removed.
+ (Init_Range): use rb_struct_define_without_accessor.
+
+ based on [ruby-dev:32327].
+
+Fri Nov 23 11:01:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (match_begin): should return offset by character.
+ [ruby-dev:32331]
+
+ * re.c (match_end): ditto.
+
+ * re.c (rb_reg_search): ditto.
+
+Fri Nov 23 10:44:24 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): defined(method(x)) dumped core. a
+ patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32335]
+
+Wed Nov 21 18:03:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: fix to recycle thread data (VM stack).
+
+ * thread.c: ditto.
+
+ * benchmark/bm_vm3_thread_create_join.rb: add loop count.
+
+Wed Nov 21 18:02:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: add path to trunk/lib if driver runner is
+ in build directory.
+
+Wed Nov 21 16:39:21 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/fileutils/fileasserts.rb (assert_equal_timestamp): new assert
+ to test tv_sec only for filestamp resolution portability.
+ (assert_same_entry): use assert_same_entry for mtime comparison.
+
+Wed Nov 21 14:55:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_permutation): add gc guard codes.
+
+Wed Nov 21 11:16:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insnhelper.ci (vm_search_normal_superclass): rename function.
+
+ * insnhelper.ci (vm_search_superclass): ditto.
+
+ * proc.c (struct METHOD): rename rklass -> rclass.
+
+Wed Nov 21 03:12:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_system): returns nil on execution failure.
+ [ruby-core:13715]
+
+Wed Nov 21 01:04:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (nil_plus): remove unused function. [ruby-core:13737]
+
+Tue Nov 20 21:46:46 2007 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mload): ignore invalid digits in submicro.
+
+Tue Nov 20 20:33:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: rename RFloat#double_value -> float_value.
+
+ * numeric.c, parse.y: ditto.
+
+Tue Nov 20 19:36:21 2007 Koichi Sasada <ko1@atdot.net>
+
+ * gc.h, vm_core.h: decl of rb_gc_save_machine_context()
+ should be at vm_core.h.
+
+ * include/ruby/ruby.h, intern.h: remove type rb_thread_t.
+
+ * include/ruby/intern.h: change rb_unblock_function_t,
+ rb_unblock_function_t.
+
+ * file.c, process.c: apply above changes.
+
+ * thread.c, thread_pthread.ci, thread_win32.ci: ditto.
+
+ * io.c: support blocking open (2). [ruby-core:13614]
+
+Tue Nov 20 17:10:11 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_close_on_exec_p): new method IO#close_on_exec?.
+ (rb_io_set_close_on_exec): new method IO#close_on_exec=.
+ [ruby-dev:32323]
+
+Tue Nov 20 16:24:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (gc_mark_children): obj->as.file.fptr may be 0 for T_FILE.
+
+Tue Nov 20 15:09:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_read_escape): has8bit flag may be set with control
+ escape. [ruby-core:13722]
+
+ * parse.y (parser_prepare): set begging after BOM if exists.
+ [ruby-core:13718]
+
+Tue Nov 20 14:55:37 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Update to RubyGems 0.9.5.
+
+Tue Nov 20 13:00:44 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h win32/win32.c (rb_w32_pipe_exec): use dual fd
+ instead of socketpair when mode is RDWR.
+
+ * io.c (pipe_open): pass &write_fd to rb_w32_pipe_exec().
+
+ * io.c (popen_redirect): define only when HAVE_FORK.
+
+Tue Nov 20 12:12:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): add tied_io_for_writing member.
+
+ * io.c: use tied_io_for_writing for duplex popen.
+
+ * gc.c: mark tied_io_for_writing.
+
+ * common.mk: gc.o depends io.h.
+
+ [ruby-dev:32205]
+
+Tue Nov 20 11:59:33 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/drb/test_drb.rb: rename TestRubyYield to TestDRbRubyYield to
+ avoid name crash with test/ruby/test_yield.rb.
+ TestRuby18Yield is renamed to TestDRbRuby18Yield too.
+
+Tue Nov 20 03:24:42 2007 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/extservm.rb: merged from ruby_1_8 branch.
+
+ * lib/drb/acl.rb: ditto.
+
+ * lib/drb/ssl.rb: ditto.
+
+ * lib/drb/unix.rb: ditto.
+
+ * lib/drb/drb.rb: ditto.
+
+ * lib/drb/observer.rb: ditto.
+
+ * lib/drb/invokemethod.rb: ditto.
+
+ * test/drb/test_drbssl.rb: ditto.
+
+ * test/drb/test_drb.rb: ditto.
+
+ * test/drb/drbtest.rb: ditto.
+
+ * test/drb/test_drbunix.rb: ditto.
+
+Tue Nov 20 00:52:46 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/fileutils/fileasserts.rb (assert_equal_time): show nsec if
+ assertion fails but time.to_s equals.
+ (assert_same_entry): use assert_equal_time.
+
+ * test/fileutils/test_fileutils.rb (test_install): use
+ assert_equal_time.
+
+Mon Nov 19 18:46:49 2007 Tanaka Akira <akr@fsij.org>
+
+ * file.c (utime_internal): fallback utimensat to utimes.
+
+Mon Nov 19 17:51:27 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: check struct timespec, clock_gettime, utimensat,
+ struct stat.st_atim,
+ struct stat.st_atimespec,
+ struct stat.st_atimensec,
+ struct stat.st_mtim,
+ struct stat.st_mtimespec,
+ struct stat.st_mtimensec,
+ struct stat.st_ctim,
+ struct stat.st_ctimespec,
+ struct stat.st_ctimensec.
+
+ * include/ruby/missing.h: provide struct timespec if not available.
+
+ * time.c: support nanosecond-resolution using struct timespec.
+ (time_nsec): new method: Time#nsec and Time#tv_nsec.
+
+ * include/ruby/intern.h: provide rb_time_nano_new.
+
+ * file.c (utime_internal): use utimensat if available.
+ (rb_file_s_utime): refactored.
+ (rb_f_test): use stat_atime, stat_mtime, stat_ctime.
+ (rb_stat_cmp): check tv_nsec.
+ (stat_atimespec): new function.
+ (stat_atime): ditto.
+ (stat_mtimespec): ditto.
+ (stat_mtime): ditto.
+ (stat_ctimespec): ditto.
+ (stat_ctime): ditto.
+ (rb_stat_atime): use stat_atime.
+ (rb_file_s_atime): ditto.
+ (rb_file_atime): ditto.
+ (rb_stat_mtime): use stat_mtime.
+ (rb_file_s_mtime): ditto.
+ (rb_file_mtime): ditto.
+ (rb_file_ctime): use stat_ctime.
+ (rb_file_s_ctime): ditto.
+ (rb_stat_ctime): ditto.
+
+ * variable.c (rb_copy_generic_ivar): clear clone's instance variables
+ if obj has no instance variable.
+
+ * marshal.c (w_object): dump instance variables of generated string
+ for TYPE_USERDEF, even if original object has instance variables.
+
+ * lib/time.rb (Time#xmlschema): use nsec instead of usec.
+
+ [ruby-dev:32306]
+
+Mon Nov 19 17:48:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_class_superclass): should not raise exception for
+ BasicObject. [ruby-Bugs-15668]
+
+Mon Nov 19 16:04:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_permutation): gives all permutations of elements
+ if no argument given. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>.
+ [ruby-dev:32309]
+
+Mon Nov 19 02:44:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): alias and undef accept dsyms as well
+ as literals. [ruby-dev:32308]
+
+Mon Nov 19 02:31:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_method.ci (rb_add_method): no redefinition warning for undef.
+
+Mon Nov 19 01:53:11 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_read_escape): disallow control and meta modifiers
+ for non-ASCII characters. [ruby-core:13685]
+
+Sun Nov 18 20:47:41 2007 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (mark_dump_arg): it may be called after dump_ensure.
+
+Sun Nov 18 18:27:47 2007 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_minus): fix Time.at(2**60+1) - Time.at(2**60).
+
+Sun Nov 18 17:28:49 2007 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_arg): show actual year in 2-3 digits year warning.
+ (time_mdump): show actual year in "year too big to marshal" error.
+
+Sun Nov 18 14:03:44 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_method.ci (rb_alias): do not call hook functions until
+ initialization finishes. [ruby-talk:279538]
+
+Sun Nov 18 09:09:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (String#tr_cpp): make preprocessor identifiers.
+
+Sun Nov 18 05:19:46 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/mkmf.rb (have_struct_member): define HAVE_type_member.
+
+Sat Nov 17 23:51:29 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke): bug fix. [ruby-talk:279100]
+
+Sat Nov 17 23:21:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): should clear parser->tokp as well.
+ [ruby-dev:32250]
+
+ * parse.y: remove NEED_ASSOC that break test_parser_events.
+
+ * parse.y (parser_yylex): should not decrement line numbers at the
+ end of file.
+
+ * file.c (rb_find_file_ext): search .rb files first through in the
+ loadpath.
+
+Fri Nov 16 23:31:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_odd_p): new method added. a patch from Tadashi
+ Saito <shiba AT mail2.accsnet.ne.jp>. [ruby-dev:32305]
+
+ * bignum.c (rb_big_even_p): ditto.
+
+Fri Nov 16 17:41:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (Document-class): moved the simplest example to
+ the top.
+
+ * ext/iconv/iconv.c (iconv_s_iconv): Document-method: needs class
+ prefix for class method. [ruby-core:13542]
+
+ * ext/iconv/iconv.c (iconv_iconv): also instance method needs to be
+ qualified.
+
+Fri Nov 16 16:26:57 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * include/ruby/ruby.h: added some declarations for event hooks.
+
+ * lib/profile.rb: set VM::InstructionSequence.compile_option.
+
+Fri Nov 16 11:16:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb (String#is_binary_data?): use Integer#fdiv.
+
+Fri Nov 16 03:36:01 2007 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: Node#value defined twice.
+
+ * lib/yaml/: several method redefinitions causing warnings.
+
+Fri Nov 16 03:01:00 2007 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/types.rb: Likewise, pass self to YAML::quick_emit.
+
+Fri Nov 16 02:51:59 2007 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb (quick_emit): use combination of object_id and hash to
+ identify repeated object references, since GC will reuse memory of
+ objects during output of YAML. [ruby-Bugs-8548] [ruby-Bugs-3698]
+
+Thu Nov 15 19:49:03 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/curses/extconf.rb: check macro if cannot find func.
+ [ruby-list:44224]
+
+Thu Nov 15 18:04:06 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: fix TMP_RUBY_PREFIX for relative load path
+ environment.
+
+Thu Nov 15 17:28:21 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: absolute path may not start with a slash.
+ pointed by usa.
+
+Thu Nov 15 17:07:54 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: fix first substitution.
+ use constant for prefix.
+ pointed by Richard Kilmer.
+
+Thu Nov 15 14:29:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (prereq): added auto generated sources. [ruby-dev:32280]
+
+Thu Nov 15 12:31:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: use constant for prefix.
+
+Thu Nov 15 12:24:39 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: use simple template system for source
+ code generation.
+
+Thu Nov 15 12:19:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::FileStore::restore): use
+ lockfile for exclusive locks. a patch from <tommy AT tmtm.org>.
+ [ruby-dev:32296]
+
+Thu Nov 15 12:14:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * tool/compile_prelude.rb (c_esc): need to escape closing brace.
+
+Thu Nov 15 11:52:16 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: adjust RbConfig::CONFIG paths relative
+ to the installation path.
+
+Thu Nov 15 11:25:20 2007 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (usage): fix typo on --disable-gems option.
+ pointed by Richard Kilmer.
+
+Wed Nov 14 16:16:17 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/net/http/test_https_proxy.rb
+ (HTTPSProxyTest::test_https_proxy_authentication): initialize
+ local variable 't' first. [ruby-dev:32253]
+
+Wed Nov 14 15:39:24 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/socket/test_socket.rb: update not to use 1.8 assignment to
+ external local variable in the block parameters. [ruby-dev:32251]
+
+ * test/strscan/test_stringscanner.rb: avoid $KCODE, and use
+ String#force_encoding(). [ruby-dev:32251]
+
+Wed Nov 14 14:04:42 2007 Tanaka Akira <akr@fsij.org>
+
+ * common.mk, Makefile.in: rename prelude.c to miniprelude.c.
+ rename ext_prelude.c to prelude.c
+
+ * win32/Makefile.sub: ditto.
+
+ * bcc32/Makefile.sub: ditto.
+
+Wed Nov 14 07:09:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c, compile.c, compile.h, debug.c, debug.h,
+ id.c, insnhelper.h, insns.def, thread.c, thread_pthread.ci,
+ thread_pthread.h, thread_win32.ci, thread_win32.h, vm.h,
+ vm_dump.c, vm_evalbody.ci, vm_opts.h: fix comments and
+ copyright year.
+
+Wed Nov 14 07:07:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * tool/makedocs.rb, template/insnstbl.html: removed.
+
+Wed Nov 14 02:50:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.c): dependency also needs vpath.
+
+ * common.mk (node_name.inc, prelude.c): VPATH in nmake does not
+ work for targets of explicit rules.
+
+Wed Nov 14 02:11:38 2007 Tanaka Akira <akr@fsij.org>
+
+ * missing/isinf.c (isinf): don't define if the macro is defined.
+
+ * configure.in: no need to set ac_cv_func_isinf=yes on non-gcc
+ solaris.
+
+Wed Nov 14 01:34:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (round): fallback definition.
+
+ * numeric.c (flo_divmod, flo_round): use round() always.
+ [ruby-dev:32269]
+
+Wed Nov 14 00:33:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: introduce 2 macros:
+ RFLOAT_VALUE(v), DOUBLE2NUM(dbl).
+ Rename RFloat#value -> RFloat#double_value.
+ Do not touch RFloat#double_value directly.
+
+ * bignum.c, insns.def, marshal.c, math.c, numeric.c, object.c,
+ pack.c, parse.y, process.c, random.c, sprintf.c, string.c,
+ time.c: apply above changes.
+
+ * ext/dl/mkcallback.rb, ext/json/ext/generator/generator.c:
+ ditto.
+
+Wed Nov 14 00:15:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/ytab.sed: get rid of GNU sed feature. a patch from Laurent
+ Sansonetti <laurent.sansonetti AT gmail.com> in [ruby-core:13470].
+
+Tue Nov 13 21:41:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.c), ext/ripper/depend (ripper.c): process after
+ bison with sed. [ruby-dev:32204]
+
+ * ruby.c (proc_options): use yydebug in cmdline_options.
+
+ * ruby.c (process_options): set yydebug flag of parser.
+
+ * parse.y (yydebug): moved into struct parser_params.
+
+ * parse.y (rb_parser_get_yydebug, rb_parser_set_yydebug): parser
+ generic methods.
+
+ * */Makefile.sub (parse.c): moved to common.mk.
+
+ * tool/ytab.sed: comment out yydebug definition, and substitute
+ yyerror with parser_yyerror.
+
+Tue Nov 13 16:33:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flodivmod): work around for infinity.
+
+ * numeric.c (flo_divmod): work around for platforms have no round().
+ [ruby-dev:32247]
+
+Tue Nov 13 15:26:33 2007 Tanaka Akira <akr@fsij.org>
+
+ * lex.c.blt: moved from lex.c.
+
+ * lex.c.src: copied from keywords. This is the source of lex.c.blt.
+
+ * Makefile.in (lex.c): use lex.c.blt if keywords is same as lex.c.src.
+
+ * win32/Makefile.sub (lex.c): re-introduce copy rule.
+
+ * bcc32/Makefile.sub (lex.c): ditto.
+
+ * wince/Makefile.sub (lex.c): ditto.
+
+Tue Nov 13 15:21:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_specialized_instruction): check argc.
+
+Tue Nov 13 14:44:32 2007 why the lucky stiff <why@ruby-lang.org>
+
+ * test/yaml/test_yaml.rb: fixed the failing YAML Struct test
+ at ko1's request.
+
+Tue Nov 13 02:57:04 2007 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
+
+ * numeric.c (flo_divmod): round to the nearest integer.
+ [ ruby-Bugs-14540 ]
+
+Tue Nov 13 00:36:16 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb: fixed tests for set_trace_func.
+
+Mon Nov 12 19:47:29 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (call_trace_proc): should return value.
+
+Mon Nov 12 19:45:18 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub (miniruby): use $(COMMONOBJS) and $(DMYEXT)
+ instead of $(LIBRUBY_A).
+
+Mon Nov 12 18:32:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub (MINIOBJS): added prelude.$(OBJEXT).
+
+Mon Nov 12 17:13:23 2007 Tanaka Akira <akr@fsij.org>
+
+ * Makefile.in, common.mk: add prelude.o to MINIOBJS.
+
+Mon Nov 12 16:52:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): rdoc about srcprefix. a patch from
+ Daniel Berger <djberg96 AT gmail.com> in [ruby-core:13378].
+
+Mon Nov 12 16:48:09 2007 Tanaka Akira <akr@fsij.org>
+
+ * Makefile.in, common.mk: add ext_prelude.o to OBJS.
+
+Mon Nov 12 13:57:39 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (MINIDLNOBJS): removed.
+ (MINIOBJS): set to dln.o if dmydln.o is not used.
+
+ * Makefile.in (miniruby): use MINIOBJS instead of MINIDLNOBJS.
+
+Mon Nov 12 13:53:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): handle stringified
+ symbols properly using ruby-forward-string.
+
+Mon Nov 12 12:17:59 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (MINIDLNOBJS): defined.
+
+ * Makefile.in (miniruby): use MINIDLNOBJS and COMMONOBJS instead of
+ MINIOBJS and OBJS to avoid linking both dmydln.o and dln.o.
+
+Sun Nov 11 20:32:45 2007 Tanaka Akira <akr@fsij.org>
+
+ * {win32,wince,bcc32}/Makefile.sub: delete lex.c rule.
+
+Sun Nov 11 19:40:52 2007 Tanaka Akira <akr@fsij.org>
+
+ * Makefile.in (lex.c): simplified.
+
+Sun Nov 11 18:31:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * Makefile.in (lex.c): touch lex.c if gperf failed but lex.c exists.
+ Although this may cause non-updated lex.c,
+ svn co may generate keywords newer than lex.c especially on
+ a file system which can record fractional mtime such as XFS.
+
+Sun Nov 11 17:32:46 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * insnhelper.ci (vm_call_method): pass mn->nd_clss to
+ vm_call_cfunc() instead of klass.
+
+ * vm.c (rb_thread_method_id_and_klass): traverse parent_iseq.
+
+ * thread.c (call_trace_proc): use rb_thread_method_id_and_klass().
+
+Sun Nov 11 16:54:25 2007 Tanaka Akira <akr@fsij.org>
+
+ * lex.c: renamed from lex.c.blt.
+
+ * Makefile.in (lex.c): use find command to check mtime.
+
+Sun Nov 11 05:34:13 2007 Eric Hodel <drbrain@segment7.net>
+
+ * bin/gem: Add forgotten gem command.
+
+Sat Nov 10 23:50:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (tr_trans): cast to unsigned char after dereference
+ a pointer to a char to avoid SEGV with "\377".tr("a", "b").
+ on FreeBSD/amd64.
+
+Sat Nov 10 23:08:53 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in, common.mk, Makefile.in: don't generate
+ libminiruby-static.a.
+
+Sat Nov 10 19:46:54 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in, common.mk, Makefile.in: generate libminiruby-static.a
+ which contains prelude.o for miniruby.
+
+Sat Nov 10 18:10:07 2007 Tanaka Akira <akr@fsij.org>
+
+ * gem_prelude.rb: new file for gem libraries. currently empty.
+
+ * common.mk: generate ext_prelude.c by prelude.rb and gem_prelude.rb.
+ ruby (not miniruby) is linked with ext_prelude.o instead of
+ prelude.o.
+
+ * inits.c (rb_call_inits): don't call Init_prelude.
+
+ * ruby.c: support --disable-gems option.
+ (ruby_init_gems): new function to define Gem::Enable and
+ invoke Init_prelude.
+ (process_options): call ruby_init_gems just after
+ ruby_init_loadpath.
+
+ * tool/compile_prelude.rb: support multiple files.
+
+Sat Nov 10 17:27:55 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * thread.c (call_trace_proc): don't call ID2SYM() for ID_ALLOCATOR
+ to avoid SEGV.
+
+Sat Nov 10 16:37:07 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems revision 1493.
+
+ * lib/rubygems.rb: ditto.
+
+ * lib/ubygems.rb: ditto.
+
+ * lib/rbconfig/datadir.rb: ditto.
+
+ * test/rubygems: ditto.
+
+Sat Nov 10 16:34:21 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/soap/property.rb: Don't override Enumerable#inject for 1.9.
+
+Sat Nov 10 14:43:30 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * parse.y: use ASCII encoding for string literals that are
+ 7-bit clean, fixing regression from my previous patch
+
+Sat Nov 10 13:18:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc32,win32}/Makefile.sub: vendor_ruby support.
+
+Fri Nov 9 23:33:16 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_nextc): added single line read forward buffer.
+
+ * parse.y (parser_yylex): adjust line number for fluent interface.
+
+Fri Nov 9 22:04:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.h (FRAME_MAGIC_MASK_BITS): bits of FRAME_MAGIC_MASK.
+
+ * insnhelper.ci (vm_call_cfunc, vm_cfunc_flags): use shift operations.
+
+Fri Nov 9 21:46:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (eval): should be volatile value for GC.
+
+Fri Nov 9 17:48:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (locale_encoding): guesstimate encoding from environment
+ variables. [ruby-core:13315]
+
+ * ruby.c (process_options): set primary encoding from environment.
+
+Fri Nov 9 16:51:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_each_byte): should update rbuf_off and rbuf_len for
+ each iteration. [ruby-dev:31659][ruby-dev:32192]
+
+ * variable.c (rb_cvar_set): cvar assignment obey same rule to cvar
+ reference. [ruby-dev:32192]
+
+Fri Nov 9 15:52:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_check_encoding, rb_set_primary_encoding): ENCODING
+ is no longer in FL_USERS flags.
+
+Fri Nov 9 15:20:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_squeeze_bang): initialize squeezing table if no
+ arguments given.
+
+Fri Nov 9 13:57:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (each_with_index_i): use rb_yield_values() for
+ compatibility with Enumerator#with_index(). a patch from Yusuke
+ ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32195]
+
+Fri Nov 9 13:45:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (TestIterator::IterTest::each):
+ #each_pair is now alias to #each. [ruby-dev:32192]
+
+ * test/ruby/test_iterator.rb (TestIterator::test_assoc_yield):
+ ditto
+
+Fri Nov 9 12:56:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_load.c (loaded_feature_path): check with type of given feature.
+
+Fri Nov 9 12:43:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_basicinstructions.rb: updated for new class
+ behavior. [ruby-dev:32192]
+
+ * encoding.c (enc_name): Encoding should not rely on ENCODING in
+ the FL_USERS flags.
+
+ * encoding.c (rb_enc_from_encoding): do not call rb_enc_associate
+ for encoding itself.
+
+ * encoding.c (enc_register_at): ditto.
+
+ * marshal.c (r_ivar): do not set real instance variable for
+ encoding data associated.
+
+Fri Nov 9 10:43:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (send_internal): use self in the previous frame to check for
+ protected methods. [ruby-core:13254]
+
+ * insnhelper.ci (vm_call_method): send! method has gone.
+
+Fri Nov 9 10:38:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * marshal.c (w_object): should be SPECIAL_CONST_P() instead of
+ IMMEDIATE_P().
+
+Fri Nov 9 10:29:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_invoke_method): check if invoked in function style.
+ [ruby-core:13245]
+
+ * insnhelper.ci (vm_call_cfunc, vm_cfunc_flags): stores and returns VM
+ calling flags.
+
+ * vm.c (rb_vm_cfunc_funcall_p): returns if the current method is
+ invoked in function style.
+
+Fri Nov 9 10:10:21 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: add rb_context_t#type.
+
+Fri Nov 9 10:05:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (set_arg0): fix breaking environ bugs.
+
+Fri Nov 9 07:26:04 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c: update MT URL.[ruby-core:13305].
+
+Thu Nov 8 17:09:55 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * object.c: improve docs for Object.tap
+
+ * ChangeLog: fix bogus dates on my previous entries
+
+Thu Nov 8 15:13:56 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * parse.y: fix segfault with \x escapes in regexps
+ delete unused #if 0 code regions from previous patch
+
+Thu Nov 8 12:12:10 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_read_escape): remove C99/gcc-ism.
+
+Thu Nov 8 07:54:22 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * parse.y: patch, based on Nobu's, work to support \u escapes
+ also modifications for better coderange detection
+
+ * test/ruby/test_unicode_escapes.rb: test cases
+
+ * test/ruby/test_mixed_unicode_escapes.rb: mixed encoding test cases
+
+Thu Nov 8 07:14:37 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * parse.y (rb_intern3): commented out broken code that prevented
+ correct interning of multi-byte symbols. Without this patch
+ :x==:x is false when x is a multi-byte character.
+
+Thu Nov 8 07:04:31 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * string.c (tr_setup_table, tr_trans): fix test failures
+ in test/ruby/test_string.rb
+
+Wed Nov 7 15:07:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_each_with_index): make different arrays at each
+ iteration. [ruby-dev:32181]
+
+Wed Nov 7 05:17:24 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * eval.c: fix typo in invoke_method documentation
+
+Wed Nov 7 03:52:26 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_product): core dumped with non array arguments.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32180]
+
+Wed Nov 7 03:32:38 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/encodings/SHIFT-JIS.rb (REXML::Encoding): place -x for
+ nkf conversion. a patch from <moonwolf AT moonwolf.com>.
+ [ruby-dev:32183]
+
+Wed Nov 7 02:59:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_each_index): should return meaningful value.
+
+Tue Nov 6 16:37:47 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_load.c (loaded_feature_path): need to expand relative paths.
+
+ * eval_load.c (rb_feature_p): check if the feature is loading with
+ load path. [ruby-dev:31932]
+
+ * eval_load.c (load_lock): check the result of barrier waiting.
+
+ * thread.c (rb_barrier_wait): check if owned by the current thread.
+
+ * thread.c (rb_barrier_release): ditto.
+
+Mon Nov 5 08:01:22 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): move #send to Kernel module from BasicObject.
+
+Mon Nov 5 05:17:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Switch::summarize): fix for long form
+ option with very long argument. a patch from Kobayashi Noritada
+ <nori1 AT dolphin.c.u-tokyo.ac.jp> in [ruby-list:44179].
+
+Mon Nov 5 01:20:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (call_args): remove "parenthesize argument(s) for future
+ version" warning. when I added this warning, I had a plan to
+ reimplement the parser that is simpler than the current one.
+ since we abandoned the plan, warning no longer required.
+
+Mon Nov 5 01:02:56 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTPHeader#initialize): provide default
+ User-Agent to fix 500 error on some corrupted HTTP servers.
+ [ruby-core:13135]
+
+Mon Nov 5 00:32:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_send): allow send/__send__ to call methods of all
+ visibility again. we no longer provide __send, __send!.
+
+ * eval.c (rb_invoke_method): new method to honor private
+ visibility. if it's invoked in a function call style, it calls
+ private methods as well (previous 1.9 send behavior).
+
+Mon Nov 5 00:24:24 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: vendor_ruby support.
+
+ * configure.in (RUBY_LIB): duplicated.
+
+Mon Nov 5 00:01:33 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_quote): quote \v as well.
+
+Sun Nov 4 23:51:59 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_initialize_m): use StringValuePtr instead of
+ StringValueCStr because \0 exists when Regexp.new("\0").
+
+Sun Nov 4 08:11:19 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (count_objects): count TOTAL.
+
+Sun Nov 4 03:58:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_setup_table): use C array for characters that fit
+ in a byte to gain performance.
+
+ * string.c (rb_str_delete_bang): ditto.
+
+ * string.c (rb_str_squeeze_bang): ditto.
+
+ * string.c (rb_str_count): ditto.
+
+ * string.c (tr_trans): ditto.
+
+Sun Nov 4 00:06:40 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (count_objects): ObjectSpace.count_objects implemented.
+ [ruby-core:12301]
+
+Sat Nov 3 22:49:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_each_pair): make Hash#each to be alias to
+ Hash#each_pair for compatibility and clarity.
+
+ * hash.c (env_each_pair): ditto.
+
+Sat Nov 3 22:41:05 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: --with-vendor-hdrdir implemented.
+
+ * lib/mkmf.rb: check --vendor argument.
+
+ * README.EXT: explain --vendor option for extconf.rb
+
+ * README.EXT.ja: ditto.
+
+Sat Nov 3 20:30:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: --with-vendordir implemented.
+
+ * mkconfig.rb: add config to vendorlibdir and vendorarchdir.
+
+ * instruby.rb: make vendor library directories.
+
+ * ruby.c: insert vendor library directories into load path.
+
+Fri Nov 2 20:55:49 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/content.rb, lib/rss/content/, lib/rss/maker/content.rb,
+ test/rss/test_content.rb, test/rss/test_maker_content.rb,
+ test/rss/rss-testcase.rb (RSS::TestCase): supported
+ content:encoded with RSS 2.0.
+ Suggested by Sam Lown. Thanks.
+
+Fri Nov 2 20:47:04 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, test/rss/test_version.rb: 0.2.0 -> 0.2.1.
+
+Thu Nov 1 21:56:45 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (Init_Exception): make NameError to be subclass of
+ StandardError again.
+
+ * error.c (Init_Exception): make SecurityError to be subclass of
+ Exception, since it's too important to be handled implicitly.
+
+Thu Nov 1 14:51:39 2007 David Flanagan <davidflanagan@ruby-lang.org>
+ * enum.c (take_while_i, drop_while_i) add RTEST to handle nil return
+
+Thu Nov 1 02:12:50 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (prereq): update the path of prelude.c.
+
+ * common.mk (prelude.c): rollback a part of r13675, because it is not
+ documented and causes build error.
+
+Thu Nov 1 01:52:23 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enum.c (enum_drop): fix typo.
+
+Thu Nov 1 01:51:01 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_core.h (ruby_current_thread): RUBY_EXTERN'ed for probeprofiler.
+
+Thu Nov 1 00:46:30 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat, setup.mak: now can recognize OS even if
+ the ``--target'' option of configure is omitted.
+
+ * win32/README.win32: update the descriptions about compiler.
+
+Wed Oct 31 03:13:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_take_while): separate with-block form.
+
+ * enum.c (drop_while_i): ditto.
+
+ * enum.c (enum_butfirst): abandon butfirst method. reverted.
+
+Tue Oct 30 10:03:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_butfirst): add a new method to iterates over
+ elements but first n. RDoc need to be updated.
+
+ * enumerator.c (Init_Enumerator): remove unnecessary symbol
+ initialization.
+
+Mon Oct 29 18:42:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (bvar): block-local variable can shadow outer variable.
+ [ruby-core:13036]
+
+Mon Oct 29 17:58:16 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_substr): performance improvement. [ruby-dev:31806]
+
+Mon Oct 29 17:20:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_replicate): new function to replicate encoding.
+
+ * encoding.c (enc_based_encoding): Encoding#base_encoding returns
+ based encoding of replica.
+
+Mon Oct 29 17:18:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): ASCII encoding is compatible with
+ ASCII-compatible encoding, even for non-string objects.
+
+Sun Oct 28 21:50:02 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: :redirect option implemented to disable redirects.
+ (OpenURI::HTTPRedirect): new exception class for redirection.
+
+Fri Oct 26 17:38:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (int_chr): take an optional encoding parameter.
+ [ruby-core:12816]
+
+Fri Oct 26 17:14:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_pow): returns 1.0 for 0**0.0.
+
+ * numeric.c (fix_pow): returns infinity for 0**-1. [ruby-dev:32084]
+
+Fri Oct 26 15:00:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-{case,label}-indent): adjust for
+ labels inside switch block.
+
+Fri Oct 26 05:48:57 2007 David Flanagan <davidflanagan@ruby-lang.org>
+ * array.c: raise IndexError for negative length in rb_ary_fill
+
+Wed Oct 25 07:12:03 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/net/telnet.rb (Net::Telnet#login): Allowing "passphrase" in
+ addition to "password" for Telnet login prompts. [ruby-Bugs-10746]
+
+Wed Oct 25 06:34:11 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/net/telnet.rb (Net::Telnet#login): Making the password prompt
+ pattern case insensitive. [ruby-Bugs-10746]
+
+Fri Oct 26 04:21:36 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/pop.rb (Net::POP3::do_start): type fixed. a patch from
+ Dan Zwell <dzwell AT zwell.net> in [ruby-core:12941].
+
+Fri Oct 26 01:48:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_assoc): check and convert inner arrays (assocs)
+ using #to_ary.
+
+ * hash.c (rb_hash_s_create): check and convert argument hash
+ using #to_hash.
+
+ * hash.c (rb_hash_s_create): Hash#[] now takes assocs as source of
+ hash conversion.
+
+Thu Oct 25 16:46:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): dot at the head of the line denote line
+ continuation from previous one to support fluent interface.
+ [experimental]
+
+ * misc/ruby-mode.el (ruby-calculate-indent): support fluent dot.
+
+Thu Oct 25 14:19:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_tell, rb_io_seek): check errno too. [ruby-dev:32093]
+
+Thu Oct 25 13:59:53 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * parse.y (parser_tokspace): increment tokidx
+ fixes test failure at [test/ruby/test_stringchar.rb:72]
+
+Thu Oct 25 09:49:49 2007 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri.rb, lib/uri/ldaps.rb: added LDAPS
+ scheme. [ruby-dev:31896]
+
+Wed Oct 25 06:23:14 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/parser.rb (XMLRPC::Convert::dateTime): Fixing a bug that
+ caused time zone conversion to fail for some ISO 8601 date formats.
+ [ruby-Bugs-12677]
+
+Wed Oct 25 04:59:28 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client#do_rpc): Explicitly start
+ the HTTP connection to support keepalive requests. [ruby-Bugs-9353]
+
+Wed Oct 25 04:46:53 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client#do_rpc): Improving the error
+ message for Content-Type check failures. [ruby-core:12163]
+
+Wed Oct 25 03:45:08 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/utils.rb (XMLRPC::ParseContentType#parse_content_type):
+ Making Content-Type checks case insensitive. [ruby-Bugs-3367]
+
+Wed Oct 24 17:09:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokspace): make space in token buffer.
+
+ * parse.y (parser_yylex): fix encoding of single character literal.
+
+Tue Oct 23 13:44:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (call_args2): nd_head of NODE_BLOCK_PASS should be a list.
+ [ruby-core:12850]
+
+Tue Oct 23 10:42:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): encoding set by command line option takes
+ priority over the encoding in the source, as the primary encoding.
+
+Mon Oct 22 19:24:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): allow space after -E (encoding) option.
+
+Mon Oct 22 11:03:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_check_encoding): returns index now.
+
+ * encoding.c (rb_enc_compatible): check if two objects have compatible
+ encodings.
+
+ * encoding.c (enc_compatible_p): added Encoding.compatible?.
+
+ * include/ruby/encoding.h (rb_enc_compatible): prototype.
+
+Sun Oct 21 18:29:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_default, rb_enc_primary): return pointers to
+ rb_encoding of default and primary respectively. [ruby-core:12795]
+
+ * encoding.c (set_primary_encoding): removed primary_encoding setter.
+
+Sat Oct 20 13:17:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_cycle): hide temporary array from ObjectSpace.
+ [ruby-core:12762]
+
+Sat Oct 20 11:49:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_get_path): returns frozen string.
+
+ * file.c (rb_file_s_chown, rb_file_s_lchown): use uid_t and gid_t.
+
+Fri Oct 19 20:08:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_id_encoding): returns ID "encoding".
+
+ * marshal.c (w_encoding): dump encoding name.
+
+ * marshal.c (r_ivar): load encoding.
+
+Fri Oct 19 16:41:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_regx_options, reg_compile_gen): relaxened encoding
+ matching rule.
+
+ * re.c (rb_reg_initialize): always set encoding of Regexp.
+
+ * re.c (rb_reg_initialize_str): fix encoding for non 7bit-clean
+ strings.
+
+ * re.c (rb_reg_initialize_m): use ascii encoding for 'n' option.
+
+Fri Oct 19 11:09:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): set primary encoding from the parser
+ always. [ruby-core:12758]
+
+ * ruby.c (load_file): should not discard the parser parameter.
+
+Fri Oct 19 10:55:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_last): removed unused variables.
+
+Thu Oct 18 17:08:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_find_index): update RDoc. a patch from David Flanagan
+ <david AT davidflanagan.com> in [ruby-core:12710].
+
+ * enum.c (enum_take, enum_drop): ditto.
+
+ * enum.c (enum_cycle): should not cause infinite loop for empty
+ arrays. [ruby-core:12710]
+
+ * range.c (Init_Range): typo fixed.
+
+Thu Oct 18 16:39:34 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/source.rb (REXML::SourceFactory::SourceFactory): more
+ duck typed. better performance on JRuby.
+ http://headius.blogspot.com/2007/10/another-performance-discovery-rexml.html
+
+Thu Oct 18 09:33:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_first): takes first n element if argument is
+ given. [ruby-core:12697]
+
+ * range.c (range_last): returns last n elements if argument is
+ given.
+
+ * array.c (rb_ary_subseq, rb_ary_last): export.
+
+Wed Oct 17 17:39:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): fixed reversed condition. [ruby-core:12722]
+
+Wed Oct 17 13:54:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_s_union): the last check was not complete.
+
+Wed Oct 17 11:30:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_from_encoding, rb_enc_register): associate index
+ to self.
+
+ * encoding.c (enc_capable): Encoding objects are encoding capable.
+
+ * re.c (rb_reg_s_union): check if encoding matching by exact encoding
+ objects.
+
+Wed Oct 17 06:18:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_alias, rb_enc_find_index): changed
+ enc_table_alias to a name-to-index hash.
+
+ * encoding.c (rb_enc_init): use upper case names for aliases to use as
+ constant names.
+
+ * encoding.c (enc_find): allow symbols.
+
+ * encoding.c (Init_Encoding): define encoding constants.
+
+ * st.c (strcasehash): fix wrong code range condition.
+
+Wed Oct 17 05:07:18 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_primary_encoding): added Encoding.primary_encoding.
+
+ * parse.y (rb_parser_encoding): added.
+
+ * ruby.c (proc_options): added -E and --encoding options.
+
+ * ruby.c (process_options): set primary encoding from command line
+ option if set, or source encoding.
+
+ * include/ruby/encoding.h (rb_enc_from_encoding,
+ rb_get_primary_encoding, rb_set_primary_encoding): prototypes.
+
+ * include/ruby/node.h (rb_parser_encoding): prototype.
+
+Wed Oct 17 03:37:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_desc): set encoding.
+
+ * re.c (rb_reg_s_union): check encodings.
+
+ * enc/utf8.c (utf8_code_to_mbclen): 0xfe and 0xff are valid Unicode to
+ be encoded to 2bytes in UTF-8. [ruby-core:12700]
+
+Wed Oct 17 02:50:49 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_ord): use encoding.
+
+Wed Oct 17 01:57:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): allow binary encoding option.
+ [ruby-dev:32083]
+
+Tue Oct 16 19:48:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_s_union): check for encoding of original object.
+
+Tue Oct 16 18:28:51 2007 Tanaka Akira <akr@fsij.org>
+
+ * debug.c: use enum for constants for gdb if possible.
+
+Tue Oct 16 18:20:10 2007 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c, debug.c: move debug enum and constants to debug.c.
+
+Tue Oct 16 18:16:15 2007 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (RUBY_ENCODING_SHIFT): added as enum.
+
+ * .gdbinit (rp): show encoding and coderange for strings.
+
+Tue Oct 16 14:48:38 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_regx_options): check if regexp encoding option
+ matches to current encoding.
+
+ * re.c (char_to_option, rb_char_to_option_kcode): 'n' is not kcode
+ option now.
+
+ * re.c (rb_reg_to_s, rb_reg_error_desc): copy encoding rather than
+ append as an option.
+
+ * re.c (make_regexp, rb_reg_prepare_re): use encoding of Regexp and
+ String instead of kcode.
+
+ * re.c (rb_reg_initialize): set fixed option if none is set.
+
+ * re.c (rb_reg_regcomp): ditto.
+
+ * re.c (rb_reg_equal): check if encodings are equal.
+
+ * re.c (rb_reg_initialize_m): encoding option is obsolete.
+
+ * re.c (rb_kcode, rb_get_kcode, rb_set_kcode): removed.
+
+ * re.c (Init_Regexp): removed Regexp#kcode method.
+
+ * ruby.c (proc_options): allow long encoding name.
+
+Tue Oct 16 14:03:09 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_s_union): encoding of all regexp objects should
+ match. [ruby-dev:32076]
+
+Tue Oct 16 13:49:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (enc_to_s): rename function.
+
+Tue Oct 16 13:25:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_new4): should copy encoding. a patch from NARUSE,
+ Yui <naruse AT airemix.com>. [ruby-dev:32076]
+
+Tue Oct 16 01:31:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): RDoc update. a patch from David Flanagan
+ <david AT davidflanagan.com> in [ruby-core:12710].
+
+Tue Oct 16 01:25:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): define #to_s to show encoding name
+ in to_s representation as well as #inspect.
+
+Mon Oct 15 13:24:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_round): should be number but not rounding factor.
+ [ruby-dev:32060]
+
+Mon Oct 15 11:45:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_bytes0): refined length check. [ruby-dev:32059]
+
+Mon Oct 15 10:24:19 2007 Tanaka Akira <akr@fsij.org>
+
+ * process.c (pst_to_s): returns a string such as "pid 10220 exit 1"
+ instead of "256". [ruby-dev:32053]
+ (pst_inspect): change format
+ "#<Process::Status: pid=10220,exited(1)>" to
+ "#<Process::Status: pid 10220 exit 1>".
+
+Mon Oct 15 09:58:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_bytes0): check if source has enough data.
+ [ruby-dev:32054]
+
+Mon Oct 15 01:15:09 2007 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (s_accept_nonblock): make accepted fd
+ nonblocking. [ruby-talk:274079]
+
+Sun Oct 14 17:31:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_obj_encoding): rdoc update. a patch from David
+ Flanagan <david AT davidflanagan.com>. [ruby-core:12664]
+
+ * encoding.c (enc_dump, enc_load): marshaling feature. a patch from
+ David Flanagan. [ruby-core:12665]
+
+ * encoding.c (Init_Encoding): undefine allocator of Encoding.
+ [ruby-core:12665], [ruby-core:12666]
+
+ * test/ruby/test_encoding.rb: tests for Encoding from David Flanagan
+ [ruby-core:12665]
+
+Sun Oct 14 11:09:09 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (PP::PPMethods#pp_hash): don't sort keys because hash is
+ ordered.
+ (ENV.pretty_print): call pp_hash with sorted hash.
+
+Sun Oct 14 04:08:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (AC_SYS_LARGEFILE): keep results also in command
+ options, to vail out of mismatch. [ruby-list:44114]
+
+ * mkconfig.rb, lib/mkmf.rb (configuration): add DEFS.
+
+Sun Oct 14 03:55:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/mkexports.rb: deal with __fastcall name decorations.
+ [ruby-list:44111]
+
+Sun Oct 14 02:20:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_cEncoding): new Encoding class.
+
+ * encoding.c (rb_to_encoding, rb_to_encoding_index): helper functions.
+
+ * encoding.c (rb_obj_encoding): return Encoding object now.
+
+ * gc.c (garbage_collect): mark Encoding objects.
+
+ * inits.c (rb_call_inits): call Init_Encoding.
+
+ * string.c (rb_str_force_encoding): accept Encoding object as well as
+ encoding name.
+
+ * include/ruby/encoding.h (rb_to_encoding_index, rb_to_encoding):
+ prototypes.
+
+Sun Oct 14 01:03:30 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI.open_http): fix :ssl_ca_cert option.
+
+Sat Oct 13 21:23:21 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (foletype_s_ole_classes,
+ foletype_s_typelibs): refactoring.
+
+ * test/win32ole/test_win32ole_type.rb: add some test.
+
+ * ext/win32ole/win32ole.c (Init_win32ole): change method name
+ WIN32OLE_TYPELIB.ole_types from WIN32OLE_TYPELIB.ole_classes.
+
+ * test/win32ole/test_win32ole_typelib.rb: ditto.
+
+ * test/win32ole/test_folderitem2_invokeverb.rb: check create
+ shortcut string more strictly (This test is invoked in Japanese
+ Windows environment).
+
+Sat Oct 13 09:11:58 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (set_file_encoding): case-insensitive search, a patch from
+ David Flanagan <david AT davidflanagan.com> [ruby-core:12629]
+
+Sat Oct 13 09:02:16 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc,win}32/mkexports.rb: explicit data. [ruby-list:44108]
+
+Sat Oct 13 00:17:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/document.rb (REXML::Document::write): leaky
+ modification trans -> transitive. [ruby-dev:32040]
+
+Sat Oct 13 00:00:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: encoding specifier should work if the line matches
+ /coding[:=] ?/, a la Python PEP-263, so that VIM comments like
+ "# vim: set fileencoding=<encoding name>" should be recognized.
+
+Fri Oct 12 15:04:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (magic_comments): add "encoding" as same as "coding".
+
+ * parse.y (set_file_encoding): special file encoding handling.
+
+ * parse.y (parser_yylex): ditto.
+
+Fri Oct 12 12:44:11 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_combination): fixed memory corruption due to too
+ small memory allocation
+
+ * array.c (rb_ary_product): accessing out of memory bounds.
+ condition fixed.
+
+Fri Oct 12 11:22:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (match_values_at): make #select to be alias to #values_at
+ to adapt RDoc description. [ruby-core:12588]
+
+Thu Oct 11 21:10:17 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/node.h (NOEX_LOCAL): remove unused local visibility.
+
+ * class.c (ins_methods_push): ditto.
+
+ * class.c (rb_class_local_methods): method removed.
+
+Thu Oct 11 14:29:31 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * */Makefile.sub (COMMON_MACROS): workaround for old SDK's bug.
+ [ruby-core:12584]
+
+Thu Oct 11 06:35:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, */Makefile.sub (VPATH): add enc directory.
+
+ * common.mk (ENCOBJS): encoding objects.
+
+ * enc: directory for encodings.
+
+Thu Oct 11 00:04:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): add OnigEncoding
+ parameter to every function members.
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): add auxiliary
+ data member to provide user defined data for an encoding.
+
+Wed Oct 10 23:32:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_s_quote): no longer takes optional second argument
+ that has never been documented.
+
+Wed Oct 10 15:39:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_init): don't alias iso-8859-1 to ascii.
+
+ * ascii.c (OnigEncodingASCII): change the name US-ASCII to ASCII-8BIT.
+
+Wed Oct 10 14:31:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_enc_str_coderange): fixed check for non-ascii.
+
+Tue Oct 9 21:35:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_permutation, rb_ary_combination): missing type
+ names.
+
+ * array.c (rb_ary_permutation): used buffer should be t1.
+
+ * array.c (rb_ary_permutation): use frozen shared hidden array.
+ [ruby-dev:31985]
+
+Tue Oct 9 16:58:10 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c: remove to_a completely.
+
+ * array.c (tmpbuf): keep DRY to clear klass of temporary objects.
+
+Tue Oct 9 16:33:32 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_permutation, rb_ary_combination, rb_ary_product):
+ hide internal buffer objects. [ruby-dev:31982]
+
+Tue Oct 9 16:00:32 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_read_escape, parser_tokadd_escape): check code range.
+ [ruby-dev:31980]
+
+Tue Oct 9 15:40:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (STR_NEW3): check for if single byte sequence.
+
+Mon Oct 8 20:06:29 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/imap.rb, lib/net/smtp.rb, lib/net/pop.rb: hostname should
+ be verified against server's identity as presented in the server's
+ certificate. [ruby-dev:31960]
+
+ * ext/openssl/lib/net/telnets.rb, ext/openssl/lib/net/ftptls.rb: ditto.
+
+Sun Oct 7 22:37:47 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_taxonomy.rb, test/rss/test_parser_1.0.rb,
+ test/rss/test_image.rb, test/rss/rss-testcase.rb: ensured
+ declaring XML namespaces.
+
+Sun Oct 7 22:00:01 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/node.h: make node flags as VALUE type.
+ enum ruby_node_flags removed.
+
+ * ruby.c: define RUBY_NODE_* as const for gdb.
+
+Sun Oct 7 18:57:12 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h: enum ruby_value_flags removed. [ruby-dev:31959]
+
+ * ruby.c: define RUBY_FL_* as const VALUE for gdb.
+
+Sun Oct 7 17:50:14 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/http.rb: remove enable_post_connection_check flag.
+
+ * lib/open-uri.rb: ditto.
+
+Sun Oct 7 15:48:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_eq): fix to use rb_str_equal().
+
+Sat Oct 6 23:14:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_to_i): update RDoc since base can be any value
+ between 2 and 36. [ruby-talk:272879]
+
+Sat Oct 6 16:24:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_free): check Fiber or Continuation.
+
+ * bootstraptest/test_knownbug.rb: remove a fixed test.
+
+Sat Oct 6 14:56:02 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_register): returns new index or -1 if failed.
+
+ * encoding.c (rb_enc_alias): check if original name is registered.
+
+ * encoding.c (rb_enc_init): register in same order as kcode options in
+ re.c. added new aliases.
+
+ * string.c (rb_str_force_encoding): check if valid encoding name.
+
+Sat Oct 6 14:32:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (opt_eq): get rid of gcc bug.
+
+Sat Oct 6 02:34:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/defines.h: no longer provide DEFAULT_KCODE.
+
+Fri Oct 5 21:24:59 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_s_union_m): Regexp.union accepts single argument which
+ is an array of patterns. [ruby-list:44084]
+
+Fri Oct 5 16:42:27 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_not_match): new method.
+
+Fri Oct 5 16:15:52 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in: Turn on --enable-pthread by default for FreeBSD
+ 5.2.1-RELEASE and later, and remove pthread support for older
+ versions which has never worked perfectly.
+
+Fri Oct 5 16:11:50 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * time.c (time_to_s): Fix documentation. Time format changed.
+
+Fri Oct 5 04:02:39 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb (in_addr, in6_addr, addr_mask): Make some minor
+ code optimization.
+
+Fri Oct 5 03:25:51 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb (<=>): Implement IPAddr#<=> and make IPAddr
+ comparable.
+
+ * lib/ipaddr.rb (succ): Implement IPAddr#succ. You can now create
+ a range between two IPAddr's, which (Range) object is
+ enumerable.
+
+ * lib/ipaddr.rb (to_range): A new method to create a Range object
+ for the (network) address.
+
+Fri Oct 5 03:14:45 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb (coerce_other): Support type coercion and make &,
+ |, == and include? accept a string or an integer instead of an
+ IPAddr object as the argument.
+
+ * lib/ipaddr.rb (initialize): Give better error messages.
+
+ * lib/ipaddr.rb: Improve documentation.
+
+Thu Oct 4 20:45:53 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (Init_process): win32 has our own WNOHANG definition, so
+ remove unnecessary #ifdef guard.
+
+Thu Oct 4 20:17:19 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (rb_ary_permutation, rb_ary_product): support non C99
+ compilers.
+
+Thu Oct 4 17:33:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (kcode_setter): Perl-ish global variable `$=' no longer
+ effective.
+
+ * io.c (Init_IO): remove obsolete variables: $defout, $deferr.
+
+ * re.c (Init_Regexp): remove obsolete const alias: MatchingData.
+
+ * time.c (Init_Time): remove obsolete Time::times.
+
+ * re.c (ignorecase_setter): change warning message.
+
+ * re.c (ignorecase_getter): now gives warning.
+
+ * string.c (rb_str_cmp_m): update RDoc document.
+
+ * re.c (kcode_setter): restore erroneously removed setter.
+
+Thu Oct 4 16:28:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_obj_encoding): returns encoding of the given object.
+
+ * parse.y (reg_compile_gen): copy encoding from source string if
+ non-empty.
+
+ * re.c (Init_Regexp): new method Regexp#encoding.
+
+ * string.c (str_encoding): moved to encoding.c
+
+Thu Oct 4 15:49:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_permutation): remove C99 dependency.
+ [ruby-dev:31934]
+
+ * array.c (rb_ary_product): ditto.
+
+Wed Oct 3 23:37:17 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/nkf/nkf.c, bin/ri, bin/irb: fixed typos in doc and comments.
+ a patch from Eugene Ossintsev <eugoss AT gmail.com>.
+ [ruby-core:12375]
+
+Wed Oct 3 17:56:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: enable specify label to executable.
+ (-e "ruby1::/path/to/ruby1; ruby2::/path/to/ruby2; ...")
+
+Wed Oct 3 16:58:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_str_new, parser_yylex, rb_intern3): set code-range
+ bits.
+
+ * parse.y (parser_tokadd_string): check code-range.
+
+ * parse.y (parser_parse_string, parser_here_document): ditto.
+
+ * parse.y (parser_set_encode): check if valid encoding.
+
+Wed Oct 3 15:43:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_set): check whether class variable is
+ defined in superclasses. root classes have higher priority.
+ removes lower class variable entry from IV_TBL (if it's defined
+ in classes, not modules).
+
+ * variable.c (rb_cvar_get): ditto.
+
+Wed Oct 3 10:06:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_process_options): push frame with program name.
+ [ruby-core:12351]
+
+Tue Oct 2 20:16:55 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_env): refactoring. remove unused code.
+
+Tue Oct 2 12:30:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_product): generalized product, now takes
+ arbitrary number of arrays. a patch from David Flanagan
+ <david AT davidflanagan.com>. [ruby-core:12346]
+
+Tue Oct 2 08:25:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_permutation): implementation contributed from
+ David Flanagan. [ruby-core:12344]
+
+ * array.c (rb_ary_combination): RDoc update to clarify. a patch
+ from David Flanagan. [ruby-core:12344]
+
+ * array.c (rb_ary_permutation): small dirty hack by Matz to avoid
+ arrays on stack.
+
+Tue Oct 2 07:01:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (proc_dup): proc->block.proc should be self.
+
+ * bootstraptest/test_knownbug.rb, test_method.rb:
+ move a fixed test.
+
+Mon Oct 1 16:17:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/test_method.rb: use assert_normal_exit to test
+ [ruby-dev:31818].
+
+Mon Oct 1 15:57:49 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (id2ref): skip ICLASS.
+
+Mon Oct 1 15:29:35 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_normal_exit): use `` instead of
+ system.
+
+Mon Oct 1 15:17:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (id2ref): T_VALUES is less than T_BLOCK. [ruby-dev:31911]
+
+Mon Oct 1 10:58:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (require_libraries): use require method instead of calling
+ rb_require directly. [ruby-dev:31322]
+
+Mon Oct 1 10:52:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_options), ruby.c (proc_options, process_options): not
+ call exit(2) directly. [ruby-dev:31912]
+
+ * eval.c (ruby_run_node): deal with direct exit code.
+
+Sun Sep 30 17:12:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_append): always set encoding, and coderange
+ cache bits.
+
+ * include/ruby/encoding.h (ENC_CODERANGE_SET): fixed a bug not to
+ set cache bits.
+
+Sun Sep 30 11:52:11 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (pretty): don't show beginning empty line.
+
+Sun Sep 30 11:32:34 2007 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c: use #ifdef for test LONG_LONG_VALUE.
+
+Sun Sep 30 04:30:55 2007 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: use SIZEOF_LONG instead of SIZEOF_ULONG which is not
+ defined.
+
+Sun Sep 30 04:03:43 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (Init_Regexp): test DEFAULT_KCODE in C code because
+ KCODE_EUC, etc. are enum.
+
+Sun Sep 30 00:55:40 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * variable.c (obj_ivar_each): get rid of warning.
+
+Sat Sep 29 17:45:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * main.c (main): use platform-independent per-process initialization.
+ [ruby-dev:31900]
+
+ * ruby.c (ruby_sysinit): new function for per-process initialization.
+
+ * include/ruby/ruby.h (RUBY_GLOBAL_SETUP): toplevel setup declaration.
+
+ * include/ruby/win32.h, win32/mkexports.rb: alias NtInitialize
+ ruby_sysinit.
+
+ * win32/win32.c (rb_w32_sysinit): renamed from NtInitialize.
+
+Sat Sep 29 17:31:04 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_combination): new method to give all combination
+ of elements from an array. [ruby-list:42671]
+
+ * array.c (rb_ary_product): a new method to get all combinations
+ of elements from two arrays. can be extended to combinations of
+ n-arrays, e.g. a.product(b,c,d). anyone volunteer?
+
+ * array.c (rb_ary_permutation): empty function body to calculate
+ permutations of array elements. need volunteer.
+
+Sat Sep 29 17:14:44 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_leave): move proc invocation from r_entry() to
+ avoid potential crash.
+
+Sat Sep 29 12:28:08 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_normal_exit): new method.
+
+ * bootstraptest/test_knownbug.rb: add test for Marshal.load.
+
+Sat Sep 29 10:12:20 2007 Tanaka Akira <akr@fsij.org>
+
+ * variable.c (rb_ivar_set): fix class instance variable.
+
+ * object.c (rb_class_real): cl argument may be 0.
+
+Sat Sep 29 09:12:02 2007 Tanaka Akira <akr@fsij.org>
+
+ * object.c (rb_class_real): use BUILTIN_TYPE instead of TYPE.
+ access flags directly instead of FL_TEST.
+ they are enough because cl argument is a class.
+
+Sat Sep 29 08:57:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (strcasecmp): needed for type_strcasehash.
+
+Sat Sep 29 06:47:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (struct cmdline_options): static variables packed.
+
+Sat Sep 29 05:29:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_fdopen): create IO object from fd.
+
+ * parse.y (yycompile): use encoding of the source as default.
+
+ * ruby.c (proc_options, load_file): ditto.
+
+Sat Sep 29 04:27:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_alias): allow encodings multiple aliases.
+
+ * encoding.c (rb_enc_find_index): search the encoding which has the
+ given name and return its index if found, or -1.
+
+ * st.c (type_strcasehash): case-insensitive string hash type.
+
+ * string.c (rb_str_force_encoding): force encoding of self. this name
+ comes from [ruby-dev:31894] by Martin Duerst. [ruby-dev:31744]
+
+ * include/ruby/encoding.h (rb_enc_find_index, rb_enc_associate_index):
+ prototyped.
+
+ * include/ruby/encoding.h (rb_enc_isctype): direct interface to ctype.
+
+ * include/ruby/st.h (st_init_strcasetable): prototyped.
+
+Sat Sep 29 03:53:26 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: Thread local storage should be fiber local.
+
+ * bootstraptest/test_knownbug.rb, test/ruby/test_fiber.rb:
+ move a fixed test.
+
+Fri Sep 28 23:15:31 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insnhelper.ci (vm_call_method): allow send! to call protected
+ methods as well. [ruby-core:12280]
+
+Fri Sep 28 22:33:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_so_fasta.rb: added.
+
+ * benchmark/bm_so_k_nucleotide.rb: added.
+
+ * benchmark/bm_so_reverse_complement.rb: added.
+
+ * benchmark/make_fasta_output.rb: added.
+
+ * benchmark/prepare_so_k_nucleotide.rb: added.
+
+ * benchmark/prepare_so_reverse_complement.rb: added.
+
+Fri Sep 28 19:14:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: fix notations.
+
+ * benchmark/bm_loop_whileloop.rb: ditto.
+
+ * benchmark/bm_loop_whileloop2.rb: ditto.
+
+ * benchmark/bm_app_uri.rb: added.
+
+ * benchmark/bm_vm1_ivar_set.rb: ditto.
+
+ * benchmark/bm_so_binary_trees.rb: added from Computer Language
+ Benchmarks Game (http://shootout.alioth.debian.org/).
+
+ * benchmark/bm_so_fannkuch.rb: ditto.
+
+ * benchmark/bm_so_mandelbrot.rb: ditto.
+
+ * benchmark/bm_so_meteor_contest.rb: ditto.
+
+ * benchmark/bm_so_nbody.rb: ditto.
+
+ * benchmark/bm_so_nsieve.rb: ditto.
+
+ * benchmark/bm_so_nsieve_bits.rb: ditto.
+
+ * benchmark/bm_so_partial_sums.rb: ditto.
+
+ * benchmark/bm_so_pidigits.rb: ditto.
+
+ * benchmark/bm_so_spectralnorm.rb: ditto.
+
+Fri Sep 28 16:22:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_core.h (rb_vm_struct): fix typo: bufferd -> buffered.
+
+Fri Sep 28 15:47:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: fix to output benchmark results
+ to file "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}".
+
+ * benchmark/bm_io_file_create.rb: remove useless codes.
+
+ * benchmark/bm_vm2_eval.rb: added.
+
+Fri Sep 28 15:05:24 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h: export rb_ivar_foreach.
+
+ * include/ruby/ruby.h: modify struct RObject and RClass for optimizing
+ T_OBJECT space. [ruby-dev:31853]
+ (ROBJECT_LEN, ROBJECT_PTR)
+ (RCLASS_IV_TBL, RCLASS_M_TBL, RCLASS_SUPER, RCLASS_IV_INDEX_TBL)
+ (RMODULE_IV_TBL, RMODULE_M_TBL, RMODULE_SUPER): abstract accessor
+ defined.
+
+ * variable.c: support the modified RObject and RClass.
+
+ * object.c: ditto.
+
+ * class.c: ditto.
+
+ * gc.c: ditto.
+
+ * marshal.c: ditto.
+
+ * eval_method.ci: use the abstract accessor.
+
+ * insns.def: ditto.
+
+ * proc.c: ditto.
+
+ * struct.c: ditto.
+
+ * eval.c: ditto.
+
+ * error.c: ditto.
+
+ * vm.c: ditto.
+
+ * insnhelper.ci: ditto.
+
+ * ext/digest/digest.c: ditto.
+
+Fri Sep 28 13:20:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast, rb_io_getline_1): set encoding to the
+ result string, as well as getc.
+
+Fri Sep 28 12:51:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_app_erb.rb: added.
+
+ * benchmark/bm_io_file_(create|read|write).rb: added.
+
+Fri Sep 28 12:49:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: fix file selection algorithm.
+
+Fri Sep 28 02:05:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): need not to check asciicompat here.
+
+ * encoding.c (rb_enc_check): ditto.
+
+ * string.c (rb_enc_str_coderange): tuned a bit; no broken check.
+
+ * encoding.c (rb_enc_check): new encoding comparison criteria.
+
+Thu Sep 27 17:36:28 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/REAMDE.win32: follow recent changes.
+
+Thu Sep 27 16:01:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: fix to output some helpful messages.
+
+Thu Sep 27 15:44:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: added.
+
+ * common.mk: fix to use above driver.
+
+ * benchmark/prepare_so_count_words.rb: added.
+
+ * benchmark/bm_so_count_words.rb: fix benchmark process.
+
+Thu Sep 27 15:42:34 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ext/fiber/fiber.c: modify prototype declaration.
+ [ruby-core:12247]
+
+Thu Sep 27 09:42:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (strings, xstring, regexp, dsym): empty strings have
+ US-ASCII encoding.
+
+Thu Sep 27 07:39:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_finish): new method.
+
+ * bootstraptest/test_knownbug.rb: add test for [ruby-dev:31866] using
+ assert_finish.
+
+Thu Sep 27 04:46:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_associate_index): deal with ASCII compatible
+ flags.
+
+ * encoding.c (rb_enc_check): allow ASCII compatible strings.
+
+ * parse.y (rb_intern_str): use ASCII encoding for ASCII string.
+
+ * string.c (rb_enc_str_coderange): check for code-range.
+
+ * string.c (rb_str_modify): clear code-range flags.
+
+ * string.c (rb_str_hash, rb_str_eql): ASCII compatible strings are
+ comparable.
+
+ * include/ruby/encoding.h: added code-range flags.
+
+Thu Sep 27 04:40:47 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_mark_set): new function to mark keys.
+
+ * marshal.c (struct dump_arg, struct load_arg): added wrappers to mark
+ data and compat_tbl entries. [ruby-dev:31870]
+
+Thu Sep 27 03:17:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_waitpid): no needs to poll. [ruby-dev:31871]
+
+Wed Sep 26 20:11:46 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: remove a fixed test.
+
+Wed Sep 26 20:00:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: move fixed tests.
+
+ * bootstraptest/test_method.rb: ditto.
+
+ * test/ruby/test_io.rb: ditto.
+
+Wed Sep 26 19:36:26 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (eval): fix to check stack overflow.
+ [ruby-dev:31850]
+
+ * eval_intern.h, vm.h: move CHECK_STACK_OVERFLOW() macro.
+
+Wed Sep 26 19:27:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_throw): fix to move increment point.
+ [ruby-dev:31840]
+
+Wed Sep 26 19:23:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: Fiber as SemiCoroutine on default. [ruby-core:12146]
+
+ * ext/fiber/fiber.c: enable Fiber#transfer.
+
+Wed Sep 26 18:38:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_check): check for ASCII-compatibilities.
+
+ * parse.y (parser_tokadd_string, parser_parse_string,
+ parser_here_document, parser_yylex): set encoding to US-ASCII.
+
+ * parse.y (rb_enc_symname_p): check if valid with encoding.
+
+ * parse.y (rb_intern3): let symbols have encoding.
+
+ * string.c (rb_str_hash): add encoding index.
+
+ * string.c (rb_str_comparable, rb_str_equal, rb_str_eql): check if
+ compatible encoding.
+
+ * string.c (sym_inspect): made encoding aware.
+
+ * insns.def (opt_eq): compare with encoding.
+
+ * include/ruby/encoding.h (rb_enc_asciicompat): check if ASCII
+ compatible.
+
+ * include/ruby/encoding.h (rb_enc_get_index): added prototype.
+
+ * include/ruby/intern.h (rb_str_comparable, rb_str_equal): ditto.
+
+Wed Sep 26 15:01:16 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_method.ci (rb_get_alloc_func): cast to suppress a warning.
+
+ * eval_method.ci (remove_method): local variable to be initialized.
+
+Wed Sep 26 08:36:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (ext/extinit.o): use $(OUTFLAG) as well as other
+ objects. [ruby-Bugs-14228]
+
+Wed Sep 26 05:12:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yyerror): limit error message length.
+ [ruby-dev:31848]
+
+Tue Sep 25 15:11:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_ungetc): reallocate internal buffer if pushing data
+ excess capacity. [ruby-dev:31650]
+
+Tue Sep 25 13:43:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_method.ci (remove_method): should not remove undef place
+ holder. [ruby-dev:31816], [ruby-dev:31817]
+
+Tue Sep 25 09:51:31 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_longjmp): source file information may be NULL.
+ [ruby-dev:31849]
+
+ * eval.c (ruby_finalize_0): clear trace_func before finalization.
+
+Mon Sep 24 22:36:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_equal): should handle recursive array.
+
+ * hash.c (hash_equal): should handle recursive hash.
+
+Mon Sep 24 22:14:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/weakref.rb (WeakRef): remove debug print. [ruby-dev:31799]
+
+ * hash.c (hash_i): avoid too frequent hash conflict where key and
+ value are same. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>.
+ [ruby-dev:31802]
+
+Mon Sep 24 17:56:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/strscan/strscan.c (strscan_initialize, strscan_getch): use the
+ encoding of the target string instead of setting to StringScanner
+ instance. [ruby-dev:31831]
+
+Mon Sep 24 16:52:11 2007 Urabe Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/net/http.rb: fix typo.
+
+Mon Sep 24 06:49:15 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/http.rb: an SSL verification (the server hostname should
+ be matched with its certificate's commonName) is added.
+ this verification can be skipped by
+ "Net::HTTP#enable_post_connection_check=(false)".
+ suggested by Chris Clark <cclark at isecpartners.com>
+
+ * lib/net/open-uri.rb: use Net::HTTP#enable_post_connection_check to
+ perform SSL post connection check.
+
+ * ext/openssl/lib/openssl/ssl.c
+ (OpenSSL::SSL::SSLSocket#post_connection_check): refine error message.
+
+Sun Sep 23 09:05:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (os_obj_of, os_each_obj): hide objects to be finalized.
+ [ruby-dev:31810]
+
+Sun Sep 23 08:58:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_method.ci (rb_attr): should not use alloca for unknown size
+ input. [ruby-dev:31818]
+
+ * parse.y (rb_intern_str): prevent str from optimization.
+
+Sun Sep 23 06:16:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_method.ci (remove_method): check for undefined method.
+ [ruby-dev:31816]
+
+Sun Sep 23 05:42:35 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/rdoc/options.rb (Options::check_diagram): dot -V output
+ changed. [ ruby-Bugs-11978 ], Thanks Florian Frank.
+
+Sat Sep 22 06:02:11 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::List::summarize): use each_line if
+ defined rather than each. [ruby-Patches-14096]
+
+Sat Sep 22 05:19:49 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_init): separate from strio_initialize
+ to share with strio_reopen properly. [ruby-Bugs-13919]
+
+Fri Sep 21 14:51:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_mark_rest): copy just used part.
+
+ * gc.c (gc_mark_children): mark u1 and u2 of NODE_ARGSCAT.
+
+ * gc.c (os_obj_of): hide T_VALUES too. [ruby-dev:31804]
+
+ * gc.c (run_final): freeze temporary argument array.
+
+Fri Sep 21 04:58:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-label-indent): fix for function top
+ level labels.
+
+Fri Sep 21 02:11:22 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_match_m): evaluate a block if match. it would make
+ condition statement much shorter, if no else clause is needed.
+
+ * string.c (rb_str_match_m): ditto.
+
+Fri Sep 21 02:02:34 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (hash_equal): should call rb_eql when argument eql is set.
+
+Thu Sep 20 17:28:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (popen_exec), process.c (rb_spawn): stop other threads before
+ exec. [ruby-core:08262]
+
+Tue Sep 18 22:08:42 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/matrix.rb: fix a coerce bug of Vector. [ruby-core: 12190]
+
+Mon Sep 17 21:06:03 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTP::GenericRequest#initialize): check path is
+ not nil. [ruby-dev:31149]
+
+Mon Sep 17 21:00:51 2007 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (ripper): rename event: arglist_* -> args_*.
+
+ * parse.y (ripper): rename event: restparam -> rest_param.
+
+ * parse.y (ripper): rename event: constpath_* -> const_path_*.
+
+ * parse.y (ripper): rename event: topconst_* -> top_const_*.
+
+ * parse.y (ripper): rename event: iter_block -> method_add_block.
+
+ * parse.y (ripper): support block local parameter declaration.
+
+ * parse.y (ripper): introduce new macro params_new.
+
+ * ext/ripper/lib/ripper/sexp.rb: should not dispose event
+ arguments whose name ends with "_new" but arity != 0.
+
+Sat Sep 15 23:36:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (struct parser_params): common members in the parser and
+ ripper must be placed at each same location.
+
+Sat Sep 15 18:25:15 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * string.c (rb_str_rstrip_bang): fixed too much rstrip. [ruby-dev:31786]
+
+Sat Sep 15 17:32:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_initialize): set default encoding. [ruby-dev:31787]
+
+ * ruby.c (load_file): make new parse instance after processing shebang
+ line options.
+
+Sat Sep 15 17:04:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_associate_index, rb_enc_get_index): check if
+ object is encoding capable. [ruby-dev:31780]
+
+ * string.c (rb_str_subpat_set): check for if the argument is a String.
+
+Sat Sep 15 13:31:21 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss.rb, lib/rss/, test/rss/:
+ - 0.1.9 -> 0.2.0.
+ - supported Slash module.
+
+Fri Sep 14 22:20:01 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fev_unadvise): no needs to reset
+ event handlers.
+
+Fri Sep 14 17:28:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_io.rb: tests which cause SEGV should not be
+ added.
+
+ * bootstraptest/test_knownbug.rb: add above test to known bug.
+
+Fri Sep 14 16:24:04 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_expandarray): assignment should be placed
+ after creating new array.
+
+Fri Sep 14 16:17:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: add a stress test (-s).
+
+Fri Sep 14 16:14:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.h, eval_intern.h: move some macros to eval_intern.h.
+
+ * eval_jump.ci (rb_f_throw): fix to use NEW_THROW_OBJECT().
+
+ * eval.c (rb_f_loop): remove additional macro.
+
+Fri Sep 14 16:12:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_expandarray): should be volatile value for GC.
+
+Thu Sep 13 15:42:03 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): inline cache entries are overwritten
+ in iseq_build_body().
+
+Thu Sep 13 14:00:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (brace_block): should use compstmt. patch submitted by
+ Kirill A. Shutemov <k.shutemov AT gmail.com> [ruby-core:12154].
+
+Thu Sep 13 13:47:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_id2str): fixed typo.
+
+Wed Sep 12 23:12:22 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): -W should be allowed in RUBYOPT
+ environment variable. [ruby-core:12118]
+
+Wed Sep 12 15:19:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_s_sysopen): should not use alloca for unknown size
+ input. [ruby-dev:31775]
+
+ * parse.y (rb_id2str): ditto.
+
+ * marshal.c (w_float): use snprintf instead of sprintf.
+
+Tue Sep 11 17:28:00 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb (Tempfile::make_tmpname): Allow to specify a
+ suffix for a temporary file name.
+
+ * lib/tempfile.rb (Tempfile::make_tmpname): Make temporary file
+ names less predictable by including a random string.
+ [inspired by: akr]
+
+Tue Sep 11 17:25:59 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb: Add shellescape() and shelljoin().
+
+ * lib/shellwords.rb: Rename shellwords() to shellsplit() and make
+ the former an alias to the latter.
+
+ * lib/shellwords.rb: Add escape(), split(), join() as class
+ methods, which are aliases to their respective long names
+ prefixed with `shell'.
+
+ * lib/shellwords.rb: Add String#shellescape(), String#shellsplit()
+ and Array#shelljoin() for convenience.
+
+Mon Sep 10 15:48:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * range.c: represent initialized state using EXCL instead of FL_USER3.
+
+ * range.c (range_dumper): make uninitialized range dumpable.
+ (range_loader): make uninitialized range loadable.
+
+Mon Sep 10 13:44:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_cycle): avoid infinite loop for empty array.
+ based on a patch from David Flanagan. [ruby-core:12085]
+
+Mon Sep 10 01:21:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): struct allocation first to check if a
+ class is a struct. compatibility check should come next.
+
+Mon Sep 10 01:05:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): fixed integer overflow. [ruby-dev:31763]
+
+Sun Sep 9 08:57:27 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (_strptime): now also attaches an element
+ which denotes leftover substring if exists.
+
+Sun Sep 9 01:59:08 2007 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (r_object0): check T_STRUCT type for structs.
+
+Sun Sep 9 01:17:05 2007 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (r_object0): don't call user-defined initialize for
+ T_STRUCT objects.
+
+ * include/ruby/intern.h (rb_struct_initialize): declared.
+
+ * struct.c (rb_struct_initialize): export.
+
+Sat Sep 8 23:55:56 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval_method.ci (rb_get_alloc_func): new function to get allocation
+ function.
+
+ * include/ruby/intern.h (rb_alloc_func_t): declared.
+ (rb_define_alloc_func): declared.
+ (rb_marshal_define_compat): declared.
+
+ * range.c: use T_STRUCT for Range.
+
+ * inits.c: move Init_marshal() prior to Init_Range() because
+ Init_Range calls rb_marshal_define_compat which needs
+ marshal's compat_allocator_tbl initialized.
+
+ * marshal.c: support marshal format compatibility layer designed for
+ marshaling T_STRUCT Range using T_OBJECT format.
+ (rb_marshal_define_compat): defined.
+
+ [ruby-dev:31710]
+
+Sat Sep 8 10:05:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_s_members): check if __members__ is an
+ array to prevent segmentation fault. [ruby-dev:31759]
+
+Sat Sep 8 09:33:09 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (str[fp]time): now check specifications more
+ strictly.
+
+Sat Sep 8 02:56:31 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_fiber.rb (TestFiber::test_throw): uncaught throw
+ now raise ArgumentError exception.
+
+Sat Sep 8 02:45:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_s_members): should raise TypeError instead
+ of call rb_bug(). [ruby-dev:31709]
+
+ * marshal.c (r_object0): no nil check require any more.
+
+Sat Sep 8 01:46:36 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regenc.c, regenc.h (onigenc_single_byte_mbc_enc_len): should take
+ two arguments. [ruby-dev:31754]
+
+Fri Sep 7 00:58:16 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix typo.
+
+Fri Sep 7 00:28:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getc): forgot to commit rb_enc_mbclen() fix.
+
+ * ext/stringio/stringio.c (strio_getc): rb_enc_mbclen() fix.
+
+ * ext/stringio/stringio.c (strio_ungetc): ditto.
+
+Thu Sep 6 22:57:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_::copy): prevent self copy of
+ directories.
+
+ * lib/fileutils.rb (FileUtils::fu_each_src_dest0): use try_convert.
+
+ * lib/fileutils.rb (FileUtils::fu_update_option): ditto.
+
+Thu Sep 6 21:36:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): add end parameter
+ to mbc_enc_len.
+
+ * euc_jp.c (mbc_enc_len), sjis.c (mbc_enc_len),
+ utf8.c (utf8_mbc_enc_len): ditto.
+
+ * encoding.c (rb_enc_mbclen): add end parameter.
+
+Thu Sep 6 21:31:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_cycle): typo in rdoc. a patch from Yugui
+ <yugui@yugui.sakura.ne.jp>. [ruby-dev:31748]
+
+Thu Sep 6 12:42:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_succ, rb_str_chop_bang, rb_str_chop): m17n support.
+ [ruby-dev:31734]
+
+Wed Sep 5 22:02:27 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_subseq): need integer overflow check.
+ [ruby-dev:31736]
+
+ * array.c (rb_ary_splice): ditto. [ruby-dev:31737]
+
+ * array.c (rb_ary_fill): ditto. [ruby-dev:31738]
+
+ * string.c (rb_str_splice): integer overflow for length.
+ [ruby-dev:31739]
+
+Tue Sep 4 20:43:44 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_EVENT#unadvise.
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+Mon Sep 3 15:37:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (vm.o): depends on st.h too.
+
+Sun Sep 2 23:38:29 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/st.h (struct st_table): make num_entries bitfield
+ instead of num_bins for speed. num_entries has less access.
+
+Sun Sep 2 00:37:57 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (_parse): improved parsing of ordinal dates.
+
+ * lib/date/format.rb (_parse): use named character classes in some
+ regular expressions.
+
+Sat Sep 1 23:44:26 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_jump.ci (rb_f_throw): wrap tag and TAG_THROW in a NODE_MEMO
+ node to make throw instruction to work well.
+
+Sat Sep 1 20:56:07 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (struct RBignum): embed digits in RBignum for
+ small bignums.
+
+ * bignum.c: RBignum embedded digits implemented.
+
+ * include/ruby/intern.h: declare rb_big_resize.
+
+ * gc.c: don't free embedded digits.
+
+ * numeric.c: replace direct bignum field accessor by abstract field
+ accessor such as RBIGNUM(val)->sign to RBIGNUM_SIGN(val).
+
+ * sprintf.c: ditto.
+
+ * compar.c: ditto.
+
+ * marshal.c: ditto.
+
+ * random.c: ditto.
+
+ * .gdbinit: support embedded small bignums.
+
+ [ruby-dev:31689]
+
+Sat Sep 1 19:59:43 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_event_free): IConnectionPoint should be
+ released.
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Destructor): ITypeInfo should be
+ released.
+
+ * ext/win32ole/win32ole.c (fev_initialize): refactoring.
+
+Sat Sep 1 16:26:09 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/socket/test_tcp.rb (test_recvfrom): same as mswin32 on mswin64.
+
+Sat Sep 1 14:24:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_numcmp, st_numhash): use st_data_t instead of long, because
+ the former may be larger than the latter.
+
+ * include/ruby/st.h (CHAR_BIT): get rid of magic number.
+
+ * include/ruby/st.h (rb_index_t): use st_data_t for the platforms it
+ is larger than int.
+
+Sat Sep 1 10:43:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_jump.ci (rb_f_catch): generate new tag object if no argument is
+ given. backported from MatzRuby. [ruby-dev:31609]
+
+ * eval_jump.ci (rb_catch): call #catch without arguments if tag
+ string is NULL.
+
+ * eval_jump.ci (rb_f_throw): allow throwing non-symbol object.
+
+ * eval_jump.ci (rb_catch_obj): new function to wait throw with arbitrary
+ object.
+
+ * eval_jump.ci (rb_throw_obj): new function to throw arbitrary object.
+
+ * variable.c (check_autoload_table): prevent multiple calls from
+ RSTRING_PTR().
+
+Fri Aug 31 07:12:24 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (SQRT_LONG_MAX): use SIZEOF_LONG instead of SIZEOF_VALUE
+ because SIZEOF_VALUE > SIZEOF_LONG on some platforms.
+
+Fri Aug 31 04:18:03 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_norm_arg, f_arg_item): not croak already erred names.
+ [ruby-dev:31687]
+
+ * parse.y (assignable_gen): ignore already erred names.
+
+ * parse.y (shadowing_lvar_gen): always make new block local variable
+ when shadowing outer local variable. [ruby-dev:31507]
+
+Thu Aug 30 19:40:33 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regenc.h: check RUBY_EXTERN before including config.h and defines.h
+
+ * common.mk: update header dependency.
+
+Thu Aug 30 14:06:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_obj_define_method): reverted. [ruby-talk:266637]
+
+Thu Aug 30 13:49:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: initialize $top_srcdir always. [ruby-dev:31682]
+
+ * lib/mkmf.rb (try_const, have_const): check for a const is defined.
+ [ruby-core:04422]
+
+Thu Aug 30 08:00:12 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h: declare rb_hash_tbl.
+
+ * include/ruby/ruby.h (RHash): delay st_table allocation.
+ rename tbl field to ntbl to detect direct reference to the st_table
+ as a compile error.
+ (RHASH_TBL): abstract accessor defined.
+ (RHASH_ITER_LEV): ditto.
+ (RHASH_IFNONE): ditto.
+ (RHASH_SIZE): ditto.
+ (RHASH_EMPTY_P): ditto.
+ (hash_alloc0, hash_alloc): unified because hash_alloc doesn't
+ allocate st_table now.
+
+ * hash.c: delay st_table allocation.
+
+ * gc.c: replace tbl by ntbl.
+
+ * array.c: replace direct field accessor by abstract field accessor
+ such as RHASH(hash)->tbl to RHASH_TBL(hash).
+
+ * marshal.c: ditto.
+
+ * insns.def: ditto.
+
+ * ext/iconv/iconv.c: ditto.
+
+ * ext/json/ext/generator/generator.c: ditto.
+
+ * ext/json/ext/parser/parser.c: ditto.
+
+ * ext/json/ext/parser/parser.rl: ditto.
+
+ * ext/syck/rubyext.c: ditto.
+
+ * ext/tk/tkutil/tkutil.c: ditto.
+
+ [ruby-dev:31678]
+
+Wed Aug 29 18:36:06 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: add :ftp_active_mode option. [ruby-dev:31677]
+
+Wed Aug 29 14:55:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): should not use mbclen2() which has broken API.
+
+ * re.c: remove rb_reg_mbclen2().
+
+Wed Aug 29 12:48:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (aref_args): args may not be a list. [ruby-dev:31592]
+
+Wed Aug 29 11:30:10 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/st.h (struct st_table): add entries_packed 1-bit
+ bitfield. decrease num_bins 1-bit.
+
+ * st.c: pack numhash which have 5 or less entries in bins.
+ (st_init_table_with_size): setup entries_packed flag.
+ (st_clear): support packed mode.
+ (st_lookup): ditto.
+ (st_insert): ditto.
+ (st_add_direct): ditto.
+ (st_copy): ditto.
+ (st_delete): ditto.
+ (st_foreach): ditto.
+ (st_reverse_foreach): ditto.
+ (unpack_entries): new function for converting to unpacked mode.
+
+ [ruby-list:43954]
+
+Wed Aug 29 10:46:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/defines.h (flush_register_windows): call "ta 0x03"
+ even on Linux/Sparc. [ruby-dev:31674]
+
+Tue Aug 28 19:16:00 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_type_progid): progid getted by
+ ProgIDFromCLSID should be freed by CoTaskMemFree. Thanks, arton.
+
+ * test/win32ole/test_win32ole.rb (test_raise_message): set negative
+ compareMode value to raise WIN32OLERuntimeError.
+
+ * test/win32ole/test_win32ole_type.rb (test_implemented_ole_types):
+ support some environment which returns IShellDispatch5 instead
+ of IShellDispatch.
+
+Tue Aug 28 15:42:09 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_subseq): retrieve substring based on byte offset.
+
+ * string.c (rb_str_rindex_m): was confusing character offset and
+ byte offset.
+
+Tue Aug 28 14:23:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_splice_0): should check to modify. [ruby-dev:31665]
+
+Tue Aug 28 14:21:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_prepare): set parser encode too when BOM exists.
+
+Tue Aug 28 00:51:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: fix Mutex to be interruptable lock.
+
+ * thread_win32.ci, thread_win32.h, thread_pthread.ci, thread_pthread.h:
+ prepare native_cond_*() which are based on pthread_cond_*() spec.
+
+ * prelude.rb: fix Mutex#synchronize method.
+
+ * vm_core.h, include/ruby/intern.h: change unblock function interface
+ (to pass some user data).
+
+ * file.c, process.c: ditto.
+
+ * benchmark/bm_vm2_mutex.rb: add a benchmark for mutex.
+
+ * benchmark/bm_vm3_thread_mutex.rb: add a benchmark for mutex
+ with contention.
+
+ * benchmark/run.rb: fix to remove ENV['RUBYLIB'] for matzruby.
+
+ * test/ruby/test_thread.rb: add a test.
+
+ * common.mk: fix benchmark options.
+
+Mon Aug 27 23:14:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): wrong strip point. [ruby-dev:31652]
+
+ * string.c (rb_str_each_line): should swallow sequence of newlines
+ if rs (optional argument) is an empty string. [ruby-dev:31652]
+
+Mon Aug 27 22:39:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_codelen): raises invalid sequence exception
+ if ONIGENC_CODE_TO_MBCLEN() returns zero. [ruby-dev:31661]
+
+ * encoding.c (rb_enc_mbclen): check invalid sequence.
+
+Mon Aug 27 20:27:59 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_type_progid): fix the bug.
+ [ruby-dev:31576]
+
+ * test/win32ole/test_win32ole_type.rb (test_initialize):
+ remove duplicate assertions.
+
+Mon Aug 27 19:10:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getlogin): update documentation to note
+ security issue. [ruby-Bugs-11821]
+
+Mon Aug 27 15:56:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_encoding): return the encoding of a Symbol.
+
+Mon Aug 27 15:33:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (IEEE_BIG_ENDIAN): use configured value. [ruby-dev:31623]
+
+ * util.c (Llong): set to LONG_LONG if available.
+
+Mon Aug 27 13:11:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_trans): wrong condition for mbmaxlen==1 strings.
+ [ruby-dev:31652]
+
+Mon Aug 27 00:41:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_each_byte): caused infinite loop. [ruby-dev:31652]
+
+ * io.c (rb_io_getc): should return nil at EOF, not EOFError.
+
+ * lib/delegate.rb (SimpleDelegator::__setobj__): use raise
+ argument to specify backtrace.
+
+ * test/ruby/test_fnmatch.rb (TestFnmatch::bracket_test):
+ String#include? no longer works for Fixnum. use #chr.
+ [ruby-dev:31652]
+
+Sun Aug 26 12:27:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: fix to remove Fiber.new until fiber.so is not loaded.
+
+ * test/ruby/test_continuation.rb: fix to use resume.
+
+Sun Aug 26 06:51:46 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_wc2mb, reg_enum_key): allocate
+ buffer should be NULL terminated.
+
+Sun Aug 26 06:04:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_setup_method): reorder code for branch prediction.
+
+Sun Aug 26 05:54:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_call_method): fix to relaxant safe level check
+ ($SAFE > 2). [ruby-core:11998]
+
+ * bootstraptest/test_method.rb: add tests for above.
+
+Sun Aug 26 05:52:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_fiber.rb: fix to require 'continuation'.
+
+Sat Aug 25 23:52:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_next): message changed.
+
+Sat Aug 25 23:22:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/encoding.h: remove unused rb_enc_ismbchar().
+
+Sat Aug 25 22:50:14 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_event_free, EVENTSINK_Destructor,
+ fev_initialize): remove the connection ole_event_free and
+ EVENTSINK_Destructor.
+
+Sat Aug 25 17:52:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * string.c, include/ruby/intern.h: export rb_str_length().
+
+ * insns.def: use rb_str_length() in opt_length.
+
+Sat Aug 25 17:48:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: rename FIBER_STACK_SIZE to FIBER_VM_STACK_SIZE.
+
+Sat Aug 25 17:05:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (swallow): removed condition using an unset variable.
+
+ * parse.y, re.c: re-applied revision 13092.
+
+ * string.c (rb_str_splice): return from void function.
+
+ * include/ruby/encoding.h (rb_enc_str_new): prototype added.
+
+Sat Aug 25 11:45:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c: provide basic features for M17N.
+
+ * parse.y: encoding aware parsing.
+
+ * parse.y (pragma_encoding): encoding specification pragma.
+
+ * parse.y (rb_intern3): encoding specified symbols.
+
+ * string.c (rb_str_length): length based on characters.
+ for older behavior, bytesize method added.
+
+ * string.c (rb_str_index_m): index based on characters. rindex as
+ well.
+
+ * string.c (succ_char): encoding aware succeeding string.
+
+ * string.c (rb_str_reverse): reverse based on characters.
+
+ * string.c (rb_str_inspect): encoding aware string description.
+
+ * string.c (rb_str_upcase_bang): encoding aware case conversion.
+ downcase, capitalize, swapcase as well.
+
+ * string.c (rb_str_tr_bang): tr based on characters. delete,
+ squeeze, tr_s, count as well.
+
+ * string.c (rb_str_split_m): split based on characters.
+
+ * string.c (rb_str_each_line): encoding aware each_line.
+
+ * string.c (rb_str_each_char): added. iteration based on
+ characters.
+
+ * string.c (rb_str_strip_bang): encoding aware whitespace
+ stripping. lstrip, rstrip as well.
+
+ * string.c (rb_str_justify): encoding aware justifying (ljust,
+ rjust, center).
+
+ * string.c (str_encoding): get encoding attribute from a string.
+
+ * re.c (rb_reg_initialize): encoding aware regular expression
+
+ * sprintf.c (rb_str_format): formatting (i.e. length count) based
+ on characters.
+
+ * io.c (rb_io_getc): getc to return one-character string.
+ for older behavior, getbyte method added.
+
+ * ext/stringio/stringio.c (strio_getc): ditto.
+
+ * io.c (rb_io_ungetc): allow pushing arbitrary string at the
+ current reading point.
+
+ * ext/stringio/stringio.c (strio_ungetc): ditto.
+
+ * ext/strscan/strscan.c: encoding support.
+
+Sat Aug 25 10:59:19 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: separate Continuation and Fiber from core.
+
+ * ext/continuation/*, ext/fiber/*: ditto.
+
+ * include/ruby/ruby.h: remove rb_cFiber.
+
+ * include/ruby/intern.h: add the rb_fiber_new() declaration.
+
+ * enumerator.c (next_init): fix to use rb_fiber_new().
+
+ * test/ruby/test_enumerator.rb: remove next? tests.
+
+ * test/ruby/test_continuation.rb: add a require 'continuation'.
+
+ * test/ruby/test_fiber.rb: add a require 'fiber'.
+
+Sat Aug 25 10:20:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (prelude.o): depends on vm_core.h now.
+
+ * common.mk (prelude.c): depends on tool/compile_prelude.rb too.
+
+ * common.mk (prereq): updates all auto-generated sources.
+
+ * tool/compile_prelude.rb: separated dynamic and static portions.
+
+Sat Aug 25 10:05:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * prelude.rb: add Thread.exclusive. This class method
+ is different from 1.8's. Thread.exclusive only does
+ synchronize with VM global mutex.
+
+Sat Aug 25 09:39:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_s_try_convert): more document description.
+
+ * re.c (rb_reg_s_try_convert): typo fixed.
+
+Sat Aug 25 08:54:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * id.h, id.c: remove idFuncall.
+
+ * compile.c (iseq_specialized_instruction): ditto.
+
+Sat Aug 25 08:47:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * tool/compile_prelude.rb: fix to include "vm_core.h".
+
+Sat Aug 25 03:49:14 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/sentence.rb (Sentence): include Enumerable.
+ (Sentence#each): defined.
+
+ * test/ruby/test_assignment.rb: use Sentence#expand.
+
+Sat Aug 25 03:08:57 2007 Koichi Sasada <ko1@atdot.net>
+
+ * prelude.rb: fix Mutex#synchronize definition.
+
+Sat Aug 25 02:08:45 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_s_try_convert): a new class method to convert
+ object or nil if it's not target-type. this mechanism is used
+ to convert types in the C implemented methods.
+
+ * hash.c (rb_hash_s_try_convert): ditto.
+
+ * io.c (rb_io_s_try_convert): ditto.
+
+ * re.c (rb_reg_s_try_convert): ditto.
+
+ * string.c (rb_str_s_try_convert): ditto.
+
+Sat Aug 25 00:49:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_loop_generator.rb: added.
+
+Sat Aug 25 00:22:31 2007 Koichi Sasada <ko1@atdot.net>
+
+ * prelude.rb: added. run this script on startup.
+
+ * tool/compile_prelude.rb: compile prelude.rb to C string.
+ (prelude.rb -> prelude.c)
+
+ * common.mk: fix to build with prelude.c.
+
+ * inits.c (rb_call_inits): ditto.
+
+ * thread.c (Init_Thread): move definition of Mutex#synchronize
+ to prelude.rb.
+
+Sat Aug 25 00:08:43 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_massign_opt): fix to skip massign optimization
+ with global variables.
+
+ * bootstraptest/test_massign.rb: add some tests for above.
+
+Fri Aug 24 18:42:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_dir.rb (TestDir::setup): ?c now makes a string.
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::initialize):
+ initialize @workdir to stop warning.
+
+Fri Aug 24 18:30:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/drb/drb.rb (DRb::DRbServer::InvokeMethod::perform_without_block):
+ replace funcall by send!. other files in the distribution as well.
+
+Fri Aug 24 17:06:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_send_bang): abandon the name funcall for private
+ aware method call.
+
+Fri Aug 24 15:27:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_next): stop pre-fetching.
+
+ * enumerator.c (Init_Enumerator): remove next? method.
+
+Fri Aug 24 15:14:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_loop): now handles StopIteration exception.
+
+Thu Aug 23 20:31:31 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: optimize simple massign.
+
+Thu Aug 23 20:02:25 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (reg_get_value): use RegQueryValueEx instead
+ of RegQueryValueEx.
+
+ * ext/win32ole/win32ole.c (typelib_file_from_clsid): fix the bug
+ that the function always returns Qnil.
+
+ * test/win32ole/test_win32ole_type.rb (test_initialize): add some test.
+
+Thu Aug 23 17:25:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (group_member): check if presents.
+
+ * configure.in (XCFLAGS): add _GNU_SOURCE on linux.
+
+ * file.c (group_member): use system routine if available.
+
+ * process.c: moved _GNU_SOURCE macro to Makefile.
+
+Thu Aug 23 16:59:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (compile_massign), insnhelper.ci (vm_throw): not use C99
+ comment.
+
+ * cont.c (rb_cont_call, fiber_switch, rb_fiber_resume, rb_fiber_yield):
+ suppress warnings.
+
+ * cont.c (rb_fiber_start): change on non-volatile variable between
+ setjmp and longjmp may not has an effect.
+
+ * enumerator.c (sym_call): initialize first.
+
+ * enumerator.c (enum_iter): typedefed.
+
+ * enumerator.c (next_i): suppress a warning.
+
+Thu Aug 23 16:04:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def, parse.y: fix massign order. This change
+ causes performance problem. Try vm1_swap benchmark.
+ [ruby-dev:31522]
+
+ * insns.def, insnhelper.ci: move process body of expandarray insn to
+ vm_expandarray().
+
+ * bootstraptest/test_knownbug.rb, bootstraptest/test_massign.rb:
+ move a solved test.
+
+Thu Aug 23 15:51:19 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_norm_arg): ripper has no shadowing check.
+
+ * parse.y (f_block_arg): dispatch blkarg_mark.
+
+Thu Aug 23 15:48:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (make_masgn_lhs, iseq_compile_each): fixed indent.
+
+ * compile.c (iseq_translate_threaded_code),
+ vm_evalbody.ci (get_insns_address_table),
+ template/vmtc.inc.tmpl (insns_address_table): constified.
+
+ * vm_evalbody.ci (vm_eval),
+ template/insns_info.inc.tmpl (insn_stack_increase, insn_ret_num):
+ suppress warnings.
+
+Thu Aug 23 13:19:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_norm_arg): check also nested arguments. [ruby-dev:31502]
+
+Thu Aug 23 00:06:48 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c: updated for ANSI C only. applied a patch from
+ <snakagawa AT infoteria.co.jp>. [ruby-dev:31591]
+
+Thu Aug 23 00:04:45 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/strtod.c: removed. [ruby-dev:31588]
+
+ * LEGAL: updated.
+
+Wed Aug 22 15:59:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb:
+ fix typo of filename (test_knownbug.rb).
+
+Wed Aug 22 14:04:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: added. This file will contain
+ test cases which point out known bug. If bug is fixed, tests
+ should move to the suitable place.
+
+ * bootstraptest/test_massign.rb: move a test which show known bug
+ to test_knownbug.rb.
+
+Wed Aug 22 13:02:26 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (in_temporary_working_directory):
+ don't remove the directory specified by --dir.
+
+Wed Aug 22 05:51:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): replaced by the implementation by David
+ M. Gay inspired by William D. Clinger's paper "How to Read Floating
+ Point Numbers Accurately" [Proc. ACM SIGPLAN '90, pp. 92-101].
+ a patch from Satoshi Nakagawa <snakagawa AT infoteria.co.jp>.
+ [ruby-dev:31582]
+
+ * test/ruby/test_float.rb (TestFloat::test_float): add test for
+ precision.
+
+Wed Aug 22 03:51:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: add Fiber#resume and Fiber.yield.
+ and Fiber::Core class to realize Coroutine.
+
+ * include/ruby/intern.h: declare rb_fiber_yield(), rb_fiber_resume().
+
+ * enumerator.c: use above api.
+
+ * test/ruby/test_fiber.rb: fix and add tests for above changes.
+
+Tue Aug 21 21:09:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/tmpdir.rb (Dir.mktmpdir): make directory suffix specifiable.
+ suggested by knu. [ruby-dev:31568]
+
+Tue Aug 21 15:00:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * st.c (st_clear): reset num_entries too.
+
+Tue Aug 21 13:57:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (st_foreach_func, rb_foreach_func): typedefed.
+
+ * hash.c (rb_hash_clear): use st_clear() unless iterating.
+
+ * st.c (struct st_table_entry): add new members, fore and back, to
+ iterate in inserted order.
+
+ * include/ruby/st.h (struct st_table): ditto.
+
+Tue Aug 21 04:09:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm2_case.rb: add a new benchmark.
+ YARV optimize case/when syntax. If every conditions
+ are literal (such as Symbol, Fixnum, String), dispatch
+ calc order will be O(1).
+
+Tue Aug 21 04:08:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_enumerator.rb: fix last commit.
+
+Tue Aug 21 03:59:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test_enumerator.rb (enum_test): fix to return sorted
+ array (for Hash test).
+
+Tue Aug 21 03:55:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * enumerator.c (next_i): fix to return with Fiber#yield at
+ the end of each block. [ruby-dev:31470]
+
+ * enumerator.c (enumerator_next_p): call init_next if not
+ initialized. [ruby-dev:31514]
+
+ * test/ruby/test_enumerator.rb: add tests for Enumerator.
+
+Mon Aug 20 23:28:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (Init_String): remove Symbol.intern and Symbol#dump.
+ [ruby-dev:31525]
+
+ * dir.c (dir_foreach): return Enumerator if no block given.
+ [ruby-dev:31525]
+
+ * io.c (rb_io_s_foreach): argument count check before making
+ Enumerator. [ruby-dev:31525]
+
+Mon Aug 20 23:17:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct rb_thread_struct): removed first_func_arg and
+ reuse first_args instead.
+
+Sun Aug 19 13:31:40 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c: use VALGRIND_MAKE_MEM_UNDEFINED to detect use of collected
+ objects if valgrind is available. It cannot detect first 2 words
+ because they are used as the free list.
+
+Sun Aug 19 13:13:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each/NODE_RESBODY): fix to add
+ additional nop to prevent tailcall optimization.
+
+ * vm_opts.h: clean up comments.
+
+Sun Aug 19 12:58:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_call_bmethod): fix to propagate information
+ that this proc is "from Method". [ruby-dev:31490]
+
+ * proc.c (method_proc, rb_mod_define_method): ditto.
+
+ * vm.c (vm_invoke_proc_core): removed.
+
+ * vm_core.h: ditto.
+
+Sun Aug 19 12:36:11 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/sentence.rb: new method Sentence().
+
+Sun Aug 19 12:32:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_callee_setup_arg): fix to mark enough VM stack.
+ [ruby-dev:31492]
+
+Sat Aug 18 19:02:34 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_yield.rb (TestYieldGen): relax array size check
+ in nested parameters.
+ [ruby-dev:31485]
+
+Sat Aug 18 17:44:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tcltklib.c (Init_tcltklib): use rb_set_end_proc().
+
+Sat Aug 18 17:40:11 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (is_ruby_native_thread): check properly. [ruby-dev:31166]
+
+Sat Aug 18 16:44:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_call_bmethod),
+ vm.c (vm_invoke_proc_core): fix to do not restore
+ $SAFE when proc invoked by bmethod.
+
+ * vm_core.h: ditto.
+
+Sat Aug 18 16:44:49 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.ci (ruby_error_print): call error_print.
+
+ * eval_jump.ci, process.c (rb_exit, rb_f_exit, rb_f_abort): moved.
+
+Sat Aug 18 15:59:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (detach_process_watcher): should not pass the pointer
+ to an auto variable to the thread to be created. pointed and
+ fix by KUBO Takehiro <kubo at jiubao.org> [ruby-dev:30618]
+
+Sat Aug 18 15:52:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insnhelper.ci (vm_send_optimize): use MEMMOVE to shift values inside
+ an array.
+
+Sat Aug 18 15:45:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insnhelper.ci (vm_yield_setup_args): rsize and psize should not be
+ negative.
+
+Sat Aug 18 14:35:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insnhelper.ci (vm_callee_setup_arg, vm_send_optimize,
+ vm_yield_setup_args): bulk copy for arguments.
+
+Sat Aug 18 13:55:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix to allow self.x=
+ if x= is private.
+
+ * bootstraptest/test_method.rb: add a test for above.
+
+Sat Aug 18 14:05:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reg_compile_gen): obtain error info from errinfo.
+
+ * re.c (rb_reg_error_desc): make RegexpError for initialization error.
+
+ * re.c (rb_reg_compile): return nil and set errinfo if error.
+
+Sat Aug 18 13:23:01 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c: $! should not be writable.
+
+ * eval.c (rb_rubylevel_errinfo): added. rb_errinfo() returns
+ rb_thread_t#errinfo. rb_rubylevel_errinfo() returns $! value.
+
+Sat Aug 18 13:14:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_callee_setup_arg): fix to check arguments
+ correctly. [ruby-dev:31472]
+
+Sat Aug 18 13:13:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_exception.rb: add escape character ("\") for
+ editors.
+
+Sat Aug 18 12:42:50 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_yield.rb (TestYieldGen): add test for yielding to
+ lambda using lambda parameter passing emulator.
+
+Sat Aug 18 12:24:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/test.rb, test/ruby/test_system.rb(valid_syntax?): keep
+ comment lines first.
+
+Sat Aug 18 11:44:59 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_set_arguments), insnhelper.ci
+ (vm_callee_setup_arg, vm_yield_setup_args):
+ fix to cause raise on "lambda{|a|}.call(1, 2)".
+ [ruby-dev:31464]
+
+ * bootstraptest/test_block.rb: add tests for above.
+
+Sat Aug 18 01:12:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (frame_func_id): return proper method ID.
+
+Fri Aug 17 22:43:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): massign should return rvalue(s).
+
+Fri Aug 17 22:10:19 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_basicinstructions.rb: fix old tests.
+ class variables should be inherited.
+
+Fri Aug 17 21:20:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_call), eval_method.ci (rb_add_method, rb_alias),
+ insnhelper.ci (vm_call_method): fix to save safelevel for
+ method node.
+
+ * include/ruby/node.h: ditto.
+
+ * bootstraptest/test_method.rb: add a test for above.
+
+Fri Aug 17 16:02:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_terminate_all): fix to ignore
+ exceptions.
+
+ * thread.c (thread_start_func_2): fix
+ abort_on_exception process. [ruby-dev:31394]
+
+Fri Aug 17 14:38:36 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (in_temporary_working_directory): use
+ Dir.mktmpdir to create and remove temporary directory.
+ (Dir.mktmpdir): define if not available.
+ [ruby-dev:31431]
+
+Fri Aug 17 03:07:37 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix throw insn option of next.
+
+Fri Aug 17 01:25:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_set_arguments), insnhelper.ci
+ (vm_callee_setup_arg, vm_yield_setup_args): fix
+ block parameter problems. [ruby-dev:31437], [ruby-dev:31440]
+
+ * bootstraptest/test_block.rb: add a test of [ruby-dev:31440].
+
+Fri Aug 17 01:24:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (ruby_iseq_disasm): fix to show arg_simple value.
+
+Fri Aug 17 01:21:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (throw): insert a RUBY_VM_CHECK_INTS(). [ruby-dev:31361]
+
+Thu Aug 16 20:40:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigtrunc): RBIGNUM(x)->len may be zero. out of bound
+ access. [ruby-dev:31404]
+
+ * sprintf.c (rb_str_format): small float should not call
+ rb_dbl2big().
+
+Thu Aug 16 22:10:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix next/redo stack consistency.
+ [ruby-dev:31373]
+
+ * bootstraptest/test_syntax.rb: add tests for above.
+
+ * sample/test.rb: fix to use __FILE__ instead of $0 to know basedir.
+
+Thu Aug 16 21:14:06 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (BASERUBY): need AC_SUBST. [ruby-dev:31438]
+
+Thu Aug 16 19:18:26 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/sentence.rb: Sentence class implemented
+ based on sentgen.rb
+
+ * test/ruby/sentgen.rb: removed.
+
+ * test/ruby/test_assignment.rb: use sentence.rb.
+
+ * test/ruby/test_yield.rb: block parameter passing emulator
+ implemented.
+
+Thu Aug 16 16:48:47 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (BASERUBY): check if base ruby is runnable first.
+ [ruby-core:11900]
+
+Thu Aug 16 16:46:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (aix): enable shared by default.
+
+ * configure.in (aix): for 64bit-mode AIX. [ruby-dev:31401]
+ + use CC for LDSHARED if non-gcc,
+ + moved -G option from *LDFLAGS to LDSHARED,
+ + set -brtl only in XLDFLAGS.
+
+Thu Aug 16 13:06:08 2007 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big_lshift): make shift offset long type.
+ (big_rshift): ditto.
+ (rb_big_lshift): ditto.
+ (big_rshift): ditto.
+ [ruby-dev:31434]
+
+Thu Aug 16 06:29:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_readpartial): argf_forward needs argc and argv.
+
+Thu Aug 16 02:47:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_m_yield): added. use this function
+ for Fiber#yield instead of rb_fiber_yield.
+
+Thu Aug 16 00:36:52 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/tmpdir.rb (Dir.mktmpdir): new method. [ruby-dev:31416]
+
+Wed Aug 15 18:57:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (os_live_obj): fix to skip T_VALUES.
+
+ * sample/test.rb: add an ObjectSpace test.
+
+Wed Aug 15 16:49:04 2007 Koichi Sasada <ko1@atdot.net>
+
+ * inits.c (rb_call_inits): change initializing order.
+ [ruby-dev:31420]
+
+Wed Aug 15 16:44:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (ARGF_FORWARD): wrongly compares with current_file with
+ rb_stdout. should be rb_stdin. [ruby-cvs:20177]
+
+Wed Aug 15 14:59:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_initialize, argf_each_line, argf_each_byte): suppress
+ warnings.
+
+Wed Aug 15 14:22:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: remove "//" type comment.
+
+Wed Aug 15 13:42:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: fix rules around f_margs. "make test" passes all tests.
+
+ * bootstraptest/test_block.rb: add some tests for above.
+
+Wed Aug 15 13:50:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_delete_key): delete the entry without calling block.
+
+ * hash.c (rb_hash_shift): should consider iter_lev too.
+
+ * hash.c (delete_if_i): use rb_hash_delete_key() so that the block
+ isn't called twice. [ruby-core:11556]
+
+Wed Aug 15 13:39:25 2007 Koichi Sasada <ko1@atdot.net>
+
+ * process.c (proc_geteuid): fix strange conversion. [ruby-dev:31417]
+
+Wed Aug 15 01:05:55 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_check): don't call newtest.
+ (assert_equal): call newtest.
+ (assert_match): ditto.
+
+Tue Aug 14 21:43:39 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_check): new method.
+ (assert_match): new method.
+ (assert_equal): use assert_check.
+ (pretty): give failure description as an argument.
+
+ * bootstraptest/test_exception.rb: use assert_match to describe the
+ test for [ruby-dev:31407]. [ruby-dev:31412]
+
+Tue Aug 14 19:53:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (Init_Proc), eval.c (Init_eval), eval_intern.h: move
+ init place of exception_error.
+
+ * inits.c: ditto.
+
+ * eval.c (Init_eval): set exception_error#throwed_state as TAG_FATAL.
+ [ruby-dev:31407]
+
+ * bootstraptest/test_exception.rb: add a test for above.
+
+Tue Aug 14 19:51:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: change test order (test -> btest).
+
+Tue Aug 14 00:04:27 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: 0.1.8 -> 0.1.9.
+
+ * test/rss/test_version.rb: followed the above change.
+
+ * lib/rss/parser.rb: fixed a bug that handles unintended elements.
+ Thanks to Takuo Yonezawa. [ruby-list:43841]
+
+Mon Aug 13 17:23:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_clear_trace_func, rb_thread_stop_timer_thread):
+ declarations for forward references.
+
+ * eval.c (rb_longjmp, eval): use local variable.
+
+ * eval.c (rb_longjmp): string object not to be optimized.
+
+Mon Aug 13 13:21:58 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: make ftp passive mode to avoid NAT problem.
+ [ruby-dev:31377]
+
+Mon Aug 13 09:18:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_getc): should returns
+ one-character string.
+
+ * ext/stringio/stringio.c: remove unnecessary prototypes.
+
+ * ext/stringio/stringio.c (strio_getbyte): new method.
+
+ * ext/stringio/stringio.c (strio_readbyte): new method.
+
+ * ext/stringio/stringio.c (strio_ungetc): should take a string as
+ an input.
+
+Mon Aug 13 08:19:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_close): always close via method.
+
+ * io.c (Init_IO): remove obsolete Kernel#getc.
+
+Mon Aug 13 05:03:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_raise): check if target thread is
+ thrown by another thread or not. [ruby-dev:31371]
+
+ * bootstraptest/test_thread.rb: add a test for above.
+
+Mon Aug 13 04:35:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_peephole_optimize): fix peephole optimization
+ bug. [ruby-dev:31360]
+
+ * bootstraptest/test_syntax.rb: add a test for above.
+
+Mon Aug 13 04:02:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c (debug_print_pre): fix to show control frame count.
+
+ * insns.def (opt_call_c_function): fix operand type.
+
+ * lib/vm/instruction.rb: ditto.
+
+ * insnhelper.ci (vm_push_frame, vm_pop_frame): fix to show
+ control stack status on if VMDEBUG == 2.
+
+ * vm.h: add a comment about VMDEBUG.
+
+ * iseq.c (find_prev_line_no): fix to skip bug report if
+ line is not found.
+
+ * lib/vm/instruction.rb: fix to use build_string() on
+ source code generators.
+
+Mon Aug 13 03:57:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * template/yasmdata.rb.tmpl: fix type and name.
+
+Sat Aug 11 23:27:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_each_line): should use #each_line, not #each.
+
+ * io.c (argf_each_line): simplified.
+
+ * io.c (argf_getline): should handle non T_FILE object in ARGV.
+
+ * io.c (argf_each_byte): each_byte should yield bytes not
+ one-character strings. [ruby-dev:31374]
+
+Sat Aug 11 07:24:55 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: reverted some wrongly erased "o" options
+ (pointed out by nobu).
+
+Sat Aug 11 00:01:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): not re-raise to main thread if it is
+ joining the current thread.
+
+Fri Aug 10 23:54:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_create_core): inherit the priority of creating
+ thread. submitted at [ruby-core:11873] by David Flanagan <david AT
+ davidflanagan.com>. [ruby-core:11876]
+
+Fri Aug 10 05:12:19 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): let abort_on_exception work.
+ [ruby-core:11873]
+
+Fri Aug 10 04:47:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (internal_id_gen): internal ID must be bigger than
+ tLAST_TOKEN.
+
+Thu Aug 9 16:04:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): check if rhs has value before assignment instead
+ inside node_assign_gen(). [ruby-dev:31293]
+
+ * parse.y (call_bin_op_gen, call_uni_op_gen): split call_op_gen.
+
+Thu Aug 9 14:01:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_marg_list): renamed from f_marg_head.
+
+ * parse.y (f_margs): allow multiple mandatory arguments after a splat.
+ [ruby-dev:31153]
+
+Thu Aug 9 02:02:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_cycle): typo fixed. a patch from Kazuhiro
+ NISHIYAMA <zn AT mbf.nifty.com>. [ruby-dev:31362]
+
+Wed Aug 8 19:17:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): no longer check
+ HAVE_RB_IO_STDIO_FILE.
+
+Wed Aug 8 15:52:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_next_p): should check correctly even when
+ e.next has not been called before.
+
+ * enumerator.c (enumerator_next): raise StopIteration (name taken
+ from Python) instead of IndexError.
+
+ * enum.c (enum_zip): catch StopIteration exception.
+
+ * enumerator.c (enumerator_with_index): return Enumerator if no
+ block is given.
+
+ * test/ruby/test_iterator.rb (TestIterator::test_enumerator): add
+ test for enumerators.
+
+Wed Aug 8 11:48:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): should not use RTEST for non-VALUE.
+
+Wed Aug 8 11:25:25 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): should preserve sign mark.
+
+Wed Aug 8 11:02:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (btest-miniruby, test-sample): split the test target
+ so that -k option works.
+
+Tue Aug 7 14:58:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (establishShell): handshaking before close slave
+ device. [ruby-talk:263410]
+
+ * ext/pty/pty.c (MasterDevice, SlaveDevice, deviceNo): constified.
+
+ * ext/pty/pty.c (SlaveName): removed static buffer.
+
+ * ext/pty/expect_sample.rb: support for autologin.
+
+Tue Aug 7 13:58:03 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (ruby_special_consts): added RUBY_SPECIAL_SHIFT.
+
+ * .gdbinit: some improvements.
+
+Tue Aug 7 13:28:32 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (node_name.inc): use $? instead of $< for nmake.
+ [ruby-dev:31356]
+
+Tue Aug 7 12:45:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_cv_func_isinf): set yes also on OpenSolaris.
+ [ruby-Bugs-12859]
+
+Tue Aug 7 12:31:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): fix for win32 platforms.
+
+Tue Aug 7 02:58:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): make Bignum#to_s even faster. a patch
+ from Kenta Murata <muraken AT gmail.com>. [ruby-dev:31354]
+
+Tue Aug 7 01:42:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_zip): zip no longer converts arguments into
+ arrays, uses enumerators.
+
+Tue Aug 7 01:27:47 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * cont.c (rb_fiber_yield): change argument ordering. export.
+
+ * cont.c (rb_fiber_current): export
+
+ * include/ruby/intern.h: export several functions from cont.c.
+
+ * enumerator.c (enumerator_next): new method to implement external
+ iterator (generator) using fiber.
+
+ * enumerator.c (enumerator_next_p): new method to check whether
+ any element is left in the generator sequence.
+
+ * enumerator.c (enumerator_rewind): a new method to rewind the
+ generator sequence.
+
+Tue Aug 7 01:15:24 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_cycle): new method to cycle enumerable forever.
+
+Tue Aug 7 00:05:38 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * irb/ruby-lex.rb: support for '\c'. [ruby-talk:263508]
+
+Mon Aug 6 20:29:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci, insns.def: move some statements to functions.
+
+ * vm.c, vm.h, vm_evalbody.ci: fix include/typedef places.
+
+Mon Aug 6 18:41:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * lib/vm/instruction.rb (make_header_analysys): fix last commit.
+
+Mon Aug 6 18:33:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * lib/vm/instruction.rb (make_header_analysys): add to separate
+ header addition process.
+
+Mon Aug 6 17:36:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rexml/encodings/{ISO-8859-15,CP-1252}.rb: fixed invalid syntax.
+
+Mon Aug 6 16:57:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * sample/test.rb: fix to output file name if it contains
+ invalid syntax.
+
+Mon Aug 6 16:41:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y (value_expr_gen): fix to cause "void value expression"
+ when jump expression such as "next" are shown on value_expr().
+ [ruby-dev:31119]
+
+ * bootstraptest/test_syntax.rb: fix to above change.
+
+Mon Aug 6 14:36:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: fix a f_marg rule. [ruby-dev:31160]
+
+Mon Aug 6 14:29:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb (assert_equal): add additional
+ message parameter.
+
+Mon Aug 6 13:34:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (INSNS): not chdir to srcdir.
+
+ * common.mk (node_name.inc): auto-generate node name list.
+
+ * iseq.c (ruby_node_name): ditto.
+
+ * iseq.c (iseq_s_compile_option_get, Init_ISeq): added a new
+ method VM::InstructionSequence::compile_option.
+
+ * lib/vm/instruction.rb (RubyVM::SourceCodeGenerator): --destdir
+ option.
+
+ * tool/node_name.rb: to auto-generate node name list.
+
+Sun Aug 5 11:51:39 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss, sample/rss, test/rss:
+ - 0.1.7 -> 0.1.8.
+ - supported <itunes:XXX>.
+ - reverted backward incompatibility API changes introduced 0.1.7.
+
+Sun Aug 5 04:56:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open_v, pipe_open_s): separate array and string
+ cases. [ruby-dev:31344]
+
+Fri Aug 3 11:05:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): save all CONFIG values.
+
+ * ext/extmk.rb (extmake): remove mkmf.log at clean, and extconf.h at
+ distclean, respectively.
+
+ * ext/extmk.rb: remove rdoc at clean, and installed list file at
+ distclean, respectively.
+
+Fri Aug 3 07:09:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: more verbose message. [ruby-Bugs-12766]
+
+ * lib/mkmf.rb (have_type): suppress a warning with -Wall.
+
+ * lib/mkmf.rb (find_type): new method.
+
+Fri Aug 3 00:00:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big2str_table): base cannot be 0 or 1.
+
+Thu Aug 2 23:42:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reg_compile_gen): set error if failed to compile regexp
+ literal. [ruby-dev:31336]
+
+ * re.c (option_to_str, arg_kcode, opt_kcode): options conversion
+ between int and string.
+
+ * re.c (rb_reg_compile): should not use regexp which could not get
+ initialized. [ruby-dev:31333]
+ return error message to let the parser know it.
+
+ * re.c (rb_reg_compile): append regexp options to error message.
+ [ruby-dev:31334]
+
+Thu Aug 2 22:05:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): faster Bignum#to_s using Karatsuba
+ algorithm. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
+ in [ruby-dev:31312], slightly modified by Kenta Murata
+ <muraken AT gmail.com> in [ruby-dev:31339].
+
+Thu Aug 2 13:46:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): should not check positional number as
+ width. [ruby-core:11838]
+
+Wed Aug 1 12:40:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * generic.rb (URI::Generic::merge_path): behave as RFC 3986.
+ [ruby-talk:252052]
+
+Tue Jul 31 23:38:09 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (_parse): now interprets slashed numerical
+ dates as a big endian (except dd/mm/yyyy). [experimental]
+
+Mon Jul 30 11:16:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_aref): check for Bignum index range.
+ [ruby-dev:31271]
+
+Sat Jul 28 09:35:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/digest/lib/digest.rb (Digest::self.const_missing): avoid
+ infinite recursive const_missing call. [ruby-talk:262193]
+
+Thu Jul 26 20:40:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eqq): call_super() in === does not work well
+ since Enumerable#=== has different behavior. [ruby-dev:31296]
+
+Thu Jul 26 13:57:45 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (load_1, dln_find_1): constified.
+
+ * dln.c (conv_to_posix_path): removed.
+
+ * ruby.c (usage): constified.
+
+ * ruby.c (rubylib_mangled_path, rubylib_mangled_path2): return
+ VALUE instead of a pointer to static buffer.
+
+ * ruby.c (push_include_cygwin): fixed buffer overflow.
+ [ruby-dev:31297]
+
+ * ruby.c (ruby_init_loadpath): not convert built-in paths.
+
+Tue Jul 24 10:37:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_f_p): return nil if no argument. [ruby-dev:31285]
+
+Tue Jul 24 01:05:07 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regint.h (USE_MATCH_RANGE_IS_COMPLETE_RANGE): undef to achieve old
+ rindex behavior. [ruby-dev:31265]
+
+Mon Jul 23 18:37:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/oniguruma.h: upgrade to Oniguruma 5.9.0. fixes
+ some memory violation. [ruby-dev:31070]
+
+Sun Jul 22 20:09:49 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (Date._parse): now accepts some new
+ hints. [experimental]
+
+ * lib/parsedate.rb: followed the changes on
+ lib/date/format.rb. [experimental]
+
+Sun Jul 22 16:06:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (is_ruby_native_thread): made an int function as
+ well as version 1.8.
+
+ * include/ruby/ruby.h (is_ruby_native_thread): moved prototype
+ from intern.h as well as version 1.8.
+
+Sun Jul 22 14:33:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_rename): deleted code to get rid of a bug of
+ old Cygwin.
+
+ * file.c (rb_file_truncate): added prototype of GetLastError()
+ on cygwin. [ruby-dev:31239]
+
+ * include/ruby/intern.h (is_ruby_native_thread): prototype.
+
+ * missing/strftime.c (strftime): fix printf format and actual
+ arguments.
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): ditto.
+
+ * ext/tk/tcltklib.c (ip_finalize): ditto.
+
+ * ext/win32ole/win32ole.c (lcid_installed): ditto.
+
+ * ext/socket/getnameinfo.c: include stdio.h always.
+
+Sat Jul 21 21:39:12 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb (Date._parse): now can take some
+ hints (its aim must be mainly determination of endianness of
+ date). [experimental]
+
+ * lib/date.rb, lib/date/format.rb (Date._parse): now completes
+ truncated year as default action. [experimental]
+
+ * lib/date.rb, lib/date/format.rb: added ::iso8601, ::rfc3339,
+ ::xmlschema, ::rfc2822, ::httpdate, ::jisx0301, #xmlschema,
+ #httpdate. [experimental]
+
+Sat Jul 21 17:48:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: inverted rules order.
+
+ * thread_win32.ci (w32_create_thread): bcc does not have
+ _beginthreadex().
+
+ * lib/mkmf.rb (create_makefile): make OBJS depend on RUBY_EXTCONF_H
+ only if extconf.h is created.
+
+ * bcc32/Makefile.sub: headers have moved.
+
+ * bcc32/{Makefile.sub,configure.bat,setup.mak: configure_args
+ support.
+
+ * bcc32/setup.mak: check runtime version.
+
+ * win32/win32.c (rb_w32_open_osfhandle): prototype has changed
+ in bcc 5.82.
+
+ * {win32,wince,bcc32}/setup.mak (-version-): no RUBY_EXTERN magic.
+
+ * win32/resource.rb: include patchlevel number.
+
+Sat Jul 21 12:06:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (init_mkmf): should remove mkmf.log too.
+
+Sat Jul 21 01:45:03 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (Date._parse): completes calendar week based year.
+
+ * lib/date/format.rb (Date._parse): detects year of ordinal date in
+ extended format.
+
+Fri Jul 20 16:30:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_sequence): raise SyntaxError instead of rb_bug
+ since this function can be called from VM::InstructionSequence.load.
+
+ * compile.c (insn_set_sc_state, iseq_set_sequence_stackcaching): ditto.
+
+Fri Jul 20 16:11:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c, compile.h (DECL_ANCHOR, INIT_ANCHOR): split not to
+ initialize aggregations with dynamic values. [ruby-talk:259306]
+
+ * eval.c (rb_protect): not to initialize aggregations with dynamic
+ values. [ruby-talk:259306]
+
+ * gc.c (mark_current_machine_context): ditto.
+
+ * thread.c (thgroup_list, call_trace_func): ditto.
+
+ * vm.c (vm_init_redefined_flag): ditto.
+
+Fri Jul 20 15:22:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_config.c (ossl_config_set_section): do not
+ initialize aggregations with dynamic values. [ruby-talk:259306]
+
+Fri Jul 20 10:39:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt, mlhs_node, lhs, arg, var_ref): return dummy
+ NODE_BEGIN after errors. [ruby-dev:31100], [ruby-dev:31118]
+
+ * parse.y (remove_begin): keep empty NODE_BEGIN, instead of null.
+ [ruby-dev:31252], [ruby-dev:31263]
+
+Fri Jul 20 09:50:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb (get_result_string): check $?.coredump?
+ first.
+
+ * bootstraptest/runner.rb (cleanup_coredump, check_coredump): see
+ stackdump file too.
+
+Thu Jul 19 20:39:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (value_expr_gen): warn for empty expression ().
+ [ruby-dev:31252]
+
+Thu Jul 19 19:24:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.ci (get_backtrace): check the result more.
+ [ruby-dev:31261] [ruby-bugs-12398]
+
+Thu Jul 19 14:38:45 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_lshift, rb_big_rshift): separated functions
+ to get rid of infinite recursion. fixed calculation in edge
+ cases. [ruby-dev:31244]
+
+ * numeric.c (rb_fix_lshift, rb_fix_rshift): ditto.
+
+Wed Jul 18 16:57:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): refine overflow check. [ruby-dev:31242]
+
+Wed Jul 18 09:19:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_parser_append_print, rb_parser_while_loop): moved check
+ for node to the head.
+
+ * ruby.c (proc_options): do nothing for -p/-n options if tree is null.
+ submitted by Yusuke ENDOH <mame AT tsg.ne.jp> at [ruby-dev:31243].
+
+Wed Jul 18 08:47:09 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_succ): Time#succ should return a time object in the
+ same timezone mode to the original. [ruby-talk:260256]
+
+Mon Jul 16 23:07:51 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/base64.rb (Base64::b64encode): should not specify /o option
+ for regular expression. [ruby-dev:31221]
+
+Mon Jul 16 22:57:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): make %u behave like %d for negative
+ values, since decimal format does not work with preceding dots.
+ [ruby-core:11575]
+
+Mon Jul 16 18:29:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_rindex_m): accept string-like object convertible
+ with #to_str method, as well as rb_str_index_m. [ruby-core:11692]
+
+Mon Jul 16 07:17:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (getspecial): lfp_svar_get() requires int for special
+ global variables.
+
+Mon Jul 16 05:45:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): more checks for format argument.
+ [ruby-core:11569], [ruby-core:11570], [ruby-core:11571],
+ [ruby-core:11573]
+
+Mon Jul 16 00:26:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): removed invariant variable. [ruby-dev:31236]
+
+Sun Jul 15 22:24:37 2007 pegacorn <subscriber.jp AT gmail.com>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): adjust format. [ruby-dev:31222]
+
+ * ext/digest/digest.c (rb_digest_instance_update,
+ rb_digest_instance_finish, rb_digest_instance_reset,
+ rb_digest_instance_block_length): %s in rb_raise() expects char*.
+ [ruby-dev:31222]
+
+ * ext/openssl/ossl.h: include ossl_pkcs5.h. [ruby-dev:31231]
+
+ * ext/openssl/ossl_pkcs5.h: new file for PKCS5. [ruby-dev:31231]
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_to_s): use ossl_raise()
+ instead of rb_raise(). [ruby-dev:31222]
+
+ * ext/sdbm/_sdbm.c: DOSISH platforms need io.h. [ruby-dev:31232]
+
+ * ext/syck/syck.h: include stdlib.h for malloc() and free().
+ [ruby-dev:31232]
+
+ * ext/syck/syck.h (syck_parser_set_input_type): prototype added.
+ [ruby-dev:31231]
+
+ * win32/win32.c: include mbstring.h for _mbspbrk(). [ruby-dev:31232]
+
+ * include/ruby/win32.h (rb_w32_getcwd): prototype added.
+ [ruby-dev:31232]
+
+Sun Jul 15 21:07:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (bigtrunc): do not empty Bignum. [ruby-dev:31229]
+
+Sun Jul 15 19:05:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_cstr_to_inum): check leading non-digits.
+ [ruby-core:11691]
+
+Sun Jul 15 04:42:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (get2comp): do nothing for empty Bignum. [ruby-dev:31225]
+
+Sat Jul 14 22:49:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_pow): integer power calculation: 0**n => 0,
+ 1**n => 1, -1**n => 1 (n: even) / -1 (n: odd).
+
+ * test/ruby/test_fixnum.rb (TestFixnum::test_pow): update test
+ suite. pow(-3, 2^64) gives NaN when pow(3, 2^64) gives Inf.
+
+Sat Jul 14 18:46:35 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: add --with-valgrind.
+
+ * gc.h (SET_MACHINE_STACK_END): new macro to replace
+ rb_gc_set_stack_end. it find out accurate stack boundary by
+ asm using gcc on x86.
+
+ * thread.c (rb_gc_set_stack_end): don't define if asm-version
+ SET_MACHINE_STACK_END is available.
+
+ * gc.c (mark_current_machine_context): extracted from garbage_collect.
+ it use SET_MACHINE_STACK_END to not scan out of stack area.
+ it notify conservative GC information to valgrind if
+ --with-valgrind.
+
+Sat Jul 14 14:04:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (sort_by_cmp): check if reentered. [ruby-dev:24291]
+
+Sat Jul 14 11:08:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/json/ext/generator/generator.c (check_max_nesting): wrong
+ format specifier. a patch from pegacorn <subscriber.jp AT gmail.com>.
+ [ruby-dev:31217]
+
+Sat Jul 14 02:27:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_pow): overflow detection using FIT_SQRT_LONG().
+ [ruby-dev:31215]
+
+Sat Jul 14 02:05:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (opt_div): LONG2FIX() may not work for corner cases,
+ use LONG2NUM() instead. [ruby-dev:31210]
+
+Sat Jul 14 00:34:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_round): should not return false, but self.
+ [ruby-dev:31212]
+
+Fri Jul 13 18:31:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/intern.h: remove unused function declarations.
+
+ * include/ruby/ruby.h: ditto.
+
+Fri Jul 13 17:32:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm.c (vm_free): clear free'ed living_threads field.
+ [ruby-dev:31163]
+
+ * insns.def (opt_succ): use cast to shut a warning up.
+
+Fri Jul 13 16:10:00 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): use ENV.to_hash to access
+ http_proxy environment variable to avoid case insensitive
+ environment search.
+
+Fri Jul 13 15:02:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): enclose command line except for
+ command.com which can not handle quotes. [ruby-talk:258939]
+
+Fri Jul 13 11:33:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_max, range_min): return nil for empty set as well as
+ 1.8 and Enumerable. [ruby-dev:31198]
+
+Fri Jul 13 11:28:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (bvar): semicolon was lost for ripper description.
+ [ruby-dev:31140]
+
+Fri Jul 13 11:25:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (program, stmt, primary): reduced duplicated code.
+
+ * parse.y (dsym): convert also literals containing NUL to
+ symbol.
+
+ * parse.y (debug_lines): use rb_hash_lookup() to get rid of
+ call of Hash#default.
+
+ * parse.y (ripper_warningS): unused in ripper right now.
+
+Fri Jul 13 10:33:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_flatten_bang): check argument if valid
+ integer. [ruby-dev:31197]
+
+Fri Jul 13 10:10:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (link_command, cc_command, cpp_command): do not expand
+ ::CONFIG which is an alias of MAKEFILE_CONFIG.
+
+Thu Jul 12 21:38:02 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insns.def (opt_succ): use LONG_MAX as maximum Fixnum VALUE.
+ [ruby-dev:31199]
+
+Thu Jul 12 18:42:18 2007 Tanaka Akira <akr@fsij.org>
+
+ * range.c (range_max): use FIX2LONG instead of FIX2INT to avoid
+ RangeError by ((-0x80000001)...(-0x80000001)).max on LP64.
+
+ * insns.def (opt_plus): use FIX2LONG instead of FIX2INT to avoid
+ RangeError by 0x3fffffffffffffff+1 on LP64.
+
+ * insns.def (opt_succ): don't use 0x80000000 which assumes 32bit VALUE.
+ use FIX2LONG instead of FIX2INT.
+ [ruby-dev:31190]
+
+Thu Jul 12 17:03:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (rb_struct_init_copy): disallow changing the size.
+ [ruby-dev:31168]
+
+Thu Jul 12 12:58:21 2007 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c: remove "yarv" prefix.
+
+ * array.c, numeric.c: ditto.
+
+ * insnhelper.ci, insns.def, vm_evalbody.ci: ditto.
+
+ * yarvcore.c: removed.
+
+ * yarvcore.h: renamed to core.h.
+
+ * cont.c, debug.c, error.c, process.c, signal.c : ditto.
+
+ * ext/probeprofiler/probeprofiler.c: ditto.
+
+ * id.c, id.h: added.
+
+ * inits.c: ditto.
+
+ * compile.c: rename internal functions.
+
+ * compile.h: fix debug flag.
+
+ * eval.c, object.c, vm.c: remove ruby_top_self.
+ use rb_vm_top_self() instead.
+
+ * eval_intern.h, eval_load: ditto.
+
+ * gc.c: rename yarv_machine_stack_mark() to
+ rb_gc_mark_machine_stack().
+
+ * insnhelper.h: remove unused macros.
+
+ * iseq.c: add iseq_compile() to create iseq object
+ from source string.
+
+ * proc.c: rename a internal function.
+
+ * template/insns.inc.tmpl: remove YARV prefix.
+
+ * thread.c: use rb_iseq_eval() and rb_str_new2().
+
+ * vm.c (rb_iseq_eval): added.
+
+ * vm.c: move some functions from yarvcore.c.
+
+ * vm_dump.c: fix to remove compiler warning.
+
+Thu Jul 12 12:24:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (opt_succ): fixed typo. [ruby-dev:31189]
+
+Thu Jul 12 10:30:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): moved prototye from thread_*.ci.
+
+ * thread_pthread.ci (thread_start_func_2): not use a directive
+ inside a macro argument. [ruby-talk:258763]
+
+ * thread.c (thread_join): pthread_t may not be pointer.
+
+ * thread_pthread.ci (ubf_select_each): ditto.
+
+Thu Jul 12 05:32:28 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (FIX2ULONG): drop sign bit for LLP64 platform.
+
+Tue Jul 10 19:34:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * hash.c (rb_hash_lookup): added. this function is similar to
+ rb_hash_aref(), but doesn't call Hash#default when no entry
+ exists.
+
+ * include/ruby/intern.h: ditto.
+
+ * insnhelper.ci (lfp_svar_get): use rb_hash_lookup().
+
+Tue Jul 10 19:16:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, insnhelper.ci, vm.c: change cref index (-1 -> 2).
+
+Tue Jul 10 18:49:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (exec_under): add proper casts.
+
+Tue Jul 10 16:58:16 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, insnhelper.ci: fix svar interface.
+
+ * compile.c (iseq_compile_each), yarvcore.h: fix to use new
+ svar interface for flip flop.
+
+ * eval.c: ditto.
+
+ * insns.def: ditto.
+
+ * include/ruby/intern.h: remove "rb_svar()" declaration.
+
+Tue Jul 10 16:52:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (rb_iseq_compile): formatted if/else to switch statement.
+
+Tue Jul 10 15:57:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/test_flip.rb: new test for flip-flop operator.
+
+Tue Jul 10 14:50:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/{Makefile.sub,setup.mak}: remove surplus slash from srcdir.
+
+Mon Jul 9 02:17:36 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * cont.c (cont_restore_1): workaround for x64-mswin64's SEH.
+
+Sun Jul 8 02:08:53 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/json.rb, lib/json/, ext/json/: import JSON 1.1.1
+
+Sat Jul 7 21:59:29 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (PP::PPMethods#pp_hash): sort condition changed:
+ all keys have a same class which is kind of Comparable.
+
+Sat Jul 7 17:12:37 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: use rb_bug() instead of rb_compile_error().
+
+Sat Jul 7 16:12:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: fix node construction (around f_margs).
+ [ruby-dev:31143]
+
+ * bootstraptest/test_block.rb: add a test for above.
+
+ * insnhelper.ci: fix indent.
+
+Sat Jul 7 15:36:50 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (PP::PPMethods#pp_hash): sort if
+ all keys are strings, symbols or integers.
+
+Sat Jul 7 15:30:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_yield_setup_args), vm.c, insns.def:
+ fix to pass nil as block parameter to yielded block.
+ [ruby-dev:31147]
+
+ * bootstraptest/test_block.rb: add a test for above.
+
+Fri Jul 6 19:55:10 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb.rb: typo. Thanks, Giles Bowkett.
+
+ * lib/irb/completion.rb: support Ruby1.9 changing return value
+ String to Symbol for Object#methods, etc. [ruby-dev:31148].
+
+Fri Jul 6 18:20:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: fix load path.
+
+ * common.mk: fix "test" rule to run with "btest".
+
+ * rubytest.rb, sample/test.rb: fix to show tests progress.
+
+Fri Jul 6 15:37:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_iterator.rb: fix test to 1.9 spec.
+
+Fri Jul 6 15:21:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_interrupt): suppress a gcc's officious warning.
+
+Fri Jul 6 14:57:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (keyword_to_name): constified.
+
+ * ext/ripper/eventids2.c (token_to_eventid): ditto.
+
+Fri Jul 6 14:50:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb: added --quiet option.
+
+Fri Jul 6 14:35:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_marg): wrap f_norm_arg assignment node with NODE_LIST.
+ [ruby-dev:31141]
+
+Fri Jul 6 12:15:01 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/sentgen.rb: new file.
+
+ * test/ruby/test_assignment.rb: tests implemented using assignment
+ generator and emulator.
+
+Fri Jul 6 03:06:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: remove unused code.
+
+ * compile.c (compile_massign): fix to invoke to_splat on
+ splat rhs (example: *a = *nil). [ruby-dev:31136]
+
+ * bootstraptest/test_massign.rb: add tests for above.
+
+ * compile.c (iseq_compile_each): disable excess optimization.
+ [ruby-dev:31126]
+
+Fri Jul 6 02:08:25 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: fix to invoke nil.to_splat on NODE_ARGSCAT.
+ [ruby-dev:31138].
+
+ * bootstraptest/test_literal.rb: add tests for above.
+
+Thu Jul 5 19:45:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h: rename rb_control_frame_t#magic to flag.
+
+ * vm.h: add VM_FRAME_TYPE() and VM_FRAME_FLAG().
+
+ * cont.c, insnhelper.ci, insns.def, vm.c, vm_dump.c,
+ vm_evalbody.ci, yarvcore.c: apply above changes.
+
+Thu Jul 5 19:16:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_basicinstructions.rb: remove an assertion using
+ unsupported hash literal (such as {1, 2}).
+
+ * test/ruby/test_hash.rb: ditto.
+
+Thu Jul 5 19:12:22 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c: Qfalse is VALUE, not pointer.
+
+Thu Jul 5 18:42:01 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): add break catch point.
+
+ * insns.def (throw): support correct "break" and "return".
+ this commit achieve that "make test" passes all tests.
+
+ * vm.c: ditto.
+
+Thu Jul 5 18:44:12 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (mlhs_basic): use mlhs_post after tSTAR.
+ [ruby-dev:31109]
+
+Thu Jul 5 18:27:58 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/{intern,ruby}.h, compile.[ch], error.c, eval.c,
+ eval_load.c, gc.c, iseq.c, main.c, parse.y, re.c, ruby.c,
+ yarvcore.[ch] (ruby_eval_tree, ruby_sourcefile, ruby_sourceline,
+ ruby_nerrs): purge global variables.
+
+ * ruby.c (proc_options): moved do_print and do_loop options
+ handling from ruby_process_options().
+
+Thu Jul 5 16:37:34 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (int_pow): fix previous nubu's commit.
+
+ * test/ruby/test_fixnum.rb: new test.
+
+Thu Jul 5 15:56:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (int_pow): even number multiplication never be negative.
+
+Thu Jul 5 10:42:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/{node,ruby}.h, ruby.c: added enum constants for gdb
+ support. [ruby-dev:31066]
+
+ * .gdbinit: some improvements.
+
+Thu Jul 5 10:13:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (global_symbols.last_id): reduce unused ID numbers.
+
+ * include/ruby/st.h, st.c (st_init_table, st_init_table_with_size):
+ constified.
+
+Wed Jul 4 23:36:27 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/httpauth/authenticator.rb
+ (WEBrick::HTTPAuth::Authenticator#check_scheme): auth-scheme must be
+ treated as a case-insensitive token according to RFC 2617 section 1.2.
+
+Wed Jul 4 18:30:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (mlhs_inner): new rule. [ruby-dev:31132]
+
+Wed Jul 4 05:11:57 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (set_relation): added.
+
+Wed Jul 4 04:58:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (caller_setup_args): fix to show correct class
+ on an error message (ex: m(&1)). [ruby-dev:31101]
+
+Wed Jul 4 04:30:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_array, iseq_compile_each): fix about array
+ generation in void context. [ruby-dev:31102]
+
+ * bootstraptest/test_literal.rb: add a test for above.
+
+Wed Jul 4 04:07:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_array): ignore NODE_ZARRAY.
+ [ruby-dev:31110]
+
+ * bootstraptest/test_method.rb: add a test for above.
+
+Wed Jul 4 04:04:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.h: fix debug print level.
+
+Wed Jul 4 03:52:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): support v[&b]= type method call.
+ [ruby-dev:31094]
+
+ * bootstraptest/test_method.rb: add a test for above.
+
+Wed Jul 4 03:43:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_massign): fix massign compilation
+ (example: a, *v, (*x) = ...). [ruby-dev:31107]
+
+ * bootstraptest/test_massign.rb: add tests for above.
+
+Tue Jul 3 23:12:29 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/onigiruma.h (ONIG_EXTERN): use RUBY_EXTERN if defined.
+
+ * regenc.h: include ruby/defines.h.
+
+ * regint.h: x64-mswin64 support.
+
+Tue Jul 3 13:47:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_save_machine_stack): clear saved_thread.machine_stack*.
+
+Mon Jul 2 21:45:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: rename iseq_translate_direct_threaded_code()
+ to iseq_translate_threaded_code().
+
+ * eval_intern.h, yarvcore.h: mv EXEC_EVENT_HOOK() and
+ exec_event_hooks() to yarvcore.h.
+
+ * insnhelper.ci, vm.c: mv yarv_finish_insn_seq to vm.c.
+
+ * insns.def (opt_call_c_function): fix to use RESTORE_REGS().
+
+ * iseq.c (rb_iseq_build_for_ruby2cext): fix to allocate iseq.
+
+Mon Jul 2 11:59:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defineclass): suppress a warning.
+
+ * insns.def (opt_call_c_function): should raise the thrown exception
+ instead of returning it.
+
+Mon Jul 2 08:53:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h, yarvcore.h: move declaration of sysstack_error
+ to yarvcore.h.
+
+ * iseq.c: fix symbol name (:toplevel -> :top).
+
+ * lib/vm/instruction.rb, template/vm.inc.tmpl: replaceable
+ current file name.
+
+Mon Jul 2 05:29:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, iseq.c: fix iseq some of load/store process.
+
+Mon Jul 2 03:09:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, compile.c, insnhelper.ci, iseq.c, vm.c:
+ rename structure names and field names.
+
+ * insnhelper.h, insns.def: add GET_CONST_INLINE_CACHE().
+
+ * iseq.c: add rb_iseq_build_for_ruby2cext().
+
+ * yarvcore.h, vm.h: move declaration of rb_insn_func_t
+ to yarvcore.h.
+
+Sun Jul 1 03:25:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.h, vm.h: some refactoring.
+ remove useless comments, etc.
+
+Sun Jul 1 03:02:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h: some refactoring on rb_iseq_t.
+ rename some variable names, add comments, etc.
+
+ * compile.c, iseq.c, proc.c, vm.c: ditto.
+
+Sun Jul 1 02:57:57 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.h: rename insn_func_type to rb_insn_func_type.
+
+ * vm_evalbody.ci: ditto.
+
+ * insns.def: add opt_call_native_compiled instruction
+ instead of opt_call_native_compiled.
+
+Sat Jun 30 00:17:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): return non-valid token for an invalid
+ instance/class variable name. a patch from Yusuke ENDOH
+ <mame AT tsg.ne.jp>. [ruby-dev:31095]
+
+Fri Jun 29 23:38:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmts): fix for ripper.
+
+Fri Jun 29 21:55:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: fix to show line number of blank block.
+ [ruby-dev:31093]
+
+Fri Jun 29 20:51:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/cgi/session.rb (create_new_id): don't cut off md5.hexdigest to
+ follow Ruby 1.8.
+
+Fri Jun 29 17:10:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.h: constified.
+
+ * debug.c (ruby_set_debug_option): separated from main.c.
+
+ * gc.c (ruby_gc_stress), signal.c (ruby_enable_coredump): prefixed.
+
+Fri Jun 29 16:39:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (proc_new): fix to return a proc object
+ which block is contained ([ruby-dev:31056]).
+
+Fri Jun 29 15:43:59 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_pow): get rid of division by zero. reported by
+ Yusuke ENDOH <mame AT tsg.ne.jp> [ruby-dev:31040]
+
+ * numeric.c (int_round): do nothing when rounding by zeroth digit.
+ check underflow. [ruby-dev:31043]
+
+Fri Jun 29 15:32:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in: add fastcall attribute check.
+
+Fri Jun 29 14:51:24 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assoc_list): remove expanded hash literal (no splat).
+
+ * lib/webrick/httpstatus.rb (WEBrick::HTTPStatus::EOFError): adapt
+ to new syntax.
+
+Fri Jun 29 14:48:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * tool/insns2vm.rb, lib/vm/instruction.rb: move process body
+ to lib/vm/instruction.rb.
+
+ * common.mk: fix aotc rule.
+ experimental. bin/ruby2cext is not added yet.
+
+Fri Jun 29 11:23:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (dsym): return non-null NODE even if yyerror(). based on a
+ patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:31085]
+
+Thu Jun 28 23:29:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assoc_list): odd number check only for NODE_ARRAY.
+ [ruby-dev:31082]
+
+Thu Jun 28 22:24:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * win32/Makefile.sub: define FUNC_FASTCALL macro.
+
+ * vm.h: fix to use FUNC_FASTCALL macro.
+ TODO: add FUNC_FASTCALL macro by configure.
+
+Thu Jun 28 19:38:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: fix to remove -Wall warnings on gcc.
+
+ * compile.c (make_name_with_str): removed. use rb_sprintf() instead.
+
+Thu Jun 28 18:53:01 2007 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_hash): fix hash area.
+
+Thu Jun 28 15:00:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_getline): local variable to be
+ initialized. [ruby-dev:31077]
+
+Thu Jun 28 11:30:39 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (rb_obj_id): use SIGNED_VALUE instead of long.
+
+Thu Jun 28 05:01:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk (run.gdb): fix to load $(srcdir)/.gdbinit
+
+ * vm.c (rb_vm_set_finish_env): add a cast.
+
+ * vm.h: support __fastcall for MSVC.
+
+Thu Jun 28 02:12:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: fix to untouch $:.
+
+Thu Jun 28 02:03:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (setup_args): change parameter type.
+
+Thu Jun 28 02:03:39 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (rb_intern2): unconstify cast.
+
+Thu Jun 28 01:44:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (rb_intern2): don't allocate a string object at first.
+ [ruby-dev:31064]
+
+Thu Jun 28 01:24:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: fix to show file name.
+
+ * bootstraptest/test_*.rb: add bootstrap tests.
+
+Thu Jun 28 01:22:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/node.h, parse.y, gc.c, iseq.c: remove NODE_CREF.
+
+Thu Jun 28 01:19:43 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix popped backref and others.
+ ([ruby-dev:31068]).
+
+ * compile.c (iseq_compile_each): remove needless statements.
+
+Wed Jun 27 23:51:33 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c: remove unused functions.
+
+Wed Jun 27 20:46:05 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/Makefile.sub, win32/configure.bat,
+ win32/mkexports.rb, win32/setup.mak, win32/win32.c: import
+ x64-mswin64 port.
+
+Wed Jun 27 20:31:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_translate_direct_threaded_code): fix prototype
+ function name.
+
+ * vm.h: add correct cast.
+
+Wed Jun 27 17:08:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_evalbody.ci: support OPT_CALL_THREADED_CODE.
+
+ * insns.def, vm.c, vm.h: ditto.
+
+ * vm.h: add VM_CFP_CNT() and VM_SP_CNT().
+
+Wed Jun 27 04:23:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix type error.
+
+Wed Jun 27 03:26:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_massign), insns.def (expandarray): support
+ postarg with massign (a, *b, c = ...).
+
+ * bootstraptest/test_massign.rb: add tests for above.
+
+ * compile.h: fix debug macro names.
+
+Wed Jun 27 00:18:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_clear): need to check STR_EMBED_P() before
+ free()ing memory. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>.
+ [ruby-dev:31062]
+
+Tue Jun 26 16:39:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_getgroups): use GIDT2NUM for rb_gid_t.
+
+Tue Jun 26 16:28:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_wait_fd_rw): terminate fdset.
+
+Tue Jun 26 16:26:58 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regint.h: IL32LLP64 support.
+
+Tue Jun 26 16:22:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (ruby_node_name): update node names.
+
+Tue Jun 26 15:21:20 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h: IL32LLP64 support.
+
+ * bignum.c (bigfixize, rb_cstr_to_inum): ditto.
+
+ * insns.def (opt_plus, opt_minus, opt_mult): ditto.
+
+Tue Jun 26 15:04:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_s_new): revert initializing VM stack.
+
+ * yarvcore.c (th_init2): ditto.
+
+ * vm.c, vm.h: fix to stop using Qundef on VM stack. According to
+ this change, VM stack should not include Qundef value.
+
+ * insns.def (putundef): removed.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * eval.c (eval): fix spacing.
+
+Tue Jun 26 04:03:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_yield_with_cfunc), proc.c: fix Method#to_proc
+ to return lambda Proc ([ruby-dev:31021], [ruby-dev:31037]).
+
+Tue Jun 26 03:46:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_s_new): fix to clear rb_thread_t#tag.
+ [ruby-dev:30995]
+
+Tue Jun 26 03:38:31 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_s_new), yarvcore.c (th_init2): fix to clear
+ VM stack ([ruby-dev:31046]).
+
+Tue Jun 26 03:15:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: rename setup_arg() to setup_args().
+ fix to use setup_args() at processing NODE_YIELD.
+
+Tue Jun 26 02:50:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (setup_arg): support kind of "m(*ary, x)" method call.
+ ([ruby-dev:31048]).
+
+Tue Jun 26 00:28:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci, vm.c: complete block parameter support.
+ post arguments, optional arguments, block argument.
+
+ * compile.c, parse.y: fix {|a|} parameter.
+
+ * insnshelper.ci, insns.def: revert caller_setup_args() option
+ (need_block_check) parameter.
+
+Mon Jun 25 20:18:44 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (RVALUE): in RVALUE and RBasic, flags must be the same type.
+
+Mon Jun 25 18:02:55 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/pty/extconf.rb: skip wince and win64.
+
+Mon Jun 25 17:59:32 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/node.h (NODE_LMASK, nd_line): shouldn't use int and/or
+ long carelessly.
+
+Mon Jun 25 11:36:35 2007 Koichi Sasada <ko1@atdot.net>
+
+ * gc.h: add RUBY_ prefix to debug macros.
+
+ * cont.c, proc.c, yarvcore.c,
+
+ * gc.c: define ruby_gc_debug_indent variable to debug mark/free.
+
+ * vm.c, insnhelper.ci: rename some functions to vm_* or rb_vm_*.
+ move some functions, definitions, declarations to suitable files.
+
+ * eval.c, yarvcore.h, eval_error.ci, insnhelper.ci: ditto.
+
+Mon Jun 25 09:45:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.ci, eval_jump.ci, eval_method.ci, eval_safe.ci: c-mode.
+
+Mon Jun 25 05:27:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c: remove ruby_current_node and change eval() prototype.
+ fix to use rb_sourcefile/line() instead of ruby_sourcefile/line.
+
+ * error.c, eval_error.ci, eval_load.c, eval_safe.ci, gc.c,
+ include/ruby/intern.h, parse.y, process.c, ruby.c: ditto.
+
+ * vm.c: fix spaces.
+
+Mon Jun 25 04:20:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_*.h: rename to eval_*.ci.
+
+ * common.mk: ditto.
+
+ * eval_error.ci: remove ruby_set_current_source().
+
+ * error.c, eval.c, ruby.c: ditto.
+
+ * eval_safe.c, proc.c: remove unused macros.
+
+Mon Jun 25 03:37:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (caller_setup_args): add need_block_check option.
+
+ * insns.def: ditto.
+
+ * yarvcore.h: add GetCoreDataFromValue().
+
+Mon Jun 25 02:14:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * call_cfunc.ci: removed.
+
+ * insnhelper.ci: added. this function includes all functions that
+ vm insns need.
+
+ * common.mk: ditto.
+
+ * insnhelper.h, vm.h, vm.c: move some declaration.
+
+ * gc.h: remove GC_CHECK() macro because GC.stress is more useful.
+
+ * compile.c, iseq.c, vm_dump: ditto.
+
+ * gc.h, thread.c: move a prototype declaration.
+
+ * debug.c, debug.h: rename some functions.
+
+ * compile.h: ditto.
+
+Mon Jun 25 00:45:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (invokesuper): fix error message.
+
+Mon Jun 25 00:14:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: some refactoring.
+ * rename th_* to vm_*.
+ * remove unused variables functions.
+ * add prototypes.
+
+ * blockinlining.c, compile.c, cont.c, eval.c, eval_intern.h,
+ eval_jump.h, eval_load.c, inits.c, insns.def, iseq.c, parse.y,
+ proc.c, process.c, signal.c, thread.c, vm.c, vm_dump.c,
+ vm_evalbody.ci, yarvcore.c, yarvcore.h: ditto.
+
+Sun Jun 24 22:32:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h (rb_add_method): fix to check 0.
+
+Sun Jun 24 22:00:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insn_send.ci: removed.
+
+ * common.mk: ditto.
+
+ * vm.c (vm_call_bmethod), isnsn.def: added. fix to use this
+ function instead of using goto.
+
+ * vm.c (vm_call_bmethod): renamed from th_invoke_bmethod().
+
+ * vm.c (vm_method_missing): renamed from eval_method_missing().
+
+ * vm_evalbody.ci: remove tmp_* variables.
+
+ * insnhelper.h: add some macros.
+
+ * insns.def: forbid zsuper from method defined by define_method().
+
+ * test/ruby/test_super.rb: ditto.
+
+Sun Jun 24 20:01:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_macro.def: removed.
+
+ * insn_send.ci: added. this file includes send instruction body.
+
+ * common.mk: ditto.
+
+ * insns.def: ditto.
+
+ * tool/insns2vm.rb: ditto.
+
+ * vm.c: ditto.
+
+Sun Jun 24 19:30:37 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.h (RESTORE_REGS): add do/while(0) around macro.
+
+ * vm.c, vm_macro.def: remove macro_eval_invoke_func() and
+ add vm_setup_method(). use it instead.
+
+Sun Jun 24 19:02:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_macro.def : remove macro_eval_invoke_cfunc() and
+ add vm_call_cfunc().
+
+Sun Jun 24 17:54:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm.c: add/fix stack overflow check.
+
+Sun Jun 24 17:28:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.h: change CHECK_STACK_OVERFLOW() to throw exception.
+
+ * vm.c (caller_setup_arg), vm_macro.def: remove
+ macro_eval_setup_send_arguments and add caller_setup_arg().
+
+ * insns.def: ditto.
+
+ * bootstraptest/test_method.rb: add splat arg tests.
+
+Sun Jun 24 16:35:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_to_s): used a variable before initialized.
+
+Sun Jun 24 16:05:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (callee_setup_arg): added. support correct post arg.
+
+ * vm_macro.def (macro_eval_invoke_func): fix to use
+ callee_setup_arg.
+
+ * compile.c (set_arguments): adjust for above changes.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * iseq.c (ruby_iseq_disasm): ditto.
+
+ * yarvcore.h: add rb_iseq_t#post_arg_start and arg_size.
+
+ * bootstraptest/test_method.rb: add post arg tests.
+
+Sun Jun 24 16:10:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_to_s): suppress warning, and reduced duplicated code.
+
+Sun Jun 24 15:33:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: set default directory to
+ '/tmp/bootstraptest.tmpwd' and add --dir option.
+ fix to output driver and target information.
+
+ * common.mk: fix to run btest on BASERUBY and
+ add OPTS to pass option ("make btest OPTS=...").
+
+Sun Jun 24 03:05:00 2007 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_minmax): fix SEGV by [].minmax.
+
+Sat Jun 23 17:18:19 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (match_inspect): MatchData#inspect implemented.
+
+Sat Jun 23 15:00:16 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_minmax): new method to get the minimum and maximum
+ values from the enumerable at once.
+
+ * enum.c (enum_minmax_by): ditto.
+
+Sat Jun 23 01:25:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_assoc): new method.
+
+ * hash.c (rb_hash_rassoc): ditto.
+
+ * hash.c (rb_hash_flatten): ditto.
+
+Fri Jun 22 23:55:59 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): add optional argument to specify
+ exclusiveness.
+
+ * range.c (range_step): use String#upto with optional argument.
+
+ * range.c (range_each): ditto.
+
+Fri Jun 22 19:55:51 2007 Tanaka Akira <akr@fsij.org>
+
+ * proc.c (proc_to_s): revert the change from %p to %lx at YARV
+ merge time.
+
+Fri Jun 22 19:33:49 2007 Tanaka Akira <akr@fsij.org>
+
+ * proc.c (proc_to_s): show is_lambda.
+
+Thu Jun 21 20:36:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_sort): remove hash specific implementation.
+
+Thu Jun 21 20:28:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_select): returns new hash, not assoc array.
+ [ruby-core:11504]
+
+ * hash.c (env_select): ditto.
+
+Thu Jun 21 23:08:19 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_intern2): ID_JUNK test based on len, not by NUL.
+
+Thu Jun 21 19:42:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * yarvcore.c (rb_thread_mark): mark also thrown_errinfo.
+
+Thu Jun 21 17:13:44 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern2): name may not be NUL-terminated.
+
+Wed Jun 20 08:27:57 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval_error.h (error_print): show full stacktrace on
+ non-SystemStackError.
+
+Wed Jun 20 04:45:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern2): use rb_intern2 to intern without trailing
+ equal sign.
+
+ * parse.y (rb_intern2, ripper_id2sym): fixed indent.
+
+Tue Jun 19 10:55:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_load.c (load_ext, rb_require_safe): pass VALUE instead of
+ pointer. [ruby-Bugs-11659]
+
+Mon Jun 18 08:47:54 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/{extconf.rb,ossl_ssl_session.c}:
+ Fix ruby-Bugs-11513.
+
+ * ext/openssl/ossl_pkey_ec.c
+ New methods EC::Point.[eql,make_affine!,invert!,on_curve?,infinity?]
+ By default output the same key form as the openssl command.
+
+ * ext/openssl/ossl_rand.c
+ New method Random.status?
+
+ * test/openssl/test_ec.rb
+ New tests.
+
+Mon Jun 18 17:04:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_load.c (rb_require_safe, ruby_init_ext): load with ruby level
+ cfp. [ruby-core:10779]
+
+ * eval_intern.h, vm.c (rb_vm_call_cfunc): new function to call a
+ function with ruby level cfp.
+
+Mon Jun 18 16:57:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yycompile): disable trace while creating ruby_debug_lines.
+ [ruby-talk:253586]
+
+ * thread.c (ruby_suppress_tracing): new function to call a function
+ with suppressing trace.
+
+ * lib/debug.rb, lib/tracer.rb: for YARV.
+
+Mon Jun 18 13:54:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): return EXIT_FAILURE if any exceptions occurred
+ in at_exit blocks. [ruby-core:11263]
+
+Mon Jun 18 02:49:16 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (env_mark): fix to mark block.proc.
+
+ * vm.c (th_make_proc_from_block): set created proc to block->proc.
+
+Mon Jun 18 02:48:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c (vm_stack_dump_raw): hide VM stack trace.
+
+Mon Jun 18 02:43:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * signal.c (sigsegv): clear gc_stress flag on SEGV.
+
+Mon Jun 18 01:14:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_path2class): get rid of dangling pointer caused by
+ optimized out value.
+
+ * variable.c (rb_global_entry, rb_f_untrace_var, rb_alias_variable,
+ rb_generic_ivar_table, generic_ivar_get, generic_ivar_set,
+ generic_ivar_defined, generic_ivar_remove, rb_mark_generic_ivar,
+ rb_free_generic_ivar, rb_copy_generic_ivar,
+ rb_obj_instance_variables): suppress warnings.
+
+Sun Jun 17 11:11:07 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (rb_method_missing): avoid a warning "too many arguments
+ for format string" on "./ruby -ve 'def m() super end; m'".
+
+Sat Jun 16 22:24:17 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (garbage_collect): re-introduce ruby_current_node marking code.
+ [ruby-dev:31005]
+
+Sat Jun 16 21:37:43 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (gc_sweep): re-introduce heap extension strategy change.
+ [ruby-dev:31005]
+
+Fri Jun 15 22:59:37 2007 Tanaka Akira <akr@fsij.org>
+
+ * .gdbinit: new file to ease debugging using gdb.
+
+Fri Jun 15 22:33:55 2007 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (default_handler): func argument removed.
+ (trap_handler): support SYSTEM_DEFAULT. call default_handler
+ internally.
+ (sig_trap): don't call default_handler.
+ [ruby-dev:30999]
+
+Fri Jun 15 22:33:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (realclean): separate local and ext.
+
+ * ext/extmk.rb: not remove unrelated directories.
+
+Fri Jun 15 20:50:02 2007 Tanaka Akira <akr@fsij.org>
+
+ * keywords: enclose C code in declaration section by %{ and %} to
+ avoid extra semicolon after #ifdef RIPPER.
+ pointed by eban.
+
+Fri Jun 15 18:56:52 2007 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (trap_handler): trap("SIGSEGV", "DEFAULT") may cause wrong
+ trap error because SIG_DFL may be zero.
+
+Fri Jun 15 15:55:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (setconstant, toregexp): fix to mark object correctly.
+
+Fri Jun 15 13:24:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * hash.c: exchange semantics of Hash#each and Hash#each_pair.
+ pointed out by [ruby-dev:30997].
+
+ * test/ruby/test_iterator.rb: ditto.
+
+ * test/ruby/test_yield.rb: ditto.
+
+Fri Jun 15 12:38:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_iterator.rb: remove debug code (GC.stress=true).
+
+Fri Jun 15 12:25:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (th_yield_setup_args): |v| should work as |v,|.
+ ex) def m;yield 1, 2; end; m{|v| p v} #=> 1
+
+ * parse.y: apply above change for "for" statement.
+
+ * test/ruby/test_assignment.rb: ditto
+
+ * test/ruby/test_basicinstructions.rb: ditto.
+
+ * test/ruby/test_iterator.rb: ditto.
+
+ * test/ruby/test_yield.rb: ditto.
+
+ * compile.c (iseq_compile_each): fix debug.
+
+Fri Jun 15 12:22:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (ruby_finalize_1): rb_thread_t#errinfo should be clear with
+ Qnil.
+
+Fri Jun 15 12:20:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_cont_call): forbid cross fiber continuation call.
+
+ * test/ruby/test_fiber.rb: ditto.
+
+Fri Jun 15 12:14:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * sample/test.rb: fix to show line information whether test succeeds.
+
+Thu Jun 14 17:16:05 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval_load.c (Init_load): delay allocating an array for rb_load_path
+ to avoid GC problem in very early stage.
+ (RUBY_GC_STRESS causes GC in such stage.)
+
+ * variable.c (rb_gc_mark_global_tbl): rb_global_tbl may be 0 in
+ very early stage.
+
+ * thread.c (thread_cleanup_func) [IA64]: clear register stack position.
+ (thread_start_func_2) [IA64]: record the beginning of register
+ stack using extra argument.
+ (rb_gc_save_machine_context) [IA64]: record the end of register
+ stack.
+
+ * gc.c [IA64] (SET_STACK_END): record the end of register stack.
+ (garbage_collect) [IA64]: use recorded register stack area for
+ GC marking.
+ (yarv_machine_stack_mark) [IA64]: GC mark from the register stack
+ area.
+
+ * yarvcore.c [IA64] (rb_gc_register_stack_start): defined.
+ (Init_VM): store th->self on stack to fix GC problem.
+ (Init_yarv) [IA64]: initialize the beginning of register stack.
+
+ * yarvcore.h (struct rb_thread_struct) [IA64]: new members for
+ register stack area.
+
+ * thread_pthread.ci (thread_start_func_1) [IA64]: call
+ thread_start_func_2 with the end of register stack.
+
+ * cont.c (struct rb_context_struct) [IA64]: new members for register
+ stack area.
+ (cont_mark) [IA64]: GC mark from register stack area.
+ (cont_free) [IA64]: free saved register stack.
+ (cont_save_machine_stack) [IA64]: record the position and contents
+ of the register stack.
+ (cont_capture): store cont->self on stack to fix GC problem.
+ (cont_restore_1) [IA64]: restore the register stack.
+ [IA64] (register_stack_extend): new function.
+ (cont_restore_0) [IA64]: call register_stack_extend instead of
+ cont_restore_1.
+
+ [ruby-dev:30982]
+
+Thu Jun 14 17:09:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser): handle more
+ extensions. [ruby-dev:30972]
+
+Thu Jun 14 14:40:42 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb: document updated.
+ suggested by NaHi. [ruby-dev:30966]
+
+Wed Jun 13 22:42:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (garbage_collect): update IA64 register stack code.
+ [ruby-dev:30971]
+
+Wed Jun 13 06:05:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (darwin): prohibit loading extension libraries to
+ miniruby.
+
+Tue Jun 12 21:50:51 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (call_args): no allow splat after assocs. takes
+ consistency over compatibility.
+
+ * parse.y (call_args2): ditto
+
+Tue Jun 12 14:53:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (Logging.quiet, Logging.message): added quiet flag and
+ use it. [ruby-core:10909]
+
+ * lib/mkmf.rb (find_header): use header names in the message.
+
+Sun Jun 10 18:37:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/probeprofiler/probeprofiler.c: clean warnings.
+
+Sun Jun 10 18:32:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/isinf.c, missing/dup2.c, missing/strtod.c, missing/x68.c,
+ missing/alloca.c: use "ruby/config.h".
+
+Sun Jun 10 17:49:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (install_recursive): should check parent directories of
+ the destination. [ruby-dev:30947]
+
+Sun Jun 10 16:59:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (do_block, brace_block): fix line numbers. [ruby-dev:30831]
+
+Sun Jun 10 16:57:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (install_recursive): add :glob option rather than
+ using FNM_DOTMACH.
+
+ * instruby.rb (ext-comm): make header directory first.
+
+Sun Jun 10 16:10:58 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb: typo.
+
+Sun Jun 10 16:07:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (install_recursive): skip .svn directories.
+
+Sun Jun 10 15:44:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): rubyhdrdir was missing.
+
+Sun Jun 10 15:26:36 2007 Tanaka Akira <akr@fsij.org>
+
+ * Makefile.in: use --output-file for gperf to not leave lex.c.tmp.
+
+Sun Jun 10 15:11:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (XCFLAGS): -I. is needed for *.inc.
+
+ * ext/extmk.rb: prepend also topdir to mflags at last.
+
+Sun Jun 10 13:47:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb (test_should_propagate_signaled):
+ get rid of invoking shell. [ruby-dev:30942]
+
+Sun Jun 10 12:56:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby: moved public headers.
+
+ * instruby.rb (install_recursive): skip backup files.
+
+ * instruby.rb (ext-comm): install only current platform headers.
+
+Sun Jun 10 10:42:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb: renamed from lib/secrand.rb.
+ suggested by NaHi. [ruby-dev:30934]
+
+Sat Jun 9 06:40:05 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/secrand.rb: rename SecRand() to SecRand.random_number.
+ suggested by NaHi. [ruby-dev:30934]
+
+Fri Jun 8 16:34:20 2007 Tanaka Akira <akr@fsij.org>
+
+ * ext/zlib/zlib.c (gzfile_s_open): use FilePathValue to support
+ to_path.
+
+Fri Jun 8 16:11:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_jump.h: th->errinfo should clear with nil.
+
+Fri Jun 8 14:53:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (call_args): allow splat argument after unpacked
+ assocs like 1.8 does.
+
+ * parse.y (call_args): ditto.
+
+Fri Jun 8 14:26:18 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/secrand.rb: new file for secure random interface.
+
+ * lib/cgi/session.rb: use secrand for generating cookies.
+
+Fri Jun 8 12:44:37 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {win32,wince}/Makefile.sub: add lex.c rule.
+
+Fri Jun 8 11:54:18 2007 Tanaka Akira <akr@fsij.org>
+
+ * lex.c.blt: moved from lex.c.
+
+ * Makefile.in: use lex.c.blt if gperf is not available.
+ [ruby-list:8212], [ruby-list:8214], [ruby-list:24667],
+ [ruby-talk:120857], [ruby-dev:28102]
+
+Thu Jun 7 21:38:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_execute_interrupts): invoke ensure when
+ main thread exits.
+
+Thu Jun 7 19:02:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb: call original "method" method instead of redefined one.
+
+Thu Jun 7 17:20:57 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (prepare_iseq_build): freeze filename and name string.
+
+ * variable.c: freeze class name string.
+
+Thu Jun 7 12:48:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_restore_1): fix to check root fiber [ruby-dev:30911].
+
+ * test/ruby/test_fiber.rb: add a test.
+
+Thu Jun 7 07:24:36 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/json/common.rb: Ponder offering parse! method.
+
+ * lib/json/editor.rb: be a bit more robust while loading data.
+
+ * ext/json/ext/{generator,parser}/extconf.rb:
+ add a have_header directive for st.h
+
+ * test/json: fix some tests.
+
+Thu Jun 7 03:29:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test_fiber.rb: add a test (Continuation and Fiber).
+
+Thu Jun 7 03:17:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_new): add debug message.
+
+ * cont.c (cont_restore_1): copy stack information from fiber.
+
+ * cont.c (rb_fiber_s_new): fix to mark created fiber.
+
+ * test/ruby/test_fiber.rb: add some tests around Thread and Fiber.
+
+ * yarvcore.c (thread_free): fix to skip freeing stack if root fiber
+ is available.
+
+Thu Jun 7 01:03:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h, eval.c (ruby_init): remove POP_TAG_INIT().
+
+ * cont.c (rb_fiber_start): remove zero-clearing tag.
+
+Wed Jun 6 20:23:46 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (invokeblock): fix of splat argument.
+ (splat same as normal method dispatch)
+
+Wed Jun 6 16:27:25 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insns.def: fixed indentation.
+
+Wed Jun 6 10:58:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_yield): fix to check Qundef.
+
+Wed Jun 6 10:57:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_continuation.rb: add a test for last commit.
+
+Wed Jun 6 10:55:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_cont_call): forbid calling dead fiber with
+ Continuation#call.
+
+Wed Jun 6 10:50:01 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix around yield arguments
+ (with NODE_ARGSCAT).
+
+Wed Jun 6 02:50:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_start): clear th->tag and check error to fix
+ [ruby-dev:30888] and [ruby-dev:30889].
+
+ * eval_intern.h: fix rb_fiber_start() prototype.
+
+ * test/ruby/test_fiber.rb: add tests for above.
+
+Wed Jun 6 02:40:20 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insnhelper.h, insns.def (DEC_SP): shouldn't use unary minus operator
+ in pointer operation. some compilers (such as VC++8 x64) cannot deal
+ it with expected way.
+
+Wed Jun 6 02:19:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y (new_yield), compile.c (iseq_compile_each): fix
+ passing parameter.
+
+ * eval.c, eval_jump.h: simplify rb_yield*.
+
+ * proc.c (proc_mark): fix to mark proc->block.proc.
+
+ * proc.c (Init_Proc): add Proc#lambda?
+
+ * test/ruby/test_lambda.rb: add some tests.
+
+ * vm.c (invoke_block): fix to check lambda block or not.
+
+ * vm.c (th_yield_setup_args): fix to check arguments size
+ when lambda block.
+
+Tue Jun 5 16:30:38 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_p): returns arguments to intervene. [ruby-dev:29736]
+
+Tue Jun 5 14:07:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (invokeblock): check block is created by lambda
+ or Proc.new.
+
+ * vm.c (block_proc_is_lambda): added.
+
+Tue Jun 5 14:47:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/pp.rb (PP::PPMethods::seplist): revert last change to work
+ around wrapper bug. [ruby-dev:30840]
+
+Tue Jun 5 14:11:15 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (kanji_convert): Fix guess fallback.
+
+Tue Jun 5 13:32:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c, dir.c, eval.c, eval_jump.h, eval_method.h, numeric.c,
+ pack.c, parse.y, re.c, thread.c, vm.c, vm_dump.c, call_cfunc.ci,
+ thread_pthread.ci, thread_win32.ci: fixed indentation.
+
+ * call_cfunc.ci: protoized.
+
+ * thread_win32.ci: fixed typo.
+
+Tue Jun 5 13:17:11 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * call_cfunc.ci, compile.c, dir.c, eval.c, eval_jump.h, numeric.c,
+ pack.c, re.c, thread.c, thread_win32.ci, vm.c, vm_dump.c: fixed
+ indentation.
+
+Mon Jun 4 21:15:45 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/json.rb, lib/json, ext/json, test/json:
+ import JSON library.
+
+ * ext/nkf: import nkf.c rev:1.124
+ Support CP10001.
+
+Mon Jun 4 20:52:58 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_round): should not just truncate.
+
+Sat Jun 2 16:48:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (Fiber#pass): rename to Fiber#yield. Block parameter
+ of fiber body receive first yield values.
+ e.g.: Fiber.new{|x| p x}.yield(:ok) #=> :ok
+
+ * cont.c: rename rb_context_t#retval to rb_context_t#value.
+
+ * test/ruby/test_fiber.rb: ditto.
+
+Sat Jun 2 16:45:21 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (Init_Proc): remove a line break.
+
+Sat Jun 2 01:27:27 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_round): small optimization to handle bignums.
+
+Fri Jun 1 13:02:35 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insnhelper.h (INC_SP): shouldn't cast ``x'' to unsigned type because
+ it might be a negative value.
+
+ * insnhelper.h, insns.def: shouldn't use unary minus operator in index
+ operator. some compilers (such as VC++8 x64) cannot deal it with
+ expected way.
+
+Fri Jun 1 11:33:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (num_round): should convert self to Float.
+ [ruby-dev:30860]
+
+Fri Jun 1 02:01:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_round): now takes optional argument to specify
+ number of digits, like round() in Python/PHP.
+
+ * numeric.c (num_round): ditto.
+
+Fri Jun 1 01:58:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (each_with_index_i): should work well with continuation.
+ a patch from sheepman <sheepman AT sheepman.sakura.ne.jp>.
+ [ruby-dev:30846]
+
+Thu May 31 17:27:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/benchmark.rb (Benchmark::Job::item): avoid modifying the
+ argument unintentionally. [ruby-talk:253676]
+
+Wed May 30 14:43:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_capture): store all local variables in heap
+ ([ruby-dev:30832]).
+
+ * vm.c (th_stack_to_heap): added.
+
+ * test/ruby/test_continuation.rb: add a test for above.
+
+ * eval_intern.h (th_get_ruby_level_cfp): fix to clean code.
+
+Wed May 30 13:32:34 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (ResponseParser#next_token): fixed
+ error message.
+
+ * lib/net/imap.rb (ResponseParser#parse_error): fixed
+ the condition not to refer to @token.symbol unexpectedly.
+ Thanks, Dick Monahan.
+
+Wed May 30 13:24:33 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#transfercmd): skip 2XX
+ responses for some FTP servers.
+
+Wed May 30 04:18:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval_cmd): just return if no exceptions.
+ [ruby-dev:30820]
+
+Wed May 30 02:14:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (interrupt_init): needs to pass nil for Interrupt.
+ [ruby-core:11038]
+
+ * signal.c (trap): fixed segfaults. [ruby-dev:30830]
+
+Wed May 30 00:50:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_source_filename, obj_free): suppress warnings.
+
+ * gc.c (garbage_collect, yarv_machine_stack_mark): fixed typo.
+ http://bugs.debian.org/426267
+
+Wed May 30 00:24:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (open_args, arg_ambiguous, parser_warning): should not use
+ rb_warning in the parser.
+
+Tue May 29 12:31:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_opendir): removed duplicated code.
+
+Tue May 29 10:55:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: fix bug around Continuation and Fiber.
+
+ * test/ruby/test_continuation.rb: add tests for Continuation.
+
+Tue May 29 10:54:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_opendir, rb_w32_readdir): eliminate magic
+ numbers.
+
+Mon May 28 10:27:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c: fixed a function name.
+
+Mon May 28 03:56:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: support Fiber. Check test/ruby/test_fiber.rb for detail.
+ Fiber is known as "Micro Thread", "Coroutine", and other terms.
+ At this time, only Fiber#pass is supported to change context.
+ I want to know more suitable method name/API for Fiber (... do you
+ know more suitable class name instead of Fiber?) as "suspend/resume",
+ "call", "yield", "start/kick/stop/restart", ....
+
+ * eval.c, eval_intern.h, thread.c, yarvcore.c, yarvcore.h: ditto.
+
+Sat May 26 00:38:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_exec_internal): do nothing if no code.
+
+ * compile.c (rb_iseq_compile): check node if NULL before check
+ nd_type. [ruby-talk:252956]
+
+Sat May 26 00:05:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb (test_should_propagate_signaled):
+ skip tests for exitstatus and termsig on the platforms where
+ signals not supported.
+
+Fri May 25 16:04:47 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * yarvcore.c (Init_VM): wrap already initialized structs to use
+ it directly.
+
+Fri May 25 11:09:47 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regint.h (include): on some platform, defines.h redefines
+ SIZE_OF_LONG_LONG so shouldn't re-include config.h after included
+ defines.h.
+
+ * regint.h (vsnprintf): ruby on windows already have vsnprintf macro.
+
+Thu May 24 12:07:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: check across trap violation.
+
+ * eval.c, yarvcore.h: ditto.
+
+Thu May 24 11:46:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, yarvcore.c: fix to mark VM structure on startup.
+
+ * yarvcore.h: disable USE_CACHED_VALUE.
+
+Thu May 24 01:54:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: support callcc which everyone love.
+ incomplete. please give me bug reports.
+
+ * common.mk, inits.c, thread.c: ditto.
+
+ * yarvcore.c: export thread_mark().
+
+ * yarvcore.h: disable value cache option.
+
+ * eval_intern.h: set th_get_ruby_level_cfp to inline.
+
+Wed May 23 15:39:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * common.mk: add a rule for regsyntax.c.
+
+Wed May 23 10:31:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * oniguruma.h: updated to Oniguruma 5.7.0.
+
+ * regsyntax.c, unicode.c: new files along with Oniguruma 5.x.
+
+Wed May 23 06:51:46 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#[]): get rid of exceptions being raised.
+ [ruby-dev:30740], Thanks Kentaro KAWAMOTO.
+
+Wed May 23 05:49:49 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, ext/purelib.rb, lib/mkmf.rb, runruby.rb: clear default
+ load path to get rid of load pre-installed extensions/libraries.
+ [ruby-core:11017]
+
+Tue May 22 16:37:36 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (set_arg0): support RSTRING_LEN on HP-UX. a patch from
+ WATANABE Tetsuya <Tetsuya.WATANABE AT nifty.com>. [ruby-dev:30806]
+
+Mon May 21 13:40:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, vm_macro.def: support tail call optimization
+ (on default, this feature is not enabled).
+
+ * iseq.c, compile.c, vm_opts.h: add "tailcall_optimization"
+ option.
+
+ * sample/test.rb (test_ok): fix to adjust tailcall stack layout.
+
+ * insns.def, vm.c, compile.c, yarvcore.c, yarvcore.h:
+ add opt_gt, opt_le instructions.
+
+Mon May 21 03:34:06 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: CRAM-MD5 authentication did not work.
+ [ruby-dev:30770]
+
+Sat May 19 10:26:01 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (Date._parse): detects some OFX dates
+ (Of course not fully).
+
+Sat May 19 03:08:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_inject): minor improvement. [ruby-dev:30792]
+
+ * enum.c (one_i): no needs to iterate once the result became false.
+
+ * enum.c (enum_one): fix for an example.
+
+ * enum.c (one_iter_i, none_iter_i): DRY.;
+
+Sat May 19 01:07:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): it is now can work without block. you
+ have to specify two argument method name as the first argument.
+
+ * enum.c (Init_Enumerable): reduce is new alias to inject.
+
+Sat May 19 01:05:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (Init_File): method definition mismatch.
+
+Fri May 18 16:44:04 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (Init_File): add to_path method to File objects.
+
+Fri May 18 11:12:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (DllMain, ruby_init_loadpath): use DLL instance handle given
+ to DllMain instead of VirtualQuery so that loadpath becomes relative
+ from the DLL on WinCE too.
+
+Thu May 17 17:03:11 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-label-indent): for yacc rules.
+
+Thu May 17 13:30:27 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_arg): remove typo from ripper description.
+
+Thu May 17 13:23:38 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y, compile.c (set_arguments): fix to support in-paren
+ parameter (ex: def foo((a, b))).
+
+Thu May 17 13:01:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (ruby_iseq_disasm): fix to show post arg info.
+
+Thu May 17 12:56:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * debug.c (ruby_debug_node): fix to show node line.
+
+Wed May 16 21:48:44 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb (Logger::Application): remove meaningless logdev
+ attribute and added logger attribute instead. [ruby-core:11143]
+ also added Logger#formatter rdoc comment.
+
+Tue May 15 16:40:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb (test_endblockwarn): now parser
+ warnings emit source names and line numbers.
+
+Tue May 15 15:01:38 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_stdhandle): stderr should be without buffering,
+ but mswin32 use buffering when stderr is not connected to tty.
+
+Mon May 14 02:12:07 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_zip): a.zip(b,c) should return an array, not
+ enumerator.
+
+ * array.c (rb_ary_zip): a.zip(b,c) should return array with size
+ truncated to the size of its shortest argument array.
+ [incompatible]
+
+Mon May 14 01:54:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_choice): should return nil when the array is
+ empty.
+
+Sat May 12 18:26:36 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (tokens): forgot to add strip. [ruby-core:11120]
+
+ * test/net/http/test_http.rb: test Net::HTTP.post_form.
+
+Fri May 11 15:27:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_data_to_ary): internal IDs must not be exposed.
+ [ruby-core:11073]
+
+ * parse.y (internal_id_gen): now returns scope local ID instead of
+ global one.
+
+Thu May 10 15:15:53 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_super.rb: add tests.
+
+Thu May 10 15:14:05 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_s_conv): rdoc fix.
+
+Thu May 10 15:09:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (POINTER_P): pointer may be larger than long.
+
+ * parse.y (vtable_size, vtable_included, vtable_tblcpy,
+ vtable_to_tbl): constified.
+
+Thu May 10 10:13:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_priority): rdoc fix; the initial value is
+ inherited from the creating thread. [ruby-core:10607]
+
+Wed May 9 12:28:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (Init_Bignum), numeric.c (Init_Numeric): added fdiv as
+ aliases of quo. [ruby-dev:30771]
+
+Tue May 8 23:39:09 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (Date._parse): revised treatment of
+ hyphened/separatorless dates.
+
+ * lib/date/format.rb: some trivial adjustments.
+
+Tue May 8 20:23:07 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: reverted.
+
+Tue May 8 19:32:18 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/rational.rb: fix high-precision Rationals cannot be
+ converted to Floats. [ruby-Bugs:10502], [ruby-core:11069],
+ [ruby-dev:30743]
+
+Mon May 7 10:59:55 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/image.rb, test/rss/test_image.rb: fixed Image module
+ namespace URI. reported by Dmitry Borodaenko. Thanks.
+
+Sun May 6 18:44:11 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (Net::HTTP.post_form): allow an Array of String
+ for pairs argument. [ruby-Bugs:10340]
+
+ * lib/net/http.rb (Net::HTTP#set_form_data): ditto.
+
+Sun May 6 17:54:36 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: Connection header field might include both of
+ "keep-alive" token and "close" token. [ruby-core:10818]
+
+Sat May 5 16:26:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/date/format.rb (Format::Bag#method_missing): get rid of
+ modifying original argument. [ruby-core:11090]
+
+Thu May 3 22:20:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, defines.h, eval_load.c (rb_feature_p, rb_provided,
+ search_required, rb_require_safe), ext/extmk.rb: Fix
+ a bug where a statically linked extension cannot be autoloaded.
+ [ruby-dev:30023] / [ruby-dev:30239]
+
+ * thread.c: added an internal class, Barrier.
+
+ * thread.c: copied rdocs from fastthread.
+
+ * yarvcore.h (struct rb_vm_struct): moved loading_table from global.
+
+Thu May 3 18:10:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_evalbody.ci, insns.def, vm.c, tool/insns2vm.rb (rb_num_t):
+ renamed to get rid of name clash. [ruby-dev:30504]
+
+ * yarvcore.c (ruby_thread_init): ditto.
+
+Wed May 2 18:52:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, yarvcore.h, yarvcore.c, insns.def: fix to mark VM stack
+ in correct range.
+
+Wed May 2 17:13:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_quo): now calculate in integer. [ruby-dev:30753]
+
+Wed May 2 15:14:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h: add redefine checks ([ruby-dev:30751]).
+
+Wed May 2 11:22:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: use Qtrue instead of 2.
+
+ * vm.c, insns.def: support "lambda" calling convention.
+
+Wed May 2 06:46:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c, parse.y, ruby.h (rb_compile_warn, rb_compile_warning): warn
+ for compilation. the parser should no longer use rb_warn() and
+ rb_warning(). [ruby-dev:30121]
+
+Wed May 2 05:45:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assoc): result of assoc_new needs to be an assoc.
+
+Wed May 2 05:40:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): improvement by calculating from MSB and using
+ factorization. <http://yowaken.dip.jp/tdiary/20070426.html#p01>
+
+Tue May 1 18:45:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * sample/test.rb: import matzruby's sample/test.rb.
+
+Tue May 1 17:46:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_choice): a new method to choose an element
+ randomly from an array.
+
+ * array.c (rb_ary_choice): fixed mistake from RDoc.
+
+Tue May 1 13:59:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (proc_arity): fix an arity bug ([ruby-core:11060]).
+
+Tue May 1 13:12:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, compile.c (set_arguments): support post arguments.
+
+ * test/ruby/test_method.rb: add tests for above.
+
+ * test/ruby/test_proc.rb: ditto.
+
+ * proc.c: fix an arity bug ([ruby-core:11029]).
+
+ * vm.c, vm.h, insns.def, vm_dump.h: fix bmethod process.
+
+ * vm.c: support block argument on block parameter.
+
+Fri Apr 27 17:05:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (int_pow): bugfix of overflow detection.
+
+ * numeric.c (int_pow): rb_big_pow() may return other than Bignum.
+
+Fri Apr 27 01:51:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: support multiple splat (e.g, [a, *b, *c, e, *f]).
+
+Fri Apr 27 00:03:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): truncate all zero BDIGITs. [ruby-dev:30733]
+
+Thu Apr 26 17:31:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): reduce multiplying for even number.
+
+ * numeric.c (int_pow): calculate power in Fixnum as possible.
+ [ruby-dev:30726]
+
+Thu Apr 26 17:18:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y: fixes for ripper.
+
+ * parse.y (primary): reduced duplicated code.
+
+ * parse.y (f_arg_item): should not override by meaningless value.
+
+ * parse.y (f_arg, assocs): should not use $$ before assigned.
+
+ * parse.y (assoc_list): dispatch assoclist_from_args for assocs as
+ well as args.
+
+ * parse.y (assoc): return assoc if dispatched result is $1.
+
+Thu Apr 26 13:54:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el: new file. C/C++ style for ruby source code.
+
+Wed Apr 25 19:49:16 2007 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (unix_send_io, unix_recv_io): use CMSG_DATA to
+ align file descriptor appropriately.
+
+Wed Apr 25 15:23:29 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (NtInitialize, exit_handler): add initializing and
+ cleanup of critical section object for select.
+
+ * win32/win32.c (do_select): block reentrance.
+
+ * win32/win32.c (rb_w32_select): 0 sec polling of socket. this is
+ workaround because winsock cannot do select at same socket at the
+ same time by two or more threads.
+
+Wed Apr 25 14:10:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ext/probeprofiler/probeprofiler.c: fix function name and
+ return value.
+
+Wed Apr 25 12:42:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h: remove rb_control_frame_t#callee_id.
+
+ * vm_macro.def: ditto.
+
+ * eval_intern.h (exec_event_hooks): fix to check event flags
+
+ * eval_intern.h (EXEC_EVENT_HOOK): fix to re-check event flags.
+
+ * ext/probeprofiler : added. this profiler is sampling based
+ profiler.
+
+ * vm.c: add rb_thread_current_status() API for probeprofiler.
+
+ * thread.c (rb_thread_execute_interrupts): add comments.
+
+Wed Apr 25 10:36:03 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (PUSH_TAG): no argument now.
+
+ * eval.c, eval_error.h, eval_jump.h, eval_load.c, proc.c, thread.c:
+ ditto.
+
+ * thread.c (alloc_event_hook, rb_thread_remove_event_hook): should
+ return value.
+
+Tue Apr 24 09:33:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (do_stat, do_lstat, do_opendir): should not warn ENOTDIR.
+ [ruby-talk:248288]
+
+Mon Apr 23 22:14:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb ($ruby): add extout directory to include path.
+ [ruby-core:11003]
+
+ * lib/mkmf.rb (libpathflag): not to append RPATHFLAG to current
+ directory.
+
+ * lib/mkmf.rb (init_mkmf): add current directory to default
+ library path with highest priority. [ruby-core:10960]
+
+ * lib/mkmf.rb (LINK_SO): LIBPATH to be placed before DLDFLAGS.
+
+Fri Apr 20 16:05:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBPATHFLAG, RPATHFLAG): no needs to be quoted,
+ it is done by libpathflag in mkmf.rb.
+
+Fri Apr 20 12:27:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb: fix to override conv proc.
+
+Fri Apr 20 12:21:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): fixed access to out of bound, and inverted
+ the order of errinfos.
+
+Fri Apr 20 10:33:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h: add prototypes of rb_sourceline() and
+ rb_sourcefile().
+
+Fri Apr 20 02:37:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): re-send signal. [ruby-dev:30516]
+
+ * eval_error.h (error_handle): no message when exiting by signal.
+
+ * intern.h (rb_thread_signal_raise, ruby_default_signal): prototypes.
+
+ * signal.c (esignal_init): takes a signal number and an optional
+ signal name.
+
+ * signal.c (interrupt_init): pass SIGINT always.
+
+ * signal.c (ruby_default_signal): invoke system default signal
+ handler.
+
+ * signal.c (rb_f_kill): use NUM2PIDT instead of NUM2INT.
+
+ * signal.c (rb_signal_exec, trap): handle SIGTERM. [ruby-dev:30505]
+
+ * thread.c (rb_thread_signal_raise): now takes signal number instead
+ of signal name.
+
+ * thread.c (rb_thread_signal_exit): since rb_make_exception() calls
+ #exception method, rb_class_new_instance() is not needed here.
+
+ * yarvcore.h (struct rb_vm_struct), eval_jump.h (terminate_process):
+ exit_code is no longer stored in VM.
+
+Thu Apr 19 18:37:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, node.h, thread.c, yarvcore.[ch], eval_intern.h:
+ support set_trace_func (incomplete. id and klass
+ don't be passed). And support Thread#set_trace_func
+ which hook only specified thread and Thread#add_trace_func
+ which add new trace func instead of replace old one.
+ C level API was modified. See thread.c (logic) and
+ yarvcore.h (data structures).
+
+ * vm.c, vm_macro.def: add hook points.
+
+ * compile.c, insns.def: fix "trace" instruction.
+
+ * iseq.c, vm_macro.h: add compile option "trace_instruction".
+
+ * test/ruby/test_settracefunc.rb: hook "c-return" of set_trace_func.
+
+Thu Apr 19 20:57:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (symbol): symbols should be followed by EXPR_ENDARG.
+
+ * parse.y (dsym): ditto.
+
+ * parse.y (parser_yylex): strings should be followed by
+ EXPR_ENDARG.
+
+ * parse.y (parser_yylex): ditto for numbers.
+
+ * parse.y (parser_yylex): EXPR_ENDARG after ']' and '}'.
+
+Thu Apr 19 17:46:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * lib/optparse.rb: fix to override conv proc.
+
+Wed Apr 18 10:41:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod): exponent is radix 10. [ruby-talk:248272]
+
+Wed Apr 18 02:50:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * yarvcore.c (th_init2): push initial blockptr value for
+ rb_block_given_p() outside ruby_exec(). [ruby-core:10923]
+
+Wed Apr 18 02:30:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LDFLAGS): prepend -L. instead appending it to
+ XLDFLAGS. [ruby-core:10933]
+
+ * configure.in (Makefile): remove $U for automake from MISSING.
+ [ruby-talk:248171]
+
+Mon Apr 16 22:56:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/pty/expect_sample.rb: avoid symbolic link representation for
+ expect. a patch from Kazuhiro NISHIYAMA <zn at mbf.nifty.com>.
+ [ruby-dev:30714]
+
+Mon Apr 16 22:51:11 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample: replace TRUE, FALSE with true, false respectively.
+ a patch from Kazuhiro NISHIYAMA <zn at mbf.nifty.com>.
+ [ruby-dev:30713]
+
+Mon Apr 16 17:08:02 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (make_switch): do not clobber converter if pattern
+ has no convert method. reported by sheepman in [ruby-dev:30709].
+
+Mon Apr 16 16:49:32 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_seek): consistent behavior with
+ IO#seek. patch by sheepman in [ruby-dev:30710].
+
+Mon Apr 16 16:34:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): should set command_start after block
+ starting "do"s and braces. [ruby-core:10916]
+
+Mon Apr 16 10:51:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_each_with_index): each_with_index to forward
+ arguments to each. [ruby-core:10921]
+
+Mon Apr 16 10:43:10 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_arg): should allow to specify 24:00.
+ [ruby-core:10915]
+
+Sun Apr 15 09:12:54 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: added some zone names.
+
+ * lib/date/format.rb (_parse): now interprets doted numerical
+ dates as a big endian (except dd.mm.yyyy).
+
+Thu Apr 12 17:13:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (mutex_try_lock): check and set owner thread.
+
+ * thread_pthread.ci: fix to show error code in error message.
+
+Thu Apr 12 17:11:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_rescue2): restore cfp ([ruby-dev:30582]).
+
+Thu Apr 12 16:06:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_protect): restore cfp ([ruby-dev:30671]).
+
+Thu Apr 12 16:04:31 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): check node->nd_state == 1, not !0.
+
+Wed Apr 11 16:35:16 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch] (rb_w32_enter_critical, rb_w32_leave_critical): no
+ need to reject reentrance. removed.
+
+ * rubysig.h (RUBY_CRITICAL): follow above changes.
+
+ * rubysig.h (TRAP_BEG, TRAP_END): no need to save errno.
+
+Tue Apr 10 17:02:17 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_fclose, rb_w32_close): need to save errno
+ before calling original fclose()/close().
+
+Tue Apr 10 16:14:22 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.ci (w32_wait_events): check whether interrupt_event is
+ valid handle or not.
+
+ * thread_win32.ci (native_thread_destroy): clear interrupt_event when
+ close it.
+
+Tue Apr 10 15:53:17 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_pthread.ci (native_thread_create): initialize sleep_cond.
+ fixed: [ruby-dev:30675]
+
+Mon Apr 9 18:48:57 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (do_select): ubf_select() is not necessary. interrupt is
+ checked in the loop.
+
+Mon Apr 9 18:27:26 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (do_select): use ubf_select() as UBF on windows.
+
+ * win32/win32.c (do_select): shouldn't call catch_interrupt() here.
+ fixed: [ruby-dev:30674], reported by wanabe.
+
+Mon Apr 9 09:24:32 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (disconnect): call shutdown for
+ SSLSocket. Thanks, Technorama Ltd.
+
+Sun Apr 8 13:28:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (defined_expr): test arguments of NODE_CALL and so
+ on as well as NODE_ATTRASGN. [ruby-core:10886]
+
+Fri Apr 6 10:56:29 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_key_get_group): get rid of
+ warning. we are aware of it.
+
+Fri Apr 6 04:00:24 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_{bn,x509{attr,cert,name,store}}.c:
+ Add documentation.
+
+Thu Apr 5 17:59:19 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (defined_expr): support for assignment.
+ [ruby-core:10867]
+
+ * compile.h (ADD_CATCH_ENTRY): removed temporary variable.
+
+Thu Apr 5 15:13:34 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_alloc): should
+ return value.
+
+Thu Apr 5 14:58:49 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_pkcs5.c: New module.
+
+ * ext/openssl/ossl_{cipher,digest,pkcs7,pkcs12}.c:
+ Remove redundant module namespace.
+
+ * ext/openssl/lib/openssl/{cipher,digest}.rb
+ Add backwards compatible classes for rearranged classes.
+
+ * ext/openssl/ossl_{pkcs7,pkcs12}.c: Add documentation.
+
+Thu Apr 5 00:42:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_notimplement), io.c (pipe_open): removed definite
+ articles and UNIX manual section from messages. [ruby-dev:30690]
+
+Wed Apr 4 17:09:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): refined the message of NotImplementedError.
+ [ruby-dev:30685]
+
+Wed Apr 4 12:29:02 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c (rb_notimplement): should show the name of this func,
+ not callee.
+
+Wed Apr 4 10:18:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (popen_exec): should not close close-on-exec FDs.
+ [ruby-dev:30679]
+
+ * io.c (pipe_open): raise NotImplementedError for command "-" on
+ platforms where fork(2) is not available. [ruby-dev:30681]
+
+Tue Apr 4 04:17:18 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_ssl.c: Add documentation.
+
+Tue Apr 3 16:22:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: check for functions added in 1.9.
+
+ * ext/openssl/ruby_missing.h: check per features instead by
+ checking version code. [ruby-core:10845]
+
+Tue Apr 3 16:02:44 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_bn.c: More documentation.
+
+ * ext/openssl/lib/ossl_{pkey,pkey_ec}.[ch]: Add elliptic curves.
+
+Tue Apr 3 15:50:41 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (s_recv, s_recvfrom): some systems (such as
+ windows) doesn't set fromlen if the socket is connection-oriented.
+ reported by Bram Whillock in [ruby-core:10512] [ruby-Bugs#9061]
+
+Tue Apr 3 09:36:55 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ruby_missing.h: need to include version.h to check
+ RUBY_VERSION_CODE.
+
+Mon Apr 3 07:10:12 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_{ssl.[ch],ssl_session.c},
+ ext/openssl/lib/openssl/lib/openssl/ssl.rb:
+ New SSL::Session class. Add session cb's, getter/setters,
+ config, and statistics methods.
+
+Mon Apr 3 04:00:23 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/{ossl.[ch],ossl_pkey.c} Add documentation.
+
+ * ext/openssl/ossl_hmac.c Add reset method.
+
+ * ext/openssl/ossl_cipher.c (Cipher#update) Take additional
+ buffer argument.
+
+ * ext/openssl/{ossl_bio.c,ossl_ssl.c,ruby_missing.h}
+ compatibility with 1.8.
+
+Mon Apr 2 21:55:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (throw), thread.c, yarvcore.h (throwed_errinfo): fixed
+ typo.
+
+Fri Mar 30 11:46:51 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_cmdvector): fixed buffer size. reported by
+ wanabe [ruby-dev:30672]
+
+ * win32/win32.c (init_env, insert, rb_w32_get_environ): use strdup
+ instead of malloc + strlcpy. suggested by nobu [ruby-dev:30673]
+
+Fri Mar 30 02:29:04 2007 Technorama <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_{bn,cipher,digest,hmac,rand,pkey_{dh,dsa,rsa}}.c:
+ Add Documentation for various methods.
+
+ * ext/openssl/lib/openssl/cipher.rb: Ditto
+
+ * ext/openssl/ossl_bn.c: add lshift! and rshift! methods.
+
+ * ext/openssl/ossl_digest.c: GetDigestPtr() also accept a string.
+
+Fri Mar 23 11:28:24 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_env, insert, cmdglob, rb_w32_cmdvector,
+ rb_w32_opendir, rb_w32_readdir, rb_w32_strerror, rb_w32_stati64,
+ rb_w32_get_environ): use strlcpy() and strlcat().
+
+ * win32/win32.c (rb_w32_opendir): use realloc() instead of xrealloc().
+
+ * win32/win32.c (rb_w32_closedir): check NULL before free pointers.
+
+Fri Mar 23 00:24:52 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/shell: commit miss(support for ruby 1.9(YARV) thread model).
+
+Thu Mar 22 13:32:17 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (LIBS): remove an unnecessary library.
+
+Thu Mar 22 10:27:58 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_bignum.rb (test_to_s): add tests for Bignum#to_s.
+
+Wed Mar 21 20:38:06 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * marshal.c (w_short, w_long, w_object): get rid of VC++ warnings.
+
+Wed Mar 21 20:05:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, parse.y, eval.c, intern.h, iseq.c, lex.c, node.h,
+ proc.c, vm.c, vm_macro.def, vm_macro.def, yarvcore.c, yarvcore.h,
+ debug.c, debug.h: merge half-baked-1.9 changes. The biggest change
+ is to change node structure around NODE_SCOPE, NODE_ARGS. Every
+ scope (method/class/block) has own NODE_SCOPE node and NODE_ARGS
+ represents more details of arguments information. I'll write a
+ document about detail of node structure.
+
+Wed Mar 21 17:04:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): round up for the most significant digit.
+ [ruby-core:10686]
+
+Tue Mar 21 08:20:00 2007 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * test/testunit/collector/test_dir.rb: Fixed test/unit tests that
+ were breaking due to Module#public_instance_methods now
+ returning a Symbol instead of a String.
+
+ * test/testunit/collector/test_objectspace.rb: Ditto.
+
+Tue Mar 20 22:54:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_extended): erroneous check condition when dump
+ method is defined. [ruby-core:10646]
+
+Tue Mar 20 21:36:47 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/shell.rb, lib/shell: support for ruby 1.9(YARV) thread model.
+
+Tue Mar 20 16:36:08 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * distruby.rb: Add zip generation.
+
+Tue Mar 20 16:20:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_callee_name): add __method__ and __callee__ again.
+ __callee__ need to rework to adopt YARV. [ruby-core:10671]
+
+Tue Mar 20 11:09:00 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Revise rdoc.
+
+ * lib/set.rb (Set#freeze, Set#taint, Set#untaint): Implement
+ Set#freeze, Set#taint, and Set#untaint; requested by: Dan
+ Hutchings <dan AT moltoagitato.com> in [ruby-bugs:PR#9359].
+
+Tue Mar 20 09:13:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork): flush stdouts always before fork(2).
+ fixed: [ruby-dev:30612]
+
+Tue Mar 20 01:38:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): store the result of first_func
+ as well as first_proc.
+
+ * thread.c (thread_create_core): block is not used if first_func
+ is given.
+
+Mon Mar 19 16:58:52 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * missing/{strlcat,strlcpy}.c, missing.h: new functions.
+
+ * LEGAL: add copyright notice about above files.
+
+ * configure.in: check whether strlcat and strlcpy are exist or not.
+
+ * {bcc32,win32,wince}/Makefile.sub: use above files.
+
+Mon Mar 19 14:12:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/matrix.rb (Matrix::inverse_from): adding partial pivoting to
+ the Gauss-Jordan algorithm, making it stable. a patch from
+ Peter Vanbroekhoven. [ruby-core:10641]
+
+Mon Mar 19 12:13:36 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regparse.c, etc.: K&R to ANSI code cleanup patch from Stefan
+ Huehner <stefan at huehner.org>. [ruby-core:10543]
+
+Mon Mar 19 11:27:13 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb (rbuf_read): extend buffer size for speed.
+
+Sun Mar 18 08:31:51 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/dir.h, win32/win32.c (rb_w32_opendir, rb_w32_readdir,
+ rb_w32_closedir): get rid of possible buffer-overflows.
+
+Sat Mar 17 19:10:39 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss, test/rss:
+ - supported Atom.
+ - bumped version 0.1.6 to 0.1.7.
+ * sample/rss/convert.rb: added new sample.
+
+Fri Mar 16 22:32:20 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: change default verification mode from
+ VERIFY_PEER to VERIFY_NONE because most POPS server does not have
+ true certification.
+
+Fri Mar 16 22:19:24 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE#ole_activex_initialize,
+ a little bit supporting ActiveX control. [ruby-talk:241188]
+
+Fri Mar 16 22:16:58 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: merge Ruby-SSPI patch contributed by Justin
+ Bailey.
+
+ * ext/Win32API/lib/win32/sspi.rb: new file.
+
+Wed Mar 14 12:30:00 2007 Shigeo Kobayashi <shigeo@tinyforest.jp>
+
+ * ext/bigdecimal/bigdecimal.c: BigDecimal("-.31") is now
+ treated as ("-0.31") not as ("0.31").
+
+Tue Mar 13 19:04:30 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/sync.rb: support for ruby 1.9(YARV) thread model.
+
+Tue Mar 13 09:25:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (clear-installed-list): separated from install-prereq.
+
+Tue Mar 13 07:23:20 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb (mon_try_enter): call @mon_muetx.try_lock.
+ Thanks, Keiju ISHITSUKA. [ruby-dev:30507]
+
+Tue Mar 13 02:42:58 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/cgi.rb (CGI::header): IIS >= 5.0 does not need the nph
+ assumption any more; submitted by MIYASAKA Masaru <alkaid AT
+ coral.ocn.ne.jp> in [ruby-dev:30537].
+
+Mon Mar 12 10:53:28 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/openssl/ossl_asn1.c (Init_ossl_asn1): Let rdoc know about
+ externally defined modules; submitted by Technorama
+ Ltd. <oss-ruby AT technorama.net> in [ruby-bugs:PR#4704].
+
+ * ext/openssl/ossl_bn.c (Init_ossl_bn): Ditto.
+
+ * ext/openssl/ossl_cipher.c (Init_ossl_cipher): Ditto.
+
+ * ext/openssl/ossl_digest.c (Init_ossl_digest): Ditto.
+
+ * ext/openssl/ossl_hmac.c (Init_ossl_hmac): Ditto.
+
+ * ext/openssl/ossl_pkey.c (Init_ossl_pkey): Ditto.
+
+ * ext/openssl/ossl_pkey_dh.c (Init_ossl_dh): Ditto.
+
+ * ext/openssl/ossl_pkey_dsa.c (Init_ossl_dsa): Ditto.
+
+ * ext/openssl/ossl_pkey_rsa.c (Init_ossl_rsa): Ditto.
+
+ * ext/openssl/ossl_rand.c (Init_ossl_rand): Ditto.
+
+ * ext/openssl/ossl_ssl.c (Init_ossl_ssl): Ditto.
+
+Sun Mar 11 18:42:01 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-mode.el (ruby-block-end-re): Support for the
+ experimental ';;' terminator had been dropped.
+
+Sun Mar 11 05:45:46 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/README, misc/rdebug.el: Add rdebug.el, Emacs ruby-debug
+ interface based on rubydb3x.el; submitted by Martin Nordholts
+ <enselic AT gmail.com> in [ruby-bugs:PR#9023].
+
+Sat Mar 10 07:20:28 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_TYPELIB#library_name,
+ WIN32OLE_TYPELIB#visible?.
+
+ * test/win32ole/test_win32ole_typelib.rb: ditto.
+
+Thu Mar 8 09:17:59 2007 Minero Aoki <aamine@loveruby.net>
+
+ * compile.c: iseq_compile -> rb_iseq_compile.
+
+ * iseq.c: ditto.
+
+ * intern.h: provide function prototype of Init_jump.
+
+ * eval_jump.h (Init_jump): declare function type.
+
+ * thread.c: platform-dependent functions should be surrounded by #ifdef.
+
+ * iseq.c (iseq_data_to_ary): remove unused variable.
+
+ * compile.c (set_arguments): ditto.
+
+ * thread.c (set_unblock_function): ditto.
+
+ * thread_pthread.ci: reduce printf warning.
+
+ * vm_dump.c: ditto.
+
+Tue Mar 6 16:35:04 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/shell/process-controller.rb: fix thread synchronization problem for [ruby-dev:30477].
+
+Tue Mar 6 11:53:25 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/irbtkw.rbw: fails to exit process.
+
+Tue Mar 6 10:23:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: added --pure (turned on by default) and --debugger
+ options.
+
+Mon Mar 5 09:19:33 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/timeout.rb (Timeout.timeout): should return the block value
+ always.
+
+ * lib/timeout.rb (Timeout.timeout): should yield sec argument
+ always.
+
+ * lib/timeout.rb (Timeout.timeout): fix document.
+
+Mon Mar 5 09:16:40 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: support automatic STARTTLS.
+
+ * lib/net/smtp.rb: check server advertisement.
+
+ * lib/net/smtp.rb: introduce new class SMTP::Response.
+
+ * lib/net/smtp.rb (getok): should not use sprintf.
+
+ * lib/net/smtp.rb (get_response): ditto.
+
+ * lib/net/protocol.rb: reduce syntax warning on 1.9.
+
+Mon Mar 5 07:13:28 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: reconstruct SMTPS/STARTTLS interface. New
+ interface is incompatible from current 1.9 interface at all.
+
+ * lib/net/smtp.rb: All SSL-related class methods are removed; use
+ instance methods instead.
+
+ * lib/net/smtp.rb: rename methods: *ssl -> *tls (with alias
+ "ssl").
+
+ * lib/net/smtp.rb: rename methods: *tls -> *starttls.
+
+Mon Mar 5 01:36:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex), win32/win32.c (rb_w32_utime): fixed
+ indentation broken at YARV merger.
+
+Sun Mar 4 23:41:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_uid, rb_stat_gid, eaccess): use rb_uid_t and
+ rb_gid_t instead of int.
+
+ * file.c (rb_stat_s_utime): fixed a commit miss for the platforms
+ where utimes() does not exist.
+
+ * lib/fileutils.rb (touch): ditto.
+
+Sun Mar 4 14:46:56 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * util.c (push_element): should return a int value.
+
+Sun Mar 4 01:01:25 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#^, Set#&): Correct documentation. Those methods
+ return sets, not arrays; noted by Oliver Frank Wittich <nietz AT
+ mangabrain.de>.
+
+Sat Mar 3 22:54:33 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (touch): last #touch change causes error when
+ :mtime option was not given.
+
+Sat Mar 3 22:51:29 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mv): could not move directory between
+ different file systems. [ruby-dev:30411]
+
+Sat Mar 3 22:37:02 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_utime): allow nil to set the current time.
+
+ * lib/fileutils.rb (touch): ditto, and added :mtime and :nocreate
+ options. fixed: [ruby-talk:219037]
+
+Sat Mar 3 15:52:26 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * object.c (instance_variable_get): Restore rdoc markups lost in
+ the last commit.
+
+Fri Mar 2 21:17:14 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (get_ptr_of_variant, ole_set_safe_array,
+ ole_val2ptr_variant, ole_val2olevariantdata, ole_variant2val,
+ ): fix some bugs of WIN32OLE_VARIANT.new when variant type is
+ VT_ARRAY|VT_BSTR or VT_BYREF.
+
+ * ext/win32ole/win32ole.c (folevariant_s_array, folevariant_initialize):
+ WIN32OLE_VARIANT#[], WIN32OLE_VARIANT#[]=, WIN32OLE_VARIANT#value=
+ is defined as instance method of WIN32OLE_VARIANT.
+
+ * test/win32ole/test_win32ole_variant.rb: add some test for
+ VT_ARRAY, VT_BYREF variant type.
+
+Fri Mar 2 07:58:24 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_ivar_set): RDoc updated according to a
+ suggestion from Brian Candler <B.Candler AT pobox.com>.
+ [ruby-core:10469]
+
+Thu Mar 1 21:38:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt, arg): should not omit lhs of OP_ASGN1 even if
+ empty. [ruby-dev:30455]
+
+Thu Mar 1 02:55:25 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (get_digest_base_metadata): Allow inheriting
+ Digest::Base subclasses, which was unintentionally made
+ impossible while restructuring Digest classes.
+
+Thu Mar 1 02:05:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb (patchlevel): read from version.h.
+
+Wed Feb 28 21:15:00 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (ac_cv_func_fcntl): fcntl support for MinGW.
+
+ * missing/flock.c: workaround for MinGW.
+
+Wed Feb 28 20:51:32 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * pack.c (pack_unpack): properly ignore non-base64 octets such as
+ UTF-8 encoded BOMs; submitted by SOUMA Yutaka <holon@radastery.jp>
+ to fix [ruby-core:10437]
+
+Wed Feb 28 18:31:51 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: no need to check unistd.h and sys/time.h.
+ they are already checked at configure.
+ reported by KOBAYASHI Yasuhiro [ruby-list:43225]
+
+Wed Feb 28 18:23:43 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb ($DEFLIBPATH): default library paths ($(topdir), etc)
+ should be the first elements of library paths list.
+ reported by KOBAYASHI Yasuhiro [ruby-list:43225]
+
+Wed Feb 28 10:33:58 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in, */Makefile.sub (THREAD_MODEL): system
+ specific thread model.
+
+ * compile.h, regint.h, vm.h, array.c: removed unnecessary #include.
+
+Wed Feb 28 04:03:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (take_i): small cosmetic / documentation patch from
+ Tadashi Saito <shiba AT mail2.accsnet.ne.jp>. [ruby-dev:30446]
+
+Wed Feb 28 01:20:18 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/{dbm,gdbm}/test_{dbm,gdbm}.rb: shouldn't use host_os. use
+ target_os instead. reported by KOBAYASHI Yasuhiro [ruby-list:43225]
+
+Wed Feb 28 00:08:11 2007 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
+
+ * mkconfig.rb (RbConfig): add CONFIG['PATCHLEVEL']
+
+ * common.mk: new target dist
+
+ * distruby.rb: new file
+
+Tue Feb 27 22:18:45 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (--enable-auto-image-base): avoid the necessity to
+ rebase the shared libs as much as possible;
+ submitted by Corinna Vinschen <spam at vinschen.de> in
+ [ruby-talk:240964].
+
+Tue Feb 27 21:36:47 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * util.c (__crt0_glob_function): use ruby_glob() instead of rb_globi().
+
+Tue Feb 27 21:33:04 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (ac_cv_func_setrlimit): workaround for djgpp.
+
+Tue Feb 27 20:35:28 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (error.c, process.c): depend on yarvcore.h and rubysig.h.
+
+Tue Feb 27 19:26:31 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/nkf/nkf.c (rb_str_resize, rb_nkf_kconv, rb_nkf_guess1,
+ rb_nkf_guess2): Silence warnings regarding char * vs. unsigned
+ char * mismatch; submitted by Lyle Johnson
+ <lyle.johnson@gmail.com> in [ruby-core:10416].
+
+Tue Feb 27 19:15:01 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/base64.rb (Base64::b64encode): Fix documentation; submitted
+ by David Symonds <dsymonds@gmail.com> in [ruby-core:10432].
+
+Tue Feb 27 18:59:42 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_load): Silence warnings
+ regarding char * vs. unsigned char * mismatch; submitted by Lyle
+ Johnson <lyle.johnson@gmail.com> in [ruby-core:10416].
+
+ * ext/digest/sha1/sha1ossl.c (SHA1_Finish): Ditto.
+
+ * ext/digest/rmd160/rmd160ossl.c (RMD160_Finish): Ditto.
+
+ * ext/digest/digest.c (rb_digest_base_finish,
+ rb_digest_base_update): Ditto.
+
+Tue Feb 27 18:12:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_take): new method. [ruby-dev:30407]
+
+ * enum.c (enum_drop): ditto.
+
+Tue Feb 27 07:47:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, vm.h: rename th_invoke_yield() to th_yield().
+
+ * blockinlining.c: ditto.
+
+ * eval.c: ditto.
+
+ * vm.c, insns.def: rename th_invoke_yield_cfunc()
+ to th_yield_with_cfunc().
+
+ * yarvcore.h, yarvcore.c: rename theYarvVM to ruby_current_vm and
+ yarvCurrentThread to ruby_current_thread. remove yarvVMArray.
+
+Tue Feb 27 00:45:23 2007 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_optimization.rb: restore method before calling
+ assert_equal.
+
+Mon Feb 26 00:58:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h: add rb_thread_t#top_wrapper, top_self.
+
+ * eval_load.c (rb_load): support eval in wrapper module
+ (load(file, true)).
+
+ * eval.c: ditto.
+
+ * eval_jump.h: ditto.
+
+ * iseq.c: ditto.
+
+ * vm.c: ditto.
+
+ * yarvcore.c: ditto.
+
+ * insns.def: add a empty line.
+
+Mon Feb 26 00:54:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: change "gdb" rule. You can debug miniruby with
+ $(srcdir)/test.rb on gdb by this rule (type "make gdb").
+ If you write break points to "breakpoints.gdb" on $srcdir,
+ gdb runs with this file.
+
+Sun Feb 25 11:46:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * win32/Makefile.sub: enable -Zi (debug) option.
+
+Sun Feb 25 11:38:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.h: define RUBY_VM macro and remove NATIVETHREAD* macros.
+
+ * intern.h: ditto.
+
+ * signal.c (posix_signal): remove unused function
+ posix_nativethread_signal().
+
+Sun Feb 25 11:31:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_run): fix to ANSI style.
+
+Sun Feb 25 11:09:16 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: show source code in error message.
+
+Sun Feb 25 09:39:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h:
+ rename:
+ rb_iseq_t#file_name -> filename
+ rb_iseq_t#local_tbl -> local_table
+ add:
+ rb_iseq_t#local_table_size
+
+ * compile.c: separate local_table_size and local_size
+ (local variable size)
+
+ * blockinlining.c: apply above rename.
+
+ * compile.h: ditto.
+
+ * eval.c: ditto.
+
+ * iseq.c: ditto.
+
+ * proc.c: ditto.
+
+ * vm.c: ditto.
+
+ * vm_dump.c: ditto.
+
+Sun Feb 25 10:27:17 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: add lib/ to load path.
+
+Sat Feb 25 10:16:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * rubyio.h (HAVE_RB_IO_T): macro to tell if rb_io_t is defined.
+
+Sat Feb 24 19:39:16 2007 Minero Aoki <aamine@loveruby.net>
+
+ * common.mk: new target "btest", to run bootstraptests.
+
+Sat Feb 24 19:30:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c, gc.c, io.c, ruby.h, rubyio.h, win32/win32.h (rb_io_t):
+ renamed from OpenFile.
+
+ * ext/dl/cptr.c, ext/io/wait/wait.c, ext/openssl/ossl.h,
+ ext/openssl/ossl_bio.c, ext/openssl/ossl_ssl.c, ext/pty/pty.c,
+ ext/readline/readline.c, ext/socket/socket.c: ditto.
+
+Sat Feb 24 19:28:23 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: new option -v,--verbose.
+
+Sat Feb 24 18:55:50 2007 Minero Aoki <aamine@loveruby.net>
+
+ * yarvtest/test_method.rb: removed (merged to bootstraptest).
+
+ * yarvtest/test_class.rb: ditto.
+
+Sat Feb 24 18:44:39 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/test_class.rb: new file.
+
+ * bootstraptest/test_method.rb: add tests.
+
+Sat Feb 24 18:44:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (rb_thread_blocking_region): add prototype.
+
+ * file.c (rb_thread_flock, rb_file_flock): use UBF feature.
+
+ * process.c (rb_waitpid_blocking, rb_waitpid): use UBF feature.
+
+ * thread.c (rb_thread_debug): added runtime debugging flag.
+
+ * thread.c (BLOCKING_REGION): restore previous UBF.
+
+ * thread.c (rb_thread_blocking_region): default UBF to interrupt
+ in system dependent way by RB_UBF_DFL.
+ + ubf_select() on posix system
+ + ubf_handle() on Win32
+ + none on cygwin
+
+ * thread_win32.ci (rb_w32_wait_events_blocking): blocking version.
+
+ * win32/win32.c (waitpid): use rb_w32_wait_events_blocking().
+
+Sat Feb 24 17:45:48 2007 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (f_arg, opt_f_block_arg): ripper should export VALUE.
+
+Sat Feb 24 16:52:55 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: fix syntax error.
+
+Sat Feb 24 16:51:09 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: new option --help.
+
+Sat Feb 24 16:47:33 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest: new test suite.
+
+ * bootstraptest/runner.rb: new file.
+
+ * bootstraptest/test_literal.rb: new file.
+
+ * bootstraptest/test_method.rb: new file.
+
+Sat Feb 24 16:29:15 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (StartSocket): remove unnecessary code.
+
+Sat Feb 24 16:04:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (struct local_vars): remove unused nofree member from
+ struct.
+
+ * parse.y (parser_free): ditto.
+
+Sat Feb 24 15:57:19 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/thread.rb (ConditionVariable#broadcast): use Mutex
+ instead of Thread.exclusive.
+
+ * lib/monitor.rb (MonitorMixin#mon_exit): unset @mon_owner
+ before calling Mutex#unlock.
+
+Sat Feb 24 15:51:45 2007 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (program): remove useless assignment to reduce warning.
+
+Sat Feb 24 15:41:51 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (lambda): remove unused clause from the rule to stop
+ warning.
+
+Sat Feb 24 15:41:22 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/thread.rb: do not redefine Mutex#synchronize.
+
+Sat Feb 24 15:14:02 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb: rewritten using Mutex/ConditionVariable.
+
+Sat Feb 24 13:25:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * lib/soap/mapping/factory.rb: catch up with spec changes (return
+ Symbols instead of Strings).
+
+ * lib/soap/mapping/mapping.rb: ditto.
+
+Sat Feb 24 10:49:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y, node.h, compile.c: change node tree structure. a purpose
+ of this change is to unify argument structure of method and block.
+ this change prohibits duplicate block parameter name.
+ new argument information:
+ NODE_ARGS [m: int, o: NODE_OPT_ARG, ->]
+ NODE_ARGS_AUX [r: ID, b: ID, ->]
+ NODE_ARGS_AUX [Pst: id, Plen: int, init: NODE*]
+ optarg information:
+ NODE_OPT_ARGS [idx, expr, ->]
+
+ * vm_macro.def: ditto.
+
+ * gc.c: ditto.
+
+ * iseq.c: ditto.
+
+ * compile.h: fix debug function name.
+
+ * test/ripper/test_scanner_events.rb: |_,_,foo| -> |_1,_2,foo|
+
+ * test/ruby/test_lambda.rb: disable test temporarily.
+
+Sat Feb 24 10:46:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/testunit/test_testcase.rb: catch up with current instance
+ variable spec.
+
+Sat Feb 24 10:32:59 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: change vm_macro.def rule.
+
+Sat Feb 24 10:38:05 2007 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/cparse.c (cparse_params_mark): remove useless
+ rb_gc_mark. Thanks Tomoyuki Chikanaga. [ruby-dev:30405]
+
+Sat Feb 24 07:31:35 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_VARIANT.array,
+ WIN32OLE_VARIANT#value=, refactoring.
+
+ * test/win32ole/test_win32ole_variant.rb: add some test for
+ WIN32OLE_VARIANT.array, WIN32OLE_VARIANT#value=.
+
+Fri Feb 23 18:37:55 2007 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_yield.rb: new test.
+
+ * yarvtest/test_yield.rb: removed (moved to test_yield.rb).
+
+Fri Feb 23 18:27:17 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (rb_thread_polling): check interrupts here.
+
+ * thread_win32.ci (w32_wait_events): rename from w32_wait_event(), and
+ now receive multiple event handles.
+
+ * win32/win32.c (wait_events, rb_w32_main_context): removed.
+
+ * thread_win32.ci (rb_w32_wait_events): new function.
+
+ * thread_win32.ci, win32/win32.c (rb_w32_sleep, rb_w32_Sleep): move
+ from win32/win32.c to thread_win32.ci, and use w32_wait_events().
+
+Fri Feb 23 18:13:22 2007 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_optimization.rb: new test (merges test_opts.rb).
+
+ * yarvtest/test_opts.rb: removed.
+
+Fri Feb 23 16:59:39 2007 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_assignment.rb: merge yarvtest/test_massign.
+
+ * yarvtest/test_massign.rb: removed (merged to
+ test_assignment.rb).
+
+Fri Feb 23 15:58:20 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * signal.c (sighandler): need to re-install sighandler on some
+ platforms.
+
+Fri Feb 23 15:05:57 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (set_pioinfo_extra): simplified.
+
+Fri Feb 23 14:23:20 2007 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_literal.rb: new test.
+
+Fri Feb 23 12:40:12 2007 James Edward Gray II <james@grayproductions.net>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client::do_rpc): Make the
+ Content-Length parameter optional for responses in
+ xmlrpc/client.rb; suggested by Daniel Berger
+ <Daniel.Berger@qwest.com> and approved by the maintainer.
+
+ * lib/xmlrpc/create.rb (XMLRPC::Create::conv2value): Add DateTime
+ support to xmlrpc; approved by the maintainer.
+
+Fri Feb 23 12:24:46 2007 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (lambda): add ripper event. This fixes bus error on
+ "make test-all".
+
+ * ext/ripper/extconf.rb: do not stop build.
+
+Fri Feb 23 12:16:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: remove dyna_check_gen() prototype.
+
+Fri Feb 23 11:41:21 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y, compile.c, gc.c, insns.def, intern.h, iseq.c, node.h,
+ object.c, string.c, variable.c, vm_macro.def: revert private
+ instance variable feature, which is postponed until next major
+ release.
+
+ * marshal.c: TYPE_SYMBOL2 removed; MARSHAL_MINOR reverted back to
+ 8th version.
+
+Fri Feb 23 10:53:21 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * thread_pthread.ci (native_mutex_lock): do not call
+ pthread_mutex_trylock().
+
+Fri Feb 23 10:31:16 2007 Minero Aoki <aamine@loveruby.net>
+
+ * dln.c: use dlopen on Mac OS X 10.3 or later.
+
+Fri Feb 23 10:03:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_ord): need not to check string length; ord
+ returns a codepoint for the first character in the string.
+
+Wed Feb 21 22:29:45 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * numeric.c (fix_equal): A bit more optimization.
+
+Wed Feb 21 17:40:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_equal): remove FIX2LONG() to optimize. suggested
+ in http://t-a-w.blogspot.com/2007/02/making-ruby-faster.html.
+ [ruby-talk:240223]
+
+ * numeric.c (fix_cmp): ditto.
+
+Wed Feb 21 09:14:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_load.c (rb_require_safe): should restore safe level.
+
+Tue Feb 20 21:19:29 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (installed_code_page_proc,
+ ole_variant2val): small refactoring.
+
+Tue Feb 20 15:11:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm.c, yarvcore.h: move definition of rb_call_super() to
+ vm.c from eval.c. change th_call_super() to static function.
+
+Tue Feb 20 15:08:25 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/io/nonblock/test_flush.rb: YARV doesn't raise any errors if
+ another thread close IO object which current thread is blocking with.
+
+Tue Feb 20 15:03:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (do_select, rb_thread_wait_fd_rw): raise sys error if
+ errno is not 0 and EBADF.
+
+Mon Feb 19 22:15:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_REPLACE_TYPE): cache convertible type info.
+
+ * intern.h (rb_detach_process): use rb_pid_t instead of pid_t.
+
+ * ruby.h (PIDT2NUM, NUM2PIDT, UIDT2NUM, NUM2UIDT, GIDT2NUM, NUM2GIDT):
+ defaulted to conversion using long.
+
+Mon Feb 19 17:14:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (unix_peeraddr): wrong syscall name in error
+ message for #peeraddr. a patch from Sam Roberts
+ <sroberts at uniserve.com>. [ruby-core:10366]
+
+Sun Feb 18 22:56:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getgrgid): missed to replace a macro.
+
+Sun Feb 18 19:33:00 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: updated based on date2 4.0.3.
+
+Sun Feb 18 13:11:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (pid_t, uid_t, gid_t): check if defined.
+
+ * intern.h, process.c, rubyio.h, ext/etc/etc.c, ext/pty/pty.c: use
+ rb_{pid,uid,gid}_t instead of plain int. [ruby-dev:30376]
+
+ * ext/etc/extconf.rb (PIDT2NUM, NUM2PIDT, UIDT2NUM, NUM2UIDT, GIDT2NUM,
+ NUM2GIDT): moved to configure.in.
+
+Fri Feb 16 21:34:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * object.c (rb_obj_ivar_set/get/defined): fix to check :@_v/C id.
+
+ * test/testunit/test_testcase.rb: fix to use instance_variable_get()
+ to access @_result.
+
+Fri Feb 16 20:59:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * intern.h: add a prototype of rb_sym_to_s().
+
+Fri Feb 16 19:24:22 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (math_log): update document to mention second optional
+ argument for logarithm base.
+
+Fri Feb 16 19:19:21 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (mrhs): need to append by arg_append().
+ [ruby-talk:239385]
+
+Fri Feb 16 11:18:21 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/.document: Apply patch for irb, e2mmap and README by Hugh Sasse
+ <hgs at dmu.ac.uk> from [ruby-core:10135]
+
+ * lib/prettyprint.rb: Suppress RDoc for PrettyPrint test suite.
+
+Thu Feb 15 20:48:36 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (set_pioinfo_extra): new function for VC++8 SP1
+ workaround. [ruby-core:10259]
+
+ * win32/win32.c (NtInitialize): call above function.
+
+Thu Feb 15 16:25:54 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/uri/generic.rb (URI::Generic::userinfo): Considering how
+ `scheme://user:@...', `scheme://:password@...' and
+ `scheme://:@...' are parsed, an empty user name or password
+ should be allowed and represented as it is.
+
+Thu Feb 15 01:52:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.(c|h), yarvcore.(c|h) (yarvGlobalStateVersion): rename to
+ ruby_vm_global_state_version.
+
+Thu Feb 15 01:50:26 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/fileutils/test_fileutils.rb (check_singleton): fix to use
+ symbol instead of string.
+
+ * test/io/nonblock/test_flush.rb: enable tests.
+
+ * test/xmlrpc/test_webrick_server.rb: ditto.
+
+Thu Feb 15 01:43:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * lib/delegate.rb: catch up with class local variable (@_v) spec.
+
+ * lib/singleton.rb: ditto.
+
+Wed Feb 14 22:52:43 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_variant2val): VC++6 does not
+ support VT_I8, VT_UI8.
+
+Wed Feb 14 22:10:21 2007 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in: change stack limit to 2MB from 32MB.
+
+ * win32/Makefile.sub: ditto.
+
+Wed Feb 14 21:39:36 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest.rb (Digest::self.const_missing): Drop
+ autoloads for sha2 classes in favor of handling in
+ const_missing(), to work around a problem exposed on OS X.
+
+Wed Feb 14 21:19:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.ci (native_thread_create): adjust 4KB (page size)
+ alignment.
+
+Wed Feb 14 21:12:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.ci (CHECK_ERR): call rb_bug()
+ instead of printf() and exit().
+
+Wed Feb 14 16:48:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/date/format.rb (Date::Format::Bag::method_missing): need not
+ to use instance variables corresponding each method; use Hash
+ instead.
+
+Wed Feb 14 13:12:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (reg_operand): allow symbols to be operands for regular
+ expression matches.
+
+ * string.c (Init_String): allow Symbol#===.
+
+ * lib/date/format.rb (Date::Format::Bag::to_hash): string
+ added prefixes.
+
+Wed Feb 14 12:58:38 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (do_select): fix to iterate select().
+ on cygwin/mswin32, iterate in unblocking region.
+
+ * thread.c (rb_thread_select): don't iterate on this function.
+ (iterate in do_select).
+
+Wed Feb 14 11:39:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (set_unblock_function): fix function interface.
+
+Wed Feb 14 11:12:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_load.c, yarvcore.h: use rb_vm_t#loaded_features instead of
+ rb_features (global variable).
+
+ * yarvcore.c: mark rb_vm_t#loaded_features.
+
+Wed Feb 14 08:46:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): no longer distinguish ordinary local
+ variables and in-block local variables in defined? value.
+
+Wed Feb 14 03:14:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic::userinfo): should support
+ empty password. [ruby-core:10290]
+
+ * lib/uri/generic.rb (URI::Generic::set_password): password can be
+ cleared by nil. [ruby-core:10290]
+
+Wed Feb 14 03:10:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (struct local_vars): no need to warn out-of-scope
+ variables; remove dnames member from struct.
+
+Wed Feb 14 03:04:10 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: RVarmap no longer used as yytype; removed.
+
+ * parse.y (dyna_push_gen): no longer need return value.
+
+ * parse.y (dyna_pop_gen): no longer need argument.
+
+ * parse.y (local_push_gen): initialize nofree.
+
+Wed Feb 14 00:30:07 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (init_unixsock): path may contain NUL for
+ abstract unix sockets. [ruby-core:10288]
+
+Tue Feb 13 02:21:12 2007 Sam Roberts <sroberts@uniserve.com>
+
+ * io.c (rb_f_syscall): Fix buffer overflow with syscall
+ arguments. [ruby-bugs:PR#8541]
+
+Mon Feb 12 13:57:30 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_variant2val): support VT_I8, VT_UI8.
+
+Mon Feb 12 11:48:52 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/dublincore.rb, lib/rss/maker/dublincore.rb: dc_rightses
+ -> dc_rights_list. dc_rightses still exists for backward
+ compatibility. [ruby-core:8350]
+
+ * test/rss/test_maker_dc.rb: added tests for dc_rights_list.
+
+Sun Feb 11 22:40:17 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_ptrtype2val): ole_type, ole_type_detail
+ should not return "VARIANT,VARIANT".
+
+Sun Feb 11 22:11:05 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#initialize):
+ kept backward compatibility.
+
+Sun Feb 11 22:10:08 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::ListenerMixin#start_else_element): used
+ const_defined? instead of constants.include?.
+
+Sun Feb 11 18:47:14 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata):
+ WIN32OLE_VARIANT#new accepts nil when variant type is VT_ARRAY.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+ * ext/win32ole/win32ole.c: small refactoring.
+
+Sun Feb 11 07:42:25 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): Properly parse
+ a quoted-string in a Content-Disposition value.
+
+Sat Feb 10 20:21:29 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE#ole_query_interface.
+ thanks to Mikael Pahmp.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Sat Feb 10 17:46:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: targets which depend on yarvcore.h now depend on
+ rubysig.h too.
+
+ * yarvcore.h (rb_vm_t): use rb_atomic_t instead of int.
+
+Sat Feb 10 00:13:11 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fix typo (TkConfigMethod::__confinfo_cmd,
+ __conv_keyonly_opts).
+
+Fri Feb 9 12:33:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_win32.ci (w32_show_error_message): renamed to w32_error.
+ this function do rb_bug().
+
+ * thread_win32.ci (w32_set_event, w32_reset_event, w32_close_handle,
+ w32_resume_thread): added. fix to use these functions instead calling
+ win32api directly.
+
+ * thread_win32.ci (w32_create_thread): create suspend thread
+ (caller must call w32_resume_thread()).
+
+Fri Feb 9 11:03:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_readpartial.rb: tests are working on mswin32/cygwin.
+
+Fri Feb 9 05:08:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, thread_pthread.ci, thread_win32.ci (thread_start_func_1):
+ move cleanup function to thread_start_func_2().
+
+ * thread.c, thread_pthread.ci, thread_win32.ci:
+ add more destruct functions.
+ (native_thread_destroy() and native_mutex_destroy())
+
+ * thread_pthread.ci, thread_pthread.h: make native_mutex_* functions
+ (check error, etc), it's not macro any more.
+
+ * thread_win32.ci (thread_start_func_1): store some values before
+ running thread (to release these after running thread).
+
+ * thread_win32.ci (native_thread_create): fix spaces.
+
+Thu Feb 8 22:44:04 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_set_safe_array, ole_variant2val,
+ ole_val_ary2variant_ary): fix WIN32OLE_VARIANT.new bug when
+ 1st argument is empty array, and when 2nd argument is
+ VT_ARRAY|VT_BYREF.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+Thu Feb 8 22:39:09 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvtest/yarvtest.rb: check target command names.
+
+Thu Feb 8 22:31:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_clone.rb: fix to current spec
+ (Module should not be occur many times in ancestors).
+
+Thu Feb 8 22:26:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_string.rb: ("foo" == :foo) and ("foo" === :foo)
+ should be false.
+
+ * ChangeLog: fix last messages.
+
+Thu Feb 8 22:24:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_module.rb: fix to use Symbol instead of String.
+
+ * test/ruby/test_module.rb: remove space before argument parentheses.
+
+Thu Feb 8 22:02:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/marshaltestlib.rb: eval(sym) -> eval(sym.to_s)
+
+Thu Feb 8 21:35:16 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_propertyputref.rb (setup): fix typo.
+
+ * test/win32ole/test_win32ole_event.rb: should not use
+ InternetExplorer.gohome to test.
+
+Thu Feb 8 21:02:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (GVL_UNLOCK_RANGE): rename to BLOCKING_REGION().
+
+ * thread.c (rb_thread_run_parallel): rename to
+ rb_thread_blocking_region().
+
+Thu Feb 8 15:48:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, thread.c: fix to use pthread on cygwin.
+
+ * yarvcore.h, thread.c: move GVL_UNLOCK_BEGIN() and GVL_UNLOCK_END()
+ from yarvcore.h to thread.c.
+
+ * thread.c: change GVL_UNLOCK_RANGE() arguments
+ (adding ubf as 2nd argument).
+
+ * thread.c: fix to use polling in select on cygwin and mswin32.
+
+ * thread.c, thread_pthread.ci, thread_win32.ci, yarvcore.h:
+ rename:
+ * rb_thread_t#interrupt_function -> unblock_function
+ * rb_interrupt_function_t -> rb_unblock_function
+ * some interrupt function name -> ubf_*
+ * yarv_* -> *
+
+Thu Feb 8 16:08:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix to use RUNRUBY instead of BASERUBY if possible.
+
+ * common.mk ($(INSNS) rule): remove $(PROGRAM) first.
+
+Thu Feb 8 15:43:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * process.c: fix to use rb_status_line_set/get/clear().
+
+ * eval_intern.h: fix line break.
+
+Thu Feb 8 15:00:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c, error.c, eval.c, eval_error.h, eval_intern.h,
+ eval_jump.h, eval_load.c, eval_safe.h, gc.c, proc.c, signal.c,
+ thread.c, thread_pthread.ci, thread_win32.ci, vm.c, vm.h,
+ vm_dump.c, vm_evalbody.ci, yarvcore.c, yarvcore.h:
+ fix typo (rb_thead_t -> rb_thread_t).
+
+ * eval_intern.h: remove unused definitions.
+
+ * common.mk: fix around vm_opts.h path
+ and remove harmful argument passed to insns2vm.rb.
+
+Thu Feb 8 03:11:47 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::unescapeHTML): invalid decoding for single
+ unescaped ampersand. a patch from Tietew
+ <tietew+ruby-dev at tietew.net> in [ruby-dev:30292].
+ fixed: [ruby-dev:30289]
+
+Wed Feb 7 23:25:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (specific_eval): suppress warning.
+
+ * thread_win32.h: undefine _WIN32 on cygwin. [ruby-dev:30303]
+
+Wed Feb 7 22:41:34 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h: remove UNSUPPORTED() macro.
+
+ * thread.c: fix to define Continuation methods
+ (they only do rb_notimplement()).
+
+Wed Feb 7 22:33:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h, yarvcore.h: remove unused macro definition.
+
+Wed Feb 7 22:30:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c: fixed to use ANSI function style.
+
+Wed Feb 7 09:35:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * this commit is a result of refactoring. only renaming functions,
+ moving definitions place, add/remove prototypes, deleting
+ unused variables and removing yarv.h.
+ This commit doesn't change any behavior of ruby/vm.
+
+ * yarv.h, common.mk: remove yarv.h (contents are moved to yarvcore.h).
+
+ * error.c, eval_intern.h: include yarvcore.h instead yarv.h
+
+ * rename some functions:
+ * debug.[ch]: debug_*() -> ruby_debug_*()
+ * iseq.c: iseq_*() -> rb_iseq_*(), ruby_iseq_disasm()
+ * iseq.c: node_name() -> ruby_node_name()
+ * vm.c: yarv_check_redefinition_opt_method() ->
+ rb_vm_check_redefinition_opt_method()
+
+ * some refactoring with checking -Wall.
+
+ * array.c: remove rb_ary_ptr() (unused) and remove unused
+ local variables.
+
+ * object.c: add a prototype of rb_mod_module_exec().
+
+ * eval_intern.h (ruby_cref): set it inline.
+
+ * eval_load.c (rb_load), yarvcore.c: yarv_load() -> rb_load_internal().
+
+ * parse.y: add a prototype of rb_parse_in_eval() (in eval.c).
+
+ * process.c: add a prototype of rb_thread_stop_timer_thread() (in thread.c).
+
+ * thread.c: remove raw_gets() function (unused) and fix some format
+ mismatch (format mismatches have remained yet. this is todo).
+
+ * thread.c (rb_thread_wait_fd_rw): fix typo on label name.
+
+ * thread_pthread.ci: comment out codes with USE_THREAD_CACHE.
+
+ * vm.c (rb_svar, rb_backref_get, rb_backref_get,
+ rb_lastline_get, rb_lastline_set) : moved from yarvcore.c.
+
+ * vm.c (yarv_init_redefined_flag): add a prototype and rename
+ yarv_opt_method_table to vm_opt_method_table.
+
+ * vm.c (rb_thread_eval): moved from yarvcore.c.
+
+ * yarvcore.c: remove unused global variables and fix to use nsdr().
+
+Wed Feb 7 03:39:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c, compile.c, compile.h, error.c, eval.c,
+ eval_intern.h, eval_jump.h, eval_load.c, eval_method.h,
+ eval_safe.h, gc.c, insnhelper.h, insns.def, iseq.c, proc.c,
+ process.c, signal.c, thread.c, thread_pthread.ci, thread_win32.ci,
+ vm.c, vm.h, vm_dump.c, vm_evalbody.ci, vm_macro.def,
+ yarv.h, yarvcore.h, yarvcore.c: change type and macro names:
+ * yarv_*_t -> rb_*_t
+ * yarv_*_struct -> rb_*_struct
+ * yarv_tag -> rb_vm_tag
+ * YARV_* -> RUBY_VM_*
+
+ * proc.c, vm.c: move functions about env object creation
+ from proc.c to vm.c.
+
+ * proc.c, yarvcore.c: fix rb_cVM initialization place.
+
+ * inits.c: change Init_ISeq() order (after Init_VM).
+
+ * ruby.h, proc.c: change declaration place of rb_cEnv
+ from proc.c to ruby.c.
+
+Tue Feb 6 22:06:45 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c,utf8tbl.c}:
+ imported nkf 2007-01-28.
+ * Fixed: can't decode MIME encode JIS string.
+ * Fixed: Fullwidth-halfwidth conversion.
+ * Support DoCoMo's and Softbank's EMOJI
+ * Support CP932, CP5022x, eucJP-ms UDC
+ * Support UTF-32 encoding
+ * Support beyond BMP
+ [ruby-dev:29700] [ruby-dev:29922] [ruby-dev:30144]
+
+Tue Feb 6 20:36:19 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, lib/rss/parser.rb: followed current Ruby
+ specification. [ruby-dev:30274]
+
+Tue Feb 6 20:29:44 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, lib/rss/parser.rb: removed needless code for
+ backward compatibility.
+
+Tue Feb 6 18:43:17 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb: moved fixes for EPIPE to the correct
+ place. [ruby-core:10204]
+
+Tue Feb 6 16:38:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_opts.h: set properties:
+ svn:keywords: Author Date Id Revision
+ svn:eol-style: native
+
+Tue Feb 6 15:55:46 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (ivar_i): need to support class local instance
+ variables.
+
+Tue Feb 6 15:44:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix setting is_local flag.
+
+ * yarvtest/test_class.rb: add a test for class local instance variable.
+
+Tue Feb 6 14:15:34 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def: remove (get|set)instancevariable2 and add a
+ operand is_local to (get|set)instancevariable.
+
+ * yarvtest/test_class.rb: add a test for class local instance variable.
+
+ * parse.y (rb_decompose_ivar2): remove unused variable oid.
+
+ * tool/insns2vm.rb: remove needless require.
+
+Tue Feb 6 11:18:41 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb: check the control connection on EPIPE.
+ Thanks, Simon Williams. [ruby-core:9547]
+
+Tue Feb 6 11:03:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * complement last commit.
+
+ * common.mk (*.inc): use VPATH.
+
+ * vm_opts.h: renamed from vm_opts.h.base.
+
+Tue Feb 6 10:02:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/insns2vm.rb: use vm_opts.h in VPATH.
+
+Tue Feb 6 03:47:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c: support Binding#eval.
+
+ * yarvtest/test_eval.rb: add a test for above change.
+
+Tue Feb 6 03:13:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c: refactoring (remove K&R style, move Binding stuffs from
+ Init_Proc() to Init_Binding()).
+
+Tue Feb 6 01:07:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * intern.h: prepare rb_last_status_get() and rb_last_status_set().
+ Use these functions instead of rb_last_status ([ruby-dev:30264]).
+
+ * process.c: define above functions.
+
+ * ext/pty/pty.c: use above functions.
+
+ * io.c (pipe_finalize): ditto.
+
+ * process.c: ditto.
+
+Mon Feb 5 21:26:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.h: add a prototype of rb_id2str().
+
+Mon Feb 5 21:06:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_thread.c, common.mk: remove eval_thread.c.
+
+ * yarvcore.c: rename cYarvThread to rb_cThread.
+
+ * gc.c: remove YARV_* prefix.
+
+ * gc.h: add an include guard and prototype of rb_gc_set_stack_end().
+
+ * inits.c: fix to ANSI prototype style and reorder Init_*().
+
+ * io.c (pipe_finalize): TODO: comment out last_status.
+
+ * process.c, yarvcore.h: fix to use yarv_vm_t#last_status instead of
+ rb_last_status and make last_status_get() to access $?.
+
+ * yarvcore.c (vm_mark): mark yarv_vm_t#last_status.
+
+ * ruby.h: add declarations of rb_cISeq and rb_cVM.
+
+ * thread.c: move eval_thread.c codes to thread.c and remove yarv_*
+ function prefix.
+
+ * thread.c (thread_start_func_2): use yarv_thread_t#first_func if
+ it is not null.
+
+ * vm.c: fix copyright year.
+
+ * yarvcore.c (Init_vm): rename to Init_VM().
+
+Mon Feb 5 04:09:48 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_frame_callee): check if prev_cfp can be accessible.
+ a patch from Yoshinori Sano <yoshinori.sano at gmail.com> in
+ [ruby-dev:30252]. solves [ruby-dev:30200] and [ruby-core:9856].
+
+Sun Feb 4 20:34:41 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/rss-assertions.rb: removed needless code for backward
+ compatibility.
+
+Sun Feb 4 02:22:59 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): Remove a debug
+ print.
+
+Sat Feb 3 23:51:58 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_compose_ivar2): function to create a new ivar2
+ symbol from a symbol and a class. back-ported from matzruby.
+
+ * parse.y (rb_decompose_ivar2): reverse function of
+ rb_compose_ivar2().
+
+ * marshal.c (w_symbol): support class local instance variables.
+
+ * marshal.c (r_object0): ditto.
+
+ * compile.c (defined_expr): ditto.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * insns.def: add two new instructions: getinstancevariable2 and
+ setinstancevariable2.
+
+Sat Feb 3 23:21:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (setclassvariable): remove unnecessary operand.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * common.mk (insns_info.inc): add dependency for insns_info.inc.
+
+Sat Feb 3 14:32:58 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata, ole_val2variant):
+ fix the bug of WIN32OLE_VARIANT.new when variant type is
+ VT_ARRAY.
+
+ * ext/win32ole/sample/excel1.rb: rewrite using WIN32OLE_VARIANT.
+
+ * test/win32ole/test_win32ole.rb: add some test.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+Sat Feb 3 03:35:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, */Makefile.sub, common.mk (vmasm): generalized.
+
+ * common.mk (runruby, benchmark, benchmark-each, tbench): use
+ PROGRAM for the file to be built.
+
+ * proc.c (yarv_proc_alloc): needs return.
+
+ * call_cfunc.ci, compile.c, compile.h, debug.h, eval.c,
+ eval_error.h, eval_jump.h, eval_load.c, eval_thread.c, gc.c,
+ insnhelper.h, insns.def, iseq.c, main.c, numeric.c, parse.y,
+ range.c, ruby.h, signal.c, thread.c, thread_win32.ci, vm.c,
+ vm.h, vm_dump.c, vm_evalbody.ci, yarvcore.c, yarvcore.h:
+ fixed indents and non-C90 comments.
+
+ * regenc.h: revert to before YARV.
+
+ * lib/mkmf.rb (create_makefile): make object files depend on
+ extconf.h even if depend file exists.
+
+Fri Feb 2 23:39:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * common.mk (bin): add more dependency. a patch from Tadashi
+ Saito <shiba at mail2.accsnet.ne.jp>. [ruby-dev:30245]
+
+Fri Feb 2 18:44:31 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (setclassvariable): remove warn argument.
+
+Fri Feb 2 18:36:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * common.mk (compile.$(OBJEXT)): add config.h to vm.c and
+ compile.c.
+
+Fri Feb 2 18:27:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: remove duplicated global variables rb_cProc and
+ rb_cBinding. [ruby-dev:30242]
+
+Fri Feb 2 00:13:44 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (SYMBOL_P): make Symbol immediate again for performance.
+
+ * string.c: redesign symbol methods.
+
+Thu Feb 1 23:25:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_id2str): store Strings for operator symbols.
+ [ruby-dev:30235]
+
+Thu Feb 1 21:04:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assignable_gen): no need to generate NODE_CVDECL.
+
+ * compile.c (iseq_compile_each): no NODE_CVDECL.
+
+Thu Feb 1 20:53:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm.c (eval_get_cvar_base): destination for class variable access
+ is now strictly innermost surrounding class or module. warned
+ if accessed from toplevel.
+
+ * variable.c (rb_cvar_get): new class variable look-up scheme:
+ 1) look up in the class. 2) if the class is singleton attached
+ to a class (i.e. metaclass) then start look up in the attached
+ class and its ancestors. 3) otherwise, look-up in ancestors of
+ the class.
+
+ * eval.c (cvar_cbase): destination for class variable access is
+ the class/module that holds the method, or cbase outside of
+ methods.
+
+Thu Feb 1 20:31:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_set): remove warn argument.
+
+Wed Jan 31 14:52:09 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (TestIterator::test_block_given_within_iterator):
+ add new test. [ruby-core:10125]
+
+Tue Jan 30 17:01:21 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_sub_bang): calling rb_str_modify() should be just
+ before actually modifying the string.
+ fixed: [ruby-dev:30211] (originally reported by zunda)
+
+Tue Jan 30 13:24:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_pred): add Integer#pred corresponding
+ Integer#succ. [RCR#5]
+
+Tue Jan 30 12:05:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: autoconf 2.61 support. [ruby-core:10016]
+
+Mon Jan 29 23:52:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * tool/compile.rb: replace YARVCore by VM class.
+
+Mon Jan 29 17:52:44 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/date/format.rb (Date::Format::Bag::method_missing): add
+ prefix to avoid making t class-local instance variable.
+
+Mon Jan 29 21:32:37 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE.locale=, WIN32OLE.locale,
+ WIN32OLE_VARIANT#vartype.
+
+ * test/win32ole/test_win32ole.rb: add test for WIN32OLE.locale=,
+ WIN32OLE.locale.
+
+ * test/win32ole/test_win32ole_variant.rb: add test for
+ WIN32OLE_VARIANT#vartype.
+
+Mon Jan 29 14:14:35 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * tool/parse.rb: replace YARVCore by VM class.
+ http://d.hatena.ne.jp/ysano2005/20070128
+
+Sun Jan 28 08:41:49 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: refactoring.
+
+Sat Jan 27 18:36:33 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata): bug fix.
+ WIN32OLE_VARIANT.new check that 1st argument should T_ARRAY
+ when variant type is VT_ARRAY.
+
+ * test/win32ole/test_win32ole_variant.rb: add some test.
+
+Fri Jan 26 23:55:56 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: bug fix of WIN32OLE_VARIANT when variant
+ type is VT_BYREF|VT_VARIANT.
+
+ * test/win32ole/test_win32ole_variant_with_ie.rb: ditto.
+
+Fri Jan 26 12:03:39 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb (TkConfigMethod#__confinfo_cmd,
+ __conv_keyonly_optkeys): make them private [ruby-dev:30074].
+
+ * ext/tk/lib/tk/txtwin_abst.rb: fix typo [ruby-dev:30073].
+
+ * ext/tk/lib/tk/canvas.rb (TkCanvas#scan_dragto): lack of an argument.
+
+ * ext/tk/lib/tk/canvas.rb: clarify the including module name
+ [ruby-dev:30080].
+
+ * ext/tk/lib/tk/scrollable.rb: change primary name of modules
+ [ruby-dev:30080].
+
+Fri Jan 26 07:48:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_init_copy): need to copy internal
+ structure on clone and dup. [ruby-dev:30192]
+
+Wed Jan 24 20:34:51 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/ruby/test_iterator.rb: removed a needless workaround.
+
+Wed Jan 24 18:05:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): fix
+ regexp font-lock bug. [ruby-talk:235758]
+
+Tue Jan 23 18:26:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): use == instead
+ of ===. [ruby-dev:30176]
+
+Tue Jan 23 15:39:25 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * Makefile.in, common.mk, configure.in, */{Makefile.sub, configure.bat,
+ setup.mak}: add --with-baseruby configure option.
+
+Mon Jan 22 14:57:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: fix errors in socket sample code.
+ [ruby-core:09992]
+
+Sat Jan 20 21:05:18 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fole_s_set_code_page): WIN32OLE.codepage=
+ accepts installed codepage.
+
+ * test/win32ole/test_win32ole.rb (test_s_codepage_changed): ditto.
+
+Sat Jan 20 11:18:49 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke, ole_invoke2, ole_propertyput):
+ modify WIN32OLERuntimeError message.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Sat Jan 20 06:45:21 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_proc.c (method_receiver): add new method to get the bound
+ receiver of the method object. [ruby-talk:234949]
+
+ * eval_proc.c (method_name): new method to get the name of a
+ method.
+
+ * eval_proc.c (method_owner): a new method to get the class or
+ module that defines the method.
+
+Fri Jan 19 17:12:23 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (Init_win32ole): add WIN32OLE_VARIANT::Empty,
+ WIN32OLE_VARIANT::Null, WIN32OLE_VARIANT::Nothing.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+ * test/win32ole/test_nil2vtempty.rb(test_openSchema): ditto.
+
+Fri Jan 19 06:53:38 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (olevariant_free): fix memory leak.
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata):
+ WIN32OLE_VARIANT.new accepts nil as first argument for some VARIANT
+ TYPE.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+Wed Jan 17 17:31:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * some refactoring around yarvcore and proc.
+
+ * eval_proc.c: renamed to proc.c.
+
+ * common.mk: ditto.
+
+ * yarvcore.h, yarvcore.c: rename or remove some global variables
+ removed: mYarvCore, mYarvInsns
+ renamed: cYarvISeq -> rb_cISeq,
+ cYarvProc -> rb_cProc, cYarvBinding -> rb_cBinding
+ ::YarvCore module is removed and ::YarvCore::VM class becomes ::VM.
+ And change/remove some functions which added with YARV.
+
+ * compile.c: ditto.
+
+ * eval.c: ditto.
+
+ * iseq.c: ditto.
+
+ * vm.c: ditto.
+
+ * inits.c: rename Init_yarvcore to Init_vm.
+
+ * yarvcore.c, proc.c: move some functions and initialization
+ from yarvcore.c to proc.c.
+
+ * intern.h, proc.c: add global function rb_binding_new(void).
+
+Tue Jan 16 17:49:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (eval_search_super_klass): rename to search_super_klass() and
+ use it by th_call_super().
+
+ * insns.def: ditto.
+
+Tue Jan 16 17:48:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix ruby script path.
+
+Tue Jan 16 17:39:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (invoke_block): fix to specify self.
+
+Tue Jan 16 12:12:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * env.h: removed
+
+Tue Jan 16 12:00:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_proc.c (rb_proc_new): added.
+
+ * string.c (sym_to_proc): supported.
+
+ * vm.c (invoke_block, th_invoke_yield, th_invoke_proc): fix to support
+ rb_proc_new.
+
+ * yarvcore.c: add a test code.
+
+Sat Jan 13 23:24:59 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_free, ole_type_free,
+ olemethod_free, olevariable_free, oleparam_free,
+ ole_event_free): fix memory leak. [ruby-core:09846]
+
+Wed Jan 10 00:10:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_replace): use ptr and len of orig instead of
+ shared. fixed: [ruby-dev:30116]
+
+Tue Jan 9 17:48:38 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_find_file): should not call fpath_check() with NULL.
+ fixed: [ruby-core:09867]
+
+Tue Jan 9 12:29:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getpwuid, etc_getgrgid): fix to correctly
+ convert uid/gid from VALUE.
+
+ * ext/etc/etc.c (etc_getpwuid): ditto.
+
+Tue Jan 9 03:54:38 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): String#upto from empty string makes
+ infinite loop. [ruby-core:09864]
+
+ * string.c (rb_str_upto): use RSTRING_LEN().
+
+Sun Jan 7 18:36:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_stop_timer_thread(), rb_thread_reset_timer_thread(),
+ rb_thread_start_timer_thread()): added.
+
+ * thread_pthread.ci: add a native_thread_join() and move
+ rb_thread_reset_timer_thread() definition to thread.c.
+
+ * thread_win32.ci: ditto
+
+ * process.c: fix before_exec(), after_exec() to stop timer thread
+ (and restart timer thread if exec failed). and fix to reset
+ timer thread information when forked child process starts
+ (to fix [ruby-core:09822]).
+
+Sun Jan 7 18:28:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: add a "compare" rule and fix MATZRUBY variable
+
+Sun Jan 7 17:47:16 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole.rb: add test for WIN32OLE#[],
+ WIN32OLE#[]=.
+
+ * ext/win32ole/win32ole.c: update comment for rdoc of
+ WIN32OLE#[] and WIN32OLE#[]=.
+
+Sun Jan 7 12:13:26 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#find_class_comment):
+ Look for class and module comments above rb_define_class and
+ rb_define_module. Patch by Daniel Berger <djberg96 at gmail.com>
+
+Sun Jan 7 10:32:12 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#handle_constants):
+ Properly handle escaping of : in comments.
+ * test/rdoc/parsers/test_parse_c.rb:
+ Test RDoc::C_Parser#do_classes and Rdoc::C_Parser#find_class_comment.
+
+Sun Jan 7 09:31:18 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: updated based on date2 4.0.1.
+
+Sat Jan 6 18:46:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast, rb_io_getline): increase lineno
+ when met the delimiter or EOF. fixed: [ruby-dev:30081]
+
+ * io.c (prepare_getline_args, rb_io_getline_1): split
+ preparation of arguments and reading. [ruby-dev:30085]
+
+Sat Jan 6 13:48:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (send): fix to optimize send() with Symbol.
+
+ * yarvtest/test_method.rb: add another test.
+
+Sat Jan 6 13:43:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: add PHONY dependency to some rules
+
+Sat Jan 6 11:50:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_read): fix wrong replacement. [ruby-dev:30070]
+
+Sat Jan 6 09:10:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: support direct method dispatch with "send" or "funcall".
+ This means that "obj.send :m" skips "BasicObject#send" invocation
+ (method frame creation, etc) and "obj.m" invokes directly.
+ If you make backtrace, there are no entries of "send" method.
+
+ * compile.c (iseq_specialized_instruction): fix to support above
+
+ * eval.c: ditto (remove "static" from rb_f_send and rb_f_funcall
+
+ * yarvcore.c: ditto (add a external IDs for compiler)
+
+ * yarvcore.h: ditto (add a VM_CALL_SEND_BIT macro)
+
+ * yarvtest/test_method.rb: add tests for above changes
+
+ * eval.c: remove unused "Kernel#send" declaration
+
+Sat Jan 6 08:29:17 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (Init_win32ole): add
+ WIN32OLE::VARIANT::VT_EMPTY, WIN32OLE::VARIANT::VT_NULL
+
+ * test/win32ole/test_win32ole_variant_m.rb (test_variant): ditto.
+
+Sat Jan 6 03:49:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run.rb: change option format
+
+ * common.mk: ditto
+
+Fri Jan 5 22:21:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_app_pentomino.rb: use Array#dup instead of
+ Array#clone
+
+ * benchmark/bmx_temp.rb: removed
+
+ * benchmark/run.rb: use run.rb instead of run_rite.rb
+
+ * common.mk: ditto
+
+ * benchmark/run_rite.rb: removed
+
+ * common.mk: use $(srcdir)/test.rb to run a test program
+ with "make run"
+
+ * benchmark/bmx_temp.rb: removed and
+ set svn:ignore (bmx_*.rb) to benchmark/
+
+ * test.rb: set svn:ignore
+
+Fri Jan 5 21:03:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvtest/yarvtest.rb: fix to compare results
+
+Fri Jan 5 20:52:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, compile.h: add ADD_CALL_RECEIVER() macro.
+
+ * insns.def (send): use GET_SELF() direct if FCALL.
+
+ * eval.c (rb_f_send): check method dispatch type to permit
+ invoking private method when dispatch type is FCALL/VCALL
+
+ * insns.def (opt_ltlt): remove useless statement.
+
+ * vm.h: remove unused macros.
+
+Fri Jan 5 20:50:31 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run_rite.rb: fix to use readlines instead of
+ read(...).lines (because 1.8 doesn't have String#lines).
+
+Fri Jan 5 20:28:19 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_win32.ci (rb_thread_reset_timer_thread):
+ added ([ruby-dev:30086]).
+
+Fri Jan 5 20:20:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: add .SUFFIXES rule
+
+Fri Jan 5 15:58:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h (rb_alias): fix to check search result
+
+Fri Jan 5 13:59:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h (rb_add_method): fix to check old_node
+
+Fri Jan 5 12:03:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each, set_block_local_tbl):
+ support NODE_LAMBDA (partly).
+
+ * sample/test.rb: restore test of NODE_LAMBDA
+
+ * test/ruby/test_lambda.rb: ditto
+
+Fri Jan 5 12:31:23 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * thread_pthread.ci (native_sleep): fix tv_nsec overflow.
+
+Thu Jan 4 20:01:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: rename yarv-test-[all/each] to compare-test[/-each].
+ purpose of "compare-test" rule is to compare ruby (trunk) and
+ matzruby (branches/matzruby) binary in miniruby level. MATZRUBY
+ parameter means an path to miniruby of matzruby binary. to do this
+ comparison test, you should build matzruby branch.
+
+ * yarvtest/yarvtest.rb: fix to use command line option as
+ command names to be compared.
+
+ * yarvtest/runner.rb: remove a debug output.
+
+Thu Jan 4 19:12:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix to use test.rb script in build directory.
+ ($(srcdir)/test.rb -> test.rb)
+
+Thu Jan 4 17:28:05 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/utils.rb (WEBrick::Utils::TimeoutHandler#initialize):
+ Arrays could not be modified in its each block. [ruby-dev:30063]
+
+Thu Jan 4 16:57:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarv_version.h: removed.
+
+ * common.mk: remove yarv_version.h from rules
+
+ * yarvcore.h (Init_yarvcore): remove useless constants
+
+Thu Jan 4 17:00:06 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (Init_ossl_asn1):
+ OpenSSL::ASN1::ASN1Data#value,#tag,#tag_class and
+ OpenSSL::ASN1::BitString#unused_bits should be public.
+
+Thu Jan 4 13:45:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.ci: fix last changes around PTHREAD_STACK_MIN.
+
+Thu Jan 4 13:42:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: restore changes.
+
+Thu Jan 4 10:33:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.ci: fix to skip using PTHREAD_STACK_MIN.
+ [ruby-dev:30063]
+
+Thu Jan 4 10:30:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run_rite.rb (bm): fix to use lines.
+
+Wed Jan 3 18:49:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getline): lineno update condition was wrong.
+ [ruby-dev:30065]
+
+ * io.c (rb_io_getline_fast): ditto.
+
+Wed Jan 3 11:36:51 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (ruby_dup): start GC on ENOMEM as well.
+
+Tue Jan 2 10:29:54 2007 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: fix to compile on YARV
+ ruby_errinfo -> rb_errinfo()
+
+Mon Jan 1 08:07:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ext/tk/tcltklib.c: fix to compile on YARV
+ ruby_errinfo -> rb_errinfo(),
+ ruby_safe_level -> rb_safe_level().
+
+Mon Jan 1 07:57:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/drb/test_drbssl.rb: fix to skip drb tests.
+
+Mon Jan 1 06:13:11 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/c_parser.rb: Make Rdoc accessible. Update constant
+ value information.
+
+ * ext/bigdecimal/bigdecimal.c: Update constant comments to provide
+ values for RDoc.
+
+Mon Jan 1 06:05:55 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#handle_constants):
+ Allow RDoc comment to give friendly value for rb_define_const. Patch
+ by Daniel Berger <djberg96 at gmail.com>, [ruby-patches-7499].
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#handle_constants): Fix
+ whitespace handling in constant comments.
+
+Mon Jan 1 00:00:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * Merge YARV
+
+Sun Dec 31 16:22:48 2006 Eric Hodel <drbrain@segment7.net>
+
+ * array.c: Fix Array#reject.
+
+Sun Dec 31 00:46:25 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date2.rb: removed.
+
+Sun Dec 31 00:15:13 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 4.0.
+
+Sat Dec 30 04:38:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_each_with_index): reuse array for yield parameters.
+
+ * enum.c (enum_min, enum_max): ditto.
+
+Sat Dec 30 04:25:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): reuse array for yield parameters.
+
+Sat Dec 30 02:54:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_gets): accepts limit argument.
+
+ * ext/stringio/stringio.c (strio_readline, strio_each,
+ strio_readlines): ditto.
+
+Sat Dec 30 02:22:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_getline): add limit capability.
+
+ * io.c (rb_io_gets_m): accepts limit argument. [ruby-talk:231563]
+
+ * io.c (rb_io_readline, rb_io_readlines, rb_io_each_line, argf_getline):
+ ditto.
+
+ * io.c (appendline): add limit capability.
+
+ * io.c (rb_io_getline_fast, rb_io_getline): ditto.
+
+ * io.c (rb_io_getline): small refactoring for DRY.
+
+ * io.c (rb_io_s_foreach, rb_io_s_readlines): small refactoring.
+
+Thu Dec 28 15:27:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie::initialize): use Array() again.
+ [ruby-core:09781]
+
+Wed Dec 27 20:52:32 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: remove WIN32OLE::PROPERTY class.
+
+ * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+
+Wed Dec 27 10:04:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_Array): returns 1-element array if the argument
+ does not have to_ary nor to_a.
+
+Tue Dec 26 21:02:14 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_folderitem2_invokeverb.rb: The argument
+ of Shell.NameSpace should not be file path.
+
+Tue Dec 26 06:13:08 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/bigdecimal/bigdecimal.c: remove useless method
+ BigDecimal#!=. [ruby-dev:30050]
+
+Thu Dec 21 15:37:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_slice_bang): rdoc description bug fixed.
+ [ruby-core:09754]
+
+Wed Dec 20 12:54:31 2006 Koichi Sasada <ko1@atdot.net>
+
+ * Convert CVS repository to Subversion repository.
+
+Mon Dec 18 08:36:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie::initialize): Array(string) no longer
+ works. [ruby-core:09738]
+
+Fri Dec 15 00:19:53 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (COMPILE_RULES): latter rule has higher priority.
+
+ * lib/mkmf.rb (create_makefile): remove static library before update,
+ to get rid of sludge of Borland tlib.exe.
+
+Thu Dec 14 18:29:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/readline/readline.c: NetBSD editline does not have
+ rl_username_completion_function() and rl_completion_matches().
+ a patch from Takahiro Kambe <taca at back-street.net>.
+ [ruby-dev:30008]
+
+Thu Dec 14 18:20:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/locale.rb (IRB::Locale::puts): typo fixed. a patch from
+ NAKAMURA Usaku <usa@ruby-lang.org>. [ruby-dev:30012]
+
+Tue Dec 12 23:33:53 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (Switch#parse_arg, Switch#conv_arg): splat failures.
+
+Mon Dec 11 11:51:10 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/lib/sha2.rb: Moved one level up from under
+ the superfluous subdirectory digest/.
+
+Mon Dec 11 11:46:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_define_const): typo fixed.
+
+Mon Dec 11 09:36:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_aset): index double decode problem.
+ [ruby-core:09695]
+
+Sat Dec 9 21:39:24 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): keep the exception till after END blocks.
+ [ruby-core:09675]
+
+Sat Dec 9 11:22:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/locale.rb (IRB::Locale::search_file): use File.exist?
+ instead of File.exists?. a patch from Yutaka Kanemoto
+ <kinpoco at gmail.com> in [ruby-dev:30000].
+
+Fri Dec 8 18:11:18 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/optparse.rb: cannot put :nodoc: before method definition.
+ put after it.
+
+Fri Dec 8 17:00:13 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bin/rdoc: use File.exist? instead of File.exists?.
+
+Thu Dec 7 23:50:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): new method Dir.exist?(path).
+ [ruby-core:09663]
+
+ * file.c (Init_File): remove File.exists?; use File.exist?
+ instead.
+
+ * file.c: rename functions to test_* to rb_file_*_p.
+
+Thu Dec 7 09:29:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/weakref.rb (WeakRef::__setobj__): should support
+ marshaling. [ruby-talk:228508]
+
+Wed Dec 6 23:58:36 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk (NULLCMD): moved for platforms that empty
+ command does not run. fixed: [ruby-dev:29994]
+
+ * win32/win32.c (init_stdhandle): redirect unopened IOs to NUL.
+ [ruby-core:09572]
+
+Tue Dec 5 19:01:42 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (SITE_DIR): fixed to empty RUBY_SITE_LIB in config.h on
+ NetBSD. fixed: [ruby-dev:29358]
+
+Tue Dec 5 18:38:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/matrix.rb (Matrix::rank): use quo method to avoid integer
+ division problem. [ruby-core:09644]
+
+ * lib/matrix.rb (Matrix::rank_e): ditto.
+
+Tue Dec 5 00:59:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): need to parse "/=" as
+ self assignment operator, not regex. [ruby-talk:227324]
+
+Tue Dec 5 00:19:14 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h, object.c, variable.c (rb_mod_constants): added an optional
+ flag to search ancestors, which is defaulted to true, as well as
+ const_defined? and const_get. [ruby-dev:29989]
+
+Mon Dec 4 23:49:28 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (install_recursive): get rid of warning.
+
+ * lib/optparse.rb (CompletingHash#match): get rid of splat failure.
+
+Mon Dec 4 19:16:39 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Do alias << update.
+
+Mon Dec 4 10:48:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (OFFT2NUM): use LONG2NUM() if sizeof(long) equals to
+ sizeof(off_t).
+
+Mon Dec 4 08:32:25 2006 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): should quote
+ boundary. JVN#84798830
+
+Sun Dec 3 16:16:53 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Fix problems with update
+ timing. [Reported by: oss-ruby@technorama.net]
+
+Sat Dec 2 07:33:53 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils::FormData::<<):
+ HTTPUtils::parse_header() takes a string. [ruby-dev:29931]
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils::parse_header):
+ String does no longer have each method.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils::parse_form_data):
+ ditto.
+
+Sat Dec 2 07:09:04 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ocsp.c: OpenSSL::OCSP::OSCPError should be
+ subclass of OpenSSL::OpenSSLError. [ruby-dev:29980]
+
+Fri Dec 1 16:31:53 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: shouldn't run the killed thread at callback.
+ [ruby-talk: 227408]
+
+Tue Nov 28 17:25:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_iter_check): should check modification (size
+ change) during iteration.
+
+ * array.c (rb_ary_initialize, rb_ary_shift, rb_ary_unshift,
+ rb_ary_splice, rb_ary_reverse, rb_ary_sort, rb_ary_delete,
+ rb_ary_delete_at, rb_ary_reject_bang, rb_ary_replace,
+ rb_ary_clear, rb_ary_fill, rb_ary_uniq_bang, rb_ary_compact,
+ rb_ary_shuffle): add iteration check.
+
+Mon Nov 27 09:00:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_ord): typo fixed. reported from Kornelius
+ Kalnbach <murphy@rubychan.de>. [ruby-core:09621]
+
+Sun Nov 26 16:36:46 2006 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * version.h: addition of RUBY_PATCHLEVEL.
+ * version.c: ditto.
+
+Wed Nov 22 16:00:49 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: support --with-X11/--without-X11 option.
+
+ * ext/tk/README.tcltklib: add description about --with-X11-* option
+ [ruby-talk:225166] and --with-X11/--without-X11 option.
+
+ * ext/tk/tkutil/extconf.rb: able to be called manually
+ [ruby-talk:225950].
+
+Sat Nov 18 23:39:20 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_tap): a new method. [ruby-talk:224013]
+
+Wed Nov 15 23:22:54 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (test_grpowned, rb_stat_grpowned): should honor
+ supplementary group IDs. [ruby-core:09546]
+
+Tue Nov 7 18:35:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (formal_assign): need to pack rest arg information in
+ argc.
+
+Tue Nov 7 18:05:01 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/itemconfig.rb: minor bug fix.
+
+Tue Nov 7 17:52:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): revert duplicate inclusion of
+ modules. [ruby-dev:29793]
+
+Tue Nov 7 17:18:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_missing): update old argument adjustment.
+
+Tue Nov 7 16:41:21 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (when_check): need to splat for NODE_ARGSCAT as well.
+ [ruby-dev:29860]
+
+Mon Nov 6 22:23:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (Init_String): remove duplicated definition of
+ Symbol#to_s.
+
+Mon Nov 6 18:54:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_avalue): need to splat but no error.
+
+ * eval.c: new macros - YIELD_CALL, YIELD_VALUES.
+
+ * eval.c (rb_yield_values): specify YIELD_VALUES.
+
+ * eval.c (rb_yield_0): use new macros.
+
+ * eval.c (proc_invoke): slightly modified to separate YIELD_CALL
+ and YIELD_VALUES from YIELD_ARY_ARGS.
+
+ * object.c (Init_Object): add nil.to_splat => [].
+
+Mon Nov 6 15:41:55 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/itemconfig.rb: ext/tk/lib/tk/itemconfig.rb: bug
+ fix on 'itemconfiginfo' method, and modify to make it easy to
+ override 'itemconfiginfo' method.
+
+ * ext/tk/lib/tkextlib/tile/treeview.rb: support Tile 0.7.8.
+
+ * ext/tk/lib/tkextlib/version.rb: [new] add Tk::Tkextlib_RELEASE_DATE
+ to get the information from scripts.
+
+ * ext/tk/lib/tk.rb: load 'tkextlib/version.rb', and update RELEASE_DATE
+
+ * ext/tk/lib/tkextlib/SUPPORT_STATUS: update.
+
+ * ext/tk/sample/editable_listbox.rb: [new] the listbox with editable
+ items. It's one of the example about usage of Place geometry manager.
+
+ * ext/tk/sample/tktextio.rb: improve the functions of TkTextIO class.
+ Those are required by 'irbtkw.rbw'.
+
+ * ext/tk/sample/irbtkw.rbw: [new] IRB on Ruby/Tk. It doesn't need any
+ real console. IRB works on a text widget without I/O blocking. That
+ is, thread switching on IRB will work properly, even if on Windows.
+
+Mon Nov 6 00:42:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg_dup_check): vid may be nameless internal id.
+
+Sun Nov 5 19:52:19 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: updated based on date2 3.9.7.
+
+Sat Nov 4 13:09:31 2006 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: accept NOMODSEQ. [ruby-core:9002]
+
+Fri Nov 3 00:16:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_getnameinfo__aix): AF_INET6 workaround
+ for AIX. a patch from Yutaka Kanemoto <kinpoco AT gmail.com>.
+ [ruby-dev:29744]
+
+Thu Nov 2 14:19:44 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#^): Fix XOR operation against a container that
+ holds duplicate values. [ruby-core:9372]
+
+Thu Nov 2 10:00:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c: class Symbol is no longer subclass of String. also
+ covers [ruby-core:09366]
+
+Thu Nov 2 08:21:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc/create.rb (XMLRPC::Create::conv2value): Symbol should
+ come earlier than String.
+
+ * lib/soap/mapping/rubytypeFactory.rb (RubytypeFactory::obj2soap):
+ ditto.
+
+ * lib/set.rb (TC_Set::test_s_new): strings are no longer
+ Enumerable
+
+ * lib/soap/property.rb (Property::load): ditto.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils::parse_header): ditto.
+
+ * lib/soap/mimemessage.rb (MIMEMessage::Headers::parse): ditto.
+
+Thu Nov 2 09:08:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c: revert lfree shift/unshift boost patch to avoid unknown
+ memory error.
+
+Wed Nov 1 23:24:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (struct RArray): revert embedding ptr in RVALUE.
+
+ * array.c: ditto.
+
+Wed Nov 1 23:01:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (hash): use Bob Jenkins' hash algorithm.
+
+Wed Nov 1 02:22:31 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb (Digest::HMAC::update): Minor
+ optimization.
+
+ * ext/digest/digest.c (rb_digest_instance_equal): Allow comparing
+ a digest instance with another of a different class.
+
+Wed Nov 1 01:05:13 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_call0): fixed bug of zsuper with both of opt and rest.
+ fixed: [ruby-list:42928]
+
+Tue Oct 31 17:03:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_dup): duplicate the class of original time.
+ [ruby-core:09357]
+
+ * lib/time.rb (Time::make_time, Time::rfc2822, Time::httpdate):
+ should respect subclasses. [ruby-core:09357]
+
+Tue Oct 31 16:25:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_shared_first): should address offset after
+ ary_shared_array(). [ruby-core:09358]
+
+Mon Oct 30 23:40:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (miniruby): add XLDFLAGS.
+
+ * configure.in (aix): use -bE option for miniruby. [ruby-dev:29698]
+
+ * dir.c (glob_helper): get rid of possible memory leak.
+
+ * win32/win32.c (cmdglob, rb_w32_cmdvector, rb_w32_opendir,
+ rb_w32_get_environ): not to use GC before initialization.
+
+Mon Oct 30 19:28:02 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): use better approximation.
+
+Mon Oct 30 18:35:33 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): wrong allocation length. a patch from
+ U.Nakamura <usa at garbagecollect.jp> [ruby-dev:29710]
+
+Mon Oct 30 12:34:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): fix commit miss. [ruby-dev:29707]
+
+Mon Oct 30 11:15:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): should preserve leading zero
+ information for negative %b and %x. [ruby-talk:221347]
+
+Sun Oct 29 19:51:31 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * regexec.c: invalid offset value was used in STATE_CHECK_BUFF_INIT().
+
+Sat Oct 28 20:13:18 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.4.5
+
+ * regint.h: ditto.
+
+ * regerror.c: ditto.
+
+ * regexec.c: ditto.
+
+ * regcomp.c ditto.
+
+ * regparse.c ditto.
+
+Sat Oct 28 07:56:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): missing break. [ruby-core:09345]
+
+Fri Oct 27 17:30:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enum_each_cons): move RETURN_ENUMERATOR() after
+ argument check.
+
+Thu Oct 26 21:05:48 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkcs7.c (ossl_pkcs7_verify): should clear error.
+ (fix http://bugs.debian.org/394336)
+
+ * ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): ditto.
+
+Thu Oct 26 15:23:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c: remove by_slice and by_cons.
+
+Thu Oct 26 15:12:12 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/digest/digest.c (Init_digest): typo.
+
+Wed Oct 25 17:16:05 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/digest/test_digest_hmac.rb: added.
+
+Wed Oct 25 16:34:31 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/test.sh: make this script work again.
+
+Wed Oct 25 07:59:42 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: updated based on date2 3.9.6.
+ [ruby-core:09323]
+
+Wed Oct 25 00:58:19 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/mkexports.rb, win32/resource.rb: use unique variable names.
+
+Tue Oct 24 19:18:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_by_slice): new method added.
+
+ * enumerator.c (enumerator_by_cons): ditto.
+
+Tue Oct 24 18:56:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enum_each_slice, enum_each_cons): returns
+ Enumerable::Enumerator if no block is given. [ruby-dev:29246]
+
+ * enumerator.c: remove methods: enum_with_index, enum_slice,
+ enum_cons. [ruby-dev:29246]
+
+Tue Oct 24 18:51:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_zip): add RETURN_ENUMERATOR() to zip method.
+
+Mon Oct 23 04:30:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): use return value from proc given as the
+ second argument to Marshal#load() to allow value replacement in
+ the restoring data.
+
+Sun Oct 22 14:48:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (Init_signal): avoid duplicated installation of SIGCHLD
+ handler.
+
+Sun Oct 22 16:47:56 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_substr): should be infected with only original
+ string, but not the shared string. fixed: [ruby-core:09152]
+
+ * string.c (rb_str_new4): keep shared string untainted when original
+ string is tainted. fixed: [ruby-dev:29672]
+
+Sun Oct 22 07:55:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upcase, rb_str_downcase, rb_str_downcase,
+ rb_str_upcase_bang, rb_str_downcase_bang, rb_str_swapcase_bang):
+ add RDoc description that case conversion to be effective only
+ in ASCII region.
+
+Sun Oct 22 05:20:34 2006 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
+
+ * configure.in: alloca is broken; use C_ALLOCA instead.
+ [ruby-dev:29416]
+
+Sat Oct 21 17:50:40 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest.rb: Follow the framework updates.
+
+Fri Oct 20 22:00:43 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Complete half-boiled updates.
+
+ * ext/digest/sha2/lib/digest/sha2.rb: Fix #initialize_clone().
+
+Fri Oct 20 20:28:37 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest: Prefix C constants with RUBY_ and C type names with
+ rb_ to avoid name clash in writing extensions.
+
+ * ext/digest: Introduce Digest::Class and Digest::Instance for
+ ease of implementing subclasses and add-ons, inspired by
+ gotoyuzo.
+
+ * ext/digest: The Digest::Instance module now requires and assumes
+ that any instance be resettable and clonable, and add some
+ convenient instance methods such as "new()", for creating a new
+ copy, parameter taking "digest()" and "hexdigest()", for instant
+ calculation. These methods make digest instances work just like
+ digest classes.
+
+ * ext/digest/sha2/lib/digest/sha2.rb:
+ Add the Digest::SHA2 class to wrap up SHA2 variants: SHA256,
+ SHA384 and SHA512, hoping this module would make a decent
+ example of a digest subclass written in Ruby.
+
+ * ext/digest/lib/digest.rb: Adjust autoload entries for SHA2
+ classes.
+
+ * ext/digest/lib/digest/hmac.rb: Follow the framework updates.
+
+Fri Oct 20 10:47:43 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb: fixed the bug of handling COMMON_MACROS.
+
+Fri Oct 20 08:42:38 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (NULLCMD): dummy command.
+
+ * bcc32/Makefile.sub (post-install-*): Borland make cannot ignore
+ command-less double-colon rules. [ruby-dev:29676]
+
+Fri Oct 20 00:37:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/Makefile.sub ($(LIBRUBY_SO)): execute pre-link hook.
+
+ * ext/extmk.rb: workaround for Borland make.
+
+Wed Oct 18 23:02:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shift): shorten copy size. fixed: [ruby-list:42907]
+
+ * signal.c (Init_signal): handle SIGTERM. fixed: [ruby-list:42895]
+
+ * win32/win32.c (rb_w32_utime): allow NULL to set the current time.
+ [ruby-talk:219248]
+
+Wed Oct 18 13:25:50 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_line): String#lines now works when a block
+ is given. in other words, lines become an alias to each_line.
+ [ruby-core:09218]
+
+ * string.c (rb_str_each_byte): ditto for bytes in place of lines.
+
+Wed Oct 18 00:55:33 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): use particular enums. [ruby-core:09221]
+
+Tue Oct 17 22:03:08 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/erb.rb: String#each was removed, use #each_line instead.
+
+Tue Oct 17 12:27:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_shared_array): should set NOEMBED flag for a copied
+ array.
+
+Tue Oct 17 08:04:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lines): now takes optional argument for the
+ line separator.
+
+ * io.c (rb_io_lines, rb_io_bytes): new methods.
+
+Mon Oct 16 23:33:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_unshift_m): a bug in lfree shift length
+ calculation.
+
+Mon Oct 16 08:30:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: *OBJS are not needed for extension libraries.
+
+ * {bcc32,wince,win32}/Makefile.sub (config.status): fixed typo,
+ missing comma.
+
+Mon Oct 16 00:44:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): execute block if given with unpacked value
+ instead of creating an array. an idea from Tim Bray.
+
+Sun Oct 15 01:03:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (Collector::Dir#collect): append base
+ directory but not prepend.
+
+ * lib/test/unit/collector/dir.rb (Collector::Dir#collect_file): do not
+ join with dot. fixed: [ruby-core:09179]
+
+Sat Oct 14 23:39:50 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (singleton): no need to re-create NODE_SELF() again.
+ [ruby-core:09177]
+
+Sat Oct 14 23:25:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_warning, parser_warn): some error message may
+ contain format specifiers. a patch from Akinori MUSHA <knu at
+ iDaemons.org>. [ruby-dev:29657]
+
+ * regparse.c (onig_rb_warning, onig_rb_warn): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (VpException): ditto.
+
+ * ext/dl/handle.c (rb_dlhandle_initialize): ditto.
+
+ * ext/gdbm/gdbm.c (rb_gdbm_fatal): ditto.
+
+Sat Oct 14 08:15:42 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c, ext/digest/digest.h,
+ ext/digest/md5/md5init.c, ext/digest/rmd160/rmd160init.c,
+ ext/digest/sha1/sha1init.c, ext/digest/sha2/sha2init.c:
+ Introduce API versioning.
+
+ * ext/digest/digest.c, ext/digest/digest.h,
+ ext/digest/md5/md5init.c, ext/digest/rmd160/rmd160init.c,
+ ext/digest/sha1/sha1init.c, ext/digest/sha2/sha2init.c: Remove
+ the constants DIGEST_LENGTH and BLOCK_LENGTH and turn them into
+ instance methods digest_length() and block_length(). Class
+ methods with the same names are also provided, which take extra
+ parameters for a digest method.
+
+ * ext/digest/lib/digest/hmac.rb: Completely redesign the somewhat
+ bizarre API, now that Digest classes can take hashing
+ parameters.
+
+Sat Oct 14 05:54:05 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c: Improve RDoc documentation further more.
+
+Sat Oct 14 04:33:33 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c: Improve RDoc documentation.
+
+ * ext/digest/digest.c (Init_digest, rb_digest_base_s_digest,
+ rb_digest_base_s_hexdigest): Make Digest::Base::digest() and
+ Digest::Base::hexdigest() take extra arguments, which are passed
+ through to the constructor in an internal call.
+
+ * ext/digest/bubblebabble/bubblebabble.c
+ (rb_digest_base_s_bubblebabble): Ditto for
+ Digest::Base::bubblebabble().
+
+Sat Oct 14 00:55:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/Makefile.sub (post-install-ext): no longer needed.
+
+ * bcc32/configure.bat: get rid of a quirk of Borland make, which
+ sets empty macro in command line to "1".
+
+Fri Oct 13 22:49:02 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: updated based on date2 3.9.5.
+
+Fri Oct 13 21:00:01 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest.rb (Digest): Try to auto-load non-standard
+ digest modules when a specified digest class is missing.
+
+ * ext/digest/lib/digest.rb: Define Digest(name) for ease of
+ dynamically selecting a hashing algorithm.
+
+Fri Oct 13 20:53:37 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (Init_digest): Digest::Base.new() does no
+ longer take an initial string to feed. This change allows
+ subclasses to take hashing parameters. A statement such as
+ ``md = Digest::MD5.new(s)'' can be easily rewritten as
+ ``md = Digest::MD5.new << s'' or
+ ``md = Digest::MD5.new.update(s)''.
+
+Fri Oct 13 20:51:55 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c, ext/digest/md5/md5init.c,
+ ext/digest/rmd160/rmd160init.c, ext/digest/sha1/sha1init.c,
+ ext/digest/sha2/sha2init.c: Add RDoc documentation.
+
+ * ext/digest/digest.txt, ext/digest/digest.txt.ja: Removed in
+ favor of embedded RDoc documentation.
+
+Fri Oct 13 20:38:12 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/bubblebabble, ext/digest/digest.c: Rip BubbleBabble
+ support out of the base class and have a separate module named
+ digest/bubblebabble.
+
+Fri Oct 13 19:53:59 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_equal): Again, should call
+ digest() of a subclass instead of the one defined in the base
+ class.
+
+Fri Oct 13 18:19:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c: Class#inherited RDoc added. a patch from Daniel
+ Berger <djberg96 at gmail.com> [ruby-core:08942]
+
+Fri Oct 13 02:42:00 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_equal): Should call digest()
+ of a subclass instead of the one defined in the base class.
+
+Fri Oct 13 02:30:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (Collector::Dir#collect): prepend
+ base directory to load path.
+
+ * lib/test/unit/collector/dir.rb (Collector::Dir#collect_file): should
+ use the given File-like interface, but not File directly.
+
+ * test/testunit/collector/test_dir.rb (TestDir::FileSystem): implement
+ File-like methods correctly.
+
+Fri Oct 13 01:48:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/date.rb (Date::self.complete_hash): need to check if g is
+ nil before dereference. [ruby-core:09116]
+
+Fri Oct 13 01:05:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_partition): RDoc update. a patch from
+ Mauricio Fernandez <mfp at acm.org>. [ruby-core:09160]
+
+ * hash.c (rb_hash_compare_by_id): ditto.
+
+Fri Oct 13 00:34:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_cvar_defined): wrong id check. a patch from
+ Mauricio Fernandez <mfp at acm.org>. [ruby-core:09158]
+
+ * object.c (rb_mod_cvar_get): typo fixed. [ruby-core:09168]
+
+ * object.c (rb_mod_cvar_set): ditto.
+
+Thu Oct 12 22:58:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_compare_by_id): somehow we lost renaming from
+ Hash#identical. [ruby-core:09163]
+
+Thu Oct 12 18:25:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/tk/tkutil/tkutil.c (cbsubst_table_setup): need to handle new
+ character literal (1 char string).
+
+ * lib/mkmf.rb: shut up some warnings from tk's extconf.rb.
+
+Thu Oct 12 02:15:24 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Make use of String#bytes.
+
+Thu Oct 12 02:12:31 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (get_digest_base_metadata): Use an instance
+ variable of a class object instead of a class variable for
+ metadata. This change is only crucial for ruby 1.8 because
+ class variables are inherited to subclasses prior to 1.9, but
+ applying it also to 1.9 will assure compatibilities.
+
+ * ext/digest/md5/md5init.c (Init_md5): Ditto.
+
+ * ext/digest/rmd160/rmd160init.c (Init_rmd160): Ditto.
+
+ * ext/digest/sha1/sha1init.c (Init_sha1): Ditto.
+
+ * ext/digest/sha2/sha2init.c (Init_sha2): Ditto.
+
+Wed Oct 11 21:36:47 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_alloc,
+ rb_digest_base_equal): Simplify the equality check and just
+ compare resulted digests since state-level equality should
+ not be so significant.
+
+ * ext/digest/digest.h: Ditto.
+
+ * ext/digest/*/*.[ch]: Ditto.
+
+Wed Oct 11 17:11:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_obj_define_method): add half boiled RDoc document.
+
+Wed Oct 11 16:57:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_replace): should shift lfree pointer before
+ calling xfree.
+
+Wed Oct 11 15:07:42 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Add digest/hmac, which implements
+ HMAC keyed-hashing algorithm.
+
+Wed Oct 11 15:03:55 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_reset): Do not make
+ recursive calls, but call initialize() when reset() is not
+ defined in a subclass.
+
+Wed Oct 11 14:56:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/digest/sha1/sha1ossl.h: libssl 0.9.8c-3 defines no
+ SHA_BLOCK_LENGTH.
+
+Wed Oct 11 14:03:31 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_reset, Init_digest): Add
+ Digest::Base#reset.
+
+ * ext/digest/digest.h: Update the header comment.
+
+ * ext/digest/md5/md5ossl.h, ext/digest/md5/md5init.c (Init_md5):
+ Define DIGEST_LENGTH and BLOCK_LENGTH.
+
+ * ext/digest/rmd160/rmd160init.c (Init_rmd160): Ditto.
+
+ * ext/digest/sha1/sha1init.c (Init_sha1): Ditto.
+
+ * ext/digest/sha2/sha2init.c (Init_sha2): Ditto.
+
+ * ext/digest/depend, ext/digest/extconf.rb: Use $INSTALLFILES
+ rather than adding make targets. [Pointed out by: nobu]
+
+Tue Oct 10 16:39:08 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (hexdigest_str_new, bubblebabble_str_new):
+ Perform StringValue() checks properly.
+
+Tue Oct 10 13:21:21 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha1/depend, ext/digest/sha2/depend: Remove obsolete
+ dependencies.
+
+Mon Oct 9 23:46:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/parsedate.rb: documentation patch from Konrad Meyer
+ <konrad.meyer@gmail.com>. [ruby-doc:1238]
+
+ * lib/open3.rb, lib/ping.rb: ditto.
+
+Mon Oct 9 23:40:58 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, lib/fileutils.rb, lib/mkmf.rb, lib/optparse.rb,
+ lib/shellwords.rb: get rid of shadowing outer local variable.
+
+Mon Oct 9 22:56:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/encoding.rb (REXML::Encoding::check_encoding): spaces
+ are allowed around equal sign. [ruby-core:09032]
+
+ * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser): ditto.
+
+Mon Oct 9 01:56:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_obj_define_method): add new method
+ Kernel#define_singleton_method. [ruby-list:42851]
+
+Sat Oct 7 23:53:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_scan): small documentation fix.
+ [ruby-core:09007]
+
+Sat Oct 7 23:44:33 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_rshift): a bug in right shift of negative
+ bignums. [ruby-core:09020]
+
+Sat Oct 7 23:33:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (formal_assign): packed post splat arguments may conflict
+ with normal arguments. [ruby-core:09021]
+
+ * eval.c (rb_call0): ditto.
+
+Sat Oct 7 11:53:04 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_initialize): since module_eval no longer passes
+ self, use module_exec instead. fixed: [ruby-dev:29637]
+
+Sat Oct 7 00:27:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): remove unnecessary check.
+ [ruby-talk:218402]
+
+Fri Oct 6 15:19:59 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/depend: Fix header installation when the build
+ directory is different from srcdir. [Pointed out by: eban]
+
+Fri Oct 6 09:56:31 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32,wince}/Makefile.sub (config.status): shouldn't use
+ copy command instead of install. use -run install.
+
+Fri Oct 6 06:53:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): small refactoring.
+
+ * parse.y (bparam_item): fixed bugs in handling parenthesized LHS.
+
+Fri Oct 6 04:47:07 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/depend: Install digest.h.
+
+Fri Oct 6 04:27:40 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/md5.rb, ext/digest/lib/sha1.rb: Remove those
+ compatibility stub libraries.
+
+ * sample/openssl/c_rehash.rb: Use digest/md5 instead of obsolete md5.
+
+Fri Oct 6 04:09:51 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c: Make hexdigest() always call digest() internally.
+
+ * ext/digest/digest.c: Add bubblebabble().
+
+Fri Oct 6 02:38:42 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c: Allow subclassing in Ruby.
+
+Fri Oct 6 02:06:10 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (hexdigest_str_new): Add a string size check.
+
+Thu Oct 5 19:28:35 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.[ch]: Since the argument order of
+ hash_final_func_t was inconsistent with others, change it and
+ rename to hash_finish_func_t to avoid confusion.
+
+ * ext/digest/digest.[ch]: Remove and eliminate the use of
+ hash_end_func_t. Implement hexdigest conversion in the base
+ class.
+
+ * ext/digest/md5/md5.c, ext/digest/md5/md5.h,
+ ext/digest/md5/md5init.c, ext/digest/md5/md5ossl.c,
+ ext/digest/md5/md5ossl.h: Remove MD5_End() and change
+ MD5_Final() to MD5_Finish().
+
+ * ext/digest/rmd160/depend, ext/digest/rmd160/extconf.rb,
+ ext/digest/rmd160/rmd160.c, ext/digest/rmd160/rmd160.h,
+ ext/digest/rmd160/rmd160hl.c, ext/digest/rmd160/rmd160init.c,
+ ext/digest/rmd160/rmd160ossl.c, ext/digest/rmd160/rmd160ossl.h:
+ Remove unused functions RMD160_End(), RMD160_File(),
+ RMD160_Data() and change RMD160_Final() to RMD160_Finish().
+
+ * ext/digest/sha1/extconf.rb, ext/digest/sha1/sha1.c,
+ ext/digest/sha1/sha1.h, ext/digest/sha1/sha1hl.c,
+ ext/digest/sha1/sha1init.c, ext/digest/sha1/sha1ossl.c,
+ ext/digest/sha1/sha1ossl.h: Likewise.
+
+ * ext/digest/sha2/extconf.rb, ext/digest/sha2/sha2.c,
+ ext/digest/sha2/sha2.h, ext/digest/sha2/sha2hl.c,
+ ext/digest/sha2/sha2init.c: Likewise.
+
+Wed Oct 4 18:47:25 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/*: bugfix and update
+ (see ext/tk/ChangeLog.tkextlib).
+
+Wed Oct 4 17:25:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): check protected visibility based on real self,
+ not ruby_frame->self. [ruby-talk:217822]
+
+Wed Oct 4 15:46:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (block_param): should interpret single parenthesized
+ left hand side expression.
+
+Wed Oct 4 08:52:30 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/optparse/test_getopts.rb: changed the class name of test case
+ to get rid of conflict with test_optparse.rb.
+
+Tue Oct 3 21:04:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (dyna_in_block): inline using macro.
+
+ * parse.y (mlhs): simplifies the rule a bit.
+
+ * parse.y (block_param): restrict block parameters to be local
+ variables only.
+
+ * test/ruby/test_iterator.rb (TestIterator::test_nested_iterator):
+ update test suite to conform the last change.
+
+Tue Oct 3 02:31:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (splat_value): use "to_splat" instead of "to_ary" to
+ prepare splat values as an array.
+
+ * array.c (Init_Array): define to_splat.
+
+ * range.c (range_to_splat): new method.
+
+ * enumerator.c (enumerator_to_splat): ditto.
+
+Tue Oct 3 01:36:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lines): returns an Enumerator instead of an
+ array of lines.
+
+ * string.c (rb_str_bytes): a new method.
+
+Mon Oct 2 23:47:55 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::COLLECTORS):
+ base directory should be lower precedence. fixed: [ruby-dev:29622]
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner#options): typo.
+
+ * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir#collect_file):
+ load expanded path. fixed: [ruby-dev:29621]
+
+Mon Oct 2 15:47:55 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: batfile should be CRLF'ed.
+
+Mon Oct 2 01:24:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (test-all): separate directory where running test cases
+ from source tree.
+
+ * lib/test/unit/autorunner.rb (options): added --basedir, --workdir
+ and --load-path options.
+
+ * lib/test/unit/collector/dir.rb (recursive_collect, collect_file):
+ base directory support.
+
+Sun Oct 1 23:56:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk, ext/extmk.rb, win{32,ce}/Makefile.in: keep
+ LIBRUBY_SO unless need to be removed.
+
+Sun Oct 1 23:12:19 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#make_switch): pass arguments directly.
+
+Sat Sep 30 15:11:26 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.4.
+
+Fri Sep 29 13:18:24 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest.rb (Digest): Require digest.so and fix the
+ breakage. Point out by NAKAMURA Usaku in [ruby-dev:29619].
+
+Fri Sep 29 12:11:04 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * jcode.rb (succ!): call original succ! if $KCODE == 'n'.
+ fixed: [ruby-talk:216845]
+
+Fri Sep 29 11:43:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_func): revert fallback checking undeclared function.
+ fixed: [ruby-core:08949]
+
+Fri Sep 29 09:56:56 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: extout is needed for also clean.
+ fixed: [ruby-core:08944]
+
+ * lib/optparse.rb (OptionParser::Switch#conv_arg): unsplat by
+ Proc#call if no conversion is given.
+
+Thu Sep 28 23:59:31 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (struct thread): declare win32_exception_list on cygwin and
+ win32 regardless if it is implemented. Provisional fix for
+ [ruby-core:08917].
+
+Thu Sep 28 20:49:20 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/tmpdir.rb: use return value of getdir.call for length.
+
+Wed Sep 27 22:08:16 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/md5/md5init.c (Init_md5): Now that we have digest.rb,
+ require "digest" rather than "digest.so".
+
+ * ext/digest/rmd160/rmd160init.c (Init_rmd160): Ditto.
+
+ * ext/digest/sha1/sha1init.c (Init_sha1): Ditto.
+
+ * ext/digest/sha2/sha2init.c (Init_sha2): Ditto.
+
+Wed Sep 27 21:21:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_startwith): rename startwith? to start_with?,
+ endwith? to endwith?, respectively. [ruby-talk:216685]
+
+Wed Sep 27 13:29:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::TagMaker::nOE_element_def): replace to_s by
+ join. some other methods as well. [ruby-dev:29613]
+
+Wed Sep 27 01:04:49 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_func): check function pointer first and macro next.
+
+ * lib/mkmf.rb (have_type): simplified with typedef and sizeof.
+
+Wed Sep 27 00:08:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_shift): shift/unshift performance boost patch,
+ based on the patch from Eric Mahurin <eric_mahurin at yahoo.com>.
+ [ruby-core:05861]
+
+ * array.c (rb_ary_unshift_m): ditto.
+
+ * array.c (ary_make_shared): ditto.
+
+ * array.c (RESIZE_CAPA): ditto.
+
+ * array.c (rb_ary_free): new function to free memory. code moved
+ from gc.c.
+
+ * string.c (rb_str_free): ditto.
+
+Tue Sep 26 23:57:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#getopts): use strings as key.
+ fixed: [ruby-dev:29614]
+
+Tue Sep 26 15:29:55 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {win32,wince}/Makefile.sub (CPP): check predefined value.
+
+Tue Sep 26 07:55:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_shift): should not move memory region if array
+ body is shared. a patch from Kent Sibilev <ksruby at gmail.com>.
+ [ruby-core:08922]
+
+Mon Sep 25 23:10:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (rb_push_glob): need not to check by FilePathValue().
+ [ruby-dev:29599]
+
+ * dir.c (dir_globs): ditto.
+
+Mon Sep 25 22:26:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_path_end): skip root directory. fixed: [ruby-core:08913]
+
+ * lib/mkmf.rb (rm_f): get rid of NUL.
+
+ * lib/mkmf.rb (init_mkmf): set default $LDFLAGS. Patch by Michal
+ Suchanek <hramrach at centrum.cz>. [ruby-talk:216256]
+
+Mon Sep 25 15:06:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/test.rb: "print nil" now prints empty string.
+
+ * test/ruby/test_system.rb (TestSystem::test_system): ditto.
+
+Mon Sep 25 11:26:25 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (recursive_hash): remove unused local variable.
+
+ * parse.y (parser_yylex): ditto.
+
+ * parse.y (rb_gc_mark_symbols): fix unmatched prototype .
+
+ * file.c (rb_get_path): check NUL byte in the path string.
+
+Mon Sep 25 08:14:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_shift): should clear shifting top element.
+ [ruby-talk:216055]
+
+ * array.c (rb_ary_shift): avoid creating shared object if array
+ size is small.
+
+Mon Sep 25 08:11:35 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c (rb_f_rand): RDoc typo fix. a patch from Frederick
+ Cheung <fred at 82ask.com>. [ruby-talk:216047]
+
+Sun Sep 24 21:19:24 2006 Guy Decoux <ts@moulon.inra.fr>
+
+ * gc.c (gc_mark_children): NODE_POSTEXE holds Ruby VALUE.
+ [ruby-core:08912]
+
+Sun Sep 24 22:28:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: extension library scripts moved into common directory.
+
+Sun Sep 24 12:10:04 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.3.
+
+Sun Sep 24 06:55:36 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_print): no special handling for nil as well as puts.
+ fixed: [ruby-dev:29586]
+
+Sun Sep 24 06:25:53 2006 why the lucky stiff <why@ruby-lang.org>
+
+ * eval.c (rb_thread_save_context, rb_thread_restore_context):
+ sandbox hook to save and restore sandbox state.
+
+ * eval.c (thread_no_ensure): added THREAD_NO_ENSURE thread flag.
+
+ * eval.c (rb_thread_kill_bang): Thread#kill! uses the above flag
+ to circumvent ensure, in order to prevent endless loops.
+ contributed by MenTaLguY. [ruby-core:08768]
+
+ * eval.c (rb_thread_kill): fix Thread#kill docs, which returns
+ the thread object in all cases.
+
+ * node.h: expose the rb_jmpbuf_t and rb_thread_t structs, along
+ with the thread flags. used by the sandbox extension.
+
+ * ruby.h: extern rb_eThreadError, so sandbox can swap it.
+
+Sat Sep 23 21:34:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): CGI content
+ may be empty. a patch from Jamis Buck <jamis at 37signals.com>.
+
+Sat Sep 23 20:54:28 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.4.4
+
+ * regexec.c: ditto.
+
+ * regcomp.c ditto.
+
+Sat Sep 23 08:35:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc/ri/ri_options.rb: prevent NameError. [ruby-dev:29597]
+
+Sat Sep 23 01:02:57 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.2.
+
+Fri Sep 22 18:07:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_partition): no need to call rb_call_super(),
+ since String is no longer includes Enumerable.
+
+Fri Sep 22 17:33:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_eql): new method to be used by Hash.
+
+ * hash.c (rb_hash_hash): ditto.
+
+Fri Sep 22 06:53:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_hash): use rb_memhash().
+
+ * numeric.c (flo_hash): simplified. klass need not to affect
+ resulting hash value.
+
+Fri Sep 22 02:06:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .cvsignore: ignore timestamp files and installed list file.
+
+Fri Sep 22 01:36:34 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb: include FileUtils unconditionally.
+
+Fri Sep 22 00:36:05 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): fix_odd_p and fix_even_p are for Fixnum.
+ patch from Ondrej Bilka <neleai at seznam.cz>. [ruby-core:08904]
+
+Thu Sep 21 22:56:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (no-install): not install rdoc actually.
+
+ * common.mk (install-doc, no-install-doc): use instruby.rb.
+
+ * instruby.rb: rdoc installation.
+
+ * ext/extmk.rb: expand ruby executable names.
+
+Thu Sep 21 20:19:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_new3): embed shorter strings more eagerly.
+
+Thu Sep 21 17:44:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_startwith): a new method to check if a string
+ starts with given prefix.
+
+ * string.c (rb_str_endwith): the opposite of String#startwith?.
+
+Thu Sep 21 16:29:02 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * rubytest.rb: use each_line instead of each.
+
+Thu Sep 21 15:06:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_odd_p): a new method to check even or odd.
+ [RCR#337]
+
+ * numeric.c (int_even_p): ditto.
+
+Thu Sep 21 13:55:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getpwuid): uid integer should be wrapped in
+ uid_t value. [ruby-core:08897]
+
+ * ext/etc/etc.c (etc_getpwuid): uid_t may be bigger than plain
+ 'int' type.
+
+Thu Sep 21 10:07:09 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_partition): RDoc typo fixed. [ruby-core:08898]
+
+ * string.c (rb_str_rpartition): fixed separation seek bug.
+
+Thu Sep 21 09:38:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lines): new method to split a string into lines.
+
+ * string.c (Init_String): Strings are no longer Enumerable. use
+ each_line or lines method explicitly.
+
+ * string.c (Init_String): remove each method. use each_lines.
+
+Wed Sep 20 23:17:41 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (pre-install-doc): create data directory before install.
+
+ * lib/mkmf.rb (dir_re): fixed typo.
+
+ * lib/mkmf.rb (install_dirs): remove extra slash.
+
+Wed Sep 20 22:41:45 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_mul): typo again. patch from Tadashi Saito
+ <shiba at mail2.accsnet.ne.jp>. fixed: [ruby-core:08893]
+
+Wed Sep 20 19:32:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_partition): a new method to separate the string
+ by a separator. taken from Python 2.5.
+
+ * string.c (rb_str_rpartition): ditto.
+
+Wed Sep 20 09:49:40 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32,wince}/Makefile.sub (INSTALLED_LIST): need to define
+ this macro to install.
+
+Wed Sep 20 09:43:10 2006 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: allow extra spaces in responses.
+ Thanks, Tom Soderlund.
+
+Wed Sep 20 09:25:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/gdbm/gdbm.c: add RDoc documentation. a patch from Peter
+ Adolphs <futzilogik at users dot sourceforge dot net>.
+ [ruby-doc:1223]
+
+Tue Sep 19 00:42:15 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_obj_ivar_defined, rb_mod_cvar_defined): new methods,
+ Kernel#instance_variable_defined? and Module#class_variable_defined?.
+ [ruby-dev:29587]
+
+ * lib/date/format.rb (Date::Bag#method_missing): use new method,
+ instance_variable_defined? to check if an instance variable is
+ defined. fixed: [ruby-dev:29554]
+ -- This didn't fix anything.
+
+Tue Sep 19 00:07:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_eql): fail early to gain performance.
+
+ * string.c (sym_hash): cache hash value in aux.shared if possible.
+
+ * gc.c (rb_obj_id): no need to treat symbols specially.
+
+ * lib/fileutils.rb (FileUtils::FileUtils): singleton_methods() no
+ longer return an array of strings, but of symbols.
+
+ * lib/delegate.rb (DelegateClass): ditto.
+
+Mon Sep 18 15:29:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_glob): restore GC protection volatile variable.
+ [ruby-dev:29588]
+
+ * re.c (rb_reg_regcomp): ditto.
+
+Mon Sep 18 12:16:48 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_mul): get rid of shift overflow.
+
+Mon Sep 18 10:47:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_glob): remove unused variable.
+
+ * math.c (math_log): ditto.
+
+ * re.c (rb_reg_regcomp): ditto.
+
+ * eval.c (break_jump): ditto.
+
+ * eval.c (rb_thread_yield_0): remove unused function.
+
+Sun Sep 17 23:44:58 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc#document): scan only files modified
+ after the previous generation.
+
+Sun Sep 17 17:42:13 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (install-doc): reverted.
+
+ * instruby.rb: stores file name list without destdir prefix.
+
+ * lib/rdoc/generators/ri_generator.rb: do not chdir twice.
+
+Sun Sep 17 10:42:10 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_mul): fixed typo. fixed: [ruby-core:08885]
+
+Sat Sep 16 19:47:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * README.EXT: should mention new macros: RSTRING_PTR, RSTRING_LEN,
+ RARRAY_PTR, RARRAY_LEN.
+
+ * README.EXT.ja: ditto.
+
+Sat Sep 16 16:39:23 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.in, instruby.rb, ext/extmk.rb, lib/mkmf.rb:
+ use instruby.rb to install extensions instead of ext/extmk.rb.
+
+ * instruby.rb: store installed list into the file.
+
+ * ext/dbm/extconf.rb: allow multiple candidates for dbm-type.
+
+ * ext/io/wait/extconf.rb: suspicious checking_for.
+
+ * ext/pty/pty.c (establishShell): parent pid is not used.
+
+ * ext/pty/pty.c (freeDevice): not used.
+
+ * lib/mkmf.rb (checking_for): improved the messages.
+
+Sat Sep 16 11:03:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_shared_first): should create embedded copies
+ instead of sharing memory region for smaller arrays.
+
+Sat Sep 16 09:37:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (inspect_struct): do not display a class name for
+ anonymous struct. The member fields are sufficient.
+
+Fri Sep 15 20:22:15 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-8/nkf.c: imported nkf 2.0.8 rev.110.
+ * Fix: check_bom cuts \xfe\xff\xXX\xXX of UTF-32LE.
+ * Add support --ic=UTF-32.
+ * Fix: can't guess UTF-16 and UTF-32.
+ * Fix: can't decode beyond BMP of UTF-16LE.
+
+ * ext/nkf/nkf.c (guess): Support UTF-32.
+
+ * ext/nkf/lib/kconv.rb (kconv): Support UTF-32.
+
+ * ext/nkf/lib/kconv.rb (to_utf32): new method.
+
+Fri Sep 15 05:23:24 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-8/nkf.c: imported nkf 2.0.8 2006-09-15.
+ Add support for U+10000 - U+10FFFF
+ Add support UTF-32
+
+Fri Sep 15 00:03:07 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/lib/digest.rb (Digest::Base.file): open a file in binary
+ mode. suggested by Kazuhiro NISHIYAMA. [ruby-dev:29579]
+
+Thu Sep 14 17:21:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_mul): avoid bignum multiplication as far as
+ possible. a patch from Ondrej Bilka <neleai at seznam.cz>.
+ [ruby-core:08825]
+
+Thu Sep 14 16:34:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): allow zero length symbols.
+ [ruby-core:08861]
+
+Thu Sep 14 16:11:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): raise SecurityError only when $SAFE
+ level is greater than zero. [ruby-core:08862]
+
+ * parse.y (rb_interned_p): new function to check if a string is
+ already interned.
+
+ * string.c (str_to_id): use rb_str_intern().
+
+Thu Sep 14 14:37:45 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/lib/digest.rb (Digest::Base.file): new method.
+ [ruby-dev:29572]
+
+Thu Sep 14 08:30:02 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/digest.c (rb_digest_base_inspect): new method.
+ [ruby-dev:29573]
+
+Thu Sep 14 01:13:56 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (ruby_init_stack): decrease "stack level too deep" in Windows.
+ [ruby-dev:29569]
+
+Thu Sep 14 01:02:25 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/lib/digest.rb: new file.
+ [ruby-dev:28689]
+
+Wed Sep 13 18:43:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * README.EXT: English adjustment. [ruby-core:08851] and
+ [ruby-core:08852]
+
+Wed Sep 13 18:25:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): better here-doc support.
+ a patch from Marshall T. Vandegrift <llasram at gmail.com>.
+ [ruby-core:08804]
+
+Wed Sep 13 16:43:36 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): prohibit interning tainted string.
+
+Wed Sep 13 01:14:02 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#getopts): works with pre-registered
+ options. [ruby-core:08826]
+
+Tue Sep 12 03:58:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_compare_by_identity): rename Hash#identical to
+ Hash#compare_by_identity.
+
+Mon Sep 11 16:52:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_identical): a new method to make a hash to
+ compare keys by their identity.
+
+ * hash.c (rb_hash_identical_p): new method to tell if a hash is
+ identical or not.
+
+ * st.c (st_numcmp, st_numhash): export hash type functions.
+
+Mon Sep 11 11:42:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/source.rb (REXML::Source::encoding): should not
+ convert the body twice. [ruby-core:08828]
+
+ * lib/rexml/encoding.rb (REXML::Encoding::encoding):
+ Encoding#encoding= to return boolean value to tell if the body
+ is really converted or not.
+
+ * lib/rexml/encoding.rb (REXML::Encoding::encoding): Specific
+ conversion library (e.g. rexml/encodings/UTF-16.rb) to have
+ higher preceding.
+
+ * lib/rexml/encodings/UTF-16.rb (REXML::Encoding::decode_utf16):
+ UTF-16#decode_utf16 should work strings without BOM.
+
+Mon Sep 11 07:39:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_equal): "sym == str" should compare them as
+ strings. [ruby-dev:29554]
+
+Sun Sep 10 22:59:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (parse_args): remove splat.
+
+Sun Sep 10 20:25:30 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.1.
+
+Sun Sep 10 09:41:29 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c: ISPRINT() needs ctype.h
+
+Sun Sep 10 09:19:47 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb: splat parsed arguments.
+
+Tue Jan 10 09:18:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_require_safe): prevent extension from loading twice.
+ fixed: [ruby-dev:29523]
+
+Sat Sep 9 23:55:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_f_test): test(0) should not have any special
+ meaning. [ruby-dev:29425]
+
+ * file.c (rb_f_test): properer error message.
+
+Sat Sep 9 14:08:38 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/test/unit/testcase.rb (Test::Unit::TestCase#run): Rescue
+ Exception in Test::Unit::TestCase#run. [ruby-core:08783]
+
+Sat Sep 9 04:55:59 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pstore.rb: open all in binary mode, and get rid of the quirk of
+ msvcrt. fixed: [ruby-dev:29518]
+
+Sat Sep 9 04:47:45 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (MINIRUBY): append MINIRUBYOPT.
+
+ * mkconfig.rb, ext/extmk.rb, lib/mkmf.rb, win32/mkexports.rb: suppress
+ warnings with $VERBOSE.
+
+ * win32/resource.rb: only file which has more than one icon is DLL.
+
+Fri Sep 8 16:53:30 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_alloc): should allocate a String object, even when
+ asked to allocate a Symbol object. [ruby-dev:29529]
+
+Fri Sep 8 16:36:27 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): follow Array#to_s.
+
+ * lib/mkmf.rb (create_makefile): ditto.
+
+ * win32/resource.rb: ditto.
+
+Fri Sep 8 10:00:12 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cookie.rb (WEBrick::Cookie.parse_set_cookies): new
+ method to parse multiple cookies per Set-Cookie header.
+ Thanks to Aaron Patterson <aaron_patterson at speakeasy.net>.
+ [ruby-core:08802]
+
+Fri Sep 8 08:59:30 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub, win32/configure.bat win32/setup.mak: program
+ name transform.
+
+Fri Sep 8 08:25:39 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb: suppress `assigning void value' warning.
+
+Fri Sep 8 01:16:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (Init_Array): #to_s to be an alias to #inspect.
+ [ruby-dev:29520]
+
+ * hash.c (Init_Hash): ditto.
+
+ * lib/mkmf.rb (create_makefile): replace "print array" by
+ "print *array".
+
+ * mkconfig.rb: ditto.
+
+Thu Sep 7 21:02:56 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (nil_to_s): returns the empty string again.
+ [ruby-dev:29520]
+
+Thu Sep 7 23:27:05 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (path_check_0, fpath_check): disable path check on cygwin.
+ [ruby-talk:213074]
+
+Thu Sep 7 02:03:45 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_to_s): adopt new date format using digits
+ e.g. "2006-09-07 02:03:45 +9000".
+
+Thu Sep 7 01:54:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_equal): override. check equivalence.
+
+Wed Sep 6 13:25:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (symbols_i): need to initialize early-created symbols.
+ [ruby-dev:29496]
+
+Wed Sep 6 12:05:19 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (Kconv::toeuc): remove -m0 [ruby-dev:29505]
+
+Tue Sep 5 22:06:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tcltklib.c: use rb_ary_new3() since RARRAY_LEN() is not l-value.
+
+ * ext/tk/tkutil/tkutil.c: use RARRAY_PTR() and RARRAY_LEN() and etc.
+ fixed: [ruby-dev:29473]
+
+Tue Sep 5 06:47:22 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_to_s): variable declaration after an execution
+ statement.
+
+Tue Sep 5 05:49:41 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (path_check_0): check if sticky bit is set on parent
+ directories for executable path. fixed: [ruby-dev:29415]
+
+Tue Sep 5 05:03:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_plus): addition in Fixnum will never overflow
+ long. a patch from Ondrej Bilka <neleai at seznam.cz>.
+ [ruby-core:08794]
+
+ * numeric.c (fix_minus): ditto.
+
+ * bignum.c (rb_big_pow): eagerly truncate resulting bignum.
+ [ruby-core:08794]
+
+Mon Sep 4 23:15:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_to_s): make it conform to RFC2822 date format.
+ [ruby-dev:29467]
+
+Mon Sep 4 21:43:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dbm/extconf.rb: create makefile according to the result of check
+ for dbm header. fixed: [ruby-dev:29445]
+
+Mon Sep 4 21:39:42 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.
+
+Mon Sep 4 21:14:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_strftime): include nul character. fixed: [ruby-dev:29422]
+
+Mon Sep 4 16:39:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::out): specify -x option for nkf.
+
+ * lib/cgi.rb (CGI::out): should not convert utf-8 implicitly using
+ NKF. it is too Japanese centric.
+
+Mon Sep 4 14:23:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/extconf.rb (db_check): remove debug print.
+
+Mon Sep 4 06:46:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_id2sym): intern if id is attrset_id.
+ [ruby-dev:29420] [ruby-dev:29447]
+
+Mon Sep 4 01:25:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_local_variables): list symbols.
+
+ * struct.c (rb_struct_s_members_m): ditto.
+
+ * variable.c (ivar_i): ditto.
+
+ * variable.c (gvar_i): ditto.
+
+ * variable.c (cv_i): ditto.
+
+Sun Sep 3 20:47:02 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.h (SYMBOL_P): Qnil and Qfalse are not Symbol.
+
+Sun Sep 3 15:32:44 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: get rid of nil.to_s.
+
+Sun Sep 3 06:24:38 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (ruby_connect): sockerrlen should be socklen_t.
+
+Sun Sep 3 04:40:42 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: check arpa/inet.h for ntohs.
+
+ * ext/socket/socket.c: include arpa/inet.h if available.
+
+Sat Sep 2 23:59:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (Init_String): undef Symbol#new.
+
+ * struct.c (rb_struct_s_def): wrong symbol detection.
+
+Sat Sep 2 23:59:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_to_id): a bug caused by premature optimization.
+
+Sat Sep 2 23:53:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): move symbol related code to string.c
+
+ * string.c (Init_String): Symbol as subclass of String.
+
+ * parse.y (rb_intern2): handle symbol as strings.
+
+ * string.c (str_new): substring of symbols are mere strings, not
+ symbols.
+
+Sat Sep 2 23:37:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (struct RArray): embed small arrays.
+ (RARRAY_LEN): defined for accessing array members.
+ (RARRAY_PTR): ditto.
+
+ * array.c: use RARRAY_LEN and RARRAY_PTR.
+
+Sat Sep 2 13:23:01 2006 Tanaka Akira <akr@fsij.org>
+
+ * common.mk (ia64.o): use the compiler driver to assemble ia64.s
+ to use appropriate ABI.
+
+Sat Sep 2 12:06:35 2006 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/generator.rb (SOAP::SOAPGenerator#encode_tag): do not dump
+ XML attribute which value is nil. value "" and nil both were dumped
+ as 'attr="value"'. [ruby-dev:29395]
+
+Sat Sep 2 12:00:32 2006 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb (CSV::IOReader#initialize): use String#[](pos, len)
+ instead of String#[](idx) to check utf BOM. follows String#[](idx)
+ behavior change of 1.9.
+
+Sat Sep 2 11:47:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should handle when in else clause. a patch
+ from Eric Hodel <drbrain at segment7.net>. [ruby-core:08662]
+
+ * parse.y (primary): wrap with NODE_CASE. [ruby-core:08663]
+
+Fri Sep 1 22:07:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (RSTRING_EMBED_LEN_MASK): uses 5 bits to support 64bit
+ environment. [ruby-dev:29369]
+
+Fri Sep 1 22:02:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_resize): should copy embedded string to
+ malloc'ed buffer. a patch from <nobu at ruby-lang.org> in
+ [ruby-dev:29369]. fixed: [ruby-dev:29368]
+
+ * string.c (rb_str_ord): use %ld specifier since STRING_LEN() is a
+ long. [ruby-dev:29369]
+
+Fri Sep 1 21:41:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (socks_init): typo fixed. a patch from Sven
+ Klemm <sven at c3d2.de>. [ruby-core:08770]
+
+Fri Sep 1 14:22:42 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle): RDoc fixed.
+
+Fri Sep 1 13:52:57 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/font.rb: TkFont#current_configinfo() doesn't work
+ on Tcl/Tk8.x.
+
+Fri Sep 1 09:32:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex::getc): should not push nil into
+ reading buffer (@readed). reported in
+ <http://jarp.does.notwork.org/diary/200608c.html#200608311>.
+
+Thu Aug 31 23:59:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): follow nil.to_s.
+
+Thu Aug 31 20:50:46 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): follow nil.to_s.
+
+ * win32/resource.rb: ditto.
+
+Thu Aug 31 20:21:47 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (search_required): use RSTRING_PTR and RSTRING_STR.
+
+ * file.c (test_identical, rb_file_s_truncate): ditto.
+
+ * io.c (pipe_open, rb_io_reopen): ditto.
+
+ * object.c (nil_plus): ditto.
+
+ * process.c (proc_spawn_n, rb_spawn): ditto.
+
+ * util.c (ruby_add_suffix): ditto.
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): ditto.
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): ditto.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_create_ext): ditto.
+
+ * ext/tk/stubs.c, ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: ditto.
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata): ditto.
+
+Thu Aug 31 18:23:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (struct RString): embed small strings.
+ (RSTRING_LEN): defined for accessing string members.
+ (RSTRING_PTR): ditto.
+
+ * string.c: use RSTRING_LEN and RSTRING_PTR.
+
+Thu Aug 31 17:16:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle_bang): new method.
+
+ * array.c (rb_ary_shuffle): ditto.
+
+ * random.c (genrand_real): ditto.
+
+ * random.c (genrand_int32): export the function.
+
+ * random.c (Init_Random): initialize random seed at the
+ beginning.
+
+Thu Aug 31 13:12:06 2006 why the lucky stiff <why@ruby-lang.org>
+
+ * eval.c (ruby_init): rename top_cref to ruby_top_cref and export,
+ along with ruby_cref, for use by the sandbox. [ruby-core:08762]
+
+ * node.h: ditto.
+
+Wed Aug 30 12:01:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_hash): improve collision.
+
+ * string.c (rb_memhash): new generic function to calculate hash value
+ for memory chunk.
+
+Tue Aug 29 19:10:10 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): fixed memory leak, based on the patch
+ by Kent Sibilev <ksruby at gmail.com>. fixed: [ruby-talk:211233]
+
+Mon Aug 28 11:29:46 2006 Eric Hodel <drbrain@segment7.net>
+
+ * eval.c, parse.y: Revert.
+ * ext/.document: Add digest.c.
+ * ext/digest/digest.c: Make RDoc show up.
+ * ext/io/wait.c: Fix call-seq in RDoc.
+
+Mon Aug 28 08:03:20 2006 Eric Hodel <drbrain@segment7.net>
+
+ * ext/.document: Add C files with RDoc.
+ * ext/digest/digest.c: Convert to RDoc.
+ * ext/io/wait.c: ditto.
+ * lib/rdoc/parsers/parse_rb.rb: Fix typo. Submitted by
+ <calamitas at gmail.com>. [ruby-core:08724]
+
+Mon Aug 28 07:21:47 2006 Eric Hodel <drbrain@segment7.net>
+
+ * file.c (File#size?): Fix documentation submitted by Rick Ohnemus.
+ ruby-Bugs-5529. [ruby-core:08725]
+
+Sun Aug 27 21:41:23 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.4.0
+
+ * regint.h: ditto.
+
+ * regparse.h: ditto.
+
+ * regexec.c: ditto.
+
+ * regcomp.c ditto.
+
+ * regparse.c: ditto.
+
+Sat Aug 26 08:03:03 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.8.2.
+
+Fri Aug 25 21:15:22 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * common.mk: add regint.h and oniguruma.h to dependence.
+
+ * ext/strscan/depend: ditto.
+
+Fri Aug 25 20:35:57 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/wsdl/document/echo.rb: removed.
+
+ * test/wsdl/document/test_rpc.rb: remove echo.rb after test.
+ [ruby-dev:29337]
+
+Fri Aug 25 17:02:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_sweep): typo fixed.
+
+Fri Aug 25 16:05:50 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (sym_call): check if the receiver is given.
+
+Fri Aug 25 01:10:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_Integer): Integer(nil) should raise TypeError.
+ [ruby-talk:210205]
+
+ * object.c (nil_to_s): no longer returns empty string but "nil".
+ [ruby-talk:210205]
+
+ * lib/mkmf.rb: avoid COMMON_HEADERS being nil.
+
+Wed Aug 23 00:25:14 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rexml/source.rb (REXML::IOSource#initialize): encoding have to
+ be set with the accessor. fixed: [ruby-list:42737]
+
+Tue Aug 22 19:21:00 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: parameter `to_addrs' might be an Array,
+ .flatten is required. [ruby-dev:29316]
+
+Tue Aug 22 18:47:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::handle_method):
+ rdoc documents C module methods as instance methods. a patch in
+ [ruby-core:08536].
+
+Tue Aug 22 12:35:57 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (Kconv::RegexpEucjp): fix regexp for
+ euc-jp [ruby-dev:29344]
+
+Sun Aug 20 11:46:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (num_step): also return an enumerator object if no block
+ is given.
+
+Sat Aug 19 16:47:51 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (hash2named_arg): accept hash argument
+ of symbol key.
+
+ * test/win32ole/test_win32ole.rb
+ ditto.
+
+Sat Aug 19 11:28:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_rename): use errno if set properly.
+ fixed: [ruby-dev:29293]
+
+Fri Aug 18 01:05:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::out): specify -m0 to disable MIME decode. a
+ patch from Fujioka <fuj at rabbix.jp>. [ruby-dev:29284]
+
+Thu Aug 17 19:15:16 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_[rRwWxX]): check for super user.
+ fixed: [ruby-core:08616]
+
+Thu Aug 17 14:47:06 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: added rdoc by Daniel Berger. [ruby-core:08177]
+
+Wed Aug 16 17:46:59 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_byte): IO#getc returns one byte string now.
+ fixed: [ruby-dev:29255]
+
+Wed Aug 16 17:22:44 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (pre-install-local): remove unnecessary code.
+ [ruby-dev:29249]
+
+Wed Aug 16 11:45:36 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_setuid, proc_setgid, proc_seteuid, proc_setegid):
+ get rid of bogus implementations on Mac OS X.
+
+Wed Aug 16 11:09:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_arg0): fill argv other than the first with an empty
+ string instead of NULL.
+
+Tue Aug 15 11:21:08 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: support SMTP/SSL. Thanks Kazuhiro NISHIYAMA.
+
+ * lib/net/smtp.rb: new method SMTP.use_ssl?
+
+ * lib/net/smtp.rb: new method SMTP.enable_ssl.
+
+ * lib/net/smtp.rb: new method SMTP.disable_ssl.
+
+ * lib/net/smtp.rb: new method SMTP.default_ssl_port.
+
+ * lib/net/smtp.rb: new method SMTP.default_tls_port.
+
+ * lib/net/smtp.rb: now SMTP#enable_tls accepts a SSLContext
+ object, instead of a verity and cert. [FEATURE CHANGE]
+
+ * lib/net/smtp.rb: new method SMTP.ssl_context.
+
+ * lib/net/smtp.rb: new method SMTP.default_ssl_context.
+
+ * lib/net/smtp.rb: export SMTP.authenticate.
+
+ * lib/net/smtp.rb: export SMTP.auth_plain.
+
+ * lib/net/smtp.rb: export SMTP.auth_login.
+
+ * lib/net/smtp.rb: export SMTP.auth_cram_md5.
+
+ * lib/net/smtp.rb: export SMTP.starttls.
+
+ * lib/net/smtp.rb: export SMTP.helo.
+
+ * lib/net/smtp.rb: export SMTP.ehlo.
+
+ * lib/net/smtp.rb: export SMTP.mailfrom.
+
+ * lib/net/smtp.rb: export SMTP.rcptto.
+
+ * lib/net/smtp.rb: export SMTP.rcptto_list.
+
+ * lib/net/smtp.rb: export SMTP.data.
+
+ * lib/net/smtp.rb: export SMTP.quit.
+
+Sat Aug 12 22:33:06 2006 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (String#split): Describe grouping behavior. Patch by Jan
+ Svitok <jan.svitok at gmail.com>. [ruby-core:08603]
+
+Sun Aug 13 12:08:02 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: ANSIfied. [ruby-core:08601]
+
+Sat Aug 12 15:55:32 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, bcc32/Makefile.sub, win32/Makefile.sub, win32/dir.h,
+ win32/win32.c, win32/win32.h: large file support for win32.
+
+Fri Aug 11 15:39:25 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#find_body): Make RDoc
+ ignore C function prototypes. Patch by Tilman Sauerbeck
+ <tilman at code-monkey.de>. [ruby-core:8574]
+ * lib/yaml/tag.rb: Replace nodoc with stopdoc so Module methods get
+ documented.
+
+Wed Aug 9 16:53:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP::auth_cram_md5): use ord to retrieve
+ bytes from strings. a patch from WATANABE Tetsuya
+ <Tetsuya.WATANABE at nifty.com>. [ruby-dev:29240]
+
+Tue Aug 8 23:49:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/extend-command.rb (IRB::ExtendCommandBundle): pacify
+ RDoc. a patch from Eric Hodel <drbrain at segment7.net>.
+ [ruby-core:08522]
+
+Tue Aug 8 19:26:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder::get_string):
+ affected by str[0] returns 1 char string. [ruby-dev:29223]
+
+ * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder::get_labels):
+ ditto.
+
+Tue Aug 8 12:28:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (arg): allow newlines before ternary colon. [ruby-dev:29189]
+
+Mon Aug 7 17:56:59 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c, ext/digest/rmd160/rmd160ossl.c,
+ ext/digest/sha1/sha1ossl.c, ext/readline/readline.c: move
+ inclusion of config.h to pacify AIX. a patch from Yutaka
+ Kanemoto <kinpoco at gmail.com>. [ruby-dev:29197]
+
+Mon Aug 7 15:55:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/syck.c (syck_move_tokens): should avoid negative
+ memmove. [ruby-list:42625]
+
+Mon Aug 7 14:37:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in, common.mk: AIX link issue. a patch from Yutaka
+ Kanemoto <kinpoco at gmail.com>. [ruby-dev:29190]
+
+ * ext/socket/socket.c: AIX socket support. [ruby-dev:29190]
+
+Mon Aug 7 12:05:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dln.c, eval.c, gc.c, ruby.h: shut up AIX alloca warning.
+ a patch from Yutaka Kanemoto <kinpoco at gmail.com>.
+ [ruby-dev:29191]
+
+Sun Aug 6 20:34:24 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (str[fp]time): %[EO]U didn't denote %U.
+
+Sun Aug 6 17:12:12 2006 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_reopen): STDERR.reopen(open("/dev/tty", "w")) should not
+ clear FMODE_PREP in STDERR.
+
+Sat Aug 5 22:53:41 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.2.2
+
+ * regint.h: ditto.
+
+ * regparse.h: ditto.
+
+ * regexec.c: ditto.
+
+ * regcomp.c ditto.
+
+ * regerror.c: ditto.
+
+ * regparse.c: ditto.
+
+Sat Aug 5 17:07:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (top_local_setup): local_vars[-1] should point
+ ruby_scope itself to protect local_tbl from garbage collection.
+ [ruby-dev:29049]
+
+Sat Aug 5 13:49:43 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (str[fp]time): "%\n" means "\n".
+
+Fri Aug 4 12:13:22 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib: Clean up files for RDoc.
+ * lib/.document: Include most of the standard library in RDoc
+ generation.
+ * lib/rdoc/ri/ri_formatter.rb: Don't unescape HTML in HtmlFormatter.
+ Submitted by <ksruby at gmail.com>. [ruby-core:08392].
+ * lib/drb/ssl.rb: Close socket on SSLError [ruby-core:7197]
+
+Fri Aug 4 18:59:49 2006 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/{init.rb,ruby-lex.rb,slex.rb}: can't input '\c' for
+ [ruby-core: 7122]. and support for ruby1.8.X
+
+Fri Aug 4 14:02:14 2006 James Edward Gray II <james@grayproductions.net>
+
+ * lib/date/format.rb (__strptime, strftime): allow multi-line patterns
+ in Date#strftime the same as Time#strftime accepts.
+ fixed: [ruby-core:08466]
+
+Fri Aug 4 13:56:51 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack): check argument overrun for 'P'. based on a
+ patch by rucila <rucila at yahoo.cojp>. fixed: [ruby-dev:29182]
+
+Fri Aug 4 02:42:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): a bug in %c type check.
+
+Fri Aug 4 01:28:19 2006 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_reopen): STDERR.reopen(File.open("/dev/null", "w")) should
+ not fclose stderr.
+
+Thu Aug 3 15:16:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_include): should always call Enumerable#include?
+ (not #===) for non numeric end points. [ruby-core:08477]
+ [ruby-core:08496]
+
+Mon Jul 31 16:51:40 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (exit_handler): new function; release winsock and
+ environment work area.
+
+ * win32/win32.c (NTInitialize): setup exit_handler.
+
+ * win32/win32.c (StartSockets): use exit_handler.
+
+ * win32/win32.c (rb_w32_getenv): use GetEnvironmentStrings() instead
+ of GetEnvironmentVariable(), because the latter cannot distinguish
+ whether a null environment variable exists or not.
+ fixed: [ruby-talk:205123]
+
+Mon Jul 31 16:15:13 2006 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_process.rb (TestProcess#test_rlimit_nofile):
+ setrlimit may fail with EINVAL.
+ reported by MIYAMUKO Katsuyuki. [ruby-dev:29174]
+
+Mon Jul 31 09:22:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: use ifdef (or defined) for macro constants that may or
+ may not be defined to shut up gcc's -Wundef warnings.
+ [ruby-core:08447]
+
+Mon Jul 31 13:38:13 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPReuqest#parse_uri): improve
+ for the value of IPv6 address in the Host: header field.
+
+Sun Jul 30 23:26:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call0): trace call/return of method defined from block.
+ fixed: [ruby-core:08329]
+
+ * eval.c (rb_trap_eval): make the current thread runnable to deal with
+ exceptions which occurred within the trap. fixed: [ruby-dev:27729]
+
+ * lib/cgi/session.rb, lib/cgi/session/pstore.rb: suppress warnings.
+ fixed: [ruby-talk:204896]
+
+Sat Jul 29 06:12:06 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: freeze ip_name for security reason.
+
+Sat Jul 29 01:23:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/logger.rb: improves the amount of documentation that Rdoc
+ picks up when processing logger.rb by moving the require
+ statement back before the comment block. a patch from Hugh
+ Sasse <hgs at dmu.ac.uk>. [ruby-core:08422]
+
+Fri Jul 28 17:18:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/curses/curses.c (NUM2CH, CH2FIX): use single char strings.
+
+Fri Jul 28 14:09:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): fixed typo in cache look-up. [ruby-dev:29167]
+
+Fri Jul 28 10:41:35 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): a bug in method cache look-up.
+ http://www.rubyist.net/~matz/20060720.html#c04
+
+Fri Jul 28 10:19:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): documentation update patch from Jacob
+ Fugal <lukfugl at gmail.com>. [ruby-core:08418]
+
+Fri Jul 28 09:41:45 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_to_s): fixed typo. [ruby-dev:29162]
+
+Fri Jul 28 00:26:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (domain_check): ANSI style function arguments
+
+ * math.c (math_log): too few argument to domain_check().
+
+Thu Jul 27 21:19:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (domain_check): a new function to check domain error
+ explicitly for systems that return NaN like FreeBSD.
+ [ruby-core:07019]
+
+ * math.c (math_acos, math_asin, math_acosh, math_atanh, math_log,
+ math_log10, math_sqrt): use domain_check().
+
+ * math.c (math_sqrt): fix documentation flaw.
+
+Thu Jul 27 22:21:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_to_s): fixed format mismatch.
+
+Thu Jul 27 18:12:12 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * time.c: need to declare time_utc_offset.
+
+Thu Jul 27 17:01:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_close): always calls "close" method of the receiver.
+ [ruby-core:6911] [ruby-core:8112]
+
+Thu Jul 27 16:41:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/openssl/ossl.h: move <ruby.h> inclusion point to shut up
+ Solaris compiler. [ruby-core:08114]
+
+ * time.c (time_to_s): use +0900 style timezone string for local time.
+ [ruby-dev:29143]
+
+Wed Jul 26 22:20:59 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: add support for as and ASFLAGS. [ruby-dev:29138]
+
+Wed Jul 26 21:59:33 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (Net::HTTP#post, request_post, request): should
+ set Content-Type: x-www-form-urlencoded by default.
+
+ * lib/net/http.rb (Net::HTTPHeader#content_type): should return
+ nil when there's no Content-Type.
+
+ * lib/net/http.rb (Net::HTTPHeader#sub_type): should return nil
+ when there's no sub Content-Type (e.g. "Content-Type: text").
+
+ * lib/net/http.rb (Net::HTTPHeader#type_params): wrongly failed
+ when there's no Content-Type.
+
+Wed Jul 26 18:38:13 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c (strscan_do_scan): always return nil if
+ p->curr exceeds string size.
+
+Wed Jul 26 18:33:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): rename #invoke_method and
+ #invoke_functional_method to __send and __send! respectively.
+
+ * eval.c (remove_method): prohibit removing __send and __send!.
+
+ * eval.c (rb_undef): prohibit undef'ing __send and __send!.
+
+ * eval.c (rb_eval): prohibit redefining __send and __send!.
+
+ * lib/delegate.rb (Delegator): preserve __send.
+
+Wed Jul 26 18:14:19 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (getDevice): retry once after GC on failure.
+ [ruby-core:08282]
+
+Wed Jul 26 17:43:20 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c (strscan_do_scan):
+ StringScanner.new("").scan(//) should return "". [ruby-Bugs:4361]
+
+Wed Jul 26 17:28:16 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): prepend ".." to %u for negative bignum,
+ but not "-". fixed: [ruby-core:08167]
+
+Wed Jul 26 16:39:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_scan): add string modification check.
+ [ruby-core:7216]
+
+Wed Jul 26 16:06:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): check
+ multipart boundary end. a patch from Fujioka <fuj at rabbix.jp>
+ [ruby-dev:28470]
+
+Wed Jul 26 01:02:59 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: suppress warnings by automake 1.8 or later.
+
+Tue Jul 25 14:46:14 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): typo.
+
+Tue Jul 25 13:14:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_proc_times): rename hz to hertz to avoid name
+ crash on AIX. [ruby-dev:29126]
+
+Mon Jul 24 22:03:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (backtrace): skip frames successive on node and method name.
+
+Mon Jul 24 15:51:52 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/readline/readline.c (readline_readline): rl_deprep_term_function
+ may be NULL with libedit. reported by Ryan Davis. [ruby-dev:29070]
+
+Mon Jul 24 15:19:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): revert last change. [ruby-dev:29112]
+ [ruby-core:08374]
+
+Sun Jul 23 22:59:49 2006 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_unix.rb: disabled on cygwin.
+ reported by Kouhei Yanagita. [ruby-dev:29080]
+
+Fri Jul 21 23:57:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): script is never used while recursing.
+
+Fri Jul 21 21:21:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call0): include funcalled methods in caller list.
+ fixed: [ruby-core:08290]
+
+Fri Jul 21 17:52:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): "9_e8" should consider "_e8" as
+ trailing garbage so that it should return 9.0. [ruby-dev:29088]
+
+Fri Jul 21 12:11:00 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, lib/mkmf.rb (with_destdir): remove drive letter before
+ prepending destdir on DOSISH.
+
+Fri Jul 21 04:17:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): try local method look-up first for fcall, then
+ normal method look-up. [ruby-talk:202564]
+
+ * eval.c (rb_get_method_body): save local method cache separately.
+
+ * eval.c (search_method): export info whether method is local or
+ not.
+
+Thu Jul 20 20:27:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_attr): make Module#attr to be an alias to
+ attr_reader. [RCR#331]
+
+Thu Jul 20 15:07:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: export classes/modules to implement sandbox.
+ [ruby-core:08283]
+
+Wed Jul 19 19:40:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): should check args_args before lambda
+ argument check. [ruby-dev:29029]
+
+Tue Jul 18 23:53:59 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_f_system): shouldn't block SIGCHLD if it's not
+ exist.
+
+Tue Jul 18 22:10:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_system): block SIGCHLD during the process
+ execution, like glibc system(3) does. [ruby-talk:202361]
+
+Tue Jul 18 23:10:43 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (open_ifs_socket): should not use plain malloc.
+
+ * win32/win32.c (rb_w32_opendir): should not use plain realloc.
+
+Tue Jul 18 18:05:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_float.rb (TestFloat::test_strtod): update test to
+ conform strtod change.
+
+Tue Jul 18 16:52:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (yield_under_i): argument should be passed in avalue
+ form. [ruby-dev:29044]
+
+Tue Jul 18 15:49:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): propagate association array to copied
+ string. [ruby-core:08223]
+
+ * pack.c (pack_unpack): return referenced string itself if it has
+ same length as specified. a patch from <nobu at ruby-lang.org>
+ in [ruby-core:08225].
+
+ * pack.c (pack_pack): taint 'p' packed strings.
+
+Tue Jul 18 15:19:07 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * intern.h (st_foreach_safe): fix prototype.
+
+ * node.h (NODE_LMASK): bigger than long on LLP64.
+
+ * missing/vsnprintf.c (BSD__uqtoa): new function to support LLP64.
+ all changes are derived from [ruby-dev:29045]
+
+Tue Jul 18 14:03:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer::unmount): remove
+ inpect argument from sprintf. [ruby-dev:29039]
+
+Tue Jul 18 10:53:37 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): limit out-of-range message.
+
+ * util.c (ruby_strtod): return end pointer even if ERANGE occurred.
+ fixed: [ruby-dev:29041]
+
+Mon Jul 18 00:43:05 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod): stop at dot not followed by digits.
+ fixed: [ruby-dev:29036]
+
+Tue Jul 18 00:01:27 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: remove LIBRUBY_SO if static linked extensions exist.
+
+Mon Jul 17 23:30:46 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_msvcrt): defaulted to msvcrt. Workaround for a
+ bug of cygwin 1.5.20.
+
+Mon Jul 17 22:55:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/io/wait/wait.c (io_ready_p): protoize.
+
+Mon Jul 17 13:43:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (define_swapx): should not use plain malloc.
+
+ * ext/curses/curses.c (curses_getmouse): ditto.
+
+Mon Jul 17 12:58:41 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: should use ac_cv_lib_dl_dlopen=no on MinGW.
+
+Mon Jul 17 11:47:35 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * st.c: still need to include config.h on some platforms.
+
+Sat Jul 15 01:09:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (malloc): use xmalloc/xcalloc instead of plain
+ malloc/calloc, to detect memory allocation failure. see
+ <http://www.nongnu.org/failmalloc/>.
+
+Fri Jul 14 13:08:13 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add methods for new features of latest Tcl/Tk8.5.
+
+ * ext/tk/lib/tk/namespace.rb: ditto.
+
+Fri Jul 14 02:30:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/monitor.rb: document patch from Hugh Sasse <hgs at dmu.ac.uk>.
+ [ruby-core:08205]
+
+Fri Jul 14 00:10:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_pop): may cause realloc oscillation. a patch
+ from MORITA Naoyuki <mlgetter at kidou.sakura.ne.jp>.
+ [ruby-dev:29028]
+
+Thu Jul 13 22:23:56 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/composite.rb: improve handling of the classname on the
+ option database for the widget class which includes TkComposite.
+
+Thu Jul 13 00:40:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (FIX2LONG): returns integer of size of VALUE.
+ [ruby-dev:29024]
+
+ * ruby.h (FIX2ULONG): ditto.
+
+Wed Jul 12 20:05:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_args): allow post mandatory arguments after optional
+ arguments. [ruby-dev:29014]
+
+ * parse.y (new_args_gen): allow post_args without rest_args.
+
+ * eval.c (formal_assign): ditto.
+
+ * parse.y (new_args_gen): check post argument duplication.
+
+Tue Jul 11 20:58:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: export rb_cMethod. [ruby-talk:201259]
+
+Tue Jul 11 19:13:33 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: remove restriction on the class of
+ pseudo-toplevel.
+
+Tue Jul 11 18:00:57 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: security fix.
+
+Tue Jul 11 17:28:08 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_dump): need to extend len for \b.
+
+Tue Jul 11 15:29:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_int2big): use SIGNED_VALUE. [ruby-dev:29019]
+
+ * bignum.c (rb_int2inum, rb_uint2inum): use VALUE sized integer.
+
+ * bignum.c (rb_big2long, rb_big2ulong): ditto.
+
+ * numeric.c (rb_num2long, rb_num2ulong): ditto.
+
+ * numeric.c (check_int, check_uint): ditto.
+
+ * bignum.c (rb_quad_pack): typo fixed.
+
+Tue Jul 11 13:40:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bignorm): sizeof(long) may be smaller than
+ sizeof(VALUE). [ruby-dev:29013]
+
+ * ruby.h (FIXNUM_MAX): fixnum may be bigger than long.
+
+ * ruby.h (SIGNED_VALUE): signed integer of size of VALUE.
+
+Mon Jul 10 23:37:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/soap/rpc/proxy.rb (Proxy::Operation::response_doc): remove
+ splat star from return statements.
+
+ * lib/soap/rpc/proxy.rb (Proxy::Operation::response_obj): retrieve
+ the first value from the result array if response has only one
+ value.
+
+Mon Jul 10 22:00:00 2006 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: Allows '_' to appear within
+ digits. [ruby-dev:28872]
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb: Bug in to_r reported by
+ [ruby-list:42533] fixed.
+
+Mon Jul 10 19:22:19 2006 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (gc_sweep): expand heap earlier.
+ reported by MORITA Naoyuki. [ruby-dev:28960]
+
+Mon Jul 10 18:59:34 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/font.rb: sorry. mistaken to patch.
+
+Mon Jul 10 18:46:52 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: make SEGV risk lower at exit.
+
+ * ext/tk/lib/tk.rb: ditto.
+
+ * ext/tk/lib/multi-tk.rb: fail to call function-style methods on slave
+ interpreters. The strategy (MultiTkIp_PseudoToplevel_Evaluable) to
+ fix the problem is a little tricky. You may have to take care of
+ conflicting with it.
+
+ * ext/tk/lib/tk.rb: a little change for the pseudo-toplevel strategy.
+
+ * ext/tk/lib/tk/font.rb: ditto.
+
+ * ext/tk/lib/tk/msgcat.rb: ditto.
+
+ * ext/tk/lib/tkextlib/itk/incr_tk.rb: ditto.
+
+ * ext/tk/sample/demos-en/widget: fail to call function-style methods
+ on sample scripts. To fix it, a strategy which similar to the way
+ on MultiTiIp is used. Please take care when re-write and re-run a
+ demo script on the Widget-Demo code viewer.
+
+ * ext/tk/sample/demos-jp/widget: ditto.
+
+Mon Jul 10 17:32:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/test.rb: update test suites.
+
+ * test/ruby/test_assignment.rb (TestAssignment::test_yield): ditto.
+
+ * test/ruby/test_iterator.rb (TestIterator::test_itertest): ditto.
+
+Mon Jul 10 14:43:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): remove erroneously restored prot_tag->blkid
+ initialization. [ruby-dev:28997] [ruby-dev:29000]
+
+Mon Jul 10 13:58:08 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * signal.c (install_nativethread_sighandler): commented out.
+
+Mon Jul 10 09:29:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_clear_cache_for_remove): clear entries for included
+ module. fixed: [ruby-core:08180]
+
+Mon Jul 10 02:22:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should not overwrite block information in
+ current frame. [ruby-dev:28957]
+
+ * eval.c (rb_yield_0): retrieve proper block object from the frame
+ record.
+
+ * eval.c (proc_alloc): return preserved block object if it's
+ available.
+
+Mon Jul 10 01:48:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.h (st_data_t): use pointer sized integer for st_data_t.
+ [ruby-dev:28988]
+
+Sun Jul 9 18:06:47 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_constant): fix for value 1 at cross compiling.
+
+ * lib/mkmf.rb (create_makefile): prevent substitution of macro
+ definition. fixed: http://www.yotabanana.com/lab/20060624.html#p02
+
+Sun Jul 9 07:58:48 2006 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rdoc/parsers/parse_f95.rb: massive overhaul from Yasuhiro
+ Morikawa including new file suffixes, function support, public
+ variables and constants, derived-types, defined operators and
+ assignments, namelists, and subroutine and function
+ arguments. Truly massive.
+
+ * lib/rdoc/diagram.rb: diagrams are now cached.
+
+ * lib/irb/completion.rb: fixed a crasher when completing against
+ an unnamed class/module.
+
+ * lib/rdoc/parsers/parse_c.rb: private comment (--/++) support in
+ C-file rdoc.
+
+ * lib/debug.rb: minor clarification in help.
+
+ * lib/pp.rb: minor clarification on exception.
+
+Sun Jul 9 00:54:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (next_jump): deal with destination of next.
+ fixed: [ruby-core:08169]
+
+Fri Jul 7 17:49:16 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_ord): extract lower byte. fixed: [ruby-dev:28980]
+
+ * lib/jcode.rb (String#succ!): fix for 1.9. fixed: [ruby-dev:28979]
+
+Fri Jul 7 14:05:03 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): define FUNC_STDCALL/FUNC_CDECL.
+ from [ruby-dev:28970].
+
+Fri Jul 7 00:38:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_default): should not call default procedure if
+ no key is given. [ruby-list:42541]
+
+Thu Jul 6 23:30:04 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_proc_times): use sysconf(_SC_CLK_TCK) value prior to
+ HZ and CLK_TCK. fixed: [ruby-talk:200293]
+
+Thu Jul 6 21:50:06 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/cparse.c: sync with original code, rev 1.8.
+
+ * ext/racc/cparse/cparse.c: should mark CparseParams objects.
+
+ * lib/racc/parser.rb: sync with original code, rev 1.8.
+
+ * lib/racc/parser.rb: update coding style.
+
+Wed Jul 5 05:28:45 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (block_param): should allow block argument after splat
+ and post splat args.
+
+Wed Jul 5 01:12:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_lambda.rb (TestLambdaParameters::test_lambda_as_iterator):
+ -> style block no longer available. [ruby-dev:28958]
+
+Tue Jul 4 21:48:56 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (proc_options): suppress warning on DOSISH.
+
+Tue Jul 4 15:12:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): should not set prot_tag->blkid since it would
+ never catch breaks at this level. [ruby-dev:28922]
+
+Tue Jul 4 04:48:36 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c: ruby 1.9 HEAD 64 bit warnings clean up from
+ <ville.mattila at stonesoft.com>. [ruby-core:08120]
+
+Mon Jul 3 19:04:38 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_make_menu_embeddable): help to make a menu
+ widget embeddable (pack, grid, and so on) like as a general widget.
+ However, an embeddable menu may require to be defined some event
+ bindings for general use.
+
+ * ext/tk/lib/tk/event.rb: [bug fix] Tk.callback_break and
+ Tk.callback_continue don't work on MultiTkIp.
+
+ * ext/tk/lib/multi-tk.rb: ditto.
+
+ * ext/tk/lib/tk.rb: lack of Tk.callback_return.
+
+ * ext/tk/lib/tk/menu.rb: improve creating clone menus.
+
+Mon Jul 3 14:42:06 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/extconf.rb (PW_UID2VAL, PW_GID2VAL): defaulted to conversion
+ from int, and sys/types.h needs to be included before grp.h.
+ fixed: [ruby-dev:28938]
+
+Mon Jul 3 10:44:01 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (popen_exec): close file descriptors other than standard I/Os.
+ fixed: [ruby-dev:28924]
+
+Mon Jul 3 05:15:29 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/openssl/test_asn1.c: String#[]= doesn't accept Integer.
+
+Mon Jul 3 01:14:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_inspect): encode \b (\010) for escape.
+ [ruby-dev:28927]
+
+ * string.c (rb_str_dump): ditto.
+
+Sun Jul 2 19:03:30 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/cparse.c: sync with original code, rev 1.7.
+
+ * ext/racc/cparse/cparse.c: must require version.h to get
+ RUBY_VERSION_CODE.
+
+Sun Jul 2 18:42:27 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/cparse.c: sync with original source code, rev
+ 1.6.
+
+ * ext/racc/cparse/cparse.c: do not use rb_iterate to give a block
+ to the method, use rb_block_call instead. [ruby-dev:28445]
+
+Sun Jul 2 11:22:03 2006 Tanaka Akira <akr@m17n.org>
+
+ * io.c (io_reopen): STDOUT.reopen(filename, "w+") didn't work.
+ (rb_io_reopen): STDOUT.reopen(File.open(filename, "w+")) didn't work.
+
+Sat Jul 1 23:55:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (PUSH_FRAME): initialize frame->self. [ruby-dev:28911]
+
+Sat Jul 1 17:00:42 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/webrick/utils.rb: use Proc#yield instead of Proc#call.
+ [ruby-dev:28914]
+
+Sat Jul 1 15:15:49 2006 Tanaka Akira <akr@m17n.org>
+
+ * test/socket/test_nonblock.rb: add timeout to send/receive
+ an empty UDP packet.
+ [ruby-dev:28820]
+
+Fri Jun 30 23:46:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: should test isinf for Solaris with GCC compiler.
+ a patch from <ville.mattila at stonesoft.com>. [ruby-core:07791]
+
+ * configure.in: -shared patch from Andrew Morrow
+ <andrew.c.morrow at gmail.com>. [ruby-core:08100]
+
+Fri Jun 30 19:35:41 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils._escape): should
+ use String#ord to get ascii code from the one-character string.
+ [ruby-dev:28901]
+
+Thu Jun 29 23:56:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark_children): a bug in NODE_BLOCK_PASS marking.
+ [ruby-dev:28908]
+
+Thu Jun 29 23:04:36 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: use ARGSPUSH instead of ARGSCAT to prevent too much
+ splat expansion.
+
+ * eval.c (when_check): need to handle ARGSPUSH as well.
+
+ * eval.c (block_orphan): lambda and proc from method are always
+ orphan.
+
+ * gc.c (gc_mark_children): proper marking for NODE_LAMBDA.
+
+Thu Jun 29 22:47:30 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (SETUP_ARGS0): avoid GC problem.
+ [ruby-dev:28902]
+
+Thu Jun 29 18:58:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_version): fix patch
+ failure.
+
+Thu Jun 29 18:00:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: add RDoc document. a patch from
+ mathew <meta at pobox.com>. [ruby-core:07050]
+
+Wed Jun 28 14:53:09 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/optparse.rb: RDoc patch from Robin Stocker <robin@nibor.org>
+ [ruby-core:08087]
+
+Wed Jun 28 23:23:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): underscores should appear only
+ between digits. [ruby-dev:28891]
+
+Wed Jun 28 19:04:34 2006 Tanaka Akira <akr@m17n.org>
+
+ * test/socket/test_unix.rb: test_seqpacket_pair removed.
+ [ruby-dev:28846]
+
+Wed Jun 28 13:51:21 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (when_check): arbitrary values are allowed after splats.
+ fixed: [ruby-dev:28879]
+
+Wed Jun 28 09:16:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): remove meaningless else-only case statement
+ syntax.
+
+Wed Jun 28 08:08:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): problem to handle else part. [ruby-dev:28873]
+
+Wed Jun 28 01:48:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): support splat in when expression list.
+ [ruby-dev:28822]
+
+ * eval.c (when_check): a new auxiliary function for case match.
+
+ * eval.c (when_cond): ditto.
+
+Wed Jun 28 01:05:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): should not skip '_' at the beginning
+ of a string. [ruby-dev:28830]
+
+ * bignum.c (rb_cstr_to_inum): ditto.
+
+Tue Jun 27 23:03:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c: RDoc update for =~ method. a patch from Alex Young
+ <alex at blackkettle.org>. [ruby-core:08068]
+
+Tue Jun 27 22:47:18 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: forgot to update TCLTKLIB_RELEASE_DATE.
+
+ * ext/tk/lib/tk.rb (tk_tcl2ruby): [bug fix] sometimes fail to convert
+ a tcl string to a ruby object if the tcl string includes "\n".
+
+Tue Jun 27 20:05:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (pipe_open): backout unnecessary fix on 2006-06-26.
+ [ruby-dev:28865]
+
+ * eval.c (rb_yield_0): exact argument number check now done only
+ for lambda Proc.
+
+ * eval.c (rb_yield_0): add check for number of arguments, if
+ there's one lambda block parameter.
+
+Tue Jun 27 16:04:05 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.h: define isascii on MinGW for msvcrt compatibility.
+
+ * configure.in: set ac_cv_header_sys_time_h=no on MinGW
+ for msvcrt compatibility.
+
+Tue Jun 27 11:36:02 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (setup_passwd, setup_group): allow bignum uid, gid and
+ so on. [ruby-talk:199102]
+
+Tue Jun 27 10:46:53 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_yield_0): avoid core dump. [ruby-dev:28840]
+
+Mon Jun 26 11:03:00 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri: Add options to limit the ri search path.
+
+Tue Jun 27 01:31:59 2006 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (bsock_recv_nonblock): new method
+ BasicSocket#recv_nonblock.
+ (udp_recvfrom_nonblock): renamed from ip_recvfrom_nonblock.
+ IPSocket#recvfrom_nonblock is moved to UDPSocket#recvfrom_nonblock.
+ (unix_recvfrom_nonblock): removed.
+ UNIXSocket#recvfrom_nonblock is removed.
+
+Tue Jun 27 00:52:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/eventids2.c (token_assoc): added tCHAR, which is not
+ under 256 now. fixed: [ruby-dev:28832]
+
+Mon Jun 26 23:42:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (call_trace_func): no check for argument number of the
+ callback. fixed: [ruby-dev:28812]
+
+Mon Jun 26 18:37:44 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_delete): fix SEGV when a slave-ip is
+ deleted on callback.
+
+Mon Jun 26 15:40:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_accept): revert to avoid ambiguity of
+ argument evaluation order. [ruby-dev:28861]
+
+ * ext/socket/socket.c (sock_accept_nonblock): ditto.
+
+Mon Jun 26 10:47:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (pipe_open): avoid closing uninitialized file descriptors.
+ a patch from <tommy at tmtm.org> [ruby-dev:28600]
+
+Sun Jun 25 23:02:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, mkconfig.rb: catch-up for latest autoconf.
+
+Sun Jun 25 17:44:16 2006 Tanaka Akira <akr@m17n.org>
+
+ * parse.y (paren_args): wrap $2 by escape_Qundef because it may be
+ Qundef. [ruby-dev:28843]
+
+Sun Jun 25 17:18:33 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(ole_invoke): support some kind of
+ method of word. [ruby-Bugs#3237]
+
+ * test/win32ole/test_word.rb: ditto.
+
+Sat Jun 24 23:48:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: replace terminal token names with more descriptive
+ name, i.e. kEND to keyword_end. [ruby-list:42477]
+
+Sat Jun 24 23:37:41 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_eval): use rb_ary_new2 instead of rb_ary_new4 to avoid
+ GC problem.
+ (rb_yield_values): use rb_ary_new2 instead of rb_ary_new4.
+
+ * array.c (rb_ary_new4): don't set len as n if contents is not
+ initialized. make it safe with GC.
+
+ [ruby-dev:28826]
+
+Fri Jun 23 23:35:32 2006 Tanaka Akira <akr@m17n.org>
+
+ * ruby.h, lib/drb/drb.rb, lib/drb/invokemethod.rb: remove Values class.
+ [ruby-dev:28805]
+
+Fri Jun 23 17:27:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_block_pass): removed.
+
+ * eval.c (rb_thread_start_1): use rb_proc_yield() instead of
+ rb_block_pass(). fixed: [ruby-dev:28794]
+
+Thu Jun 22 11:52:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPResponse): duplicated error 501;
+ HTTPInternalServerError should be error 500. [ruby-core:08037]
+
+Thu Jun 22 11:47:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_name): returns nil for anonymous modules.
+ [ruby-talk:198440]
+
+Thu Jun 22 10:31:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_aref): "abc"[3] should not return an empty
+ string but nil. [ruby-dev:28786]
+
+Thu Jun 22 05:15:58 2006 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (sock_s_socketpair): try GC only once.
+ [ruby-dev:28778]
+
+Wed Jun 21 21:20:31 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (jd_to_commercial): now works fine even if in
+ mathn-ized context.
+
+Wed Jun 21 17:29:57 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/getaddrinfo.c (freeaddrinfo, get_name): fixed typo.
+
+ * ext/tk/tcltklib.c (tcl_eval, tcl_global_eval): ditto.
+
+ * ext/zlib/zlib.c (rscheck): constified.
+
+Wed Jun 21 17:18:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/pp.rb (PP::PPMethods::seplist): should have preserved
+ original reference to the array. [ruby-dev:28747]
+
+Wed Jun 21 14:35:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (block_param): do not use multiple assignment for a sole
+ block parameter. [ruby-dev:28710]
+
+ * eval.c (rb_yield_0): pass a raw yielded value to a sole block
+ parameter if a value is passed by yield.
+
+ * eval.c (proc_invoke): args may not be an array.
+
+ * eval.c (rb_proc_yield): pass original value without wrapping
+ it in an array.
+
+Wed Jun 21 14:06:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (method_call): remove (fn)(args) style lambda
+ invocation, add fn.(args) instead.
+
+Wed Jun 21 08:39:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc/create.rb (XMLRPC::Create::conv2value): merge Date
+ and Time processing. [ruby-core:08033]
+
+Wed Jun 21 03:01:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c, file.c, etc.: code-cleanup patch from Stefan Huehner
+ <stefan at huehner.org>. [ruby-core:08029]
+
+Wed Jun 21 01:40:25 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reswords): modifier token is no longer returned in fname
+ state. fixed: [ruby-dev:28775]
+
+Tue Jun 20 23:28:34 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (parse_args): provisional catch-up for the recent changes.
+
+ * lib/optparse.rb (OptionParser::List#summarize, OptionParser#order!): ditto.
+
+Tue Jun 20 11:07:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): intercept break and return from lambda
+ Proc objects. [ruby-dev:28742]
+
+ * eval.c (proc_invoke): remove unnecessary YIELD_PROC_CALL flag.
+
+ * eval.c (YIELD_EXACT_ARGS): renamed from YIELD_LAMBDA_CALL, which
+ is no longer related to the behavior turned on by this flag.
+
+ * eval.c (return_jump): no need to care about PROT_YIELD.
+
+ * eval.c (break_jump): no jump to toplevel PROT_THREAD tag.
+
+ * eval.c (rb_yield_0): fix confusion between lambda (which is a
+ property of a proc) and pcall (which depends on whether it's
+ called via yield or call).
+
+ * eval.c (rb_thread_yield): no need to specify YIELD_LAMBDA_CALL.
+
+ * eval.c (rb_block_pass): update blkid in prot_tag.
+
+Mon Jun 19 23:40:59 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb: remove default -m0 and fix document.
+
+ * ext/nkf/nkf-8/{nkf.c, config.h, utf8tbl.c, utf8tbl.h}:
+ imported nkf 2.0.7.
+
+Mon Jun 19 17:02:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/test.rb (proc_return3): return within non lambda block
+ should terminate surrounding method. [ruby-dev:28741]
+
+Mon Jun 19 13:22:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (unix_sysaccept): typo fixed.
+
+ * ext/socket/socket.c (sock_connect): remove an unused local
+ variable tmpaddr.
+
+Mon Jun 19 02:10:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (tcp_accept_nonblock): forgot to remove
+ abandoned hacks. [ruby-dev:28740]
+
+Mon Jun 19 00:00:17 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: fix bug: initialize improper tables.
+
+Sun Jun 18 20:28:43 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fole_methods): The return value
+ of WIN32OLE#ole_methods should include PROPERTYPUTREF methods.
+
+ * ext/win32ole/win32ole.c (fole_put_methods): The return value
+ of WIN32OLE#ole_put_methods should include PROPERTYPUTREF methods.
+
+ * test/win32ole/test_ole_methods.rb: ditto.
+
+ * ext/win32ole/win32ole.c (ole_propertyput): support
+ PROPERTYPUTREF. [ruby-talk:183042]
+
+ * test/win32ole/test_propertyputref.rb: ditto.
+
+Sat Jun 17 23:42:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): add aliases invoke_method and
+ invoke_functional_method corresponding send and funcall
+ respectively. [ruby-talk:197512]
+
+ * parse.y (parser_yylex): returns the most typical keyword token
+ on EXPR_FNAME. [ruby-core:7995]
+
+ * ext/socket/socket.c: protoize.
+
+Sat Jun 17 22:17:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Integer::prime_division): raise ZeroDivisionError
+ on zeros. [ruby-dev:28739]
+
+Sat Jun 17 14:53:32 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Kernel#Pathname): new method.
+
+Sat Jun 17 02:01:00 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (Kernel#pretty_inspect): defined for pretty printed
+ string.
+
+Fri Jun 16 01:41:00 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_proc_arity): get rid of segfault for mere splat.
+
+ * gc.c (gc_mark_children): NODE_BLOCK_PASS needs u3 to be marked.
+
+Thu Jun 15 22:06:56 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (then): remove ':' from 'then' and 'do' rules.
+
+Wed Jun 14 18:00:20 2006 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c (enum_any): Documentation typo.
+
+Wed Jun 14 15:01:09 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser#warn): Don't print
+ warnings when -q is set.
+
+Wed Jun 14 16:11:37 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_f_method_name, rb_f_callee_name): document typo.
+
+Wed Jun 14 15:19:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_aset): raise TypeError on nil with more descriptive
+ message. [ruby-core:07990]
+
+Tue Jun 13 17:22:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (Init_socket): remove obsolete constants:
+ IPsocket, TCPsocket, SOCKSsocket, TCPserver, UDPsocket,
+ UNIXsocket, UNIXserver.
+
+Tue Jun 13 09:07:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (formal_assign): post splat arguments should have had
+ higher priority than optional arguments, since they are
+ mandatory. [ruby-dev:28715]
+
+ * eval.c (VIS_MASK): broken. should be 15. [ruby-dev:28715]
+
+ * io.c (argf_getc): should return one-character string.
+ [ruby-dev:28715]
+
+ * io.c (rb_io_readchar): ditto.
+
+Sun Jun 11 23:20:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (sym_call): disallow to call private methods.
+
+ * lib/optparse.rb (OptionParser::Arguable#getopts): pass self to the
+ parser.
+
+Sun Jun 11 09:56:41 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.h (write): not need to define on bcc.
+
+Sun Jun 11 08:30:33 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#getopts): new methods.
+
+Sun Jun 11 07:27:11 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/ri_writer.rb: use String#ord.
+
+Sun Jun 11 04:38:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (sym_to_proc): imported Symbol#to_proc from ActiveSupport.
+
+Sat Jun 10 18:02:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/newton.rb (Newton::nlsolve): typo
+ fixed: raize -> raise. [ruby-talk:196608]
+
+Sat Jun 10 17:49:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_ord): new method.
+
+ * parse.y (rbracket): allow optional newline before closing
+ brackets.
+
+Sat Jun 10 15:12:29 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_f_method_name, rb_f_callee_name): new functions.
+ new global method `__method__' and `__callee__'.
+
+Sat Jun 10 10:13:13 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/getoptlong.rb (GetoptLong#set_options): receive arguments
+ as Array.
+
+ * lib/irb/slex.rb: use Proc#yield.
+
+ * lib/rdoc/markup/simple_markup/inline.rb: follow the new behavior
+ of String#[].
+
+ * lib/rdoc/ri/ri_writer.rb: ditto.
+
+Sat Jun 10 08:17:23 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * math.c (log2): may be a macro.
+
+ * parse.y (args, block_param, f_args): pass f_post_arg to #params.
+
+ * util.c (powersOf10): constified.
+
+ * ext/readline/readline.c: include extconf.h first.
+
+ * ext/ripper/eventids2.c: removed tLAMBDA_ARG.
+
+ * ext/tk/tcltklib.c (lib_fromUTF8_core): removed conflict.
+
+ * ext/tk/tkutil/tkutil.c (cbsubst_get_subst_arg): rb_id2name() is
+ defined as const now.
+
+ * ext/win32ole/win32ole.c (fole_missing): ditto.
+
+ * lib/mkmf.rb (create_makefile): force to create extconf header.
+
+ * lib/optparse.rb (order!): use Proc#yield.
+
+Sat Jun 10 06:53:22 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (CALLARGS): remove last semicolon. C90 compiler doesn't
+ allow any lines (even if they're empty) within variable
+ declarations.
+
+Fri Jun 9 09:56:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): allow %c to print one character
+ string (e.g. ?x).
+
+Thu Jun 8 14:00:02 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch] (rb_w32_read, rb_w32_write): new functions.
+ use recv() and send() when fd is socket. fixed: [ruby-dev:28694]
+
+Wed Jun 7 16:22:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile::make_tmpname): put dot between
+ basename and pid. [ruby-talk:196272]
+
+Wed Jun 7 16:16:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (do_block): remove -> style block.
+
+ * parse.y (parser_yylex): remove tLAMBDA_ARG.
+
+Wed Jun 7 14:51:22 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (errmap): add some winsock errors.
+
+Wed Jun 7 09:14:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): binding for the return event hook should have
+ consistent scope. [ruby-core:07928]
+
+Tue Jun 6 23:25:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): return behavior should depend whether it
+ is surrounded by a lambda or a mere block.
+
+Mon Jun 5 18:12:12 2006 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (sock_s_unpack_sockaddr_in): reject
+ non-AF_INET/AF_INET6 sockaddr.
+ (sock_s_unpack_sockaddr_un): reject non-AF_UNIX sockaddr.
+ [ruby-dev:28691]
+
+Sun Jun 4 20:40:19 2006 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c: fix sockaddr_un handling.
+ [ruby-dev:28677]
+
+Sat Jun 3 23:53:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (formal_assign): handles post splat arguments.
+
+ * eval.c (rb_call0): ditto.
+
+Sat Jun 3 13:10:41 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (strhash): use FNV-1a hash.
+
+Fri Jun 2 20:01:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): removed experimental ';;' terminator.
+
+Fri Jun 2 19:00:40 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: use create_header.
+
+ * ext/openssl/ossl.h, ext/openssl/openssl_missing.h:
+ include RUBY_EXTCONF_H.
+
+Fri Jun 2 17:16:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (CLEANINGS): remove extconf.h by distclean if created.
+
+Fri Jun 2 00:11:19 2006 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (s_recvfrom): alen may be zero with UNIXSocket
+ too. (tested on NetBSD 3.0)
+ (s_recvfrom_nonblock): extracted from sock_recvfrom_nonblock.
+ (sock_recvfrom_nonblock): use s_recvfrom_nonblock.
+ (ip_recvfrom_nonblock): new method: IPSocket#recvfrom_nonblock
+ (unix_recvfrom_nonblock): new method: UNIXSocket#recvfrom_nonblock
+ (s_accept_nonblock): extracted from sock_accept_nonblock.
+ (sock_accept_nonblock): use s_accept_nonblock.
+ (tcp_accept_nonblock): new method: TCPServer#accept_nonblock
+ (unix_accept_nonblock): new method: UNIXServer#accept_nonblock
+
+Thu Jun 1 19:12:37 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_cmdvector): backslashes inside single-quotes
+ no longer has special meanings. fixed: [ruby-list:42311]
+
+Thu Jun 1 17:55:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_node_arity): should be aware of post splat arguments.
+
+ * eval.c (rb_proc_arity): ditto.
+
+Thu Jun 1 16:17:26 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getcwd): runtime's getcwd() will not success
+ if the length of the cwd is longer than MAX_PATH.
+ fixed [ruby-list:42335]
+
+Thu Jun 1 16:07:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_args): syntax rule enhanced to support arguments
+ after the splat.
+
+ * parse.y (mlhs_basic): ditto for multiple assignments
+
+ * parse.y (block_param): ditto for block parameters.
+
+ * parse.y (f_post_arg): mandatory formal arguments after the splat
+ argument.
+
+ * parse.y (new_args_gen): generate nodes for mandatory formal
+ arguments after the splat argument.
+
+ * eval.c (rb_eval): dispatch mandatory formal arguments after the
+ splat argument.
+
+Thu Jun 1 11:33:32 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getcwd): set errno if not set.
+ fixed [ruby-list:42346]
+
+Thu Jun 1 00:45:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (args): allow more than one splat in the argument list.
+
+Wed May 31 18:38:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (method_call): allow aref [] to accept all kind of
+ method argument, including assocs, splat, and block argument.
+
+ * eval.c (SETUP_ARGS0): prepare block argument as well.
+
+Tue May 30 18:13:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Integer): remove Integer#gcd2. [ruby-core:07931]
+
+Mon May 29 22:40:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_line): print receivers true/false/nil specially.
+
+ * eval.c (rb_proc_yield): handles parameters in yield semantics.
+
+ * eval.c (nil_yield): gives LocalJumpError to denote no block
+ error.
+
+ * io.c (rb_io_getc): now takes one-character string.
+
+Sat May 27 22:46:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): save and restore block in the current frame.
+ fixed: [ruby-core:07833], [ruby-talk:191639]
+
+Sat May 27 11:29:46 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): remove extinit files if no statically linked
+ extensions.
+
+Fri May 26 19:56:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_hash): use FNV-1a hash from Fowler/Noll/Vo
+ hashing algorithm.
+
+Fri May 26 09:05:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.h, lib/mkmf.rb (create_header): clear command line options for
+ macros moved to extconf.h.
+
+ * ext/extmk.rb (extract_makefile, extmk): made RUBY_EXTCONF_H and
+ EXTSTATIC permanent.
+
+ * ext/{dbm,digest/*,socket,zlib}/extconf.rb: used $defs and $INCFLAGS.
+
+ * {bcc32,win32,wince}/Makefile.sub (COMPILE_C, COMPILE_CXX): added
+ $(INCFLAGS).
+
+ * lib/mkmf.rb (configuration): add $defs unless extconf.h was created.
+
+Thu May 25 01:52:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (pkg_config): particular config commands support.
+
+ * ext/extmk.rb: deal with $static set in extconf.rb.
+
+ * mkconfig.rb: merge multiple entries to an entry with multiple lines.
+
+ * lib/mkmf.rb: allow a series of commands to link.
+
+ * win32/Makefile.sub: embed manifests.
+
+ * win32/setup.mak: suffix OS name by runtime version.
+
+Wed May 24 23:52:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_install_sh): ignore dummy install-sh.
+ [ruby-talk:193876]
+
+Wed May 24 17:55:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_aref): str[0] now returns 1 character string,
+ instead of a fixnum. [Ruby2]
+
+ * parse.y (parser_yylex): ?c now returns 1 character string,
+ instead of a fixnum. [Ruby2]
+
+ * string.c (rb_str_aset): no longer support fixnum insertion.
+
+Wed May 24 03:10:44 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb
+ (OpenSSL::SSL::SocketForwarder#setsockopt,getsockopt): typo fixed.
+
+Mon May 22 16:32:03 2006 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h (rb_io_set_nonblock): declared.
+
+ * io.c (rb_io_set_nonblock): new function.
+ (io_getpartial): nonblocking read support.
+ (io_read_nonblock): new method: IO#read_nonblock.
+ (io_write_nonblock): new method: IO#write_nonblock.
+
+ * ext/socket/socket.c (s_accept): retry for EWOULDBLOCK.
+ revert [ruby-talk:113807].
+ (sock_connect_nonblock): new method: Socket#connect_nonblock.
+ (sock_accept_nonblock): new method: Socket#accept_nonblock.
+ (sock_recvfrom_nonblock): new method: Socket#recvfrom_nonblock.
+
+ [ruby-core:7917]
+
+Mon May 22 15:57:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (umethod_bind): should not update original class.
+ [ruby-dev:28636]
+
+Mon May 22 13:38:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_get): should support constant access from
+ within instance_eval(). [ruby-dev:28327]
+
+Sun May 21 09:50:31 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * regexec.c: add STK_NULL_CHECK_END to IS_TO_VOID_TARGET().
+ [ruby-list:42234]
+
+Thu May 18 22:37:20 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb (WEBrick::Config::HTTP): add new parameters,
+ :InputBufferSize and :OutputBufferSize.
+
+ * lib/webrick/utils.rb (WEBrick::Utils.timeout): add new timeout
+ method. this implementation is expected to be compatible with
+ timeout.rb and faster than timeout.rb.
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#_read_data):
+ Timeout.timeout is replaced by WEBrick::Utils.timeout.
+
+ * lib/webrick/httprequest.rb: WEBrick::HTTPRequest::BUFSIZE is
+ replaced by config[:InputBufferSize].
+
+ * lib/webrick/httpresposne.rb: WEBrick::HTTPResponse::BUFSIZE is
+ replaced by config[:OutputBufferSize].
+
+ * lib/webrick/server.rb: get rid of unnecessary require.
+
+ * test/webrick/test_utils.rb: test for WEBrick::Utils.timeout.
+
+Thu May 18 17:51:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_timeval): should round for usec floating
+ number. [ruby-core:07896]
+
+ * time.c (time_add): ditto.
+
+Thu May 18 00:42:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, lib/mkmf.rb: use BUILD_FILE_SEPARATOR in Makefiles.
+
+Wed May 17 17:55:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (sys_warning): should not call a vararg function
+ rb_sys_warning() indirectly. [ruby-core:07886]
+
+Tue May 16 17:23:19 2006 Shin-ichiro HARA <sinara@blade.nagaokaut.ac.jp>
+
+ * numeric.c (flo_divmod): the first element of Float#divmod should
+ be an integer. [ruby-dev:28589]
+
+ * test/ruby/test_float.rb: add tests for divmod, div, modulo and remainder.
+
+Tue May 16 15:34:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): should not allow modifying literal
+ regexps. frozen check moved from rb_reg_initialize_m as well.
+
+Tue May 16 09:20:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): should not modify untainted objects in
+ safe levels higher than 3.
+
+ * re.c (rb_memcmp): type change from char* to const void*.
+
+ * dir.c (dir_close): should not close untainted dir stream.
+
+ * dir.c (GetDIR): add tainted/frozen check for each dir operation.
+
+Mon May 15 21:37:12 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c (rb_reg_prepare_re): don't use onig_recompile().
+
+Mon May 15 17:42:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_symbol_arg):
+ typo fixed. a patch from Florian Gross <florg at florg.net>.
+
+Sat May 13 16:14:05 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (PP.mcall): new method.
+ (Struct#pretty_print): call Kernel#class and Struct#members even if
+ overridden.
+ (Struct#pretty_print_cycle): ditto.
+ [ruby-core:7865]
+
+Fri May 12 15:54:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (EXEC_EVENT_HOOK): trace_func may remove itself from
+ event_hooks. no guarantee for arbitrary hook deletion.
+ [ruby-dev:28632]
+
+Thu May 11 19:57:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): differ addition to minimize error.
+ [ruby-dev:28619]
+
+Thu May 11 18:30:11 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_cipher.c (add_cipher_name_to_ary): should return
+ value. [ruby-dev:28627]
+
+Thu May 11 18:10:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): should not raise ERANGE when the input
+ string does not have any digits. [ruby-dev:28629]
+
+Wed May 10 23:40:21 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.0.3
+
+ * regexec.c: ditto.
+
+Mon May 8 09:10:31 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for OBJ_NAME_do_all_sorted.
+
+ * ext/openssl/ossl_cipher.c (ossl_s_ciphers): new method
+ OpenSSL::Cipher.ciphers. it returns all the cipher names.
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_init): refine warning message.
+
+ * ext/openssl/lib/openssl/cipher.rb: reimplement without eval() and
+ add constants AES128, AES192, AES256. [ruby-dev:28610]
+
+ * ext/openssl/lib/openssl/digest.rb: reimplement without eval().
+
+ * test/openssl/test_cipher.rb, test_digest: fix about reimplemented
+ features.
+
+ * sample/openssl/cipher.rb: rewrite all.
+
+Sun May 7 03:09:51 2006 Stephan Maka <stephan@spaceboyz.net>
+
+ * lib/resolv.rb (Resolv::DNS::Requester::ConnectedUDP#initialize):
+ Use AF_INET6 for nameservers containing colons.
+
+Sat May 6 23:40:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should restore old ruby_frame->block.
+ thanks to ts <decoux at moulon.inra.fr>. [ruby-core:07833]
+ also fix [ruby-dev:28614] as well.
+
+Sat May 6 00:38:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (trap): sig should be less then NSIG. Coverity found
+ this bug. a patch from Kevin Tew <tewk at tewk.com>.
+ [ruby-core:07823]
+
+Thu May 4 22:13:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (math_log2): add new method inspired by
+ [ruby-talk:191237].
+
+ * math.c (math_log): add optional base argument to Math::log().
+ [ruby-talk:191308]
+
+Thu May 4 02:24:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/emitter.c (syck_scan_scalar): avoid accessing
+ uninitialized array element. a patch from Pat Eyler
+ <rubypate at gmail.com>. [ruby-core:07809]
+
+ * array.c (rb_ary_fill): initialize local variables first. a
+ patch from Pat Eyler <rubypate at gmail.com>. [ruby-core:07810]
+
+ * ext/syck/yaml2byte.c (syck_yaml2byte_handler): need to free
+ type_tag. a patch from Pat Eyler <rubypate at gmail.com>.
+ [ruby-core:07808]
+
+Wed May 3 02:12:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (make_hostent_internal): accept ai_family
+ check from Sam Roberts <sroberts at uniserve.com>.
+ [ruby-core:07691]
+
+Mon May 1 17:58:16 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (add_event_call_back): should not
+ delete event handler when the event name is not entried.
+
+Mon May 1 08:32:10 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_param_ole_type): should return
+ "unknown type" string when ITypeInfo::GetFuncDesc failed.
+
+Sat Apr 29 22:43:37 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): should initialize
+ flag. [ruby-core:07785]
+
+Fri Apr 28 10:53:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): should not cut off 18 digits for no
+ reason. [ruby-core:07796]
+
+Thu Apr 27 01:38:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fill): internalize local variable "beg" to
+ pacify Coverity. [ruby-core:07770]
+
+Wed Apr 26 16:59:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): now supports CRLF newlines. a patch from
+ <tommy at tmtm.org>. [ruby-dev:28601]
+
+Wed Apr 26 16:55:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * applied code clean-up patch from Stefan Huehner
+ <stefan at huehner.org>. [ruby-core:07764]
+
+Tue Apr 25 18:00:05 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (delete_slaves): maybe increment the reference
+ count of a NULL Tcl_Obj [ruby-core:07759].
+
+Tue Apr 25 07:55:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/jcode.rb (String::tr_s): should have translated non
+ squeezing character sequence (i.e. a character) as well. thanks
+ to Hiroshi Ichikawa <gimite at gimite.ddo.jp> [ruby-list:42090]
+
+Fri Apr 21 15:19:13 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (lib_eventloop_ensure): avoid dereferencing
+ freed pointer [ruby-core:07744] and memory leak.
+
+Fri Apr 21 12:14:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: document update patch from Sam Roberts
+ <sroberts at uniserve.com>. [ruby-core:07701]
+
+Thu Apr 20 08:43:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Integer): need not to remove gcd2. a patch from
+ NARUSE, Yui <naruse at airemix.com>. [ruby-dev:28570]
+
+Wed Apr 19 13:55:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): too much NEW_LIST()
+
+ * eval.c (SETUP_ARGS0): remove unnecessary access to nd_alen.
+
+Wed Apr 19 11:57:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): use ARGSCAT for NODE_OP_ASGN1.
+ [ruby-dev:28585]
+
+ * parse.y (arg): use NODE_ARGSCAT for placeholder.
+
+Wed Apr 19 11:13:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/getoptlong.rb (GetoptLong::get): RDoc update patch from
+ mathew <meta at pobox.com>. [ruby-core:07738]
+
+Wed Apr 19 10:13:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_set): raise error when no target klass is
+ supplied. [ruby-dev:28582]
+
+Tue Apr 18 17:40:37 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: add a binding to a container for a slave IP.
+
+ * ext/tk/lib/tk.rb: update RELEASE_DATE.
+
+ * ext/tk/tcltklib.c: forget to reset a Tcl interpreter.
+
+ * ext/tk/stubs.c: fix potential bugs about handling rb_argv0.
+
+Mon Apr 10 01:03:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * prec.c (prec_prec_f): documentation patch from
+ <gerardo.santana at gmail.com>. [ruby-core:07689]
+
+Sat Apr 8 02:34:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): second operand may be too big even if
+ it's a Fixnum. [ruby-talk:187984]
+
+Sat Apr 8 02:12:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * README.EXT: update symbol description. [ruby-talk:188104]
+
+Sat Apr 8 18:06:28 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_METHOD#inspect,
+ WIN32OLE_PARAM#inspect.
+
+ * test/win32ole/test_win32ole_method.rb: ditto.
+
+ * add test/win32ole/test_win32ole_param.rb.
+
+Fri Apr 7 22:11:30 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(foletypelib_initialize): WIN32OLE_TYPELIB.new
+ accepts OLE file.
+
+ * test/win32ole/test_win32ole_typelib.rb(test_initialize): ditto.
+
+Thu Apr 6 23:28:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * COPYING: explicitly note GPLv2. [ruby-talk:187922]
+
+Thu Apr 6 16:43:06 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * intern.h (rb_obj_instance_exec, rb_mod_module_exec): add declaration.
+
+Thu Apr 6 11:18:37 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/panedwindow.rb: lack of arguments. [ruby-core:7681]
+
+Thu Apr 6 01:04:47 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: fix SEGV when embedding to an application.
+ [ruby-core:7600]
+
+ * ext/tk/tcltklib.c: fix SEGV at exit. [ruby-talk:186489]
+
+ * ext/tk/tkutil/tkutil.c: follow to changing specification of
+ instance_eval on ruby-1.9.x.
+
+ * ext/tk/lib/tk.rb: ditto.
+
+ * ext/tk/lib/multi-tk.rb: ditto.
+
+ * ext/tk/lib/tk.rb: remove warning about redefinition of methods.
+
+ * ext/tk/lib/tk/variable.rb: remove warning about unseting Tcl
+ variables.
+
+Wed Apr 5 00:22:54 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: use a subclass for instantiation except
+ methods take pathname argument. suggested by Evan Phoenix.
+ [ruby-core:7618]
+
+Tue Apr 4 22:15:41 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: remove some obsolete syntax rules (unparenthesized
+ method calls in argument list).
+
+Sat Apr 1 15:11:27 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_TYPE#inspect,
+ WIN32OLE_VARIABLE#inspect
+
+ * remove ext/win32ole/tests/testOLEVARIABLE.rb, testOLETYPE.rb
+ testOLETYPELIB.rb.
+
+ * testall.rb: ditto.
+
+ * add test/win32ole
+
+Fri Mar 31 14:24:55 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_with_index): removed suspicious return
+ statement.
+
+Wed Mar 29 23:06:48 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke): change the behavior of
+ WIN32OLE#[], WIN32OLE#[]=. These methods invoke DISPID_VALUE.
+
+ * ext/win32ole/sample/excel2.rb: ditto.
+
+ * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+
+Wed Mar 29 10:11:31 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_each_char_to_hex, encode_fallback_subchar,
+ e2w_conv): support C90 compiler.
+
+Mon Mar 27 22:45:37 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c, utf8tbl.c}: imported nkf 2.0.6.
+ * Add --ic / --oc option and mapping tables.
+ * Add fallback option.
+ * Add --no-best-fit-chars option.
+ * Fix some bugs.
+
+ * ext/nkf/nkf.c (nkf_split_options): added for parse option string.
+
+ * ext/nkf/lib/kconv.rb (Kconv.to*): add -m0.
+ Note that Kconv.to* still imply -X.
+
+ * ext/nkf/test.rb: Removed. Obsolete by test/nkf.
+
+ * ext/.document: enabled documents in nkf and kconv
+
+ * ext/nkf/nkf.c, ext/nkf/lib/kconv.rb: Add rdoc.
+
+Mon Mar 27 03:17:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): insecure calling should be checked for non
+ NODE_SCOPE method invocations too.
+
+ * eval.c (rb_alias): should preserve the current safe level as
+ well as method definition.
+
+Sun Mar 26 22:02:51 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c: refactoring for options.
+
+ * parse.y: ditto.
+
+Fri Mar 24 21:11:02 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c (match_aref): RDoc description updated.
+
+ * string.c (rb_str_sub): ditto.
+
+ * string.c (rb_str_gsub): ditto.
+
+Fri Mar 24 17:20:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_sleep): remove RDoc description about SIGALRM
+ which is not valid on the current implementation. [ruby-dev:28464]
+
+Thu Mar 23 21:40:47 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c (rb_reg_regsub): prohibit \1, \2 ...\9 in replaced string
+ for named regex pattern.
+
+Thu Mar 23 21:06:23 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.0.2
+
+ * regparse.c: ditto.
+
+ * regcomp.c ditto.
+
+ * regerror.c: ditto.
+
+Thu Mar 23 10:47:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_missing): should support argument splat in
+ super. a bug in combination of super, splat and
+ method_missing. [ruby-talk:185438]
+
+Thu Mar 23 00:01:32 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c (rb_reg_regsub): add back reference by name \k<name> in
+ replace string.
+
+ * re.h: add regexp argument to rb_reg_regsub().
+
+ * string.c (rb_str_sub_bang): ditto.
+
+ * string.c (str_gsub): ditto.
+
+Tue Mar 21 22:14:01 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c (match_alloc): initialize member regexp.
+
+ * re.c (match_aref): add String and Symbol argument. [ruby-dev:28448]
+
+ * re.h: add member regexp to RMatch.
+
+ * gc.c (gc_mark_children): add gc_mark() to regexp member.
+
+Mon Mar 20 12:05:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: Solaris SunPro compiler -rapth patch from
+ <kuwa at labs.fujitsu.com>. [ruby-dev:28443]
+
+Mon Mar 20 11:12:38 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (folevariant_value): could not compile
+ with C90 compiler.
+
+Mon Mar 20 09:40:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: remove enable_rpath=no for Solaris.
+ [ruby-dev:28440]
+
+Sun Mar 19 09:46:30 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata): change behavior
+ of converting OLE Variant object with VT_ARRAY|VT_UI1 and Ruby
+ String object.
+
+ * ext/win32ole/win32ole.c (folevariant_value): ditto.
+
+ * ext/win32ole/tests/testOLEVARIANT.rb: ditto.
+
+Wed Mar 15 16:51:11 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): support libraries without *.so.
+
+Wed Mar 15 16:39:29 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c, ext/openssl/ossl_nsspki.c: should use
+ "rb_str_new(0, 0)" to make empty string.
+
+Sun Mar 12 17:02:10 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(ole_val2olevariantdata): support VT_ARRAY in
+ WIN32OLE_VARIANT.new().
+
+ * ext/win32ole/tests/testOLEVARIANT.rb: ditto.
+
+ * ext/win32ole/tests/testOLEPARAM.rb: test method name should not be
+ duplicated.
+
+Sat Mar 11 14:24:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.1: a clarification patch from David Lutterkort
+ <dlutter at redhat.com>. [ruby-core:7508]
+
+Sun Mar 5 18:40:58 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: do not repeat command options.
+
+Sun Mar 5 18:35:03 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (send_request_with_body): #content_type never
+ return false, use #main_type instead. [ruby-core:07476]
+
+Sat Mar 4 15:26:40 2006 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (id2ref): fix symbol test.
+
+Sat Mar 4 01:08:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc/ri/ri_paths.rb (RI::Paths): adding paths from rubygems
+ directories. a patch from Eric Hodel <drbrain at segment7.net>.
+ [ruby-core:07423]
+
+Fri Mar 3 17:59:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_clear_cache_by_class): clearing wrong cache.
+
+Fri Mar 3 21:22:42 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/fileutils.rb (FileUtils.cp_r): implement :remove_destination
+ option.
+
+ * ext/extmk.rb: use :remove_destination to install extension libraries
+ to avoid SEGV. [ruby-dev:28417]
+
+Fri Mar 3 14:41:04 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/dl/.cvsignore: ignore callback.h.
+
+ * ext/ripper/.cvsignore: ignore eventids2table.c.
+
+ * ext/socket/.cvsignore: ignore constants.h.
+
+Thu Mar 2 18:58:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_fd_writable): should not re-schedule output
+ from KILLED thread (must be error printing).
+
+Thu Mar 2 09:12:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_flatten_bang): allow specifying recursion
+ level. [ruby-talk:182170]
+
+ * array.c (rb_ary_flatten): ditto.
+
+Thu Mar 2 08:02:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (add_heap): a heap_slots may overflow. a patch from Stefan
+ Weil <weil at mail.berlios.de>.
+
+Wed Mar 1 17:13:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): use separate cache for fcall/vcall
+ invocation.
+
+ * eval.c (rb_eval): NODE_FCALL, NODE_VCALL can call local
+ functions.
+
+ * eval.c (rb_mod_local): a new method to specify newly added
+ visibility "local".
+
+ * eval.c (search_method): search for local methods which are
+ visible only from the current class.
+
+ * class.c (rb_class_local_methods): a method to list local methods.
+
+Thu Mar 2 17:54:45 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * gc.c: committed magic for reducing RVALUE size on windows. (24->20byte)
+ [ruby-core:7474]
+
+Thu Mar 2 14:12:26 2006 Tanaka Akira <akr@m17n.org>
+
+ * gc.c: align VALUE with sizeof(RVALUE) globally.
+ (is_pointer_to_heap): check alignment out of loop.
+ (id2ref): avoid collision between symbols and objects.
+ (rb_obj_id): ditto. moved from object.c.
+ [ruby-talk:178364] [ruby-core:7305]
+
+Thu Mar 2 12:55:16 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (filetime_to_unixtime): should set tm_isdst to -1.
+ stat() didn't treat daylight saving time property on WinNT.
+ [ruby-talk:182100]
+
+Wed Mar 1 00:15:51 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/rdoc/parsers/parse_rb.rb (read_escape): could not handle /\^/.
+ merged Mr. Ishizuka's lib/irb/ruby-lex.rb 's patch rev 1.29.
+ [ruby-talk:181631] [ruby-dev:28404]
+
+Tue Feb 28 19:32:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): add BasicObject class as a top level
+ BlankSlate class.
+
+Mon Feb 27 00:19:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (SYM2ID): should not cast to signed long.
+ [ruby-core:07414]
+
+Fri Feb 24 20:21:38 2006 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/drbtest.rb (add_service_command): quote pathnames in the
+ server's command line for space contained directory names.
+ Thanks, arton. [ruby-dev:28386]
+
+Fri Feb 24 12:10:07 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: install *.exe.manifest and *.dll.manifest if exist.
+ It's for VC++8.
+
+Fri Feb 24 11:17:45 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (NtInitialize): need to set a handler for VC++8.
+
+Thu Feb 23 22:39:59 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: use borlndmm.dll if possible. bcc32's RTL internal
+ memory manager cannot handle large memory block properly.
+ ex: 10000.times { "" << "." * 529671; GC.start } # crash
+ [ruby-dev:28230]
+
+Thu Feb 23 13:23:03 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * eval.c (SETUP_ARGS0): fixed memory corruption. [ruby-dev:28360]
+
+Wed Feb 22 21:16:55 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#each_filename): use split_names properly.
+
+Wed Feb 22 16:24:05 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/webrick/test_cgi.rb: should support platforms which search
+ library path from the interpreter's path.
+ And, support test without install incidentally.
+
+Wed Feb 22 14:21:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bignorm): x may not be a bignum. [ruby-dev:28367]
+
+Wed Feb 22 09:22:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_alloc): add proper check for creation of a lambda
+ without a block.
+
+Tue Feb 21 02:07:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_arglist): should set command_start = Qtrue for
+ command body. [ruby-talk:180648]
+
+Mon Feb 20 22:30:17 2006 Tanaka Akira <akr@m17n.org>
+
+ * mkconfig.rb: alias Config to RbConfig for compatibility.
+
+Mon Feb 20 18:21:41 2006 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_reopen): flush before reopening a file.
+ reported by Mathieu Bouchard. [ruby-core:7396]
+
+Mon Feb 20 17:29:50 2006 Tanaka Akira <akr@m17n.org>
+
+ * mkconfig.rb: generate RbConfig instead of Config.
+
+ * instruby.rb, rubytest.rb, runruby.rb, bcc32/Makefile.sub,
+ ext/extmk.rb, ext/dl/extconf.rb, ext/iconv/charset_alias.rb,
+ lib/mkmf.rb, lib/rdoc/ri/ri_paths.rb,
+ lib/webrick/httpservlet/cgihandler.rb,
+ test/dbm/test_dbm.rb, test/gdbm/test_gdbm.rb,
+ test/ruby/envutil.rb, test/soap/calc/test_calc_cgi.rb,
+ test/soap/header/test_authheader_cgi.rb, test/soap/ssl/test_ssl.rb,
+ win32/mkexports.rb, win32/resource.rb: Use RbConfig instead of
+ Config.
+
+Mon Feb 20 13:46:19 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/find.rb: should raise ENOENT if root entry does not exist,
+ without opening it. [ruby-dev:28345]
+
+Mon Feb 20 12:27:53 2006 Kent Sibilev <ksruby@gmail.com>
+
+ * lib/rational.rb (Integer::gcd): small typo fix.
+ [ruby-core:07395]
+
+Mon Feb 20 10:03:59 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get_0): Object should have been the lowest
+ in const lookup precedence. [ruby-dev:28343]
+
+Mon Feb 20 09:17:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator): should not delegate "funcall".
+
+Mon Feb 20 09:13:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb (WEBrick::HTTPServlet::CGIHandler):
+ qualify the access for Config constant. [ruby-dev:28338]
+
+ * lib/resolv.rb (Resolv::DNS::Resource::IN::A): qualify
+ ClassValue. [ruby-dev:28338]
+
+Mon Feb 20 01:05:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rational.rb (Integer::gcd): replaced by gcd4 in
+ [ruby-core:07390]. [ruby-core:07377]
+
+Mon Feb 20 00:57:02 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.h (OSSL_Debug): should not use __func__.
+ [ruby-dev:28339]
+
+Mon Feb 20 00:13:49 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: add :ssl_verify_mode option.
+ suggested by Will Glynn.
+
+ * lib/open-uri.rb: add :ssl_ca_cert option.
+
+Sun Feb 19 04:46:29 2006 Guy Decoux <ts@moulon.inra.fr>
+
+ * eval.c: initial value for block_unique must be 1.
+ [ruby-talk:180420]
+
+Sat Feb 18 23:58:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tracer.rb (Tracer::Tracer.add_filter): turn on tracer mode
+ only when caller() level size is one. [ruby-core:07389]
+
+ * lib/rdoc/parsers/parse_rb.rb: need not to require "tracer".
+ [ruby-core:07389]
+
+ * sample/rtags.rb: ditto.
+
+Sat Feb 18 21:16:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_obj_instance_eval): RDoc description updated. a
+ patch from Ozgur Murat Homurlu <ozgurmurath at gmail.com>.
+ [ruby-core:07381]
+
+Sat Feb 18 01:01:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get_0): skip ruby_wrapper in const search
+ to give it lower priority (just above Object). need not to
+ change rb_const_defined_0() since it's only a precedence matter;
+ they are defined anyway.
+
+Sat Feb 18 00:22:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tracer.rb: merged a minor clarification patch from Daniel
+ Berger <Daniel.Berger at qwest.com>. [ruby-core:07376]
+
+Fri Feb 17 17:30:20 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_get): simplified using rb_const_get_fallback().
+
+ * eval.c (ev_const_defined): adopt to ev_const_get() using
+ rb_const_defined_fallback().
+
+ * variable.c (rb_const_get_fallback): new function to implement
+ constant search.
+
+ * variable.c (rb_const_defined_fallback): new function to
+ implement constant definition check.
+
+ * variable.c (rb_const_get_0): adopt to new behavior. constants
+ are looked up in the order of: current class, super classes (but
+ Object), lexically external classes/modules, and Object.
+
+ * variable.c (rb_const_defined_0): ditto.
+
+Fri Feb 17 11:20:53 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.c (ruby_strtod): Float("1e") should fail. [ruby-core:7330]
+
+ * pack.c (EXTEND32): unpack("l") did not work where sizeof(long) != 4.
+ [ruby-talk:180024]
+
+ * pack.c (pack_unpack): fixed integer overflow on template "w".
+ [ruby-talk:180126]
+
+Fri Feb 17 09:39:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_wait_for): sleep should always sleep for
+ specified amount of time. [ruby-talk:180067]
+
+Wed Feb 15 16:52:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): NODE_OP_ASGN1 should allow splat in its
+ argument list. [ruby-core:07366]
+
+ * parse.y (arg): avoid unnecessary extra argument.
+ [ruby-core:07366]
+
+ * eval.c (rb_eval): honor visibility on OP_ASGN1 and
+ OP_ASGN2. [ruby-core:07366]
+
+Wed Feb 15 15:20:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_line): remove void control path. [ruby-dev:28335]
+
+Wed Feb 15 10:09:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (yield_under_i): should not pass self as an argument to
+ the block for instance_eval. [ruby-core:07364]
+
+Wed Feb 15 09:20:35 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_obj_instance_eval): should be no singleton classes for
+ true, false, and nil. [ruby-dev:28186]
+
+Tue Feb 14 20:26:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_each): return self if no block is
+ given. [yarv-dev:882]
+
+Tue Feb 14 18:48:33 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (DMETHOD_P): accessing wrong frame. [ruby-dev:28181]
+
+ * eval.c (proc_invoke): preserve FRAME_DMETH flag.
+
+Tue Feb 14 15:15:22 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/zlib/zlib.c: suppress warning on test/zlib. [ruby-dev:28323]
+
+Tue Feb 14 13:47:22 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_utime): drop read-only attribute before
+ changing file time.
+
+Tue Feb 14 13:38:01 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): should define HAVE_LONG_LONG with
+ VC++8.
+
+Tue Feb 14 11:42:38 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (search_time_t): support non 32bit time_t environments.
+
+ * win32/Makefile.sub (config.h): VC++8 has ``long long'' type.
+
+ * win32/Makefile.sub (config.h): VC++8's time_t is 64bit value.
+
+Mon Feb 13 18:01:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (copy_node_scope): remove duplicated semicolons at end.
+ a patch from KIMURA Koichi <kimura.koichi at canon.co.jp>.
+ [ruby-dev:28332]
+
+ * eval.c (VIS_MODE): remove unnecessary argument.
+ [ruby-dev:28332]
+
+Mon Feb 13 13:49:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_parse_string): mention "regexp" in a error
+ message. a patch from Mauricio Fernandez <mfp at acm.org>
+ [ruby-core:07340]
+
+Mon Feb 13 00:01:32 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.0.1
+
+ * regparse.c (onig_free_shared_cclass_table): fix memory leaks.
+
+ * regcomp.c (optimize_node_left): change from IS_POSIXLINE() to IS_MULTILINE().
+
+ * regint.h: rename ANCHOR_ANYCHAR_STAR_PL to ANCHOR_ANYCHAR_STAR_ML.
+
+ * regparse.h: ditto.
+
+ * regexec.c: ditto.
+
+Sat Feb 11 21:57:29 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE.create_guid.
+
+ * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+
+Sat Feb 11 01:57:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_autoload): check if ruby_cbase is nil (during
+ instance_eval for objects cannot have singleton classes,
+ e.g. fixnums and symbols). [ruby-dev:28178]
+
+Fri Feb 10 12:31:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should support NODE_ZSUPER in NODE_ITER.
+ [ruby-dev:28326]
+
+ * eval.c (ZSUPER_ARGS): support macro.
+
+Wed Feb 8 10:26:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while
+ invoking finalizers.
+
+ * gc.c (rb_gc_finalize_deferred): ditto.
+
+Tue Feb 7 23:03:13 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/zlib/zlib.c: should not access ruby objects in finalizer.
+ [ruby-dev:28286]
+
+Tue Feb 7 18:42:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_write_error2): use fwrite(3) if rb_stderr is not
+ updated or is already freed. [ruby-dev:28313]
+
+Mon Feb 6 16:02:51 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_thread_flock): ERROR_NOT_LOCKED is not an error on Cygwin.
+ In such situation, flock() should return 0.
+
+Mon Feb 6 14:36:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_line): include the class name of a surrounding
+ method in error position description.
+
+Mon Feb 6 00:14:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_find_index): a new method Enumerable#find_index.
+ [ruby-talk:178495]
+
+Sun Feb 5 23:29:31 2006 Tanaka Akira <akr@m17n.org>
+
+ * ruby.h (struct RStruct): embed 3 or less elements structs.
+ (RSTRUCT_LEN): defined for accessing struct members.
+ (RSTRUCT_PTR): ditto.
+
+ * struct.c: use RSTRUCT_LEN and RSTRUCT_PTR.
+ (struct_alloc): allocate small structs in embedded format.
+ (rb_struct_init_copy): ditto.
+
+ * gc.c (gc_mark_children): use RSTRUCT_LEN and RSTRUCT_PTR.
+ (obj_free): ditto.
+
+ * marshal.c (w_object): use RSTRUCT_LEN and RSTRUCT_PTR.
+
+Sun Feb 5 21:01:49 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * numeric.c (fix_to_s): removed workaround for radix 2. Historically,
+ rb_fix2str could only handle radix 8, 10, 16. (Rev1.37) But for now,
+ it can handle radix 2..36. [ruby-Bugs#3438] [ruby-core:7300]
+
+Sun Feb 5 18:49:00 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (add_field, get_fields): keep 1.8.2
+ compatibility. This patch is contributed by Rob Pitt.
+
+Sun Feb 5 16:33:50 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/mkmf.rb (create_makefile): Kernel#sub! was removed on HEAD.
+
+Sun Feb 5 14:26:54 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/pstore.rb: should return default value if name is not found.
+ [ruby-core:7304]
+
+ * lib/pstore.rb: should raise PStore::Error if not in transaction.
+
+Sat Feb 4 22:51:43 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c: apply the FreeBSD getcontext/setcontext workaround
+ only before FreeBSD 7-CURRENT.
+
+Sat Feb 4 21:10:06 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (LK_ERR): ERROR_NOT_LOCKED is not an error.
+ In such situation, flock() should return 0.
+
+Sat Feb 4 15:52:56 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * numeric.c (fix_to_s): (2**32).to_s(2) fails with exception where
+ sizeof(int) == 4 < sizeof(long). [ruby-core:7300]
+
+Sat Feb 4 15:02:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * oniguruma.h: merge Oniguruma 4.0.0 [ruby-dev:28290]
+
+Fri Feb 3 19:25:53 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ruby.h: fixed prototype.
+
+ * ext/syck/rubyext.c: defined symbol ID as global variable as others.
+
+Fri Feb 3 17:57:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: unify ruby_class (for method definition) and ruby_cbase
+ (for constant reference).
+
+Fri Feb 3 15:02:10 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/syck.c (syck_move_tokens): should reset p->cursor or etc
+ even if skip == 0. This causes buffer overrun.
+ (ex: YAML.load('--- "..' + '\x82\xA0' * 511 + '"'))
+
+Fri Feb 3 00:01:31 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/emitter.c (syck_emitter_write): should not set '\0' on
+ emitter's marker. if marker points to the end of buffer, this is
+ buffer overrun. (ex: YAML.dump("." * 12288))
+
+Thu Feb 2 17:13:01 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser#get_tk): added
+ support of :'string' style Symbol.
+
+Thu Feb 2 16:01:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): use TMP_ALLOC() instead of allocating
+ a temporary array object.
+
+ * eval.c (eval): need not to protect $SAFE value.
+ [ruby-core:07177]
+
+ * error.c (Init_Exception): change NameError to direct subclass of
+ Exception so that default rescue do not handle it silently.
+
+Thu Feb 2 14:45:53 2006 Ville Mattila <ville.mattila@stonesoft.com>
+
+ * configure.in: The isinf is not recognized by autoconf
+ library guesser on solaris 10. [ruby-core:7138]
+
+Wed Feb 1 22:01:47 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * configure.in, hash.c (ruby_setenv): use setenv(3) and unsetenv(3)
+ where they are supported. modifying environ variable seems to
+ segfault solaris 10. [ruby-core:7276] [ruby-dev:28270]
+
+ * ruby.c (set_arg0): if use setenv(3), environ space cannot be used
+ for altering argv[0].
+
+Tue Jan 31 14:46:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_select): update RDoc description.
+ [ruby-core:7254]
+
+Tue Jan 31 11:58:51 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: add MultiTkIp#eval and bg_eval.
+
+ * ext/tk/lib/tk/namespace.rb: TkNamespace#eval was enbugged at the
+ last commit. Now it will return a proper object.
+
+Tue Jan 31 08:07:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_upto): return an enumerator if no block is
+ attached to the method.
+
+ * numeric.c (int_downto): ditto.
+
+ * numeric.c (int_dotimes): ditto.
+
+ * enum.c (enum_first): new method Enumerable#first to take first n
+ elements from an enumerable.
+
+ * enum.c (enum_group_by): new method Enumerable#group_by that
+ groups enumerable values according to their block values.
+
+Tue Jan 31 00:08:22 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (syck_resolver_transfer): workaround for SEGV.
+ ex: ruby -ryaml -e 'YAML.load("!map:B {}")' [ruby-core:7217]
+
+Sat Jan 28 07:49:30 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/rdoc/usage.rb: support "a:0:33" style caller[-1]. In this case
+ file name is "a:0". I don't know this really happens though...
+ [ruby-Bugs:3344]
+
+Thu Jan 26 15:55:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: turn on do_not_reverse_lookup by default.
+
+Wed Jan 25 22:29:04 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, dln.c, file.c, intern.h, missing.h (eaccess): use
+ system routine if provided. fixed: [ruby-core:07195]
+
+Sun Jan 22 23:27:13 2006 Go Noguchi <gonoguti@yahoo.co.jp>
+
+ * lib/test/unit/autorunner.rb (process_args): ignore arguments after
+ '--' so that test scripts can handle them. fixed: [ruby-dev:28258]
+
+Sun Jan 22 22:09:52 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (POST_GETCONTEXT): define separately from PRE_GETCONTEXT on
+ IA64 to avoid reusing variable address.
+
+Sun Jan 22 20:03:35 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (ruby_setjmp): define PRE_GETCONTEXT and POST_GETCONTEXT
+ instead of FUNCTION_CALL_MAY_RETURN_TWICE.
+ define PRE_GETCONTEXT to clear carry flag for workaround of
+ FreeBSD/i386 getcontext/setcontext bug.
+ [ruby-dev:28263]
+
+Thu Jan 19 22:19:18 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mv): should remove file after copying.
+ [ruby-dev:28223]
+
+Wed Jan 18 23:37:06 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): don't clobber %l7 of SPARC
+ if enable-shared.
+ (ruby_setjmp): call FUNCTION_CALL_MAY_RETURN_TWICE after getcontext
+ too.
+ reported by Pav Lucistnik and Marius Strobl.
+ http://lists.freebsd.org/pipermail/freebsd-sparc64/2006-January/003739.html
+
+Tue Jan 17 23:59:56 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_get, rb_mod_const_defined): added optional
+ flag to search ancestors, which is defaulted to true.
+ fixed: [ruby-talk:175899]
+
+ * eval.c (rb_mod_method_defined): ditto.
+
+Tue Jan 17 11:31:47 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak (MAKE): workaround for nmake 8.
+
+Tue Jan 17 11:06:19 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: invoke .bat via shell. workaround for nmake 8.
+
+Mon Jan 16 10:13:38 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/emitter.c (syck_emit_seq, syck_emit_map, syck_emit_item):
+ should output complex key mark even if map's key is empty seq/map.
+ [ruby-core:7129]
+
+Sat Jan 14 03:38:54 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * file.c (rb_file_s_chmod): avoid warning where sizeof(int) !=
+ sizeof(void*).
+
+Fri Jan 13 19:26:15 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/rdoc/diagram.rb:
+ - properly quote bare element attributes
+ - terminates dangling elements (e.g. <img>, <br>, <link>, etc)
+ - converts "CVS" to the more HTML-friendly acronym element
+ - adds missing type attributes to style elements
+
+ based on Paul Duncan's patch <pabs@pablotron.org> [ruby-core:7028]
+
+ * lib/rdoc/generators/html_generator.rb: ditto.
+ * lib/rdoc/generators/template/html/hefss.rb: ditto.
+ * lib/rdoc/generators/template/html/html.rb: ditto.
+ * lib/rdoc/generators/template/html/kilmer.rb: ditto.
+
+Thu Jan 12 11:53:08 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkballoonhelp.rb: [bug fix] couldn't add to a widget
+ which is constructed with TkComposite module.
+ [new feature] support 'command' option which is called just before
+ popping up the balloon help.
+
+Wed Jan 11 00:12:29 2006 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (ERB::Compiler): add instance variable @insert_cmd to
+ change <%='s behavior.
+
+Tue Jan 10 19:42:33 2006 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (garbage_collect): mark ruby_current_node.
+ if an exception is raised in a finalizer written in C called by
+ rb_gc_call_finalizer_at_exit, ruby_set_current_source may use
+ collected ruby_current_node and mark_source_filename may corrupt
+ memory.
+
+Tue Jan 10 13:30:34 2006 akira yamada <akira@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_resolver_transfer): should be able to load
+ !ruby/object:Bignum syntax 1.8.3 dumped. [ruby-core:6159]
+
+Tue Jan 10 12:47:41 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/yaml/rubytypes.rb (Fixnum): Bignum could not be loaded in
+ ruby 1.8.3/1.8.4. [ruby-core:6115]
+
+ * lib/yaml/rubytypes.rb (Numeric): Subclass of Numeric could not
+ be dumped properly. [ruby-core:7047]
+
+Tue Jan 10 12:00:48 2006 Aaron Schrab <aaron @nospam@ schrab.com>
+
+ * lib/yaml/rubytypes.rb (Symbol#yaml_new): YAML loading of quoted
+ Symbols broken. [ruby-Bugs:2535]
+
+Tue Jan 10 07:26:52 2006 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (gc_stress): renamed from always_gc and enabled by default.
+ (gc_stress_get): new function for GC.stress.
+ (gc_stress_set): new function for GC.stress=.
+
+Mon Jan 9 19:58:56 2006 arton <artonx@yahoo.co.jp>
+
+ * ext/zlib/extconf.rb: zlib compiled DLL version 1.2.3 distributed by
+ http://www.zlib.net/ has zdll.lib. [ruby-dev:28209]
+
+Mon Jan 9 14:25:00 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/Makefile.sub (OPTFLAGS): I have experienced trouble on y- flag,
+ (VisualC++6) so use -O2b2xg- if $(MSC_VER) < 1400. [ruby-core:7040]
+
+Mon Jan 9 14:25:00 2006 Kero van Gelder <rubyforge @nospam@ kero.tmfweb.nl>
+
+ * lib/webrick/httpservlet/filehandler.rb: fixed typo. [ruby-core:7075]
+
+Sun Jan 8 14:15:27 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (GCC_VERSION_BEFORE): check __INTEL_COMPILER.
+ Intel C++ Compiler defines __GNUC__.
+ http://www.intel.com/software/products/compilers/clin/docs/ug_cpp/lin1077.htm
+
+Sat Jan 7 15:40:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (singleton): get rid of segfault on syntax error.
+ fixed: [ruby-core:07070]
+
+Sat Jan 7 06:24:18 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_fd_isset): compare the result of FD_ISSET with 0 to
+ avoid FreeBSD bug. FreeBSD defines FD_ISSET as just a bitmap of
+ unsigned long. So returning the value from rb_fd_isset discards
+ upper 32bits on LP64 environment.
+ http://www.freebsd.org/cgi/query-pr.cgi?pr=ia64/91421
+
+Fri Jan 6 02:20:18 2006 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: don't force getcontext on IA64.
+
+ * eval.c (ruby_setjmp): add an argument for just before getcontext.
+ (THREAD_SAVE_CONTEXT): call rb_thread_save_context just
+ before getcontext.
+ [ruby-dev:28205]
+
+Sun Jan 1 15:28:46 2006 Tanaka Akira <akr@m17n.org>
+
+ * missing.h (isinf): avoid macro expansion
+ "extern int isinf(double);" to
+ "extern int ((sizeof(double)==sizeof(float))?_Isinff(double):_Isinf(double));" on
+ HP-UX.
+
+Sun Jan 1 14:42:54 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_seekdir): should not segfault even if passed
+ the location which rb_w32_telldir didn't return. (and should change
+ `bits' position) [ruby-core:7035]
+
+ * win32/dir.h: ditto. (stores `loc' instead of `bitpos')
+
+ * test/ruby/test_dir.rb: added.
+
+Sat Dec 31 22:57:00 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_save_context): should not recycle scope object used
+ in a thread. fixed: [ruby-dev:28177]
+
+Sat Dec 31 19:50:38 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c: attribute name was truncated with Rev1.64.
+
+Sat Dec 31 11:53:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/generator.rb: (Generator#initialize): should kill @loop_thread
+ before starting new thread. (occurs when called via Generator#rewind)
+ [ruby-dev:28184]
+
+Fri Dec 30 18:22:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (garbage_collect): mark objects referred from aborting threads.
+ [ruby-dev:28190]
+
+ * win32/Makefile.sub: VC++8 support.
+
+Fri Dec 30 15:17:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/generator.rb (Generator#initialize): ensured to stop @loop_thread.
+ Mr. Tanaka pointed out one Thread.pass is not enough. [ruby-dev:28185]
+
+Fri Dec 30 12:20:57 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/generator.rb (Generator#initialize): fixed dead lock. this occurred
+ when end? was called before @loop_thread was stopped. [ruby-core:7029]
+
+Fri Dec 30 01:04:52 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/generator.rb: should work with another thread. (more robust code)
+ [ruby-dev:28177]
+
+Thu Dec 29 23:59:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_gc_mark_threads): keep unmarked threads which won't wake
+ up alone, and mark threads in the loading table. [ruby-dev:28154]
+
+ * eval.c (rb_gc_abort_threads), gc.c (gc_sweep): kill unmarked
+ threads. [ruby-dev:28172]
+
+Thu Dec 29 17:02:07 2005 Tanaka Akira <akr@m17n.org>
+
+ * test/ruby/envutil.rb (EnvUtil.rubybin): search "ruby" instead of
+ "miniruby". [ruby-dev:28140]
+
+Thu Dec 29 14:35:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_define_method): should save safe_level in the
+ proc object. [ruby-dev:28146]
+
+Thu Dec 29 11:22:34 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/generator.rb: reimplemented Generator class with Thread instead of
+ callcc, in order to fix memory leak. [ruby-dev:28142]
+
+Wed Dec 28 14:10:05 2005 Tanaka Akira <akr@m17n.org>
+
+ * ia64.s: remove .pred.safe_across_calls directive.
+ reported by WATANABE Tetsuya. [ruby-dev:28141]
+
+Wed Dec 28 01:32:39 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (struct thread): add bstr_max.
+ (rb_thread_save_context): use realloc instead of REALLOC_N
+ to avoid GC.
+
+Tue Dec 27 23:59:53 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (CompletingHash#match): fix for 1.9.
+
+Tue Dec 27 16:59:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/drb/drbtest.rb (DRbService::self.ext_service): increase
+ timeout limit. a patch from Kazuhiro NISHIYAMA
+ <zn at mbf.nifty.com>. [ruby-dev:28132]
+
+Tue Dec 27 14:17:55 2005 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: define IA64 for portability. (HP aC++/ANSI C doesn't
+ define __ia64__.)
+ don't check libunwind stuff.
+ check __libc_ia64_register_backing_store_base.
+
+ * defines.h: declare rb_ia64_bsp and rb_ia64_flushrs.
+ (flush_register_windows): call rb_ia64_flushrs on IA64.
+
+ * ia64.s: new file for IA64.
+ it is separated from C program files because
+ Intel C++ Compiler for IA64 doesn't support inline assembly.
+
+ * common.mk (ia64.$(OBJEXT)): new target.
+
+ * ruby.h (RUBY_INIT_STACK): defined.
+ (ruby_init_stack): declared for RUBY_INIT_STACK.
+
+ * main.c (main): precedes RUBY_INIT_STACK before ruby_init.
+
+ * gc.c (rb_gc_register_stack_start): new global variable on IA64.
+ (garbage_collect): simplify register stack marking code.
+ don't use libunwind.
+ (Init_stack): initialize rb_gc_register_stack_start.
+ (ruby_init_stack): new function for RUBY_INIT_STACK.
+
+ * eval.c (struct thread): add bstr_pos member for original position of
+ register stack.
+ (rb_thread_save_context): simplify register stack saving code.
+ don't use libunwind.
+ (rb_thread_restore_context_0): new function. moved from
+ rb_thread_restore_context except the stack position checking code.
+ don't use libunwind for IA64 register stack.
+ (register_stack_extend): new function.
+ (stack_extend): make it self-recursive with
+ the stack position checking code in old rb_thread_restore_context.
+ (rb_thread_restore_context): just call stack_extend.
+ (flush_register_windows): removed.
+
+ [ruby-dev:28127]
+
+Tue Dec 27 14:09:39 2005 Minero Aoki <aamine@loveruby.net>
+
+ * process.c: new method Process.exec. [ruby-dev:28107]
+
+Tue Dec 27 08:22:15 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLSocket#post_connection_check):
+ treat wildcard character in commonName. [ruby-dev:28121]
+
+Mon Dec 26 08:50:36 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_get): fixed a bug in constant reference during
+ instance_eval. [yarv-dev:707]
+
+ * eval.c (ev_const_defined): ditto.
+
+ * lib/yaml.rb (YAML::add_domain_type): typo fixed. a patch from
+ Joel VanderWerf <vjoel at path.berkeley.edu>.
+ [ruby-talk:165285] [ruby-core:6995]
+
+Fri Dec 23 10:30:23 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/digest/sha2/sha2.c (ULL): support AIX C. a patch from
+ Kailden <kailden at gmail.com>. [ruby-core:06984]
+
+Wed Dec 21 16:47:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * file.c (w32_io_info): should return handle because FileIndex is
+ valid only while file is open. [ruby-dev:28088]
+
+Wed Dec 21 12:12:21 2005 Tanaka Akira <akr@m17n.org>
+
+ * test/pathname/test_pathname.rb (test_kernel_open): use
+ File.identical?.
+ [ruby-talk:171804]
+
+Tue Dec 20 22:41:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (eval_under_i): evaluate source in caller's frame.
+ [ruby-dev:28076]
+
+Tue Dec 20 12:53:23 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_emitter_reset): to ensure compatibility
+ with previous Ruby versions, documents are no longer headless.
+
+Tue Dec 20 12:33:01 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (syck_node_transform): ruby object holding
+ explicitly freed SyckNode caused SEGV. [ruby-dev:28067]
+
+ ... I think syck GC problem was solved now!
+
+Tue Dec 20 01:46:48 2005 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_f_backquote): fix a GC problem on
+ IA64 with gcc 4.0.3 20051216 (prerelease) -O3.
+
+Mon Dec 19 23:32:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (XCFLAGS): separated as well as win32/Makefile.sub.
+
+ * main.c (always_gc): dllimport is required for VC to import a DLL
+ symbol. fixed: [ruby-dev:28051]
+
+ * parse.y (rb_symname_p): fixed wrong validation. [ruby-dev:28047]
+
+Mon Dec 19 23:09:24 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * st.c: uses malloc instead of xmalloc to avoid GC. syck uses st_insert
+ in gram.c to insert node from rb_syck_bad_anchor_handler into
+ SyckParser's hash table. if GC occurs in st_insert, it's not under
+ SyckParser's mark system yet. so RString can be released wrongly.
+
+ * ext/syck/syck.h (S_FREE): small hack. no need to check if pointer is
+ NULL or not before S_FREE.
+
+ * ext/syck/rubyext.c (syck_parser_assign_io): rb_check_string_type can
+ return new RString. if so, it becomes unreachable from GC after
+ returns syck_parser_assign_io, and can be freed by GC. (dangling
+ in syck io system) so extends its life time till syck_parse is called.
+
+ * ext/syck/rubyext.c (syck_parser_s_alloc): always allocates bonus,
+ so no need to check if NULL, and "volatile VALUE hash"
+ is not needed. (bonus->port was not protected in syck_emitter_reset)
+
+ * ext/syck/rubyext.c (syck_mark_parser): ditto.
+
+ * ext/syck/rubyext.c (syck_parser_load): ditto.
+
+ * ext/syck/rubyext.c (syck_parser_load_documents): ditto.
+
+ * ext/syck/rubyext.c (syck_emitter_s_alloc): ditto.
+
+ * ext/syck/rubyext.c (syck_mark_emitter): ditto.
+
+ * ext/syck/rubyext.c (syck_emitter_reset): ditto.
+
+ * ext/syck/rubyext.c (syck_scalar_value_set): "should set newly
+ allocated memory instead of RString's internal storage" stuff again.
+ by this, should call syck_free_node instead of rb_syck_free_node.
+
+ * ext/syck/rubyext.c (syck_node_type_id_set): ditto.
+
+ ... I believe syck GC problem was solved by this.
+
+Mon Dec 19 12:20:59 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): activate only
+ before gcc 4.0.3 on SPARC and IA64.
+
+Mon Dec 19 11:37:47 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c: sorry, I reverted my "should set newly
+ allocated memory instead of RString's internal storage" stuff.
+ node allocated in rubyext.c seems to be freed by rb_syck_free_node
+ not syck_free_node, and it won't free data.str->ptr and type_id.
+
+ (I still think this is unsafe because RString(foo)->ptr becomes
+ dangling pointer when RString is modified or freed, but anyway
+ I misunderstood, so go back to original code for now)
+
+Sat Dec 17 21:50:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (syck_emitter_reset): should initialize
+ emitter->bonus->oid. otherwise rb_gc_mark crashes.
+
+ * ext/syck/rubyext.c (syck_mark_parser): should mark anchor nodes
+ because they hold ruby objects. (ie: rb_syck_bad_anchor_handler)
+
+Sat Dec 17 11:00:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (rb_syck_compile): avoid potential memory
+ leak.
+
+ * ext/syck/rubyext.c (syck_set_ivars): avoid potential memory
+ leak by explicit symbol allocation.
+
+Sat Dec 17 03:57:01 2005 Tanaka Akira <akr@m17n.org>
+
+ * bignum.c (rb_big_rshift): fix a GC problem on
+ IA64 with gcc 4.0.3 20051216 (prerelease).
+
+Sat Dec 17 03:30:23 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (bmcall): fix a GC problem by tail call on
+ IA64 with gcc 4.0.3 20051216 (prerelease).
+
+Fri Dec 16 17:53:45 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (rb_syck_compile): fixed memory leak.
+
+ * ext/syck/rubyext.c: should protect global variable from GC.
+
+Fri Dec 16 11:44:43 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (syck_resolver_tagurize): fixed memory leak.
+
+ * ext/syck/rubyext.c (syck_node_type_id_set): should set newly
+ allocated memory instead of RString's internal storage.
+
+ * ext/syck/rubyext.c (syck_scalar_value_set): ditto.
+
+ ... these fixes won't fix [ruby-dev:27839]. more work is needed.
+
+Fri Dec 16 04:38:55 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator::method_missing): should delegate
+ block as well.
+
+Thu Dec 15 19:57:12 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::MorphingBody): fix criteria to
+ use Tempfile. A fix from Zev Blut <rubyzbibd at ubit.com>.
+ [ruby-core:06076]
+
+ * string.c: remove global functions work on $_.
+
+Thu Dec 15 12:35:14 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tmpdir.rb: merged RDoc patch from Eric Hodel <drbrain at
+ segment7.net>. [ruby-core:06894]
+
+Thu Dec 15 01:33:31 2005 Tanaka Akira <akr@m17n.org>
+
+ * ext/zlib/zlib.c (zstream_run): fix a GC problem by tail call on
+ x86_64 with gcc 4.0.3 20051111 (prerelease) (Debian 4.0.2-4)
+
+Wed Dec 14 23:50:20 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_c.rb (find_class_comment): fix for class
+ document with prototypes. [ruby-core:06863]
+
+Wed Dec 14 23:39:53 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (has_magic): glob names contain alphabets to enable case fold
+ search. [ruby-dev:27735]
+
+ * dir.c (Init_Dir): FNM_SYSCASE which is default case fold flag.
+ [ruby-dev:23296]
+
+Wed Dec 14 12:01:26 2005 Tanaka Akira <akr@m17n.org>
+
+ * marshal.c (r_object0): fix a GC problem for reading a bignum on
+ IA64 with gcc 3.3.5 (Debian 1:3.3.5-13).
+
+Tue Dec 13 12:23:47 2005 Tanaka Akira <akr@m17n.org>
+
+ * re.c (rb_reg_regcomp): fix a GC problem on x86_64 with
+ gcc 3.3.5 (Debian 1:3.3.5-13).
+
+Tue Dec 13 01:44:16 2005 Tanaka Akira <akr@m17n.org>
+
+ * array.c (rb_ary_diff): fix a GC problem on IA64 with
+ gcc 3.3.5 (Debian 1:3.3.5-13).
+ When rb_ary_push is called, there was no register which contains
+ `hash' but `&RHASH(hash)->tbl' instead.
+
+Tue Dec 13 00:08:09 2005 Tanaka Akira <akr@m17n.org>
+
+ * sprintf.c (rb_str_format): fix a GC problem.
+ [ruby-dev:28001]
+
+Mon Dec 12 15:51:22 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/openssl/test_ssl.rb (test_parallel): call GC.start to close
+ unused files. [ruby-dev:27981]
+
+Mon Dec 12 09:58:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_cover): new method Range#cover? added. the
+ method name might be changed. thanks to takano32 at
+ http://www.rubyist.net/~matz/20051210.html#c08 for name
+ suggestion. [ruby-talk:167182]
+
+Mon Dec 12 00:33:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/digest/digest.c (rb_digest_base_s_digest): add volatile to
+ protect temporary context object. [ruby-dev:27979]
+
+ * ext/iconv/iconv.c (Init_iconv): rb_gc_register_address() should
+ be called before actual variable initialization.
+ [ruby-dev:27986]
+
+Sun Dec 11 23:54:07 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/*: update to support libraries in ActiveTcl8.4.12.0
+ (see ext/tk/ChangeLog.tkextlib).
+
+ * ext/tk/sample/scrollframe.rb: add a new sample.
+
+Sun Dec 11 22:07:58 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb (test_remote_array_and_hash): pseudo remote
+ objects are protected against GC. [ruby-dev:27911]
+
+Sat Dec 10 01:06:06 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/matrix.rb: add Matrix#determinant_e, Matrix#rank_e.
+ [ruby-dev:27820] and related thread.
+
+Sat Dec 10 00:31:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (calling_scope_t): gave names to magic numbers for rb_call().
+ [ruby-dev:27978]
+
+Fri Dec 9 23:31:02 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rexml/encoding.rb (encoding=): give priority to particular
+ conversion to iconv. [ruby-core:06520]
+
+Fri Dec 9 23:16:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_include): return false unless included in numeric
+ range. fixed: [ruby-dev:27975]
+
+Thu Dec 8 02:07:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (umethod_bind): adjust invoking class for module method.
+ [ruby-dev:27964]
+
+Thu Dec 8 00:40:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (call_trace_func): klass parameter should be a
+ class/module that defines calling method. [ruby-talk:169307]
+
+Wed Dec 7 17:10:27 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * sprintf.c (rb_f_sprintf): [ruby-dev:27967]
+
+Wed Dec 7 16:39:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_include): use discrete membership for non Numeric
+ values, for example, String.
+
+ * numeric.c (num_scalar_p): new method. [ruby-dev:27936]
+
+ * lib/complex.rb (Complex#scalar?): ditto.
+
+Wed Dec 7 15:31:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): integer overflow check added.
+
+ * sprintf.c (GETASTER): ditto.
+
+Wed Dec 7 01:02:04 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/README.macosx-aqua: [new document] tips to avoid the known
+ bug on platform specific dialogs of Tcl/Tk Aqua on MacOS X.
+
+ * ext/tk/tcltklib.c: fix bug on switching threads and waiting on the
+ deleted interpreter on vwait and tkwait command.
+
+ * ext/tk/lib/multi-tk.rb: kill the meaningless loop for the deleted Tk
+ interpreter.
+
+ * ext/tk/sample/demos-jp/image3.rb: [bug fix] wrong argument.
+
+ * ext/tk/sample/demos-en/image3.rb: ditto.
+
+ * ext/tk/sample/demos-jp/menu.rb: fix message for MacOS X.
+
+ * ext/tk/sample/demos-jp/menu8x.rb: ditto.
+
+ * ext/tk/sample/demos-en/menu.rb: ditto.
+
+Tue Dec 6 16:48:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (ruby_xmalloc2): change check condition for integer
+ overflow. [ruby-dev:27399]
+
+ * gc.c (ruby_xrealloc2): ditto.
+
+Tue Dec 6 16:37:57 2005 Yuya Nishida <yuya@j96.org>
+
+ * eval.c (exec_under): avoid accessing ruby_frame->prev.
+ [ruby-dev:27948]
+
+Fri Dec 2 19:06:06 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (Compare): should not fold double byte alphabet on win9x.
+
+Thu Dec 1 00:50:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_funcall2): allow to call protected methods.
+ fixed: [ruby-dev:27890]
+
+Wed Nov 30 23:52:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (struct parser_params): fields common to ripper must be
+ placed at each same offset.
+
+ * parse.y (NEWHEAP, ADD2HEAP): set count after pointer was set.
+ fixed: [ruby-dev:27896]
+
+Wed Nov 30 13:43:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg): support $! at the end of
+ expression. [ruby-dev:27868]
+
+Tue Nov 29 23:57:05 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (struct parser_params): heap must be placed at same offset
+ also in ripper.y. fixed: [ruby-dev:27846]
+
+ * parse.y (yycompile): prevent vparser from tail call optimization.
+ fixed: [ruby-dev:27851]
+
+ * parse.y (parser_mark): value needs to be marked.
+ fixed: [ruby-dev:27845]
+
+Tue Nov 29 22:45:30 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/observer.rb (notify_observers): follow change of observer.rb.
+ fixed: [ruby-core:6796]
+
+Mon Nov 28 20:24:22 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (PP::PPMethods#object_address_group): mask an address with
+ word size.
+
+ * lib/pp.rb (PP::PPMethods#object_address_group): adjust address format.
+
+Mon Nov 28 18:55:22 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (init_inetsock_internal): remove setting
+ SO_REUSEADDR option on server socket on Cygwin.
+ fixed: [ruby-core:6765] ([ ruby-Bugs-2872 ])
+
+Mon Nov 28 13:11:45 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_strerror): remove all CR and LF. (avoid broken
+ error message on bccwin32 + winsock)
+
+Mon Nov 28 09:15:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/mkmf.rb (create_makefile): should not change sodir with
+ dir.gsub!. (bccwin32 failed to install third party extensions)
+ [ruby-dev:27834]
+
+Sun Nov 27 05:37:20 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: use File.basename to decompose pathnames.
+ experimental Windows support.
+
+Sun Nov 27 00:56:13 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/wsdl/xmlSchema/complexContent.rb: missing
+ ComplexContent#elementformdefault method.
+
+Sat Nov 26 19:57:45 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c (conv_to_posix_path): should initialize posix.
+
+Fri Nov 25 20:34:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc/datetime.rb (DateTime::to_a): comparison with non
+ array-convertible object must return false.
+
+Fri Nov 25 14:34:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_max): treat end exclusion without iteration if
+ the end value is an integer. [ruby-talk:167433]
+
+Fri Nov 25 12:52:57 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: added backward compatibility codes.
+ * lib/rss/parser.rb: ditto.
+ * test/rss/test_parser.rb: ditto.
+ * test/rss/test_2.0.rb: ditto.
+
+ * test/rss/test_content.rb: use #__send__ instead of #funcall for
+ no private method.
+
+Fri Nov 25 12:39:56 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: improved type conversion.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/0.9.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/syndication.rb: ditto.
+
+ * test/rss/test_2.0.rb: added type conversion tests.
+ * test/rss/test_accessor.rb: ditto.
+ * test/rss/test_to_s.rb: ditto.
+ * test/rss/test_syndication.rb: ditto.
+ * test/rss/test_setup_maker_2.0.rb: ditto.
+ * test/rss/test_setup_maker_1.0.rb: ditto.
+ * test/rss/test_setup_maker_0.9.rb: ditto.
+ * test/rss/test_maker_sy.rb: ditto.
+ * test/rss/test_maker_image.rb: ditto.
+ * test/rss/test_maker_2.0.rb: ditto.
+ * test/rss/test_maker_0.9.rb: ditto.
+ * test/rss/test_image.rb: ditto.
+
+ * test/rss/test_maker_1.0.rb: use assert instead of assert_equal.
+
+ * test/rss/rss-assertions.rb: improved type conversion assertions.
+
+Fri Nov 25 10:38:20 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/image.rb: added Image prefix.
+
+ * lib/rss/maker/image.rb: ditto.
+
+Fri Nov 25 10:33:02 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_2.0.rb: added RSS 2.0 tests.
+
+ * test/rss/rss-assertions.rb: extended XML stylesheet assertion.
+
+ * lib/rss/0.9.rb: added initialize method.
+
+ * test/rss/test_1.0.rb: cleanup.
+
+Fri Nov 25 10:29:48 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_min): use <=> comparison rather than iteration.
+ [ruby-talk:167420]
+
+ * range.c (range_max): ditto.
+
+Thu Nov 24 01:31:44 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * file.c (w32_io_info): CreateFile failed on Win9x if file was already
+ opened. (FILE_SHARE_READ was needed, but actually I don't understand
+ the flags of CreateFile well...)
+
+Wed Nov 23 23:52:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_div): use floor rather than rb_Integer().
+ [ruby-dev:27674]
+
+Wed Nov 23 22:34:15 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb: added entity handling type predicate.
+ * lib/rss/rexmlparser.rb: ditto.
+ * lib/rss/xmlparser.rb: ditto.
+ * lib/rss/xmlscanner.rb: ditto.
+
+ * lib/rss/xmlscanner.rb: more robust entity handling.
+
+ * test/rss/test_parser.rb: added an entity handling test.
+
+Wed Nov 23 20:59:01 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add Tk.pkgconfig_list and Tk.pkgconfig_get
+ [Tk8.5 feature].
+
+ * ext/tk/lib/tk/text.rb: supports new indices modifiers on a Text
+ widget [Tk8.5 feature].
+
+ * ext/tk/lib/tk/virtevent.rb: add TkNamedVirtualEvent.
+
+ * ext/tk/lib/tk/autoload.rb: ditto.
+
+ * ext/tk/lib/tk/event.rb: add :data key for virtual events [Tk8.5
+ feature].
+
+Wed Nov 23 18:52:45 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * file.c (w32_io_info): should not call GetFileInformationByHandle
+ for pipe.
+
+ * file.c (w32_io_info): checks return value from rb_w32_get_osfhandle.
+
+ * file.c (w32_io_info): now can identify directory on WinNT.
+
+Wed Nov 23 18:46:53 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/: use #__send__ instead of #send.
+ * test/rss/: ditto.
+
+Wed Nov 23 18:32:56 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_taxonomy.rb: use #reject directory.
+
+Wed Nov 23 18:26:00 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/taxonomy.rb: changed class or module prefix to
+ Taxonomy from Taxo.
+ * lib/rss/maker/taxonomy.rb: ditto.
+
+Wed Nov 23 18:21:11 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/taxonomy.rb: implemented taxonomy module for RSS
+ Maker.
+ * lib/rss/taxonomy.rb: supported RSS Maker.
+ * lib/rss/maker.rb: added taxonomy module support.
+
+ * lib/rss/rss.rb: adjusted to other element API.
+ * lib/rss/1.0.rb: adjusted to other element API but backward
+ compatibility is reserved.
+ * lib/rss/0.9.rb: ditto.
+
+ * test/rss/test_maker_taxo.rb: added test case for taxonomy module
+ for RSS Maker.
+ * test/rss/test_setup_maker_1.0.rb: added tests for taxo:topic.
+
+ * test/rss/test_setup_maker_1.0.rb: added backward compatibility
+ test.
+ * test/rss/test_setup_maker_0.9.rb: ditto.
+ * test/rss/test_setup_maker_2.0.rb: ditto.
+
+ * test/rss/rss-testcase.rb: added convenience method for setting
+ up taxo:topic.
+ * test/rss/rss-assertions.rb: added assertion for taxo:topic.
+
+ * sample/rss/blend.rb: followed new API.
+
+Wed Nov 23 17:42:24 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: fixed a indentation bug.
+
+ * lib/rss/taxonomy.rb: fixed <taxo:topic> #to_s bug.
+
+ * test/rss/test_taxonomy.rb: added a #to_s test.
+
+Wed Nov 23 03:40:49 2005 Guy Decoux <ts@moulon.inra.fr>
+
+ * re.c (KR_REHASH): should cast to unsigned for 64bit CPU.
+ [ruby-core:06721]
+
+Wed Nov 23 07:26:44 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: check for X509V3_EXT_nconf_nid.
+
+ * ext/openssl/ossl_x509ext.c (MakeX509ExtFactory): should use
+ OPENSSL_malloc to allocate X509V3_CTX.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_create_ext): use
+ X509V3_EXT_nconf_nid to avoid SEGV (and to build extensions which
+ values are placed in separate section).
+
+ * test/openssl/test_x509ext.rb: new file.
+
+Wed Nov 23 01:22:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (test_identical): test if two files are identical.
+
+ * file.c (rb_f_test): support DOSISH systems where st_ino is not
+ reliable. fixed: [ruby-core:06672]
+
+ * win32.h, win32.c (rb_w32_osid): check the running platform.
+
+Tue Nov 22 23:52:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb: match incomplete (in current enconding) multibyte
+ string. http://inamode6.tokuhirom.dnsalias.org/show/1551
+
+Tue Nov 22 18:36:11 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (winnt_stat): set mapped errno instead of ENOENT.
+
+Tue Nov 22 14:36:54 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): skip slashes just after UNC top slashes.
+
+ * test/ruby/test_path.rb (test_dirname, test_basename): follow new
+ spec. and add new tests.
+
+Tue Nov 22 13:30:15 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_stat): Dir.chdir('//server/shared');
+ p Dir.glob('*') should work on WinNT. (implemented our own
+ stat(2) on WinNT) [ruby-list:41552] [ruby-dev:27711]
+
+Tue Nov 22 02:31:53 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/tile.rb: bug fix (Tk::Tile::USE_TTK_NAMESPACE
+ is not defined).
+
+Tue Nov 22 01:45:21 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): DOSISH_UNC is defined on cygwin but
+ DOSISH is not. fixed: [ruby-dev:27797]
+
+Mon Nov 21 22:50:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_path_skip_prefix, rb_file_s_basename): UNC without path
+ should not be splitted. fixed: [ruby-dev:27776] [ruby-dev:27786]
+
+ * parse.y (dsym): prohibit empty symbol literal by interpolation.
+ fixed: [ruby-talk:166529]
+
+Mon Nov 21 16:03:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/setup.mk: findstr doesn't exist on win9x.
+ fixed: [ruby-dev:27756]
+
+Sun Nov 20 21:39:27 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * regparse.c (fetch_token_in_cc): tok->escaped should be
+ initialized. [ruby-dev:27763]
+
+Sun Nov 20 22:34:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_symname_p): [ not followed by ] is not valid symbol.
+ fixed: [ruby-talk:166520]
+
+Sat Nov 19 19:57:54 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::ln): ln documentation fix.
+ [ruby-core:06661]
+
+Sat Nov 19 08:19:38 2005 Zach Dennis <zdennis@mktec.com>
+
+ * ext/socket/socket.c: Socket Documentation. [ruby-core:6552]
+
+Sat Nov 19 07:34:32 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/font.rb: remove dependency on Ruby's version (1.8
+ or 1.9).
+
+ * ext/tk/lib/tkextlib/ICONS/icons.rb: ditto.
+
+ * ext/tk/sample/tkextlib/treectrl/demo.rb: ditto.
+
+Fri Nov 18 18:07:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_s_dirname): should use skipprefix for UNC path.
+ pointed out by nobu ([ruby-dev:27744]). fixed: [ruby-core:5076]
+
+Fri Nov 18 17:35:09 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: add restriction to access the entried
+ command table and manipulate other IPs (for reason of security).
+ Now, a IP object can be controlled by only its master IP or the
+ default IP.
+
+ * ext/tk/lib/remote-tk.rb: add restriction to manipulate.
+
+ * ext/tk/tcltklib.c (ip_is_slave_of_p): add TclTkIp#slave_of?(ip)
+ to check manipulability.
+
+ * ext/tk/lib/tk.rb: bug fix on handling of Tcl's namespaces.
+
+ * ext/tk/lib/tk/namespace.rb: ditto.
+
+Fri Nov 18 16:47:33 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_s_dirname): added checks for some patterns with drive
+ letter. fixed: [ruby-dev:27738]
+
+ * test/ruby/test_path.rb (test_dirname): added tests for above
+ patterns.
+
+Fri Nov 18 12:19:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.h (S_IFIFO): r,w = IO.pipe; r.stat.pipe? now
+ returns true on VisualC++6.
+
+Thu Nov 17 17:58:00 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/1.0.rb: added convenience method 'resources'.
+
+ * lib/rss/taxonomy.rb: ditto.
+
+ * test/rss/rss-assertions.rb: added test for 'resources'.
+
+ * test/rss/test_taxonomy.rb: ditto.
+
+Thu Nov 17 17:53:30 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/taxonomy.rb: implemented taxonomy module.
+
+ * test/rss/test_taxonomy.rb: added tests for taxonomy support.
+
+Thu Nov 17 17:40:19 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/1.0.rb: added rdf:Bag.
+
+Thu Nov 17 13:52:00 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: removed needless argument 'prefix'.
+
+ * lib/rss/parser.rb: ditto.
+
+Wed Nov 16 23:24:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (static-ruby): overridable.
+
+ * ext/extmk.rb (parse_args): force to link extensions statically only
+ if static is given for extstatic.
+
+ * ext/extmk.rb (RUBY, RUBYW): overridable.
+
+Wed Nov 16 01:29:31 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/trackback.rb: added TrackBack prefix.
+
+ * lib/rss/maker/trackback.rb: ditto.
+
+Wed Nov 16 01:26:13 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.5 -> 0.1.6.
+
+ * test/rss/test_version.rb (RSS::TestVersion#test_version): ditto.
+
+Tue Nov 15 23:54:24 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_load_ok): eaccess() returns 0 on success.
+ fixed: [ruby-dev:27713]
+
+Tue Nov 15 16:36:03 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * array.c (rb_ary_fill): previous commit disabled this usage:
+
+ a = [0,1,2,3,4,5,6,7,8,9]
+ a.fill {|i| a[i] * 10} #=> [nil, nil, ...., nil]
+
+ previous commit has the advantage of early garbage collection, but
+ potentially this would break some script. so I reverted behavior.
+
+Tue Nov 15 16:15:23 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (file_load_ok): use eaccess() instead of actually opening
+ the file. [ruby-talk:156378]
+
+ * lib/jcode.rb (String::reverse): add new methods.
+ [ruby-list:41245]
+
+Tue Nov 15 15:49:34 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * array.c (rb_ary_fill): tail elements were vanished when the middle
+ part of array was filled. (ie: [0,1,2,3,4].fill(-1,2,1) => [0,1,-1])
+
+ * test/ruby/test_array.rb (test_fill): added.
+
+Tue Nov 15 14:39:16 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fill): should adjust array length correctly when
+ an array is expanded in the fill process. [ruby-core:06625]
+
+Mon Nov 14 23:49:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_readlink): ERANGE will occur only on GPFS.
+ [ruby-dev:27699]
+
+Mon Nov 14 17:36:22 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_first): RDoc update from Daniel Berger
+ <djberg96@yahoo.com>. [ruby-core:06577].
+
+Sun Nov 13 10:55:24 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/uri/common.rb (escape): regard second argument as a
+ character set. [ruby-dev:27692]
+
+Sat Nov 12 08:36:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, eval.c, intern.h: check fd_mask type.
+
+ * configure.in (socketpair): need to be checked.
+
+Fri Nov 11 19:53:47 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * eval.c, intern.h: failed to compile where NFDBITS is defined but
+ howmany() is not defined. [ruby-dev:27680]
+
+ * io.c (is_socket): failed to compile where S_ISSOCK is not defined.
+
+ * io.c (pipe_open): failed to compile where socketpair is not supported.
+
+Fri Nov 11 08:20:56 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (OUTFLAG): keep trailing spaces. [ruby-dev:27666]
+
+ * mkconfig.rb: substitution references added.
+
+Fri Nov 11 07:39:49 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * configure.in: undef HAVE_LINK on BeOS. (link(2) always returns
+ EINVAL, and this causes error in test/fileutils.)
+
+ * file.c: override chown(2) and fchown(2) on BeOS. (these functions
+ should not change user/group id if -1 is passed as corresponding
+ argument, and this causes error in test/fileutils too)
+ [ruby-dev:27672]
+
+Thu Nov 10 21:05:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/shellwords.rb: fix for blank but not empty string.
+ fixed: [ruby-dev:27663]
+
+Wed Nov 9 08:39:38 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/shellwords.rb: refactored. [ruby-core:06581]
+
+Tue Nov 8 17:35:53 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * intern.h, eval.c (rb_thread_signal_raise): constified.
+
+ * signal.c: cosmetic change.
+
+Tue Nov 8 15:32:27 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/drb/ssl.rb (DRb::SSLConfig#accept): fixed typo.
+ [ruby-dev:27560] [ruby-core:4627]
+
+Mon Nov 7 20:54:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c: iconvctl() support. [EXPERIMENTAL]
+
+Mon Nov 7 16:23:23 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl.h: need to include winsock2.h before including
+ windows.h by some openssl headers.
+
+Mon Nov 7 13:43:51 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/stubs.c (_nativethread_consistency_check): use simpler
+ (low cost) way to check whether the Tcl interpreter was compiled
+ with threads enabled of not.
+
+ * ext/tk/tcltklib.c: reduce warnings.
+
+ * ext/tk/tkutil/tkutil.c: ditto.
+
+Mon Nov 7 00:06:12 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/yaml.rb: removed :nodoc: to generate Kernel doc. [ruby-core:6324]
+
+Sun Nov 6 23:39:13 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (Iconv::BrokenLibrary): exception when detected a
+ bug of underlying library.
+
+Sun Nov 6 21:43:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/stubs.c (ruby_tcl_create_ip_and_stubs_init): should touch
+ interpreter after initialization is done. [ruby-dev:27638]
+
+Sun Nov 6 20:13:27 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_readlink): readlink(2) on AIX fails with ERANGE if
+ buffer size is less than required. fixed: [ruby-dev:27634]
+
+Sat Nov 5 13:42:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, cygwin/GNUmakefile.in (mingw): use def file to alias
+ symbols. [ruby-dev:27532]
+
+ * bcc32/mkexports.rb, win32/mkexports.rb: make aliases in DLL.
+
+ * win32/win32.c, win32/win32.h: replace symbols only when RUBY_EXPORT
+ is defined.
+
+Thu Nov 3 07:57:39 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/open-uri.rb (open_loop): find_proxy should return nil when
+ proxy does not exist. [ruby-dev:27630]
+
+Wed Nov 2 20:25:28 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: ext/tk/extconf.rb: change the check parameter
+ for Win32.
+
+Wed Nov 2 19:03:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_rbUpdateObjCmd, ip_rb_threadUpdateObjCmd):
+ passed improper flags to DoOneEvent().
+
+ * ext/tk/tkutil/tkutil.c: use rb_obj_respond_to() instead of
+ rb_respond_to().
+
+Tue Nov 1 14:20:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call_super): should call method_missing if super is
+ called from Kernel method.
+
+ * eval.c (exec_under): frame during eval should preserve external
+ information.
+
+Tue Nov 1 10:48:49 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: should check ERR_peek_last_error().
+ [ruby-dev:27597]
+
+ * ext/openssl/ossl.c (ossl_raise): ditto.
+
+Mon Oct 31 17:34:46 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: use proper option for Sun linker. A patch from
+ Shinya Kuwamura <kuwa at labs.fujitsu.com>. [ruby-dev:27603]
+
+Mon Oct 31 05:46:08 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_update): input data must
+ not be empty. [ruby-talk:161220]
+
+ * test/openssl/test_cipher.rb: add test for Cipher#update("").
+
+Mon Oct 31 05:38:26 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb
+ (WEBrick::HTTPServlet::CGIHandler#do_GET): the value of Set-Cookie:
+ header field should be splited into each cookie. [ruby-Bugs:2199]
+
+ * lib/webrick/cookie.rb (WEBrick::Cookie.parse_set_cookie): new method
+ to parse the value of Set-Cookie: header field.
+
+ * test/webrick/test_cookie.rb, test/webrick/test_cgi.rb,
+ test/webrick/webrick.cgi: add some test for cookie.
+
+Mon Oct 31 02:33:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_rshift): RDoc fix. [ruby-core:6351]
+
+ * util.h (strtod): add #undef for platforms defines strtod()
+ macro. [ruby-dev:27563]
+
+Mon Oct 31 02:31:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_float.rb (test_precision): test by assert_in_delta.
+ [ruby-dev:27575]
+
+Sat Oct 29 01:58:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/etc/etc.c: document update from mathew <meta@pobox.com>.
+ [ruby-core:06473]
+
+ * ext/fcntl/fcntl.c: ditto.
+
+Sat Oct 29 16:56:03 2005 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: added seven predicates sunday? to saturday?.
+
+ * lib/date.rb: added two methods {prev,next}_month,
+ that are almost same as << and >>.
+
+Thu Oct 27 20:34:43 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_allocate): allow subclassing.
+
+Thu Oct 27 16:45:31 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (scan_once): wrong condition to use mbclen2().
+ [ruby-dev:27535]
+
+Thu Oct 27 11:53:17 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * missing.h, missing/memcmp.c, missing/memmove.c:
+ ANSI compatible interface.
+
+Wed Oct 26 09:15:48 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/implicit.c (syck_type_id_to_uri): should return
+ newly allocated memory. otherwise, type_id will be freed
+ twice. [ruby-dev:27384] [ruby-core:6385]
+
+Wed Oct 26 01:58:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_EXTERN): macro to export symbols in shared
+ library. [ruby-core:05528]
+
+ * defines.h, {bcc32,win32,wince}/Makefile.sub (RUBY_EXTERN): moved to
+ configuration pass.
+
+ * ext/extmk.rb (extmake): RUBY_EXTERN for static linked extensions.
+
+Tue Oct 25 20:06:59 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ruby.h (Qfalse, Qtrue, Qnil, Qundef): make sure these immediate
+ values have VALUE type. there is an environment where sizeof(VALUE)
+ != sizeof(int) like IA64. if 32bit integer (Qtrue) is passed to ANYARGS
+ and received by 64bit integer (VALUE), upper bits may have garbage value.
+ [ruby-dev:27513]
+
+Tue Oct 25 15:32:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rational.rb: applied documentation patch from Gavin Sinclair
+ <gsinclair@gmail.com>. [ruby-core:06364]
+
+ * lib/irb.rb (IRB::Irb::eval_input): handle prompts with newlines
+ in irb auto-indentation mode. [ruby-core:06358]
+
+Tue Oct 25 14:21:46 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * gc.c (garbage_collect): sorry, previous commit was incorrect.
+ [ruby-core:6386]
+
+Tue Oct 25 13:40:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * gc.c (garbage_collect): return now whether there're rooms for new
+ objects, rather than whether GC run. fixed: [ruby-core:6376]
+
+Tue Oct 25 02:12:08 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/markup/simple_markup.rb (SM::SimpleMarkup::LABEL_LIST_RE):
+ reduce redundant backtrack. [ruby-talk:161771]
+
+Tue Oct 25 00:35:33 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/*: RDoc documentation from Eric Hodel
+ <drbrain@segment7.net> added.
+
+Mon Oct 24 21:14:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, io.c: use sys/syscall.h if syscall.h is not available.
+ [ruby-core:06247]
+
+Mon Oct 24 20:38:25 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/lib/win32/resolv.rb (get_info): support multiple DNS.
+ fixed: [ruby-list:40058], [ruby-dev:27479]
+
+Mon Oct 24 11:01:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/canvas.rb (TkCanvasItemConfig::__item_val2ruby_optkeys):
+ typo fixed. [ruby-talk:162187]
+
+ * ext/tk/lib/tk/menu.rb (TkMenuEntryConfig::__item_val2ruby_optkeys):
+ ditto. [ruby-core:06359]
+
+Mon Oct 24 07:57:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/tk/lib/tk/canvas.rb (TkCanvasItemConfig::__item_val2ruby_optkeys):
+ typo fixed. [ruby-talk:162187]
+
+ * ext/tk/lib/tk/menu.rb (TkMenuEntryConfig::__item_val2ruby_optkeys):
+ ditto. [ruby-core:06359]
+
+ * lib/matrix.rb (Matrix::initialize): use funcall instead of send
+ to allow private methods to be called. A report from
+ Jean-Claude Arbaut <jcarbaut@laposte.net>. [ruby-core:06359]
+
+Mon Oct 24 00:41:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_sunday): added predicate methods for the days of the
+ week. [ruby-list:41340]
+
+Sun Oct 23 07:11:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: improve messages [ruby-core:06325].
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/canvas.rb, ext/tk/lib/tk/entry.rb,
+ ext/tk/lib/tk/frame.rb, ext/tk/lib/tk/image.rb,
+ ext/tk/lib/tk/itemconfig.rb, ext/tk/lib/tk/labelframe.rb,
+ ext/tk/lib/tk/listbox.rb, ext/tk/lib/tk/menu.rb,
+ ext/tk/lib/tk/radiobutton.rb, ext/tk/lib/tk/scale.rb,
+ ext/tk/lib/tk/spinbox.rb, ext/tk/lib/tk/text.rb,
+ ext/tk/lib/tk/toplevel.rb: improve conversion of option values.
+
+ * ext/tk/lib/tkextlib/*: ditto.
+
+ * ext/tk/lib/tkextlib/*: update to support ActiveTcl8.4.11.2.
+
+ * ext/tk/lib/tkextlib/trofs/*: support Trofs 0.4.3.
+
+ * ext/tk/lib/tkextlib/tile/*: support Tile 0.7.2.
+
+ * ext/tk/lib/tkextlib/vu/*: support vu 2.3.0.
+
+ * ext/tk/lib/tkextlib/tcllib/*: support Tcllib 1.8 (Tklib 0.3).
+
+Sat Oct 22 23:54:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, lib/mkmf.rb (with_config): support --with-extension
+ options. [ruby-dev:27449]
+
+Sat Oct 22 14:25:43 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.[hc] (ruby_add_suffix): constified.
+
+ * util.[hc] (ruby_scan_{oct,hex}): fixed typo. (renamed from
+ scan_{oct,hex})
+
+ * util.c: almostly ANSI styled. (except for functions depending on
+ macro and K&R technique)
+
+Sat Oct 22 13:26:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (sym_inspect), parse.y (parser_yylex, rb_symname_p): check
+ if valid as a symbol name more strictly. [ruby-dev:27478]
+
+ * test/ruby/test_symbol.rb: tests for [ruby-core:03573].
+
+ * time.c (rb_strftime): removed meaningless volatile modifiers, and
+ concatenate successive nul characters at once. [ruby-dev:27472]
+
+ * ext/tk/lib/tk/font.rb, ext/tk/lib/tkextlib/ICONS/icons.rb,
+ ext/tk/sample/tkextlib/treectrl/demo.rb, lib/net/imap.rb,
+ lib/rss/parser.rb, test/rss/test_content.rb,
+ test/rss/test_dublincore.rb, test/rss/test_syndication.rb,
+ test/rss/test_trackback.rb, test/ruby/test_eval.rb,
+ test/socket/test_socket.rb, test/socket/test_udp.rb:
+ Object#fcall was renamed as Object#funcall.
+
+Sat Oct 22 10:08:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * missing.h, missing/*.c: SUSv3 compatible strcasecmp and strncasecmp,
+ ANSI compatible strtol and strtoul, and ANSI styled other functions.
+
+Fri Oct 21 19:16:08 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * rubysig.h (CHECK_INTS): fixed typo. (I believe bit-or is improper)
+
+Fri Oct 21 17:49:32 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bin/erb (ERB::Main::run): typo fixed. [ruby-core:06337]
+
+Fri Oct 21 15:42:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * intern.h, struct.c (rb_struct_iv_get): constified.
+
+ * marshal.c: avoid one VC++6 warning for implicit conversion
+ from int to char.
+
+ * ruby.h: ANSI styled.
+
+ * bcc32/Makefile.sub (HAVE_HYPOT): added.
+
+ * ext/socket/extconf.rb: BeOS is only one platform should call
+ closesocket, so check __BEOS__ macro directly. (I was worried
+ accidentally HAVE_CLOSESOCKET is defined on windows again because
+ it has it)
+
+ * ext/socket/{getaddrinfo.c,socket.c}: ditto.
+
+ ... these are all cosmetic changes.
+
+Fri Oct 21 15:23:23 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bignum.c (bignew_1): conversion from `int' to `char' discards
+ upper bits, (ie. (char)0xff00 -> 0) so it's better to test if
+ nonzero and set 0 or 1 instead of simply casting ... as a flag usage.
+ (but I believe this won't cause actual bug in current implementation)
+ [ruby-dev:27055]
+
+ * time.c: should use LONG_LONG instead of `long long'.
+
+Thu Oct 20 22:22:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parser.y (struct parser_params): parser never modify input string.
+
+ * ext/ripper/tools/preproc.rb (prelude): do not append surplus
+ newlines to fix line numbers.
+
+Thu Oct 20 11:41:57 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * class.c, eval.c, hash.c, st.c, variable.c: changed /* ??? */ stuff
+ protoize generated to ANYARGS.
+
+Thu Oct 20 11:18:11 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * eval.c, file.c, ruby.c: removed strchr, strrchr, strstr definition
+ because they are defined in missing.h.
+
+ * missing.h, missing/strchr.c, missing/strstr.c: ANSI styled.
+
+Thu Oct 20 09:36:06 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/mkmf.rb (create_makefile): Borland make seems not to allow
+ empty dependency list. If this change is not good, please correct
+ it.
+
+Thu Oct 20 07:55:09 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): get rid of a restriction
+ of Borland make. fixed: [ruby-dev:27460]
+
+ * ext/ripper/depend: ditto.
+
+Wed Oct 19 23:58:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): do not create unnecessary empty
+ directories. fixed: [ruby-dev:27451]
+
+Wed Oct 19 08:28:32 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_join): elements may contain null pointer strings.
+ report and fixed by Lloyd Zusman (hippoman): [ruby-core:06326]
+
+Wed Oct 19 02:34:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c, eval.c, gc.c, parse.y, regparse.c, sjis.c, time.c:
+ made internal symbols static. [ruby-dev:27435]
+
+Tue Oct 18 10:58:27 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/depend, ext/dl/extconf.rb, ext/socket/depend,
+ ext/socket/extconf.rb: shouldn't define DESTCLEANFILES in depend,
+ use $distcleanfiles in extconf.rb.
+
+ * win32/Makefile.sub (distclean-local): should remove .config.h.time.
+
+Mon Oct 17 09:42:50 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * mkconfig.rb: fixup configure_args for mswin32 configure.
+
+ * win32/configure.bat (srcdir, target): ditto.
+
+Mon Oct 17 05:01:50 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * env.h: move struct METHOD and struct BLOCK from eval.c to
+ support NodeWrap and ParseTree.
+
+Sun Oct 16 22:16:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: omit non-existing directories.
+
+Sun Oct 16 14:40:54 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb (Rinda::Tuple#initialize): check remote hash
+ tuple. fixed: [ruby-list:41227]
+
+ * test/rinda/test_rinda.rb: test it.
+
+Sun Oct 16 03:38:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rubysig.h (CHECK_INTS): prevent signal handler to run during
+ critical section. [ruby-core:04039]
+
+ * eval.c (load_wait): need not to call rb_thread_schedule()
+ explicitly. [ruby-core:04039]
+
+ * eval.c (rb_thread_schedule): clear rb_thread_critical.
+ [ruby-core:04039]
+
+Sun Oct 16 00:13:14 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat: remove unnecessary line which prevents
+ creating Makefile.
+
+Sat Oct 15 23:52:07 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb: (getbinaryfile): allow nil for localfile, and
+ returns retrieved data if localfile is nil.
+
+ * lib/net/ftp.rb: (gettextfile): ditto.
+
+Sat Oct 15 19:51:29 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * bin/erb: typo fixed, again. thanks, Doug Kearns.
+
+Fri Oct 14 23:09:31 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (MKFILES): update MKFILES if configure files get
+ changed.
+
+ * win32/configure.bat, win32/setup.mak (configure_args): store
+ arguments to configure files.
+
+Fri Oct 14 22:05:45 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (ioctl): should set errno.
+
+Fri Oct 14 16:39:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb (Config::FileHandler): :UserDir should be nil.
+ It is harmful to permit the access to ~/public_html by default.
+ suggested by Hiroyuki Iwatsuki.
+
+Fri Oct 14 04:58:38 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_obj_instance_exec): create instance_exec and
+ module_exec which pass arguments to the block.
+
+ * eval.c (rb_f_funcall): rename fcall to funcall to follow
+ tradition.
+
+Thu Oct 13 23:29:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (HEAPCNT): bison allocates indivisible size.
+ fixed: [ruby-core:06261]
+
+ * io.c, pack.c, ext/syck/rubyext.c, ext/syck/syck.h, missing/isinf.c:
+ get rid of warnings. fixed: [ruby-core:06247]
+
+Wed Oct 12 12:51:56 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (Init_openssl): should call
+ OpenSSL_add_ssl_algorithms().
+
+Wed Oct 12 11:08:54 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_f_test): typo in RDoc comments.
+
+Tue Oct 11 21:41:58 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_FUNC_ATTRIBUTE): check prefixed attribute form
+ first. [ruby-dev:27398]
+
+ * array.c, enum.c, eval.c, util.c: safer function pointer usage.
+ fixed: [ruby-core:06143]
+
+ * util.h (qsort): removed the definition incompatible to ANSI.
+ fixed: [ruby-core:06147]
+
+ * eval.c (rb_obj_respond_to): check if obj responds to the given
+ method with the given visibility. [ruby-dev:27408]
+
+ * eval.c (rb_respond_to): conform to Object#respond_to?. [ruby-dev:27411]
+
+Tue Oct 11 00:01:21 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (st_free_table): do not call free() but xfree().
+ [ruby-core:06205]
+
+Sat Oct 8 19:49:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (Init_Binding): add Binding#dup method. [yarv-dev:666]
+
+ * io.c (rb_io_init_copy): clear PREP flag for copied IO.
+ fixed: [ruby-dev:27371]
+
+ * parse.y (rb_parser_malloc, rb_parser_free): manage parser stack on
+ heap. [ruby-list:41199]
+
+ * parse.y (ripper_initialize): use rb_respond_to().
+
+ * ext/ripper/depend (check): get rid of re-generating ripper.y always.
+
+ * ext/iconv/charset_alias.rb: parse config.charset_alias file directly.
+
+ * ext/nkf/lib/kconv.rb (Kconv.conv): get rid of nil.to_a.
+
+ * lib/scanf.rb (Scanf::FormatSpecifier#letter, #width): use matched
+ substring directly.
+
+ * test/ruby/test_assignment.rb, test/ruby/test_iterator.rb: followed
+ change of sample/test.rb.
+
+ * test/net/http/test_http.rb: removed superfluous splatting stars.
+
+Fri Oct 7 16:41:43 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (splat_value): call rb_Array() to convert svalue to
+ values. [ruby-dev:27397]
+
+Fri Oct 7 09:54:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie::parse): Cookies from Nokia devices may
+ not be parsed correctly. A patch from August Z. Flatby
+ (augustzf) in [ruby-Patches-2595]. [ruby-core:06183]
+
+Thu Oct 6 22:51:30 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_Array): Array() to raise error for objects without
+ to_ary, nor to_a.
+
+ * object.c (nil_to_a): revert NilClass#to_a.
+
+Thu Oct 6 20:10:38 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c (strscan_free): remove useless code.
+ [ruby-dev:26368] [ruby-dev:27389]
+
+Thu Oct 6 01:02:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (rb_range_beg_len): should return Qfalse for non-range
+ object.
+
+Wed Oct 5 04:42:38 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/xmlrpc/server.rb (XMLRPC::Server#initialize): should mount the
+ servlet on "/".
+
+Wed Oct 5 04:06:49 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/xmlrpc/server.rb (XMLRPC::Server#serve): delete wrong call
+ of "join".
+
+Mon Oct 3 00:04:00 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * pack.c (EXTEND16): [ruby-dev:27383]
+
+Sat Oct 1 23:55:24 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (do_select, rb_w32_select): brush up.
+
+Sat Oct 1 12:57:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * bignum.c (rb_big_rand): removed. [ruby-dev:25405]
+
+Sat Oct 1 01:46:51 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_loop): prohibit multiple proxy
+ options.
+
+Thu Sep 29 10:26:18 2005 Tanaka Akira <akr@m17n.org>
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): abolish sizeof(FILE).
+ [ruby-dev:27317]
+
+Thu Sep 29 10:15:14 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (:proxy_http_basic_authentication): new option.
+
+Thu Sep 29 07:22:05 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_f_send): underscores need to be escaped.
+ fixed by Doug Kearns. [ruby-core:06053]
+
+Thu Sep 29 00:57:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ev_const_get), variable.c (rb_const_get_0): retry only when
+ autoload succeeded.
+
+ * variable.c (rb_autoload_load): now return true if autoload
+ succeeded. fixed: [ruby-dev:27331]
+
+Wed Sep 28 23:40:04 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_inspect): constified.
+
+Wed Sep 28 15:12:28 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI#start): req.query_string should
+ refer to the value of QUERY_STRING. [ruby-list:41186]
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#query_string=):
+ add new method.
+
+Wed Sep 28 10:45:44 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: cannot compile with Tcl/Tk8.0.x [ruby-dev:27335].
+
+Wed Sep 28 07:56:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/yaml/basenode.rb (YAML::BaseNode::match_segment): fix typo.
+ [ruby-dev:27237], [ruby-core:05854]
+
+ * lib/yaml/tag.rb (Module#yaml_as): suppress warnings.
+
+ * lib/yaml/types.rb (YAML::PrivateType, YAML::DomainType): ditto.
+
+Wed Sep 28 03:16:41 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * rubysig.h: fixed build problem with --enable-pthread on platforms
+ which don't have setitimer().
+
+Mon Sep 26 22:32:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (set_trace_func): add rb_secure(4) to prevent adding
+ tracing function.
+
+Mon Sep 26 20:59:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * parse.y: changed to ANSI function style.
+
+Sun Sep 25 12:02:04 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * bin/erb: typo fixed.
+
+Sun Sep 25 11:54:11 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/tuplespace.rb (Rinda::TemplateEntry::initialize): pull
+ up method. Tabs converted to spaces.
+
+Sun Sep 25 09:34:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * parse.y: replaced `foo _((boo))' with `foo(boo)'.
+
+Sun Sep 25 08:19:53 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rss/test_content.rb, test/rss/test_syndication.rb: use fcall
+ instead of send in order to override visibility.
+
+Sun Sep 25 01:46:43 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-calculate-indent): arrange deep-indent
+ closing parenthesis at same column as the opening.
+
+Sun Sep 25 01:33:41 2005 Tanaka Akira <akr@m17n.org>
+
+ * process.c (proc_setrlimit): make the third argument (rlim_max)
+ optional.
+
+Sun Sep 25 00:42:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg): deal with heredoc separately.
+ fixed: [ruby-list:41168]
+
+ * misc/ruby-mode.el (ruby-calculate-indent): not to deepen indent
+ level for continuous line inside parentheses.
+ http://nabeken.tdiary.net/20050915.html#p02
+
+Sat Sep 24 21:19:39 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: document enhancement.
+
+ * ext/strscan/strscan.c: update copyright year.
+
+ * ext/strscan/strscan.c: update coding style.
+
+Sat Sep 24 20:20:05 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/net/http/test_http.rb (teardown): Net::HTTP.version_1_1 breaks
+ many other tests; ensure that Net::HTTP is version 1.2 after test.
+ [ruby-dev:27312]
+
+Sat Sep 24 11:44:28 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/net/http/test_http.rb: new file.
+
+Sat Sep 24 08:54:05 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (cd): no longer accept :noop option, related
+ code is useless. [ruby-core:05858] [ruby-Bugs:2494]
+
+Sat Sep 24 08:30:00 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#sub): new method.
+
+Sat Sep 24 08:29:36 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: fix visibility of FileUtils::NoWrite, Verbose,
+ DryRun. [ruby-core:05954]
+
+ * test/fileutils/test_nowrite.rb: test it.
+
+ * test/fileutils/test_dryrun.rb: new file.
+
+ * test/fileutils/test_verbose.rb: new file.
+
+Sat Sep 24 07:59:01 2005 Minero Aoki <aamine@loveruby.net>
+
+ * sample/ripper/colorize.rb: removed (replaced by ruby2html.rb).
+
+ * sample/ripper/ruby2html.rb: added.
+
+Sat Sep 24 06:35:15 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper: no longer generates .rb files.
+
+ * parse.y (Init_ripper): ripper_init_eventids*() takes 1 argument,
+ self (class Ripper).
+
+ * ext/ripper/depend: target removed: `lib/ripper/core.rb'.
+
+ * ext/ripper/depend: new target `eventids2table.c'.
+
+ * ext/ripper/depend: new target `check'.
+
+ * ext/ripper/eventids2.c: include eventids2table.c.
+
+ * ext/ripper/eventids2.c: initialize SCANNER_EVENT_TABLE.
+
+ * ext/ripper/extconf.rb: update $cleanfiles list.
+
+ * ext/ripper/tools/generate.rb: no longer generate ripper/core.rb.
+
+ * ext/ripper/tools/generate.rb: new mode `check'.
+
+ * ext/ripper/tools/generate.rb: new mode `eventids2table'.
+
+ * ext/ripper/lib/ripper/core.rb.in: removed.
+
+ * ext/ripper/lib/ripper/core.rb: added.
+
+ * ext/ripper/lib/ripper/filter.rb: update copyright year.
+
+ * ext/ripper/lib/ripper/lexer.rb: ditto.
+
+ * ext/ripper/lib/ripper/sexp.rb: ditto.
+
+Sat Sep 24 02:40:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb: document update from James Edward Gray II
+ <james@grayproductions.net>. [ruby-core:05942]
+
+Sat Sep 24 02:05:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_daemon): should restrict execution on levels
+ higher than $SAFE=2. suggested by URABE Shyouhei
+ <shyouhei@ice.uec.ac.jp>.
+
+Fri Sep 23 20:10:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/tools/generate.rb, ext/ripper/tools/preproc.rb: StringIO
+ is not available for miniruby. fixed: [ruby-dev:27307]
+
+Fri Sep 23 17:36:48 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: avoid core dump with WIN32OLE_EVENT.
+ [ruby-dev:27133]
+
+Fri Sep 23 16:27:39 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/forwardable.rb: replaced by new implementation from
+ <Daniel.Berger@qwest.com>. [ruby-core:05899]
+
+Fri Sep 23 07:07:47 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/depend: use --output option instead of redirect;
+ nmake does not remove a target when the target file is created by
+ redirect. [ruby-dev:26466]
+
+ * test/ripper/tools/preproc.rb: new option --output.
+
+Fri Sep 23 06:57:52 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/tools/generate.rb: check parser event arity.
+
+ * test/ripper/tools/generate.rb: detect crash of parser-event-IDs
+ and scanner-event-IDs.
+
+Fri Sep 23 06:01:30 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_file.rb: check File#chown(nil,nil).
+ [ruby-dev:27140]
+
+Fri Sep 23 05:57:23 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper: refactoring code generation tools. [ruby-dev:27247]
+ [ruby-dev:27273]
+
+ * ext/ripper/depend: use generate.rb.
+
+ * ext/ripper/lib/ripper/core.rb: removed.
+
+ * ext/ripper/tools/generate-eventids1.rb: removed (code moved to
+ generate.rb).
+
+ * ext/ripper/tools/generate-ripper_rb.rb: removed (code moved to
+ generate.rb).
+
+ * ext/ripper/tools/list-parse-event-ids.rb: removed (code moved to
+ generate.rb).
+
+ * ext/ripper/tools/list-scan-event-ids.rb: removed (code moved to
+ generate.rb).
+
+ * ext/ripper/lib/ripper/core.rb: removed.
+
+ * ext/ripper: refactoring tests. [ruby-dev:27273]
+
+ * ext/ripper/test/check-event-arity.rb: removed (code moved to
+ tools/generate.rb).
+
+ * ext/ripper/test/check-event-coverage.rb: removed (code moved to
+ test/ripper/test_parser_events.rb).
+
+ * ext/ripper/test/check-scanner-event-coverage.rb: removed (code
+ moved to test/ripper/test_scanner_events.rb).
+
+ * ext/ripper/test/list-called-events.rb: removed.
+
+ * ext/ripper/test/src_rb: removed.
+
+ * ext/ripper/test/validate.rb: removed.
+
+ * test/ripper/test_scanner_events.rb: check event coverage.
+
+ * ext/ripper/lib/ripper/core.rb.in: update copyright year.
+
+Thu Sep 22 23:40:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (find_executable0): default path if environment is not
+ set. [ruby-dev:27281]
+
+ * ext/ripper/extconf.rb (have_command): replaced with find_executable.
+
+Thu Sep 22 17:31:48 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/readline/test_readline.rb (TestReadline::replace_stdio):
+ merged the patch of [ruby-dev:25232] instead of [ruby-dev:25223].
+ (merged from ruby_1_8 branch)
+
+Wed Sep 21 23:30:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): generalized nmake dependent code.
+
+Wed Sep 21 14:16:30 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/ripper/depend (SUFFIXES): no longer needed.
+
+ * ext/ripper/depend (c): avoid nmake problem. fixed [ruby-dev:27191]
+
+Wed Sep 21 08:52:25 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/token.c: correctly compute indentation of a block
+ scalar's parent node. [ruby-talk:150620]
+
+Wed Sep 21 08:20:24 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja: add new features.
+
+Wed Sep 21 07:43:58 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (default_argv, Arguable#options): defaults strings
+ to be parsed to Arguable instance.
+
+Wed Sep 21 02:44:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (path_check_0): disallow sticky world writable directory
+ in PATH (and $LOAD_PATH). [ruby-dev:27226]
+
+Wed Sep 21 00:32:22 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_idiv): 1.div(1.0) should return integer value.
+ [ruby-dev:27235]
+
+Tue Sep 20 22:25:43 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/wait/lib/nonblock.rb: disable on platforms non-blocking flag
+ is not available. fixed: [ruby-dev:27187]
+
+ * file.c (rb_stat_inspect): protoized function pointer.
+
+Tue Sep 20 18:23:04 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (thread_mark): mark th->last_status. [ruby-dev:27179]
+
+Tue Sep 20 18:20:33 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/yaml.rb: require 'yaml/constants'. [ruby-core:5776]
+
+Tue Sep 20 17:48:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client::do_rpc): add charset
+ information to content-type header.[ruby-core:5127]
+
+ * lib/xmlrpc/server.rb (CGIServer::serve): ditto.
+
+ * lib/xmlrpc/server.rb (ModRubyServer::serve): ditto.
+
+ * lib/xmlrpc/server.rb (WEBrickServlet::service): ditto.
+
+Tue Sep 20 17:26:42 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/webrick/test_cgi.rb: set ENV["PATH"] to CGIEnvPath on
+ windows. bcc32's runtime is not installed into system directory,
+ so it cannot be found without this setting. [ruby-dev:27166]
+
+Tue Sep 20 17:14:10 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * io.c: PIPE_BUF is not defined on BeOS. use _POSIX_PIPE_BUF instead.
+ [ruby-dev:27185]
+
+Tue Sep 20 17:10:38 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/dbm/test_dbm.rb (TestDBM::test_s_open_error): remove
+ test_s_open_error test to detect duplicate open.
+ [ruby-dev:27202]
+
+Tue Sep 20 15:39:40 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/emitter.c (syck_scan_scalar): prevent indicators from
+ appearing alone or at the end of plain scalars. [ruby-core:5826]
+
+ * ext/syck/emitter.c (syck_emit_scalar): treat typed scalar nodes
+ as complex keys.
+
+ * lib/syck.h: version 0.60.
+
+ * lib/yaml/basenode.rb (YAML::BaseNode#at): transform keys during
+ key searches.
+
+ * ext/syck/rubyext.c: loading of binary-typed nodes. prevent
+ emission of plain strings that look like symbols, but which aren't.
+
+Tue Sep 20 05:48:26 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/xmlrpc/test_webrick_server.rb (setup_http_server):
+ should not include 'webrick/https' unless 'use_ssl' because
+ it fails where openssl is not installed.
+
+Tue Sep 20 01:24:45 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (splat_value): use to_a to splat non Array object.
+
+ * object.c (nil_to_a): remove nil.to_a. [experimental]
+
+Tue Sep 20 01:01:41 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Fixnum): remove debug print.
+
+ * lib/rational.rb (Rational): ditto.
+
+Tue Sep 20 00:34:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_close): call rb_io_close() directly if io is a T_FILE
+ object. [ruby-dev:27156]
+
+Mon Sep 19 18:58:10 2005 Minero Aoki <aamine@loveruby.net>
+
+ * file.c (rb_file_chown): should accept nil. [ruby-dev:27171]
+
+Mon Sep 19 18:29:54 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (file_expand_path): allow pathnames to expand.
+ [ruby-dev:27152]
+
+Mon Sep 19 15:12:15 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/depend: do not make ripper/core.rb. [ruby-dev:26462]
+
+Mon Sep 19 14:49:19 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/eventids2.c: add prefix `t' to tLAMBDA-related lexer
+ events.
+
+ * ext/ripper/lib/ripper/core.rb: updated.
+
+Mon Sep 19 14:39:46 2005 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (do_block): do_block event dispatches 2 args.
+ [ruby-dev:26964]
+
+ * ext/ripper/lib/ripper/core.rb: updated.
+
+ * ext/ripper/tools/list-parser-event-ids.rb: check arity mismatch.
+
+Mon Sep 19 07:45:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey.h, ossl_pkey_rsa.c, ossl_pkey_dsa.c:
+ an instance variable "private" is added to OpenSSL::PKey class.
+ this ivar is a flag that shows whether there is a private key
+ in the instance.
+
+ * ext/openssl/ossl_engine.c: (ossl_engine_load_privkey): set private
+ key flag.
+
+ * test/openssl/test_pkey_rsa.rb: add test about private detection.
+
+Mon Sep 19 06:38:03 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: method renaming: collect_methods ->
+ collect_method.
+
+Mon Sep 19 05:58:59 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: use module_function instead of single extend.
+
+ * test/fileutils/test_fileutils.rb: test existence of singleton
+ methods.
+
+Mon Sep 19 05:32:41 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_entry_secure): does not use chdir(2).
+
+Mon Sep 19 03:17:48 2005 Tanaka Akira <akr@m17n.org>
+
+ * file.c (rb_thread_flock): wrap the flock system call by
+ TRAP_BEG/TRAP_END to enable signals. [ruby-dev:27122]
+
+ * ext/socket/socket.c (bsock_send): wrap the sendto and send system
+ call by TRAP_BEG/TRAP_END to enable signals when writing to a socket
+ which is full. [ruby-dev:27132]
+
+ * io.c (rb_io_syswrite): wrap the write system call by
+ TRAP_BEG/TRAP_END to run signal handler in syswrite method.
+ [ruby-dev:27134]
+
+Mon Sep 19 01:07:38 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): should define Fixnum#div.
+ [ruby-dev:27129]
+
+ * file.c (rb_thread_flock): wrap flock(2) by TRAP_BEG and
+ TRAP_END. [ruby-dev:27122]
+
+ * file.c (rb_file_join): call FilePathValue() to all Pathnames to
+ join. [ruby-dev:27127]
+
+ * file.c (rb_get_path): call StringValueCStr() to ensure no nul
+ bytes in path strings.
+
+ * gc.c (garbage_collect): need value for return. [ruby-dev:27127]
+
+Sun Sep 18 02:10:47 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: remove comments that are bungling up
+ the rdoc and ri output. output symbols as plain scalars.
+
+ * ext/syck/rubyext.c (syck_emitter_reset): emit headless
+ documents always.
+
+ * ext/syck/emitter.c (syck_scan_scalar): quote scalars with any
+ kind of surrounding line space, tabs or spaces alike.
+
+ * ext/syck/token.c: accept tabs as whitespace, not for indentation,
+ but strip from plain scalars.
+
+ * test/yaml/test_yaml.rb: remove outdated tests.
+
+Sun Sep 18 01:10:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (garbage_collect): return false if no GC run.
+
+Sat Sep 17 23:25:04 2005 sheepman <sheepman@sheepman.sakura.ne.jp>
+
+ * lib/mathn.rb (Rational::inspect): should preserve original
+ operand. [ruby-core:05806]
+
+Sat Sep 17 23:20:27 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie): should handle multiple values for a
+ cookie name. [ruby-talk:156140]
+
+ * test/socket/test_tcp.rb (TestTCPSocket::test_recvfrom): typo
+ fixed. [ruby-dev:27123]
+
+Sat Sep 17 20:58:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_select): fixed deadlock bug.
+ because select(2) modifies its fd_set arguments, it must be
+ restored sometimes.
+
+ * win32/win32.c (rb_w32_select): performance improvement when
+ 'always readable/writable handles' and sockets are passed.
+ sockets should be polled every time.
+
+ require "net/http"
+
+ Thread.new {
+ loop do
+ STDOUT.write(".") # busy on console (this is worst case though)
+ end
+ }
+
+ # socket operation took long time. (sometimes timed out)
+ Net::HTTP.start("www.ruby-lang.org") do |http|
+ http.get("/cgi-bin/cvsweb.cgi/ruby/array.c?rev=1.179")
+ end
+
+Sat Sep 17 14:54:40 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_readpartial.rb (test_open_pipe, test_with_stdio):
+ these tests are working now, so turned on. (windows)
+
+Sat Sep 17 14:18:15 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_select): I hope performance problem was
+ solved.
+
+Sat Sep 17 13:45:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_select): console support is back.
+ but still has performance problem because I loosely took 1 second
+ for wait time. I'll fix it later. (The reason I drastically changed
+ the code is that I wanted to implement the fileset management as
+ single function, and I was worried that if pipe or console
+ was always available, socket may not be processed any time)
+
+Sat Sep 17 11:24:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_select): select for socket didn't work.
+ this caused deadlock in drb test. this happened because GetFileType
+ for socket handle returns FILE_TYPE_PIPE. Of course, it's not a
+ pipe. So socket handle didn't reach winsock's select function.
+
+ * win32/win32.c (rb_w32_select): read for pipe was still blocked
+ even if writer handle was closed.
+
+ r,w = IO.pipe
+
+ Thread.new {
+ sleep 3; puts "------- 1"
+ w.puts("foo")
+ sleep 3; puts "------- 2"
+ w.puts("boo")
+ sleep 3; puts "------- 3"
+ w.close
+ }
+
+ until r.eof? # should break by w.close but didn't.
+ puts r.gets
+ end
+
+ * win32/win32.c (rb_w32_select): temporary reverted console support
+ but it'll be back soon.
+
+Sat Sep 17 10:42:13 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string and bg_eval_string
+ should call Kernel.eval on caller's safe-level instead of slave's
+ safe-level (Of course, the given script should be evaluated on
+ slave's safe-level).
+
+Sat Sep 17 09:45:26 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_substr): should propagate taintness even for
+ empty strings. [ruby-dev:27121]
+
+ * string.c (rb_str_aref): should infect result if range argument
+ is tainted. [ruby-dev:27121]
+
+Sat Sep 17 08:35:39 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb (RSS::Maker::ItemsBase#normalize): fixed
+ strange RSS::Maker::Item#max_size behavior.
+ Thanks to Kazuhiko <kazuhiko@fdiary.net>.
+
+ * test/rss/test_maker_1.0.rb (RSS::TestMaker10#test_items): ditto.
+
+Sat Sep 17 08:02:53 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: supported DIGEST-MD5. Thanks, Mathieu Arnold.
+
+ * lib/net/imap.rb: use fcall instead of send. Thanks, Satoru
+ Takabayashi.
+
+Fri Sep 16 22:45:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): empty string for path name ending with a
+ period. fixed: [ruby-core:05651]
+
+ * file.c (rb_file_join): smarter behavior at edge cases.
+ fixed: [ruby-core:05706]
+
+ * gc.c (rb_memerror, ruby_xmalloc, ruby_xrealloc, rb_newobj): just
+ abandon if no memory available, when interpreter is not running.
+ [ruby-dev:27104]
+
+ * gc.c (garbage_collect): return whether GC could run.
+
+ * dir.c (rb_push_glob): fix delimiter bug. fixed: [ruby-dev:27105]
+
+ * dir.c (dir_s_aref, dir_s_glob): allow multiple patterns.
+ [ruby-dev:27110]
+
+ * win32/win32.c (cmdglob): enable brace expansion.
+
+Fri Sep 16 18:34:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/node.c (syck_replace_str): was using return from the
+ void function. a patch from MIYAMUKO Katsuyuki
+ <miyamuko at mtb.biglobe.ne.jp>. [ruby-dev:27111]
+
+Fri Sep 16 14:48:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: fix typo on MultiTkIp#bg_eval_string
+
+Fri Sep 16 12:02:12 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_resolver_transfer): remove C++ style
+ comment (//). [ruby-core:05793]
+
+Fri Sep 16 00:17:03 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/logger/test_logger.rb: unintentionally overwritten changes by
+ Usa. reverted.
+
+Fri Sep 16 00:03:11 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#initialize): should set
+ $stdout.binmode.
+
+Thu Sep 15 23:25:21 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/{soap,wsdl,xsd}, test/{soap,wsdl,xsd}: imported soap4r/1.5.5.
+
+ #nnn is a ticket number at http://dev.ctor.org/soap4r
+
+ * SOAP
+
+ * allow to configure an envelope namespace of SOAP request. (#124)
+ TemporaryNamespace = 'http://www.w3.org/2003/05/soap-envelope'
+ @client.options["soap.envelope.requestnamespace"] =
+ TemporaryNamespace
+ @client.options["soap.envelope.responsenamespace"] =
+ TemporaryNamespace
+ @client.do_proc(...)
+
+ * let SOAP request XML indent space configurable. see
+ "soap.envelope.no_indent" option. (#130)
+
+ * let external CES configurable.
+ ex. client["soap.mapping.external_ces"] = 'SJIS'. $KCODE is used
+ by default. (#133)
+ external CES ::= CES used in Ruby object of client and server
+ internal CES ::= CES used in SOAP/OM
+
+ * add iso-8859-1 external CES support. (#106)
+
+ * fixed illegal 'qualified' handling of elements. it caused
+ ASP.NET interoperability problem. (#144)
+
+ * added 'soap.envelope.use_numeric_character_reference' (boolean)
+ option to let query XML use numeric character reference in XML,
+ not plain UTF-8 character. !GoogleSearch server seems to not
+ allow plain UTF-8 character since 2005-08-15 update. (#147)
+
+ * SOAP::Header::SimpleHeader (de)serialization throws an exception
+ on !SimpleHeader.on_(in|out)bound when header is a String. so we
+ could not use a simple single element headerItem. fixed. thanks
+ to emil. (#129)
+
+ * out parameter of rpc operation did not work. (#132)
+
+ * follow HTTP redirect only if using http-access2. (#125) (#145)
+
+ * add a workaround for importing an WSDL whose path begins with
+ drive letter. (#115)
+
+ * WSDL
+
+ * SOAP Data which is defined as a simpletype was not mapped
+ correctly to Ruby obj when using wsdl2ruby.rb generated classdef
+ file. (#123)
+
+ * rpc/literal support. (#118)
+
+ * re-implemented local element qualify/unqualify control. handles
+ elementFormDefault and form in WSDL. (#119)
+
+ * Array of an element which has simpleType causes a crash. (#128)
+
+ * parameterOrder may not contain return part so it can be shorter
+ than parts size. Thanks to Hugh. (#139)
+
+ * Samples
+
+ * added !BasicAuth client sample. (#117)
+
+ * added Base64 client/server sample.
+
+ * added Flickr SOAP interface client sample. (#122)
+
+ * added !SalesForce client sample. (#135)
+
+ * updated Thawte CA certificate for !GoogleAdWords sample.
+
+ * updated a client script with the newer version made by Johan.
+ thanks!
+
+ * shortened long file names. (#120)
+
+ * fixed typo in authheader sample. (#129)
+
+ * updated deprecated method usage. (#138)
+
+Thu Sep 15 22:40:27 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_signal.rb (test_exit_action): skip the test using
+ fork on fork-less platforms.
+
+Thu Sep 15 13:54:33 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: add :read_timeout option.
+ [ruby-core:4848]
+
+Thu Sep 15 11:39:18 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/dialog.rb: If a dialog does not show up yet,
+ TkDialogObj#name raises an exception. [ruby-talk:156109]
+
+Thu Sep 15 11:01:58 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pipe_exec): remove unnecessary CloseHandle().
+
+ * win32/win32.c (extract_console_fd, peek_console): new functions.
+
+ * win32/win32.c (rb_w32_select): check consoles by polling them.
+
+Thu Sep 15 00:18:24 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/telnet.rb (Net::Telnet::waitfor): replace sysread with
+ readpartial. [ruby-talk:127641]
+
+Wed Sep 14 23:28:28 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (collect_file_fd): rename from extract_file_fd.
+
+ * win32/win32.c (extract_pipe_fd, peek_pipe): new functions.
+
+ * win32/win32.c (rb_w32_select): check pipes by polling them.
+
+Wed Sep 14 22:40:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (ruby_glob): glob function not using ruby exception system.
+
+Wed Sep 14 17:24:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c: changed `foo (*bar)_((boo))' to `foo (*bar)(boo)`.
+
+ * enumerator.c, eval.c, gc.c, intern.h, io.c, process.c, ruby.c,
+ ruby.h, signal.c: ditto.
+
+Wed Sep 14 15:06:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bignum.c: changed `foo _((boo))' to `foo(boo)`. [ruby-dev:27056]
+
+ * defines.h, dir.c, dln.h, enumerator.c, env.h, error.c, eval.c, file.c,
+ gc.c, hash.c, inits.c, intern.h, io.c, lex.c, marshal.c, missing.h,
+ node.h, numeric.c, pack.c, process.c, re.h, ruby.c, ruby.h, rubyio.h,
+ rubysig.h, signal.c, sprintf.c, st.h, string.c, struct.c, time.c,
+ util.c, util.h, variable.c: ditto.
+
+Tue Sep 13 22:09:40 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb (Logger): added formatter accessor to logger for
+ dictating the way in which the logger should format the messages it
+ displays. Thanks to Nicholas Seckar (cf. [ruby-talk:153391]) and
+ Daniel Berger.
+
+ * lib/logger.rb (Logger): added VERSION constant.
+
+ * lib/logger.rb: removed document for LogDevice. It is an
+ implementation detail and is not a public interface.
+
+ * test/logger/test_logger.rb: added tests.
+
+Tue Sep 13 21:47:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (BEGIN_CALLARGS): pop halfly pushed status.
+ fixed: [ruby-dev:26881]
+
+Tue Sep 13 20:24:37 2005 Tanaka Akira <akr@m17n.org>
+
+ * ruby.h (PRINTF_ARGS): new macro for printf style argument checking.
+
+Tue Sep 13 15:41:29 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: wrote documentation of HTTPRequest/HTTPResponse
+ classes.
+
+Tue Sep 13 14:27:47 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * string.c, missing.h: failed to build on powerpc-apple-darwin7.9.0
+ because of crypt argument's constness mismatch. (I hope this works)
+ (http://mput.dip.jp/autobuild/ruby-trunk/log/20050913T110001.gz)
+
+Tue Sep 13 12:33:05 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb: reworking YAML::Stream to use the new
+ emitter.
+
+ * lib/yaml/stream.rb: ditto.
+
+ * lib/yaml/rubytypes.rb: added Object#yaml_new.
+
+ * lib/yaml/tag.rb: the tag_subclasses? method now
+ shows up in the class. allow taguri to be set using an accessor.
+ continue support of Object#to_yaml_type.
+
+ * ext/syck/rubyext.c: new emitter code. yaml_new and yaml_initialize
+ get called, should they be present. consolidated all the diaspora of internal node types into the family below YAML::Syck::Node -- Map,
+ Seq, Scalar -- all of whom are SyckNode structs pointing to
+ Ruby data. moved Object#yaml_new into the node_import and made it
+ the default behavior. the target_class is always called with
+ yaml_new, prepended a parameter, which is the klass. loaded nodes
+ through GenericResolver show their style.
+ new Resolver#tagurize converts type ids to taguris.
+
+ * ext/syck/implicit.re: were 'y' and 'n' seriously omitted??
+
+ * ext/syck/emitter.c: renovated emitter, walks the tree in advance.
+ consolidated redundant block_styles struct into
+ the scalar_style struct. (this means loaded nodes can now
+ be sent back to emitter and preserve at least its very basic
+ formatting.)
+
+ * ext/syck/gram.c: headless documents of any kind allowed.
+
+ * ext/syck/node.c: new syck_replace_str methods and syck_empty_*
+ methods for rewriting node contents, while keeping the ID
+ and other setup info. added syck_seq_assign.
+
+ * ext/syck/syck.h: reflect block_styles and new node functions.
+
+Tue Sep 13 08:09:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (new_ostruct_member): Object#send no longer call
+ private methods. [ruby-dev:27044]
+
+ * test/rss/test_dublincore.rb, test/rss/test_trackback.rb,
+ test/ruby/test_eval.rb, test/socket/test_socket.rb: ditto.
+
+ * test/ruby/test_lambda (test_call_with_block): lambda makes new scope
+ for formal block parameter.
+
+Tue Sep 13 01:17:45 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_save_safe_level): no need to restrict safe level
+ memoize in $SAFE>=3. [ruby-dev:27050]
+
+Tue Sep 13 00:02:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (apply2files): stricter callback definition.
+
+ * file.c (rb_path_check): constified.
+
+Mon Sep 12 20:53:06 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/openssl/test_pkcs7.rb (test_enveloped): skip this test
+ to avoid a bug of PKCS7_encrypt() (only if ext/openssl is
+ compiled with OpenSSL-0.9.7d or earlier versions).
+ http://www.mail-archive.com/openssl-dev@openssl.org/msg17376.html
+
+Mon Sep 12 20:32:00 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.[hc] (rb_w32_argv_size, ...): reverted my latest change
+ to avoid incompatible pointer warning. (mingw32)
+
+Mon Sep 12 19:58:53 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dln.c: avoid warning of const to non-const conversion.
+ [ruby-dev:27041]
+
+ * eval.c, io.c, ruby.c: ditto.
+
+Mon Sep 12 19:26:29 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * array.c: moved to ANSI function style from K&R function style.
+ (used protoize on windows, so still K&R remains on #ifdef part of
+ other platforms. And `foo _((boo))' stuff is still there)
+ [ruby-dev:26975]
+
+ * bignum.c, class.c, compar.c, dir.c, dln.c, dmyext.c, enum.c,
+ enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c,
+ io.c, main.c, marshal.c, math.c, numeric.c, object.c, pack.c,
+ prec.c, process.c, random.c, range.c, re.c, regcomp.c, regenc.c,
+ regerror.c, regexec.c, regparse.c, regparse.h, ruby.c, signal.c,
+ sprintf.c, st.c, string.c, struct.c, time.c, util.h, variable.c,
+ version.c: ditto.
+
+Mon Sep 12 14:03:33 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/dbm/test_dbm.rb: remove locking test, which may not be
+ supported on some platforms. [ruby-dev:27030]
+
+Sun Sep 11 23:23:02 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (starttls): supported the STARTTLS command.
+
+Sun Sep 11 22:18:07 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * bin/erb (ERB::Main#run): set ERB#filename so that it is used
+ when reporting syntax/runtime errors. Tabs converted to spaces.
+
+Sat Sep 10 22:34:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c, bignum.c: protoize.
+
+Sat Sep 10 00:23:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (splat_value): simpler and consistent array conversion
+ for argument splat. [yarv-dev:599]
+
+Fri Sep 9 16:45:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_times): make empty strings to keep taintness,
+ and a little improvement. [ruby-dev:26900]
+
+ * ext/iconv/iconv.c (iconv_try), ext/iconv/extconf.rb: get rid of meta
+ characters in command line option. fixed: [ruby-talk:155369]
+
+ * ext/iconv/iconv.c: protoized.
+
+Thu Sep 8 14:58:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * merged a patch from Takahiro Kambe <taca at back-street.net> to
+ support DragonFly BSD. [ruby-dev:26984]
+
+Thu Sep 8 13:14:57 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * missing/strchr.c (strrchr): fixed a bug in detecting NUL in a
+ string. [ruby-dev:26985]
+
+Wed Sep 7 17:29:27 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_by_id):
+ OpenSSL::Engine.by_id calls given block before calling
+ ENGINE_init (block parameter is the return value of this method
+ itself). this functionality is useful to load dynamic shared
+ engines.
+
+ require "openssl"
+ pkcs11 = OpenSSL::Engine.by_id("dynamic"){|e|
+ e.ctrl_cmd("SO_PATH", "/usr/lib/opensc/engine_pkcs11.so")
+ e.ctrl_cmd("LIST_ADD", "1")
+ e.ctrl_cmd("LOAD")
+ }
+ pkcs11.ctrl_cmd("PIN", "secret")
+ key = pkcs11.load_private_key
+
+ * ext/openssl/ossl_engine.c (ossl_engine_ctrl_cmd): new method
+ OpenSSL::Engine#ctrl_cmd. it wraps ENGINE_ctrl_cmd_string.
+
+ * ext/openssl/ossl_engine.c (ossl_engine_get_cmds): new method
+ OpenSSL::Engine#cmds. it returns engine command definitions.
+
+Wed Sep 7 15:48:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (asn1str_to_str): new function.
+
+ * ext/openssl/ossl_pkcs7.c: new class OpenSSL::PKCS7::RecipientInfo.
+ this class wraps PKCS7_RECIP_INFO struct.
+
+ * ext/openssl/ossl_pkcs7.c: OpenSSL::PKCS7::Signer is renamed to
+ OpenSSL::PKCS7::SignerInfo. ("Signer" remains as an alias of
+ SignerInfo.)
+
+ * test/openssl/test_pkcs7.rb: new file.
+
+Wed Sep 7 12:55:08 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: abolish mod === tempfile to avoid a problem
+ [ruby-dev:26967].
+
+Wed Sep 7 10:45:15 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_switch): convert all exceptions to
+ SystemExit. fixed: [ruby-core:05724]
+
+ * eval.c (rb_thread_terminated): show backtrace before propagate
+ exceptions to main thread.
+
+Wed Sep 7 09:21:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.[hc] (rb_w32_utime): constified.
+
+ * win32/win32.h (rb_w32_stat): added prototype.
+
+ * win32/win32.[hc] (rb_w32_argv_size,rb_w32_join_argv,rb_w32_aspawn):
+ changed `char *const *' to `const char *const *'. (constify string)
+
+Wed Sep 7 08:35:04 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in (MINIOBJS): miniruby on HP-UX can not load
+ extension libraries.
+
+ * bignum.c (bignew_1, bigadd): K&R style argument actually can't be
+ defined as char.
+
+ * missing/vsnprintf.c: ANSI compiler supports const keyword.
+
+ * ext/digest/sha2/extconf.rb: reject platforms which has inttypes.h
+ but no 64bit integer.
+
+ * lib/mkmf.rb (what_type?): guesstimate type.
+
+ * ext/etc/etc.c (setup_passwd), ext/etc/extconf.rb: pw_age might be
+ char*. fixed: [ruby-core:05470]
+
+Wed Sep 7 08:32:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_times): should taint empty strings as well.
+
+ * object.c (Init_Object): make class_variable_{get,set} public.
+ [ruby-dev:26965]
+
+Mon Sep 5 22:28:46 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt, mlhs_node, lhs, arg, method_call): aref_args might be
+ nothing. fixed: [ruby-dev:26952]
+
+ * ext/ripper/eventids2.c: added new tokens. fixed: [ruby-dev:26952]
+
+Mon Sep 5 17:03:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/find.rb: should raise ENOENT if root entry does not exist.
+ [ruby-list:41054]
+
+ * lib/ostruct.rb: a patch from Florian Gross <florgro at gmail.com>
+ merged to allow recursive inspect (and to_s) for OpenStruct.
+ [ruby-core:05532]
+
+Mon Sep 5 08:20:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/observer.rb: a patch from nornagon <nornagon at gmail.com>
+ merged to allow arbitrary names for update methods.
+ [ruby-core:05416]
+
+Mon Sep 5 07:01:12 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/openssl/lib/openssl/buffering.rb (Buffering#do_write):
+ should clear data from the buffer which already been output.
+
+Sun Sep 4 15:01:35 2005 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (f_arg): Ripper should not do semantic check.
+ [ruby-dev:26948]
+
+Sat Sep 3 23:52:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_fcall): new method to avoid inefficiency of
+ obj.instance_eval{send(...)} tricks.
+
+Sat Sep 3 13:59:31 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#descend): Pathname.new("./a/b/c").descend
+ didn't yield "."
+ (Pathname#ascend): ditto.
+
+Fri Sep 2 23:51:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_arg): f_norm_arg is a VALUE in ripper, not an ID.
+ fixed: [ruby-dev:26942]
+
+ * lib: do not use __send__ to access private methods. [ruby-dev:26935]
+
+Thu Sep 1 17:11:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): wrong condition for $SAFE restoration.
+
+Thu Sep 1 14:12:45 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: On Tcl8.5, MultiTkIp#invoke_hidden doesn't
+ work (gives wrong order of arguments).
+
+ * ext/tk/lib/multi-tk.rb: add MultiTkIp#invoke_hidden_on_namespace
+ to support '-namespace' option of 'interp invokehidden' command
+ on Tcl8.5.
+
+Wed Aug 31 14:41:30 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (OPTFLAGS): default global optimization to
+ disabled for all VC++ versions. fixed: [ruby-dev:26897]
+
+Wed Aug 31 10:36:09 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * process.c (proc_detach, proc_setmaxgroups): missing argument type
+ declaration. (I recommend ANSI-style function)
+
+Wed Aug 31 06:59:01 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_scan): already String#scan behaves differently
+ regarding if block is given.
+
+Tue Aug 30 23:49:34 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c, dir.c, enum.c, hash.c, io.c, range.c, string.c, struct.c:
+ let enumerable methods return Enumerator. [ruby-dev:26924]
+
+ * intern.h (RETURN_ENUMERATOR): utility macro for enumerable methods.
+
+Tue Aug 30 23:25:45 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/debug.rb: no need to restart at exit.
+
+Tue Aug 30 23:20:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_rescue2): initialization miss. fixed: [ruby-dev:26917]
+
+ * lib/mkmf.rb (xsystem, xpopen): no longer expand by Config.
+
+ * lib/mkmf.rb (link_command, cc_command, cpp_command): expand
+ variables at once, and quote hdrdir. fixed: [ruby-core:05680]
+
+ * lib/mkmf.rb (libpathflag): quote paths.
+
+Tue Aug 30 19:34:27 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/digest/md5/md5ossl.h, ext/digest/rmd160/rmd160ossl.h,
+ ext/digest/sha1/sha1ossl.h: include <stddef.h> to avoid
+ error in compilation with OpenSSL-0.9.8. [ruby-list:41068]
+
+Tue Aug 30 16:19:40 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/init.rb: bug fix. [ruby-dev: 26920]
+
+Tue Aug 30 16:13:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_count): new method. [ruby-dev:26895]
+
+Tue Aug 30 12:45:15 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_send): do not call private methods if the receiver
+ is specified. [ruby-talk:153672]
+
+Mon Aug 29 19:47:18 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/rdoc/usage.rb: improper exceptions. [ruby-dev:26870]
+
+ * lib/rdoc/usage.rb: support the case when non-ruby code exists before
+ shebang. (this is needed when ri.bat is executed on windows)
+
+Mon Aug 29 18:58:05 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/init.rb: make IRB -I option that is same behavior for ruby.
+ [ruby-dev:26872]
+
+ * lib/irb/locale.rb: support to print help message when OS locale is
+ ja_JP.utf-8. [ruby-dev:26872]
+
+Mon Aug 29 01:43:05 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#descend): new method.
+ (Pathname#ascend): ditto.
+
+Mon Aug 29 00:35:09 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb: require 'date/format' instead of 'parsedate'.
+ (Time.parse): extract fractional seconds using Date._parse.
+ (Time.strptime): extract fractional seconds using Date._strptime.
+ [ruby-talk:153859]
+
+Sat Aug 27 20:13:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/curses/curses.c ({curses,window}_clrtoeol): added. suggested
+ by Reyn Vlietstra.
+
+ * ext/curses/curses.c: chtype in curses is not `char', rather `long'.
+ [ruby-Bugs:2298]
+
+ * ext/curses/view.rb: String =~ String is deprecated.
+
+Thu Aug 25 15:48:58 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/win32ole/win32ole.c: suppress warnings. (win32)
+
+Wed Aug 24 11:01:26 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/logger/test_logger.rb (test_shifting_size): should close log
+ device before unlink, since some platform cannot unlink opened
+ file.
+
+Tue Aug 23 06:07:02 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/digest.rb: added SHA224, SHA256, SHA384 and SHA512.
+ these features are enabled if this library is compiled with
+ OpenSSL 0.9.8 or later.
+
+ * test/openssl/test_digest.rb: add test for new digests.
+
+Tue Aug 23 05:47:04 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): try to decode
+ the argument as a string.
+
+ * ext/openssl/ossl_ns_pki.c (ossl_spki_to_der): new method.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_initialize): should
+ set @time to avoid warning.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths,
+ X509_STORE_add_cert, X509_STORE_add_crl): should raise error if
+ wrapped functions fails.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_set_ciphers): fix error message.
+
+ * ext/openssl/ossl_x509req.c (ossl_x509req_set_attributes): get rid
+ of unused variable.
+
+ * test/openssl/test_ns_spki.rb: add new file.
+
+ * test/openssl/test_x509store.rb: add test for error.
+
+Tue Aug 23 01:11:40 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * sprintf.c (ruby__sfvwrite): should move `buf' to the end of
+ `result'. [ruby-dev:26859]
+
+Mon Aug 22 23:51:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: ONIG_OPTION_CAPTURE_GROUP conflicts with
+ RE_OPTION_ONCE. [ruby-dev:26852]
+
+Mon Aug 22 20:11:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD__sprint): needs to call vwrite function
+ pointer. fixed: [ruby-dev:26854]
+
+Sat Aug 20 23:55:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): update paren_nest for brackets [].
+
+Sun Aug 21 00:10:23 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/wsdl/xmlSchema/importer.rb (WSDL::XMLSchema::Importer#fetch): add
+ a workaround for importing an WSDL whose path begins with drive
+ letter. [ruby-dev:26242]
+
+Sat Aug 20 22:05:25 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * regexec.c (code_is_in_cclass_node): check code size.
+ [ruby-dev:26840]
+
+Sat Aug 20 22:37:13 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb (write, shift_log?, shift_log): file shifting race
+ condition bug fixed. [ruby-dev:26764]
+
+ * test/logger/test_logger.rb: tests.
+
+Fri Aug 19 18:13:39 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb (Time.apply_offset): fix a problem with last day of
+ month. reported by Lucas Nussbaum. [ruby-talk:152866]
+
+Thu Aug 18 11:05:36 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (socketpair_internal): need to call open_ifs_socket()
+ to create sockets instead of winsock's socket().
+ fixed: [yarv-dev:581]
+
+Wed Aug 17 23:58:05 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (terminate_process): take String message.
+
+ * eval.c (rb_thread_switch): propagate the exception caused thread
+ termination directly. fixed: [ruby-core:05552]
+
+Wed Aug 17 21:20:05 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb: ensure that symbol_to_option is private_class_method
+ and all other methods are module_function
+ fixed: [ruby-dev:26808]
+
+Wed Aug 17 00:05:46 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_add_method): preserve safe level in the environment
+ where a method is defined .
+
+ * eval.c (rb_call0): restore preserved safe level in the method
+ execution.
+
+ * parse.y (lambda): need separate block variable stack
+ manipulation and lpar_beg maintenance. based on a patch found
+ in [ruby-core:05551] from Mauricio Fernandez <mfp at acm.org>.
+
+ * parse.y (parser_yylex): adjust lpar_beg after tLAMBEG and
+ kDO_LAMBDA. [ruby-core:05551]
+
+Mon Aug 15 07:24:38 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (rb_check_to_integer): add declaration.
+
+ * object.c (rb_to_integer, rb_check_to_integer): argument constified.
+
+Mon Aug 15 00:38:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_rescue2): reduce PUSH_TAG() as well as NODE_RESCUE.
+ [ruby-dev:26800]
+
+ * range.c (range_check, range_init): reduce useless exceptions.
+
+Mon Aug 15 00:34:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yycompile): remove unreachable code. [yarv-dev:570]
+
+Sat Aug 13 22:16:12 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_entry_secure): forgot final chdir.
+
+Sat Aug 13 22:07:49 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_entry_secure): uses chdir(2) and check
+ if current directory is correct. [ruby-dev:26100] [ruby-dev:26226]
+
+Sat Aug 13 21:11:05 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_VARIANT class.
+
+ * ext/win32ole/tests/testall.rb: ditto.
+
+ * ext/win32ole/tests/testOLEVARIANT.rb: ditto.
+
+Sat Aug 13 18:51:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_block_pass): distinguish current block from others.
+ fixed: [ruby-dev:26274]
+
+ * ext/stringio/stringio.c (strio_set_string): disallow nil.
+ http://www.rubyist.net/~nobu/t/20050811.html#c05
+
+Sat Aug 13 08:01:59 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb: Kconv.kconv is now alias of Kconv.conv
+ * ext/nkf/lib/kconv.rb: remove nkf dependent symbols from SYMBOL_TO_OPTION
+
+Fri Aug 12 17:06:53 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_larglist): allow optional arguments even when
+ parentheses are omitted. based on Nobu's patch from
+ http://www.rubyist.net/~nobu/t/20050805.html
+
+ * parse.y (parser_yylex): update & maintain lpar_beg for detect
+ lambda parameters.
+
+Thu Aug 11 23:29:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c: keep holding string after closed.
+
+Thu Aug 11 20:48:40 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * numeric.c (fix_equal, fix_cmp, fix_gt, fix_ge, fix_lt, fix_le):
+ reduce coercing when a method knows about a operand type.
+ [ruby-dev:26789]
+
+Thu Aug 11 13:01:48 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss: fixed sort bug. [ruby-list:41018]
+
+ * lib/rss/1.0.rb (RSS::RDF::Channel#setup_maker_attributes):
+ removed self.
+
+ * lib/rss/maker/base.rb (RSS::Maker::ItemsBase#<=>): use #date
+ instead of @date.
+ (RSS::Maker::Base::self.def_array_element): added #size.
+
+ * lib/rss/maker/1.0.rb
+ (RSS::Maker::RSS10::Channel#to_rss,
+ RSS::Maker::RSS10::Items::Item#to_rss): cleared dc_dates set
+ upped by using #date.
+
+ * lib/rss/maker/dublincore.rb
+ (RSS::Maker::ChannelBase, RSS::Maker::ItemsBase::ItemBase):
+ fixed opposite alias.
+
+ * test/rss/test_setup_maker_1.0.rb
+ (RSS::TestSetupMaker10::test_setup_maker_items_sort): added some
+ tests for RSS::Maker::ItemsBase#do_sort.
+
+Wed Aug 10 12:01:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb: simplifies Delegator classes; SimpleDelegator
+ now uses method_missing for all methods.
+
+Wed Aug 10 10:38:50 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_mul0): multiply two numbers (x, y) without
+ normalizing the result. x should be a big number.
+ [ruby-dev:26778]
+
+ * bignum.c (rb_big_pow): use rb_big_mul0() instead of
+ rb_big_mul().
+
+ * array.c (rb_ary_or, rb_ary_and, rb_ary_plus, rb_ary_diff):
+ revert the change on 2005-08-03. Set operation on other item
+ should have in separate methods.
+
+ * parse.y (shadowing_lvar_gen): warn when arguments shadows
+ external local variables.
+
+ * parse.y (f_opt): optional arguments should not clobber external
+ local variables.
+
+ * parse.y (f_rest_arg): rest arguments should not clobber external
+ local variables.
+
+Wed Aug 10 10:29:40 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fix bug on handling __ruby2val_optkeys().
+
+ * ext/tk/lib/tk/itemconfig.rb: fix bug on handling
+ __item_ruby2val_optkeys().
+
+ * ext/tk/lib/tk/canvas.rb: didn't check __item_ruby2val_optkeys().
+
+ * ext/tk/lib/tkextlib/blt/component.rb: ditto.
+
+Tue Aug 9 21:53:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (formal_assign): let default values override
+ arguments to zsuper. fixed: [ruby-dev:26743]
+
+Tue Aug 9 20:30:19 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * bignum.c (rb_big_coerce): allow bignum x bignum coercing.
+ [ruby-dev:26778]
+
+Tue Aug 9 15:12:04 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: remove dangerous 'rb_jump_tag's.
+
+ * ext/tk/lib/tk.rb: add __val2ruby_optkeys and __ruby2val_optkeys to
+ help to convert option values between ruby and tcl.
+
+ * ext/tk/lib/tk/itemconfig.rb: add __item_val2ruby_optkeys and
+ __item_ruby2val_optkeys to help to convert option values between
+ ruby and tcl.
+
+ * ext/tk/lib/tk/radiobutton.rb: use __ruby2val_optkeys for 'variable'
+ option (for the reason of backward compatibility).
+
+ * ext/tk/lib/tk/composite.rb: clarify the arguments of super().
+
+ * ext/tk/lib/tk/spinbox.rb: ditto.
+
+ * ext/tk/lib/tk/text.rb: ditto.
+
+ * ext/tk/lib/tk/validation.rb: ditto.
+
+ * ext/tk/lib/tkextlib/*: support to treat tkvariable-type
+ configure options.
+
+Tue Aug 9 08:24:05 2005 Mauricio Fernandez <mfp@acm.org>
+
+ * parse.y (f_block_arg), eval.c (rb_yield_0): deal with dynamic
+ variable lambda arguments. [ruby-core:05540]
+
+Mon Aug 8 22:13:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (assign): deal with new block argument.
+ fixed: [ruby-core:05536]
+
+ * eval.c (rb_node_arity): follow change of NODE_ARGS.
+ fixed: [ruby-dev:26761]
+
+Mon Aug 8 21:28:13 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_fnmatch.rb: separated from test_file.rb.
+
+Mon Aug 8 20:40:35 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_method.rb: added. [ruby-dev:26761]
+
+Mon Aug 8 01:26:37 2005 Mauricio Fernandez <mfp@acm.org>
+
+ * parse.y (f_larglist): mistake in syntax rule. [ruby-core:05535]
+
+Mon Aug 8 05:16:55 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (ossl_raise): should use ERR_peek_last_error
+ to get last error on the current thread. And should report
+ if errors are on the stack while OpenSSL.debug is true.
+
+ * ext/openssl/ossl.c (ossl_get_errors): new method for debugging
+ this library.
+
+Mon Aug 8 05:15:19 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpproxy.rb (HTTPProxyServer#initialize),
+ lib/webrick/httpserver.rb (HTTPServer#initialize),
+ lib/webrick/httpservlet/cgihandler.rb (CGIHandler#initialize),
+ lib/webrick/httpservlet/erbhandler.rb (ERBHandler#initialize),
+ lib/webrick/httpservlet/filehandler.rb(DefaultFileHandler#initialize):
+ super (called with no arguments) takes default value of optional
+ arguments. [ruby-dev:26743]
+
+ * lib/webrick/httputils.rb: add a media-type "text/html" for .xhtml.
+
+Sun Aug 7 23:52:39 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_super.rb: added optional arg tests. [ruby-dev:26743]
+ the tests expects 1.8 behavior at this time.
+
+Sat Aug 6 12:35:24 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/{tk.rb,tk/itemconfig.rb}: configure creates
+ TkVariable if key name is 'variable' or 'textvariable'
+ by default. [ruby-dev:26749]
+
+ * ext/tk/lib/tk/{label,radiobutton}.rb: removed its own
+ {variable,textvariable} function.
+
+ * ext/tk/lib/tk/variable.rb: retains backward compatibility.
+
+Fri Aug 5 12:48:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c: fixed memory leak when tk_funcall raised
+ exception. (copies argv into heap in tk_funcall instead of
+ caller)
+
+Fri Aug 5 12:36:40 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): need to convert path separator
+ before invoking install command.
+
+Fri Aug 5 08:08:05 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (return_jump): fix "can't across thread" error message
+ when no thread associated.
+ http://www.namikilab.tuat.ac.jp/~sasada/diary/200507.html#d31
+
+Fri Aug 5 00:25:12 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c: refactoring - extract ruby string <->
+ tcl object conversion as get_str_from_obj and get_obj_from_str.
+
+Fri Aug 5 00:19:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (Init_Enumerator): provided features should have
+ extensions.
+
+ * eval.c (rb_feature_p): returns type of the feature instead of
+ extension.
+
+ * eval.c (search_required): ruby library should be prior to statically
+ linked extensions. fixed: [ruby-dev:26711]
+
+ * eval.c (formal_assign): returns position of rest arguments variable.
+
+ * parse.y (f_rest_arg): use anonymous variable for rest arguments.
+ fixed: [ruby-dev:26647]
+
+ * extmk.rb (extmake): needs to be wrapped in an Array.
+
+Thu Aug 4 20:03:18 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * numeric.c (Init_Numeric): do not share implementation among
+ Fixnum#/ and Fixnum#div. [ruby-core:05531]
+
+Thu Aug 4 18:38:36 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: cannot compile for Tcl7.6/Tk4.2.
+
+ * ext/tk/tcltklib.c: add nativethread consistency check.
+
+ * ext/tk/stubs.c: ditto.
+
+ * ext/tk/lib/tk.rb: forgot to define TclTkIp.encoding and encoding=
+ when Tcl is 7.6 or 8.0.
+
+ * ext/tk/lib/tk/wm.rb: support to make some methods as options of
+ root or toplevel widget. [ruby-talk:150336]
+
+ * ext/tk/lib/tk/root.rb: ditto.
+
+ * ext/tk/lib/tk/toplevel.rb: ditto.
+
+ * ext/tk/lib/tkextlib/SUPPORT_STATUS: update RELEASE_DATE
+
+Thu Aug 4 13:30:15 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_div): should not convert the result into
+ integer. [ruby-core:05524]
+
+Thu Aug 4 08:03:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): should not modify $mflags for each
+ extensions.
+
+Thu Aug 4 00:25:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, Makefile.in, {bcc32,win32,wince}/Makefile.sub: integrated
+ macro definitions.
+
+ * bcc32/Makefile.sub: LIBRUBY_SO should use DLDOBJS, not EXTOBJS.
+
+ * {win32,wince}/Makefile.sub: separate config.h for compiler versions.
+
+Thu Aug 4 00:24:59 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c: replacing is no longer needed.
+
+Wed Aug 3 21:59:16 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: TkVariable#trace didn't work on
+ TkVariable retrieved from TkVariable.new_hash.ref. [ruby-dev:26721]
+
+Wed Aug 3 12:40:28 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * numeric.c (fix_plus): reduce coercing when a method knows about
+ a operand type. [ruby-dev:26723]
+
+ * numeric.c (fix_minus, fix_mul, fix_quo, fix_div, fix_mod,
+ fix_divmod, fix_pow): ditto.
+
+ * bignum.c (rb_big_div, rb_big_modulo): export to reduce
+ coercing.
+
+Wed Aug 3 10:13:52 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, {bcc32,win32,wince}/Makefile.sub (HAVE_SNPRINTF,
+ HAVE_VSNPRINTF): use win32/win32.c's implementation instead of
+ missing/vsnprintf.c's.
+
+ * win32/win32.[ch] (rb_w32_snprintf, rb_w32_vsnprintf): reverted.
+
+Wed Aug 3 10:05:08 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check vsnprintf() and snprintf().
+
+ * sprintf.c, missing/vsnprintf.c: made vsnprintf() and snprintf()
+ private. fixed: [ruby-dev:26651]
+
+Wed Aug 3 08:22:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): revert [ruby-talk:111654]
+ changes at 2004-09-07. [ruby-dev:26656]
+
+Wed Aug 3 06:53:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_or): wraps the operand in an array if it is not
+ an array. [ruby-talk:150495] [EXPERIMENTAL]
+
+ * array.c (rb_ary_and, rb_ary_plus, rb_ary_diff): ditto.
+
+Tue Aug 2 10:23:12 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c: use Tcl_[GS]etVar2Ex instead of
+ Tcl_Obj[GS]etVar2. (avoid Tcl_NewStringObj on supported platforms)
+
+ * ext/tk/tcltklib.c: use ip_{get,set,unset}_variable2_core from
+ ip_{get,set,unset}_variable.
+
+ * ext/tk/tcltklib.c: replaced Tcl_Panic with rb_bug.
+
+Tue Aug 2 01:40:38 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/ping.rb (Ping.pingecho): should rescue StandardError.
+ [ruby-dev:26677]
+
+Mon Aug 1 19:02:23 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c: refactoring - replaced rb_ivar_defined &
+ rb_ivar_get with single rb_attr_get call.
+
+Mon Aug 1 18:44:08 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c (Tcl_GetStringResult): refactoring - define
+ alternative macro on Tcl7.x or earlier.
+
+Mon Aug 1 13:53:55 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c (deleted_ip): refactoring - interpreter
+ deletion check. [ruby-dev:26664]
+
+Mon Aug 1 01:08:21 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (check_insecure_method): use private_methods and
+ protected_methods instead of respond_to? to check method visibility.
+ [ruby-dev:26616]
+
+ * test/drb/drbtest.rb: ditto.
+
+ * test/drb/ut_drb.rb: ditto.
+
+Sat Jul 30 18:49:44 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_TYPE#ole_typelib,
+ WIN32OLE_TYPE#implemented_ole_types.
+
+ * ext/win32ole/tests/testOLETYPE.rb: ditto.
+
+Fri Jul 29 16:12:02 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/context.rb: fix `irb --readline` option. [ruby-dev:40955]
+
+Fri Jul 29 09:59:38 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call0): fix calling zsuper from a method with anonymous
+ rest argument. [ruby-dev:26639]
+
+ * eval.c (rb_yield_0): push yielded node instead of yielding.
+ fixed: [yarv-dev:549]
+
+Thu Jul 28 21:49:17 2005 IWATSUKI Hiroyuki <don@na.rim.or.jp>
+
+ * parse.y (rb_parser_end_seen_p): exclude from ripper.
+ <http://moonrock.jp/~don/d/200507.html#d28_t2>
+
+ * sprintf.c (clearerr): remove standard macro before re-definition.
+ <http://moonrock.jp/~don/d/200507.html#d28_t3>
+
+Thu Jul 28 18:09:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/stubs.c: When --enable-tcltk-stubs, the initialize
+ routine creates a Tcl/Tk interpreter and deletes it. However,
+ init cost of Tk's MainWindow is not so small. And that makes it
+ impossible to use libraries written with Tcl functions only on
+ an environment without a graphical display. This changes support
+ delaying initialization of Tk_Stubs until the script needs Tk.
+
+ * ext/tk/stubs.h: New file. Define prototypes and return codes of
+ functions on stubs.c.
+
+ * ext/tk/tcltklib.c: Support delaying initialization of Tk_Stubs
+ until the script needs Tk.
+
+ * ext/tk/tcltklib.c: Show friendly error messages for errors on
+ initialization.
+
+ * ext/tk/tcltklib.c: Avoid SEGV on ip_finalize() when ruby is
+ exiting and $DEBUG is true. (Not fix. If you know the reason of
+ why, please fix it.)
+
+ * ext/tk/tkutil/tkutil.c (ary2list, ary2list2): bug fix on handling
+ of encoding.
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string and bg_eval_string
+ don't work properly.
+
+ * ext/tk/lib/tk.rb: Forget extending Tk::Encoding module to Tk.
+
+ * ext/tk/lib/tk/variable.rb: TkVarAccess fails to initialize the
+ object for an element of a Tcl's array variable.
+
+Thu Jul 28 17:23:37 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_larglist): allow block argument in lambda parameter
+ list without parenthesis.
+
+Thu Jul 28 17:14:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (each_i): typo fixed. [ruby-dev:26622]
+
+Thu Jul 28 15:04:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_arg): better argument name duplication check
+
+ * parse.y (new_args_gen): factored out name duplication check for
+ optional and rest arguments.
+
+ * parse.y (new_bv_gen): allow shadowing outer local variables;
+ warning remains.
+
+Thu Jul 28 13:46:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ripper_warningS): the argument was omitted.
+ [ruby-dev:26621]
+
+Thu Jul 28 11:30:57 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_larglist): allow bv_decl at the end of lambda
+ argument list. [EXPERIMENTAL]
+
+ * parse.y (new_bv_gen): allow local variable shadowing, with
+ warning in verbose mode.
+
+Wed Jul 27 23:23:54 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (obj_free): make message format consistent with one from
+ gc_mark(). [ruby-talk:149668]
+
+ * sprintf.c (quad_t): prepare quad_t as well. [ruby-talk:149668]
+
+Wed Jul 27 22:11:37 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin: removed. because the plugin
+ is imported in the tDiary plugin packages.
+
+Wed Jul 27 19:11:53 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (cd): follow :noop option change. (This patch
+ is contributed by Doug Kearns)
+
+Wed Jul 27 16:25:59 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (lambda): Perl6 style -> lambda expression. [NEW]
+ [VERY EXPERIMENTAL]
+
+Wed Jul 27 10:43:14 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (id2ref): must not assign pointers to long int. use
+ LONG_LONG instead if SIZEOF_LONG < SIZEOF_VOIDP.
+ [ruby-talk:149645]
+
+ * ruby.h: use LONG_LONG to simplify the change.
+ [ruby-talk:149645]
+
+Wed Jul 27 10:59:02 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_each): rewinddir(3) before iteration.
+ [ruby-talk:149628]
+
+Wed Jul 27 02:34:58 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_throw): replace all '0x%lx' by '%p'.
+ [ruby-talk:149553]
+
+ * missing/vsnprintf.c (BSD_vfprintf): '%p' need to handle 64bit
+ size pointer. [ruby-talk:149553]
+
+Tue Jul 26 22:41:28 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/sexp.rb: new method Ripper.sexp_raw.
+
+ * ext/ripper/lib/ripper/sexp.rb (Ripper.sexp): returns more
+ readable tree. This is suggested by Kirill A. Shutemov.
+
+Tue Jul 26 22:05:12 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: merge a patch contributed by Daniel Berger,
+ with some modification. (RubyForge #2128)
+
+Tue Jul 26 18:11:33 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: support LLP64 model. [ruby-talk:149524]
+
+Tue Jul 26 12:57:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/openssl_missing.c: include <openssl/engine.h> before
+ <openssl/x509_vfy.h> to avoid compilation error of mswin32.
+ suggested by NAKAMURA Usaku.
+
+Mon Jul 25 23:48:55 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch]: (rb_w32_vsnprintf, rb_w32_snprintf): removed.
+
+Mon Jul 25 21:30:46 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: Borland MAKE doesn't look for file names which have paths
+ from VPATH. fixed: [ruby-dev:26604]
+
+ * ruby.h (NORETURN, DEPRECATED): moved just after config.h.
+
+ * {win32,wince}/Makefile.sub: vsnprintf() is in missing now.
+
+ * {bcc32,win32,wince}/Makefile.sub: moved CPPFLAGS only for ruby
+ source to XCFLAGS.
+
+Mon Jul 25 14:10:02 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: fix en-bugged part in the last commit.
+
+Mon Jul 25 13:45:18 2005 NAJIMA Hiroki <najima@mickey.ai.kyutech.ac.jp>
+
+ * io.c: check HAVE_SYS_IOCTL_H before including the header.
+ [ruby-dev:26610]
+
+Sat Jul 23 16:48:12 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_load): should check
+ OPENSSL_NO_STATIC_ENGINE.
+
+Sat Jul 23 11:46:30 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_fd_select): the all three fd_sets must be long enough for
+ select. fixed: [ruby-talk:149059]
+
+Sat Jul 23 10:01:41 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_vsprintf, rb_sprintf): new functions return new String,
+ using missing/vsnprintf.c. [ruby-dev:26580]
+
+ * missing/vsnprintf.c: made the output changeable.
+
+Fri Jul 22 21:06:08 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * bignum.c (rb_big_eq): reduce isnan(). [ruby-dev:26600]
+
+ * numeric.c (flo_eq, flo_gt, flo_ge, flo_lt, flo_le): ditto.
+
+Fri Jul 22 15:02:39 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: moved copyright description to lib/rss.rb.
+
+ * lib/rss.rb: added for convenience.
+
+ * sample/rss/re_read.rb: added #to_s sample.
+
+ * sample/rss/blend.rb: use 'require "rss"' instead of
+ 'require "rss/*"'.
+ * sample/rss/list_description.rb: ditto.
+ * sample/rss/rss_recent.rb: ditto.
+ * sample/rss/tdiary-plugin/rss-recent.rb: ditto.
+
+ * sample/rss/tdiary-plugin/rss-recent.rb: 0.0.6 -> 0.0.7.
+
+Fri Jul 22 14:37:43 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::Parser#initialize): accept HTTP/FTP
+ URI and local file path too.
+
+ * test/rss/test_parser.rb (RSS::TestParser#test_parse): test
+ for the above.
+
+Fri Jul 22 07:01:42 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil/tkutil.c (tk_conv_args): forget to revert
+ thread_critical and gc_disable when raise ArgumentError.
+
+ * ext/tk/lib/remote-tk.rb: RemoteTkIp doesn't need to include TkUtil.
+
+ * ext/tk/tcltklib.c: add TclTkIp#has_mainwindow? method.
+
+ * ext/tk/lib/tk.rb: add Tk.has_mainwindow? method.
+
+ * ext/tk/lib/multi-tk.rb: add MultiTkIp#has_mainwindow? method.
+
+ * ext/tk/lib/remote-tk.rb: add RemoteTkIp#has_mainwindow? method.
+
+ * ext/tk/lib/multi-tk.rb: slave IP fail to exit itself when $SAFE==4.
+
+ * ext/tk/lib/multi-tk.rb: remove constants from MultiTkIp module to
+ avoid access from external.
+
+ * ext/tk/lib/multi-tk.rb: check_root flag is ignored on slave IPs'
+ mainloop.
+
+ * ext/tk/lib/multi-tk.rb: hang-up Tk.mainloop called on a slave IP
+ with $SAFE==4.
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp#bg_eval_proc doesn't work
+ properly.
+
+ * ext/tk/lib/multi-tk.rb: add MultiTkIp#set_cb_error(proc) and
+ cb_error(exc) to log errors at callbacks on safe slave IPs.
+
+ * ext/tk/lib/multi-tk.rb: fail to get an available slave IP object
+ when call Tk.mainloop in the block which is given to new_* method,
+ because cannot finish initialize while the root widget is alive.
+
+ * ext/tk/lib/multi-tk.rb: fail to control a slave IP when Tk.mainloop
+ runs on the IP.
+
+Thu Jul 21 01:00:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c,utf8tbl.c,config.h}:
+ import 1.76
+ [ruby-dev:26592] nkf constification
+
+Wed Jul 20 19:18:52 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (S_ISREG): need to define S_ISREG before it is used first.
+
+Wed Jul 20 18:33:15 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * io.c (wsplit_p): patch for the environment where
+ fcntl(F_GETFL, O_NONBLOCK) is not supported. in that case,
+ set FMODE_WSPLIT without fcntl check. [ruby-dev:26566]
+
+Wed Jul 20 18:07:11 2005 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_ctl): update FMODE_WSPLIT_INITIALIZED and FMODE_WSPLIT
+ by F_SETFL.
+
+Wed Jul 20 10:04:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_class_path): need to adjust snprintf() len for
+ terminating NUL. [ruby-dev:26581]
+
+Wed Jul 20 03:58:52 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/socket/socket.c: sorry, BeOS also uses HAVE_CLOSESOCKET,
+ so reverted.
+
+ * ext/socket/extconf.rb: should not define HAVE_CLOSESOCKET
+ on windows.
+
+Wed Jul 20 03:12:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/socket/socket.c: should not undef close() on win32.
+ it's defined to rb_w32_close(), otherwise handle leaks.
+ [ruby-Bugs-2131]
+
+Wed Jul 20 00:48:16 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (syserr_initialize): don't use str before StringValue()
+ check. [ruby-dev:26579]
+
+Tue Jul 19 22:47:29 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (syserr_initialize): add 1 byte for snprintf() size for
+ NUL at the end. [ruby-dev:26574]
+
+Tue Jul 19 17:16:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (trap): remove sigexit(); handle "EXIT" via sig_exec().
+ [ruby-dev:26440]
+
+ * io.c (rb_io_inspect): replace sprintf() with "%s" format all
+ over the place by snprintf() to avoid integer overflow.
+
+Tue Jul 19 14:10:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c: rbtk_eventloop_depth is used as int.
+
+ * ext/tk/tcltklib.c: rbtk_pending_exception is tested with
+ NIL_P, so should assign Qnil instead of 0 (Qfalse).
+
+ * ext/tk/tcltklib.c (ip_invoke_real): fixed memory leak when
+ ip is deleted.
+
+Tue Jul 19 13:19:46 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: For symmetry, add TkVariable#string. It
+ returns a string even if the default value type of the TkVariable
+ object is not "string".
+
+Mon Jul 18 21:39:18 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * eval.c (rb_call0): make the pointer to NODE volatile
+ instead of NODE itself.
+
+Mon Jul 18 14:32:21 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_call0): make body volatile to avoid possible optimization
+ problem.
+ [ruby-dev:26195]
+
+Mon Jul 18 12:23:27 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/io/wait/wait.c: wrong backport from trunk, and compile error on
+ platforms fd_set is not a bit set. fixed: [ruby-dev:26562]
+
+Mon Jul 18 09:36:25 2005 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h (FMODE_WSPLIT, FMODE_WSPLIT_INITIALIZED): new constant.
+
+ * io.c (wsplit_p): new function.
+ (io_fflush): split writing data by PIPE_BUF if wsplit_p is true in
+ multi-threaded mode.
+ (io_fwrite): ditto.
+ [ruby-dev:26540]
+
+Mon Jul 18 05:00:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: import nkf.c 1.73
+ fix: TestKconv 1F
+
+Sun Jul 17 13:46:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/wait/extconf.rb, ext/io/wait/wait.c: Win32 platforms support.
+
+Sat Jul 16 23:43:16 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (Init_Enumerator): wrong argument specs.
+ [ruby-core:05481]
+
+Sat Jul 16 15:52:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.[hc]: constified socket functions. [ruby-dev:26553]
+
+Fri Jul 15 23:59:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_c.rb (handle_class_module): handle a
+ module enclosed in a built-in module. fixed: [ruby-talk:148239]
+
+ * lib/rdoc/parsers/parse_c.rb (find_body): allow macros as methods.
+
+ * lib/rdoc/parsers/parse_c.rb (find_call_seq): allow :nodoc: modifier
+ in C. [ruby-core:04572]
+
+Fri Jul 15 23:20:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (Init_Enumerator): use an internal directly.
+
+Fri Jul 15 07:58:10 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#accept_client):
+ sockets should be non-blocking mode. [ruby-dev:26405]
+
+ * lib/webrick/utils.rb (WEBrick::Utils.set_non_blocking): new method.
+
+Fri Jul 15 00:11:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enumeratorize): create new enumerator for current method if
+ no block is given.
+
+ * enumerator.c: moved from ext/enumerator.
+
+Thu Jul 14 18:27:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_strerror): should return correct message
+ for ENAMETOOLONG and ENOTEMPTY. (bcc32) [ruby-dev:26533]
+
+ * win32/win32.c (rb_w32_strerror): stripped CR LF on the tail.
+ (bcc32) [ruby-dev:26533]
+
+Thu Jul 14 00:45:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * LEGAL (ext/nkf/nkf-utf8): updated from nkf1.7 to nkf-utf8.
+
+Wed Jul 13 22:44:00 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y: remove static variables. [ruby-dev:26530]
+
+Wed Jul 13 19:36:29 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_mkdir): should set EEXIST (not EACCES)
+ if file or directory already exists. (bcc32) [ruby-dev:26508]
+
+ * win32/win32.c (rb_w32_rmdir): should set ENOTDIR (not EINVAL)
+ if it is not directory. (bcc32, win32)
+
+ * win32/win32.c (rb_w32_rmdir, rb_w32_unlink): restore
+ FILE_ATTRIBUTE_READONLY flag on function failure.
+
+Wed Jul 13 12:40:00 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: TclTkLib.do_one_event doesn't work.
+
+ * ext/tk/lib/tk.rb: Tk.thread_update is available.
+
+Tue Jul 12 23:32:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: keep curdir unexpanded.
+
+Mon Jul 11 23:50:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c, intern.h (rb_proc_call, rb_obj_method, rb_method_call):
+ export.
+
+ * ext/enumerator/enumerator.c (enumerator_with_index): [EXPERIMENTAL]
+ added a new method Enumerator#with_index. [ruby-talk:147728]
+
+Mon Jul 11 08:31:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (fetch_escaped_value): mask values following \c in
+ regexp. fixed: [ruby-dev:26500]
+
+Sun Jul 11 05:18:17 2005 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb (XMLRPC::Server): Switch from GServer over to
+ WEBrick. This makes file lib/xmlrpc/httpserver.rb obsolete (at least it is
+ no further used by the XML-RPC library).
+
+Mon Jul 11 02:50:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#request_line):
+ mistook to merge the patch of [ruby-dev:26235] at
+ revision 1.11.
+
+Sun Jul 10 23:58:04 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#unlink): try Dir.unlink first to
+ avoid unlink a directory by root.
+ cf. [ruby-dev:26237]
+
+Sun Jul 10 12:47:01 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/debug.rb (debug_command): added a deficient format specifier.
+ fixed: [ruby-core:05419]
+
+Sat Jul 9 22:02:37 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_method_dispid): convert dispid
+ in Ruby and C by INT2NUM and NUM2INT.
+
+ * ext/win32ole/win32ole.c (ole_invoke2): ditto.
+
+ * ext/win32ole/test/testWIN32OLE.rb: ditto.
+
+ * ext/win32ole/test/testOLEMETHOD.rb: ditto.
+
+Fri Jul 8 15:45:04 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.4 -> 0.1.5.
+
+ * test/rss/test_version.rb (RSS::TestVersion#test_version):
+ ditto.
+
+ * lib/rss/0.9.rb (RSS::Rss::Channel::Item::Category):
+ domain attribute of <category> is optional. Thanks to
+ Chris Lee <clee@kde.org>.
+
+ * test/rss/test_parser.rb (RSS::TestParser#test_category20):
+ adjusted test case.
+
+Wed Jul 6 18:45:53 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_pattern_match): now returns nil.
+ [ruby-core:05391]
+
+Mon Jul 4 14:35:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/svr.rb: service can be stopped by ill-behaved client; use
+ tsvr.rb instead.
+
+Mon Jul 4 13:25:21 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/erf.c: original erf.c by prof. Okumura is confirmed to
+ be public domain. reverted BSD implementation.
+
+Wed Jul 6 11:15:21 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (open_ifs_socket): new function.
+
+ * win32/win32.c (StartSockets, rb_w32_socket): use open_ifs_socket()
+ instead of socket().
+ all changes are derived from [ruby-core:5388].
+
+Wed Jul 6 00:15:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c,utf8tbl.c,config.h}:
+ imported nkf.c 1.70 (support UTF-8-MAC)
+
+ * ext/nkf/lib/kconv.rb: add :utf8mac and :internalunicode
+
+Tue Jul 5 23:44:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb: expand source library path.
+
+Tue Jul 5 23:27:14 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (sort_2): get rid of yet another bcc's bug.
+ fixed: [ruby-core:05152]
+
+ * eval.c (rb_thread_save_context): must not switch contexts during
+ re-allocating stack. fixed: [ruby-core:05219]
+
+Tue Jul 5 15:15:10 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil.c: fix typo.
+
+Tue Jul 5 14:52:56 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: bug fix on treating Unicode strings.
+
+ * ext/tk/tcltklib.c: add methods to treat encoding mode.
+
+ * ext/tk/MANUAL_tcltklib.eng: add description of TclTkLib#encoding,
+ encoding_system, and so on.
+
+ * ext/tk/MANUAL_tcltklib.eucj: ditto.
+
+ * ext/tk/tkutil/tkutil.c: fail to create a Tcl's list string from
+ an array including multiple kind of encoded strings.
+
+ * ext/tk/lib/tk.rb: ditto.
+
+ * ext/tk/lib/multi-tk.rb: 2nd arg of _{to|from}UTF8 is omissible.
+
+ * ext/tk/lib/remote-tk.rb: ditto.
+
+ * ext/tk/lib/tk.rb: override TclTkLib#encoding and encoding= to
+ use TkCore::INTERP.encoding and encoding=.
+
+ * ext/tk/lib/tk.rb: when "require 'tk'" and $KCODE=='NONE', check
+ DEFAULT_TK_ENCODING to decide Ruby/Tk's system encoding mode.
+
+ * ext/tk/lib/tk/encodedstr.rb: check both of Tk.encoding and
+ Tk.encoding_system. Tk.encoding has higher priority.
+
+ * ext/tk/lib/tk/optiondb.rb: ditto.
+
+ * ext/tk/lib/tk/spinbox.rb: ditto.
+
+ * ext/tk/lib/tk/validation.rb: ditto.
+
+ * ext/tk/lib/tk/namespace.rb: arguemnts for TclTkIp#_merge_tklist
+ should be UTF-8 strings.
+
+Mon Jul 4 19:29:32 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/set.rb: test change to follow revision 1.28. (duck typing?)
+
+Mon Jul 4 11:23:50 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/{dbm,gdbm,sdbm}/test_{dbm,gdbm,sdbm}.rb: skip some tests
+ which using fork on fork-less platforms.
+
+Sun Jul 3 23:26:30 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/wsdl/document/test_rpc.rb: compare formatted time string of
+ Time objects instead of comparing Time objects itself to avoid
+ unintended conflict of usec part. [ruby-dev:26220]
+
+Sat Jul 2 22:41:04 2005 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (unix_send_io, unix_recv_io): support x86-64 and
+ IA64.
+
+Sat Jul 2 17:06:23 2005 Tanaka Akira <akr@m17n.org>
+
+ * defines.h (FLUSH_REGISTER_WINDOWS): defined for IA64.
+ (flush_register_windows): declare flush_register_windows.
+
+ * eval.c (flush_register_windows): new function.
+
+ * ruby.h (NOINLINE): move up to be effective in defines.h.
+
+Sat Jul 2 15:19:41 2005 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: check select_large_fdset.
+
+ * eval.c: use select_large_fdset to support large file descriptors
+ on Solaris. [ruby-dev:26404]
+
+Fri Jul 1 17:55:08 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_neg): may be accessing bogus pointer value.
+
+Fri Jul 1 15:50:12 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * missing/erf.c: need to include some headers for some platforms.
+
+ * win32/win32.h (copysign, scalb): define for compatibility with
+ other platforms. [ruby-dev:26430]
+
+Fri Jul 1 15:37:42 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/crypt.c: modified to make it compilable on platforms
+ other than BSD. [ruby-dev:26430]
+
+ * missing/erf.c: ditto. code from <exp.c> merged.
+
+Fri Jul 1 12:44:56 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_http): refine post_connection_check
+ call.
+
+Fri Jul 1 11:34:08 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/crypt.c: replaced with 4.4BSD version.
+
+ * missing/erf.c: ditto.
+
+ * missing/vsnprintf.c: removed the third provision from the old
+ BSD license. [ruby-core:05177]
+
+Fri Jul 1 01:45:21 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_min, enum_max): must not return Qundef.
+ fixed: [ruby-core:05299]
+
+Fri Jul 1 00:18:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator::respond_to): respond_to? must check
+ destination object. [ruby-talk:146894]
+
+Thu Jun 30 23:52:12 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (trap): non-string trap hander was ignored.
+ fixed: [ruby-dev:26417]
+
+Thu Jun 30 19:00:21 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex::identify_number): alternative implements
+ for [ruby-dev:26410]. And support a numeric form of 0d99999.
+
+Thu Jun 30 17:28:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex::identify_number): should not treat
+ plain zero as an octal number. [ruby-dev:26410]
+
+Thu Jun 30 15:13:16 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): pre-evaluate argument for unambiguous
+ evaluation order. [ruby-dev:26383]
+
+Thu Jun 30 14:48:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/http.rb (Net::HTTP#connect, Net::HTTP#request): should
+ not send proxy username and password to origin servers.
+ [ruby-dev:25673]
+
+ * lib/net/http.rb (Net::HTTP::ProxyDelta#edit_path): should not
+ send HTTPS scheme URL to origine servers. [ruby-dev:25689]
+
+Thu Jun 30 09:53:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator::method_missing): forward unknown
+ method to the destination. suggested by
+ <christophe.poucet@gmail.com>. [ruby-talk:146776]
+
+Wed Jun 29 00:03:20 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * regparse.c (fetch_token): avoid warning of unused goto tag.
+ [ruby-dev:26389]
+
+Tue Jun 28 21:59:29 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * dir.c, eval.c, parse.y, process.c, ruby.c: avoid warning "unused
+ variable" [ruby-dev:26387]
+
+ * dir.c (glob_helper): avoid warning "enumeration value `RECURSIVE'
+ not handled in switch" [ruby-dev:26392]
+
+Tue Jun 28 01:52:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb: add Kconv::VERSION
+ * ext/nkf/lib/kconv.rb (conv): can process arrayed options
+ * ext/nkf/nkf-utf8/nkf.c: imported Revision 1.69
+ * ext/nkf/nkf-utf8/utf8tbl.c: imported Revision 1.9
+
+Sat Jun 25 23:30:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (detach_process_watcher): terminate process watcher
+ thread right after rb_waitpid() succeed. [ruby-talk:146430]
+
+Sat Jun 25 17:12:20 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_query): should
+ discard if key=val pair is empty. patch from Gary Wright.
+
+Sat Jun 25 15:49:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_min, enum_max, enum_min_by, enum_max_by): do not ignore
+ nil as the first element.
+
+Sat Jun 25 15:13:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/set.rb (Set#==): [ruby-dev:25206] (ported from ruby_1_8 branch)
+
+Sat Jun 25 11:37:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb: remove constants
+ Iconv_Shift_JIS, Uconv_EUC_JP, Iconv_UTF8
+ * ext/nkf/lib/kconv.rb: add module functions to Kconv
+ conv, {eucjp, shiftjis, utf8}?, guess_as_symbol
+ * ext/nkf/lib/kconv.rb: add instance methods to String
+ conv, {eucjp, shiftjis, utf8}?
+ * ext/nkf/lib/kconv.rb: add aliases Kconv.to_* and String#to_*
+
+Fri Jun 24 17:00:00 2005 Shigeo Kobayashi <shigeo@tinyforest.jp>
+
+ * ext/bigdecimal/bigdecimal.c: patch from "NATORI Shin"
+ (u-tokyo.ac.jp) applied to fix rounding bug.
+
+Fri Jun 24 13:17:45 2005 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/common.rb, lib/uri/generic.rb: fixed typo in documents and
+ replaced some existent domain name with "example.com".
+
+Fri Jun 24 12:23:19 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fix typo on Tk.grid_propagate.
+
+ * ext/tk/lib/tk.rb: Tk.event_generate and TkWindow#event_generate
+ accept TkEvent::Event object as context argument.
+
+ * ext/tk/lib/tk/event.rb: add TkEvent::Event#valid_fields and
+ valid_for_generate to get field parameters of event_generate.
+
+Thu Jun 23 23:55:59 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: should load built rbconfig.rb.
+
+Thu Jun 23 16:53:15 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/canvastag.rb: TkcGroup.new cannot include given items.
+ TkcGroup#exclude calls wrong method.
+ Add alias TkcGroup#add [ruby-talk:146049].
+
+ * ext/tk/lib/tk/canvas.rb: TkCanvas#dtag and some subcommands of
+ TkCanvas#addtag fail to treat a TkcTag argument.
+
+ * ext/tk/lib/tk/event.rb: add TkEvent::Event#generate to help to send
+ current event to other widgets.
+
+Mon Jun 20 18:44:04 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): DUMMY_SETJMP is replaced
+ because setjmp is not enough to fix getcontext and SPARC register
+ window problem.
+
+Mon Jun 20 17:15:51 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_closed): new method DBM#closed?
+
+ * ext/gdbm/gdbm.c (fgdbm_closed): new method GDBM#closed?
+
+ * ext/sdbm/init.c (fsdbm_closed): new method SDBM#closed?
+
+ * test/dbm/test_dbm.rb, test/gdbm/test_gdbm.rb, test/sdbm/test_sdbm.rb
+ (teardown): close all db objects before deleting data files.
+
+ * win32/win32.{ch} (unlink): hook runtime function to change
+ file attribute before unlinking.
+ merge from 1.8, see [ruby-dev:26360]
+
+Mon Jun 20 02:15:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (define_final): document fix: finalizers never get called
+ before target object is destroyed.
+
+Mon Jun 20 01:26:49 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/openssl_missing.c, ext/openssl/ossl.h,
+ ext/openssl/ossl_asn1.c, ext/openssl/ossl_bio.c,
+ ext/openssl/ossl_pkcs12.h, ext/openssl/ossl_x509req.c: avoid
+ compiler warnings. suggested by Michal Rokos.
+
+Sun Jun 20 00:22:02 2005 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/utils.rb: Patch by Nobuhiro IMAI fixes the following
+ problem: Default value modification on
+ Module#public_instance_methods (false -> true) breaks
+ s.add_handler(XMLRPC::iPIMethods("sample"), MyHandler.new) style
+ security protection.
+
+ * lib/xmlrpc/client.rb: Aliased XMLRPC::Client#new2 as
+ XMLRPC::Client#new_from_uri, and #new3 as #new_from_hash.
+
+Sun Jun 19 14:09:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (run_final): reduce unnecessary object allocation during
+ finalization.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): deferred finalizers list should
+ be cleared before calling them. fixed: [ruby-talk:145790]
+
+Sat Jun 18 01:15:36 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): do not set
+ rl_{in,out}stream.
+
+ * ext/readline/readline.c (readline_s_set_input): new method.
+
+ * ext/readline/readline.c (readline_s_set_output): new method.
+
+ * lib/irb/input-method.rb: set Readline.input and Readline.output.
+
+Fri Jun 17 13:01:40 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb (Time.parse): fix previous leap seconds support.
+ (Time.rfc2822): ditto.
+ (Time.xmlschema): ditto.
+
+Thu Jun 16 15:41:32 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (load_file): '!' is already read. reported by gotoyuzo.
+
+Thu Jun 16 15:09:38 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c (ip_rb_threadVwaitCommand): Tcl_Release
+ was missing.
+
+Thu Jun 16 13:34:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add Tk.getMultiple{Open|Save}File() which return
+ an Array of selected files.
+
+Thu Jun 16 12:53:24 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb (Time.parse): "Fri Jan 1 08:59:60 +0900 1999" was
+ parsed as "Fri Jan 01 09:00:00 JST 1999" even on an environment
+ which supports leap seconds.
+ (Time.rfc2822): ditto.
+ (Time.xmlschema): ditto.
+
+Thu Jun 16 00:13:41 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Resource#ttl): new attribute.
+ (Resolv::DNS::Resource#==): ignore @ttl.
+ (Resolv::DNS::Resource#hash): ditto.
+ (Resolv::DNS::Message::MessageDecoder#get_rr): save TTL in a
+ Resource object.
+ based on [ruby-core:5190] by Eric Hodel.
+
+Wed Jun 15 18:26:39 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: support "tk inactive" sub-command [for Tcl/Tk8.5a3]
+
+ * ext/tk/lib/tk/namespace.rb: support "namespace path" sub-command and
+ 'namespace ensemble' sub-command [for Tcl/Tk8.5a3]
+
+Tue Jun 14 02:02:43 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil/tkutil.c: add TkUtil::CallbackSubst.subst_arg(m, ...)
+ & _define_attribute_aliases(hash) to get substitution-argument from
+ attributes (e.g. subst_arg(:x,:y,:num,:button) --> "%x %y %b %b ").
+
+ * ext/tk/lib/tk/event.rb: use _define_attribute_aliases().
+
+Mon Jun 13 13:03:08 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * hash.c (ruby_setenv): fixed SEGV. [ruby-dev:26186]
+
+Mon Jun 13 01:54:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (sigexit): call rb_thread_signal_exit() instead of
+ rb_exit(). [ruby-dev:26347]
+
+ * eval.c (rb_thread_signal_exit): a new function to exit on main
+ thread.
+
+ * eval.c (rb_thread_switch): exit status should be retrieved from
+ ruby_errinfo.
+
+ * eval.c (rb_f_exit): ensure exit(0) should call
+ exit(EXIT_SUCCESS).
+
+Mon Jun 13 01:20:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_gc_mark_threads): curr_thread may not be part of the
+ thread list. [ruby-dev:26312]
+
+Sat Jun 11 22:34:44 2005 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: missing arg_paren event. This patch is contributed by
+ Mitchell N Charity.
+
+Fri Jun 10 23:55:17 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (unknown_node): show more information. [ruby-dev:26196]
+
+Fri Jun 10 23:35:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/mkdir.c: remove. [ruby-core:05177]
+
+Fri Jun 10 22:54:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing.h: fd_set stuffs need sys/types.h. fixed: [ruby-core:05179]
+
+Thu Jun 9 23:58:12 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/Win32API/Win32API.c (Win32API_Call): disable global
+ optimization. fixed: [ruby-core:05143]
+
+Thu Jun 9 23:35:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_inject): default the result value to Qundef to use
+ first element as initial value if not given.
+
+Thu Jun 9 19:55:41 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (ruby_longjmp): new macro to call longjmp, setcontext, etc.
+ (ruby_setjmp): new macro to call setjmp, getcontext, etc.
+ (ruby_setjmp): call setjmp before getcontext to avoid IA64 register
+ stack problem.
+ [ruby-talk:144939]
+
+ * gc.c (Init_stack): remove IA64_MAGIC_STACK_LIMIT.
+
+Thu Jun 9 18:24:16 2005 Tanaka Akira <akr@m17n.org>
+
+ * configure.in, eval.c, gc.c: use libunwind only on HP-UX.
+ [ruby-dev:26297]
+
+Thu Jun 9 14:46:32 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_aset): do not treat nil as key-removing value.
+ [ruby-list:40865]
+
+ * parse.y (method_call): allow aref expression ([]) to take a
+ block.
+
+ * parse.y (block_dup_check): a function to check duplication of
+ a block argument and an actual block.
+
+Thu Jun 9 11:55:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (SimpleDelegator::__setobj__): need check for
+ recursive delegation. [ruby-core:04940]
+
+Thu Jun 9 11:50:43 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb: add underscore aliases CGI::escape_html,
+ CGI::unescape_html, CGI::escape_element, CGI::unescape_element.
+ [ruby-core:05058]
+
+Wed Jun 8 18:47:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg): fix looking point drift.
+
+Wed Jun 8 12:25:59 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_nitems): add the block feature to Array#nitems.
+ suggested by Bertram Scharpf <lists@bertram-scharpf.de> in
+ [ruby-talk:134083].
+
+Wed Jun 8 11:11:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (get2comp): revert all prior changes, and calculate
+ proper 2's complement for negative numbers.
+
+Wed Jun 8 08:33:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_min_by, enum_max_by): return nil if no iteration.
+ fixed: [ruby-dev:26245]
+
+ * eval.c (rb_need_block): ensure a block is given.
+
+ * eval.c (backtrace): skip successive frames sharing same node.
+
+Wed Jun 8 01:27:06 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bignorm): fixed a bug in normalizing negative numbers
+ reported from Honda Hiroki <hhonda@ipflex.com>. normalizing
+ should not trim leading zeros from negative numbers.
+
+ * bignum.c (rb_cstr_to_inum): must remove leading zeros for this
+ case.
+
+Wed Jun 8 00:15:08 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_getaddrinfo__aix): merged a patch from
+ KUBO Takehiro <kubo at jiubao.org> to support AIX. [ruby-list:40832]
+
+Wed Jun 8 00:09:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb (Array::to_yaml): merged a patch from
+ Tilman Sauerbeck <tilman at code-monkey.de>. [ruby-core:05055]
+
+ * lib/yaml/rubytypes.rb (Hash::to_yaml): ditto.
+
+Wed Jun 8 00:00:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (curses_insertln): merged a patch from
+ TAKAHASHI Tamotsu <ttakah at lapis.plala.or.jp>. [ruby-ext:02305]
+
+Tue Jun 7 19:34:15 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/init.rb (IRB::IRB.rc_file_generators): more flexible
+ IRB.rc_file_generators. [ruby-core:05163]
+
+Tue Jun 7 18:39:31 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/thread.rb: RDoc documentation from Eric Hodel
+ <drbrain@segment7.net> added. [ruby-core:05148]
+
+Tue Jun 7 18:30:04 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): add .SUFFIXES from depend file.
+ fixed: [ruby-dev:26294]
+
+Tue Jun 7 17:20:39 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): allow ';;' to be block terminator in
+ place of 'end'. [highly experimental]
+
+ * misc/ruby-mode.el (ruby-block-end-re): allow ';;' to be a
+ negative indent trigger. [highly experimental]
+
+ * parse.y (parser_yylex): small error fixed.
+
+Tue Jun 7 16:45:49 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): "respond_to?:foo" should be interpreted
+ as "respond_to? :foo" at the command level. [ruby-talk:144303]
+
+Tue Jun 7 16:32:53 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): raise exception on debug mode (-d),
+ not verbose mode (-v/-w). [ruby-core:05123]
+
+ * sprintf.c (rb_f_sprintf): warn always on verbose mode.
+
+Tue Jun 7 10:30:49 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: slave-ip fails to call procedures
+ delegated by master-ip.
+
+Mon Jun 6 16:35:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/ripper/depend: add .y to .SUFFIXES for nmake.
+
+Sun Jun 5 23:00:35 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/console.rb: create console when required
+
+ * ext/tk/sample/tkextlib/tile/demo.rb: fix TypeError & create Console
+
+Sun Jun 5 10:23:52 2005 Tanaka Akira <akr@m17n.org>
+
+ * signal.c (ruby_signal): don't set SA_RESTART.
+ [ruby-dev:26276]
+
+Sat Jun 4 14:55:18 2005 Tanaka Akira <akr@m17n.org>
+
+ * test/dbm/test_dbm.rb: merged from ext/dbm/testdbm.rb.
+
+ * test/gdbm/test_gdbm.rb: merged from ext/gdbm/testgdbm.rb.
+
+ * test/sdbm/test_sdbm.rb: renamed from ext/sdbm/testsdbm.rb with
+ modification to use test/unit.
+
+Fri Jun 3 23:23:02 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (rb_fdset_t): deal with fd bit sets over FD_SETSIZE.
+ fixed: [ruby-dev:26187]
+
+ * eval.c (rb_fd_init, rb_fd_term, rb_fd_zero, rb_fd_set, rb_fd_clr,
+ rb_fd_isset, rb_fd_copy): ditto.
+
+ * io.c (rb_io_wait_readable, rb_io_wait_writable, rb_f_select): ditto.
+
+ * ext/io/wait/wait.c (io_wait): ditto.
+
+ * ext/socket/socket.c (wait_connectable, unix_recv_io): ditto.
+
+Fri Jun 3 14:06:12 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: fix typo.
+
+Thu Jun 2 23:42:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y: pragma support on ripper. [ruby-dev:26266]
+
+Thu Jun 2 00:02:16 2005 Minero Aoki <aamine@loveruby.net>
+
+ * struct.c: accessing >10 member caused segmentation fault.
+ [ruby-dev:26247]
+
+ * test/ruby/test_struct.rb: test it.
+
+Wed Jun 1 11:30:09 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: can use single quote character in DESTDIR.
+ [ruby-dev:26205]
+
+ * bcc32/Makefile.sub: Dir.glob in 1.9 doesn't treat \ as path separator.
+ [ruby-dev:26254]
+
+Wed Jun 1 00:11:06 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (method_call): new experiment: "(expr)(args...)" to
+ invoke "expr.call(args...)". [EXPERIMENTAL]
+
+Tue May 31 23:43:41 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (command): revert implicit "call" for local variables.
+
+Tue May 31 15:52:45 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should
+ break the loop if the socket reached to EOF. [ruby-talk:142285]
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): send response
+ without reading the whole request body if keep-alive is disabled.
+ [experimental]
+
+Mon May 30 23:48:29 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/macpkg.rb: add PACKAGE_NAME information of Tcl/Tk
+ Extension.
+
+ * ext/tk/lib/tk/msgcat.rb: ditto.
+
+ * ext/tk/lib/tk/winpkg.rb: ditto.
+
+ * ext/tk/lib/tkextlib/*: ditto.
+
+Sat May 28 16:39:21 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/openssl/test_x509store.rb: add test for expired CRL
+ and refine some assertions.
+
+Sat May 28 05:15:44 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_time): should
+ not set internal flag directory.
+
+Sat May 28 02:00:11 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#request_line):
+ ENV["REQUEST_URI"] is better to get correct Request-URI
+ than ENV["SCRIPT_NAME"] + ENV["PATH_INFO"]. [ruby-dev:26235]
+
+Fri May 27 16:32:04 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb: use the semicolon as the path separator
+ in the environment of MSYS. fixed: [ruby-dev:26232]
+
+Thu May 26 20:31:21 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_entry_secure): add documentation.
+
+ * lib/fileutils.rb (remove_entry_secure): should not invoke
+ unlink(2) against a directory.
+
+Thu May 26 08:29:19 2005 Akiyoshi, Masamichi <akiyoshi@hp.com>
+
+ * vms/vmsruby_private.c, vms/vmsruby_private.h: private routines
+ for VMS port are added.
+
+ * eval.c (ruby_init): change to call VMS private intialization routine.
+
+Thu May 26 07:39:07 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (rm_r): use lchown(2), not chown(2).
+ [ruby-dev:26226]
+
+ * lib/fileutils.rb (cd): remove :noop option. (feature change)
+
+ * lib/fileutils.rb (cp_r): should copy symlink as symlink, for
+ also tree root. (feature change)
+
+ * lib/fileutils.rb (cp_r): new option :dereference_root.
+
+ * lib/fileutils.rb: new method remove_entry.
+
+ * lib/fileutils.rb: new method remove_entry_secure.
+
+ * lib/fileutils.rb: add documentation.
+
+Thu May 26 06:08:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add shortcut-methods of tk_call + tk_split_list
+
+Wed May 25 20:06:27 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: TkComm#tk_split_*list fail to split a kind of SJIS
+ strings. To avoid the trouble, add arguments to control converting
+ encoding, and do split on a UTF8 string.
+
+ * ext/tk/lib/multi-tk.rb: modify to attend encoding.
+
+ * ext/tk/lib/remote-tk.rb: ditto.
+
+ * ext/tk/lib/tk/itemconfig.rb: ditto.
+
+ * ext/tk/lib/tk/listbox.rb: ditto.
+
+ * ext/tk/lib/tk/namespace.rb: ditto.
+
+ * ext/tk/lib/tk/panedwindow.rb: ditto.
+
+ * ext/tk/lib/tk/text.rb: ditto.
+
+ * ext/tk/lib/tk/textmark.rb: ditto.
+
+ * ext/tk/lib/tk/texttag.rb: ditto.
+
+ * ext/tk/lib/tk/variable.rb: ditto.
+
+ * ext/tk/lib/tk/winfo.rb: ditto.
+
+ * ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb: ditto.
+
+ * ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: ditto.
+
+ * ext/tk/lib/tk.rb: add TkWindow#lower_window/raise_window and
+ Tk#lower_window/raise_window by reason of method-name conflict
+
+ * ext/tk/lib/tk/canvas.rb: bug fix on TkCanvas#delete when given
+ non-TkcItem arguments.
+
+ * ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb: ditto.
+
+Wed May 25 19:48:12 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (rm_r): does chown(2). [ruby-dev:26199]
+
+Wed May 25 12:59:48 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI::Meta::RE_QUOTED_STRING): a content of
+ quoted-string should be zero or more characters.
+
+Tue May 24 23:42:16 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_pow): support Fixnum ** Float case directly
+ without coercing. [ruby-talk:142697] [ruby-talk:143054]
+
+Tue May 24 16:57:24 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (require_libraries): caused SEGV when continuation jumped
+ in to the required library code.
+
+Tue May 24 17:45:59 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/readline/test_readline.rb: do not test libedit.
+ fixed: [ruby-dev:26217]
+
+Tue May 24 06:45:31 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): string
+ literals to be matched non-greedy.
+
+Tue May 24 00:39:14 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/calc: method name 'set' was able to crash with a class Set.
+ [ruby-dev:26210]
+
+ * test/wsdl/document/test_rpc.rb: dateTime comparison failed under
+ TZ=right/Asia/Tokyo (with leap second.) [ruby-dev:26208]
+
+Mon May 23 16:23:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: Framework support on MacOS X Tiger.
+
+ * ext/tk/README.tcltklib: add description of Framework support options.
+
+Mon May 23 15:07:34 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub ($(PROGRAM)): add dependency on $(LIBRUBY_SO).
+ [experimental]
+
+Mon May 23 12:21:37 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (make_regexp): should not return junk address during
+ compile time. [ruby-dev:26206]
+
+Sun May 22 21:54:06 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/{soap,wsdl,xsd}, test/{soap,wsdl,xsd}: imported soap4r/1.5.4.
+
+ == SOAP client and server ==
+
+ === for both client side and server side ===
+
+ * improved document/literal service support.
+ style(rpc,document)/use(encoding, literal) combination are all
+ supported. for the detail about combination, see
+ test/soap/test_style.rb.
+
+ * let WSDLEncodedRegistry#soap2obj map SOAP/OM to Ruby according to
+ WSDL as well as obj2soap. closes #70.
+
+ * let SOAP::Mapping::Object handle XML attribute for doc/lit service.
+ you can set/get XML attribute via accessor methods which as a name
+ 'xmlattr_' prefixed (<foo name="bar"/> -> Foo#xmlattr_name).
+
+ === client side ===
+
+ * WSDLDriver capitalized name operation bug fixed. from
+ 1.5.3-ruby1.8.2, operation which has capitalized name (such as
+ KeywordSearchRequest in AWS) is defined as a method having
+ uncapitalized name. (converted with GenSupport.safemethodname
+ to handle operation name 'foo-bar'). it introduced serious
+ incompatibility; in the past, it was defined as a capitalized.
+ define capitalized method as well under that circumstance.
+
+ * added new factory interface 'WSDLDriverFactory#create_rpc_driver'
+ to create RPC::Driver, not WSDLDriver (RPC::Driver and WSDLDriver
+ are merged). 'WSDLDriverFactory#create_driver' still creates
+ WSDLDriver for compatibility but it warns that the method is
+ deprecated. please use create_rpc_driver instead of create_driver.
+
+ * allow to use an URI object as an endpoint_url even with net/http,
+ not http-access2.
+
+ === server side ===
+
+ * added mod_ruby support to SOAP::CGIStub. rename a CGI script
+ server.cgi to server.rb and let mod_ruby's RubyHandler handles the
+ script. CGIStub detects if it's running under mod_ruby environment
+ or not.
+
+ * added fcgi support to SOAP::CGIStub. see the sample at
+ sample/soap/calc/server.fcgi. (almost same as server.cgi but has
+ fcgi handler at the bottom.)
+
+ * allow to return a SOAPFault object to respond customized SOAP fault.
+
+ * added the interface 'generate_explicit_type' for server side
+ (CGIStub, HTTPServer). call 'self.generate_explicit_type = true'
+ if you want to return simplified XML even if it's rpc/encoded
+ service.
+
+ == WSDL ==
+
+ === WSDL definition ===
+
+ * improved XML Schema support such as extension, restriction,
+ simpleType, complexType + simpleContent, ref, length, import,
+ include.
+
+ * reduced "unknown element/attribute" warnings (warn only 1 time for
+ each QName).
+
+ * importing XSD file at schemaLocation with xsd:import.
+
+ === code generation from WSDL ===
+
+ * generator crashed when there's '-' in defined element/attribute
+ name.
+
+ * added ApacheMap WSDL definition.
+
+ * sample/{soap,wsdl}: removed.
+
+Sun May 22 19:11:35 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#initialize):
+ should initialize session id context. [ruby-core:4663]
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): add session id support.
+
+Sun May 22 12:30:58 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h, parse.y (ruby_pragma): removed. fixed: [ruby-dev:26198]
+
+ * parse.y (parser_pragma): pragma name was ignored.
+
+Sun May 22 02:39:57 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (rm_r): new option :secure to avoid
+ time-to-check-to-time-to-use security problem. [ruby-dev:26100]
+
+ * lib/fileutils.rb (remove_file, remove_dir): try chmod(700) only
+ on Windows.
+
+ * lib/fileutils.rb: does not depend on find.rb.
+
+ * lib/fileutils.rb: new method chmod_R.
+
+ * lib/fileutils.rb (chown_R): did not work.
+
+Sat May 21 10:23:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: tds files were not deleted when DESTDIR
+ included '\' path delimiter. [ruby-dev:26193]
+
+Fri May 20 15:52:18 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ return 2 items if completion_proc returns only 1 item (for libedit).
+
+Fri May 20 01:24:33 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/extconf.rb: check rl_vi_editing_mode() and
+ rl_emacs_editing_mode().
+
+Thu May 19 23:33:09 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c: supported libedit. fixed: [ruby-core:4858]
+
+ * ext/readline/extconf.rb: added new option --enable-libedit.
+
+ * test/readline/test_readline.rb: added assertions for
+ Readline::HISTORY.
+
+ * lib/irb/input-method.rb: do not use Readline::HISTORY.pop.
+
+Wed May 18 23:42:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exc_exception): reverted to call Exception#initialize
+ directly. fixed: [ruby-dev:26177]
+
+Wed May 18 17:38:51 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c (glob_helper): check whether path is "" before calling
+ do_opendir. [ruby-dev:26183]
+
+Wed May 18 13:40:48 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (NtInitialize): fix typo.
+
+Wed May 18 11:07:47 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): get rid of using String. [ruby-dev:26180]
+
+ * eval.c (ruby_options), win32/win32.c (NtInitialize): move argument
+ intialization back. [ruby-dev:26180]
+
+Tue May 17 11:49:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (unixtime_to_filetime): use localtime() instead of
+ gmtime() when using FileLocalTimeToFileTime().
+
+Mon May 16 22:42:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.h, {bcc32,win32,wince}/Makefile.sub: moved rb_[ugp]id_t
+ to get rid of redefinition warnings on mingw.
+
+ * class.c (rb_class_init_copy): singleton class is disallowed to copy,
+ from its definition. fixed: [ruby-talk:142749]
+
+ * parse.y (pragma_encoding): add prototype to suppress false warning
+ by VC.
+
+ * process.c (proc_spawn_v): use rb_w32_aspawn on Win32.
+
+Mon May 16 03:29:01 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.{h,c}: define rb_[pgu]id_t.
+
+Mon May 16 00:21:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#unlink): use SystemCallError instead of
+ Errno::EISDIR because EISDIR is not portable.
+ [ruby-core:5001]
+
+Sun May 15 22:28:10 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRbObject#method_missing): use raise(exception).
+ [ruby-dev:26164]
+
+Sun May 15 18:56:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, ruby.h: define rb_[pgu]id_t macros instead of typedefs
+ to get rid of types which might not be defined yet. [ruby-dev:26165]
+
+Sun May 15 14:35:46 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#unlink): unlink a symlink to a directory
+ was failed. [ruby-core:4992]
+
+Sun May 15 09:57:30 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (unixtime_to_filetime): deal with DST.
+ [ruby-talk:141817]
+
+Sat May 14 23:59:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exc_exception, {exit,name_err,syserr}_initialize): call
+ Execption#initialize. fixed: [ruby-talk:142593]
+
+Sat May 14 23:56:41 2005 Erik Huelsmann <ehuels@gmail.com>
+
+ * configure.in: Check for the availability of pid_t, gid_t and uid_t and
+ remove AC_TYPE_UID_T. fixed: [ruby-core:04745]
+
+ * defines.h: Remove pid_t typedef.
+
+ * ruby.h: Define rb_pid_t, rb_gid_t and rb_uid_t in accordance with
+ the available system types.
+
+ * process.c: Change instances of pid_t and gid_t to their rb_*
+ counterparts.
+
+ * ext/pty/pty.c: Change pid_t to rb_pid_t.
+
+ * vms/config.h: Define HAVE_{P,G,U}ID_T to 1.
+
+ * win32/Makefile.sub: Remove #define for {g,u}id_t.
+
+ * win32/win32.c: Change pid_t to rb_pid_t.
+
+ * wince/Makefile.sub: Remove #define for {g,u}id_t.
+
+ * wince/sys/types.h: Remove definitions of {p,g,u}id_t.
+
+Sat May 14 11:47:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (ruby_pragma): prototype. [ruby-core:04881]
+
+ * parse.y (parser_pragma): parse Emacsen hack.
+
+ * parse.y (parser_prepare): deal with specific syntax at the top.
+
+ * ruby.c (load_file): read the first line iff it started with shebang.
+
+Fri May 13 23:44:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: keep srcdir unexpanded.
+
+ * lib/mkmf.rb (create_makefile): quote topdir and hdrdir if necessary.
+ fixed: [ruby-core:04932]
+
+ * lib/mkmf.rb (configuration), {bcc32,win32,wince}/Makefile.sub: make
+ also INSTALL_PROG and INSTALL_DATA system dependent.
+ fixed: [ruby-core:04931]
+
+Fri May 13 23:32:55 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (unknown_node): add volatile directive to prototype.
+
+Fri May 13 17:50:49 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * variable.c (generic_ivar_get): rb_attr_get should not warn.
+ [ruby-dev:26010]
+
+Thu May 12 17:41:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 2.0.5
+
+Thu May 12 16:50:40 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/rdoc/parsers/parse_c.rb: more readability for mixing
+ progress "c..." and warning message.
+
+Thu May 12 15:50:56 2005 Tilman Sauerbeck <tilman@code-monkey.de>
+
+ * lib/rdoc/parsers/parse_c.rb: show parsing progress for C files.
+ [ruby-core:4341]
+
+Thu May 12 09:53:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.c (ruby_show_version): flush for non-tty stdout.
+
+Thu May 12 01:23:55 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (unknown_node): ignore broken NODE to get rid of accessing
+ possibly inaccessible address. fixed: [ruby-dev:26122]
+ should emit more useful information like [ruby-dev:26126], though.
+
+Wed May 11 15:58:39 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (break_jump): break should not cross functions.
+ [ruby-list:40818]
+
+Wed May 11 10:41:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/tempfile.rb (Tempfile#unlink): fixed typo.
+
+Wed May 11 01:03:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (TMP_ALLOC): use macro NEW_NODE() to get rid of warnings on
+ platforms which have no alloca(). fixed: [ruby-talk:141301]
+
+Sun May 8 23:17:47 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb: fix typo.
+
+Sun May 8 21:00:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * hash.c (Init_Hash): remove custom "hash" and "eql?".
+ (ported from 1.8) [ruby-dev:26132]
+
+Sun May 8 16:50:25 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/profiler.rb: fixed "undefined method `[]' for nil:NilClass"
+ [ruby-core:4775] [ruby-talk:140401] [ruby-dev:26118]
+
+Sat May 7 22:58:00 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_var): no libs argument is given.
+
+Fri May 6 08:08:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c:rb_hash_hash_i() should be static. [ruby-core:04815]
+
+ * re.c should include regint.h for declarations of oniguruma
+ functions. [ruby-core:04815]
+
+Sun May 1 09:15:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_sflag): replace '-' in variable names with '_'.
+ [ruby-dev:26107]
+
+ * eval.c (rb_eval), parse.y (arg): reduce fixnum range literal at
+ parser. fixed: [ruby-dev:26113]
+
+Sat Apr 30 11:59:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_FUNC_ATTRIBUTE): check for function attribute.
+ [ruby-dev:26109]
+
+ * eval.c, gc.c: moved noinline to configure.in.
+
+ * rubyio.h (DEPRECATED): moved to configure.in.
+
+ * ruby.h (DEPRECATED, NOINLINE): default definition.
+
+ * win{32,ce}/Makefile.sub (config.h): deprecated and noinline for
+ __declspec() are available for VC++7 or later.
+
+Sat Apr 30 06:57:39 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb: new methods WEBrick::CGI#[], WEBrick::CGI#logger
+ and WEBrick::CGI#config. these are necessary to use an instance of
+ WEBrick::CGI as the first argument of HTTPServlet#get_instance.
+ (suggested by Tatsuki Sugiura)
+
+ * lib/webrick/cgi.rb
+ (WEBrick::CGI#initalize): set a dummy to @config[:ServerSoftware]
+ if SERVER_SOFTWARE environment variable is not given.
+ (WEBrick::CGI#start): req.path_info must be a String.
+ (WEBrick::CGI::Socket#request_line): treat REQUEST_METHOD, PATH_INFO
+ and SCRIPT_NAME to run in console.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.escape_path): should
+ not use String#split("/"). it removes trailing empty path component.
+
+Thu Apr 28 08:21:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_arg0): use also environment variable space for setting
+ $0. [ruby-core:04774]
+
+Wed Apr 27 23:42:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (OPTFLAGS): default global optimization to
+ disabled only for VC++6.
+
+Tue Apr 26 22:58:00 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_invoke_core): call Tcl's "::unknown"
+ command when can't get information of target command.
+
+Mon Apr 25 13:54:55 2005 speakillof <speakillof@yahoo.co.jp>
+
+ * lib/rexml/encodings/SHIFT-JIS.rb: encoding and decoding were
+ swapped. [ruby-core:4772]
+
+Mon Apr 25 01:18:43 2005 Tanaka Akira <akr@m17n.org>
+
+ * oniguruma.h (OnigWarnFunc): add a variadic argument.
+ [ruby-core:4751]
+
+Sat Apr 23 19:49:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c (ip_RubyExitCommand): exit with status code
+ via TclTkIp#_eval didn't work. [ruby-talk:139390]
+
+Sat Apr 23 11:45:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_provided): should check also path name to be loaded.
+ fixed: [ruby-dev:26093]
+
+Fri Apr 22 16:55:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c (ip_set_exc_message): fixed memory leak.
+
+ * ext/tk/tcltklib.c: eTkCallbackReturn was not initialized.
+
+Thu Apr 21 06:45:28 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_incpush_expand, proc_options): expand relative path
+ given with -I option. [ruby-dev:26090]
+
+ * configure.in, lib/mkmf.rb, {bcc32,win32,wince}/Makefile.sub: improve
+ C++ support. [ruby-dev:26089]
+
+Thu Apr 21 01:53:09 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: add rdoc.
+
+Thu Apr 21 00:07:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): support platforms have file separator
+ other than /.
+
+ * {bcc32,win32,wince}/Makefile.sub (BUILD_FILE_SEPARATOR): separator
+ of building platform.
+
+ * {bcc32,win32,wince}/Makefile.sub (CP, INSTALL): use COPY command.
+
+Wed Apr 20 23:22:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk: miniruby depends on MINIOBJS.
+
+ * dmydln.c (dln_load): dummy function to raise LoadError.
+
+ * cygwin/GNUmakefile.in, {bcc32,win32,wince}/Makefile.sub: miniruby
+ can't load extensions on Windows.
+
+Wed Apr 20 23:01:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/ifchange.bat: delete testing files.
+
+Wed Apr 20 22:54:54 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: new method Net::HTTP.post_form.
+
+ * lib/net/http.rb: new method Net::HTTPHeader#set_form_data and
+ its alias #form_data=.
+
+ * lib/net/http.rb: Net::HTTPHeader#add_header -> add_field
+ (adjustted to Ruby 1.8).
+
+Wed Apr 20 10:53:30 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_rb.rb (lex_init): use IRB module.
+ [ruby-core:04737]
+
+Wed Apr 20 07:27:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc32,win32,wince}/configure.bat, {bcc32,win32,wince}/setup.mak:
+ add extout option.
+
+ * bcc32/setup.mak: make configuration variables overridable.
+
+Tue Apr 19 23:37:09 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftools.rb (File.safe_unlink): do not modify a symlinked file.
+
+Tue Apr 19 23:02:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (search_required): deal with features with path too.
+
+ * intern.h (rb_file_expand_path): prototype. fixed: [ruby-dev:26082]
+
+Tue Apr 19 08:38:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (search_required, rb_require_safe): expand path in
+ rb_features. [ruby-dev:26079]
+
+ * file.c (rb_find_file_ext): return absolute path.
+
+ * ext/extmk.rb: expand path for ext/**/extconf.rb.
+
+ * eval.c (search_required): handle static linked extensions.
+
+Mon Apr 18 15:37:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_attr): attribute name check added.
+
+ * numeric.c (flo_plus): small typo fix.
+
+Mon Apr 18 11:25:14 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/zlib/zlib.c (zstream_run): fixed SEGV. [ruby-core:4712]
+
+Sun Apr 17 23:57:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake, parse_args): do not expand destdir.
+
+ * ext/extmk.rb (relative_from): treat mere drive letter as an absolute
+ path.
+
+Sat Apr 16 17:01:16 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb (rss_recent_cache_rss):
+ use the first date information of items as site date information
+ if channel doesn't have date information.
+
+Sat Apr 16 15:27:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_PROG_INSTALL): not add -p option to INSTALL.
+ files need timestamps to be kept are only ar-archive on a few
+ platforms, and be installed by instruby.rb but not INSTALL.
+ fixed: [ruby-core:04721]
+
+ * mkconfig.rb: purge autoconf value variables.
+
+Sat Apr 16 10:33:48 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: quick hack... prepend DESTDIR.
+ still have restriction on DESTDIR ("", "/", "e:")
+
+Sat Apr 16 03:59:42 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: check for OPENSSL_cleanse.
+
+ * ext/openssl/openssl_missing.h: ditto.
+
+Fri Apr 15 22:40:19 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/tests/testWIN32OLE.rb: add test for WIN32OLE.codepage=
+
+ * ext/win32ole/tests/testOLETYPELIB.rb: correct expected message.
+
+Fri Apr 15 22:04:07 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(ole_invoke): retry after converting Qnil
+ to VT_EMPTY.
+
+Thu Apr 14 19:05:06 2005 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper] (regexp): dispatch regexp option.
+ [ruby-Bugs:1688]
+
+ * ext/ripper/lib/core.rb: regenerated (interface changed).
+
+Thu Apr 14 18:59:43 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_file): ignore exceptions caused by
+ chmod.
+
+ * lib/fileutils.rb (remove_dir): try to get rights to rmdir.
+ [ruby-Bugs:1502]
+
+Thu Apr 14 18:51:02 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb, lib/irb/slex.rb: bug fix of [ruby-Bugs-1745]
+
+ * lib/irb/ext/loader.rb, lib/irb/ext/save-history.rb:
+ fix location of @RCS_ID
+
+ * lib/irb/cmd/help.rb: a lost of release IRB 0.9.5.
+
+Thu Apr 14 15:10:30 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/notifier.rb, lib/irb/output-method.rb, lib/irb/ext/history.rb
+ fixed warning of 'ruby -w'
+
+Thu Apr 14 05:35:45 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * doc/irb/irb.rd.ja: a lost of release IRB 0.9.5.
+
+ * lib/irb/slex.rb: bug fix by [ruby-core:04707].
+
+Thu Apr 14 00:20:31 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * bin/irb lib/irb.rb lib/irb/...: IRB 0.9.5.
+
+Wed Apr 13 23:40:21 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.3 -> 0.1.4.
+
+ * lib/rss/rss.rb (RSS::Element#converter): fixed converter
+ transmission bug.
+
+Wed Apr 13 22:12:16 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#order!): call handlers iff matches
+ non-switch.
+
+Wed Apr 13 21:20:35 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (mingw32): extract msvcr*.dll from objdump result.
+
+Wed Apr 13 19:25:31 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (mingw32): use actual runtime DLL name as ruby DLL
+ name and default load path.
+
+ * win32/Makefile.sub, win32/setup.mak: ditto.
+
+Tue Apr 12 19:30:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#make_switch, OptionParser#order!):
+ added non-option and end-of-args handler. [ruby-talk:136878]
+ [EXPERIMENTAL]
+
+Tue Apr 12 15:33:09 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_finalize): better modification than the
+ previous commit [ruby-dev:26029].
+
+Tue Apr 12 12:38:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_finalize): fix SEGV when Tcl_GlobalEval()
+ modifies the argument string to eval.
+
+Tue Apr 12 02:21:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_finalize): add existence check of
+ Tcl commands before calling Tcl_GlobalEval().
+
+Mon Apr 11 23:36:04 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: [druby-ja:123] fix: When reference of my object is
+ loaded, the object is tainted.
+
+ * test/drb/test_drb.rb: ditto.
+
+Mon Apr 11 22:18:23 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c, file.c (lstat): avoid warnings for mingw.
+
+Mon Apr 11 20:11:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_finalize): adhoc patch to avoid SEGV when exit
+ on Tcl/Tk8.3.x.
+
+Mon Apr 11 15:24:20 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): shouldn't output hdrdir twice.
+
+Sat Apr 9 18:20:31 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/image.rb: support to create TkImage object without
+ creating a new image object on Tk.
+
+ * ext/tk/lib/tk/menu.rb: use TkCommandNames on create_self()
+
+ * ext/tk/lib/tk/root.rb: TkRoot.to_eval() returns '.'.
+
+ * ext/tk/lib/tk/text.rb: add methods to create a TkText::IndexString
+ from (x, y) coords.
+
+ * ext/tk/lib/tkextlib/tile/: add demo and update support status.
+
+Sat Apr 9 14:42:29 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb: supported configuration
+ via Web browser.
+
+Fri Apr 8 20:17:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): hdrdir needs to be defined also in
+ Config::CONFIG.
+
+ * lib/mkmf.rb (configuration, create_makefile): get rid of recursive
+ macro reference.
+
+Fri Apr 8 01:55:20 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/demos-{en,jp}/goldberg.rb: reduced window size.
+ [ruby-dev:25992]
+
+Thu Apr 7 23:58:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): keep directory names in Makefile as macros.
+
+ * lib/mkmf.rb (configuration, create_makefile): ditto.
+
+ * lib/mkmf.rb (CXX_EXT): separate C++ extensions.
+
+Thu Apr 7 17:24:17 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_call0): "return" event hook should be always executed
+ if event_hooks is set.
+
+Thu Apr 7 14:33:09 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_maker_dc.rb (test_date): added a test for #date=
+ and #dc_date=.
+
+Thu Apr 7 11:49:53 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/dublincore.rb: _really_ supported multiple Dublin
+ Core items.
+
+ * test/rss/rss-assertions.rb (assert_multiple_dublin_core): added
+ an assertion for testing multiple Dublin Core items.
+
+ * test/rss/test_maker_dc.rb (test_rss10_multiple): added a test
+ for making multiple Dublin Core items.
+
+Wed Apr 6 16:06:30 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_env.rb (test_key): should test ENV.key instead of
+ ENV.index. [ruby-dev:25994]
+
+Tue Apr 5 16:01:12 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/*: refactored.
+ - gave a name to 'x'.
+ - undef_method -> remove_method for avoiding a warning in ruby 1.6.
+
+Tue Apr 5 15:45:33 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb:
+ new option: @options['rss-recent.use-image-link']:
+ use image as link instread of text if available.
+
+ * sample/rss/tdiary_plugin/rss-recent.rb (RSS_RECENT_VERSION):
+ 0.0.5 -> 0.0.6.
+
+Tue Apr 5 15:15:26 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/dublincore.rb: supported multiple Dublin Core items.
+
+ * lib/rss/parser.rb: added class name registry for complex model
+ elements. (ex. have childlen elements, have some attributes and
+ a child element and so on.)
+
+ * lib/rss/maker/base.rb: added default current_element implementation.
+
+ * lib/rss/maker/dublincore.rb: supported multiple Dublin Core
+ items.
+
+ * lib/rss/maker/image.rb: supproted new Dublin Core API.
+
+ * lib/rss/trackback.rb (RSS::TrackBackUtils.new_with_value_if_need):
+ moved to RSS::Utils.
+
+ * lib/rss/utils.rb (RSS::Utils.new_with_value_if_need):
+ moved from RSS::TrackBackUtils.
+
+ * lib/rss/maker/image.rb: fixed invalid argument of
+ add_need_initialize_variable bug.
+
+ * lib/rss/maker/trackback.rb: ditto.
+
+ * lib/rss/rss.rb (Hash#merge): added for ruby 1.6.
+
+ * lib/rss/rss.rb (RSS::BaseModel.date_writer): changed to accept nil
+ for date value.
+
+ * test/test_dublincore.rb: added tests for plural accessor and
+ multiple Dublin Core items.
+
+ * test/test_setup_maker_1.0.rb: fixed swapped actual and expected
+ values.
+
+Mon Apr 4 23:17:52 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb (TkComm#array2tk_list): accept enc-mode argument to
+ decide whether convert encoding of each element or not.
+
+ * ext/tk/lib/tk/variable.rb (TkVariable#value=): fail to convert the
+ encoding of array elements when assign an array to an TkVariable
+ object.
+
+Mon Apr 4 10:26:48 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/lib/tk/dialog.rb: fixed typo.
+
+Sat Apr 2 23:38:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CP, INSTALL): get rid of less portable options.
+
+ * lib/mkmf.rb (configuration, create_makefile): correct configuration
+ variable.
+
+ * wince/configure.bat, wince/setup.mak: add prefix, extstatic and
+ rdoc options.
+
+ * lib/mkmf.rb (create_makefile): ensure library directories get made
+ before copying libraries there.
+
+Sat Apr 2 16:59:46 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: forgot to update RELEASE_DATE
+
+ * ext/tk/lib/tk/variable.rb: fix namespace trouble when autoloading
+
+ * ext/tk/lib/tk/palette.rb: define Tcl variable 'tkPalette' as global
+
+ * ext/tk/lib/tk/dialog.rb: use array2tk_list method when calling
+ Tk.ip_eval.
+
+ * ext/tk/lib/tk/autoload.rb: add autoload entry 'TkDialogObj' and
+ 'TkWarningObj'
+
+Sat Apr 2 13:23:17 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * hash.c (env_key): ENV.index is deprecated as well as Hash#index.
+ use ENV.key instead. [ruby-dev:25974]
+
+Sat Apr 2 02:19:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb (TkWindow.initialize): accept 'without_creating'
+ option without 'widgetname' option to allow creating a widget object
+ which is used as an argument of Tcl/Tk's widget allocation commands.
+
+ * ext/tk/lib/tk/image.rb (TkImage.initialize): accept 'imagename'
+ option to create a image object by the given name.
+
+Thu Mar 31 22:23:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (SRC_EXT): exclude just case different suffixes on case
+ insensitive file system platforms.
+
+ * README.EXT, README.EXT.ja (Appendix C): utility functions.
+
+Thu Mar 31 14:08:43 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_load): should return
+ value. [ruby-dev:25971]
+
+Thu Mar 31 11:07:50 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb: @@setter -> @@setters.
+
+ * lib/rss/parser.rb
+ (RSS::BaseListener.register_uri)
+ (RSS::BaseListener.uri_registered?)
+ (RSS::BaseListener.install_get_text_element):
+ swapped the first argument and the second argument.
+
+ * lib/rss/taxonomy.rb: swapped the first argument and the second
+ argument for RSS::BaseListener.install_get_text_element.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/syndication.rb: ditto.
+ * lib/rss/dublincore.rb: ditto.
+ * lib/rss/parser.rb: ditto.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/0.9.rb: ditto.
+ * lib/rss/content.rb: ditto.
+
+Thu Mar 31 11:00:36 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb
+ (RSS::BaseListener.install_setter)
+ (RSS::BaseListener.register_uri): changed fallback way.
+
+Thu Mar 31 08:25:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUBYOPT): clear for the environment RubyGems installed.
+
+ * common.mk (clean-local): keep $(PREP) files till distclean.
+
+ * common.mk (check): do all tests.
+
+Thu Mar 31 06:00:20 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_load): should not raise
+ error even if the specified engine could not be loaded. (Dynamic
+ engines don't have fixed name to load.)
+
+Wed Mar 30 17:41:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: add TclTkIp#_create_console() method to create
+ a Tcl/Tk's console window.
+
+ * ext/tk/lib/multi-tk.rb: support TclTkIp#_create_console() method.
+
+ * ext/tk/lib/remote-tk.rb: ditto.
+
+ * ext/tk/lib/tk/console.rb: ditto.
+
+ * ext/tk/lib/tk.rb: update RELEASE_DATE
+
+ * ext/tk/sample/demo-*/check2.rb: use 'return' in the Proc object.
+
+ * ext/tk/sample/tkextlib/**: ditto.
+
+Tue Mar 29 22:20:49 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: use DRbObject.new_with instead of reinit.
+ [ruby-dev:25961]
+
+Tue Mar 29 00:04:57 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: move method DRbObject#reinit to DRbObject.new_with.
+ extract method DRbObject.prepare_backtrace. add DRb.regist_server,
+ remove_server, fetch_server. change server in thread variable if
+ in-proc server. [druby-ja:113]
+
+ * lib/drb/gw.rb: ditto.
+
+Mon Mar 28 20:53:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): nothing to be removed when no file
+ was deleted.
+
+ * ext/extmk.rb (extmake): restore srcdir.
+
+Mon Mar 28 08:39:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_create): Iconv::Failure requires 3
+ arguments. (pointed out by NaHi)
+
+Sun Mar 27 00:56:58 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_file): ignore Errno::E* if force option
+ is set. [ruby-dev:25944]
+
+Sat Mar 26 22:51:33 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb (_callback_entry_class?): add for checking whether
+ a class is available for a callback entry.
+
+ * ext/tk/lib/tk.rb (after_cancel): add Tk.after_cancel(afterID) method.
+
+ * ext/tk/lib/tk.rb (array2tk_list): change from private module method
+ of TkComm to public module method.
+
+ * ext/tk/lib/tk.rb (cget): add check that slot argument is not
+ empty string.
+
+ * ext/tk/lib/tk.rb (configinfo): ditto.
+
+ * ext/tk/lib/tk/itemconfig.rb (itemcget): add check that slot argument
+ is not empty string.
+
+ * ext/tk/lib/tk/itemconfig.rb (itemconfiginfo): ditto.
+
+ * ext/tk/lib/tk/entry.rb: add TkEntry#icursor and icursor= (alias of
+ cursor and cursor= method).
+
+ * ext/tk/lib/tk/font.rb: improve font treatment when the font name is
+ empty string.
+
+ * ext/tk/lib/tk/variable.rb: add :variable, :window and :procedure
+ type.
+
+ * ext/tk/lib/tk/variable.rb: improve treatment of array-type
+ tkvariable.
+
+ * ext/tk/lib/tkextlib/blt.rb: add commands for zooming.
+
+ * ext/tk/lib/tkextlib/blt/*: bug fix.
+
+ * ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: bug fix and add methods
+ to call TreeCtrl commands for bindings.
+
+ * ext/tk/sample/tkextlib/blt/*: new sample scripts.
+
+ * ext/tk/sample/tkextlib/treectrl/*: ditto.
+
+Fri Mar 25 10:53:16 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (WIN32_LEAN_AND_MEAN): removed because a lot of
+ troubles. [ruby-list:40721]
+
+Thu Mar 24 23:10:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (macro_defined?): try to compile for an old compiler
+ which doesn't bail out at #error directive. [ruby-dev:25818]
+
+ * lib/mkmf.rb (check_sizeof): refine logging messages.
+
+Wed Mar 23 19:08:10 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/utils.rb (WEBrick::Utils.create_listeners):
+ - should raise ArgumentError if no port is specified.
+ - even if the specified port is 0, all TCPServers should be
+ initialized with the port given to the first one.
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#initialize): if :Port
+ parameter is 0, it should be updated with the port number which
+ ectually listened.
+
+Wed Mar 23 16:12:40 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * parse.y (primary): fix lineno of rescue and ensure.
+
+Wed Mar 23 00:39:05 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb (test_event): added tests for
+ "class" and "end" and "raise".
+
+Sun Mar 20 22:51:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (mkmf_failed): check if Makefile is created without
+ create_makefile.
+
+Sat Mar 19 23:48:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg): returned true always.
+ fixed: [ruby-list:40683]
+
+Sat Mar 19 00:41:02 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/font.rb: add some TkFont class methods to get font
+ information without creating a TkFont object.
+
+ * ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: bug fix and define some
+ classes for components of Tk::TreeCtrl
+
+Thu Mar 17 17:42:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (make_struct): allow non local-id field
+ names. [ruby-core:04575]
+
+ * struct.c (inspect_struct): ditto.
+
+Wed Mar 16 23:39:13 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb: added test for c-return.
+
+Wed Mar 16 22:57:43 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_call0): call_cfunc() should be protected.
+
+ * eval.c (rb_add_event_hook): use K&R style.
+
+ * eval.c (rb_remove_event_hook): ditto.
+
+Wed Mar 16 22:03:15 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_add_event_hook): new function to add a hook function for
+ interpreter events.
+
+Wed Mar 16 18:08:32 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): reorganize "return" event post.
+
+ * eval.c (return_jump): no need to post "return" event here.
+
+Tue Mar 15 23:49:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (Init_iconv): InvalidEncoding also should include
+ Iconv::Failure.
+
+Tue Mar 15 23:12:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (recursive_check, recursive_push): more restrictive check.
+ fixed: [ruby-dev:25916]
+
+Tue Mar 15 16:38:31 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil/tkutil.c (ary2list): give wrong arguments to hash2kv()
+
+Mon Mar 14 19:39:33 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb (TkTimer): forgot to clear @return_value
+ when restarting
+
+ * ext/tk/lib/tk/sample/cd_timer.rb: new sample of TkRTTimer
+
+Mon Mar 14 12:21:03 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb (TkRTTimer): forgot to reset the callback
+ time. So, 'continue' do all callbacks between 'stop' and 'continue'.
+
+Mon Mar 14 08:14:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (str_to_id): raise ArgumentError for NUL containing
+ strings.
+
+Mon Mar 14 00:13:49 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb (TkRTTimer): correct calculation of offset
+ value. get a little better accuracy.
+
+ * ext/tk/sample/demos-en/widget: use a binding with no local variables
+ when eval a sample script.
+
+ * ext/tk/sample/demos-en/bind.rb: ditto.
+
+ * ext/tk/sample/demos-en/tcolor: ditto.
+
+ * ext/tk/sample/demos-jp/widget: ditto.
+
+ * ext/tk/sample/demos-jp/bind.rb: ditto.
+
+ * ext/tk/sample/demos-jp/tcolor: ditto.
+
+Sun Mar 13 22:19:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (recursive_pop): raise TypeError instead of fatal error.
+ fixed: [ruby-dev:25843]
+
+Sun Mar 13 10:09:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: remove test_gc. [ruby-dev:25871]
+
+Sun Mar 13 02:32:54 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): should get DH
+ parameter from the current SSL object.
+
+Sun Mar 13 02:09:03 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey_dh.c (ossl_create_dh): fix typo.
+ patch from IWATSUKI Hiroyuki. [ruby-dev:25867]
+
+ * ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto.
+ (ossl_call_tmp_dh_callback): ditto
+
+Fri Mar 11 03:24:59 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): wrong var node was set for NODE_LAMBDA.
+ [ruby-core:04555]
+
+Thu Mar 10 19:10:29 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (lib_eventloop_ensure): mis-delete a timer handler
+ when exit from a recursive called eventloop
+
+ * ext/tk/lib/tk/timer.rb: new TkRTTimer class, which can works for a
+ realtime operation
+
+ * ext/tk/sample/tkrttimer.rb: sample of TkRTTimer class
+
+ * ext/tk/lib/tk/textmark.rb: move TkTextMark#+ and TkTextMark#- to
+ TkText::IndexModMethods
+
+ * ext/tk/lib/tk/text.rb: improve TkTextMark#+ and TkTextMark#-, and
+ add them to TkText::IndexModMethods module
+
+ * ext/tk/sample/tktextio.rb: add test part of "seek by text index
+ modifiers"
+
+Thu Mar 10 08:10:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (make_regexp): need to free internal regexp structure when
+ compilation fails. [ruby-talk:133228]
+
+Thu Mar 10 01:08:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (bv_decl): remove initialize rule from block local
+ variable declaration.
+
+Wed Mar 9 23:55:34 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (PP::PPMethods#guard_inspect_key): support
+ __recursive_key__. [ruby-dev:25821]
+
+Wed Mar 9 19:42:21 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c: OpenSSL::SSL::SSLContexts suports callbacks:
+ - SSLContext#client_cert_cb is a Proc. it is called when a client
+ certificate is requested by a server and no certificate was yet
+ set for the SSLContext. it must return an Array which includes
+ OpenSSL::X509::Certificate and OpenSSL::PKey::RSA/DSA objects.
+ - SSLContext#tmp_dh_callback is called in key exchange with DH
+ algorithm. it must return an OpenSSL::PKey::DH object.
+
+ * ext/openssl/ossl_ssl.c:
+ (ossl_sslctx_set_ciphers): ignore the argument if it's nil.
+ (ossl_start_ssl, ossl_ssl_write): call rb_sys_fail if errno isn't 0.
+ [ruby-dev:25831]
+
+ * ext/openssl/ossl_pkey.c
+ (GetPrivPKeyPtr, ossl_pkey_sign): should call rb_funcall first.
+ (DupPrivPKeyPtr): new function.
+
+ * ext/openssl/ossl_pkey_dh.c: add default DH parameters.
+
+ * ext/openssl/ossl_pkey.h: ditto.
+
+ * ext/openssl/lib/openssl/cipher.rb: fix typo. [ruby-dev:24285]
+
+Wed Mar 9 18:09:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (gettable_gen): warns if VCALL name is used as
+ out-of-scope block local variable. [EXPERIMENTAL]
+
+ * parse.y (opt_bv_decl): add explicit block local variable
+ declaration. raises error for name conflicts. [EXPERIMENTAL]
+
+Wed Mar 9 13:37:57 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tktextio.rb: fix bug of handling 'end' position.
+ support initial text, overwrite setting and pos_gravity control.
+
+Tue Mar 8 18:16:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tktextio.rb: New sample script. TkTextIO class in this
+ sample supports to use a text widget as if it is a I/O stream (such
+ like as StringIO class).
+
+Tue Mar 8 13:39:25 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: workaround for some of 4.4BSD-Lite
+ derived OSs.
+
+Tue Mar 8 12:36:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: document from Sam Roberts
+ <sroberts@uniserve.com> for getsockopt and setsockopt is merged.
+ [ruby-doc:824]
+
+Tue Mar 8 10:48:53 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_exec_recursive): declaration should precede statements
+ before C99.
+
+Tue Mar 8 10:05:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (errno_missing): Errno.const_missing to allow references
+ to SyscallError exceptions not defined on the platform.
+ [ruby-core:04522]
+
+ * error.c (Init_syserr): Errno::NOERROR(0) for fallback exception.
+
+Tue Mar 8 01:19:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 1.66
+ fixed: [ruby-dev:25828]
+
+Mon Mar 7 21:29:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#start): should
+ restore @token if accept failure. suggested by Dominique Brezinski.
+ [ruby-core:04518]
+
+ * sample/webrick/httpsd.rb: fix typo in comment. suggested by
+ Kazuhiko Shiozaki.
+
+Mon Mar 7 21:01:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_require_safe): get actual path string under safe level
+ when requested. fixed: [ruby-dev:25815]
+
+Mon Mar 7 16:46:02 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_start_ssl, ossl_ssl_read,
+ ossl_ssl_write): need to set errno on Win32 platform.
+
+Mon Mar 7 14:55:43 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): should not push unique number if a block is
+ not an orphan. [ruby-dev:25808]
+
+Mon Mar 7 14:13:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#initialize):
+ should set @eof and @rbuffer.
+
+Mon Mar 7 10:28:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (inspect_obj): unintended space removal.
+ [ruby-dev:25810]
+
+ * eval.c (rb_exec_recursive): should not use NODE in disclosed
+ context. [ruby-dev:25812]
+
+ * io.c (rb_f_open): need not to check if to_open value is a
+ T_FILE. [ruby-dev:25812]
+
+Mon Mar 7 01:21:01 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil/tkutil.c: follow the change of st.c (committed
+ at Fri, 4 Mar 2005 15:47:47 +0900 by matz)
+
+Mon Mar 7 00:01:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: fail to call TclTkLib.mainloop when $SAFE==4
+
+Sun Mar 6 13:04:10 2005 Dee Zsombor <zsombor@ruby-lang.org>
+
+ * misc/ruby-electric.el: added.
+ * misc/Readme: updated.
+
+Sun Mar 6 11:47:10 2005 Sam Roberts <sroberts@uniserve.com>
+
+ * lib/pp.rb: rdoced. [ruby-core:4490]
+
+Sun Mar 6 11:36:37 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (File::Stat#pretty_print): Etc.getpwuid and Etc.getgrgid
+ may return nil. [ruby-talk:129826]
+ reported by Daniel Berger.
+
+Sun Mar 6 06:34:31 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_start_ssl): should wait for that
+ the underlying IO become readable or writable if the error was
+ SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE. [ruby-dev:25795]
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read, ossl_ssl_write): ditto.
+
+ * ext/openssl/lib/openssl/buffering.rb
+ (Buffering#consume_rbuf): pointless eof flag resetting is deleted.
+ (Buffering#read): should return an empty string if the specified
+ size is zero.
+ (Buffering#readpartial): new method.
+ (Buffering#readline): fix typo.
+ (Buffering#getc): return the first character of string correctly.
+ (Buffering#readchar): fix typo.
+ (Buffering#eof?): should read again it the input buffer is empty.
+ (Buffering#do_write): should rescue Errno::EAGAIN.
+ (Buffering#puts): use "\n" as the output field separator.
+
+ * ext/openssl/extconf.rb: get rid of GNUmakefile generation.
+
+ * text/openssl/test_pair.rb: test for IO like methods.
+
+ * test/ruby/ut_eof.rb: test about empty file.
+
+Sat Mar 5 17:48:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (rb_glob): fixed mismatch of argument.
+
+ * dir.c (fnmatch): removed unnecessary code. (by string.c 1.219)
+
+ * win32/win32.c (NtInitialize): ditto. (by numeric.c 1.117)
+
+Sat Mar 5 16:50:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 1.65
+
+Sat Mar 5 16:29:26 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: freeze callback-entry objects
+
+ * ext/tk/lib/tkextlib/tile.rb: support tile-0.6
+
+Sat Mar 5 12:52:08 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): allow putting spaces between target
+ and colon in depend file.
+
+Sat Mar 5 02:41:00 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (eaccess): workaround for VC++8 runtime.
+
+ * win32/win32.c (ioinfo): VC++8 support.
+
+Fri Mar 4 19:39:55 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#do_includes): replace
+ also locally defined modules.
+
+ * ext/iconv/iconv.c: rdocified.
+
+ * ext/strscan/strscan.c: moved misplaced rdoc.
+
+Fri Mar 4 16:11:20 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_exec_recursive): matched the declaration to prototype.
+
+ * ext/curses/curses.c: don't need to check HAVE_WCOLOR_SET excluding
+ window_color_set().
+
+ * ext/tk/tcltklib.c: fixed commit mistakes.
+
+Fri Mar 4 12:45:17 2005 Tilman Sauerbeck <tilman@code-monkey.de>
+
+ * lib/rdoc/parsers/parse_c.rb: allow whitespace after function names.
+ [ruby-core:4296]
+
+ * lib/rdoc/parsers/parse_simple.rb: adds support for private comments
+ in the "simple" parser. [ruby-core:4301]
+
+Fri Mar 4 12:45:17 2005 Charles Mills <cmills@freeshell.org>
+
+ * lib/rdoc/parsers/parse_c.rb: adds support for constants
+ (rb_define_const), accessors (rb_define_attr), and makes a
+ couple fixes. [ruby-core:4307]
+
+Fri Mar 4 12:45:17 2005 Florian Gross <florgro@gmail.com>
+
+ * lib/rdoc/parsers/parse_rb.rb: Logic for def Builtin.method() end
+ [ruby-core:4302]
+
+Fri Mar 4 12:45:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c: replace rb_protect_inspect() and rb_inspecting_p() by
+ rb_exec_recursive() in eval.c.
+
+ * eval.c (rb_exec_recursive): new function.
+
+ * array.c (rb_ary_join): use rb_exec_recursive().
+
+ * array.c (rb_ary_inspect, rb_ary_hash): ditto.
+
+ * file.c (rb_file_join): ditto.
+
+ * hash.c (rb_hash_inspect, rb_hash_to_s, rb_hash_hash): ditto.
+
+ * io.c (rb_io_puts): ditto.
+
+ * object.c (rb_obj_inspect): ditto
+
+ * struct.c (rb_struct_inspect): ditto.
+
+Fri Mar 4 10:15:30 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/set.rb (SortedSet::setup): a hack to shut up warning.
+ [ruby-talk:132866]
+
+Fri Mar 4 09:37:12 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (install-nodoc, pre-install-doc, post-install-doc):
+ fix some omissions.
+
+Fri Mar 4 08:09:12 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/time.rb (Time::strptime): add new function. inspired by
+ [ruby-talk:132815].
+
+ * lib/parsedate.rb (ParseDate::strptime): ditto.
+
+Fri Mar 4 07:07:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 1.63
+
+Thu Mar 3 23:24:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 1.62
+
+Thu Mar 3 18:47:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc32,win32,wince}/Makefile.sub (config.h): check if affected
+ when makefiles are modified.
+
+ * {bcc32,win32,wince}/Makefile.sub (config.status): add variables
+ for tests.
+
+ * win32/ifchange.bat: try to update a file only if modified.
+
+ * win32/resource.rb: more descriptions.
+
+ * common.mk: add {pre,post}-install targets.
+
+ * instruby.rb (install?): install particular part.
+
+ * bcc32/Makefile.sub (post-install-ext): remove debug information
+ files after installation.
+
+ * ext/tk/tcltklib.c (ip_rbUpdateCommand, ip_rb_threadUpdateCommand):
+ get rid of warnings with Tcl/Tk 8.3 or former.
+
+Thu Mar 3 11:49:51 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb: added site information.
+
+Wed Mar 2 19:53:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (parse_args): return false if nothing matched.
+
+Wed Mar 2 17:15:08 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (lib_eventloop_core): fix typo
+
+Wed Mar 2 16:59:50 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * eval.c (ruby_native_thread_kill): call pthread_kill() to send a
+ signal to ruby's native thread
+
+ * ruby.h: add definition of ruby_native_thread_kill()
+
+ * signal.c (sigsend_to_ruby_thread): send the signal to ruby's
+ native thread ([ruby-dev:25744], [ruby-dev:25754]), and set
+ signal mask to the current native thread
+
+Wed Mar 2 16:03:08 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: enforce thread-check and exception-handling to
+ avoid SEGV trouble.
+
+ * ext/tk/tkutil/tkutil.c: fix a bug on converting a SJIS string array
+ to a Tcl's list string.
+
+ * ext/tk/tcltklib.c: wrap Tcl's original "namespace" command to
+ protect from namespace crash.
+
+ * ext/tk/lib/multi-tk.rb: enforce exception-handling.
+
+ * ext/tk/lib/multi-tk.rb: catch IRB_EXIT to work on irb.
+
+ * ext/tk/lib/tk.rb: ditto.
+
+ * ext/tk/tcltklib.c: add TclTkLib.mainloop_thread?
+
+ * ext/tk/lib/multi-tk.rb: (bug fix) callback returns a value.
+
+ * ext/tk/lib/tk/canvas.rb (delete): bug fix when multiple arguments.
+
+ * ext/tk/lib/clock.rb: fix 'no method error'.
+
+ * ext/tk/lib/clock.rb (self.clicks): accept a Symbol argument.
+
+ * ext/tk/lib/variable.rb: be able to set default_value_type; :numeric,
+ :bool, :string, :symbol, :list, :numlist or nil (default; same to
+ :string). If set a type, TkVariable#value returns a value of the
+ type.
+
+ * ext/tk/lib/tkextlib/tclx/tclx.rb: add Tk::TclX.signal to warn the
+ risk of using TclX extension's 'signal' command.
+
+ * ext/tk/sample/irbtk.rb: irb with Ruby/Tk.
+
+ * ext/tk/sample/demos-*/anilabel.rb: bug fix on 'show code'
+
+ * ext/tk/sample/demos-*/aniwave.rb: new Ruby/Tk animation demo.
+
+ * ext/tk/sample/demos-*/pendulum.rb: ditto.
+
+ * ext/tk/sample/demos-*/goldberg.rb: ditto.
+
+ * ext/tk/sample/demos-*/widget: add entries of animation demos.
+
+Wed Mar 2 12:21:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): [EXPERIMENTAL] NODE_LAMBDA implemented.
+ [ruby-dev:25780]
+
+ * node.h (NODE_LAMBDA): for literal Proc object.
+
+ * parse.y (expr): interpret mere do...end block as proc object.
+
+ * parse.y (primary): ditto, for brace block.
+
+Tue Mar 1 21:16:54 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * regcomp.c (optimize_node_left): uninitialized member
+ (OptEnv.backrefed_status) was used. [ruby-dev:25778]
+
+Tue Mar 1 16:50:37 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regparse.c: move st_*_strend() functions from st.c. fixed some
+ potential memory leaks.
+
+Tue Mar 1 00:40:35 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/tuplespace.rb (Rinda::TupleSpace): improved keeper thread.
+
+ * test/rinda/test_rinda.rb: ditto.
+
+Mon Feb 28 23:10:13 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/socket/socket.c (Init_socket): IPv6 is not supported although
+ AF_INET6 is defined on bcc32. (rev1.108 again)
+
+ * ext/socket/mkconstants.rb: ditto.
+
+Mon Feb 28 21:55:49 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * ext/strscan/strscan.c (strscan_s_allocate):
+ use onig_region_init().
+
+ * ext/strscan/strscan.c (adjust_registers_to_matched):
+ use onig_region_set().
+
+Mon Feb 28 15:12:06 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/socket/socket.c (Init_socket): ported more Socket::Constants
+ from ruby_1_8, and made it easy to add new constants.
+ [ruby-dev:25771]
+
+ * ext/socket/depend: ditto.
+
+ * ext/socket/mkconstants.rb: ditto. (added)
+
+Mon Feb 28 11:42:23 2005 Ian Macdonald <ian@caliban.org>
+
+ * exception error messages updated. [ruby-core:04497]
+
+Mon Feb 28 09:03:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (Init_socket): add bunch of Socket
+ constants. Patch from Sam Roberts <sroberts@uniserve.com>.
+ [ruby-core:04409]
+
+Sun Feb 27 05:55:38 2005 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: fix typo. [ruby-core:04494]
+
+Sat Feb 26 16:58:20 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * parse.y, re.c, regex.h, LEGAL, ext/strscan/strscan.c:
+ remove oniggnu.h (GNU regex API).
+
+Wed Feb 23 22:08:16 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * st.c, st.h: imported additional file changes on
+ Oniguruma 3.7.0.
+
+Wed Feb 23 21:45:29 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * ascii.c, euc_jp.c, oniggnu.h, oniguruma.h, regcomp.c,
+ regenc.c, regenc.h, regerror.c, regexec.c, regint.h,
+ regparse.c, regparse.h, sjis.c, utf8.c: imported Oni Guruma
+ 3.7.0.
+
+Wed Feb 23 15:04:32 2005 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (split_userinfo): should split ":pass" into ""
+ and "pass". [ruby-dev:25667]
+
+Wed Feb 23 08:00:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_s_create): no need for negative argc check.
+ [ruby-core:04463]
+
+ * array.c (rb_ary_unshift_m): ditto.
+
+Wed Feb 23 01:53:29 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (initialize): handle certs correctly. Thanks,
+ NABEYA Kenichi.
+
+Wed Feb 23 00:37:34 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/mkmf.rb (mkmf_failed): fixed typo.
+
+Tue Feb 22 23:52:45 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, lib/mkmf.rb: use simple commands if available.
+
+ * mkconfig.rb: remove autoconf internal variables from rbconfig.rb.
+
+ * lib/mkmf.rb (create_makefile): substitute implicit rules in depend
+ file.
+
+ * {bcc32,win32,wince}/Makefile.sub (COMPILE_RULES, RULE_SUBST):
+ include $(topdir) and $(hdrdir) to search path.
+
+Tue Feb 22 23:51:45 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c: get rid of warnings caused by a bug of VC.
+
+Tue Feb 22 23:50:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (ruby_signal, ruby_nativethread_signal): must be valid as
+ expressions, not only statements.
+
+Tue Feb 22 12:54:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): update curr_thread before raising
+ TAG_THREAD. [ruby-dev:25712]
+
+Tue Feb 22 07:24:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): identifier after dot must not be a variable.
+
+Mon Feb 21 18:31:12 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * signal.c: Standard signal handlers ignore signals on non-Ruby native
+ threads. When a handler is entried with ruby_signal() (like as the
+ standard signal handlers), the handler for the signal is marked as
+ it cannot accept non-Ruby native threads. If a handler can treat all
+ signals on all native threads, please use ruby_nativethread_signal()
+ to entry it.
+
+Sun Feb 20 00:48:48 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::FTP#buffer_open): access mechanism
+ re-implemented according to RFC 1738.
+ reported by Guillaume Marcais. [ruby-talk:131650]
+
+Sat Feb 19 18:46:56 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRbObject#respond_to?): take two arguments.
+ [ruby-dev:25722]
+
+ * test/drb/drbtest.rb: ditto.
+
+Sat Feb 19 13:52:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: call OpenSSL::SSL::SSLSocket#post_connection_check
+ after connection is made.
+
+Sat Feb 19 13:31:28 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): remove no longer existing installed
+ files.
+
+ * lib/mkmf.rb (install_dirs): return installation directory list.
+
+ * lib/mkmf.rb (create_makefile): reverted wrongly removed lines.
+
+Sat Feb 19 01:28:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/newton.rb: resolved LoadError.
+ [ruby-dev:25685]
+
+ * ext/bigdecimal/sample/linear.rb: ditto.
+
+ * ext/bigdecimal/sample/nlsolve.rb: ditto.
+
+ * ext/bigdecimal/lib/bigdecimal/nlsolve.rb: removed because this file
+ is sample script and same file exists in ext/bigdecimal/sample.
+
+Fri Feb 18 17:14:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc/parser.rb (XMLRPC::FaultException): make it subclass
+ of StandardError class, not Exception class. [ruby-core:04429]
+
+Fri Feb 18 04:06:41 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (fcall_gen): lvar(arg) will be evaluated as
+ lvar.call(arg) when lvar is a defined local variable. [new]
+
+Thu Feb 17 22:15:34 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * ext/strscan/strscan.c: calls Oniguruma API directly.
+
+Thu Feb 17 21:53:12 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * common.mk, LEGAL: remove reggnu.c.
+
+Thu Feb 17 21:53:12 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * gc.c, re.c: now ruby calls Oniguruma API directly, bypassing
+ GNU compatible APIs.
+
+Thu Feb 17 20:09:23 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/drb/drb.rb (DRbServer.default_safe_level): fix typo.
+
+Thu Feb 17 20:09:23 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/digest/test_digest.rb: separate test case for each algorithms.
+ [ruby-dev:25412]
+
+Thu Feb 17 14:31:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_class_initialize): call inherited method before
+ calling initializing block.
+
+ * eval.c (rb_thread_start_1): initialize newly pushed frame.
+ fixed: [ruby-dev:25707]
+
+Thu Feb 17 13:46:00 2005 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/collector.rb (collect_file): now deletes paths added
+ to $LOAD_PATH instead of restoring it verbatim.
+
+ * lib/test/unit/autorunner.rb (AutoRunner.run): fixed so that
+ 'ruby -rtest/unit -rtest1 -rtest2 -e0' will use the objectspace
+ collector again. Also tried to simplify the calling convention.
+
+ * test/runner.rb: adjusted for new AutoRunner semantics.
+
+ * lib/test/unit.rb: ditto.
+
+Thu Feb 17 04:21:47 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/open3.rb (Open3::popen3): $? should not be EXIT_FAILURE.
+ fixed: [ruby-core:04444]
+
+Thu Feb 17 00:31:21 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/test_drb.rb, ut_safe1.rb: port from 1.8
+
+Thu Feb 17 00:02:27 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): NODE_IASGN is an assignment.
+
+Wed Feb 16 23:54:14 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_start_1): outer block variables wasn't linked to
+ threads. fixed: [ruby-dev:25700]
+
+Wed Feb 16 15:11:43 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::Nonblock#initialize):
+ native win32 platform doesn't have F_GETFL.
+
+Wed Feb 16 02:47:45 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read, ossl_ssl_write): should
+ call rb_sys_fail instead of raising SSLError if SSL_ERROR_SYSCALL
+ occurred.
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#fill_rbuff):
+ should rescue Errno::EAGAIN.
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#each): fix typo.
+ suggested by Brian Ollenberger.
+
+ * ext/openssl/lib/openssl/ssl.rb: set non-blocking flag to the
+ underlying IO.
+
+Tue Feb 15 22:14:34 2005 sheepman <sheepman@tcn.zaq.ne.jp>
+
+ * ext/readline/readline.c (Readline.readline): use rl_outstream
+ and rl_instream. [ruby-dev:25699]
+
+Mon Feb 14 23:58:17 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::ListenerMixin::tag_end):
+ fixed invalid namespace handling bug.
+
+Mon Feb 14 13:12:38 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb
+ (OpenSSL::SSL::SSLSocket#post_connection_check): new method.
+
+Mon Feb 14 00:10:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRbServer): add default_safe_level, safe_level,
+ config[:safe_level] ([druby-ja:120])
+
+ * test/drb/test_drb.rb, ut_eval.rb, ut_safe1.rb: ditto.
+
+Sun Feb 13 23:13:46 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/dublincore.rb (RSS::DublicCoreModel#date{,=}): added
+ convenient methods.
+
+ * lib/rss/0.9.rb (RSS::Rss::Channel#date{,=}): ditto.
+
+ * lib/rss/2.0.rb (RSS::Rss::Channel::Item#date{,=}): ditto.
+
+ * test/rss/: added tests for the convenient methods.
+
+Sun Feb 13 23:12:47 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): restore prot_tag before rewinding.
+
+Sun Feb 13 16:56:52 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI.start): should set reason-phrase
+ to the value of status header field. ([ruby-dev:40617])
+
+Sun Feb 13 11:38:40 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regparse.c (type_cclass_hash): (Thanks Nobu) fixed
+ overrun. ([ruby-dev:25676]).
+
+Sun Feb 13 10:53:08 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * oniggnu.h, oniguruma.h, regcomp.c, st.c: imported
+ Oni Guruma 3.6.0.
+
+Sun Feb 13 01:33:19 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (ERB::Util.h, u): make it module_function.
+
+Sat Feb 12 22:17:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (TAG_THREAD): to start a new thread.
+
+ * eval.c (ruby_init, ruby_options, ruby_cleanup, rb_protect,
+ rb_load_protect, rb_thread_start_0): make thread anchor.
+
+ * eval.c (proc_alloc): clone proc object if klass is not Proc or
+ created in different thread.
+
+ * eval.c (rb_block_pass): call a function with a block. [new]
+
+ * eval.c (rb_f_throw): raise NameError in main thread.
+
+Sat Feb 12 17:29:19 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_loop): send authentication only for
+ the URI directly specified.
+
+Sat Feb 12 15:07:23 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rand_init): suppress warning.
+
+Sat Feb 12 14:10:24 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_http): reject userinfo explicitly.
+
+Sat Feb 12 13:54:03 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: support https if the platform provides CA
+ certificates.
+
+Sat Feb 12 06:18:28 2005 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
+
+ * ext/etc/etc.c (Init_etc): sGroup needs HAVE_ST_GR_PASSWD check
+ [ruby-dev:25675]
+
+Fri Feb 11 17:37:50 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths):
+ new method OpenSSL::X509::Store#set_default_paths.
+
+Fri Feb 11 11:33:53 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::HTTP#proxy_open): new option supported:
+ :http_basic_authentication.
+ suggested by Kent Sibilev. [ruby-core:4392]
+
+Fri Feb 11 06:30:07 2005 George Ogata <g_ogata@optushome.com.au>
+
+ * misc/ruby-mode.el: ignore parenthesis inside heredoc.
+ [ruby-core:04415]
+
+Fri Feb 11 04:54:13 2005 Tilman Sauerbeck <tilman@code-monkey.de>
+
+ * lib/rdoc/generators/html_generator.rb: [ruby-core:04412]
+
+ * lib/rdoc/generators/ri_generator.rb: ditto.
+
+Thu Feb 10 13:52:42 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (LIBS, COMMON_HEADERS): use
+ winsock2 on mswin32/mingw.
+
+ * ext/socket/extconf.rb: ditto.
+
+ * win32/win32.c (StartSockets): ditto.
+
+ * win32/win32.h: ditto.
+
+Thu Feb 10 12:09:16 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): default to true if not compiled
+ previously.
+
+ * ext/extmk.rb (extmake): create dummy makefile if extconf failed.
+
+Thu Feb 10 12:07:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_stdhandle): assign standard file handles.
+
+ * bcc32/Makefile.sub (COMMON_LIBS): add libraries included in
+ import32.lib.
+
+ * lib/mkmf.rb (create_makefile): restrict prefixing with srcdir to
+ rule lines, add search path to implicit rules, and set Borland make
+ special macros for search path.
+
+ * win32/win32.c, win32/win32.h (read): avoid a BCC runtime bug.
+
+Thu Feb 10 00:47:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (make_struct): fixed: [ruby-core:04402]
+
+Wed Feb 9 16:33:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (wait_connectable): fixed wrong condition.
+
+Wed Feb 9 14:42:28 2005 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
+
+ * eval.c (scope_dup): add volatile not to optimize tbl.
+
+Wed Feb 9 10:02:02 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tk/make-tkutil, ext/tk/tkutil/subconf.rb: no longer used.
+
+ * ext/tk/tkutil/extconf.rb: need to compile tkutil. [ruby-dev:25607]
+
+Wed Feb 9 08:07:08 2005 Paul Duncan <pabs@pablotron.org>
+
+ * ext/curses/curses.c (window_color_set): [ruby-core:04393]
+
+Tue Feb 8 23:48:36 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: reject :instance_eval, :class_eval, :module_eval
+ [druby-ja:117]
+
+Tue Feb 8 22:38:28 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * keywords, parse.y: separate EXPR_VALUE from EXPR_BEG.
+ fixed: [ruby-core:04310], [ruby-core:04368]
+
+Tue Feb 8 13:06:12 2005 Sam Roberts <sroberts@uniserve.com>
+
+ * ext/socket/socket.c (Init_socket): SO_REUSEPORT added.
+ [ruby-talk:130092]
+
+Tue Feb 8 00:19:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Name#subdomain_of?): new method.
+ (Resolv::DNS::Name#inspect): ditto.
+ Suggested by Sam Roberts. [ruby-talk:129086]
+
+Mon Feb 7 23:14:11 2005 Tanaka Akira <akr@m17n.org>
+
+ * io.c (io_getc): flush rb_stdout before read from stdin, which is
+ connected to a tty. [ruby-core:4378]
+
+ * rubyio.h (FMODE_TTY): renamed from FMODE_LINEBUF.
+
+Mon Feb 7 10:06:30 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c: [ruby-doc:818]
+
+Mon Feb 7 02:13:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb (sockaddr_storage): winsock2.h have the
+ definition of struct sockaddr_storage, but socket.c doesn't
+ include it because this version of ruby still has binary level
+ compatibility with winsock1.
+
+Mon Feb 7 01:22:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): extract previously collected
+ informations from existing Makefile.
+
+ * ext/socket/extconf.rb: check if getaddrinfo() works fine only when
+ wide-getaddrinfo option is not given. fixed: [ruby-dev:25422]
+
+ * ext/tk/extconf.rb: separate tkutil configuration.
+
+ * lib/mkmf.rb ($extmk): check if under ext directory.
+
+ * lib/mkmf.rb (Logging.postpone): allow recursive operation.
+
+ * lib/mkmf.rb (try_constant): make sure if really a constant, reduce
+ the number of times of compile.
+
+ * lib/mkmf.rb (have_macro, have_var, byte_order): new functions.
+
+ * lib/mkmf.rb (find_library): allow directory list with separators.
+
+ * lib/mkmf.rb (arg_config): manage provided configuration options.
+
+ * lib/mkmf.rb (dir_config): accept arrays of directory names as
+ default values.
+
+ * lib/mkmf.rb (with_cppflags, with_cflags, with_ldflags): keep flags
+ modified if the block returned true.
+
+Sun Feb 6 19:20:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (stack_extend): add prototype because VC++8 doesn't
+ accept __declspec(noinline) with K&R style function definitions.
+
+Sun Feb 6 13:56:19 2005 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (new_with_hash): changed messages of exception.
+
+ * lib/date/format.rb (str[fp]time): undocumented conversion
+ specifications %[1-3] are now deprecated.
+
+Sun Feb 6 11:27:37 2005 Tanaka Akira <akr@m17n.org>
+
+ * ext/dl/dl.c (Init_dl): function declaration should precede
+ statements before C99.
+
+Sun Feb 6 03:24:20 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Resource::TXT): multiple strings was not
+ handled.
+ (Resolv::DNS::Resource::TXT#strings): new method to return all
+ strings.
+ (Resolv::DNS::Message::MessageEncoder#put_string_list): new method.
+ (Resolv::DNS::Message::MessageDecoder#get_string_list): ditto.
+ based on [ruby-talk:129732] by Sam Roberts.
+
+Sat Feb 5 02:24:06 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/test_scanner_events.rb: fix test.
+
+Fri Feb 4 18:44:35 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/lexer.rb: last Lexer fix was incomplete;
+ test all green.
+
+Fri Feb 4 15:57:06 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (open_args): fix too verbose warnings for the space
+ before argument parentheses. [ruby-dev:25492]
+
+ * parse.y (parser_yylex): ditto.
+
+Fri Feb 4 14:33:25 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/filter.rb: ripper/tokenizer ->
+ ripper/lexer. [ruby-dev:25632]
+
+Fri Feb 4 00:24:15 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss: supported Image module.
+ http://web.resource.org/rss/1.0/modules/image/
+
+Thu Feb 3 23:42:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_close, strio_close_read, strio_close_write):
+ should return nil instead of self as well as IO. [ruby-dev:25623]
+
+ * ext/stringio/stringio.c (strio_extend, strio_putc): fill with zero
+ extended portion. [ruby-dev:25626]
+
+Thu Feb 3 16:12:57 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): the first expression in the parentheses
+ should not be a command. [ruby-dev:25492]
+
+Thu Feb 3 03:31:20 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow original v 1.57
+
+ * ext/nkf/nkf-utf8/utf8tbl.c: follow original v 1.8
+
+ * ext/nkf/nkf-utf8/config.h: follow original v 1.7
+
+Wed Feb 2 23:52:53 2005 sheepman <sheepman@tcn.zaq.ne.jp>
+
+ * ext/stringio/stringio.c (strio_truncate): should MEMZERO an extended
+ part. [ruby-dev:25618]
+
+Wed Feb 2 21:56:01 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::Element#convert): added.
+
+ * lib/rss/rss.rb: convert -> need_convert.
+
+ * lib/rss/1.0.rb: ditto.
+
+ * lib/rss/0.9.rb: ditto.
+
+ * lib/rss/2.0.rb: ditto.
+
+ * lib/rss/trackback.rb: ditto.
+
+Wed Feb 2 03:30:58 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/tokenizer.rb -> lexer.rb.
+
+ * ext/ripper/lib/ripper/lexer.rb: new method Ripper.slice.
+ [experimental]
+
+ * ext/ripper/lib/ripper/sexp.rb: new file. [experimental]
+
+ * ext/ripper/lib/ripper.rb: require ripper/lexer and ripper/sexp.
+
+Tue Feb 1 21:49:24 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRb::DRbObject#respond_to?): check marshal_dump and
+ _dump.
+
+Tue Feb 1 00:20:23 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in: made EXTOUT configurable.
+
+ * ext/extmk.rb (extmake), lib/mkmf.rb: keep topdir as relative style.
+
+ * lib/mkmf.rb: make extensions in depth order. [ruby-dev:25522]
+
+ * configure.in (aix): fix linker flags on AIX. [ruby-talk:125460]
+
+Mon Jan 31 13:16:39 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: add tkutil configuration step (remove old schema)
+
+ * ext/tk/depend: remove the information of tkutil
+
+ * ext/tk/make-tkutil: sub-part of Makefile to compile tkutil
+
+ * ext/tk/tkutil/tkutil.c: move tkutil.c to subdirectory
+
+ * ext/tk/tkutil/subconf.rb: configuration file for tkutil.c
+
+ * ext/tk/tkutil/depend: ditto
+
+Mon Jan 31 13:13:35 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: add invalid namespace check
+
+ * ext/tk/lib/multi-tk.rb: add invalid_namespace? method
+
+ * ext/tk/lib/remote-tk.rb: ditto
+
+Mon Jan 31 10:29:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/context.rb (IRB::Context::initialize): [ruby-core:04330]
+
+Mon Jan 31 09:44:03 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): remove Object#type. [ruby-core:04335]
+
+Sat Jan 29 09:42:12 2005 Sam Roberts <sroberts@uniserve.com>
+
+ * lib/resolv.rb (Resolv::DNS::Resource::IN::SRV): Added RFC2782 SRV
+ resource record for specifying location of services.
+
+Sat Jan 29 00:10:33 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * ascii.c, euc_jp.c, hash.c, oniggnu.h, oniguruma.h, regcomp.c,
+ regenc.c, regenc.h, regerror.c, regexec.c, reggnu.c, regint.h,
+ regparse.c, regparse.h, sjis.c, st.c, st.h, utf8.c: imported
+ Oni Guruma 3.5.4.
+
+Fri Jan 28 17:16:55 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Config.parse_resolv_conf):
+ parse options line for ndots option.
+ (Resolv::Hosts#lazy_initialize): return self.
+ (Resolv::DNS#lazy_initialize): ditto.
+ (Resolv::DNS::Config#lazy_initialize): ditto.
+ Suggested by Sam Roberts.
+
+Thu Jan 27 17:15:03 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tk/extconf.rb: support new tk scheme on bccwin32.
+ fixed: [ruby-dev:25546]
+
+Thu Jan 27 13:18:03 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (st_foreach): report success/failure by return value.
+ [ruby-Bugs-1396]
+
+Thu Jan 27 00:12:19 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (setup): support BSD style
+ directory group inheritance (again).
+
+Thu Jan 27 00:02:40 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (setup): support BSD style
+ directory group inheritance. [ruby-dev:25440]
+
+ * test/fileutils/fileasserts.rb (assert_same_entry): show entry
+ difference.
+
+Wed Jan 26 17:12:50 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: forgot to initialize parser struct. [ruby-dev:25492]
+
+ * parse.y (parser_yylex): no tLABEL on EXPR_BEG.
+ [ruby-talk:127711]
+
+Wed Jan 26 14:12:58 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Setup*: remove tcltklib.
+
+Wed Jan 26 12:45:16 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tk/extconf.rb: support new tk scheme on mswin32.
+ fixed: [ruby-dev:25535]
+
+Wed Jan 26 10:45:19 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (flock_winnt, flock_win95): unlock file even if
+ LOCK_NB is specified.
+
+Tue Jan 25 23:10:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk: merge tcltklib for Ruby/Tk installation control
+
+ * ext/tcltklib: remove
+
+Tue Jan 25 17:05:15 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (proc_options): correct -T option in RUBYOPT.
+ fixed: [ruby-dev:25512]
+
+Tue Jan 25 14:05:52 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix SEGV bug; trouble on canceling remained
+ after scripts [ruby-dev:25479]: NULL current namespace when deleting
+ Tk interpreter [ruby-talk:126225]
+
+ * ext/tcltklib/extconf.rb: bug fix; TCL_ENABLE_THREAD flag is inverted
+ [ruby-talk:126360]
+
+ * ext/tcltklib/extconf.rb: add yet another native-thread check
+
+ * ext/tk/tkutil.c: fix SEGV bug; NULL string pointer when finalize
+ Ruby interpreter
+
+ * ext/tk/lib/multi-tk.rb: avoid warning for deleted safeTk ip frame
+
+ * ext/tk/lib/tk/bindtag.rb: bug fix; new method of named bindtag
+ doesn't return the created object [ruby-dev:25479]
+
+ * ext/tk/lib/tk/menu.rb: bug on treating arguments [ruby-dev:25479]
+
+ * ext/tk/lib/tk.rb: bug fix; cannot accept a callback ID string for
+ a command argument [ruby-dev:25479]
+
+ * ext/tk/lib/multi-tk.rb: ditto
+
+ * ext/tk/lib/tk/*.rb: ditto
+
+ * ext/tk/lib/tkextlib/*.rb: ditto
+
+ * ext/tk/sample/demos-jp/anilabel.rb: new demo script
+
+ * ext/tk/sample/demos-en/anilabel.rb: ditto
+
+ * ext/tk/sample/tkHTML/ss.rb: local variable scope bug fix
+ [ruby-dev:25479]
+
+Mon Jan 24 16:00:53 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (guess_old): not use NKF.guess_old
+ but NKF.guess1. fixed: [ruby-dev:25491]
+
+Mon Jan 24 15:44:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * document updates - [ruby-core:04296], [ruby-core:04301],
+ [ruby-core:04302], [ruby-core:04307]
+
+Sun Jan 23 12:38:01 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/wsdlDriver.rb: from 1.5.3-ruby1.8.2, operation which has
+ capitalized name (such as KeywordSearchRequest in AWS) is defined as
+ a method having uncapitalized name. (converted with
+ GenSupport.safemethodname to handle operation name 'foo-bar'). it
+ introduced serious incompatibility; in the past, it was defined as a
+ capitalized.
+
+ define capitalized method as well under that circumstance.
+
+Sun Jan 23 05:24:42 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspreq_to_der): should call
+ GetOCSPReq at first.
+
+Sat Jan 22 22:59:08 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/ssl.rb (accept): rescue SSLError. [druby-ja:110]
+
+Sat Jan 22 22:27:28 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/unix.rb: fail if UNIXFileOwner is set. [druby-ja:111]
+
+Fri Jan 21 20:07:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Config.resolv): don't raise ResolvError.
+ reported by Sam Roberts. [ruby-talk:127133]
+
+Fri Jan 21 17:09:44 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (decode_utf7): use pack("U*") to encode UTF-8.
+
+ * lib/net/imap.rb (encode_utf7): use unpack("U*") to decode UTF-8.
+
+ * test/net/imap/test_imap.rb: added tests for Net::IMAP.
+
+Fri Jan 21 16:58:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (rb_push_glob): should work for NUL delimited patterns.
+
+ * dir.c (rb_glob2): should aware of offset in the pattern.
+
+Fri Jan 21 13:58:37 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (u8tou16): fixed typo. fixed: [ruby-list:40546]
+
+Fri Jan 21 00:37:09 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (syck_parser_bufsize_set): avoid VC++ warning
+ "local variable 'size' used without having been initialized".
+
+Thu Jan 20 11:42:02 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_new4): should propagate taintedness.
+
+ * env.h: rename member names in struct FRAME; last_func -> callee,
+ orig_func -> this_func, last_class -> this_class.
+
+ * struct.c (rb_struct_set): use original method name, not callee
+ name, to retrieve member slot. [ruby-core:04268]
+
+ * time.c (time_strftime): protect from format modification from GC
+ finalizers.
+
+Thu Jan 20 02:01:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): remove rb_obj_id_obsolete()
+
+Wed Jan 19 18:02:19 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/ipaddr.rb (to_s, test_to_s): too many colons with some cases.
+
+Wed Jan 19 01:16:30 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Config.parse_resolv_conf): ignore
+ domain and search directive without an argument.
+ reported by Sam Roberts. [ruby-talk:126781]
+
+Mon Jan 17 23:33:46 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (aix): fix typo. [ruby-talk:126401]
+
+Mon Jan 17 07:08:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c: suppress warnings.
+
+ * lib/irb/extend-command.rb (IRB::ContextExtender.def_extend_command):
+ ditto.
+
+ * lib/irb/ext/history.rb (IRB::Context::set_last_value): ditto.
+
+ * lib/irb/ext/history.rb (IRB::Context::eval_history): ditto.
+
+ * lib/irb/locale.rb (IRB::Locale::real_load): ditto.
+
+ * lib/irb/slex.rb (SLex::Node::create_subnode): remove garbage.
+
+Mon Jan 17 00:09:42 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/uri/common.rb (PORT): typo fix. fixed: [ruby-core:04256]
+
+Sat Jan 15 14:57:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): ignore trailing CRs at the end of short
+ options as well as long options. fixed: [ruby-core:04232]
+
+Sat Jan 15 13:44:22 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.2 -> 0.1.3.
+
+ * lib/rss/rss.rb: accept inheritance. [ruby-talk:126104]
+
+Wed Jan 12 12:29:28 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_define_method): incomplete subclass check.
+ [ruby-dev:25464]
+
+ * class.c (rb_make_metaclass): class of metaclasses should be
+ plain Class. [ruby-list:40524]
+
+Tue Jan 11 20:58:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (remain_size): use buffered data instead of unreading to avoid
+ inconsistency of text mode. fixed: [ruby-dev:25446]
+
+Tue Jan 11 09:37:53 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * numeric.c (Init_Numeric): turn off floating point exceptions
+ on bcc32. "1e300".to_f had crashed by overflow.
+
+Mon Jan 10 15:28:51 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#request_line): should
+ escape SCRIPT_NAME and PATH_INFO before being parsed as a URI.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils#escape_path): add
+ new method to escape URI path component.
+
+ * lib/webrick/ssl.rb (WEBrick::Config::SSL): the default value
+ of :SSLEnable is false.
+
+ * test/webrick/{test_cgi.rb,webrick.cgi}: new file.
+
+ * test/webrick/utils.rb: require "webrick/https.h".
+
+Mon Jan 10 01:22:55 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_data_object_alloc): klass may be NULL.
+ [ruby-list:40498]
+
+Sun Jan 9 14:12:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_f_select): IO list could be altered. [ruby-dev:25312]
+
+Sun Jan 9 04:08:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/webrick/test_server.rb (test_daemon): delete an assertion
+ which has possibility to fail by race condition.
+
+Sun Jan 9 03:22:46 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (test_copy_entry): copy_entry
+ copies only file type, not mtime. [ruby-dev:25383]
+
+Sat Jan 8 04:38:47 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb: Kernel#y requires an argument.
+
+Fri Jan 7 21:12:29 2005 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
+
+ * random.c (rand_init): use ALLOC_N instead of ALLOCA_N
+ [ruby-dev:25426]
+
+Fri Jan 7 20:01:31 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_service):
+ should delete trailing LF from the result of pack("m*").
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_connect):
+ - should delete trailing LF from the result of pack("m*").
+ - clear Request-Line not to send the response by HTTPServer#run.
+
+ * lib/webrick/httputils (WEBrick::HTTPUtils.parse_qvalues):
+ refine regexp (and change the name of a local variable).
+
+ * lib/webrick/server.rb (WEBrick::Daemon.start): prepared stdio
+ don't allow changing its mode.
+
+ * test/webrick/*, sample/webrick/httpproxy.rb: add new files.
+
+Fri Jan 7 18:03:35 2005 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (mark_locations_array): avoid core dump with -O3.
+ [ruby-dev:25424]
+
+Thu Jan 6 20:29:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_end): should return value.
+
+Thu Jan 6 19:59:03 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_close): didn't close socket handle.
+ [ruby-dev:25414]
+
+ * win32/win32.c (rb_w32_open_osfhandle): bcc32's _open_osfhandle
+ never set EMFILE.
+
+Thu Jan 6 17:22:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * random.c (random_seed): O_NONBLOCK isn't defined on some
+ platforms. [ruby-dev:25417]
+
+Thu Jan 6 13:45:35 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb: recognize +00:00 and GMT as a localtime.
+
+Thu Jan 6 07:58:28 2005 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/usage.rb (RDoc::RDoc.usage_no_exit): Allow for colons
+ in path names on DOS machines. (thanks to Johan Nilsson)
+
+Thu Jan 6 00:02:35 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: use MockClock.sleep instead of Kernel.sleep
+ [ruby-dev:25387]
+
+Wed Jan 5 20:16:32 2005 Tanaka Akira <akr@m17n.org>
+
+ * random.c (limited_big_rand): didn't work if SIZEOF_BDIGITS == 2.
+ [ruby-dev:25408]
+
+ * random.c (random_seed): refined.
+
+Wed Jan 5 16:39:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * parse.y (BITSTACK_POP): workaround for bcc32 compiler's bug.
+ shift assignment operator '>>=' for __int64 in struct may
+ generate collapsed code. [ruby-dev:25342]
+
+ * win32/win32.[ch]: failed to compile on bcc32 (and probably wince)
+ [ruby-dev:25306]
+
+Wed Jan 5 12:49:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_initialize): Thread objects cannot be initialized
+ again. fixed: [ruby-core:04067]
+
+Wed Jan 5 02:30:11 2005 Tanaka Akira <akr@m17n.org>
+
+ * random.c (init_by_array): imported from mt19937ar-cok.tgz.
+ (genrand_int32): ditto.
+ (genrand_real): replaced with genrand_res53 in mt19937ar-cok.
+ (rand_init): support bignum for longer seed.
+ (random_seed): generate longer seed.
+ (make_mask): new function.
+ (limited_rand): ditto.
+ (limited_big_rand): ditto.
+ (rb_f_rand): call limited_rand and limited_big_rand.
+ [ruby-dev:25403]
+
+Tue Jan 4 23:25:29 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_rand): should return positive random number.
+ [ruby-dev:25401]
+
+Tue Jan 4 21:25:43 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/{test_drbssl.rb,test_drbunix.rb,ut_drb.rb}: use
+ DRbService.ext_service. reduce sleep.
+
+Mon Jan 3 14:01:54 2005 Tanaka Akira <akr@m17n.org>
+
+ * random.c (random_seed): don't use /dev/urandom if it is not
+ character device.
+
+Mon Jan 3 11:37:42 2005 Tanaka Akira <akr@m17n.org>
+
+ * random.c (random_seed): use /dev/urandom if available.
+ [ruby-dev:25392]
+
+Tue Jan 4 11:15:29 2005 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
+
+ * bignum.c (rb_big_rand): do not use rb_big_modulo to generate
+ random bignums. [ruby-dev:25396]
+
+Mon Jan 3 11:03:37 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/test_drb.rb: move TestDRbReusePort to new file.
+ [ruby-dev:25238]
+
+ * test/drb/drbtest.rb: change timeout.
+
+ * test/drb/ignore_test_drb.rb: new file.
+
+Mon Jan 3 07:27:46 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpauth/htpasswd.rb (WEBrick::Htpasswd#reload):
+ raise NotImplementedError if password is encrypted by digest
+ algorithms. This patch is contributed by sheepman. [ruby-list:40467]
+
+ * lib/webrick/httpauth/digestauth.rb
+ (WEBrick::HTTPAuth::DigestAuth#_authenticate): fix digest calculation.
+ This patch is contributed by sheepman. [ruby-list:40482]
+
+ * lib/webrick/{httpauth.rb,httpauth/basicauth.rb,httpproxy.rb}: use
+ pack/unpack-template char "m" instead of lib/base64.rb to do base64
+ encoding/decoding. fixed: [ruby-dev:25336]
+
+ * test/webrick/test_httpauth.rb: new file.
+
+Sun Jan 2 15:42:10 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: add lazy stop_service.
+
+ * lib/drb/extserv.rb: ditto.
+
+Sun Jan 2 01:17:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/drbtest.rb: add method DRbService.ext_service.
+
+ * test/drb/test_drb.rb: ditto.
+
+ * test/drb/test_drbssl.rb: ditto.
+
+Sat Jan 1 20:23:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * io.c (argf_readpartial): new method ARGF.readpartial.
+ (io_getpartial): extracted from io_readpartial.
+ (io_readpartial): call io_getpartial.
+
+Sat Jan 1 17:44:54 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (each_capitalized): should join header field
+ value. This patch is contributed sheepman [ruby-list:40478]
+
+ * test/net/http/test_httpheader.rb: test it.
+
+Sat Jan 1 16:21:29 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (copy_stream): use read/write instead of
+ sysread/syswrite, which allows duck typing. [ruby-dev:25369]
+
+ * lib/fileutils.rb (copy_stream): does NOT support nonblocking IO.
+ [ruby-dev:25370]
+
+ * lib/fileutils.rb (copy_entry): could not copy symlink.
+
+ * test/fileutils/test_fileutils.rb: test copy_entry, copy_file,
+ copy_stream.
+
+Sat Jan 1 04:20:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ns_spki.c (ossl_spki_set_challenge): should call
+ StringValue before GetSPKI. fixed: [ruby-dev:25359].
+
+Sat Jan 1 01:13:28 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_autoload): [ruby-dev:25373]
+
+Fri Dec 31 14:10:43 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::display_flow_item):
+ Fix problem if heading contains formatting.
+
+Fri Dec 31 00:08:02 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in (HAVE_RLIM_T): removed because not used.
+
+Thu Dec 30 22:45:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h: don't deprecate rb_read_check.
+
+ * io.c (STDIO_READ_DATA_PENDING): reverted from old READ_DATA_PENDING
+ to check stdio read buffer.
+ (rb_read_check): use STDIO_READ_DATA_PENDING.
+ (rb_read_pending): ditto.
+ (rb_getc): ditto.
+
+Thu Dec 30 05:39:35 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: eliminate unused members in struct parser_params.
+ [ruby-dev:25258] (again)
+
+ * parse.y: make parser_new() static.
+
+Thu Dec 30 00:41:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_avalue): [ruby-dev:25366]
+
+ * string.c (rb_str_justify): [ruby-dev:25367]
+
+Wed Dec 29 11:07:07 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/html/kilmer.rb: Update to use new
+ sections.
+
+Tue Dec 28 22:31:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_justify): create buffer string after argument type
+ conversion. fixed: [ruby-dev:25341]
+
+Tue Dec 28 17:18:17 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/net/telnet.rb (preprocess): remove NULL unless binmode.
+ fixed: [ruby-list:40320]
+
+Tue Dec 28 15:41:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (reinit): should initialize all static
+ variables. fixed: [ruby-list:40445]
+
+Tue Dec 28 15:25:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (Kconv::RegexpEucjp): second byte is up to
+ 0xfe.
+
+ * ext/nkf/lib/kconv.rb (Kconv#kconv): should handle UTF8 and UTF16
+ properly.
+
+Tue Dec 28 13:35:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_deflate_s_deflate, rb_inflate_s_inflate): ensure
+ freeing internal zstreams. fixed: [ruby-dev:25309]
+
+ * ext/zlib/zlib.c (rb_deflate_init_copy): replace rb_deflate_clone.
+
+Mon Dec 27 20:02:14 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix SEGV bug when deleting Tk interp
+
+ * ext/tk/lib/multi-tk.rb: ditto
+
+Mon Dec 27 16:54:05 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c (Init_ossl_x509name): should use
+ rb_hash_new to get exactly a Hash. fix [ruby-dev:25325].
+
+Mon Dec 27 15:29:12 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (cp_r): tested wrong file name.
+ [ruby-dev:25339]
+
+Mon Dec 27 15:15:18 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mv): should raise error when moving a
+ directory to the (empty) directory. [ruby-talk:124368]
+
+ * lib/fileutils.rb (mv): wrongly did not overwrite file on Win32
+ platforms.
+
+Mon Dec 27 14:36:20 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (NUM2RLIM, RLIM2NUM): Without SIZEOF_RLIM_T is not error.
+ fixed: [ruby-dev:25346]
+
+Sun Dec 26 16:21:39 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (Net::IMAP::PlainAuthenticator): added a new class
+ to support the PLAIN authentication mechanism. Thanks, Benjamin
+ Stiglitz.
+
+Sat Dec 25 01:28:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_select): [ruby-dev:25312]
+
+Fri Dec 24 23:27:18 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/image.rb: TkPhotoImage#cget bug fix
+
+Fri Dec 24 03:06:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_reopen, rb_io_reopen): prohibit to change access mode for
+ special IO ports. [ruby-dev:25225]
+
+ * io.c (next_argv): reduce use of stdio.
+
+Fri Dec 24 02:22:53 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_loader_transfer): check type conversion.
+
+ * ext/syck/rubyext.c (syck_parser_assign_io, rb_new_syck_node): duck
+ typing.
+
+ * ext/syck/rubyext.c (syck_parser_s_alloc, syck_parser_initialize):
+ allocation framework.
+
+ * ext/syck/rubyext.c (syck_emitter_s_alloc, syck_emitter_initialize):
+ ditto.
+
+Fri Dec 24 01:21:00 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/blt.rb: add BLT extension support
+
+ * ext/tk/lib/tkextlib/blt/*.rb: ditto
+
+ * ext/tk/lib/tkextlib/blt/tile/*.rb: ditto
+
+Thu Dec 23 23:43:24 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_setgroups): check if the argument length is
+ modified. fixed: [ruby-dev:25285]
+
+ * process.c (SIZEOF_RLIM_T): err if size of rlim_t is not set.
+
+Thu Dec 23 19:08:41 2004 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h: rename FMODE_UNSEEKABLE to FMODE_DUPLEX.
+
+ * io.c (io_check_tty): extracted function to set FMODE_LINEBUF and
+ FMODE_DUPLEX.
+
+Thu Dec 23 13:13:33 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: define TclTkLib::COMPILE_INFO and
+ RELEASE_DATE
+
+ * ext/tcltklib/extconf.rb: ditto
+
+ * ext/tk/tkutil.c: define TkUtil::RELEASE_DATE
+
+ * ext/tk/lib/tk.rb: define Tk::RELEASE_DATE
+
+Thu Dec 23 00:16:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (bsdi): use $(CC) for LDSHARED. fixed [ruby-dev:25270]
+
+Wed Dec 22 11:14:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_mode_modenum): replace O_ACCMODE with O_RDWR.
+ fixed: [ruby-dev:25273]
+
+Wed Dec 22 08:34:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/sym.c (rb_dlsym_initialize): extract internal pointers after
+ all argument conversion. fixed: [ruby-dev:25271]
+
+Tue Dec 21 16:15:21 2004 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb: use "" instead of "." if prefix argument is
+ nil in proxy methods. nil is default value.
+
+ * test/xmlrpc/test_webrick_server.rb, test/xmlrpc/webrick_testing.rb:
+ use threads instead of forking. this should fix issue #1208
+ (http://rubyforge.org/tracker/?func=detail&atid=1698&aid=1208&group_id=426).
+ removed testing of SSL enabled servlet as this hangs.
+
+Wed Dec 22 00:05:10 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/*, test/soap/*, sample/soap/authheader/*: eval cleanup.
+
+Tue Dec 21 22:07:41 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode_all): use rb_str_new4
+ to avoid SEGV.
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode,
+ ossl_asn1_decode_all): temporary value should be marked volatile.
+
+Tue Dec 21 12:42:34 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode):
+ use rb_str_new4 to avoid SEGV. fix [ruby-dev:25261]
+
+ * test/openssl/test_asn1.rb: add tests for OpenSSL::ASN1.
+
+Tue Dec 21 12:10:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/grid.rb: rescue bug of 'grid configure' on Tcl/Tk8.3-
+
+Mon Dec 20 22:52:29 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * added samples for the previous soap4r's commit.
+
+Mon Dec 20 22:56:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (set_stack_end): gcc noinline attribute is available since
+ gcc-3.1.
+
+Mon Dec 20 22:40:31 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * added files:
+ * lib/soap/mapping/wsdl*.rb
+ * lib/wsdl/soap/element.rb
+ * lib/wsdl/xmlSchema/simpleContent.rb
+
+ * modified files:
+ * lib/soap/*
+ * lib/wsdl/*
+ * lib/xsd/*
+ * test/soap/*
+ * test/wsdl/*
+ * test/xsd/*
+
+ * summary
+ * imported from the soap4r repository. Version: 1.5.3-ruby1.8.2
+
+ * added several XSD basetype support: nonPositiveInteger,
+ negativeInteger, nonNegativeInteger, unsignedLong, unsignedInt,
+ unsignedShort, unsignedByte, positiveInteger
+
+ * HTTP client connection/send/receive timeout support.
+
+ * HTTP client/server gzipped content encoding support.
+
+ * improved WSDL schema definition support; still is far from
+ complete, but is making step by step improvement.
+
+Mon Dec 20 14:45:19 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/https.rb: delete descriptions about key_file and cert_file.
+ fixed: [ruby-dev:25243]
+
+ * ext/openssl/lib/net/telnets.rb: ditto.
+
+Mon Dec 20 14:07:02 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: supports new features of Tcl/Tk8.5a2
+
+ * ext/tk/lib/tk/clock.rb: ditto
+
+ * ext/tk/lib/tk/text.rb: ditto
+
+ * ext/tk/lib/tk/panedwindow.rb: ditto
+
+Mon Dec 20 13:51:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyport): [ruby-talk:124072]
+
+Mon Dec 20 10:51:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (special_local_set): prevent the parser object from GC.
+ fixed: [ruby-dev:25252]
+
+Mon Dec 20 03:30:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session#initialize): empty session id was
+ used if request had no session key. fixed: [ruby-core:03981]
+
+Mon Dec 20 01:51:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (make_struct): [ruby-dev:25249]
+
+Mon Dec 20 00:16:54 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/encodings/SHIFT_JIS.rb: fixed LoadError bug.
+ [ruby-core:3958]
+
+Sun Dec 19 17:24:59 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (enable_rpath): use rpath flag to embed the library
+ path into extensions on ELF environment. [ruby-dev:25035]
+
+Sun Dec 19 11:01:25 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb: use standalone runner for -e.
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner#options): accept
+ multiple -p and -x options.
+
+ * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir#recursive_collect):
+ ditto.
+
+Sat Dec 18 16:36:23 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_deflate_s_deflate, rb_inflate_s_inflate):
+ disallow interrupt by type conversion. fixed: [ruby-dev:25226]
+
+Sat Dec 18 15:09:02 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/httpauth.rb,
+ lib/webrick/httpauth/{basicauth.rb,digestauth.rb}: use
+ pack/unpack-template char "m" instead of lib/base64.rb to do base64
+ encoding/decoding.
+
+Sat Dec 18 10:51:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_open_dir): new function. [ruby-dev:25242]
+
+ * io.c (rb_f_open): add type check for return value from to_open.
+
+Fri Dec 17 16:44:26 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in (ac_cv_sizeof_rlim_t): set 8 for BSD/OS.
+ Reported by OHARA Shigeki. [ruby-dev:25236]
+
+Fri Dec 17 16:28:12 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fix bug on setting up system encoding
+
+ * ext/tk/lib/tk/event.rb: fix error on require process
+
+ * ext/tk/lib/tk/font.rb: fix abnormal termination error on Windows
+
+ * ext/tk/lib/tk/virtevent.rb: TkVirtualEvent::PreDefVirtEvent.new()
+ accepts event-sequence arguments
+
+ * ext/tk/lib/tk/text.rb: fail to dump embedded images
+
+ * ext/tk/lib/tk/text.rb: tag_nextrange and tag_prevrange returns wrong
+ types of values
+
+ * ext/tk/lib/tk/texttag.rb: nextrange and prevrange returns wrong
+ types of values
+
+ * ext/tk/lib/tk/text.rb: add TkText::IndexModMethods module and
+ TkText::IndexString class to treat text index modifiers
+
+ * ext/tk/lib/tk/texttag.rb: use TkText::IndexModMethods module
+
+ * ext/tk/lib/tk/textmark.rb: ditto
+
+ * ext/tk/lib/tk/textimage.rb: ditto
+
+ * ext/tk/lib/tk/textwindow.rb: ditto
+
+ * ext/tk/lib/tk/textimage.rb: wrong gravity of text mark for embedded
+ image
+
+ * ext/tk/lib/tk/textwindow.rb: wrong gravity of text mark for
+ embedded window
+
+Fri Dec 17 13:33:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session#initialize): control adding
+ session_id hidden fields. fixed: [ruby-talk:123850]
+
+Fri Dec 17 00:01:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_proc_arity, rb_node_arity, rb_mod_method_arity,
+ rb_obj_method_arity): new functions to obtain method arity.
+ [ruby-dev:25143]
+
+Thu Dec 16 23:31:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): create RUBYARCHDIR also when no extension
+ is installed. fixed: [ruby-dev:25215]
+
+Thu Dec 16 22:36:57 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/test_drb.rb: adjust and reduce sleep.
+
+Thu Dec 16 18:37:08 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (ossl_raise): refine message format.
+
+Thu Dec 16 16:29:44 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/demos-en/widget: modify version check for
+ supporting features
+
+Thu Dec 16 16:03:50 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/bindtag.rb: bug fix [ruby-talk: 123667]
+
+ * ext/tk/lib/tk/timer.rb: accept :idle for the interval argument
+
+ * ext/tk/lib/tk.rb: add TkComm._callback_entry?()
+
+ * ext/tk/lib/multi-tk.rb: add MultiTkIp.cb_entry_class
+
+ * ext/tk/lib/tk/canvas.rb: use TkComm._callback_entry?()
+
+ * ext/tk/lib/tk/canvastag.rb: ditto
+
+ * ext/tk/lib/tk/dialog.rb: ditto
+
+ * ext/tk/lib/tk/optiondb.rb: ditto
+
+ * ext/tk/lib/tk/text.rb: ditto
+
+ * ext/tk/lib/tk/texttag.rb: ditto
+
+ * ext/tk/lib/tk/textwindow.rb: ditto
+
+ * ext/tk/lib/tk/timer.rb: ditto
+
+ * ext/tk/lib/tk/validation.rb: ditto
+
+ * ext/tk/lib/tkextlib/*: ditto
+
+Thu Dec 16 04:02:28 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/extconf.rb: bison is not needed if ripper.c exists.
+ [ruby-dev:25191]
+
+Thu Dec 16 03:27:10 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: remove junk.
+
+Thu Dec 16 00:57:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (rb_syck_io_str_read): [ruby-core:03973]
+
+Thu Dec 16 00:43:29 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: changed default binded address family to use an
+ available address family of host name. [druby-ja:101]
+
+ * lib/drb/ssl.rb: ditto
+
+Wed Dec 15 17:47:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#start_thread):
+ should log about all accepted socket. [ruby-core:03962]
+
+ * lib/webrick/accesslog.rb (WEBrick::AccessLog#setup_params):
+ "%%" and "%u" are supported. [webricken:135]
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#check_filename):
+ :NondisclosureName is acceptable if it is Enumerable.
+
+ * lib/webrick/config.rb (WEBrick::Config::FileHandler):
+ default value of :NondisclosureName is [".ht*", "*~"].
+
+Wed Dec 15 16:10:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_id_obsolete): warn always.
+
+Wed Dec 15 15:31:02 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/set.rb (Set#==): [ruby-dev:25206]
+
+Wed Dec 15 14:32:18 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_fdisset): check whether the handle is valid.
+
+Wed Dec 15 10:30:37 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/openssl/ossl_digest.c (ossl_digest_initialize): [ruby-dev:25198]
+
+Tue Dec 14 19:17:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * utf8.c (utf8_is_mbc_ambiguous): [ruby-talk:123561]
+
+ * utf8.c (utf8_mbc_to_normalize): ditto.
+
+Tue Dec 14 17:08:15 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_close): need to reset osfhnd().
+
+Tue Dec 14 14:03:57 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (ossl_raise): avoid buffer overrun.
+ [ruby-dev:25187]
+
+Tue Dec 14 12:36:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::initialize): generate new
+ session if given session_id does not exist. [ruby-list:40368]
+
+Tue Dec 14 08:47:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): should mark ruby_eval_tree. [ruby-dev:25189]
+
+Mon Dec 13 18:13:52 2004 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (set_stack_end): new function to obtain stack end address.
+ set_stack_end obtains a stack end address by an address of local
+ variable in the function.
+ (SET_STACK_END, STACK_END): use set_stack_end. don't use alloca.
+ This makes the conservative garbage collector to scan a stack frame
+ of the garbage_collect function itself. This is required because
+ callee-save registers may be stored in the frame.
+ [ruby-dev:25158]
+
+Mon Dec 13 02:45:51 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/curses.c (window_subwin): call NUM2INT() before
+ GetWINDOW(). fixed: [ruby-dev:25161]
+
+Mon Dec 13 00:58:02 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (cleanpath_aggressive): make it private.
+ (cleanpath_conservative): ditto.
+ Suggested by Daniel Berger. [ruby-core:3914]
+
+Sun Dec 12 21:32:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_super.rb (TestSuper#test_define_method): now methods
+ from procs can call super.
+
+Sun Dec 12 10:35:10 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/html/html.rb (RDoc::Page): Don't
+ show an accessor's r/w flag if none was specified
+
+Sun Dec 12 10:14:03 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc::parse_files): Never exclude files
+ explicitly given on the command line.
+
+Sat Dec 11 21:10:16 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: add DRbRemoteError. [ruby-list:40348],
+ [ruby-list:40390]
+
+ * test/drb/drbtest.rb: ditto.
+
+ * test/drb/ut_drb.rb: ditto.
+
+Sat Dec 11 13:08:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/optparse/subcommand.rb: a sample for sub commands like
+ cvs. contributed by Minero Aoki.
+
+Fri Dec 10 08:39:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_listen): get OpenFile just before calling
+ listen(2).
+
+Thu Dec 9 16:28:35 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/sdbm/init.c (GetDBM): typo.
+
+Thu Dec 9 16:21:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI#setup_header): avoid
+ SecurityError. [ruby-dev:24970]
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should wait
+ for reading request till data arrive. [ruby-talk:121068]
+
+Thu Dec 9 14:38:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_inspect): escape # which starts an expression
+ substitution. fixed: [ruby-core:03922]
+
+ * string.c (rb_str_dump): not escape # which isn't a substitution.
+
+Thu Dec 9 12:31:53 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (pipe_open): should set prog if argc != 0.
+
+Thu Dec 9 10:54:36 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_select): [ruby-dev:25132]
+
+ * ext/sdbm/init.c: ditto.
+
+ * ext/gdbm/gdbm.c: ditto.
+
+Thu Dec 9 10:19:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/socket/test_socket.rb (test_setsockopt): use SO_LINGER instead
+ of SO_BINDTODEVICE. fixed: [ruby-dev:25133]
+
+Thu Dec 9 03:08:36 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_init): set root-win title to "ruby" when
+ the running script is '-e one-liner' or '-' (stdin).
+
+ * ext/tcltklib/extconf.rb: add find_library("#{lib}#{ver}",..) for
+ stub libs
+
+ * ext/tk/lib/tk/textmark.rb: TkTextMarkCurrent and TkTextMarkAnchor
+ have a wrong parent class.
+
+ * ext/tk/lib/tk/dialog.rb: rename TkDialog2 --> TkDialogObj and
+ TkWarning2 --> TkWarningObj (old names are changed to alias names)
+
+ * ext/tk/lib/tk/dialog.rb: bug fix of treatment of 'prev_command'
+ option and hashes for configuration
+
+ * ext/tk/lib/tk/dialog.rb: add TkDialogObj#name to return the
+ button name
+
+ * ext/tk/lib/tk/radiobutton.rb: rename enbugged method value() ==>
+ get_value() and value=(val) ==> set_value(val).
+
+ * ext/tk/lib/tk/menu.rb: add TkMenu.new_menuspec
+
+ * ext/tk/lib/tk/menu.rb: add alias (TkMenuButton = TkMenubutton,
+ TkOptionMenuButton = TkOptionMenubutton)
+
+ * ext/tk/lib/tk/event.rb: new method aliases (same as option keys of
+ event_generate) for Event object
+
+ * ext/tk/lib/tk/font.rb: configinfo returns proper types of values
+
+ * ext/tk/lib/tk.rb: bind methods accept subst_args + block
+
+ * ext/tk/lib/tk/canvas.rb: ditto
+
+ * ext/tk/lib/tk/canvastag.rb: ditto
+
+ * ext/tk/lib/tk/frame.rb: ditto
+
+ * ext/tk/lib/tk/text.rb: ditto
+
+ * ext/tk/lib/tk/texttag.rb: ditto
+
+ * ext/tk/lib/tk/toplevel.rb: ditto
+
+ * ext/tk/lib/tkextlib/*: ditto and bug fix
+
+Wed Dec 8 23:54:29 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/html/html.rb (RDoc::Page): Typo
+ meant that h2 tag was invisible.
+
+Wed Dec 8 22:10:02 2004 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h, io.c, ext/dl/dl.c, ext/pty/pty.c, ext/socket/socket.c:
+ create FILE object only when required: popen(3) and DL's IO#to_ptr.
+ [ruby-dev:25122]
+
+ * io.c (rb_io_binmode): use setmode for Human68k. [ruby-dev:25121]
+
+Wed Dec 8 20:13:06 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * process.c (rb_spawn): support for DJGPP.
+
+ * lib/mkmf.rb (VPATH): specify the implicit path separator for DJGPP.
+
+Wed Dec 8 17:48:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): merge Guy Decoux's argument preserve
+ patch in [ruby-core:03874].
+
+Wed Dec 8 17:37:33 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pipe_exec): need to close original socket
+ handle.
+
+Wed Dec 8 14:31:36 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): [ruby-dev:25104]
+
+Wed Dec 8 13:49:46 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pipe_exec): must close original handle
+ before exec. fixed: [ruby-dev:25112]
+
+Wed Dec 8 11:46:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (string_content): get rid of segfault at empty evstr.
+ fixed: [ruby-dev:25113]
+
+Wed Dec 8 03:26:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_bio.c (ossl_obj2bio): should not use fptr->f.
+ [ruby-dev:25101]
+
+Wed Dec 8 03:26:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: prepend LIBRUBY_SO to LD_PRELOAD as well as rubytest.rb.
+
+Wed Dec 8 01:35:44 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (is_socket): reorder of function definitions.
+
+Wed Dec 8 00:44:31 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): win32 bidirectional pipe support.
+
+ * win32/win32.[ch] (rb_w32_pipe_exec): ditto.
+
+ * win32/win32.[ch] (socketpair): new function. POSIX socketpair
+ emulation.
+
+ * win32/win32.c (socketpair_internal): ditto.
+
+Wed Dec 8 00:25:07 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_version.rb: added version check test.
+ [ruby-dev:25053]
+
+Tue Dec 7 15:40:38 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c (io_fwrite): avoid context switch before writing to stderr.
+ [ruby-dev:25080]
+
+ * rubyio.h: refine deprecated declaration.
+
+ * configure.in, file.c, io.c: remove useless check: fseeko, etc.
+
+Tue Dec 7 13:42:07 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c (dir_s_mkdir): win32 special processing doesn't need any
+ longer.
+
+ * win32/win32.[ch] (rb_w32_mkdir): new function. POSIX.1 compatible
+ interface.
+
+ * win32/win32.[ch] (rb_w32_rmdir): new function.
+
+Tue Dec 7 00:27:37 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_setgroups): [ruby-dev:25081]
+
+Mon Dec 6 23:07:57 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: check -lsocket for socketpair and shutdown.
+ reported by Ville Mattila. [ruby-core:03903]
+
+Mon Dec 6 23:00:45 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (ac_cv_sizeof_rlim_t): setup for DJGPP.
+
+ * io.c (is_socket, shutdown): define dummy macros for DJGPP.
+
+ * process.c: use SIZEOF_RLIM_T instead of HAVE_RLIM_T for DJGPP.
+
+Mon Dec 6 21:19:40 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (is_socket): fix typos. [ruby-core:03900]
+
+Mon Dec 6 20:13:28 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (is_socket): new function.
+
+ * io.c (rb_io_close_read, rb_io_close_write): use is_socket().
+
+ * io.c (rb_io_fptr_finalize): need to check fptr->f before calling
+ rb_io_fptr_cleanup().
+
+ * io.c (pipe_open): win32 pipe support (experimental).
+
+ * win32/win32.[ch] (rb_w32_pipe_exec): return file descriptors
+ instead of FILE structure objects.
+
+ * win32/win32.[ch] (rb_w32_is_socket): new function.
+
+Mon Dec 6 19:40:40 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * Makefile.in (.y.c): simplify the rule.
+
+Mon Dec 6 18:08:10 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_eqq): document fix. [ruby-talk:122541]
+
+Mon Dec 6 17:49:30 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (run_trap_eval): add prototype for Microsoft compiler.
+
+Mon Dec 6 17:32:38 2004 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h, intern.h, io.c, file.c, process.c, ext/socket/socket.c,
+ ext/pty/pty.c, ext/io/wait/wait.c, ext/openssl/ossl_ssl.c:
+ Use own buffering mechanism instead of stdio. [ruby-dev:25056]
+
+ * io.c, ext/stringio/stringio.c, test/ruby/ut_eof.rb:
+ EOF flag removed.
+
+Mon Dec 6 17:15:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/socket/test_socket.rb (TestBasicSocket#test_setsockopt):
+ BasicSocket#setsockopt dumps core. [ruby-dev:25039]
+
+ * test/socket/test_tcp.rb (TestTCPSocket#test_recvfrom):
+ TCPSocket#recvfrom dumps core. [ruby-dev:24705]
+
+ * test/socket/test_udp.rb (TestUDPSocket#test_connect):
+ UDPSocket#connect dumps core. [ruby-dev:25045]
+
+ * test/socket/test_udp.rb (TestUDPSocket#test_bind):
+ UDPSocket#bind dumps core. [ruby-dev:25057]
+
+Mon Dec 6 09:59:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fread): take VALUE argument.
+
+ * ext/socket/socket.c (sock_connect): use rb_str_new4().
+ [ruby-dev:25052]
+
+ * eval.c (rb_yield_0): [ruby-dev:25051]
+
+Mon Dec 6 01:32:31 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_public_encrypt,
+ ossl_rsa_public_decrypt, ossl_rsa_private_encrypt,
+ ossl_rsa_private_decrypt): should take an optional argument
+ to specify padding mode. [ruby-talk:122539]
+
+ * ext/openssl/ossl_pkey_rsa.c (Init_ossl_rsa): add new constants
+ PKCS1_PADDING, SSLV23_PADDING, NO_PADDING and PKCS1_OAEP_PADDING
+ under OpenSSL::PKey::RSA.
+
+ * test/openssl/test_pkey_rsa.rb: new file.
+
+Sun Dec 5 19:39:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Completion#complete): new parameter
+ to direct case insensitiveness.
+
+ * lib/optparse.rb (OptionParser#order!): ignore case only for long
+ option. [ruby-dev:25048]
+
+Sun Dec 5 00:54:32 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * mkconfig.rb: setup library paths before requiring library.
+ [ruby-core:03892]
+
+Sat Dec 4 22:54:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_write): remove rb_str_locktmp(). [ruby-dev:25050]
+
+ * io.c (io_fwrite): takes VALUE string as an argument.
+ [ruby-dev:25050]
+
+ * ext/socket/socket.c (sock_connect): remove rb_str_locktmp().
+ [ruby-dev:25050]
+
+ * ext/socket/socket.c (udp_connect): [ruby-dev:25045]
+
+ * ext/socket/socket.c (udp_bind): ditto.
+
+ * ext/socket/socket.c (udp_send): ditto.
+
+ * ext/socket/socket.c (bsock_send): ditto.
+
+ * ext/socket/socket.c (s_recvfrom): ditto.
+
+ * hash.c (rb_hash_hash): should provide "hash" method where "eql?"
+ is redefined. [ruby-talk:122482]
+
+Sat Dec 4 21:29:05 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: (In previous commit) new method chown.
+
+ * lib/fileutils.rb: (In previous commit) new method chown_R.
+
+ * lib/fileutils.rb: (In previous commit) new method chmod_R
+ wrongly added. Removed now.
+
+Sat Dec 4 20:45:52 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir, mkdir_p): should chmod explicitly.
+ [ruby-core:03881]
+
+Sat Dec 4 18:54:09 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: removed empty lines from output.
+
+Sat Dec 4 18:49:09 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.1 -> 0.1.2
+
+ * lib/rss/rss.rb: #item=/#set_item and so on are obsolete.
+
+Sat Dec 4 14:28:56 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::Section::set_comment):
+ Section comments may now be bracketed by lines which are
+ ignored. You can now write
+ # -----------
+ # :section: Dave's Section
+ # comment material
+ # -----------
+ The lines before :section: are removed, and identical lines at the end are
+ also removed if present.
+
+Sat Dec 4 00:35:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (bsock_setsockopt): [ruby-dev:25039]
+
+Fri Dec 3 12:25:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.h: fix prototype for C++.
+
+Fri Dec 3 01:55:24 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: widget configuration by TkWindow#method_missing
+ returns proper object. "widget.option = val" returns val, and
+ "widget.option(val)" returns self.
+
+ * ext/tk/lib/tk/font.rb: TkFont#replace accepts only one font argument.
+
+ * ext/tk/lib/tk/radiobutton.rb: add TkRadiobutton#value and
+ TkRadiobutton#value=(val).
+
+ * ext/tk/lib/tk/spinbox.rb: callback substitution support on
+ command option.
+
+ * ext/tk/sample/demos-en/widget: bug fix (wrong image height)
+
+ * ext/tk/sample/demos-jp/widget: ditto.
+
+Fri Dec 3 00:21:05 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): prepare to pass a block from "call" method
+ to a Proc generated by Method#to_proc. [ruby-dev:25031]
+
+ * eval.c (rb_yield_0): actually passes a block given to "call".
+
+ * object.c (convert_type): use rb_respond_to() again. this fix is
+ based on [ruby-dev:25021]
+
+ * eval.c (rb_respond_to): funcall respond_to? if it's redefined.
+ [ruby-dev:25021]
+
+Thu Dec 2 15:13:53 2004 Michael Neumann <mneumann@ruby-lang.org>
+
+ * test/xmlrpc/test_parser.rb, test/xmlrpc/data/*.expected: Expected
+ values are now stored in YAML instead of using #inspect. This fixes
+ false hash order.
+
+Fri Dec 3 00:11:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_file_initialize): [ruby-dev:25032]
+
+Thu Dec 2 16:41:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_protect): prevent continuations created inside from being
+ called from the outside. [ruby-dev:25003]
+
+ * eval.c (rb_callcc, rb_cont_call): prohibit calling from different
+ signal contexts. [ruby-dev:25022]
+
+Thu Dec 2 10:45:02 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/readline/test_readline.rb: fix for NetBSD.
+
+Thu Dec 2 09:57:24 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct::Marshaler): OpenStruct can be
+ marshaled again. [ruby-core:03862]
+
+Thu Dec 2 09:30:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (thread_mark): mark thread group. [ruby-dev:25020]
+
+ * eval.c (thgroup_add): check whether the argument is really a Thread.
+
+Thu Dec 2 07:57:16 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_ctl): [ruby-dev:25019]
+
+Wed Dec 1 06:13:00 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c: add constant NKF::VERSION
+
+ * ext/nkf/nkf.c(guess): this becomes an alias of guess2
+
+ * ext/nkf/test.rb: add --no-cp932
+
+ * ext/nkf/nkf-utf8/nkf.c: original nkf2 revision 1.47
+
+Wed Dec 1 02:21:02 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (sighandler): call handler immediately only for default
+ handlers. [ruby-dev:25003]
+
+Tue Nov 30 23:49:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): errno should be preserved for rb_sys_fail() when
+ fork failed.
+
+Tue Nov 30 16:18:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fread): need not to null terminate. [ruby-dev:24998]
+
+ * eval.c (rb_eval): should check previous frame for ZSUPER.
+
+ * io.c (read_all): remove unnecessary rb_str_resize().
+ [ruby-dev:24996]
+
+ * io.c (io_readpartial): ditto.
+
+ * io.c (io_read): ditto.
+
+Tue Nov 30 14:58:33 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb (install): add arguments explicitly to "super".
+
+Tue Nov 30 00:49:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (PUSH_FRAME): flags should have been initialized.
+
+ * eval.c (rb_eval): [ruby-core:03856]
+
+ * io.c (rb_io_sysread): use temporary lock. [ruby-dev:24992]
+
+Tue Nov 30 00:12:57 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regparse.c: now handles many alternatives (over 500000)
+ in regexp. [ruby-dev:24773]
+
+Mon Nov 29 16:06:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_write): insufficiently filled string
+ being extended when overwriting. [ruby-core:03836]
+
+Mon Nov 29 15:59:05 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct::method_missing): check method
+ duplication for -d.
+
+ * lib/ostruct.rb (OpenStruct::initialize): ditto.
+
+Mon Nov 29 15:22:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/io/nonblock/test_flush.rb: abandon tests when io/nonblock is
+ not supported.
+
+Mon Nov 29 13:37:54 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (fptr_finalize): must not use FILE after fclose().
+ [ruby-dev:24985]
+
+Mon Nov 29 13:13:13 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): push back the last space before next
+ loop because CharNext() eats it.
+
+Mon Nov 29 03:08:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (convert_type): [ruby-core:03845]
+
+ * eval.c (rb_funcall_rescue): new function.
+
+ * object.c (rb_Array): avoid using rb_respond_to().
+
+ * object.c (rb_Integer): ditto.
+
+ * eval.c (get_backtrace): no conversion for nil.
+
+ * parse.y (reduce_nodes): empty body should return nil.
+
+Mon Nov 29 01:18:18 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_check_writable): call io_seek regardless of
+ NEED_IO_SEEK_BETWEEN_RW. [ruby-dev:24986]
+
+Sun Nov 28 15:57:58 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::Element#tag): not use block_given? for
+ working with ruby 1.6 again.
+
+ * lib/rss/{0.9,2.0,trackback}.rb, lib/rss/maker/base.rb:
+ undef -> remove_method for working with ruby 1.6 again.
+
+Sun Nov 28 15:51:40 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::NotSetError): added.
+
+ * lib/rss/maker/{1.0,0.9,2.0}.rb: changed RSS Maker to raise
+ RSS::NotSetError if required values of maker.channel are not
+ set. [ruby-talk:120061]
+
+ * test/rss/test_maker_{1.0,0.9,2.0}.rb: changed tests to check RSS
+ Maker raises or not.
+
+Sun Nov 28 12:14:47 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regparse.c (fetch_token): fixed test failure on HP-UX ia64
+ ([ruby-dev:24859]).
+
+Sun Nov 28 12:08:15 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regparse.c, test/ruby/test_regexp.rb: fixed problem with UTF-8
+ characters that have U+00FE or invalid characters.
+
+Sun Nov 28 12:07:04 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regexec.c, test/ruby/test_regexp.rb: fixed segmentation fault
+ ([ruby-dev:24887]).
+
+Sun Nov 28 12:05:48 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regcomp.c, regint.h: fixed PLATFORM_UNALIGNED_WORD_ACCESS
+ problem ([ruby-dev:24802] and [ruby-core:3733])
+
+Sat Nov 27 23:43:39 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_initialize): [ruby-dev:24972]
+
+Sat Nov 27 21:43:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c: avoid data lost with nonblocking fd and
+ stdio buffering in sync mode. [ruby-dev:24966]
+ based on matz's patch [ruby-dev:24967]
+ (io_fwrite): new primitive writing function which writes
+ directly if sync mode.
+ (rb_io_fwrite): wrapper for io_fwrite now.
+ (io_write): call io_fwrite instead of rb_io_fwrite.
+
+Sat Nov 27 17:43:21 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/{0.9,1.0,2.0,trackback,xml-stylesheet}.rb: added
+ #setup_maker.
+
+ * test/rss/test_setup_maker_*.rb: added tests for #setup_maker.
+
+ * lib/rss/maker/base.rb(RSS::Maker::Items#max_size=): supported
+ output item size limitation.
+
+ * sample/rss/blend.rb: added sample for RSS Maker.
+
+Sat Nov 27 17:41:35 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/0.9.rb: supported RSS::Maker.make("0.91"). Now,
+ "0.9" is just alias of "0.91."
+
+ * test/rss/test_maker_0.9.rb: make("0.9") -> maker("0.91").
+
+ * test/rss/test_to_s.rb: ditto.
+
+Sat Nov 27 17:21:30 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/list_description.rb: untabified.
+
+ * sample/rss/rss_recent.rb: ditto.
+
+Sat Nov 27 14:44:15 2004 Kent Sibilev <ksibilev@bellsouth.net>
+
+ * lib/cgi/session.rb (CGI::Session::initialize): [ruby-core:03832]
+
+Sat Nov 27 09:41:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fread): old rb_io_fread with file closing checking.
+ (rb_io_fread): wrapper for io_fread now.
+ [ruby-dev:24964]
+
+Fri Nov 26 18:02:44 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: Tk.destroy uses TkWindow#epath
+
+ * ext/tk/lib/tk/image.rb: bug fix
+
+ * ext/tk/lib/tk/wm.rb: add 'iconphoto' method(Windows only)
+
+ * ext/tk/lib/tkextlib/*: some methods uses TkWindow#epath
+
+Fri Nov 26 14:29:39 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_initialize): uninitialized fd was checked to see open
+ mode. [ruby-dev:24963]
+
+ * io.c (rb_io_initialize): uninitialized fd was used. [ruby-dev:24962]
+
+Fri Nov 26 13:49:06 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_initialize): should retrieve flags from copying file
+ descriptor. [ruby-dev:24961]
+
+ * eval.c (method_missing): raise TypeError for classes do not
+ have allocators. [ruby-core:03752]
+
+ * lib/erb.rb: add RDoc by James Edward Gray II. [ruby-core:03786]
+
+Fri Nov 26 13:29:02 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::look_for_directives_in): Break
+ out of preprocessing when we find a :section: directive (previously cleared out the
+ comment, but this apparently now generates an error in gsub!)
+
+Fri Nov 26 00:17:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_read): move StringValue() check before GetOpenFile().
+ [ruby-dev:24959]
+
+Thu Nov 25 20:14:57 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/thwait.rb (ThreadsWait#join_nowait): abnormally terminated
+ threads should be also processed. [ruby-talk:121320]
+
+Thu Nov 25 18:06:37 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: AC_CHECK_SIZEOF(rlim_t) to include stdio.h to fix
+ problem with autoconf 2.52 or earlier.
+ revert AC_PREREQ to 2.50.
+ [ruby-core:3809]
+
+Thu Nov 25 07:59:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: AC_PREREQ(2.53) [ruby-core:03800]
+
+ * io.c (read_all): stringify non-nil buffer argument, and always
+ taint the result. [ruby-dev:24955]
+
+Wed Nov 24 01:01:31 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_read): integer conversion should be prior to
+ GetOpenFile(). [ruby-dev:24952]
+
+ * configure.in, io.c: cancel [ ruby-Patches-1074 ].
+
+Tue Nov 23 08:09:50 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/menu.rb: improve usability of TkOptionMenubutton
+
+Tue Nov 23 02:00:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_chown): integer conversion should be prior to
+ GetOpenFile(). [ruby-dev:24949]
+
+Tue Nov 23 00:10:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_chown): integer conversion should be prior to
+ GetOpenFile(). [ruby-dev:24947]
+
+ * file.c (rb_file_truncate): ditto.
+
+ * file.c (rb_file_s_truncate): ditto.
+
+ * dir.c (dir_seek): use NUM2OFFT().
+
+ * misc/ruby-mode.el (ruby-non-block-do-re): [ruby-core:03719]
+
+Mon Nov 22 22:33:02 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::parse_require): Don't use names
+ of variables or constants when parsing 'require'
+
+Mon Nov 22 00:13:35 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_seek): should retrieve dir_data after NUM2INT().
+ [ruby-dev:24941]
+
+Sat Nov 20 23:57:33 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/README (et al): Add a new directive, :section:, and
+ change the output format to accommodate. :section: allows to to
+ group together methods, attributes, constants, etc under
+ headings in the output. If used, a table of contents is
+ generated.
+
+Sat Nov 20 23:56:54 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/options.rb (Options::parse): Force --inline-source if
+ --one-file option given
+
+Sat Nov 20 23:55:19 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_splice): should place index wrapping after
+ possible modification. [ruby-dev:24940]
+
+Sat Nov 20 23:25:12 2004 Minero Aoki <aamine@loveruby.net>
+
+ * io.c (rb_io_getline): f.gets("") did not work. [ruby-core:03771]
+
+ * test/ruby/test_io.rb (test_gets_rs): test it.
+
+Sat Nov 20 22:55:09 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/runner.rb (CROSS_COMPILING): need to require rbconfig.rb before
+ using CROSS_COMPILNG.
+
+Sat Nov 20 20:42:42 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/depend: fix ripper.o dependency.
+
+Sat Nov 20 17:48:29 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (io_reopen): work around problem with Cygwin fseeko
+ returning ESPIPE.
+
+Sat Nov 20 05:34:24 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: original nkf.c rev:1.40
+
+ * ext/nkf/test.rb: add test for mime encode/decode
+
+Sat Nov 20 01:45:04 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/xmlrpc/test_webrick_server.rb: move `requrie "webrick/https"'
+ into #setup_http_server method to avoid soap test errors.
+
+Sat Nov 20 01:37:34 2004 Johan Holmberg <holmberg@iar.se>
+
+ * eval.c (error_print): nicer traceback at interrupt.
+ [ruby-core:03774]
+
+Sat Nov 20 00:07:16 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): internal buffer should not be listed by
+ ObjectSpace.each_object() by String#gsub. [ruby-dev:24931]
+
+Fri Nov 19 22:44:43 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb: better support for -p/-x option.
+
+Fri Nov 19 17:46:56 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/0.9.rb (RSS::Maker::RSS09::Image#have_required_values):
+ changed /rss/channel/image to be optional. [ruby-Bugs:1047]
+
+ * test/rss/test_maker_0.9.rb: added tests for the above.
+
+Fri Nov 19 17:18:17 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.0 -> 0.1.1.
+
+ * lib/rss: #to_s used #tag.
+
+ * test/rss/test_to_s.rb: added.
+
+ * lib/rss/maker.rb (RSS::Maker.make): changed API. It's not
+ received modules which is used as the second argument.
+
+ * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#alternate):
+ changed return value type which is not String but Boolean.
+
+ * lib/rss/2.0.rb (RSS::Rss::Channel#ttl): changed return value
+ type which is not String but Integer.
+
+ * lib/rss/0.9.rb (RSS::Rss::Channel): <skipDays> has <day>s and
+ <skipHours> has <hour>s.
+
+ * lib/rss/maker/0.9.rb (RSS::Maker::RSS09::Channel): ditto.
+
+ * lib/rss/0.9.rb (RSS::Rss::Channel::Item): <item> has <category>s.
+
+ * lib/rss/maker/2.0.rb (RSS::Maker::Rss20::Channel::Item): ditto.
+
+ * lib/rss/2.0.rb (RSS::Rss::Channel): <channel> has <category>s.
+
+ * lib/rss/maker/2.0.rb (RSS::Maker::RSS20::Channel): ditto.
+
+ * lib/rss/trackback.rb: parent element has <trackback:about>s.
+
+ * lib/rss/maker/trackback.rb: ditto.
+
+Fri Nov 19 11:10:16 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb: add support for directory name
+ with -p/-x options.
+
+ * test/testunit/collector/test_dir.rb: ditto.
+
+ * lib/xmlrpc/datetime.rb (XMLRPC::DateTime#==): should use Array()
+ instead of to_a.
+
+Fri Nov 19 10:32:36 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_s_set_completion_append_character):
+ accept nil. [ruby-core:03765]
+
+Fri Nov 19 01:20:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::FileStore::initialize): raise
+ exception if data corresponding to session specified from the
+ client does not exist.
+
+Fri Nov 19 00:59:31 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): internal buffer should not be listed by
+ ObjectSpace.each_object(). [ruby-dev:24919]
+
+Thu Nov 18 23:42:36 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/depend: Never regenerate lib/ripper/core.rb
+ automatically. [ruby-dev:24911]
+
+Thu Nov 18 20:47:24 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch] (rb_w32_isatty): new function to replace MSVCRT's
+ isatty because it never sets errno.
+
+Thu Nov 18 18:41:08 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_stringchar.rb (test_bang): added.
+
+ * string.c (rb_str_upcase_bang, rb_str_capitalize_bang)
+ (rb_str_swapcase_bang): missing rb_str_modify().
+
+Thu Nov 18 17:05:01 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_rest_arg): store rest args into invisible local variable
+ in order to get rid of SEGV at ZSUPER. [ruby-dev:24913]
+
+Thu Nov 18 15:39:52 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_f_getenv): prohibit for $SAFE=4. [ruby-dev:24908]
+
+Thu Nov 18 14:58:42 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c: check $SAFE.
+
+ * test/readline/test_readline.rb: added tests for readline.
+
+Thu Nov 18 00:21:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_getpgrp): prohibit for $SAFE=2.
+ [ruby-dev:24899]
+
+ * process.c (get_pid): ditto. [ruby-dev:24904]
+
+ * process.c (get_ppid): ditto.
+
+ * array.c (rb_ary_delete): defer rb_ary_modify() until actual
+ modification. [ruby-dev:24901]
+
+Thu Nov 18 10:10:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c, rubyio.h (rb_io_modenum_flags): exported.
+
+ * ext/stringio/stringio.c (strio_initialize): allow Fixnum as mode as
+ well as IO.new does. [ruby-dev:24896]
+
+Wed Nov 17 23:47:30 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb: added. [ruby-dev:24884]
+
+Wed Nov 17 18:59:16 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * process.c (proc_getrlimit, proc_setrlimit): add rb_secure(2) to
+ methods of Process.{getrlimit,setrlimit}
+
+Wed Nov 17 13:56:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (newline_node): should not use FL_SET. [ruby-dev:24874]
+
+ * parse.y (string_content): should not use FL_UNSET.
+
+ * node.h (NODE_NEWLINE): remove unused bit to utilize flag field
+ in nodes.
+
+Wed Nov 17 13:05:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (rb_push_glob): fix overrun. [ruby-dev:24886]
+
+Wed Nov 17 11:48:17 2004 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/parser.rb, test/xmlrpc/test_features.rb: fixed "assigning
+ to constants" warnings
+
+Wed Nov 17 09:38:18 2004 Johan Holmberg <holmberg@iar.se>
+
+ * re.c (rb_reg_initialize_m): should raise exception instead of
+ compile error. [ruby-core:03755]
+
+Wed Nov 17 03:42:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_splice): move rb_str_modify() after
+ StringValue(), which may alter the receiver. [ruby-dev:24878]
+
+ * error.c (rb_error_frozen): now raise RuntimeError instead of
+ TypeError.
+
+Tue Nov 16 21:22:47 2004 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb (CGIServer): fixed bug when client sends
+ "Content-typ: text/xml; ..."
+
+Tue Nov 16 23:45:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_divmod): protect float values from GC by
+ assignment to local variables. [ruby-dev:24873]
+
+Tue Nov 16 14:31:54 2004 Michael Neumann <mneumann@ruby-lang.org>
+
+ * test/xmlrpc/*: imported and refactored original test cases.
+
+ * test/xmlrpc/test_webrick_server.rb, test/xmlrpc/webrick_testing.rb:
+ added test case that starts up a WEBrick XML-RPC server and performs
+ some tests on it (both http and https servers are started).
+
+ * lib/xmlrpc/create.rb (XMLWriter::each_installed_writer),
+ lib/xmlrpc/parser.rb (XMLParser::each_installed_parser):
+ added methods to simply original test cases
+
+ * lib/xmlrpc/parser.rb, lib/xmlrpc/datetime.rb: applied patch by
+ MoonWolf <moonwolf@moonwolf.com> to allow parsing datetime.iso8601
+ (e.g. 20041105T01:15:23Z).
+
+ * lib/xmlrpc/server.rb: fixed issue #998
+ (http://rubyforge.org/tracker/?func=detail&atid=1700&aid=998&group_id=426)
+
+ * lib/xmlrpc/create.rb, lib/xmlrpc/utils.rb: when marshalling/loading
+ user-defined data structures, use Class#allocate instead of defining
+ an empty #initialize method. module XMLRPC::Marshallable is now only
+ used for tagging.
+
+ * lib/xmlrpc/.document, lib/xmlrpc/README.rdoc: added howto
+
+Tue Nov 16 16:26:12 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32,wince}/setup.mak (-epilogue-): remove config.h and
+ config.status to force updating them.
+
+Tue Nov 16 16:20:45 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): position was ignored when a
+ buffer was passed. http://www.yo.rim.or.jp/~nov/d/?date=20041116#p03
+
+Tue Nov 16 13:35:54 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::options): add
+ new option --exclude (-x) to skip some tests. [ruby-core:3363],
+ [ruby-dev:24865]
+
+ * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir.exclude):
+ ditto.
+
+Tue Nov 16 11:19:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::options): use
+ Regexp conversion.
+
+Tue Nov 16 01:41:31 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_mod_check): frozen check should be separated.
+ [ruby-core:3742]
+
+ * array.c (rb_ary_update): pedantic check to detect
+ rb_ary_to_ary() to modify the receiver. [ruby-dev:24861]
+
+Mon Nov 15 18:58:05 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: check rlim_t more portably. [ruby-core:3735]
+
+Mon Nov 15 11:50:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-special-char-p, ruby-parse-partial): handle
+ operator symbols. [ruby-talk:120177]
+
+Mon Nov 15 08:58:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): make proc as an alias to Proc.new.
+ [ruby-dev:24848]
+
+Mon Nov 15 00:46:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): lambda{}.call(1) should raise exception.
+ [ruby-talk:120253]
+
+Mon Nov 15 00:33:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_clear): avoid revealing NULL pointer.
+ [ruby-dev:24766]
+
+ * string.c (str_gsub): add paranoid check. [ruby-dev:24827]
+
+ * string.c (str_mod_check): check frozen status as well.
+ [ruby-dev:24801]
+
+Sun Nov 14 18:59:03 2004 Tanaka Akira <akr@m17n.org>
+
+ * process.c (proc_getrlimit): new function for Process.getrlimit.
+ (proc_setrlimit): new function for Process.setrlimit.
+ [ruby-dev:24834]
+
+ * configure.in: check rlim_t and its size. check setrlimit.
+
+ * ruby.h (NUM2ULL): new macro.
+
+Sun Nov 14 13:27:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pp.rb (PP#object_address_group): remove odd number of 'f'
+ prefixed to negative address.
+
+Sun Nov 14 10:48:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Integer::gcd2): faster implementation by
+ <erlercw@siu.edu>. [ruby-talk:120232]
+
+Sun Nov 14 08:46:33 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/logger/test_logger.rb: Logger just expects
+ Logger#datetime_format to be used for Time#strftime independently of
+ locale. [ruby-dev:24828]
+
+Fri Nov 12 17:32:07 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/README.bcc32, win32/README.win32: need bison instead of
+ byacc.
+
+Fri Nov 12 15:15:06 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (ruby_options): now we cannot call rb_glob() before
+ ruby_init(), so call rb_w32_cmdvector() at ruby_options().
+
+ * win32/win32.{c,h} (rb_w32_cmdvector): rename make_cmdvector() and
+ export it.
+
+Fri Nov 12 14:08:01 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/event.rb: remove $LOADED_FEATURES trick
+
+ * ext/tk/lib/tk.rb: ditto
+
+Fri Nov 12 00:31:05 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_store): StringValue() may alter string
+ pointer. [ruby-dev:24783]
+
+Thu Nov 11 17:58:19 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (rb_glob): should have called rb_glob_caller().
+ [ruby-dev:24773]
+
+Thu Nov 11 16:56:10 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file.rb (test_truncate_wbuf): we want to test
+ only File#truncate, not behavior of seek(2).
+
+Thu Nov 11 01:52:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (syserr_initialize): use stringified object.
+ [ruby-dev:24768]
+
+Wed Nov 10 22:49:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (SimpleDelegator::dup): wrong number of
+ arguments.
+
+ * lib/delegate.rb (DelegateClass::dup): ditto.
+
+Wed Nov 10 19:47:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): path is a string object now.
+
+Wed Nov 10 12:31:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT (Example): extconf.rb is indispensable now.
+
+Wed Nov 10 03:33:36 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix SEGV when compiled with Tcl/Tk8.3.x
+ or older
+
+ * ext/tk/lib/tkextlib/tile/style.rb: bug fix
+
+Tue Nov 9 22:24:07 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf: original nkf.c rev:1.38
+
+ * ext/nkf/nkf.c: fix bug: can't parse long-name options
+
+ * ext/nkf/test.rb: fix bug: mime tests fail
+
+Tue Nov 9 14:27:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Officious): moved from DefaultList.
+
+Tue Nov 9 00:50:06 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb: Change version numbering of RDoc and ri
+
+Tue Nov 9 01:05:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (rb_glob2): do not allocate buffer from heap to avoid
+ memory leaks. use string object for buffering instead.
+ [ruby-dev:24738]
+
+ * dir.c (join_path): ditto.
+
+ * io.c (io_read): external input buffer may be modified even after
+ rb_str_locktmp(). [ruby-dev:24735]
+
+ * dir.c (fnmatch): p or s may be NULL. [ruby-dev:24749]
+
+Tue Nov 9 00:36:26 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/extservm.rb: add DRb::ExtServManager#uri=.
+ [ruby-dev:24743]
+
+Mon Nov 8 22:20:19 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_class):
+ Fix bug where parent class wasn't being detected if the
+ child class was defined using the A::B notation.
+
+Mon Nov 8 00:14:13 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: add setup for mingw32 cross compiling.
+ [ruby-talk:119413]
+
+Sun Nov 7 23:49:26 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bind-event methods accept multi substitution
+ arguments.
+
+ * ext/tk/lib/tk/canvas.rb: ditto.
+
+ * ext/tk/lib/tk/canvastag.rb: ditto.
+
+ * ext/tk/lib/tk/text.rb: ditto.
+
+ * ext/tk/lib/tk/texttag.rb: ditto.
+
+ * ext/tk/lib/tkextlib: ditto.
+
+Sat Nov 6 20:40:16 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: rename WIN32OLE#ole_obj_help to
+ WIN32OLE#ole_type. alias ole_obj_help to ole_type.
+
+ * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+
+Sat Nov 6 11:18:59 2004 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (_parse): checks whether zone was given.
+
+Sat Nov 6 00:46:27 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_locktmp): check STR_TMPLOCK flag before
+ locking. [ruby-dev:24727]
+
+Fri Nov 5 19:07:16 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf: follow CVS Head of original nkf.
+
+Fri Nov 5 18:12:42 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/scrollable.rb: divide Scrollable module into
+ X_Scrollable and Y_Scrollable
+
+ * ext/tk/lib/tk/entry.rb: include X_Scrollable instead of Scrollable
+
+ * ext/tk/lib/tk/autoload.rb: define autoload for X_Scrollable and
+ Y_Scrollable
+
+Fri Nov 5 16:05:32 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: TkComm._at() supprts both of "@x,y" and "@x"
+
+Fri Nov 5 13:22:58 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/text.rb: sorry. bug fix again.
+
+Fri Nov 5 13:17:54 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/text.rb: bug fix
+
+Fri Nov 5 08:52:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark): stricter GC stack check.
+
+Fri Nov 5 08:34:43 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): should have removed rb_str_unlocktmp(str).
+ [ruby-dev:24708]
+
+ * ext/socket/socket.c (s_recvfrom): buffer modification check.
+ [ruby-dev:24708]
+
+Thu Nov 4 23:54:21 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regexec.c, regparse.c, regint.h: fixed conflicts between
+ vendor branch.
+
+Thu Nov 4 23:41:55 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * ascii.c, euc_jp.c, oniggnu.h, oniguruma.h, regcomp.c,
+ regenc.c, regenc.h, regerror.c, regexec.c, reggnu.c,
+ regint.h, regparse.c, regparse.h, sjis.c, utf8.c:
+ imported Oni Guruma 3.4.0.
+
+ * parse.y, re.c: Now mbclen() takes unsigned char as
+ its argument.
+
+Thu Nov 4 21:25:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): string modify check no longer based on
+ tmplock. [ruby-dev:24706]
+
+Thu Nov 4 21:13:48 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(typelib_file_from_typelib): search "win16"
+ entry to get library path.
+
+ * ext/win32ole/win32ole.c(oletypelib_path): ditto.
+
+ * ext/win32ole/win32ole.c(ole_typedesc2val): add VT_LPWSTR, VT_LPSTR,
+ VT_ERROR case.
+
+Thu Nov 4 15:02:14 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: forget to initialize instance_variables
+ of TkVarAccess objects
+
+Thu Nov 4 09:11:35 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark): enable GC stack checking.
+
+Thu Nov 4 03:11:33 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): lock strings temporarily. [ruby-dev:24687]
+
+ * ext/socket/socket.c (s_recvfrom): tmplock input buffer.
+ [ruby-dev:24705]
+
+Wed Nov 3 22:24:17 2004 Daigo Moriwaki <techml@sgtpepper.net>
+
+ * lib/webrick/httpauth/digestauth.rb: use Base64.encode64 to
+ avoid warnings.
+
+Wed Nov 3 17:19:59 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_uniq_bang): do not push frozen string from hash
+ table. [ruby-dev:24695]
+
+ * array.c (rb_ary_and): ditto.
+
+ * array.c (rb_ary_or): ditto.
+
+Wed Nov 3 17:02:48 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: support to use different Tcl commands between
+ configure and configinfo
+
+ * ext/tk/lib/font.rb: ditto.
+
+ * ext/tk/lib/itemconfig.rb: support to use different Tcl commands
+ between item_configure and item_configinfo
+
+ * ext/tk/lib/itemfont.rb: ditto.
+
+ * ext/tk/extconf.rb: install SUPPORT_STATUS
+
+ * ext/tk/lib/tkextlib: some bug fixes (see ext/tk/ChangeLog.tkextlib)
+
+Wed Nov 3 15:38:28 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/*.rb: removed tab width configuration headers.
+
+ * test/rss/test_maker_{0.9,1.0}.rb: sort -> do_sort.
+
+ * lib/rss/maker/*.rb: changed API to RSS version independence.
+
+ * lib/rss/maker/base.rb
+ (RSS::Maker::XMLStyleSheets::XMLStyleSheet): checked required
+ (pseudo) attributes.
+
+ * lib/rss/maker/base.rb (RSS::Maker::Items): sort -> do_sort.
+
+ * lib/rss/rss.rb (RSS::BaseModel.install_date_element): avoided
+ warning.
+
+ * lib/rss/0.9.rb (RSS::Rss#textinput): added convenience method.
+
+Tue Nov 2 16:35:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/enumerator/enumerator.c (each_cons_i): pass copy of an
+ internal consequent array. [ruby-talk:118691]
+
+Tue Nov 2 14:54:02 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): need to set cmd if argc == 0 (win32).
+
+Tue Nov 2 01:20:09 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (pipe_open): IO.popen should take array as 1st argument for
+ a command line. [ruby-dev:24678]
+
+ * eval.c (proc_invoke): nail down dyna_var node when Proc object
+ or continuation is created. [ruby-dev:24671]
+
+ * io.c (rb_io_s_popen): do not expand argv array. [ruby-dev:24670]
+
+Mon Nov 1 22:25:56 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb: changed xml-stylesheet's API of RSS Maker
+ like to item's one.
+
+ * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#guess_type): fixed
+ regular expression bug.
+
+ * test/rss/test_maker_xml-stylesheet.rb: updated tests for
+ xml-stylesheet.
+
+Mon Nov 1 13:59:28 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (MANIFEST): do not use anymore, use extconf.rb instead.
+
+ * ext/enumerator/extconf.rb, ext/fcntl/extconf.rb,
+ ext/stringio/extconf.rb: added.
+
+ * MANIFEST, ext/**/MANIFEST: removed.
+
+ * README.EXT, README.EXT.ja: remove MANIFEST stuff.
+
+Mon Nov 1 11:52:18 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): avoid conflict of variable name. [ruby-dev:24662]
+
+Mon Nov 1 11:46:19 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * process.c (rb_f_exec): should check whether prog is NULL.
+
+Mon Nov 1 09:37:19 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker.rb: added entry point of RSS Maker.
+
+Mon Nov 1 03:14:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_get_method_body): store ICLASS in the cache.
+ [ruby-core:03672]
+
+ * eval.c (rb_provided): should return true for loading library
+ too for autoloading. [ruby-core:03655]
+
+Mon Nov 1 01:14:52 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_open): create copy of popen specifier. [ruby-dev:24656]
+
+ * string.c (rb_str_locktmp): lock string temporarily.
+
+ * string.c (str_independent): add tmplock check.
+
+ * io.c (io_write): lock output string temporarily.
+ [ruby-dev:24649]
+
+ * io.c (io_write): use rb_str_locktmp().
+
+ * io.c (read_all): ditto.
+
+Sun Oct 31 23:37:00 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c: on NetBSD don't use setruid() and setrgid().
+
+Sun Oct 31 23:12:10 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/*.rb: added RSS Maker.
+
+ * test/rss/test_maker_*.rb: added tests for RSS Maker.
+
+Sun Oct 31 16:58:12 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE.codepage, WIN32OLE.codepage=.
+
+ * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+
+Sun Oct 31 14:35:26 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: add "\075?UTF-8?Q?" for Gmail.
+
+Sun Oct 31 14:18:56 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: emit lexer-event values to the parser
+ (still incomplete).
+
+Sat Oct 30 15:24:41 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_TYPELIB class. add
+ WIN32OLE#ole_typelib method.
+
+ * ext/win32ole/tests/testOLETYPELIB.rb: add WIN32OLE_TYPELIB class.
+
+Sat Oct 30 06:53:24 2004 Peter Vanbroekhoven <peter.vanbroekhoven@cs.kuleuven.ac.be>
+
+ * eval.c (rb_eval): NODE_XSTR should pass copy of literal string.
+
+Sat Oct 30 00:19:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_update): a[n,m]=nil no longer works as element
+ deletion.
+
+ * enum.c (enum_sort_by): protect continuation jump in.
+ [ruby-dev:24642]
+
+ * eval.c (rb_eval), gc.c (gc_mark_children), node.h (NEW_ALIAS,
+ NEW_VALIAS), parse.y (fitem): allow dynamic symbols to
+ NODE_UNDEF and NODE_ALIAS.
+
+Fri Oct 29 21:27:51 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_check_initialized): new function to check uninitialized
+ object. [ruby-talk:118234]
+
+ * file.c (rb_file_path), io.c (rb_io_closed): check if initialized.
+
+Fri Oct 29 19:05:33 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf: follow nkf2.0.
+
+Fri Oct 29 17:18:22 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (ripper_s_allocate): add prototype for Microsoft compiler.
+
+ * range.c (range_step, range_each): need cast.
+
+Fri Oct 29 16:34:19 2004 Daiki Ueno <ueno@unixuser.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): Parse the rest of the
+ line after opening heredoc identifier. [ruby-dev:24635]
+
+Fri Oct 29 11:35:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_parser_append_print, rb_parser_while_loop): body node
+ can be empty. [ruby-dev:24628]
+
+Fri Oct 29 10:00:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): forget to free some memory chunks.
+ [ruby-core:03611]
+
+ * eval.c (ruby_cleanup): ruby_finalize_1 may cause exception,
+ should be wrapped by PUSH_TAG/POP_TAG(). [ruby-dev:24627]
+
+Thu Oct 28 08:42:02 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c (argf_forward): use ANSI style.
+ (argf_read): call argf_forward with argv argument.
+ [ruby-dev:24624]
+
+Wed Oct 27 09:17:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_gsub): use a string object for exception safeness.
+ [ruby-dev:24601]
+
+Wed Oct 27 07:38:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * node.h (NODE_TYPESHIFT): allow 4 more bits for line numbers.
+ [ruby-talk:117841]
+
+ * ruby.h (FL_ABLE): nodes are not subject for flag operations.
+
+ * io.c (ARGF_FORWARD): should have specified argv explicitly,
+ since we no longer have frame->argv saved. [ruby-dev:24602]
+
+Tue Oct 26 23:30:39 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::add_class_or_module):
+ Restore correct :nopdoc: behavior with nested classes and modules.
+
+Tue Oct 26 18:21:29 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (RESIZE_CAPA): check string attribute before modifying
+ capacity member of string structure. [ruby-dev:24594]
+
+Tue Oct 26 11:33:26 2004 David G. Andersen <dga@lcs.mit.edu>
+
+ * ext/zlib/zlib.c (gzreader_gets): use memchr() to to gain
+ performance. [ruby-talk:117701]
+
+Tue Oct 26 10:56:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): raise ArgumentError for extra
+ arguments, unless (digit)$ style used.
+
+Mon Oct 25 18:35:39 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (isUNCRoot): should check NUL after '.'.
+ [ruby-dev:24590]
+
+ * win32/win32.c (isUNCRoot): fixed buffer overrun.
+
+Mon Oct 25 08:03:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (get_backtrace): ignore illegal backtrace. [ruby-dev:24587]
+
+Sun Oct 24 00:40:50 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_load, search_required, rb_require_safe, rb_require): use
+ frozen shared string to avoid outside modification. [ruby-dev:24580]
+
+Sat Oct 23 23:40:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fptr_finalize): leave stdin/stdout/stderr open in
+ interpreter termination. [ruby-dev:24579]
+
+Sat Oct 23 22:18:32 2004 Guy Decoux <ts@moulon.inra.fr>
+
+ * eval.c (frame_free): Guy Decoux solved the leak problem.
+ Thanks. [ruby-core:03549]
+
+Sat Oct 23 00:20:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_append_input): clear klass for z->input
+ to avoid potential vulnerability.
+
+ * ext/zlib/zlib.c (zstream_run): always use zstream_append_input()
+ to avoid SEGV. [ruby-dev:24568]
+
+Fri Oct 22 12:02:28 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_alias): was warning for wrong condition.
+ [ruby-dev:24565]
+
+Fri Oct 22 10:36:37 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#meta_vars):
+ should check if path_info is not nil.
+
+Fri Oct 22 00:22:31 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_shift_buffer): should restore class
+ field of a buffer. [ruby-dev:24562]
+
+Fri Oct 22 00:20:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_include): should not treat char as negative value.
+ [ruby-dev:24558]
+
+Thu Oct 21 21:32:30 2004 IWATSUKI Hiroyuki <don@na.rim.or.jp>
+
+ * lib/pstore.rb (PStore#transaction): Use the empty content when a
+ file is not found. [ruby-dev:24561]
+
+Thu Oct 21 19:06:15 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#send_body_io):
+ ensure to close @body. (http://bugs.debian.org/277520)
+
+Thu Oct 21 13:11:31 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (pipe_open): variable name "fpw" is conflicted.
+
+Thu Oct 21 00:36:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_alias): should warn on method discarding.
+ [ruby-dev:24546]
+
+ * ext/zlib/zlib.c (zstream_expand_buffer_into): hide internal
+ string buffer by clearing klass. [ruby-dev:24548]
+
+ * parse.y (lex_getline): should not touch ruby_debug_lines if
+ RIPPER is defined. [ruby-dev:24547]
+
+Wed Oct 20 19:45:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): reentrant check. [ruby-dev:24432]
+
+Wed Oct 20 12:42:53 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline): rs modification check should not interfere
+ in the loop.
+
+Wed Oct 20 10:31:33 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (lex_getline): should update ruby_debug_lines.
+
+Wed Oct 20 04:17:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_delete_if): should check if deleting element
+ is a string. [ruby-dev:24490]
+
+ * ext/sdbm/init.c (fsdbm_delete_if): ditto.
+
+Wed Oct 20 01:37:18 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_times): Array#* should return an instance of
+ the class of right operand. [ruby-dev:24526]
+
+ * ext/zlib/zlib.c (zstream_detach_buffer): should not expose
+ class-less object to Ruby world. [ruby-dev:24530]
+
+ * eval.c (proc_dup): provide Proc#dup as well. [ruby-talk:116915]
+
+ * eval.c (ruby_exec): stack marking position may be higher than
+ expected. thanks to Guy Decoux. [ruby-core:03527]
+
+Wed Oct 20 00:25:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (search_required): required name must not be changed before
+ loading. [ruby-dev:24492]
+
+Tue Oct 19 23:59:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_require_safe): provide the feature after loaded.
+ [ruby-list:40085]
+
+Tue Oct 19 22:43:12 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_attr): If
+ we come across 'attr' in a context where it isn't
+ followed by a symbol, just issue a warning.
+
+Tue Oct 19 20:32:50 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole.c(ole_invoke): retrieve the result value when
+ retrying the IDispatch::invoke.
+
+Tue Oct 19 17:24:11 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): block string buffer modification during
+ rb_io_fread() by freezing it temporarily. [ruby-dev:24479]
+
+ * dir.c (rb_push_glob): block call at once the end of method.
+ [ruby-dev:24487]
+
+ * ext/enumerator/enumerator.c (enum_each_slice): remove
+ rb_gc_force_recycle() to prevent potential SEGV.
+ [ruby-dev:24499]
+
+ * ext/zlib/zlib.c (zstream_expand_buffer): hide internal string
+ buffer by clearing klass. [ruby-dev:24510]
+
+Tue Oct 19 08:47:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_upto): method result must be checked. [ruby-dev:24504]
+
+ * eval.c (error_print): ditto. [ruby-dev:24519]
+
+Mon Oct 18 23:37:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): check inheritance by the internal function.
+ [ruby-dev:24515]
+
+Mon Oct 18 11:29:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_flags_mode, rb_io_mode_flags): distinguish whether file
+ not existing is created. [ruby-dev:24505]
+
+Mon Oct 18 07:26:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_truncate): discard read buffer before truncation.
+ [ruby-dev:24197]
+
+Mon Oct 18 01:56:03 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#initialize):
+ initial value of accpet-* should be array.
+
+Mon Oct 18 00:42:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyaname): protocol string
+ might be altered. [ruby-dev:24503]
+
+ * string.c (rb_str_upto): check if return value from succ is a
+ string. [ruby-dev:24504]
+
+Sun Oct 17 23:03:48 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb: TkTimer#start and restart accept a block
+
+Sun Oct 17 12:53:46 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fole_func_methods): correct argument mismatch.
+ * ext/win32ole/win32ole.c (fole_get_methods): ditto.
+ * ext/win32ole/win32ole.c (fole_put_methods): ditto.
+ * ext/win32ole/tests/testWIN32OLE.rb: add test for WIN32OLE#ole_func_methods
+ WIN32OLE#ole_get_methods, WIN32OLE#ole_put_methods
+
+Sat Oct 16 14:45:28 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/0.9.rb (RSS::Rss#to_s): removed garbage.
+
+Sat Oct 16 13:42:49 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/: untabified.
+ * test/rss/: untabified.
+ * lib/rss/0.9.rb (RSS::Rss#to_s): inent -> indent.
+
+Sat Oct 16 13:34:56 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss: supported prety print.
+ * test/rss/test_1.0.rb: added test for calculating default indent size.
+
+Sat Oct 16 10:56:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): install-rb is needed for statically
+ linked extensions. [ruby-dev:24491]
+
+Fri Oct 15 18:07:08 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509store.c
+ (ossl_x509stctx_initialize): setup OpenSSL::X509::StoreContext with
+ ossl_x509stctx_* functions instead of X509_STORE_CTX_*.
+ (ossl_x509store_set_time): add OpenSSL::X509::Store#time=.
+ (ossl_x509stctx_set_time): add OpenSSL::X509::StoreContext#time=.
+
+ * test/openssl/ossl_x509store.rb: test certificate validity times.
+
+Fri Oct 15 18:04:35 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb: TkTimer.new(interval, loop){ ... } is
+ acceptable. Add TkTimer.start ( == new + start ).
+
+Fri Oct 15 12:43:09 2004 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (Init_stack): make prototype declaration consistent with
+ the definition in gc.c.
+
+Thu Oct 14 13:33:59 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: added link to Tutorial.
+
+Tue Oct 12 21:22:50 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb:
+ add WEBrick::Config::FileHandler[:AcceptableLanguages].
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#set_filename): search files
+ having suffix of language-name which Accept-Language header field
+ includes if :AcceptableLanguages options is present.
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#get_servlet): new method to
+ search servlet correspond to the suffix of filename.
+
+ * lib/webrick/httprequest.rb: add attributes access methods: accept,
+ accept_charset, accept_encoding, accept_language, content_length
+ and content_type.
+
+ * lib/webrick/httpresponse.rb: add attribute access methods:
+ content_length, content_length=, content_type and content_type=.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.mime_types):
+ use the second suffix to detect media type. (the first suffix
+ may be a language name.)
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_qvalues):
+ add method to parse Accept header field. it returns an Array of
+ values sorted by the qvalues.
+
+Tue Oct 12 15:05:32 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (MODE_BINMODE, MODE_BINARY): fixed reversed condition.
+
+Mon Oct 11 17:51:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_popen): get mode string via rb_io_flags_mode() to
+ avoid mode string modification. [ruby-dev:24454]
+
+ * io.c (rb_io_getline_fast): should take delim as unsigned char to
+ distinguish EOF and '\377'. [ruby-dev:24460]
+
+ * io.c (rb_io_getline): add check for RS modification.
+ [ruby-dev:24461]
+
+ * enum.c (enum_sort_by): use qsort() directly instead using
+ rb_iterate(). [ruby-dev:24462]
+
+ * enum.c (enum_each_with_index): remove rb_gc_force_recycle() to
+ prevent access to recycled object (via continuation for
+ example). [ruby-dev:24463]
+
+Mon Oct 11 13:48:20 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/*: untabify
+
+Sun Oct 10 12:32:08 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::parse_require): Allow 'require'
+ to be used as a variable name
+
+Sun Oct 10 02:49:14 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/filter.rb: require ripper/tokenizer.
+
+ * ext/ripper/lib/ripper/filter.rb (parse): argument is optional.
+
+Sun Oct 10 02:43:13 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: \n between two comments disappeared.
+
+Sat Oct 9 21:23:37 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/converter.rb: changed to try to use Iconv for default
+ conversion.
+
+ * lib/rss/rss.rb: 0.0.9 -> 0.1.0.
+
+Sat Oct 9 19:50:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline): should not treat char as negative value.
+ [ruby-dev:24460]
+
+Sat Oct 9 00:25:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_fread): rb_thread_wait_fd() was lost.
+ [ruby-dev:24457]
+
+Fri Oct 8 21:36:56 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_traverse): return value of Dir.entries is
+ reliable. (pass $SAFE=1)
+
+ * lib/fileutils.rb (remove_dir): return value of Dir.foreach is
+ reliable. (pass $SAFE=1)
+
+Fri Oct 8 09:49:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): pointer modification check before each
+ iteration. [ruby-dev:24445]
+
+Fri Oct 8 01:13:05 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/optiondb.rb: make it more secure
+
+Thu Oct 7 23:47:57 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/scrollbar.rb: When 'set' operation, a scrollbar
+ cannot propagate view port information from the source widget
+ (that calls 'set') to other assigned widgets.
+
+Thu Oct 7 17:36:25 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: When CHILDKILLED and so on, Tk.errorCode returns
+ a Fixnum for 2nd element (it's pid) of the return value.
+
+Thu Oct 7 12:55:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_read): should freeze buffer before thread context
+ switch. [ruby-dev:24442]
+
+ * pack.c (pack_unpack): string conversion should at the top of the
+ method. [ruby-dev:24439]
+
+ * io.c (io_read): buffer should be frozen only after the length
+ check. [ruby-dev:24440]
+
+Thu Oct 7 02:56:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c: use FMODE_APPEND.
+
+Thu Oct 7 01:05:33 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add Tk.errorInfo and Tk.errorCode
+
+Thu Oct 7 00:08:37 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_sysopen): preserve path in the buffer allocated by
+ ALLOCA_N() to prevent modification. [ruby-dev:24438]
+
+Wed Oct 6 09:21:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_mode_flags): preserve append mode flag.
+ [ruby-dev:24436]
+
+ * io.c (rb_io_modenum_mode): do not use external output buffer.
+
+ * string.c (rb_str_justify): differ pointer retrieval to prevent
+ padding string modification. [ruby-dev:24434]
+
+ * range.c (range_each_func): allow func to terminate loop by
+ returning RANGE_EACH_BREAK.
+
+ * range.c (member_i): use RANGE_EACH_BREAK. [ruby-talk:114959]
+
+Tue Oct 5 09:53:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_fopen): mode string copy at the lowest level.
+
+ * io.c (rb_io_flags_mode): requires output buffer no more. no
+ allocation needed.
+
+ * array.c (rb_ary_index): takes a block to compare items in an
+ array. [ruby-talk:113069] [Ruby2]
+
+ * array.c (rb_ary_rindex): ditto.
+
+Mon Oct 4 14:03:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_file_open_internal, rb_io_reopen): fname might be altered
+ while GC. [ruby-dev:24408]
+
+Mon Oct 4 12:53:45 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/optiondb.rb: support definition of command
+ resources on widgets
+
+ * ext/tk/lib/tk/image.rb: bug fix
+
+Sun Oct 3 21:16:05 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (TEXT_REGEXP): allow 8-bit characters for the german
+ version of Microsoft Exchange Server.
+
+ * lib/net/imap.rb (RTEXT_REGEXP): ditto.
+
+ * lib/net/imap.rb (CTEXT_REGEXP): ditto.
+
+Sat Oct 2 20:34:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (local_vars): moved to struct parser_params.
+ [ruby-dev:24391]
+
+ * parser.y (stmts): remove suspicious NODE_BEGIN. [ruby-dev:24390]
+
+ * node.h (NEW_DVAR): extra semicolon.
+
+Sat Oct 2 00:42:20 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_byte): retrieve pointer from string value for each
+ time. [ruby-dev:24404]
+
+ * marshal.c (r_bytes0): ditto.
+
+ * enum.c (sort_by_i): re-entrance check added. [ruby-dev:24399]
+
+ * io.c (io_read): should freeze all reading buffer.
+ [ruby-dev:24400]
+
+ * string.c (rb_str_sum): should use bignums when bits is greater
+ than or equals to sizeof(long)*CHAR_BITS. [ruby-dev:24395]
+
+ * eval.c (specific_eval): defer pointer retrieval to prevent
+ unsafe sourcefile string modification. [ruby-dev:24382]
+
+ * string.c (rb_str_sum): wrong cast caused wrong result.
+ [ruby-dev:24385]
+
+ * enum.c (enum_sort_by): hide temporary array from
+ ObjectSpace.each_object. [ruby-dev:24386]
+
+ * string.c (rb_str_sum): check was done with false pointer.
+ [ruby-dev:24383]
+
+ * string.c (rb_str_sum): string may be altered. [ruby-dev:24381]
+
+Fri Oct 1 11:40:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_eval): defer pointer retrieval to prevent unsafe
+ sourcefile string modification. [ruby-dev:24373]
+
+ * io.c (io_read): block string buffer modification during
+ rb_io_fread() by freezing it temporarily. [ruby-dev:24366]
+
+ * io.c (rb_io_s_popen): mode argument may be altered.
+ [ruby-dev:24375]
+
+ * file.c (rb_file_s_basename): ext argument may be altered.
+ [ruby-dev:24377]
+
+ * enum.c (enum_sort_by): use NODE instead of 2 element arrays.
+ [ruby-dev:24378]
+
+ * string.c (rb_str_chomp_bang): StringValue() may change the
+ receiver. [ruby-dev:24371]
+
+Fri Oct 1 11:25:20 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/grid.rb: revive TkGrid.grid
+
+ * ext/tk/lib/tk/pack.rb: revive TkPack.pack
+
+ * ext/tk/lib/tk/place.rb: revive TkPlace.place
+
+Thu Sep 30 00:50:44 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_init): bug fix
+
+ * ext/tk/tkutil.c (get_eval_string_core): accept a Regexp object
+
+ * ext/tk/lib/multi-tk.rb: fix bug on 'exit' operation
+
+ * ext/tk/lib/tk/text.rb: 'tksearch' accepts a Regexp object as a
+ matting pattern argument
+
+Wed Sep 29 10:58:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (sort_by_i): internally used object must not be changed
+ outside. [ruby-dev:24368]
+
+Mon Sep 27 21:25:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call0): invoke finalizers periodically.
+
+ * gc.c (gc_sweep): defer running finalizers. [ruby-dev:24354]
+
+ * gc.c (rb_gc_finalize_deferred): run deferred finalizers.
+
+Mon Sep 27 15:01:59 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: missing ';'.
+
+Mon Sep 27 13:46:45 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h, struct.c (rb_struct_s_members, rb_struct_members): public
+ accessors. [ruby-dev:24342]
+
+ * marshal.c (w_object, r_object0): use accessors.
+
+Mon Sep 27 09:14:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete): comparison may change the capacity.
+ [ruby-dev:24348]
+
+ * array.c (rb_ary_fill): fill should honor length argument.
+ [ruby-dev:24346]
+
+ * array.c (rb_ary_replace): should not use ptr from shared array.
+ [ruby-dev:24345]
+
+ * ext/socket/socket.c (s_accept): don't retry for EWOULDBLOCK.
+ [ruby-talk:113807]
+
+Sun Sep 26 08:05:10 2004 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: provides {Time,Date,DateTime}#to_{time,date,datetime}.
+
+ * sample/cal.rb: uses getoptlong instead of getopts.
+
+Sat Sep 25 18:39:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (flatten): element size might change during comparison.
+ [ruby-dev:24343]
+
+Sat Sep 25 01:52:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_s_members): wrong call of struct_members.
+ [ruby-dev:24333]
+
+Fri Sep 24 16:09:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): propagate DVAR_DONT_RECYCLE on termination
+ to avoid double call to rb_gc_force_recycle(). [ruby-dev:24311]
+
+Fri Sep 24 08:29:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_parser_append_print): should handle prelude.
+ [llama@u01.gate0]
+
+ * parse.y (rb_parser_while_loop): ditto.
+
+ * array.c (rb_ary_subseq): original object might be modified after
+ sharing data creation. [ruby-dev:24327]
+
+ * array.c (rb_ary_replace): ditto.
+
+ * array.c (ary_make_shared): freeze shared array. [ruby-dev:24325]
+
+ * struct.c (struct_members): always check struct size and size of
+ members list in the class. [ruby-dev:24320]
+
+Thu Sep 23 19:48:14 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/Makefile.dev: removed.
+
+ * ext/ripper/ripper.rb.in: moved to lib/ripper/core.rb.in.
+
+ * ext/ripper/lib/ripper/core.rb: new file.
+
+ * ext/ripper/lib/ripper/core.rb.in: new file.
+
+ * ext/ripper/tools/generate-ripper_rb.rb: change comment.
+
+ * test/ripper/*.rb: on__scan event removed.
+
+ * test/ripper/*.rb: event name is changed: on__XXX -> on_XXX.
+
+Thu Sep 23 09:29:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_sub_bang): check if string is not modified
+ during iteration. [ruby-dev:24315]
+
+ * hash.c (rb_hash_rehash): replace st_foreach() by its deep
+ checking counterpart. [ruby-dev:24310]
+
+Wed Sep 22 14:21:54 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: on__scan event removed.
+
+ * parse.y [ripper]: event name is changed: on__XXX -> on_XXX.
+
+ * ext/ripper/eventids2.c: ditto.
+
+ * ext/ripper/ripper.rb.in: ditto.
+
+ * ext/ripper/lib/ripper.rb: sync with ripper.rb.in.
+
+ * ext/ripper/lib/ripper/tokenizer: ditto.
+
+ * ext/ripper/lib/ripper/filter: new file.
+
+ * sample/ripper/colorize.rb: new file.
+
+ * sample/ripper/strip-comment.rb: new file.
+
+Wed Sep 22 13:50:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (hash_alloc): was using tbl pointer without
+ initialization.
+
+Wed Sep 22 13:38:12 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_rehash): add iteration check. [ruby-dev:24301]
+
+ * st.c (st_foreach): add deep check.
+
+ * hash.c (rb_hash_fetch): returns KeyError instead of IndexError.
+
+ * hash.c (env_fetch): ditto.
+
+Wed Sep 22 13:02:02 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_call_handler): workaround for Ctrl-C.
+
+Wed Sep 22 09:04:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: remove global variables ruby_eval_tree and
+ ruby_eval_tree_begin.
+
+ * array.c (rb_ary_collect_bang): element size might change during
+ comparison. [ruby-dev:24300]
+
+ * array.c (rb_ary_reject_bang): ditto. [ruby-dev:24300]
+
+ * array.c (rb_ary_eql): ditto. [ruby-dev:24300]
+
+Wed Sep 22 00:11:12 2004 Dave Thomas <dave@pragprog.com>
+
+ * process.c: Add documentation for fork()
+
+Tue Sep 21 18:29:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_uniq_bang): element size might change during
+ comparison. [ruby-dev:24298]
+
+Mon Sep 20 17:46:51 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/tokenizer.rb: fix typo.
+
+Mon Sep 20 17:38:43 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/test_scanner_events.rb: tokens must be reordered.
+
+ * ext/ripper/lib/ripper/tokenizer.rb: ditto.
+
+Mon Sep 20 16:58:16 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: do not delay dispatching.
+
+ * ext/ripper/lib/ripper/tokenizer.rb: sort tokens by right order.
+
+Mon Sep 20 15:17:47 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/tokenizer.rb: new file.
+
+Mon Sep 20 15:13:52 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/test_scanner_events.rb: test #lineno and #column.
+
+Mon Sep 20 14:50:17 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: delayed heredocument events should be
+ dispatched after EOF.
+
+Mon Sep 20 14:39:42 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: adjust lineno and columns for multi-line
+ strings.
+
+ * parse.y [ripper]: delay heredocument events until seeing
+ end-of-line.
+
+ * parse.y [ripper]: event on__heredoc_contentn ->
+ on__tstring_content.
+
+ * ext/ripper/eventids2.c: ditto.
+
+ * ext/ripper/lib/ripper.rb: sync with eventids2.c.
+
+ * test/ripper/test_scanner_events.rb: test it.
+
+ * ext/ripper/tools/generate-ripper_rb.rb: show basename of input.
+
+ * ext/ripper/Makefile.dev: support objdir build.
+
+Mon Sep 20 13:22:55 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: remove Ripper#pos.
+
+ * parse.y [ripper]: Ripper#column should return the column of the
+ current token.
+
+Mon Sep 20 12:02:41 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: unify old_lex_p and token_head.
+
+ * test/ripper/test_scanner_events.rb: now \r\n is saved correctly.
+
+ * parse.y: new macro lex_goto_eol() for next change.
+
+Mon Sep 20 11:01:55 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: adjust line number for heredoc. [ruby-dev:24272]
+
+Mon Sep 20 04:49:22 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/ripper.rb.in: new const Ripper::PARSER_EVENT_TABLE.
+
+ * ext/ripper/ripper.rb.in: new const Ripper::SCANNER_EVENT_TABLE.
+
+ * ext/ripper/lib/ripper.rb: sync with ripper.rb.in.
+
+Mon Sep 20 04:13:00 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/test_scanner_events.rb: test spaces before heredoc
+ mark.
+
+Mon Sep 20 03:46:54 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: spaces before heredoc marker was lost.
+ [ruby-dev:24272]
+
+ * keywords: rb_reserved_word() should be defined only in ruby
+ core. [ruby-dev:24272]
+
+ * lex.c: sync with keywords.
+
+ * ext/ripper/ripper.rb.in (parse): fix typo.
+
+ * ext/ripper/lib/ripper.rb: sync with ripper.rb.in.
+
+Mon Sep 20 03:37:59 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/zlib/zlib.c (gzfile_read_raw): call readpartial at first.
+ (Zlib::GzipReader#readpartial): new method.
+
+Mon Sep 20 00:24:19 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_sort_by): do not use qsort directly. use
+ rb_ary_sort_bang() instead. [ruby-dev:24291]
+
+ * enum.c (enum_sort_by): pedantic type check added.
+ [ruby-dev:24291]
+
+ * hash.c (rb_hash_foreach_iter): check iter_lev after each
+ iteration. [ruby-dev:24289]
+
+ * array.c (rb_ary_and): element size might change during
+ comparison. [ruby-dev:24290]
+
+ * array.c (rb_ary_or): ditto. [ruby-dev:24292]
+
+ * array.c (rb_ary_equal): wrong fix. [ruby-dev:24286]
+
+Sat Sep 18 15:02:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_equal): element size might change during
+ comparison. [ruby-dev:24254]
+
+ * array.c (rb_ary_diff): ditto. [ruby-dev:24274]
+
+ * array.c (rb_ary_select): ditto. [ruby-dev:24278]
+
+ * array.c (rb_ary_delete): ditto. [ruby-dev:24283]
+
+ * array.c (rb_ary_rindex): ditto. [ruby-dev:24275]
+
+ * array.c (rb_ary_initialize): element size might change during
+ initializing block. [ruby-dev:24284]
+
+Sat Sep 18 14:10:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_chdir): avoid memory leak and unnecessary chdir to
+ the original directory when exception has caused in changing
+ directory or within block. thanks to Johan Holmberg
+ <holmberg@iar.se> [ruby-core:03446]
+
+Fri Sep 17 20:29:33 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y: add prototypes for Microsoft compiler.
+
+ * ext/ripper/depend (parse.obj): lex.c exists at hdrdir.
+
+ * {bcc32,win32,wince}/Makefile.sub (YACC, YFLAGS, parse.c):
+ use bison.
+
+Fri Sep 17 17:11:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete): element comparison might change array
+ size. [ruby-dev:24273]
+
+ * parse.y: make ruby parser reentrant. merge ripper parser to the
+ real one. this change makes ruby require bison.
+
+ * file.c (rb_file_truncate): clear stdio buffer before truncating
+ the file. [ruby-dev:24191]
+
+ * ext/digest/digest.c: use rb_obj_class() instead of CLASS_OF
+ which might return singleton class. [ruby-dev:24202]
+
+Fri Sep 17 16:07:09 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: improve exit operation
+
+Fri Sep 17 15:01:57 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix SEGV when (thread_)vwait or
+ (thread_)tkwait
+
+ * ext/tk/lib/tk.rb: add alias wait_window to wait_destroy
+
+ * ext/tk/lib/multi-tk.rb: support calling 'mainloop' on slave
+ interpreters (however, the 'real' eventloop must be run on the
+ Default Master IP)
+
+ * ext/tk/lib/remote-tk.rb: follow the changes of ext/tk/lib/multi-tk.rb
+
+ * ext/tk/sample/remote-ip_sample2.rb: ditto
+
+ * ext/tk/sample/tkoptdb-safeTk.rb: ditto
+
+Thu Sep 16 18:12:13 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI#start): should set REMOTE_USER
+ to request.user attribute.
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#initialize): should expand
+ the pathname of document root directory.
+
+Thu Sep 16 15:49:28 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): protect string argument from GC.
+ [ruby-core:03411]
+
+Wed Sep 15 20:22:23 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkoptdb-safeTk.rb: fix a bug depend on the changes
+ of MultiTkIp
+
+Tue Sep 14 23:54:11 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string was en-bugged by
+ the previous changes.
+
+Tue Sep 14 23:45:44 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::TextFormatter.for):
+ Add Eric Hodel's simpleformatter.
+
+Tue Sep 14 22:11:08 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: Add rdoc.
+
+Tue Sep 14 20:24:49 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: space event is on__sp, not on__lwsp.
+ [ruby-dev:24257]
+
+ * ext/ripper/eventids2.c: ditto.
+
+ * ext/ripper/lib/ripper.rb: ditto.
+
+ * ext/ripper/depend (ripper.o): No action is needed.
+ [ruby-dev:24260]
+
+ * ext/ripper/depend: Borland make does not accept pipes in
+ Makefile rules. [ruby-dev:24589]
+
+ * ext/ripper/depend: separate rules for developpers.
+
+ * ext/ripper/Makefile.dev: new file.
+
+ * ext/ripper/MANIFEST: add Makefile.dev.
+
+ * ext/ripper/tools/generate-eventids1.rb: read from file, not
+ stdin.
+
+ * ext/ripper/extconf.rb: clean ripper.E.
+
+ * ext/ripper/tools/generate-ripper_rb.rb: #include ids1/ids2
+ function was lost.
+
+ * ext/ripper/tools/generate-ripper_rb.rb: SCANNER_EVENTS wrongly
+ contained parser events.
+
+ * ext/ripper/lib/ripper.rb: ditto.
+
+Tue Sep 14 16:59:37 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix SEGV
+
+ * ext/tk/lib/multi-tk.rb: improve safe-level handling of argument proc
+
+ * ext/tk/sample/multi-ip_sample.rb: rename of old 'safe-tk.rb'
+
+ * ext/tk/sample/safe-tk.rb: new sample script
+
+Mon Sep 13 21:33:40 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_to_s): add optional
+ second argument to specify the output format (see also
+ X509_NAME_print_ex).
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_init): new constants:
+ OpenSSL::X509::Name::COMPAT, OpenSSL::X509::Name::RFC2253,
+ OpenSSL::X509::ONELINE, OpenSSL::X509::MULTILINE.
+
+ * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name::RFC2253DN):
+ new module to provide the parse for RFC2253 DN format.
+
+ * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name.parse_rfc2253):
+ new method to parse RFC2253 DN format.
+
+Mon Sep 13 19:16:33 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (blk_copy_prev): need frame_dup(). [ruby-dev:24103]
+
+Mon Sep 13 16:23:27 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp.new_master and new_slave accept
+ safe-level value argument
+
+Mon Sep 13 10:48:37 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getpid): don't need to use _getpid() on
+ mswin32 and mingw32.
+
+Mon Sep 13 10:22:05 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * object.c (nil_inspect): fix typo.
+
+Mon Sep 13 09:29:58 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/depend: (nmake hack) prepend "./" to ripper.c to
+ avoid {$(srcdir)}.
+
+Mon Sep 13 06:43:42 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/tools/list-parse-event-ids.rb: does not use getopts.
+
+ * ext/ripper/tools/list-scan-event-ids.rb: ditto.
+
+Mon Sep 13 02:42:28 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/Setup: add ripper.
+
+ * ext/Setup.atheos: ditto.
+
+ * ext/Setup.dj: ditto.
+
+ * ext/Setup.emx: ditto.
+
+ * ext/Setup.nt: ditto.
+
+ * ext/Setup.x68: ditto.
+
+Mon Sep 13 02:26:31 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper: ripper extension added.
+
+ * ext/ripper/MANIFEST: new file.
+
+ * ext/ripper/README: new file.
+
+ * ext/ripper/depend: new file.
+
+ * ext/ripper/extconf.rb: new file.
+
+ * ext/ripper/eventids2.c: new file.
+
+ * ext/ripper/ripper.rb.in: new file.
+
+ * ext/ripper/lib/ripper.rb: new file.
+
+ * ext/ripper/test/check-event-arity.rb: new file.
+
+ * ext/ripper/test/check-event-coverage.sh: new file.
+
+ * ext/ripper/test/check-scanner-event-coverage.rb: new file.
+
+ * ext/ripper/test/list-called-events.rb: new file.
+
+ * ext/ripper/test/src_rb: new file.
+
+ * ext/ripper/test/validate.rb: new file.
+
+ * ext/ripper/tools/generate-eventids1.rb: new file.
+
+ * ext/ripper/tools/generate-param-macros.rb: new file.
+
+ * ext/ripper/tools/generate-ripper_rb.rb: new file.
+
+ * ext/ripper/tools/list-parse-event-ids.rb: new file.
+
+ * ext/ripper/tools/list-scan-event-ids.rb: new file.
+
+ * ext/ripper/tools/preproc.rb: new file.
+
+ * ext/ripper/tools/strip.rb: new file.
+
+ * test/ripper: ripper tests added.
+
+ * test/ripper/dummyparser.rb: new file.
+
+ * test/ripper/test_parser_events.rb: new file.
+
+ * test/ripper/test_scanner_events.rb: new file.
+
+Mon Sep 13 01:03:02 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: improve control of preserv/release tcltkip
+
+ * ext/tcltklib/tcltklib.c: store original 'exit' command
+
+ * ext/tk/tkutil.c: fix(?) SEGV
+
+Mon Sep 13 00:22:53 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: fix file header.
+
+Mon Sep 13 00:20:39 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: ripper merged.
+
+ * lex.c: ditto.
+
+ * keywords: ditto.
+
+Sun Sep 12 23:53:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.c (ruby_strdup): remove unnecessary code. (xmalloc never
+ returns NULL.)
+
+ * util.c (ruby_getcwd): fix memory leak on failure.
+
+Sun Sep 12 02:41:58 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: add TclTkIp#allow_ruby_exit? and
+ allow_ruby_exit=
+
+ * ext/tk/lib/multi-tk.rb: ditto.
+
+ * ext/tk/lib/remote-tk.rb: ditto.
+
+ * ext/tcltklib/MANUAL.euc: ditto.
+
+ * ext/tcltklib/MANUAL.eng: ditto.
+
+ * ext/tcltklib/tcltklib.c: fix some reasons of SEGV
+
+ * ext/tk/tkutil.c: ditto.
+
+ * ext/tk/lib/multi-tk.rb: ditto.
+
+ * ext/tk/lib/tk/timer.rb: ditto.
+
+Sat Sep 11 16:09:46 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb: Fix up cross-file class merging.
+
+Fri Sep 10 20:18:05 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_merge_tklist): fix suspicious
+ pointer conversion.
+
+Fri Sep 10 19:16:24 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: bccwin32 port starts to use RTL dll.
+ (need to rebuild all) [ruby-dev:24138]
+
+ * win32/win32.{h,c}: ditto.
+
+Fri Sep 10 15:55:59 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir_p): should pass mode argument to
+ Dir.mkdir. [ruby-dev:24242]
+
+ * test/fileutils/test_fileutils.rb: test it.
+
+Fri Sep 10 02:43:54 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/kilmer.rb: James Buck's
+ patch for call-seq.
+
+Thu Sep 9 13:58:56 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_init): change flag value for setting
+ 'argv' and 'argv0' variable
+
+ * ext/tk/lib/remote-tk.rb: follow changes of multi-tk.rb
+
+Thu Sep 9 11:46:18 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_classes): Allow
+ spaces aroun parameter to define_method_under (James Buck)
+
+Wed Sep 8 18:44:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_write): zero fill a gap if exsts.
+ [ruby-dev:24190]
+
+Wed Sep 8 15:19:49 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_init): cannot create a IP at level 4
+
+ * ext/tk/lib/multi-tk.rb: improve 'exit' operation, security check,
+ and error treatment
+
+ * ext/tk/lib/multi-tk.rb: allow a trusted slave IP to create slave IPs
+
+ * ext/tk/lib/tk/listbox.rb: add TkListbox#value, value=, clear, and
+ erase
+
+ * ext/tk/lib/tk/text.rb: add TkText#clear and erase
+
+Tue Sep 7 15:17:49 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): break immediately if a
+ socket is non-blocking. [ruby-talk:111654]
+
+Tue Sep 7 12:48:22 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32,wince}/Makefile.sub (config.h): add fcntl.
+
+ * win32/win32.[ch] (fcntl): ditto.
+
+ * win32/win32.c (rb_w32_connect): support nonblocking mode.
+
+ * ext/socket/socket.c (wait_connectable, ruby_connect): support
+ nonblocking connect on various platforms.
+
+Mon Sep 6 11:00:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_chdir): the patch to shut up false warning when
+ exception occurred within a block. a patch was given from Johan
+ Holmberg <holmberg at iar.se>. [ruby-core:03292]
+
+Mon Sep 6 10:57:40 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/lib/tk/menu.rb(TkOptionMenubutton#insert): call correct method
+
+Mon Sep 6 07:51:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (cvar_cbase): singletons should refer to outer cvar scope.
+ [ruby-dev:24223]
+
+ * eval.c (rb_load): should preserve previous ruby_wrapper value.
+ [ruby-dev:24226]
+
+Sat Sep 4 01:14:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (cvar_cbase): class variables cause SEGV in
+ instance_eval() for fixnums and symbols. [ruby-dev:24213]
+
+Fri Sep 3 17:47:58 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (make_struct): remove redefining constant when
+ conflict. [ruby-dev:24210]
+
+Fri Sep 3 11:31:44 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: Tk.after makes TkCore::INTERP.tk_cmd_tbl grow
+ [ruby-dev:24207]
+
+Fri Sep 3 02:12:48 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix typo [ruby-talk:111266]
+
+ * ext/tk/lib/tk/text.rb: fix typo
+
+ * ext/tk/lib/multi-tk.rb: improve safe-level treatment on slave IPs
+
+Fri Sep 3 01:54:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): extact target prefix from Makefiles.
+
+ * ext/extmk.rb: already built-in libraries satisfy dependencies.
+ [ruby-dev:24028]
+
+Wed Sep 1 21:16:50 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/lib/tk/spinbox.rb: fix typo
+
+Wed Sep 1 19:28:37 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_proc_exec): label cannot precede variable declarations.
+
+Tue Aug 31 18:20:49 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tkutil.c (cbsubst_init): fix memory leak
+
+ * ext/tk/tkutil.c (cbsubst_get_all_subst_keys): fix SEGV
+
+Tue Aug 31 16:04:22 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_delete): when a tcltkip is deleted,
+ destroy its root widget
+
+Tue Aug 31 12:30:36 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (del_root): fix SEGV
+
+Mon Aug 30 21:50:14 2004 Dave Thomas <dave@pragprog.com>
+
+ * object.c: Add RDoc for Module.included.
+
+Mon Aug 30 23:11:06 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_driver.rb (and others): ri now merges documentation
+ if it finds the same class in multiple places.
+
+Mon Aug 30 22:40:30 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: 'restart' method accepts arguments
+
+Mon Aug 30 15:10:46 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (GNU/k*BSD): fixed FTBFS on GNU/k*BSD. [ruby-dev:24051]
+
+Sun Aug 29 14:08:56 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: compile error on bcc32 [ruby-dev:24081]
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string does not work
+
+Sat Aug 28 23:04:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_and): protect parameters from GC.
+ [ruby-talk:110664]
+
+Fri Aug 27 12:13:50 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/stringio/stringio.c (Init_stringio): add StringIO#readpartial as
+ an alias for StringIO#sysread.
+
+Fri Aug 27 10:14:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_proc_exec): strip trailing spaces. [ruby-dev:24143]
+
+ * win32/win32.c (CreateChild): ditto.
+
+Thu Aug 26 04:38:29 2004 Dave Thomas <dave@pragprog.com>
+
+ * eval.c (return_jump): Minor typo in error message. Now reads
+ "return can't jump across threads".
+
+Wed Aug 25 15:18:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_longjmp): Exception#to_str is no longer defined.
+
+Wed Aug 25 11:39:10 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_equal): exceptions are equal if they share same
+ class, message and backtrace. [ruby-talk:110354]
+
+ * error.c (name_err_mesg_equal): ditto.
+
+Tue Aug 24 16:41:48 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::FileStore#initialize): do not
+ use a session id as a filename.
+
+ * lib/cgi/session/pstore.rb (CGI::Session::PStore#initialize): ditto.
+
+ * lib/cgi/session/pstore.rb (CGI::Session::PStore#initialize): use
+ Dir::tmpdir.
+
+Tue Aug 24 14:32:17 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::FileStore#initialize): untaint
+ session id after check.
+
+Tue Aug 24 08:57:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509attr.c (ossl_x509attr_initialize): d2i
+ functions may replace the pointer indicated by the first argument.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_initialize): ditto.
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): ditto.
+
+Mon Aug 23 12:43:32 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/resolv.rb (Config.default_config_hash): when multiple domains
+ are set, Win32::Resolv.get_resolv_info returns Array.
+
+Sun Aug 22 16:27:38 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read):
+ - should return an empty string if specified length to read is 0.
+ - should check for pending data and wait for fd before reading.
+ - call underlying IO's sysread if SSL session is not started.
+ [ruby-dev:24072], [ruby-dev:24075]
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_write):
+ - call underlying IO's syswrite if SSL session is not started.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_pending): new method
+ OpenSSL::SSL#pending.
+
+ * ext/openssl/lib/openssl/buffering.rb: should not use select.
+
+Sun Aug 22 01:10:36 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_connect):
+ should call :ProxyContentHandler before finishing CONNECT.
+
+Sat Aug 21 06:41:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tcltklib/extconf.rb (find_tcl, find_tk): find stub library.
+
+ * lib/mkmf.rb (arg_config, with_config): deal with '-' and '_'
+ uniformly. [ruby-dev:24118]
+
+Fri Aug 20 14:49:42 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_check_writable): no need to check read buffer if
+ already changed to write mode.
+
+Fri Aug 20 11:46:43 2004 UENO Katsuhiro <katsu@blue.sky.or.jp>
+
+ * ext/zlib/zlib.c: GzipReader#ungetc caused crc error.
+
+Thu Aug 19 16:29:45 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: Fail to treat a hash value of 'font' option.
+
+ * ext/tk/lib/tk.rb: bindinfo cannot return '%' substiturion information.
+
+ * ext/tk/lib/menu.rb: typo bug.
+
+Thu Aug 19 15:15:24 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (free_dir): fix memory leak. reported by yamamoto
+ madoka.
+
+Thu Aug 19 09:19:27 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (LIBS): need to link shell32
+ library for SH* functions on mswin32 and mingw32.
+
+ * wince/Makefile.sub (LIBS): need to link ceshell library for SH*
+ functions on mswince.
+
+Thu Aug 19 03:07:00 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/baseemitter.rb: folding now handles double-quoted strings,
+ fixed problem with extra line feeds at end of folding, whitespace
+ opening scalar blocks.
+
+ * lib/yaml/rubytypes.rb: subtelties in handling strings with
+ non-printable characters and odd whitespace patterns.
+
+Wed Aug 18 23:44:20 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb (rbuf_fill): OpenSSL::SSLSocket has its own
+ buffer, select(2) might not work. [ruby-dev:24072]
+
+Wed Aug 18 17:10:12 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tcltklib/stubs.c (ruby_tcltk_stubs): need to call
+ Tcl_FindExecutable() for Tcl/Tk 8.4.
+
+Wed Aug 18 12:52:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_obj_instance_eval): evaluates under special singleton
+ classes as for special constants.
+
+Wed Aug 18 11:22:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_env): initialize HOME and USER environment
+ variables unless set.
+
+Wed Aug 18 10:17:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (bind_eval): new method. [RCR 251]
+
+ * string.c (rb_str_clear): new method. [ruby-dev:24104]
+
+Tue Aug 17 17:20:59 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_reopen): should clear allocated OpenFile. pointed
+ out by Guy Decoux. [ruby-core:03288]
+
+Tue Aug 17 01:36:32 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/usage.rb: Remove extra indent. Tidy 'ri' option
+ parsing so RDoc::usage plays better with OptionParser.
+
+Sat Aug 14 02:48:16 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/usage.rb: Added. Allows command line programs
+ to report usage using their initial RDoc comment.
+
+Sat Aug 14 01:25:48 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/token.c: re2c no longer compiled with bit vectors. caused
+ problems for non-ascii characters. [ruby-core:03280]
+ * ext/syck/implicit.c: ditto.
+ * ext/syck/bytecode.c: ditto.
+
+Fri Aug 13 12:55:20 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_range_header):
+ fix regex for range-spec.
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::DefaultFileHandler#make_partial_content):
+ multipart/byteranges response was broken.
+
+ * lib/xmlrpc/server.rb: refine example code.
+
+Thu Aug 12 10:54:17 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * rubyio.h (rb_eof_error): should mark as NORETURN.
+
+ * win32/win32.c (make_cmdvector): adjust escaped successive
+ double-quote handling.
+
+Thu Aug 12 01:53:10 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c (read_buffered_data): extracted from rb_io_fread.
+ (io_readpartial): new method IO#readpartial.
+ [ruby-dev:24055]
+
+Wed Aug 11 17:17:50 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RPATHFLAG): stop setting RPATHFLAG on Interix.
+
+Mon Aug 9 15:03:20 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/erbhandler.rb
+ (WEBrick::HTTPServlet::ERBHandler#do_GET): should select media type
+ by suffix of script filename.
+
+Mon Aug 9 12:51:43 2004 Dave Thomas <dave@pragprog.com>
+
+ * dir.c (dir_s_glob): Roll in Austin Ziegler's Dir.glob and
+ fnmatch updates.
+
+Mon Aug 9 06:33:06 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (cp_r): copies symlink to symlink, except
+ root entries of cp_r.
+
+ * lib/fileutils.rb: new method FileUtils.copy_entry.
+
+ * test/fileutils/test_fileutils.rb: more cp_r tests.
+
+Sun Aug 8 00:43:31 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/implicit.c: added sexagecimal float#base60.
+
+ * ext/syck/rubyext.c (yaml_org_handler): ditto.
+
+ * lib/token.c: indentation absolutely ignored when processing flow
+ collections. plain scalars are trimmed if indentation follows in
+ an ambiguous flow collection.
+
+Sat Aug 7 03:08:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_daemon): new method. should be modified for
+ platforms without /dev/null.
+
+Sat Aug 7 00:50:01 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/zlib/zlib.c: Zlib::GzipReader#read(0) returns "" instead of nil.
+
+Wed Aug 4 13:26:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_bytes0): optimize out read(0). [ruby-talk:108276]
+
+Tue Aug 3 13:49:12 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/namespace.rb: bug fix
+
+ * ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: add Tk::TreeCtrl.loupe
+
+Mon Aug 2 23:33:48 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_file.rb (test_fnmatch): added more tests.
+
+Mon Aug 2 18:04:21 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/msgcat.rb (set_translation): bug fix (fail to set
+ trans_str to the same as src_str when trans_str is not given.)
+
+Mon Aug 2 17:40:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (blk_free): fixed serious memory leak. [ruby-dev:24013]
+
+Mon Aug 2 11:53:06 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::find_symbol): Fix infinite recursion
+ looking up some top level symbols (batsman)
+
+Mon Aug 2 11:48:29 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_methods): Allow '.'s in
+ variable names to support SWIG generated files (Hans Fugal)
+
+Sat Jul 31 23:08:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): stupid mistakes fixed. [ruby-dev:24006]
+
+Sat Jul 31 17:39:47 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg, ruby-parse-partial,
+ ruby-calculate-indent, ruby-move-to-block, ruby-forward-sexp,
+ ruby-backward-sexp): keywords must match word-wise.
+
+Sat Jul 31 13:37:51 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): avoid unnecessary method invocations.
+
+Sat Jul 31 05:35:37 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: exceptions were using an older
+ YAML.object_maker. [ruby-core:03080]
+
+ * ext/syck/token.c (sycklex_yaml_utf8): using newline_len to
+ handline CR-LFs. "\000" was showing up on folded blocks which
+ stopped at EOF.
+
+Sat Jul 31 01:25:11 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): call is_defined() before invoking
+ rb_eval(). [ruby-talk:107867]
+
+Fri Jul 30 16:10:54 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_fromUTF8_core): raise ArgumentError when
+ the unknown encoding name is given.
+
+ * ext/tcltklib/tcltklib.c (lib_toUTF8_core): ditto.
+
+ * ext/tk/lib/tk.rb (Tk::Encoding.encoding_convertfrom): bug fix.
+
+ * ext/tk/lib/tk.rb (Tk::Encoding.encoding_convertto): ditto.
+
+Wed Jul 28 18:59:17 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::initialize): remove at_exit code for CGI_PARAMS
+ and CGI_COOKIES. they will no longer be used.
+
+Wed Jul 28 15:44:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): should call rb_call_super() directly for
+ visibility overriding. [ruby-dev:23989]
+
+Wed Jul 28 01:04:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * env.h: remove argv from ruby_frame.
+
+ * eval.c (rb_eval): no more copy on write.
+
+ * eval.c (assign): ditto.
+
+ * eval.c (rb_call0): can receive *rest by specifying negative
+ argc. (-1 means 0 arg and *rest, -2 means 1 arg and *rest...)
+
+ * eval.c (rb_call0): properly set frame's argc counter.
+
+ * gc.c (rb_gc_mark_frame): need not to mark frame's argv
+
+ * gc.c (run_final): wrong order of data. [ruby-dev:23984]
+
+Tue Jul 27 07:05:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): copy on write for argument local variable
+ assignment.
+
+ * eval.c (assign): ditto.
+
+ * eval.c (rb_call0): update ruby_frame->argv with the default
+ value used for the optional arguments.
+
+ * object.c (Init_Object): "===" calls rb_obj_equal() directly.
+ [ruby-list:39937]
+
+Mon Jul 26 11:22:55 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.escape): should
+ escape space.
+
+Sun Jul 25 10:56:28 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.{h,c} (rb_w32_{f,fd,fs}open): workaround for bcc32's
+ {f,fd,fs}open bug. set errno EMFILE and EBADF. [ruby-dev:23963]
+
+ * test/drb/drbtest.rb: fix method duplication.
+
+Sat Jul 24 13:32:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (rb_range_beg_len): returns Qnil only when "beg" points
+ outside of a range. No boundary check for "end".
+
+Fri Jul 23 16:40:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (define_final): should not disclose NODE* to Ruby world.
+ [ruby-dev:23957]
+
+Fri Jul 23 08:52:22 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (disconnected?): new method.
+
+Thu Jul 22 16:41:54 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::FileStore#update): sets the
+ permission of the session data file to 0600.
+
+ * lib/cgi/session/pstore.rb (CGI::Session::Pstore#initialize):
+ ditto.
+
+Mon Jul 19 00:53:46 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb
+ (WEBrick::HTTPServlet::CGIhandler#do_GET): set SystemRoot environment
+ variable to CGI process on Windows native platforms. [ruby-dev:23936]
+
+Sun Jul 18 16:14:29 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/msgcat.rb (TkMsgCatalog.callback): bug fix
+ ( wrong number of argument )
+
+Sun Jul 18 08:13:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): remove extra sign digit.
+
+Sun Jul 18 03:19:14 2004 Akinori MUSHA <knu@iDaemons.org>
+
+ * dir.c (bracket): use NULL instead of 0.
+
+Sun Jul 18 02:35:30 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (receive_responses): return if a LOGOUT response
+ received.
+
+Sat Jul 17 23:59:01 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (send_string_data): wait command continuation
+ requests before sending octet data of literals.
+
+Sat Jul 17 23:54:59 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: TkVariable#ref returns a TkVariable object
+
+Sat Jul 17 22:04:44 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/ldap.rb: method hierarchical? should be in URI::LDAP.
+
+Sat Jul 17 18:29:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): not to show same error messages twice.
+
+Sat Jul 17 14:18:11 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_match_m): String#match should also take
+ optional argument. [ruby-core:03205]
+
+ * re.c (rb_reg_match_m): add optional second argugment "pos" to
+ specify match start point. [ruby-core:03203]
+
+Sat Jul 17 13:13:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex::identify_string): %s string do not
+ process expression interpolation. [ruby-talk:106691]
+
+Sat Jul 17 05:26:27 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/diagram.rb: Incorporate Micheal Neumann's
+ client-side imagemao patch
+
+Sat Jul 17 01:57:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (THREAD_ALLOC): th->thread should be initialized to NULL.
+ [ruby-talk:106657] The solution was found by Guy Decoux.
+
+Fri Jul 16 22:30:28 2004 Michael Neumann <mneumann@ntecs.de>
+
+ * file.c (rb_stat_dev_major): new methods File::Stat#dev_major and
+ #dev_minor. [ruby-core:03195]
+
+Fri Jul 16 11:17:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exit_initialize): use EXIT_SUCCESS instead of 0.
+ [ruby-dev:23913]
+
+ * error.c (exit_success_p): new method SystemExit#success?.
+ [ruby-dev:23912]
+
+ * error.c (syserr_initialize): initialization for subclasses.
+ [ruby-dev:23912]
+
+Thu Jul 15 23:53:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#warn, OptionParser#abort): Exception
+ no longer has to_str method.
+
+Thu Jul 15 22:59:48 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/extconf.rb: added dir_config for curses, ncurses,
+ termcap.
+
+Thu Jul 15 20:44:46 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * class.c: rdoc patch
+
+Thu Jul 15 14:12:34 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb (YAML::load_file, YAML::parse_file): added.
+
+ * ext/syck/token.c: re2c compiled with bit vectors now.
+ * ext/syck/implicit.c: ditto.
+ * ext/syck/bytecode.c: ditto.
+
+Thu Jul 15 10:15:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/, ext/tcltklib/: bug fix
+
+ * ext/tk/lib/tk.rb: better operation for SIGINT when processing
+ callbacks.
+ * ext/tk/lib/tk/msgcat.rb: ditto.
+ * ext/tk/lib/tk/variable.rb: ditto.
+ * ext/tk/lib/tk/timer.rb: ditto.
+
+ * ext/tk/lib/tk/validation.rb: add Tk::ValidateConfigure.__def_validcmd
+ to define validatecommand methods easier
+
+ * ext/tk/lib/tk.rb (_genobj_for_tkwidget): support autoload Tk ext
+ classes
+
+ * ext/tk/lib/tk/canvas.rb and so on: remove the parent widget type
+ check for items (e.g. canvas items; depends on the class) to
+ avoid some troubles on Tk extension widget class definition.
+
+ * ext/tk/lib/tkextlib/: add Iwidget and TkTable extension support
+
+ * ext/tk/sample/tkextlib/: add samples of Iwidget and TkTable
+
+Wed Jul 14 23:49:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_min_by): new method Enum#min_by. added Enum#max_by
+ as well.
+
+Wed Jul 14 18:05:21 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1cons_to_der): fix type of
+ argument. [ruby-dev:23891]
+
+ * test/openssl/test_x509store.rb: prune tests for CRL checking
+ unless X509::V_FLAG_CRL_CHECK is defined.
+
+Wed Jul 14 12:20:05 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.c (ruby_strtod): should not convert string in the form of
+ "-I.FE-X" which both "I" and "F" are omitted. [ruby-dev:23883]
+
+ * test/ruby/test_float.rb (test_strtod): add test for bug fix.
+
+Wed Jul 14 00:33:48 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * array.c: rdoc patch. merged patch from Johan Holmberg
+ <holmberg@iar.se> [ruby-core:3170]
+
+Tue Jul 13 19:39:12 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic#merge_path):
+ "URI('http://www.example.com/foo/..') + './'" should return
+ "URI('http://www.example.com/')". [ruby-list:39838]
+ "URI('http://www.example.com/') + './foo/bar/..'" should return
+ "URI('http://www.example.com/foo/')". [ruby-list:39844]
+
+ * test/uri/test_generic.rb (TestGeneric#test_merge): added tests.
+
+Tue Jul 13 15:48:56 2004 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb (init_mkmf): Do not add $(libdir) to $LIBPATH in
+ extmk mode.
+
+ * lib/mkmf.rb (dir_config): Prepend a new library path instead of
+ appending so it is tried first.
+
+Tue Jul 13 00:50:48 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb: Support call-seq: for Ruby files.
+
+Mon Jul 12 21:20:51 2004 Dave Thomas <dave@pragprog.com>
+
+ * html_generator.rb: Support hyperlinks of the form {any text}[xxx]
+ as well as stuff[xxx]
+
+Sat Jul 10 09:30:24 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/marshal/test_struct.rb: use qualified built-in class name
+ (::Struct) to avoid name crash.
+
+Sat Jul 10 04:21:56 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: better operation for SIGINT when processing
+ callbacks.
+ * ext/tk/lib/tk/msgcat.rb: ditto.
+ * ext/tk/lib/tk/variable.rb: ditto.
+ * ext/tk/lib/tk/timer.rb: ditto.
+
+ * ext/tk/lib/tk/validation.rb (__def_validcmd): add a module
+ function of Tk::ValidateConfigure to define validatecommand
+ methods easier
+
+Fri Jul 9 22:18:59 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * array.c, enum.c, pack.c: rdoc patch from Johan Holmberg
+ <holmberg@iar.se> [ruby-core:3132] [ruby-core:3136]
+
+ * numeric.c: rdoc patch.
+
+Fri Jul 9 19:26:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::HTTPS#proxy_open): raise ArgumentError to
+ notice https is not supported.
+
+Fri Jul 9 14:28:54 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_raise): accept third argument as well as
+ Kernel#raise, and evaluate the arguments to create an exception in
+ the caller's context. [ruby-talk:105507]
+
+Fri Jul 9 01:47:08 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib: bug fix
+ * ext/tk/lib/tkextlib/itcl: add [incr Tcl] support
+ * ext/tk/lib/tkextlib/itk: add [incr Tk] support
+ * ext/tk/lib/tkextlib/iwidgets: midway point of [incr Widgets] support
+ * ext/tk/sample/tkextlib/iwidgets: very simple examples of
+ [incr Widgets]
+
+Thu Jul 8 19:27:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_stack_end_address): detect stack end address
+ variable supplied by system. [ruby-core:03115]
+
+ * gc.c (Init_stack): use system provided address if possible.
+
+Thu Jul 8 00:05:23 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile::initialize): got out code of
+ generating tmpname. [ruby-dev:23832][ruby-dev:23837]
+
+Wed Jul 7 02:31:41 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/{rss,parser,0.9,1.0,2.0}.rb: supported RSS 0.9x/2.0
+ validation and validation which disregard order of elements.
+ * test/rss/test_parser.rb: added tests for RSS 0.9x/2.0
+ validation.
+ * test/rss/{test_trackback,rss-testcase}.rb: fixed no good method
+ name.
+
+Wed Jul 7 00:48:34 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tk/lib/tkextlib/tktrans.rb,
+ ext/tk/lib/tkextlib/treectrl.rb: fix syntax errors.
+
+Tue Jul 6 18:38:45 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib: improve framework of developping Tcl/Tk extension
+ wrappers
+
+Mon Jul 5 23:56:42 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/{trackback,syndication,dublincore,content}.rb: worked
+ with ruby 1.6 again.
+
+ * test/rss/rss-assertions.rb: ditto.
+
+Mon Jul 5 22:54:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/uri/common.rb (Kernel#URI): new global method for parsing URIs.
+
+Mon Jul 5 09:02:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_yield, rb_f_catch): 4th argument to rb_yield_0()
+ is a set of bit flags. [ruby-dev:23859]
+
+Mon Jul 5 01:20:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/drb/drb.rb(DRbConn self.open): If socket pool is full, close
+ the socket whose last-access-time is oldest. (and add new one)
+ [ruby-dev:23860]
+
+Sun Jul 4 12:24:50 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: added copyright header.
+
+Sat Jul 3 22:25:27 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * added files:
+ * lib/soap/header/*
+ * lib/soap/rpc/httpserver.rb
+ * lib/wsdl/soap/cgiStubCreator.rb
+ * lib/wsdl/soap/classDefCreator.rb
+ * lib/wsdl/soap/classDefCreatorSupport.rb
+ * lib/wsdl/soap/clientSkeltonCreator.rb
+ * lib/wsdl/soap/driverCreator.rb
+ * lib/wsdl/soap/mappingRegistryCreator.rb
+ * lib/wsdl/soap/methodDefCreator.rb
+ * lib/wsdl/soap/servantSkeltonCreator.rb
+ * lib/wsdl/soap/standaloneServerStubCreator.rb
+ * lib/wsdl/xmlSchema/enumeration.rb
+ * lib/wsdl/xmlSchema/simpleRestriction.rb
+ * lib/wsdl/xmlSchema/simpleType.rb
+ * lib/xsd/codegen/*
+ * lib/xsd/codegen.rb
+ * sample/soap/authheader/*
+ * sample/soap/raa2.4/*
+ * sample/soap/ssl/*
+ * sample/soap/swa/*
+ * sample/soap/whois.rb
+ * sample/wsdl/raa2.4/*
+ * test/soap/header/*
+ * test/soap/ssl/*
+ * test/soap/struct/*
+ * test/soap/swa/*
+ * test/soap/wsdlDriver/*
+ * test/wsdl/multiplefault.wsdl
+ * test/wsdl/simpletype/*
+ * test/wsdl/test_multiplefault.rb
+
+ * modified files:
+ * lib/soap/baseData.rb
+ * lib/soap/element.rb
+ * lib/soap/generator.rb
+ * lib/soap/netHttpClient.rb
+ * lib/soap/parser.rb
+ * lib/soap/property.rb
+ * lib/soap/soap.rb
+ * lib/soap/streamHandler.rb
+ * lib/soap/wsdlDriver.rb
+ * lib/soap/encodingstyle/handler.rb
+ * lib/soap/encodingstyle/literalHandler.rb
+ * lib/soap/encodingstyle/soapHandler.rb
+ * lib/soap/mapping/factory.rb
+ * lib/soap/mapping/mapping.rb
+ * lib/soap/mapping/registry.rb
+ * lib/soap/mapping/rubytypeFactory.rb
+ * lib/soap/mapping/wsdlRegistry.rb
+ * lib/soap/rpc/cgistub.rb
+ * lib/soap/rpc/driver.rb
+ * lib/soap/rpc/proxy.rb
+ * lib/soap/rpc/router.rb
+ * lib/soap/rpc/soaplet.rb
+ * lib/soap/rpc/standaloneServer.rb
+ * lib/wsdl/data.rb
+ * lib/wsdl/definitions.rb
+ * lib/wsdl/operation.rb
+ * lib/wsdl/parser.rb
+ * lib/wsdl/soap/definitions.rb
+ * lib/wsdl/xmlSchema/complexContent.rb
+ * lib/wsdl/xmlSchema/complexType.rb
+ * lib/wsdl/xmlSchema/data.rb
+ * lib/wsdl/xmlSchema/parser.rb
+ * lib/wsdl/xmlSchema/schema.rb
+ * lib/xsd/datatypes.rb
+ * lib/xsd/qname.rb
+ * sample/soap/sampleStruct/server.rb
+ * sample/wsdl/amazon/AmazonSearch.rb
+ * sample/wsdl/amazon/AmazonSearchDriver.rb
+ * test/soap/test_property.rb
+ * test/soap/calc/test_calc_cgi.rb
+ * test/wsdl/test_emptycomplextype.rb
+
+ * summary
+ * add SOAP Header mustUnderstand support.
+
+ * add HTTP client SSL configuration and Cookies support (works
+ completely with http-access2).
+
+ * add header handler for handling sending/receiving SOAP Header.
+
+ * map Ruby's anonymous Struct to common SOAP Struct in SOAP Object
+ Model. it caused error.
+
+ * add WSDL simpleType support to restrict lexical value space.
+
+Sat Jul 3 17:19:44 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tk/lib/tkextlib/tkDND.rb: fix syntax error.
+
+Thu Jul 1 18:36:08 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tcltklib: bug fix
+
+ * ext/tk/lib/tk: bug fix and add Tcl/Tk extension support libraries
+
+Thu Jul 1 18:31:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pstore.rb (PStore#transaction): get rid of opening in write mode
+ when read only transaction. [ruby-dev:23842]
+
+Thu Jul 1 00:44:42 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_encrypt, ossl_cipher_decrypt):
+ re-implemnt (the arguments for this method is ).
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_pkcs5_keyivgen): new method
+ OpenSSL::Cipher::Cipher#pkcs5_keyivgen. it calls EVP_BytesToKey().
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_set_key_length): new method
+ OpenSSL::Cipher::Cipher#key_len=.
+
+Wed Jun 30 19:48:09 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: check for EVP_CIPHER_CTX_copy, ENGINE_add,
+ EVP_CIPHER_CTX_set_padding, EVP_CipherFinal_ex, EVP_CipherInit_ex,
+ EVP_DigestFinal_ex and EVP_DigestInit_ex.
+
+ * ext/openssl/openssl_missing.c (EVP_CIPHER_CTX_copy): new function.
+
+ * ext/openssl/openssl_missing.h (EVP_DigestInit_ex, EVP_DigestFinal_ex,
+ EVP_CipherInit_ex, EVP_CipherFinal_ex, HMAC_Init_ex): new macro for
+ OpenSSL 0.9.6.
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_alloc, ossl_cipher_initialize,
+ ossl_cipher_copy, ossl_cipher_reset, ossl_cipher_encrypt,
+ ossl_cipher_decrypt, ossl_cipher_final, ossl_cipher_set_key,
+ ossl_cipher_set_iv): replace all EVP_CipherInit and
+ EVP_CipherFinal into EVP_CipherInit_ex and EVP_CipherFinal_ex.
+ and EVP_CIPHER_CTX_init should only be called once.
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_set_padding): check for
+ EVP_CIPHER_CTX_set_padding.
+
+ * ext/openssl/ossl_cipher.c (Init_ossl_cipher): Cipher#<< is deprecated.
+
+ * ext/openssl/ossl_digest.c: replace all EVP_DigestInit and
+ EVP_DigestFinal into EVP_DigestInit_ex and EVP_DigestFinal_ex.
+ and EVP_MD_CTX_init should only be called once.
+
+ * ext/openssl/ossl_digest.c (digest_final): should call
+ EVP_MD_CTX_cleanup to avoid memory leak.
+
+ * ext/openssl/ossl_hmac.c (ossl_hmac_initialize): repalce HMAC_init
+ into HMAC_init_ex. and HMAC_CTX_init is moved to ossl_hmac_alloc.
+
+ * ext/openssl/ossl_hmac.c (hmac_final): should call
+ HMAC_CTX_cleanup to avoid memory leak.
+
+ * test/openssl/test_cipher.rb, test/openssl/test_digest.rb,
+ test/openssl/test_hmac.rb: new file.
+
+Wed Jun 30 16:59:39 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_file.rb (test_fnmatch): some tests for File.fnmatch
+ are added.
+
+Wed Jun 30 11:38:51 2004 Mikael Brockman <phubuh@phubuh.org>
+
+ * parse.y (primary): should not be NULL. [ruby-core:03098]
+
+Wed Jun 30 02:41:10 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_emitter_new): set buffer after
+ Data_Wrap_Struct to avoid possible GC. [ruby-talk:104835]
+
+Tue Jun 29 10:31:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval_cmd, rb_thread_trap_eval): restore safe level.
+
+ * gc.c (define_final, run_final): preserve and restore safe level for
+ finalizers. [ruby-core:03058]
+
+ * signal.c (signal_exec, rb_trap_exit, trap): preserve and restore
+ safe level for signal handlers. [ruby-dev:23829]
+
+Mon Jun 28 14:57:56 2004 Jeff Mitchell <quixoticsycophant@yahoo.com>
+
+ * configure.in, lib/mkmf.rb (LIBPATHFLAG): use double quotes due to
+ DOSISH compilers. [ruby-core:03107]
+
+Mon Jun 28 00:35:29 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * sample/drb/*.rb: using 'DRb.thread.join' instead of 'gets'
+
+Sun Jun 27 22:36:47 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb: supported Hiki.
+
+Sat Jun 26 15:17:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_mod_class_variables): class variables are no longer
+ inherited. [ruby-dev:23808]
+
+Sat Jun 26 11:07:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (aix): -b must come at the start of the command line,
+ and -e must not appear while testing libraries. [ruby-talk:104501]
+
+ * lib/mkmf.rb (find_header, dir_config): quote directory names if
+ necessary. [ruby-talk:104505]
+
+Sat Jun 26 00:13:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_fopen, rb_fdopen, rb_io_reopen): setvbuf() may return
+ positive value on failure. [ruby-dev:23792]
+
+Fri Jun 25 18:07:15 2004 Michal Rokos <michal@ruby-lang.org>
+
+ * gc.c: bring back _stklen for DJGPP [ruby-core:3084]
+
+Fri Jun 25 15:33:01 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/extconf.rb: check stricter. [ruby-talk:104501]
+
+Fri Jun 25 01:58:01 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32,wince}/setup.mak: remove RUBY_EXTERN lines when
+ including version.h. [ruby-talk:104456]
+
+Thu Jun 24 14:23:29 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_fread): return already read data when system call is
+ interrupted. [ruby-talk:97206]
+
+Thu Jun 24 01:25:21 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * version.h: added declarations of ruby_version,
+ ruby_release_date, ruby_platform.
+
+Thu Jun 24 01:07:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_sockaddr): Socket#gethostbyname()
+ should give us packed address, not struct sockaddr.
+ [ruby-core:03053]
+
+Wed Jun 23 22:19:10 2004 Dave Thomas <dave@pragprog.com>
+
+ * ext/socket/socket.c (sock_s_gethostbyaddr): Work around problem
+ with OS X not returning 'from' parameter to recvfrom for
+ connection-oriented sockets.
+
+Wed Jun 23 22:16:16 2004 Michal Rokos <michal@ruby-lang.org>
+
+ * io.c: io_seek()'s retval should be checked [ruby-core:03045]
+
+Wed Jun 23 21:48:27 2004 Michal Rokos <michal@ruby-lang.org>
+
+ * time.c: Fix indentation.
+
+ * main.c: Remove _stklen, and _CRT_glob. Move _stacksize for
+ __human68k__ to gc.c where the others are.
+
+ * gc.c: put _stacksize in place and clean the #ifdefs macros.
+
+Wed Jun 23 17:37:54 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: added new option --ssl.
+
+Wed Jun 23 01:45:27 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RubyLex::identify_quotation):
+ Fix problem with the 'r' being dropped from %r{xxx}
+
+Wed Jun 23 00:10:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_hresult2msg): remove trailing
+ CRs and LFs. (doesn't depend on CR+LF) [ruby-dev:23749]
+
+Wed Jun 23 00:00:25 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (return_jump, break_jump): raise unexpected local jump
+ exception directly. [ruby-dev:23740]
+
+ * io.c (rb_io_initialize): should check fcntl result. [ruby-dev:23742]
+
+Tue Jun 22 23:35:43 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): support FZERO and FSPACE with NaN/Inf.
+
+ * test/ruby/test_sprintf.rb (test_nan, test_inf): add tests.
+
+Tue Jun 22 21:11:36 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (OLE_FREE): should not call CoFreeUnuse-
+ dLibraries().
+
+ * ext/win32ole/win32ole.c (ole_event_free): ditto.
+
+ * ext/win32ole/win32ole.c (ole_hresult2msg): truncate error message
+ before CR.
+
+Tue Jun 22 19:24:59 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): unify output of NaN, Inf and -Inf with
+ "%f" or etc on all platform. [ruby-dev:23704], [ruby-dev:23747]
+
+Tue Jun 22 15:28:12 2004 Michal Rokos <michal@ruby-lang.org>
+
+ * compar.c: Remove explicit NIL_P() checks since rb_cmpint() does it
+ again in the exactly same manner.
+
+Tue Jun 22 01:32:40 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey_dh.c (ossl_dh_initialize): should create
+ empty pkey object if no argument is passed. [ruby-talk:103328]
+
+ * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.
+
+ * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize): ditto.
+
+ * ext/openssl/ossl_pkey_dh.c: add new methods: OpenSSL::PKey::DH#p,
+ OpenSSL::PKey::DH#p=, OpenSSL::PKey::DH#g, OpenSSL::PKey::DH#g=,
+ OpenSSL::PKey::DH#pub_key, OpenSSL::PKey::DH#pub_key=,
+ OpenSSL::PKey::DH#priv_key and OpenSSL::PKey::DH#priv_key=.
+
+ * ext/openssl/ossl_pkey_dsa.c: add new methods: OpenSSL::PKey::DSA#p,
+ OpenSSL::PKey::DSA#p=, OpenSSL::PKey::DSA#q, OpenSSL::PKey::DSA#q=,
+ OpenSSL::PKey::DSA#g, OpenSSL::PKey::DSA#g=,
+ OpenSSL::PKey::DSA#pub_key, OpenSSL::PKey::DSA#pub_key=,
+ OpenSSL::PKey::DSA#priv_key and OpenSSL::PKey::DSA#priv_key=.
+
+Mon Jun 21 09:24:51 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_opendir): should set errno if error occurs
+ when calling OS API.
+
+Sun Jun 20 21:12:54 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (binary=): send TYPE commands only once.
+
+Sat Jun 19 13:27:01 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (method_call): allow changing $SAFE. [ruby-dev:23713]
+
+ * eval.c (proc_set_safe_level, proc_invoke, rb_mod_define_method): not
+ set $SAFE for methods defined from Proc. [ruby-dev:23697]
+
+Sat Jun 19 01:10:12 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb: added more information.
+
+Fri Jun 18 23:12:22 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (proc_save_safe_level, rb_set_safe_level, safe_setter): limit
+ safe level.
+
+Wed Jun 16 23:05:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_freeze): prepare string representation before
+ freezing. [ruby-talk:103646]
+
+Wed Jun 16 19:57:24 2004 Michal Rokos <michal@ruby-lang.org>
+
+ * test/ruby/test_array.rb: extend testcase to check #first, #last,
+ #shift, #unshift, #pop, #push
+
+Wed Jun 16 16:05:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_new): move alloc behind checks. [ruby-core:02982]
+
+ * array.c (rb_ary_pop_m, rb_ary_shift_m): take arg to behave as push
+ and unshift.
+
+ * array.c (rb_ary_first, rb_ary_last): make shared array for result
+ array, and correct doc for Array#first(n) and Array#last(n)
+
+ * array.c (rb_ary_select): not accept any arg.
+
+Wed Jun 16 16:03:59 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_class_inherited_p): singleton class inherits Class
+ rather than its object's class. [ruby-dev:23690]
+
+Wed Jun 16 16:01:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (stack_grow_direction): memoize the direction.
+
+ * gc.c (Init_stack): should always move to end of VALUE.
+
+Tue Jun 15 12:10:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix (TkWindow#grab)
+
+Mon Jun 14 18:23:27 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/remote-tk.rb: bug fix
+
+Sun Jun 13 00:23:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/extconf.rb: [EXPERIMENTAL] MacOS X (darwin) support
+
+ * ext/tcltklib/tcltklib.c: fix thread trouble on callback proc, and
+ eliminate warning about instance variable access
+
+ * ext/tk/lib/tk/menubar.rb: improve supported menu_spec
+
+ * ext/tk/lib/tk/menuspec.rb: [add] menu_spec support library
+
+ * ext/tk/lib/tk/root.rb: add menu_spec support
+
+ * ext/tk/lib/tk/text.rb: bug fix
+
+ * ext/tk/lib/tk/toplevel.rb: add menu_spec support
+
+ * ext/tk/sample/menubar?.rb: [add] sample of menu_spec usage
+
+Sat Jun 12 14:15:20 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c: RDOC for File::FNM_CASEFOLD was missed.
+
+Sat Jun 12 11:15:53 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (target_os): strip -gnu suffix on Linux.
+
+Fri Jun 11 22:08:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c: remove #indexes, #indices.
+
+ * hash.c: ditto.
+
+ * ext/dbm/dbm.c: remove #indexes, #indices, "values_at" warning
+ from #select.
+
+ * ext/gdbm/gdbm.c: ditto.
+
+ * ext/sdbm/init.c: ditto.
+
+ * ext/dbm/dbm.c (Init_dbm): set VERSION constant as "unknown" when
+ DB_VERSION_STRING is not available.
+
+Thu Jun 10 19:19:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/sdbm/init.c (fsdbm_store): sdbm should use StringValue().
+ [ruby-talk:103062]
+
+Wed Jun 9 16:09:01 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic::merge,
+ URI::Generic::route_from): accepts non-hierarchical URI.
+ [ruby-dev:23631]
+
+ * test/uri/test_generic.rb (TestGeneric::test_route,
+ TestGeneric::test_merge): added tests for above changes.
+
+Wed Jun 9 15:39:55 2004 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in: Add support for DragonFly BSD.
+
+Wed Jun 9 15:07:06 2004 Akinori MUSHA <knu@iDaemons.org>
+
+ * config.guess, config.sub: Update to a more recent version as of
+ 2004-01-20.
+
+Wed Jun 9 11:20:05 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c: remove unused functions and variables.
+
+Wed Jun 2 20:16:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_new4): should share shared instance if it already
+ exists. [ruby-dev:23665]
+
+Wed Jun 2 12:41:53 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_gets_m): set lastline ($_) even when read line is
+ nil. [ruby-dev:23663]
+
+Fri May 28 11:20:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): bad influence on frame node.
+
+ * eval.c (eval): reverted wrongly removed condition. [ruby-dev:23638]
+
+Thu May 27 21:37:50 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#initialize): fix pathname initialization
+ by pathname.
+
+Thu May 27 20:02:09 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * io.c (rb_io_fwrite): check all case errno != 0 [ruby-dev:23648]
+
+Thu May 27 15:54:02 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (MDTM_REGEXP): fix for demon's ftp server.
+ Thanks, Rutger Nijlunsing.
+
+Thu May 27 14:53:13 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (rb_io_fwrite): workaround for bcc32's fwrite bug.
+ add errno checking. [ruby-dev:23627]
+
+ * io.c (rb_io_fwrite): should check if errno == ENOENT, too.
+
+Thu May 27 11:25:03 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: illegal require module name (../lib/csv.rb).
+
+Wed May 26 23:12:13 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb (CSV.read, CSV.readlines): added. works as IO.read and
+ IO.readlines in CSV format.
+
+ * lib/csv.rb (CSV.parse): [CAUTION] behavior changed. in the past,
+ CSV.parse accepts a filename to be read-opened (it was just a
+ shortcut of CSV.open(filename, 'r')). now CSV.parse accepts a
+ string or a stream to be parsed e.g.
+ CSV.parse("1,2\n3,r") #=> [['1', '2'], ['3', '4']]
+
+ * test/csv/test_csv.rb: follow above changes.
+
+Wed May 26 14:19:42 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval, eval): make line number consistent on eval with
+ Proc. [ruby-talk:101253]
+
+Wed May 26 13:59:17 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::skip_for_variable): Allow for
+ 'do' after for statement
+
+Wed May 26 13:56:03 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb (Generators::MarkUp::style_url): Fix
+ relative path to code CSS file
+
+Wed May 26 13:14:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_init_copy): copy also positions. [ruby-talk:100910]
+
+Wed May 26 00:00:00 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/syck.c (syck_new_parser): clear parser on init.
+ thanks, ts. [ruby-core:02931]
+
+ * ext/syck/token.c (sycklex_yaml_utf8): buffer underflow.
+ thanks, ts. [ruby-core:02929]
+
+ * lib/yaml/baseemitter.rb (indent_text): simpler flow block code.
+
+Tue May 25 11:54:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_yield_0, proc_invoke, proc_arity): allow passing a block
+ to a Proc. [ruby-dev:23533]
+
+ * parse.y (block_par, block_var): ditto.
+
+Tue May 25 01:50:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_i2d_ASN1_TYPE, ossl_ASN1_TYPE_free):
+ workaround for the versions earlier than OpenSSL-0.9.7.
+
+Mon May 24 10:46:26 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/rdoc/generators/template/html/html.rb: SYSTEM identifiers
+ must be absolute URIs
+
+Sun May 23 04:53:50 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/pstore.rb (transaction): allow overriding dump and load.
+ [ruby-dev:23567]
+
+ * lib/yaml/store.rb: follow lib/pstore.rb's change.
+
+Sat May 22 11:54:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * MANIFEST: add test/openssl/test_x509store.rb.
+
+ * ext/tk/MANIFEST: add recent files.
+
+Sat May 22 05:37:11 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/remote-tk.rb: (NEW library) control Tk interpreters
+ on the other processes by Tcl/Tk's 'send' command
+
+Fri May 21 09:22:05 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method_parameters):
+ Add ()'s around parameters that don't have them
+
+Fri May 21 02:21:11 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: fixed a few bugs around multi char record/field separator.
+
+ * test/csv/test_csv.rb: added boundary test for above feature.
+
+Thu May 20 17:02:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (check_sizeof): define result size. [ruby-core:02911]
+
+ * lib/mkmf.rb (create_header): macro name should not include equal
+ sign.
+
+Thu May 20 14:35:52 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c: check SCM_RIGHTS macro addition to
+ the msg_control field to test existence of file descriptor passing
+ by msg_control.
+
+Thu May 20 12:38:06 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_eq): always check if operands are NaN.
+ [ruby-list:39685]
+
+Thu May 20 12:34:39 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_visibility):
+ At Ryan Davis' suggestion, honor visibility modifers if guarded by a
+ statement modifier
+
+Thu May 20 12:22:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_type): do not check pointer to incomplete type,
+ which always get compiled.
+ [ruby-list:39683]
+
+Wed May 19 23:45:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/inlinetest.rb (InlineTest::loadtest): requiring library with
+ replaced $0 can make $0 == __FILE__ block be evaluated twice.
+
+ * test/ruby/envutil.rb (EnvUtil::rubybin): give priority to
+ environment variable. [ruby-dev:23538]
+
+Wed May 19 11:08:10 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: change permition of TkObject#tk_send from
+ private to public
+
+Wed May 19 02:29:36 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: support TRACE.
+
+Wed May 19 02:21:53 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: do not use class variables.
+
+Tue May 18 21:21:43 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: writes lines with "\n" when row separator is not given.
+ formerly it was "\r\n".
+
+ * lib/csv.rb: [CAUTION] API change
+
+ * CSV::Row removed. a row is represented as just an Array. since
+ CSV::Row was a subclass of Array, it won't hurt almost all programs
+ except one which depended CSV::Row#match.
+
+ * CSV::Cell removed. a cell is represented as just a String or
+ nil(NULL). this change will cause widespread destruction.
+
+ CSV.open("foo.csv", "r") do |row|
+ row.each do |cell|
+ if cell.is_null # Cell#is_null
+ p "(NULL)"
+ else
+ p cell.data # Cell#data
+ end
+ end
+ end
+
+ must be just;
+
+ CSV.open("foo.csv", "r") do |row|
+ row.each do |cell|
+ if cell.nil?
+ p "(NULL)"
+ else
+ p cell
+ end
+ end
+ end
+
+ * lib/csv.rb: [CAUTION] record separator(CR, LF, CR+LF) behavior
+ change. CSV.open, CSV.parse, and CSV,generate now do not force
+ opened file binmode. formerly it set binmode explicitly.
+
+ with CSV.open, binmode of opened file depends the given mode
+ parameter "r", "w", "rb", and "wb". CSV.parse and CSV.generate open
+ file with "r" and "w".
+
+ setting mode properly is user's responsibility now.
+
+ * lib/csv.rb: accepts String as a fs (field separator/column separator)
+ and rs (record separator/row separator)
+
+ * lib/csv.rb: added CSV.foreach(path, rs = nil, &block). CSV.foreach
+ now does not handle "| cmd" as a path different from IO.foreach.
+ needed?
+
+ * test/csv/test_csv.rb: updated.
+
+Tue May 18 14:24:20 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb: added rdoc to beginning of lib.
+
+Tue May 18 14:00:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (NEW_DSTR): adjust list length.
+
+ * parse.y (literal_concat): ditto.
+
+Tue May 18 09:30:25 2004 SASADA Koichi <ko1@atdot.net>
+
+ * eval.c (rb_method_node): search cache entry first.
+
+Mon May 17 16:04:06 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * numeric.c (flo_to_s): it's preferable that "p 0.0" outputs "0.0"
+ instead of "0.0e+00". [ruby-dev:23480]
+
+ * numeric.c (flo_to_s): it's preferable that "p 0.00000000000000000001"
+ outputs "1.0e-20" instead of "9.999999999999999e-21". (the precision
+ is considered, but there is assumption DBL_DIG == 15 in current
+ implementation)
+
+Mon May 17 10:13:33 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (setup_domain_and_type): honor duck typing.
+ [ruby-dev:23522]
+
+ * ext/socket/socket.c (sock_s_getnameinfo): ditto.
+
+Mon May 17 00:36:21 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/baseemitter.rb (indent_text): was forcing a mod value
+ of zero at times, which kept some blocks from getting indentation.
+
+Mon May 17 00:07:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/drb/drb.rb: Cosmetic documentation changes.
+
+Sun May 16 20:55:49 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/dbm/dbm.c (fdbm_initialize): accept optional 3rd argument to
+ specify an open flag.
+ (Init_dbm): define open flags: DBM::READER, DBM::WRITER, DBM::WRCREAT
+ and DBM::NEWDB.
+
+Sat May 15 17:52:24 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_float.rb(test_strtod): Add test for signed 0.000...1
+
+Sat May 15 14:20:13 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/syck/depend: add ruby's headers.
+
+Sat May 15 13:38:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/MANIFEST, ext/syck/depend: new file.
+
+ * lib/yaml/rubytypes.rb: range of exponential floats. [ruby-core:02824]
+
+ * test/yaml/test_yaml.rb: tests for strings start with colon and some
+ round trip.
+
+Sat May 15 12:04:58 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb: removed fallback to pure Ruby parser.
+
+ * lib/yaml/baseemitter.rb (node_text): rewriting folded scalars.
+
+ * ext/syck/syck.h: reports style of scalars now, be they plain, block
+ single-, or double-quoted.
+
+ * ext/syck/syck.c: ditto.
+
+ * ext/syck/gram.c: ditto.
+
+ * ext/syck/node.c: ditto.
+
+ * ext/syck/token.c: ditto.
+
+ * ext/syck/rubyext.c (yaml_org_handler): symbols loaded only
+ if scalar style is plain.
+
+ * test/yaml/test_yaml.rb (test_perl_regexp): updated test to
+ match new regexp serialization.
+
+Sat May 15 01:41:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): forgot to restore $SAFE value before evaluating
+ compiled node. [ruby-core:02872]
+
+Sat May 15 01:33:12 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_each_func): terminates loop if generating value
+ is same to @end. [ruby-talk:100269]
+
+Fri May 14 22:08:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_new4): should not reuse frozen shared string if
+ the original is not an instance of String. [ruby-talk:100193]
+
+Fri May 14 21:29:26 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_mdump): preserve GMT bit in the marshal data.
+ [ruby-talk:100213]
+
+Fri May 14 18:37:49 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/canvas.rb: improve coords support for canvas
+ items. Now, supports all of the followings.
+ TkcLine.new(c, 0, 0, 100, 100, :fill=>'red')
+ TkcLine.new(c, [0, 0, 100, 100], :fill=>'red')
+ TkcLine.new(c, [0, 0], [100, 100], :fill=>'red')
+ TkcLine.new(c, [[0, 0], [100, 100]], :fill=>'red')
+ TkcLine.new(c, :coords=>[0, 0, 100, 100], :fill=>'red')
+ TkcLine.new(c, :coords=>[[0, 0], [100, 100]], :fill=>'red')
+
+Fri May 14 13:30:39 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_float.rb: Add test for util.c revision 1.42.
+
+Fri May 14 12:13:46 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.c (ruby_strtod): strtod("0", &end); => end should point '\0'.
+ [ruby-dev:23498]
+
+Thu May 13 15:47:30 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/net/telnet.rb (Net::Telnet::login): "options" can specify
+ regexps for login prompt and/or password prompt.
+
+Thu May 13 14:17:57 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c (yaml_org_handler): some empty strings were
+ loaded as symbols.
+
+Thu May 13 11:04:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack): always add with null for 'Z'.
+
+ * pack.c (pack_unpack): terminated by null for 'Z'. [ruby-talk:98281]
+
+Wed May 12 19:59:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_type, check_sizeof): replace unusable characters.
+ [ruby-talk:99788]
+
+Wed May 12 17:41:42 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Config): make it configurable without
+ external file such as /etc/resolv.conf.
+
+Wed May 12 14:37:27 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c: attribute value of DC (short name of
+ domainComponent) should be IA5String.
+
+Wed May 12 13:20:19 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/composite.rb: improve configure methods (based on
+ the proposal of [ruby-talk:99671]).
+
+Wed May 12 11:51:08 2004 Dave Thomas <dave@pragprog.com>
+
+ * class.c (rb_obj_singleton_methods): fix rdoc
+
+Tue May 11 07:09:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): do not protect exception during receiver
+ evaluation.
+
+Mon May 10 22:28:14 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb (each_crlf_line): remove junk line.
+
+Mon May 10 21:44:42 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Change scheme for
+ looking up symbols in HTML generator.
+
+Mon May 10 16:45:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): warning during eval should not cause deadlock.
+ [ruby-talk:98651]
+
+ * eval.c (rb_eval): raise TypeError exception for superclass
+ mismatch. [ruby-list:39567]
+
+Mon May 10 12:11:37 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Hack to search parents
+ for unqualified constant names.
+
+Mon May 10 01:18:15 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb (logging): append "\n".
+
+Sun May 9 23:38:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/net/ftp.rb: ported documentation improvement from 1.8 branch
+
+ * lib/net/imap.rb: ditto
+
+ * lib/net/pop.rb: ditto
+
+ * lib/net/smtp.rb: ditto
+
+ * lib/net/telnet.rb: ditto
+
+Sun May 9 23:34:51 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_float.rb: added test_strtod to test Float("0").
+
+Sun May 9 13:24:24 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/yaml/store.rb: use FileUtils::copy.
+
+Sun May 9 12:34:26 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regex.c: removed unused file.
+
+Sat May 8 10:53:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_open): open should not ignore block when "to_open"
+ method is used. [ruby-dev:23478]
+
+Fri May 7 22:07:39 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mv): new option `force'. [ruby-talk:99457]
+
+ * lib/fileutils.rb: new method for command option reflection:
+ FileUtils.commands, .options, .have_option?, .options_of,
+ .collect_methods.
+
+ * lib/fileutils.rb: module Verbose, NoWrite, DryRun do not have
+ option flags @fileutils_verbose and @fileutils_noop, they make no
+ sense.
+
+Fri May 7 21:50:21 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::parse_include): Allow
+ multiple arguments to 'include'
+
+Fri May 7 21:03:51 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_list): Array() breaks pathes including "\n".
+ [ruby-core:02843]
+
+ * test/fileutils/test_fileutils.rb (mkdir): test "\n" in path.
+
+Fri May 7 20:53:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_modify): typo fixed. [ruby-dev:23473]
+
+Fri May 7 11:17:27 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.c (ruby_strtod): "0.0000000000000000001" should be converted
+ to 1.0e-19 instead of 0.0. (leading zeros aren't significant digits)
+ [ruby-talk:99318] [ruby-dev:23465]
+
+Thu May 6 22:27:32 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * ext/socket/socket.c (ippaddr): use NUMERICHOST if can not resolve
+ hostname.
+
+Thu May 6 22:09:29 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil.c (get_eval_string_core): bug fix. [ruby-dev:23466]
+
+Thu May 6 14:22:29 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb (to_yaml): added instance variable handling
+ for Ranges, Strings, Structs, Regexps.
+
+ * lib/yaml/rubytypes.rb (to_yaml_fold): new method for setting a
+ String's flow style.
+
+ * lib/yaml.rb (YAML::object_maker): now uses Object.allocate.
+
+ * ext/syck/gram.c: fixed transfer methods on structs, broke it
+ last commit.
+
+Thu May 6 14:38:02 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (rb_push_glob): simplified code (not change behavior)
+
+Thu May 6 13:32:44 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: get rid of side effect of Config.expand, patched by
+ <tttt01@infoseek.jp> (ruby-bugs:PR#597)
+
+Thu May 6 11:40:28 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (string): accept NIL.
+
+ * lib/net/imap.rb (body_type_basic): allow body-fields omissions.
+
+Thu May 6 01:59:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb (Generators::HtmlMethod::params):
+ Don't include the &block parameter if we have explicit
+ yield parameters.
+
+Wed May 5 03:52:31 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/ring.rb: use recv instead of recvfrom.
+
+Wed May 5 00:38:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/gserver.rb: documented
+ * lib/xmlrpc/README.txt: introduced for documentation purposes
+
+Mon May 3 09:47:24 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method_or_yield_parameters):
+ Fix parsing bug if yield called within 1 line block
+
+Sun May 2 21:56:48 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (rm_f, rm_r): test :force flag.
+
+Sun May 2 01:04:38 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib, ext/tk: renewal Ruby/Tk
+
+Fri Apr 30 20:08:41 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * time.c (SIZEOF_TIME_T): support SIZEOF_TIME_T == SIZEOF_INT.
+
+Wed Apr 28 01:26:11 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * oniguruma.h, regparse.c: imported Oni Guruma 2.2.8.
+
+Wed Apr 28 01:16:23 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * oniguruma.h, regparse.c: imported Oni Guruma 2.2.7.
+
+Tue Apr 27 14:43:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: LIBURUBY_A is needed for extconf.rb even when
+ cross-compiling.
+
+Tue Apr 27 13:33:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (string_content): turn off NODE_NEWLINE flag to avoid
+ unnecessary line trace for inlined expression.
+ (ruby-bugs PR#1320)
+
+Tue Apr 27 08:15:13 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: passing Range tests.
+
+ * ext/syck/syck.h: version 0.44.
+
+ * ext/syck/gram.c: transfers no longer open an indentation.
+ fixed transfers which precede blocks.
+
+ * ext/syck/token.c: ditto.
+
+ * ext/syck/syck.c: fixed segfault if an anchor has been released already.
+
+ * ext/syck/node.c (syck_free_members): organized order of free'd nodes.
+
+ * ext/syck/rubyext.c (syck_emitter_write_m): test for proper string with
+ StringValue.
+
+Mon Apr 26 23:56:54 2004 Daniel Kelley <news-1082945587@dkelley.gmp.san-jose.ca.us>
+
+ * README.EXT, README.EXT.ja: fixed wrong function signature.
+ [ruby-talk:98349]
+
+Mon Apr 26 21:40:09 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::add_alias): Only alias
+ to instance methods.
+
+Sun Apr 25 18:26:23 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (ac_cv_func_fork): set to no on DJGPP.
+
+Sat Apr 24 14:32:03 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * re.c: applied stack error handling patch. [ruby-dev:23431]
+
+Sat Apr 24 10:38:31 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/markup/simple_markup.rb (SM::SimpleMarkup::group_lines):
+ Fix bug where consecutive headings are merged.
+
+Fri Apr 23 23:24:47 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: $hdrdir should not contain macros, for backward
+ compatibility. [bruby-dev:28]
+
+ * lib/mkmf.rb (create_makefile): in the case of extout, just copy
+ script files, without comparison.
+
+Fri Apr 23 16:38:46 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: sync taint/freeze flag between
+ a pathname object and its internal string object.
+
+Fri Apr 23 14:52:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt, arg, aref_args): should not make sole splat into
+ array, in aref_args other than aref with op_asgn.
+
+Fri Apr 23 14:14:38 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb: don't use Regexp#source to embed regexps.
+ [ruby-dev:23432]
+
+Thu Apr 22 18:25:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, ext/extmk.rb: make ext and .ext get removed by distclean.
+
+Thu Apr 22 10:07:01 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * */Makefile.sub (distclean-local): should remove $(RBCONFIG).
+
+Thu Apr 22 04:17:57 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_mod_define_method): allow binding methods to modules.
+ [ruby-dev:23410]
+
+ * parse.y (aref_args): should pass expanded list. [ruby-core:02793]
+
+Thu Apr 22 01:12:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_to_s): tweak output string based to preserve
+ decimal point and to remove trailing zeros. [ruby-talk:97891]
+
+ * string.c (rb_str_index_m): use unsigned comparison for T_FIXNUM
+ search. [ruby-talk:97342]
+
+Wed Apr 21 23:04:42 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb, test/rinda/test_rinda.rb: check Hash tuple size.
+
+Wed Apr 21 20:05:00 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::HTTP#proxy_open): set Host: field explicitly.
+ [ruby-list:39542]
+
+Wed Apr 21 18:39:46 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: merge SMTP-TLS patch. This patch is
+ contributed by Daniel Hob. [ruby-core:02789]
+
+Wed Apr 21 18:23:45 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: change coding style: def m( a ) -> def m(a).
+
+Wed Apr 21 18:01:47 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: do not use class variables.
+
+ * lib/net/pop.rb (do_start): ensure to clean up connection when
+ authentication failed.
+
+Wed Apr 21 17:23:59 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTP#connect): CONNECT must precede SSL connect.
+ [ruby-dev:23379]
+
+ * lib/net/http.rb (HTTP.new): class variables are not inherited
+ now.
+
+Wed Apr 21 15:56:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/ui/console/testrunner.rb (test_started): restore $0
+ after changing process title. [ruby-talk:97426]
+
+Wed Apr 21 10:18:06 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * process.c(rb_spawn): fix SEGV at "p system('command line here')"
+ (may happen only in bccwin32) [ruby-dev:23380]
+
+Mon Apr 19 20:58:44 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c: Updated RDocs.
+
+Mon Apr 19 18:11:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_equal): returns true if two hashes have same set
+ of key-value set. [ruby-talk:97559]
+
+ * hash.c (rb_hash_eql): returns true if two hashes are equal and
+ have same default values.
+
+Mon Apr 19 08:19:11 2004 Doug Kearns <djkea2@mugca.its.monash.edu.au>
+
+ * dln.c, io.c, pack.c, lib/benchmark.rb, lib/cgi.rb, lib/csv.rb,
+ lib/date.rb, lib/ftools.rb, lib/getoptlong.rb, lib/logger.rb,
+ lib/matrix.rb, lib/monitor.rb, lib/set.rb, lib/thwait.rb,
+ lib/timeout.rb, lib/yaml.rb, lib/drb/drb.rb, lib/irb/workspace.rb,
+ lib/net/ftp.rb, lib/net/http.rb, lib/net/imap.rb, lib/net/pop.rb,
+ lib/net/telnet.rb, lib/racc/parser.rb, lib/rinda/rinda.rb,
+ lib/rinda/tuplespace.rb, lib/shell/command-processor.rb,
+ lib/soap/rpc/soaplet.rb, lib/test/unit/testcase.rb,
+ lib/test/unit/testsuite.rb: typo fix.
+
+Mon Apr 19 08:14:18 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_body): Allow for
+ #ifdef HAVE_PROTOTYPES
+
+Fri Apr 16 17:04:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_equal): always returns true or false, never
+ returns nil. [ruby-dev:23404]
+
+Fri Apr 16 12:38:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/drb/drb.rb (DRb::DRbUnknown::initialize): Exception#to_str is
+ deprecated.
+
+ * lib/drb/drb.rb (DRb::DRbServer::InvokeMethod::perform): multiple
+ value class changed.
+
+ * lib/drb/invokemethod.rb (DRb::DRbServer::InvokeMethod18Mixin::block_yield):
+ ditto.
+
+Fri Apr 16 08:27:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: skip linking when libraries to be preloaded not
+ compiled. [ruby-list:39561]
+
+Thu Apr 15 19:57:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (pst_success_p): new method Process::Status#success?.
+ [ruby-dev:23385]
+
+ * rubytest.rb: do nothing while cross-compiling, return status in
+ system independent style.
+
+Thu Apr 15 19:26:54 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (rb_push_glob): Dir.glob() should return nil if block is given.
+ (http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Dir)
+
+ * dir.c (push_braces): Dir.glob() should handle '{ }' nested more than
+ 3 times.
+
+ * dir.c (push_braces, rb_push_glob): Dir.glob() should handle escaped
+ '{' and '}' and ','.
+
+ [ruby-dev:23376]
+
+Thu Apr 15 17:12:13 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/gdbm/gdbm.c (Init_gdbm): define GDBM::READER, GDBM::WRITER,
+ GDBM::WRCREAT and GDBM::NEWDB.
+ (fgdbm_initialize): use specified read/write flag.
+
+Wed Apr 14 13:06:09 2004 Doug Kearns <djkea2@mugca.its.monash.edu.au>
+
+ * array.c, enum.c, eval.c, file.c, io.c, numeric.c, object.c, prec.c,
+ process.c, re.c, string.c: typos in RDoc comments. [ruby-core:02783]
+
+Wed Apr 14 11:29:56 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * numeric.c (flo_eq): workaround for bcc32's bug.
+ (ruby-bugs-ja:PR#594)
+
+Wed Apr 14 11:06:38 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::scan): Changed
+ behavior of :enddoc: -- it now unconditionally terminates
+ processing of the current file.
+
+Wed Apr 14 10:57:40 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * defines.h: include <net/socket.h> to get fd_set definition in BeOS.
+
+Tue Apr 13 23:00:55 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb: change pattern matching.
+ a === b -> a == b || a === b. [druby-ja:98]
+
+ * test/rinda/test_rinda.rb: ditto.
+
+Tue Apr 13 21:50:57 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/Makefile.sub (PHONY): Borland make disallows empty command
+ rules.
+
+Tue Apr 13 17:55:16 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (begin_transport): should not overwrite HTTP
+ request header. [ruby-list:39543]
+
+Tue Apr 13 16:48:00 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: merge POP3S patch. This patch is contributed by
+ Daniel Hobe.
+
+Tue Apr 13 02:56:29 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * common.mk: changed the order of ascii.c alphabetically.
+
+Mon Apr 12 19:11:21 2004 Eric Hodel <drbrain@segment7.net>
+
+ * gc.c (rb_gc_copy_finalizer): typo. [ruby-core:02774]
+
+Mon Apr 12 18:45:58 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_init_i): should return
+ a value.
+
+Mon Apr 12 10:39:50 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (rb_glob2, rb_glob, push_globs, push_braces, rb_push_glob):
+ fix memory leak. (leaked when block was interrupted)
+
+Sun Apr 11 19:10:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (require_libraries): restore source file/line after
+ statically linked extensions initialized. [ruby-dev:23357]
+
+Sun Apr 11 10:47:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::TopLevel::add_class_or_module): Toplevel
+ classes and modules are a special case too... (handle extending existing
+ classes with or without :enddoc:)
+
+Sat Apr 10 23:51:13 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::add_to): Implementation of :enddoc:
+ made one too many assumptions...
+
+Sat Apr 10 00:00:19 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/markup/simple_markup/inline.rb: Fix problem
+ with \_cat_<b>dog</b>
+
+Fri Apr 9 17:05:21 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (has_magic, find_dirsep): incomplete '[' matches no character
+ in Dir.glob. (follows File.fnmatch's behavior)
+
+ * dir.c (fnmatch_helper): incomplete escape is ignored in File.fnmatch.
+ (follows Dir.glob's behavior)
+
+ * dir.c (find_dirsep): '/' between '[' and ']' is ignored in Dir.glob.
+ (follows File.fnmatch with File::FNM_PATHNAME 's behavior)
+
+ * dir.c (find_dirsep): escaped slash '\/' loses its meaning as
+ directory separator in Dir.glob.
+
+ [ruby-dev:23291]
+
+Thu Apr 8 20:25:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): skip uncompiled extensions.
+
+ * lib/mkmf.rb (create_makefile): emit no rules for static library if
+ $static is nil, e.g., outside of ext/.
+
+ * lib/test/unit/ui/console/testrunner.rb (test_started): show test
+ name via $0.
+
+ * runruby.rb: set environments to use the compiled binary.
+
+ * test/runner.rb: do nothing while cross-compiling.
+
+ * test/drb/drbtest.rb, test/soap/calc/test_calc_cgi.rb: use envutil to
+ know ruby binary, and restore $: after require.
+
+ * test/ruby/envutil.rb: give priority to RUBY environment variable to
+ use just compiled binary and libraries.
+
+Thu Apr 8 19:03:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_binmode): inverted condition. [ruby-dev:23349]
+
+Thu Apr 8 18:22:00 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_s_list): return encoding list if no block
+ is given. [ruby-dev:23063]
+
+Wed Apr 7 15:29:24 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): use NUM2INT() instead of num2i32().
+
+Wed Apr 7 12:32:02 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb, lib/rss/1.0.rb: accepted rdf:resource or
+ resource attribute in rdf:li.
+ * test/rss/test_parser.rb: added test for above change.
+
+ * lib/rss/dublincore.rb: reverted style.
+
+ * lib/rss/xmlparser.rb: normalized XMLParser class hierarchy.
+
+Wed Apr 7 10:43:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk, */Makefile.sub (ext/extinit.o): OUTFLAG
+ doesn't work for object files on VC.
+
+ * */Makefile.sub (config.h): need SIZEOF_TIME_T now.
+
+Wed Apr 7 00:24:34 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb: fix hash tuple bug.
+
+ * lib/rinda/tuplespace.rb: ditto.
+
+ * test/rinda/test_rinda.rb
+
+Tue Apr 6 18:24:18 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_get_path): get path string via "to_path" method if
+ path object is not a string. [Ruby2]
+
+ * gc.c (rb_gc_call_finalizer_at_exit): do not free threads in the
+ exit finalizers.
+
+ * io.c (rb_io_reopen): should use rb_io_check_io().
+
+Tue Apr 6 16:46:09 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: check the size of time_t.
+
+ * time.c (time_add): new function.
+ (time_plus): use time_add.
+ (time_minus): use time_add.
+
+Tue Apr 6 13:11:48 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (raise_socket_error): never return.
+
+ * ext/socket/socket.c (make_hostent): must return value.
+
+Tue Apr 6 00:14:43 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (Init_Exception): remove Exception#to_str. [Ruby2]
+
+ * eval.c (error_print): should no call "to_str" anymore use
+ "message" method instead.
+
+ * io.c (rb_f_open): Kernel#open() calls "to_open" if the first
+ argument responds to it. [Ruby2]
+
+Tue Apr 6 00:13:43 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb: add require 'drb/drb'
+
+Mon Apr 5 22:25:32 2004 Tanaka Akira <akr@m17n.org>
+
+ * test/zlib/test_zlib.rb: new file.
+ (TestZlibGzipWriter#test_new_nil): test for [ruby-dev:23228].
+
+Mon Apr 5 22:16:23 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (assoc_list): {a: 1, b: 2} should be allowed.
+ [ruby-dev:23328]
+
+Mon Apr 5 19:43:40 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regexec.c: imported Oni Guruma 2.2.6.
+
+Mon Apr 5 19:39:10 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regparse.c, oniguruma.h: imported Oni Guruma 2.2.6.
+
+Mon Apr 5 12:12:09 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (raise_socket_error): some platforms don't have
+ EAI_SYSTEM.
+
+Mon Apr 5 08:18:23 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb: Remove leading ./ from file names so that cross
+ references work properly.
+
+Sun Apr 4 14:01:20 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/options.rb (Options::parse): Allow multiple -x options to
+ RDoc. Fix bug where files weren't being excluded properly
+
+Sat Apr 3 09:36:38 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/syck.h: version 0.43.
+
+Sat Apr 3 08:28:47 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/lib/gram.c: allow root-level inline collections.
+ [ruby-talk:94922]
+
+ * lib/yaml/rubytypes.rb (Symbol#to_yaml): emit symbols as implicits.
+ [ruby-talk:94930]
+
+Fri Apr 2 19:28:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/Makefile.sub (OUTFLAG): needed for static-linked-ext.
+
+Fri Apr 2 18:00:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): extract necessary variables for static link
+ from Makefile.
+
+ * lib/mkmf.rb (create_makefile): save preload and libpath for next
+ compile.
+
+Fri Apr 2 17:27:17 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (top_include): include in the wrapped load is done for
+ the wrapper, not for a singleton class for wrapped main.
+ [ruby-dev:23305]
+
+Fri Apr 2 15:13:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_eq): use temporary double variable to save the
+ result (internal float register may be bigger than 64 bits, for
+ example, 80 bits on x86). [ruby-dev:23311]
+
+Fri Apr 2 14:35:26 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): should generate unique identifier of the
+ pushing block. [ruby-talk:96363]
+
+Fri Apr 2 11:36:20 2004 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (Init_load): make $LOADED_FEATURES built-in.
+ [ruby-dev:23299]
+
+ * ruby.c (ruby_prog_init): make $PROGRAM_NAME built-in.
+
+ * lib/English.rb: remove $LOADED_FEATURES and $PROGRAM_NAME.
+
+Fri Apr 2 07:31:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: mistakingly removed do_not_reverse_lookup.
+ [ruby-list:39475]
+
+ * ext/socket/socket.c (make_hostent): fix memory leak, based on
+ the patch from HORIKAWA Hisashi <vzw00011@nifty.ne.jp>.
+
+Thu Apr 1 22:55:33 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb: Allow rdoc comments in
+ =begin rdoc/=end
+
+ * lib/rdoc/parsers/parse_rb.rb: Fix problem with comment in
+ top-level method being taken as file comment.
+
+Thu Apr 1 22:55:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_options.rb: Fix undefined variable warning.
+
+Thu Apr 1 19:58:37 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/mapping/{factory.rb,registry.rb}: fixed illegal mapped URI
+ object with soap/marshal.
+ added URIFactory class for URI mapping. BasetypeFactory checks
+ instance_variables when original mapping is not allowed (ivar must
+ be empty). Instance of URI have instance_variables but it must be
+ llowed whenever original mapping is allowed or not.
+
+Wed Mar 31 19:06:23 2004 Tanaka Akira <akr@m17n.org>
+
+ * time.c (year_leap_p): new function.
+ (timegm_noleapsecond): ditto.
+ (search_time_t): use timegm_noleapsecond instead of
+ mktime for first guess.
+
+Wed Mar 31 12:05:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (DelegateClass): define internal methods of the
+ result class, but not metaclass of the caller. [ruby-talk:96156]
+
+ * intern.h: provide proper prototypes. [ruby-core:02724]
+
+ * ruby.h: missing.h is now prerequisite to intern.h.
+
+Wed Mar 31 11:17:16 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): raises RangeError if uv is out of UTF8 value
+ range. [ruby-dev:23281]
+
+ * io.c (rb_io_binmode): stdio buffer should be empty when calling
+ IO#binmode. [ruby-talk:96155]
+
+Tue Mar 30 20:25:34 2004 Tanaka Akira <akr@m17n.org>
+
+ * time.c (search_time_t): limit guess range by mktime if it is
+ available. [ruby-dev:23274]
+
+Tue Mar 30 18:19:00 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): fix SEGV at retry in iterator's receiver.
+ [ruby-dev:23227]
+
+Mon Mar 29 20:17:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_exec): follow older behavior if close-on-exec is not
+ available.
+
+ * process.c (rb_fork): protect from exceptions while waiting failed
+ process, if status is given.
+
+Sun Mar 28 16:25:37 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (clean-local, distclean-local): remove
+ work files.
+
+ * win32/Makefile.sub (clean-local): ditto.
+
+Sun Mar 28 14:23:02 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: def m( arg ) -> def m(arg).
+
+Sun Mar 28 14:09:13 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb (auth): failed when account/password include "%".
+ [ruby-talk:95933]
+
+Sat Mar 27 21:40:41 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: permit extra semicolon in content-type field.
+
+Sat Mar 27 10:40:48 2004 Tanaka Akira <akr@m17n.org>
+
+ * (lib/pp.rb, lib/prettyprint.rb): define seplist in PP::PPMethods
+ instead of PrettyPrint.
+
+Sat Mar 27 01:47:09 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: trim tail space of each line. no user visible change.
+
+ * lib/rss/dublincore.rb: fixed class definition mismatch.
+
+ * sample/openssl/gen_csr.rb: fixed wrong usage text.
+
+Thu Mar 25 23:15:24 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_options.rb (RI::Options::show_version):
+ Add --version option
+
+Thu Mar 25 21:45:00 2004 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: Bug in + and - reported by Bret Jolly
+ fixed.
+
+Thu Mar 25 21:01:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.c (ruby_show_copyright): obtain copyright year from
+ RUBY_RELEASE_YEAR.
+
+ * win32/resource.rb: ditto.
+
+Thu Mar 25 19:37:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/resource.rb: default rubyw icon to ruby.ico, and let DLL also
+ include them.
+
+ * win32/resource.rb: include winver.h for older WindowsCE.
+
+Thu Mar 25 14:01:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, */Makefile.sub (lib, dll): phony targets.
+
+ * configure.in (ruby, miniruby): ditto.
+
+ * cygwin/GNUmakefile.in (rubyw): ditto.
+
+Thu Mar 25 04:16:18 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_options.rb (RI::Options): Add the --list-names option,
+ which dumps our all known names
+
+Thu Mar 25 03:57:47 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_util.rb (NameDescriptor::initialize): No longer
+ allow nested classes to be designated using "."--you must
+ now use "::"
+
+Thu Mar 25 02:00:18 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/html/one_page_html.rb (Page):
+ Fix to work with C modules.
+
+Wed Mar 24 20:49:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/uri.rb: Documented (thanks Dmitry V. Sabanin).
+ * lib/uri/common.rb: Ditto.
+ * lib/uri/ftp.rb: Ditto.
+ * lib/uri/generic.rb: Ditto.
+ * lib/uri/http.rb: Ditto.
+ * lib/uri/https.rb: Ditto.
+ * lib/uri/ldap.rb: Ditto.
+ * lib/uri/mailto.rb: Ditto.
+
+Wed Mar 24 18:48:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb ($ruby, $topdir, $hdrdir): should not be affected by
+ DESTDIR after installed.
+
+ * lib/mkmf.rb (dummy_makefile): default file lists to be cleaned.
+
+Wed Mar 24 12:32:56 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::handle_class_module):
+ Don't document methods if we don't know for sure the
+ class or module.
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_class):
+ Don't store documentation for singleton classes if we
+ don't know the real class.
+
+Wed Mar 24 11:11:26 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb (Generators::HTMLGenerator::load_html_template):
+ Allow non-RDoc templates by putting a slash in the template name
+
+Wed Mar 24 10:05:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile::_close): should not clear @tmpname
+ until the file is really removed. [ruby-core:02684]
+
+Wed Mar 24 04:12:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_cvar_get): new method Module#class_variable_get.
+
+ * object.c (rb_mod_cvar_set): ditto (Module#class_variable_set).
+
+Tue Mar 23 17:45:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_atfork): 1.9 warns no more for thread
+ termination. [ruby-dev:23212]
+
+Tue Mar 23 14:46:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, */Makefile.sub, common.mk (clean-local, distclean-local):
+ separate files under directories due to directory separator.
+
+ * */Makefile.sub (MKFILES): common.mk and */Makefile.sub should not be
+ removed.
+
+ * win32/Makefile.sub, wince/Makefile.sub: $* cannot appear in explicit
+ rules.
+
+ * cygwin/GNUmakefile.in: some mingw stuffs were missed.
+
+ * lib/mkmf.rb (create_makefile): Borland make wrongly removes braces
+ from command lines.
+
+ * bcc32/Makefile.sub: needs bcc32/mkexports.rb.
+
+Mon Mar 22 08:21:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, */Makefile.sub, common.mk: extract common portions.
+
+ * Makefile.in, cygwin/GNUmakefile.in, */Makefile.sub (RBCONFIG):
+ separated time stamp file for rbconfig.rb.
+
+ * configure.in: append common.mk to Makefile.
+
+ * mkconfig.rb: keep mtime of rbconfig.rb if unchanged.
+
+ * win32/rm.bat: remove multiple files.
+
+ * wince/mkconfig_wce.rb: use fake.rb instead.
+
+Sun Mar 21 22:17:35 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#virtual_host):
+ sort @virtual_hosts in address, port, host order.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server):
+ hostname should not be match if :ServerAlias is not given.
+
+Sun Mar 21 21:11:16 2004 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/shell/*: bug fix for Shell#system(command_line_string).
+
+Sun Mar 21 21:04:42 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.1: add -width option to .Bl for old groff.
+
+Sun Mar 21 18:57:37 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/*: Test::Unit::TestCase -> RSS::TestCase and
+ Test::Unit::Assertions -> RSS::Assertions.
+
+Sun Mar 21 18:48:20 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/{rss,dublincore,syndication}.rb: handled W3CDTF correctly.
+
+Sun Mar 21 18:15:29 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_xml-stylesheet.rb: added tests for xml-stylesheet.
+
+ * lib/rss/xml-stylesheet.rb: added xml-stylesheet parsing
+ function.
+
+Sat Mar 20 23:51:03 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (rb_require_safe): preserve old ruby_errinfo.
+ [ruby-talk:95409]
+
+ * eval.c (rb_f_raise): should not clear backtrace information if
+ exception object already have one.
+
+Sat Mar 20 21:21:03 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb: rm -rf $extout, not extout.
+
+Sat Mar 20 15:25:36 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/html/html.rb (RDoc::Page): Force
+ page background to white.
+
+Sat Mar 20 09:33:36 2004 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: _parse() now accepts fractional
+ part of second minute that follows a comma or a full stop.
+
+Fri Mar 19 21:06:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assoc_list): allow {sym: val} style Hash. [Ruby2]
+ this change is done by Nobuyoshi Nakada <nobu@ruby-lang.org>.
+
+Fri Mar 19 15:15:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_set): class variables become private to the
+ particular class/module. [Ruby2]
+
+ * variable.c (rb_cvar_get): ditto.
+
+ * variable.c (rb_cvar_defined): ditto.
+
+Fri Mar 19 11:31:32 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb ($beos, $solaris): add OS flags.
+
+ * lib/mkmf.rb (RUBY): / is not recognized as path separator on
+ nmake/bmake. [ruby-list:39388]
+
+ * lib/mkmf.rb (CLEANLIBS, CLEANOBJS): should remove *.exp with *.so.
+
+Fri Mar 19 01:55:57 2004 Mauricio Fernandez <batsman.geo@yahoo.com>
+
+ * io.c (rb_io_sync): need not to check writable. [ruby-core:02674]
+
+Thu Mar 18 19:47:44 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb, rubytest.rb: do not depend on srcdir.
+
+Thu Mar 18 18:50:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: no longer embed srcdir and compile_dir into
+ rbconfig.rb.
+
+ * ext/extmk.rb, lib/mkmf.rb: obtain top_srcdir and topdir from library
+ paths.
+
+Thu Mar 18 17:46:35 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: do not undef :to_a.
+
+Thu Mar 18 16:22:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_eq): avoid false positive by using scope and
+ dyna_vars. no longer use frame.uniq.
+
+ * eval.c (proc_arity): arity is now defined as number of
+ parameters that would not be ignored. i.e. Proc.new{}.arity
+ returns zero. update test suites too.
+
+Thu Mar 18 15:27:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: remove specialized version of rb_Array(). use simple
+ one defined in object.c.
+
+ * object.c (Init_Object): remove Kernel#to_a.
+
+ * enum.c (enum_zip): use "to_a" instead of "to_ary".
+
+Wed Mar 17 00:22:03 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * oniguruma.h: imported Oniguruma 2.2.5.
+ * regparse.c: ditto.
+
+Tue Mar 16 11:14:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (fnmatch_helper): File.fnmatch('\.', '.') should return true.
+ (Rev1.112 lost compatibility)
+
+ * dir.c (fnmatch_helper): File.fnmatch('\/', '/', File::FNM_PATHNAME)
+ should return true. (Rev1.112 lost compatibility)
+
+ * dir.c (fnmatch): File.fnmatch('**/.boo', '.foo/.boo',
+ File::FNM_PATHNAME) should return false because of leading period.
+
+Mon Mar 15 17:01:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_initialize): calling 'to_str' each time just for
+ type checking is too heavy. [ruby-core:02661]
+
+Mon Mar 15 10:14:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SocketForwarder):
+ add do_not_reverse_lookup.
+
+Mon Mar 15 07:39:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): should not re-submit TAG_BREAK if this
+ yield is not break destination. [ruby-dev:23197]
+
+Sun Mar 14 22:07:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_raise): err at unstarted thread. (PR#1302)
+
+Sat Mar 13 14:56:32 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/ut_drb.rb: use 'druby://localhost:0'. [ruby-dev:23078]
+
+ * test/drb/ut_eval.rb: ditto.
+
+ * test/drb/ut_large.rb: ditto.
+
+ * test/drb/ut_safe1.rb: ditto.
+
+ * test/drb/ut_drb_drbssl.rb: use 'drbssl://localhost:0'.
+
+Fri Mar 12 23:52:56 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (fnmatch): directory recursion '**/' can be used with
+ File::FNM_PATHNAME. [ruby-dev:22901]
+
+ * dir.c (fnmatch, fnmatch_helper): only '/' is accepted as path
+ separator even in DOSISH environment. [ruby-dev:22974]
+ [ruby-list:39337]
+
+ * dir.c (fnmatch_helper): faster '*' matching.
+
+Fri Mar 12 20:19:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_noreturn): default for platforms not support
+ prototypes.
+
+ * ruby.c (ruby_init_loadpath): buffer for path name should have
+ MAXPATHLEN.
+
+ * lib/mkmf.rb (configuration): include topdir and hdrdir in VPATH.
+
+ * lib/mkmf.rb (create_makefile): default dependency rule.
+
+Fri Mar 12 07:35:36 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb (WEBrick::Config::General): add
+ :DoNotReverseLookup.
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#accept): call
+ do_not_reverse_lookup for each socket if :DoNotReverseLookup
+ is set. [ruby-code:02357]
+
+Wed Mar 10 22:26:25 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_dir): should handle symlink correctly.
+ This patch is contributed by Christian Loew. [ruby-talk:94635]
+
+Wed Mar 10 16:28:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (return_jump): set return value to the return
+ destination. separated from localjump_destination().
+
+ * eval.c (break_jump): break innermost loop (or thread or proc).
+
+ * eval.c (rb_yield_0): set exit_value for block break.
+
+Wed Mar 10 16:00:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_s_def): Struct::new executes block with
+ generated struct class. [ruby-talk:02606]
+
+Wed Mar 10 15:58:43 2004 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * eval.c (eval): Only print backtrace if generating the backtrace
+ doesn't generate an exception. [ruby-core:02621]
+
+Wed Mar 10 10:15:16 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (opt_W_getter): get rid of warning.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub:
+ fixed dependency.
+
+Tue Mar 9 13:04:26 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_ungetc): raise IOError instead of calling
+ rb_sys_fail(). [ruby-talk:23181]
+
+Tue Mar 9 10:03:40 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub:
+ replaced regex.c entry with Oniguruma files.
+
+Tue Mar 9 01:09:46 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * Makefile.in: replaced regex.c entry with Oniguruma files.
+
+Mon Mar 8 23:16:07 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: HTTPHeader did not initialized correctly.
+
+ * lib/net/http.rb (connect): does same debug output.
+
+Mon Mar 8 21:38:18 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (add_header): remove warning. [ruby-dev:23170]
+
+Mon Mar 8 21:09:39 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (range): Cancel change for incomplete '['. More discussion
+ is needed.
+
+Mon Mar 8 19:35:13 2004 akira yamada <akira@arika.org>
+
+ * lib/uri/common.rb (URI::REGEXP::PATTERN::HOSTPORT): (?:#{PORT})
+ -> (?::#{PORT}). [ruby-dev:23170]
+
+Mon Mar 8 15:03:24 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (range): treat incomplete '[' as ordinary character (like
+ has_magic does). fix buffer overrun at incomplete escape like '[\'.
+
+Mon Mar 8 13:35:32 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * regparse.c (parse_exp): need to separate initialization for bcc32.
+ [ruby-dev:23169]
+
+ * oniguruma.h (ONIG_EXTERN): check __GNUC__ instead of __CYGWIN__.
+
+Mon Mar 8 01:05:55 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb (WEBrick::Config::HTTP): rename :RequestHander
+ to :RequestCallback and add new option :ServerAlias.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): use
+ :RequestCallback and warn if :RequestHandler is in server's option.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should print
+ error message for WEBrick::HTTPSataus::Error.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server):
+ lookup for hostname from :ServerAlias if the req.host is not match
+ to :ServerName.
+
+ * lib/webrick/httpservlet.rb (WEBrick::HTTPServlet::CGIHandler#do_GET):
+ use $?.exitstatus and refine log message.
+
+Sun Mar 7 16:22:26 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * Makefile.in (lex.c): use $? instead of $<.
+
+ * lib/pstore.rb (commit_new): use FileUtils.copy_stream for Cygwin.
+ [ruby-dev:23157]
+
+Sun Mar 7 05:34:42 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: HTTPHeader keeps its header fields as an array.
+
+ * lib/net/http.rb: new method HTTPHeader#add_header, get_fields.
+
+ * lib/net/http.rb: new method HTTPHeader#content_length=.
+
+ * lib/net/http.rb: new method HTTPHeader#content_type, main_type,
+ sub_type, type_params, content_type=, set_content_type.
+
+ * lib/net/http.rb (HTTPHeader#basic_encode): result of pack(m) may
+ contain multiple LFs.
+
+Sun Mar 7 03:11:00 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: new method Net::HTTPRequest#body(=).
+
+ * lib/net/http.rb: new method Net::HTTPRequest#body_stream(=).
+
+Sun Mar 7 02:06:07 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: spin off https code again.
+
+ * lib/net/https.rb: new file.
+
+ * ext/openssl/lib/net/https.rb: removed. moved to net/https with
+ slight modifications.
+
+ * ext/openssl/lib/net/protocols.rb: removed. merged with net/http.
+
+ * lib/net/protocol.rb: new class BufferedIO.
+
+ * lib/net/protocol.rb: InternetMessageIO < BufferedIO.
+
+ * lib/net/protocol.rb: BufferedIO.new takes an IO.
+
+ * lib/net/smtp.rb: follow InternetMessageIO's change.
+
+ * lib/net/pop.rb: ditto.
+
+Sun Mar 7 00:55:03 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: remove method: InternetMessageIO#address,
+ port, ip_address, read_timeout(=), socket.
+
+ * lib/net/protocol.rb: simplify code.
+
+ * lib/net/protocol.rb: apply latest coding style.
+
+Sat Mar 6 15:15:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/strscan/depend: depends on re.h and regex.h.
+
+ * ext/strscan/strscan.c: no version check needed.
+
+ * ext/strscan/strscan.c (strscan_init_copy): struct re_registers must
+ not be bitwise copied.
+
+Sat Mar 6 11:14:33 2004 David Black <dblack@wobblini.net>
+
+ * lib/scanf.rb: refixed the previous fix in IO#block_scanf
+
+Sat Mar 6 10:49:40 2004 David Black <dblack@wobblini.net>
+
+ * lib/scanf.rb: fixed a logic glitch in IO#block_scanf
+
+Sat Mar 6 02:00:19 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: net/https is merged.
+
+ * ext/openssl/lib/net/https.rb: ditto.
+
+Sat Mar 6 00:39:21 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * oniggnu.h: imported from Oniguruma library.
+ * oniguruma.h: ditto.
+ * regcomp.c: ditto.
+ * regenc.c: ditto.
+ * regenc.h: ditto.
+ * regerror.c: ditto.
+ * regex.c: ditto.
+ * regexec.c: ditto.
+ * reggnu.c: ditto.
+ * regint.h: ditto.
+ * regparse.c: ditto.
+ * regparse.h: ditto.
+ * ascii.c: ditto.
+ * euc_jp.c: ditto.
+ * sjis.c: ditto.
+ * utf8.c: ditto.
+
+ * MANIFEST: added Oniguruma files listed above.
+
+ * LEGAL: added Oniguruma license.
+
+ * regex.h: now includes oniggnu.h.
+
+ * re.c: applied Oniguruma patch.
+
+Fri Mar 5 23:13:08 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: support WebDAV methods, PROPPATCH, LOCK,
+ UNLOCK, OPTIONS, PROPFIND, DELETE, MOVE, COPY, MKCOL.
+ This patch is contributed by Tatsuki Sugiura.
+
+Fri Mar 5 20:58:37 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: Net::HTTPResponse#response is obsolete.
+ [ruby-core:02592]
+
+ * lib/net/http.rb: Net::HTTPResponse#header is obsolete.
+
+ * lib/net/http.rb: Net::HTTPResponse#read_header is obsolete.
+
+Fri Mar 5 20:10:57 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: new method StringScanner#initialize_copy
+ to allow #dup and #clone.
+
+ * test/strscan/test_strscan.rb: test StringScanner#dup.
+
+Fri Mar 5 19:42:09 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTPResponse#to_ary): should return an object
+ which does not respond to #to_ary. It causes infinite loop in
+ puts. [ruby-core:02578]
+
+Fri Mar 5 00:51:35 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/test/unit.rb: Move RDoc documentation so that you can
+ now say 'ri Test::Unit'
+
+Thu Mar 4 22:31:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in: miniruby is not needed for cross compile.
+
+ * configure.in (PREP): miniruby for native compile.
+
+Thu Mar 4 11:46:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/drb/extservm.rb (DRb::ExtServManager#invoke_service_command):
+ detach server processes to get rid of zombies.
+
+Thu Mar 4 10:41:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (T_MASK): save 1 bit in flags bits by shifting T_xxx
+ values.
+
+Thu Mar 4 08:08:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c: get rid of warnings.
+
+ * lib/rss/taxonomy.rb: ditto.
+
+ * lib/rdoc/ri/ri_formatter.rb: ditto.
+
+ * test/ruby/test_assignment.rb: ditto.
+
+Thu Mar 4 01:17:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/ri_display.rb (DefaultDisplay::page): wait until the
+ pager terminates.
+
+Wed Mar 3 13:10:56 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_hash): new method. [ruby-talk:93968]
+
+ * eval.c (proc_eq): do not compare dyna_vars.
+
+ * eval.c (proc_hash): new method.
+
+ * eval.c (rb_yield_0): protect break/return from within orphan (or
+ lambda) Proc object.
+
+Wed Mar 3 09:52:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb ($topdir): use compile_dir only when not installed yet.
+ [ruby-talk:94098]
+
+Wed Mar 3 01:18:52 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/converter.rb: handled Uconv::Error.
+
+ * lib/rss/dublincore.rb: DublincoreModel -> DublinCoreModel
+
+Wed Mar 3 00:59:30 2004 David Black <dblack@wobblini.net>
+
+ * lib/scanf.rb: soak_up_spaces only ungetc's non-space last
+ character
+
+ * lib/scanf.rb: IO#block_scanf now returns partial last iteration
+ array if format string matches partly
+
+Tue Mar 2 16:30:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): erred program name should be reported by
+ exceptions, instead of the first argument.
+
+ * process.c (rb_spawn): ditto.
+
+ * process.c (proc_spawn_v): use first argument as program name.
+
+ * win32/win32.c (rb_w32_aspawn): ditto.
+
+ * win32/win32.c (CreateChild): search executable file if no program
+ name given.
+
+ * lib/drb/extservm.rb (invoke_service_command): use Process.spawn.
+ [ruby-dev:23103]
+
+ * lib/rdoc/ri/ri_display.rb (setup_pager): use IO.popen.
+ [ruby-dev:23086], [ruby-dev:23103]
+
+ * lib/rdoc/diagram.rb (convert_to_png): ditto.
+
+ * lib/rdoc/generators/chm_generator.rb (compile_project): ditto.
+
+Tue Mar 2 12:24:03 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub, wince/Makefile.sub (config.h): shouldn't check
+ defined? NORETURN. [ruby-dev:23100]
+
+Tue Mar 2 11:28:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (test_ljump): cannot use
+ assert_nothing_raised due to passing block.
+
+Tue Mar 2 06:23:14 2004 David Black <dblack@wobblini.net>
+
+ * lib/scanf.rb: fixed Kernel#scanf to propagate code block
+
+Mon Mar 1 23:25:40 2004 David Black <dblack@wobblini.net>
+
+ * lib/scanf.rb: Partial fix so STDIN#scanf works with new
+ STDIN#pos behavior
+
+Mon Mar 1 19:42:05 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/setup.mak: configure's default is "--enable-install-doc"
+
+ * win32/setup.mak: ditto.
+
+Mon Mar 1 12:24:10 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_alias):
+ Allow aliases to have parentheses
+
+Sun Feb 29 23:14:53 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_class):
+ Handle :nodoc: on singleton classes.
+
+Sat Feb 28 21:50:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/Makefile.sub, bcc32/README.bcc32, bcc32/configure.bat,
+ bcc32/setup.mak: new configure scheme. use ``configure --prefix=dir''
+ instead of ``make DESTDIR=dir install''.
+ --with-static-linked-ext support on bccwin32. [ruby-dev:23034]
+
+Sat Feb 28 21:50:20 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/setup.mak: "configure --disable-install-doc" is now working.
+
+ * win32/setup.mak: ditto.
+
+Sat Feb 28 15:09:49 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/configure.bat: append missing label ":exit".
+
+ * bcc32/configure.bat: fix typo.
+
+Sat Feb 28 10:31:03 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * MANIFEST: add test_erb.rb
+
+ * lib/erb.rb, test/erb/test_erb.rb: don't forget filename,
+ if both filename and safe_level given. [ruby-dev:23050]
+
+Sat Feb 28 01:08:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): should not allow symbol for invalid global
+ variable (e.g. `:$-)`). [ruby-core:02518]
+
+Fri Feb 27 20:37:09 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): no orphan block check is needed when pcall
+ is true.
+
+ * eval.c (localjump_destination): update localjump condition.
+
+Fri Feb 27 02:10:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (localjump_destination): lambda should not interfere
+ return from the yielded block.
+
+Fri Feb 27 00:53:49 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb, test/drb/drbtest.rb: require drb/eq.rb by default
+
+Thu Feb 26 12:15:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (make_cmdvector): adjust successive double-quote
+ handling.
+
+Thu Feb 26 09:42:56 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (delete_if_i): use st_delete_safe() (via
+ rb_hash_delete()) instead of returning ST_DELETE.
+
+Thu Feb 26 02:35:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_f_exec): get rid of SEGV when exec failed for command
+ in single string.
+
+Wed Feb 25 21:17:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (obj_free), io.c (rb_io_fptr_finalize), rubyio.h (OpenFile):
+ sharing OpenFile.
+
+ * io.c (rb_io_initialize): accept IO instance. [ruby-dev:22195]
+
+Wed Feb 25 21:16:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (with_destdir): should return the given argument if no
+ DESTDIR is given.
+
+ * instruby.rb: use path name expansion of cmd.exe.
+
+Wed Feb 25 20:44:45 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi-lib.rb, lib/getopts.rb, lib/importenv.rb, lib/parsearg.rb:
+ warn with caller position.
+
+ * test/rss/test_content.rb, test/rss/test_dublincore.rb,
+ test/rss/test_syndication.rb, test/rss/test_trackback.rb: use cgi
+ instead of cgi-lib.
+
+Tue Feb 24 18:42:03 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (glob_helper): '**/' should not match leading period
+ unless File::FNM_DOTMATCH is set. (like '*/') [ruby-dev:23014]
+
+Tue Feb 24 18:03:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_file.rb (test_fnmatch): test for dir.c:1.108.
+
+Tue Feb 24 17:07:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (fnmatch): File.fnmatch with File::FNM_PATHNAME was broken
+ for the pattern including '*' followed by '/'.
+
+Tue Feb 24 13:22:21 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc::normalized_file_list): Attempt to get better
+ heuristics on which files to include and exclude. Now only include
+ non-standard files if they are explicitly named in ARGV.
+
+Tue Feb 24 07:23:30 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Deal with :stopdoc: when
+ choosing a default main page to display (ie. don't select a page
+ if we don't have documentation for it).
+
+Tue Feb 24 06:40:14 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RubyLex::identify_identifier): Handle
+ class variables in code listings
+
+Tue Feb 24 06:32:27 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_aliases): Handle
+ aliases in C files.
+
+Tue Feb 24 06:16:22 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc::document): Now create op dir _before_
+ parsing files.
+
+Tue Feb 24 06:08:47 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_constant):
+ Start collecting text of constant values earlier: was missing
+ values in output if there was no space after '='
+
+Tue Feb 24 06:08:25 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Escape contant values.
+
+Tue Feb 24 03:45:06 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_config.c (ossl_config_each): add new method
+ OpenSSL::Config#each. it iterates with section name, field name
+ and value.
+
+ * ext/openssl/ossl_config.c (Init_ossl_config): include Enumerable.
+
+Mon Feb 23 09:09:44 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (parse_args): use optparse instead of getopts.
+
+ * instruby.rb (DOSISH): embedded path in batch files should not be
+ prefixed by DESTDIR. [ruby-core:02186]
+
+Sun Feb 22 14:58:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: $extstatic is Array or nil now. [ruby-talk:93383]
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub: terminate options.
+
+ * lib/mkmf.rb (init_mkmf): $INCFLAGS also should be lazy-evaluated.
+
+Sun Feb 22 13:05:37 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/mailto.rb (URI::MailTo::to_s): should include fragment.
+
+Sun Feb 22 12:58:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: use optparse instead of getopts.
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub: ditto.
+
+Sun Feb 22 09:51:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * re.c: corrected documentation format (rb_reg_initialize_m)
+
+Sat Feb 21 22:41:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * ext/zlib/zlib.c: documented, but needs more effort.
+
+Sat Feb 21 14:33:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: prefer relative path. [ruby-talk:93037]
+
+Sat Feb 21 11:12:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/os2.c, missing/x68.c: typo fix. pointed out by greentea.
+
+Fri Feb 20 19:11:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct#initialize_copy): should not share
+ members. [ruby-dev:22966]
+
+Fri Feb 20 18:59:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/init.rb (IRB::IRB.parse_opts): add -I option to
+ irb. [ruby-dev:39243]
+
+Fri Feb 20 12:55:27 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): fix typo.
+
+ * win32/win32.c (CreateChild): first argument to CreateProcess() must
+ have path, not just basename.
+
+Thu Feb 19 23:24:16 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb (Generators::HtmlClass::build_attribute_list):
+ Support visibility modifiers for attributes
+
+Thu Feb 19 22:39:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/ostruct.rb: documented
+
+Thu Feb 19 22:39:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/rinda/test_rinda.rb: DRb.start_service only once in testsuites.
+ DRb.start_service could handle this.
+
+Thu Feb 19 22:24:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/mapping/rubytypeFactory.rb: should not dump singleton class.
+ [ruby-dev:22588]
+ c = class << Object.new; class C; self; end; end; SOAPMarshal.dump(c)
+
+Thu Feb 19 18:08:18 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * ext/strscan/strscan.c: improved documentation
+
+Thu Feb 19 18:08:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c, win32/win32.h: fixed prototypes.
+
+ * win32/win32.c (wait): same as waitpid() with -1.
+
+Thu Feb 19 02:34:28 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/markup/simple_markup/preprocess.rb (SM::PreProcess::include_file):
+ Only strip comment markers if all lines start with comments.
+
+Thu Feb 19 03:05:49 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: StringScanner#restsize is obsolete;
+ use #rest_size instead.
+
+ * ext/strscan/strscan.c: StringScanner#matchedsize is obsolete;
+ use #matched_size instead.
+
+Thu Feb 19 02:42:19 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: don't use rb_eval_string, it defines
+ classes under the module when required in module clauses.
+ [ruby-dev:22951]
+
+Thu Feb 19 02:37:28 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: merge documentation from 1.8 branch.
+ Thanks Gavin Sinclair.
+
+Thu Feb 19 00:20:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/cgi-lib.rb: deprecated after 1.8.1
+
+ * lib/getopts.rb: ditto
+
+ * lib/importenv.rb: ditto
+
+ * lib/parsearg.rb: ditto
+
+Thu Feb 19 00:11:05 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/markup/simple_markup/preprocess.rb (SM::PreProcess::handle):
+ Strip extraneous space from filenames in :include:
+
+Wed Feb 18 22:53:41 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/unix.rb: remove O_NONBLOCk, thanks \ay
+
+Wed Feb 18 22:42:19 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: improt test_rinda.rb
+
+Wed Feb 18 22:03:11 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/*: should not depend on $KCODE.
+
+Wed Feb 18 18:07:09 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_sprintf.rb: added tests.
+
+Wed Feb 18 17:18:01 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c: need to include <olectl.h> on Cygwin.
+
+Wed Feb 18 10:40:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): sign bit extension should not be done
+ if FPLUS flag is specified. [ruby-list:39224]
+
+ * sprintf.c (rb_f_sprintf): do not prepend dots for negative
+ numbers if FZERO is specified. [ruby-dev:39218]
+
+Wed Feb 18 10:23:34 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): clean up.
+
+Tue Feb 17 23:40:34 2004 Guy Decoux <ts@moulon.inra.fr>
+
+ * sprintf.c (rb_f_sprintf): preserve original val for
+ format_integer. [ruby-talk:92975]
+
+Tue Feb 17 23:28:45 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/marshal/test_marshal.rb, test/ruby/test_marshal.rb: do $:
+ trick to share the testcase test/ruby/marshaltestlib.rb.
+
+Tue Feb 17 23:13:23 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/marshaltestlib.rb: common marshal testcase added.
+
+ * test/ruby/test_marshal.rb: use above testsuite.
+
+ * test/soap/marshal/test_marshal.rb: ditto.
+
+ * test/soap/marshal/cmarshal.rb: removed (not used).
+
+Tue Feb 17 19:34:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): $extout_prefix doesn't vary for libraries.
+
+ * ext/extmk.rb (extmake): remove compile directory if empty.
+
+ * ext/extmk.rb (parse_args) lib/mkmf.rb (create_makefile): move
+ initialization of $extout_prefix from lib/mkmf.rb. [ruby-dev:22928]
+
+ * ext/extmk.rb: clear ext and extout directory when cleaning.
+
+ * lib/mkmf.rb (CLEANLIBS): should be under $(arch) directory.
+
+Tue Feb 17 18:02:10 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: ScanError may be (wrongly) garbage
+ collected. (thanks Gavin Sinclair)
+
+ * ext/strscan/strscan.c: move ::ScanError to StringScanner::Error.
+ ::ScanError is also defined for backward compatibility.
+
+ * ext/strscan/strscan.c: #peep is obsolete, use #peek.
+
+ * ext/strscan/strscan.c: #empty? is obsolete, use #eos?.
+
+ * ext/strscan/strscan.c: #clear is obsolete, use #terminate.
+
+ * ext/strscan/strscan.c: #getbyte is obsolete, use #get_byte.
+
+Tue Feb 17 12:12:47 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (parse_args): delay expanding $(extout) until invoking
+ make.
+
+ * lib/mkmf.rb (CLEANLIBS): should remove files have specific
+ extensions.
+
+Tue Feb 17 11:33:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rss/rexmlparser.rb: REXML version may be 4 digits.
+
+Tue Feb 17 10:45:59 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_emitter_end_object): takes only one arg.
+
+Tue Feb 17 07:48:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rexml/encodings/SHIFT_JIS: wrong library name.
+
+Tue Feb 17 01:35:28 2004 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_eval): care that another thread replace NODE_DREGX_ONCE
+ to NODE_LIT. [ruby-dev:22920]
+
+Tue Feb 17 01:20:57 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: new module FileUtils::DryRun.
+
+Mon Feb 16 23:28:14 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: document reduction. [ruby-core:02429]
+
+ * test/yaml/test_yaml.rb: added 0..1 test with "0".."1" on display.
+ it should be defined that the specification about what kind of Range
+ is supported in ruby's custom type in YAML.
+
+Mon Feb 16 22:22:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/generator.rb: corrected doc format
+
+ * lib/rinda/rinda.rb: added documentation (from Hugh Sasse)
+
+ * lib/rinda/tuplespace.rb: ditto
+
+ [Note: rinda files actually committed Wed Feb 18 07:27:00 2004]
+
+Mon Feb 16 20:28:52 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: show more warnings. (referring to mingw)
+
+ * bcc32/setup.mak: ditto.
+
+Mon Feb 16 18:35:58 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): should create *.pdb on ext/,
+ not .ext/.
+
+ * win32/Makefile.sub (config.status): convert the name of import
+ library.
+
+ * lib/mkmf.rb (create_makefile): now don't need to remove
+ $(TARGET).lib.
+
+Mon Feb 16 15:45:22 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check functions, fork spawnv.
+
+ * io.c (rb_io_s_popen): accept argv not only single command line.
+
+ * process.c (rb_proc_exec_n): export.
+
+ * process.c (rb_check_argv): check if arguments are safe to invoke.
+
+ * process.c (rb_fork): retry to fork.
+
+ * process.c (rb_spawn): spawn child process asynchronously.
+
+ * process.c (rb_f_system): raise an exception if the command could not
+ execute.
+
+ * win32/win32.c (rb_w32_argv_size): count necessary size for joined
+ arguments.
+
+ * win32/win32.c (rb_w32_join_argv): join arguments with quoting.
+
+ * win32/win32.c (rb_w32_pipe_exec, rb_w32_spawn, rb_w32_aspawn):
+ accept program name adding to command line.
+
+Mon Feb 16 15:18:33 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/racc/parser.rb: add note for Racc full package.
+
+Mon Feb 16 15:13:01 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/README: new file.
+
+ * ext/racc/cparse/MANIFEST: add README.
+
+Mon Feb 16 12:29:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_s_list): new method Iconv.list
+ (libiconv only).
+
+Mon Feb 16 10:29:52 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (CompareImpl): File.fnmatch and Dir.glob get better performance
+ in Win32. This is achieved by calling downcase() for single-byte
+ characters. (CharLower() is slower than downcase())
+
+Mon Feb 16 02:14:29 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: should warn suspicious pointer conversion.
+
+ * bcc32/setup.mak: ditto.
+
+Sun Feb 15 20:56:22 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (push_braces): remove wrong const. [ruby-dev:22891]
+
+Sun Feb 15 20:41:15 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * sample/soap/calc/httpd.rb, sample/soap/exchange/httpd.rb,
+ sample/soap/sampleStruct/httpd.rb, sample/wsdl/googleSearch/httpd.rb:
+ use soap/property instead of getopts for configuring DocumentRoot
+ and port# of httpd. see samplehttpd.conf below.
+
+ * sample/soap/calc/samplehttpd.conf,
+ sample/soap/exchange/samplehttpd.conf,
+ sample/soap/sampleStruct/samplehttpd.conf,
+ sample/wsdl/googleSearch/samplehttpd.conf: added.
+
+Sun Feb 15 19:13:33 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/tuplespace.rb: read(tpl,0), raise RequestExpiredError
+ if not found.
+
+Sun Feb 15 15:48:57 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add IDispatch wrapper in val2variant.
+ Thanks, arton.
+
+Sun Feb 15 15:23:29 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ruby.h, dir.c (rb_glob): add const.
+
+Sun Feb 15 01:46:05 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/mkmf.rb: absolute path of ruby is assigned to $(RUBY).
+ [ruby-dev:22870]
+
+Sat Feb 14 23:59:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: use fileutils.rb instead of ftools.rb.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub (config.h): define
+ STACK_GROW_DIRECTION.
+
+ * bcc32/Makefile.sub (config.h): add newer checks.
+
+ * wince/Makefile.sub (config.h): define NEED_IO_SEEK_BETWEEN_RW.
+
+Sat Feb 14 23:26:27 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/un.rb: use OptionParser instead of getopts.
+
+Sat Feb 14 11:28:14 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * sample/drb/*: import lib/drb/sample
+
+Sat Feb 14 11:14:12 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: add pretty_print, thanks gotoken.
+
+Fri Feb 13 21:51:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/fileutils.rb: slightly improved documentation (sync with 1.8)
+
+Fri Feb 13 19:57:01 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_trackback.rb: added tests for TrackBack with RSS
+ 2.0.
+
+ * test/rss/common.rb: added methods make RSS 2.0.
+
+ * lib/rss/trackback.rb: TrackBack API is decided.
+
+ * lib/rss/rss.rb: RSS::VERSION 0.0.7 -> 0.0.8.
+
+ * lib/rss/parser.rb, lib/rss/rss.rb: replaced $DEBUG by RSS::DEBUG.
+
+ * lib/rss/2.0.rb: removed RSS 2.0 URI. Because RSS 2.0 doesn't
+ have URI.
+
+Fri Feb 13 14:41:00 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: en-bugged at last commit (Feb 11 23:24:22 2004)
+
+Fri Feb 13 12:26:37 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: rescue SystemCallError instead
+ of EINVAL. File.link may raise EACCES on network file systems.
+
+Fri Feb 13 05:18:58 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: File.link raises EINVAL on
+ Win9x. [ruby-dev:22713]
+
+Thu Feb 12 21:49:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/ftools.rb: documented
+
+Thu Feb 12 21:19:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/base64.rb: added and tidied documentation
+
+Thu Feb 12 20:45:01 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb (WriteAdapater#puts): must append "\n" to
+ the string, don't prepend. (ruby-bugs:PR#1280)
+
+Thu Feb 12 20:31:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_tmpsrc): cpp32 of Borland C++ ignores #error
+ directives in DOS line-ending files at all.
+
+Thu Feb 12 15:23:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rparen): ignore preceding newlines to right parentheses.
+ (ruby-bugs:PR#1221) [ruby-dev:22858]
+
+Thu Feb 12 14:17:43 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set ac_cv_func_link to yes to enable link() on MinGW.
+ [ruby-dev:22241]
+
+Thu Feb 12 13:32:49 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (link): raise NotImplementedError on Win9X.
+ contributed by Tietew. [ruby-dev:22713]
+
+ * win32/win32.c, win32/win32.h (link): add const.
+
+Thu Feb 12 09:56:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/lib/tk.rb (TkComm::tk_split_list): suppress a warning.
+
+Thu Feb 12 02:23:56 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: use assert_raise instead of assert_raises.
+
+ * lib/pp.rb: ditto.
+
+ * lib/time.rb: ditto.
+
+ * lib/tsort.rb: ditto.
+ use TSortHash and TSortArray instead of Hash and Array in test.
+
+Wed Feb 11 23:24:22 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: properly treat a Tcl/Tk's string with escaping
+ special characters.
+
+Tue Feb 10 20:49:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (method_proc): return bound Proc object. [ruby-dev:22854]
+
+ * eval.c (rb_mod_define_method): bind method body itself for Method
+ object.
+
+ * node.h (NODE_DMETHOD): deprecated.
+
+ * object.c (rb_class_inherited_p): export.
+
+Tue Feb 10 16:43:50 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (umethod_bind): purge unused check. [ruby-dev:22850]
+
+Tue Feb 10 14:33:08 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_match): raise TypeError when both arguments are
+ strings. [ruby-dev:22851]
+
+ * string.c (rb_str_match2): removed.
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub,
+ wince/Makefile.sub (string.c): now not depend on version.h.
+
+Mon Feb 9 17:46:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub, configure.in,
+ runruby.rb: run rdoc, test and so on with compiled extension
+ libraries. [ruby-dev:22688]
+
+ * ext/extmk.rb, lib/mkmf.rb: make extension libraries in separated
+ directory, similar to the actual directory structure.
+
+ * lib/fileutils.rb (FileUtils.copy_file): use the mode of the original
+ file to create new file.
+
+ * lib/rdoc/ri/ri_paths.rb (RI::Paths::SYSDIR): get rid of unexpected
+ influence by environment variable.
+
+ * bcc32/configure.bat, win32/configure.bat: add install-doc options.
+
+ * win32/win32.c, win32/win32.h (rb_w32_fstat): fix Borland C runtime
+ bug which returns wrong mode. [ruby-dev:22846]
+
+Mon Feb 9 16:30:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (detach_process_watcher): return the last status.
+ [ruby-dev:22841]
+
+Sun Feb 8 16:46:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pp.rb (PP::PPMethods::object_address_group): suppress negative
+ sign for higher heap areas.
+
+Sun Feb 8 16:18:27 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/yaml/test_yaml.rb (YAML_Unit_Tests::test_range_cycle):
+ added tests.
+
+Sun Feb 8 15:51:57 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/ruby/test_file.rb (TestFile::test_fnmatch): added tests for
+ File.fnmatch. [ruby-dev:22815][ruby-dev:22819]
+
+Sun Feb 8 15:41:45 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/yaml/test_yaml.rb (YAML_Unit_Tests::test_range_cycle):
+ added tests. [ruby-core:02306] [ruby-core:02311]
+
+Sun Feb 8 14:24:35 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTP#request): should not overwrite Connection
+ header. (ruby-bugs:PR#1274)
+
+Sun Feb 8 10:11:21 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (glob_helper): Dir.glob('**/') did not work. [ruby-dev:22832]
+
+Sun Feb 8 00:29:26 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (fnmatch): File.fnmatch('*?', 'a') should return true.
+ [ruby-dev:22815]
+
+ * dir.c (fnmatch): File.fnmatch('\[1\]' , '[1]') should return true.
+ [ruby-dev:22819]
+
+ * dir.c: Did some styles (no change to behavior)
+
+Sat Feb 7 19:56:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/init.rb (IRB.rc_files): yield possible rc file names.
+
+ * lib/irb/input-method.rb (IRB::ReadlineInputMethod::initialize):
+ load and save history automatically. [ruby-core:02352]
+
+Fri Feb 6 22:48:16 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb (gen_url): Support
+ https in RDoc hyperlinks
+
+Fri Feb 6 22:41:22 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/pp.rb (PPInspectTest#test_to_s_with_iv): rollback the previous
+ commit. [ruby-dev:22813]
+
+Fri Feb 6 22:22:50 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/pp.rb (PPInspectTest#test_to_s_with_iv): remove instance
+ variable which is defined in the test.
+
+Fri Feb 6 18:54:18 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/ruby/test_proc.rb (TestProc::test_eq): added a
+ test. [ruby-dev:22599]
+
+Fri Feb 6 18:26:00 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/ruby/test_proc.rb (TestProc::test_eq): added tests for
+ Proc#==. [ruby-dev:22592], [ruby-dev:22601]
+
+Fri Feb 6 10:12:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (bsock_do_not_reverse_lookup): control reverse
+ lookup for every instance. [ruby-core:02346]
+
+Fri Feb 6 09:15:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/extend-command.rb: add irb_help command. [ruby-talk:91610]
+
+ * lib/irb/cmd/help.rb (IRB::ExtendCommand::Help): show RDoc.
+
+Fri Feb 6 00:48:37 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb (PrettyPrint#first?): obsoleted.
+
+Thu Feb 5 23:56:55 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb (PrettyPrint#seplist): added.
+
+ * lib/pp.rb (PPMethods#pp_object): use seplist.
+ (PPMethods#pp_hash): ditto.
+ (Array#pretty_print): ditto.
+ (Struct#pretty_print): ditto.
+ (MatchData#pretty_print): ditto.
+
+ * lib/set.rb (Set#pretty_print): use seplist.
+
+Wed Feb 4 22:39:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_mode): should not sign-expand, so backout.
+
+Wed Feb 4 02:12:06 2004 Tanaka Akira <akr@m17n.org>
+
+ * file.c (test_l): fix wrong method name in document.
+ (test_S): ditto.
+ (test_b): ditto.
+ (test_c): ditto.
+ (test_suid): ditto.
+ (test_sgid): ditto.
+ (test_sticky): ditto.
+
+Tue Feb 3 22:36:25 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/2.0.rb, lib/rss/content.rb, lib/rss/dublincore.rb,
+ lib/rss/rss.rb, lib/rss/syndication.rb: removed warnings.
+
+ * lib/rss/converter.rb: removed handling load error of nkf.
+
+ * test/rss/test_syndication.rb, test/rss/test_trackback.rb,
+ test/rss/test_dublincore.rb, test/rss/test_content.rb: replaced
+ 'require "rss/parser"' by 'require "rss/1.0"'.
+
+ * test/rss/test_parser.rb, test/rss/test_accessor.rb: removed
+ 'require "rss/parser"'.
+
+Tue Feb 3 11:23:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reduce_nodes): remove tail returns. [ruby-talk:90934]
+
+Tue Feb 3 08:04:57 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (Struct#pretty_print_cycle): follow 1.8 style.
+
+Mon Feb 2 22:06:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (block_append, new_evstr, void_expr0): remove no longer used
+ labels.
+
+Mon Feb 2 18:45:50 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c (dln_load): don't specify RTLD_GLOBAL on Interix,
+ because it caused SEGV when running runner.rb.
+
+Mon Feb 2 01:54:00 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (Struct#pretty_print): make it 1.8 style.
+ (Numeric#pretty_print, FalseClass#pretty_print)
+ (TrueClass#pretty_print, Module#pretty_print): fix pp for objects
+ with instance variables. [ruby-talk:91157]
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): return nil on loopback
+ address.
+
+ * lib/resolv-replace.rb (BasicSocket#send): don't replace because
+ it has no hostname argument.
+ (IPSocket.getaddress): raise SocketError instead of
+ Resolv::ResolvError for errors.
+ (TCPSocket#initialize, UDPSocket#bind, UDPSocket#connect)
+ (SOCKSSocket#initialize): use IPSocket.getaddress instead of
+ Resolv.getaddress.
+ (UDPSocket#send): recognize 3 arguments form. try all addresses on
+ 4 arguments form.
+
+Sun Feb 1 23:00:00 2004 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal.c: Bug in BigDecimal("1e#{n}").add BigDecimal('.5'),n)
+ reported and fixed by Javier Goizueta.
+
+Sun Feb 1 18:21:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ From ruby_1_8 branch:
+ * lib/test/unit.rb: rearranged documentation for RDoc's sake.
+ * lib/matrix.rb: improved documentation.
+ * lib/net/http.rb: slight documentation formatting improvement.
+
+Sun Feb 1 05:30:06 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): warn HTTP_PROXY.
+ raise an error on non-http proxy URI.
+ (OpenURI::Buffer#<<): make a tempfile binmode. [ruby-talk:90793]
+
+Sun Feb 1 00:57:41 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::Parser): added @@default_parser. Used
+ XML parser became selectable.
+ * test/rss/test_parser.rb: added tests for
+ RSS::Parser.default_parser.
+
+Sat Jan 31 02:28:15 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RPATHFLAG): set to -Wl,-R like NetBSD on Interix.
+
+Sat Jan 31 01:09:41 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: leading 0 padding of timestamp usec part.
+
+Fri Jan 30 18:53:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (KR_REHASH): wrong hash value on sizeof(long) > sizeof(int).
+
+Thu Jan 29 23:11:57 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (DLEXT2): removed. Ruby does not treat
+ ".dll" as a extension library anymore.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub (DLEXT2):
+ ditto.
+
+ * util.c (mblen): fix overrun. [ruby-dev:22672]
+
+Thu Jan 29 22:41:53 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Allow 'link:' in Tidylinks.
+ THis means you can write "see f1[link:files/f1_rb.html]".
+
+Thu Jan 29 22:24:47 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * sample/openssl/gen_csr.rb: follow OpenSSL::X509::Name change.
+ ASN.1 type of subject DN elements were wrong.
+
+Thu Jan 29 22:19:51 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/*: remove $: trick. [ruby-dev:22763] use test/runner.rb to
+ run test.
+
+Thu Jan 29 19:28:16 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (Request#initialize): reject only when a path is
+ empty. [ruby-dev:22771]
+
+Thu Jan 29 18:54:08 2004 H.Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (glob_helper): infinite loop bug in win32 code.
+ [ruby-dev:22770]
+
+Thu Jan 29 17:03:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.
+ [ruby-dev:22761]
+
+Thu Jan 29 11:32:14 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/rss/test_*: do $: trick while searching a module in the current
+ directory.
+
+ * test/xsd/test_xmlschemaparser.rb, test/wsdl/test_emptycomplextype.rb,
+ test/soap/helloworld/test_helloworld.rb,
+ test/soap/calc/{test_calc.rb,test_calc2.rb}: do File.expand_path
+ before using __FILE__.
+
+ * test/yaml/test_yaml.rb: assert_equals -> assert_equal.
+
+Thu Jan 29 01:56:02 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: usec round-tripping skew. [ruby-core:2305]
+
+ * lib/yaml/rubytypes.rb: character Range now round-trips. [ruby-core:2306]
+
+ * test/yaml/test_yaml.rb: add Time and Range tests.
+
+Thu Jan 29 00:00:46 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss: rss/parser.rb is always required.
+
+Wed Jan 28 15:09:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rss/*.rb: remove "test/" prefix.
+
+Wed Jan 28 13:07:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/extconf.rb: include iconv.h for libiconv. [ruby-dev:22715]
+
+Wed Jan 28 12:43:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rss: rss library imported. [ruby-dev:22726]
+
+Wed Jan 28 04:29:41 2004 Eric Schwartz <emschwar@fc.hp.com>
+
+ * lib/cgi/session.rb: use LOCK_SH to read, and a few other
+ improvements. [ruby-core:02328]
+
+Tue Jan 27 15:00:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el: better support for general delimited
+ strings. [ruby-dev:22695]
+
+Tue Jan 27 11:04:40 2004 FUKUMOTO Atsushi <fukumoto@nospam.imasy.or.jp>
+
+ * ext/socket/socket.c (s_recvfrom): sending length should be an
+ invariant while retrying on EAGAIN. [ruby-talk:89962]
+
+Tue Jan 27 10:31:28 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (set_argv): fix condition.
+
+Tue Jan 27 02:26:31 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick:HTTPUtils::parse_header):
+ refine regex for header-name.
+
+Mon Jan 26 22:53:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * io.c: Remove documentation references to $defout.
+
+Mon Jan 26 14:41:46 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/weakref.rb (WeakRef::initialize): set up @__id before
+ calling "super".
+
+ * lib/delegate.rb (Delegator::initialize): preserve
+ singleton_method_added method [ruby-dev:22685]
+
+ * lib/delegate.rb (Delegator::initialize): use Kernel::raise
+ instead of mere raise. [ruby-dev:22681]
+
+Mon Jan 26 12:45:23 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: define CONST84 when TCL_MAJOR_VERSION == 7
+
+Mon Jan 26 11:30:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: Makefiles should depend on also rbconfig.rb.
+ (ruby-bugs:PR#1256)
+
+ * ext/win32ole/win32ole.c (set_argv): set real arguments to
+ WIN32OLE::ARGV. [ruby-list:39073]
+
+Sun Jan 25 18:25:26 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_add_entry): third
+ argument become optional.
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): ditto.
+
+ * ext/openssl/ossl_x509name.c (Init_x509name): emailAddress and
+ domainComponent should be IA5String.
+
+Sun Jan 25 01:45:38 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): support
+ virtual host.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#virtual_host): add
+ new method to register virtual hosting server.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server): add
+ new method to lookup virtual hosting server.
+
+Sat Jan 24 13:06:26 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509hame.c (ossl_x509name_initialize): change
+ second argument. it expected to be a Hash not an Integer.
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_add_entry): add new
+ function for OpenSSL::X509::Name#add_entry.
+
+ * ext/openssl/ossl_x509name.c (Init_ossl_x509name): add constants
+ OpenSSL::X509::Name::DEFAULT_OBJECT_TYPE and OBJECT_TYPE_TEMPLATE.
+
+ * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name#initialize):
+ second argument takes OBJECT_TYPE_TEMPLATE by default.
+
+Fri Jan 23 02:26:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (num2i32): pack should not raise RangeError.
+ [ruby-dev:22654]
+
+ * pack.c (pack_pack): do not auto convert nil to zero.
+
+Thu Jan 22 22:54:53 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (BEG_REGEXP): allow 8-bit characters in quoted
+ strings for Novell GroupWise Internet Agent.
+
+ * lib/net/imap.rb (DATA_REGEXP): ditto.
+
+Thu Jan 22 18:35:49 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/e2mmap.rb (VERSION): remove unnecessary version checking.
+
+Thu Jan 22 16:21:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (string_content): reset lexical states at the beginning of
+ string contents. [ruby-list:39061]
+
+Thu Jan 22 08:08:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (opt_rescue): use NODE_ERRINFO() instead of
+ NODE_GVAR("$!"), to avoid confusion from variable aliasing.
+ [ruby-talk:90074]
+
+ * version.c (Init_version): remove obsolete constants VERSION
+ etc. [ruby-dev:22643]
+
+Thu Jan 22 01:46:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (newline_node): do not use NODE_NEWLINE node anymore,
+ use NEWLINE flag instead.
+
+Thu Jan 22 01:12:12 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * missing/os2.c (chdir, getcwd):
+ use _chdir2 and _getcwd2 supporting multiple drives in OS/2 with EMX.
+
+Thu Jan 22 00:33:52 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * configure.in: check availability of link(). [ruby-dev:22237]
+ * file.c (rb_file_s_link): raise an exception when link() is unavailable.
+ * missing/os2.c (link): removed. File#link isn't supported.
+ * bcc32/Makefile.sub: define HAVE_LINK to enable link(). [ruby-dev:22241]
+ * win32/Makefile.sub: ditto.
+
+Thu Jan 22 00:26:25 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * ChangeLog: typo: RUBY_MBCHAR_MAX was RUBY_MBCHAR_MAXSIZE.
+
+Thu Jan 22 00:12:51 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * defines.h: define RUBY_MBCHAR_MAX instead of MB_CUR_MAX.
+ * dir.c (Next, emx_mblen): use RUBY_MBCHAR_MAX for mblen().
+ * file.c (CharNext): ditto.
+ * ruby.c (translate_char): ditto.
+ * util.c (__crt0_glob_function): ditto.
+
+Thu Jan 22 00:10:01 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/base64.rb: :nodoc: the Deprecated module
+
+Wed Jan 21 23:52:39 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: Interix(SFU) support.
+
+Wed Jan 21 23:03:45 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: remove O_NONBLOCK, thanks \ay
+ * lib/drb/extserv.rb: typo
+
+Wed Jan 21 17:57:56 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (envelope): allow NIL.
+ * lib/net/imap.rb (body): ditto.
+ * lib/net/imap.rb (number): ditto.
+ * lib/net/imap.rb (ensure_nz_number): show a detailed error
+ message.
+
+Wed Jan 21 16:44:15 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (merge_libs): squeeze successive same libraries.
+ [ruby-dev:22652]
+
+Wed Jan 21 16:10:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/base64.rb: enclosed in a module. [ruby-core:02285]
+
+Wed Jan 21 16:01:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/rmd160/extconf.rb: have_library appends found library.
+
+Wed Jan 21 11:36:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_gethostbyname): returns host if
+ ai_canonname is NULL. (ruby-bugs PR#1243)
+
+ * parse.y (block_append): update nd_end for "real" head node.
+ [ruby-list:39058]
+
+Tue Jan 20 14:48:28 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: should check <openssl/conf_api.h> instead
+ of OPENSSL_VERSION_NUMBER. [ruby-list:39056]
+
+Tue Jan 20 14:43:17 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/base64.rb: Add RDoc
+
+Tue Jan 20 14:25:51 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/abbrev.rb: Add RDoc
+
+Tue Jan 20 13:22:39 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Document aliases at
+ top-most level.
+
+ * lib/English.rb: Document English.rb.
+
+Tue Jan 20 04:41:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_marshal.rb (MarshalTestLib::test_exception): test
+ for [ruby-dev:22604].
+
+ * test/ruby/test_marshal.rb (MarshalTestLibtest_singleton): test
+ for [ruby-dev:22588].
+
+Tue Jan 20 02:38:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_class): should not dump singleton class.
+ [ruby-dev:22631]
+
+Tue Jan 20 02:49:22 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for OpenSSL version.
+ [ruby-list:39054]
+
+Mon Jan 19 23:56:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (name_err_mesg_to_str): inverted condition for result of
+ inspection. [ruby-dev:22628]
+
+Mon Jan 19 22:24:28 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * sample/exyacc.rb: escape '}' to avoid warning.
+
+ * lib/rdoc/parsers/parse_c.rb: escape '{' and '}' to avoid warnings.
+
+Mon Jan 19 21:28:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/defs.h, win32/win3.c, win32/win32.h, file.c: remove
+ useless casts for Borland C.
+
+Mon Jan 19 17:39:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (NameError::message): internal use only.
+
+ * eval.c (rb_method_missing): use hidden constant.
+
+Mon Jan 19 16:30:53 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/ruby/test_time.rb: added tests for [ruby-dev:22614] and
+ [ruby-dev:22617].
+
+Mon Jan 19 13:09:21 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb, win32/Makefile.sub, win32/configure.bat,
+ win32/setup.mak: --with-static-linked-ext support on mswin32.
+
+Mon Jan 19 06:49:07 2004 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: zone was wrong when it was behind UTC.
+ Thanks Mark J. Reed.
+
+ * lib/date/format.rb: %z is now always replaced by four digits
+ with a leading plus or minus sign.
+
+ * sample/cal.rb: added a class, anyway.
+
+Mon Jan 19 01:08:39 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c, error.c, eval.c, intern.h, object.c, variable.c:
+ do not set path if it is a singleton class. [ruby-dev:22588]
+
+ * lib/cgi.rb (CGI::QueryExtension): give extended string, not a
+ delegater object.
+
+Sun Jan 18 23:59:44 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/charset_alias.rb: prefer us_EN locale encodings or
+ former. [ruby-dev:22609]
+
+ * ext/iconv/iconv.c (iconv_create): raise InvalidEncoding
+ exception when EINVAL.
+
+Sun Jan 18 23:16:34 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c, error.c, file.c, io.c, numeric.c, object.c, re.c, struct.c,
+ time.c: marked init_copy functions nodoc.
+
+Sun Jan 18 20:47:35 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.c: use translate_char() on Cygwin.
+
+Sun Jan 18 20:00:16 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/wsdlDriver.rb, lib/wsdl/soap/operation.rb: add support of
+ "parts" attribute of soap:body element in WSDL.
+
+ * lib/wsdl/xmlSchema/schema.rb: friendly warning message for
+ simpleType element which is not supported for now.
+
+ * test/wsdl/soap/{soapbodyparts.wsdl,test_soapbodyparts.wsdl}: new
+ files.
+
+Sun Jan 18 16:46:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_overflow_p): should return results. [ruby-dev:22614]
+
+Sun Jan 18 12:07:24 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * test/ruby/test_time.rb: new test case to test Time#[+-].
+
+ * time.c (time_plus, time_minus): fix RangeError for a negative
+ argument in environments whose time_t is unsigned. [ruby-dev:22608]
+
+Sun Jan 18 02:33:26 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * defines.h (_WIN32): undef _WIN32 on Cygwin before defining DOSISH.
+
+Sun Jan 18 00:23:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (class2path): check anonymous class/module before
+ checking referable, and allow singleton classes.
+
+Sat Jan 17 23:58:51 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (NameError::Message): new class for lazy evaluation of
+ message to ensure replaced before marshalling. [ruby-dev:22604]
+
+ * eval.c (rb_method_missing): use NameError::Message.
+
+Sat Jan 17 21:49:50 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/time.rb (test_rfc2822, test_rfc3339, test_encode_xmlschema):
+ should not expect that all platforms handle negative time_t value.
+
+Fri Jan 16 23:53:09 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (proc_eq): compare also arguments and environment
+ (including local variables). [ruby-dev:22590]
+
+Fri Jan 16 14:33:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (class2path): get class path and check referable.
+ [ruby-dev:22588]
+
+Thu Jan 15 12:58:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_read): do not append EOF. (ruby-bugs-ja:PR#585)
+
+ * io.c (rb_io_fwrite): ad-hockery hack to get rid of HP-UX stdio
+ weird behavior. [ruby-dev:22424]
+
+Wed Jan 14 21:13:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/inlinetest.rb (InlineTest::eval_part): eval under the top
+ level environment.
+
+Wed Jan 14 17:54:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/inlinetest.rb (InlineTest::loadtest): require instead of
+ load, to get rid of multiple loading.
+
+Wed Jan 14 13:30:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/extconf.rb: wrapper iconv.rb is dependent on platform.
+
+Wed Jan 14 09:32:02 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * MANIFEST: add test/net/test_httpheader.rb. (commit miss?)
+
+Wed Jan 14 00:58:35 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): move SystemStackError from under
+ StandardError to Exception. [ruby-talk:89782]
+
+Tue Jan 13 18:03:02 2004 Ian Macdonald <ian@caliban.org>
+
+ * file.c (rb_stat_wr, rb_stat_ww): New functions
+ implementing new methods (File::Stat#world_readable?,
+ File::Stat#world_writable?).
+
+Tue Jan 13 16:53:25 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: omission of Date library code caused
+ test suite failure. [ruby-core:2251]
+
+Tue Jan 13 16:50:03 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: use $0 as the default application class name.
+
+Tue Jan 13 14:48:00 2004 Ian Macdonald <ian@caliban.org>
+
+ * lib/pathname.rb: New methods (Pathname#world_readable?,
+ Pathname#world_writable?).
+
+Tue Jan 13 14:48:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): allow no "when" case. [ruby-dev:22578]
+
+ * ruby.h (rb_class_of): reduce branch. [ruby-dev:22577]
+
+ * ruby.h (rb_type): ditto.
+
+Tue Jan 13 14:26:59 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/test/unit/ui/testrunnerutilities.rb (TestRunnerUtilities):
+ moved run method which allows output level. [ruby-dev:22554]
+
+Tue Jan 13 13:04:24 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/test_*.rb: Pathname#parent -> Pathname#dirname.
+
+Tue Jan 13 11:38:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/yaml/test_yaml.rb (YAML_Unit_Tests::test_spec_type_{int,float}):
+ fix syntax error.
+
+Tue Jan 13 07:52:40 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/bytecode.c: turn off default implicit typing.
+
+ * ext/syck/implicit.c: detect base60 integers.
+
+ * ext/syck/rubyext.c: handle base60, as well as hex and octal
+ with commas. implicit typing of ruby symbols.
+
+ * test/yaml/test_yaml.rb: add test.
+
+Tue Jan 13 04:29:52 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_driver.rb (RiDriver::report_method_stuff):
+ Show fully-qualified class names in class list.
+
+Tue Jan 13 01:24:17 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (test_wr): Rdoc fix. [ruby-core:02225]
+
+Tue Jan 13 01:04:37 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_paths.rb (RI::Paths): First attempt at
+ incorporating DESTDIR in the rdoc installation.
+
+Mon Jan 12 23:26:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary): fix position after FCALL. [ruby-dev:22574]
+
+Mon Jan 12 18:00:11 2004 Ian Macdonald <ian@caliban.org>
+
+ * file.c (test_wr, test_ww): New functions implementing new
+ methods (File::world_readable?, File::world_writable?).
+
+ * file.c (S_IRUGO, S_IGUGO): New macros.
+
+Mon Jan 12 12:07:22 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_methods):
+ Someone changed the "// in eval.c" comments to "/*...*/" style,
+ so the parsing of the source file name broke.
+
+ * object.c: Remove spurious space in TrueClass documentation.
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_body): Fix
+ bad regexp: if the code before a documented method contained
+ a comment that wasn't terminated by whitespace, that comment
+ and all intervening code was included in the following
+ method's documentation.
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::HtmlFormatter::break_to_newline):
+ HTML formats need explicit line breaks.
+
+Mon Jan 12 02:24:07 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::HtmlFormatter): Add HTML
+ generation support to ri (Elliot Hughes)
+
+Sun Jan 11 23:54:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * env.h (ruby_frame, ruby_scope, ruby_in_eval, ruby_class,
+ ruby_dyna_vars): export. [ruby-dev:22566]
+
+Sun Jan 11 02:35:53 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (make_hostent): a bug in brace position.
+
+ * configure.in: install rdoc by default. if you do not want to
+ install rdoc, specify --disable-install-doc.
+
+Sun Jan 11 02:07:47 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_options.rb (RI::Options::OptionList::OptionList):
+ Also accept command line options via the 'RI' environment variable.
+
+Sat Jan 10 21:27:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): need to add message delimiter. [ruby-dev:22561]
+
+Sat Jan 10 01:54:50 2004 Eric Sunshine <sunshine@sunshineco.com>
+
+ * defines.h (__NeXT__): Ensure that all standard S_IRUSR, S_IWGRP,
+ S_IRWXO, etc. macros are defined since future code might require
+ them (even though present code only requires a subset).
+
+ * defines.h (__NeXT__): Bug fix: WORDS_BIGENDIAN was not being set
+ correctly on Rhapsody when -arch compiler flag was used (via
+ configure's --enable-fat-binary option).
+
+Sat Jan 10 23:01:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBPATHFLAG, RPATHFLAG): enclose paths with single
+ quotes. [ruby-dev:22564]
+
+ * lib/mkmf.rb (libpathflag): do not enclose with quotes always.
+
+ * {bcc32,win32,wince}/Makefile.sub (LIBPATHFLAG): quoted.
+
+Sat Jan 10 22:46:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_inspect): new method, Dir#inspect. [ruby-dev:22562]
+
+Fri Jan 9 17:36:51 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (make_hostent): getaddrinfo(3) on BSD do not
+ fill ai_canonname if serv is not supplied. (ruby-bugs PR#1243)
+
+Fri Jan 9 13:14:59 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb: do not ignore exceptions(LoadError
+ and SystemExitError) while loading a testcase. smell of bug.
+
+ * test/testunit/collector/test_dir.rb: add new test of the LoadError.
+
+ * test/drb/{test_drbssl.rb,test_drbunix.rb}: do not define testcase if
+ openssl is not installed.
+
+ * test/testunit/collector/test_dir.rb: assert_raises -> assert_raise.
+
+Fri Jan 9 11:52:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * rubysig.h: <errno.h> is needed to use errno which may be a macro.
+
+Fri Jan 9 11:20:24 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * ext/extmk.rb (extmake): should not reduce necessary libraries.
+ [ruby-dev:22440]
+
+ * lib/mkmf.rb (merge_libs): merge libraries according to
+ dependency.
+
+Fri Jan 9 10:05:23 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * lib/mkmf.rb (libpathflag): use single quotes. [ruby-dev:22440]
+
+Thu Jan 8 23:49:21 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RDOCTARGET): new macro. if you want to install
+ rdoc documentation, you need to run configure with
+ --enable-install-doc.
+
+Thu Jan 8 21:17:43 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey.c (ossl_pkey_to_der): removed; it returns
+ public key only.
+
+ * ext/openssl/ossl_pkey_dh.c (ossl_dh_to_der): new function for
+ OpenSSL::PKey::DH#to_der.
+
+ * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_to_der): new function for
+ OpenSSL::PKey::DSA#to_der.
+
+ * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_to_der): new function for
+ OpenSSL::PKey::RSA#to_der.
+
+Thu Jan 8 18:25:29 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): should not recurse in exceptional status.
+
+Thu Jan 8 16:51:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/wsdl/datetime/test_datetime.rb: fixed a stupid testcase which
+ dumps "E" at month-end.
+
+Thu Jan 8 11:20:01 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c, object.c, process.c, re.c: don't use C++ style comments.
+
+Thu Jan 8 08:46:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (yaml_org_handler): lazy-load Date for
+ static-ext.
+
+Thu Jan 8 07:06:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: preserve order in Setup. [ruby-dev:22503]
+
+ * ext/extmk.rb: move dependent libraries just after depended
+ libraries.
+
+ * ext/digest/*/extconf.rb: depend on digest.
+
+Thu Jan 8 04:36:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI#initialize): should create
+ @config[:Logger] if it was not given.
+
+Wed Jan 7 22:28:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): fix memory leak.
+
+Wed Jan 7 21:15:07 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * sample/webrick/*: new files.
+
+ * MANIFEST: add sample/webrick/*
+
+Wed Jan 7 20:51:51 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/net/test_httpheader.rb: new file.
+
+ * MANIFEST: add test/net/test_httpheader.rb.
+
+Wed Jan 7 20:42:06 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTPHeader#content_length): should return nil
+ unless header exists. [ruby-dev:22519]
+
+Wed Jan 7 14:26:05 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb (TkPanedWindow): use epath for embedded windows.
+
+ * ext/tk/lib/tktext.rb: use epath for embedded windows.
+
+ * ext/tk/lib/tkcanvas.rb: use epath for window items.
+
+Wed Jan 7 14:24:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/{attachment.rb,mimemessage.rb}: added from soap4r/1.5.2.
+
+Wed Jan 7 13:00:18 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_driver.rb: Fix problem where ri was
+ being too eager to find matches of ambiguous method
+ names (such as "ri Thread.join" would return both
+ Thread.join and ThreadsWait.join)
+
+Wed Jan 7 12:35:41 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/debug.rb: revert command parse regexps. [ruby-list:39014] by
+ Shirai,Kaoru.
+
+Wed Jan 7 08:21:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parserfactory.rb: Check for shebang
+ line in files that would otherwise be treated as
+ plain text.
+
+Tue Jan 6 22:13:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_modfunc): should break if m has no super class.
+ [ruby-dev:22498]
+
+Tue Jan 6 21:51:37 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (fptr_finalize): should save errno just after failure.
+ [ruby-dev:22492]
+
+Tue Jan 6 20:51:10 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb(Logger#msg2str): no special treatment for the object
+ which responds to :to_str.
+
+ * lib/logger.rb(LogDevice#initialize): remove type checking if the
+ given object is a String. Kernel.open handles it correctly.
+
+ * test/logger/test_logger.rb: follow above change (ArgumentError ->
+ TypeError.)
+
+Tue Jan 6 14:53:14 2004 Dave Thomas <dave@pragprog.com>
+
+ * bin/ri: split out the display side, making it pluggable. Added
+ new ri_driver and ri_display files in lib/rdoc/ri.
+
+Tue Jan 6 11:29:43 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/inlinetest.rb, test/{test_generator.rb,test_ipaddr.rb,
+ test_pathname.rb,test_pp.rb,test_prettyprint.rb,test_set.rb,
+ test_time.rb,test_tsort.rb: added.
+
+Tue Jan 6 09:38:27 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * import soap4r/1.5.2;
+
+ * lib/soap/{attachment.rb,baseData.rb,encodingstyle/soapHandler.rb}:
+ introduce SOAPExternalReference class as a referenct to SOAPEnvelope
+ external content.
+
+ * lib/soap/{attachment.rb,mimemessage.rb}: great SwA (SOAP messages
+ with Attachments) support code by Jamie Herre.
+
+ * lib/soap/{element.rb,marshal.rb,parser.rb,processor.rb,
+ streamHandler.rb,wsdlDriver.rb}: SwA support.
+
+ * lib/soap/rpc/{cgistub.rb,driver.rb,element.rb,proxy.rb,router.rb,
+ soaplet.rb}: SwA support and refactoring.
+
+ * lib/soap/generator.rb, lib/soap/mapping/mapping.rb: follow
+ SOAPReference#initialize signature change.
+
+ * lib/soap/mapping/factory.rb: deleted unused methods.
+
+ * lib/soap/mapping/rubytypeFactory.rb: do no ignore case while xsi:type
+ string <-> Ruby class name matching.
+
+ * lib/xsd/datatypes.rb: check the smallest positive non-zero
+ single-precision float exactly instead of packing with "f".
+ [ruby-talk:88822]
+
+ * test/soap/test_basetype.rb, test/xsd/test_xsd.rb: use 1.402e-45, not
+ 1.4e-45. 1.4e-45 is smaller than 2 ** -149...
+
+ * test/soap/test_basetype.rb, test/soap/marshal/test_marshal.rb,
+ test/xsd/test_xsd.rb: use "(-1.0 / (1.0 / 0.0))" instead of "-0.0".
+
+ * test/soap/test_streamhandler.rb: revert to the previous test that
+ warns "basic_auth unsupported under net/http".
+
+Tue Jan 6 06:37:53 2004 Dave Thomas <dave@pragprog.com>
+
+ * bin/rdoc: Add --ri-system switch
+
+ * lib/.document: Update with list of files that seem to have
+ documentation
+
+ * lib/test/unit.rb: Reorder comment to make it RDoc friendly.
+
+ * Makefile.in: add install-nodoc target, and make it
+ generate RDoc on default install.
+
+ * lib/rdoc/ri/ri_options.rb (RI::Options::parse): Add
+ --doc-dir option to ri.
+
+Tue Jan 6 00:04:40 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method_or_yield_parameters):
+ fix parsing if there are braces in a method parameter list
+
+Tue Jan 6 01:01:04 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/dir.h, win32/win32.c: fix patch miss.
+
+ * win32/Makefile.sub: fix file dependency.
+
+Mon Jan 5 20:32:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/logger.rb: enhanced documentation.
+
+Mon Jan 5 18:58:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.
+ [ruby-dev:22486]
+
+ * pack.c (pack_unpack): unpack requires big endian offet (OFF16B
+ and OFF32B). The patch is from Minero Aoki in [ruby-dev:22489]
+
+ * pack.c (OFF16B): add big-endian offset again.
+
+Mon Jan 5 03:00:53 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_pack.rb: new test test_unpack_N.
+
+Mon Jan 5 01:47:53 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): remove duplicated object files
+ from $objs on DOSISH platforms.
+
+Sat Jan 3 02:44:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rubysig.h (TRAP_END): preserve errno before switching context.
+ [ruby-core:02137]
+
+Sat Jan 3 01:18:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.
+ [ruby-dev:22476]
+
+Fri Jan 2 14:54:11 2004 Dave Thomas <dave@pragprog.com>
+
+ * bin/ri: Add new --classes option, and arrange for
+ help messages to be paged too.
+
+ * bin/rdoc: Add statistics.
+
+ * process.c: (MG) Added Process documentation
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::AttributeFormatter::wrap):
+ Fix problem with labels not displaying in RI labeled
+ lists using BS and ANSI modes.
+
+Fri Jan 2 01:50:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_eof): ARGF.eof? should not have any side effect.
+ [ruby-dev:22469]
+
+Thu Jan 1 09:03:20 2004 Dave Thomas <dave@pragprog.com>
+
+ * bin/ri (report_class_stuff): Fix problem with ambiguous nested
+ classes not matching.
+
+Wed Dec 31 17:25:17 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_each_byte): should return self. [ruby-dev:22465]
+
+Wed Dec 31 15:05:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/pathname.rb: Corrected small coding error.
+
+Wed Dec 31 15:00:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/pathname.rb: Completed documentation.
+
+Wed Dec 31 11:20:34 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_methods): Make
+ file referenced in "// in sss.c" relative to current file.
+
+Wed Dec 31 11:17:37 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Fix problem when
+ a public method was aliased, but the alias is then
+ made private, and hence doesn't appear in RDoc output.
+
+Wed Dec 31 01:33:05 2003 Dave Thomas <dave@pragprog.com>
+
+ * array.c, error.c, eval.c, io.c, prec.c, range.c, re.c,
+ string.c, time.c: Add RDoc for Kernel functions, and tidy.
+
+Tue Dec 30 19:39:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_readline): should raise EOFError at the end of
+ files. [ruby-dev:22458]
+
+ * io.c (argf_read): should concatenate input files when length
+ argument is nil. [ruby-dev:22450]
+
+ * io.c (argf_read): should update supplied string buffer (2nd
+ argument) even when IO#read is called multiple times.
+
+ * io.c: should initialize lineno by zero. [ruby-dev:22460]
+
+Tue Dec 30 12:30:30 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::find_symbol): If a
+ class and a method have the same name, finding Xxx.abc was trying
+ to find 'abc' in method 'Xxx', not class 'Xxx'.
+
+Tue Dec 30 08:32:32 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method):
+ Handle undoing nsting of yield parameters correctly for:
+
+ def each_entry(&b) Dir.foreach(@path) {|f| yield P.new(f) } end
+
+Tue Dec 30 07:30:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/pathname.rb: Added documentation.
+
+Mon Dec 29 20:08:17 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (GenericRequest#initialize): check if path
+ begins with '/'.
+
+ * lib/net/http.rb: def m( arg ) -> def m(arg)
+
+Mon Dec 29 12:51:02 2003 Dave Thomas <dave@pragprog.com>
+
+ * eval.c: Add RDoc for Kernel global functions.
+
+Mon Dec 29 11:00:16 2003 Dave Thomas <dave@pragprog.com>
+
+ * array.c: Tidy up RDoc loose ends.
+
+Mon Dec 29 05:05:51 2003 Dave Thomas <dave@pragprog.com>
+
+ * struct.c, random: Add RDoc comments
+
+Mon Dec 29 02:25:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/optparse.rb: Improved documentation.
+
+Mon Dec 29 02:20:54 2003 Dave Thomas <dave@pragprog.com>
+
+ * eval.c: Add RDoc for class Proc, Method, UnboundMethod
+
+Mon Dec 29 02:20:26 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: fix install directory if destdir and compile_dir are
+ not in the same drive.
+
+ * ext/extmk.rb: ditto. [ruby-list:39009]
+
+ * win32/Makefile.sub, win32/README.win32, win32/configure.bat,
+ win32/setup.mak: new configure scheme. use ``configure --prefix=dir''
+ instead of ``nmake DESTDIR=dir install''.
+
+Mon Dec 29 00:41:44 2003 Dave Thomas <dave@pragprog.com>
+
+ * math.c: Add RDoc comments
+
+Sun Dec 28 20:19:11 2003 Tanaka Akira <akr@m17n.org>
+
+ * ext/stringio/stringio.c (strio_sysread): StringIO.new.sysread didn't
+ raise EOFError.
+
+ * ext/zlib/zlib.c (gzreader_gets): don't increment lineno when
+ gzfile_read_all returns "".
+
+Sun Dec 28 15:25:08 2003 Dave Thomas <dave@pragprog.com>
+
+ * class.c,object.c,parse.y,sprintf.c,variable.c: Document classes
+ Object, Module, etc...
+
+Sun Dec 28 11:55:29 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: generate bom.csv and mac.csv files on the fly.
+ [ruby-talk:88852]
+
+ * test/csv/{bom.csv,mac.csv}: removed.
+
+Sun Dec 28 08:56:51 2003 Dave Thomas <dave@pragprog.com>
+
+ * eval.c: Thead[Group] RDoc (thanks to MG)
+
+Sun Dec 28 03:50:05 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_override_comment):
+ Escape method names used in regexp
+
+Sun Dec 28 01:46:02 2003 Dave Thomas <dave@wireless_3.local.thomases.com>
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::display_flow_item):
+ Add support for rules in 'ri' output.
+
+Sun Dec 28 01:35:35 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_body):
+ Sometimes the Ruby source aliases two otherwise
+ unrelated methods (for example Kernel#object_id and
+ Kernel#hash are both the same C function). Provide a
+ facility to allow the methods to be documented
+ separately.
+
+Sun Dec 28 01:05:31 2003 Dave Thomas <dave@pragprog.com>
+
+ * marshal.c, signal.c: RDoc collemts added by Elliott Hughes
+
+Sun Dec 28 00:46:25 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_class_comment):
+ Some Ruby source uses lower-case class names for the
+ Init_Xxx C function name.
+
+Sat Dec 27 23:41:46 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: fix "test: too many arguments" error.
+
+Sat Dec 27 15:32:40 2003 Dave Thomas <dave@wireless_3.local.thomases.com>
+
+ * time.c: Add RDoc comments for Time class.
+
+Sat Dec 27 15:07:26 2003 Dave Thomas <dave@pragprog.com>
+
+ * object.c: Add RDoc comments for Symbol class.
+
+Sat Dec 27 14:39:53 2003 Dave Thomas <dave@pragprog.com>
+
+ * numeric.c (Init_Numeric): Add RDoc comments.
+
+Sat Dec 27 00:44:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (next_argv): warn always for stdin on inplace edit mode.
+
+ * io.c (read_all): need to check string value.
+
+ * io.c (argf_read): allow ARGF.read(nil). [ruby-dev:22433]
+
+Fri Dec 26 23:02:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_backquote): need not to check nil result.
+ [ruby-core:02078]
+
+ * io.c (rb_io_getline): should return nil when read_all gives
+ empty string, even when nil rs is specified. [ruby-core:02077]
+
+Fri Dec 26 18:33:54 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check if getcontext and setcontext are available.
+
+ * eval.c: use presence of getcontext/setcontext.
+
+Fri Dec 26 16:40:53 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (PathnameTest#test_plus): add 2 assertions.
+
+Fri Dec 26 14:05:13 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_pack.rb: new test test_pack_N.
+
+Fri Dec 26 12:53:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): add sign check for 'i', and 'l'.
+ [ruby-dev:22427]
+
+ * bignum.c (rb_quad_pack): add range check for 'quad int'.
+
+Fri Dec 26 10:58:58 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * MANIFEST: add vms/config.h and remove vms/config.h_in.
+
+Fri Dec 26 10:42:00 2003 AKIYOSHI, Masamichi <masamichi.akiyoshi@hp.com>
+
+ * io.c: [VMS] "rfm=stmlf" is specified for open() and fopen().
+
+Thu Dec 25 22:29:53 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_update): don't return any value.
+
+Thu Dec 25 15:30:17 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_update): call rb_str_modify().
+
+Thu Dec 25 05:08:09 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (search_required): search actual file name once when no
+ extension specified.
+
+Thu Dec 25 04:00:44 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.8.1 released.
+
+Thu Dec 25 00:17:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: check for nanosleep, -lrt if required.
+ [ruby-core:02059]
+
+ * eval.c (thread_timer): use select(2) if nanosleep(2) is not
+ available.
+
+ * eval.c: check __stub_getcontext for glibc on some platforms.
+ [ruby-list:38984]
+
+Wed Dec 24 23:48:04 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/test_basetype.rb, test/soap/marshal/test_marshal.rb
+ test/xsd/test_xsd.rb: use "(-1.0 / (1.0 / 0.0))" instead of "-0.0"
+ to express -0.0. [ruby-talk:88786]
+
+Wed Dec 24 23:29:30 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/tsort.rb (test_orphaned_break): removed.
+
+Wed Dec 24 20:53:06 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkmulticolumnlist.rb: new sample
+
+ * ext/tk/sample/tkmultilistframe.rb: bug fix
+
+Wed Dec 24 20:37:37 2003 Eric Sunshine <sunshine@sunshineco.com>
+
+ * configure.in (LDSHARED): Fixed typographical error in assignment of
+ LDSHARED for Rhapsody which caused linking of extension modules to
+ fail.
+
+Wed Dec 24 17:51:18 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_thread_flock): enable thread support again.
+
+Wed Dec 24 16:46:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (catch_timer): do not call rb_thread_schedule() inside to
+ avoid pthread_mutex_lock() deadlock. interrupts to system calls
+ are detected by TRAP_END via EINTR error.
+
+ * eval.c (thread_timer): do not post signal unless it is
+ absolutely necessary.
+
+ * rubysig.h (TRAP_END): add CHECK_INTS to switch thread.
+
+ * regex.c (re_compile_pattern): check if nextp is smaller than
+ pend. [ruby-dev:22372]
+
+ * eval.c (umethod_bind): remove method overridden check.
+ [ruby-dev:22366]
+
+Wed Dec 24 16:13:05 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read): should check for error
+ status by SSL_get_error().
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_write): ditto.
+
+Wed Dec 24 14:23:27 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): clear the buffer argument
+ when returning nil. [ruby-dev:22363]
+
+ * test/ruby/ut_eof.rb (TestEOF::test_eof_0, TestEOF::test_eof_1):
+ add buffer argument tests.
+
+Wed Dec 24 14:07:55 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: Modules are allowed to rescue.
+
+ * lib/test/unit/autorunner.rb: show output_level in order.
+
+ * lib/test/unit/collector/dir.rb: get rid of successive same
+ directories in load path.
+
+ * test/testunit/test_assertions.rb (test_assert_nothing_raised,
+ test_assert_raise): test for modules.
+
+Wed Dec 24 13:43:34 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (authenticate): remove "\n" from base64 encoded
+ strings.
+
+Wed Dec 24 11:26:41 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb: should not create any
+ files or directories in current directory. [ruby-talk:88724]
+
+Wed Dec 24 10:29:53 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): never return nil at
+ unlimited read. [ruby-dev:22334]
+
+ * ext/stringio/stringio.c (strio_read): support second
+ argument. [ruby-dev:22350]
+
+Wed Dec 24 09:38:49 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (arg): should return 0 after error. [ruby-dev:22360]
+
+Wed Dec 24 00:56:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): do not return nil at the end of file.
+ [ruby-dev:22334]
+
+ * io.c (argf_read): do not depend on nil at eof behavior of
+ IO#read().
+
+ * eval.c (rb_thread_join): dup exception before re-raising it.
+
+ * io.c (rb_io_eof): call clearerr() to prevent side effect. this
+ patch is supplied by Masahiro Sakai <sakai@tom.sfc.keio.ac.jp>.
+ [ruby-dev:22234]
+
+ * pack.c (OFF16): get offset for big endian machines.
+
+ * pack.c (pack_pack): use OFF16 instead of OFF16B.
+ [ruby-dev:22344]
+
+ * pack.c (pack_unpack): ditto.
+
+Tue Dec 23 22:47:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_check_readable): set FMODE_RBUF always, even if
+ NEED_IO_SEEK_BETWEEN_RW is not defined. [ruby-dev:22340]
+
+ * io.c (rb_io_check_writable): clear FMODE_RBUF before writing
+ something.
+
+Tue Dec 23 22:25:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/optparse.rb: incomplete RDoc documentation added in place of
+ existing RD comments. Tabs converted to spaces.
+
+Tue Dec 23 19:44:47 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/test_streamhandler.rb (test_basic_auth): removed.
+ soap4r + basic_auth is not officially supported in ruby/1.8.1 even
+ though soap4r + basic_auth + http-access2 should run fine.
+
+Tue Dec 23 19:42:59 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_ungetc): raise an exception at unread stream to
+ avoid unspecified behavior. [ruby-dev:22330]
+
+ * test/ruby/test_system.rb (test_syntax): glob relatively from
+ __FILE__.
+
+Tue Dec 23 18:09:40 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): remove unnecessary negative value check.
+ [ruby-dev:22329]
+
+Tue Dec 23 17:26:55 2003 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/Makefile.sub (config.h): bcc has finite(). [ruby-list:38940]
+
+Tue Dec 23 16:08:16 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/rexml/encodings/US-ASCII.rb: typo. [ruby-talk:88650]
+
+ * test/ruby/test_system.rb: num of asserts depended on running dir.
+
+ * test/xsd/test_noencoding.rb: rexml + without iconv/uconv cannot
+ handle euc-jp. install iconv, uconv or xmlscan.
+
+Tue Dec 23 14:13:51 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic::check_userinfo,
+ URI::Generic::check_user, URI::Generic::check_password): tests
+ conflicts/depends with other components closely.
+
+ * test/uri/test_generic.rb (TestGeneric::test_set_component):
+ added tets.
+
+Tue Dec 23 11:08:34 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/xsd/test_noencoding.rb: rescue Errno::EINVAL and do not test.
+ "euc-jp" might not be in supported encoding name list.
+ [ruby-talk:88650]
+
+Tue Dec 23 06:10:31 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (CGI): add support for mod_ruby.
+
+ * lib/webrick/cgi.rb (CGI::Socket): add check for existence of
+ OpenSSL module in all HTTPS related methods.
+
+ * lib/webrick/cgi.rb (CGI::Socket#cipher): should create similar
+ value to OpenSSL::SSLSocket#cipher.
+
+ * lib/webrick/httpresponse.rb (HTTPResponse#setup_header): should
+ set "connection: close" if @keep_alive is false.
+
+ * lib/webrick/https.rb (HTTPrequest#meta_vars): add supprt for
+ SSL_PROTOCOL, SSL_CIPHER_USEKEYSIZE and SSL_CIPHER_ALGKEYSIZE.
+
+Mon Dec 22 23:00:05 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic::check_opaque): fixed typo.
+
+Mon Dec 22 21:59:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (map_charset): always ensure code is a String.
+
+Mon Dec 22 21:15:29 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_mod_init_copy): always copy singleton class.
+ [ruby-dev:22325]
+
+Mon Dec 22 20:44:36 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic#route_from): accepts urls which
+ has no host-part.
+
+ * test/uri/test_generic.rb (TestGeneric::test_route): added a test.
+
+Mon Dec 22 20:38:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi.rb: reduce eval.
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): alias path to
+ local_path. [ruby-list:38883]
+
+Mon Dec 22 20:09:31 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/test_property.rb: remove duplicated test method.
+
+Mon Dec 22 18:22:04 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub (config.h): remove
+ HAVE_ISINF definition to follow previous commits of missing.h
+ and win32/win32.h.
+
+Mon Dec 22 17:23:42 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_cv_func_setitimer): moved from defines.h
+
+ * defines.h, rubysig.h, signal.c: removed macro handling which
+ should be done in configure.
+
+ * configure.in (intrinsics.h): check if present.
+
+ * ruby.h: include intrinsics.h if available.
+
+ * bignum.c, marshal.c: include ieeefp.h if available.
+
+ * missing.h (isinf): define as a macro if finite() and isnan()
+ are available. [ruby-core:02032]
+
+Mon Dec 22 17:07:31 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (mingw): set isnan, finite and isinf to yes.
+
+Mon Dec 22 13:40:19 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/property.rb: passing block by reference.
+
+Mon Dec 22 00:32:43 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_with_disable_interrupt): use ENABLE_INTS instead of
+ ALLOW_INTS which may switch context. [ruby-dev:22319]
+
+ * ext/syck/emitter.c (syck_emitter_write): str bigger than
+ e->bufsize causes buffer overflow. [ruby-dev:22307]
+
+Sun Dec 21 17:29:00 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_check_inheritable): new function. [ruby-dev:22316]
+
+ * intern.h: add prototype.
+
+ * eval.c (superclass): use rb_check_inheritable().
+
+ * object.c (rb_class_initialize): check argument validity.
+
+Sun Dec 21 16:25:10 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#+): re-implemented to resolve ".." in
+ beginning of the argument.
+ (Pathname#join): concatenate from the last argument.
+ (Pathname#parent): just use Pathname#+.
+
+Sun Dec 21 00:12:37 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add new methods (TkScrollbar#assign, assign_list)
+
+ * ext/tk/sample/tkmultilistframe.rb: use TkScrollbar#assign method
+
+Sat Dec 20 21:59:03 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (HTTPRequest#meta_vars): refine regexp.
+
+ * lib/webrick/cgi.rb (CGI#start): NPH scripts return status line
+ instead of Status: header field.
+
+ * lib/webrick/cgi.rb (CGI::Socket): refine some coditions.
+
+Sat Dec 20 16:07:14 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Completion::complete): wrong
+ Regexp for word boundary. pointed out by Gavin Sinclair.
+
+ * lib/optparse.rb (OptionParser::make_switch): [no-] prefix was
+ missing.
+
+Sat Dec 20 11:40:10 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/yaml.rb (YAML::YAML): adjust Marshal version.
+
+Sat Dec 20 03:56:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_with_disable_interrupt): prohibit thread context
+ switch during proc execution. [ruby-dev:21899]
+
+Sat Dec 20 02:41:02 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb: add file. (yet another CGI library)
+
+ * MANIFEST: add lib/webrick/cgi.rb.
+
+Sat Dec 20 02:18:31 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-calculate-indent): proper indentation
+ inside of parentheses. [ruby-dev:22308]
+
+Fri Dec 19 21:24:22 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (HTTPRequest#meta_vars): should not set
+ HTTP_CONTENT_TYPE and HTTP_CONTENT_LENGTH.
+
+ * lib/webrick/https.rb (HTTPRequest#parse): should check presence
+ of cert() method to detect SSLSocket.
+
+Fri Dec 19 22:56:46 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/property.rb (SOAP::Property#load): new method for loading
+ property value into existing property tree.
+
+ * test/soap/test_property.rb: add test.
+
+Fri Dec 19 19:21:49 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/runit/cui/testrunner.rb (RUNIT::CUI::TestRunner::run):
+ should use Test::Unit::UI::{PROGRESS_ONLY,VERBOSE}.
+
+Fri Dec 19 17:36:49 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkmultilistbox.rb: bug fix
+
+ * ext/tk/sample/tkmultilistframe.rb: new sample script
+
+Fri Dec 19 03:44:27 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (parse_form_data): should return an
+ empty Hash if the body is empty.
+
+Thu Dec 18 21:47:35 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): should remove deffile if it's
+ made by miniruby. based on nobu's patch.
+
+Thu Dec 18 21:44:21 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (stack_extend): ignore inline optimization on VC7.
+
+ * win32/Makefile.sub (OS, RT): can override.
+
+ * win32/Makefile.sub (LDFLAGS): ditto. shouldn't use pdb:none
+ option. based on Tietew's patch [ruby-dev:22289]
+
+Thu Dec 18 16:38:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (fnmatch): unlike find_dirsep(), rb_path_next() never
+ return NULL.
+
+Thu Dec 18 15:27:59 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ipaddr.rb (IPSocket::getaddress): merge usa's patch.
+ [ruby-dev:21678]
+
+Wed Dec 17 15:15:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::Value::[]): should work like
+ String#[] if more than one arguments are specified.
+
+ * lib/delegate.rb: avoid using common instance name as "@obj".
+
+ * lib/cgi.rb (CGI::QueryExtension::Value): Value is no longer
+ subclass of String, but DelegateClass(String).
+
+ * ext/curses/extconf.rb: restore function check for init_color.
+ [ruby-list:38905]
+
+ * Makefile.in: need to specify $(MAINLIBS) for the miniruby
+ generation rule.
+
+ * configure.in: better FreeBSD -lc_r support.
+
+Wed Dec 17 00:16:14 2003 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: new method
+ StringScanner#beginning_of_line? (alias #bol?)
+
+ * ext/strscan/strscan.c: new method StringScanner#concat and #<<.
+
+ * ext/strscan/strscan.c: StringScanner#new(str) does not duplicate
+ nor freeze STR (allow destructive modification).
+
+ * test/strscan/test_stringscanner.rb: test new methods above.
+
+ * test/strscan/test_stringscanner.rb: test destructive string
+ modification.
+
+Tue Dec 16 21:20:47 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb: don't use local variable `pp'.
+
+ * lib/prettyprint.rb: ditto.
+
+Tue Dec 16 13:20:43 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: condition bug of if statement on
+ {pack,grid}_propagate methods
+
+Tue Dec 16 03:17:29 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: comments in strings. [ruby-talk:88012]
+
+ * test/yaml/test_yaml.rb: add test.
+
+Tue Dec 16 01:14:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (catch_timer): check rb_thread_crtical in main native
+ thread.
+
+ * eval.c (thread_timer): just sends signals periodically, to
+ prevent main native thread from receiving them in critical
+ section. [ruby-core:01959]
+
+Mon Dec 15 13:32:22 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (check_dirname): check string safety and remove extraneous
+ trailing directory separators. [ruby-dev:22279]
+
+ * file.c: renamed and externalized rb_path_next,
+ rb_path_skip_prefix, rb_path_last_separator, rb_path_end.
+
+ * intern.h: prototypes for rb_path_next, rb_path_skip_prefix,
+ rb_path_last_separator, rb_path_end.
+
+Mon Dec 15 09:27:46 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_pkcs12.c (ossl_pkcs12_initialize): first argument
+ of rb_protect should take an argument of VALUE.
+
+Sun Dec 14 18:46:48 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/socket.c (Init_socket): IPv6 is not supported although
+ AF_INET6 is defined on MinGW.
+
+ * lib/ipaddr.rb (AF_INET6): workaround in the environment which does
+ not support IPv6.
+
+Sat Dec 13 18:55:16 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/charset_alias.rb: preserve original order.
+
+ * ext/iconv/extconf.rb: remove wrapper file at clean.
+
+Sat Dec 13 18:09:42 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (thread_timer): use timer by sub-thread and nanosleep.
+ [ruby-talk:87519]
+
+ * gc.c (Init_stack): no stack adjustment for THREAD_SAFE.
+
+Sat Dec 13 17:17:59 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (proc_alloc): cache the created object at first time.
+ [ruby-talk:61288], [ruby-dev:22240]
+
+Sat Dec 13 09:01:23 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check ucontext.h.
+
+ * eval.c: use getcontext/setcontext() instead of setjmp/longjmp()
+ on ia64 or with native thread enabled. [ruby-core:01932]
+
+Sat Dec 13 03:09:14 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: anonymous struct fix. [ruby-core:01946]
+
+ * test/yaml/test_yaml.rb: add test.
+
+Fri Dec 12 22:36:44 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: add Cell#to_str and Cell#to_s for /.../ =~ aCell,
+ "#{aCell}" and so on.
+
+ * test/csv/test_csv.rb: add tests.
+
+Fri Dec 12 19:33:06 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir): remove trailing `/' from pathes.
+
+ * lib/fileutils.rb (rmdir): ditto. [ruby-dev:22238]
+
+ * lib/fileutils.rb (rmdir_r): ditto.
+
+ * lib/fileutils.rb (fu_copy_dir): check if it is a directory after
+ mkdir(2).
+
+Fri Dec 12 06:06:09 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (proc_invoke): fix class name in warning message for
+ define_method. [ruby-dev:22235]
+
+Thu Dec 11 21:24:43 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkcs12.[ch]: new files. add OpenSSL::PKCS12.
+
+ * ext/openssl/ossl.[ch]: ditto.
+
+ * ext/openssl/MANIFEST: add ossl_pkcs12.[ch].
+
+Thu Dec 11 20:54:28 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir_p): remove trailing `/' befere mkdir(2).
+ mkdir("nonexistdir/") does not work on NetBSD/Alpha 1.6.1.
+
+ * lib/fileutils.rb (fu_list): call to_str for all arguments.
+
+Thu Dec 11 20:07:01 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftools.rb (makedirs): sync with fileutils.
+
+Thu Dec 11 19:53:03 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir_p): catch all SystemCallErrors.
+ (mkdir("C:\") causes EACCESS on Windows 2000/NTFS)
+
+Thu Dec 11 19:08:02 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir_p): check if it is a directory after
+ mkdir(2) instead of before mkdir(2), to avoid race condition.
+ [ruby-talk:87730]
+ Refer: mkinstalldirs sh script, GNU mkdir(1) (coreutils 5.0)
+
+Thu Dec 11 18:49:30 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: def m( arg ) -> def m(arg).
+
+Thu Dec 11 11:39:43 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ieeefp.h), numeric.c: needed for finite() on
+ Solaris. [ruby-core:01921]
+
+ * file.c (rb_stat_inspect): adjust format specifier.
+
+ * parse.c (arg_prepend): nodetype() is for debug use.
+
+ * ruby.h (ISASCII, etc): cast to int to get rid of warning.
+
+ * ruby.h (alloca.h): include even in GCC. [ruby-core:01925]
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValue): adjust format
+ specifier.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_prec, BigDecimal_coerce,
+ BigDecimal_divmod): use rb_assoc_new() to suppress memory usage.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_split): ditto.
+
+ * ext/dl/sym.c (rb_dlsym_guardcall): guard itself should be
+ volatile.
+
+ * ext/iconv/iconv.c (iconv_convert): ensure actual parameter with
+ format specifier.
+
+ * ext/pty/pty.c (MasterDevice, SlaveDevice, deviceNo): do not
+ define unless used.
+
+ * ext/pty/pty.c (getDevice): get rid of warning.
+
+ * ext/socket/socket.c (port_str, sock_s_getaddrinfo,
+ sock_s_getnameinfo): FIX2INT() now returns long.
+
+ * ext/socket/socket.c (init_inetsock_internal): uninitialized
+ variable.
+
+ * ext/syck/rubyext.c (syck_parser_assign_io): add prototype.
+
+ * ext/syck/rubyext.c (rb_syck_mktime, yaml_org_handler): use
+ ISDIGIT() instead of isdigit() to avoid warnings and for
+ platforms which don't support non-ascii charater.
+
+Wed Dec 10 19:28:56 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): set EOF flag at short read.
+ [ruby-dev:22223], [ruby-dev:22224]
+
+Wed Dec 10 18:07:25 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/erb.rb: new method ERB#filename(=). [ruby-dev:22208]
+
+Wed Dec 10 17:54:51 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): do not set EOF flag when
+ requested length is zero. [ruby-dev:22214]
+
+Wed Dec 10 17:17:18 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): should return given string even if data read is
+ empty. [ruby-dev:22207]
+
+Wed Dec 10 17:16:06 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): adjust behavior at reading
+ beyond EOF to IO. [ruby-dev:22205]
+
+ * test/ruby/ut_eof.rb (TestEOF::Seek): test behaviors at reading
+ beyond EOF.
+
+ * test/ruby/test_file.rb, test/stringio/test_stringio.rb: include
+ TestEOF::Seek test case.
+
+Wed Dec 10 15:01:19 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/monitor/test_monitor.rb (test_cond): use Queue#deq
+ instead of sleep.
+
+Wed Dec 10 14:45:39 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/pty/pty.c (HAVE_SYS_IOCTL_H): need to include <sys/ioctl.h>
+ for TIOCSCTTY on *BSD. based on gotoyuzo's patch.
+ (ruby-bugs:PR#1211)
+
+ * ext/pty/pty.c (establishShell): should close descriptors if fork
+ failed.
+
+Wed Dec 10 12:53:05 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.h: define execv() using do_aspawn().
+
+ * process.c (proc_exec_v): remove #ifdef's which stopped needing.
+
+Tue Dec 9 23:32:23 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tkcanvas.rb, ext/tk/lib/tkdialog.rb,
+ ext/tk/lib/tkentry.rb, ext/tk/lib/tkscrollbox.rb, ext/tk/lib/tktext.rb,
+ ext/tk/sample/tkalignbox.rb, ext/tk/sample/tkcombobox.rb,
+ ext/tk/sample/tkmultilistbox.rb, ext/tk/sample/tkoptdb.rb, ext/tk/sample/tktextframe.rb,
+ ext/tk/sample/demos-en/dialog1.rb, ext/tk/sample/demos-en/dialog2.rb,
+ ext/tk/sample/demos-jp/dialog1.rb, ext/tk/sample/demos-jp/dialog2.rb:
+ overrided instance methods, which are private methods on the super
+ class, are changed to 'private'
+
+Tue Dec 9 19:53:02 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic#route_from0): make case insensitive
+ for host-part.
+
+ * test/uri/test_generic.rb (test_route): added tests for the above
+ change.
+
+Tue Dec 9 14:10:48 2003 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_check_readable): don't call io_seek if EOF flag is set,
+ to avoid clearing EOF flag.
+ (rb_io_check_writable): ditto.
+
+Tue Dec 9 02:53:55 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkalignbox.rb: new sample script
+
+Tue Dec 9 00:45:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: renamed #assert_raises to #assert_raise
+ and made the former call the latter. [ruby-core:01890]
+
+ * test/testunit/test_assertions.rb: ditto.
+
+Tue Dec 9 00:07:35 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/rpc/standaloneServer.rb: add 'shutdown' and 'status'
+ methods as delegates to WEBrick.
+
+ * test/soap/calc/{test_calc.rb,test_calc2.rb},
+ test/soap/helloworld/test_helloworld.rb,
+ test/wsdl/datetime/test_datetime.rb, test/wsdl/raa/test_raa.rb:
+ follow the change.
+
+Mon Dec 8 22:48:03 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/autorunner.rb: remove dependency to a particular
+ runner. [ruby-core:01901], [ruby-list:38869]
+
+ * lib/test/unit/ui/testrunnerutilities.rb: moved output level
+ constants from Console.
+
+ * lib/test/unit/ui/console/testrunner.rb: ditto.
+
+ * lib/test/unit/ui/{fox,gtk,gtk2,tk}/testrunner.rb (initialize):
+ accept output_level.
+
+Mon Dec 8 15:03:30 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/syck.c (syck_io_str_read): get rid of buffer overflow.
+
+Mon Dec 8 13:02:11 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/uri/common.rb: new method URI.regexp. [ruby-dev:22121]
+
+ * test/uri/test_common.rb: add test for URI.regexp.
+
+Mon Dec 8 12:44:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c: define swap16 and swap32 only if they are not
+ defined. OpenBSD defines these macros. [ruby-dev:22181]
+
+Sun Dec 7 20:54:17 2003 Tanaka Akira <akr@m17n.org>
+
+ * ext/iconv/iconv.c (map_charset): make case sensitive.
+ ext/iconv/charset_alias.rb (charset_alias): don't ignore
+ config.charset's information. sort aliases.
+
+Sat Dec 6 22:58:03 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_start_ssl): new function to wrap
+ SSL_connect and SSL_accept; if SSL_connect (or SSL_accept) returned
+ but not finished the handshake process, we should retry it.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_connect): call ossl_start_ssl.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_accept): ditto.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read): allow signal traps.
+
+Sat Dec 6 21:45:10 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (flush_before_seek): flush before seek on any platform.
+
+ * configure.in: ditto.
+
+Sat Dec 6 17:23:00 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/soap.rb(SOAP::Env.getenv): allow upcase environment variable
+ as well as downcase one.
+
+ * lib/soap/netHttpClient.rb(SOAP::NetHttpClient#proxy=): check URI.
+
+Fri Dec 5 23:22:30 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions::assert_raises,
+ Test::Unit::Assertions::assert_nothing_raised): use the last
+ argument as message unless class object.
+
+ * test/testunit/test_assertions.rb (test_assert_raises): test for
+ multiple exception list. [ruby-core:01891]
+
+ * test/testunit/test_assertions.rb (test_assert_nothing_raised): test
+ for non-exception classes.
+
+Fri Dec 5 22:23:04 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/netHttpClient.rb: proxy support did not work. fixed.
+
+ * lib/soap/property.rb: add class methods for loading property from
+ stream/file/propertyfile. propertyfile is a file which is located at
+ somedir in $:.
+
+ * lib/soap/soap.rb, lib/soap/wsdlDriver.rb, lib/soap/rpc/driver.rb,
+ lib/wsdl/importer.rb: load property from propertyfile 'soap/property'
+ e.g. /usr/local/lib/ruby/site_ruby/1.8/soap/property.
+
+ * test/soap/test_property.rb, test/soap/test_streamhandler.rb: new file.
+
+Fri Dec 5 17:26:23 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_exec_end_proc): maintain tmp_end_procs.
+ [ruby-dev:22154]
+
+Fri Dec 5 13:36:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_exec_end_proc): should not clear end_procs and
+ ephemeral_end_procs before execution. [ruby-dev:22144]
+
+ * eval.c (rb_obj_extend): call Module#extended hook after
+ extended_object. [ruby-list:38866]
+
+ * object.c (Init_Object): Module#extended defined.
+
+Fri Dec 5 13:17:30 2003 Tanaka Akira <akr@m17n.org>
+
+ * test/ruby/test_pipe.rb: use IO.pipe instead of IO.popen.
+
+Fri Dec 5 11:54:45 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): follow IO#read.
+
+ * test/ruby/ut_eof.rb, test/ruby/test_file.rb, test/ruby/test_pipe.rb,
+ test/stringio/test_stringio.rb: add EOF test.
+
+Fri Dec 5 02:49:35 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions::assert_raises):
+ allow multiple exception list. [ruby-core:01884]
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions::assert_nothing_raised):
+ check whether arguments are subclass of Exception.
+
+Thu Dec 4 23:54:00 2003 Rick Ohnemus <rick.ohnemus@systemware.com>
+
+ * dln.c (aix_loaderror): should not use member named 'errno' which
+ might be a macro (e.g. on AIX).
+
+Thu Dec 4 23:32:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): do not depend on lseek position.
+ [ruby-dev:22026]
+
+Thu Dec 4 22:37:26 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): preserve $! value when retry happens in the
+ rescue clause. [ruby-talk:86697]
+
+Thu Dec 4 21:50:07 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/drb/drb.rb (DRb::DRbMessage::send_request, send_reply):
+ should rescue errors and re-raise DRbConnError on write too.
+ [ruby-dev:22132]
+
+Thu Dec 4 16:41:17 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (exc_list): allow expanding list. [ruby-dev:22134]
+
+Thu Dec 4 14:09:24 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (test_cp): test if the error is
+ kind of SystemCallError. It is needless details that which errno
+ is set on each systems.
+
+Thu Dec 4 13:24:13 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb: use Object#__send__ instead of Object#send.
+
+Thu Dec 4 13:17:45 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/streamHandler.rb: support latest released version of
+ http-access2.
+
+Thu Dec 4 13:04:44 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/soap.rb: add SOAP::Env module for environment repository
+ such as HTTP_PROXY.
+
+ * lib/soap/property.rb: property implementation.
+
+ * lib/soap/streamHandler.rb, lib/soap/wsdlDriver.rb,
+ lib/soap/rpc/driver.rb: use soap/property.rb.
+
+ * lib/wsdl/importer.rb, lib/soap/wsdlDriver.rb, lib/soap/rpc/driver.rb:
+ use SOAP::Env.
+
+ * lib/soap/netHttpClient.rb: add basic_auth, ssl_config, and cookie
+ management interface, but ignored for now.
+
+ * lib/xsd/charset.rb: add XSD::Charset.encoding= interface to set
+ wiredump charset explicitly. it was fixed to 'utf-8' when iconv or
+ uconv module was found.
+
+Thu Dec 4 10:43:58 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/sym.c (rb_dlsym_guardcall): __declspec(noinline) is VC7
+ feature.
+
+Thu Dec 4 10:27:12 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: update hyperlink to the Japanese document.
+
+Thu Dec 4 09:12:43 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (asn1time_to_time): should check that
+ the underlying value of ASN1_TIME isn't NULL. [ruby-core:01881]
+
+Thu Dec 4 08:29:43 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (GenericServer#start): should rescue
+ Exception to avoid unexpected aborting. [ruby-core:01853]
+
+ * lib/webrick/server.rb (GenericServer#start_thread): should check
+ that peeraddr isn't nil before printing.
+
+ * lib/webrick/httpresponse.rb (HTTPResponse#start_thread): should
+ rescue Exception to avoid unexpected aborting of thread.
+
+Thu Dec 4 03:48:59 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#link, Pathname#symlink): obsoleted.
+ (Pathname#make_link, Pathname#make_symlink): new method.
+
+Thu Dec 4 01:45:24 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_read): should not terminate on empty string; wait
+ until real EOF. [ruby-dev:21969]
+
+ * io.c (argf_read): should adjust length to read, when length is
+ specified and read spans command line argument files.
+
+Wed Dec 3 19:38:36 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: correct fcntl parameter. [ruby-dev:22120]
+
+Wed Dec 3 13:49:07 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: 'format'==>'Kernel.format' (avoid override trouble)
+
+ * ext/tk/lib/tkafter.rb: ditto.
+
+ * ext/tk/lib/tkcanvas.rb: ditto.
+
+ * ext/tk/lib/tkdialog.rb: ditto.
+
+ * ext/tk/lib/tktext.rb: ditto.
+
+Wed Dec 3 13:28:13 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (lex.c): try gperf first, and copy from the source
+ directory if failed. [ruby-dev:22123]
+
+ * ext/extmk.rb (MTIMES): let makefiles depend to mkmf.rb.
+
+ * lib/mkmf.rb (configuration): DLDFLAGS was duplicated.
+
+Tue Dec 2 23:18:12 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: wrote the warning about HTTP_PROXY environment
+ variable.
+
+Tue Dec 2 21:31:42 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bin/testrb: new test runner. [ruby-core:01845]
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner.run,
+ Test::Unit::AutoRunner#process_args): take test list to run and
+ options.
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::RUNNERS,
+ Test::Unit::AutoRunner#run): should not exit inside a library,
+ just return the result instead.
+
+ * lib/test/unit.rb: ditto.
+
+ * test/runner.rb: exit with the test result.
+
+Tue Dec 2 20:18:48 2003 Eric Sunshine <sunshine@sunshineco.com>
+
+ * configure.in (AC_PROG_YACC): AC_DEFINE(OLD_YACC) if Yacc is found
+ instead of Bison or byacc.
+
+ * parse.y: If OLD_YACC is defined, ensure that YYMAXDEPTH is at least
+ 10000 (Bison's default) since some old versions of Yacc define it as
+ low as 150 by default, which is too low for Ruby to parse some files,
+ such as date/format.rb. Among other issues, the parse problem causes
+ "make test" to fail.
+
+Tue Dec 2 20:03:20 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: check if Pathnames are usable
+ for arguments.
+
+Tue Dec 2 04:22:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: fixed #assert_no_match message.
+
+ * test/testunit/test_assertions.rb: ditto.
+
+Tue Dec 2 00:43:00 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/syck.c: string buffering bug. decrementing by full
+ max_size now. [ruby-core:01834]
+
+Mon Dec 1 21:33:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_sadded): prohibit singleton method definition for
+ Numerics. fill yet another gap between Fixnum and Bignum.
+
+Mon Dec 1 17:33:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (htov16): converts endian using swap16. htov32(), hton16,
+ hton32 as well. [ruby-talk:85377]
+
+ * pack.c (swap16): swap 2 bytes no matter how big short is on the
+ platform. swap32() is also prepared.
+
+ * numeric.c (rb_num2int): returns long to preserve information.
+ rb_fix2int(), rb_num2uint(), rb_fix2uint() as well.
+ [ruby-talk:85377]
+
+ * numeric.c (rb_num2uint): should not check for value range if the
+ source value is negative.
+
+Mon Dec 1 17:14:34 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/optparse/opttest.rb: added.
+
+Mon Dec 1 16:10:52 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb: (etc) initial merge into main tree.
+
+Mon Dec 1 14:17:49 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_each_src_dest0): call #to_str to allow
+ Pathname for arguments. [ruby-core:01795]
+
+ * test/fileutils/test_fileutils.rb: does much strict test on
+ "same" files detecting.
+
+Mon Dec 1 09:28:14 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (XCFLAGS): re-export $(XCFLAGS).
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (ARCH_FLAG): export $(ARCH_FLAG) (perhaps empty value).
+
+Mon Dec 1 01:03:27 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (TRY_LINK, link_command): added support for DLDFLAGS
+ and ARCH_FLAG. [ruby-dev:22085]
+
+Sun Nov 30 20:18:07 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: keep ARCH_FLAG separate. export ARCH_FLAG.
+ [ruby-core:01819]
+
+ * Makefile.in: add ARCH_FLAG to CFLAGS.
+
+ * Makefile.in: add @CPPFLAGS@ to CPPFLAGS.
+
+ * lib/mkmf.rb (link_command, cc_command): use ARCH_FLAG.
+
+ * lib/mkmf.rb (configuration): add ARCH_FLAG to DLDFLAGS.
+
+ * Makefile.in: add ARCH_FLAG to DLDFLAGS.
+
+ * configure.in: should put getcwd in AC_CHECK_FUNCS, not
+ AC_REPLACE_FUNCS. [ruby-core:01826]
+
+Sun Nov 30 18:22:48 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: do not override CCDLDFLAGS, LDFLAGS, XLDFLAGS,
+ DLDFLAGS and LDSHARED.
+
+ * configure.in: XCFLAGS for compiling ruby itself. ARCH_FLAG is
+ reflected in CFLAGS.
+
+ * lib/mkmf.rb: ditto. do not import XCFLAGS from config.status.
+
+Sun Nov 30 17:37:36 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix [ruby-talk:86746]
+
+Sun Nov 30 13:02:00 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/encodingstyle/soapHandler.rb: refactoring - Simplifying
+ Conditional Expressions.
+
+ * lib/wsdl/soap/definitions.rb: refactoring - Move Method.
+
+ * test/xsd/{test_noencoding.rb,noencoding.xml}: new files. test for
+ encoding unspecified XML file parsing.
+
+ * test/wsdl/{test_fault.rb,map,datetime}: new files. test of
+ SOAPFault, dateTime and Apache's Map.
+
+Sun Nov 30 09:35:14 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_update): get rid of SEGV at just allocated String.
+ [ruby-core:01812]
+
+Fri Nov 28 23:19:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark): explicitly check mark recursion levels, instead
+ of unreliable stack length.
+
+Fri Nov 28 22:49:56 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb: fix TupleSpaceProxy#read, read_all.
+
+Fri Nov 28 21:44:40 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb (test_ln_s): should be a file, not
+ a directory for FreeBSD.
+
+Fri Nov 28 19:37:56 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (env_has_value, env_index): must match exactly.
+
+ * test/ruby/test_env.rb (test_has_value, test_index): condition for
+ aboves.
+
+Fri Nov 28 17:59:20 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_env.rb: add tests for ENV.
+
+Fri Nov 28 17:47:46 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRbMessage#load): rescue Errno::* and raise
+ DRbConnError.
+
+Fri Nov 28 15:41:15 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#realpath): obsolete the force_absolute
+ argument.
+
+Fri Nov 28 14:41:52 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/streamHandler.rb: drop unused http parameters.
+
+ * lib/soap/encodingstyle/soapHandler.rb, lib/soap/mapping/factory.rb,
+ lib/soap/mapping/mapping.rb, lib/soap/mapping/registry.rb,
+ lib/wsdl/soap/complexType.rb: ApacheSOAP's map support was broken
+ under WSDL dynanic client environment. fixed.
+
+ * test/wsdl/raa/*: add tests.
+
+ * lib/xsd/datatypes.rb: dateTime precision bug fix (at least, I hope.)
+ bug of soap4r. XSDDateTimeImple.to_time passed a Float to
+ Time.local/Time.gm as an usec, and NUM2LONG(rb_num2long for Float)
+ causes rounding error.
+
+ * test/soap/test_basetype.rb, test/xsd/test_xsd.rb: add tests.
+
+Fri Nov 28 04:15:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (method_arity): used wrong Proc object. [ruby-talk:86504]
+
+Fri Nov 28 00:47:29 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_f_exit), process.c (rb_f_exit_bang): treat true as
+ success, false as failure. [ruby-dev:22067]
+
+ * eval.c (rb_f_abort, rb_thread_switch), process.c (rb_f_system): use
+ ANSI macro instead of hard coded value.
+
+ * eval.c (rb_f_exit), process.c (rb_f_exit_bang): use VALUEs not but
+ TYPEs.
+
+Thu Nov 27 22:05:48 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * eval.c, gc.c: FreeBSD/ia64 currently does not have a way for a
+ process to get the base address for the RSE backing store, so
+ hardcode it for the moment.
+ [submitted by: Marcel Moolenaar <marcel@FreeBSD.org>]
+
+Thu Nov 27 17:36:42 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkafter.rb: bug fix on TkTimer#cancel_on_exception=(mode).
+ TkTimer#wait receives the exception of the callback.
+ The exception is kept on @return_value.
+
+Thu Nov 27 16:58:48 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_stat): remove _fullpath() for NUL: device.
+
+Wed Nov 26 15:38:47 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb (test_ln_s): should take the
+ existing symbolic link for OpenBSD.
+
+Wed Nov 26 04:48:42 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/token.c: removed YYTOKTMP references which
+ were causing buffer overflows on large block scalars,
+ comments, quoted scalars and plain scalars.
+
+ * ext/syck/rubyext.c: dynamic changing of buffer size.
+
+ * ext/syck/syck.h: default buffer size of 4k.
+
+Wed Nov 26 00:55:30 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpresponse.rb: add HTTPResponse#keep_alive=.
+
+ * lib/webrick/httpserver.rb (HTTPServer#run): should pass the
+ request's keep_alive flag to the response.
+
+Tue Nov 25 21:41:35 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * defines.h (ENV_IGNORECASE): should define when DOSISH without
+ human68k. [ruby-dev:22047]
+
+ * hash.c (env_has_value, env_index): don't ignore case of value.
+ [ruby-dev:22048]
+
+Tue Nov 25 21:39:37 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (path_check_1): honor sticky bits always.
+ [ruby-talk:86273]
+
+Tue Nov 25 20:02:14 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: do test in more deep
+ directory.
+
+ * test/fileutils/test_nowrite.rb: ditto.
+
+Tue Nov 25 19:04:23 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): ENV case sensitivity test
+ refined.
+
+Tue Nov 25 18:13:30 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: chdir Dir.tmpdir before each
+ test. [ruby-dev:22045]
+
+ * test/fileutils/test_nowrite.rb: ditto.
+
+Tue Nov 25 17:52:11 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): use http_proxy under CGI
+ if the environment variable is case sensitive.
+
+Tue Nov 25 16:41:33 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/wsdl/multiplefault.wsdl, test/wsdl/test_multiplefault.rb:
+ removed. this test requires extra libraries in soap4r/1.5.*.
+
+Tue Nov 25 16:24:42 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/**/*.rb, lib/wsdl/**/*.rb, lib/xsd/**/*.rb: changed license;
+ GPL2 -> Ruby's.
+
+ * lib/soap/rpc/driver.rb, lib/soap/wsdlDriver.rb,
+ lib/soap/streamHandler.rb: add interface to streamhandler.
+
+ * lib/soap/marshal.rb: raise error if parse fails.
+
+ * lib/soap/netHttpClient.rb: add https support. Patched by
+ Oliver M. Bolzer.
+
+ * lib/soap/netHttpClient.rb: dump HTTP response message body by itself.
+
+ * lib/soap/rpc/driver.rb, lib/soap/rpc/proxy.rb,
+ lib/soap/wsdlDriver.rb: add driver#mandatorycharset interface to foce
+ using charset for parsing response from buggy server.
+
+ * lib/soap/encodingstyle/soapHandler.rb: support Apache Axis's half
+ typed multi-ref array.
+
+ * lib/soap/mapping/factory.rb, lib/soap/mapping/registry.rb: map
+ SOAPStruct which has multi-accessors which name are the same, to an
+ array.
+
+ * lib/soap/rpc/element.rb: fixed illegal parameter order.
+
+ * lib/soap/rpc/element.rb: element name of response message could have
+ the name other than 'return'.
+
+ * lib/wsdl/operation.rb, lib/wsdl/operationBinding.rb,
+ lib/wsdl/soap/classDefCreator.rb, lib/wsdl/soap/methodDefCreator.rb,
+ lib/wsdl/soap/methodDefCreatorSupport.rb: WSDL/1.1 allows plural
+ fault definition in a operation. [ruby-talk:84948]
+
+ * test/wsdl/multiplefault.wsdl, test/wsdl/test_multiplefault.rb: add
+ test for above fix.
+
+ * lib/wsdl/soap/complexType.rb: support WSDL array definition with
+ maxOccures="unbound".
+
+ * lib/xsd/charset.rb: use cp932 under emx. Patched by
+ Siena. / SHINAGAWA, Norihide in [ruby-dev:21972]
+
+ * lib/xsd/xmlparser/parser.rb: set @charset nil by default. Nil means
+ 'follow encoding declaration in XML'.
+
+ * sample/soap/digraph.rb, sample/wsdl/amazon/wsdlDriver.rb,
+ sample/wsdl/googleSearch/sampleClient.rb,
+ sample/wsdl/googleSearch/wsdlDriver.rb,
+ test/wsdl/test_emptycomplextype.rb,
+ test/wsdl/marshal/test_wsdlmarshal.rb,
+ test/xsd/test_xmlschemaparser.rb: use File.open(...) { |f| f.read }
+ instead of File.open(...).read. [ruby-dev:21964]
+
+ * test/wsdl/emptycomplextype.wsdl, test/wsdl/test_emptycomplextype.rb:
+ simplify the test case.
+
+ * test/wsdl/axisArray/*: add tests for axis's array encoding.
+
+Tue Nov 25 16:15:29 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.h: don't treat Cygwin as Windows.
+
+Tue Nov 25 15:18:28 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in: change default value of --enable-pthread (default: no)
+
+Tue Nov 25 07:31:16 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary): allow newlines just before right argument
+ parenthesis. (ruby-bugs:PR#1221)
+
+Mon Nov 24 23:32:06 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_loop, URI::HTTP#proxy_open): use
+ catch/throw for redirection instead of exception.
+ (OpenURI.open_loop, OpenURI.redirectable?): restrict redirection.
+
+Mon Nov 24 19:59:48 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): use CGI_HTTP_PROXY
+ instead of HTTP_PROXY in the CGI environment.
+
+Mon Nov 24 19:32:55 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/etc/extconf.rb: check for pw_passwd in struct passwd and
+ gr_passwd in struct group for DJGPP.
+
+ * ext/etc/etc.c: ditto.
+
+ * ext/Setup.dj: support for curses, etc, zlib.
+
+Mon Nov 24 17:00:00 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: validate option names.
+ :content_length_proc and :progress_proc option implemented.
+
+Mon Nov 24 14:53:10 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (XCFLAGS): output empty value instead of `-DRUBY_EXPORT'.
+
+Sat Nov 22 23:09:45 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set enable_pthread to no on MinGW.
+
+Sat Nov 22 22:56:20 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in: add --enable-pthread option (default: yes)
+
+Sat Nov 22 22:48:46 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add Tk.grab_release and fix bug of TkComposite
+
+ * ext/tk/lib/tkafter.rb: bug fix of TkAfter#start
+
+ * ext/tk/sample/tkcombobox.rb: new sample script
+
+ * ext/tcltklib/tcltklib.c: add native thread check
+
+Sat Nov 22 18:49:47 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/curses/curses.c (window_nodelay): nodelay() of NetBSD's
+ libcruses returns no value, just like keypad().
+
+Sat Nov 22 17:36:36 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (HAVE_GETCWD): output to config.h.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (XCFLAGS): output to config.status.
+
+Sat Nov 22 13:10:10 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (have_st_ino?): djgpp has valid st_ino.
+
+Sat Nov 22 11:28:48 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (Init_stack): stack region is far smaller than usual if
+ pthread is used.
+
+Sat Nov 22 07:30:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/util/backtracefilter.rb: fixed a bug that occurred
+ when an exception had no backtrace.
+
+ * test/testunit/util/test_backtracefilter.rb: ditto.
+
+Fri Nov 21 16:44:18 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkentry.rb: fix the encoding trouble of percent
+ substitutions on validatecommand option of TkEntry widget
+
+ * ext/tk/lib/tk.rb: fix bug on {pack|grid}_propagate() method
+
+Fri Nov 21 16:12:11 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.1: Fix markups and grammar.
+
+Fri Nov 21 14:49:42 2003 Minero Aoki <aamine@loveruby.net>
+
+ * ruby.1: wrote about ruby related environment variables.
+
+Fri Nov 21 12:28:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_extended): singleton methods should not be checked
+ when dumping via marshal_dump() or _dump(). [ruby-talk:85909]
+
+Fri Nov 21 01:40:00 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in: check <pthread.h>
+
+ * ruby.h: include pthread.h if existence.
+ define is_ruby_native() macro when not HAVE_NATIVETHREAD
+
+ * eval.c: undef is_ruby_native() function when not HAVE_NATIVETHREAD
+
+Fri Nov 21 00:43:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: use #__send__ instead of #send.
+
+ * lib/test/unit/testcase.rb: ditto.
+
+Thu Nov 20 19:19:22 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: don't find the Cygwin's pthread library on MinGW.
+
+Thu Nov 20 19:15:50 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (have_st_ino?): emx (OS/2 with EMX) does not
+ have st_ino (always 0). [ruby-dev:21972]
+
+ * lib/fileutils.rb (rename_cannot_overwrite_file?): emx does not
+ allow overwriting files by rename(2).
+
+ * test/fileutils/test_fileutils.rb: windows? ->
+ have_drive_letter?, have_file_perm?
+
+Thu Nov 20 17:50:58 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkballoonhelp.rb: new sample script
+
+ * ext/tk/sample/tkmultilistbox.rb: ditto
+
+ * ext/tk/sample/tktextframe.rb: ditto
+
+Thu Nov 20 13:37:34 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ruby.h: define is_ruby_native_thread() for no native thread
+ environment
+
+ * eval.c: ditto
+
+Thu Nov 20 12:42:47 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in: always check existence of the pthread library
+
+ * ruby.h: define macros for ruby's native thread check
+
+ * eval.c: add ruby's native thread check
+
+ * gc.c: ditto
+
+Wed Nov 19 14:45:18 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (to_ary): print more friendly warning message.
+
+Wed Nov 19 14:32:08 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_same?): add djgpp and wince.
+
+ * lib/fileutils.rb (cannot_overwrite_file?): add wince.
+
+Wed Nov 19 11:04:47 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/fileutils.rb (cannot_overwrite_file?, have_st_ino?): bccwin32
+ is same as mswin32.
+
+Wed Nov 19 07:54:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit.rb: do not run tests if $! is set.
+
+ * lib/test/unit/assertionfailederror.rb: extend StandardError instead
+ Exception (irb catches the former but not the latter).
+
+Tue Nov 18 23:31:36 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * missing/memmove.c (memmove): take void *, not char *.
+
+ * missing.h (memmove): ditto.
+
+ * missing.h (strchr, strrchr): return char *, not int.
+
+Tue Nov 18 22:20:10 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_same?): temporal fix for windows.
+
+Tue Nov 18 19:05:04 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_same?): check by inode instead of path
+ name, to detect two hard links pointing to the same content.
+
+ * test/fileutils.rb: did not create correctly looped symlinks.
+
+Tue Nov 18 18:23:05 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): behave as IO at empty string.
+ [ruby-dev:21939], [ruby-dev:21941]
+
+ * ext/stringio/stringio.c (strio_getc, strio_getline): set EOF flag.
+
+ * ext/stringio/stringio.c (strio_rewind, strio_seek, strio_ungetc):
+ clear EOF flag.
+
+ * test/stringio/test_stringio.rb: imported from [ruby-dev:21941].
+
+Tue Nov 18 14:06:35 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_each_src_dest): raise if src==dest.
+ [ruby-talk:85344] [ruby-core:01699]
+
+ * lib/fileutils.rb: use Object#is_a? instead of Class#=== to allow
+ e.g. remote objects for receivers.
+
+ * lib/fileutils.rb: FileTest -> File.
+
+ * lib/fileutils.rb: put parentheses for arguments of File.xxxx?
+
+ * test/fileutils/test_fileutils.rb (test_cp): test "cp a a".
+
+ * test/fileutils/test_fileutils.rb (test_mv): test "mv a a".
+
+ * test/fileutils/test_fileutils.rb (test_ln): test "ln a a".
+
+ * test/fileutils/test_fileutils.rb (test_ln_s): test "ln_s a a".
+
+ * test/fileutils/test_fileutils.rb (test_install): test "install a a".
+
+ * test/fileutils/fileasserts.rb: new method assert_symlink.
+
+ * test/fileutils/fileasserts.rb: assert_is_directory -> assert_directory.
+
+Mon Nov 17 19:38:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (getcwdofdrv): avoid using getcwd() directly, use
+ my_getcwd() instead.
+
+ * merged NeXT, OpenStep, Rhapsody ports patch from Eric Sunshine
+ <sunshine@sunshineco.com>. [ruby-core:01596]
+
+Mon Nov 17 10:50:27 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Completion::complete): allow least
+ common completion for three or more candidates.
+
+Mon Nov 17 09:41:38 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/ui/tk/testrunner.rb,
+ lib/test/unit/ui/gtk/testrunner.rb:
+ run GUI main loop in sub thread.
+
+ * lib/test/unit/ui/gtk2/testrunner.rb: imported from rough.
+
+ * lib/test/unit/autorunner.rb (keyword_display): sort keywords.
+
+Sun Nov 16 18:10:57 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): iterator should return value from next inside
+ begin/rescue/end. (ruby-bugs:PR#1218)
+
+Sun Nov 16 13:26:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): LINK check earlier than anything else,
+ i.e. do not dump TYPE_IVAR for already dumped objects.
+ (ruby-bugs:PR#1220)
+
+ * eval.c (rb_eval): call "inherited" only when a new class is
+ generated; not on reopening.
+
+ * eval.c (eval): prepend error position in evaluating string to
+ "mesg" attribute string only when it's available and is a
+ string.
+
+Sun Nov 16 12:16:10 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: logging response body. [experimental]
+ [ruby-list:38800]
+
+Sun Nov 16 10:49:38 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/thread.rb (Thread.exclusive): wrap method definition in
+ class Thread to enable rdoc to process.
+
+Sun Nov 16 09:45:23 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (set_debug_output): warn if method is called
+ after #start. [ruby-dev:38798]
+
+Sun Nov 16 04:41:33 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): do not re-raise exception to avoid unnecessary
+ exception copying, instead modify exception and internal
+ information to adjust eval().
+
+ * eval.c (backtrace): can return the current frame information
+ only if lev < -1.
+
+Sat Nov 15 22:16:42 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * /ext/openssl/ossl_x509ext.c (ossl_x509extfactory_create_ext):
+ refine error message.
+
+Sat Nov 15 10:05:40 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_loop, OpenURI::HTTP#proxy_open):
+ refactored to support options.
+ (Buffer): maintain size by this class.
+
+Sat Nov 15 07:40:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_method_node): new API to retrieve method body.
+
+Fri Nov 14 13:21:30 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix (en-bugged at 2003/11/07)
+
+ * ext/tk/lib/tkdialog.rb: TkDialog.new accepts a parent widget
+ argument [ruby-talk:85066]
+
+Thu Nov 13 20:53:35 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (Kernel[#.]open): hard coded URI schemes removed.
+ [ruby-ext:02251]
+
+Thu Nov 13 19:17:00 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * lib/test/unit/ui/tk/testrunner.rb: use grid and panedwindow
+ (if available)
+
+Thu Nov 13 17:56:41 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_uri): use File::RDONLY.
+ reported by Take_tk <ggb03124@nifty.ne.jp>.
+ [ruby-ext:02245]
+
+Thu Nov 13 16:45:53 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509req.c (ossl_x509req_to_der): add function for
+ X509::Request#to_der.
+
+Thu Nov 13 11:31:14 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Completion#complete): prior shorter
+ name to containing longer name.
+
+Thu Nov 13 06:08:54 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: stop freezing some classes
+
+ * ext/tk/lib/multi-tk.rb: ditto.
+
+Wed Nov 12 17:32:49 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_throws, assert_nothing_thrown):
+ uncaught throw in sub thread raises ThreadError.
+
+ * lib/test/unit/ui/tk/testrunner.rb (setup_ui): "expand" is not
+ necessary.
+
+Wed Nov 12 14:09:43 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/monitor/test_monitor.rb: fix the timing problem by Queue.
+
+Wed Nov 12 12:59:44 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/monitor/test_monitor.rb: added.
+
+Wed Nov 12 10:14:28 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb: refactored. Thanks, Gennady Bystritsky.
+
+Wed Nov 12 06:11:39 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (ossl_x509_sk2ary, ossl_x509crl_sk2ary):
+ add functions to convert STACK into Array.
+
+ * ext/openssl/ossl.h: add prototypes.
+
+ * ext/openssl/ossl_pkcs7.c (ossl_pkcs7_set_certificates,
+ ossl_pkcs7_get_certificates, ossl_pkcs7_get_crls,
+ ossl_pkcs7_set_crls): add functions for PKCS7#certificates=
+ PKCS7#certificates, PKCS7#crls= and PKCS7#crls.
+
+Wed Nov 12 00:47:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/ui/testrunnermediator.rb: should require 'test/unit'.
+
+Tue Nov 11 23:54:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/ui/gtk/testrunner.rb: added a rescue clause to handle
+ the case when the requested font is not available.
+
+Tue Nov 11 22:44:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (appendline): file may not end with newline. a bug if
+ READ_DATA_PENDING_PTR is defined. [ruby-talk:84925]
+
+Tue Nov 11 10:42:41 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: raise an exception when creating TkWindow
+ object, because TkWindow class is an abstract class.
+
+Tue Nov 11 03:30:43 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/ext/openssl/ossl_conf.c (ossl_config_get_value): return nil
+ if the specified value doesn't exist.
+
+ * lib/ext/openssl/ossl_conf.c (ossl_config_get_section): return
+ a empty hash if the specified section doesn't exist.
+
+Mon Nov 10 11:40:29 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb (wait): return true on signal/broadcastfalse and
+ false on timeout. Thanks Gennady Bystritsky.
+
+Mon Nov 10 00:07:10 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary): primary_value may be 0 when syntax error.
+ [ruby-talk:84893]
+
+Sun Nov 9 02:05:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: un-deprecated #assert_not_nil to
+ maintain symmetry with #assert_nil. Also added better output for
+ #assert_kind_of.
+
+ * test/testunit/tc_assertions.rb: ditto.
+
+Sat Nov 8 18:50:20 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/wsdl/raa/*: add new testcase for WSDL loading, parsing and
+ reading.
+
+ * test/soap/marshal/*: backport from soap4r/1.5.1. all differences are
+ for ruby/1.6.
+
+ * lib/soap/*: backport from soap4r/1.5.1. all differences are for
+ ruby/1.6.
+
+ * lib/wsdl/data.rb, lib/wsdl/xmlSchema/data.rb: move definition of
+ ArrayTypeAttrName from ::WSDL::XMLSchema::* to ::WSDL::*.
+ [ruby-talk:84813]
+
+ * lib/wsdl/soap/definitions.rb: element name typo in custom exception
+ struct definition which is needed for wsdlDriver; camelCase ->
+ underscore_name.
+
+Sat Nov 8 13:49:50 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in: improvement of pthread check
+
+Sat Nov 8 13:28:46 2003 Takaaki Tateishi <ttate@ttsky.net>
+
+ * ext/dl/sym.c: Add DL.win32_last_error and DL.last_error.
+ Thanks, Kaoru Shirai.
+
+Sat Nov 8 06:19:38 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: To fix 'pthread-enabled Tcl/Tk' problem,
+ TclTkIp#_eval calls Tcl_Eval() on the mainloop thread only
+ (queueing a handler to the EventQueue).
+
+ * ext/tcltklib/README.1st: edit the description of '--with-pthread-ext'
+
+Fri Nov 7 23:23:04 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#+): if self or the argument is `.', return
+ another.
+ (Pathname#parent): if self is `.', return `..'.
+ (Pathname#children): if self is `.', don't prepend self for a
+ pathname in a result.
+ (Pathname#join): re-implemented using Pathname#+.
+ (Pathname#find): if self is `.', remove `./' prefix of yielding
+ pathname.
+
+Fri Nov 7 10:23:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (make_hostent): get rid of SEGV on aliases
+ lookup failure. (ruby-bugs:PR#1215)
+
+Fri Nov 7 04:08:05 2003 UENO Katsuhiro <katsu@blue.sky.or.jp>
+
+ * ext/zlib/zlib.c (Init_zlib): define Zlib::GzipReader#each_line as
+ an alias of Zlib::GzipReader#each.
+
+Fri Nov 7 01:03:16 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): save and restore rb_prohibit_interrupt.
+ [ruby-dev:21857]
+
+Thu Nov 6 18:05:07 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_inspect): show the path also at a closed file.
+ [ruby-dev:21851]
+
+Thu Nov 6 11:42:07 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_set_string, strio_reopen): check
+ tainted.
+
+ * ext/stringio/stringio.c (strio_copy, strio_ungetc, strio_write,
+ strio_putc): add infection.
+
+ * ext/stringio/stringio.c (strio_path): just nil. [ruby-dev:21846]
+
+ * ruby.c (proc_options): reserve searched script path in the
+ source file name table. [ruby-list:38765]
+
+ * lib/optparse.rb (OptionParser::Completion#complete): default not to
+ ignore case on completion. [ruby-talk:84726]
+
+ * win32/win32.c (make_cmdvector): process backslashes even if a quote
+ is not enclosed.
+
+Wed Nov 5 23:49:45 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * sample/openssl/gen_csr.rb: there (at least) is a CA which does not
+ accept DN in UTF8STRING format. it's a sample.
+
+Wed Nov 5 22:55:16 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in, eval.c, signal.c: : add '--with-pthread-ext'
+ option to fix the pthread trouble on 'tcltklib'
+
+ * ext/tcltklib/README.1st: add the description of '--with-pthread-ext'
+
+ * ext/tk/lib/tktext.rb: add TkText#text_copy, text_cut, text_paste
+ to support Tcl/Tk8.4's tk_textCopy, tk_textCut, tk_textPaste
+
+ * ext/tk/lib/tk.rb: add TkMenu#set_focus support Tcl/Tk's
+ tk_menuSetFocus
+
+Wed Nov 5 17:33:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): allow interrupt during loaded program
+ evaluation. [ruby-dev:21834]
+
+ * hash.c (rb_hash_fetch): always warn if default argument and a
+ block are supplied at the same time. [ruby-dev:21842]
+
+ * hash.c (env_fetch): ditto.
+
+ * array.c (rb_ary_fetch): ditto.
+
+Wed Nov 5 19:08:47 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Switch::PlacedArgument::parse):
+ do not remove next argument if empty value is placed.
+
+ * test/optparse: added.
+
+Wed Nov 5 17:05:18 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/ui/gtk/testrunner.rb: typo.
+
+Wed Nov 5 11:13:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c: add #include "version.h". this file still depends on it.
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub,
+ wince/Makefile.sub: add version.h dependency to string.c.
+
+Wed Nov 5 09:14:23 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb: revert to the previous revision.
+
+Wed Nov 5 08:39:51 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/https.rb (HTTPRequest#parse): set @client_cert_chain.
+
+ * lib/webrick/https.rb (HTTPRequest#meta_vars): create
+ SSL_CLIENT_CERT_CHAIN_n from @client_cert_chain.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_get_peer_cert_chain): return nil
+ if no cert-chain was given.
+
+Tue Nov 4 23:44:48 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub:
+ remove needless version.h dependency.
+
+Tue Nov 4 23:38:43 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * class.c, hash.c, string.c: remove #include "version.h".
+
+ * Makefile.in: remove needless version.h dependency.
+
+Tue Nov 4 06:54:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): fptr->f may be NULL, if IO is closed in the
+ signal handler.
+
+ * io.c (io_read): ditto.
+
+ * string.c (get_pat): remove 1.8.0 warning code.
+
+ * string.c (rb_str_match): extend warning until 1.8.2.
+
+ * string.c (rb_str_match2): ditto.
+
+ * class.c (class_instance_method_list): remove 1.8.0 warnings.
+ method_list now recurs. [ruby-dev:21816]
+
+ * class.c (rb_obj_singleton_methods): ditto.
+
+ * array.c (rb_ary_select): remove select with block.
+ [ruby-dev:21824]
+
+ * hash.c (rb_hash_select): ditto.
+
+ * hash.c (env_select): ditto.
+
+ * re.c (match_select): ditto.
+
+ * struct.c (rb_struct_select): ditto.
+
+Mon Nov 3 22:53:21 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/racc/parser.rb: synchronize with Racc 1.4.4.
+
+ * ext/racc/cparse/cparse.c: ditto.
+
+ * ext/racc/cparse/cparse.c (parse_main): should abort when
+ the length of LR state stack <=1, not ==0.
+
+Mon Nov 3 08:50:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (check_uid_switch): remove duplicated error messages.
+
+ * process.c (check_gid_switch): ditto.
+
+Sun Nov 2 02:28:33 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/ssl.rb: new option :SSLExtraChainCert.
+
+Sun Nov 2 01:02:04 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (rb_str_hash): Update the HASH_PERL alternative hash
+ algorithm in sync with Perl 5.8.
+
+ * st.c (strhash): Ditto.
+
+Sat Nov 1 18:21:09 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_peer_cert_chain): add new method
+ SSLSocket#peer_cert_chain.
+
+ * ext/openssl/ossl_x509req.c (GetX509ReqPtr): new function
+ which returns underlying X509_REQ.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_set_issuer_cert,
+ ossl_x509extfactory_set_subject_cert, ossl_x509extfactory_set_crl,
+ ossl_x509extfactory_set_subject_req, ossl_x509extfactory_set_config):
+ use underlying C struct without duplication not to leak momory.
+
+Sat Nov 1 01:49:03 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/mapping/factory.rb: mark marshalled basetype objects when
+ @allow_original_mapping is true. multi-referencing basetype node is
+ prohibited in SOAP/1.1 encoding but soap4r's original ruby object
+ mapping requires basetype to be marked to detect self referencing
+ loop. e.g. o = 1; o.instance_eval { @iv = o } soap4r's original
+ mapping is only used through soap/marshal API.
+
+ * test/soap/marshal/test_marshal.rb: add tests for self referencing
+ immutable objects.
+
+ * test/soap/calc/test_calc_cgi.rb: fix test name.
+
+Fri Oct 31 22:26:29 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/string_wce.c (strrchr): should decrement pointer.
+
+ * wince/Makefile.sub: correct a range of isdigit().
+
+Fri Oct 31 12:55:24 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in, lib/mkmf.rb: add RPATHFLAG for NetBSD.
+ [ruby-dev:21791]
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, win32/Makefile.sub: ditto.
+
+Fri Oct 31 01:38:14 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * wince/Makefile.sub, win32/Makefile.sub (.y.c): allow white spaces
+ at the beginning of line to remove by sed. (ruby-bugs-ja:PR#580)
+
+Fri Oct 31 01:02:24 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compar.c (cmp_equal): protect exceptions from <=> comparison
+ again. returns nil if any exception or error happened during
+ comparison.
+
+ * eval.c (search_required): should update *featurep when DLEXT2 is
+ defined. (ruby-bugs-ja:PR#581)
+
+Thu Oct 30 23:41:04 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: add DRbArray
+
+ * lib/drb/invokemethod.rb: fix Hash#each problem. [ruby-dev:21773]
+
+ * lib/drb/unix.rb: add LoadError. [ruby-dev:21743]
+
+Thu Oct 30 23:19:11 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/generator.rb: better XML pretty printing.
+
+ * lib/soap/encodingstyle/soapHandler.rb: remove unnecessary namespace
+ assignment in the element which has "encodingStyle" attribute, and
+ add necessary namespace assignment for "arrayType" attribute.
+
+ * test/soap/calc/test_calc_cgi.rb: take over $DEBUG to ruby process
+ through CGI.
+
+Thu Oct 30 22:59:39 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/yaml2byte.c: HASH const too long. Thanks, matz.
+
+Thu Oct 30 19:13:53 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syck/MANIFEST: Add yamlbyte.h.
+
+Thu Oct 30 14:25:31 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (READ_DATA_BUFFERED): new macro to detect whether stdio
+ buffer filled.
+
+ * io.c (rb_io_fptr_cleanup): move path deallocation to
+ rb_io_fptr_finalize (finalizer called by GC).
+
+Thu Oct 30 13:23:39 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (logop): left may be NULL. [ruby-talk:84539]
+
+ * eval.c (rb_eval): NODE_CASE nd_head may be NULL.
+
+Thu Oct 30 10:14:51 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/test/unit/autorunner.rb: make fox runner work.
+
+Thu Oct 30 09:32:26 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_f_system): fixed lack of security check before
+ calling do_spawn() on win32. [ruby-talk:84555]
+
+Thu Oct 30 02:46:35 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): single array value to normal Proc#call
+ (i.e. not via lambda call), should be treated just like yield.
+ [ruby-dev:21726]
+
+Thu Oct 30 02:25:48 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#initialize):
+ add new method to inherit @sync from @io.sync.
+
+ * ext/openssl/lib/net/protocols.rb (SSLIO#ssl_connect): no need to
+ set sync flag explicitly.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_initialize): call super.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): set extra chain
+ certificates in @extra_chain_cert.
+
+Wed Oct 29 22:02:04 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/drb/drbtest.rb: use rbconfig.rb to make the path of ruby
+ interpreter to exec, instead of test/ruby/envutil.rb,
+
+Wed Oct 29 19:58:59 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tcltklib/tcltklib.c (CONST84): define CONST84 when it is not
+ defined and TCL_MAJOR_VERSION >= 8.
+
+ * ext/tcltklib/tcltklib.c (VwaitVarProc, WaitVariableProc,
+ rb_threadVwaitProc): use CONST84 instead of CONST.
+
+ * ext/tcltklib/tcltklib.c (ip_rbTkWaitCommand,
+ ip_rb_threadTkWaitCommand): use CONST84 always.
+
+Wed Oct 29 17:27:05 2003 Tanaka Akira <akr@m17n.org>
+
+ * re.c (rb_reg_s_union, Init_Regexp): new method `Regexp.union'.
+
+ * lib/pathname.rb (realpath): examine Dir.pwd because it may have
+ symlinks.
+
+Wed Oct 29 17:16:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_longjmp): must not disturb original jump.
+ [ruby-dev:21733]
+
+Wed Oct 29 15:28:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): taint preallocated exception object
+ sysstack_error. [ruby-talk:84534]
+
+Wed Oct 29 11:27:39 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (ret_args): node may be NULL. [ruby-talk:84530]
+
+Tue Oct 28 15:20:12 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tcltklib/tcltklib.c (VwaitVarProc, ip_rbVwaitObjCmd,
+ WaitVariableProc, WaitVisibilityProc, WaitWindowProc,
+ ip_rbTkWaitObjCmd, ip_rbTkWaitCommand, rb_threadVwaitProc,
+ rb_threadWaitVisibilityProc, rb_threadWaitWindowProc,
+ ip_rb_threadVwaitObjCmd, ip_rb_threadTkWaitObjCmd): prototype;
+ avoid VC++ warnings.
+
+Mon Oct 27 19:19:55 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_longjmp): ignore reentering error while warning.
+ [ruby-dev:21730]
+
+Mon Oct 27 00:23:50 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_ruby): bug fix on Win : hang-up when
+ calling 'exit' in the Tk callback procedure. [ruby-list:38656]
+
+Sat Oct 25 09:18:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_method_missing): protect exception from within
+ "inspect". (ruby-bugs:PR#1204)
+
+Fri Oct 24 23:26:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_each): Hash#each should yield single value.
+ [ruby-talk:84420]
+
+ * hash.c (env_each): ditto for ENV.each.
+
+Thu Oct 23 20:25:32 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (GenericServer#start): should rescue
+ IOError from IO::accept. [ruby-dev:21692]
+
+Thu Oct 23 17:59:36 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): initialize stack bottom for embedding.
+ [ruby-dev:21686]
+
+ * ext/dl/extconf.rb: move list of files to clean from DEPEND file,
+ to get rid of macro redefinitions.
+
+Thu Oct 23 13:44:00 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y: integrate operations for stack_type. [ruby-dev:21681]
+
+Thu Oct 23 00:41:45 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/calc/*, test/soap/helloworld/*: set logging threshold
+ to ERROR.
+
+Wed Oct 22 12:53:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir#collect_file):
+ ignore tests which raised LoadError.
+
+ * test/drb/drbtest.rb, test/ruby/test_beginendblock.rb,
+ test/ruby/test_system.rb: avoid requiring same file twice.
+
+ * test/drb/test_drbssl.rb, test/drb/test_drbunix.rb: should not use
+ ARGV unless invoked directly. do not create test cases unless
+ required libraries are available.
+
+Wed Oct 22 02:31:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): should not ignore exit_value in END
+ execution. [ruby-dev:21670]
+
+Tue Oct 21 23:16:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): call finalizers and exit procs before
+ terminating threads.
+
+ * eval.c (ruby_cleanup): preserve ruby_errinfo before ruby_finalize_0().
+
+Tue Oct 21 15:57:11 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir#collect_file):
+ prepend the directory of target file to the load path.
+
+Tue Oct 21 15:08:53 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (do_spawn, do_aspawn): should wait child process even
+ if callded with P_OVERLAY.
+
+ * win32/win32.c (do_spawn, do_aspawn): should return child's exit
+ status to parent.
+
+Tue Oct 21 00:35:02 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/calc/*, test/soap/helloworld/*: catch the exception from
+ test server thread and recover.
+
+Tue Oct 21 00:22:57 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/*: import drb/runit.
+
+Mon Oct 20 23:55:47 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): set current node after arguments evaluation.
+ [ruby-dev:21632]
+
+ * eval.c (rb_yield_0): set current node and keep it at local jump.
+
+Mon Oct 20 22:01:18 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_cleanup): keep thread group for main thread.
+ [ruby-dev:21644]
+
+Mon Oct 20 18:28:10 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_catch): backout.
+
+Mon Oct 20 17:31:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (PUSH_FRAME): generate unique number to be TAG_JUMP()
+ destination.
+
+ * eval.c (localjump_destination): use unique number in ruby_frame
+ for localjump destination.
+
+Mon Oct 20 11:31:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_signal.rb (test_signal): restore old trap.
+
+Mon Oct 20 11:00:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_sweep): loosen page free condition to avoid add_heap()
+ race condition. [ruby-dev:21633]
+
+ * gc.c (gc_sweep): do not update malloc_limit when malloc_increase
+ is smaller than malloc_limit.
+
+Mon Oct 20 09:45:12 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/debug.rb (debug_command): remove debug print.
+
+Sun Oct 19 13:12:30 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (foreachline, dir_foreach): add obsolete warning.
+
+Sun Oct 19 00:14:22 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/calc/*, test/soap/helloworkd/*: changed port# of test
+ server. (17171)
+
+Sat Oct 18 23:01:32 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * missing/acosh.c (DBL_MANT_DIG): typo fix(ifdef -> ifndef).
+
+Sat Oct 18 05:48:59 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: YAML::Syck::compile method.
+
+ * ext/syck/syck.c: Buffer edge bug.
+
+ * ext/syck/yaml2byte.c: YAML to bytecode converter.
+
+ * ext/syck/yamlbyte.h: Ditto.
+
+ * ext/syck/bytecode.c: Bytecode parser fixes to empty collections
+ and empty strings.
+
+ * ext/syck/token.c: Ditto.
+
+Fri Oct 17 23:07:38 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/enumerator/enumerator.c, ext/enumerator/enumerator.txt:
+ Provide Kernel#to_enum as an alias for Kernel#enum_for. Maybe
+ this is a better name.
+
+Fri Oct 17 23:00:30 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/generator.rb: Add rdoc documentation.
+
+Fri Oct 17 22:16:42 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Reword and fix Overview.
+
+ * lib/set.rb: It is not necessary to require
+ 'test/unit/ui/console/testrunner'.
+
+Fri Oct 17 11:15:22 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_range.rb: added.
+
+ * MANIFEST: add test/ruby/test_range.rb.
+
+Fri Oct 17 03:21:23 2003 William Sobel <will.sobel@barra.com>
+
+ * ext/socket/socket.c (make_hostent): h_aliases may be NULL.
+ (ruby-bugs:PR#1195)
+
+ * ext/socket/socket.c (sock_s_gethostbyaddr): ditto.
+
+Fri Oct 17 00:12:41 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: (bug fix) instance variable @frame was used
+ without initializing on TkComposite module.
+
+Thu Oct 16 23:51:04 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: If $DEBUG == true and some exception is caused
+ in a callback operation, Ruby/Tk shows a (verbose) backtrace
+ information on the callback process.
+
+Thu Oct 16 17:09:19 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/debug.rb (DEBUGGER__::Context::debug_command): do not call
+ debug_silent_eval() when $1 is not set. (ruby-bugs:PR#1194)
+
+Thu Oct 16 16:54:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): ("a"..."a").to_a should return [].
+ [ruby-core:01634]
+
+Thu Oct 16 16:40:51 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb:
+ Add Tk::EncodedString and Tk::UTF8_String class to support
+ characters using the \uXXXX escape to the UNICODE string.
+
+ * ext/tk/sample/{demos-en,demos-jp}/unicodeout.rb
+ new demo-scripts (samples of Tk::UTF8_String)
+
+ * ext/tk/sample/{demos-en,demos-jp}/widget
+ add entries for 'unicodeout.rb'
+
+Thu Oct 16 08:38:06 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/digest/test_digest.rb (test_eq): show failed class.
+
+ * test/ruby/test_iterator.rb (test_break, test_return_trace_func):
+ test localjump destination.
+
+Wed Oct 15 20:22:31 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/netHttpClient.rb: use URI::HTTP#request_uri instead of
+ instance_eval('path_query'). [ruby-list:38575]
+
+Wed Oct 15 17:24:45 2003 URABE Shyouhei <root@mput.dip.jp>
+
+ * lib/cgi.rb (CGI::Cookie): tiny typo fix.
+
+Wed Oct 15 15:00:54 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_run): just return FAILURE instead of parse error
+ count. [ruby-list:38569]
+
+Wed Oct 15 13:17:02 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/digest/digest.c (rb_digest_base_alloc): need to initialize
+ buffer. [ruby-dev:21622]
+
+Wed Oct 15 11:23:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): dump extended modules as well.
+
+ * marshal.c (r_object0): TYPE_USRMARSHAL should restore extended
+ modules before invoking marshal_load. these two fixes are done
+ by Masatoshi Seki <m_seki@mva.biglobe.ne.jp>.
+
+Wed Oct 15 09:30:34 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/enumerator/enumerator.c (enumerator_each): avoid VC++ warning.
+
+ * ext/syck/syck.h: include stdio.h for definition of FILE.
+
+Wed Oct 15 08:09:07 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/bytecode.c: Checkin of YAML bytecode support.
+
+ * ext/syck/gram.c: Ditto.
+
+ * ext/syck/syck.c: Ditto.
+
+ * ext/syck/token.c: Ditto.
+
+ * ext/syck/handler.c: Ditto.
+
+ * ext/syck/handler.c: Now using 'tag' rather than 'taguri' in type URIs.
+
+ * ext/syck/rubyext.c: Ditto (on both counts).
+
+Wed Oct 15 05:05:53 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/generator.rb: A new library which converts an internal
+ iterator to an external iterator.
+
+ * lib/abbrev.rb: A new library which creates an abbreviation table
+ from a list.
+
+Wed Oct 15 04:31:51 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/demos-en/entry3.rb, ext/tk/sample/demos-jp/entry3.rb:
+ new demo-scripts
+
+ * ext/tk/sample/demos-en/widget, ext/tk/sample/demos-jp/widget:
+ add entries for 'entry3.rb'
+
+Wed Oct 15 04:31:47 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/digest/test_digest.rb: Moved from ext/digest/test.rb.
+
+Wed Oct 15 03:53:20 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fixed trouble on auto-load Tcl commands (enbug
+ on the last commit).
+
+Wed Oct 15 00:25:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): argument parentheses preceded by spaces should
+ be warned; not error. [ruby-talk:84103]
+
+Wed Oct 15 00:20:15 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: replace Tcl/Tk's vwait and tkwait to
+ switch on threads smoothly and avoid seg-fault.
+
+ * ext/tcltklib/tcltklib.c: add TclTkIp._thread_vwait and
+ _thread_tkwait for waiting on a thread. (Because Tcl/Tk's vwait
+ and tkwait command wait on an eventloop.)
+
+ * ext/tk/lib/multi-tk.rb: support TclTkIp._thread_vwait and
+ _thread_tkwait.
+
+ * ext/tk/lib/tk.rb: now, TkVariable#wait has 2 arguments.
+ If 1st argument is true, waits on a thread. If false, waits on
+ an eventloop. If 2nd argument is true, checks existence of
+ rootwidgets. If false, doesn't. Default is wait(true, false).
+
+ * ext/tk/lib/tk.rb: add TkVariable#tkwait(arg) which is equal to
+ TkVariable#wait(arg, true). wait_visibility and wait_destroy
+ have an argument for waiting on a thread or an eventloop.
+
+ * ext/tk/lib/tk.rb: improve of accessing Tcl/Tk's special variables.
+
+ * ext/tk/lib/tkafter.rb: support 'wait on a thread' and 'wait on
+ an eventloop'.
+
+Wed Oct 15 00:10:24 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/baseData.rb: Introduce SOAPType as the common ancestor of
+ SOAPBasetype and SOAPCompoundtype.
+
+ * lib/soap/generator.rb, lib/soap/element.rb, lib/soap/encodingstyle/*:
+ Encoding methods signature change. Pass SOAPGenerator as a parameter.
+
+ * lib/soap/mapping/*, test/soap/marshal/test_marshal.rb: Refactoring
+ for better marshalling/unmarshalling support. Now I think SOAP
+ marshaller supports all kind of object graph which is supported by
+ Ruby's original marshaller. Of course there could be bugs as always.
+ Find it. :-)
+
+ * lib/soap/rpc/standaloneServer.rb: Set severity threshould to INFO.
+ DEBUG is too noisy.
+
+ * lib/xsd/datatypes.rb: DateTime#of is obsoleted. Use DateTime#offset.
+
+ * test/wsdl/emptycomplextype.wsdl, test/xsd/xmlschema.xml: Avoid
+ useless warning.
+
+Tue Oct 14 19:09:35 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_finalize_0): return the given exit status unless
+ SystemExit got raised.
+
+Tue Oct 14 11:53:49 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (ruby_stop): never return.
+
+ * ruby.h (ruby_run): ditto.
+
+Tue Oct 14 04:43:55 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (realpath): make ELOOP check bit more robust.
+ (children): prepend self by default.
+ (chroot): obsoleted.
+
+Tue Oct 14 02:29:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_require_safe): segfault after loading .so.
+
+Tue Oct 14 02:05:23 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Setup*, ext/enumerator/*: Add ext/enumerator, a helper
+ module for the Enumerable interface.
+
+Mon Oct 13 23:55:59 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/ruby/envutil.rb: use Config::CONFIG["ruby_install_name"],
+ not "ruby".
+
+Mon Oct 13 23:57:29 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_feature_p): match by classified suffix.
+
+ * eval.c (rb_require_safe): require library in the specified safe
+ level.
+
+ * variable.c (rb_autoload, rb_autoload_load): restore safe level
+ when autoload was called. [ruby-dev:21338]
+
+ * intern.h: prototypes; rb_require_safe.
+
+ * test/runner.rb: accept non-option arguments.
+
+Mon Oct 13 20:49:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_new4): should not preserve FL_TAINT status in the
+ internal shared string. [ruby-dev:21601]
+
+ * string.c (rb_str_new4): ditto.
+
+ * eval.c: use EXIT_SUCCESS and EXIT_FAILURE for exit values.
+
+ * process.c: ditto. [ruby-list:38521]
+
+Mon Oct 13 19:51:02 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * lib/debug.rb (debug_command): should enter emacs mode when
+ assigned any value to the environment variable "EMACS".
+ On Meadow, (getenv "EMACS") is "meadow".
+
+Sun Oct 12 14:45:03 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/win32ole/extconf.rb: check "windows.h", not "windows".
+ [ruby-talk:84051]
+
+Sat Oct 11 20:41:03 2003 Corinna Vinschen <corinna@vinschen.de>
+
+ * file.c (eaccess): Use access(2) on Cygwin.
+
+Sat Oct 11 17:09:21 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/rexml/quickpath.rb (REXML::QuickPath::match):
+ escape '[' to avoid warning.
+
+Sat Oct 11 16:08:41 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (realpath): check existence of the file.
+
+ * lib/pathname.rb (realpath): re-implemented.
+ (realpath_root?, realpath_rec): removed
+
+Sat Oct 11 10:19:39 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb: handle exceptions correctly. Thanks, Gennady
+ Bystritsky.
+
+Fri Oct 10 07:50:54 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (is_defined): inheritance line adjustment as like as
+ rb_call_super().
+
+Fri Oct 10 01:19:00 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): add
+ optional argument to specify the DirectoryString type
+ (ASN1::UTF8STRING by default). RFC3280 deprecates PrintableString
+ for DirectoryString, and strongly requires to use UTF8String for
+ all certificates issued after December, 31 2003.
+
+ * ext/openssl/lib/openssl/x509.rb (X509::Name::parse): ditto.
+
+Thu Oct 9 23:50:21 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): prevent thread from GC.
+ [ruby-dev:21572]
+
+Thu Oct 9 19:11:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): non-volatile should be restored from
+ volatile.
+
+Thu Oct 9 17:43:36 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (proc_save_safe_level, proc_get_safe_level,
+ proc_set_safe_level): save/restore safe level 1..4.
+
+Thu Oct 9 16:33:23 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): remove unnecessary iv restoration for
+ USRMARSHAL. [ruby-dev:21582]
+
+ * marshal.c (w_object): dump generic instance variables from
+ a string from '_dump'.
+
+ * variable.c (rb_generic_ivar_table): return 0 if obj's FL_EXIVAR
+ is not set.
+
+ * time.c (time_dump): copy instance variables to dumped string, to
+ be included in the marshaled data.
+
+ * bignum.c (rb_big2ulong): add range check to ensure round trip.
+
+Thu Oct 9 15:45:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (uv_to_utf8): change message to "out of range", since
+ negative values are not "too big". [ruby-dev:21567]
+
+Thu Oct 9 14:05:38 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_set_end_proc, rb_exec_end_proc): restore safe level.
+ [ruby-dev:21557]
+
+Thu Oct 9 10:51:04 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_yield_0): no error if block is empty.
+
+Thu Oct 9 06:43:33 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (localjump_error): id should be ID.
+
+ * eval.c (rb_eval): nd_rval is set in copy_node_scope().
+
+ * eval.c (rb_yield_0): unused variable.
+
+ * eval.c (rb_yield_0): nothing to do for empty node.
+
+ * eval.c (call_end_proc, proc_invoke): adjust backtrace in END.
+ [ruby-dev:21551]
+
+ * eval.c (rb_thread_start_0): set the value by break as the result.
+ [ruby-dev:21552]
+
+ * eval.c (rb_thread_start_0, rb_thread_raise, rb_callcc): save
+ variables across THREAD_SAVE_CONTEXT.
+
+Thu Oct 9 12:05:46 2003 Eric Sunshine <sunshine@sunshineco.com>
+
+ * configure.in: revived NextStep, OpenStep, and Rhapsody ports which
+ had become unbuildable; enhanced --enable-fat-binary option so that
+ it accepts a list of desired architectures (rather than assuming a
+ fixed list), or defaults to a platform-appropriate list if user does
+ not provide an explicit list; made the default list of architectures
+ for MAB (fat binary) more comprehensive; now uses -fno-common even
+ when building the interpreter (in addition to using it for
+ extensions), thus allowing the interpreter to be embedded into a
+ plugin module of an external project (in addition to allowing
+ embedding directly into an application); added checks for
+ <netinet/in_systm.h> (needed by `socket' extension) and getcwd(); now
+ ensures that -I/usr/local/include is employed when extensions'
+ extconf.rb scripts invoke have_header() since extension checks on
+ NextStep and OpenStep will fail without it if the desired resource
+ resides in the /usr/local tree; fixed formatting of --help message.
+
+ * Makefile.in: $(LIBRUBY_A) rule now deletes the archive before
+ invoking $(AR) since `ar' on Apple/NeXT can not "update" MAB archives
+ (see configure's --enable-fat-binary option); added rule for new
+ missing/getcwd.c.
+
+ * defines.h: fixed endian handling during MAB build (see configure's
+ --enable-fat-binary option) to ensure that all portions of the
+ project see the correct WORDS_BIGENDIAN value (some extension modules
+ were getting the wrong endian setting); added missing constants
+ GETPGRP_VOID, WNOHANG, WUNTRACED, X_OK, and type pid_t for NextStep
+ and OpenStep; removed unnecessary and problematic HAVE_SYS_WAIT_H
+ define in NeXT section.
+
+ * dir.c: do not allow NAMLEN() macro to trust dirent::d_namlen on
+ NextStep since, on some installations, this value always resolves
+ uselessly to zero.
+
+ * dln.c: added error reporting to NextStep extension loader since the
+ previous behavior of failing silently was not useful; now ensures
+ that NSLINKMODULE_OPTION_BINDNOW compatibility constant is defined
+ for OpenStep and Rhapsody; no longer includes <mach-o/dyld.h> twice
+ on Rhapsody since this header lacks multiple-include protection,
+ which resulted in "redefinition" compilation errors.
+
+ * main.c: also create hard reference to objc_msgSend() on NeXT
+ platforms (in addition to Apple platforms).
+
+ * lib/mkmf.rb: now exports XCFLAGS from configure script to extension
+ makefiles so that extensions can be built MAB (see configure's
+ --enable-fat-binary option); also utilize XCFLAGS in cc_command()
+ (but not cpp_command() because MAB flags are incompatible with
+ direct invocation of `cpp').
+
+ * ext/curses/extconf.rb: now additionally checks for presence of these
+ curses functions which are not present on NextStep or Openstep:
+ bkgd(), bkgdset(), color(), curs(), getbkgd(), init(), scrl(), set(),
+ setscrreg(), wattroff(), wattron(), wattrset(), wbkgd(), wbkgdset(),
+ wscrl(), wsetscrreg()
+
+ * ext/curses/curses.c: added appropriate #ifdef's for additional set of
+ curses functions now checked by extconf.rb; fixed curses_bkgd() and
+ window_bkgd() to correctly return boolean result rather than numeric
+ result; fixed window_getbkgd() to correctly signal an error by
+ returning nil rather than -1.
+
+ * ext/etc/etc.c: setup_passwd() and setup_group() now check for null
+ pointers before invoking rb_tainted_str_new2() upon fields extracted
+ from `struct passwd' and `struct group' since null pointers in some
+ fields are common on NextStep/OpenStep (especially so for the
+ `pw_comment' field) and rb_tainted_str_new2() throws an exception
+ when it receives a null pointer.
+
+ * ext/pty/pty.c: include "util.h" for strdup()/ruby_strdup() for
+ platforms such as NextStep and OpenStep which lack strdup().
+
+ * ext/socket/getaddrinfo.c: cast first argument of getservbyname(),
+ gethostbyaddr(), and gethostbyname() from (const char*) to non-const
+ (char*) for older platforms such as NextStep and OpenStep.
+
+ * ext/socket/socket.c: include "util.h" for strdup()/ruby_strdup() for
+ platforms such as NextStep and OpenStep which lack strdup(); include
+ <netinet/in_systm.h> if present for NextStep and OpenStep; cast first
+ argument of gethostbyaddr() and getservbyname() from (const char*) to
+ non-const (char*) for older platforms.
+
+ * ext/syslog/syslog.c: include "util.h" for strdup()/ruby_strdup() for
+ platforms such as NextStep and OpenStep which lack strdup().
+
+Wed Oct 8 22:19:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit.rb: removed installation instructions.
+
+ * lib/test/unit/ui/testrunnermediator.rb: moved the run flag to a more
+ central location.
+
+ * lib/test/unit.rb: ditto.
+
+ * lib/test/unit.rb: extracted the running code in to AutoRunner.
+
+ * lib/test/unit/autorunner.rb: added.
+
+ * lib/test/unit/collector/objectspace.rb: extracted common test
+ collection functionality in to a module.
+
+ * lib/test/unit/collector.rb: ditto; added.
+
+ * test/testunit/collector/test_objectspace.rb: ditto.
+
+ * lib/test/unit/collector/dir.rb: added. Supports collecting tests out
+ of a directory structure.
+
+ * test/testunit/collector/test_dir.rb: added.
+
+ * test/runner.rb: simplified to use the new capabilities.
+
+Tue Oct 7 15:23:09 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb: add tests for nested BEGIN/END.
+
+ * test/ruby/beginmainend.rb: add tests for nested BEGIN/END.
+
+ * test/ruby/endblockwarn.rb: new file added to test of END-in-method
+ warning.
+
+Tue Oct 7 12:23:47 2003 Tanaka Akira <akr@m17n.org>
+
+ * ext/fcntl/fcntl.c (Init_fcntl): define Fcntl::O_ACCMODE.
+
+ * ext/socket/extconf.rb: useless assignment removed.
+
+Tue Oct 7 09:13:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb (test_endinmethod): END{} is now
+ allowed in eval.
+
+Tue Oct 7 04:15:25 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): should not expand mrhs if lhs is solely starred.
+
+Tue Oct 7 02:57:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): rhs of multiple assignment should not be
+ expanded using "to_a". [ruby-dev:21527]
+
+Tue Oct 7 01:42:34 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_get_asn1type): use appropriate
+ free function for ASN1_OBJECT.
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1obj_get_sn): add new function for
+ ASN1::ObjectId#sn; it returns short name text representation of OID.
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1obj_get_ln): add new function for
+ ASN1::ObjectId#ln; it returns long name text representation of OID.
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1obj_get_oid): add new function for
+ ASN1::ObjectId#oid; it returns numerical representation of OID.
+
+Mon Oct 6 22:59:46 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb (IOReader, BasicWriter): call binmode when a given IO
+ respond_to?(:binmode). record separator was wrong when you gave
+ text mode IO to Reader.parse and Writer.generate.
+
+ * test/csv/test_csv.rb: add tests for above change.
+
+Mon Oct 6 16:23:38 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object): wrong method name in the message.
+
+Mon Oct 6 16:02:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): END in method should cause warning.
+ [ruby-dev:21519]
+
+Mon Oct 6 15:17:23 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (test_block_argument_without_paren):
+ added. (follows sample/test.rb)
+
+Mon Oct 6 11:57:06 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb, test/ruby/beginmainend.rb: added
+ test for eval-ed BEGIN END order.
+
+Mon Oct 6 09:19:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): should pass "weak" value to next level.
+ [ruby-dev:21496]
+
+ * eval.c (proc_alloc): should not use cached object if klass is
+ different. [ruby-talk:83685]
+
+Sun Oct 5 23:27:09 2003 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/extconf.rb: check recvmsg even if sendmsg is exists.
+
+ * ext/socket/socket.c (thread_read_select): restored.
+
+ * lib/pathname.rb: version information is added in document.
+
+Sun Oct 5 23:07:03 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_f_END): block should be given. [ruby-dev:21497]
+
+Sun Oct 5 22:51:23 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/ext/openssl/extconf.rb: add check for some engine functions
+ unavailable in OpenSSL-0.9.6.
+
+ * lib/ext/openssl/ossl_engine.c: ditto.
+
+Sun Oct 5 17:56:30 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): fix evaluation order. [ruby-list:38431]
+
+Sun Oct 5 15:05:06 2003 akira yamada <akira@ruby-lang.org>
+
+ * test/uri/*: translated RUNIT to Test::Unit.
+
+Sun Oct 5 14:37:39 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/xsd/datatypes.rb: Rational -> Decimal string bug fix.
+
+ * test/soap/marshal/test_marshal.rb: ditto.
+
+ * test/soap/calc/test_calc_cgi.rb: add Config::CONFIG["EXEEXT"] to
+ RUBYBIN.
+
+Sun Oct 5 13:47:22 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb, test/ruby/beginmainend.rb: add tests
+ about scope, order and allowed syntax.
+
+Sun Oct 5 11:54:29 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/envutil.rb: added. split "rubybin" from test_system.rb.
+
+ * test/ruby/test_system.rb: use envutil.rb
+
+ * test/ruby/test_beginendblock.rb: added.
+
+ * test/ruby/beginmainend.rb: added. used in test_beginendblock.rb.
+
+Sun Oct 5 11:23:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * test/testunit/runit/test_testresult.rb: removed some unnecessary
+ cruft.
+
+Sun Oct 5 11:14:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/rubyunit.rb: aliasing TestCase into the top level is
+ problematic.
+
+ * lib/runit/assert.rb: fixed a couple of bugs caused by recent
+ refactoring in Test::Unit.
+
+ * test/testunit/runit/*: added.
+
+Sun Oct 5 10:55:29 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): no_proxy support did not
+ work. [ruby-dev:21484]
+
+Sun Oct 5 09:52:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: will use pp for output if available.
+ Can be disabled by setting Assertions.use_pp = false.
+
+ * test/testunit/test_assertions.rb: made a small change to exception
+ formatting.
+
+Sun Oct 5 07:42:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: made small improvements to assertion
+ messages. Deprecated Assertions#assert_not_nil; use #assert instead.
+
+ * test/testunit/test_assertions.rb: ditto.
+
+ * test/testunit/util/test_procwrapper.rb: use #assert instead of
+ #assert_not_nil.
+
+Sun Oct 5 04:10:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: refactored message building.
+
+Sun Oct 5 03:40:22 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.h: global symbols should be declared
+ as external.
+
+Sun Oct 5 03:03:20 2003 akira yamada <akira@ruby-lang.org>
+
+ * test/ruby/test_exception.rb (test_else): added.
+
+Sun Oct 5 02:12:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: changed assertion messages to rely more
+ heavily on #inspect. Added backtrace filtering for exceptions in
+ assertion messages.
+
+ * test/testunit/test_assertions.rb: ditto.
+
+Sun Oct 5 02:12:00 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/acl.rb, lib/drb/ssl.rb: added.
+
+ * lib/drb/drb.rb: exit from a thread using 'break'.
+
+Sat Oct 4 21:49:14 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * gc.c (Init_stack): the type of space is changed to unsigned int
+ from double. [ruby-dev:21483]
+
+Sat Oct 4 17:52:59 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/netHttpClient.rb: follow http-access2. hosts which matches
+ ENV['no_proxy'] or ENV['NO_PROXY'] are not proxyed.
+ - [,:] separated. ("ruby-lang.org:rubyist.net")
+ - no regexp. (give "ruby-lang.org", not "*.ruby-lang.org")
+ - if you want specify host by IP address, give full address.
+ ("192.168.1.1, 192.168.1.2")
+
+ * lib/soap/rpc/cgistub.rb: return "Status: XXX MMM" line.
+
+ * test/runner.rb: give testsuite name.
+
+Sat Oct 4 15:16:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): instance variable dump do not cause error
+ for objects that cannot be dumped, if they traversed from
+ marshal_dump. they are just ignored.
+
+ * gc.c (Init_stack): cast "space" (doble value) into unsigned
+ int. should run on PowerPC.
+
+ * eval.c (rb_eval): should not execute else part if any exception
+ is caught. [ruby-dev:21482]
+
+ * parse.y (f_args): should allow unparenthesized block argument.
+
+ * parse.y (f_rest_arg): should allow unparenthesized rest
+ argument.
+
+Sat Oct 4 14:59:51 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (initialize): raise ArgumentError if argument has
+ '\0' character.
+ (relative_path_from): new method.
+ (each_entry): new method for replacement of dir_foreach.
+ (foreach, foreachline, dir_foreach, chdir): obsoleted.
+
+Sat Oct 4 12:58:48 2003 akira yamada <akira@ruby-lang.org>
+
+ * test/uri/* (6 files): added.
+
+Sat Oct 4 12:44:45 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/ftp.rb, lib/uri/mailto.rb: renamed to #to_s from #to_str.
+
+Sat Oct 4 07:33:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/testsuite.rb: changed #<< to return self, and added
+ #delete.
+
+ * test/testunit/test_testsuite.rb: ditto. Also slightly refactored
+ #test_size.
+
+ * lib/test/unit/collector/objectspace.rb: collector now preserves the
+ hierarchy of suites.
+
+ * test/testunit/collector/test_objectspace.rb: ditto.
+
+Sat Oct 4 04:48:49 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: default keys handled.
+
+ * ext/syck/syck.h: lowered default buffer size to 16k for increased
+ performance.
+
+ * test/yaml: checkin of basic unit tests.
+
+Sat Oct 4 04:24:19 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for X509V3_set_nconf.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_set_config):
+ cannot implement if X509V3_set_nconf doesn't exist.
+
+Sat Oct 4 02:12:44 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/xsd/datatypes.rb: dump sign by itself. under the problematic
+ platform, sprintf("%+.10g", -0.0) => +0. sigh.
+
+ * sample/wsdl/amazon/*: update schema ver2 to ver3.
+
+Sat Oct 4 01:33:46 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (initialize): duplicate and freeze argument.
+ (to_s): return duplicated string.
+ (children): new method.
+ (each_line): new alias to foreachline.
+
+Fri Oct 3 16:13:19 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c: add DER encoder and decoder.
+
+ * ext/openssl/ossl_asn1.h: add OpenSSL::ASN1 module.
+
+ * ext/openssl/ossl.c (Init_openssl): call Init_ossl_asn1.
+
+ * ext/openssl/extconf.rb: check if X509_ATTRIBUTE has field "single".
+
+ * ext/openssl/ossl_x509attr.c (ossl_x509attr_set_value): accept
+ DER encoded data argument.
+
+ * ext/openssl/ossl_x509attr.c (ossl_x509attr_get_value): return
+ DER encoded data in OpenSSL::ASN1 types.
+
+Fri Oct 3 13:02:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit.rb: refactored to use optparse.
+
+ * lib/test/unit.rb: added support for selecting the output
+ level from the command-line.
+
+ * lib/test/unit.rb: added a command-line switch to stop processing
+ the command-line, allowing arguments to be passed to tests.
+
+ * lib/test/unit.rb: changed the method for specifying a runner or a
+ filter from the command-line.
+
+ * lib/test/unit/collector/objectspace.rb: fixed a bug causing all
+ tests to be excluded when the filter was set to an empty array.
+
+ * test/testunit/collector/test_objectspace.rb: ditto.
+
+Fri Oct 3 08:14:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex::identify_identifier): support
+ 'class ::Foo' syntax. [ruby-talk:83514]
+
+Fri Oct 3 08:01:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: added a default message for #assert,
+ #assert_block, and #flunk.
+
+ * test/testunit/test_assertions.rb: ditto.
+
+ * lib/test/unit/failure.rb: failures now show a better trace of where
+ they occurred.
+
+ * test/testunit/test_failure.rb: ditto (added).
+
+ * lib/test/unit/testcase.rb: ditto.
+
+ * test/testunit/test_testcase.rb: ditto.
+
+ * lib/test/unit/util/backtracefilter.rb: added.
+
+ * test/testunit/util/test_backtracefilter.rb: added.
+
+ * lib/test/unit/error.rb: changed to use BacktraceFilter and improved
+ output.
+
+ * test/testunit/test_error.rb: ditto.
+
+Thu Oct 2 20:33:49 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_failure_initialize): conform with
+ orthodox initialization method.
+
+ * ext/iconv/iconv.c (iconv_fail): initialize exception instance
+ from the class, and do not share instance variables with the
+ others. [ruby-dev:21470]
+
+Thu Oct 2 18:20:27 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (Init_Time): define initialize. [ruby-dev:21469]
+
+Thu Oct 2 17:39:38 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_engine.c: add a new module OpenSSL::Engine.
+ it supports OpenSSL hardware cryptographic engine interface.
+
+ * ext/openssl/ossl_engine.h: ditto.
+
+ * ext/openssl/MANIFEST: add ossl_engine.c and ossl_engine.h.
+
+ * ext/openssl/extconf.rb: add check for openssl/engine.h.
+
+ * ext/openssl/ossl.c: call Init_ossl_engine().
+
+ * ext/openssl/ossl.h: include openssl/engine.h.
+
+ * ext/openssl/ossl_pkey_{rsa,dsa,dh}.c: check if underlying
+ EVP_PKEY referes engine.
+
+Thu Oct 2 17:22:37 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_load): restore instance variables (if any) before
+ loading from marshaled data.
+
+Thu Oct 2 14:19:15 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_fail): now yield erred substring, and
+ set error object to $!.
+
+ * ext/iconv/iconv.c (iconv_convert): error handler block should
+ return appended part and the rest. if rest is nil, the
+ conversion stops.
+
+Thu Oct 2 12:00:18 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_const_defined_0): look up constants in Object as
+ well. [ruby-dev:21458]
+
+ * test/ruby/test_defined.rb (TestDefined::test_defined): test for
+ constants.
+
+Thu Oct 2 11:17:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: should not capture an
+ AssertionFailedError unless explicitly requested.
+
+ * test/testunit/test_assertions.rb: ditto.
+
+ * test/testunit/collector/test_objectspace.rb: fixed a test failure
+ caused by methods being returned in different orders on different
+ platforms by moving test sorting from TestSuite into the locations
+ where suites are constructed. [ruby-talk:83156]
+
+ * lib/test/unit/testcase.rb: ditto.
+
+ * lib/test/unit/testsuite.rb: ditto.
+
+ * lib/test/unit/collector/objectspace.rb: ditto.
+
+Thu Oct 2 03:25:01 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_thread_raise): prototype; avoid VC++ warning.
+
+Thu Oct 2 01:37:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_mdump): new marshal dumper. _dump is still
+ available for compatibility.
+
+ * time.c (time_mload): new marshal loader.
+
+ * marshal.c (w_object): preserve instance variables for objects
+ with marshal_dump.
+
+ * marshal.c (r_object0): restore instance variables before calling
+ marshal_load.
+
+ * error.c (rb_warn_m): always return nil.
+
+Thu Oct 2 01:32:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_block_given_p): real required condition is
+ ruby_frame->prev->iter == ITER_CUR.
+
+ * eval.c (rb_block_given_p): ditto.
+
+ * eval.c (block_pass): update ruby_frame->iter only when previous
+ value is ITER_NOT.
+
+Thu Oct 2 01:02:35 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_defined_at): should exclude constants from
+ Object when TYPE(klass) == T_MODULE *and* exclude is on.
+ [ruby-dev:21458]
+
+ * variable.c (rb_const_get_0): do not lookup constants from Object
+ when TYPE(klass) == T_MODULE *and* exclude is on.
+
+Thu Oct 2 00:21:11 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/logger/test_logger.rb: unlinking file before close causes
+ problem under win32 box.
+
+ * lib/xsd/datatypes.rb(XSDFloat, XSDDouble): add +/- sign explicitly
+ when stringified and embedded into XML instance. Ruby's sprintf may
+ format -0.0 as "0.0" (no minus sign) depending on underlying C
+ sprintf implementation.
+
+ * test/xsd/test_xsd.rb, test/soap/test_basetype.rb: follow above change.
+
+ * test/soap/calc/*: give httpd config param "CGIInterpreter".
+ "/usr/bin/env ruby" thing does not work under non-Unix boxes.
+
+Thu Oct 2 00:25:21 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (ruby_signal_name): adjust to the prototype.
+
+ * process.c (pst_inspect): ditto.
+
+ * ext/etc/etc.c (etc_getgrent, Init_etc): typo.
+
+Wed Oct 1 20:49:41 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (heaps): manage slots and limits together. [ruby-dev:21453]
+
+ * gc.c (add_heap): should not clear heaps slot even if realloc()
+ failed.
+
+Wed Oct 1 20:36:49 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST: add wince/mkconfig_wce.rb.
+
+Wed Oct 1 17:22:33 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/etc/etc.c: add new functions: setpwent, getpwent, endpwent,
+ setgrent, getgrent, endgrent.
+
+ * ext/socket/socket.c (sock_s_gethostbyname): do not reverse lookup.
+
+Wed Oct 1 17:01:30 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_load): Object scope had priority over required file
+ scope. [ruby-dev:21415]
+
+Wed Oct 1 14:09:53 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/mkconfig_wce.rb: sorry, forget to commit.
+
+Wed Oct 1 10:08:42 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/setup.mak: add sigmarionIII SDK support.
+
+ * wince/Makefile.sub: ditto.
+
+ * wince/mkexports.rb: fix linker error in SH4.
+
+ * wince/mkconfig_wce.rb: camouflage RUBY_PLATFORM for compiling ext.
+
+Wed Oct 1 08:02:52 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/time_wce.c (time): add zero check.
+
+Tue Sep 30 16:11:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * Makefile.in: copy lex.c from $(srcdir) if it's not the current
+ directory. [ruby-dev:21437]
+
+Tue Sep 30 11:29:23 2003 Tanaka Akira <akr@m17n.org>
+
+ * process.c (pst_inspect): describe stopped process "stopped".
+
+Tue Sep 30 09:31:56 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/runner.rb: glob for directories.
+
+Tue Sep 30 09:11:43 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): while/until should not capture break unless
+ they are destination of the break.
+
+Tue Sep 30 03:12:02 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (finish): revert to 1.93.
+
+ * lib/net/pop.rb (finish): revert to 1.60.
+
+ * lib/net/smtp.rb (finish): revert to 1.67.
+
+ * lib/net/http.rb (do_start): ensure to close socket if failed to
+ start session.
+
+ * lib/net/pop.rb (do_start): ditto.
+
+ * lib/net/smtp.rb (do_start): ditto.
+
+ * lib/net/smtp.rb: SMTP#started? wrongly returned false always.
+
+Tue Sep 30 02:54:49 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_iterator.rb: new test
+ test_break__nested_loop[123].
+
+Mon Sep 29 23:39:13 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (finish): does not raise IOError even if
+ !started?, to allow closing socket which was opened before
+ session started.
+
+ * lib/net/pop.rb (finish): ditto.
+
+ * lib/net/smtp.rb (finish): ditto.
+
+Mon Sep 29 19:06:51 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/win32ole/extconf.rb: add windows.h checking.
+ (ruby-bugs:PR#1185)
+
+Mon Sep 29 16:18:30 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: check if the given logdevice object respond_to :write
+ and :close, not is_a? IO. duck duck.
+
+ * test/logger/test_logger.rb: self IO.pipe reading/writing may be
+ locked by the flood. use tempfile.
+
+ * lib/wsdl/xmlSchema/data.rb: wrong constant reference.
+
+Mon Sep 29 16:11:23 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: clean up temporary symlink.
+ Patched by NaHi. [ruby-dev:21420]
+
+Mon Sep 29 11:16:55 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_atfork): wrong format specifier.
+ [ruby-dev:21428]
+
+ * process.c (pst_inspect): better description.
+
+Mon Sep 29 02:31:44 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/utils.rb (Utils::su): use setgid and setuid to
+ set real and effective IDs. and setup group access list by
+ initgroups.
+
+Sun Sep 28 11:14:19 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * ext/digest/digest.c (Init_digest): `copy_object' was deprecated.
+ `initialize_copy' should be defined.
+
+ * ext/stringio/stringio.c (Init_stringio): ditto.
+
+Sat Sep 27 18:25:13 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/xsd/charset.rb: XSD::Charset.is_ces did return always true under
+ $KCODE = "NONE" environment. check added.
+
+ * test/xsd/test_xsd.rb: add tests for above fix.
+
+Sat Sep 27 15:58:50 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/rpc/cgistub.rb: make logging severity threshold higher.
+
+ * lib/soap/rpc/standaloneServer.rb: defer WEBrick server start to give
+ a chance to reset logging severity threshold.
+
+ * test/soap/calc/test_*, test/soap/helloworld/test_helloworld.rb: run
+ silent.
+
+Sat Sep 27 09:44:18 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: clear all errors on Windows.
+ [ruby-dev:21417]
+
+ * test/fileutils/test_nowrite.rb: ditto.
+
+Sat Sep 27 04:57:07 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_file.rb: new file. only asserts unlink-before-close
+ behaviour now.
+
+ * test/soap/marshal/test_digraph.rb: should close before unlink.
+ unlink-before-close pattern is not needed here.
+
+Sat Sep 27 03:32:37 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/*, test/wsdl/*, test/xsd/*: move TestCase classes into
+ each module namespace. TestMarshal in
+ test/soap/marshal/test_marshal.rb crashed with
+ test/ruby/test_marshal.rb.
+
+Sat Sep 27 01:30:59 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): on win32, type of the 4th
+ argument of getsockopt is char *.
+
+Fri Sep 26 18:35:40 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/resolv-replace.rb: 1.8 compliance. [ruby-talk:82946]
+
+Fri Sep 26 17:39:27 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_marshal.rb: add test for ruby's objects.
+
+Fri Sep 26 09:52:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * defines.h (flush_register_windows): use volatile only for gcc on
+ Solaris. [ruby-dev:21403]
+
+ * lib/mkmf.rb (xsystem): use system directly to honor shell meta
+ charaters.
+
+Fri Sep 26 00:10:13 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/README: updated.
+
+Thu Sep 25 17:48:10 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl.c (ossl_buf2str): fix type of 1st argument for
+ rb_protect.
+
+ * ext/openssl/ossl_hmac.c (ossl_hmac_digest): should return meaningful
+ value.
+
+Thu Sep 25 09:00:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/ostruct.rb: Added OpenStruct#==.
+
+ * test/ostruct/test_ostruct.rb: Added.
+
+Thu Sep 25 07:55:26 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c, ext/openssl/ossl_pkey_dsa.c,
+ ext/openssl/ossl_pkey_rsa.c, ext/bigdecimal/bigdecimal.h: must
+ not use C++ or C99 style comment yet. (ruby-bugs:PR#1184)
+
+Thu Sep 25 00:23:22 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST: add SOAP4R.
+
+Thu Sep 25 00:13:15 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/* (29 files): SOAP4R added.
+
+ * lib/wsdl/* (42 files): WSDL4R added.
+
+ * lib/xsd/* (12 files): XSD4R added.
+
+ * test/soap/* (16 files): added.
+
+ * test/wsdl/* (2 files): added.
+
+ * test/xsd/* (3 files): added.
+
+ * sample/soap/* (27 files): added.
+
+ * sample/wsdl/* (13 files): added.
+
+Wed Sep 24 02:08:11 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb: conform to mswin32.
+ [ruby-talk:82735], [ruby-talk:82748], [ruby-talk:82818]
+
+Tue Sep 23 23:10:16 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: add Logger#<<(msg) for writing msg without any
+ formatting.
+
+ * test/logger/test_logger.rb: ditto.
+
+Tue Sep 23 20:47:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_warn_m): should not warn if -W0 is specified.
+ [ruby-talk:82675]
+
+Mon Sep 22 21:28:57 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST: updated.
+
+Mon Sep 22 19:22:26 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * configure.in (AC_CHECK_FUNCS): add setuid and setgid.
+
+Mon Sep 22 12:34:55 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): skip preceding zeros before counting
+ digits in the mantissa. (ruby-bugs:PR#1181)
+
+Sun Sep 21 04:12:36 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspreq_initialize): the argument
+ should be a String.
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspres_initialize): ditt.
+
+ * ext/openssl/ossl_x509attr.c (ossl_x509attr_initialize): ditto.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_initialize): ditto.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_set_value): ditto.
+
+Sat Sep 20 11:49:05 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: typo fixed.
+
+ * test/logger/test_logger.rb: new file.
+
+Fri Sep 19 11:39:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * test/testunit/*: Added.
+
+ * lib/test/unit.rb: Documentation update.
+
+ * lib/test/unit/ui/console/testrunner.rb (TestRunner#initialize):
+ Ditto.
+
+ * lib/test/unit.rb: Factored out an ObjectSpace collector.
+
+ * lib/test/unit/collector/objectspace.rb: Ditto.
+
+ * sample/testunit/*: Added.
+
+Fri Sep 19 01:00:48 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/log.rb (BasicLog#log): get rid of as ineffectual
+ condition.
+
+ * lib/webrick/log.rb (BasicLog#format): add "\n" to message.
+
+Thu Sep 18 22:43:20 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should push PROT_PCALL tag for orphans.
+
+ * eval.c (proc_invoke): should update "result" for orphans.
+
+Thu Sep 18 20:33:03 2003 Tietew <tietew-ml-ruby-list@tietew.net>
+
+ * parse.y (str_xquote): do not prepend escapes in
+ backqoute literals. [ruby-list:38409]
+
+Thu Sep 18 20:30:17 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: update document.
+
+Thu Sep 18 15:27:05 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: new file. Logger, formerly called devel-logger or
+ Devel::Logger.
+
+ * sample/logger/*: new file. samples of logger.rb.
+
+Wed Sep 17 23:41:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (localjump_destination): should not raise ThreadError
+ exception for "break". [ruby-dev:21348]
+
+ * eval.c (proc_invoke): use result instead of prot_tag->retval.
+ retval is no longer propagated to the ancestors.
+
+Wed Sep 17 20:34:00 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (tokadd_string, parse_string, yylex): escaped terminator
+ is now interpreted as is. [ruby-talk:82206]
+
+Wed Sep 17 18:52:36 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/fileassertions.rb: new file.
+
+ * test/fileutils/test_fileutils.rb: new file.
+
+ * test/fileutils/test_nowrite.rb: new file.
+
+Wed Sep 17 18:51:02 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/strscan/test_stringscanner.rb: require test/unit.
+
+Wed Sep 17 18:35:34 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/strscan/test_stringscanner.rb: new file.
+
+Wed Sep 17 18:03:30 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl: all files are reviewed to simplify and avoid memory leak.
+
+ * ext/openssl/extconf.rb: add check for assert.h.
+
+ * ext/openssl/ossl.c (ossl_buf2str): new function to convert
+ C buffer to String and free buffer.
+
+ * ext/openssl/ossl.c (ossl_x509_ary2sk): new function to convert
+ Array of OpenSSL::X509 to STACK_OF(X509) with exception safe.
+
+ * ext/openssl/ossl.c (ossl_to_der, ossl_to_der_if_possible): new
+ functions to convert object to DER string.
+
+ * ext/openssl/ossl.h: ditto.
+
+ * ext/openssl/ossl_bio.c (ossl_membio2str): new function to convert
+ BIO to String object and free BIO.
+
+ * ext/openssl/ossl_bio.h: ditto.
+
+ * ext/openssl/ossl_pkcs7.c (ossl_pkcs7_to_der): add for "to_der".
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_to_der): ditto.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_to_der): ditto.
+
+ * ext/openssl/ossl_x509ext.c (create_ext_from_array): removed
+ and reimplement in openssl/x509.rb.
+
+ * ext/openssl/ossl_x509attr.c: reimplemented and disable some
+ method temporarily. this class doesn't work fine without ASN.1
+ data support;-) I'll rewrite in near future.
+
+ * ext/openssl/lib/openssl/x509.c (X509::Attribute): get rid off
+ unused code.
+
+ * ext/openssl/lib/openssl/x509.c (X509::ExtensionFactory): refine all.
+
+Tue Sep 16 22:25:06 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: add negative tests of row_sep.
+
+Tue Sep 16 18:02:36 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should not translate character
+ class range edge. [ruby-list:38393]
+
+Tue Sep 16 16:47:56 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST: add test/csv/mac.csv.
+
+ * win32/Makefile.sub, bcc32/Makefile.sub (test): add phony NUL target.
+
+Mon Sep 15 19:02:52 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: add extra pamameter to specify row(record) separater
+ character. To parse Mac's CR separated CSV, do like this.
+ CSV.open("mac.csv", "r", ?,, ?\r) { |row| p row.to_a }
+ The 3rd parameter in this example ?, is for column separater and the
+ 4th ?\r is for row separater. Row separater is nil by default. Nil
+ separater means "\r\n" or "\n".
+
+ * test/csv/test_csv.rb: add tests for above feature.
+
+ * test/csv/mac.csv: added. Sample CR separated CSV file.
+
+Fri Sep 12 22:41:48 2003 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * ext/openssl/ossl.c: move ASN.1 stuff to ossl_asn1.[ch]
+
+ * ext/openssl/ossl.c: move BIO stuff to ossl_bio.[ch]
+
+ * ext/openssl/ossl_asn1.[ch]: new files
+
+ * ext/openssl/ossl_bio.[ch]: new files
+
+Fri Sep 12 12:30:41 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (rb_disable_super, rb_enable_super): replace with dummy
+ expressions instead of prototypes. the functions remain yet for
+ binary compatibility. [ruby-talk:81758]
+
+Fri Sep 12 12:09:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_and): convert argument using 'to_int'.
+
+ * bignum.c (rb_big_or): ditto.
+
+ * bignum.c (rb_big_xor): ditto.
+
+Fri Sep 12 07:06:14 2003 David Black <dblack@superlink.net>
+
+ * lib/scanf.rb: Took out useless @matched_item variable; some small
+ refactoring.
+
+Thu Sep 11 08:43:44 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): allow "require" on $SAFE>0, if feature
+ name is not tainted.
+
+ * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser::stream):
+ Supports StringIO.
+
+Wed Sep 10 22:47:30 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.h: add a workaround for win32 platform.
+ libeay32.dll doesn't export functions defined in conf_api.h.
+
+ * ext/openssl/ossl_config.c (ossl_config_initialize): ditto.
+
+ * ext/openssl/ossl_config.c (ossl_config_add_value): ditto.
+
+ * ext/openssl/ossl_config.c (set_conf_section_i): should check
+ if the argument is Array.
+
+Wed Sep 10 22:41:54 2003 Tietew <tietew@tietew.net>
+
+ * eval.c (win32_get_exception_list): avoid VC7 warning.
+ [ruby-win32:577]
+
+Tue Sep 9 10:39:51 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (struct tag): dst should be VALUE.
+
+ * eval.c (localjump_destination): stop at the scope where the current
+ block was created. [ruby-dev:21353]
+
+Tue Sep 9 05:17:04 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_config.rb: avoid compile error in OpenSSL-0.9.6.
+
+Tue Sep 9 02:41:35 2003 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * ext/openssl/ossl_config.c: Refine compatibility.
+
+Tue Sep 9 01:50:45 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (HTTPServer#access_log): add "\n" to
+ the message.
+
+ * lib/webrick/log.rb (BasicLog#log): add "\n" only if needed.
+
+Mon Sep 8 22:15:33 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: modify security check at creating
+ a new interpreter
+
+Mon Sep 8 20:00:12 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb, lib/optparse/version.rb: search also all
+ capital versions.
+
+Mon Sep 8 19:26:33 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.h: include openssl/conf.h and openssl/conf_api.h.
+
+ * ext/openssl/ossl_config.c: refine all with backward compatibility.
+
+ * ext/openssl/ossl_config.h: export GetConfigPtr() and DupConfigPtr().
+
+ * ext/openssl/ossl_x509.c: added new constants under X509 module.
+ DEFAULT_CERT_AREA, DEFAULT_CERT_DIR, DEFAULT_CERT_FILE,
+ DEFAULT_CERT_DIR_ENV, DEFAULT_CERT_FILE_ENV and DEFAULT_PRIVATE_DIR.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_free): don't free
+ the members of the struct. it's left to GC.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509_set_config): add for config=.
+
+ * ext/openssl/ossl_x509ext.c (Xossl_x509extfactory_initialize):
+ add attr readers: issuer_certificate, subject_certificate,
+ subject_request, crl and config.
+
+Mon Sep 8 18:26:41 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/accesslog.rb (AccessLog::setup_params): use req.port
+ instead of config[:Port] or req.request_uri.port.
+
+ * lib/webrick/httprequest.rb (HTTPRequest#meta_vars): ditto.
+
+ * lib/webrick/httpservlet/filehandler.rb (FileHandler#dir_list): ditto.
+
+ * lib/webrick/config.rb: :Listen option never be used.
+
+ * lib/webrick/server.rb (GenericServer#initialize): don't use :Listen
+ option and add warning message.
+
+ * lib/webrick/log.rb (BasicLog#<<): shortcut of log(INFO, ...).
+
+ * lib/webrick/httpserver.rb (HTTPServer#accesslog): use << for logging.
+
+Sun Sep 7 16:08:28 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop_core): fixed signal-trap bug
+
+ * ext/tk/lib/*.rb: Ruby/Tk works at $SAFE == 4
+
+Sat Sep 6 02:26:34 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_*.rb: assert_same, assert_match, and so on.
+
+Sat Sep 6 18:45:46 2003 Mauricio Fernandez <batsman.geo@yahoo.com>
+
+ * parse.y (assignable): call rb_compile_error(), not rb_bug().
+ [ruby-core:01523]
+
+Sat Sep 6 17:40:41 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ruby_missing.c: rid of unnecessary backward
+ compatibility stuff. and remove DEFINE_ALLOC_WRAPPER from
+ all sources.
+
+ * ext/openssl/ossl_x509ext.c (X509::Extension.new): new method.
+
+ * ext/openssl/ossl_x509ext.c (X509::Extension#oid=): new method.
+
+ * ext/openssl/ossl_x509ext.c (X509::Extension#value=): new method.
+
+ * ext/openssl/ossl_x509ext.c (X509::Extension#critical=): new method.
+
+Sat Sep 6 01:23:22 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): need to quote cmd if RUBYSHELL is set.
+
+ * win32/win32.c (CreateChild): fix condition about whether to call
+ shell or not.
+
+Sat Sep 6 00:36:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * Makefile.in (test): phony target.
+
+ * lib/mkmf.rb (have_library, find_library): configure by library
+ name.
+
+ * lib/optparse.rb (OptionParser#order, #permute, #parse): allow an
+ array as argument.
+
+ * test/ruby/test_*.rb: moved invariants to left side in
+ assert_equal, and use assert_nil, assert_raises and so on.
+
+ * win32/win32.c (isInternalCmd): distinguish command.com and
+ cmd.exe.
+
+ * win32/win32.c (make_cmdvector): a character just after wildcard
+ was ignored. [ruby-core:01518]
+
+Fri Sep 5 20:27:08 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_*.rb: replace 'assert(a == b)' with assert_equal(a, b)'
+
+Fri Sep 5 18:00:51 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/x509.rb: new method X509::Name::parse.
+
+ * ext/openssl/ossl_digest.c: add ossl_digest_new().
+
+ * ext/openssl/ossl_digest.h: ditto.
+
+ * ext/openssl/ossl_cipher.c: add ossl_cipher_new().
+
+ * ext/openssl/ossl_cipher.h: ditto.
+
+Fri Sep 5 15:32:04 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-font-lock-maybe-here-docs): should not
+ search delimiter forward if found in backward.
+
+Fri Sep 5 13:32:48 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/runner.rb: arguments should be keys.
+
+Fri Sep 5 12:09:55 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/ruby/test_system.rb (test_system): check existence of ruby
+ interpreter.
+
+Fri Sep 5 11:32:17 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (--version): fix assignment/reference order.
+
+ * lib/optparse.rb (OptionParser#help): new; OptionParser#to_s may
+ be deprecated in future.
+
+ * lib/optparse/version.rb (OptionParser#show_version): hide Object.
+
+ * test/runner.rb: fix optparse usage.
+
+ * test/runner.rb: glob all testsuits if no tests given.
+
+Fri Sep 5 10:42:58 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/runner.rb: added. gets testcases from command line and runs it.
+
+ * test/ruby/test_gc.rb: remove useless part which was for dumping test
+ result.
+
+Fri Sep 5 09:28:59 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_gc.rb: added. splitter.rb which I made to split
+ sample/test.rb into test/ruby/test_* kindly removed GC test (the
+ last section in the original test) to reduce things to be worried.
+
+Fri Sep 5 03:00:04 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (test_block_in_arg): add no block
+ given tests.
+
+ * test/ruby/test_iterator.rb (test_ljump): uncomment LocalJumpError
+ test.
+
+Fri Sep 5 01:10:11 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby: tests for ruby itself.
+
+ * test/ruby/test_*.rb: split sample/test.rb into 28 test/unit testcases.
+ some tests could not be translates... search '!!' mark to see it.
+
+ * test/csv/test_csv.rb: should require 'csv', not '../lib/csv'. test
+ runner should set load path correctly.
+
+Fri Sep 5 01:03:59 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: close opened files for CSV::IOBuf explicitly.
+ opened file cannot be removed under win32 box.
+
+Thu Sep 4 23:59:40 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (tokadd_string): newlines have no special meanings in
+ %w/%W, otherwise they are ignored only when interpolation is
+ enabled. [ruby-dev:21325]
+
+Thu Sep 4 19:38:25 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/io/wait/.cvsignore: added.
+
+ * ext/openssl/.cvsignore: added.
+
+Thu Sep 4 19:28:24 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * sample/openssl: added. Sample of standard distribution library
+ should be locate in sample/{module_name}/*.
+
+ * ext/openssl/sample/*: removed. move to sample/openssl/*.
+
+Thu Sep 4 18:02:15 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: use remove_const to reduce warnings. use
+ Dir.tmpdir to locate working files.
+
+Thu Sep 4 17:41:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-here-doc-beg-re): underscore also is
+ valid delimiter.
+
+ * misc/ruby-mode.el (ruby-here-doc-end-match): must quote
+ arbitrary string to use as regexp.
+
+ * misc/ruby-mode.el (ruby-font-lock-maybe-here-docs): must not
+ call `ruby-here-doc-end-match' unless `ruby-here-doc-beg-re'
+ matched.
+
+Thu Sep 4 15:40:07 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: run on test/unit original layer.
+
+Thu Sep 4 12:54:50 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/token.c: headerless documents with root-level spacing now
+ honored.
+
+Thu Sep 4 00:06:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (mark_frame_adj): need to adjust argv pointer if using
+ system's alloca. [ruby-core:01503]
+
+Wed Sep 3 21:33:20 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test: add test directory. Test::Unit aware testcases and needed
+ files should be located in this directory. dir/file name convention;
+ test/{module_name}/test_{testcase_name}.rb
+ test/{module_name}/{needed_files}
+ someday, someone will write testrunner which searches test_*.rb and
+ run testcases automatically.
+
+ * test/csv/*: add testcase for lib/csv.rb.
+
+Wed Sep 3 01:37:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_gets): should call next_argv() before type check
+ current_file. [ruby-list:38336]
+
+Tue Sep 2 20:37:15 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/net/protocols.rb (SSLIO#ssl_connect): warning
+ for skipping server verification.
+
+Tue Sep 2 23:36:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should retrieve retval when pcall is true.
+
+Tue Sep 2 14:09:20 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/extconf.rb: check s6_addr8 in in6_addr (Tru64 UNIX).
+ the patch is submitted by nmu <nmu@users.sourceforge.jp>.
+
+ * ext/socket/getaddrinfo.c (getaddrinfo): should use in6_addr8 on
+ some platforms.
+
+ * ext/socket/getnameinfo.c (getnameinfo): ditto.
+
+Tue Sep 2 14:02:19 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_invoke): fixed bug on passing a exception
+
+ * ext/tk/lib/{tk.rb, tkcanvas.rb, tkfont.rb, tktext.rb}:
+ bug fix and improvement of font control
+
+Tue Sep 2 09:51:36 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): should not handle exceptions within rescue
+ argument. [ruby-talk:80804]
+
+Tue Sep 2 00:44:37 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_memsearch): fix overrun. [ruby-talk:80759]
+
+Tue Sep 2 00:41:27 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (map_charset): use lower case keys.
+
+ * ext/iconv/iconv.c (iconv_fail): just yield error and return the
+ result if a block is given.
+
+ * ext/iconv/iconv.c (iconv_convert): yield error and append the
+ result if a block is given.
+
+ * ext/iconv/charset_alias.rb (charset_alias): optional third
+ argument.
+
+ * ext/iconv/charset_alias.rb (charset_alias): use CP932 instead of
+ SHIFT_JIS on cygwin.
+
+Mon Sep 1 18:34:25 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): make tail recursion in ELSE clause of
+ RESCUE a jump.
+
+Mon Sep 1 18:00:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (aref_args): forgot to call NEW_SPLAT(). reported by
+ Dave Butcher.
+
+ * eval.c (Init_Thread): protect thgroup_default. suggested by Guy
+ Decoux in [ruby-talk:80623]
+
+Mon Sep 1 16:59:10 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_switch): add RESTORE_EXIT; exit by another
+ thread termination.
+
+ * eval.c (rb_thread_start_0): should not error_print() within
+ terminated thread, because $stderr used by it might be
+ overriden now. [ruby-dev:21280]
+
+Sun Aug 31 22:46:55 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (TAG_DST()): take no argument.
+
+ * process.c (p_gid_sw_ensure): return VALUE.
+
+Sun Aug 31 22:27:10 2003 Hidetoshi NAGAI <nagai@dumbo.ai.kyutech.ac.jp>
+
+ * process.c (p_gid_sw_ensure): lack of function type
+
+Sun Aug 31 12:25:06 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb: --version takes an optional argument; "all" or
+ a list of package names.
+
+Sun Aug 31 10:17:02 2003 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: yyyy/mm is not an acceptable format.
+
+ * lib/time.rb: follow above.
+
+Sat Aug 30 14:25:43 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_iter_break): should not call TAG_JUMP directly.
+
+Sat Aug 30 03:58:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (struct BLOCK): remove BLOCKTAG, use scope instead.
+
+ * eval.c (POP_TAG): no longer propagate retval. retval is now set
+ directly by localjump_destination().
+
+ * eval.c (localjump_destination): new function to cast
+ return/break local jump.
+
+ * eval.c (rb_yield_0): stop TAG_RETURN/TAG_BREAK escaping.
+
+Fri Aug 29 22:35:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * bigdecimal.c *.html: The 2nd arg. for add,sub,mult, and div is 0,
+ then result will be the same as +,-,*,/ respectively.
+
+Fri Aug 29 17:30:15 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * process.c: bug fix
+
+ * process.c: add rb_secure(2) to methods of Process::{UID,GID,Sys}
+
+ * process.c: deny handling IDs during evaluating the block given to
+ the Process::{UID,GID}.switch method
+
+ * ext/tcltklib/tcltklib.c: some methods have no effect if on slave-IP
+
+ * ext/tcltklib/tcltklib.c: can create a interpreter without Tk
+
+ * ext/tcltklib/tcltklib.c: bug fix on handling exceptions
+
+ * ext/tcltklib/MANUAL.euc: modify
+
+ * ext/tk/lib/tk.rb: freeze some core modules
+
+ * ext/tk/lib/multi-tk.rb: more secure
+
+ * ext/tk/lib/tk.rb: TkVariable.new(array) --> treat the array as the
+ Tk's list
+
+ * ext/tk/lib/tk.rb: improve accessibility of TkVariable object
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tkfont.rb, ext/tk/lib/tkcanvas.rb,
+ ext/tk/lib/tktext.rb: fix bug of font handling
+
+ * ext/tk/lib/tkfont.rb: TkFont.new() accepts compound fonts
+
+Thu Aug 28 22:07:12 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_autoload_load): call const_missing if autoloading
+ constant is not defined to allow hook.
+
+ * eval.c (rb_eval): use rb_const_get_from() instead of
+ rb_const_get_at().
+
+ * eval.c (is_defined): forgot to check NODE_COLON3.
+
+Thu Aug 28 17:30:24 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get_0): should check constants defined in
+ included modules, if klass is Object. [ruby-talk:79302]
+
+ * numeric.c (check_uint): check should be done using UINT_MAX, not
+ INT_MAX. this fix is submitted by Lyle Johnson
+ <lyle@knology.net> in [ruby-core:01486]
+
+Thu Aug 28 05:02:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (singleton): typo fixed (ruby-bugs-ja:PR#562)
+
+Thu Aug 28 02:37:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): *a = [1,2] now assigns [[1,2]] to a.
+ consistent with *a = [1], which set [[1]] to a.
+
+ * node.h: merge NODE_RESTARY to NODE_SPLAT.
+
+ * parse.y: rules simplified a bit by removing NODE_RESTARY.
+
+ * sample/test.rb: updated for new assignment behavior.
+
+Wed Aug 27 22:33:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_bug): should not use other methods; this function is
+ not for ordinary use. [ruby-dev:21259]
+
+Wed Aug 27 15:07:57 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb (check_response): AUTH CRAM-MD5 returns 334
+ response. [ruby-list:38279]
+
+Wed Aug 27 05:10:15 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (map_errno): support winsock error.
+
+ * win32/win32.c (pipe_exec, CreateChild, poll_child_status, waitpid,
+ kill, link, rb_w32_rename, unixtime_to_filetime, rb_w32_utime):
+ pass errno to map_errno().
+
+ * win32/win32.c (rb_w32_select, rb_w32_accept, rb_w32_bind,
+ rb_w32_connect, rb_w32_getpeername, rb_w32_getsockname,
+ rb_w32_getsockopt, rb_w32_ioctlsocket, rb_w32_listen, rb_w32_recv,
+ rb_w32_recvfrom, rb_w32_send, rb_w32_sendto, rb_w32_setsockopt,
+ rb_w32_shutdown, rb_w32_socket, rb_w32_gethostbyaddr,
+ rb_w32_gethostbyname, rb_w32_gethostname, rb_w32_getprotobyname,
+ rb_w32_getprotobynumber, rb_w32_getservbyname, rb_w32_getservbyport,
+ rb_w32_fclose, rb_w32_close): use map_errno().
+
+ * win32/win32.h: add winsock errors.
+
+Tue Aug 26 23:53:23 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct::method_missing): prohibit modifying
+ frozen OpenStruct. [ruby-talk:80214]
+
+Tue Aug 26 20:03:50 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_tmpsrc): add the hook for source.
+ [ruby-list:38122]
+
+Tue Aug 26 15:59:53 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * implicit.c (syck_type_id_to_taguri): corrected detection of
+ x-private types.
+
+Sun Aug 24 01:02:48 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): performance improvement.
+ [ruby-talk:79748]
+
+Sat Aug 23 23:41:16 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): avoid calling rb_scan_args() for
+ apparent cases. [ruby-talk:79748]
+
+Sat Aug 23 18:56:53 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_putchar): should use rb_str_resize() to just
+ resize a string, rb_str_cat() disallows NULL. [ruby-dev:21237]
+
+Sat Aug 23 16:48:41 2003 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: bug fix for "foo" !~ /bar/. [ruby-talk:79942]
+
+Sat Aug 23 15:59:58 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval, rb_iterate, block_pass): reduce PUSH/POP_TAG and
+ EXEC_TAG() for retry. [ruby-dev:21216]
+
+Sat Aug 23 02:32:33 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_splat): should check if "values" is array.
+
+ * enum.c (each_with_index_i): typo.
+
+Fri Aug 22 17:07:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (inject_i): use rb_yield_values.
+
+ * enum.c (each_with_index_i): ditto.
+
+ * eval.c (rb_yield_splat): new function to call "yield *values".
+
+ * string.c (rb_str_scan): use rb_yield_splat().
+
+Fri Aug 22 06:13:22 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: refactoring of the transfer method
+ dispatch. added yaml_org_handler for faster dispatch of
+ transfers to base types.
+
+ * lib/yaml/rubytypes.rb: removed handling of builtins from
+ Ruby library.
+
+ * ext/syck/token.c: quoted and block scalars are now implicit !str
+
+ * ext/syck/implicit.c: empty string detected as !null.
+
+Fri Aug 22 01:00:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (block_pass): improve passing current block.
+
+Fri Aug 22 00:13:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: Int. overflow bug in multiplication
+ fixed, and VpNmlz() speed up.
+
+Wed Aug 20 16:44:49 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): many systems seem to have
+ a problem in select() after EINPROGRESS. [ruby-list:38080]
+
+Wed Aug 20 01:31:17 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/syck.h: Parser definition problems on HP-UX.
+ [ruby-talk:79389]
+
+ * ext/syck/handler.c (syck_hdlr_get_anchor): Memory leak.
+
+ * ext/syck/syck.s (syck_io_file_read): Bad arguments to fread.
+
+ * ext/syck/rubyext.c: Tainting issues.
+
+Tue Aug 19 23:20:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c .h .html: to_s("+") implemented.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: E implemented.
+
+Tue Aug 19 11:19:33 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * io.c (next_argv): should not call GetOpenFile() if rb_stdout is
+ not a IO (T_FILE).
+
+Tue Aug 19 07:47:10 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/ssl.rb: new file; SSL/TLS enhancement for GenericServer.
+
+ * lib/webrick/https.rb: SSLSocket handling is moved to webrick/ssl.rb.
+
+ * lib/webrick/compat.rb (File::fnmatch): remove old migration code.
+
+ * lib/webrick/httpserver.rb (HTTPServer#run): ditto.
+
+ * lib/webrick/server.rb (GenericServer#listen): the body of this
+ method is pull out as Utils::create_lisnteners.
+
+ * lib/webrick/utils.rb (Utils::create_lisnteners): new method.
+
+ * lib/webrick/server.rb (GenericServer#start): should rescue
+ unknown errors. and refine comments.
+
+ * ext/openssl/lib/openssl/ssl.rb (SSLServer#accept): should close
+ socket if SSLSocket raises error.
+
+Tue Aug 19 07:47:09 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c: sync_close is moved to SSLSocket as
+ a builtin.
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#close): ditto.
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#puts): should
+ add a return to the tails of each line.
+
+ * ext/openssl/lib/openssl/ssl.rb: new class OpenSSL::SSL::SSLServer.
+
+ * ext/openssl/lib/net/protocols.rb (SSLIO#ssl_connect): use sync_close.
+
+ * ext/openssl/sample/echo_svr.rb: use SSLServer.
+
+ * ext/openssl/sample/echo_cli.rb: add example of SSLSocket#sync_close.
+
+Tue Aug 19 01:24:34 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/curses/curses.c (_XOPEN_SOURCE_EXTENDED): Mac OS X standard
+ headers are inconsistent at this macro. [ruby-core:01432]
+
+ * ext/curses/extconf.rb: check if _XOPEN_SOURCE_EXTENDED breaks.
+
+ * ext/tcltklib/stubs.c: Status macro in X11/Xthreads.h bothers
+ winspool.h
+
+ * instruby.rb: make list at first instead of iterator.
+ [ruby-talk:79347]
+
+Mon Aug 18 11:23:11 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): preserve raw order for **.
+
+Sun Aug 17 23:39:55 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/extconf.rb (HAVE_VA_ARGS_MACRO): need to compile.
+
+Sun Aug 17 17:10:03 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (SSLSocket#sync_close=): add a
+ method to specify if the underlying IO will be closed in
+ SSLSocket#close.
+
+ * ext/openssl/lib/openssl/buffering.rb: add forwarders to
+ setsockopt, getsockopt and fcntl.
+
+ * ext/openssl/lib/net/protocols.rb: enable sync for SSLSocket.
+
+Sun Aug 17 11:32:04 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): should not force to remake Makefile when
+ installation and so on.
+
+Sat Aug 16 23:58:18 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_symbol, w_object): get rid of warnings.
+
+ * re.c (rb_memsearch): ditto.
+
+ * time.c (time_dump): ditto.
+
+ * ext/extmk.rb (extmake): not continue making when extconf.rb
+ failed.
+
+ * ext/openssl/extconf.rb: check __VA_ARGS__ macro more precisely.
+
+ * ext/openssl/ossl.h: remove version.h dependency.
+
+ * ext/openssl/ruby_missing.h: ditto.
+
+ * lib/mkmf.rb (pkg_config): use --libs output except with
+ only-L for other options. [ruby-list:38099]
+
+ * lib/mkmf.rb (create_makefile): separate rule for static
+ library from shared object.
+
+ * win32/Makefile.sub, bcc32/Makefile.sub, wince/Makefile.sub:
+ define exec_prefix and libdir.
+
+Fri Aug 15 23:15:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c .h: Bug in combination of limit & div
+ method fixed.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: atan() & sqrt() added.
+
+Fri Aug 15 12:01:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (HUGE_ST_INO): check whether struct stat.st_ino
+ is larger than long. [ruby-dev:21194]
+ http://www.geocities.co.jp/SiliconValley-PaloAlto/1409/ruby/beos.html
+
+ * error.c (syserr_eqq): errno might exceed Fixnum limit.
+
+ * error.c (Init_Exception): moved base initialization from
+ init_syserr().
+
+ * inits.c (rb_call_inits): postpone initializing errnos until
+ Bignum is available.
+
+Fri Aug 15 12:01:43 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/curses/curses.c (_XOPEN_SOURCE_EXTENDED): needed to let
+ keyname() and so on be declared.
+
+ * ext/curses/curses.c (curses_resizeterm, window_resize):
+ arguments conflicted with macros in term.h.
+
+ * ext/curses/curses.c (Curses module methods): ensure
+ initialized. [ruby-dev:21191]
+
+Fri Aug 15 02:08:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (id2ref): recycle check should be done by klass == 0.
+ [ruby-core:01408]
+
+Fri Aug 15 01:34:23 2003 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * ext/openssl/ossl_pkey.c: move generate_cb here
+
+ * ext/openssl/ossl_pkey_{dh|dsa|rsa}.c: adapt to this cb
+
+ * ext/openssl/openssl_missing.[ch]: add (0.9.6x, x<j) missing BN funcs
+
+ * ext/openssl/ossl_bn.c: use supplied funcs from openssl_missing.c
+
+Fri Aug 15 00:38:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: Bug in div method fixed.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: Newly added.
+
+ * ext/bigdecimal/sample/pi.rb: Changed so as to use math.rb.
+
+Thu Aug 14 21:19:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Thread): Continuation#[] added. [ruby-talk:79028]
+
+Thu Aug 14 20:03:34 2003 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (OLE_FREE): should not call
+ ole_message_loop.
+
+ * ext/win32ole/win32ole.c (ole_event_free): ditto.
+
+ * ext/win32ole/win32ole.c (ole_initialize): stop calling
+ OleUninitialize at exit.
+
+Thu Aug 14 11:27:37 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (rb_data_object_alloc): check type of 1st argument.
+ [ruby-dev:21192]
+
+Thu Aug 14 00:21:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (mlhs_node): should allow "::Foo" (colon3) as lhs.
+
+ * parse.y (lhs): ditto.
+
+ * parse.y (yylex): should return tCOLON3 right after kCLASS.
+ [ruby-talk:78918]
+
+ * error.c (exc_initialize): was converting argument to string too
+ eagerly. Only check was needed. [ruby-talk:78958]
+
+Wed Aug 13 23:31:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c .h .html: Ambiguity of
+ BigDecimal::limit removed.
+
+Wed Aug 13 19:21:34 2003 Christian Neukirchen <chneukirchen@yahoo.de>
+
+ * lib/webrick/https.rb (HTTPServer#run): should set syncing-mode
+ to SSLSocket. [ruby-talk:78919]
+
+Wed Aug 13 18:13:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (POP_BLOCK): turn on BLOCK_LEFT flag when leaving block.
+
+ * eval.c (proc_invoke): unpack return/break destination when block
+ is already left.
+
+Wed Aug 13 15:58:31 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * object.c (rb_class_s_alloc): add function prototype to avoid VC++
+ warning.
+
+Wed Aug 13 13:50:59 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): should pass some
+ class to first argument of Data_Wrap_Struct(). (ruby-bugs:PR#1109)
+
+Tue Aug 12 16:55:11 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in: static link libraries to LIBRUBY_SO with static linked
+ ext. [ruby-dev:21157]
+
+ * ext/extmk.rb (extmake): sort extension library initialization order.
+
+ * ext/extmk.rb (extmake): compact $extlibs.
+
+Tue Aug 12 02:48:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (THREAD_SAVE_CONTEXT): should explicitly turn off the
+ flag before calling getcontext(2).
+
+ * eval.c (struct thread): add member to save backing store on
+ IA64. (ruby-bugs PR1086)
+
+ * eval.c (thread_mark): mark IA64 backing store region.
+
+ * eval.c (thread_free): free saved IA64 backing store.
+
+ * eval.c (rb_thread_save_context): save IA64 backing store as well.
+
+ * eval.c (rb_thread_restore_context): restore IA64 backing store.
+
+ * eval.c (THREAD_ALLOC): initialize IA64 members.
+
+Mon Aug 11 22:31:50 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/debug.rb(debug_command): inspection command should inspect
+ resulting value even if it's nil. [ruby-dev:21180] by OMAE, jun
+ <jun66j5@ybb.ne.jp>.
+
+ * lib/debug.rb(debug_command): incomplete regexp.
+
+Mon Aug 11 17:33:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call_super): do not use rb_block_given_p() for
+ check. [ruby-talk:78656]
+
+ * eval.c (BEGIN_CALLARGS): push ITER_NOT only when ITER_PRE.
+
+Sun Aug 10 10:43:05 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/buffering.rb: increase BLOCK_SIZE
+ from 1k to 16k bytes. [ruby-talk:78603]
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_s_alloc): enable
+ partial write to allow interruption in SSLSocket#write.
+
+Sun Aug 10 00:34:16 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * cygwin/GNUmakefile: remove unnecessary '--drive-name=$(CC)'
+ for ccache.
+
+Sat Aug 9 10:36:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): do not dump generic instance variable when
+ marshal_dump is defined.
+
+Sat Aug 9 00:35:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal.c: F style output(like 1234.56789) implemented
+ to to_s method.
+ * ext/bigdecimal_??.html: F style output(like 1234.56789)
+ implemented to to_s method.
+
+Fri Aug 8 12:33:17 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * bcc32/Makefile.sub: rubyw.exe should be a Windows GUI program.
+ add the -aa option to WLDFLAGS.
+
+Fri Aug 8 11:29:26 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * marshal.c (w_object): should set `c_arg' at first.
+
+Fri Aug 8 03:22:28 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (FormData#list): should not take
+ a side effect for the receiver.
+
+Thu Aug 7 14:40:37 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * cygwin/GNUmakefile: better --disbale-shared option support.
+
+ * cygwin/GNUmakefile: add forwarding DLL target for cygwin.
+
+Thu Aug 7 14:21:05 2003 Corinna Vinschen <vinschen@redhat.com>
+
+ * configure.in: Fix Cygwin specific naming of libraries to
+ be net distribution compliant. (ruby-bugs:PR#1077)
+ cygwin-ruby18.dll -> cygruby18.dll
+
+Thu Aug 7 12:51:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_at_exit): should not be called without a block.
+ block_given check added.
+
+Thu Aug 7 06:46:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): forgot to pop ruby_class.
+
+ * eval.c (rb_call0): update ruby_class as well as ruby_cref.
+ (ruby-bugs-ja:PR#540)
+
+Thu Aug 7 04:52:50 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): remove ruby_frame->cbase and unify to
+ ruby_cref. [ruby-talk:78141]
+
+Thu Aug 7 04:19:15 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * gc.c: FreeBSD/ia64's mcontext_t is a bit different from that of
+ Linux/ia64. This makes gc.c compile but miniruby coredumps for
+ the moment.
+
+Thu Aug 7 00:15:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal.c: Comparison results adjusted to Float's.
+ * ext/bigdecimal.c: Use rb_num_coerce_????(x,y) instead of own.
+
+Wed Aug 6 22:58:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/testcase.rb: Added equality checking.
+ * lib/test/unit/testsuite.rb: Added equality checking.
+ * lib/test/unit/assertions.rb: Fixed a warning.
+
+Wed Aug 6 17:28:10 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): pass LIBPATH to make ruby. [ruby-dev:21137]
+
+ * ext/extmk.rb (extmake): set library name as source file name in
+ Init_ext(). [ruby-dev:21137]
+
+ * lib/mkmf.rb (Logging::postpone): postpone logging messages after
+ heading message as the result of the block.
+
+ * lib/mkmf.rb (macro_defined?): append newline to src unless ended
+ with it.
+
+ * lib/mkmf.rb (have_library): treat nil function name as "main".
+ (ruby-bugs:PR#1083)
+
+ * lib/mkmf.rb (pkg_config): should append additional libraries to
+ $libs but not $LIBS. [ruby-dev:21137]
+
+ * ext/io/wait/extconf.rb: check DOSISH macro instead of platform.
+
+ * ext/digest/sha1/extconf.rb: have_library already appends library
+ name.
+
+Wed Aug 6 17:23:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: initialize /* OK */ variables by Qnil to stop warnings.
+
+Wed Aug 6 04:58:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Setup*: add io/wait and openssl.
+
+Wed Aug 6 01:13:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_autoload): use ruby_cbase instead of ruby_class.
+
+ * eval.c (rb_f_autoload_p): ditto.
+
+ * class.c (rb_mod_init_copy): no longer implements independent
+ clone and dup methods. override "initialize_copy" instead.
+ [ruby-core:01352]
+
+ * object.c (rb_class_s_alloc): define Class allocation function.
+ this makes Classes to follow clone framework that uses
+ initialize_copy.
+
+ * object.c (rb_class_initialize): separate instantiation and
+ initialization.
+
+ * object.c (rb_obj_alloc): prohibit instantiation from
+ uninitialized class.
+
+ * object.c (rb_class_superclass): check uninitialized class.
+
+ * array.c (rb_ary_fill): wrong index processing with block. this
+ fix was done by Koji Arai <JCA02266@nifty.ne.jp> [ruby-list:38029]
+
+ * marshal.c (w_object): should preserve generic ivar for nil,
+ true, false, symbols, and fixnums.
+
+ * marshal.c (w_uclass): base_klass check should be done after
+ rb_class_real().
+
+Wed Aug 6 01:18:50 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: update document.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/protocol.rb: ditto.
+
+Wed Aug 6 00:48:37 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * marshal.c (w_object): should recommend marshal_dump rather than
+ _dump_data.
+
+Tue Aug 5 17:58:57 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (install): should preserve timestamp only.
+
+Tue Aug 5 17:31:59 2003 Ian Macdonald <ian@caliban.org>
+
+ * lib/shell/command-processor.rb (Shell::CommandProcessor::rmdir):
+ simple typo.
+
+Tue Aug 5 15:47:34 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_load): should preserve current source file/line.
+
+Tue Aug 5 10:04:42 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_new4): ptr may refer to null_str.
+
+Mon Aug 4 17:25:18 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.8.0 released.
+
+For the changes before 1.8.0, see doc/ChangeLog-1.8.0
+
+Local variables:
+add-log-time-format: (lambda ()
+ (let* ((time (current-time))
+ (system-time-locale "C")
+ (diff (+ (cadr time) 32400))
+ (lo (% diff 65536))
+ (hi (+ (car time) (/ diff 65536))))
+ (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t)))
+indent-tabs-mode: t
+tab-width: 8
+end:
diff --git a/doc/ChangeLog-2.0.0 b/doc/ChangeLog-2.0.0
new file mode 100644
index 0000000000..a1a79b8dca
--- /dev/null
+++ b/doc/ChangeLog-2.0.0
@@ -0,0 +1,24015 @@
+Fri Feb 8 19:56:54 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (rb_ary_dup): reverted r39004. see [Bug #7768], and
+ release manager finally decided to revert it.
+
+Fri Feb 8 16:09:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_ensure): preserve errinfo across ensure proc before
+ JUMP_TAG(). [ruby-core:52022] [Bug #7802]
+
+Fri Feb 8 16:08:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_separately): check also terminating
+ signal not only if core dumped.
+
+Fri Feb 8 13:12:04 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generator/darkfish.rb: Set encoding on output template to
+ user-specified encoding.
+ * test/rdoc/test_rdoc_generator_darkfish.rb: Test for above.
+
+ * lib/rdoc.rb: Bump version
+
+Fri Feb 8 11:53:33 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/security/policy.rb: Raise proper exceptions when
+ verifying unsigned gems (instead of crashing).
+ * test/rubygems/test_gem_security_policy.rb: Tests for the above.
+
+Fri Feb 8 10:44:44 2013 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/test_gem_dependency_installer.rb: Improve coverage of
+ --install-dir feature of gem install.
+
+Fri Feb 8 10:11:09 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/config_file.rb: Add missing require for
+ user_interaction.rb
+
+ * lib/rubygems/dependency_installer.rb: Minor refactor for clarity.
+
+Fri Feb 8 09:35:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#configuration): set all ruby names.
+ hdrdir now needs RUBY_VERSION_NAME.
+
+Fri Feb 8 08:58:26 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package/old.rb: Fix loading old format gems on ruby
+ 1.8. This commit is only so trunk and rubygems master have the same
+ code.
+
+Fri Feb 8 08:53:27 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: fixing string quotation
+ when dumping Ruby strings. Thanks Ingy
+
+ * test/psych/test_psych.rb: appropriate tests.
+
+ * test/psych/test_yaml.rb: ditto
+
+Fri Feb 8 08:50:42 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: change output reference
+ ids to be sequential numbers.
+
+Fri Feb 8 07:47:56 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package/old.rb: Disallow installation of old-format
+ gems when a security policy is active.
+ * test/rubygems/test_gem_package_old.rb: Test for above.
+
+Fri Feb 8 07:34:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/net/http.rb (HTTP.post_form): Fix module scope in documentation
+ Patch by David Albert [Bug #7794] [ruby-core:51955]
+
+Fri Feb 8 07:33:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * compar.c (cmp_equal): Document ignored exception and return false
+ By Makoto Kishimoto [Bug #7790] [ruby-dev:46925] [ruby-dev:46910]
+
+Fri Feb 8 07:17:00 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Only install local gems if
+ they end in '.gem'. Fixes github rubygems issue #407.
+ * test/rubygems/test_gem_dependency_installer.rb: Test for the above.
+
+Fri Feb 8 00:02:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (obj2gid): use getgrnam_r() only if getgrnam_r() and
+ _SC_GETGR_R_SIZE_MAX is available.
+ MirOS BSD (MirBSD 10 GENERIC#1382 i386) have getgrnam_r() but
+ no _SC_GETGR_R_SIZE_MAX.
+ (obj2uid): use getpwnam_r() only if getpwnam_r() and
+ _SC_GETPW_R_SIZE_MAX is available.
+ This is consistency for obj2gid.
+ MirOS BSD have neither getpwnam_r() nor _SC_GETPW_R_SIZE_MAX.
+
+Thu Feb 7 22:01:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: define linker for shared library on MirOS BSD.
+
+Thu Feb 7 21:09:23 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_config_file.rb
+ (TestGemConfigFile#test_check_credentials_permissions): skip on
+ Windows. see [Bug #7784] [ruby-core:51864] and r39070.
+
+Thu Feb 7 20:52:40 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): added variables which were
+ missing at r39130.
+
+Thu Feb 7 15:33:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#merge_libs): insert following reversal
+ ordered elements just after the duplicated element, not overwriting
+ successive elements. [ruby-core:50314] [Bug #7467]
+
+Thu Feb 7 14:56:15 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb: Ensure digests are generated for signing.
+ * test/rubygems/test_gem_package.rb: Test for the above.
+
+ * lib/rubygems/security/policy.rb: Ensure digests are present when
+ verifying a gem and match the number of signatures bidirectionally.
+ * test/rubygems/test_gem_security_policy.rb: Test for the above.
+
+ * lib/rubygems.rb: Documentation improvements (by zzak)
+
+Thu Feb 7 05:52:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/pty/README: Remove static documentation file
+ * ext/pty/pty.c: Add License to PTY module overview
+
+Thu Feb 7 02:31:10 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * vm_insnhelper.c: attr_writer should return its argument [Bug #7773]
+
+ * test/ruby/test_basicinstructions.rb: Test for above
+
+Thu Feb 7 01:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/security.rdoc: Link to japanese version of CVE page patch by
+ nagachika
+
+Wed Feb 6 23:30:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/pty/README.expect: Removed static documentation file
+ * ext/pty/lib/expect.rb: Documentation for IO#expect
+
+Wed Feb 6 22:25:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * hash.c (env_reject_bang): hide keys array from ObjectSpace
+ * hash.c (env_select_bang): ditto
+
+Wed Feb 6 17:33:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (multiarch): add option to move architecture dependent
+ directories. [Feature #6111]
+
+ * template/ruby.pc.in: add arch dependent paths.
+
+ * configure.in (rubyarchhdrdir, sitearchhdrdir, vendorarchhdrdir): add
+ options to customize architecture dependent header directories.
+
+ * configure.in (rubyarchprefix, sitearchdir, vendorarchdir): add
+ options to customize architecture dependent library directories.
+
+ * template/ruby.pc.in, tool/mkconfig.rb, tool/rbinstall.rb: use
+ configured values.
+
+ * tool/mkconfig.rb: expand rubyarchdir to extract prefix.
+
+ * configure.in (RUBY_VERSION_NAME), template/ruby.pc.in: add
+ substitution and define.
+
+ * configure.in, version.c: parametric architecture name for paths.
+
+ * configure.in (shvar_to_cpp): convert sh variable references
+ by replacing with string literal forms in cpp.
+
+Wed Feb 6 17:05:26 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 4.0.0.rc.2
+
+Mon Feb 4 02:22:49 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_process.rb (test_setsid): ensure to call
+ Process.wait(). Reported by George Koehler. Thanks.
+
+Mon Feb 4 02:18:00 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_process.rb (test_setsid): skip when platform is
+ OpenBSD. Contributed from George Koehler.
+ [Bug #7789] [ruby-core:51889]
+
+Wed Feb 6 13:35:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_method_entry_location, rb_{mod,obj}_method_location): new
+ functions to obtain source location of method definition.
+
+ * vm_method.c (rb_obj_respond_to): show the location of old style
+ respond_to? method.
+
+Wed Feb 6 13:03:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/security.rdoc: Add link to CVEs on ruby-lang.org/en/security
+
+Wed Feb 6 12:49:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * NEWS: Add note about removal of CSV::load and CSV::dump from r39077
+
+Wed Feb 6 05:57:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/racc/parser.rb: Hide copyright notice from Racc doc
+
+Wed Feb 6 05:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/rubygems/*: Removed outdated documentation files
+ * lib/rubygems/LICENSE.txt: Include license file
+ * lib/rubygems.rb: Move Gem module documentation so rdoc can parse it
+ and link to LICENSE.txt
+ * lib/rubygems/*: Hide useless documentation from Gem module rdoc
+
+Wed Feb 6 03:45:19 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/security.rdoc: Remove documentation for unsafe CSV.load which
+ was deleted in r39077
+
+Wed Feb 6 03:27:19 2013 James Edward Gray II <james@graysoftinc.com>
+
+ * lib/csv.rb: Remove the dangerous serialization feature.
+
+Wed Feb 6 00:56:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb.rb: Remove example from restrictions, it works [Github #246]
+ Based on patch by Ryunosuke SATO
+
+Wed Feb 6 00:46:53 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_vm_stack_to_heap): call rb_vm_get_binding_creatable_next_cfp
+ instead of rb_vm_get_ruby_level_next_cfp to prevent a segfault by
+ calling Kernel#callcc. See r39067 for more details.
+ [ruby-dev:46908] [ruby-trunk - Bug #7774]
+
+ * test/ruby/test_settracefunc.rb: add a test.
+
+Tue Feb 5 18:48:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * doc/security.rdoc: add regex, eval and drb sections
+
+Tue Feb 5 17:24:02 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/servlet.rb: Fixed root search paths, filesystem paths
+ instead of HTTP paths were returned.
+ * test/rdoc/test_rdoc_servlet.rb: Test for above.
+
+Tue Feb 5 16:37:00 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/config_file.rb: Ignore permissions check on windows.
+ Windows writes 0600 file as 0644 permissions making the check
+ useless.
+
+Tue Feb 5 16:25:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_obj_respond_to): drop optional include_all flag if
+ respond_to? method is defined in old style. [Bug #7722]
+
+Tue Feb 05 15:04:34 2013 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (rb_binding_new_with_cfp): permit to create binding object
+ of IFUNC frame.
+ When `rb_binding_new_with_cfp()' is called, VM finds out the first
+ normal (has iseq) frame and create a binding object of this frame
+ and create Env objects. `ep's of related frames are updated
+ (`ep's point Env object managed spaces).
+ However, `ep' of skipped IFUNC frame was not updated and
+ old invalid `ep' was remained. It causes serious problems.
+ To solve this issue, permit IFUNC to create binding.
+ (Maybe there is no problem on it)
+ [ruby-dev:46908] [ruby-trunk - Bug #7774]
+
+ * test/ruby/test_settracefunc.rb: add a test.
+
+ * vm.c (rb_vm_get_binding_creatable_next_cfp), vm_core.h: added.
+
+ * vm_trace.c: fix to use `rb_vm_get_binding_creatable_next_cfp()'.
+
+Tue Feb 5 14:43:15 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Fix error message, patch by pypypy [Bug #7777]
+
+Tue Feb 5 14:36:04 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (fix_pow): Handle special cases when base is 0, -1 or +1
+ [Bug #5713] [Bug #5715]
+
+ * rational.c (nurat_expt): ditto
+
+Tue Feb 5 13:27:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (rawmode_opt): use default values by `stty
+ raw`.
+
+Tue Feb 5 12:50:47 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * range.c: Use div instead of / for bsearch
+
+ * test/ruby/test_range.rb: Test showing bug when requiring mathn
+
+Tue Feb 5 12:48:38 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Use to_enum for Enumerable methods returning
+ Enumerators.
+ This makes Lazy#cycle no longer needed, so it was removed.
+ Make Enumerator#chunk and slice_before return lazy Enumerators.
+ [Bug #7715]
+
+ * internal.h: Remove ref to rb_enum_cycle_size; no longer needed
+
+ * enum.c: Make enum_cycle_size static.
+
+ * test/ruby/test_lazy_enumerator.rb: Test for above
+
+Tue Feb 5 12:48:10 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Finalize and document Lazy.new. [Bug #7248]
+ Add Lazy#to_enum and simplify Lazy#size.
+
+ * test/ruby/test_lazy_enumerator.rb: tests for above
+
+Tue Feb 5 11:35:35 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/push_command.rb: Fixed credential download for
+ `gem push --host`
+ * lib/rubygems/gemcutter_utilities.rb: ditto.
+ * test/rubygems/test_gem_commands_push_command.rb: Test for the above.
+ * test/rubygems/test_gem_gemcutter_utilities.rb: ditto.
+
+ * lib/rubygems/config_file.rb: Abort if the `gem push` credentials
+ file has insecure permissions.
+ * test/rubygems/test_gem_config_file.rb: Test for the above.
+
+ * lib/rubygems/ext/builder.rb: Do not look for Gemfile, Isolate, etc.
+ while building gem extensions.
+
+ * lib/rubygems/package.rb: Unset spec and files list if a gem's
+ signatures cannot be verified.
+ * test/rubygems/test_gem_package.rb: Test for the above.
+
+ * lib/rubygems/specification.rb: Reduce use of eval.
+ * lib/rubygems/test_case.rb: ditto.
+
+ * test/rubygems/test_gem_specification.rb: Test setting
+ specification_version for legacy gems. Dup Gem.ruby before
+ untainting in case it's frozen.
+
+ * lib/rubygems.rb: Reduce use of eval. Only read files when looking
+ for Gemfile, Isolate, etc.
+ * test/rubygems/test_gem.rb: Test for the above.
+
+Tue Feb 5 10:15:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/security.rdoc: Wrap security guide at 80 columns
+
+Tue Feb 5 10:15:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/security.rdoc: Grammatical error on security guide
+ Patch by Josh Bassett [Github fixes #245]
+
+Tue Feb 5 10:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/racc/parser.rb: Update #do_parse and #yyparse from upstream
+ See [Github tenderlove/racc@7d954b5]
+
+Tue Feb 5 09:55:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/racc: Merge Racc documentation downstream, add grammar ref file
+
+Tue Feb 5 08:03:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb.rb, lib/irb/ext/save-history.rb: Add documentation on how to
+ enabled irb history [ruby-core:51347] [Bug #7679]
+
+Tue Feb 5 07:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb.rb, lib/irb/context.rb: Add documentation on how to enable
+ auto-indentation and autocompletion using irbrc and irb_context
+ [ruby-core:51209] [Bug #7642] and [ruby-core:51348] [Bug #7680]
+
+Tue Feb 5 05:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/standard_library.rdoc: Document list of libraries and extensions
+ and their purpose or short description
+ * lib/README: Remove lib/README in favor of doc/standard_library.rdoc
+
+Tue Feb 5 04:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/json/lib/json.rb: Move module overview definition for rdoc
+
+Tue Feb 5 03:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/tracer.rb: Move class overview definition and reformat
+
+Mon Feb 4 15:10:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (rawmode_opt): initialize options for the
+ case all options are not given.
+
+Mon Feb 4 12:44:13 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c (control_frame_dump): capitalize prefix of `ep'
+ if `ep' points an env object.
+
+Mon Feb 4 04:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/English.rb: Add English module for RDoc to parse, then
+ remove_const to avoid confusion. Include full list of aliases and
+ their associated global variable.
+
+Mon Feb 4 02:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/yaml.rb (YAML::EngineManager): Documentation for #yamler and
+ #yamler= for using the removed Syck gem as the YAML::ENGINE
+
+Sun Feb 3 16:54:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/io-console.gemspec: bump. [Bug #7762]
+
+ * test/io/console/test_io_console.rb (test_stringio_getch): use more
+ descriptive assertions.
+
+ * ext/io/console/console.c (rawmode_opt): min is minimum characters,
+ not tenths.
+
+Sun Feb 3 16:13:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * doc/security.rdoc: add first cut at a Ruby security document
+
+Sun Feb 3 10:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * random.c: Document range argument for Kernel#rand.
+ [ruby-core:51794] [Bug #7770]
+
+Sun Feb 3 10:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * numeric.c: Document Float constants [ruby-core:51484] [Bug #7709]
+
+Sun Feb 3 09:38:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/profiler.rb (PROFILE_CALL_PROC, PROFILE_RETURN_PROC): add b_call
+ and b_return to profile block calls.
+
+ * lib/profiler.rb (PROFILE_CALL_PROC, PROFILE_RETURN_PROC): split
+ PROFILE_PROC for call and return events.
+
+Sat Feb 2 14:32:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/minitest/mock.rb, lib/minitest/hell.rb: nodoc top-level module
+
+Sat Feb 2 14:05:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/debug.rb: Documentation for DEBUGGER__ class methods based on
+ patch by Vincent Batts [ruby-core:51253]
+
+Sat Feb 2 13:37:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/net/smtp.rb: Fix rdoc title for Net::SMTP
+
+Sat Feb 2 13:32:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/net/pop.rb: Fix rdoc title for Net::POP3
+
+Sat Feb 2 13:00:11 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/gserver.rb (GServer#start): fix a timing issue. patch from
+ Charles Nutter. [Bug #7081]
+
+Sat Feb 2 12:36:54 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/fileutils.rb (copy_entry, wrap_traverse): preserve attributes of
+ directories on FileUtils.cp_r. The fix was proposed by Jan
+ Wedekind. [Bug #7246]
+
+ * test/fileutils/test_fileutils.rb: add a test for above.
+
+Sat Feb 2 12:30:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/uri/ftp.rb (URI::FTP.new2): nodoc method from r39013 [Bug #7301]
+
+Sat Feb 2 12:15:36 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/uri/ftp.rb (URI::FTP.new2): remove the rdoc because it is not
+ well tested yet. [Bug #7301]
+
+Sat Feb 2 12:07:41 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ChangeLog: Forgot to add a reference to the ChangeLog of the
+ previous commit.
+
+Sat Feb 2 12:05:18 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/fileutils.rb: chmod/chmod_R with a string mode (e.g., "+x")
+ caused error in verbose mode. [Bug #7373]
+
+ * test/fileutils/test_fileutils.rb: add a test for above.
+
+Sat Feb 2 11:44:42 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/English.rb: Remove some confusing words from rdoc. [Bug #7406]
+
+Sat Feb 2 10:17:12 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * NEWS: add keyword arguments.
+
+Sat Feb 2 07:45:44 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c (proc_curry): Fix arity check [Bug #5747]
+
+ * test/ruby/test_proc.rb: Test for above
+
+Sat Feb 2 07:44:15 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c: Add {*}_min_max_arity and refactor.
+ [Bug #7765]
+
+ * test/ruby/test_proc.rb: Fix wrong test
+
+Fri Feb 2 00:46:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * marshal.c: add security considerations to marshal overview, refer to
+ overview from Marshal.load documentation [#7759]
+
+Fri Feb 1 23:04:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * array.c (rb_ary_dup): make returned array the same class as the original
+ array [Bug #7768] [ruby-core:51792]
+ * test/ruby/test_array.rb (class TestArray): add test
+
+Fri Feb 1 16:35:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): prohibit setting instance variables of
+ existing class/module.
+
+Fri Feb 1 14:34:29 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/extconf.rb, ext/readline/readline.c: check
+ RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE directly in
+ readline.c. Patch by Zachary Scott. [Bug #7397] [ruby-core:49561]
+
+Thu Jan 31 21:55:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * marshal.c (marshal_load): Add documentation warning against using
+ Marshal.load on untrusted data [Bug #7759] [ruby-core:51765]
+
+Thu Jan 31 16:33:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (local_push_gen): no assigned but unused variable warnings
+ in eval as well as -e. [Feature #7730] [ruby-core:51580]
+
+Wed Jan 30 12:30:08 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_signal.rb (test_trap_puts): Fix typo. "sync"
+ should be "STDOUT.sync".
+
+Thu Jan 31 15:39:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * string.c (rb_str_aset_m): Documentation for String#[]= fix
+ Raises an IndexError if Regexp match is out of range.
+ Github fixes #243 Patch by Dmtiriy Budnik
+
+Thu Jan 31 13:54:44 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (rsock_unix_sockaddr_len): return
+ sizeof(sa_family_t) if path is empty. see "Autobind Feature" in
+ unix(7) for details.
+
+ * ext/socket/lib/socket.rb (unix_socket_abstract_name?): treat an
+ empty path as an abstract name.
+
+ * test/socket/test_unix.rb: related test.
+
+Wed Jan 30 20:58:50 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_getsockname): ignore truncated
+ part of socket address.
+ (bsock_getpeername): ditto.
+ (bsock_local_address): ditto.
+ (bsock_remote_address): ditto.
+
+ * ext/socket/unixsocket.c (unix_path): ditto.
+ (unix_addr): ditto.
+ (unix_peeraddr): ditto.
+
+ * ext/socket/init.c (cloexec_accept): ditto.
+
+Wed Jan 30 17:08:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (fstat): revert r37337, which uses _fstati64()
+ instead of fstati64() on mingw32. [Bug #7276]
+
+Wed Jan 30 15:26:37 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/unixsocket.c (rsock_init_unixsock): use rb_inspect()
+ because rb_sys_fail_str() fails if its argument contains NUL.
+
+ * test/socket/test_unix.rb: related test.
+
+Wed Jan 30 15:21:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): show the most important message, Crash
+ Report log information, first.
+
+Wed Jan 30 15:00:05 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_bsearch): Raise TypeError on bad return from block
+
+ * range.c (range_bsearch): ditto
+
+ * test/ruby/test_array.rb (class): Test for above
+
+ * test/ruby/test_range.rb (class): ditto
+
+Wed Jan 30 14:46:28 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * range.c: Restrict bsearch to integers [#7728]
+
+ * test/ruby/test_range.rb: Test for above
+
+Wed Jan 30 14:10:52 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_bsearch): Return enumerator if no block [#7725]
+
+ * range.c (range_bsearch): ditto
+
+ * test/ruby/test_array.rb: Test for above
+
+ * test/ruby/test_range.rb: ditto
+
+Wed Jan 30 13:53:43 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Take conjugate for inner product
+ [rubyspec:5a01ad5719f2] [ruby-dev:46101]
+
+Wed Jan 30 13:22:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (local_push_gen): warn assigned but unused variables also in
+ toplevel, except for -e option. [Feature #7730] [ruby-core:51580]
+
+Wed Jan 30 13:17:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_restore_thread): svar should be separate per fibers.
+ [ruby-core:51331] [Bug #7678]
+
+Wed Jan 30 07:15:04 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * re.c (reg_operand): Simplify and reuse error handling [Bug #7539]
+
+ * test/ruby/test_regexp.rb: Test for above
+
+Wed Jan 30 07:00:16 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * object.c: Improve error for failed implicit conversions [Bug #7539]
+
+ * error.c: Adapt rdoc
+
+ * test/ruby/test_object.rb: Test for above
+
+Tue Jan 29 21:40:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * lib/net/http/generic_request.rb (encode_multipart_form_data): remove
+ tempfile explicitly.
+
+Tue Jan 29 19:27:18 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * array.c: Improve documentation about
+ comparison by hash for concerned methods. [ruby-core:51266]
+
+Tue Jan 29 17:03:28 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: fix issue of rb_debug_inspector_open().
+ The order of making binding should be stack (frame) top to bottom.
+ [Bug #7635]
+ And also fix issue of collecting klass. Collecting klass is same
+ as TracePoint#defined_class.
+ (previous version, it returns T_ICLASS (internal objects).
+
+ * test/-ext-/debug/test_debug.rb: add a test.
+
+ * ext/-test-/debug/extconf.rb, init.c, inspector.c: ditto.
+
+ * vm_backtrace.c: remove magic number and add enum CALLER_BINDING_*.
+
+ * vm_backtrace.c, include/ruby/debug.h: add new C api (experimental)
+ rb_debug_inspector_frame_self_get().
+
+ * vm.c, vm_core.h, vm_trace.c: move decl. of
+ rb_vm_control_frame_id_and_class() and constify first parameter.
+
+Tue Jan 29 16:50:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_trace.c (rb_tracepoint_enable, rb_tracepoint_disable): check safe
+ level as well as set_trace_func.
+
+ * vm_trace.c (set_trace_func, thread_{add,set}_trace_func_m): check
+ safe level as well as 1.8.
+
+Tue Jan 29 16:49:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_mod_method_arity): return original arity of the method if
+ aliased because of visibility change, like as Method#arity.
+
+Tue Jan 29 12:05:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_marshal.rb: remove temporally files early.
+
+ * test/ruby/test_process.rb: ditto.
+
+ * test/psych/test_exception.rb: ditto.
+
+Tue Jan 29 09:26:20 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): calculate the
+ correct address length of an abstract socket.
+
+ * test/socket/test_unix.rb: related test.
+
+Mon Jan 28 18:02:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_backtrace.c (rb_debug_inspector_frame_{class,binding,iseq}_get):
+ use long as index as well as RARRAY_LEN().
+
+Mon Jan 28 17:51:38 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_separately): imply no core dump.
+
+Mon Jan 28 12:32:31 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/fcntl/fcntl.c: update document. use "file descriptor" instead
+ of "file handle" because it is not used other Ruby documents and
+ it is confusing with Windows file handle.
+ correct F_DUPFD behavior.
+
+Sat Jan 26 22:39:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object): dump instance variables of the result of
+ marshal_dump not the original object. [ruby-core:51163] [Bug #7627]
+
+ * complex.c (nucomp_marshal_dump): need to copy instance variables.
+
+ * rational.c (nurat_marshal_dump): ditto.
+
+Sat Jan 26 13:35:56 2013 Eric Hodel <drbrain@segment7.net>
+
+ * ext/fcntl/fcntl.c: Document Fcntl constants
+
+Sat Jan 26 12:54:40 2013 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c (rb_env_size): Restored documentation for ENV.size
+
+ * lib/drb/drb.rb: Documented DRb::DRb#run.
+
+ * lib/erb.rb (class ERB): Improved documentation of ERb.
+
+ * transcode.c: Documented Encoding::Converter constants.
+
+Sat Jan 26 10:09:57 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/accesslog.rb: Improved WEBrick documentation.
+ * lib/webrick/cgi.rb: ditto.
+ * lib/webrick/config.rb: ditto.
+ * lib/webrick/cookie.rb: ditto.
+ * lib/webrick/httpauth/authenticator.rb: ditto.
+ * lib/webrick/httpauth/basicauth.rb: ditto.
+ * lib/webrick/httpauth/digestauth.rb: ditto.
+ * lib/webrick/httpproxy.rb: ditto.
+ * lib/webrick/httprequest.rb: ditto.
+ * lib/webrick/httpresponse.rb: ditto.
+ * lib/webrick/https.rb: ditto.
+ * lib/webrick/httpserver.rb: ditto.
+ * lib/webrick/httpservlet/cgihandler.rb: ditto.
+ * lib/webrick/httpservlet/filehandler.rb: ditto.
+ * lib/webrick/httpservlet/prochandler.rb: ditto.
+ * lib/webrick/httputils.rb: ditto.
+ * lib/webrick/httpversion.rb: ditto.
+ * lib/webrick/log.rb: ditto.
+ * lib/webrick/server.rb: ditto.
+ * lib/webrick/ssl.rb: ditto.
+ * lib/webrick/utils.rb: ditto.
+ * lib/webrick/version.rb: ditto.
+
+Sat Jan 26 08:29:33 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/raddrinfo (rsock_unix_sockaddr_len): renamed from
+ rsock_unixpath_len, because it returns not the length of the path,
+ but the length of a socket address for the path.
+
+Sat Jan 26 01:12:23 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (test_ioctl_linux): skip if a platform is
+ not x86 because linux ioctl request number depend on cpu arch.
+ At least, alpha, mips, sparc and ppc have a different number.
+ [Bug #7718] [ruby-core:51544]
+
+Fri Jan 25 19:14:24 2013 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: use TlsAlloc instead of __declspec(thread)
+ to avoid SEGV if win32ole.so loaded with LoadLibrary in Windows
+ XP or earlier.
+
+Fri Jan 25 16:47:31 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (rsock_unixpath_len, init_unix_addrinfo),
+ ext/socket/unixsocket.c (unixsock_connect_internal,
+ rsock_init_unixsock): calculate the correct address length of
+ an abstract socket. Without this fix, sizeof(struct sockaddr_un)
+ is specified as the length of an abstract socket for bind(2) or
+ connect(2), so the address of the socket is filled with extra NUL
+ characters. See unix(7) for details.
+
+ * ext/socket/lib/socket.rb (unix_server_socket): don't access the
+ file system if the platform is Linux and path starts with NUL,
+ which means that the socket is an abstract socket.
+
+ * test/socket/test_unix.rb: related test.
+
+Fri Jan 25 13:02:27 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/drb/drb.rb: Updated documentation based on patch from Vincent
+ Batts. [ruby-trunk - Bug #7714]
+ * lib/drb/ssl.rb: ditto.
+
+Fri Jan 25 12:23:29 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/drb/drb.rb: Improved documentation by adding or hiding methods.
+ * lib/drb/eq.rb: ditto.
+ * lib/drb/extserv.rb: ditto.
+ * lib/drb/gw.rb: ditto.
+ * lib/drb/invokemethod.rb: ditto.
+ * lib/drb/observer.rb: ditto.
+ * lib/drb/ssl.rb: ditto.
+ * lib/drb/timeridconv.rb: ditto.
+ * lib/drb/unix.rb: ditto.
+
+ * sample/drb/gw_cu.rb: Fixed bug in DRb gateway sample.
+
+Fri Jan 25 12:01:56 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: modify a comment about rb_iseq_t::local_size.
+ A patch by davidbalbert (David Albert) [Bug #6750]
+
+Fri Jan 25 10:36:31 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Documented MakeMakefile constants. Hide implementation
+ details from RDoc
+
+Fri Jan 25 10:04:07 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/compatibility.rb: Hide compatibility shims from RDoc
+
+ * lib/rubygems/config_file.rb: Hide RbConfig use from RDoc
+
+ * lib/rubygems/test_case.rb: Added note to use realpath when 1.8
+ support is dropped.
+
+Fri Jan 25 09:14:43 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generator/darkfish.rb: Fixed debug message. RDoc bug #174
+ by Thomas Leitner.
+
+ * lib/rdoc/store.rb: Fixed deletion of ri attribute data when a class
+ was loaded then saved. RDoc bug #171 by Thomas Leitner.
+ * test/rdoc/test_rdoc_store.rb: Test for above.
+
+Thu Jan 24 19:55:25 2013 Shota Fukumori <her@sorah.jp>
+
+ * NEWS (yaml): Write about bundled libyaml.
+
+Thu Jan 24 16:54:34 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/calling_methods.rdoc: Added a Method Lookup section.
+ * doc/syntax/refinements.rdoc (Method Lookup): Clarified that
+ refinement methods are looked up in classes, not instances.
+
+Thu Jan 24 16:49:17 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enum.c (enum_zip): Fix error message
+
+ * array.c (take_items): Same, for Array#zip
+
+Thu Jan 24 16:47:26 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c (lazy_zip): raise error for bad arguments
+ [Bug #7706]
+
+Thu Jan 24 16:05:08 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Optimize Lazy#zip when passed only arrays
+ [Bug #7706]
+
+Thu Jan 24 15:21:17 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Fix state handling for Lazy#zip,{drop_take}{_while}
+ [bug #7696] [bug #7691]
+
+Thu Jan 24 11:43:47 2013 Narihiro Nakamura <authornari@gmail.com>
+
+ * eval.c (f_current_dirname): Add documentation about "__dir__
+ returns always an absolute path". [Bug #7729]
+
+Thu Jan 24 10:28:30 2013 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS (RDoc): Added mention of page support and markdown support.
+
+Thu Jan 24 09:40:13 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/refinements.rdoc: Added refinements document based on
+ the specification from the wiki.
+ * doc/syntax.rdoc: Added link to refinements document.
+
+Wed Jan 23 16:29:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn_flags): fix missing
+ initialization. pointed out by phasis68 (Heesob Park) at
+ [ruby-core:51579]. [Bug #7721]
+
+Wed Jan 23 16:18:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#try_constant): fix for large unsigned.
+
+ * lib/mkmf.rb (MakeMakefile#try_constant): fix for larger constants.
+
+ * test/mkmf/test_constant.rb: tests for try_constant.
+ TODO: define check_constant and use it.
+
+Wed Jan 23 13:35:37 2013 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (ruby_init_stack): ignore `STACK_END_ADDRESS'
+ if Ruby interpreter is running on co-routine.
+ [Feature #2294]
+ https://bugs.ruby-lang.org/issues/2294#note-18
+
+Wed Jan 23 12:28:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn_flags): check the results
+ of acp_to_wstr() which can return NULL. [ruby-core:51557] [Bug #7721]
+
+Wed Jan 23 10:40:49 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/assignment.rdoc (Implicit Array Assignment): Clarify
+ that "left-hand side" means "of the assignment". Suggested by Jorge
+ Dias.
+ * doc/syntax/assignment.rdoc (Multiple Assignment): ditto.
+
+Wed Jan 23 10:34:47 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/assignment.rdoc (Local Variables and Methods): Fixed
+ example showing caching of a method's results into a local variable.
+ Added not about using an explicit receiver to call a method that
+ matches a local variable. Suggested by markov_twain on twitter.
+
+Wed Jan 23 10:20:08 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/README: Fixed typo. Patch by Pradeep Sahoo.
+ Fixes #240 on github
+
+Wed Jan 23 09:53:39 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/servlet.rb: Fixed display of site and home documentation.
+ Fixes rdoc issue #170 by Thomas Leitner.
+ * test/rdoc/test_rdoc_servlet.rb: Test for above.
+
+ * lib/rdoc/code_object.rb: Split #initialize_visibility from
+ #initialize for reuse when loading a stored object.
+ Fixes rdoc issue #171 by Thomas Leitner.
+
+ * lib/rdoc/any_method.rb: Initialize visibility for #display? For
+ rdoc issue #171
+ * lib/rdoc/attr.rb: ditto.
+ * lib/rdoc/class_module.rb: ditto.
+ * lib/rdoc/top_level.rb: ditto.
+ * test/rdoc/test_rdoc_any_method.rb: Test for above.
+ * test/rdoc/test_rdoc_attr.rb: ditto.
+ * test/rdoc/test_rdoc_class_module.rb: ditto.
+ * test/rdoc/test_rdoc_constant.rb: ditto.
+ * test/rdoc/test_rdoc_top_level.rb: ditto.
+
+Wed Jan 23 06:43:26 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/test_case.rb: Use Dir.tmpdir for rubygems tests instead
+ of ./tmp/test. Fixes [ruby-trunk - Bug #7717]
+
+Tue Jan 22 22:58:03 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el (ruby-electric-curlies): Fix the bug where
+ an open curly inserted in a string is always replaced with a
+ hash sign.
+
+Mon Jan 21 15:41:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb: BASERUBY is transient at core build.
+
+Mon Jan 21 13:51:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb ($extmk): traverse parent directories for the case
+ srcdir is a symlink.
+
+Sun Jan 20 23:55:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object, r_object0): separate respond_to checks and
+ calling, and get back to the old behavior for 2.0. [Bug #7564]
+
+Sun Jan 20 22:24:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/vpath.rb (VPath#def_options): hack for msys make, which
+ converts a command line argument to non-msys command seems like a
+ path list automagically. [Bug #7710] [ruby-core:51489]
+
+Sat Jan 19 11:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * struct.c (Struct.new): Document Struct.new with block
+ Patch by Hiroyuki Iwatsuki [Bug #7674]
+
+Sat Jan 19 09:52:46 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/miscellaneous.rdoc: Added section on defined?
+
+Sat Jan 19 09:27:31 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/assignment.rdoc (Local Variables and Methods): Made it
+ more clear that local variables are created by the parser, not
+ execution. Thanks to John Hawthorn.
+
+Sat Jan 19 09:15:58 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/assignment.rdoc: Improved links
+ * doc/syntax/methods.rdoc: ditto.
+
+ * doc/syntax.rdoc: Added link to assignment document
+
+Sat Jan 19 08:47:33 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/assignment.rdoc: Added a syntax document on assignment.
+
+Fri Jan 18 14:11:01 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Added Array Decomposition.
+
+Fri Jan 18 12:54:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (gem): Gem.ensure_gem_subdirectories makes
+ subdirectories group-writable, so make them with $dir_mode.
+
+Fri Jan 18 11:24:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (ole_initialize): uninitialize OLE at thread
+ ends. [Bug #2618] [ruby-core:27634]
+
+ * ext/win32ole/win32ole.c (ole_initialize): initialize OLE for each
+ threads. [Bug #2618] [ruby-core:27634]
+
+Thu Jan 17 22:10:35 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rubygems/ext/builder.rb (Gem::Ext::Builder.make): Remove
+ .time dependency from *.rb install target. It causes needless
+ *.rb install. [Bug #7698] [ruby-core:51437]
+ Reported by Tadashi Saito. Thanks!!!
+ * test/rubygems/test_gem_installer.rb
+ (TestGemInstaller#test_install_extension_and_script): Add a test
+ for the above change.
+
+Thu Jan 17 21:08:20 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * eval.c: Fix a typo in ruby_finalize() documentation.
+
+Thu Jan 17 20:28:18 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * object.c: Typo in Kernel#hash documentation.
+ Patch by zed_0xff [Github Fixes #237]
+
+Thu Jan 17 10:48:56 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: use constants rather than
+ calculating Inf and NaN.
+
+Thu Jan 17 10:21:05 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/miscellaneous.rdoc: Added Ending an Expression and
+ indentation.
+
+Thu Jan 17 09:30:21 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Untaint string when checking output
+ for $SAFE=1
+
+ * lib/rubygems/specification.rb: Keep previously loaded specs as
+ active. This prevents double loading when refreshing the gem list.
+ * test/rubygems/test_gem.rb: Test for above
+
+ * lib/rubygems.rb: Bump version to 2.0.0.rc.2
+
+Thu Jan 17 09:08:37 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc: Added ? : ternary if
+
+Thu Jan 17 08:36:04 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/miscellaneous.rdoc: Added documentation for alias, undef,
+ BEGIN, END.
+ * doc/syntax/modules_and_classes.rdoc (Constants): Fixed unwrapped
+ paragraph with trailing whitespace.
+ * doc/syntax/modules_and_classes.rdoc (Scope): Added section pointing
+ to alias and undef documentation.
+ * doc/syntax.rdoc: Added link to miscellaneous section.
+
+Thu Jan 17 07:50:26 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc (Flip-Flop): Added a section on
+ the flip-flop.
+
+Thu Jan 17 06:59:51 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc (if Expressions): Fixed markup
+ error. Fixes #235 on github by FlyingFoX.
+
+Thu Jan 17 06:53:58 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/literals.rdoc (Strings): Fixed typo. Fixes #236 on
+ github by Doug Yun.
+
+Wed Jan 16 18:45:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/lib/win32ole.rb: use TracePoint to hook all thread
+ creation not only by Thread.new and to get rid of interference with
+ svar scope. [Bug #7681] [ruby-core:51365]
+
+Wed Jan 16 09:35:53 2013 Eric Hodel <drbrain@segment7.net>
+
+ * .document: Removed extra space
+ * lib/irb/lc/.document: Hide help-message
+ * lib/minitest/.document: Hide README.txt
+ * lib/rake/lib/.document: Hide project.rake
+ * lib/rdoc/generator/template/json_index/.document: Hide JavaScript
+ files
+ * lib/rubygems/ssl_certs/.document: Hide PEM files.
+
+Wed Jan 16 03:54:28 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc: Omit optional "then" for if and
+ unless expressions. Improved description of "a if a = 0.zero?"
+ NameError. Note that "do" for for loop is optional.
+
+Wed Jan 16 03:28:47 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/calling_methods.rdoc: Link to defining methods.
+ * doc/syntax/methods.rdoc: Link to calling methods, fixed typo.
+
+Wed Jan 16 03:15:00 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Fixed link
+ * doc/syntax/modules_and_classes.rdoc: Fixed link
+ * doc/syntax.rdoc: Updated with links to the recently added pages
+
+Wed Jan 16 03:05:50 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc (redo Statement): Added note
+ about retry.
+ * doc/syntax/exceptions.rdoc: Added retry statement
+
+Tue Jan 15 23:12:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/vpath.rb (VPath#list): default separator to PATH_SEPARATOR from
+ configure.in for make, not same name constant of File for use in ruby.
+
+Tue Jan 15 22:30:04 2013 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ext/save-history.rb: identify rightly a status of a
+ history file that already exists [Bug #7694]. Thanks Nobuhiro IMAI
+ for this patch.
+
+Tue Jan 15 15:55:28 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc: Added description of control
+ expressions in ruby.
+
+Tue Jan 15 13:33:00 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc (Method Names): Added method names including
+ operator methods.
+ * doc/syntax/methods.rdoc (Return Values): Added note that assignment
+ methods ignore return values.
+ * doc/syntax/precedence.rdoc: Added document describing precedence.
+
+Tue Jan 15 11:49:31 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc (Block Argument): Added section on block
+ argument. Thanks to Andy Lindeman.
+
+Tue Jan 15 10:54:59 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/calling_methods.rdoc (Arguments): Added improved
+ introduction to arguments including passing style and lazy
+ evaluation. Thanks to Matt Aimonetti.
+ * doc/syntax/calling_methods.rdoc (Positional Arguments): Added
+ description for sending a message to a method with *arguments
+ * doc/syntax/calling_methods.rdoc (Default Positional Arguments):
+ Added description. Thanks to Andy Lindeman.
+ * doc/syntax/calling_methods.rdoc (Block Local Arguments):
+ Added description of block locals. Thanks to Justin Collins.
+ * doc/syntax/calling_methods.rdoc (Hash to Keyword Arguments): Added
+ section describing ** operator. Thanks to Justin Collins.
+
+Tue Jan 15 10:40:18 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * test_lazy_enumerator: Test that map & flat_map also require a block
+
+Tue Jan 15 09:22:47 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (gvl_init): Reset gvl.wait_yield explicitly when
+ fork()ing. Patch by Apollon Oikonomopoulos. Thanks!
+ [Bug #7693][ruby-core:51424]
+
+Tue Jan 15 09:27:56 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/calling_methods.rdoc (Receiver): Added :: as pointed out
+ by Tony Arcieri
+ * doc/syntax/calling_methods.rdoc (Block Argument): Fixed { } block
+ examples as pointed out by David Copeland.
+
+Tue Jan 15 09:10:29 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc (Array/Hash Argument): Moved above Keyword
+ Arguments
+ * doc/syntax/methods.rdoc (Keyword Arguments): Described ** for
+ gathering arbitrary keyword arguments.
+
+Tue Jan 15 08:56:37 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/calling_methods.rdoc: Added document describing method
+ calls.
+
+Tue Jan 15 07:39:21 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/top_level.rb: Fixed extension trimming for page names in
+ RDoc HTML output. [ruby-trunk - Bug #7673]
+ * test/rdoc/test_rdoc_top_level.rb: Test for above.
+
+Mon Jan 14 23:06:41 2013 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ext/save-history.rb: outputs its history to
+ owner-only-readable file and change the permission of a file that
+ already exists [Bug #7694]. Thanks Nobuhiro IMAI for bug reports.
+
+Mon Jan 14 17:12:48 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_flat_map_func): flat_map should call each only
+ when the value of a block returns a forcable object.
+ [ruby-core:51401] [Bug #7690]
+
+ * enumerator.c (lazy_flat_map): add documentation.
+
+ * test/ruby/test_lazy_enumerator.rb: related test.
+
+Mon Jan 14 16:42:28 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Require block for Lazy#{take|drop}_while [Bug #7692]
+
+Mon Jan 14 14:41:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_s): use CRuby style.
+
+Mon Jan 14 14:39:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c: use `RB_TYPE_P(x, t)` instead of
+ `TYPE(x) == t`.
+
+Mon Jan 14 10:18:56 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Fix size for Enumerator::Lazy#flat_map
+
+Mon Jan 14 07:12:52 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix/lup_decomposition: Fix bugs with LUP Decomposition of
+ rectangular matrices. [rubyspec:ba849801a85]
+
+Mon Jan 14 06:46:53 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (add_ctype_to_cc): don't check dup warn on adding
+ negative ctype to cclass. [Bug #7471] [ruby-core:50344]
+
+Mon Jan 14 06:06:03 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix/eigenvalue_decomposition: Backport bugfix of Jama 1.0.3
+ [rubyspec:df87040be371]
+
+Sun Jan 13 16:45:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/psych/yaml/scanner.c: Fix typos, patch by James Dabbs
+ [Github tenderlove/psych#118]
+
+Sun Jan 13 15:00:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_sub):
+ need to specify precision for converting Rational and Float.
+ [ruby-dev:46544] [Bug #7404]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mult): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divide): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divremain): ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests for the above fixes.
+
+Sun Jan 13 14:48:55 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix/eigenvalue_decomposition: Fix eigensystem with complex
+ eigenvectors. Patch by pypypy567.
+ [Bug #7208] [ruby-dev:46251] [rubyspec:242f8e55bd]
+
+ * lib/matrix/lup_decomposition.rb: Fix error for rectangular matrices
+ [bug#7620] [ruby-core:51118] [rubyspec:41f833ee2]
+
+Sun Jan 13 14:06:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb.rb, lib/prime.rb: Typos in overview
+ Patch by Ershad K [Github Fixes #234]
+
+Sun Jan 13 13:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/open3.rb : Typo in Open3 overview. Patch by zed_0xff
+ [Github Fixes #233]
+
+Sat Jan 12 17:42:00 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * numeric.c (do_coerce): fix for the exceptions which the coerce
+ method raises. The optimization done by r38756 is preserved.
+ [Bug #7645] [ruby-core:51213]
+
+Sat Jan 12 16:12:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/setup.mak (-runtime-): see msvcrt from link header on mswin
+ instead of running testing executable file, for cross compiling.
+
+Sat Jan 12 08:58:47 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: merge key values that
+ contain something besides a hash should be left in tact.
+
+ * test/psych/test_merge_keys.rb: test for change
+
+Sat Jan 12 07:52:47 2013 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_set_byref): support VT_UI8|VT_BYREF,
+ VT_I8|VT_BYREF in cygwin and mingw.
+
+ * ext/win32ole/win32ole.c (ole_variant2val): ditto.
+
+ * test/win32ole/test_win32ole_variant.rb (test_s_new_with_i8_byref):
+ ditto.
+
+ * test/win32ole/test_win32ole_variant.rb (test_s_new_with_ui8_byref):
+ ditto.
+
+Sat Jan 12 02:45:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * man/ruby.1 (options): include --*-encoding from r38784
+
+Fri Jan 11 23:34:48 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ruby.c (usage): sort --*-encoding in help. (same order of -E)
+
+Fri Jan 11 16:56:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb: use configured libdir value to fix
+ --enable-load-relative on systems where libdir is not default value,
+ overridden in config.site files. [ruby-core:47267] [Bug #6903]
+
+Fri Jan 11 11:59:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (dispose_string): use rb_str_free for freeing string in
+ parse.y. by Sokolov Yura <funny.falcon@gmail.com>
+ https://github.com/ruby/ruby/pull/87 fix GH-87
+
+Fri Jan 11 09:56:22 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * insns.def (defineclass): private constants should not be accessed
+ by scoped module definitions. The bug was introduced in r38495.
+
+ * test/ruby/test_module.rb: related test.
+
+Fri Jan 11 02:11:59 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/rbconfig/obsolete.rb (respond_to_missing?): use send because
+ RbConfig.respond_to_missing? is now private.
+
+Thu Jan 10 22:00:58 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (VM_DEBUG_BP_CHECK): set 0 as default.
+ This flag specifies checking BP consistency on each frame popping.
+ Now, we don't have any trouble on it, so I remove it.
+ If you feel any bugs about VM execution, then set it to 1.
+
+Thu Jan 10 21:03:05 2013 TAKANO `takano32' Mitsuhiro <tak@no32.tk>
+
+ * cont.c: define FIBER_USE_NATIVE as 0 in ia64.
+
+Thu Jan 10 19:39:05 2013 TAKANO `takano32' Mitsuhiro <tak@no32.tk>
+
+ * thread.c: fix RB_GC_SAVE_MACHINE_REGISTER_STACK define for ia64.
+
+Thu Jan 10 17:45:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub ($(MKFILES)): continue if Makefile
+ unchanged.
+
+Thu Jan 10 16:31:20 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_super_method): raise a TypeError
+ instead of a NotImplementedError if self is not an instance of the
+ current class. [ruby-dev:39772] [Bug #2402]
+
+Thu Jan 10 16:47:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/extconf.rb (find_tcltk_header): use have_header instead of
+ try_cpp, which is incredibly slow with VC.
+
+Thu Jan 10 15:55:28 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * numeric.c (do_coerce): remove an unused variable.
+
+Thu Jan 10 15:35:55 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * tool/gen_dummy_probes.rb: remove comments in probes.d to fix the
+ compilation error introduced by r38755.
+
+Thu Jan 10 11:15:04 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * numeric.c (do_coerce): speed optimization by using rb_check_funcall
+ instead of rb_rescue + rb_funcall.
+ This fix is based on the patch by Benoit Daloze.
+ [Bug #7645] [ruby-core:51213]
+
+Thu Jan 10 11:15:04 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * probes.d: updating probes to be more symmetrical, adding
+ documentation.
+
+ * load.c: ditto
+
+Thu Jan 10 04:23:07 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: strip trailing dots from
+ floats so that Float() will not raise an exception.
+
+ * test/psych/test_numeric.rb: test to ensure "1." can be loaded
+
+ * test/psych/test_string.rb: make sure "1." can round trip
+
+Thu Jan 10 03:38:40 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ascii only binary strings
+ will be dumped as unicode. Thanks Paul Kunysch!
+
+ * test/psych/test_string.rb: appropriate test
+
+Thu Jan 10 03:29:55 2013 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_array_): modify wrong optimization.
+ A script "[print(1)]; print(2)" should output "12".
+ However, the compiler had eliminated "[print(1)]" expression
+ because it is void expression (unused array).
+ Of course, side-effect should be remained.
+ This issue is reported by Masaya Tarui.
+
+ * bootstraptest/test_literal.rb: add a test.
+
+Wed Jan 9 22:07:42 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * load.c (load_lock): if thread shield is destroyed and there is no
+ waiting thread, insert new thread shield into load_table.
+ [Bug #7530] [ruby-core:50645]
+
+Wed Jan 9 21:43:32 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * load.c (load_lock): revert r38744. it should acquire new thread
+ shield.
+
+Wed Jan 9 15:40:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (th_init, ruby_thread_init): initialize root_svar with Qnil,
+ since lep_svar_place() expects uninitialized svar to be nil, not 0.
+
+Wed Jan 9 13:20:23 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * test/ruby/test_require.rb: improve test for r38744.
+ fix to use Tempfile instead of temporary file in current directory.
+ the patch is from nobu (Nobuyoshi Nakada).
+
+Wed Jan 9 09:53:23 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * load.c (load_lock): fix not to delete thread shield twice.
+ it may break the shield locked by another thread.
+ [Bug #7530] [ruby-core:50645]
+
+ * test/ruby/test_require.rb: a test for above.
+
+Wed Jan 9 02:13:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RBasic): to be aligned on a VALUE size
+ boundary. [Bug #7647]
+
+Tue Jan 8 14:41:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_iseq_t): move flip_cnt from struct iseq_compile_data,
+ because it has same life span as enclosing iseq. [Bug #7671]
+ [ruby-core:51296]
+
+Mon Jan 7 23:43:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal):
+ add RB_GC_GUARD to prevent the intermediate object is GCed too early.
+ This patch was made by Yusuke Endoh. [Bug #7044] [ruby-core:47632]
+
+ * test/bigdecimal/test_bigdecimal.rb: add a reproduction test for
+ the issue [Bug #7044]
+
+Mon Jan 7 21:40:36 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (Init_eval_method): main.public and main.private
+ should be private.
+
+ * proc.c (Init_Proc): main.define_method should be private.
+
+ * test/ruby/test_module.rb: related test.
+
+Mon Jan 7 20:48:47 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (Init_eval): main.include should be private.
+ [ruby-core:51293] [Bug #7670]
+
+ * test/ruby/test_module.rb (test_top_include_is_private): a new test
+ for the above change.
+
+Mon Jan 7 20:29:50 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * NEWS: remove description about `require "refinement"'.
+
+Mon Jan 7 20:15:49 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (Init_eval): enable Refinements by default.
+ [ruby-core:51286] [Bug #7667]
+
+ * eval.c (rb_mod_refine, top_using): show a warning when
+ Module#refine or main.using is called at the first time.
+
+ * ext/refinement/*: removed the extension library "refinement".
+
+ * test/ruby/test_refinement.rb: fix for the above changes.
+
+Mon Jan 7 17:34:22 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h (RUBY_EVENT_SPECIFIED_LINE): make it special.
+ This flag is not contained by RUBY_EVENT_TRACEPOINT_ALL.
+ This event is experimental one. It is possible to remove/rename
+ flag name after 2.0.1.
+
+ * vm_trace.c (get_event_id): return :line if SPECIFIED_LINE was
+ occurred. `:specified_line' never been returned.
+
+Mon Jan 7 15:42:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_kwrest): allow bare kwrest_mark as valid syntax. its
+ semantics is still undefined. [Bug #7662] [ruby-core:51269]
+
+Mon Jan 7 15:31:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_kwrest): reject duplicated kwrest argument name.
+
+Mon Jan 7 15:24:10 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks_orig): pop tag before
+ JUMP_TAG() if frame is `finish' frame.
+ Without this patch, there is an inconsistency between control
+ frame stack and tags stack.
+ [Bug #7668]
+
+ * test/ruby/test_settracefunc.rb: add a test for above.
+
+Mon Jan 7 15:21:48 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * Makefile.in, common.mk (fake, yes-fake, no-make): these dependencies
+ are not platform dependent.
+
+ * win32/Makefile.sub ($(arch)-fake.rb): workaround.
+
+Mon Jan 7 12:09:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_callee_setup_arg_complex, vm_yield_setup_block_args):
+ set keyrest hash after making rest array, so that the last element
+ will not be overwritten. [ruby-core:51278] [Bug #7665]
+
+Mon Jan 7 09:37:24 2013 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: add a NEWS entry about RubyVM.
+
+Sun Jan 6 19:06:57 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * win32/Makefile.sub: Fix build with VC.
+ Patch by Charlie Savage. Fixes [ruby-core:51261]
+
+Sun Jan 6 18:43:48 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * bootstraptest/test_io.rb: add a test for [ruby-dev:46834].
+
+ * io.c (rb_cloexec_fcntl_dupfd) Use an emulation with dup(2) when
+ fcntl(2) and/or F_DUPFD is unavailable.
+ Suggested by akr.
+
+ * configure.in (HAVE_FCNTL): NativeClient does not provide fcntl(2).
+
+Sun Jan 6 11:11:26 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/modules_and_classes.rdoc: Fixed typo.
+
+Sun Jan 6 05:35:18 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/modules_and_classes.rdoc: Added singleton classes
+ documentation.
+
+Sun Jan 6 02:22:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/webrick/httpservlet/abstract.rb (WEBrick::HTTPServlet): Typo in
+ example. Patch by shlensky [Fixes #232 on github]
+
+Sat Jan 5 21:15:10 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http/generic_request.rb:
+ Amazon ECA API and GTE/1.3 disallow requests whose host has port
+ number if its port number equals to default port number of the
+ scheme. [Bug #7650]
+
+Sat Jan 5 13:58:59 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/modules_and_classes.rdoc: Improved description of methods
+ on a module or class as suggested by Tobias Buhlmann
+
+Sat Jan 5 13:38:07 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_enumerate_lines): fix invalid byte sequence error
+ when a separator is passed. The patch is from yoshidam (Yoshida
+ Masato).
+ [Bug #7646] [ruby-dev:46827]
+
+ * test/ruby/test_string.rb: a test for above.
+
+Sat Jan 5 12:25:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err):
+ check stdout and stderr both.
+
+Sat Jan 5 10:21:54 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/modules_and_classes.rdoc: Added documentation of syntax
+ for Modules and Classes.
+ * doc/syntax/methods.rdoc: Moved some text to the Modules and
+ Classes syntax document.
+
+Sat Jan 5 08:38:27 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Added return values and scope sections,
+ slightly modified from the original patch. Fixes #227 from github by
+ Dave Brown.
+
+Sat Jan 5 08:21:41 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_cloexec_fcntl_dupfd): improve #ifdef condition.
+ * io.c (rb_maygvl_fd_fix_cloexec): ditto.
+
+Sat Jan 5 07:54:59 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/cleanup_command.rb: Clean all possible gems
+ using multiple passes. Fixes RubyGems bug #422. Refactored for
+ maintainability.
+ * test/rubygems/test_gem_commands_cleanup_command.rb: Test for above.
+
+Sat Jan 5 05:04:39 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * gc.c (vm_xrealloc): add a few comment why we avoid realloc(ptr,0).
+
+Fri Jan 4 20:17:06 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * Makefile.in (RBCONFIG): Moved from common.mk in order to use the
+ variable in Makefile.in.
+
+ * win32/Makefile.sub (RBCONFIG): Ditto.
+
+Fri Jan 4 19:45:50 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * common.mk (run, parse): Use BTESTRUBY instead of MINIRUBY to handle
+ cross-compiling cases, e.g. NativeClient.
+
+Fri Jan 4 17:58:16 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * common.mk (yes-btest): btest depends on also $(arch)-fake.rb and
+ rbconfig.rb on building for NativeClient.
+
+ * Makefile.in (fake): Avoid generating $(arch)-fake.rb unless cross
+ compiling.
+
+ * configure.in (CROSS_COMPILING): New substitution.
+
+Fri Jan 4 16:26:45 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/doctor.rb: Process directories in order in case the
+ filesystem doesn't. [ruby-trunk - Bug #7618]
+
+ Process specifications before other directories in case of bugs.
+ * test/rubygems/test_gem_doctor.rb: Test for above.
+
+ * lib/rubygems.rb: Updated version.
+
+ * test/rubygems/test_require.rb: Fixed double require of
+ benchmark.rb. RubyGems bug #420.
+
+ * test/rubygems/test_gem_commands_check_command.rb: Fixed unused
+ variable warnings.
+ * test/rubygems/test_gem_commands_query_command.rb: ditto
+ * test/rubygems/test_gem_installer.rb: ditto
+
+Fri Jan 4 15:05:25 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/cross_reference.rb: Fixed matching of C#=== or #===. RDoc
+ bug #164
+ * test/rdoc/test_rdoc_cross_reference.rb: Test for above.
+
+ * lib/rdoc/parser/changelog.rb: Fixed parsing of dates. RDoc bug #165
+ * test/rdoc/test_rdoc_parser_changelog.rb: Test for above.
+
+ * lib/rdoc/parser.rb: Fixed parsing multibyte files with incomplete
+ characters at byte 1024. [ruby-trunk - Bug #6393]
+ Fixed handling of -E. [ruby-trunk - Bug #6392]
+ * test/rdoc/test_rdoc_options.rb: Test for above.
+ * test/rdoc/test_rdoc_parser.rb: ditto.
+ * test/rdoc/test_rdoc_parser_c.rb: ditto.
+ * test/rdoc/test_rdoc_parser_changelog.rb: ditto.
+ * test/rdoc/test_rdoc_parser_markdown.rb: ditto.
+ * test/rdoc/test_rdoc_parser_rd.rb: ditto.
+ * test/rdoc/test_rdoc_rdoc.rb: ditto.
+
+ * lib/rdoc/tom_doc.rb: Fixed parsing of [] in TomDoc arguments list.
+ RDoc bug #167
+ * test/rdoc/test_rdoc_tom_doc.rb: Test for above.
+
+ * lib/rdoc.rb: Update version.
+
+Fri Jan 4 11:51:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/forwardable.rb: Fix rdoc parameters for ::def_single_delegator.
+ Patch by Vladimir Andrijevik [Github Fixes #230]
+
+Fri Jan 4 00:35:11 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ Fix failures on btest for NativeClient.
+ * bootstraptest/runner.rb (nacl?): New method to distinguish NaCl
+ cross build.
+
+ * bootstraptest/test_io.rb: Skip unsupported operations.
+
+ * bootstraptest/test_literal.rb: ditto.
+
+Fri Jan 4 00:29:40 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * io.c (rb_cloexec_fcntl_dupfd): Fix failures in
+ bootstrap_test/test_io.rb. NativeClient does not support F_DUPFD
+ but supports dup2(2).
+
+Thu Jan 3 17:46:50 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/element.rb (REXML::Elements#add): Remove too much
+ "elements" in document. Sorry...
+
+Thu Jan 3 17:42:32 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/element.rb (REXML::Elements#each): Add missing
+ "elements" in document. [ruby-talk:402713]
+ Reported by Wesley Rishel. Thanks!!!
+
+Thu Jan 3 15:13:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/psych/lib/psych.rb (Psych.load): Return value of
+ Psych::SyntaxError.message should be same as example.
+ Patch by Ippei Obayashi [ruby-core:51193] [Bug #7636]
+
+Thu Jan 3 14:58:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/forwardable.rb (SingleForwardable): Fix example in overview
+ Patch by Vladimir Andrijevik [Github Fixes #231]
+
+Thu Jan 3 14:32:47 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * configure.in (OBJCOPY): Fixes build error for NativeClient.
+ Avoid disabling OBJCOPY for NativeClient.
+
+ * thread_pthread.c (rb_reserved_fd_p): USE_SLEEPY_TIMER_THREAD is
+ always defined. Fixes compilation error for NativeClient.
+
+Wed Jan 02 03:09:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/zlib/zlib.c (Zlib::GzipReader): Fix typo by zed_0xff
+ [Fixes Github #229]
+
+Wed Jan 02 02:29:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * hash.c (rb_hash_update): Revert documentation from r38672
+ See: https://github.com/ruby/ruby/pull/228#issuecomment-11791013
+
+Wed Jan 02 02:16:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * hash.c (rb_hash_update): Documentation for Hash#merge and shallow
+ copies Patch by Yorick Peterse [Fixes Github #228]
+
+Mon Dec 31 15:10:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_backtrace.c: Add documentation for Kernel#caller_locations,
+ Kernel#caller, and Thread::Backtrace::Location
+
+Mon Dec 31 13:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * test/ruby/test_backtrace.rb: Add test for r37957 [Feature #7434]
+
+Sun Dec 30 23:33:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (simple_re_meta): escaped closing parenthesis has different
+ meaning. [Bug #7610] [ruby-core:51088]
+
+Sun Dec 30 12:09:47 2012 Charlie Somerville <charlie@charliesomerville.com>
+
+ * configure.in: use 4 argument form of AC_CHECK_HEADERS to force
+ autoconf to use compiler's result
+
+Sun Dec 30 10:58:04 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/ruby/test_keyword.rb: add a test for passing hash
+ as a last argument. [ruby-dev:46712] [Bug #7529]
+
+Sun Dec 30 10:51:29 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_insnhelper.c: set keyword hash on Proc/block calls.
+ [ruby-core:51172] [Bug #7630]
+
+ * test/ruby/test_keyword.rb: add tests for above.
+
+Sat Dec 29 21:57:11 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/completion.rb: treat rightly completion for symbol on irb
+ [Bug #7632].
+
+Sat Dec 29 21:51:30 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/curses.c (window_cury, window_curx, window_maxy,
+ window_maxx, window_begy, window_begx): use RB_UNUSED_VAR()
+ to suppress unused-but-set-variable warnings.
+
+Sat Dec 29 16:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * iseq.c (RubyVM::InstructionSequence): rdoc formatting
+
+Sat Dec 29 15:28:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * iseq.c (RubyVM::InstructionSequence): Add rdoc for new iseq features
+ added from r38085, this includes ::of, #path, #absolute_path,
+ #label, #base_label, #first_lineno, and #inspect
+
+Sat Dec 29 14:06:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * iseq.c (rb_iseq_line_trace_all, rb_iseq_line_trace_specify): Add
+ rdoc for experimental C level api of iseq, from r38076
+
+Sat Dec 29 11:37:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_obj_clone): attach clone to its singleton class during
+ cloning singleton class so that singleton_method_added will be called
+ on it. based on the patch by shiba (satoshi shiba)[Bug #5283] in
+ [ruby-dev:44477]. [Bug #5283]
+
+Sat Dec 29 10:10:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (crt_externs.h): use standard macro AC_CHECK_HEADERS.
+
+Fri Dec 28 23:12:44 2012 Charlie Somerville <charlie@charliesomerville.com>
+
+ * configure.in: check for the whether crt_externs.h is present when compiling
+ for darwin (this header is missing in the iOS SDK)
+ * eval_intern.h: check HAVE_CRT_EXTERNS_H before including crt_externs.h, if
+ not defined, include missing/crt_externs.h instead
+ * hash.c: ditto
+ * missing/setproctitle.c: ditto
+ * missing/crt_externs.h: declare _NSGetEnviron() function and define environ
+ for iOS
+
+Fri Dec 28 21:40:36 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/context.rb: IRB::Context#new: Check from JobManager
+ inside IRB namespace [Bug #7628]. Thanks rafaelfranca for bug
+ report and its patch.
+
+Fri Dec 28 17:06:17 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el (ruby-electric-curlies): Automatically
+ indent closing curly brackets when
+ ruby-electric-newline-before-closing-bracket is true.
+
+Fri Dec 28 11:50:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): pass single argument to
+ single optional parameter unchanged without splatting. [Bug #7621]
+ [ruby-dev:46801]
+
+Fri Dec 28 11:17:47 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * proc.c (method_eq): fix the documentation to refer to owner.
+ [ruby-core:51105] [Bug #7613]
+
+ * test/ruby/test_method.rb (test_alias_onwer): new test to confirm
+ that `a == b' returns false if owners of a and b are different.
+
+Fri Dec 28 07:07:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * def/id.def: use split(/^/) instead of String#lines to support
+ Ruby 1.8.5 as BASERUBY.
+
+Thu Dec 27 21:56:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * variable.c (rb_mod_remove_const): fix segv caused by r38558.
+
+Tue Dec 28 01:13:48 2012 James Edward Gray II <james@graysoftinc.com>
+
+ * lib/csv.rb: Added more Hash methods to CSV::Row.
+
+Thu Dec 27 23:27:15 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: make lex_state to EXPR_END when next token
+ is an operator after SYMBEG [Bug #6378].
+
+Thu Dec 27 21:30:21 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: allow to handle recursive heredocs on
+ irb[Bug #5648].
+
+Thu Dec 27 20:45:29 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * ext/stringio/stringio.c (strio_getline): fix not to raise TypeError
+ when limit is nil.
+ [Bug #7232] [ruby-core:48531]
+
+ * test/stringio/test_stringio.rb: a test for above.
+
+Thu Dec 27 21:08:23 2012 Charlie Somerville <charlie@charliesomerville.com>
+
+ * vm_core.h (VM_DEFINECLASS_TYPE): explicit cast to enum type to avoid 64->32
+ shorten warning
+
+Thu Dec 27 20:11:29 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * ext/stringio/stringio.c (strio_ungetc): raise IOError instead of RuntimeError
+ if the string is frozen.
+ [Bug #7231] [ruby-core:48530]
+
+ * ext/stringio/stringio.c (strio_ungetbyte): ditto.
+
+ * test/stringio/test_stringio.rb: a test for above.
+
+Wed Dec 26 23:55:18 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/context.rb: fix IRB::Inspector#keys_with_inspector [Bug #7598]
+
+Wed Dec 26 23:26:15 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/context.rb: IRB::Context#use_readline= has been obsolete
+ [Bug #6339].
+
+Wed Dec 26 21:32:46 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/context.rb: make a correct prompt from
+ IRB.conf[:IRB_NAME] on irb [Bug #6338]. Patched by sho-h.
+
+Wed Dec 26 21:09:19 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ext/math-mode.rb: make not able to change math-mode
+ after irb starting [Bug #6302]. Patched by sho-h.
+
+Wed Dec 26 12:52:36 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/init.rb: change default debug level for
+ irb[ruby-dev:46805], [Bug #6301].
+
+Wed Dec 26 11:54:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: enable -fPIE when checking -pie for fixing
+ OpenBSD build error. Patch by George Koehler. Thank you!
+ [Bug #7606] [ruby-core:51082]
+
+Wed Dec 26 07:31:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_copy_for_substr): empty string is always
+ valid or 7bit.
+
+ * string.c (rb_str_enumerate_lines, rb_str_chop): reduce duplicated
+ code.
+
+ * string.c (rb_str_enumerate_chars): prevent shared copy from GC.
+
+Wed Dec 26 01:31:16 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/init.rb, lib/irb/context.rb: fix conf.debug_level=
+ [Bug #6301] and fix irb command option: -- irb_debug_level for irb.
+
+Wed Dec 26 00:59:18 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: improve RubyLex performance for large files
+ [Bug #5202]. Patch by ryanmelt.
+
+Tue Dec 25 22:21:06 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/output-method.rb: raise right exception when
+ IRB::OutputMethod#print don't defined [Bug #6657].
+
+Tue Dec 25 22:06:33 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks_and_pop_frame):
+ pop a frame before JUMP_TAG() if exception occurred.
+ This change fix bug of Ruby 1.9.
+ [ruby-core:51128] [ruby-trunk - Bug #7624]
+
+ * vm_core.h (EXEC_EVENT_HOOK_AND_POP_FRAME): add to use
+ `rb_threadptr_exec_event_hooks_and_pop_frame()'.
+
+ * vm.c (vm_exec): use EXEC_EVENT_HOOK_AND_POP_FRAME() while
+ exception handling. While exception handling, if an exception
+ is raised in hooks, need to pop current frame and raise this
+ raised exception by hook.
+
+ * test/ruby/test_settracefunc.rb: add a test.
+
+Tue Dec 25 21:08:53 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/init.rb, lib/irb/lc/ja/error.rb, lib/irb/lc/error.rb:
+ raise exception when illegal RC_NAME_GENERATOR defined [Bug #6455].
+
+Tue Dec 25 19:22:17 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/workspace.rb: define method to private on top-level irb
+ [Bug #5776]. Patch by davidbalbert.
+
+Tue Dec 25 19:09:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c, include/ruby/intern.h (rb_big_eql): exported.
+
+ * thread.c (recursive_check): object_id maybe a Bignum, not Fixnum on
+ LLP64. see also r38493 and r38548.
+ reported by Heesob Park at [ruby-core:51083] [Bug #7607], and patched
+ by shirosaki at [ruby-core:51095]
+
+Tue Dec 25 18:53:35 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, eval_intern.h (CHECK_STACK_OVERFLOW): move
+ CHECK_STACK_OVERFLOW() to vm_core.h and rename to
+ CHECK_VM_STACK_OVERFLOW().
+ This change is only move and rename.
+
+ * tool/instruction.rb: catch up above changes.
+
+ * vm.c, vm_insnhelper.c: ditto.
+
+ * vm_insnhelper.c (vm_stackoverflow): add a function to unify
+ raising vm stackoverflow exception.
+
+Tue Dec 25 16:16:54 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (RUBY_VM_THREAD_VM_STACK_SIZE): change default
+ VM stack size (128 KB or 256 KB -> 512 KB or 1024 KB).
+ This re-sizing corrects smaller value introduced at r38478.
+ Newer value is same VM stack size of Ruby 1.9.
+ [ruby-dev:46797] [ruby-trunk - Bug #7603]
+
+Tue Dec 25 13:38:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (compile_err_append, compile_warn_print, warn_print): use
+ rb_write_error_str() instead of writing to rb_stderr directly.
+
+ * io.c (rb_write_error_str): a stopgap measure not to unblock GVL.
+ warning from require seems to still have race condition errors.
+
+Tue Dec 25 00:59:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (NODE_OP_CDECL), compile.c (iseq_compile_each),
+ parse.y (stmt, arg): allow scoped constant op-assignment.
+ [ruby-core:40154] [Bug #5449]
+
+Mon Dec 24 04:56:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http/generic_request.rb (Net::HTTPGenericRequest):
+ set content-length to zero on empty post requests
+ by Gregory Ostermayr <gregory.ostermayr@gmail.com>
+ https://github.com/ruby/ruby/pull/201 fix GH-201
+
+Sun Dec 23 19:09:16 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: rename methods:
+ from Thread.async_interrupt_timing to Thread.handle_interrupt,
+ from Thread.async_interrupted? to Thread.pending_interrupt?.
+ Also rename option from `defer' to `never'.
+ [ruby-core:51074] [ruby-trunk - Feature #6762]
+
+ * vm_core.c, thread.c: rename functions and data structure
+ `async_errinfo' to `pending_interrupt'.
+
+ * thread.c: add global variables sym_immediate, sym_on_blocking and
+ sym_never.
+
+ * cont.c, process.c, vm.c, signal.c: ditto.
+
+ * lib/sync.rb, lib/thread.rb: catch up this renaming.
+
+ * test/ruby/test_thread.rb: ditto.
+
+Sun Dec 23 17:57:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/profiler.rb (Profiler__::PROFILE_PROC, print_profile): store
+ profile data per threads for concurrent-execution.
+ [ruby-core:22046] [Bug #1152]
+
+ * lib/profiler.rb (Profiler__::Wrapper): support calling singleton
+ methods of an instance of BasicObject.
+
+ * lib/profiler.rb (Profiler__::PROFILE_PROC): use TracePoint.
+
+Sun Dec 23 16:13:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/erb.rb: typos for ERB::new link
+
+Sun Dec 23 16:06:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/erb.rb: Document ERB::new trim_mode '-' for lines ending in -%>
+ [ruby-core:51084] [Bug #7608]
+
+Sun Dec 23 15:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb/ruby-lex.rb: Add handling for %i and %I quoting to irb
+ Patch by flori [ruby-core:49550] [Bug #7392] [Github Issue #157]
+
+Sun Dec 23 15:05:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_check_funcall_with_hook): rb_check_funcall with hook
+ which is called before calling method_missing or target method.
+
+ * marshal.c (w_object, r_object0): use rb_check_funcall_with_hook
+ instead of respond_to? and call.
+
+Sun Dec 23 14:52:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * re.c (rb_reg_eqq): doc: #=== is not a synonym for #=~, added example
+ [ruby-dev:46746] [Bug #7571]
+
+Sun Dec 23 14:35:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (BLOCKING_REGION): if fail_if_interrupted is false ignore
+ the result of blocking_region_begin(), since it always is true in
+ that case. suppress "uninitialized" warnings.
+
+Sun Dec 23 09:34:07 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/check_command.rb: Added --doctor and --dry-run
+ options to clean up after failed uninstallation.
+ * test/rubygems/test_gem_commands_check_command.rb: Test for above.
+
+ * lib/rubygems/commands/push_command.rb: Allow pushes from RubyGems
+ 2.0.0.preview3
+
+ * lib/rubygems/commands/update_command.rb: Use Gem.ruby_version
+
+ * lib/rubygems/dependency.rb: Update style.
+
+ * lib/rubygems/installer.rb: Ensure installed gem specifications will
+ be useable. Refactor.
+ * test/rubygems/test_gem_installer.rb: ditto.
+
+ * lib/rubygems/validator.rb: Fixed bug with unreadable files.
+
+ * lib/rubygems.rb: Fixed broken methods.
+ * test/rubygems/test_gem.rb: Test for above.
+
+ * test/rubygems/test_gem_commands_push_command.rb: Fixed overridden
+ Gem.latest_rubygems_version
+
+Sun Dec 23 01:52:01 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * io.c (rb_io_lines, rb_io_bytes, rb_io_chars, rb_io_codepoints):
+ Deprecate IO#{lines,bytes,chars,codepoints} and those of ARGF.
+ [Feature #6670]
+
+ * ext/stringio/stringio.c (strio_lines, strio_bytes, strio_chars)
+ (strio_codepoints): Deprecate
+ StringIO#{lines,bytes,chars,codepoints}. [Feature #6670]
+
+ * ext/zlib/zlib.c (rb_gzreader_lines, rb_gzreader_bytes):
+ Deprecate Zlib::GzipReader#{lines,bytes}. [Feature #6670]
+
+Sat Dec 23 01:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/optparse.rb: Documentation for OptionParser to remove 'shadowed
+ outer local variable' from example and make obvious ARGV with
+ non-option arguments.
+ Patch by Marcus Stollsteimer [ruby-core:47460] [Bug #6997]
+
+Sat Dec 23 00:08:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * include/ruby/intern.h: add the prototype declaration of
+ rb_num_coerce_bit.
+
+ * numeric.c (rb_num_coerce_bit): the new coerce function for bitwise
+ binary operation.
+
+ * bignum.c (rb_big_and): use coerce to convert the argument, which isn't
+ a Fixnum nor a Bignum, to the corresponding Integer object so that
+ bitwise operations can support Integer-mimic objects.
+ [Bug #1792] [ruby-core:39491]
+
+ * bignum.c (rb_big_or): ditto.
+
+ * bignum.c (rb_big_xor): ditto.
+
+ * numeric.c (bit_coerce): ditto.
+
+ * numeric.c (fix_and): ditto.
+
+ * numeric.c (fix_or): ditto.
+
+ * numeric.c (fix_xor): ditto.
+
+ * test/ruby/test_integer.rb: add tests for the above changes.
+
+ * test/ruby/test_bignum.rb: ditto.
+
+Sun Dec 23 00:04:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (QUOTE, QUOTE_ID): quote unprintable chars in strings and
+ IDs. [Bug #7574] [ruby-dev:46749]
+
+ * string.c (rb_str_quote_unprintable): ditto.
+
+Sat Dec 22 23:59:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_compile_error, rb_compile_warn, rb_compile_warning),
+ (rb_warn, rb_warning): support PRIsVALUE.
+
+Sat Dec 22 22:04:58 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * cont.c (rb_fiber_start): unify conditions.
+
+Sat Dec 22 21:47:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_wait_writable): use rb_thread_check_ints() instead
+ of rb_thread_fd_writable().
+ * io.c (rb_io_wait_readable): ditto.
+
+Sat Dec 22 20:31:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_get): symbol cannot be nested constant name.
+
+Sat Dec 22 19:26:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_get): check more strictly. [ruby-dev:46748]
+ [Bug #7573]
+
+Wed Dec 19 02:34:48 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * cont.c (rb_fiber_start): in case of jump with TAG_FATAL,
+ enqueue error into async_errinfo_queue, because you cannot call
+ TH_TAG_JUMP() in this function. [ruby-dev:45218] [Bug #5993]
+
+ * thread.c (rb_threadptr_execute_interrupts): now INT2FIX(TAG_FATAL)
+ can be popped from async_errinfo_queue.
+
+ * vm.c (rb_vm_make_jump_tag_but_local_jump): revert r38441.
+ rb_vm_make_jump_tag_but_local_jump() shouldn't return exception
+ in case of state == TAG_FATAL.
+
+ * test/ruby/test_fiber.rb (test_exit_in_fiber): fix a test to illuminate
+ Thread.exit should terminate current Thread.
+
+Sat Dec 22 13:15:08 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * gc.c (obj_id_to_ref): add a macro to treat Bignum object id.
+ This follows the change r38493.
+
+ * gc.c (id2ref): fix for working fine with Bignum object id on x64
+ Windows.
+ * gc.c (wmap_finalize): ditto.
+
+Sat Dec 22 11:30:21 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * struct.c (make_struct): remove junk ID check to allow members who
+ have junk name like "foo\000".
+ * test/ruby/test_struct.rb: Test for above.
+ [Bug #7575] [ruby-dev:46750]
+
+Sat Dec 22 05:34:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Requests may be created with a URI which sets the
+ Host header. Responses contain the requested URI for easier redirect
+ following. [ruby-trunk - Feature #6482]
+ * lib/net/http/generic_request.rb: ditto.
+ * lib/net/http/response.rb: ditto.
+ * NEWS (net/http): Updated for above.
+ * test/net/http/test_http.rb: Tests for above.
+ * test/net/http/test_http.rb: ditto.
+ * test/net/http/test_httpresponse.rb: ditto.
+
+Sat Dec 22 02:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb/slex.rb(#match): Typo, should be D_DETAIL
+ [ruby-core:51071] [Bug#7600]
+
+Sat Dec 22 02:29:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb/input-method.rb, lib/irb.rb: Typo in
+ InputMethod#readable_atfer_eof? to #readable_after_eof?
+ [ruby-core:51069] [Bug #7599]
+
+Sat Dec 22 02:19:38 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_dump.c (rb_vm_bugreport): revert r38533.
+ * addr2line.c (fill_lines): add ELF sanity check.
+ [Bug #7597] [ruby-dev:46786]
+
+Sat Dec 22 02:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb/inspector.rb, lib/irb/context.rb: Move IRB::INSPECTORS and
+ class methods to IRB::Inspector [ruby-core:51067][Bug #7598]
+
+Sat Dec 22 00:28:46 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * object.c (rb_obj_hash): shouldn't assume object_id can be long.
+ based on a patch by Heesob Park at [ruby-core:51060].
+ cf. [Backport #7454]
+
+Fri Dec 21 23:15:25 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * ext/fiddle/lib/fiddle/struct.rb (Fiddle::CStructEntity#set_ctypes):
+ CPtr -> Pointer.
+ * test/fiddle/test_c_struct_entry.rb
+ (Fiddle::TestCStructEntity#test_aref_pointer):
+ Added the test for the above.
+
+Fri Dec 21 23:12:05 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * ext/fiddle/lib/fiddle/struct.rb (Fiddle::CStructEntity#set_ctypes):
+ CPtr -> Pointer.
+ * test/fiddle/test_c_struct_entry.rb
+ (Fiddle::TestCStructEntity#test_aref_pointer_array):
+ Added the test for the above.
+
+Fri Dec 21 22:43:36 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * ext/fiddle/lib/fiddle/import.rb (Fiddle::Importer#sizeof):
+ CPtr -> Pointer.
+ * test/fiddle/test_import.rb (Fiddle::TestImport#test_sizeof):
+ Added the test for the above.
+
+Fri Dec 21 22:34:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_iseq.rb: disable a test which checks features
+ removed at r38532.
+
+Fri Dec 21 22:02:00 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{dir.h,win32.c} (rb_w32_readdir): removed old rb_w32_readdir()
+ and renamed from rb_w32_readdir_with_enc().
+ [ruby-core:24864] [Feature #1927]
+
+ * dir.c (READDIR): follow above change.
+
+Fri Dec 21 21:12:54 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): commentout addr2line call temporarily
+ in order to avoid segv. anyone can fix addr2line?
+ [Bug #7597] [ruby-dev:46786]
+
+Fri Dec 21 20:38:28 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (Init_ISeq): remove definition of the following methods:
+ ISeq#line_trace_all and ISeq#line_trace_specify because they are
+ half baked.
+ C APIs are remained as experimental. These functions will be
+ renamed, removed their parameters may be changed.
+ You can use these methods by C exts. Please give us your comments.
+
+Fri Dec 21 20:21:04 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (tracepoint_new): add code to support specified thread.
+ But not tested and this feature is not supported officially.
+
+Fri Dec 21 19:37:15 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (process_options): need to acquire env from TOPLEVEL_BINDING
+ each time.
+ `bind->env' may update after `eval()'.
+ [Bug #7536]
+
+Fri Dec 21 18:46:50 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h, vm_core.h: define rb_trace_arg_t at
+ include/ruby/debug.h (move from vm_core.h).
+
+Fri Dec 21 17:48:15 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, vm_trace.c: fix multi-threading bug for tracing.
+ Move `trace_arg' from rb_tp_t::trace_arg to rb_thread_t::trace_arg.
+ `trace_arg' may changed by multiple threads.
+ rb_thread_t::trace_arg can represent rb_thread_t::trace_running
+ (null or non-null) and rb_thread_t::trace_running is removed.
+ After that, `rb_tp_t' is not needed to check tracing or not
+ (A running thread knows tracing or not). This is why I remove
+ tp_attr_check_active() and make new function get_trace_arg().
+
+ And this modification disable to work the following code:
+ TracePoint.trace{|tp|
+ Thread.new{p tp.event} # access `tp' from other threads.
+ }
+ I believe nobody mix threads at trace procedure.
+ This is current limitation.
+ [Bug #7590]
+
+ * cont.c (fiber_switch, rb_cont_call): use rb_thread_t::trace_arg
+ instead of rb_thread_t::trace_running.
+
+ * test/ruby/test_settracefunc.rb: add a multi-threading test.
+
+Fri Dec 21 16:38:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl (ID2ATTRSET): compile time constant macro for
+ ID_ATTRSET.
+
+ * defs/id.def (KeywordError): check duplication.
+
+ * defs/id.def: support for other scope IDs,
+ ID_{INSTANCE,GLOBAL,CONST,CLASS}.
+
+Fri Dec 21 14:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb.rb, lib/irb/*: Documentation for IRB
+
+Fri Dec 21 11:31:02 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake/*: Updated to rake 0.9.6
+ * doc/rake/*: ditto
+ * test/rake/*: ditto
+
+Fri Dec 21 08:56:34 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_trace.c (rb_suppress_tracing): remove unused variable 'vm_tracing'
+
+Fri Dec 21 01:01:45 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * lib/irb/completion.rb (CompletionProc): support completion of
+ instance variables. [ruby-dev:46710] [Bug #7520]
+
+Thu Dec 20 20:58:25 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_trace.c (rb_suppress_tracing): bugfix for vm->trace_running
+ counter. And if tracing is already true, vm_trace_running ops is
+ skipped to control overflow.
+
+Thu Dec 20 18:29:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RTEST, NIL_P): make bare expressions without
+ outermost parentheses.
+
+Thu Dec 20 17:29:00 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * NEWS: fix the description for Refinements.
+
+Thu Dec 20 16:53:59 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_core.h (rb_vm_defineclass_type_t),
+ compile.c (iseq_compile_each), insns.def (defineclass): change the
+ meaning of the third operand of defineclass as follows:
+ lower 3bits: the type of the defineclass
+ 0 = class, 1 = singleton class, 2 = module
+ 4th bit: a flag represents whether the defineclass is scoped
+ 0 = not scoped (e.g., class Foo)
+ 1 = scoped (e.g., class Bar::Baz)
+ 5th bit: a flag represents whether the superclass is specified
+ 0 = not specified (e.g., class Foo)
+ 1 = specified (e.g., class Bar < Foo)
+ If the superclass is specified and is not a class, a TypeError
+ should be raised. [ruby-dev:46747] [Bug #7572]
+
+ * test/ruby/test_class.rb: related test.
+
+Thu Dec 20 16:52:37 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: announce AEAD encryption support in the OpenSSL extension.
+
+Thu Dec 20 16:40:13 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (nonspecial_obj_id): VALUE is not compatible with Fixnum on
+ LLP64 platform, such as 64bit Windows.
+ reported by Heesob Park at [ruby-core:50255] [Bug #7454], and the
+ fix is suggested by akr.
+
+Thu Dec 20 16:39:04 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/ossl_cipher.c: fix errors for installations that do not
+ feature Authenticated Encryption.
+ * ext/openssl/extconf.rb: detect presence of EVP_CTRL_GCM_GET_TAG to
+ determine whether Authenticated Encryption can be used.
+ [Feature #6980] [ruby-core:47426]
+
+Thu Dec 20 15:55:46 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/ossl.c: do not use FIPS_mode_set if not available.
+ * test/openssl/utils.rb: revise comment about setting FIPS mode to
+ false.
+ * test/openssl/test_fips.rb: remove tests that cause errors on
+ ruby-ci.
+ [Feature #6946] [ruby-core:47345]
+
+Thu Dec 20 15:22:59 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser/ruby.rb: Ignore methods defined on constants to
+ prevent modules with the names of constants from appearing in the
+ documentation.
+ * test/rdoc/test_rdoc_parser_ruby.rb: Test for the above.
+
+Thu Dec 20 15:00:33 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/ossl_cipher.c: add support for Authenticated Encryption
+ with Associated Data (AEAD) for OpenSSL versions that support the
+ GCM encryption mode. It's the only mode supported for now by OpenSSL
+ itself. Add Cipher#authenticated? to detect whether a chosen mode
+ does support Authenticated Encryption.
+ * test/openssl/test_cipher.rb: add tests for Authenticated Encryption.
+ [Feature #6980] [ruby-core:47426] Thank you, Stephen Touset for
+ providing a patch!
+
+Thu Dec 20 12:56:53 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/to_html.rb (class RDoc): Added current heading and
+ top links to headings.
+ * lib/rdoc/generator/template/darkfish/rdoc.css: ditto
+ * test/rdoc/test_rdoc_generator_markup.rb: Test for above
+ * test/rdoc/test_rdoc_markup_to_html.rb: ditto
+
+ * test/rdoc/test_rdoc_comment.rb: Removed trailing whitespace.
+
+Thu Dec 20 11:05:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_valid_syntax): move from
+ test_syntax.rb.
+
+ * test/ruby/envutil.rb (assert_normal_exit): validate syntax before
+ running because this assertion passes even if the code fails by
+ SyntaxError.
+
+Thu Dec 20 10:29:58 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_dh.rb: revert special treatment of
+ FIPS-capable installations since FIPS mode is now disabled for the
+ tests.
+
+Thu Dec 20 10:23:12 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/ossl.c: add OpenSSL.fips_mode= to allow enabling FIPS
+ mode manually.
+ * test/openssl/utils.rb: turn off FIPS mode for tests. This prevents
+ OpenSSL installations with FIPS mode enabled by default from raising
+ FIPS-related errors during the tests.
+ * test/openssl/test_fips.rb: add tests for FIPS-capable OpenSSL
+ installations.
+ [Feature #6946] [ruby-core:47345]
+
+Thu Dec 20 06:59:52 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: support variable VM/Machine stack sizes.
+ Specified by the following environment variables:
+ - RUBY_THREAD_VM_STACK_SIZE: vm stack size used at thread creation.
+ default: 128KB (32bit CPU) or 256KB (64bit CPU).
+ - RUBY_THREAD_MACHINE_STACK_SIZE: machine stack size used at thread
+ creation. default: 512KB or 1024KB.
+ - RUBY_FIBER_VM_STACK_SIZE: vm stack size used at fiber creation.
+ default: 64KB or 128KB.
+ - RUBY_FIBER_MACHINE_STACK_SIZE: machine stack size used at fiber
+ creation. default: 256KB or 256KB.
+ This values are specified at launched timing. You can not change
+ these values at running time.
+ Environ variables are only *hints* because:
+ - They are aligned to 4KB.
+ - They have minimum values (depend on OSs).
+ - Machine stack settings are ignored by some OSs.
+ Default values especially fiber stack sizes are increased.
+ This change affect Fiber's behavior:
+ (1) You can run more complex program on a Fiber.
+ (2) You can not make many (thousands) Fibers because of
+ lack of address space (on 32bit CPU).
+ If (2) bothers you,
+ (a) Use 64bit CPU with big memory, or
+ (b) Specify RUBY_FIBER_(VM|MACHINE)_STACK_SIZE correctly.
+ You need to choose correct stack size carefully. These values
+ are completely rely on systems (OS/compiler and so on).
+ [Feature #4614], [Bug #7212]
+
+ * vm_core.h (rb_vm_t::default_params): add to record above settings.
+
+ * vm.c (RubyVM::DEFAULT_PARAMS): add new constant to see
+ above setting.
+
+ * thread_pthread.c: support RUBY_THREAD_MACHINE_STACK_SIZE.
+
+ * cont.c: support RUBY_FIBER_(VM|MACHINE)_STACK_SIZE.
+
+ * test/ruby/test_fiber.rb: add tests for above.
+
+ * test/ruby/test_thread.rb: ditto.
+
+Thu Dec 20 06:25:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_fiber.rb: remove a strange single quote character.
+ With this character, this script exits by SyntaxError.
+
+Thu Dec 20 01:03:00 2012 Zachary Scott <zachary@zacharyscott>
+
+ * ext/.document: Add missing ext modules to .document
+ Patch by Ryunosuke SATO [Fixes Github #224]
+
+Wed Dec 19 23:52:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (load_file_internal): use original C string as the filename
+ for parser.
+ reported by whiteleaf at [ruby-list:49085] [ruby-dev:46738]
+ [Bug #7562]
+
+Wed Dec 19 23:36:12 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * marshal.c (marshal_dump, marshal_load): fix SEGV during make rdoc
+ and test failure in TestMarshal#test_gc and test_context_switch
+ on SPARC Solaris 10 compiled with Oracle Solaris Studio 12.3.
+ [Bug #7591] [ruby-dev:46772]
+
+Wed Dec 19 19:34:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_get): nul byte is invalid as constant name.
+
+Wed Dec 19 17:54:18 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks): get rid of race
+ condition. [Bug #7589] [ruby-dev:46763]
+
+Wed Dec 19 16:30:28 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/literals.rdoc: Added 0d decimal format. Thanks Nobu!
+
+Wed Dec 19 16:19:36 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Fixed typo. Thanks to Josh Susser.
+
+Wed Dec 19 16:18:22 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/query_command.rb: Refactored to improve
+ maintainability.
+ * test/rubygems/test_gem_commands_query_command.rb: Note default gems
+ in gem list details.
+
+ * lib/rubygems/uninstaller.rb: Detect all gems for uninstallation.
+ This allows duplicate installs of default gems to be removed.
+ * lib/rubygems/specification.rb: Allow use of ::each_spec.
+ * lib/rubygems/test_case.rb: Added install_default_gems.
+ * test/rubygems/test_gem_commands_uninstall_command.rb: Moved test
+ down to the uninstaller tests.
+ * test/rubygems/test_gem_uninstaller.rb: Test for uninstallation of
+ default gems and duplicate default gems.
+
+Wed Dec 19 15:23:50 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Add () around keyword arguments example for
+ consistency. Thanks to Josh Susser.
+
+Wed Dec 19 01:51:24 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * vm.c (rb_vm_jump_tag_but_local_jump): remove unnecessary 2nd
+ argument.
+
+ * load.c (rb_load_internal): ditto.
+
+ * eval_intern.h (rb_vm_jump_tag_but_local_jump): ditto.
+
+Tue Dec 18 18:57:58 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_wait_writable): don't use rb_thread_wait_fd()
+ because it is for waiting until io readable.
+
+ * io.c (rb_io_wait_writable): always use rb_thread_fd_writable()
+ instead of bare rb_wait_for_single_fd(). we shouldn't ignore
+ return value.
+ * io.c (rb_io_wait_readable): ditto. always use rb_thread_wait_fd().
+
+Tue Dec 18 18:55:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_wait_fd_rw): fix infinite loop bug.
+ rb_wait_for_single_fd() never return positive number.
+
+Tue Dec 18 17:24:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/encoding.rb: Do not remove #! line from document when
+ setting encoding. This allows ruby executables to be parsed as ruby
+ files.
+ * test/rdoc/test_rdoc_encoding.rb: Test for above.
+
+ * lib/rdoc/parser.rb: Set the parser file name of ruby executables
+ correctly.
+ * test/rdoc/test_rdoc_parser.rb: Test for above.
+
+Tue Dec 18 16:46:15 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/literals.rdoc: Used simplified heredoc example that
+ doesn't include method definition. Added heredoc with backticks.
+
+Tue Dec 18 16:38:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/store.rb: Work around RDoc stores from older versions of
+ RDoc.
+ * test/rdoc/test_rdoc_store.rb: Test for above.
+
+Tue Dec 18 16:31:20 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ruby_lex.rb: Return a TkHEREDOC instead of a TkSTRING when
+ the heredoc identifier is followed by a line-end. This allows proper
+ display of some HEREDOCs in source view.
+ * lib/rdoc/ruby_token.rb: Added TkHEREDOC
+ * test/rdoc/test_rdoc_ruby_lex.rb: Test for above.
+
+Tue Dec 18 09:45:14 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * vm.c (rb_vm_make_jump_tag_but_local_jump): take care of the case
+ TAG_JUMP() with TAG_FATAL (ex. rb_fatal()). [ruby-core:50917]
+ [Bug #7570]
+
+ * test/ruby/test_fiber.rb (test_fatal_in_fiber): add a test for above.
+
+ * ext/-test-/fatal/extconf.rb, ext/-test-/fatal/rb_fatal.c: ditto.
+
+Tue Dec 18 13:17:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_trace.c (tracepoint_attr_defined_class): Clean up rdoc for
+ TracePoint#defined_class
+
+Tue Dec 18 12:15:59 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Fixed ruby output of requirements
+ with multiple version specifiers.
+ * test/rubygems/test_gem_ext_cmake_builder.rb: Only look for specific
+ lines in cmake output. Should fix [ruby-trunk - Bug #7579]
+
+Tue Dec 18 11:45:26 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/literals.rdoc: Added 0o octal integers.
+
+Tue Dec 18 12:28:52 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * test/openssl/test_ssl.rb: Use :TLSv1_2_client explicitly in
+ test_tls_v1_2 to prevent upstream bug.
+ [Bug #7197] [ruby-dev:46240]
+
+Tue Dec 18 11:52:34 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/lib/ssl.rb: Enable insertion of empty fragments as a
+ countermeasure for the BEAST attack by default. The default options
+ of OpenSSL::SSL:SSLContext are now:
+ OpenSSL::SSL::OP_ALL & ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS
+ [Bug #5353] [ruby-core:39673]
+
+ * test/openssl/test_ssl.rb: Adapt tests to new SSLContext default.
+
+ * NEWS: Announce the new default.
+
+Tue Dec 18 06:36:12 2012 Koichi Sasada <ko1@atdot.net>
+
+ * method.h: remove `VM_METHOD_TYPE_CFUNC_FRAMELESS' method type.
+ This method type is for optimized CFUNC such as Fixnum#+ and so on.
+ This feature is half-baked and no way to use them.
+ [Background]
+ Now, VM has opt_plus instructions to optimize `+' methods for
+ some Classes (such as Fixnum, Float (flonum)). We call this
+ type of instructions as `specialized instructions'.
+ This simple technique improve simple program dramatically.
+ However, we can make specialized instructions for only several
+ types (classes) and selectors (method names) because a large
+ instruction will be slow. In other words, this technique has no
+ extensibility.
+ To overcome this problem, VM_METHOD_TYPE_CFUNC_FRAMELESS was
+ introduced (r37198). This type is a variant of CFUNC, but called
+ their functions directly without building a method frame.
+ Any CFUNC method can be defined as frameless methods if a method
+ is not needed to make method frame. Frameless methods are faster
+ as specialized instructions (a bit slower, but no need to care).
+ No problem described at
+ http://charlie.bz/blog/why-do-singleton-methods-make-ruby-slow
+ because this technique doesn't see class, but see method body
+ itself. Alias is also no problem.
+ [Problem]
+ However, we can't set frameless method type for polymorphic methods
+ such as Array#[]. Necessity for method frame depends on which
+ parameter type. For example, Fixnum#+ needs method frame if
+ coerce is needed. Current VM_METHOD_TYPE_CFUNC_FRAMELESS is not
+ flexible and need more tuning to introduce it.
+ Expected behavior of frameless method type may be:
+ result = optimized_cfunc(params); /* call optimized cfunc */
+ if (result == Qundef) { result = normal_cfunc(); }
+ This is why I say this feature is half-baked.
+ We need to learn primitive method in Smalltalk more.
+ (I heard this name at RubyConf Taiwan this month. Thanks!)
+ [Conclusion]
+ I remove this feature and consider again.
+ This feature goes to next minor (2.1?).
+ Nobody may use this feature and there is no compatibility issue.
+
+ * proc.c (rb_method_entry_arity): ditto.
+
+ * vm_eval.c, vm_insnhelper.c, vm_method.c: ditto.
+
+Tue Dec 18 04:58:22 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (fill_id_and_klass): TracePoint#defined_class returns
+ singleton class. `set_trace_func' passed attached class (which is
+ attached/modified by singleton class) by 6th block parameter if it
+ is singleton class. Previous behavior follows this spec.
+ However, this method named `defined_class' should return singleton
+ class directly because singleton methods are defined in singleton
+ class. There are no compatible issue because TracePoint is introduced
+ after 2.0.
+ But compatibility with `set_trace_func' is broken. This means that
+ you can not replace all `set_trace_func' code with TracePoint
+ without consideration of this behavior.
+ [Bug #7554]
+
+ * test/ruby/test_settracefunc.rb: change a test to catch up
+ an above change.
+
+Tue Dec 18 03:03:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: speed up node mapping so
+ common cases are evaluated first. Thanks Kevin Menard!
+
+Tue Dec 18 02:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/optparse.rb: Remove 'developer documentation' section from rdoc
+ Patch by Marcus Stollsteimer [ruby-core:50526][Bug #7504]
+
+Tue Dec 18 02:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/matrix.rb (#lup): typo in example [ruby-core:50946][Bug #7582]
+
+Mon Dec 17 18:03:34 2012 Charlie Somerville <charlie@charliesomerville.com>
+
+ * class.c (rewrite_cref_stack, clone_method): rewrite a method's cref
+ stack when cloning into a new class to allow lexical const lookup to
+ work as expected [ruby-core:47834] [Bug #7107]
+ * test/ruby/test_class.rb (class TestClass): related test
+
+Mon Dec 17 13:56:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_flush_buffer_sync2): avoid to return 0. because
+ rb_thread_call_without_gvl2 uses 0 internally.
+ * io.c (io_flush_buffer_async2): adapt the above.
+
+Mon Dec 17 12:05:32 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Added a description of singleton methods.
+
+Mon Dec 17 11:35:57 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/.document: Added doc/syntax
+
+Mon Dec 17 11:25:32 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax.rdoc: Added syntax guide table of contents
+ * doc/syntax/exceptions.rdoc: Syntax guide for exceptions
+ * doc/syntax/literals.rdoc: Syntax guide for literals
+ * doc/syntax/methods.rdoc: Syntax guide for methods
+
+Mon Dec 17 07:59:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Updated VERSION
+
+ * test/rubygems/test_gem_installer.rb: Fixed ambiguous first argument
+ warning.
+
+ * test/rubygems/test_gem_rdoc.rb: RDoc generation depends on installed
+ version of RDoc.
+
+Sun Dec 16 02:04:41 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (rb_sigaltstack_size): cast sysconf() return value
+ explicitly. Fix compile error on Mac OS X.
+
+Sun Dec 16 00:39:43 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * cont.c (rb_fiber_start): don't enqueue Qnil to async_errinfo_queue.
+ rb_vm_make_jump_tag_but_local_jump() could return Qnil (ex. when
+ finished by Thread.exit). [ruby-dev:45218] [Bug #5993]
+
+ * test/ruby/test_fiber.rb (test_exit_in_fiber): add test for it.
+
+Sat Dec 15 23:56:51 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/pointer.c (rb_fiddle_ptr2cptr): fix error message
+ forgotten to be changed from DL to Fiddle.
+
+Sat Dec 15 23:14:32 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (default_handler): remove rb_register_sigaltstack()
+ call. sigaltstack was already registered when creating threads.
+
+Sat Dec 15 23:08:56 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (rb_sigaltstack_size): new. calculate stack size for
+ sigsegv handler. enlarge value when x86 or x86_64 on Linux.
+ Linux has very small MINSIGSTKSZ size (2048 bytes) and
+ our sigsegv routine need 5KiB at least. [Bug #7141]
+ * internal.h: add declaration of rb_sigaltstack_size().
+ * vm_core.h: remove ALT_STACK_SIZE definition.
+
+ * signal.c (rb_register_sigaltstack): replace ALT_STACK_SIZE with
+ rb_sigaltstack_size();
+ * gc.c (Init_heap): ditto.
+ * vm.c (th_init): ditto.
+
+Sat Dec 15 18:24:21 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (f_round_common): should check overflow.
+
+Sat Dec 15 18:00:00 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (float_rationalize): reduced.
+
+Sat Dec 15 14:18:44 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (finish_writeconv): uses rb_write_internal2 if
+ fptr->write_lock have.
+
+Sat Dec 15 13:57:08 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_owned_p): remove static.
+ * io.c (io_flush_buffer): don't hold mutex if already have.
+ Now recursive lock may occur when following scenario.
+ fptr_finalize -> finish_writeconv_sync -> finish_writeconv
+ -> io_fflush.
+
+Sat Dec 15 13:38:30 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_flush_buffer): uses io_flush_buffer_async2 instead of
+ io_flush_buffer_async.
+ * io.c (io_flush_buffer_async2): new helper function for
+ io_flush_buffer. It uses rb_thread_call_without_gvl2() instead
+ of rb_thread_io_blocking_region.
+ * io.c (io_flush_buffer_sync2): new helper function for
+ io_flush_buffer_async2.
+
+Sat Dec 15 13:04:26 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (internal_write_func2): new helper function for rb_write_internal2().
+ * io.c (rb_write_internal2): new function. it uses
+ rb_thread_call_without_gvl2() instead of rb_thread_io_blocking_region().
+ * io.c (rb_binwrite_string): uses rb_write_internal2 instead of
+ rb_write_internal. [Bug #7134]
+
+Sat Dec 15 12:55:29 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_wait_writable): add to call rb_thread_wait_fd()
+ likes rb_io_wait_readable.
+
+Sat Dec 15 11:54:50 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_wait_writable): don't call rb_thread_fd_writable()
+ when EINTR. EINTR mean signal interrupt was happen. We don't
+ need any wait.
+
+Sat Dec 15 11:53:36 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_wait_fd_rw): remove silly rb_thread_alone()
+ check.
+
+Sat Dec 15 10:22:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_polling): revert but deprecate.
+
+ * include/ruby/intern.h (rb_thread_polling): deprecate.
+
+Sat Dec 15 08:37:01 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * test/rubygems/test_gem_ext_cmake_builder.rb (test_self_build):
+ get rid of false positive.
+
+Sat Dec 15 08:05:56 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb (test_uninitialized, test_backtrace,
+ test_thread_timer_and_interrupt, test_thread_join_in_trap,
+ test_thread_join_current, test_thread_join_main_thread,
+ test_main_thread_status_at_exit, test_thread_status_in_trap,
+ test_thread_status_raise_after_kill, test_mutex_owned,
+ test_mutex_owned2): move these tests from TestThreadGroup class
+ to TestThread because they are not thread group tests.
+
+ * test/ruby/test_thread.rb (test_thread_status_raise_after_kill):
+ add t.join.
+
+ * test/ruby/test_threadgroup.rb: new file. moved ThreadGroup test
+ from test_thread.rb.
+
+Sat Dec 15 08:02:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb (TestThread::Thread::new.): remove
+ th.abort_on_exception change. Test template shouldn't change
+ global flag. It prevent to test a normal case.
+
+Sat Dec 15 06:15:14 2012 Eric Hodel <drbrain@segment7.net>
+
+ * configure.in (HAVE_GCC_ATOMIC_BUILTINS): Set -march=i486 to enable
+ __sync_val_compare_and_swap. Patch by KOSAKI Motohiro.
+ [ruby-trunk - Bug #7485]
+
+Sat Dec 15 03:42:34 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/.document: add fiddle/pointer.c, fiddle/handle.c, and
+ fiddle/win32/lib as documentation.
+
+Sat Dec 15 03:06:40 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * file.c (rb_file_flock): use rb_thread_wait_for() instead of
+ rb_thread_polling(). When getting EAGAIN, we need to wait a
+ while even if no multi threading.
+ * thread.c (sleep_for_polling, rb_thread_polling) removed.
+
+Sat Dec 15 00:03:31 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (rb_f_kill): remove rb_thread_polling() because this
+ has no good effect and makes meaningless 100ms delay. 1)
+ when sending signal to another process, waiting has just silly.
+ 2) when sending signal to current process, 100ms is often not
+ enough time to wait. It depend on kernel behavior. And,
+ rb_thread_polling() doesn't make sense anyway. When rb_thread_alone()
+ is true, it doesn't wait at all and Process.kill() users don't
+ expect threading changes Process.kill() behavior. [Bug #7560]
+
+Fri Dec 14 17:10:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_params): parser_tokline to track the line number at
+ which token started. [ruby-dev:46737] [Bug #7559]
+
+ * parse.y (fcall): operation with starting line number.
+
+ * parse.y (command, primary, method_call): point method name line.
+
+ * parse.y (gettable_gen): return token line for __LINE__.
+
+Fri Dec 14 16:56:59 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_super_method): remove volatile introduced
+ in r38365.
+
+ * vm_insnhelper.c (vm_call_method): use __forceinline to prevent
+ VC++ to make vm_call_general and vm_call_super_method as the same
+ method. Thanks, Heesob Park. [Bug #7556] [ruby-core:50867]
+
+Fri Dec 14 14:59:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_separately):
+ take file and line by using caller_locations if not given.
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_separately):
+ count assertions in separated tests.
+
+Fri Dec 14 14:16:42 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/rubygems_hook.rb: Fixed generation of documentation.
+ Disabled rdoc generation by default to match RubyGems defaults.
+ Reduced diff with RubyGems::RDoc.
+ * test/rdoc/test_rdoc_rubygems_hook.rb: Tests for the above.
+ * test/rubygems/test_gem_rdoc.rb: ditto.
+
+ * lib/rdoc/store.rb: Removed useless variable assignment
+
+Fri Dec 14 13:58:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/rdoc_command.rb: When overwriting
+ documentation, remove existing documentation first.
+
+ * lib/rubygems/server.rb: Fixed documentation links.
+ * test/rubygems/test_gem_server.rb: Test for the above.
+
+ * lib/rubygems/rdoc.rb: Reduced diff with RDoc::RubyGemsHook
+ * test/rubygems/test_gem_rdoc.rb: ditto
+
+Fri Dec 14 04:08:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_separately):
+ added to execute given test source on separate process,
+ catch its resulted exception and raise it on main process.
+
+Fri Dec 14 07:43:44 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: quote strings that begin
+ with non-word characters. Thanks Alex Tambellini!
+ * test/psych/test_yaml.rb: appropriate test case
+
+Thu Dec 13 23:14:17 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_super_method): a workaround for the
+ failure of TestRefinement#test_refine_recursion in Windows.
+ See [ruby-core:50871] for details.
+
+Thu Dec 13 23:10:52 Charlie Somerville <charlie@charliesomerville.com>
+
+ * object.c (Init_Object): use rb_mod_init_copy for Class#initialize_copy
+ * class.c (rb_class_init_copy): rename to class_init_copy_check, performs type
+ checks on arguments to prevent reinitialization of initialized class
+ [ruby-core:50869] [Bug #7557]
+ * class.c (rb_mod_init_copy): use class_init_copy_check if receiver is T_CLASS
+ * test/ruby/test_class.rb (class TestClass): related test
+
+Thu Dec 13 16:53:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/class_module.rb: Fixed duplicate comments for classes and
+ modules from C.
+ * test/rdoc/test_rdoc_class_module.rb: Test for the above.
+
+ * lib/rdoc/parser/c.rb: Reload C variable names to allow proper
+ updates of an ri store for C files.
+ * lib/rdoc/rdoc.rb: ditto.
+ * lib/rdoc/store.rb: ditto.
+ * test/rdoc/test_rdoc_parser_c.rb: Test for the above.
+ * test/rdoc/test_rdoc_store.rb: ditto.
+
+Thu Dec 13 14:20:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb*: merge doc from doc/irb/ird.rd and improve overall
+ documentation of IRB
+ * doc/irb/irb.rd: remove stale documentation
+
+Thu Dec 13 14:10:00 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * marshal.c (r_entry0): don't taint classes and modules because
+ Marshal.load just returns the dumped classes and modules.
+ [Bug #7325] [ruby-core:49198]
+
+ * test/ruby/test_marshal.rb: related test.
+
+Thu Dec 13 14:10:13 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_require.rb (TestRequire#test_loaded_features_encoding):
+ need to check compatibility, not equality of encodings.
+
+Thu Dec 13 14:02:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_join): check encoding compatibility before joining
+ strings.
+
+Thu Dec 13 13:06:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (umethod_bind): allow another form of method transplanting
+ from a module via UnboundMethod. [ruby-core:34267][Feature #4254]
+
+Thu Dec 13 12:07:25 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_UNUSED_VAR): new macro to suppress
+ warnings for unused variables.
+
+ * ext/bigdecimal/bigdecimal.c (ENTER): use RB_UNUSED_VAR() to
+ suppress annoying warnings by -Wunused-but-set-variable in gcc 4.6.
+
+Thu Dec 13 11:22:33 2012 Koichi Sasada <ko1@atdot.net>
+
+ * method.h: remove "VM_METHOD_TYPE__MAX" from rb_method_type_t.
+ rb_method_type_t is not a number and "_MAX" causes misunderstanding.
+
+ * proc.c (rb_method_entry_arity): ditto.
+
+ * vm_eval.c (vm_call0_body): ditto.
+
+ * vm_insnhelper.c (vm_call_method): ditto.
+
+Wed Dec 12 21:40:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (Dir::Tmpname#create): deal with a prefix name which
+ starts with tilde as a plain name, not expanding as home directory.
+ [ruby-core:50793] [Bug #7547]
+
+Wed Dec 12 19:48:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: merge JSON 1.7.5.
+ fix tests and other fixes.
+
+Wed Dec 12 18:30:29 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * class.c (rb_prepend_module): move refined methods from the origin
+ of a class to the class, because refinements should have priority
+ over prepended modules.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Wed Dec 12 18:27:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (zone_str): lookup or insert by using st_update() at once.
+
+Wed Dec 12 15:30:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: add -fno-omit-frame-pointer if libexecinfo is used.
+ At least on FreeBSD ruby will crash on getting C backtrace
+ when it is compiled with other than -O0.
+
+ * vm_dump.c: enable backtrace on FreeBSD even if with optimizations.
+
+Wed Dec 12 16:08:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_rdoc.rb (TestRDocRDoc#test_normalized_file_list_non_file_directory):
+ use File::NULL for portability if possible.
+
+Wed Dec 12 16:07:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * method.h (rb_method_flag_t): name a magic number for NOEX_SAFE and
+ NOEX_WITH as NOEX_SAFE_SHIFT_OFFSET.
+
+ * method.h (rb_method_type_t, method_optimized_type): C89 forbids a
+ comma after the last element in enum.
+
+ * proc.c (rb_method_entry_arity), vm_eval.c (vm_call0_body),
+ vm_insnhelper.c (vm_call_method): add VM_METHOD_TYPE__MAX case.
+
+Wed Dec 12 14:16:35 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/class_module.rb: Added RDoc::ClassModule#documented? which
+ checks comment_location. Hide RDoc::ClassModule#comment=.
+ * test/rdoc/test_rdoc_class_module.rb: Test for above.
+
+ * lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml:
+ Fix display of the table of contents in the sidebar.
+
+ * lib/rdoc/generator/template/darkfish/table_of_contents.rhtml:
+ Use #comment_location when displaying classes or modules.
+
+ * test/rdoc/test_rdoc_store.rb: Use comment_location.
+
+Wed Dec 12 13:40:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_getivar): no uninitialized instance variables
+ warnings for non-object if attr method.
+
+Wed Dec 12 06:43:37 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * iseq.c (rb_iseq_parameters): fix limit for optional arguments.
+
+ * test/ruby/test_keyword.rb: tests for above.
+
+ * vm_core.h (struct rb_iseq_struct): update documentation
+ with keyword arguments. [Bug #7540] [ruby-core:50735]
+
+Wed Dec 12 03:45:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_exec): pass exceptions while handling an exception.
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks): propagate exceptions.
+ revert r38293 partially.
+
+Wed Dec 12 03:09:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/test.rb (Progress#initialize): add --verbose option and show
+ messages in one line unless --verbose is given.
+
+Wed Dec 12 01:47:02 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_using_refinement): make the method table of an iclass
+ for a refinement that of the refinement, not that of the origin of
+ the refinement, which is set by rb_include_class_new(). This
+ change is needed to make module prepend into a refinement work
+ properly.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Wed Dec 12 01:05:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/make-snapshot: add --disable-rubygem to both MINIRUBY and RUBY.
+ On making miniprelude.c, it seems use MINIRUBY. this fixes #7541
+ but rubygems also needs to be fixed for older rubies.
+
+Wed Dec 12 00:32:11 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/dl/test_func.rb (test_name_with_block, test_bind, test_qsort1):
+ call unbind to release the callback closure because maximum number
+ of callbacks is limited to DL::MAX_CALLBACK (== 5) with pure DL
+ without Fiddle.
+
+Wed Dec 12 00:13:34 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#unbind, #bound?): suppress
+ NoMethodError when Fiddle is available. [ruby-core:50756] [Bug #7543]
+ * test/dl/test_func.rb (test_bound*, test_unbind*): tests for the above.
+
+Tue Dec 11 19:38:37 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/function.c (Fiddle::Function.new): new keyword argument
+ :name to set the name attribute.
+ * ext/fiddle/lib/fiddle/import.rb (import_function, bind_function):
+ set function name by using the :name keyword argument.
+ Re-fixes r38243. [ruby-core:50566]
+ * test/fiddle/test_function.rb (test_name): test for the :name keyword
+ argument and Fiddle::Function#name.
+
+Tue Dec 11 16:57:33 2012 Eric Hodel <drbrain@segment7.net>
+
+ * common.mk: Added --pages-dir to rdoc creation. Now doc/ items show
+ up at top-level.
+ * .document: Moved doc/* entries to doc/.document
+ * doc/.document: ditto
+
+Tue Dec 11 16:44:37 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/options.rb: Added --page-dir option for moving pages in
+ doc/ to the top-level.
+ * lib/rdoc/rdoc.rb: ditto.
+ * test/rdoc/test_rdoc_options.rb: Test for the above.
+ * test/rdoc/test_rdoc_rdoc.rb: ditto.
+
+Tue Dec 11 15:24:05 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/pathname/lib/pathname.rb: Hide private methods from RDoc.
+
+Tue Dec 11 15:11:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/make-snapshot (BASERUBY): add --disable-gem to avoid load gems.
+ [Bug #7541] [ruby-core:50736]
+
+Tue Dec 11 12:00:19 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl/win32/extconf.rb: Fix typo
+ by Santiago Pastorino <santiago@wyeworks.com>
+ https://github.com/ruby/ruby/pull/221 fix GH-221
+
+Tue Dec 11 01:53:37 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix: alias {row|column}_size to {row|column}_count and use
+ the latter.
+ [Bug #7369] [ruby-core:49409]
+
+Tue Dec 11 00:26:58 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * fix the behavior when a module is included into a refinement.
+ This change is a little tricky, so it might be better to prohibit
+ module inclusion to refinements.
+
+ * include/ruby/ruby.h (RMODULE_INCLUDED_INTO_REFINEMENT): new flag
+ to represent that a module (iclass) is included into a refinement.
+
+ * class.c (include_modules_at): set RMODULE_INCLUDED_INTO_REFINEMENT
+ if klass is a refinement.
+
+ * eval.c (rb_mod_refine): set the superclass of a refinement to the
+ refined class for super.
+
+ * eval.c (rb_using_refinement): skip the above superclass (the
+ refined class) when creating iclasses for refinements. Otherwise,
+ `using Refinement1; using Refinement2' creates iclasses:
+ <Refinement2> -> <RefinedClass> -> <Refinement1> -> RefinedClass,
+ where <Module> is an iclass for Module, so RefinedClass is
+ searched before Refinement1. The correct iclasses should be
+ <Refinement2> -> <Refinement1> -> RefinedClass.
+
+ * vm_insnhelper.c (vm_search_normal_superclass): if klass is an
+ iclass for a refinement, use the refinement's superclass instead
+ of the iclass's superclass. Otherwise, multiple refinements are
+ searched by super. For example, if a refinement Refinement2
+ includes a module M (i.e., Refinement2 -> <M> -> RefinedClass,
+ and if refinements iclasses are <Refinement2> -> <M>' ->
+ <Refinement1> -> RefinedClass, then super in <Refinement2> should
+ use Refinement2's superclass <M> instead of <Refinement2>'s
+ superclass <M>'.
+
+ * vm_insnhelper.c (vm_search_super_method): do not raise a
+ NotImplementError if current_defined_class is a module included
+ into a refinement. Because of the change of
+ vm_search_normal_superclass(), the receiver might not be an
+ instance of the module('s iclass).
+
+ * test/ruby/test_refinement.rb: related test.
+
+Mon Dec 10 18:35:25 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_method_entry_without_refinements): use
+ rb_resolve_refined_method() to search superclasses if
+ me->def->orig_me is 0. This change fixes make test-all
+ TESTS="json ruby/test_refinement.rb".
+
+ * test/ruby/test_refinement.rb: related test.
+
+Mon Dec 10 17:59:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/fiddle/win32/*: library ports from DL to Fiddle.
+
+ * ext/dl/win32/extconf.rb: check fiddle. often case dl compiled prior
+ to fiddle, so this change is no meaning. in most cases, simply
+ fiddle/win32 overwrite dl/win32.
+
+Mon Dec 10 15:23:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks): exceptions in event
+ hooks should not propagate outside.
+
+Mon Dec 10 15:11:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): count flip-flop state in local iseq
+ not in each iseqs, so that the keys can be other than hidden
+ strings. [ruby-core:47253] [Bug #6899]
+
+ * vm_insnhelper.c (lep_svar_get, lep_svar_set, vm_getspecial): store
+ flip-flop states in an array instead of a hash.
+
+ * iseq.c (set_relation): main iseq also can has local scope.
+
+Mon Dec 10 10:36:12 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * lib/irb/magic-file.rb: set a encoding, which is detected from
+ the file to read, to the internal encoding.
+ [Bug #4281][ruby-dev:43036]
+
+Mon Dec 10 09:40:19 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/ext/cmake_builder.rb: Added a builder for cmake.
+ * lib/rubygems/ext.rb: ditto.
+ * lib/rubygems/installer.rb: ditto.
+ * test/rubygems/test_gem_ext_cmake_builder.rb: Test for above.
+
+Mon Dec 10 09:13:08 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb: Omit directories when packaging gems like
+ RubyGems 1.8.x
+ * test/rubygems/test_gem_package.rb: Test for above.
+
+Sun Dec 9 17:36:59 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_opt_send): Kernel#send should not use
+ refinements.
+
+ * proc.c (mnew): Kernel#method, Kernel#public_method,
+ Module#instance_method, and Module#public_instance_method should
+ not use refinements.
+
+ * vm_method.c (rb_method_boundp): Kernel#respond_to? should not use
+ refinements.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sun Dec 9 06:19:04 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markdown/entities.rb: Added documentation.
+
+ * lib/rdoc/parser/ruby.rb: Updated style
+
+ * lib/rdoc/ruby_lex.rb: Parse characters up to \u{FFFFF}
+ * test/rdoc/test_rdoc_ruby_lex.rb: Test for above.
+
+Sat Dec 8 22:38:35 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine): don't override Module#include. It's
+ unnecessary now because refinements are activated only in refine
+ blocks.
+
+Sat Dec 8 22:33:26 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c: remove Module#refinements.
+
+ * test/ruby/test_refinement.rb: remove tests for Module#refinements.
+
+Sat Dec 8 13:17:55 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (top_using): raise a RuntimeError if using is called in a
+ module definition or a method definition.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sat Dec 8 15:01:35 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/cleanup_command.rb: Skip default gems when
+ cleaning up.
+ * test/rubygems/test_gem_commands_cleanup_command.rb: Test for above.
+
+ * lib/rubygems/commands/query_command.rb: Fixed listing remote gems.
+
+ * lib/rubygems/dependency_installer.rb: Ignore non-files when looking
+ for local gems.
+ * test/rubygems/test_gem_dependency_installer.rb: Test for above.
+
+ * lib/rubygems/uninstaller.rb: The user must confirm uninstalling gems
+ that have dependencies.
+ * test/rubygems/test_gem_uninstaller.rb: Test for above.
+
+ * lib/rubygems.rb (module Gem): Updated version.
+
+ * test/rubygems/*.pem: Updated to run in FIPS mode.
+ * test/rubygems/test_gem_security.rb: ditto.
+ * test/rubygems/test_gem_security_signer.rb: ditto.
+
+Sat Dec 8 12:34:01 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_normal_superclass): super in a
+ refinement always uses the refined class as its superclass.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sat Dec 8 11:59:59 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine): raise an ArgumentError if a given
+ block is of a Proc object.
+
+ * vm_insnhelper.c (vm_call_method): store refined methods in inline
+ cache to improve performance. It's safe now because blocks cannot
+ be yielded with different refinements in the new specification.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sat Dec 8 11:17:53 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine), vm_eval.c (rb_yield_refine_block):
+ Module#refine activates all refinements defined in that module
+ only in a given block.
+
+ * string.c (sym_to_proc, sym_call): don't use refinements.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sat Dec 8 09:24:42 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_x509name.c: Completed documentation for
+ OpenSSL::X509::Name.
+
+Sat Dec 8 07:57:12 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (iow_size): return size of internal object
+ for ObjectSpace.memsize_of().
+
+ * test/objspace/test_objspace.rb: add a test.
+
+Tue Dec 08 02:39:23 2012 James Edward Gray II <james@graysoftinc.com>
+
+ * lib/csv.rb: A fix for row comparison by Stephen Wattam. [Bug #7528]
+
+Sat Dec 8 01:27:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): no need to
+ check all reports.
+
+Sat Dec 8 00:10:34 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (yield_under, eval_under): do not activate refinements
+ of the receiver in module_eval and instance_eval.
+
+ * eval.c (ruby_Init_refinement): undef Class#refine.
+
+ * eval.c (ruby_Init_refinement): remove Module#using.
+
+ * eval.c (ruby_Init_refinement): main.using should be private.
+
+ * eval.c (rb_mod_refine): the argument of Module#refine should not
+ be a module.
+
+ * insns.def (defineclass): do not activate refinements in a class or
+ module.
+
+Fri Dec 7 23:42:11 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/refinement/refinement.c: include ruby/ruby.h instead of the
+ declaration of rb_warn().
+
+Fri Dec 7 16:07:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/etc.rd: Removed stale documentation file
+ * ext/etc/etc.c: Merged documentation from doc/etc.rd and updated
+ rdoc, added documentation for Etc::Passwd and Etc::Group
+
+Fri Dec 7 16:00:57 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): no need to
+ retry skipped test. this fix makes 40% faster the whole test-all
+ with -j5 on Windows.
+
+Fri Dec 7 14:22:29 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/to_joined_paragraph.rb: Completed documentation
+ * lib/rdoc/parser/c.rb: ditto
+ * lib/rdoc/parser/changelog.rb: ditto
+ * lib/rdoc/servlet.rb: ditto
+ * lib/rdoc/store.rb: ditto
+
+ * lib/rdoc/store.rb: Improved HTML error page. Completed
+ documentation
+
+ * lib/rdoc/parser/ruby.rb: Fixed bug attaching a comment to A::B = 42
+ * test/rdoc/test_rdoc_parser_ruby.rb: Test for above
+
+ * test/rdoc/test_rdoc_comment.rb: Removed garbage
+
+Fri Dec 7 14:03:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/timeout.rb (Timeout#timeout): since async_interrupt_timing
+ re-raises a deferred exception, replace the timeout exception with
+ Timeout::Error after it. [Bug #7503]
+
+Fri Dec 7 13:07:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/forwardable.rd: Remove stale documentation file
+ * lib/forwardable.rb: Merge documentation from doc/forwardable.rd
+
+Fri Dec 7 09:47:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * time.c (time_mdump): dump timezone string to private instance variable
+ on marshaling.
+
+ * time.c (time_mload): load timezone string from private instance
+ variable named 'zone'.
+
+Fri Dec 7 01:15:07 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/lib/fiddle/function.rb (Fiddle::Function#name): new
+ attribute needed to switch Win32::Registry from DL to Fiddle.
+
+ * ext/fiddle/lib/fiddle/import.rb (import_function, bind_function):
+ set function name to the returned Fiddle::Function object.
+
+Fri Dec 7 00:11:44 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_refinement.rb: fix some tests to use neither
+ Module#using nor Module#module_eval.
+
+Thu Dec 6 23:27:50 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (ruby_Init_refinement): a new function to enable
+ Refinements with a warning "Refinements are experimental...".
+
+ * ext/refinement/refinement.c, ext/refinement/extconf.rb: a new
+ extension library to enable Refinements.
+
+Thu Dec 6 18:23:05 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * revised r37993 to avoid SEGV/ILL in tests. In r37993, a method
+ entry with VM_METHOD_TYPE_REFINED holds only the original method
+ definition, so ci->me is set to a method entry allocated in the
+ stack, and it causes SEGV/ILL. In this commit, a method entry
+ with VM_METHOD_TYPE_REFINED holds the whole original method entry.
+ Furthermore, rb_thread_mark() is changed to mark cfp->klass to
+ avoid GC for iclasses created by copy_refinement_iclass().
+
+ * vm_method.c (rb_method_entry_make): add a method entry with
+ VM_METHOD_TYPE_REFINED to the class refined by the refinement if
+ the target module is a refinement. When a method entry with
+ VM_METHOD_TYPE_UNDEF is invoked by vm_call_method(), a method with
+ the same name is searched in refinements. If such a method is
+ found, the method is invoked. Otherwise, the original method in
+ the refined class (rb_method_definition_t::body.orig_me) is
+ invoked. This change is made to simplify the normal method lookup
+ and to improve the performance of normal method calls.
+
+ * vm_method.c (EXPR1, search_method, rb_method_entry),
+ vm_eval.c (rb_call0, rb_search_method_entry): do not use
+ refinements for method lookup.
+
+ * vm_insnhelper.c (vm_call_method): search methods in refinements if
+ ci->me is VM_METHOD_TYPE_REFINED. If the method is called by
+ super (i.e., ci->call == vm_call_super_method), skip the same
+ method entry as the current method to avoid infinite call of the
+ same method.
+
+ * class.c (include_modules_at): add a refined method entry for each
+ method defined in a module included in a refinement.
+
+ * class.c (rb_prepend_module): set an empty table to
+ RCLASS_M_TBL(klass) to add refined method entries, because
+ refinements should have priority over prepended modules.
+
+ * proc.c (mnew): use rb_method_entry_with_refinements() to get
+ a refined method.
+
+ * vm.c (rb_thread_mark): mark cfp->klass for iclasses created by
+ copy_refinement_iclass().
+
+ * vm.c (Init_VM), cont.c (fiber_init): initialize th->cfp->klass.
+
+ * test/ruby/test_refinement.rb (test_inline_method_cache): do not skip
+ the test because it should pass successfully.
+
+ * test/ruby/test_refinement.rb (test_redefine_refined_method): new
+ test for the case a refined method is redefined.
+
+Thu Dec 6 17:29:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_here_document): flush string content between new
+ line and :string_embexpr. [ruby-core:48703] [Bug #7255]
+
+Thu Dec 6 16:35:21 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/rake/helper.rb: Load envutil correctly. Removed useless rescue
+ for signal propagation tests
+ * lib/rake/file_utils.rb: Prefer the built ruby.
+ * test/rake/test_rake_functional.rb: ditto
+
+Thu Dec 6 15:20:34 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/context.rb: Don't warn for duplicate methods while loading.
+ * test/rdoc/test_rdoc_context.rb: Test for above.
+
+Thu Dec 6 14:26:22 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/command_manager.rb: Removed string concatenation
+ syntax. [Bug #6265]
+ * lib/rubygems/commands/install_command.rb: ditto
+ * lib/rubygems/commands/uninstall_command.rb: ditto
+ * lib/rubygems/indexer.rb: ditto
+ * lib/rubygems/security/policy.rb: ditto
+ * lib/rubygems/security.rb: ditto
+ * lib/rubygems/uninstaller.rb: ditto
+ * test/rubygems/test_gem_commands_cert_command.rb: ditto
+ * test/rubygems/test_gem_package.rb: ditto
+ * test/rubygems/test_gem_security.rb: ditto
+ * test/rubygems/test_gem_security_policy.rb: ditto
+
+Thu Dec 6 14:10:08 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb: Set rubygems_version before validation.
+ Fixes issue with bundler.
+ * test/rubygems/test_gem_package.rb: Test for above.
+
+ * lib/rubygems/remote_fetcher.rb: Only update the cache when we have
+ permission. [ruby-trunk - Bug #7509]
+ * lib/rubygems/source.rb (class Gem): ditto
+ * test/rubygems/test_gem_remote_fetcher.rb: Test for above.
+ * lib/rubygems/test_utilities.rb: ditto
+
+ * lib/rubygems/specification.rb: Derive base_dir properly for default
+ gems. [ruby-trunk - Bug #7496]
+ * test/rubygems/test_gem_specification.rb: Test for above.
+
+ * lib/rubygems.rb: Untaint Dir.pwd when searching for gemdeps files
+ for operation under $SAFE=1
+
+Thu Dec 06 12:07:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: TracePoint#enable should not cause an error
+ when it is already enabled. TracePoint#disable is too.
+ [ruby-core:50561] [ruby-trunk - Bug #7513]
+
+ * test/ruby/test_settracefunc.rb: add tests.
+
+Thu Dec 6 07:19:58 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Improved display of ChangeLog files as HTML.
+ * test/rdoc*: Test for above.
+
+Thu Dec 6 04:34:19 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_uninterruptible): helper function for providing
+ temporary async_interrupt_timing(Object => :defer)
+
+ * io.c (rb_f_p): use rb_uninterruptible.
+ * io.c (rb_f_p_internal): helper function for rb_f_p().
+ * io.c (struct rb_f_p_arg): new struct for rb_f_p_internal.
+
+ * test/ruby/test_thread.rb (test_async_interrupt_and_p): test for
+ the above.
+
+Thu Dec 6 04:27:10 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_binwrite): check interrupt before io issue.
+ * test/ruby/test_thread.rb (test_async_interrupt_and_io):
+ test for the above.
+
+Thu Dec 6 01:10:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_method_call_status): use Qundef as no self instead of
+ the current self.
+
+ * vm_eval.c (send_internal): public_send does not consider how it is
+ called, as mentioned in r14173. patched by charliesome (Charlie
+ Somerville). [ruby-core:50489] [Bug #7499]
+
+Wed Dec 5 23:50:23 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (getrusage_time): uses clock_gettime() with
+ CLOCK_PROCESS_CPUTIME_ID when available, which provides a 1ns
+ precision on linux. [ruby-core:50495] [Bug #7500]
+ patched by Aman Gupta.
+
+Wed Dec 5 22:46:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_vm_make_proc): save the proc made from the given block so
+ that it will not get collected. [ruby-core:50545] [Bug #7507]
+
+Wed Dec 5 22:13:57 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#bind): When Fiddle is used,
+ @ptr should be updated. This fixes SEGV raised in DL::Function#call
+ after calling DL::Function#bind. [Bug #7516] [ruby-dev:46708]
+
+ * test/dl/test_func.rb (test_bind): test for the above
+
+Wed Dec 5 18:53:00 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * thread.c (rb_thread_s_async_interrupt_timing): have to check ints
+ before jumping out.
+ * test/ruby/test_thread.rb (test_async_interrupt_with_return): add test
+ rescue has to catch a queued async exception at the time of return.
+ * test/ruby/test_thread.rb (test_async_interrupt_with_break): add test
+ rescue has to catch a queued async exception at the time of break.
+
+Wed Dec 5 16:54:28 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/memory_status.rb: suppress warning.
+ A patch from NAKAMURA Usaku.
+
+Wed Dec 5 16:06:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser/changelog.rb: Parse more ChangeLog file variations.
+ * test/rdoc/test_rdoc_parser_changelog.rb: Test for above.
+
+Wed Dec 5 12:17:11 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#initialize, DL::Function#bind):
+ ABI should be set by using CFunc#calltype even when Fiddle is used.
+ When Fiddle is used and a block is given, name should not be ignored.
+ [ruby-core:50562] [Bug #7514]
+
+ * ext/dl/lib/dl/import.rb (DL::Importer#bind_function): should respect
+ abi and name when Fiddle is used.
+
+ * test/dl/test_func.rb (test_name_with_block): test for "name" method
+ with giving a block.
+
+Wed Dec 5 11:55:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/shell.rd, doc/shell.rd.ja: Removed stale doc files
+ * lib/shell.rb, lib/shell/*: Merge and updates docs from doc/shell.rd*
+
+Wed Dec 5 11:42:38 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_settracefunc.rb: disable trace.
+
+Wed Dec 5 11:37:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#macro_defined?): use clearly different
+ strings from conflict markers.
+
+Wed Dec 5 04:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/README: Add rdoc modeline directive and formatting libs
+
+Wed Dec 5 04:04:02 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * test/ruby/test_thread.rb (test_async_interrupt_blocking): bugfix
+ about deferred check
+
+Wed Dec 5 03:35:37 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_core.h (RUBY_VM_CHECK_INTS_BLOCKING): check async queue everytime.
+ * thread.c (sleep_forever): check RUBY_VM_CHECK_INTS_BLOCKING first.
+ * thread.c (sleep_timeval): ditto.
+ * test/ruby/test_thread.rb (test_async_interrupt_blocking): add a test
+ exceptions are correctly deferred and raised on :on_blocking context.
+
+Wed Dec 5 02:36:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, defs/id.def, template/id.c.tmpl: generate id.c as well as id.h.
+
+Wed Dec 5 00:56:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_owned_p): new method that return current
+ thread have the target mutex or not. [Feature #7505] [ruby-dev:46697]
+ * test/ruby/test_thread.rb (test_mutex_owned, test_mutex_owned2):
+ test for the above.
+ * NEWS: new for the above.
+
+Wed Dec 5 00:05:47 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (make_compiler, add_put_cmd, add_insert_cmd): extract
+ methods.
+
+Tue Dec 4 18:21:04 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/ruby/memory_status.rb (Memory): use fiddle/types if available.
+
+ * test/ruby/memory_status.rb (Memory::Win32): :stdcall is needed on
+ x86 WIN32. This commit partly reverts r38054.
+
+Tue Dec 4 18:05:58 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/lib/fiddle/types.rb: copied from ext/dl/lib/dl/types.rb
+ and modified for Fiddle, needed for migration from DL to Fiddle.
+
+Tue Dec 4 17:57:09 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/lib/fiddle/import.rb (import_function, bind_function):
+ should respect call_type for migration from DL to Fiddle.
+ [Bug #7484] [ruby-core:50405]
+
+Tue Dec 4 16:54:00 2012 Eric Hodel <drbrain@segment7.net>
+
+ * .document: Added ChangeLog and doc/ChangeLog-* as documentation
+
+Tue Dec 4 16:47:46 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser/changelog.rb: Added a ChangeLog parser to RDoc.
+ * lib/rdoc/parser.rb: ditto
+ * test/rdoc/test_rdoc_parser_changelog.rb: Test for above.
+
+Tue Dec 4 16:23:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (path2class, path2module): use PRIsVALUE.
+
+ * marshal.c (w_object, marshal_dump, marshal_load): use
+ rb_check_funcall if possible.
+
+ * marshal.c (w_object, marshal_dump, r_object0, marshal_load): use
+ RB_GC_GUARD() (directly or indirectly) instead of volatile.
+
+ * variable.c (rb_path_to_class): prevent the argument from GC.
+
+Tue Dec 04 13:55:07 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_opts.h: enable optimization - operand unification.
+ Operand unification technique enable to combine
+ an instruction and specific operands and make new
+ instruction.
+
+ * defs/opt_operand.def: add several configuration
+ of operand unification.
+
+ * insns.def: use `int' instead to suppress warning.
+
+Mon Dec 3 17:58:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y: replace parser->enc with current_enc.
+
+Tue Dec 4 08:33:46 2012 Eric Hodel <drbrain@segment7.net>
+
+ * README.EXT: Converted to RDoc format
+ * README.EXT.ja: ditto
+
+Tue Dec 4 08:32:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/driver.rb: Fixed ri page display for files with
+ extensions.
+ * test/rdoc/test_rdoc_ri_driver.rb: Test for above
+
+Tue Dec 4 04:11:50 2012 Eric Hodel <drbrain@segment7.net>
+
+ * .document: Add NEWS for `ri ruby:NEWS`
+ * NEWS: Set format as rdoc
+ * doc/NEWS-1.8.7: ditto
+ * doc/NEWS-1.9.1: ditto
+ * doc/NEWS-1.9.2: ditto
+ * doc/NEWS-1.9.3: ditto
+
+Mon Dec 3 20:37:22 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.c: check VM_COLLECT_USAGE_DETAILS.
+
+Mon Dec 3 20:28:02 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_specialized_instruction):
+ change condition of using `opt_send_simple'.
+ More method invocations can be simple.
+
+Mon Dec 3 20:03:38 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_objectspace.rb: skip RuntimeError
+ which says a message "can't modify frozen File".
+ Is that correct behavior?
+
+Mon Dec 03 20:00:19 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.c: vm_analysis_insn should be static.
+
+Mon Dec 3 19:10:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (Init_Random), rational.c (Init_Rational): make marshal
+ methods private. [Feature #6539]
+
+Mon Dec 3 18:29:27 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.h: iseq_catch_table_entry::catch_type should be
+ Fixnum because they are pushed into Array in a compiler.
+ [Bug #7502]
+
+ * test/ruby/test_objectspace.rb: add a test of this issue.
+
+Mon Dec 3 18:25:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl (preserved_ids): "empty?" is not an attribute name.
+
+Mon Dec 3 16:23:09 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c (vm_backtrace_to_ary): check negative size (2nd arg).
+
+Mon Dec 3 15:50:33 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-additional.el (ruby-mode-set-encoding): Unbreak by
+ fixing a typo, s/set/setq/.
+
+Mon Dec 3 14:14:19 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): joke shouldn't use id.h defined ids.
+
+ * id.c (Init_id): ditto.
+
+ * common.mk: fix dependency.
+
+Mon Dec 3 12:43:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-block-end-re, ruby-delimiter)
+ (ruby-mode-syntax-table, ruby-parse-partial, ruby-beginning-of-indent):
+ merge from Emacs.
+
+ * misc/ruby-mode.el (ruby-calculate-indent): fix indentation of
+ argument lines in parentheses. [Bug #5140]
+
+Mon Dec 3 07:52:41 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser.rb: Improved modeline support. Patch by nobu.
+ * test/rdoc/test_rdoc_parser.rb: Test for above.
+
+Sun Dec 3 00:06:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): stop checking string
+ taintness. [Bug #5508] [ruby-core:40510]
+
+Sun Dec 2 19:26:47 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * thread.c (RB_GC_SAVE_MACHINE_CONTEXT, rb_gc_save_machine_context):
+ extract rb_gc_save_machine_context to RB_GC_SAVE_MACHINE_CONTEXT.
+ NOTE: machine_regs and machine_stack_end must be set in current scope.
+
+Sun Dec 2 18:46:24 2012 Koichi Sasada <ko1@atdot.net>
+
+ * array.c, enum.c, insns.def, io.c, numeric.c, parse.y, process.c,
+ range.c: use prepared IDs.
+ A patch from charliesome (Charlie Somerville).
+ [Bug #7495]
+
+ * common.mk: add dependency to id.h.
+
+ * common.mk: replace ID_H_INCLUDES with id.h.
+
+Sun Dec 2 16:48:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/weakref.rb (rdoc): Clean up usage, add example,
+ note ArgumentError on WeakRef.new
+
+Sun Dec 2 16:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * gc.c (WeakMap): Add doc for internal reference, use lib/weakref.rb
+
+Sun Dec 2 07:24:23 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser.rb: Parse files with a -*- rdoc -*- modeline
+ * test/rdoc/test_rdoc_parser.rb: Test for above
+
+Sun Dec 2 06:02:00 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * gc.h (SET_MACHINE_STACK_END): add volatile for preventing
+ harmful optimization. [ruby-dev:46665] [Bug #7468]
+
+Sun Dec 2 05:01:58 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (rb_iseq_line_trace_each): iterate `line' event only.
+
+ * test/ruby/test_iseq.rb: add a test for this change.
+
+Sun Dec 2 02:46:04 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: add TracePoint#inspect.
+
+ * test/ruby/test_settracefunc.rb: add a test for this change.
+
+Sat Dec 1 21:18:19 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_backtrace.rb: add a test for
+ Thread::Backtrace::Location#inspect.
+ BTW, tests for `caller_locations' are not enough.
+ Any volunteers are welcome.
+
+Sat Dec 1 21:06:58 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c (location_inspect_m): add
+ Thread::Backtrace::Location#inspect.
+ It same as loc_obj.to_s.inspect.
+
+Sat Dec 1 19:24:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_puts): recurse for the argument itself, not converted
+ array elements. [ruby-core:42444] [Bug #5986]
+
+Sat Dec 1 19:01:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object, r_object0): call private marshal methods.
+ [Feature #6539]
+
+Sat Dec 1 18:52:22 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/cleanup_command.rb: Fix cleanup command for
+ multiple gems. [ruby-trunk - #7481] by Kouhei Sutou
+ * test/rubygems/test_gem_commands_cleanup_command.rb: Test for above.
+ * lib/rubygems.rb: Autoload Gem::Source to prevent test failures
+
+Sat Dec 1 18:17:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (Init_Complex), time.c (Init_Time): make marshal methods
+ private. [Feature #6539]
+
+ * object.c (Init_Object): make remove_instance_variable public.
+ [Feature #6539]
+
+ * id.c (Init_id), template/id.h.tmpl: add initialize_{copy,clone,dup}
+ and respond_to_missing?.
+
+ * vm_method.c (rb_method_entry_make): make above methods private.
+ [Feature #6539]
+
+Sat Dec 1 16:40:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb: move ConditionVariable related test
+ into test/thread/test_cv.rb.
+ * test/thread/test_cv.rb: new file.
+ * test/thread/test_cv.rb (test_condvar_empty_signal): new tests.
+ * test/thread/test_cv.rb (test_condvar_empty_broadcast): ditto.
+
+Sat Dec 1 15:14:25 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb (test_cv_wait_deadlock): enable
+ cv deadlock test.
+
+Sat Dec 1 14:23:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (ConditionVariable): use hash instead of array for
+ @waiters.
+ * test/thread/test_queue.rb (test_sized_queue_and_wakeup): remove
+ a test because @waiters no longer have a chance to duplicated. Now it's
+ a hash.
+
+Sat Dec 1 17:16:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-electric.el (ruby-electric-curlies): use kill-region
+ instead of interactive command delete-backward-char.
+
+Sat Dec 1 17:12:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/inf-ruby.el (inferior-ruby-mode): fix the
+ compilation-shell-minor-mode configuration. a patch by
+ j2petkov (Jean-Christophe Petkovich) in [ruby-core:46518].
+ [Bug #6742]
+
+Sat Dec 1 15:05:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): use NAMLEN() to tell the length of d_name
+ instead of strlen(), which can access beyond the boundary.
+
+Sat Dec 1 13:48:13 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Don't add default gems to $LOAD_PATH
+ as they are already there.
+
+Sat Dec 1 12:22:17 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * re-added r38053 that is reverted by r38061. Problems by r38053
+ are resolved by r38096. r38096 removed GEM_SKIP configuration.
+
+ The below is ChangeLog of r38053:
+
+ * defs/default_gems: Add base directory column.
+
+ * tool/rbinstall.rb:
+ - Install .gemspecs of default gem to
+ #{GEM_HOME}/specifications/default/.
+ - Update files parameter of .gemspecs by relative path from
+ library directory.
+
+Sat Dec 1 11:09:12 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * variable.c (rb_class_path_no_cache): add a function to get the class
+ path without caching the computed path. Some classes are frozen, and
+ will raise an exception without this.
+
+ * probes.d (cmethod-entry, cmethod-return): separate cmethods from
+ regular methods to match set trace func.
+
+ * probes_helper.h: refactor macros. Fix probes to avoid calling
+ #inspect when profiling.
+
+ * insns.def: update for use with new macros.
+
+ * vm_eval.c: ditto
+
+ * vm_insnhelper.c: ditto
+
+ * test/dtrace/test_singleton_function.rb: fix test for new output.
+
+ * test/dtrace/test_cmethod.rb: test the cmethod probes.
+
+Sat Dec 1 09:44:16 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/rdoc/test_rdoc_options.rb: Windows drive letters are
+ case-insensitive.
+
+Sat Dec 1 09:42:13 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Search for gem deps file up the directory tree.
+ * test/rubygems/test_gem.rb: Test for above.
+
+Sat Dec 1 09:33:32 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/runner.rb: Set GEM_HOME, GEM_PATH and GEM_SKIP to empty set.
+ With default_gem support in RubyGems GEM_SKIP prevents loading of
+ built-in gems.
+
+Sat Dec 1 07:16:17 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * compile.c (ADD_CATCH_ENTRY): add a cast to fix SEGV with x64 mingw
+ on Windows 8. Without cast, 0 might be non zero value at higher bits
+ in rb_ary_new3().
+ [ruby-core:50258] [Bug #7456]
+
+Sat Dec 1 04:07:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (parser.utf8): remove unused property.
+
+ * parse.y (UTF8_ENC): remove unused macro.
+
+ * parse.y (parser_tokadd_utf8): use rb_utf8_encoding() directly.
+
+Sat Dec 1 03:49:45 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/sync.rb (Sync_m#sync_synchronize): add Thread.async_interrupt_timing
+ for protecting from async interrupt.
+ * lib/sync.rb (Sync_m#sync_lock): ditto.
+
+Sat Dec 1 03:38:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (ConditionVariable#broadcast): s/RuntimeError/StandardError/
+ * lib/thread.rb (ConditionVariable#signal): ditto.
+
+Sat Dec 1 03:29:52 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (SizedQueue#pop): rewrite by using ConditionVariable.
+ * lib/thread.rb (SizedQueue#push): ditto.
+ * lib/thread.rb (SizedQueue#max): ditto.
+ * lib/thread.rb (Queue#pop): ditto.
+ * lib/thread.rb (Queue#push): ditto.
+
+ * lib/thread.rb (SizedQueue#num_waiting): adopt the above changes.
+ * lib/thread.rb (SizedQueue#initialize): ditto.
+ * lib/thread.rb (Queue#num_waiting): ditto.
+ * lib/thread.rb (Queue#initialize): ditto.
+ * test/thread/test_queue.rb (test_sized_queue_and_wakeup): ditto.
+
+Sat Dec 1 03:45:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (Thread.async_interrupt_timing): fix RDoc.
+ :never is not used any more.
+
+Sat Dec 1 02:56:19 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c: add RubyVM::InstructionSequence (ISeq) inspection methods.
+ * ISeq#path returns path of this ISeq written.
+ * ISeq#absolute_path returns absolute path.
+ * ISeq#label returns label (method name and so on).
+ * ISeq#base_label returns base label (see Thread::Backtrace::Location).
+ * ISeq#first_lineno returns first line number of this ISeq.
+ * ISeq.of(obj) returns ISeq object which obj (Proc or Method)
+ is contains.
+
+ * test/ruby/test_iseq.rb: add tests.
+
+Sat Dec 1 02:58:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * include/ruby/ruby.h (rb_event_flag_t): Maintain integer precision
+ for clang error (VALUE aka unsigned long vs unsigned int)
+
+Sat Dec 1 02:53:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/test_gem_dependency_installer.rb: Use Gem.read_binary
+ instead of File.binread for ruby 1.8 compatibility in the rubygems
+ source repository. Updates r38075
+
+Sat Dec 1 02:33:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_threadptr_interrupt_mask, async_interrupt_timing_func):
+ merge into them into rb_thread_s_async_interrupt_timing.
+ * thread.c (rb_thread_s_async_interrupt_timing): ditto.
+
+Sat Dec 1 02:11:47 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_threadptr_interrupt_mask): add argument check.
+ * thread.c (async_interrupt_timing_arg_check_i): helper function
+ for the above.
+ * test/ruby/test_thread.rb (test_async_interrupt_timing_invalid_argument):
+ test for the above.
+
+Sat Dec 1 01:19:34 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (ConditionVariable#broadcast): protect from
+ async interrupt by using Thread.async_interrupt_timing.
+ * lib/thread.rb (ConditionVariable#signal): ditto.
+ * lib/thread.rb (ConditionVariable#wait): ditto.
+
+Sat Dec 1 02:04:23 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err):
+ raise if assert_in_out_err misused.
+
+Sat Dec 1 02:08:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_rubygems_hook.rb
+ (TestRDocRubygemsHook#test_setup_unwritable): 1. check the existence
+ of the file(directory) before touch it. 2. remove test
+ file(directory) after the test. see [ruby-core:50388].
+
+Sat Dec 1 01:51:06 2012 Koichi Sasada <ko1@atdot.net>
+
+ [EXPERIMENTAL]
+ * iseq.c: add following two methods.
+ * ISeq#line_trace_all returns all line traces (line numbers)
+ * ISeq#line_trace_specify(pos, set) set `pos'th line event to
+ specified_line event (if set is true).
+ These features are introduced for debuggers (mainly to make
+ breakpoint).
+
+ * iseq.h: add decl. of C APIs.
+
+ * test/ruby/test_iseq.rb: add tests.
+
+ * vm_trace.c: add `specified_line' event.
+
+ * include/ruby/ruby.h: ditto.
+
+Sat Dec 1 01:49:52 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_dependency_installer.rb: gems are of course
+ binary files, so use a binary reading method when reading it.
+ see [ruby-core:50388].
+
+Sat Dec 1 01:21:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/command.rb (Gem::Command#get_all_gem_names_and_versions):
+ who assumes that the pathname of a gem never contains ':' ?
+ yes, on Unixen pathnames can contain ':', and on Windows they almost
+ certainly contain ':'. see [ruby-core:50388].
+
+ * lib/rubygems/requirement.rb (Gem::Requirement::PATTERN_RAW): extract
+ the regexp to match the version specifier from PATTERN to use in
+ above method.
+
+Sat Dec 1 00:48:19 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/extconf.rb, ext/fiddle/function.c
+ (Fiddle::Function::STDCALL): FFI_STDCALL is not a macro, but an
+ enumeration. [ruby-core:50398] [Bug #7483]
+
+Sat Dec 1 00:08:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_installer.rb
+ (TestGemInstaller#test_check_executable_overwrite_other_non_gem):
+ on Windows, rubygems always generate a wrapper .bat file when
+ installing a file into bin, so testing no-overwrite a wrapper file
+ and a non-wrapper file is nonsense. see [ruby-core:50388].
+
+Fri Nov 30 23:39:58 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_installer.rb
+ (TestGemInstaller#test_check_executable_overwrite_default_bin_dir):
+ if the executable to be overwritten was generated by rubygems, the
+ error message differs from the only copied one's.
+ see [ruby-core:50388].
+
+Fri Nov 30 23:27:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_ext_ext_conf_builder.rb
+ (TestGemExtExtConfBuilder::test_class_make): reading with binary mode
+ of course introduce \r on Windows. see [ruby-core:50388].
+
+Fri Nov 30 23:11:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/specification.rb
+ (Gem::Specification.validate_permissions): don't check executability
+ of the source on Windows. they will be wrapped to .bat files when
+ installing. see [ruby-core:50388].
+
+Fri Nov 30 22:44:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (rb_vm_struct): add thread_destruct_lock field.
+ * thread.c (Init_Thread): ditto.
+ * thread.c (rb_vm_gvl_destroy): ditto.
+
+ * thread.c (thread_start_func_2): make sure vm->running_thread
+ don't point to dead thread.
+ * thread.c (timer_thread_function): close a race against thread
+ destruction. [Bug #4911][ruby-dev:43859]
+
+ * vm_core.h (rb_thread_set_current): reset running time of
+ current thread instead of previous thread. We no longer
+ assume previous running thread still live.
+
+Fri Nov 30 21:57:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * revert r38053 because it causes too many test failures.
+ if you've already installed r38053 or later, remove the installed
+ lib/ruby/gems/2.0.0 directory and reinstall this revision or later.
+
+Fri Nov 30 21:07:56 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit/parallel.rb (Test::Unit::Worker.run): wrap LoadError
+ because it's Gem::LoadError sometimes. see [Bug #6882]
+
+Fri Nov 30 20:47:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: TracePoint#self returns invoking/exiting thread object
+ at thread_begin/end event.
+
+ * test/ruby/test_settracefunc.rb: fix test.
+
+Fri Nov 30 19:55:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/memory_status.rb (Memory::Win32): use fiddle instead of dl,
+ but I doubt fiddle is not compatible with dl. (if you are interested,
+ see the diff.) [ruby-core:50194] [Bug #7443]
+
+Fri Nov 30 19:37:44 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * defs/default_gems: Add base directory column.
+
+ * tool/rbinstall.rb:
+ - Install .gemspecs of default gem to
+ #{GEM_HOME}/specifications/default/.
+ - Update files parameter of .gemspecs by relative path from
+ library directory.
+
+Fri Nov 30 19:30:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_trace.c:
+ tracepoint_attr_return_value (TracePoint#return_value):
+ include `:b_return` for method doc
+ tracepoint_enable_m, tracepoint_disable_m (#enable/#disable):
+ don't have block argument, document block scope
+
+Fri Nov 30 18:52:56 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (tracepoint_disable_m, tracepoint_enable_m):
+ fix block parameter.
+ No argument should be given to a block which is passed
+ to TracePoint#enable (and disable).
+
+Fri Nov 30 18:23:26 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: rename Thread.control_interrupt
+ to Thread.async_interrupt_timing.
+ The option name `:never' is also changed to `:defer'.
+ [ruby-core:50375] [ruby-trunk - Feature #6762]
+
+ * thread.c: remove Thread.check_interrupt.
+ This method is difficult to understand by name.
+
+ * thread.c: add Thread.async_interrupted?.
+ This method check any deferred async interrupts.
+
+ * test/ruby/test_thread.rb: change tests for above.
+
+Fri Nov 30 18:24:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_trace.c: Documentation for TracePoint API
+ [ruby-core:47243] [Feature #6895]
+
+Fri Nov 30 17:43:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_cmp_m): try to compare with to_str result if
+ possible before calling <=> method. [ruby-core:49279] [Bug #7342]
+
+ * string.c (rb_str_cmp_m): use rb_check_funcall instead of respond_to
+ and call.
+
+ * string.c (rb_str_cmp_m): return fixed value, one of -1,0,+1 always.
+
+Fri Nov 30 16:19:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): get rid of calling methods in sigsegv
+ handler. based on a patch by charliesome (Charlie Somerville)
+ [ruby-core:49573] [Bug #7402]
+
+Fri Nov 30 16:05:44 2012 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS: Added RubyGems 2.0.0
+
+Fri Nov 30 15:24:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): fix false usage of local variable, it cannot
+ appear in fname state [ruby-core:49659] [Bug #7408]
+
+Fri Nov 30 15:20:12 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb: Load YAML for building gems.
+ * test/rubygems/test_gem_commands_contents_command.rb: Sort expected
+ output of default gem contents. Re-fixes r38004 and r38005.
+
+Fri Nov 30 15:15:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_trace.c (set_trace_func): Formatting of params and events
+
+Fri Nov 30 14:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/net/http.rb: Net::HTTP::Patch to list of HTTP Request Classes
+ Patch by Ryunosuke SATO [Fixes #217 on github]
+
+Fri Nov 30 14:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/cgi.rb: CGI example for HTML generation
+ Patch by Marcus Stollsteimer [ruby-core:50303] [Bug #7465]
+
+Fri Nov 30 13:52:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * time.c: Documentation improvements, grammar and formatting
+ Patch by Bernd Homuth [ruby-core:49203] [Bug #7326]
+
+Fri Nov 30 13:48:33 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc.rb: Set version to 4.0.0.preview2
+ * lib/rubygems.rb: Set version to 2.0.0.preview2
+
+Fri Nov 30 13:11:53 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/setup_command.rb: Remove old files on install
+ of RubyGems. (not by rbinstall.rb).
+ * test/rubygems/test_gem_commands_setup_command.rb: Test for above.
+
+Fri Nov 30 12:47:59 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/abbrev.rb (Abbrev#abbrev): A fixed string prefix pattern
+ should only match the beginning of each word, not the beginning
+ of every line in it.
+
+ * lib/abbrev.rb (Abbrev#abbrev): Stop using a regexp that causes a
+ false warning. [Bug #7471]
+
+Fri Nov 30 12:30:55 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/test_abbrev.rb: Add tests for lib/abbrev.rb.
+
+Fri Nov 30 12:27:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/spec_fetcher.rb: Allow prerelease spec fetching to fail
+ for bundler.
+ * test/rubygems/test_gem_spec_fetcher.rb: Test for above.
+
+Fri Nov 30 12:20:53 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake/backtrace.rb: Removed duplication in
+ Rake::Backtrace::SUPPRESSED_PATHS
+ * test/rake/test_rake_backtrace.rb: Skip tests when tmpdir is in the
+ suppressed pattern.
+
+Fri Nov 30 11:07:45 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * revert r37993 to avoid SEGV in tests.
+
+Fri Nov 30 10:38:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/driver.rb: Relaxed matching for pages to be more
+ user-friendly.
+ * test/rdoc/test_rdoc_ri_driver.rb: Test for above.
+
+Fri Nov 30 09:50:16 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markdown.rb: Fixed warnings with -w
+
+Fri Nov 30 09:38:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_GC_GUARD_PTR): add note.
+
+ * vm_backtrace.c (backtrace_to_str_ary): use RB_GC_GUARD() instead of
+ RB_GC_GUARD_PTR() which has no effect.
+ (backtrace_to_location_ary): ditto.
+ (vm_backtrace_to_ary): ditto.
+
+Fri Nov 30 09:22:52 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/contents_command.rb: Sort output from command.
+ Replaces r38004, r38005
+ * test/rubygems/test_gem_commands_contents_command.rb: ditto.
+
+ * lib/rubygems/defaults.rb: Use Gem.path_separator for jruby support.
+ * lib/rubygems/path_support.rb: ditto
+
+Fri Nov 30 08:34:03 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generator/darkfish.rb: Silenced warning
+ * test/rdoc/test_rdoc_rdoc.rb: ditto
+
+ * lib/rdoc/markup/parser.rb: Use byteslice when available for
+ performance
+ * test/rdoc/test_rdoc_markup_parser.rb: Test for above
+ * lib/rdoc/test_case.rb: ditto
+
+ * lib/rdoc/parser/ruby.rb: Fixed bug parsing yield({})
+ * test/rdoc/test_rdoc_parser_ruby.rb (end):
+
+ * lib/rdoc/rubygems_hook.rb: Skip default gems. Display generator
+ name properly.
+ * test/rdoc/test_rdoc_rubygems_hook.rb: Test for above
+
+ * lib/rdoc/servlet.rb: Fixed typo.
+
+Fri Nov 30 08:09:56 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c : remove a unused function.
+
+Fri Nov 30 07:46:42 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (rb_objspace_call_finalizer): finalize_deferred may free up
+ a object which is reachable from a part after this function,
+ e.g. ruby_vm_destruct(). [ruby-dev:46647] [Bug #7452]
+
+ * test/ruby/test_gc.rb (test_finalizing_main_thread): add a test
+ for above.
+
+Fri Nov 30 07:43:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_interrupted): avoid warning of
+ implicit conversion.
+
+ * thread.c (rb_threadptr_execute_interrupts): ditto.
+
+Fri Nov 30 07:34:28 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: add GC guards.
+
+Fri Nov 30 07:21:33 2012 Koichi Sasada <ko1@atdot.net>
+
+ [EXPERIMENTAL: NEED DISCUSS]
+ * vm_trace.c: add events
+ * :thread_begin - hook at thread beginning.
+ * :thread_end - hook at thread ending.
+ * :b_call - hook at block enter.
+ * :b_return - hook at block leave.
+ This change slow down block invocation.
+ Please try and give us feedback until 2.0 code freeze.
+
+ * include/ruby/ruby.h: ditto.
+
+ * compile.c (rb_iseq_compile_node): ditto.
+
+ * insns.def: ditto.
+
+ * thread.c: ditto.
+
+ * vm.c: ditto.
+
+ * include/ruby/debug.h: add a comment.
+
+ * test/ruby/test_settracefunc.rb: add a tests.
+
+Fri Nov 30 06:56:30 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * test/minitest/*: Imported minitest 4.3.2 (r8027)
+
+Fri Nov 30 04:16:29 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake/*: Updated to rake 0.9.5
+ * test/rake/*: ditto.
+ * NEWS: ditto.
+
+Fri Nov 30 02:53:47 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * vm.c: add a return hook when a method raises an exception.
+
+ * probes_helper.h: look up klass and method if none are provided.
+
+ * eval.c: update macro usage.
+
+ * vm_eval.c: ditto.
+
+ * vm_insnhelper.c: ditto.
+
+ * test/dtrace/test_function_entry.rb: test for change.
+
+Fri Nov 30 02:27:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * compile.c (compile_array_): refix r37991 remove assertion:
+ it is true only if type == COMPILE_ARRAY_TYPE_HASH.
+ [ruby-dev:46658] [Bug #7466]
+
+ * vm.c (m_core_hash_from_ary): add assertion instead of above.
+
+ * vm.c (m_core_hash_merge_ary): ditto.
+
+Thu Nov 29 19:15:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (compile_array_): hash elements must be paired even for
+ literal elements. [ruby-dev:46658] [Bug #7466]
+
+Thu Nov 29 22:39:35 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/openssl/ossl_ssl.c (ssl_npn_encode_protocol_i): fix byte order
+ issue on big-endian architecture [ruby-core:50292] [Bug #7463]
+
+Thu Nov 29 22:23:31 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/openssl/test_cipher.rb (test_ctr_if_exists): add CTR mode test
+ if underlying OpenSSL supports it. See #4408
+
+Thu Nov 29 21:42:16 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_method_entry_make): add a method entry with
+ VM_METHOD_TYPE_REFINED to the class refined by the refinement if
+ the target module is a refinement. When a method entry with
+ VM_METHOD_TYPE_UNDEF is invoked by vm_call_method(), a method with
+ the same name is searched in refinements. If such a method is
+ found, the method is invoked. Otherwise, the original method in
+ the refined class (rb_method_definition_t::body.orig_def) is
+ invoked. This change is made to simplify the normal method lookup
+ and to improve the performance of normal method calls.
+
+ * vm_method.c (EXPR1, search_method, rb_method_entry),
+ vm_eval.c (rb_call0, rb_search_method_entry): do not use
+ refinements for method lookup.
+
+ * vm_insnhelper.c (vm_call_method): search methods in refinements if
+ ci->me is VM_METHOD_TYPE_REFINED. If the method is called by
+ super (i.e., ci->call == vm_call_super_method), skip the same
+ method entry as the current method to avoid infinite call of the
+ same method.
+
+ * class.c (include_modules_at): add a refined method entry for each
+ method defined in a module included in a refinement.
+
+ * class.c (rb_prepend_module): set an empty table to
+ RCLASS_M_TBL(klass) to add refined method entries, because
+ refinements should have priority over prepended modules.
+
+ * proc.c (mnew): use rb_method_entry_with_refinements() to get
+ a refined method.
+
+ * test/ruby/test_refinement.rb (test_inline_method_cache): do not skip
+ the test because it should pass successfully.
+
+ * test/ruby/test_refinement.rb (test_redefine_refined_method): new
+ test for the case a refined method is redefined.
+
+Thu Nov 29 17:45:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_const_set): show namespace in warning messages.
+ [Feature #7190]
+
+Thu Nov 29 17:31:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems.rb (Gem.load_yaml): return if Kernel#gem is not defined
+ yet. This causes crash if test-all requires libraries in a certain
+ order. A simple reproducible code is
+ ruby --disable-gem -e'require"yaml";require"minitest/autorun"'
+
+Thu Nov 29 17:19:26 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/tracer.rb: Updated to match removal of custom_require from
+ RubyGems.
+ * test/test_tracer.rb: ditto. Improved failure message if the test
+ fails
+
+Thu Nov 29 17:15:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * gc.c: Documentation for GC, GC::Profiler, ObjectSpace, and
+ ObjectSpace::WeakMap [ruby-core:50245] [Bug #7449]
+
+Thu Nov 29 17:12:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/generic_erb.rb, tool/id2token.rb: add --path-separator option
+ for mingw where make and built ruby live in different world.
+
+ * tool/vpath.rb: extract from tool/instruction.rb.
+
+Thu Nov 29 17:11:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/io/wait/test_io_wait.rb (TestIOWait#fill_pipe):
+ Errno::EWOULDBLOCK may not be the same as Errno::EAGAIN. patch by
+ phasis68 (Heesob Park) at [ruby-core:49894]. [Bug #7420]
+
+Thu Nov 29 17:03:38 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/test_case.rb: Determine path to certificates to avoid
+ build-dir problems.
+ * test/rubygems/test_gem_security_signer.rb: Use predetermined paths
+ to avoid build-dir problems.
+
+Thu Nov 29 16:18:14 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/test_case.rb: Disable loading of keys and certificates
+ outside rubygems or ruby tests as the files are not available (or
+ necessary).
+
+Thu Nov 29 16:14:41 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c (rb_debug_inspector_open): use RARRAY_LENINT() for
+ int variable.
+
+Thu Nov 29 15:59:55 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h: add rb_debug_inspector_* APIs.
+
+ * vm_backtrace.c: ditto.
+
+ * common.mk: add dependency from vm_backtrace.o to
+ include/ruby/debug.h.
+
+ * proc.c (rb_binding_new_with_cfp): constify.
+
+ * vm.c (rb_vm_get_ruby_level_next_cfp): constify.
+
+ * vm_core.h, vm_trace.c: move decls.
+
+Thu Nov 29 15:56:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/test_case.rb (RDoc::TestCase#verbose_capture_io):
+ defined for asserts of warnings.
+
+ * test/rdoc: use verbose_capture_io on asserts of warnings.
+ they failed when tests was run with RUBYOPT=-W0.
+
+Thu Nov 29 15:53:38 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/psych/extconf.rb: added --enable-bundled-libyaml option. this
+ enforces using bundled libyaml.
+
+Thu Nov 29 15:51:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Updated to RubyGems 2.0
+ * test/rubygems*: ditto.
+
+ * common.mk (prelude): Updated for RubyGems 2.0 source rearrangement.
+
+ * tool/change_maker.rb: Allow invalid UTF-8 characters in source
+ files.
+
+Thu Nov 29 15:38:14 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h: provide rb_tracearg_*() APIs,
+ instead of rb_tracepoint_attr_*().
+ These APIs are for debuggers/profilers.
+ They will be explained in another docs sometime.
+
+ * vm_trace.c: ditto.
+
+Thu Nov 29 15:10:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/minitest/test_minitest_unit.rb: restore orig_verbose only
+ if it is set. This broke rdoc's tests.
+ http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20121129T050102Z.diff.html.gz
+
+Thu Nov 29 14:56:30 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_tracepoint_attr_method_id):
+ rename TracePoint#id to TracePoint#method_id.
+
+ * include/ruby/debug.h: ditto.
+
+ * test/ruby/test_settracefunc.rb: ditto,
+
+Thu Nov 29 14:49:10 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_tracepoint_attr_defined_class):
+ rename TracePoint#klass to TracePoint#defined_class.
+ [ruby-core:50187] Re: [ruby-trunk - Feature #6895]
+
+ * include/ruby/debug.h: ditto.
+
+ * test/ruby/test_settracefunc.rb: ditto.
+
+Thu Nov 29 14:27:57 2012 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stat): prepare Symbol objects at first time
+ to make it fast.
+
+Thu Nov 29 14:02:15 2012 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stat): GC.stat supports new information
+ * total_allocated_object: total allocated object number.
+ * total_freed_object: total freed object number.
+ Above two numbers are only accumulated and they will
+ overflow (return to 0). Please use them as a hint.
+
+Thu Nov 29 12:13:54 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 4.3.2 (r8026)
+ * test/minitest/*: ditto
+
+Thu Nov 29 11:06:06 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_start_func_2): remove unused code. When
+ th->safe_level == 4, th->errinfo never be thrown. So, to
+ create new exception makes no sense.
+
+Thu Nov 29 10:29:53 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: same as a last patch.
+
+Thu Nov 29 10:24:25 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: use `long' for return values of `NUM2LONG()'.
+
+Thu Nov 29 09:52:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (do_select): suppress warning (uninitialized value warning)
+ with UNINITIALIZED_VAR().
+
+Thu Nov 29 09:36:09 2012 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (ruby_cleanup): delay THREAD_KILLED timing.
+ It should be located just before rb_thread_terminate_all().
+
+Thu Nov 29 09:10:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c (vm_backtrace_to_ary): support range argument
+ like Array#[].
+ [ruby-core:50092] [ruby-trunk - Feature #7434]
+ Test and document is not available. Please help us.
+
+Thu Nov 29 06:46:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_start_func_2): small cleanups.
+
+Thu Nov 29 06:37:08 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_start_func_2): remove unused code.
+ this function never be used for main thread.
+
+Thu Nov 29 06:27:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_start_func_2): remove unused code.
+ errinfo = th->errinfo; and errinfo = rb_errinfo(); are
+ the same.
+
+Thu Nov 29 05:26:32 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c (backtrace_to_str_ary2): rename to backtrace_to_str_ary.
+
+ * vm_backtrace.c (rb_backtrace_to_str_ary): use `backtrace_to_str_ary()'.
+
+ * vm_backtrace.c (backtrace_to_frame_ary): rename to
+ backtrace_to_location_ary.
+
+Thu Nov 29 05:19:25 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * probes.d: Change function-entry probe to method-entry.
+ * insns.def: ditto
+ * probes_helper.h: ditto
+ * test/dtrace/test_function_entry.rb: ditto
+ * test/dtrace/test_singleton_function.rb: ditto
+ * vm.c: ditto
+ * vm_eval.c: ditto
+ * vm_insnhelper.c: ditto
+
+Thu Nov 29 04:45:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: rename Class name from
+ ::RubyVM::Backtrace and ::RubyVM::Backtrace::Location
+ to ::Thread::Backtrace and ::Thread::Backtrace::Location.
+
+Wed Nov 28 23:52:02 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * NEWS (Thread) remove incompatible changes about trap.
+
+Wed Nov 28 23:39:01 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_mutex_sleep): fix to allow spurious wakeup.
+ [ruby-dev:46654] [ruby-trunk - Bug #7455]
+
+ * NEWS: write about spurious wakeup.
+
+Wed Nov 28 22:57:23 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread_win32.c: catch up latest change of BLOCKING_REGION.
+
+Wed Nov 28 22:54:21 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): fix undefined behavior.
+ Should not access scope local variable from outer scope.
+
+Wed Nov 28 22:20:55 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * test/ruby/test_thread.rb (test_thread_status_in_trap): change test for
+ thread status in trap. now can accept Thread#join and Thread#value in trap.
+
+Wed Nov 28 21:58:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/thread.h (rb_thread_call_without_gvl2): change
+ meaning of function.
+ This function is called with same parameters of
+ `rb_thread_call_without_gvl()'.
+ However, if interrupts are detected, then return immediately.
+
+ * thread.c: implement `rb_thread_call_without_gvl2()'.
+
+Wed Nov 28 21:31:21 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * thread.c (thread_join_sleep): check spurious wakeup by itself for
+ corresponding status change in trap context.
+ * vm_core.h (struct rb_thread_struct): add rb_thread_list_t and use as join_list for
+ reentry by trap context.
+ * thread.c (thread_start_func_2): ditto.
+ * thread.c (remove_from_join_list): ditto.
+ * thread.c (rb_thread_atfork): ditto.
+ * thread.c (thread_join): ditto. & remove trap handler check.
+ * thread.c (sleep_forever): add argument : spurious_check.
+ * thread.c (sleep_timeval): ditto.
+ * thread.c (rb_thread_sleep_forever): set spurious_check.
+ * thread.c (rb_thread_sleep_deadly): ditto.
+ * thread.c (sleep_for_polling): ditto.
+ * thread.c (rb_thread_wait_for): ditto.
+ * thread.c (sleep_wait_for_interrupt): bypass spurious_check.
+
+Wed Nov 28 21:23:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/psych/yaml/emitter.c (yaml_emitter_write_indicator): constify.
+
+ * ext/psych/yaml/emitter.c (yaml_emitter_write_block_scalar_hints):
+ ditto.
+
+ * ext/psych/extconf.rb: mingw32 also needs macros for win32, not
+ only mswin32.
+
+ * ext/psych/extconf.rb: compile sources in the source directory
+ without copying by using VPATH.
+
+Wed Nov 28 21:18:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#each_compile_rules): splat $(*VPATH*) for
+ each VPATH elements.
+
+Wed Nov 28 16:40:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (enum rb_thread_status): remove THREAD_TO_KILL
+ * vm_core.h (struct rb_thread_struct): add to_kill field
+ * thread.c (terminate_i): convert THREAD_TO_KILL to to_kill.
+ * thread.c (rb_threadptr_to_kill): ditto.
+ * thread.c (rb_thread_kill): ditto.
+ * thread.c (rb_thread_wakeup_alive): ditto.
+ * thread.c (thread_list_i): ditto.
+ * thread.c (static const char): ditto.
+ * thread.c (thread_status_name): ditto.
+ * thread.c (rb_thread_status): ditto.
+ * thread.c (rb_thread_inspect): ditto.
+ * vm_backtrace.c (thread_backtrace_to_ary): ditto.
+
+ * thread.c (rb_threadptr_execute_interrupts): fix thread status
+ overwritten issue. [Bug #7450] [ruby-core:50249]
+
+ * test/ruby/test_thread.rb (test_hread_status_raise_after_kill):
+ test for the above.
+ * test/ruby/test_thread.rb (test_thread_status_in_trap): test for
+ thread status in trap.
+ * test/ruby/test_thread.rb (test_status_and_stop_p): remove
+ Thread.control_interrupt unsafe test. Thread#kill no longer
+ changes thread status. Instead of, Thread#kill receiver changes
+ their own status when receiving kill signal.
+
+Wed Nov 28 16:21:46 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (struct rb_mutex_struct): add allow_trap field.
+ * internal.h (rb_mutex_allow_trap): added.
+ * thread.c (rb_mutex_lock, rb_mutex_unlock): check mutex->allow_trap.
+ * thread.c (mutex_sleep): remove trap check because it uses
+ rb_mutex_lock and rb_mutex_unlock internally.
+ * thread.c (rb_mutex_allow_trap): new helper function for the above.
+
+ * io.c (io_binwrite): mark fptr->write_lock as writable in trap.
+
+ * test/ruby/test_signal.rb (test_trap_puts): test for the above.
+
+Wed Nov 28 16:59:12 2012 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c: remove Proc#== and Proc#eql?.
+ Proc objects compared with their object ids.
+ [Bug #4559]
+
+ * test/ruby/test_proc.rb: remove related test.
+
+Wed Nov 28 16:41:04 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/servlet.rb: Add support for serving documentation from a
+ subdirectory.
+ * lib/rdoc/generator/darkfish.rb: ditto
+ * test/rdoc/test_rdoc_servlet.rb: Test for above
+ * test/rdoc/test_rdoc_servlet.rb: ditto
+
+Wed Nov 28 15:37:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: fix r37924: run only on i[3-6]86-linux.
+
+Wed Nov 28 15:31:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (FMODE_SYNCWRITE): removed unused macro.
+
+Wed Nov 28 15:19:25 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * configure.in: revert r37911, r37906 and r37904 which break build
+ with non-gcc and/or non-IA32 compilers, e.g. Solaris Studio,
+ Fujitsu C Compiler. [ruby-dev:46646] [Bug #7451]
+
+Wed Nov 28 14:50:55 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/psych/extconf.rb: copy sources into build directory,
+ not into srcdir.
+
+Wed Nov 28 14:34:06 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_lock): moved trap context check from
+ rb_mutex_trylock because try_lock have no change to make
+ a deadlock.
+ * thread.c (rb_mutex_trylock): ditto.
+ * NEWS: news for the above.
+
+Wed Nov 28 13:39:54 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_s_new): uses main_thread->status instead of
+ th->inhibit_thread_creation for preventing thread creation.
+ * vm_core.h (rb_vm_struct): remove inhibit_thread_creation field.
+ * thread.c (rb_thread_terminate_all): ditto.
+
+Wed Nov 28 13:27:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/extconf.rb: use embedded libyaml if no system libyaml is
+ found. [ruby-core:49463]
+ * ext/psych/lib/psych.rb: updating to psych 2.0.0
+ * ext/psych/lib/psych/deprecated.rb: updated docs
+ * ext/psych/psych.gemspec: updated to psych 2.0.0
+ * ext/psych/psych.h: fixing header file include for rename
+ * ext/psych/psych_emitter.c: renamed to avoid libyaml conflict.
+ * ext/psych/psych_emitter.h: ditto
+ * ext/psych/psych_parser.c: ditto
+ * ext/psych/psych_parser.h: ditto
+ * ext/psych/psych_to_ruby.c: ditto
+ * ext/psych/psych_to_ruby.h: ditto
+ * ext/psych/psych_yaml_tree.c: ditto
+ * ext/psych/psych_yaml_tree.h: ditto
+ * ext/psych/yaml/LICENSE: embedding libyaml 0.1.4
+ * ext/psych/yaml/api.c: ditto
+ * ext/psych/yaml/config.h: ditto
+ * ext/psych/yaml/dumper.c: ditto
+ * ext/psych/yaml/emitter.c: ditto
+ * ext/psych/yaml/loader.c: ditto
+ * ext/psych/yaml/parser.c: ditto
+ * ext/psych/yaml/reader.c: ditto
+ * ext/psych/yaml/scanner.c: ditto
+ * ext/psych/yaml/writer.c: ditto
+ * ext/psych/yaml/yaml.h: ditto
+ * ext/psych/yaml/yaml_private.h: ditto
+
+Wed Nov 28 12:54:59 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_join): A trap handler check was moved from
+ thread_join_m because Thread#value should be raised an exception
+ too.
+ * thread.c (thread_join_m): remove trap handler check.
+ * test/ruby/test_thread.rb (test_thread_join_in_trap): add test
+ for thread#value.
+ * NEWS: documentation fix for the above.
+
+Wed Nov 28 11:07:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/fiddle/closure.c: Documentation for Fiddle
+ * ext/fiddle/lib/fiddle/import.rb: ditto
+ * ext/fiddle/lib/fiddle/value.rb: ditto
+ * ext/fiddle/lib/fiddle/pack.rb: ditto
+ * ext/fiddle/lib/fiddle/cparser.rb: ditto
+ * ext/fiddle/lib/fiddle/struct.rb: ditto
+ * ext/fiddle/lib/fiddle/function.rb: ditto
+
+Wed Nov 28 09:15:51 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * ext/strscan/strscan.c: Added #charpos for multibyte string position.
+ * test/strscan/test_stringscanner.rb: ditto
+
+Wed Nov 28 09:00:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/fiddle.c: adding alignment constants for compatibility
+ with DL.
+ * ext/fiddle/fiddle.h: ditto
+ * ext/fiddle/lib/fiddle/cparser.rb: importing the C parser for DL
+ backwards compatibility.
+ * ext/fiddle/lib/fiddle/import.rb: importing the import DSL for DL
+ backwards compatibility.
+ * ext/fiddle/lib/fiddle/pack.rb: importing structure pack for DL
+ backwards compatibility.
+ * ext/fiddle/lib/fiddle/value.rb: ditto
+ * ext/fiddle/lib/fiddle/struct.rb: importing struct DSL for DL backwards
+ compatibility.
+ * test/dl/test_c_struct_entry.rb: importing tests
+ * test/dl/test_c_union_entity.rb: ditto
+ * test/dl/test_cparser.rb: ditto
+ * test/dl/test_import.rb: ditto
+ * test/fiddle/test_c_struct_entry.rb: ditto
+ * test/fiddle/test_c_union_entity.rb: ditto
+ * test/fiddle/test_cparser.rb: ditto
+ * test/fiddle/test_import.rb: ditto
+
+Wed Nov 28 08:56:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/globals.rdoc: Add documentation file for magic globals
+ [ruby-core:29048] [Bug #3022]
+
+Wed Nov 28 08:55:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * .document: Add README's to be included with docs
+
+Wed Nov 28 08:26:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/dl/lib/dl.rb: Deprecation notice for DL
+
+Wed Nov 28 08:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/fiddle/closure.c: Documentation for Fiddle
+ * ext/fiddle/pointer.c: ditto
+ * ext/fiddle/function.c: ditto
+ * ext/fiddle/lib/fiddle.rb: ditto
+ * ext/fiddle/fiddle.c: ditto
+ * ext/fiddle/handle.c: ditto
+
+Wed Nov 28 04:53:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/handle.c: Make Fiddle independent of DL, copy DL::Handle
+ to Fiddle::Handle.
+ * ext/fiddle/pointer.c: Make Fiddle independent of DL, copy
+ DL::Pointer to Fiddle::Pointer.
+ * test/fiddle/test_func.rb: relevant tests
+ * test/fiddle/test_handle.rb: ditto
+ * test/fiddle/test_pointer.rb: ditto
+ * ext/dl/lib/dl/struct.rb: use Fiddle::Pointer if available
+ * ext/fiddle/extconf.rb: check for dlfcn.h
+ * ext/fiddle/fiddle.c: add constants for sizeof() things
+ * ext/fiddle/fiddle.h: include dlfcn.h
+ * ext/fiddle/function.c: expose a C function for creating new
+ Fiddle::Function objects.
+ * ext/fiddle/lib/fiddle.rb: include constants for dl backwards compat
+ * ext/fiddle/lib/fiddle/function.rb: read the pointer from the
+ function for dl backwards compat.
+ * test/dl/test_callback.rb: check the addresses of the pointers rather
+ than their types.
+ * test/fiddle/helper.rb: remove dependency on dl
+ * test/fiddle/test_closure.rb: ditto
+ * test/fiddle/test_fiddle.rb: ditto
+
+Wed Nov 28 03:03:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (opt-dir): don't use non portable flag -E of sed.
+
+Wed Nov 28 02:55:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (ARCH_FLAG): __sync_val_compare_and_swap_4 needs
+ -march=$target_cpu on at least linux gcc 4.1.
+ patched by KOSAKI Motohiro
+
+Tue Nov 27 22:03:09 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (rb_str_enumerate_chars, rb_str_enumerate_codepoints)
+ (rb_str_enumerate_lines): Dummy initialization of ary has been
+ replaced with UNINITIALIZED_VAR().
+
+Tue Nov 27 21:29:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c (bigdivrem): optimize the way to retry calculation of
+ bigdivrem so that the calculation is started from the point where
+ the last interruption was occurred.
+
+ * bignum.c (bigdivrem1): ditto.
+
+ * test/ruby/test_bignum.rb: add a test case for rb_bigdivrem in the
+ case that an interruption is occurred during bigdivrem1 is running.
+
+Tue Nov 27 19:56:43 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (rb_vm_make_env_object): make Proc object if Env is possible
+ to point block.
+ [ruby-core:41038] [ruby-trunk - Bug #5634]
+
+ * vm.c (rb_vm_make_proc): No need to make Proc object here.
+
+ * bootstraptest/test_proc.rb: add tests.
+
+Tue Nov 27 18:51:06 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ruby_atomic.h (ATOMIC_CAS): added for Solaris and other platforms.
+ * ruby_atomic.h, signal.c (NEED_RUBY_ATOMIC_OPS): renamed from
+ NEED_RUBY_ATOMIC_EXCHANGE.
+ * signal.c (ruby_atomic_compare_and_swap): naive, non-atomic
+ compare-and-swap implementation only used for platforms without
+ valid support for atomic operations.
+
+Tue Nov 27 17:43:46 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/*: Added --root option for building documentation outside
+ the source directory.
+ * test/rdoc/*: ditto
+ * common.mk (rdoc): Added --root to rdoc rule
+
+Tue Nov 27 16:24:45 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/rdoc/test_rdoc_ri_paths.rb: Fixed duplicate path bug which
+ caused windows failures.
+
+Tue Nov 27 16:06:00 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/rdoc/test_rdoc_generator_darkfish.rb: Updated tests for windows
+ * test/rdoc/test_rdoc_options.rb: ditto
+ * test/rdoc/test_rdoc_parser.rb: ditto
+ * test/rdoc/test_rdoc_rdoc.rb: ditto
+ * test/rdoc/test_rdoc_ri_driver.rb: ditto
+ * test/rdoc/test_rdoc_servlet.rb: ditto
+
+Tue Nov 27 15:13:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * common.mk (rdoc): Set --debug for rdoc generation in case of bugs
+
+Tue Nov 27 14:56:45 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/rubygems_hook.rb: Updated for (upcoming) RubyGems 2
+ import.
+ * test/rdoc/test_rdoc_rubygems_hook.rb: ditto
+
+Tue Nov 27 13:59:29 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * NEWS: add improvements of the garbage collector.
+
+Tue Nov 27 13:27:46 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Updated to RDoc 4.0 (pre-release)
+ * bin/rdoc: ditto
+ * test/rdoc*: ditto
+ * NEWS: Updated with RDoc 4.0 information
+
+Tue Nov 27 12:17:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_terminate_all): retry broadcast only when
+ an exception is raised.
+
+Tue Nov 27 12:02:25 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_terminate_all): broadcast terminate event
+ not only an interrupt exception but any exceptions.
+
+Tue Nov 27 10:55:09 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * eval.c (ruby_cleanup): set thread status to THREAD_KILLED
+ for preventing thr.raise.
+ * test/ruby/test_thread.rb (test_main_thread_status_at_exit):
+ test for the above.
+
+Tue Nov 27 10:31:29 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_terminate_all): suppress a warning.
+
+Tue Nov 27 09:29:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_join): raises ThreadError if target thread
+ is a main thread.
+ * test/ruby/test_thread.rb (test_thread_join_main_thread):
+ test for the above.
+ * NEWS: news for the above.
+
+Tue Nov 27 09:24:47 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_join): raises ThreadError if target thread
+ is a current thread.
+ * test/ruby/test_thread.rb (test_thread_join_current):
+ test for the above.
+ * NEWS: news for the above.
+
+Tue Nov 27 09:59:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): close mkmf.log for each libraries so that
+ failure messages are not mixed.
+
+Tue Nov 27 09:58:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/*/extconf.rb, ext/openssl/extconf.rb: get git rid of
+ post-1.8 feature require_relative for cross compilation.
+ [ruby-core:50160] [Bug #7439]
+
+Tue Nov 27 09:17:59 2012 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: add TracePoint.
+
+Tue Nov 27 08:16:03 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: rename TracePoint#file and TracePoint#line
+ to TracePoint#path and TracePoint#lineno respectively.
+ They are consistent to RubyVM::Backtrace::Location.
+
+ * include/ruby/debug.h: ditto.
+
+ * vm_core.h: ditto.
+
+ * test/ruby/test_settracefunc.rb: ditto.
+
+Tue Nov 27 08:04:26 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_terminate_all): broadcast eTerminateSignal
+ again when Ctrl-C was pressed. [Feature #1952] [ruby-dev:39107]
+
+Tue Nov 27 07:58:03 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: add members to rb_trace_arg_t:
+ * `klass_solved' represents klass and id is checked.
+ * `line' represents line calculated from cfp.
+ * `file' represents line calculated from cfp.
+
+ * vm_trace.c: fix to use above data structures.
+ No need to calculate klass and id, line and file
+ pairs for each trace points.
+
+Tue Nov 27 07:47:09 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_terminate_all): add RUBY_VM_CHECK_INTS_BLOCKING().
+ Otherwise the loop in this function behave as busy loop because
+ native_sleep() return immediately when RUBY_VM_INTERRUPTED() is true.
+
+Tue Nov 27 04:12:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): git rid of post-1.8 features for cross
+ compilation. [ruby-core:50160] [Bug #7439]
+
+Tue Nov 27 00:13:41 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_trylock, rb_mutex_unlock, mutex_sleep):
+ raises ThreadError if called from trap handler as Thread#join.
+ * NEWS: news for the above.
+
+Mon Nov 26 23:55:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * NEWS: update for Thread#join incompatible change.
+
+Mon Nov 26 22:44:24 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_terminate_all): use native_sleep() instead
+ of rb_thread_schedule(). Otherwise, it consume 100% cpu meaninglessly.
+ [Bug #5368] [ruby-dev:44546]
+ * thread.c (thread_start_func_2): last sub-thread wakes up main thread.
+
+Mon Nov 26 21:16:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (RUBY_VM_SET_TIMER_INTERRUPT, RUBY_VM_SET_INTERRUPT)
+ (RUBY_VM_SET_FINALIZER_INTERRUPT, RUBY_VM_SET_TRAP_INTERRUPT)
+ (RUBY_VM_INTERRUPTED): use enum symbol instead of immediate value.
+ * thread.c (thread_join_m, rb_threadptr_execute_interrupts): ditto.
+ * signal.c (signal_exec): ditto.
+
+Mon Nov 26 20:23:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_join_m): use th->interrupt_mask instead of
+ th->in_trap.
+
+ * vm_core.h (struct rb_thread_struct): remove in_trap member.
+ * signal.c (signal_exec): ditto.
+ * thread.c (thread_create_core): ditto.
+ * thread.c (Init_Thread): ditto.
+
+Mon Nov 26 20:23:49 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_argf.rb (TestArgf#test_chars): since marshal data is
+ binary, shouldn't pass via text mode. use base64 encoded data.
+
+Mon Nov 26 19:45:18 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ruby_atomic.h (ATOMIC_CAS): new macro for compare-and-exchange.
+
+ * vm_core.h (struct rb_thread_struct): add interrupt_mask member.
+ * thread.c (thread_create_core, Init_Thread): initialize
+ th->thread_mask.
+
+ * vm_core.h (RUBY_VM_INTERRUPTED_ANY): new macro for avoiding
+ bare th->interrupt_flag.
+ * vm_core.h (RUBY_VM_INTERRUPTED, RUBY_VM_INTERRUPTED): check
+ th->interrupt_mask.
+ * thread.c (set_unblock_function, rb_thread_schedule): replace
+ th->interrupt_flag with RUBY_VM_INTERRUPTED_ANY()
+
+ * signal.c (signal_exec): set up thread->interrupt_mask for
+ preventing recursive trap handler.
+ * vm_core.h (RUBY_VM_CHECK_INTS, RUBY_VM_CHECK_INTS_BLOCKING): ditto.
+
+ * thread.c (rb_threadptr_execute_interrupts):
+ don't process interrupt if it is masked.
+ [Bug #6009] [ruby-core:42524]
+
+Mon Nov 26 19:43:42 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (make_compile_option_value): add trace_instruction option.
+ a patch by davidbalbert (David Albert).
+ [Bug #6786]
+
+Mon Nov 26 19:10:53 2012 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_thread.rb: try to `join' each 100
+ threads.
+ This benchmark seems consuming long time on travis-ci
+ several times (and make `failure').
+
+Mon Nov 26 18:22:56 2012 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: specify label `built-ruby'.
+
+ * benchmark/driver.rb: quote path.
+
+Mon Nov 26 18:26:28 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (signal_exec): add volatile to make sure setjmp safe.
+
+Mon Nov 26 18:19:47 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (signal_exec): suppress "warning: variable 'signum'
+ might be clobbered by 'longjmp' or 'vfork'" warning.
+
+Mon Nov 26 18:15:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: accept multiple `-e'.
+ You don't need to use `;' separation character.
+ [ruby-core:50139] [ruby-trunk - Bug #7380]
+
+Mon Nov 26 17:10:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * string.c (rb_str_enumerate_chars, rb_str_enumerate_codepoints)
+ (rb_str_enumerate_lines): suppress "may be used uninitialized in
+ this function" warning.
+
+Mon Nov 26 17:00:12 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (rb_thread_struct): added 'in_trap' member for marking
+ running trap handler.
+ * signal.c (signal_exec): turn on in_trap when running trap.
+ * thread.c (Init_Thread, thread_create_core): initialize in_trap
+ when creating new threads.
+ * thread.c (thread_join_m): raise ThreadError when running trap
+ handler.Bug [#6416][ruby-core:44956]
+ * test/ruby/test_thread.rb (test_thread_join_in_trap): new test
+ for the above.
+
+Mon Nov 26 16:36:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (argf_each_codepoint): add missing ARGF#codepoints [Bug #7438]
+
+Mon Nov 26 15:50:29 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c (bigdivrem): restart calculation when bigdivrem1 was
+ interrupted by signal. Otherwise, ruby script may see a garbage
+ value.
+
+Mon Nov 26 15:33:02 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c (big_div_struct): added volatile to 'stop' member.
+ Otherwise, "if (bds->stop)" check in bigdivrem1 don't read
+ memory and ignore interrupt.
+ * bignum.c (bigdivrem, rb_big_stop): ditto.
+
+Mon Nov 26 12:11:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (DLNOBJ): missing in r37821.
+
+Mon Nov 26 10:50:19 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_process.rb (test_setsid): added a few wait for
+ preventing that Process.getsid(io.pid) makes Errno::ESRCH.
+
+Sun Nov 25 22:34:00 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * array.c (ary_resize_smaller): new function to resize array.
+
+ * array.c (rb_ary_delete): refactoring to extract a function.
+
+ * array.c (rb_ary_delete_same): refactoring.
+ It renames function, reduces duplicated code and removes unused
+ code.
+
+ * gc.c (wmap_final_func): follow the above change.
+
+ * internal.h (rb_ary_delete_same): ditto.
+
+Sun Nov 25 22:27:33 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * array.c: fixes for the updated documentation in r35858:
+ Typos and #take/#drop accept to take/drop 0 elements.
+
+Sun Nov 25 19:43:29 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * NEWS: add a news about iconv.
+
+Sun Nov 25 03:49:23 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb, test/test_set.rb: Move tests embedded in lib/set.rb
+ to test/test_set.rb.
+
+Sun Nov 25 03:44:50 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (rb_str_each_line, rb_str_lines): String#lines now
+ returns an array instead of an enumerator. Passing a block is
+ deprecated but still supported for backwards compatibility.
+ Based on the patch by yhara. [Feature #6670]
+
+ * string.c (rb_str_each_char, rb_str_chars): Ditto for
+ String#chars.
+
+ * string.c (rb_str_each_codepoint, rb_str_codepoints): Ditto for
+ String#codepoints.
+
+ * string.c (rb_str_each_byte, rb_str_bytes): Ditto for
+ String#bytes.
+
+ * NEWS: Add notes for the above changes.
+
+Sun Nov 25 02:07:37 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_warning)
+ (Test::Unit::Assertions#assert_warn), test/ruby/envutil.rb,
+ test/ruby/test_enumerator.rb, test/ruby/test_io_m17n.rb,
+ test/ruby/test_regexp.rb, test/ruby/test_syntax.rb:
+ assert_warn() and assert_warning() are reversed.
+
+Sat Nov 24 21:08:50 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * gc.c (wmap_final_func): rename variables to clarify the meaning.
+ In wmap2obj the key is WeakRef and the value is referenced object.
+ In obj2wmap the key is referenced object and the value is an array
+ of WeakRef.
+
+ * gc.c (wmap_finalize): ditto.
+ [ruby-core:49044] [Bug #7304]
+
+Sat Nov 24 21:01:55 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * array.c (rb_ary_delete_same_obj): new function for WeakRef.
+ This deletes same objects as item argument in the array.
+
+ * internal.h (rb_ary_delete_same_obj): add a declaration.
+
+ * gc.c (wmap_final_func): remove WeakRef object reference from the
+ array. rb_ary_delete() is not usable because it uses rb_equal() to
+ compare object references.
+
+ * gc.c (wmap_finalize): remove recycled object references from weak
+ map hash properly. How to get object reference from object id was
+ wrong. st_delete() doesn't work properly if key and value arguments
+ are same. The key of obj2wmap is referenced object and the value of
+ obj2wmap is WeakRef array.
+
+ * gc.c (wmap_aset): obj2wmap should contain WeakRef array in the
+ definition.
+
+ * test/test_weakref.rb
+ (TestWeakRef#test_not_reference_different_object,
+ TestWeakRef#test_weakref_finalize): add tests for above.
+ [ruby-core:49044] [Bug #7304]
+
+Sat Nov 24 19:44:41 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (unicode_iconv_combine): returning flags are
+ nkf_char.
+
+Sat Nov 24 19:29:18 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_rubyoptions.rb (test_usage, test_usage_long):
+ reduced, renamed.
+
+Sat Nov 24 13:10:14 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_tracepoint_attr_raised_exception): should not check
+ value before event checking.
+
+ * vm_trace.c (rb_tracepoint_attr_return_value): ditto.
+
+ * test/ruby/test_settracefunc.rb: add tests for TracePoint#return_value
+ and TracePoint#raised_exception.
+
+Sat Nov 24 12:47:27 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_process.rb (TestProcess#test_setsid): "./ruby-trunk"
+ doesn't work on all environments. EnvUtil.rubybin would be suitable.
+
+Sat Nov 24 12:28:04 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * array.c (rb_ary_aref): fix Segmentation fault at TestArray#test_aref
+ on x64 mingw. Variable argument of rb_scan_args() should be a pointer
+ (VALUE *), but 0 of variable argument seems not equal to null pointer
+ on x64 mingw.
+
+Sat Nov 24 11:47:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_getsid): adds new method for getting session id.
+ Contributed from fumiyas (Fumiyasu SATOH). Thank you!
+ [Feature #6757] [ruby-dev:45977]
+ * configure.in: adds getsid check.
+ * test/ruby/test_process.rb (TestProcess#test_setsid): new test
+ for the above.
+ * NEWS: news for the above.
+
+Sat Nov 24 10:59:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_create_core): don't use th->thread_id before
+ initialized.
+
+Sat Nov 24 00:00:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options, process_options, ruby_process_options): take
+ care of the case argc is 0, and check if argv has NULL.
+ [ruby-core:49889] [Bug #7423]
+
+Sat Nov 24 00:00:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (--disable-dln): option to disable dynamic linking
+ feature. [ruby-core:37676] [Feature #4946]
+
+Fri Nov 23 23:44:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#pkg_config): strip all white spaces for
+ mingw64+MSYS pkg-config which erroneously emits extra newlines.
+ [ruby-core:47998] [Bug #7163]
+
+Fri Nov 23 17:31:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (usage): wrap description lines if options are too long.
+
+Fri Nov 23 11:13:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_usage2): refine
+ assertion.
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_usage2): now
+ --help option is for modern terminals.
+
+Fri Nov 23 10:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/socket/ipsocket.c (IPSocket#peeraddr): Fix example
+ [ruby-core:46429] [Bug #6732]
+
+Fri Nov 23 02:40:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/cgi/core.rb: Documentation for CGI#header alias
+ Based on a patch by Marcus Stollsteimer
+ [ruby-core:49585] [Bug #7405]
+
+Thu Nov 22 23:48:10 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (is_swept_object): extract from is_dead_object().
+
+ * gc.c (rb_gcdebug_print_obj_condition): add the function for debug.
+ This function shows some conditions of given object (e.g.,
+ marked, in heap, swept).
+
+ * gc.c (rb_gcdebug_sentinel): add the function for debug.
+ This function allow check to inadvertently free up an object.
+
+Thu Nov 22 23:45:18 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * array.c (rb_ary_shared_with_p): fix cache validity check.
+ If #pop or #shift has been called against $: or $", the array will
+ be still shared with the snapshot. We check array length for cache
+ validity.
+ [ruby-core:49518] [Bug #7383]
+
+ * test/ruby/test_require.rb
+ (TestRequire#test_require_with_array_pop,
+ TestRequire#test_require_with_array_shift): add tests for above.
+
+Thu Nov 22 21:48:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk, win32/Makefile.sub (probes.dmyh): now be made in current
+ (=build) directory if build from the repository.
+
+Thu Nov 22 21:34:51 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_rubyoptions.rb: added a test.
+
+Thu Nov 22 20:32:07 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (string_to_c_strict, string_to_c): check NUL.
+ * rational.c (string_to_r_strict, string_to_r): ditto.
+
+Thu Nov 22 20:21:45 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * Makefile.in (.dmyh.h): removed $(VPATH). GNU make don't
+ recognize suffix rule with VPATH.
+
+Thu Nov 22 18:11:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk, Makefile.in, win32/Makefile.sub (.dmyh.h): nmake merges
+ explicit rules for same target, but not merges explicit rules and
+ implicit rules -- always explicit rules win. So, need to add an
+ explicit rule for probes.h. [Bug #7421] [ruby-core:49839]
+
+Thu Nov 22 18:01:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (probes.o): add -C to ignore #include in probes.d.
+
+ * probes.d: include vm_opts.h instead of vm_core.h.
+
+ * vm_opts.h (VM_COLLECT_USAGE_DETAILS): move definition from vm_core.h.
+
+Thu Nov 22 17:45:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8: Merge b0a6577a521d1bba5e19853f95d5c4b9be1072b5.
+ Support JIS X 0213 and some bugfixes.
+
+Thu Nov 22 17:39:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * tool/gen_dummy_probes.rb: don't change #include, #if and #endif
+ lines. [Bug #7370]
+
+Thu Nov 22 16:58:26 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * Makefile.in: run preprocessor when making probe.h
+ * probes.d: define probe insn and insn__operand only when
+ VM_COLLECT_USAGE_DETAILS is 1. [Bug #7370]
+
+Thu Nov 22 16:20:49 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm.c: Don't define vm_collect_usage_operand() and
+ static void vm_collect_usage_insn() when disabling
+ VM_COLLECT_USAGE_DETAILS. (refix r37796)
+
+Thu Nov 22 15:26:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_insnhelper.h: partly revert r37631 (DTrace support).
+ "vm usage information is always collected, so uncomment the
+ functions." causes performance impact. [Bug #7370]
+ Off course this revert disables related probes.
+
+Thu Nov 22 14:14:36 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * re.c (rb_memsearch_ss): Apply performance improvement to short
+ byte array search for platforms without memmem(3).
+ [Feature #6311] [ruby-dev:45530]
+
+Thu Nov 22 12:52:19 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/ruby/test_string.rb (TestString#test_index): Add some
+ corner cases to tests for String#index, which might fail if ruby
+ directly used a buggy memmem(3) implementation.
+
+Thu Nov 22 08:06:42 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * test/ruby/test_gc.rb (test_profiler_clear): fix wrong method
+ calls [Bug #7419] [ruby-core:49828].
+
+Thu Nov 22 02:22:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * NEWS: edited (order etc).
+
+Wed Nov 21 22:52:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/wait/wait.c (io_wait_readable): add alias wait_readable.
+
+ * ext/io/wait/wait.c (io_wait_writable): this is easier to use than
+ IO.select for a single IO object and is immune to the
+ limitations/inefficiency of select() on platforms where poll/ppoll
+ is available. patched by Eric Wong. [Feature #4646]
+
+Wed Nov 21 22:27:52 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (garbage_collect): remove a duplicative probe.
+
+Wed Nov 21 22:08:48 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_profile_clear): realloc profile records if its size is
+ higher than the threshold, GC_PROFILE_RECORD_DEFAULT_SIZE * 2.
+
+Wed Nov 21 21:53:29 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_to_c): added.
+
+Wed Nov 21 21:35:38 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * include/ruby/util.h: removed extra semicolon in definition of
+ macro.
+ * compile.c: ditto.
+ * cont.c: ditto.
+ * math.c: ditto.
+ * node.c: ditto.
+ * parse.y: ditto.
+
+Wed Nov 21 18:46:37 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (read_digits): due to a bit tighter rb_cstr_to_inum().
+
+Wed Nov 21 16:13:37 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_so_nsieve_bits.rb: add an encoding pragma because
+ this benchmark using strings (literals) as binary sequence.
+ Now, they are UTF-8 strings. [ruby-dev:46578]
+
+Wed Nov 21 00:57:43 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * file.c (Init_File): null device definition uses rb_define_const
+ instead of rb_file_const.
+
+Wed Nov 21 00:28:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_m17n_comb.rb (test_str_crypt): Use RbConfig to get
+ libc's directory. Patched by Vit Ondruch [ruby-core:49763] [Bug #7312]
+
+Tue Nov 20 23:28:26 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * marshal.c: add marshal readahead. marshalized Array, Hash and Struct
+ have size at least number of its elements, marshal readahead will
+ read the certain readable length and buffer when it needs more bytes.
+ marshal readahead prevents many calls to IO#getbyte and IO#read,
+ then it enables performance improvement.
+ [ruby-dev:45637] [Feature #6440]
+
+Tue Nov 20 22:35:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (.d.h): replace char * to const char * because somehow
+ current dtrace removes const of function declaration in probes.d.
+
+Tue Nov 20 21:41:04 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h: introduced.
+ Debugging/profiling features will be located.
+
+ * vm_trace.c: expose C-level TracePoint APIs.
+ Note that they are experimental.
+
+ * vm_trace.c, include/ruby/debug.h: rename `rb_hook_flag_t'
+ to `rb_event_hook_flag_t'.
+ Macro names `RUBY_HOOK_FLAG_*' are also renamed to
+ `RUBY_EVENT_HOOK_FLAG_*'.
+
+ * debug.h, vm_debug.h: rename debug.h to vm_debug.h.
+
+ * common.mk: ditto.
+
+ * debug.c, main.c, vm_core.h: ditto.
+
+Tue Nov 20 21:12:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (RUBY_DTRACE_AVAILABLE): only check dtrace availability.
+
+ * configure.in (RUBY_DTRACE_POSTPROCESS): restore.
+
+Tue Nov 20 21:22:44 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_type.rb (test_implemented_ole_types):
+ IShellDispatch6 bundled in Windows 8. Thanks to phasis68 (Heesob
+ Park). [ruby-core:49580][Bug #7403]
+
+Tue Nov 20 21:06:41 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: some improvements.
+ * rational.c: ditto.
+
+Tue Nov 20 21:01:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (incs): BSD make cannot deal with non-prefixed dependency
+ and prefixed target.
+
+Tue Nov 20 20:10:23 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_bsearch): fix rdoc bug (O(n log n) -> O(log n)).
+ Patch by Charlie Somerville. [ruby-core:49661] [Bug #7409]
+
+ * range.c (range_bsearch): ditto.
+
+Tue Nov 20 19:02:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: rename and add TracePoint APIs.
+ (1) TracePoint.new(...){...} creates a new trace point
+ but does not make it enable.
+ (2) TracePoint.trace(...){...} creates a new trace point
+ and enable it (same as old behavior).
+ (3) TracePoint#enable make it enable (renamed from TracePoint#retrace).
+ If block given, when enable only in block.
+ (4) TracePoint#disable make it disable (renamed from TracePoint#untrace).
+ If block given, when disable only in block.
+ (5) TracePoint#enabled? returns this trace is enable or not.
+ [Feature #6895]
+
+ * test/ruby/test_settracefunc.rb: add tests.
+
+Tue Nov 20 18:35:05 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: add two methods:
+ (1) TracePoint#return_value which returns return
+ value on the :return and :c_return event.
+ (2) TracePoint#raised_exception which returns raised exception
+ value on the :raise event.
+ Each methods raise RuntimeError if it is called at unsupported
+ event.
+ Please review and give us feedback until next preview
+ release (Dec/2012) of Ruby 2.0.0.
+ [Feature #6895]
+
+ * insns.def, vm.c, vm_eval.c, vm_insnhelper.c, eval.c, thread.c:
+ ditto.
+
+ * vm_trace.c, vm_core.h: move definition of rb_trace_arg_t from
+ vm_trace.c to vm_core.h.
+ Caller fills rb_trace_arg_t and pass the pointer of this variable.
+
+ * test/ruby/test_settracefunc.rb: fix tests to test this change.
+
+Tue Nov 20 17:31:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: fix dtrace didn't work on darwin.
+
+ * configure.in (RUBY_DTRACE_AVAILABLE): unify RUBY_DTRACE_POSTPROCESS
+ and RUBY_DTRACE_BSD_BROKEN.
+
+Tue Nov 20 15:20:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * file.c (File.extname): Documentation for extname on dotfiles and
+ files ending with a dot. Also, added example for this.
+ [ruby-core:47852] [Bug #7112]
+
+Tue Nov 20 14:19:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signame): fix windows
+ test failure. Process.kill on windows can't send a signal to
+ another process.
+
+Tue Nov 20 13:58:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (Init_IO): moved all rb_file_const() into file.c.
+ * file.c (Init_File): replace with rb_file_const() with
+ rb_define_const() because RDoc don't care rb_file_const.
+ [Bug #5530]
+
+Tue Nov 20 12:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ruby.c (usage_msg): Fix typo [ruby-core:49205] [Bug #7327]
+
+Tue Nov 20 12:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * file.c (File::NULL): Document File::NULL constant
+ [ruby-core:49384] [Bug #7365]
+
+Tue Nov 20 12:05:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): Windows 8 fixed one of a bug of console
+ API.
+ based on the patch by Heesob Park at [ruby-core:49479] [Bug #7379]
+
+Tue Nov 20 11:14:33 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (--enable-dtrace): always call RUBY_DTRACE_BSD_BROKEN
+ for portability.
+ As the note, FreeBSD 8 has DTrace as the optional
+ feature (it is enabled by the build option), but doesn't have USDT.
+ FreeBSD 9 has USDT but they are still optional. FreeBSD 10 will
+ enable them by default.
+ The variable $rb_cv_prog_dtrace_g is "yes" only on FreeBSD 9 with
+ optional DTrace or FreeBSD 10. If it is "no", you cannot know
+ whether it doesn't need -G or DTrace is disabled. (by checking
+ error code, you can know)
+
+Mon Nov 19 22:55:48 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * configure.in (--enable-dtrace): change help message
+
+Tue Nov 20 11:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/tracer.rb (Tracer.trace_func): printf to stdout
+ Patch by Michal Fojtik [ruby-core:45219] [Bug #6490]
+
+Mon Nov 19 21:24:18 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * vm_dump.c: not to include probes.h because the code does not depend
+ on it.
+ * common.mk (vm_dump.$(OBJEXT)): remove dependency on probes.h
+
+Tue Nov 20 10:14:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_s_check_interrupt): removed redundant
+ GET_THREAD().
+
+Tue Nov 20 10:12:46 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_threadptr_async_errinfo_active_p): added a small
+ comment.
+
+Tue Nov 20 10:05:56 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_blocking_region_end): replaced GET_THREAD()
+ with ruby_thread_from_native(). We don't have GVL here.
+
+Tue Nov 20 09:56:15 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_threadptr_execute_interrupts) removed.
+ * thread.c (rb_threadptr_execute_interrupts_common) renamed to
+ rb_threadptr_execute_interrupts. I.e. unified
+ rb_threadptr_execute_interrupts and rb_threadptr_execute_interrupts_common.
+ * thread.c (rb_thread_schedule, rb_thread_execute_interrupts) s/_common//.
+
+Tue Nov 20 09:48:34 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (rb_get_next_signal): removed pointless signal
+ disabling. pthread_sigmask() only changes current thread
+ mask.
+
+Tue Nov 20 09:36:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (install_sighandler): added comments why we need
+ rb_disable_interrupt().
+
+Tue Nov 20 09:31:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (rb_disable_interrupt, rb_enable_interrupt): removed
+ USE_TRAP_MASK.
+ * signal.c (trap_arg, trap_ensure): removed.
+ * signal.c (trap, sig_trap): removed pointless signal disabling.
+ We don't need it because we no longer run trap handler on signal
+ handler context.
+
+Tue Nov 20 09:20:49 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * prelude.rb: Moved Mutex#synchronize to
+ * thread.c (rb_mutex_synchronize_m): here. [Bug #4266]
+
+Tue Nov 20 08:36:15 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (sig_signame): implements Signal.signame method
+ [Feature #5613]
+ * test/ruby/test_signal.rb (test_signame): adds test for above
+ * NEWS: add an item about above
+
+Mon Nov 19 16:30:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (rb_struct_each_pair): yield associated pairs so that
+ an unsplat argument can get both, for consistency with Hash,
+ OpenStruct, and etc. [ruby-dev:46533] [Bug #7382]
+
+Mon Nov 19 16:17:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBS): libelf is need on only FreeBSD.
+
+Mon Nov 19 16:08:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUBYLIB): purelib option in runruby.rb is deprecated
+ since r28841, so set to an empty list to get rid of a bogus path in
+ child processes, which caused an insecure operation exception in
+ test/ruby/test_encoding.rb:test_unsafe.
+
+Mon Nov 19 15:40:50 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (script): add OPTS=-v, requested by @_ko1.
+
+Mon Nov 19 15:09:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: fix didn't enable_dtrace=yes on auto.
+
+ * configure.in: see enable_dtrace for adding libelf on FreeBSD.
+
+ * common.mk: VPATH is not needed.
+
+Mon Nov 19 14:55:51 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: add `Thread#backtrace_locations' method.
+ This method is similar to `caller_locations' method for
+ specific method.
+ And fix to accept `level' and `n' parameters for `Thread#backtrace'
+ and `Thread#backtrace_locations'.
+ `caller' (and `caller_locations') do not return `caller' method
+ frame.
+ However, `Thread#backtrace' (and `Thread#backtrace_locations')
+ return `Thread#backtrace' method frame itself
+ if `Thread.current.backtrace' was called.
+
+ * vm_backtrace.c: ditto.
+
+ * internal.h: ditto.
+
+ * test/ruby/test_backtrace.rb: add tests.
+
+Mon Nov 19 14:54:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * Makefile.in, common.mk (probes.h): moved to common.mk and changed to
+ see $(srcdir).
+
+ * common.mk (probes.dmyh): now created it on $(srcdir) always.
+
+ * win32/Makefile.sub (.SUFFIXES): removed common suffix.
+
+Mon Nov 19 10:00:10 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (.SUFFIX): bsdmake needs .SUFFIX is defined before use.
+
+ * common.mk: fix path of probes.dmyh.
+
+ * common.mk (vm_dump.o): depend probes.h.
+
+ * configure.in: FreeBSD's USDT requires libelf.
+
+Mon Nov 19 01:11:59 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * vm_core.h, probes_helper.h (RUBY_DTRACE_FUNC_ENTRY_HOOK,
+ RUBY_DTRACE_FUNC_RETURN_HOOK): move from vm_core.h to new file
+ probes_helper.h for narrowing dependency to probes.h.
+ * common.mk (VM_CORE_H_INCLUDES): remove dependency to probes.h.
+ * common.mk (vm.$(OBJEXT)): add dependency to probes_helper.h.
+ * vm.c, vm_insnhelper.c: include probes_helper.h.
+
+Sun Nov 18 16:33:00 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * configure.in, Makefile.in, common.mk: support DTrace on Solaris 10,
+ based on r26235 by Yugui. On Solaris 10, low optimization level
+ may also be needed, e.g. optflags="-xO1" or "-xO0" with Oracle
+ SolarisStudio 12.3 cc.
+
+ * configure.in (--enable-dtrace): new option to enable/disable
+ DTrace support. By default, trying to enable if dtrace command
+ is found on the system. It is disabled when cross compiling.
+
+ * configure.in (RUBY_DTRACE_POSTPROCESS): new macro. checks whether
+ the dtrace on the system needs postprocessing with "dtrace -G".
+ The postprocessing is needed on Solaris 10 and other platforms.
+
+ * configure.in (RUBY_DTRACE_BSD_BROKEN): new macro. checks whether
+ the dtrace supports USDT.
+
+ * configure.in (DTRACE): move after RUBY_DTRACE_POSTPROCESS.
+
+ * configure.in (LD): On Solaris, /usr/ccs/bin/ld is preferred.
+
+ * configure.in, Makefile.in, common.mk (DTRACE_OBJ): new macro for
+ DTrace probe object generated by postprocessing with "dtrace -G".
+
+ * Makefile.in, common.mk (probes.$(OBJEXT)): DTrace probe object
+ generated by the postprocessing. New file probes.stamp is for
+ rebuilding related objects that may be modified by "dtrace -G".
+
+ * configure.in, Makefile.in, common.mk (DTRACE_GLOMMED_OBJ): new
+ macro for DTrace static library hacks.
+
+ * configure.in, Makefile.in (LIBRUBY_A_OBJS): ditto.
+
+ * Makefile.in, common.mk (ruby-glommed.$(OBJEXT)): new target with
+ rule for DTrace static library hacks.
+
+ * common.mk (DTRACE_DEPENDENT_OBJS): objects depended on probes.h.
+
+Sun Nov 18 09:31:47 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (read_comp): mathn compliant.
+ * rational.c (read_num): ditto.
+
+Sun Nov 18 02:50:12 2012 Luis Lavena <luislavena@gmail.com>
+
+ * win32/file.c (replace_to_long_name): correct logic around wildcard
+ characters detection and ensure wide-chars are used as pattern.
+ [ruby-core:49451] [Bug #7374]
+
+Sun Nov 18 02:02:46 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (read_comp): modified handling of polar form.
+
+Sun Nov 18 00:50:44 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (read_comp): fixed handling of polar form.
+
+Sun Nov 18 00:14:46 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (string_to_c_strict, string_to_c): rewrote without regexp.
+ * rational.c (string_to_r_strict, string_to_r): ditto.
+
+Sat Nov 17 23:53:05 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (make_patterns): should not accept extra sign.
+
+Sat Nov 17 21:45:12 Luis Lavena <luislavena@gmail.com>
+
+ * win32/file.c (replace_to_long_name): skip expansion for all wildcard
+ characters.
+ [ruby-core:49451] [Bug #7374]
+
+ * test/ruby/test_file_exhaustive.rb: add more assertions to test.
+
+Sat Nov 17 12:14:50 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: use literal YAML style
+ when emitting multi-line strings. Thanks @atambo
+
+ * test/psych/test_yaml.rb: test for change.
+
+Sat Nov 17 12:03:41 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: avoid raising exceptions when
+ parsing Floats and Integers. Thanks riffraff [ruby-core:44426]
+ * test/psych/test_numeric.rb: associated test
+
+Sat Nov 17 11:34:31 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * st.c (st_update): pass the key in st_table so that we can free
+ memory of the key in st_table when deleting.
+ [ruby-core:49220] [Bug #7330]
+
+ * test/-ext-/st/test_update.rb
+ (Bug::StTable#test_pass_objects_in_st_table): add a test.
+
+Sat Nov 17 11:26:36 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/core_ext.rb: move Kernel#y so that it can
+ manually be required as 'psych/y'.
+
+ * ext/psych/lib/psych/y.rb: ditto
+
+Sat Nov 17 08:13:48 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * lib/abbrev.rb: fix r37113. Correct examples, fix style
+ and show explicit dependency (require 'abbrev').
+
+Sat Nov 17 07:35:15 2012 Luis Lavena <luislavena@gmail.com>
+
+ * win32/file.c (replace_to_long_name): skip automatic path expansion
+ when wildcard character is used. [ruby-core:49451] [Bug #7374]
+
+ * test/ruby/test_file_exhaustive.rb: add a test for above.
+
+Sat Nov 17 00:50:23 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * marshal.c (w_object): add flonum to arg->data to keep reference index
+ consistency. [ruby-core:49323] [Bug #7348]
+
+ * test/ruby/test_marshal.rb: add a test for above.
+
+Sat Nov 17 00:40:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (incs): dist files need probes.dmyh.
+
+ * common.mk (probes.dmyh): depends on generator script.
+
+ * Makefile.in, common.mk, configure.in, win32/Makefile.sub (probes.h):
+ select generating with dtrace or copying dummy file by suffix rules.
+
+Fri Nov 16 19:24:10 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_call_without_gvl2): change the parameter of
+ `func' from `int *skip_interrupt' to `VALUE *flags'.
+ If (flags & RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS) is not zero,
+ then skip checking interrupt.
+ [ruby-core:46547]
+
+ * include/ruby/thread.h: ditto.
+
+Fri Nov 16 18:59:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (no-dtrace-probes.h): dmyprobes.h is in srcdir.
+
+ * common.mk (dmyprobes.h): ditto.
+
+Fri Nov 16 17:57:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (probes.h): split build commands for dtrace-available
+ and unavailable platforms.
+
+ * Makefile.in (incs): probes.h is a platform dependent file, so it
+ cannot be a part of prereq target. move it to all-incs.
+
+ * configure.in (DTRACE): move after AC_PROG_CC since cross_compiling
+ is set in it.
+
+ * configure.in (DTRACE): ignore non-prefixed version if
+ cross-compiling.
+
+ * Makefile.in, win32/Makefile.sub (probes.h): fix copying dmyprobes.h
+ path when outplace-build.
+
+Fri Nov 16 15:27:36 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * lib/net/pop.rb (POP3.certs): fix typo in comment.
+ patch from no6v (Nobuhiro IMAI) <nov@yo.rim.or.jp>.
+ [ruby-dev:46519] [Bug #7355]
+
+Fri Nov 16 12:36:47 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rake/helper.rb (Rake::TestCase#setup): revert r37669.
+ @orig_PWD should be the original pwd.
+
+ * test/rake/test_*.rb: don't use @orig_PWD to load libraries.
+ It should be specified with relative path from the file.
+
+Fri Nov 16 10:22:52 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rake/helper.rb (Rake::TestCase#setup): @orig_PWD shouldn't be
+ Dir.pwd when the build directory is different from source directory.
+
+Fri Nov 16 09:41:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rake/version.rb: workaround fix to build. see #7366
+ [ruby-dev:46522]
+
+Fri Nov 16 07:23:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake*: Updated to rake 0.9.4
+ http://rake.rubyforge.org/doc/release_notes/rake-0_9_4_rdoc.html for
+ a list of changes in 0.9.4.
+
+ * test/rake*: ditto
+
+ * NEWS: ditto
+
+Fri Nov 16 06:58:52 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake*: Updated to rake 0.9.3. See
+ http://rake.rubyforge.org/doc/release_notes/rake-0_9_3_rdoc.html for
+ a list of changes in 0.9.3.
+
+ * test/rake*: ditto
+
+ * bin/rake: ditto
+
+ * NEWS: ditto
+
+Thu Nov 15 22:39:32 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * range.c (range_bsearch): fix some bugs: a documentation bug, a wrong
+ condition, missed break in switch/case, and workaround for GCC
+ optimization. See [ruby-core:49364] in detail. A great patch from
+ Heesob Park. [Bug #7352] [Feature #4766]
+
+ * array.c (rb_ary_bsearch): fix similar bug (missed break).
+
+ * test/ruby/test_range.rb: add two test cases for above.
+
+Thu Nov 15 22:41:57 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.h (GENTRY): GENTRY should be pointer size.
+ A patch by yoshidam (Yoshida Masato) [Bug #7332].
+
+Thu Nov 15 13:20:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * man/erb.1: Fix grammar and copyright dates
+ * man/goruby.1: ditto
+ * man/irb.1: ditto
+ * man/rake.1: ditto
+ * man/ri.1: ditto
+ * man/ruby.1: ditto
+ Patch by Arthur Gunn
+ [Fixes Github #210]
+
+Thu Nov 15 11:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * man/ruby.1: Grammar edits for man page
+ Based on a patch by Michael Endsley [Fixes Github #183]
+
+Thu Nov 15 00:47:20 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_bsearch): add Array#bsearch for binary search.
+ [ruby-core:36390] [Feature #4766]
+
+ * test/ruby/test_array.rb: add a test for above.
+
+ * range.c (range_bsearch): add Range#bsearch for binary search.
+ [ruby-core:36390] [Feature #4766]
+
+ * test/ruby/test_range.rb: add a test for above
+
+ * NEWS: added the two new methods.
+
+Wed Nov 14 13:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/fileutils.rb (chmod): Add "X" to modes, convert format to table
+ [ruby-core:48965] [Bug #7288]
+
+Wed Nov 14 11:51:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/csv.rb (init_comments): Document private method #init_comments.
+ Based on a patch from Vincent Batts [ruby-core:49172] [Bug #7319]
+
+Wed Nov 14 00:54:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * Makefile.in (probes.h): create from probes.d
+
+Tue Nov 13 18:44:01 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_cfunc_with_frame): don't use ci after
+ EXEC_EVENT_HOOK because ci can be overridden.
+
+ * vm_eval.c: ditto.
+
+ * method.h: change invoker's parameters types.
+
+ * vm_method.c (call_cfunc_invoker_func): ditto.
+
+Tue Nov 13 18:01:54 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_using): raise an ArgumentError if cyclic using is
+ detected. based on the patch by Charlie Somerville.
+ [ruby-core:49092] Bug #7308
+
+ * test/ruby/test_refinement.rb: related test.
+
+Tue Nov 13 17:40:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (vm_insnhelper.c): this target is useless and causes
+ ruby always need rebuild.
+
+Tue Nov 13 17:35:49 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (insn_data_to_s_detail): remove debug lines.
+
+Tue Nov 13 17:28:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_caller_setup_args): save and restore
+ ci->argc and ci->blockptr before and after method invocations
+ because these method dispatches can override call_info.
+
+ * bootstraptest/test_method.rb: add tests for this fix.
+
+Tue Nov 13 16:38:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (dmyprobes.h): always create for make dist.
+
+ * Makefile.in (probes.h): create or copy dmyprobes.h
+
+ * win32/Makefile.sub: only do copy dmyprobes.h.
+
+Tue Nov 13 15:37:21 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (.SUFFIX): .SUFFIX is needed here for .d.h on bsd make.
+
+Tue Nov 13 15:34:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk Makefile.in win32/Makefile.sub (.d.h): it's not common.
+
+Tue Nov 13 12:27:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: disable dtrace because it doesn't work on FreeBSD.
+
+ * common.mk (clean-local): rm probes.h.
+
+ * common.mk (parse.o): depend $(PROBES_H_INCLUDES).
+
+ * common.mk (.d.h): moved from Makefile.in and use BASERUBY.
+
+ * tool/gen_dummy_probes.rb: reimplemented with ruby because sed is not
+ available on Windows Microsoft VC++ environment.
+
+Tue Nov 13 12:30:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/README.win32: added mention about build directory. currently
+ we can not build ruby in win32 directory. this problem is reported
+ by Masahiro Kitajima <katonbo@katontech.com>.
+
+Tue Nov 13 11:03:47 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * re.c (rb_memsearch_ss): performance improvement by using memmem(3) if
+ possible. [ruby-dev:45530] [Feature #6311]
+
+ * configure.in: check existence of memmem(3) and that it is not broken.
+
+Tue Nov 13 06:50:02 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * probes.d: add DTrace probe declarations. [ruby-core:27448]
+
+ * array.c (empty_ary_alloc, ary_new): added array create DTrace probe.
+
+ * compile.c (rb_insns_name): allowing DTrace probes to access
+ instruction sequence name.
+
+ * Makefile.in: translate probes.d file to appropriate header file.
+
+ * common.mk: declare dependencies on the DTrace header.
+
+ * configure.in: add a test for existence of DTrace.
+
+ * eval.c (setup_exception): add a probe for when an exception is
+ raised.
+
+ * gc.c: Add DTrace probes for mark begin and end, and sweep begin and
+ end.
+
+ * hash.c (empty_hash_alloc): Add a probe for hash allocation.
+
+ * insns.def: Add probes for function entry and return.
+
+ * internal.h: function declaration for compile.c change.
+
+ * load.c (rb_f_load): add probes for `load` entry and exit, require
+ entry and exit, and wrapping search_required for load path search.
+
+ * object.c (rb_obj_alloc): added a probe for general object creation.
+
+ * parse.y (yycompile0): added a probe around parse and compile phase.
+
+ * string.c (empty_str_alloc, str_new): DTrace probes for string
+ allocation.
+
+ * test/dtrace/*: tests for DTrace probes.
+
+ * vm.c (vm_invoke_proc): add probes for function return on exception
+ raise, hash create, and instruction sequence execution.
+
+ * vm_core.h: add probe declarations for function entry and exit.
+
+ * vm_dump.c: add probes header file.
+
+ * vm_eval.c (vm_call0_cfunc, vm_call0_cfunc_with_frame): add probe on
+ function entry and return.
+
+ * vm_exec.c: expose instruction number to instruction name function.
+
+ * vm_insnhelper.c: add function entry and exit probes for cfunc
+ methods.
+
+ * vm_insnhelper.h: vm usage information is always collected, so
+ uncomment the functions.
+
+Mon Nov 12 19:14:50 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (isinf, isnan): isinf() and isnan() are macros on
+ DragonFly which cannot be found by AC_REPLACE_FUNCS(). This
+ workaround enforces the fact that they exist on DragonFly.
+
+Mon Nov 12 15:59:38 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo),
+ vm_insnhelper.c (vm_search_method): revert r37616 because it's too
+ slow. [ruby-dev:46477]
+
+ * test/ruby/test_refinement.rb (test_inline_method_cache): skip
+ the test until the bug is fixed efficiently.
+
+Mon Nov 12 14:28:01 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb (each_export): skip garbage generated by VS2012's
+ nmake.
+ reported and patched by Yoshida Masato at [Bug #7333] [ruby-dev:46484]
+
+Sun Nov 11 18:58:55 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_date_{parse,strptime}.rb: changed the format of
+ some extra messages.
+
+Sun Nov 11 18:41:34 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (date__parse): revised the tight parser
+ (about handling of apostrophes).
+
+Sun Nov 11 15:39:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): just warn for wrong elements now.
+ [ruby-dev:46440] [Bug #7300]
+
+ * hash.c (rb_hash_s_create): refine error messages.
+
+ * error.c (rb_builtin_class_name): share for above.
+
+Sun Nov 11 15:12:18 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (top_using): remove Kernel#using, and add main.using instead.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sun Nov 11 13:41:01 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_using_refinement, rb_mod_using, f_using): clear method
+ cache only when using is called explicitly.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sun Nov 11 12:56:34 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * lib/pstore.rb (PStore): fix not to replace ThreadError raised in
+ #transaction block with PStore::Error.
+ [ruby-core:39238] [Bug #5269]
+
+Sun Nov 11 11:36:19 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo):
+ add a new field for inline method cache.
+
+ * vm_insnhelper.c (vm_search_method): check rb_call_info_t::refinements
+ not to confuse inline method cache when module_eval is used with
+ refinements.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sun Nov 11 08:45:45 2012 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * ruby.c: removed a comma before "before"
+
+Sat Nov 10 23:02:31 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: move immutable fields from struct heaps_slot and struct
+ sorted_heaps_slot into struct heaps_header.
+ Based on a patch from Sokolov Yura [Feature #6199][ruby-core:43592]
+
+Sat Nov 10 19:28:16 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: modified doc.
+ * rational.c: ditto.
+
+Sat Nov 10 18:20:10 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c: edited about era.
+
+Sat Nov 10 12:13:41 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * tool/rbinstall.rb: Don't install *.gemspec under lib/.
+ [ruby-core:48966] [Bug #7289]
+ Reported by Vit Ondruch. Thanks!!!
+
+Sat Nov 10 00:49:26 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ruby_atomic.h: renamed from atomic.h to avoid header file name
+ conflict on Solaris 10. [ruby-dev:46414] [Bug #7287]
+
+ * gc.c, signal.c, vm_core.h, common.mk: reflect the rename from
+ atomic.h to ruby_atomic.h.
+
+Sat Nov 10 00:46:57 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * atomic.h: Revert r37491 which is a temporary workaround.
+
+Sat Nov 10 00:33:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * siphash.h: check configure macros before include newer headers.
+
+Fri Nov 9 23:33:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/erb.rb (ERB#run, ERB#result): eval under isolated bindings for
+ safe concurrent use. [ruby-core:47638] [Bug #7046]
+
+Fri Nov 9 23:05:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (BYTE_ORDER): define using configured WORDS_BIGENDIAN.
+
+ * siphash.c (sip_init_state): use union to suppress warnings by gcc
+ 4.7.
+
+Fri Nov 9 19:40:03 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_splice): fix r37583 doesn't consider the case when
+ beg > array length.
+
+Fri Nov 9 16:11:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rb_memhash): use siphash.
+
+Fri Nov 9 16:08:46 2012 Sokolov Yura funny-falcon <funny.falcon@gmail.com>
+
+ * array.c: speedup Array#unshift by using space in shared array.
+ [Feature #6638]
+ - when array owns its shared array (ARY_SHARED_NUM == 1), and there
+ is enough space then try unshift values directly into shared
+ array.
+ - when resulting array is big (~>64 items) then make it shared with
+ enough room for future #unshifts, and then insert into shared
+ array.
+
+ * array.c (rb_ary_splice): use shared array in rb_ary_slice.
+ [Feature #6638]
+ - use ary_ensure_room_for_push when rb_ary_slice used to add at the
+ end of array, cause rb_ary_concat use rb_ary_slice.
+
+ * array.c (ary_ensure_room_for_push): make array really suitable for
+ queue. [Feature #6638]
+ when array is shared (which happens after Array#shift), and
+ ARY_SHARED_NUM == 1 (which is very often when array used as queue),
+ then make rb_ary_push push directly into shared array.
+
+ * array.c (rb_ary_modify): steal shared array's container when
+ ARY_SHARED_NUM == 1. [Feature #6638]
+ - Do not allocate new memory in rb_ary_modify when ARY_SHARED_NUM == 1
+ and length almost same.
+ - Store ARY_CAPA instead of RARRAY_LEN in ary_make_shared, to make
+ it useful.
+ - Fix rb_ary_sort_bang accordantly.
+
+Fri Nov 9 16:00:00 2012 Zachary Scott <zzak@zacharyscott.net>
+
+ * ext/bigdecimal/bigdecimal.c: Documentation for BigDecimal
+ Based on a patch from Vincent Batts [ruby-core:49047] [Bug #7305]
+
+Fri Nov 9 15:25:42 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb (Shellwords#shellescape): Add back my original
+ real world example with some enhancement.
+
+ * lib/shellwords.rb (Shellwords#shelljoin): Undo part of the
+ previous rdoc change. This new example using a string-only
+ array was not in line with the description.
+
+Fri Nov 9 12:58:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_crypt): crypt(3) may return NULL.
+ Latest glibc (2.16?) crypt(3) actually returns NULL. [Bug #7312]
+
+Fri Nov 9 12:07:06 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * include/ruby/ruby.h (alloca), eval_intern.h (alloca), gc.c
+ (alloca): Make alloca() globally available by moving the
+ ultimate ifdef's to ruby/ruby.h. Gcc hides its builtin alloca()
+ when compiling with -ansi, and linking thus fails on platforms
+ that lack their own alloca() implementation in libc, which
+ include OpenBSD and some ports of NetBSD. We use alloca()
+ everywhere including from within third party C extensions, so
+ alloca() must be made globally available. [Bug #7307]
+
+ * addr2line.c (alloca): Replace the alloca() part with the
+ ultimate ifdef's. [Bug #7307]
+
+Fri Nov 9 09:30:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * io.c (IO#new):
+ Fix indentation from r37444
+ [ruby-core:48052] [Bug #7179]
+
+Fri Nov 9 07:36:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c (bigmul0): enable big_mul_toom3.
+ [ruby-core:48552] [Bug #7242]
+
+ * bignum.c (bigmul1_toom3): fix incorrect calculation.
+ the patch is made by Heesob Park.
+ [ruby-core:48552] [Bug #7242]
+
+Fri Nov 9 05:33:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c (bigmul0): disable big_mul_toom3 temporarily.
+ [ruby-core:48552] [Bug #7242]
+
+ * test/ruby/test_bignum.rb (test_mul_large_numbers):
+ add a test for bigmul1_toom3 suggested in [Bug #7242].
+
+Thu Nov 8 21:57:59 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * re.c (rb_memsearch): performance improvement by using memchr().
+ [ruby-dev:45397] [Feature #6173]
+
+Thu Nov 8 19:02:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
+ treat \r as newline as mame pointed. [ruby-dev:46425] [Bug #7278]
+
+Thu Nov 8 11:32:11 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (--with-opt-dir): Avoid nesting of double quotes
+ inside backquotes, since some traditional shells like PD KSH
+ (which OpenBSD's /bin/sh bases on) fail to parse them.
+
+Thu Nov 8 09:34:00 2012 Kenta Murata <mrkn@cookpad.com>
+
+ * numeric.c: Add a caution that the results of the comparing
+ operations of two NaNs are undefined.
+ [#1720] [ruby-dev:38725] [ruby-core:36966]
+
+Thu Nov 8 04:45:21 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * include/ruby/intern.h: Restore rb_enumeratorize as it was before
+ r37497 and introduce rb_enumeratorize_with_size instead. [#7302]
+
+ * enumerator.c: ditto.
+
+Wed Nov 7 15:22:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (ruby_float_step): fix r37514: it yielded with NaN
+ if the unit is infinity.
+
+Wed Nov 7 15:46:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/webrick.rb: fix typo. reported by Rohit Arondekar.
+ https://github.com/ruby/ruby/pull/211
+
+Wed Nov 7 15:34:12 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb: alias CGI#http_header to CGI#header.
+
+Wed Nov 7 12:49:39 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine): set RMODULE_IS_REFINEMENT to a created
+ refinement module, and don't override method_added.
+
+ * vm_method.c (rb_method_entry_make): check redefinition of
+ optimized methods when a method is added to a refinement module.
+ [ruby-core:48970] [Bug #7290]
+
+ * test/ruby/test_refinement.rb: related test.
+
+Wed Nov 7 11:48:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-additional.el (ruby-mode-set-encoding): now encoding needs
+ to be set always explicitly actually. [Feature #6679]
+
+Wed Nov 7 09:15:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_get): avoid inadvertent symbol creation.
+
+Wed Nov 7 07:52:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (rb_enum_cycle_size): prefix with rb.
+
+Wed Nov 7 04:32:15 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/ruby/test_file_exhaustive.rb: Remove FIXME skip on Windows
+ specific test because the test in question was already fixed.
+
+Wed Nov 7 03:45:12 2012 Luis Lavena <luislavena@gmail.com>
+
+ * ext/zlib/extconf.rb: Recognize zlibwapi as linking library.
+ Patch by Daniel Berger.
+
+ [ruby-core:44979] [Feature #6421]
+
+Wed Nov 7 02:06:40 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: New method #size; constructor accepts size.
+ Have #to_enum accept a block
+ Warn when using deprecated form of constructor
+ Support #size for enumerators created from enumerators
+ Support for lazy.{map|flat_map|...}.size.
+
+ * include/ruby/intern.h: RETURN_SIZED_ENUMERATOR for support of
+ sized enumerators.
+
+ * array.c: Support for various enumerator.size.
+
+ * enum.c: ditto.
+
+ * hash.c: ditto.
+
+ * numeric.c: ditto.
+
+ * range.c: ditto.
+
+ * string.c: ditto.
+
+ * struct.c: ditto.
+
+ * vm_eval.c: ditto.
+
+Tue Nov 6 20:40:28 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * object.c (rb_mod_const_get): Fix constant missing exception class
+ and message to maintain backwards compatibility. Constant search
+ should start at Object when constant starts with '::'
+
+ * test/ruby/test_module.rb: test for fixes
+
+Tue Nov 6 16:50:00 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * lib/tempfile.rb (Tempfile#inspect): fix confusing #inspect.
+ previous Tempfile#inspect says it is a File, but actually
+ it is not a File.
+
+ t = Tempfile.new("foo") #=> #<File:/tmp/foo20121106-31970-1ffbum0>
+ t.is_a? File #=> false
+
+ now Tempfile#inspect returns like:
+
+ t = Tempfile.new("foo")
+ #=> #<Tempfile:/tmp/foo20121106-31970-1ffbum0>
+
+ [ruby-core:47544] [Bug #7027]
+
+Tue Nov 6 16:22:30 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * atomic.h: add #include <sys/atomic.h> for the workaround of
+ header file name conflict of atomic.h with /usr/include/atomic.h
+ on Solaris 10. [ruby-dev:46414] [Bug #7287]
+
+Tue Nov 6 14:38:00 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/win32ole/test_win32ole.rb: now source encoding is UTF-8, so
+ binary strings in old scripts are dangerous.
+
+Tue Nov 6 14:25:09 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
+ don't use /n in universal regexp. [ruby-dev:46394] [Bug #7278]
+
+Tue Nov 6 09:42:26 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_b): Add String#b, returning a copied string
+ whose encoding is ASCII-8BIT. [ruby-dev:45992] [Feature #6767]
+
+Tue Nov 6 09:37:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (load_file_internal): set default source encoding as
+ UTF-8 instead of US-ASCII. [ruby-core:46021] [Feature #6679]
+
+ * parse.y (parser_initialize): set default parser encoding as
+ UTF-8 instead of US-ASCII.
+
+Tue Nov 6 05:48:06 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_require.rb
+ (TestRequire#test_require_to_path_redefined_in_load_path,
+ TestRequire#test_require_to_str_redefined_in_load_path):
+ Suppress method redefined warning when test-all with RUBYOPT=-w.
+
+Thu Nov 8 00:24:14 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/curses/view.rb: Do not fail if the file to view is shorter
+ than the screen height.
+
+Mon Nov 5 11:40:00 2012 Mark Somerville <mark@scottishclmibs.com>
+
+ * thread_pthread.c (rb_reserved_fd_p): fix typo in macro check
+ that prevented the ifdef ever being true.
+ [Bug #7281] [ruby-core:48940]
+
+Mon Nov 5 23:28:57 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * file.c (rb_get_path_check_to_string): extract from
+ rb_get_path_check(). We change the spec not to call to_path of
+ String object.
+
+ * file.c (rb_get_path_check_convert): extract from rb_get_path_check().
+
+ * file.c (rb_get_path_check): follow the above change.
+
+ * file.c (rb_file_expand_path_fast): remove check_expand_path_args().
+ Instead we call it in load.c.
+
+ * file.c (rb_find_file_ext_safe): use rb_get_expanded_load_path() to
+ reduce expand cost.
+
+ * file.c (rb_find_file_safe): ditto.
+
+ * internal.h (rb_get_expanded_load_path): add a declaration.
+
+ * internal.h (rb_get_path_check_to_string, rb_get_path_check_convert):
+ add declarations.
+
+ * load.c (rb_construct_expanded_load_path): fix for compatibility.
+ Same checks in rb_get_path_check() are added. We don't replace
+ $LOAD_PATH and ensure that String object of $LOAD_PATH are frozen.
+ We don't freeze non String object and expand it every time. We add
+ arguments for expanding load path partially and checking if load path
+ have relative paths or non String objects.
+
+ * load.c (load_path_getcwd): get current working directory for checking
+ if it's changed when getting load path.
+
+ * load.c (rb_get_expanded_load_path): fix for rebuilding cache properly.
+ We check if current working directory is changed and rebuild expanded
+ load path cache. We expand paths which start with ~ (User HOME) and
+ non String objects every time for compatibility. We make this
+ accessible from other source files.
+
+ * load.c (rb_feature_provided): call rb_get_path() since we changed
+ rb_file_expand_path_fast() not to call it.
+
+ * load.c (Init_load): initialize vm->load_path_check_cache.
+
+ * vm.c (rb_vm_mark): mark vm->load_path_check_cache for GC.
+
+ * vm_core.h (rb_vm_struct): add vm->load_path_check_cache to store data
+ to check load path cache validity.
+
+ * test/ruby/test_require.rb (TestRequire): add tests for require
+ compatibility related to cached expanded load path.
+ [ruby-core:47970] [Bug #7158]
+
+Mon Nov 5 23:26:05 2012 Greg Price <price@mit.edu>
+
+ * load.c (rb_get_expanded_load_path): cache the expanded load
+ path. This saves 4KB of allocation and some stats for every
+ element of the load path (so nearly a MB in my Rails app)
+ on every require.
+
+ * load.c (rb_construct_expanded_load_path): ensure that $LOAD_PATH
+ entries are frozen strings. The user must mutate $LOAD_PATH
+ itself rather than its individual entries.
+
+ * vm_core.h (rb_vm_struct): add fields.
+
+ * vm.c (rb_vm_mark): mark new fields.
+
+ * ruby.c (process_options): modify $LOAD_PATH directly rather than
+ its elements.
+ Patch by Greg Price.
+ [ruby-core:47970] [Bug #7158]
+
+Mon Nov 5 23:24:42 2012 Greg Price <price@mit.edu>
+
+ * load.c (rb_feature_p, rb_provide_feature): index $LOADED_FEATURES
+ so that require isn't so slow.
+
+ * load.c (rb_provide_feature, get_loaded_features_index): ensure
+ that $LOADED_FEATURES entries are frozen strings. The user
+ must mutate $LOADED_FEATURES itself rather than its individual
+ entries.
+
+ * load.c (reset_loaded_features_snapshot): add a new function to reset
+ vm->loaded_features_snapshot.
+
+ * load.c (get_loaded_features_index_raw): add a new function to get
+ the loaded-features index.
+
+ * load.c (features_index_add_single): add a new function to add to the
+ loaded-features index a single feature.
+
+ * load.c (features_index_add): add a new function to add to the
+ loaded-features index all the required entries for `feature`.
+
+ * vm_core.h (rb_vm_struct): add fields.
+
+ * vm.c (rb_vm_mark): mark new fields.
+
+ * include/ruby/intern.h (rb_hash_clear): declare function.
+
+ * hash.c (rb_hash_clear): make function non-static.
+ Patch by Greg Price.
+ [ruby-core:47970] [Bug #7158]
+
+Mon Nov 5 23:23:51 2012 Greg Price <price@mit.edu>
+
+ * array.c (rb_ary_shared_with_p): new function.
+ Expose whether two arrays are shared (read-only, C only).
+
+ * include/ruby/intern.h (rb_ary_shared_with_p): declare.
+ Patch by Greg Price.
+ [ruby-core:47970] [Bug #7158]
+
+Mon Nov 5 23:21:14 2012 Greg Price <price@mit.edu>
+
+ * load.c (loaded_feature_path): clarify and briefly comment
+ function. These clarifications have no effect on the behavior
+ of the function.
+
+ * load.c (rb_feature_p): explain the search loop. Especially
+ useful because the logic is complicated as described in the
+ second paragraph.
+ Patch by Greg Price.
+ [ruby-core:47970] [Bug #7158]
+
+Mon Nov 5 22:45:03 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * ext/dl/win32/lib/Win32API.rb (Win32API#call): use 64bit pointer for x64
+ Windows. This would fix
+ TestSecureRandom#test_s_random_bytes_without_openssl error.
+ [ruby-core:47451] [Bug #6990]
+
+Mon Nov 5 22:09:26 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * cygwin/GNUmakefile.in (uncommon.mk): link *.res.o.
+ EXTOBJES is defined in uncommon.mk. *.res.o setting should be below
+ uncommon.mk.
+ [ruby-core:48858] [Bug #7277]
+
+Mon Nov 5 11:35:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_thread_init, native_thread_destroy):
+ removed HAVE_PTHREAD_CONDATTR_INIT check because this silly
+ #ifdef makes use-uninitialized-var issue and (2) native_cond_initialize()
+ already have a right platform and caller don't need any additional care.
+ [Bug #6825]
+
+Mon Nov 5 10:57:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi/core.rb: check if Tempfile is defined before use it.
+
+ * lib/cgi/core.rb: remove tempfiles only if tempfiles exist
+
+Mon Nov 5 12:17:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/uri/http.rb (URI::HTTP.build): Fix example
+ Patch by Carina C. Zona
+ [Fixes #209 Github]
+
+Mon Nov 5 09:55:05 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb: remove tempfile more early.
+
+Sun Nov 4 20:29:46 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi.rb, lib/cgi/*/rb: rename CGI#header to CGI#http_header,
+ add and update HTML5 tag generator. [Bug #7110]
+ Patch provided by Marcus Stollsteimer, thank you !
+
+Sun Nov 4 11:47:39 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * lib/fileutils.rb (module FileUtils): repatch [ruby-core:39622]
+ [Feature #5337]. improve performance of FileUtils.compare_stream.
+ [ruby-core:47545] [Feature #7028]
+
+Sun Nov 4 11:27:54 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (recursive_equal): fix to return true when self and other
+ are resized to same size and the current index become out of
+ range.
+
+ * test/ruby/test_array.rb: add a test for the above.
+
+Sun Nov 4 10:19:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (file_s_fnmatch): match with expanding braces if FNM_EXTGLOB
+ is set. [ruby-core:40037] [Feature #5422]
+
+Sat Nov 3 23:38:15 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: modified doc.
+ * rational.c: ditto.
+
+Sat Nov 3 22:38:55 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: modified doc.
+
+Sat Nov 3 18:35:55 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_vm_rewrite_ep_in_errinfo, vm_rewrite_ep_in_errinfo):
+ merge code and remove `rb_vm_rewrite_ep_in_errinfo'.
+
+Sat Nov 3 18:15:24 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c, proc.c: avoid unnecessary `rb_vm_rewrite_ep_in_errinfo'
+ calls.
+
+Sat Nov 3 17:53:43 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * bin/testrb: Use only Test::Unit::AutoRunner in test-unit gem
+ compatible API to be available by both test/unit bundled in Ruby
+ and test-unit gem.
+ * lib/test/unit.rb (Test::Unit::AutoRunner): Move codes from testrb.
+
+Sat Nov 3 14:56:21 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (parse_eu): should capture apostrophe too.
+
+Sat Nov 3 14:46:15 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (date__parse): revised the tight parser.
+
+Sat Nov 3 14:43:42 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/xmldecl.rb (REXML::XMLDecl#content): Add missing \A
+ and \z.
+
+Sat Nov 3 14:42:55 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/output.rb (REXML::Output#initialize): Use normalized
+ encoding name.
+
+Sat Nov 3 14:41:17 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/output.rb (REXML::Output): Don't output BOM in middle
+ of the output string.
+ * test/rexml/test_document.rb: Add a test for the above change.
+
+Sat Nov 3 14:09:55 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS: Add an item about REXML::Document#write.
+
+Sat Nov 3 13:46:49 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_document.rb: Fix tests that expect encoding name
+ isn't normalized.
+
+Sat Nov 3 13:26:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * dir.c (Dir#glob):
+ Documentation for pattern section, backslash subsection
+ Patch by Eric Bouchut
+ [ruby-core:48528] [Bug #7230]
+
+Sat Nov 3 13:26:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * io.c (IO#new):
+ Documentation for IO#open modes and formatting
+ [ruby-core:48052] [Bug #7179]
+
+Sat Nov 3 13:01:02 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_encoding.rb (EncodingTester#test_in_different_out):
+ Fix a test that expects encoding in XML declaration is changed by
+ Output's encoding. It is dropped feature.
+
+Sat Nov 3 12:49:45 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Document encoding
+ option. Now different encoding between XML file's encoding and
+ XML declaration's encoding is support.
+ [Feature #4872] (work in progress)
+ * lib/rexml/xmldecl.rb (REXML::XMLDecl#write): Always use XMLDecl's
+ encoding.
+ * test/rexml/test_document.rb: Update tests for the above change.
+
+Sat Nov 3 12:18:35 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (recursive_equal): fix not to make invalid pointers when
+ self and other are resized to same size in #== of their elements.
+ [ruby-dev:46373] [Feature #6177]
+
+Sat Nov 3 12:06:15 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_xml_declaration.rb (TestXmlDeclaration#test_*):
+ Remove needless prefix from test names.
+
+Sat Nov 3 12:04:52 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_xml_declaration_parent_child.rb: Rename to ...
+ * test/rexml/test_xml_declaration.rb: ... this.
+
+Sat Nov 3 11:43:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * hash.c (rb_hash_delete): Correct grammar
+ Patch by Glenn Oppegard
+ [Fixes #208 Github]
+
+Sat Nov 3 11:28:28 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * NEWS: add a news about GC::Profiler.raw_data.
+
+Sat Nov 3 11:01:32 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * NEWS: add a news about rb_newobj_of() and NEWOBJ_OF().
+
+Sat Nov 3 10:17:41 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * eval.c (f_current_dirname): add the new method for Kernel.
+ This method almost same as File.dirname(__FILE__). One
+ different behavior is it returns nil when __FILE__ returns nil.
+ [Feature #3346]
+
+ * NEWS: ditto
+
+ * test/ruby/test_method.rb: related test.
+
+Sat Nov 3 09:03:34 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_refinement.rb (test_new_method_by_send,
+ test_new_method_by_method_object): add tests for Kernel#send and
+ Kernel#method with refinements.
+
+ * test/ruby/test_refinement.rb (test_symbol_to_proc): add a test
+ calling a proc created by Symbol#to_proc outside the scope where
+ a refinement is closed over.
+
+Sat Nov 3 04:14:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_vm_rewrite_ep_in_errinfo): rewrite all catch points in
+ errinfo, not only the topmost frame. based on the patch by
+ ktsj (Kazuki Tsujimoto) in [ruby-dev:45656]. [Bug #6460]
+
+Fri Nov 2 20:11:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#timestamp_file): remove @ which looks like
+ configure variables.
+
+ * lib/mkmf.rb (MakeMakefile#timestamp_file): use .-. instead of !, a
+ special character of NMAKE and BSD make. [Bug #7265]
+
+Fri Nov 2 17:55:39 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (_run_parallel): Delete status line before showing
+ results. Patch by Hiroshi Shirosaki. [Bug #6897] [ruby-core:47250]
+
+ * lib/test/unit.rb (_run_parallel): Fix strange result when disabled retrying.
+ Patch by Hiroshi Shirosaki. [Bug #6897] [ruby-core:47250]
+
+Fri Nov 2 17:52:12 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * object.c (rb_mod_to_s): Module#{to_s,inspect}, when invoked on
+ a refinement, returns a string in the format #<refinement:C@M>,
+ where C is a refined class and M is a module at which the refinement
+ is defined.
+
+ * eval.c (rb_mod_refine): store information on a refinement for the
+ above change.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Fri Nov 2 16:57:52 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * vm_dump.c (rb_vm_bugreport): Because of many log directories,
+ making directory lists readable.
+
+Fri Nov 2 16:44:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * vm_dump.c (rb_vm_bugreport): add ~/Library/Logs/DiagnosticReports
+ in the locations list of crash reports.
+
+Fri Nov 2 14:52:52 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (recursive_equal): performance improvement by avoiding
+ overhead to call rb_ary_elt().
+ [ruby-dev:45412] [Feature #6177]
+
+Fri Nov 2 14:47:53 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * string.c (sym_to_proc, sym_call): A Proc created by Symbol#to_proc
+ should close over the current refinements.
+ [ruby-dev:46345] [Bug #7261]
+
+ * vm_eval.c (rb_call0, rb_search_method_entry,
+ rb_funcall_passing_block_with_refinements): add a new argument
+ `refinements' for the above changes.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Fri Nov 2 08:24:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (top_define_method): new method, main.define_method.
+ [ruby-core:45715] [Feature #6609]
+
+ * eval.c (top_include): fix a warning message, main is not a class or
+ module.
+
+Fri Nov 2 04:41:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#timestamp_file): use ! instead of %, a GNU
+ make special character.
+
+Fri Nov 2 04:40:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_process.rb (test_execopts_preserve_env_on_exec_failure):
+ use never existing file in the current temporary directory.
+
+Fri Nov 2 04:23:20 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: add feature to tag preview/rc.
+
+Fri Nov 2 03:23:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/mkmf.rb: fix for if config["libdir"] is nil.
+
+Thu Nov 1 23:06:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/make-snapshot: fix wrong regexp for releasing preview.
+ patched by mame.
+
+Thu Nov 1 22:27:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: add a news about objspace,
+ ObjectSpace.reachable_objects_from.
+
+Thu Nov 1 21:57:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new),
+ test/bigdecimal/test_bigdecimal.rb:
+ Fix exception message of BigDecimal constructor with a Float.
+
+Thu Nov 1 21:52:20 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_add),
+ test/bigdecimal/test_bigdecimal.rb:
+ need to specify precision for converting Rational and Float.
+ [ruby-core:48045] [Bug #7176]
+
+Thu Nov 1 21:42:20 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb: Revert r37404. My ubuntu box has
+ actually the directory named "/nonexistent"... Sorry.
+
+Thu Nov 1 21:28:28 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb: Process.exec raised EACCES on Linux
+ 3.5.0-17-generic. This is a temporal fix to rescue that exception.
+ Needs kosaki's review.
+
+Thu Nov 1 21:19:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (set_relation): parent_iseq need to be set regardless iseq
+ type. fix r37397.
+
+Thu Nov 1 19:47:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (RUBY_STACK_MIN): may not a compile time constant.
+ fix r37079. [ruby-dev:46322] [Bug #7247]
+
+Thu Nov 1 16:44:36 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * NEWS: add note for Module#refine, Module#refinements,
+ Module#using, and Kernel#using.
+
+Thu Nov 1 14:41:47 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_using_module): using should be used indirectly.
+ [ruby-dev:46326] [Feature #7251]
+
+Wed Oct 31 18:17:38 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_profile_record): don't define unused variables when
+ GC_PROFILE_MORE_DETAIL is 0.
+
+Wed Oct 31 18:10:53 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_prof_mark_timer_stop): count is not initialized.
+
+Wed Oct 31 09:28:24 2012 Eric Hodel <drbrain@segment7.net>
+
+ * thread.c (rb_thread_call_without_gvl2): Note that ubf() may or may
+ not be called with the GVL. Hinted that rb_thread_call_with_gvl()
+ can be used to access ruby functionality.
+
+Wed Oct 31 09:06:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * thread.c (rb_thread_call_without_gvl2): Update documentation to
+ natural English.
+ * thread.c (rb_thread_call_with_gvl): ditto.
+
+Wed Oct 31 02:53:07 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/dl/lib/dl/struct.rb: fix strange require order. [ruby-dev:45702]
+
+ * ext/dl/lib/dl/value.rb: ditto
+
+ * test/dl/test_c_struct_entry.rb: remove strange require order from
+ tests.
+
+ * test/dl/test_c_union_entity.rb: ditto
+
+Tue Oct 30 23:59:32 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine): fix the error message when no block is
+ given. [ruby-dev:46319] [Bug #7244]
+
+ * test/ruby/test_refinement.rb: related test.
+
+Tue Oct 30 19:27:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (redirect_dup2): set standard handles when new fd is stdio,
+ because if there is no allocated console at the moment Windows does
+ not automatically associate it for child process's standard handle.
+ this is adhoc workaround.
+ reported by Martin Thiede at [ruby-core:48542] [Bug #7239].
+
+ * io.c (rb_cloexec_dup2): ditto.
+
+Tue Oct 30 03:08:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rbconfig/obsolete.rb (Config): re-introduce warnings for a
+ lame-duck. [ruby-core:46836] [Bug #6809]
+
+Tue Oct 30 02:20:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * thread.c: added Thread#thread_variable_(get|set),
+ Thread#thread_variable?, and Thread#thread_variables for operating
+ on variables that are local to threads. [ruby-core:47790]
+
+ * vm.c: ditto
+
+ * test/ruby/test_thread.rb: tests for thread variables.
+
+Mon Oct 29 18:22:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_close): close separately per each
+ instances, as well as IO.
+
+Mon Oct 29 10:22:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/handlers/recorder.rb: added a class for
+ recording YAML parse and emit events.
+
+ * ext/psych/lib/psych/handler.rb: adding a list of events so that
+ handler classes can more easily be meta-programmed.
+
+ * test/psych/handlers/test_recorder.rb: tests for the change.
+
+Mon Oct 29 05:48:52 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/ostruct.rb: Add [] and []=, base on a patch by Thomas Sawyer.
+ Also accept {Open}Struct as argument to new.
+ Add #eql?, #hash & #each_pair
+ Protect new_ostruct_member
+
+Mon Oct 29 03:20:58 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Fix determinant_e [ruby-dev:46305] [Bug #7228]
+
+Sun Oct 28 23:52:25 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_document.rb: Add tests for parsing XML encoded
+ by UTF-8 with BOM.
+
+Sun Oct 28 23:47:09 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/source.rb: Move encoding detection code to base class.
+ * lib/rexml/encoding.rb: Remove needless encoding detection code.
+
+Sun Oct 28 21:40:13 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb: Fix a bug that UTF-8 is used
+ for UTF-16XX encoded XML that doesn't have encoding="UTF-16" in
+ XML declaration.
+ * test/rexml/test_document.rb: Add tests for the above change.
+
+Sun Oct 28 21:37:34 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_document.rb: Group tests that they parse
+ UTF-16XX encoded XML that has encoding="UTF-16" in XML declaration.
+
+Sun Oct 28 21:25:11 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/source.rb (REXML::IOSource#initialize): Reduce
+ @line_break initialize code. It should be done only in #encoding=.
+ * lib/rexml/parsers/baseparser.rb: Don't set UTF-16 encoding to
+ source by encoding="UTF-16" in XML declaration because UTF-16XX
+ source encoding should be set in Source#initialize or
+ IOSource#initialize. They should handle BOM. Parser should not
+ consider about it.
+
+Sun Oct 28 21:18:37 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_document.rb: Add tests for parsing XML encoded
+ by UTF-16 with BOM.
+
+Sun Oct 28 19:12:11 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (iso8601_{ext,bas}_time): should not match
+ empty string.
+
+Sun Oct 28 18:51:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (date__parse): revised the tight parser.
+
+Sun Oct 28 15:41:50 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Add :encoding option
+ to support custom XML encoding.
+ [Feature #4872] (work in progress)
+ * test/rexml/test_document.rb: Add tests for the above change.
+
+Sun Oct 28 15:00:19 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Remove needless
+ indent in document.
+
+Sun Oct 28 14:59:14 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Accept options
+ Hash as argument.
+ * test/rexml/test_document.rb: Add tests for the above change.
+
+Sun Oct 28 14:09:44 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Fix wrong usage
+ in document.
+
+Sun Oct 28 14:03:48 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Fix wrong method
+ names in document.
+
+Sun Oct 28 10:12:15 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: `tree` should return the
+ same thing on every call.
+
+ * test/psych/visitors/test_yaml_tree.rb: related test.
+
+Sun Oct 28 10:05:03 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: YAML Tree object should
+ be able to take an emitter object as it's output.
+
+ * test/psych/visitors/test_yaml_tree.rb: related test.
+
+Sun Oct 28 08:23:16 2012 Koichi Sasada <ko1@atdot.net>
+
+ * bignum.c (bignew_1): Bignum instances are frozen.
+ Feature #3222
+
+ * include/ruby/ruby.h: Fixnum instances are also frozen.
+
+ * class.c (singleton_class_of): check Bignum before
+ singleton checking.
+
+ * test/ruby/test_bignum.rb: add a test.
+
+ * test/ruby/test_fixnum.rb: ditto.
+
+ * test/ruby/marshaltestlib.rb, test/ruby/test_eval.rb,
+ test/ruby/test_object.rb: catch up above changes.
+
+Sun Oct 28 04:38:06 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_define_method): remove type and frozen checking.
+ Checking is done in `rb_singleton_class()'.
+
+Sun Oct 28 00:49:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assign_in_cond): warn for static content object assignments
+ in conditional statements. [ruby-dev:43083] [Feature #4299]
+
+Sat Oct 27 23:33:41 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * gc.c (gc_profile_result, gc_profile_report): use internal structures
+ to avoid allocations and progressively print the output for #report.
+ [ruby-core:47163] [Bug #6865]
+
+Sat Oct 27 11:01:10 2012 Koichi Sasada <ko1@atdot.net>
+
+ * numeric.c (rb_float_new_in_heap), include/ruby/ruby.h:
+ make all Float objects frozen.
+ [ruby-dev:46081] [ruby-trunk - Feature #6936]
+ Most part of patch by NARUSE, Yui <naruse@ruby-lang.org>.
+
+ * class.c (singleton_class_of): raise TypeError when
+ trying to define a singleton method on Float objects.
+
+ * vm.c (vm_define_method): ditto.
+
+ * test/ruby/marshaltestlib.rb: catch up above changes.
+
+ * test/ruby/test_class.rb: ditto.
+
+ * test/test_pp.rb: ditto.
+
+Sat Oct 27 10:50:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * object.c (rb_mod_const_get): make sure the constant name is
+ converted to a string before searching. [ruby-core:48405]
+
+Sat Oct 27 10:12:13 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * iseq.c (rb_iseq_compile_with_option): Instead of testing
+ respond_to, just check if the argument is actually a file,
+ because by calling user-defined gets something weired can
+ happen. Patch by Glass_saga. [ruby-dev:40202] [Bug #2861]
+
+ * parse.y (ripper_initialize): ditto.
+
+Sat Oct 27 10:07:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (enum lex_state_e): [EXPERIMENTAL] lex_state as bit field /
+ IS_lex_state() macro. based on the patch by Dave B in
+ [ruby-core:23503]. [Feature #1493]
+
+Sat Oct 27 10:05:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (fstat): use _fstati64() instead of fstati64()
+ on mingw32.
+
+Sat Oct 27 06:28:33 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * object.c (rb_mod_const_get): const_get accepts qualified constant
+ strings. e.g. Object.const_get("Foo::Bar::Baz") [ruby-core:41404]
+
+ * test/ruby/test_module.rb: tests for new behavior
+
+Fri Oct 26 13:24:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (literal_concat_gen): merge fixed strings across
+ concatenated literals, after an interpolation.
+
+Thu Oct 25 17:48:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (has_redirection): should use shell (cmd.exe) when
+ the commandline contains '&'.
+ reported by Roger Pack at [ruby-core:47912] [Bug #7143], and
+ patched by Heesob Park at [ruby-core:47931].
+
+Thu Oct 25 15:00:08 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h, class.c: remove (revert)
+ `rb_add_method_cfunc_frameless()' API.
+ This API is not mature to become an official API.
+ For example, we can not use this API with
+ `rb_define_private_method()'.
+
+ * method.h, vm_method.c (rb_add_method_cfunc_frameless): removed.
+
+Thu Oct 25 13:35:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/mkconfig.rb: remove string literal concatenation.
+
+Wed Oct 24 18:49:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/objspace/objspace.c (type2sym, count_objects_size): use enum
+ instead of size_t which may be larger than actual values.
+
+Wed Oct 24 17:41:24 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: add `-x' or `--exclude' option
+ to specify exclude benchmark name pattern.
+ You can specify "-x foo" if you want to exclude the benchmarks
+ if the name of benchmark contains `foo'.
+
+Wed Oct 24 11:57:24 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_prepare_free_objects): rename to match the behavior of
+ this function.
+
+Wed Oct 24 11:55:19 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (reachable_object_from_i): change data
+ structure of the result of reachable objects. Keys of table
+ contains object_id of each reachable objects. Value of table
+ is an object itself or an instance of InternalObjectWrapper.
+ To avoid duplication, we use st_table and object_id keys.
+
+ * ext/objspace/objspace.c (type2sym): bug fix.
+ Should use `i' instead of `type'.
+
+Wed Oct 24 10:33:09 2012 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (garbage_collect, gc_marks): move the location of
+ clear and restore rb_objspace_t::mark_func_data
+ from garbage_collect() to gc_marks().
+
+Wed Oct 24 10:17:45 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (Init_objspace): add a new method
+ `ObjectSpace::InternalObjectWrapper#internal_object_id' which returns
+ an object id of a wrapped internal object.
+
+Wed Oct 24 08:55:04 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (ObjectSpace.reachable_objects_from):
+ internal object support.
+ If given object `obj' has references to internal objects
+ (such as T_NODE objects), then this method returns instances of
+ `ObjectSpace::InternalObjectWrapper' instead of that internal objects.
+ This instance contains a reference to an internal object and you can
+ check the type of internal object using
+ `ObjectSpace::InternalObjectWrapper#type' method.
+ Rdoc of `InternalObjectWrapper' is not prepared yet.
+
+ * gc.c (rb_objspace_reachable_objects_from), gc.h: change
+ an interface of 'rb_objspace_reachable_objects_from()'
+
+ * gc.c, gc.h: add two APIs
+ - rb_objspace_markable_object_p(obj): check markable or not.
+ - rb_objspace_internal_object_p(obj): check internal or not.
+
+Wed Oct 24 05:52:36 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): remove `default' and
+ add a case for `VM_METHOD_TYPE_UNDEF'.
+
+Wed Oct 24 05:41:18 2012 Koichi Sasada <ko1@atdot.net>
+
+ * eval_error.c (error_print), vm_eval.c (eval_string_with_cref),
+ vm_trace.c (rb_suppress_tracing): use TH_PUSH_TAG() instead of
+ PUSH_TAG().
+
+Wed Oct 24 05:17:52 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (vm_call0_body): remove RUBY_VM_CHECK_INTS()
+ after method invocation using rb_call0().
+
+ * vm_eval.c (vm_call0_body): remove default section on top of
+ switch statement and add cases for `VM_METHOD_TYPE_CFUNC_FRAMELESS'
+ and `VM_METHOD_TYPE_UNDEF'.
+
+ * vm_eval.c (vm_call0_body): remove useless brackets.
+
+Tue Oct 23 22:34:49 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (thread_raise_m): check interrupts after Thread#raise
+ if a target thread is the current thread because the behavior
+ of Thread.current.raise is expected to perform same as
+ Kernel.raise (by rubyspec).
+
+Tue Oct 23 17:08:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (usage, process_options): show more info in --help.
+ [EXPERIMENTAL] [ruby-core:48072] [Bug #7184]
+
+Tue Oct 23 14:20:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-electric.el using variable `last-command-event' instead of
+ obsolete `last-command-char', so that work with Emacs trunk.
+ a patch by Victor Deryagin <vderyagin AT gmail.com>.
+
+Tue Oct 23 14:06:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (visibility_option): visibility attribute is not
+ available before GCC 4, so do not use -fvisibility option in that
+ case. [ruby-core:48147] [Bug #7205]
+
+Tue Oct 23 12:57:29 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, vm_insnhelper.c, vm_eval.c (OPT_CALL_CFUNC_WITHOUT_FRAME):
+ add a new optimization and its macro `OPT_CALL_CFUNC_WITHOUT_FRAME'.
+ This optimization makes all cfunc method calls `frameless', which
+ is faster than ordinal cfunc method call.
+ If `frame' is needed (for example, it calls another method with
+ `rb_funcall()'), then build a frame. In other words, this
+ optimization delays frame building.
+ However, to delay the frame building, we need additional overheads:
+ (1) Store the last call information.
+ (2) Check the delayed frame building before the frame is needed.
+ (3) Overhead to build a delayed frame.
+ rb_thread_t::passed_ci is storage of delayed cfunc call information.
+ (1) is lightweight because it is only 1 assignment to `passed_ci'.
+ To achieve (2), we modify GET_THREAD() to check `passed_ci' every
+ time. It causes 10% overhead on my environment.
+ This optimization only works for cfunc methods which do not need
+ their `frame'.
+ After evaluation on my environment, this optimization does not
+ effective every time. Because of this evaluation results, this
+ optimization is disabled at default.
+
+ * vm_insnhelper.c, vm.c: add VM_PROFILE* macros to measure behaviour
+ of VM internals. I will extend this feature.
+
+ * vm_method.c, method.h: change parameters of the `invoker' function.
+ Receive `func' pointer as the first parameter.
+
+Tue Oct 23 06:21:05 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: just get the constant defined in Ruby.
+
+ * ext/psych/lib/psych/syntax_error.rb: Psych::SyntaxError now inherits
+ from StandardError rather than SyntaxError. Thanks Eric Hodel!
+
+ * test/psych/test_exception.rb: tests for change.
+
+Tue Oct 23 06:17:36 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Cache symbols while
+ tokenizing. Thanks Kevin Menard!
+
+Tue Oct 23 06:15:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Updated the RegExp to catch
+ Strings earlier in the tokenization process. Thanks Kevin Menard!
+
+Tue Oct 23 06:12:39 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Handle nil tags specially
+ to avoid slow method_missing calls. Thanks Kevin Menard!
+
+Tue Oct 23 06:07:57 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Ignore bad timestamps. If
+ something looks like a timestamp but has an invalid component, treat
+ it as a string instead of throwing an ArgumentError.
+ Thanks Rhett Sutphin!
+
+ * test/psych/test_scalar_scanner.rb: appropriate tests.
+
+Tue Oct 23 06:04:07 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Fix scalar_scanner to
+ understand strings starting with an underscore and containing only
+ digits. Thanks Kelley Reynolds.
+
+ * test/psych/test_scalar_scanner.rb: test for fix
+
+Tue Oct 23 06:00:41 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: Changed comment in psych.rb to update new
+ home page for libyaml. Thanks to Carolyn Ann.
+
+Sun Oct 21 19:12:59 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_core.h (rb_vm_t::trace_running): add a new field
+ `trace_running' to store vm global tracing status.
+
+ * vm_trace.c: fix SEGV bug. event_hook was free'd
+ even when the hook is still used in another thread.
+ [ruby-dev:46141] [Bug #7032]
+
+Sun Oct 21 19:12:42 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_core.h (rb_vm_t::trace_flag): remove `trace_flag'
+ which is no longer used.
+
+Sun Oct 21 18:34:27 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (date__parse): uses more tight parser if
+ defined TIGHT_PARSER. now inactivated; because it introduces
+ incompatibilities and it is a bit slow.
+
+Sat Oct 20 15:35:06 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * include/ruby/ruby.h: add C APIs.
+ VALUE rb_newobj_of(VALUE klass, VALUE flags)
+ #define NEWOBJ_OF(obj,type,klass,flags)
+ These allow to change a allocation strategy depending on klass
+ or flags.
+
+ * gc.c: ditto
+
+ * array.c: use new C API.
+ * bignum.c: ditto
+ * class.c: ditto
+ * complex.c: ditto
+ * ext/socket/ancdata.c: ditto
+ * ext/socket/option.c: ditto
+ * hash.c: ditto
+ * io.c: ditto
+ * marshal.c: ditto
+ * numeric.c: ditto
+ * object.c: ditto
+ * random.c: ditto
+ * range.c: ditto
+ * rational.c: ditto
+ * re.c: ditto
+ * string.c: ditto
+ * struct.c: ditto
+ [Feature #7177][Feature #7047]
+
+Sat Oct 20 12:50:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/socket/socket.c: Documentation for Socket
+ Based on a patch by David Albert
+ [Bug #7105] [ruby-core:47828]
+
+Sat Oct 20 11:00:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/open-uri.rb: Documentation for OpenURI
+
+Sat Oct 20 06:18:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * hash.c (initialize_copy): unset the default proc if there isn't one
+ for the target hash, call to_hash, check frozen status.
+
+Fri Oct 19 22:22:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_vm_jump_tag_but_local_jump): pass through thrown objects.
+ [ruby-dev:46234] [Bug #7185]
+
+ * vm_eval.c (rb_eval_cmd): if state is non-zero, val should be nil and
+ rb_vm_jump_tag_but_local_jump() just jump tag.
+
+Fri Oct 19 22:11:55 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * pack.c (pack_unpack): set encoding of the
+ 'H','h','B' and 'B' modifiers to US-ASCII.
+
+ * test/ruby/test_pack.rb: tests for the above.
+ [ruby-core:47653][Bug #7050]
+
+ * test/test_securerandom.rb: tests for SecureRandom.hex
+ from tenderlove. [ruby-core:46792][Bug #6799]
+
+Fri Oct 19 19:29:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * method.h (rb_method_cfunc_t::invoker): add new field (func ptr)
+ `invoker'. `invoker' function invoke cfunc body
+ (rb_method_cfunc_t::func).
+ `invoker' is set at method definition timing.
+ With this change, the big `switch' (branch) in `call_cfunc()'
+ is no longer needed.
+ However, the performance benefit is only a bit.
+
+ * vm_core.h (rb_call_info_t::aux::func): add a new field to store
+ cfunc body function pointer.
+
+ * vm_method.c (call_cfunc_invoker_func): add a new function which
+ returns a suitable invoke function.
+
+ * vm_method.c (setup_method_cfunc_struct): added.
+
+ * vm_method.c (rb_add_method): fix to set `invoker'.
+
+ * vm_eval.c (vm_call0_body): catch up above changes.
+
+ * vm_insnhelper.c (call_cfunc): removed.
+
+ * vm_insnhelper.c (vm_call_cfunc): fix to call cfunc body
+ with `invoker' function.
+
+Fri Oct 19 16:55:58 2012 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm_eval.c: use TH_PUSH_TAG() instead of PUSH_TAG().
+
+Fri Oct 19 11:13:55 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: remove unexpected `output'.
+ (commit miss)
+
+Fri Oct 19 10:24:03 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_search_method): remove needless local variable.
+
+Fri Oct 19 10:22:26 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bmx_temp.rb: removed.
+ This file should not be in repository.
+
+Fri Oct 19 10:20:10 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: add new option `--ruby-arg [ARG]'
+ which is passed as a launch parameter for each ruby's execution.
+ ($ ruby [ARG] [File])
+
+Thu Oct 18 18:42:35 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_send_simple): move the location of
+ `opt_send_simple' to the place near `send' definition.
+ (to take care about icache locality).
+
+Thu Oct 18 18:29:25 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (send): remove unused condition.
+ This condition will be true after r37258.
+
+ * vm_insnhelper.c (vm_caller_setup_args): remove `UNLIKELY' on
+ checking blockiseq (it seems `LIKELY').
+
+Thu Oct 18 17:31:58 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_send_simple): introduce new instruction used
+ when no need to care about block and splat.
+
+ * compile.c: use the `opt_send_simple' instruction.
+
+Thu Oct 18 16:44:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_add_method_cfunc, rb_add_method_cfunc_frameless):
+ check arity earlier at definition time.
+
+Thu Oct 18 15:11:31 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c: add `inline' keyword to several functions.
+ Compilers (gcc) are conservative than I expected.
+
+Thu Oct 18 15:01:15 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: add a decl. of
+ `rb_define_frameless_method()'.
+
+Thu Oct 18 14:31:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (new_callinfo): set a temporary index of callinfo
+ (used in `iseq_set_sequence()') to rb_call_info_t::aux::index.
+ rb_call_info_t::argc is initialized by same value of
+ rb_call_info_t::orig_argc.
+
+Thu Oct 18 14:11:08 2012 Koichi Sasada <ko1@atdot.net>
+
+ * class.c (rb_define_frameless_method): rename from
+ rb_define_method_fast(). Defined method with this C API
+ does not make a method frame. It is bit lightweight than
+ ordinal C functions. Now only 0 or 1 argc are permitted.
+
+ * method.h (VM_METHOD_TYPE_CFUNC_FRAMELESS): rename macro name
+ from VM_METHOD_TYPE_CFUNC_FAST.
+
+ * vm_insnhelper.c, vm_method.c: rename related functions.
+
+ * proc.c (rb_method_entry_arity): catch up above changes.
+
+Thu Oct 18 10:30:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assignable_gen): fail if yyerror occurred. fix a bug in
+ r36973.
+
+Thu Oct 18 09:23:03 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * hash.c (initialize_copy): duping should rehash the hash.
+
+ * test/ruby/test_hash.rb: added a test to ensure rehash.
+
+Wed Oct 17 21:16:47 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * common.mk (WPROGRAM): need same dependencies as PROGRAM.
+
+ * cygwin/GNUmakefile.in (uncommon.mk): move include position
+ below WPROGRAM definition to be defined in uncommon.mk.
+
+ * ext/extmk.rb (all, static): fix make rubyw.exe failure with make -jN.
+ If make of ruby.exe and rubyw.exe run in parallel, link dll and link
+ exe run in parallel, which causes link failure on mingw. To fix this,
+ we make ruby.exe and rubyw.exe in one make process.
+ [ruby-core:48007] [Bug #7165]
+
+Wed Oct 17 16:25:34 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm2_method_missing.rb: add a benchmark to measure
+ performance of invoking `method_missing'.
+
+Wed Oct 17 16:23:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_getivar): fix to use `aux.index' instead of
+ `aux.opt_pc'.
+
+Wed Oct 17 16:03:54 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method_missing): make a refactoring
+ about method_missing process. Use `vm_call_method()' to invoke
+ `method_missing' method instead of `rb_funcall2()'.
+ In `vm_call_method()', set fastpath to `vm_call_method_missing()'
+ if it can be cached.
+
+ * vm_core.h (rb_call_info_t): add new field
+ `rb_call_info_t::aux::missing_reason' to pass the reason to
+ `vm_call_method_missing()'.
+
+Wed Oct 17 15:33:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (opt-dir): allow multiple directories separated by
+ $PATH_SEPARATOR as well as dir_config in mkmf.rb. [ruby-core:47868]
+ [Bug #7120]
+
+Wed Oct 17 15:08:13 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: fix Net::IMAP::ResponseParser to accept
+ message/delivery-status ([ruby-core:47920] [Bug #7146]),
+ message/rfc822 attachments ([ruby-core:47921] [Bug #7147]), and
+ (BODY ("MIXED")) ([ruby-core:47951] [Bug #7153]).
+ patched by Tony Arkles.
+
+ * test/net/imap/test_imap_response_parser.rb: related test.
+
+Wed Oct 17 11:04:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_hash.rb (TestHash#test_dup_equality): added a new test
+ to show the problem of r37232.
+
+Wed Oct 17 10:48:40 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_method): fix a build error that occurs
+ when OPT_INLINE_METHOD_CACHE is 0.
+
+Wed Oct 17 08:46:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm2_dstr.rb: add a benchmark to measure
+ performance of dynamic generated string ("foo#{bar}baz").
+
+Wed Oct 17 08:32:46 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_dstr_fragments): use `putobject' instead of
+ `putstring' for all of strings used by NODE_DSTR because
+ ruby users can not grab this string.
+ For example, the string object of "baz" in "foo#{bar}baz"
+ is located by `putobject' (users can not touch "baz" object
+ directly). This change reduces GC pressure.
+ This improvement is suggested by Aaron Patterson.
+
+Wed Oct 17 08:02:57 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_threadptr_interrupt_mask): fix to check interrupt
+ after interrupt_mask changed.
+
+Wed Oct 17 06:42:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): fix to return value immediately.
+ Remove CHECK_INTS() after that method dispatch.
+
+Wed Oct 17 06:25:56 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * hash.c (initialize_copy): copy the underlying st_table on dup,
+ rather than copying the hash key by key. [ruby-core:48009]
+
+ * test/ruby/test_hash.rb: relevant tests for initialize_copy
+
+Wed Oct 17 06:17:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_iseq_setup_2): separate tailcall and normal
+ method frame setup functions.
+ Add checking interrupts at the tailcall setup function.
+
+Wed Oct 17 05:35:37 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm1_yield.rb: add a benchmark to measure `yield'
+ (invoke empty block) performance.
+
+ * benchmark/bm_vm2_method_with_block.rb: add a benchmark to measure
+ method invocation with empty block.
+
+Wed Oct 17 05:05:07 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_invoke_block): vm_caller_setup_args() can skip
+ when splat flag is not set.
+
+Wed Oct 17 01:53:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_getivar, vm_setivar): support index inline cache
+ with rb_call_info_t to speedup `attr' getter and setter.
+ Cached index is stored in rb_call_info_t::aux::index.
+ `index' == 0 means not cached. `index' > 0 means cached and cached
+ index is `index - 1'.
+
+ * insns.def ((get|set)instancevariable): use new wrapper functions
+ vm_(get|set)instancevariable() defined in vm_insnhelper.c.
+
+ * vm_core.h (rb_call_info_t::aux): introduce new union data because
+ opt_pc can share with index.
+
+Tue Oct 16 22:24:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb (show_results): Show speedup ratio
+ with first executables score at last of results
+ if two or more executables are given.
+
+Tue Oct 16 21:59:01 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: some refactoring.
+ (1) Remove `average differential'.
+ In this benchmark driver, We should not care about `average'.
+ We use fastest score because this score should not include
+ any disturbances (affections of background process, etc).
+ If you care about timing affect, I recommend `median'
+ score with more than 5 examinations rather than simple
+ `average' score (`average' score was affected by error scores).
+ (2) Show log file name.
+ (3) Change default directory from './' to driver's directory.
+
+Tue Oct 16 14:56:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_join): need to check again after any conversion run.
+ [ruby-core:48012] [Bug #7168]
+
+Tue Oct 16 12:52:14 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_file):
+ rename from file_assertion.
+
+Tue Oct 16 11:30:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_join): hide the result under construction until
+ return.
+
+ * file.c (rb_file_join): check nul-byte only for strings, since
+ FilePathStringValue() does it. [ruby-core:48012] [Bug #7168]
+
+ * file.c (rb_file_join): path names must be ASCII-compatible.
+ [ruby-core:48012] [Bug #7168]
+
+ * file.c (check_path_encoding): new function to ensure path name
+ encoding to be ASCII-compatible.
+
+Tue Oct 16 09:40:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): use
+ Regexp.new instead of literal to ignore a parser warning.
+
+Tue Oct 16 09:30:30 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): ignoring
+ warnings are already set in setup method.
+
+Tue Oct 16 06:44:06 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): fix wrong condition.
+
+Tue Oct 16 06:29:18 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): disable CI_SET_FASTPATH() if
+ this method call needs splat argument because cached functions
+ (vm_call_attrset, vm_call_ivar, vm_call_cfunc_fast_(unary|binary))
+ do not check an arity.
+
+ * bootstraptest/test_method.rb: add a test to check an above issue.
+
+Tue Oct 16 06:15:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * method.h: introduce new method type VM_METHOD_TYPE_CFUNC_FAST.
+ This method is similar to VM_METHOD_TYPE_CFUNC methods, but
+ called cfunc without building new frame (does not push new control
+ frame). If error is occurred in cfunc, the backtrace only shows
+ caller frame and upper.
+ This kind of methods can be added by rb_define_method_fast().
+ This feature is similar to specialized instructions (opt_plus, etc),
+ but more flexible (but a bit slower).
+
+ * class.c (rb_define_method_fast): added.
+ Maybe it will be renamed soon.
+
+ * vm_insnhelper.c (vm_call_method): support method type
+ VM_METHOD_TYPE_CFUNC_FAST.
+
+ * proc.c (rb_method_entry_arity): catch up new method type.
+
+ * vm_method.c (rb_add_method_cfunc_fast): added.
+
+Tue Oct 16 02:32:29 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.h (CI_SET_FASTPATH): add new parameter `enabled'.
+ If `enable' is 0 then CI_SET_FASTPATH() doesn't work.
+ And add new configuration option OPT_CALL_FASTPATH. If this macro
+ was defined by 0, then CI_SET_FASTPATH() doesn't work any more.
+
+ * vm_insnhelper.c (vm_call_method): Pass `0' for `enabled' parameter
+ of CI_SET_FASTPATH if this method is protected.
+
+Tue Oct 16 02:17:35 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (VM_CALL_*): rename VM_CALL_*_BIT
+ to VM_CALL_* (remove `_BIT' suffix).
+ Add comments on each macros.
+ Remove unused macro VM_CALL_TAILRECURSION_BIT.
+
+ * compile.c, iseq.c, insns.def, vm_insnhelper.c: ditto.
+
+Mon Oct 15 22:14:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#file_assertion):
+ rewrite file assertions.
+
+Mon Oct 15 09:41:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): skip CI_SET_FASTPATH() if
+ it was called from vm_yield_setup_args().
+
+Mon Oct 15 05:20:13 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.h CI_SET_FASTPATH: introduce new macro
+ `CI_SET_FASTPATH(ci, func)'. This macro set `ci->call' as `func'.
+ `func' (ci->call) is called at the last of `send'
+ (and `invokesuper') instruction.
+ `CI_SET_FASTPATH' does not set `ci->call' when the method
+ (stored in `ci->me') is `protected'.
+
+ * vm_insnhelper.c (vm_call_method): use `CI_SET_FASTPATH'.
+ After several checking (visibility, argc checking), the result of
+ checking can be reused until re-definition of this method
+ with inline method cache.
+
+ Note that this optimization is now experimental.
+ If you find any problem about it, please tell us.
+
+Mon Oct 15 04:51:55 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c: refactoring.
+ - move all `call' related functions to the last of file.
+ - make functions for respective method types in vm_call_method().
+ (all functions have same function parameters)
+
+ * vm_core.h: add `opt_pc' field in `rb_call_info_t'
+ as temporal variable.
+
+ * vm_eval.c (vm_call0_body): catch up above changes.
+
+Mon Oct 15 03:51:46 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm1_attr_ivar(_set).rb: added (for method dispatch speed).
+
+ * benchmark/bm_vm1_float_simple.rb: added (for flonum/float).
+
+Mon Oct 15 02:51:16 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (vm_call0_body): add new function.
+ `vm_call0()' makes call_info struct and calls `vm_call0_body()'
+ with this struct. In near future, `vm_call0()' will be removed
+ because all of `vm_call0()' users setup call_info struct by itself.
+
+Mon Oct 15 01:38:06 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (send, invokesuper, invokeblock, opt_*), vm_core.h:
+ use only a `ci' (rb_call_info_t) parameter instead of using
+ parameters such as `op_id', 'op_argc', `blockiseq' and flag.
+ These information are stored in rb_call_info_t at the compile
+ time.
+ This technique simplifies parameter passing at related
+ function calls (~10% speedups for simple method invocation at
+ my machine).
+ `rb_call_info_t' also has new function pointer variable `call'.
+ This `call' variable enables to customize method (block)
+ invocation process for each place. However, it always call
+ `vm_call_general()' at this changes.
+ `rb_call_info_t' also has temporary variables for method
+ (block) invocation.
+
+ * vm_core.h, compile.c, insns.def: introduce VM_CALL_ARGS_SKIP_SETUP
+ VM_CALL macro. This flag indicates that this call can skip
+ caller_setup (block arg and splat arg).
+
+ * compile.c: catch up above changes.
+
+ * iseq.c: catch up above changes (especially for TS_CALLINFO).
+
+ * tool/instruction.rb: catch up above changes.
+
+ * vm_insnhelper.c, vm_insnhelper.h: ditto. Macros and functions
+ parameters are changed.
+
+ * vm_eval.c (vm_call0): ditto (it will be rewritten soon).
+
+Sun Oct 14 12:30:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (rb_f_sub, rb_f_gsub): pass the given block.
+ [ruby-core:47967] [Bug #7157]
+
+Sat Oct 13 23:15:39 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regparse.c (parse_char_class): should match with a hyphen after a
+ range in a character class.
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_char_class): fixed wrong
+ test.
+
+ * test/ruby/test_regexp.rb (TestRegexp#check): now can accept the
+ error message.
+
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): renamed
+ because the previous name was wrong.
+
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): added
+ more test pattern.
+
+Sat Oct 13 03:01:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (realpath_rec): prevent link from GC while link_names refers
+ the content.
+
+Sat Oct 13 01:37:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_regexp.rb
+ (TestRegexp#test_raw_hyphen_and_type_char_after_range): added new
+ test. ref [ruby-core:47115] [Backport #6853]
+
+Fri Oct 12 21:55:08 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * include/ruby/win32.h (rb_w32_pow): set floating point precision
+ for mingw-w64 x86 pow(). This improves the precision of pow() on
+ Windows XP for TestFloat#test_round_with_precision failure.
+ [ruby-core:47911] [Bug #7142]
+
+Fri Oct 12 21:37:25 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/webrick/test_cgi.rb (TestWEBrickCGI#test_cgi): skip a test
+ depending on locale on Windows. ENV[] doesn't work properly if
+ console code page is not equal to file system encoding.
+ [ruby-core:47910] [Bug #7140]
+
+Fri Oct 12 20:40:29 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (posix_sh_cmds): the command name of colon is ":".
+
+Fri Oct 12 18:18:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_get_path_check): path name must not contain NUL bytes.
+
+Fri Oct 12 16:06:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/merger.rb: now can merge revision(s) without --ticket again.
+
+Fri Oct 12 14:10:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (dir_config, init_mkmf): use configured libdir value as
+ default library path. [ruby-core:43726] [Bug #6207]
+
+Fri Oct 12 05:25:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/timeout.rb (timeout):
+ Remove paragraph on wrong implementation detail.
+ [ruby-core:47739] [Bug #7088]
+
+Thu Oct 11 23:09:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_sub{seq,pos,str}, rb_str_each_{line,codepoint}):
+ prevent String copies from GC. [ruby-core:47881] [Bug #7135]
+
+Thu Oct 11 07:40:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * iseq.c (insn_operand_intern): cast op to rb_call_info_t* before
+ compare with iseq->callinfo_entries whose type is rb_call_info_t*.
+
+Thu Oct 11 03:37:08 2012 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_block.rb: add tests for block with super.
+
+Thu Oct 11 02:54:07 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c: fix debug prints to catch up recent changes
+ such as VM data structures.
+
+Thu Oct 11 02:50:34 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (insn_operand_intern): add support disasm TS_CALLINFO
+ operands.
+
+Wed Oct 10 15:12:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess#test_execopts_gid): skip on
+ windows because the platform does not have Process.group method.
+ patched by Jon Forums in [ruby-core:47878] [Bug #7133].
+
+Tue Oct 9 23:18:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_file, assert_file_not): more
+ descriptive assertions for File predicates.
+
+Tue Oct 9 18:01:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sample): use rb_random_ulong_limited, since
+ precision of long may be larger than double.
+
+ * random.c (rb_random_ulong_limited): new function to return a random
+ value from 0 upto limit as unsigned long, similarly to
+ rb_genrand_ulong_limited but with arbitrary RNG object.
+
+Tue Oct 9 17:13:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_execarg_addopt, rb_execarg_run_options): add :uid and
+ :gid options. [ruby-core:47414] [Feature #6975]
+
+Tue Oct 9 14:36:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_free): fix memory leak.
+ rb_iseq_t::callinfo_entries should be freed.
+
+Tue Oct 9 14:28:18 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (rb_call_info_t): add new type `rb_call_info_t'.
+ This data structure contains information including inline method
+ cache. After that, `struct iseq_inline_cache_entry' does not
+ need to contain inline cache for method invocation.
+ Other information will be added to this data structure.
+
+ * vm_core.h (rb_iseq_t): add `callinfo_entries' and `callinfo_size'
+ members to `rb_iseq_t'.
+
+ * insns.def, compile.c: Use CALL_INFO instead of IC.
+
+ * tool/instruction.rb: support CALL_INFO as operand type.
+
+ * vm_insnhelper.c, vm_insnhelper.h: ditto.
+
+Sun Oct 7 23:54:33 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_run_func): don't call inflate() when
+ z->stream.avail_in == 0. it return Z_BUF_ERROR.
+ but deflate() could be called with z->stream->avail_in == 0 because
+ it has hidden buffer in z->stream->state (opaque structure).
+ fix for gem install error. [ruby-dev:46149] [Bug #7040]
+
+Mon Oct 8 23:55:41 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refinements): new method Module#refinements.
+
+ * test/ruby/test_refinement.rb: add new tests for the above changes.
+
+Mon Oct 8 23:02:19 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c, gc.c, iseq.c, node.h, vm_insnhelper.c, vm_insnhelper.h,
+ vm_method.c: rename omod and overlaid modules to refinements.
+
+ * eval.c (hidden_identity_hash_new): renamed from identity_hash_new.
+
+Sun Oct 7 04:50:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/abbrev.rb: Documentation examples for Abbrev.
+ [ruby-core:47442] [Bug #6985]
+
+Sun Oct 7 04:50:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * thread.c (rb_thread_aref):
+ Grammar in Thread documentation.
+ Patch by Steve Klabnik [ruby-core:47799] [Bug #7099]
+
+Sun Oct 7 04:37:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * string.c (rb_str_match):
+ Clarify behavior for captured strings and local variable assignment
+ Patch by Marcus Stollsteimer [ruby-core:47668] [Bug #7062]
+
+Sat Oct 6 18:31:36 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_opts.h (OPT_GLOBAL_METHOD_CACHE): new build option to
+ enable/disable global method caching. [ruby-dev:46203] [Bug #7111]
+
+ * vm_method.c (rb_method_entry_get_with_omod): don't use global
+ method cache if OPT_GLOBAL_METHOD_CACHE is 0.
+
+Sat Oct 6 16:32:04 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (search_method): check omod only once for performance.
+
+Sat Oct 6 09:42:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/encdb.c, enc/utf_16_32.h (ENC_DUMMY_UNICODE): endian-less wide
+ UTF encodings are dummy but Unicode.
+
+ * encoding.c (rb_encdb_set_unicode): set Unicode flag.
+
+ * template/encdb.h.tmpl: allow ENC_DUMMY variants.
+
+ * encoding.c (rb_enc_unicode_p): oniguruma provides Unicode flag.
+
+Fri Oct 5 17:18:42 JST 2012 TAKANO Mitsuhiro <tak@no32.tk>
+
+ * template/Doxyfile.tmpl: remove SHOW_DIRECTORIES and
+ HTML_ALIGN_MEMBERS lines. They have been obsolete in
+ Doxygen version 1.8.2.
+
+Fri Oct 5 15:26:18 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c: add ObjectSpace#reachable_objects_from.
+ This method returns an array of objects referenced by given object.
+ If given object is special objects such as true/false/nil/Fixnum etc
+ then it returns nil. See rdoc for details.
+ [ruby-core:39772]
+
+ * test/objspace/test_objspace.rb: add a test for this method.
+
+ * gc.c: add rb_objspace_reachable_objects_from().
+ To make this function, add several member `mark_func_data'
+ to rb_objspace_t. If mark_func_data is not null, then
+ gc_mark() calls mark_func_data::mark_func.
+
+ * gc.h: export rb_objspace_reachable_objects_from().
+
+Thu Oct 4 23:40:04 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (init_heap): call init_mark_stack before to allocate
+ altstack. This change avoid the stack overflow at the signal
+ handler on 32bit, but I don't understand reason... [Feature #7095]
+
+Thu Oct 4 22:39:27 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (getlocal, setlocal): remove old getlocal/setlocal
+ instructions and rename getdaynmic/setdynamic instructions
+ to getlocal/setlocal.
+
+ * compile.c: ditto.
+
+ * iseq.c: remove TS_DINDEX.
+
+ * vm_exec.h (dindex_t): remove type definition of `dindex_t'.
+
+ * tool/instruction.rb: ditto.
+
+Thu Oct 4 21:44:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_analysis_insn|operand|register): use st_insert
+ instead of using rb_hash_aset() because rb_hash_aset()
+ check $SAFE.
+
+Thu Oct 4 21:15:26 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (VM_COLLECT_USAGE_DETAILS): make new VM usage analysis
+ hooks (old macro name is COLLECT_USAGE_ANALYSIS).
+ This feature is only for VM developers. (I'm not sure I can use
+ `VM developers' (the plural form) in this sentence).
+ If VM_COLLECT_USAGE_DETAILS is not 0, VM enables the following
+ usage collection features:
+ (1) instruction: collect instruction usages.
+ (2) operand: collect operand usages.
+ (3) register: collect register usages.
+ The results are stored in
+ RubyVM::USAGE_ANALYSIS_INSN for (1, 2),
+ RubyVM::USAGE_ANALYSIS_INSN_BIGRAM for (1) and
+ RubyVM::USAGE_ANALYSIS_REGS for (3).
+ You can stop collecting usages with
+ RubyVM::USAGE_ANALYSIS_INSN_STOP(),
+ RubyVM::USAGE_ANALYSIS_OPERAND_STOP(),
+ RubyVM::USAGE_ANALYSIS_REGISTER_STOP()
+ for (1), (2), (3) respectively.
+ You can also change the hook functions by setting
+ C level global variables
+ `ruby_vm_collect_usage_func_(insn|operand|register)'
+ for (1), (2), (3) respectively.
+ See codes for more details.
+
+ * tool/instruction.rb: fix macro names.
+
+ * iseq.c (insn_operand_intern): make it export (used in vm.c).
+ fix to skip several processes if not needed (pointer is 0).
+
+ * vm_dump.c: move codes for collection features to vm.c.
+
+ * vm_exec.h: rename macro and function names.
+
+ * vm_insnhelper.h: ditto.
+
+Thu Oct 4 18:59:14 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_settracefunc.rb (test_tracepoint):
+ remove unused test case.
+ (this test case is redefined by newer tests)
+
+Thu Oct 4 17:24:51 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (rb_objspace_call_finalizer): call gc_mark_stacked_objects
+ at suitable point.
+
+Thu Oct 4 16:31:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_objspace_call_finalizer): mark self-referencing finalizers
+ before run finalizers, to fix SEGV from btest on 32bit.
+
+ * gc.c (gc_mark_stacked_objects): extract from gc_marks().
+
+Thu Oct 4 11:43:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): round stack limit to page size
+ boundary to calculate stack size more precisely. [ruby-dev:46174]
+ [Bug #7084]
+
+Wed Oct 3 19:51:57 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: Use the non-recursive marking instead of recursion. The
+ recursion marking of CRuby needs checking stack overflow and the
+ fail-safe system, but these systems not good at partial points,
+ for example, marking deep tree structures. [ruby-dev:46184]
+ [Feature #7095]
+
+ * configure.in (GC_MARK_STACKFRAME_WORD): removed. It's used by
+ checking stack overflow of marking.
+
+ * win32/Makefile.sub (GC_MARK_STACKFRAME_WORD): ditto.
+
+Wed Oct 3 15:33:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): use getrlimit() for the main
+ thread on Mac OS X, since pthread_get_stack{addr,size}_np()
+ return the default value always, but not the ulimit value.
+ [ruby-dev:46174] [Bug #7084]
+
+Wed Oct 3 11:43:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_reopen): improvement to accept optional arguments.
+ a patch by Glass_saga (Masaki Matsushita) in [ruby-core:47806].
+ [Feature #7103]
+
+Wed Oct 3 04:36:11 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_add_file): Added
+ documentation
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths):
+ ditto
+ * ext/openssl/ossl_x509store.c (ossl_x509store_add_cert): ditto
+
+Wed Oct 3 02:23:37 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * error.c (exc_to_s, name_err_to_s, name_err_mesg_to_str): do not
+ taint messages.
+
+Tue Oct 2 16:47:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (identity_hash_new): hide internal hashes for refinements.
+
+ * eval.c (rb_mod_refine): no default value.
+
+Mon Oct 1 22:54:02 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (identity_hash_new): new function to create a new identity
+ hash.
+
+ * eval.c (rb_overlay_module, rb_mod_using, rb_mod_refine): use
+ identity_hash_new().
+
+Mon Oct 1 02:34:53 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (--with-opt-dir): Make this also work on DLDFLAGS
+ so LIBRUBY_SO links fine with libexecinfo installed in a
+ non-system directory.
+
+Sun Sep 30 23:32:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * vm_dump.c (rb_vm_bugreport): add /Library/Logs/DiagnosticReports
+ in the list of locations of crash reports.
+
+Sun Sep 30 21:18:03 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_concat): use memcpy to copy a string which contains
+ NUL characters. [ruby-core:47751] [Bug #7090]
+
+Sat Sep 29 19:41:53 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): kill child process
+ before Timeout::Error is raised. rmdir of mktmpdir fails with
+ EACCES if child process is alive on Windows.
+
+ * test/thread/test_queue.rb (TestQueue): increase timeout.
+ This test takes long time on Windows XP.
+
+Sat Sep 29 19:41:33 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/net/http/test_http.rb (TestNetHTTP#test_proxy_address):
+ clear environment variables. If http_proxy environment variable was
+ set, the test failed.
+
+ * test/net/http/test_http.rb (TestNetHTTP#test_proxy_port): ditto.
+
+Sat Sep 29 19:41:11 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/drb/drbtest.rb (DRbCore#teardown):
+ Use Process.kill :KILL on Windows because Process.kill :INT silently
+ fails on Windows 7 and raises EINVAL on Windows XP for spawned
+ process with new_pgroup: false.
+
+ * test/drb/drbtest.rb (DRbAry#teardown): ditto.
+
+Sat Sep 29 19:40:32 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic):
+ set script encoding to work with LANG=C. It would work on both
+ Windows and Unix. Refix of r37051.
+
+Sat Sep 29 11:21:06 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (rb_vm_using_modules): use using_modules before
+ klass to fix method lookup order, and use klass even if klass is
+ not a module to make refinements in class_eval invoked on classes
+ work.
+
+ * eval.c (rb_using_module): accept a class as the second argument.
+
+ * eval.c (rb_mod_using, f_using): raise a TypeError if the argument
+ is not a module.
+
+ * test/ruby/test_refinement.rb: add new tests for the above changes.
+
+Sat Sep 29 02:18:57 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic):
+ Use ruby only on Windows since the test fails on Unix with LANG=C.
+ [ruby-core:47709] [Bug #7076]
+
+Fri Sep 28 22:19:31 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic):
+ echo command doesn't work properly against non-ascii character on
+ Windows with chcp 437. Instead we use ruby.
+ [ruby-core:47709] [Bug #7076]
+
+Fri Sep 28 17:54:31 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_setup_method): refactoring.
+ Remove src_argc and use iseq->arg_size directly.
+
+Fri Sep 28 17:26:27 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/installer.rb (check_that_user_bin_dir_is_in_path):
+ test_generate_bin_bindir_with_user_install_warning(TestGemInstaller)
+ fails on Windows with msys bash. It makes comparing paths
+ case-insensitive.
+ pick from upstream to fix a failure of test-all [ruby-core:47711]
+ https://github.com/rubygems/rubygems/commit/c474edb2f3704206f04da1c8c6cf9fb079d84abe
+
+Fri Sep 28 15:44:45 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (search_method): copy refinement iclasses to search
+ superclasses correctly.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Fri Sep 28 15:15:41 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_checkenv): remove unused instruction `opt_checkenv'.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * node.h: remove unused node `NODE_OPTBLOCK'.
+
+ * ext/objspace/objspace.c, gc.c (gc_mark_children): ditto.
+
+Fri Sep 28 13:14:34 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: now VM_DEBUG_BP_CHECK should be 1.
+
+Fri Sep 28 12:51:54 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: remove rb_control_frame_t::bp (bp: base pointer).
+ `bp' can be calculate by `sp' (stack pointer) of previous frame.
+ Now, `bp_check' field is remained for debug. You can eliminate
+ this field by setting VM_DEBUG_BP_CHECK as 0.
+
+ * vm_insnhelper.c (vm_base_ptr): add `vm_base_ptr(cfp).
+ This function calculates base pointer from cfp.
+
+ * vm_insnhelper.c (vm_setup_method): push `recv' value on top of
+ value stack (before method parameters).
+ This change is for keeping consistency with normal method dispatch.
+
+ * insns.def: fix to use vm_base_ptr().
+
+ * vm.c (vm_exec): ditto.
+
+ * vm_dump.c: remove `bp' related dumps.
+
+ * cont.c (fiber_init): fix to check VM_DEBUG_BP_CHECK.
+
+Fri Sep 28 10:40:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_reopen): accept File::Constants as well as mode string.
+ based on the patch by Glass_saga (Masaki Matsushita) in
+ [ruby-core:47694]. [Feature #7067]
+
+Thu Sep 27 18:36:51 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_overlay_module, rb_mod_refine): accept a module as the
+ argument of Module#refine.
+
+ * vm_method.c (search_method): if klass is an iclass, lookup the
+ original module of the iclass in omod in order to allow
+ refinements of modules.
+
+ * test/ruby/test_refinement.rb: add tests for the above changes.
+
+Thu Sep 27 18:12:20 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/syslog/lib/syslog/logger.rb: add a formatter to the
+ Syslog::Logger object. [Bug #7065]
+ * test/syslog/test_syslog_logger.rb: ditto.
+
+Wed Sep 26 16:39:57 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: add new instruction `opt_empty_p' for optimize `empty?'
+ method. Apply a patch proposed at [ruby-dev:46120]
+ [ruby-trunk - Feature #6972] by Glass_saga (Masaki Matsushita).
+
+ * compile.c (iseq_specialized_instruction), vm.c, vm_insnhelper.h:
+ ditto.
+
+ * id.c, template/id.h.tmpl: ditto.
+
+ * test/ruby/test_optimization.rb: test for this changes.
+
+Tue Sep 25 09:59:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (invokesuper): klass in cfp is not valid in at_exit and
+ END blocks. [ruby-core:47680] [Bug #7064]
+
+Tue Sep 25 08:11:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * iseq.c (rb_iseq_defined_string): the index of defined_strings must
+ be the value of type - 1.
+
+Mon Sep 24 17:36:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (defined_expr), insns.def (defined): share single frozen
+ strings. [EXPERIMENTAL] [ruby-core:47558][Feature #7035]
+
+ * iseq.c (rb_iseq_defined_string): make expression strings.
+
+Mon Sep 24 11:22:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: add --ticket option to add ticket number.
+
+Sun Sep 23 21:51:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (String#unspace): unescape with backslashes. normal
+ makes need to escape spaces with backslashes. nmake is not the
+ case. [Bug #7036]
+
+ * lib/mkmf.rb (create_makefile): use timestamp file dependencies for
+ directories.
+
+ * lib/mkmf.rb: unexpand macros.
+
+ * lib/mkmf.rb (LIBPATHFLAG): no needs to escape library path here.
+
+ * lib/mkmf.rb (MakeMakefile#configuration): make prefix paths
+ internal to deal with in Makefile.
+
+ * lib/mkmf.rb (MakeMakefile#mkintpath): not a global function now.
+
+Sun Sep 23 02:33:37 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * complex.c: Fix examples of r36993.
+ Keep the simple definition, mathematics define the result.
+ Based on patch by Robin Dupret. Fixes #188 on github.
+
+Sat Sep 22 07:15:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * ext/ripper/lib/ripper.rb:
+ Match sample output to Ripper.sexp from current trunk version.
+ [Bug #6929]
+
+Thu Sep 20 23:05:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_cond_initialize): destroy condattr
+ after using it. Patch by Stanislav Sedov. Thank you.
+ [Bug #7041] [ruby-core:47619]
+
+Thu Sep 20 22:53:02 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_cond_initialize): clean up #ifdef condition.
+
+Thu Sep 20 16:42:44 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/drb/ssl.rb (DRb::DRbSSLSocket::SSLConfig::DEFAULT): add
+ SSLTmpDhCallback for configuration option.
+
+ * lib/drb/ssl.rb (setup_ssl_context): copy the value of tmp_dh_callback.
+
+ * test/drb/ut_array_drbssl.rb: set tmp_dh_callback to suppress warning.
+
+ * test/drb/ut_drb_drbssl.rb: ditto.
+
+Thu Sep 20 10:56:08 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/drb/ut_drb.rb: revert a part of r36987, and get rid of a warning
+ with another method. if the substitution is removed, the ExtSrv
+ object will be GC'ed and some tests will be blocked.
+
+Thu Sep 20 07:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * complex.c: Examples for Complex Documentation.
+ Patch by Robin Dupret.
+ Fixes #184 on github.
+
+Thu Sep 20 07:15:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * ext/ripper/lib/ripper.rb: Documentation for Ripper.
+ +:void_stmt+ is meaningless
+ [Bug #6929] [ruby-core:47507]
+
+Thu Sep 20 07:05:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/csv.rb (Object#CSV, Array#to_csv, String#parse_csv):
+ Examples and documentation for CSV.
+ [Bug #6880] [ruby-core:47218]
+
+Thu Sep 20 00:42:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (take_items), enum.c (enum_zip): raise TypeError at
+ non-enumerable objects, not NoMethodError. [ruby-dev:46145]
+ [Bug #7038]
+
+ * vm_eval.c (rb_check_block_call): check_funcall variant with block
+ function.
+
+Tue Sep 18 17:51:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_attrs): add npn_select_db to
+ suppress warning: instance variable @npn_select_cb not initialized
+
+Sun Sep 16 17:47:00 2012 Eric Hodel <drbrain@segment7.net>
+
+ * tool/change_maker.rb: Update svn detection for subversion 1.7's
+ single .svn directory.
+
+Sun Sep 16 11:39:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_set_read_length): if the read length equals to the buffer
+ string size then nothing to do. or ensure the string modifiable
+ before setting the length only when the former is shorter. based on
+ the patch in [ruby-core:47541] by Hiroshi Shirosaki.
+ [ruby-core:46586] [Bug #6764]
+
+Sun Sep 16 08:57:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (strict_warnflags): separate strict flags from
+ warnflags only for core. [ruby-dev:46105]
+
+Sun Sep 16 08:16:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .editorconfig: add. [ruby-core:47548] [Feature #7030]
+
+Sat Sep 15 01:56:40 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Merge upstream: 50a383c84.
+ [ruby-dev:46128] [Bug #7005]
+
+Sat Sep 15 00:20:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_convert): suppress warning.
+
+Fri Sep 14 04:05:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * array.c (rb_ary_diff, rb_ary_uniq):
+ Enhance documentation for array uniqueness
+ Based on a patch by Robin Dupret
+ [Bug #6872] [ruby-core:47209]
+
+Fri Sep 14 03:30:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * array.c (rb_ary_select):
+ Update documentation for Array#select
+ * enum.c (enum_find_all, enum_reject):
+ Update documentation for Enumerable#find_all and Enumerable#reject
+ Based on a patch by Jeff Saracco
+ [Bug #6908] [ruby-core:47285] [Fixes #166 on github]
+
+Fri Sep 14 00:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * signal.c (rb_f_kill):
+ Update documentation for Process.kill to reflect kill(2)
+ Patch by Richo Healey
+
+Thu Sep 13 21:40:49 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * lib/securerandom.rb (SecureRandom.random_bytes):
+ Use 64bit value as pointer for Windows x64 to fix SystemCallError.
+
+ * lib/securerandom.rb (SecureRandom.lastWin32ErrorMessage):
+ Set proper encoding to avoid invalid byte sequence error.
+ [ruby-core:47451] [Bug #6990]
+
+Thu Sep 13 11:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/optparse.rb: Remove unreachable email address from documentation
+ [Bug #6996] [ruby-core:47459]
+
+Thu Sep 13 11:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/xmlrpc.rb: Documentation for XMLRPC
+ * lib/xmlrpc/datetime.rb: ditto.
+ * lib/xmlrpc/parser.rb: ditto.
+ * lib/xmlrpc/client.rb: ditto.
+ * lib/xmlrpc/utils.rb: ditto.
+ * lib/xmlrpc/README.rdoc: ditto.
+ * lib/xmlrpc/create.rb: ditto.
+ * lib/xmlrpc/base64.rb: ditto.
+ * lib/xmlrpc/config.rb: ditto.
+ * lib/xmlrpc/httpserver.rb: ditto.
+ * lib/xmlrpc/server.rb: ditto.
+ * lib/xmlrpc/marshal.rb: ditto.
+ * lib/xmlrpc/README.txt: ditto.
+ [Bug #6909] [ruby-core:47286]
+
+Thu Sep 13 10:22:11 2012 Takashi Toyoshima <toyoshim@gmail.com>
+
+ * configure.in: Don't use PIE on Haiku because loader support is not
+ enough.
+
+Thu Sep 13 08:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/shellwords.rb: Documentation for Shellwords.
+
+Thu Sep 13 08:00:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * ext/ripper/lib/ripper.rb: Documentation for Ripper.
+ * ext/ripper/lib/ripper/lexer.rb: ditto.
+ * ext/ripper/lib/ripper/sexp.rb: ditto.
+ * ext/ripper/lib/ripper/filter.rb: ditto.
+ * ext/ripper/lib/ripper/core.rb: ditto.
+ [Bug #6929] [ruby-core:47309]
+
+Wed Sep 12 22:59:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_method_missing, vm_call_method): reuse arguments
+ on the VM stack and get rid of ALLOCA.
+
+Wed Sep 12 22:45::00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * ext/pathname/lib/pathname.rb: Documentation for Pathname.
+ * ext/pathname/pathname.c: ditto.
+ [Bug #6947] [ruby-core:47354]
+
+Mon Sep 10 10:19:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: fixed wrong change in a part of r34802.
+
+Sun Sep 9 22:02:50 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/basicsocket.c (rsock_bsock_send):
+ avoid unnecessary select() calls before doing I/O
+ Patch by Eric Wong. [Feature #4538] [ruby-core:35586]
+ * ext/socket/init.c (rsock_s_recvfrom): ditto.
+ * ext/socket/init.c (rsock_s_accept): ditto.
+ * ext/socket/udpsocket.c (udp_send): ditto.
+ * io.c (io_fflush): ditto.
+ * io.c (io_binwrite): ditto.
+ * io.c (rb_io_syswrite): ditto.
+
+Mon Sep 10 01:38:51 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (nogvl_close, maygvl_close, nogvl_fclose, maygvl_fclose):
+ suppress integer <-> pointer cast warnings.
+ [Feature #4570] [ruby-core:35711]
+
+Mon Sep 10 01:36:00 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_close): notify fd close before releasing gvl.
+ * io.c (fptr_finalize): modify fptr->mode before releasing gvl.
+ remove unnecessary rb_thread_fd_close().
+ [Feature #4570] [ruby-core:35711]
+
+Mon Sep 10 00:16:34 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c: exec() requires to be single threaded also on Haiku.
+ by Takashi Toyoshima <toyoshim@gmail.com>
+ https://github.com/ruby/ruby/pull/178
+
+Sun Sep 9 21:21:15 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (Queue#pop): Fixed double registration issue when
+ mutex.sleep is interrupted. [Bug #5258] [ruby-dev:44448]
+ * lib/thread.rb (SizedQueue#push): ditto.
+
+ * test/thread/test_queue.rb (test_sized_queue_and_wakeup,
+ test_queue_pop_interrupt, test_sized_queue_pop_interrupt,
+ test_sized_queue_push_interrupt): new tests.
+
+Sun Sep 9 20:20:31 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/sync.rb (Sync_m#sync_lock): Fixed wakeup/raise unsafe code.
+ Patched by Masaki Matsushita. [Bug #5355] [ruby-dev:44521]
+
+ * test/thread/test_sync.rb (test_sync_lock_and_wakeup,
+ test_sync_upgrade_and_wakeup, test_sync_lock_and_raise):
+ new test.
+
+Sun Sep 9 18:39:46 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/intern.h (rb_thread_blocking_region): Added
+ a comment of recommended alternative way.
+
+Sun Sep 9 18:37:05 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/sync.rb (Sync_m): Removed RCS_ID.
+
+Sun Sep 9 18:21:03 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (test_advise_pipe): new test to check
+ io.advise() against anonymous io object don't make crash.
+ made by Eric Wong. [Bug #6081] [ruby-core:42880]
+
+Sun Sep 9 16:47:12 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (nogvl_close, maygvl_close, nogvl_fclose, maygvl_fclose):
+ new functions.
+ * io.c (fptr_finalize): release GVL if possible.
+ Patched by Eric Wong. [Feature #4570] [ruby-core:35711]
+
+Sun Sep 9 16:08:48 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_bufread): removed unnecessary rb_thread_wait_fd().
+ Patch by Eric Wong. [Bug #6629] [ruby-core:45789]
+ * io.c (rb_io_sysread): ditto.
+ * io.c (copy_stream_fallback_body): ditto.
+
+Sun Sep 9 15:21:52 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_lock): stop multiple threads use
+ pthread_cond_timedwait() concurrently. [Bug #6278] [ruby-core:44275]
+
+Sat Sep 8 18:52:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (struct rb_classext_struct): move allocator function into
+ rb_classext_t from ordinary method table. [ruby-dev:46121]
+ [Feature #6993]
+
+ * object.c (rb_obj_alloc): call allocator function directly.
+
+ * vm_method.c (rb_define_alloc_func, rb_undef_alloc_func)
+ (rb_get_alloc_func): use allocator function in rb_classext_t.
+
+Fri Sep 7 01:21:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake), lib/mkmf.rb (have_framework): fix splitting
+ options with an argument, not using NUL as special character.
+ [ruby-core:47447] [Bug #6987]
+
+Thu Sep 6 14:49:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rp): FLONUM support.
+
+ * include/ruby/ruby.h (ruby_special_consts): define FLONUM constants
+ always, so that they are available from gdb.
+
+ * include/ruby/ruby.h (RB_FLOAT_TYPE_P): merge FLONUM and non-FLONUM
+ versions. inline TYPE() comparison and FLONUM_P() should be
+ optimized away on non-FLONUM.
+
+Thu Sep 6 08:20:55 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 3.4.0 (r7762)
+ * test/minitest/*: ditto
+
+Wed Sep 5 19:20:53 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (rb_warn4S): renamed from rb_warn4(), because the case in
+ r36911 takes a string.
+
+ * parse.y (rb_warn4S): use ripper_warnS() for ripper.
+
+ * parse.y (ripper_warnS): now it is used.
+
+Wed Sep 5 15:51:52 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (notifications): [experimental] update notification
+ template.
+
+Wed Sep 5 15:21:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (rb_warn4): added as a rb_warn variant to warn with explicit
+ source file name and line in parse.y.
+
+ * parse.y (warn_unused_var): use rb_warn4 to suppress warning on ripper.
+
+Wed Sep 5 13:30:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_make_pattern): names under recursive need to be single
+ basenames to match for each name. [ruby-core:47418] [Bug #6977]
+
+Tue Sep 4 20:55:17 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): show Timeout::Error
+ instead of IOError if the timeout has expired.
+
+ * test/test_pstore.rb
+ (PStoreTest#test_pstore_files_are_accessed_as_binary_files):
+ increase timeout because this test is slow on Windows.
+ [ruby-core:47402] [Bug #6965]
+
+Tue Sep 4 11:28:57 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm_eval.c (ruby_eval_string_from_file_protect): initializer
+ element is not computable at load time.
+
+Tue Sep 4 07:48:35 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_asn1_rb:
+ test/openssl/test_ssl_session.rb:
+ test/openssl/test_x509name.rb:
+ test/openssl/test_buffering.rb:
+ test/openssl/test_x509cert.rb:
+ test/openssl/test_ssl.rb: Refactor code that leads to warnings on
+ Ruby CI.
+
+Tue Sep 4 07:02:56 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/utils.rb: Use DSS1 as DSA signature digest for all
+ OpenSSL versions < 1.0.0.
+ [Feature #6946] [ruby-core:47405]
+
+Mon Sep 3 21:22:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_float_value): suppress warnings.
+ [ruby-core:47406][Bug #6971]
+
+Mon Sep 3 14:49:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/matrix.rb (Vector#magnitude): accumulate squares of absolute
+ values to fix for complex vector. [ruby-dev:46100] [Bug #6966]
+
+Mon Sep 3 10:09:36 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb: Detect OpenSSL_FIPS macro
+ ext/openssl/ossl.c: Expose OpenSSL::OPENSSL_FIPS constant to
+ indicate whether OpenSSL runs in FIPS mode.
+ test/openssl/test_pkey_dh.rb: Generate 256 bit keys for
+ non-FIPS installations to improve test performance (e.g. for
+ rubyci).
+ test/openssl/utils.rb: Replace DSS1 as certificate signature
+ digest with SHA1 for FIPS installations when using DSA by
+ introducing TestUtils::DSA_SIGNATURE_DIGEST.
+ test/openssl/test_x509cert.rb:
+ test/openssl/test_x509crl.rb:
+ test/openssl/test_x509req.rb: Use DSA_SIGNATURE_DIGEST
+ NEWS: Introduce OpenSSL::OPENSSL_FIPS
+
+ These changes allow running the OpenSSL tests in FIPS mode
+ while keeping a high performance for non-FIPS installations.
+ Introduction of OpenSSL::OPENSSL_FIPS allows for applications
+ to react to special requirements when using OpenSSL in FIPS mode.
+ [Feature #6946] [ruby-core:47345]
+
+Sun Sep 2 21:46:28 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/utils.rb: Use a cached DH key instead of generating a
+ new one each time.
+
+Sun Sep 2 05:41:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/ssl.rb (WEBrick::Config::SSL): add new key
+ SSLTmpDhCallback to set SSLContext#tmp_dh_callback.
+
+ * lib/webrick/ssl.rb (WEBrick::GenericServer#setup_ssl_context):
+ follow above.
+
+Sat Sep 1 18:50:50 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (#initialize_copy, #eql): Use instance_variable_get
+ instead of instance_eval.
+
+Fri Aug 31 21:47:56 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/test/unit/test-unit.gemspec: Make test/unit default gem.
+ [Feature #6875] [ruby-dev:46051]
+
+Fri Aug 31 18:35:02 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb: Check existence of OPENSSL_NPN_NEGOTIATED.
+ ext/ossl_ssl.c: Support Next Protocol Negotiation. Protocols to be
+ advertised by the server can be set in the SSLContext by using
+ SSLContext#npn_protocols=, protocol selection on the client is
+ supported by providing a selection callback with
+ SSLContext#npn_select_cb. The protocol that was finally negotiated
+ is available through SSL#npn_protocol.
+ test/openssl/test_ssl.rb: Add tests for Next Protocol Negotiation.
+ NEWS: add news about NPN support.
+ [Feature #6503] [ruby-core:45272]
+
+Fri Aug 31 17:38:43 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#{each,reject!,select!}, SortedSet#each): Pass
+ the original block through instead of creating one that only
+ yields the passed argument.
+
+Fri Aug 31 16:23:20 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb: Introduce several new error classes where only
+ ArgumentError and StandardError were used. IPAddr::Error is
+ their common ancestor class that inherits from ArgumentError for
+ backward compatibility. Submitted by Jon Daniel. Fixes #173 on
+ GitHub.
+
+Fri Aug 31 14:51:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/bigdecimal/test_bigdecimal.rb (TestBigDecimal#test_to_f): added
+ for previous commit.
+
+Fri Aug 31 14:32:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): use self's sign to
+ determine 0.0 and Inf's sign instead of internal double value's.
+ Reported by phasis68 (Heesob Park) at [ruby-core:47381] [Bug #6955]
+
+Fri Aug 31 14:31:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl, tool/id2token.rb: make id.h independent from
+ parse.h, and make parse.c dependent on it instead.
+
+Fri Aug 31 14:27:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): fix race conditions at install-ext.
+ target files need to depend on destination directory timestamp
+ files, not phony targets.
+
+Fri Aug 31 14:03:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_trace.c (clean_hooks): do not access freed memory.
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks): fix uninitialized state
+ when no events is executed.
+
+Thu Aug 30 18:21:51 2012 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_close): call rb_last_status_clear.
+
+Thu Aug 30 16:17:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): check underflow since
+ strtod() sets errno to ERANGE at underflow too. [ruby-core:47342]
+ [Bug #6944]
+
+Thu Aug 30 12:44:43 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#{<,>,<=,>=}): Define comparison operators as
+ shorthand for the {proper_}{subset?,superset?} methods (finally).
+ Given a push by Alexander E. Fischer.
+
+Thu Aug 30 09:21:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/ftp.rb (URI::FTP#initialize): raise InvalidURIError if "//"
+ is not present [ruby-core:47344] [Bug #6945]
+
+Thu Aug 30 07:45:12 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/ruby/test_file_exhaustive.rb: fix test introduced in r36811 for
+ posix environments where HOME is not defined. [ruby-core:47322]
+
+Wed Aug 29 23:42:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_last_status_clear): declared.
+
+ * process.c (rb_last_status_clear): exported.
+ (rb_f_system): call rb_last_status_clear.
+
+ * io.c (rb_f_backquote): call rb_last_status_clear.
+
+Wed Aug 29 22:01:15 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_f_system): check failures of waitpid.
+ [ruby-talk:398687]
+
+Wed Aug 29 15:03:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBDIR_BASENAME): use configured libdir value to fix
+ --enable-load-relative on systems where libdir is not default value,
+ overridden in config.site files. [ruby-core:47267] [Bug #6903]
+
+ * ruby.c (ruby_init_loadpath_safe): ditto.
+
+Wed Aug 29 14:34:41 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: SIZE_MAX is defined in stdint.h, so r36755 breaks
+ 32bit FreeBSD. [ruby-core:47360] [Bug #6948]
+
+Wed Aug 29 04:50:04 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/utils.rb
+ test/openssl/test_pair.rb
+ test/openssl/test_pkey_dh.rb: Use 1024 bit DH parameters to satisfy
+ OpenSSL FIPS requirements. Patch by Vit Ondruch.
+ [Bug #6938] [ruby-core:47326]
+
+Tue Aug 28 22:31:49 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * insns.def (checkmatch): suppress warnings. [ruby-core:47339]
+ [Bug #6930]
+
+Tue Aug 28 20:03:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: Fixing Haiku R1/alpha3 build with gcc-4.4.4.
+ - omit ANSI standard flags to compile socket extension where
+ anonymous union is required.
+ - remove redundant -be flags.
+ by Takashi Toyoshima <toyoshim@gmail.com>
+ https://github.com/ruby/ruby/pull/168
+
+Tue Aug 28 11:32:37 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * nacl/GNUmakefile.in (.rbconfig.time): r36828 was incomplete.
+ It did not run correctly on clean build.
+
+Tue Aug 28 09:25:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (Makefile): make to depend on common.mk, to
+ stop and force to re-run make process when common.mk is changed.
+
+Mon Aug 27 20:19:49 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/etc/test_etc.rb (TestEtc#test_getgrgid): fix for non unique GID.
+ No unixen systems guarantee that GID is unique. Etc.getgrgid would
+ not return the first entry in the order of Etc.group for shared GID.
+ [ruby-core:47312] [Bug #6935]
+
+Mon Aug 27 18:19:36 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h (rb_float_value): optimize it.
+ This technique was pointed by shinichiro.hamaji
+ <http://shinh.skr.jp/m/?date=20120825#p02>.
+
+Mon Aug 27 15:08:25 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * common.mk (vm_trace.o): Added a missing dependency.
+
+Sun Aug 26 09:29:32 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * nacl/GNUmakefile.in (package): make package should install
+ example.html for nacl build
+
+ Patch by Takashi Toyoshima <toyoshim AT gmail.com>.
+
+Sun Aug 26 09:22:33 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * nacl/GNUmakefile.in (CC, LD, NM, AR, AS, RANLIB, OBJDUMP, OBJCOPY)
+ Rewrites these variables instead of PATH.
+ NaCl port uses a toolchain which is specified by NACL_SDK_ROOT
+ environment variable. Originally, NaCl build added the toolchain
+ under the NACL_SDK_ROOT to the PATH. But updating PATH doesn't work
+ on Mac.
+ (RBCONFIG): Replaces configs with the variable updates above.
+
+ * configure.in: Thus it is no longer necessary to check $PATH.
+
+ Based on a patch by Takashi Toyoshima <toyoshim AT gmail.com>.
+
+Sun Aug 26 16:53:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (checkmatch): suppress warnings. [ruby-core:47310]
+ [Bug #6930]
+
+ * vm_core.h (VM_FRAME_TYPE_FINISH_P): ditto.
+
+Fri Aug 24 15:42:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): use timestamp for destination
+ directories to make them before making or copying files there.
+ [ruby-dev:46067] [Bug #6904]
+
+Fri Aug 24 12:40:15 2012 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in (mingw): add shlwapi to the list of dependency
+ libs for Windows.
+ * win32/Makefile.sub (EXTSOLIBS): ditto.
+
+ * internal.h: declare internal functions rb_w32_init_file,
+ rb_file_expand_path_internal and rb_file_expand_path_fast.
+
+ * file.c (Init_File): invoke Windows initialization rb_w32_init_file
+
+ * win32/file.c (rb_file_load_path_internal): new function.
+ Windows-specific implementation that replaces file_expand_path.
+ [Bug #6836][ruby-core:46996]
+
+ * win32/file.c (rb_w32_init_file): new function. Initialize codepage
+ cache for faster conversion encodings lookup.
+
+ * file.c (file_expand_path): rename to rb_file_expand_path_internal.
+ Conditionally exclude from Windows.
+
+ * file.c (rb_file_expand_path_fast): new function. delegates to
+ rb_file_expand_path_internal without performing a hit to the
+ filesystem.
+
+ * file.c (file_expand_path_1): use rb_file_expand_path_internal without
+ path expansion (used by require).
+ * file.c (rb_find_file_ext_safe): ditto.
+ * file.c (rb_find_file_safe): ditto.
+
+ * load.c (rb_get_expanded_load_path): use rb_file_expand_path_fast.
+ * load.c (rb_feature_provided): ditto.
+
+ * file.c (rb_file_expand_path): use rb_file_expand_path_internal with
+ path expansion.
+ * file.c (rb_file_absolute_path): ditto.
+
+ * test/ruby/test_file_exhaustive.rb: new tests to exercise
+ rb_file_expand_path_internal implementation and compliance with
+ existing behaviors.
+
+Fri Aug 24 07:35:24 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http/backward.rb (class Net): Restored Net::HTTPSession to
+ fix backwards-compatibility with ancient Net::HTTP. [Bug #6889]
+
+Thu Aug 23 20:58:55 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * common.mk: support `make id.h` without `rm .id.h.time` after
+ `rm id.h`.
+
+Thu Aug 23 20:48:45 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_fixnum.rb (TestFixnum#test_singleton_method): new test.
+
+ * test/ruby/test_bignum.rb (TestBignum#test_singleton_method): ditto.
+
+ * test/ruby/test_float.rb (TestFloat#test_singleton_method): ditto.
+
+ * test/ruby/test_symbol.rb (TestSymbol#test_singleton_method): ditto.
+
+Thu Aug 23 20:34:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * class.c (singleton_class_of): flonum can't have singleton class.
+
+ * vm.c (vm_define_method): flonum can't have singleton method.
+
+Thu Aug 23 19:18:33 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (win32/*): macro RUBY_H_INCLUDES is not defined there,
+ so need to move dependency rules under the definition of it.
+
+Thu Aug 23 19:16:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: refactoring. remove unused rules, and update
+ some rules which are not used usually to fit current macros.
+
+Thu Aug 23 16:46:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext_safe, rb_find_file_safe): default to
+ US-ASCII for encdb and transdb.
+
+ * load.c (search_required): keep encoding of feature name. set
+ loading path to filesystem encoding. [Bug #6377][ruby-core:44750]
+
+ * ruby.c (add_modules, require_libraries): assume default external
+ encoding as well as ARGV.
+
+Thu Aug 23 16:20:04 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: introduce flonum technique for
+ 64bit CPU environment (sizeof(double) == sizeof(VALUE)).
+ flonum technique enables to avoid double object creation
+ if the double value d is in range about between
+ 1.72723e-77 < |d| <= 1.15792e+77 or 0.0.
+ flonum Float value is immediate and their lowest two bits
+ are b10.
+ If flonum is activated, then USE_FLONUM macro is 1.
+ I'll write detailed in this technique on
+ https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/Flonum_tech
+
+ * benchmark/bmx_temp.rb: add an benchmark for simple
+ Float calculation.
+
+ * gc.c (id2ref, rb_obj_id): add flonum Float support.
+
+ * include/ruby/intern.h: move decl of rb_float_new(double)
+ to include/ruby/ruby.h.
+
+ * insns.def, vm.c, vm_insnhelper.c: add flonum optimization
+ and simplify source code.
+
+ * vm_insnhelper.h (FLONUM_2_P): added.
+
+ * marshal.c: support flonum output.
+
+ * numeric.c (rb_float_new_in_heap): added.
+
+ * parse.y: support flonum.
+
+ * random.c: ditto.
+
+Thu Aug 23 16:12:40 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): add dependency to header files when
+ depend files don't exist. now we can remove simple (and often
+ wrong) depend files in most cases.
+
+Thu Aug 23 16:02:20 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/date/depend: add dependency to $(ruby_headers).
+
+Thu Aug 23 12:51:39 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * insns.def (invokesuper): reverted r36640 partially to make super
+ in a thread work correctly. [ruby-core:47284] [Bug #6907]
+
+ * test/ruby/test_super.rb: related test.
+
+Thu Aug 23 12:30:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat: support --with(out)?-ext(ensions) options.
+
+Thu Aug 23 11:52:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: Fixing Haiku build.
+ - -lbe is not required for linking
+ - stack protector doesn't work for now because of the default gcc's
+ bug
+ by Takashi Toyoshima <toyoshim@gmail.com>
+ https://github.com/ruby/ruby/pull/167
+
+ * signal.c (ruby_signal): haiku doesn't have SIGBUS.
+
+Thu Aug 23 11:32:44 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/open-uri/test_open-uri.rb (TestOpenURI#test_read_timeout): this
+ test expects that the server thread will be killed in sleep, but 0.01
+ sec is too short to reach there.
+
+Thu Aug 23 10:49:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: use the value of --with-opt-dir on building ruby
+ itself. [ruby-dev:46064] [Bug #6900]
+
+Thu Aug 23 10:36:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (ID_H_TARGET): revert a part of r36724 and r36751. they
+ break mswin build from clean source.
+
+Thu Aug 23 02:37:35 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/syck: removed. Fixes [ruby-core:43360]
+
+ * test/syck: removed.
+
+ * lib/yaml.rb: only require psych, show a warning if people try to set
+ the engine to syck.
+
+Thu Aug 23 01:46:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * insns.def: search up the cf stack for an object that is an instance
+ of the recipient class. Fixes [ruby-core:47186]
+
+ * test/ruby/test_super.rb: related test.
+
+Wed Aug 22 19:46:24 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:47266].
+
+Wed Aug 22 19:41:19 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:47226].
+
+Wed Aug 22 16:57:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): extract least ruby headers list as
+ ruby_headers, so depend files can use default dependency
+ explicitly.
+
+Wed Aug 22 15:27:50 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_setup_method): fix last commit of
+ vm_insnhelper.c (r36771). [ruby-dev:46065] [Bug #6901]
+ Should not disable tail call opt on FINISH_FRAME.
+ This flag should be propagated correctly.
+
+Wed Aug 22 14:05:23 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: support TracePoint. [ruby-trunk - Feature #6895]
+
+ * test/ruby/test_settracefunc.rb: add tests for above.
+
+ * proc.c (rb_binding_new_with_cfp): add an internal function.
+
+ * vm.c (rb_vm_control_frame_id_and_class): add an internal function.
+
+ * vm_trace.c: add rb_add_event_hook2() and rb_thread_add_event_hook2().
+ Give us the good name for them!
+
+Wed Aug 22 11:38:16 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (before_script): Turned out that make -j is broken.
+
+Wed Aug 22 11:23:35 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_setup_method): should not enable tail call
+ optimization for frames with VM_FRAME_FLAG_FINISH.
+ [ruby-dev:46065] [Bug #6901]
+
+Wed Aug 22 11:20:47 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/test_case.rb: run test with psych if exist.
+
+Thu Aug 16 12:09:51 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * nacl/pepper_main.c (init_loadpath): Pushes the correct load path on
+ other architectures than x86_64. Fixes #6873.
+
+Wed Aug 15 19:37:33 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * configure.in (ac_cv_func_shutdown): shutdown(2) has a dummy
+ implementation but has no declaration and does not work in
+ NativeClient SDK pepper_20.
+
+Wed Aug 15 19:29:29 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * common.mk (vm_backtrace.o): Added missing dependencies.
+
+ * ext/nkf/depend (nkf.o): ditto.
+
+ * ext/ripper/depend (ripper.o) ditto.
+
+Wed Aug 22 07:27:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI.escapeHTML): use &#39;
+ [ruby-core:47221] [Bug #6861]
+
+Tue Aug 21 21:59:22 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/observer.rb: fix typo. https://github.com/ruby/ruby/pull/162 by
+ unsymbol (Philip Cunningham).
+
+Tue Aug 21 20:30:06 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * test/fileutils/test_fileutils.rb (TestFileUtils#teardown):
+ do not assume cwd is TMPROOT and never remove current directory.
+ [ruby-core:47224][Bug #6884]
+
+Tue Aug 21 17:29:56 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * addr2line.c (fill_lines): need check and cast of the file size of
+ target binary because there are some platforms which off_t > size_t.
+
+Tue Aug 21 17:07:58 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (compiler): [experimental] clang support.
+
+Tue Aug 21 15:44:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#bind): fixes an error in
+ test/dl/test_import.rb (DL::TestImport#test_carried_function)
+ introduced by r36718.
+ the instance of the anonymous class which wraps the block should have
+ same methods and instance variables of self.
+
+Tue Aug 21 14:29:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (scriptbin.mk): no need to include twice.
+
+Tue Aug 21 10:52:08 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/unit/test.rb (Test::Unit::ProxyError): new exception class to
+ wrap exceptions raised in workers in parallel test mode.
+
+ * test/unit/parallel.rb (Test::Unit::Worker#puke): use above wrapper
+ exception.
+ [Bug #6882] [ruby-dev:46054]
+
+Tue Aug 21 10:40:06 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test_continuation.rb (tracing_with_thread_set_trace_func):
+ fix to use Thread#set_trace_func(nil), not set_trace_func(nil).
+
+Tue Aug 21 09:32:41 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 3.3.0 (r7676)
+ * test/minitest/*: ditto
+
+Tue Aug 21 09:05:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/testunit/tests_for_parallel/ptest_forth.rb: added a test case
+ which causes an error.
+
+ * test/testunit/test_parallel.rb: follow above change.
+ see [Bug #6882]
+
+Tue Aug 21 05:43:00 2012 James Edward Gray II <james@graysoftinc.com>
+
+ * lib/csv.rb: Fixes #161 on github
+ * lib/csv.rb: You can now specify a pattern for :skip_lines.
+ Matching lines will not be passed to the CSV parser.
+ * lib/csv.rb: Patch by Christian Schwartz.
+
+Tue Aug 21 05:25:41 2012 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (rb_reg_initialize_m): Forgot to update output for or'd-options
+ example.
+
+Tue Aug 21 05:18:03 2012 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (rb_reg_initialize_m): Update example to show that regexp
+ options use | an not || to avoid confusion.
+
+Mon Aug 20 23:02:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y: more descriptive token names in syntax error messages.
+
+Mon Aug 20 20:36:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): follow iclasses as klass in cfp
+ but not included modules. [ruby-core:47241] [Bug #6891]
+
+ * vm_insnhelper.c (vm_call_bmethod): pass defined_class to follow
+ proper ancestors. [ruby-core:47241] [Bug #6891]
+
+Mon Aug 20 11:40:27 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * common.mk: fix failed to make with -j2.
+ https://gist.github.com/3397935
+
+Mon Aug 20 10:51:01 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb, lib/test/unit/parallel.rb:
+ generate error message (String) in parallel.rb instead of
+ marshalling Exception. Fixes [Bug #6882] [ruby-dev:46054]
+
+Sun Aug 19 01:24:32 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * enum.c: fix docs. https://github.com/ruby/ruby/pull/129 by
+ richardkmichael (Richard Michael).
+
+Sun Aug 19 00:47:26 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/fileutils.rb: fix typo.
+ https://github.com/ruby/ruby/pull/155 by simonc (Simon COURTOIS).
+
+Sat Aug 18 09:57:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend: fix inplace-build condition. enc.mk is generated with
+ setting $srcdir to enc, but pwd is still top build directory.
+ [ruby-core:47236] [Bug #6888]
+
+Fri Aug 17 23:28:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_any_to_s, rb_obj_inspect): preserve encodings of class
+ name and instance variable names.
+
+Fri Aug 17 12:39:33 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#bind): allow to return/break from
+ the callback method. (Fiddle already allows it.)
+ [Bug #6389] [ruby-dev:45604]
+
+Thu Aug 16 19:54:24 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c, vm_core.h: simplify tracing mechanism.
+
+ (1) add rb_hook_list_t data structure which includes
+ hooks, events (flag) and `need_clean' flag.
+ If the last flag is true, then clean the hooks list.
+ In other words, deleted hooks are contained by `hooks'.
+ Cleanup process should run before traversing the list.
+ (2) Change check mechanism
+ See EXEC_EVENT_HOOK() in vm_core.h.
+ (3) Add `raw' hooks APIs
+ Normal hooks are guarded from exception by rb_protect().
+ However, this protection is overhead for too simple
+ functions which never cause exceptions. `raw' hooks
+ are executed without protection and faster.
+ Now, we only provide registration APIs. All `raw'
+ hooks are kicked under protection (same as normal hooks).
+
+ * include/ruby/ruby.h: remove internal data definition and
+ macros.
+
+ * internal.h (ruby_suppress_tracing), vm_trace.c: rename
+ ruby_suppress_tracing() to rb_suppress_tracing()
+ and remove unused function parameter.
+
+ * parse.y: fix to use renamed rb_suppress_tracing().
+
+ * thread.c (thread_create_core): no need to set RUBY_VM_VM.
+
+ * vm.c (mark_event_hooks): move definition to vm_trace.c.
+
+ * vm.c (ruby_vm_event_flags): add a global variable.
+ This global variable represents all of Threads and VM's
+ event masks (T1#events | T2#events | ... | VM#events).
+ You can check the possibility kick trace func or not
+ with ruby_vm_event_flags.
+ ruby_vm_event_flags is maintained by vm_trace.c.
+
+ * cont.c (fiber_switch, rb_cont_call): restore tracing status.
+ [Feature #4347]
+
+ * test/ruby/test_continuation.rb: ditto.
+
+Thu Aug 16 19:15:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_class_initialize): forbid inheriting uninitialized
+ class. another class tree not based on BasicObject cannot exist.
+ [ruby-core:47148][Bug #6863]
+
+Thu Aug 16 11:52:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/-ext-/test_printf.rb (Test_SPrintf#test_{taint,untrust}): use
+ plain object so that the results of to_s and inspect are infected.
+ [ruby-dev:46053] [Bug #6881]
+
+Thu Aug 16 09:46:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c: remove unnecessary macros to check traditional C.
+ https://github.com/ruby/ruby/pull/46 by lateau (Daehyub Kim).
+
+ * vsnprintf.c: remove K&R.
+
+Wed Aug 15 20:47:49 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * object.c (rb_obj_inspect): Kernel#inspect: do not call #to_s. A class
+ can now benefit from the nice default #inspect even if it defines #to_s.
+ Also, there is no more unexpected change in #inspect result.
+
+ * NEWS: Add note about the change.
+
+ * bignum.c, io.c, numeric.c, object.c, proc.c, vm.c (Init_*):
+ Adapt internal structures (by aliasing #inspect to #to_s) so they
+ don't rely on the removed behavior (#inspect calling overridden #to_s).
+
+ * test/ruby/test_object.rb (test_inspect): add tests for Kernel#inspect.
+
+ * lib/pp.rb (class PP): do not call #to_s anymore, as #inspect
+ no more does (mame).
+
+ * test/test_pp.rb (class PPInspectTest): remove related assertion (mame).
+ [ruby-core:43238][Feature #6130]
+
+ * test/drb/drbtest.rb (DRbCore#teardown, DRbAry#teardown):
+ adapt DRb tests with the new change (shirosaki).
+ [ruby-core:47182][Bug #6866]
+
+Wed Aug 15 18:05:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#failed): need to delete the
+ status line if the status is skipped and -q is specified.
+
+Wed Aug 15 16:26:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (ruby__sfvextra): the result should be infected by the
+ given strings.
+
+ * sprintf.c (ruby__sfvwrite): set buffer length and exclude
+ uninitialized garbage to get correct coderange.
+
+Wed Aug 15 16:20:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ID_H_TARGET): make timestamp file of id.h so that the
+ header will not be remade repetitively.
+
+Wed Aug 15 11:39:53 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: separate trace_func related functions from
+ thread.c.
+
+ * thread.c: ditto.
+
+ * common.mk: add vm_trace.o.
+
+ * inits.c: call Init_vm_trace().
+
+Tue Aug 14 16:25:46 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/erb/test_erb.rb (test_html_escape): add assertions for the
+ cases where the argument is not a String.
+
+Tue Aug 14 16:03:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (check_valid_dir): reject "..." as directory name.
+ [Bug #6851]
+
+Tue Aug 14 16:02:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file_exhaustive.rb
+ (TestFileExhaustive#test_stat_dotted_prefix): added.
+
+Tue Aug 14 15:39:09 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file_exhaustive.rb
+ (TestFileExhaustive#test_stat_drive_root): added.
+
+Tue Aug 14 10:38:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Util.html_escape): fix r36687: call to_s before
+ passing it to CGI.escapeHTML.
+
+Mon Aug 13 13:13:19 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Util.html_escape): use CGI.escapeHTML to escape
+ single quotes. [ruby-core:47138] [Bug #6861]
+
+Sun Aug 12 11:57:20 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (invoke_block_from_c): fix unintentional block passing.
+ [ruby-dev:45071] [Bug #5832]
+
+Fri Aug 10 08:41:28 2012 Eric Hodel <drbrain@segment7.net>
+
+ * gc.c (gc_malloc_allocated_size): RDoc does not process macros, so
+ mention this method is only available when ruby is built with
+ CALC_EXACT_MALLOC_SIZE
+ * gc.c (gc_malloc_allocations): ditto
+
+Thu Aug 9 23:46:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkrunnable.rb: see build_os instead of target arch for
+ cross-compiling.
+
+ * configure.in (MINIRUBY): use real path for include path.
+
+ * template/fake.rb.in (builddir): remove duplications
+
+Thu Aug 9 20:03:11 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_file_exhaustive.rb
+ (TestFileExhaustive#test_stat_special_file): add a test.
+ GetFileAttributesExW fails to get attributes of special files
+ such as pagefile.sys.
+
+ * win32/win32.c (check_valid_dir): for performance, check the path
+ by FindFirstFileW only if the path contains "..."
+
+ * win32/win32.c (winnt_stat): use GetFileAttributesExW instead of
+ FindFirstFileW since GetFileAttributesExW is faster.
+ Based on the patch by Dusan D. Majkic.
+ [ruby-core:47083] [Feature #6845]
+
+Thu Aug 9 18:33:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): show version only once even if -v and
+ --version are given together.
+ http://twitter.com/d6rkaiz/status/233491797085671424
+
+Thu Aug 9 12:37:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/openssl/test_config.rb (OpenSSL#test_constants): skip this
+ test if platform is Mac OS X or Windows. [Bug #6830]
+
+Wed Aug 8 22:51:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (eval_under): singletons other than special constants
+ don't need cref-scope hack.
+
+Wed Aug 8 22:45:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (.y.h): split from .y.c rule to manage dependency on
+ parse.h. [ruby-core:46741] [Bug #6789]
+
+ * common.mk (id.h): keep old file unless changed.
+
+Wed Aug 8 17:11:20 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (ADD_INSNL): make ADD_INSNL as alias of ADD_INSN1.
+
+Wed Aug 8 17:08:14 2012 Koichi Sasada <ko1@atdot.net>
+
+ * bootstrap/test_exception.rb: fix a last committed test.
+
+Wed Aug 8 16:27:58 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def (checkmatch):
+ remove checkincludearray instruction and
+ add new instruction checkmatch.
+ This change is to solve
+ [Bug #4438] "rescue args type check omitted".
+
+ * iseq.c: increment ISEQ_MAJOR_VERSION because removal of
+ checkincludearray instruction.
+
+ * vm_core.h: add several definitions for
+ the checkmatch instruction.
+
+ * vm_insnhelper.c (check_match): added.
+
+ * bootstraptest/test_exception.rb: add a test.
+
+ * test/ruby/test_exception.rb: ditto.
+
+Wed Aug 8 05:51:20 2012 Eric Hodel <drbrain@segment7.net>
+
+ * proc.c (method_clone): Added documentation. Patch by Robin Dupret.
+ Fixes #152 on github.
+
+Tue Aug 7 20:19:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (Init_readline): rl_catch_signals=0 returns
+ back. Without this, on FreeBSD9 and readline 6.2 irb can't catch ^C.
+ [Bug #5423]
+
+Tue Aug 7 20:12:39 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.c, insns.def (leave): solve problems on
+ OPT_CALL_THREADED_CODE.
+ Catch up finish frame structure on OPT_CALL_THREADED_CODE.
+
+ * vm_core.h: add rb_thread_t#retval for temporary space on
+ OPT_CALL_THREADED_CODE.
+
+ * vm.c (th_init): clear rb_thread_t#retval as Qundef.
+
+ * vm_dump.c (rb_vmdebug_debug_print_pre): fix debug print format.
+
+Tue Aug 7 11:58:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_require.rb (TestRequire#test_require_twice): added.
+
+Tue Aug 7 11:35:37 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_redefine_opt_method): use RCLASS_ORIGIN to avoid
+ SEGV when a module-prepended class is refined.
+
+Tue Aug 7 10:46:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file_exhaustive.rb
+ (TestFileExhaustive#test_expand_path*): refactoring. split the method
+ into some chunks of the same kind of tests.
+
+Tue Aug 7 00:31:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_special_singleton_class_of): utility function.
+
+ * vm_eval.c (eval_under): special deal for class variable scope with
+ instance_eval.
+
+ * vm_eval.c (rb_obj_instance_eval, rb_obj_instance_exec): allow method
+ definition in instance_eval of special constants. [ruby-core:28324]
+ [Bug #2788]
+
+Tue Aug 7 00:23:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (CVAR_LOOKUP): split into helper functions.
+
+Mon Aug 6 19:15:11 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_variant.rb: setting WIN32OLE.locale
+ to pass some assertion. Thanks to Hiroshi Shirosaki.
+ [ruby-core:46873][Bug #6814]
+
+Mon Aug 6 15:54:50 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * internal.h, class.c, eval.c, insns.def: find the appropriate
+ receiver for super called in instance_eval. If such a receiver is
+ not found, raise NoMethodError. [ruby-dev:39772] [Bug #2402]
+
+Mon Aug 6 14:54:38 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * include/ruby/ruby.h, eval.c, vm_insnhelper.c: fix typo.
+
+Mon Aug 6 13:13:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (vm_call_super): since cfp->klass is always class or
+ iclass, no search from method entry.
+
+ * insns.def (defined): now should use klass in the current control
+ frame to search superclass, not me->klass. reported by naruse.
+
+Mon Aug 6 11:19:19 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/etc/test_etc.rb (TestEtc#test_getpwuid): `s' is never set to nil.
+
+Mon Aug 6 11:08:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/syslog/test_syslog_logger.rb: skip unless Syslog module is
+ available.
+
+Mon Aug 6 00:40:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_log): fix format specifier.
+
+Mon Aug 6 00:39:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (NUM2ULONG): optimize by inline as well as
+ NUM2LONG, and cast to unsigned long explicitly for the platforms
+ where SIZEOF_VALUE is larger than SIZEOF_LONG.
+
+ * include/ruby/ruby.h (NUM2SSIZET): fix type to cast.
+
+Sun Aug 5 21:10:36 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c : if ENABLE_VM_OBJSPACE is 1, rest_sweep is not defined.
+ remove unused declarations. [ruby-core:47004] [Bug #6837]
+
+Sun Aug 5 19:31:57 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: just move functions and so on. I don't touch any internal
+ implementation.
+
+Sun Aug 5 13:22:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: use gcc-4.2 prior to clang, gcc, and cc if exist for
+ the use of Snow Leopard's old clang. see also r36594, r36610, r36611.
+
+Sun Aug 5 06:55:10 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_{core,strftime}.c: [ruby-core:46990].
+
+Sat Aug 4 22:56:20 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: use inline functions instead of macros, and close up
+ related codes for the profiler.
+
+Sat Aug 4 20:37:56 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_mark_children): use gc_mark_ptr instead of marking
+ a object directly.
+
+Sat Aug 4 10:02:03 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_alias.rb (test_super_in_aliased_module_method):
+ add a test case for [ruby-dev:46028], which fails in 1.8.
+
+Sat Aug 4 01:56:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_normal_superclass): no longer needs
+ receiver, klass is always unique in the ancestors now.
+
+Sat Aug 4 01:27:40 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * insns.def (invokesuper): reverted r36612 so that super in an
+ aliased method will not call the same method.
+
+Fri Aug 3 19:26:10 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * insns.def (invokesuper): don't skip the same class. instead, use
+ rb_method_entry_get_with_omod() to avoid infinite loop when
+ super is used with refinements. [ruby-core:30450] [Bug #3351]
+
+Fri Aug 3 19:21:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: use clang prior to gcc only when self-compiling on
+ darwin. search default compilers on other platforms. [Bug #6816]
+
+Fri Aug 3 17:25:49 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: move RUBY_MINGW32 after AC_PROG_CC.
+ RUBY_MINGW32 uses AC_TRY_CPP and it sets CC and CPP. [Bug #6816]
+
+ * configure.in: don't use AC_PROG_CC in AS_CASE.
+
+Fri Aug 3 17:21:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/runner.rb: get rid of loading previously installed gems.
+ [ruby-dev:46025]
+
+Fri Aug 3 16:40:01 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (notifications): [experimental] IRC notifications.
+
+Thu Aug 2 20:32:29 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_using): new method Module#using. [experimental]
+
+ * eval.c (rb_mod_refine): new method Module#refine. [experimental]
+
+ * eval.c (f_using): new method Kernel#using. [experimental]
+
+Thu Aug 2 20:08:02 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * class.c, insns.def, method.h, proc.c, vm.c, vm_core.h, vm_eval.c,
+ vm_insnhelper.c, vm_insnhelper.h, vm_method.c: add klass to
+ rb_control_frame_t to implement super correctly.
+
+Thu Aug 2 13:23:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (AC_PROG_CC): AC_PROG_CC tries clang at first on
+ darwin. [Bug #6816]
+
+Thu Aug 2 11:39:25 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: return true or false. Patch by Dirkjan Bussink. [Bug #6821]
+
+ * test/ruby/test_gc.rb: add test-case for this bug.
+
+Thu Aug 2 10:51:12 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/lib/openssl/digest.rb
+ test/openssl/test_digest.rb: Add Digest module function to OpenSSL
+ module and test it. Patch provided by Eric Hodel.
+ [ruby-core:46908][Feature #6819]
+
+Wed Aug 1 22:29:12 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * ext/digest/digest.c (hexencode_str_new): return an ASCII string
+
+ * test/digest: tests for all kind of digests encodings
+ [ruby-core:46792][Bug #6799]
+
+Wed Aug 1 05:50:53 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_encoding):
+ Fix test_encoding failure on Windows.
+ With chcp 65001, 1252 and 437, test_encoding failed. Test result
+ depends on locale because LANG environment variable doesn't affect
+ locale on Windows.
+ [ruby-core:46872] [Bug #6813]
+
+Wed Aug 1 00:33:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (include_class_new): fix duplication of prepended module.
+ since m_tbl of prepended module is always zero, copy from its
+ copy iclass of original.
+
+Tue Jul 31 18:22:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (classname): tell if found name is permanent. search
+ tmp_classpath only if class id is set. [ruby-core:42865][Bug #6078]
+
+ * variable.c (rb_class_path): duplicate found temporary path.
+
+ * variable.c (rb_set_class_path_string, rb_set_class_path): set class
+ id to find classpath.
+
+Tue Jul 31 10:36:12 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: updated to released version.
+
+ * ext/psych/psych.gemspec: ditto
+
+Tue Jul 31 06:18:06 2012 Eric Hodel <drbrain@segment7.net>
+
+ * time.c (time_sec): Remove extra wording about leap seconds and refer
+ directly to Wikipedia's leap second page for further information.
+ [Bug #6749]
+
+Mon Jul 30 23:01:47 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/platform.rb (Gem::Platform#initialize): Support pattern
+ like x86_64-netbsd6.99.7.
+
+Mon Jul 30 21:00:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (find_class_path): no retry when preferred is given.
+
+ * variable.c (classname): if classid is set try it to find full
+ qualified class path, and then try arbitrary class path. try
+ tmp_classpath at last even if enclosing namespace is anonymous.
+ fix r36574. [ruby-core:42865][Bug #6078]
+
+ * variable.c (rb_set_class_path_string, rb_set_class_path): set
+ tmp_classpath instead of classpath if the name is not permanent.
+
+Mon Jul 30 14:24:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c: store anonymous class path in tmp_classpath but not in
+ classpath. [ruby-core:42865][Bug #6078]
+
+Mon Jul 30 13:11:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (DLDFLAGS): on Darwin, deprecate -flat_namespace to get
+ rid of huge imported symbols table.
+
+ * configure.in (LIBRUBY_RELATIVE): libruby_so is not made when
+ disable-shared, so no absolute path is used for it and executable
+ file is runnable anywhere.
+
+Mon Jul 30 01:30:10 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * common.mk: add a dependency. [ruby-core:46741] [Bug #6789]
+
+Sun Jul 29 15:44:47 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * thread.c (thread_create_core): hide th->async_errinfo_mask_stack from
+ ObjectSpace.each_object. refix of r36539.
+
+Sun Jul 29 23:57:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/option.c (inet_ntop): use rb_w32_inet_ntop, instead of
+ inet_ntop directly, which is unavailable on older version Windows.
+
+ * win32/win32.c (rb_w32_inet_ntop): type should be const.
+
+Sun Jul 29 14:20:34 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * thread.c (Init_Thread): does not need to set klass
+ explicitly.
+
+Sun Jul 29 06:21:04 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * win32/win32.c: suppress warning redeclared on mingw64.
+ *_s functions are declared if MINGW_HAS_SECURE_API is defined.
+ Follow up r36556.
+
+Sun Jul 29 00:28:46 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: remove unused initialization.
+
+Sat Jul 28 16:26:09 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * win32/win32.c (gmtime_r): use _gmtime64_s() with x86_64-w64-mingw32.
+
+ * win32/win32.c (localtime_r): use _localtime64_s() with
+ x86_64-w64-mingw32. Since FileTimeToSystemTime() seems not work with
+ large value under x64. Mingw-w64 doesn't have these declaration.
+ [ruby-core:46780] [Bug #6794]
+
+Fri Jul 27 18:25:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_check_io): make public.
+
+ * process.c (check_exec_redirect): try conversion to IO on redirect
+ parameters. [ruby-core:44181] [Bug #6269]
+
+Fri Jul 27 17:58:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CPPOUTFILE): get rid of variable conflict so
+ CPPFLAGS is not duplicated. [ruby-core:43097] [Bug #6119]
+
+Fri Jul 27 12:12:36 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb: should not export DllMain().
+ reported by luis at [ruby-core:46743] [Bug #6790], solved by
+ Heesob Park, and confirmed by nobu.
+
+Thu Jul 26 14:51:29 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/net/http/test_https.rb (TestNetHTTPS#test_session_reuse):
+ localhost is not (always) 127.0.0.1. Don't expect that.
+
+Thu Jul 26 07:18:38 2012 <kanemoto@ruby-lang.org>
+
+ * ext/json/fbuffer/fbuffer.h: avoid compilation error on AIX by
+ -ansi -std=iso9899:199409 (r36038). [ruby-core:46744] [Bug #6791].
+
+Thu Jul 26 00:42:23 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * thread.c (thread_create_core, Init_Thread): hide
+ th->async_errinfo_queue and th->async_errinfo_mask_stack from
+ ObjectSpace.each_object.
+
+Wed Jul 25 17:41:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c, rational.c: compatible marshal loader for compatibilities
+ with 1.8. [ruby-core:45775] [Bug #6625]
+
+Wed Jul 25 17:17:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * atomic.h: prefer GCC atomic builtins than Windows APIs, if possible,
+ since they are generic.
+
+Wed Jul 25 11:16:57 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/.document: Removed. All files in net/ should be included in
+ RDoc.
+
+Wed Jul 25 10:00:23 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/testunit/test_redefinition.rb: broken class/method names.
+
+Wed Jul 25 09:26:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi/html.rb: Use << instead of +=.
+ `a += b` is syntax sugar of `a = a + b`; it creates a new string
+ object. `a << b` is concatenation and doesn't create new object.
+
+Wed Jul 25 09:16:26 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi/html.rb (element_init): suppress redefine warning.
+ Don't define methods if they are already defined.
+
+Wed Jul 25 09:05:38 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Added SSL session reuse across connections for a
+ single instance to speed up connection. [Feature #5341]
+ * NEWS: ditto
+ * test/net/http/test_https.rb: Tests for #5341
+
+Wed Jul 25 06:54:24 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc: Fix spelling
+
+Wed Jul 25 06:49:12 2012 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (rb_reg_s_last_match): Update $~ to reference Regexp
+ documentation about "special global variables". [Bug #6723]
+
+Wed Jul 25 06:28:56 2012 Eric Hodel <drbrain@segment7.net>
+
+ * iseq.c: Added documentation. Patch by David Albert. [Bug #6785]
+
+Wed Jul 25 03:05:06 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * parse.y: added symbols and qsymbols productions for %i and %I
+ support. %i{ .. } returns a list of symbols without interpolation,
+ %I{ .. } returns a list of symbols with interpolation. Thanks to
+ Josh Susser for inspiration of this feature. [Feature #4985]
+
+ * ext/ripper/eventids2.c: added ripper events for %i and %I.
+
+ * test/ripper/test_parser_events.rb: ripper tests
+
+ * test/ripper/test_scanner_events.rb: ditto
+
+ * test/ruby/test_array.rb: test for %i and %I behavior
+
+Tue Jul 24 23:34:43 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * include/ruby/win32.h (rb_w32_pow): add new function.
+ We use powl() instead of broken pow() for x64-mingw32. This workaround
+ fixes test failures related to floating point numeric.
+ [ruby-core:46686] [Bug #6784]
+
+Tue Jul 24 15:01:24 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_socket, rb_w32_socketpair): remember the family
+ in the high word of socklist value.
+
+ * win32/win32.c (overlapped_socket_io, recvmsg, sendmsg, setfl): follow
+ above changes.
+
+ * win32/win32.c (rb_w32_getsockname): set remembered family to the
+ argument when OS's function fails.
+
+Tue Jul 24 12:35:13 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_dir_m17n.rb: remove a garbage.
+
+ * test/ruby/test_dir_m17n.rb: convert from ascii-8bit to other encoding
+ with 8bit bytes always fails.
+
+Tue Jul 24 12:32:18 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_dir_m17n.rb: sorry, typo.
+
+Tue Jul 24 12:13:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_dir_m17n.rb: refactoring. RE should be in the left side
+ of the =~ operator, and compare the result with nil is meaningless.
+
+Tue Jul 24 11:35:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_pack.rb (test_pack_unpack_M): was redefined
+ accidentally.
+
+Tue Jul 24 09:31:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Updated to RubyGems 1.8.24, a bugfix release.
+
+Tue Jul 24 08:30:15 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/ruby/test_dir_m17n.rb (create_and_check_raw_file_name): add new
+ helper method to ease encoding testing. Patch by Oleg Sukhodolsky.
+ [ruby-core:46589][Bug #6765]
+
+ * test/ruby/test_dir_m17n.rb (test_filename_extutf8): use filesystem
+ encoding when reading entries and comparing.
+
+ * test/ruby/test_dir_m17n.rb (test_filename_utf8_raw_name): removed.
+
+ * test/ruby/test_dir_m17n.rb (test_filename_utf8_raw_jp_name): split test.
+
+Tue Jul 24 08:09:30 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/win32ole/test_win32ole_method.rb (is_ruby64?): Correct platform
+ used to identify mingw-w64 (x64-mingw32). Patch by Hiroshi Shirosaki.
+ [ruby-core:46651][Bug #6782]
+
+Tue Jul 24 07:22:58 2012 Eric Hodel <drbrain@segment7.net>
+
+ * time.c (time_sec): Updated description of leap seconds for accuracy.
+ Based on patch by Marcus Stollsteimer. [Bug #6749]
+
+Tue Jul 24 07:03:11 2012 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (rb_str_sub): Fixed wording of documentation to match the
+ replacement operation. Minor cleanup of markup. [Bug #6719]
+ * string.c (rb_str_sub_bang): Minor wording change for clarity, minor
+ cleanup of markup.
+
+Mon Jul 23 23:58:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (TARGET_NAME, TARGET_ENTRY): needed for EXTDLDFLAGS
+ on some platforms. [ruby-core:46600] [Bug #6768]
+
+ * enc/depend: no longer needs tweaking DLDFLAGS for TARGET names.
+
+Mon Jul 23 22:48:19 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: use respond_to? to test Tempfile.
+ [ruby-dev:45995] [Bug #6781] reported by hsbt (Hiroshi SHIBATA).
+
+Mon Jul 23 14:43:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBPATHENV): LIBPATH is used on AIX, but not
+ SHLIB_PATH which was carelessly copied from HP/UX. suggested by
+ Perry Smith at [ruby-core:46397]. [Bug #6728]
+
+Mon Jul 23 01:55:08 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/uri/test_generic.rb (URI#test_find_proxy): add tests with
+ empty *_proxy env variables.
+
+Mon Jul 23 01:47:26 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/uri/test_generic.rb (URI#with_env): unset proxy related env
+ variables. [Bug #6774]
+
+ * test/uri/test_generic.rb (URI#test_find_proxy): fix failures
+ when proxy related env variables already set. [Bug #6774]
+
+Sun Jul 22 23:58:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (rb_threadptr_execute_interrupts_common): increase
+ running_time_us on THREAD_TO_KILL like on THREAD_RUNNABLE.
+ This cause not to switch from a thread which is to be killed
+ on FreeBSD and Mac OS X. see also the test.
+ This issue maybe exist for long time but happens after r36430.
+
+Sat Jul 21 06:21:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: fixes for r36476. [Feature #6546]
+ http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20120720T030101Z.diff.html.gz
+
+ * lib/net/http.rb (Net::HTTP.newobj): return back for compatibility.
+
+ * lib/net/http.rb (Net::HTTP.new): set default_port if proxy port is
+ not given.
+
+ * lib/net/http.rb (Net::HTTP#initialize): ditto.
+
+ * lib/net/http.rb (Net::HTTP#proxy?): return true or false.
+
+ * lib/net/http.rb (Net::HTTP#proxy_address): check proxy_uri is not nil.
+
+ * lib/net/http.rb (Net::HTTP#proxy_port): ditto.
+
+Sat Jul 21 23:12:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): STACK_GROW_DIR_DETECTION is
+ necessary on platforms with unknown stack direction. [Bug #6761]
+
+Sat Jul 21 15:13:42 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/testcase.rb (method_added): refactoring.
+
+Sat Jul 21 14:06:41 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/testcase.rb: warn when test_* method is redefined.
+ Patch by mame (Yusuke Endoh). [Feature #2643] [ruby-core:27790]
+
+ * test/testunit/test_redefinition.rb: Test for above.
+
+ * test/testunit/test4test_redefinition.rb: Ditto.
+
+Sat Jul 21 08:41:14 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/logger.rb: Updated example in Logger comment to match other
+ examples and fixed a bug. Patch by Marcus Stollsteimer.
+ [Bug #6759]
+
+Fri Jul 20 17:20:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rb_random_real): refine error message.
+
+Fri Jul 20 11:03:17 2012 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS: Updated net/http for automatic proxy detection (#6546) and
+ automatic gzip and deflate compression (#6492, #6494).
+
+Fri Jul 20 10:55:38 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Net::HTTP now automatically detects and uses
+ proxies from the environment. A proxy may also be specified as
+ before.
+
+ Net::HTTP::Proxy still creates anonymous classes, but these classes
+ are only used to store configuration information. When an HTTP
+ instance is created the configuration is now copied.
+
+ Additionally, Net::HTTP::ProxyDelta is no longer used by Net::HTTP
+
+ [Feature #6546]
+ * lib/open-uri.rb: Moved URI::Generic#find_proxy to uri/generic.
+ * lib/uri/generic.rb: Imported find_proxy from open-uri.
+ * test/open-uri/test_open-uri.rb: Moved proxy-discovery tests to URI.
+ * test/uri/test_generic.rb: Imported proxy-discovery tests from
+ open-uri.
+ * test/net/http/test_http.rb: Added tests for proxy behavior.
+
+Fri Jul 20 09:34:11 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/socket/test_socket.rb: Ignore IPv6 unique local addresses on OS
+ X (iCloud Back to my Mac addresses) for test_udp_socket since they do
+ not act as loopback addresses. [Bug #6692]
+
+Fri Jul 20 09:32:14 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/socket/raddrinfo.c (addrinfo_ipv6_unique_local_p): Added
+ Addrinfo#ipv6_unique_local? to detect RFC 4193 unique local
+ addresses. Part of #6692
+ * ext/socket/rubysocket.h: Add IN6_IS_ADDR_UNIQUE_LOCAL macro if
+ missing.
+ * test/socket/test_addrinfo.rb: Test for ipv6_unique_local?
+
+Fri Jul 20 07:40:32 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http/response.rb: Automatically inflate gzip and
+ deflate-encoded response bodies. [Feature #6942]
+ * lib/net/http/generic_request.rb: Automatically accept gzip and
+ deflate content-encoding for requests. [Feature #6494]
+ * lib/net/http/request.rb: Updated documentation for #6494.
+ * lib/net/http.rb: Updated documentation for #6492 and #6494, removed
+ Content-Encoding handling now present in Net::HTTPResponse.
+ * test/net/http/test_httpresponse.rb: Tests for #6492
+ * test/net/http/test_http_request.rb: Tests for #6494
+ * test/open-uri/test_open-uri.rb (test_content_encoding): Updated test
+ for automatic content-encoding handling.
+
+Fri Jul 20 03:42:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c: use #ifdef, not #if.
+
+Thu Jul 19 15:08:40 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_s_control_interrupt,
+ rb_thread_s_check_interrupt): added for
+ Thread.control_interrupt and Thread.check_interrupt.
+ See details on rdoc.
+ I'll make an ticket for this feature.
+
+ * test/ruby/test_thread.rb: add a test for Thread.control_interrupt.
+
+ * thread.c (rb_threadptr_raise): make a new exception object
+ even if argc is 0.
+
+ * thread.c (rb_thread_kill): kill thread immediately if target thread
+ is current thread.
+
+ * vm_core.h (RUBY_VM_CHECK_INTS_BLOCKING): added.
+ CHECK_INTS while/after blocking operation.
+
+ * vm_core.h (RUBY_VM_CHECK_INTS): require rb_thread_t ptr.
+
+ * cont.c (fiber_switch): use replaced RUBY_VM_CHECK_INTS().
+
+ * eval.c (ruby_cleanup): ditto.
+
+ * insns.def: ditto.
+
+ * process.c (rb_waitpid): ditto.
+
+ * vm_eval.c (vm_call0): ditto.
+
+ * vm_insnhelper.c (vm_call_method): ditto.
+
+Thu Jul 19 22:46:48 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb: remove temporally files early.
+
+Thu Jul 19 15:38:35 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * variable.c (rb_mod_class_variables): return inherited variables
+ except when the optional argument is set to false.
+ [ruby-dev:44034] [Bug #4971]
+
+ * variable.c (rb_mod_constants): fix typo in documentation.
+
+Thu Jul 19 14:30:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h: move mark function declarations that should be private.
+
+Thu Jul 19 14:18:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/init.c (rsock_init_sock): need to update max fd on all
+ platforms.
+
+Thu Jul 19 14:15:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_gc_mark_threads): remove deprecated function.
+
+Thu Jul 19 13:28:03 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/net/http/test_http.rb (TestNetHTTPLocalBind#test_bind_to_local*):
+ re-enable the tests because now it's OK on windows.
+
+Thu Jul 19 13:26:25 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: now enable IPv6 by default on mswin.
+
+Thu Jul 19 09:33:46 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/emitter.c (initialize): allow a configuration object to be
+ passed to the constructor so that mutation isn't required after
+ instantiation.
+
+ * ext/psych/lib/psych/handler.rb: add configuration object
+
+ * ext/psych/lib/psych/visitors/emitter.rb: use configuration object if
+ extra configuration is present.
+
+Thu Jul 19 08:20:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_file.rb: remove temporally files early.
+
+Thu Jul 19 07:37:41 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/drbtest.rb: fixed: can't delete unix domain sockets problem.
+
+Thu Jul 19 03:41:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c: Added #include <strings.h> for ffs(). Patch by Perry
+ Smith. Thank you. [Bug #6748]
+
+Thu Jul 19 01:56:02 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/intern.h (rb_num_zerodiv): Added NORETURN.
+ Patched by Xi Wang. [Bug #6736]
+
+Wed Jul 18 23:57:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack): round down too long uuencode width. folding
+ width in uuencode format cannot be longer than 63 bytes.
+
+Wed Jul 18 23:04:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_empty_p): fix wrong condition introduced in r36438.
+
+ * ext/sdbm/init.c (fsdbm_empty_p): ditto.
+
+Wed Jul 18 23:08:57 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_beginendblock.rb: remove temporally files early.
+
+Wed Jul 18 22:43:02 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_autoload.rb: remove temporally files early.
+
+Wed Jul 18 21:59:46 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_argf.rb: use temporally directory.
+
+Wed Jul 18 19:41:19 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/openssl/test_config.rb: remove temporally files early.
+
+Wed Jul 18 17:45:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_builtin_type_name): map by index.
+
+Wed Jul 18 16:17:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_framework): get rid of separating -framework
+ option and its argument and dealing with the argument as a library
+ or an object name. if $LDFLAGS were an array...
+
+Wed Jul 18 16:09:10 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/extconf.rb: support PDCurses. patched by Luis Lavena.
+ [ruby-core:46485] [Feature #6735]
+
+Wed Jul 18 15:50:25 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * parse.y (primary): allow an empty grouped expression as the
+ operand of the not operator (e.g., not ()).
+ [ruby-core:45976] [Bug #6674]
+
+ * parse.y (parser_yylex): show no warning for a grouped expression
+ as the operand of the not operator (e.g., not (a)) or as an
+ argument of a method call without parentheses (e.g., foo (a)).
+ [ruby-core:39050] [Bug #5214]
+
+Wed Jul 18 15:33:21 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_call_without_gvl2): added.
+ it can skip last CHECK_INTS. See document for more details.
+ Document about it was updated a bit.
+
+ * include/ruby/thread.h (decl. of rb_thread_call_without_gvl2): added.
+
+ * thread.c (rb_thread_call_with_gvl): remove "EXPERIMENTAL!"
+ warning from a document.
+
+Wed Jul 18 14:53:21 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (EXTDLDFLAGS): split options for each extension
+ libraries, and unused in ruby.pc. [Bug #6734]
+
+ * lib/mkmf.rb (MakeMakefile#configuration): add EXTDLDFLAGS.
+
+Wed Jul 18 14:47:23 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: fix last commit miss.
+
+Wed Jul 18 14:16:51 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_threadptr_async_errinfo_*): manage async errors queue.
+ Async events such as an exception throwed by Thread#raise,
+ Thread#kill and thread termination (after main thread termination)
+ will be queued to th->async_errinfo_queue.
+ - clear: clear the queue.
+ - enque: enque err object into queue.
+ - deque: deque err object from queue.
+ - active_p: return 1 if the queue should be checked.
+ rb_thread_t#thrown_errinfo was removed.
+
+ * vm_core.h: add declarations of rb_threadptr_async_errinfo_*.
+ remove rb_thread_t#thrown_errinfo field and
+ add rb_thread_t#async_errinfo_queue (queue body: Array),
+ rb_thread_t#async_errinfo_queue_checked (flag),
+ rb_thread_t#async_errinfo_mask_stack(Array, not used yet).
+
+ * vm.c (rb_thread_mark): fix a mark function.
+
+ * cont.c (rb_fiber_start): enque an error.
+
+ * process.c (after_fork): clear async errinfo queue.
+
+Wed Jul 18 14:25:55 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * pack.c: (ditto) bitwise operations are not char. Apply explicit
+ casts on them.
+
+Wed Jul 18 12:59:50 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * encoding.c (load_encoding): explicit cast to suppress warning.
+ Though the cast truncates some bits, from heuristic analysis I
+ believe it is OK to do so here.
+
+ * bignum.c (rb_cstr_to_inum): ditto.
+
+Wed Jul 18 12:55:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/benchmark.rb: Fix Benchmark.benchmark output with an empty
+ caption. patched by Benoit Daloze. [ruby-core:45719] [Bug #6610]
+
+Wed Jul 18 10:00:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/debug.rb: Added toplevel documentation. Based on patch by Oscar
+ Del Ben. [Bug #6743], fixes #146 on github.
+
+Wed Jul 18 09:33:59 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/win32ole/test_win32ole_event.rb (TestWIN32OLE_EVENT): use
+ standard skip method to skip tests.
+
+Wed Jul 18 09:26:45 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/logger.rb: Updated typos and output to match modern Logger
+ output. Patch by Marcus Stollsteimer. [Bug #6738]
+
+Wed Jul 18 07:59:29 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI.escapeHTML,unescapeHTML): Add &apos; for HTML5
+ escaping.
+ [Feature #6620]
+
+Tue Jul 17 22:17:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: call io.close! for Tempfile.
+
+Tue Jul 17 16:41:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * proc.c (rb_proc_arity): return normal value (not -n-1) if it is not
+ a labmda, or it is a labmda and no arg_opts. [Bug #5694]
+
+Tue Jul 17 03:56:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: strings with YAML anchors
+ are properly referenced. Patched by Joe Rafaniello via Github:
+ https://github.com/tenderlove/psych/pull/69
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
+ * test/psych/test_alias_and_anchor.rb: test for change
+
+Mon Jul 16 23:20:24 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_float_cmp): use FIXNUM_MIN and FIXNUM_MAX,
+ instead of LONG_MIN and LONG_MAX.
+
+Mon Jul 16 22:50:41 2012 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (flo_to_s): use the exponential form if the integer part
+ is longer than or equal DBL_DIG.
+ [ruby-dev:45960] [ruby-trunk - Bug #6741]
+
+Mon Jul 16 22:01:00 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/readline/readline.c: fixed docs. [Bug #6740][ruby-core:46501]
+ patched by Nobuhiro IMAI.
+
+Mon Jul 16 19:24:01 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_float_eq): new function.
+ (rb_big_eq): use rb_integer_float_eq.
+
+ * internal.h (rb_integer_float_eq): declared.
+
+ * numeric.c (flo_eq): use rb_integer_float_eq.
+ (fix_equal): ditto.
+
+Mon Jul 16 19:02:31 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_float_cmp): rename a local variable.
+
+Mon Jul 16 18:40:26 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_float_cmp): renamed from rb_big_float_cmp.
+
+ * internal.h: follow the above change.
+
+ * numeric.c: ditto.
+
+Mon Jul 16 17:57:54 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_float_cmp): compare an integer and float precisely.
+ [ruby-core:31376] [Bug #3589] reported by Tomasz Wegrzanowski.
+
+Mon Jul 16 17:29:45 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_float_cmp): support fixnum for argument x.
+
+ * numeric.c (fix_equal): use rb_big_float_cmp.
+ (fix_cmp): ditto.
+ (fix_gt): ditto.
+ (fix_ge): ditto.
+ (fix_lt): ditto.
+ (fix_le): ditto.
+ (flo_eq): ditto.
+ (flo_cmp): use rb_big_float_cmp for fixnum argument.
+ (flo_gt): ditto.
+ (flo_ge): ditto.
+ (flo_lt): ditto.
+ (flo_le): ditto.
+
+Mon Jul 16 17:05:53 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/fileutils/test_fileutils.rb: add test for FileUtils#uptodate?
+
+Mon Jul 16 16:56:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/fileutils.rb (FileUtils.uptodate?): remove useless parameter.
+ patched by Oscar Del Ben.[Bug #6708][ruby-core:46256]
+
+Mon Jul 16 15:37:56 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_eq): use rb_big_float_cmp.
+
+Mon Jul 16 15:00:45 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_big_float_cmp): declared.
+
+ * bignum.c (rb_big_float_cmp): extracted from rb_big_cmp and big_op.
+ (rb_big_cmp): use rb_big_float_cmp.
+ (big_op): ditto.
+
+ * numeric.c (flo_cmp): use rb_big_float_cmp.
+ (flo_gt): ditto.
+ (flo_ge): ditto.
+ (flo_lt): ditto.
+ (flo_le): ditto.
+
+Mon Jul 16 14:14:21 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (enum big_op_t): new type.
+ (big_op): use enum big_op_t.
+ (big_gt): ditto.
+ (big_ge): ditto.
+ (big_lt): ditto.
+ (big_le): ditto.
+
+Sat Jul 14 18:18:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_get_values_at): fill with nil out of range.
+ [ruby-core:43678] [Bug #6203]
+
+Sat Jul 14 17:17:55 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * cont.c (cont_restore_0): improve docs. [Bug #6706][ruby-core:46243]
+ patched by Oscar Del Ben via https://github.com/ruby/ruby/pull/140
+
+Sat Jul 14 17:08:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): raise an exception, when input elements
+ are not one or two elements arrays. [ruby-core:39945] [Bug #5406]
+
+Sat Jul 14 16:16:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): use
+ Array#uniq!.
+
+ * lib/test/unit.rb (Test::Unit::Runner#deal): deal tasks to workers.
+
+ * lib/test/unit.rb (Test::Unit::Runner#quit_workers): close and kill
+ all workers.
+
+ * lib/test/unit.rb (Test::Unit::Runner#delete_worker): delete dead
+ worker from working set.
+
+ * lib/test/unit.rb (Test::Unit::Runner#launch_worker): add new worker
+ to working set.
+
+ * lib/test/unit.rb (Test::Unit::Runner#launch_worker): extract.
+
+ * lib/test/unit.rb (Test::Unit::Runner#start_watchdog): extract.
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): move
+ initializations with nothing to release outside begin/ensure.
+
+Sat Jul 14 16:04:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_join): should not infected by separator if it is not
+ used. [ruby-core:42161][Bug #5902]
+
+Sat Jul 14 02:31:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_thread_blocking_region): fix declarations
+ prototypes without arguments in C++ have different meanings than C.
+
+Thu Jul 12 12:32:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/runner.rb: skip default gems to get rid of loading old versions
+ before installation.
+
+Thu Jul 12 11:44:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_new_frozen): since the result object should have
+ same tainted/untrusted bits with the original object, return new
+ object if the shared object unmatch. [ruby-core:39745][Bug #5374]
+
+Thu Jul 12 10:46:39 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/net/http/test_http.rb (TestNetHTTPLocalBind#test_bind_to_local*):
+ cannot cross between network interfaces on Windows, so skip this test
+ until we find better test.
+
+Thu Jul 12 08:48:33 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 3.2.0 (r7598)
+ * test/minitest/*: ditto
+
+Thu Jul 12 05:11:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defined): use method entry and id in cfp for proper
+ superclass, since klass in iseq is shared by dynamically defined
+ methods from the same block. [ruby-core:45831][Bug #6644]
+
+Thu Jul 12 01:49:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#connect): use local_host and local_port
+ if specified. patched by Ricardo Amorim [Feature #6617]
+
+Wed Jul 11 17:36:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: append ENCOBJS to DLDOBJS but not EXTSOLIBS which is
+ not a target, to compile enc/encinit.c.
+
+Wed Jul 11 12:38:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_mul): nonstatic initializer
+ of an aggregate type is a C99ism.
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_mul): get rid of VC++
+ warnings.
+
+Mon Jul 9 16:11:30 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * vm_eval.c (rb_eval_string_from_file,
+ rb_eval_string_from_file_protect): new functions to replace
+ rb_compile_main_from_string() and ruby_eval_main().
+
+ * nacl/pepper_ruby.c: Follows the change in vm_eval.c
+
+Mon Jul 9 14:05:42 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ Reverts a half of r36079. As we discussed on ruby-dev@ and IRC,
+ we do not need to disclose intermediate representation of program.
+ The program embedding CRuby should use rb_eval_string family.
+ * include/ruby/ruby.h (ruby_opaque_t): removed.
+ (ruby_compile_main_from_file, ruby_compile_main_from_string,
+ ruby_eval_main): removed.
+
+ * eval.c (ruby_eval_main_internal): became ruby_exec_internal() again.
+ (ruby_eval_main): removed.
+
+ * ruby.c (PREPARE_PARSE_MAIN) reverted.
+ (parse_and_compile_main, ruby_compile_main_from_file,
+ ruby_compile_main_from_string): removed
+
+Wed Jul 11 10:16:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby.h (HAVE_RUBY_THREAD_H): to show ruby/thread.h to be
+ available. fixup of r36355.
+
+Wed Jul 11 03:26:47 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Added streaming support to inflate processing.
+ This allows zlib streams to be processed without huge memory growth.
+ [Feature #6612]
+ * NEWS: ditto
+ * ext/zlib/zlib.c (zstream_expand_buffer): Uses rb_yield when a block
+ is given for streaming support. Refactored to use
+ zstream_expand_buffer_into to remove duplicate code.
+ * ext/zlib/zlib.c (zstream_expand_buffer_protect): Added wrapper
+ function to pass jump state back through GVL-free section to allow
+ zstream clean-up before terminating the ruby call.
+ * ext/zlib/zlib.c (zstream_expand_buffer_without_gvl): Acquire GVL to
+ yield processed chunk of output stream.
+ * ext/zlib/zlib.c (zstream_detach_buffer): When a block is given,
+ returns Qnil mid-stream and yields the output buffer at the end of
+ the stream.
+ * test/zlib/test_zlib.rb: Updated tests
+
+Tue Jul 10 22:57:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/thread.h: new header file for thread stuff.
+
+ * thread.c (rb_thread_call_without_gvl): export. [Feature#4328]
+ returns void* instead of VALUE. [Feature #5543]
+
+ * thread.c (rb_thread_blocking_region): deprecate. [ruby-core:46295]
+
+Tue Jul 10 10:48:59 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (NT, NtInitialize): removed unused old macros.
+
+Tue Jul 10 10:43:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in: removed --enable/disable-win95 options. (see r36342)
+
+Tue Jul 10 00:44:41 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h: Removed RUBY_GLOBAL_SETUP completely. It is
+ no meaning definition since r24894.
+ * main.c: ditto.
+ * nacl/pepper_main.c: ditto.
+
+Mon Jul 9 23:59:36 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * dln.c: Simplify and make consistent an ifdef for Mac OS X.
+ * ext/socket/rubysocket.h: ditto.
+ * ext/tk/stubs.c: ditto.
+ * io.c: ditto.
+ * process.c: ditto.
+ * signal.c: ditto.
+ * vm_dump.c: ditto.
+
+Mon Jul 9 17:37:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (win95_stat): removed unnecessary macro.
+
+Mon Jul 9 17:22:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat, win32/setup.mak, win32/Makefile.sub: omitted
+ Win9x support. removed --enable/disable-win95 options.
+
+ * include/ruby/win32.h, file.c, win32/win32.c: ditto.
+
+ * win32/README.win32: ditto.
+
+Mon Jul 9 13:28:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (DLDFLAGS): use TARGET_ENTRY to specify an entry point
+ instead of TARGET which may contain non-identifier characters.
+
+ * lib/mkmf.rb (create_makefile): add TARGET_NAME which is the first
+ part consists of only word characters. [ruby-core:46248][Bug #6709]
+
+Sun Jul 8 07:36:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (shadowing_lvar_gen, warn_unused_var): no warnings for
+ variables starting with _. [ruby-core:46160][Feature #6693]
+
+Sat Jul 7 23:07:30 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * test/csv/test_features.rb: add require for Tempfile.
+ * test/csv/test_serialization.rb: ditto.
+
+Fri Jul 6 06:49:50 2012 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_aref): Added a description of the behavior of
+ index positioning. [Bug #6680]
+ * array.c (rb_ary_aset): ditto. Reordered sentences for clarity.
+ * string.c (rb_str_aref_m): Added a description of the behavior of
+ index positioning
+
+Fri Jul 6 05:38:44 2012 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (rb_str_bytesize): Improve documentation. Patch by Oscar
+ Del Ben from github issue #138.
+ * string.c (rb_str_empty): ditto.
+ * string.c (rb_str_times): ditto.
+ * string.c (rb_str_dump): ditto.
+ * string.c (rb_str_center): ditto.
+
+Fri Jul 6 04:05:59 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (zstream_expand_buffer_without_gvl): Use
+ ruby_xrealloc() to avoid crash with CALC_EXACT_MALLOC_SIZE.
+
+Thu Jul 5 17:32:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h: move ThreadShield declarations from intern.h.
+
+Thu Jul 5 16:00:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (ThreadShield): rename from Barrier.
+
+Thu Jul 5 15:14:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb (show_progress): refine error output. do not
+ count non-empty error message, but just warn.
+
+ * bootstraptest/runner.rb (error): show errors immediately if tty.
+
+Thu Jul 5 12:28:11 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/net/http/test_httpresponses.rb: Add a test file for
+ Net::HTTPResponses and put a test case for the previous bug.
+
+Thu Jul 5 06:33:52 2012 Mark Dodwell <mark@mkdynamic.co.uk>
+
+ * lib/net/http/responses.rb: Fix 4xx classes to inherit correctly
+ from Net::HTTPClientError. [Bug #6700]
+
+Wed Jul 4 21:55:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (proc_options): warn only if -K and -w option is specified.
+ see also r36274 [Feature #5206]
+
+Wed Jul 4 21:41:44 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * gc.c, atomic.h (ATOMIC_SIZE_*): moved from gc.c to atomic.h
+ [ruby-dev:45909]
+
+Wed Jul 4 19:13:15 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole.rb (test_s_codepage_changed):
+ FileSystemObject only supports ANSI or UTF-16LE encoding.
+ Patch by h.shirosaki (Hiroshi Shirosaki) [ruby-trunk - Bug #6650]
+
+Wed Jul 4 11:52:12 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (ATOMIC_SIZE_*): 64bit Windows support.
+
+Wed Jul 4 11:11:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_frame_callee, rb_f_callee_name): fix to return the
+ called id. this longstanding bug has been caused and blocked by
+ the structure of old rb_control_frame_t and rb_iseq_t.
+
+ * vm_insnhelper.c (vm_push_frame): set proper method entry.
+
+Wed Jul 4 08:29:31 2012 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_aref): Updated documentation to indicate the
+ starting index is an index into the array or string. Updated
+ examples to show behavior of indexes at the end of an array or
+ string. Based on patch by Marcus Stollsteimer. [Bug #6680]
+ * array.c (rb_ary_aset): ditto.
+ * string.c (rb_str_aref): ditto. Also added descriptive argument
+ names to call-seq section.
+
+Wed Jul 4 07:05:59 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/zlib/test_zlib.rb (test_inflate_partial_input): Added test for
+ inflating incomplete zlib streams.
+
+Tue Jul 3 23:14:16 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * gc.c (ATOMIC_SIZE_EXCHANGE): fix function name on Solaris [Bug #6689]
+ [ruby-dev:45904]
+
+Tue Jul 3 16:07:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (vm_malloc_fixup, vm_xrealloc, vm_xfree, after_gc_sweep): use
+ atomic operations to update malloc_params.
+
+Tue Jul 3 14:50:16 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (zstream_run_func): Don't exit run loop for buffer
+ error. [Feature #6615]
+ * ext/zlib/zlib.c: Fix style to match existing functions.
+
+Tue Jul 3 12:05:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): also needed the workaround for VC8
+ for x64. [ruby-dev:45875] [Bug #6676]
+ reported by aves_ramphastos (Seigo Ishigane)
+
+Tue Jul 3 11:56:46 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (zstream_detach_buffer): Refactored tainting of
+ output string, moving it from the callee to zstream_detach_buffer.
+ * ext/zlib/zlib.c (rb_zstream_finish): ditto
+ * ext/zlib/zlib.c (rb_zstream_flush_next_out): ditto
+ * ext/zlib/zlib.c (rb_deflate_deflate): ditto
+ * ext/zlib/zlib.c (rb_deflate_flush): ditto
+ * ext/zlib/zlib.c (rb_inflate_inflate): ditto
+
+Tue Jul 3 11:16:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (runnable): make symbolic links to run in build directory.
+
+Tue Jul 3 10:46:06 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (proc_options): warn if -K option is specified. [Feature #5206]
+
+Tue Jul 3 06:12:13 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (Init_Object): Added RDoc location pointers for
+ Kernel#methods, Kernel#protected_methods, Kernel#private_methods and
+ Kernel#public_methods. [Bug #6666]
+
+Tue Jul 3 06:02:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (zstream_run): Process zlib streams without GVL.
+ [Feature #6615]
+ * NEWS: ditto.
+
+Mon Jul 2 22:13:04 2012 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (rb_thread_aref): add explanation for why Thread#[] and
+ Thread#[]= are fiber-local and not thread-local.
+ reported by Julien A. [ruby-core:41606] [ruby-trunk - Bug #5750]
+
+Mon Jul 2 21:25:55 2012 Tanaka Akira <akr@fsij.org>
+
+ * time.c (timew_out_of_timet_range): specialization for
+ SIZEOF_TIME_T == SIZEOF_INT64_T.
+
+Mon Jul 2 17:06:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_include_module): include modules after the origin.
+
+ * class.c (include_modules_at): skip prepended modules.
+
+ * class.c (rb_prepend_module): now basic.klass in ICLASS refers the
+ old original class/module. [ruby-dev:45868][Bug #6662]
+
+ * class.c (rb_mod_ancestors): ditto.
+
+ * vm_method.c (search_method): search method entry from the origin
+ iclass.
+
+Mon Jul 2 05:54:58 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:46058].
+
+Mon Jul 2 05:35:43 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (d_lite_marshal_load): accepts old dump.
+
+Mon Jul 2 03:21:53 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * README.EXT.ja: fixed args of have_struct_member() ,
+ create_makefile() same as r35977. however, mkmf.rb include
+ no Japanese-docs, so Appendix C was not removed. [Bug #6597]
+
+Fri Jun 29 05:08:41 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit/parallel.rb: workaround fix for rubygems.
+ RubyGems can't find rake if the source directory is not equal to
+ the directory which is running the test. [Bug #6604]
+
+Thu Jun 28 20:33:15 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/win32ole/test_win32ole.rb (test_s_codepage_changed):
+ FileSystemObject only supports ANSI or UTF-16LE encoding.
+ Patch by bosko (Bosko Ivanisevic) [ruby-trunk - Bug #6650]
+
+Thu Jun 28 09:27:09 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * class.c (class_instance_method_list): consider prepended Class/Module
+ when recur != 0. [ruby-dev:45863] [Bug #6660]
+
+ * test/ruby/test_module.rb (test_prepend_instance_methods_false): add
+ a test for it.
+
+
+Thu Jun 28 06:12:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_mod_ancestors): fix ancestors order.
+ [ruby-core:45919][Bug #6658] [ruby-dev:45861][Bug #6659]
+
+Wed Jun 27 21:28:59 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/racc/parser.rb: NotImplementError is not exist.
+
+ * lib/irb/output-method.rb (IRB::OutputMethod#print): ditto.
+
+Wed Jun 27 21:31:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_prepend_module): ancestors of prepending module also
+ should be included. [ruby-core:45914][Bug #6654]
+
+Wed Jun 27 21:01:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (class_instance_method_list): m_tbl in prepended
+ class/module is NULL. [ruby-core:45915][Bug #6655]
+
+Wed Jun 27 16:48:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_prepend_module): prepend module into another module.
+
+ * eval.c (rb_mod_prepend): new method Module#prepend. [Feature #1102]
+
+Wed Jun 27 09:15:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (is_popen_fork): check if fork and raise NotImplementedError if
+ unavailable.
+
+ * io.c (rb_io_s_popen): allow environment variables hash and exec
+ options as flat parameters, not in an array arguments.
+ [Feature#6651] [EXPERIMENTAL]
+
+ * process.c (rb_execarg_extract_options): extract exec options, but no
+ exceptions on non-exec options and returns them as a Hash.
+
+ * process.c (rb_execarg_setenv): set environment variables.
+
+Tue Jun 26 16:57:14 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (register_cached_thread_and_wait):
+ return immediately if malloc() failed.
+ [ruby-core:43960] [ruby-trunk - Bug #6235]
+
+ * thread_pthread.c (USE_THREAD_CACHE): check already defined or not.
+
+Tue Jun 26 10:01:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_s_popen): revert r36213 "popen: shell commands with
+ envvar" because it disabled to let single command bypass shell.
+
+Mon Jun 25 17:49:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_mix_module): revert Module#mix.
+
+Mon Jun 25 16:57:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_mod_define_method): allow method transplanting from a
+ module to either class or module. [ruby-core:34267][Feature #4254]
+
+Mon Jun 25 11:34:45 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * internal.h: use rb_pid_t instead of pid_t because of there is no
+ definition of pid_t here on Windows.
+
+Mon Jun 25 00:25:01 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in (for stack end address): remove human68k specific
+ check. It is no longer supported.
+
+Sun Jun 24 23:02:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): merge win32 code using spawnv().
+
+Sun Jun 24 22:53:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (check_exec_fds): separate check_exec_fds_1() since
+ nonstatic initializer of an aggregate type is not allowed by C89.
+
+Sun Jun 24 07:47:17 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): options field removed.
+
+ * process.c: follow the rb_execarg change.
+
+Sat Jun 23 23:48:21 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_spawn_cmd): unused variable removed to suppress a
+ warning.
+ (save_env): ditto.
+
+ [ruby-core:45797] reported by Luis Lavena.
+
+Sat Jun 23 23:19:31 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add new_pgroup_given and new_pgroup_flag
+ fields.
+
+ * process.c (EXEC_OPTION_NEW_PGROUP): removed.
+ (proc_spawn_cmd): take a struct rb_execarg argument.
+ use the new fields.
+ (rb_execarg_addopt): use the new fields.
+ (rb_spawn_process): follow the proc_spawn_cmd change.
+
+ [ruby-core:45794] [ruby-trunk - Bug #6633] reported by Luis Lavena.
+
+Sat Jun 23 20:26:36 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add fd_dup2, fd_close, fd_open,
+ fd_dup2_child fields.
+
+ * process.c (EXEC_OPTION_DUP2): removed.
+ (EXEC_OPTION_CLOSE): removed.
+ (EXEC_OPTION_OPEN): removed.
+ (EXEC_OPTION_DUP2_CHILD): removed.
+ (mark_exec_arg): mark the new fields.
+ (check_exec_redirect1): change condition for default option.
+ (check_exec_redirect): take a struct rb_execarg argument.
+ use the new fields.
+ (rb_execarg_addopt): follow the check_exec_redirect change.
+ (check_exec_fds): use the new fields.
+ (save_redirect_fd): ditto.
+
+Sat Jun 23 19:01:18 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_execarg_fixup): fix envopts condition.
+
+Sat Jun 23 18:44:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (check_exec_redirect1): extracted from
+ check_exec_redirect.
+
+Sat Jun 23 17:22:02 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (save_env): don't use EXEC_OPTION_UNSETENV_OTHERS.
+ (rb_execarg_run_options): ditto.
+
+Sat Jun 23 17:04:08 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add env_modification field.
+
+ * process.c (EXEC_OPTION_ENV): removed.
+ (mark_exec_arg): mark env_modification field.
+ (rb_exec_fillarg): update the new field, instead of options array.
+ (rb_execarg_fixup): use the new field.
+ (save_env): ditto.
+ (rb_execarg_run_options): ditto.
+
+Sat Jun 23 16:27:01 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add rlimit_limits field.
+
+ * process.c (EXEC_OPTION_RLIMIT): removed.
+ (mark_exec_arg): mark rlimit_limits field.
+ (rb_execarg_addopt): update the new fields, instead of options array.
+ (run_exec_rlimit): use the new field.
+ (rb_execarg_run_options): clear sarg using MEMZERO. use the new
+ field.
+
+Sat Jun 23 14:29:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add chdir_given and chdir_dir fields.
+
+ * process.c (EXEC_OPTION_CHDIR): removed.
+ (mark_exec_arg): mark chdir_dir field.
+ (rb_execarg_addopt): update the new fields, instead of options array.
+ (rb_execarg_run_options): use the new fields.
+
+Sat Jun 23 13:20:47 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add close_others_given, close_others_do and
+ close_others_maxhint fields.
+
+ * process.c (EXEC_OPTION_CLOSE_OTHERS): removed.
+ (rb_execarg_addopt): update the new fields, instead of options array.
+ (check_exec_fds): take eargp as an argument. update the
+ close_others_maxhint field.
+ (rb_execarg_fixup): follow the argument change of check_exec_fds.
+ (rb_execarg_run_options): use the new fields.
+
+Sat Jun 23 10:41:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add unsetenv_others_given and
+ unsetenv_others_do fields.
+
+ * process.c (EXEC_OPTION_UNSETENV_OTHERS): removed.
+ (rb_execarg_addopt): update the new fields, instead of options array.
+ (rb_execarg_fixup): use the new fields.
+
+Sat Jun 23 09:35:47 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: use the variable name "soptions" for sargp->options.
+
+Sat Jun 23 09:17:49 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: use the name "sargp" for struct rb_execarg variables
+ consistently for saving process attributes.
+
+ * io.c: ditto.
+
+Sat Jun 23 07:59:57 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: use the name "eargp" for struct rb_execarg variables
+ consistently except for saving process attributes.
+
+ * io.c: ditto.
+
+ * ext/pty/pty.c: ditto.
+
+Wed Jun 20 18:27:03 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * common.mk: Add missing dependencies.
+
+Fri Jun 22 20:27:39 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add pgroup_given and pgroup_pgid fields.
+
+ * process.c (EXEC_OPTION_PGROUP): removed.
+ (rb_execarg_addopt): update the new fields, instead of options array.
+ (run_exec_pgroup): take a struct rb_execarg argument. refer the new
+ fields.
+ (rb_execarg_run_options): follow run_exec_pgroup change.
+
+Fri Jun 22 18:48:51 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * README.EXT, README.EXT.ja: use "sval" for the third argument
+ name of Data_Wrap_Struct().
+ Suggested by @satoh_fumiyasu. Thanks!!!
+
+Fri Jun 22 18:04:26 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c, vm_eval.c: set th->base_block properly.
+ th->base_block is information for (a) parsing, (b) compiling
+ and (c) setting up the frame to execute the program passed by
+ `eval' method. For example, (1) parser need to know up-level
+ variables to detect it is variable or method without paren.
+ Befor (a), (b) and (c), VM set th->base_block by passed bindng
+ (or previous frame information). After execute (a), (b) and (c),
+ VM should clear th->base_block. However, if (a), (b) or (c)
+ raises an exception, then th->base_block is not cleared.
+ Problem is that the uncleared value th->balo_block is used for
+ irrelevant iseq compilation. It causes SEGV or critical error.
+ I tried to solve this problem: to clear them before exception,
+ but finally I found out that it is difficult to do it (Ruby
+ program can be run in many places).
+ Because of this background, I set th->base_block before
+ compiling iseq and restore it after compiling.
+ Basically, th->base_block is dirty hack (similar to global
+ variable) and this patch is also dirty.
+
+ * bootstraptest/test_eval.rb: add a test for above.
+
+ * internal.h: remove unused decl.
+
+ * iseq.c (rb_iseq_compile_with_option): add base_block parameter.
+ set th->base_block before compilation and restore it after
+ compilation.
+
+ * ruby.c (require_libraries): pass 0 as base_block instead of
+ setting th->base_block
+
+ * tool/compile_prelude.rb (prelude_eval): apply above changes.
+
+ * vm.c, vm_eval.c: ditto.
+
+ * vm_core.h: add comments.
+
+Fri Jun 22 18:19:38 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: pass struct rb_execarg value instead of its options
+ field for saving process attribute changing functions.
+ (save_redirect_fd): take a struct rb_execarg argument.
+ (run_exec_dup2): ditto.
+ (run_exec_close): ditto.
+ (run_exec_open): ditto.
+ (run_exec_dup2_child): ditto.
+ (run_exec_pgroup): ditto.
+ (run_exec_rlimit): ditto.
+ (save_env): ditto.
+ (rb_execarg_run_options): follow the above functions change.
+
+Fri Jun 22 17:55:48 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_backtrace.rb: decrease recursion depth
+ to reduce consuming stack size.
+
+Fri Jun 22 13:36:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_init, random_load): cannot initialize frozen object
+ again, nor with tainted/untrusted object. [Bug #6540]
+
+Fri Jun 22 13:32:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_copyable): new function, to ensure the target is
+ not frozen and the source is not tainted nor untrusted.
+
+Fri Jun 22 05:55:20 2012 Eric Hodel <drbrain@segment7.net>
+
+ * eval.c (ruby_cleanup): Fixed typo. Patch by Trever Dawe.
+ Fixes #131 (github). [ruby-trunk - Bug #6619]
+
+Thu Jun 21 21:16:58 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_execarg_addopt): take a VALUE argument instead of
+ struct rb_execarg.
+ (rb_exec_arg_addopt): follow the rb_execarg_addopt change.
+ (check_exec_options_i): ditto.
+
+ * io.c (pipe_open): follow the rb_execarg_addopt change.
+
+ * internal.h (rb_execarg_addopt): follow the definition change.
+
+Thu Jun 21 20:34:19 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): take a VALUE argument instead of
+ struct rb_execarg.
+ (rb_check_exec_options): ditto.
+ (check_exec_options_i): ditto.
+
+Thu Jun 21 19:48:05 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_async_signal_safe): use rb_execarg_run_options
+ instead of rb_run_exec_options_err.
+ (rb_spawn_process): ditto.
+
+Thu Jun 21 19:02:43 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): take a VALUE argument instead of
+ struct rb_execarg.
+ (rb_execarg_init): follow the rb_exec_fillarg change.
+
+Thu Jun 21 18:36:43 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_execarg_init): take a VALUE argument instead of
+ struct rb_execarg.
+ (rb_execarg_new): follow the rb_execarg_init change.
+ (rb_exec_arg_init): ditto.
+
+ * internal.h (rb_execarg_init): follow the definition change.
+
+Thu Jun 21 17:20:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (new_args_tail_gen): fix GC problem of keyword rest
+ argument. the wrapped struct should be bound to the wrapping node
+ before assignment of child nodes, to get rid of the case the
+ children are referred by only the struct pointer which is not a
+ subject of GC. [ruby-core:45744]
+
+Thu Jun 21 07:06:52 2012 Koichi Sasada <ko1@atdot.net>
+
+ * error.c (err_append): rename err_append() to compile_err_append()
+ and move definition body. err_append() is used only by compiling.
+
+Thu Jun 21 06:21:54 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_execarg_fixup): take a VALUE argument instead of
+ struct rb_execarg.
+
+ * internal.h (rb_execarg_fixup): follow the definition change.
+
+ * io.c (pipe_open): follow rb_execarg_fixup change.
+
+ * ext/pty/pty.c (establishShell): ditto.
+
+Wed Jun 20 21:25:37 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (struct rb_execarg): add umask_given and umask_mask
+ fields.
+
+ * process.c (STATIC_ASSERT): removed.
+ (rb_execarg_addopt): follow the rb_execarg change.
+ (rb_execarg_run_options): ditto.
+
+Wed Jun 20 20:38:23 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (struct rb_execarg) moved and renamed from
+ struct rb_exec_arg in intern.h.
+
+ * include/ruby/intern.h (struct rb_exec_arg): refer Data object which
+ contains struct rb_execarg.
+
+ * process.c: use struct rb_execarg instead of struct rb_exec_arg
+ except functions declared in intern.h.
+ (rb_exec_arg_addopt): extract a pointer to struct rb_execarg from
+ struct rb_exec_arg.
+ (rb_exec_arg_init): ditto.
+ (rb_exec_arg_fixup): ditto.
+ (rb_run_exec_options_err): ditto.
+ (rb_run_exec_options): ditto.
+ (rb_exec_err): ditto.
+ (rb_exec): ditto.
+
+ * io.c: use struct rb_execarg instead of struct rb_exec_arg.
+
+ * ext/pty/pty.c: ditto.
+
+Wed Jun 20 19:13:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg_new): declared.
+ (rb_execarg_get): ditto.
+
+ * process.c (mark_exec_arg): new function.
+ (free_exec_arg): ditto.
+ (memsize_exec_arg): ditto.
+ (exec_arg_data_type): defined.
+ (rb_execarg_new): new function.
+ (rb_execarg_get): ditto.
+ (rb_f_exec): use rb_execarg_new.
+ (rb_spawn_internal): ditto.
+ (rb_f_spawn): ditto.
+
+ * io.c (pipe_open_v): use rb_execarg_new.
+ (pipe_open_s): ditto.
+
+ * ext/pty/pty.c (establishShell): use rb_execarg_new.
+
+Wed Jun 20 16:36:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/setproctitle.c (environ): use (*_NSGetEnviron()) instead of
+ environ on Darwin for namespace cleanness, same as [ruby-core:00537].
+ [ruby-core:45615] [Bug #6576]
+
+Wed Jun 20 11:33:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_execarg_addopt): always make Fixnum, and ignore higher
+ bits in too large umask value.
+
+Wed Jun 20 11:24:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): deal with
+ sudden-death of workers.
+
+Mon Jun 18 20:34:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * time.c (init_leap_second_info): fix non-ANSI function declaration.
+
+Mon Jun 18 20:29:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ruby.c (rb_f_sub): use ansi style declaration.
+ * ruby.c (rb_f_gsub): ditto.
+ * ruby.c (rb_f_chomp): ditto.
+
+Mon Jun 18 20:26:23 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * random.c (rb_random_int32): get rid of "warning: constant 0x100000000
+ is so big it is long" warning.
+
+Mon Jun 18 20:07:23 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * dir.c (dir_initialize): get rid of "unused return: argc = rb_scan_args()"
+ warning.
+
+Mon Jun 18 19:31:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/missing.h: include math.h before checking INFINITY
+ and NAN. Otherwise, strange macro redefinition will occur.
+
+Mon Jun 18 19:12:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * array.c (ary_reverse): use ansi style declaration.
+
+Tue Jun 19 18:43:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/backward/rubysig.h: fix visibility. [Bug #6607]
+
+Tue Jun 19 17:51:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_execarg_run_options): do not call any methods in the
+ async-signal-safe function. mask has been checked with NUM2MODET()
+ already and converted with LONG2NUM().
+
+Tue Jun 19 11:59:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (Init_readline): don't set 0 to
+ rl_catch_signals and rl_catch_sigwinch. [Bug #5423]
+
+Tue Jun 19 11:52:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_s_get_special_prefixes): suppress
+ warning: uninitialized instance variable.
+
+Tue Jun 19 11:43:16 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_getc): fix editline compatibility
+ broken by r36123. [Bug #6601]
+
+Mon Jun 18 17:10:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_subpos): split from rb_str_substr. returns
+ adjusted position for substring.
+
+Mon Jun 18 10:42:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_getc): deal with ESC just followed
+ by ASCII as meta prefix in incremental search mode. based on the
+ patch from rctay (Tay Ray Chuan) at [ruby-core:45682]. [Bug #6601]
+
+Sun Jun 17 22:23:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (rb_file_directory_p): move documentation for Dir.exist? from
+ file.c so that the proper description will be shown instead of the
+ documentation of File.directory?. [ruby-core:45685]
+
+Sun Jun 17 16:21:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_win32.h (rb_thread_lock_t): make a union for USE_WIN32_MUTEX.
+ this internal is used only in thread_win32.c, but has to be complete
+ to define rb_thread_t.
+
+ * thread_win32.c (native_mutex_lock, native_mutex_destroy): fix for
+ USE_WIN32_MUTEX.
+
+ * thread_win32.c (native_cond_timedwait_ms): rename reserved pattern
+ name. user defined symbols should not start with __.
+
+Sat Jun 16 19:24:01 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: define date_sg_t.
+
+Sat Jun 16 18:46:57 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_tmx.h: offset in struct tmx_funcs is now int.
+ * ext/date/date_strftime.c: ditto.
+ * ext/date/date_core.c: ditto.
+
+Sat Jun 16 18:31:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_setup): set running state in the normal case before
+ popping a tag.
+
+Sat Jun 16 07:46:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): format workers
+ results in the parent.
+
+Sat Jun 16 07:12:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/runruby.rb (File.realpath): return real path of expanded path.
+ [Bug #6598]
+
+Sat Jun 16 07:12:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb (main): ignore -j option for compatibility
+ with test/unit.
+
+Sat Jun 16 07:11:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#puke): modify only result and
+ drop useless reports, not override entirely.
+
+ * lib/test/unit/parallel.rb (Test::Unit::Worker#_run_suite): report
+ unformatted results. formatting messages is not a workers task.
+
+ * lib/test/unit/parallel.rb (Test::Unit::Worker#puke): store raw
+ results.
+
+Sat Jun 16 01:27:14 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: bumping psych to 1.3.3
+ * ext/psych/psych.gemspec: ditto
+
+Fri Jun 15 20:54:28 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * vm_backtrace.c (backtrace_collect): rename from backtreace_collect.
+
+Fri Jun 15 19:22:13 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: remove VM_FRAME_MAGIC_FINISH (finish frame type).
+ Before this commit:
+ `finish frame' was place holder which indicates that VM loop
+ needs to return function.
+ If a C method calls a Ruby methods (a method written by Ruby),
+ then VM loop will be (re-)invoked. When the Ruby method returns,
+ then also VM loop should be escaped. `finish frame' has only
+ one instruction `finish', which returns VM loop function.
+ VM loop function executes `finish' instruction, then VM loop
+ function returns itself.
+ With such mechanism, `leave' instruction (which returns one
+ frame from current scope) doesn't need to check that this `leave'
+ should also return from VM loop function.
+ Strictly, one branch can be removed from `leave' instruction.
+ Consideration:
+ However, pushing the `finish frame' needs costs because
+ it needs several memory accesses. The number of pushing
+ `finish frame' is greater than I had assumed. Of course,
+ pushing `finish frame' consumes additional control frame.
+ Moreover, recent processors has good branch prediction,
+ with which we can ignore such trivial checking.
+ After this commit:
+ Finally, I decide to remove `finish frame' and `finish'
+ instruction. Some parts of VM depend on `finish frame',
+ so the new frame flag VM_FRAME_FLAG_FINISH is introduced.
+ If this frame should escape from VM function loop, then
+ the result of VM_FRAME_TYPE_FINISH_P(cfp) is true.
+ `leave' instruction checks this flag every time.
+ I measured performance on it. However on my environments,
+ it improves some benchmarks and slows some benchmarks down.
+ Maybe it is because of C compiler optimization parameters.
+ I'll re-visit here if this cause problems.
+
+ * insns.def (leave, finish): remove finish instruction.
+
+ * vm.c, vm_eval.c, vm_exec.c, vm_backtrace.c, vm_dump.c:
+ apply above changes.
+
+Fri Jun 15 19:11:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#puke): always add skipped
+ results to the report for parallel test. [Bug #6595]
+
+Fri Jun 15 09:01:35 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * nacl/pepper_main.c: Removed an unnecessary and erroneous inclusion.
+
+Thu Jun 14 22:59:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CPPOUTFILE): check if output is really sent to
+ specified file to tell if -o option works. [ruby-dev:45742]
+ [Bug#6591]
+
+ * configure.in (RUBY_CPPOUTFILE): check if output file is actually
+ created. [ruby-dev:45742] [Bug#6591]
+
+Thu Jun 14 22:10:50 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_exec_sh): don't strip leading spaces of the script.
+
+Thu Jun 14 15:54:02 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_s_basename, rb_file_s_dirname): documentation fix.
+ File.basename and File.dirname support File::ALT_SEPARATOR.
+
+Thu Jun 14 11:10:10 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * nacl/pepper_main.c: Applies the new embedding API to pepper_ruby.
+
+Thu Jun 14 10:44:41 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * include/ruby/ruby.h: Grouped APIs for embedding CRuby interpreter.
+ (ruby_setup, ruby_compile_main_from_file,
+ ruby_compile_main_from_string, ruby_eval_main,
+ ruby_set_script_name): new APIs to embed CRuby.
+ (ruby_opaque_t) Opaque pointer to an internal data, to NODE or iseq
+ in particular.
+
+ * eval.c (ruby_setup): Similar to ruby_init but returns an error code
+ instead of exit(3) on error.
+ (ruby_eval_main): Similar to ruby_exec_node but returns the
+ evaluation result.
+ (ruby_eval_main_internal): renamed from ruby_exec_internal.
+
+ * ruby.c (toplevel_context): new helper function.
+ (PREPARE_EVAL_MAIN): moved.
+ (process_options): refactored with new functions.
+ (parse_and_compile_main) new helper function.
+ (ruby_compile_main_from_file, ruby_compile_main_from_string) new API
+ (ruby_set_script_name): new API.
+
+
+Thu Jun 14 10:39:48 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * eval.c: Add doxygen comments.
+
+ * ruby.c: ditto.
+
+ * thread_pthread.c: ditto
+
+ * version.c: ditto.
+
+ * vm_core.h: ditto.
+
+Thu Jun 14 10:16:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: revert r36071 and add NetBSD to blacklist of -ansi.
+
+Thu Jun 14 07:59:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (get_stack): Linux is the only OS which includes
+ the size of guard page into the stack size.
+
+Thu Jun 14 06:21:00 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/drb/drb.rb: Replace broken links to the English DRb book.
+ Patch by Zachary Scott. [ruby-trunk - Bug #6544]
+
+Thu Jun 14 06:17:47 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/observer.rb: Update broken link to the Programming Ruby book.
+ Patch by Zachary Scott. [ruby-trunk - Bug #6536]
+ * lib/drb/drb.rb: ditto.
+
+Thu Jun 14 05:23:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (PFETCH_READY): suppress Wunused-but-set-variable.
+
+ * regparse.c (is_onechar_cclass): restructured to clarify that c is
+ used iff found == 1.
+
+Thu Jun 14 02:54:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: use -fbuiltin with -ansi -std=iso9899:199409.
+ This prevents errors introduced by disabling builtin functions,
+ which is the sub-effect of -ansi/-std.
+ Now NetBSD can use -ansi -std=iso9899:199409.
+ Maybe mingw, cygwin and darwin can also.
+
+Thu Jun 14 02:53:30 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in: don't remove macros. now name2ctype uses macros.
+
+ * tool/enc-unicode.rb: add comment why it uses Hash#index.
+
+ * enc/unicode/{name2ctype.kwd,name2ctype.src,name2ctype.h.blt}:
+ update to follow the current name2ctype.h.
+ FYI current Unicode version is 6.1.
+
+Thu Jun 14 00:16:59 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/net/http/responses.rb, lib/webrick/httpstatus.rb: Add HTTP
+ response codes added in RFCs 2817 and 4918. [ruby-core:45547]
+ [Feature #6569]
+
+ * lib/net/http/responses.rb: Rename Net::HTTPMultipleChoice to
+ Net::HTTPMultipleChoices, leaving the former as alias to the
+ latter for backward compatibility. [ruby-core:45547]
+ [Feature #6569]
+
+ * lib/net/http/responses.rb: Add comments about unused,
+ still-in-draft and private extension response codes.
+ [ruby-core:45547] [Feature #6569]
+
+Wed Jun 13 22:44:32 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/dl/test_func.rb (test_qsort1, test_qsort2): use TYPE_SIZE_T
+ for size_t variables. [ruby-dev:45733] [Bug #6584]
+
+Wed Jun 13 22:18:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: remove -ansi and -std options for lgamma_r() and
+ finite().
+
+Wed Jun 13 21:46:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: cygwin does not provide some declarations in strict
+ ANSI mode.
+
+Wed Jun 13 20:19:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_internal): move a variable declaration.
+
+Wed Jun 13 17:54:38 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * regparse.c (PFETCH_READY): this line was to suppress warning,
+ but did emit warnings if -Wuninitialized was set. Assigning
+ NULL instead if pfetch_prev should suffice the situation.
+
+Wed Jun 13 17:51:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: cygwin needs C99 for some stuff, e.g.,
+ pthread_attr_setstacksize, sched_yield.
+
+Wed Jun 13 17:50:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (.c.i): add warnflags to make the result consistent with
+ compilation.
+
+Wed Jun 13 15:12:07 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: On Windows platforms, system provided headers are
+ VC++ optimized. That is, C++ habits are often contaminated into
+ various headers. Most frequent situation is the use of //
+ comments. We bypass ANSI C mode for them. Otherwise extension
+ libs cannot include those headers.
+
+Wed Jun 13 13:39:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h: get rid of C99 style one line comments.
+
+Wed Jun 13 13:39:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_alias_internal): use strdup defined as macro.
+
+Wed Jun 13 10:20:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_exec_fillarg): get rid of SIZE_T_MAX which may need
+ more headers.
+
+ * process.c (rb_exec_fillarg): fix array element size. "continue" and
+ "readonly" exceeded the size.
+
+ * process.c (rb_exec_fillarg): use shell if the first word is reserved
+ or special built-in name.
+ http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
+
+ * process.c (rb_exec_fillarg): treat '=' only in the first word. if
+ the first word does not contain '=', it is the command name and
+ environment assignments cannot be anymore.
+
+Tue Jun 12 23:45:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/mkmf.rb: add dummy clean-static target to prevent errors for the
+ case real clean-static target doesn't exist.
+
+Tue Jun 12 22:49:42 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * process.c (rb_exec_arg_fixup): fix compile error
+
+Tue Jun 12 21:40:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): treat '=' character as a meta
+ character to detect assignments preceding command name.
+
+Tue Jun 12 20:29:19 2012 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_exec_arg_init): deprecated.
+ (rb_exec_arg_addopt): ditto.
+ (rb_exec_arg_fixup): ditto.
+ (rb_run_exec_options): ditto.
+ (rb_run_exec_options_err): ditto.
+
+ * internal.h (rb_execarg_init): declared.
+ (rb_execarg_addopt): ditto.
+ (rb_execarg_fixup): ditto.
+ (rb_execarg_run_options): ditto.
+
+ * process.c: call rb_execarg_addopt, rb_execarg_fixup,
+ rb_execarg_run_options, rb_execarg_init.
+ (rb_execarg_addopt): renamed from rb_exec_arg_addopt.
+ (rb_exec_arg_addopt): stub to call rb_execarg_addopt.
+ (rb_execarg_init): renamed from rb_exec_arg_init.
+ (rb_exec_arg_init): stub to call rb_execarg_init.
+ (rb_execarg_fixup): renamed from rb_exec_arg_fixup.
+ (rb_exec_arg_fixup): stub to call rb_execarg_fixup.
+ (rb_execarg_run_options): renamed from rb_run_exec_options_err.
+ (rb_run_exec_options_err): stub to call rb_execarg_run_options.
+ (rb_run_exec_options): call rb_execarg_run_options.
+
+ * io.c: call rb_execarg_addopt, rb_execarg_fixup,
+ rb_execarg_run_options, rb_execarg_init.
+
+ * ext/pty/pty.c (establishShell): call rb_execarg_init and
+ rb_execarg_fixup.
+
+Tue Jun 12 18:39:59 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: enable strict ANSI mode by default in case of GCC,
+ requested by _ko1.
+
+Tue Jun 12 06:40:23 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): detect '#' as a meta character.
+
+Mon Jun 11 22:15:44 2012 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_proc_exec_n): deprecated.
+ (rb_exec): ditto.
+ (rb_exec_err): ditto.
+ (rb_fork): ditto.
+ (rb_fork_err): ditto.
+
+Mon Jun 11 18:49:52 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: on checking libexecinfo, don't specify /use/local.
+ On FreeBSD people must specify --with-opt-dir or --with-execinfo-dir.
+
+Mon Jun 11 12:14:37 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: remove lfp (local frame pointer) and rename
+ dfp (dynamic frame pointer) to ep (environment pointer).
+ This change make VM `normal' (similar to other interpreters).
+ Before this commit:
+ Each frame has two env pointers lfp and dfp. lfp points
+ local environment which is method/class/toplevel frame.
+ lfp[0] is block pointer.
+ dfp is block local frame. dfp[0] points previous (parent)
+ environment pointer.
+ lfp == dfp when frame is method/class/toplevel.
+ You can get lfp from dfp by traversing previous environment
+ pointers.
+ After this commit:
+ Each frame has only `ep' to point respective environment.
+ If there is parent environment, then ep[0] points parent
+ environment (as dfp). If there are no more environment,
+ then ep[0] points block pointer (as lfp). We call such ep
+ as `LEP' (local EP). We add some macros to get LEP and to
+ detect LEP or not.
+ In short, we replace dfp and lfp with ep and LEP.
+ rb_block_t and rb_binding_t member `lfp' and `dfp' are removed
+ and member `ep' is added.
+ rename rb_thread_t's member `local_lfp' and `local_svar' to
+ `root_lep' and `root_svar'.
+ (VM_EP_PREV_EP(ep)): get previous environment pointer. This macro
+ assume that ep is not LEP.
+ (VM_EP_BLOCK_PTR(ep)): get block pointer. This macro assume
+ that ep is LEP.
+ (VM_EP_LEP_P(ep)): detect ep is LEP or not.
+ (VM_ENVVAL_BLOCK_PTR(ptr)): make block pointer.
+ (VM_ENVVAL_BLOCK_PTR_P(v)): detect v is block pointer.
+ (VM_ENVVAL_PREV_EP_PTR(ptr)): make prev environment pointer.
+ (VM_ENVVAL_PREV_EP_PTR_P(v)): detect v is prev env pointer.
+
+ * vm.c: apply above changes.
+ (VM_EP_LEP(ep)): get LEP.
+ (VM_CF_LEP(cfp)): get LEP of cfp->ep.
+ (VM_CF_PREV_EP(cfp)): utility function VM_EP_PREV_EP(cfp->ep).
+ (VM_CF_BLOCK_PTR(cfp)): utility function VM_EP_BLOCK_PTR(cfp->ep).
+
+ * vm.c, vm_eval.c, vm_insnhelper.c, vm_insnhelper.h, insns.def:
+ apply above changes.
+
+ * cont.c: ditto.
+
+ * eval.c, eval_intern.h: ditto.
+
+ * proc.c: ditto.
+
+ * thread.c: ditto.
+
+ * vm_dump.c: ditto.
+
+ * vm_exec.h: fix function name (on vm debug mode).
+
+Mon Jun 11 11:52:18 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * compile.c (iseq_set_sequence): nonstatic initializer of an
+ aggregate type is a C99ism.
+
+ * compile.c (enum compile_array_type_t): comma at the end of enum
+ list is a C99ism.
+
+ * vm_backtrace.c (enum LOCATION_TYPE): ditto.
+
+Mon Jun 11 06:31:33 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_proc_exec_n): revert the function removed at r35889.
+
+Mon Jun 11 06:20:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): assign return
+ value to the variable err.
+
+Mon Jun 11 06:17:06 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (native_cond_initialize): fix typo in r36022.
+ this cause a failure on FreeBSD 8.2 amd64.
+ http://fbsd.rubyci.org/~chkbuild/ruby-trunk/log/20120610T130201Z.diff.html.gz
+
+Mon Jun 11 05:21:57 2012 Koichi Sasada <ko1@atdot.net>
+
+ * .gdbinit (SDR): add SDR function. It's only for VM debugging.
+
+Sun Jun 10 21:50:45 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * nacl/nacl_config.rb: Fixed for 32bit hosts.
+
+Sun Jun 10 20:23:14 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ Fixes threading on NativeClient.
+
+ * thread_pthread.c (timer_thread_sleep): Extracted out a function from
+ thread_timer(). Added an alternative implementation for platforms
+ that lacks select(2) or pipe(2).
+ (rb_thread_create_timer_thread, native_cond_initialize,
+ native_cond_destroy): Replaced wrong HAVE_XXX checks.
+
+ * configure.in (pthread_attr_init): New check.
+
+Sun Jun 10 21:30:11 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_without_timer_thread): renamed from rb_exec_err.
+ (rb_exec_err): new stub function to call
+ rb_exec_without_timer_thread.
+ (rb_f_exec): call rb_exec_without_timer_thread.
+ (rb_exec): call rb_exec_without_timer_thread.
+
+Sun Jun 10 21:13:10 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork): call rb_fork_internal instead of rb_fork_err.
+
+Sun Jun 10 20:55:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_ruby): call rb_fork_internal directly.
+
+Sun Jun 10 20:19:40 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_ruby): new function.
+ (rb_f_fork): use rb_fork_ruby instead of rb_fork.
+ (rb_daemon): ditto.
+
+ * io.c (pipe_open): use rb_fork_ruby instead of rb_fork.
+
+ * internal.h (rb_fork_ruby): declared.
+
+Sun Jun 10 18:58:16 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/net/http/response.rb: Remove a duplicated rdoc and leave a
+ pointer.
+
+ * lib/net/http/responses.rb: Add RFC numbers to base on.
+
+Sun Jun 10 18:31:42 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in (RUBY_NACL): Warns if $PATH does not contain the path
+ to NativeClient SDK. PATH variable redefinition in GNUmakefile does
+ not work for GNU make 3.81.
+
+Sun Jun 10 17:54:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.h (IS_STACK_DIR_UPPER): utility macro.
+
+ * thread_pthread.c (get_stack): seems stack size does not include
+ guard size on Mac OS X.
+
+ * thread_pthread.c (ruby_init_stack): adjust stack size for offset of
+ addr from the bottom.
+
+Sun Jun 10 15:49:47 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (retry_fork): call after_fork except in a child process.
+ (rb_fork_internal): restrict after_fork call condition.
+
+Sun Jun 10 14:19:33 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: NetBSD 6 adds libexecinfo but it only works on amd64.
+ http://www.mail-archive.com/source-changes-full@netbsd.org/msg38729.html
+
+Sun Jun 10 12:43:23 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_f_exec): call rb_exec_async_signal_safe except on
+ Mac OS X. cf. the comment in before_exec_non_async_signal_safe.
+
+Sun Jun 10 12:15:18 2012 Tanaka Akira <akr@fsij.org>
+
+ * io.c (popen_exec): don't call rb_thread_atfork_before_exec. use
+ rb_exec_async_signal_safe instead of rb_exec_err.
+ (pipe_open): use rb_fork_async_signal_safe instead of rb_fork_err.
+
+Sun Jun 10 11:44:57 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_internal): call after_fork only unless
+ chfunc_is_async_signal_safe.
+
+Sun Jun 10 11:33:01 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_ec.c
+ test/openssl/test_pkey_ec.rb: Add support for EC_POINT_mul.
+ Patch provided by Sambasiva Suda. Thanks!
+ [ruby-core:44408][ruby-trunk - Feature #6310]
+
+Sun Jun 10 10:48:15 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * lib/openssl/ssl.rb: Use a simple random number to generate the
+ session id. MD5, as was used before, causes problems when
+ using a FIPS version of OpenSSL. Issue was found by Jared
+ Jennings, thank you!
+ [ruby-trunk - Bug #6137]
+
+Sun Jun 10 10:27:34 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: Add note about the new private key export behavior.
+
+Sun Jun 10 10:24:51 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_async_signal_safe): exported.
+
+ * ext/pty/extconf.rb: modify $INCFLAGS to include internal.h
+
+ * ext/pty/pty.c: include internal.h.
+ (chfunc): don't call rb_thread_atfork_before_exec. use
+ rb_exec_async_signal_safe instead of rb_f_exec.
+ (establishShell): set up earg. use rb_fork_async_signal_safe
+ instead of rb_fork_err.
+
+ * internal.h (rb_exec_async_signal_safe): declared.
+ (rb_fork_async_signal_safe): declared.
+
+Sun Jun 10 10:21:37 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl.c
+ ext/openssl/ossl_pkey_rsa.c
+ ext/openssl/ossl_pkey_dsa.c
+ ext/openssl/ossl_pkey_ec.c: Forbid export passwords that are less
+ than four characters long, as OpenSSL itself does not allow this.
+ Issue found by Eric Hodel.
+ * ext/openssl/ossl_pkey_ec.c: Add export as an alias of to_pem,
+ following the PKey interface contract.
+ * test/openssl/test_pkey_dsa.rb
+ test/openssl/test_pkey_rsa.rb
+ test/openssl/test_pkey_ec.rb: Add tests that assert correct
+ behaviour when dealing with passwords that are less than four
+ characters long.
+ [ruby-core: 42281][ruby-trunk - Bug #5951]
+
+Sun Jun 10 10:14:26 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_f_exec): use rb_exec_arg_prepare.
+
+Sun Jun 10 06:43:51 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: split after_exec into async-signal-safe part and rest.
+ (after_exec_async_signal_safe): extracted from after_exec.
+ (after_exec_non_async_signal_safe): ditto.
+ (after_exec): call them.
+ (rb_exec_async_signal_safe): call after_exec_async_signal_safe.
+ (rb_exec_err): call after_exec_non_async_signal_safe instead of
+ after_exec.
+
+Sun Jun 10 06:21:10 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: document new features of Ruby OpenSSL.
+
+Sun Jun 10 03:09:41 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl.c: Fix error in example. Patch by David Albert.
+
+ Add/extend existing documentation. Examples now also cover RSA
+ signatures and PBKDF2.
+ [ruby-core: 45154][ruby-trunk - Bug #6475]
+
+
+Sun Jun 10 01:41:45 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Introduce SSLContext#renegotiation_cb and
+ remove SSLContext#disable_client_renegotiation and related
+ functionality introduced in r35797. The new callback approach
+ gives clients maximum flexibility to decide on their own what to
+ do on renegotiation attempts.
+ Add documentation for SSL module and SSLError.
+ * test/openssl/test_ssl.rb: Add a test for
+ SSLContext#renegotiation_cb.
+
+Sun Jun 10 01:37:18 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_internal): initialize exc.
+
+Sun Jun 10 00:19:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: don't use non async-signal-safe functions in a child
+ process before exec, for invoking a command.
+ (rb_exec_atfork): call rb_exec_async_signal_safe only.
+ (retry_fork): take chfunc_is_async_signal_safe argument. call
+ before_fork and after_fork only unless chfunc_is_async_signal_safe.
+ (send_child_error): take chfunc_is_async_signal_safe argument.
+ send an exception only unless chfunc_is_async_signal_safe.
+ (recv_child_error): take chfunc_is_async_signal_safe argument.
+ receive an exception only unless chfunc_is_async_signal_safe.
+ (rb_fork_internal): renamed from rb_fork_err and take
+ chfunc_is_async_signal_safe argument.
+ use rb_protect only unless chfunc_is_async_signal_safe.
+ (rb_fork_err): call rb_fork_internal with false as
+ chfunc_is_async_signal_safe.
+ (rb_fork_async_signal_safe): call rb_fork_internal with true as
+ chfunc_is_async_signal_safe.
+ (rb_spawn_process): call rb_fork_async_signal_safe instead of
+ rb_fork_err.
+
+Sat Jun 9 23:57:03 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_err): rewrite a complex "if" statement.
+
+Sat Jun 9 23:44:29 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (before_exec_async_signal_safe): extracted from
+ before_exec.
+ (before_exec_non_async_signal_safe): ditto.
+ (before_exec): call before_exec_async_signal_safe and
+ before_exec_non_async_signal_safe.
+ (rb_exec_async_signal_safe): call before_exec_async_signal_safe.
+ (rb_exec_err): call before_exec_non_async_signal_safe instead of
+ before_exec.
+
+Sat Jun 9 23:36:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_load, insn_operand_intern, rb_iseq_disasm)
+ (rb_iseq_parameters): use rb_id2str() instead of rb_id2name() to
+ keep encoding.
+
+ * string.c (rb_str_symname_p): new function that checks if the string
+ is valid as a symbol name. split from sym_inspect().
+
+Sat Jun 9 22:27:05 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (retry_fork): rewrite a complex "for" statement by
+ simple statements.
+
+Sat Jun 9 21:50:04 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (retry_fork): extracted from rb_fork_err.
+ (send_child_error): ditto.
+ (recv_child_error): ditto.
+
+Sat Jun 9 17:21:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_load): type is a symbol, and invalid as ID in common.
+
+Sat Jun 9 10:57:14 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_async_signal_safe): extracted from rb_exec_err.
+
+Sat Jun 9 09:31:07 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: simplified because close_others option is always
+ enabled by default.
+ (rb_f_exec): don't need to set the option.
+ (rb_exec_arg_prepare): don't need to set the option. don't need
+ default_close_others argument.
+ (rb_spawn_internal): don't need to give default_close_others
+ argument for rb_exec_arg_prepare. don't need default_close_others
+ argument.
+ (rb_spawn_err): don't need to give default_close_others
+ argument for rb_spawn_internal.
+ (rb_spawn): don't need to give default_close_others
+ argument for rb_spawn_internal.
+ (rb_f_system): don't need to give default_close_others argument for
+ rb_spawn_internal.
+ (rb_f_spawn): don't need to give default_close_others argument for
+ rb_exec_arg_prepare.
+
+Sat Jun 9 09:00:58 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_proc_exec): call before_exec() here addition to
+ rb_exec_err.
+
+Sat Jun 9 08:30:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): use stack info if possible.
+
+Sat Jun 9 08:21:32 2012 Eric Hodel <drbrain@segment7.net>
+
+ * README.EXT (prepare extconf.rb): Added note to see MakeMakefile for
+ documentation of extconf.rb functions. Patch by Zachary Scott.
+ [ruby-trunk - Feature #6522]
+ * README.EXT (Appendix C): Removed in favor of MakeMakefile.
+ Patch by Zachary Scott.
+ * lib/mkmf.rb: Merged documentation from README.EXT Appendix C. Patch
+ by Zachary Scott.
+
+Sat Jun 9 08:16:47 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc: Completed wording in the description of the =~ operator.
+ [ruby-trunk - Bug #6529]
+
+Sat Jun 9 08:09:38 2012 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (rb_str_start_with): Removed "p" from start_with? examples
+ to match other String method examples. [ruby-trunk - Bug #6553]
+ * string.c (rb_str_end_with): Updated end_with? to use code markup
+ instead of italic.
+
+Sat Jun 9 07:56:03 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/benchmark.rb: Updated formatting of Benchmark documentation for
+ consistency. [ruby-trunk - Bug #6533]
+
+Sat Jun 9 07:46:26 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/delegate.rb: Added documentation for Delegator#!. Patch by
+ Zachary Scott. [ruby-trunk - Feature #6534]
+
+Sat Jun 9 07:39:50 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http/responses.rb: Add RFC 6585 response codes. Patch by
+ Sangil Jung. [ruby-trunk - Feature #6480]
+ * lib/net/http/response.rb: ditto
+ * lib/net/http.rb: ditto
+ * lib/webrick/httpstatus.rb: ditto
+
+Sat Jun 9 01:24:28 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_err): before_exec() call moved from proc_exec_cmd
+ and proc_exec_sh.
+ (rb_proc_exec): ditto.
+
+Sat Jun 9 01:11:07 2012 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_exec_arg_init): declaration changed to
+ return a value.
+
+ * process.c (rb_exec_arg_init): return a value.
+
+Fri Jun 8 23:44:14 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: don't check the availability of FD_CLOEXEC. It should
+ be available if fork() is available.
+
+ * io.c: ditto.
+
+Fri Jun 8 22:39:32 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_err): revert r35955. The condition needs !chfunc
+ to close ep[0] and ep[1]. The catched exception is re-raised
+ immediately after that if status is not NULL.
+
+Fri Jun 8 19:43:33 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_err): after_exec() call moved from proc_exec_cmd
+ and proc_exec_sh.
+ (rb_proc_exec): ditto.
+
+Fri Jun 8 19:00:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (ARGV_COUNT): unused macro removed.
+ (ARGV_SIZE): ditto.
+ (ALLOC_ARGV): ditto.
+ (ALLOC_ARGV_WITH_STR): ditto.
+
+Fri Jun 8 16:19:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/runner.rb (src_testdir): expand real path so that
+ TestGem#test_self_find_files does not fail by aliased load path when
+ srcdir contains a symbolic link.
+
+ * tool/runruby.rb (srcdir): ditto.
+
+Fri Jun 8 12:04:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork_err): error state in the child process is prior
+ to exceptions in proc_syswait().
+
+ * process.c (rb_fork_err): determine status on errors.
+
+ * ext/pty/pty.c (establishShell): reraise exception if something
+ raised during sleep.
+
+ * ext/pty/pty.c (establishShell): now needs status to protect from
+ exceptions in rb_fork_err().
+
+Thu Jun 7 22:13:05 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_err): Fix the condition to use rb_protect.
+
+Thu Jun 7 20:29:12 2012 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h: rb_exec_arg and related stuff moved back from
+ internal.h
+
+Thu Jun 7 15:53:03 2012 Koichi Sasada <ko1@atdot.net>
+
+ * .gdbinit: add function `trace_machine_instructions' to trace
+ in native machine assemble.
+ See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/MachineInstructionsTraceWithGDB
+ for more details.
+
+Wed Jun 6 21:31:21 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_exec_cmd) renamed from proc_exec_v.
+ (proc_exec_sh): renamed from rb_proc_exec_e.
+ (proc_spawn_cmd_internal): renamed from proc_spawn_v.
+ (proc_spawn_cmd): renamed from proc_spawn_n.
+ (proc_spawn_sh): renamed from proc_spawn.
+
+Wed Jun 6 21:18:47 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (try_with_sh): please take care of the macro defined by
+ you.
+
+Wed Jun 6 20:45:08 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_exec_v): don't call dln_find_exe_r here because it
+ is not async-signal-safe and proc_exec_v is called in a child
+ process.
+ command_abspath field of rb_exec_arg.
+ (rb_exec_fillarg): call dln_find_exe_r and set command_abspath.
+ (rb_exec_err): Give the absolute path of the invoking command for
+ proc_exec_v, instead of the command name.
+
+ * internal.h: add command_abspath field for rb_exec_arg.
+
+Wed Jun 6 20:08:01 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (try_with_sh): take envp argument.
+ (exec_with_sh): ditto. use it for execve.
+ (proc_exec_v): provide envp for try_with_sh.
+
+Wed Jun 6 13:25:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_wrap_io_handle): new API.
+ this API wraps an I/O handle (HANDLE or SOCKET) and returns fd.
+ the second parameter should be combination of O_*, for example,
+ O_RDWR | O_BINARY | O_NOINHERIT.
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_unwrap_io_handle): new
+ API. this API unwraps an I/O handle and close the fd (not closes
+ the handle itself).
+
+ [Feature #4906] [ruby-core:37227]
+
+Wed Jun 6 13:18:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_close): of course, console handle is not socket.
+
+Wed Jun 6 12:37:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_run_exec_options_err): allocate a temporary buffer for
+ run_exec_dup2() for restoring fds on non-fork environments.
+
+Wed Jun 6 09:45:21 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/dl/test_c_{struct_entry,union_entity}.rb: sorry, typos.
+
+Wed Jun 6 05:27:54 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): check use_shell field before accessing
+ a union field.
+
+Wed Jun 6 04:58:44 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_spawn_process): prog variable is not used for Unix.
+
+Wed Jun 6 00:20:37 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_exec_arg_init): change return type to void.
+
+ * process.c (rb_exec_arg_init): don't return a value.
+ (rb_exec_arg_prepare): ditto.
+ (rb_spawn_process): don't take the prog argument. extract the
+ information from earg.
+ (rb_spawn_internal): follow rb_spawn_process change.
+ (rb_f_spawn): ditto.
+
+ * io.c (pipe_open): don't take the prog argument. extract the
+ information from eargp.
+ (pipe_open_v): follow pipe_open change.
+ (pipe_open_s): ditto.
+
+Tue Jun 5 23:51:33 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_exec_arg): use union to represent command invocation
+ with/without shell.
+
+ * process.c: follow the rb_exec_arg change.
+
+ * io.c (pipe_open): ditto.
+
+Tue Jun 5 22:28:46 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h: rb_exec_arg and related stuff moved from intern.h
+
+ * include/ruby/intern.h (rb_proc_exec_n): removed.
+
+Tue Jun 5 21:57:22 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_arg_fixup): allocate a temporary buffer for
+ run_exec_dup2 here because it should be async-signal-safe.
+ (run_exec_dup2): use the temporary buffer.
+ (run_exec_dup2_tmpbuf_size): new function.
+
+ * include/ruby/intern.h (rb_exec_arg): add dup2_tmpbuf field.
+
+Tue Jun 5 20:13:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_obj_init_copy): should check if trusted too.
+
+Tue Jun 5 19:59:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (strtok): declaration removed because it is not used.
+
+Tue Jun 5 19:33:51 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_spawn): don't detect simple command line here
+ because rb_exec_fillarg already did.
+
+Tue Jun 5 19:21:10 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): bail out a loop eagerly.
+
+Tue Jun 5 19:15:14 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: add comments about async-signal-safe.
+
+ * io.c: ditto.
+
+Tue Jun 5 09:25:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * io.c: Edited documentation for IO and File open and new and
+ Kernel#open for consistency and clarity.
+
+Mon Jun 4 21:53:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_sysinit): let the system not display the
+ critical-error-handler message box and the Windows Error Reporting
+ dialog. [ruby-core:45389] [Bug #6535]
+
+Mon Jun 4 19:36:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): allocate one more element before
+ beginning in argv_str for try_with_sh.
+
+ * internal.h (ARGVSTR2ARGC): adjust for the above change.
+ (ARGVSTR2ARGV): ditto.
+
+Mon Jun 4 19:17:06 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (ARGVSTR2ARGC): defined.
+ (ARGVSTR2ARGV): defined.
+
+ * process.c (proc_exec_v): use ARGVSTR2ARGV.
+ (rb_spawn_process): use ARGVSTR2ARGC and ARGVSTR2ARGV.
+
+ * io.c (pipe_open): use ARGVSTR2ARGV.
+
+Mon Jun 4 16:13:00 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.h: remove magical code "lfp[0] & 0x02".
+ Current VM doesn't use this bit.
+
+ * vm_core.h (RUBY_VM_GET_BLOCK_PTR): added.
+
+ * eval.c (rb_block_given_p): use RUBY_VM_GET_BLOCK_PTR().
+
+ * vm_eval.c (rb_f_block_given_p): ditto.
+
+Mon Jun 4 15:39:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (constat_apply): apply VT100 functions.
+ [ruby-core:44958] [Feature #6418]
+
+ * win32/win32.c (constat_parse): parse some VT100 escape sequence.
+
+Mon Jun 4 14:06:12 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_exec_err): should preserve errno.
+
+Mon Jun 4 13:10:11 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/dl/test_c_{struct_entry,union_entity}.rb: broken require.
+
+Mon Jun 4 12:01:21 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_backtrace.rb: fix test.
+ Windows path includes `:' character.
+
+Mon Jun 4 11:42:39 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (rb_location_t): fix type and field name.
+ (1) rename rb_location_t to rb_iseq_location_t.
+ (2) rename field names of rb_iseq_location_t to adjust
+ RubyVM::Backtrace::Location methods.
+ (2-1) filename -> path
+ (2-2) filepath -> absolute_path
+ (2-3) basename -> base_label
+ (2-4) name -> label
+ (3) rename filed name rb_iseq_location_t#line_no to
+ rb_iseq_location_t#first_lineno to clear purpose of this field.
+ (4) The field names rb_binding_t#(filename|line_no) are also renamed
+ to rb_binding_t#(path|first_lineno).
+
+ * compile.c: apply above changes.
+
+ * iseq.c: ditto.
+
+ * proc.c: ditto.
+
+ * vm*.c: ditto.
+
+Mon Jun 4 11:40:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): also load TYPE_USRMARSHAL, TYPE_DATA using
+ compatible loader.
+
+Mon Jun 4 11:33:42 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_run_exec_options_err): restore save_env() call for
+ non-fork environments.
+
+ * process.c (rb_exec_err): restore environments after the failure of
+ exec to fix [ruby-core:44093] [Bug #6249] on non-fork environments
+
+Mon Jun 4 10:42:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): follow up changes in r35889.
+
+ * process.c (proc_spawn_n): now uses char ** instead of VALUE *.
+
+ * process.c (rb_spawn_process): prog is now VALUE of String, not char *.
+
+Mon Jun 4 06:12:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): remove old warning for _alloc.
+
+Mon Jun 4 04:24:06 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * marshal.c: experimental test aborted.
+ * complex.c: ditto.
+ * rational.c: ditto.
+ * include/ruby/intern.h: ditto.
+
+Mon Jun 4 00:45:18 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_spawn_process): fix for Windows. not tested.
+
+Mon Jun 4 00:11:51 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_proc_exec_e): don't use ISSPACE(). \f, \r and \v
+ are not word separator in Bourne shell.
+
+Sun Jun 3 23:47:30 2012 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_exec_arg): remove argc and argv fields.
+ add use_shell, argv_str and argv_buf fields.
+
+ * process.c (rb_proc_exec_e): don't split shell command line arguments
+ here to avoid memory allocation in a child process.
+ (rb_exec_fillarg): split shell command line arguments here.
+ (proc_exec_v): takes argv_str argument instead of argv.
+ (rb_proc_exec_ne): removed.
+ (rb_proc_exec_n): removed.
+ (rb_run_exec_options_err): don't initialize the removed fields.
+ (rb_exec_err): don't initialize the removed fields.
+ call proc_exec_v directly instead of rb_proc_exec_ne.
+ (rb_spawn_process): use use_shell field.
+
+Sun Jun 3 21:53:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * GPL: update text of GPLv2. [ruby-core:44488] [Bug #6328]
+ http://www.gnu.org/licenses/gpl-2.0.txt
+
+Sun Jun 3 21:22:52 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_getargs): remove rb_exec_arg argument.
+
+Sun Jun 3 21:14:26 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * marshal.c: calls directly rb_{Complex,Rational}_marshal_load().
+ But now disabled. [experimental]
+ * complex.c: followed the above.
+ * rational.c: ditto.
+ * include/ruby/intern.h: ditto.
+
+Sun Jun 3 21:18:17 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_check_argv): use rb_str_new_frozen instead of
+ rb_str_new4.
+
+Sun Jun 3 20:10:52 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_proc_exec_e): extended version of rb_proc_exec() to
+ call execle().
+ (rb_proc_exec): use rb_proc_exec_e().
+ (rb_exec_err): use rb_proc_exec_e().
+
+Sun Jun 3 19:47:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (vm_living_thread_num): suppress a warning.
+
+Sun Jun 3 17:23:52 2012 Tanaka Akira <akr@fsij.org>
+
+ * use execve() to preserve environment variables when exec method is
+ failed. [ruby-core:44093] [ruby-trunk - Bug #6249]
+
+ * include/ruby/intern.h (rb_exec_arg): add envp_str and envp_buf field
+ to store envp of execve().
+
+ * process.c (proc_exec_v): takes envp_str as an argument and use it
+ for execve().
+ (rb_proc_exec_ne): extended version of rb_proc_exec_n().
+ (rb_proc_exec_n): use rb_proc_exec_ne().
+ (rb_proc_exec): follow proc_exec_v() change.
+ (fill_envp_buf_i): new function.
+ (rb_exec_arg_fixup): set up envp_str and envp_buf.
+ (save_env_i): removed.
+ (save_env): removed.
+ (rb_run_exec_options_err): don't modify environment variables.
+ (rb_exec_err): use rb_proc_exec_ne().
+
+Sun Jun 3 16:33:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c: revert r35879 "now marshal_{load|dump} are external."
+
+ * complex.c (nucomp_marshal__{dump,load}): should use rb_marshal_{dump,load}.
+
+ * rational.c (nurat_marshal__{dump,load}): ditto.
+
+Sun Jun 3 14:13:58 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: checks whether the object is frozen or not.
+
+Sun Jun 3 14:00:51 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: wrote Complex#_dump and Complex::load. But now
+ disabled (due to compatibility) [experimental].
+
+ * rational.c: wrote Rational#_dump and Rational::load. ditto.
+
+Sun Jun 3 10:23:32 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_marshal_load): [ruby-core:45394]
+ * rational.c (nurat_marshal_load): ditto.
+
+Sun Jun 3 03:15:46 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (onig_number_of_names): suppress a warning.
+
+Sun Jun 3 01:36:52 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: change names.
+ (1) Class name: RubyVM::FrameInfo -> RubyVM::Backtrace::Location.
+ (2) Method name: RubyVM::FrameInfo.caller ->
+ Kernel.caller_locations.
+ (3) Instance methods of
+ RubyVM::FrameInfo (RubyVM::Backtrace::Location)
+ (3-1) name -> label
+ (3-2) basename -> base_label (basename is confusing with
+ File.basename)
+ (3-3) line_no -> lineno (We have already similar name
+ File#lineno, commented by kou [ruby-dev:45686]).
+ (3-4) filename -> path.
+ (3-5) filepath -> absolute_path.
+ (3-5) iseq -> removed (we will make other APIs to access iseq
+ and other information of frame for debugging).
+
+ * test/ruby/test_backtrace.rb: apply above changes.
+ And apply comment from kou [ruby-dev:45686].
+
+Sun Jun 3 00:49:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix to build vm_backtrace.c only itself (vm_backtrace.c
+ is no longer included from vm.c). I hope this separation reduce
+ compile time of vm.c.
+
+ * internal.h: ditto.
+
+ * vm.c, vm_core.h, vm_dump.c, vm_eval.c: ditto.
+
+ * vm_eval.c: some functions (callee, etc) moved to vm_backtrace.c.
+
+Sun Jun 3 00:20:53 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: added. Separate backtrace related functions to
+ this file.
+
+ * vm.c, common.mk: ditto.
+
+Sat Jun 2 18:09:02 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb: Inhibit zero-filled octets in an IPv4 address in
+ all platforms. [ruby-dev:45671]
+
+ * lib/ipaddr.rb: Allow the x:x:x:x:x:x:d.d.d.d form not limited to
+ IPv4 mapped/compatible addresses. This change also makes it
+ possible for the parser to understand IPv4 mapped and compatible
+ IPv6 addresses in non-compressed form.
+
+ * lib/ipaddr.rb: Stop exposing IPSocket.valid*? methods which were
+ only usable on non-IPv6-ready platforms.
+
+Sat Jun 2 16:59:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): don't reset coderange as unknown.
+ the condition 'ptr_a8 && str_cr != ENC_CODERANGE_7BIT' means not
+ unknown, str is also ASCII-8BIT because str_encindex == ptr_encindex,
+ and nont (str_cr == ENC_CODERANGE_UNKNOWN) and
+ str_cr != ENC_CODERANGE_7BIT means str_cr is valid because ASCII-8BIT
+ can't be broken. [ruby-dev:45688] [Bug #6509]
+
+Sat Jun 2 07:04:48 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc (Performance): Replaced incorrect example of reducing
+ backtracking through anchoring with reduced backtracking through a
+ range. [ruby-trunk - Bug #6525]
+
+Sat Jun 2 06:34:15 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc (Performance): Removed useless sample output from final
+ performance example and switched from #match to #=~ for consistency.
+ [ruby-trunk - Bug #6524]
+
+Fri Jun 1 09:30:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (class_or_module_required): extract check for class or
+ module.
+
+Fri Jun 1 08:50:47 2012 Eric Hodel <drbrain@segment7.net>
+
+ * array.c: Updated Array documentation formatting. Patch by Zachary
+ Scott. [ruby-trunk - Feature #6517]
+
+Fri Jun 1 06:57:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl/lib/dl/struct.rb (DL::CStructEntity#set_ctypes): Refactored
+ #set_ctypes using newer ruby features to simplify its implementation.
+ * test/dl/test_c_struct_entry.rb (class DL): Test to verify
+ refactoring.
+
+Fri Jun 1 06:40:25 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (Init_Object): Restored Kernel documentation based on
+ Pickaxe book documentation. Patch by Zachary Scott.
+ [ruby-trunk - Feature #6521]
+
+Fri Jun 1 06:29:42 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (rb_equal): Let Object be a link in #=== documentation.
+ Patch by Zachary Scott. [ruby-trunk - Feature #6518]
+
+Thu May 31 09:27:06 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl/lib/dl/struct.rb (DL::CStructEntity::size): Refactored ::size
+ to remove unused variables and simplify using newer ruby features.
+ * test/dl/test_c_struct_entry.rb: Test to validate refactoring
+
+Thu May 31 08:40:34 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl/lib/dl/struct.rb (DL::CUnionEntity#set_ctypes): Refactored
+ #set_types to reuse DL::CUnionEntity::size
+ * test/dl/test_c_union_entity.rb: Added test
+
+Thu May 31 08:20:14 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl/lib/dl/struct.rb (DL::CUnionEntity::size): Fixed ::size to
+ return the size of the union.
+ * test/dl/test_c_union_entity.rb: Test for DL::CUnionEntity::size
+
+Thu May 31 07:45:43 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl: Added documentation. Patch by Vincent Batts.
+ [ruby-trunk - Bug #6496]
+
+Wed May 30 16:30:00 2012 Kenta Murata <mrkn@cookpad.com>
+
+ * ext/bigdecimal/lib/bigdecimal/jacobian.rb,
+ ext/bigdecimal/lib/bigdecimal/newton.rb:
+ fix documentation comments.
+ Patch by alperakgun from github.com/shyouhei/ruby/pull/8
+
+Wed May 30 16:20:00 2012 Kenta Murata <mrkn@cookpad.com>
+
+ * ext/bigdecimal/lib/bigdecimal/jacobian.rb (Jacobian#dfdxi):
+ fix jacobian to get stuck in an infinite loop when a solution is not
+ found due to forget to increment nRetry counter.
+ Patch by alperakgun from github.com/shyouhei/ruby/pull/8
+
+Wed May 30 10:58:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (utc_offset_arg): utc offset can be precision in seconds.
+ e.g. old Europe/Lisbon (c.f. [ruby-dev:40066])
+
+Wed May 30 06:20:29 2012 Eric Hodel <drbrain@segment7.net>
+
+ * error.c (exc_set_backtrace): Updated documentation to indicate
+ set_backtrace allows a string as well as an array of strings.
+ [ruby-trunk - Bug #6501]
+
+Tue May 29 17:28:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime_with_timespec): support GNU extension triple
+ colons modifier. [EXPERIMENTAL]
+
+ * strftime.c (rb_strftime_with_timespec): check conversion with locale
+ modifier.
+
+ * strftime.c (rb_strftime_with_timespec): colons are valid only for
+ 'z' and must come just before it.
+
+Mon May 28 16:56:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_prepare_run): StatusLineOutput
+ needs job_status to be :replace.
+
+Mon May 28 13:35:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (do-install-*): fix dependencies. based on the patch by
+ nagachika at [ruby-dev:45683]. [Bug #6506]
+
+Mon May 28 12:03:04 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (obj_free): doesn't free a method table if it doesn't
+ exist. [ruby-dev:44436]
+ * test/ruby/test_gc.rb (class TestGc): added the test case for
+ this issue.
+
+Sun May 27 23:37:48 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm1_lvar_init.rb: added.
+ This benchmark measures a initialize time of non-used variable.
+
+ * benchmark/bm_vm1_lvar_set.rb: added.
+ This benchmark measures a local variables initialization time.
+
+ * benchmark/bm_vm2_bigarray.rb: added.
+ This benchmark mesures a big array literal creation time.
+
+ * benchmark/bm_vm2_bighash.rb: added.
+ This benchmark mesures a big hash literal creation time.
+
+ * benchmark/bm*: change notation "i=0" to "i = 0".
+
+Sun May 27 13:33:26 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: fix to continue benchmarks when
+ an error is occurred.
+
+Sun May 27 11:27:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_prepare_run): fix operator
+ precedence, so that platform and TERM should be counted.
+
+Sun May 27 10:02:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: allows %Ok and %Ol.
+
+Sun May 27 09:29:20 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: modified doc.
+
+Sat May 26 19:04:34 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: added description.
+
+Sat May 26 18:14:57 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: reduced the code.
+
+Sat May 26 18:08:59 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * time.c: modified doc.
+ * ext/date/date_core.c: ditto.
+
+Sat May 26 17:05:45 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (backtrace_*): change type of lev and n from size_t to int.
+ Also set type of rb_backtrace_t#backtrace_size to int.
+ A patch from nobu.
+
+ * vm_eval.c: ditto.
+
+Sat May 26 16:26:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (realpath_rec): UNC prefix does not end with path separator,
+ so new separator is needed after it.
+
+Sat May 26 15:29:22 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_backtrace.rb (test_caller_lev):
+ decrease recursion size.
+
+Sat May 26 13:50:48 2012 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: add Kernel#caller's second argument.
+
+Sat May 26 13:40:29 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (RubyVM::FrameInfo): add a class to access each frame
+ information. You don't need to parse strings from caller().
+ FrameInfo has the following methods:
+ FrameInfo#name: method name, class name, etc with decorations.
+ FrameInfo#basename: name without decorations.
+ FrameInfo#line_no: line number.
+ FrameInfo#filename: file name.
+ FrameInfo#filepath: full filepath.
+ FrameInfo#iseq: iseq if it is iseq frame (defined by ruby script)
+ FrameInfo#to_s: return caller() method style string.
+ RubyVM::FrameInfo.caller(n, lev) returns array of FrameInfo objects.
+ The name "RubyVM::FrameInfo.caller" is long and ambiguous (it is
+ confusing with Kernel::caller() method), we need to change the name
+ before Ruby 2.0 release. Good names or comments are welcome.
+
+ * test/ruby/test_backtrace.rb: add a test for above change.
+
+Sat May 26 12:18:09 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (frame_info_to_str): add `break'.
+
+ * vm.c (backtrace_object): remove lev and n parameter.
+ backtrace_object always returns all of backtrace information.
+
+ * vm.c (rb_backtrace_to_str_ary): fix to use backtrace_object().
+ This change improve performance of caller(lev, n).
+
+ * benchmark/bm_vm3_backtrace.rb: added to check above improvement.
+ FYI: measurement on my laptop, 1.9.3p229 needs 5.125 sec,
+ and current trunk only needs 0.299sec.
+
+Sat May 26 11:05:09 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (rb_frame_info_t): keep previous ISEQ frame info for CFUNC
+ frame info. And fix to cache a calculated line_no of ISEQ frame
+ info.
+
+Sat May 26 09:54:53 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Allow disabling client-side renegotiation.
+ * test/openssl/test_ssl.rb: Simple tests for this.
+
+ Client-side renegotiation is still considered problematic, even
+ when used in the context of secure renegotiation (RI, RFC 5746).
+ The changes allow users to either completely disable client
+ renegotiation on the server, or to specify a maximum number of
+ handshakes allowed in total. The number of total handshakes is
+ counted in a callback set as SSL_set_info_callback. If the
+ maximum number of handshakes is exceeded an error will be raised
+ We do not support renegotiation in the OpenSSL extension, therefore
+ this feature can only be tested externally.
+ The feature is opt-in, the default setting will be to allow
+ unlimited client renegotiation, as was the case before.
+
+Fri May 25 23:38:58 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ssl.rb: Clarify the intention of errors to be
+ expected. Two errors are possible when connection is refused due
+ to a protocol version that was explicitly disallowed,
+ OpenSSL::SSL::SSLError or Errno::ECONNRESET, depending on the
+ OpenSSL version in use.
+
+Fri May 25 22:19:40 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Revert r35583
+ * test/openssl/test_ssl.rb: Handle ECONNRESET in code instead to avoid
+ the test failing in Ruby CI [1]
+
+ [1] http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20120507T190102Z.log.html.gz#test-all
+
+Fri May 25 19:51:36 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (rb_f_caller): caller() method accepts second optional
+ argument `n' which specify how many frames should return.
+ For example, `caller(0, 1)' returns only one frame information
+ which calls caller() method. If there are less than n frame
+ information, then all frame information are returned. If n is 0,
+ then always return [].
+ This fix is part of [ruby-dev:42345] [Ruby 1.9-Feature#3917].
+ However, performance and features are not enough.
+ RDoc is also not available.
+
+ * test/ruby/test_backtrace.rb: add a test for above.
+
+Fri May 25 17:05:07 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (oldbt_init, vm_backtrace_str_ary): arg->data should
+ be initialized before calling `backtrace_each()'.
+
+Fri May 25 16:11:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * trunk/ext/-test-/printf/printf.c: change function names because of
+ conflict with msvcrt. fixed build error of mswin.
+
+Fri May 25 10:52:52 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: refactoring backtrace related functions.
+ (1) unify similar functions (rb_backtrace_each() and
+ backtrace_object()). backtrace_each() is a unified function.
+ variation:
+ a) backtrace_object(): create backtrace object.
+ b) vm_backtrace_str_ary(): create bt as an array of string.
+ c) vm_backtrace_print(): print backtrace to specified file.
+ d) rb_backtrace_print_as_bugreport(): print backtrace on
+ bugreport style.
+ (2) remove rb_backtrace_each(). Use backtrace_each() instead.
+ (3) change the type of lev parameter to size_t.
+ a) lev == 0 means current frame (exception, etc use it).
+ b) lev == 1 means upper frame (caller(0) use it).
+
+ * vm_core.h, vm_dump.c, vm_eval.c: ditto.
+
+ * vm.c (backtrace_object(), vm_backtrace_str_ary()): fix to return a
+ correct size of caller(lev) array.
+ Let n be a "caller(0).size" then ln as caller(lev).size should be
+ (n - lev). However, the previous implementation returns a wrong
+ size array (ln > n - lev). [ruby-dev:45673]
+
+ * test/ruby/test_backtrace.rb: add tests for backtrace.
+
+Fri May 25 08:51:39 2012 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c (enum_count): Enumerable#count no longer uses #size when
+ counting elements. Patch by Nobuhiro IMAI. [ruby-trunk - Bug #6473]
+
+Fri May 25 01:15:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (ruby__sfvextra): [EXPERIMENTAL] use inspect instead of
+ to_s if plus flag is given.
+
+ * vsnprintf.c (BSD_vfprintf): pass sign flag.
+
+Fri May 25 00:37:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rubygems/test_gem_indexer.rb (setup, teardown): save @tempdir
+ to remove it properly. [Bug #5348]
+
+Thu May 24 23:36:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): [EXPERIMENTAL] object representation in
+ rb_enc_vsprintf(). [Feature #5896]
+
+Thu May 24 15:33:01 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c (rb_method_defined_by): removed.
+ nobu pointed out that rb_method_basic_definition_p() is enough
+ for last commit.
+
+ * error.c, eval_error.c: change for above.
+
+Thu May 24 14:30:13 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: add RubyVM::Backtrace object (btobj).
+ Backtrace information contains an array consists of location
+ information for each frames by string.
+ RubyVM::Backtrace object is lightweight backtrace information,
+ which contains complete information to generate traditional style
+ backtrace (an array of strings) with faster generation.
+ If someone accesses to backtrace information via
+ Exception#backtrace, then convert a RubyVM::Backtrace object to
+ traditional style backtrace.
+ This change causes incompatibility on marshal dumped binary
+ of Exception. If you have any trouble on it, please tell us
+ before Ruby 2.0 release.
+ Note that RubyVM::Backtrace object should not expose Ruby level.
+
+ * error.c, eval.c, vm_eval.c: ditto.
+
+ * internal.h: ditto.
+
+ * eval_error.c: fix to skip "set_backtrace" method invocation in
+ creating an exception object if it call a normal set_backtrace
+ method (defined by core).
+
+ * test/ruby/test_settracefunc.rb: fix for above change.
+
+ * vm_method.c (rb_method_defined_by): added. This function
+ checks that the given object responds with the given method
+ by the given cfunc.
+
+ * benchmark/bm_vm2_raise1.rb, benchmark/bm_vm2_raise2.rb:
+ add to measure exception creation speed. raise1 create
+ exception objects from shallow stack frame. raise2 create
+ exception objects from deep stack frame.
+
+Thu May 24 12:07:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_strip_bom): check EOF. [Bug #6487][ruby-core:45203]
+
+Wed May 23 22:06:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http/header.rb (Net::HTTPHeader#range): fix broken parser of
+ HTTP Range request. Old one can't parse invalid specs and multiple
+ specs correctly.
+
+Wed May 23 10:18:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (finish_overlapped_socket, overlapped_socket_io):
+ replace ECONNABORTED to EPIPE in send, sendto and sendmsg to improve
+ BSD socket compatibility. this change removes a failure on the test
+ of net/ftp.
+
+Wed May 23 05:35:58 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Broke up Net::HTTP into individual files.
+ [ruby-trunk - Feature #6435]
+ * lib/net/http/backward.rb: ditto.
+ * lib/net/http/response.rb: ditto.
+ * lib/net/http/exceptions.rb: ditto.
+ * lib/net/http/responses.rb: ditto.
+ * lib/net/http/generic_request.rb: ditto.
+ * lib/net/http/header.rb: ditto.
+ * lib/net/http/request.rb: ditto.
+ * lib/net/http/proxy_delta.rb: ditto.
+ * lib/net/http/requests.rb: ditto.
+
+Wed May 23 05:15:11 2012 Eric Hodel <drbrain@segment7.net>
+
+ * class.c (rb_mod_init_copy): Clear the cached inspect string of a
+ dup'd anonymous module or class. [ruby-trunk - Bug #6454]
+ * test/ruby/test_module.rb (class TestModule): ditto
+
+Tue May 22 16:49:15 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: add a data type rb_location_t to store iseq location
+ information.
+ rb_location_t#filename, filepath, name and line_no was moved from
+ rb_iseq_t. rb_location_t#basename is a new field which is
+ similar to `name' field without any decoration.
+ `name' field contains some decoration such as `block in foo'.
+ `basename' only contains `foo'.
+ rb_iseq_t contains memory object of rb_location_t.
+
+ * iseq.c: setup rb_location_t for each rb_iseq_t memory objects.
+
+ * compile.c, proc.c, vm.c, vm_dump.c, vm_eval.c, vm_insnhelper.c,
+ vm_method.c: support about it.
+
+Tue May 22 00:45:05 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * struct.c (rb_struct_members): Refactoring. As Struct#members had
+ returned an array of String, the old code was needed to convert
+ Symbols to Strings. But it is almost unnecessary because the
+ method now returns an array of Symbols. A patch by Masaki
+ Matsushita <glass.saga at gmail dot com> [Feature #6218]
+ [ruby-dev:45451]
+
+Mon May 21 19:20:25 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#retrbinary): close only if conn is not nil
+ because transfercmd may fail and return nil.
+
+ * lib/net/ftp.rb (Net::FTP#retrlines): ditto.
+
+Mon May 21 15:10:28 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c: Classify constants and macros into several
+ sub-modules. (Syslog::Priority, Syslog::Level, Syslog::Option
+ and Syslog::Macros)
+
+ * ext/syslog/syslog.c (mSyslog_inspect): Use rb_sprintf().
+
+ * ext/syslog/syslog.c (mSyslog_inspect): Make sure self is a
+ module before calling rb_class2name().
+
+Mon May 21 12:44:11 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (install): It seems tcl/tk is skipped in Travis
+ CI. Trying to fix the situation.
+
+Mon May 21 12:11:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (ENCOBJS): add dependencies.
+
+ * enc/make_encmake.rb (target_encodings): extract dependencies.
+
+Mon May 21 11:26:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#transfercmd): rescue shutdown.
+
+Sun May 20 23:00:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): reopen $stdout to NULL, since setting
+ $stdout cannot affect child processes.
+
+Sun May 20 21:36:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/shift_jis.c (code_to_mbclen): return
+ ONIGERR_INVALID_CODE_POINT_VALUE if the code is invalid.
+
+ * string.c (tr_next): increment character until the code
+ is a valid character. [ruby-dev:45652] [Bug #6450]
+
+Sun May 20 12:25:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (LIBRUBY_SO): link EXTSOLIBS too.
+
+ * ext/extmk.rb (mf.macro): use EXTSOLIBS instead of SOLIBS to get rid
+ of discard libraries needed by default. [Bug #6462]
+
+Sat May 19 19:04:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (command_output): ENCOBJS is needed for all linked
+ ruby, if --disable-shared and --with-static-linked-ext.
+
+ * ext/extmk.rb (command_output): dmyext is needed as DLDOBJS if no
+ static linked extensions.
+
+ * Makefile.in, common.mk (PROGRAM): no extension libraries.
+
+ * common.mk (build-ext): pass macros for libruby.so.
+
+ * ext/extmk.rb (command_output): link extension libraries and encoding
+ libraries into libruby.so, not ruby executable.
+
+ * ext/extmk.rb (command_output): fold long macro lines.
+
+ * Makefile.in (LIBEXT): add macro.
+
+ * configure.in (ENCOBJS, EXTOBJS): use LIBEXT, not hardcoded suffix.
+
+ * Makefile.in (LIBRUBY_A): fix typo. re-applying r35242.
+
+Sat May 19 04:46:53 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/openssl/extconf.rb: Use Logging::message instead of message.
+ * ext/zlib/extconf.rb: ditto.
+
+Fri May 18 18:13:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#configuration): keep space at end of
+ OUTFLAG and COUTFLAG. [ruby-dev:45650]
+
+Fri May 18 17:39:42 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): Added error
+ check when failing fcntl(). [Bug #6147] [ruby-dev:45364]
+
+Fri May 18 17:41:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): link archives only, skip script only
+ extension libraries.
+
+Fri May 18 17:25:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c: bump up fiber machine stack size when running on 64bit
+ arch. [Bug #6344] [ruby-dev:45554]
+
+Fri May 18 15:20:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic.build): duplicate args before adding
+ new items. (don't change arguments)
+
+ * lib/uri/generic.rb (URI::Generic.build): use URI::Generic::COMPONENT
+ if this method is called from URI::Generic.
+
+ * lib/uri/generic.rb (URI::Generic.build2): escape only if the item is
+ a String.
+
+ * lib/uri/generic.rb (URI::Generic.build2): use DEFAULT_PARSER because
+ it doesn't have parser method. [Bug #6420]
+
+Fri May 18 15:54:07 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/zlib/extconf.rb: Use an exception instead of bare puts.
+
+Fri May 18 15:53:05 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/psych/extconf.rb: Use an exception instead of bare abort.
+
+Fri May 18 15:51:32 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/fiddle/extconf.rb: Use an exception instead of bare abort.
+
+Fri May 18 15:49:35 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/readline/extconf.rb: Use an exception instead of bare exit.
+
+Fri May 18 15:38:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/ripper/extconf.rb: Use an exception instead of bare
+ Logging.message.
+
+Fri May 18 15:23:06 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/openssl/extconf.rb: Clarify a message when hit Apple
+ OpenSSL issue.
+
+Fri May 18 15:14:32 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/extmk.rb: Show a message when extconf.rb raised an exception.
+ * ext/openssl/extconf.rb: Use exception raising instead of message
+ and/or abort. We want to display error message to console _and_
+ logging into mkmf.log.
+
+Fri May 18 06:14:07 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/syslog/lib/syslog/logger.rb: Added Syslog::Logger which was
+ ported from the SyslogLogger gem. [ruby-trunk - Feature #5096]
+ * NEWS: ditto.
+ * test/syslog/test_syslog_logger.rb: ditto.
+
+Fri May 18 01:28:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (transcode_string): fix encoding index names.
+ Thanks markizko for reporting.
+
+Thu May 17 23:03:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: fix function name to be checked, to initialize
+ rb_thread_cond_t properly.
+
+ * thread_pthread.c (native_cond_initialize, native_cond_destroy):
+ fix macro name.
+
+Thu May 17 12:53:07 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * thread.c, thread_pthread.c: Moved pthread-specific preprocessor
+ hacks to thread_pthread.c
+
+Thu May 17 12:18:47 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * io.c: Fix a mistake on merging the patch in the previous commit.
+
+Thu May 17 11:33:07 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ Imports Ruby's port to NativeClient (a.k.a NaCl).
+ Patch by Google Inc. [ruby-core:45073].
+
+ * configure.in (RUBY_NACL): New M4 func to configure variables for
+ NaCl.
+ (RUBY_NACL_CHECK_PEPPER_TYPES): New M4 func to check the old names
+ of Pepper interface types.
+ (BTESTRUBY): New variable to specify which ruby should be run on
+ "make btest". NaCl can run the built binary by sel_ldr, but it need
+ rbconfig.rb. So this variable is distinguished from $MINIRUBY.
+
+ * thread_pthread.c: Disabled some features on NaCl.
+
+ * io.c: ditto.
+
+ * process.c: ditto.
+
+ * signal.c: ditto.
+
+ * file.c: ditto.
+
+ * missing/flock.c: ditto.
+
+ * nacl/pepper_main.c: An example implementation of Pepper application
+ that embeds Ruby.
+
+ * nacl/example.html: An example of web page that uses the Pepper
+ application.
+
+ * nacl/nacl-config.rb: Detects variants of NaCl SDK.
+
+ * nacl/GNUmakefile.in: Makefile template for NaCl specific build
+ process.
+
+ * nacl/package.rb: script for packaging a NaCl-Ruby embedding
+ application.
+
+ * nacl/reate_nmf.rb: Wrapper script of create_nmf.py
+
+ * dln.c (dln_load): Added a hack to call on NaCl.
+
+ * util.c (ruby_getcwd): Path to the current directory is not available
+ on NaCl.
+
+Thu May 17 10:54:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/extconf.rb: add -l options to $libs not $LDFLAGS,
+ to be passed to EXTLIBS in exts.mk.
+
+ * enc/encinit.c.erb: use %-lines to adjust indent in the generated file.
+
+ * lib/mkmf.rb (MakeMakefile#have_framework): combine -framework option
+ and its argument with an equal sign not to be separated in merge_libs.
+
+ * ext/tk/extconf.rb: ditto.
+
+ * ext/extmk.rb: EXTLDFLAGS also needs to be passed.
+
+Wed May 16 15:44:22 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * configure.in: Fix an unbalanced quote.
+
+Wed May 16 15:43:10 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb (exts.mk): use double quotes instead of single quotes
+ for commandline because it's not recognized as quotes on Windows.
+
+Wed May 16 15:15:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LD): enclose with single quotes but not double quotes
+ not to expand command substitution.
+
+Wed May 16 14:19:51 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ Supports static linking of extensions and encodings again.
+ Fixes --with-static-linked-ext.
+
+ Patch by Google Inc. [ruby-core:45073].
+
+ * Makefile.in (ENCOBJS, EXTOBJS): New variables to specify static
+ linked libraries. Also reintroduces extinit.o, introduces encinit.o
+ introduces encinit.o
+
+ * common.mk: Builds static libraries rather than shared objects if
+ specified.
+
+ * configure.in (LD): new substitution.
+
+ * enc/depend: Supports static linked libraries
+ (libencs, libenc, libtrans): New target.
+
+ * enc/encinit.c.erb: new template to generate the initialization of
+ statically linked encodings.
+
+ * enc/make_encmake.rb (--module): new flag to specify whether static
+ or dynamic.
+
+ * transcode_data.h (TRANS_INIT): New macro to get rid of the name
+ collision of encoding initializers and transcoder initializers.
+
+ * ext/extmk.rb: Fixes the behavior on $extstatic is true.
+
+ * lib/mkmf.rb (clean-static): new target to clean up static linked
+ libraries.
+
+ * ruby.c (process_options): New initializes statically linked
+ encodings here.
+
+Wed May 16 14:30:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c: fixed a merge mistake of r33878, reported by nobu via IRC.
+
+Wed May 16 06:59:41 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: should also be aware of flags on
+ complex specifier.
+
+Wed May 16 05:11:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: fix a bug with string
+ subclass dumping and loading.
+
+ * test/psych/test_array.rb: pertinent tests
+
+ * test/psych/test_string.rb: ditto
+
+Wed May 16 01:31:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: convert omap tagged maps to
+ Psych::Omap objects rather than hashes. [Bug #6425]
+
+ * test/psych/test_omap.rb: pertinent test.
+
+Wed May 16 01:15:45 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: keep a reference to
+ custom coders so that GC does not impact dumped yaml reference ids.
+
+Tue May 15 23:59:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Options#setup_options): add --color option.
+
+ * lib/test/unit.rb (Test::Unit::Runner#_prepare_run): defer color code
+ initialization to regard --color option.
+
+Mon May 14 16:28:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_arglist): should reset lexical states after empty
+ argument list with no parenthesis as well as parenthesized list,
+ so that reserved name method definition work. [ruby-dev:45626]
+ [Bug #6403]
+
+Mon May 14 00:14:24 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * enumerator.c (lazy_take_func, lazy_take): multiple calls of
+ force/to_a method to Enumerator::Lazy#take should return same
+ results. [ruby-dev:45634] [Bug #6428]
+
+ * test/ruby/test_lazy_enumerator.rb (test_take_recycle): add test for
+ above.
+
+Sun May 13 23:38:31 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * test/ruby/test_io.rb (test_flush_in_finalizer1): don't use IO.for_fd
+ to close IO objects. it create IO object with already closed fd, and
+ cause occasional Errno::EBADF in following tests. [ruby-core:45020]
+ [Bug #6228]
+
+Sun May 13 23:32:16 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO): revert r35631. it broke the intent of
+ test_flush_in_finalizer1. [ruby-core:43951] [Bug #6228]
+
+Sun May 13 22:46:36 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/etc/etc.c (passwd_ensure): move endpwent() call from
+ passwd_iterate to close /etc/passwd on exception.
+ (group_ensure): move endgrent() call from group_iterate to close
+ /etc/group on exception.
+
+Sun May 13 18:10:43 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: removed unused code and changed the style.
+
+Sun May 13 17:37:56 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: refactored.
+
+Sun May 13 06:40:12 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/ruby/test_io.rb (class TestIO): Disable GC during IO tests to
+ avoid file descriptors being GC'ed. Suggestion by Tomoyuki Chikanaga
+ [ruby-core:43951][Bug #6228]
+
+Sat May 12 07:00:16 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/sdbm/init.c: Added documentation. Patch by Justin Collins,
+ cleanup by Zachary Scott. [ruby-trunk - #6410]
+
+Sat May 12 06:02:03 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/fileutils.rb (cp_r): Fixed cp_r example. Patch by TJ Koblentz
+ from pull request #114. [ruby-trunk - Bug #6411]
+
+Sat May 12 05:23:06 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (rb_threadptr_execute_interrupts_common):
+ test_signal_requiring of test/ruby/test_signal.rb fail if the sub
+ process is killed on waiting IO in lex_io_gets in rb_load_file in
+ rb_load_internal in require.
+ This is because
+ (1) the process receive the killing signal in
+ rb_thread_io_blocking_region in rb_read_internal in lex_io_gets.
+ (2) set th->errinfo as INT2FIX(TAG_FATAL) at
+ rb_threadptr_execute_interrupts_common.
+ (3) escape rb_load_file in rb_load_internal and jump to EXEC_TAG()
+ without set loaded as TRUE.
+ (4) call first rb_exc_raise(GET_THREAD()->errinfo); because loaded
+ is FALSE as above. this errinfo should be an exception object
+ but this is INT2FIX(TAG_FATAL).
+ Don't call first rb_exc_raise if GET_THREAD()->errinfo is Fixnum.
+
+Fri May 11 14:23:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary): begin/end block should be isolated from outside.
+ [ruby-dev:45631][Bug #6419]
+
+Fri May 11 14:09:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (PUSH): to prevent VALUE from GC,
+ must not cast it to unsigned long, which may be shorter than
+ VALUE, and the result can be mere garbage.
+
+Fri May 11 09:51:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#failed): no unnecessary
+ newlines if no reports to be displayed.
+
+Thu May 10 10:55:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/minitest/test_minitest_mock.rb: Correct requiring path to
+ metametameta.rb.
+
+ * test/minitest/test_minitest_unit.rb: Correct requiring path to
+ metametameta.rb.
+
+Thu May 10 10:18:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lex_state_name): returns name for lex_state_e, for debug
+ use.
+
+Wed May 9 16:36:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#pkg_config): check if libs resulted from
+ pkg-config works actually.
+
+Wed May 9 16:01:38 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (decode_utf7, encode_utf7): refactored by
+ Nobuyoshi Nakada, to use String#encode.
+
+Wed May 9 13:26:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rubygems/test_gem_remote_fetcher.rb: skip OpenSSL dependent
+ tests if not available.
+
+Wed May 9 08:09:38 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 3.0.0 (r7435)
+ * test/minitest/*: ditto
+ * test/rubygems/*: Imported fixes for buggy use of assert_match
+ and deprecated assert_block
+ UNBUNCH YOUR PANTIES. THE TESTS DO NOT RUN CLEAN ON OSX.
+
+Wed May 9 06:28:59 2012 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (rb_reg_equal): Removed incorrect example for Regexp#== with
+ "n" option. [ruby-talk - Bug #6415]
+
+Wed May 9 06:23:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: reverted.
+
+Wed May 9 04:31:26 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/ring.rb (lookup_ring_any): fix Rinda::RingFinger.primary
+ hungs forever. [ruby-talk:395364]
+
+Tue May 8 21:09:00 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * include/ruby/win32.h (FD_SET): change function to macro.
+ To avoid buffer overflow when smaller FD_SETSIZE is used in ext
+ libraries.
+
+ * win32/win32.c (rb_w32_fdset): this function is not used anymore.
+ But we leave this for compatibility.
+
+ * win32/win32.c (rb_w32_select_with_thread): fix SEGV when smaller
+ FD_SETSIZE is used in ext libraries. Dereference of fd_set pointer
+ causes SEGV.
+
+ * test/-ext-/win32/test_fd_setsize.rb(TestFdSetSize): add tests for
+ above.
+ * ext/-test-/win32/fd_setsize/depend: ditto.
+ * ext/-test-/win32/fd_setsize/extconf.rb: ditto.
+ * ext/-test-/win32/fd_setsize/fd_setsize.c: ditto.
+
+ [ruby-core:44588] [Bug #6352]
+
+Tue May 8 20:44:46 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * io.c (io_unread): fix IO#pos with mode 'r' bug on Windows.
+ If the end of reading buffer is CR, io_unread() needs to unread one
+ more byte.
+ [ruby-core:44874] [Bug #6401]
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_pos_with_buffer_end_cr):
+ add a test for above.
+
+Tue May 8 13:38:17 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/date/date_core.c: improving introduction in Date/DateTime
+ documentation. patched by Daniel Kaufman via Github.
+ https://github.com/ruby/ruby/pull/110
+
+Tue May 8 13:36:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (POSTLINK): default to : command to get rid of flag
+ only command, since BSD make does not work with it.
+
+Tue May 8 13:35:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (MiniTest#run_test): remove exact trace and get rid
+ of IndexError, which could caused by modified $@ sometimes.
+
+Tue May 8 11:21:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/minitest/metametameta.rb (MetaMetaMetaTestCase#assert_report):
+ support drive letter on Windows. yes, the original code is metameta.
+
+Tue May 8 08:54:48 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/abbrev.rb: Fixed typo in abbrev pattern documentation. Based on
+ patch by Mark Rushakoff. [ruby-trunk - #6346]
+
+Tue May 8 07:44:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_start_ssl): remove useless rb_sys_fail
+ before ossl_raise. this cause a test failure on Linux.
+ http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20120507T190102Z.log.html.gz
+
+Tue May 8 05:35:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (Init_Object): Added reference to variable.c where
+ public_constant and private_constant documentation lives. [#6381]
+
+Tue May 8 04:47:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#output): prefer local output to
+ get rid of unexpected side effect in test/minitest/metametameta.rb.
+
+ * lib/test/unit.rb (MiniTest#run_test): show the running test in $0.
+
+ * lib/test/unit.rb (Test::Unit::StatusLineOutput): new class to output
+ in status line.
+
+ * test/testunit/test_hideskip.rb (TestHideSkip#test_hideskip):
+ MiniTest#puke now reports Skipped messages only if verbose mode.
+
+ * test/testunit/test_sorting.rb (TestTestUnitSorting#test_sorting):
+ ditto.
+
+ * lib/test/unit.rb (Test::Unit::Runner#puke): modify only result and
+ drop useless reports, not override entirely.
+
+ * bootstraptest/runner.rb (exec_test, show_progress): show rotators
+ and pass/fail counts.
+
+ * sample/test.rb (PROGRESS): refine output.
+
+Tue May 8 02:34:26 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/minitest/unit.rb (assert_match): refix of r35563.
+ r35563 breaks the intention of the original change.
+ https://github.com/seattlerb/minitest/commit/68858105b2eb11c85105ffac5f32b662c59397f3
+ * lib/minitest/unit.rb (refute_match): ditto.
+
+Mon May 7 21:19:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Merge JSON 1.7.1.
+ https://github.com/flori/json/commit/e5b9a9465c1159fae533bca320d950b772bcb4ac
+
+Mon May 7 22:54:22 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: add support for option flags
+ OpenSSL::SSL::OP_NO_TLSv1_1
+ OpenSSL::SSL::OP_NO_TLSv1_2
+ to allow blocking specific TLS versions. Thanks to Justin Guyett for
+ pointing this out to me.
+ * test/openssl/test_ssl.rb: add tests to assert correct behavior when
+ blocking certain versions of TLS/SSL both on server and client side.
+ Also refactored tests to reduce boilerplate code a little.
+ * test/openssl/utils.rb: rescue Errno::ECONNRESET for tests where
+ client rejects the connection because a forbidden protocol version
+ was used.
+
+Mon May 7 20:14:15 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (random_bytes): call to_int method for the
+ argument at first.
+
+Mon May 7 17:54:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/minitest/unit.rb (assert_match): replace matcher only if both
+ matcher and obj are String. fix r35541. [Bug #6405]
+ DON'T COMMIT IF YOU CAN'T RUN TEST.
+ FIX AS SOON AS POSSIBLE YOU BREAK TESTS.
+ patched by ayumin.
+ https://github.com/seattlerb/minitest/pull/124
+
+ * lib/minitest/unit.rb (refute_match): ditto.
+
+Mon May 7 13:41:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (PROGRAM), configure.in (POSTLINK): sign built program
+ using RUBY_CODESIGN identity.
+
+Mon May 7 13:03:55 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (body_type_attachment): parse body type
+ "ATTACHMENT". [ruby-core:44849] [Bug #6397]
+
+Mon May 7 10:49:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): define IDs before
+ they are used. [ruby-core:44900] [Bug #6406]
+
+Mon May 7 10:27:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/rmd160/rmd160.c (RMD160_Update): fix for huge data.
+
+Mon May 7 10:23:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/fileutils/fileasserts.rb: use assert_equal, assert_match, and so on.
+
+ * test/ruby/enc/test_utf16.rb, test/ruby/enc/test_utf32.rb,
+ test/ruby/test_io_m17n.rb (assert_str_equal): ditto.
+
+ * test/rubygems/test_gem_remote_fetcher.rb
+ (assert_data_from_{server,proxy}): ditto.
+
+ * test/test_pstore.rb (test_thread_safe): ditto.
+
+Mon May 7 10:16:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rubygems/test_gem_installer.rb (TestGemInstaller#test_dir): fix
+ argument order. expected value must come first.
+
+Mon May 7 09:14:11 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: support TLSv1.1 & TLSv1.2. Add
+ SSLContext#version to inspect the version that was negotiated for
+ a given connection.
+ * ext/openssl/extconf.rb: detect TLS 1.1 & 1.2 support.
+ * test/openssl/test_ssl.rb: add tests for TLS 1.1 & 1.2 given they
+ are supported by the native OpenSSL being used.
+
+Sun May 6 21:34:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_encoding_set): suppress warnings. [ruby-dev:45627]
+ this tmp1 is not required after r35538.
+
+ * addr2line.c: suppress warnings.
+
+Sun May 6 18:39:39 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): remove unused variable `size'.
+
+Sun May 6 14:50:03 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb: show actual read length in an error message.
+
+Sat May 5 06:43:10 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.12.1 (r7323)
+ * test/minitest/*: ditto
+
+Sat May 5 01:47:33 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/zlib/test_zlib.rb (test_inflate): add a test for Zlib.inflate.
+ patched by headius (Charles Nutter). [ruby-core:44859] [Bug #6398]
+
+ * test/zlib/test_zlib.rb (test_deflate): add a test for Zlib.deflate.
+
+Sat May 5 00:53:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (parse_mode_enc): remove warnings 'Ignoring internal encoding'.
+ [ruby-core:44455] [Bug #6324]
+
+ * io.c (io_encoding_set): ditto.
+
+Fri May 4 07:19:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/parser.rb (RDoc.binary?): fix wrong regexp.
+ [ruby-core:44798] [Bug #6393]
+
+Fri May 4 01:33:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser.rb (RDoc.alias_extension): a real file is irrelevant
+ to aliasing. [ruby-core:44796][Bug #6392]
+
+ * lib/rdoc/parser.rb (RDoc.zip?): non-existent file will not be a zip
+ file.
+
+ * lib/rdoc/parser.rb (RDoc.can_parse_by_name): accept aliased
+ extension file names.
+
+ * lib/rdoc/parser.rb (RDoc.binary?): binary read data may have
+ incomplete multibyte sequence. [ruby-core:44798][Bug #6393]
+
+Wed May 2 23:55:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): expand
+ real path to get rid of loading same files via symlinks.
+
+Wed May 2 23:26:04 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (rb_fiber_m_transfer): improve sample code in Fiber#transfer
+ documentation. emphasize the difference between transfer and resume.
+
+Wed May 2 23:21:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): allow spaces between lambda arrow and
+ parenthesis. [ruby-dev:45605][Feature #6390]
+
+Wed May 2 19:06:30 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * cont.c (rb_fiber_m_transfer): Improved Fiber documentation.
+ patched by Anuj Dutta. [ruby-core:44540][Bug #6343]
+
+Wed May 2 13:06:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README, README.ja: reformatted using rdoc markup. based on the
+ patches by zzak (Zachary Scott) in [Feature #6388].
+
+ * README, README.ja: updated the author's mail address.
+
+Wed May 2 09:46:09 2012 Kouji Takao <kouji@takao7.net>
+
+ * ext/readline/readline.c (Readline.special_prefixes=)
+ (Readline.special_prefixes): new function. An original patch was
+ created by nagachika. [Feature #5784]
+
+Tue May 1 22:18:45 2012 Kouji Takao <kouji@takao7.net>
+
+ * ext/readline/readline.c (Readline.pre_input_hook)
+ (Readline.insert_text, Readline.redisplay): new function. An
+ original patch was created by nagachika. [Feature #5785]
+
+Tue May 1 15:46:48 2012 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: "$(Q)-..." doesn't work on nmake.
+
+Tue May 1 15:32:10 2012 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: replace '@' prefix to '$(Q)' to control build
+ process outputs.
+
+Tue May 1 14:17:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/deprecation.rb (OpenSSL.check_func): check if header is
+ available for macro compatibility.
+
+Tue May 1 10:53:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb: ignore traces from another threads
+ because Kernel.set_trace_func affects other threads.
+
+Tue May 1 06:04:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/sha2/sha2.c (REVERSE32): explicitly cast since unsigned
+ long may be larger than sha2_word32.
+
+ * ext/digest/sha2/sha2.c (SHA{256,512,384}_{Final,End}): should clear
+ whole content, not pointer size.
+
+ * ext/digest/*/extconf.rb: use pkg_config to use same library with
+ openssl. [ruby-core:44755][Bug #6379]
+
+ * ext/openssl/deprecation.rb: extract check for broken Apple OpenSSL.
+
+Tue May 1 05:02:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (optflags): disable unsafe optimizations.
+ [ruby-core:44679][Bug #6370]
+
+Mon Apr 30 23:36:49 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/fileutils.rb (copy_metadata): use File.lchown and File.lchmod to
+ update meta data of symlinks.
+
+Mon Apr 30 23:05:53 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_continuation.rb (tracing_with_set_trace_func): don't
+ call Continuation from other threads. [ruby-dev:45596] [Bug #6382]
+
+Mon Apr 30 20:10:04 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/zlib/extconf.rb: detect z_crc_t type which will be defined
+ since zlib-1.2.7.
+
+ * ext/zlib/zlib.c (rb_zlib_crc_table): use z_crc_t if available.
+
+Mon Apr 30 09:02:15 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/openssl/lib/openssl/ssl.rb: add hostname to "hostname does not
+ match server cert." error. patched by Wes Morgan via Github.
+ https://github.com/ruby/ruby/pull/122
+
+Mon Apr 30 04:43:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/yaml_events.rb: implicit styles should not
+ be changeable for JSON events.
+
+Sun Apr 29 06:12:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assoc, parser_yylex): add syntax to splat keyword hash.
+ [ruby-core:44591][Feature #6353]
+
+ * compile.c (compile_array_): generate keyword splat insns.
+
+ * vm.c (m_core_hash_merge_kwd): merge keyword hash into intermediate
+ hash. leftward argument is prior currently.
+
+Fri Apr 27 12:34:23 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): should convert a Bignum value to
+ unsigned long long on Win64.
+ [ruby-core:44636][Bug #6364] reported by raylinn@gmail.com (ray linn)
+
+Fri Apr 27 10:58:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/readline/test_readline.rb (setup): avoid affected by user's
+ inputrc file. [ruby-dev:45584][Bug #6357]
+
+Fri Apr 27 01:45:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (rb_threadptr_execute_interrupts_common):
+ handle timer_interrupt only on the first loop for the case to avoid
+ the infinite loop like following case:
+ * there is 2 Ruby threads (3 pthreads)
+ (1) main thread is waiting at gvl_yield:112 (native_cond_wait)
+ (2) sub thread works
+ (3) sub thread waits at gvl_yield:133 (native_mutex_unlock)
+ (4) main thread works
+ (5) main thread goes to gvl_acquire_common
+ (6) main thread call rb_wakeup_timer_thread
+ (7) timer thread set timer interrupt to the main thread
+ (8) main thread works
+ (9) main thread waits at gvl_acquire_common:64 (native_cond_wait)
+ (10) sub tread works
+ (11) set sub thread as the current thread
+ (12) run Ruby thread
+ (13) ...100ms
+ (14) sub thread goes to rb_threadptr_execute_interrupts_common
+ (15) sub thread call rb_thread_schedule_limits
+ (16) sub thread call gvl_release_common
+ (17) sub threads waits at gvl_yield:121 (native_cond_wait)
+ (18) main threads works
+ (19) main thread back to gvl_yield
+ (20) set main thread as the current thread
+ (21) main thread call gvl_yield
+ (22) main thread waits at gvl_yield:112 (native_cond_wait)
+ As described above, the main thread can't escape from
+ rb_threadptr_execute_interrupts_common.
+ See extended memo: http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/R35480_ExtendedMemo
+
+Fri Apr 27 07:15:07 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): support the longest
+ path in sockaddr_un, really.
+ reported by nagachika.
+ http://d.hatena.ne.jp/nagachika/20120426/ruby_trunk_changes_35474_35476
+
+Thu Apr 26 12:28:06 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (init_unix_addrinfo): support the longest
+ path in sockaddr_un.
+ (inspect_sockaddr): ditto.
+ (addrinfo_mdump): ditto.
+ (addrinfo_mload): ditto.
+ (rsock_unixpath_str): new function.
+ (rsock_unixpath): removed.
+ (rsock_unixaddr): use rsock_unixpath_str.
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): support the longest
+ path in sockaddr_un.
+ (sock_s_unpack_sockaddr_un): ditto.
+ (sock_s_gethostbyaddr): unused variable removed.
+
+ * ext/socket/unixsocket.c (rsock_init_unixsock): support the longest
+ path in sockaddr_un.
+
+ * ext/socket/rubysocket.h (rsock_unixpath_str): declared.
+ (rsock_unixpath): removed.
+
+ * test/socket/test_unix.rb: comment out test_nul because abstract unix
+ sockets may contain NULs.
+
+Thu Apr 26 01:32:33 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/optparse/test_summary.rb (test_summary_containing_space): add
+ test for r35467. OptionParser#to_a shouldn't split banner by spaces.
+
+Wed Apr 25 23:02:46 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (init_unix_addrinfo): refine error message
+ format.
+ (addrinfo_mload): show more information on "too long AF_UNIX path"
+ error.
+ (addrinfo_unix_path): ditto for "too short AF_UNIX address" and
+ "too long AF_UNIX address" error.
+
+Wed Apr 25 05:46:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#to_a): split for each lines.
+ [ruby-dev:45568][Bug #6348]
+
+Tue Apr 24 21:57:53 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (init_unix_addrinfo): show actual path length
+ when it is too long for Unix socket.
+
+ * ext/socket/unixsocket.c (rsock_init_unixsock): ditto.
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): ditto.
+
+Tue Apr 24 21:43:58 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/net/smtp.rb (check_continue): raise an error with an explanatory
+ message. [ruby-core:35854] [Feature #4598]
+
+Tue Apr 24 21:11:31 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#to_a): should split by end-of-line,
+ and MUST TEST IT, MUST RUN THE TEST, MUST VERIFY BEFORE BACKPORT.
+ [ruby-dev:45568][Bug #6348]
+
+Tue Apr 24 19:59:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/euc_jp.c: added EUC-JP-2004 and its alias EUC-JISX0213.
+ [ruby-dev:45571] [Feature #6349]
+ Requested by Kyouhei Yanagita <yanagi@shakenbu.org>.
+
+ * enc/trans/japanese_euc.trans: ditto.
+
+ * enc/trans/JIS/JISX0213-[12]%UCS@{BMP,SIP}.src: JIS X 0213:2004 ->
+ Unicode mapping table from NetBSD.
+
+ * enc/trans/JIS/UCS@{BMP,SIP}%JISX0213-[12].src: Unicode -> JIS X
+ 0213:2004 mapping table from NetBSD.
+
+ * tool/transcode-tblgen.rb: added SIP support.
+
+ * test/ruby/test_transcode.rb: tests of above changes.
+
+Tue Apr 24 18:12:13 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: fix to output warning when the same literals
+ are available as a condition of same case clause.
+ And remove information ('#n') because we can find duplicated
+ condition with explicit line numbers.
+ [ruby-core:38343] [Ruby 1.9 - Bug #5068]
+
+ * test/ruby/test_syntax.rb: add a test for above.
+
+Tue Apr 24 17:03:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (waitpid): need to check the return value of
+ FindChildSlotByHandle() before passing poll_child_status().
+ this fixed a SEGV in test-all. reported by ko1 via IRC.
+
+Tue Apr 24 16:04:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): EXPR_BEG by keywords is a start point of
+ commands. [ruby-dev:45563][Bug #6347]
+
+ * parse.y (superclass): ditto for superclass.
+
+ * parse.y (parser_parse_string, parser_here_document): ditto for
+ string interpolation.
+
+ * parse.y (parser_yylex): ditto for singleton class.
+
+Tue Apr 24 15:51:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#to_a): should split by end-of-line
+ [ruby-dev:45568][Bug #6348]
+
+ * lib/optparse.rb (OptionParser#to_a): String#to_a is no longer
+ defined. [ruby-dev:45568][Bug #6348]
+
+Tue Apr 24 12:46:50 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * hash.c, object.c, struct.c, lib/ostruct.rb: add to_h methods.
+ [Feature #6276]
+
+Tue Apr 24 10:54:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/drb/drbtest.rb ({DRbCore,DRbAry}#teardown): cannot pass SIGTERM
+ to another process on Windows, so use SIGINT instead.
+
+Tue Apr 24 00:25:39 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_check_deadlock): refine an error message of deadlock
+ detection. [ruby-core:44336] [Bug #6288]
+
+Tue Apr 24 00:14:42 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (primary): remove wrong "fixpos" that caused incorrect
+ source_location of blocks. [ruby-core:42232] [Bug #5930]
+
+ * test/ruby/test_proc.rb: add a test for above.
+
+Mon Apr 23 22:56:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv: deprecated. [Feature #6322]
+
+Mon Apr 23 22:07:00 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_unix.rb (bound_unix_socket): make temporary
+ filename shorter for less possibility of Unix socket path over
+ 107 bytes when TMPDIR has long path.
+
+Mon Apr 23 20:35:49 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (szInternalCmds, internal_match, internal_cmd_match):
+ get rid of a segmentation fault with GCC 4.7.0.
+ reported by raylinn@gmail.com (ray linn) at [ruby-core:44505]
+ [Bug #6333], and patched by mame.
+
+ * test/ruby/test_system.rb (TestSystem#test_system): test for it.
+
+Mon Apr 23 20:11:02 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/drb/ssl.rb: generate 1024 bits RSA key instead of 512 bits.
+ OpenSSL 1.0.1 rejects 512 bits RSA key for TLS1.2 with SHA512.
+ http://rt.openssl.org/Ticket/Display.html?id=2769&user=guest&pass=guest
+ reported by Bohuslav Kabrda.
+ [ruby-core:43844] [ruby-trunk - Bug #6221]
+
+Mon Apr 23 19:54:33 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/drb/drbtest.rb: rescue Errno::ESRCH for Process.kill.
+ reported by NARUSE, Yui. [ruby-dev:45551]
+
+Mon Apr 23 14:16:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * .gdbinit (rb_ps_vm): follow st_table's packing change.
+
+Mon Apr 23 10:43:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: disable rubygems not to load rbconfig.rb before
+ fake.rb. [ruby-core:44492][Bug #6329]
+
+Sun Apr 22 20:26:06 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/drb/extservm.rb (DRb::ExtServManager): don't use /bin/sh to
+ invoke service subprocess. mark detach threads for clean up.
+
+ * test/drb/drbtest.rb: clean up the service subprocess in teardown.
+
+ * test/drb/test_drb.rb: set @service_name for teardown.
+
+ * test/drb/test_drbunix.rb: ditto.
+
+ * test/drb/test_drbssl.rb: ditto.
+
+ [ruby-dev:45547]
+
+Sun Apr 22 07:51:29 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/drb/ssl.rb: close accepted TCP socket if SSL accept is failed.
+ [ruby-dev:45541]
+
+Sat Apr 21 14:36:49 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: fix sticks on some tests problem
+ [Bug #6272]
+
+Fri Apr 20 12:24:04 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem: Removed to avoid
+ conflict with ca-bundle.pem
+ * lib/rubygems/ssl_certs/VerisignClass3PublicPrimaryCertificationAuthority-G2.pem:
+ ditto.
+ * lib/rubygems/ssl_certs/Entrust_net-Secure-Server-Certification-Authority.pem:
+ ditto.
+
+Fri Apr 20 08:07:06 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.23 which contains security
+ fixes:
+
+ RubyGems now disallows redirection from HTTPS to HTTP.
+
+ RubyGems now verifies SSL connections.
+
+ See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
+ changes since 1.8.22.
+ * test/rubygems: ditto.
+
+Thu Apr 19 16:33:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime_with_timespec): fix carry-up bug and
+ overwrite '+' with '-' if negative offset less than a hour.
+ [ruby-core:44447][Bug #6323]
+
+Thu Apr 19 09:39:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/-test-/win32/dln/extconf.rb: need import library for ordinal
+ entry even on mingw. [ruby-core:44441][Bug #6320]
+
+Thu Apr 19 09:35:15 2012 Eric Hodel <drbrain@segment7.net>
+
+ * random.c (random_init): Clarify that the default seed is
+ Random.new_seed, not zero. Based on patch by Roger Pack.
+ [ruby-trunk - Bug #6313]
+ * random.c (rb_f_srand): ditto.
+
+Thu Apr 19 08:59:02 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c (window_nodelay): Fixed call-seq of nodelay to
+ include the '='.
+
+ Improved description window.nodelay=.
+
+Thu Apr 19 08:47:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * io.c (io_readpartial): Document the output buffer parameter is
+ overwritten with the read contents even when non-empty.
+ Patch by yu nobuoka. [ruby-trunk - Bug #6285]
+ * io.c (io_read_nonblock): ditto.
+ * io.c (io_read): ditto.
+ * io.c (rb_io_sysread): ditto.
+ * io.c (argf_read): ditto.
+ * io.c (argf_readpartial): ditto.
+ * ext/stringio/stringio.c (strio_read): ditto.
+ * test/ruby/test_argf.rb (class TestArgf): Add test for existing
+ behavior of read outbuf.
+ * test/ruby/test_io.rb (class TestIO): ditto.
+ * test/stringio/test_stringio.rb (class TestStringIO): ditto.
+
+Wed Apr 18 22:58:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (DOT, DOXYGEN): use AC_CHECK_PROGS instead of
+ AC_CHECK_PROG which needs the third argument. [ruby-core:44433]
+ [Bug #6316]
+
+ * configure.in (PKG_CONFIG): fix condition to skip older version
+ of pkg-config. continue in backticks does not affect outside.
+
+Wed Apr 18 13:59:40 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/file.c (INVALID_FILE_ATTRIBUTES): define for old SDK.
+
+Wed Apr 18 10:22:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime_with_timespec): add an interim digit for
+ the timezone offset which is less than an hour.
+
+Wed Apr 18 09:58:29 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/version.rb: Fixed init_with warning by calling into
+ yaml_initialize (for syck) from psych's init_with
+
+Wed Apr 18 09:03:43 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.22 plus r33517 and r35337 which
+ were ported to the rubygems git repository.
+
+ See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
+ changes since 1.8.11.
+
+ * test/rubygems: ditto.
+
+Tue Apr 17 22:18:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime_with_timespec): fix padding of time zone
+ offset. [ruby-dev:43287][Bug #4458]
+
+Tue Apr 17 13:11:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (rb_w32_check_imported): skip ordinal entries. based on a
+ patch by phasis68 (Heesob Park) at [ruby-core:44381].
+ [ruby-core:44371][Bug #6303]
+
+Mon Apr 16 18:22:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * spec/default.mspec: expand relative path for ruby_exe which uses
+ them with Dir.chdir; it breaks relative paths, for example
+ core/kernel/exec_spec.rb.
+
+Mon Apr 16 16:22:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (gmtime_r, localtime_r): POSIX compliant reentrant
+ versions.
+
+ * configure.in (RUBY_MSVCRT_VERSION): define on mingw too.
+
+ * win32/Makefile.sub (config.h): prefix RT_VER with RUBY and make
+ more descriptive to get rid of potential conflict.
+
+Mon Apr 16 15:19:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (NO_RUBY_VENDOR_LIB): fix missing comma.
+
+Mon Apr 16 12:17:12 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (hermitian?): Bug fix, patch by George Koehler
+ [Bug #6290] [rubyspec:4b9573d7613]
+
+Mon Apr 16 09:42:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/remote_fetcher.rb (Gem::RemoteFetcher#download): should
+ use File.identical? to check the identity of the files.
+ this fixed an error of a test on Windows.
+
+Sat Apr 14 12:55:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (UNREACHABLE): gcc 4.4 eliminates unreachable code
+ if -O3 is given.
+
+ * win32/win32.c (child_result): dropped colon.
+
+Sat Apr 14 10:45:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#start):
+ partially revert r35315.
+
+ * test/webrick/test_server.rb (test_start_exception):
+ received signal is delivered to the main thread, so it is needed to
+ emulate it. patched by Eric Hodel. [ruby-core:44348] [Feature #6236]
+
+Sat Apr 14 09:35:45 2012 Eric Hodel <drbrain@segment7.net>
+
+ * variable.c (trace_ev): Removed "not reached" comment as this line is
+ reached.
+ * variable.c (rb_obj_remove_instance_variable): Replaced "not reached"
+ comment with the UNREACHABLE macro.
+ * variable.c (rb_mod_const_missing): ditto.
+ * variable.c (rb_mod_remove_cvar): ditto.
+ * enum.c (first_i): ditto.
+ * string.c (rb_str_aref): ditto.
+ * string.c (str_byte_aref): ditto.
+ * string.c (rb_to_id): ditto.
+ * io.c (rb_io_fmode_modestr): ditto.
+ * io.c (rb_io_oflags_modestr): ditto.
+ * pack.c (num2i32): ditto.
+ * vm_eval.c (rb_method_missing): ditto.
+ * vm_eval.c (rb_f_throw): ditto.
+ * dir.c (dir_read): ditto.
+ * win32/win32.c (child_result): ditto.
+ * struct.c (rb_struct_getmember): ditto.
+ * struct.c (rb_struct_set): ditto.
+ * struct.c (rb_struct_aref_id): ditto.
+ * eval.c (rb_f_raise): ditto.
+ * process.c (rb_f_exit_bang): ditto.
+ * process.c (rb_f_exit): ditto.
+ * process.c (rb_f_abort): ditto.
+ * ext/-test-/iter/break.c (iter_break_value): ditto.
+ * ext/pty/pty.c (pty_check): ditto.
+ * ext/openssl/ossl_pkey.c (ossl_pkey_new): ditto.
+ * ext/readline/readline.c (rb_remove_history): ditto.
+ * ext/stringio/stringio.c (strio_unimpl): ditto.
+ * numeric.c (num_sadded): ditto.
+ * numeric.c (num_init_copy): ditto.
+ * numeric.c (rb_num2ll): ditto.
+ * numeric.c (rb_num2ull): ditto.
+ * vm_insnhelper.c (call_cfunc): ditto.
+ * ruby.c (opt_W_getter): ditto.
+ * bignum.c (rb_big_coerce): ditto.
+ * file.c (rb_f_test): ditto.
+
+Sat Apr 14 08:38:20 2012 Eric Hodel <drbrain@segment7.net>
+
+ * encoding.c (rb_enc_codepoint_len): Use UNREACHABLE to avoid "control
+ reaches end of non-void function" warnings. [ruby-trunk - Bug #6066]
+ * re.c (name_to_backref_number): ditto.
+ * object.c (rb_Float): ditto.
+ * io.c (io_readpartial): ditto.
+ * io.c (io_read_nonblock): ditto.
+ * pack.c (rb_uv_to_utf8): ditto.
+ * proc.c (rb_method_entry_arity): ditto.
+ * vm_method.c (rb_f_notimplement): ditto.
+ * struct.c (rb_struct_aset_id): ditto.
+ * class.c (rb_scan_args): ditto.
+ * process.c (rlimit_resource_type): ditto.
+ * process.c (rlimit_resource_value): ditto.
+ * process.c (p_uid_switch): ditto.
+ * process.c (p_gid_switch): ditto.
+ * ext/digest/digest.c (rb_digest_instance_update): ditto.
+ * ext/digest/digest.c (rb_digest_instance_finish): ditto.
+ * ext/digest/digest.c (rb_digest_instance_reset): ditto.
+ * ext/digest/digest.c (rb_digest_instance_block_length): ditto.
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): ditto.
+ * ext/dl/handle.c (rb_dlhandle_close): ditto.
+ * ext/tk/tcltklib.c (pending_exception_check0): ditto.
+ * ext/tk/tcltklib.c (pending_exception_check1): ditto.
+ * ext/tk/tcltklib.c (ip_cancel_eval_core): ditto.
+ * ext/tk/tcltklib.c (lib_get_reltype_name): ditto.
+ * ext/tk/tcltklib.c (create_dummy_encoding_for_tk_core): ditto.
+ * ext/tk/tkutil/tkutil.c (tk_hash_kv): ditto.
+ * ext/openssl/ossl_ssl.c (ossl_ssl_session_reused): ditto.
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_key_dsa_verify_asn1): ditto.
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_is_at_infinit): ditto.
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_is_on_curve): ditto.
+ * ext/fiddle/conversions.c (generic_to_value): ditto.
+ * ext/socket/raddrinfo.c (rsock_io_socket_addrinfo): ditto.
+ * ext/socket/socket.c (sock_s_getnameinfo): ditto.
+ * ext/ripper/eventids2.c (ripper_token2eventid): ditto.
+ * cont.c (return_fiber): ditto.
+ * dmydln.c (dln_load): ditto.
+ * vm_insnhelper.c (vm_search_normal_superclass): ditto.
+ * bignum.c (big_fdiv): ditto.
+ * marshal.c (r_symlink): ditto.
+ * marshal.c (r_symbol): ditto.
+
+Fri Apr 13 17:12:09 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (inspect_i): keep string's coderange.
+
+Fri Apr 13 15:26:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_aset, rb_hash_update, rb_hash_update_by): use
+ st_update() to reduce evaluation of hash values.
+
+Fri Apr 13 15:17:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#stop): fix r35303;
+ this method is to deny new connections, not shutdown yet.
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#start):
+ re-raise exception only when the exception is Interrupt (^C).
+
+Thu Apr 12 19:51:45 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: added some notes.
+
+Wed Apr 11 17:16:49 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_array, compile_array_):
+ Divide big array (or hash) literals into several blocks and
+ concatenate them. There was a problem that a big array (hash)
+ literal causes SystemStackError exception (stack overflow)
+ because VM push all contents of the literal onto VM stack to
+ make an array (or hash). To solve this issue, we make several
+ arrays (hashes) and concatenate them to make a big array (hash)
+ object. [ruby-dev:37701] [Bug #982]
+
+ * compile.c (iseq_compile_each, setup_args): use modified
+ compile_array.
+
+ * vm.c (m_core_hash_from_ary, m_core_hash_merge_ary,
+ m_core_hash_merge_ptr): added for above change.
+
+ * id.c (Init_id), parse.y: add core method ids.
+
+ * bootstraptest/test_literal.rb: add simple tests.
+
+ * bootstraptest/test_eval.rb: remove rescue clause to catch
+ SystemStackError exception.
+
+ * test/ruby/test_literal.rb: add tests to check no stack overflow.
+
+Thu Apr 12 07:10:37 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri/generic.rb (module URI): URI now downcases the scheme to
+ follow RFC 2396 section 3.1. [ruby-trunk - Feature #4551]
+ * test/uri/test_generic.rb (class URI): Test for above
+
+Thu Apr 12 06:15:44 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/protocol.rb (module Net): Added ReadTimeout to match
+ OpenTimeout. ReadTimeout is now raised by rbuf_fill instead of
+ Timeout::Error to help users distinguish what type of timeout
+ occurred. [ruby-trunk - Feature #6088]
+ * lib/net/pop.rb (module Net): Updated documentation for ReadTimeout
+ and OpenTimeout.
+ * lib/net/http.rb (module Net): ditto
+ * lib/net/smtp.rb (module Net): ditto
+ * lib/net/telnet.rb (module Net): Net::ReadTimeout is now raised in
+ waitfor to match Net::Protocol.
+ * test/net/http/test_http.rb: Updated Timeout::Error expectation to
+ Net::ReadTimeout.
+ * test/net/ftp/test_ftp.rb: ditto
+
+Thu Apr 12 05:27:01 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/server.rb (module WEBrick::GenericServer): A server
+ will now continue only when a StandardError subclass is raised. For
+ other exception types the error will be logged at the fatal level and
+ the server will safely stop. Based on a patch by Alex Young.
+ [ruby-trunk - Feature #6236]
+ * test/webrick/test_server.rb: Test for new exception handling
+ behavior. Join the server thread instead of busy-waiting for it to
+ shut down to remove race conditions.
+
+Thu Apr 12 03:50:44 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit:Runner::Worker#_run_suites):
+ call GC.start before running the test suites.
+
+Wed Apr 11 22:31:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_check_id_cstr): new function to check if ID is
+ registered with NUL-terminated C string.
+
+ * sprintf.c (rb_str_format): avoid inadvertent symbol creation.
+
+Wed Apr 11 20:28:36 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * io.c (rb_io_eof): use eof() instead of io_fillbuf(). It's because
+ io_unread() doesn't work properly when reading CRLF with read(length)
+ and mode 'r'.
+ [ruby-core:44189][Bug #6271]
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_read_crlf_and_eof):
+ test for above.
+
+Wed Apr 11 07:38:33 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/digest/sha2/lib/sha2.rb (Digest#block_length): Fixed method name
+ in documentation examples. Patch by naleski via
+ https://github.com/ruby/ruby/pull/115
+
+Wed Apr 11 07:33:13 2012 Eric Hodel <drbrain@segment7.net>
+
+ * pack.c (pack_pack): Warn when an invalid character is found in the
+ format string when $VERBOSE is true. [ruby-trunk - Feature #5219]
+ * pack.c (pack_unpack): ditto
+ * test/ruby/test_pack.rb (class TestPack): Test for warnings on
+ invalid format characters.
+
+Wed Apr 11 06:11:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (rb_str_tr): Documented use of \ to escape characters.
+ [ruby-trunk - Bug #6161]
+ * string.c (rb_str_count): ditto
+
+Wed Apr 11 05:14:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/abbrev.rb: Clarified that Abbrev.abbrev returns a Hash instead
+ of an Array. Patch by Andrei Bocan. [ruby-trunk - Bug #6107]
+
+Wed Apr 11 03:02:24 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/ripper/lib/ripper/sexp.rb: fix spelling. patched by
+ Jonathan Hinkle via https://github.com/ruby/ruby/pull/116
+
+Tue Apr 10 19:07:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_enc_raise): new function to raise an exception with
+ the message in the given encoding. patched by now (Nikolai
+ Weibull) at [ruby-core:41160]. [Feature #5650]
+
+Tue Apr 10 18:19:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#send_request_with_body_stream):
+ use IO.copy_stream for requests using body_stream.
+ patched by Eric Wong. [ruby-core:40898] [Feature #5605]
+
+Tue Apr 10 16:53:21 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c: add prototype declarations for older Mac OS X.
+ [ruby-core:43376][Bug #6170]
+
+Tue Apr 10 15:35:21 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_set_sequence): show a hint if there are duplicated
+ "when" clauses. [ruby-core:41502] [ruby-trunk - Feature #5716]
+
+Tue Apr 10 09:57:00 2012 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (rb_str_split_m): Documented behavior of split on the empty
+ string. [ruby-trunk - Feature #3575]
+
+Tue Apr 10 09:48:31 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (rb_deflate_s_deflate): Fixed ruby example replacing
+ NO_FLUSH with FINISH. [ruby-trunk - Bug #6273]
+
+Mon Apr 9 23:10:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (isUNCRoot, winnt_stat): support long UNC.
+ [ruby-core:30623][Feature #3399]
+
+Mon Apr 9 15:16:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (string_content, parser_yylex): count brace nesting to
+ dispatch embexpr_end. [ruby-core:43775][Bug #6211]
+
+Mon Apr 9 13:06:58 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * hash.c (rb_hash_set_default_proc): Accept nil, patch by Run Paint
+ [Feature #4234]
+
+ * test/ruby/test_hash.rb: test for above.
+
+Mon Apr 9 08:01:15 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: gets the value with range() consistently.
+ * ext/date/date_strftime.c (range): now just replaces the given item.
+
+Mon Apr 9 06:58:01 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_expt): [ruby-core:44170].
+
+Mon Apr 9 02:52:03 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * complex.c (nucomp_expt): the result of f_complex_new2 may be a fixnum
+ with mathn. [ruby-core:44170] [Bug #6267]
+
+Sun Apr 8 22:46:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/generator/generator.c (generate_json_bignum):
+ add RB_GC_GUARD.
+ http://fb.rubyci.org/~chkbuild/ruby-trunk/log/20120407T210301Z.diff.html.gz
+
+Sun Apr 8 07:26:40 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/utils.rb (WEBrick::Utils::TimeoutHandler): get keys
+ and fetch values from it to prevent @timeout_info's error
+ "can't add a new key into hash during iteration".
+
+Sun Apr 8 06:51:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_unread): cast as long the value for extra_max.
+ [ruby-core:44137] [Bug #6257]
+
+Sun Apr 8 06:46:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#send_body_io):
+ use readpartial to get data even if the response is streaming data and
+ each data is smaller than @buffer_size.
+ patched by yu nobuoka. [ruby-dev:45471] [Bug #6230]
+
+Sat Apr 7 22:35:36 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * include/ruby/win32.h (rb_w32_aspawn_flags): add the declaration of
+ new function.
+
+ * process.c (enum): add EXEC_OPTION_PGROUP and move the position
+ above for the usage in proc_spawn_n().
+
+ * process.c (proc_spawn_n): add an argument to pass new option
+ `new_pgroup`. The option specifies CREATE_NEW_PROCESS_GROUP flag to
+ CreateProcessW(). This flag is necessary for the usage of
+ Process.kill on the subprocess on Windows.
+
+ * process.c (rb_exec_arg_addopt): ditto.
+
+ * process.c (rb_spawn_process): ditto.
+
+ * process.c (documentation for rb_f_spawn): add documentation for new
+ option `new_pgroup` of spawn.
+
+ * test/ruby/test_process.rb (TestProcess#test_execopts_new_pgroup):
+ add tests for option `new_pgroup`.
+
+ * test/ruby/test_thread.rb
+ (TestThreadGroup#test_thread_timer_and_interrupt):
+ add option `new_pgroup: true` to spawn on Windows. It's needed for
+ Process.kill on a subprocess.
+
+ * win32/win32.c (CreateChild): add an argument to pass
+ dwCreationFlags of CreateProcessW().
+
+ * win32/win32.c (rb_w32_spawn): ditto.
+
+ * win32/win32.c (rb_w32_aspawn_flags): add new function to pass
+ dwCreationFlags.
+
+ * win32/win32.c (rb_w32_aspawn): refactor to move the content to
+ rb_w32_aspawn_flags().
+ [ruby-core:43245][Bug #6131]
+
+Sat Apr 7 22:32:00 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_thread.rb
+ (TestThreadGroup#test_thread_timer_and_interrupt): skip on Windows.
+ Process.kill cannot kill a subprocess if CREATE_NEW_PROCESS_GROUP
+ flag is not specified in a call to CreateProcessW().
+
+ * win32/win32.c (CreateChild): revert the usage of
+ CREATE_NEW_PROCESS_GROUP flag for compatibility.
+ [ruby-core:43245][Bug #6131]
+
+Sat Apr 7 10:28:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: bumping up psych version to match release.
+ * ext/psych/psych.gemspec: ditto
+
+Sat Apr 7 02:07:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: fall back to any encoding if the external
+ encoding is wrong. [ruby-core:44163]
+ * test/psych/test_encoding.rb: fix test
+
+Fri Apr 6 16:24:24 2012 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * struct.c (documentation for rb_struct_members_m):
+ fix 'array of strings' to 'array of symbols'
+ [ruby-core:44152][Bug #6264]
+
+Fri Apr 6 14:27:04 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * Makefile.in ($(LIBRUBY_A)): fix typo.
+
+Thu Apr 5 13:26:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/alloca.c (xmalloc, xfree): use ruby version, not
+ depending on RUBY_LIB_PREFIX. [ruby-dev:45492][Bug #6255]
+
+Wed Apr 4 13:06:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/ftp/ftp.rb (Net::FTP#close): restore original read_timeout.
+
+Wed Apr 4 10:33:31 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/ftp/ftp.rb (Net::FTP#close): ignore exceptions from shutdown and
+ read on closing.
+
+Wed Apr 4 01:48:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/ftp/ftp.rb (Net::FTP#close): close socket more gracefully.
+
+ * lib/ftp/ftp.rb (Net::BufferedSocket#shutdown): added.
+
+ * test/net/ftp/test_ftp.rb (FTPTest#create_ftp_server): wait socket
+ with shutdown and read.
+
+Tue Apr 3 19:00:52 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/net/ftp/test_ftp.rb (FTPTest#create_ftp_server): should wait
+ a little before closing socket because if the client call
+ Net::FTP#getmultiline the socket is suddenly closed by the server in
+ the getline loop.
+
+Tue Apr 3 18:33:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (setreuid, setregid): suppress warnings.
+ [ruby-core:43374][Bug #6169]
+
+Tue Apr 3 10:18:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (inspect_enumerator): suppress uninitialized
+ instance variable warnings. [ruby-dev:45449][Bug #6214]
+ patched by no6v (Nobuhiro IMAI).
+
+Mon Apr 2 13:25:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse/ac.rb: autoconf-like options.
+
+Mon Apr 2 10:34:00 2012 eregon <eregontp@gmail.com>
+
+ * string.c (rb_str_start_with, rb_str_end_with): raise an error if
+ an argument is not convertible to a String.
+ [ruby-core:40623][Bug #5536]
+
+Mon Apr 2 03:35:25 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer): close socket only if
+ the socket is not closed yet.
+
+Sun Apr 1 23:03:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::BufferedSocket): should delegate send() to @io
+ for Net::FTP#abort and Net::FTP#status.
+
+Sun Apr 1 00:41:56 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb: fixed the domain name in examples.
+
+Sat Mar 31 21:39:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/utils.rb (WEBrick::Utils::TimeoutHandler): dup to prevent
+ @timeout_info's "can't add a new key into hash during iteration".
+
+Sat Mar 31 14:22:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (hash_default_value): extract from rb_hash_aref(), to be
+ shared with rb_hash_shift(), so that overriding Hash#default
+ will be respected.
+
+Sat Mar 31 14:16:02 2012 Sokolov Yura (funny-falcon) <funny.falcon@gmail.com>
+
+ * hash.c: do not allocate st_table when it is not necessary.
+
+Sat Mar 31 13:42:39 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (read_timeout=, open_timeout=): supported timeout.
+
+Sat Mar 31 13:20:40 2012 Sokolov Yura (funny-falcon) <funny.falcon@gmail.com>
+
+ * hash.c: remove unnecessary checks for Qundef in hash iterations.
+ since hash use st_foreach_check for iterations, such checks are
+ needless.
+
+Sat Mar 31 12:05:01 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_x509cert.c: Fix doc typo.
+
+Sat Mar 31 10:13:24 2012 Sokolov Yura (funny-falcon) <funny.falcon@gmail.com>
+
+ * st.c (st_foreach_check, st_foreach): remove ancient check. This
+ check are from initial ordered hash commit when first entry were
+ created with entry->fore = entry->back = entry.
+
+ * st.c (st_delete): use real_entries in st_delete for packed tables
+
+Sat Mar 31 07:53:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_foreach_check): remove the entry by replacing with never
+ when ST_DELETE.
+
+ * hash.c (st_foreach_safe): since table is not for VALUE, Qundef is
+ not special value, so use 0 instead. therefore this function can be
+ applied to only st_table which 0 is invalid as keys, e.g., IDs.
+
+ * hash.c: Qundef cannot be passed from st_foreach_check().
+
+ * hash.c, marshal.c, object.c, variable.c: fix callback argument types
+ of iterators.
+
+Thu Mar 29 23:50:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_update): pass pointer to key to the callback function.
+
+Thu Mar 29 16:36:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_update): add existing parameter to the callback function.
+
+Thu Mar 29 16:35:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (terminal_width, del_status_line, put_status):
+ extract as methods.
+
+Thu Mar 29 10:20:18 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkcs7.c: fix crash when parsing garbage data.
+ * test/openssl/test_pkcs7.rb: assert correct behavior for it.
+ Thanks to Matt Venables for reporting the issue.
+ [ruby-core:43250][Bug #6134]
+
+Thu Mar 29 10:16:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (TIME_QUANTUM_USEC): 10ms(= old setting) [experimental]
+ cf. [Bug #6098]
+
+Thu Mar 29 10:12:12 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (rb_threadptr_execute_interrupts_common): use defined
+ TIME_QUANTUM_USEC instead of a magic number. there is no meanings
+ to use different values for checking interval of interruption and
+ thread switching limits.
+ cf. [Bug #6098]
+
+Thu Mar 29 09:26:17 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_x509cert.rb: exclude test that fails when issuing
+ a certificate with RSA signature and DSS1 digest for earlier
+ OpenSSL versions when used in conjunction with OpenSSL 1.0.1.
+ Thanks, Vit Ondruch, for reporting the issue.
+ [ruby-core:42949][Bug #6089]
+
+Thu Mar 29 08:25:35 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: add note about unified behavior of encoding nil values in
+ instances of OpenSSL::ASN1::ASN1Data.
+
+Thu Mar 29 07:45:36 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: raise TypeError when trying to encode nil
+ values for Primitive instances.
+ * test/openssl/test_asn1.rb: Assert consistent behavior when
+ encoding nil values: Primitives raise TypeError, Constructives
+ raise NoMethodError.
+ Fixes [ruby-core:43009][Bug #6102]
+
+Wed Mar 28 16:39:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (obj2uid, obj2gid): allow strings as input user/group id.
+ [ruby-core:40923][Feature #5610]
+
+Wed Mar 28 15:06:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_symreal): default to ASCII-8BIT for non-ascii symbols,
+ otherwise it should be converted to US-ASCII in rb_intern_str() if
+ possible. [ruby-core:43762][Bug #6209]
+
+Wed Mar 28 08:44:24 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: updating version to match gem
+ * ext/psych/psych.gemspec: ditto
+ * ext/psych/lib/psych/visitors/to_ruby.rb: fixing deprecation warning
+
+Tue Mar 27 23:44:11 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_unread): fixed memory leak. report by nagachika via IRC.
+
+Tue Mar 27 22:44:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (verconf.h): separate load path specific stuff from
+ config.h.
+
+Tue Mar 27 22:43:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub: fix config.h path to include.
+
+Tue Mar 27 17:08:08 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * win32/win32.c (check_if_dir): fix memory leak.
+
+Tue Mar 27 13:13:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_new_empty): should copy also the encoding as an
+ empty substring. [ruby-dev:45441][Bug #6206]
+
+Mon Mar 26 23:43:04 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (parse227, parse228, parse229): don't use $~.
+
+Mon Mar 26 23:34:40 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (parse227, parse228, parse229): don't use local
+ variables defined by named capture for other Ruby implementations
+ such as Rubinius.
+
+Mon Mar 26 23:19:03 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (parse_pasv_port): refactored.
+
+Mon Mar 26 19:49:49 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/net/ftp/test_ftp.rb: add the test, which was forgotten in the
+ previous commit.
+
+Mon Mar 26 19:37:27 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (parse227, parse228, parse229): refactored.
+
+Mon Mar 26 11:46:23 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (inspect_enumerator): show method arguments of
+ lazy enumerators correctly.
+
+Mon Mar 26 13:51:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (check_if_dir, check_if_wdir): fix for Visual C++
+ not to use S_ISDIR(). [Feature #2408][ruby-core:26925]
+
+ * ruby.c (load_file_internal): ditto.
+
+Mon Mar 26 11:46:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): bail out if the script is a directory.
+ [Feature #2408][ruby-core:26925]
+
+ * win32/win32.c (rb_w32_open, rb_w32_wopen): check if the file is a
+ directory when access denied, to set errno to EISDIR.
+
+Sun Mar 25 18:13:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_setup_table): fix multiple non latin argument for
+ non latin (over 256 characters) tr-like methods.
+ [ruby-core:43371] [Bug #6167]
+
+Sun Mar 25 00:46:06 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator (lazy_initialize): set the instance variable "receiver"
+ to include the receiver to the return value of inspect on a lazy
+ enumerator directly created by Enumerator::Lazy.new.
+
+ * enumerator (RETURN_LAZY): don't set the instance variable "receiver".
+
+Sat Mar 24 23:59:00 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator (enumerator_inspect): include the original receiver and
+ method name of Enumerator::Lazy in the result of inspect.
+ [ruby-core:43345] [Bug #6159]
+
+ * enumerator (InitVM_Enumerator): don't use rb_define_alias for
+ some methods such as collect in order to make rb_frame_this_func()
+ return the correct method names.
+
+Sat Mar 24 22:22:18 2012 Sambasiva Rao Suda <sambasivarao@gmail.org>
+
+ * time.c (time_init_1): Time.new will accept seconds as string or
+ int. [ruby-core:43569][Bug #6193]
+
+Fri Mar 23 15:12:12 2012 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c (documentation for str_encode): Explain
+ that transcoding to the same encoding is a no-op
+ (i.e. no exceptions, no replacements,...).
+ [ruby-core:43557][Bug #6190]
+
+Fri Mar 23 13:19:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_str_to_inum): must be ASCII compatible encoding as
+ well as String#hex and String#oct. [ruby-core:43566][Bug #6192]
+
+ * string.c (rb_must_asciicompat): check if ASCII compatible.
+
+Thu Mar 22 23:14:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_encode_bang, encoded_dup): if nothing was
+ transcoded, just set encoding but leave coderange unchanged as
+ force_encoding. [ruby-core:43557][Bug #6190]
+
+Thu Mar 22 22:30:44 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * io.c (static int io_fflush): add the definition.
+ Use it in set_binary_mode_with_seek_cur().
+
+ * io.c (set_binary_mode_with_seek_cur): refactoring to split the
+ content into io_unread(). Fix the possibility of buffer overflow.
+
+ * io.c (io_unread): add new implementation for Windows. Previous one
+ caused invalid cursor position using IO#pos with OS text mode. New
+ one fixes the bug.
+
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_pos_dont_move_cursor_position): add a test for
+ above bug.
+ [ruby-core:43497] [Bug #6179]
+
+Thu Mar 22 19:55:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_fstat, rb_w32_fstati64): convert FILETIME
+ to time_t directly, not to be affected by TZ unnecessarily.
+
+ * win32/win32.c (unixtime_to_filetime): convert time_t to FILETIME
+ simply.
+
+Thu Mar 22 13:43:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_rsa.c (rsa_generate): fix argument type.
+ [Bug #6094]
+
+Thu Mar 22 11:14:10 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_pos_with_getc): updated.
+ see [ruby-core:43550]
+
+Wed Mar 21 17:57:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c: Merge Onigmo 3d855b30d574536d3ae600260208c6624ae4791c.
+ [Bug#6143] [Bug#6144] [Bug#6145]
+
+Wed Mar 21 17:01:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_pos_with_getc): added.
+ see [Bug #6179][ruby-core:43518]
+
+Mon Mar 19 17:18:51 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_flat_map_func): convert the block value to
+ Array if it doesn't respond to each. [ruby-core:43334]
+ [Bug #6155]
+
+Mon Mar 19 16:34:14 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enum.c (zip_i): variadic argument needs explicit cast on the
+ platforms where VALUE is longer than int.
+
+Mon Mar 19 15:36:41 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (enumerable_lazy): add an example of take and first
+ to the documentation. [ruby-core:43344] [Bug #6158]
+ add the description of the behavior when a block is given to zip
+ or cycle.
+
+Mon Mar 19 15:20:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_specialized_instruction): DRY and replace chain
+ of if-else with switch for special instructions. based on a
+ patch by Vasfed. https://github.com/ruby/ruby/pull/105
+
+Mon Mar 19 15:05:54 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/test_pty.rb: same as r29280, skip tests when PTY allocation
+ failed (that's not our fault).
+
+Sun Mar 18 23:21:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (aligned_free): fix condition for free. memalign() and
+ posix_memalign() are not defined together normally.
+
+Sun Mar 18 18:31:45 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gc.c (aligned_malloc, aligned_free): added fallback implementations
+ for platforms like OSX Leopard.
+
+Sun Mar 18 17:17:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): estimate result bit size more precisely.
+ [ruby-core:30735][Feature #3429]
+
+Sun Mar 18 17:17:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (free_method_entry_i): method entry may be in
+ unlinked_method_entry_list. [ruby-core:43383][Bug #6171]
+
+Sun Mar 18 15:27:31 2012 Tanaka Akira <akr@fsij.org>
+
+ * compile.c: typo fix by Run Paint Run Run.
+ [ruby-core:28368] [Bug #2824]
+
+Sun Mar 18 10:01:02 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * lib/profiler.rb: support calling singleton methods of
+ an instance of BasicObject.
+
+Sat Mar 17 06:56:58 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c: Fix indentation of Class#inherited example.
+
+Sat Mar 17 01:46:05 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * string.c (trnext): fix bug with string ending with '\\'.
+ [ruby-dev:45374][Bug #6160]
+
+ * test/ruby/test_string.rb (TestString#test_delete): test for
+ above.
+
+Fri Mar 16 20:06:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (trnext): should advance char-wise.
+ [ruby-core:43335][Bug #6156]
+
+Fri Mar 16 17:42:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (block_append_gen): fix unreachable warning line number.
+ should warn at the code, not jump.
+
+Fri Mar 16 17:33:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_take): allocate buffer array before iteration, as well
+ as enum_first did.
+
+ * enum.c (enum_first): remove duplication.
+
+Fri Mar 16 14:43:18 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * load.c (ruby_init_ext): don't free the given pointer itself.
+ It is not guaranteed even that the pointer is on heap.
+
+Fri Mar 16 14:37:57 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (rb_mod_module_eval): fix the documentation of
+ class_eval to mention class variable lookup. [ruby-core:40649]
+ [Bug #5544]
+
+Fri Mar 16 14:27:11 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (rb_mod_module_eval): fix the documentation of
+ class_eval to mention constant lookup. [ruby-core:41718]
+ [Bug #5777]
+
+Fri Mar 16 14:10:45 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (initialize): raise Net::IMAP::Error when the
+ connection is closed without a greeting response.
+ [ruby-core:40938] [Bug #5616]
+
+Fri Mar 16 13:50:12 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (rfc822_text): ignore [] after RFC822.
+ [ruby-core:40945] [Bug #5620]
+
+Fri Mar 16 12:00:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (argument_error): use line number at the beginning
+ of lambda, not the first code of its body.
+ [ruby-core:43314][Bug #6151]
+
+ * iseq.c (rb_iseq_first_lineno): constified.
+
+Fri Mar 16 11:20:07 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_take): don't enumerate an extra value.
+ [ruby-dev:45370] [Bug #6152]
+
+Fri Mar 16 06:30:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (lazy_zip_func): variadic argument needs explicit cast
+ on the platforms where VALUE is longer than int.
+
+ * enumerator.c (lazy_init_iterator): no need to check overflow twice.
+
+Fri Mar 16 05:47:09 2012 Eric Hodel <drbrain@segment7.net>
+
+ * enumerator.c (lazy_init_iterator): Fix type error (int vs long).
+
+Thu Mar 15 23:13:36 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enum.c (rb_enum_values_pack): rename from enum_values_pack, and
+ remove static.
+
+ * enumerator.c (lazy_init_iterator, lazy_init_yielder,
+ lazy_select_func, lazy_reject_func, lazy_grep_func): handle
+ multiple values correctly.
+
+ * enumerator.c (lazy_grep): change the behavior when a block is
+ given, to be consistent with Enumerable#grep.
+
+Thu Mar 15 19:12:31 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_zip): rescue StopIteration returned by
+ Enumerator#next.
+
+Thu Mar 15 18:19:53 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_zip, lazy_cycle): Enumerator::Lazy#{zip,cycle}
+ should be eager when a block is given, to be consistent with
+ Enumerable#{zip,cycle}.
+
+Thu Mar 15 17:45:27 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (InitVM_Enumerator): renamed Enumerable::Lazy to
+ Enumerator::Lazy.
+
+Thu Mar 15 16:37:38 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (enumerable_lazy): added cycle to the documentation.
+
+Thu Mar 15 15:37:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): fix warning line number.
+
+Thu Mar 15 15:19:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (lazy_cycle): check argument number overflow before
+ creating temporary array.
+
+Thu Mar 15 15:04:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod): no need to check same digit for hexdigit
+ twice. [ruby-dev:45363][Bug #6146]
+
+ * parse.y (sym_check_asciionly): check ascii compatibility before
+ scanning for code range.
+
+ * parse.y (intern_str): set to us-ascii if ascii only.
+ [ruby-dev:45363][Bug #6146]
+
+ * file.c (ruby_enc_find_basename): allow NULL as alllen.
+ [ruby-dev:45363][Bug #6146]
+
+Thu Mar 15 14:49:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_conv_enc_opts): default to original encoding.
+
+Thu Mar 15 13:47:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (env_str_new, rb_f_getenv, env_fetch): use rb_str_conv_enc()
+ instead of rb_str_encode() to simplify the code.
+
+Thu Mar 15 12:44:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_ugetenv): new API to
+ accept and to return UTF-8 strings.
+
+ * win32/win32.c (rb_w32_getenv): follow above change.
+
+ * win32/win32.c (rb_w32_get_environ): returns UTF-8 environment area.
+
+ * hash.c (env_str_new, rb_f_getenv, env_fetch): follow above changes.
+ [Bug #5570] [ruby-core:40737]
+
+Thu Mar 15 10:57:27 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_cycle): add Enumerable::Lazy#cycle.
+
+Thu Mar 15 10:31:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_arity.rb (TestArity#err_mess): use assert_raise.
+
+Thu Mar 15 07:03:52 2012 Eric Hodel <drbrain@segment7.net>
+
+ * vm_eval.c (check_funcall): Raise ArgumentError if respond_to?
+ requires more than three arguments. [Bug #6000]
+
+ * test/ruby/test_object.rb (class TestObject): Test for respond_to?
+ requiring more than three arguments.
+
+Thu Mar 15 06:08:06 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * include/ruby/intern.h: Add rb_check_arity, rb_error_arity [#6085]
+
+ * array.c: Use rb_check_arity / rb_error_arity
+
+ * class.c: ditto
+
+ * enumerator.c: ditto
+
+ * eval.c: ditto
+
+ * file.c: ditto
+
+ * hash.c: ditto
+
+ * numeric.c: ditto
+
+ * proc.c: ditto
+
+ * process.c: ditto
+
+ * random.c: ditto
+
+ * re.c: ditto
+
+ * signal.c: ditto
+
+ * string.c: ditto
+
+ * struct.c: ditto
+
+ * transcode.c: ditto
+
+ * vm_eval.c: ditto
+
+ * vm_insnhelper.c: ditto & implementation of rb_error_arity
+
+ * test/ruby/test_arity.rb: tests for above
+
+Thu Mar 15 06:08:05 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * vm_insnhelper.c: improve number of arguments error in case of
+ optional parameters (issue #6085)
+
+ * include/ruby/intern.h: define UNLIMITED_ARGUMENTS
+
+ * test/ruby/test_arity.rb: test for above
+
+Thu Mar 15 00:58:04 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (enumerable_lazy): fix the documentation of
+ Enumerable#lazy.
+
+Wed Mar 14 22:01:06 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_init_iterator): break when Qundef is returned
+ to make obj.drop(3).take(2) work properly.
+
+ * enumerator.c (lazy_take_while): add Enumerable::Lazy#take_while.
+
+ * enumerator.c (lazy_drop): add Enumerable::Lazy#drop.
+
+ * enumerator.c (lazy_drop_while): add Enumerable::Lazy#drop_while.
+
+ * enumerator.c (InitVM_Enumerator): add Enumerable::Lazy#force as an
+ alias of to_a.
+
+Wed Mar 14 19:28:40 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_take): add Enumerable::Lazy#take.
+
+Wed Mar 14 18:40:36 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c: use long for array indices.
+
+Wed Mar 14 18:25:18 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c: moved the comment of StopIteration.
+
+Wed Mar 14 17:55:29 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (flodivmod): must go through the same pass if HAVE_FMOD or
+ not. this is a bugfix of r35013.
+
+Wed Mar 14 16:41:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/test_tmpdir.rb (TestTmpdir#test_world_writable): skip on Windows.
+
+Wed Mar 14 15:09:23 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c: fix flodivmod for cornercases [Bug #6044]
+ add ruby_float_mod
+
+ * insns.def (opt_mod): use ruby_float_mod
+
+ * internal.h: declare ruby_float_mod
+
+ * test/ruby/test_float.rb: tests for above
+
+ * test/ruby/envutil.rb: create helper assert_is_minus_zero
+
+Wed Mar 14 10:44:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (lazy_grep_func): should use === instead of =~, as
+ well as Enumerable#grep
+
+Wed Mar 14 08:15:54 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_flat_map_func): use each for non-Array objects.
+
+Wed Mar 14 08:06:35 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_zip): add Enumerable::Lazy#zip.
+
+ * enumerator.c (lazy_lazy): just returns self.
+
+Wed Mar 14 07:48:36 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (datetime_s_now): [ruby-core:43256].
+
+Tue Mar 13 22:00:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_arguments): keyword rest arg without keyword args.
+
+ * node.c (dump_node): dump kw_rest_arg too.
+
+ * parse.y (block_param, f_arg): more kwrest patterns.
+ [ruby-core:42455][Bug #5989]
+
+ * parse.y (new_args_gen): no extra kw_rest_arg if no keyword rest arg.
+
+Tue Mar 13 15:17:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (block_param, f_args): add rules for the case arguments
+ begin with kwrest. [ruby-core:42455][Bug #5989]
+
+Tue Mar 13 12:37:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_encoding_set): always warn if external encoding and internal
+ encoding are identical. [ruby-core:40727] [Bug #5568]
+
+Tue Mar 13 12:37:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c: add ObjectSpace::WeakMap. [ruby-dev:44565][Bug #5350]
+
+ * lib/weakref.rb: use WeakMap instead of _id2ref.
+
+Tue Mar 13 10:59:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (prepare): skip if basedir is not defined.
+ [ruby-core:39135][Bug #5238]
+
+ * tool/rbinstall.rb (CONFIG.[]): check for mandatory
+ configurations.
+
+Tue Mar 13 00:09:18 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (enumerable_lazy): added documentation.
+
+Mon Mar 12 20:19:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/tmpdir.rb (Dir::tmpdir): test the current directory suitable for
+ temporary directory.
+
+Mon Mar 12 20:08:16 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/fileutils.rb (fu_have_symlink?): specify TypeError for rescue
+ clause.
+
+Mon Mar 12 19:23:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_find_encoding): new function find encoding from
+ arbitrary object as a pointer to rb_encoding, and return NULL if
+ not found.
+
+ * io.c (io_encoding_set): just warn unsupported encodings, but not
+ exception. [ruby-core:40726] [Bug #5567]
+
+Mon Mar 12 19:03:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (Init_eval_method): respond_to? and
+ respond_to_missing? are public.
+
+Mon Mar 12 14:56:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (NEW_YIELD), parse.y (new_yield_gen): array-values flags
+ has been already obsolete. patch by Thomas Enebo.
+ [ruby-core:41929][Bug #5847]
+
+Mon Mar 12 12:44:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (Init_eval_method): copy basic methods to Exception.
+ [ruby-core:40287][Bug #5473]
+
+Mon Mar 12 10:13:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_jump.c (rb_exec_end_proc): remember the latest exit status.
+ [ruby-core:43173][Bug #5218]
+
+Mon Mar 12 07:33:12 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/tmpdir.rb: update document for changing
+ FileUtils.remove_entry_secure to FileUtils.remove_entry.
+
+ * NEWS: add incompatibility note for lib/tmpdir.rb.
+
+Mon Mar 12 07:19:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (Dir.tmpdir): should not use world-writable but
+ non-sticky directory.
+
+ * lib/tmpdir.rb (Dir.mktmpdir): check the parent directory.
+
+Mon Mar 12 07:04:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (Init_Random): removed rb_Random_DEFAULT and register as
+ mark-object instead of global variable.
+
+Mon Mar 12 07:03:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_s_rand): ensure default PRNG is re-initialized
+ after fork. patched by Eric Wong. [ruby-core:41209][Bug #5661]
+
+Sun Mar 11 23:57:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_unpack): when unpack('M') occurs an illegal byte
+ sequence, output the "=" character and the following character in
+ the decoded data without any transformation.
+ [ruby-dev:44875] [Bug #5635]
+
+Sun Mar 11 22:32:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Merge 164a75c8bd2007d32c4d7665d53140d8fc126dcd.
+ [ruby-core:41917] [Bug #5846]
+
+Sun Mar 11 17:10:04 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Put error message into STDERR if failed to launch
+ worker (job) process. [ruby-dev:44802] [Bug #5577]
+
+ * lib/test/unit/parallel.rb: If failed to increment_io, exit with code
+ 2. [ruby-dev:44802] [Bug #5577]
+
+Sun Mar 11 15:46:45 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * io.c: fix rdoc of `IO.binwrite` to show same as `IO.write` except
+ it opens file with mode "wb:ASCII-8BIT". [Bug #5782] [ruby-core:42592]
+
+Sat Mar 10 23:52:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c: pack tables also generic keys. patched by Sokolov Yura at
+ https://github.com/ruby/ruby/pull/84
+
+ * st.c: add st_foreach_check for fixing iteration over packed table
+ and st_delete_safe. patched by Sokolov Yura at
+ https://github.com/ruby/ruby/pull/84
+
+ * st.c: fix packed num_entries on delete_safe. patched by Sokolov
+ Yura at https://github.com/ruby/ruby/pull/84
+
+Fri Mar 9 14:29:32 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_flat_map): add Enumerable::Lazy#flat_map.
+
+Fri Mar 9 06:29:22 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb (load, parse): stop parsing or loading after
+ the first document has been parsed.
+
+ * test/psych/test_stream.rb: pertinent tests.
+
+Fri Mar 9 06:17:05 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb (parse_stream, load_stream): if a block is
+ given, documents will be yielded to the block as they are parsed.
+ [ruby-core:42404] [Bug #5978]
+
+ * ext/psych/lib/psych/handlers/document_stream.rb: add a handler that
+ yields documents as they are parsed
+
+ * test/psych/test_stream.rb: corresponding tests.
+
+Fri Mar 9 00:35:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (lazy_initialize, enumerable_lazy): no additional
+ arguments.
+
+Fri Mar 9 00:30:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c: add Enumerable#lazy. based on the patch by
+ Innokenty Mikhailov at <https://github.com/ruby/ruby/pull/101>
+ [ruby-core:37164] [Feature #4890]
+
+Fri Mar 9 00:25:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_each, generator_each): pass arguments to
+ the block with yielder.
+
+Fri Mar 9 00:25:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_cat): new function to concat objects into array.
+
+Thu Mar 8 16:44:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rb_numtable_entry): update for recent refactoring of
+ st_table.
+
+Wed Mar 7 22:41:50 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/xmlrpc/client.rb (module XMLRPC): fix typo.
+
+ * test/xmlrpc/test_client.rb (test_async_call): add test for
+ XMLRPC::Client#call_async to check above fix.
+
+Wed Mar 7 16:30:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_load_fail): should honor encoding.
+
+ * load.c (load_failed): ditto.
+
+Wed Mar 7 12:26:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_load_fail): use path as a string, not char*.
+
+ * internal.h: (rb_load_fail): moved from ruby/intern.h.
+
+ * ruby.c (load_file_internal): fname cannot be NULL.
+
+Wed Mar 7 08:32:43 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * error.c (rb_loaderror_with_path): Adding the missing file as an
+ instance variable to the LoadError exception.
+ [ruby-core:39079]
+
+ * load.c: call rb_loaderror_with_path so that the missing path is
+ added to the exception.
+
+ * ruby.c: call rb_loaderror rather than raising our own LoadError
+ exception.
+
+ * include/ruby/intern.h: add declaration for rb_loaderror_with_path.
+
+ * test/ruby/test_require.rb: add supporting test for LoadError#path
+ method.
+
+Wed Mar 7 08:28:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/parser.rb: support i8 types. Thanks Stas Kelvich!
+ [ruby-core:29246] [Feature #3090]
+
+ * test/xmlrpc/test_client.rb: supporting test
+
+Wed Mar 7 07:43:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb: assume servers that do not send a Content-Type
+ header are sending 'text/xml'. Thanks Nathan Leavitt!
+ [ruby-core:41204] [Bug #5660]
+
+ * test/xmlrpc/test_client.rb: supporting test
+
+Wed Mar 7 07:39:28 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/xmlrpc/test_client.rb: adding a test for performing an XMLRPC
+ call.
+ * test/xmlrpc/data/blog.xml: supporting XML document for the response.
+
+Tue Mar 6 16:24:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string): escape simple regexp meta
+ character terminators.
+
+Tue Mar 6 10:11:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (set_rawmode): clear ECHOE and ECHOK
+ bits too.
+
+ * ext/io/console/console.c (echo_p): ignore ECHOE and ECHOK bits.
+ [ruby-dev:45309] [Bug #6116]
+
+ * ext/io/console/console.c (console_raw): fix rdoc.
+
+ * ext/io/console/console.c (console_set_echo): mentioned about
+ platform dependency.
+
+Tue Mar 6 07:18:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb: switch net/http post2 calls to modern
+ `request_post` methods.
+
+Tue Mar 6 02:31:20 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/core_ext.rb: only extend Kernel if IRB is loaded
+ in order to stop method pollution.
+
+Tue Mar 6 01:34:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (block_call): rules for block_call after block_call.
+ based on a patch by pasberth https://github.com/ruby/ruby/pull/102
+ [ruby-dev:45308][Bug #6115]
+
+Tue Mar 6 01:24:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (block_command, block_call): simplified rules.
+
+Mon Mar 5 18:28:35 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_source): fix typo.
+ * test/ruby/test_regexp.rb (TestRegexp#test_equal): ditto.
+
+Mon Mar 5 17:11:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/lib/syck/rubytypes.rb (Exception.yaml_new): fix bug
+ that causes YAML serialization problem for Exception.
+ Exception#initialize doesn't use visible instance variable for
+ the exception message, so call the method with the message.
+ patched by Jingwen Owen Ou <jingweno AT gmail.com>.
+ http://github.com/ruby/ruby/pull/41
+
+Mon Mar 5 16:50:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_sleep.rb (TestSleep#test_sleep_5sec): syntax error.
+
+ * test/ruby/test_sleep.rb (TestSleep#test_sleep_5sec): call uname
+ only on linux because it's a workaround for linux only.
+
+Mon Mar 5 12:44:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (unpack_entries): chain entries directly. based on a patch
+ by Sokolov Yura <funny.falcon AT gmail.com>.
+
+ * st.c (unpack_entries): use union instead of casted pointer.
+ patched by Sokolov Yura <funny.falcon AT gmail.com>.
+
+ * st.c: use PACKED_ENT and FIND_ENTRY. patched by Sokolov
+ Yura <funny.falcon AT gmail.com>.
+
+ * st.c (unpack_entries): reallocate bins if packed array size
+ is not same as initial bins size. based on a patch by
+ Sokolov Yura <funny.falcon AT gmail.com>.
+
+Mon Mar 5 11:51:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: remove description about
+ BigMath#log. patched by Sho Hashimoto [ruby-dev:45307] [Bug #6112]
+
+ * string.c (str_byteslice): fix typo.
+
+Sun Mar 4 23:21:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string): regexp engine doesn't need
+ terminators to be escaped. [ruby-core:40364][Bug #5484]
+
+Sat Mar 3 22:51:46 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_run_exec_options_err): chdir at last to interpret
+ relative pathnames from the current directory of the parent process.
+
+Sat Mar 3 12:20:44 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: reassigned some variables.
+
+Sat Mar 3 12:12:16 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_{parse,strptime}.c: [ruby-dev:45303].
+
+Sat Mar 3 10:09:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb (initialize): net/http defaults to 1_2 in 1.8+,
+ so we can safely remove the call to enable it.
+
+Sat Mar 3 08:42:25 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb (new2): use URI for uri parsing.
+ * test/xmlrpc/test_client.rb: test that query params are passed to the
+ client constructor.
+
+Sat Mar 3 08:20:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb (new2): raises an ArgumentError on bad
+ arguments.
+ * test/xmlrpc/test_client.rb: tests for bad uris
+
+Sat Mar 3 08:08:11 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb (new2): fix custom port specification when an
+ SSL uri is used.
+ * test/xmlrpc/test_client.rb: tests for XMLRPC::Client.new2
+
+Sat Mar 3 08:03:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (mktime_do): use ISDIGIT().
+ [ruby-core:43060] [Bug #6108]
+
+ * ext/syck/token.c (sycklex_yaml_utf8): cast as unsigned char.
+ [ruby-core:43060] [Bug #6108]
+
+Sat Mar 3 06:57:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_pc): make configurable. [Bug #6051]
+
+Fri Mar 2 17:49:03 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * .travis.yml (branches): Enable TravisCI for ruby_1_9_3.
+
+Fri Mar 2 17:13:33 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/ruby/test_array.rb (test_combination2): Make the test case for
+ [ruby-core:29240] more descriptive.
+ cf. http://bugs.jruby.org/6518
+
+Fri Mar 2 16:37:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): use wcscasecmp().
+
+Fri Mar 2 16:36:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (native_cond_timeout): cast explicitly to suppress
+ a warning.
+
+Fri Mar 2 16:35:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): cmd is no longer used if fork is available.
+
+Thu Mar 1 16:13:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (rb_file_const, rb_file_load_ok): moved functions for
+ internal use only.
+
+Thu Mar 1 15:40:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/makedirs.bat: new command to make intermediate
+ directories, and not to report any errors if the directory
+ already exists.
+
+ * win32/Makefile.sub (MAKEDIRS): enable command extensions.
+
+Thu Mar 1 01:25:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (is_onechar_cclass): optimize character class
+ Merge Onigmo 27278c12e6674043cc8affca6507e20e119a86ee.
+
+ * regparse.c (is_onechar_cclass): [bug] unexpected match occurs when a
+ char class contains no char
+
+ * enc/unicode.c (init_case_fold_table): define the sizes of case
+ folding tables in casefold.h
+
+Wed Feb 29 16:11:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (MAKEDIRS): use mkdir of cmd.exe instead of ruby.
+ [Bug #6103] [ruby-core:43012]
+
+ * win32/README.win32: added a notice about command extension of cmd.exe.
+
+Wed Feb 29 15:39:39 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_readpartial_locktmp): skip on
+ windows because of the platform restriction.
+
+Wed Feb 29 15:38:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/memory_status.rb (Memory): syntax error.
+
+Wed Feb 29 13:06:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/memory_status.rb: use /proc/self/status if it is in
+ the expected format.
+
+Wed Feb 29 06:14:51 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: reverted r34825.
+
+Tue Feb 28 23:20:01 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * Makefile.in (PLATFORM_DIR): add a variable for `win32` directory.
+ * Makefile.in (clean-platform): add new target.
+ It cleans `win32` directory.
+
+ * common.mk (clean): add a dependency for `win32` directory.
+ * common.mk (distclean): ditto.
+ * common.mk (distclean-platform): add new target.
+ It cleans `win32` directory.
+ * common.mk ($(PLATFORM_D)): add new target to make `win32` directory.
+ * common.mk (win32/win32.$(OBJEXT)): move win32.o into `win32`
+ directory.
+ * common.mk (win32/file.$(OBJEXT)): add new target for win32/file.c.
+
+ * configure.in: move win32.o into `win32` directory and add
+ win32/file.o to MISSING.
+
+ * file.c (file_load_ok, rb_file_load_ok): replace static
+ file_load_ok() with public rb_file_load_ok().
+ It's to link Windows implementation in win32/file.c.
+ * file.c (rb_find_file_ext_safe): ditto.
+ * file.c (rb_find_file_safe): ditto.
+
+ * win32/file.c (rb_file_load_ok): new file. Add Windows specific
+ optimized implementation of rb_file_load_ok(). We created a
+ separated file to avoid too many #ifdef macro which is unreadable.
+
+ * win32/Makefile.sub (PLATFORM_DIR): add a variable for `win32`
+ directory.
+ * win32/Makefile.sub (MISSING): move win32.obj into `win32`
+ directory and add win32/file.obj to MISSING.
+ * win32/Makefile.sub (MAKEDIRS): replace MINIRUBY with BASERUBY.
+ It's because miniruby doesn't exist when making `win32` directory.
+ * win32/Makefile.sub (clean-platform): add new target to clean `win32`
+ directory.
+ * win32/Makefile.sub ({$(srcdir)}.c{}.obj): make it not match
+ win32/file.c to build properly.
+ * win32/Makefile.sub (win32/win32.$(OBJEXT)): move win32.obj into
+ `win32` directory.
+
+ Patch created with Luis Lavena.
+ [ruby-core:42480] [Feature #5999]
+
+Tue Feb 28 20:27:25 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:42998]
+
+Tue Feb 28 18:47:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_binwrite, rb_io_syswrite): use shared frozen source
+ strings.
+
+ * io.c (io_fread, io_getpartial, rb_io_sysread): set buffer size
+ after check if readable, which can cause thread switch.
+ [ruby-dev:45297][Bug #6099]
+
+Tue Feb 28 17:16:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/time.rb (Time#xmlschema): use strftime specifiers instead of
+ fractional exponential calculation which yields undesirable
+ result. [ruby-core:42997][Bug #6100]
+
+Tue Feb 28 14:15:29 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/protocol.rb: Add OpenTimeout subclass of Timeout::Error
+ * lib/net/pop.rb: Modernize Timeout usage. Patch by Eric Wong.
+ Use Net::OpenTimeout instead of Timeout::Error. [Bug #5765]
+ * lib/net/http.rb: ditto
+ * lib/net/smtp.rb: ditto
+ * lib/net/telnet.rb: ditto
+
+Tue Feb 28 13:51:12 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Retry HTTP requests for additional network errors.
+ Introduce OpenTimeout subclass of Timeout::Error. [Bug #6001]
+ * test/net/http/test_http.rb: Reduce timeout to 0.01s for faster test
+ * test/net/http/test_https.rb: ditto
+
+Tue Feb 28 11:44:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (debugflags): check if -ggdb is accepted.
+ [ruby-core:42875][Bug #6080]
+
+Tue Feb 28 10:28:51 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: default open YAML files with utf8 external
+ encoding. [ruby-core:42967]
+ * test/psych/test_tainted.rb: ditto
+
+Mon Feb 27 23:46:09 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (opt_bv_decl): allow newline at the end. [ruby-dev:45292]
+
+Mon Feb 27 20:43:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_set_pos): add rdoc about textmode.
+
+ * test/ruby/test_io.rb (TestIO#test_setpos): use binmode.
+
+Mon Feb 27 17:00:15 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (rb_str_crypt): Update rdoc and state that this
+ function is system dependent. Reviewed by nobu, thanks to
+ @takai.
+
+Mon Feb 27 17:03:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): since methods
+ can be overridden, so should not make an assumption on the type
+ of results. [ruby-core:42969][Bug #6093]
+
+Mon Feb 27 10:54:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_cppflags, try_cflags, try_ldflags): replace the
+ target flags if the given flag is accepted.
+
+Mon Feb 27 10:53:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rubygems/test_gem_specification.rb (test_self_from_yaml_syck_default_key_bug):
+ ignore the test for too old versions.
+
+Mon Feb 27 10:53:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#puke): skips with no
+ messages should be trivial.
+
+Mon Feb 27 10:50:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c, process.c, time.c, ext: use rb_sys_fail_str instead of
+ rb_sys_fail.
+
+Mon Feb 27 10:48:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: suppress useless deprecation warnings
+ from OpenSSL added by Apple.
+
+Sun Feb 26 23:29:49 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (add_code_range_to_buf0): wrong condition of duplicated
+ warnings.
+
+Sun Feb 26 11:26:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): call on special object instead of
+ self. since stabby lambda is a syntax, so it should not be
+ affected by the context. [ruby-core:42349][Bug #5966]
+
+ * insns.def (send): no special deal for FCALL. self should be put
+ on TOS instead.
+
+Sun Feb 26 05:35:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (report_bug): use buf and snprintf to avoid consuming stack.
+ [ruby-dev:45272] [Bug #6058]
+
+Sat Feb 25 17:41:19 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb (headers): try ambiguous headers at last.
+
+Sat Feb 25 17:07:15 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/fileutils.rb: use chomp(?/) instead of sub to optimize and avoid
+ to regexping invalid string.
+
+Sat Feb 25 16:18:24 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * complex.c (nucomp_marshal_load): raise error on invalid data.
+ reported by John Firebaugh [ruby-core:42860] [Bug #6076]
+
+Sat Feb 25 14:46:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl.c (Init_dl): support intrinsic types, size_t, ptrdiff_t
+ and intptr_t. [ruby-core:42460][Feature #5992]
+
+ * ext/fiddle/fiddle.c (Init_fiddle): ditto.
+
+ * ext/dl/lib/dl/cparser.rb (DL::CParser#parse_ctype): ditto.
+
+Sat Feb 25 11:08:28 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c (Init_curses): use rb_define_const once for
+ Curses::VERSION.
+
+ * ext/dbm/dbm.c (Init_dbm): ditto for DBM::VERSION.
+
+Sat Feb 25 10:34:22 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c (Init_curses): make Curses::VERSION
+ understandable without context.
+
+ * ext/dbm/dbm.c (Init_dbm): ditto for DBM::VERSION.
+
+Sat Feb 25 07:53:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string): insert a backslash only if
+ quoted by single quotes. [ruby-dev:45281] [Bug #6069]
+
+Sat Feb 25 07:53:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_inspect), io.c (rb_io_inspect): keep encoding of path.
+ [Bug #6072]
+
+Sat Feb 25 07:53:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_initialize): keep path in original encoding.
+
+ * error.c (syserr_initialize): prefer the encoding of message over
+ locale. [ruby-dev:45279][Bug #6071]
+
+Sat Feb 25 06:55:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (utime_internal): fix a variable missed to replace.
+ [ruby-core:42864] [Bug #6077]
+
+Fri Feb 24 18:21:55 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/zlib/test_zlib.rb (TestZlibGzipReader#test_encoding): Add
+ encoding testcases for GzipReader#read. read() emits
+ Encoding.default_external in contrast to read(size) emits BINARY.
+ See also: http://bugs.jruby.org/6208
+
+Fri Feb 24 17:56:39 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/ruby/test_literal.rb (TestRubyLiteral#test_special_const):
+ test for https://bugs.php.net/bug.php?id=61095
+
+Fri Feb 24 16:48:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c, file.c, io.c (rb_sys_fail_path): use rb_sys_fail_str.
+
+ * error.c: new functions to deal exceptions with string instances.
+
+ * dir.c, file.c, io.c: use rb_sys_fail_path.
+
+Fri Feb 24 15:49:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (__builtin_unreachable): check for clang.
+ [ruby-core:42849]
+
+ * include/ruby/ruby.h (UNREACHABLE): fallback definition.
+
+Fri Feb 24 13:54:33 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: prevent a memory leak by protecting calls to
+ handler callbacks.
+ * test/psych/test_parser.rb: test to demonstrate leak.
+
+Fri Feb 24 12:07:34 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/net/http.rb: Fix documentation. Patched from Florian Mhun
+ via http://github.com/ruby/ruby/pull/96
+
+Fri Feb 24 11:48:07 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * string.c (rb_str_prepend): Fix documentation for String#prepend.
+ Patched from Franck Verrot via http://github.com/ruby/ruby/pull/98
+ and Andrew Horsman via http://github.com/ruby/ruby/pull/55
+
+Fri Feb 24 10:08:33 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb (Net::HTTP#transport_request): Fix infinite loop
+ upon EOFError or Errno::ECONNRESET where count is reset to 0.
+ * test/net/http/test_http.rb (class TestNetHTTPKeepAlive): Test for
+ above.
+
+Fri Feb 24 09:05:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * complex.c (Init_Complex): Document Complex::I. Patch by Sylvain
+ Daubert. [Feature #5623]
+
+Fri Feb 24 08:52:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string, parser_yylex): insert a backslash
+ if the next character is non-ascii. [ruby-dev:45278] [Bug #6069]
+
+Fri Feb 24 08:13:20 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/profiler.rb: Add Profiler documentation by Gonzalo Rodriguez.
+ [Bug #5816]
+
+Fri Feb 24 08:08:38 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: set parser encoding based on the YAML input
+ rather than user configuration.
+ * test/psych/test_encoding.rb: corresponding tests.
+ * test/psych/test_parser.rb: ditto
+ * test/psych/test_tainted.rb: ditto
+
+Fri Feb 24 08:02:52 2012 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c (Init_Hash): Add section on how objects are used as Hash keys
+ and how to use custom classes as Hash keys.
+
+Fri Feb 24 07:36:11 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (rb_obj_eql): Improve equality documentation by adding an
+ example of equal? vs == and recommending eql? be aliased to == when
+ overridden.
+
+Fri Feb 24 07:21:15 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (rb_obj_hash): Added note that the hash value is not
+ deterministic on Marc-Andre's suggestion. Expanded description of
+ the purpose of the hash method. [Bug #6068]
+
+Thu Feb 23 23:01:21 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: unused macro removed.
+
+Thu Feb 23 22:26:53 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/test_curses.rb: new file.
+
+Thu Feb 23 19:57:56 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/rain.rb: trap SIGHUP, SIGINT, SIGQUIT and SIGTERM only.
+
+Thu Feb 23 19:56:48 2012 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (sig_trap): show signal name on error.
+
+Thu Feb 23 12:21:48 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: use DBM_SUFFIX only to detect header of
+ Berkeley DB.
+
+Thu Feb 23 10:00:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * io.c (rb_io_f_sync): Fix double-negative typo. [ruby-trunk - #5837]
+
+Thu Feb 23 09:57:21 2012 Eric Hodel <drbrain@segment7.net>
+
+ * load.c (rb_f_require): Add note to require for scope of items in the
+ loaded file. [ruby-trunk - #5910]
+
+Thu Feb 23 03:58:08 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/ostruct.rb (delete_field): Bug fix so previous value is
+ returned. Patch by Nick Recobra [Bug #6063]
+
+Thu Feb 23 02:33:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): fail only if conflicting
+ text/binary modes given explicitly. [ruby-dev:45268][Bug #6055]
+
+Wed Feb 22 23:27:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/iconv/test_option.rb: enabled. [ruby-core:42802][Bug #6061]
+
+Wed Feb 22 21:45:56 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c: use defined() to suppress a warning.
+
+Wed Feb 22 21:44:29 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: refactored.
+
+Wed Feb 22 20:42:28 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: try to distinguish curses_version is a
+ function or variable.
+
+ * ext/curses/curses.c (Init_curses): refine Curses::VERSION.
+
+Wed Feb 22 19:47:03 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: show the chosen header and library.
+
+Wed Feb 22 19:22:31 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * reverted 34739 for test/date.
+
+Wed Feb 22 19:08:55 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: refactored.
+
+Wed Feb 22 18:44:41 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (setup_options): add option "--retry" as opposite
+ for "--no-retry"
+
+Wed Feb 22 18:34:02 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (setup_options): add option "--show-skip" to
+ cancel "--hide-skip" (-q)
+
+Wed Feb 22 17:36:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_s_foreach): argument check before making Enumerator.
+ [ruby-dev:31525]
+
+Wed Feb 22 17:07:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_s_foreach): return enumerator including keyword
+ arguments. [ruby-dev:45267][Bug #6054]
+
+Wed Feb 22 12:15:16 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: allow llvm-gcc because it work fine with r34278.
+
+Wed Feb 22 10:57:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (fetch_token): don't use // comment.
+
+Wed Feb 22 10:32:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/test_framework.rb: try CoreFoundation framework, than
+ Cocoa which is dependent on QuickTime SDK which has separated
+ since Xcode 4.3.
+
+Wed Feb 22 10:18:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (test-all, test-ruby): more dependencies.
+
+Wed Feb 22 06:48:55 2012 Eric Hodel <drbrain@segment7.net>
+
+ * file.c (rb_f_test): Fix formatting of Kernel#test rdoc.
+
+Wed Feb 22 06:12:15 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: check DBM_SUFFIX for Mac OS X.
+ Its ndbm.h doesn't include db.h.
+
+Wed Feb 22 06:02:42 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c (fdbm_initialize): disable Berkeley DB error messages.
+
+ * ext/dbm/extconf.rb: check DBC type for above.
+
+ [ruby-dev:45269]
+
+Tue Feb 21 20:23:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_any_hash): treat Qundef like as other special constants.
+
+ * hash.c (hash_foreach_iter): fix signature.
+
+Tue Feb 21 19:39:34 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c (Init_curses): use curses_version() for
+ Curses::VERSION.
+
+Tue Feb 21 18:21:25 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c : remove gc_clear_mark_on_sweep_slots() and use
+ rest_sweep() instead of it, because some dead objects might be
+ marked in next the mark phase by false pointers.
+ [ruby-core:42672]
+
+Tue Feb 21 16:08:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_hash_proc): get wrapped pointer properly. [Bug #6048]
+
+Tue Feb 21 14:41:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/ruby.pc.in: added rubylibprefix, {rubylib,vendor,site}dir
+ and {ruby,vendor,site}archdir. [ruby-core:42766][Feature #6052]
+
+Tue Feb 21 09:13:25 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c (method_hash, proc_hash): Fix {Unbound}Method#hash
+ [Bug #6048]. Isolate hash computation for proc
+
+ * internal.h: Declaration for above
+
+ * vm_method.c (rb_method_definition_hash): Computation for
+ hash part of a method definition
+
+ * method.h: Declaration for above
+
+ * test/ruby/test_method.rb: Test for above
+
+Tue Feb 21 02:56:15 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_rewind): update the documentation.
+ fixed: #6053
+
+Mon Feb 20 23:38:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: ignore mktable.c because it's not encoding library.
+ [ruby-core:42760] [Bug #6049]
+
+Mon Feb 20 21:40:53 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: fold too long lines.
+
+Mon Feb 20 21:16:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * lib/fileutils.rb: revert a line modified accidentally at r34669.
+ This fixes mingw test errors in TestDir_M17N.
+ [ruby-core:42728] [Feature #4970]
+
+Mon Feb 20 21:09:27 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c (Init_curses): define Curses::VERSION.
+
+Mon Feb 20 21:08:00 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: restore $libs and $defs for each
+ header/library choice.
+
+Mon Feb 20 19:57:26 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: weaken header/library consistency check if db is
+ "ndbm". It seems several (possibly historical) distributions
+ provide libndbm. However the content of libndbm vary: Berkeley DB,
+ GDBM or even 4.3BSD NDBM. (Mandriva, Tru64 UNIX, OpenSuSE,
+ SCO OpenServer, ...)
+ "ndbm" is not searched automatically now (dblib doesn't contain it)
+ but configure --with-dbm-type=ndbm choose libndbm and ndbm.h.
+
+Mon Feb 20 19:15:57 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: refine variable names.
+
+Mon Feb 20 15:50:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check if -fstack-protector is really available.
+
+Sun Feb 19 23:43:38 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: show header and library found.
+
+Sun Feb 19 23:01:01 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c (Init_dbm): refine DBM::VERSION definition.
+
+ * ext/dbm/extconf.rb: provide RUBYDBM_GDBM_HEADER macro.
+
+Sun Feb 19 17:07:27 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb (test_dbmfile_suffix): check pag and dir is
+ empty for 4.3BSD ndbm.
+
+Sun Feb 19 03:00:30 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb (test_dbmfile_suffix): check magic numbers.
+
+Sun Feb 19 01:05:41 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: detect GDBM's ndbm.h by testing dbm_clearerr is
+ an empty macro.
+
+Sun Feb 19 00:25:55 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: don't choose 'dbm' if _GDB_H_ is defined which
+ is available since GDBM 1.9 because 'gdbm_compat' is appropriate
+ choice since GDBM 1.8.1.
+
+Sat Feb 18 23:27:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * random.c: remove a duplicated comment.
+
+Sat Feb 18 18:43:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb (dblib): prefer recent GDBM over older GDBM.
+ (have_declared_libvar): new function to check a declared variable
+ exists in a library.
+ (have_undeclared_libvar): renamed from renamed from have_libvar.
+ (headers.db_check2): check that GDBM version variable if GDBM header
+ is chosen.
+
+ * ext/dbm/dbm.c (Init_dbm): use HAVE_DECLARED_LIBVAR_GDBM_VERSION and
+ HAVE_UNDECLARED_LIBVAR_GDBM_VERSION macro.
+
+Sat Feb 18 13:53:01 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb (test_dbmfile_suffix): DBM::VERSION should
+ be Berkeley DB if foo.db is created by DBM.open.
+
+Sat Feb 18 13:40:37 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb (test_dbmfile_suffix): test dbm file suffix.
+
+Sat Feb 18 12:50:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c (DBM::VERSION): define it by detecting _GDBM_H_ or
+ _DBM_IOERR.
+
+Sat Feb 18 07:52:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb: don't use 1.9 feature on tools.
+
+Sat Feb 18 02:48:39 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/fileutils.rb: refactored FileUtil methods to use the
+ `define_command` API. Patch from 7rans <transfire@gmail.com>
+ * test/fileutils/test_dryrun.rb: corresponding test refactoring
+ * test/fileutils/test_nowrite.rb: ditto
+ * test/fileutils/test_verbose.rb: ditto
+
+Fri Feb 17 21:39:36 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: remove dbm.
+
+Fri Feb 17 21:18:39 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: refine header/library mismatch detection.
+ check only for ndbm.h except libc. check _GDBM_H_ for gdbm.
+ check _DBM_IOERR for the original ndbm.
+
+Fri Feb 17 20:30:44 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: don't check libdbm. It is not a ndbm
+ implementation. (libdbm in Version 7 Unix is database library
+ for single database per process.)
+
+Fri Feb 17 15:38:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Merge Onigmo-5.13.1. [ruby-dev:45057] [Feature #5820]
+ https://github.com/k-takata/Onigmo
+ cp reg{comp,enc,error,exec,parse,syntax}.c reg{enc,int,parse}.h
+ cp oniguruma.h
+ cp tool/enc-unicode.rb
+ cp -r enc/
+
+Fri Feb 17 15:20:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_each_slice): arrays to be yielded can be newly
+ created in the block.
+
+ * enum.c: move work variables to objects not to let called blocks
+ access stack area out of scope. [Bug #5801]
+
+Fri Feb 17 12:35:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: remove borders from the commit message which is used
+ when the commit doesn't change ChangeLog.
+
+Fri Feb 17 11:50:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (btest, btest-ruby, test-sample test-knownbugs)
+ (test-all, test-ruby): depend on prog.
+
+Fri Feb 17 09:56:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_header): log the content of header.
+
+Fri Feb 17 09:44:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb (import_ucm): don't use \h because the
+ script should work with ruby 1.8.
+
+ * tool/enc-unicode.rb: ditto.
+
+Fri Feb 17 07:33:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (id_lshift): use constant ID.
+
+Fri Feb 17 07:30:53 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: refactored to split too long conditions.
+
+Fri Feb 17 00:23:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb: fix skip condition for libgdbm 1.8.0 or prior.
+ reported by Bohuslav Kabrda.
+ [ruby-core:42685] [ruby-trunk - Bug #6036]
+
+Fri Feb 17 00:04:21 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: check _DB_H_ macro unavailable except
+ Berkeley DB library.
+
+Thu Feb 16 05:41:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (splatarray): make new array if flag is set.
+
+ * compile.c (iseq_compile_each): make new array with
+ splat. [ruby-core:21901][Feature #1125]
+
+Thu Feb 16 00:14:04 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/abbrev.rb (Array#abbrev): add missing '"' in documentation.
+
+Wed Feb 15 22:20:19 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (rb_fiber_reset_root_local_storage): add a new function to
+ restore rb_thread_t::local_storage.
+
+ * cont.c (rb_obj_is_fiber): add a new function to tell finalizer to
+ prevent fibers from destroy.
+
+ * gc.c (rb_objspace_call_finalizer): don't sweep fibers at finalizing
+ objspace.
+
+ * internal.h (rb_fiber_reset_root_local_storage, rb_obj_is_fiber):
+ add prototypes.
+
+ * vm.c (ruby_vm_destruct): reset main thread's local_storage before
+ free main thread. rb_thread_t::local_storage is replaced by fiber's
+ local storage when forked from fiber, and it should be already freed
+ when the fiber was destroyed. [ruby-core:41456] [Bug #5700]
+
+ * test/ruby/test_fiber.rb (test_fork_from_fiber): add test for fork
+ from fiber.
+
+Wed Feb 15 19:57:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/fiddle/closure.c (callback): deal with unsigned integers.
+ [ruby-core:42458][Bug #5991][Bug #6022]
+
+ * ext/fiddle/conversions.c (value_to_generic, generic_to_value):
+ ditto.
+
+ * ext/fiddle/closure.c (callback): same as r34506.
+
+Wed Feb 15 17:41:31 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_strsetbuf): call rb_str_modify to make str independent
+ before calling rb_str_set_len for r34580.
+
+Wed Feb 15 12:30:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (Init_zlib): Added Zlib::TEXT and note that
+ Zlib::ASCII is deprecated in zlib 1.2.3 and newer.
+
+Wed Feb 15 12:24:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Move constant descriptions to constants. Remove
+ extra comment block at the top of Init_zlib().
+
+Wed Feb 15 12:30:46 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/ostruct.rb: Create getters and setters after dup.
+ [Bug #6028] [rubyspecs:0380bcc]
+
+Wed Feb 15 10:59:52 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (HEAP_BITMAP_LIMIT): HEAP_BITMAP_LIMIT is computed on the
+ basis of HEAP_SIZE because it must covers a whole heap block.
+ [ruby-trunk - Bug #6006]
+
+Wed Feb 15 09:27:45 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (Init_zlib): Added Zlib::FIXED and Zlib::RLE
+ strategies.
+ * NEWS: Add note about the new Zlib constants.
+
+Wed Feb 15 09:11:36 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Improve documentation. [ruby-trunk - Bug #5948]
+
+Wed Feb 15 07:28:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * encoding.c (Init_Encoding): Add IO example of internal and external
+ encoding. Fixed a typo in the force_encoding example. [#5949]
+
+Wed Feb 15 06:58:21 2012 Eric Hodel <drbrain@segment7.net>
+
+ * encoding.c (Init_Encoding): Add Encoding documentation.
+ [ruby-trunk - Bug #5949]
+ * encoding.c (rb_set_default_external): Fix typo in documentation.
+
+Tue Feb 14 20:22:11 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (CEILDIV): rename to a appropriate name.
+
+Tue Feb 14 18:07:20 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (assign_heap_slot): SEGV happens cause on 64-bit platform
+ sometime there should be `objs-=2` instead of `objs--`.
+ [Bug #6006]
+ patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92
+
+Tue Feb 14 16:00:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_setstrbuf): cut down the buffer if longer.
+
+Tue Feb 14 15:06:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (build_message): skip escaped
+ question marks.
+
+Tue Feb 14 12:10:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (autoload_const_set, autoload_require): fix
+ signatures.
+
+Tue Feb 14 05:23:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * process.c (proc_wait): Change typo "SystemError" to
+ "SystemCallError". [ruby-trunk - Bug #5962]
+ * process.c (proc_wait2): ditto
+
+Tue Feb 14 05:18:24 2012 Eric Hodel <drbrain@segment7.net>
+
+ * enumerator.c: Document use of Enumerator.new for creating a lazy
+ enumeration for filtering/chaining. [ruby-trunk - Feature #707]
+
+Mon Feb 13 23:01:50 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * vm_method.c (rb_method_boundp):
+ obj.respond_to?(:a_protected_method) should return false because
+ calling a protected method may cause NoMethodError if called
+ from outside the class inheritance tree. Kernel#respond_to? is
+ mostly used to test if it is safe to call a method, so the false
+ positive should be avoided. [ruby-dev:40461] [ruby-dev:41739]
+ [ruby-dev:41837]
+
+Mon Feb 13 21:52:06 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (HEAP_OBJ_LIMIT, HEAP_BITMAP_LIMIT): HEAP_OBJ_LIMIT used
+ `sizeof(struct heaps_slot)` while heap is currently allocated
+ with `struct heaps_header`.
+ HEAP_BITMAP_LIMIT were calculated from
+ `HEAP_OBJ_LIMIT/sizeof(uintptr_t)` - one Byte for each object,
+ not one Bit. [Bug #6006]
+ patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92
+
+Mon Feb 13 18:30:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_setstrbuf): defer resizing buffer string until data is
+ read actually.
+
+Mon Feb 13 10:24:39 2012 Loren Segal <lsegal@soen.ca>
+
+ * io.c (Init_IO): use directive hack to make ARGF documentable
+ in other tools. [ruby-core:42515][Bug #6007]
+
+Sun Feb 12 20:43:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_event_hook_func_t): add argument names.
+
+Sun Feb 12 16:30:23 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * tool/merger.rb (#default_merge_branch): Add support for
+ Subversion 1.7 which adopted a whole new working directory
+ structure.
+
+Sun Feb 12 15:14:41 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * benchmark/driver.rb: suppress unused/shadowing variable warnings.
+
+Sun Feb 12 03:14:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * vm_eval.c (check_funcall): Call respond_to? with matching arity for
+ legacy single-argument implementations. [ruby-trunk - Bug #6000]
+
+Sat Feb 11 12:04:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (defined_expr): guard the whole expression.
+ [ruby-dev:45021][Bug#5786]
+
+Sat Feb 11 08:34:42 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (rb_inflate_add_dictionary): Added
+ Zlib::Inflate#add_dictionary to allow users to pre-specify
+ for using during #inflate. [ruby-trunk - Feature #5937]
+
+Sat Feb 11 08:23:02 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (do_inflate): Inflate more data if buffered data
+ exists. Allows Zlib::Inflate#set_dictionary to work.
+ [ruby-trunk - Bug #5929]
+
+Sat Feb 11 06:00:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (fnmatch): The * needs to be escaped to avoid formatting in
+ fnmatch comment.
+ patched by @dalton. https://github.com/ruby/ruby/pull/91
+
+Fri Feb 10 03:41:31 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: removed external encoding setter, allow parser
+ to be reused.
+ * ext/psych/lib/psych/parser.rb: added external encoding setter.
+ * test/psych/test_parser.rb: test parser reuse
+
+Fri Feb 10 01:30:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl.h (ALIGN_OF): use offsetof().
+
+ * ext/dl/dl.h (DLALIGN): round up at once and get rid of overflow.
+
+Fri Feb 10 00:47:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_no_memory_leak): new assertion to
+ check memory leak by invoking child ruby process and watch its
+ memory size.
+
+Thu Feb 9 23:41:44 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/pathname/test_pathname.rb (test_binread): add assertion to
+ check encoding.
+
+Thu Feb 9 16:48:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl.c (Init_dl): fix mangled document.
+
+Thu Feb 9 16:10:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/memory_status.rb (Memory::Win32): 64bit support.
+
+Thu Feb 9 16:08:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/value.rb (DL::ValueUtil.{unsigned_value,signed_value}):
+ currently pack/unpack does not accept "q!" and "Q!".
+
+Thu Feb 9 16:01:29 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/fiddle/conversions.c (value_to_generic): src is not guaranteed as
+ a Bignum if the type is LONG_LONG. it may be a Fixnum if the value
+ is small.
+
+Thu Feb 9 11:32:36 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/types.rb: Win64 support.
+
+Thu Feb 9 04:12:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/pathname/test_pathname.rb: not read but binread.
+ patched by Benoit Daloze, [ruby-core:42440] [Bug #5984]
+
+Wed Feb 8 22:29:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_modify_expand): fix memory leak.
+
+Wed Feb 8 14:06:59 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c: Add SSL constants and allow to unset SSL
+ option to prevent BEAST attack. See [Bug #5353].
+
+ In OpenSSL, OP_DONT_INSERT_EMPTY_FRAGMENTS is used to prevent
+ TLS-CBC-IV vulnerability described at
+ http://www.openssl.org/~bodo/tls-cbc.txt
+ It's known issue of TLSv1/SSLv3 but it attracts lots of attention
+ these days as BEAST attack. (CVE-2011-3389)
+
+ Until now ossl sets OP_ALL at SSLContext allocation and call
+ SSL_CTX_set_options at connection. SSL_CTX_set_options updates the
+ value by using |= so bits set by OP_ALL cannot be unset afterwards.
+
+ This commit changes to call SSL_CTX_set_options only 1 time for each
+ SSLContext. It sets the specified value if SSLContext#options= are
+ called and sets OP_ALL if not.
+
+ To help users to unset bits in OP_ALL, this commit also adds several
+ constant to SSL such as
+ OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS. These constants were
+ not exposed in Ruby because there's no way to unset bits in OP_ALL
+ before.
+
+ Following is an example to enable 0/n split for BEAST prevention.
+
+ ctx.options = OP_ALL & ~OP_DONT_INSERT_EMPTY_FRAGMENTS
+
+ * test/openssl/test_ssl.rb: Test above option exists.
+
+Wed Feb 8 13:12:02 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_x509name.c: Use the numerical representation of
+ unrecognized OIDs instead of the sn "UNDEF".
+
+ * test/openssl/test_x509name.rb: Add tests for the fixed behavior.
+
+ Patch provided by Paul Kehrer, thank you!
+ [ruby-core:41769] [Feature #5787]
+
+Wed Feb 8 09:49:58 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: don't abort, update first.
+
+Wed Feb 8 09:47:33 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Call INT2NUM only once for GeneralString.
+ Thanks to Mantas Mikulenas for noticing and providing a patch!
+ [ruby-core:42358] [Bug #5972]
+
+Wed Feb 8 09:19:00 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_cipher.c: Add warning about key as IV.
+
+Tue Feb 7 20:08:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * error.c (exc_inspect): Fix typo. patch from Trent Ogren
+ via https://github.com/ruby/ruby/pull/90
+
+Tue Feb 7 19:37:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c: refactor packed entries using structs.
+
+Tue Feb 7 14:52:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_update): table can be unpacked in the callback.
+
+ * st.c (st_foreach): should not yield same pair when checking
+ after unpacking.
+
+Mon Feb 6 21:55:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: abort if the working directory is dirty.
+
+ * tool/merger.rb: update the working directory after commit.
+
+Mon Feb 6 00:16:27 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): return ASCII-8BIT even if 2nd string
+ is ascii only string. [ruby-core:42354] [Bug #5968]
+
+Fri Feb 3 07:16:47 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick.rb: Moved proxy rewriting to WEBrick::HTTPProxy.
+ * lib/webrick/httpproxy.rb: Add examples of creating a proxy server
+ and response rewriting using HTTPProxy.
+
+Fri Feb 3 06:53:22 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_x509store.c: Add class documentation for
+ OpenSSL::X509::Store
+
+Thu Feb 2 22:28:13 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/net/http/test_https_proxy.rb
+ (HTTPSProxyTest#test_https_proxy_authentication):
+ add workaround to avoid to hang up without openssl.
+ see [ruby-dev:45021][Bug #5786]
+
+ * test/resolv/test_dns.rb (TestResolvDNS#test_query_ipv4_address):
+ ditto.
+
+Thu Feb 2 21:48:18 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb: use meaningful names.
+
+Thu Feb 2 21:38:52 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb, test/rexml/test_namespace.rb:
+ fix the default xml namespace URI validation.
+ [ruby-dev:45169] [Bug #5956]
+ Reported by Miho Hiramatsu. Thanks!!!
+
+Thu Feb 2 17:51:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (argf_next_argv): reset ARGF.next_p on ARGV.replace.
+ r34409 breaks replacing ARGV.
+ [ruby-dev:45160] [Bug #5952]
+
+Thu Feb 2 16:21:01 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/net/http/test_http.rb (TestNetHTTPKeepAlive#*): remove debug
+ output.
+
+Thu Feb 2 01:24:34 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (debug_lines, coverage): set file path encoding for coverage
+ result. [ruby-dev:44950]
+
+Wed Feb 1 14:38:31 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb (Tempfile#unlink, Tempfile::Remover#call): Just
+ call File.unlink and ignore ENOENT because existence check
+ before unlinking does not help in terms of race condition.
+
+ * lib/tempfile.rb (Tempfile#unlink, Tempfile::Remover#call): My
+ comment about thread safeness is obsolete.
+
+Wed Feb 1 09:50:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * doc/re.rdoc (Repetition): fix typo. reported by Ori Avtalion
+ and patched by Zachary Scott. [Bug #5947]
+
+Wed Feb 1 06:38:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_close): skip stdin, which should be readable again.
+ [ruby-dev:45160] [Bug #5952]
+
+ * io.c (argf_readlines): reinitialize after all read to be
+ readable again.
+
+Tue Jan 31 21:27:43 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * configure.in (HEAP_ALIGN_LOG): HEAP_ALIGN_LOG should be page
+ size in OpenBSD. [ruby-core:42158][Bug #5901]
+
+ * gc.c : avoid to redefine.
+
+Tue Jan 31 14:27:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (EnvUtil.invoke_ruby): yield also child pid
+ in block form.
+
+Mon Jan 30 19:08:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (vm_call0): should pass block to enumerators. patched
+ by Kazuki Tsujimoto. [ruby-dev:44961][Bug #5731]
+
+ * vm_eval.c (method_missing), vm_insnhelper.c (vm_call_method):
+ ditto. patched by satoshi shiba.
+
+Mon Jan 30 12:31:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (append_fspath): need to set the encoding to result always.
+
+Mon Jan 30 10:38:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/irb/test_completion.rb: skip if cannot load irb/completion
+ (maybe readline does not exist).
+
+Sun Jan 29 22:47:19 2012 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * tool/config.{guess,sub}: updated to automake-1.11.2.
+
+Sun Jan 29 12:17:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ respect encodings. [Bug #5941]
+
+Sat Jan 28 09:33:33 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * win32/win32.c (rb_w32_read): fix an issue that $stdin.read doesn't
+ terminate by CTRL-C on Windows.
+ [ruby-dev:45149] [Bug #5812]
+
+Sat Jan 28 08:18:11 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_thread.rb
+ (TestThreadGroup#test_thread_timer_and_interrupt): skip exit status
+ assertion because we cannot get signal status on Windows.
+
+ * win32/win32.c (CreateChild): create process group to receive the
+ signal by GenerateConsoleCtrlEvent().
+
+ * win32/win32.c (kill): use CTRL_BREAK_EVENT instead of CTRL_C_EVENT
+ if a process group is specified. CTRL_C_EVENT signal cannot be
+ generated for process groups for the specification.
+ [ruby-dev:45149] [Bug #5812]
+
+Sat Jan 28 07:46:03 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * thread_win32.c (rb_w32_wait_events_blocking): use
+ ruby_thread_from_native() instead of GET_THREAD() because
+ GET_THREAD() doesn't always return the current thread and
+ WaitForMultipleObjects() at rb_w32_read() doesn't return by
+ Thread#kill. This fixes TestQueue#test_thr_kill failure on
+ Windows.
+
+ * thread_win32.c (rb_w32_wait_events): use ruby_thread_from_native()
+ instead of GET_THREAD() for consistency with the above change.
+
+ * thread_win32.c (rb_w32_sleep): ditto.
+
+ * thread_win32.c (rb_w32_Sleep): ditto.
+ [ruby-dev:45149] [Bug #5812]
+
+Sat Jan 28 07:28:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/zlib/test_zlib.rb (TestZlibGzipReader#test_reader_wrap): set
+ binmode explicitly for fixing test error on Windows. This is consistent
+ with r34243.
+ [ruby-dev:45149] [Bug #5812]
+
+Sat Jan 28 05:53:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/completion.rb (IRB::InputCompletor::CompletionProc):
+ ignore non-string name modules. [ruby-core:42244][Bug #5938]
+
+Fri Jan 27 16:31:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (HEAP_ALIGN, HEAP_ALIGN_MASK): DRY, let compiler calculate
+ from HEAP_ALIGN_LOG.
+
+Thu Jan 26 11:03:37 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/matrix.rb: Clean up extra whitespace in output documentation.
+
+Thu Jan 26 03:24:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (io_getch): default delegating method
+ for StringIO. https://github.com/nobu/io-console/issues/4
+
+ * ext/stringio/stringio.c: moved some methods to hidden modules.
+
+Wed Jan 25 13:27:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): ignore non-ascii extension in
+ different encoding, which cannot match.
+
+ * file.c (rmext): no extension to strip if empty string.
+
+ * file.c (rb_enc_path_next, rb_enc_path_skip_prefix)
+ (rb_enc_path_last_separator, rb_enc_path_end)
+ (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware
+ path handling functions.
+
+ * file.c (rb_home_dir, file_expand_path, rb_realpath_internal)
+ (rb_file_s_basename, rb_file_dirname, rb_file_s_extname)
+ (rb_file_join): should respect the encodings of arguments than
+ file system encoding. [ruby-dev:45145] [Bug #5919]
+
+ * dir.c (check_dirname, ruby_glob0): ditto.
+
+ * ext/pathname/pathname.c (path_sub_ext): ditto.
+
+Tue Jan 24 14:20:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_iter_break_value): new function to break a block with
+ the value. [ruby-dev:45132] [Feature #5895]
+
+Tue Jan 24 12:58:41 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_Hash): add Kernel#Hash conversion method like
+ Array() or Float(). a patch from Run Paint Run Run. Fix #3131
+
+Tue Jan 24 11:38:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_form_component): initialize on
+ requiring to support JRuby, which runs parallel multithreads.
+ [ruby-core:42222] [Bug #5925]
+
+ * lib/uri/common.rb (URI.decode_www_form_component): initialize on
+
+Mon Jan 23 20:33:11 2012 Jason Kay <geniture@me.com>
+
+ * lib/net/http.rb (Net::HTTP#connect): Writing entire packet at
+ once to avoid incomplete transmission. Current code using
+ writeline was causing sub-optimal conversing with a proxy due to
+ the connect tunnel request headers being split over multiple
+ packets. The modification I made allows the connect request to
+ be written as one packet, avoiding problems and optimizing the
+ conversation.
+
+ https://github.com/ruby/ruby/pull/72
+ [Feature #5460]
+
+Mon Jan 23 17:06:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/mailto.rb (URI::MailTo.build): follow Array#to_s change of
+ Ruby 1.9; use Array#join. [Bug #5840]
+
+Mon Jan 23 16:42:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (extract_binmode): raise an exception if binmode/textmode
+ is specified with both vmode and opthash.
+ [ruby-core:42199] [Bug #5918]
+
+Mon Jan 23 16:35:27 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): set ASCII-8BIT if binmode is specified
+ with opthash. [ruby-core:42197] [Bug #5917]
+
+Mon Jan 23 10:08:00 2012 Kenta Murata <mrkn@cookpad.com>
+
+ * test/cgi/test_cgi_util.rb (test_cgi_escape_preserve_encoding):
+ add a test for CGI::escape to preserve encoding.
+
+ * test/cgi/test_cgi_util.rb (test_cgi_unescape_preserve_encoding):
+ add a test for CGI::unescape to preserve encoding.
+
+Mon Jan 23 00:45:34 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/rdoc-mode.el (rdoc-imenu-create-index): Add imenu support
+ to rdoc-mode.
+
+ * misc/rdoc-mode.el (rdoc-mode): Fix regexp patterns containing
+ "\s " where CR/LF is not supposed to match.
+
+Sun Jan 22 15:41:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern3): split to registration check and new
+ registration.
+
+ * parse.y (rb_intern_str): make interned string shared with the
+ given string.
+
+ * parse.y (rb_intern3, rb_intern_str): check the coderange first.
+
+Sat Jan 21 22:21:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (FIXNUM_P): simple flag should be int.
+
+Sat Jan 21 21:51:19 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): fix segv on symbols.
+ [ruby-core:42204] [Bug #5921]
+
+Sat Jan 21 11:43:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_chdir, check_dirname): get rid of optimization-out.
+
+Fri Jan 20 20:47:37 2012 Kenta Murata <mrkn@cookpad.com>
+
+ * lib/cgi/util.rb (CGI.escape): support a string with invalid byte
+ sequence. [Bug #5913]
+
+ * test/cgi/test_cgi_util.rb
+ (test_cgi_escape_with_invalid_byte_sequence): test for the above
+ change.
+
+Fri Jan 20 17:37:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm.c (vm_exec): remove workaround for LLVM because r34278 fixes it.
+
+ * vm_insnhelper.c (vm_call_cfunc): ditto.
+
+Fri Jan 20 14:31:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#transport_request): retry a idempotent
+ request automatically. [ruby-dev:45030] [Bug #5790]
+ [ruby-core:41821] [Bug #5813]
+
+ * lib/net/http.rb (Net::HTTP#keep_alive_timeout=): added to specify
+ the second to reconnect the TCP connection on Keep-Alive.
+ The default value is 2 second because current servers uses 2 sec.
+ http://ftp-admin.blogspot.com/2009/09/keepalivetimeout2.html
+
+ * lib/net/http.rb (Net::HTTP#begin_transport): reconnect TCP
+ connection on keep-alive timeout.
+
+Thu Jan 19 07:53:09 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strptime.c: moved detector of leftover.
+
+Thu Jan 19 07:10:47 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c: [ruby-core:42173].
+
+Wed Jan 18 18:11:02 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/rdoc-mode.el (rdoc-mode): Add provide so that requiring
+ this library succeeds.
+
+Wed Jan 18 18:06:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/curses/curses.c (cWindow, cMouseEvent): made typed data.
+
+Wed Jan 18 12:49:15 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Added support for loading
+ subclasses of String with ivars
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Added support for dumping
+ subclasses of String with ivars
+ * test/psych/test_string.rb: corresponding tests
+
+Wed Jan 18 10:39:47 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Added ability to load array
+ subclasses with ivars.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Added ability to dump
+ array subclasses with ivars.
+ * test/psych/test_array.rb: corresponding tests
+
+Tue Jan 17 17:18:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (SPT_TYPE): enable as SPT_REUSEARGV on Darwin.
+
+ * missing/setproctitle.c (ruby_init_setproctitle): changed prefix.
+
+Tue Jan 17 12:32:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (aligned_malloc, aligned_free): covered missing defined
+ operators and fixes for cygwin.
+
+Tue Jan 17 10:54:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (do_hash): it's the time to remove cast to unsigned int.
+
+Tue Jan 17 07:30:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * st.c (unpack_entries): Fix r34310: on unpacking, the position of
+ a hash must be do_hash-ed value.
+
+ * st.c (add_packed_direct): ditto.
+
+Mon Jan 16 16:41:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (Regexp): fix incorrect options when casting to
+ a Regexp, and suppress encoding option warnings.
+ https://github.com/ruby/ruby/pull/82
+
+Mon Jan 16 11:22:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_chsize): no need to get the current file size.
+
+Mon Jan 16 00:41:33 2012 Sokolov Yura <funny.falcon@gmail.com>
+
+ * st.c: st use function instead of macro. In my current
+ environment (Ubuntu 11.04 32bit gcc-4.5.2) it gives 4%
+ performance improvement.
+
+ https://github.com/ruby/ruby/pull/77
+
+Sun Jan 15 14:09:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * object.c (rb_inspect): raise the result is not compatible with
+ the default external encoding. [ruby-core:42095] [Bug #5848]
+ If the default external encoding is ASCII compatible, the encoding of
+ inspected result must be compatible with it.
+ If the default external encoding is ASCII incompatible,
+ the result must be ASCII only.
+
+Sun Jan 15 13:21:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/parser/parser.rl (json_string_unescape): workaround fix
+ for over optimization of GCC 4.7. [ruby-core:42085] [Bug #5888]
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51862
+
+Sat Jan 14 22:24:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/callback/mkcallback.rb (gencallback): suppress unused
+ variables.
+
+Sat Jan 14 21:56:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_data_to_ary): check line info table boundary. line
+ number 0 means no line number info is needed. [ruby-dev:45130]
+ [Bug #5894]
+
+Sat Jan 14 18:24:13 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * error.c (exc_equal): clear rb_thread_t::errinfo when ignore
+ an exception under rb_protect(). [ruby-core:41979] [Bug #5865]
+
+Sat Jan 14 12:02:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_enc_vsprintf): relaxed the restriction. since the
+ implementation deeply depends on plain char, so wchar_t based
+ encodings are not supported.
+
+Sat Jan 14 12:00:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exc_equal): ignore exceptions during implicit
+ conversion. [ruby-core:41979] [Bug #5865]
+
+Sat Jan 14 05:58:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * io.c (rb_io_s_read): Fix formatting of open_args comment. Reported
+ by Adam Prescott.
+
+Fri Jan 13 18:41:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_enc_vsprintf): can be used for ASCII compatible
+ encodings only.
+
+Fri Jan 13 18:29:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_mutex_unlock_th): simplified.
+
+ * thread.c (rb_barrier_waiting): fix potential overflows.
+
+Fri Jan 13 17:23:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_unlock): update loading table at once.
+
+Fri Jan 13 16:44:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exc_equal): try implicit conversion for delegator.
+ [ruby-core:41979] [Bug #5865]
+
+Fri Jan 13 03:46:53 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb (Shellwords#shellescape): shellescape() now
+ stringifies the given object using to_s.
+
+ * lib/shellwords.rb (Shellwords#shelljoin): shelljoin() accepts
+ non-string objects in the given array, each of which is
+ stringified using to_s.
+
+ * lib/shellwords.rb: Fix rdoc markups.
+
+Fri Jan 13 03:38:36 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb (Shellwords#shellsplit): Fix a bug where
+ consecutive backslashes in double quotes are all removed except
+ the one at the tail.
+
+Fri Jan 13 03:28:00 2012 Luis Lavena <luislavena@gmail.com>
+
+ * ext/socket/extconf.rb (if ipv6): only define _WIN32_WINNT if was not
+ previously defined. This solve warnings with multiple defines in
+ command line with GCC 4.6.1
+
+Thu Jan 12 18:44:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: fix r33904 and revert r33905. initialize global
+ variables with init_mkmf before initializing constants.
+ [ruby-dev:45124] [Bug #5879]
+
+Thu Jan 12 13:51:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (cont_restore_0): prevent optimizing out `sp'. sp is used for
+ reserving a memory space with ALLOCA_N for restoring machine stack
+ stored in cont->machine_stack, but clang optimized out it (and
+ maybe #5851 is also caused by this).
+ This affected TestContinuation#test_check_localvars.
+
+ * cont.c (cont_restore_1): revert workaround introduced in r32201.
+
+Thu Jan 12 02:14:43 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * object.c: Added examples for Object#is_a? and
+ Object#instance_of? patched from Manoj Kumar.
+ [Bug #5880] [ruby-core:42057]
+
+Thu Jan 12 00:57:48 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/mkmf.rb: verbose-mode can use by RM, RMDIRS, etc.
+ (e.g. make V=1 realclean)
+
+Wed Jan 11 23:40:21 2012 Naohisa Goto <ngoto@gen-info.osaka-u.ac.jp>
+
+ * string.c (rb_str_concat): set array element after definition
+ to fix compile error with Fujitsu C Compiler 5.6 on Solaris 10
+ on Sparc. [Bug #5878] [ruby-dev:45123]
+
+Wed Jan 11 22:52:51 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (ruby_mimmalloc): don't set allocated size to header.
+ ruby_mimmalloc() doesn't increment allocated_size/allocations and
+ decrement them in ruby_xfree() cause inconsistency.
+
+ * gc.c (ruby_xfree): don't decrement allocated_size/allocations if
+ allocated size record is 0.
+
+Wed Jan 11 22:36:43 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/readline/test_readline.rb (test_completion_proc_empty_result):
+ ensure clearance of Readline's line_buffer after the test.
+
+Tue Jan 10 21:57:38 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * ext/dbm/dbm.c (Init_dbm): fix a build error on mswin32.
+ use `extern __declspec(dllimport)` for dll link with VC.
+ [ruby-core:41996] [Bug #5869]
+
+Tue Jan 10 15:31:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm.c (vm_exec): refix r34162; suppress warning and add description.
+
+Tue Jan 10 15:13:58 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ use rb_memerror().
+
+Tue Jan 10 12:49:42 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c: in fact, i686-linux doesn't need to define _XOPEN_SOURCE 600.
+
+Tue Jan 10 12:44:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (ruby_mimmalloc): defined for objects need not rb_objspace,
+ but should return pointer suitable for ruby_xfree;
+ main vm and main thread.
+ patched by Sokolov Yura. https://github.com/ruby/ruby/pull/79
+
+ * internal.h: ditto.
+
+ * vm.c (Init_BareVM): use ruby_mimmalloc.
+
+ * ext/dl/cfunc.c: #include <ruby/util.h>.
+
+ * ext/syslog/syslog.c: use xfree because it is allocated by
+ ruby_strdup.
+
+Tue Jan 10 12:13:56 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ fix compile error.
+
+Tue Jan 10 10:41:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ empty completion result does not mean memory error.
+
+Tue Jan 10 02:19:22 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_io.rb (test_autoclose_true_closed_by_finalizer,
+ test_autoclose_true_closed_by_finalizer): skip if IO objects are
+ not recycled yet. [ruby-dev:45098] [Bug #5850]
+
+Tue Jan 10 00:41:28 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/tempfile.rb (Tempfile#_close): clear @tempfile and @data[1] even
+ when exception is raised at @tempfile.close. [ruby-dev:45113]
+
+ * lib/tempfile.rb (Tempfile#unlink): fix a typo.
+
+Tue Jan 10 00:32:17 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (run_finalizer): clear rb_thread_t::errinfo when ignore
+ an exception under rb_protect(). [ruby-dev:45113]
+
+Mon Jan 9 23:37:43 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ fix typos.
+
+Mon Jan 9 20:55:34 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c : don't embed struct heaps_slot to a heap block because it
+ can causes copy-on-write of memory page on heap block when its
+ free_next is rewritten.
+
+Mon Jan 9 20:26:33 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_entries): add document suggested by
+ the thread [ruby-core:41959] [Bug #5859].
+
+Mon Jan 9 20:14:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (family_addrinfo): don't require protocol
+ equality. For example, protocol 0 and IPPROTO_TCP is not problem
+ for TCP.
+
+Mon Jan 9 20:08:52 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (family_addrinfo): return the given
+ addrinfo object.
+ Patch by Ippei Obayashi. [ruby-dev:45095] [Bug #5845]
+
+Mon Jan 9 19:40:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/zlib/test_zlib.rb (TestZlibGzipWriter#test_writer_wrap): set
+ binmode explicitly.
+
+Mon Jan 9 14:42:41 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: free_slots is changed Singly linked list. clear
+ free_slots before sweep.
+
+Mon Jan 9 07:46:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c: i686-linux needs to define _XOPEN_SOURCE 600 for posix_memalign.
+
+Mon Jan 9 04:24:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (rb_objspace_free): global_List is allocated with xmalloc.
+ patched by Sokolov Yura. https://github.com/ruby/ruby/pull/78
+
+ * dln_find.c: remove useless replacement of free.
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ strings for readline must allocated with malloc.
+
+ * process.c (run_exec_dup2): use free; see also r20950.
+
+ * re.c (onig_new_with_source): use malloc for oniguruma.
+
+ * vm.c (ruby_vm_destruct): use free for VMs.
+
+ * vm.c (thread_free): use free for threads.
+
+Mon Jan 9 04:24:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dln_find.c: remove useless replacement of free.
+
+ * ext/readline/readline.c (filename_completion_proc_call):
+ matches should use xfree.
+
+ * ext/readline/readline.c (username_completion_proc_call): ditto.
+
+Mon Jan 9 01:12:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_enc_uint_char): raise RangeError when added codepoint
+ is invalid. [Feature #5855] [Bug #5863] [Bug #5864]
+
+ * string.c (rb_str_concat): ditto.
+
+ * string.c (rb_str_concat): set encoding as ASCII-8BIT when the string
+ is US-ASCII and the argument is an integer greater than 127.
+
+ * regenc.c (onigenc_mb2_code_to_mbclen): rearrange error code.
+
+ * enc/euc_jp.c (code_to_mbclen): ditto.
+
+ * enc/shift_jis.c (code_to_mbclen): ditto.
+
+Sun Jan 8 20:31:45 2012 Narihiro Nakamura <narihiro@netlab.jp>
+
+ * gc.c : consider header bytes which are used by malloc.
+
+Sun Jan 8 11:54:43 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (aligned_free): support MinGW. Patch by Hiroshi Shirosaki.
+
+Sun Jan 8 11:43:05 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (slot_sweep): add a assertion instead of a debug print.
+
+Sun Jan 8 01:18:19 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb:
+ avoid platform bug. [Bug #5858] [ruby-dev:45108]
+
+Sun Jan 8 00:46:34 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * gc.c: get rid of implicit narrowing conversion.
+
+Sun Jan 8 00:10:10 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: check posix_memalign(3) and memalign(3).
+
+ * gc.c (aligned_malloc): use configure's result instead of
+ _POSIX_C_SOURCE and _XOPEN_SOURCE because they can't be used
+ to check availability at least on FreeBSD.
+
+Sat Jan 7 22:25:50 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: use Bitmap Marking algorithm to avoid copy-on-write of
+ memory pages. See [ruby-dev:45085] [Feature #5839]
+ [ruby-core:41916].
+
+ * include/ruby/ruby.h : FL_MARK rename to FL_RESERVED1.
+
+ * node.h : ditto.
+
+ * debug.c : ditto.
+
+ * object.c (rb_obj_clone): FL_MARK move to a bitmap.
+
+ * class.c (rb_singleton_class_clone): ditto.
+
+Sat Jan 7 00:47:07 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * configure.in: always define CANONICALIZATION_FOR_MATHN.
+ [ruby-dev:45100] [Bug #5852]
+
+Fri Jan 6 23:11:20 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * include/ruby/version.h: RUBY_API_VERSION 2.0.0
+
+Fri Jan 6 12:24:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * object.c (rb_inspect): raises Encoding::CompatibilityError if the
+ result is incompatible with the default external encoding.
+ [ruby-core:41931] [Bug #5848]
+
+Thu Jan 5 15:26:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (check_valid_dir): strict checking of root.
+ GetDriveType() succeeds with non root directory as the argument,
+ even if MSDN says that the API needs the root directory.
+ this patch fixes a failure of test/ruby/test_file_exhaustive.rb.
+
+Thu Jan 5 12:15:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (rb_file_join): separator is appended by array length - 1
+ times. patched by Benoit Daloze [ruby-core:41901] [Bug #5841]
+
+Thu Jan 5 11:47:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::Parser#initialize_regexp):
+ use \A \z instead of ^ $. [Bug #5843]
+
+Wed Jan 4 17:55:53 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * array.c (rb_ary_sample): add example for Array#sample
+ based on patch from https://github.com/ruby/ruby/pull/74
+
+Wed Jan 4 14:24:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_nth_len): count ascii-only run at the end. this
+ bug appears only when single-byte-optimization is disabled due
+ to unknown coderange. [ruby-core:41896] [Bug #5836]
+
+Wed Jan 4 11:32:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (check_valid_dir): special case for a root directory.
+ Reported by Masateru OKAMOTO at [Bug #5819].
+
+Wed Jan 4 00:19:54 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb: use private instead of _xxx
+ method name. This is Ruby code not Python code.
+ refs #5696
+
+Tue Jan 3 23:57:37 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/rexml/parsers/baseparser.rb: rexml BaseParser uses
+ instance_eval unnecessarily on listener add.
+ patch from Charles Nutter. [Bug #5696] [ruby-core:41437]
+
+Tue Jan 3 20:44:13 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * README: add comment for Git user. patch from Arun Agrawal.
+ * README.ja: ditto.
+
+Tue Jan 3 15:58:22 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * thread.c: changed documentation for "thread-local" variables.
+ patch from Julien Ammous.
+
+Tue Jan 3 15:50:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * process.c: Fix typo. patch from Aviv Ben-Yosef.
+
+Tue Jan 3 13:43:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * tool/merger.rb: allow r0123 style revision number.
+
+Tue Jan 3 11:17:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * tool/merger.rb (#version_up): version.h date should be Japanese
+ locale date.
+
+Mon Jan 2 22:08:00 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * tool/file2lastrev.rb (VCS::detect): Add support for Subversion
+ 1.7 which adopted a whole new working directory structure.
+
+ * tool/file2lastrev.rb (VCS::detect): Simply use .each instead of
+ .sort.reverse_each which looks too arbitrary. If you want SVN
+ to be tried first, then you just have to register it first as it
+ is right now.
+
+Mon Jan 2 20:53:36 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (random_bytes): use IO#read instead of
+ IO#readpartial to make the intent more clear.
+
+Mon Jan 2 15:26:39 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/ruby/test_object.rb (test_send_with_block): add a normal case.
+
+Mon Jan 2 15:18:54 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/ruby/test_object.rb (test_send_with_block): moved from
+ bootstraptest/test_flow.rb.
+
+Mon Jan 2 15:10:11 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/test/unit/parallel.rb: use pack("m0") instead of
+ pack("m").gsub("\n","").
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#run): ditto.
+
+Mon Jan 2 15:05:09 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#run): use
+ File.basename with suffix instead of gsub.
+
+Mon Jan 2 14:55:28 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): find may
+ return nil and nil can not dup.
+
+Sun Jan 1 12:23:10 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb (Shellwords#shellescape): Drop the //n flag
+ that only causes warnings with no real effect. [Bug #5637]
+
+Sat Dec 31 06:28:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (rb_barrier_waiting): save the number of waiting threads
+ in RBASIC()->flags. [ruby-dev:45002] [Bug #5768]
+
+ * thread.c (rb_barrier_wait): increment and decrement around
+ rb_mutex_lock, and use rb_barrier_waiting().
+
+ * thread.c (rb_barrier_release): use rb_barrier_waiting().
+
+ * thread.c (rb_barrier_destroy): ditto.
+
+Mon Dec 26 17:20:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm.c (vm_exec): add guard to prevent optimization for LLVM clang.
+
+Fri Dec 30 17:01:12 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * vm_eval.c (rb_f_send): fix obj.send() documentation issue.
+ [Bug #5125] [ruby-core:38633]
+
+Thu Dec 29 22:36:16 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#_run_parallels): fix
+ premature exit when all workers' status are :ready or :prepare.
+ [ruby-dev:45061] [Bug #5822]
+
+Thu Dec 29 01:51:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * include/ruby/ruby.h: fix #error pragma. LLP64 platform is supported.
+
+ * include/ruby/st.h: ditto.
+
+Wed Dec 28 11:22:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#entries): use utility method
+ instead of typoed regexp. [ruby-core:41829] [Bug #5817]
+
+Wed Dec 28 02:08:04 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * vm_insnhelper.c (unknown_keyword_error): add GC guard to prevent
+ intermediate object from GC.
+
+Tue Dec 27 22:34:54 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (Worker#close): "closing IO if IO is closed"
+ should be "closing IO if IO isn't closed"
+
+Tue Dec 27 22:04:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_update): new function to lookup the given key and
+ update the value. [ruby-dev:44998]
+
+Tue Dec 27 21:17:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (rb_args_info): change pre_args_num and post_args_num as
+ int, to match with rb_iseq_t.
+
+ * parse.y (new_args_gen): check overflow.
+
+Mon Dec 26 22:38:35 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (unknown_keyword_error): make it kind a error
+ message when unknown keyword is given. It require more work.
+ See [ruby-core:40518] and [ruby-core:40541] in detail.
+
+Mon Dec 26 22:31:07 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.h (struct rb_iseq_struct), compile.c (iseq_set_arguments),
+ iseq.c (rb_iseq_parameters), vm_insnhelper.c
+ (vm_callee_setup_arg_complex): support Method#parameters for keyword
+ arguments. The provisional spec is what Benoit Daloze proposed.
+ [ruby-core:40541]
+
+ * test/ruby/test_keyword.rb: add a test for above.
+
+Mon Dec 26 22:15:27 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.h (struct rb_iseq_struct), compile.c (iseq_set_arguments,
+ iseq_compile_each), vm_insnhelper.c (vm_callee_setup_arg_complex):
+ implement keyword arguments. See [ruby-core:40290]
+ The feature is promised to be included in 2.0, but the detail spec
+ is still under discussion; this commit is a springboard for further
+ discussion. Please try it and give us feedback.
+ This commit includes fixes for some problems reported by Benoit
+ Daloze <eregontp AT gmail.com> [ruby-core:40518] and Marc-Andre
+ Lafortune <ruby-core-mailing-list AT marc-andre.ca>
+ [ruby-core:41772].
+
+ * iseq.c (iseq_free, prepare_iseq_build): bookkeeping.
+
+ * test/ruby/test_keyword.rb: add tests for keyword arguments.
+
+ * test/ripper/dummyparser.rb (class DummyParser): temporal fix for
+ ripper test.
+
+Mon Dec 26 22:00:17 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * node.h, node.c, parse.y: implement a parser part for keyword
+ arguments.
+ This is a preparation for keyword argument (see [ruby-core:40290]).
+
+ * gc.c (gc_mark_children): bookkeeping.
+
+Mon Dec 26 21:03:18 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * node.h, parse.y (new_args_gen), compile.c (iseq_set_arguments): use
+ struct rb_args_info instead of NODEs.
+ This is a preparation for keyword argument (see [ruby-core:40290]).
+
+ * node.c (dump_node), gc.c (gc_mark_children, obj_free): bookkeeping.
+
+Mon Dec 26 20:59:51 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * node.h, parse.y (lambda, f_larglist): remove NEW_LAMBDA hack.
+ This is a preparation for keyword argument (see [ruby-core:40290]).
+
+Mon Dec 26 22:01:19 2011 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * io.c (rb_sys_fail_path): move the definition.
+ Move above for using it in set_binary_mode_with_seek_cur().
+
+ * io.c (set_binary_mode_with_seek_cur): fix improper seek cursor.
+ Seeking file cursor with setting binary mode has possibility to
+ cause infinite loop. Fixed the bug and refined error handling.
+ Introduced at r34043.
+
+ And cleanups as below.
+ Remove unnecessary parentheses of `fptr`.
+ Use return value of setmode().
+
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_seek_with_setting_binmode): add a test for above.
+ [ruby-core:41671] [Bug #5714]
+
+Mon Dec 26 17:01:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (LIBRUBY_A): depends on main.o since r33774.
+ [ruby-core:41786] [Bug #5796]
+
+Mon Dec 26 13:07:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_autoclose): Tempfile.new doesn't
+ accept the block argument.
+
+Mon Dec 26 13:06:52 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Avoid zombie processes on "--separate" option
+ added at r34121.
+
+Mon Dec 26 04:01:23 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_cipher.c: Update and complete documentation.
+
+Sun Dec 25 23:16:11 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb (test_separate): Test for "--separate"
+ option (r34121)
+
+Sun Dec 25 22:39:49 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (_run_parallel):
+ New option "--separate" for test/unit; when running tests with this
+ option, a job process will be restarted after one test file has done.
+ This means all test files will run with separated process.
+
+ * lib/test/unit/parallel.rb: Fix for above. Now parallel.rb puts
+ "ready!" for first ready, "ready" for afters.
+
+Sun Dec 25 00:02:15 2011 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in: change --with-ntver to --with-winnt-ver to be more
+ descriptive in the context. [ruby-core:41794]
+
+Sat Dec 24 23:25:15 2011 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in: add --with-ntver option to match win32/configure.bat
+ functionality. Set 0x0501 as default. [ruby-core:35010]
+ [ruby-core:35035]
+
+Sat Dec 24 12:38:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_call): get rid of optimization-out by clang.
+
+ * proc.c (rb_proc_call, rb_proc_call_with_block): ditto.
+
+Sat Dec 24 10:56:32 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): check if outstream
+ is closed to get rid of a bug of readline 6. [ruby-dev:45043]
+ [Bug #5803]
+
+Sat Dec 24 06:59:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/readline/test_readline.rb (test_line_buffer__point): use
+ lambda not to exit entire method by "return". or "next" for
+ proc. [ruby-dev:45042] [Bug #5802]
+
+Sat Dec 24 01:20:39 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_eval.c (send_internal): PASS_PASSED_BLOCK_TH must be placed
+ just before calling rb_call0.
+
+ * bootstraptest/test_flow.rb: add a test for above.
+
+Sat Dec 24 00:55:16 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/tempfile.rb (Tempfile#initialize): warn if a block is given.
+
+Fri Dec 23 16:14:30 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ in Readline module with GNU Readline 6 case, Readline module
+ resets completion_append_character to " ", after it executes
+ completion. So, Readline module stores
+ completion_append_character, and Readline module always sets it
+ after Readline module executes completion. [ruby-dev:43456]
+ [Feature #4635]
+
+Fri Dec 23 15:59:05 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (Init_readline): libedit check
+ rl_getc_function only when rl_initialize() is called, and
+ using_history() call rl_initialize(). This assignment should be
+ placed before using_history(). [ruby-core:40641] [Bug #5539]
+
+Fri Dec 23 10:14:47 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/thread/test_queue.rb (test_thr_kill): show the number of loop
+ run when the test failed.
+
+Fri Dec 23 09:23:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/test_pty.rb (test_pty_check_default): call PTY.check until
+ "cat" command is finished.
+
+Fri Dec 23 06:03:00 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * common.mk: add "check succeeded" message.
+
+ * README, README.ja: follow above change.
+
+Fri Dec 23 06:00:39 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/bigdecimal/bigdecimal.h: add satisfy cc-mode comment.
+ * util.c: ditto.
+
+Fri Dec 23 00:08:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/test_pty.rb (test_pty_check_default): "cat" may not terminated
+ in the 0.1 second.
+
+Thu Dec 22 23:37:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_thread.rb (test_condvar_timed_wait): don't test the
+ maximum sleep time. Ruby is not a real-time system.
+
+Thu Dec 22 22:37:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread_pthread.c (ping_signal_thread_list): remove return value.
+ * thread_pthread.c (check_signal_thread_list): add a new function to
+ check if signal thread list is empty.
+ * thread_pthread.c (thread_timer): check signal thread list after
+ timer_thread_function(). main thread might be added into signal thread
+ list during timer_thread_function().
+
+Thu Dec 22 00:40:24 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/bigdecimal/bigdecimal.c (VpMult, VpCtoV, VpSqrt): remove assigned
+ but unused variables.
+
+Wed Dec 21 18:28:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (newline.c, miniprelude.c): revert r33949 because the change
+ broke mswin build, and the changer said no reason about the change.
+ [ruby-dev:45016] [Bug #5783]
+
+Wed Dec 21 12:35:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_s_allocate): follow
+ Allocation Framework. [Bug #5775]
+
+Wed Dec 21 02:25:36 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/emitter.c: fixing clang warnings. Thanks Joey!
+
+Wed Dec 21 01:06:00 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/bigdecimal/README: Update redmine.ruby-lang.org to bugs.ruby-lang.org
+ * ext/socket/ancdata.c: ditto
+ * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb: ditto
+ * test/syck/test_yaml.rb: ditto
+ * doc/ChangeLog-1.9.3: ditto
+
+Tue Dec 20 23:50:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * PStore content update perf optimization. Patch by Masaki Matsushita.
+ See #5248.
+
+ * lib/pstore.rb (save_data):
+
+ * Delete inadequate Marshal check.
+
+ * Deferred file truncation: when writing the new content, truncate
+ the saved file to the data size after writing the data, instead of
+ truncating whole bytes before writing data.
+
+ * Deferred MD5 calculation: when comparing MD5 hash to check the
+ content modification, calculate MD5 hash of new data iif the
+ content length is differ from the old one.
+
+ * Compare content size with String#bytesize instead of String#size.
+
+Tue Dec 20 21:00:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: uses to_integer instead.
+ * test/date/test_switch_hitter.rb: added a test.
+
+Tue Dec 20 15:04:18 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * Make sure to clear $! when ignoring an exception
+
+ * ext/openssl/ossl.c (ossl_pem_passwd_cb0, ossl_verify_cb):
+ pem_passwd_cb and verify_cb ignores the exception raised in a
+ callback proc so it should clear $! for subsequent execution.
+
+ That's said, both subsequent processes for pem_passwd_cb and
+ verify_cb raises another exception before leaking $! to Ruby world.
+ We cannot test this fix in Ruby land.
+
+ * test/openssl/test_pkey_rsa.rb
+ (test_read_private_key_pem_pw_exception): Test for pem_passwd_cb +
+ exception.
+
+Tue Dec 20 11:49:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/date/test_date_base.rb (test_jd): tests for
+ [ruby-dev:45008].
+
+Tue Dec 20 10:20:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_core.c (wholenum): fix the type of the return value.
+
+Tue Dec 20 05:03:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * README.ja: Update redmine.ruby-lang.org to bugs.ruby-lang.org
+ * README: ditto
+ * common.mk: ditto
+ * man/erb.1: ditto
+ * man/irb.1: ditto
+ * man/ri.1: ditto
+ * man/ruby.1: ditto
+ * sparc.c: ditto
+ * tool/install-sh: ditto
+
+Tue Dec 20 02:15:18 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-dev:45008].
+
+Sun Dec 18 18:52:37 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * vm.c (vm_define_method): improve guard of iseq from GC. Fix
+ failure or segmentation fault in test_singleton_method(TestGc)
+ on sparc Solaris10 compiled with Oracle Solaris Studio 12.2.
+ [Bug #5762] [ruby-dev:45000] [Bug #4178]
+
+Sun Dec 18 14:34:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): does not follow
+ allocation framework right now. [ruby-core:41710] [Bug #5773]
+
+Sun Dec 18 12:42:48 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: BigDecimals can be restored
+ from YAML.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: BigDecimals can be dumped
+ to YAML.
+ * test/psych/test_numeric.rb: tests for BigDecimal serialization
+
+Sun Dec 18 12:03:13 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Strings that look like dates
+ should be treated as strings and not dates.
+
+ * test/psych/test_scalar_scanner.rb: corresponding tests.
+
+Sun Dec 18 09:43:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/thread/test_queue.rb (test_thr_kill): extend timeout.
+ this test takes a long time at slow machine.
+
+Sun Dec 18 09:36:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/envutil.rb (invoke_ruby): remove :timeout option before
+ pass it to Kernel#spawn.
+
+Fri Dec 16 17:18:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README, README.ja: 'make check' is preferable to 'make test'.
+
+Thu Dec 15 23:16:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * error.c (builtin_type_name): don't return pointer to the buffer of
+ temporary String object.
+
+Thu Dec 15 17:56:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_type): make typed data.
+
+Thu Dec 15 17:40:28 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_type): fix typo.
+
+Thu Dec 15 14:48:35 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/strscan/strscan.c: use typed data with
+ onig_region_memsize().
+
+Thu Dec 15 14:33:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_typeddata): refine error message with
+ including expected struct name.
+
+Thu Dec 15 13:15:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regcomp.c (onig_region_memsize): implemented for memsize_of().
+
+ * ext/objspace/objspace.c (memsize_of): use it.
+
+Thu Dec 15 10:44:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_reject_bang, rb_ary_delete_if): update rdoc.
+ documentation from Thomas Leitner <t_leitner AT gmx.at> in
+ [ruby-core:41616]. [Bug #5752]
+
+Thu Dec 15 10:10:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_require.rb (test_race_exception): get rid of
+ not-guaranteed timing issue. [ruby-core:41655] [Bug #5754]
+
+Wed Dec 14 21:58:42 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_{read_with_binmode_and_get[cs]}): only for Windows.
+
+Wed Dec 14 19:57:23 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk,Makefile.in,win32/Makefile.sub (ECHO1): move platform
+ specific hack from common.mk to Makefile.in (and win32/Makefile.sub).
+ [Bug #5711]
+
+ * lib/mkmf.rb: we can generate Makefile as we like.
+
+Wed Dec 14 19:22:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_fd_is_text): new function.
+
+ * win32/win32.c (init_stdhandle): set default mode of stdin as binmode.
+
+ * io.c (set_binary_mode_with_seek_cur): new function to replace
+ SET_BINARY_MODE_WITH_SEEK_CUR macro. now returns previous mode of the
+ fd and take care of LF in rbuf.
+
+ * io.c (do_writeconv): set text mode when needed.
+
+ * io.c (io_read): need to change the mode of the IO to binmode
+ temporally when the length for IO#read, because IO#read with length
+ must behave so.
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{read_with_length,
+ read_with_length_binmode,get[cs]_and_read_with_binmode,
+ read_with_binmode_and_get[cs],read_write_with_binmode}): tests for
+ above changes.
+
+ all patches are written by Hiroshi Shirosaki. [ruby-core:41496]
+ [Feature #5714]
+
+Wed Dec 14 15:28:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_encode): about the extension of :fallback
+ option since 1.9.3.
+
+Wed Dec 14 12:19:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_unlock): release loading barrier and then remove it
+ from loading_table if it is not in-use. [Bug #5754]
+
+ * thread.c (rb_barrier_release, rb_barrier_destroy): return
+ whether any other threads are waiting on it.
+
+Wed Dec 14 11:23:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (ubf_select): call rb_thread_wakeup_timer_thread()
+ only when it is not timer_thread. [Bug #5757] [ruby-dev:44985]
+ patched by Tomoyuki Chikanaga.
+
+Wed Dec 14 10:20:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_lock): delete the loading barrier if it has been
+ destroyed.
+
+ * thread.c (rb_barrier_wait): return nil for recursive lock
+ instead of false, to distinguish it from destroyed barrier.
+
+Wed Dec 14 01:24:55 2011 okkez <okkez000@gmail.com>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): fix memory
+ leak. [ruby-dev:44904] [Bug #5688]
+
+Wed Dec 14 00:01:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary): point method name line. [ruby-core:40936]
+ [Bug #5614]
+
+Tue Dec 13 23:43:48 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * error.c (name_err_mesg_to_str): clear rb_thread_t::errinfo when
+ ignore exception under rb_protect(). [ruby-core:41612] [Bug #5755]
+
+ * test/ruby/test_exception.rb (test_exception_in_name_error_to_str):
+ add a corresponding test.
+
+Tue Dec 13 16:13:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_unlock): all threads requiring one file should
+ share same loading barrier, so it must be kept alive while those
+ are waiting on it. [ruby-core:41618] [Bug #5754]
+
+Tue Dec 13 07:30:14 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/webrick/httpresponse.rb (setup_header): 1xx responses
+ are allowed to have Keep-Alive connections.
+
+ * test/webrick/test_httpresponse.rb: corresponding test.
+
+Tue Dec 13 07:13:28 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/webrick/httpresponse.rb (setup_header): 204 and 304 responses
+ are allowed to have a Keep-Alive connection. [ruby-core:41581]
+
+ * test/webrick/test_httpresponse.rb: corresponding test.
+
+Tue Dec 13 06:29:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_magic_comment): should pass the proper value.
+ [ruby-dev:44984][Bug #5753]
+
+Tue Dec 13 05:50:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): splat single
+ argument if optional arguments are defined not only mandatory or
+ post arguments. [ruby-core:41557] [Bug #5730]
+
+Mon Dec 12 22:35:39 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * parse.y (stmt_or_begin): changed the error message for BEGIN not
+ at toplevel. [ruby-dev:44963] [Bug #5738]
+
+Mon Dec 12 17:29:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * README: Fixed SupportedPlatforms URL in the README.
+ patched by eMxyzptlk. https://github.com/ruby/ruby/pull/62
+
+Mon Dec 12 17:26:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_feature_p): lazy assigned load_path searched in
+ loading_table were not expanded, but all features, pushed to
+ loading table, are expanded. a patch by Yura Sokolov
+ <funny.falcon AT gmail.com> in [ruby-core:41545]. [Bug #5727]
+
+Mon Dec 12 15:41:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_truncate): fix typo. patched by
+ Nick Howard <ndh AT baroquebobcat.com>.
+ https://github.com/ruby/ruby/pull/65
+
+Sun Dec 11 12:19:17 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: includes the sequence number of UID in a error
+ message. suggested by art lussos.
+ [ruby-core:41413] [Feature #5692]
+
+Sun Dec 11 11:42:10 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/syslog/syslog.c: fix a typo. [ruby-core:41585] [Bug #5740]
+
+Sun Dec 11 10:48:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exit_initialize): deal with true and false as well as
+ Kernel#exit. [ruby-dev:44951] [Bug #5728]
+
+Sun Dec 11 10:37:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_check_to_int): new function to convert a VALUE to
+ an Integer if possible, but returns nil instead of raising an
+ exception otherwise.
+
+Sun Dec 11 10:34:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_exit_status_code): extract from rb_f_exit_bang and
+ rb_f_exit. assume 0 to be success in Kernel#exit! too.
+
+Fri Dec 9 19:24:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/iso-8859-16-tbl.rb: add ISO-8859-16 converter.
+
+ * enc/trans/single_byte.trans: ditto.
+
+Fri Dec 9 14:28:40 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_path_convert): don't convert it when the path string is
+ ascii only. [ruby-core:41556] [Bug #5733]
+ tests are contributed by nobu.
+
+Fri Dec 9 08:00:15 2011 Luis Lavena <luislavena@gmail.com>
+
+ * include/ruby/win32.h: undef stat to silence mingw-w64 stat
+ redefinition warnings (GCC 4.6.3).
+
+Thu Dec 8 23:38:24 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * variable.c (set_const_visibility): clear inline-cache when constant's
+ visibility is modified. [ruby-dev:44929]
+
+ * test/ruby/test_module.rb (test_private_constants_clear_inlinecache):
+ add test for it.
+
+Thu Dec 8 23:26:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): should sort after map, not before
+ it. in this case there is no difference, but we should write better
+ code. this bad smell was caught by nagachika.
+
+Thu Dec 8 22:31:13 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): need to sort the array of current
+ srcs before comparing to the sorted old srcs.
+ fixed the problem that the configuring stage of exts were always
+ run, introduced at r33801.
+
+Thu Dec 8 13:26:24 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rexml/test_order.rb (OrderTester#test_more_ordering): use
+ Zlib::GzipReader.open instead of Zlib::GzipReader.new with File.new.
+ fixed a test error on Windows introduced at r33946.
+
+Thu Dec 8 13:11:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess#test_sete[gu]id): silently
+ skip if not implemented such functions (such as, on Windows).
+ fixed test errors on Windows introduced at r33953.
+
+Thu Dec 8 12:57:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: forgotten to define HAVE_SOCKETPAIR for
+ windows.
+ fixed test errors on Windows introduced at r33947.
+
+Thu Dec 8 12:11:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_WERROR_FLAG): append all warning flags which
+ are enabled to compile, so that printf format modifiers properly
+ fail. [ruby-core:41351] [Bug #5679]
+
+Thu Dec 8 07:20:15 2011 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc: Document difference between match and =~, options with
+ Regexp.new and global variables. Patch by Sylvain Daubert.
+ [Ruby 1.9 - Bug #5709]
+
+Thu Dec 8 06:53:10 2011 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc: Fix example code to match documentation. Patch by
+ Jarno Lamberg. [Ruby 1.9 - Bug #5624]
+
+Wed Dec 7 19:04:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rpath): fix typo in the help string. a patch from
+ Yuji Yamano <yyamano AT kt.rim.or.jp> in [ruby-list:48568].
+
+Wed Dec 7 18:55:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_set_top_stack, vm_set_eval_stack): check for stack
+ overflow with stack_max before push new frame. [ruby-core:41520]
+ [Bug #5720]
+
+ * vm.c (vm_set_main_stack): no stack overflow chances after
+ vm_set_eval_stack().
+
+Wed Dec 7 09:58:15 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/bigdecimal/bigdecimal.c: Document +@, -@, hash, INFINITY, Nan.
+ Patch by Sylvain Daubert. [Ruby 1.9 - Feature #5622]
+
+Wed Dec 7 09:48:00 2011 Eric Hodel <drbrain@segment7.net>
+
+ * io.c (Init_IO): Mention io/console methods. [Ruby 1.9 - Bug #5602]
+ * ext/io/console/console.c: Mention that io/console must be required
+ similar to lib/time.rb
+
+Wed Dec 7 08:04:31 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb (module Psych): parse and load methods take
+ an optional file name that is used when raising Psych::SyntaxError
+ exceptions
+ * ext/psych/lib/psych/syntax_error.rb (module Psych): allow nil file
+ names and handle nil file names in the exception message
+ * test/psych/test_exception.rb (module Psych): Tests for changes.
+
+Tue Dec 6 18:26:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c: use db_version() instead of DB_VERSION_STRING to
+ detect runtime Berkeley DB version.
+ use dpversion instead of _QDBM_VERSION to detect runtime QDBM
+ version.
+ [ruby-dev:44948]
+
+Tue Dec 6 12:30:41 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: detect gdbm_version in libgdbm.
+
+ * ext/dbm/dbm.c: make DBM::VERSION more informative for gdbm, qdbm and
+ Berkeley DB 1.x. [ruby-dev:44944]
+
+Tue Dec 6 07:26:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * range.c: Improve documentation for Range. Patch by Chris Zetter.
+ [Ruby 1.9 - Bug #5656]
+
+Mon Dec 5 19:08:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (PFETCH_READY): separate gcc specific trick.
+
+Mon Dec 5 19:01:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_seteuid_m): fix argument.
+
+ * test/ruby/test_process.rb (test_geteuid): fix typo.
+
+ * test/ruby/test_process.rb (test_getegid, test_set[eg]uid): add.
+
+Mon Dec 5 18:56:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big_rshift), compile.c (validate_label,
+ iseq_build_from_ary_exception), cont.c (cont_capture), dir.c
+ (dir_open_dir), gc.c (objspace_each_objects), io.c (pipe_open)
+ (rb_io_advise), parse.y (parser_compile_string)
+ (rb_parser_compile_file), proc.c (binding_free), process.c
+ (rb_proc_exec_n, rb_seteuid_core, proc_setegid, rb_setegid_core)
+ (p_uid_exchange, p_gid_exchange), regparse.c (strdup_with_null),
+ signal.c (sig_dfl), vm.c (rb_iseq_eval, rb_iseq_eval_main),
+ vm_insnhelper.c (vm_expandarray): suppress
+ unused-but-set-variable warnings.
+
+ * class.c (rb_obj_methods), compile.c (iseq_compile_each),
+ iseq.c(iseq_load, rb_iseq_parameters), pack.c (pack_pack),
+ regcomp.c (is_not_included, update_string_node_case_fold),
+ transcode.c (rb_econv_open0, make_replacement),
+ vm_eval.c (raise_method_missing): remove unused variable.
+
+ * signal.c (reserved_signal_p): static.
+
+Mon Dec 5 14:27:23 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/{subst.h,win32.h}, ext/socket/rubysocket.h: revert
+ r33876. [ruby-core:41475] [Bug #5706]
+
+ * ext/socket/extconf.rb: the alternative hack for [Bug #5675].
+
+Mon Dec 5 10:18:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_gzreader_initialize): revert a part of r33937.
+ 1st, to change the mode of an IO is very sensitive problem, so
+ the maintainer of this library should judge it.
+ 2nd, usually Zlib::GzipReader.new is not called directly. #initialize
+ is called via .open, and in the method the I/O is opened in binary
+ mode, so there is no problem without changing the mode in #initialize.
+
+Sun Dec 4 22:53:12 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/tempfile.rb: don't use lock directory. [ruby-dev:39197]
+
+Sun Dec 4 22:34:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/tempfile.rb (Tempfile::MAX_TRY): remove unused constant.
+
+Sun Dec 4 12:11:28 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * lib/pp.rb: fix rdoc.
+
+Sun Dec 4 12:03:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#methods): Kernel#methods receives
+ zero or one argument. [ruby-core:37118] [Bug #4882]
+
+Sun Dec 4 10:15:00 2011 Luis Lavena <luislavena@gmail.com>
+
+ * ext/zlib/zlib.c (rb_gzreader_initialize): use binary mode by default
+ under Windows. Patch by Hiroshi Shirosaki. [ruby-core:40706]
+ [Feature #5562]
+
+ * include/ruby/encoding.h (void rb_econv_binmode): define NEWLINE
+ decorator.
+
+ * io.c (rb_cloexec_fcntl_dupfd): Introduce NEED_READCONV and
+ NEED_WRITECONV to replace universal newline decorator by CRLF only
+ when required to improve file reading and writing under Windows.
+ Patch by Hiroshi Shirosaki. [ruby-core:40706] [Feature #5562]
+ * io.c (do_writeconv): adjust binary mode if required.
+ * io.c (read_all, appendline, swallow, rb_io_getline_1): ditto.
+ * io.c (io_getc, rb_io_each_codepoint, rb_io_ungetc): ditto.
+ * io.c (rb_io_binmode, rb_io_ascii8bit_binmode): ditto.
+ * io.c (rb_io_extract_modeenc, rb_sysopen): ditto.
+ * io.c (pipe_open, prep_stdio, io_encoding_set): ditto.
+ * io.c (rb_io_s_pipe, copy_stream_body): ditto.
+
+ * test/ruby/test_io_m17n.rb (EOT): add test for pipe and stdin in
+ binary mode.
+
+ * win32/win32.c (init_stdhandle): remove O_BINARY from stdhandle
+ initialization.
+ * win32/win32.c (rb_w32_write): use FTEXT mode accordingly.
+
+Sat Dec 3 20:49:16 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (set_const_visibility): print a warning when no argument
+ is passwd to Module#private_constant. [ruby-list:48558]
+
+ * vm_method.c (set_method_visibility): ditto for
+ Module#private_class_method.
+
+Sat Dec 3 20:43:14 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (set_const_visibility): Module#private_constant has
+ changed the visibility of only the first argument. Now it changes
+ all of them. [ruby-list:48558]
+
+ * test/ruby/test_module.rb: add a test for above.
+
+Sat Dec 3 07:17:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (CFLAGS): append ARCH_FLAG.
+
+ * configure.in (ARCH_FLAG): exclude from CFLAGS.
+
+ * configure.in (UNIVERSAL_INTS): include short int. fix for
+ test/mkmf.
+
+Fri Dec 2 15:48:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpAllocReal): reduce extra frac.
+
+Fri Dec 2 15:41:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check whether -pie or -Wl,-pie is valid as
+ LDFLAGS. [ruby-core:41438] [Bug#5697]
+
+ * configure.in: use $linker_flag for LDFLAGS option which is not
+ limited to particular platforms.
+
+Thu Dec 1 23:21:58 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread_pthread.c (thread_timer): call prctl(PR_SET_NAME) only if
+ PR_SET_NAME is available.
+
+Thu Dec 1 22:31:16 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (linux_get_maxfd): change local variable name.
+
+Thu Dec 1 16:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/extconf.rb: add arguments for macro calls.
+ [ruby-core:41370] [Bug#5681]
+
+Thu Dec 1 16:20:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#try_func): fix broken patch at r33834.
+
+Thu Dec 1 14:43:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.h (Real): suppress false warning from
+ clang. [ruby-core:41418] [Bug#5693]
+
+Thu Dec 1 10:31:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LDFLAGS): -fstack-protector is always needed to
+ link static library created with it. [ruby-core:41387]
+ [Bug#5686]
+
+Thu Dec 1 07:03:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add sys/prctl.h test.
+ * thread_pthread.c (thread_timer): call prctl(PR_SET_NAME) to change
+ thread name. It may help to debug.
+
+Wed Nov 30 23:35:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * variable.c (rb_path2class): don't raise NameError when the middle
+ constant of the path is not defined but defined on toplevel.
+ [ruby-core:41410] [Bug #5691]
+
+Wed Nov 30 20:02:02 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: Simplified rb_econv_binmode, avoided a warning on cygwin.
+
+Wed Nov 30 08:57:07 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Use MakeMakefile's rm_f to avoid conflict with Rake or
+ FileUtils.
+ * test/ruby/test_module.rb: Hide MakeMakefile's inclusion in Object
+
+Wed Nov 30 09:12:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/encoding.rb (RDoc::Encoding.read_file): fixup newline chars
+ on Windows.
+ see https://github.com/rdoc/rdoc/issues/87
+
+ * test/rdoc/test_rdoc_markup_pre_process.rb
+ (TestRDocMarkupPreProcess#test_include_file,
+ TestRDocMarkupPreProcess#test_include_file_encoding_incompatible):
+ follow above change.
+
+Wed Nov 30 09:09:37 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): parse method can take an option file
+ name for use in exception messages.
+ * test/psych/test_parser.rb: corresponding tests.
+
+Tue Nov 29 09:07:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Fix indentations of constants at end of module.
+ Document some constants.
+
+Tue Nov 29 09:58:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_write_error2): suppress unused variable warning.
+
+Tue Nov 29 07:45:26 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Wrap comments to 78 columns and clean up formatting.
+
+Tue Nov 29 05:54:18 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Wrap mkmf.rb in module MakeMakefile to clean up Object
+ documentation. [Ruby 1.9 - Feature #5658]
+ * ext/extmk.rb: Use MakeMakefile::CONFIG instead of Object::CONFIG
+ * test/mkmf/base.rb: ditto
+
+Tue Nov 29 00:08:57 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (INSTRUBY_ARGS): added --mantype to apply mdoc2man.rb
+ to man pages. Fixes #5598.
+ (do-install-nodoc, do-install-local, do-install-man,
+ dont-install-nodoc, dont-install-local, dont-install-man):
+ No longer needs --mantype.
+
+ Reported by Rainer Orth <ro AT cebitec.uni-bielefeld.de>,
+ patch by George Koehler <xkernigh AT netscape.net>.
+
+Mon Nov 28 22:26:31 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rake/test_rake_directory_task.rb
+ (TestRakeDirectoryTask#test_directory_win32): shouldn't create any
+ file/directory on root directory. create on @tempdir (= Dir.pwd).
+ see https://github.com/jimweirich/rake/issues/91
+
+Mon Nov 28 12:57:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_write_error2): fwrite() returns ssize_t.
+
+Mon Nov 28 12:47:19 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (nodetype, nodeline): static. these functions are for
+ debugging, and not intend to be public.
+
+Mon Nov 28 12:37:54 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (initial_params): static. it seems to be forgotten at r33501.
+
+Mon Nov 28 12:32:24 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/win32.c (GetCurrentThreadHandle): remove
+ unused old API.
+
+Mon Nov 28 12:29:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb (Exports#initialize): remove old symbol name.
+
+Mon Nov 28 12:15:28 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/mkexports.rb (Exports#read_substitution): need to read
+ from subst.h too. [Bug #5675]
+
+Mon Nov 28 11:46:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_flush): release GVL during fsync() on Windows.
+
+Mon Nov 28 11:00:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/subst.h: typo of r33876.
+
+Mon Nov 28 10:36:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/subst.h: moved Windows specific substitutions from
+ win32.h.
+
+ * ext/socket/rubysocket.h: include ruby/subst.h. [Bug #5675]
+
+Mon Nov 28 10:20:58 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{Makeilfe.sub,win32.c} (FILE_COUNT, FILE_READPTR): move the
+ definitions from config.h to win32.c. I dared to have left such
+ macros, for other future compiler support.
+ [ruby-core:41313] [Bug #5674]
+
+Mon Nov 28 09:28:30 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_uchmod): typo. [Bug#5671] [ruby-dev:44898]
+
+ * test/ruby/test_file.rb (TestFile#test_chmod_m17n): test of above bug.
+
+Sun Nov 27 21:25:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: added -fno-strict-overflow. it suppress annoying
+ -Wstrict-overflow warning.
+
+Sun Nov 27 20:58:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_write_error2): get rid of warning on linux. fwrite
+ of glibc is tagged __attribute__ ((__warn_unused_result__))
+ if _FORTIFY_SOURCE != 0.
+ * vm_dump.c (rb_vm_bugreport): ditto.
+
+Sun Nov 27 19:09:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (stack_protector): disable on mingw. [Bug#5676]
+
+ * Makefile.in (DLDFLAGS): also needs -fstack-protector.
+ [Bug#5676]
+
+Sun Nov 27 14:13:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add -fstack-protector into XLDFLAGS as well as
+ XCFLAGS if stack-protector is used.
+
+Sun Nov 27 13:09:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: workaround to avoid MacOS X build error.
+ Maybe autoconf 2.61 is slightly buggy. [ruby-core:41316]
+
+Sun Nov 27 04:57:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (--no-undefined): r33840 breaks FreeBSD and DragonFly
+ with gcc 4.4 or later. Their environ is in /usr/libexec/ld-elf.so.1,
+ so it will be false negative.
+
+Sun Nov 27 04:55:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP::SSL_IVNAMES): rerefix 33701.
+ SSL_ATTRIBUTES stores names for set_params, they are symbol.
+ SSL_IVNAMES stores instance variable names.
+
+Sun Nov 27 00:16:07 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_body): use 0666 for permission argument for open.
+ [ruby-core:40865]
+
+Sat Nov 26 23:01:38 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_engine.rb: remove side effect of generic engine
+ load by explicitly loading software-based "openssl" engine for
+ all tests.
+
+Sat Nov 26 20:41:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP.get_response): enable use_ssl
+ if given URI object is https.
+ patched by Mark Ferlatte [ruby-core:40665] [Bug #5545]
+
+ * lib/net/http.rb (Net::HTTP.post_form): ditto.
+
+Sat Nov 26 20:01:18 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP::SSL_ATTRIBUTES): refix 33701.
+ store instance variable symbol names.
+
+Sat Nov 26 15:40:25 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (script): should be ./configure
+
+Sat Nov 26 15:39:18 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (before_script): wrong name, sorry.
+
+Sat Nov 26 15:31:34 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (before-script): autoconf required.
+
+Sat Nov 26 15:24:05 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml: Travis enable.
+
+Sat Nov 26 10:47:50 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb: remove checks for available functions.
+ * ext/openssl/missing.h: ditto.
+ Thanks, Tim Mooney for reporting this!
+ [Bug #5432] [ruby-core:40088]
+
+Sat Nov 26 10:22:28 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: add comment on where to find implementation
+ of OpenSSL::SSL::SSLSocket#session.
+
+Sat Nov 26 05:00:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (--no-undefined): RUBY_TRY_CFLAGS does nothing for
+ linker flags. use RUBY_TRY_LDFLAGS.
+
+Fri Nov 25 11:37:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (ioctl_narg_len, linux_iocparm_len): reinstantiate linux
+ specific narg length calculation.
+ * test/ruby/test_io.rb (test_ioctl_linux2): add new test for old and
+ unstructured ioctl.
+
+Fri Nov 25 10:39:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * Makefile.in (EXTLDFLAGS): export it.
+ * configure.in: add --no-undefined if --enable-shared is specified.
+ Gentoo enabled this option long time. Also, export EXTLDFALGS.
+
+Fri Nov 25 08:48:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: turn on PIE if --enable-shared is not specified.
+
+Fri Nov 25 08:05:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add -fstack-protector. It help to protect us from
+ stack smashing attack.
+
+Fri Nov 25 08:03:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add -D_FORTIFY_SOURCE=2. It provide some compile
+ time and runtime check for security.
+
+Fri Nov 25 08:00:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/mkmf.rb: get rid of warnings of mkmf.rb if -Wmissing-declarations
+ and/or -Wold-style-definition warnings if specified.
+ Patch by Nikolai Weibull. Thank you! [Bug #5459] [ruby-core:40200]
+
+Fri Nov 25 07:46:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add -Wall always.
+
+Thu Nov 24 20:02:40 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/openssl/test_engine.rb: use IO#reopen to restore stderr.
+
+Thu Nov 24 19:59:56 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_reopen): re-initialize buffering mode for stdout and
+ stderr.
+
+Thu Nov 24 11:12:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_fsync,rb_io_fdatasync): release GVL during fsync().
+ fsync() and fdatasync() may take a long time on slow disks and/or
+ if there is much dirty data.
+ Patch by Eric Wong. [Feature #5665] [ruby-core:41247]
+
+Thu Nov 24 10:05:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_engine.rb: Suppress output from 'openssl'
+ engine's RC4 cipher.
+ [Bug #5633] [ruby-core:41026]
+
+Thu Nov 24 08:05:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_dsa.c: remove redundant colon from error
+ message.
+ * ext/openssl/ossl_ssl.c: ditto.
+ * ext/openssl/ossl_pkey_rsa: ditto.
+ patched by Eric Hodel [Bug #5604] [ruby-core:40896]
+
+Wed Nov 23 20:03:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (ioctl_narg_len): don't use _IOC_SIZE macro on Linux.
+ On Linux some constants for ioctl(2) doesn't include the size of
+ its return value and 16bit value; for example FIONREAD 0x541B.
+ Moreover the manual, ioctl_list(2), says "Note that the size
+ bits are very unreliable: in lots of cases they are wrong,
+ either because of buggy macros using sizeof(sizeof(struct)),
+ or because of legacy values."
+ So we shouldn't use it.
+
+Tue Nov 22 18:07:32 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (_pioinfo): need to declare _pioinfo() before using
+ _osfhnd and other macros which uses _pioinfo() internally.
+
+Tue Nov 22 17:49:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (_pioinfo): make an inline function.
+
+Tue Nov 22 11:26:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+Tue Nov 22 11:33:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (dupfd): argument of _osfhnd and so on should not
+ have side effect.
+
+Tue Nov 22 11:26:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * bignum.c (rb_big_divide): refix of r33536. Don't change behavior of Bignum#/.
+ [ruby-core:40429] [Bug #5490]
+
+Tue Nov 22 10:46:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (ruby_float_step): improve floating point calculations.
+ [ruby-core:35753] [Bug #4576]
+
+ * numeric.c (ruby_float_step): correct the error of floating point
+ numbers on the excluding case.
+ patched by Masahiro Tanaka [ruby-core:39608]
+
+ * numeric.c (ruby_float_step): use the end value when the current
+ value is greater than or equal to the end value.
+ patched by Akira Tanaka [ruby-core:39612]
+
+Tue Nov 22 06:59:21 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb (test_fcntl_dupfd): there is no known platform
+ which don't have F_DUPFD. [ruby-dev:44874]
+
+Tue Nov 22 04:46:22 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: remove autoload from psych
+ * ext/psych/lib/psych/json.rb: ditto
+
+Tue Nov 22 00:44:59 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb (test_fcntl_dupfd): the argument of F_DUPFD is
+ minimum file descriptor.
+
+Tue Nov 22 00:25:17 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (linux_get_maxfd): get rid of a warning.
+
+Mon Nov 21 23:39:14 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (linux_get_maxfd): new function to find maximum fd on Linux.
+ (rb_close_before_exec): use linux_get_maxfd.
+
+Mon Nov 21 06:16:24 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (fiber_switch): ignore fiber context switch
+ because destination fiber is same as current fiber.
+ With out this, it may segv on FreeBSD 9.
+ patched by Koichi Sasada.
+
+Sun Nov 20 23:22:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile, extmake): regenerate makefiles
+ if globbed source file list is changed.
+
+ * lib/mkmf.rb (create_makefile): store ORIG_SRCS.
+
+Sun Nov 20 22:43:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/unicode.c (PROPERTY_NAME_MAX_SIZE): +1.
+ reported by Ken Takata. [ruby-dev:44894][Bug #5652]
+
+Sun Nov 20 11:01:28 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/set.rb (SortedSet.setup): remove old_init after initialize
+ method is redefined. The remove before redefinition makes the
+ warning prevention fragile. [ruby-dev:44892]
+
+Sun Nov 20 04:01:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (enc/unicode/name2ctype.h): remove duplicated
+ ifdefs.
+
+Sat Nov 19 19:31:47 2011 Tanaka Akira <akr@fsij.org>
+
+ * time.c (TIME_COPY_GMT): copy vtm.utc_offset and vtm.zone too.
+ patch by Tomoyuki Chikanaga.
+ [ruby-dev:44827] [Bug #5586]
+
+Sat Nov 19 16:36:57 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/net/http/test_http.rb: remove temporally files in ensure clause.
+
+Sat Nov 19 08:18:41 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/net/http/test_http.rb: remove temporally files.
+
+Fri Nov 18 17:18:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_raw, console_set_raw)
+ (console_getch): optional parameters. [EXPERIMENTAL]
+
+Fri Nov 18 16:12:11 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_cooked, console_set_cooked):
+ new methods to reset cooked mode. [EXPERIMENTAL]
+
+Fri Nov 18 13:20:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/unit/assertions.rb (MINI_DIR): quick dirty hack to get rid of
+ warnings when using assert/assert_respond_to.
+
+Fri Nov 18 13:03:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_cloexec_open): set O_NOINHERIT instead of O_CLOEXEC if it is
+ available (for Windows).
+
+ * win32/win32.c (fcntl): on F_DUPFD, determine the inheritance of the
+ new handle by O_NOINHERIT flag of original fd.
+
+Fri Nov 18 08:00:41 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.8.1 (r6750)
+ * test/minitest/*: ditto
+ * configure.in: Improved gcc-llvm error message to help people migrate.
+
+Thu Nov 17 20:43:34 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: revert a part of the patch in [ruby-dev:41531].
+ don't use db.h with other headers. [ruby-dev:44884].
+
+Thu Nov 17 20:23:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * benchmark/bm_io_select[23].rb: use Process::RLIMIT_NOFILE only when
+ it is defined. if it is not defined, assume 64 as the max of fds.
+
+Thu Nov 17 10:36:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb (load_file): make sure opened yaml files are
+ also closed. [ruby-core:41088]
+
+Wed Nov 16 18:13:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (LIBRUBY_A): check if generated linked library is
+ valid for extconf.
+
+Wed Nov 16 13:51:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2ulong): need to calc in unsigned long, because
+ the range of VALUE is larger than it on LLP64 platform, such as Win64.
+ this change fixes the failures of test/-ext-/num2int.
+
+Wed Nov 16 12:02:47 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/webrick/test_cgi.rb (TestWEBrickCGI#start_cgi_server): there are
+ no guarantee of existence of RbConfig::CONFIG['LIBPATHENV'].
+ it only exists in Unix-like environments.
+
+ * test/webrick/test_filehandler.rb
+ (WEBrick::TestFileHandler#test_script_disclosure): ditto.
+
+Wed Nov 16 11:34:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (argf_next_argv): wrong timing of setting ecflags.
+ fixed the failure of TestArgf#test_textmode introduced at r33662.
+
+Wed Nov 16 10:45:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/-test-/num2int/num2int.c: remove an unnecessary and wrong decl
+ of rb_stdout. it's declared in ruby.h correctly.
+
+Wed Nov 16 10:26:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2ull): add a cast to get rid of a VC++ warning.
+
+Wed Nov 16 09:39:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/minitest/unit.rb (assert_raises): experimental fix to run
+ correctly on chkbuild over 64bit linux. call exception_details only
+ when the detail is really needed to avoid create needless inspect
+ under ulimit-ed environment.
+
+Wed Nov 16 06:34:30 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_thread.rb (test_condvar_timed_wait): use
+ assert_operator.
+
+Tue Nov 15 21:56:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_sleep.rb (test_sleep_5sec): 0.1sec tolerance is too
+ small for busy environment.
+
+Tue Nov 15 20:08:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c, thread.c, ext/pty/pty.c, ext/fiddle/closure.c: use
+ __linux__ macro for consistency.
+
+Tue Nov 15 14:45:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h(NUM2LONG, NUM2INT, NUM2SHORT, NUM2LL,
+ INT2NUM, UINT2NUM, LONG2NUM, ULONG2NUM, NUM2CHR): wrap by
+ macros.
+
+Tue Nov 15 13:38:14 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * include/ruby/defines.h (FLUSH_REGISTER_WINDOWS): move sparc asm code
+ to a separate file sparc.c for preventing inlining optimization.
+ Patched by Jurij Smakov. [Bug #5244] [ruby-core:40685]
+ * sparc.c (rb_sparc_flush_register_windows): ditto.
+ * configure.in: ditto.
+
+Tue Nov 15 13:11:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h: get rid of gcc specific rb_long2int(),
+ NUM2LONG(), NUM2INT(), NUM2SHORT(), NUM2LL(), INT2NUM(),
+ UINT2NUM(), LONG2NUM(), ULONG2NUM() and NUM2CHR()
+ implementation. Because 1) They don't make any better code
+ at all. 2) Inline function have a better debugger supoort.
+
+Tue Nov 15 09:58:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (TestIO#test_fcntl_dupfd): fix OpenBSD test
+ failure. [ruby-dev:44872]
+
+Tue Nov 15 09:50:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (print_indent_tree): fix double printing of ENCLOSE_OPTION
+ children bug. patched by Suraj Kurapati. [ruby-core:40964]
+
+Tue Nov 15 01:53:48 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/ruby/test_io.rb (test_fcntl_dupfd): fix test error on
+ SnowLeopard. Pointed out by CHIKANAGA Tomoyuki. [ruby-dev:44866]
+
+Mon Nov 14 22:06:02 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey.c (ossl_pkey_new_from_file): set close-on-exec
+ flag.
+
+ * ext/openssl/ossl_x509cert.c (rb_fd_fix_cloexec): ditto.
+
+Mon Nov 14 14:54:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c (rb_big2ull): fix 32bit platform breakage. we must
+ not assume sizeof(VALUE) == sizeof(LONG_LONG).
+ * test/-ext-/num2int/test_num2int.rb (class TestNum2int):
+ fix false assumption on 32bit platform.
+
+Mon Nov 14 14:52:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * numeric.c (rb_fix2ushort): fix typo. use num rb_num2ushort()
+ instead of num2uint().
+
+Sun Nov 13 10:31:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h: add #ifdef comment.
+
+Sun Nov 13 10:28:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h: add NUM2SHORT(), NUM2USHORT() macros.
+ * numeric.c: ditto.
+
+ * test/-ext-/num2int/test_num2int.rb: add testcases for NUM2SHORT().
+ * ext/-test-/num2int/num2int.c: ditto.
+
+Sun Nov 13 10:23:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c (rb_big2ull): fix off-by-twice bug of NUM2ULL.
+ * test/-ext-/num2int/test_num2int.rb (class TestNum2int):
+ fix a testcase too.
+
+Sun Nov 13 10:22:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/-ext-/num2int/test_num2int.rb (class TestNum2int):
+ add FIXNUM tests.
+
+Sun Nov 13 09:57:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * numeric.c (check_uint): fix off-by-one bug of NUM2UINT.
+ * bignum.c (rb_big2ulong): fix off-by-one bug of NUM2ULONG.
+
+ * test/-ext-/num2int/test_num2int.rb: add a testcase for NUM2INT()
+ NUM2UINT(), NUM2LONG(), NUM2ULONG(), NUM2LL and NUM2ULL().
+ * ext/-test-/num2int/depend: ditto.
+ * ext/-test-/num2int/extconf.rb: ditto.
+ * ext/-test-/num2int/num2int.c: ditto.
+
+Sun Nov 13 23:47:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dbm/extconf.rb: use convertible_int.
+
+Sun Nov 13 23:45:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (checking_for): should not modify the result.
+
+ * lib/mkmf.rb (have_struct_member): accept compiler options.
+
+ * lib/mkmf.rb (convertible_int): add restricted support of struct
+ member, and TYPEOF_ macro.
+
+Sun Nov 13 23:21:24 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_reorganize): set close-on-exec flag after
+ gdbm_reorganize(). gdbm_reorganize() opens a new database internally.
+
+Sun Nov 13 19:57:18 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: rollback for each headers for each libraries.
+
+Sun Nov 13 16:24:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: treat libc as a choice for a library which
+ provide ndbm API.
+
+Sun Nov 13 15:40:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: duplicate $libs and $defs when save them.
+
+Sun Nov 13 12:43:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: rollback $libs and $defs when db detection is
+ failed. It fixes -lgdbm -lqdbm when the system has qdbm and gdbm
+ without gdbm_compat.
+
+Sat Nov 12 21:14:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/webrick/test_cgi.rb (class TestWEBrickCGI): respect
+ RbConfig::CONFIG["LIBPATHENV"]. [Bug #5135] [ruby-core:38653]
+ * test/webrick/test_filehandler.rb (class WEBrick): ditto.
+
+Sat Nov 12 20:57:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (test_fcntl_dupfd): skip if Fcntl::DUPFD
+ is not defined. Pointed out by CHIKANAGA Tomoyuki. Thanks.
+
+Sat Nov 12 17:26:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (do_ioctl, ioctl_narg_len, setup_narg, rb_ioctl): use
+ ioctl_req_t.
+
+Sat Nov 12 17:01:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dbm/extconf.rb (headers.db_check): reduce duplicated code.
+
+Sat Nov 12 15:59:42 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: dbm_clearerr should be available in all ndbm
+ implementation. If it is not available, it is caused by
+ header/library mismatch such that Berkeley DB header & gdbm library.
+
+ * ext/dbm/dbm.c (fdbm_store): use dbm_clearerr() unconditionally.
+ gdbm 1.9 provides it as a real function instead of a empty macro.
+
+Sat Nov 12 13:35:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bootstraptest/runner.rb: don't suppress SIGINT.
+ [Feature #5612] [ruby-dev:44856]
+
+Sat Nov 12 11:20:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (fcntl_narg_len): introduce narg calculation for fcntl instead
+ of hard coded 256.
+ * io.c (setup_narg): ditto.
+
+Sat Nov 12 11:19:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (test_fcntl_dupfd): add another fcntl test.
+
+Sat Nov 12 11:18:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (test_fcntl_lock_freebsd): add a testcase
+ of fcntl lock for freebsd.
+
+Sat Nov 12 11:16:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (ioctl_narg_len): Linux doesn't have IOCPARM_LEN macro, but
+ has _IOC_SIZE. support it.
+
+Sat Nov 12 11:13:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_ioctl): don't expose our sanity check value to ruby script.
+ It may change string value meaning if the value is string.
+ (e.g. MacOS X has F_GETPATH ioctl)
+ * io.c (rb_fcntl): ditto.
+
+Sat Nov 12 11:06:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (ioctl_req_t): Type of req argument of ioctl() depend on platform.
+ Moreover almost all linux ioctl can't be represented by 32bit integer
+ (i.e. MSB is 1). We need wrap ioctl argument type.
+ [Bug #5429] [ruby-dev:44589]
+ * io.c (struct ioctl_arg): ditto.
+ * io.c (rb_ioctl): ditto.
+ * test/ruby/test_io.rb (test_ioctl_linux): add a testcase for ioctl
+
+Sat Nov 12 11:00:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (struct io_cntl_arg): remove io_p member.
+ * io.c (nogvl_fcntl, do_fcntl, rb_fcntl): separated from ioctl functions.
+ * io.c (nogvl_io_cntl): remove fcntl depended logic.
+ * io.c (io_cntl): ditto.
+ * io.c (rb_io_ctl): ditto.
+ * io.c (rb_io_ioctl): ditto.
+
+Sat Nov 12 10:59:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (setup_narg): fix off by one bug.
+
+Sat Nov 12 10:56:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (+setup_narg): factor out length calculation logic.
+ * io.c (rb_io_ctl): ditto.
+
+Sat Nov 12 10:52:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (+ioctl_narg_len) new helper function.
+ * io.c (rb_io_ctl): don't use ioctl specific length check
+ if caller is fcntl.
+
+Fri Nov 11 23:00:46 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: db_prefix is not required now.
+
+Fri Nov 11 21:13:30 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_initialize): use GDBM_CLOEXEC if available.
+
+Fri Nov 11 21:00:05 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: fix dbm_pagfno and dbm_dirfno detection with
+ Berkeley DB. Macro definitions needs arguments to detect correctly.
+ SIZEOF_DSIZE needs -DDB_DBM_HSEARCH because db.h defines datum type
+ only if DB_DBM_HSEARCH is defined.
+
+Fri Nov 11 18:41:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_seteuid): separate an internal wrapper function
+ from the method implementation.
+
+Fri Nov 11 17:21:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_library, find_library, have_func): allow
+ arguments of function to be checked.
+
+Fri Nov 11 17:09:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (HAVE_BACKTRACE): fallback to 0.
+
+ * vm_dump.c (rb_vm_bugreport): show "Other runtime information"
+ header only when available.
+
+ * vm_dump.c (rb_vm_bugreport): get rid of modifying the content of
+ VM directly.
+
+ * vm_dump.c (rb_vm_bugreport): check if vm is non-null.
+ Pointed out by Ikegami Daisuke <ikegami.da@gmail.com>.
+ Thank you.
+
+Fri Nov 11 12:36:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (pipe_open): Remove fflush(stdin). it's no effect.
+ Pointed out by Ikegami Daisuke <ikegami.da@gmail.com>.
+ Thank you.
+
+Fri Nov 11 07:33:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb (Net::HTTP::SSL_ATTRIBUTES): Use symbol keys instead
+ of string keys to avoid duplicating parameters in
+ OpenSSL::SSL:SSLContext#set_params.
+
+Thu Nov 10 15:02:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_library, have_func, have_var, have_header):
+ add compiler option parameter.
+
+Thu Nov 10 07:45:16 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/lib/openssl/ssl.rb (class OpenSSL::SSL::SSLContext):
+ Document #set_params.
+
+Wed Nov 9 11:36:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (gvl_yield): don't prevent concurrent sched_yield().
+ [Bug #5130] [ruby-core:38647]
+
+Wed Nov 9 23:20:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_update_max_fd): fstat(2) can fail with other than
+ EBADF. [ruby-dev:44837] [Bug #5593]. Cf.
+ http://pubs.opengroup.org/onlinepubs/9699919799/functions/fstat.html
+
+ * io.c (rb_sysopen): max fd is updated in rb_sysopen_internal()
+ already.
+
+Wed Nov 9 22:13:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file.rb (TestFile#test_utime_with_minus_time_segv):
+ fixed previous commit.
+
+Wed Nov 9 19:53:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file.rb (TestFile#test_utime_with_minus_time_segv):
+ add test for r33685.
+
+Wed Nov 9 19:00:44 2011 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_fiber.rb: add tests for r33684 (Fiber#resume).
+
+Wed Nov 9 16:40:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (unixtime_to_filetime): should check the return value
+ of localtime(). reported by snowjail at gmail.com.
+ [ruby-dev:44838] [Bug #5596]
+
+Thu Nov 9 13:17:25 2011 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_m_transfer, rb_fiber_resume): prohibit using
+ "resume" after "transfer" method are used. You should not mix
+ "resume" fiber and "transfer" fiber.
+ [Bug #5526]
+
+ * NEWS: add information about this change.
+
+Wed Nov 9 11:40:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/Doxyfile.tmpl (INCLUDE_PATH): add srcdir and include.
+ [ruby-core:40843] [Bug #5597]
+
+Wed Nov 9 11:02:54 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (do_select): fix cast, tv_sec is time_t.
+
+Wed Nov 9 10:32:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: should not use test -e for portability.
+ [ruby-core:40841] [Bug #5594]
+
+Wed Nov 9 04:52:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/tree_builder.rb: dump complex numbers,
+ rationals, etc with reference ids.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
+ * ext/psych/lib/psych/visitors/to_ruby.rb: loading complex numbers,
+ rationals, etc with reference ids.
+ * test/psych/test_object_references.rb: corresponding tests
+
+Tue Nov 8 23:34:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_fetch, fdbm_key, fdbm_delete, fdbm_store)
+ (fdbm_has_key, fdbm_has_value): get rid of overflow.
+
+ * ext/gdbm/gdbm.c (rb_gdbm_fetch2, rb_gdbm_nextkey)
+ (rb_gdbm_delete, fgdbm_store, fgdbm_has_key): ditto.
+
+ * ext/dbm/dbm.c (fdbm_delete_if): hide intermediate objects.
+
+ * ext/gdbm/gdbm.c (fgdbm_delete_if): ditto.
+
+ * ext/dbm/extconf.rb: check size of datum.dsize to get rid of
+ overflow.
+
+Tue Nov 8 23:30:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c (PATH_MAX): define if not defined. [ruby-core:40840]
+
+Tue Nov 8 23:26:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tcltklib.c (rb_thread_critical): fix type.
+
+ * ext/tk/tcltklib.c (eventloop_sleep, lib_eventloop_core): int is
+ enough for micro seconds. may need to check overflow in the
+ setter though.
+
+ * ext/tk/tcltklib.c (RSTRING_LENINT): check overflow if necessary.
+
+ * ext/tk/tcltklib.c (RbTk_ALLOC_N): wrapper for ckalloc() which
+ takes an int.
+
+ * ext/tk/tcltklib.c (ip_ruby_cmd_receiver_get, tcltklib_compile_info):
+ get rid overflow.
+
+ * ext/tk/tcltklib.c (tcltklib_compile_info): constified.
+
+Tue Nov 8 20:50:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb: split tests for read only database.
+
+ * test/gdbm/test_gdbm.rb: ditto.
+
+Tue Nov 8 18:59:07 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (MasterDevice): define only when used.
+ (SlaveDevice): ditto.
+ (deviceNo): ditto.
+
+Tue Nov 8 17:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_long2int): define as a macro always, so
+ that cpp conditionals can tell if it is provided.
+
+Tue Nov 8 17:30:50 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (cpp_command): remove multiple -arch flags since cpp
+ cannot work.
+
+Tue Nov 8 14:50:55 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_fwrite): call rb_w32_write_console() only if FMODE_TTY is
+ set. this is the one of the reason of IO writing slowness of Windows
+ in 1.9.3 or later.
+
+Tue Nov 8 11:01:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/pty/pty.c (get_device_once): FreeBSD 8 supported O_CLOEXEC flag
+ for posix_openpt, but FreeBSD 9's posix_openpt doesn't support
+ O_CLOEXEC and fails if specified.
+
+Tue Nov 8 02:36:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_READ_MASK,
+ ECONV_NEWLINE_DECORATOR_WRITE_MASK): new macro.
+
+ * io.c (rb_io_extract_modeenc, pipe_open, prep_stdio, argf_next_argv):
+ set TEXTMODE_NEWLINE_DECORATOR_ON_WRITE for textmode on creating IO
+ if the flag is available.
+
+ * io.c (make_writeconv): drop decorators for reading.
+
+ * io.c (make_readconv): drop decorators for writing.
+
+ * io.c (do_writeconv): existing writeconv is not the condition to raise
+ ArgumentError. should check textmode or not.
+
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_{cr,lf,crlf}_decorator_on_stdout): test above
+ changes.
+
+Mon Nov 7 22:03:47 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_initialize): set close-on-exec flag.
+
+Mon Nov 7 20:31:52 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: make sure strings that look
+ like base 60 numbers are serialized as quoted strings.
+ * test/psych/test_string.rb: test for change.
+
+Mon Nov 7 20:26:37 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/psych/test_yamlstore.rb: make test case inherit from MiniTest,
+ load psych/helper so that psych is loaded.
+
+Mon Nov 7 20:18:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/psych/test_yamldbm.rb: Test case should inherit from MiniTest,
+ load psych/helper so that psych and friends are loaded.
+
+Mon Nov 7 20:15:44 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: check dbm_pagfno() and dbm_dirfno().
+
+ * ext/dbm/dbm.c: use above to set close-on-exec flag.
+
+Mon Nov 7 20:05:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_fflush): remove fsync().
+
+ * io.c (rb_io_flush, rb_io_rewind): fsync() here.
+
+ these changes reduces fsync() calls to improve performance.
+ first reported at [ruby-list:48515] by ak7 at mail.goo.ne.jp .
+ [Bug #5585]
+
+Mon Nov 7 19:43:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_close_before_exec): use F_MAXFD if available.
+ F_MAXFD is available on NetBSD since NetBSD 2.0.
+
+Mon Nov 7 19:25:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_default_stdout_stderr_mode): new test for
+ r33627-33629. see [backport #5565]
+
+Mon Nov 7 01:14:22 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/debug.rb: add help for 'pp' and 'r[estart]'. patch
+ from Sho Hashimoto. [Bug #5093] [ruby-dev:44222]
+
+Sun Nov 6 14:49:58 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (rsock_recvmsg): declared.
+
+ * ext/socket/ancdata.c (rsock_recvmsg): extracted from
+ nogvl_recvmsg_func.
+ (nogvl_recvmsg_func): use rsock_recvmsg.
+
+ * ext/socket/unixsocket.c (recvmsg_blocking): use rsock_recvmsg.
+
+Sun Nov 6 03:22:36 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_engine.rb: add test for engine cipher. RC4 is used
+ because AES is not supported by the "openssl" engine currently.
+
+Sun Nov 6 00:11:52 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (Test::Unit::Options#non_options): options[:ruby]
+ should be an array. This fixes
+ "./ruby test/runner.rb test/testunit/test_parallel.rb"
+ [ruby-dev:44782]
+
+Sat Nov 5 20:30:30 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * insns.def: Some fixes and tweaks to English explanations
+
+Sat Nov 5 19:11:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_fcntl_dupfd): don't clear try_dupfd_cloexec if
+ fcntl(F_DUPFD) failed as fcntl(F_DUPFD_CLOEXEC).
+
+Sat Nov 5 18:05:12 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rsock_socketpair0): refactored.
+
+Sat Nov 5 17:55:52 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (rsock_socket0): don't clear try_sock_cloexec if
+ SOCK_CLOEXEC is not a reason for EINVAL.
+
+Sat Nov 5 16:27:52 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/pathname/lib/pathname.rb, ext/tk/lib/multi-tk.rb,
+ ext/tk/sample/demos-en/widget, lib/benchmark.rb, lib/irb/cmd/fork.rb,
+ lib/mkmf.rb, lib/net/ftp.rb, lib/net/smtp.rb, lib/open3.rb,
+ lib/pstore.rb, lib/rexml/element.rb, lib/rexml/light/node.rb,
+ lib/rinda/tuplespace.rb, lib/rss/maker/base.rb,
+ lib/rss/maker/entry.rb, lib/scanf.rb, lib/set.rb, lib/shell.rb,
+ lib/shell/command-processor.rb, lib/shell/process-controller.rb,
+ lib/shell/system-command.rb, lib/uri/common.rb: remove unused block
+ arguments to avoid creating Proc objects.
+
+Sat Nov 5 15:45:04 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (rsock_socket0): extract single socket() call with
+ CLOEXEC handling from rsock_socket.
+
+Sat Nov 5 13:49:40 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * lib/pathname.rb (Pathname#find): return an enumerator if
+ no block is given.
+
+ * test/pathname/test_pathname.rb: add tests for above.
+
+ [ruby-dev:44797] [Feature #5572]
+
+Sat Nov 5 11:18:12 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rsock_socketpair0): don't clear
+ try_sock_cloexec if SOCK_CLOEXEC is not a reason for EINVAL.
+
+Fri Nov 4 14:08:19 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_rsa.c (rsa_generate): [SECURITY] Set RSA
+ exponent value correctly. Awful bug. This bug caused exponent of
+ generated key to be always '1'. By default, and regardless of e
+ given as a parameter.
+
+ !!! Keys generated by this code (trunk after 2011-09-01) must be
+ re-generated !!! (ruby_1_9_3 is safe)
+
+ * test/openssl/test_pkey_rsa.rb: Add tests for default exponent and
+ specifying exponent by a parameter.
+
+Fri Nov 4 01:31:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_engine.rb: add first tests for builtin "openssl"
+ engine.
+
+Fri Nov 4 08:41:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb:
+ * ext/openssl/ossl_engine.c: add some missing OpenSSL engines.
+ Thanks, Yui Naruse, for providing the patch!
+ [Bug #5548] [ruby-core:40670]
+
+Fri Nov 4 04:54:10 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat: disable delayed expansion of enironment variable.
+ [Bug #5517] [ruby-core:40531]
+
+Fri Nov 4 03:45:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (make_writeconv): fixed typo of previous commit.
+
+Fri Nov 4 01:56:30 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (make_writeconv): unversal_newline converter is for reading.
+ so, if the io is text mode and has ECONV_UNIVERSAL_NEWLINE_DECORATOR
+ flag, use crlf_newline converter for writing.
+ this change fixes the problem about the luck of CR up Kernel.p and
+ Kernel.puts to stdout/stderr on Windows.
+
+Fri Nov 4 01:04:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (Init_readline): like r18313, libedit's
+ replace_history_entry may use offset instead of which.
+ so introduce history_replace_offset_func and initialize it.
+
+ * ext/readline/readline.c (hist_set): use history_replace_offset_func.
+
+Fri Nov 4 00:53:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (Init_readline): fix wrong condition.
+
+Thu Nov 3 23:53:04 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): ignore calling nl_langinfo_codeset()
+ on Windows except cygwin. [experimental]
+
+Thu Nov 3 22:45:09 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rsock_socketpair0): extracted from
+ rsock_socketpair to set close-on-exec flag for each socketpair()
+ call.
+
+Thu Nov 3 22:12:41 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/socket/init.c (rsock_socket): set close-on-exec flag when
+ SOCK_CLOEXEC is not available.
+
+Thu Nov 3 08:36:00 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_engine.rb: call Engine::cleanup on exit.
+ Patch provided by Yui Naruse, thanks!
+ [Bug #5547] [ruby-core:40669]
+
+Wed Nov 2 21:36:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (nucomp_rationalize): fix function. [ruby-core:40667]
+ [Bug #5546]
+
+Wed Nov 2 08:16:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/webrick/utils.rb: fix fcntl call.
+
+ * lib/drb/unix.rb: ditto.
+
+Wed Nov 2 00:43:59 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/psych/test_yamldbm.rb: avoid platform dependency.
+ patch by Naohisa Goto. [ruby-dev:44763] [Bug #5535]
+ * test/syck/test_yamldbm.rb: ditto.
+
+Wed Nov 2 00:14:15 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_marshal.rb: renamed methods duplicated with those
+ of marshaltestlib.rb.
+
+Tue Nov 1 22:08:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: reject llvm-gcc.
+
+Tue Nov 1 21:39:00 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_cloexec_pipe): remove workaround of r33587.
+ The bug of NetBSD is fixed on Mon Oct 31 21:31:29 UTC 2011.
+ http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=45545
+
+Tue Nov 1 19:49:08 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_reopen): call rb_fd_fix_cloexec instead of
+ rb_maygvl_fd_fix_cloexec.
+
+Tue Nov 1 19:00:30 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_reopen): call rb_maygvl_fd_fix_cloexec after freopen().
+
+Tue Nov 1 17:17:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): reset coderange after expanding path.
+
+Tue Nov 1 14:55:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (nogvl_io_cntl): rb_cloexec_fcntl_dupfd's 2nd argument is int.
+
+ * process.c (move_fds_to_avoid_crash): ditto.
+
+Tue Nov 1 13:14:33 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): support 'll' prefix.
+
+ * vsnprintf.c (__sfeof): rename to avoid the collision with NetBSD's
+ one.
+
+ * vsnprintf.c (__sferror): ditto.
+
+ * vsnprintf.c (__sclearerr): ditto.
+
+ * vsnprintf.c (__sfileno): ditto.
+
+Tue Nov 1 12:36:16 2011 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_maygvl_fd_fix_cloexec): change the visibility for
+ ext/socket.
+
+Tue Nov 1 12:00:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_maygvl_fd_fix_cloexec): renamed from fd_set_cloexec.
+
+ * internal.h (rb_maygvl_fd_fix_cloexec): declared.
+
+ * ext/socket/init.c (cloexec_accept): use rb_maygvl_fd_fix_cloexec.
+ (rsock_s_accept_nonblock): use rb_update_max_fd.
+ (rsock_s_accept): use rb_update_max_fd.
+
+Tue Nov 1 08:24:40 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (cloexec_accept): new function to use accept4 if
+ available.
+ (rsock_s_accept_nonblock): use cloexec_accept.
+ (accept_blocking): ditto.
+
+ * ext/socket/extconf.rb: check accept4.
+
+Tue Nov 1 07:31:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (nogvl_recvmsg_func): use MSG_CMSG_CLOEXEC if
+ available.
+
+ * ext/socket/unixsocket.c (recvmsg_blocking): ditto.
+
+Tue Nov 1 05:59:41 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rsock_socketpair): use SOCK_CLOEXEC if
+ available.
+
+Tue Nov 1 02:56:17 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (load_file_internal): convert the encoding of load path if
+ needed by platform. calling open() was replaced by rb_cloexec_open()
+ at r33549, but the function expected UTF-8 pathname on Windows.
+ (open() expected "locale" pathname.)
+ reported by taco via IRC.
+
+ * ruby.c (load_file): change the type of the 2nd parameter to pass its
+ encoding to load_file_internal().
+
+ * ruby.c (process_options, rb_load_file): follow above change.
+ NOTE: we should pass encoding information to rb_load_file().
+
+Mon Oct 31 23:49:38 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rsock_socketpair): extracted from
+ rsock_sock_s_socketpair.
+
+Mon Oct 31 23:31:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (rsock_socket): use SOCK_CLOEXEC if available.
+
+Mon Oct 31 21:47:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_cloexec_pipe): NetBSD 6.0 will support pipe2(2),
+ but its return value is -1 or larger than 0.
+
+Mon Oct 31 22:04:54 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c (fdbm_initialize): use O_CLOEXEC if available.
+
+Mon Oct 31 21:47:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_fd_fix_cloexec): renamed from
+ rb_fd_set_cloexec.
+
+ * io.c: follow the above renaming.
+
+ * ext/pty/pty.c: ditto.
+
+ * ext/socket/init.c: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/ancdata.c: ditto.
+
+ * ext/socket/unixsocket.c: ditto.
+
+Mon Oct 31 21:02:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS): retry IO.select for premature wakeup.
+
+Mon Oct 31 20:14:22 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fd_set_cloexec): clear CLOEXEC flag for standard file
+ descriptors.
+ (rb_cloexec_dup): use rb_cloexec_fcntl_dupfd.
+ (rb_cloexec_fcntl_dupfd): use F_DUPFD_CLOEXEC if available.
+
+Mon Oct 31 19:14:11 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/resolv/test_dns.rb: don't check maximum slept time.
+ ruby doesn't guarantee the maximum time because it is not a
+ realtime application.
+
+Mon Oct 31 13:10:06 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (setfl): extract from fcntl().
+
+ * win32/win32.c (dupfd): new function to support F_DUPFD. based on a
+ patch written by akr.
+
+ * win32/win32.c (fcntl): use above functions.
+
+ * include/ruby/win32.h (F_DUPFD): define. [experimental]
+
+ * include/ruby/win32.h (F_SETFL): change the value to correspond with
+ other platforms.
+
+Mon Oct 31 12:37:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (get_device_once): use O_CLOEXEC for posix_openpt if
+ available.
+
+Mon Oct 31 12:05:24 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_dup2): check oldfd == newfd at first.
+ pointed by KOSAKI Motohiro. [ruby-dev:44713]
+
+Mon Oct 31 10:50:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_cloexec_fcntl_dupfd): this function needs F_DUPFD.
+
+ * io.c (nogvl_io_cntl): use rb_cloexec_fcntl_dupfd() only if the
+ platform has F_DUPFD.
+
+Mon Oct 31 00:50:00 2011 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in: check -fno-omit-frame-pointer acceptance and usage
+ under MinGW. [ruby-core:39957] [Bug #5407]
+
+Mon Oct 31 00:16:11 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_cloexec_fcntl_dupfd): declared.
+
+ * io.c (rb_cloexec_fcntl_dupfd): new function.
+ (nogvl_io_cntl): use rb_cloexec_fcntl_dupfd.
+
+ * process.c (move_fds_to_avoid_crash): use rb_cloexec_fcntl_dupfd.
+
+Sun Oct 30 22:46:46 2011 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: check pipe2.
+
+ * io.c (rb_cloexec_pipe): use pipe2 if available.
+
+Sun Oct 30 22:32:44 2011 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (fill_standard_fds): use fstat() instead of fcntl(F_GETFD)
+ for MinGW. reported by Luis Lavena. [ruby-core:40526] [Bug #5516]
+
+Sun Oct 30 21:12:47 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_cloexec_pipe): declared.
+
+ * io.c (rb_cloexec_pipe): new function.
+ (rb_pipe): use rb_cloexec_pipe.
+
+ * thread_pthread.c (rb_thread_create_timer_thread): use
+ rb_cloexec_pipe.
+
+Sun Oct 30 20:06:07 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_dup): refine control flow.
+ (rb_cloexec_dup2): ditto.
+
+Sun Oct 30 18:45:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (fill_standard_fds): new function to open closed standard
+ file descriptors.
+ (ruby_sysinit): call fill_standard_fds.
+
+Sun Oct 30 10:50:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (install_recursive, bin-comm): split mere
+ string not path name. [ruby-core:40462] [Bug #5492]
+
+Sun Oct 30 10:47:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_cloexec_dup, rb_cloexec_dup2): CLOEXEC has been set if
+ dup3 succeeded.
+
+Sun Oct 30 09:58:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_dup): don't allocate standard file descriptors.
+
+Sun Oct 30 08:29:51 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_dup2): don't set CLOEXEC for standard file
+ descriptors.
+
+Sun Oct 30 07:47:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: check dup3.
+
+ * io.c (rb_cloexec_dup2): use dup3 if available.
+
+Sat Oct 29 22:06:37 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_cloexec_dup2): declared.
+
+ * io.c (rb_cloexec_dup2): new function.
+ (io_reopen): use rb_cloexec_dup2.
+
+Sat Oct 20 21:08:18 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * win32/Makefile.sub (CONFIG_H): have stdint.h if VC2010.
+ [Bug #5243]
+
+Sat Oct 29 20:59:08 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_dup): use F_DUPFD_CLOEXEC if available.
+
+Sat Oct 29 20:00:26 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_cloexec_dup): declared.
+
+ * io.c (rb_cloexec_dup): new function.
+ (ruby_dup): use rb_cloexec_dup.
+
+ * ext/pty/pty.c (pty_getpty): use rb_cloexec_dup.
+
+ * ext/openssl/ossl_bio.c (ossl_obj2bio): ditto.
+
+Sat Oct 29 16:11:34 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c (sdbm_prep): use O_CLOEXEC if available.
+
+Sat Oct 29 14:26:56 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_open): use O_CLOEXEC if available.
+
+Sat Oct 29 12:57:15 2011 Tanaka Akira <akr@fsij.org>
+
+ * process.c (ruby_setsid): use rb_cloexec_open.
+ (rb_daemon): ditto.
+
+ * ruby.c (load_file_internal): ditto.
+
+ * file.c (rb_file_s_truncate): ditto.
+ (file_load_ok): ditto.
+
+ * random.c (fill_random_seed): ditto.
+
+ * ext/pty/pty.c (chfunc): ditto.
+ (get_device_once): ditto.
+
+ * ext/io/console/console.c (console_dev): ditto.
+
+Sat Oct 29 10:40:19 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_cloexec_open): declared.
+
+ * io.c (fd_set_cloexec): extracted from rb_fd_set_cloexec.
+ (rb_cloexec_open): new function.
+ (sysopen_func): use rb_cloexec_open.
+ (rb_sysopen_internal): use rb_update_max_fd instead of
+ rb_fd_set_cloexec.
+
+Sat Oct 29 09:05:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.h: no Structured Exception Handling like macros.
+ [ruby-core:40432] [Bug #5491]
+
+Fri Oct 28 22:05:34 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c: RCS $Id$ removed.
+
+Thu Oct 27 18:58:00 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (parser_nextc): set encoding for the buffer of ripper.
+
+Fri Oct 28 06:06:08 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c (sdbm_prep): set FD_CLOEXEC flags for file
+ descriptors.
+ (fd_set_cloexec): new function.
+
+Fri Oct 28 03:01:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * vm_insnhelper.c (vm_call_cfunc): adding back useless hack. For some
+ reason, this fixes CFP errors on OS X 10.7.
+
+Fri Oct 28 00:09:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c (sdbm_prep): refactored for less nesting.
+
+Thu Oct 27 18:28:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_DEFINE_IF): revert r33534 partially to get
+ rid of AS_ECHO which is not available in autoconf 2.61.
+ [ruby-dev:44702]
+
+Thu Oct 27 16:10:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_divide): raise ZeroDivisionError if divisor is
+ zero, as well as Fixnum. [ruby-core:40429] [Bug #5490]
+
+Thu Oct 27 14:56:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_FUNC_ATTRIBUTE): unset temporary variable.
+
+ * configure.in (RUBY_STACK_GROW_DIRECTION): substitute CPU name as
+ shell variable name. based on the patch by The Written Word Inc. at
+ [ruby-core:40421]. [Bug #5488]
+
+Thu Oct 27 09:57:56 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/ruby.h (SIZE_MAX): define SIZE_MAX if not defined.
+ patched by The Written Word Inc. [ruby-core:40422] [Bug #5489]
+
+Thu Oct 27 08:47:38 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/psych/parser.c: remove unused variable.
+
+Thu Oct 27 08:38:41 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb: add -Wall flag by default when compiler is
+ GCC.
+
+Wed Oct 26 15:24:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_join): honor input encodings than ASCII-8BIT.
+ [ruby-core:40338] [Bug #5483]
+
+Tue Oct 25 21:52:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/defines.h: use "__sparc" instead of "sparc" and
+ "__sparc__".
+
+ * dln.c: ditto.
+
+ [ruby-dev:44694]
+
+Tue Oct 25 06:34:39 2011 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (match_aref): Use <code> around indexing examples to prevent
+ hyperlinks. [ruby-talk:389396]
+
+Mon Oct 24 23:55:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * complex.c: use "__sun" instead of "__sun__" to detect SunOS.
+
+ * math.c: ditto.
+
+ * hash.c: ditto.
+
+ * atomic.h: ditto.
+
+ * ext/io/wait/wait.c: ditto.
+
+ [ruby-dev:44693]
+
+Mon Oct 24 22:45:37 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c: use "__sun" instead of "sun" to detect SunOS.
+
+ * dln.c: ditto.
+
+ * cont.c: ditto.
+
+ * ext/sdbm/_sdbm.c: ditto.
+
+ [ruby-dev:44693]
+
+Mon Oct 24 22:38:08 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (get_device_once): delay rb_fd_set_cloexec() until
+ grantpt() on Solaris. grantpt() doesn't work with CLOEXEC on
+ Solaris 10.
+ reported by Naohisa GOTO. [ruby-dev:44688] [Bug #5475]
+
+Mon Oct 24 08:18:14 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_fallback_body): check nil for EOF of read method.
+ patch by Eric Wong. [ruby-core:39134] [Bug #5237]
+
+Sun Oct 23 18:21:23 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/tk/MANUAL_tcltklib.eng: fix typo.
+
+Sun Oct 23 18:03:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (rb_infinity, rb_nan): aggregated member initializers
+ need braces.
+
+Sun Oct 23 16:43:43 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/io/wait/wait.c: ioctl(2) is declared in unistd.h on Solaris.
+
+Sun Oct 23 16:33:35 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/tk/MANUAL_tcltklib.eng: fix typo. reported by Mimura-san.
+ [ruby-dev:44683] [Bug #5471]
+
+Sun Oct 23 08:01:29 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_fd_set_cloexec): set close-on-exec flag only if F_GETFD is
+ defined. reported by Luis Lavena. [ruby-core:40281] [Bug #5470]
+
+Sat Oct 22 19:48:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/openssl/test_ssl.rb (test_multibyte_read_write): start server
+ for each length to avoid race condition.
+
+Sat Oct 22 18:49:24 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_fd_set_cloexec): declared.
+
+ * io.c (rb_fd_set_cloexec): new function.
+ (ruby_dup): call rb_fd_set_cloexec to set close-on-exec flag.
+ (rb_sysopen_internal): ditto.
+ (rb_pipe): ditto.
+ (io_reopen): ditto.
+ (io_cntl): ditto.
+
+ * process.c (rb_f_exec): change the default :close_others option to
+ true.
+ (rb_f_system): ditto.
+ (move_fds_to_avoid_crash): call rb_fd_set_cloexec to set
+ close-on-exec flag.
+ (ruby_setsid): ditto.
+ (rb_daemon): ditto.
+
+ * thread_pthread.c (rb_thread_create_timer_thread): call
+ rb_fd_set_cloexec to set close-on-exec flag.
+
+ * ruby.c (load_file_internal): ditto.
+
+ * file.c (rb_file_s_truncate): ditto.
+ (file_load_ok): ditto.
+
+ * random.c (fill_random_seed): ditto.
+
+ * ext/pty/pty.c (chfunc): ditto.
+ (get_device_once): ditto.
+
+ * ext/openssl/ossl_bio.c (ossl_obj2bio): ditto.
+
+ * ext/socket/init.c (rsock_socket): ditto.
+ (rsock_s_accept_nonblock): ditto.
+ (rsock_s_accept): ditto.
+
+ * ext/socket/socket.c (rsock_sock_s_socketpair): ditto.
+
+ * ext/socket/ancdata.c (discard_cmsg): ditto.
+ (make_io_for_unix_rights): ditto.
+
+ * ext/socket/unixsocket.c (unix_recv_io): ditto.
+
+ * ext/io/console/console.c (console_dev): ditto.
+
+ [ruby-core:38140] [Feature #5041]
+
+Sat Oct 22 17:46:27 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: fix a exception name in previous patch.
+
+Sat Oct 22 17:43:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: make timeout configurable for DNS query.
+ patch by Eric Wong. [ruby-core:38533] [Feature #5100]
+
+Sat Oct 22 02:07:48 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * numeric.c (rb_infinity, rb_nan): use union to prevent bus error
+ caused by misalignment. [Bug #5469] [ruby-dev:44657]
+
+ * include/ruby/missing.h (INFINITY, NAN): ditto
+
+Fri Oct 21 22:02:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (initial_params): pack in a struct.
+
+ * gc.c (rb_gc_set_params): set parameters always.
+ [ruby-dev:44648] [Bug #5467]
+
+Fri Oct 21 12:10:20 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * atomic.h: change Solaris checking macro because atomic_ops can work
+ not only with Sun Studio but also with Fujitsu C Compiler.
+
+Fri Oct 21 02:11:00 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ns_spki.c: Complete documentation.
+ * test/openssl/test_ns_spki.rb: Integrate SPKI#to_text.
+
+Thu Oct 20 22:47:28 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (socklist_insert, socklist_lookup, socklist_delete):
+ new functions to wrap of st_insert(), st_lookup() and st_delete() to
+ socklist.
+ allocating socklist is deferred until it is really needed.
+
+ * win32/win32.c (exit_handler): delete socklist only if it is
+ initialized.
+
+ * win32/win32.c (rb_w32_sysinit, StartSockets): refactoring: move
+ initialization of select_mutex to StartSockets().
+
+ * win32/win32.c (exit_handler): refactoring: delete select_mutex only
+ if winsock is used.
+
+Thu Oct 20 22:38:53 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkcs5.c: add note on timing attacks and general
+ documentation.
+
+Thu Oct 20 21:19:15 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * vm_eval.c (check_funcall): set array elements one-by-one to fix
+ compile error with Fujitsu C Compiler 5.6 on Solaris 10 on Sparc.
+ [Bug #5464] [ruby-dev:44632]
+
+Thu Oct 20 13:09:35 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/defines.h (flush_register_windows): use software
+ trap on Debian Sparc 32-bit userspace. [Bug #5244]
+
+Thu Oct 20 12:28:22 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkcs5.rb: add RFC 6070 tests for PBKDF2 with
+ HMAC-SHA1
+
+Thu Oct 20 11:42:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (mmprepare): fix for fragmental size.
+
+ * util.c (mmswap_, mmrot3_): portability improvement.
+
+Thu Oct 20 05:58:02 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_ns_spki.c (Init_ossl_ns_spki): Stub documentation
+ for Netscape SPKI.
+
+Thu Oct 20 05:13:39 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.6.2 (r6712)
+ * test/minitest/*: ditto
+
+Thu Oct 20 06:55:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * lib/openssl/buffering.rb: Force multi-byte strings to be treated as
+ binary data.
+ * test/openssl/test_ssl.rb: Add test for it.
+
+ Thanks to Niklas Baumstark for reporting the issue!
+
+ [Ruby 1.9 - Bug #5233] [ruby-core:39120]
+
+Wed Oct 19 17:06:54 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * version.h (RUBY_VERSION): finally declare start of 2.0 work!
+
+Wed Oct 19 11:48:44 2011 Eric Hodel <drbrain@segment7.net>
+
+ * error.c (Init_Exception): Document $! and $@. Provide
+ recommendations for creating exceptions for a library.
+
+Wed Oct 19 11:25:46 2011 Eric Hodel <drbrain@segment7.net>
+
+ * error.c (Init_Exception): Add hierarchy of Exception subclasses.
+ Based on patch by Sylvain Daubert. [Ruby 1.9 - Bug #5438]
+
+Wed Oct 19 11:04:47 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c: Reformat block args to a single standard, { |args| ... }.
+ Patch by b t. [Ruby 1.9 - Bug #5393]
+
+Wed Oct 19 12:11:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Remove set, but unused variables.
+ ext/openssl/ossl_pkey.c: ditto
+
+ * ext/openssl/ossl_pkey_dh.c: Make functions passed to
+ rb_thread_blocking_region return VALUE instead of void.
+ ext/openssl/ossl_pkey_dsa.c: ditto
+ ext/openssl/ossl_pkey_rsa.c: ditto
+
+Tue Oct 18 23:28:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (identhash): share with type_numhash.
+
+ * st.c (st_hashtype_num): rename from type_numhash.
+
+Tue Oct 18 23:07:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (ruby_current_thread): probeprofiler has been removed
+ long ago.
+
+Tue Oct 18 23:05:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/eventids2.c (ripper_init_eventids2): separate
+ initializations of IDs and objects.
+
+ * ext/ripper/tools/generate.rb (generate_eventids1): ditto.
+
+ * parse.y (Init_ripper, InitVM_ripper): fix inversed roles.
+
+Sun Oct 16 19:46:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.gemspec (files): fixed typo, and
+ removed nonexistent file.
+
+ * ext/bigdecimal/bigdecimal.gemspec (homepage): added.
+
+ * ext/io/console/io-console.gemspec (homepage): ditto.
+
+Fri Oct 14 12:13:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (pty_check): should return nil until the child
+ terminates or stops. [ruby-dev:44600] [Bug #2642]
+
+Fri Oct 14 11:19:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_ary_rotate): export.
+
+Fri Oct 14 05:58:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * atomic.h (ATOMIC_INC, ATOMIC_DEC): return old values.
+ [ruby-dev:44596] [Bug #5439]
+
+ * signal.c (ruby_atomic_exchange): no needs to define on the
+ platforms where atomic.h is available.
+
+Thu Oct 13 19:29:40 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * atomic.h (ATOMIC_*): use atomic_ops(3C) when SunStudio on Solaris.
+ [ruby-dev:44596] [Bug #5439]
+
+Thu Oct 13 18:13:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * atomic.h(ATOMIC_SET): add cast to void to prevent misuse.
+ [ruby-dev:44596] [Bug #5439]
+
+Thu Oct 13 18:04:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer):
+ should use ATOMIC_EXCHANGE() to check the previous value.
+ [ruby-dev:44596] [Bug #5439]
+
+Wed Oct 12 23:39:58 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/openssl/test_ssl.rb: Move duplicated tests for SSL::Session to
+ test_ssl_session.rb
+
+Tue Oct 11 08:49:40 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_initialize): Improve explanation of Array.new
+ parameters. Patch by Alvaro Pereyra Rabanal. [Ruby 1.9 - Bug #5425]
+ * array.c (rb_ary_s_try_convert): Fix typo (try => tries)
+ * array.c (rb_ary_rindex): Add spacing for block.
+ * array.c (rb_ary_uniq_bang): Describe block
+ * array.c (rb_ary_uniq): ditto
+
+Tue Oct 11 07:55:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c: Add a description to Array, minor cleanups. Patch by
+ Andrea Singh. [Ruby 1.9 - Bug #5412]
+
+Tue Oct 11 06:09:52 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/pp.rb: Move PP documentation to top of class PP. Patch by
+ Sylvain Daubert. [Ruby 1.9 - Bug #5430]
+
+Tue Oct 11 06:06:29 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/coverage/coverage.c (Init_coverage): Change list format and
+ describe Coverage.result output. Patch by Sylvain Daubert.
+ [Ruby 1.9 - Bug #5428]
+
+Tue Oct 11 05:53:23 2011 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (Init_Object): Add reference to BasicObject, brief
+ explanation of constant lookup. Based on patch by Alvaro Pereyra
+ Rabanal.
+ [Ruby 1.9 - Bug #5426]
+
+Sun Oct 9 11:06:52 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/psych/test_yamldbm.rb: don't run test if the system
+ don't support yaml/dbm.
+
+ * test/syck/test_yamldbm.rb: ditto.
+
+Sat Oct 8 08:54:56 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c (group_by): Improve group_by description. Patch by b t.
+ [#5411]
+
+Sat Oct 8 03:17:51 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/shell.rb: Document some methods of Shell. Patch by Carol
+ Nichols. [Ruby 1.9 - Bug #5417]
+
+Fri Oct 7 17:54:28 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_send, assert_not_send):
+ parenthesize non-empty arguments.
+
+Fri Oct 7 06:35:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c: Use + for arguments described in documentation to allow
+ rdoc -C2 to work better. Remove <code> from method references to
+ allow cross-references in HTML documentation.
+
+Thu Oct 6 18:46:23 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * vm_eval.c (make_no_method_exception): fix typo.
+
+ * vm_insnhelper.c, vm_insnhelper.h: ditto.
+
+Thu Oct 6 16:29:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (make_no_method_execption): extract from
+ raise_method_missing().
+
+ * vm_eval.c (send_internal): remove inadvertent symbol creation
+ from public_send. based on a patch by Jeremy Evans <code AT
+ jeremyevans.net> in [ruby-core:38576]. [Feature #5112]
+
+ * vm_insnhelper.c (vm_call_method): remove inadvertent symbol
+ creation from send and __send__, too.
+
+Thu Oct 6 14:59:11 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/time.rb: Clean up Time documentation. Patch by Jake Goulding.
+ [Ruby 1.9 - Bug #5416]
+
+Thu Oct 6 10:00:54 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c (group_by): Improve documentation based on patch by b t.
+
+Thu Oct 6 09:56:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c: Clean up wording in Enumerable documentation. Patch by b t.
+ [Ruby 1.9 - Bug #5411]
+
+Thu Oct 6 09:17:18 2011 Eric Hodel <drbrain@segment7.net>
+
+ * time.c (Init_Time): Remove editorial comments from Time
+ documentation, fix link.
+
+Thu Oct 6 09:14:20 2011 Eric Hodel <drbrain@segment7.net>
+
+ * time.c (Init_Time): Improve Time documentation. Patch by Shane
+ Emmons. [Ruby 1.9 - Bug #5404]
+ * lib/time.rb: Improve time.rb documentation including Time.strptime.
+ Patch by Shane Emmons. [Ruby 1.9 - Bug #5402]
+
+Thu Oct 6 08:54:05 2011 Eric Hodel <drbrain@segment7.net>
+
+ * random.c: Improve documentation of Random. Patch by Gregory
+ Parkhurst. [Ruby 1.9 - Bug #5410]
+
+Thu Oct 6 01:44:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (cont_mark): mark original Thread object from saved_thread.
+ [ruby-dev:44571] [Bug #5386]
+
+Wed Oct 5 16:33:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_cfunc): remove useless hack.
+
+Wed Oct 5 05:56:39 2011 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c (Init_Hash): Improve Hash documentation. Patch by Alvaro
+ Pereyra Rabanal. [Ruby 1.9 - Bug #5405]
+
+Wed Oct 5 05:47:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * random.c (Init_Random): Add a top-level comment for Random. Patch
+ by Brett Bim. [Ruby 1.9 - Bug #5403]
+
+Wed Oct 5 02:50:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/syntax_error.rb: Add file, line, offset, and
+ message attributes during parse failure.
+ * ext/psych/parser.c: Update parser to raise exception with correct
+ values.
+ * test/psych/test_exception.rb: corresponding tests.
+
+Wed Oct 5 01:52:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): Use context_mark for indicating error
+ line and column.
+
+Wed Oct 5 01:22:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: use normal begin / rescue
+ since postfix rescue cannot receive the exception class. Thanks
+ nagachika!
+
+Tue Oct 4 21:10:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (class_alloc): allocate extra memory after containing
+ object setup to get rid of rare-but-potential memory leak.
+
+ * gc.c (gc_mark_children): skip marking extended members if ptr is
+ NULL.
+
+Tue Oct 4 16:17:50 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/time.rb (Time.strptime): use Time.at if d[:seconds] is set.
+ Reported by Christopher Eberz. [ruby-core:39903] Bug #5399
+
+Tue Oct 4 11:44:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (rb_gc_set_params): ruby_verbose can be Qnil, so use RTEST.
+
+Tue Oct 4 08:33:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/etc/etc.c: Document Etc, Etc.sysconfdir, Etc.systmpdir. Patch
+ by mathew murphy. [Ruby 1.9 - Bug #5396]
+
+Tue Oct 4 08:21:51 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/shellwords.rb: Update toplevel comment with an example. Patch
+ by Samnang Chhun. [Ruby 1.9 - Bug #5388]
+
+Tue Oct 4 08:15:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * proc.c (proc_call): Update documentation to match argument handling
+ of proc/Proc.new/lambda/->()
+
+Tue Oct 4 07:59:16 2011 Eric Hodel <drbrain@segment7.net>
+
+ * proc.c (proc_call): Fix documentation of Proc#call vs Proc#===.
+ [Ruby 1.9 - Bug #5349]
+
+Tue Oct 4 07:43:18 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_initialize): Make Array.new description match
+ call-seq. Patch by Henry Maddocks. [Ruby 1.9 - Bug #5344]
+
+Tue Oct 4 07:35:23 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_initialize): Add output for examples. Patch by
+ Jonathan Mukai. [Ruby 1.9 - Bug #5216]
+
+Tue Oct 4 07:30:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_s_create): Add example results for Array::[]. Patch
+ by Jonathan Mukai. [Ruby 1.9 - Bug #5215]
+
+Tue Oct 4 07:15:17 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.11. Move Deprecate into the
+ Gem namespace.
+
+Tue Oct 4 06:43:47 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: update psych version.
+ * ext/psych/psych.gemspec: generate new gemspec for new version.
+
+Tue Oct 4 06:29:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: calling `yaml` rather than `to_yaml`.
+ * ext/psych/lib/psych/nodes/node.rb: Rename `to_yaml` to just `yaml`
+ in order to avoid YAML::ENGINE switching from replacing this method.
+ * test/psych/helper.rb: fix tests for method name change.
+ * test/psych/test_document.rb: ditto
+ * test/psych/visitors/test_emitter.rb: ditto
+
+Tue Oct 4 06:20:19 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Match values against the
+ floating point spec defined in YAML to avoid erroneous parses.
+ * test/psych/test_numeric.rb: corresponding test.
+
+Tue Oct 4 05:59:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: ToRuby visitor can be
+ constructed with a ScalarScanner.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ScalarScanner can be
+ passed to the YAMLTree visitor.
+
+Tue Oct 4 05:47:23 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Define Regexp::NOENCODING
+ for 1.9.2 backwards compatibility.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Fix Date string
+ generation for 1.9.2 backwards compatibility.
+
+Mon Oct 3 23:56:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (rb_gc_set_params): output GC parameter change messages only
+ if -w/-v options are specified. these messages are output to stderr,
+ not to stdout. [ruby-core:39795] [Bug #5380]
+
+ * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
+
+Sun Oct 2 20:05:32 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_thread_mark), cont.c (cont_mark): revert r33369 and r33371
+ that may cause SEGV in certain environments.
+
+Sun Oct 2 12:14:06 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/psych/test_yamldbm.rb: add test case.
+ * test/syck/test_yamldbm.rb: ditto.
+
+Sun Oct 2 11:28:09 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/yaml/store.rb: make initialize method signature match the
+ superclass signature.
+
+Sun Oct 2 10:44:01 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * io.c: fix documentation of ARGF.lineno=.
+
+Sat Oct 1 20:03:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_framework): try as Objective-C.
+ https://twitter.com/nagachika/status/120294447660539904
+
+Sun Oct 2 08:43:25 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_thread_mark), cont.c (cont_mark): self pointer should not
+ be marked by itself. Patch by Koichi Sasada.
+ [ruby-dev:44567] [Bug #5386]
+
+Sun Oct 2 00:42:14 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_thread_mark): rb_thread_t needs self to be marked.
+ [ruby-dev:44566] [Bug #5386]
+
+Sat Oct 1 09:48:53 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (add_heap_slots, init_heap): reset heaps_inc zero when
+ heap slots are expanded by environment variable RUBY_HEAP_MIN_SLOTS.
+ [ruby-core:39777] [Bug #5380]
+
+ * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
+
+ * test/ruby/envutil.rb (assert_normal_exit): add :child_env option to
+ enable pass environment variables to child process.
+
+Thu Sep 29 13:17:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_join_1): should not copy the encoding of non-string
+ element after string element. [ruby-core:39776] [Bug #5379]
+
+Thu Sep 29 11:53:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (slot_sweep, rb_gc_finalize_deferred)
+ (rb_objspace_call_finalizer, rb_gc): run finalizers
+ sequentially. [ruby-dev:44562]
+
+Thu Sep 29 20:37:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/gdbm/gdbm.c (rb_gdbm_fatal): adjust argument type.
+
+Thu Sep 29 20:10:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (is_id_value, is_live_object): extract from id2ref().
+
+ * gc.c (run_finalizer): use object instead of object id.
+
+Thu Sep 29 20:07:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * use RB_TYPE_P which is optimized for constant types, instead of
+ comparison with TYPE.
+
+Wed Sep 28 09:20:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (pthread_np.h): needs pthread.h to be included
+ previously on OpenBSD. a patch by George Koehler <xkernigh AT
+ netscape.net> at [ruby-core:39752]. [Bug #5376]
+
+Wed Sep 28 04:41:35 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/psych/test_yamlstore.rb: use tmpdir for tmpfile.
+ * test/syck/test_yamlstore.rb: ditto.
+
+Wed Sep 28 04:10:46 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/bigdecimal/README: update report to.
+
+Tue Sep 28 04:05:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal_en.html: removed because this file isn't
+ maintained now.
+
+ * ext/bigdecimal/bigdecimal_ja.html: ditto.
+
+Tue Sep 27 09:55:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: make native_fd_select().
+ * thread.c (do_select): remove #ifdef _WIN32. Instead, use
+ native_fd_select() always.
+
+Tue Sep 27 09:44:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (do_select): remove cygwin specific hack. It's layer
+ violation and too large hack.
+ * thread.c (cmp_tv, subtract_tv): removed.
+
+Tue Sep 27 03:50:19 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/rexml/test_sax.rb: add require 'rexml/document'.
+
+Tue Sep 27 03:32:27 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/psych/test_yamldbm.rb: fix #setup and #teardown.
+ [Bug #5370] [ruby-core:39730]
+ * test/syck/test_yamldbm.rb: ditto.
+
+Mon Sep 26 11:27:38 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httputils.rb: Add MIME Type definition of .js and .svg.
+ patched by Hal Brodigan. [ruby-core:39704] [Bug #5365]
+
+Mon Sep 26 09:20:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: remove DJGPP support. It's not longer supported
+ since ruby 1.9.0.
+
+Mon Sep 26 09:07:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/defines.h: remove NextStep, OpenStep, Rhapsody
+ support. Last activity of their OSes are 7 years ago.
+ * configure.in: ditto.
+ * dir.c: ditto.
+ * ext/tk/extconf.rb: ditto.
+
+Mon Sep 26 09:02:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: remove a code for human68k. it's no longer
+ supported since r19677.
+
+Sun Sep 25 23:43:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: fix int_ossl_asn1_decode0_cons when being
+ fed arbitrary string values.
+ Clearly distinguish between the cases "universal, infinite and
+ not a SEQUENCE or SET" and "universal SEQUENCE or SET, possibly
+ infinite". Raise error for universal tags that are not infinite.
+ * test/openssl/test_asn1.rb: add a test for this.
+
+ Thanks to Hiroshi Yoshida for reporting this bug.
+ [Bug #5363] [ruby-dev:44542]
+
+Sun Sep 25 20:57:18 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/syck/test/yamldbm.rb: add test for Syck::DBM.
+ * test/psych/test_yamldbm.rb: add test for Psych::DBM.
+ * test/psych/test_yamlstore.rb: add test for Psych::PStore.
+
+Sun Sep 25 20:54:10 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/yaml/dbm/dbm.rb: fix #update, add #key for using instead #index.
+ [Bug #5305][ruby-dev:44485]
+
+Sun Sep 25 16:54:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (require_enc): reject only loading from untrusted
+ load paths. [ruby-dev:44541] [Bug #5279]
+
+ * transcode.c (load_transcoder_entry): ditto.
+
+Sun Sep 25 16:45:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: ignore all warnings from an arbitrary
+ header in /usr/local/include.
+
+Sun Sep 25 03:43:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enum.c (slice_before_i): use rb_attr_get to suppress wrong warning
+ for internal instance variable slicebefore_initial_state.
+
+Fri Sep 23 14:20:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: remove unused variable.
+
+Fri Sep 23 13:46:59 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ssl_session.rb: execute test_session_exts_read
+ only for OpenSSL versions >= 0.9.8k. Thanks, Eric Wong, for
+ reporting this.
+ [Bug #4961] [ruby-core:37726]
+
+Fri Sep 23 11:59:08 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ssl_session.rb: ensure server calls callbacks in
+ test_ctx_server_session_cb. Thanks to Eric Wong for the patch.
+ [Bug #5336] [ruby-core:39619]
+
+Thu Sep 22 02:53:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_cfunc): suppress a warning. note that
+ `volatile type *var' doesn't make var itself volatile.
+
+Thu Sep 22 01:52:48 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread_pthread.c (ubf_select): activate timer thread when interrupt
+ blocking thread.
+ A patch created by Koichi Sasada. [ruby-core:39634] [Bug #5343]
+ to cover race condition, timer thread periodically send SIGVTARLM to
+ threads in signal thread list. so you should activate timer thread
+ when interrupt a thread.
+
+Wed Sep 21 16:55:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/io/wait/test_io_wait.rb (TestIOWait#setup): of course, the
+ behavior of mingw is just same with mswin.
+
+Tue Sep 20 18:08:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_cvar_base): reduce duplicated checks and
+ move a warning outside the loop.
+
+Mon Sep 19 18:55:51 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/fileutils.rb (module FileUtils): improve performance of
+ FileUtils.compare_stream. a patch by Masaki Matsushita.
+ [Feature #5337] [ruby-core:39622]
+
+Mon Sep 19 18:42:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb:
+ select() with timeout may return early in old Linux kernels
+ with 250 Hz tickrate and no dynticks, so skip everything older
+ than 2.6.32 (which has long term support).
+ And, Make the timing assertions consistently use assert_operator with
+ timing difference in error message
+ Patch by Eric Wong. [Bug #5335] [ruby-core:39618]
+
+Mon Sep 19 09:28:06 2011 Eric Hodel <drbrain@segment7.net>
+
+ * test/openssl/test_ssl.rb (class OpenSSL): Test
+ OpenSSL::SSL::SSLSocket#session and #session=.
+
+Mon Sep 19 07:54:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_obj_clone): singleton class should be attached
+ singleton object to. a patch by Satoshi Shiba <shiba AT rvm.jp>
+ at [ruby-dev:44460]. [Bug #5274]
+
+Sat Sep 17 23:34:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_data_type): inherit the core type in ripper so
+ that checks in core would work. [ruby-core:39591] [Bug #5331]
+
+Sat Sep 17 12:44:04 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * lib/find.rb (Find.find): add documentation that Find.find
+ without block returns an enumerator.
+
+Thu Sep 15 11:39:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (mark_entry, mark_key, mark_keyvalue): adjust callback
+ argument types.
+
+Thu Sep 15 01:44:10 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/tk/*: Change encoding from EUC-JP to UTF-8
+
+Wed Sep 14 11:43:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_rcopy): added an argument guard.
+ Patch by NAKAMURA Usaku. [Bug #5306] [ruby-core:39435]
+
+Tue Sep 13 20:21:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pstore.rb, test/test_pstore.rb: suppress warnings with -v.
+
+ * lib/pstore.rb (PStore): always open in binary mode even if
+ default encodings are set. [Bug #5311] [ruby-core:39503]
+
+Tue Sep 13 05:37:15 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (Init_IO): update BINARY comment. it should not change the
+ encoding of the result to ASCII-8BIT. [ruby-talk:387719]
+
+Mon Sep 12 19:55:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_select): fix to ignore an argument
+ modification of rb_thread_fd_select().
+ based on a patch by Eric Wong. [Bug #5306] [ruby-core:39435]
+ * thread.c (rb_fd_rcopy): New. for reverse fd copy.
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb
+ (test_old_select_false_positive): test for bug5306.
+
+ * ext/-test-/old_thread_select/old_thread_select.c (fdset2array):
+ New. convert fdsets to array.
+ * ext/-test-/old_thread_select/old_thread_select.c (old_thread_select):
+ return 'read', 'write', 'except' argument of rb_thread_select()
+ to ruby script.
+
+Mon Sep 12 13:38:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (2.2.2), parse.y (rb_check_id): add
+ documents for rb_check_id().
+
+Mon Sep 12 12:53:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rake/file_list.rb (Rake::FileList#egrep): there is no need to
+ open files in binary mode.
+ see more details in https://github.com/jimweirich/rake/issues/74
+
+Mon Sep 12 12:42:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_exception.rb (TestException#test_exit_success_p):
+ assert also the cases when exiting with true and false.
+
+ * lib/test/unit/assertions.rb (assert_send): make arguments in
+ the default message clearer.
+
+Sun Sep 11 05:23:14 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Deal with subclasses of Matrix [redmine #5307]
+
+Sat Sep 10 13:38:20 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * dir.c (dir_s_aref):
+ * dir.c (dir_entries): Two small documentation fixes.
+ A patch from Aaron Lerch. [Bug #5302] [ruby-core:39404]
+
+Sat Sep 10 08:30:03 2011 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (GC_PROFILE_MORE_DETAIL, CALC_EXACT_MALLOC_SIZE):
+ define macros only if they are not defined.
+ fixes: [Ruby 1.9 - Feature #5291]
+
+Sat Sep 10 08:25:47 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (bv_decls): parse.y relies on $$ = $1 before action
+ routines. a patch from Michael Edgar. [Bug #5303]
+ [ruby-core:39429]
+
+Sat Sep 10 01:37:55 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * sample/drb/dhasenc.rb: coding cookie of Emacs is coding,
+ not encoding.
+
+ * sample/mine.rb: ditto.
+
+Fri Sep 9 21:56:40 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_sqrt): Fix comment.
+ BigDecimal#sqrt requires argument. Reported by Makoto Kishimoto.
+ Thanks for your contribution. [Bug #5267] [ruby-dev:44452]
+
+Fri Sep 9 11:00:55 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/rubygems/test_gem_commands_help_command.rb: Add one
+ `require` because if run test-all with test/unit parallel
+ running, sometimes this test fails by some constants not found.
+ The error reason is some worker doesn't require the file needed by
+ this test. This issue is related to [ruby-core:36168].
+
+Fri Sep 9 10:22:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_select): fix a typo to initialize efds
+ properly. [Bug #5299] [ruby-core:39380]
+
+Fri Sep 9 02:02:09 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * template/yarvarch.ja:
+ Change encoding from Shift_JIS to UTF-8
+
+Thu Sep 9 01:14:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * sample/drb/README.rd.ja:
+ * sample/drb/dhasenc.rb:
+ * sample/mine.rb:
+ Change encoding from EUC-JP to UTF-8
+
+Thu Sep 8 21:03:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: import nkf 2.1.2 (be9c280)
+ Bump version number/release date only.
+
+Thu Sep 8 12:43:18 2011 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (Init_GC): defined GC::Profiler.raw_data. based on the
+ patch by Eric Hodel. [ruby-core:37857] [Bug #4991]
+
+Thu Sep 8 09:02:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (id2ref): objects which are unmarked but not in sweep_slots
+ are not dead.
+
+Thu Sep 8 07:44:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_declare_transcoder, load_transcoder_entry): no
+ longer need to limit the length of transcoder library name.
+
+Thu Sep 8 07:36:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/syck/lib/syck/types.rb: use toplevel Syck.
+ for the case someone define Syck::Syck (or YAML::Syck).
+
+Thu Sep 8 07:33:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (id2ref): unmarked object is already dead while lazy
+ sweeping, and to it cannot come back since other objects
+ referred from it might have been freed already.
+
+Wed Sep 8 03:48:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/readline/README.ja:
+ Change encoding from EUC-JP to UTF-8
+
+Wed Sep 8 02:59:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/rexml/test_encoding.rb:
+ Add require 'require 'rexml/document'
+
+Wed Sep 8 02:53:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/nkf/nkf-utf8/nkf.c:
+ Change encoding from ISO-2022 to UTF-8
+
+Wed Sep 7 23:41:24 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb, test/rexml/test_comment.rb:
+ allow a single hyphen in comment. [Bug #5278] [ruby-core:39289]
+ Reported by Thomas Fritzsche. Thanks!!!
+
+Wed Sep 7 17:27:18 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/yaml.rb: explicitly specify ::Object to avoid the collision with
+ Syck::Object.
+
+Tue Sep 6 21:06:49 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (_run_suites): Now reports are written the
+ following order: Skip, Failure, Error. [Feature #5282]
+
+ * test_sorting.rb: test for above.
+
+ * test4test_sorting.rb: Ditto.
+
+ * lib/test/unit.rb (run): Put RUBY_DESCRIPTION before quitting.
+ [Feature #5282]
+
+Tue Sep 6 21:13:47 2011 Masaya Tarui <tarui@ruby-lang.org>
+
+ * win32/Makefile.sub (INSNS): change command line option -Ks to -Ku
+ for generate *.inc. because insns.def encoding has been changed SJIS
+ to UTF-8. if $BASERUBY is 1.9, -Ks cause an error. [Feature #5128]
+ (same as r33194)
+
+Tue Sep 6 15:55:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (load_transcoder_entry): concatenate paths directly.
+
+ * encoding.c (load_encoding): predefined encoding names are safe.
+ [ruby-dev:44469] [Bug #5279]
+
+ * transcode.c (load_transcoder_entry): ditto.
+
+Tue Sep 6 12:07:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c: enabled econv newline option.
+
+Tue Sep 6 06:44:57 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (dbl2ival): Fix Float#divmod and #round for 32 bit
+ platform. part 1 of [bug #5276]
+
+Tue Sep 6 06:44:25 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (flo_round): Fix criteria for 32 bits platform
+ part 2 of [bug #5276]
+
+Tue Sep 6 05:37:11 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb (test_core_03_notify): Fixed test failures
+ [ruby-dev:44430] [Ruby 1.9 - Bug #372]
+
+Mon Sep 5 20:59:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * insns.def: change encoding pragma for emacs (shift_jis to utf-8).
+
+Mon Sep 5 19:32:15 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * Makefile.in (INSNS): change command line option -Ks to -Ku for
+ generate *.inc. because insns.def encoding has been changed SJIS to
+ UTF-8. if $BASERUBY is 1.9, -Ks cause an error. [Feature #5128]
+
+Mon Sep 5 18:10:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_econv_binmode): newline decorators are
+ exclusive.
+
+Mon Sep 5 15:03:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rubygems/test_gem_security.rb
+ (test_class_build_self_signed_cert): reset opt[:trust_dir] to apply
+ temporary Gem.user_home.
+
+Mon Sep 5 10:04:35 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * README.ja, README.EXT.ja: resolve conflicts. [ruby-dev:44459]
+
+Mon Sep 5 05:13:22 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (flo_round): Make Float#round round big values [bug
+ #5272]
+
+Mon Sep 5 04:28:25 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (int_round): Integer#round always returns an Integer [Bug
+ #5271]
+
+Sun Sep 4 22:28:50 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (default_port, default_imap_port,
+ default_tls_port, default_ssl_port, default_imaps_port):
+ added methods for consistency with Net::POP.
+ based on the patch by art lussos. [ruby-core:38997] [Bug #5198]
+
+Sun Sep 4 21:19:19 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * Change encoding from EUC-JP to UTF-8. [Feature #5128]
+
+Sun Sep 4 00:47:39 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/ruby/test_fiber.rb (TestFiber#test_no_valid_cfp):
+ add a test. Unlike TestThread#test_no_valid_cfp,
+ this test succeeds even if win32ole is required (see r33153).
+
+Sun Sep 4 00:11:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_const_set): show the previous definition
+ location. [EXPERIMENTAL]
+
+Sat Sep 3 23:56:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (sizeof_struct_dirent_too_small): check if struct
+ dirent.d_name is too small.
+
+ * configure.in (RUBY_MINGW32): take tool prefix from CC.
+
+Sat Sep 3 23:52:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_next_argv): open in default text mode.
+ [ruby-core:39234] [Bug #5268]
+
+Sat Sep 3 18:40:57 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/thread.rb (SizedQueue#max=): raise ArgumentError if max is not
+ positive number. patch by Masaki Matsushita.
+ [ruby-dev:44449] [Bug #5259]
+
+ * test/thread/test_queue.rb (test_sized_queue_initialize,
+ test_sized_queue_assign_max): add tests for it.
+
+Fri Sep 2 21:11:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (validate_enc_binmode, prep_stdio): default to text mode on
+ dosish platforms. [ruby-core:38822] [Bug #5164]
+
+ * transcode.c (rb_econv_prepare_options): keep default ecflags
+ unchanged if no options.
+
+Fri Sep 2 14:36:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_const_defined_class): search
+ ancestors only when global scope. [ruby-core:39227] [Bug #5264]
+
+Fri Sep 2 09:58:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string, parser_yylex): ignore a backslash
+ which prefixes an non-ascii character, which has no escape
+ syntax. [ruby-core:39222] [Ruby 1.9 - Bug #5262]
+
+Fri Sep 2 04:05:25 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: emit strings tagged as
+ ascii-8bit as binary in YAML.
+ * test/psych/test_string.rb: corresponding test.
+
+Fri Sep 2 01:07:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_round): substitute machine dependent magic number.
+
+Thu Sep 1 17:31:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defineclass), vm_insnhelper.c (vm_get_cvar_base): see
+ also inherited constants for classes without superclass and
+ modules. [ruby-core:37698] [Bug #3423]
+
+Thu Sep 1 16:18:44 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * Release GVL while OpenSSL's public key generation.
+
+ t = Thread.new { print "."; sleep 0.1 }
+ key = OpenSSL::PKey::RSA.new(2048)
+ #=> Thread t works in parallel with public key generation if
+ OS/machine allows it.
+
+ This works with OpenSSL >= 0.9.8. From this version, it has new
+ public key generation function which allows us to interrupt the
+ execution while pkey generation iterations.
+
+ * ext/openssl/extconf.rb: Check existence of OpenSSL's new public key
+ generation function. (DH_generate_parameters_ex,
+ DSA_generate_parameters_ex and RSA_generate_key_ex.
+
+ * ext/openssl/ossl_pkey.{h,c} (ossl_generate_cb_2,
+ ossl_generate_cb_stop): Added new callback function for OpenSSL pkey
+ generation which handles Thread interruption by Ruby.
+ ossl_generate_cb_stop is the unblock function(ubf) for Ruby which
+ sets a stop flag. New pkey generation callback ossl_generate_cb_2
+ checks the stop flag at each iterations of OpenSSL and interrupts
+ pkey generation when the flag is set.
+
+ * ext/openssl/ossl_pkey_dsa.c (dsa_generate): Call
+ rb_thread_blocking_region with the above unblock function to release
+ GVL while pkey generation.
+
+ * ext/openssl/ossl_pkey_rsa.c (rsa_generate): ditto.
+
+ * ext/openssl/ossl_pkey_dh.c (dh_generate): ditto.
+
+ * test/openssl/test_pkey_{dh,dsa,rsa}.rb: Test it.
+
+Thu Sep 1 14:06:54 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_thread.rb (TestThread#test_no_valid_cfp): skip when
+ win32ole is required. in such case, win32ole redefines
+ Thread#initialize, and the block argument becomes to be not the top
+ of the thread, then this testcase always fails.
+
+Thu Sep 1 10:20:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{default_mode_on_dosish,
+ default_mode_on_unix,text_mode,binary_mode}): sorry for wrong test
+ committed in r33144. I'd misunderstood the spec of ruby's universal
+ newline.
+
+Thu Sep 1 09:27:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * variable.c (rb_autoloading_value): Fix the order of definitions.
+ It is used by autoload_defined_p.
+
+Wed Aug 31 17:28:23 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * variable.c (rb_autoload): There was a chance to run GC (from
+ rb_str_new2()) before finishing autoload_data_i construction. It
+ caused SEGV at rb_gc_mark() at autoload_i_mark.
+
+ * variable.c (rb_autoload_load): Move RB_GC_GUARD() to proper
+ position based on suggestion by CHIKANAGA Tomoyuki at
+ http://d.hatena.ne.jp/nagachika/20110826/ruby_trunk_changes_33070_33078
+
+ * variable.c (autoload_defined_p): Fix incompatible autoload behavior
+ that causes Rails crash. Class definition instruction defined in
+ 'defineclass' in insns.def always invokes rb_autoload_load for a
+ constant. It's invoked for every class definition regardless of
+ existence of autoload definition. rb_autoload_load checks if a
+ constant is defined as autoloaded, but new thread-safe autoload
+ returned different value if the constant is under autoloading.
+
+Wed Aug 31 17:20:56 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * Re-apply r33078, thread-safe autoload which is reverted at r33093.
+
+Wed Aug 31 16:28:04 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{default_mode_on_dosish,
+ default_mode_on_unix,text_mode,binary_mode}): tests for [Bug #5164].
+
+Wed Aug 31 15:54:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Merge json gem v1.5.4 (3dab4c5a6a97fac03dac).
+
+Wed Aug 31 13:09:41 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (flo_round): Avoid overflow by optimizing for trivial
+ cases [Bug #5227]
+
+Wed Aug 31 00:50:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_select_with_thread): and my typo. we all must
+ be more careful.
+
+Wed Aug 31 00:48:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (rb_thread_select): critical typo in r33117.
+
+Wed Aug 31 00:30:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb
+ (TestOldThreadSelect#test_old_select_read_timeout): if the machine
+ is fast enough, the time used by code around IO.select may be smaller
+ than Time implement threshold.
+
+Wed Aug 31 00:04:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/-test-/old_thread_select/old_thread_select.c (old_thread_select):
+ typo.
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb
+ (TestOldThreadSelect#test_old_select_signal_safe): use SIGINT instead
+ of SIGUSR1 because the former is general and the latter is platform
+ dependent.
+
+Tue Aug 30 23:59:36 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/intern.h (rb_w32_fd_copy): implement
+ for rb_thread_select() in thread.c. the use of rb_fd_copy() is
+ introduced in r33117.
+ [Bug #5251] [ruby-core:39195]
+
+ * thread.c (rb_thread_select): must call rb_fd_init() before using
+ rb_fdset_t. see the implementations of rb_fd_init()s if you want to
+ know the reason.
+
+Tue Aug 30 22:34:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/dl/test_callback.rb (test_callback_with_string): prevents
+ temporary string from GC.
+
+Tue Aug 30 22:25:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_cfunc): revert r33112. RB_GC_GUARD macro
+ protect a VALUE from GC. It's not for general anti-optimizing
+ purpose.
+
+Tue Aug 30 11:06:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Merge json gem 1.5.4+ (2149f4185c598fb97db1).
+ [Bug #5173] [ruby-core:38866]
+
+Tue Aug 30 09:57:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (Queue#pop): fix a race against Thread.wakeup.
+ Patch by Masaki Matsushita <glass.saga at gmail dot com>
+ [Bug #5195] [ruby-dev:44400]
+
+Tue Aug 30 09:48:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_entry): fix stack allocation failure on Debian
+ GNU/kFreeBSD.
+ Patch by Lucas Nussbaum <lucas at lucas-nussbaum dot net>.
+ [Bug #5241] [ruby-core:39147]
+
+Tue Aug 30 09:28:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_select): rewrite by using
+ rb_thread_fd_select(). old one is EINTR unsafe.
+ Patch by Eric Wong. [Bug #5229] [ruby-core:39102]
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb:
+ a testcase for rb_thread_select().
+ * ext/-test-/old_thread_select/old_thread_select.c: ditto.
+ * ext/-test-/old_thread_select/depend: ditto.
+ * ext/-test-/old_thread_select/extconf.rb: ditto.
+
+Tue Aug 30 09:08:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: fix a build failure on GNU Hurd.
+ Patch by Samuel Thibault <sthibault at debian dot org>. Thank you!
+ [Bug #5250] [ruby-core:39185]
+
+Sun Aug 29 23:22:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * test/ruby/test_numeric.rb (test_num2long): modify a test against the
+ change by r33108.
+
+Sun Aug 29 09:58:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * numeric.c (bit_coerce): A Fixnum and a Bignum are only permitted for
+ bitwise arithmetic with a Fixnum. #1792
+
+ * test/ruby/test_fixnum.rb: add tests for the above change.
+
+ * bignum.c (bit_coerce): A Fixnum and a Bignum are only permitted for
+ bitwise arithmetic with a Bignum. #1792
+
+ * test/ruby/test_bignum.rb: add tests for the above change.
+
+Sun Aug 28 15:38:17 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/date/date_parse.c (date_zone_to_diff): keep a temporary string
+ stored in variable while the contents buffer is being used.
+
+ * ext/date/date_parse.c (date_zone_to_diff): get rid of out of bounds
+ memory read. [ruby-dev:44409] [Bug #5213]
+
+Sun Aug 28 05:29:50 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.5.1 (r6596)
+ * test/minitest/*: ditto
+
+Sat Aug 27 20:46:05 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_vm_rewrite_dfp_in_errinfo): change return type
+ to suppress a warning.
+
+ * vm_core.h: ditto.
+
+Sat Aug 27 19:04:06 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * internal.h (rb_strftime_timespec): moved from time.c and define only
+ if ruby/encoding.h is included.
+
+ * internal.h (rb_strftime): ditto.
+
+Sat Aug 27 18:53:51 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * proc.c (proc_new): force to rewrite errinfo when calling Proc.new in ensure.
+ [Bug #5234] [ruby-core:39125]
+ This code will be removed after changing throw mechanism (see r33064).
+
+ * vm.c (rb_vm_rewrite_dfp_in_errinfo): new function.
+
+ * vm.c (vm_make_env_each): changed accordingly.
+
+ * vm_core.h: ditto.
+
+ * bootstraptest/test_flow.rb: add tests for above.
+
+Sat Aug 27 18:44:06 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * internal.h (rb_strftime_timespec): move to time.c because it depends
+ encoding.h.
+
+Sat Aug 27 18:17:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * strftime.c (rb_strftime_with_timespec): get enc argument to specify
+ the encoding of the format. On Windows (at least Japanese Windows),
+ Time#strftime("%Z") includes non ASCII in locale encoding (CP932).
+ So convert locale to default internal. [ruby-core:39092] [Bug #5226]
+
+ * strftime.c (rb_strftime): ditto.
+
+ * strftime.c (rb_strftime_timespec): ditto.
+
+ * internal.h (rb_strftime_timespec): follow above.
+
+ * time.c (rb_strftime_alloc): ditto.
+
+ * time.c (strftimev): ditto.
+
+ * time.c (time_strftime): ditto.
+
+ * time.c (time_to_s): the resulted string of Time#to_s is always
+ ascii only, so this should be US-ASCII.
+
+ * time.c (time_asctime): ditto.
+
+Sat Aug 27 11:18:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * Revert r33078. It caused a Rails application NoMethodError.
+
+ /home/nahi/git/emptyApp/ruby/1.9.1/gems/rack-mount-0.6.14/lib/rack/mount/utils.rb:157: warning: toplevel constant ScanError referenced by Regin::Parser::ScanError
+ /home/nahi/git/emptyApp/ruby/1.9.1/gems/rack-mount-0.6.14/lib/rack/mount/vendor/regin/regin/parser.rb:17:in `parse_regexp': undefined method `scan_str' for #<Regin::Parser:0x00000002344548> (NoMethodError)
+
+Sat Aug 27 08:44:58 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 3.9.4. Typo and grammar fixes by Luke Gruber.
+ [Ruby 1.9 - Bug #5203]
+
+Sat Aug 27 07:53:34 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/open-uri.rb: Fix indentation of OpenURI::OpenRead#open. Use ++
+ instead of `' for method arguments in open-uri.rb
+
+Sat Aug 27 07:22:07 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/pathname/lib/pathname.rb: Fix typos and grammar mistakes. Patch
+ by Luke Gruber. [#5203]
+ * ext/pty/lib/expect.rb: ditto
+ * lib/mathn.rb: ditto
+ * lib/net/http.rb: ditto
+ * lib/open-uri.rb: ditto
+ * lib/ostruct.rb: ditto
+ * lib/tempfile.rb: ditto
+ * lib/thread.rb: ditto
+ * lib/weakref.rb: ditto
+ * sample/webrick/httpproxy.rb: ditto
+
+Sat Aug 27 04:03:18 2011 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_data_to_ary): fix type of variable
+ (long -> unsigned long) to suppress a warning.
+
+Sat Aug 27 04:02:11 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: add a decl. of rb_autoloading_value().
+
+Fri Aug 26 19:12:08 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * variable.c: Make autoload thread-safe. See #921.
+
+ What's the problem?
+ autoload is thread unsafe. When we define a constant to be
+ autoloaded, we expect the constant construction is invariant. But
+ current autoload implementation allows other threads to access the
+ constant while the first thread is loading a file.
+
+ What's happening inside?
+ The current implementation uses Qundef as a marker of autoload in
+ Constant table. Once the first thread find Qundef as a value at
+ constant lookup, it starts loading a defined feature. Generally a
+ loaded file overrides the Qundef in Constant table by module/class
+ declaration at very beginning lines of the file, so other threads
+ can see the new Module/Class object before feature loading is
+ finished. It breaks invariant construction.
+
+ How to solve?
+ To ensure invariant constant construction, we need to override
+ Qundef with defined Object after the feature loading. For keeping
+ Qundef in Constant table, I expanded autoload_data struct in
+ Module to have a slot for keeping the defined object while feature
+ loading. And changed Module's constant lookup/update logic a
+ little so that the slot is only visible from the thread which
+ invokes feature loading. (== the first thread which accessed the
+ autoload constant)
+
+ Evaluation?
+ All test passes (bootstrap test, test-all and RubySpec) and added
+ 8 tests for threading behavior. Extra logics are executed only
+ when Qundef is found, so no perf drop should happen except
+ autoloading.
+
+ * variable.c (rb_autoload): Prepare new autoload_data struct.
+
+ * variable.c (rb_autoload_load): Load feature and update Constant
+ table after feature loading is finished.
+
+ * variable.c (rb_const_get_0): When the fetched constant is under
+ autoloading, it returns the object only for the thread which starts
+ autoloading.
+
+ * variable.c (rb_const_defined_0): Ditto.
+
+ * variable.c (rb_const_set): When the specified constant is under
+ autoloading, it sets the object only for the thread which starts
+ autoloading. Otherwise, simply overrides Qundef with constant
+ override warning.
+
+ * vm_insnhelper.c (vm_get_ev_const): Apply same change as
+ rb_const_get_0 in variable.c.
+
+ * test/ruby/test_autoload.rb: Added tests for threading behavior.
+
+Fri Aug 26 10:10:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.10. Fixes security issue in
+ creating ruby-format gemspecs. Fixes Gem.dir not being at the front
+ of Gem.path to fix uninstall and cleanup commands. Fixes gem
+ uninstall stopping on the first missing gem.
+
+Fri Aug 26 08:21:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * time.c (strftimev): Make Time#to_s default to US-ASCII encoding but
+ respect Encoding.default_internal. [ruby-core:39092]
+ * test/ruby/test_time.rb (class TestTime): Corresponding test.
+
+Thu Aug 25 09:43:16 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/lib/openssl/bn.rb: Hide copyright info from RDoc.
+ * ext/openssl/lib/openssl/digest.rb: ditto
+ * ext/openssl/lib/openssl/x509.rb: ditto
+ * ext/openssl/lib/openssl/cipher.rb: ditto
+
+Thu Aug 25 09:25:48 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_digest.c: Document OpenSSL::Digest::digest and add
+ an example to OpenSSL::Digest. Patch by Sylvain Daubert.
+ [Ruby 1.9 - Bug #5166]
+ * ext/openssl/lib/openssl/digest.rb (module OpenSSL): ditto
+
+Thu Aug 25 08:19:43 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_make_env_each): work around to solve Bug #2729.
+ fixes: Bug #2729
+ a patch from Kazuki Tsujimoto <kazuki@callcc.net>
+ This problem is caused by changing dfp (dynamic env pointer)
+ from saved dfp. Saved dfp is pointed env in VM stack. However,
+ the dfp can be moved because VM copies env from VM stack to
+ the heap. At this copying, dfp was also changed. To solve this
+ problem, I'll try to change throw mechanism (not save target dfp,
+ but save target cfp).
+
+ * bootstraptest/test_flow.rb: add a test for above.
+
+Thu Aug 25 07:57:33 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (int_round): Fix Integer#round [ruby-core:39096]
+
+Thu Aug 25 07:00:00 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.h, vm_insnhelper.c, vm.c, vm_method.c, insns.def:
+ Manage a redefinition of special methods for each classes.
+ A patch from Joel Gouly <joel.gouly@gmail.com>. Thanks!
+
+Thu Aug 25 06:51:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: Fixing psych version number.
+ * ext/psych/psych.gemspec: updating the gemspec.
+
+Thu Aug 25 06:11:35 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/nodes/node.rb: default `to_yaml` encoding to be
+ UTF-8.
+ * test/psych/test_encoding.rb: test yaml dump encoding.
+
+Thu Aug 25 01:24:33 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/fileutils/test_fileutils.rb (test_chmod_symbol_mode): Solaris
+ seems to behave the same as FreeBSD.
+
+Thu Aug 25 01:11:36 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/ruby/test_rubyoptions.rb (test_script_from_stdin): slave pty
+ should be manipulated because master pty may not be a tty on some
+ environment (e.g. Solaris). [Bug:#5222] [ruby-dev:44420]
+
+Wed Aug 24 15:13:56 2011 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.h, iseq.c, compile.c: Change the line number data structure
+ to solve an issue reported at [ruby-dev:44413] [Ruby 1.9 - Bug #5217].
+ Before this fix, each instruction has an information including
+ line number (iseq::iseq_insn_info_table). Instead of this data
+ structure, recording only line number changing places
+ (iseq::iseq_line_info_table).
+ The order of entries in iseq_line_info_table is ascending order of
+ iseq_line_info_table_entry::position. You can get a line number
+ by an iseq and a program counter with this data structure.
+ This fix reduces memory consumption of iseq (bytecode).
+ On my measurement, a rails application consumes 21.8MB for
+ iseq with this fix on the 32bit CPU. Without this fix, it
+ consumes 24.7MB for iseq [ruby-dev:44415].
+
+ * proc.c: ditto.
+
+ * vm_insnhelper.c: ditto.
+
+ * vm_method.c: ditto.
+
+ * vm.c (rb_vm_get_sourceline): change to use rb_iseq_line_no().
+
+Wed Aug 24 09:49:10 2011 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (defined): fix to checking class variable.
+ A patch by Magnus Holm <judofyr@gmail.com>. Thanks!
+
+ * test/ruby/test_variable.rb: add a test for above.
+
+Wed Aug 24 08:53:06 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 3.9.3. Fixes RDoc with `ruby -Ku`. Allows
+ HTTPS image paths to be turned into <img> tags. Prevents special
+ markup inside <tt> from being processed.
+
+Wed Aug 24 07:57:43 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.9. Fixes uninstalling multiple
+ gems and gem cleanup.
+
+Wed Aug 24 06:45:20 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.5.0 (r6557)
+ * test/minitest/*: ditto
+
+Wed Aug 24 00:38:22 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (update_coverage): skip coverage count up if the current
+ line is out of the way. rb_sourceline() is unreliable when source
+ code is big. [ruby-dev:44413]
+
+ * test/coverage/test_coverage.rb: add a test for above.
+
+Tue Aug 23 15:23:56 2011 Eric Hodel <drbrain@segment7.net>
+
+ * load.c (rb_f_require): Improve documentation of Kernel#require.
+ [Ruby 1.9 - Bug #5210]
+
+Tue Aug 23 11:27:26 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_read_header): Ensure that each section of
+ gzip header is readable to avoid SEGV.
+
+ * test/zlib/test_zlib.rb (test_corrupted_header): Test it.
+
+Mon Aug 22 23:43:33 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * sprintf.c (rb_str_format): add RB_GC_GUARD to prevent temporary
+ strings from GC.
+
+Sun Aug 21 17:49:53 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * iseq.c (iseq_s_disasm): remove variable which is no longer used
+ since r33013.
+
+Sun Aug 21 14:20:58 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * configure.in: use LD_LIBRARY_PATH_64 on 64-bit Solaris.
+
+Sat Aug 20 13:19:52 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * iseq.c (iseq_s_disasm): fix a bug that may cause SEGV.
+
+ * test/ruby/test_method.rb (test_body): add a test for the above change.
+
+Sat Aug 20 10:43:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): return new string if nil
+ is explicitly given as a buffer ([Bug #5207]), otherwise set the
+ encoding. also removed dead code.
+
+Fri Aug 19 14:25:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_spawn_v, proc_spawn): should not wait the
+ spawned process.
+
+ * process.c (proc_spawn_v): fix missing argument, and try with
+ /bin/sh only if failed with ENOEXEC.
+
+Fri Aug 19 14:12:57 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (idle): raises a Net::IMAP::Error when the
+ connection is closed. based on the patch by Hugo Barauna.
+ [Bug #5190] [ruby-core:38930]
+
+Fri Aug 19 13:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * configure.in: defines _DARWIN_UNLIMITED_SELECT if the target_os
+ is darwin.
+
+Fri Aug 19 13:14:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * thread.c: add a description for the behavior of select(2) on
+ Mac OS X 10.7 (Lion).
+
+Fri Aug 19 11:28:58 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (msg_att): accepts extra space before ')'.
+ based on the patch by art lussos. [Bug #5163] [ruby-core:38820]
+
+Wed Aug 17 23:01:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (cannot_be_coerced_into_BigDecimal):
+ remove duplication.
+
+Wed Aug 17 15:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (cannot_be_coerced_into_BigDecimal):
+ add a new function for raising error when an object cannot coerce
+ into BigDecimal. [Bug #5172]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalValueWithPrec): use
+ cannot_be_coerced_into_BigDecimal function.
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_log): ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb: test for the above changes.
+
+ * test/bigdecimal/testbase.rb (under_gc_stress): add a new utility
+ method to run tests under the condition of GC.stress = true.
+
+Wed Aug 17 10:16:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * rational.c (nurat_coerce): Rational#coerce should converts itself
+ into Complex if the argument is a Complex with non-zero imaginary
+ part. [Bug #5020] [ruby-dev:44088]
+
+ * test/ruby/test_rational.rb (test_coerce): test for the above change.
+
+Wed Aug 17 06:33:19 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_x509cert.c: Add class documentation for
+ OpenSSL::X509::Certificate.
+
+Wed Aug 17 04:54:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey.c: corrected docs, OpenSSL::PKey::DH does
+ *not* support #sign/verify.
+
+Tue Aug 16 18:56:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (ruby_threadptr_data_type): rename to hide.
+ [ruby-core:38972]
+
+Tue Aug 16 18:52:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/mkexports.rb (Exports::Mswin#each_export): exclude Init_
+ and _threadptr_ functions, as well as mingw.
+
+Tue Aug 16 09:31:44 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl: Add documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #5192]
+
+Tue Aug 16 08:48:26 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/.document (fiddle): Remove duplicate entry
+ * ext/fiddle: Complete documentation of Fiddle. Patch by Vincent
+ Batts. [#5192]
+
+Tue Aug 16 08:00:15 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/socket: Make Socket documentation appear. Add documentation for
+ Socket, TCPServer, SOCKSSocket. Patch by Sylvain Daubert.
+ [Ruby 1.9 - Feature #5182]
+
+Mon Aug 15 09:58:55 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Support disabling OpenSSL compression.
+
+ * test/openssl/test_ssl.rb: Add a test for it.
+ Thanks to Eric Wong for the patch.
+ [Ruby 1.9 - Feature #5183] [ruby-core:38911]
+
+Sun Aug 14 05:57:01 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_socket.rb (test_connect_timeout): added a test
+ based on a patch by Eric Wong. [ruby-core:38910]
+
+Sat Aug 13 22:17:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb: do not make the entries related to sitedir and
+ verdordir if disabled by --without options. [ruby-core:38922]
+ [Bug #5187]
+
+Sat Aug 13 17:03:22 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:38861]
+
+Sat Aug 13 09:39:07 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_*.rb: added tests.
+
+Sat Aug 13 09:36:19 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/date/date_parse.c (parse_ddd_cb): fix r32896. RB_GC_GUARD
+ insertion position was mistaken. [ruby-dev:44337] [Bug #5152]
+
+Sat Aug 13 09:26:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/core_ext.rb: Make Kernel#y private.
+ [ruby-core:38913]
+
+ * test/psych/test_yaml.rb: corresponding test.
+
+Sat Aug 13 09:05:16 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (date_strftime_alloc): followed the change
+ of r32885.
+
+ * doc/NEWS-1.9.3: followed the above change.
+
+Sat Aug 13 08:55:38 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Only consider strings
+ with fewer than 2 dots to be numbers. [ruby-core:38915]
+
+Sat Aug 13 08:47:20 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:38855].
+
+Sat Aug 13 03:41:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri/common.rb: Fix documentation of URI::Parser.new. Patch by
+ Steve Klabnik. [Ruby 1.9 - Bug #5177]
+
+Sat Aug 13 02:19:57 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/digest/digest.c: Add documentation for the Digest module. Patch
+ by Sylvain Daubert. [Ruby 1.9 - Bug #5167]
+
+Sat Aug 13 01:56:11 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake: Update to Rake 0.9.2.2. Prevent pollution of toplevel
+ namespace by Commands. Remove unused variable and debugging
+ statement in tests.
+
+Fri Aug 12 11:39:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Describe "no" configure option for site_ruby
+ and vendor_ruby. Patch by Vit Ondruch. [Bug #5187][ruby-core:38921]
+
+Fri Aug 12 09:00:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems 1.8.8. Fixes encoding of YAML gemspec
+ from gems. Github Issue #149
+
+Fri Aug 12 08:17:46 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal): use SOMAXCONN for
+ listen backlog.
+
+ * ext/socket/unixsocket.c (rsock_init_unixsock): ditto.
+
+ * ext/socket/lib/socket.rb (Addrinfo#listen): ditto.
+ (Socket.tcp_server_sockets_port0): ditto.
+
+ * ext/socket/mkconstants.rb: define SOMAXCONN as 5 if not available.
+
+ [ruby-core:38493]
+
+Fri Aug 12 03:24:35 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 3.9.2. Fixes TIDYLINK for HTML output.
+
+Thu Aug 11 15:37:42 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * variable.c (autoload_delete): An autoload entry is still in a
+ RCLASS_IV_TBL, not in a RCLASS_CONST_TBL, so take back the table
+ changed in r29600. And an autoload entry keeps not a
+ rb_const_entry_t but a NODE so remove rb_const_entry_t thing added
+ in r29602.
+
+Thu Aug 11 15:07:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (link_command): use LIBRUBYARG in rbconfig for
+ unbundled extensions. [ruby-core:38802] [Bug #5147]
+
+ * lib/mkmf.rb (init_mkmf): revert r32902. [ruby-core:38903]
+
+Wed Aug 10 23:03:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb: fix argument check in the previous commit.
+
+Wed Aug 10 22:12:28 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp): add :connect_timeout option.
+ (Addrinfo#connect_from): add :timeout option.
+ (Addrinfo#connect): ditto.
+ (Addrinfo#connect_to): ditto.
+ [ruby-core:38538]
+
+Wed Aug 10 21:27:19 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/net/pop.rb: fix typo in document.
+
+ * lib/net/http.rb: ditto.
+
+ * lib/net/imap.rb: ditto.
+
+Wed Aug 10 19:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * complex.c (nucomp_rationalize): calls rationalize of real part if
+ imaginary part is exactly zero. The patch is made by Marc-Andre
+ Lafortune. fixes [Bug #5178] [ruby-core:38885]
+
+ * test/ruby/test_complex.rb (test_rationalize): add a test for the
+ above change.
+
+ * complex.c (nucomp_to_r): fix RDoc comment. The patch is made by
+ Marc-Andre Lafortune.
+
+Wed Aug 10 14:11:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (init_mkmf): set $LIBRUBYARG regardless of shared
+ option. [ruby-core:38802] [Bug #5147]
+
+Wed Aug 10 02:53:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: come back autoload. OpenSSL constant is used
+ some places, so it leads mistakes like HTTP.start.
+
+Tue Aug 9 22:57:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/date/date_parse.c (date_zone_to_diff): add RB_GC_GUARD.
+ [ruby-dev:44337] [Bug #5152]
+
+ * ext/date/data_parse.c (parse_ddd_cb): ditto.
+
+Tue Aug 9 14:25:47 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/conversions.c (generic_to_value): ffi_arg and ffi_sarg
+ should be used to handle shorter return value. fix [Bug #3861]
+ [ruby-core:32504]
+
+ * ext/fiddle/closure.c (callback): ditto
+
+ * ext/fiddle/conversions.h (fiddle_generic): ditto
+
+ * ext/fiddle/conversions.c (value_to_generic): char, short and int
+ are strictly distinguished on big-endian CPU, e.g. sparc64.
+
+Tue Aug 9 11:21:08 2011 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_lazy_sweep): if sweep target slots are not found, we
+ try heap_increment() because it might be able to expand the
+ heap. [Bug #5127] [ruby-dev:44285]
+
+ * gc.c (gc_clear_mark_on_sweep_slots): if a sweeping was
+ interrupted, we expand the heap if at all possible.
+
+Tue Aug 9 12:20:33 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/fiddle/helper.rb (libc_so, libm_so): Solaris support added.
+ [ruby-core:38853] [Bug #5168]
+
+ * test/dl/test_base.rb (libc_so, libm_so): on Solaris, remove libc
+ and libm version numbers for detecting default libc and libm.
+
+Tue Aug 9 09:18:04 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (gzfile_wrap): Document encoding options.
+
+ * ext/zlib/zlib.c (rb_gzwriter_s_open): ditto
+
+ * ext/zlib/zlib.c (rb_gzreader_s_open): ditto
+
+Sun Aug 7 23:31:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * time.c (rb_strftime_alloc): raise ERANGE if width is too large.
+ Patch by Nobuyoshi Nakada. [Bug #4457] [ruby-dev:43285]
+
+ * test/ruby/test_time.rb (class TestTime): add a test for the
+ above change.
+
+Sun Aug 7 22:51:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/openssl/ossl_asn1.c (decode_eoc): remove unused variables.
+ Patch by Eric Wong. [Feature #5157] [ruby-core:38798]
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode): ditto.
+
+ * ext/openssl/ossl_pkey.c (ossl_pkey_new_from_data): ditto.
+
+Sun Aug 7 22:37:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add -Wunused-variable to default CFLAGS.
+ Patch by Eric Wong. [Feature #5157] [ruby-core:38798]
+
+Sun Aug 7 15:37:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/digest/sha2/sha2ossl.c: use original SHA384_Final on DragonFly.
+
+Sun Aug 7 14:08:16 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/objspace/objspace.c: fix typos in a document.
+
+Sun Aug 7 07:14:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (HAVE_GETCONTEXT): see getcontext(3) because DragonFly BSD
+ x64 port doesn't have it.
+
+Sun Aug 7 00:42:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/tk/lib/tk/wm.rb (Tk::Wm.command): Add the missing receiver
+ before calling epath. patched by flori
+ https://github.com/flori/ruby/commit/aa9474d32e5f2c57f8b0e2e0c528a03f06a4d433
+
+Sat Aug 6 07:06:34 2011 Eric Hodel <drbrain@segment7.net>
+
+ * marshal.c (w_object): Fix exception message when _dump_data is not
+ defined on a T_DATA object.
+
+Fri Aug 5 22:16:20 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * numeric.c (rb_infinity, rb_nan): use WORDS_BIGENDIAN to get endian.
+ fix [Bug #5160] [ruby-dev:44356]
+
+Fri Aug 5 17:14:11 2011 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/test_syslog.rb (TestSyslog#test_log): Do not be too
+ specific about the log line format. Fixes #5081.
+
+Fri Aug 5 15:57:10 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * complex.c (f_signbit): fix compile error in gcc4 on Solaris with
+ CFLAGS="-std=gnu99". [ruby-dev:44355] fix [Bug #5159]
+
+ * math.c: ditto.
+
+Fri Aug 5 15:55:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_object.rb: tests that respond_to? returns false.
+
+Fri Aug 5 13:32:43 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb, lib/xmlrpc/server.rb: should use
+ String#bytesize instead of String#size.
+
+Fri Aug 5 12:18:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (check_funcall): try respond_to? first if redefined.
+ [Bug #5158]
+
+Fri Aug 5 09:48:22 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems 1.8.7:
+ Added missing require for `gem uninstall --format-executable`.
+
+ The correct name of the executable being uninstalled is now displayed
+ with --format-executable.
+
+ Fixed `gem unpack uninstalled_gem` default version picker.
+
+ RubyGems no longer claims a nonexistent gem can be uninstalled.
+
+ `gem which` no longer claims directories are requirable files.
+
+ `gem cleanup` continues cleaning up gems if one can't be uninstalled
+ due to permissions. Issue #82.
+
+ Gem repository directories are no longer created world-writable.
+ Patch by Sakuro OZAWA. [Ruby 1.9 - Bug #4930]
+
+Fri Aug 5 07:00:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/io/console/test_io_console.rb (test_noctty): daemon() on
+ Fedora Rawhide seems not to detach the controlling terminal,
+ when the argument noclose is non-zero. ref: [Bug #5135]
+
+Thu Aug 4 23:48:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * thread_pthread.c (native_cond_signal): retry to call pthread_cond_signal
+ and pthread_cond_broadcast if they return EAGAIN in
+ native_cond_signal and native_cond_broadcast, respectively.
+ It is for the pthread implementation of Mac OS X 10.7 (Lion).
+ fixes #5155. [ruby-dev:44342].
+
+ * thread_pthread.c (native_cond_broadcast): ditto.
+
+ * thread_pthread.c (struct cached_thread_entry): stop using
+ pthread_cond_t and its functions directly.
+
+ * thread_pthread.c (register_cached_thread_and_wait): ditto.
+
+ * thread_pthread.c (use_cached_thread): ditto.
+
+Thu Aug 4 20:29:41 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * configure.in: when Solaris cc, use $(CC) to link shared libs.
+
+Thu Aug 4 20:19:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * error.c (report_bug): use a small message buffer instead of BUFSIZ.
+ It is needed for avoiding nested SIGSEGV on Linux.
+ Note: BUFSIZ is not proper buffer size. It's unrelated with maximum
+ filename length. :-/
+ [Bug #5139] [ruby-dev:44315]
+
+Thu Aug 4 16:08:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (gem): install all gemspecs under lib and ext.
+
+ * tool/rbinstall.rb (Gem::Specification): may not be defined when
+ cross-compiling and BASERUBY is 1.8.
+
+Thu Aug 4 11:30:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/missing.h: define __syscall on OpenBSD as r32702.
+
+Thu Aug 4 03:02:54 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * tool/rbinstall.rb: use rubygems to load gemspecs, copy actual
+ gemspecs on install rather than generate fake ones for all gems.
+
+Thu Aug 4 02:45:10 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * configure.in: set CXX variable to the C++ compiler that matches the
+ C compiler specified by CC variable (e.g. use g++-4.2 for gcc-4.2).
+
+Thu Aug 4 02:21:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (link_command): use static library only for bundled
+ extensions. [Bug #5147]
+
+Thu Aug 4 02:02:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/psych.gemspec: installing psych as a gem.
+
+Wed Aug 3 16:01:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * util.c, include/ruby/util.h (ruby_add_suffix): remove the function.
+ [Bug #5153] [ruby-core:38736]
+
+ * io.c (argf_next_argv): remove the call of above function.
+
+ * ext/-test-/add_suffix, test/-ext-/test_add_suffix.rb: remove the test
+ extension module because this is only for testing ruby_add_suffix().
+
+ * LEGAL: remove the mention about a part of util.c, because now we
+ removed the part.
+
+ * io.c (argf_next_argv): now the new filename is not guaranteed to
+ use, so should check the return value of rename(2).
+
+ * test/ruby/test_argf.rb (TestArgf#test_inplace_rename_impossible):
+ now we expect same result with other platforms on no_safe_rename
+ platforms (=Windows).
+
+Wed Aug 3 09:18:08 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/xmlrpc/webrick_testing.rb (WEBrick_Testing#start_server):
+ Like r32795, bind address should be specified.
+
+Wed Aug 3 07:46:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_find): mistakenly remained !. [Bug #5150]
+
+Wed Aug 3 00:11:08 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/prettyprint.rb: update document. [ruby-core:36776]
+
+Tue Aug 2 22:04:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (init_heap): allocate sigaltstack after heaps are allocated.
+ [ruby-dev:44315] [Bug #5139]
+
+ * vm.c (thread_free): use free because objspace is not ready.
+
+ * vm.c (th_init): use malloc because objspace is not ready.
+
+Tue Aug 2 20:10:16 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb: pass "--ruby" option to
+ test/testunit/tests_for_parallel/runner.rb. [Bug #5132] [ruby-dev:44303]
+
+Tue Aug 2 15:53:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (str_to_encoding): rename from to_encoding and
+ use str_to_encindex.
+
+ * encoding.c (str_to_encindex): split from to_encoding.
+
+ * encoding.c (rb_to_encoding): use str_to_encoding.
+
+ * encoding.c (rb_obj_encoding): don't bypass rb_encoding*.
+ If it uses rb_encoding*, it bypass encindex. If it uses encindex,
+ it doesn't bypass.
+
+ * encoding.c (enc_find): add shortcut for encoding object, use
+ str_to_encindex, and avoid bypass rb_encoding*.
+
+Tue Aug 2 12:03:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (recursive_hash): hash value of emptied hash should be
+ equal to an empty hash. [ruby-core:38650]
+
+Tue Aug 2 11:42:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_enc_symname2_p): :! is valid symbol. [Bug #5136]
+
+Tue Aug 2 07:33:29 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/net/http/test_http.rb (TestNetHTTP_version_1_1_methods#test_timeout_during_HTTP_session):
+ If you connect to localhost, you should listen localhost.
+
+ * test/net/http/test_https.rb (TestNetHTTPS#test_timeout_during_SSL_handshake):
+ ditto.
+
+Tue Aug 2 06:18:15 2011 Luis Lavena <luislavena@gmail.com>
+
+ * lib/rubygems/installer.rb (class Gem): Correct path check on Windows
+ Possible fix for [Ruby 1.9 - Bug #5111]
+ * test/rubygems/test_gem_installer.rb (load Gem): ditto
+
+Mon Aug 1 20:12:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess#windows?): new method.
+
+ * test/ruby/test_process.rb (TestProcess#*): use above method.
+
+ * test/ruby/test_process.rb (TestProcess#test_execopts_redirect):
+ windows doesn't support FD_CLOEXEC.
+
+Mon Aug 1 15:45:23 2011 Eric Hodel <drbrain@segment7.net>
+
+ * test/rake/test_rake_functional.rb: Don't assume the binary name of
+ ruby is "ruby". [Ruby 1.9 - Bug #5114]
+ * test/rake/helper.rb: ditto
+
+Mon Aug 1 15:31:14 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/io/console/test_io_console.rb (TestIO_Console#test_sync):
+ Skip when PTY allocation failed (that's not our fault).
+
+Mon Aug 1 15:04:12 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/xmlrpc/test_webrick_server.rb (Test_Webrick#setup_http_server):
+ XMLRPC::Client.new3(), when called without host: argument, tries
+ to connect to a host where "localhost" resolves to. On the
+ other hand a WEBrick::HTTPServer.new(), when called without
+ BindAddress: argument, tries to listen all the address where
+ getaddrinfo(AF_UNSPEC) resolves to. This is a mismatch because
+ "localhost" might not resolve to one of those listening sockets.
+ We would better explicitly specify "localhost" here and if
+ failed, just skip the whole test.
+
+Mon Aug 1 14:24:56 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc.rb: Import RDoc 3.9.1. Fixes bugs in the RDoc::Markup
+ parser.
+
+Mon Aug 1 12:00:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * insns.def (concatstrings): don't use initial ASCII-8BIT string.
+ [ruby-core:38635] [Bug #5126]
+
+Sun Jul 31 22:57:16 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * enc/Makefile.in (ECHO1): Same as the recent fix in common.mk.
+ ":" in a make variable replacement cause a syntax error with
+ /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
+
+Sun Jul 31 21:16:02 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * complex.c (f_signbit): gcc4 on Solaris DOES have signbit but does
+ not have it on header.
+
+ * math.c: ditto.
+
+Sun Jul 31 21:09:04 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (node_name.inc): Use $(Q) for consistency.
+
+ * Makefile.in (INSNS): ditto.
+
+Sun Jul 31 21:19:51 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/mkmf.rb (configuration:ECHO1): Same as the recent fix in
+ common.mk.
+ ":" in a make variable replacement cause a syntax error with
+ /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
+
+Sun Jul 31 20:39:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (ECHO1): nmake does not allow parenthesis in make variable
+ replacement.
+
+Sun Jul 31 23:06:57 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (check_env): print debug messages to stderr.
+ [Feature #4871] [ruby-dev:43743]
+
+Sun Jul 31 22:50:23 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (vm_make_env_each): don't save prev env value.
+ It is no longer used. [Feature #4871] [ruby-dev:43743]
+
+ * vm.c (check_env): changed accordingly.
+
+Sun Jul 31 20:21:36 2011 "Yuki Sonoda (Yugui)" <yugui@yugui.jp>
+
+ * common.mk (ECHO1): ":" in a make variable replacement cause a syntax
+ error with /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
+
+ * configure.in (NULLCMD): new check.
+
+ * Makefile.in (NULLCMD): Reflects checking in configure.
+
+ * win32/Makefile.sub (NULLCMD): new assignment.
+
+Sun Jul 31 18:58:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_pipe): pipe on cygwin can succeed half but fail
+ half.
+
+Sun Jul 31 11:31:07 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c: check if cfp is valid. [Bug #5083] [ruby-dev:44208]
+
+Sun Jul 31 09:18:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 3.9. Fixed `ri []`, stopdoc creating an
+ object reference, nodoc for class aliases, verbatim === lines.
+
+Sun Jul 31 01:29:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_each_byte): remove unused variable e.
+
+Sat Jul 31 01:23:45 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * test/bigdecimal/test_bigdecimal.rb (test_version): removed.
+
+Sat Jul 30 23:19:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * defs/default_gems: separate from tool/rbinstall.rb.
+
+Sat Jul 30 23:14:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_each_byte): rbuf can be refreshed during yield.
+ [Bug #5119]
+
+Sat Jul 30 22:35:50 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * strftime.c (NEEDS): avoid SEGV due to integer overflow in
+ sparc-solaris2.10 and i686-linux. fix [Bug #4456] [ruby-dev:43284]
+
+Sat Jul 30 17:26:26 2011 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_variant.rb: use skip method to skip the test.
+
+ * test/win32ole/test_win32ole_variant_outarg.rb: ditto.
+
+Sat Jul 30 14:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_version): version 1.1.0.
+
+ * ext/bigdecimal/bigdecimal.gemspec: turn into a default gem.
+
+ * tool/rbinstall.rb: ditto.
+
+Sat Jul 30 11:21:55 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (ALT_STACK_SIZE): use MINSIGSTKSZ*2 instead of SIGSTKSZ*2.
+ [ruby-core:38607]
+
+Sat Jul 30 10:39:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm.c (th_init): preallocate alternative stack.
+ NoMemoryError is better than rb_bug, of course.
+ Patch by Eric Wong. [ruby-core:38572][ruby-core:38594].
+
+ * signal.c (rb_register_sigaltstack): ditto.
+
+ * vm_core.h: moved ALT_STACK_SIZE definition from signal.c.
+ * vm.c (thread_free): use xfree() instead of free().
+
+Sat Jul 30 07:20:49 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (udp_server_sockets): unused variable
+ removed.
+ patch by Jeremy Evans. [ruby-core:38600]
+
+Fri Jul 29 23:56:32 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb: call OpenSSL::Random.seed at the
+ SecureRandom.random_bytes call.
+ based on the patch by Masahiro Tomita. [ruby-dev:44270]
+
+Fri Jul 29 23:53:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_set_len): new function to set array length.
+
+ * vm_eval.c (method_missing): set the length of argv array, to mark
+ arguments.
+
+ * vm_eval.c (rb_apply): get rid of too large alloca.
+
+Fri Jul 29 20:48:39 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: fix typos.
+
+Fri Jul 29 20:28:56 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use whitespaces as a separator.
+
+Fri Jul 29 18:59:07 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: add documents for constants.
+ patch by Eric Hodel. [ruby-core:37853] [Bug #4989]
+
+Fri Jul 29 16:00:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (enable_pthread): use -pthread on OpenBSD without
+ explicit option. patched by Jeremy Evans. [ruby-core:38572]
+
+Thu Jul 28 23:36:28 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/fiddle/closure.c (callback): use rb_ary_tmp_new() instead of
+ xmalloc() to allocate an array for arguments of callback procedure,
+ to prevent arguments from being swept by GC. [ruby-core:38546]
+ [Bug #4929]
+
+Thu Jul 28 22:36:06 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_initialize): Avoid possible
+ SEGV from AES encryption/decryption. Processing data by
+ Cipher#update without initializing key (meaningless usage of Cipher
+ object since we don't offer a way to export a key) could cause SEGV.
+
+ In OpenSSL, the EVP which has EVP_CIPH_RAND_KEY flag (such as DES3)
+ allows uninitialized key, but other EVPs (such as AES) does not
+ allow it. Calling EVP_CipherUpdate() without initializing key causes
+ SEGV so we set the data filled with "\0" as the key by default. See
+ #2768.
+
+ * test/openssl/test_cipher.rb: test it.
+
+Thu Jul 28 14:25:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/user_interaction.rb (Gem::StreamUI#tty?): typo.
+
+Thu Jul 28 12:32:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/callback/mkcallback.rb (gencallback): use PTR2NUM.
+
+ * ext/dl/cptr.c (rb_dlptr_aref, rb_dlptr_aset): check NULL pointer
+ dereference.
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): use rb_check_funcall.
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): fix wrapping condition.
+
+Thu Jul 28 04:53:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/delegate.rb: Move file-level documentation to the appropriate
+ classes.
+
+Thu Jul 28 02:15:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (dlcfunc_mark), ext/dl/cptr.c (dlptr_mark):
+ workaround to mark wrapped object. this is not a true fix,
+ because [Bug #4929] is caused by the interface design of DL.
+
+Thu Jul 28 00:28:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb: add OpenBSD case.
+ patched by Jeremy Evans [ruby-core:38530] see #5097
+
+ * test/ruby/test_process.rb: ditto.
+
+Wed Jul 27 22:46:59 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/rinda/test_rinda.rb (test_remote_array_and_hash):
+ add local variables to protect objects from GC. [ruby-dev:44253]
+ [Bug #5104]
+
+Wed Jul 27 17:55:54 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/missing.h: define __syscall if the platform has
+ __syscall in the library but doesn't define it in headers
+ for example Mac OS X.
+
+Wed Jul 27 15:39:14 2011 Eric Hodel <drbrain@segment7.net>
+
+ * object.c: Add usage documentation for BasicObject. Based on patch
+ by Thomas Sawyer. [Ruby 1.9 - Bug #5067]
+
+Wed Jul 27 12:24:17 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/uninstaller.rb: Add missing require and update
+ messaging to avoid confusion with uninstall --format-executable.
+ [Ruby 1.9 - Bug #4062]
+
+Wed Jul 27 09:34:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.6.1.
+
+Wed Jul 27 09:27:59 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkcs12.rb: Add test and intermediate certificates.
+ [ Ruby 1.9 - Feature #3793 ] [ruby-core:32088]
+
+Wed Jul 27 01:05:32 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.c (rb_print_undef_str): new function to raise
+ NameError for undefined method.
+
+ * load.c (rb_mod_autoload_p), object.c (rb_mod_const_get),
+ variable.c (rb_f_untrace_var, set_const_visibility), vm_method.c
+ (rb_mod_{remove,undef,alias}_method, set_method_visibility):
+ remove inadvertent symbol creation. based on the first patch by
+ Jeremy Evans at [ruby-core:38447]. [Feature #5089]
+
+ * vm_method.c (obj_respond_to): fix the respond_to_missing? override
+ case. based on the patch by Jeremy Evans at [ruby-core:38417].
+ [Feature #5072]
+
+ * parse.y (rb_check_id): make the given name a symbol or a string.
+ based on the second patch by Jeremy Evans at [ruby-core:38447]
+
+Wed Jul 27 00:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d):
+ zero or negative precision is error. fixes #5098.
+ [ruby-dev:44210]
+
+ * test/bigdecimal/test_bigdecimal_util.rb: add test for the above
+ change.
+
+Wed Jul 27 00:48:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Float#to_d): modified for
+ specifying precision. fixes #5098. [ruby-dev:44210]
+
+ * test/bigdecimal/test_bigdecimal_util.rb: add test for the above
+ change.
+
+Wed Jul 27 00:45:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Integer#to_d): added
+ for symmetry to BigDecimal() function with an Integer.
+ fixes #5098. [ruby-dev:44210]
+
+ * test/bigdecimal/test_bigdecimal_util.rb: add test for the above
+ change.
+
+Wed Jul 27 00:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (BigDecimal#to_d): added
+ for adapting other Numeric subclasses. [ruby-dev:44245]
+
+ * test/bigdecimal/test_bigdecimal_util.rb: test for the above change.
+
+Wed Jul 27 00:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * bigdecimal/bigdecimal.c (VpDup) a new function for duplicating
+ a BigDecimal.
+
+ * bigdecimal/bigdecimal.c (BigDecimal_new): support generating a new
+ BigDecimal from another BigDecimal using BigDecimal global function
+ or constructor. [ruby-dev:44245]
+
+Tue Jul 26 23:33:24 2011 Igor Zubkov <igor.zubkov@gmail.com>
+
+ * array.c: Fix typo. https://github.com/ruby/ruby/pull/36
+
+Mon Jul 25 23:51:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c: pre-allocate the unlinked_method_entry_list_entry struct to
+ avoid memory allocation during GC. based on a patch from Eric Wong.
+ [ruby-core:38498]
+
+Mon Jul 25 23:39:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rake/test_rake_directory_task.rb (TestRakeDirectoryTask#
+ test_directory_win32): fixed wrong test.
+
+Mon Jul 25 22:36:11 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (struct METHOD), gc.c (gc_marks), vm_method.c
+ (rb_gc_mark_unlinked_live_method_entries): fix SEGV bug.
+ rb_method_entry_t was free'd even when the method is still on the
+ stack if it is BMETHOD (i.e., Method#call). This is because
+ rb_method_entry_t is embedded in struct METHOD. This commit
+ separates them and marks the live method entries.
+ See [ruby-core:38449] in detail. fix [Bug #5047] [ruby-core:38171]
+
+Mon Jul 25 22:14:37 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb: Fix possible HTTP header formatting failure by
+ 'Basic' header. Long username caused the base64 String truncation in
+ HTTP header which is not allowed. See #5046.
+
+ * test/xmlrpc/test_webrick_server.rb: test it.
+
+Mon Jul 25 15:04:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/lib/openssl.rb: End of transition period introduced by
+ [ruby-dev:38018]. From the next version of 1.9.3, you should use
+ require "openssl"
+ instead of
+ require "openssl/ssl"
+ and
+ require "openssl/x509"
+
+Mon Jul 25 13:46:38 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/x509.rb: Cosmetic change: move definition
+ introduced in r30152 to x509-internal.rb.
+
+Mon Jul 25 13:09:42 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): Avoid randomly generated
+ SSLError from SSLSocket just after invoking SSLSocket#close.
+ OpenSSL's SSL_shutdown could try to send alert packet and it might
+ set SSLerr(global error stack) as the result. It causes the next
+ SSL read/write operation to fail by unrelated reason.
+
+ By design, we're ignoring any error at SSL_shutdown() so we clear
+ global error stack after SSL_shutdown is called. See #5039.
+
+Sun Jul 24 20:29:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: refine the recvmsg test.
+
+Sun Jul 24 20:02:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: fix the recvmsg test.
+
+Sun Jul 24 08:42:51 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: test recvmsg allocates file descriptors for
+ fd passing even with MSG_PEEK.
+
+ * ext/socket/ancdata.c: use the above test result.
+
+Sun Jul 24 01:04:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Restore behavior of
+ Gem::Specification#loaded. [Ruby 1.9 - Bug #5032]
+
+Sun Jul 24 00:05:00 2011 Jeremy Evans <merch-redmine@jeremyevans.net>
+
+ * error.c (rb_name_error_str): new function to raise NameError
+ with the name string but not ID.
+
+ * object.c, proc.c, variable.c: more removal of inadvertent symbol
+ creation. [Feature #5079]
+
+Sat Jul 23 21:14:00 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (cbrt): should return a real number if possible.
+
+Sat Jul 23 20:12:52 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rake/test_rake_functional.rb (setup): Use __FILE__ for the base
+ directory. Current directory is not the top source directory when
+ the building process runs on other than there.
+
+ * test/rake/test_rake_rake_test_loader.rb: ditto.
+
+ * test/rake/test_rake_task_argument_parsing.rb
+ (test_terminal_width_using_hardcoded_80): hardcoded 80 is used
+ when app.unix? is false.
+
+Sat Jul 23 20:11:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: an issue that is same as [ruby-dev:44071].
+ * ext/date/date_strftime.c: identical to [ruby-dev:44112].
+
+Sat Jul 23 19:12:53 2011 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_err_in_callback.rb (test_err_in_callback):
+ skip test if ADODB.connection is not available.
+
+Sat Jul 23 15:37:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (rb_enc_symname_type): :$a!, @a! and so on are not
+ valid symbols, so they should be inspected with quotes.
+
+Sat Jul 23 17:06:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_update_max_fd): validate fd.
+
+ * ext/socket/rubysocket.h (rsock_discard_cmsg_resource): add
+ msg_peek_p argument for the declaration.
+
+ * ext/socket/ancdata.c (discard_cmsg): add msg_peek_p argument.
+ assume FreeBSD, NetBSD and MacOS X doesn't generate passed fd
+ when MSG_PEEK.
+ (rsock_discard_cmsg_resource): add msg_peek_p argument.
+ (bsock_recvmsg_internal): call rsock_discard_cmsg_resource with
+ msg_peek_p argument.
+
+ * ext/socket/unixsocket.c (unix_recv_io): call
+ rsock_discard_cmsg_resource with msg_peek_p argument.
+
+Sat Jul 23 14:38:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * test/rake*: Remove dependencies on flexmock and session gems.
+ [Ruby 1.9 - Bug #4987]
+
+Sat Jul 23 12:19:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_check_id): take care of attrset ID created
+ implicitly by local ID. [Bug #5084]
+
+ * parse.y (rb_check_id): conversion condition was inverse.
+ [Bug #5084]
+
+Fri Jul 22 21:46:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_insnhelper.c (vm_call_cfunc): added volatile for a workaround
+ of cfp consistency error problem on OS X 10.7 (Lion). It's
+ suspected llvm optimization bug.
+ [Bug #5074] [ruby-dev:44185]
+
+Fri Jul 22 21:18:20 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb (WFKV_): unroll the loop of regexp.
+
+ * lib/uri/generic.rb (URI.decode_www_form_component): ditto.
+
+Fri Jul 22 21:06:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_{const,cvar}_defined, rb_obj_ivar_defined):
+ avoid inadvertent symbol creation in reflection methods. based
+ on a patch by Jeremy Evans at [ruby-core:38367]. [Feature #5072]
+
+ * vm_method.c (rb_mod_method_defined)
+ (rb_mod_{public,private,protected}_method_defined)
+ (obj_respond_to): ditto.
+
+ * parse.y (rb_check_id): new function returns already interned ID
+ or 0.
+
+Fri Jul 22 20:44:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_is_global_id, rb_is_attrset_id): add missing
+ predicates.
+
+Fri Jul 22 20:24:38 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_object.rb (TestObject#test_respond_to_missing):
+ 2nd argument of respond_to_missing? is not optional.
+
+Fri Jul 22 19:05:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_enc_symname2_p): get rid of potential out-of-bound
+ access.
+
+Fri Jul 22 13:55:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Net::HTTP#finish is used to manually close
+ connections. [Ruby 1.9 - Bug #5045]
+
+Fri Jul 22 13:51:29 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/readline/readline.c: Add examples for Readline.completion_proc=.
+ [Ruby 1.9 - Bug #5057]
+
+Fri Jul 22 13:03:12 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_hmac.c: Revert checking return type of
+ HMAC_Init_ex as it is not compatible with OpenSSL < 1.0.0.
+
+Fri Jul 22 12:10:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * tool/rbinstall.rb (default gems): Install executables into the fake
+ gem dir for Gem.bin_path. [#4485]
+
+Fri Jul 22 11:20:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c: Check return value of EVP_DigestInit_ex.
+ * ext/openssl/ossl_hmac.c: Check return value of HMAC_Init_ex.
+ Thanks, Jared Jennings, for the patch.
+ [ Ruby 1.9 - Bug #4944 ] [ruby-core:37670]
+
+Fri Jul 22 09:09:43 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_engine.c: Avoid double free of ENGINE reference.
+ * test/openssl/test_engine.rb: Add a test for it.
+ Thanks to Ippei Obayashi for providing the patch.
+ [ Ruby 1.9 - Bug #5062 ] [ruby-dev:44173]
+
+Fri Jul 22 06:37:13 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/csv.rb: Do not modify CSV.generate's argument [ruby-core:38356]
+
+Thu Jul 21 20:59:59 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (discard_cmsg): workaround for MacOS X Lion.
+
+Thu Jul 21 20:02:11 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (set_trace_func, thread_set_trace_func_m): reset tracing
+ state when set_trace_func hook is removed. This is workaround patch
+ to force to reset tracing state that is broken by continuation call.
+ a patch from James M. Lawrence. [Feature #4347] [ruby-core:34998]
+
+ * test/ruby/test_continuation.rb (class TestContinuation): add a test
+ for above. a patch from James M. Lawrence.
+
+Thu Jul 21 19:27:19 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * node.c (dump_node): add today's knowledge. "init arguments (m)" and
+ "init arguments (p)" of compile.c indicates a Ruby code that
+ evaluates multiple assignments that is in method or block
+ parameters: def foo((m1,m2), (m3,m4), *r, (p1,p2), (p3,p4)); end
+ The former (init arguments (m)) evaluates the multiple assignments
+ before rest argument, that are (m1,m2) and (m3,m4). The letter
+ (init arguments (p)) does ones after rest argument, that are
+ (p1,p2) and (p3, p4).
+
+Thu Jul 21 18:11:07 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enum.c (enum_inject): remove empty line to notify rdoc
+ Enumerable#reduce is alias. patched by milki@github.
+ https://github.com/ruby/ruby/pull/26
+
+Thu Jul 21 17:30:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_delete_at_m): use simple array literal in rdoc.
+ patched by samuel tonini. [ruby-core:38310] [Bug #5066]
+
+Thu Jul 21 17:14:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#each):
+ Allow HTTP/0.9 request which doesn't has any header or body.
+ patched by Felix Jodoin. [ruby-core:38040] [Bug #5022]
+
+Wed Jul 20 23:02:18 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (rb_update_max_fd): remove parentheses. they are not in
+ macro.
+
+Wed Jul 20 22:22:23 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_update_max_fd): declaration moved from
+ internal.h.
+
+ * file.c: ditto.
+
+ * io.c: call rb_update_max_fd for each new fds.
+
+ * process.c: ditto.
+
+ * random.c: ditto.
+
+ * ruby.c: ditto.
+
+ * ext/io/console/console.c: ditto.
+
+ * ext/openssl/ossl_bio.c: ditto.
+
+ * ext/pty/pty.c: ditto.
+
+ * ext/socket/init.c: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/ancdata.c: ditto.
+
+ * ext/socket/unixsocket.c: ditto.
+
+Wed Jul 20 15:16:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl/handle.c (dlhandle_sym): clear previous error with dlerror()
+ before calling dlsym(). [ruby-dev:44091] [Bug #5021]
+
+Wed Jul 20 07:16:26 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: mention Kernel#warn. [ruby-core:38119] [Feature #5029]
+
+Tue Jul 19 16:40:45 2011 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * cont.c (cont_save_thread): fix missing semicolon.
+
+Tue Jul 19 16:25:15 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (UPDATE_MAXFD): removed.
+
+Tue Jul 19 16:07:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_update_max_fd): new function.
+
+ * internal.h (rb_update_max_fd): declare rb_update_max_fd.
+
+ * thread_pthread.c (rb_thread_create_timer_thread): update max fd when
+ timer thread pipe is created.
+
+Mon Jul 18 13:36:47 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: define a new BadAlias error class.
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: raise an exception when
+ deserializing an alias that does not exist.
+
+ * test/psych/test_merge_keys.rb: corresponding test.
+
+Mon Jul 18 00:00:46 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/curses.c: added the new class Curses::Pad, which
+ supports scrolling. patch by Eric Hodel. [Feature #4896]
+ [ruby-core:37206]
+
+Sun Jul 17 16:26:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_trusted): new function to check an object is
+ trusted.
+
+ * struct.c (rb_struct_modify), time.c (time_modify): check by the
+ above function to show proper class names. [Bug #5036]
+
+Sun Jul 17 15:30:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_warn_m): accept multiple args in like puts. rdoc
+ patch by Erik Price at [ruby-core:38119]. [Feature #5029]
+
+Sun Jul 17 07:56:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ssl_session.rb: add PEM SSL session without TLS
+ extensions. Use this as the default for the tests to ensure
+ compatibility with OpenSSL 0.9.7.
+ [ Ruby 1.9 - Bug #4961 ] [ruby-core:37726]
+
+Sat Jul 16 17:29:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_UNIVERSAL_ARCH): restore arch flag.
+ Bug #4977
+
+Sat Jul 16 06:27:51 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/uri/common.rb (module): Remove optional parser argument to
+ Kernel#URI
+ [ruby-core:38061]
+
+ * lib/uri/generic.rb (module): ditto
+
+Sat Jul 16 03:19:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (is_socket, is_console): add prototypes to fix compile
+ problem with gcc introduced at r32549.
+ reported by Jon Forums. [Bug #5030] [ruby-core:38079]
+
+Sat Jul 16 00:55:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * time.c (time_dup): used rb_obj_class() instead of CLASS_OF().
+ The patch is made by Kazuki Tsujimoto. [Bug #5012] [ruby-dev:44071]
+
+ * test/ruby/test_time.rb (TestTime#test_getlocal_dont_share_eigenclass):
+ added a new test for eigenclass of time object.
+
+Fri Jul 15 19:11:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c (bigsub_int): add RB_GC_GUARD. This patch is made by
+ Makoto Kishimoto. fixes #4223 [ruby-dev:42907]
+
+ * bignum.c (bigadd_int): ditto.
+
+Fri Jul 15 14:27:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_io_cancelable_p): renamed
+ from rb_w32_has_cancel_io(). now it takes a parameter as fd to check
+ the fd is console or not, because we cannot cancel console input even
+ if we have cancel_io function.
+
+ * io.c (WAIT_FD_IN_WIN32): call above function instead of the old one,
+ so now we can kill the thread which calls STDIN.gets.
+ the problem was reported by ko1 via IRC.
+
+Fri Jul 15 09:10:41 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/digest/sha2/sha2.c (SHA256_Update, SHA512_Update): avoid Bus
+ Error caused by unalignment access on Sparc-Solaris (and possibly on
+ other similar environment.) This patch just do memcpy always instead
+ of checking architecture. I see no perf drop on my 64bit env. For
+ more details, see #4320.
+
+ * test/digest/test_digest.rb: add test for unalignment access.
+
+Fri Jul 15 01:51:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regint.h (PLATFORM_UNALIGNED_WORD_ACCESS): Power PC does not
+ allow unaligned word access.
+
+ * st.c (UNALIGNED_WORD_ACCESS): x86_64 allows unaligned word
+ access as well as i386.
+
+Thu Jul 14 12:19:34 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl.c (ossl_verify_cb): trap the exception from
+ verify callback of SSLContext and X509Store and make the
+ verification fail normally. Raising exception directly from callback
+ causes orphan resources in OpenSSL stack. Patched by Ippei Obayashi.
+ See #4445.
+
+ * test/openssl/test_ssl.rb
+ (test_exception_in_verify_callback_is_ignored): test it.
+
+Tue Jul 12 23:41:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * NEWS: add a description of Signal.trap change.
+
+Tue Jul 12 20:02:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (reserved_signal_p): reverted a part of r32523.
+ chikanaga noticed trap(:CHLD) has some realworld usecase.
+ * test/ruby/test_signal.rb (TestSignal#test_reserved_signal):
+ ditto.
+
+Tue Jul 12 17:12:45 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (rb_add_method): should not call method_added hook
+ for undef operation. [Bug #5015]
+
+Tue Jul 12 16:58:44 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb(Test::Unit::Options#process_args): Fix bug.
+ Fix process_args didn't return `@option` after r30939.
+
+Tue Jul 12 14:07:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (install_sighandler): fixed a race.
+
+Tue Jul 12 13:49:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (sig_trap): don't permit to change a signal handler which
+ the interpreter reserved.
+ * signal.c (reserved_signal_p): ditto.
+ [Bug #2616] [ruby-core:27625]
+
+ * test/ruby/test_signal.rb (TestSignal#test_reserved_signal):
+ added a test for reserved signal.
+
+Tue Jul 12 11:58:28 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak: support x86-amd64 cross compile environment.
+
+Mon Jul 11 23:22:28 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * time.c: can't compile time.c on AIX due to missing declaration for
+ ffs(). It is declared in strings.h on AIX.
+
+Mon Jul 11 15:54:24 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c: removed signal() macro. It's no longer used.
+
+Mon Jul 11 15:02:24 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (rb_num2ull): use FIX2LONG instead of FIX2ULONG. see
+ rb_num2ulong(). fixed the problem of ObjectSpace._id2ref of IL32LLP64
+ platforms, introduced at r32433.
+
+Mon Jul 11 05:38:05 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * thread_pthread.c (get_stack): need to adjust stack addr for
+ [Bug #1813] on AIX.
+
+Mon Jul 11 01:16:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): removed
+ rb_disable_interrupt()/rb_enable_interrupt().
+ * vm_core.h: ditto.
+ * process.c (static void before_exec): ditto.
+ * process.c (static void after_exec): ditto.
+ [Bug #4765] [ruby-dev:43571]
+
+ * eval_intern.h: removed rb_trap_restore_mask().
+ * vm_eval.c (rb_throw_obj): ditto.
+ * eval.c (setup_exception): ditto.
+
+ * signal.c: removed trap_last_mask.
+ * signal.c (trap_restore_mask): removed.
+ * signal.c (init_sigchld): comment clarification why signal block
+ is needed. and removed trap_last_mask operation.
+ * signal.c (trap_ensure): removed trap_last_mask operation.
+
+ * signal.c (rb_disable_interrupt, rb_enable_interrupt): made
+ static and removed sigdelset(SIGVTALRM) and sigdelset(SIGSEGV).
+
+ * process.c (rb_syswait): removed implicit signal handler change.
+
+Sun Jul 10 23:49:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * docs/NEWS-1.9.3: moved from NEWS.
+
+ * docs/ChangeLog-1.9.3: merged ChangeLog for 1.9.3.
+
+ * NEWS: NEWS for 1.9.4 that describes changes since 1.9.3
+
+ * ChangeLog: new ChangeLog for 1.9.4.
+
+Sun Jul 10 23:30:52 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * version.h (RUBY_VERSION): ruby_1_9_3 branch was forked.
+
+For the changes before 1.9.3, see doc/ChangeLog-1.9.3
+For the changes before 1.8.0, see doc/ChangeLog-1.8.0
+
+Local variables:
+coding: us-ascii
+add-log-time-format: (lambda ()
+ (let* ((time (current-time))
+ (system-time-locale "C")
+ (diff (+ (cadr time) 32400))
+ (lo (% diff 65536))
+ (hi (+ (car time) (/ diff 65536))))
+ (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t)))
+indent-tabs-mode: t
+tab-width: 8
+change-log-indent-text: 2
+end:
+vim: tabstop=8 shiftwidth=2
diff --git a/doc/ChangeLog-2.1.0 b/doc/ChangeLog-2.1.0
new file mode 100644
index 0000000000..76edfd3ce7
--- /dev/null
+++ b/doc/ChangeLog-2.1.0
@@ -0,0 +1,18060 @@
+Fri Dec 20 17:52:50 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c: check definition of
+ GLOBAL_METHOD_CACHE_SIZE and GLOBAL_METHOD_CACHE_MASK.
+
+Fri Dec 20 17:03:10 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: rename OBJ_WRITE and OBJ_WRITTEN into
+ RB_OBJ_WRITE and RB_OBJ_WRITTEN.
+
+ * array.c, class.c, compile.c, hash.c, internal.h, iseq.c,
+ proc.c, process.c, re.c, string.c, variable.c, vm.c,
+ vm_eval.c, vm_insnhelper.c, vm_insnhelper.h,
+ vm_method.c: catch up this change.
+
+Fri Dec 20 16:01:35 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: add a comment for WB interfaces.
+
+Fri Dec 20 16:00:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: DLDFLAGS is defined in --with-opt-dir handler, so
+ ${DLDFLAGS=} does not work now. use RUBY_APPEND_OPTIONS instead.
+ [ruby-dev:47855] [Bug #9256]
+
+Fri Dec 20 14:19:12 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (AC_ARG_WITH): use withval directly.
+ fix failure on FreeBSD.
+ http://fb32.rubyci.org/~chkbuild/ruby-trunk/log/20131217T070301Z.diff.html.gz
+
+Fri Dec 20 14:00:01 2013 Aman Gupta <ruby@tmm1.net>
+
+ * include/ruby/ruby.h (struct RClass): add super, remove iv_index_tbl.
+ since RCLASS_SUPER() is commonly used inside while loops, we move it
+ back inside struct RClass to improve cache hits. this provides a
+ small improvement (1%) in hotspots like rb_obj_is_kind_of()
+ * internal.h (struct rb_classext_struct): remove super, add
+ iv_index_table
+ * internal.h (RCLASS_SUPER): update for new location
+ * internal.h (RCLASS_SET_SUPER): ditto
+ * internal.h (RCLASS_IV_INDEX_TBL): ditto
+ * object.c (rb_class_get_superclass): ditto
+ * include/ruby/backward/classext.h (RCLASS_SUPER): ditto
+
+Fri Dec 20 07:07:35 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 03d6ae7. Changes include:
+
+ * Fixed typos.
+
+ * Relaxed Gem.ruby test for ruby packagers that do not use `ruby`.
+
+ * test/rubygems: ditto.
+
+Thu Dec 19 14:03:04 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (heap_get_freeobj): improve hot path performance.
+
+ * gc.c (heap_get_freeobj_from_next_freepage): replace with
+ heap_get_freepage(). It returns freeobj instead of freepage.
+ This is not on hot path.
+
+Thu Dec 19 12:05:17 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master af60443. Changes include:
+
+ * Improved speed of `gem install --ignore-dependencies`.
+
+ * Open read-write for exclusive flock. [ruby-trunk - Bug #9257]
+
+ * Remove specification before install to prevent infinite loop.
+
+Thu Dec 19 11:23:49 2013 Aman Gupta <ruby@tmm1.net>
+
+ * vm_insnhelper.c (vm_call_iseq_setup_normal): simple for loop
+ condition optimization. this area shows up as a hotspot in VM
+ profiles.
+
+Thu Dec 19 10:50:13 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (newobj_of): don't need to RBASIC_SET_CLASS() which includes WB
+ here because created obj is always YOUNG/INFANT.
+
+Thu Dec 19 10:48:37 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/gc/gcbench.rb: check GC::OPTS availability
+ for not MRI 2.1.0.
+
+Thu Dec 19 03:10:30 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (heap_get_freeobj): remove redundant assignment. heap->freelist
+ is set after the while() loop already.
+
+Thu Dec 19 01:54:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/runner.rb: fix commit miss on r44278.
+
+Thu Dec 19 00:26:11 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (garbage_collect_body): lazy_sweep setting should work
+ without USE_RGENGC.
+
+Wed Dec 18 23:31:04 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_profile_dump_major_reason): fix this function because major_reason
+ can be OR of multiple reasons.
+
+ * gc.c (gc_profile_dump_on): ditto.
+
+Wed Dec 18 17:03:00 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_profile_record_get): should return an empty array
+ when profiling is active.
+
+Wed Dec 18 16:49:40 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_profile_clear, gc_profile_enable): remove rest_sweep().
+
+ * gc.c: check objspace->profile.current_record before inserting
+ profiling record by new macro gc_prof_enabled().
+
+Wed Dec 18 14:32:06 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.h (VM_DEBUG_STACKOVERFLOW): added.
+ disable stack overflow check for every stack pushing as default.
+
+ * vm_exec.c (vm_stack_overflow_for_insn): ditto.
+
+Wed Dec 18 10:00:22 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master d8f12e2. This increases the
+ speed of `gem install --ignore-dependencies` which helps bundler
+ tests.
+ * test/rubygems: ditto.
+
+Wed Dec 18 09:00:17 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_gc.rb (test_expand_heap): allow +/-1 diff.
+
+Tue Dec 17 23:44:15 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/ruby/test_io.rb: fix duplicated test name.
+
+Tue Dec 17 20:15:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_reject): revert to deprecated behavior, with
+ warnings, due to compatibility for HashWithDifferentAccess.
+ [ruby-core:59154] [Bug #9223]
+
+Tue Dec 17 17:30:56 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el: Import version 2.1.1 from
+ https://github.com/knu/ruby-electric.el.
+
+ * ruby-electric-delete-backward-char: Enable support for number
+ prefix.
+
+ * ruby-electric-curlies: Fix electric operation after an open
+ curly.
+
+Tue Dec 17 16:19:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_trace.c (rb_postponed_job_flush): isolate exceptions in
+ postponed jobs and restore outer ones. based on a patch by
+ tarui. [ruby-core:58652] [Bug #9168]
+
+Tue Dec 17 10:48:04 2013 Aman Gupta <ruby@tmm1.net>
+
+ * configure.in (RUBY_DTRACE_POSTPROCESS): Fix compatibility with
+ systemtap on linux. stap requires `dtrace -G` post-processing, but
+ the dtrace compatibility wrapper is very strict about probes.d
+ syntax.
+
+Tue Dec 17 05:18:17 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 1c5f4b3. Allows rubygems
+ repackagers to disable backward-compatible shared gem directory
+ behavior.
+ * test/rubygems: ditto.
+
+Tue Dec 17 05:14:35 2013 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS (RDoc): Update version number so I don't have to change it
+ for the final release.
+
+Mon Dec 16 19:19:19 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_objspace_markable_object_p): should check special_const_p
+ first (by is_markable_object()).
+
+Mon Dec 16 19:12:54 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (reachable_object_from_root_i): use
+ compare_by_identity hash to avoid hash modify problem
+ during iteration.
+ [Bug #9252]
+
+ * ext/objspace/objspace.c (reachable_objects_from_root): ditto.
+
+Mon Dec 16 18:16:28 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_verify_internal_consistency): should not use
+ rb_objspace_each_objects() because it call rest_sweep().
+
+Mon Dec 16 18:07:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_objspace_markable_object_p): fix last commit (build error).
+
+Mon Dec 16 18:04:28 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_objspace_markable_object_p): it should be live objects.
+
+Mon Dec 16 18:00:51 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_objspace_each_objects): should not clear dont_lazy_sweep
+ flag in nested case.
+
+Mon Dec 16 16:40:35 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c (rb_method_entry_make): fix WB miss.
+ Note that rb_method_entry_t::klass is not constified.
+ We may constify this field.
+
+ * test/ruby/test_alias.rb: add a test.
+
+Mon Dec 16 14:14:22 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: use gc_verify_internal_consistency() instead of
+ gc_check_before_marks_i() for check consistency
+ on RGENGC_CHECK_MODE >= 2.
+
+Mon Dec 16 14:01:48 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c (make_clock_result): add :second as a unit for
+ Process.clock_gettime.
+
+Mon Dec 16 13:10:54 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: introduce GC.verify_internal_consistency method to verify GC
+ internal data structure.
+
+ Now this method only checks generation (old/young) consistency.
+
+Mon Dec 16 11:49:26 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (gc_info_decode): Fix build errors when compiled with
+ RGENGC_ESTIMATE_OLDMALLOC=0
+ * gc.c (objspace_malloc_increase): ditto
+
+Sun Dec 15 13:38:29 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (reachable_object_from_root_i):
+ reachable objects should not include categories and
+ category_objects because it is noisy information.
+
+ In fact, objects created after calling
+ ObjectSpace.reachable_objects_from_root should not be included
+ as a returning hash objects. Currently, mswin64 platform has a
+ problem because of this behavior. Should we trace new objects?
+
+Sun Dec 15 07:09:28 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc master 263a9e5. This improves the
+ accessibility of the search box.
+
+Sat Dec 14 17:39:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_callee_setup_arg_complex): count post
+ arguments as mandatory arguments. [ruby-core:57706] [Bug #8993]
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): ditto.
+
+Sat Dec 14 16:26:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rubylibprefix): replace exec_prefix as well as
+ bindir and libdir. a patch by kimuraw (Wataru Kimura) at
+ [ruby-dev:47852]. [Bug #9160]
+
+Sat Dec 14 14:42:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/logger.rb (lock_shift_log): no need to rotate the log file
+ if it has been rotated by another process. based on the patch
+ by no6v (Nobuhiro IMAI) in [ruby-core:58620]. [Bug #9133]
+
+Sat Dec 14 13:01:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (mnew_from_me): method by respond_to_missing? should be
+ owned by the original class.
+
+Sat Dec 14 11:55:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/scanf.rb (IO#scanf): fix mistaken use of rescue modifier.
+ a patch by Mon_Ouie at [ruby-core:52813]. [Bug #7940]
+
+Sat Dec 14 11:44:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_qsort): fix potential stack overflow on a large
+ machine. based on the patch by Conrad Irwin <conrad.irwin AT
+ gmail.com> at [ruby-core:51816]. [Bug #7772]
+
+Sat Dec 14 11:25:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_defined): support nested class path as
+ well as const_get. [Feature #7414]
+
+Sat Dec 14 01:31:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_rescue2): reuse tags pushed for body proc to protect
+ rescue proc too.
+
+Sat Dec 14 01:15:51 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (wmap_final_func): Bugfix. Should update *value to new pointer.
+
+Sat Dec 14 01:05:46 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb: Don't test $! in "ensure" clause because
+ it may be set before the body.
+ Reported by ko1 and mrkn. [ruby-core:59088] [Bug #9247]
+
+ * lib/cgi/core.rb: Ditto.
+
+ * lib/drb/ssl.rb: Ditto.
+
+Sat Dec 14 00:34:31 2013 Naohisa Goto <ngotogenome@gmail.com>
+
+ * internal.h (ruby_sized_xrealloc2): fix typo introduced in r44117,
+ which cause compile error on Solaris.
+
+Sat Dec 14 00:22:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c: (exec_recursive): use rb_catch_protect() instead of
+ rb_catch_obj() and PUSH_TAG(), and reduce pushing tags and
+ machine stack usage.
+
+Sat Dec 14 00:18:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (mnew_from_me): achieve the original defined_class from
+ prepended iclass, to fix inherited owner.
+
+ * proc.c (method_owner): return the defined class, but not the
+ class which the method object is created from.
+
+Fri Dec 13 22:29:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (method_owner): return the class where alias is defined, not
+ the class original method is defined.
+
+ * vm_method.c (rb_method_entry_make, rb_alias): store the originally
+ defined class in me. [Bug #7993] [Bug #7842] [Bug #9236]
+
+ * vm_method.c (rb_method_entry_get_without_cache): cache included
+ module but not iclass.
+
+Fri Dec 13 16:27:17 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (gc_info_decode): Use :major_by=>:nofree as fallback reason
+ when other trigger conditions are present.
+
+Fri Dec 13 13:25:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * error.c: add Exception#backtrace_locations.
+ Now, there are no setter and independent from Exception#backtrace.
+ [Feature #8960]
+
+ * eval.c (setup_exception): set backtrace locations for `bt_location'
+ special attribute.
+
+ * vm_backtrace.c (rb_backtrace_to_location_ary): added.
+
+ * internal.h: ditto.
+
+ * test/ruby/test_backtrace.rb: add a test for
+ Exception#backtrace_locations.
+
+Fri Dec 13 12:01:07 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (garbage_collect_body): use rb_bug() and explicit error message
+ instead of using assert().
+ [Bug #9222]
+
+Fri Dec 13 11:52:41 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c: fix comment to remove the word "shady".
+
+ * variable.c: ditto.
+
+Fri Dec 13 11:33:55 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: rename *shady* func/macros.
+ * RVALUE_RAW_SHADY() -> RVALUE_WB_PROTECTED_RAW()
+ * RVALUE_SHADY() -> RVALUE_RAW_SHADY()
+ * rgengc_check_shady() -> rgengc_check_relation().
+ And fix some messages using "shady" to "non-WB-protected".
+
+Fri Dec 13 10:04:23 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/request_set/lockfile.rb: Import RubyGems master a8d0669
+ with a 1.8.7 compatibility fix.
+ * test/rubygems/test_gem_request_set_lockfile.rb: ditto.
+
+Fri Dec 13 09:50:49 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master ddac51f. Changes:
+
+ * Allow override for the shared gem installation directory for
+ rubygems packagers.
+
+ * Lock gem cache files for read and write to improve thread safety.
+
+ * Use io/console when available.
+
+ * Minor cleanup.
+
+ * test/rubygems: ditto.
+
+Fri Dec 13 08:15:31 2013 Aman Gupta <ruby@tmm1.net>
+
+ * class.c (include_modules_at): use RCLASS_M_TBL_WRAPPER for
+ equality checks. this avoids an unnecessary deference inside a tight
+ loop, fixing a performance regression from r43973.
+ * object.c (rb_obj_is_kind_of): ditto.
+ * object.c (rb_class_inherited_p): ditto.
+
+Wed Dec 13 02:00:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpSetPTR): fix for limitation of the resulting
+ precision.
+ [ruby-core:50269] [Bug #7458]
+
+ * test/bigdecimal/test_bigdecimal.rb (test_limit): add tests for the above
+ change.
+
+Wed Dec 13 01:56:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpAddAbs): put out a conditional branch from
+ the inside of while-loop.
+
+ * ext/bigdecimal/bigdecimal.c (VpSubAbs): ditto.
+
+Wed Dec 13 01:53:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VPrint): be a static function, support another
+ dump formats, and add more information of the given bigdecimal.
+
+ * ext/bigdecimal/bigdecimal.h: ditto.
+
+Wed Dec 11 16:45:58 2013 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_raise_jump): call c_return hook immediately after
+ popping `raise' frame.
+ Patches by deivid (David Rodriguez). [Bug #8886]
+
+ * test/ruby/test_settracefunc.rb: catch up this fix.
+
+Wed Dec 11 16:01:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_reject): return a plain hash, without copying
+ the class, default value, instance variables, and taintedness.
+ they had been copied just by accident.
+ [ruby-core:59045] [Bug #9223]
+
+Wed Dec 11 15:36:15 2013 Aman Gupta <ruby@tmm1.net>
+
+ * compile.c (iseq_specialized_instruction): emit opt_aset instruction
+ to optimize Hash#[]= and Array#[]= when called with Fixnum argument.
+ [Bug #9227] [ruby-core:58956]
+
+Wed Dec 11 04:54:03 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master ec8ed22. Notable changes
+ include:
+
+ * Renamed extension_install_dir to extension_dir (backwards
+ compatible).
+
+ * Fixed creation of gem.deps.rb.lock file from
+ TestGemRequestSet#test_install_from_gemdeps_install_dir
+
+ * Fixed a typo and some documentation.
+
+ * test/rubygems: ditto.
+
+Wed Dec 11 03:18:08 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * insns.def: Fix optimization bug of Float#/ [Bug #9238]
+
+Tue Dec 10 23:58:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/date/date_strptime.c (date__strptime_internal): unset
+ case-insensitive flag for [:alpha:], which already implies both
+ cases, to get rid of backtrack explosion. [ruby-core:58984]
+ [Bug #9221]
+
+Tue Dec 10 23:44:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_hash): add salt to differentiate false and empty
+ array. [ruby-core:58993] [Bug #9231]
+
+ * hash.c (rb_any_hash, rb_hash_hash): ditto.
+
+Tue Dec 10 18:16:09 2013 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
+
+ * man/ruby.1: [DOC] Use www.ruby-toolbox.com instead of RAA.
+
+Tue Dec 10 17:21:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (wmap_finalize, wmap_aset_update): use simple malloced array
+ instead of T_ARRAY, to reduce GC pressure.
+
+Tue Dec 10 15:56:48 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (reflist_add): revert changes from r44109. it is unnecessary
+ after r44113
+ * gc.c (allrefs_i): fix whitespace
+ * gc.c (allrefs_roots_i): fix whitespace
+
+Tue Dec 10 15:46:03 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (allrefs_add): push obj only if allrefs table doesn't have
+ obj.
+
+ * gc.c (allrefs_roots_i): ditto.
+
+Tue Dec 10 15:28:10 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (RGENGC_CHECK_MODE): separate checkers to different modes.
+ * 2: enable generational bits check (for debugging)
+ * 3: enable livness check
+ * 4: show all references
+
+Tue Dec 10 15:15:37 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_marks_check): disable GC during checking and
+ restore malloc_increase info.
+
+Tue Dec 10 14:41:53 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (reflist_add): return 0 if reference already exists
+ * gc.c (allrefs_add): return 1 on newly added references
+ * gc.c (allrefs_i): follow references to construct complete object
+ graph. before this patch, RGENGC_CHECK could fail to verify some WB
+ miss issues. [Bug #9226] [ruby-core:58959]
+
+Tue Dec 10 11:20:56 2013 Aman Gupta <ruby@tmm1.net>
+
+ * ext/objspace/objspace_dump.c (dump_object): include fstring flag on
+ strings. include gc flags (old, remembered, wb_protected) on all objects.
+ * ext/objspace/objspace_dump.c (Init_objspace_dump): initialize lazy
+ IDs before first use.
+ * gc.c (rb_obj_gc_flags): new function to retrieve object flags
+ * internal.h (RB_OBJ_GC_FLAGS_MAX): maximum flags allowed for one obj
+ * test/objspace/test_objspace.rb (test_dump_flags): test for above
+ * test/objspace/test_objspace.rb (test_trace_object_allocations):
+ resolve name before dump (for rb_class_path_cached)
+
+Tue Dec 10 07:48:29 2013 Aman Gupta <ruby@tmm1.net>
+
+ * vm_method.c (rb_clear_method_cache_by_class): fire
+ ruby::method-cache-clear probe on global or klass-level method cache
+ clear [Bug #9190]
+ * probes.d (provider ruby): new dtrace probe
+ * doc/dtrace_probes.rdoc: docs for new probe
+ * test/dtrace/test_method_cache.rb: test for new probe
+
+Tue Dec 10 06:14:11 2013 Eric Hodel <drbrain@segment7.net>
+
+ * ext/.document: Remove curses from documentable directories.
+
+Tue Dec 10 04:55:36 2013 Zachary Scott <e@zzak.io>
+
+ * ext/openssl/lib/openssl/digest.rb: Deprecate OpenSSL::Digest::Digest
+ [Fixes GH-446] https://github.com/ruby/ruby/pull/446
+
+Tue Dec 10 00:41:42 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/thread/thread.c: [DOC] add call-seq alias for Queue#enq, #<<, etc.
+
+ * ext/thread/thread.c (Init_thread): use rb_define_alias instead of
+ rb_alias to document alias.
+
+Mon Dec 9 20:00:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * internal.h (RCLASS_SERIAL): Add RCLASS_SERIAL as a convenience
+ accessor for RCLASS_EXT(klass)->class_serial.
+
+ * class.c, vm_insnhelper.c, vm_method.c: Use RCLASS_SERIAL
+
+Mon Dec 9 19:50:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * compile.c, insns.def, test/ruby/test_rubyvm.rb, vm.c, vm_core.h,
+ vm_insnhelper.c, vm_insnhelper.h, vm_method.c: Rename method_serial
+ to global_method_state and constant_serial to global_constant_state
+ after discussion with ko1.
+
+Mon Dec 9 18:50:43 2013 Aman Gupta <ruby@tmm1.net>
+
+ * hash.c (rb_hash_replace): fix segv on `{}.replace({})` introduced
+ in r44060 [Bug #9230] [ruby-core:58991]
+ * test/ruby/test_hash.rb: regression test for above
+
+Mon Dec 9 18:10:10 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_stat): renamed from ruby_vm_stat.
+ Should not use ruby_ prefix here.
+
+Mon Dec 9 16:13:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (wmap_size): add ObjectSpace::WeakMap#size and #length.
+
+Mon Dec 9 15:26:17 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/test_curses.rb: removed.
+
+Mon Dec 9 13:36:55 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses, sample/curses: removed curses.
+
+ * NEWS: added an entry for the above change.
+
+Mon Dec 9 12:26:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/objspace/object_tracing.c (newobj_i): use cached class path
+ only to get rid object allocation during NEWOBJ hook.
+ [ruby-core:58853] [Bug #9212]
+
+ * variable.c (rb_class_path_cached): returns cached class path
+ only, without searching and allocating new class path string.
+
+Mon Dec 9 11:14:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/date/date_parse.c (parse_time): unset case-insensitive flag
+ for [:alpha:], which already implies both cases, to get rid of
+ backtrack explosion. [ruby-core:58876] [Bug #9221]
+
+Mon Dec 9 08:40:40 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master bf37240. Fixes useless
+ error message with `gem install -g` with no gem dependencies file.
+ * test/rubygems: ditto.
+
+Mon Dec 9 04:52:25 2013 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS: Update RubyGems entry with notable features.
+
+Mon Dec 9 04:43:54 2013 Eric Hodel <drbrain@segment7.net>
+
+ * ext/.document: Add syslog/lib and thread/thread.c to documentable
+ items. [ruby-trunk - Bug #9228]
+
+Mon Dec 9 04:28:50 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 096db36. Changes include
+ support for PATH in Gemfile.lock and a typo fix from Akira Matsuda.
+ * test/rubygems: ditto.
+
+Mon Dec 9 02:10:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http/responses.rb:
+ Add `HTTPIMUsed`, as it is also supported by rack/rails.
+ RFC - http://tools.ietf.org/html/rfc3229
+ by Vipul A M <vipulnsward@gmail.com>
+ https://github.com/ruby/ruby/pull/447 fix GH-447
+
+Sun Dec 8 20:47:35 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_get_kwargs): when values is non-null, remove
+ extracted keywords from the rest keyword argument.
+
+Sun Dec 8 20:26:54 2013 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * common.mk (ruby.imp): avoid circular dependency on AIX
+
+Sun Dec 8 20:21:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * bigdecimal.c (BigDecimal_coerce): convert a Float to a BigDecimal instead
+ of converting the receiver to a Float. The reason is there are BigDecimal
+ instances with precisions that is smaller than the Float's precision.
+ [ruby-core:58756] [Bug #9192]
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests for the above change.
+
+Sun Dec 8 18:28:20 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * NEWS: [DOC] update NEWS about GC.
+
+Sun Dec 8 17:52:24 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * object.c: [DOC] document Module#singleton_class?.
+
+Sun Dec 8 16:19:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_get_kwargs): if optional is negative, unknown
+ keywords are allowed.
+
+ * vm_insnhelper.c (vm_callee_setup_keyword_arg): check unknown
+ keywords.
+
+Sun Dec 8 14:55:12 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * array.c (rb_ary_shuffle_bang, rb_ary_sample): rename local variables.
+
+Sun Dec 8 13:59:38 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * array.c (rb_ary_shuffle_bang, rb_ary_sample): check
+ unknown keywords.
+
+ * test/ruby/test_array.rb (test_shuffle, test_sample): tests for
+ the above.
+
+Sun Dec 8 13:01:11 2013 Aman Gupta <ruby@tmm1.net>
+
+ * vm.c (ruby_vm_stat): add RubyVM.stat() for access to internal cache
+ counters. this methods behaves like GC.stat, accepting an optional
+ hash or symbol argument. [Bug #9190] [ruby-core:58750]
+ * test/ruby/test_rubyvm.rb: test for new method
+
+Sun Dec 8 11:59:40 2013 Aman Gupta <ruby@tmm1.net>
+
+ * hash.c (rb_hash_replace): add a write barrier to fix GC mark miss on
+ hashes using Hash#replace [Bug #9226] [ruby-core:58948]
+
+Sun Dec 8 11:21:00 2013 Aman Gupta <ruby@tmm1.net>
+
+ * include/ruby/ruby.h: add RGENGC_WB_PROTECTED_NODE_CREF setting
+ In a large app, this reduces the size of
+ remembered_shady_object_count by 80%. [Bug #9225] [ruby-core:58947]
+ * gc.c (rb_node_newnode): add FL_WB_PROTECTED flag to NODE_CREF
+ * class.c (rewrite_cref_stack): insert OBJ_WRITE for NODE_CREF
+ * iseq.c (set_relation): ditto
+ * iseq.c (rb_iseq_clone): ditto
+ * vm_eval.c (rb_yield_refine_block): ditto
+ * vm_insnhelper.c (vm_cref_push): ditto
+ * vm_insnhelper.h (COPY_CREF): ditto
+
+Sun Dec 8 10:45:05 2013 Aman Gupta <ruby@tmm1.net>
+
+ * hash.c (hash_aset_str): revert r43870 due to performance issue
+ [Bug #9188] [ruby-core:58730]
+ * parse.y (assoc): convert literal string hash keys to fstrings
+ * test/ruby/test_hash.rb (class TestHash): expand test
+
+Sun Dec 8 10:22:38 2013 Aman Gupta <ruby@tmm1.net>
+
+ * parse.y (register_symid_str): use fstrings in symbol table
+ [Bug #9171] [ruby-core:58656]
+ * parse.y (rb_id2str): ditto
+ * string.c (rb_fstring): create frozen_strings on first usage. this
+ allows rb_fstring() calls from the parser (before cString is created)
+ * string.c (fstring_set_class_i): set klass on fstrings generated
+ before cString was defined
+ * string.c (Init_String): convert frozen_strings table to String
+ objects after boot
+ * ext/-test-/symbol/type.c (bug_sym_id2str): expose rb_id2str()
+ * test/-ext-/symbol/test_type.rb (module Test_Symbol): verify symbol
+ table entries are fstrings
+
+Sun Dec 8 10:24:20 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Update version for upcoming ruby 2.1.0 RC.
+
+Sun Dec 8 10:21:36 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 14749ce. This fixes bugs
+ handling of gem dependencies lockfiles (Gemfile.lock).
+
+ * test/rubygems: ditto.
+
+Sun Dec 8 09:40:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * array.c (rb_ary_or): use RHASH_TBL_RAW instead of RHASH_TBL
+
+ * process.c (rb_execarg_fixup): use RHASH_TBL_RAW and insert write
+ barriers where appropriate
+
+ * vm.c (kwmerge_i): use RHASH_TBL_RAW
+
+ * vm.c (HASH_ASET): use rb_hash_aset instead of calling directly into
+ st_insert
+
+Sat Dec 7 11:15:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_reject): copy unrejected elements only to new hash,
+ so that the change on the original receiver can affect.
+ [ruby-core:58914] [Bug #9223]
+
+Sat Dec 7 08:25:00 2013 Richo Healey <richo@psych0tik.net>
+
+ * test/ruby/test_struct.rb: Add regression test for question marks and
+ bangs in struct members. [Closes GH-468]
+
+Fri Dec 6 19:33:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_extract_keywords, rb_get_kwargs): move from
+ vm_insnhelper.c.
+
+Fri Dec 6 19:18:02 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: change oldmalloc meaning.
+ Increase oldmalloc_increase with malloc_increase
+ instead of using obj_memsize_of().
+
+ This change will avoid the danger of memory full without major GC.
+
+Fri Dec 6 19:08:48 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (atomic_sub_nounderflow): not 0 but val itself.
+
+Fri Dec 6 18:37:11 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_objspace_alloc, Init_heap): initialize
+ oldmalloc_increase_limit at Init_heap.
+
+ rb_objspace_alloc() is not called on some platforms.
+
+Fri Dec 6 18:33:39 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (garbage_collect_body): bug fix.
+ initialize after recording.
+
+Fri Dec 6 17:49:46 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (atomic_sub_nounderflow): added to simplify atomic sub with
+ care about underflow.
+
+ * gc.c (objspace_malloc_increase): use it.
+
+Fri Dec 6 17:10:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (rb_get_kwargs): get keyword argument values from an
+ option hash, not only checking keys.
+
+ * dir.c (dir_initialize): use rb_get_kwargs.
+
+ * gc.c (gc_start_internal): ditto.
+
+Fri Dec 6 16:47:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-brace-to-do-end): split single line block.
+
+ * misc/ruby-mode.el (ruby-do-end-to-brace): shrink single line block
+ to one line.
+
+Fri Dec 6 16:16:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_start_internal): do not use rb_gc_start() and rb_gc().
+
+Fri Dec 6 15:24:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_start_internal, rb_gc): do not need
+ heap_pages_free_unused_pages() here.
+ It was done in after_sweep().
+
+ * gc.c (rb_gc): The reason is now GPR_FLAG_CAPI.
+
+Fri Dec 6 14:05:19 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (gc_start_internal): GC.start() now accepts two optional
+ keyword arguments. These can be used to disable full_mark (minor
+ mark only) or disable immediate_sweep (use lazy sweep). These new
+ options are useful for benchmarking GC behavior, or performing minor
+ GC out-of-band.
+ * test/ruby/test_gc.rb (class TestGc): tests for new options.
+
+Fri Dec 6 11:51:28 2013 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
+
+ * lib/erb.rb: [DOC] fix broken link, Use rubygems.org and www.ruby-toolbox.com instead of RAA.
+ [Bug #9197]
+
+Fri Dec 6 10:50:54 2013 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
+
+ * lib/webrick/httprequest.rb: [DOC] Fix broken link of CGI specification by @udzura [fix GH-466]
+
+Thu Dec 6 01:27:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec):
+ treat 0.0 and -0.0 of floating-point numbers specially for an optimization
+ and to correctly propagate its signbit to the result.
+ [Bug #9214] [ruby-core:58858]
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests case for the above change.
+
+ * test/bigdecimal/test_bigdecimal_util.rb: ditto.
+
+Thu Dec 5 22:18:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): strip destdir part from prefix to get
+ rid of duplication. a patch by arton at [ruby-core:58859].
+ [ruby-core:58856] [Bug #9213]
+
+Thu Dec 5 21:53:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_or): lhs elements are preferred, so should not
+ replace with rhs elements.
+
+ * test/ruby/test_array.rb (test_OR_in_order): import the test failed
+ by r43969 from rubyspec/core/array/union_spec.rb.
+
+Thu Dec 5 21:05:42 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_info_decode): fix to avoid syntax error on VS2012.
+
+Thu Dec 5 19:35:35 2013 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * st.c: tweaked comment
+
+Thu Dec 5 19:21:10 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (struct rb_objspace): rename internal last_collection_flags to
+ latest_gc_info
+ * gc.c (gc_latest_collection_info): add GC.latest_gc_info() with similar
+ behavior to GC.stat()
+ * gc.c (rb_gc_latest_gc_info): new c-api for above
+ * gc.c (gc_stat_internal): remove :last_collection_flags from GC.stat
+ * gc.c (gc_profile_decode_flags): remove GC::Profiler.decode_flags
+ * include/ruby/intern.h (rb_gc_latest_gc_info): export new c-api
+ * test/ruby/test_gc.rb (class TestGc): test for new behavior
+ * NEWS: note about new api
+
+ * gc.c (gc_stat_internal): raise TypeError on wrong type
+ * gc.c (gc_stat): fix error message
+
+Thu Dec 5 18:18:08 2013 Aman Gupta <ruby@tmm1.net>
+
+ * ext/objspace/gc_hook.c: remove this file
+ * ext/-test-/tracepoint/gc_hook.c: new filename for above
+ * ext/objspace/objspace.c: remove ObjectSpace.after_gc_start_hook=
+ * test/objspace/test_objspace.rb: remove test
+ * test/-ext-/tracepoint/test_tracepoint.rb: add above test for
+ tracepoint re-entry
+
+Thu Dec 5 17:44:53 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: change function names vm_ prefix to objspace_ prefix.
+ They are objspace_ functionality.
+
+Thu Dec 5 16:11:04 2013 Aman Gupta <ruby@tmm1.net>
+
+ * include/ruby/intern.h: add rb_gc_stat() for access to GC.stat
+ variables from c-api
+ * gc.c (rb_gc_stat): new c-api method. accepts either VALUE hash like
+ GC.stat, or VALUE symbol key and returns size_t directly. the second
+ form is useful to avoid allocations, i.e. for usage inside
+ INTERNAL_EVENT_GC tracepoints.
+ * gc.c (gc_stat): add GC.stat(:key) to return single value instead of hash
+ * gc.c (gc_stat_internal): helper method to retrieve single or all stat values
+ * test/ruby/test_gc.rb (class TestGc): test for new behavior
+ * NEWS: note about this new api
+
+Thu Dec 5 14:40:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash): revert r43981 and bail out to the outermost frame
+ when recursion is detected.
+
+Thu Dec 5 13:47:15 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (vm_malloc_size): added.
+ return malloc_usable_size() if possible.
+
+ * gc.c (MALLOC_ALLOCATED_SIZE): add new setting macro to enable
+ GC.allocated_size.
+ If platform supports `malloc_usable_size()' (or similar one),
+ GC.allocated_size can be implemented with this function.
+ Default is 0.
+
+ * gc.c (vm_xmalloc, vm_xrealloc, vm_xfree): use vm_malloc_size()
+ to detect collect allocated size.
+
+ * gc.c (vm_malloc_increase): refactoring.
+
+Thu Dec 5 13:19:03 2013 Aman Gupta <ruby@tmm1.net>
+
+ * include/ruby/ruby.h: remove INTERNAL_EVENT_GC_END and replace with
+ two new events: GC_END_MARK and GC_END_SWEEP
+ * gc.c (gc_after_sweep): emit GC_END_SWEEP after lazy sweep is done
+ * gc.c (gc_marks_body): emit GC_END_MARK at end of minor/major mark
+ * ext/-test-/tracepoint/tracepoint.c (struct tracepoint_track): tests
+ for new events.
+ * test/-ext-/tracepoint/test_tracepoint.rb (class TestTracepointObj):
+ ditto.
+ * NEWS: remove ObjectSpace.after_gc_*_hook. These are only a sample,
+ and will be removed before ruby 2.1.
+ * ext/objspace/gc_hook.c: remove ObjectSpace.after_gc_end_hook=
+
+Thu Dec 5 10:47:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby_atomic.h (ATOMIC_PTR_EXCHANGE): atomic exchange function for
+ a generic pointer.
+
+Thu Dec 5 10:47:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (finalize_deferred): flush all deferred finalizers while other
+ finalizers can get ready to run newly by lazy sweep.
+ [ruby-core:58833] [Bug #9205]
+
+Thu Dec 5 09:07:59 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (ruby_gc_set_params): Accept safe_level argument so GC tuning
+ settings can be applied before rb_safe_level() is available.
+ * internal.h (rb_gc_set_params): ditto.
+ * ruby.c (process_options): Apply GC tuning early during boot process
+ so boot-time allocations can benefit. This also benefits any code
+ loaded in via `ruby -r`.
+
+Wed Dec 4 13:02:13 2013 Aman Gupta <ruby@tmm1.net>
+
+ * vm_trace.c (rb_suppress_tracing): Fix initialization of stack
+ allocated rb_trace_arg_t structure. Without this patch, sometimes
+ INTERNAL_EVENT_GC would be skipped accidentally inside
+ rb_threadptr_exec_event_hooks_orig().
+
+Wed Dec 4 12:57:24 2013 Aman Gupta <ruby@tmm1.net>
+
+ * string.c (fstr_update_callback): Improve implementation in r43968
+ based on feedback from @nagachika. In the existing case, we can
+ return ST_STOP to prevent any hash modification. In the !existing
+ case, set both key and value to the fstr.
+
+Wed Dec 4 12:47:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#method_missing): ignore the target if not
+ set, and delegate to global methods. [ruby-core:58572] [Bug #9155]
+
+ * lib/delegate.rb (Delegator#respond_to_missing): ditto.
+
+ * lib/delegate.rb (SimpleDelegator#__getobj__): yield and return if
+ not delegated but a block is given, like as Hash#fetch.
+
+ * lib/delegate.rb (DelegateClass#__getobj__): ditto.
+
+Tue Dec 3 23:48:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check malloc_size() availability.
+
+ * gc.c: use malloc_size() with malloc/malloc.h if available.
+
+Tue Dec 3 23:06:20 2013 Narihiro Nakamura <authornari@gmail.com>
+
+ * object.c (rb_obj_clone): don't copy FL_WB_PROTECTED of a
+ original object.
+
+Tue Dec 3 22:32:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_recursive): make similar (recursive) constructs
+ return same hash value. execute recursively, and rewind to the
+ topmost frame with an object which .eql? to the recursive
+ object, if recursion is detected.
+
+ * hash.c (rb_hash): detect recursion for all `hash' methods. each
+ `hash' methods no longer need to use rb_exec_recursive().
+
+Tue Dec 3 21:53:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_catch_protect): new function similar to
+ rb_catch_obj(), but protect from all global jumps like as
+ rb_load_protect(), rb_protect(), etc.
+
+Tue Dec 3 20:18:46 2013 Narihiro Nakamura <authornari@gmail.com>
+
+ * object.c (rb_obj_clone): Protect FL_PROMOTED and FL_WB_PROTECTED
+ flags of a destination object.
+
+Tue Dec 3 20:16:38 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_hash_rehash): use hash_alloc() instead of rb_hash_new(),
+ to hide temporary object from ObjectSpace. [Bug #9187]
+
+Tue Dec 3 17:11:47 2013 Aman Gupta <ruby@tmm1.net>
+
+ * load.c (features_index_add_single): Move loaded_features_index array values off
+ the ruby heap. [Bug #9201] [ruby-core:58805]
+ * load.c (loaded_features_index_clear_i): Clean up off-heap array structure.
+ * vm.c (rb_vm_mark): Remove unnecessary mark_tbl for loaded_features_index.
+ This improves minor GC time by 15% in a large application.
+
+Tue Dec 3 17:01:45 2013 Aman Gupta <ruby@tmm1.net>
+
+ * include/ruby/ruby.h (struct RClass): Add wrapper struct around
+ RClass->m_tbl with serial. This prevents double marking method
+ tables, since many classes/modules can share the same method table.
+ This improves minor mark time in a large application by 30%.
+ * internal.h (struct method_table_wrapper): Define new
+ wrapper struct with additional serial.
+ * internal.h (RCLASS_M_TBL_INIT): New macro for initializing method
+ table wrapper and st_table.
+ * method.h (void rb_sweep_method_entry): Rename rb_free_m_table to
+ rb_free_m_tbl for consistency
+ * .gdbinit (define rb_method_entry): Update rb_method_entry gdb helper
+ for new method table structure.
+ * class.c: Use RCLASS_M_TBL_WRAPPER and
+ RCLASS_M_TBL_INIT macros.
+ * class.c (rb_include_class_new): Share WRAPPER between module and
+ iclass, so serial can prevent double marking.
+ * eval.c (rb_prepend_module): ditto.
+ * eval.c (rb_using_refinement): ditto.
+ * gc.c: Mark and free new wrapper struct.
+ * gc.c (obj_memsize_of): Count size of additional wrapper struct.
+
+Tue Dec 3 14:05:49 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_uniq_bang): remove duplicate code.
+
+Tue Dec 3 13:40:42 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (ary_add_hash): set and return values because string keys
+ will be frozen. [ruby-core:58809] [Bug #9202]
+
+ * array.c (rb_ary_uniq_bang): ditto.
+
+ * array.c (rb_ary_or): ditto.
+
+ * array.c (rb_ary_uniq): ditto.
+
+ * test/ruby/test_array.rb: tests for above.
+
+ The patch is from normalperson (Eric Wong).
+
+Tue Dec 3 12:20:21 2013 Aman Gupta <ruby@tmm1.net>
+
+ * string.c (rb_fstring): Use st_update instead of st_lookup +
+ st_insert.
+ * string.c (fstr_update_callback): New callback for st_update.
+
+Tue Dec 3 12:17:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/constant.rb (RDoc::Constant#documented?): workaround for
+ NoMethodError when the original of alias is not found.
+
+Tue Dec 3 10:43:58 2013 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/lib/openssl/buffering.rb: Return ASCII-8BIT strings from
+ SSLSocket methods. [ruby-trunk - Bug #9028]
+ * test/openssl/test_ssl.rb: Test for the above.
+
+Tue Dec 3 09:42:27 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc master 900de99. Changes include:
+
+ Fixed documentation display of constants
+
+ Fixed handling of unknown parsers
+
+ * test/rdoc: ditto.
+
+Mon Dec 2 22:30:10 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (getenv): fixed test failures introduced by r43950.
+ [ruby-core:58774] [Bug #9195] reported by phasis68 (Heesob Park).
+
+Mon Dec 2 21:49:19 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_rehash): make temporary st_table under the control
+ of GC. [Bug #9187]
+
+ * test/ruby/test_hash.rb: add a test for above.
+
+Mon Dec 2 17:23:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * variable.c (rb_mod_constants): when calling Module#constants with
+ inherit=false, there is no need to use a hashtable to deduplicate
+ constant names. [Feature #9196] [ruby-core:58786]
+
+Mon Dec 2 14:16:52 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/smtp.rb (Net::SMTP#critical): Always return a
+ Net::SMTP::Response. Patch by Pawel Veselov.
+ [ruby-trunk - Bug #9125]
+ * test/net/smtp/test_smtp.rb: Test for the above.
+
+Mon Dec 2 05:52:33 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master baa965b. Notable changes:
+
+ Copy directories to lib/ when installing extensions. This completes
+ the fix for [ruby-trunk - Bug #9106]
+
+ * test/rubygems: ditto.
+
+Mon Dec 2 02:03:47 2013 Shota Fukumori <her@sorah.jp>
+
+ * test/ruby/test_case.rb (test_nomethoderror):
+ Add test related to r43913, r43914
+
+Mon Dec 2 00:53:01 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (getenv): use ANSI codepage version of getenv() for miniruby
+ on Windows.
+ [ruby-core:58732] [Bug #9189] reported by phasis68 (Heesob Park).
+
+Sun Dec 1 22:14:27 2013 Zachary Scott <e@zzak.io>
+
+ * doc/contributors.rdoc: [DOC] Import contributors from redmine wiki
+ Many wiki pages have become outdated and spam-ridden, we will import
+ these to trunk and begin maintaining them in ruby-trunk. This will
+ also allow new contributors to easily contribute patches to update
+ these pages, where previously a redmine account with wiki access was
+ required. Another bonus is having a contributors file to show thanks
+ to all of the people who have submitted a patch to Ruby.
+
+Sun Dec 1 18:03:26 2013 Zachary Scott <e@zzak.io>
+
+ * doc/maintainers.rdoc: [DOC] Current maintainers of Ruby
+
+Sun Dec 1 17:17:36 2013 Zachary Scott <e@zzak.io>
+
+ * doc/contributing.rdoc: [DOC] Current branch maintainers
+
+Sun Dec 1 17:16:36 2013 Zachary Scott <e@zzak.io>
+
+ * doc/contributing.rdoc: [DOC] Reporting other (ruby-lang.org) issues
+
+Sun Dec 1 17:15:51 2013 Zachary Scott <e@zzak.io>
+
+ * doc/contributing.rdoc: [DOC] Current platform maintainers
+
+Sun Dec 1 17:14:55 2013 Zachary Scott <e@zzak.io>
+
+ * doc/contributing.rdoc: [DOC] Reporting downstream distro issues
+
+Sun Dec 1 14:37:20 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_to_a): specify array capa.
+
+Sun Dec 1 14:15:36 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_rehash): fix to free new st_table when exception
+ is raised in do_hash(). [Bug #9187]
+
+Sun Dec 1 11:57:59 2013 Zachary Scott <e@zzak.io>
+
+ * ext/openssl/lib/openssl/buffering.rb: Fix warning in copyright
+
+Sun Dec 1 08:27:28 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 66e5c39. Notable changes:
+
+ Implement gem.deps.rb (Gemfile) .lock support
+
+ Fixed `gem uninstall` for a relative directory in GEM_HOME.
+
+ * test/rubygems: ditto.
+
+Sun Dec 1 06:00:49 2013 Aman Gupta <ruby@tmm1.net>
+
+ * test/ruby/test_gc.rb (test_gc_reason): Force minor GC by consuming
+ free slots to fix test.
+
+Sat Nov 30 21:22:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_initialize): check unknown keywords. [ruby-dev:47152]
+ [Bug #8060]
+
+Sat Nov 30 18:05:38 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (hash2named_arg): correct declaration to fix
+ build failure. a patch by phasis68 (Heesob Park) at
+ [ruby-core:58710]. [Bug #9184]
+
+Sat Nov 30 17:46:35 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): determine exit status and signal to terminate
+ before finalization, to get rid of access destroyed T_DATA exception
+ object. [ruby-core:58643] [Bug #9167]
+
+Sat Nov 30 16:25:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_with_index): should not store local variable
+ address to memoize the arguments. it is invalidated after the return.
+ [ruby-core:58692] [Bug #9178]
+
+Sat Nov 30 13:28:13 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * siphash.c (sip_hash24): fix for aligned word access little endian
+ platforms. [ruby-core:58658] [Bug #9172]
+
+Sat Nov 30 13:21:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_yield_block): implement non-nil block argument.
+
+Fri Nov 29 20:59:39 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_dump.c (rb_vmdebug_debug_print_pre): Bugfix. Get PC directly.
+ PC is cached into local stack and cfp->pc is incorrect at next of
+ branch or jump.
+ * vm_exec.h (DEBUG_ENTER_INSN): catch up this change.
+ * vm_core.h: update signature of rb_vmdebug_debug_print_pre.
+
+Fri Nov 29 20:43:57 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * compile.c: Bugsfix for dump_disasm_list.
+ rb_inspect denies a hidden object. So, insert wrapper that creates
+ the unhidden one.
+ adjust->label is null sometimes.
+ insn_data_line_no makes no sense at all.
+
+Fri Nov 29 18:06:45 2013 Shota Fukumori <her@sorah.jp>
+
+ * test/ruby/test_case.rb (test_method_missing): Test for r43913.
+
+Fri Nov 29 17:53:22 2013 Shota Fukumori <her@sorah.jp>
+
+ * vm_insnhelper.c (check_match): Fix SEGV with VM_CHECKMATCH_TYPE_CASE
+ and class of `pattern` has `method_missing`
+ [Bug #8872] [ruby-core:58606]
+
+Fri Nov 29 17:06:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_yield_block): yield block with rb_block_call_func
+ arguments.
+
+ * range.c (range_each): use rb_yield_block.
+
+ * include/ruby/ruby.h (RB_BLOCK_CALL_FUNC_ARGLIST): constify argv.
+
+ * enum.c (rb_enum_values_pack): ditto.
+
+ * vm_eval.c (rb_block_call, rb_check_block_call): ditto.
+
+ * include/ruby/ruby.h (RB_BLOCK_CALL_FUNC_ARGLIST): for declaration
+ argument list of rb_block_call_func.
+
+Fri Nov 29 11:26:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_block_call_func): add blockarg. block
+ function can take block argument, e.g., proc {|&blockarg| ...}.
+
+Thu Nov 28 21:43:48 2013 Zachary Scott <e@zzak.io>
+
+ * doc/dtrace_probes.rdoc: [DOC] Import dtrace probes doc from wiki
+
+Thu Nov 28 21:17:32 2013 Zachary Scott <e@zzak.io>
+
+ * doc/contributing.rdoc: [DOC] Add heading above ChangeLog tips to
+ setup entry for commits, its not required. Actually easier if
+ contributors don't include a ChangeLog entry.
+
+Thu Nov 28 21:16:18 2013 Zachary Scott <e@zzak.io>
+
+ * doc/contributing.rdoc: [DOC] Add coding style heading for patch
+ rules
+
+Thu Nov 28 21:15:45 2013 Zachary Scott <e@zzak.io>
+
+ * doc/contributing.rdoc: [DOC] Add notes about deciding what to patch
+
+Thu Nov 28 19:43:45 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * benchmark/bm_hash_flatten.rb: added. r43896 is about 4 times faster
+ than 2.0.0p353.
+
+ * benchmark/bm_hash_keys.rb: added. r43896 is about 5 times faster
+ than 2.0.0p353.
+
+ * benchmark/bm_hash_values.rb: added. r43896 is about 5 times faster
+ than 2.0.0p353.
+
+Thu Nov 28 19:29:04 2013 Zachary Scott <e@zzak.io>
+
+ * doc/contributing.rdoc: [DOC] Add notes about slideshow proposals
+ from wiki page: HowToRequestFeatures
+
+Thu Nov 28 17:34:42 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * st.c: add st_values() and st_values_check().
+
+ * include/ruby/st.h: add prototypes for above.
+
+ * hash.c (rb_hash_values): use st_values_check() for performance
+ improvement if VALUE and st_data_t are compatible.
+
+Thu Nov 28 17:14:14 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * st.c (st_keys): fix not to use Qundef in st.c.
+
+ * include/ruby/st.h: define modified prototype.
+
+ * hash.c (rb_hash_keys): use modified st_keys().
+
+Thu Nov 28 16:34:43 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c: Expose details about last garbage collection via GC.stat.
+ * gc.c (gc_stat): Add :last_collection_flags for reason/trigger/type of
+ last GC run.
+ * gc.c (gc_prof_sweep_timer_stop): Record HAVE_FINALIZE GPR even
+ without GC_PROFILE_MORE_DETAIL.
+ * gc.c (gc_profile_flags): Add GC::Profiler.decode_flags to make sense
+ of GC.stat[:last_collection_flags]
+ * test/ruby/test_gc.rb (class TestGc): Test for above.
+
+Thu Nov 28 16:15:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_dup2): extract from rb_cloexec_dup2() and
+ redirect_dup2().
+
+Tue Nov 28 14:40:00 2013 Akira Matsuda <ronnie@dio.jp>
+
+ * lib/drb/ssl.rb: [Doc] Fix typo
+
+Thu Nov 28 13:56:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (Doxyfile): tool/file2lastrev.rb needs running with
+ BASERUBY since r43617. [ruby-dev:47823] [Bug #9169]
+
+Thu Nov 28 09:18:39 2013 Koichi Sasada <ko1@atdot.net>
+
+ * string.c (rb_fstring): fstrings should be ELTS_SHARED.
+ If we resurrect dying objects (non-marked, but not swept yet),
+ pointing shared string can be collected.
+ To avoid such issue, fstrings (recorded to fstring_table)
+ should not be ELTS_SHARED (should not have a shared string).
+
+Thu Nov 28 01:35:08 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * st.c (st_keys): fix to use st_index_t for size of hash.
+
+Thu Nov 28 00:36:52 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * st.c (st_keys): define st_keys(). it writes each key to buffer.
+
+ * hash.c (rb_hash_keys): use st_keys() for performance improvement
+ if st_data_t and VALUE are compatible.
+
+ * include/ruby/st.h: define macro ST_DATA_COMPATIBLE_P() to predicate
+ whether st_data_t and passed type are compatible.
+
+ * configure.in: check existence of builtin function to use in
+ ST_DATA_COMPATIBLE_P().
+
+Thu Nov 28 00:07:28 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * ruby_atomic.h: remove duplicate definitions between ATOMIC_XXX
+ and ATOMIC_SIZE_XXX.
+
+Wed Nov 27 23:55:50 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * ruby_atomic.h: define ATOMIC_SIZE_CAS() with
+ __atomic_compare_exchange_n() and refactoring.
+
+Tue Nov 27 21:43:00 2013 Akira Matsuda <ronnie@dio.jp>
+
+ * lib/irb/notifier.rb: [Doc] Fix typo
+ * ext/json/lib/json/common.rb: Ditto.
+
+Tue Nov 27 18:04:57 2013 Akira Matsuda <ronnie@dio.jp>
+
+ * lib/irb/notifier.rb: Fix typo
+
+Wed Nov 27 17:54:57 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_mark_stacked_objects): check only when check_mode > 0.
+
+Wed Nov 27 16:07:19 2013 Aman Gupta <ruby@tmm1.net>
+
+ * test/ruby/test_gc.rb (class TestGc): Fix warning in
+ test_expand_heap.
+
+Wed Nov 27 15:55:52 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (Init_GC): Add new GC::INTERNAL_CONSTANTS for information about
+ GC heap/page/slot sizing.
+ * test/ruby/test_gc.rb (class TestGc): test for above.
+
+Wed Nov 27 15:21:17 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (gc_page_sweep): Fix compile warning from last commit.
+ * hash.c (hash_aset_str): Re-use existing variable to avoid
+ unnecessary pointer dereferencing.
+
+Wed Nov 27 15:12:55 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_page_sweep): disable debug print.
+
+Wed Nov 27 15:05:59 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stat): add new information heap_eden_page_length and
+ heap_tomb_page_length.
+
+ * test/ruby/test_gc.rb: fix to use GC.stat[:heap_eden_page_length]
+ instead of GC.stat[:heap_length].
+ This test expects `heap_eden_page_length' (used pages size).
+
+Wed Nov 27 15:02:53 2013 Aman Gupta <ruby@tmm1.net>
+
+ * test/ruby/test_eval.rb (class TestEval): Use assert_same instead of
+ assert_equal.
+ * test/ruby/test_hash.rb (class TestHash): ditto.
+ * test/ruby/test_iseq.rb (class TestISeq): ditto.
+
+Wed Nov 27 14:50:02 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rinda/ring.rb: Announce RingServer for the same process.
+ [ruby-trunk - Bug #9163]
+ * test/rinda/test_rinda.rb: Tests for the above.
+
+Wed Nov 27 14:37:33 2013 Aman Gupta <ruby@tmm1.net>
+
+ * test/ruby/test_eval.rb (class TestEval): Add test for shared eval
+ filenames via rb_fstring().
+ * test/ruby/test_iseq.rb (class TestISeq): Add test for shared
+ iseq labels via rb_fstring(). [Bug #9159]
+
+Wed Nov 27 14:24:55 2013 Aman Gupta <ruby@tmm1.net>
+
+ * hash.c (hash_aset_str): Use rb_fstring() to de-duplicate hash string
+ keys. Patch by Eric Wong. [Bug #8998] [ruby-core:57727]
+ * test/ruby/test_hash.rb (class TestHash): test for above.
+
+Wed Nov 27 10:39:39 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c: Rename rb_heap_t members:
+ used -> page_length
+ limit -> total_slots
+
+Wed Nov 27 08:24:49 2013 Aman Gupta <ruby@tmm1.net>
+
+ * compile.c: Use rb_fstring() to de-duplicate string literals in code.
+ [ruby-core:58599] [Bug #9159] [ruby-core:54405]
+ * iseq.c (prepare_iseq_build): De-duplicate iseq labels and source
+ locations.
+ * re.c (rb_reg_initialize): Use rb_fstring() for regex string.
+ * string.c (rb_fstring): Handle non-string and already-fstr arguments.
+ * vm_eval.c (eval_string_with_cref): De-duplicate eval source
+ filename.
+
+Wed Nov 27 07:13:54 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: psych version 2.0.2
+ * ext/psych/psych.gemspec: ditto
+
+Wed Nov 27 06:40:18 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: fix support for negative
+ years.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
+ * test/psych/test_date_time.rb: test for change.
+ Fixes: https://github.com/tenderlove/psych/issues/168
+
+Wed Nov 27 04:46:55 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: fix regexp for matching TIME
+ strings.
+ * test/psych/test_date_time.rb: test for change.
+ Fixes: https://github.com/tenderlove/psych/issues/171
+
+Wed Nov 27 02:26:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_new4): copy the original capacity so that memsize of
+ frozen shared string returns correct size.
+
+Wed Nov 27 02:20:13 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_hash): should not ignore the rest of recursive
+ constructs.
+
+ * hash.c (rb_hash_hash): ditto.
+
+ * range.c (range_hash): ditto.
+
+ * struct.c (rb_struct_hash): ditto.
+
+ * test/-ext-/test_recursion.rb (TestRecursion): separate from
+ test/ruby/test_thread.rb.
+
+Tue Nov 26 22:43:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash): cut off if recursion detected to get rid of stack
+ overflow. [ruby-core:58567] [Bug #9151]
+
+Tue Nov 26 20:02:39 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_settracefunc.rb: add tests for a_call/a_return
+ by Brandur <brandur@mutelight.org> [Feature #9120]
+
+Tue Nov 26 19:29:52 2013 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: add useful config "set breakpoint pending on"
+ for run.gdb.
+
+Tue Nov 26 19:17:47 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/object_tracing.c (newobj_i): skip class_path if class
+ is frozen.
+
+ rb_class_path() can modify frozen classes (and causes errors).
+ This patch is temporary. We need no-modification/no-allocation
+ class path function.
+
+Tue Nov 26 18:12:13 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: skip "exception check" and "reentrant check (only normal
+ events) for internal events.
+
+ Reentrant check for internal events are remaining.
+
+Tue Nov 26 17:38:16 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: prohibit to specify normal events and internal events
+ simultaneously.
+ I will introduce special care for internal events later.
+
+ * ext/-test-/tracepoint/tracepoint.c: test this behavior.
+
+ * test/-ext-/tracepoint/test_tracepoint.rb: ditto.
+
+Tue Nov 26 16:30:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_readlink): fix buffer overflow on a long symlink. since
+ rb_str_modify_expand() expands from its length but not its capacity,
+ need to set the length properly for each expansion.
+ [ruby-core:58592] [Bug #9157]
+
+Tue Nov 26 14:23:17 2013 Aman Gupta <ruby@tmm1.net>
+
+ * ext/objspace/objspace_dump.c (dump_append_string_value): Escape
+ control characters for strict json parsers.
+ * ext/objspace/objspace_dump.c (objspace_dump): Document File/IO
+ output option.
+
+Tue Nov 26 11:43:19 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * ruby_atomic.h: use __atomic builtin functions supported by GCC.
+ __sync family are legacy functions now and it is recommended
+ that new code use the __atomic functions.
+ http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html
+
+ * configure.in: check existence of __atomic functions.
+
+Tue Nov 26 10:57:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.gemspec: revert Gem::Specification#date
+ for snapshot/release tarballs.
+
+Tue Nov 26 06:42:50 2013 Aman Gupta <ruby@tmm1.net>
+
+ * NEWS: Add ObjectSpace.after_gc_{start,end}_hook=
+ * ext/objspace/objspace_dump.c: [DOC] catch up dump/dump_all to r43679
+
+Tue Nov 26 04:12:10 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 612f85a. Notable changes:
+
+ Fixed installation and activation of git: and path: gems via
+ Gem.use_gemdeps
+
+ Improved documentation coverage
+
+ * test/rubygems: ditto.
+
+Mon Nov 25 22:23:03 2013 Zachary Scott <e@zzak.io>
+
+ * lib/xmlrpc.rb: [DOC] Fix link to xmlrpc4r site [Bug #9148]
+ Patch by Giorgos Tsiftsis
+
+Mon Nov 25 19:48:10 2013 Zachary Scott <e@zzak.io>
+
+ * lib/uri/common.rb: [DOC] typo fixes by @vipulnsward [Fixes GH-456]
+ https://github.com/ruby/ruby/pull/456
+ * lib/uri/generic.rb: [DOC] ditto.
+
+Mon Nov 25 14:34:42 2013 Zachary Scott <e@zzak.io>
+
+ * ext/bigdecimal/bigdecimal.gemspec: bump BigDecimal to 1.2.3 for
+ proper release date in RubyGems
+
+Mon Nov 25 14:25:08 2013 Zachary Scott <e@zzak.io>
+
+ * ext/bigdecimal/bigdecimal.gemspec: Remove Gem::Specification#date
+ We should rely on rubygems to create the date the gem was released
+ for each version.
+
+Mon Nov 25 06:53:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * internal.h: do not use ruby_sized_xrealloc() and ruby_sized_xfree()
+ if HAVE_MALLOC_USABLE_SIZE (or _WIN32) is defined.
+
+ We don't need these function if malloc_usable_size() is available.
+
+ * gc.c: catch up this change.
+
+ * gc.c: define HAVE_MALLOC_USABLE_SIZE on _WIN32.
+
+ * array.c (ary_resize_capa): do not use ruby_sized_xfree() with
+ local variable to avoid "unused local variable" warning.
+ This change only has few impact.
+
+ * string.c (rb_str_resize): ditto.
+
+Mon Nov 25 05:05:04 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/-ext-/tracepoint/test_tracepoint.rb: catch up GC.stat changes
+ at r43835.
+
+Mon Nov 25 04:45:59 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: continue to change OLDSPACE -> OLDMALLOC.
+ RGENGC_ESTIMATE_OLDSPACE -> RGENGC_ESTIMATE_OLDMALLOC.
+
+ * gc.c: add a new major GC reason GPR_FLAG_MAJOR_BY_OLDMALLOC.
+
+Mon Nov 25 04:16:09 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: change terminology "..._num" to "..._slots" about slot operation.
+ * final_num -> final_slots
+ * objspace_live_num() -> objspace_live_slots()
+ * objspace_limit_num() -> objspace_limit_slots()
+ * objspace_free_num() -> objspace_free_slots()
+
+Mon Nov 25 04:03:12 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stat): add internal information.
+ * heap_swept_slot
+ * malloc_increase
+ * malloc_limit
+ * remembered_shady_object
+ * remembered_shady_object_limit
+ * old_object
+ * old_object_limit
+ * oldmalloc_increase
+ * oldmalloc_limit
+
+ * gc.c (gc_stat): rename names.
+ * heap_live_num -> heap_live_slot
+ * heap_free_num -> heap_free_slot
+ * heap_final_slot -> heap_final_slot
+
+ Quote from RDoc of GC.stat():
+ "The contents of the hash are implementation specific and may
+ be changed in the future."
+
+ * test/ruby/test_gc.rb: catch up this change.
+
+Mon Nov 25 03:59:45 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_gc.rb: catch up last commit.
+ Now RUBY_GC_OLDSPACE_LIMIT(...) is RUBY_GC_OLDMALLOC_LIMIT(...).
+
+Mon Nov 25 03:10:46 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: change terminology OLDSPACE -> OLDMALLOC.
+ (oldspace -> oldmalloc for variable names)
+
+ OLDSPACE is confusing because it is not includes slots.
+ To more clearly, rename such as (oldspace_limit -> oldmalloc_limit).
+ It is clear that it measures (estimates) malloc()'ed size.
+
+Mon Nov 25 00:50:03 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * internal.h: use __builtin_bswap16() if possible.
+
+ * configure.in: check existence of __builtin_bswap16().
+
+Sun Nov 24 22:24:19 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigxor_int): Apply BIGLO for long in a BDIGIT expression.
+ (bigor_int): Ditto.
+ (bigand_int): Ditto.
+
+Sun Nov 24 18:13:23 2013 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/defines.h (SIZEOF_ACTUAL_BDIGIT): Defined.
+
+ * include/ruby/ruby.h (RBIGNUM_EMBED_LEN_MAX): Use
+ SIZEOF_ACTUAL_BDIGIT instead of SIZEOF_BDIGITS.
+ SIZEOF_BDIGITS can be different to sizeof(BDIGIT).
+
+Sun Nov 24 13:49:08 2013 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/defines.h: Don't use int128_t for Bignum.
+ It's not always faster.
+
+ * bignum.c: Ditto.
+
+Sun Nov 24 10:18:15 2013 Aman Gupta <ruby@tmm1.net>
+
+ * NEWS: Add details about new debugging features and APIs.
+
+Sun Nov 24 09:37:20 2013 Andrew Vit <andrew@avit.ca>
+
+ * lib/csv.rb: Optimize header hashes by freezing string keys.
+ [ruby-core:58510]
+
+Sun Nov 24 09:18:06 2013 Aman Gupta <ruby@tmm1.net>
+
+ * ext/objspace/objspace_dump.c (dump_object): Use PRIuSIZE to print
+ size_t for better win32 compatibility.
+ * test/objspace/test_objspace.rb (test_dump_all): Hold reference to
+ test string to avoid failure due to GC. Reduce size of failure message
+ using grep(/TEST STRING/).
+
+Sun Nov 24 08:38:00 2013 Kyle Stevens <kstevens715@gmail.com>
+
+ * lib/csv.rb: If skip_lines is set to a String, convert it to a Regexp
+ to prevent the alternative, which is that each line in the CSV gets
+ converted to a Regexp when calling skip_lines#match.
+
+Sun Nov 24 01:03:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): Use FIX2LONG instead
+ of FIX2INT to avoid conversion error.
+
+Sun Nov 24 00:44:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RBIGNUM_EMBED_LEN_MAX): define by macros
+ defined in defines.h, instead of complex and repeated expression.
+
+Sat Nov 23 22:22:26 2013 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (RBIGNUM_EMBED_LEN_MAX): Limit the value to
+ less than 8.
+
+Sat Nov 23 19:52:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (BigMath.E): Use BigMath.exp.
+ [Feature #6857] [ruby-core:47130]
+
+Sat Nov 23 19:46:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Optimize the
+ calculation algorithm to reduce the number of divisions.
+ This optimization was proposed by Rafal Michalski.
+ [Feature #6857] [ruby-core:47130]
+
+Sat Nov 23 19:20:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div2): The signature was
+ changed to allow us to pass arguments directly.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div3): Added for the role of
+ the old BigDecimal_div2.
+
+Sat Nov 23 12:31:00 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: fix global variable name.
+ Now we have following environments (and related variable names).
+
+ * RUBY_GC_HEAP_INIT_SLOTS
+ * RUBY_GC_HEAP_FREE_SLOTS
+ * RUBY_GC_HEAP_GROWTH_FACTOR (new from 2.1)
+ * RUBY_GC_HEAP_GROWTH_MAX_SLOTS (new from 2.1)
+
+ * obsolete
+ * RUBY_FREE_MIN -> RUBY_GC_HEAP_FREE_SLOTS (from 2.1)
+ * RUBY_HEAP_MIN_SLOTS -> RUBY_GC_HEAP_INIT_SLOTS (from 2.1)
+
+ * RUBY_GC_MALLOC_LIMIT
+ * RUBY_GC_MALLOC_LIMIT_MAX (new from 2.1)
+ * RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR (new from 2.1)
+
+ * RUBY_GC_OLDSPACE_LIMIT (new from 2.1)
+ * RUBY_GC_OLDSPACE_LIMIT_MAX (new from 2.1)
+ * RUBY_GC_OLDSPACE_LIMIT_GROWTH_FACTOR (new from 2.1)
+
+ * test/ruby/test_gc.rb: catch up this change.
+
+Sat Nov 23 09:45:49 2013 Aman Gupta <ruby@tmm1.net>
+
+ * marshal.c (w_object): Use HASH_PROC_DEFAULT directly from internal.h
+
+Sat Nov 23 08:43:23 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c: Rename heap_pages_swept_num to heap_pages_swept_slots to
+ clarify meaning (number of slots, not pages).
+
+Sat Nov 23 08:23:23 2013 Aman Gupta <ruby@tmm1.net>
+
+ * lib/set.rb (class SortedSet): Fix source_location for methods
+ defined via eval.
+
+Sat Nov 23 03:44:03 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master dcce4ff. Important changes
+ in this commit:
+
+ Remove automatic detection of gem dependencies files. This prevents a
+ security hole as described in [ruby-core:58490]
+
+ Fixed bugs for installing git gems.
+
+ * test/rubygems: ditto.
+
+Fri Nov 22 22:30:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power):
+ Round the result value only if the precision is given.
+
+Fri Nov 22 17:20:50 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (str_transcode0): don't scrub invalid chars if
+ str.encode doesn't have explicit invalid: :replace.
+ workaround fix for see #8995
+
+Fri Nov 22 17:11:26 2013 Narihiro Nakamura <authornari@gmail.com>
+
+ * include/ruby/intern.h, internal.h: Expose rb_gc_count().
+
+Fri Nov 22 17:07:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.gemspec: version 1.2.2.
+
+Fri Nov 22 17:04:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_data_type):
+ Use RUBY_TYPED_FREE_IMMEDIATELY only if it is available.
+
+Fri Nov 22 16:49:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): Round the result value.
+ [Bug #8818] [ruby-core:56802]
+
+ * test/bigdecimal/test_bigdecimal.rb: Add a test for the above fix.
+
+Fri Nov 22 16:25:43 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (heap_set_increment): accept minimum additional page number.
+
+ * gc.c (gc_after_sweep): allocate pages to allocate at least
+ RUBY_HEAP_MIN_SLOTS.
+ [Bug #9137]
+
+Fri Nov 22 16:19:52 2013 Narihiro Nakamura <authornari@gmail.com>
+
+ * include/ruby/intern.h (rb_gc_set_params): Deprecate
+ rb_gc_set_params because it's only used in ruby internal.
+
+ * internal.h (ruby_gc_set_params): Declare rb_gc_set_params's
+ alias function.
+
+ * gc.c: ditto.
+
+ * ruby.c: use ruby_gc_set_params.
+
+Fri Nov 22 14:55:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Insert rb_thread_check_ints.
+
+Fri Nov 22 14:35:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Fix the inserting points
+ of RB_GC_GUARDs.
+
+Fri Nov 22 14:31:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c: Fix indentation.
+
+Fri Nov 22 14:03:00 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf: merge nkf 2.1.3 2a2f2c5.
+
+Fri Nov 22 12:43:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod): ignore too long fraction part, which does not
+ affect the result.
+
+Fri Nov 22 12:17:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (OpenSSL::Buffering#initialize):
+ initialize of a module should pass arguments to super.
+
+Fri Nov 22 12:02:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_settracefunc.rb: Ignore events from other threads.
+
+Fri Nov 22 10:35:57 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (ruby_vm_destruct): do not use ruby_xfree() after freeing
+ objspace.
+
+ * gc.c (ruby_mimfree): added. It is similar to ruby_mimmalloc().
+
+ * internal.h: ditto.
+
+Fri Nov 22 09:42:35 2013 Zachary Scott <e@zzak.io>
+
+ * test/digest/test_digest.rb: Reverse order of assert_equal
+ Reported by @splattael
+
+Fri Nov 22 09:03:16 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c: fix build failure on FreeBSD introduced by r43763.
+ malloc_usable_size() is defined by malloc_np.h on FreeBSD.
+
+ * configure.in: check malloc.h and malloc_np.h.
+
+Fri Nov 22 08:27:13 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 50a8210. Important changes
+ in this commit:
+
+ RubyGems now automatically checks for gem.deps.rb or Gemfile when
+ running ruby executables. This behavior is similar to `bundle exec
+ rake`. This change may be reverted before Ruby 2.1.0 if too many bugs
+ are found.
+
+ * test/rubygems: ditto.
+
+Thu Nov 21 22:33:59 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: RGENGC_CHECK_MODE should be 0.
+
+Thu Nov 21 21:40:00 2013 Kenta Murata